ZGlmZiAtLWdpdCBhL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvUkVBRE1FIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY5NjIwYQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvUkVBRE1FCkBAIC0wLDAgKzEsMyBAQAorVGhpcyBpcyBhbiBPcGVuU1NMLWNvbXBhdGlibGUgdmVyc2lvbiBvZiBBRVMgKGFsc28gY2FsbGVkIFJpam5kYWVsKS4KK2Flc19jb3JlLmMgaXMgYmFzaWNhbGx5IHRoZSBzYW1lIGFzIHJpam5kYWVsLWFsZy1mc3QuYyBidXQgd2l0aCBhbgorQVBJIHRoYXQgbG9va3MgbGlrZSB0aGUgcmVzdCBvZiB0aGUgT3BlblNTTCBzeW1tZXRyaWMgY2lwaGVyIHN1aXRlLgpkaWZmIC0tZ2l0IGEvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hZXMuaCBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMxYWJmMAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYWVzLmgKQEAgLTAsMCArMSwxNDcgQEAKKy8qIGNyeXB0by9hZXMvYWVzLmggLSotIG1vZGU6QzsgYy1maWxlLXN0eWxlOiAiZWF5IiAtKi0gKi8KKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKyAqCisgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCisgKgorICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisgKgorICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworICogICAgYWNrbm93bGVkZ21lbnQ6CisgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqCisgKi8KKworI2lmbmRlZiBIRUFERVJfQUVTX0gKKyNkZWZpbmUgSEVBREVSX0FFU19ICisKKyNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+CisKKyNpZmRlZiBPUEVOU1NMX05PX0FFUworI2Vycm9yIEFFUyBpcyBkaXNhYmxlZC4KKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKyNkZWZpbmUgQUVTX0VOQ1JZUFQJMQorI2RlZmluZSBBRVNfREVDUllQVAkwCisKKy8qIEJlY2F1c2UgYXJyYXkgc2l6ZSBjYW4ndCBiZSBhIGNvbnN0IGluIEMsIHRoZSBmb2xsb3dpbmcgdHdvIGFyZSBtYWNyb3MuCisgICBCb3RoIHNpemVzIGFyZSBpbiBieXRlcy4gKi8KKyNkZWZpbmUgQUVTX01BWE5SIDE0CisjZGVmaW5lIEFFU19CTE9DS19TSVpFIDE2CisKKyNpZmRlZiAgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIFRoaXMgc2hvdWxkIGJlIGEgaGlkZGVuIHR5cGUsIGJ1dCBFVlAgcmVxdWlyZXMgdGhhdCB0aGUgc2l6ZSBiZSBrbm93biAqLworc3RydWN0IGFlc19rZXlfc3QgeworI2lmZGVmIEFFU19MT05HCisgICAgdW5zaWduZWQgbG9uZyByZF9rZXlbNCAqKEFFU19NQVhOUiArIDEpXTsKKyNlbHNlCisgICAgdW5zaWduZWQgaW50IHJkX2tleVs0ICooQUVTX01BWE5SICsgMSldOworI2VuZGlmCisgICAgaW50IHJvdW5kczsKK307Cit0eXBlZGVmIHN0cnVjdCBhZXNfa2V5X3N0IEFFU19LRVk7CisKK2NvbnN0IGNoYXIgKkFFU19vcHRpb25zKHZvaWQpOworCitpbnQgQUVTX3NldF9lbmNyeXB0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5LCBjb25zdCBpbnQgYml0cywKKwlBRVNfS0VZICprZXkpOworaW50IEFFU19zZXRfZGVjcnlwdF9rZXkoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgY29uc3QgaW50IGJpdHMsCisJQUVTX0tFWSAqa2V5KTsKKworaW50IHByaXZhdGVfQUVTX3NldF9lbmNyeXB0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5LCBjb25zdCBpbnQgYml0cywKKwlBRVNfS0VZICprZXkpOworaW50IHByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5LCBjb25zdCBpbnQgYml0cywKKwlBRVNfS0VZICprZXkpOworCit2b2lkIEFFU19lbmNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCisJY29uc3QgQUVTX0tFWSAqa2V5KTsKK3ZvaWQgQUVTX2RlY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGNoYXIgKm91dCwKKwljb25zdCBBRVNfS0VZICprZXkpOworCit2b2lkIEFFU19lY2JfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorCWNvbnN0IEFFU19LRVkgKmtleSwgY29uc3QgaW50IGVuYyk7Cit2b2lkIEFFU19jYmNfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorCXNpemVfdCBsZW5ndGgsIGNvbnN0IEFFU19LRVkgKmtleSwKKwl1bnNpZ25lZCBjaGFyICppdmVjLCBjb25zdCBpbnQgZW5jKTsKK3ZvaWQgQUVTX2NmYjEyOF9lbmNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCisJc2l6ZV90IGxlbmd0aCwgY29uc3QgQUVTX0tFWSAqa2V5LAorCXVuc2lnbmVkIGNoYXIgKml2ZWMsIGludCAqbnVtLCBjb25zdCBpbnQgZW5jKTsKK3ZvaWQgQUVTX2NmYjFfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorCXNpemVfdCBsZW5ndGgsIGNvbnN0IEFFU19LRVkgKmtleSwKKwl1bnNpZ25lZCBjaGFyICppdmVjLCBpbnQgKm51bSwgY29uc3QgaW50IGVuYyk7Cit2b2lkIEFFU19jZmI4X2VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGNoYXIgKm91dCwKKwlzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisJdW5zaWduZWQgY2hhciAqaXZlYywgaW50ICpudW0sIGNvbnN0IGludCBlbmMpOwordm9pZCBBRVNfb2ZiMTI4X2VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGNoYXIgKm91dCwKKwlzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisJdW5zaWduZWQgY2hhciAqaXZlYywgaW50ICpudW0pOwordm9pZCBBRVNfY3RyMTI4X2VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGNoYXIgKm91dCwKKwlzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisJdW5zaWduZWQgY2hhciBpdmVjW0FFU19CTE9DS19TSVpFXSwKKwl1bnNpZ25lZCBjaGFyIGVjb3VudF9idWZbQUVTX0JMT0NLX1NJWkVdLAorCXVuc2lnbmVkIGludCAqbnVtKTsKKy8qIE5COiB0aGUgSVYgaXMgX3R3b18gYmxvY2tzIGxvbmcgKi8KK3ZvaWQgQUVTX2lnZV9lbmNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCisJCSAgICAgc2l6ZV90IGxlbmd0aCwgY29uc3QgQUVTX0tFWSAqa2V5LAorCQkgICAgIHVuc2lnbmVkIGNoYXIgKml2ZWMsIGNvbnN0IGludCBlbmMpOworLyogTkI6IHRoZSBJViBpcyBfZm91cl8gYmxvY2tzIGxvbmcgKi8KK3ZvaWQgQUVTX2JpX2lnZV9lbmNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCisJCQlzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisJCQljb25zdCBBRVNfS0VZICprZXkyLCBjb25zdCB1bnNpZ25lZCBjaGFyICppdmVjLAorCQkJY29uc3QgaW50IGVuYyk7CisKK2ludCBBRVNfd3JhcF9rZXkoQUVTX0tFWSAqa2V5LCBjb25zdCB1bnNpZ25lZCBjaGFyICppdiwKKwkJdW5zaWduZWQgY2hhciAqb3V0LAorCQljb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgaW50IGlubGVuKTsKK2ludCBBRVNfdW53cmFwX2tleShBRVNfS0VZICprZXksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKml2LAorCQl1bnNpZ25lZCBjaGFyICpvdXQsCisJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBpbnQgaW5sZW4pOworCisKKyNpZmRlZiAgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogIUhFQURFUl9BRVNfSCAqLwpkaWZmIC0tZ2l0IGEvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hZXNfY2JjLmMgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc19jYmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjdmNzU2Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hZXNfY2JjLmMKQEAgLTAsMCArMSw2MyBAQAorLyogY3J5cHRvL2Flcy9hZXNfY2JjLmMgLSotIG1vZGU6QzsgYy1maWxlLXN0eWxlOiAiZWF5IiAtKi0gKi8KKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKyAqCisgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCisgKgorICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisgKgorICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworICogICAgYWNrbm93bGVkZ21lbnQ6CisgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqCisgKi8KKworI2luY2x1ZGUgPG9wZW5zc2wvYWVzLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9tb2Rlcy5oPgorCit2b2lkIEFFU19jYmNfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorCQkgICAgIHNpemVfdCBsZW4sIGNvbnN0IEFFU19LRVkgKmtleSwKKwkJICAgICB1bnNpZ25lZCBjaGFyICppdmVjLCBjb25zdCBpbnQgZW5jKSB7CisKKwlpZiAoZW5jKQorCQlDUllQVE9fY2JjMTI4X2VuY3J5cHQoaW4sb3V0LGxlbixrZXksaXZlYywoYmxvY2sxMjhfZilBRVNfZW5jcnlwdCk7CisJZWxzZQorCQlDUllQVE9fY2JjMTI4X2RlY3J5cHQoaW4sb3V0LGxlbixrZXksaXZlYywoYmxvY2sxMjhfZilBRVNfZGVjcnlwdCk7Cit9CmRpZmYgLS1naXQgYS9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc19jZmIuYyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYWVzX2NmYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNmQwNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc19jZmIuYwpAQCAtMCwwICsxLDgxIEBACisvKiBjcnlwdG8vYWVzL2Flc19jZmIuYyAtKi0gbW9kZTpDOyBjLWZpbGUtc3R5bGU6ICJlYXkiIC0qLSAqLworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA2IFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgorICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorICoKKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bworICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KKyAqCisgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKyAqCisgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisgKiAgICBhY2tub3dsZWRnbWVudDoKKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoKKyAqLworCisjaW5jbHVkZSA8b3BlbnNzbC9hZXMuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL21vZGVzLmg+CisKKy8qIFRoZSBpbnB1dCBhbmQgb3V0cHV0IGVuY3J5cHRlZCBhcyB0aG91Z2ggMTI4Yml0IGNmYiBtb2RlIGlzIGJlaW5nCisgKiB1c2VkLiAgVGhlIGV4dHJhIHN0YXRlIGluZm9ybWF0aW9uIHRvIHJlY29yZCBob3cgbXVjaCBvZiB0aGUKKyAqIDEyOGJpdCBibG9jayB3ZSBoYXZlIHVzZWQgaXMgY29udGFpbmVkIGluICpudW07CisgKi8KKwordm9pZCBBRVNfY2ZiMTI4X2VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGNoYXIgKm91dCwKKwlzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisJdW5zaWduZWQgY2hhciAqaXZlYywgaW50ICpudW0sIGNvbnN0IGludCBlbmMpIHsKKworCUNSWVBUT19jZmIxMjhfZW5jcnlwdChpbixvdXQsbGVuZ3RoLGtleSxpdmVjLG51bSxlbmMsKGJsb2NrMTI4X2YpQUVTX2VuY3J5cHQpOworfQorCisvKiBOLkIuIFRoaXMgZXhwZWN0cyB0aGUgaW5wdXQgdG8gYmUgcGFja2VkLCBNUyBiaXQgZmlyc3QgKi8KK3ZvaWQgQUVTX2NmYjFfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorCQkgICAgICBzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisJCSAgICAgIHVuc2lnbmVkIGNoYXIgKml2ZWMsIGludCAqbnVtLCBjb25zdCBpbnQgZW5jKQorICAgIHsKKyAgICBDUllQVE9fY2ZiMTI4XzFfZW5jcnlwdChpbixvdXQsbGVuZ3RoLGtleSxpdmVjLG51bSxlbmMsKGJsb2NrMTI4X2YpQUVTX2VuY3J5cHQpOworICAgIH0KKwordm9pZCBBRVNfY2ZiOF9lbmNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCisJCSAgICAgIHNpemVfdCBsZW5ndGgsIGNvbnN0IEFFU19LRVkgKmtleSwKKwkJICAgICAgdW5zaWduZWQgY2hhciAqaXZlYywgaW50ICpudW0sIGNvbnN0IGludCBlbmMpCisgICAgeworICAgIENSWVBUT19jZmIxMjhfOF9lbmNyeXB0KGluLG91dCxsZW5ndGgsa2V5LGl2ZWMsbnVtLGVuYywoYmxvY2sxMjhfZilBRVNfZW5jcnlwdCk7CisgICAgfQorCmRpZmYgLS1naXQgYS9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc19jb3JlLmMgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc19jb3JlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY1MjEwYQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYWVzX2NvcmUuYwpAQCAtMCwwICsxLDEzNTggQEAKKy8qIGNyeXB0by9hZXMvYWVzX2NvcmUuYyAtKi0gbW9kZTpDOyBjLWZpbGUtc3R5bGU6ICJlYXkiIC0qLSAqLworLyoqCisgKiByaWpuZGFlbC1hbGctZnN0LmMKKyAqCisgKiBAdmVyc2lvbiAzLjAgKERlY2VtYmVyIDIwMDApCisgKgorICogT3B0aW1pc2VkIEFOU0kgQyBjb2RlIGZvciB0aGUgUmlqbmRhZWwgY2lwaGVyIChub3cgQUVTKQorICoKKyAqIEBhdXRob3IgVmluY2VudCBSaWptZW4gPHZpbmNlbnQucmlqbWVuQGVzYXQua3VsZXV2ZW4uYWMuYmU+CisgKiBAYXV0aG9yIEFudG9vbiBCb3NzZWxhZXJzIDxhbnRvb24uYm9zc2VsYWVyc0Blc2F0Lmt1bGV1dmVuLmFjLmJlPgorICogQGF1dGhvciBQYXVsbyBCYXJyZXRvIDxwYXVsby5iYXJyZXRvQHRlcnJhLmNvbS5icj4KKyAqCisgKiBUaGlzIGNvZGUgaXMgaGVyZWJ5IHBsYWNlZCBpbiB0aGUgcHVibGljIGRvbWFpbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1JTICcnQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MKKyAqIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SCisgKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwKKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFCisgKiBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLAorICogRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKiBOb3RlOiByZXdyaXR0ZW4gYSBsaXR0bGUgYml0IHRvIHByb3ZpZGUgZXJyb3IgY29udHJvbCBhbmQgYW4gT3BlblNTTC0KKyAgIGNvbXBhdGlibGUgQVBJICovCisKKyNpZm5kZWYgQUVTX0RFQlVHCisjIGlmbmRlZiBOREVCVUcKKyMgIGRlZmluZSBOREVCVUcKKyMgZW5kaWYKKyNlbmRpZgorI2luY2x1ZGUgPGFzc2VydC5oPgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9hZXMuaD4KKyNpbmNsdWRlICJhZXNfbG9jbC5oIgorCisjaWZuZGVmIEFFU19BU00KKy8qCitUZTBbeF0gPSBTIFt4XS5bMDIsIDAxLCAwMSwgMDNdOworVGUxW3hdID0gUyBbeF0uWzAzLCAwMiwgMDEsIDAxXTsKK1RlMlt4XSA9IFMgW3hdLlswMSwgMDMsIDAyLCAwMV07CitUZTNbeF0gPSBTIFt4XS5bMDEsIDAxLCAwMywgMDJdOworCitUZDBbeF0gPSBTaVt4XS5bMGUsIDA5LCAwZCwgMGJdOworVGQxW3hdID0gU2lbeF0uWzBiLCAwZSwgMDksIDBkXTsKK1RkMlt4XSA9IFNpW3hdLlswZCwgMGIsIDBlLCAwOV07CitUZDNbeF0gPSBTaVt4XS5bMDksIDBkLCAwYiwgMGVdOworVGQ0W3hdID0gU2lbeF0uWzAxXTsKKyovCisKK3N0YXRpYyBjb25zdCB1MzIgVGUwWzI1Nl0gPSB7CisgICAgMHhjNjYzNjNhNVUsIDB4Zjg3YzdjODRVLCAweGVlNzc3Nzk5VSwgMHhmNjdiN2I4ZFUsCisgICAgMHhmZmYyZjIwZFUsIDB4ZDY2YjZiYmRVLCAweGRlNmY2ZmIxVSwgMHg5MWM1YzU1NFUsCisgICAgMHg2MDMwMzA1MFUsIDB4MDIwMTAxMDNVLCAweGNlNjc2N2E5VSwgMHg1NjJiMmI3ZFUsCisgICAgMHhlN2ZlZmUxOVUsIDB4YjVkN2Q3NjJVLCAweDRkYWJhYmU2VSwgMHhlYzc2NzY5YVUsCisgICAgMHg4ZmNhY2E0NVUsIDB4MWY4MjgyOWRVLCAweDg5YzljOTQwVSwgMHhmYTdkN2Q4N1UsCisgICAgMHhlZmZhZmExNVUsIDB4YjI1OTU5ZWJVLCAweDhlNDc0N2M5VSwgMHhmYmYwZjAwYlUsCisgICAgMHg0MWFkYWRlY1UsIDB4YjNkNGQ0NjdVLCAweDVmYTJhMmZkVSwgMHg0NWFmYWZlYVUsCisgICAgMHgyMzljOWNiZlUsIDB4NTNhNGE0ZjdVLCAweGU0NzI3Mjk2VSwgMHg5YmMwYzA1YlUsCisgICAgMHg3NWI3YjdjMlUsIDB4ZTFmZGZkMWNVLCAweDNkOTM5M2FlVSwgMHg0YzI2MjY2YVUsCisgICAgMHg2YzM2MzY1YVUsIDB4N2UzZjNmNDFVLCAweGY1ZjdmNzAyVSwgMHg4M2NjY2M0ZlUsCisgICAgMHg2ODM0MzQ1Y1UsIDB4NTFhNWE1ZjRVLCAweGQxZTVlNTM0VSwgMHhmOWYxZjEwOFUsCisgICAgMHhlMjcxNzE5M1UsIDB4YWJkOGQ4NzNVLCAweDYyMzEzMTUzVSwgMHgyYTE1MTUzZlUsCisgICAgMHgwODA0MDQwY1UsIDB4OTVjN2M3NTJVLCAweDQ2MjMyMzY1VSwgMHg5ZGMzYzM1ZVUsCisgICAgMHgzMDE4MTgyOFUsIDB4Mzc5Njk2YTFVLCAweDBhMDUwNTBmVSwgMHgyZjlhOWFiNVUsCisgICAgMHgwZTA3MDcwOVUsIDB4MjQxMjEyMzZVLCAweDFiODA4MDliVSwgMHhkZmUyZTIzZFUsCisgICAgMHhjZGViZWIyNlUsIDB4NGUyNzI3NjlVLCAweDdmYjJiMmNkVSwgMHhlYTc1NzU5ZlUsCisgICAgMHgxMjA5MDkxYlUsIDB4MWQ4MzgzOWVVLCAweDU4MmMyYzc0VSwgMHgzNDFhMWEyZVUsCisgICAgMHgzNjFiMWIyZFUsIDB4ZGM2ZTZlYjJVLCAweGI0NWE1YWVlVSwgMHg1YmEwYTBmYlUsCisgICAgMHhhNDUyNTJmNlUsIDB4NzYzYjNiNGRVLCAweGI3ZDZkNjYxVSwgMHg3ZGIzYjNjZVUsCisgICAgMHg1MjI5Mjk3YlUsIDB4ZGRlM2UzM2VVLCAweDVlMmYyZjcxVSwgMHgxMzg0ODQ5N1UsCisgICAgMHhhNjUzNTNmNVUsIDB4YjlkMWQxNjhVLCAweDAwMDAwMDAwVSwgMHhjMWVkZWQyY1UsCisgICAgMHg0MDIwMjA2MFUsIDB4ZTNmY2ZjMWZVLCAweDc5YjFiMWM4VSwgMHhiNjViNWJlZFUsCisgICAgMHhkNDZhNmFiZVUsIDB4OGRjYmNiNDZVLCAweDY3YmViZWQ5VSwgMHg3MjM5Mzk0YlUsCisgICAgMHg5NDRhNGFkZVUsIDB4OTg0YzRjZDRVLCAweGIwNTg1OGU4VSwgMHg4NWNmY2Y0YVUsCisgICAgMHhiYmQwZDA2YlUsIDB4YzVlZmVmMmFVLCAweDRmYWFhYWU1VSwgMHhlZGZiZmIxNlUsCisgICAgMHg4NjQzNDNjNVUsIDB4OWE0ZDRkZDdVLCAweDY2MzMzMzU1VSwgMHgxMTg1ODU5NFUsCisgICAgMHg4YTQ1NDVjZlUsIDB4ZTlmOWY5MTBVLCAweDA0MDIwMjA2VSwgMHhmZTdmN2Y4MVUsCisgICAgMHhhMDUwNTBmMFUsIDB4NzgzYzNjNDRVLCAweDI1OWY5ZmJhVSwgMHg0YmE4YThlM1UsCisgICAgMHhhMjUxNTFmM1UsIDB4NWRhM2EzZmVVLCAweDgwNDA0MGMwVSwgMHgwNThmOGY4YVUsCisgICAgMHgzZjkyOTJhZFUsIDB4MjE5ZDlkYmNVLCAweDcwMzgzODQ4VSwgMHhmMWY1ZjUwNFUsCisgICAgMHg2M2JjYmNkZlUsIDB4NzdiNmI2YzFVLCAweGFmZGFkYTc1VSwgMHg0MjIxMjE2M1UsCisgICAgMHgyMDEwMTAzMFUsIDB4ZTVmZmZmMWFVLCAweGZkZjNmMzBlVSwgMHhiZmQyZDI2ZFUsCisgICAgMHg4MWNkY2Q0Y1UsIDB4MTgwYzBjMTRVLCAweDI2MTMxMzM1VSwgMHhjM2VjZWMyZlUsCisgICAgMHhiZTVmNWZlMVUsIDB4MzU5Nzk3YTJVLCAweDg4NDQ0NGNjVSwgMHgyZTE3MTczOVUsCisgICAgMHg5M2M0YzQ1N1UsIDB4NTVhN2E3ZjJVLCAweGZjN2U3ZTgyVSwgMHg3YTNkM2Q0N1UsCisgICAgMHhjODY0NjRhY1UsIDB4YmE1ZDVkZTdVLCAweDMyMTkxOTJiVSwgMHhlNjczNzM5NVUsCisgICAgMHhjMDYwNjBhMFUsIDB4MTk4MTgxOThVLCAweDllNGY0ZmQxVSwgMHhhM2RjZGM3ZlUsCisgICAgMHg0NDIyMjI2NlUsIDB4NTQyYTJhN2VVLCAweDNiOTA5MGFiVSwgMHgwYjg4ODg4M1UsCisgICAgMHg4YzQ2NDZjYVUsIDB4YzdlZWVlMjlVLCAweDZiYjhiOGQzVSwgMHgyODE0MTQzY1UsCisgICAgMHhhN2RlZGU3OVUsIDB4YmM1ZTVlZTJVLCAweDE2MGIwYjFkVSwgMHhhZGRiZGI3NlUsCisgICAgMHhkYmUwZTAzYlUsIDB4NjQzMjMyNTZVLCAweDc0M2EzYTRlVSwgMHgxNDBhMGExZVUsCisgICAgMHg5MjQ5NDlkYlUsIDB4MGMwNjA2MGFVLCAweDQ4MjQyNDZjVSwgMHhiODVjNWNlNFUsCisgICAgMHg5ZmMyYzI1ZFUsIDB4YmRkM2QzNmVVLCAweDQzYWNhY2VmVSwgMHhjNDYyNjJhNlUsCisgICAgMHgzOTkxOTFhOFUsIDB4MzE5NTk1YTRVLCAweGQzZTRlNDM3VSwgMHhmMjc5Nzk4YlUsCisgICAgMHhkNWU3ZTczMlUsIDB4OGJjOGM4NDNVLCAweDZlMzczNzU5VSwgMHhkYTZkNmRiN1UsCisgICAgMHgwMThkOGQ4Y1UsIDB4YjFkNWQ1NjRVLCAweDljNGU0ZWQyVSwgMHg0OWE5YTllMFUsCisgICAgMHhkODZjNmNiNFUsIDB4YWM1NjU2ZmFVLCAweGYzZjRmNDA3VSwgMHhjZmVhZWEyNVUsCisgICAgMHhjYTY1NjVhZlUsIDB4ZjQ3YTdhOGVVLCAweDQ3YWVhZWU5VSwgMHgxMDA4MDgxOFUsCisgICAgMHg2ZmJhYmFkNVUsIDB4ZjA3ODc4ODhVLCAweDRhMjUyNTZmVSwgMHg1YzJlMmU3MlUsCisgICAgMHgzODFjMWMyNFUsIDB4NTdhNmE2ZjFVLCAweDczYjRiNGM3VSwgMHg5N2M2YzY1MVUsCisgICAgMHhjYmU4ZTgyM1UsIDB4YTFkZGRkN2NVLCAweGU4NzQ3NDljVSwgMHgzZTFmMWYyMVUsCisgICAgMHg5NjRiNGJkZFUsIDB4NjFiZGJkZGNVLCAweDBkOGI4Yjg2VSwgMHgwZjhhOGE4NVUsCisgICAgMHhlMDcwNzA5MFUsIDB4N2MzZTNlNDJVLCAweDcxYjViNWM0VSwgMHhjYzY2NjZhYVUsCisgICAgMHg5MDQ4NDhkOFUsIDB4MDYwMzAzMDVVLCAweGY3ZjZmNjAxVSwgMHgxYzBlMGUxMlUsCisgICAgMHhjMjYxNjFhM1UsIDB4NmEzNTM1NWZVLCAweGFlNTc1N2Y5VSwgMHg2OWI5YjlkMFUsCisgICAgMHgxNzg2ODY5MVUsIDB4OTljMWMxNThVLCAweDNhMWQxZDI3VSwgMHgyNzllOWViOVUsCisgICAgMHhkOWUxZTEzOFUsIDB4ZWJmOGY4MTNVLCAweDJiOTg5OGIzVSwgMHgyMjExMTEzM1UsCisgICAgMHhkMjY5NjliYlUsIDB4YTlkOWQ5NzBVLCAweDA3OGU4ZTg5VSwgMHgzMzk0OTRhN1UsCisgICAgMHgyZDliOWJiNlUsIDB4M2MxZTFlMjJVLCAweDE1ODc4NzkyVSwgMHhjOWU5ZTkyMFUsCisgICAgMHg4N2NlY2U0OVUsIDB4YWE1NTU1ZmZVLCAweDUwMjgyODc4VSwgMHhhNWRmZGY3YVUsCisgICAgMHgwMzhjOGM4ZlUsIDB4NTlhMWExZjhVLCAweDA5ODk4OTgwVSwgMHgxYTBkMGQxN1UsCisgICAgMHg2NWJmYmZkYVUsIDB4ZDdlNmU2MzFVLCAweDg0NDI0MmM2VSwgMHhkMDY4NjhiOFUsCisgICAgMHg4MjQxNDFjM1UsIDB4Mjk5OTk5YjBVLCAweDVhMmQyZDc3VSwgMHgxZTBmMGYxMVUsCisgICAgMHg3YmIwYjBjYlUsIDB4YTg1NDU0ZmNVLCAweDZkYmJiYmQ2VSwgMHgyYzE2MTYzYVUsCit9Oworc3RhdGljIGNvbnN0IHUzMiBUZTFbMjU2XSA9IHsKKyAgICAweGE1YzY2MzYzVSwgMHg4NGY4N2M3Y1UsIDB4OTllZTc3NzdVLCAweDhkZjY3YjdiVSwKKyAgICAweDBkZmZmMmYyVSwgMHhiZGQ2NmI2YlUsIDB4YjFkZTZmNmZVLCAweDU0OTFjNWM1VSwKKyAgICAweDUwNjAzMDMwVSwgMHgwMzAyMDEwMVUsIDB4YTljZTY3NjdVLCAweDdkNTYyYjJiVSwKKyAgICAweDE5ZTdmZWZlVSwgMHg2MmI1ZDdkN1UsIDB4ZTY0ZGFiYWJVLCAweDlhZWM3Njc2VSwKKyAgICAweDQ1OGZjYWNhVSwgMHg5ZDFmODI4MlUsIDB4NDA4OWM5YzlVLCAweDg3ZmE3ZDdkVSwKKyAgICAweDE1ZWZmYWZhVSwgMHhlYmIyNTk1OVUsIDB4Yzk4ZTQ3NDdVLCAweDBiZmJmMGYwVSwKKyAgICAweGVjNDFhZGFkVSwgMHg2N2IzZDRkNFUsIDB4ZmQ1ZmEyYTJVLCAweGVhNDVhZmFmVSwKKyAgICAweGJmMjM5YzljVSwgMHhmNzUzYTRhNFUsIDB4OTZlNDcyNzJVLCAweDViOWJjMGMwVSwKKyAgICAweGMyNzViN2I3VSwgMHgxY2UxZmRmZFUsIDB4YWUzZDkzOTNVLCAweDZhNGMyNjI2VSwKKyAgICAweDVhNmMzNjM2VSwgMHg0MTdlM2YzZlUsIDB4MDJmNWY3ZjdVLCAweDRmODNjY2NjVSwKKyAgICAweDVjNjgzNDM0VSwgMHhmNDUxYTVhNVUsIDB4MzRkMWU1ZTVVLCAweDA4ZjlmMWYxVSwKKyAgICAweDkzZTI3MTcxVSwgMHg3M2FiZDhkOFUsIDB4NTM2MjMxMzFVLCAweDNmMmExNTE1VSwKKyAgICAweDBjMDgwNDA0VSwgMHg1Mjk1YzdjN1UsIDB4NjU0NjIzMjNVLCAweDVlOWRjM2MzVSwKKyAgICAweDI4MzAxODE4VSwgMHhhMTM3OTY5NlUsIDB4MGYwYTA1MDVVLCAweGI1MmY5YTlhVSwKKyAgICAweDA5MGUwNzA3VSwgMHgzNjI0MTIxMlUsIDB4OWIxYjgwODBVLCAweDNkZGZlMmUyVSwKKyAgICAweDI2Y2RlYmViVSwgMHg2OTRlMjcyN1UsIDB4Y2Q3ZmIyYjJVLCAweDlmZWE3NTc1VSwKKyAgICAweDFiMTIwOTA5VSwgMHg5ZTFkODM4M1UsIDB4NzQ1ODJjMmNVLCAweDJlMzQxYTFhVSwKKyAgICAweDJkMzYxYjFiVSwgMHhiMmRjNmU2ZVUsIDB4ZWViNDVhNWFVLCAweGZiNWJhMGEwVSwKKyAgICAweGY2YTQ1MjUyVSwgMHg0ZDc2M2IzYlUsIDB4NjFiN2Q2ZDZVLCAweGNlN2RiM2IzVSwKKyAgICAweDdiNTIyOTI5VSwgMHgzZWRkZTNlM1UsIDB4NzE1ZTJmMmZVLCAweDk3MTM4NDg0VSwKKyAgICAweGY1YTY1MzUzVSwgMHg2OGI5ZDFkMVUsIDB4MDAwMDAwMDBVLCAweDJjYzFlZGVkVSwKKyAgICAweDYwNDAyMDIwVSwgMHgxZmUzZmNmY1UsIDB4Yzg3OWIxYjFVLCAweGVkYjY1YjViVSwKKyAgICAweGJlZDQ2YTZhVSwgMHg0NjhkY2JjYlUsIDB4ZDk2N2JlYmVVLCAweDRiNzIzOTM5VSwKKyAgICAweGRlOTQ0YTRhVSwgMHhkNDk4NGM0Y1UsIDB4ZThiMDU4NThVLCAweDRhODVjZmNmVSwKKyAgICAweDZiYmJkMGQwVSwgMHgyYWM1ZWZlZlUsIDB4ZTU0ZmFhYWFVLCAweDE2ZWRmYmZiVSwKKyAgICAweGM1ODY0MzQzVSwgMHhkNzlhNGQ0ZFUsIDB4NTU2NjMzMzNVLCAweDk0MTE4NTg1VSwKKyAgICAweGNmOGE0NTQ1VSwgMHgxMGU5ZjlmOVUsIDB4MDYwNDAyMDJVLCAweDgxZmU3ZjdmVSwKKyAgICAweGYwYTA1MDUwVSwgMHg0NDc4M2MzY1UsIDB4YmEyNTlmOWZVLCAweGUzNGJhOGE4VSwKKyAgICAweGYzYTI1MTUxVSwgMHhmZTVkYTNhM1UsIDB4YzA4MDQwNDBVLCAweDhhMDU4ZjhmVSwKKyAgICAweGFkM2Y5MjkyVSwgMHhiYzIxOWQ5ZFUsIDB4NDg3MDM4MzhVLCAweDA0ZjFmNWY1VSwKKyAgICAweGRmNjNiY2JjVSwgMHhjMTc3YjZiNlUsIDB4NzVhZmRhZGFVLCAweDYzNDIyMTIxVSwKKyAgICAweDMwMjAxMDEwVSwgMHgxYWU1ZmZmZlUsIDB4MGVmZGYzZjNVLCAweDZkYmZkMmQyVSwKKyAgICAweDRjODFjZGNkVSwgMHgxNDE4MGMwY1UsIDB4MzUyNjEzMTNVLCAweDJmYzNlY2VjVSwKKyAgICAweGUxYmU1ZjVmVSwgMHhhMjM1OTc5N1UsIDB4Y2M4ODQ0NDRVLCAweDM5MmUxNzE3VSwKKyAgICAweDU3OTNjNGM0VSwgMHhmMjU1YTdhN1UsIDB4ODJmYzdlN2VVLCAweDQ3N2EzZDNkVSwKKyAgICAweGFjYzg2NDY0VSwgMHhlN2JhNWQ1ZFUsIDB4MmIzMjE5MTlVLCAweDk1ZTY3MzczVSwKKyAgICAweGEwYzA2MDYwVSwgMHg5ODE5ODE4MVUsIDB4ZDE5ZTRmNGZVLCAweDdmYTNkY2RjVSwKKyAgICAweDY2NDQyMjIyVSwgMHg3ZTU0MmEyYVUsIDB4YWIzYjkwOTBVLCAweDgzMGI4ODg4VSwKKyAgICAweGNhOGM0NjQ2VSwgMHgyOWM3ZWVlZVUsIDB4ZDM2YmI4YjhVLCAweDNjMjgxNDE0VSwKKyAgICAweDc5YTdkZWRlVSwgMHhlMmJjNWU1ZVUsIDB4MWQxNjBiMGJVLCAweDc2YWRkYmRiVSwKKyAgICAweDNiZGJlMGUwVSwgMHg1NjY0MzIzMlUsIDB4NGU3NDNhM2FVLCAweDFlMTQwYTBhVSwKKyAgICAweGRiOTI0OTQ5VSwgMHgwYTBjMDYwNlUsIDB4NmM0ODI0MjRVLCAweGU0Yjg1YzVjVSwKKyAgICAweDVkOWZjMmMyVSwgMHg2ZWJkZDNkM1UsIDB4ZWY0M2FjYWNVLCAweGE2YzQ2MjYyVSwKKyAgICAweGE4Mzk5MTkxVSwgMHhhNDMxOTU5NVUsIDB4MzdkM2U0ZTRVLCAweDhiZjI3OTc5VSwKKyAgICAweDMyZDVlN2U3VSwgMHg0MzhiYzhjOFUsIDB4NTk2ZTM3MzdVLCAweGI3ZGE2ZDZkVSwKKyAgICAweDhjMDE4ZDhkVSwgMHg2NGIxZDVkNVUsIDB4ZDI5YzRlNGVVLCAweGUwNDlhOWE5VSwKKyAgICAweGI0ZDg2YzZjVSwgMHhmYWFjNTY1NlUsIDB4MDdmM2Y0ZjRVLCAweDI1Y2ZlYWVhVSwKKyAgICAweGFmY2E2NTY1VSwgMHg4ZWY0N2E3YVUsIDB4ZTk0N2FlYWVVLCAweDE4MTAwODA4VSwKKyAgICAweGQ1NmZiYWJhVSwgMHg4OGYwNzg3OFUsIDB4NmY0YTI1MjVVLCAweDcyNWMyZTJlVSwKKyAgICAweDI0MzgxYzFjVSwgMHhmMTU3YTZhNlUsIDB4Yzc3M2I0YjRVLCAweDUxOTdjNmM2VSwKKyAgICAweDIzY2JlOGU4VSwgMHg3Y2ExZGRkZFUsIDB4OWNlODc0NzRVLCAweDIxM2UxZjFmVSwKKyAgICAweGRkOTY0YjRiVSwgMHhkYzYxYmRiZFUsIDB4ODYwZDhiOGJVLCAweDg1MGY4YThhVSwKKyAgICAweDkwZTA3MDcwVSwgMHg0MjdjM2UzZVUsIDB4YzQ3MWI1YjVVLCAweGFhY2M2NjY2VSwKKyAgICAweGQ4OTA0ODQ4VSwgMHgwNTA2MDMwM1UsIDB4MDFmN2Y2ZjZVLCAweDEyMWMwZTBlVSwKKyAgICAweGEzYzI2MTYxVSwgMHg1ZjZhMzUzNVUsIDB4ZjlhZTU3NTdVLCAweGQwNjliOWI5VSwKKyAgICAweDkxMTc4Njg2VSwgMHg1ODk5YzFjMVUsIDB4MjczYTFkMWRVLCAweGI5Mjc5ZTllVSwKKyAgICAweDM4ZDllMWUxVSwgMHgxM2ViZjhmOFUsIDB4YjMyYjk4OThVLCAweDMzMjIxMTExVSwKKyAgICAweGJiZDI2OTY5VSwgMHg3MGE5ZDlkOVUsIDB4ODkwNzhlOGVVLCAweGE3MzM5NDk0VSwKKyAgICAweGI2MmQ5YjliVSwgMHgyMjNjMWUxZVUsIDB4OTIxNTg3ODdVLCAweDIwYzllOWU5VSwKKyAgICAweDQ5ODdjZWNlVSwgMHhmZmFhNTU1NVUsIDB4Nzg1MDI4MjhVLCAweDdhYTVkZmRmVSwKKyAgICAweDhmMDM4YzhjVSwgMHhmODU5YTFhMVUsIDB4ODAwOTg5ODlVLCAweDE3MWEwZDBkVSwKKyAgICAweGRhNjViZmJmVSwgMHgzMWQ3ZTZlNlUsIDB4YzY4NDQyNDJVLCAweGI4ZDA2ODY4VSwKKyAgICAweGMzODI0MTQxVSwgMHhiMDI5OTk5OVUsIDB4Nzc1YTJkMmRVLCAweDExMWUwZjBmVSwKKyAgICAweGNiN2JiMGIwVSwgMHhmY2E4NTQ1NFUsIDB4ZDY2ZGJiYmJVLCAweDNhMmMxNjE2VSwKK307CitzdGF0aWMgY29uc3QgdTMyIFRlMlsyNTZdID0geworICAgIDB4NjNhNWM2NjNVLCAweDdjODRmODdjVSwgMHg3Nzk5ZWU3N1UsIDB4N2I4ZGY2N2JVLAorICAgIDB4ZjIwZGZmZjJVLCAweDZiYmRkNjZiVSwgMHg2ZmIxZGU2ZlUsIDB4YzU1NDkxYzVVLAorICAgIDB4MzA1MDYwMzBVLCAweDAxMDMwMjAxVSwgMHg2N2E5Y2U2N1UsIDB4MmI3ZDU2MmJVLAorICAgIDB4ZmUxOWU3ZmVVLCAweGQ3NjJiNWQ3VSwgMHhhYmU2NGRhYlUsIDB4NzY5YWVjNzZVLAorICAgIDB4Y2E0NThmY2FVLCAweDgyOWQxZjgyVSwgMHhjOTQwODljOVUsIDB4N2Q4N2ZhN2RVLAorICAgIDB4ZmExNWVmZmFVLCAweDU5ZWJiMjU5VSwgMHg0N2M5OGU0N1UsIDB4ZjAwYmZiZjBVLAorICAgIDB4YWRlYzQxYWRVLCAweGQ0NjdiM2Q0VSwgMHhhMmZkNWZhMlUsIDB4YWZlYTQ1YWZVLAorICAgIDB4OWNiZjIzOWNVLCAweGE0Zjc1M2E0VSwgMHg3Mjk2ZTQ3MlUsIDB4YzA1YjliYzBVLAorICAgIDB4YjdjMjc1YjdVLCAweGZkMWNlMWZkVSwgMHg5M2FlM2Q5M1UsIDB4MjY2YTRjMjZVLAorICAgIDB4MzY1YTZjMzZVLCAweDNmNDE3ZTNmVSwgMHhmNzAyZjVmN1UsIDB4Y2M0ZjgzY2NVLAorICAgIDB4MzQ1YzY4MzRVLCAweGE1ZjQ1MWE1VSwgMHhlNTM0ZDFlNVUsIDB4ZjEwOGY5ZjFVLAorICAgIDB4NzE5M2UyNzFVLCAweGQ4NzNhYmQ4VSwgMHgzMTUzNjIzMVUsIDB4MTUzZjJhMTVVLAorICAgIDB4MDQwYzA4MDRVLCAweGM3NTI5NWM3VSwgMHgyMzY1NDYyM1UsIDB4YzM1ZTlkYzNVLAorICAgIDB4MTgyODMwMThVLCAweDk2YTEzNzk2VSwgMHgwNTBmMGEwNVUsIDB4OWFiNTJmOWFVLAorICAgIDB4MDcwOTBlMDdVLCAweDEyMzYyNDEyVSwgMHg4MDliMWI4MFUsIDB4ZTIzZGRmZTJVLAorICAgIDB4ZWIyNmNkZWJVLCAweDI3Njk0ZTI3VSwgMHhiMmNkN2ZiMlUsIDB4NzU5ZmVhNzVVLAorICAgIDB4MDkxYjEyMDlVLCAweDgzOWUxZDgzVSwgMHgyYzc0NTgyY1UsIDB4MWEyZTM0MWFVLAorICAgIDB4MWIyZDM2MWJVLCAweDZlYjJkYzZlVSwgMHg1YWVlYjQ1YVUsIDB4YTBmYjViYTBVLAorICAgIDB4NTJmNmE0NTJVLCAweDNiNGQ3NjNiVSwgMHhkNjYxYjdkNlUsIDB4YjNjZTdkYjNVLAorICAgIDB4Mjk3YjUyMjlVLCAweGUzM2VkZGUzVSwgMHgyZjcxNWUyZlUsIDB4ODQ5NzEzODRVLAorICAgIDB4NTNmNWE2NTNVLCAweGQxNjhiOWQxVSwgMHgwMDAwMDAwMFUsIDB4ZWQyY2MxZWRVLAorICAgIDB4MjA2MDQwMjBVLCAweGZjMWZlM2ZjVSwgMHhiMWM4NzliMVUsIDB4NWJlZGI2NWJVLAorICAgIDB4NmFiZWQ0NmFVLCAweGNiNDY4ZGNiVSwgMHhiZWQ5NjdiZVUsIDB4Mzk0YjcyMzlVLAorICAgIDB4NGFkZTk0NGFVLCAweDRjZDQ5ODRjVSwgMHg1OGU4YjA1OFUsIDB4Y2Y0YTg1Y2ZVLAorICAgIDB4ZDA2YmJiZDBVLCAweGVmMmFjNWVmVSwgMHhhYWU1NGZhYVUsIDB4ZmIxNmVkZmJVLAorICAgIDB4NDNjNTg2NDNVLCAweDRkZDc5YTRkVSwgMHgzMzU1NjYzM1UsIDB4ODU5NDExODVVLAorICAgIDB4NDVjZjhhNDVVLCAweGY5MTBlOWY5VSwgMHgwMjA2MDQwMlUsIDB4N2Y4MWZlN2ZVLAorICAgIDB4NTBmMGEwNTBVLCAweDNjNDQ3ODNjVSwgMHg5ZmJhMjU5ZlUsIDB4YThlMzRiYThVLAorICAgIDB4NTFmM2EyNTFVLCAweGEzZmU1ZGEzVSwgMHg0MGMwODA0MFUsIDB4OGY4YTA1OGZVLAorICAgIDB4OTJhZDNmOTJVLCAweDlkYmMyMTlkVSwgMHgzODQ4NzAzOFUsIDB4ZjUwNGYxZjVVLAorICAgIDB4YmNkZjYzYmNVLCAweGI2YzE3N2I2VSwgMHhkYTc1YWZkYVUsIDB4MjE2MzQyMjFVLAorICAgIDB4MTAzMDIwMTBVLCAweGZmMWFlNWZmVSwgMHhmMzBlZmRmM1UsIDB4ZDI2ZGJmZDJVLAorICAgIDB4Y2Q0YzgxY2RVLCAweDBjMTQxODBjVSwgMHgxMzM1MjYxM1UsIDB4ZWMyZmMzZWNVLAorICAgIDB4NWZlMWJlNWZVLCAweDk3YTIzNTk3VSwgMHg0NGNjODg0NFUsIDB4MTczOTJlMTdVLAorICAgIDB4YzQ1NzkzYzRVLCAweGE3ZjI1NWE3VSwgMHg3ZTgyZmM3ZVUsIDB4M2Q0NzdhM2RVLAorICAgIDB4NjRhY2M4NjRVLCAweDVkZTdiYTVkVSwgMHgxOTJiMzIxOVUsIDB4NzM5NWU2NzNVLAorICAgIDB4NjBhMGMwNjBVLCAweDgxOTgxOTgxVSwgMHg0ZmQxOWU0ZlUsIDB4ZGM3ZmEzZGNVLAorICAgIDB4MjI2NjQ0MjJVLCAweDJhN2U1NDJhVSwgMHg5MGFiM2I5MFUsIDB4ODg4MzBiODhVLAorICAgIDB4NDZjYThjNDZVLCAweGVlMjljN2VlVSwgMHhiOGQzNmJiOFUsIDB4MTQzYzI4MTRVLAorICAgIDB4ZGU3OWE3ZGVVLCAweDVlZTJiYzVlVSwgMHgwYjFkMTYwYlUsIDB4ZGI3NmFkZGJVLAorICAgIDB4ZTAzYmRiZTBVLCAweDMyNTY2NDMyVSwgMHgzYTRlNzQzYVUsIDB4MGExZTE0MGFVLAorICAgIDB4NDlkYjkyNDlVLCAweDA2MGEwYzA2VSwgMHgyNDZjNDgyNFUsIDB4NWNlNGI4NWNVLAorICAgIDB4YzI1ZDlmYzJVLCAweGQzNmViZGQzVSwgMHhhY2VmNDNhY1UsIDB4NjJhNmM0NjJVLAorICAgIDB4OTFhODM5OTFVLCAweDk1YTQzMTk1VSwgMHhlNDM3ZDNlNFUsIDB4Nzk4YmYyNzlVLAorICAgIDB4ZTczMmQ1ZTdVLCAweGM4NDM4YmM4VSwgMHgzNzU5NmUzN1UsIDB4NmRiN2RhNmRVLAorICAgIDB4OGQ4YzAxOGRVLCAweGQ1NjRiMWQ1VSwgMHg0ZWQyOWM0ZVUsIDB4YTllMDQ5YTlVLAorICAgIDB4NmNiNGQ4NmNVLCAweDU2ZmFhYzU2VSwgMHhmNDA3ZjNmNFUsIDB4ZWEyNWNmZWFVLAorICAgIDB4NjVhZmNhNjVVLCAweDdhOGVmNDdhVSwgMHhhZWU5NDdhZVUsIDB4MDgxODEwMDhVLAorICAgIDB4YmFkNTZmYmFVLCAweDc4ODhmMDc4VSwgMHgyNTZmNGEyNVUsIDB4MmU3MjVjMmVVLAorICAgIDB4MWMyNDM4MWNVLCAweGE2ZjE1N2E2VSwgMHhiNGM3NzNiNFUsIDB4YzY1MTk3YzZVLAorICAgIDB4ZTgyM2NiZThVLCAweGRkN2NhMWRkVSwgMHg3NDljZTg3NFUsIDB4MWYyMTNlMWZVLAorICAgIDB4NGJkZDk2NGJVLCAweGJkZGM2MWJkVSwgMHg4Yjg2MGQ4YlUsIDB4OGE4NTBmOGFVLAorICAgIDB4NzA5MGUwNzBVLCAweDNlNDI3YzNlVSwgMHhiNWM0NzFiNVUsIDB4NjZhYWNjNjZVLAorICAgIDB4NDhkODkwNDhVLCAweDAzMDUwNjAzVSwgMHhmNjAxZjdmNlUsIDB4MGUxMjFjMGVVLAorICAgIDB4NjFhM2MyNjFVLCAweDM1NWY2YTM1VSwgMHg1N2Y5YWU1N1UsIDB4YjlkMDY5YjlVLAorICAgIDB4ODY5MTE3ODZVLCAweGMxNTg5OWMxVSwgMHgxZDI3M2ExZFUsIDB4OWViOTI3OWVVLAorICAgIDB4ZTEzOGQ5ZTFVLCAweGY4MTNlYmY4VSwgMHg5OGIzMmI5OFUsIDB4MTEzMzIyMTFVLAorICAgIDB4NjliYmQyNjlVLCAweGQ5NzBhOWQ5VSwgMHg4ZTg5MDc4ZVUsIDB4OTRhNzMzOTRVLAorICAgIDB4OWJiNjJkOWJVLCAweDFlMjIzYzFlVSwgMHg4NzkyMTU4N1UsIDB4ZTkyMGM5ZTlVLAorICAgIDB4Y2U0OTg3Y2VVLCAweDU1ZmZhYTU1VSwgMHgyODc4NTAyOFUsIDB4ZGY3YWE1ZGZVLAorICAgIDB4OGM4ZjAzOGNVLCAweGExZjg1OWExVSwgMHg4OTgwMDk4OVUsIDB4MGQxNzFhMGRVLAorICAgIDB4YmZkYTY1YmZVLCAweGU2MzFkN2U2VSwgMHg0MmM2ODQ0MlUsIDB4NjhiOGQwNjhVLAorICAgIDB4NDFjMzgyNDFVLCAweDk5YjAyOTk5VSwgMHgyZDc3NWEyZFUsIDB4MGYxMTFlMGZVLAorICAgIDB4YjBjYjdiYjBVLCAweDU0ZmNhODU0VSwgMHhiYmQ2NmRiYlUsIDB4MTYzYTJjMTZVLAorfTsKK3N0YXRpYyBjb25zdCB1MzIgVGUzWzI1Nl0gPSB7CisgICAgMHg2MzYzYTVjNlUsIDB4N2M3Yzg0ZjhVLCAweDc3Nzc5OWVlVSwgMHg3YjdiOGRmNlUsCisgICAgMHhmMmYyMGRmZlUsIDB4NmI2YmJkZDZVLCAweDZmNmZiMWRlVSwgMHhjNWM1NTQ5MVUsCisgICAgMHgzMDMwNTA2MFUsIDB4MDEwMTAzMDJVLCAweDY3NjdhOWNlVSwgMHgyYjJiN2Q1NlUsCisgICAgMHhmZWZlMTllN1UsIDB4ZDdkNzYyYjVVLCAweGFiYWJlNjRkVSwgMHg3Njc2OWFlY1UsCisgICAgMHhjYWNhNDU4ZlUsIDB4ODI4MjlkMWZVLCAweGM5Yzk0MDg5VSwgMHg3ZDdkODdmYVUsCisgICAgMHhmYWZhMTVlZlUsIDB4NTk1OWViYjJVLCAweDQ3NDdjOThlVSwgMHhmMGYwMGJmYlUsCisgICAgMHhhZGFkZWM0MVUsIDB4ZDRkNDY3YjNVLCAweGEyYTJmZDVmVSwgMHhhZmFmZWE0NVUsCisgICAgMHg5YzljYmYyM1UsIDB4YTRhNGY3NTNVLCAweDcyNzI5NmU0VSwgMHhjMGMwNWI5YlUsCisgICAgMHhiN2I3YzI3NVUsIDB4ZmRmZDFjZTFVLCAweDkzOTNhZTNkVSwgMHgyNjI2NmE0Y1UsCisgICAgMHgzNjM2NWE2Y1UsIDB4M2YzZjQxN2VVLCAweGY3ZjcwMmY1VSwgMHhjY2NjNGY4M1UsCisgICAgMHgzNDM0NWM2OFUsIDB4YTVhNWY0NTFVLCAweGU1ZTUzNGQxVSwgMHhmMWYxMDhmOVUsCisgICAgMHg3MTcxOTNlMlUsIDB4ZDhkODczYWJVLCAweDMxMzE1MzYyVSwgMHgxNTE1M2YyYVUsCisgICAgMHgwNDA0MGMwOFUsIDB4YzdjNzUyOTVVLCAweDIzMjM2NTQ2VSwgMHhjM2MzNWU5ZFUsCisgICAgMHgxODE4MjgzMFUsIDB4OTY5NmExMzdVLCAweDA1MDUwZjBhVSwgMHg5YTlhYjUyZlUsCisgICAgMHgwNzA3MDkwZVUsIDB4MTIxMjM2MjRVLCAweDgwODA5YjFiVSwgMHhlMmUyM2RkZlUsCisgICAgMHhlYmViMjZjZFUsIDB4MjcyNzY5NGVVLCAweGIyYjJjZDdmVSwgMHg3NTc1OWZlYVUsCisgICAgMHgwOTA5MWIxMlUsIDB4ODM4MzllMWRVLCAweDJjMmM3NDU4VSwgMHgxYTFhMmUzNFUsCisgICAgMHgxYjFiMmQzNlUsIDB4NmU2ZWIyZGNVLCAweDVhNWFlZWI0VSwgMHhhMGEwZmI1YlUsCisgICAgMHg1MjUyZjZhNFUsIDB4M2IzYjRkNzZVLCAweGQ2ZDY2MWI3VSwgMHhiM2IzY2U3ZFUsCisgICAgMHgyOTI5N2I1MlUsIDB4ZTNlMzNlZGRVLCAweDJmMmY3MTVlVSwgMHg4NDg0OTcxM1UsCisgICAgMHg1MzUzZjVhNlUsIDB4ZDFkMTY4YjlVLCAweDAwMDAwMDAwVSwgMHhlZGVkMmNjMVUsCisgICAgMHgyMDIwNjA0MFUsIDB4ZmNmYzFmZTNVLCAweGIxYjFjODc5VSwgMHg1YjViZWRiNlUsCisgICAgMHg2YTZhYmVkNFUsIDB4Y2JjYjQ2OGRVLCAweGJlYmVkOTY3VSwgMHgzOTM5NGI3MlUsCisgICAgMHg0YTRhZGU5NFUsIDB4NGM0Y2Q0OThVLCAweDU4NThlOGIwVSwgMHhjZmNmNGE4NVUsCisgICAgMHhkMGQwNmJiYlUsIDB4ZWZlZjJhYzVVLCAweGFhYWFlNTRmVSwgMHhmYmZiMTZlZFUsCisgICAgMHg0MzQzYzU4NlUsIDB4NGQ0ZGQ3OWFVLCAweDMzMzM1NTY2VSwgMHg4NTg1OTQxMVUsCisgICAgMHg0NTQ1Y2Y4YVUsIDB4ZjlmOTEwZTlVLCAweDAyMDIwNjA0VSwgMHg3ZjdmODFmZVUsCisgICAgMHg1MDUwZjBhMFUsIDB4M2MzYzQ0NzhVLCAweDlmOWZiYTI1VSwgMHhhOGE4ZTM0YlUsCisgICAgMHg1MTUxZjNhMlUsIDB4YTNhM2ZlNWRVLCAweDQwNDBjMDgwVSwgMHg4ZjhmOGEwNVUsCisgICAgMHg5MjkyYWQzZlUsIDB4OWQ5ZGJjMjFVLCAweDM4Mzg0ODcwVSwgMHhmNWY1MDRmMVUsCisgICAgMHhiY2JjZGY2M1UsIDB4YjZiNmMxNzdVLCAweGRhZGE3NWFmVSwgMHgyMTIxNjM0MlUsCisgICAgMHgxMDEwMzAyMFUsIDB4ZmZmZjFhZTVVLCAweGYzZjMwZWZkVSwgMHhkMmQyNmRiZlUsCisgICAgMHhjZGNkNGM4MVUsIDB4MGMwYzE0MThVLCAweDEzMTMzNTI2VSwgMHhlY2VjMmZjM1UsCisgICAgMHg1ZjVmZTFiZVUsIDB4OTc5N2EyMzVVLCAweDQ0NDRjYzg4VSwgMHgxNzE3MzkyZVUsCisgICAgMHhjNGM0NTc5M1UsIDB4YTdhN2YyNTVVLCAweDdlN2U4MmZjVSwgMHgzZDNkNDc3YVUsCisgICAgMHg2NDY0YWNjOFUsIDB4NWQ1ZGU3YmFVLCAweDE5MTkyYjMyVSwgMHg3MzczOTVlNlUsCisgICAgMHg2MDYwYTBjMFUsIDB4ODE4MTk4MTlVLCAweDRmNGZkMTllVSwgMHhkY2RjN2ZhM1UsCisgICAgMHgyMjIyNjY0NFUsIDB4MmEyYTdlNTRVLCAweDkwOTBhYjNiVSwgMHg4ODg4ODMwYlUsCisgICAgMHg0NjQ2Y2E4Y1UsIDB4ZWVlZTI5YzdVLCAweGI4YjhkMzZiVSwgMHgxNDE0M2MyOFUsCisgICAgMHhkZWRlNzlhN1UsIDB4NWU1ZWUyYmNVLCAweDBiMGIxZDE2VSwgMHhkYmRiNzZhZFUsCisgICAgMHhlMGUwM2JkYlUsIDB4MzIzMjU2NjRVLCAweDNhM2E0ZTc0VSwgMHgwYTBhMWUxNFUsCisgICAgMHg0OTQ5ZGI5MlUsIDB4MDYwNjBhMGNVLCAweDI0MjQ2YzQ4VSwgMHg1YzVjZTRiOFUsCisgICAgMHhjMmMyNWQ5ZlUsIDB4ZDNkMzZlYmRVLCAweGFjYWNlZjQzVSwgMHg2MjYyYTZjNFUsCisgICAgMHg5MTkxYTgzOVUsIDB4OTU5NWE0MzFVLCAweGU0ZTQzN2QzVSwgMHg3OTc5OGJmMlUsCisgICAgMHhlN2U3MzJkNVUsIDB4YzhjODQzOGJVLCAweDM3Mzc1OTZlVSwgMHg2ZDZkYjdkYVUsCisgICAgMHg4ZDhkOGMwMVUsIDB4ZDVkNTY0YjFVLCAweDRlNGVkMjljVSwgMHhhOWE5ZTA0OVUsCisgICAgMHg2YzZjYjRkOFUsIDB4NTY1NmZhYWNVLCAweGY0ZjQwN2YzVSwgMHhlYWVhMjVjZlUsCisgICAgMHg2NTY1YWZjYVUsIDB4N2E3YThlZjRVLCAweGFlYWVlOTQ3VSwgMHgwODA4MTgxMFUsCisgICAgMHhiYWJhZDU2ZlUsIDB4Nzg3ODg4ZjBVLCAweDI1MjU2ZjRhVSwgMHgyZTJlNzI1Y1UsCisgICAgMHgxYzFjMjQzOFUsIDB4YTZhNmYxNTdVLCAweGI0YjRjNzczVSwgMHhjNmM2NTE5N1UsCisgICAgMHhlOGU4MjNjYlUsIDB4ZGRkZDdjYTFVLCAweDc0NzQ5Y2U4VSwgMHgxZjFmMjEzZVUsCisgICAgMHg0YjRiZGQ5NlUsIDB4YmRiZGRjNjFVLCAweDhiOGI4NjBkVSwgMHg4YThhODUwZlUsCisgICAgMHg3MDcwOTBlMFUsIDB4M2UzZTQyN2NVLCAweGI1YjVjNDcxVSwgMHg2NjY2YWFjY1UsCisgICAgMHg0ODQ4ZDg5MFUsIDB4MDMwMzA1MDZVLCAweGY2ZjYwMWY3VSwgMHgwZTBlMTIxY1UsCisgICAgMHg2MTYxYTNjMlUsIDB4MzUzNTVmNmFVLCAweDU3NTdmOWFlVSwgMHhiOWI5ZDA2OVUsCisgICAgMHg4Njg2OTExN1UsIDB4YzFjMTU4OTlVLCAweDFkMWQyNzNhVSwgMHg5ZTllYjkyN1UsCisgICAgMHhlMWUxMzhkOVUsIDB4ZjhmODEzZWJVLCAweDk4OThiMzJiVSwgMHgxMTExMzMyMlUsCisgICAgMHg2OTY5YmJkMlUsIDB4ZDlkOTcwYTlVLCAweDhlOGU4OTA3VSwgMHg5NDk0YTczM1UsCisgICAgMHg5YjliYjYyZFUsIDB4MWUxZTIyM2NVLCAweDg3ODc5MjE1VSwgMHhlOWU5MjBjOVUsCisgICAgMHhjZWNlNDk4N1UsIDB4NTU1NWZmYWFVLCAweDI4Mjg3ODUwVSwgMHhkZmRmN2FhNVUsCisgICAgMHg4YzhjOGYwM1UsIDB4YTFhMWY4NTlVLCAweDg5ODk4MDA5VSwgMHgwZDBkMTcxYVUsCisgICAgMHhiZmJmZGE2NVUsIDB4ZTZlNjMxZDdVLCAweDQyNDJjNjg0VSwgMHg2ODY4YjhkMFUsCisgICAgMHg0MTQxYzM4MlUsIDB4OTk5OWIwMjlVLCAweDJkMmQ3NzVhVSwgMHgwZjBmMTExZVUsCisgICAgMHhiMGIwY2I3YlUsIDB4NTQ1NGZjYThVLCAweGJiYmJkNjZkVSwgMHgxNjE2M2EyY1UsCit9OworCitzdGF0aWMgY29uc3QgdTMyIFRkMFsyNTZdID0geworICAgIDB4NTFmNGE3NTBVLCAweDdlNDE2NTUzVSwgMHgxYTE3YTRjM1UsIDB4M2EyNzVlOTZVLAorICAgIDB4M2JhYjZiY2JVLCAweDFmOWQ0NWYxVSwgMHhhY2ZhNThhYlUsIDB4NGJlMzAzOTNVLAorICAgIDB4MjAzMGZhNTVVLCAweGFkNzY2ZGY2VSwgMHg4OGNjNzY5MVUsIDB4ZjUwMjRjMjVVLAorICAgIDB4NGZlNWQ3ZmNVLCAweGM1MmFjYmQ3VSwgMHgyNjM1NDQ4MFUsIDB4YjU2MmEzOGZVLAorICAgIDB4ZGViMTVhNDlVLCAweDI1YmExYjY3VSwgMHg0NWVhMGU5OFUsIDB4NWRmZWMwZTFVLAorICAgIDB4YzMyZjc1MDJVLCAweDgxNGNmMDEyVSwgMHg4ZDQ2OTdhM1UsIDB4NmJkM2Y5YzZVLAorICAgIDB4MDM4ZjVmZTdVLCAweDE1OTI5Yzk1VSwgMHhiZjZkN2FlYlUsIDB4OTU1MjU5ZGFVLAorICAgIDB4ZDRiZTgzMmRVLCAweDU4NzQyMWQzVSwgMHg0OWUwNjkyOVUsIDB4OGVjOWM4NDRVLAorICAgIDB4NzVjMjg5NmFVLCAweGY0OGU3OTc4VSwgMHg5OTU4M2U2YlUsIDB4MjdiOTcxZGRVLAorICAgIDB4YmVlMTRmYjZVLCAweGYwODhhZDE3VSwgMHhjOTIwYWM2NlUsIDB4N2RjZTNhYjRVLAorICAgIDB4NjNkZjRhMThVLCAweGU1MWEzMTgyVSwgMHg5NzUxMzM2MFUsIDB4NjI1MzdmNDVVLAorICAgIDB4YjE2NDc3ZTBVLCAweGJiNmJhZTg0VSwgMHhmZTgxYTAxY1UsIDB4ZjkwODJiOTRVLAorICAgIDB4NzA0ODY4NThVLCAweDhmNDVmZDE5VSwgMHg5NGRlNmM4N1UsIDB4NTI3YmY4YjdVLAorICAgIDB4YWI3M2QzMjNVLCAweDcyNGIwMmUyVSwgMHhlMzFmOGY1N1UsIDB4NjY1NWFiMmFVLAorICAgIDB4YjJlYjI4MDdVLCAweDJmYjVjMjAzVSwgMHg4NmM1N2I5YVUsIDB4ZDMzNzA4YTVVLAorICAgIDB4MzAyODg3ZjJVLCAweDIzYmZhNWIyVSwgMHgwMjAzNmFiYVUsIDB4ZWQxNjgyNWNVLAorICAgIDB4OGFjZjFjMmJVLCAweGE3NzliNDkyVSwgMHhmMzA3ZjJmMFUsIDB4NGU2OWUyYTFVLAorICAgIDB4NjVkYWY0Y2RVLCAweDA2MDViZWQ1VSwgMHhkMTM0NjIxZlUsIDB4YzRhNmZlOGFVLAorICAgIDB4MzQyZTUzOWRVLCAweGEyZjM1NWEwVSwgMHgwNThhZTEzMlUsIDB4YTRmNmViNzVVLAorICAgIDB4MGI4M2VjMzlVLCAweDQwNjBlZmFhVSwgMHg1ZTcxOWYwNlUsIDB4YmQ2ZTEwNTFVLAorICAgIDB4M2UyMThhZjlVLCAweDk2ZGQwNjNkVSwgMHhkZDNlMDVhZVUsIDB4NGRlNmJkNDZVLAorICAgIDB4OTE1NDhkYjVVLCAweDcxYzQ1ZDA1VSwgMHgwNDA2ZDQ2ZlUsIDB4NjA1MDE1ZmZVLAorICAgIDB4MTk5OGZiMjRVLCAweGQ2YmRlOTk3VSwgMHg4OTQwNDNjY1UsIDB4NjdkOTllNzdVLAorICAgIDB4YjBlODQyYmRVLCAweDA3ODk4Yjg4VSwgMHhlNzE5NWIzOFUsIDB4NzljOGVlZGJVLAorICAgIDB4YTE3YzBhNDdVLCAweDdjNDIwZmU5VSwgMHhmODg0MWVjOVUsIDB4MDAwMDAwMDBVLAorICAgIDB4MDk4MDg2ODNVLCAweDMyMmJlZDQ4VSwgMHgxZTExNzBhY1UsIDB4NmM1YTcyNGVVLAorICAgIDB4ZmQwZWZmZmJVLCAweDBmODUzODU2VSwgMHgzZGFlZDUxZVUsIDB4MzYyZDM5MjdVLAorICAgIDB4MGEwZmQ5NjRVLCAweDY4NWNhNjIxVSwgMHg5YjViNTRkMVUsIDB4MjQzNjJlM2FVLAorICAgIDB4MGMwYTY3YjFVLCAweDkzNTdlNzBmVSwgMHhiNGVlOTZkMlUsIDB4MWI5YjkxOWVVLAorICAgIDB4ODBjMGM1NGZVLCAweDYxZGMyMGEyVSwgMHg1YTc3NGI2OVUsIDB4MWMxMjFhMTZVLAorICAgIDB4ZTI5M2JhMGFVLCAweGMwYTAyYWU1VSwgMHgzYzIyZTA0M1UsIDB4MTIxYjE3MWRVLAorICAgIDB4MGUwOTBkMGJVLCAweGYyOGJjN2FkVSwgMHgyZGI2YThiOVUsIDB4MTQxZWE5YzhVLAorICAgIDB4NTdmMTE5ODVVLCAweGFmNzUwNzRjVSwgMHhlZTk5ZGRiYlUsIDB4YTM3ZjYwZmRVLAorICAgIDB4ZjcwMTI2OWZVLCAweDVjNzJmNWJjVSwgMHg0NDY2M2JjNVUsIDB4NWJmYjdlMzRVLAorICAgIDB4OGI0MzI5NzZVLCAweGNiMjNjNmRjVSwgMHhiNmVkZmM2OFUsIDB4YjhlNGYxNjNVLAorICAgIDB4ZDczMWRjY2FVLCAweDQyNjM4NTEwVSwgMHgxMzk3MjI0MFUsIDB4ODRjNjExMjBVLAorICAgIDB4ODU0YTI0N2RVLCAweGQyYmIzZGY4VSwgMHhhZWY5MzIxMVUsIDB4YzcyOWExNmRVLAorICAgIDB4MWQ5ZTJmNGJVLCAweGRjYjIzMGYzVSwgMHgwZDg2NTJlY1UsIDB4NzdjMWUzZDBVLAorICAgIDB4MmJiMzE2NmNVLCAweGE5NzBiOTk5VSwgMHgxMTk0NDhmYVUsIDB4NDdlOTY0MjJVLAorICAgIDB4YThmYzhjYzRVLCAweGEwZjAzZjFhVSwgMHg1NjdkMmNkOFUsIDB4MjIzMzkwZWZVLAorICAgIDB4ODc0OTRlYzdVLCAweGQ5MzhkMWMxVSwgMHg4Y2NhYTJmZVUsIDB4OThkNDBiMzZVLAorICAgIDB4YTZmNTgxY2ZVLCAweGE1N2FkZTI4VSwgMHhkYWI3OGUyNlUsIDB4M2ZhZGJmYTRVLAorICAgIDB4MmMzYTlkZTRVLCAweDUwNzg5MjBkVSwgMHg2YTVmY2M5YlUsIDB4NTQ3ZTQ2NjJVLAorICAgIDB4ZjY4ZDEzYzJVLCAweDkwZDhiOGU4VSwgMHgyZTM5Zjc1ZVUsIDB4ODJjM2FmZjVVLAorICAgIDB4OWY1ZDgwYmVVLCAweDY5ZDA5MzdjVSwgMHg2ZmQ1MmRhOVUsIDB4Y2YyNTEyYjNVLAorICAgIDB4YzhhYzk5M2JVLCAweDEwMTg3ZGE3VSwgMHhlODljNjM2ZVUsIDB4ZGIzYmJiN2JVLAorICAgIDB4Y2QyNjc4MDlVLCAweDZlNTkxOGY0VSwgMHhlYzlhYjcwMVUsIDB4ODM0ZjlhYThVLAorICAgIDB4ZTY5NTZlNjVVLCAweGFhZmZlNjdlVSwgMHgyMWJjY2YwOFUsIDB4ZWYxNWU4ZTZVLAorICAgIDB4YmFlNzliZDlVLCAweDRhNmYzNmNlVSwgMHhlYTlmMDlkNFUsIDB4MjliMDdjZDZVLAorICAgIDB4MzFhNGIyYWZVLCAweDJhM2YyMzMxVSwgMHhjNmE1OTQzMFUsIDB4MzVhMjY2YzBVLAorICAgIDB4NzQ0ZWJjMzdVLCAweGZjODJjYWE2VSwgMHhlMDkwZDBiMFUsIDB4MzNhN2Q4MTVVLAorICAgIDB4ZjEwNDk4NGFVLCAweDQxZWNkYWY3VSwgMHg3ZmNkNTAwZVUsIDB4MTc5MWY2MmZVLAorICAgIDB4NzY0ZGQ2OGRVLCAweDQzZWZiMDRkVSwgMHhjY2FhNGQ1NFUsIDB4ZTQ5NjA0ZGZVLAorICAgIDB4OWVkMWI1ZTNVLCAweDRjNmE4ODFiVSwgMHhjMTJjMWZiOFUsIDB4NDY2NTUxN2ZVLAorICAgIDB4OWQ1ZWVhMDRVLCAweDAxOGMzNTVkVSwgMHhmYTg3NzQ3M1UsIDB4ZmIwYjQxMmVVLAorICAgIDB4YjM2NzFkNWFVLCAweDkyZGJkMjUyVSwgMHhlOTEwNTYzM1UsIDB4NmRkNjQ3MTNVLAorICAgIDB4OWFkNzYxOGNVLCAweDM3YTEwYzdhVSwgMHg1OWY4MTQ4ZVUsIDB4ZWIxMzNjODlVLAorICAgIDB4Y2VhOTI3ZWVVLCAweGI3NjFjOTM1VSwgMHhlMTFjZTVlZFUsIDB4N2E0N2IxM2NVLAorICAgIDB4OWNkMmRmNTlVLCAweDU1ZjI3MzNmVSwgMHgxODE0Y2U3OVUsIDB4NzNjNzM3YmZVLAorICAgIDB4NTNmN2NkZWFVLCAweDVmZmRhYTViVSwgMHhkZjNkNmYxNFUsIDB4Nzg0NGRiODZVLAorICAgIDB4Y2FhZmYzODFVLCAweGI5NjhjNDNlVSwgMHgzODI0MzQyY1UsIDB4YzJhMzQwNWZVLAorICAgIDB4MTYxZGMzNzJVLCAweGJjZTIyNTBjVSwgMHgyODNjNDk4YlUsIDB4ZmYwZDk1NDFVLAorICAgIDB4MzlhODAxNzFVLCAweDA4MGNiM2RlVSwgMHhkOGI0ZTQ5Y1UsIDB4NjQ1NmMxOTBVLAorICAgIDB4N2JjYjg0NjFVLCAweGQ1MzJiNjcwVSwgMHg0ODZjNWM3NFUsIDB4ZDBiODU3NDJVLAorfTsKK3N0YXRpYyBjb25zdCB1MzIgVGQxWzI1Nl0gPSB7CisgICAgMHg1MDUxZjRhN1UsIDB4NTM3ZTQxNjVVLCAweGMzMWExN2E0VSwgMHg5NjNhMjc1ZVUsCisgICAgMHhjYjNiYWI2YlUsIDB4ZjExZjlkNDVVLCAweGFiYWNmYTU4VSwgMHg5MzRiZTMwM1UsCisgICAgMHg1NTIwMzBmYVUsIDB4ZjZhZDc2NmRVLCAweDkxODhjYzc2VSwgMHgyNWY1MDI0Y1UsCisgICAgMHhmYzRmZTVkN1UsIDB4ZDdjNTJhY2JVLCAweDgwMjYzNTQ0VSwgMHg4ZmI1NjJhM1UsCisgICAgMHg0OWRlYjE1YVUsIDB4NjcyNWJhMWJVLCAweDk4NDVlYTBlVSwgMHhlMTVkZmVjMFUsCisgICAgMHgwMmMzMmY3NVUsIDB4MTI4MTRjZjBVLCAweGEzOGQ0Njk3VSwgMHhjNjZiZDNmOVUsCisgICAgMHhlNzAzOGY1ZlUsIDB4OTUxNTkyOWNVLCAweGViYmY2ZDdhVSwgMHhkYTk1NTI1OVUsCisgICAgMHgyZGQ0YmU4M1UsIDB4ZDM1ODc0MjFVLCAweDI5NDllMDY5VSwgMHg0NDhlYzljOFUsCisgICAgMHg2YTc1YzI4OVUsIDB4NzhmNDhlNzlVLCAweDZiOTk1ODNlVSwgMHhkZDI3Yjk3MVUsCisgICAgMHhiNmJlZTE0ZlUsIDB4MTdmMDg4YWRVLCAweDY2YzkyMGFjVSwgMHhiNDdkY2UzYVUsCisgICAgMHgxODYzZGY0YVUsIDB4ODJlNTFhMzFVLCAweDYwOTc1MTMzVSwgMHg0NTYyNTM3ZlUsCisgICAgMHhlMGIxNjQ3N1UsIDB4ODRiYjZiYWVVLCAweDFjZmU4MWEwVSwgMHg5NGY5MDgyYlUsCisgICAgMHg1ODcwNDg2OFUsIDB4MTk4ZjQ1ZmRVLCAweDg3OTRkZTZjVSwgMHhiNzUyN2JmOFUsCisgICAgMHgyM2FiNzNkM1UsIDB4ZTI3MjRiMDJVLCAweDU3ZTMxZjhmVSwgMHgyYTY2NTVhYlUsCisgICAgMHgwN2IyZWIyOFUsIDB4MDMyZmI1YzJVLCAweDlhODZjNTdiVSwgMHhhNWQzMzcwOFUsCisgICAgMHhmMjMwMjg4N1UsIDB4YjIyM2JmYTVVLCAweGJhMDIwMzZhVSwgMHg1Y2VkMTY4MlUsCisgICAgMHgyYjhhY2YxY1UsIDB4OTJhNzc5YjRVLCAweGYwZjMwN2YyVSwgMHhhMTRlNjllMlUsCisgICAgMHhjZDY1ZGFmNFUsIDB4ZDUwNjA1YmVVLCAweDFmZDEzNDYyVSwgMHg4YWM0YTZmZVUsCisgICAgMHg5ZDM0MmU1M1UsIDB4YTBhMmYzNTVVLCAweDMyMDU4YWUxVSwgMHg3NWE0ZjZlYlUsCisgICAgMHgzOTBiODNlY1UsIDB4YWE0MDYwZWZVLCAweDA2NWU3MTlmVSwgMHg1MWJkNmUxMFUsCisgICAgMHhmOTNlMjE4YVUsIDB4M2Q5NmRkMDZVLCAweGFlZGQzZTA1VSwgMHg0NjRkZTZiZFUsCisgICAgMHhiNTkxNTQ4ZFUsIDB4MDU3MWM0NWRVLCAweDZmMDQwNmQ0VSwgMHhmZjYwNTAxNVUsCisgICAgMHgyNDE5OThmYlUsIDB4OTdkNmJkZTlVLCAweGNjODk0MDQzVSwgMHg3NzY3ZDk5ZVUsCisgICAgMHhiZGIwZTg0MlUsIDB4ODgwNzg5OGJVLCAweDM4ZTcxOTViVSwgMHhkYjc5YzhlZVUsCisgICAgMHg0N2ExN2MwYVUsIDB4ZTk3YzQyMGZVLCAweGM5Zjg4NDFlVSwgMHgwMDAwMDAwMFUsCisgICAgMHg4MzA5ODA4NlUsIDB4NDgzMjJiZWRVLCAweGFjMWUxMTcwVSwgMHg0ZTZjNWE3MlUsCisgICAgMHhmYmZkMGVmZlUsIDB4NTYwZjg1MzhVLCAweDFlM2RhZWQ1VSwgMHgyNzM2MmQzOVUsCisgICAgMHg2NDBhMGZkOVUsIDB4MjE2ODVjYTZVLCAweGQxOWI1YjU0VSwgMHgzYTI0MzYyZVUsCisgICAgMHhiMTBjMGE2N1UsIDB4MGY5MzU3ZTdVLCAweGQyYjRlZTk2VSwgMHg5ZTFiOWI5MVUsCisgICAgMHg0ZjgwYzBjNVUsIDB4YTI2MWRjMjBVLCAweDY5NWE3NzRiVSwgMHgxNjFjMTIxYVUsCisgICAgMHgwYWUyOTNiYVUsIDB4ZTVjMGEwMmFVLCAweDQzM2MyMmUwVSwgMHgxZDEyMWIxN1UsCisgICAgMHgwYjBlMDkwZFUsIDB4YWRmMjhiYzdVLCAweGI5MmRiNmE4VSwgMHhjODE0MWVhOVUsCisgICAgMHg4NTU3ZjExOVUsIDB4NGNhZjc1MDdVLCAweGJiZWU5OWRkVSwgMHhmZGEzN2Y2MFUsCisgICAgMHg5ZmY3MDEyNlUsIDB4YmM1YzcyZjVVLCAweGM1NDQ2NjNiVSwgMHgzNDViZmI3ZVUsCisgICAgMHg3NjhiNDMyOVUsIDB4ZGNjYjIzYzZVLCAweDY4YjZlZGZjVSwgMHg2M2I4ZTRmMVUsCisgICAgMHhjYWQ3MzFkY1UsIDB4MTA0MjYzODVVLCAweDQwMTM5NzIyVSwgMHgyMDg0YzYxMVUsCisgICAgMHg3ZDg1NGEyNFUsIDB4ZjhkMmJiM2RVLCAweDExYWVmOTMyVSwgMHg2ZGM3MjlhMVUsCisgICAgMHg0YjFkOWUyZlUsIDB4ZjNkY2IyMzBVLCAweGVjMGQ4NjUyVSwgMHhkMDc3YzFlM1UsCisgICAgMHg2YzJiYjMxNlUsIDB4OTlhOTcwYjlVLCAweGZhMTE5NDQ4VSwgMHgyMjQ3ZTk2NFUsCisgICAgMHhjNGE4ZmM4Y1UsIDB4MWFhMGYwM2ZVLCAweGQ4NTY3ZDJjVSwgMHhlZjIyMzM5MFUsCisgICAgMHhjNzg3NDk0ZVUsIDB4YzFkOTM4ZDFVLCAweGZlOGNjYWEyVSwgMHgzNjk4ZDQwYlUsCisgICAgMHhjZmE2ZjU4MVUsIDB4MjhhNTdhZGVVLCAweDI2ZGFiNzhlVSwgMHhhNDNmYWRiZlUsCisgICAgMHhlNDJjM2E5ZFUsIDB4MGQ1MDc4OTJVLCAweDliNmE1ZmNjVSwgMHg2MjU0N2U0NlUsCisgICAgMHhjMmY2OGQxM1UsIDB4ZTg5MGQ4YjhVLCAweDVlMmUzOWY3VSwgMHhmNTgyYzNhZlUsCisgICAgMHhiZTlmNWQ4MFUsIDB4N2M2OWQwOTNVLCAweGE5NmZkNTJkVSwgMHhiM2NmMjUxMlUsCisgICAgMHgzYmM4YWM5OVUsIDB4YTcxMDE4N2RVLCAweDZlZTg5YzYzVSwgMHg3YmRiM2JiYlUsCisgICAgMHgwOWNkMjY3OFUsIDB4ZjQ2ZTU5MThVLCAweDAxZWM5YWI3VSwgMHhhODgzNGY5YVUsCisgICAgMHg2NWU2OTU2ZVUsIDB4N2VhYWZmZTZVLCAweDA4MjFiY2NmVSwgMHhlNmVmMTVlOFUsCisgICAgMHhkOWJhZTc5YlUsIDB4Y2U0YTZmMzZVLCAweGQ0ZWE5ZjA5VSwgMHhkNjI5YjA3Y1UsCisgICAgMHhhZjMxYTRiMlUsIDB4MzEyYTNmMjNVLCAweDMwYzZhNTk0VSwgMHhjMDM1YTI2NlUsCisgICAgMHgzNzc0NGViY1UsIDB4YTZmYzgyY2FVLCAweGIwZTA5MGQwVSwgMHgxNTMzYTdkOFUsCisgICAgMHg0YWYxMDQ5OFUsIDB4Zjc0MWVjZGFVLCAweDBlN2ZjZDUwVSwgMHgyZjE3OTFmNlUsCisgICAgMHg4ZDc2NGRkNlUsIDB4NGQ0M2VmYjBVLCAweDU0Y2NhYTRkVSwgMHhkZmU0OTYwNFUsCisgICAgMHhlMzllZDFiNVUsIDB4MWI0YzZhODhVLCAweGI4YzEyYzFmVSwgMHg3ZjQ2NjU1MVUsCisgICAgMHgwNDlkNWVlYVUsIDB4NWQwMThjMzVVLCAweDczZmE4Nzc0VSwgMHgyZWZiMGI0MVUsCisgICAgMHg1YWIzNjcxZFUsIDB4NTI5MmRiZDJVLCAweDMzZTkxMDU2VSwgMHgxMzZkZDY0N1UsCisgICAgMHg4YzlhZDc2MVUsIDB4N2EzN2ExMGNVLCAweDhlNTlmODE0VSwgMHg4OWViMTMzY1UsCisgICAgMHhlZWNlYTkyN1UsIDB4MzViNzYxYzlVLCAweGVkZTExY2U1VSwgMHgzYzdhNDdiMVUsCisgICAgMHg1OTljZDJkZlUsIDB4M2Y1NWYyNzNVLCAweDc5MTgxNGNlVSwgMHhiZjczYzczN1UsCisgICAgMHhlYTUzZjdjZFUsIDB4NWI1ZmZkYWFVLCAweDE0ZGYzZDZmVSwgMHg4Njc4NDRkYlUsCisgICAgMHg4MWNhYWZmM1UsIDB4M2ViOTY4YzRVLCAweDJjMzgyNDM0VSwgMHg1ZmMyYTM0MFUsCisgICAgMHg3MjE2MWRjM1UsIDB4MGNiY2UyMjVVLCAweDhiMjgzYzQ5VSwgMHg0MWZmMGQ5NVUsCisgICAgMHg3MTM5YTgwMVUsIDB4ZGUwODBjYjNVLCAweDljZDhiNGU0VSwgMHg5MDY0NTZjMVUsCisgICAgMHg2MTdiY2I4NFUsIDB4NzBkNTMyYjZVLCAweDc0NDg2YzVjVSwgMHg0MmQwYjg1N1UsCit9Oworc3RhdGljIGNvbnN0IHUzMiBUZDJbMjU2XSA9IHsKKyAgICAweGE3NTA1MWY0VSwgMHg2NTUzN2U0MVUsIDB4YTRjMzFhMTdVLCAweDVlOTYzYTI3VSwKKyAgICAweDZiY2IzYmFiVSwgMHg0NWYxMWY5ZFUsIDB4NThhYmFjZmFVLCAweDAzOTM0YmUzVSwKKyAgICAweGZhNTUyMDMwVSwgMHg2ZGY2YWQ3NlUsIDB4NzY5MTg4Y2NVLCAweDRjMjVmNTAyVSwKKyAgICAweGQ3ZmM0ZmU1VSwgMHhjYmQ3YzUyYVUsIDB4NDQ4MDI2MzVVLCAweGEzOGZiNTYyVSwKKyAgICAweDVhNDlkZWIxVSwgMHgxYjY3MjViYVUsIDB4MGU5ODQ1ZWFVLCAweGMwZTE1ZGZlVSwKKyAgICAweDc1MDJjMzJmVSwgMHhmMDEyODE0Y1UsIDB4OTdhMzhkNDZVLCAweGY5YzY2YmQzVSwKKyAgICAweDVmZTcwMzhmVSwgMHg5Yzk1MTU5MlUsIDB4N2FlYmJmNmRVLCAweDU5ZGE5NTUyVSwKKyAgICAweDgzMmRkNGJlVSwgMHgyMWQzNTg3NFUsIDB4NjkyOTQ5ZTBVLCAweGM4NDQ4ZWM5VSwKKyAgICAweDg5NmE3NWMyVSwgMHg3OTc4ZjQ4ZVUsIDB4M2U2Yjk5NThVLCAweDcxZGQyN2I5VSwKKyAgICAweDRmYjZiZWUxVSwgMHhhZDE3ZjA4OFUsIDB4YWM2NmM5MjBVLCAweDNhYjQ3ZGNlVSwKKyAgICAweDRhMTg2M2RmVSwgMHgzMTgyZTUxYVUsIDB4MzM2MDk3NTFVLCAweDdmNDU2MjUzVSwKKyAgICAweDc3ZTBiMTY0VSwgMHhhZTg0YmI2YlUsIDB4YTAxY2ZlODFVLCAweDJiOTRmOTA4VSwKKyAgICAweDY4NTg3MDQ4VSwgMHhmZDE5OGY0NVUsIDB4NmM4Nzk0ZGVVLCAweGY4Yjc1MjdiVSwKKyAgICAweGQzMjNhYjczVSwgMHgwMmUyNzI0YlUsIDB4OGY1N2UzMWZVLCAweGFiMmE2NjU1VSwKKyAgICAweDI4MDdiMmViVSwgMHhjMjAzMmZiNVUsIDB4N2I5YTg2YzVVLCAweDA4YTVkMzM3VSwKKyAgICAweDg3ZjIzMDI4VSwgMHhhNWIyMjNiZlUsIDB4NmFiYTAyMDNVLCAweDgyNWNlZDE2VSwKKyAgICAweDFjMmI4YWNmVSwgMHhiNDkyYTc3OVUsIDB4ZjJmMGYzMDdVLCAweGUyYTE0ZTY5VSwKKyAgICAweGY0Y2Q2NWRhVSwgMHhiZWQ1MDYwNVUsIDB4NjIxZmQxMzRVLCAweGZlOGFjNGE2VSwKKyAgICAweDUzOWQzNDJlVSwgMHg1NWEwYTJmM1UsIDB4ZTEzMjA1OGFVLCAweGViNzVhNGY2VSwKKyAgICAweGVjMzkwYjgzVSwgMHhlZmFhNDA2MFUsIDB4OWYwNjVlNzFVLCAweDEwNTFiZDZlVSwKKyAgICAweDhhZjkzZTIxVSwgMHgwNjNkOTZkZFUsIDB4MDVhZWRkM2VVLCAweGJkNDY0ZGU2VSwKKyAgICAweDhkYjU5MTU0VSwgMHg1ZDA1NzFjNFUsIDB4ZDQ2ZjA0MDZVLCAweDE1ZmY2MDUwVSwKKyAgICAweGZiMjQxOTk4VSwgMHhlOTk3ZDZiZFUsIDB4NDNjYzg5NDBVLCAweDllNzc2N2Q5VSwKKyAgICAweDQyYmRiMGU4VSwgMHg4Yjg4MDc4OVUsIDB4NWIzOGU3MTlVLCAweGVlZGI3OWM4VSwKKyAgICAweDBhNDdhMTdjVSwgMHgwZmU5N2M0MlUsIDB4MWVjOWY4ODRVLCAweDAwMDAwMDAwVSwKKyAgICAweDg2ODMwOTgwVSwgMHhlZDQ4MzIyYlUsIDB4NzBhYzFlMTFVLCAweDcyNGU2YzVhVSwKKyAgICAweGZmZmJmZDBlVSwgMHgzODU2MGY4NVUsIDB4ZDUxZTNkYWVVLCAweDM5MjczNjJkVSwKKyAgICAweGQ5NjQwYTBmVSwgMHhhNjIxNjg1Y1UsIDB4NTRkMTliNWJVLCAweDJlM2EyNDM2VSwKKyAgICAweDY3YjEwYzBhVSwgMHhlNzBmOTM1N1UsIDB4OTZkMmI0ZWVVLCAweDkxOWUxYjliVSwKKyAgICAweGM1NGY4MGMwVSwgMHgyMGEyNjFkY1UsIDB4NGI2OTVhNzdVLCAweDFhMTYxYzEyVSwKKyAgICAweGJhMGFlMjkzVSwgMHgyYWU1YzBhMFUsIDB4ZTA0MzNjMjJVLCAweDE3MWQxMjFiVSwKKyAgICAweDBkMGIwZTA5VSwgMHhjN2FkZjI4YlUsIDB4YThiOTJkYjZVLCAweGE5YzgxNDFlVSwKKyAgICAweDE5ODU1N2YxVSwgMHgwNzRjYWY3NVUsIDB4ZGRiYmVlOTlVLCAweDYwZmRhMzdmVSwKKyAgICAweDI2OWZmNzAxVSwgMHhmNWJjNWM3MlUsIDB4M2JjNTQ0NjZVLCAweDdlMzQ1YmZiVSwKKyAgICAweDI5NzY4YjQzVSwgMHhjNmRjY2IyM1UsIDB4ZmM2OGI2ZWRVLCAweGYxNjNiOGU0VSwKKyAgICAweGRjY2FkNzMxVSwgMHg4NTEwNDI2M1UsIDB4MjI0MDEzOTdVLCAweDExMjA4NGM2VSwKKyAgICAweDI0N2Q4NTRhVSwgMHgzZGY4ZDJiYlUsIDB4MzIxMWFlZjlVLCAweGExNmRjNzI5VSwKKyAgICAweDJmNGIxZDllVSwgMHgzMGYzZGNiMlUsIDB4NTJlYzBkODZVLCAweGUzZDA3N2MxVSwKKyAgICAweDE2NmMyYmIzVSwgMHhiOTk5YTk3MFUsIDB4NDhmYTExOTRVLCAweDY0MjI0N2U5VSwKKyAgICAweDhjYzRhOGZjVSwgMHgzZjFhYTBmMFUsIDB4MmNkODU2N2RVLCAweDkwZWYyMjMzVSwKKyAgICAweDRlYzc4NzQ5VSwgMHhkMWMxZDkzOFUsIDB4YTJmZThjY2FVLCAweDBiMzY5OGQ0VSwKKyAgICAweDgxY2ZhNmY1VSwgMHhkZTI4YTU3YVUsIDB4OGUyNmRhYjdVLCAweGJmYTQzZmFkVSwKKyAgICAweDlkZTQyYzNhVSwgMHg5MjBkNTA3OFUsIDB4Y2M5YjZhNWZVLCAweDQ2NjI1NDdlVSwKKyAgICAweDEzYzJmNjhkVSwgMHhiOGU4OTBkOFUsIDB4Zjc1ZTJlMzlVLCAweGFmZjU4MmMzVSwKKyAgICAweDgwYmU5ZjVkVSwgMHg5MzdjNjlkMFUsIDB4MmRhOTZmZDVVLCAweDEyYjNjZjI1VSwKKyAgICAweDk5M2JjOGFjVSwgMHg3ZGE3MTAxOFUsIDB4NjM2ZWU4OWNVLCAweGJiN2JkYjNiVSwKKyAgICAweDc4MDljZDI2VSwgMHgxOGY0NmU1OVUsIDB4YjcwMWVjOWFVLCAweDlhYTg4MzRmVSwKKyAgICAweDZlNjVlNjk1VSwgMHhlNjdlYWFmZlUsIDB4Y2YwODIxYmNVLCAweGU4ZTZlZjE1VSwKKyAgICAweDliZDliYWU3VSwgMHgzNmNlNGE2ZlUsIDB4MDlkNGVhOWZVLCAweDdjZDYyOWIwVSwKKyAgICAweGIyYWYzMWE0VSwgMHgyMzMxMmEzZlUsIDB4OTQzMGM2YTVVLCAweDY2YzAzNWEyVSwKKyAgICAweGJjMzc3NDRlVSwgMHhjYWE2ZmM4MlUsIDB4ZDBiMGUwOTBVLCAweGQ4MTUzM2E3VSwKKyAgICAweDk4NGFmMTA0VSwgMHhkYWY3NDFlY1UsIDB4NTAwZTdmY2RVLCAweGY2MmYxNzkxVSwKKyAgICAweGQ2OGQ3NjRkVSwgMHhiMDRkNDNlZlUsIDB4NGQ1NGNjYWFVLCAweDA0ZGZlNDk2VSwKKyAgICAweGI1ZTM5ZWQxVSwgMHg4ODFiNGM2YVUsIDB4MWZiOGMxMmNVLCAweDUxN2Y0NjY1VSwKKyAgICAweGVhMDQ5ZDVlVSwgMHgzNTVkMDE4Y1UsIDB4NzQ3M2ZhODdVLCAweDQxMmVmYjBiVSwKKyAgICAweDFkNWFiMzY3VSwgMHhkMjUyOTJkYlUsIDB4NTYzM2U5MTBVLCAweDQ3MTM2ZGQ2VSwKKyAgICAweDYxOGM5YWQ3VSwgMHgwYzdhMzdhMVUsIDB4MTQ4ZTU5ZjhVLCAweDNjODllYjEzVSwKKyAgICAweDI3ZWVjZWE5VSwgMHhjOTM1Yjc2MVUsIDB4ZTVlZGUxMWNVLCAweGIxM2M3YTQ3VSwKKyAgICAweGRmNTk5Y2QyVSwgMHg3MzNmNTVmMlUsIDB4Y2U3OTE4MTRVLCAweDM3YmY3M2M3VSwKKyAgICAweGNkZWE1M2Y3VSwgMHhhYTViNWZmZFUsIDB4NmYxNGRmM2RVLCAweGRiODY3ODQ0VSwKKyAgICAweGYzODFjYWFmVSwgMHhjNDNlYjk2OFUsIDB4MzQyYzM4MjRVLCAweDQwNWZjMmEzVSwKKyAgICAweGMzNzIxNjFkVSwgMHgyNTBjYmNlMlUsIDB4NDk4YjI4M2NVLCAweDk1NDFmZjBkVSwKKyAgICAweDAxNzEzOWE4VSwgMHhiM2RlMDgwY1UsIDB4ZTQ5Y2Q4YjRVLCAweGMxOTA2NDU2VSwKKyAgICAweDg0NjE3YmNiVSwgMHhiNjcwZDUzMlUsIDB4NWM3NDQ4NmNVLCAweDU3NDJkMGI4VSwKK307CitzdGF0aWMgY29uc3QgdTMyIFRkM1syNTZdID0geworICAgIDB4ZjRhNzUwNTFVLCAweDQxNjU1MzdlVSwgMHgxN2E0YzMxYVUsIDB4Mjc1ZTk2M2FVLAorICAgIDB4YWI2YmNiM2JVLCAweDlkNDVmMTFmVSwgMHhmYTU4YWJhY1UsIDB4ZTMwMzkzNGJVLAorICAgIDB4MzBmYTU1MjBVLCAweDc2NmRmNmFkVSwgMHhjYzc2OTE4OFUsIDB4MDI0YzI1ZjVVLAorICAgIDB4ZTVkN2ZjNGZVLCAweDJhY2JkN2M1VSwgMHgzNTQ0ODAyNlUsIDB4NjJhMzhmYjVVLAorICAgIDB4YjE1YTQ5ZGVVLCAweGJhMWI2NzI1VSwgMHhlYTBlOTg0NVUsIDB4ZmVjMGUxNWRVLAorICAgIDB4MmY3NTAyYzNVLCAweDRjZjAxMjgxVSwgMHg0Njk3YTM4ZFUsIDB4ZDNmOWM2NmJVLAorICAgIDB4OGY1ZmU3MDNVLCAweDkyOWM5NTE1VSwgMHg2ZDdhZWJiZlUsIDB4NTI1OWRhOTVVLAorICAgIDB4YmU4MzJkZDRVLCAweDc0MjFkMzU4VSwgMHhlMDY5Mjk0OVUsIDB4YzljODQ0OGVVLAorICAgIDB4YzI4OTZhNzVVLCAweDhlNzk3OGY0VSwgMHg1ODNlNmI5OVUsIDB4Yjk3MWRkMjdVLAorICAgIDB4ZTE0ZmI2YmVVLCAweDg4YWQxN2YwVSwgMHgyMGFjNjZjOVUsIDB4Y2UzYWI0N2RVLAorICAgIDB4ZGY0YTE4NjNVLCAweDFhMzE4MmU1VSwgMHg1MTMzNjA5N1UsIDB4NTM3ZjQ1NjJVLAorICAgIDB4NjQ3N2UwYjFVLCAweDZiYWU4NGJiVSwgMHg4MWEwMWNmZVUsIDB4MDgyYjk0ZjlVLAorICAgIDB4NDg2ODU4NzBVLCAweDQ1ZmQxOThmVSwgMHhkZTZjODc5NFUsIDB4N2JmOGI3NTJVLAorICAgIDB4NzNkMzIzYWJVLCAweDRiMDJlMjcyVSwgMHgxZjhmNTdlM1UsIDB4NTVhYjJhNjZVLAorICAgIDB4ZWIyODA3YjJVLCAweGI1YzIwMzJmVSwgMHhjNTdiOWE4NlUsIDB4MzcwOGE1ZDNVLAorICAgIDB4Mjg4N2YyMzBVLCAweGJmYTViMjIzVSwgMHgwMzZhYmEwMlUsIDB4MTY4MjVjZWRVLAorICAgIDB4Y2YxYzJiOGFVLCAweDc5YjQ5MmE3VSwgMHgwN2YyZjBmM1UsIDB4NjllMmExNGVVLAorICAgIDB4ZGFmNGNkNjVVLCAweDA1YmVkNTA2VSwgMHgzNDYyMWZkMVUsIDB4YTZmZThhYzRVLAorICAgIDB4MmU1MzlkMzRVLCAweGYzNTVhMGEyVSwgMHg4YWUxMzIwNVUsIDB4ZjZlYjc1YTRVLAorICAgIDB4ODNlYzM5MGJVLCAweDYwZWZhYTQwVSwgMHg3MTlmMDY1ZVUsIDB4NmUxMDUxYmRVLAorICAgIDB4MjE4YWY5M2VVLCAweGRkMDYzZDk2VSwgMHgzZTA1YWVkZFUsIDB4ZTZiZDQ2NGRVLAorICAgIDB4NTQ4ZGI1OTFVLCAweGM0NWQwNTcxVSwgMHgwNmQ0NmYwNFUsIDB4NTAxNWZmNjBVLAorICAgIDB4OThmYjI0MTlVLCAweGJkZTk5N2Q2VSwgMHg0MDQzY2M4OVUsIDB4ZDk5ZTc3NjdVLAorICAgIDB4ZTg0MmJkYjBVLCAweDg5OGI4ODA3VSwgMHgxOTViMzhlN1UsIDB4YzhlZWRiNzlVLAorICAgIDB4N2MwYTQ3YTFVLCAweDQyMGZlOTdjVSwgMHg4NDFlYzlmOFUsIDB4MDAwMDAwMDBVLAorICAgIDB4ODA4NjgzMDlVLCAweDJiZWQ0ODMyVSwgMHgxMTcwYWMxZVUsIDB4NWE3MjRlNmNVLAorICAgIDB4MGVmZmZiZmRVLCAweDg1Mzg1NjBmVSwgMHhhZWQ1MWUzZFUsIDB4MmQzOTI3MzZVLAorICAgIDB4MGZkOTY0MGFVLCAweDVjYTYyMTY4VSwgMHg1YjU0ZDE5YlUsIDB4MzYyZTNhMjRVLAorICAgIDB4MGE2N2IxMGNVLCAweDU3ZTcwZjkzVSwgMHhlZTk2ZDJiNFUsIDB4OWI5MTllMWJVLAorICAgIDB4YzBjNTRmODBVLCAweGRjMjBhMjYxVSwgMHg3NzRiNjk1YVUsIDB4MTIxYTE2MWNVLAorICAgIDB4OTNiYTBhZTJVLCAweGEwMmFlNWMwVSwgMHgyMmUwNDMzY1UsIDB4MWIxNzFkMTJVLAorICAgIDB4MDkwZDBiMGVVLCAweDhiYzdhZGYyVSwgMHhiNmE4YjkyZFUsIDB4MWVhOWM4MTRVLAorICAgIDB4ZjExOTg1NTdVLCAweDc1MDc0Y2FmVSwgMHg5OWRkYmJlZVUsIDB4N2Y2MGZkYTNVLAorICAgIDB4MDEyNjlmZjdVLCAweDcyZjViYzVjVSwgMHg2NjNiYzU0NFUsIDB4ZmI3ZTM0NWJVLAorICAgIDB4NDMyOTc2OGJVLCAweDIzYzZkY2NiVSwgMHhlZGZjNjhiNlUsIDB4ZTRmMTYzYjhVLAorICAgIDB4MzFkY2NhZDdVLCAweDYzODUxMDQyVSwgMHg5NzIyNDAxM1UsIDB4YzYxMTIwODRVLAorICAgIDB4NGEyNDdkODVVLCAweGJiM2RmOGQyVSwgMHhmOTMyMTFhZVUsIDB4MjlhMTZkYzdVLAorICAgIDB4OWUyZjRiMWRVLCAweGIyMzBmM2RjVSwgMHg4NjUyZWMwZFUsIDB4YzFlM2QwNzdVLAorICAgIDB4YjMxNjZjMmJVLCAweDcwYjk5OWE5VSwgMHg5NDQ4ZmExMVUsIDB4ZTk2NDIyNDdVLAorICAgIDB4ZmM4Y2M0YThVLCAweGYwM2YxYWEwVSwgMHg3ZDJjZDg1NlUsIDB4MzM5MGVmMjJVLAorICAgIDB4NDk0ZWM3ODdVLCAweDM4ZDFjMWQ5VSwgMHhjYWEyZmU4Y1UsIDB4ZDQwYjM2OThVLAorICAgIDB4ZjU4MWNmYTZVLCAweDdhZGUyOGE1VSwgMHhiNzhlMjZkYVUsIDB4YWRiZmE0M2ZVLAorICAgIDB4M2E5ZGU0MmNVLCAweDc4OTIwZDUwVSwgMHg1ZmNjOWI2YVUsIDB4N2U0NjYyNTRVLAorICAgIDB4OGQxM2MyZjZVLCAweGQ4YjhlODkwVSwgMHgzOWY3NWUyZVUsIDB4YzNhZmY1ODJVLAorICAgIDB4NWQ4MGJlOWZVLCAweGQwOTM3YzY5VSwgMHhkNTJkYTk2ZlUsIDB4MjUxMmIzY2ZVLAorICAgIDB4YWM5OTNiYzhVLCAweDE4N2RhNzEwVSwgMHg5YzYzNmVlOFUsIDB4M2JiYjdiZGJVLAorICAgIDB4MjY3ODA5Y2RVLCAweDU5MThmNDZlVSwgMHg5YWI3MDFlY1UsIDB4NGY5YWE4ODNVLAorICAgIDB4OTU2ZTY1ZTZVLCAweGZmZTY3ZWFhVSwgMHhiY2NmMDgyMVUsIDB4MTVlOGU2ZWZVLAorICAgIDB4ZTc5YmQ5YmFVLCAweDZmMzZjZTRhVSwgMHg5ZjA5ZDRlYVUsIDB4YjA3Y2Q2MjlVLAorICAgIDB4YTRiMmFmMzFVLCAweDNmMjMzMTJhVSwgMHhhNTk0MzBjNlUsIDB4YTI2NmMwMzVVLAorICAgIDB4NGViYzM3NzRVLCAweDgyY2FhNmZjVSwgMHg5MGQwYjBlMFUsIDB4YTdkODE1MzNVLAorICAgIDB4MDQ5ODRhZjFVLCAweGVjZGFmNzQxVSwgMHhjZDUwMGU3ZlUsIDB4OTFmNjJmMTdVLAorICAgIDB4NGRkNjhkNzZVLCAweGVmYjA0ZDQzVSwgMHhhYTRkNTRjY1UsIDB4OTYwNGRmZTRVLAorICAgIDB4ZDFiNWUzOWVVLCAweDZhODgxYjRjVSwgMHgyYzFmYjhjMVUsIDB4NjU1MTdmNDZVLAorICAgIDB4NWVlYTA0OWRVLCAweDhjMzU1ZDAxVSwgMHg4Nzc0NzNmYVUsIDB4MGI0MTJlZmJVLAorICAgIDB4NjcxZDVhYjNVLCAweGRiZDI1MjkyVSwgMHgxMDU2MzNlOVUsIDB4ZDY0NzEzNmRVLAorICAgIDB4ZDc2MThjOWFVLCAweGExMGM3YTM3VSwgMHhmODE0OGU1OVUsIDB4MTMzYzg5ZWJVLAorICAgIDB4YTkyN2VlY2VVLCAweDYxYzkzNWI3VSwgMHgxY2U1ZWRlMVUsIDB4NDdiMTNjN2FVLAorICAgIDB4ZDJkZjU5OWNVLCAweGYyNzMzZjU1VSwgMHgxNGNlNzkxOFUsIDB4YzczN2JmNzNVLAorICAgIDB4ZjdjZGVhNTNVLCAweGZkYWE1YjVmVSwgMHgzZDZmMTRkZlUsIDB4NDRkYjg2NzhVLAorICAgIDB4YWZmMzgxY2FVLCAweDY4YzQzZWI5VSwgMHgyNDM0MmMzOFUsIDB4YTM0MDVmYzJVLAorICAgIDB4MWRjMzcyMTZVLCAweGUyMjUwY2JjVSwgMHgzYzQ5OGIyOFUsIDB4MGQ5NTQxZmZVLAorICAgIDB4YTgwMTcxMzlVLCAweDBjYjNkZTA4VSwgMHhiNGU0OWNkOFUsIDB4NTZjMTkwNjRVLAorICAgIDB4Y2I4NDYxN2JVLCAweDMyYjY3MGQ1VSwgMHg2YzVjNzQ0OFUsIDB4Yjg1NzQyZDBVLAorfTsKK3N0YXRpYyBjb25zdCB1OCBUZDRbMjU2XSA9IHsKKyAgICAweDUyVSwgMHgwOVUsIDB4NmFVLCAweGQ1VSwgMHgzMFUsIDB4MzZVLCAweGE1VSwgMHgzOFUsCisgICAgMHhiZlUsIDB4NDBVLCAweGEzVSwgMHg5ZVUsIDB4ODFVLCAweGYzVSwgMHhkN1UsIDB4ZmJVLAorICAgIDB4N2NVLCAweGUzVSwgMHgzOVUsIDB4ODJVLCAweDliVSwgMHgyZlUsIDB4ZmZVLCAweDg3VSwKKyAgICAweDM0VSwgMHg4ZVUsIDB4NDNVLCAweDQ0VSwgMHhjNFUsIDB4ZGVVLCAweGU5VSwgMHhjYlUsCisgICAgMHg1NFUsIDB4N2JVLCAweDk0VSwgMHgzMlUsIDB4YTZVLCAweGMyVSwgMHgyM1UsIDB4M2RVLAorICAgIDB4ZWVVLCAweDRjVSwgMHg5NVUsIDB4MGJVLCAweDQyVSwgMHhmYVUsIDB4YzNVLCAweDRlVSwKKyAgICAweDA4VSwgMHgyZVUsIDB4YTFVLCAweDY2VSwgMHgyOFUsIDB4ZDlVLCAweDI0VSwgMHhiMlUsCisgICAgMHg3NlUsIDB4NWJVLCAweGEyVSwgMHg0OVUsIDB4NmRVLCAweDhiVSwgMHhkMVUsIDB4MjVVLAorICAgIDB4NzJVLCAweGY4VSwgMHhmNlUsIDB4NjRVLCAweDg2VSwgMHg2OFUsIDB4OThVLCAweDE2VSwKKyAgICAweGQ0VSwgMHhhNFUsIDB4NWNVLCAweGNjVSwgMHg1ZFUsIDB4NjVVLCAweGI2VSwgMHg5MlUsCisgICAgMHg2Y1UsIDB4NzBVLCAweDQ4VSwgMHg1MFUsIDB4ZmRVLCAweGVkVSwgMHhiOVUsIDB4ZGFVLAorICAgIDB4NWVVLCAweDE1VSwgMHg0NlUsIDB4NTdVLCAweGE3VSwgMHg4ZFUsIDB4OWRVLCAweDg0VSwKKyAgICAweDkwVSwgMHhkOFUsIDB4YWJVLCAweDAwVSwgMHg4Y1UsIDB4YmNVLCAweGQzVSwgMHgwYVUsCisgICAgMHhmN1UsIDB4ZTRVLCAweDU4VSwgMHgwNVUsIDB4YjhVLCAweGIzVSwgMHg0NVUsIDB4MDZVLAorICAgIDB4ZDBVLCAweDJjVSwgMHgxZVUsIDB4OGZVLCAweGNhVSwgMHgzZlUsIDB4MGZVLCAweDAyVSwKKyAgICAweGMxVSwgMHhhZlUsIDB4YmRVLCAweDAzVSwgMHgwMVUsIDB4MTNVLCAweDhhVSwgMHg2YlUsCisgICAgMHgzYVUsIDB4OTFVLCAweDExVSwgMHg0MVUsIDB4NGZVLCAweDY3VSwgMHhkY1UsIDB4ZWFVLAorICAgIDB4OTdVLCAweGYyVSwgMHhjZlUsIDB4Y2VVLCAweGYwVSwgMHhiNFUsIDB4ZTZVLCAweDczVSwKKyAgICAweDk2VSwgMHhhY1UsIDB4NzRVLCAweDIyVSwgMHhlN1UsIDB4YWRVLCAweDM1VSwgMHg4NVUsCisgICAgMHhlMlUsIDB4ZjlVLCAweDM3VSwgMHhlOFUsIDB4MWNVLCAweDc1VSwgMHhkZlUsIDB4NmVVLAorICAgIDB4NDdVLCAweGYxVSwgMHgxYVUsIDB4NzFVLCAweDFkVSwgMHgyOVUsIDB4YzVVLCAweDg5VSwKKyAgICAweDZmVSwgMHhiN1UsIDB4NjJVLCAweDBlVSwgMHhhYVUsIDB4MThVLCAweGJlVSwgMHgxYlUsCisgICAgMHhmY1UsIDB4NTZVLCAweDNlVSwgMHg0YlUsIDB4YzZVLCAweGQyVSwgMHg3OVUsIDB4MjBVLAorICAgIDB4OWFVLCAweGRiVSwgMHhjMFUsIDB4ZmVVLCAweDc4VSwgMHhjZFUsIDB4NWFVLCAweGY0VSwKKyAgICAweDFmVSwgMHhkZFUsIDB4YThVLCAweDMzVSwgMHg4OFUsIDB4MDdVLCAweGM3VSwgMHgzMVUsCisgICAgMHhiMVUsIDB4MTJVLCAweDEwVSwgMHg1OVUsIDB4MjdVLCAweDgwVSwgMHhlY1UsIDB4NWZVLAorICAgIDB4NjBVLCAweDUxVSwgMHg3ZlUsIDB4YTlVLCAweDE5VSwgMHhiNVUsIDB4NGFVLCAweDBkVSwKKyAgICAweDJkVSwgMHhlNVUsIDB4N2FVLCAweDlmVSwgMHg5M1UsIDB4YzlVLCAweDljVSwgMHhlZlUsCisgICAgMHhhMFUsIDB4ZTBVLCAweDNiVSwgMHg0ZFUsIDB4YWVVLCAweDJhVSwgMHhmNVUsIDB4YjBVLAorICAgIDB4YzhVLCAweGViVSwgMHhiYlUsIDB4M2NVLCAweDgzVSwgMHg1M1UsIDB4OTlVLCAweDYxVSwKKyAgICAweDE3VSwgMHgyYlUsIDB4MDRVLCAweDdlVSwgMHhiYVUsIDB4NzdVLCAweGQ2VSwgMHgyNlUsCisgICAgMHhlMVUsIDB4NjlVLCAweDE0VSwgMHg2M1UsIDB4NTVVLCAweDIxVSwgMHgwY1UsIDB4N2RVLAorfTsKK3N0YXRpYyBjb25zdCB1MzIgcmNvbltdID0geworCTB4MDEwMDAwMDAsIDB4MDIwMDAwMDAsIDB4MDQwMDAwMDAsIDB4MDgwMDAwMDAsCisJMHgxMDAwMDAwMCwgMHgyMDAwMDAwMCwgMHg0MDAwMDAwMCwgMHg4MDAwMDAwMCwKKwkweDFCMDAwMDAwLCAweDM2MDAwMDAwLCAvKiBmb3IgMTI4LWJpdCBibG9ja3MsIFJpam5kYWVsIG5ldmVyIHVzZXMgbW9yZSB0aGFuIDEwIHJjb24gdmFsdWVzICovCit9OworCisvKioKKyAqIEV4cGFuZCB0aGUgY2lwaGVyIGtleSBpbnRvIHRoZSBlbmNyeXB0aW9uIGtleSBzY2hlZHVsZS4KKyAqLworaW50IHByaXZhdGVfQUVTX3NldF9lbmNyeXB0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5LCBjb25zdCBpbnQgYml0cywKKwkJCUFFU19LRVkgKmtleSkgeworCisJdTMyICpyazsKKyAgIAlpbnQgaSA9IDA7CisJdTMyIHRlbXA7CisKKwlpZiAoIXVzZXJLZXkgfHwgIWtleSkKKwkJcmV0dXJuIC0xOworCWlmIChiaXRzICE9IDEyOCAmJiBiaXRzICE9IDE5MiAmJiBiaXRzICE9IDI1NikKKwkJcmV0dXJuIC0yOworCisJcmsgPSBrZXktPnJkX2tleTsKKworCWlmIChiaXRzPT0xMjgpCisJCWtleS0+cm91bmRzID0gMTA7CisJZWxzZSBpZiAoYml0cz09MTkyKQorCQlrZXktPnJvdW5kcyA9IDEyOworCWVsc2UKKwkJa2V5LT5yb3VuZHMgPSAxNDsKKworCXJrWzBdID0gR0VUVTMyKHVzZXJLZXkgICAgICk7CisJcmtbMV0gPSBHRVRVMzIodXNlcktleSArICA0KTsKKwlya1syXSA9IEdFVFUzMih1c2VyS2V5ICsgIDgpOworCXJrWzNdID0gR0VUVTMyKHVzZXJLZXkgKyAxMik7CisJaWYgKGJpdHMgPT0gMTI4KSB7CisJCXdoaWxlICgxKSB7CisJCQl0ZW1wICA9IHJrWzNdOworCQkJcmtbNF0gPSBya1swXSBeCisJCQkJKFRlMlsodGVtcCA+PiAxNikgJiAweGZmXSAmIDB4ZmYwMDAwMDApIF4KKwkJCQkoVGUzWyh0ZW1wID4+ICA4KSAmIDB4ZmZdICYgMHgwMGZmMDAwMCkgXgorCQkJCShUZTBbKHRlbXAgICAgICApICYgMHhmZl0gJiAweDAwMDBmZjAwKSBeCisJCQkJKFRlMVsodGVtcCA+PiAyNCkgICAgICAgXSAmIDB4MDAwMDAwZmYpIF4KKwkJCQlyY29uW2ldOworCQkJcmtbNV0gPSBya1sxXSBeIHJrWzRdOworCQkJcmtbNl0gPSBya1syXSBeIHJrWzVdOworCQkJcmtbN10gPSBya1szXSBeIHJrWzZdOworCQkJaWYgKCsraSA9PSAxMCkgeworCQkJCXJldHVybiAwOworCQkJfQorCQkJcmsgKz0gNDsKKwkJfQorCX0KKwlya1s0XSA9IEdFVFUzMih1c2VyS2V5ICsgMTYpOworCXJrWzVdID0gR0VUVTMyKHVzZXJLZXkgKyAyMCk7CisJaWYgKGJpdHMgPT0gMTkyKSB7CisJCXdoaWxlICgxKSB7CisJCQl0ZW1wID0gcmtbIDVdOworCQkJcmtbIDZdID0gcmtbIDBdIF4KKwkJCQkoVGUyWyh0ZW1wID4+IDE2KSAmIDB4ZmZdICYgMHhmZjAwMDAwMCkgXgorCQkJCShUZTNbKHRlbXAgPj4gIDgpICYgMHhmZl0gJiAweDAwZmYwMDAwKSBeCisJCQkJKFRlMFsodGVtcCAgICAgICkgJiAweGZmXSAmIDB4MDAwMGZmMDApIF4KKwkJCQkoVGUxWyh0ZW1wID4+IDI0KSAgICAgICBdICYgMHgwMDAwMDBmZikgXgorCQkJCXJjb25baV07CisJCQlya1sgN10gPSBya1sgMV0gXiBya1sgNl07CisJCQlya1sgOF0gPSBya1sgMl0gXiBya1sgN107CisJCQlya1sgOV0gPSBya1sgM10gXiBya1sgOF07CisJCQlpZiAoKytpID09IDgpIHsKKwkJCQlyZXR1cm4gMDsKKwkJCX0KKwkJCXJrWzEwXSA9IHJrWyA0XSBeIHJrWyA5XTsKKwkJCXJrWzExXSA9IHJrWyA1XSBeIHJrWzEwXTsKKwkJCXJrICs9IDY7CisJCX0KKwl9CisJcmtbNl0gPSBHRVRVMzIodXNlcktleSArIDI0KTsKKwlya1s3XSA9IEdFVFUzMih1c2VyS2V5ICsgMjgpOworCWlmIChiaXRzID09IDI1NikgeworCQl3aGlsZSAoMSkgeworCQkJdGVtcCA9IHJrWyA3XTsKKwkJCXJrWyA4XSA9IHJrWyAwXSBeCisJCQkJKFRlMlsodGVtcCA+PiAxNikgJiAweGZmXSAmIDB4ZmYwMDAwMDApIF4KKwkJCQkoVGUzWyh0ZW1wID4+ICA4KSAmIDB4ZmZdICYgMHgwMGZmMDAwMCkgXgorCQkJCShUZTBbKHRlbXAgICAgICApICYgMHhmZl0gJiAweDAwMDBmZjAwKSBeCisJCQkJKFRlMVsodGVtcCA+PiAyNCkgICAgICAgXSAmIDB4MDAwMDAwZmYpIF4KKwkJCQlyY29uW2ldOworCQkJcmtbIDldID0gcmtbIDFdIF4gcmtbIDhdOworCQkJcmtbMTBdID0gcmtbIDJdIF4gcmtbIDldOworCQkJcmtbMTFdID0gcmtbIDNdIF4gcmtbMTBdOworCQkJaWYgKCsraSA9PSA3KSB7CisJCQkJcmV0dXJuIDA7CisJCQl9CisJCQl0ZW1wID0gcmtbMTFdOworCQkJcmtbMTJdID0gcmtbIDRdIF4KKwkJCQkoVGUyWyh0ZW1wID4+IDI0KSAgICAgICBdICYgMHhmZjAwMDAwMCkgXgorCQkJCShUZTNbKHRlbXAgPj4gMTYpICYgMHhmZl0gJiAweDAwZmYwMDAwKSBeCisJCQkJKFRlMFsodGVtcCA+PiAgOCkgJiAweGZmXSAmIDB4MDAwMGZmMDApIF4KKwkJCQkoVGUxWyh0ZW1wICAgICAgKSAmIDB4ZmZdICYgMHgwMDAwMDBmZik7CisJCQlya1sxM10gPSBya1sgNV0gXiBya1sxMl07CisJCQlya1sxNF0gPSBya1sgNl0gXiBya1sxM107CisJCQlya1sxNV0gPSBya1sgN10gXiBya1sxNF07CisKKwkJCXJrICs9IDg7CisgICAgICAgIAl9CisJfQorCXJldHVybiAwOworfQorCisvKioKKyAqIEV4cGFuZCB0aGUgY2lwaGVyIGtleSBpbnRvIHRoZSBkZWNyeXB0aW9uIGtleSBzY2hlZHVsZS4KKyAqLworaW50IHByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5LCBjb25zdCBpbnQgYml0cywKKwkJCSBBRVNfS0VZICprZXkpIHsKKworICAgICAgICB1MzIgKnJrOworCWludCBpLCBqLCBzdGF0dXM7CisJdTMyIHRlbXA7CisKKwkvKiBmaXJzdCwgc3RhcnQgd2l0aCBhbiBlbmNyeXB0aW9uIHNjaGVkdWxlICovCisJc3RhdHVzID0gcHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5KHVzZXJLZXksIGJpdHMsIGtleSk7CisJaWYgKHN0YXR1cyA8IDApCisJCXJldHVybiBzdGF0dXM7CisKKwlyayA9IGtleS0+cmRfa2V5OworCisJLyogaW52ZXJ0IHRoZSBvcmRlciBvZiB0aGUgcm91bmQga2V5czogKi8KKwlmb3IgKGkgPSAwLCBqID0gNCooa2V5LT5yb3VuZHMpOyBpIDwgajsgaSArPSA0LCBqIC09IDQpIHsKKwkJdGVtcCA9IHJrW2kgICAgXTsgcmtbaSAgICBdID0gcmtbaiAgICBdOyBya1tqICAgIF0gPSB0ZW1wOworCQl0ZW1wID0gcmtbaSArIDFdOyBya1tpICsgMV0gPSBya1tqICsgMV07IHJrW2ogKyAxXSA9IHRlbXA7CisJCXRlbXAgPSBya1tpICsgMl07IHJrW2kgKyAyXSA9IHJrW2ogKyAyXTsgcmtbaiArIDJdID0gdGVtcDsKKwkJdGVtcCA9IHJrW2kgKyAzXTsgcmtbaSArIDNdID0gcmtbaiArIDNdOyBya1tqICsgM10gPSB0ZW1wOworCX0KKwkvKiBhcHBseSB0aGUgaW52ZXJzZSBNaXhDb2x1bW4gdHJhbnNmb3JtIHRvIGFsbCByb3VuZCBrZXlzIGJ1dCB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0OiAqLworCWZvciAoaSA9IDE7IGkgPCAoa2V5LT5yb3VuZHMpOyBpKyspIHsKKwkJcmsgKz0gNDsKKwkJcmtbMF0gPQorCQkJVGQwW1RlMVsocmtbMF0gPj4gMjQpICAgICAgIF0gJiAweGZmXSBeCisJCQlUZDFbVGUxWyhya1swXSA+PiAxNikgJiAweGZmXSAmIDB4ZmZdIF4KKwkJCVRkMltUZTFbKHJrWzBdID4+ICA4KSAmIDB4ZmZdICYgMHhmZl0gXgorCQkJVGQzW1RlMVsocmtbMF0gICAgICApICYgMHhmZl0gJiAweGZmXTsKKwkJcmtbMV0gPQorCQkJVGQwW1RlMVsocmtbMV0gPj4gMjQpICAgICAgIF0gJiAweGZmXSBeCisJCQlUZDFbVGUxWyhya1sxXSA+PiAxNikgJiAweGZmXSAmIDB4ZmZdIF4KKwkJCVRkMltUZTFbKHJrWzFdID4+ICA4KSAmIDB4ZmZdICYgMHhmZl0gXgorCQkJVGQzW1RlMVsocmtbMV0gICAgICApICYgMHhmZl0gJiAweGZmXTsKKwkJcmtbMl0gPQorCQkJVGQwW1RlMVsocmtbMl0gPj4gMjQpICAgICAgIF0gJiAweGZmXSBeCisJCQlUZDFbVGUxWyhya1syXSA+PiAxNikgJiAweGZmXSAmIDB4ZmZdIF4KKwkJCVRkMltUZTFbKHJrWzJdID4+ICA4KSAmIDB4ZmZdICYgMHhmZl0gXgorCQkJVGQzW1RlMVsocmtbMl0gICAgICApICYgMHhmZl0gJiAweGZmXTsKKwkJcmtbM10gPQorCQkJVGQwW1RlMVsocmtbM10gPj4gMjQpICAgICAgIF0gJiAweGZmXSBeCisJCQlUZDFbVGUxWyhya1szXSA+PiAxNikgJiAweGZmXSAmIDB4ZmZdIF4KKwkJCVRkMltUZTFbKHJrWzNdID4+ICA4KSAmIDB4ZmZdICYgMHhmZl0gXgorCQkJVGQzW1RlMVsocmtbM10gICAgICApICYgMHhmZl0gJiAweGZmXTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBFbmNyeXB0IGEgc2luZ2xlIGJsb2NrCisgKiBpbiBhbmQgb3V0IGNhbiBvdmVybGFwCisgKi8KK3ZvaWQgQUVTX2VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGNoYXIgKm91dCwKKwkJIGNvbnN0IEFFU19LRVkgKmtleSkgeworCisJY29uc3QgdTMyICpyazsKKwl1MzIgczAsIHMxLCBzMiwgczMsIHQwLCB0MSwgdDIsIHQzOworI2lmbmRlZiBGVUxMX1VOUk9MTAorCWludCByOworI2VuZGlmIC8qID9GVUxMX1VOUk9MTCAqLworCisJYXNzZXJ0KGluICYmIG91dCAmJiBrZXkpOworCXJrID0ga2V5LT5yZF9rZXk7CisKKwkvKgorCSAqIG1hcCBieXRlIGFycmF5IGJsb2NrIHRvIGNpcGhlciBzdGF0ZQorCSAqIGFuZCBhZGQgaW5pdGlhbCByb3VuZCBrZXk6CisJICovCisJczAgPSBHRVRVMzIoaW4gICAgICkgXiBya1swXTsKKwlzMSA9IEdFVFUzMihpbiArICA0KSBeIHJrWzFdOworCXMyID0gR0VUVTMyKGluICsgIDgpIF4gcmtbMl07CisJczMgPSBHRVRVMzIoaW4gKyAxMikgXiBya1szXTsKKyNpZmRlZiBGVUxMX1VOUk9MTAorCS8qIHJvdW5kIDE6ICovCisgICAJdDAgPSBUZTBbczAgPj4gMjRdIF4gVGUxWyhzMSA+PiAxNikgJiAweGZmXSBeIFRlMlsoczIgPj4gIDgpICYgMHhmZl0gXiBUZTNbczMgJiAweGZmXSBeIHJrWyA0XTsKKyAgIAl0MSA9IFRlMFtzMSA+PiAyNF0gXiBUZTFbKHMyID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyhzMyA+PiAgOCkgJiAweGZmXSBeIFRlM1tzMCAmIDB4ZmZdIF4gcmtbIDVdOworICAgCXQyID0gVGUwW3MyID4+IDI0XSBeIFRlMVsoczMgPj4gMTYpICYgMHhmZl0gXiBUZTJbKHMwID4+ICA4KSAmIDB4ZmZdIF4gVGUzW3MxICYgMHhmZl0gXiBya1sgNl07CisgICAJdDMgPSBUZTBbczMgPj4gMjRdIF4gVGUxWyhzMCA+PiAxNikgJiAweGZmXSBeIFRlMlsoczEgPj4gIDgpICYgMHhmZl0gXiBUZTNbczIgJiAweGZmXSBeIHJrWyA3XTsKKyAgIAkvKiByb3VuZCAyOiAqLworICAgCXMwID0gVGUwW3QwID4+IDI0XSBeIFRlMVsodDEgPj4gMTYpICYgMHhmZl0gXiBUZTJbKHQyID4+ICA4KSAmIDB4ZmZdIF4gVGUzW3QzICYgMHhmZl0gXiBya1sgOF07CisgICAJczEgPSBUZTBbdDEgPj4gMjRdIF4gVGUxWyh0MiA+PiAxNikgJiAweGZmXSBeIFRlMlsodDMgPj4gIDgpICYgMHhmZl0gXiBUZTNbdDAgJiAweGZmXSBeIHJrWyA5XTsKKyAgIAlzMiA9IFRlMFt0MiA+PiAyNF0gXiBUZTFbKHQzID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyh0MCA+PiAgOCkgJiAweGZmXSBeIFRlM1t0MSAmIDB4ZmZdIF4gcmtbMTBdOworICAgCXMzID0gVGUwW3QzID4+IDI0XSBeIFRlMVsodDAgPj4gMTYpICYgMHhmZl0gXiBUZTJbKHQxID4+ICA4KSAmIDB4ZmZdIF4gVGUzW3QyICYgMHhmZl0gXiBya1sxMV07CisJLyogcm91bmQgMzogKi8KKyAgIAl0MCA9IFRlMFtzMCA+PiAyNF0gXiBUZTFbKHMxID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyhzMiA+PiAgOCkgJiAweGZmXSBeIFRlM1tzMyAmIDB4ZmZdIF4gcmtbMTJdOworICAgCXQxID0gVGUwW3MxID4+IDI0XSBeIFRlMVsoczIgPj4gMTYpICYgMHhmZl0gXiBUZTJbKHMzID4+ICA4KSAmIDB4ZmZdIF4gVGUzW3MwICYgMHhmZl0gXiBya1sxM107CisgICAJdDIgPSBUZTBbczIgPj4gMjRdIF4gVGUxWyhzMyA+PiAxNikgJiAweGZmXSBeIFRlMlsoczAgPj4gIDgpICYgMHhmZl0gXiBUZTNbczEgJiAweGZmXSBeIHJrWzE0XTsKKyAgIAl0MyA9IFRlMFtzMyA+PiAyNF0gXiBUZTFbKHMwID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyhzMSA+PiAgOCkgJiAweGZmXSBeIFRlM1tzMiAmIDB4ZmZdIF4gcmtbMTVdOworICAgCS8qIHJvdW5kIDQ6ICovCisgICAJczAgPSBUZTBbdDAgPj4gMjRdIF4gVGUxWyh0MSA+PiAxNikgJiAweGZmXSBeIFRlMlsodDIgPj4gIDgpICYgMHhmZl0gXiBUZTNbdDMgJiAweGZmXSBeIHJrWzE2XTsKKyAgIAlzMSA9IFRlMFt0MSA+PiAyNF0gXiBUZTFbKHQyID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyh0MyA+PiAgOCkgJiAweGZmXSBeIFRlM1t0MCAmIDB4ZmZdIF4gcmtbMTddOworICAgCXMyID0gVGUwW3QyID4+IDI0XSBeIFRlMVsodDMgPj4gMTYpICYgMHhmZl0gXiBUZTJbKHQwID4+ICA4KSAmIDB4ZmZdIF4gVGUzW3QxICYgMHhmZl0gXiBya1sxOF07CisgICAJczMgPSBUZTBbdDMgPj4gMjRdIF4gVGUxWyh0MCA+PiAxNikgJiAweGZmXSBeIFRlMlsodDEgPj4gIDgpICYgMHhmZl0gXiBUZTNbdDIgJiAweGZmXSBeIHJrWzE5XTsKKwkvKiByb3VuZCA1OiAqLworICAgCXQwID0gVGUwW3MwID4+IDI0XSBeIFRlMVsoczEgPj4gMTYpICYgMHhmZl0gXiBUZTJbKHMyID4+ICA4KSAmIDB4ZmZdIF4gVGUzW3MzICYgMHhmZl0gXiBya1syMF07CisgICAJdDEgPSBUZTBbczEgPj4gMjRdIF4gVGUxWyhzMiA+PiAxNikgJiAweGZmXSBeIFRlMlsoczMgPj4gIDgpICYgMHhmZl0gXiBUZTNbczAgJiAweGZmXSBeIHJrWzIxXTsKKyAgIAl0MiA9IFRlMFtzMiA+PiAyNF0gXiBUZTFbKHMzID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyhzMCA+PiAgOCkgJiAweGZmXSBeIFRlM1tzMSAmIDB4ZmZdIF4gcmtbMjJdOworICAgCXQzID0gVGUwW3MzID4+IDI0XSBeIFRlMVsoczAgPj4gMTYpICYgMHhmZl0gXiBUZTJbKHMxID4+ICA4KSAmIDB4ZmZdIF4gVGUzW3MyICYgMHhmZl0gXiBya1syM107CisgICAJLyogcm91bmQgNjogKi8KKyAgIAlzMCA9IFRlMFt0MCA+PiAyNF0gXiBUZTFbKHQxID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyh0MiA+PiAgOCkgJiAweGZmXSBeIFRlM1t0MyAmIDB4ZmZdIF4gcmtbMjRdOworICAgCXMxID0gVGUwW3QxID4+IDI0XSBeIFRlMVsodDIgPj4gMTYpICYgMHhmZl0gXiBUZTJbKHQzID4+ICA4KSAmIDB4ZmZdIF4gVGUzW3QwICYgMHhmZl0gXiBya1syNV07CisgICAJczIgPSBUZTBbdDIgPj4gMjRdIF4gVGUxWyh0MyA+PiAxNikgJiAweGZmXSBeIFRlMlsodDAgPj4gIDgpICYgMHhmZl0gXiBUZTNbdDEgJiAweGZmXSBeIHJrWzI2XTsKKyAgIAlzMyA9IFRlMFt0MyA+PiAyNF0gXiBUZTFbKHQwID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyh0MSA+PiAgOCkgJiAweGZmXSBeIFRlM1t0MiAmIDB4ZmZdIF4gcmtbMjddOworCS8qIHJvdW5kIDc6ICovCisgICAJdDAgPSBUZTBbczAgPj4gMjRdIF4gVGUxWyhzMSA+PiAxNikgJiAweGZmXSBeIFRlMlsoczIgPj4gIDgpICYgMHhmZl0gXiBUZTNbczMgJiAweGZmXSBeIHJrWzI4XTsKKyAgIAl0MSA9IFRlMFtzMSA+PiAyNF0gXiBUZTFbKHMyID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyhzMyA+PiAgOCkgJiAweGZmXSBeIFRlM1tzMCAmIDB4ZmZdIF4gcmtbMjldOworICAgCXQyID0gVGUwW3MyID4+IDI0XSBeIFRlMVsoczMgPj4gMTYpICYgMHhmZl0gXiBUZTJbKHMwID4+ICA4KSAmIDB4ZmZdIF4gVGUzW3MxICYgMHhmZl0gXiBya1szMF07CisgICAJdDMgPSBUZTBbczMgPj4gMjRdIF4gVGUxWyhzMCA+PiAxNikgJiAweGZmXSBeIFRlMlsoczEgPj4gIDgpICYgMHhmZl0gXiBUZTNbczIgJiAweGZmXSBeIHJrWzMxXTsKKyAgIAkvKiByb3VuZCA4OiAqLworICAgCXMwID0gVGUwW3QwID4+IDI0XSBeIFRlMVsodDEgPj4gMTYpICYgMHhmZl0gXiBUZTJbKHQyID4+ICA4KSAmIDB4ZmZdIF4gVGUzW3QzICYgMHhmZl0gXiBya1szMl07CisgICAJczEgPSBUZTBbdDEgPj4gMjRdIF4gVGUxWyh0MiA+PiAxNikgJiAweGZmXSBeIFRlMlsodDMgPj4gIDgpICYgMHhmZl0gXiBUZTNbdDAgJiAweGZmXSBeIHJrWzMzXTsKKyAgIAlzMiA9IFRlMFt0MiA+PiAyNF0gXiBUZTFbKHQzID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyh0MCA+PiAgOCkgJiAweGZmXSBeIFRlM1t0MSAmIDB4ZmZdIF4gcmtbMzRdOworICAgCXMzID0gVGUwW3QzID4+IDI0XSBeIFRlMVsodDAgPj4gMTYpICYgMHhmZl0gXiBUZTJbKHQxID4+ICA4KSAmIDB4ZmZdIF4gVGUzW3QyICYgMHhmZl0gXiBya1szNV07CisJLyogcm91bmQgOTogKi8KKyAgIAl0MCA9IFRlMFtzMCA+PiAyNF0gXiBUZTFbKHMxID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyhzMiA+PiAgOCkgJiAweGZmXSBeIFRlM1tzMyAmIDB4ZmZdIF4gcmtbMzZdOworICAgCXQxID0gVGUwW3MxID4+IDI0XSBeIFRlMVsoczIgPj4gMTYpICYgMHhmZl0gXiBUZTJbKHMzID4+ICA4KSAmIDB4ZmZdIF4gVGUzW3MwICYgMHhmZl0gXiBya1szN107CisgICAJdDIgPSBUZTBbczIgPj4gMjRdIF4gVGUxWyhzMyA+PiAxNikgJiAweGZmXSBeIFRlMlsoczAgPj4gIDgpICYgMHhmZl0gXiBUZTNbczEgJiAweGZmXSBeIHJrWzM4XTsKKyAgIAl0MyA9IFRlMFtzMyA+PiAyNF0gXiBUZTFbKHMwID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyhzMSA+PiAgOCkgJiAweGZmXSBeIFRlM1tzMiAmIDB4ZmZdIF4gcmtbMzldOworICAgIGlmIChrZXktPnJvdW5kcyA+IDEwKSB7CisgICAgICAgIC8qIHJvdW5kIDEwOiAqLworICAgICAgICBzMCA9IFRlMFt0MCA+PiAyNF0gXiBUZTFbKHQxID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyh0MiA+PiAgOCkgJiAweGZmXSBeIFRlM1t0MyAmIDB4ZmZdIF4gcmtbNDBdOworICAgICAgICBzMSA9IFRlMFt0MSA+PiAyNF0gXiBUZTFbKHQyID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyh0MyA+PiAgOCkgJiAweGZmXSBeIFRlM1t0MCAmIDB4ZmZdIF4gcmtbNDFdOworICAgICAgICBzMiA9IFRlMFt0MiA+PiAyNF0gXiBUZTFbKHQzID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyh0MCA+PiAgOCkgJiAweGZmXSBeIFRlM1t0MSAmIDB4ZmZdIF4gcmtbNDJdOworICAgICAgICBzMyA9IFRlMFt0MyA+PiAyNF0gXiBUZTFbKHQwID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyh0MSA+PiAgOCkgJiAweGZmXSBeIFRlM1t0MiAmIDB4ZmZdIF4gcmtbNDNdOworICAgICAgICAvKiByb3VuZCAxMTogKi8KKyAgICAgICAgdDAgPSBUZTBbczAgPj4gMjRdIF4gVGUxWyhzMSA+PiAxNikgJiAweGZmXSBeIFRlMlsoczIgPj4gIDgpICYgMHhmZl0gXiBUZTNbczMgJiAweGZmXSBeIHJrWzQ0XTsKKyAgICAgICAgdDEgPSBUZTBbczEgPj4gMjRdIF4gVGUxWyhzMiA+PiAxNikgJiAweGZmXSBeIFRlMlsoczMgPj4gIDgpICYgMHhmZl0gXiBUZTNbczAgJiAweGZmXSBeIHJrWzQ1XTsKKyAgICAgICAgdDIgPSBUZTBbczIgPj4gMjRdIF4gVGUxWyhzMyA+PiAxNikgJiAweGZmXSBeIFRlMlsoczAgPj4gIDgpICYgMHhmZl0gXiBUZTNbczEgJiAweGZmXSBeIHJrWzQ2XTsKKyAgICAgICAgdDMgPSBUZTBbczMgPj4gMjRdIF4gVGUxWyhzMCA+PiAxNikgJiAweGZmXSBeIFRlMlsoczEgPj4gIDgpICYgMHhmZl0gXiBUZTNbczIgJiAweGZmXSBeIHJrWzQ3XTsKKyAgICAgICAgaWYgKGtleS0+cm91bmRzID4gMTIpIHsKKyAgICAgICAgICAgIC8qIHJvdW5kIDEyOiAqLworICAgICAgICAgICAgczAgPSBUZTBbdDAgPj4gMjRdIF4gVGUxWyh0MSA+PiAxNikgJiAweGZmXSBeIFRlMlsodDIgPj4gIDgpICYgMHhmZl0gXiBUZTNbdDMgJiAweGZmXSBeIHJrWzQ4XTsKKyAgICAgICAgICAgIHMxID0gVGUwW3QxID4+IDI0XSBeIFRlMVsodDIgPj4gMTYpICYgMHhmZl0gXiBUZTJbKHQzID4+ICA4KSAmIDB4ZmZdIF4gVGUzW3QwICYgMHhmZl0gXiBya1s0OV07CisgICAgICAgICAgICBzMiA9IFRlMFt0MiA+PiAyNF0gXiBUZTFbKHQzID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyh0MCA+PiAgOCkgJiAweGZmXSBeIFRlM1t0MSAmIDB4ZmZdIF4gcmtbNTBdOworICAgICAgICAgICAgczMgPSBUZTBbdDMgPj4gMjRdIF4gVGUxWyh0MCA+PiAxNikgJiAweGZmXSBeIFRlMlsodDEgPj4gIDgpICYgMHhmZl0gXiBUZTNbdDIgJiAweGZmXSBeIHJrWzUxXTsKKyAgICAgICAgICAgIC8qIHJvdW5kIDEzOiAqLworICAgICAgICAgICAgdDAgPSBUZTBbczAgPj4gMjRdIF4gVGUxWyhzMSA+PiAxNikgJiAweGZmXSBeIFRlMlsoczIgPj4gIDgpICYgMHhmZl0gXiBUZTNbczMgJiAweGZmXSBeIHJrWzUyXTsKKyAgICAgICAgICAgIHQxID0gVGUwW3MxID4+IDI0XSBeIFRlMVsoczIgPj4gMTYpICYgMHhmZl0gXiBUZTJbKHMzID4+ICA4KSAmIDB4ZmZdIF4gVGUzW3MwICYgMHhmZl0gXiBya1s1M107CisgICAgICAgICAgICB0MiA9IFRlMFtzMiA+PiAyNF0gXiBUZTFbKHMzID4+IDE2KSAmIDB4ZmZdIF4gVGUyWyhzMCA+PiAgOCkgJiAweGZmXSBeIFRlM1tzMSAmIDB4ZmZdIF4gcmtbNTRdOworICAgICAgICAgICAgdDMgPSBUZTBbczMgPj4gMjRdIF4gVGUxWyhzMCA+PiAxNikgJiAweGZmXSBeIFRlMlsoczEgPj4gIDgpICYgMHhmZl0gXiBUZTNbczIgJiAweGZmXSBeIHJrWzU1XTsKKyAgICAgICAgfQorICAgIH0KKyAgICByayArPSBrZXktPnJvdW5kcyA8PCAyOworI2Vsc2UgIC8qICFGVUxMX1VOUk9MTCAqLworICAgIC8qCisgICAgICogTnIgLSAxIGZ1bGwgcm91bmRzOgorICAgICAqLworICAgIHIgPSBrZXktPnJvdW5kcyA+PiAxOworICAgIGZvciAoOzspIHsKKyAgICAgICAgdDAgPQorICAgICAgICAgICAgVGUwWyhzMCA+PiAyNCkgICAgICAgXSBeCisgICAgICAgICAgICBUZTFbKHMxID4+IDE2KSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIFRlMlsoczIgPj4gIDgpICYgMHhmZl0gXgorICAgICAgICAgICAgVGUzWyhzMyAgICAgICkgJiAweGZmXSBeCisgICAgICAgICAgICBya1s0XTsKKyAgICAgICAgdDEgPQorICAgICAgICAgICAgVGUwWyhzMSA+PiAyNCkgICAgICAgXSBeCisgICAgICAgICAgICBUZTFbKHMyID4+IDE2KSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIFRlMlsoczMgPj4gIDgpICYgMHhmZl0gXgorICAgICAgICAgICAgVGUzWyhzMCAgICAgICkgJiAweGZmXSBeCisgICAgICAgICAgICBya1s1XTsKKyAgICAgICAgdDIgPQorICAgICAgICAgICAgVGUwWyhzMiA+PiAyNCkgICAgICAgXSBeCisgICAgICAgICAgICBUZTFbKHMzID4+IDE2KSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIFRlMlsoczAgPj4gIDgpICYgMHhmZl0gXgorICAgICAgICAgICAgVGUzWyhzMSAgICAgICkgJiAweGZmXSBeCisgICAgICAgICAgICBya1s2XTsKKyAgICAgICAgdDMgPQorICAgICAgICAgICAgVGUwWyhzMyA+PiAyNCkgICAgICAgXSBeCisgICAgICAgICAgICBUZTFbKHMwID4+IDE2KSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIFRlMlsoczEgPj4gIDgpICYgMHhmZl0gXgorICAgICAgICAgICAgVGUzWyhzMiAgICAgICkgJiAweGZmXSBeCisgICAgICAgICAgICBya1s3XTsKKworICAgICAgICByayArPSA4OworICAgICAgICBpZiAoLS1yID09IDApIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgczAgPQorICAgICAgICAgICAgVGUwWyh0MCA+PiAyNCkgICAgICAgXSBeCisgICAgICAgICAgICBUZTFbKHQxID4+IDE2KSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIFRlMlsodDIgPj4gIDgpICYgMHhmZl0gXgorICAgICAgICAgICAgVGUzWyh0MyAgICAgICkgJiAweGZmXSBeCisgICAgICAgICAgICBya1swXTsKKyAgICAgICAgczEgPQorICAgICAgICAgICAgVGUwWyh0MSA+PiAyNCkgICAgICAgXSBeCisgICAgICAgICAgICBUZTFbKHQyID4+IDE2KSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIFRlMlsodDMgPj4gIDgpICYgMHhmZl0gXgorICAgICAgICAgICAgVGUzWyh0MCAgICAgICkgJiAweGZmXSBeCisgICAgICAgICAgICBya1sxXTsKKyAgICAgICAgczIgPQorICAgICAgICAgICAgVGUwWyh0MiA+PiAyNCkgICAgICAgXSBeCisgICAgICAgICAgICBUZTFbKHQzID4+IDE2KSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIFRlMlsodDAgPj4gIDgpICYgMHhmZl0gXgorICAgICAgICAgICAgVGUzWyh0MSAgICAgICkgJiAweGZmXSBeCisgICAgICAgICAgICBya1syXTsKKyAgICAgICAgczMgPQorICAgICAgICAgICAgVGUwWyh0MyA+PiAyNCkgICAgICAgXSBeCisgICAgICAgICAgICBUZTFbKHQwID4+IDE2KSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIFRlMlsodDEgPj4gIDgpICYgMHhmZl0gXgorICAgICAgICAgICAgVGUzWyh0MiAgICAgICkgJiAweGZmXSBeCisgICAgICAgICAgICBya1szXTsKKyAgICB9CisjZW5kaWYgLyogP0ZVTExfVU5ST0xMICovCisgICAgLyoKKwkgKiBhcHBseSBsYXN0IHJvdW5kIGFuZAorCSAqIG1hcCBjaXBoZXIgc3RhdGUgdG8gYnl0ZSBhcnJheSBibG9jazoKKwkgKi8KKwlzMCA9CisJCShUZTJbKHQwID4+IDI0KSAgICAgICBdICYgMHhmZjAwMDAwMCkgXgorCQkoVGUzWyh0MSA+PiAxNikgJiAweGZmXSAmIDB4MDBmZjAwMDApIF4KKwkJKFRlMFsodDIgPj4gIDgpICYgMHhmZl0gJiAweDAwMDBmZjAwKSBeCisJCShUZTFbKHQzICAgICAgKSAmIDB4ZmZdICYgMHgwMDAwMDBmZikgXgorCQlya1swXTsKKwlQVVRVMzIob3V0ICAgICAsIHMwKTsKKwlzMSA9CisJCShUZTJbKHQxID4+IDI0KSAgICAgICBdICYgMHhmZjAwMDAwMCkgXgorCQkoVGUzWyh0MiA+PiAxNikgJiAweGZmXSAmIDB4MDBmZjAwMDApIF4KKwkJKFRlMFsodDMgPj4gIDgpICYgMHhmZl0gJiAweDAwMDBmZjAwKSBeCisJCShUZTFbKHQwICAgICAgKSAmIDB4ZmZdICYgMHgwMDAwMDBmZikgXgorCQlya1sxXTsKKwlQVVRVMzIob3V0ICsgIDQsIHMxKTsKKwlzMiA9CisJCShUZTJbKHQyID4+IDI0KSAgICAgICBdICYgMHhmZjAwMDAwMCkgXgorCQkoVGUzWyh0MyA+PiAxNikgJiAweGZmXSAmIDB4MDBmZjAwMDApIF4KKwkJKFRlMFsodDAgPj4gIDgpICYgMHhmZl0gJiAweDAwMDBmZjAwKSBeCisJCShUZTFbKHQxICAgICAgKSAmIDB4ZmZdICYgMHgwMDAwMDBmZikgXgorCQlya1syXTsKKwlQVVRVMzIob3V0ICsgIDgsIHMyKTsKKwlzMyA9CisJCShUZTJbKHQzID4+IDI0KSAgICAgICBdICYgMHhmZjAwMDAwMCkgXgorCQkoVGUzWyh0MCA+PiAxNikgJiAweGZmXSAmIDB4MDBmZjAwMDApIF4KKwkJKFRlMFsodDEgPj4gIDgpICYgMHhmZl0gJiAweDAwMDBmZjAwKSBeCisJCShUZTFbKHQyICAgICAgKSAmIDB4ZmZdICYgMHgwMDAwMDBmZikgXgorCQlya1szXTsKKwlQVVRVMzIob3V0ICsgMTIsIHMzKTsKK30KKworLyoKKyAqIERlY3J5cHQgYSBzaW5nbGUgYmxvY2sKKyAqIGluIGFuZCBvdXQgY2FuIG92ZXJsYXAKKyAqLwordm9pZCBBRVNfZGVjcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorCQkgY29uc3QgQUVTX0tFWSAqa2V5KSB7CisKKwljb25zdCB1MzIgKnJrOworCXUzMiBzMCwgczEsIHMyLCBzMywgdDAsIHQxLCB0MiwgdDM7CisjaWZuZGVmIEZVTExfVU5ST0xMCisJaW50IHI7CisjZW5kaWYgLyogP0ZVTExfVU5ST0xMICovCisKKwlhc3NlcnQoaW4gJiYgb3V0ICYmIGtleSk7CisJcmsgPSBrZXktPnJkX2tleTsKKworCS8qCisJICogbWFwIGJ5dGUgYXJyYXkgYmxvY2sgdG8gY2lwaGVyIHN0YXRlCisJICogYW5kIGFkZCBpbml0aWFsIHJvdW5kIGtleToKKwkgKi8KKyAgICBzMCA9IEdFVFUzMihpbiAgICAgKSBeIHJrWzBdOworICAgIHMxID0gR0VUVTMyKGluICsgIDQpIF4gcmtbMV07CisgICAgczIgPSBHRVRVMzIoaW4gKyAgOCkgXiBya1syXTsKKyAgICBzMyA9IEdFVFUzMihpbiArIDEyKSBeIHJrWzNdOworI2lmZGVmIEZVTExfVU5ST0xMCisgICAgLyogcm91bmQgMTogKi8KKyAgICB0MCA9IFRkMFtzMCA+PiAyNF0gXiBUZDFbKHMzID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyhzMiA+PiAgOCkgJiAweGZmXSBeIFRkM1tzMSAmIDB4ZmZdIF4gcmtbIDRdOworICAgIHQxID0gVGQwW3MxID4+IDI0XSBeIFRkMVsoczAgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHMzID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3MyICYgMHhmZl0gXiBya1sgNV07CisgICAgdDIgPSBUZDBbczIgPj4gMjRdIF4gVGQxWyhzMSA+PiAxNikgJiAweGZmXSBeIFRkMlsoczAgPj4gIDgpICYgMHhmZl0gXiBUZDNbczMgJiAweGZmXSBeIHJrWyA2XTsKKyAgICB0MyA9IFRkMFtzMyA+PiAyNF0gXiBUZDFbKHMyID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyhzMSA+PiAgOCkgJiAweGZmXSBeIFRkM1tzMCAmIDB4ZmZdIF4gcmtbIDddOworICAgIC8qIHJvdW5kIDI6ICovCisgICAgczAgPSBUZDBbdDAgPj4gMjRdIF4gVGQxWyh0MyA+PiAxNikgJiAweGZmXSBeIFRkMlsodDIgPj4gIDgpICYgMHhmZl0gXiBUZDNbdDEgJiAweGZmXSBeIHJrWyA4XTsKKyAgICBzMSA9IFRkMFt0MSA+PiAyNF0gXiBUZDFbKHQwID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyh0MyA+PiAgOCkgJiAweGZmXSBeIFRkM1t0MiAmIDB4ZmZdIF4gcmtbIDldOworICAgIHMyID0gVGQwW3QyID4+IDI0XSBeIFRkMVsodDEgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHQwID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3QzICYgMHhmZl0gXiBya1sxMF07CisgICAgczMgPSBUZDBbdDMgPj4gMjRdIF4gVGQxWyh0MiA+PiAxNikgJiAweGZmXSBeIFRkMlsodDEgPj4gIDgpICYgMHhmZl0gXiBUZDNbdDAgJiAweGZmXSBeIHJrWzExXTsKKyAgICAvKiByb3VuZCAzOiAqLworICAgIHQwID0gVGQwW3MwID4+IDI0XSBeIFRkMVsoczMgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHMyID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3MxICYgMHhmZl0gXiBya1sxMl07CisgICAgdDEgPSBUZDBbczEgPj4gMjRdIF4gVGQxWyhzMCA+PiAxNikgJiAweGZmXSBeIFRkMlsoczMgPj4gIDgpICYgMHhmZl0gXiBUZDNbczIgJiAweGZmXSBeIHJrWzEzXTsKKyAgICB0MiA9IFRkMFtzMiA+PiAyNF0gXiBUZDFbKHMxID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyhzMCA+PiAgOCkgJiAweGZmXSBeIFRkM1tzMyAmIDB4ZmZdIF4gcmtbMTRdOworICAgIHQzID0gVGQwW3MzID4+IDI0XSBeIFRkMVsoczIgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHMxID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3MwICYgMHhmZl0gXiBya1sxNV07CisgICAgLyogcm91bmQgNDogKi8KKyAgICBzMCA9IFRkMFt0MCA+PiAyNF0gXiBUZDFbKHQzID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyh0MiA+PiAgOCkgJiAweGZmXSBeIFRkM1t0MSAmIDB4ZmZdIF4gcmtbMTZdOworICAgIHMxID0gVGQwW3QxID4+IDI0XSBeIFRkMVsodDAgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHQzID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3QyICYgMHhmZl0gXiBya1sxN107CisgICAgczIgPSBUZDBbdDIgPj4gMjRdIF4gVGQxWyh0MSA+PiAxNikgJiAweGZmXSBeIFRkMlsodDAgPj4gIDgpICYgMHhmZl0gXiBUZDNbdDMgJiAweGZmXSBeIHJrWzE4XTsKKyAgICBzMyA9IFRkMFt0MyA+PiAyNF0gXiBUZDFbKHQyID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyh0MSA+PiAgOCkgJiAweGZmXSBeIFRkM1t0MCAmIDB4ZmZdIF4gcmtbMTldOworICAgIC8qIHJvdW5kIDU6ICovCisgICAgdDAgPSBUZDBbczAgPj4gMjRdIF4gVGQxWyhzMyA+PiAxNikgJiAweGZmXSBeIFRkMlsoczIgPj4gIDgpICYgMHhmZl0gXiBUZDNbczEgJiAweGZmXSBeIHJrWzIwXTsKKyAgICB0MSA9IFRkMFtzMSA+PiAyNF0gXiBUZDFbKHMwID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyhzMyA+PiAgOCkgJiAweGZmXSBeIFRkM1tzMiAmIDB4ZmZdIF4gcmtbMjFdOworICAgIHQyID0gVGQwW3MyID4+IDI0XSBeIFRkMVsoczEgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHMwID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3MzICYgMHhmZl0gXiBya1syMl07CisgICAgdDMgPSBUZDBbczMgPj4gMjRdIF4gVGQxWyhzMiA+PiAxNikgJiAweGZmXSBeIFRkMlsoczEgPj4gIDgpICYgMHhmZl0gXiBUZDNbczAgJiAweGZmXSBeIHJrWzIzXTsKKyAgICAvKiByb3VuZCA2OiAqLworICAgIHMwID0gVGQwW3QwID4+IDI0XSBeIFRkMVsodDMgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHQyID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3QxICYgMHhmZl0gXiBya1syNF07CisgICAgczEgPSBUZDBbdDEgPj4gMjRdIF4gVGQxWyh0MCA+PiAxNikgJiAweGZmXSBeIFRkMlsodDMgPj4gIDgpICYgMHhmZl0gXiBUZDNbdDIgJiAweGZmXSBeIHJrWzI1XTsKKyAgICBzMiA9IFRkMFt0MiA+PiAyNF0gXiBUZDFbKHQxID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyh0MCA+PiAgOCkgJiAweGZmXSBeIFRkM1t0MyAmIDB4ZmZdIF4gcmtbMjZdOworICAgIHMzID0gVGQwW3QzID4+IDI0XSBeIFRkMVsodDIgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHQxID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3QwICYgMHhmZl0gXiBya1syN107CisgICAgLyogcm91bmQgNzogKi8KKyAgICB0MCA9IFRkMFtzMCA+PiAyNF0gXiBUZDFbKHMzID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyhzMiA+PiAgOCkgJiAweGZmXSBeIFRkM1tzMSAmIDB4ZmZdIF4gcmtbMjhdOworICAgIHQxID0gVGQwW3MxID4+IDI0XSBeIFRkMVsoczAgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHMzID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3MyICYgMHhmZl0gXiBya1syOV07CisgICAgdDIgPSBUZDBbczIgPj4gMjRdIF4gVGQxWyhzMSA+PiAxNikgJiAweGZmXSBeIFRkMlsoczAgPj4gIDgpICYgMHhmZl0gXiBUZDNbczMgJiAweGZmXSBeIHJrWzMwXTsKKyAgICB0MyA9IFRkMFtzMyA+PiAyNF0gXiBUZDFbKHMyID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyhzMSA+PiAgOCkgJiAweGZmXSBeIFRkM1tzMCAmIDB4ZmZdIF4gcmtbMzFdOworICAgIC8qIHJvdW5kIDg6ICovCisgICAgczAgPSBUZDBbdDAgPj4gMjRdIF4gVGQxWyh0MyA+PiAxNikgJiAweGZmXSBeIFRkMlsodDIgPj4gIDgpICYgMHhmZl0gXiBUZDNbdDEgJiAweGZmXSBeIHJrWzMyXTsKKyAgICBzMSA9IFRkMFt0MSA+PiAyNF0gXiBUZDFbKHQwID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyh0MyA+PiAgOCkgJiAweGZmXSBeIFRkM1t0MiAmIDB4ZmZdIF4gcmtbMzNdOworICAgIHMyID0gVGQwW3QyID4+IDI0XSBeIFRkMVsodDEgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHQwID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3QzICYgMHhmZl0gXiBya1szNF07CisgICAgczMgPSBUZDBbdDMgPj4gMjRdIF4gVGQxWyh0MiA+PiAxNikgJiAweGZmXSBeIFRkMlsodDEgPj4gIDgpICYgMHhmZl0gXiBUZDNbdDAgJiAweGZmXSBeIHJrWzM1XTsKKyAgICAvKiByb3VuZCA5OiAqLworICAgIHQwID0gVGQwW3MwID4+IDI0XSBeIFRkMVsoczMgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHMyID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3MxICYgMHhmZl0gXiBya1szNl07CisgICAgdDEgPSBUZDBbczEgPj4gMjRdIF4gVGQxWyhzMCA+PiAxNikgJiAweGZmXSBeIFRkMlsoczMgPj4gIDgpICYgMHhmZl0gXiBUZDNbczIgJiAweGZmXSBeIHJrWzM3XTsKKyAgICB0MiA9IFRkMFtzMiA+PiAyNF0gXiBUZDFbKHMxID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyhzMCA+PiAgOCkgJiAweGZmXSBeIFRkM1tzMyAmIDB4ZmZdIF4gcmtbMzhdOworICAgIHQzID0gVGQwW3MzID4+IDI0XSBeIFRkMVsoczIgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHMxID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3MwICYgMHhmZl0gXiBya1szOV07CisgICAgaWYgKGtleS0+cm91bmRzID4gMTApIHsKKyAgICAgICAgLyogcm91bmQgMTA6ICovCisgICAgICAgIHMwID0gVGQwW3QwID4+IDI0XSBeIFRkMVsodDMgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHQyID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3QxICYgMHhmZl0gXiBya1s0MF07CisgICAgICAgIHMxID0gVGQwW3QxID4+IDI0XSBeIFRkMVsodDAgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHQzID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3QyICYgMHhmZl0gXiBya1s0MV07CisgICAgICAgIHMyID0gVGQwW3QyID4+IDI0XSBeIFRkMVsodDEgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHQwID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3QzICYgMHhmZl0gXiBya1s0Ml07CisgICAgICAgIHMzID0gVGQwW3QzID4+IDI0XSBeIFRkMVsodDIgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHQxID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3QwICYgMHhmZl0gXiBya1s0M107CisgICAgICAgIC8qIHJvdW5kIDExOiAqLworICAgICAgICB0MCA9IFRkMFtzMCA+PiAyNF0gXiBUZDFbKHMzID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyhzMiA+PiAgOCkgJiAweGZmXSBeIFRkM1tzMSAmIDB4ZmZdIF4gcmtbNDRdOworICAgICAgICB0MSA9IFRkMFtzMSA+PiAyNF0gXiBUZDFbKHMwID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyhzMyA+PiAgOCkgJiAweGZmXSBeIFRkM1tzMiAmIDB4ZmZdIF4gcmtbNDVdOworICAgICAgICB0MiA9IFRkMFtzMiA+PiAyNF0gXiBUZDFbKHMxID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyhzMCA+PiAgOCkgJiAweGZmXSBeIFRkM1tzMyAmIDB4ZmZdIF4gcmtbNDZdOworICAgICAgICB0MyA9IFRkMFtzMyA+PiAyNF0gXiBUZDFbKHMyID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyhzMSA+PiAgOCkgJiAweGZmXSBeIFRkM1tzMCAmIDB4ZmZdIF4gcmtbNDddOworICAgICAgICBpZiAoa2V5LT5yb3VuZHMgPiAxMikgeworICAgICAgICAgICAgLyogcm91bmQgMTI6ICovCisgICAgICAgICAgICBzMCA9IFRkMFt0MCA+PiAyNF0gXiBUZDFbKHQzID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyh0MiA+PiAgOCkgJiAweGZmXSBeIFRkM1t0MSAmIDB4ZmZdIF4gcmtbNDhdOworICAgICAgICAgICAgczEgPSBUZDBbdDEgPj4gMjRdIF4gVGQxWyh0MCA+PiAxNikgJiAweGZmXSBeIFRkMlsodDMgPj4gIDgpICYgMHhmZl0gXiBUZDNbdDIgJiAweGZmXSBeIHJrWzQ5XTsKKyAgICAgICAgICAgIHMyID0gVGQwW3QyID4+IDI0XSBeIFRkMVsodDEgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHQwID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3QzICYgMHhmZl0gXiBya1s1MF07CisgICAgICAgICAgICBzMyA9IFRkMFt0MyA+PiAyNF0gXiBUZDFbKHQyID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyh0MSA+PiAgOCkgJiAweGZmXSBeIFRkM1t0MCAmIDB4ZmZdIF4gcmtbNTFdOworICAgICAgICAgICAgLyogcm91bmQgMTM6ICovCisgICAgICAgICAgICB0MCA9IFRkMFtzMCA+PiAyNF0gXiBUZDFbKHMzID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyhzMiA+PiAgOCkgJiAweGZmXSBeIFRkM1tzMSAmIDB4ZmZdIF4gcmtbNTJdOworICAgICAgICAgICAgdDEgPSBUZDBbczEgPj4gMjRdIF4gVGQxWyhzMCA+PiAxNikgJiAweGZmXSBeIFRkMlsoczMgPj4gIDgpICYgMHhmZl0gXiBUZDNbczIgJiAweGZmXSBeIHJrWzUzXTsKKyAgICAgICAgICAgIHQyID0gVGQwW3MyID4+IDI0XSBeIFRkMVsoczEgPj4gMTYpICYgMHhmZl0gXiBUZDJbKHMwID4+ICA4KSAmIDB4ZmZdIF4gVGQzW3MzICYgMHhmZl0gXiBya1s1NF07CisgICAgICAgICAgICB0MyA9IFRkMFtzMyA+PiAyNF0gXiBUZDFbKHMyID4+IDE2KSAmIDB4ZmZdIF4gVGQyWyhzMSA+PiAgOCkgJiAweGZmXSBeIFRkM1tzMCAmIDB4ZmZdIF4gcmtbNTVdOworICAgICAgICB9CisgICAgfQorCXJrICs9IGtleS0+cm91bmRzIDw8IDI7CisjZWxzZSAgLyogIUZVTExfVU5ST0xMICovCisgICAgLyoKKyAgICAgKiBOciAtIDEgZnVsbCByb3VuZHM6CisgICAgICovCisgICAgciA9IGtleS0+cm91bmRzID4+IDE7CisgICAgZm9yICg7OykgeworICAgICAgICB0MCA9CisgICAgICAgICAgICBUZDBbKHMwID4+IDI0KSAgICAgICBdIF4KKyAgICAgICAgICAgIFRkMVsoczMgPj4gMTYpICYgMHhmZl0gXgorICAgICAgICAgICAgVGQyWyhzMiA+PiAgOCkgJiAweGZmXSBeCisgICAgICAgICAgICBUZDNbKHMxICAgICAgKSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIHJrWzRdOworICAgICAgICB0MSA9CisgICAgICAgICAgICBUZDBbKHMxID4+IDI0KSAgICAgICBdIF4KKyAgICAgICAgICAgIFRkMVsoczAgPj4gMTYpICYgMHhmZl0gXgorICAgICAgICAgICAgVGQyWyhzMyA+PiAgOCkgJiAweGZmXSBeCisgICAgICAgICAgICBUZDNbKHMyICAgICAgKSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIHJrWzVdOworICAgICAgICB0MiA9CisgICAgICAgICAgICBUZDBbKHMyID4+IDI0KSAgICAgICBdIF4KKyAgICAgICAgICAgIFRkMVsoczEgPj4gMTYpICYgMHhmZl0gXgorICAgICAgICAgICAgVGQyWyhzMCA+PiAgOCkgJiAweGZmXSBeCisgICAgICAgICAgICBUZDNbKHMzICAgICAgKSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIHJrWzZdOworICAgICAgICB0MyA9CisgICAgICAgICAgICBUZDBbKHMzID4+IDI0KSAgICAgICBdIF4KKyAgICAgICAgICAgIFRkMVsoczIgPj4gMTYpICYgMHhmZl0gXgorICAgICAgICAgICAgVGQyWyhzMSA+PiAgOCkgJiAweGZmXSBeCisgICAgICAgICAgICBUZDNbKHMwICAgICAgKSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIHJrWzddOworCisgICAgICAgIHJrICs9IDg7CisgICAgICAgIGlmICgtLXIgPT0gMCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzMCA9CisgICAgICAgICAgICBUZDBbKHQwID4+IDI0KSAgICAgICBdIF4KKyAgICAgICAgICAgIFRkMVsodDMgPj4gMTYpICYgMHhmZl0gXgorICAgICAgICAgICAgVGQyWyh0MiA+PiAgOCkgJiAweGZmXSBeCisgICAgICAgICAgICBUZDNbKHQxICAgICAgKSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIHJrWzBdOworICAgICAgICBzMSA9CisgICAgICAgICAgICBUZDBbKHQxID4+IDI0KSAgICAgICBdIF4KKyAgICAgICAgICAgIFRkMVsodDAgPj4gMTYpICYgMHhmZl0gXgorICAgICAgICAgICAgVGQyWyh0MyA+PiAgOCkgJiAweGZmXSBeCisgICAgICAgICAgICBUZDNbKHQyICAgICAgKSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIHJrWzFdOworICAgICAgICBzMiA9CisgICAgICAgICAgICBUZDBbKHQyID4+IDI0KSAgICAgICBdIF4KKyAgICAgICAgICAgIFRkMVsodDEgPj4gMTYpICYgMHhmZl0gXgorICAgICAgICAgICAgVGQyWyh0MCA+PiAgOCkgJiAweGZmXSBeCisgICAgICAgICAgICBUZDNbKHQzICAgICAgKSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIHJrWzJdOworICAgICAgICBzMyA9CisgICAgICAgICAgICBUZDBbKHQzID4+IDI0KSAgICAgICBdIF4KKyAgICAgICAgICAgIFRkMVsodDIgPj4gMTYpICYgMHhmZl0gXgorICAgICAgICAgICAgVGQyWyh0MSA+PiAgOCkgJiAweGZmXSBeCisgICAgICAgICAgICBUZDNbKHQwICAgICAgKSAmIDB4ZmZdIF4KKyAgICAgICAgICAgIHJrWzNdOworICAgIH0KKyNlbmRpZiAvKiA/RlVMTF9VTlJPTEwgKi8KKyAgICAvKgorCSAqIGFwcGx5IGxhc3Qgcm91bmQgYW5kCisJICogbWFwIGNpcGhlciBzdGF0ZSB0byBieXRlIGFycmF5IGJsb2NrOgorCSAqLworICAgCXMwID0KKyAgIAkJKFRkNFsodDAgPj4gMjQpICAgICAgIF0gPDwgMjQpIF4KKyAgIAkJKFRkNFsodDMgPj4gMTYpICYgMHhmZl0gPDwgMTYpIF4KKyAgIAkJKFRkNFsodDIgPj4gIDgpICYgMHhmZl0gPDwgIDgpIF4KKyAgIAkJKFRkNFsodDEgICAgICApICYgMHhmZl0pICAgICAgIF4KKyAgIAkJcmtbMF07CisJUFVUVTMyKG91dCAgICAgLCBzMCk7CisgICAJczEgPQorICAgCQkoVGQ0Wyh0MSA+PiAyNCkgICAgICAgXSA8PCAyNCkgXgorICAgCQkoVGQ0Wyh0MCA+PiAxNikgJiAweGZmXSA8PCAxNikgXgorICAgCQkoVGQ0Wyh0MyA+PiAgOCkgJiAweGZmXSA8PCAgOCkgXgorICAgCQkoVGQ0Wyh0MiAgICAgICkgJiAweGZmXSkgICAgICAgXgorICAgCQlya1sxXTsKKwlQVVRVMzIob3V0ICsgIDQsIHMxKTsKKyAgIAlzMiA9CisgICAJCShUZDRbKHQyID4+IDI0KSAgICAgICBdIDw8IDI0KSBeCisgICAJCShUZDRbKHQxID4+IDE2KSAmIDB4ZmZdIDw8IDE2KSBeCisgICAJCShUZDRbKHQwID4+ICA4KSAmIDB4ZmZdIDw8ICA4KSBeCisgICAJCShUZDRbKHQzICAgICAgKSAmIDB4ZmZdKSAgICAgICBeCisgICAJCXJrWzJdOworCVBVVFUzMihvdXQgKyAgOCwgczIpOworICAgCXMzID0KKyAgIAkJKFRkNFsodDMgPj4gMjQpICAgICAgIF0gPDwgMjQpIF4KKyAgIAkJKFRkNFsodDIgPj4gMTYpICYgMHhmZl0gPDwgMTYpIF4KKyAgIAkJKFRkNFsodDEgPj4gIDgpICYgMHhmZl0gPDwgIDgpIF4KKyAgIAkJKFRkNFsodDAgICAgICApICYgMHhmZl0pICAgICAgIF4KKyAgIAkJcmtbM107CisJUFVUVTMyKG91dCArIDEyLCBzMyk7Cit9CisKKyNlbHNlIC8qIEFFU19BU00gKi8KKworc3RhdGljIGNvbnN0IHU4IFRlNFsyNTZdID0geworICAgIDB4NjNVLCAweDdjVSwgMHg3N1UsIDB4N2JVLCAweGYyVSwgMHg2YlUsIDB4NmZVLCAweGM1VSwKKyAgICAweDMwVSwgMHgwMVUsIDB4NjdVLCAweDJiVSwgMHhmZVUsIDB4ZDdVLCAweGFiVSwgMHg3NlUsCisgICAgMHhjYVUsIDB4ODJVLCAweGM5VSwgMHg3ZFUsIDB4ZmFVLCAweDU5VSwgMHg0N1UsIDB4ZjBVLAorICAgIDB4YWRVLCAweGQ0VSwgMHhhMlUsIDB4YWZVLCAweDljVSwgMHhhNFUsIDB4NzJVLCAweGMwVSwKKyAgICAweGI3VSwgMHhmZFUsIDB4OTNVLCAweDI2VSwgMHgzNlUsIDB4M2ZVLCAweGY3VSwgMHhjY1UsCisgICAgMHgzNFUsIDB4YTVVLCAweGU1VSwgMHhmMVUsIDB4NzFVLCAweGQ4VSwgMHgzMVUsIDB4MTVVLAorICAgIDB4MDRVLCAweGM3VSwgMHgyM1UsIDB4YzNVLCAweDE4VSwgMHg5NlUsIDB4MDVVLCAweDlhVSwKKyAgICAweDA3VSwgMHgxMlUsIDB4ODBVLCAweGUyVSwgMHhlYlUsIDB4MjdVLCAweGIyVSwgMHg3NVUsCisgICAgMHgwOVUsIDB4ODNVLCAweDJjVSwgMHgxYVUsIDB4MWJVLCAweDZlVSwgMHg1YVUsIDB4YTBVLAorICAgIDB4NTJVLCAweDNiVSwgMHhkNlUsIDB4YjNVLCAweDI5VSwgMHhlM1UsIDB4MmZVLCAweDg0VSwKKyAgICAweDUzVSwgMHhkMVUsIDB4MDBVLCAweGVkVSwgMHgyMFUsIDB4ZmNVLCAweGIxVSwgMHg1YlUsCisgICAgMHg2YVUsIDB4Y2JVLCAweGJlVSwgMHgzOVUsIDB4NGFVLCAweDRjVSwgMHg1OFUsIDB4Y2ZVLAorICAgIDB4ZDBVLCAweGVmVSwgMHhhYVUsIDB4ZmJVLCAweDQzVSwgMHg0ZFUsIDB4MzNVLCAweDg1VSwKKyAgICAweDQ1VSwgMHhmOVUsIDB4MDJVLCAweDdmVSwgMHg1MFUsIDB4M2NVLCAweDlmVSwgMHhhOFUsCisgICAgMHg1MVUsIDB4YTNVLCAweDQwVSwgMHg4ZlUsIDB4OTJVLCAweDlkVSwgMHgzOFUsIDB4ZjVVLAorICAgIDB4YmNVLCAweGI2VSwgMHhkYVUsIDB4MjFVLCAweDEwVSwgMHhmZlUsIDB4ZjNVLCAweGQyVSwKKyAgICAweGNkVSwgMHgwY1UsIDB4MTNVLCAweGVjVSwgMHg1ZlUsIDB4OTdVLCAweDQ0VSwgMHgxN1UsCisgICAgMHhjNFUsIDB4YTdVLCAweDdlVSwgMHgzZFUsIDB4NjRVLCAweDVkVSwgMHgxOVUsIDB4NzNVLAorICAgIDB4NjBVLCAweDgxVSwgMHg0ZlUsIDB4ZGNVLCAweDIyVSwgMHgyYVUsIDB4OTBVLCAweDg4VSwKKyAgICAweDQ2VSwgMHhlZVUsIDB4YjhVLCAweDE0VSwgMHhkZVUsIDB4NWVVLCAweDBiVSwgMHhkYlUsCisgICAgMHhlMFUsIDB4MzJVLCAweDNhVSwgMHgwYVUsIDB4NDlVLCAweDA2VSwgMHgyNFUsIDB4NWNVLAorICAgIDB4YzJVLCAweGQzVSwgMHhhY1UsIDB4NjJVLCAweDkxVSwgMHg5NVUsIDB4ZTRVLCAweDc5VSwKKyAgICAweGU3VSwgMHhjOFUsIDB4MzdVLCAweDZkVSwgMHg4ZFUsIDB4ZDVVLCAweDRlVSwgMHhhOVUsCisgICAgMHg2Y1UsIDB4NTZVLCAweGY0VSwgMHhlYVUsIDB4NjVVLCAweDdhVSwgMHhhZVUsIDB4MDhVLAorICAgIDB4YmFVLCAweDc4VSwgMHgyNVUsIDB4MmVVLCAweDFjVSwgMHhhNlUsIDB4YjRVLCAweGM2VSwKKyAgICAweGU4VSwgMHhkZFUsIDB4NzRVLCAweDFmVSwgMHg0YlUsIDB4YmRVLCAweDhiVSwgMHg4YVUsCisgICAgMHg3MFUsIDB4M2VVLCAweGI1VSwgMHg2NlUsIDB4NDhVLCAweDAzVSwgMHhmNlUsIDB4MGVVLAorICAgIDB4NjFVLCAweDM1VSwgMHg1N1UsIDB4YjlVLCAweDg2VSwgMHhjMVUsIDB4MWRVLCAweDllVSwKKyAgICAweGUxVSwgMHhmOFUsIDB4OThVLCAweDExVSwgMHg2OVUsIDB4ZDlVLCAweDhlVSwgMHg5NFUsCisgICAgMHg5YlUsIDB4MWVVLCAweDg3VSwgMHhlOVUsIDB4Y2VVLCAweDU1VSwgMHgyOFUsIDB4ZGZVLAorICAgIDB4OGNVLCAweGExVSwgMHg4OVUsIDB4MGRVLCAweGJmVSwgMHhlNlUsIDB4NDJVLCAweDY4VSwKKyAgICAweDQxVSwgMHg5OVUsIDB4MmRVLCAweDBmVSwgMHhiMFUsIDB4NTRVLCAweGJiVSwgMHgxNlUKK307CitzdGF0aWMgY29uc3QgdTMyIHJjb25bXSA9IHsKKwkweDAxMDAwMDAwLCAweDAyMDAwMDAwLCAweDA0MDAwMDAwLCAweDA4MDAwMDAwLAorCTB4MTAwMDAwMDAsIDB4MjAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4ODAwMDAwMDAsCisJMHgxQjAwMDAwMCwgMHgzNjAwMDAwMCwgLyogZm9yIDEyOC1iaXQgYmxvY2tzLCBSaWpuZGFlbCBuZXZlciB1c2VzIG1vcmUgdGhhbiAxMCByY29uIHZhbHVlcyAqLworfTsKKworLyoqCisgKiBFeHBhbmQgdGhlIGNpcGhlciBrZXkgaW50byB0aGUgZW5jcnlwdGlvbiBrZXkgc2NoZWR1bGUuCisgKi8KK2ludCBwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXkoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgY29uc3QgaW50IGJpdHMsCisJCQlBRVNfS0VZICprZXkpIHsKKwl1MzIgKnJrOworICAgCWludCBpID0gMDsKKwl1MzIgdGVtcDsKKworCWlmICghdXNlcktleSB8fCAha2V5KQorCQlyZXR1cm4gLTE7CisJaWYgKGJpdHMgIT0gMTI4ICYmIGJpdHMgIT0gMTkyICYmIGJpdHMgIT0gMjU2KQorCQlyZXR1cm4gLTI7CisKKwlyayA9IGtleS0+cmRfa2V5OworCisJaWYgKGJpdHM9PTEyOCkKKwkJa2V5LT5yb3VuZHMgPSAxMDsKKwllbHNlIGlmIChiaXRzPT0xOTIpCisJCWtleS0+cm91bmRzID0gMTI7CisJZWxzZQorCQlrZXktPnJvdW5kcyA9IDE0OworCisJcmtbMF0gPSBHRVRVMzIodXNlcktleSAgICAgKTsKKwlya1sxXSA9IEdFVFUzMih1c2VyS2V5ICsgIDQpOworCXJrWzJdID0gR0VUVTMyKHVzZXJLZXkgKyAgOCk7CisJcmtbM10gPSBHRVRVMzIodXNlcktleSArIDEyKTsKKwlpZiAoYml0cyA9PSAxMjgpIHsKKwkJd2hpbGUgKDEpIHsKKwkJCXRlbXAgID0gcmtbM107CisJCQlya1s0XSA9IHJrWzBdIF4KKwkJCQkoVGU0Wyh0ZW1wID4+IDE2KSAmIDB4ZmZdIDw8IDI0KSBeCisJCQkJKFRlNFsodGVtcCA+PiAgOCkgJiAweGZmXSA8PCAxNikgXgorCQkJCShUZTRbKHRlbXAgICAgICApICYgMHhmZl0gPDwgOCkgXgorCQkJCShUZTRbKHRlbXAgPj4gMjQpICAgICAgIF0pIF4KKwkJCQlyY29uW2ldOworCQkJcmtbNV0gPSBya1sxXSBeIHJrWzRdOworCQkJcmtbNl0gPSBya1syXSBeIHJrWzVdOworCQkJcmtbN10gPSBya1szXSBeIHJrWzZdOworCQkJaWYgKCsraSA9PSAxMCkgeworCQkJCXJldHVybiAwOworCQkJfQorCQkJcmsgKz0gNDsKKwkJfQorCX0KKwlya1s0XSA9IEdFVFUzMih1c2VyS2V5ICsgMTYpOworCXJrWzVdID0gR0VUVTMyKHVzZXJLZXkgKyAyMCk7CisJaWYgKGJpdHMgPT0gMTkyKSB7CisJCXdoaWxlICgxKSB7CisJCQl0ZW1wID0gcmtbIDVdOworCQkJcmtbIDZdID0gcmtbIDBdIF4KKwkJCQkoVGU0Wyh0ZW1wID4+IDE2KSAmIDB4ZmZdIDw8IDI0KSBeCisJCQkJKFRlNFsodGVtcCA+PiAgOCkgJiAweGZmXSA8PCAxNikgXgorCQkJCShUZTRbKHRlbXAgICAgICApICYgMHhmZl0gPDwgOCkgXgorCQkJCShUZTRbKHRlbXAgPj4gMjQpICAgICAgIF0pIF4KKwkJCQlyY29uW2ldOworCQkJcmtbIDddID0gcmtbIDFdIF4gcmtbIDZdOworCQkJcmtbIDhdID0gcmtbIDJdIF4gcmtbIDddOworCQkJcmtbIDldID0gcmtbIDNdIF4gcmtbIDhdOworCQkJaWYgKCsraSA9PSA4KSB7CisJCQkJcmV0dXJuIDA7CisJCQl9CisJCQlya1sxMF0gPSBya1sgNF0gXiBya1sgOV07CisJCQlya1sxMV0gPSBya1sgNV0gXiBya1sxMF07CisJCQlyayArPSA2OworCQl9CisJfQorCXJrWzZdID0gR0VUVTMyKHVzZXJLZXkgKyAyNCk7CisJcmtbN10gPSBHRVRVMzIodXNlcktleSArIDI4KTsKKwlpZiAoYml0cyA9PSAyNTYpIHsKKwkJd2hpbGUgKDEpIHsKKwkJCXRlbXAgPSBya1sgN107CisJCQlya1sgOF0gPSBya1sgMF0gXgorCQkJCShUZTRbKHRlbXAgPj4gMTYpICYgMHhmZl0gPDwgMjQpIF4KKwkJCQkoVGU0Wyh0ZW1wID4+ICA4KSAmIDB4ZmZdIDw8IDE2KSBeCisJCQkJKFRlNFsodGVtcCAgICAgICkgJiAweGZmXSA8PCA4KSBeCisJCQkJKFRlNFsodGVtcCA+PiAyNCkgICAgICAgXSkgXgorCQkJCXJjb25baV07CisJCQlya1sgOV0gPSBya1sgMV0gXiBya1sgOF07CisJCQlya1sxMF0gPSBya1sgMl0gXiBya1sgOV07CisJCQlya1sxMV0gPSBya1sgM10gXiBya1sxMF07CisJCQlpZiAoKytpID09IDcpIHsKKwkJCQlyZXR1cm4gMDsKKwkJCX0KKwkJCXRlbXAgPSBya1sxMV07CisJCQlya1sxMl0gPSBya1sgNF0gXgorCQkJCShUZTRbKHRlbXAgPj4gMjQpICAgICAgIF0gPDwgMjQpIF4KKwkJCQkoVGU0Wyh0ZW1wID4+IDE2KSAmIDB4ZmZdIDw8IDE2KSBeCisJCQkJKFRlNFsodGVtcCA+PiAgOCkgJiAweGZmXSA8PCA4KSBeCisJCQkJKFRlNFsodGVtcCAgICAgICkgJiAweGZmXSk7CisJCQlya1sxM10gPSBya1sgNV0gXiBya1sxMl07CisJCQlya1sxNF0gPSBya1sgNl0gXiBya1sxM107CisJCQlya1sxNV0gPSBya1sgN10gXiBya1sxNF07CisKKwkJCXJrICs9IDg7CisgICAgICAgIAl9CisJfQorCXJldHVybiAwOworfQorCisvKioKKyAqIEV4cGFuZCB0aGUgY2lwaGVyIGtleSBpbnRvIHRoZSBkZWNyeXB0aW9uIGtleSBzY2hlZHVsZS4KKyAqLworaW50IHByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5LCBjb25zdCBpbnQgYml0cywKKwkJCSBBRVNfS0VZICprZXkpIHsKKworICAgICAgICB1MzIgKnJrOworCWludCBpLCBqLCBzdGF0dXM7CisJdTMyIHRlbXA7CisKKwkvKiBmaXJzdCwgc3RhcnQgd2l0aCBhbiBlbmNyeXB0aW9uIHNjaGVkdWxlICovCisJc3RhdHVzID0gcHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5KHVzZXJLZXksIGJpdHMsIGtleSk7CisJaWYgKHN0YXR1cyA8IDApCisJCXJldHVybiBzdGF0dXM7CisKKwlyayA9IGtleS0+cmRfa2V5OworCisJLyogaW52ZXJ0IHRoZSBvcmRlciBvZiB0aGUgcm91bmQga2V5czogKi8KKwlmb3IgKGkgPSAwLCBqID0gNCooa2V5LT5yb3VuZHMpOyBpIDwgajsgaSArPSA0LCBqIC09IDQpIHsKKwkJdGVtcCA9IHJrW2kgICAgXTsgcmtbaSAgICBdID0gcmtbaiAgICBdOyBya1tqICAgIF0gPSB0ZW1wOworCQl0ZW1wID0gcmtbaSArIDFdOyBya1tpICsgMV0gPSBya1tqICsgMV07IHJrW2ogKyAxXSA9IHRlbXA7CisJCXRlbXAgPSBya1tpICsgMl07IHJrW2kgKyAyXSA9IHJrW2ogKyAyXTsgcmtbaiArIDJdID0gdGVtcDsKKwkJdGVtcCA9IHJrW2kgKyAzXTsgcmtbaSArIDNdID0gcmtbaiArIDNdOyBya1tqICsgM10gPSB0ZW1wOworCX0KKwkvKiBhcHBseSB0aGUgaW52ZXJzZSBNaXhDb2x1bW4gdHJhbnNmb3JtIHRvIGFsbCByb3VuZCBrZXlzIGJ1dCB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0OiAqLworCWZvciAoaSA9IDE7IGkgPCAoa2V5LT5yb3VuZHMpOyBpKyspIHsKKwkJcmsgKz0gNDsKKwkJZm9yIChqID0gMDsgaiA8IDQ7IGorKykgeworCQkJdTMyIHRwMSwgdHAyLCB0cDQsIHRwOCwgdHA5LCB0cGIsIHRwZCwgdHBlLCBtOworCisJCQl0cDEgPSBya1tqXTsKKwkJCW0gPSB0cDEgJiAweDgwODA4MDgwOworCQkJdHAyID0gKCh0cDEgJiAweDdmN2Y3ZjdmKSA8PCAxKSBeCisJCQkJKChtIC0gKG0gPj4gNykpICYgMHgxYjFiMWIxYik7CisJCQltID0gdHAyICYgMHg4MDgwODA4MDsKKwkJCXRwNCA9ICgodHAyICYgMHg3ZjdmN2Y3ZikgPDwgMSkgXgorCQkJCSgobSAtIChtID4+IDcpKSAmIDB4MWIxYjFiMWIpOworCQkJbSA9IHRwNCAmIDB4ODA4MDgwODA7CisJCQl0cDggPSAoKHRwNCAmIDB4N2Y3ZjdmN2YpIDw8IDEpIF4KKwkJCQkoKG0gLSAobSA+PiA3KSkgJiAweDFiMWIxYjFiKTsKKwkJCXRwOSA9IHRwOCBeIHRwMTsKKwkJCXRwYiA9IHRwOSBeIHRwMjsKKwkJCXRwZCA9IHRwOSBeIHRwNDsKKwkJCXRwZSA9IHRwOCBeIHRwNCBeIHRwMjsKKyNpZiBkZWZpbmVkKFJPVEFURSkKKwkJCXJrW2pdID0gdHBlIF4gUk9UQVRFKHRwZCwxNikgXgorCQkJCVJPVEFURSh0cDksMjQpIF4gUk9UQVRFKHRwYiw4KTsKKyNlbHNlCisJCQlya1tqXSA9IHRwZSBeICh0cGQgPj4gMTYpIF4gKHRwZCA8PCAxNikgXiAKKwkJCQkodHA5ID4+IDgpIF4gKHRwOSA8PCAyNCkgXgorCQkJCSh0cGIgPj4gMjQpIF4gKHRwYiA8PCA4KTsKKyNlbmRpZgorCQl9CisJfQorCXJldHVybiAwOworfQorCisjZW5kaWYgLyogQUVTX0FTTSAqLwpkaWZmIC0tZ2l0IGEvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hZXNfY3RyLmMgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc19jdHIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzlkMTY1Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hZXNfY3RyLmMKQEAgLTAsMCArMSw2MSBAQAorLyogY3J5cHRvL2Flcy9hZXNfY3RyLmMgLSotIG1vZGU6QzsgYy1maWxlLXN0eWxlOiAiZWF5IiAtKi0gKi8KKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKyAqCisgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCisgKgorICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisgKgorICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworICogICAgYWNrbm93bGVkZ21lbnQ6CisgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqCisgKi8KKworI2luY2x1ZGUgPG9wZW5zc2wvYWVzLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9tb2Rlcy5oPgorCit2b2lkIEFFU19jdHIxMjhfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorCQkJc2l6ZV90IGxlbmd0aCwgY29uc3QgQUVTX0tFWSAqa2V5LAorCQkJdW5zaWduZWQgY2hhciBpdmVjW0FFU19CTE9DS19TSVpFXSwKKwkJCXVuc2lnbmVkIGNoYXIgZWNvdW50X2J1ZltBRVNfQkxPQ0tfU0laRV0sCisJCQl1bnNpZ25lZCBpbnQgKm51bSkgeworCUNSWVBUT19jdHIxMjhfZW5jcnlwdChpbixvdXQsbGVuZ3RoLGtleSxpdmVjLGVjb3VudF9idWYsbnVtLChibG9jazEyOF9mKUFFU19lbmNyeXB0KTsKK30KZGlmZiAtLWdpdCBhL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYWVzX2VjYi5jIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hZXNfZWNiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhhYTU2MQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYWVzX2VjYi5jCkBAIC0wLDAgKzEsNzMgQEAKKy8qIGNyeXB0by9hZXMvYWVzX2VjYi5jIC0qLSBtb2RlOkM7IGMtZmlsZS1zdHlsZTogImVheSIgLSotICovCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisgKgorICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorICoKKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorICoKKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKyAqICAgIGFja25vd2xlZGdtZW50OgorICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKgorICovCisKKyNpZm5kZWYgQUVTX0RFQlVHCisjIGlmbmRlZiBOREVCVUcKKyMgIGRlZmluZSBOREVCVUcKKyMgZW5kaWYKKyNlbmRpZgorI2luY2x1ZGUgPGFzc2VydC5oPgorCisjaW5jbHVkZSA8b3BlbnNzbC9hZXMuaD4KKyNpbmNsdWRlICJhZXNfbG9jbC5oIgorCit2b2lkIEFFU19lY2JfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorCQkgICAgIGNvbnN0IEFFU19LRVkgKmtleSwgY29uc3QgaW50IGVuYykgeworCisgICAgICAgIGFzc2VydChpbiAmJiBvdXQgJiYga2V5KTsKKwlhc3NlcnQoKEFFU19FTkNSWVBUID09IGVuYyl8fChBRVNfREVDUllQVCA9PSBlbmMpKTsKKworCWlmIChBRVNfRU5DUllQVCA9PSBlbmMpCisJCUFFU19lbmNyeXB0KGluLCBvdXQsIGtleSk7CisJZWxzZQorCQlBRVNfZGVjcnlwdChpbiwgb3V0LCBrZXkpOworfQorCmRpZmYgLS1naXQgYS9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc19pZ2UuYyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYWVzX2lnZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNjEzNTEKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc19pZ2UuYwpAQCAtMCwwICsxLDMyMyBAQAorLyogY3J5cHRvL2Flcy9hZXNfaWdlLmMgLSotIG1vZGU6QzsgYy1maWxlLXN0eWxlOiAiZWF5IiAtKi0gKi8KKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBDb3B5cmlnaHQgKGMpIDIwMDYgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisgKgorICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorICoKKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorICoKKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKyAqICAgIGFja25vd2xlZGdtZW50OgorICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKgorICovCisKKyNpbmNsdWRlICJjcnlwdGxpYi5oIgorCisjaW5jbHVkZSA8b3BlbnNzbC9hZXMuaD4KKyNpbmNsdWRlICJhZXNfbG9jbC5oIgorCisjZGVmaW5lIE5fV09SRFMgKEFFU19CTE9DS19TSVpFIC8gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKQordHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFbTl9XT1JEU107Cit9IGFlc19ibG9ja190OworCisvKiBYWFg6IHByb2JhYmx5IHNvbWUgYmV0dGVyIHdheSB0byBkbyB0aGlzICovCisjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQorI2RlZmluZSBVTkFMSUdORURfTUVNT1BTX0FSRV9GQVNUIDEKKyNlbHNlCisjZGVmaW5lIFVOQUxJR05FRF9NRU1PUFNfQVJFX0ZBU1QgMAorI2VuZGlmCisKKyNpZiBVTkFMSUdORURfTUVNT1BTX0FSRV9GQVNUCisjZGVmaW5lIGxvYWRfYmxvY2soZCwgcykgICAgICAgIChkKSA9ICooY29uc3QgYWVzX2Jsb2NrX3QgKikocykKKyNkZWZpbmUgc3RvcmVfYmxvY2soZCwgcykgICAgICAgKihhZXNfYmxvY2tfdCAqKShkKSA9IChzKQorI2Vsc2UKKyNkZWZpbmUgbG9hZF9ibG9jayhkLCBzKSAgICAgICAgbWVtY3B5KChkKS5kYXRhLCAocyksIEFFU19CTE9DS19TSVpFKQorI2RlZmluZSBzdG9yZV9ibG9jayhkLCBzKSAgICAgICBtZW1jcHkoKGQpLCAocykuZGF0YSwgQUVTX0JMT0NLX1NJWkUpCisjZW5kaWYKKworLyogTi5CLiBUaGUgSVYgZm9yIHRoaXMgbW9kZSBpcyBfdHdpY2VfIHRoZSBibG9jayBzaXplICovCisKK3ZvaWQgQUVTX2lnZV9lbmNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCisJCQkJCSBzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisJCQkJCSB1bnNpZ25lZCBjaGFyICppdmVjLCBjb25zdCBpbnQgZW5jKQorCXsKKwlzaXplX3QgbjsKKwlzaXplX3QgbGVuID0gbGVuZ3RoOworCisJT1BFTlNTTF9hc3NlcnQoaW4gJiYgb3V0ICYmIGtleSAmJiBpdmVjKTsKKwlPUEVOU1NMX2Fzc2VydCgoQUVTX0VOQ1JZUFQgPT0gZW5jKXx8KEFFU19ERUNSWVBUID09IGVuYykpOworCU9QRU5TU0xfYXNzZXJ0KChsZW5ndGglQUVTX0JMT0NLX1NJWkUpID09IDApOworCisJbGVuID0gbGVuZ3RoIC8gQUVTX0JMT0NLX1NJWkU7CisKKwlpZiAoQUVTX0VOQ1JZUFQgPT0gZW5jKQorCQl7CisJCWlmIChpbiAhPSBvdXQgJiYKKwkJICAgIChVTkFMSUdORURfTUVNT1BTX0FSRV9GQVNUIHx8ICgoc2l6ZV90KWlufChzaXplX3Qpb3V0fChzaXplX3QpaXZlYyklc2l6ZW9mKGxvbmcpPT0wKSkKKwkJCXsKKwkJCWFlc19ibG9ja190ICppdnAgPSAoYWVzX2Jsb2NrX3QgKilpdmVjOworCQkJYWVzX2Jsb2NrX3QgKml2MnAgPSAoYWVzX2Jsb2NrX3QgKikoaXZlYyArIEFFU19CTE9DS19TSVpFKTsKKworCQkJd2hpbGUgKGxlbikKKwkJCQl7CisJCQkJYWVzX2Jsb2NrX3QgKmlucCA9IChhZXNfYmxvY2tfdCAqKWluOworCQkJCWFlc19ibG9ja190ICpvdXRwID0gKGFlc19ibG9ja190ICopb3V0OworCisJCQkJZm9yKG49MCA7IG4gPCBOX1dPUkRTOyArK24pCisJCQkJCW91dHAtPmRhdGFbbl0gPSBpbnAtPmRhdGFbbl0gXiBpdnAtPmRhdGFbbl07CisJCQkJQUVTX2VuY3J5cHQoKHVuc2lnbmVkIGNoYXIgKilvdXRwLT5kYXRhLCAodW5zaWduZWQgY2hhciAqKW91dHAtPmRhdGEsIGtleSk7CisJCQkJZm9yKG49MCA7IG4gPCBOX1dPUkRTOyArK24pCisJCQkJCW91dHAtPmRhdGFbbl0gXj0gaXYycC0+ZGF0YVtuXTsKKwkJCQlpdnAgPSBvdXRwOworCQkJCWl2MnAgPSBpbnA7CisJCQkJLS1sZW47CisJCQkJaW4gKz0gQUVTX0JMT0NLX1NJWkU7CisJCQkJb3V0ICs9IEFFU19CTE9DS19TSVpFOworCQkJCX0KKwkJCW1lbWNweShpdmVjLCBpdnAtPmRhdGEsIEFFU19CTE9DS19TSVpFKTsKKwkJCW1lbWNweShpdmVjICsgQUVTX0JMT0NLX1NJWkUsIGl2MnAtPmRhdGEsIEFFU19CTE9DS19TSVpFKTsKKwkJCX0KKwkJZWxzZQorCQkJeworCQkJYWVzX2Jsb2NrX3QgdG1wLCB0bXAyOworCQkJYWVzX2Jsb2NrX3QgaXY7CisJCQlhZXNfYmxvY2tfdCBpdjI7CisKKwkJCWxvYWRfYmxvY2soaXYsIGl2ZWMpOworCQkJbG9hZF9ibG9jayhpdjIsIGl2ZWMgKyBBRVNfQkxPQ0tfU0laRSk7CisKKwkJCXdoaWxlIChsZW4pCisJCQkJeworCQkJCWxvYWRfYmxvY2sodG1wLCBpbik7CisJCQkJZm9yKG49MCA7IG4gPCBOX1dPUkRTOyArK24pCisJCQkJCXRtcDIuZGF0YVtuXSA9IHRtcC5kYXRhW25dIF4gaXYuZGF0YVtuXTsKKwkJCQlBRVNfZW5jcnlwdCgodW5zaWduZWQgY2hhciAqKXRtcDIuZGF0YSwgKHVuc2lnbmVkIGNoYXIgKil0bXAyLmRhdGEsIGtleSk7CisJCQkJZm9yKG49MCA7IG4gPCBOX1dPUkRTOyArK24pCisJCQkJCXRtcDIuZGF0YVtuXSBePSBpdjIuZGF0YVtuXTsKKwkJCQlzdG9yZV9ibG9jayhvdXQsIHRtcDIpOworCQkJCWl2ID0gdG1wMjsKKwkJCQlpdjIgPSB0bXA7CisJCQkJLS1sZW47CisJCQkJaW4gKz0gQUVTX0JMT0NLX1NJWkU7CisJCQkJb3V0ICs9IEFFU19CTE9DS19TSVpFOworCQkJCX0KKwkJCW1lbWNweShpdmVjLCBpdi5kYXRhLCBBRVNfQkxPQ0tfU0laRSk7CisJCQltZW1jcHkoaXZlYyArIEFFU19CTE9DS19TSVpFLCBpdjIuZGF0YSwgQUVTX0JMT0NLX1NJWkUpOworCQkJfQorCQl9CisJZWxzZQorCQl7CisJCWlmIChpbiAhPSBvdXQgJiYKKwkJICAgIChVTkFMSUdORURfTUVNT1BTX0FSRV9GQVNUIHx8ICgoc2l6ZV90KWlufChzaXplX3Qpb3V0fChzaXplX3QpaXZlYyklc2l6ZW9mKGxvbmcpPT0wKSkKKwkJCXsKKwkJCWFlc19ibG9ja190ICppdnAgPSAoYWVzX2Jsb2NrX3QgKilpdmVjOworCQkJYWVzX2Jsb2NrX3QgKml2MnAgPSAoYWVzX2Jsb2NrX3QgKikoaXZlYyArIEFFU19CTE9DS19TSVpFKTsKKworCQkJd2hpbGUgKGxlbikKKwkJCQl7CisJCQkJYWVzX2Jsb2NrX3QgdG1wOworCQkJCWFlc19ibG9ja190ICppbnAgPSAoYWVzX2Jsb2NrX3QgKilpbjsKKwkJCQlhZXNfYmxvY2tfdCAqb3V0cCA9IChhZXNfYmxvY2tfdCAqKW91dDsKKworCQkJCWZvcihuPTAgOyBuIDwgTl9XT1JEUzsgKytuKQorCQkJCQl0bXAuZGF0YVtuXSA9IGlucC0+ZGF0YVtuXSBeIGl2MnAtPmRhdGFbbl07CisJCQkJQUVTX2RlY3J5cHQoKHVuc2lnbmVkIGNoYXIgKil0bXAuZGF0YSwgKHVuc2lnbmVkIGNoYXIgKilvdXRwLT5kYXRhLCBrZXkpOworCQkJCWZvcihuPTAgOyBuIDwgTl9XT1JEUzsgKytuKQorCQkJCQlvdXRwLT5kYXRhW25dIF49IGl2cC0+ZGF0YVtuXTsKKwkJCQlpdnAgPSBpbnA7CisJCQkJaXYycCA9IG91dHA7CisJCQkJLS1sZW47CisJCQkJaW4gKz0gQUVTX0JMT0NLX1NJWkU7CisJCQkJb3V0ICs9IEFFU19CTE9DS19TSVpFOworCQkJCX0KKwkJCW1lbWNweShpdmVjLCBpdnAtPmRhdGEsIEFFU19CTE9DS19TSVpFKTsKKwkJCW1lbWNweShpdmVjICsgQUVTX0JMT0NLX1NJWkUsIGl2MnAtPmRhdGEsIEFFU19CTE9DS19TSVpFKTsKKwkJCX0KKwkJZWxzZQorCQkJeworCQkJYWVzX2Jsb2NrX3QgdG1wLCB0bXAyOworCQkJYWVzX2Jsb2NrX3QgaXY7CisJCQlhZXNfYmxvY2tfdCBpdjI7CisKKwkJCWxvYWRfYmxvY2soaXYsIGl2ZWMpOworCQkJbG9hZF9ibG9jayhpdjIsIGl2ZWMgKyBBRVNfQkxPQ0tfU0laRSk7CisKKwkJCXdoaWxlIChsZW4pCisJCQkJeworCQkJCWxvYWRfYmxvY2sodG1wLCBpbik7CisJCQkJdG1wMiA9IHRtcDsKKwkJCQlmb3Iobj0wIDsgbiA8IE5fV09SRFM7ICsrbikKKwkJCQkJdG1wLmRhdGFbbl0gXj0gaXYyLmRhdGFbbl07CisJCQkJQUVTX2RlY3J5cHQoKHVuc2lnbmVkIGNoYXIgKil0bXAuZGF0YSwgKHVuc2lnbmVkIGNoYXIgKil0bXAuZGF0YSwga2V5KTsKKwkJCQlmb3Iobj0wIDsgbiA8IE5fV09SRFM7ICsrbikKKwkJCQkJdG1wLmRhdGFbbl0gXj0gaXYuZGF0YVtuXTsKKwkJCQlzdG9yZV9ibG9jayhvdXQsIHRtcCk7CisJCQkJaXYgPSB0bXAyOworCQkJCWl2MiA9IHRtcDsKKwkJCQktLWxlbjsKKwkJCQlpbiArPSBBRVNfQkxPQ0tfU0laRTsKKwkJCQlvdXQgKz0gQUVTX0JMT0NLX1NJWkU7CisJCQkJfQorCQkJbWVtY3B5KGl2ZWMsIGl2LmRhdGEsIEFFU19CTE9DS19TSVpFKTsKKwkJCW1lbWNweShpdmVjICsgQUVTX0JMT0NLX1NJWkUsIGl2Mi5kYXRhLCBBRVNfQkxPQ0tfU0laRSk7CisJCQl9CisJCX0KKwl9CisKKy8qCisgKiBOb3RlIHRoYXQgaXRzIGVmZmVjdGl2ZWx5IGltcG9zc2libGUgdG8gZG8gYmlJR0UgaW4gYW55dGhpbmcgb3RoZXIKKyAqIHRoYW4gYSBzaW5nbGUgcGFzcywgc28gbm8gcHJvdmlzaW9uIGlzIG1hZGUgZm9yIGNoYWluaW5nLgorICovCisKKy8qIE4uQi4gVGhlIElWIGZvciB0aGlzIG1vZGUgaXMgX2ZvdXIgdGltZXNfIHRoZSBibG9jayBzaXplICovCisKK3ZvaWQgQUVTX2JpX2lnZV9lbmNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCisJCQkJCQlzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisJCQkJCQljb25zdCBBRVNfS0VZICprZXkyLCBjb25zdCB1bnNpZ25lZCBjaGFyICppdmVjLAorCQkJCQkJY29uc3QgaW50IGVuYykKKwl7CisJc2l6ZV90IG47CisJc2l6ZV90IGxlbiA9IGxlbmd0aDsKKwl1bnNpZ25lZCBjaGFyIHRtcFtBRVNfQkxPQ0tfU0laRV07CisJdW5zaWduZWQgY2hhciB0bXAyW0FFU19CTE9DS19TSVpFXTsKKwl1bnNpZ25lZCBjaGFyIHRtcDNbQUVTX0JMT0NLX1NJWkVdOworCXVuc2lnbmVkIGNoYXIgcHJldltBRVNfQkxPQ0tfU0laRV07CisJY29uc3QgdW5zaWduZWQgY2hhciAqaXY7CisJY29uc3QgdW5zaWduZWQgY2hhciAqaXYyOworCisJT1BFTlNTTF9hc3NlcnQoaW4gJiYgb3V0ICYmIGtleSAmJiBpdmVjKTsKKwlPUEVOU1NMX2Fzc2VydCgoQUVTX0VOQ1JZUFQgPT0gZW5jKXx8KEFFU19ERUNSWVBUID09IGVuYykpOworCU9QRU5TU0xfYXNzZXJ0KChsZW5ndGglQUVTX0JMT0NLX1NJWkUpID09IDApOworCisJaWYgKEFFU19FTkNSWVBUID09IGVuYykKKwkJeworCQkvKiBYWFg6IERvIGEgc2VwYXJhdGUgY2FzZSBmb3Igd2hlbiBpbiAhPSBvdXQgKHN0cmljdGx5IHNob3VsZAorCQkgICBjaGVjayBmb3Igb3ZlcmxhcCwgdG9vKSAqLworCisJCS8qIEZpcnN0IHRoZSBmb3J3YXJkIHBhc3MgKi8gCisJCWl2ID0gaXZlYzsKKwkJaXYyID0gaXZlYyArIEFFU19CTE9DS19TSVpFOworCQl3aGlsZSAobGVuID49IEFFU19CTE9DS19TSVpFKQorCQkJeworCQkJZm9yKG49MCA7IG4gPCBBRVNfQkxPQ0tfU0laRSA7ICsrbikKKwkJCQlvdXRbbl0gPSBpbltuXSBeIGl2W25dOworCQkJQUVTX2VuY3J5cHQob3V0LCBvdXQsIGtleSk7CisJCQlmb3Iobj0wIDsgbiA8IEFFU19CTE9DS19TSVpFIDsgKytuKQorCQkJCW91dFtuXSBePSBpdjJbbl07CisJCQlpdiA9IG91dDsKKwkJCW1lbWNweShwcmV2LCBpbiwgQUVTX0JMT0NLX1NJWkUpOworCQkJaXYyID0gcHJldjsKKwkJCWxlbiAtPSBBRVNfQkxPQ0tfU0laRTsKKwkJCWluICs9IEFFU19CTE9DS19TSVpFOworCQkJb3V0ICs9IEFFU19CTE9DS19TSVpFOworCQkJfQorCisJCS8qIEFuZCBub3cgYmFja3dhcmRzICovCisJCWl2ID0gaXZlYyArIEFFU19CTE9DS19TSVpFKjI7CisJCWl2MiA9IGl2ZWMgKyBBRVNfQkxPQ0tfU0laRSozOworCQlsZW4gPSBsZW5ndGg7CisJCXdoaWxlKGxlbiA+PSBBRVNfQkxPQ0tfU0laRSkKKwkJCXsKKwkJCW91dCAtPSBBRVNfQkxPQ0tfU0laRTsKKwkJCS8qIFhYWDogcmVkdWNlIGNvcGllcyBieSBhbHRlcm5hdGluZyBiZXR3ZWVuIGJ1ZmZlcnMgKi8KKwkJCW1lbWNweSh0bXAsIG91dCwgQUVTX0JMT0NLX1NJWkUpOworCQkJZm9yKG49MCA7IG4gPCBBRVNfQkxPQ0tfU0laRSA7ICsrbikKKwkJCQlvdXRbbl0gXj0gaXZbbl07CisJCQkvKgkJCWhleGR1bXAoc3Rkb3V0LCAib3V0IF4gaXYiLCBvdXQsIEFFU19CTE9DS19TSVpFKTsgKi8KKwkJCUFFU19lbmNyeXB0KG91dCwgb3V0LCBrZXkpOworCQkJLyoJCQloZXhkdW1wKHN0ZG91dCwiZW5jIiwgb3V0LCBBRVNfQkxPQ0tfU0laRSk7ICovCisJCQkvKgkJCWhleGR1bXAoc3Rkb3V0LCJpdjIiLCBpdjIsIEFFU19CTE9DS19TSVpFKTsgKi8KKwkJCWZvcihuPTAgOyBuIDwgQUVTX0JMT0NLX1NJWkUgOyArK24pCisJCQkJb3V0W25dIF49IGl2MltuXTsKKwkJCS8qCQkJaGV4ZHVtcChzdGRvdXQsIm91dCIsIG91dCwgQUVTX0JMT0NLX1NJWkUpOyAqLworCQkJaXYgPSBvdXQ7CisJCQltZW1jcHkocHJldiwgdG1wLCBBRVNfQkxPQ0tfU0laRSk7CisJCQlpdjIgPSBwcmV2OworCQkJbGVuIC09IEFFU19CTE9DS19TSVpFOworCQkJfQorCQl9CisJZWxzZQorCQl7CisJCS8qIEZpcnN0IGJhY2t3YXJkcyAqLworCQlpdiA9IGl2ZWMgKyBBRVNfQkxPQ0tfU0laRSoyOworCQlpdjIgPSBpdmVjICsgQUVTX0JMT0NLX1NJWkUqMzsKKwkJaW4gKz0gbGVuZ3RoOworCQlvdXQgKz0gbGVuZ3RoOworCQl3aGlsZSAobGVuID49IEFFU19CTE9DS19TSVpFKQorCQkJeworCQkJaW4gLT0gQUVTX0JMT0NLX1NJWkU7CisJCQlvdXQgLT0gQUVTX0JMT0NLX1NJWkU7CisJCQltZW1jcHkodG1wLCBpbiwgQUVTX0JMT0NLX1NJWkUpOworCQkJbWVtY3B5KHRtcDIsIGluLCBBRVNfQkxPQ0tfU0laRSk7CisJCQlmb3Iobj0wIDsgbiA8IEFFU19CTE9DS19TSVpFIDsgKytuKQorCQkJCXRtcFtuXSBePSBpdjJbbl07CisJCQlBRVNfZGVjcnlwdCh0bXAsIG91dCwga2V5KTsKKwkJCWZvcihuPTAgOyBuIDwgQUVTX0JMT0NLX1NJWkUgOyArK24pCisJCQkJb3V0W25dIF49IGl2W25dOworCQkJbWVtY3B5KHRtcDMsIHRtcDIsIEFFU19CTE9DS19TSVpFKTsKKwkJCWl2ID0gdG1wMzsKKwkJCWl2MiA9IG91dDsKKwkJCWxlbiAtPSBBRVNfQkxPQ0tfU0laRTsKKwkJCX0KKworCQkvKiBBbmQgbm93IGZvcndhcmRzICovCisJCWl2ID0gaXZlYzsKKwkJaXYyID0gaXZlYyArIEFFU19CTE9DS19TSVpFOworCQlsZW4gPSBsZW5ndGg7CisJCXdoaWxlIChsZW4gPj0gQUVTX0JMT0NLX1NJWkUpCisJCQl7CisJCQltZW1jcHkodG1wLCBvdXQsIEFFU19CTE9DS19TSVpFKTsKKwkJCW1lbWNweSh0bXAyLCBvdXQsIEFFU19CTE9DS19TSVpFKTsKKwkJCWZvcihuPTAgOyBuIDwgQUVTX0JMT0NLX1NJWkUgOyArK24pCisJCQkJdG1wW25dIF49IGl2MltuXTsKKwkJCUFFU19kZWNyeXB0KHRtcCwgb3V0LCBrZXkpOworCQkJZm9yKG49MCA7IG4gPCBBRVNfQkxPQ0tfU0laRSA7ICsrbikKKwkJCQlvdXRbbl0gXj0gaXZbbl07CisJCQltZW1jcHkodG1wMywgdG1wMiwgQUVTX0JMT0NLX1NJWkUpOworCQkJaXYgPSB0bXAzOworCQkJaXYyID0gb3V0OworCQkJbGVuIC09IEFFU19CTE9DS19TSVpFOworCQkJaW4gKz0gQUVTX0JMT0NLX1NJWkU7CisJCQlvdXQgKz0gQUVTX0JMT0NLX1NJWkU7CisJCQl9CisJCX0KKwl9CmRpZmYgLS1naXQgYS9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc19sb2NsLmggYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc19sb2NsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU0YjQ0MgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYWVzX2xvY2wuaApAQCAtMCwwICsxLDg5IEBACisvKiBjcnlwdG8vYWVzL2Flcy5oIC0qLSBtb2RlOkM7IGMtZmlsZS1zdHlsZTogImVheSIgLSotICovCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisgKgorICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorICoKKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorICoKKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKyAqICAgIGFja25vd2xlZGdtZW50OgorICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKgorICovCisKKyNpZm5kZWYgSEVBREVSX0FFU19MT0NMX0gKKyNkZWZpbmUgSEVBREVSX0FFU19MT0NMX0gKKworI2luY2x1ZGUgPG9wZW5zc2wvZV9vczIuaD4KKworI2lmZGVmIE9QRU5TU0xfTk9fQUVTCisjZXJyb3IgQUVTIGlzIGRpc2FibGVkLgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKGRlZmluZWQoX01fSVg4NikgfHwgZGVmaW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfTV9YNjQpKQorIyBkZWZpbmUgU1dBUCh4KSAoX2xyb3RsKHgsIDgpICYgMHgwMGZmMDBmZiB8IF9scm90cih4LCA4KSAmIDB4ZmYwMGZmMDApCisjIGRlZmluZSBHRVRVMzIocCkgU1dBUCgqKCh1MzIgKikocCkpKQorIyBkZWZpbmUgUFVUVTMyKGN0LCBzdCkgeyAqKCh1MzIgKikoY3QpKSA9IFNXQVAoKHN0KSk7IH0KKyNlbHNlCisjIGRlZmluZSBHRVRVMzIocHQpICgoKHUzMikocHQpWzBdIDw8IDI0KSBeICgodTMyKShwdClbMV0gPDwgMTYpIF4gKCh1MzIpKHB0KVsyXSA8PCAgOCkgXiAoKHUzMikocHQpWzNdKSkKKyMgZGVmaW5lIFBVVFUzMihjdCwgc3QpIHsgKGN0KVswXSA9ICh1OCkoKHN0KSA+PiAyNCk7IChjdClbMV0gPSAodTgpKChzdCkgPj4gMTYpOyAoY3QpWzJdID0gKHU4KSgoc3QpID4+ICA4KTsgKGN0KVszXSA9ICh1OCkoc3QpOyB9CisjZW5kaWYKKworI2lmZGVmIEFFU19MT05HCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOworI2Vsc2UKK3R5cGVkZWYgdW5zaWduZWQgaW50IHUzMjsKKyNlbmRpZgordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1MTY7Cit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdTg7CisKKyNkZWZpbmUgTUFYS0MgICAoMjU2LzMyKQorI2RlZmluZSBNQVhLQiAgICgyNTYvOCkKKyNkZWZpbmUgTUFYTlIgICAxNAorCisvKiBUaGlzIGNvbnRyb2xzIGxvb3AtdW5yb2xsaW5nIGluIGFlc19jb3JlLmMgKi8KKyN1bmRlZiBGVUxMX1VOUk9MTAorCisjZW5kaWYgLyogIUhFQURFUl9BRVNfTE9DTF9IICovCmRpZmYgLS1naXQgYS9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc19taXNjLmMgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc19taXNjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA4MzQ4OAotLS0gL2Rldi9udWxsCisrKyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYWVzX21pc2MuYwpAQCAtMCwwICsxLDg1IEBACisvKiBjcnlwdG8vYWVzL2Flc19taXNjLmMgLSotIG1vZGU6QzsgYy1maWxlLXN0eWxlOiAiZWF5IiAtKi0gKi8KKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKyAqCisgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCisgKgorICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisgKgorICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworICogICAgYWNrbm93bGVkZ21lbnQ6CisgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqCisgKi8KKworI2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNzbHYuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgorI2luY2x1ZGUgPG9wZW5zc2wvYWVzLmg+CisjaW5jbHVkZSAiYWVzX2xvY2wuaCIKKworY29uc3QgY2hhciBBRVNfdmVyc2lvbltdPSJBRVMiIE9QRU5TU0xfVkVSU0lPTl9QVEVYVDsKKworY29uc3QgY2hhciAqQUVTX29wdGlvbnModm9pZCkgeworI2lmZGVmIEZVTExfVU5ST0xMCisgICAgICAgIHJldHVybiAiYWVzKGZ1bGwpIjsKKyNlbHNlICAgCisgICAgICAgIHJldHVybiAiYWVzKHBhcnRpYWwpIjsKKyNlbmRpZgorfQorCisvKiBGSVBTIHdyYXBwZXIgZnVuY3Rpb25zIHRvIGJsb2NrIGxvdyBsZXZlbCBBRVMgY2FsbHMgaW4gRklQUyBtb2RlICovCisKK2ludCBBRVNfc2V0X2VuY3J5cHRfa2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXksIGNvbnN0IGludCBiaXRzLAorCQkJQUVTX0tFWSAqa2V5KQorCXsKKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKwlmaXBzX2NpcGhlcl9hYm9ydChBRVMpOworI2VuZGlmCisJcmV0dXJuIHByaXZhdGVfQUVTX3NldF9lbmNyeXB0X2tleSh1c2VyS2V5LCBiaXRzLCBrZXkpOworCX0KKworaW50IEFFU19zZXRfZGVjcnlwdF9rZXkoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgY29uc3QgaW50IGJpdHMsCisJCQlBRVNfS0VZICprZXkpCisJeworI2lmZGVmIE9QRU5TU0xfRklQUworCWZpcHNfY2lwaGVyX2Fib3J0KEFFUyk7CisjZW5kaWYKKwlyZXR1cm4gcHJpdmF0ZV9BRVNfc2V0X2RlY3J5cHRfa2V5KHVzZXJLZXksIGJpdHMsIGtleSk7CisJfQpkaWZmIC0tZ2l0IGEvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hZXNfb2ZiLmMgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc19vZmIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGJmMGI4Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hZXNfb2ZiLmMKQEAgLTAsMCArMSw2MCBAQAorLyogY3J5cHRvL2Flcy9hZXNfb2ZiLmMgLSotIG1vZGU6QzsgYy1maWxlLXN0eWxlOiAiZWF5IiAtKi0gKi8KKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNiBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKyAqCisgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCisgKgorICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisgKgorICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworICogICAgYWNrbm93bGVkZ21lbnQ6CisgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqCisgKi8KKworI2luY2x1ZGUgPG9wZW5zc2wvYWVzLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9tb2Rlcy5oPgorCit2b2lkIEFFU19vZmIxMjhfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorCXNpemVfdCBsZW5ndGgsIGNvbnN0IEFFU19LRVkgKmtleSwKKwl1bnNpZ25lZCBjaGFyICppdmVjLCBpbnQgKm51bSkKK3sKKwlDUllQVE9fb2ZiMTI4X2VuY3J5cHQoaW4sb3V0LGxlbmd0aCxrZXksaXZlYyxudW0sKGJsb2NrMTI4X2YpQUVTX2VuY3J5cHQpOworfQpkaWZmIC0tZ2l0IGEvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hZXNfd3JhcC5jIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hZXNfd3JhcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZDczZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc193cmFwLmMKQEAgLTAsMCArMSwyNTkgQEAKKy8qIGNyeXB0by9hZXMvYWVzX3dyYXAuYyAqLworLyogV3JpdHRlbiBieSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NMCisgKiBwcm9qZWN0LgorICovCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogQ29weXJpZ2h0IChjKSAyMDA4IFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgorICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorICoKKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bworICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKKyAqICAgIGxpY2Vuc2luZ0BPcGVuU1NMLm9yZy4KKyAqCisgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKyAqCisgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisgKiAgICBhY2tub3dsZWRnbWVudDoKKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICovCisKKyNpbmNsdWRlICJjcnlwdGxpYi5oIgorI2luY2x1ZGUgPG9wZW5zc2wvYWVzLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9iaW8uaD4KKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZGVmYXVsdF9pdltdID0geworICAweEE2LCAweEE2LCAweEE2LCAweEE2LCAweEE2LCAweEE2LCAweEE2LCAweEE2LAorfTsKKworaW50IEFFU193cmFwX2tleShBRVNfS0VZICprZXksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKml2LAorCQl1bnNpZ25lZCBjaGFyICpvdXQsCisJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBpbnQgaW5sZW4pCisJeworCXVuc2lnbmVkIGNoYXIgKkEsIEJbMTZdLCAqUjsKKwl1bnNpZ25lZCBpbnQgaSwgaiwgdDsKKwlpZiAoKGlubGVuICYgMHg3KSB8fCAoaW5sZW4gPCA4KSkKKwkJcmV0dXJuIC0xOworCUEgPSBCOworCXQgPSAxOworCW1lbWNweShvdXQgKyA4LCBpbiwgaW5sZW4pOworCWlmICghaXYpCisJCWl2ID0gZGVmYXVsdF9pdjsKKworCW1lbWNweShBLCBpdiwgOCk7CisKKwlmb3IgKGogPSAwOyBqIDwgNjsgaisrKQorCQl7CisJCVIgPSBvdXQgKyA4OworCQlmb3IgKGkgPSAwOyBpIDwgaW5sZW47IGkgKz0gOCwgdCsrLCBSICs9IDgpCisJCQl7CisJCQltZW1jcHkoQiArIDgsIFIsIDgpOworCQkJQUVTX2VuY3J5cHQoQiwgQiwga2V5KTsKKwkJCUFbN10gXj0gKHVuc2lnbmVkIGNoYXIpKHQgJiAweGZmKTsKKwkJCWlmICh0ID4gMHhmZikJCisJCQkJeworCQkJCUFbNl0gXj0gKHVuc2lnbmVkIGNoYXIpKCh0ID4+IDgpICYgMHhmZik7CisJCQkJQVs1XSBePSAodW5zaWduZWQgY2hhcikoKHQgPj4gMTYpICYgMHhmZik7CisJCQkJQVs0XSBePSAodW5zaWduZWQgY2hhcikoKHQgPj4gMjQpICYgMHhmZik7CisJCQkJfQorCQkJbWVtY3B5KFIsIEIgKyA4LCA4KTsKKwkJCX0KKwkJfQorCW1lbWNweShvdXQsIEEsIDgpOworCXJldHVybiBpbmxlbiArIDg7CisJfQorCitpbnQgQUVTX3Vud3JhcF9rZXkoQUVTX0tFWSAqa2V5LCBjb25zdCB1bnNpZ25lZCBjaGFyICppdiwKKwkJdW5zaWduZWQgY2hhciAqb3V0LAorCQljb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgaW50IGlubGVuKQorCXsKKwl1bnNpZ25lZCBjaGFyICpBLCBCWzE2XSwgKlI7CisJdW5zaWduZWQgaW50IGksIGosIHQ7CisJaW5sZW4gLT0gODsKKwlpZiAoaW5sZW4gJiAweDcpCisJCXJldHVybiAtMTsKKwlpZiAoaW5sZW4gPCA4KQorCQlyZXR1cm4gLTE7CisJQSA9IEI7CisJdCA9ICA2ICogKGlubGVuID4+IDMpOworCW1lbWNweShBLCBpbiwgOCk7CisJbWVtY3B5KG91dCwgaW4gKyA4LCBpbmxlbik7CisJZm9yIChqID0gMDsgaiA8IDY7IGorKykKKwkJeworCQlSID0gb3V0ICsgaW5sZW4gLSA4OworCQlmb3IgKGkgPSAwOyBpIDwgaW5sZW47IGkgKz0gOCwgdC0tLCBSIC09IDgpCisJCQl7CisJCQlBWzddIF49ICh1bnNpZ25lZCBjaGFyKSh0ICYgMHhmZik7CisJCQlpZiAodCA+IDB4ZmYpCQorCQkJCXsKKwkJCQlBWzZdIF49ICh1bnNpZ25lZCBjaGFyKSgodCA+PiA4KSAmIDB4ZmYpOworCQkJCUFbNV0gXj0gKHVuc2lnbmVkIGNoYXIpKCh0ID4+IDE2KSAmIDB4ZmYpOworCQkJCUFbNF0gXj0gKHVuc2lnbmVkIGNoYXIpKCh0ID4+IDI0KSAmIDB4ZmYpOworCQkJCX0KKwkJCW1lbWNweShCICsgOCwgUiwgOCk7CisJCQlBRVNfZGVjcnlwdChCLCBCLCBrZXkpOworCQkJbWVtY3B5KFIsIEIgKyA4LCA4KTsKKwkJCX0KKwkJfQorCWlmICghaXYpCisJCWl2ID0gZGVmYXVsdF9pdjsKKwlpZiAobWVtY21wKEEsIGl2LCA4KSkKKwkJeworCQlPUEVOU1NMX2NsZWFuc2Uob3V0LCBpbmxlbik7CisJCXJldHVybiAwOworCQl9CisJcmV0dXJuIGlubGVuOworCX0KKworI2lmZGVmIEFFU19XUkFQX1RFU1QKKworaW50IEFFU193cmFwX3Vud3JhcF90ZXN0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtlaywgaW50IGtleWJpdHMsCisJCQkgY29uc3QgdW5zaWduZWQgY2hhciAqaXYsCisJCQkgY29uc3QgdW5zaWduZWQgY2hhciAqZW91dCwKKwkJCSBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksIGludCBrZXlsZW4pCisJeworCXVuc2lnbmVkIGNoYXIgKm90bXAgPSBOVUxMLCAqcHRtcCA9IE5VTEw7CisJaW50IHIsIHJldCA9IDA7CisJQUVTX0tFWSB3Y3R4OworCW90bXAgPSBPUEVOU1NMX21hbGxvYyhrZXlsZW4gKyA4KTsKKwlwdG1wID0gT1BFTlNTTF9tYWxsb2Moa2V5bGVuKTsKKwlpZiAoIW90bXAgfHwgIXB0bXApCisJCXJldHVybiAwOworCWlmIChBRVNfc2V0X2VuY3J5cHRfa2V5KGtlaywga2V5Yml0cywgJndjdHgpKQorCQlnb3RvIGVycjsKKwlyID0gQUVTX3dyYXBfa2V5KCZ3Y3R4LCBpdiwgb3RtcCwga2V5LCBrZXlsZW4pOworCWlmIChyIDw9IDApCisJCWdvdG8gZXJyOworCisJaWYgKGVvdXQgJiYgbWVtY21wKGVvdXQsIG90bXAsIGtleWxlbikpCisJCWdvdG8gZXJyOworCQkKKwlpZiAoQUVTX3NldF9kZWNyeXB0X2tleShrZWssIGtleWJpdHMsICZ3Y3R4KSkKKwkJZ290byBlcnI7CisJciA9IEFFU191bndyYXBfa2V5KCZ3Y3R4LCBpdiwgcHRtcCwgb3RtcCwgcik7CisKKwlpZiAobWVtY21wKGtleSwgcHRtcCwga2V5bGVuKSkKKwkJZ290byBlcnI7CisKKwlyZXQgPSAxOworCisJZXJyOgorCWlmIChvdG1wKQorCQlPUEVOU1NMX2ZyZWUob3RtcCk7CisJaWYgKHB0bXApCisJCU9QRU5TU0xfZnJlZShwdG1wKTsKKworCXJldHVybiByZXQ7CisKKwl9CisKKworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGtla1tdID0geworICAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LAorICAweDA4LCAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmLAorICAweDEwLCAweDExLCAweDEyLCAweDEzLCAweDE0LCAweDE1LCAweDE2LCAweDE3LAorICAweDE4LCAweDE5LCAweDFhLCAweDFiLCAweDFjLCAweDFkLCAweDFlLCAweDFmCit9OworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrZXlbXSA9IHsKKyAgMHgwMCwgMHgxMSwgMHgyMiwgMHgzMywgMHg0NCwgMHg1NSwgMHg2NiwgMHg3NywKKyAgMHg4OCwgMHg5OSwgMHhhYSwgMHhiYiwgMHhjYywgMHhkZCwgMHhlZSwgMHhmZiwKKyAgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKKyAgMHgwOCwgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwgMHgwZgorfTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZTFbXSA9IHsKKyAgMHgxZiwgMHhhNiwgMHg4YiwgMHgwYSwgMHg4MSwgMHgxMiwgMHhiNCwgMHg0NywKKyAgMHhhZSwgMHhmMywgMHg0YiwgMHhkOCwgMHhmYiwgMHg1YSwgMHg3YiwgMHg4MiwKKyAgMHg5ZCwgMHgzZSwgMHg4NiwgMHgyMywgMHg3MSwgMHhkMiwgMHhjZiwgMHhlNQorfTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZTJbXSA9IHsKKyAgMHg5NiwgMHg3NywgMHg4YiwgMHgyNSwgMHhhZSwgMHg2YywgMHhhNCwgMHgzNSwKKyAgMHhmOSwgMHgyYiwgMHg1YiwgMHg5NywgMHhjMCwgMHg1MCwgMHhhZSwgMHhkMiwKKyAgMHg0NiwgMHg4YSwgMHhiOCwgMHhhMSwgMHg3YSwgMHhkOCwgMHg0ZSwgMHg1ZAorfTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZTNbXSA9IHsKKyAgMHg2NCwgMHhlOCwgMHhjMywgMHhmOSwgMHhjZSwgMHgwZiwgMHg1YiwgMHhhMiwKKyAgMHg2MywgMHhlOSwgMHg3NywgMHg3OSwgMHgwNSwgMHg4MSwgMHg4YSwgMHgyYSwKKyAgMHg5MywgMHhjOCwgMHgxOSwgMHgxZSwgMHg3ZCwgMHg2ZSwgMHg4YSwgMHhlNworfTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZTRbXSA9IHsKKyAgMHgwMywgMHgxZCwgMHgzMywgMHgyNiwgMHg0ZSwgMHgxNSwgMHhkMywgMHgzMiwKKyAgMHg2OCwgMHhmMiwgMHg0ZSwgMHhjMiwgMHg2MCwgMHg3NCwgMHgzZSwgMHhkYywKKyAgMHhlMSwgMHhjNiwgMHhjNywgMHhkZCwgMHhlZSwgMHg3MiwgMHg1YSwgMHg5MywKKyAgMHg2YiwgMHhhOCwgMHgxNCwgMHg5MSwgMHg1YywgMHg2NywgMHg2MiwgMHhkMgorfTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZTVbXSA9IHsKKyAgMHhhOCwgMHhmOSwgMHhiYywgMHgxNiwgMHgxMiwgMHhjNiwgMHg4YiwgMHgzZiwKKyAgMHhmNiwgMHhlNiwgMHhmNCwgMHhmYiwgMHhlMywgMHgwZSwgMHg3MSwgMHhlNCwKKyAgMHg3NiwgMHg5YywgMHg4YiwgMHg4MCwgMHhhMywgMHgyYywgMHhiOCwgMHg5NSwKKyAgMHg4YywgMHhkNSwgMHhkMSwgMHg3ZCwgMHg2YiwgMHgyNSwgMHg0ZCwgMHhhMQorfTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZTZbXSA9IHsKKyAgMHgyOCwgMHhjOSwgMHhmNCwgMHgwNCwgMHhjNCwgMHhiOCwgMHgxMCwgMHhmNCwKKyAgMHhjYiwgMHhjYywgMHhiMywgMHg1YywgMHhmYiwgMHg4NywgMHhmOCwgMHgyNiwKKyAgMHgzZiwgMHg1NywgMHg4NiwgMHhlMiwgMHhkOCwgMHgwZSwgMHhkMywgMHgyNiwKKyAgMHhjYiwgMHhjNywgMHhmMCwgMHhlNywgMHgxYSwgMHg5OSwgMHhmNCwgMHgzYiwKKyAgMHhmYiwgMHg5OCwgMHg4YiwgMHg5YiwgMHg3YSwgMHgwMiwgMHhkZCwgMHgyMQorfTsKKworCUFFU19LRVkgd2N0eCwgeGN0eDsKKwlpbnQgcmV0OworCXJldCA9IEFFU193cmFwX3Vud3JhcF90ZXN0KGtlaywgMTI4LCBOVUxMLCBlMSwga2V5LCAxNik7CisJZnByaW50ZihzdGRlcnIsICJLZXkgdGVzdCByZXN1bHQgJWRcbiIsIHJldCk7CisJcmV0ID0gQUVTX3dyYXBfdW53cmFwX3Rlc3Qoa2VrLCAxOTIsIE5VTEwsIGUyLCBrZXksIDE2KTsKKwlmcHJpbnRmKHN0ZGVyciwgIktleSB0ZXN0IHJlc3VsdCAlZFxuIiwgcmV0KTsKKwlyZXQgPSBBRVNfd3JhcF91bndyYXBfdGVzdChrZWssIDI1NiwgTlVMTCwgZTMsIGtleSwgMTYpOworCWZwcmludGYoc3RkZXJyLCAiS2V5IHRlc3QgcmVzdWx0ICVkXG4iLCByZXQpOworCXJldCA9IEFFU193cmFwX3Vud3JhcF90ZXN0KGtlaywgMTkyLCBOVUxMLCBlNCwga2V5LCAyNCk7CisJZnByaW50ZihzdGRlcnIsICJLZXkgdGVzdCByZXN1bHQgJWRcbiIsIHJldCk7CisJcmV0ID0gQUVTX3dyYXBfdW53cmFwX3Rlc3Qoa2VrLCAyNTYsIE5VTEwsIGU1LCBrZXksIDI0KTsKKwlmcHJpbnRmKHN0ZGVyciwgIktleSB0ZXN0IHJlc3VsdCAlZFxuIiwgcmV0KTsKKwlyZXQgPSBBRVNfd3JhcF91bndyYXBfdGVzdChrZWssIDI1NiwgTlVMTCwgZTYsIGtleSwgMzIpOworCWZwcmludGYoc3RkZXJyLCAiS2V5IHRlc3QgcmVzdWx0ICVkXG4iLCByZXQpOworfQorCQorCQorI2VuZGlmCmRpZmYgLS1naXQgYS9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc194ODZjb3JlLmMgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2Flc194ODZjb3JlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMyM2UyNgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYWVzX3g4NmNvcmUuYwpAQCAtMCwwICsxLDEwNjMgQEAKKy8qIGNyeXB0by9hZXMvYWVzX2NvcmUuYyAtKi0gbW9kZTpDOyBjLWZpbGUtc3R5bGU6ICJlYXkiIC0qLSAqLworLyoqCisgKiByaWpuZGFlbC1hbGctZnN0LmMKKyAqCisgKiBAdmVyc2lvbiAzLjAgKERlY2VtYmVyIDIwMDApCisgKgorICogT3B0aW1pc2VkIEFOU0kgQyBjb2RlIGZvciB0aGUgUmlqbmRhZWwgY2lwaGVyIChub3cgQUVTKQorICoKKyAqIEBhdXRob3IgVmluY2VudCBSaWptZW4gPHZpbmNlbnQucmlqbWVuQGVzYXQua3VsZXV2ZW4uYWMuYmU+CisgKiBAYXV0aG9yIEFudG9vbiBCb3NzZWxhZXJzIDxhbnRvb24uYm9zc2VsYWVyc0Blc2F0Lmt1bGV1dmVuLmFjLmJlPgorICogQGF1dGhvciBQYXVsbyBCYXJyZXRvIDxwYXVsby5iYXJyZXRvQHRlcnJhLmNvbS5icj4KKyAqCisgKiBUaGlzIGNvZGUgaXMgaGVyZWJ5IHBsYWNlZCBpbiB0aGUgcHVibGljIGRvbWFpbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1JTICcnQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MKKyAqIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SCisgKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwKKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFCisgKiBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLAorICogRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKgorICogVGhpcyBpcyBleHBlcmltZW50YWwgeDg2W182NF0gZGVyaXZhdGl2ZS4gSXQgYXNzdW1lcyBsaXR0bGUtZW5kaWFuCisgKiBieXRlIG9yZGVyIGFuZCBleHBlY3RzIENQVSB0byBzdXN0YWluIHVuYWxpZ25lZCBtZW1vcnkgcmVmZXJlbmNlcy4KKyAqIEl0IGlzIHVzZWQgYXMgcGxheWdyb3VuZCBmb3IgY2FjaGUtdGltZSBhdHRhY2sgbWl0aWdhdGlvbnMgYW5kCisgKiBzZXJ2ZXMgYXMgcmVmZXJlbmNlIEMgaW1wbGVtZW50YXRpb24gZm9yIHg4NltfNjRdIGFzc2VtYmxlci4KKyAqCisgKgkJCQkJPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPgorICovCisKKworI2lmbmRlZiBBRVNfREVCVUcKKyMgaWZuZGVmIE5ERUJVRworIyAgZGVmaW5lIE5ERUJVRworIyBlbmRpZgorI2VuZGlmCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL2Flcy5oPgorI2luY2x1ZGUgImFlc19sb2NsLmgiCisKKy8qCisgKiBUaGVzZSB0d28gcGFyYW1ldGVycyBjb250cm9sIHdoaWNoIHRhYmxlLCAyNTYtYnl0ZSBvciAyS0IsIGlzCisgKiByZWZlcmVuY2VkIGluIG91dGVyIGFuZCByZXNwZWN0aXZlbHkgaW5uZXIgcm91bmRzLgorICovCisjZGVmaW5lIEFFU19DT01QQUNUX0lOX09VVEVSX1JPVU5EUworI2lmZGVmICBBRVNfQ09NUEFDVF9JTl9PVVRFUl9ST1VORFMKKy8qIEFFU19DT01QQUNUX0lOX09VVEVSX1JPVU5EUyBjb3N0cyB+MzAlIGluIHBlcmZvcm1hbmNlLCB3aGlsZQorICogYWRkaW5nIEFFU19DT01QQUNUX0lOX0lOTkVSX1JPVU5EUyByZWR1Y2VzIGJlbmNobWFyayAqZnVydGhlcioKKyAqIGJ5IGZhY3RvciBvZiB+Mi4gKi8KKyMgdW5kZWYgIEFFU19DT01QQUNUX0lOX0lOTkVSX1JPVU5EUworI2VuZGlmCisKKyNpZiAxCitzdGF0aWMgdm9pZCBwcmVmZXRjaDI1Nihjb25zdCB2b2lkICp0YWJsZSkKK3sKKwl2b2xhdGlsZSB1bnNpZ25lZCBsb25nICp0PSh2b2lkICopdGFibGUscmV0OworCXVuc2lnbmVkIGxvbmcgc3VtOworCWludCBpOworCisJLyogMzIgaXMgY29tbW9uIGxlYXN0IGNhY2hlLWxpbmUgc2l6ZSAqLworCWZvciAoc3VtPTAsaT0wO2k8MjU2L3NpemVvZih0WzBdKTtpKz0zMi9zaXplb2YodFswXSkpCXN1bSBePSB0W2ldOworCisJcmV0ID0gc3VtOworfQorI2Vsc2UKKyMgZGVmaW5lIHByZWZldGNoMjU2KHQpCisjZW5kaWYKKworI3VuZGVmIEdFVFUzMgorI2RlZmluZSBHRVRVMzIocCkgKCooKHUzMiopKHApKSkKKworI2lmIChkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1NjQ7CisjZGVmaW5lIFU2NChDKQlDIyNVSTY0CisjZWxpZiBkZWZpbmVkKF9fYXJjaDY0X18pCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTY0OworI2RlZmluZSBVNjQoQykJQyMjVUwKKyNlbHNlCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7CisjZGVmaW5lIFU2NChDKQlDIyNVTEwKKyNlbmRpZgorCisjdW5kZWYgUk9UQVRFCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0lDQykKKyMgZGVmaW5lIFJPVEFURShhLG4pCV9scm90bChhLG4pCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXz49MgorIyBpZiBkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQorIyAgIGRlZmluZSBST1RBVEUoYSxuKQkoeyByZWdpc3RlciB1bnNpZ25lZCBpbnQgcmV0OwlcCisJCQkJYXNtICgJCQlcCisJCQkJInJvbGwgJTEsJTAiCQlcCisJCQkJOiAiPXIiKHJldCkJCVwKKwkJCQk6ICJJIihuKSwgIjAiKGEpCVwKKwkJCQk6ICJjYyIpOwkJXAorCQkJICAgcmV0OwkJCQlcCisJCQl9KQorIyBlbmRpZgorI2VuZGlmCisvKgorVGUgW3hdID0gUyBbeF0uWzAyLCAwMSwgMDEsIDAzLCAwMiwgMDEsIDAxLCAwM107CitUZTBbeF0gPSBTIFt4XS5bMDIsIDAxLCAwMSwgMDNdOworVGUxW3hdID0gUyBbeF0uWzAzLCAwMiwgMDEsIDAxXTsKK1RlMlt4XSA9IFMgW3hdLlswMSwgMDMsIDAyLCAwMV07CitUZTNbeF0gPSBTIFt4XS5bMDEsIDAxLCAwMywgMDJdOworKi8KKyNkZWZpbmUgVGUwICh1MzIpKCh1NjQqKSgodTgqKVRlKzApKQorI2RlZmluZSBUZTEgKHUzMikoKHU2NCopKCh1OCopVGUrMykpCisjZGVmaW5lIFRlMiAodTMyKSgodTY0KikoKHU4KilUZSsyKSkKKyNkZWZpbmUgVGUzICh1MzIpKCh1NjQqKSgodTgqKVRlKzEpKQorLyoKK1RkIFt4XSA9IFNpW3hdLlswZSwgMDksIDBkLCAwYiwgMGUsIDA5LCAwZCwgMGJdOworVGQwW3hdID0gU2lbeF0uWzBlLCAwOSwgMGQsIDBiXTsKK1RkMVt4XSA9IFNpW3hdLlswYiwgMGUsIDA5LCAwZF07CitUZDJbeF0gPSBTaVt4XS5bMGQsIDBiLCAwZSwgMDldOworVGQzW3hdID0gU2lbeF0uWzA5LCAwZCwgMGIsIDBlXTsKK1RkNFt4XSA9IFNpW3hdLlswMV07CisqLworI2RlZmluZSBUZDAgKHUzMikoKHU2NCopKCh1OCopVGQrMCkpCisjZGVmaW5lIFRkMSAodTMyKSgodTY0KikoKHU4KilUZCszKSkKKyNkZWZpbmUgVGQyICh1MzIpKCh1NjQqKSgodTgqKVRkKzIpKQorI2RlZmluZSBUZDMgKHUzMikoKHU2NCopKCh1OCopVGQrMSkpCisKK3N0YXRpYyBjb25zdCB1NjQgVGVbMjU2XSA9IHsKKyAgICBVNjQoMHhhNTYzNjNjNmE1NjM2M2M2KSwgVTY0KDB4ODQ3YzdjZjg4NDdjN2NmOCksCisgICAgVTY0KDB4OTk3Nzc3ZWU5OTc3NzdlZSksIFU2NCgweDhkN2I3YmY2OGQ3YjdiZjYpLAorICAgIFU2NCgweDBkZjJmMmZmMGRmMmYyZmYpLCBVNjQoMHhiZDZiNmJkNmJkNmI2YmQ2KSwKKyAgICBVNjQoMHhiMTZmNmZkZWIxNmY2ZmRlKSwgVTY0KDB4NTRjNWM1OTE1NGM1YzU5MSksCisgICAgVTY0KDB4NTAzMDMwNjA1MDMwMzA2MCksIFU2NCgweDAzMDEwMTAyMDMwMTAxMDIpLAorICAgIFU2NCgweGE5Njc2N2NlYTk2NzY3Y2UpLCBVNjQoMHg3ZDJiMmI1NjdkMmIyYjU2KSwKKyAgICBVNjQoMHgxOWZlZmVlNzE5ZmVmZWU3KSwgVTY0KDB4NjJkN2Q3YjU2MmQ3ZDdiNSksCisgICAgVTY0KDB4ZTZhYmFiNGRlNmFiYWI0ZCksIFU2NCgweDlhNzY3NmVjOWE3Njc2ZWMpLAorICAgIFU2NCgweDQ1Y2FjYThmNDVjYWNhOGYpLCBVNjQoMHg5ZDgyODIxZjlkODI4MjFmKSwKKyAgICBVNjQoMHg0MGM5Yzk4OTQwYzljOTg5KSwgVTY0KDB4ODc3ZDdkZmE4NzdkN2RmYSksCisgICAgVTY0KDB4MTVmYWZhZWYxNWZhZmFlZiksIFU2NCgweGViNTk1OWIyZWI1OTU5YjIpLAorICAgIFU2NCgweGM5NDc0NzhlYzk0NzQ3OGUpLCBVNjQoMHgwYmYwZjBmYjBiZjBmMGZiKSwKKyAgICBVNjQoMHhlY2FkYWQ0MWVjYWRhZDQxKSwgVTY0KDB4NjdkNGQ0YjM2N2Q0ZDRiMyksCisgICAgVTY0KDB4ZmRhMmEyNWZmZGEyYTI1ZiksIFU2NCgweGVhYWZhZjQ1ZWFhZmFmNDUpLAorICAgIFU2NCgweGJmOWM5YzIzYmY5YzljMjMpLCBVNjQoMHhmN2E0YTQ1M2Y3YTRhNDUzKSwKKyAgICBVNjQoMHg5NjcyNzJlNDk2NzI3MmU0KSwgVTY0KDB4NWJjMGMwOWI1YmMwYzA5YiksCisgICAgVTY0KDB4YzJiN2I3NzVjMmI3Yjc3NSksIFU2NCgweDFjZmRmZGUxMWNmZGZkZTEpLAorICAgIFU2NCgweGFlOTM5MzNkYWU5MzkzM2QpLCBVNjQoMHg2YTI2MjY0YzZhMjYyNjRjKSwKKyAgICBVNjQoMHg1YTM2MzY2YzVhMzYzNjZjKSwgVTY0KDB4NDEzZjNmN2U0MTNmM2Y3ZSksCisgICAgVTY0KDB4MDJmN2Y3ZjUwMmY3ZjdmNSksIFU2NCgweDRmY2NjYzgzNGZjY2NjODMpLAorICAgIFU2NCgweDVjMzQzNDY4NWMzNDM0NjgpLCBVNjQoMHhmNGE1YTU1MWY0YTVhNTUxKSwKKyAgICBVNjQoMHgzNGU1ZTVkMTM0ZTVlNWQxKSwgVTY0KDB4MDhmMWYxZjkwOGYxZjFmOSksCisgICAgVTY0KDB4OTM3MTcxZTI5MzcxNzFlMiksIFU2NCgweDczZDhkOGFiNzNkOGQ4YWIpLAorICAgIFU2NCgweDUzMzEzMTYyNTMzMTMxNjIpLCBVNjQoMHgzZjE1MTUyYTNmMTUxNTJhKSwKKyAgICBVNjQoMHgwYzA0MDQwODBjMDQwNDA4KSwgVTY0KDB4NTJjN2M3OTU1MmM3Yzc5NSksCisgICAgVTY0KDB4NjUyMzIzNDY2NTIzMjM0NiksIFU2NCgweDVlYzNjMzlkNWVjM2MzOWQpLAorICAgIFU2NCgweDI4MTgxODMwMjgxODE4MzApLCBVNjQoMHhhMTk2OTYzN2ExOTY5NjM3KSwKKyAgICBVNjQoMHgwZjA1MDUwYTBmMDUwNTBhKSwgVTY0KDB4YjU5YTlhMmZiNTlhOWEyZiksCisgICAgVTY0KDB4MDkwNzA3MGUwOTA3MDcwZSksIFU2NCgweDM2MTIxMjI0MzYxMjEyMjQpLAorICAgIFU2NCgweDliODA4MDFiOWI4MDgwMWIpLCBVNjQoMHgzZGUyZTJkZjNkZTJlMmRmKSwKKyAgICBVNjQoMHgyNmViZWJjZDI2ZWJlYmNkKSwgVTY0KDB4NjkyNzI3NGU2OTI3Mjc0ZSksCisgICAgVTY0KDB4Y2RiMmIyN2ZjZGIyYjI3ZiksIFU2NCgweDlmNzU3NWVhOWY3NTc1ZWEpLAorICAgIFU2NCgweDFiMDkwOTEyMWIwOTA5MTIpLCBVNjQoMHg5ZTgzODMxZDllODM4MzFkKSwKKyAgICBVNjQoMHg3NDJjMmM1ODc0MmMyYzU4KSwgVTY0KDB4MmUxYTFhMzQyZTFhMWEzNCksCisgICAgVTY0KDB4MmQxYjFiMzYyZDFiMWIzNiksIFU2NCgweGIyNmU2ZWRjYjI2ZTZlZGMpLAorICAgIFU2NCgweGVlNWE1YWI0ZWU1YTVhYjQpLCBVNjQoMHhmYmEwYTA1YmZiYTBhMDViKSwKKyAgICBVNjQoMHhmNjUyNTJhNGY2NTI1MmE0KSwgVTY0KDB4NGQzYjNiNzY0ZDNiM2I3NiksCisgICAgVTY0KDB4NjFkNmQ2Yjc2MWQ2ZDZiNyksIFU2NCgweGNlYjNiMzdkY2ViM2IzN2QpLAorICAgIFU2NCgweDdiMjkyOTUyN2IyOTI5NTIpLCBVNjQoMHgzZWUzZTNkZDNlZTNlM2RkKSwKKyAgICBVNjQoMHg3MTJmMmY1ZTcxMmYyZjVlKSwgVTY0KDB4OTc4NDg0MTM5Nzg0ODQxMyksCisgICAgVTY0KDB4ZjU1MzUzYTZmNTUzNTNhNiksIFU2NCgweDY4ZDFkMWI5NjhkMWQxYjkpLAorICAgIFU2NCgweDAwMDAwMDAwMDAwMDAwMDApLCBVNjQoMHgyY2VkZWRjMTJjZWRlZGMxKSwKKyAgICBVNjQoMHg2MDIwMjA0MDYwMjAyMDQwKSwgVTY0KDB4MWZmY2ZjZTMxZmZjZmNlMyksCisgICAgVTY0KDB4YzhiMWIxNzljOGIxYjE3OSksIFU2NCgweGVkNWI1YmI2ZWQ1YjViYjYpLAorICAgIFU2NCgweGJlNmE2YWQ0YmU2YTZhZDQpLCBVNjQoMHg0NmNiY2I4ZDQ2Y2JjYjhkKSwKKyAgICBVNjQoMHhkOWJlYmU2N2Q5YmViZTY3KSwgVTY0KDB4NGIzOTM5NzI0YjM5Mzk3MiksCisgICAgVTY0KDB4ZGU0YTRhOTRkZTRhNGE5NCksIFU2NCgweGQ0NGM0Yzk4ZDQ0YzRjOTgpLAorICAgIFU2NCgweGU4NTg1OGIwZTg1ODU4YjApLCBVNjQoMHg0YWNmY2Y4NTRhY2ZjZjg1KSwKKyAgICBVNjQoMHg2YmQwZDBiYjZiZDBkMGJiKSwgVTY0KDB4MmFlZmVmYzUyYWVmZWZjNSksCisgICAgVTY0KDB4ZTVhYWFhNGZlNWFhYWE0ZiksIFU2NCgweDE2ZmJmYmVkMTZmYmZiZWQpLAorICAgIFU2NCgweGM1NDM0Mzg2YzU0MzQzODYpLCBVNjQoMHhkNzRkNGQ5YWQ3NGQ0ZDlhKSwKKyAgICBVNjQoMHg1NTMzMzM2NjU1MzMzMzY2KSwgVTY0KDB4OTQ4NTg1MTE5NDg1ODUxMSksCisgICAgVTY0KDB4Y2Y0NTQ1OGFjZjQ1NDU4YSksIFU2NCgweDEwZjlmOWU5MTBmOWY5ZTkpLAorICAgIFU2NCgweDA2MDIwMjA0MDYwMjAyMDQpLCBVNjQoMHg4MTdmN2ZmZTgxN2Y3ZmZlKSwKKyAgICBVNjQoMHhmMDUwNTBhMGYwNTA1MGEwKSwgVTY0KDB4NDQzYzNjNzg0NDNjM2M3OCksCisgICAgVTY0KDB4YmE5ZjlmMjViYTlmOWYyNSksIFU2NCgweGUzYThhODRiZTNhOGE4NGIpLAorICAgIFU2NCgweGYzNTE1MWEyZjM1MTUxYTIpLCBVNjQoMHhmZWEzYTM1ZGZlYTNhMzVkKSwKKyAgICBVNjQoMHhjMDQwNDA4MGMwNDA0MDgwKSwgVTY0KDB4OGE4ZjhmMDU4YThmOGYwNSksCisgICAgVTY0KDB4YWQ5MjkyM2ZhZDkyOTIzZiksIFU2NCgweGJjOWQ5ZDIxYmM5ZDlkMjEpLAorICAgIFU2NCgweDQ4MzgzODcwNDgzODM4NzApLCBVNjQoMHgwNGY1ZjVmMTA0ZjVmNWYxKSwKKyAgICBVNjQoMHhkZmJjYmM2M2RmYmNiYzYzKSwgVTY0KDB4YzFiNmI2NzdjMWI2YjY3NyksCisgICAgVTY0KDB4NzVkYWRhYWY3NWRhZGFhZiksIFU2NCgweDYzMjEyMTQyNjMyMTIxNDIpLAorICAgIFU2NCgweDMwMTAxMDIwMzAxMDEwMjApLCBVNjQoMHgxYWZmZmZlNTFhZmZmZmU1KSwKKyAgICBVNjQoMHgwZWYzZjNmZDBlZjNmM2ZkKSwgVTY0KDB4NmRkMmQyYmY2ZGQyZDJiZiksCisgICAgVTY0KDB4NGNjZGNkODE0Y2NkY2Q4MSksIFU2NCgweDE0MGMwYzE4MTQwYzBjMTgpLAorICAgIFU2NCgweDM1MTMxMzI2MzUxMzEzMjYpLCBVNjQoMHgyZmVjZWNjMzJmZWNlY2MzKSwKKyAgICBVNjQoMHhlMTVmNWZiZWUxNWY1ZmJlKSwgVTY0KDB4YTI5Nzk3MzVhMjk3OTczNSksCisgICAgVTY0KDB4Y2M0NDQ0ODhjYzQ0NDQ4OCksIFU2NCgweDM5MTcxNzJlMzkxNzE3MmUpLAorICAgIFU2NCgweDU3YzRjNDkzNTdjNGM0OTMpLCBVNjQoMHhmMmE3YTc1NWYyYTdhNzU1KSwKKyAgICBVNjQoMHg4MjdlN2VmYzgyN2U3ZWZjKSwgVTY0KDB4NDczZDNkN2E0NzNkM2Q3YSksCisgICAgVTY0KDB4YWM2NDY0YzhhYzY0NjRjOCksIFU2NCgweGU3NWQ1ZGJhZTc1ZDVkYmEpLAorICAgIFU2NCgweDJiMTkxOTMyMmIxOTE5MzIpLCBVNjQoMHg5NTczNzNlNjk1NzM3M2U2KSwKKyAgICBVNjQoMHhhMDYwNjBjMGEwNjA2MGMwKSwgVTY0KDB4OTg4MTgxMTk5ODgxODExOSksCisgICAgVTY0KDB4ZDE0ZjRmOWVkMTRmNGY5ZSksIFU2NCgweDdmZGNkY2EzN2ZkY2RjYTMpLAorICAgIFU2NCgweDY2MjIyMjQ0NjYyMjIyNDQpLCBVNjQoMHg3ZTJhMmE1NDdlMmEyYTU0KSwKKyAgICBVNjQoMHhhYjkwOTAzYmFiOTA5MDNiKSwgVTY0KDB4ODM4ODg4MGI4Mzg4ODgwYiksCisgICAgVTY0KDB4Y2E0NjQ2OGNjYTQ2NDY4YyksIFU2NCgweDI5ZWVlZWM3MjllZWVlYzcpLAorICAgIFU2NCgweGQzYjhiODZiZDNiOGI4NmIpLCBVNjQoMHgzYzE0MTQyODNjMTQxNDI4KSwKKyAgICBVNjQoMHg3OWRlZGVhNzc5ZGVkZWE3KSwgVTY0KDB4ZTI1ZTVlYmNlMjVlNWViYyksCisgICAgVTY0KDB4MWQwYjBiMTYxZDBiMGIxNiksIFU2NCgweDc2ZGJkYmFkNzZkYmRiYWQpLAorICAgIFU2NCgweDNiZTBlMGRiM2JlMGUwZGIpLCBVNjQoMHg1NjMyMzI2NDU2MzIzMjY0KSwKKyAgICBVNjQoMHg0ZTNhM2E3NDRlM2EzYTc0KSwgVTY0KDB4MWUwYTBhMTQxZTBhMGExNCksCisgICAgVTY0KDB4ZGI0OTQ5OTJkYjQ5NDk5MiksIFU2NCgweDBhMDYwNjBjMGEwNjA2MGMpLAorICAgIFU2NCgweDZjMjQyNDQ4NmMyNDI0NDgpLCBVNjQoMHhlNDVjNWNiOGU0NWM1Y2I4KSwKKyAgICBVNjQoMHg1ZGMyYzI5ZjVkYzJjMjlmKSwgVTY0KDB4NmVkM2QzYmQ2ZWQzZDNiZCksCisgICAgVTY0KDB4ZWZhY2FjNDNlZmFjYWM0MyksIFU2NCgweGE2NjI2MmM0YTY2MjYyYzQpLAorICAgIFU2NCgweGE4OTE5MTM5YTg5MTkxMzkpLCBVNjQoMHhhNDk1OTUzMWE0OTU5NTMxKSwKKyAgICBVNjQoMHgzN2U0ZTRkMzM3ZTRlNGQzKSwgVTY0KDB4OGI3OTc5ZjI4Yjc5NzlmMiksCisgICAgVTY0KDB4MzJlN2U3ZDUzMmU3ZTdkNSksIFU2NCgweDQzYzhjODhiNDNjOGM4OGIpLAorICAgIFU2NCgweDU5MzczNzZlNTkzNzM3NmUpLCBVNjQoMHhiNzZkNmRkYWI3NmQ2ZGRhKSwKKyAgICBVNjQoMHg4YzhkOGQwMThjOGQ4ZDAxKSwgVTY0KDB4NjRkNWQ1YjE2NGQ1ZDViMSksCisgICAgVTY0KDB4ZDI0ZTRlOWNkMjRlNGU5YyksIFU2NCgweGUwYTlhOTQ5ZTBhOWE5NDkpLAorICAgIFU2NCgweGI0NmM2Y2Q4YjQ2YzZjZDgpLCBVNjQoMHhmYTU2NTZhY2ZhNTY1NmFjKSwKKyAgICBVNjQoMHgwN2Y0ZjRmMzA3ZjRmNGYzKSwgVTY0KDB4MjVlYWVhY2YyNWVhZWFjZiksCisgICAgVTY0KDB4YWY2NTY1Y2FhZjY1NjVjYSksIFU2NCgweDhlN2E3YWY0OGU3YTdhZjQpLAorICAgIFU2NCgweGU5YWVhZTQ3ZTlhZWFlNDcpLCBVNjQoMHgxODA4MDgxMDE4MDgwODEwKSwKKyAgICBVNjQoMHhkNWJhYmE2ZmQ1YmFiYTZmKSwgVTY0KDB4ODg3ODc4ZjA4ODc4NzhmMCksCisgICAgVTY0KDB4NmYyNTI1NGE2ZjI1MjU0YSksIFU2NCgweDcyMmUyZTVjNzIyZTJlNWMpLAorICAgIFU2NCgweDI0MWMxYzM4MjQxYzFjMzgpLCBVNjQoMHhmMWE2YTY1N2YxYTZhNjU3KSwKKyAgICBVNjQoMHhjN2I0YjQ3M2M3YjRiNDczKSwgVTY0KDB4NTFjNmM2OTc1MWM2YzY5NyksCisgICAgVTY0KDB4MjNlOGU4Y2IyM2U4ZThjYiksIFU2NCgweDdjZGRkZGExN2NkZGRkYTEpLAorICAgIFU2NCgweDljNzQ3NGU4OWM3NDc0ZTgpLCBVNjQoMHgyMTFmMWYzZTIxMWYxZjNlKSwKKyAgICBVNjQoMHhkZDRiNGI5NmRkNGI0Yjk2KSwgVTY0KDB4ZGNiZGJkNjFkY2JkYmQ2MSksCisgICAgVTY0KDB4ODY4YjhiMGQ4NjhiOGIwZCksIFU2NCgweDg1OGE4YTBmODU4YThhMGYpLAorICAgIFU2NCgweDkwNzA3MGUwOTA3MDcwZTApLCBVNjQoMHg0MjNlM2U3YzQyM2UzZTdjKSwKKyAgICBVNjQoMHhjNGI1YjU3MWM0YjViNTcxKSwgVTY0KDB4YWE2NjY2Y2NhYTY2NjZjYyksCisgICAgVTY0KDB4ZDg0ODQ4OTBkODQ4NDg5MCksIFU2NCgweDA1MDMwMzA2MDUwMzAzMDYpLAorICAgIFU2NCgweDAxZjZmNmY3MDFmNmY2ZjcpLCBVNjQoMHgxMjBlMGUxYzEyMGUwZTFjKSwKKyAgICBVNjQoMHhhMzYxNjFjMmEzNjE2MWMyKSwgVTY0KDB4NWYzNTM1NmE1ZjM1MzU2YSksCisgICAgVTY0KDB4Zjk1NzU3YWVmOTU3NTdhZSksIFU2NCgweGQwYjliOTY5ZDBiOWI5NjkpLAorICAgIFU2NCgweDkxODY4NjE3OTE4Njg2MTcpLCBVNjQoMHg1OGMxYzE5OTU4YzFjMTk5KSwKKyAgICBVNjQoMHgyNzFkMWQzYTI3MWQxZDNhKSwgVTY0KDB4Yjk5ZTllMjdiOTllOWUyNyksCisgICAgVTY0KDB4MzhlMWUxZDkzOGUxZTFkOSksIFU2NCgweDEzZjhmOGViMTNmOGY4ZWIpLAorICAgIFU2NCgweGIzOTg5ODJiYjM5ODk4MmIpLCBVNjQoMHgzMzExMTEyMjMzMTExMTIyKSwKKyAgICBVNjQoMHhiYjY5NjlkMmJiNjk2OWQyKSwgVTY0KDB4NzBkOWQ5YTk3MGQ5ZDlhOSksCisgICAgVTY0KDB4ODk4ZThlMDc4OThlOGUwNyksIFU2NCgweGE3OTQ5NDMzYTc5NDk0MzMpLAorICAgIFU2NCgweGI2OWI5YjJkYjY5YjliMmQpLCBVNjQoMHgyMjFlMWUzYzIyMWUxZTNjKSwKKyAgICBVNjQoMHg5Mjg3ODcxNTkyODc4NzE1KSwgVTY0KDB4MjBlOWU5YzkyMGU5ZTljOSksCisgICAgVTY0KDB4NDljZWNlODc0OWNlY2U4NyksIFU2NCgweGZmNTU1NWFhZmY1NTU1YWEpLAorICAgIFU2NCgweDc4MjgyODUwNzgyODI4NTApLCBVNjQoMHg3YWRmZGZhNTdhZGZkZmE1KSwKKyAgICBVNjQoMHg4ZjhjOGMwMzhmOGM4YzAzKSwgVTY0KDB4ZjhhMWExNTlmOGExYTE1OSksCisgICAgVTY0KDB4ODA4OTg5MDk4MDg5ODkwOSksIFU2NCgweDE3MGQwZDFhMTcwZDBkMWEpLAorICAgIFU2NCgweGRhYmZiZjY1ZGFiZmJmNjUpLCBVNjQoMHgzMWU2ZTZkNzMxZTZlNmQ3KSwKKyAgICBVNjQoMHhjNjQyNDI4NGM2NDI0Mjg0KSwgVTY0KDB4Yjg2ODY4ZDBiODY4NjhkMCksCisgICAgVTY0KDB4YzM0MTQxODJjMzQxNDE4MiksIFU2NCgweGIwOTk5OTI5YjA5OTk5MjkpLAorICAgIFU2NCgweDc3MmQyZDVhNzcyZDJkNWEpLCBVNjQoMHgxMTBmMGYxZTExMGYwZjFlKSwKKyAgICBVNjQoMHhjYmIwYjA3YmNiYjBiMDdiKSwgVTY0KDB4ZmM1NDU0YThmYzU0NTRhOCksCisgICAgVTY0KDB4ZDZiYmJiNmRkNmJiYmI2ZCksIFU2NCgweDNhMTYxNjJjM2ExNjE2MmMpCit9OworCitzdGF0aWMgY29uc3QgdTggVGU0WzI1Nl0gPSB7CisgICAgMHg2M1UsIDB4N2NVLCAweDc3VSwgMHg3YlUsIDB4ZjJVLCAweDZiVSwgMHg2ZlUsIDB4YzVVLAorICAgIDB4MzBVLCAweDAxVSwgMHg2N1UsIDB4MmJVLCAweGZlVSwgMHhkN1UsIDB4YWJVLCAweDc2VSwKKyAgICAweGNhVSwgMHg4MlUsIDB4YzlVLCAweDdkVSwgMHhmYVUsIDB4NTlVLCAweDQ3VSwgMHhmMFUsCisgICAgMHhhZFUsIDB4ZDRVLCAweGEyVSwgMHhhZlUsIDB4OWNVLCAweGE0VSwgMHg3MlUsIDB4YzBVLAorICAgIDB4YjdVLCAweGZkVSwgMHg5M1UsIDB4MjZVLCAweDM2VSwgMHgzZlUsIDB4ZjdVLCAweGNjVSwKKyAgICAweDM0VSwgMHhhNVUsIDB4ZTVVLCAweGYxVSwgMHg3MVUsIDB4ZDhVLCAweDMxVSwgMHgxNVUsCisgICAgMHgwNFUsIDB4YzdVLCAweDIzVSwgMHhjM1UsIDB4MThVLCAweDk2VSwgMHgwNVUsIDB4OWFVLAorICAgIDB4MDdVLCAweDEyVSwgMHg4MFUsIDB4ZTJVLCAweGViVSwgMHgyN1UsIDB4YjJVLCAweDc1VSwKKyAgICAweDA5VSwgMHg4M1UsIDB4MmNVLCAweDFhVSwgMHgxYlUsIDB4NmVVLCAweDVhVSwgMHhhMFUsCisgICAgMHg1MlUsIDB4M2JVLCAweGQ2VSwgMHhiM1UsIDB4MjlVLCAweGUzVSwgMHgyZlUsIDB4ODRVLAorICAgIDB4NTNVLCAweGQxVSwgMHgwMFUsIDB4ZWRVLCAweDIwVSwgMHhmY1UsIDB4YjFVLCAweDViVSwKKyAgICAweDZhVSwgMHhjYlUsIDB4YmVVLCAweDM5VSwgMHg0YVUsIDB4NGNVLCAweDU4VSwgMHhjZlUsCisgICAgMHhkMFUsIDB4ZWZVLCAweGFhVSwgMHhmYlUsIDB4NDNVLCAweDRkVSwgMHgzM1UsIDB4ODVVLAorICAgIDB4NDVVLCAweGY5VSwgMHgwMlUsIDB4N2ZVLCAweDUwVSwgMHgzY1UsIDB4OWZVLCAweGE4VSwKKyAgICAweDUxVSwgMHhhM1UsIDB4NDBVLCAweDhmVSwgMHg5MlUsIDB4OWRVLCAweDM4VSwgMHhmNVUsCisgICAgMHhiY1UsIDB4YjZVLCAweGRhVSwgMHgyMVUsIDB4MTBVLCAweGZmVSwgMHhmM1UsIDB4ZDJVLAorICAgIDB4Y2RVLCAweDBjVSwgMHgxM1UsIDB4ZWNVLCAweDVmVSwgMHg5N1UsIDB4NDRVLCAweDE3VSwKKyAgICAweGM0VSwgMHhhN1UsIDB4N2VVLCAweDNkVSwgMHg2NFUsIDB4NWRVLCAweDE5VSwgMHg3M1UsCisgICAgMHg2MFUsIDB4ODFVLCAweDRmVSwgMHhkY1UsIDB4MjJVLCAweDJhVSwgMHg5MFUsIDB4ODhVLAorICAgIDB4NDZVLCAweGVlVSwgMHhiOFUsIDB4MTRVLCAweGRlVSwgMHg1ZVUsIDB4MGJVLCAweGRiVSwKKyAgICAweGUwVSwgMHgzMlUsIDB4M2FVLCAweDBhVSwgMHg0OVUsIDB4MDZVLCAweDI0VSwgMHg1Y1UsCisgICAgMHhjMlUsIDB4ZDNVLCAweGFjVSwgMHg2MlUsIDB4OTFVLCAweDk1VSwgMHhlNFUsIDB4NzlVLAorICAgIDB4ZTdVLCAweGM4VSwgMHgzN1UsIDB4NmRVLCAweDhkVSwgMHhkNVUsIDB4NGVVLCAweGE5VSwKKyAgICAweDZjVSwgMHg1NlUsIDB4ZjRVLCAweGVhVSwgMHg2NVUsIDB4N2FVLCAweGFlVSwgMHgwOFUsCisgICAgMHhiYVUsIDB4NzhVLCAweDI1VSwgMHgyZVUsIDB4MWNVLCAweGE2VSwgMHhiNFUsIDB4YzZVLAorICAgIDB4ZThVLCAweGRkVSwgMHg3NFUsIDB4MWZVLCAweDRiVSwgMHhiZFUsIDB4OGJVLCAweDhhVSwKKyAgICAweDcwVSwgMHgzZVUsIDB4YjVVLCAweDY2VSwgMHg0OFUsIDB4MDNVLCAweGY2VSwgMHgwZVUsCisgICAgMHg2MVUsIDB4MzVVLCAweDU3VSwgMHhiOVUsIDB4ODZVLCAweGMxVSwgMHgxZFUsIDB4OWVVLAorICAgIDB4ZTFVLCAweGY4VSwgMHg5OFUsIDB4MTFVLCAweDY5VSwgMHhkOVUsIDB4OGVVLCAweDk0VSwKKyAgICAweDliVSwgMHgxZVUsIDB4ODdVLCAweGU5VSwgMHhjZVUsIDB4NTVVLCAweDI4VSwgMHhkZlUsCisgICAgMHg4Y1UsIDB4YTFVLCAweDg5VSwgMHgwZFUsIDB4YmZVLCAweGU2VSwgMHg0MlUsIDB4NjhVLAorICAgIDB4NDFVLCAweDk5VSwgMHgyZFUsIDB4MGZVLCAweGIwVSwgMHg1NFUsIDB4YmJVLCAweDE2VQorfTsKKworc3RhdGljIGNvbnN0IHU2NCBUZFsyNTZdID0geworICAgIFU2NCgweDUwYTdmNDUxNTBhN2Y0NTEpLCBVNjQoMHg1MzY1NDE3ZTUzNjU0MTdlKSwKKyAgICBVNjQoMHhjM2E0MTcxYWMzYTQxNzFhKSwgVTY0KDB4OTY1ZTI3M2E5NjVlMjczYSksCisgICAgVTY0KDB4Y2I2YmFiM2JjYjZiYWIzYiksIFU2NCgweGYxNDU5ZDFmZjE0NTlkMWYpLAorICAgIFU2NCgweGFiNThmYWFjYWI1OGZhYWMpLCBVNjQoMHg5MzAzZTM0YjkzMDNlMzRiKSwKKyAgICBVNjQoMHg1NWZhMzAyMDU1ZmEzMDIwKSwgVTY0KDB4ZjY2ZDc2YWRmNjZkNzZhZCksCisgICAgVTY0KDB4OTE3NmNjODg5MTc2Y2M4OCksIFU2NCgweDI1NGMwMmY1MjU0YzAyZjUpLAorICAgIFU2NCgweGZjZDdlNTRmZmNkN2U1NGYpLCBVNjQoMHhkN2NiMmFjNWQ3Y2IyYWM1KSwKKyAgICBVNjQoMHg4MDQ0MzUyNjgwNDQzNTI2KSwgVTY0KDB4OGZhMzYyYjU4ZmEzNjJiNSksCisgICAgVTY0KDB4NDk1YWIxZGU0OTVhYjFkZSksIFU2NCgweDY3MWJiYTI1NjcxYmJhMjUpLAorICAgIFU2NCgweDk4MGVlYTQ1OTgwZWVhNDUpLCBVNjQoMHhlMWMwZmU1ZGUxYzBmZTVkKSwKKyAgICBVNjQoMHgwMjc1MmZjMzAyNzUyZmMzKSwgVTY0KDB4MTJmMDRjODExMmYwNGM4MSksCisgICAgVTY0KDB4YTM5NzQ2OGRhMzk3NDY4ZCksIFU2NCgweGM2ZjlkMzZiYzZmOWQzNmIpLAorICAgIFU2NCgweGU3NWY4ZjAzZTc1ZjhmMDMpLCBVNjQoMHg5NTljOTIxNTk1OWM5MjE1KSwKKyAgICBVNjQoMHhlYjdhNmRiZmViN2E2ZGJmKSwgVTY0KDB4ZGE1OTUyOTVkYTU5NTI5NSksCisgICAgVTY0KDB4MmQ4M2JlZDQyZDgzYmVkNCksIFU2NCgweGQzMjE3NDU4ZDMyMTc0NTgpLAorICAgIFU2NCgweDI5NjllMDQ5Mjk2OWUwNDkpLCBVNjQoMHg0NGM4Yzk4ZTQ0YzhjOThlKSwKKyAgICBVNjQoMHg2YTg5YzI3NTZhODljMjc1KSwgVTY0KDB4Nzg3OThlZjQ3ODc5OGVmNCksCisgICAgVTY0KDB4NmIzZTU4OTk2YjNlNTg5OSksIFU2NCgweGRkNzFiOTI3ZGQ3MWI5MjcpLAorICAgIFU2NCgweGI2NGZlMWJlYjY0ZmUxYmUpLCBVNjQoMHgxN2FkODhmMDE3YWQ4OGYwKSwKKyAgICBVNjQoMHg2NmFjMjBjOTY2YWMyMGM5KSwgVTY0KDB4YjQzYWNlN2RiNDNhY2U3ZCksCisgICAgVTY0KDB4MTg0YWRmNjMxODRhZGY2MyksIFU2NCgweDgyMzExYWU1ODIzMTFhZTUpLAorICAgIFU2NCgweDYwMzM1MTk3NjAzMzUxOTcpLCBVNjQoMHg0NTdmNTM2MjQ1N2Y1MzYyKSwKKyAgICBVNjQoMHhlMDc3NjRiMWUwNzc2NGIxKSwgVTY0KDB4ODRhZTZiYmI4NGFlNmJiYiksCisgICAgVTY0KDB4MWNhMDgxZmUxY2EwODFmZSksIFU2NCgweDk0MmIwOGY5OTQyYjA4ZjkpLAorICAgIFU2NCgweDU4Njg0ODcwNTg2ODQ4NzApLCBVNjQoMHgxOWZkNDU4ZjE5ZmQ0NThmKSwKKyAgICBVNjQoMHg4NzZjZGU5NDg3NmNkZTk0KSwgVTY0KDB4YjdmODdiNTJiN2Y4N2I1MiksCisgICAgVTY0KDB4MjNkMzczYWIyM2QzNzNhYiksIFU2NCgweGUyMDI0YjcyZTIwMjRiNzIpLAorICAgIFU2NCgweDU3OGYxZmUzNTc4ZjFmZTMpLCBVNjQoMHgyYWFiNTU2NjJhYWI1NTY2KSwKKyAgICBVNjQoMHgwNzI4ZWJiMjA3MjhlYmIyKSwgVTY0KDB4MDNjMmI1MmYwM2MyYjUyZiksCisgICAgVTY0KDB4OWE3YmM1ODY5YTdiYzU4NiksIFU2NCgweGE1MDgzN2QzYTUwODM3ZDMpLAorICAgIFU2NCgweGYyODcyODMwZjI4NzI4MzApLCBVNjQoMHhiMmE1YmYyM2IyYTViZjIzKSwKKyAgICBVNjQoMHhiYTZhMDMwMmJhNmEwMzAyKSwgVTY0KDB4NWM4MjE2ZWQ1YzgyMTZlZCksCisgICAgVTY0KDB4MmIxY2NmOGEyYjFjY2Y4YSksIFU2NCgweDkyYjQ3OWE3OTJiNDc5YTcpLAorICAgIFU2NCgweGYwZjIwN2YzZjBmMjA3ZjMpLCBVNjQoMHhhMWUyNjk0ZWExZTI2OTRlKSwKKyAgICBVNjQoMHhjZGY0ZGE2NWNkZjRkYTY1KSwgVTY0KDB4ZDViZTA1MDZkNWJlMDUwNiksCisgICAgVTY0KDB4MWY2MjM0ZDExZjYyMzRkMSksIFU2NCgweDhhZmVhNmM0OGFmZWE2YzQpLAorICAgIFU2NCgweDlkNTMyZTM0OWQ1MzJlMzQpLCBVNjQoMHhhMDU1ZjNhMmEwNTVmM2EyKSwKKyAgICBVNjQoMHgzMmUxOGEwNTMyZTE4YTA1KSwgVTY0KDB4NzVlYmY2YTQ3NWViZjZhNCksCisgICAgVTY0KDB4MzllYzgzMGIzOWVjODMwYiksIFU2NCgweGFhZWY2MDQwYWFlZjYwNDApLAorICAgIFU2NCgweDA2OWY3MTVlMDY5ZjcxNWUpLCBVNjQoMHg1MTEwNmViZDUxMTA2ZWJkKSwKKyAgICBVNjQoMHhmOThhMjEzZWY5OGEyMTNlKSwgVTY0KDB4M2QwNmRkOTYzZDA2ZGQ5NiksCisgICAgVTY0KDB4YWUwNTNlZGRhZTA1M2VkZCksIFU2NCgweDQ2YmRlNjRkNDZiZGU2NGQpLAorICAgIFU2NCgweGI1OGQ1NDkxYjU4ZDU0OTEpLCBVNjQoMHgwNTVkYzQ3MTA1NWRjNDcxKSwKKyAgICBVNjQoMHg2ZmQ0MDYwNDZmZDQwNjA0KSwgVTY0KDB4ZmYxNTUwNjBmZjE1NTA2MCksCisgICAgVTY0KDB4MjRmYjk4MTkyNGZiOTgxOSksIFU2NCgweDk3ZTliZGQ2OTdlOWJkZDYpLAorICAgIFU2NCgweGNjNDM0MDg5Y2M0MzQwODkpLCBVNjQoMHg3NzllZDk2Nzc3OWVkOTY3KSwKKyAgICBVNjQoMHhiZDQyZThiMGJkNDJlOGIwKSwgVTY0KDB4ODg4Yjg5MDc4ODhiODkwNyksCisgICAgVTY0KDB4Mzg1YjE5ZTczODViMTllNyksIFU2NCgweGRiZWVjODc5ZGJlZWM4NzkpLAorICAgIFU2NCgweDQ3MGE3Y2ExNDcwYTdjYTEpLCBVNjQoMHhlOTBmNDI3Y2U5MGY0MjdjKSwKKyAgICBVNjQoMHhjOTFlODRmOGM5MWU4NGY4KSwgVTY0KDB4MDAwMDAwMDAwMDAwMDAwMCksCisgICAgVTY0KDB4ODM4NjgwMDk4Mzg2ODAwOSksIFU2NCgweDQ4ZWQyYjMyNDhlZDJiMzIpLAorICAgIFU2NCgweGFjNzAxMTFlYWM3MDExMWUpLCBVNjQoMHg0ZTcyNWE2YzRlNzI1YTZjKSwKKyAgICBVNjQoMHhmYmZmMGVmZGZiZmYwZWZkKSwgVTY0KDB4NTYzODg1MGY1NjM4ODUwZiksCisgICAgVTY0KDB4MWVkNWFlM2QxZWQ1YWUzZCksIFU2NCgweDI3MzkyZDM2MjczOTJkMzYpLAorICAgIFU2NCgweDY0ZDkwZjBhNjRkOTBmMGEpLCBVNjQoMHgyMWE2NWM2ODIxYTY1YzY4KSwKKyAgICBVNjQoMHhkMTU0NWI5YmQxNTQ1YjliKSwgVTY0KDB4M2EyZTM2MjQzYTJlMzYyNCksCisgICAgVTY0KDB4YjE2NzBhMGNiMTY3MGEwYyksIFU2NCgweDBmZTc1NzkzMGZlNzU3OTMpLAorICAgIFU2NCgweGQyOTZlZWI0ZDI5NmVlYjQpLCBVNjQoMHg5ZTkxOWIxYjllOTE5YjFiKSwKKyAgICBVNjQoMHg0ZmM1YzA4MDRmYzVjMDgwKSwgVTY0KDB4YTIyMGRjNjFhMjIwZGM2MSksCisgICAgVTY0KDB4Njk0Yjc3NWE2OTRiNzc1YSksIFU2NCgweDE2MWExMjFjMTYxYTEyMWMpLAorICAgIFU2NCgweDBhYmE5M2UyMGFiYTkzZTIpLCBVNjQoMHhlNTJhYTBjMGU1MmFhMGMwKSwKKyAgICBVNjQoMHg0M2UwMjIzYzQzZTAyMjNjKSwgVTY0KDB4MWQxNzFiMTIxZDE3MWIxMiksCisgICAgVTY0KDB4MGIwZDA5MGUwYjBkMDkwZSksIFU2NCgweGFkYzc4YmYyYWRjNzhiZjIpLAorICAgIFU2NCgweGI5YThiNjJkYjlhOGI2MmQpLCBVNjQoMHhjOGE5MWUxNGM4YTkxZTE0KSwKKyAgICBVNjQoMHg4NTE5ZjE1Nzg1MTlmMTU3KSwgVTY0KDB4NGMwNzc1YWY0YzA3NzVhZiksCisgICAgVTY0KDB4YmJkZDk5ZWViYmRkOTllZSksIFU2NCgweGZkNjA3ZmEzZmQ2MDdmYTMpLAorICAgIFU2NCgweDlmMjYwMWY3OWYyNjAxZjcpLCBVNjQoMHhiY2Y1NzI1Y2JjZjU3MjVjKSwKKyAgICBVNjQoMHhjNTNiNjY0NGM1M2I2NjQ0KSwgVTY0KDB4MzQ3ZWZiNWIzNDdlZmI1YiksCisgICAgVTY0KDB4NzYyOTQzOGI3NjI5NDM4YiksIFU2NCgweGRjYzYyM2NiZGNjNjIzY2IpLAorICAgIFU2NCgweDY4ZmNlZGI2NjhmY2VkYjYpLCBVNjQoMHg2M2YxZTRiODYzZjFlNGI4KSwKKyAgICBVNjQoMHhjYWRjMzFkN2NhZGMzMWQ3KSwgVTY0KDB4MTA4NTYzNDIxMDg1NjM0MiksCisgICAgVTY0KDB4NDAyMjk3MTM0MDIyOTcxMyksIFU2NCgweDIwMTFjNjg0MjAxMWM2ODQpLAorICAgIFU2NCgweDdkMjQ0YTg1N2QyNDRhODUpLCBVNjQoMHhmODNkYmJkMmY4M2RiYmQyKSwKKyAgICBVNjQoMHgxMTMyZjlhZTExMzJmOWFlKSwgVTY0KDB4NmRhMTI5Yzc2ZGExMjljNyksCisgICAgVTY0KDB4NGIyZjllMWQ0YjJmOWUxZCksIFU2NCgweGYzMzBiMmRjZjMzMGIyZGMpLAorICAgIFU2NCgweGVjNTI4NjBkZWM1Mjg2MGQpLCBVNjQoMHhkMGUzYzE3N2QwZTNjMTc3KSwKKyAgICBVNjQoMHg2YzE2YjMyYjZjMTZiMzJiKSwgVTY0KDB4OTliOTcwYTk5OWI5NzBhOSksCisgICAgVTY0KDB4ZmE0ODk0MTFmYTQ4OTQxMSksIFU2NCgweDIyNjRlOTQ3MjI2NGU5NDcpLAorICAgIFU2NCgweGM0OGNmY2E4YzQ4Y2ZjYTgpLCBVNjQoMHgxYTNmZjBhMDFhM2ZmMGEwKSwKKyAgICBVNjQoMHhkODJjN2Q1NmQ4MmM3ZDU2KSwgVTY0KDB4ZWY5MDMzMjJlZjkwMzMyMiksCisgICAgVTY0KDB4Yzc0ZTQ5ODdjNzRlNDk4NyksIFU2NCgweGMxZDEzOGQ5YzFkMTM4ZDkpLAorICAgIFU2NCgweGZlYTJjYThjZmVhMmNhOGMpLCBVNjQoMHgzNjBiZDQ5ODM2MGJkNDk4KSwKKyAgICBVNjQoMHhjZjgxZjVhNmNmODFmNWE2KSwgVTY0KDB4MjhkZTdhYTUyOGRlN2FhNSksCisgICAgVTY0KDB4MjY4ZWI3ZGEyNjhlYjdkYSksIFU2NCgweGE0YmZhZDNmYTRiZmFkM2YpLAorICAgIFU2NCgweGU0OWQzYTJjZTQ5ZDNhMmMpLCBVNjQoMHgwZDkyNzg1MDBkOTI3ODUwKSwKKyAgICBVNjQoMHg5YmNjNWY2YTliY2M1ZjZhKSwgVTY0KDB4NjI0NjdlNTQ2MjQ2N2U1NCksCisgICAgVTY0KDB4YzIxMzhkZjZjMjEzOGRmNiksIFU2NCgweGU4YjhkODkwZThiOGQ4OTApLAorICAgIFU2NCgweDVlZjczOTJlNWVmNzM5MmUpLCBVNjQoMHhmNWFmYzM4MmY1YWZjMzgyKSwKKyAgICBVNjQoMHhiZTgwNWQ5ZmJlODA1ZDlmKSwgVTY0KDB4N2M5M2QwNjk3YzkzZDA2OSksCisgICAgVTY0KDB4YTkyZGQ1NmZhOTJkZDU2ZiksIFU2NCgweGIzMTIyNWNmYjMxMjI1Y2YpLAorICAgIFU2NCgweDNiOTlhY2M4M2I5OWFjYzgpLCBVNjQoMHhhNzdkMTgxMGE3N2QxODEwKSwKKyAgICBVNjQoMHg2ZTYzOWNlODZlNjM5Y2U4KSwgVTY0KDB4N2JiYjNiZGI3YmJiM2JkYiksCisgICAgVTY0KDB4MDk3ODI2Y2QwOTc4MjZjZCksIFU2NCgweGY0MTg1OTZlZjQxODU5NmUpLAorICAgIFU2NCgweDAxYjc5YWVjMDFiNzlhZWMpLCBVNjQoMHhhODlhNGY4M2E4OWE0ZjgzKSwKKyAgICBVNjQoMHg2NTZlOTVlNjY1NmU5NWU2KSwgVTY0KDB4N2VlNmZmYWE3ZWU2ZmZhYSksCisgICAgVTY0KDB4MDhjZmJjMjEwOGNmYmMyMSksIFU2NCgweGU2ZTgxNWVmZTZlODE1ZWYpLAorICAgIFU2NCgweGQ5OWJlN2JhZDk5YmU3YmEpLCBVNjQoMHhjZTM2NmY0YWNlMzY2ZjRhKSwKKyAgICBVNjQoMHhkNDA5OWZlYWQ0MDk5ZmVhKSwgVTY0KDB4ZDY3Y2IwMjlkNjdjYjAyOSksCisgICAgVTY0KDB4YWZiMmE0MzFhZmIyYTQzMSksIFU2NCgweDMxMjMzZjJhMzEyMzNmMmEpLAorICAgIFU2NCgweDMwOTRhNWM2MzA5NGE1YzYpLCBVNjQoMHhjMDY2YTIzNWMwNjZhMjM1KSwKKyAgICBVNjQoMHgzN2JjNGU3NDM3YmM0ZTc0KSwgVTY0KDB4YTZjYTgyZmNhNmNhODJmYyksCisgICAgVTY0KDB4YjBkMDkwZTBiMGQwOTBlMCksIFU2NCgweDE1ZDhhNzMzMTVkOGE3MzMpLAorICAgIFU2NCgweDRhOTgwNGYxNGE5ODA0ZjEpLCBVNjQoMHhmN2RhZWM0MWY3ZGFlYzQxKSwKKyAgICBVNjQoMHgwZTUwY2Q3ZjBlNTBjZDdmKSwgVTY0KDB4MmZmNjkxMTcyZmY2OTExNyksCisgICAgVTY0KDB4OGRkNjRkNzY4ZGQ2NGQ3NiksIFU2NCgweDRkYjBlZjQzNGRiMGVmNDMpLAorICAgIFU2NCgweDU0NGRhYWNjNTQ0ZGFhY2MpLCBVNjQoMHhkZjA0OTZlNGRmMDQ5NmU0KSwKKyAgICBVNjQoMHhlM2I1ZDE5ZWUzYjVkMTllKSwgVTY0KDB4MWI4ODZhNGMxYjg4NmE0YyksCisgICAgVTY0KDB4YjgxZjJjYzFiODFmMmNjMSksIFU2NCgweDdmNTE2NTQ2N2Y1MTY1NDYpLAorICAgIFU2NCgweDA0ZWE1ZTlkMDRlYTVlOWQpLCBVNjQoMHg1ZDM1OGMwMTVkMzU4YzAxKSwKKyAgICBVNjQoMHg3Mzc0ODdmYTczNzQ4N2ZhKSwgVTY0KDB4MmU0MTBiZmIyZTQxMGJmYiksCisgICAgVTY0KDB4NWExZDY3YjM1YTFkNjdiMyksIFU2NCgweDUyZDJkYjkyNTJkMmRiOTIpLAorICAgIFU2NCgweDMzNTYxMGU5MzM1NjEwZTkpLCBVNjQoMHgxMzQ3ZDY2ZDEzNDdkNjZkKSwKKyAgICBVNjQoMHg4YzYxZDc5YThjNjFkNzlhKSwgVTY0KDB4N2EwY2ExMzc3YTBjYTEzNyksCisgICAgVTY0KDB4OGUxNGY4NTk4ZTE0Zjg1OSksIFU2NCgweDg5M2MxM2ViODkzYzEzZWIpLAorICAgIFU2NCgweGVlMjdhOWNlZWUyN2E5Y2UpLCBVNjQoMHgzNWM5NjFiNzM1Yzk2MWI3KSwKKyAgICBVNjQoMHhlZGU1MWNlMWVkZTUxY2UxKSwgVTY0KDB4M2NiMTQ3N2EzY2IxNDc3YSksCisgICAgVTY0KDB4NTlkZmQyOWM1OWRmZDI5YyksIFU2NCgweDNmNzNmMjU1M2Y3M2YyNTUpLAorICAgIFU2NCgweDc5Y2UxNDE4NzljZTE0MTgpLCBVNjQoMHhiZjM3Yzc3M2JmMzdjNzczKSwKKyAgICBVNjQoMHhlYWNkZjc1M2VhY2RmNzUzKSwgVTY0KDB4NWJhYWZkNWY1YmFhZmQ1ZiksCisgICAgVTY0KDB4MTQ2ZjNkZGYxNDZmM2RkZiksIFU2NCgweDg2ZGI0NDc4ODZkYjQ0NzgpLAorICAgIFU2NCgweDgxZjNhZmNhODFmM2FmY2EpLCBVNjQoMHgzZWM0NjhiOTNlYzQ2OGI5KSwKKyAgICBVNjQoMHgyYzM0MjQzODJjMzQyNDM4KSwgVTY0KDB4NWY0MGEzYzI1ZjQwYTNjMiksCisgICAgVTY0KDB4NzJjMzFkMTY3MmMzMWQxNiksIFU2NCgweDBjMjVlMmJjMGMyNWUyYmMpLAorICAgIFU2NCgweDhiNDkzYzI4OGI0OTNjMjgpLCBVNjQoMHg0MTk1MGRmZjQxOTUwZGZmKSwKKyAgICBVNjQoMHg3MTAxYTgzOTcxMDFhODM5KSwgVTY0KDB4ZGViMzBjMDhkZWIzMGMwOCksCisgICAgVTY0KDB4OWNlNGI0ZDg5Y2U0YjRkOCksIFU2NCgweDkwYzE1NjY0OTBjMTU2NjQpLAorICAgIFU2NCgweDYxODRjYjdiNjE4NGNiN2IpLCBVNjQoMHg3MGI2MzJkNTcwYjYzMmQ1KSwKKyAgICBVNjQoMHg3NDVjNmM0ODc0NWM2YzQ4KSwgVTY0KDB4NDI1N2I4ZDA0MjU3YjhkMCkKK307CitzdGF0aWMgY29uc3QgdTggVGQ0WzI1Nl0gPSB7CisgICAgMHg1MlUsIDB4MDlVLCAweDZhVSwgMHhkNVUsIDB4MzBVLCAweDM2VSwgMHhhNVUsIDB4MzhVLAorICAgIDB4YmZVLCAweDQwVSwgMHhhM1UsIDB4OWVVLCAweDgxVSwgMHhmM1UsIDB4ZDdVLCAweGZiVSwKKyAgICAweDdjVSwgMHhlM1UsIDB4MzlVLCAweDgyVSwgMHg5YlUsIDB4MmZVLCAweGZmVSwgMHg4N1UsCisgICAgMHgzNFUsIDB4OGVVLCAweDQzVSwgMHg0NFUsIDB4YzRVLCAweGRlVSwgMHhlOVUsIDB4Y2JVLAorICAgIDB4NTRVLCAweDdiVSwgMHg5NFUsIDB4MzJVLCAweGE2VSwgMHhjMlUsIDB4MjNVLCAweDNkVSwKKyAgICAweGVlVSwgMHg0Y1UsIDB4OTVVLCAweDBiVSwgMHg0MlUsIDB4ZmFVLCAweGMzVSwgMHg0ZVUsCisgICAgMHgwOFUsIDB4MmVVLCAweGExVSwgMHg2NlUsIDB4MjhVLCAweGQ5VSwgMHgyNFUsIDB4YjJVLAorICAgIDB4NzZVLCAweDViVSwgMHhhMlUsIDB4NDlVLCAweDZkVSwgMHg4YlUsIDB4ZDFVLCAweDI1VSwKKyAgICAweDcyVSwgMHhmOFUsIDB4ZjZVLCAweDY0VSwgMHg4NlUsIDB4NjhVLCAweDk4VSwgMHgxNlUsCisgICAgMHhkNFUsIDB4YTRVLCAweDVjVSwgMHhjY1UsIDB4NWRVLCAweDY1VSwgMHhiNlUsIDB4OTJVLAorICAgIDB4NmNVLCAweDcwVSwgMHg0OFUsIDB4NTBVLCAweGZkVSwgMHhlZFUsIDB4YjlVLCAweGRhVSwKKyAgICAweDVlVSwgMHgxNVUsIDB4NDZVLCAweDU3VSwgMHhhN1UsIDB4OGRVLCAweDlkVSwgMHg4NFUsCisgICAgMHg5MFUsIDB4ZDhVLCAweGFiVSwgMHgwMFUsIDB4OGNVLCAweGJjVSwgMHhkM1UsIDB4MGFVLAorICAgIDB4ZjdVLCAweGU0VSwgMHg1OFUsIDB4MDVVLCAweGI4VSwgMHhiM1UsIDB4NDVVLCAweDA2VSwKKyAgICAweGQwVSwgMHgyY1UsIDB4MWVVLCAweDhmVSwgMHhjYVUsIDB4M2ZVLCAweDBmVSwgMHgwMlUsCisgICAgMHhjMVUsIDB4YWZVLCAweGJkVSwgMHgwM1UsIDB4MDFVLCAweDEzVSwgMHg4YVUsIDB4NmJVLAorICAgIDB4M2FVLCAweDkxVSwgMHgxMVUsIDB4NDFVLCAweDRmVSwgMHg2N1UsIDB4ZGNVLCAweGVhVSwKKyAgICAweDk3VSwgMHhmMlUsIDB4Y2ZVLCAweGNlVSwgMHhmMFUsIDB4YjRVLCAweGU2VSwgMHg3M1UsCisgICAgMHg5NlUsIDB4YWNVLCAweDc0VSwgMHgyMlUsIDB4ZTdVLCAweGFkVSwgMHgzNVUsIDB4ODVVLAorICAgIDB4ZTJVLCAweGY5VSwgMHgzN1UsIDB4ZThVLCAweDFjVSwgMHg3NVUsIDB4ZGZVLCAweDZlVSwKKyAgICAweDQ3VSwgMHhmMVUsIDB4MWFVLCAweDcxVSwgMHgxZFUsIDB4MjlVLCAweGM1VSwgMHg4OVUsCisgICAgMHg2ZlUsIDB4YjdVLCAweDYyVSwgMHgwZVUsIDB4YWFVLCAweDE4VSwgMHhiZVUsIDB4MWJVLAorICAgIDB4ZmNVLCAweDU2VSwgMHgzZVUsIDB4NGJVLCAweGM2VSwgMHhkMlUsIDB4NzlVLCAweDIwVSwKKyAgICAweDlhVSwgMHhkYlUsIDB4YzBVLCAweGZlVSwgMHg3OFUsIDB4Y2RVLCAweDVhVSwgMHhmNFUsCisgICAgMHgxZlUsIDB4ZGRVLCAweGE4VSwgMHgzM1UsIDB4ODhVLCAweDA3VSwgMHhjN1UsIDB4MzFVLAorICAgIDB4YjFVLCAweDEyVSwgMHgxMFUsIDB4NTlVLCAweDI3VSwgMHg4MFUsIDB4ZWNVLCAweDVmVSwKKyAgICAweDYwVSwgMHg1MVUsIDB4N2ZVLCAweGE5VSwgMHgxOVUsIDB4YjVVLCAweDRhVSwgMHgwZFUsCisgICAgMHgyZFUsIDB4ZTVVLCAweDdhVSwgMHg5ZlUsIDB4OTNVLCAweGM5VSwgMHg5Y1UsIDB4ZWZVLAorICAgIDB4YTBVLCAweGUwVSwgMHgzYlUsIDB4NGRVLCAweGFlVSwgMHgyYVUsIDB4ZjVVLCAweGIwVSwKKyAgICAweGM4VSwgMHhlYlUsIDB4YmJVLCAweDNjVSwgMHg4M1UsIDB4NTNVLCAweDk5VSwgMHg2MVUsCisgICAgMHgxN1UsIDB4MmJVLCAweDA0VSwgMHg3ZVUsIDB4YmFVLCAweDc3VSwgMHhkNlUsIDB4MjZVLAorICAgIDB4ZTFVLCAweDY5VSwgMHgxNFUsIDB4NjNVLCAweDU1VSwgMHgyMVUsIDB4MGNVLCAweDdkVQorfTsKKworc3RhdGljIGNvbnN0IHUzMiByY29uW10gPSB7CisgICAgMHgwMDAwMDAwMVUsIDB4MDAwMDAwMDJVLCAweDAwMDAwMDA0VSwgMHgwMDAwMDAwOFUsCisgICAgMHgwMDAwMDAxMFUsIDB4MDAwMDAwMjBVLCAweDAwMDAwMDQwVSwgMHgwMDAwMDA4MFUsCisgICAgMHgwMDAwMDAxYlUsIDB4MDAwMDAwMzZVLCAvKiBmb3IgMTI4LWJpdCBibG9ja3MsIFJpam5kYWVsIG5ldmVyIHVzZXMgbW9yZSB0aGFuIDEwIHJjb24gdmFsdWVzICovCit9OworCisvKioKKyAqIEV4cGFuZCB0aGUgY2lwaGVyIGtleSBpbnRvIHRoZSBlbmNyeXB0aW9uIGtleSBzY2hlZHVsZS4KKyAqLworaW50IEFFU19zZXRfZW5jcnlwdF9rZXkoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgY29uc3QgaW50IGJpdHMsCisJCQlBRVNfS0VZICprZXkpIHsKKworCXUzMiAqcms7CisgICAJaW50IGkgPSAwOworCXUzMiB0ZW1wOworCisJaWYgKCF1c2VyS2V5IHx8ICFrZXkpCisJCXJldHVybiAtMTsKKwlpZiAoYml0cyAhPSAxMjggJiYgYml0cyAhPSAxOTIgJiYgYml0cyAhPSAyNTYpCisJCXJldHVybiAtMjsKKworCXJrID0ga2V5LT5yZF9rZXk7CisKKwlpZiAoYml0cz09MTI4KQorCQlrZXktPnJvdW5kcyA9IDEwOworCWVsc2UgaWYgKGJpdHM9PTE5MikKKwkJa2V5LT5yb3VuZHMgPSAxMjsKKwllbHNlCisJCWtleS0+cm91bmRzID0gMTQ7CisKKwlya1swXSA9IEdFVFUzMih1c2VyS2V5ICAgICApOworCXJrWzFdID0gR0VUVTMyKHVzZXJLZXkgKyAgNCk7CisJcmtbMl0gPSBHRVRVMzIodXNlcktleSArICA4KTsKKwlya1szXSA9IEdFVFUzMih1c2VyS2V5ICsgMTIpOworCWlmIChiaXRzID09IDEyOCkgeworCQl3aGlsZSAoMSkgeworCQkJdGVtcCAgPSBya1szXTsKKwkJCXJrWzRdID0gcmtbMF0gXgorCQkJCShUZTRbKHRlbXAgPj4gIDgpICYgMHhmZl0gICAgICApIF4KKwkJCQkoVGU0Wyh0ZW1wID4+IDE2KSAmIDB4ZmZdIDw8ICA4KSBeCisJCQkJKFRlNFsodGVtcCA+PiAyNCkgICAgICAgXSA8PCAxNikgXgorCQkJCShUZTRbKHRlbXAgICAgICApICYgMHhmZl0gPDwgMjQpIF4KKwkJCQlyY29uW2ldOworCQkJcmtbNV0gPSBya1sxXSBeIHJrWzRdOworCQkJcmtbNl0gPSBya1syXSBeIHJrWzVdOworCQkJcmtbN10gPSBya1szXSBeIHJrWzZdOworCQkJaWYgKCsraSA9PSAxMCkgeworCQkJCXJldHVybiAwOworCQkJfQorCQkJcmsgKz0gNDsKKwkJfQorCX0KKwlya1s0XSA9IEdFVFUzMih1c2VyS2V5ICsgMTYpOworCXJrWzVdID0gR0VUVTMyKHVzZXJLZXkgKyAyMCk7CisJaWYgKGJpdHMgPT0gMTkyKSB7CisJCXdoaWxlICgxKSB7CisJCQl0ZW1wID0gcmtbIDVdOworCQkJcmtbIDZdID0gcmtbIDBdIF4KKwkJCQkoVGU0Wyh0ZW1wID4+ICA4KSAmIDB4ZmZdICAgICAgKSBeCisJCQkJKFRlNFsodGVtcCA+PiAxNikgJiAweGZmXSA8PCAgOCkgXgorCQkJCShUZTRbKHRlbXAgPj4gMjQpICAgICAgIF0gPDwgMTYpIF4KKwkJCQkoVGU0Wyh0ZW1wICAgICAgKSAmIDB4ZmZdIDw8IDI0KSBeCisJCQkJcmNvbltpXTsKKwkJCXJrWyA3XSA9IHJrWyAxXSBeIHJrWyA2XTsKKwkJCXJrWyA4XSA9IHJrWyAyXSBeIHJrWyA3XTsKKwkJCXJrWyA5XSA9IHJrWyAzXSBeIHJrWyA4XTsKKwkJCWlmICgrK2kgPT0gOCkgeworCQkJCXJldHVybiAwOworCQkJfQorCQkJcmtbMTBdID0gcmtbIDRdIF4gcmtbIDldOworCQkJcmtbMTFdID0gcmtbIDVdIF4gcmtbMTBdOworCQkJcmsgKz0gNjsKKwkJfQorCX0KKwlya1s2XSA9IEdFVFUzMih1c2VyS2V5ICsgMjQpOworCXJrWzddID0gR0VUVTMyKHVzZXJLZXkgKyAyOCk7CisJaWYgKGJpdHMgPT0gMjU2KSB7CisJCXdoaWxlICgxKSB7CisJCQl0ZW1wID0gcmtbIDddOworCQkJcmtbIDhdID0gcmtbIDBdIF4KKwkJCQkoVGU0Wyh0ZW1wID4+ICA4KSAmIDB4ZmZdICAgICAgKSBeCisJCQkJKFRlNFsodGVtcCA+PiAxNikgJiAweGZmXSA8PCAgOCkgXgorCQkJCShUZTRbKHRlbXAgPj4gMjQpICAgICAgIF0gPDwgMTYpIF4KKwkJCQkoVGU0Wyh0ZW1wICAgICAgKSAmIDB4ZmZdIDw8IDI0KSBeCisJCQkJcmNvbltpXTsKKwkJCXJrWyA5XSA9IHJrWyAxXSBeIHJrWyA4XTsKKwkJCXJrWzEwXSA9IHJrWyAyXSBeIHJrWyA5XTsKKwkJCXJrWzExXSA9IHJrWyAzXSBeIHJrWzEwXTsKKwkJCWlmICgrK2kgPT0gNykgeworCQkJCXJldHVybiAwOworCQkJfQorCQkJdGVtcCA9IHJrWzExXTsKKwkJCXJrWzEyXSA9IHJrWyA0XSBeCisJCQkJKFRlNFsodGVtcCAgICAgICkgJiAweGZmXSAgICAgICkgXgorCQkJCShUZTRbKHRlbXAgPj4gIDgpICYgMHhmZl0gPDwgIDgpIF4KKwkJCQkoVGU0Wyh0ZW1wID4+IDE2KSAmIDB4ZmZdIDw8IDE2KSBeCisJCQkJKFRlNFsodGVtcCA+PiAyNCkgICAgICAgXSA8PCAyNCk7CisJCQlya1sxM10gPSBya1sgNV0gXiBya1sxMl07CisJCQlya1sxNF0gPSBya1sgNl0gXiBya1sxM107CisJCQlya1sxNV0gPSBya1sgN10gXiBya1sxNF07CisKKwkJCXJrICs9IDg7CisgICAgICAgIAl9CisJfQorCXJldHVybiAwOworfQorCisvKioKKyAqIEV4cGFuZCB0aGUgY2lwaGVyIGtleSBpbnRvIHRoZSBkZWNyeXB0aW9uIGtleSBzY2hlZHVsZS4KKyAqLworaW50IEFFU19zZXRfZGVjcnlwdF9rZXkoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgY29uc3QgaW50IGJpdHMsCisJCQkgQUVTX0tFWSAqa2V5KSB7CisKKyAgICAgICAgdTMyICpyazsKKwlpbnQgaSwgaiwgc3RhdHVzOworCXUzMiB0ZW1wOworCisJLyogZmlyc3QsIHN0YXJ0IHdpdGggYW4gZW5jcnlwdGlvbiBzY2hlZHVsZSAqLworCXN0YXR1cyA9IEFFU19zZXRfZW5jcnlwdF9rZXkodXNlcktleSwgYml0cywga2V5KTsKKwlpZiAoc3RhdHVzIDwgMCkKKwkJcmV0dXJuIHN0YXR1czsKKworCXJrID0ga2V5LT5yZF9rZXk7CisKKwkvKiBpbnZlcnQgdGhlIG9yZGVyIG9mIHRoZSByb3VuZCBrZXlzOiAqLworCWZvciAoaSA9IDAsIGogPSA0KihrZXktPnJvdW5kcyk7IGkgPCBqOyBpICs9IDQsIGogLT0gNCkgeworCQl0ZW1wID0gcmtbaSAgICBdOyBya1tpICAgIF0gPSBya1tqICAgIF07IHJrW2ogICAgXSA9IHRlbXA7CisJCXRlbXAgPSBya1tpICsgMV07IHJrW2kgKyAxXSA9IHJrW2ogKyAxXTsgcmtbaiArIDFdID0gdGVtcDsKKwkJdGVtcCA9IHJrW2kgKyAyXTsgcmtbaSArIDJdID0gcmtbaiArIDJdOyBya1tqICsgMl0gPSB0ZW1wOworCQl0ZW1wID0gcmtbaSArIDNdOyBya1tpICsgM10gPSBya1tqICsgM107IHJrW2ogKyAzXSA9IHRlbXA7CisJfQorCS8qIGFwcGx5IHRoZSBpbnZlcnNlIE1peENvbHVtbiB0cmFuc2Zvcm0gdG8gYWxsIHJvdW5kIGtleXMgYnV0IHRoZSBmaXJzdCBhbmQgdGhlIGxhc3Q6ICovCisJZm9yIChpID0gMTsgaSA8IChrZXktPnJvdW5kcyk7IGkrKykgeworCQlyayArPSA0OworI2lmIDEKKwkJZm9yIChqID0gMDsgaiA8IDQ7IGorKykgeworCQkJdTMyIHRwMSwgdHAyLCB0cDQsIHRwOCwgdHA5LCB0cGIsIHRwZCwgdHBlLCBtOworCisJCQl0cDEgPSBya1tqXTsKKwkJCW0gPSB0cDEgJiAweDgwODA4MDgwOworCQkJdHAyID0gKCh0cDEgJiAweDdmN2Y3ZjdmKSA8PCAxKSBeCisJCQkJKChtIC0gKG0gPj4gNykpICYgMHgxYjFiMWIxYik7CisJCQltID0gdHAyICYgMHg4MDgwODA4MDsKKwkJCXRwNCA9ICgodHAyICYgMHg3ZjdmN2Y3ZikgPDwgMSkgXgorCQkJCSgobSAtIChtID4+IDcpKSAmIDB4MWIxYjFiMWIpOworCQkJbSA9IHRwNCAmIDB4ODA4MDgwODA7CisJCQl0cDggPSAoKHRwNCAmIDB4N2Y3ZjdmN2YpIDw8IDEpIF4KKwkJCQkoKG0gLSAobSA+PiA3KSkgJiAweDFiMWIxYjFiKTsKKwkJCXRwOSA9IHRwOCBeIHRwMTsKKwkJCXRwYiA9IHRwOSBeIHRwMjsKKwkJCXRwZCA9IHRwOSBeIHRwNDsKKwkJCXRwZSA9IHRwOCBeIHRwNCBeIHRwMjsKKyNpZiBkZWZpbmVkKFJPVEFURSkKKwkJCXJrW2pdID0gdHBlIF4gUk9UQVRFKHRwZCwxNikgXgorCQkJCVJPVEFURSh0cDksOCkgXiBST1RBVEUodHBiLDI0KTsKKyNlbHNlCisJCQlya1tqXSA9IHRwZSBeICh0cGQgPj4gMTYpIF4gKHRwZCA8PCAxNikgXiAKKwkJCQkodHA5ID4+IDI0KSBeICh0cDkgPDwgOCkgXgorCQkJCSh0cGIgPj4gOCkgXiAodHBiIDw8IDI0KTsKKyNlbmRpZgorCQl9CisjZWxzZQorCQlya1swXSA9CisJCQlUZDBbVGUyWyhya1swXSAgICAgICkgJiAweGZmXSAmIDB4ZmZdIF4KKwkJCVRkMVtUZTJbKHJrWzBdID4+ICA4KSAmIDB4ZmZdICYgMHhmZl0gXgorCQkJVGQyW1RlMlsocmtbMF0gPj4gMTYpICYgMHhmZl0gJiAweGZmXSBeCisJCQlUZDNbVGUyWyhya1swXSA+PiAyNCkgICAgICAgXSAmIDB4ZmZdOworCQlya1sxXSA9CisJCQlUZDBbVGUyWyhya1sxXSAgICAgICkgJiAweGZmXSAmIDB4ZmZdIF4KKwkJCVRkMVtUZTJbKHJrWzFdID4+ICA4KSAmIDB4ZmZdICYgMHhmZl0gXgorCQkJVGQyW1RlMlsocmtbMV0gPj4gMTYpICYgMHhmZl0gJiAweGZmXSBeCisJCQlUZDNbVGUyWyhya1sxXSA+PiAyNCkgICAgICAgXSAmIDB4ZmZdOworCQlya1syXSA9CisJCQlUZDBbVGUyWyhya1syXSAgICAgICkgJiAweGZmXSAmIDB4ZmZdIF4KKwkJCVRkMVtUZTJbKHJrWzJdID4+ICA4KSAmIDB4ZmZdICYgMHhmZl0gXgorCQkJVGQyW1RlMlsocmtbMl0gPj4gMTYpICYgMHhmZl0gJiAweGZmXSBeCisJCQlUZDNbVGUyWyhya1syXSA+PiAyNCkgICAgICAgXSAmIDB4ZmZdOworCQlya1szXSA9CisJCQlUZDBbVGUyWyhya1szXSAgICAgICkgJiAweGZmXSAmIDB4ZmZdIF4KKwkJCVRkMVtUZTJbKHJrWzNdID4+ICA4KSAmIDB4ZmZdICYgMHhmZl0gXgorCQkJVGQyW1RlMlsocmtbM10gPj4gMTYpICYgMHhmZl0gJiAweGZmXSBeCisJCQlUZDNbVGUyWyhya1szXSA+PiAyNCkgICAgICAgXSAmIDB4ZmZdOworI2VuZGlmCisJfQorCXJldHVybiAwOworfQorCisvKgorICogRW5jcnlwdCBhIHNpbmdsZSBibG9jaworICogaW4gYW5kIG91dCBjYW4gb3ZlcmxhcAorICovCit2b2lkIEFFU19lbmNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCisJCSBjb25zdCBBRVNfS0VZICprZXkpIHsKKworCWNvbnN0IHUzMiAqcms7CisJdTMyIHMwLCBzMSwgczIsIHMzLCB0WzRdOworCWludCByOworCisJYXNzZXJ0KGluICYmIG91dCAmJiBrZXkpOworCXJrID0ga2V5LT5yZF9rZXk7CisKKwkvKgorCSAqIG1hcCBieXRlIGFycmF5IGJsb2NrIHRvIGNpcGhlciBzdGF0ZQorCSAqIGFuZCBhZGQgaW5pdGlhbCByb3VuZCBrZXk6CisJICovCisJczAgPSBHRVRVMzIoaW4gICAgICkgXiBya1swXTsKKwlzMSA9IEdFVFUzMihpbiArICA0KSBeIHJrWzFdOworCXMyID0gR0VUVTMyKGluICsgIDgpIF4gcmtbMl07CisJczMgPSBHRVRVMzIoaW4gKyAxMikgXiBya1szXTsKKworI2lmIGRlZmluZWQoQUVTX0NPTVBBQ1RfSU5fT1VURVJfUk9VTkRTKQorCXByZWZldGNoMjU2KFRlNCk7CisKKwl0WzBdID0JVGU0WyhzMCAgICAgICkgJiAweGZmXSAgICAgICBeCisJCVRlNFsoczEgPj4gIDgpICYgMHhmZl0gPDwgIDggXgorCQlUZTRbKHMyID4+IDE2KSAmIDB4ZmZdIDw8IDE2IF4KKwkJVGU0WyhzMyA+PiAyNCkgICAgICAgXSA8PCAyNDsKKwl0WzFdID0JVGU0WyhzMSAgICAgICkgJiAweGZmXSAgICAgICBeCisJCVRlNFsoczIgPj4gIDgpICYgMHhmZl0gPDwgIDggXgorCQlUZTRbKHMzID4+IDE2KSAmIDB4ZmZdIDw8IDE2IF4KKwkJVGU0WyhzMCA+PiAyNCkgICAgICAgXSA8PCAyNDsKKwl0WzJdID0JVGU0WyhzMiAgICAgICkgJiAweGZmXSAgICAgICBeCisJCVRlNFsoczMgPj4gIDgpICYgMHhmZl0gPDwgIDggXgorCQlUZTRbKHMwID4+IDE2KSAmIDB4ZmZdIDw8IDE2IF4KKwkJVGU0WyhzMSA+PiAyNCkgICAgICAgXSA8PCAyNDsKKwl0WzNdID0JVGU0WyhzMyAgICAgICkgJiAweGZmXSAgICAgICBeCisJCVRlNFsoczAgPj4gIDgpICYgMHhmZl0gPDwgIDggXgorCQlUZTRbKHMxID4+IDE2KSAmIDB4ZmZdIDw8IDE2IF4KKwkJVGU0WyhzMiA+PiAyNCkgICAgICAgXSA8PCAyNDsKKworCS8qIG5vdyBkbyB0aGUgbGluZWFyIHRyYW5zZm9ybSB1c2luZyB3b3JkcyAqLworCXsJaW50IGk7CisJCXUzMiByMCwgcjEsIHIyOworCisJCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJCXIwID0gdFtpXTsKKwkJCXIxID0gcjAgJiAweDgwODA4MDgwOworCQkJcjIgPSAoKHIwICYgMHg3ZjdmN2Y3ZikgPDwgMSkgXgorCQkJCSgocjEgLSAocjEgPj4gNykpICYgMHgxYjFiMWIxYik7CisjaWYgZGVmaW5lZChST1RBVEUpCisJCQl0W2ldID0gcjIgXiBST1RBVEUocjIsMjQpIF4gUk9UQVRFKHIwLDI0KSBeCisJCQkJUk9UQVRFKHIwLDE2KSBeIFJPVEFURShyMCw4KTsKKyNlbHNlCisJCQl0W2ldID0gcjIgXiAoKHIyIF4gcjApIDw8IDI0KSBeICgocjIgXiByMCkgPj4gOCkgXgorCQkJCShyMCA8PCAxNikgXiAocjAgPj4gMTYpIF4KKwkJCQkocjAgPDwgOCkgXiAocjAgPj4gMjQpOworI2VuZGlmCisJCQl0W2ldIF49IHJrWzQraV07CisJCX0KKwl9CisjZWxzZQorCXRbMF0gPQlUZTBbKHMwICAgICAgKSAmIDB4ZmZdIF4KKwkJVGUxWyhzMSA+PiAgOCkgJiAweGZmXSBeCisJCVRlMlsoczIgPj4gMTYpICYgMHhmZl0gXgorCQlUZTNbKHMzID4+IDI0KSAgICAgICBdIF4KKwkJcmtbNF07CisJdFsxXSA9CVRlMFsoczEgICAgICApICYgMHhmZl0gXgorCQlUZTFbKHMyID4+ICA4KSAmIDB4ZmZdIF4KKwkJVGUyWyhzMyA+PiAxNikgJiAweGZmXSBeCisJCVRlM1soczAgPj4gMjQpICAgICAgIF0gXgorCQlya1s1XTsKKwl0WzJdID0JVGUwWyhzMiAgICAgICkgJiAweGZmXSBeCisJCVRlMVsoczMgPj4gIDgpICYgMHhmZl0gXgorCQlUZTJbKHMwID4+IDE2KSAmIDB4ZmZdIF4KKwkJVGUzWyhzMSA+PiAyNCkgICAgICAgXSBeCisJCXJrWzZdOworCXRbM10gPQlUZTBbKHMzICAgICAgKSAmIDB4ZmZdIF4KKwkJVGUxWyhzMCA+PiAgOCkgJiAweGZmXSBeCisJCVRlMlsoczEgPj4gMTYpICYgMHhmZl0gXgorCQlUZTNbKHMyID4+IDI0KSAgICAgICBdIF4KKwkJcmtbN107CisjZW5kaWYKKwlzMCA9IHRbMF07IHMxID0gdFsxXTsgczIgPSB0WzJdOyBzMyA9IHRbM107CisKKyAgICAvKgorICAgICAqIE5yIC0gMiBmdWxsIHJvdW5kczoKKyAgICAgKi8KKyAgICBmb3IgKHJrKz04LHI9a2V5LT5yb3VuZHMtMjsgcj4wOyByays9NCxyLS0pIHsKKyNpZiBkZWZpbmVkKEFFU19DT01QQUNUX0lOX0lOTkVSX1JPVU5EUykKKwl0WzBdID0JVGU0WyhzMCAgICAgICkgJiAweGZmXSAgICAgICBeCisJCVRlNFsoczEgPj4gIDgpICYgMHhmZl0gPDwgIDggXgorCQlUZTRbKHMyID4+IDE2KSAmIDB4ZmZdIDw8IDE2IF4KKwkJVGU0WyhzMyA+PiAyNCkgICAgICAgXSA8PCAyNDsKKwl0WzFdID0JVGU0WyhzMSAgICAgICkgJiAweGZmXSAgICAgICBeCisJCVRlNFsoczIgPj4gIDgpICYgMHhmZl0gPDwgIDggXgorCQlUZTRbKHMzID4+IDE2KSAmIDB4ZmZdIDw8IDE2IF4KKwkJVGU0WyhzMCA+PiAyNCkgICAgICAgXSA8PCAyNDsKKwl0WzJdID0JVGU0WyhzMiAgICAgICkgJiAweGZmXSAgICAgICBeCisJCVRlNFsoczMgPj4gIDgpICYgMHhmZl0gPDwgIDggXgorCQlUZTRbKHMwID4+IDE2KSAmIDB4ZmZdIDw8IDE2IF4KKwkJVGU0WyhzMSA+PiAyNCkgICAgICAgXSA8PCAyNDsKKwl0WzNdID0JVGU0WyhzMyAgICAgICkgJiAweGZmXSAgICAgICBeCisJCVRlNFsoczAgPj4gIDgpICYgMHhmZl0gPDwgIDggXgorCQlUZTRbKHMxID4+IDE2KSAmIDB4ZmZdIDw8IDE2IF4KKwkJVGU0WyhzMiA+PiAyNCkgICAgICAgXSA8PCAyNDsKKworCS8qIG5vdyBkbyB0aGUgbGluZWFyIHRyYW5zZm9ybSB1c2luZyB3b3JkcyAqLworCXsJaW50IGk7CisJCXUzMiByMCwgcjEsIHIyOworCisJCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJCXIwID0gdFtpXTsKKwkJCXIxID0gcjAgJiAweDgwODA4MDgwOworCQkJcjIgPSAoKHIwICYgMHg3ZjdmN2Y3ZikgPDwgMSkgXgorCQkJCSgocjEgLSAocjEgPj4gNykpICYgMHgxYjFiMWIxYik7CisjaWYgZGVmaW5lZChST1RBVEUpCisJCQl0W2ldID0gcjIgXiBST1RBVEUocjIsMjQpIF4gUk9UQVRFKHIwLDI0KSBeCisJCQkJUk9UQVRFKHIwLDE2KSBeIFJPVEFURShyMCw4KTsKKyNlbHNlCisJCQl0W2ldID0gcjIgXiAoKHIyIF4gcjApIDw8IDI0KSBeICgocjIgXiByMCkgPj4gOCkgXgorCQkJCShyMCA8PCAxNikgXiAocjAgPj4gMTYpIF4KKwkJCQkocjAgPDwgOCkgXiAocjAgPj4gMjQpOworI2VuZGlmCisJCQl0W2ldIF49IHJrW2ldOworCQl9CisJfQorI2Vsc2UKKwl0WzBdID0JVGUwWyhzMCAgICAgICkgJiAweGZmXSBeCisJCVRlMVsoczEgPj4gIDgpICYgMHhmZl0gXgorCQlUZTJbKHMyID4+IDE2KSAmIDB4ZmZdIF4KKwkJVGUzWyhzMyA+PiAyNCkgICAgICAgXSBeCisJCXJrWzBdOworCXRbMV0gPQlUZTBbKHMxICAgICAgKSAmIDB4ZmZdIF4KKwkJVGUxWyhzMiA+PiAgOCkgJiAweGZmXSBeCisJCVRlMlsoczMgPj4gMTYpICYgMHhmZl0gXgorCQlUZTNbKHMwID4+IDI0KSAgICAgICBdIF4KKwkJcmtbMV07CisJdFsyXSA9CVRlMFsoczIgICAgICApICYgMHhmZl0gXgorCQlUZTFbKHMzID4+ICA4KSAmIDB4ZmZdIF4KKwkJVGUyWyhzMCA+PiAxNikgJiAweGZmXSBeCisJCVRlM1soczEgPj4gMjQpICAgICAgIF0gXgorCQlya1syXTsKKwl0WzNdID0JVGUwWyhzMyAgICAgICkgJiAweGZmXSBeCisJCVRlMVsoczAgPj4gIDgpICYgMHhmZl0gXgorCQlUZTJbKHMxID4+IDE2KSAmIDB4ZmZdIF4KKwkJVGUzWyhzMiA+PiAyNCkgICAgICAgXSBeCisJCXJrWzNdOworI2VuZGlmCisJczAgPSB0WzBdOyBzMSA9IHRbMV07IHMyID0gdFsyXTsgczMgPSB0WzNdOworICAgIH0KKyAgICAvKgorCSAqIGFwcGx5IGxhc3Qgcm91bmQgYW5kCisJICogbWFwIGNpcGhlciBzdGF0ZSB0byBieXRlIGFycmF5IGJsb2NrOgorCSAqLworI2lmIGRlZmluZWQoQUVTX0NPTVBBQ1RfSU5fT1VURVJfUk9VTkRTKQorCXByZWZldGNoMjU2KFRlNCk7CisKKwkqKHUzMiopKG91dCswKSA9CisJCVRlNFsoczAgICAgICApICYgMHhmZl0gICAgICAgXgorCQlUZTRbKHMxID4+ICA4KSAmIDB4ZmZdIDw8ICA4IF4KKwkJVGU0WyhzMiA+PiAxNikgJiAweGZmXSA8PCAxNiBeCisJCVRlNFsoczMgPj4gMjQpICAgICAgIF0gPDwgMjQgXgorCQlya1swXTsKKwkqKHUzMiopKG91dCs0KSA9CisJCVRlNFsoczEgICAgICApICYgMHhmZl0gICAgICAgXgorCQlUZTRbKHMyID4+ICA4KSAmIDB4ZmZdIDw8ICA4IF4KKwkJVGU0WyhzMyA+PiAxNikgJiAweGZmXSA8PCAxNiBeCisJCVRlNFsoczAgPj4gMjQpICAgICAgIF0gPDwgMjQgXgorCQlya1sxXTsKKwkqKHUzMiopKG91dCs4KSA9CisJCVRlNFsoczIgICAgICApICYgMHhmZl0gICAgICAgXgorCQlUZTRbKHMzID4+ICA4KSAmIDB4ZmZdIDw8ICA4IF4KKwkJVGU0WyhzMCA+PiAxNikgJiAweGZmXSA8PCAxNiBeCisJCVRlNFsoczEgPj4gMjQpICAgICAgIF0gPDwgMjQgXgorCQlya1syXTsKKwkqKHUzMiopKG91dCsxMikgPQorCQlUZTRbKHMzICAgICAgKSAmIDB4ZmZdICAgICAgIF4KKwkJVGU0WyhzMCA+PiAgOCkgJiAweGZmXSA8PCAgOCBeCisJCVRlNFsoczEgPj4gMTYpICYgMHhmZl0gPDwgMTYgXgorCQlUZTRbKHMyID4+IDI0KSAgICAgICBdIDw8IDI0IF4KKwkJcmtbM107CisjZWxzZQorCSoodTMyKikob3V0KzApID0KKwkJKFRlMlsoczAgICAgICApICYgMHhmZl0gJiAweDAwMDAwMGZmVSkgXgorCQkoVGUzWyhzMSA+PiAgOCkgJiAweGZmXSAmIDB4MDAwMGZmMDBVKSBeCisJCShUZTBbKHMyID4+IDE2KSAmIDB4ZmZdICYgMHgwMGZmMDAwMFUpIF4KKwkJKFRlMVsoczMgPj4gMjQpICAgICAgIF0gJiAweGZmMDAwMDAwVSkgXgorCQlya1swXTsKKwkqKHUzMiopKG91dCs0KSA9CisJCShUZTJbKHMxICAgICAgKSAmIDB4ZmZdICYgMHgwMDAwMDBmZlUpIF4KKwkJKFRlM1soczIgPj4gIDgpICYgMHhmZl0gJiAweDAwMDBmZjAwVSkgXgorCQkoVGUwWyhzMyA+PiAxNikgJiAweGZmXSAmIDB4MDBmZjAwMDBVKSBeCisJCShUZTFbKHMwID4+IDI0KSAgICAgICBdICYgMHhmZjAwMDAwMFUpIF4KKwkJcmtbMV07CisJKih1MzIqKShvdXQrOCkgPQorCQkoVGUyWyhzMiAgICAgICkgJiAweGZmXSAmIDB4MDAwMDAwZmZVKSBeCisJCShUZTNbKHMzID4+ICA4KSAmIDB4ZmZdICYgMHgwMDAwZmYwMFUpIF4KKwkJKFRlMFsoczAgPj4gMTYpICYgMHhmZl0gJiAweDAwZmYwMDAwVSkgXgorCQkoVGUxWyhzMSA+PiAyNCkgICAgICAgXSAmIDB4ZmYwMDAwMDBVKSBeCisJCXJrWzJdOworCSoodTMyKikob3V0KzEyKSA9CisJCShUZTJbKHMzICAgICAgKSAmIDB4ZmZdICYgMHgwMDAwMDBmZlUpIF4KKwkJKFRlM1soczAgPj4gIDgpICYgMHhmZl0gJiAweDAwMDBmZjAwVSkgXgorCQkoVGUwWyhzMSA+PiAxNikgJiAweGZmXSAmIDB4MDBmZjAwMDBVKSBeCisJCShUZTFbKHMyID4+IDI0KSAgICAgICBdICYgMHhmZjAwMDAwMFUpIF4KKwkJcmtbM107CisjZW5kaWYKK30KKworLyoKKyAqIERlY3J5cHQgYSBzaW5nbGUgYmxvY2sKKyAqIGluIGFuZCBvdXQgY2FuIG92ZXJsYXAKKyAqLwordm9pZCBBRVNfZGVjcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorCQkgY29uc3QgQUVTX0tFWSAqa2V5KSB7CisKKwljb25zdCB1MzIgKnJrOworCXUzMiBzMCwgczEsIHMyLCBzMywgdFs0XTsKKwlpbnQgcjsKKworCWFzc2VydChpbiAmJiBvdXQgJiYga2V5KTsKKwlyayA9IGtleS0+cmRfa2V5OworCisJLyoKKwkgKiBtYXAgYnl0ZSBhcnJheSBibG9jayB0byBjaXBoZXIgc3RhdGUKKwkgKiBhbmQgYWRkIGluaXRpYWwgcm91bmQga2V5OgorCSAqLworCXMwID0gR0VUVTMyKGluICAgICApIF4gcmtbMF07CisJczEgPSBHRVRVMzIoaW4gKyAgNCkgXiBya1sxXTsKKwlzMiA9IEdFVFUzMihpbiArICA4KSBeIHJrWzJdOworCXMzID0gR0VUVTMyKGluICsgMTIpIF4gcmtbM107CisKKyNpZiBkZWZpbmVkKEFFU19DT01QQUNUX0lOX09VVEVSX1JPVU5EUykKKwlwcmVmZXRjaDI1NihUZDQpOworCisgICAgICAgIHRbMF0gPQlUZDRbKHMwICAgICAgKSAmIDB4ZmZdICAgICAgIF4KKwkJVGQ0WyhzMyA+PiAgOCkgJiAweGZmXSA8PCAgOCBeCisJCVRkNFsoczIgPj4gMTYpICYgMHhmZl0gPDwgMTYgXgorCQlUZDRbKHMxID4+IDI0KSAgICAgICBdIDw8IDI0OworICAgICAgICB0WzFdID0JVGQ0WyhzMSAgICAgICkgJiAweGZmXSAgICAgICBeCisJCVRkNFsoczAgPj4gIDgpICYgMHhmZl0gPDwgIDggXgorCQlUZDRbKHMzID4+IDE2KSAmIDB4ZmZdIDw8IDE2IF4KKwkJVGQ0WyhzMiA+PiAyNCkgICAgICAgXSA8PCAyNDsKKyAgICAgICAgdFsyXSA9CVRkNFsoczIgICAgICApICYgMHhmZl0gICAgICAgXgorCQlUZDRbKHMxID4+ICA4KSAmIDB4ZmZdIDw8ICA4IF4KKwkJVGQ0WyhzMCA+PiAxNikgJiAweGZmXSA8PCAxNiBeCisJCVRkNFsoczMgPj4gMjQpICAgICAgIF0gPDwgMjQ7CisgICAgICAgIHRbM10gPQlUZDRbKHMzICAgICAgKSAmIDB4ZmZdICAgICAgIF4KKwkJVGQ0WyhzMiA+PiAgOCkgJiAweGZmXSA8PCAgOCBeCisJCVRkNFsoczEgPj4gMTYpICYgMHhmZl0gPDwgMTYgXgorCQlUZDRbKHMwID4+IDI0KSAgICAgICBdIDw8IDI0OworCisJLyogbm93IGRvIHRoZSBsaW5lYXIgdHJhbnNmb3JtIHVzaW5nIHdvcmRzICovIAorCXsJaW50IGk7CisJCXUzMiB0cDEsIHRwMiwgdHA0LCB0cDgsIHRwOSwgdHBiLCB0cGQsIHRwZSwgbTsKKworCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJCQl0cDEgPSB0W2ldOworCQkJbSA9IHRwMSAmIDB4ODA4MDgwODA7CisJCQl0cDIgPSAoKHRwMSAmIDB4N2Y3ZjdmN2YpIDw8IDEpIF4KKwkJCQkoKG0gLSAobSA+PiA3KSkgJiAweDFiMWIxYjFiKTsKKwkJCW0gPSB0cDIgJiAweDgwODA4MDgwOworCQkJdHA0ID0gKCh0cDIgJiAweDdmN2Y3ZjdmKSA8PCAxKSBeCisJCQkJKChtIC0gKG0gPj4gNykpICYgMHgxYjFiMWIxYik7CisJCQltID0gdHA0ICYgMHg4MDgwODA4MDsKKwkJCXRwOCA9ICgodHA0ICYgMHg3ZjdmN2Y3ZikgPDwgMSkgXgorCQkJCSgobSAtIChtID4+IDcpKSAmIDB4MWIxYjFiMWIpOworCQkJdHA5ID0gdHA4IF4gdHAxOworCQkJdHBiID0gdHA5IF4gdHAyOworCQkJdHBkID0gdHA5IF4gdHA0OworCQkJdHBlID0gdHA4IF4gdHA0IF4gdHAyOworI2lmIGRlZmluZWQoUk9UQVRFKQorCQkJdFtpXSA9IHRwZSBeIFJPVEFURSh0cGQsMTYpIF4KKwkJCQlST1RBVEUodHA5LDgpIF4gUk9UQVRFKHRwYiwyNCk7CisjZWxzZQorCQkJdFtpXSA9IHRwZSBeICh0cGQgPj4gMTYpIF4gKHRwZCA8PCAxNikgXiAKKwkJCQkodHA5ID4+IDI0KSBeICh0cDkgPDwgOCkgXgorCQkJCSh0cGIgPj4gOCkgXiAodHBiIDw8IDI0KTsKKyNlbmRpZgorCQkJdFtpXSBePSBya1s0K2ldOworCQl9CisJfQorI2Vsc2UKKwl0WzBdID0JVGQwWyhzMCAgICAgICkgJiAweGZmXSBeCisJCVRkMVsoczMgPj4gIDgpICYgMHhmZl0gXgorCQlUZDJbKHMyID4+IDE2KSAmIDB4ZmZdIF4KKwkJVGQzWyhzMSA+PiAyNCkgICAgICAgXSBeCisJCXJrWzRdOworCXRbMV0gPQlUZDBbKHMxICAgICAgKSAmIDB4ZmZdIF4KKwkJVGQxWyhzMCA+PiAgOCkgJiAweGZmXSBeCisJCVRkMlsoczMgPj4gMTYpICYgMHhmZl0gXgorCQlUZDNbKHMyID4+IDI0KSAgICAgICBdIF4KKwkJcmtbNV07CisJdFsyXSA9CVRkMFsoczIgICAgICApICYgMHhmZl0gXgorCQlUZDFbKHMxID4+ICA4KSAmIDB4ZmZdIF4KKwkJVGQyWyhzMCA+PiAxNikgJiAweGZmXSBeCisJCVRkM1soczMgPj4gMjQpICAgICAgIF0gXgorCQlya1s2XTsKKwl0WzNdID0JVGQwWyhzMyAgICAgICkgJiAweGZmXSBeCisJCVRkMVsoczIgPj4gIDgpICYgMHhmZl0gXgorCQlUZDJbKHMxID4+IDE2KSAmIDB4ZmZdIF4KKwkJVGQzWyhzMCA+PiAyNCkgICAgICAgXSBeCisJCXJrWzddOworI2VuZGlmCisJczAgPSB0WzBdOyBzMSA9IHRbMV07IHMyID0gdFsyXTsgczMgPSB0WzNdOworCisgICAgLyoKKyAgICAgKiBOciAtIDIgZnVsbCByb3VuZHM6CisgICAgICovCisgICAgZm9yIChyays9OCxyPWtleS0+cm91bmRzLTI7IHI+MDsgcmsrPTQsci0tKSB7CisjaWYgZGVmaW5lZChBRVNfQ09NUEFDVF9JTl9JTk5FUl9ST1VORFMpCisgICAgICAgIHRbMF0gPQlUZDRbKHMwICAgICAgKSAmIDB4ZmZdICAgICAgIF4KKwkJVGQ0WyhzMyA+PiAgOCkgJiAweGZmXSA8PCAgOCBeCisJCVRkNFsoczIgPj4gMTYpICYgMHhmZl0gPDwgMTYgXgorCQlUZDRbKHMxID4+IDI0KSAgICAgICBdIDw8IDI0OworICAgICAgICB0WzFdID0JVGQ0WyhzMSAgICAgICkgJiAweGZmXSAgICAgICBeCisJCVRkNFsoczAgPj4gIDgpICYgMHhmZl0gPDwgIDggXgorCQlUZDRbKHMzID4+IDE2KSAmIDB4ZmZdIDw8IDE2IF4KKwkJVGQ0WyhzMiA+PiAyNCkgICAgICAgXSA8PCAyNDsKKyAgICAgICAgdFsyXSA9CVRkNFsoczIgICAgICApICYgMHhmZl0gICAgICAgXgorCQlUZDRbKHMxID4+ICA4KSAmIDB4ZmZdIDw8ICA4IF4KKwkJVGQ0WyhzMCA+PiAxNikgJiAweGZmXSA8PCAxNiBeCisJCVRkNFsoczMgPj4gMjQpICAgICAgIF0gPDwgMjQ7CisgICAgICAgIHRbM10gPQlUZDRbKHMzICAgICAgKSAmIDB4ZmZdICAgICAgIF4KKwkJVGQ0WyhzMiA+PiAgOCkgJiAweGZmXSA8PCAgOCBeCisJCVRkNFsoczEgPj4gMTYpICYgMHhmZl0gPDwgMTYgXgorCQlUZDRbKHMwID4+IDI0KSAgICAgICBdIDw8IDI0OworCisJLyogbm93IGRvIHRoZSBsaW5lYXIgdHJhbnNmb3JtIHVzaW5nIHdvcmRzICovIAorCXsJaW50IGk7CisJCXUzMiB0cDEsIHRwMiwgdHA0LCB0cDgsIHRwOSwgdHBiLCB0cGQsIHRwZSwgbTsKKworCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJCQl0cDEgPSB0W2ldOworCQkJbSA9IHRwMSAmIDB4ODA4MDgwODA7CisJCQl0cDIgPSAoKHRwMSAmIDB4N2Y3ZjdmN2YpIDw8IDEpIF4KKwkJCQkoKG0gLSAobSA+PiA3KSkgJiAweDFiMWIxYjFiKTsKKwkJCW0gPSB0cDIgJiAweDgwODA4MDgwOworCQkJdHA0ID0gKCh0cDIgJiAweDdmN2Y3ZjdmKSA8PCAxKSBeCisJCQkJKChtIC0gKG0gPj4gNykpICYgMHgxYjFiMWIxYik7CisJCQltID0gdHA0ICYgMHg4MDgwODA4MDsKKwkJCXRwOCA9ICgodHA0ICYgMHg3ZjdmN2Y3ZikgPDwgMSkgXgorCQkJCSgobSAtIChtID4+IDcpKSAmIDB4MWIxYjFiMWIpOworCQkJdHA5ID0gdHA4IF4gdHAxOworCQkJdHBiID0gdHA5IF4gdHAyOworCQkJdHBkID0gdHA5IF4gdHA0OworCQkJdHBlID0gdHA4IF4gdHA0IF4gdHAyOworI2lmIGRlZmluZWQoUk9UQVRFKQorCQkJdFtpXSA9IHRwZSBeIFJPVEFURSh0cGQsMTYpIF4KKwkJCQlST1RBVEUodHA5LDgpIF4gUk9UQVRFKHRwYiwyNCk7CisjZWxzZQorCQkJdFtpXSA9IHRwZSBeICh0cGQgPj4gMTYpIF4gKHRwZCA8PCAxNikgXiAKKwkJCQkodHA5ID4+IDI0KSBeICh0cDkgPDwgOCkgXgorCQkJCSh0cGIgPj4gOCkgXiAodHBiIDw8IDI0KTsKKyNlbmRpZgorCQkJdFtpXSBePSBya1tpXTsKKwkJfQorCX0KKyNlbHNlCisJdFswXSA9CVRkMFsoczAgICAgICApICYgMHhmZl0gXgorCQlUZDFbKHMzID4+ICA4KSAmIDB4ZmZdIF4KKwkJVGQyWyhzMiA+PiAxNikgJiAweGZmXSBeCisJCVRkM1soczEgPj4gMjQpICAgICAgIF0gXgorCQlya1swXTsKKwl0WzFdID0JVGQwWyhzMSAgICAgICkgJiAweGZmXSBeCisJCVRkMVsoczAgPj4gIDgpICYgMHhmZl0gXgorCQlUZDJbKHMzID4+IDE2KSAmIDB4ZmZdIF4KKwkJVGQzWyhzMiA+PiAyNCkgICAgICAgXSBeCisJCXJrWzFdOworCXRbMl0gPQlUZDBbKHMyICAgICAgKSAmIDB4ZmZdIF4KKwkJVGQxWyhzMSA+PiAgOCkgJiAweGZmXSBeCisJCVRkMlsoczAgPj4gMTYpICYgMHhmZl0gXgorCQlUZDNbKHMzID4+IDI0KSAgICAgICBdIF4KKwkJcmtbMl07CisJdFszXSA9CVRkMFsoczMgICAgICApICYgMHhmZl0gXgorCQlUZDFbKHMyID4+ICA4KSAmIDB4ZmZdIF4KKwkJVGQyWyhzMSA+PiAxNikgJiAweGZmXSBeCisJCVRkM1soczAgPj4gMjQpICAgICAgIF0gXgorCQlya1szXTsKKyNlbmRpZgorCXMwID0gdFswXTsgczEgPSB0WzFdOyBzMiA9IHRbMl07IHMzID0gdFszXTsKKyAgICB9CisgICAgLyoKKwkgKiBhcHBseSBsYXN0IHJvdW5kIGFuZAorCSAqIG1hcCBjaXBoZXIgc3RhdGUgdG8gYnl0ZSBhcnJheSBibG9jazoKKwkgKi8KKwlwcmVmZXRjaDI1NihUZDQpOworCisJKih1MzIqKShvdXQrMCkgPQorCQkoVGQ0WyhzMCAgICAgICkgJiAweGZmXSkJXgorCQkoVGQ0WyhzMyA+PiAgOCkgJiAweGZmXSA8PCAgOCkgXgorCQkoVGQ0WyhzMiA+PiAxNikgJiAweGZmXSA8PCAxNikgXgorCQkoVGQ0WyhzMSA+PiAyNCkgICAgICAgXSA8PCAyNCkgXgorCQlya1swXTsKKwkqKHUzMiopKG91dCs0KSA9CisJCShUZDRbKHMxICAgICAgKSAmIDB4ZmZdKQkgXgorCQkoVGQ0WyhzMCA+PiAgOCkgJiAweGZmXSA8PCAgOCkgXgorCQkoVGQ0WyhzMyA+PiAxNikgJiAweGZmXSA8PCAxNikgXgorCQkoVGQ0WyhzMiA+PiAyNCkgICAgICAgXSA8PCAyNCkgXgorCQlya1sxXTsKKwkqKHUzMiopKG91dCs4KSA9CisJCShUZDRbKHMyICAgICAgKSAmIDB4ZmZdKQkgXgorCQkoVGQ0WyhzMSA+PiAgOCkgJiAweGZmXSA8PCAgOCkgXgorCQkoVGQ0WyhzMCA+PiAxNikgJiAweGZmXSA8PCAxNikgXgorCQkoVGQ0WyhzMyA+PiAyNCkgICAgICAgXSA8PCAyNCkgXgorCQlya1syXTsKKwkqKHUzMiopKG91dCsxMikgPQorCQkoVGQ0WyhzMyAgICAgICkgJiAweGZmXSkJIF4KKwkJKFRkNFsoczIgPj4gIDgpICYgMHhmZl0gPDwgIDgpIF4KKwkJKFRkNFsoczEgPj4gMTYpICYgMHhmZl0gPDwgMTYpIF4KKwkJKFRkNFsoczAgPj4gMjQpICAgICAgIF0gPDwgMjQpIF4KKwkJcmtbM107Cit9CmRpZmYgLS1naXQgYS9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS9hZXMtNTg2LnBsIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzLTU4Ni5wbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42ODdlZDgxCi0tLSAvZGV2L251bGwKKysrIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzLTU4Ni5wbApAQCAtMCwwICsxLDI5ODAgQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKyMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgV3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0BmeS5jaGFsbWVycy5zZT4gZm9yIHRoZSBPcGVuU1NMCisjIHByb2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNTTCBhbmQKKyMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKKyMgZGV0YWlscyBzZWUgaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9+YXBwcm8vY3J5cHRvZ2Ftcy8uCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFZlcnNpb24gNC4zLgorIworIyBZb3UgbWlnaHQgZmFpbCB0byBhcHByZWNpYXRlIHRoaXMgbW9kdWxlIHBlcmZvcm1hbmNlIGZyb20gdGhlIGZpcnN0CisjIHRyeS4gSWYgY29tcGFyZWQgdG8gInZhbmlsbGEiIGxpbnV4LWlhMzItaWNjIHRhcmdldCwgaS5lLiBjb25zaWRlcmVkCisjIHRvIGJlICp0aGUqIGJlc3QgSW50ZWwgQyBjb21waWxlciB3aXRob3V0IC1LUElDLCBwZXJmb3JtYW5jZSBhcHBlYXJzCisjIHRvIGJlIHZpcnR1YWxseSBpZGVudGljYWwuLi4gQnV0IHRyeSB0byByZS1jb25maWd1cmUgd2l0aCBzaGFyZWQKKyMgbGlicmFyeSBzdXBwb3J0Li4uIEFoYSEgSW50ZWwgY29tcGlsZXIgInN1ZGRlbmx5IiBsYWdzIGJlaGluZCBieSAzMCUKKyMgW29uIFA0LCBtb3JlIG9uIG90aGVyc106LSkgQW5kIGlmIGNvbXBhcmVkIHRvIHBvc2l0aW9uLWluZGVwZW5kZW50CisjIGNvZGUgZ2VuZXJhdGVkIGJ5IEdOVSBDLCB0aGlzIGNvZGUgcGVyZm9ybXMgKm1vcmUqIHRoYW4gKnR3aWNlKiBhcworIyBmYXN0ISBZZXMsIGFsbCB0aGlzIGJ1enogYWJvdXQgUElDIG1lYW5zIHRoYXQgdW5saWtlIG90aGVyIGhhbmQtCisjIGNvZGVkIGltcGxlbWVudGF0aW9ucywgdGhpcyBvbmUgd2FzIGV4cGxpY2l0bHkgZGVzaWduZWQgdG8gYmUgc2FmZQorIyB0byB1c2UgZXZlbiBpbiBzaGFyZWQgbGlicmFyeSBjb250ZXh0Li4uIFRoaXMgYWxzbyBtZWFucyB0aGF0IHRoaXMKKyMgY29kZSBpc24ndCBuZWNlc3NhcmlseSBhYnNvbHV0ZWx5IGZhc3Rlc3QgImV2ZXIsIiBiZWNhdXNlIGluIG9yZGVyCisjIHRvIGFjaGlldmUgcG9zaXRpb24gaW5kZXBlbmRlbmNlIGFuIGV4dHJhIHJlZ2lzdGVyIGhhcyB0byBiZQorIyBvZmYtbG9hZGVkIHRvIHN0YWNrLCB3aGljaCBhZmZlY3RzIHRoZSBiZW5jaG1hcmsgcmVzdWx0LgorIworIyBTcGVjaWFsIG5vdGUgYWJvdXQgaW5zdHJ1Y3Rpb24gY2hvaWNlLiBEbyB5b3UgcmVjYWxsIFJDNF9JTlQgY29kZQorIyBwZXJmb3JtaW5nIHBvb3JseSBvbiBQND8gSXQgbWlnaHQgYmUgdGhlIHRpbWUgdG8gZmlndXJlIG91dCB3aHkuCisjIFJDNF9JTlQgY29kZSBpbXBsaWVzIGVmZmVjdGl2ZSBhZGRyZXNzIGNhbGN1bGF0aW9ucyBpbiBiYXNlK29mZnNldCo0CisjIGZvcm0uIFRyb3VibGUgaXMgdGhhdCBpdCBzZWVtcyB0aGF0IG9mZnNldCBzY2FsaW5nIHR1cm5lZCB0byBiZQorIyBjcml0aWNhbCBwYXRoLi4uIEF0IGxlYXN0IGVsaW1pbmF0aW5nIHNjYWxpbmcgcmVzdWx0ZWQgaW4gMi44eCBSQzQKKyMgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgW2FzIHlvdSBtaWdodCByZWNhbGxdLiBBcyBBRVMgY29kZSBpcyBodW5ncnkKKyMgZm9yIHNjYWxpbmcgdG9vLCBJIFt0cnkgdG9dIGF2b2lkIHRoZSBsYXR0ZXIgYnkgZmF2b3Jpbmcgb2ZmLWJ5LTIKKyMgc2hpZnRzIGFuZCBtYXNraW5nIHRoZSByZXN1bHQgd2l0aCAweEZGPDwyIGluc3RlYWQgb2YgImJvcmluZyIgMHhGRi4KKyMKKyMgQXMgd2FzIHNob3duIGJ5IERlYW4gR2F1ZGV0IDxkZWFuQGFyY3RpYy5vcmc+LCB0aGUgYWJvdmUgbm90ZSB0dXJuZWQKKyMgdm9pZC4gUGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgd2l0aCBvZmYtYnktMiBzaGlmdHMgd2FzIG9ic2VydmVkIG9uCisjIGludGVybWVkaWF0ZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggd2FzIHNwaWxsaW5nIHlldCBhbm90aGVyIHJlZ2lzdGVyCisjIHRvIHN0YWNrLi4uIEZpbmFsIG9mZnNldCo0IGNvZGUgYmVsb3cgcnVucyBqdXN0IGEgdGFkIGZhc3RlciBvbiBQNCwKKyMgYnV0IGV4aGliaXRzIHVwIHRvIDEwJSBpbXByb3ZlbWVudCBvbiBvdGhlciBjb3Jlcy4KKyMKKyMgU2Vjb25kIHZlcnNpb24gaXMgIm1vbm9saXRoaWMiIHJlcGxhY2VtZW50IGZvciBhZXNfY29yZS5jLCB3aGljaCBpbgorIyBhZGRpdGlvbiB0byBBRVNfW2RlfGVuXWNyeXB0IGltcGxlbWVudHMgcHJpdmF0ZV9BRVNfc2V0X1tkZXxlbl1jcnlwdGlvbl9rZXkuCisjIFRoaXMgbWFkZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgbGl0dGxlLWVuZGlhbiB2YXJpYW50IG9mIHRoZQorIyBhbGdvcml0aG0gd2l0aG91dCBtb2RpZnlpbmcgdGhlIGJhc2UgQyBjb2RlLiBNb3RpdmF0aW5nIGZhY3RvciBmb3IKKyMgdGhlIHVuZGVydGFrZW4gZWZmb3J0IHdhcyB0aGF0IGl0IGFwcGVhcmVkIHRoYXQgaW4gdGlnaHQgSUEtMzIKKyMgcmVnaXN0ZXIgd2luZG93IGxpdHRsZS1lbmRpYW4gZmxhdm9yIGNvdWxkIGFjaGlldmUgc2xpZ2h0bHkgaGlnaGVyCisjIEluc3RydWN0aW9uIExldmVsIFBhcmFsbGVsaXNtLCBhbmQgaXQgaW5kZWVkIHJlc3VsdGVkIGluIHVwIHRvIDE1JQorIyBiZXR0ZXIgcGVyZm9ybWFuY2Ugb24gbW9zdCByZWNlbnQgtS1hcmNocy4uLgorIworIyBUaGlyZCB2ZXJzaW9uIGFkZHMgQUVTX2NiY19lbmNyeXB0IGltcGxlbWVudGF0aW9uLCB3aGljaCByZXN1bHRlZCBpbgorIyB1cCB0byA0MCUgcGVyZm9ybWFuY2UgaW1yb3ZlbWVudCBvZiBDQkMgYmVuY2htYXJrIHJlc3VsdHMuIDQwJSB3YXMKKyMgb2JzZXJ2ZWQgb24gUDQgY29yZSwgd2hlcmUgIm92ZXJhbGwiIGltcm92ZW1lbnQgY29lZmZpY2llbnQsIGkuZS4gaWYKKyMgY29tcGFyZWQgdG8gUElDIGdlbmVyYXRlZCBieSBHQ0MgYW5kIGluIENCQyBtb2RlLCB3YXMgb2JzZXJ2ZWQgdG8gYmUKKyMgYXMgbGFyZ2UgYXMgNHg6LSkgQ0JDIHBlcmZvcm1hbmNlIGlzIHZpcnR1YWxseSBpZGVudGljYWwgdG8gRUNCIG5vdworIyBhbmQgb24gc29tZSBwbGF0Zm9ybXMgZXZlbiBiZXR0ZXIsIGUuZy4gMTcuNiAic21hbGwiIGN5Y2xlcy9ieXRlIG9uCisjIE9wdGVyb24sIGJlY2F1c2UgY2VydGFpbiBmdW5jdGlvbiBwcm9sb2d1ZXMgYW5kIGVwaWxvZ3VlcyBhcmUKKyMgZWZmZWN0aXZlbHkgdGFrZW4gb3V0IG9mIHRoZSBsb29wLi4uCisjCisjIFZlcnNpb24gMy4yIGltcGxlbWVudHMgY29tcHJlc3NlZCB0YWJsZXMgYW5kIHByZWZldGNoIG9mIHRoZXNlIHRhYmxlcworIyBpbiBDQkNbIV0gbW9kZS4gRm9ybWVyIG1lYW5zIHRoYXQgMy80IG9mIHRhYmxlIHJlZmVyZW5jZXMgYXJlIG5vdworIyBtaXNhbGlnbmVkLCB3aGljaCB1bmZvcnR1bmF0ZWx5IGhhcyBuZWdhdGl2ZSBpbXBhY3Qgb24gZWxkZXIgSUEtMzIKKyMgaW1wbGVtZW50YXRpb25zLCBQZW50aXVtIHN1ZmZlcmVkIDMwJSBwZW5hbHR5LCBQSUlJIC0gMTAlLgorIworIyBWZXJzaW9uIDMuMyBhdm9pZHMgTDEgY2FjaGUgYWxpYXNpbmcgYmV0d2VlbiBzdGFjayBmcmFtZSBhbmQKKyMgUy1ib3hlcywgYW5kIDMuNCAtIEwxIGNhY2hlIGFsaWFzaW5nIGV2ZW4gYmV0d2VlbiBrZXkgc2NoZWR1bGUuIFRoZQorIyBsYXR0ZXIgaXMgYWNoaWV2ZWQgYnkgY29weWluZyB0aGUga2V5IHNjaGVkdWxlIHRvIGNvbnRyb2xsZWQgcGxhY2UgaW4KKyMgc3RhY2suIFRoaXMgdW5mb3J0dW5hdGVseSBoYXMgcmF0aGVyIHN0cm9uZyBpbXBhY3Qgb24gc21hbGwgYmxvY2sgQ0JDCisjIHBlcmZvcm1hbmNlLCB+MnggZGV0ZXJpb3JhdGlvbiBvbiAxNi1ieXRlIGJsb2NrIGlmIGNvbXBhcmVkIHRvIDMuMy4KKyMKKyMgVmVyc2lvbiAzLjUgY2hlY2tzIGlmIHRoZXJlIGlzIEwxIGNhY2hlIGFsaWFzaW5nIGJldHdlZW4gdXNlci1zdXBwbGllZAorIyBrZXkgc2NoZWR1bGUgYW5kIFMtYm94ZXMgYW5kIGFic3RhaW5zIGZyb20gY29weWluZyB0aGUgZm9ybWVyIGlmCisjIHRoZXJlIGlzIG5vLiBUaGlzIGFsbG93cyBlbmQtdXNlciB0byBjb25zY2lvdXNseSByZXRhaW4gc21hbGwgYmxvY2sKKyMgcGVyZm9ybWFuY2UgYnkgYWxpZ25pbmcga2V5IHNjaGVkdWxlIGluIHNwZWNpZmljIG1hbm5lci4KKyMKKyMgVmVyc2lvbiAzLjYgY29tcHJlc3NlcyBUZDQgdG8gMjU2IGJ5dGVzIGFuZCBwcmVmZXRjaGVzIGl0IGluIEVDQi4KKyMKKyMgQ3VycmVudCBFQ0IgcGVyZm9ybWFuY2UgbnVtYmVycyBmb3IgMTI4LWJpdCBrZXkgaW4gQ1BVIGN5Y2xlcyBwZXIKKyMgcHJvY2Vzc2VkIGJ5dGUgW21lYXN1cmUgY29tbW9ubHkgdXNlZCBieSBBRVMgYmVuY2htYXJrZXJzXSBhcmU6CisjCisjCQlzbWFsbCBmb290cHJpbnQJCWZ1bGx5IHVucm9sbGVkCisjIFA0CQkyNAkJCTIyCisjIEFNRCBLOAkyMAkJCTE5CisjIFBJSUkJCTI1CQkJMjMKKyMgUGVudGl1bQk4MQkJCTc4CisjCisjIFZlcnNpb24gMy43IHJlaW1wbGVtZW50cyBvdXRlciByb3VuZHMgYXMgImNvbXBhY3QuIiBNZWFuaW5nIHRoYXQKKyMgZmlyc3QgYW5kIGxhc3Qgcm91bmRzIHJlZmVyZW5jZSBjb21wYWN0IDI1NiBieXRlcyBTLWJveC4gVGhpcyBtZWFucworIyB0aGF0IGZpcnN0IHJvdW5kIGNvbnN1bWVzIGEgbG90IG1vcmUgQ1BVIGN5Y2xlcyBhbmQgdGhhdCBlbmNyeXB0CisjIGFuZCBkZWNyeXB0IHBlcmZvcm1hbmNlIGJlY29tZXMgYXN5bW1ldHJpYy4gRW5jcnlwdCBwZXJmb3JtYW5jZQorIyBkcm9wcyBieSAxMC0xMiUsIHdoaWxlIGRlY3J5cHQgLSBieSAyMC0yNSU6LSggMjU2IGJ5dGVzIFMtYm94IGlzCisjIGFnZ3Jlc3NpdmVseSBwcmUtZmV0Y2hlZC4KKyMKKyMgVmVyc2lvbiA0LjAgZWZmZWN0aXZlbHkgcm9sbHMgYmFjayB0byAzLjYgYW5kIGluc3RlYWQgaW1wbGVtZW50cworIyBhZGRpdGlvbmFsIHNldCBvZiBmdW5jdGlvbnMsIF9beDg2fHNzZV1fQUVTX1tlbnxkZV1jcnlwdF9jb21wYWN0LAorIyB3aGljaCB1c2UgZXhjbHVzaXZlbHkgMjU2IGJ5dGUgUy1ib3guIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdG8gYmUKKyMgY2FsbGVkIGluIG1vZGVzIG5vdCBjb25jZWFsaW5nIHBsYWluIHRleHQsIHN1Y2ggYXMgRUNCLCBvciB3aGVuCisjIHdlJ3JlIGFza2VkIHRvIHByb2Nlc3Mgc21hbGxlciBhbW91bnQgb2YgZGF0YSBbb3IgdW5jb25kaXRpb25hbGx5CisjIG9uIGh5cGVyLXRocmVhZGluZyBDUFVdLiBDdXJyZW50bHkgaXQncyBjYWxsZWQgdW5jb25kaXRpb25hbGx5IGZyb20KKyMgQUVTX1tlbnxkZV1jcnlwdCwgd2hpY2ggYWZmZWN0cyBhbGwgbW9kZXMsIGJ1dCBDQkMuIENCQyByb3V0aW5lCisjIHN0aWxsIG5lZWRzIHRvIGJlIG1vZGlmaWVkIHRvIHN3aXRjaCBiZXR3ZWVuIHNsb3dlciBhbmQgZmFzdGVyCisjIG1vZGUgd2hlbiBhcHByb3ByaWF0ZS4uLiBCdXQgaW4gZWl0aGVyIGNhc2UgYmVuY2htYXJrIGxhbmRzY2FwZQorIyBjaGFuZ2VzIGRyYW1hdGljYWxseSBhbmQgYmVsb3cgbnVtYmVycyBhcmUgQ1BVIGN5Y2xlcyBwZXIgcHJvY2Vzc2VkCisjIGJ5dGUgZm9yIDEyOC1iaXQga2V5LgorIworIwkJRUNCIGVuY3J5cHQJRUNCIGRlY3J5cHQJQ0JDIGxhcmdlIGNodW5rCisjIFA0CQk1Nls2MF0JCTg0WzEwMF0JCTIzCisjIEFNRCBLOAk0OFs0NF0JCTcwWzc5XQkJMTgKKyMgUElJSQkJNDFbNTBdCQk2MVs5MV0JCTI0CisjIENvcmUgMgkzMlszOF0JCTQ1WzcwXQkJMTguNQorIyBQZW50aXVtCTEyMAkJMTYwCQk3NworIworIyBWZXJzaW9uIDQuMSBzd2l0Y2hlcyB0byBjb21wYWN0IFMtYm94IGV2ZW4gaW4ga2V5IHNjaGVkdWxlIHNldHVwLgorIworIyBWZXJzaW9uIDQuMiBwcmVmZXRjaGVzIGNvbXBhY3QgUy1ib3ggaW4gZXZlcnkgU1NFIHJvdW5kIG9yIGluIG90aGVyCisjIHdvcmRzIGV2ZXJ5IGNhY2hlLWxpbmUgaXMgKmd1YXJhbnRlZWQqIHRvIGJlIGFjY2Vzc2VkIHdpdGhpbiB+NTAKKyMgY3ljbGVzIHdpbmRvdy4gV2h5IGp1c3QgU1NFPyBCZWNhdXNlIGl0J3MgbmVlZGVkIG9uIGh5cGVyLXRocmVhZGluZworIyBDUFUhIFdoaWNoIGlzIGFsc28gd2h5IGl0J3MgcHJlZmV0Y2hlZCB3aXRoIDY0IGJ5dGUgc3RyaWRlLiBCZXN0CisjIHBhcnQgaXMgdGhhdCBpdCBoYXMgbm8gbmVnYXRpdmUgZWZmZWN0IG9uIHBlcmZvcm1hbmNlOi0pICAKKyMKKyMgVmVyc2lvbiA0LjMgaW1wbGVtZW50cyBzd2l0Y2ggYmV0d2VlbiBjb21wYWN0IGFuZCBub24tY29tcGFjdCBibG9jaworIyBmdW5jdGlvbnMgaW4gQUVTX2NiY19lbmNyeXB0IGRlcGVuZGluZyBvbiBob3cgbXVjaCBkYXRhIHdhcyBhc2tlZAorIyB0byBiZSBwcm9jZXNzZWQgaW4gb25lIHN0cm9rZS4KKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGltaW5nIGF0dGFja3MgYXJlIGNsYXNzaWZpZWQgaW4gdHdvIGNsYXNzZXM6IHN5bmNocm9ub3VzIHdoZW4KKyMgYXR0YWNrZXIgY29uc2Npb3VzbHkgaW5pdGlhdGVzIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9uIGFuZCBjb2xsZWN0cworIyB0aW1pbmcgZGF0YSBvZiB2YXJpb3VzIGNoYXJhY3RlciBhZnRlcndhcmRzLCBhbmQgYXN5bmNocm9ub3VzIHdoZW4KKyMgbWFsaWNpb3VzIGNvZGUgaXMgZXhlY3V0ZWQgb24gc2FtZSBDUFUgc2ltdWx0YW5lb3VzbHkgd2l0aCBBRVMsCisjIGluc3RydW1lbnRzIGl0c2VsZiBhbmQgcGVyZm9ybXMgc3RhdGlzdGljYWwgYW5hbHlzaXMgb2YgdGhpcyBkYXRhLgorIworIyBBcyBmYXIgYXMgc3luY2hyb25vdXMgYXR0YWNrcyBnbyB0aGUgcm9vdCB0byB0aGUgQUVTIHRpbWluZworIyB2dWxuZXJhYmlsaXR5IGlzIHR3b2ZvbGQuIEZpcnN0bHksIG9mIDI1NiBTLWJveCBlbGVtZW50cyBhdCBtb3N0IDE2MAorIyBhcmUgcmVmZXJyZWQgdG8gaW4gc2luZ2xlIDEyOC1iaXQgYmxvY2sgb3BlcmF0aW9uLiBXZWxsLCBpbiBDCisjIGltcGxlbWVudGF0aW9uIHdpdGggNCBkaXN0aW5jdCB0YWJsZXMgaXQncyBhY3R1YWxseSBhcyBsaXR0bGUgYXMgNDAKKyMgcmVmZXJlbmNlcyBwZXIgMjU2IGVsZW1lbnRzIHRhYmxlLCBidXQgYW55d2F5Li4uIFNlY29uZGx5LCBldmVuCisjIHRob3VnaCBTLWJveCBlbGVtZW50cyBhcmUgY2x1c3RlcmVkIGludG8gc21hbGxlciBhbW91bnQgb2YgY2FjaGUtCisjIGxpbmVzLCBzbWFsbGVyIHRoYW4gMTYwIGFuZCBldmVuIDQwLCBpdCB0dXJuZWQgb3V0IHRoYXQgZm9yIGNlcnRhaW4KKyMgcGxhaW4tdGV4dCBwYXR0ZXJuW3NdIG9yIHNpbXBseSBwdXQgY2hvc2VuIHBsYWluLXRleHQgYW5kIGdpdmVuIGtleQorIyBmZXcgY2FjaGUtbGluZXMgcmVtYWluIHVuYWNjZXNzZWQgZHVyaW5nIGJsb2NrIG9wZXJhdGlvbi4gTm93LCBpZgorIyBhdHRhY2tlciBjYW4gZmlndXJlIG91dCB0aGlzIGFjY2VzcyBwYXR0ZXJuLCBoZSBjYW4gZGVkdWN0IHRoZSBrZXkKKyMgW29yIGF0IGxlYXN0IHBhcnQgb2YgaXRdLiBUaGUgbmF0dXJhbCB3YXkgdG8gbWl0aWdhdGUgdGhpcyBraW5kIG9mCisjIGF0dGFja3MgaXMgdG8gbWluaW1pemUgdGhlIGFtb3VudCBvZiBjYWNoZS1saW5lcyBpbiBTLWJveCBhbmQvb3IKKyMgcHJlZmV0Y2ggdGhlbSB0byBlbnN1cmUgdGhhdCBldmVyeSBvbmUgaXMgYWNjZXNzZWQgZm9yIG1vcmUgdW5pZm9ybQorIyB0aW1pbmcuIEJ1dCBub3RlIHRoYXQgKmlmKiBwbGFpbi10ZXh0IHdhcyBjb25jZWFsZWQgaW4gc3VjaCB3YXkgdGhhdAorIyBpbnB1dCB0byBibG9jayBmdW5jdGlvbiBpcyBkaXN0cmlidXRlZCAqdW5pZm9ybWx5KiwgdGhlbiBhdHRhY2sKKyMgd291bGRuJ3QgYXBwbHkuIE5vdyBub3RlIHRoYXQgc29tZSBlbmNyeXB0aW9uIG1vZGVzLCBtb3N0IG5vdGFibHkKKyMgQ0JDLCBkbyBtYXNrIHRoZSBwbGFpbi10ZXh0IGluIHRoaXMgZXhhY3Qgd2F5IFtzZWN1cmUgY2lwaGVyIG91dHB1dAorIyBpcyBkaXN0cmlidXRlZCB1bmlmb3JtbHldLiBZZXMsIG9uZSBzdGlsbCBtaWdodCBmaW5kIGlucHV0IHRoYXQKKyMgd291bGQgcmV2ZWFsIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBnaXZlbiBrZXksIGJ1dCBpZiBhbW91bnQgb2YKKyMgY2FuZGlkYXRlIGlucHV0cyB0byBiZSB0cmllZCBpcyBsYXJnZXIgdGhhbiBhbW91bnQgb2YgcG9zc2libGUga2V5CisjIGNvbWJpbmF0aW9ucyB0aGVuIGF0dGFjayBiZWNvbWVzIGluZmVhc2libGUuIFRoaXMgaXMgd2h5IHJldmlzZWQKKyMgQUVTX2NiY19lbmNyeXB0ICJkYXJlcyIgdG8gc3dpdGNoIHRvIGxhcmdlciBTLWJveCB3aGVuIGxhcmdlciBjaHVuaworIyBvZiBkYXRhIGlzIHRvIGJlIHByb2Nlc3NlZCBpbiBvbmUgc3Ryb2tlLiBUaGUgY3VycmVudCBzaXplIGxpbWl0IG9mCisjIDUxMiBieXRlcyBpcyBjaG9zZW4gdG8gcHJvdmlkZSBzYW1lIFtkaW1pbmlzaGlnbHkgbG93XSBwcm9iYWJpbGl0eQorIyBmb3IgY2FjaGUtbGluZSB0byByZW1haW4gdW50b3VjaGVkIGluIGxhcmdlIGNodW5rIG9wZXJhdGlvbiB3aXRoCisjIGxhcmdlIFMtYm94IGFzIGZvciBzaW5nbGUgYmxvY2sgb3BlcmF0aW9uIHdpdGggY29tcGFjdCBTLWJveCBhbmQKKyMgc3VyZWx5IG5lZWRzIG1vcmUgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLi4uCisjCisjIEFzIGZvciBhc3luY2hyb25vdXMgYXR0YWNrcy4gVGhlcmUgYXJlIHR3byBmbGF2b3VyczogYXR0YWNrZXIgY29kZQorIyBiZWluZyBpbnRlcmxlYXZlZCB3aXRoIEFFUyBvbiBoeXBlci10aHJlYWRpbmcgQ1BVIGF0ICppbnN0cnVjdGlvbioKKyMgbGV2ZWwsIGFuZCB0d28gcHJvY2Vzc2VzIHRpbWUgc2hhcmluZyBzaW5nbGUgY29yZS4gQXMgZm9yIGxhdHRlci4KKyMgVHdvIHZlY3RvcnMuIDEuIEdpdmVuIHRoYXQgYXR0YWNrZXIgcHJvY2VzcyBoYXMgaGlnaGVyIHByaW9yaXR5LAorIyB5aWVsZCBleGVjdXRpb24gdG8gcHJvY2VzcyBwZXJmb3JtaW5nIEFFUyBqdXN0IGJlZm9yZSB0aW1lciBmaXJlcworIyBvZmYgdGhlIHNjaGVkdWxlciwgaW1tZWRpYXRlbHkgcmVnYWluIGNvbnRyb2wgb2YgQ1BVIGFuZCBhbmFseXplIHRoZQorIyBjYWNoZSBzdGF0ZS4gRm9yIHRoaXMgYXR0YWNrIHRvIGJlIGVmZmljaWVudCBhdHRhY2tlciB3b3VsZCBoYXZlIHRvCisjIGVmZmVjdGl2ZWx5IHNsb3cgZG93biB0aGUgb3BlcmF0aW9uIGJ5IHNldmVyYWwgKm9yZGVycyogb2YgbWFnbml0dXRlLAorIyBieSByYXRpbyBvZiB0aW1lIHNsaWNlIHRvIGR1cmF0aW9uIG9mIGhhbmRmdWwgb2YgQUVTIHJvdW5kcywgd2hpY2gKKyMgdW5saWtlbHkgdG8gcmVtYWluIHVubm90aWNlZC4gTm90IHRvIG1lbnRpb24gdGhhdCB0aGlzIGFsc28gbWVhbnMKKyMgdGhhdCBoZSB3b3VsZCBzcGVuZCBjb3JyZXNwb25kaWdseSBtb3JlIHRpbWUgdG8gY29sbGVjdCBlbm91Z2gKKyMgc3RhdGlzdGljYWwgZGF0YSB0byBtb3VudCB0aGUgYXR0YWNrLiBJdCdzIHByb2JhYmx5IGFwcHJvcHJpYXRlIHRvCisjIHNheSB0aGF0IGlmIGFkZXZlcnNhcnkgcmVja29ucyB0aGF0IHRoaXMgYXR0YWNrIGlzIGJlbmVmaWNpYWwgYW5kCisjIHJpc2tzIHRvIGJlIG5vdGljZWQsIHlvdSBwcm9iYWJseSBoYXZlIGxhcmdlciBwcm9ibGVtcyBoYXZpbmcgaGltCisjIG1lcmUgb3Bwb3J0dW5pdHkuIEluIG90aGVyIHdvcmRzIHN1Z2dlc3RlZCBjb2RlIGRlc2lnbiBleHBlY3RzIHlvdQorIyB0byBwcmVjbHVkZS9taXRpZ2F0ZSB0aGlzIGF0dGFjayBieSBvdmVyYWxsIHN5c3RlbSBzZWN1cml0eSBkZXNpZ24uCisjIDIuIEF0dGFja2VyIG1hbmFnZXMgdG8gbWFrZSBoaXMgY29kZSBpbnRlcnJ1cHQgZHJpdmVuLiBJbiBvcmRlciBmb3IKKyMgdGhpcyBraW5kIG9mIGF0dGFjayB0byBiZSBmZWFzaWJsZSwgaW50ZXJydXB0IHJhdGUgaGFzIHRvIGJlIGhpZ2gKKyMgZW5vdWdoLCBhZ2FpbiBjb21wYXJhYmxlIHRvIGR1cmF0aW9uIG9mIGhhbmRmdWwgb2YgQUVTIHJvdW5kcy4gQnV0CisjIGlzIHRoZXJlIGludGVycnVwdCBzb3VyY2Ugb2Ygc3VjaCByYXRlPyBIYXJkbHksIG5vdCBldmVuIDFHYnBzIE5JQworIyBnZW5lcmF0ZXMgaW50ZXJydXB0cyBhdCBzdWNoIHJhZ2luZyByYXRlLi4uCisjCisjIEFuZCBub3cgYmFjayB0byB0aGUgZm9ybWVyLCBoeXBlci10aHJlYWRpbmcgQ1BVIG9yIG1vcmUgc3BlY2lmaWNhbGx5CisjIEludGVsIFA0LiBSZWNhbGwgdGhhdCBhc3luY2hyb25vdXMgYXR0YWNrIGltcGxpZXMgdGhhdCBtYWxpY2lvdXMKKyMgY29kZSBpbnN0cnVtZW50cyBpdHNlbGYuIEFuZCBuYXR1cmFsbHkgaW5zdHJ1bWVudGF0aW9uIGdyYW51bGFyaXR5CisjIGhhcyBiZSBub3RpY2VhYmx5IGxvd2VyIHRoYW4gZHVyYXRpb24gb2YgY29kZXBhdGggYWNjZXNzaW5nIFMtYm94LgorIyBHaXZlbiB0aGF0IGFsbCBjYWNoZS1saW5lcyBhcmUgYWNjZXNzZWQgZHVyaW5nIHRoYXQgdGltZSB0aGF0IGlzLgorIyBDdXJyZW50IGltcGxlbWVudGF0aW9uIGFjY2Vzc2VzICphbGwqIGNhY2hlLWxpbmVzIHdpdGhpbiB+NTAgY3ljbGVzCisjIHdpbmRvdywgd2hpY2ggaXMgYWN0dWFsbHkgKmxlc3MqIHRoYW4gUkRUU0MgbGF0ZW5jeSBvbiBJbnRlbCBQNCEKKworJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsKK3B1c2goQElOQywiJHtkaXJ9IiwiJHtkaXJ9Li4vLi4vcGVybGFzbSIpOworcmVxdWlyZSAieDg2YXNtLnBsIjsKKworJmFzbV9pbml0KCRBUkdWWzBdLCJhZXMtNTg2LnBsIiwkeDg2b25seSA9ICRBUkdWWyQjQVJHVl0gZXEgIjM4NiIpOworJnN0YXRpY19sYWJlbCgiQUVTX1RlIik7Cismc3RhdGljX2xhYmVsKCJBRVNfVGQiKTsKKworJHMwPSJlYXgiOworJHMxPSJlYngiOworJHMyPSJlY3giOworJHMzPSJlZHgiOworJGtleT0iZWRpIjsKKyRhY2M9ImVzaSI7CiskdGJsPSJlYnAiOworCisjIHN0YWNrIGZyYW1lIGxheW91dCBpbiBfW3g4Nnxzc2VdX0FFU18qIHJvdXRpbmVzLCBmcmFtZSBpcyBhbGxvY2F0ZWQKKyMgYnkgY2FsbGVyCiskX19yYT0mRFdQKDAsImVzcCIpOwkjIHJldHVybiBhZGRyZXNzCiskX19zMD0mRFdQKDQsImVzcCIpOwkjIHMwIGJhY2tpbmcgc3RvcmUKKyRfX3MxPSZEV1AoOCwiZXNwIik7CSMgczEgYmFja2luZyBzdG9yZQorJF9fczI9JkRXUCgxMiwiZXNwIik7CSMgczIgYmFja2luZyBzdG9yZQorJF9fczM9JkRXUCgxNiwiZXNwIik7CSMgczMgYmFja2luZyBzdG9yZQorJF9fa2V5PSZEV1AoMjAsImVzcCIpOwkjIHBvaW50ZXIgdG8ga2V5IHNjaGVkdWxlCiskX19lbmQ9JkRXUCgyNCwiZXNwIik7CSMgcG9pbnRlciB0byBlbmQgb2Yga2V5IHNjaGVkdWxlCiskX190Ymw9JkRXUCgyOCwiZXNwIik7CSMgJWVicCBiYWNraW5nIHN0b3JlCisKKyMgc3RhY2sgZnJhbWUgbGF5b3V0IGluIEFFU19bZW58Y3J5cHRdIHJvdXRpbmVzLCB3aGljaCBkaWZmZXJzIGZyb20KKyMgYWJvdmUgYnkgNCBhbmQgb3ZlcmxhcHMgYnkgJWVicCBiYWNraW5nIHN0b3JlCiskX3RibD0mRFdQKDI0LCJlc3AiKTsKKyRfZXNwPSZEV1AoMjgsImVzcCIpOworCitzdWIgX2RhdGFfd29yZCgpIHsgbXkgJGk7IHdoaWxlKGRlZmluZWQoJGk9c2hpZnQpKSB7ICZkYXRhX3dvcmQoJGksJGkpOyB9IH0KKworJHNwZWVkX2xpbWl0PTUxMjsJIyBjaHVua3Mgc21hbGxlciB0aGFuICRzcGVlZF9saW1pdCBhcmUKKwkJCSMgcHJvY2Vzc2VkIHdpdGggY29tcGFjdCByb3V0aW5lIGluIENCQyBtb2RlCiskc21hbGxfZm9vdHByaW50PTE7CSMgJHNtYWxsX2Zvb3RwcmludD0xIGNvZGUgaXMgfjUlIHNsb3dlciBbb24KKwkJCSMgcmVjZW50ILUtYXJjaHNdLCBidXQgfjUgdGltZXMgc21hbGxlciEKKwkJCSMgSSBmYXZvciBjb21wYWN0IGNvZGUgdG8gbWluaW1pemUgY2FjaGUKKwkJCSMgY29udGVudGlvbiBhbmQgaW4gaG9wZSB0byAiY29sbGVjdCIgNSUgYmFjaworCQkJIyBpbiByZWFsLWxpZmUgYXBwbGljYXRpb25zLi4uCisKKyR2ZXJ0aWNhbF9zcGluPTA7CSMgc2hpZnQgInZlcnRpY2FseSIgZGVmYXVsdHMgdG8gMCwgYmVjYXVzZSBvZgorCQkJIyBpdHMgcHJvb2Ytb2YtY29uY2VwdCBzdGF0dXMuLi4KKyMgTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGRlY3ZlcnQoKSwgYXMgd2VsbCBhcyBsYXN0IGVuY3J5cHRpb24gcm91bmQgaXMKKyMgcGVyZm9ybWVkIHdpdGggImhvcml6b250YWwiIHNoaWZ0cy4gVGhpcyBpcyBiZWNhdXNlIHRoaXMgInZlcnRpY2FsIgorIyBpbXBsZW1lbnRhdGlvbiBbb25lIHdoaWNoIGdyb3VwcyBzaGlmdHMgb24gYSBnaXZlbiAkc1tpXSB0byBmb3JtIGEKKyMgImNvbHVtbiwiIHVubGlrZSAiaG9yaXpvbnRhbCIgb25lLCB3aGljaCBncm91cHMgc2hpZnRzIG9uIGRpZmZlcmVudAorIyAkc1tpXSB0byBmb3JtIGEgInJvdyJdIGlzIHdvcmsgaW4gcHJvZ3Jlc3MuIEl0IHdhcyBvYnNlcnZlZCB0byBydW4KKyMgZmV3IHBlcmNlbnRzIGZhc3RlciBvbiBJbnRlbCBjb3JlcywgYnV0IG5vdCBBTUQuIE9uIEFNRCBLOCBjb3JlIGl0J3MKKyMgd2hvbGUgMTIlIHNsb3dlcjotKCBTbyB3ZSBmYWNlIGEgdHJhZGUtb2ZmLi4uIFNoYWxsIGl0IGJlIHJlc29sdmVkCisjIHNvbWUgZGF5PyBUaWxsIHRoZW4gdGhlIGNvZGUgaXMgY29uc2lkZXJlZCBleHBlcmltZW50YWwgYW5kIGJ5CisjIGRlZmF1bHQgcmVtYWlucyBkb3JtYW50Li4uCisKK3N1YiBlbmN2ZXJ0KCkKK3sgbXkgKCR0ZSxAcykgPSBAXzsKKyAgbXkgJHYwID0gJGFjYywgJHYxID0gJGtleTsKKworCSZtb3YJKCR2MCwkc1szXSk7CQkJCSMgY29weSBzMworCSZtb3YJKCZEV1AoNCwiZXNwIiksJHNbMl0pOwkJCSMgc2F2ZSBzMgorCSZtb3YJKCR2MSwkc1swXSk7CQkJCSMgY29weSBzMAorCSZtb3YJKCZEV1AoOCwiZXNwIiksJHNbMV0pOwkJCSMgc2F2ZSBzMQorCisJJm1vdnoJKCRzWzJdLCZIQigkc1swXSkpOworCSZhbmQJKCRzWzBdLDB4RkYpOworCSZtb3YJKCRzWzBdLCZEV1AoMCwkdGUsJHNbMF0sOCkpOwkJIyBzMD4+MAorCSZzaHIJKCR2MSwxNik7CisJJm1vdgkoJHNbM10sJkRXUCgzLCR0ZSwkc1syXSw4KSk7CQkjIHMwPj44CisJJm1vdnoJKCRzWzFdLCZIQigkdjEpKTsKKwkmYW5kCSgkdjEsMHhGRik7CisJJm1vdgkoJHNbMl0sJkRXUCgyLCR0ZSwkdjEsOCkpOwkJIyBzMD4+MTYKKwkgJm1vdgkoJHYxLCR2MCk7CisJJm1vdgkoJHNbMV0sJkRXUCgxLCR0ZSwkc1sxXSw4KSk7CQkjIHMwPj4yNAorCisJJmFuZAkoJHYwLDB4RkYpOworCSZ4b3IJKCRzWzNdLCZEV1AoMCwkdGUsJHYwLDgpKTsJCSMgczM+PjAKKwkmbW92egkoJHYwLCZIQigkdjEpKTsKKwkmc2hyCSgkdjEsMTYpOworCSZ4b3IJKCRzWzJdLCZEV1AoMywkdGUsJHYwLDgpKTsJCSMgczM+PjgKKwkmbW92egkoJHYwLCZIQigkdjEpKTsKKwkmYW5kCSgkdjEsMHhGRik7CisJJnhvcgkoJHNbMV0sJkRXUCgyLCR0ZSwkdjEsOCkpOwkJIyBzMz4+MTYKKwkgJm1vdgkoJHYxLCZEV1AoNCwiZXNwIikpOwkJCSMgcmVzdG9yZSBzMgorCSZ4b3IJKCRzWzBdLCZEV1AoMSwkdGUsJHYwLDgpKTsJCSMgczM+PjI0CisKKwkmbW92CSgkdjAsJHYxKTsKKwkmYW5kCSgkdjEsMHhGRik7CisJJnhvcgkoJHNbMl0sJkRXUCgwLCR0ZSwkdjEsOCkpOwkJIyBzMj4+MAorCSZtb3Z6CSgkdjEsJkhCKCR2MCkpOworCSZzaHIJKCR2MCwxNik7CisJJnhvcgkoJHNbMV0sJkRXUCgzLCR0ZSwkdjEsOCkpOwkJIyBzMj4+OAorCSZtb3Z6CSgkdjEsJkhCKCR2MCkpOworCSZhbmQJKCR2MCwweEZGKTsKKwkmeG9yCSgkc1swXSwmRFdQKDIsJHRlLCR2MCw4KSk7CQkjIHMyPj4xNgorCSAmbW92CSgkdjAsJkRXUCg4LCJlc3AiKSk7CQkJIyByZXN0b3JlIHMxCisJJnhvcgkoJHNbM10sJkRXUCgxLCR0ZSwkdjEsOCkpOwkJIyBzMj4+MjQKKworCSZtb3YJKCR2MSwkdjApOworCSZhbmQJKCR2MCwweEZGKTsKKwkmeG9yCSgkc1sxXSwmRFdQKDAsJHRlLCR2MCw4KSk7CQkjIHMxPj4wCisJJm1vdnoJKCR2MCwmSEIoJHYxKSk7CisJJnNocgkoJHYxLDE2KTsKKwkmeG9yCSgkc1swXSwmRFdQKDMsJHRlLCR2MCw4KSk7CQkjIHMxPj44CisJJm1vdnoJKCR2MCwmSEIoJHYxKSk7CisJJmFuZAkoJHYxLDB4RkYpOworCSZ4b3IJKCRzWzNdLCZEV1AoMiwkdGUsJHYxLDgpKTsJCSMgczE+PjE2CisJICZtb3YJKCRrZXksJF9fa2V5KTsJCQkJIyByZWluY2FybmF0ZSB2MSBhcyBrZXkKKwkmeG9yCSgkc1syXSwmRFdQKDEsJHRlLCR2MCw4KSk7CQkjIHMxPj4yNAorfQorCisjIEFub3RoZXIgZXhwZXJpbWVudGFsIHJvdXRpbmUsIHdoaWNoIGZlYXR1cmVzICJob3Jpem9udGFsIHNwaW4sIiBidXQKKyMgZWxpbWluYXRlcyBvbmUgcmVmZXJlbmNlIHRvIHN0YWNrLiBTdHJhbmdlbHkgZW5vdWdoIHJ1bnMgc2xvd2VyLi4uCitzdWIgZW5jaG9yaXooKQoreyBteSAkdjAgPSAka2V5LCAkdjEgPSAkYWNjOworCisJJm1vdnoJKCR2MCwmTEIoJHMwKSk7CQkJIyAgMywgMiwgMSwgMCoKKwkmcm90cgkoJHMyLDgpOwkJCSMgIDgsMTEsMTAsIDkKKwkmbW92CSgkdjEsJkRXUCgwLCR0ZSwkdjAsOCkpOwkjICAwCisJJm1vdnoJKCR2MCwmSEIoJHMxKSk7CQkJIyAgNywgNiwgNSosIDQKKwkmcm90cgkoJHMzLDE2KTsJCQkjIDEzLDEyLDE1LDE0CisJJnhvcgkoJHYxLCZEV1AoMywkdGUsJHYwLDgpKTsJIyAgNQorCSZtb3Z6CSgkdjAsJkhCKCRzMikpOwkJCSMgIDgsMTEsMTAqLCA5CisJJnJvdHIJKCRzMCwxNik7CQkJIyAgMSwgMCwgMywgMgorCSZ4b3IJKCR2MSwmRFdQKDIsJHRlLCR2MCw4KSk7CSMgMTAKKwkmbW92egkoJHYwLCZIQigkczMpKTsJCQkjIDEzLDEyLDE1KiwxNAorCSZ4b3IJKCR2MSwmRFdQKDEsJHRlLCR2MCw4KSk7CSMgMTUsIHRbMF0gY29sbGVjdGVkCisJJm1vdgkoJF9fczAsJHYxKTsJCQkjIHRbMF0gc2F2ZWQKKworCSZtb3Z6CSgkdjAsJkxCKCRzMSkpOwkJCSMgIDcsIDYsIDUsIDQqCisJJnNocgkoJHMxLDE2KTsJCQkjICAtLCAtLCA3LCA2CisJJm1vdgkoJHYxLCZEV1AoMCwkdGUsJHYwLDgpKTsJIyAgNAorCSZtb3Z6CSgkdjAsJkxCKCRzMykpOwkJCSMgMTMsMTIsMTUsMTQqCisJJnhvcgkoJHYxLCZEV1AoMiwkdGUsJHYwLDgpKTsJIyAxNAorCSZtb3Z6CSgkdjAsJkhCKCRzMCkpOwkJCSMgIDEsIDAsIDMqLCAyCisJJmFuZAkoJHMzLDB4ZmZmZjAwMDApOwkJIyAxMywxMiwgLSwgLQorCSZ4b3IJKCR2MSwmRFdQKDEsJHRlLCR2MCw4KSk7CSMgIDMKKwkmbW92egkoJHYwLCZMQigkczIpKTsJCQkjICA4LDExLDEwLCA5KgorCSZvcgkoJHMzLCRzMSk7CQkJIyAxMywxMiwgNywgNgorCSZ4b3IJKCR2MSwmRFdQKDMsJHRlLCR2MCw4KSk7CSMgIDksIHRbMV0gY29sbGVjdGVkCisJJm1vdgkoJHMxLCR2MSk7CQkJIyAgc1sxXT10WzFdCisKKwkmbW92egkoJHYwLCZMQigkczApKTsJCQkjICAxLCAwLCAzLCAyKgorCSZzaHIJKCRzMiwxNik7CQkJIyAgLSwgLSwgOCwxMQorCSZtb3YJKCR2MSwmRFdQKDIsJHRlLCR2MCw4KSk7CSMgIDIKKwkmbW92egkoJHYwLCZIQigkczMpKTsJCQkjIDEzLDEyLCA3KiwgNgorCSZ4b3IJKCR2MSwmRFdQKDEsJHRlLCR2MCw4KSk7CSMgIDcKKwkmbW92egkoJHYwLCZIQigkczIpKTsJCQkjICAtLCAtLCA4KiwxMQorCSZ4b3IJKCR2MSwmRFdQKDAsJHRlLCR2MCw4KSk7CSMgIDgKKwkmbW92CSgkdjAsJHMzKTsKKwkmc2hyCSgkdjAsMjQpOwkJCSMgMTMKKwkmeG9yCSgkdjEsJkRXUCgzLCR0ZSwkdjAsOCkpOwkjIDEzLCB0WzJdIGNvbGxlY3RlZAorCisJJm1vdnoJKCR2MCwmTEIoJHMyKSk7CQkJIyAgLSwgLSwgOCwxMSoKKwkmc2hyCSgkczAsMjQpOwkJCSMgIDEqCisJJm1vdgkoJHMyLCZEV1AoMSwkdGUsJHYwLDgpKTsJIyAxMQorCSZ4b3IJKCRzMiwmRFdQKDMsJHRlLCRzMCw4KSk7CSMgIDEKKwkmbW92CSgkczAsJF9fczApOwkJCSMgc1swXT10WzBdCisJJm1vdnoJKCR2MCwmTEIoJHMzKSk7CQkJIyAxMywxMiwgNywgNioKKwkmc2hyCSgkczMsMTYpOwkJCSMgICAsICAsMTMsMTIKKwkmeG9yCSgkczIsJkRXUCgyLCR0ZSwkdjAsOCkpOwkjICA2CisJJm1vdgkoJGtleSwkX19rZXkpOwkJCSMgcmVpbmNhcm5hdGUgdjAgYXMga2V5CisJJmFuZAkoJHMzLDB4ZmYpOwkJCSMgICAsICAsMTMsMTIqCisJJm1vdgkoJHMzLCZEV1AoMCwkdGUsJHMzLDgpKTsJIyAxMgorCSZ4b3IJKCRzMywkczIpOwkJCSMgc1syXT10WzNdIGNvbGxlY3RlZAorCSZtb3YJKCRzMiwkdjEpOwkJCSMgc1syXT10WzJdCit9CisKKyMgTW9yZSBleHBlcmltZW50YWwgY29kZS4uLiBTU0Ugb25lLi4uIEV2ZW4gdGhvdWdoIHRoaXMgb25lIGVsaW1pbmF0ZXMKKyMgKmFsbCogcmVmZXJlbmNlcyB0byBzdGFjaywgaXQncyBub3QgZmFzdGVyLi4uCitzdWIgc3NlX2VuY2JvZHkoKQoreworCSZtb3Z6CSgkYWNjLCZMQigiZWF4IikpOwkJIyAgMAorCSZtb3YJKCJlY3giLCZEV1AoMCwkdGJsLCRhY2MsOCkpOwkjICAwCisJJnBzaHVmdwkoIm1tMiIsIm1tMCIsMHgwZCk7CQkjICA3LCA2LCAzLCAyCisJJm1vdnoJKCJlZHgiLCZIQigiZWF4IikpOwkJIyAgMQorCSZtb3YJKCJlZHgiLCZEV1AoMywkdGJsLCJlZHgiLDgpKTsJIyAgMQorCSZzaHIJKCJlYXgiLDE2KTsJCQkjICA1LCA0CisKKwkmbW92egkoJGFjYywmTEIoImVieCIpKTsJCSMgMTAKKwkmeG9yCSgiZWN4IiwmRFdQKDIsJHRibCwkYWNjLDgpKTsJIyAxMAorCSZwc2h1ZncJKCJtbTYiLCJtbTQiLDB4MDgpOwkJIyAxMywxMiwgOSwgOAorCSZtb3Z6CSgkYWNjLCZIQigiZWJ4IikpOwkJIyAxMQorCSZ4b3IJKCJlZHgiLCZEV1AoMSwkdGJsLCRhY2MsOCkpOwkjIDExCisJJnNocgkoImVieCIsMTYpOwkJCSMgMTUsMTQKKworCSZtb3Z6CSgkYWNjLCZIQigiZWF4IikpOwkJIyAgNQorCSZ4b3IJKCJlY3giLCZEV1AoMywkdGJsLCRhY2MsOCkpOwkjICA1CisJJm1vdnEJKCJtbTMiLFFXUCgxNiwka2V5KSk7CisJJm1vdnoJKCRhY2MsJkhCKCJlYngiKSk7CQkjIDE1CisJJnhvcgkoImVjeCIsJkRXUCgxLCR0YmwsJGFjYyw4KSk7CSMgMTUKKwkmbW92ZAkoIm1tMCIsImVjeCIpOwkJCSMgdFswXSBjb2xsZWN0ZWQKKworCSZtb3Z6CSgkYWNjLCZMQigiZWF4IikpOwkJIyAgNAorCSZtb3YJKCJlY3giLCZEV1AoMCwkdGJsLCRhY2MsOCkpOwkjICA0CisJJm1vdmQJKCJlYXgiLCJtbTIiKTsJCQkjICA3LCA2LCAzLCAyCisJJm1vdnoJKCRhY2MsJkxCKCJlYngiKSk7CQkjIDE0CisJJnhvcgkoImVjeCIsJkRXUCgyLCR0YmwsJGFjYyw4KSk7CSMgMTQKKwkmbW92ZAkoImVieCIsIm1tNiIpOwkJCSMgMTMsMTIsIDksIDgKKworCSZtb3Z6CSgkYWNjLCZIQigiZWF4IikpOwkJIyAgMworCSZ4b3IJKCJlY3giLCZEV1AoMSwkdGJsLCRhY2MsOCkpOwkjICAzCisJJm1vdnoJKCRhY2MsJkhCKCJlYngiKSk7CQkjICA5CisJJnhvcgkoImVjeCIsJkRXUCgzLCR0YmwsJGFjYyw4KSk7CSMgIDkKKwkmbW92ZAkoIm1tMSIsImVjeCIpOwkJCSMgdFsxXSBjb2xsZWN0ZWQKKworCSZtb3Z6CSgkYWNjLCZMQigiZWF4IikpOwkJIyAgMgorCSZtb3YJKCJlY3giLCZEV1AoMiwkdGJsLCRhY2MsOCkpOwkjICAyCisJJnNocgkoImVheCIsMTYpOwkJCSMgIDcsIDYKKwkmcHVucGNrbGRxCSgibW0wIiwibW0xIik7CQkjIHRbMCwxXSBjb2xsZWN0ZWQKKwkmbW92egkoJGFjYywmTEIoImVieCIpKTsJCSMgIDgKKwkmeG9yCSgiZWN4IiwmRFdQKDAsJHRibCwkYWNjLDgpKTsJIyAgOAorCSZzaHIJKCJlYngiLDE2KTsJCQkjIDEzLDEyCisKKwkmbW92egkoJGFjYywmSEIoImVheCIpKTsJCSMgIDcKKwkmeG9yCSgiZWN4IiwmRFdQKDEsJHRibCwkYWNjLDgpKTsJIyAgNworCSZweG9yCSgibW0wIiwibW0zIik7CisJJm1vdnoJKCJlYXgiLCZMQigiZWF4IikpOwkJIyAgNgorCSZ4b3IJKCJlZHgiLCZEV1AoMiwkdGJsLCJlYXgiLDgpKTsJIyAgNgorCSZwc2h1ZncJKCJtbTEiLCJtbTAiLDB4MDgpOwkJIyAgNSwgNCwgMSwgMAorCSZtb3Z6CSgkYWNjLCZIQigiZWJ4IikpOwkJIyAxMworCSZ4b3IJKCJlY3giLCZEV1AoMywkdGJsLCRhY2MsOCkpOwkjIDEzCisJJnhvcgkoImVjeCIsJkRXUCgyNCwka2V5KSk7CQkjIHRbMl0KKwkmbW92ZAkoIm1tNCIsImVjeCIpOwkJCSMgdFsyXSBjb2xsZWN0ZWQKKwkmbW92egkoImVieCIsJkxCKCJlYngiKSk7CQkjIDEyCisJJnhvcgkoImVkeCIsJkRXUCgwLCR0YmwsImVieCIsOCkpOwkjIDEyCisJJnNocgkoImVjeCIsMTYpOworCSZtb3ZkCSgiZWF4IiwibW0xIik7CQkJIyAgNSwgNCwgMSwgMAorCSZtb3YJKCJlYngiLCZEV1AoMjgsJGtleSkpOwkJIyB0WzNdCisJJnhvcgkoImVieCIsImVkeCIpOworCSZtb3ZkCSgibW01IiwiZWJ4Iik7CQkJIyB0WzNdIGNvbGxlY3RlZAorCSZhbmQJKCJlYngiLDB4ZmZmZjAwMDApOworCSZvcgkoImVieCIsImVjeCIpOworCisJJnB1bnBja2xkcQkoIm1tNCIsIm1tNSIpOwkJIyB0WzIsM10gY29sbGVjdGVkCit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgIkNvbXBhY3QiIGJsb2NrIGZ1bmN0aW9uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK3N1YiBlbmNjb21wYWN0KCkKK3sgbXkgJEZuID0gbW92OworICB3aGlsZSAoJCNfPjUpIHsgcG9wKEBfKTsgJEZuPXN1Ynt9OyB9CisgIG15ICgkaSwkdGUsQHMpPUBfOworICBteSAkdG1wID0gJGtleTsKKyAgbXkgJG91dCA9ICRpPT0zPyRzWzBdOiRhY2M7CisKKwkjICRGbiBpcyB1c2VkIGluIGZpcnN0IGNvbXBhY3Qgcm91bmQgYW5kIGl0cyBwdXJwb3NlIGlzIHRvCisJIyB2b2lkIHJlc3RvcmF0aW9uIG9mIHNvbWUgdmFsdWVzIGZyb20gc3RhY2ssIHNvIHRoYXQgYWZ0ZXIKKwkjIDR4ZW5jY29tcGFjdCB3aXRoIGV4dHJhIGFyZ3VtZW50ICRrZXkgdmFsdWUgaXMgbGVmdCB0aGVyZS4uLgorCWlmICgkaT09MykgIHsJJiRGbgkoJGtleSwkX19rZXkpOwkJCX0jIyVlZHgKKwllbHNlICAgICAgICB7CSZtb3YJKCRvdXQsJHNbMF0pOwkJCX0KKwkJCSZhbmQJKCRvdXQsMHhGRik7CisJaWYgKCRpPT0xKSAgewkmc2hyCSgkc1swXSwxNik7CQkJfSMlZWJ4WzFdCisJaWYgKCRpPT0yKSAgewkmc2hyCSgkc1swXSwyNCk7CQkJfSMlZWN4WzJdCisJCQkmbW92egkoJG91dCwmQlAoLTEyOCwkdGUsJG91dCwxKSk7CisKKwlpZiAoJGk9PTMpICB7CSR0bXA9JHNbMV07CQkJCX0jIyVlYXgKKwkJCSZtb3Z6CSgkdG1wLCZIQigkc1sxXSkpOworCQkJJm1vdnoJKCR0bXAsJkJQKC0xMjgsJHRlLCR0bXAsMSkpOworCQkJJnNobAkoJHRtcCw4KTsKKwkJCSZ4b3IJKCRvdXQsJHRtcCk7CisKKwlpZiAoJGk9PTMpICB7CSR0bXA9JHNbMl07ICZtb3YgKCRzWzFdLCRfX3MwKTsJCX0jIyVlYngKKwllbHNlICAgICAgICB7CSZtb3YJKCR0bXAsJHNbMl0pOworCQkJJnNocgkoJHRtcCwxNik7CQkJfQorCWlmICgkaT09MikgIHsJJmFuZAkoJHNbMV0sMHhGRik7CQkJfSMlZWR4WzJdCisJCQkmYW5kCSgkdG1wLDB4RkYpOworCQkJJm1vdnoJKCR0bXAsJkJQKC0xMjgsJHRlLCR0bXAsMSkpOworCQkJJnNobAkoJHRtcCwxNik7CisJCQkmeG9yCSgkb3V0LCR0bXApOworCisJaWYgKCRpPT0zKSAgewkkdG1wPSRzWzNdOyAmbW92ICgkc1syXSwkX19zMSk7CQl9IyMlZWN4CisJZWxzaWYoJGk9PTIpewkmbW92egkoJHRtcCwmSEIoJHNbM10pKTsJCX0jJWVieFsyXQorCWVsc2UgICAgICAgIHsJJm1vdgkoJHRtcCwkc1szXSk7CisJCQkmc2hyCSgkdG1wLDI0KTsJCQl9CisJCQkmbW92egkoJHRtcCwmQlAoLTEyOCwkdGUsJHRtcCwxKSk7CisJCQkmc2hsCSgkdG1wLDI0KTsKKwkJCSZ4b3IJKCRvdXQsJHRtcCk7CisJaWYgKCRpPDIpICAgewkmbW92CSgmRFdQKDQrNCokaSwiZXNwIiksJG91dCk7CX0KKwlpZiAoJGk9PTMpICB7CSZtb3YJKCRzWzNdLCRhY2MpOwkJCX0KKwkmY29tbWVudCgpOworfQorCitzdWIgZW5jdHJhbnNmb3JtKCkKK3sgbXkgQHMgPSAoJHMwLCRzMSwkczIsJHMzKTsKKyAgbXkgJGkgPSBzaGlmdDsKKyAgbXkgJHRtcCA9ICR0Ymw7CisgIG15ICRyMiAgPSAka2V5IDsKKworCSZtb3YJKCRhY2MsJHNbJGldKTsKKwkmYW5kCSgkYWNjLDB4ODA4MDgwODApOworCSZtb3YJKCR0bXAsJGFjYyk7CisJJnNocgkoJHRtcCw3KTsKKwkmbGVhCSgkcjIsJkRXUCgwLCRzWyRpXSwkc1skaV0pKTsKKwkmc3ViCSgkYWNjLCR0bXApOworCSZhbmQJKCRyMiwweGZlZmVmZWZlKTsKKwkmYW5kCSgkYWNjLDB4MWIxYjFiMWIpOworCSZtb3YJKCR0bXAsJHNbJGldKTsKKwkmeG9yCSgkYWNjLCRyMik7CSMgcjIKKworCSZ4b3IJKCRzWyRpXSwkYWNjKTsJIyByMCBeIHIyCisJJnJvdGwJKCRzWyRpXSwyNCk7CisJJnhvcgkoJHNbJGldLCRhY2MpCSMgUk9UQVRFKHIyXnIwLDI0KSBeIHIyCisJJnJvdHIJKCR0bXAsMTYpOworCSZ4b3IJKCRzWyRpXSwkdG1wKTsKKwkmcm90cgkoJHRtcCw4KTsKKwkmeG9yCSgkc1skaV0sJHRtcCk7Cit9CisKKyZmdW5jdGlvbl9iZWdpbl9CKCJfeDg2X0FFU19lbmNyeXB0X2NvbXBhY3QiKTsKKwkjIG5vdGUgdGhhdCBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gYWxsb2NhdGUgc3RhY2sgZnJhbWUgZm9yIG1lIQorCSZtb3YJKCRfX2tleSwka2V5KTsJCQkjIHNhdmUga2V5CisKKwkmeG9yCSgkczAsJkRXUCgwLCRrZXkpKTsJCSMgeG9yIHdpdGgga2V5CisJJnhvcgkoJHMxLCZEV1AoNCwka2V5KSk7CisJJnhvcgkoJHMyLCZEV1AoOCwka2V5KSk7CisJJnhvcgkoJHMzLCZEV1AoMTIsJGtleSkpOworCisJJm1vdgkoJGFjYywmRFdQKDI0MCwka2V5KSk7CQkjIGxvYWQga2V5LT5yb3VuZHMKKwkmbGVhCSgkYWNjLCZEV1AoLTIsJGFjYywkYWNjKSk7CisJJmxlYQkoJGFjYywmRFdQKDAsJGtleSwkYWNjLDgpKTsKKwkmbW92CSgkX19lbmQsJGFjYyk7CQkJIyBlbmQgb2Yga2V5IHNjaGVkdWxlCisKKwkjIHByZWZldGNoIFRlNAorCSZtb3YJKCRrZXksJkRXUCgwLTEyOCwkdGJsKSk7CisJJm1vdgkoJGFjYywmRFdQKDMyLTEyOCwkdGJsKSk7CisJJm1vdgkoJGtleSwmRFdQKDY0LTEyOCwkdGJsKSk7CisJJm1vdgkoJGFjYywmRFdQKDk2LTEyOCwkdGJsKSk7CisJJm1vdgkoJGtleSwmRFdQKDEyOC0xMjgsJHRibCkpOworCSZtb3YJKCRhY2MsJkRXUCgxNjAtMTI4LCR0YmwpKTsKKwkmbW92CSgka2V5LCZEV1AoMTkyLTEyOCwkdGJsKSk7CisJJm1vdgkoJGFjYywmRFdQKDIyNC0xMjgsJHRibCkpOworCisJJnNldF9sYWJlbCgibG9vcCIsMTYpOworCisJCSZlbmNjb21wYWN0KDAsJHRibCwkczAsJHMxLCRzMiwkczMsMSk7CisJCSZlbmNjb21wYWN0KDEsJHRibCwkczEsJHMyLCRzMywkczAsMSk7CisJCSZlbmNjb21wYWN0KDIsJHRibCwkczIsJHMzLCRzMCwkczEsMSk7CisJCSZlbmNjb21wYWN0KDMsJHRibCwkczMsJHMwLCRzMSwkczIsMSk7CisJCSZlbmN0cmFuc2Zvcm0oMik7CisJCSZlbmN0cmFuc2Zvcm0oMyk7CisJCSZlbmN0cmFuc2Zvcm0oMCk7CisJCSZlbmN0cmFuc2Zvcm0oMSk7CisJCSZtb3YgCSgka2V5LCRfX2tleSk7CisJCSZtb3YJKCR0YmwsJF9fdGJsKTsKKwkJJmFkZAkoJGtleSwxNik7CQkjIGFkdmFuY2UgcmRfa2V5CisJCSZ4b3IJKCRzMCwmRFdQKDAsJGtleSkpOworCQkmeG9yCSgkczEsJkRXUCg0LCRrZXkpKTsKKwkJJnhvcgkoJHMyLCZEV1AoOCwka2V5KSk7CisJCSZ4b3IJKCRzMywmRFdQKDEyLCRrZXkpKTsKKworCSZjbXAJKCRrZXksJF9fZW5kKTsKKwkmbW92CSgkX19rZXksJGtleSk7CisJJmpiCSgmbGFiZWwoImxvb3AiKSk7CisKKwkmZW5jY29tcGFjdCgwLCR0YmwsJHMwLCRzMSwkczIsJHMzKTsKKwkmZW5jY29tcGFjdCgxLCR0YmwsJHMxLCRzMiwkczMsJHMwKTsKKwkmZW5jY29tcGFjdCgyLCR0YmwsJHMyLCRzMywkczAsJHMxKTsKKwkmZW5jY29tcGFjdCgzLCR0YmwsJHMzLCRzMCwkczEsJHMyKTsKKworCSZ4b3IJKCRzMCwmRFdQKDE2LCRrZXkpKTsKKwkmeG9yCSgkczEsJkRXUCgyMCwka2V5KSk7CisJJnhvcgkoJHMyLCZEV1AoMjQsJGtleSkpOworCSZ4b3IJKCRzMywmRFdQKDI4LCRrZXkpKTsKKworCSZyZXQJKCk7CismZnVuY3Rpb25fZW5kX0IoIl94ODZfQUVTX2VuY3J5cHRfY29tcGFjdCIpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICJDb21wYWN0IiBTU0UgYmxvY2sgZnVuY3Rpb24uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIFBlcmZvcm1hbmNlIGlzIG5vdCBhY3R1YWxseSBleHRyYW9yZGluYXJ5IGluIGNvbXBhcmlzb24gdG8gcHVyZQorIyB4ODYgY29kZS4gSW4gcGFydGljdWxhciBlbmNyeXB0IHBlcmZvcm1hbmNlIGlzIHZpcnR1YWxseSB0aGUgc2FtZS4KKyMgRGVjcnlwdCBwZXJmb3JtYW5jZSBvbiB0aGUgb3RoZXIgaGFuZCBpcyAxNS0yMCUgYmV0dGVyIG9uIG5ld2VyCisjILUtYXJjaHMgW2J1dCB3ZSdyZSB0aGFua2Z1bCBmb3IgKmFueSogaW1wcm92ZW1lbnQgaGVyZV0sIGFuZCB+NTAlCisjIGJldHRlciBvbiBQSUlJOi0pIEFuZCBhZGRpdGlvbmFsbHkgb24gdGhlIHByb3Mgc2lkZSB0aGlzIGNvZGUKKyMgZWxpbWluYXRlcyByZWR1bmRhbnQgcmVmZXJlbmNlcyB0byBzdGFjayBhbmQgdGh1cyByZWxpZXZlcy8KKyMgbWluaW1pemVzIHRoZSBwcmVzc3VyZSBvbiB0aGUgbWVtb3J5IGJ1cy4KKyMKKyMgTU1YIHJlZ2lzdGVyIGxheW91dCAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzYgorIyArLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rCisjIHwgICAgICAgICAgbW00ICAgICAgICAgIHwgICAgICAgICAgbW0wICAgICAgICAgIHwKKyMgKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKworIyB8ICAgICBzMyAgICB8ICAgICBzMiAgICB8ICAgICBzMSAgICB8ICAgICBzMCAgICB8ICAgIAorIyArLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rLS0rCisjIHwxNXwxNHwxM3wxMnwxMXwxMHwgOXwgOHwgN3wgNnwgNXwgNHwgM3wgMnwgMXwgMHwKKyMgKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKworIworIyBJbmRleGVzIHRyYW5zbGF0ZSBhcyBzW04vNF0+Pig4KihOJTQpKSwgZS5nLiA1IG1lYW5zIHMxPj44LgorIyBJbiB0aGlzIHRlcm1zIGVuY3J5cHRpb24gYW5kIGRlY3J5cHRpb24gImNvbXBhY3QiIHBlcm11dGF0aW9uCisjIG1hdHJpY2VzIGNhbiBiZSBkZXBpY3RlZCBhcyBmb2xsb3dpbmc6CisjCisjIGVuY3J5cHRpb24gICAgICAgICAgICAgIGxzYgkjIGRlY3J5cHRpb24gICAgICAgICAgICAgIGxzYgorIyArLS0tLSsrLS0tLSstLS0tKy0tLS0rLS0tLSsJIyArLS0tLSsrLS0tLSstLS0tKy0tLS0rLS0tLSsKKyMgfCB0MCB8fCAxNSB8IDEwIHwgIDUgfCAgMCB8CSMgfCB0MCB8fCAgNyB8IDEwIHwgMTMgfCAgMCB8CisjICstLS0tKystLS0tKy0tLS0rLS0tLSstLS0tKwkjICstLS0tKystLS0tKy0tLS0rLS0tLSstLS0tKworIyB8IHQxIHx8ICAzIHwgMTQgfCAgOSB8ICA0IHwJIyB8IHQxIHx8IDExIHwgMTQgfCAgMSB8ICA0IHwKKyMgKy0tLS0rKy0tLS0rLS0tLSstLS0tKy0tLS0rCSMgKy0tLS0rKy0tLS0rLS0tLSstLS0tKy0tLS0rCisjIHwgdDIgfHwgIDcgfCAgMiB8IDEzIHwgIDggfAkjIHwgdDIgfHwgMTUgfCAgMiB8ICA1IHwgIDggfAorIyArLS0tLSsrLS0tLSstLS0tKy0tLS0rLS0tLSsJIyArLS0tLSsrLS0tLSstLS0tKy0tLS0rLS0tLSsKKyMgfCB0MyB8fCAxMSB8ICA2IHwgIDEgfCAxMiB8CSMgfCB0MyB8fCAgMyB8ICA2IHwgIDkgfCAxMiB8CisjICstLS0tKystLS0tKy0tLS0rLS0tLSstLS0tKwkjICstLS0tKystLS0tKy0tLS0rLS0tLSstLS0tKworIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBXaHkgbm90IHhtbSByZWdpc3RlcnM/IFNob3J0IGFuc3dlci4gSXQgd2FzIGFjdHVhbGx5IHRlc3RlZCBhbmQKKyMgd2FzIG5vdCBhbnkgZmFzdGVyLCBidXQgKmNvbnRyYXJ5KiwgbW9zdCBub3RhYmx5IG9uIEludGVsIENQVXMuCisjIExvbmdlciBhbnN3ZXIuIE1haW4gYWR2YW50YWdlIG9mIHVzaW5nIG1tIHJlZ2lzdGVycyBpcyB0aGF0IG1vdmQKKyMgbGF0ZW5jeSBpcyBsb3dlciwgZXNwZWNpYWxseSBvbiBJbnRlbCBQNC4gV2hpbGUgYXJpdGhtZXRpYworIyBpbnN0cnVjdGlvbnMgYXJlIHR3aWNlIGFzIG1hbnksIHRoZXkgY2FuIGJlIHNjaGVkdWxlZCBldmVyeSBjeWNsZQorIyBhbmQgbm90IGV2ZXJ5IHNlY29uZCBvbmUgd2hlbiB0aGV5IGFyZSBvcGVyYXRpbmcgb24geG1tIHJlZ2lzdGVyLAorIyBzbyB0aGF0ICJhcml0aG1ldGljIHRocm91Z2hwdXQiIHJlbWFpbnMgdmlydHVhbGx5IHRoZSBzYW1lLiBBbmQKKyMgZmluYWxseSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQgZXZlbiBvbiBlbGRlciBTU0Utb25seSBDUFVzOi0pCisKK3N1YiBzc2VfZW5jY29tcGFjdCgpCit7CisJJnBzaHVmdwkoIm1tMSIsIm1tMCIsMHgwOCk7CQkjICA1LCA0LCAxLCAwCisJJnBzaHVmdwkoIm1tNSIsIm1tNCIsMHgwZCk7CQkjIDE1LDE0LDExLDEwCisJJm1vdmQJKCJlYXgiLCJtbTEiKTsJCQkjICA1LCA0LCAxLCAwCisJJm1vdmQJKCJlYngiLCJtbTUiKTsJCQkjIDE1LDE0LDExLDEwCisKKwkmbW92egkoJGFjYywmTEIoImVheCIpKTsJCSMgIDAKKwkmbW92egkoImVjeCIsJkJQKC0xMjgsJHRibCwkYWNjLDEpKTsJIyAgMAorCSZwc2h1ZncJKCJtbTIiLCJtbTAiLDB4MGQpOwkJIyAgNywgNiwgMywgMgorCSZtb3Z6CSgiZWR4IiwmSEIoImVheCIpKTsJCSMgIDEKKwkmbW92egkoImVkeCIsJkJQKC0xMjgsJHRibCwiZWR4IiwxKSk7CSMgIDEKKwkmc2hsCSgiZWR4Iiw4KTsJCQkjICAxCisJJnNocgkoImVheCIsMTYpOwkJCSMgIDUsIDQKKworCSZtb3Z6CSgkYWNjLCZMQigiZWJ4IikpOwkJIyAxMAorCSZtb3Z6CSgkYWNjLCZCUCgtMTI4LCR0YmwsJGFjYywxKSk7CSMgMTAKKwkmc2hsCSgkYWNjLDE2KTsJCQkjIDEwCisJJm9yCSgiZWN4IiwkYWNjKTsJCQkjIDEwCisJJnBzaHVmdwkoIm1tNiIsIm1tNCIsMHgwOCk7CQkjIDEzLDEyLCA5LCA4CisJJm1vdnoJKCRhY2MsJkhCKCJlYngiKSk7CQkjIDExCisJJm1vdnoJKCRhY2MsJkJQKC0xMjgsJHRibCwkYWNjLDEpKTsJIyAxMQorCSZzaGwJKCRhY2MsMjQpOwkJCSMgMTEKKwkmb3IJKCJlZHgiLCRhY2MpOwkJCSMgMTEKKwkmc2hyCSgiZWJ4IiwxNik7CQkJIyAxNSwxNAorCisJJm1vdnoJKCRhY2MsJkhCKCJlYXgiKSk7CQkjICA1CisJJm1vdnoJKCRhY2MsJkJQKC0xMjgsJHRibCwkYWNjLDEpKTsJIyAgNQorCSZzaGwJKCRhY2MsOCk7CQkJIyAgNQorCSZvcgkoImVjeCIsJGFjYyk7CQkJIyAgNQorCSZtb3Z6CSgkYWNjLCZIQigiZWJ4IikpOwkJIyAxNQorCSZtb3Z6CSgkYWNjLCZCUCgtMTI4LCR0YmwsJGFjYywxKSk7CSMgMTUKKwkmc2hsCSgkYWNjLDI0KTsJCQkjIDE1CisJJm9yCSgiZWN4IiwkYWNjKTsJCQkjIDE1CisJJm1vdmQJKCJtbTAiLCJlY3giKTsJCQkjIHRbMF0gY29sbGVjdGVkCisKKwkmbW92egkoJGFjYywmTEIoImVheCIpKTsJCSMgIDQKKwkmbW92egkoImVjeCIsJkJQKC0xMjgsJHRibCwkYWNjLDEpKTsJIyAgNAorCSZtb3ZkCSgiZWF4IiwibW0yIik7CQkJIyAgNywgNiwgMywgMgorCSZtb3Z6CSgkYWNjLCZMQigiZWJ4IikpOwkJIyAxNAorCSZtb3Z6CSgkYWNjLCZCUCgtMTI4LCR0YmwsJGFjYywxKSk7CSMgMTQKKwkmc2hsCSgkYWNjLDE2KTsJCQkjIDE0CisJJm9yCSgiZWN4IiwkYWNjKTsJCQkjIDE0CisKKwkmbW92ZAkoImVieCIsIm1tNiIpOwkJCSMgMTMsMTIsIDksIDgKKwkmbW92egkoJGFjYywmSEIoImVheCIpKTsJCSMgIDMKKwkmbW92egkoJGFjYywmQlAoLTEyOCwkdGJsLCRhY2MsMSkpOwkjICAzCisJJnNobAkoJGFjYywyNCk7CQkJIyAgMworCSZvcgkoImVjeCIsJGFjYyk7CQkJIyAgMworCSZtb3Z6CSgkYWNjLCZIQigiZWJ4IikpOwkJIyAgOQorCSZtb3Z6CSgkYWNjLCZCUCgtMTI4LCR0YmwsJGFjYywxKSk7CSMgIDkKKwkmc2hsCSgkYWNjLDgpOwkJCSMgIDkKKwkmb3IJKCJlY3giLCRhY2MpOwkJCSMgIDkKKwkmbW92ZAkoIm1tMSIsImVjeCIpOwkJCSMgdFsxXSBjb2xsZWN0ZWQKKworCSZtb3Z6CSgkYWNjLCZMQigiZWJ4IikpOwkJIyAgOAorCSZtb3Z6CSgiZWN4IiwmQlAoLTEyOCwkdGJsLCRhY2MsMSkpOwkjICA4CisJJnNocgkoImVieCIsMTYpOwkJCSMgMTMsMTIKKwkmbW92egkoJGFjYywmTEIoImVheCIpKTsJCSMgIDIKKwkmbW92egkoJGFjYywmQlAoLTEyOCwkdGJsLCRhY2MsMSkpOwkjICAyCisJJnNobAkoJGFjYywxNik7CQkJIyAgMgorCSZvcgkoImVjeCIsJGFjYyk7CQkJIyAgMgorCSZzaHIJKCJlYXgiLDE2KTsJCQkjICA3LCA2CisKKwkmcHVucGNrbGRxCSgibW0wIiwibW0xIik7CQkjIHRbMCwxXSBjb2xsZWN0ZWQKKworCSZtb3Z6CSgkYWNjLCZIQigiZWF4IikpOwkJIyAgNworCSZtb3Z6CSgkYWNjLCZCUCgtMTI4LCR0YmwsJGFjYywxKSk7CSMgIDcKKwkmc2hsCSgkYWNjLDI0KTsJCQkjICA3CisJJm9yCSgiZWN4IiwkYWNjKTsJCQkjICA3CisJJmFuZAkoImVheCIsMHhmZik7CQkJIyAgNgorCSZtb3Z6CSgiZWF4IiwmQlAoLTEyOCwkdGJsLCJlYXgiLDEpKTsJIyAgNgorCSZzaGwJKCJlYXgiLDE2KTsJCQkjICA2CisJJm9yCSgiZWR4IiwiZWF4Iik7CQkJIyAgNgorCSZtb3Z6CSgkYWNjLCZIQigiZWJ4IikpOwkJIyAxMworCSZtb3Z6CSgkYWNjLCZCUCgtMTI4LCR0YmwsJGFjYywxKSk7CSMgMTMKKwkmc2hsCSgkYWNjLDgpOwkJCSMgMTMKKwkmb3IJKCJlY3giLCRhY2MpOwkJCSMgMTMKKwkmbW92ZAkoIm1tNCIsImVjeCIpOwkJCSMgdFsyXSBjb2xsZWN0ZWQKKwkmYW5kCSgiZWJ4IiwweGZmKTsJCQkjIDEyCisJJm1vdnoJKCJlYngiLCZCUCgtMTI4LCR0YmwsImVieCIsMSkpOwkjIDEyCisJJm9yCSgiZWR4IiwiZWJ4Iik7CQkJIyAxMgorCSZtb3ZkCSgibW01IiwiZWR4Iik7CQkJIyB0WzNdIGNvbGxlY3RlZAorCisJJnB1bnBja2xkcQkoIm1tNCIsIm1tNSIpOwkJIyB0WzIsM10gY29sbGVjdGVkCit9CisKKwkJCQkJaWYgKCEkeDg2b25seSkgeworJmZ1bmN0aW9uX2JlZ2luX0IoIl9zc2VfQUVTX2VuY3J5cHRfY29tcGFjdCIpOworCSZweG9yCSgibW0wIiwmUVdQKDAsJGtleSkpOwkjICA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwCisJJnB4b3IJKCJtbTQiLCZRV1AoOCwka2V5KSk7CSMgMTUsMTQsMTMsMTIsMTEsMTAsIDksIDgKKworCSMgbm90ZSB0aGF0IGNhbGxlciBpcyBleHBlY3RlZCB0byBhbGxvY2F0ZSBzdGFjayBmcmFtZSBmb3IgbWUhCisJJm1vdgkoJGFjYywmRFdQKDI0MCwka2V5KSk7CQkjIGxvYWQga2V5LT5yb3VuZHMKKwkmbGVhCSgkYWNjLCZEV1AoLTIsJGFjYywkYWNjKSk7CisJJmxlYQkoJGFjYywmRFdQKDAsJGtleSwkYWNjLDgpKTsKKwkmbW92CSgkX19lbmQsJGFjYyk7CQkJIyBlbmQgb2Yga2V5IHNjaGVkdWxlCisKKwkmbW92CSgkczAsMHgxYjFiMWIxYik7CQkjIG1hZ2ljIGNvbnN0YW50CisJJm1vdgkoJkRXUCg4LCJlc3AiKSwkczApOworCSZtb3YJKCZEV1AoMTIsImVzcCIpLCRzMCk7CisKKwkjIHByZWZldGNoIFRlNAorCSZtb3YJKCRzMCwmRFdQKDAtMTI4LCR0YmwpKTsKKwkmbW92CSgkczEsJkRXUCgzMi0xMjgsJHRibCkpOworCSZtb3YJKCRzMiwmRFdQKDY0LTEyOCwkdGJsKSk7CisJJm1vdgkoJHMzLCZEV1AoOTYtMTI4LCR0YmwpKTsKKwkmbW92CSgkczAsJkRXUCgxMjgtMTI4LCR0YmwpKTsKKwkmbW92CSgkczEsJkRXUCgxNjAtMTI4LCR0YmwpKTsKKwkmbW92CSgkczIsJkRXUCgxOTItMTI4LCR0YmwpKTsKKwkmbW92CSgkczMsJkRXUCgyMjQtMTI4LCR0YmwpKTsKKworCSZzZXRfbGFiZWwoImxvb3AiLDE2KTsKKwkJJnNzZV9lbmNjb21wYWN0KCk7CisJCSZhZGQJKCRrZXksMTYpOworCQkmY21wCSgka2V5LCRfX2VuZCk7CisJCSZqYQkoJmxhYmVsKCJvdXQiKSk7CisKKwkJJm1vdnEJKCJtbTIiLCZRV1AoOCwiZXNwIikpOworCQkmcHhvcgkoIm1tMyIsIm1tMyIpOwkJJnB4b3IJKCJtbTciLCJtbTciKTsKKwkJJm1vdnEJKCJtbTEiLCJtbTAiKTsJCSZtb3ZxCSgibW01IiwibW00Iik7CSMgcjAKKwkJJnBjbXBndGIoIm1tMyIsIm1tMCIpOwkJJnBjbXBndGIoIm1tNyIsIm1tNCIpOworCQkmcGFuZAkoIm1tMyIsIm1tMiIpOwkJJnBhbmQJKCJtbTciLCJtbTIiKTsKKwkJJnBzaHVmdwkoIm1tMiIsIm1tMCIsMHhiMSk7CSZwc2h1ZncJKCJtbTYiLCJtbTQiLDB4YjEpOyMgUk9UQVRFKHIwLDE2KQorCQkmcGFkZGIJKCJtbTAiLCJtbTAiKTsJCSZwYWRkYgkoIm1tNCIsIm1tNCIpOworCQkmcHhvcgkoIm1tMCIsIm1tMyIpOwkJJnB4b3IJKCJtbTQiLCJtbTciKTsJIyA9IHIyCisJCSZwc2h1ZncJKCJtbTMiLCJtbTIiLDB4YjEpOwkmcHNodWZ3CSgibW03IiwibW02IiwweGIxKTsjIHIwCisJCSZweG9yCSgibW0xIiwibW0wIik7CQkmcHhvcgkoIm1tNSIsIm1tNCIpOwkjIHIwXnIyCisJCSZweG9yCSgibW0wIiwibW0yIik7CQkmcHhvcgkoIm1tNCIsIm1tNiIpOwkjIF49IFJPVEFURShyMCwxNikKKworCQkmbW92cQkoIm1tMiIsIm1tMyIpOwkJJm1vdnEJKCJtbTYiLCJtbTciKTsKKwkJJnBzbGxkCSgibW0zIiw4KTsJCSZwc2xsZAkoIm1tNyIsOCk7CisJCSZwc3JsZAkoIm1tMiIsMjQpOwkJJnBzcmxkCSgibW02IiwyNCk7CisJCSZweG9yCSgibW0wIiwibW0zIik7CQkmcHhvcgkoIm1tNCIsIm1tNyIpOwkjIF49IHIwPDw4CisJCSZweG9yCSgibW0wIiwibW0yIik7CQkmcHhvcgkoIm1tNCIsIm1tNiIpOwkjIF49IHIwPj4yNAorCisJCSZtb3ZxCSgibW0zIiwibW0xIik7CQkmbW92cQkoIm1tNyIsIm1tNSIpOworCQkmbW92cQkoIm1tMiIsJlFXUCgwLCRrZXkpKTsJJm1vdnEJKCJtbTYiLCZRV1AoOCwka2V5KSk7CisJCSZwc3JsZAkoIm1tMSIsOCk7CQkmcHNybGQJKCJtbTUiLDgpOworCQkmbW92CSgkczAsJkRXUCgwLTEyOCwkdGJsKSk7CisJCSZwc2xsZAkoIm1tMyIsMjQpOwkJJnBzbGxkCSgibW03IiwyNCk7CisJCSZtb3YJKCRzMSwmRFdQKDY0LTEyOCwkdGJsKSk7CisJCSZweG9yCSgibW0wIiwibW0xIik7CQkmcHhvcgkoIm1tNCIsIm1tNSIpOwkjIF49IChyMl5yMCk8PDgKKwkJJm1vdgkoJHMyLCZEV1AoMTI4LTEyOCwkdGJsKSk7CisJCSZweG9yCSgibW0wIiwibW0zIik7CQkmcHhvcgkoIm1tNCIsIm1tNyIpOwkjIF49IChyMl5yMCk+PjI0CisJCSZtb3YJKCRzMywmRFdQKDE5Mi0xMjgsJHRibCkpOworCisJCSZweG9yCSgibW0wIiwibW0yIik7CQkmcHhvcgkoIm1tNCIsIm1tNiIpOworCSZqbXAJKCZsYWJlbCgibG9vcCIpKTsKKworCSZzZXRfbGFiZWwoIm91dCIsMTYpOworCSZweG9yCSgibW0wIiwmUVdQKDAsJGtleSkpOworCSZweG9yCSgibW00IiwmUVdQKDgsJGtleSkpOworCisJJnJldAkoKTsKKyZmdW5jdGlvbl9lbmRfQigiX3NzZV9BRVNfZW5jcnlwdF9jb21wYWN0Iik7CisJCQkJCX0KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBWYW5pbGxhIGJsb2NrIGZ1bmN0aW9uLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitzdWIgZW5jc3RlcCgpCit7IG15ICgkaSwkdGUsQHMpID0gQF87CisgIG15ICR0bXAgPSAka2V5OworICBteSAkb3V0ID0gJGk9PTM/JHNbMF06JGFjYzsKKworCSMgbGluZXMgbWFya2VkIHdpdGggIyVlP3hbaV0gZGVub3RlICJyZW9yZGVyZWQiIGluc3RydWN0aW9ucy4uLgorCWlmICgkaT09MykgIHsJJm1vdgkoJGtleSwkX19rZXkpOwkJCX0jIyVlZHgKKwllbHNlICAgICAgICB7CSZtb3YJKCRvdXQsJHNbMF0pOworCQkJJmFuZAkoJG91dCwweEZGKTsJCQl9CisJaWYgKCRpPT0xKSAgewkmc2hyCSgkc1swXSwxNik7CQkJfSMlZWJ4WzFdCisJaWYgKCRpPT0yKSAgewkmc2hyCSgkc1swXSwyNCk7CQkJfSMlZWN4WzJdCisJCQkmbW92CSgkb3V0LCZEV1AoMCwkdGUsJG91dCw4KSk7CisKKwlpZiAoJGk9PTMpICB7CSR0bXA9JHNbMV07CQkJCX0jIyVlYXgKKwkJCSZtb3Z6CSgkdG1wLCZIQigkc1sxXSkpOworCQkJJnhvcgkoJG91dCwmRFdQKDMsJHRlLCR0bXAsOCkpOworCisJaWYgKCRpPT0zKSAgewkkdG1wPSRzWzJdOyAmbW92ICgkc1sxXSwkX19zMCk7CQl9IyMlZWJ4CisJZWxzZSAgICAgICAgewkmbW92CSgkdG1wLCRzWzJdKTsKKwkJCSZzaHIJKCR0bXAsMTYpOwkJCX0KKwlpZiAoJGk9PTIpICB7CSZhbmQJKCRzWzFdLDB4RkYpOwkJCX0jJWVkeFsyXQorCQkJJmFuZAkoJHRtcCwweEZGKTsKKwkJCSZ4b3IJKCRvdXQsJkRXUCgyLCR0ZSwkdG1wLDgpKTsKKworCWlmICgkaT09MykgIHsJJHRtcD0kc1szXTsgJm1vdiAoJHNbMl0sJF9fczEpOwkJfSMjJWVjeAorCWVsc2lmKCRpPT0yKXsJJm1vdnoJKCR0bXAsJkhCKCRzWzNdKSk7CQl9IyVlYnhbMl0KKwllbHNlICAgICAgICB7CSZtb3YJKCR0bXAsJHNbM10pOyAKKwkJCSZzaHIJKCR0bXAsMjQpCQkJfQorCQkJJnhvcgkoJG91dCwmRFdQKDEsJHRlLCR0bXAsOCkpOworCWlmICgkaTwyKSAgIHsJJm1vdgkoJkRXUCg0KzQqJGksImVzcCIpLCRvdXQpOwl9CisJaWYgKCRpPT0zKSAgewkmbW92CSgkc1szXSwkYWNjKTsJCQl9CisJCQkmY29tbWVudCgpOworfQorCitzdWIgZW5jbGFzdCgpCit7IG15ICgkaSwkdGUsQHMpPUBfOworICBteSAkdG1wID0gJGtleTsKKyAgbXkgJG91dCA9ICRpPT0zPyRzWzBdOiRhY2M7CisKKwlpZiAoJGk9PTMpICB7CSZtb3YJKCRrZXksJF9fa2V5KTsJCQl9IyMlZWR4CisJZWxzZSAgICAgICAgewkmbW92CSgkb3V0LCRzWzBdKTsJCQl9CisJCQkmYW5kCSgkb3V0LDB4RkYpOworCWlmICgkaT09MSkgIHsJJnNocgkoJHNbMF0sMTYpOwkJCX0jJWVieFsxXQorCWlmICgkaT09MikgIHsJJnNocgkoJHNbMF0sMjQpOwkJCX0jJWVjeFsyXQorCQkJJm1vdgkoJG91dCwmRFdQKDIsJHRlLCRvdXQsOCkpOworCQkJJmFuZAkoJG91dCwweDAwMDAwMGZmKTsKKworCWlmICgkaT09MykgIHsJJHRtcD0kc1sxXTsJCQkJfSMjJWVheAorCQkJJm1vdnoJKCR0bXAsJkhCKCRzWzFdKSk7CisJCQkmbW92CSgkdG1wLCZEV1AoMCwkdGUsJHRtcCw4KSk7CisJCQkmYW5kCSgkdG1wLDB4MDAwMGZmMDApOworCQkJJnhvcgkoJG91dCwkdG1wKTsKKworCWlmICgkaT09MykgIHsJJHRtcD0kc1syXTsgJm1vdiAoJHNbMV0sJF9fczApOwkJfSMjJWVieAorCWVsc2UgICAgICAgIHsJJm1vdgkoJHRtcCwkc1syXSk7CisJCQkmc2hyCSgkdG1wLDE2KTsJCQl9CisJaWYgKCRpPT0yKSAgewkmYW5kCSgkc1sxXSwweEZGKTsJCQl9IyVlZHhbMl0KKwkJCSZhbmQJKCR0bXAsMHhGRik7CisJCQkmbW92CSgkdG1wLCZEV1AoMCwkdGUsJHRtcCw4KSk7CisJCQkmYW5kCSgkdG1wLDB4MDBmZjAwMDApOworCQkJJnhvcgkoJG91dCwkdG1wKTsKKworCWlmICgkaT09MykgIHsJJHRtcD0kc1szXTsgJm1vdiAoJHNbMl0sJF9fczEpOwkJfSMjJWVjeAorCWVsc2lmKCRpPT0yKXsJJm1vdnoJKCR0bXAsJkhCKCRzWzNdKSk7CQl9IyVlYnhbMl0KKwllbHNlICAgICAgICB7CSZtb3YJKCR0bXAsJHNbM10pOworCQkJJnNocgkoJHRtcCwyNCk7CQkJfQorCQkJJm1vdgkoJHRtcCwmRFdQKDIsJHRlLCR0bXAsOCkpOworCQkJJmFuZAkoJHRtcCwweGZmMDAwMDAwKTsKKwkJCSZ4b3IJKCRvdXQsJHRtcCk7CisJaWYgKCRpPDIpICAgewkmbW92CSgmRFdQKDQrNCokaSwiZXNwIiksJG91dCk7CX0KKwlpZiAoJGk9PTMpICB7CSZtb3YJKCRzWzNdLCRhY2MpOwkJCX0KK30KKworJmZ1bmN0aW9uX2JlZ2luX0IoIl94ODZfQUVTX2VuY3J5cHQiKTsKKwlpZiAoJHZlcnRpY2FsX3NwaW4pIHsKKwkJIyBJIG5lZWQgaGlnaCBwYXJ0cyBvZiB2b2xhdGlsZSByZWdpc3RlcnMgdG8gYmUgYWNjZXNzaWJsZS4uLgorCQkmZXhjaAkoJHMxPSJlZGkiLCRrZXk9ImVieCIpOworCQkmbW92CSgkczI9ImVzaSIsJGFjYz0iZWN4Iik7CisJfQorCisJIyBub3RlIHRoYXQgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIGFsbG9jYXRlIHN0YWNrIGZyYW1lIGZvciBtZSEKKwkmbW92CSgkX19rZXksJGtleSk7CQkJIyBzYXZlIGtleQorCisJJnhvcgkoJHMwLCZEV1AoMCwka2V5KSk7CQkjIHhvciB3aXRoIGtleQorCSZ4b3IJKCRzMSwmRFdQKDQsJGtleSkpOworCSZ4b3IJKCRzMiwmRFdQKDgsJGtleSkpOworCSZ4b3IJKCRzMywmRFdQKDEyLCRrZXkpKTsKKworCSZtb3YJKCRhY2MsJkRXUCgyNDAsJGtleSkpOwkJIyBsb2FkIGtleS0+cm91bmRzCisKKwlpZiAoJHNtYWxsX2Zvb3RwcmludCkgeworCSAgICAmbGVhCSgkYWNjLCZEV1AoLTIsJGFjYywkYWNjKSk7CisJICAgICZsZWEJKCRhY2MsJkRXUCgwLCRrZXksJGFjYyw4KSk7CisJICAgICZtb3YJKCRfX2VuZCwkYWNjKTsJCSMgZW5kIG9mIGtleSBzY2hlZHVsZQorCisJICAgICZzZXRfbGFiZWwoImxvb3AiLDE2KTsKKwkJaWYgKCR2ZXJ0aWNhbF9zcGluKSB7CisJCSAgICAmZW5jdmVydCgkdGJsLCRzMCwkczEsJHMyLCRzMyk7CisJCX0gZWxzZSB7CisJCSAgICAmZW5jc3RlcCgwLCR0YmwsJHMwLCRzMSwkczIsJHMzKTsKKwkJICAgICZlbmNzdGVwKDEsJHRibCwkczEsJHMyLCRzMywkczApOworCQkgICAgJmVuY3N0ZXAoMiwkdGJsLCRzMiwkczMsJHMwLCRzMSk7CisJCSAgICAmZW5jc3RlcCgzLCR0YmwsJHMzLCRzMCwkczEsJHMyKTsKKwkJfQorCQkmYWRkCSgka2V5LDE2KTsJCSMgYWR2YW5jZSByZF9rZXkKKwkJJnhvcgkoJHMwLCZEV1AoMCwka2V5KSk7CisJCSZ4b3IJKCRzMSwmRFdQKDQsJGtleSkpOworCQkmeG9yCSgkczIsJkRXUCg4LCRrZXkpKTsKKwkJJnhvcgkoJHMzLCZEV1AoMTIsJGtleSkpOworCSAgICAmY21wCSgka2V5LCRfX2VuZCk7CisJICAgICZtb3YJKCRfX2tleSwka2V5KTsKKwkgICAgJmpiCQkoJmxhYmVsKCJsb29wIikpOworCX0KKwllbHNlIHsKKwkgICAgJmNtcAkoJGFjYywxMCk7CisJICAgICZqbGUJKCZsYWJlbCgiMTByb3VuZHMiKSk7CisJICAgICZjbXAJKCRhY2MsMTIpOworCSAgICAmamxlCSgmbGFiZWwoIjEycm91bmRzIikpOworCisJJnNldF9sYWJlbCgiMTRyb3VuZHMiLDQpOworCSAgICBmb3IgKCRpPTE7JGk8MzskaSsrKSB7CisJCWlmICgkdmVydGljYWxfc3BpbikgeworCQkgICAgJmVuY3ZlcnQoJHRibCwkczAsJHMxLCRzMiwkczMpOworCQl9IGVsc2UgeworCQkgICAgJmVuY3N0ZXAoMCwkdGJsLCRzMCwkczEsJHMyLCRzMyk7CisJCSAgICAmZW5jc3RlcCgxLCR0YmwsJHMxLCRzMiwkczMsJHMwKTsKKwkJICAgICZlbmNzdGVwKDIsJHRibCwkczIsJHMzLCRzMCwkczEpOworCQkgICAgJmVuY3N0ZXAoMywkdGJsLCRzMywkczAsJHMxLCRzMik7CisJCX0KKwkJJnhvcgkoJHMwLCZEV1AoMTYqJGkrMCwka2V5KSk7CisJCSZ4b3IJKCRzMSwmRFdQKDE2KiRpKzQsJGtleSkpOworCQkmeG9yCSgkczIsJkRXUCgxNiokaSs4LCRrZXkpKTsKKwkJJnhvcgkoJHMzLCZEV1AoMTYqJGkrMTIsJGtleSkpOworCSAgICB9CisJICAgICZhZGQJKCRrZXksMzIpOworCSAgICAmbW92CSgkX19rZXksJGtleSk7CQkjIGFkdmFuY2UgcmRfa2V5CisJJnNldF9sYWJlbCgiMTJyb3VuZHMiLDQpOworCSAgICBmb3IgKCRpPTE7JGk8MzskaSsrKSB7CisJCWlmICgkdmVydGljYWxfc3BpbikgeworCQkgICAgJmVuY3ZlcnQoJHRibCwkczAsJHMxLCRzMiwkczMpOworCQl9IGVsc2UgeworCQkgICAgJmVuY3N0ZXAoMCwkdGJsLCRzMCwkczEsJHMyLCRzMyk7CisJCSAgICAmZW5jc3RlcCgxLCR0YmwsJHMxLCRzMiwkczMsJHMwKTsKKwkJICAgICZlbmNzdGVwKDIsJHRibCwkczIsJHMzLCRzMCwkczEpOworCQkgICAgJmVuY3N0ZXAoMywkdGJsLCRzMywkczAsJHMxLCRzMik7CisJCX0KKwkJJnhvcgkoJHMwLCZEV1AoMTYqJGkrMCwka2V5KSk7CisJCSZ4b3IJKCRzMSwmRFdQKDE2KiRpKzQsJGtleSkpOworCQkmeG9yCSgkczIsJkRXUCgxNiokaSs4LCRrZXkpKTsKKwkJJnhvcgkoJHMzLCZEV1AoMTYqJGkrMTIsJGtleSkpOworCSAgICB9CisJICAgICZhZGQJKCRrZXksMzIpOworCSAgICAmbW92CSgkX19rZXksJGtleSk7CQkjIGFkdmFuY2UgcmRfa2V5CisJJnNldF9sYWJlbCgiMTByb3VuZHMiLDQpOworCSAgICBmb3IgKCRpPTE7JGk8MTA7JGkrKykgeworCQlpZiAoJHZlcnRpY2FsX3NwaW4pIHsKKwkJICAgICZlbmN2ZXJ0KCR0YmwsJHMwLCRzMSwkczIsJHMzKTsKKwkJfSBlbHNlIHsKKwkJICAgICZlbmNzdGVwKDAsJHRibCwkczAsJHMxLCRzMiwkczMpOworCQkgICAgJmVuY3N0ZXAoMSwkdGJsLCRzMSwkczIsJHMzLCRzMCk7CisJCSAgICAmZW5jc3RlcCgyLCR0YmwsJHMyLCRzMywkczAsJHMxKTsKKwkJICAgICZlbmNzdGVwKDMsJHRibCwkczMsJHMwLCRzMSwkczIpOworCQl9CisJCSZ4b3IJKCRzMCwmRFdQKDE2KiRpKzAsJGtleSkpOworCQkmeG9yCSgkczEsJkRXUCgxNiokaSs0LCRrZXkpKTsKKwkJJnhvcgkoJHMyLCZEV1AoMTYqJGkrOCwka2V5KSk7CisJCSZ4b3IJKCRzMywmRFdQKDE2KiRpKzEyLCRrZXkpKTsKKwkgICAgfQorCX0KKworCWlmICgkdmVydGljYWxfc3BpbikgeworCSAgICAjICJyZWluY2FybmF0ZSIgc29tZSByZWdpc3RlcnMgZm9yICJob3Jpem9udGFsIiBzcGluLi4uCisJICAgICZtb3YJKCRzMT0iZWJ4Iiwka2V5PSJlZGkiKTsKKwkgICAgJm1vdgkoJHMyPSJlY3giLCRhY2M9ImVzaSIpOworCX0KKwkmZW5jbGFzdCgwLCR0YmwsJHMwLCRzMSwkczIsJHMzKTsKKwkmZW5jbGFzdCgxLCR0YmwsJHMxLCRzMiwkczMsJHMwKTsKKwkmZW5jbGFzdCgyLCR0YmwsJHMyLCRzMywkczAsJHMxKTsKKwkmZW5jbGFzdCgzLCR0YmwsJHMzLCRzMCwkczEsJHMyKTsKKworCSZhZGQJKCRrZXksJHNtYWxsX2Zvb3RwcmludD8xNjoxNjApOworCSZ4b3IJKCRzMCwmRFdQKDAsJGtleSkpOworCSZ4b3IJKCRzMSwmRFdQKDQsJGtleSkpOworCSZ4b3IJKCRzMiwmRFdQKDgsJGtleSkpOworCSZ4b3IJKCRzMywmRFdQKDEyLCRrZXkpKTsKKworCSZyZXQJKCk7CisKKyZzZXRfbGFiZWwoIkFFU19UZSIsNjQpOwkjIFllcyEgSSBrZWVwIGl0IGluIHRoZSBjb2RlIHNlZ21lbnQhCisJJl9kYXRhX3dvcmQoMHhhNTYzNjNjNiwgMHg4NDdjN2NmOCwgMHg5OTc3NzdlZSwgMHg4ZDdiN2JmNik7CisJJl9kYXRhX3dvcmQoMHgwZGYyZjJmZiwgMHhiZDZiNmJkNiwgMHhiMTZmNmZkZSwgMHg1NGM1YzU5MSk7CisJJl9kYXRhX3dvcmQoMHg1MDMwMzA2MCwgMHgwMzAxMDEwMiwgMHhhOTY3NjdjZSwgMHg3ZDJiMmI1Nik7CisJJl9kYXRhX3dvcmQoMHgxOWZlZmVlNywgMHg2MmQ3ZDdiNSwgMHhlNmFiYWI0ZCwgMHg5YTc2NzZlYyk7CisJJl9kYXRhX3dvcmQoMHg0NWNhY2E4ZiwgMHg5ZDgyODIxZiwgMHg0MGM5Yzk4OSwgMHg4NzdkN2RmYSk7CisJJl9kYXRhX3dvcmQoMHgxNWZhZmFlZiwgMHhlYjU5NTliMiwgMHhjOTQ3NDc4ZSwgMHgwYmYwZjBmYik7CisJJl9kYXRhX3dvcmQoMHhlY2FkYWQ0MSwgMHg2N2Q0ZDRiMywgMHhmZGEyYTI1ZiwgMHhlYWFmYWY0NSk7CisJJl9kYXRhX3dvcmQoMHhiZjljOWMyMywgMHhmN2E0YTQ1MywgMHg5NjcyNzJlNCwgMHg1YmMwYzA5Yik7CisJJl9kYXRhX3dvcmQoMHhjMmI3Yjc3NSwgMHgxY2ZkZmRlMSwgMHhhZTkzOTMzZCwgMHg2YTI2MjY0Yyk7CisJJl9kYXRhX3dvcmQoMHg1YTM2MzY2YywgMHg0MTNmM2Y3ZSwgMHgwMmY3ZjdmNSwgMHg0ZmNjY2M4Myk7CisJJl9kYXRhX3dvcmQoMHg1YzM0MzQ2OCwgMHhmNGE1YTU1MSwgMHgzNGU1ZTVkMSwgMHgwOGYxZjFmOSk7CisJJl9kYXRhX3dvcmQoMHg5MzcxNzFlMiwgMHg3M2Q4ZDhhYiwgMHg1MzMxMzE2MiwgMHgzZjE1MTUyYSk7CisJJl9kYXRhX3dvcmQoMHgwYzA0MDQwOCwgMHg1MmM3Yzc5NSwgMHg2NTIzMjM0NiwgMHg1ZWMzYzM5ZCk7CisJJl9kYXRhX3dvcmQoMHgyODE4MTgzMCwgMHhhMTk2OTYzNywgMHgwZjA1MDUwYSwgMHhiNTlhOWEyZik7CisJJl9kYXRhX3dvcmQoMHgwOTA3MDcwZSwgMHgzNjEyMTIyNCwgMHg5YjgwODAxYiwgMHgzZGUyZTJkZik7CisJJl9kYXRhX3dvcmQoMHgyNmViZWJjZCwgMHg2OTI3Mjc0ZSwgMHhjZGIyYjI3ZiwgMHg5Zjc1NzVlYSk7CisJJl9kYXRhX3dvcmQoMHgxYjA5MDkxMiwgMHg5ZTgzODMxZCwgMHg3NDJjMmM1OCwgMHgyZTFhMWEzNCk7CisJJl9kYXRhX3dvcmQoMHgyZDFiMWIzNiwgMHhiMjZlNmVkYywgMHhlZTVhNWFiNCwgMHhmYmEwYTA1Yik7CisJJl9kYXRhX3dvcmQoMHhmNjUyNTJhNCwgMHg0ZDNiM2I3NiwgMHg2MWQ2ZDZiNywgMHhjZWIzYjM3ZCk7CisJJl9kYXRhX3dvcmQoMHg3YjI5Mjk1MiwgMHgzZWUzZTNkZCwgMHg3MTJmMmY1ZSwgMHg5Nzg0ODQxMyk7CisJJl9kYXRhX3dvcmQoMHhmNTUzNTNhNiwgMHg2OGQxZDFiOSwgMHgwMDAwMDAwMCwgMHgyY2VkZWRjMSk7CisJJl9kYXRhX3dvcmQoMHg2MDIwMjA0MCwgMHgxZmZjZmNlMywgMHhjOGIxYjE3OSwgMHhlZDViNWJiNik7CisJJl9kYXRhX3dvcmQoMHhiZTZhNmFkNCwgMHg0NmNiY2I4ZCwgMHhkOWJlYmU2NywgMHg0YjM5Mzk3Mik7CisJJl9kYXRhX3dvcmQoMHhkZTRhNGE5NCwgMHhkNDRjNGM5OCwgMHhlODU4NThiMCwgMHg0YWNmY2Y4NSk7CisJJl9kYXRhX3dvcmQoMHg2YmQwZDBiYiwgMHgyYWVmZWZjNSwgMHhlNWFhYWE0ZiwgMHgxNmZiZmJlZCk7CisJJl9kYXRhX3dvcmQoMHhjNTQzNDM4NiwgMHhkNzRkNGQ5YSwgMHg1NTMzMzM2NiwgMHg5NDg1ODUxMSk7CisJJl9kYXRhX3dvcmQoMHhjZjQ1NDU4YSwgMHgxMGY5ZjllOSwgMHgwNjAyMDIwNCwgMHg4MTdmN2ZmZSk7CisJJl9kYXRhX3dvcmQoMHhmMDUwNTBhMCwgMHg0NDNjM2M3OCwgMHhiYTlmOWYyNSwgMHhlM2E4YTg0Yik7CisJJl9kYXRhX3dvcmQoMHhmMzUxNTFhMiwgMHhmZWEzYTM1ZCwgMHhjMDQwNDA4MCwgMHg4YThmOGYwNSk7CisJJl9kYXRhX3dvcmQoMHhhZDkyOTIzZiwgMHhiYzlkOWQyMSwgMHg0ODM4Mzg3MCwgMHgwNGY1ZjVmMSk7CisJJl9kYXRhX3dvcmQoMHhkZmJjYmM2MywgMHhjMWI2YjY3NywgMHg3NWRhZGFhZiwgMHg2MzIxMjE0Mik7CisJJl9kYXRhX3dvcmQoMHgzMDEwMTAyMCwgMHgxYWZmZmZlNSwgMHgwZWYzZjNmZCwgMHg2ZGQyZDJiZik7CisJJl9kYXRhX3dvcmQoMHg0Y2NkY2Q4MSwgMHgxNDBjMGMxOCwgMHgzNTEzMTMyNiwgMHgyZmVjZWNjMyk7CisJJl9kYXRhX3dvcmQoMHhlMTVmNWZiZSwgMHhhMjk3OTczNSwgMHhjYzQ0NDQ4OCwgMHgzOTE3MTcyZSk7CisJJl9kYXRhX3dvcmQoMHg1N2M0YzQ5MywgMHhmMmE3YTc1NSwgMHg4MjdlN2VmYywgMHg0NzNkM2Q3YSk7CisJJl9kYXRhX3dvcmQoMHhhYzY0NjRjOCwgMHhlNzVkNWRiYSwgMHgyYjE5MTkzMiwgMHg5NTczNzNlNik7CisJJl9kYXRhX3dvcmQoMHhhMDYwNjBjMCwgMHg5ODgxODExOSwgMHhkMTRmNGY5ZSwgMHg3ZmRjZGNhMyk7CisJJl9kYXRhX3dvcmQoMHg2NjIyMjI0NCwgMHg3ZTJhMmE1NCwgMHhhYjkwOTAzYiwgMHg4Mzg4ODgwYik7CisJJl9kYXRhX3dvcmQoMHhjYTQ2NDY4YywgMHgyOWVlZWVjNywgMHhkM2I4Yjg2YiwgMHgzYzE0MTQyOCk7CisJJl9kYXRhX3dvcmQoMHg3OWRlZGVhNywgMHhlMjVlNWViYywgMHgxZDBiMGIxNiwgMHg3NmRiZGJhZCk7CisJJl9kYXRhX3dvcmQoMHgzYmUwZTBkYiwgMHg1NjMyMzI2NCwgMHg0ZTNhM2E3NCwgMHgxZTBhMGExNCk7CisJJl9kYXRhX3dvcmQoMHhkYjQ5NDk5MiwgMHgwYTA2MDYwYywgMHg2YzI0MjQ0OCwgMHhlNDVjNWNiOCk7CisJJl9kYXRhX3dvcmQoMHg1ZGMyYzI5ZiwgMHg2ZWQzZDNiZCwgMHhlZmFjYWM0MywgMHhhNjYyNjJjNCk7CisJJl9kYXRhX3dvcmQoMHhhODkxOTEzOSwgMHhhNDk1OTUzMSwgMHgzN2U0ZTRkMywgMHg4Yjc5NzlmMik7CisJJl9kYXRhX3dvcmQoMHgzMmU3ZTdkNSwgMHg0M2M4Yzg4YiwgMHg1OTM3Mzc2ZSwgMHhiNzZkNmRkYSk7CisJJl9kYXRhX3dvcmQoMHg4YzhkOGQwMSwgMHg2NGQ1ZDViMSwgMHhkMjRlNGU5YywgMHhlMGE5YTk0OSk7CisJJl9kYXRhX3dvcmQoMHhiNDZjNmNkOCwgMHhmYTU2NTZhYywgMHgwN2Y0ZjRmMywgMHgyNWVhZWFjZik7CisJJl9kYXRhX3dvcmQoMHhhZjY1NjVjYSwgMHg4ZTdhN2FmNCwgMHhlOWFlYWU0NywgMHgxODA4MDgxMCk7CisJJl9kYXRhX3dvcmQoMHhkNWJhYmE2ZiwgMHg4ODc4NzhmMCwgMHg2ZjI1MjU0YSwgMHg3MjJlMmU1Yyk7CisJJl9kYXRhX3dvcmQoMHgyNDFjMWMzOCwgMHhmMWE2YTY1NywgMHhjN2I0YjQ3MywgMHg1MWM2YzY5Nyk7CisJJl9kYXRhX3dvcmQoMHgyM2U4ZThjYiwgMHg3Y2RkZGRhMSwgMHg5Yzc0NzRlOCwgMHgyMTFmMWYzZSk7CisJJl9kYXRhX3dvcmQoMHhkZDRiNGI5NiwgMHhkY2JkYmQ2MSwgMHg4NjhiOGIwZCwgMHg4NThhOGEwZik7CisJJl9kYXRhX3dvcmQoMHg5MDcwNzBlMCwgMHg0MjNlM2U3YywgMHhjNGI1YjU3MSwgMHhhYTY2NjZjYyk7CisJJl9kYXRhX3dvcmQoMHhkODQ4NDg5MCwgMHgwNTAzMDMwNiwgMHgwMWY2ZjZmNywgMHgxMjBlMGUxYyk7CisJJl9kYXRhX3dvcmQoMHhhMzYxNjFjMiwgMHg1ZjM1MzU2YSwgMHhmOTU3NTdhZSwgMHhkMGI5Yjk2OSk7CisJJl9kYXRhX3dvcmQoMHg5MTg2ODYxNywgMHg1OGMxYzE5OSwgMHgyNzFkMWQzYSwgMHhiOTllOWUyNyk7CisJJl9kYXRhX3dvcmQoMHgzOGUxZTFkOSwgMHgxM2Y4ZjhlYiwgMHhiMzk4OTgyYiwgMHgzMzExMTEyMik7CisJJl9kYXRhX3dvcmQoMHhiYjY5NjlkMiwgMHg3MGQ5ZDlhOSwgMHg4OThlOGUwNywgMHhhNzk0OTQzMyk7CisJJl9kYXRhX3dvcmQoMHhiNjliOWIyZCwgMHgyMjFlMWUzYywgMHg5Mjg3ODcxNSwgMHgyMGU5ZTljOSk7CisJJl9kYXRhX3dvcmQoMHg0OWNlY2U4NywgMHhmZjU1NTVhYSwgMHg3ODI4Mjg1MCwgMHg3YWRmZGZhNSk7CisJJl9kYXRhX3dvcmQoMHg4ZjhjOGMwMywgMHhmOGExYTE1OSwgMHg4MDg5ODkwOSwgMHgxNzBkMGQxYSk7CisJJl9kYXRhX3dvcmQoMHhkYWJmYmY2NSwgMHgzMWU2ZTZkNywgMHhjNjQyNDI4NCwgMHhiODY4NjhkMCk7CisJJl9kYXRhX3dvcmQoMHhjMzQxNDE4MiwgMHhiMDk5OTkyOSwgMHg3NzJkMmQ1YSwgMHgxMTBmMGYxZSk7CisJJl9kYXRhX3dvcmQoMHhjYmIwYjA3YiwgMHhmYzU0NTRhOCwgMHhkNmJiYmI2ZCwgMHgzYTE2MTYyYyk7CisKKyNUZTQJIyBmb3VyIGNvcGllcyBvZiBUZTQgdG8gY2hvb3NlIGZyb20gdG8gYXZvaWQgTDEgYWxpYXNpbmcKKwkmZGF0YV9ieXRlKDB4NjMsIDB4N2MsIDB4NzcsIDB4N2IsIDB4ZjIsIDB4NmIsIDB4NmYsIDB4YzUpOworCSZkYXRhX2J5dGUoMHgzMCwgMHgwMSwgMHg2NywgMHgyYiwgMHhmZSwgMHhkNywgMHhhYiwgMHg3Nik7CisJJmRhdGFfYnl0ZSgweGNhLCAweDgyLCAweGM5LCAweDdkLCAweGZhLCAweDU5LCAweDQ3LCAweGYwKTsKKwkmZGF0YV9ieXRlKDB4YWQsIDB4ZDQsIDB4YTIsIDB4YWYsIDB4OWMsIDB4YTQsIDB4NzIsIDB4YzApOworCSZkYXRhX2J5dGUoMHhiNywgMHhmZCwgMHg5MywgMHgyNiwgMHgzNiwgMHgzZiwgMHhmNywgMHhjYyk7CisJJmRhdGFfYnl0ZSgweDM0LCAweGE1LCAweGU1LCAweGYxLCAweDcxLCAweGQ4LCAweDMxLCAweDE1KTsKKwkmZGF0YV9ieXRlKDB4MDQsIDB4YzcsIDB4MjMsIDB4YzMsIDB4MTgsIDB4OTYsIDB4MDUsIDB4OWEpOworCSZkYXRhX2J5dGUoMHgwNywgMHgxMiwgMHg4MCwgMHhlMiwgMHhlYiwgMHgyNywgMHhiMiwgMHg3NSk7CisJJmRhdGFfYnl0ZSgweDA5LCAweDgzLCAweDJjLCAweDFhLCAweDFiLCAweDZlLCAweDVhLCAweGEwKTsKKwkmZGF0YV9ieXRlKDB4NTIsIDB4M2IsIDB4ZDYsIDB4YjMsIDB4MjksIDB4ZTMsIDB4MmYsIDB4ODQpOworCSZkYXRhX2J5dGUoMHg1MywgMHhkMSwgMHgwMCwgMHhlZCwgMHgyMCwgMHhmYywgMHhiMSwgMHg1Yik7CisJJmRhdGFfYnl0ZSgweDZhLCAweGNiLCAweGJlLCAweDM5LCAweDRhLCAweDRjLCAweDU4LCAweGNmKTsKKwkmZGF0YV9ieXRlKDB4ZDAsIDB4ZWYsIDB4YWEsIDB4ZmIsIDB4NDMsIDB4NGQsIDB4MzMsIDB4ODUpOworCSZkYXRhX2J5dGUoMHg0NSwgMHhmOSwgMHgwMiwgMHg3ZiwgMHg1MCwgMHgzYywgMHg5ZiwgMHhhOCk7CisJJmRhdGFfYnl0ZSgweDUxLCAweGEzLCAweDQwLCAweDhmLCAweDkyLCAweDlkLCAweDM4LCAweGY1KTsKKwkmZGF0YV9ieXRlKDB4YmMsIDB4YjYsIDB4ZGEsIDB4MjEsIDB4MTAsIDB4ZmYsIDB4ZjMsIDB4ZDIpOworCSZkYXRhX2J5dGUoMHhjZCwgMHgwYywgMHgxMywgMHhlYywgMHg1ZiwgMHg5NywgMHg0NCwgMHgxNyk7CisJJmRhdGFfYnl0ZSgweGM0LCAweGE3LCAweDdlLCAweDNkLCAweDY0LCAweDVkLCAweDE5LCAweDczKTsKKwkmZGF0YV9ieXRlKDB4NjAsIDB4ODEsIDB4NGYsIDB4ZGMsIDB4MjIsIDB4MmEsIDB4OTAsIDB4ODgpOworCSZkYXRhX2J5dGUoMHg0NiwgMHhlZSwgMHhiOCwgMHgxNCwgMHhkZSwgMHg1ZSwgMHgwYiwgMHhkYik7CisJJmRhdGFfYnl0ZSgweGUwLCAweDMyLCAweDNhLCAweDBhLCAweDQ5LCAweDA2LCAweDI0LCAweDVjKTsKKwkmZGF0YV9ieXRlKDB4YzIsIDB4ZDMsIDB4YWMsIDB4NjIsIDB4OTEsIDB4OTUsIDB4ZTQsIDB4NzkpOworCSZkYXRhX2J5dGUoMHhlNywgMHhjOCwgMHgzNywgMHg2ZCwgMHg4ZCwgMHhkNSwgMHg0ZSwgMHhhOSk7CisJJmRhdGFfYnl0ZSgweDZjLCAweDU2LCAweGY0LCAweGVhLCAweDY1LCAweDdhLCAweGFlLCAweDA4KTsKKwkmZGF0YV9ieXRlKDB4YmEsIDB4NzgsIDB4MjUsIDB4MmUsIDB4MWMsIDB4YTYsIDB4YjQsIDB4YzYpOworCSZkYXRhX2J5dGUoMHhlOCwgMHhkZCwgMHg3NCwgMHgxZiwgMHg0YiwgMHhiZCwgMHg4YiwgMHg4YSk7CisJJmRhdGFfYnl0ZSgweDcwLCAweDNlLCAweGI1LCAweDY2LCAweDQ4LCAweDAzLCAweGY2LCAweDBlKTsKKwkmZGF0YV9ieXRlKDB4NjEsIDB4MzUsIDB4NTcsIDB4YjksIDB4ODYsIDB4YzEsIDB4MWQsIDB4OWUpOworCSZkYXRhX2J5dGUoMHhlMSwgMHhmOCwgMHg5OCwgMHgxMSwgMHg2OSwgMHhkOSwgMHg4ZSwgMHg5NCk7CisJJmRhdGFfYnl0ZSgweDliLCAweDFlLCAweDg3LCAweGU5LCAweGNlLCAweDU1LCAweDI4LCAweGRmKTsKKwkmZGF0YV9ieXRlKDB4OGMsIDB4YTEsIDB4ODksIDB4MGQsIDB4YmYsIDB4ZTYsIDB4NDIsIDB4NjgpOworCSZkYXRhX2J5dGUoMHg0MSwgMHg5OSwgMHgyZCwgMHgwZiwgMHhiMCwgMHg1NCwgMHhiYiwgMHgxNik7CisKKwkmZGF0YV9ieXRlKDB4NjMsIDB4N2MsIDB4NzcsIDB4N2IsIDB4ZjIsIDB4NmIsIDB4NmYsIDB4YzUpOworCSZkYXRhX2J5dGUoMHgzMCwgMHgwMSwgMHg2NywgMHgyYiwgMHhmZSwgMHhkNywgMHhhYiwgMHg3Nik7CisJJmRhdGFfYnl0ZSgweGNhLCAweDgyLCAweGM5LCAweDdkLCAweGZhLCAweDU5LCAweDQ3LCAweGYwKTsKKwkmZGF0YV9ieXRlKDB4YWQsIDB4ZDQsIDB4YTIsIDB4YWYsIDB4OWMsIDB4YTQsIDB4NzIsIDB4YzApOworCSZkYXRhX2J5dGUoMHhiNywgMHhmZCwgMHg5MywgMHgyNiwgMHgzNiwgMHgzZiwgMHhmNywgMHhjYyk7CisJJmRhdGFfYnl0ZSgweDM0LCAweGE1LCAweGU1LCAweGYxLCAweDcxLCAweGQ4LCAweDMxLCAweDE1KTsKKwkmZGF0YV9ieXRlKDB4MDQsIDB4YzcsIDB4MjMsIDB4YzMsIDB4MTgsIDB4OTYsIDB4MDUsIDB4OWEpOworCSZkYXRhX2J5dGUoMHgwNywgMHgxMiwgMHg4MCwgMHhlMiwgMHhlYiwgMHgyNywgMHhiMiwgMHg3NSk7CisJJmRhdGFfYnl0ZSgweDA5LCAweDgzLCAweDJjLCAweDFhLCAweDFiLCAweDZlLCAweDVhLCAweGEwKTsKKwkmZGF0YV9ieXRlKDB4NTIsIDB4M2IsIDB4ZDYsIDB4YjMsIDB4MjksIDB4ZTMsIDB4MmYsIDB4ODQpOworCSZkYXRhX2J5dGUoMHg1MywgMHhkMSwgMHgwMCwgMHhlZCwgMHgyMCwgMHhmYywgMHhiMSwgMHg1Yik7CisJJmRhdGFfYnl0ZSgweDZhLCAweGNiLCAweGJlLCAweDM5LCAweDRhLCAweDRjLCAweDU4LCAweGNmKTsKKwkmZGF0YV9ieXRlKDB4ZDAsIDB4ZWYsIDB4YWEsIDB4ZmIsIDB4NDMsIDB4NGQsIDB4MzMsIDB4ODUpOworCSZkYXRhX2J5dGUoMHg0NSwgMHhmOSwgMHgwMiwgMHg3ZiwgMHg1MCwgMHgzYywgMHg5ZiwgMHhhOCk7CisJJmRhdGFfYnl0ZSgweDUxLCAweGEzLCAweDQwLCAweDhmLCAweDkyLCAweDlkLCAweDM4LCAweGY1KTsKKwkmZGF0YV9ieXRlKDB4YmMsIDB4YjYsIDB4ZGEsIDB4MjEsIDB4MTAsIDB4ZmYsIDB4ZjMsIDB4ZDIpOworCSZkYXRhX2J5dGUoMHhjZCwgMHgwYywgMHgxMywgMHhlYywgMHg1ZiwgMHg5NywgMHg0NCwgMHgxNyk7CisJJmRhdGFfYnl0ZSgweGM0LCAweGE3LCAweDdlLCAweDNkLCAweDY0LCAweDVkLCAweDE5LCAweDczKTsKKwkmZGF0YV9ieXRlKDB4NjAsIDB4ODEsIDB4NGYsIDB4ZGMsIDB4MjIsIDB4MmEsIDB4OTAsIDB4ODgpOworCSZkYXRhX2J5dGUoMHg0NiwgMHhlZSwgMHhiOCwgMHgxNCwgMHhkZSwgMHg1ZSwgMHgwYiwgMHhkYik7CisJJmRhdGFfYnl0ZSgweGUwLCAweDMyLCAweDNhLCAweDBhLCAweDQ5LCAweDA2LCAweDI0LCAweDVjKTsKKwkmZGF0YV9ieXRlKDB4YzIsIDB4ZDMsIDB4YWMsIDB4NjIsIDB4OTEsIDB4OTUsIDB4ZTQsIDB4NzkpOworCSZkYXRhX2J5dGUoMHhlNywgMHhjOCwgMHgzNywgMHg2ZCwgMHg4ZCwgMHhkNSwgMHg0ZSwgMHhhOSk7CisJJmRhdGFfYnl0ZSgweDZjLCAweDU2LCAweGY0LCAweGVhLCAweDY1LCAweDdhLCAweGFlLCAweDA4KTsKKwkmZGF0YV9ieXRlKDB4YmEsIDB4NzgsIDB4MjUsIDB4MmUsIDB4MWMsIDB4YTYsIDB4YjQsIDB4YzYpOworCSZkYXRhX2J5dGUoMHhlOCwgMHhkZCwgMHg3NCwgMHgxZiwgMHg0YiwgMHhiZCwgMHg4YiwgMHg4YSk7CisJJmRhdGFfYnl0ZSgweDcwLCAweDNlLCAweGI1LCAweDY2LCAweDQ4LCAweDAzLCAweGY2LCAweDBlKTsKKwkmZGF0YV9ieXRlKDB4NjEsIDB4MzUsIDB4NTcsIDB4YjksIDB4ODYsIDB4YzEsIDB4MWQsIDB4OWUpOworCSZkYXRhX2J5dGUoMHhlMSwgMHhmOCwgMHg5OCwgMHgxMSwgMHg2OSwgMHhkOSwgMHg4ZSwgMHg5NCk7CisJJmRhdGFfYnl0ZSgweDliLCAweDFlLCAweDg3LCAweGU5LCAweGNlLCAweDU1LCAweDI4LCAweGRmKTsKKwkmZGF0YV9ieXRlKDB4OGMsIDB4YTEsIDB4ODksIDB4MGQsIDB4YmYsIDB4ZTYsIDB4NDIsIDB4NjgpOworCSZkYXRhX2J5dGUoMHg0MSwgMHg5OSwgMHgyZCwgMHgwZiwgMHhiMCwgMHg1NCwgMHhiYiwgMHgxNik7CisKKwkmZGF0YV9ieXRlKDB4NjMsIDB4N2MsIDB4NzcsIDB4N2IsIDB4ZjIsIDB4NmIsIDB4NmYsIDB4YzUpOworCSZkYXRhX2J5dGUoMHgzMCwgMHgwMSwgMHg2NywgMHgyYiwgMHhmZSwgMHhkNywgMHhhYiwgMHg3Nik7CisJJmRhdGFfYnl0ZSgweGNhLCAweDgyLCAweGM5LCAweDdkLCAweGZhLCAweDU5LCAweDQ3LCAweGYwKTsKKwkmZGF0YV9ieXRlKDB4YWQsIDB4ZDQsIDB4YTIsIDB4YWYsIDB4OWMsIDB4YTQsIDB4NzIsIDB4YzApOworCSZkYXRhX2J5dGUoMHhiNywgMHhmZCwgMHg5MywgMHgyNiwgMHgzNiwgMHgzZiwgMHhmNywgMHhjYyk7CisJJmRhdGFfYnl0ZSgweDM0LCAweGE1LCAweGU1LCAweGYxLCAweDcxLCAweGQ4LCAweDMxLCAweDE1KTsKKwkmZGF0YV9ieXRlKDB4MDQsIDB4YzcsIDB4MjMsIDB4YzMsIDB4MTgsIDB4OTYsIDB4MDUsIDB4OWEpOworCSZkYXRhX2J5dGUoMHgwNywgMHgxMiwgMHg4MCwgMHhlMiwgMHhlYiwgMHgyNywgMHhiMiwgMHg3NSk7CisJJmRhdGFfYnl0ZSgweDA5LCAweDgzLCAweDJjLCAweDFhLCAweDFiLCAweDZlLCAweDVhLCAweGEwKTsKKwkmZGF0YV9ieXRlKDB4NTIsIDB4M2IsIDB4ZDYsIDB4YjMsIDB4MjksIDB4ZTMsIDB4MmYsIDB4ODQpOworCSZkYXRhX2J5dGUoMHg1MywgMHhkMSwgMHgwMCwgMHhlZCwgMHgyMCwgMHhmYywgMHhiMSwgMHg1Yik7CisJJmRhdGFfYnl0ZSgweDZhLCAweGNiLCAweGJlLCAweDM5LCAweDRhLCAweDRjLCAweDU4LCAweGNmKTsKKwkmZGF0YV9ieXRlKDB4ZDAsIDB4ZWYsIDB4YWEsIDB4ZmIsIDB4NDMsIDB4NGQsIDB4MzMsIDB4ODUpOworCSZkYXRhX2J5dGUoMHg0NSwgMHhmOSwgMHgwMiwgMHg3ZiwgMHg1MCwgMHgzYywgMHg5ZiwgMHhhOCk7CisJJmRhdGFfYnl0ZSgweDUxLCAweGEzLCAweDQwLCAweDhmLCAweDkyLCAweDlkLCAweDM4LCAweGY1KTsKKwkmZGF0YV9ieXRlKDB4YmMsIDB4YjYsIDB4ZGEsIDB4MjEsIDB4MTAsIDB4ZmYsIDB4ZjMsIDB4ZDIpOworCSZkYXRhX2J5dGUoMHhjZCwgMHgwYywgMHgxMywgMHhlYywgMHg1ZiwgMHg5NywgMHg0NCwgMHgxNyk7CisJJmRhdGFfYnl0ZSgweGM0LCAweGE3LCAweDdlLCAweDNkLCAweDY0LCAweDVkLCAweDE5LCAweDczKTsKKwkmZGF0YV9ieXRlKDB4NjAsIDB4ODEsIDB4NGYsIDB4ZGMsIDB4MjIsIDB4MmEsIDB4OTAsIDB4ODgpOworCSZkYXRhX2J5dGUoMHg0NiwgMHhlZSwgMHhiOCwgMHgxNCwgMHhkZSwgMHg1ZSwgMHgwYiwgMHhkYik7CisJJmRhdGFfYnl0ZSgweGUwLCAweDMyLCAweDNhLCAweDBhLCAweDQ5LCAweDA2LCAweDI0LCAweDVjKTsKKwkmZGF0YV9ieXRlKDB4YzIsIDB4ZDMsIDB4YWMsIDB4NjIsIDB4OTEsIDB4OTUsIDB4ZTQsIDB4NzkpOworCSZkYXRhX2J5dGUoMHhlNywgMHhjOCwgMHgzNywgMHg2ZCwgMHg4ZCwgMHhkNSwgMHg0ZSwgMHhhOSk7CisJJmRhdGFfYnl0ZSgweDZjLCAweDU2LCAweGY0LCAweGVhLCAweDY1LCAweDdhLCAweGFlLCAweDA4KTsKKwkmZGF0YV9ieXRlKDB4YmEsIDB4NzgsIDB4MjUsIDB4MmUsIDB4MWMsIDB4YTYsIDB4YjQsIDB4YzYpOworCSZkYXRhX2J5dGUoMHhlOCwgMHhkZCwgMHg3NCwgMHgxZiwgMHg0YiwgMHhiZCwgMHg4YiwgMHg4YSk7CisJJmRhdGFfYnl0ZSgweDcwLCAweDNlLCAweGI1LCAweDY2LCAweDQ4LCAweDAzLCAweGY2LCAweDBlKTsKKwkmZGF0YV9ieXRlKDB4NjEsIDB4MzUsIDB4NTcsIDB4YjksIDB4ODYsIDB4YzEsIDB4MWQsIDB4OWUpOworCSZkYXRhX2J5dGUoMHhlMSwgMHhmOCwgMHg5OCwgMHgxMSwgMHg2OSwgMHhkOSwgMHg4ZSwgMHg5NCk7CisJJmRhdGFfYnl0ZSgweDliLCAweDFlLCAweDg3LCAweGU5LCAweGNlLCAweDU1LCAweDI4LCAweGRmKTsKKwkmZGF0YV9ieXRlKDB4OGMsIDB4YTEsIDB4ODksIDB4MGQsIDB4YmYsIDB4ZTYsIDB4NDIsIDB4NjgpOworCSZkYXRhX2J5dGUoMHg0MSwgMHg5OSwgMHgyZCwgMHgwZiwgMHhiMCwgMHg1NCwgMHhiYiwgMHgxNik7CisKKwkmZGF0YV9ieXRlKDB4NjMsIDB4N2MsIDB4NzcsIDB4N2IsIDB4ZjIsIDB4NmIsIDB4NmYsIDB4YzUpOworCSZkYXRhX2J5dGUoMHgzMCwgMHgwMSwgMHg2NywgMHgyYiwgMHhmZSwgMHhkNywgMHhhYiwgMHg3Nik7CisJJmRhdGFfYnl0ZSgweGNhLCAweDgyLCAweGM5LCAweDdkLCAweGZhLCAweDU5LCAweDQ3LCAweGYwKTsKKwkmZGF0YV9ieXRlKDB4YWQsIDB4ZDQsIDB4YTIsIDB4YWYsIDB4OWMsIDB4YTQsIDB4NzIsIDB4YzApOworCSZkYXRhX2J5dGUoMHhiNywgMHhmZCwgMHg5MywgMHgyNiwgMHgzNiwgMHgzZiwgMHhmNywgMHhjYyk7CisJJmRhdGFfYnl0ZSgweDM0LCAweGE1LCAweGU1LCAweGYxLCAweDcxLCAweGQ4LCAweDMxLCAweDE1KTsKKwkmZGF0YV9ieXRlKDB4MDQsIDB4YzcsIDB4MjMsIDB4YzMsIDB4MTgsIDB4OTYsIDB4MDUsIDB4OWEpOworCSZkYXRhX2J5dGUoMHgwNywgMHgxMiwgMHg4MCwgMHhlMiwgMHhlYiwgMHgyNywgMHhiMiwgMHg3NSk7CisJJmRhdGFfYnl0ZSgweDA5LCAweDgzLCAweDJjLCAweDFhLCAweDFiLCAweDZlLCAweDVhLCAweGEwKTsKKwkmZGF0YV9ieXRlKDB4NTIsIDB4M2IsIDB4ZDYsIDB4YjMsIDB4MjksIDB4ZTMsIDB4MmYsIDB4ODQpOworCSZkYXRhX2J5dGUoMHg1MywgMHhkMSwgMHgwMCwgMHhlZCwgMHgyMCwgMHhmYywgMHhiMSwgMHg1Yik7CisJJmRhdGFfYnl0ZSgweDZhLCAweGNiLCAweGJlLCAweDM5LCAweDRhLCAweDRjLCAweDU4LCAweGNmKTsKKwkmZGF0YV9ieXRlKDB4ZDAsIDB4ZWYsIDB4YWEsIDB4ZmIsIDB4NDMsIDB4NGQsIDB4MzMsIDB4ODUpOworCSZkYXRhX2J5dGUoMHg0NSwgMHhmOSwgMHgwMiwgMHg3ZiwgMHg1MCwgMHgzYywgMHg5ZiwgMHhhOCk7CisJJmRhdGFfYnl0ZSgweDUxLCAweGEzLCAweDQwLCAweDhmLCAweDkyLCAweDlkLCAweDM4LCAweGY1KTsKKwkmZGF0YV9ieXRlKDB4YmMsIDB4YjYsIDB4ZGEsIDB4MjEsIDB4MTAsIDB4ZmYsIDB4ZjMsIDB4ZDIpOworCSZkYXRhX2J5dGUoMHhjZCwgMHgwYywgMHgxMywgMHhlYywgMHg1ZiwgMHg5NywgMHg0NCwgMHgxNyk7CisJJmRhdGFfYnl0ZSgweGM0LCAweGE3LCAweDdlLCAweDNkLCAweDY0LCAweDVkLCAweDE5LCAweDczKTsKKwkmZGF0YV9ieXRlKDB4NjAsIDB4ODEsIDB4NGYsIDB4ZGMsIDB4MjIsIDB4MmEsIDB4OTAsIDB4ODgpOworCSZkYXRhX2J5dGUoMHg0NiwgMHhlZSwgMHhiOCwgMHgxNCwgMHhkZSwgMHg1ZSwgMHgwYiwgMHhkYik7CisJJmRhdGFfYnl0ZSgweGUwLCAweDMyLCAweDNhLCAweDBhLCAweDQ5LCAweDA2LCAweDI0LCAweDVjKTsKKwkmZGF0YV9ieXRlKDB4YzIsIDB4ZDMsIDB4YWMsIDB4NjIsIDB4OTEsIDB4OTUsIDB4ZTQsIDB4NzkpOworCSZkYXRhX2J5dGUoMHhlNywgMHhjOCwgMHgzNywgMHg2ZCwgMHg4ZCwgMHhkNSwgMHg0ZSwgMHhhOSk7CisJJmRhdGFfYnl0ZSgweDZjLCAweDU2LCAweGY0LCAweGVhLCAweDY1LCAweDdhLCAweGFlLCAweDA4KTsKKwkmZGF0YV9ieXRlKDB4YmEsIDB4NzgsIDB4MjUsIDB4MmUsIDB4MWMsIDB4YTYsIDB4YjQsIDB4YzYpOworCSZkYXRhX2J5dGUoMHhlOCwgMHhkZCwgMHg3NCwgMHgxZiwgMHg0YiwgMHhiZCwgMHg4YiwgMHg4YSk7CisJJmRhdGFfYnl0ZSgweDcwLCAweDNlLCAweGI1LCAweDY2LCAweDQ4LCAweDAzLCAweGY2LCAweDBlKTsKKwkmZGF0YV9ieXRlKDB4NjEsIDB4MzUsIDB4NTcsIDB4YjksIDB4ODYsIDB4YzEsIDB4MWQsIDB4OWUpOworCSZkYXRhX2J5dGUoMHhlMSwgMHhmOCwgMHg5OCwgMHgxMSwgMHg2OSwgMHhkOSwgMHg4ZSwgMHg5NCk7CisJJmRhdGFfYnl0ZSgweDliLCAweDFlLCAweDg3LCAweGU5LCAweGNlLCAweDU1LCAweDI4LCAweGRmKTsKKwkmZGF0YV9ieXRlKDB4OGMsIDB4YTEsIDB4ODksIDB4MGQsIDB4YmYsIDB4ZTYsIDB4NDIsIDB4NjgpOworCSZkYXRhX2J5dGUoMHg0MSwgMHg5OSwgMHgyZCwgMHgwZiwgMHhiMCwgMHg1NCwgMHhiYiwgMHgxNik7CisjcmNvbjoKKwkmZGF0YV93b3JkKDB4MDAwMDAwMDEsIDB4MDAwMDAwMDIsIDB4MDAwMDAwMDQsIDB4MDAwMDAwMDgpOworCSZkYXRhX3dvcmQoMHgwMDAwMDAxMCwgMHgwMDAwMDAyMCwgMHgwMDAwMDA0MCwgMHgwMDAwMDA4MCk7CisJJmRhdGFfd29yZCgweDAwMDAwMDFiLCAweDAwMDAwMDM2LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsKKwkmZGF0YV93b3JkKDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOworJmZ1bmN0aW9uX2VuZF9CKCJfeDg2X0FFU19lbmNyeXB0Iik7CisKKyMgdm9pZCBBRVNfZW5jcnlwdCAoY29uc3Qgdm9pZCAqaW5wLHZvaWQgKm91dCxjb25zdCBBRVNfS0VZICprZXkpOworJmZ1bmN0aW9uX2JlZ2luKCJBRVNfZW5jcnlwdCIpOworCSZtb3YJKCRhY2MsJndwYXJhbSgwKSk7CQkjIGxvYWQgaW5wCisJJm1vdgkoJGtleSwmd3BhcmFtKDIpKTsJCSMgbG9hZCBrZXkKKworCSZtb3YJKCRzMCwiZXNwIik7CisJJnN1YgkoImVzcCIsMzYpOworCSZhbmQJKCJlc3AiLC02NCk7CQkJIyBhbGlnbiB0byBjYWNoZS1saW5lCisKKwkjIHBsYWNlIHN0YWNrIGZyYW1lIGp1c3QgImFib3ZlIiB0aGUga2V5IHNjaGVkdWxlCisJJmxlYQkoJHMxLCZEV1AoLTY0LTYzLCRrZXkpKTsKKwkmc3ViCSgkczEsImVzcCIpOworCSZuZWcJKCRzMSk7CisJJmFuZAkoJHMxLDB4M0MwKTsJIyBtb2R1bG8gMTAyNCwgYnV0IGFsaWduZWQgdG8gY2FjaGUtbGluZQorCSZzdWIJKCJlc3AiLCRzMSk7CisJJmFkZAkoImVzcCIsNCk7CSMgNCBpcyByZXNlcnZlZCBmb3IgY2FsbGVyJ3MgcmV0dXJuIGFkZHJlc3MKKwkmbW92CSgkX2VzcCwkczApOwkJCSMgc2F2ZSBzdGFjayBwb2ludGVyCisKKwkmY2FsbCAgICgmbGFiZWwoInBpY19wb2ludCIpKTsgICAgICAgICAgIyBtYWtlIGl0IFBJQyEKKwkmc2V0X2xhYmVsKCJwaWNfcG9pbnQiKTsKKwkmYmxpbmRwb3AoJHRibCk7CisJJnBpY21ldXAoJHMwLCJPUEVOU1NMX2lhMzJjYXBfUCIsJHRibCwmbGFiZWwoInBpY19wb2ludCIpKSBpZiAoISR4ODZvbmx5KTsKKwkmbGVhICAgICgkdGJsLCZEV1AoJmxhYmVsKCJBRVNfVGUiKS4iLSIuJmxhYmVsKCJwaWNfcG9pbnQiKSwkdGJsKSk7CisKKwkjIHBpY2sgVGU0IGNvcHkgd2hpY2ggY2FuJ3QgIm92ZXJsYXAiIHdpdGggc3RhY2sgZnJhbWUgb3Iga2V5IHNjaGVkdWxlCisJJmxlYQkoJHMxLCZEV1AoNzY4LTQsImVzcCIpKTsKKwkmc3ViCSgkczEsJHRibCk7CisJJmFuZAkoJHMxLDB4MzAwKTsKKwkmbGVhCSgkdGJsLCZEV1AoMjA0OCsxMjgsJHRibCwkczEpKTsKKworCQkJCQlpZiAoISR4ODZvbmx5KSB7CisJJmJ0CSgmRFdQKDAsJHMwKSwyNSk7CSMgY2hlY2sgZm9yIFNTRSBiaXQKKwkmam5jCSgmbGFiZWwoIng4NiIpKTsKKworCSZtb3ZxCSgibW0wIiwmUVdQKDAsJGFjYykpOworCSZtb3ZxCSgibW00IiwmUVdQKDgsJGFjYykpOworCSZjYWxsCSgiX3NzZV9BRVNfZW5jcnlwdF9jb21wYWN0Iik7CisJJm1vdgkoImVzcCIsJF9lc3ApOwkJCSMgcmVzdG9yZSBzdGFjayBwb2ludGVyCisJJm1vdgkoJGFjYywmd3BhcmFtKDEpKTsJCSMgbG9hZCBvdXQKKwkmbW92cQkoJlFXUCgwLCRhY2MpLCJtbTAiKTsJCSMgd3JpdGUgb3V0cHV0IGRhdGEKKwkmbW92cQkoJlFXUCg4LCRhY2MpLCJtbTQiKTsKKwkmZW1tcwkoKTsKKwkmZnVuY3Rpb25fZW5kX0EoKTsKKwkJCQkJfQorCSZzZXRfbGFiZWwoIng4NiIsMTYpOworCSZtb3YJKCRfdGJsLCR0YmwpOworCSZtb3YJKCRzMCwmRFdQKDAsJGFjYykpOwkJIyBsb2FkIGlucHV0IGRhdGEKKwkmbW92CSgkczEsJkRXUCg0LCRhY2MpKTsKKwkmbW92CSgkczIsJkRXUCg4LCRhY2MpKTsKKwkmbW92CSgkczMsJkRXUCgxMiwkYWNjKSk7CisJJmNhbGwJKCJfeDg2X0FFU19lbmNyeXB0X2NvbXBhY3QiKTsKKwkmbW92CSgiZXNwIiwkX2VzcCk7CQkJIyByZXN0b3JlIHN0YWNrIHBvaW50ZXIKKwkmbW92CSgkYWNjLCZ3cGFyYW0oMSkpOwkJIyBsb2FkIG91dAorCSZtb3YJKCZEV1AoMCwkYWNjKSwkczApOwkJIyB3cml0ZSBvdXRwdXQgZGF0YQorCSZtb3YJKCZEV1AoNCwkYWNjKSwkczEpOworCSZtb3YJKCZEV1AoOCwkYWNjKSwkczIpOworCSZtb3YJKCZEV1AoMTIsJGFjYyksJHMzKTsKKyZmdW5jdGlvbl9lbmQoIkFFU19lbmNyeXB0Iik7CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAiQ29tcGFjdCIgYmxvY2sgZnVuY3Rpb24KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworc3ViIGRlY2NvbXBhY3QoKQoreyBteSAkRm4gPSBtb3Y7CisgIHdoaWxlICgkI18+NSkgeyBwb3AoQF8pOyAkRm49c3Vie307IH0KKyAgbXkgKCRpLCR0ZCxAcyk9QF87CisgIG15ICR0bXAgPSAka2V5OworICBteSAkb3V0ID0gJGk9PTM/JHNbMF06JGFjYzsKKworCSMgJEZuIGlzIHVzZWQgaW4gZmlyc3QgY29tcGFjdCByb3VuZCBhbmQgaXRzIHB1cnBvc2UgaXMgdG8KKwkjIHZvaWQgcmVzdG9yYXRpb24gb2Ygc29tZSB2YWx1ZXMgZnJvbSBzdGFjaywgc28gdGhhdCBhZnRlcgorCSMgNHhkZWNjb21wYWN0IHdpdGggZXh0cmEgYXJndW1lbnQgJGtleSwgJHMwIGFuZCAkczEgdmFsdWVzCisJIyBhcmUgbGVmdCB0aGVyZS4uLgorCWlmKCRpPT0zKSAgIHsJJiRGbgkoJGtleSwkX19rZXkpOwkJCX0KKwllbHNlICAgICAgICB7CSZtb3YJKCRvdXQsJHNbMF0pOwkJCX0KKwkJCSZhbmQJKCRvdXQsMHhGRik7CisJCQkmbW92egkoJG91dCwmQlAoLTEyOCwkdGQsJG91dCwxKSk7CisKKwlpZiAoJGk9PTMpICB7CSR0bXA9JHNbMV07CQkJCX0KKwkJCSZtb3Z6CSgkdG1wLCZIQigkc1sxXSkpOworCQkJJm1vdnoJKCR0bXAsJkJQKC0xMjgsJHRkLCR0bXAsMSkpOworCQkJJnNobAkoJHRtcCw4KTsKKwkJCSZ4b3IJKCRvdXQsJHRtcCk7CisKKwlpZiAoJGk9PTMpICB7CSR0bXA9JHNbMl07ICZtb3YgKCRzWzFdLCRhY2MpOwkJfQorCWVsc2UgICAgICAgIHsJbW92CSgkdG1wLCRzWzJdKTsJCQl9CisJCQkmc2hyCSgkdG1wLDE2KTsKKwkJCSZhbmQJKCR0bXAsMHhGRik7CisJCQkmbW92egkoJHRtcCwmQlAoLTEyOCwkdGQsJHRtcCwxKSk7CisJCQkmc2hsCSgkdG1wLDE2KTsKKwkJCSZ4b3IJKCRvdXQsJHRtcCk7CisKKwlpZiAoJGk9PTMpICB7CSR0bXA9JHNbM107ICYkRm4gKCRzWzJdLCRfX3MxKTsJCX0KKwllbHNlICAgICAgICB7CSZtb3YJKCR0bXAsJHNbM10pOwkJCX0KKwkJCSZzaHIJKCR0bXAsMjQpOworCQkJJm1vdnoJKCR0bXAsJkJQKC0xMjgsJHRkLCR0bXAsMSkpOworCQkJJnNobAkoJHRtcCwyNCk7CisJCQkmeG9yCSgkb3V0LCR0bXApOworCWlmICgkaTwyKSAgIHsJJm1vdgkoJkRXUCg0KzQqJGksImVzcCIpLCRvdXQpOwl9CisJaWYgKCRpPT0zKSAgewkmJEZuCSgkc1szXSwkX19zMCk7CQkJfQorfQorCisjIG11c3QgYmUgY2FsbGVkIHdpdGggMiwzLDAsMSBhcyBhcmd1bWVudCBzZXF1ZW5jZSEhIQorc3ViIGRlY3RyYW5zZm9ybSgpCit7IG15IEBzID0gKCRzMCwkczEsJHMyLCRzMyk7CisgIG15ICRpID0gc2hpZnQ7CisgIG15ICR0bXAgPSAka2V5OworICBteSAkdHAyID0gQHNbKCRpKzIpJTRdOyAkdHAyID0gQHNbMl0gaWYgKCRpPT0xKTsKKyAgbXkgJHRwNCA9IEBzWygkaSszKSU0XTsgJHRwNCA9IEBzWzNdIGlmICgkaT09MSk7CisgIG15ICR0cDggPSAkdGJsOworCisJJm1vdgkoJGFjYywkc1skaV0pOworCSZhbmQJKCRhY2MsMHg4MDgwODA4MCk7CisJJm1vdgkoJHRtcCwkYWNjKTsKKwkmc2hyCSgkdG1wLDcpOworCSZsZWEJKCR0cDIsJkRXUCgwLCRzWyRpXSwkc1skaV0pKTsKKwkmc3ViCSgkYWNjLCR0bXApOworCSZhbmQJKCR0cDIsMHhmZWZlZmVmZSk7CisJJmFuZAkoJGFjYywweDFiMWIxYjFiKTsKKwkmeG9yCSgkYWNjLCR0cDIpOworCSZtb3YJKCR0cDIsJGFjYyk7CisKKwkmYW5kCSgkYWNjLDB4ODA4MDgwODApOworCSZtb3YJKCR0bXAsJGFjYyk7CisJJnNocgkoJHRtcCw3KTsKKwkmbGVhCSgkdHA0LCZEV1AoMCwkdHAyLCR0cDIpKTsKKwkmc3ViCSgkYWNjLCR0bXApOworCSZhbmQJKCR0cDQsMHhmZWZlZmVmZSk7CisJJmFuZAkoJGFjYywweDFiMWIxYjFiKTsKKwkgJnhvcgkoJHRwMiwkc1skaV0pOwkjIHRwMl50cDEKKwkmeG9yCSgkYWNjLCR0cDQpOworCSZtb3YJKCR0cDQsJGFjYyk7CisKKwkmYW5kCSgkYWNjLDB4ODA4MDgwODApOworCSZtb3YJKCR0bXAsJGFjYyk7CisJJnNocgkoJHRtcCw3KTsKKwkmbGVhCSgkdHA4LCZEV1AoMCwkdHA0LCR0cDQpKTsKKwkmc3ViCSgkYWNjLCR0bXApOworCSZhbmQJKCR0cDgsMHhmZWZlZmVmZSk7CisJJmFuZAkoJGFjYywweDFiMWIxYjFiKTsKKwkgJnhvcgkoJHRwNCwkc1skaV0pOwkjIHRwNF50cDEKKwkgJnJvdGwJKCRzWyRpXSw4KTsJIyA9IFJPVEFURSh0cDEsOCkKKwkmeG9yCSgkdHA4LCRhY2MpOworCisJJnhvcgkoJHNbJGldLCR0cDIpOworCSZ4b3IJKCR0cDIsJHRwOCk7CisJJnJvdGwJKCR0cDIsMjQpOworCSZ4b3IJKCRzWyRpXSwkdHA0KTsKKwkmeG9yCSgkdHA0LCR0cDgpOworCSZyb3RsCSgkdHA0LDE2KTsKKwkmeG9yCSgkc1skaV0sJHRwOCk7CSMgXj0gdHA4Xih0cDRedHAxKV4odHAyXnRwMSkKKwkmcm90bAkoJHRwOCw4KTsKKwkmeG9yCSgkc1skaV0sJHRwMik7CSMgXj0gUk9UQVRFKHRwOF50cDJedHAxLDI0KQorCSZ4b3IJKCRzWyRpXSwkdHA0KTsJIyBePSBST1RBVEUodHA4XnRwNF50cDEsMTYpCisJICZtb3YJKCRzWzBdLCRfX3MwKQkJCWlmKCRpPT0yKTsgI3ByZWZldGNoICRzMAorCSAmbW92CSgkc1sxXSwkX19zMSkJCQlpZigkaT09Myk7ICNwcmVmZXRjaCAkczEKKwkgJm1vdgkoJHNbMl0sJF9fczIpCQkJaWYoJGk9PTEpOworCSZ4b3IJKCRzWyRpXSwkdHA4KTsJIyBePSBST1RBVEUodHA4LDgpCisKKwkmbW92CSgkc1szXSwkX19zMykJCQlpZigkaT09MSk7CisJJm1vdgkoJkRXUCg0KzQqJGksImVzcCIpLCRzWyRpXSkJaWYoJGk+PTIpOworfQorCismZnVuY3Rpb25fYmVnaW5fQigiX3g4Nl9BRVNfZGVjcnlwdF9jb21wYWN0Iik7CisJIyBub3RlIHRoYXQgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIGFsbG9jYXRlIHN0YWNrIGZyYW1lIGZvciBtZSEKKwkmbW92CSgkX19rZXksJGtleSk7CQkJIyBzYXZlIGtleQorCisJJnhvcgkoJHMwLCZEV1AoMCwka2V5KSk7CQkjIHhvciB3aXRoIGtleQorCSZ4b3IJKCRzMSwmRFdQKDQsJGtleSkpOworCSZ4b3IJKCRzMiwmRFdQKDgsJGtleSkpOworCSZ4b3IJKCRzMywmRFdQKDEyLCRrZXkpKTsKKworCSZtb3YJKCRhY2MsJkRXUCgyNDAsJGtleSkpOwkJIyBsb2FkIGtleS0+cm91bmRzCisKKwkmbGVhCSgkYWNjLCZEV1AoLTIsJGFjYywkYWNjKSk7CisJJmxlYQkoJGFjYywmRFdQKDAsJGtleSwkYWNjLDgpKTsKKwkmbW92CSgkX19lbmQsJGFjYyk7CQkJIyBlbmQgb2Yga2V5IHNjaGVkdWxlCisKKwkjIHByZWZldGNoIFRkNAorCSZtb3YJKCRrZXksJkRXUCgwLTEyOCwkdGJsKSk7CisJJm1vdgkoJGFjYywmRFdQKDMyLTEyOCwkdGJsKSk7CisJJm1vdgkoJGtleSwmRFdQKDY0LTEyOCwkdGJsKSk7CisJJm1vdgkoJGFjYywmRFdQKDk2LTEyOCwkdGJsKSk7CisJJm1vdgkoJGtleSwmRFdQKDEyOC0xMjgsJHRibCkpOworCSZtb3YJKCRhY2MsJkRXUCgxNjAtMTI4LCR0YmwpKTsKKwkmbW92CSgka2V5LCZEV1AoMTkyLTEyOCwkdGJsKSk7CisJJm1vdgkoJGFjYywmRFdQKDIyNC0xMjgsJHRibCkpOworCisJJnNldF9sYWJlbCgibG9vcCIsMTYpOworCisJCSZkZWNjb21wYWN0KDAsJHRibCwkczAsJHMzLCRzMiwkczEsMSk7CisJCSZkZWNjb21wYWN0KDEsJHRibCwkczEsJHMwLCRzMywkczIsMSk7CisJCSZkZWNjb21wYWN0KDIsJHRibCwkczIsJHMxLCRzMCwkczMsMSk7CisJCSZkZWNjb21wYWN0KDMsJHRibCwkczMsJHMyLCRzMSwkczAsMSk7CisJCSZkZWN0cmFuc2Zvcm0oMik7CisJCSZkZWN0cmFuc2Zvcm0oMyk7CisJCSZkZWN0cmFuc2Zvcm0oMCk7CisJCSZkZWN0cmFuc2Zvcm0oMSk7CisJCSZtb3YgCSgka2V5LCRfX2tleSk7CisJCSZtb3YJKCR0YmwsJF9fdGJsKTsKKwkJJmFkZAkoJGtleSwxNik7CQkjIGFkdmFuY2UgcmRfa2V5CisJCSZ4b3IJKCRzMCwmRFdQKDAsJGtleSkpOworCQkmeG9yCSgkczEsJkRXUCg0LCRrZXkpKTsKKwkJJnhvcgkoJHMyLCZEV1AoOCwka2V5KSk7CisJCSZ4b3IJKCRzMywmRFdQKDEyLCRrZXkpKTsKKworCSZjbXAJKCRrZXksJF9fZW5kKTsKKwkmbW92CSgkX19rZXksJGtleSk7CisJJmpiCSgmbGFiZWwoImxvb3AiKSk7CisKKwkmZGVjY29tcGFjdCgwLCR0YmwsJHMwLCRzMywkczIsJHMxKTsKKwkmZGVjY29tcGFjdCgxLCR0YmwsJHMxLCRzMCwkczMsJHMyKTsKKwkmZGVjY29tcGFjdCgyLCR0YmwsJHMyLCRzMSwkczAsJHMzKTsKKwkmZGVjY29tcGFjdCgzLCR0YmwsJHMzLCRzMiwkczEsJHMwKTsKKworCSZ4b3IJKCRzMCwmRFdQKDE2LCRrZXkpKTsKKwkmeG9yCSgkczEsJkRXUCgyMCwka2V5KSk7CisJJnhvcgkoJHMyLCZEV1AoMjQsJGtleSkpOworCSZ4b3IJKCRzMywmRFdQKDI4LCRrZXkpKTsKKworCSZyZXQJKCk7CismZnVuY3Rpb25fZW5kX0IoIl94ODZfQUVTX2RlY3J5cHRfY29tcGFjdCIpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICJDb21wYWN0IiBTU0UgYmxvY2sgZnVuY3Rpb24uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK3N1YiBzc2VfZGVjY29tcGFjdCgpCit7CisJJnBzaHVmdwkoIm1tMSIsIm1tMCIsMHgwYyk7CQkjICA3LCA2LCAxLCAwCisJJm1vdmQJKCJlYXgiLCJtbTEiKTsJCQkjICA3LCA2LCAxLCAwCisKKwkmcHNodWZ3CSgibW01IiwibW00IiwweDA5KTsJCSMgMTMsMTIsMTEsMTAKKwkmbW92egkoJGFjYywmTEIoImVheCIpKTsJCSMgIDAKKwkmbW92egkoImVjeCIsJkJQKC0xMjgsJHRibCwkYWNjLDEpKTsJIyAgMAorCSZtb3ZkCSgiZWJ4IiwibW01Iik7CQkJIyAxMywxMiwxMSwxMAorCSZtb3Z6CSgiZWR4IiwmSEIoImVheCIpKTsJCSMgIDEKKwkmbW92egkoImVkeCIsJkJQKC0xMjgsJHRibCwiZWR4IiwxKSk7CSMgIDEKKwkmc2hsCSgiZWR4Iiw4KTsJCQkjICAxCisKKwkmcHNodWZ3CSgibW0yIiwibW0wIiwweDA2KTsJCSMgIDMsIDIsIDUsIDQKKwkmbW92egkoJGFjYywmTEIoImVieCIpKTsJCSMgMTAKKwkmbW92egkoJGFjYywmQlAoLTEyOCwkdGJsLCRhY2MsMSkpOwkjIDEwCisJJnNobAkoJGFjYywxNik7CQkJIyAxMAorCSZvcgkoImVjeCIsJGFjYyk7CQkJIyAxMAorCSZzaHIJKCJlYXgiLDE2KTsJCQkjICA3LCA2CisJJm1vdnoJKCRhY2MsJkhCKCJlYngiKSk7CQkjIDExCisJJm1vdnoJKCRhY2MsJkJQKC0xMjgsJHRibCwkYWNjLDEpKTsJIyAxMQorCSZzaGwJKCRhY2MsMjQpOwkJCSMgMTEKKwkmb3IJKCJlZHgiLCRhY2MpOwkJCSMgMTEKKwkmc2hyCSgiZWJ4IiwxNik7CQkJIyAxMywxMgorCisJJnBzaHVmdwkoIm1tNiIsIm1tNCIsMHgwMyk7CQkjIDksIDgsMTUsMTQKKwkmbW92egkoJGFjYywmSEIoImVheCIpKTsJCSMgIDcKKwkmbW92egkoJGFjYywmQlAoLTEyOCwkdGJsLCRhY2MsMSkpOwkjICA3CisJJnNobAkoJGFjYywyNCk7CQkJIyAgNworCSZvcgkoImVjeCIsJGFjYyk7CQkJIyAgNworCSZtb3Z6CSgkYWNjLCZIQigiZWJ4IikpOwkJIyAxMworCSZtb3Z6CSgkYWNjLCZCUCgtMTI4LCR0YmwsJGFjYywxKSk7CSMgMTMKKwkmc2hsCSgkYWNjLDgpOwkJCSMgMTMKKwkmb3IJKCJlY3giLCRhY2MpOwkJCSMgMTMKKwkmbW92ZAkoIm1tMCIsImVjeCIpOwkJCSMgdFswXSBjb2xsZWN0ZWQKKworCSZtb3Z6CSgkYWNjLCZMQigiZWF4IikpOwkJIyAgNgorCSZtb3ZkCSgiZWF4IiwibW0yIik7CQkJIyAgMywgMiwgNSwgNAorCSZtb3Z6CSgiZWN4IiwmQlAoLTEyOCwkdGJsLCRhY2MsMSkpOwkjICA2CisJJnNobAkoImVjeCIsMTYpOwkJCSMgIDYKKwkmbW92egkoJGFjYywmTEIoImVieCIpKTsJCSMgMTIKKwkmbW92ZAkoImVieCIsIm1tNiIpOwkJCSMgIDksIDgsMTUsMTQKKwkmbW92egkoJGFjYywmQlAoLTEyOCwkdGJsLCRhY2MsMSkpOwkjIDEyCisJJm9yCSgiZWN4IiwkYWNjKTsJCQkjIDEyCisKKwkmbW92egkoJGFjYywmTEIoImVheCIpKTsJCSMgIDQKKwkmbW92egkoJGFjYywmQlAoLTEyOCwkdGJsLCRhY2MsMSkpOwkjICA0CisJJm9yCSgiZWR4IiwkYWNjKTsJCQkjICA0CisJJm1vdnoJKCRhY2MsJkxCKCJlYngiKSk7CQkjIDE0CisJJm1vdnoJKCRhY2MsJkJQKC0xMjgsJHRibCwkYWNjLDEpKTsJIyAxNAorCSZzaGwJKCRhY2MsMTYpOwkJCSMgMTQKKwkmb3IJKCJlZHgiLCRhY2MpOwkJCSMgMTQKKwkmbW92ZAkoIm1tMSIsImVkeCIpOwkJCSMgdFsxXSBjb2xsZWN0ZWQKKworCSZtb3Z6CSgkYWNjLCZIQigiZWF4IikpOwkJIyAgNQorCSZtb3Z6CSgiZWR4IiwmQlAoLTEyOCwkdGJsLCRhY2MsMSkpOwkjICA1CisJJnNobAkoImVkeCIsOCk7CQkJIyAgNQorCSZtb3Z6CSgkYWNjLCZIQigiZWJ4IikpOwkJIyAxNQorCSZzaHIJKCJlYXgiLDE2KTsJCQkjICAzLCAyCisJJm1vdnoJKCRhY2MsJkJQKC0xMjgsJHRibCwkYWNjLDEpKTsJIyAxNQorCSZzaGwJKCRhY2MsMjQpOwkJCSMgMTUKKwkmb3IJKCJlZHgiLCRhY2MpOwkJCSMgMTUKKwkmc2hyCSgiZWJ4IiwxNik7CQkJIyAgOSwgOAorCisJJnB1bnBja2xkcQkoIm1tMCIsIm1tMSIpOwkJIyB0WzAsMV0gY29sbGVjdGVkCisKKwkmbW92egkoJGFjYywmSEIoImVieCIpKTsJCSMgIDkKKwkmbW92egkoJGFjYywmQlAoLTEyOCwkdGJsLCRhY2MsMSkpOwkjICA5CisJJnNobAkoJGFjYyw4KTsJCQkjICA5CisJJm9yCSgiZWN4IiwkYWNjKTsJCQkjICA5CisJJmFuZAkoImVieCIsMHhmZik7CQkJIyAgOAorCSZtb3Z6CSgiZWJ4IiwmQlAoLTEyOCwkdGJsLCJlYngiLDEpKTsJIyAgOAorCSZvcgkoImVkeCIsImVieCIpOwkJCSMgIDgKKwkmbW92egkoJGFjYywmTEIoImVheCIpKTsJCSMgIDIKKwkmbW92egkoJGFjYywmQlAoLTEyOCwkdGJsLCRhY2MsMSkpOwkjICAyCisJJnNobAkoJGFjYywxNik7CQkJIyAgMgorCSZvcgkoImVkeCIsJGFjYyk7CQkJIyAgMgorCSZtb3ZkCSgibW00IiwiZWR4Iik7CQkJIyB0WzJdIGNvbGxlY3RlZAorCSZtb3Z6CSgiZWF4IiwmSEIoImVheCIpKTsJCSMgIDMKKwkmbW92egkoImVheCIsJkJQKC0xMjgsJHRibCwiZWF4IiwxKSk7CSMgIDMKKwkmc2hsCSgiZWF4IiwyNCk7CQkJIyAgMworCSZvcgkoImVjeCIsImVheCIpOwkJCSMgIDMKKwkmbW92ZAkoIm1tNSIsImVjeCIpOwkJCSMgdFszXSBjb2xsZWN0ZWQKKworCSZwdW5wY2tsZHEJKCJtbTQiLCJtbTUiKTsJCSMgdFsyLDNdIGNvbGxlY3RlZAorfQorCisJCQkJCWlmICghJHg4Nm9ubHkpIHsKKyZmdW5jdGlvbl9iZWdpbl9CKCJfc3NlX0FFU19kZWNyeXB0X2NvbXBhY3QiKTsKKwkmcHhvcgkoIm1tMCIsJlFXUCgwLCRrZXkpKTsJIyAgNywgNiwgNSwgNCwgMywgMiwgMSwgMAorCSZweG9yCSgibW00IiwmUVdQKDgsJGtleSkpOwkjIDE1LDE0LDEzLDEyLDExLDEwLCA5LCA4CisKKwkjIG5vdGUgdGhhdCBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gYWxsb2NhdGUgc3RhY2sgZnJhbWUgZm9yIG1lIQorCSZtb3YJKCRhY2MsJkRXUCgyNDAsJGtleSkpOwkJIyBsb2FkIGtleS0+cm91bmRzCisJJmxlYQkoJGFjYywmRFdQKC0yLCRhY2MsJGFjYykpOworCSZsZWEJKCRhY2MsJkRXUCgwLCRrZXksJGFjYyw4KSk7CisJJm1vdgkoJF9fZW5kLCRhY2MpOwkJCSMgZW5kIG9mIGtleSBzY2hlZHVsZQorCisJJm1vdgkoJHMwLDB4MWIxYjFiMWIpOwkJIyBtYWdpYyBjb25zdGFudAorCSZtb3YJKCZEV1AoOCwiZXNwIiksJHMwKTsKKwkmbW92CSgmRFdQKDEyLCJlc3AiKSwkczApOworCisJIyBwcmVmZXRjaCBUZDQKKwkmbW92CSgkczAsJkRXUCgwLTEyOCwkdGJsKSk7CisJJm1vdgkoJHMxLCZEV1AoMzItMTI4LCR0YmwpKTsKKwkmbW92CSgkczIsJkRXUCg2NC0xMjgsJHRibCkpOworCSZtb3YJKCRzMywmRFdQKDk2LTEyOCwkdGJsKSk7CisJJm1vdgkoJHMwLCZEV1AoMTI4LTEyOCwkdGJsKSk7CisJJm1vdgkoJHMxLCZEV1AoMTYwLTEyOCwkdGJsKSk7CisJJm1vdgkoJHMyLCZEV1AoMTkyLTEyOCwkdGJsKSk7CisJJm1vdgkoJHMzLCZEV1AoMjI0LTEyOCwkdGJsKSk7CisKKwkmc2V0X2xhYmVsKCJsb29wIiwxNik7CisJCSZzc2VfZGVjY29tcGFjdCgpOworCQkmYWRkCSgka2V5LDE2KTsKKwkJJmNtcAkoJGtleSwkX19lbmQpOworCQkmamEJKCZsYWJlbCgib3V0IikpOworCisJCSMgUk9UQVRFKHheeSxOKSA9PSBST1RBVEUoeCxOKV5ST1RBVEUoeSxOKQorCQkmbW92cQkoIm1tMyIsIm1tMCIpOwkJJm1vdnEJKCJtbTciLCJtbTQiKTsKKwkJJm1vdnEJKCJtbTIiLCJtbTAiLDEpOwkmbW92cQkoIm1tNiIsIm1tNCIsMSk7CisJCSZtb3ZxCSgibW0xIiwibW0wIik7CQkmbW92cQkoIm1tNSIsIm1tNCIpOworCQkmcHNodWZ3CSgibW0wIiwibW0wIiwweGIxKTsJJnBzaHVmdwkoIm1tNCIsIm1tNCIsMHhiMSk7IyA9IFJPVEFURSh0cDAsMTYpCisJCSZwc2xsZAkoIm1tMiIsOCk7CQkmcHNsbGQJKCJtbTYiLDgpOworCQkmcHNybGQJKCJtbTMiLDgpOwkJJnBzcmxkCSgibW03Iiw4KTsKKwkJJnB4b3IJKCJtbTAiLCJtbTIiKTsJCSZweG9yCSgibW00IiwibW02Iik7CSMgXj0gdHAwPDw4CisJCSZweG9yCSgibW0wIiwibW0zIik7CQkmcHhvcgkoIm1tNCIsIm1tNyIpOwkjIF49IHRwMD4+OAorCQkmcHNsbGQJKCJtbTIiLDE2KTsJCSZwc2xsZAkoIm1tNiIsMTYpOworCQkmcHNybGQJKCJtbTMiLDE2KTsJCSZwc3JsZAkoIm1tNyIsMTYpOworCQkmcHhvcgkoIm1tMCIsIm1tMiIpOwkJJnB4b3IJKCJtbTQiLCJtbTYiKTsJIyBePSB0cDA8PDI0CisJCSZweG9yCSgibW0wIiwibW0zIik7CQkmcHhvcgkoIm1tNCIsIm1tNyIpOwkjIF49IHRwMD4+MjQKKworCQkmbW92cQkoIm1tMyIsJlFXUCg4LCJlc3AiKSk7CisJCSZweG9yCSgibW0yIiwibW0yIik7CQkmcHhvcgkoIm1tNiIsIm1tNiIpOworCQkmcGNtcGd0YigibW0yIiwibW0xIik7CQkmcGNtcGd0YigibW02IiwibW01Iik7CisJCSZwYW5kCSgibW0yIiwibW0zIik7CQkmcGFuZAkoIm1tNiIsIm1tMyIpOworCQkmcGFkZGIJKCJtbTEiLCJtbTEiKTsJCSZwYWRkYgkoIm1tNSIsIm1tNSIpOworCQkmcHhvcgkoIm1tMSIsIm1tMiIpOwkJJnB4b3IJKCJtbTUiLCJtbTYiKTsJIyB0cDIKKwkJJm1vdnEJKCJtbTMiLCJtbTEiKTsJCSZtb3ZxCSgibW03IiwibW01Iik7CisJCSZtb3ZxCSgibW0yIiwibW0xIik7CQkmbW92cQkoIm1tNiIsIm1tNSIpOworCQkmcHhvcgkoIm1tMCIsIm1tMSIpOwkJJnB4b3IJKCJtbTQiLCJtbTUiKTsJIyBePSB0cDIKKwkJJnBzbGxkCSgibW0zIiwyNCk7CQkmcHNsbGQJKCJtbTciLDI0KTsKKwkJJnBzcmxkCSgibW0yIiw4KTsJCSZwc3JsZAkoIm1tNiIsOCk7CisJCSZweG9yCSgibW0wIiwibW0zIik7CQkmcHhvcgkoIm1tNCIsIm1tNyIpOwkjIF49IHRwMjw8MjQKKwkJJnB4b3IJKCJtbTAiLCJtbTIiKTsJCSZweG9yCSgibW00IiwibW02Iik7CSMgXj0gdHAyPj44CisKKwkJJm1vdnEJKCJtbTIiLCZRV1AoOCwiZXNwIikpOworCQkmcHhvcgkoIm1tMyIsIm1tMyIpOwkJJnB4b3IJKCJtbTciLCJtbTciKTsKKwkJJnBjbXBndGIoIm1tMyIsIm1tMSIpOwkJJnBjbXBndGIoIm1tNyIsIm1tNSIpOworCQkmcGFuZAkoIm1tMyIsIm1tMiIpOwkJJnBhbmQJKCJtbTciLCJtbTIiKTsKKwkJJnBhZGRiCSgibW0xIiwibW0xIik7CQkmcGFkZGIJKCJtbTUiLCJtbTUiKTsKKwkJJnB4b3IJKCJtbTEiLCJtbTMiKTsJCSZweG9yCSgibW01IiwibW03Iik7CSMgdHA0CisJCSZwc2h1ZncJKCJtbTMiLCJtbTEiLDB4YjEpOwkmcHNodWZ3CSgibW03IiwibW01IiwweGIxKTsKKwkJJnB4b3IJKCJtbTAiLCJtbTEiKTsJCSZweG9yCSgibW00IiwibW01Iik7CSMgXj0gdHA0CisJCSZweG9yCSgibW0wIiwibW0zIik7CQkmcHhvcgkoIm1tNCIsIm1tNyIpOwkjIF49IFJPVEFURSh0cDQsMTYpCQorCisJCSZweG9yCSgibW0zIiwibW0zIik7CQkmcHhvcgkoIm1tNyIsIm1tNyIpOworCQkmcGNtcGd0YigibW0zIiwibW0xIik7CQkmcGNtcGd0YigibW03IiwibW01Iik7CisJCSZwYW5kCSgibW0zIiwibW0yIik7CQkmcGFuZAkoIm1tNyIsIm1tMiIpOworCQkmcGFkZGIJKCJtbTEiLCJtbTEiKTsJCSZwYWRkYgkoIm1tNSIsIm1tNSIpOworCQkmcHhvcgkoIm1tMSIsIm1tMyIpOwkJJnB4b3IJKCJtbTUiLCJtbTciKTsJIyB0cDgKKwkJJnB4b3IJKCJtbTAiLCJtbTEiKTsJCSZweG9yCSgibW00IiwibW01Iik7CSMgXj0gdHA4CisJCSZtb3ZxCSgibW0zIiwibW0xIik7CQkmbW92cQkoIm1tNyIsIm1tNSIpOworCQkmcHNodWZ3CSgibW0yIiwibW0xIiwweGIxKTsJJnBzaHVmdwkoIm1tNiIsIm1tNSIsMHhiMSk7CisJCSZweG9yCSgibW0wIiwibW0yIik7CQkmcHhvcgkoIm1tNCIsIm1tNiIpOwkjIF49IFJPVEFURSh0cDgsMTYpCisJCSZwc2xsZAkoIm1tMSIsOCk7CQkmcHNsbGQJKCJtbTUiLDgpOworCQkmcHNybGQJKCJtbTMiLDgpOwkJJnBzcmxkCSgibW03Iiw4KTsKKwkJJm1vdnEJKCJtbTIiLCZRV1AoMCwka2V5KSk7CSZtb3ZxCSgibW02IiwmUVdQKDgsJGtleSkpOworCQkmcHhvcgkoIm1tMCIsIm1tMSIpOwkJJnB4b3IJKCJtbTQiLCJtbTUiKTsJIyBePSB0cDg8PDgKKwkJJnB4b3IJKCJtbTAiLCJtbTMiKTsJCSZweG9yCSgibW00IiwibW03Iik7CSMgXj0gdHA4Pj44CisJCSZtb3YJKCRzMCwmRFdQKDAtMTI4LCR0YmwpKTsKKwkJJnBzbGxkCSgibW0xIiwxNik7CQkmcHNsbGQJKCJtbTUiLDE2KTsKKwkJJm1vdgkoJHMxLCZEV1AoNjQtMTI4LCR0YmwpKTsKKwkJJnBzcmxkCSgibW0zIiwxNik7CQkmcHNybGQJKCJtbTciLDE2KTsKKwkJJm1vdgkoJHMyLCZEV1AoMTI4LTEyOCwkdGJsKSk7CisJCSZweG9yCSgibW0wIiwibW0xIik7CQkmcHhvcgkoIm1tNCIsIm1tNSIpOwkjIF49IHRwODw8MjQKKwkJJm1vdgkoJHMzLCZEV1AoMTkyLTEyOCwkdGJsKSk7CisJCSZweG9yCSgibW0wIiwibW0zIik7CQkmcHhvcgkoIm1tNCIsIm1tNyIpOwkjIF49IHRwOD4+MjQKKworCQkmcHhvcgkoIm1tMCIsIm1tMiIpOwkJJnB4b3IJKCJtbTQiLCJtbTYiKTsKKwkmam1wCSgmbGFiZWwoImxvb3AiKSk7CisKKwkmc2V0X2xhYmVsKCJvdXQiLDE2KTsKKwkmcHhvcgkoIm1tMCIsJlFXUCgwLCRrZXkpKTsKKwkmcHhvcgkoIm1tNCIsJlFXUCg4LCRrZXkpKTsKKworCSZyZXQJKCk7CismZnVuY3Rpb25fZW5kX0IoIl9zc2VfQUVTX2RlY3J5cHRfY29tcGFjdCIpOworCQkJCQl9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVmFuaWxsYSBibG9jayBmdW5jdGlvbi4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworc3ViIGRlY3N0ZXAoKQoreyBteSAoJGksJHRkLEBzKSA9IEBfOworICBteSAkdG1wID0gJGtleTsKKyAgbXkgJG91dCA9ICRpPT0zPyRzWzBdOiRhY2M7CisKKwkjIG5vIGluc3RydWN0aW9ucyBhcmUgcmVvcmRlcmVkLCBhcyBwZXJmb3JtYW5jZSBhcHBlYXJzCisJIyBvcHRpbWFsLi4uIG9yIHJhdGhlciB0aGF0IGFsbCBhdHRlbXB0cyB0byByZW9yZGVyIGRpZG4ndAorCSMgcmVzdWx0IGluIGJldHRlciBwZXJmb3JtYW5jZSBbd2hpY2ggYnkgdGhlIHdheSBpcyBub3QgYQorCSMgYml0IGxvd2VyIHRoYW4gZWNyeXB0aW9uXS4KKwlpZigkaT09MykgICB7CSZtb3YJKCRrZXksJF9fa2V5KTsJCQl9CisJZWxzZSAgICAgICAgewkmbW92CSgkb3V0LCRzWzBdKTsJCQl9CisJCQkmYW5kCSgkb3V0LDB4RkYpOworCQkJJm1vdgkoJG91dCwmRFdQKDAsJHRkLCRvdXQsOCkpOworCisJaWYgKCRpPT0zKSAgewkkdG1wPSRzWzFdOwkJCQl9CisJCQkmbW92egkoJHRtcCwmSEIoJHNbMV0pKTsKKwkJCSZ4b3IJKCRvdXQsJkRXUCgzLCR0ZCwkdG1wLDgpKTsKKworCWlmICgkaT09MykgIHsJJHRtcD0kc1syXTsgJm1vdiAoJHNbMV0sJGFjYyk7CQl9CisJZWxzZSAgICAgICAgewkmbW92CSgkdG1wLCRzWzJdKTsJCQl9CisJCQkmc2hyCSgkdG1wLDE2KTsKKwkJCSZhbmQJKCR0bXAsMHhGRik7CisJCQkmeG9yCSgkb3V0LCZEV1AoMiwkdGQsJHRtcCw4KSk7CisKKwlpZiAoJGk9PTMpICB7CSR0bXA9JHNbM107ICZtb3YgKCRzWzJdLCRfX3MxKTsJCX0KKwllbHNlICAgICAgICB7CSZtb3YJKCR0bXAsJHNbM10pOwkJCX0KKwkJCSZzaHIJKCR0bXAsMjQpOworCQkJJnhvcgkoJG91dCwmRFdQKDEsJHRkLCR0bXAsOCkpOworCWlmICgkaTwyKSAgIHsJJm1vdgkoJkRXUCg0KzQqJGksImVzcCIpLCRvdXQpOwl9CisJaWYgKCRpPT0zKSAgewkmbW92CSgkc1szXSwkX19zMCk7CQkJfQorCQkJJmNvbW1lbnQoKTsKK30KKworc3ViIGRlY2xhc3QoKQoreyBteSAoJGksJHRkLEBzKT1AXzsKKyAgbXkgJHRtcCA9ICRrZXk7CisgIG15ICRvdXQgPSAkaT09Mz8kc1swXTokYWNjOworCisJaWYoJGk9PTApICAgewkmbGVhCSgkdGQsJkRXUCgyMDQ4KzEyOCwkdGQpKTsKKwkJCSZtb3YJKCR0bXAsJkRXUCgwLTEyOCwkdGQpKTsKKwkJCSZtb3YJKCRhY2MsJkRXUCgzMi0xMjgsJHRkKSk7CisJCQkmbW92CSgkdG1wLCZEV1AoNjQtMTI4LCR0ZCkpOworCQkJJm1vdgkoJGFjYywmRFdQKDk2LTEyOCwkdGQpKTsKKwkJCSZtb3YJKCR0bXAsJkRXUCgxMjgtMTI4LCR0ZCkpOworCQkJJm1vdgkoJGFjYywmRFdQKDE2MC0xMjgsJHRkKSk7CisJCQkmbW92CSgkdG1wLCZEV1AoMTkyLTEyOCwkdGQpKTsKKwkJCSZtb3YJKCRhY2MsJkRXUCgyMjQtMTI4LCR0ZCkpOworCQkJJmxlYQkoJHRkLCZEV1AoLTEyOCwkdGQpKTsJCX0KKwlpZigkaT09MykgICB7CSZtb3YJKCRrZXksJF9fa2V5KTsJCQl9CisJZWxzZSAgICAgICAgewkmbW92CSgkb3V0LCRzWzBdKTsJCQl9CisJCQkmYW5kCSgkb3V0LDB4RkYpOworCQkJJm1vdnoJKCRvdXQsJkJQKDAsJHRkLCRvdXQsMSkpOworCisJaWYgKCRpPT0zKSAgewkkdG1wPSRzWzFdOwkJCQl9CisJCQkmbW92egkoJHRtcCwmSEIoJHNbMV0pKTsKKwkJCSZtb3Z6CSgkdG1wLCZCUCgwLCR0ZCwkdG1wLDEpKTsKKwkJCSZzaGwJKCR0bXAsOCk7CisJCQkmeG9yCSgkb3V0LCR0bXApOworCisJaWYgKCRpPT0zKSAgewkkdG1wPSRzWzJdOyAmbW92ICgkc1sxXSwkYWNjKTsJCX0KKwllbHNlICAgICAgICB7CW1vdgkoJHRtcCwkc1syXSk7CQkJfQorCQkJJnNocgkoJHRtcCwxNik7CisJCQkmYW5kCSgkdG1wLDB4RkYpOworCQkJJm1vdnoJKCR0bXAsJkJQKDAsJHRkLCR0bXAsMSkpOworCQkJJnNobAkoJHRtcCwxNik7CisJCQkmeG9yCSgkb3V0LCR0bXApOworCisJaWYgKCRpPT0zKSAgewkkdG1wPSRzWzNdOyAmbW92ICgkc1syXSwkX19zMSk7CQl9CisJZWxzZSAgICAgICAgewkmbW92CSgkdG1wLCRzWzNdKTsJCQl9CisJCQkmc2hyCSgkdG1wLDI0KTsKKwkJCSZtb3Z6CSgkdG1wLCZCUCgwLCR0ZCwkdG1wLDEpKTsKKwkJCSZzaGwJKCR0bXAsMjQpOworCQkJJnhvcgkoJG91dCwkdG1wKTsKKwlpZiAoJGk8MikgICB7CSZtb3YJKCZEV1AoNCs0KiRpLCJlc3AiKSwkb3V0KTsJfQorCWlmICgkaT09MykgIHsJJm1vdgkoJHNbM10sJF9fczApOworCQkJJmxlYQkoJHRkLCZEV1AoLTIwNDgsJHRkKSk7CQl9Cit9CisKKyZmdW5jdGlvbl9iZWdpbl9CKCJfeDg2X0FFU19kZWNyeXB0Iik7CisJIyBub3RlIHRoYXQgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIGFsbG9jYXRlIHN0YWNrIGZyYW1lIGZvciBtZSEKKwkmbW92CSgkX19rZXksJGtleSk7CQkJIyBzYXZlIGtleQorCisJJnhvcgkoJHMwLCZEV1AoMCwka2V5KSk7CQkjIHhvciB3aXRoIGtleQorCSZ4b3IJKCRzMSwmRFdQKDQsJGtleSkpOworCSZ4b3IJKCRzMiwmRFdQKDgsJGtleSkpOworCSZ4b3IJKCRzMywmRFdQKDEyLCRrZXkpKTsKKworCSZtb3YJKCRhY2MsJkRXUCgyNDAsJGtleSkpOwkJIyBsb2FkIGtleS0+cm91bmRzCisKKwlpZiAoJHNtYWxsX2Zvb3RwcmludCkgeworCSAgICAmbGVhCSgkYWNjLCZEV1AoLTIsJGFjYywkYWNjKSk7CisJICAgICZsZWEJKCRhY2MsJkRXUCgwLCRrZXksJGFjYyw4KSk7CisJICAgICZtb3YJKCRfX2VuZCwkYWNjKTsJCSMgZW5kIG9mIGtleSBzY2hlZHVsZQorCSAgICAmc2V0X2xhYmVsKCJsb29wIiwxNik7CisJCSZkZWNzdGVwKDAsJHRibCwkczAsJHMzLCRzMiwkczEpOworCQkmZGVjc3RlcCgxLCR0YmwsJHMxLCRzMCwkczMsJHMyKTsKKwkJJmRlY3N0ZXAoMiwkdGJsLCRzMiwkczEsJHMwLCRzMyk7CisJCSZkZWNzdGVwKDMsJHRibCwkczMsJHMyLCRzMSwkczApOworCQkmYWRkCSgka2V5LDE2KTsJCSMgYWR2YW5jZSByZF9rZXkKKwkJJnhvcgkoJHMwLCZEV1AoMCwka2V5KSk7CisJCSZ4b3IJKCRzMSwmRFdQKDQsJGtleSkpOworCQkmeG9yCSgkczIsJkRXUCg4LCRrZXkpKTsKKwkJJnhvcgkoJHMzLCZEV1AoMTIsJGtleSkpOworCSAgICAmY21wCSgka2V5LCRfX2VuZCk7CisJICAgICZtb3YJKCRfX2tleSwka2V5KTsKKwkgICAgJmpiCQkoJmxhYmVsKCJsb29wIikpOworCX0KKwllbHNlIHsKKwkgICAgJmNtcAkoJGFjYywxMCk7CisJICAgICZqbGUJKCZsYWJlbCgiMTByb3VuZHMiKSk7CisJICAgICZjbXAJKCRhY2MsMTIpOworCSAgICAmamxlCSgmbGFiZWwoIjEycm91bmRzIikpOworCisJJnNldF9sYWJlbCgiMTRyb3VuZHMiLDQpOworCSAgICBmb3IgKCRpPTE7JGk8MzskaSsrKSB7CisJCSZkZWNzdGVwKDAsJHRibCwkczAsJHMzLCRzMiwkczEpOworCQkmZGVjc3RlcCgxLCR0YmwsJHMxLCRzMCwkczMsJHMyKTsKKwkJJmRlY3N0ZXAoMiwkdGJsLCRzMiwkczEsJHMwLCRzMyk7CisJCSZkZWNzdGVwKDMsJHRibCwkczMsJHMyLCRzMSwkczApOworCQkmeG9yCSgkczAsJkRXUCgxNiokaSswLCRrZXkpKTsKKwkJJnhvcgkoJHMxLCZEV1AoMTYqJGkrNCwka2V5KSk7CisJCSZ4b3IJKCRzMiwmRFdQKDE2KiRpKzgsJGtleSkpOworCQkmeG9yCSgkczMsJkRXUCgxNiokaSsxMiwka2V5KSk7CisJICAgIH0KKwkgICAgJmFkZAkoJGtleSwzMik7CisJICAgICZtb3YJKCRfX2tleSwka2V5KTsJCSMgYWR2YW5jZSByZF9rZXkKKwkmc2V0X2xhYmVsKCIxMnJvdW5kcyIsNCk7CisJICAgIGZvciAoJGk9MTskaTwzOyRpKyspIHsKKwkJJmRlY3N0ZXAoMCwkdGJsLCRzMCwkczMsJHMyLCRzMSk7CisJCSZkZWNzdGVwKDEsJHRibCwkczEsJHMwLCRzMywkczIpOworCQkmZGVjc3RlcCgyLCR0YmwsJHMyLCRzMSwkczAsJHMzKTsKKwkJJmRlY3N0ZXAoMywkdGJsLCRzMywkczIsJHMxLCRzMCk7CisJCSZ4b3IJKCRzMCwmRFdQKDE2KiRpKzAsJGtleSkpOworCQkmeG9yCSgkczEsJkRXUCgxNiokaSs0LCRrZXkpKTsKKwkJJnhvcgkoJHMyLCZEV1AoMTYqJGkrOCwka2V5KSk7CisJCSZ4b3IJKCRzMywmRFdQKDE2KiRpKzEyLCRrZXkpKTsKKwkgICAgfQorCSAgICAmYWRkCSgka2V5LDMyKTsKKwkgICAgJm1vdgkoJF9fa2V5LCRrZXkpOwkJIyBhZHZhbmNlIHJkX2tleQorCSZzZXRfbGFiZWwoIjEwcm91bmRzIiw0KTsKKwkgICAgZm9yICgkaT0xOyRpPDEwOyRpKyspIHsKKwkJJmRlY3N0ZXAoMCwkdGJsLCRzMCwkczMsJHMyLCRzMSk7CisJCSZkZWNzdGVwKDEsJHRibCwkczEsJHMwLCRzMywkczIpOworCQkmZGVjc3RlcCgyLCR0YmwsJHMyLCRzMSwkczAsJHMzKTsKKwkJJmRlY3N0ZXAoMywkdGJsLCRzMywkczIsJHMxLCRzMCk7CisJCSZ4b3IJKCRzMCwmRFdQKDE2KiRpKzAsJGtleSkpOworCQkmeG9yCSgkczEsJkRXUCgxNiokaSs0LCRrZXkpKTsKKwkJJnhvcgkoJHMyLCZEV1AoMTYqJGkrOCwka2V5KSk7CisJCSZ4b3IJKCRzMywmRFdQKDE2KiRpKzEyLCRrZXkpKTsKKwkgICAgfQorCX0KKworCSZkZWNsYXN0KDAsJHRibCwkczAsJHMzLCRzMiwkczEpOworCSZkZWNsYXN0KDEsJHRibCwkczEsJHMwLCRzMywkczIpOworCSZkZWNsYXN0KDIsJHRibCwkczIsJHMxLCRzMCwkczMpOworCSZkZWNsYXN0KDMsJHRibCwkczMsJHMyLCRzMSwkczApOworCisJJmFkZAkoJGtleSwkc21hbGxfZm9vdHByaW50PzE2OjE2MCk7CisJJnhvcgkoJHMwLCZEV1AoMCwka2V5KSk7CisJJnhvcgkoJHMxLCZEV1AoNCwka2V5KSk7CisJJnhvcgkoJHMyLCZEV1AoOCwka2V5KSk7CisJJnhvcgkoJHMzLCZEV1AoMTIsJGtleSkpOworCisJJnJldAkoKTsKKworJnNldF9sYWJlbCgiQUVTX1RkIiw2NCk7CSMgWWVzISBJIGtlZXAgaXQgaW4gdGhlIGNvZGUgc2VnbWVudCEKKwkmX2RhdGFfd29yZCgweDUwYTdmNDUxLCAweDUzNjU0MTdlLCAweGMzYTQxNzFhLCAweDk2NWUyNzNhKTsKKwkmX2RhdGFfd29yZCgweGNiNmJhYjNiLCAweGYxNDU5ZDFmLCAweGFiNThmYWFjLCAweDkzMDNlMzRiKTsKKwkmX2RhdGFfd29yZCgweDU1ZmEzMDIwLCAweGY2NmQ3NmFkLCAweDkxNzZjYzg4LCAweDI1NGMwMmY1KTsKKwkmX2RhdGFfd29yZCgweGZjZDdlNTRmLCAweGQ3Y2IyYWM1LCAweDgwNDQzNTI2LCAweDhmYTM2MmI1KTsKKwkmX2RhdGFfd29yZCgweDQ5NWFiMWRlLCAweDY3MWJiYTI1LCAweDk4MGVlYTQ1LCAweGUxYzBmZTVkKTsKKwkmX2RhdGFfd29yZCgweDAyNzUyZmMzLCAweDEyZjA0YzgxLCAweGEzOTc0NjhkLCAweGM2ZjlkMzZiKTsKKwkmX2RhdGFfd29yZCgweGU3NWY4ZjAzLCAweDk1OWM5MjE1LCAweGViN2E2ZGJmLCAweGRhNTk1Mjk1KTsKKwkmX2RhdGFfd29yZCgweDJkODNiZWQ0LCAweGQzMjE3NDU4LCAweDI5NjllMDQ5LCAweDQ0YzhjOThlKTsKKwkmX2RhdGFfd29yZCgweDZhODljMjc1LCAweDc4Nzk4ZWY0LCAweDZiM2U1ODk5LCAweGRkNzFiOTI3KTsKKwkmX2RhdGFfd29yZCgweGI2NGZlMWJlLCAweDE3YWQ4OGYwLCAweDY2YWMyMGM5LCAweGI0M2FjZTdkKTsKKwkmX2RhdGFfd29yZCgweDE4NGFkZjYzLCAweDgyMzExYWU1LCAweDYwMzM1MTk3LCAweDQ1N2Y1MzYyKTsKKwkmX2RhdGFfd29yZCgweGUwNzc2NGIxLCAweDg0YWU2YmJiLCAweDFjYTA4MWZlLCAweDk0MmIwOGY5KTsKKwkmX2RhdGFfd29yZCgweDU4Njg0ODcwLCAweDE5ZmQ0NThmLCAweDg3NmNkZTk0LCAweGI3Zjg3YjUyKTsKKwkmX2RhdGFfd29yZCgweDIzZDM3M2FiLCAweGUyMDI0YjcyLCAweDU3OGYxZmUzLCAweDJhYWI1NTY2KTsKKwkmX2RhdGFfd29yZCgweDA3MjhlYmIyLCAweDAzYzJiNTJmLCAweDlhN2JjNTg2LCAweGE1MDgzN2QzKTsKKwkmX2RhdGFfd29yZCgweGYyODcyODMwLCAweGIyYTViZjIzLCAweGJhNmEwMzAyLCAweDVjODIxNmVkKTsKKwkmX2RhdGFfd29yZCgweDJiMWNjZjhhLCAweDkyYjQ3OWE3LCAweGYwZjIwN2YzLCAweGExZTI2OTRlKTsKKwkmX2RhdGFfd29yZCgweGNkZjRkYTY1LCAweGQ1YmUwNTA2LCAweDFmNjIzNGQxLCAweDhhZmVhNmM0KTsKKwkmX2RhdGFfd29yZCgweDlkNTMyZTM0LCAweGEwNTVmM2EyLCAweDMyZTE4YTA1LCAweDc1ZWJmNmE0KTsKKwkmX2RhdGFfd29yZCgweDM5ZWM4MzBiLCAweGFhZWY2MDQwLCAweDA2OWY3MTVlLCAweDUxMTA2ZWJkKTsKKwkmX2RhdGFfd29yZCgweGY5OGEyMTNlLCAweDNkMDZkZDk2LCAweGFlMDUzZWRkLCAweDQ2YmRlNjRkKTsKKwkmX2RhdGFfd29yZCgweGI1OGQ1NDkxLCAweDA1NWRjNDcxLCAweDZmZDQwNjA0LCAweGZmMTU1MDYwKTsKKwkmX2RhdGFfd29yZCgweDI0ZmI5ODE5LCAweDk3ZTliZGQ2LCAweGNjNDM0MDg5LCAweDc3OWVkOTY3KTsKKwkmX2RhdGFfd29yZCgweGJkNDJlOGIwLCAweDg4OGI4OTA3LCAweDM4NWIxOWU3LCAweGRiZWVjODc5KTsKKwkmX2RhdGFfd29yZCgweDQ3MGE3Y2ExLCAweGU5MGY0MjdjLCAweGM5MWU4NGY4LCAweDAwMDAwMDAwKTsKKwkmX2RhdGFfd29yZCgweDgzODY4MDA5LCAweDQ4ZWQyYjMyLCAweGFjNzAxMTFlLCAweDRlNzI1YTZjKTsKKwkmX2RhdGFfd29yZCgweGZiZmYwZWZkLCAweDU2Mzg4NTBmLCAweDFlZDVhZTNkLCAweDI3MzkyZDM2KTsKKwkmX2RhdGFfd29yZCgweDY0ZDkwZjBhLCAweDIxYTY1YzY4LCAweGQxNTQ1YjliLCAweDNhMmUzNjI0KTsKKwkmX2RhdGFfd29yZCgweGIxNjcwYTBjLCAweDBmZTc1NzkzLCAweGQyOTZlZWI0LCAweDllOTE5YjFiKTsKKwkmX2RhdGFfd29yZCgweDRmYzVjMDgwLCAweGEyMjBkYzYxLCAweDY5NGI3NzVhLCAweDE2MWExMjFjKTsKKwkmX2RhdGFfd29yZCgweDBhYmE5M2UyLCAweGU1MmFhMGMwLCAweDQzZTAyMjNjLCAweDFkMTcxYjEyKTsKKwkmX2RhdGFfd29yZCgweDBiMGQwOTBlLCAweGFkYzc4YmYyLCAweGI5YThiNjJkLCAweGM4YTkxZTE0KTsKKwkmX2RhdGFfd29yZCgweDg1MTlmMTU3LCAweDRjMDc3NWFmLCAweGJiZGQ5OWVlLCAweGZkNjA3ZmEzKTsKKwkmX2RhdGFfd29yZCgweDlmMjYwMWY3LCAweGJjZjU3MjVjLCAweGM1M2I2NjQ0LCAweDM0N2VmYjViKTsKKwkmX2RhdGFfd29yZCgweDc2Mjk0MzhiLCAweGRjYzYyM2NiLCAweDY4ZmNlZGI2LCAweDYzZjFlNGI4KTsKKwkmX2RhdGFfd29yZCgweGNhZGMzMWQ3LCAweDEwODU2MzQyLCAweDQwMjI5NzEzLCAweDIwMTFjNjg0KTsKKwkmX2RhdGFfd29yZCgweDdkMjQ0YTg1LCAweGY4M2RiYmQyLCAweDExMzJmOWFlLCAweDZkYTEyOWM3KTsKKwkmX2RhdGFfd29yZCgweDRiMmY5ZTFkLCAweGYzMzBiMmRjLCAweGVjNTI4NjBkLCAweGQwZTNjMTc3KTsKKwkmX2RhdGFfd29yZCgweDZjMTZiMzJiLCAweDk5Yjk3MGE5LCAweGZhNDg5NDExLCAweDIyNjRlOTQ3KTsKKwkmX2RhdGFfd29yZCgweGM0OGNmY2E4LCAweDFhM2ZmMGEwLCAweGQ4MmM3ZDU2LCAweGVmOTAzMzIyKTsKKwkmX2RhdGFfd29yZCgweGM3NGU0OTg3LCAweGMxZDEzOGQ5LCAweGZlYTJjYThjLCAweDM2MGJkNDk4KTsKKwkmX2RhdGFfd29yZCgweGNmODFmNWE2LCAweDI4ZGU3YWE1LCAweDI2OGViN2RhLCAweGE0YmZhZDNmKTsKKwkmX2RhdGFfd29yZCgweGU0OWQzYTJjLCAweDBkOTI3ODUwLCAweDliY2M1ZjZhLCAweDYyNDY3ZTU0KTsKKwkmX2RhdGFfd29yZCgweGMyMTM4ZGY2LCAweGU4YjhkODkwLCAweDVlZjczOTJlLCAweGY1YWZjMzgyKTsKKwkmX2RhdGFfd29yZCgweGJlODA1ZDlmLCAweDdjOTNkMDY5LCAweGE5MmRkNTZmLCAweGIzMTIyNWNmKTsKKwkmX2RhdGFfd29yZCgweDNiOTlhY2M4LCAweGE3N2QxODEwLCAweDZlNjM5Y2U4LCAweDdiYmIzYmRiKTsKKwkmX2RhdGFfd29yZCgweDA5NzgyNmNkLCAweGY0MTg1OTZlLCAweDAxYjc5YWVjLCAweGE4OWE0ZjgzKTsKKwkmX2RhdGFfd29yZCgweDY1NmU5NWU2LCAweDdlZTZmZmFhLCAweDA4Y2ZiYzIxLCAweGU2ZTgxNWVmKTsKKwkmX2RhdGFfd29yZCgweGQ5OWJlN2JhLCAweGNlMzY2ZjRhLCAweGQ0MDk5ZmVhLCAweGQ2N2NiMDI5KTsKKwkmX2RhdGFfd29yZCgweGFmYjJhNDMxLCAweDMxMjMzZjJhLCAweDMwOTRhNWM2LCAweGMwNjZhMjM1KTsKKwkmX2RhdGFfd29yZCgweDM3YmM0ZTc0LCAweGE2Y2E4MmZjLCAweGIwZDA5MGUwLCAweDE1ZDhhNzMzKTsKKwkmX2RhdGFfd29yZCgweDRhOTgwNGYxLCAweGY3ZGFlYzQxLCAweDBlNTBjZDdmLCAweDJmZjY5MTE3KTsKKwkmX2RhdGFfd29yZCgweDhkZDY0ZDc2LCAweDRkYjBlZjQzLCAweDU0NGRhYWNjLCAweGRmMDQ5NmU0KTsKKwkmX2RhdGFfd29yZCgweGUzYjVkMTllLCAweDFiODg2YTRjLCAweGI4MWYyY2MxLCAweDdmNTE2NTQ2KTsKKwkmX2RhdGFfd29yZCgweDA0ZWE1ZTlkLCAweDVkMzU4YzAxLCAweDczNzQ4N2ZhLCAweDJlNDEwYmZiKTsKKwkmX2RhdGFfd29yZCgweDVhMWQ2N2IzLCAweDUyZDJkYjkyLCAweDMzNTYxMGU5LCAweDEzNDdkNjZkKTsKKwkmX2RhdGFfd29yZCgweDhjNjFkNzlhLCAweDdhMGNhMTM3LCAweDhlMTRmODU5LCAweDg5M2MxM2ViKTsKKwkmX2RhdGFfd29yZCgweGVlMjdhOWNlLCAweDM1Yzk2MWI3LCAweGVkZTUxY2UxLCAweDNjYjE0NzdhKTsKKwkmX2RhdGFfd29yZCgweDU5ZGZkMjljLCAweDNmNzNmMjU1LCAweDc5Y2UxNDE4LCAweGJmMzdjNzczKTsKKwkmX2RhdGFfd29yZCgweGVhY2RmNzUzLCAweDViYWFmZDVmLCAweDE0NmYzZGRmLCAweDg2ZGI0NDc4KTsKKwkmX2RhdGFfd29yZCgweDgxZjNhZmNhLCAweDNlYzQ2OGI5LCAweDJjMzQyNDM4LCAweDVmNDBhM2MyKTsKKwkmX2RhdGFfd29yZCgweDcyYzMxZDE2LCAweDBjMjVlMmJjLCAweDhiNDkzYzI4LCAweDQxOTUwZGZmKTsKKwkmX2RhdGFfd29yZCgweDcxMDFhODM5LCAweGRlYjMwYzA4LCAweDljZTRiNGQ4LCAweDkwYzE1NjY0KTsKKwkmX2RhdGFfd29yZCgweDYxODRjYjdiLCAweDcwYjYzMmQ1LCAweDc0NWM2YzQ4LCAweDQyNTdiOGQwKTsKKworI1RkNDoJIyBmb3VyIGNvcGllcyBvZiBUZDQgdG8gY2hvb3NlIGZyb20gdG8gYXZvaWQgTDEgYWxpYXNpbmcKKwkmZGF0YV9ieXRlKDB4NTIsIDB4MDksIDB4NmEsIDB4ZDUsIDB4MzAsIDB4MzYsIDB4YTUsIDB4MzgpOworCSZkYXRhX2J5dGUoMHhiZiwgMHg0MCwgMHhhMywgMHg5ZSwgMHg4MSwgMHhmMywgMHhkNywgMHhmYik7CisJJmRhdGFfYnl0ZSgweDdjLCAweGUzLCAweDM5LCAweDgyLCAweDliLCAweDJmLCAweGZmLCAweDg3KTsKKwkmZGF0YV9ieXRlKDB4MzQsIDB4OGUsIDB4NDMsIDB4NDQsIDB4YzQsIDB4ZGUsIDB4ZTksIDB4Y2IpOworCSZkYXRhX2J5dGUoMHg1NCwgMHg3YiwgMHg5NCwgMHgzMiwgMHhhNiwgMHhjMiwgMHgyMywgMHgzZCk7CisJJmRhdGFfYnl0ZSgweGVlLCAweDRjLCAweDk1LCAweDBiLCAweDQyLCAweGZhLCAweGMzLCAweDRlKTsKKwkmZGF0YV9ieXRlKDB4MDgsIDB4MmUsIDB4YTEsIDB4NjYsIDB4MjgsIDB4ZDksIDB4MjQsIDB4YjIpOworCSZkYXRhX2J5dGUoMHg3NiwgMHg1YiwgMHhhMiwgMHg0OSwgMHg2ZCwgMHg4YiwgMHhkMSwgMHgyNSk7CisJJmRhdGFfYnl0ZSgweDcyLCAweGY4LCAweGY2LCAweDY0LCAweDg2LCAweDY4LCAweDk4LCAweDE2KTsKKwkmZGF0YV9ieXRlKDB4ZDQsIDB4YTQsIDB4NWMsIDB4Y2MsIDB4NWQsIDB4NjUsIDB4YjYsIDB4OTIpOworCSZkYXRhX2J5dGUoMHg2YywgMHg3MCwgMHg0OCwgMHg1MCwgMHhmZCwgMHhlZCwgMHhiOSwgMHhkYSk7CisJJmRhdGFfYnl0ZSgweDVlLCAweDE1LCAweDQ2LCAweDU3LCAweGE3LCAweDhkLCAweDlkLCAweDg0KTsKKwkmZGF0YV9ieXRlKDB4OTAsIDB4ZDgsIDB4YWIsIDB4MDAsIDB4OGMsIDB4YmMsIDB4ZDMsIDB4MGEpOworCSZkYXRhX2J5dGUoMHhmNywgMHhlNCwgMHg1OCwgMHgwNSwgMHhiOCwgMHhiMywgMHg0NSwgMHgwNik7CisJJmRhdGFfYnl0ZSgweGQwLCAweDJjLCAweDFlLCAweDhmLCAweGNhLCAweDNmLCAweDBmLCAweDAyKTsKKwkmZGF0YV9ieXRlKDB4YzEsIDB4YWYsIDB4YmQsIDB4MDMsIDB4MDEsIDB4MTMsIDB4OGEsIDB4NmIpOworCSZkYXRhX2J5dGUoMHgzYSwgMHg5MSwgMHgxMSwgMHg0MSwgMHg0ZiwgMHg2NywgMHhkYywgMHhlYSk7CisJJmRhdGFfYnl0ZSgweDk3LCAweGYyLCAweGNmLCAweGNlLCAweGYwLCAweGI0LCAweGU2LCAweDczKTsKKwkmZGF0YV9ieXRlKDB4OTYsIDB4YWMsIDB4NzQsIDB4MjIsIDB4ZTcsIDB4YWQsIDB4MzUsIDB4ODUpOworCSZkYXRhX2J5dGUoMHhlMiwgMHhmOSwgMHgzNywgMHhlOCwgMHgxYywgMHg3NSwgMHhkZiwgMHg2ZSk7CisJJmRhdGFfYnl0ZSgweDQ3LCAweGYxLCAweDFhLCAweDcxLCAweDFkLCAweDI5LCAweGM1LCAweDg5KTsKKwkmZGF0YV9ieXRlKDB4NmYsIDB4YjcsIDB4NjIsIDB4MGUsIDB4YWEsIDB4MTgsIDB4YmUsIDB4MWIpOworCSZkYXRhX2J5dGUoMHhmYywgMHg1NiwgMHgzZSwgMHg0YiwgMHhjNiwgMHhkMiwgMHg3OSwgMHgyMCk7CisJJmRhdGFfYnl0ZSgweDlhLCAweGRiLCAweGMwLCAweGZlLCAweDc4LCAweGNkLCAweDVhLCAweGY0KTsKKwkmZGF0YV9ieXRlKDB4MWYsIDB4ZGQsIDB4YTgsIDB4MzMsIDB4ODgsIDB4MDcsIDB4YzcsIDB4MzEpOworCSZkYXRhX2J5dGUoMHhiMSwgMHgxMiwgMHgxMCwgMHg1OSwgMHgyNywgMHg4MCwgMHhlYywgMHg1Zik7CisJJmRhdGFfYnl0ZSgweDYwLCAweDUxLCAweDdmLCAweGE5LCAweDE5LCAweGI1LCAweDRhLCAweDBkKTsKKwkmZGF0YV9ieXRlKDB4MmQsIDB4ZTUsIDB4N2EsIDB4OWYsIDB4OTMsIDB4YzksIDB4OWMsIDB4ZWYpOworCSZkYXRhX2J5dGUoMHhhMCwgMHhlMCwgMHgzYiwgMHg0ZCwgMHhhZSwgMHgyYSwgMHhmNSwgMHhiMCk7CisJJmRhdGFfYnl0ZSgweGM4LCAweGViLCAweGJiLCAweDNjLCAweDgzLCAweDUzLCAweDk5LCAweDYxKTsKKwkmZGF0YV9ieXRlKDB4MTcsIDB4MmIsIDB4MDQsIDB4N2UsIDB4YmEsIDB4NzcsIDB4ZDYsIDB4MjYpOworCSZkYXRhX2J5dGUoMHhlMSwgMHg2OSwgMHgxNCwgMHg2MywgMHg1NSwgMHgyMSwgMHgwYywgMHg3ZCk7CisKKwkmZGF0YV9ieXRlKDB4NTIsIDB4MDksIDB4NmEsIDB4ZDUsIDB4MzAsIDB4MzYsIDB4YTUsIDB4MzgpOworCSZkYXRhX2J5dGUoMHhiZiwgMHg0MCwgMHhhMywgMHg5ZSwgMHg4MSwgMHhmMywgMHhkNywgMHhmYik7CisJJmRhdGFfYnl0ZSgweDdjLCAweGUzLCAweDM5LCAweDgyLCAweDliLCAweDJmLCAweGZmLCAweDg3KTsKKwkmZGF0YV9ieXRlKDB4MzQsIDB4OGUsIDB4NDMsIDB4NDQsIDB4YzQsIDB4ZGUsIDB4ZTksIDB4Y2IpOworCSZkYXRhX2J5dGUoMHg1NCwgMHg3YiwgMHg5NCwgMHgzMiwgMHhhNiwgMHhjMiwgMHgyMywgMHgzZCk7CisJJmRhdGFfYnl0ZSgweGVlLCAweDRjLCAweDk1LCAweDBiLCAweDQyLCAweGZhLCAweGMzLCAweDRlKTsKKwkmZGF0YV9ieXRlKDB4MDgsIDB4MmUsIDB4YTEsIDB4NjYsIDB4MjgsIDB4ZDksIDB4MjQsIDB4YjIpOworCSZkYXRhX2J5dGUoMHg3NiwgMHg1YiwgMHhhMiwgMHg0OSwgMHg2ZCwgMHg4YiwgMHhkMSwgMHgyNSk7CisJJmRhdGFfYnl0ZSgweDcyLCAweGY4LCAweGY2LCAweDY0LCAweDg2LCAweDY4LCAweDk4LCAweDE2KTsKKwkmZGF0YV9ieXRlKDB4ZDQsIDB4YTQsIDB4NWMsIDB4Y2MsIDB4NWQsIDB4NjUsIDB4YjYsIDB4OTIpOworCSZkYXRhX2J5dGUoMHg2YywgMHg3MCwgMHg0OCwgMHg1MCwgMHhmZCwgMHhlZCwgMHhiOSwgMHhkYSk7CisJJmRhdGFfYnl0ZSgweDVlLCAweDE1LCAweDQ2LCAweDU3LCAweGE3LCAweDhkLCAweDlkLCAweDg0KTsKKwkmZGF0YV9ieXRlKDB4OTAsIDB4ZDgsIDB4YWIsIDB4MDAsIDB4OGMsIDB4YmMsIDB4ZDMsIDB4MGEpOworCSZkYXRhX2J5dGUoMHhmNywgMHhlNCwgMHg1OCwgMHgwNSwgMHhiOCwgMHhiMywgMHg0NSwgMHgwNik7CisJJmRhdGFfYnl0ZSgweGQwLCAweDJjLCAweDFlLCAweDhmLCAweGNhLCAweDNmLCAweDBmLCAweDAyKTsKKwkmZGF0YV9ieXRlKDB4YzEsIDB4YWYsIDB4YmQsIDB4MDMsIDB4MDEsIDB4MTMsIDB4OGEsIDB4NmIpOworCSZkYXRhX2J5dGUoMHgzYSwgMHg5MSwgMHgxMSwgMHg0MSwgMHg0ZiwgMHg2NywgMHhkYywgMHhlYSk7CisJJmRhdGFfYnl0ZSgweDk3LCAweGYyLCAweGNmLCAweGNlLCAweGYwLCAweGI0LCAweGU2LCAweDczKTsKKwkmZGF0YV9ieXRlKDB4OTYsIDB4YWMsIDB4NzQsIDB4MjIsIDB4ZTcsIDB4YWQsIDB4MzUsIDB4ODUpOworCSZkYXRhX2J5dGUoMHhlMiwgMHhmOSwgMHgzNywgMHhlOCwgMHgxYywgMHg3NSwgMHhkZiwgMHg2ZSk7CisJJmRhdGFfYnl0ZSgweDQ3LCAweGYxLCAweDFhLCAweDcxLCAweDFkLCAweDI5LCAweGM1LCAweDg5KTsKKwkmZGF0YV9ieXRlKDB4NmYsIDB4YjcsIDB4NjIsIDB4MGUsIDB4YWEsIDB4MTgsIDB4YmUsIDB4MWIpOworCSZkYXRhX2J5dGUoMHhmYywgMHg1NiwgMHgzZSwgMHg0YiwgMHhjNiwgMHhkMiwgMHg3OSwgMHgyMCk7CisJJmRhdGFfYnl0ZSgweDlhLCAweGRiLCAweGMwLCAweGZlLCAweDc4LCAweGNkLCAweDVhLCAweGY0KTsKKwkmZGF0YV9ieXRlKDB4MWYsIDB4ZGQsIDB4YTgsIDB4MzMsIDB4ODgsIDB4MDcsIDB4YzcsIDB4MzEpOworCSZkYXRhX2J5dGUoMHhiMSwgMHgxMiwgMHgxMCwgMHg1OSwgMHgyNywgMHg4MCwgMHhlYywgMHg1Zik7CisJJmRhdGFfYnl0ZSgweDYwLCAweDUxLCAweDdmLCAweGE5LCAweDE5LCAweGI1LCAweDRhLCAweDBkKTsKKwkmZGF0YV9ieXRlKDB4MmQsIDB4ZTUsIDB4N2EsIDB4OWYsIDB4OTMsIDB4YzksIDB4OWMsIDB4ZWYpOworCSZkYXRhX2J5dGUoMHhhMCwgMHhlMCwgMHgzYiwgMHg0ZCwgMHhhZSwgMHgyYSwgMHhmNSwgMHhiMCk7CisJJmRhdGFfYnl0ZSgweGM4LCAweGViLCAweGJiLCAweDNjLCAweDgzLCAweDUzLCAweDk5LCAweDYxKTsKKwkmZGF0YV9ieXRlKDB4MTcsIDB4MmIsIDB4MDQsIDB4N2UsIDB4YmEsIDB4NzcsIDB4ZDYsIDB4MjYpOworCSZkYXRhX2J5dGUoMHhlMSwgMHg2OSwgMHgxNCwgMHg2MywgMHg1NSwgMHgyMSwgMHgwYywgMHg3ZCk7CisKKwkmZGF0YV9ieXRlKDB4NTIsIDB4MDksIDB4NmEsIDB4ZDUsIDB4MzAsIDB4MzYsIDB4YTUsIDB4MzgpOworCSZkYXRhX2J5dGUoMHhiZiwgMHg0MCwgMHhhMywgMHg5ZSwgMHg4MSwgMHhmMywgMHhkNywgMHhmYik7CisJJmRhdGFfYnl0ZSgweDdjLCAweGUzLCAweDM5LCAweDgyLCAweDliLCAweDJmLCAweGZmLCAweDg3KTsKKwkmZGF0YV9ieXRlKDB4MzQsIDB4OGUsIDB4NDMsIDB4NDQsIDB4YzQsIDB4ZGUsIDB4ZTksIDB4Y2IpOworCSZkYXRhX2J5dGUoMHg1NCwgMHg3YiwgMHg5NCwgMHgzMiwgMHhhNiwgMHhjMiwgMHgyMywgMHgzZCk7CisJJmRhdGFfYnl0ZSgweGVlLCAweDRjLCAweDk1LCAweDBiLCAweDQyLCAweGZhLCAweGMzLCAweDRlKTsKKwkmZGF0YV9ieXRlKDB4MDgsIDB4MmUsIDB4YTEsIDB4NjYsIDB4MjgsIDB4ZDksIDB4MjQsIDB4YjIpOworCSZkYXRhX2J5dGUoMHg3NiwgMHg1YiwgMHhhMiwgMHg0OSwgMHg2ZCwgMHg4YiwgMHhkMSwgMHgyNSk7CisJJmRhdGFfYnl0ZSgweDcyLCAweGY4LCAweGY2LCAweDY0LCAweDg2LCAweDY4LCAweDk4LCAweDE2KTsKKwkmZGF0YV9ieXRlKDB4ZDQsIDB4YTQsIDB4NWMsIDB4Y2MsIDB4NWQsIDB4NjUsIDB4YjYsIDB4OTIpOworCSZkYXRhX2J5dGUoMHg2YywgMHg3MCwgMHg0OCwgMHg1MCwgMHhmZCwgMHhlZCwgMHhiOSwgMHhkYSk7CisJJmRhdGFfYnl0ZSgweDVlLCAweDE1LCAweDQ2LCAweDU3LCAweGE3LCAweDhkLCAweDlkLCAweDg0KTsKKwkmZGF0YV9ieXRlKDB4OTAsIDB4ZDgsIDB4YWIsIDB4MDAsIDB4OGMsIDB4YmMsIDB4ZDMsIDB4MGEpOworCSZkYXRhX2J5dGUoMHhmNywgMHhlNCwgMHg1OCwgMHgwNSwgMHhiOCwgMHhiMywgMHg0NSwgMHgwNik7CisJJmRhdGFfYnl0ZSgweGQwLCAweDJjLCAweDFlLCAweDhmLCAweGNhLCAweDNmLCAweDBmLCAweDAyKTsKKwkmZGF0YV9ieXRlKDB4YzEsIDB4YWYsIDB4YmQsIDB4MDMsIDB4MDEsIDB4MTMsIDB4OGEsIDB4NmIpOworCSZkYXRhX2J5dGUoMHgzYSwgMHg5MSwgMHgxMSwgMHg0MSwgMHg0ZiwgMHg2NywgMHhkYywgMHhlYSk7CisJJmRhdGFfYnl0ZSgweDk3LCAweGYyLCAweGNmLCAweGNlLCAweGYwLCAweGI0LCAweGU2LCAweDczKTsKKwkmZGF0YV9ieXRlKDB4OTYsIDB4YWMsIDB4NzQsIDB4MjIsIDB4ZTcsIDB4YWQsIDB4MzUsIDB4ODUpOworCSZkYXRhX2J5dGUoMHhlMiwgMHhmOSwgMHgzNywgMHhlOCwgMHgxYywgMHg3NSwgMHhkZiwgMHg2ZSk7CisJJmRhdGFfYnl0ZSgweDQ3LCAweGYxLCAweDFhLCAweDcxLCAweDFkLCAweDI5LCAweGM1LCAweDg5KTsKKwkmZGF0YV9ieXRlKDB4NmYsIDB4YjcsIDB4NjIsIDB4MGUsIDB4YWEsIDB4MTgsIDB4YmUsIDB4MWIpOworCSZkYXRhX2J5dGUoMHhmYywgMHg1NiwgMHgzZSwgMHg0YiwgMHhjNiwgMHhkMiwgMHg3OSwgMHgyMCk7CisJJmRhdGFfYnl0ZSgweDlhLCAweGRiLCAweGMwLCAweGZlLCAweDc4LCAweGNkLCAweDVhLCAweGY0KTsKKwkmZGF0YV9ieXRlKDB4MWYsIDB4ZGQsIDB4YTgsIDB4MzMsIDB4ODgsIDB4MDcsIDB4YzcsIDB4MzEpOworCSZkYXRhX2J5dGUoMHhiMSwgMHgxMiwgMHgxMCwgMHg1OSwgMHgyNywgMHg4MCwgMHhlYywgMHg1Zik7CisJJmRhdGFfYnl0ZSgweDYwLCAweDUxLCAweDdmLCAweGE5LCAweDE5LCAweGI1LCAweDRhLCAweDBkKTsKKwkmZGF0YV9ieXRlKDB4MmQsIDB4ZTUsIDB4N2EsIDB4OWYsIDB4OTMsIDB4YzksIDB4OWMsIDB4ZWYpOworCSZkYXRhX2J5dGUoMHhhMCwgMHhlMCwgMHgzYiwgMHg0ZCwgMHhhZSwgMHgyYSwgMHhmNSwgMHhiMCk7CisJJmRhdGFfYnl0ZSgweGM4LCAweGViLCAweGJiLCAweDNjLCAweDgzLCAweDUzLCAweDk5LCAweDYxKTsKKwkmZGF0YV9ieXRlKDB4MTcsIDB4MmIsIDB4MDQsIDB4N2UsIDB4YmEsIDB4NzcsIDB4ZDYsIDB4MjYpOworCSZkYXRhX2J5dGUoMHhlMSwgMHg2OSwgMHgxNCwgMHg2MywgMHg1NSwgMHgyMSwgMHgwYywgMHg3ZCk7CisKKwkmZGF0YV9ieXRlKDB4NTIsIDB4MDksIDB4NmEsIDB4ZDUsIDB4MzAsIDB4MzYsIDB4YTUsIDB4MzgpOworCSZkYXRhX2J5dGUoMHhiZiwgMHg0MCwgMHhhMywgMHg5ZSwgMHg4MSwgMHhmMywgMHhkNywgMHhmYik7CisJJmRhdGFfYnl0ZSgweDdjLCAweGUzLCAweDM5LCAweDgyLCAweDliLCAweDJmLCAweGZmLCAweDg3KTsKKwkmZGF0YV9ieXRlKDB4MzQsIDB4OGUsIDB4NDMsIDB4NDQsIDB4YzQsIDB4ZGUsIDB4ZTksIDB4Y2IpOworCSZkYXRhX2J5dGUoMHg1NCwgMHg3YiwgMHg5NCwgMHgzMiwgMHhhNiwgMHhjMiwgMHgyMywgMHgzZCk7CisJJmRhdGFfYnl0ZSgweGVlLCAweDRjLCAweDk1LCAweDBiLCAweDQyLCAweGZhLCAweGMzLCAweDRlKTsKKwkmZGF0YV9ieXRlKDB4MDgsIDB4MmUsIDB4YTEsIDB4NjYsIDB4MjgsIDB4ZDksIDB4MjQsIDB4YjIpOworCSZkYXRhX2J5dGUoMHg3NiwgMHg1YiwgMHhhMiwgMHg0OSwgMHg2ZCwgMHg4YiwgMHhkMSwgMHgyNSk7CisJJmRhdGFfYnl0ZSgweDcyLCAweGY4LCAweGY2LCAweDY0LCAweDg2LCAweDY4LCAweDk4LCAweDE2KTsKKwkmZGF0YV9ieXRlKDB4ZDQsIDB4YTQsIDB4NWMsIDB4Y2MsIDB4NWQsIDB4NjUsIDB4YjYsIDB4OTIpOworCSZkYXRhX2J5dGUoMHg2YywgMHg3MCwgMHg0OCwgMHg1MCwgMHhmZCwgMHhlZCwgMHhiOSwgMHhkYSk7CisJJmRhdGFfYnl0ZSgweDVlLCAweDE1LCAweDQ2LCAweDU3LCAweGE3LCAweDhkLCAweDlkLCAweDg0KTsKKwkmZGF0YV9ieXRlKDB4OTAsIDB4ZDgsIDB4YWIsIDB4MDAsIDB4OGMsIDB4YmMsIDB4ZDMsIDB4MGEpOworCSZkYXRhX2J5dGUoMHhmNywgMHhlNCwgMHg1OCwgMHgwNSwgMHhiOCwgMHhiMywgMHg0NSwgMHgwNik7CisJJmRhdGFfYnl0ZSgweGQwLCAweDJjLCAweDFlLCAweDhmLCAweGNhLCAweDNmLCAweDBmLCAweDAyKTsKKwkmZGF0YV9ieXRlKDB4YzEsIDB4YWYsIDB4YmQsIDB4MDMsIDB4MDEsIDB4MTMsIDB4OGEsIDB4NmIpOworCSZkYXRhX2J5dGUoMHgzYSwgMHg5MSwgMHgxMSwgMHg0MSwgMHg0ZiwgMHg2NywgMHhkYywgMHhlYSk7CisJJmRhdGFfYnl0ZSgweDk3LCAweGYyLCAweGNmLCAweGNlLCAweGYwLCAweGI0LCAweGU2LCAweDczKTsKKwkmZGF0YV9ieXRlKDB4OTYsIDB4YWMsIDB4NzQsIDB4MjIsIDB4ZTcsIDB4YWQsIDB4MzUsIDB4ODUpOworCSZkYXRhX2J5dGUoMHhlMiwgMHhmOSwgMHgzNywgMHhlOCwgMHgxYywgMHg3NSwgMHhkZiwgMHg2ZSk7CisJJmRhdGFfYnl0ZSgweDQ3LCAweGYxLCAweDFhLCAweDcxLCAweDFkLCAweDI5LCAweGM1LCAweDg5KTsKKwkmZGF0YV9ieXRlKDB4NmYsIDB4YjcsIDB4NjIsIDB4MGUsIDB4YWEsIDB4MTgsIDB4YmUsIDB4MWIpOworCSZkYXRhX2J5dGUoMHhmYywgMHg1NiwgMHgzZSwgMHg0YiwgMHhjNiwgMHhkMiwgMHg3OSwgMHgyMCk7CisJJmRhdGFfYnl0ZSgweDlhLCAweGRiLCAweGMwLCAweGZlLCAweDc4LCAweGNkLCAweDVhLCAweGY0KTsKKwkmZGF0YV9ieXRlKDB4MWYsIDB4ZGQsIDB4YTgsIDB4MzMsIDB4ODgsIDB4MDcsIDB4YzcsIDB4MzEpOworCSZkYXRhX2J5dGUoMHhiMSwgMHgxMiwgMHgxMCwgMHg1OSwgMHgyNywgMHg4MCwgMHhlYywgMHg1Zik7CisJJmRhdGFfYnl0ZSgweDYwLCAweDUxLCAweDdmLCAweGE5LCAweDE5LCAweGI1LCAweDRhLCAweDBkKTsKKwkmZGF0YV9ieXRlKDB4MmQsIDB4ZTUsIDB4N2EsIDB4OWYsIDB4OTMsIDB4YzksIDB4OWMsIDB4ZWYpOworCSZkYXRhX2J5dGUoMHhhMCwgMHhlMCwgMHgzYiwgMHg0ZCwgMHhhZSwgMHgyYSwgMHhmNSwgMHhiMCk7CisJJmRhdGFfYnl0ZSgweGM4LCAweGViLCAweGJiLCAweDNjLCAweDgzLCAweDUzLCAweDk5LCAweDYxKTsKKwkmZGF0YV9ieXRlKDB4MTcsIDB4MmIsIDB4MDQsIDB4N2UsIDB4YmEsIDB4NzcsIDB4ZDYsIDB4MjYpOworCSZkYXRhX2J5dGUoMHhlMSwgMHg2OSwgMHgxNCwgMHg2MywgMHg1NSwgMHgyMSwgMHgwYywgMHg3ZCk7CismZnVuY3Rpb25fZW5kX0IoIl94ODZfQUVTX2RlY3J5cHQiKTsKKworIyB2b2lkIEFFU19kZWNyeXB0IChjb25zdCB2b2lkICppbnAsdm9pZCAqb3V0LGNvbnN0IEFFU19LRVkgKmtleSk7CismZnVuY3Rpb25fYmVnaW4oIkFFU19kZWNyeXB0Iik7CisJJm1vdgkoJGFjYywmd3BhcmFtKDApKTsJCSMgbG9hZCBpbnAKKwkmbW92CSgka2V5LCZ3cGFyYW0oMikpOwkJIyBsb2FkIGtleQorCisJJm1vdgkoJHMwLCJlc3AiKTsKKwkmc3ViCSgiZXNwIiwzNik7CisJJmFuZAkoImVzcCIsLTY0KTsJCQkjIGFsaWduIHRvIGNhY2hlLWxpbmUKKworCSMgcGxhY2Ugc3RhY2sgZnJhbWUganVzdCAiYWJvdmUiIHRoZSBrZXkgc2NoZWR1bGUKKwkmbGVhCSgkczEsJkRXUCgtNjQtNjMsJGtleSkpOworCSZzdWIJKCRzMSwiZXNwIik7CisJJm5lZwkoJHMxKTsKKwkmYW5kCSgkczEsMHgzQzApOwkjIG1vZHVsbyAxMDI0LCBidXQgYWxpZ25lZCB0byBjYWNoZS1saW5lCisJJnN1YgkoImVzcCIsJHMxKTsKKwkmYWRkCSgiZXNwIiw0KTsJIyA0IGlzIHJlc2VydmVkIGZvciBjYWxsZXIncyByZXR1cm4gYWRkcmVzcworCSZtb3YJKCRfZXNwLCRzMCk7CSMgc2F2ZSBzdGFjayBwb2ludGVyCisKKwkmY2FsbCAgICgmbGFiZWwoInBpY19wb2ludCIpKTsgICAgICAgICAgIyBtYWtlIGl0IFBJQyEKKwkmc2V0X2xhYmVsKCJwaWNfcG9pbnQiKTsKKwkmYmxpbmRwb3AoJHRibCk7CisJJnBpY21ldXAoJHMwLCJPUEVOU1NMX2lhMzJjYXBfUCIsJHRibCwmbGFiZWwoInBpY19wb2ludCIpKSBpZighJHg4Nm9ubHkpOworCSZsZWEgICAgKCR0YmwsJkRXUCgmbGFiZWwoIkFFU19UZCIpLiItIi4mbGFiZWwoInBpY19wb2ludCIpLCR0YmwpKTsKKworCSMgcGljayBUZDQgY29weSB3aGljaCBjYW4ndCAib3ZlcmxhcCIgd2l0aCBzdGFjayBmcmFtZSBvciBrZXkgc2NoZWR1bGUKKwkmbGVhCSgkczEsJkRXUCg3NjgtNCwiZXNwIikpOworCSZzdWIJKCRzMSwkdGJsKTsKKwkmYW5kCSgkczEsMHgzMDApOworCSZsZWEJKCR0YmwsJkRXUCgyMDQ4KzEyOCwkdGJsLCRzMSkpOworCisJCQkJCWlmICghJHg4Nm9ubHkpIHsKKwkmYnQJKCZEV1AoMCwkczApLDI1KTsJIyBjaGVjayBmb3IgU1NFIGJpdAorCSZqbmMJKCZsYWJlbCgieDg2IikpOworCisJJm1vdnEJKCJtbTAiLCZRV1AoMCwkYWNjKSk7CisJJm1vdnEJKCJtbTQiLCZRV1AoOCwkYWNjKSk7CisJJmNhbGwJKCJfc3NlX0FFU19kZWNyeXB0X2NvbXBhY3QiKTsKKwkmbW92CSgiZXNwIiwkX2VzcCk7CQkJIyByZXN0b3JlIHN0YWNrIHBvaW50ZXIKKwkmbW92CSgkYWNjLCZ3cGFyYW0oMSkpOwkJIyBsb2FkIG91dAorCSZtb3ZxCSgmUVdQKDAsJGFjYyksIm1tMCIpOwkJIyB3cml0ZSBvdXRwdXQgZGF0YQorCSZtb3ZxCSgmUVdQKDgsJGFjYyksIm1tNCIpOworCSZlbW1zCSgpOworCSZmdW5jdGlvbl9lbmRfQSgpOworCQkJCQl9CisJJnNldF9sYWJlbCgieDg2IiwxNik7CisJJm1vdgkoJF90YmwsJHRibCk7CisJJm1vdgkoJHMwLCZEV1AoMCwkYWNjKSk7CQkjIGxvYWQgaW5wdXQgZGF0YQorCSZtb3YJKCRzMSwmRFdQKDQsJGFjYykpOworCSZtb3YJKCRzMiwmRFdQKDgsJGFjYykpOworCSZtb3YJKCRzMywmRFdQKDEyLCRhY2MpKTsKKwkmY2FsbAkoIl94ODZfQUVTX2RlY3J5cHRfY29tcGFjdCIpOworCSZtb3YJKCJlc3AiLCRfZXNwKTsJCQkjIHJlc3RvcmUgc3RhY2sgcG9pbnRlcgorCSZtb3YJKCRhY2MsJndwYXJhbSgxKSk7CQkjIGxvYWQgb3V0CisJJm1vdgkoJkRXUCgwLCRhY2MpLCRzMCk7CQkjIHdyaXRlIG91dHB1dCBkYXRhCisJJm1vdgkoJkRXUCg0LCRhY2MpLCRzMSk7CisJJm1vdgkoJkRXUCg4LCRhY2MpLCRzMik7CisJJm1vdgkoJkRXUCgxMiwkYWNjKSwkczMpOworJmZ1bmN0aW9uX2VuZCgiQUVTX2RlY3J5cHQiKTsKKworIyB2b2lkIEFFU19jYmNfZW5jcnlwdCAoY29uc3Qgdm9pZCBjaGFyICppbnAsIHVuc2lnbmVkIGNoYXIgKm91dCwKKyMJCQlzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisjCQkJdW5zaWduZWQgY2hhciAqaXZwLGNvbnN0IGludCBlbmMpOworeworIyBzdGFjayBmcmFtZSBsYXlvdXQKKyMgICAgICAgICAgICAgLTQoJWVzcCkJCSMgcmV0dXJuIGFkZHJlc3MJIDAoJWVzcCkKKyMgICAgICAgICAgICAgIDAoJWVzcCkJCSMgczAgYmFja2luZyBzdG9yZQkgNCglZXNwKQkKKyMgICAgICAgICAgICAgIDQoJWVzcCkJCSMgczEgYmFja2luZyBzdG9yZQkgOCglZXNwKQorIyAgICAgICAgICAgICAgOCglZXNwKQkJIyBzMiBiYWNraW5nIHN0b3JlCTEyKCVlc3ApCisjICAgICAgICAgICAgIDEyKCVlc3ApCQkjIHMzIGJhY2tpbmcgc3RvcmUJMTYoJWVzcCkKKyMgICAgICAgICAgICAgMTYoJWVzcCkJCSMga2V5IGJhY2t1cAkJMjAoJWVzcCkKKyMgICAgICAgICAgICAgMjAoJWVzcCkJCSMgZW5kIG9mIGtleSBzY2hlZHVsZQkyNCglZXNwKQorIyAgICAgICAgICAgICAyNCglZXNwKQkJIyAlZWJwIGJhY2t1cAkJMjgoJWVzcCkKKyMgICAgICAgICAgICAgMjgoJWVzcCkJCSMgJWVzcCBiYWNrdXAKK215ICRfaW5wPSZEV1AoMzIsImVzcCIpOwkjIGNvcHkgb2Ygd3BhcmFtKDApCitteSAkX291dD0mRFdQKDM2LCJlc3AiKTsJIyBjb3B5IG9mIHdwYXJhbSgxKQorbXkgJF9sZW49JkRXUCg0MCwiZXNwIik7CSMgY29weSBvZiB3cGFyYW0oMikKK215ICRfa2V5PSZEV1AoNDQsImVzcCIpOwkjIGNvcHkgb2Ygd3BhcmFtKDMpCitteSAkX2l2cD0mRFdQKDQ4LCJlc3AiKTsJIyBjb3B5IG9mIHdwYXJhbSg0KQorbXkgJF90bXA9JkRXUCg1MiwiZXNwIik7CSMgdm9sYXRpbGUgdmFyaWFibGUKKyMKK215ICRpdmVjPSZEV1AoNjAsImVzcCIpOwkjIGl2ZWNbMTZdCitteSAkYWVzX2tleT0mRFdQKDc2LCJlc3AiKTsJIyBjb3B5IG9mIGFlc19rZXkKK215ICRtYXJrPSZEV1AoNzYrMjQwLCJlc3AiKTsJIyBjb3B5IG9mIGFlc19rZXktPnJvdW5kcworCismZnVuY3Rpb25fYmVnaW4oIkFFU19jYmNfZW5jcnlwdCIpOworCSZtb3YJKCRzMiBlcSAiZWN4Ij8gJHMyIDogIiIsJndwYXJhbSgyKSk7CSMgbG9hZCBsZW4KKwkmY21wCSgkczIsMCk7CisJJmplCSgmbGFiZWwoImRyb3Bfb3V0IikpOworCisJJmNhbGwgICAoJmxhYmVsKCJwaWNfcG9pbnQiKSk7CQkjIG1ha2UgaXQgUElDIQorCSZzZXRfbGFiZWwoInBpY19wb2ludCIpOworCSZibGluZHBvcCgkdGJsKTsKKwkmcGljbWV1cCgkczAsIk9QRU5TU0xfaWEzMmNhcF9QIiwkdGJsLCZsYWJlbCgicGljX3BvaW50IikpIGlmKCEkeDg2b25seSk7CisKKwkmY21wCSgmd3BhcmFtKDUpLDApOworCSZsZWEgICAgKCR0YmwsJkRXUCgmbGFiZWwoIkFFU19UZSIpLiItIi4mbGFiZWwoInBpY19wb2ludCIpLCR0YmwpKTsKKwkmam5lCSgmbGFiZWwoInBpY2tlZF90ZSIpKTsKKwkmbGVhCSgkdGJsLCZEV1AoJmxhYmVsKCJBRVNfVGQiKS4iLSIuJmxhYmVsKCJBRVNfVGUiKSwkdGJsKSk7CisJJnNldF9sYWJlbCgicGlja2VkX3RlIik7CisKKwkjIG9uZSBjYW4gYXJndWUgaWYgdGhpcyBpcyByZXF1aXJlZAorCSZwdXNoZgkoKTsKKwkmY2xkCSgpOworCisJJmNtcAkoJHMyLCRzcGVlZF9saW1pdCk7CisJJmpiCSgmbGFiZWwoInNsb3dfd2F5IikpOworCSZ0ZXN0CSgkczIsMTUpOworCSZqbnoJKCZsYWJlbCgic2xvd193YXkiKSk7CisJCQkJCWlmICghJHg4Nm9ubHkpIHsKKwkmYnQJKCZEV1AoMCwkczApLDI4KTsJIyBjaGVjayBmb3IgaHlwZXItdGhyZWFkaW5nIGJpdAorCSZqYwkoJmxhYmVsKCJzbG93X3dheSIpKTsKKwkJCQkJfQorCSMgcHJlLWFsbG9jYXRlIGFsaWduZWQgc3RhY2sgZnJhbWUuLi4KKwkmbGVhCSgkYWNjLCZEV1AoLTgwLTI0NCwiZXNwIikpOworCSZhbmQJKCRhY2MsLTY0KTsKKworCSMgLi4uIGFuZCBtYWtlIHN1cmUgaXQgZG9lc24ndCBhbGlhcyB3aXRoICR0YmwgbW9kdWxvIDQwOTYKKwkmbW92CSgkczAsJHRibCk7CisJJmxlYQkoJHMxLCZEV1AoMjA0OCsyNTYsJHRibCkpOworCSZtb3YJKCRzMywkYWNjKTsKKwkmYW5kCSgkczAsMHhmZmYpOwkJIyBzID0gJWVicCYweGZmZgorCSZhbmQJKCRzMSwweGZmZik7CQkjIGUgPSAoJWVicCsyMDQ4KzI1NikmMHhmZmYKKwkmYW5kCSgkczMsMHhmZmYpOwkJIyBwID0gJWVzcCYweGZmZgorCisJJmNtcAkoJHMzLCRzMSk7CQkjIGlmIChwPj1lKSAlZXNwID0tIChwLWUpOworCSZqYgkoJmxhYmVsKCJ0YmxfYnJlYWtfb3V0IikpOworCSZzdWIJKCRzMywkczEpOworCSZzdWIJKCRhY2MsJHMzKTsKKwkmam1wCSgmbGFiZWwoInRibF9vayIpKTsKKwkmc2V0X2xhYmVsKCJ0YmxfYnJlYWtfb3V0Iiw0KTsJIyBlbHNlICVlc3AgLT0gKHAtcykmMHhmZmYgKyBmcmFtZXN6OworCSZzdWIJKCRzMywkczApOworCSZhbmQJKCRzMywweGZmZik7CisJJmFkZAkoJHMzLDM4NCk7CisJJnN1YgkoJGFjYywkczMpOworCSZzZXRfbGFiZWwoInRibF9vayIsNCk7CisKKwkmbGVhCSgkczMsJndwYXJhbSgwKSk7CSMgb2J0YWluIHBvaW50ZXIgdG8gcGFyYW1ldGVyIGJsb2NrCisJJmV4Y2gJKCJlc3AiLCRhY2MpOwkJIyBhbGxvY2F0ZSBzdGFjayBmcmFtZQorCSZhZGQJKCJlc3AiLDQpOwkJIyByZXNlcnZlIGZvciByZXR1cm4gYWRkcmVzcyEKKwkmbW92CSgkX3RibCwkdGJsKTsJCSMgc2F2ZSAlZWJwCisJJm1vdgkoJF9lc3AsJGFjYyk7CQkjIHNhdmUgJWVzcAorCisJJm1vdgkoJHMwLCZEV1AoMCwkczMpKTsJIyBsb2FkIGlucAorCSZtb3YJKCRzMSwmRFdQKDQsJHMzKSk7CSMgbG9hZCBvdXQKKwkjJm1vdgkoJHMyLCZEV1AoOCwkczMpKTsJIyBsb2FkIGxlbgorCSZtb3YJKCRrZXksJkRXUCgxMiwkczMpKTsJIyBsb2FkIGtleQorCSZtb3YJKCRhY2MsJkRXUCgxNiwkczMpKTsJIyBsb2FkIGl2cAorCSZtb3YJKCRzMywmRFdQKDIwLCRzMykpOwkjIGxvYWQgZW5jIGZsYWcKKworCSZtb3YJKCRfaW5wLCRzMCk7CQkjIHNhdmUgY29weSBvZiBpbnAKKwkmbW92CSgkX291dCwkczEpOwkJIyBzYXZlIGNvcHkgb2Ygb3V0CisJJm1vdgkoJF9sZW4sJHMyKTsJCSMgc2F2ZSBjb3B5IG9mIGxlbgorCSZtb3YJKCRfa2V5LCRrZXkpOwkJIyBzYXZlIGNvcHkgb2Yga2V5CisJJm1vdgkoJF9pdnAsJGFjYyk7CQkjIHNhdmUgY29weSBvZiBpdnAKKworCSZtb3YJKCRtYXJrLDApOwkJIyBjb3B5IG9mIGFlc19rZXktPnJvdW5kcyA9IDA7CisJIyBkbyB3ZSBjb3B5IGtleSBzY2hlZHVsZSB0byBzdGFjaz8KKwkmbW92CSgkczEgZXEgImVieCIgPyAkczEgOiAiIiwka2V5KTsKKwkmbW92CSgkczIgZXEgImVjeCIgPyAkczIgOiAiIiwyNDQvNCk7CisJJnN1YgkoJHMxLCR0YmwpOworCSZtb3YJKCJlc2kiLCRrZXkpOworCSZhbmQJKCRzMSwweGZmZik7CisJJmxlYQkoImVkaSIsJGFlc19rZXkpOworCSZjbXAJKCRzMSwyMDQ4KzI1Nik7CisJJmpiCSgmbGFiZWwoImRvX2NvcHkiKSk7CisJJmNtcAkoJHMxLDQwOTYtMjQ0KTsKKwkmamIJKCZsYWJlbCgic2tpcF9jb3B5IikpOworCSZzZXRfbGFiZWwoImRvX2NvcHkiLDQpOworCQkmbW92CSgkX2tleSwiZWRpIik7CisJCSZkYXRhX3dvcmQoMHhBNUYzRjY4OSk7CSMgcmVwIG1vdnNkCisJJnNldF9sYWJlbCgic2tpcF9jb3B5Iik7CisKKwkmbW92CSgka2V5LDE2KTsKKwkmc2V0X2xhYmVsKCJwcmVmZXRjaF90YmwiLDQpOworCQkmbW92CSgkczAsJkRXUCgwLCR0YmwpKTsKKwkJJm1vdgkoJHMxLCZEV1AoMzIsJHRibCkpOworCQkmbW92CSgkczIsJkRXUCg2NCwkdGJsKSk7CisJCSZtb3YJKCRhY2MsJkRXUCg5NiwkdGJsKSk7CisJCSZsZWEJKCR0YmwsJkRXUCgxMjgsJHRibCkpOworCQkmc3ViCSgka2V5LDEpOworCSZqbnoJKCZsYWJlbCgicHJlZmV0Y2hfdGJsIikpOworCSZzdWIJKCR0YmwsMjA0OCk7CisKKwkmbW92CSgkYWNjLCRfaW5wKTsKKwkmbW92CSgka2V5LCRfaXZwKTsKKworCSZjbXAJKCRzMywwKTsKKwkmamUJKCZsYWJlbCgiZmFzdF9kZWNyeXB0IikpOworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRU5DUllQVCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKKwkmbW92CSgkczAsJkRXUCgwLCRrZXkpKTsJCSMgbG9hZCBpdgorCSZtb3YJKCRzMSwmRFdQKDQsJGtleSkpOworCisJJnNldF9sYWJlbCgiZmFzdF9lbmNfbG9vcCIsMTYpOworCQkmbW92CSgkczIsJkRXUCg4LCRrZXkpKTsKKwkJJm1vdgkoJHMzLCZEV1AoMTIsJGtleSkpOworCisJCSZ4b3IJKCRzMCwmRFdQKDAsJGFjYykpOwkjIHhvciBpbnB1dCBkYXRhCisJCSZ4b3IJKCRzMSwmRFdQKDQsJGFjYykpOworCQkmeG9yCSgkczIsJkRXUCg4LCRhY2MpKTsKKwkJJnhvcgkoJHMzLCZEV1AoMTIsJGFjYykpOworCisJCSZtb3YJKCRrZXksJF9rZXkpOwkJIyBsb2FkIGtleQorCQkmY2FsbAkoIl94ODZfQUVTX2VuY3J5cHQiKTsKKworCQkmbW92CSgkYWNjLCRfaW5wKTsJCSMgbG9hZCBpbnAKKwkJJm1vdgkoJGtleSwkX291dCk7CQkjIGxvYWQgb3V0CisKKwkJJm1vdgkoJkRXUCgwLCRrZXkpLCRzMCk7CSMgc2F2ZSBvdXRwdXQgZGF0YQorCQkmbW92CSgmRFdQKDQsJGtleSksJHMxKTsKKwkJJm1vdgkoJkRXUCg4LCRrZXkpLCRzMik7CisJCSZtb3YJKCZEV1AoMTIsJGtleSksJHMzKTsKKworCQkmbGVhCSgkYWNjLCZEV1AoMTYsJGFjYykpOwkjIGFkdmFuY2UgaW5wCisJCSZtb3YJKCRzMiwkX2xlbik7CQkjIGxvYWQgbGVuCisJCSZtb3YJKCRfaW5wLCRhY2MpOwkJIyBzYXZlIGlucAorCQkmbGVhCSgkczMsJkRXUCgxNiwka2V5KSk7CSMgYWR2YW5jZSBvdXQKKwkJJm1vdgkoJF9vdXQsJHMzKTsJCSMgc2F2ZSBvdXQKKwkJJnN1YgkoJHMyLDE2KTsJCSMgZGVjcmVhc2UgbGVuCisJCSZtb3YJKCRfbGVuLCRzMik7CQkjIHNhdmUgbGVuCisJJmpuegkoJmxhYmVsKCJmYXN0X2VuY19sb29wIikpOworCSZtb3YJKCRhY2MsJF9pdnApOwkJIyBsb2FkIGl2cAorCSZtb3YJKCRzMiwmRFdQKDgsJGtleSkpOwkjIHJlc3RvcmUgbGFzdCAyIGR3b3JkcworCSZtb3YJKCRzMywmRFdQKDEyLCRrZXkpKTsKKwkmbW92CSgmRFdQKDAsJGFjYyksJHMwKTsJIyBzYXZlIGl2ZWMKKwkmbW92CSgmRFdQKDQsJGFjYyksJHMxKTsKKwkmbW92CSgmRFdQKDgsJGFjYyksJHMyKTsKKwkmbW92CSgmRFdQKDEyLCRhY2MpLCRzMyk7CisKKwkmY21wCSgkbWFyaywwKTsJCSMgd2FzIHRoZSBrZXkgc2NoZWR1bGUgY29waWVkPworCSZtb3YJKCJlZGkiLCRfa2V5KTsKKwkmamUJKCZsYWJlbCgic2tpcF9lemVybyIpKTsKKwkjIHplcm8gY29weSBvZiBrZXkgc2NoZWR1bGUKKwkmbW92CSgiZWN4IiwyNDAvNCk7CisJJnhvcgkoImVheCIsImVheCIpOworCSZhbGlnbgkoNCk7CisJJmRhdGFfd29yZCgweEFCRjNGNjg5KTsJIyByZXAgc3Rvc2QKKwkmc2V0X2xhYmVsKCJza2lwX2V6ZXJvIikKKwkmbW92CSgiZXNwIiwkX2VzcCk7CisJJnBvcGYJKCk7CisgICAgJnNldF9sYWJlbCgiZHJvcF9vdXQiKTsKKwkmZnVuY3Rpb25fZW5kX0EoKTsKKwkmcHVzaGYJKCk7CQkJIyBrbHVkZ2UsIG5ldmVyIGV4ZWN1dGVkCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBERUNSWVBUIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIworJnNldF9sYWJlbCgiZmFzdF9kZWNyeXB0IiwxNik7CisKKwkmY21wCSgkYWNjLCRfb3V0KTsKKwkmamUJKCZsYWJlbCgiZmFzdF9kZWNfaW5fcGxhY2UiKSk7CSMgaW4tcGxhY2UgcHJvY2Vzc2luZy4uLgorCisJJm1vdgkoJF90bXAsJGtleSk7CisKKwkmYWxpZ24JKDQpOworCSZzZXRfbGFiZWwoImZhc3RfZGVjX2xvb3AiLDE2KTsKKwkJJm1vdgkoJHMwLCZEV1AoMCwkYWNjKSk7CSMgcmVhZCBpbnB1dAorCQkmbW92CSgkczEsJkRXUCg0LCRhY2MpKTsKKwkJJm1vdgkoJHMyLCZEV1AoOCwkYWNjKSk7CisJCSZtb3YJKCRzMywmRFdQKDEyLCRhY2MpKTsKKworCQkmbW92CSgka2V5LCRfa2V5KTsJCSMgbG9hZCBrZXkKKwkJJmNhbGwJKCJfeDg2X0FFU19kZWNyeXB0Iik7CisKKwkJJm1vdgkoJGtleSwkX3RtcCk7CQkjIGxvYWQgaXZwCisJCSZtb3YJKCRhY2MsJF9sZW4pOwkJIyBsb2FkIGxlbgorCQkmeG9yCSgkczAsJkRXUCgwLCRrZXkpKTsJIyB4b3IgaXYKKwkJJnhvcgkoJHMxLCZEV1AoNCwka2V5KSk7CisJCSZ4b3IJKCRzMiwmRFdQKDgsJGtleSkpOworCQkmeG9yCSgkczMsJkRXUCgxMiwka2V5KSk7CisKKwkJJm1vdgkoJGtleSwkX291dCk7CQkjIGxvYWQgb3V0CisJCSZtb3YJKCRhY2MsJF9pbnApOwkJIyBsb2FkIGlucAorCisJCSZtb3YJKCZEV1AoMCwka2V5KSwkczApOwkjIHdyaXRlIG91dHB1dAorCQkmbW92CSgmRFdQKDQsJGtleSksJHMxKTsKKwkJJm1vdgkoJkRXUCg4LCRrZXkpLCRzMik7CisJCSZtb3YJKCZEV1AoMTIsJGtleSksJHMzKTsKKworCQkmbW92CSgkczIsJF9sZW4pOwkJIyBsb2FkIGxlbgorCQkmbW92CSgkX3RtcCwkYWNjKTsJCSMgc2F2ZSBpdnAKKwkJJmxlYQkoJGFjYywmRFdQKDE2LCRhY2MpKTsJIyBhZHZhbmNlIGlucAorCQkmbW92CSgkX2lucCwkYWNjKTsJCSMgc2F2ZSBpbnAKKwkJJmxlYQkoJGtleSwmRFdQKDE2LCRrZXkpKTsJIyBhZHZhbmNlIG91dAorCQkmbW92CSgkX291dCwka2V5KTsJCSMgc2F2ZSBvdXQKKwkJJnN1YgkoJHMyLDE2KTsJCSMgZGVjcmVhc2UgbGVuCisJCSZtb3YJKCRfbGVuLCRzMik7CQkjIHNhdmUgbGVuCisJJmpuegkoJmxhYmVsKCJmYXN0X2RlY19sb29wIikpOworCSZtb3YJKCRrZXksJF90bXApOwkJIyBsb2FkIHRlbXAgaXZwCisJJm1vdgkoJGFjYywkX2l2cCk7CQkjIGxvYWQgdXNlciBpdnAKKwkmbW92CSgkczAsJkRXUCgwLCRrZXkpKTsJIyBsb2FkIGl2CisJJm1vdgkoJHMxLCZEV1AoNCwka2V5KSk7CisJJm1vdgkoJHMyLCZEV1AoOCwka2V5KSk7CisJJm1vdgkoJHMzLCZEV1AoMTIsJGtleSkpOworCSZtb3YJKCZEV1AoMCwkYWNjKSwkczApOwkjIGNvcHkgYmFjayB0byB1c2VyCisJJm1vdgkoJkRXUCg0LCRhY2MpLCRzMSk7CisJJm1vdgkoJkRXUCg4LCRhY2MpLCRzMik7CisJJm1vdgkoJkRXUCgxMiwkYWNjKSwkczMpOworCSZqbXAJKCZsYWJlbCgiZmFzdF9kZWNfb3V0IikpOworCisgICAgJnNldF9sYWJlbCgiZmFzdF9kZWNfaW5fcGxhY2UiLDE2KTsKKwkmc2V0X2xhYmVsKCJmYXN0X2RlY19pbl9wbGFjZV9sb29wIik7CisJCSZtb3YJKCRzMCwmRFdQKDAsJGFjYykpOwkjIHJlYWQgaW5wdXQKKwkJJm1vdgkoJHMxLCZEV1AoNCwkYWNjKSk7CisJCSZtb3YJKCRzMiwmRFdQKDgsJGFjYykpOworCQkmbW92CSgkczMsJkRXUCgxMiwkYWNjKSk7CisKKwkJJmxlYQkoJGtleSwkaXZlYyk7CisJCSZtb3YJKCZEV1AoMCwka2V5KSwkczApOwkjIGNvcHkgdG8gdGVtcAorCQkmbW92CSgmRFdQKDQsJGtleSksJHMxKTsKKwkJJm1vdgkoJkRXUCg4LCRrZXkpLCRzMik7CisJCSZtb3YJKCZEV1AoMTIsJGtleSksJHMzKTsKKworCQkmbW92CSgka2V5LCRfa2V5KTsJCSMgbG9hZCBrZXkKKwkJJmNhbGwJKCJfeDg2X0FFU19kZWNyeXB0Iik7CisKKwkJJm1vdgkoJGtleSwkX2l2cCk7CQkjIGxvYWQgaXZwCisJCSZtb3YJKCRhY2MsJF9vdXQpOwkJIyBsb2FkIG91dAorCQkmeG9yCSgkczAsJkRXUCgwLCRrZXkpKTsJIyB4b3IgaXYKKwkJJnhvcgkoJHMxLCZEV1AoNCwka2V5KSk7CisJCSZ4b3IJKCRzMiwmRFdQKDgsJGtleSkpOworCQkmeG9yCSgkczMsJkRXUCgxMiwka2V5KSk7CisKKwkJJm1vdgkoJkRXUCgwLCRhY2MpLCRzMCk7CSMgd3JpdGUgb3V0cHV0CisJCSZtb3YJKCZEV1AoNCwkYWNjKSwkczEpOworCQkmbW92CSgmRFdQKDgsJGFjYyksJHMyKTsKKwkJJm1vdgkoJkRXUCgxMiwkYWNjKSwkczMpOworCisJCSZsZWEJKCRhY2MsJkRXUCgxNiwkYWNjKSk7CSMgYWR2YW5jZSBvdXQKKwkJJm1vdgkoJF9vdXQsJGFjYyk7CQkjIHNhdmUgb3V0CisKKwkJJmxlYQkoJGFjYywkaXZlYyk7CisJCSZtb3YJKCRzMCwmRFdQKDAsJGFjYykpOwkjIHJlYWQgdGVtcAorCQkmbW92CSgkczEsJkRXUCg0LCRhY2MpKTsKKwkJJm1vdgkoJHMyLCZEV1AoOCwkYWNjKSk7CisJCSZtb3YJKCRzMywmRFdQKDEyLCRhY2MpKTsKKworCQkmbW92CSgmRFdQKDAsJGtleSksJHMwKTsJIyBjb3B5IGl2CisJCSZtb3YJKCZEV1AoNCwka2V5KSwkczEpOworCQkmbW92CSgmRFdQKDgsJGtleSksJHMyKTsKKwkJJm1vdgkoJkRXUCgxMiwka2V5KSwkczMpOworCisJCSZtb3YJKCRhY2MsJF9pbnApOwkJIyBsb2FkIGlucAorCQkmbW92CSgkczIsJF9sZW4pOwkJIyBsb2FkIGxlbgorCQkmbGVhCSgkYWNjLCZEV1AoMTYsJGFjYykpOwkjIGFkdmFuY2UgaW5wCisJCSZtb3YJKCRfaW5wLCRhY2MpOwkJIyBzYXZlIGlucAorCQkmc3ViCSgkczIsMTYpOwkJIyBkZWNyZWFzZSBsZW4KKwkJJm1vdgkoJF9sZW4sJHMyKTsJCSMgc2F2ZSBsZW4KKwkmam56CSgmbGFiZWwoImZhc3RfZGVjX2luX3BsYWNlX2xvb3AiKSk7CisKKyAgICAmc2V0X2xhYmVsKCJmYXN0X2RlY19vdXQiLDQpOworCSZjbXAJKCRtYXJrLDApOwkJIyB3YXMgdGhlIGtleSBzY2hlZHVsZSBjb3BpZWQ/CisJJm1vdgkoImVkaSIsJF9rZXkpOworCSZqZQkoJmxhYmVsKCJza2lwX2R6ZXJvIikpOworCSMgemVybyBjb3B5IG9mIGtleSBzY2hlZHVsZQorCSZtb3YJKCJlY3giLDI0MC80KTsKKwkmeG9yCSgiZWF4IiwiZWF4Iik7CisJJmFsaWduCSg0KTsKKwkmZGF0YV93b3JkKDB4QUJGM0Y2ODkpOwkjIHJlcCBzdG9zZAorCSZzZXRfbGFiZWwoInNraXBfZHplcm8iKQorCSZtb3YJKCJlc3AiLCRfZXNwKTsKKwkmcG9wZgkoKTsKKwkmZnVuY3Rpb25fZW5kX0EoKTsKKwkmcHVzaGYJKCk7CQkJIyBrbHVkZ2UsIG5ldmVyIGV4ZWN1dGVkCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU0xPVyBST1VUSU5FIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKKyZzZXRfbGFiZWwoInNsb3dfd2F5IiwxNik7CisKKwkmbW92CSgkczAsJkRXUCgwLCRzMCkpIGlmICghJHg4Nm9ubHkpOyMgbG9hZCBPUEVOU1NMX2lhMzJjYXAKKwkmbW92CSgka2V5LCZ3cGFyYW0oMykpOwkjIGxvYWQga2V5CisKKwkjIHByZS1hbGxvY2F0ZSBhbGlnbmVkIHN0YWNrIGZyYW1lLi4uCisJJmxlYQkoJGFjYywmRFdQKC04MCwiZXNwIikpOworCSZhbmQJKCRhY2MsLTY0KTsKKworCSMgLi4uIGFuZCBtYWtlIHN1cmUgaXQgZG9lc24ndCBhbGlhcyB3aXRoICRrZXkgbW9kdWxvIDEwMjQKKwkmbGVhCSgkczEsJkRXUCgtODAtNjMsJGtleSkpOworCSZzdWIJKCRzMSwkYWNjKTsKKwkmbmVnCSgkczEpOworCSZhbmQJKCRzMSwweDNDMCk7CSMgbW9kdWxvIDEwMjQsIGJ1dCBhbGlnbmVkIHRvIGNhY2hlLWxpbmUKKwkmc3ViCSgkYWNjLCRzMSk7CisKKwkjIHBpY2sgUy1ib3ggY29weSB3aGljaCBjYW4ndCBvdmVybGFwIHdpdGggc3RhY2sgZnJhbWUgb3IgJGtleQorCSZsZWEJKCRzMSwmRFdQKDc2OCwkYWNjKSk7CisJJnN1YgkoJHMxLCR0YmwpOworCSZhbmQJKCRzMSwweDMwMCk7CisJJmxlYQkoJHRibCwmRFdQKDIwNDgrMTI4LCR0YmwsJHMxKSk7CisKKwkmbGVhCSgkczMsJndwYXJhbSgwKSk7CSMgcG9pbnRlciB0byBwYXJhbWV0ZXIgYmxvY2sKKworCSZleGNoCSgiZXNwIiwkYWNjKTsKKwkmYWRkCSgiZXNwIiw0KTsJCSMgcmVzZXJ2ZSBmb3IgcmV0dXJuIGFkZHJlc3MhCisJJm1vdgkoJF90YmwsJHRibCk7CQkjIHNhdmUgJWVicAorCSZtb3YJKCRfZXNwLCRhY2MpOwkJIyBzYXZlICVlc3AKKwkmbW92CSgkX3RtcCwkczApOwkJIyBzYXZlIE9QRU5TU0xfaWEzMmNhcAorCisJJm1vdgkoJHMwLCZEV1AoMCwkczMpKTsJIyBsb2FkIGlucAorCSZtb3YJKCRzMSwmRFdQKDQsJHMzKSk7CSMgbG9hZCBvdXQKKwkjJm1vdgkoJHMyLCZEV1AoOCwkczMpKTsJIyBsb2FkIGxlbgorCSMmbW92CSgka2V5LCZEV1AoMTIsJHMzKSk7CSMgbG9hZCBrZXkKKwkmbW92CSgkYWNjLCZEV1AoMTYsJHMzKSk7CSMgbG9hZCBpdnAKKwkmbW92CSgkczMsJkRXUCgyMCwkczMpKTsJIyBsb2FkIGVuYyBmbGFnCisKKwkmbW92CSgkX2lucCwkczApOwkJIyBzYXZlIGNvcHkgb2YgaW5wCisJJm1vdgkoJF9vdXQsJHMxKTsJCSMgc2F2ZSBjb3B5IG9mIG91dAorCSZtb3YJKCRfbGVuLCRzMik7CQkjIHNhdmUgY29weSBvZiBsZW4KKwkmbW92CSgkX2tleSwka2V5KTsJCSMgc2F2ZSBjb3B5IG9mIGtleQorCSZtb3YJKCRfaXZwLCRhY2MpOwkJIyBzYXZlIGNvcHkgb2YgaXZwCisKKwkmbW92CSgka2V5LCRhY2MpOworCSZtb3YJKCRhY2MsJHMwKTsKKworCSZjbXAJKCRzMywwKTsKKwkmamUJKCZsYWJlbCgic2xvd19kZWNyeXB0IikpOworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNMT1cgRU5DUllQVCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCisJJmNtcAkoJHMyLDE2KTsKKwkmbW92CSgkczMsJHMxKTsKKwkmamIJKCZsYWJlbCgic2xvd19lbmNfdGFpbCIpKTsKKworCQkJCQlpZiAoISR4ODZvbmx5KSB7CisJJmJ0CSgkX3RtcCwyNSk7CQkjIGNoZWNrIGZvciBTU0UgYml0CisJJmpuYwkoJmxhYmVsKCJzbG93X2VuY194ODYiKSk7CisKKwkmbW92cQkoIm1tMCIsJlFXUCgwLCRrZXkpKTsJIyBsb2FkIGl2CisJJm1vdnEJKCJtbTQiLCZRV1AoOCwka2V5KSk7CisKKwkmc2V0X2xhYmVsKCJzbG93X2VuY19sb29wX3NzZSIsMTYpOworCQkmcHhvcgkoIm1tMCIsJlFXUCgwLCRhY2MpKTsJIyB4b3IgaW5wdXQgZGF0YQorCQkmcHhvcgkoIm1tNCIsJlFXUCg4LCRhY2MpKTsKKworCQkmbW92CSgka2V5LCRfa2V5KTsKKwkJJmNhbGwJKCJfc3NlX0FFU19lbmNyeXB0X2NvbXBhY3QiKTsKKworCQkmbW92CSgkYWNjLCRfaW5wKTsJCSMgbG9hZCBpbnAKKwkJJm1vdgkoJGtleSwkX291dCk7CQkjIGxvYWQgb3V0CisJCSZtb3YJKCRzMiwkX2xlbik7CQkjIGxvYWQgbGVuCisKKwkJJm1vdnEJKCZRV1AoMCwka2V5KSwibW0wIik7CSMgc2F2ZSBvdXRwdXQgZGF0YQorCQkmbW92cQkoJlFXUCg4LCRrZXkpLCJtbTQiKTsKKworCQkmbGVhCSgkYWNjLCZEV1AoMTYsJGFjYykpOwkjIGFkdmFuY2UgaW5wCisJCSZtb3YJKCRfaW5wLCRhY2MpOwkJIyBzYXZlIGlucAorCQkmbGVhCSgkczMsJkRXUCgxNiwka2V5KSk7CSMgYWR2YW5jZSBvdXQKKwkJJm1vdgkoJF9vdXQsJHMzKTsJCSMgc2F2ZSBvdXQKKwkJJnN1YgkoJHMyLDE2KTsJCSMgZGVjcmVhc2UgbGVuCisJCSZjbXAJKCRzMiwxNik7CisJCSZtb3YJKCRfbGVuLCRzMik7CQkjIHNhdmUgbGVuCisJJmphZQkoJmxhYmVsKCJzbG93X2VuY19sb29wX3NzZSIpKTsKKwkmdGVzdAkoJHMyLDE1KTsKKwkmam56CSgmbGFiZWwoInNsb3dfZW5jX3RhaWwiKSk7CisJJm1vdgkoJGFjYywkX2l2cCk7CQkjIGxvYWQgaXZwCisJJm1vdnEJKCZRV1AoMCwkYWNjKSwibW0wIik7CSMgc2F2ZSBpdmVjCisJJm1vdnEJKCZRV1AoOCwkYWNjKSwibW00Iik7CisJJmVtbXMJKCk7CisJJm1vdgkoImVzcCIsJF9lc3ApOworCSZwb3BmCSgpOworCSZmdW5jdGlvbl9lbmRfQSgpOworCSZwdXNoZgkoKTsJCQkjIGtsdWRnZSwgbmV2ZXIgZXhlY3V0ZWQKKwkJCQkJfQorICAgICZzZXRfbGFiZWwoInNsb3dfZW5jX3g4NiIsMTYpOworCSZtb3YJKCRzMCwmRFdQKDAsJGtleSkpOwkjIGxvYWQgaXYKKwkmbW92CSgkczEsJkRXUCg0LCRrZXkpKTsKKworCSZzZXRfbGFiZWwoInNsb3dfZW5jX2xvb3BfeDg2Iiw0KTsKKwkJJm1vdgkoJHMyLCZEV1AoOCwka2V5KSk7CisJCSZtb3YJKCRzMywmRFdQKDEyLCRrZXkpKTsKKworCQkmeG9yCSgkczAsJkRXUCgwLCRhY2MpKTsJIyB4b3IgaW5wdXQgZGF0YQorCQkmeG9yCSgkczEsJkRXUCg0LCRhY2MpKTsKKwkJJnhvcgkoJHMyLCZEV1AoOCwkYWNjKSk7CisJCSZ4b3IJKCRzMywmRFdQKDEyLCRhY2MpKTsKKworCQkmbW92CSgka2V5LCRfa2V5KTsJCSMgbG9hZCBrZXkKKwkJJmNhbGwJKCJfeDg2X0FFU19lbmNyeXB0X2NvbXBhY3QiKTsKKworCQkmbW92CSgkYWNjLCRfaW5wKTsJCSMgbG9hZCBpbnAKKwkJJm1vdgkoJGtleSwkX291dCk7CQkjIGxvYWQgb3V0CisKKwkJJm1vdgkoJkRXUCgwLCRrZXkpLCRzMCk7CSMgc2F2ZSBvdXRwdXQgZGF0YQorCQkmbW92CSgmRFdQKDQsJGtleSksJHMxKTsKKwkJJm1vdgkoJkRXUCg4LCRrZXkpLCRzMik7CisJCSZtb3YJKCZEV1AoMTIsJGtleSksJHMzKTsKKworCQkmbW92CSgkczIsJF9sZW4pOwkJIyBsb2FkIGxlbgorCQkmbGVhCSgkYWNjLCZEV1AoMTYsJGFjYykpOwkjIGFkdmFuY2UgaW5wCisJCSZtb3YJKCRfaW5wLCRhY2MpOwkJIyBzYXZlIGlucAorCQkmbGVhCSgkczMsJkRXUCgxNiwka2V5KSk7CSMgYWR2YW5jZSBvdXQKKwkJJm1vdgkoJF9vdXQsJHMzKTsJCSMgc2F2ZSBvdXQKKwkJJnN1YgkoJHMyLDE2KTsJCSMgZGVjcmVhc2UgbGVuCisJCSZjbXAJKCRzMiwxNik7CisJCSZtb3YJKCRfbGVuLCRzMik7CQkjIHNhdmUgbGVuCisJJmphZQkoJmxhYmVsKCJzbG93X2VuY19sb29wX3g4NiIpKTsKKwkmdGVzdAkoJHMyLDE1KTsKKwkmam56CSgmbGFiZWwoInNsb3dfZW5jX3RhaWwiKSk7CisJJm1vdgkoJGFjYywkX2l2cCk7CQkjIGxvYWQgaXZwCisJJm1vdgkoJHMyLCZEV1AoOCwka2V5KSk7CSMgcmVzdG9yZSBsYXN0IGR3b3JkcworCSZtb3YJKCRzMywmRFdQKDEyLCRrZXkpKTsKKwkmbW92CSgmRFdQKDAsJGFjYyksJHMwKTsJIyBzYXZlIGl2ZWMKKwkmbW92CSgmRFdQKDQsJGFjYyksJHMxKTsKKwkmbW92CSgmRFdQKDgsJGFjYyksJHMyKTsKKwkmbW92CSgmRFdQKDEyLCRhY2MpLCRzMyk7CisKKwkmbW92CSgiZXNwIiwkX2VzcCk7CisJJnBvcGYJKCk7CisJJmZ1bmN0aW9uX2VuZF9BKCk7CisJJnB1c2hmCSgpOwkJCSMga2x1ZGdlLCBuZXZlciBleGVjdXRlZAorCisgICAgJnNldF9sYWJlbCgic2xvd19lbmNfdGFpbCIsMTYpOworCSZlbW1zCSgpCWlmICghJHg4Nm9ubHkpOworCSZtb3YJKCRrZXkgZXEgImVkaSI/ICRrZXk6IiIsJHMzKTsJIyBsb2FkIG91dCB0byBlZGkKKwkmbW92CSgkczEsMTYpOworCSZzdWIJKCRzMSwkczIpOworCSZjbXAJKCRrZXksJGFjYyBlcSAiZXNpIj8gJGFjYzoiIik7CSMgY29tcGFyZSB3aXRoIGlucAorCSZqZQkoJmxhYmVsKCJlbmNfaW5fcGxhY2UiKSk7CisJJmFsaWduCSg0KTsKKwkmZGF0YV93b3JkKDB4QTRGM0Y2ODkpOwkjIHJlcCBtb3ZzYgkjIGNvcHkgaW5wdXQKKwkmam1wCSgmbGFiZWwoImVuY19za2lwX2luX3BsYWNlIikpOworICAgICZzZXRfbGFiZWwoImVuY19pbl9wbGFjZSIpOworCSZsZWEJKCRrZXksJkRXUCgwLCRrZXksJHMyKSk7CisgICAgJnNldF9sYWJlbCgiZW5jX3NraXBfaW5fcGxhY2UiKTsKKwkmbW92CSgkczIsJHMxKTsKKwkmeG9yCSgkczAsJHMwKTsKKwkmYWxpZ24JKDQpOworCSZkYXRhX3dvcmQoMHhBQUYzRjY4OSk7CSMgcmVwIHN0b3NiCSMgemVybyB0YWlsCisKKwkmbW92CSgka2V5LCRfaXZwKTsJCQkjIHJlc3RvcmUgaXZwCisJJm1vdgkoJGFjYywkczMpOwkJCSMgb3V0cHV0IGFzIGlucHV0CisJJm1vdgkoJHMwLCZEV1AoMCwka2V5KSk7CisJJm1vdgkoJHMxLCZEV1AoNCwka2V5KSk7CisJJm1vdgkoJF9sZW4sMTYpOwkJCSMgbGVuPTE2CisJJmptcAkoJmxhYmVsKCJzbG93X2VuY19sb29wX3g4NiIpKTsJIyBvbmUgbW9yZSBzcGluLi4uCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU0xPVyBERUNSWVBUIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKKyZzZXRfbGFiZWwoInNsb3dfZGVjcnlwdCIsMTYpOworCQkJCQlpZiAoISR4ODZvbmx5KSB7CisJJmJ0CSgkX3RtcCwyNSk7CQkjIGNoZWNrIGZvciBTU0UgYml0CisJJmpuYwkoJmxhYmVsKCJzbG93X2RlY19sb29wX3g4NiIpKTsKKworCSZzZXRfbGFiZWwoInNsb3dfZGVjX2xvb3Bfc3NlIiw0KTsKKwkJJm1vdnEJKCJtbTAiLCZRV1AoMCwkYWNjKSk7CSMgcmVhZCBpbnB1dAorCQkmbW92cQkoIm1tNCIsJlFXUCg4LCRhY2MpKTsKKworCQkmbW92CSgka2V5LCRfa2V5KTsKKwkJJmNhbGwJKCJfc3NlX0FFU19kZWNyeXB0X2NvbXBhY3QiKTsKKworCQkmbW92CSgkYWNjLCRfaW5wKTsJCSMgbG9hZCBpbnAKKwkJJmxlYQkoJHMwLCRpdmVjKTsKKwkJJm1vdgkoJHMxLCRfb3V0KTsJCSMgbG9hZCBvdXQKKwkJJm1vdgkoJHMyLCRfbGVuKTsJCSMgbG9hZCBsZW4KKwkJJm1vdgkoJGtleSwkX2l2cCk7CQkjIGxvYWQgaXZwCisKKwkJJm1vdnEJKCJtbTEiLCZRV1AoMCwkYWNjKSk7CSMgcmUtcmVhZCBpbnB1dAorCQkmbW92cQkoIm1tNSIsJlFXUCg4LCRhY2MpKTsKKworCQkmcHhvcgkoIm1tMCIsJlFXUCgwLCRrZXkpKTsJIyB4b3IgaXYKKwkJJnB4b3IJKCJtbTQiLCZRV1AoOCwka2V5KSk7CisKKwkJJm1vdnEJKCZRV1AoMCwka2V5KSwibW0xIik7CSMgY29weSBpbnB1dCB0byBpdgorCQkmbW92cQkoJlFXUCg4LCRrZXkpLCJtbTUiKTsKKworCQkmc3ViCSgkczIsMTYpOwkJIyBkZWNyZWFzZSBsZW4KKwkJJmpjCSgmbGFiZWwoInNsb3dfZGVjX3BhcnRpYWxfc3NlIikpOworCisJCSZtb3ZxCSgmUVdQKDAsJHMxKSwibW0wIik7CSMgd3JpdGUgb3V0cHV0CisJCSZtb3ZxCSgmUVdQKDgsJHMxKSwibW00Iik7CisKKwkJJmxlYQkoJHMxLCZEV1AoMTYsJHMxKSk7CSMgYWR2YW5jZSBvdXQKKwkJJm1vdgkoJF9vdXQsJHMxKTsJCSMgc2F2ZSBvdXQKKwkJJmxlYQkoJGFjYywmRFdQKDE2LCRhY2MpKTsJIyBhZHZhbmNlIGlucAorCQkmbW92CSgkX2lucCwkYWNjKTsJCSMgc2F2ZSBpbnAKKwkJJm1vdgkoJF9sZW4sJHMyKTsJCSMgc2F2ZSBsZW4KKwkmam56CSgmbGFiZWwoInNsb3dfZGVjX2xvb3Bfc3NlIikpOworCSZlbW1zCSgpOworCSZtb3YJKCJlc3AiLCRfZXNwKTsKKwkmcG9wZgkoKTsKKwkmZnVuY3Rpb25fZW5kX0EoKTsKKwkmcHVzaGYJKCk7CQkJIyBrbHVkZ2UsIG5ldmVyIGV4ZWN1dGVkCisKKyAgICAmc2V0X2xhYmVsKCJzbG93X2RlY19wYXJ0aWFsX3NzZSIsMTYpOworCSZtb3ZxCSgmUVdQKDAsJHMwKSwibW0wIik7CSMgc2F2ZSBvdXRwdXQgdG8gdGVtcAorCSZtb3ZxCSgmUVdQKDgsJHMwKSwibW00Iik7CisJJmVtbXMJKCk7CisKKwkmYWRkCSgkczIgZXEgImVjeCIgPyAiZWN4IjoiIiwxNik7CisJJm1vdgkoImVkaSIsJHMxKTsJCSMgb3V0CisJJm1vdgkoImVzaSIsJHMwKTsJCSMgdGVtcAorCSZhbGlnbgkoNCk7CisJJmRhdGFfd29yZCgweEE0RjNGNjg5KTsJCSMgcmVwIG1vdnNiICMgY29weSBwYXJ0aWFsIG91dHB1dAorCisJJm1vdgkoImVzcCIsJF9lc3ApOworCSZwb3BmCSgpOworCSZmdW5jdGlvbl9lbmRfQSgpOworCSZwdXNoZgkoKTsJCQkjIGtsdWRnZSwgbmV2ZXIgZXhlY3V0ZWQKKwkJCQkJfQorCSZzZXRfbGFiZWwoInNsb3dfZGVjX2xvb3BfeDg2IiwxNik7CisJCSZtb3YJKCRzMCwmRFdQKDAsJGFjYykpOwkjIHJlYWQgaW5wdXQKKwkJJm1vdgkoJHMxLCZEV1AoNCwkYWNjKSk7CisJCSZtb3YJKCRzMiwmRFdQKDgsJGFjYykpOworCQkmbW92CSgkczMsJkRXUCgxMiwkYWNjKSk7CisKKwkJJmxlYQkoJGtleSwkaXZlYyk7CisJCSZtb3YJKCZEV1AoMCwka2V5KSwkczApOwkjIGNvcHkgdG8gdGVtcAorCQkmbW92CSgmRFdQKDQsJGtleSksJHMxKTsKKwkJJm1vdgkoJkRXUCg4LCRrZXkpLCRzMik7CisJCSZtb3YJKCZEV1AoMTIsJGtleSksJHMzKTsKKworCQkmbW92CSgka2V5LCRfa2V5KTsJCSMgbG9hZCBrZXkKKwkJJmNhbGwJKCJfeDg2X0FFU19kZWNyeXB0X2NvbXBhY3QiKTsKKworCQkmbW92CSgka2V5LCRfaXZwKTsJCSMgbG9hZCBpdnAKKwkJJm1vdgkoJGFjYywkX2xlbik7CQkjIGxvYWQgbGVuCisJCSZ4b3IJKCRzMCwmRFdQKDAsJGtleSkpOwkjIHhvciBpdgorCQkmeG9yCSgkczEsJkRXUCg0LCRrZXkpKTsKKwkJJnhvcgkoJHMyLCZEV1AoOCwka2V5KSk7CisJCSZ4b3IJKCRzMywmRFdQKDEyLCRrZXkpKTsKKworCQkmc3ViCSgkYWNjLDE2KTsKKwkJJmpjCSgmbGFiZWwoInNsb3dfZGVjX3BhcnRpYWxfeDg2IikpOworCisJCSZtb3YJKCRfbGVuLCRhY2MpOwkJIyBzYXZlIGxlbgorCQkmbW92CSgkYWNjLCRfb3V0KTsJCSMgbG9hZCBvdXQKKworCQkmbW92CSgmRFdQKDAsJGFjYyksJHMwKTsJIyB3cml0ZSBvdXRwdXQKKwkJJm1vdgkoJkRXUCg0LCRhY2MpLCRzMSk7CisJCSZtb3YJKCZEV1AoOCwkYWNjKSwkczIpOworCQkmbW92CSgmRFdQKDEyLCRhY2MpLCRzMyk7CisKKwkJJmxlYQkoJGFjYywmRFdQKDE2LCRhY2MpKTsJIyBhZHZhbmNlIG91dAorCQkmbW92CSgkX291dCwkYWNjKTsJCSMgc2F2ZSBvdXQKKworCQkmbGVhCSgkYWNjLCRpdmVjKTsKKwkJJm1vdgkoJHMwLCZEV1AoMCwkYWNjKSk7CSMgcmVhZCB0ZW1wCisJCSZtb3YJKCRzMSwmRFdQKDQsJGFjYykpOworCQkmbW92CSgkczIsJkRXUCg4LCRhY2MpKTsKKwkJJm1vdgkoJHMzLCZEV1AoMTIsJGFjYykpOworCisJCSZtb3YJKCZEV1AoMCwka2V5KSwkczApOwkjIGNvcHkgaXQgdG8gaXYKKwkJJm1vdgkoJkRXUCg0LCRrZXkpLCRzMSk7CisJCSZtb3YJKCZEV1AoOCwka2V5KSwkczIpOworCQkmbW92CSgmRFdQKDEyLCRrZXkpLCRzMyk7CisKKwkJJm1vdgkoJGFjYywkX2lucCk7CQkjIGxvYWQgaW5wCisJCSZsZWEJKCRhY2MsJkRXUCgxNiwkYWNjKSk7CSMgYWR2YW5jZSBpbnAKKwkJJm1vdgkoJF9pbnAsJGFjYyk7CQkjIHNhdmUgaW5wCisJJmpuegkoJmxhYmVsKCJzbG93X2RlY19sb29wX3g4NiIpKTsKKwkmbW92CSgiZXNwIiwkX2VzcCk7CisJJnBvcGYJKCk7CisJJmZ1bmN0aW9uX2VuZF9BKCk7CisJJnB1c2hmCSgpOwkJCSMga2x1ZGdlLCBuZXZlciBleGVjdXRlZAorCisgICAgJnNldF9sYWJlbCgic2xvd19kZWNfcGFydGlhbF94ODYiLDE2KTsKKwkmbGVhCSgkYWNjLCRpdmVjKTsKKwkmbW92CSgmRFdQKDAsJGFjYyksJHMwKTsJIyBzYXZlIG91dHB1dCB0byB0ZW1wCisJJm1vdgkoJkRXUCg0LCRhY2MpLCRzMSk7CisJJm1vdgkoJkRXUCg4LCRhY2MpLCRzMik7CisJJm1vdgkoJkRXUCgxMiwkYWNjKSwkczMpOworCisJJm1vdgkoJGFjYywkX2lucCk7CisJJm1vdgkoJHMwLCZEV1AoMCwkYWNjKSk7CSMgcmUtcmVhZCBpbnB1dAorCSZtb3YJKCRzMSwmRFdQKDQsJGFjYykpOworCSZtb3YJKCRzMiwmRFdQKDgsJGFjYykpOworCSZtb3YJKCRzMywmRFdQKDEyLCRhY2MpKTsKKworCSZtb3YJKCZEV1AoMCwka2V5KSwkczApOwkjIGNvcHkgaXQgdG8gaXYKKwkmbW92CSgmRFdQKDQsJGtleSksJHMxKTsKKwkmbW92CSgmRFdQKDgsJGtleSksJHMyKTsKKwkmbW92CSgmRFdQKDEyLCRrZXkpLCRzMyk7CisKKwkmbW92CSgiZWN4IiwkX2xlbik7CisJJm1vdgkoImVkaSIsJF9vdXQpOworCSZsZWEJKCJlc2kiLCRpdmVjKTsKKwkmYWxpZ24JKDQpOworCSZkYXRhX3dvcmQoMHhBNEYzRjY4OSk7CQkjIHJlcCBtb3ZzYiAjIGNvcHkgcGFydGlhbCBvdXRwdXQKKworCSZtb3YJKCJlc3AiLCRfZXNwKTsKKwkmcG9wZgkoKTsKKyZmdW5jdGlvbl9lbmQoIkFFU19jYmNfZW5jcnlwdCIpOworfQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIworCitzdWIgZW5ja2V5KCkKK3sKKwkmbW92egkoImVzaSIsJkxCKCJlZHgiKSk7CQkjIHJrW2ldPj4wCisJJm1vdnoJKCJlYngiLCZCUCgtMTI4LCR0YmwsImVzaSIsMSkpOworCSZtb3Z6CSgiZXNpIiwmSEIoImVkeCIpKTsJCSMgcmtbaV0+PjgKKwkmc2hsCSgiZWJ4IiwyNCk7CisJJnhvcgkoImVheCIsImVieCIpOworCisJJm1vdnoJKCJlYngiLCZCUCgtMTI4LCR0YmwsImVzaSIsMSkpOworCSZzaHIJKCJlZHgiLDE2KTsKKwkmbW92egkoImVzaSIsJkxCKCJlZHgiKSk7CQkjIHJrW2ldPj4xNgorCSZ4b3IJKCJlYXgiLCJlYngiKTsKKworCSZtb3Z6CSgiZWJ4IiwmQlAoLTEyOCwkdGJsLCJlc2kiLDEpKTsKKwkmbW92egkoImVzaSIsJkhCKCJlZHgiKSk7CQkjIHJrW2ldPj4yNAorCSZzaGwJKCJlYngiLDgpOworCSZ4b3IJKCJlYXgiLCJlYngiKTsKKworCSZtb3Z6CSgiZWJ4IiwmQlAoLTEyOCwkdGJsLCJlc2kiLDEpKTsKKwkmc2hsCSgiZWJ4IiwxNik7CisJJnhvcgkoImVheCIsImVieCIpOworCisJJnhvcgkoImVheCIsJkRXUCgxMDI0LTEyOCwkdGJsLCJlY3giLDQpKTsJIyByY29uCit9CisKKyZmdW5jdGlvbl9iZWdpbigiX3g4Nl9BRVNfc2V0X2VuY3J5cHRfa2V5Iik7CisJJm1vdgkoImVzaSIsJndwYXJhbSgxKSk7CQkjIHVzZXIgc3VwcGxpZWQga2V5CisJJm1vdgkoImVkaSIsJndwYXJhbSgzKSk7CQkjIHByaXZhdGUga2V5IHNjaGVkdWxlCisKKwkmdGVzdAkoImVzaSIsLTEpOworCSZqegkoJmxhYmVsKCJiYWRwb2ludGVyIikpOworCSZ0ZXN0CSgiZWRpIiwtMSk7CisJJmp6CSgmbGFiZWwoImJhZHBvaW50ZXIiKSk7CisKKwkmY2FsbAkoJmxhYmVsKCJwaWNfcG9pbnQiKSk7CisJJnNldF9sYWJlbCgicGljX3BvaW50Iik7CisJJmJsaW5kcG9wKCR0YmwpOworCSZsZWEJKCR0YmwsJkRXUCgmbGFiZWwoIkFFU19UZSIpLiItIi4mbGFiZWwoInBpY19wb2ludCIpLCR0YmwpKTsKKwkmbGVhCSgkdGJsLCZEV1AoMjA0OCsxMjgsJHRibCkpOworCisJIyBwcmVmZXRjaCBUZTQKKwkmbW92CSgiZWF4IiwmRFdQKDAtMTI4LCR0YmwpKTsKKwkmbW92CSgiZWJ4IiwmRFdQKDMyLTEyOCwkdGJsKSk7CisJJm1vdgkoImVjeCIsJkRXUCg2NC0xMjgsJHRibCkpOworCSZtb3YJKCJlZHgiLCZEV1AoOTYtMTI4LCR0YmwpKTsKKwkmbW92CSgiZWF4IiwmRFdQKDEyOC0xMjgsJHRibCkpOworCSZtb3YJKCJlYngiLCZEV1AoMTYwLTEyOCwkdGJsKSk7CisJJm1vdgkoImVjeCIsJkRXUCgxOTItMTI4LCR0YmwpKTsKKwkmbW92CSgiZWR4IiwmRFdQKDIyNC0xMjgsJHRibCkpOworCisJJm1vdgkoImVjeCIsJndwYXJhbSgyKSk7CQkjIG51bWJlciBvZiBiaXRzIGluIGtleQorCSZjbXAJKCJlY3giLDEyOCk7CisJJmplCSgmbGFiZWwoIjEwcm91bmRzIikpOworCSZjbXAJKCJlY3giLDE5Mik7CisJJmplCSgmbGFiZWwoIjEycm91bmRzIikpOworCSZjbXAJKCJlY3giLDI1Nik7CisJJmplCSgmbGFiZWwoIjE0cm91bmRzIikpOworCSZtb3YJKCJlYXgiLC0yKTsJCQkjIGludmFsaWQgbnVtYmVyIG9mIGJpdHMKKwkmam1wCSgmbGFiZWwoImV4aXQiKSk7CisKKyAgICAmc2V0X2xhYmVsKCIxMHJvdW5kcyIpOworCSZtb3YJKCJlYXgiLCZEV1AoMCwiZXNpIikpOwkJIyBjb3B5IGZpcnN0IDQgZHdvcmRzCisJJm1vdgkoImVieCIsJkRXUCg0LCJlc2kiKSk7CisJJm1vdgkoImVjeCIsJkRXUCg4LCJlc2kiKSk7CisJJm1vdgkoImVkeCIsJkRXUCgxMiwiZXNpIikpOworCSZtb3YJKCZEV1AoMCwiZWRpIiksImVheCIpOworCSZtb3YJKCZEV1AoNCwiZWRpIiksImVieCIpOworCSZtb3YJKCZEV1AoOCwiZWRpIiksImVjeCIpOworCSZtb3YJKCZEV1AoMTIsImVkaSIpLCJlZHgiKTsKKworCSZ4b3IJKCJlY3giLCJlY3giKTsKKwkmam1wCSgmbGFiZWwoIjEwc2hvcnRjdXQiKSk7CisKKwkmYWxpZ24JKDQpOworCSZzZXRfbGFiZWwoIjEwbG9vcCIpOworCQkmbW92CSgiZWF4IiwmRFdQKDAsImVkaSIpKTsJCSMgcmtbMF0KKwkJJm1vdgkoImVkeCIsJkRXUCgxMiwiZWRpIikpOwkJIyBya1szXQorCSZzZXRfbGFiZWwoIjEwc2hvcnRjdXQiKTsKKwkJJmVuY2tleQkoKTsKKworCQkmbW92CSgmRFdQKDE2LCJlZGkiKSwiZWF4Iik7CQkjIHJrWzRdCisJCSZ4b3IJKCJlYXgiLCZEV1AoNCwiZWRpIikpOworCQkmbW92CSgmRFdQKDIwLCJlZGkiKSwiZWF4Iik7CQkjIHJrWzVdCisJCSZ4b3IJKCJlYXgiLCZEV1AoOCwiZWRpIikpOworCQkmbW92CSgmRFdQKDI0LCJlZGkiKSwiZWF4Iik7CQkjIHJrWzZdCisJCSZ4b3IJKCJlYXgiLCZEV1AoMTIsImVkaSIpKTsKKwkJJm1vdgkoJkRXUCgyOCwiZWRpIiksImVheCIpOwkJIyBya1s3XQorCQkmaW5jCSgiZWN4Iik7CisJCSZhZGQJKCJlZGkiLDE2KTsKKwkJJmNtcAkoImVjeCIsMTApOworCSZqbAkoJmxhYmVsKCIxMGxvb3AiKSk7CisKKwkmbW92CSgmRFdQKDgwLCJlZGkiKSwxMCk7CQkjIHNldHVwIG51bWJlciBvZiByb3VuZHMKKwkmeG9yCSgiZWF4IiwiZWF4Iik7CisJJmptcAkoJmxhYmVsKCJleGl0IikpOworCQkKKyAgICAmc2V0X2xhYmVsKCIxMnJvdW5kcyIpOworCSZtb3YJKCJlYXgiLCZEV1AoMCwiZXNpIikpOwkJIyBjb3B5IGZpcnN0IDYgZHdvcmRzCisJJm1vdgkoImVieCIsJkRXUCg0LCJlc2kiKSk7CisJJm1vdgkoImVjeCIsJkRXUCg4LCJlc2kiKSk7CisJJm1vdgkoImVkeCIsJkRXUCgxMiwiZXNpIikpOworCSZtb3YJKCZEV1AoMCwiZWRpIiksImVheCIpOworCSZtb3YJKCZEV1AoNCwiZWRpIiksImVieCIpOworCSZtb3YJKCZEV1AoOCwiZWRpIiksImVjeCIpOworCSZtb3YJKCZEV1AoMTIsImVkaSIpLCJlZHgiKTsKKwkmbW92CSgiZWN4IiwmRFdQKDE2LCJlc2kiKSk7CisJJm1vdgkoImVkeCIsJkRXUCgyMCwiZXNpIikpOworCSZtb3YJKCZEV1AoMTYsImVkaSIpLCJlY3giKTsKKwkmbW92CSgmRFdQKDIwLCJlZGkiKSwiZWR4Iik7CisKKwkmeG9yCSgiZWN4IiwiZWN4Iik7CisJJmptcAkoJmxhYmVsKCIxMnNob3J0Y3V0IikpOworCisJJmFsaWduCSg0KTsKKwkmc2V0X2xhYmVsKCIxMmxvb3AiKTsKKwkJJm1vdgkoImVheCIsJkRXUCgwLCJlZGkiKSk7CQkjIHJrWzBdCisJCSZtb3YJKCJlZHgiLCZEV1AoMjAsImVkaSIpKTsJCSMgcmtbNV0KKwkmc2V0X2xhYmVsKCIxMnNob3J0Y3V0Iik7CisJCSZlbmNrZXkJKCk7CisKKwkJJm1vdgkoJkRXUCgyNCwiZWRpIiksImVheCIpOwkJIyBya1s2XQorCQkmeG9yCSgiZWF4IiwmRFdQKDQsImVkaSIpKTsKKwkJJm1vdgkoJkRXUCgyOCwiZWRpIiksImVheCIpOwkJIyBya1s3XQorCQkmeG9yCSgiZWF4IiwmRFdQKDgsImVkaSIpKTsKKwkJJm1vdgkoJkRXUCgzMiwiZWRpIiksImVheCIpOwkJIyBya1s4XQorCQkmeG9yCSgiZWF4IiwmRFdQKDEyLCJlZGkiKSk7CisJCSZtb3YJKCZEV1AoMzYsImVkaSIpLCJlYXgiKTsJCSMgcmtbOV0KKworCQkmY21wCSgiZWN4Iiw3KTsKKwkJJmplCSgmbGFiZWwoIjEyYnJlYWsiKSk7CisJCSZpbmMJKCJlY3giKTsKKworCQkmeG9yCSgiZWF4IiwmRFdQKDE2LCJlZGkiKSk7CisJCSZtb3YJKCZEV1AoNDAsImVkaSIpLCJlYXgiKTsJCSMgcmtbMTBdCisJCSZ4b3IJKCJlYXgiLCZEV1AoMjAsImVkaSIpKTsKKwkJJm1vdgkoJkRXUCg0NCwiZWRpIiksImVheCIpOwkJIyBya1sxMV0KKworCQkmYWRkCSgiZWRpIiwyNCk7CisJJmptcAkoJmxhYmVsKCIxMmxvb3AiKSk7CisKKwkmc2V0X2xhYmVsKCIxMmJyZWFrIik7CisJJm1vdgkoJkRXUCg3MiwiZWRpIiksMTIpOwkJIyBzZXR1cCBudW1iZXIgb2Ygcm91bmRzCisJJnhvcgkoImVheCIsImVheCIpOworCSZqbXAJKCZsYWJlbCgiZXhpdCIpKTsKKworICAgICZzZXRfbGFiZWwoIjE0cm91bmRzIik7CisJJm1vdgkoImVheCIsJkRXUCgwLCJlc2kiKSk7CQkjIGNvcHkgZmlyc3QgOCBkd29yZHMKKwkmbW92CSgiZWJ4IiwmRFdQKDQsImVzaSIpKTsKKwkmbW92CSgiZWN4IiwmRFdQKDgsImVzaSIpKTsKKwkmbW92CSgiZWR4IiwmRFdQKDEyLCJlc2kiKSk7CisJJm1vdgkoJkRXUCgwLCJlZGkiKSwiZWF4Iik7CisJJm1vdgkoJkRXUCg0LCJlZGkiKSwiZWJ4Iik7CisJJm1vdgkoJkRXUCg4LCJlZGkiKSwiZWN4Iik7CisJJm1vdgkoJkRXUCgxMiwiZWRpIiksImVkeCIpOworCSZtb3YJKCJlYXgiLCZEV1AoMTYsImVzaSIpKTsKKwkmbW92CSgiZWJ4IiwmRFdQKDIwLCJlc2kiKSk7CisJJm1vdgkoImVjeCIsJkRXUCgyNCwiZXNpIikpOworCSZtb3YJKCJlZHgiLCZEV1AoMjgsImVzaSIpKTsKKwkmbW92CSgmRFdQKDE2LCJlZGkiKSwiZWF4Iik7CisJJm1vdgkoJkRXUCgyMCwiZWRpIiksImVieCIpOworCSZtb3YJKCZEV1AoMjQsImVkaSIpLCJlY3giKTsKKwkmbW92CSgmRFdQKDI4LCJlZGkiKSwiZWR4Iik7CisKKwkmeG9yCSgiZWN4IiwiZWN4Iik7CisJJmptcAkoJmxhYmVsKCIxNHNob3J0Y3V0IikpOworCisJJmFsaWduCSg0KTsKKwkmc2V0X2xhYmVsKCIxNGxvb3AiKTsKKwkJJm1vdgkoImVkeCIsJkRXUCgyOCwiZWRpIikpOwkJIyBya1s3XQorCSZzZXRfbGFiZWwoIjE0c2hvcnRjdXQiKTsKKwkJJm1vdgkoImVheCIsJkRXUCgwLCJlZGkiKSk7CQkjIHJrWzBdCisKKwkJJmVuY2tleQkoKTsKKworCQkmbW92CSgmRFdQKDMyLCJlZGkiKSwiZWF4Iik7CQkjIHJrWzhdCisJCSZ4b3IJKCJlYXgiLCZEV1AoNCwiZWRpIikpOworCQkmbW92CSgmRFdQKDM2LCJlZGkiKSwiZWF4Iik7CQkjIHJrWzldCisJCSZ4b3IJKCJlYXgiLCZEV1AoOCwiZWRpIikpOworCQkmbW92CSgmRFdQKDQwLCJlZGkiKSwiZWF4Iik7CQkjIHJrWzEwXQorCQkmeG9yCSgiZWF4IiwmRFdQKDEyLCJlZGkiKSk7CisJCSZtb3YJKCZEV1AoNDQsImVkaSIpLCJlYXgiKTsJCSMgcmtbMTFdCisKKwkJJmNtcAkoImVjeCIsNik7CisJCSZqZQkoJmxhYmVsKCIxNGJyZWFrIikpOworCQkmaW5jCSgiZWN4Iik7CisKKwkJJm1vdgkoImVkeCIsImVheCIpOworCQkmbW92CSgiZWF4IiwmRFdQKDE2LCJlZGkiKSk7CQkjIHJrWzRdCisJCSZtb3Z6CSgiZXNpIiwmTEIoImVkeCIpKTsJCSMgcmtbMTFdPj4wCisJCSZtb3Z6CSgiZWJ4IiwmQlAoLTEyOCwkdGJsLCJlc2kiLDEpKTsKKwkJJm1vdnoJKCJlc2kiLCZIQigiZWR4IikpOwkJIyBya1sxMV0+PjgKKwkJJnhvcgkoImVheCIsImVieCIpOworCisJCSZtb3Z6CSgiZWJ4IiwmQlAoLTEyOCwkdGJsLCJlc2kiLDEpKTsKKwkJJnNocgkoImVkeCIsMTYpOworCQkmc2hsCSgiZWJ4Iiw4KTsKKwkJJm1vdnoJKCJlc2kiLCZMQigiZWR4IikpOwkJIyBya1sxMV0+PjE2CisJCSZ4b3IJKCJlYXgiLCJlYngiKTsKKworCQkmbW92egkoImVieCIsJkJQKC0xMjgsJHRibCwiZXNpIiwxKSk7CisJCSZtb3Z6CSgiZXNpIiwmSEIoImVkeCIpKTsJCSMgcmtbMTFdPj4yNAorCQkmc2hsCSgiZWJ4IiwxNik7CisJCSZ4b3IJKCJlYXgiLCJlYngiKTsKKworCQkmbW92egkoImVieCIsJkJQKC0xMjgsJHRibCwiZXNpIiwxKSk7CisJCSZzaGwJKCJlYngiLDI0KTsKKwkJJnhvcgkoImVheCIsImVieCIpOworCisJCSZtb3YJKCZEV1AoNDgsImVkaSIpLCJlYXgiKTsJCSMgcmtbMTJdCisJCSZ4b3IJKCJlYXgiLCZEV1AoMjAsImVkaSIpKTsKKwkJJm1vdgkoJkRXUCg1MiwiZWRpIiksImVheCIpOwkJIyBya1sxM10KKwkJJnhvcgkoImVheCIsJkRXUCgyNCwiZWRpIikpOworCQkmbW92CSgmRFdQKDU2LCJlZGkiKSwiZWF4Iik7CQkjIHJrWzE0XQorCQkmeG9yCSgiZWF4IiwmRFdQKDI4LCJlZGkiKSk7CisJCSZtb3YJKCZEV1AoNjAsImVkaSIpLCJlYXgiKTsJCSMgcmtbMTVdCisKKwkJJmFkZAkoImVkaSIsMzIpOworCSZqbXAJKCZsYWJlbCgiMTRsb29wIikpOworCisJJnNldF9sYWJlbCgiMTRicmVhayIpOworCSZtb3YJKCZEV1AoNDgsImVkaSIpLDE0KTsJCSMgc2V0dXAgbnVtYmVyIG9mIHJvdW5kcworCSZ4b3IJKCJlYXgiLCJlYXgiKTsKKwkmam1wCSgmbGFiZWwoImV4aXQiKSk7CisKKyAgICAmc2V0X2xhYmVsKCJiYWRwb2ludGVyIik7CisJJm1vdgkoImVheCIsLTEpOworICAgICZzZXRfbGFiZWwoImV4aXQiKTsKKyZmdW5jdGlvbl9lbmQoIl94ODZfQUVTX3NldF9lbmNyeXB0X2tleSIpOworCisjIGludCBwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXkoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgY29uc3QgaW50IGJpdHMsCisjICAgICAgICAgICAgICAgICAgICAgICAgQUVTX0tFWSAqa2V5KQorJmZ1bmN0aW9uX2JlZ2luX0IoInByaXZhdGVfQUVTX3NldF9lbmNyeXB0X2tleSIpOworCSZjYWxsCSgiX3g4Nl9BRVNfc2V0X2VuY3J5cHRfa2V5Iik7CisJJnJldAkoKTsKKyZmdW5jdGlvbl9lbmRfQigicHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5Iik7CisKK3N1YiBkZWNrZXkoKQoreyBteSAoJGksJGtleSwkdHAxLCR0cDIsJHRwNCwkdHA4KSA9IEBfOworICBteSAkdG1wID0gJHRibDsKKworCSZtb3YJKCRhY2MsJHRwMSk7CisJJmFuZAkoJGFjYywweDgwODA4MDgwKTsKKwkmbW92CSgkdG1wLCRhY2MpOworCSZzaHIJKCR0bXAsNyk7CisJJmxlYQkoJHRwMiwmRFdQKDAsJHRwMSwkdHAxKSk7CisJJnN1YgkoJGFjYywkdG1wKTsKKwkmYW5kCSgkdHAyLDB4ZmVmZWZlZmUpOworCSZhbmQJKCRhY2MsMHgxYjFiMWIxYik7CisJJnhvcgkoJGFjYywkdHAyKTsKKwkmbW92CSgkdHAyLCRhY2MpOworCisJJmFuZAkoJGFjYywweDgwODA4MDgwKTsKKwkmbW92CSgkdG1wLCRhY2MpOworCSZzaHIJKCR0bXAsNyk7CisJJmxlYQkoJHRwNCwmRFdQKDAsJHRwMiwkdHAyKSk7CisJJnN1YgkoJGFjYywkdG1wKTsKKwkmYW5kCSgkdHA0LDB4ZmVmZWZlZmUpOworCSZhbmQJKCRhY2MsMHgxYjFiMWIxYik7CisJICZ4b3IJKCR0cDIsJHRwMSk7CSMgdHAyXnRwMQorCSZ4b3IJKCRhY2MsJHRwNCk7CisJJm1vdgkoJHRwNCwkYWNjKTsKKworCSZhbmQJKCRhY2MsMHg4MDgwODA4MCk7CisJJm1vdgkoJHRtcCwkYWNjKTsKKwkmc2hyCSgkdG1wLDcpOworCSZsZWEJKCR0cDgsJkRXUCgwLCR0cDQsJHRwNCkpOworCSAmeG9yCSgkdHA0LCR0cDEpOwkjIHRwNF50cDEKKwkmc3ViCSgkYWNjLCR0bXApOworCSZhbmQJKCR0cDgsMHhmZWZlZmVmZSk7CisJJmFuZAkoJGFjYywweDFiMWIxYjFiKTsKKwkgJnJvdGwJKCR0cDEsOCk7CSMgPSBST1RBVEUodHAxLDgpCisJJnhvcgkoJHRwOCwkYWNjKTsKKworCSZtb3YJKCR0bXAsJkRXUCg0KigkaSsxKSwka2V5KSk7CSMgbW9kdWxvLXNjaGVkdWxlZCBsb2FkCisKKwkmeG9yCSgkdHAxLCR0cDIpOworCSZ4b3IJKCR0cDIsJHRwOCk7CisJJnhvcgkoJHRwMSwkdHA0KTsKKwkmcm90bAkoJHRwMiwyNCk7CisJJnhvcgkoJHRwNCwkdHA4KTsKKwkmeG9yCSgkdHAxLCR0cDgpOwkjIF49IHRwOF4odHA0XnRwMSleKHRwMl50cDEpCisJJnJvdGwJKCR0cDQsMTYpOworCSZ4b3IJKCR0cDEsJHRwMik7CSMgXj0gUk9UQVRFKHRwOF50cDJedHAxLDI0KQorCSZyb3RsCSgkdHA4LDgpOworCSZ4b3IJKCR0cDEsJHRwNCk7CSMgXj0gUk9UQVRFKHRwOF50cDRedHAxLDE2KQorCSZtb3YJKCR0cDIsJHRtcCk7CisJJnhvcgkoJHRwMSwkdHA4KTsJIyBePSBST1RBVEUodHA4LDgpCisKKwkmbW92CSgmRFdQKDQqJGksJGtleSksJHRwMSk7Cit9CisKKyMgaW50IHByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5LCBjb25zdCBpbnQgYml0cywKKyMgICAgICAgICAgICAgICAgICAgICAgICBBRVNfS0VZICprZXkpCismZnVuY3Rpb25fYmVnaW5fQigicHJpdmF0ZV9BRVNfc2V0X2RlY3J5cHRfa2V5Iik7CisJJmNhbGwJKCJfeDg2X0FFU19zZXRfZW5jcnlwdF9rZXkiKTsKKwkmY21wCSgiZWF4IiwwKTsKKwkmamUJKCZsYWJlbCgicHJvY2VlZCIpKTsKKwkmcmV0CSgpOworCisgICAgJnNldF9sYWJlbCgicHJvY2VlZCIpOworCSZwdXNoCSgiZWJwIik7CisJJnB1c2gJKCJlYngiKTsKKwkmcHVzaAkoImVzaSIpOworCSZwdXNoCSgiZWRpIik7CisKKwkmbW92CSgiZXNpIiwmd3BhcmFtKDIpKTsKKwkmbW92CSgiZWN4IiwmRFdQKDI0MCwiZXNpIikpOwkjIHB1bGwgbnVtYmVyIG9mIHJvdW5kcworCSZsZWEJKCJlY3giLCZEV1AoMCwiIiwiZWN4Iiw0KSk7CisJJmxlYQkoImVkaSIsJkRXUCgwLCJlc2kiLCJlY3giLDQpKTsJIyBwb2ludGVyIHRvIGxhc3QgY2h1bmsKKworCSZzZXRfbGFiZWwoImludmVydCIsNCk7CQkJIyBpbnZlcnQgb3JkZXIgb2YgY2h1bmtzCisJCSZtb3YJKCJlYXgiLCZEV1AoMCwiZXNpIikpOworCQkmbW92CSgiZWJ4IiwmRFdQKDQsImVzaSIpKTsKKwkJJm1vdgkoImVjeCIsJkRXUCgwLCJlZGkiKSk7CisJCSZtb3YJKCJlZHgiLCZEV1AoNCwiZWRpIikpOworCQkmbW92CSgmRFdQKDAsImVkaSIpLCJlYXgiKTsKKwkJJm1vdgkoJkRXUCg0LCJlZGkiKSwiZWJ4Iik7CisJCSZtb3YJKCZEV1AoMCwiZXNpIiksImVjeCIpOworCQkmbW92CSgmRFdQKDQsImVzaSIpLCJlZHgiKTsKKwkJJm1vdgkoImVheCIsJkRXUCg4LCJlc2kiKSk7CisJCSZtb3YJKCJlYngiLCZEV1AoMTIsImVzaSIpKTsKKwkJJm1vdgkoImVjeCIsJkRXUCg4LCJlZGkiKSk7CisJCSZtb3YJKCJlZHgiLCZEV1AoMTIsImVkaSIpKTsKKwkJJm1vdgkoJkRXUCg4LCJlZGkiKSwiZWF4Iik7CisJCSZtb3YJKCZEV1AoMTIsImVkaSIpLCJlYngiKTsKKwkJJm1vdgkoJkRXUCg4LCJlc2kiKSwiZWN4Iik7CisJCSZtb3YJKCZEV1AoMTIsImVzaSIpLCJlZHgiKTsKKwkJJmFkZAkoImVzaSIsMTYpOworCQkmc3ViCSgiZWRpIiwxNik7CisJCSZjbXAJKCJlc2kiLCJlZGkiKTsKKwkmam5lCSgmbGFiZWwoImludmVydCIpKTsKKworCSZtb3YJKCRrZXksJndwYXJhbSgyKSk7CisJJm1vdgkoJGFjYywmRFdQKDI0MCwka2V5KSk7CQkjIHB1bGwgbnVtYmVyIG9mIHJvdW5kcworCSZsZWEJKCRhY2MsJkRXUCgtMiwkYWNjLCRhY2MpKTsKKwkmbGVhCSgkYWNjLCZEV1AoMCwka2V5LCRhY2MsOCkpOworCSZtb3YJKCZ3cGFyYW0oMiksJGFjYyk7CisKKwkmbW92CSgkczAsJkRXUCgxNiwka2V5KSk7CQkjIG1vZHVsby1zY2hlZHVsZWQgbG9hZAorCSZzZXRfbGFiZWwoInBlcm11dGUiLDQpOwkJIyBwZXJtdXRlIHRoZSBrZXkgc2NoZWR1bGUKKwkJJmFkZAkoJGtleSwxNik7CisJCSZkZWNrZXkJKDAsJGtleSwkczAsJHMxLCRzMiwkczMpOworCQkmZGVja2V5CSgxLCRrZXksJHMxLCRzMiwkczMsJHMwKTsKKwkJJmRlY2tleQkoMiwka2V5LCRzMiwkczMsJHMwLCRzMSk7CisJCSZkZWNrZXkJKDMsJGtleSwkczMsJHMwLCRzMSwkczIpOworCQkmY21wCSgka2V5LCZ3cGFyYW0oMikpOworCSZqYgkoJmxhYmVsKCJwZXJtdXRlIikpOworCisJJnhvcgkoImVheCIsImVheCIpOwkJCSMgcmV0dXJuIHN1Y2Nlc3MKKyZmdW5jdGlvbl9lbmQoInByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleSIpOworJmFzY2l6KCJBRVMgZm9yIHg4NiwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIpOworCismYXNtX2ZpbmlzaCgpOwpkaWZmIC0tZ2l0IGEvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzLWFybXY0LnBsIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzLWFybXY0LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2Yjg2YzQKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQucGwKQEAgLTAsMCArMSwxMTM0IEBACisjIS91c3IvYmluL2VudiBwZXJsCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgV3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0BmeS5jaGFsbWVycy5zZT4gZm9yIHRoZSBPcGVuU1NMCisjIHByb2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNTTCBhbmQKKyMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKKyMgZGV0YWlscyBzZWUgaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9+YXBwcm8vY3J5cHRvZ2Ftcy8uCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgQUVTIGZvciBBUk12NAorCisjIEphbnVhcnkgMjAwNy4KKyMKKyMgQ29kZSB1c2VzIHNpbmdsZSAxSyBTLWJveCBhbmQgaXMgPjIgdGltZXMgZmFzdGVyIHRoYW4gY29kZSBnZW5lcmF0ZWQKKyMgYnkgZ2NjLTMuNC4xLiBUaGlzIGlzIHRoYW5rcyB0byB1bmlxdWUgZmVhdHVyZSBvZiBBUk12NCBJU0EsIHdoaWNoCisjIGFsbG93cyB0byBtZXJnZSBsb2dpY2FsIG9yIGFyaXRobWV0aWMgb3BlcmF0aW9uIHdpdGggc2hpZnQgb3Igcm90YXRlCisjIGluIG9uZSBpbnN0cnVjdGlvbiBhbmQgZW1pdCBjb21iaW5lZCByZXN1bHQgZXZlcnkgY3ljbGUuIFRoZSBtb2R1bGUKKyMgaXMgZW5kaWFuLW5ldXRyYWwuIFRoZSBwZXJmb3JtYW5jZSBpcyB+NDIgY3ljbGVzL2J5dGUgZm9yIDEyOC1iaXQKKyMga2V5IFtvbiBzaW5nbGUtaXNzdWUgWHNjYWxlIFBYQTI1MCBjb3JlXS4KKworIyBNYXkgMjAwNy4KKyMKKyMgQUVTX3NldF9bZW58ZGVdY3J5cHRfa2V5IGlzIGFkZGVkLgorCisjIEp1bHkgMjAxMC4KKyMKKyMgUmVzY2hlZHVsaW5nIGZvciBkdWFsLWlzc3VlIHBpcGVsaW5lIHJlc3VsdGVkIGluIDEyJSBpbXByb3ZlbWVudCBvbgorIyBDb3J0ZXggQTggY29yZSBhbmQgfjI1IGN5Y2xlcyBwZXIgYnl0ZSBwcm9jZXNzZWQgd2l0aCAxMjgtYml0IGtleS4KKworIyBGZWJydWFyeSAyMDExLgorIworIyBQcm9maWxlci1hc3Npc3RlZCBhbmQgcGxhdGZvcm0tc3BlY2lmaWMgb3B0aW1pemF0aW9uIHJlc3VsdGVkIGluIDE2JQorIyBpbXByb3ZlbWVudCBvbiBDb3J0ZXggQTggY29yZSBhbmQgfjIxLjUgY3ljbGVzIHBlciBieXRlLgorCit3aGlsZSAoKCRvdXRwdXQ9c2hpZnQpICYmICgkb3V0cHV0IX4vXlx3W1x3XC1dKlwuXHcrJC8pKSB7fQorb3BlbiBTVERPVVQsIj4kb3V0cHV0IjsKKworJHMwPSJyMCI7CiskczE9InIxIjsKKyRzMj0icjIiOworJHMzPSJyMyI7CiskdDE9InI0IjsKKyR0Mj0icjUiOworJHQzPSJyNiI7CiskaTE9InI3IjsKKyRpMj0icjgiOworJGkzPSJyOSI7CisKKyR0Ymw9InIxMCI7Ciska2V5PSJyMTEiOworJHJvdW5kcz0icjEyIjsKKworJGNvZGU9PDxfX187CisjaW5jbHVkZSAiYXJtX2FyY2guaCIKKy50ZXh0CisuY29kZQkzMgorCisudHlwZQlBRVNfVGUsJW9iamVjdAorLmFsaWduCTUKK0FFU19UZToKKy53b3JkCTB4YzY2MzYzYTUsIDB4Zjg3YzdjODQsIDB4ZWU3Nzc3OTksIDB4ZjY3YjdiOGQKKy53b3JkCTB4ZmZmMmYyMGQsIDB4ZDY2YjZiYmQsIDB4ZGU2ZjZmYjEsIDB4OTFjNWM1NTQKKy53b3JkCTB4NjAzMDMwNTAsIDB4MDIwMTAxMDMsIDB4Y2U2NzY3YTksIDB4NTYyYjJiN2QKKy53b3JkCTB4ZTdmZWZlMTksIDB4YjVkN2Q3NjIsIDB4NGRhYmFiZTYsIDB4ZWM3Njc2OWEKKy53b3JkCTB4OGZjYWNhNDUsIDB4MWY4MjgyOWQsIDB4ODljOWM5NDAsIDB4ZmE3ZDdkODcKKy53b3JkCTB4ZWZmYWZhMTUsIDB4YjI1OTU5ZWIsIDB4OGU0NzQ3YzksIDB4ZmJmMGYwMGIKKy53b3JkCTB4NDFhZGFkZWMsIDB4YjNkNGQ0NjcsIDB4NWZhMmEyZmQsIDB4NDVhZmFmZWEKKy53b3JkCTB4MjM5YzljYmYsIDB4NTNhNGE0ZjcsIDB4ZTQ3MjcyOTYsIDB4OWJjMGMwNWIKKy53b3JkCTB4NzViN2I3YzIsIDB4ZTFmZGZkMWMsIDB4M2Q5MzkzYWUsIDB4NGMyNjI2NmEKKy53b3JkCTB4NmMzNjM2NWEsIDB4N2UzZjNmNDEsIDB4ZjVmN2Y3MDIsIDB4ODNjY2NjNGYKKy53b3JkCTB4NjgzNDM0NWMsIDB4NTFhNWE1ZjQsIDB4ZDFlNWU1MzQsIDB4ZjlmMWYxMDgKKy53b3JkCTB4ZTI3MTcxOTMsIDB4YWJkOGQ4NzMsIDB4NjIzMTMxNTMsIDB4MmExNTE1M2YKKy53b3JkCTB4MDgwNDA0MGMsIDB4OTVjN2M3NTIsIDB4NDYyMzIzNjUsIDB4OWRjM2MzNWUKKy53b3JkCTB4MzAxODE4MjgsIDB4Mzc5Njk2YTEsIDB4MGEwNTA1MGYsIDB4MmY5YTlhYjUKKy53b3JkCTB4MGUwNzA3MDksIDB4MjQxMjEyMzYsIDB4MWI4MDgwOWIsIDB4ZGZlMmUyM2QKKy53b3JkCTB4Y2RlYmViMjYsIDB4NGUyNzI3NjksIDB4N2ZiMmIyY2QsIDB4ZWE3NTc1OWYKKy53b3JkCTB4MTIwOTA5MWIsIDB4MWQ4MzgzOWUsIDB4NTgyYzJjNzQsIDB4MzQxYTFhMmUKKy53b3JkCTB4MzYxYjFiMmQsIDB4ZGM2ZTZlYjIsIDB4YjQ1YTVhZWUsIDB4NWJhMGEwZmIKKy53b3JkCTB4YTQ1MjUyZjYsIDB4NzYzYjNiNGQsIDB4YjdkNmQ2NjEsIDB4N2RiM2IzY2UKKy53b3JkCTB4NTIyOTI5N2IsIDB4ZGRlM2UzM2UsIDB4NWUyZjJmNzEsIDB4MTM4NDg0OTcKKy53b3JkCTB4YTY1MzUzZjUsIDB4YjlkMWQxNjgsIDB4MDAwMDAwMDAsIDB4YzFlZGVkMmMKKy53b3JkCTB4NDAyMDIwNjAsIDB4ZTNmY2ZjMWYsIDB4NzliMWIxYzgsIDB4YjY1YjViZWQKKy53b3JkCTB4ZDQ2YTZhYmUsIDB4OGRjYmNiNDYsIDB4NjdiZWJlZDksIDB4NzIzOTM5NGIKKy53b3JkCTB4OTQ0YTRhZGUsIDB4OTg0YzRjZDQsIDB4YjA1ODU4ZTgsIDB4ODVjZmNmNGEKKy53b3JkCTB4YmJkMGQwNmIsIDB4YzVlZmVmMmEsIDB4NGZhYWFhZTUsIDB4ZWRmYmZiMTYKKy53b3JkCTB4ODY0MzQzYzUsIDB4OWE0ZDRkZDcsIDB4NjYzMzMzNTUsIDB4MTE4NTg1OTQKKy53b3JkCTB4OGE0NTQ1Y2YsIDB4ZTlmOWY5MTAsIDB4MDQwMjAyMDYsIDB4ZmU3ZjdmODEKKy53b3JkCTB4YTA1MDUwZjAsIDB4NzgzYzNjNDQsIDB4MjU5ZjlmYmEsIDB4NGJhOGE4ZTMKKy53b3JkCTB4YTI1MTUxZjMsIDB4NWRhM2EzZmUsIDB4ODA0MDQwYzAsIDB4MDU4ZjhmOGEKKy53b3JkCTB4M2Y5MjkyYWQsIDB4MjE5ZDlkYmMsIDB4NzAzODM4NDgsIDB4ZjFmNWY1MDQKKy53b3JkCTB4NjNiY2JjZGYsIDB4NzdiNmI2YzEsIDB4YWZkYWRhNzUsIDB4NDIyMTIxNjMKKy53b3JkCTB4MjAxMDEwMzAsIDB4ZTVmZmZmMWEsIDB4ZmRmM2YzMGUsIDB4YmZkMmQyNmQKKy53b3JkCTB4ODFjZGNkNGMsIDB4MTgwYzBjMTQsIDB4MjYxMzEzMzUsIDB4YzNlY2VjMmYKKy53b3JkCTB4YmU1ZjVmZTEsIDB4MzU5Nzk3YTIsIDB4ODg0NDQ0Y2MsIDB4MmUxNzE3MzkKKy53b3JkCTB4OTNjNGM0NTcsIDB4NTVhN2E3ZjIsIDB4ZmM3ZTdlODIsIDB4N2EzZDNkNDcKKy53b3JkCTB4Yzg2NDY0YWMsIDB4YmE1ZDVkZTcsIDB4MzIxOTE5MmIsIDB4ZTY3MzczOTUKKy53b3JkCTB4YzA2MDYwYTAsIDB4MTk4MTgxOTgsIDB4OWU0ZjRmZDEsIDB4YTNkY2RjN2YKKy53b3JkCTB4NDQyMjIyNjYsIDB4NTQyYTJhN2UsIDB4M2I5MDkwYWIsIDB4MGI4ODg4ODMKKy53b3JkCTB4OGM0NjQ2Y2EsIDB4YzdlZWVlMjksIDB4NmJiOGI4ZDMsIDB4MjgxNDE0M2MKKy53b3JkCTB4YTdkZWRlNzksIDB4YmM1ZTVlZTIsIDB4MTYwYjBiMWQsIDB4YWRkYmRiNzYKKy53b3JkCTB4ZGJlMGUwM2IsIDB4NjQzMjMyNTYsIDB4NzQzYTNhNGUsIDB4MTQwYTBhMWUKKy53b3JkCTB4OTI0OTQ5ZGIsIDB4MGMwNjA2MGEsIDB4NDgyNDI0NmMsIDB4Yjg1YzVjZTQKKy53b3JkCTB4OWZjMmMyNWQsIDB4YmRkM2QzNmUsIDB4NDNhY2FjZWYsIDB4YzQ2MjYyYTYKKy53b3JkCTB4Mzk5MTkxYTgsIDB4MzE5NTk1YTQsIDB4ZDNlNGU0MzcsIDB4ZjI3OTc5OGIKKy53b3JkCTB4ZDVlN2U3MzIsIDB4OGJjOGM4NDMsIDB4NmUzNzM3NTksIDB4ZGE2ZDZkYjcKKy53b3JkCTB4MDE4ZDhkOGMsIDB4YjFkNWQ1NjQsIDB4OWM0ZTRlZDIsIDB4NDlhOWE5ZTAKKy53b3JkCTB4ZDg2YzZjYjQsIDB4YWM1NjU2ZmEsIDB4ZjNmNGY0MDcsIDB4Y2ZlYWVhMjUKKy53b3JkCTB4Y2E2NTY1YWYsIDB4ZjQ3YTdhOGUsIDB4NDdhZWFlZTksIDB4MTAwODA4MTgKKy53b3JkCTB4NmZiYWJhZDUsIDB4ZjA3ODc4ODgsIDB4NGEyNTI1NmYsIDB4NWMyZTJlNzIKKy53b3JkCTB4MzgxYzFjMjQsIDB4NTdhNmE2ZjEsIDB4NzNiNGI0YzcsIDB4OTdjNmM2NTEKKy53b3JkCTB4Y2JlOGU4MjMsIDB4YTFkZGRkN2MsIDB4ZTg3NDc0OWMsIDB4M2UxZjFmMjEKKy53b3JkCTB4OTY0YjRiZGQsIDB4NjFiZGJkZGMsIDB4MGQ4YjhiODYsIDB4MGY4YThhODUKKy53b3JkCTB4ZTA3MDcwOTAsIDB4N2MzZTNlNDIsIDB4NzFiNWI1YzQsIDB4Y2M2NjY2YWEKKy53b3JkCTB4OTA0ODQ4ZDgsIDB4MDYwMzAzMDUsIDB4ZjdmNmY2MDEsIDB4MWMwZTBlMTIKKy53b3JkCTB4YzI2MTYxYTMsIDB4NmEzNTM1NWYsIDB4YWU1NzU3ZjksIDB4NjliOWI5ZDAKKy53b3JkCTB4MTc4Njg2OTEsIDB4OTljMWMxNTgsIDB4M2ExZDFkMjcsIDB4Mjc5ZTllYjkKKy53b3JkCTB4ZDllMWUxMzgsIDB4ZWJmOGY4MTMsIDB4MmI5ODk4YjMsIDB4MjIxMTExMzMKKy53b3JkCTB4ZDI2OTY5YmIsIDB4YTlkOWQ5NzAsIDB4MDc4ZThlODksIDB4MzM5NDk0YTcKKy53b3JkCTB4MmQ5YjliYjYsIDB4M2MxZTFlMjIsIDB4MTU4Nzg3OTIsIDB4YzllOWU5MjAKKy53b3JkCTB4ODdjZWNlNDksIDB4YWE1NTU1ZmYsIDB4NTAyODI4NzgsIDB4YTVkZmRmN2EKKy53b3JkCTB4MDM4YzhjOGYsIDB4NTlhMWExZjgsIDB4MDk4OTg5ODAsIDB4MWEwZDBkMTcKKy53b3JkCTB4NjViZmJmZGEsIDB4ZDdlNmU2MzEsIDB4ODQ0MjQyYzYsIDB4ZDA2ODY4YjgKKy53b3JkCTB4ODI0MTQxYzMsIDB4Mjk5OTk5YjAsIDB4NWEyZDJkNzcsIDB4MWUwZjBmMTEKKy53b3JkCTB4N2JiMGIwY2IsIDB4YTg1NDU0ZmMsIDB4NmRiYmJiZDYsIDB4MmMxNjE2M2EKK0AgVGU0WzI1Nl0KKy5ieXRlCTB4NjMsIDB4N2MsIDB4NzcsIDB4N2IsIDB4ZjIsIDB4NmIsIDB4NmYsIDB4YzUKKy5ieXRlCTB4MzAsIDB4MDEsIDB4NjcsIDB4MmIsIDB4ZmUsIDB4ZDcsIDB4YWIsIDB4NzYKKy5ieXRlCTB4Y2EsIDB4ODIsIDB4YzksIDB4N2QsIDB4ZmEsIDB4NTksIDB4NDcsIDB4ZjAKKy5ieXRlCTB4YWQsIDB4ZDQsIDB4YTIsIDB4YWYsIDB4OWMsIDB4YTQsIDB4NzIsIDB4YzAKKy5ieXRlCTB4YjcsIDB4ZmQsIDB4OTMsIDB4MjYsIDB4MzYsIDB4M2YsIDB4ZjcsIDB4Y2MKKy5ieXRlCTB4MzQsIDB4YTUsIDB4ZTUsIDB4ZjEsIDB4NzEsIDB4ZDgsIDB4MzEsIDB4MTUKKy5ieXRlCTB4MDQsIDB4YzcsIDB4MjMsIDB4YzMsIDB4MTgsIDB4OTYsIDB4MDUsIDB4OWEKKy5ieXRlCTB4MDcsIDB4MTIsIDB4ODAsIDB4ZTIsIDB4ZWIsIDB4MjcsIDB4YjIsIDB4NzUKKy5ieXRlCTB4MDksIDB4ODMsIDB4MmMsIDB4MWEsIDB4MWIsIDB4NmUsIDB4NWEsIDB4YTAKKy5ieXRlCTB4NTIsIDB4M2IsIDB4ZDYsIDB4YjMsIDB4MjksIDB4ZTMsIDB4MmYsIDB4ODQKKy5ieXRlCTB4NTMsIDB4ZDEsIDB4MDAsIDB4ZWQsIDB4MjAsIDB4ZmMsIDB4YjEsIDB4NWIKKy5ieXRlCTB4NmEsIDB4Y2IsIDB4YmUsIDB4MzksIDB4NGEsIDB4NGMsIDB4NTgsIDB4Y2YKKy5ieXRlCTB4ZDAsIDB4ZWYsIDB4YWEsIDB4ZmIsIDB4NDMsIDB4NGQsIDB4MzMsIDB4ODUKKy5ieXRlCTB4NDUsIDB4ZjksIDB4MDIsIDB4N2YsIDB4NTAsIDB4M2MsIDB4OWYsIDB4YTgKKy5ieXRlCTB4NTEsIDB4YTMsIDB4NDAsIDB4OGYsIDB4OTIsIDB4OWQsIDB4MzgsIDB4ZjUKKy5ieXRlCTB4YmMsIDB4YjYsIDB4ZGEsIDB4MjEsIDB4MTAsIDB4ZmYsIDB4ZjMsIDB4ZDIKKy5ieXRlCTB4Y2QsIDB4MGMsIDB4MTMsIDB4ZWMsIDB4NWYsIDB4OTcsIDB4NDQsIDB4MTcKKy5ieXRlCTB4YzQsIDB4YTcsIDB4N2UsIDB4M2QsIDB4NjQsIDB4NWQsIDB4MTksIDB4NzMKKy5ieXRlCTB4NjAsIDB4ODEsIDB4NGYsIDB4ZGMsIDB4MjIsIDB4MmEsIDB4OTAsIDB4ODgKKy5ieXRlCTB4NDYsIDB4ZWUsIDB4YjgsIDB4MTQsIDB4ZGUsIDB4NWUsIDB4MGIsIDB4ZGIKKy5ieXRlCTB4ZTAsIDB4MzIsIDB4M2EsIDB4MGEsIDB4NDksIDB4MDYsIDB4MjQsIDB4NWMKKy5ieXRlCTB4YzIsIDB4ZDMsIDB4YWMsIDB4NjIsIDB4OTEsIDB4OTUsIDB4ZTQsIDB4NzkKKy5ieXRlCTB4ZTcsIDB4YzgsIDB4MzcsIDB4NmQsIDB4OGQsIDB4ZDUsIDB4NGUsIDB4YTkKKy5ieXRlCTB4NmMsIDB4NTYsIDB4ZjQsIDB4ZWEsIDB4NjUsIDB4N2EsIDB4YWUsIDB4MDgKKy5ieXRlCTB4YmEsIDB4NzgsIDB4MjUsIDB4MmUsIDB4MWMsIDB4YTYsIDB4YjQsIDB4YzYKKy5ieXRlCTB4ZTgsIDB4ZGQsIDB4NzQsIDB4MWYsIDB4NGIsIDB4YmQsIDB4OGIsIDB4OGEKKy5ieXRlCTB4NzAsIDB4M2UsIDB4YjUsIDB4NjYsIDB4NDgsIDB4MDMsIDB4ZjYsIDB4MGUKKy5ieXRlCTB4NjEsIDB4MzUsIDB4NTcsIDB4YjksIDB4ODYsIDB4YzEsIDB4MWQsIDB4OWUKKy5ieXRlCTB4ZTEsIDB4ZjgsIDB4OTgsIDB4MTEsIDB4NjksIDB4ZDksIDB4OGUsIDB4OTQKKy5ieXRlCTB4OWIsIDB4MWUsIDB4ODcsIDB4ZTksIDB4Y2UsIDB4NTUsIDB4MjgsIDB4ZGYKKy5ieXRlCTB4OGMsIDB4YTEsIDB4ODksIDB4MGQsIDB4YmYsIDB4ZTYsIDB4NDIsIDB4NjgKKy5ieXRlCTB4NDEsIDB4OTksIDB4MmQsIDB4MGYsIDB4YjAsIDB4NTQsIDB4YmIsIDB4MTYKK0AgcmNvbltdCisud29yZAkweDAxMDAwMDAwLCAweDAyMDAwMDAwLCAweDA0MDAwMDAwLCAweDA4MDAwMDAwCisud29yZAkweDEwMDAwMDAwLCAweDIwMDAwMDAwLCAweDQwMDAwMDAwLCAweDgwMDAwMDAwCisud29yZAkweDFCMDAwMDAwLCAweDM2MDAwMDAwLCAwLCAwLCAwLCAwLCAwLCAwCisuc2l6ZQlBRVNfVGUsLi1BRVNfVGUKKworQCB2b2lkIEFFU19lbmNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCitAIAkJIGNvbnN0IEFFU19LRVkgKmtleSkgeworLmdsb2JhbCBBRVNfZW5jcnlwdAorLnR5cGUgICBBRVNfZW5jcnlwdCwlZnVuY3Rpb24KKy5hbGlnbgk1CitBRVNfZW5jcnlwdDoKKwlzdWIJcjMscGMsIzgJCUAgQUVTX2VuY3J5cHQKKwlzdG1kYiAgIHNwISx7cjEscjQtcjEyLGxyfQorCW1vdgkkcm91bmRzLHIwCQlAIGlucAorCW1vdgkka2V5LHIyCisJc3ViCSR0YmwscjMsI0FFU19lbmNyeXB0LUFFU19UZQlAIFRlCisjaWYgX19BUk1fQVJDSF9fPDcKKwlsZHJiCSRzMCxbJHJvdW5kcywjM10JQCBsb2FkIGlucHV0IGRhdGEgaW4gZW5kaWFuLW5ldXRyYWwKKwlsZHJiCSR0MSxbJHJvdW5kcywjMl0JQCBtYW5uZXIuLi4KKwlsZHJiCSR0MixbJHJvdW5kcywjMV0KKwlsZHJiCSR0MyxbJHJvdW5kcywjMF0KKwlvcnIJJHMwLCRzMCwkdDEsbHNsIzgKKwlsZHJiCSRzMSxbJHJvdW5kcywjN10KKwlvcnIJJHMwLCRzMCwkdDIsbHNsIzE2CisJbGRyYgkkdDEsWyRyb3VuZHMsIzZdCisJb3JyCSRzMCwkczAsJHQzLGxzbCMyNAorCWxkcmIJJHQyLFskcm91bmRzLCM1XQorCWxkcmIJJHQzLFskcm91bmRzLCM0XQorCW9ycgkkczEsJHMxLCR0MSxsc2wjOAorCWxkcmIJJHMyLFskcm91bmRzLCMxMV0KKwlvcnIJJHMxLCRzMSwkdDIsbHNsIzE2CisJbGRyYgkkdDEsWyRyb3VuZHMsIzEwXQorCW9ycgkkczEsJHMxLCR0Myxsc2wjMjQKKwlsZHJiCSR0MixbJHJvdW5kcywjOV0KKwlsZHJiCSR0MyxbJHJvdW5kcywjOF0KKwlvcnIJJHMyLCRzMiwkdDEsbHNsIzgKKwlsZHJiCSRzMyxbJHJvdW5kcywjMTVdCisJb3JyCSRzMiwkczIsJHQyLGxzbCMxNgorCWxkcmIJJHQxLFskcm91bmRzLCMxNF0KKwlvcnIJJHMyLCRzMiwkdDMsbHNsIzI0CisJbGRyYgkkdDIsWyRyb3VuZHMsIzEzXQorCWxkcmIJJHQzLFskcm91bmRzLCMxMl0KKwlvcnIJJHMzLCRzMywkdDEsbHNsIzgKKwlvcnIJJHMzLCRzMywkdDIsbHNsIzE2CisJb3JyCSRzMywkczMsJHQzLGxzbCMyNAorI2Vsc2UKKwlsZHIJJHMwLFskcm91bmRzLCMwXQorCWxkcgkkczEsWyRyb3VuZHMsIzRdCisJbGRyCSRzMixbJHJvdW5kcywjOF0KKwlsZHIJJHMzLFskcm91bmRzLCMxMl0KKyNpZmRlZiBfX0FSTUVMX18KKwlyZXYJJHMwLCRzMAorCXJldgkkczEsJHMxCisJcmV2CSRzMiwkczIKKwlyZXYJJHMzLCRzMworI2VuZGlmCisjZW5kaWYKKwlibAlfYXJtdjRfQUVTX2VuY3J5cHQKKworCWxkcgkkcm91bmRzLFtzcF0sIzQJCUAgcG9wIG91dAorI2lmIF9fQVJNX0FSQ0hfXz49NworI2lmZGVmIF9fQVJNRUxfXworCXJldgkkczAsJHMwCisJcmV2CSRzMSwkczEKKwlyZXYJJHMyLCRzMgorCXJldgkkczMsJHMzCisjZW5kaWYKKwlzdHIJJHMwLFskcm91bmRzLCMwXQorCXN0cgkkczEsWyRyb3VuZHMsIzRdCisJc3RyCSRzMixbJHJvdW5kcywjOF0KKwlzdHIJJHMzLFskcm91bmRzLCMxMl0KKyNlbHNlCisJbW92CSR0MSwkczAsbHNyIzI0CQlAIHdyaXRlIG91dHB1dCBpbiBlbmRpYW4tbmV1dHJhbAorCW1vdgkkdDIsJHMwLGxzciMxNgkJQCBtYW5uZXIuLi4KKwltb3YJJHQzLCRzMCxsc3IjOAorCXN0cmIJJHQxLFskcm91bmRzLCMwXQorCXN0cmIJJHQyLFskcm91bmRzLCMxXQorCW1vdgkkdDEsJHMxLGxzciMyNAorCXN0cmIJJHQzLFskcm91bmRzLCMyXQorCW1vdgkkdDIsJHMxLGxzciMxNgorCXN0cmIJJHMwLFskcm91bmRzLCMzXQorCW1vdgkkdDMsJHMxLGxzciM4CisJc3RyYgkkdDEsWyRyb3VuZHMsIzRdCisJc3RyYgkkdDIsWyRyb3VuZHMsIzVdCisJbW92CSR0MSwkczIsbHNyIzI0CisJc3RyYgkkdDMsWyRyb3VuZHMsIzZdCisJbW92CSR0MiwkczIsbHNyIzE2CisJc3RyYgkkczEsWyRyb3VuZHMsIzddCisJbW92CSR0MywkczIsbHNyIzgKKwlzdHJiCSR0MSxbJHJvdW5kcywjOF0KKwlzdHJiCSR0MixbJHJvdW5kcywjOV0KKwltb3YJJHQxLCRzMyxsc3IjMjQKKwlzdHJiCSR0MyxbJHJvdW5kcywjMTBdCisJbW92CSR0MiwkczMsbHNyIzE2CisJc3RyYgkkczIsWyRyb3VuZHMsIzExXQorCW1vdgkkdDMsJHMzLGxzciM4CisJc3RyYgkkdDEsWyRyb3VuZHMsIzEyXQorCXN0cmIJJHQyLFskcm91bmRzLCMxM10KKwlzdHJiCSR0MyxbJHJvdW5kcywjMTRdCisJc3RyYgkkczMsWyRyb3VuZHMsIzE1XQorI2VuZGlmCisjaWYgX19BUk1fQVJDSF9fPj01CisJbGRtaWEJc3AhLHtyNC1yMTIscGN9CisjZWxzZQorCWxkbWlhICAgc3AhLHtyNC1yMTIsbHJ9CisJdHN0CWxyLCMxCisJbW92ZXEJcGMsbHIJCQlAIGJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggVjQsIHlldAorCWJ4CWxyCQkJQCBpbnRlcm9wZXJhYmxlIHdpdGggVGh1bWIgSVNBOi0pCisjZW5kaWYKKy5zaXplCUFFU19lbmNyeXB0LC4tQUVTX2VuY3J5cHQKKworLnR5cGUgICBfYXJtdjRfQUVTX2VuY3J5cHQsJWZ1bmN0aW9uCisuYWxpZ24JMgorX2FybXY0X0FFU19lbmNyeXB0OgorCXN0cglscixbc3AsIy00XSEJCUAgcHVzaCBscgorCWxkbWlhCSRrZXkhLHskdDEtJGkxfQorCWVvcgkkczAsJHMwLCR0MQorCWxkcgkkcm91bmRzLFska2V5LCMyNDAtMTZdCisJZW9yCSRzMSwkczEsJHQyCisJZW9yCSRzMiwkczIsJHQzCisJZW9yCSRzMywkczMsJGkxCisJc3ViCSRyb3VuZHMsJHJvdW5kcywjMQorCW1vdglsciwjMjU1CisKKwlhbmQJJGkxLGxyLCRzMAorCWFuZAkkaTIsbHIsJHMwLGxzciM4CisJYW5kCSRpMyxsciwkczAsbHNyIzE2CisJbW92CSRzMCwkczAsbHNyIzI0CisuTGVuY19sb29wOgorCWxkcgkkdDEsWyR0YmwsJGkxLGxzbCMyXQlAIFRlM1tzMD4+MF0KKwlhbmQJJGkxLGxyLCRzMSxsc3IjMTYJQCBpMAorCWxkcgkkdDIsWyR0YmwsJGkyLGxzbCMyXQlAIFRlMltzMD4+OF0KKwlhbmQJJGkyLGxyLCRzMQorCWxkcgkkdDMsWyR0YmwsJGkzLGxzbCMyXQlAIFRlMVtzMD4+MTZdCisJYW5kCSRpMyxsciwkczEsbHNyIzgKKwlsZHIJJHMwLFskdGJsLCRzMCxsc2wjMl0JQCBUZTBbczA+PjI0XQorCW1vdgkkczEsJHMxLGxzciMyNAorCisJbGRyCSRpMSxbJHRibCwkaTEsbHNsIzJdCUAgVGUxW3MxPj4xNl0KKwlsZHIJJGkyLFskdGJsLCRpMixsc2wjMl0JQCBUZTNbczE+PjBdCisJbGRyCSRpMyxbJHRibCwkaTMsbHNsIzJdCUAgVGUyW3MxPj44XQorCWVvcgkkczAsJHMwLCRpMSxyb3IjOAorCWxkcgkkczEsWyR0YmwsJHMxLGxzbCMyXQlAIFRlMFtzMT4+MjRdCisJYW5kCSRpMSxsciwkczIsbHNyIzgJQCBpMAorCWVvcgkkdDIsJHQyLCRpMixyb3IjOAorCWFuZAkkaTIsbHIsJHMyLGxzciMxNglAIGkxCisJZW9yCSR0MywkdDMsJGkzLHJvciM4CisJYW5kCSRpMyxsciwkczIKKwlsZHIJJGkxLFskdGJsLCRpMSxsc2wjMl0JQCBUZTJbczI+PjhdCisJZW9yCSRzMSwkczEsJHQxLHJvciMyNAorCWxkcgkkaTIsWyR0YmwsJGkyLGxzbCMyXQlAIFRlMVtzMj4+MTZdCisJbW92CSRzMiwkczIsbHNyIzI0CisKKwlsZHIJJGkzLFskdGJsLCRpMyxsc2wjMl0JQCBUZTNbczI+PjBdCisJZW9yCSRzMCwkczAsJGkxLHJvciMxNgorCWxkcgkkczIsWyR0YmwsJHMyLGxzbCMyXQlAIFRlMFtzMj4+MjRdCisJYW5kCSRpMSxsciwkczMJCUAgaTAKKwllb3IJJHMxLCRzMSwkaTIscm9yIzgKKwlhbmQJJGkyLGxyLCRzMyxsc3IjOAlAIGkxCisJZW9yCSR0MywkdDMsJGkzLHJvciMxNgorCWFuZAkkaTMsbHIsJHMzLGxzciMxNglAIGkyCisJbGRyCSRpMSxbJHRibCwkaTEsbHNsIzJdCUAgVGUzW3MzPj4wXQorCWVvcgkkczIsJHMyLCR0Mixyb3IjMTYKKwlsZHIJJGkyLFskdGJsLCRpMixsc2wjMl0JQCBUZTJbczM+PjhdCisJbW92CSRzMywkczMsbHNyIzI0CisKKwlsZHIJJGkzLFskdGJsLCRpMyxsc2wjMl0JQCBUZTFbczM+PjE2XQorCWVvcgkkczAsJHMwLCRpMSxyb3IjMjQKKwlsZHIJJGkxLFska2V5XSwjMTYKKwllb3IJJHMxLCRzMSwkaTIscm9yIzE2CisJbGRyCSRzMyxbJHRibCwkczMsbHNsIzJdCUAgVGUwW3MzPj4yNF0KKwllb3IJJHMyLCRzMiwkaTMscm9yIzgKKwlsZHIJJHQxLFska2V5LCMtMTJdCisJZW9yCSRzMywkczMsJHQzLHJvciM4CisKKwlsZHIJJHQyLFska2V5LCMtOF0KKwllb3IJJHMwLCRzMCwkaTEKKwlsZHIJJHQzLFska2V5LCMtNF0KKwlhbmQJJGkxLGxyLCRzMAorCWVvcgkkczEsJHMxLCR0MQorCWFuZAkkaTIsbHIsJHMwLGxzciM4CisJZW9yCSRzMiwkczIsJHQyCisJYW5kCSRpMyxsciwkczAsbHNyIzE2CisJZW9yCSRzMywkczMsJHQzCisJbW92CSRzMCwkczAsbHNyIzI0CisKKwlzdWJzCSRyb3VuZHMsJHJvdW5kcywjMQorCWJuZQkuTGVuY19sb29wCisKKwlhZGQJJHRibCwkdGJsLCMyCisKKwlsZHJiCSR0MSxbJHRibCwkaTEsbHNsIzJdCUAgVGU0W3MwPj4wXQorCWFuZAkkaTEsbHIsJHMxLGxzciMxNglAIGkwCisJbGRyYgkkdDIsWyR0YmwsJGkyLGxzbCMyXQlAIFRlNFtzMD4+OF0KKwlhbmQJJGkyLGxyLCRzMQorCWxkcmIJJHQzLFskdGJsLCRpMyxsc2wjMl0JQCBUZTRbczA+PjE2XQorCWFuZAkkaTMsbHIsJHMxLGxzciM4CisJbGRyYgkkczAsWyR0YmwsJHMwLGxzbCMyXQlAIFRlNFtzMD4+MjRdCisJbW92CSRzMSwkczEsbHNyIzI0CisKKwlsZHJiCSRpMSxbJHRibCwkaTEsbHNsIzJdCUAgVGU0W3MxPj4xNl0KKwlsZHJiCSRpMixbJHRibCwkaTIsbHNsIzJdCUAgVGU0W3MxPj4wXQorCWxkcmIJJGkzLFskdGJsLCRpMyxsc2wjMl0JQCBUZTRbczE+PjhdCisJZW9yCSRzMCwkaTEsJHMwLGxzbCM4CisJbGRyYgkkczEsWyR0YmwsJHMxLGxzbCMyXQlAIFRlNFtzMT4+MjRdCisJYW5kCSRpMSxsciwkczIsbHNyIzgJQCBpMAorCWVvcgkkdDIsJGkyLCR0Mixsc2wjOAorCWFuZAkkaTIsbHIsJHMyLGxzciMxNglAIGkxCisJZW9yCSR0MywkaTMsJHQzLGxzbCM4CisJYW5kCSRpMyxsciwkczIKKwlsZHJiCSRpMSxbJHRibCwkaTEsbHNsIzJdCUAgVGU0W3MyPj44XQorCWVvcgkkczEsJHQxLCRzMSxsc2wjMjQKKwlsZHJiCSRpMixbJHRibCwkaTIsbHNsIzJdCUAgVGU0W3MyPj4xNl0KKwltb3YJJHMyLCRzMixsc3IjMjQKKworCWxkcmIJJGkzLFskdGJsLCRpMyxsc2wjMl0JQCBUZTRbczI+PjBdCisJZW9yCSRzMCwkaTEsJHMwLGxzbCM4CisJbGRyYgkkczIsWyR0YmwsJHMyLGxzbCMyXQlAIFRlNFtzMj4+MjRdCisJYW5kCSRpMSxsciwkczMJCUAgaTAKKwllb3IJJHMxLCRzMSwkaTIsbHNsIzE2CisJYW5kCSRpMixsciwkczMsbHNyIzgJQCBpMQorCWVvcgkkdDMsJGkzLCR0Myxsc2wjOAorCWFuZAkkaTMsbHIsJHMzLGxzciMxNglAIGkyCisJbGRyYgkkaTEsWyR0YmwsJGkxLGxzbCMyXQlAIFRlNFtzMz4+MF0KKwllb3IJJHMyLCR0MiwkczIsbHNsIzI0CisJbGRyYgkkaTIsWyR0YmwsJGkyLGxzbCMyXQlAIFRlNFtzMz4+OF0KKwltb3YJJHMzLCRzMyxsc3IjMjQKKworCWxkcmIJJGkzLFskdGJsLCRpMyxsc2wjMl0JQCBUZTRbczM+PjE2XQorCWVvcgkkczAsJGkxLCRzMCxsc2wjOAorCWxkcgkkaTEsWyRrZXksIzBdCisJbGRyYgkkczMsWyR0YmwsJHMzLGxzbCMyXQlAIFRlNFtzMz4+MjRdCisJZW9yCSRzMSwkczEsJGkyLGxzbCM4CisJbGRyCSR0MSxbJGtleSwjNF0KKwllb3IJJHMyLCRzMiwkaTMsbHNsIzE2CisJbGRyCSR0MixbJGtleSwjOF0KKwllb3IJJHMzLCR0MywkczMsbHNsIzI0CisJbGRyCSR0MyxbJGtleSwjMTJdCisKKwllb3IJJHMwLCRzMCwkaTEKKwllb3IJJHMxLCRzMSwkdDEKKwllb3IJJHMyLCRzMiwkdDIKKwllb3IJJHMzLCRzMywkdDMKKworCXN1YgkkdGJsLCR0YmwsIzIKKwlsZHIJcGMsW3NwXSwjNAkJQCBwb3AgYW5kIHJldHVybgorLnNpemUJX2FybXY0X0FFU19lbmNyeXB0LC4tX2FybXY0X0FFU19lbmNyeXB0CisKKy5nbG9iYWwgcHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5CisudHlwZSAgIHByaXZhdGVfQUVTX3NldF9lbmNyeXB0X2tleSwlZnVuY3Rpb24KKy5hbGlnbgk1Citwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXk6CitfYXJtdjRfQUVTX3NldF9lbmNyeXB0X2tleToKKwlzdWIJcjMscGMsIzgJCUAgQUVTX3NldF9lbmNyeXB0X2tleQorCXRlcQlyMCwjMAorCW1vdmVxCXIwLCMtMQorCWJlcQkuTGFicnQKKwl0ZXEJcjIsIzAKKwltb3ZlcQlyMCwjLTEKKwliZXEJLkxhYnJ0CisKKwl0ZXEJcjEsIzEyOAorCWJlcQkuTG9rCisJdGVxCXIxLCMxOTIKKwliZXEJLkxvaworCXRlcQlyMSwjMjU2CisJbW92bmUJcjAsIy0xCisJYm5lCS5MYWJydAorCisuTG9rOglzdG1kYiAgIHNwISx7cjQtcjEyLGxyfQorCXN1YgkkdGJsLHIzLCNfYXJtdjRfQUVTX3NldF9lbmNyeXB0X2tleS1BRVNfVGUtMTAyNAlAIFRlNAorCisJbW92CSRyb3VuZHMscjAJCUAgaW5wCisJbW92CWxyLHIxCQkJQCBiaXRzCisJbW92CSRrZXkscjIJCQlAIGtleQorCisjaWYgX19BUk1fQVJDSF9fPDcKKwlsZHJiCSRzMCxbJHJvdW5kcywjM10JQCBsb2FkIGlucHV0IGRhdGEgaW4gZW5kaWFuLW5ldXRyYWwKKwlsZHJiCSR0MSxbJHJvdW5kcywjMl0JQCBtYW5uZXIuLi4KKwlsZHJiCSR0MixbJHJvdW5kcywjMV0KKwlsZHJiCSR0MyxbJHJvdW5kcywjMF0KKwlvcnIJJHMwLCRzMCwkdDEsbHNsIzgKKwlsZHJiCSRzMSxbJHJvdW5kcywjN10KKwlvcnIJJHMwLCRzMCwkdDIsbHNsIzE2CisJbGRyYgkkdDEsWyRyb3VuZHMsIzZdCisJb3JyCSRzMCwkczAsJHQzLGxzbCMyNAorCWxkcmIJJHQyLFskcm91bmRzLCM1XQorCWxkcmIJJHQzLFskcm91bmRzLCM0XQorCW9ycgkkczEsJHMxLCR0MSxsc2wjOAorCWxkcmIJJHMyLFskcm91bmRzLCMxMV0KKwlvcnIJJHMxLCRzMSwkdDIsbHNsIzE2CisJbGRyYgkkdDEsWyRyb3VuZHMsIzEwXQorCW9ycgkkczEsJHMxLCR0Myxsc2wjMjQKKwlsZHJiCSR0MixbJHJvdW5kcywjOV0KKwlsZHJiCSR0MyxbJHJvdW5kcywjOF0KKwlvcnIJJHMyLCRzMiwkdDEsbHNsIzgKKwlsZHJiCSRzMyxbJHJvdW5kcywjMTVdCisJb3JyCSRzMiwkczIsJHQyLGxzbCMxNgorCWxkcmIJJHQxLFskcm91bmRzLCMxNF0KKwlvcnIJJHMyLCRzMiwkdDMsbHNsIzI0CisJbGRyYgkkdDIsWyRyb3VuZHMsIzEzXQorCWxkcmIJJHQzLFskcm91bmRzLCMxMl0KKwlvcnIJJHMzLCRzMywkdDEsbHNsIzgKKwlzdHIJJHMwLFska2V5XSwjMTYKKwlvcnIJJHMzLCRzMywkdDIsbHNsIzE2CisJc3RyCSRzMSxbJGtleSwjLTEyXQorCW9ycgkkczMsJHMzLCR0Myxsc2wjMjQKKwlzdHIJJHMyLFska2V5LCMtOF0KKwlzdHIJJHMzLFska2V5LCMtNF0KKyNlbHNlCisJbGRyCSRzMCxbJHJvdW5kcywjMF0KKwlsZHIJJHMxLFskcm91bmRzLCM0XQorCWxkcgkkczIsWyRyb3VuZHMsIzhdCisJbGRyCSRzMyxbJHJvdW5kcywjMTJdCisjaWZkZWYgX19BUk1FTF9fCisJcmV2CSRzMCwkczAKKwlyZXYJJHMxLCRzMQorCXJldgkkczIsJHMyCisJcmV2CSRzMywkczMKKyNlbmRpZgorCXN0cgkkczAsWyRrZXldLCMxNgorCXN0cgkkczEsWyRrZXksIy0xMl0KKwlzdHIJJHMyLFska2V5LCMtOF0KKwlzdHIJJHMzLFska2V5LCMtNF0KKyNlbmRpZgorCisJdGVxCWxyLCMxMjgKKwlibmUJLkxub3QxMjgKKwltb3YJJHJvdW5kcywjMTAKKwlzdHIJJHJvdW5kcyxbJGtleSwjMjQwLTE2XQorCWFkZAkkdDMsJHRibCwjMjU2CQkJQCByY29uCisJbW92CWxyLCMyNTUKKworLkwxMjhfbG9vcDoKKwlhbmQJJHQyLGxyLCRzMyxsc3IjMjQKKwlhbmQJJGkxLGxyLCRzMyxsc3IjMTYKKwlsZHJiCSR0MixbJHRibCwkdDJdCisJYW5kCSRpMixsciwkczMsbHNyIzgKKwlsZHJiCSRpMSxbJHRibCwkaTFdCisJYW5kCSRpMyxsciwkczMKKwlsZHJiCSRpMixbJHRibCwkaTJdCisJb3JyCSR0MiwkdDIsJGkxLGxzbCMyNAorCWxkcmIJJGkzLFskdGJsLCRpM10KKwlvcnIJJHQyLCR0MiwkaTIsbHNsIzE2CisJbGRyCSR0MSxbJHQzXSwjNAkJCUAgcmNvbltpKytdCisJb3JyCSR0MiwkdDIsJGkzLGxzbCM4CisJZW9yCSR0MiwkdDIsJHQxCisJZW9yCSRzMCwkczAsJHQyCQkJQCBya1s0XT1ya1swXV4uLi4KKwllb3IJJHMxLCRzMSwkczAJCQlAIHJrWzVdPXJrWzFdXnJrWzRdCisJc3RyCSRzMCxbJGtleV0sIzE2CisJZW9yCSRzMiwkczIsJHMxCQkJQCBya1s2XT1ya1syXV5ya1s1XQorCXN0cgkkczEsWyRrZXksIy0xMl0KKwllb3IJJHMzLCRzMywkczIJCQlAIHJrWzddPXJrWzNdXnJrWzZdCisJc3RyCSRzMixbJGtleSwjLThdCisJc3Vicwkkcm91bmRzLCRyb3VuZHMsIzEKKwlzdHIJJHMzLFska2V5LCMtNF0KKwlibmUJLkwxMjhfbG9vcAorCXN1YglyMiwka2V5LCMxNzYKKwliCS5MZG9uZQorCisuTG5vdDEyODoKKyNpZiBfX0FSTV9BUkNIX188NworCWxkcmIJJGkyLFskcm91bmRzLCMxOV0KKwlsZHJiCSR0MSxbJHJvdW5kcywjMThdCisJbGRyYgkkdDIsWyRyb3VuZHMsIzE3XQorCWxkcmIJJHQzLFskcm91bmRzLCMxNl0KKwlvcnIJJGkyLCRpMiwkdDEsbHNsIzgKKwlsZHJiCSRpMyxbJHJvdW5kcywjMjNdCisJb3JyCSRpMiwkaTIsJHQyLGxzbCMxNgorCWxkcmIJJHQxLFskcm91bmRzLCMyMl0KKwlvcnIJJGkyLCRpMiwkdDMsbHNsIzI0CisJbGRyYgkkdDIsWyRyb3VuZHMsIzIxXQorCWxkcmIJJHQzLFskcm91bmRzLCMyMF0KKwlvcnIJJGkzLCRpMywkdDEsbHNsIzgKKwlvcnIJJGkzLCRpMywkdDIsbHNsIzE2CisJc3RyCSRpMixbJGtleV0sIzgKKwlvcnIJJGkzLCRpMywkdDMsbHNsIzI0CisJc3RyCSRpMyxbJGtleSwjLTRdCisjZWxzZQorCWxkcgkkaTIsWyRyb3VuZHMsIzE2XQorCWxkcgkkaTMsWyRyb3VuZHMsIzIwXQorI2lmZGVmIF9fQVJNRUxfXworCXJldgkkaTIsJGkyCisJcmV2CSRpMywkaTMKKyNlbmRpZgorCXN0cgkkaTIsWyRrZXldLCM4CisJc3RyCSRpMyxbJGtleSwjLTRdCisjZW5kaWYKKworCXRlcQlsciwjMTkyCisJYm5lCS5Mbm90MTkyCisJbW92CSRyb3VuZHMsIzEyCisJc3RyCSRyb3VuZHMsWyRrZXksIzI0MC0yNF0KKwlhZGQJJHQzLCR0YmwsIzI1NgkJCUAgcmNvbgorCW1vdglsciwjMjU1CisJbW92CSRyb3VuZHMsIzgKKworLkwxOTJfbG9vcDoKKwlhbmQJJHQyLGxyLCRpMyxsc3IjMjQKKwlhbmQJJGkxLGxyLCRpMyxsc3IjMTYKKwlsZHJiCSR0MixbJHRibCwkdDJdCisJYW5kCSRpMixsciwkaTMsbHNyIzgKKwlsZHJiCSRpMSxbJHRibCwkaTFdCisJYW5kCSRpMyxsciwkaTMKKwlsZHJiCSRpMixbJHRibCwkaTJdCisJb3JyCSR0MiwkdDIsJGkxLGxzbCMyNAorCWxkcmIJJGkzLFskdGJsLCRpM10KKwlvcnIJJHQyLCR0MiwkaTIsbHNsIzE2CisJbGRyCSR0MSxbJHQzXSwjNAkJCUAgcmNvbltpKytdCisJb3JyCSR0MiwkdDIsJGkzLGxzbCM4CisJZW9yCSRpMywkdDIsJHQxCisJZW9yCSRzMCwkczAsJGkzCQkJQCBya1s2XT1ya1swXV4uLi4KKwllb3IJJHMxLCRzMSwkczAJCQlAIHJrWzddPXJrWzFdXnJrWzZdCisJc3RyCSRzMCxbJGtleV0sIzI0CisJZW9yCSRzMiwkczIsJHMxCQkJQCBya1s4XT1ya1syXV5ya1s3XQorCXN0cgkkczEsWyRrZXksIy0yMF0KKwllb3IJJHMzLCRzMywkczIJCQlAIHJrWzldPXJrWzNdXnJrWzhdCisJc3RyCSRzMixbJGtleSwjLTE2XQorCXN1YnMJJHJvdW5kcywkcm91bmRzLCMxCisJc3RyCSRzMyxbJGtleSwjLTEyXQorCXN1YmVxCXIyLCRrZXksIzIxNgorCWJlcQkuTGRvbmUKKworCWxkcgkkaTEsWyRrZXksIy0zMl0KKwlsZHIJJGkyLFska2V5LCMtMjhdCisJZW9yCSRpMSwkaTEsJHMzCQkJQCBya1sxMF09cmtbNF1ecmtbOV0KKwllb3IJJGkzLCRpMiwkaTEJCQlAIHJrWzExXT1ya1s1XV5ya1sxMF0KKwlzdHIJJGkxLFska2V5LCMtOF0KKwlzdHIJJGkzLFska2V5LCMtNF0KKwliCS5MMTkyX2xvb3AKKworLkxub3QxOTI6CisjaWYgX19BUk1fQVJDSF9fPDcKKwlsZHJiCSRpMixbJHJvdW5kcywjMjddCisJbGRyYgkkdDEsWyRyb3VuZHMsIzI2XQorCWxkcmIJJHQyLFskcm91bmRzLCMyNV0KKwlsZHJiCSR0MyxbJHJvdW5kcywjMjRdCisJb3JyCSRpMiwkaTIsJHQxLGxzbCM4CisJbGRyYgkkaTMsWyRyb3VuZHMsIzMxXQorCW9ycgkkaTIsJGkyLCR0Mixsc2wjMTYKKwlsZHJiCSR0MSxbJHJvdW5kcywjMzBdCisJb3JyCSRpMiwkaTIsJHQzLGxzbCMyNAorCWxkcmIJJHQyLFskcm91bmRzLCMyOV0KKwlsZHJiCSR0MyxbJHJvdW5kcywjMjhdCisJb3JyCSRpMywkaTMsJHQxLGxzbCM4CisJb3JyCSRpMywkaTMsJHQyLGxzbCMxNgorCXN0cgkkaTIsWyRrZXldLCM4CisJb3JyCSRpMywkaTMsJHQzLGxzbCMyNAorCXN0cgkkaTMsWyRrZXksIy00XQorI2Vsc2UKKwlsZHIJJGkyLFskcm91bmRzLCMyNF0KKwlsZHIJJGkzLFskcm91bmRzLCMyOF0KKyNpZmRlZiBfX0FSTUVMX18KKwlyZXYJJGkyLCRpMgorCXJldgkkaTMsJGkzCisjZW5kaWYKKwlzdHIJJGkyLFska2V5XSwjOAorCXN0cgkkaTMsWyRrZXksIy00XQorI2VuZGlmCisKKwltb3YJJHJvdW5kcywjMTQKKwlzdHIJJHJvdW5kcyxbJGtleSwjMjQwLTMyXQorCWFkZAkkdDMsJHRibCwjMjU2CQkJQCByY29uCisJbW92CWxyLCMyNTUKKwltb3YJJHJvdW5kcywjNworCisuTDI1Nl9sb29wOgorCWFuZAkkdDIsbHIsJGkzLGxzciMyNAorCWFuZAkkaTEsbHIsJGkzLGxzciMxNgorCWxkcmIJJHQyLFskdGJsLCR0Ml0KKwlhbmQJJGkyLGxyLCRpMyxsc3IjOAorCWxkcmIJJGkxLFskdGJsLCRpMV0KKwlhbmQJJGkzLGxyLCRpMworCWxkcmIJJGkyLFskdGJsLCRpMl0KKwlvcnIJJHQyLCR0MiwkaTEsbHNsIzI0CisJbGRyYgkkaTMsWyR0YmwsJGkzXQorCW9ycgkkdDIsJHQyLCRpMixsc2wjMTYKKwlsZHIJJHQxLFskdDNdLCM0CQkJQCByY29uW2krK10KKwlvcnIJJHQyLCR0MiwkaTMsbHNsIzgKKwllb3IJJGkzLCR0MiwkdDEKKwllb3IJJHMwLCRzMCwkaTMJCQlAIHJrWzhdPXJrWzBdXi4uLgorCWVvcgkkczEsJHMxLCRzMAkJCUAgcmtbOV09cmtbMV1ecmtbOF0KKwlzdHIJJHMwLFska2V5XSwjMzIKKwllb3IJJHMyLCRzMiwkczEJCQlAIHJrWzEwXT1ya1syXV5ya1s5XQorCXN0cgkkczEsWyRrZXksIy0yOF0KKwllb3IJJHMzLCRzMywkczIJCQlAIHJrWzExXT1ya1szXV5ya1sxMF0KKwlzdHIJJHMyLFska2V5LCMtMjRdCisJc3Vicwkkcm91bmRzLCRyb3VuZHMsIzEKKwlzdHIJJHMzLFska2V5LCMtMjBdCisJc3ViZXEJcjIsJGtleSwjMjU2CisJYmVxCS5MZG9uZQorCisJYW5kCSR0MixsciwkczMKKwlhbmQJJGkxLGxyLCRzMyxsc3IjOAorCWxkcmIJJHQyLFskdGJsLCR0Ml0KKwlhbmQJJGkyLGxyLCRzMyxsc3IjMTYKKwlsZHJiCSRpMSxbJHRibCwkaTFdCisJYW5kCSRpMyxsciwkczMsbHNyIzI0CisJbGRyYgkkaTIsWyR0YmwsJGkyXQorCW9ycgkkdDIsJHQyLCRpMSxsc2wjOAorCWxkcmIJJGkzLFskdGJsLCRpM10KKwlvcnIJJHQyLCR0MiwkaTIsbHNsIzE2CisJbGRyCSR0MSxbJGtleSwjLTQ4XQorCW9ycgkkdDIsJHQyLCRpMyxsc2wjMjQKKworCWxkcgkkaTEsWyRrZXksIy00NF0KKwlsZHIJJGkyLFska2V5LCMtNDBdCisJZW9yCSR0MSwkdDEsJHQyCQkJQCBya1sxMl09cmtbNF1eLi4uCisJbGRyCSRpMyxbJGtleSwjLTM2XQorCWVvcgkkaTEsJGkxLCR0MQkJCUAgcmtbMTNdPXJrWzVdXnJrWzEyXQorCXN0cgkkdDEsWyRrZXksIy0xNl0KKwllb3IJJGkyLCRpMiwkaTEJCQlAIHJrWzE0XT1ya1s2XV5ya1sxM10KKwlzdHIJJGkxLFska2V5LCMtMTJdCisJZW9yCSRpMywkaTMsJGkyCQkJQCBya1sxNV09cmtbN11ecmtbMTRdCisJc3RyCSRpMixbJGtleSwjLThdCisJc3RyCSRpMyxbJGtleSwjLTRdCisJYgkuTDI1Nl9sb29wCisKKy5MZG9uZToJbW92CXIwLCMwCisJbGRtaWEgICBzcCEse3I0LXIxMixscn0KKy5MYWJydDoJdHN0CWxyLCMxCisJbW92ZXEJcGMsbHIJCQlAIGJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggVjQsIHlldAorCWJ4CWxyCQkJQCBpbnRlcm9wZXJhYmxlIHdpdGggVGh1bWIgSVNBOi0pCisuc2l6ZQlwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXksLi1wcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXkKKworLmdsb2JhbCBwcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXkKKy50eXBlICAgcHJpdmF0ZV9BRVNfc2V0X2RlY3J5cHRfa2V5LCVmdW5jdGlvbgorLmFsaWduCTUKK3ByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleToKKwlzdHIJbHIsW3NwLCMtNF0hICAgICAgICAgICAgQCBwdXNoIGxyCisJYmwJX2FybXY0X0FFU19zZXRfZW5jcnlwdF9rZXkKKwl0ZXEJcjAsIzAKKwlsZHJuZQlscixbc3BdLCM0ICAgICAgICAgICAgICBAIHBvcCBscgorCWJuZQkuTGFicnQKKworCXN0bWRiICAgc3AhLHtyNC1yMTJ9CisKKwlsZHIJJHJvdW5kcyxbcjIsIzI0MF0JQCBBRVNfc2V0X2VuY3J5cHRfa2V5IHByZXNlcnZlcyByMiwKKwltb3YJJGtleSxyMgkJCUAgd2hpY2ggaXMgQUVTX0tFWSAqa2V5CisJbW92CSRpMSxyMgorCWFkZAkkaTIscjIsJHJvdW5kcyxsc2wjNAorCisuTGludjoJbGRyCSRzMCxbJGkxXQorCWxkcgkkczEsWyRpMSwjNF0KKwlsZHIJJHMyLFskaTEsIzhdCisJbGRyCSRzMyxbJGkxLCMxMl0KKwlsZHIJJHQxLFskaTJdCisJbGRyCSR0MixbJGkyLCM0XQorCWxkcgkkdDMsWyRpMiwjOF0KKwlsZHIJJGkzLFskaTIsIzEyXQorCXN0cgkkczAsWyRpMl0sIy0xNgorCXN0cgkkczEsWyRpMiwjMTYrNF0KKwlzdHIJJHMyLFskaTIsIzE2KzhdCisJc3RyCSRzMyxbJGkyLCMxNisxMl0KKwlzdHIJJHQxLFskaTFdLCMxNgorCXN0cgkkdDIsWyRpMSwjLTEyXQorCXN0cgkkdDMsWyRpMSwjLThdCisJc3RyCSRpMyxbJGkxLCMtNF0KKwl0ZXEJJGkxLCRpMgorCWJuZQkuTGludgorX19fCiskbWFzazgwPSRpMTsKKyRtYXNrMWI9JGkyOworJG1hc2s3Zj0kaTM7CiskY29kZS49PDxfX187CisJbGRyCSRzMCxbJGtleSwjMTZdIQkJQCBwcmVmZXRjaCB0cDEKKwltb3YJJG1hc2s4MCwjMHg4MAorCW1vdgkkbWFzazFiLCMweDFiCisJb3JyCSRtYXNrODAsJG1hc2s4MCwjMHg4MDAwCisJb3JyCSRtYXNrMWIsJG1hc2sxYiwjMHgxYjAwCisJb3JyCSRtYXNrODAsJG1hc2s4MCwkbWFzazgwLGxzbCMxNgorCW9ycgkkbWFzazFiLCRtYXNrMWIsJG1hc2sxYixsc2wjMTYKKwlzdWIJJHJvdW5kcywkcm91bmRzLCMxCisJbXZuCSRtYXNrN2YsJG1hc2s4MAorCW1vdgkkcm91bmRzLCRyb3VuZHMsbHNsIzIJQCAocm91bmRzLTEpKjQKKworLkxtaXg6CWFuZAkkdDEsJHMwLCRtYXNrODAKKwlhbmQJJHMxLCRzMCwkbWFzazdmCisJc3ViCSR0MSwkdDEsJHQxLGxzciM3CisJYW5kCSR0MSwkdDEsJG1hc2sxYgorCWVvcgkkczEsJHQxLCRzMSxsc2wjMQlAIHRwMgorCisJYW5kCSR0MSwkczEsJG1hc2s4MAorCWFuZAkkczIsJHMxLCRtYXNrN2YKKwlzdWIJJHQxLCR0MSwkdDEsbHNyIzcKKwlhbmQJJHQxLCR0MSwkbWFzazFiCisJZW9yCSRzMiwkdDEsJHMyLGxzbCMxCUAgdHA0CisKKwlhbmQJJHQxLCRzMiwkbWFzazgwCisJYW5kCSRzMywkczIsJG1hc2s3ZgorCXN1YgkkdDEsJHQxLCR0MSxsc3IjNworCWFuZAkkdDEsJHQxLCRtYXNrMWIKKwllb3IJJHMzLCR0MSwkczMsbHNsIzEJQCB0cDgKKworCWVvcgkkdDEsJHMxLCRzMgorCWVvcgkkdDIsJHMwLCRzMwkJQCB0cDkKKwllb3IJJHQxLCR0MSwkczMJCUAgdHBlCisJZW9yCSR0MSwkdDEsJHMxLHJvciMyNAorCWVvcgkkdDEsJHQxLCR0Mixyb3IjMjQJQCBePSBST1RBVEUodHBiPXRwOV50cDIsOCkKKwllb3IJJHQxLCR0MSwkczIscm9yIzE2CisJZW9yCSR0MSwkdDEsJHQyLHJvciMxNglAIF49IFJPVEFURSh0cGQ9dHA5XnRwNCwxNikKKwllb3IJJHQxLCR0MSwkdDIscm9yIzgJQCBePSBST1RBVEUodHA5LDI0KQorCisJbGRyCSRzMCxbJGtleSwjNF0JCUAgcHJlZmV0Y2ggdHAxCisJc3RyCSR0MSxbJGtleV0sIzQKKwlzdWJzCSRyb3VuZHMsJHJvdW5kcywjMQorCWJuZQkuTG1peAorCisJbW92CXIwLCMwCisjaWYgX19BUk1fQVJDSF9fPj01CisJbGRtaWEJc3AhLHtyNC1yMTIscGN9CisjZWxzZQorCWxkbWlhICAgc3AhLHtyNC1yMTIsbHJ9CisJdHN0CWxyLCMxCisJbW92ZXEJcGMsbHIJCQlAIGJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggVjQsIHlldAorCWJ4CWxyCQkJQCBpbnRlcm9wZXJhYmxlIHdpdGggVGh1bWIgSVNBOi0pCisjZW5kaWYKKy5zaXplCXByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleSwuLXByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleQorCisudHlwZQlBRVNfVGQsJW9iamVjdAorLmFsaWduCTUKK0FFU19UZDoKKy53b3JkCTB4NTFmNGE3NTAsIDB4N2U0MTY1NTMsIDB4MWExN2E0YzMsIDB4M2EyNzVlOTYKKy53b3JkCTB4M2JhYjZiY2IsIDB4MWY5ZDQ1ZjEsIDB4YWNmYTU4YWIsIDB4NGJlMzAzOTMKKy53b3JkCTB4MjAzMGZhNTUsIDB4YWQ3NjZkZjYsIDB4ODhjYzc2OTEsIDB4ZjUwMjRjMjUKKy53b3JkCTB4NGZlNWQ3ZmMsIDB4YzUyYWNiZDcsIDB4MjYzNTQ0ODAsIDB4YjU2MmEzOGYKKy53b3JkCTB4ZGViMTVhNDksIDB4MjViYTFiNjcsIDB4NDVlYTBlOTgsIDB4NWRmZWMwZTEKKy53b3JkCTB4YzMyZjc1MDIsIDB4ODE0Y2YwMTIsIDB4OGQ0Njk3YTMsIDB4NmJkM2Y5YzYKKy53b3JkCTB4MDM4ZjVmZTcsIDB4MTU5MjljOTUsIDB4YmY2ZDdhZWIsIDB4OTU1MjU5ZGEKKy53b3JkCTB4ZDRiZTgzMmQsIDB4NTg3NDIxZDMsIDB4NDllMDY5MjksIDB4OGVjOWM4NDQKKy53b3JkCTB4NzVjMjg5NmEsIDB4ZjQ4ZTc5NzgsIDB4OTk1ODNlNmIsIDB4MjdiOTcxZGQKKy53b3JkCTB4YmVlMTRmYjYsIDB4ZjA4OGFkMTcsIDB4YzkyMGFjNjYsIDB4N2RjZTNhYjQKKy53b3JkCTB4NjNkZjRhMTgsIDB4ZTUxYTMxODIsIDB4OTc1MTMzNjAsIDB4NjI1MzdmNDUKKy53b3JkCTB4YjE2NDc3ZTAsIDB4YmI2YmFlODQsIDB4ZmU4MWEwMWMsIDB4ZjkwODJiOTQKKy53b3JkCTB4NzA0ODY4NTgsIDB4OGY0NWZkMTksIDB4OTRkZTZjODcsIDB4NTI3YmY4YjcKKy53b3JkCTB4YWI3M2QzMjMsIDB4NzI0YjAyZTIsIDB4ZTMxZjhmNTcsIDB4NjY1NWFiMmEKKy53b3JkCTB4YjJlYjI4MDcsIDB4MmZiNWMyMDMsIDB4ODZjNTdiOWEsIDB4ZDMzNzA4YTUKKy53b3JkCTB4MzAyODg3ZjIsIDB4MjNiZmE1YjIsIDB4MDIwMzZhYmEsIDB4ZWQxNjgyNWMKKy53b3JkCTB4OGFjZjFjMmIsIDB4YTc3OWI0OTIsIDB4ZjMwN2YyZjAsIDB4NGU2OWUyYTEKKy53b3JkCTB4NjVkYWY0Y2QsIDB4MDYwNWJlZDUsIDB4ZDEzNDYyMWYsIDB4YzRhNmZlOGEKKy53b3JkCTB4MzQyZTUzOWQsIDB4YTJmMzU1YTAsIDB4MDU4YWUxMzIsIDB4YTRmNmViNzUKKy53b3JkCTB4MGI4M2VjMzksIDB4NDA2MGVmYWEsIDB4NWU3MTlmMDYsIDB4YmQ2ZTEwNTEKKy53b3JkCTB4M2UyMThhZjksIDB4OTZkZDA2M2QsIDB4ZGQzZTA1YWUsIDB4NGRlNmJkNDYKKy53b3JkCTB4OTE1NDhkYjUsIDB4NzFjNDVkMDUsIDB4MDQwNmQ0NmYsIDB4NjA1MDE1ZmYKKy53b3JkCTB4MTk5OGZiMjQsIDB4ZDZiZGU5OTcsIDB4ODk0MDQzY2MsIDB4NjdkOTllNzcKKy53b3JkCTB4YjBlODQyYmQsIDB4MDc4OThiODgsIDB4ZTcxOTViMzgsIDB4NzljOGVlZGIKKy53b3JkCTB4YTE3YzBhNDcsIDB4N2M0MjBmZTksIDB4Zjg4NDFlYzksIDB4MDAwMDAwMDAKKy53b3JkCTB4MDk4MDg2ODMsIDB4MzIyYmVkNDgsIDB4MWUxMTcwYWMsIDB4NmM1YTcyNGUKKy53b3JkCTB4ZmQwZWZmZmIsIDB4MGY4NTM4NTYsIDB4M2RhZWQ1MWUsIDB4MzYyZDM5MjcKKy53b3JkCTB4MGEwZmQ5NjQsIDB4Njg1Y2E2MjEsIDB4OWI1YjU0ZDEsIDB4MjQzNjJlM2EKKy53b3JkCTB4MGMwYTY3YjEsIDB4OTM1N2U3MGYsIDB4YjRlZTk2ZDIsIDB4MWI5YjkxOWUKKy53b3JkCTB4ODBjMGM1NGYsIDB4NjFkYzIwYTIsIDB4NWE3NzRiNjksIDB4MWMxMjFhMTYKKy53b3JkCTB4ZTI5M2JhMGEsIDB4YzBhMDJhZTUsIDB4M2MyMmUwNDMsIDB4MTIxYjE3MWQKKy53b3JkCTB4MGUwOTBkMGIsIDB4ZjI4YmM3YWQsIDB4MmRiNmE4YjksIDB4MTQxZWE5YzgKKy53b3JkCTB4NTdmMTE5ODUsIDB4YWY3NTA3NGMsIDB4ZWU5OWRkYmIsIDB4YTM3ZjYwZmQKKy53b3JkCTB4ZjcwMTI2OWYsIDB4NWM3MmY1YmMsIDB4NDQ2NjNiYzUsIDB4NWJmYjdlMzQKKy53b3JkCTB4OGI0MzI5NzYsIDB4Y2IyM2M2ZGMsIDB4YjZlZGZjNjgsIDB4YjhlNGYxNjMKKy53b3JkCTB4ZDczMWRjY2EsIDB4NDI2Mzg1MTAsIDB4MTM5NzIyNDAsIDB4ODRjNjExMjAKKy53b3JkCTB4ODU0YTI0N2QsIDB4ZDJiYjNkZjgsIDB4YWVmOTMyMTEsIDB4YzcyOWExNmQKKy53b3JkCTB4MWQ5ZTJmNGIsIDB4ZGNiMjMwZjMsIDB4MGQ4NjUyZWMsIDB4NzdjMWUzZDAKKy53b3JkCTB4MmJiMzE2NmMsIDB4YTk3MGI5OTksIDB4MTE5NDQ4ZmEsIDB4NDdlOTY0MjIKKy53b3JkCTB4YThmYzhjYzQsIDB4YTBmMDNmMWEsIDB4NTY3ZDJjZDgsIDB4MjIzMzkwZWYKKy53b3JkCTB4ODc0OTRlYzcsIDB4ZDkzOGQxYzEsIDB4OGNjYWEyZmUsIDB4OThkNDBiMzYKKy53b3JkCTB4YTZmNTgxY2YsIDB4YTU3YWRlMjgsIDB4ZGFiNzhlMjYsIDB4M2ZhZGJmYTQKKy53b3JkCTB4MmMzYTlkZTQsIDB4NTA3ODkyMGQsIDB4NmE1ZmNjOWIsIDB4NTQ3ZTQ2NjIKKy53b3JkCTB4ZjY4ZDEzYzIsIDB4OTBkOGI4ZTgsIDB4MmUzOWY3NWUsIDB4ODJjM2FmZjUKKy53b3JkCTB4OWY1ZDgwYmUsIDB4NjlkMDkzN2MsIDB4NmZkNTJkYTksIDB4Y2YyNTEyYjMKKy53b3JkCTB4YzhhYzk5M2IsIDB4MTAxODdkYTcsIDB4ZTg5YzYzNmUsIDB4ZGIzYmJiN2IKKy53b3JkCTB4Y2QyNjc4MDksIDB4NmU1OTE4ZjQsIDB4ZWM5YWI3MDEsIDB4ODM0ZjlhYTgKKy53b3JkCTB4ZTY5NTZlNjUsIDB4YWFmZmU2N2UsIDB4MjFiY2NmMDgsIDB4ZWYxNWU4ZTYKKy53b3JkCTB4YmFlNzliZDksIDB4NGE2ZjM2Y2UsIDB4ZWE5ZjA5ZDQsIDB4MjliMDdjZDYKKy53b3JkCTB4MzFhNGIyYWYsIDB4MmEzZjIzMzEsIDB4YzZhNTk0MzAsIDB4MzVhMjY2YzAKKy53b3JkCTB4NzQ0ZWJjMzcsIDB4ZmM4MmNhYTYsIDB4ZTA5MGQwYjAsIDB4MzNhN2Q4MTUKKy53b3JkCTB4ZjEwNDk4NGEsIDB4NDFlY2RhZjcsIDB4N2ZjZDUwMGUsIDB4MTc5MWY2MmYKKy53b3JkCTB4NzY0ZGQ2OGQsIDB4NDNlZmIwNGQsIDB4Y2NhYTRkNTQsIDB4ZTQ5NjA0ZGYKKy53b3JkCTB4OWVkMWI1ZTMsIDB4NGM2YTg4MWIsIDB4YzEyYzFmYjgsIDB4NDY2NTUxN2YKKy53b3JkCTB4OWQ1ZWVhMDQsIDB4MDE4YzM1NWQsIDB4ZmE4Nzc0NzMsIDB4ZmIwYjQxMmUKKy53b3JkCTB4YjM2NzFkNWEsIDB4OTJkYmQyNTIsIDB4ZTkxMDU2MzMsIDB4NmRkNjQ3MTMKKy53b3JkCTB4OWFkNzYxOGMsIDB4MzdhMTBjN2EsIDB4NTlmODE0OGUsIDB4ZWIxMzNjODkKKy53b3JkCTB4Y2VhOTI3ZWUsIDB4Yjc2MWM5MzUsIDB4ZTExY2U1ZWQsIDB4N2E0N2IxM2MKKy53b3JkCTB4OWNkMmRmNTksIDB4NTVmMjczM2YsIDB4MTgxNGNlNzksIDB4NzNjNzM3YmYKKy53b3JkCTB4NTNmN2NkZWEsIDB4NWZmZGFhNWIsIDB4ZGYzZDZmMTQsIDB4Nzg0NGRiODYKKy53b3JkCTB4Y2FhZmYzODEsIDB4Yjk2OGM0M2UsIDB4MzgyNDM0MmMsIDB4YzJhMzQwNWYKKy53b3JkCTB4MTYxZGMzNzIsIDB4YmNlMjI1MGMsIDB4MjgzYzQ5OGIsIDB4ZmYwZDk1NDEKKy53b3JkCTB4MzlhODAxNzEsIDB4MDgwY2IzZGUsIDB4ZDhiNGU0OWMsIDB4NjQ1NmMxOTAKKy53b3JkCTB4N2JjYjg0NjEsIDB4ZDUzMmI2NzAsIDB4NDg2YzVjNzQsIDB4ZDBiODU3NDIKK0AgVGQ0WzI1Nl0KKy5ieXRlCTB4NTIsIDB4MDksIDB4NmEsIDB4ZDUsIDB4MzAsIDB4MzYsIDB4YTUsIDB4MzgKKy5ieXRlCTB4YmYsIDB4NDAsIDB4YTMsIDB4OWUsIDB4ODEsIDB4ZjMsIDB4ZDcsIDB4ZmIKKy5ieXRlCTB4N2MsIDB4ZTMsIDB4MzksIDB4ODIsIDB4OWIsIDB4MmYsIDB4ZmYsIDB4ODcKKy5ieXRlCTB4MzQsIDB4OGUsIDB4NDMsIDB4NDQsIDB4YzQsIDB4ZGUsIDB4ZTksIDB4Y2IKKy5ieXRlCTB4NTQsIDB4N2IsIDB4OTQsIDB4MzIsIDB4YTYsIDB4YzIsIDB4MjMsIDB4M2QKKy5ieXRlCTB4ZWUsIDB4NGMsIDB4OTUsIDB4MGIsIDB4NDIsIDB4ZmEsIDB4YzMsIDB4NGUKKy5ieXRlCTB4MDgsIDB4MmUsIDB4YTEsIDB4NjYsIDB4MjgsIDB4ZDksIDB4MjQsIDB4YjIKKy5ieXRlCTB4NzYsIDB4NWIsIDB4YTIsIDB4NDksIDB4NmQsIDB4OGIsIDB4ZDEsIDB4MjUKKy5ieXRlCTB4NzIsIDB4ZjgsIDB4ZjYsIDB4NjQsIDB4ODYsIDB4NjgsIDB4OTgsIDB4MTYKKy5ieXRlCTB4ZDQsIDB4YTQsIDB4NWMsIDB4Y2MsIDB4NWQsIDB4NjUsIDB4YjYsIDB4OTIKKy5ieXRlCTB4NmMsIDB4NzAsIDB4NDgsIDB4NTAsIDB4ZmQsIDB4ZWQsIDB4YjksIDB4ZGEKKy5ieXRlCTB4NWUsIDB4MTUsIDB4NDYsIDB4NTcsIDB4YTcsIDB4OGQsIDB4OWQsIDB4ODQKKy5ieXRlCTB4OTAsIDB4ZDgsIDB4YWIsIDB4MDAsIDB4OGMsIDB4YmMsIDB4ZDMsIDB4MGEKKy5ieXRlCTB4ZjcsIDB4ZTQsIDB4NTgsIDB4MDUsIDB4YjgsIDB4YjMsIDB4NDUsIDB4MDYKKy5ieXRlCTB4ZDAsIDB4MmMsIDB4MWUsIDB4OGYsIDB4Y2EsIDB4M2YsIDB4MGYsIDB4MDIKKy5ieXRlCTB4YzEsIDB4YWYsIDB4YmQsIDB4MDMsIDB4MDEsIDB4MTMsIDB4OGEsIDB4NmIKKy5ieXRlCTB4M2EsIDB4OTEsIDB4MTEsIDB4NDEsIDB4NGYsIDB4NjcsIDB4ZGMsIDB4ZWEKKy5ieXRlCTB4OTcsIDB4ZjIsIDB4Y2YsIDB4Y2UsIDB4ZjAsIDB4YjQsIDB4ZTYsIDB4NzMKKy5ieXRlCTB4OTYsIDB4YWMsIDB4NzQsIDB4MjIsIDB4ZTcsIDB4YWQsIDB4MzUsIDB4ODUKKy5ieXRlCTB4ZTIsIDB4ZjksIDB4MzcsIDB4ZTgsIDB4MWMsIDB4NzUsIDB4ZGYsIDB4NmUKKy5ieXRlCTB4NDcsIDB4ZjEsIDB4MWEsIDB4NzEsIDB4MWQsIDB4MjksIDB4YzUsIDB4ODkKKy5ieXRlCTB4NmYsIDB4YjcsIDB4NjIsIDB4MGUsIDB4YWEsIDB4MTgsIDB4YmUsIDB4MWIKKy5ieXRlCTB4ZmMsIDB4NTYsIDB4M2UsIDB4NGIsIDB4YzYsIDB4ZDIsIDB4NzksIDB4MjAKKy5ieXRlCTB4OWEsIDB4ZGIsIDB4YzAsIDB4ZmUsIDB4NzgsIDB4Y2QsIDB4NWEsIDB4ZjQKKy5ieXRlCTB4MWYsIDB4ZGQsIDB4YTgsIDB4MzMsIDB4ODgsIDB4MDcsIDB4YzcsIDB4MzEKKy5ieXRlCTB4YjEsIDB4MTIsIDB4MTAsIDB4NTksIDB4MjcsIDB4ODAsIDB4ZWMsIDB4NWYKKy5ieXRlCTB4NjAsIDB4NTEsIDB4N2YsIDB4YTksIDB4MTksIDB4YjUsIDB4NGEsIDB4MGQKKy5ieXRlCTB4MmQsIDB4ZTUsIDB4N2EsIDB4OWYsIDB4OTMsIDB4YzksIDB4OWMsIDB4ZWYKKy5ieXRlCTB4YTAsIDB4ZTAsIDB4M2IsIDB4NGQsIDB4YWUsIDB4MmEsIDB4ZjUsIDB4YjAKKy5ieXRlCTB4YzgsIDB4ZWIsIDB4YmIsIDB4M2MsIDB4ODMsIDB4NTMsIDB4OTksIDB4NjEKKy5ieXRlCTB4MTcsIDB4MmIsIDB4MDQsIDB4N2UsIDB4YmEsIDB4NzcsIDB4ZDYsIDB4MjYKKy5ieXRlCTB4ZTEsIDB4NjksIDB4MTQsIDB4NjMsIDB4NTUsIDB4MjEsIDB4MGMsIDB4N2QKKy5zaXplCUFFU19UZCwuLUFFU19UZAorCitAIHZvaWQgQUVTX2RlY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGNoYXIgKm91dCwKK0AgCQkgY29uc3QgQUVTX0tFWSAqa2V5KSB7CisuZ2xvYmFsIEFFU19kZWNyeXB0CisudHlwZSAgIEFFU19kZWNyeXB0LCVmdW5jdGlvbgorLmFsaWduCTUKK0FFU19kZWNyeXB0OgorCXN1YglyMyxwYywjOAkJQCBBRVNfZGVjcnlwdAorCXN0bWRiICAgc3AhLHtyMSxyNC1yMTIsbHJ9CisJbW92CSRyb3VuZHMscjAJCUAgaW5wCisJbW92CSRrZXkscjIKKwlzdWIJJHRibCxyMywjQUVTX2RlY3J5cHQtQUVTX1RkCQlAIFRkCisjaWYgX19BUk1fQVJDSF9fPDcKKwlsZHJiCSRzMCxbJHJvdW5kcywjM10JQCBsb2FkIGlucHV0IGRhdGEgaW4gZW5kaWFuLW5ldXRyYWwKKwlsZHJiCSR0MSxbJHJvdW5kcywjMl0JQCBtYW5uZXIuLi4KKwlsZHJiCSR0MixbJHJvdW5kcywjMV0KKwlsZHJiCSR0MyxbJHJvdW5kcywjMF0KKwlvcnIJJHMwLCRzMCwkdDEsbHNsIzgKKwlsZHJiCSRzMSxbJHJvdW5kcywjN10KKwlvcnIJJHMwLCRzMCwkdDIsbHNsIzE2CisJbGRyYgkkdDEsWyRyb3VuZHMsIzZdCisJb3JyCSRzMCwkczAsJHQzLGxzbCMyNAorCWxkcmIJJHQyLFskcm91bmRzLCM1XQorCWxkcmIJJHQzLFskcm91bmRzLCM0XQorCW9ycgkkczEsJHMxLCR0MSxsc2wjOAorCWxkcmIJJHMyLFskcm91bmRzLCMxMV0KKwlvcnIJJHMxLCRzMSwkdDIsbHNsIzE2CisJbGRyYgkkdDEsWyRyb3VuZHMsIzEwXQorCW9ycgkkczEsJHMxLCR0Myxsc2wjMjQKKwlsZHJiCSR0MixbJHJvdW5kcywjOV0KKwlsZHJiCSR0MyxbJHJvdW5kcywjOF0KKwlvcnIJJHMyLCRzMiwkdDEsbHNsIzgKKwlsZHJiCSRzMyxbJHJvdW5kcywjMTVdCisJb3JyCSRzMiwkczIsJHQyLGxzbCMxNgorCWxkcmIJJHQxLFskcm91bmRzLCMxNF0KKwlvcnIJJHMyLCRzMiwkdDMsbHNsIzI0CisJbGRyYgkkdDIsWyRyb3VuZHMsIzEzXQorCWxkcmIJJHQzLFskcm91bmRzLCMxMl0KKwlvcnIJJHMzLCRzMywkdDEsbHNsIzgKKwlvcnIJJHMzLCRzMywkdDIsbHNsIzE2CisJb3JyCSRzMywkczMsJHQzLGxzbCMyNAorI2Vsc2UKKwlsZHIJJHMwLFskcm91bmRzLCMwXQorCWxkcgkkczEsWyRyb3VuZHMsIzRdCisJbGRyCSRzMixbJHJvdW5kcywjOF0KKwlsZHIJJHMzLFskcm91bmRzLCMxMl0KKyNpZmRlZiBfX0FSTUVMX18KKwlyZXYJJHMwLCRzMAorCXJldgkkczEsJHMxCisJcmV2CSRzMiwkczIKKwlyZXYJJHMzLCRzMworI2VuZGlmCisjZW5kaWYKKwlibAlfYXJtdjRfQUVTX2RlY3J5cHQKKworCWxkcgkkcm91bmRzLFtzcF0sIzQJCUAgcG9wIG91dAorI2lmIF9fQVJNX0FSQ0hfXz49NworI2lmZGVmIF9fQVJNRUxfXworCXJldgkkczAsJHMwCisJcmV2CSRzMSwkczEKKwlyZXYJJHMyLCRzMgorCXJldgkkczMsJHMzCisjZW5kaWYKKwlzdHIJJHMwLFskcm91bmRzLCMwXQorCXN0cgkkczEsWyRyb3VuZHMsIzRdCisJc3RyCSRzMixbJHJvdW5kcywjOF0KKwlzdHIJJHMzLFskcm91bmRzLCMxMl0KKyNlbHNlCisJbW92CSR0MSwkczAsbHNyIzI0CQlAIHdyaXRlIG91dHB1dCBpbiBlbmRpYW4tbmV1dHJhbAorCW1vdgkkdDIsJHMwLGxzciMxNgkJQCBtYW5uZXIuLi4KKwltb3YJJHQzLCRzMCxsc3IjOAorCXN0cmIJJHQxLFskcm91bmRzLCMwXQorCXN0cmIJJHQyLFskcm91bmRzLCMxXQorCW1vdgkkdDEsJHMxLGxzciMyNAorCXN0cmIJJHQzLFskcm91bmRzLCMyXQorCW1vdgkkdDIsJHMxLGxzciMxNgorCXN0cmIJJHMwLFskcm91bmRzLCMzXQorCW1vdgkkdDMsJHMxLGxzciM4CisJc3RyYgkkdDEsWyRyb3VuZHMsIzRdCisJc3RyYgkkdDIsWyRyb3VuZHMsIzVdCisJbW92CSR0MSwkczIsbHNyIzI0CisJc3RyYgkkdDMsWyRyb3VuZHMsIzZdCisJbW92CSR0MiwkczIsbHNyIzE2CisJc3RyYgkkczEsWyRyb3VuZHMsIzddCisJbW92CSR0MywkczIsbHNyIzgKKwlzdHJiCSR0MSxbJHJvdW5kcywjOF0KKwlzdHJiCSR0MixbJHJvdW5kcywjOV0KKwltb3YJJHQxLCRzMyxsc3IjMjQKKwlzdHJiCSR0MyxbJHJvdW5kcywjMTBdCisJbW92CSR0MiwkczMsbHNyIzE2CisJc3RyYgkkczIsWyRyb3VuZHMsIzExXQorCW1vdgkkdDMsJHMzLGxzciM4CisJc3RyYgkkdDEsWyRyb3VuZHMsIzEyXQorCXN0cmIJJHQyLFskcm91bmRzLCMxM10KKwlzdHJiCSR0MyxbJHJvdW5kcywjMTRdCisJc3RyYgkkczMsWyRyb3VuZHMsIzE1XQorI2VuZGlmCisjaWYgX19BUk1fQVJDSF9fPj01CisJbGRtaWEJc3AhLHtyNC1yMTIscGN9CisjZWxzZQorCWxkbWlhICAgc3AhLHtyNC1yMTIsbHJ9CisJdHN0CWxyLCMxCisJbW92ZXEJcGMsbHIJCQlAIGJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggVjQsIHlldAorCWJ4CWxyCQkJQCBpbnRlcm9wZXJhYmxlIHdpdGggVGh1bWIgSVNBOi0pCisjZW5kaWYKKy5zaXplCUFFU19kZWNyeXB0LC4tQUVTX2RlY3J5cHQKKworLnR5cGUgICBfYXJtdjRfQUVTX2RlY3J5cHQsJWZ1bmN0aW9uCisuYWxpZ24JMgorX2FybXY0X0FFU19kZWNyeXB0OgorCXN0cglscixbc3AsIy00XSEJCUAgcHVzaCBscgorCWxkbWlhCSRrZXkhLHskdDEtJGkxfQorCWVvcgkkczAsJHMwLCR0MQorCWxkcgkkcm91bmRzLFska2V5LCMyNDAtMTZdCisJZW9yCSRzMSwkczEsJHQyCisJZW9yCSRzMiwkczIsJHQzCisJZW9yCSRzMywkczMsJGkxCisJc3ViCSRyb3VuZHMsJHJvdW5kcywjMQorCW1vdglsciwjMjU1CisKKwlhbmQJJGkxLGxyLCRzMCxsc3IjMTYKKwlhbmQJJGkyLGxyLCRzMCxsc3IjOAorCWFuZAkkaTMsbHIsJHMwCisJbW92CSRzMCwkczAsbHNyIzI0CisuTGRlY19sb29wOgorCWxkcgkkdDEsWyR0YmwsJGkxLGxzbCMyXQlAIFRkMVtzMD4+MTZdCisJYW5kCSRpMSxsciwkczEJCUAgaTAKKwlsZHIJJHQyLFskdGJsLCRpMixsc2wjMl0JQCBUZDJbczA+PjhdCisJYW5kCSRpMixsciwkczEsbHNyIzE2CisJbGRyCSR0MyxbJHRibCwkaTMsbHNsIzJdCUAgVGQzW3MwPj4wXQorCWFuZAkkaTMsbHIsJHMxLGxzciM4CisJbGRyCSRzMCxbJHRibCwkczAsbHNsIzJdCUAgVGQwW3MwPj4yNF0KKwltb3YJJHMxLCRzMSxsc3IjMjQKKworCWxkcgkkaTEsWyR0YmwsJGkxLGxzbCMyXQlAIFRkM1tzMT4+MF0KKwlsZHIJJGkyLFskdGJsLCRpMixsc2wjMl0JQCBUZDFbczE+PjE2XQorCWxkcgkkaTMsWyR0YmwsJGkzLGxzbCMyXQlAIFRkMltzMT4+OF0KKwllb3IJJHMwLCRzMCwkaTEscm9yIzI0CisJbGRyCSRzMSxbJHRibCwkczEsbHNsIzJdCUAgVGQwW3MxPj4yNF0KKwlhbmQJJGkxLGxyLCRzMixsc3IjOAlAIGkwCisJZW9yCSR0MiwkaTIsJHQyLHJvciM4CisJYW5kCSRpMixsciwkczIJCUAgaTEKKwllb3IJJHQzLCRpMywkdDMscm9yIzgKKwlhbmQJJGkzLGxyLCRzMixsc3IjMTYKKwlsZHIJJGkxLFskdGJsLCRpMSxsc2wjMl0JQCBUZDJbczI+PjhdCisJZW9yCSRzMSwkczEsJHQxLHJvciM4CisJbGRyCSRpMixbJHRibCwkaTIsbHNsIzJdCUAgVGQzW3MyPj4wXQorCW1vdgkkczIsJHMyLGxzciMyNAorCisJbGRyCSRpMyxbJHRibCwkaTMsbHNsIzJdCUAgVGQxW3MyPj4xNl0KKwllb3IJJHMwLCRzMCwkaTEscm9yIzE2CisJbGRyCSRzMixbJHRibCwkczIsbHNsIzJdCUAgVGQwW3MyPj4yNF0KKwlhbmQJJGkxLGxyLCRzMyxsc3IjMTYJQCBpMAorCWVvcgkkczEsJHMxLCRpMixyb3IjMjQKKwlhbmQJJGkyLGxyLCRzMyxsc3IjOAlAIGkxCisJZW9yCSR0MywkaTMsJHQzLHJvciM4CisJYW5kCSRpMyxsciwkczMJCUAgaTIKKwlsZHIJJGkxLFskdGJsLCRpMSxsc2wjMl0JQCBUZDFbczM+PjE2XQorCWVvcgkkczIsJHMyLCR0Mixyb3IjOAorCWxkcgkkaTIsWyR0YmwsJGkyLGxzbCMyXQlAIFRkMltzMz4+OF0KKwltb3YJJHMzLCRzMyxsc3IjMjQKKworCWxkcgkkaTMsWyR0YmwsJGkzLGxzbCMyXQlAIFRkM1tzMz4+MF0KKwllb3IJJHMwLCRzMCwkaTEscm9yIzgKKwlsZHIJJGkxLFska2V5XSwjMTYKKwllb3IJJHMxLCRzMSwkaTIscm9yIzE2CisJbGRyCSRzMyxbJHRibCwkczMsbHNsIzJdCUAgVGQwW3MzPj4yNF0KKwllb3IJJHMyLCRzMiwkaTMscm9yIzI0CisKKwlsZHIJJHQxLFska2V5LCMtMTJdCisJZW9yCSRzMCwkczAsJGkxCisJbGRyCSR0MixbJGtleSwjLThdCisJZW9yCSRzMywkczMsJHQzLHJvciM4CisJbGRyCSR0MyxbJGtleSwjLTRdCisJYW5kCSRpMSxsciwkczAsbHNyIzE2CisJZW9yCSRzMSwkczEsJHQxCisJYW5kCSRpMixsciwkczAsbHNyIzgKKwllb3IJJHMyLCRzMiwkdDIKKwlhbmQJJGkzLGxyLCRzMAorCWVvcgkkczMsJHMzLCR0MworCW1vdgkkczAsJHMwLGxzciMyNAorCisJc3Vicwkkcm91bmRzLCRyb3VuZHMsIzEKKwlibmUJLkxkZWNfbG9vcAorCisJYWRkCSR0YmwsJHRibCwjMTAyNAorCisJbGRyCSR0MixbJHRibCwjMF0JCUAgcHJlZmV0Y2ggVGQ0CisJbGRyCSR0MyxbJHRibCwjMzJdCisJbGRyCSR0MSxbJHRibCwjNjRdCisJbGRyCSR0MixbJHRibCwjOTZdCisJbGRyCSR0MyxbJHRibCwjMTI4XQorCWxkcgkkdDEsWyR0YmwsIzE2MF0KKwlsZHIJJHQyLFskdGJsLCMxOTJdCisJbGRyCSR0MyxbJHRibCwjMjI0XQorCisJbGRyYgkkczAsWyR0YmwsJHMwXQkJQCBUZDRbczA+PjI0XQorCWxkcmIJJHQxLFskdGJsLCRpMV0JCUAgVGQ0W3MwPj4xNl0KKwlhbmQJJGkxLGxyLCRzMQkJQCBpMAorCWxkcmIJJHQyLFskdGJsLCRpMl0JCUAgVGQ0W3MwPj44XQorCWFuZAkkaTIsbHIsJHMxLGxzciMxNgorCWxkcmIJJHQzLFskdGJsLCRpM10JCUAgVGQ0W3MwPj4wXQorCWFuZAkkaTMsbHIsJHMxLGxzciM4CisKKwlsZHJiCSRpMSxbJHRibCwkaTFdCQlAIFRkNFtzMT4+MF0KKwlsZHJiCSRzMSxbJHRibCwkczEsbHNyIzI0XQlAIFRkNFtzMT4+MjRdCisJbGRyYgkkaTIsWyR0YmwsJGkyXQkJQCBUZDRbczE+PjE2XQorCWVvcgkkczAsJGkxLCRzMCxsc2wjMjQKKwlsZHJiCSRpMyxbJHRibCwkaTNdCQlAIFRkNFtzMT4+OF0KKwllb3IJJHMxLCR0MSwkczEsbHNsIzgKKwlhbmQJJGkxLGxyLCRzMixsc3IjOAlAIGkwCisJZW9yCSR0MiwkdDIsJGkyLGxzbCM4CisJYW5kCSRpMixsciwkczIJCUAgaTEKKwlsZHJiCSRpMSxbJHRibCwkaTFdCQlAIFRkNFtzMj4+OF0KKwllb3IJJHQzLCR0MywkaTMsbHNsIzgKKwlsZHJiCSRpMixbJHRibCwkaTJdCQlAIFRkNFtzMj4+MF0KKwlhbmQJJGkzLGxyLCRzMixsc3IjMTYKKworCWxkcmIJJHMyLFskdGJsLCRzMixsc3IjMjRdCUAgVGQ0W3MyPj4yNF0KKwllb3IJJHMwLCRzMCwkaTEsbHNsIzgKKwlsZHJiCSRpMyxbJHRibCwkaTNdCQlAIFRkNFtzMj4+MTZdCisJZW9yCSRzMSwkaTIsJHMxLGxzbCMxNgorCWFuZAkkaTEsbHIsJHMzLGxzciMxNglAIGkwCisJZW9yCSRzMiwkdDIsJHMyLGxzbCMxNgorCWFuZAkkaTIsbHIsJHMzLGxzciM4CUAgaTEKKwlsZHJiCSRpMSxbJHRibCwkaTFdCQlAIFRkNFtzMz4+MTZdCisJZW9yCSR0MywkdDMsJGkzLGxzbCMxNgorCWxkcmIJJGkyLFskdGJsLCRpMl0JCUAgVGQ0W3MzPj44XQorCWFuZAkkaTMsbHIsJHMzCQlAIGkyCisKKwlsZHJiCSRpMyxbJHRibCwkaTNdCQlAIFRkNFtzMz4+MF0KKwlsZHJiCSRzMyxbJHRibCwkczMsbHNyIzI0XQlAIFRkNFtzMz4+MjRdCisJZW9yCSRzMCwkczAsJGkxLGxzbCMxNgorCWxkcgkkaTEsWyRrZXksIzBdCisJZW9yCSRzMSwkczEsJGkyLGxzbCM4CisJbGRyCSR0MSxbJGtleSwjNF0KKwllb3IJJHMyLCRpMywkczIsbHNsIzgKKwlsZHIJJHQyLFska2V5LCM4XQorCWVvcgkkczMsJHQzLCRzMyxsc2wjMjQKKwlsZHIJJHQzLFska2V5LCMxMl0KKworCWVvcgkkczAsJHMwLCRpMQorCWVvcgkkczEsJHMxLCR0MQorCWVvcgkkczIsJHMyLCR0MgorCWVvcgkkczMsJHMzLCR0MworCisJc3ViCSR0YmwsJHRibCwjMTAyNAorCWxkcglwYyxbc3BdLCM0CQlAIHBvcCBhbmQgcmV0dXJuCisuc2l6ZQlfYXJtdjRfQUVTX2RlY3J5cHQsLi1fYXJtdjRfQUVTX2RlY3J5cHQKKy5hc2NpegkiQUVTIGZvciBBUk12NCwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIKKy5hbGlnbgkyCitfX18KKworJGNvZGUgPX4gcy9cYmJ4XHMrbHJcYi8ud29yZFx0MHhlMTJmZmYxZS9nbTsJIyBtYWtlIGl0IHBvc3NpYmxlIHRvIGNvbXBpbGUgd2l0aCAtbWFyY2g9YXJtdjQKK3ByaW50ICRjb2RlOworY2xvc2UgU1RET1VUOwkjIGVuZm9yY2UgZmx1c2gKZGlmZiAtLWdpdCBhL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5zIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzLWFybXY0LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5N2Q0YwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5zCkBAIC0wLDAgKzEsMTA3MSBAQAorI2luY2x1ZGUgImFybV9hcmNoLmgiCisudGV4dAorLmNvZGUJMzIKKworLnR5cGUJQUVTX1RlLCVvYmplY3QKKy5hbGlnbgk1CitBRVNfVGU6Cisud29yZAkweGM2NjM2M2E1LCAweGY4N2M3Yzg0LCAweGVlNzc3Nzk5LCAweGY2N2I3YjhkCisud29yZAkweGZmZjJmMjBkLCAweGQ2NmI2YmJkLCAweGRlNmY2ZmIxLCAweDkxYzVjNTU0Cisud29yZAkweDYwMzAzMDUwLCAweDAyMDEwMTAzLCAweGNlNjc2N2E5LCAweDU2MmIyYjdkCisud29yZAkweGU3ZmVmZTE5LCAweGI1ZDdkNzYyLCAweDRkYWJhYmU2LCAweGVjNzY3NjlhCisud29yZAkweDhmY2FjYTQ1LCAweDFmODI4MjlkLCAweDg5YzljOTQwLCAweGZhN2Q3ZDg3Cisud29yZAkweGVmZmFmYTE1LCAweGIyNTk1OWViLCAweDhlNDc0N2M5LCAweGZiZjBmMDBiCisud29yZAkweDQxYWRhZGVjLCAweGIzZDRkNDY3LCAweDVmYTJhMmZkLCAweDQ1YWZhZmVhCisud29yZAkweDIzOWM5Y2JmLCAweDUzYTRhNGY3LCAweGU0NzI3Mjk2LCAweDliYzBjMDViCisud29yZAkweDc1YjdiN2MyLCAweGUxZmRmZDFjLCAweDNkOTM5M2FlLCAweDRjMjYyNjZhCisud29yZAkweDZjMzYzNjVhLCAweDdlM2YzZjQxLCAweGY1ZjdmNzAyLCAweDgzY2NjYzRmCisud29yZAkweDY4MzQzNDVjLCAweDUxYTVhNWY0LCAweGQxZTVlNTM0LCAweGY5ZjFmMTA4Cisud29yZAkweGUyNzE3MTkzLCAweGFiZDhkODczLCAweDYyMzEzMTUzLCAweDJhMTUxNTNmCisud29yZAkweDA4MDQwNDBjLCAweDk1YzdjNzUyLCAweDQ2MjMyMzY1LCAweDlkYzNjMzVlCisud29yZAkweDMwMTgxODI4LCAweDM3OTY5NmExLCAweDBhMDUwNTBmLCAweDJmOWE5YWI1Cisud29yZAkweDBlMDcwNzA5LCAweDI0MTIxMjM2LCAweDFiODA4MDliLCAweGRmZTJlMjNkCisud29yZAkweGNkZWJlYjI2LCAweDRlMjcyNzY5LCAweDdmYjJiMmNkLCAweGVhNzU3NTlmCisud29yZAkweDEyMDkwOTFiLCAweDFkODM4MzllLCAweDU4MmMyYzc0LCAweDM0MWExYTJlCisud29yZAkweDM2MWIxYjJkLCAweGRjNmU2ZWIyLCAweGI0NWE1YWVlLCAweDViYTBhMGZiCisud29yZAkweGE0NTI1MmY2LCAweDc2M2IzYjRkLCAweGI3ZDZkNjYxLCAweDdkYjNiM2NlCisud29yZAkweDUyMjkyOTdiLCAweGRkZTNlMzNlLCAweDVlMmYyZjcxLCAweDEzODQ4NDk3Cisud29yZAkweGE2NTM1M2Y1LCAweGI5ZDFkMTY4LCAweDAwMDAwMDAwLCAweGMxZWRlZDJjCisud29yZAkweDQwMjAyMDYwLCAweGUzZmNmYzFmLCAweDc5YjFiMWM4LCAweGI2NWI1YmVkCisud29yZAkweGQ0NmE2YWJlLCAweDhkY2JjYjQ2LCAweDY3YmViZWQ5LCAweDcyMzkzOTRiCisud29yZAkweDk0NGE0YWRlLCAweDk4NGM0Y2Q0LCAweGIwNTg1OGU4LCAweDg1Y2ZjZjRhCisud29yZAkweGJiZDBkMDZiLCAweGM1ZWZlZjJhLCAweDRmYWFhYWU1LCAweGVkZmJmYjE2Cisud29yZAkweDg2NDM0M2M1LCAweDlhNGQ0ZGQ3LCAweDY2MzMzMzU1LCAweDExODU4NTk0Cisud29yZAkweDhhNDU0NWNmLCAweGU5ZjlmOTEwLCAweDA0MDIwMjA2LCAweGZlN2Y3ZjgxCisud29yZAkweGEwNTA1MGYwLCAweDc4M2MzYzQ0LCAweDI1OWY5ZmJhLCAweDRiYThhOGUzCisud29yZAkweGEyNTE1MWYzLCAweDVkYTNhM2ZlLCAweDgwNDA0MGMwLCAweDA1OGY4ZjhhCisud29yZAkweDNmOTI5MmFkLCAweDIxOWQ5ZGJjLCAweDcwMzgzODQ4LCAweGYxZjVmNTA0Cisud29yZAkweDYzYmNiY2RmLCAweDc3YjZiNmMxLCAweGFmZGFkYTc1LCAweDQyMjEyMTYzCisud29yZAkweDIwMTAxMDMwLCAweGU1ZmZmZjFhLCAweGZkZjNmMzBlLCAweGJmZDJkMjZkCisud29yZAkweDgxY2RjZDRjLCAweDE4MGMwYzE0LCAweDI2MTMxMzM1LCAweGMzZWNlYzJmCisud29yZAkweGJlNWY1ZmUxLCAweDM1OTc5N2EyLCAweDg4NDQ0NGNjLCAweDJlMTcxNzM5Cisud29yZAkweDkzYzRjNDU3LCAweDU1YTdhN2YyLCAweGZjN2U3ZTgyLCAweDdhM2QzZDQ3Cisud29yZAkweGM4NjQ2NGFjLCAweGJhNWQ1ZGU3LCAweDMyMTkxOTJiLCAweGU2NzM3Mzk1Cisud29yZAkweGMwNjA2MGEwLCAweDE5ODE4MTk4LCAweDllNGY0ZmQxLCAweGEzZGNkYzdmCisud29yZAkweDQ0MjIyMjY2LCAweDU0MmEyYTdlLCAweDNiOTA5MGFiLCAweDBiODg4ODgzCisud29yZAkweDhjNDY0NmNhLCAweGM3ZWVlZTI5LCAweDZiYjhiOGQzLCAweDI4MTQxNDNjCisud29yZAkweGE3ZGVkZTc5LCAweGJjNWU1ZWUyLCAweDE2MGIwYjFkLCAweGFkZGJkYjc2Cisud29yZAkweGRiZTBlMDNiLCAweDY0MzIzMjU2LCAweDc0M2EzYTRlLCAweDE0MGEwYTFlCisud29yZAkweDkyNDk0OWRiLCAweDBjMDYwNjBhLCAweDQ4MjQyNDZjLCAweGI4NWM1Y2U0Cisud29yZAkweDlmYzJjMjVkLCAweGJkZDNkMzZlLCAweDQzYWNhY2VmLCAweGM0NjI2MmE2Cisud29yZAkweDM5OTE5MWE4LCAweDMxOTU5NWE0LCAweGQzZTRlNDM3LCAweGYyNzk3OThiCisud29yZAkweGQ1ZTdlNzMyLCAweDhiYzhjODQzLCAweDZlMzczNzU5LCAweGRhNmQ2ZGI3Cisud29yZAkweDAxOGQ4ZDhjLCAweGIxZDVkNTY0LCAweDljNGU0ZWQyLCAweDQ5YTlhOWUwCisud29yZAkweGQ4NmM2Y2I0LCAweGFjNTY1NmZhLCAweGYzZjRmNDA3LCAweGNmZWFlYTI1Cisud29yZAkweGNhNjU2NWFmLCAweGY0N2E3YThlLCAweDQ3YWVhZWU5LCAweDEwMDgwODE4Cisud29yZAkweDZmYmFiYWQ1LCAweGYwNzg3ODg4LCAweDRhMjUyNTZmLCAweDVjMmUyZTcyCisud29yZAkweDM4MWMxYzI0LCAweDU3YTZhNmYxLCAweDczYjRiNGM3LCAweDk3YzZjNjUxCisud29yZAkweGNiZThlODIzLCAweGExZGRkZDdjLCAweGU4NzQ3NDljLCAweDNlMWYxZjIxCisud29yZAkweDk2NGI0YmRkLCAweDYxYmRiZGRjLCAweDBkOGI4Yjg2LCAweDBmOGE4YTg1Cisud29yZAkweGUwNzA3MDkwLCAweDdjM2UzZTQyLCAweDcxYjViNWM0LCAweGNjNjY2NmFhCisud29yZAkweDkwNDg0OGQ4LCAweDA2MDMwMzA1LCAweGY3ZjZmNjAxLCAweDFjMGUwZTEyCisud29yZAkweGMyNjE2MWEzLCAweDZhMzUzNTVmLCAweGFlNTc1N2Y5LCAweDY5YjliOWQwCisud29yZAkweDE3ODY4NjkxLCAweDk5YzFjMTU4LCAweDNhMWQxZDI3LCAweDI3OWU5ZWI5Cisud29yZAkweGQ5ZTFlMTM4LCAweGViZjhmODEzLCAweDJiOTg5OGIzLCAweDIyMTExMTMzCisud29yZAkweGQyNjk2OWJiLCAweGE5ZDlkOTcwLCAweDA3OGU4ZTg5LCAweDMzOTQ5NGE3Cisud29yZAkweDJkOWI5YmI2LCAweDNjMWUxZTIyLCAweDE1ODc4NzkyLCAweGM5ZTllOTIwCisud29yZAkweDg3Y2VjZTQ5LCAweGFhNTU1NWZmLCAweDUwMjgyODc4LCAweGE1ZGZkZjdhCisud29yZAkweDAzOGM4YzhmLCAweDU5YTFhMWY4LCAweDA5ODk4OTgwLCAweDFhMGQwZDE3Cisud29yZAkweDY1YmZiZmRhLCAweGQ3ZTZlNjMxLCAweDg0NDI0MmM2LCAweGQwNjg2OGI4Cisud29yZAkweDgyNDE0MWMzLCAweDI5OTk5OWIwLCAweDVhMmQyZDc3LCAweDFlMGYwZjExCisud29yZAkweDdiYjBiMGNiLCAweGE4NTQ1NGZjLCAweDZkYmJiYmQ2LCAweDJjMTYxNjNhCitAIFRlNFsyNTZdCisuYnl0ZQkweDYzLCAweDdjLCAweDc3LCAweDdiLCAweGYyLCAweDZiLCAweDZmLCAweGM1CisuYnl0ZQkweDMwLCAweDAxLCAweDY3LCAweDJiLCAweGZlLCAweGQ3LCAweGFiLCAweDc2CisuYnl0ZQkweGNhLCAweDgyLCAweGM5LCAweDdkLCAweGZhLCAweDU5LCAweDQ3LCAweGYwCisuYnl0ZQkweGFkLCAweGQ0LCAweGEyLCAweGFmLCAweDljLCAweGE0LCAweDcyLCAweGMwCisuYnl0ZQkweGI3LCAweGZkLCAweDkzLCAweDI2LCAweDM2LCAweDNmLCAweGY3LCAweGNjCisuYnl0ZQkweDM0LCAweGE1LCAweGU1LCAweGYxLCAweDcxLCAweGQ4LCAweDMxLCAweDE1CisuYnl0ZQkweDA0LCAweGM3LCAweDIzLCAweGMzLCAweDE4LCAweDk2LCAweDA1LCAweDlhCisuYnl0ZQkweDA3LCAweDEyLCAweDgwLCAweGUyLCAweGViLCAweDI3LCAweGIyLCAweDc1CisuYnl0ZQkweDA5LCAweDgzLCAweDJjLCAweDFhLCAweDFiLCAweDZlLCAweDVhLCAweGEwCisuYnl0ZQkweDUyLCAweDNiLCAweGQ2LCAweGIzLCAweDI5LCAweGUzLCAweDJmLCAweDg0CisuYnl0ZQkweDUzLCAweGQxLCAweDAwLCAweGVkLCAweDIwLCAweGZjLCAweGIxLCAweDViCisuYnl0ZQkweDZhLCAweGNiLCAweGJlLCAweDM5LCAweDRhLCAweDRjLCAweDU4LCAweGNmCisuYnl0ZQkweGQwLCAweGVmLCAweGFhLCAweGZiLCAweDQzLCAweDRkLCAweDMzLCAweDg1CisuYnl0ZQkweDQ1LCAweGY5LCAweDAyLCAweDdmLCAweDUwLCAweDNjLCAweDlmLCAweGE4CisuYnl0ZQkweDUxLCAweGEzLCAweDQwLCAweDhmLCAweDkyLCAweDlkLCAweDM4LCAweGY1CisuYnl0ZQkweGJjLCAweGI2LCAweGRhLCAweDIxLCAweDEwLCAweGZmLCAweGYzLCAweGQyCisuYnl0ZQkweGNkLCAweDBjLCAweDEzLCAweGVjLCAweDVmLCAweDk3LCAweDQ0LCAweDE3CisuYnl0ZQkweGM0LCAweGE3LCAweDdlLCAweDNkLCAweDY0LCAweDVkLCAweDE5LCAweDczCisuYnl0ZQkweDYwLCAweDgxLCAweDRmLCAweGRjLCAweDIyLCAweDJhLCAweDkwLCAweDg4CisuYnl0ZQkweDQ2LCAweGVlLCAweGI4LCAweDE0LCAweGRlLCAweDVlLCAweDBiLCAweGRiCisuYnl0ZQkweGUwLCAweDMyLCAweDNhLCAweDBhLCAweDQ5LCAweDA2LCAweDI0LCAweDVjCisuYnl0ZQkweGMyLCAweGQzLCAweGFjLCAweDYyLCAweDkxLCAweDk1LCAweGU0LCAweDc5CisuYnl0ZQkweGU3LCAweGM4LCAweDM3LCAweDZkLCAweDhkLCAweGQ1LCAweDRlLCAweGE5CisuYnl0ZQkweDZjLCAweDU2LCAweGY0LCAweGVhLCAweDY1LCAweDdhLCAweGFlLCAweDA4CisuYnl0ZQkweGJhLCAweDc4LCAweDI1LCAweDJlLCAweDFjLCAweGE2LCAweGI0LCAweGM2CisuYnl0ZQkweGU4LCAweGRkLCAweDc0LCAweDFmLCAweDRiLCAweGJkLCAweDhiLCAweDhhCisuYnl0ZQkweDcwLCAweDNlLCAweGI1LCAweDY2LCAweDQ4LCAweDAzLCAweGY2LCAweDBlCisuYnl0ZQkweDYxLCAweDM1LCAweDU3LCAweGI5LCAweDg2LCAweGMxLCAweDFkLCAweDllCisuYnl0ZQkweGUxLCAweGY4LCAweDk4LCAweDExLCAweDY5LCAweGQ5LCAweDhlLCAweDk0CisuYnl0ZQkweDliLCAweDFlLCAweDg3LCAweGU5LCAweGNlLCAweDU1LCAweDI4LCAweGRmCisuYnl0ZQkweDhjLCAweGExLCAweDg5LCAweDBkLCAweGJmLCAweGU2LCAweDQyLCAweDY4CisuYnl0ZQkweDQxLCAweDk5LCAweDJkLCAweDBmLCAweGIwLCAweDU0LCAweGJiLCAweDE2CitAIHJjb25bXQorLndvcmQJMHgwMTAwMDAwMCwgMHgwMjAwMDAwMCwgMHgwNDAwMDAwMCwgMHgwODAwMDAwMAorLndvcmQJMHgxMDAwMDAwMCwgMHgyMDAwMDAwMCwgMHg0MDAwMDAwMCwgMHg4MDAwMDAwMAorLndvcmQJMHgxQjAwMDAwMCwgMHgzNjAwMDAwMCwgMCwgMCwgMCwgMCwgMCwgMAorLnNpemUJQUVTX1RlLC4tQUVTX1RlCisKK0Agdm9pZCBBRVNfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorQCAJCSBjb25zdCBBRVNfS0VZICprZXkpIHsKKy5nbG9iYWwgQUVTX2VuY3J5cHQKKy50eXBlICAgQUVTX2VuY3J5cHQsJWZ1bmN0aW9uCisuYWxpZ24JNQorQUVTX2VuY3J5cHQ6CisJc3ViCXIzLHBjLCM4CQlAIEFFU19lbmNyeXB0CisJc3RtZGIgICBzcCEse3IxLHI0LXIxMixscn0KKwltb3YJcjEyLHIwCQlAIGlucAorCW1vdglyMTEscjIKKwlzdWIJcjEwLHIzLCNBRVNfZW5jcnlwdC1BRVNfVGUJQCBUZQorI2lmIF9fQVJNX0FSQ0hfXzw3CisJbGRyYglyMCxbcjEyLCMzXQlAIGxvYWQgaW5wdXQgZGF0YSBpbiBlbmRpYW4tbmV1dHJhbAorCWxkcmIJcjQsW3IxMiwjMl0JQCBtYW5uZXIuLi4KKwlsZHJiCXI1LFtyMTIsIzFdCisJbGRyYglyNixbcjEyLCMwXQorCW9ycglyMCxyMCxyNCxsc2wjOAorCWxkcmIJcjEsW3IxMiwjN10KKwlvcnIJcjAscjAscjUsbHNsIzE2CisJbGRyYglyNCxbcjEyLCM2XQorCW9ycglyMCxyMCxyNixsc2wjMjQKKwlsZHJiCXI1LFtyMTIsIzVdCisJbGRyYglyNixbcjEyLCM0XQorCW9ycglyMSxyMSxyNCxsc2wjOAorCWxkcmIJcjIsW3IxMiwjMTFdCisJb3JyCXIxLHIxLHI1LGxzbCMxNgorCWxkcmIJcjQsW3IxMiwjMTBdCisJb3JyCXIxLHIxLHI2LGxzbCMyNAorCWxkcmIJcjUsW3IxMiwjOV0KKwlsZHJiCXI2LFtyMTIsIzhdCisJb3JyCXIyLHIyLHI0LGxzbCM4CisJbGRyYglyMyxbcjEyLCMxNV0KKwlvcnIJcjIscjIscjUsbHNsIzE2CisJbGRyYglyNCxbcjEyLCMxNF0KKwlvcnIJcjIscjIscjYsbHNsIzI0CisJbGRyYglyNSxbcjEyLCMxM10KKwlsZHJiCXI2LFtyMTIsIzEyXQorCW9ycglyMyxyMyxyNCxsc2wjOAorCW9ycglyMyxyMyxyNSxsc2wjMTYKKwlvcnIJcjMscjMscjYsbHNsIzI0CisjZWxzZQorCWxkcglyMCxbcjEyLCMwXQorCWxkcglyMSxbcjEyLCM0XQorCWxkcglyMixbcjEyLCM4XQorCWxkcglyMyxbcjEyLCMxMl0KKyNpZmRlZiBfX0FSTUVMX18KKwlyZXYJcjAscjAKKwlyZXYJcjEscjEKKwlyZXYJcjIscjIKKwlyZXYJcjMscjMKKyNlbmRpZgorI2VuZGlmCisJYmwJX2FybXY0X0FFU19lbmNyeXB0CisKKwlsZHIJcjEyLFtzcF0sIzQJCUAgcG9wIG91dAorI2lmIF9fQVJNX0FSQ0hfXz49NworI2lmZGVmIF9fQVJNRUxfXworCXJldglyMCxyMAorCXJldglyMSxyMQorCXJldglyMixyMgorCXJldglyMyxyMworI2VuZGlmCisJc3RyCXIwLFtyMTIsIzBdCisJc3RyCXIxLFtyMTIsIzRdCisJc3RyCXIyLFtyMTIsIzhdCisJc3RyCXIzLFtyMTIsIzEyXQorI2Vsc2UKKwltb3YJcjQscjAsbHNyIzI0CQlAIHdyaXRlIG91dHB1dCBpbiBlbmRpYW4tbmV1dHJhbAorCW1vdglyNSxyMCxsc3IjMTYJCUAgbWFubmVyLi4uCisJbW92CXI2LHIwLGxzciM4CisJc3RyYglyNCxbcjEyLCMwXQorCXN0cmIJcjUsW3IxMiwjMV0KKwltb3YJcjQscjEsbHNyIzI0CisJc3RyYglyNixbcjEyLCMyXQorCW1vdglyNSxyMSxsc3IjMTYKKwlzdHJiCXIwLFtyMTIsIzNdCisJbW92CXI2LHIxLGxzciM4CisJc3RyYglyNCxbcjEyLCM0XQorCXN0cmIJcjUsW3IxMiwjNV0KKwltb3YJcjQscjIsbHNyIzI0CisJc3RyYglyNixbcjEyLCM2XQorCW1vdglyNSxyMixsc3IjMTYKKwlzdHJiCXIxLFtyMTIsIzddCisJbW92CXI2LHIyLGxzciM4CisJc3RyYglyNCxbcjEyLCM4XQorCXN0cmIJcjUsW3IxMiwjOV0KKwltb3YJcjQscjMsbHNyIzI0CisJc3RyYglyNixbcjEyLCMxMF0KKwltb3YJcjUscjMsbHNyIzE2CisJc3RyYglyMixbcjEyLCMxMV0KKwltb3YJcjYscjMsbHNyIzgKKwlzdHJiCXI0LFtyMTIsIzEyXQorCXN0cmIJcjUsW3IxMiwjMTNdCisJc3RyYglyNixbcjEyLCMxNF0KKwlzdHJiCXIzLFtyMTIsIzE1XQorI2VuZGlmCisjaWYgX19BUk1fQVJDSF9fPj01CisJbGRtaWEJc3AhLHtyNC1yMTIscGN9CisjZWxzZQorCWxkbWlhICAgc3AhLHtyNC1yMTIsbHJ9CisJdHN0CWxyLCMxCisJbW92ZXEJcGMsbHIJCQlAIGJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggVjQsIHlldAorCS53b3JkCTB4ZTEyZmZmMWUJCQlAIGludGVyb3BlcmFibGUgd2l0aCBUaHVtYiBJU0E6LSkKKyNlbmRpZgorLnNpemUJQUVTX2VuY3J5cHQsLi1BRVNfZW5jcnlwdAorCisudHlwZSAgIF9hcm12NF9BRVNfZW5jcnlwdCwlZnVuY3Rpb24KKy5hbGlnbgkyCitfYXJtdjRfQUVTX2VuY3J5cHQ6CisJc3RyCWxyLFtzcCwjLTRdIQkJQCBwdXNoIGxyCisJbGRtaWEJcjExISx7cjQtcjd9CisJZW9yCXIwLHIwLHI0CisJbGRyCXIxMixbcjExLCMyNDAtMTZdCisJZW9yCXIxLHIxLHI1CisJZW9yCXIyLHIyLHI2CisJZW9yCXIzLHIzLHI3CisJc3ViCXIxMixyMTIsIzEKKwltb3YJbHIsIzI1NQorCisJYW5kCXI3LGxyLHIwCisJYW5kCXI4LGxyLHIwLGxzciM4CisJYW5kCXI5LGxyLHIwLGxzciMxNgorCW1vdglyMCxyMCxsc3IjMjQKKy5MZW5jX2xvb3A6CisJbGRyCXI0LFtyMTAscjcsbHNsIzJdCUAgVGUzW3MwPj4wXQorCWFuZAlyNyxscixyMSxsc3IjMTYJQCBpMAorCWxkcglyNSxbcjEwLHI4LGxzbCMyXQlAIFRlMltzMD4+OF0KKwlhbmQJcjgsbHIscjEKKwlsZHIJcjYsW3IxMCxyOSxsc2wjMl0JQCBUZTFbczA+PjE2XQorCWFuZAlyOSxscixyMSxsc3IjOAorCWxkcglyMCxbcjEwLHIwLGxzbCMyXQlAIFRlMFtzMD4+MjRdCisJbW92CXIxLHIxLGxzciMyNAorCisJbGRyCXI3LFtyMTAscjcsbHNsIzJdCUAgVGUxW3MxPj4xNl0KKwlsZHIJcjgsW3IxMCxyOCxsc2wjMl0JQCBUZTNbczE+PjBdCisJbGRyCXI5LFtyMTAscjksbHNsIzJdCUAgVGUyW3MxPj44XQorCWVvcglyMCxyMCxyNyxyb3IjOAorCWxkcglyMSxbcjEwLHIxLGxzbCMyXQlAIFRlMFtzMT4+MjRdCisJYW5kCXI3LGxyLHIyLGxzciM4CUAgaTAKKwllb3IJcjUscjUscjgscm9yIzgKKwlhbmQJcjgsbHIscjIsbHNyIzE2CUAgaTEKKwllb3IJcjYscjYscjkscm9yIzgKKwlhbmQJcjksbHIscjIKKwlsZHIJcjcsW3IxMCxyNyxsc2wjMl0JQCBUZTJbczI+PjhdCisJZW9yCXIxLHIxLHI0LHJvciMyNAorCWxkcglyOCxbcjEwLHI4LGxzbCMyXQlAIFRlMVtzMj4+MTZdCisJbW92CXIyLHIyLGxzciMyNAorCisJbGRyCXI5LFtyMTAscjksbHNsIzJdCUAgVGUzW3MyPj4wXQorCWVvcglyMCxyMCxyNyxyb3IjMTYKKwlsZHIJcjIsW3IxMCxyMixsc2wjMl0JQCBUZTBbczI+PjI0XQorCWFuZAlyNyxscixyMwkJQCBpMAorCWVvcglyMSxyMSxyOCxyb3IjOAorCWFuZAlyOCxscixyMyxsc3IjOAlAIGkxCisJZW9yCXI2LHI2LHI5LHJvciMxNgorCWFuZAlyOSxscixyMyxsc3IjMTYJQCBpMgorCWxkcglyNyxbcjEwLHI3LGxzbCMyXQlAIFRlM1tzMz4+MF0KKwllb3IJcjIscjIscjUscm9yIzE2CisJbGRyCXI4LFtyMTAscjgsbHNsIzJdCUAgVGUyW3MzPj44XQorCW1vdglyMyxyMyxsc3IjMjQKKworCWxkcglyOSxbcjEwLHI5LGxzbCMyXQlAIFRlMVtzMz4+MTZdCisJZW9yCXIwLHIwLHI3LHJvciMyNAorCWxkcglyNyxbcjExXSwjMTYKKwllb3IJcjEscjEscjgscm9yIzE2CisJbGRyCXIzLFtyMTAscjMsbHNsIzJdCUAgVGUwW3MzPj4yNF0KKwllb3IJcjIscjIscjkscm9yIzgKKwlsZHIJcjQsW3IxMSwjLTEyXQorCWVvcglyMyxyMyxyNixyb3IjOAorCisJbGRyCXI1LFtyMTEsIy04XQorCWVvcglyMCxyMCxyNworCWxkcglyNixbcjExLCMtNF0KKwlhbmQJcjcsbHIscjAKKwllb3IJcjEscjEscjQKKwlhbmQJcjgsbHIscjAsbHNyIzgKKwllb3IJcjIscjIscjUKKwlhbmQJcjksbHIscjAsbHNyIzE2CisJZW9yCXIzLHIzLHI2CisJbW92CXIwLHIwLGxzciMyNAorCisJc3VicwlyMTIscjEyLCMxCisJYm5lCS5MZW5jX2xvb3AKKworCWFkZAlyMTAscjEwLCMyCisKKwlsZHJiCXI0LFtyMTAscjcsbHNsIzJdCUAgVGU0W3MwPj4wXQorCWFuZAlyNyxscixyMSxsc3IjMTYJQCBpMAorCWxkcmIJcjUsW3IxMCxyOCxsc2wjMl0JQCBUZTRbczA+PjhdCisJYW5kCXI4LGxyLHIxCisJbGRyYglyNixbcjEwLHI5LGxzbCMyXQlAIFRlNFtzMD4+MTZdCisJYW5kCXI5LGxyLHIxLGxzciM4CisJbGRyYglyMCxbcjEwLHIwLGxzbCMyXQlAIFRlNFtzMD4+MjRdCisJbW92CXIxLHIxLGxzciMyNAorCisJbGRyYglyNyxbcjEwLHI3LGxzbCMyXQlAIFRlNFtzMT4+MTZdCisJbGRyYglyOCxbcjEwLHI4LGxzbCMyXQlAIFRlNFtzMT4+MF0KKwlsZHJiCXI5LFtyMTAscjksbHNsIzJdCUAgVGU0W3MxPj44XQorCWVvcglyMCxyNyxyMCxsc2wjOAorCWxkcmIJcjEsW3IxMCxyMSxsc2wjMl0JQCBUZTRbczE+PjI0XQorCWFuZAlyNyxscixyMixsc3IjOAlAIGkwCisJZW9yCXI1LHI4LHI1LGxzbCM4CisJYW5kCXI4LGxyLHIyLGxzciMxNglAIGkxCisJZW9yCXI2LHI5LHI2LGxzbCM4CisJYW5kCXI5LGxyLHIyCisJbGRyYglyNyxbcjEwLHI3LGxzbCMyXQlAIFRlNFtzMj4+OF0KKwllb3IJcjEscjQscjEsbHNsIzI0CisJbGRyYglyOCxbcjEwLHI4LGxzbCMyXQlAIFRlNFtzMj4+MTZdCisJbW92CXIyLHIyLGxzciMyNAorCisJbGRyYglyOSxbcjEwLHI5LGxzbCMyXQlAIFRlNFtzMj4+MF0KKwllb3IJcjAscjcscjAsbHNsIzgKKwlsZHJiCXIyLFtyMTAscjIsbHNsIzJdCUAgVGU0W3MyPj4yNF0KKwlhbmQJcjcsbHIscjMJCUAgaTAKKwllb3IJcjEscjEscjgsbHNsIzE2CisJYW5kCXI4LGxyLHIzLGxzciM4CUAgaTEKKwllb3IJcjYscjkscjYsbHNsIzgKKwlhbmQJcjksbHIscjMsbHNyIzE2CUAgaTIKKwlsZHJiCXI3LFtyMTAscjcsbHNsIzJdCUAgVGU0W3MzPj4wXQorCWVvcglyMixyNSxyMixsc2wjMjQKKwlsZHJiCXI4LFtyMTAscjgsbHNsIzJdCUAgVGU0W3MzPj44XQorCW1vdglyMyxyMyxsc3IjMjQKKworCWxkcmIJcjksW3IxMCxyOSxsc2wjMl0JQCBUZTRbczM+PjE2XQorCWVvcglyMCxyNyxyMCxsc2wjOAorCWxkcglyNyxbcjExLCMwXQorCWxkcmIJcjMsW3IxMCxyMyxsc2wjMl0JQCBUZTRbczM+PjI0XQorCWVvcglyMSxyMSxyOCxsc2wjOAorCWxkcglyNCxbcjExLCM0XQorCWVvcglyMixyMixyOSxsc2wjMTYKKwlsZHIJcjUsW3IxMSwjOF0KKwllb3IJcjMscjYscjMsbHNsIzI0CisJbGRyCXI2LFtyMTEsIzEyXQorCisJZW9yCXIwLHIwLHI3CisJZW9yCXIxLHIxLHI0CisJZW9yCXIyLHIyLHI1CisJZW9yCXIzLHIzLHI2CisKKwlzdWIJcjEwLHIxMCwjMgorCWxkcglwYyxbc3BdLCM0CQlAIHBvcCBhbmQgcmV0dXJuCisuc2l6ZQlfYXJtdjRfQUVTX2VuY3J5cHQsLi1fYXJtdjRfQUVTX2VuY3J5cHQKKworLmdsb2JhbCBwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXkKKy50eXBlICAgcHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5LCVmdW5jdGlvbgorLmFsaWduCTUKK3ByaXZhdGVfQUVTX3NldF9lbmNyeXB0X2tleToKK19hcm12NF9BRVNfc2V0X2VuY3J5cHRfa2V5OgorCXN1YglyMyxwYywjOAkJQCBBRVNfc2V0X2VuY3J5cHRfa2V5CisJdGVxCXIwLCMwCisJbW92ZXEJcjAsIy0xCisJYmVxCS5MYWJydAorCXRlcQlyMiwjMAorCW1vdmVxCXIwLCMtMQorCWJlcQkuTGFicnQKKworCXRlcQlyMSwjMTI4CisJYmVxCS5Mb2sKKwl0ZXEJcjEsIzE5MgorCWJlcQkuTG9rCisJdGVxCXIxLCMyNTYKKwltb3ZuZQlyMCwjLTEKKwlibmUJLkxhYnJ0CisKKy5Mb2s6CXN0bWRiICAgc3AhLHtyNC1yMTIsbHJ9CisJc3ViCXIxMCxyMywjX2FybXY0X0FFU19zZXRfZW5jcnlwdF9rZXktQUVTX1RlLTEwMjQJQCBUZTQKKworCW1vdglyMTIscjAJCUAgaW5wCisJbW92CWxyLHIxCQkJQCBiaXRzCisJbW92CXIxMSxyMgkJCUAga2V5CisKKyNpZiBfX0FSTV9BUkNIX188NworCWxkcmIJcjAsW3IxMiwjM10JQCBsb2FkIGlucHV0IGRhdGEgaW4gZW5kaWFuLW5ldXRyYWwKKwlsZHJiCXI0LFtyMTIsIzJdCUAgbWFubmVyLi4uCisJbGRyYglyNSxbcjEyLCMxXQorCWxkcmIJcjYsW3IxMiwjMF0KKwlvcnIJcjAscjAscjQsbHNsIzgKKwlsZHJiCXIxLFtyMTIsIzddCisJb3JyCXIwLHIwLHI1LGxzbCMxNgorCWxkcmIJcjQsW3IxMiwjNl0KKwlvcnIJcjAscjAscjYsbHNsIzI0CisJbGRyYglyNSxbcjEyLCM1XQorCWxkcmIJcjYsW3IxMiwjNF0KKwlvcnIJcjEscjEscjQsbHNsIzgKKwlsZHJiCXIyLFtyMTIsIzExXQorCW9ycglyMSxyMSxyNSxsc2wjMTYKKwlsZHJiCXI0LFtyMTIsIzEwXQorCW9ycglyMSxyMSxyNixsc2wjMjQKKwlsZHJiCXI1LFtyMTIsIzldCisJbGRyYglyNixbcjEyLCM4XQorCW9ycglyMixyMixyNCxsc2wjOAorCWxkcmIJcjMsW3IxMiwjMTVdCisJb3JyCXIyLHIyLHI1LGxzbCMxNgorCWxkcmIJcjQsW3IxMiwjMTRdCisJb3JyCXIyLHIyLHI2LGxzbCMyNAorCWxkcmIJcjUsW3IxMiwjMTNdCisJbGRyYglyNixbcjEyLCMxMl0KKwlvcnIJcjMscjMscjQsbHNsIzgKKwlzdHIJcjAsW3IxMV0sIzE2CisJb3JyCXIzLHIzLHI1LGxzbCMxNgorCXN0cglyMSxbcjExLCMtMTJdCisJb3JyCXIzLHIzLHI2LGxzbCMyNAorCXN0cglyMixbcjExLCMtOF0KKwlzdHIJcjMsW3IxMSwjLTRdCisjZWxzZQorCWxkcglyMCxbcjEyLCMwXQorCWxkcglyMSxbcjEyLCM0XQorCWxkcglyMixbcjEyLCM4XQorCWxkcglyMyxbcjEyLCMxMl0KKyNpZmRlZiBfX0FSTUVMX18KKwlyZXYJcjAscjAKKwlyZXYJcjEscjEKKwlyZXYJcjIscjIKKwlyZXYJcjMscjMKKyNlbmRpZgorCXN0cglyMCxbcjExXSwjMTYKKwlzdHIJcjEsW3IxMSwjLTEyXQorCXN0cglyMixbcjExLCMtOF0KKwlzdHIJcjMsW3IxMSwjLTRdCisjZW5kaWYKKworCXRlcQlsciwjMTI4CisJYm5lCS5Mbm90MTI4CisJbW92CXIxMiwjMTAKKwlzdHIJcjEyLFtyMTEsIzI0MC0xNl0KKwlhZGQJcjYscjEwLCMyNTYJCQlAIHJjb24KKwltb3YJbHIsIzI1NQorCisuTDEyOF9sb29wOgorCWFuZAlyNSxscixyMyxsc3IjMjQKKwlhbmQJcjcsbHIscjMsbHNyIzE2CisJbGRyYglyNSxbcjEwLHI1XQorCWFuZAlyOCxscixyMyxsc3IjOAorCWxkcmIJcjcsW3IxMCxyN10KKwlhbmQJcjksbHIscjMKKwlsZHJiCXI4LFtyMTAscjhdCisJb3JyCXI1LHI1LHI3LGxzbCMyNAorCWxkcmIJcjksW3IxMCxyOV0KKwlvcnIJcjUscjUscjgsbHNsIzE2CisJbGRyCXI0LFtyNl0sIzQJCQlAIHJjb25baSsrXQorCW9ycglyNSxyNSxyOSxsc2wjOAorCWVvcglyNSxyNSxyNAorCWVvcglyMCxyMCxyNQkJCUAgcmtbNF09cmtbMF1eLi4uCisJZW9yCXIxLHIxLHIwCQkJQCBya1s1XT1ya1sxXV5ya1s0XQorCXN0cglyMCxbcjExXSwjMTYKKwllb3IJcjIscjIscjEJCQlAIHJrWzZdPXJrWzJdXnJrWzVdCisJc3RyCXIxLFtyMTEsIy0xMl0KKwllb3IJcjMscjMscjIJCQlAIHJrWzddPXJrWzNdXnJrWzZdCisJc3RyCXIyLFtyMTEsIy04XQorCXN1YnMJcjEyLHIxMiwjMQorCXN0cglyMyxbcjExLCMtNF0KKwlibmUJLkwxMjhfbG9vcAorCXN1YglyMixyMTEsIzE3NgorCWIJLkxkb25lCisKKy5Mbm90MTI4OgorI2lmIF9fQVJNX0FSQ0hfXzw3CisJbGRyYglyOCxbcjEyLCMxOV0KKwlsZHJiCXI0LFtyMTIsIzE4XQorCWxkcmIJcjUsW3IxMiwjMTddCisJbGRyYglyNixbcjEyLCMxNl0KKwlvcnIJcjgscjgscjQsbHNsIzgKKwlsZHJiCXI5LFtyMTIsIzIzXQorCW9ycglyOCxyOCxyNSxsc2wjMTYKKwlsZHJiCXI0LFtyMTIsIzIyXQorCW9ycglyOCxyOCxyNixsc2wjMjQKKwlsZHJiCXI1LFtyMTIsIzIxXQorCWxkcmIJcjYsW3IxMiwjMjBdCisJb3JyCXI5LHI5LHI0LGxzbCM4CisJb3JyCXI5LHI5LHI1LGxzbCMxNgorCXN0cglyOCxbcjExXSwjOAorCW9ycglyOSxyOSxyNixsc2wjMjQKKwlzdHIJcjksW3IxMSwjLTRdCisjZWxzZQorCWxkcglyOCxbcjEyLCMxNl0KKwlsZHIJcjksW3IxMiwjMjBdCisjaWZkZWYgX19BUk1FTF9fCisJcmV2CXI4LHI4CisJcmV2CXI5LHI5CisjZW5kaWYKKwlzdHIJcjgsW3IxMV0sIzgKKwlzdHIJcjksW3IxMSwjLTRdCisjZW5kaWYKKworCXRlcQlsciwjMTkyCisJYm5lCS5Mbm90MTkyCisJbW92CXIxMiwjMTIKKwlzdHIJcjEyLFtyMTEsIzI0MC0yNF0KKwlhZGQJcjYscjEwLCMyNTYJCQlAIHJjb24KKwltb3YJbHIsIzI1NQorCW1vdglyMTIsIzgKKworLkwxOTJfbG9vcDoKKwlhbmQJcjUsbHIscjksbHNyIzI0CisJYW5kCXI3LGxyLHI5LGxzciMxNgorCWxkcmIJcjUsW3IxMCxyNV0KKwlhbmQJcjgsbHIscjksbHNyIzgKKwlsZHJiCXI3LFtyMTAscjddCisJYW5kCXI5LGxyLHI5CisJbGRyYglyOCxbcjEwLHI4XQorCW9ycglyNSxyNSxyNyxsc2wjMjQKKwlsZHJiCXI5LFtyMTAscjldCisJb3JyCXI1LHI1LHI4LGxzbCMxNgorCWxkcglyNCxbcjZdLCM0CQkJQCByY29uW2krK10KKwlvcnIJcjUscjUscjksbHNsIzgKKwllb3IJcjkscjUscjQKKwllb3IJcjAscjAscjkJCQlAIHJrWzZdPXJrWzBdXi4uLgorCWVvcglyMSxyMSxyMAkJCUAgcmtbN109cmtbMV1ecmtbNl0KKwlzdHIJcjAsW3IxMV0sIzI0CisJZW9yCXIyLHIyLHIxCQkJQCBya1s4XT1ya1syXV5ya1s3XQorCXN0cglyMSxbcjExLCMtMjBdCisJZW9yCXIzLHIzLHIyCQkJQCBya1s5XT1ya1szXV5ya1s4XQorCXN0cglyMixbcjExLCMtMTZdCisJc3VicwlyMTIscjEyLCMxCisJc3RyCXIzLFtyMTEsIy0xMl0KKwlzdWJlcQlyMixyMTEsIzIxNgorCWJlcQkuTGRvbmUKKworCWxkcglyNyxbcjExLCMtMzJdCisJbGRyCXI4LFtyMTEsIy0yOF0KKwllb3IJcjcscjcscjMJCQlAIHJrWzEwXT1ya1s0XV5ya1s5XQorCWVvcglyOSxyOCxyNwkJCUAgcmtbMTFdPXJrWzVdXnJrWzEwXQorCXN0cglyNyxbcjExLCMtOF0KKwlzdHIJcjksW3IxMSwjLTRdCisJYgkuTDE5Ml9sb29wCisKKy5Mbm90MTkyOgorI2lmIF9fQVJNX0FSQ0hfXzw3CisJbGRyYglyOCxbcjEyLCMyN10KKwlsZHJiCXI0LFtyMTIsIzI2XQorCWxkcmIJcjUsW3IxMiwjMjVdCisJbGRyYglyNixbcjEyLCMyNF0KKwlvcnIJcjgscjgscjQsbHNsIzgKKwlsZHJiCXI5LFtyMTIsIzMxXQorCW9ycglyOCxyOCxyNSxsc2wjMTYKKwlsZHJiCXI0LFtyMTIsIzMwXQorCW9ycglyOCxyOCxyNixsc2wjMjQKKwlsZHJiCXI1LFtyMTIsIzI5XQorCWxkcmIJcjYsW3IxMiwjMjhdCisJb3JyCXI5LHI5LHI0LGxzbCM4CisJb3JyCXI5LHI5LHI1LGxzbCMxNgorCXN0cglyOCxbcjExXSwjOAorCW9ycglyOSxyOSxyNixsc2wjMjQKKwlzdHIJcjksW3IxMSwjLTRdCisjZWxzZQorCWxkcglyOCxbcjEyLCMyNF0KKwlsZHIJcjksW3IxMiwjMjhdCisjaWZkZWYgX19BUk1FTF9fCisJcmV2CXI4LHI4CisJcmV2CXI5LHI5CisjZW5kaWYKKwlzdHIJcjgsW3IxMV0sIzgKKwlzdHIJcjksW3IxMSwjLTRdCisjZW5kaWYKKworCW1vdglyMTIsIzE0CisJc3RyCXIxMixbcjExLCMyNDAtMzJdCisJYWRkCXI2LHIxMCwjMjU2CQkJQCByY29uCisJbW92CWxyLCMyNTUKKwltb3YJcjEyLCM3CisKKy5MMjU2X2xvb3A6CisJYW5kCXI1LGxyLHI5LGxzciMyNAorCWFuZAlyNyxscixyOSxsc3IjMTYKKwlsZHJiCXI1LFtyMTAscjVdCisJYW5kCXI4LGxyLHI5LGxzciM4CisJbGRyYglyNyxbcjEwLHI3XQorCWFuZAlyOSxscixyOQorCWxkcmIJcjgsW3IxMCxyOF0KKwlvcnIJcjUscjUscjcsbHNsIzI0CisJbGRyYglyOSxbcjEwLHI5XQorCW9ycglyNSxyNSxyOCxsc2wjMTYKKwlsZHIJcjQsW3I2XSwjNAkJCUAgcmNvbltpKytdCisJb3JyCXI1LHI1LHI5LGxzbCM4CisJZW9yCXI5LHI1LHI0CisJZW9yCXIwLHIwLHI5CQkJQCBya1s4XT1ya1swXV4uLi4KKwllb3IJcjEscjEscjAJCQlAIHJrWzldPXJrWzFdXnJrWzhdCisJc3RyCXIwLFtyMTFdLCMzMgorCWVvcglyMixyMixyMQkJCUAgcmtbMTBdPXJrWzJdXnJrWzldCisJc3RyCXIxLFtyMTEsIy0yOF0KKwllb3IJcjMscjMscjIJCQlAIHJrWzExXT1ya1szXV5ya1sxMF0KKwlzdHIJcjIsW3IxMSwjLTI0XQorCXN1YnMJcjEyLHIxMiwjMQorCXN0cglyMyxbcjExLCMtMjBdCisJc3ViZXEJcjIscjExLCMyNTYKKwliZXEJLkxkb25lCisKKwlhbmQJcjUsbHIscjMKKwlhbmQJcjcsbHIscjMsbHNyIzgKKwlsZHJiCXI1LFtyMTAscjVdCisJYW5kCXI4LGxyLHIzLGxzciMxNgorCWxkcmIJcjcsW3IxMCxyN10KKwlhbmQJcjksbHIscjMsbHNyIzI0CisJbGRyYglyOCxbcjEwLHI4XQorCW9ycglyNSxyNSxyNyxsc2wjOAorCWxkcmIJcjksW3IxMCxyOV0KKwlvcnIJcjUscjUscjgsbHNsIzE2CisJbGRyCXI0LFtyMTEsIy00OF0KKwlvcnIJcjUscjUscjksbHNsIzI0CisKKwlsZHIJcjcsW3IxMSwjLTQ0XQorCWxkcglyOCxbcjExLCMtNDBdCisJZW9yCXI0LHI0LHI1CQkJQCBya1sxMl09cmtbNF1eLi4uCisJbGRyCXI5LFtyMTEsIy0zNl0KKwllb3IJcjcscjcscjQJCQlAIHJrWzEzXT1ya1s1XV5ya1sxMl0KKwlzdHIJcjQsW3IxMSwjLTE2XQorCWVvcglyOCxyOCxyNwkJCUAgcmtbMTRdPXJrWzZdXnJrWzEzXQorCXN0cglyNyxbcjExLCMtMTJdCisJZW9yCXI5LHI5LHI4CQkJQCBya1sxNV09cmtbN11ecmtbMTRdCisJc3RyCXI4LFtyMTEsIy04XQorCXN0cglyOSxbcjExLCMtNF0KKwliCS5MMjU2X2xvb3AKKworLkxkb25lOgltb3YJcjAsIzAKKwlsZG1pYSAgIHNwISx7cjQtcjEyLGxyfQorLkxhYnJ0Ogl0c3QJbHIsIzEKKwltb3ZlcQlwYyxscgkJCUAgYmUgYmluYXJ5IGNvbXBhdGlibGUgd2l0aCBWNCwgeWV0CisJLndvcmQJMHhlMTJmZmYxZQkJCUAgaW50ZXJvcGVyYWJsZSB3aXRoIFRodW1iIElTQTotKQorLnNpemUJcHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5LC4tcHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5CisKKy5nbG9iYWwgcHJpdmF0ZV9BRVNfc2V0X2RlY3J5cHRfa2V5CisudHlwZSAgIHByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleSwlZnVuY3Rpb24KKy5hbGlnbgk1Citwcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXk6CisJc3RyCWxyLFtzcCwjLTRdISAgICAgICAgICAgIEAgcHVzaCBscgorCWJsCV9hcm12NF9BRVNfc2V0X2VuY3J5cHRfa2V5CisJdGVxCXIwLCMwCisJbGRybmUJbHIsW3NwXSwjNCAgICAgICAgICAgICAgQCBwb3AgbHIKKwlibmUJLkxhYnJ0CisKKwlzdG1kYiAgIHNwISx7cjQtcjEyfQorCisJbGRyCXIxMixbcjIsIzI0MF0JQCBBRVNfc2V0X2VuY3J5cHRfa2V5IHByZXNlcnZlcyByMiwKKwltb3YJcjExLHIyCQkJQCB3aGljaCBpcyBBRVNfS0VZICprZXkKKwltb3YJcjcscjIKKwlhZGQJcjgscjIscjEyLGxzbCM0CisKKy5MaW52OglsZHIJcjAsW3I3XQorCWxkcglyMSxbcjcsIzRdCisJbGRyCXIyLFtyNywjOF0KKwlsZHIJcjMsW3I3LCMxMl0KKwlsZHIJcjQsW3I4XQorCWxkcglyNSxbcjgsIzRdCisJbGRyCXI2LFtyOCwjOF0KKwlsZHIJcjksW3I4LCMxMl0KKwlzdHIJcjAsW3I4XSwjLTE2CisJc3RyCXIxLFtyOCwjMTYrNF0KKwlzdHIJcjIsW3I4LCMxNis4XQorCXN0cglyMyxbcjgsIzE2KzEyXQorCXN0cglyNCxbcjddLCMxNgorCXN0cglyNSxbcjcsIy0xMl0KKwlzdHIJcjYsW3I3LCMtOF0KKwlzdHIJcjksW3I3LCMtNF0KKwl0ZXEJcjcscjgKKwlibmUJLkxpbnYKKwlsZHIJcjAsW3IxMSwjMTZdIQkJQCBwcmVmZXRjaCB0cDEKKwltb3YJcjcsIzB4ODAKKwltb3YJcjgsIzB4MWIKKwlvcnIJcjcscjcsIzB4ODAwMAorCW9ycglyOCxyOCwjMHgxYjAwCisJb3JyCXI3LHI3LHI3LGxzbCMxNgorCW9ycglyOCxyOCxyOCxsc2wjMTYKKwlzdWIJcjEyLHIxMiwjMQorCW12bglyOSxyNworCW1vdglyMTIscjEyLGxzbCMyCUAgKHJvdW5kcy0xKSo0CisKKy5MbWl4OglhbmQJcjQscjAscjcKKwlhbmQJcjEscjAscjkKKwlzdWIJcjQscjQscjQsbHNyIzcKKwlhbmQJcjQscjQscjgKKwllb3IJcjEscjQscjEsbHNsIzEJQCB0cDIKKworCWFuZAlyNCxyMSxyNworCWFuZAlyMixyMSxyOQorCXN1YglyNCxyNCxyNCxsc3IjNworCWFuZAlyNCxyNCxyOAorCWVvcglyMixyNCxyMixsc2wjMQlAIHRwNAorCisJYW5kCXI0LHIyLHI3CisJYW5kCXIzLHIyLHI5CisJc3ViCXI0LHI0LHI0LGxzciM3CisJYW5kCXI0LHI0LHI4CisJZW9yCXIzLHI0LHIzLGxzbCMxCUAgdHA4CisKKwllb3IJcjQscjEscjIKKwllb3IJcjUscjAscjMJCUAgdHA5CisJZW9yCXI0LHI0LHIzCQlAIHRwZQorCWVvcglyNCxyNCxyMSxyb3IjMjQKKwllb3IJcjQscjQscjUscm9yIzI0CUAgXj0gUk9UQVRFKHRwYj10cDledHAyLDgpCisJZW9yCXI0LHI0LHIyLHJvciMxNgorCWVvcglyNCxyNCxyNSxyb3IjMTYJQCBePSBST1RBVEUodHBkPXRwOV50cDQsMTYpCisJZW9yCXI0LHI0LHI1LHJvciM4CUAgXj0gUk9UQVRFKHRwOSwyNCkKKworCWxkcglyMCxbcjExLCM0XQkJQCBwcmVmZXRjaCB0cDEKKwlzdHIJcjQsW3IxMV0sIzQKKwlzdWJzCXIxMixyMTIsIzEKKwlibmUJLkxtaXgKKworCW1vdglyMCwjMAorI2lmIF9fQVJNX0FSQ0hfXz49NQorCWxkbWlhCXNwISx7cjQtcjEyLHBjfQorI2Vsc2UKKwlsZG1pYSAgIHNwISx7cjQtcjEyLGxyfQorCXRzdAlsciwjMQorCW1vdmVxCXBjLGxyCQkJQCBiZSBiaW5hcnkgY29tcGF0aWJsZSB3aXRoIFY0LCB5ZXQKKwkud29yZAkweGUxMmZmZjFlCQkJQCBpbnRlcm9wZXJhYmxlIHdpdGggVGh1bWIgSVNBOi0pCisjZW5kaWYKKy5zaXplCXByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleSwuLXByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleQorCisudHlwZQlBRVNfVGQsJW9iamVjdAorLmFsaWduCTUKK0FFU19UZDoKKy53b3JkCTB4NTFmNGE3NTAsIDB4N2U0MTY1NTMsIDB4MWExN2E0YzMsIDB4M2EyNzVlOTYKKy53b3JkCTB4M2JhYjZiY2IsIDB4MWY5ZDQ1ZjEsIDB4YWNmYTU4YWIsIDB4NGJlMzAzOTMKKy53b3JkCTB4MjAzMGZhNTUsIDB4YWQ3NjZkZjYsIDB4ODhjYzc2OTEsIDB4ZjUwMjRjMjUKKy53b3JkCTB4NGZlNWQ3ZmMsIDB4YzUyYWNiZDcsIDB4MjYzNTQ0ODAsIDB4YjU2MmEzOGYKKy53b3JkCTB4ZGViMTVhNDksIDB4MjViYTFiNjcsIDB4NDVlYTBlOTgsIDB4NWRmZWMwZTEKKy53b3JkCTB4YzMyZjc1MDIsIDB4ODE0Y2YwMTIsIDB4OGQ0Njk3YTMsIDB4NmJkM2Y5YzYKKy53b3JkCTB4MDM4ZjVmZTcsIDB4MTU5MjljOTUsIDB4YmY2ZDdhZWIsIDB4OTU1MjU5ZGEKKy53b3JkCTB4ZDRiZTgzMmQsIDB4NTg3NDIxZDMsIDB4NDllMDY5MjksIDB4OGVjOWM4NDQKKy53b3JkCTB4NzVjMjg5NmEsIDB4ZjQ4ZTc5NzgsIDB4OTk1ODNlNmIsIDB4MjdiOTcxZGQKKy53b3JkCTB4YmVlMTRmYjYsIDB4ZjA4OGFkMTcsIDB4YzkyMGFjNjYsIDB4N2RjZTNhYjQKKy53b3JkCTB4NjNkZjRhMTgsIDB4ZTUxYTMxODIsIDB4OTc1MTMzNjAsIDB4NjI1MzdmNDUKKy53b3JkCTB4YjE2NDc3ZTAsIDB4YmI2YmFlODQsIDB4ZmU4MWEwMWMsIDB4ZjkwODJiOTQKKy53b3JkCTB4NzA0ODY4NTgsIDB4OGY0NWZkMTksIDB4OTRkZTZjODcsIDB4NTI3YmY4YjcKKy53b3JkCTB4YWI3M2QzMjMsIDB4NzI0YjAyZTIsIDB4ZTMxZjhmNTcsIDB4NjY1NWFiMmEKKy53b3JkCTB4YjJlYjI4MDcsIDB4MmZiNWMyMDMsIDB4ODZjNTdiOWEsIDB4ZDMzNzA4YTUKKy53b3JkCTB4MzAyODg3ZjIsIDB4MjNiZmE1YjIsIDB4MDIwMzZhYmEsIDB4ZWQxNjgyNWMKKy53b3JkCTB4OGFjZjFjMmIsIDB4YTc3OWI0OTIsIDB4ZjMwN2YyZjAsIDB4NGU2OWUyYTEKKy53b3JkCTB4NjVkYWY0Y2QsIDB4MDYwNWJlZDUsIDB4ZDEzNDYyMWYsIDB4YzRhNmZlOGEKKy53b3JkCTB4MzQyZTUzOWQsIDB4YTJmMzU1YTAsIDB4MDU4YWUxMzIsIDB4YTRmNmViNzUKKy53b3JkCTB4MGI4M2VjMzksIDB4NDA2MGVmYWEsIDB4NWU3MTlmMDYsIDB4YmQ2ZTEwNTEKKy53b3JkCTB4M2UyMThhZjksIDB4OTZkZDA2M2QsIDB4ZGQzZTA1YWUsIDB4NGRlNmJkNDYKKy53b3JkCTB4OTE1NDhkYjUsIDB4NzFjNDVkMDUsIDB4MDQwNmQ0NmYsIDB4NjA1MDE1ZmYKKy53b3JkCTB4MTk5OGZiMjQsIDB4ZDZiZGU5OTcsIDB4ODk0MDQzY2MsIDB4NjdkOTllNzcKKy53b3JkCTB4YjBlODQyYmQsIDB4MDc4OThiODgsIDB4ZTcxOTViMzgsIDB4NzljOGVlZGIKKy53b3JkCTB4YTE3YzBhNDcsIDB4N2M0MjBmZTksIDB4Zjg4NDFlYzksIDB4MDAwMDAwMDAKKy53b3JkCTB4MDk4MDg2ODMsIDB4MzIyYmVkNDgsIDB4MWUxMTcwYWMsIDB4NmM1YTcyNGUKKy53b3JkCTB4ZmQwZWZmZmIsIDB4MGY4NTM4NTYsIDB4M2RhZWQ1MWUsIDB4MzYyZDM5MjcKKy53b3JkCTB4MGEwZmQ5NjQsIDB4Njg1Y2E2MjEsIDB4OWI1YjU0ZDEsIDB4MjQzNjJlM2EKKy53b3JkCTB4MGMwYTY3YjEsIDB4OTM1N2U3MGYsIDB4YjRlZTk2ZDIsIDB4MWI5YjkxOWUKKy53b3JkCTB4ODBjMGM1NGYsIDB4NjFkYzIwYTIsIDB4NWE3NzRiNjksIDB4MWMxMjFhMTYKKy53b3JkCTB4ZTI5M2JhMGEsIDB4YzBhMDJhZTUsIDB4M2MyMmUwNDMsIDB4MTIxYjE3MWQKKy53b3JkCTB4MGUwOTBkMGIsIDB4ZjI4YmM3YWQsIDB4MmRiNmE4YjksIDB4MTQxZWE5YzgKKy53b3JkCTB4NTdmMTE5ODUsIDB4YWY3NTA3NGMsIDB4ZWU5OWRkYmIsIDB4YTM3ZjYwZmQKKy53b3JkCTB4ZjcwMTI2OWYsIDB4NWM3MmY1YmMsIDB4NDQ2NjNiYzUsIDB4NWJmYjdlMzQKKy53b3JkCTB4OGI0MzI5NzYsIDB4Y2IyM2M2ZGMsIDB4YjZlZGZjNjgsIDB4YjhlNGYxNjMKKy53b3JkCTB4ZDczMWRjY2EsIDB4NDI2Mzg1MTAsIDB4MTM5NzIyNDAsIDB4ODRjNjExMjAKKy53b3JkCTB4ODU0YTI0N2QsIDB4ZDJiYjNkZjgsIDB4YWVmOTMyMTEsIDB4YzcyOWExNmQKKy53b3JkCTB4MWQ5ZTJmNGIsIDB4ZGNiMjMwZjMsIDB4MGQ4NjUyZWMsIDB4NzdjMWUzZDAKKy53b3JkCTB4MmJiMzE2NmMsIDB4YTk3MGI5OTksIDB4MTE5NDQ4ZmEsIDB4NDdlOTY0MjIKKy53b3JkCTB4YThmYzhjYzQsIDB4YTBmMDNmMWEsIDB4NTY3ZDJjZDgsIDB4MjIzMzkwZWYKKy53b3JkCTB4ODc0OTRlYzcsIDB4ZDkzOGQxYzEsIDB4OGNjYWEyZmUsIDB4OThkNDBiMzYKKy53b3JkCTB4YTZmNTgxY2YsIDB4YTU3YWRlMjgsIDB4ZGFiNzhlMjYsIDB4M2ZhZGJmYTQKKy53b3JkCTB4MmMzYTlkZTQsIDB4NTA3ODkyMGQsIDB4NmE1ZmNjOWIsIDB4NTQ3ZTQ2NjIKKy53b3JkCTB4ZjY4ZDEzYzIsIDB4OTBkOGI4ZTgsIDB4MmUzOWY3NWUsIDB4ODJjM2FmZjUKKy53b3JkCTB4OWY1ZDgwYmUsIDB4NjlkMDkzN2MsIDB4NmZkNTJkYTksIDB4Y2YyNTEyYjMKKy53b3JkCTB4YzhhYzk5M2IsIDB4MTAxODdkYTcsIDB4ZTg5YzYzNmUsIDB4ZGIzYmJiN2IKKy53b3JkCTB4Y2QyNjc4MDksIDB4NmU1OTE4ZjQsIDB4ZWM5YWI3MDEsIDB4ODM0ZjlhYTgKKy53b3JkCTB4ZTY5NTZlNjUsIDB4YWFmZmU2N2UsIDB4MjFiY2NmMDgsIDB4ZWYxNWU4ZTYKKy53b3JkCTB4YmFlNzliZDksIDB4NGE2ZjM2Y2UsIDB4ZWE5ZjA5ZDQsIDB4MjliMDdjZDYKKy53b3JkCTB4MzFhNGIyYWYsIDB4MmEzZjIzMzEsIDB4YzZhNTk0MzAsIDB4MzVhMjY2YzAKKy53b3JkCTB4NzQ0ZWJjMzcsIDB4ZmM4MmNhYTYsIDB4ZTA5MGQwYjAsIDB4MzNhN2Q4MTUKKy53b3JkCTB4ZjEwNDk4NGEsIDB4NDFlY2RhZjcsIDB4N2ZjZDUwMGUsIDB4MTc5MWY2MmYKKy53b3JkCTB4NzY0ZGQ2OGQsIDB4NDNlZmIwNGQsIDB4Y2NhYTRkNTQsIDB4ZTQ5NjA0ZGYKKy53b3JkCTB4OWVkMWI1ZTMsIDB4NGM2YTg4MWIsIDB4YzEyYzFmYjgsIDB4NDY2NTUxN2YKKy53b3JkCTB4OWQ1ZWVhMDQsIDB4MDE4YzM1NWQsIDB4ZmE4Nzc0NzMsIDB4ZmIwYjQxMmUKKy53b3JkCTB4YjM2NzFkNWEsIDB4OTJkYmQyNTIsIDB4ZTkxMDU2MzMsIDB4NmRkNjQ3MTMKKy53b3JkCTB4OWFkNzYxOGMsIDB4MzdhMTBjN2EsIDB4NTlmODE0OGUsIDB4ZWIxMzNjODkKKy53b3JkCTB4Y2VhOTI3ZWUsIDB4Yjc2MWM5MzUsIDB4ZTExY2U1ZWQsIDB4N2E0N2IxM2MKKy53b3JkCTB4OWNkMmRmNTksIDB4NTVmMjczM2YsIDB4MTgxNGNlNzksIDB4NzNjNzM3YmYKKy53b3JkCTB4NTNmN2NkZWEsIDB4NWZmZGFhNWIsIDB4ZGYzZDZmMTQsIDB4Nzg0NGRiODYKKy53b3JkCTB4Y2FhZmYzODEsIDB4Yjk2OGM0M2UsIDB4MzgyNDM0MmMsIDB4YzJhMzQwNWYKKy53b3JkCTB4MTYxZGMzNzIsIDB4YmNlMjI1MGMsIDB4MjgzYzQ5OGIsIDB4ZmYwZDk1NDEKKy53b3JkCTB4MzlhODAxNzEsIDB4MDgwY2IzZGUsIDB4ZDhiNGU0OWMsIDB4NjQ1NmMxOTAKKy53b3JkCTB4N2JjYjg0NjEsIDB4ZDUzMmI2NzAsIDB4NDg2YzVjNzQsIDB4ZDBiODU3NDIKK0AgVGQ0WzI1Nl0KKy5ieXRlCTB4NTIsIDB4MDksIDB4NmEsIDB4ZDUsIDB4MzAsIDB4MzYsIDB4YTUsIDB4MzgKKy5ieXRlCTB4YmYsIDB4NDAsIDB4YTMsIDB4OWUsIDB4ODEsIDB4ZjMsIDB4ZDcsIDB4ZmIKKy5ieXRlCTB4N2MsIDB4ZTMsIDB4MzksIDB4ODIsIDB4OWIsIDB4MmYsIDB4ZmYsIDB4ODcKKy5ieXRlCTB4MzQsIDB4OGUsIDB4NDMsIDB4NDQsIDB4YzQsIDB4ZGUsIDB4ZTksIDB4Y2IKKy5ieXRlCTB4NTQsIDB4N2IsIDB4OTQsIDB4MzIsIDB4YTYsIDB4YzIsIDB4MjMsIDB4M2QKKy5ieXRlCTB4ZWUsIDB4NGMsIDB4OTUsIDB4MGIsIDB4NDIsIDB4ZmEsIDB4YzMsIDB4NGUKKy5ieXRlCTB4MDgsIDB4MmUsIDB4YTEsIDB4NjYsIDB4MjgsIDB4ZDksIDB4MjQsIDB4YjIKKy5ieXRlCTB4NzYsIDB4NWIsIDB4YTIsIDB4NDksIDB4NmQsIDB4OGIsIDB4ZDEsIDB4MjUKKy5ieXRlCTB4NzIsIDB4ZjgsIDB4ZjYsIDB4NjQsIDB4ODYsIDB4NjgsIDB4OTgsIDB4MTYKKy5ieXRlCTB4ZDQsIDB4YTQsIDB4NWMsIDB4Y2MsIDB4NWQsIDB4NjUsIDB4YjYsIDB4OTIKKy5ieXRlCTB4NmMsIDB4NzAsIDB4NDgsIDB4NTAsIDB4ZmQsIDB4ZWQsIDB4YjksIDB4ZGEKKy5ieXRlCTB4NWUsIDB4MTUsIDB4NDYsIDB4NTcsIDB4YTcsIDB4OGQsIDB4OWQsIDB4ODQKKy5ieXRlCTB4OTAsIDB4ZDgsIDB4YWIsIDB4MDAsIDB4OGMsIDB4YmMsIDB4ZDMsIDB4MGEKKy5ieXRlCTB4ZjcsIDB4ZTQsIDB4NTgsIDB4MDUsIDB4YjgsIDB4YjMsIDB4NDUsIDB4MDYKKy5ieXRlCTB4ZDAsIDB4MmMsIDB4MWUsIDB4OGYsIDB4Y2EsIDB4M2YsIDB4MGYsIDB4MDIKKy5ieXRlCTB4YzEsIDB4YWYsIDB4YmQsIDB4MDMsIDB4MDEsIDB4MTMsIDB4OGEsIDB4NmIKKy5ieXRlCTB4M2EsIDB4OTEsIDB4MTEsIDB4NDEsIDB4NGYsIDB4NjcsIDB4ZGMsIDB4ZWEKKy5ieXRlCTB4OTcsIDB4ZjIsIDB4Y2YsIDB4Y2UsIDB4ZjAsIDB4YjQsIDB4ZTYsIDB4NzMKKy5ieXRlCTB4OTYsIDB4YWMsIDB4NzQsIDB4MjIsIDB4ZTcsIDB4YWQsIDB4MzUsIDB4ODUKKy5ieXRlCTB4ZTIsIDB4ZjksIDB4MzcsIDB4ZTgsIDB4MWMsIDB4NzUsIDB4ZGYsIDB4NmUKKy5ieXRlCTB4NDcsIDB4ZjEsIDB4MWEsIDB4NzEsIDB4MWQsIDB4MjksIDB4YzUsIDB4ODkKKy5ieXRlCTB4NmYsIDB4YjcsIDB4NjIsIDB4MGUsIDB4YWEsIDB4MTgsIDB4YmUsIDB4MWIKKy5ieXRlCTB4ZmMsIDB4NTYsIDB4M2UsIDB4NGIsIDB4YzYsIDB4ZDIsIDB4NzksIDB4MjAKKy5ieXRlCTB4OWEsIDB4ZGIsIDB4YzAsIDB4ZmUsIDB4NzgsIDB4Y2QsIDB4NWEsIDB4ZjQKKy5ieXRlCTB4MWYsIDB4ZGQsIDB4YTgsIDB4MzMsIDB4ODgsIDB4MDcsIDB4YzcsIDB4MzEKKy5ieXRlCTB4YjEsIDB4MTIsIDB4MTAsIDB4NTksIDB4MjcsIDB4ODAsIDB4ZWMsIDB4NWYKKy5ieXRlCTB4NjAsIDB4NTEsIDB4N2YsIDB4YTksIDB4MTksIDB4YjUsIDB4NGEsIDB4MGQKKy5ieXRlCTB4MmQsIDB4ZTUsIDB4N2EsIDB4OWYsIDB4OTMsIDB4YzksIDB4OWMsIDB4ZWYKKy5ieXRlCTB4YTAsIDB4ZTAsIDB4M2IsIDB4NGQsIDB4YWUsIDB4MmEsIDB4ZjUsIDB4YjAKKy5ieXRlCTB4YzgsIDB4ZWIsIDB4YmIsIDB4M2MsIDB4ODMsIDB4NTMsIDB4OTksIDB4NjEKKy5ieXRlCTB4MTcsIDB4MmIsIDB4MDQsIDB4N2UsIDB4YmEsIDB4NzcsIDB4ZDYsIDB4MjYKKy5ieXRlCTB4ZTEsIDB4NjksIDB4MTQsIDB4NjMsIDB4NTUsIDB4MjEsIDB4MGMsIDB4N2QKKy5zaXplCUFFU19UZCwuLUFFU19UZAorCitAIHZvaWQgQUVTX2RlY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGNoYXIgKm91dCwKK0AgCQkgY29uc3QgQUVTX0tFWSAqa2V5KSB7CisuZ2xvYmFsIEFFU19kZWNyeXB0CisudHlwZSAgIEFFU19kZWNyeXB0LCVmdW5jdGlvbgorLmFsaWduCTUKK0FFU19kZWNyeXB0OgorCXN1YglyMyxwYywjOAkJQCBBRVNfZGVjcnlwdAorCXN0bWRiICAgc3AhLHtyMSxyNC1yMTIsbHJ9CisJbW92CXIxMixyMAkJQCBpbnAKKwltb3YJcjExLHIyCisJc3ViCXIxMCxyMywjQUVTX2RlY3J5cHQtQUVTX1RkCQlAIFRkCisjaWYgX19BUk1fQVJDSF9fPDcKKwlsZHJiCXIwLFtyMTIsIzNdCUAgbG9hZCBpbnB1dCBkYXRhIGluIGVuZGlhbi1uZXV0cmFsCisJbGRyYglyNCxbcjEyLCMyXQlAIG1hbm5lci4uLgorCWxkcmIJcjUsW3IxMiwjMV0KKwlsZHJiCXI2LFtyMTIsIzBdCisJb3JyCXIwLHIwLHI0LGxzbCM4CisJbGRyYglyMSxbcjEyLCM3XQorCW9ycglyMCxyMCxyNSxsc2wjMTYKKwlsZHJiCXI0LFtyMTIsIzZdCisJb3JyCXIwLHIwLHI2LGxzbCMyNAorCWxkcmIJcjUsW3IxMiwjNV0KKwlsZHJiCXI2LFtyMTIsIzRdCisJb3JyCXIxLHIxLHI0LGxzbCM4CisJbGRyYglyMixbcjEyLCMxMV0KKwlvcnIJcjEscjEscjUsbHNsIzE2CisJbGRyYglyNCxbcjEyLCMxMF0KKwlvcnIJcjEscjEscjYsbHNsIzI0CisJbGRyYglyNSxbcjEyLCM5XQorCWxkcmIJcjYsW3IxMiwjOF0KKwlvcnIJcjIscjIscjQsbHNsIzgKKwlsZHJiCXIzLFtyMTIsIzE1XQorCW9ycglyMixyMixyNSxsc2wjMTYKKwlsZHJiCXI0LFtyMTIsIzE0XQorCW9ycglyMixyMixyNixsc2wjMjQKKwlsZHJiCXI1LFtyMTIsIzEzXQorCWxkcmIJcjYsW3IxMiwjMTJdCisJb3JyCXIzLHIzLHI0LGxzbCM4CisJb3JyCXIzLHIzLHI1LGxzbCMxNgorCW9ycglyMyxyMyxyNixsc2wjMjQKKyNlbHNlCisJbGRyCXIwLFtyMTIsIzBdCisJbGRyCXIxLFtyMTIsIzRdCisJbGRyCXIyLFtyMTIsIzhdCisJbGRyCXIzLFtyMTIsIzEyXQorI2lmZGVmIF9fQVJNRUxfXworCXJldglyMCxyMAorCXJldglyMSxyMQorCXJldglyMixyMgorCXJldglyMyxyMworI2VuZGlmCisjZW5kaWYKKwlibAlfYXJtdjRfQUVTX2RlY3J5cHQKKworCWxkcglyMTIsW3NwXSwjNAkJQCBwb3Agb3V0CisjaWYgX19BUk1fQVJDSF9fPj03CisjaWZkZWYgX19BUk1FTF9fCisJcmV2CXIwLHIwCisJcmV2CXIxLHIxCisJcmV2CXIyLHIyCisJcmV2CXIzLHIzCisjZW5kaWYKKwlzdHIJcjAsW3IxMiwjMF0KKwlzdHIJcjEsW3IxMiwjNF0KKwlzdHIJcjIsW3IxMiwjOF0KKwlzdHIJcjMsW3IxMiwjMTJdCisjZWxzZQorCW1vdglyNCxyMCxsc3IjMjQJCUAgd3JpdGUgb3V0cHV0IGluIGVuZGlhbi1uZXV0cmFsCisJbW92CXI1LHIwLGxzciMxNgkJQCBtYW5uZXIuLi4KKwltb3YJcjYscjAsbHNyIzgKKwlzdHJiCXI0LFtyMTIsIzBdCisJc3RyYglyNSxbcjEyLCMxXQorCW1vdglyNCxyMSxsc3IjMjQKKwlzdHJiCXI2LFtyMTIsIzJdCisJbW92CXI1LHIxLGxzciMxNgorCXN0cmIJcjAsW3IxMiwjM10KKwltb3YJcjYscjEsbHNyIzgKKwlzdHJiCXI0LFtyMTIsIzRdCisJc3RyYglyNSxbcjEyLCM1XQorCW1vdglyNCxyMixsc3IjMjQKKwlzdHJiCXI2LFtyMTIsIzZdCisJbW92CXI1LHIyLGxzciMxNgorCXN0cmIJcjEsW3IxMiwjN10KKwltb3YJcjYscjIsbHNyIzgKKwlzdHJiCXI0LFtyMTIsIzhdCisJc3RyYglyNSxbcjEyLCM5XQorCW1vdglyNCxyMyxsc3IjMjQKKwlzdHJiCXI2LFtyMTIsIzEwXQorCW1vdglyNSxyMyxsc3IjMTYKKwlzdHJiCXIyLFtyMTIsIzExXQorCW1vdglyNixyMyxsc3IjOAorCXN0cmIJcjQsW3IxMiwjMTJdCisJc3RyYglyNSxbcjEyLCMxM10KKwlzdHJiCXI2LFtyMTIsIzE0XQorCXN0cmIJcjMsW3IxMiwjMTVdCisjZW5kaWYKKyNpZiBfX0FSTV9BUkNIX18+PTUKKwlsZG1pYQlzcCEse3I0LXIxMixwY30KKyNlbHNlCisJbGRtaWEgICBzcCEse3I0LXIxMixscn0KKwl0c3QJbHIsIzEKKwltb3ZlcQlwYyxscgkJCUAgYmUgYmluYXJ5IGNvbXBhdGlibGUgd2l0aCBWNCwgeWV0CisJLndvcmQJMHhlMTJmZmYxZQkJCUAgaW50ZXJvcGVyYWJsZSB3aXRoIFRodW1iIElTQTotKQorI2VuZGlmCisuc2l6ZQlBRVNfZGVjcnlwdCwuLUFFU19kZWNyeXB0CisKKy50eXBlICAgX2FybXY0X0FFU19kZWNyeXB0LCVmdW5jdGlvbgorLmFsaWduCTIKK19hcm12NF9BRVNfZGVjcnlwdDoKKwlzdHIJbHIsW3NwLCMtNF0hCQlAIHB1c2ggbHIKKwlsZG1pYQlyMTEhLHtyNC1yN30KKwllb3IJcjAscjAscjQKKwlsZHIJcjEyLFtyMTEsIzI0MC0xNl0KKwllb3IJcjEscjEscjUKKwllb3IJcjIscjIscjYKKwllb3IJcjMscjMscjcKKwlzdWIJcjEyLHIxMiwjMQorCW1vdglsciwjMjU1CisKKwlhbmQJcjcsbHIscjAsbHNyIzE2CisJYW5kCXI4LGxyLHIwLGxzciM4CisJYW5kCXI5LGxyLHIwCisJbW92CXIwLHIwLGxzciMyNAorLkxkZWNfbG9vcDoKKwlsZHIJcjQsW3IxMCxyNyxsc2wjMl0JQCBUZDFbczA+PjE2XQorCWFuZAlyNyxscixyMQkJQCBpMAorCWxkcglyNSxbcjEwLHI4LGxzbCMyXQlAIFRkMltzMD4+OF0KKwlhbmQJcjgsbHIscjEsbHNyIzE2CisJbGRyCXI2LFtyMTAscjksbHNsIzJdCUAgVGQzW3MwPj4wXQorCWFuZAlyOSxscixyMSxsc3IjOAorCWxkcglyMCxbcjEwLHIwLGxzbCMyXQlAIFRkMFtzMD4+MjRdCisJbW92CXIxLHIxLGxzciMyNAorCisJbGRyCXI3LFtyMTAscjcsbHNsIzJdCUAgVGQzW3MxPj4wXQorCWxkcglyOCxbcjEwLHI4LGxzbCMyXQlAIFRkMVtzMT4+MTZdCisJbGRyCXI5LFtyMTAscjksbHNsIzJdCUAgVGQyW3MxPj44XQorCWVvcglyMCxyMCxyNyxyb3IjMjQKKwlsZHIJcjEsW3IxMCxyMSxsc2wjMl0JQCBUZDBbczE+PjI0XQorCWFuZAlyNyxscixyMixsc3IjOAlAIGkwCisJZW9yCXI1LHI4LHI1LHJvciM4CisJYW5kCXI4LGxyLHIyCQlAIGkxCisJZW9yCXI2LHI5LHI2LHJvciM4CisJYW5kCXI5LGxyLHIyLGxzciMxNgorCWxkcglyNyxbcjEwLHI3LGxzbCMyXQlAIFRkMltzMj4+OF0KKwllb3IJcjEscjEscjQscm9yIzgKKwlsZHIJcjgsW3IxMCxyOCxsc2wjMl0JQCBUZDNbczI+PjBdCisJbW92CXIyLHIyLGxzciMyNAorCisJbGRyCXI5LFtyMTAscjksbHNsIzJdCUAgVGQxW3MyPj4xNl0KKwllb3IJcjAscjAscjcscm9yIzE2CisJbGRyCXIyLFtyMTAscjIsbHNsIzJdCUAgVGQwW3MyPj4yNF0KKwlhbmQJcjcsbHIscjMsbHNyIzE2CUAgaTAKKwllb3IJcjEscjEscjgscm9yIzI0CisJYW5kCXI4LGxyLHIzLGxzciM4CUAgaTEKKwllb3IJcjYscjkscjYscm9yIzgKKwlhbmQJcjksbHIscjMJCUAgaTIKKwlsZHIJcjcsW3IxMCxyNyxsc2wjMl0JQCBUZDFbczM+PjE2XQorCWVvcglyMixyMixyNSxyb3IjOAorCWxkcglyOCxbcjEwLHI4LGxzbCMyXQlAIFRkMltzMz4+OF0KKwltb3YJcjMscjMsbHNyIzI0CisKKwlsZHIJcjksW3IxMCxyOSxsc2wjMl0JQCBUZDNbczM+PjBdCisJZW9yCXIwLHIwLHI3LHJvciM4CisJbGRyCXI3LFtyMTFdLCMxNgorCWVvcglyMSxyMSxyOCxyb3IjMTYKKwlsZHIJcjMsW3IxMCxyMyxsc2wjMl0JQCBUZDBbczM+PjI0XQorCWVvcglyMixyMixyOSxyb3IjMjQKKworCWxkcglyNCxbcjExLCMtMTJdCisJZW9yCXIwLHIwLHI3CisJbGRyCXI1LFtyMTEsIy04XQorCWVvcglyMyxyMyxyNixyb3IjOAorCWxkcglyNixbcjExLCMtNF0KKwlhbmQJcjcsbHIscjAsbHNyIzE2CisJZW9yCXIxLHIxLHI0CisJYW5kCXI4LGxyLHIwLGxzciM4CisJZW9yCXIyLHIyLHI1CisJYW5kCXI5LGxyLHIwCisJZW9yCXIzLHIzLHI2CisJbW92CXIwLHIwLGxzciMyNAorCisJc3VicwlyMTIscjEyLCMxCisJYm5lCS5MZGVjX2xvb3AKKworCWFkZAlyMTAscjEwLCMxMDI0CisKKwlsZHIJcjUsW3IxMCwjMF0JCUAgcHJlZmV0Y2ggVGQ0CisJbGRyCXI2LFtyMTAsIzMyXQorCWxkcglyNCxbcjEwLCM2NF0KKwlsZHIJcjUsW3IxMCwjOTZdCisJbGRyCXI2LFtyMTAsIzEyOF0KKwlsZHIJcjQsW3IxMCwjMTYwXQorCWxkcglyNSxbcjEwLCMxOTJdCisJbGRyCXI2LFtyMTAsIzIyNF0KKworCWxkcmIJcjAsW3IxMCxyMF0JCUAgVGQ0W3MwPj4yNF0KKwlsZHJiCXI0LFtyMTAscjddCQlAIFRkNFtzMD4+MTZdCisJYW5kCXI3LGxyLHIxCQlAIGkwCisJbGRyYglyNSxbcjEwLHI4XQkJQCBUZDRbczA+PjhdCisJYW5kCXI4LGxyLHIxLGxzciMxNgorCWxkcmIJcjYsW3IxMCxyOV0JCUAgVGQ0W3MwPj4wXQorCWFuZAlyOSxscixyMSxsc3IjOAorCisJbGRyYglyNyxbcjEwLHI3XQkJQCBUZDRbczE+PjBdCisJbGRyYglyMSxbcjEwLHIxLGxzciMyNF0JQCBUZDRbczE+PjI0XQorCWxkcmIJcjgsW3IxMCxyOF0JCUAgVGQ0W3MxPj4xNl0KKwllb3IJcjAscjcscjAsbHNsIzI0CisJbGRyYglyOSxbcjEwLHI5XQkJQCBUZDRbczE+PjhdCisJZW9yCXIxLHI0LHIxLGxzbCM4CisJYW5kCXI3LGxyLHIyLGxzciM4CUAgaTAKKwllb3IJcjUscjUscjgsbHNsIzgKKwlhbmQJcjgsbHIscjIJCUAgaTEKKwlsZHJiCXI3LFtyMTAscjddCQlAIFRkNFtzMj4+OF0KKwllb3IJcjYscjYscjksbHNsIzgKKwlsZHJiCXI4LFtyMTAscjhdCQlAIFRkNFtzMj4+MF0KKwlhbmQJcjksbHIscjIsbHNyIzE2CisKKwlsZHJiCXIyLFtyMTAscjIsbHNyIzI0XQlAIFRkNFtzMj4+MjRdCisJZW9yCXIwLHIwLHI3LGxzbCM4CisJbGRyYglyOSxbcjEwLHI5XQkJQCBUZDRbczI+PjE2XQorCWVvcglyMSxyOCxyMSxsc2wjMTYKKwlhbmQJcjcsbHIscjMsbHNyIzE2CUAgaTAKKwllb3IJcjIscjUscjIsbHNsIzE2CisJYW5kCXI4LGxyLHIzLGxzciM4CUAgaTEKKwlsZHJiCXI3LFtyMTAscjddCQlAIFRkNFtzMz4+MTZdCisJZW9yCXI2LHI2LHI5LGxzbCMxNgorCWxkcmIJcjgsW3IxMCxyOF0JCUAgVGQ0W3MzPj44XQorCWFuZAlyOSxscixyMwkJQCBpMgorCisJbGRyYglyOSxbcjEwLHI5XQkJQCBUZDRbczM+PjBdCisJbGRyYglyMyxbcjEwLHIzLGxzciMyNF0JQCBUZDRbczM+PjI0XQorCWVvcglyMCxyMCxyNyxsc2wjMTYKKwlsZHIJcjcsW3IxMSwjMF0KKwllb3IJcjEscjEscjgsbHNsIzgKKwlsZHIJcjQsW3IxMSwjNF0KKwllb3IJcjIscjkscjIsbHNsIzgKKwlsZHIJcjUsW3IxMSwjOF0KKwllb3IJcjMscjYscjMsbHNsIzI0CisJbGRyCXI2LFtyMTEsIzEyXQorCisJZW9yCXIwLHIwLHI3CisJZW9yCXIxLHIxLHI0CisJZW9yCXIyLHIyLHI1CisJZW9yCXIzLHIzLHI2CisKKwlzdWIJcjEwLHIxMCwjMTAyNAorCWxkcglwYyxbc3BdLCM0CQlAIHBvcCBhbmQgcmV0dXJuCisuc2l6ZQlfYXJtdjRfQUVTX2RlY3J5cHQsLi1fYXJtdjRfQUVTX2RlY3J5cHQKKy5hc2NpegkiQUVTIGZvciBBUk12NCwgQ1JZUFRPR0FNUyBieSA8YXBwcm9Ab3BlbnNzbC5vcmc+IgorLmFsaWduCTIKZGlmZiAtLWdpdCBhL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYXNtL2Flcy1pYTY0LlMgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS9hZXMtaWE2NC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNmM0YzMKLS0tIC9kZXYvbnVsbAorKysgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS9hZXMtaWE2NC5TCkBAIC0wLDAgKzEsMTEyMyBAQAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9AZnkuY2hhbG1lcnMuc2U+IGZvciB0aGUgT3BlblNTTAorLy8gcHJvamVjdC4gUmlnaHRzIGZvciByZWRpc3RyaWJ1dGlvbiBhbmQgdXNhZ2UgaW4gc291cmNlIGFuZCBiaW5hcnkKKy8vIGZvcm1zIGFyZSBncmFudGVkIGFjY29yZGluZyB0byB0aGUgT3BlblNTTCBsaWNlbnNlLgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vCisvLyBXaGF0J3Mgd3Jvbmcgd2l0aCBjb21waWxlciBnZW5lcmF0ZWQgY29kZT8gQ29tcGlsZXIgbmV2ZXIgdXNlcworLy8gdmFyaWFibGUgJ3Nocicgd2hpY2ggaXMgcGFpcmFibGUgd2l0aCAnZXh0cicvJ2RlcCcgaW5zdHJ1Y3Rpb25zLgorLy8gVGhlbiBpdCB1c2VzICd6eHQnIHdoaWNoIGlzIGFuIEktdHlwZSwgYnV0IGNhbiBiZSByZXBsYWNlZCB3aXRoCisvLyAnYW5kJyB3aGljaCBpbiB0dXJuIGNhbiBiZSBhc3NpZ25lZCB0byBNLXBvcnQgW3RoZXJlJ3JlIGRvdWJsZSBhcworLy8gbXVjaCBNLXBvcnRzIGFzIHRoZXJlJ3JlIEktcG9ydHMgb24gSXRhbml1bSAyXS4gQnkgc2FjcmlmaWNpbmcgZmV3CisvLyByZWdpc3RlcnMgZm9yIHNtYWxsIGNvbnN0YW50cyAoMjU1LCAyNCBhbmQgMTYpIHRvIGJlIHVzZWQgd2l0aAorLy8gJ3NocicgYW5kICdhbmQnIGluc3RydWN0aW9ucyBJIGNhbiBhY2hpZXZlIGJldHRlciBJTFAsIEludHJ1Y3Rpb24KKy8vIExldmVsIFBhcmFsbGVsaXNtLCBhbmQgcGVyZm9ybWFuY2UuIFRoaXMgY29kZSBvdXRwZXJmb3JtcyBHQ0MgMy4zCisvLyBnZW5lcmF0ZWQgY29kZSBieSBvdmVyIGZhY3RvciBvZiAyICh0d28pLCBHQ0MgMy40IC0gYnkgNzAlIGFuZAorLy8gSFAgQyAtIGJ5IDQwJS4gTWVhc3VyZWQgYmVzdC1jYXNlIHNjZW5hcmlvLCBpLmUuIGFsaWduZWQKKy8vIGJpZy1lbmRpYW4gaW5wdXQsIEVDQiB0aW1pbmcgb24gSXRhbml1bSAyIGlzICgxOCArIDEzKnJvdW5kcykKKy8vIHRpY2tzIHBlciBibG9jaywgb3IgOS4yNSBDUFUgY3ljbGVzIHBlciBieXRlIGZvciAxMjggYml0IGtleS4KKworLy8gVmVyc2lvbiAxLjIgbWl0aWdhdGVzIHRoZSBoYXphcmQgb2YgY2FjaGUtdGltaW5nIGF0dGFja3MgYnkKKy8vIGEpIGNvbXByZXNzaW5nIFMtYm94ZXMgZnJvbSA4S0IgdG8gMktCKzI1NkIsIGIpIHNjaGVkdWxpbmcKKy8vIHJlZmVyZW5jZXMgdG8gUy1ib3hlcyBmb3IgTDIgY2FjaGUgbGF0ZW5jeSwgYykgcHJlZmV0Y2hpbmcgVFtlZF00CisvLyBwcmlvciBsYXN0IHJvdW5kLiBBcyByZXN1bHQgcGVyZm9ybWFuY2UgZHJvcHBlZCB0byAoMjYgKyAxNSpyb3VuZHMpCisvLyB0aWNrcyBwZXIgYmxvY2sgb3IgMTEgY3ljbGVzIHBlciBieXRlIHByb2Nlc3NlZCB3aXRoIDEyOC1iaXQga2V5LgorLy8gVGhpcyBpcyB+MTYlIGRldGVyaW9yYXRpb24uIEZvciByZWZlcmVuY2UgSXRhbml1bSAyIEwxIGNhY2hlIGhhcworLy8gNjQgYnl0ZXMgbGluZSBzaXplIGFuZCBMMiAtIDEyOCBieXRlcy4uLgorCisuaWRlbnQJImFlcy1pYTY0LlMsIHZlcnNpb24gMS4yIgorLmlkZW50CSJJQS02NCBJU0EgYXJ0d29yayBieSBBbmR5IFBvbHlha292IDxhcHByb0BmeS5jaGFsbWVycy5zZT4iCisuZXhwbGljaXQKKy50ZXh0CisKK3JrMD1yODsgICAgIHJrMT1yOTsKKworcGZzc2F2ZT1yMjsKK2xjc2F2ZT1yMTA7CitwcnNhdmU9cjM7CittYXNrZmY9cjExOwordHdlbnR5ND1yMTQ7CitzaXh0ZWVuPXIxNTsKKwordGUwMD1yMTY7ICAgdGUxMT1yMTc7ICAgdGUyMj1yMTg7ICAgdGUzMz1yMTk7Cit0ZTAxPXIyMDsgICB0ZTEyPXIyMTsgICB0ZTIzPXIyMjsgICB0ZTMwPXIyMzsKK3RlMDI9cjI0OyAgIHRlMTM9cjI1OyAgIHRlMjA9cjI2OyAgIHRlMzE9cjI3OwordGUwMz1yMjg7ICAgdGUxMD1yMjk7ICAgdGUyMT1yMzA7ICAgdGUzMj1yMzE7CisKKy8vIHRoZXNlIGFyZSByb3RhdGluZy4uLgordDA9cjMyOyAgICAgczA9cjMzOwordDE9cjM0OyAgICAgczE9cjM1OwordDI9cjM2OyAgICAgczI9cjM3OwordDM9cjM4OyAgICAgczM9cjM5OworCit0ZTA9cjQwOyAgICB0ZTE9cjQxOyAgICB0ZTI9cjQyOyAgICB0ZTM9cjQzOworCisjaWYgZGVmaW5lZChfSFBVWF9TT1VSQ0UpICYmICFkZWZpbmVkKF9MUDY0KQorIyBkZWZpbmUgQUREUAlhZGRwNAorI2Vsc2UKKyMgZGVmaW5lIEFERFAJYWRkCisjZW5kaWYKKworLy8gT2Zmc2V0cyBmcm9tIFRlMAorI2RlZmluZSBURTAJMAorI2RlZmluZSBURTIJMgorI2lmIGRlZmluZWQoX0hQVVhfU09VUkNFKSB8fCBkZWZpbmVkKEJfRU5ESUFOKQorI2RlZmluZSBURTEJMworI2RlZmluZSBURTMJMQorI2Vsc2UKKyNkZWZpbmUgVEUxCTEKKyNkZWZpbmUgVEUzCTMKKyNlbmRpZgorCisvLyBUaGlzIGltcGxpZXMgdGhhdCBBRVNfS0VZIGNvbXByaXNlcyAzMi1iaXQga2V5IHNjaGVkdWxlIGVsZW1lbnRzCisvLyBldmVuIG9uIExQNjQgcGxhdGZvcm1zLgorI2lmbmRlZglLU1oKKyMgZGVmaW5lIEtTWgk0CisjIGRlZmluZSBMREtFWQlsZDQKKyNlbmRpZgorCisucHJvYwlfaWE2NF9BRVNfZW5jcnlwdCMKKy8vIElucHV0OglyazAtcmsxCisvLwkJdGUwCisvLwkJdGUzCWFzIEFFU19LRVktPnJvdW5kcyEhIQorLy8JCXMwLXMzCisvLwkJbWFza2ZmLHR3ZW50eTQsc2l4dGVlbgorLy8gT3V0cHV0OglyMTYscjIwLHIyNCxyMjggYXMgczAtczMKKy8vIENsb2JiZXI6CXIxNi1yMzEscmswLXJrMSxyMzItcjQzCisuYWxpZ24JMzIKK19pYTY0X0FFU19lbmNyeXB0OgorCS5wcm9sb2d1ZQorCS5hbHRycAliNgorCS5ib2R5Cit7IC5tbWk7CWFsbG9jCXIxNj1hci5wZnMsMTIsMCwwLDgKKwlMREtFWQl0MD1bcmswXSwyKktTWgorCW1vdglwci5yb3Q9MTw8MTYJfQoreyAubW1pOwlMREtFWQl0MT1bcmsxXSwyKktTWgorCWFkZAl0ZTE9VEUxLHRlMAorCWFkZAl0ZTM9LTMsdGUzCX07OworeyAubWliOwlMREtFWQl0Mj1bcmswXSwyKktTWgorCW1vdglhci5lYz0yCQl9Cit7IC5taWI7CUxES0VZCXQzPVtyazFdLDIqS1NaCisJYWRkCXRlMj1URTIsdGUwCisJYnJwLmxvb3AuaW1wCS5MZV90b3AsLkxlX2VuZC0xNgl9OzsKKworeyAubW1pOwl4b3IJczA9czAsdDAKKwl4b3IJczE9czEsdDEKKwltb3YJYXIubGM9dGUzCX0KK3sgLm1taTsJeG9yCXMyPXMyLHQyCisJeG9yCXMzPXMzLHQzCisJYWRkCXRlMz1URTMsdGUwCX07OworDAorLmFsaWduCTMyCisuTGVfdG9wOgoreyAubW1pOwkocDApCUxES0VZCXQwPVtyazBdLDIqS1NaCQkvLyAwLzA6cmtbMF0KKwkocDApCWFuZAl0ZTMzPXMzLG1hc2tmZgkJLy8gMC8wOnMzJjB4ZmYKKwkocDApCWV4dHIudQl0ZTIyPXMyLDgsOAl9CS8vIDAvMDpzMj4+OCYweGZmCit7IC5tbWk7IChwMCkJTERLRVkJdDE9W3JrMV0sMipLU1oJCS8vIDAvMTpya1sxXQorCShwMCkJYW5kCXRlMzA9czAsbWFza2ZmCQkvLyAwLzE6czAmMHhmZgorCShwMCkJc2hyLnUJdGUwMD1zMCx0d2VudHk0CX07OwkvLyAwLzA6czA+PjI0Cit7IC5tbWk7CShwMCkJTERLRVkJdDI9W3JrMF0sMipLU1oJCS8vIDEvMjpya1syXQorCShwMCkJc2hsYWRkCXRlMzM9dGUzMywzLHRlMwkJLy8gMS8wOnRlMCtzMD4+MjQKKwkocDApCWV4dHIudQl0ZTIzPXMzLDgsOAl9CS8vIDEvMTpzMz4+OCYweGZmCit7IC5tbWk7CShwMCkJTERLRVkJdDM9W3JrMV0sMipLU1oJCS8vIDEvMzpya1szXQorCShwMCkJc2hsYWRkCXRlMzA9dGUzMCwzLHRlMwkJLy8gMS8xOnRlMytzMAorCShwMCkJc2hyLnUJdGUwMT1zMSx0d2VudHk0CX07OwkvLyAxLzE6czE+PjI0Cit7IC5tbWk7CShwMCkJbGQ0CXRlMzM9W3RlMzNdCQkvLyAyLzA6dGUzW3MzJjB4ZmZdCisJKHAwKQlzaGxhZGQJdGUyMj10ZTIyLDMsdGUyCQkvLyAyLzA6dGUyK3MyPj44JjB4ZmYKKwkocDApCWV4dHIudQl0ZTIwPXMwLDgsOAl9CS8vIDIvMjpzMD4+OCYweGZmCit7IC5tbWk7CShwMCkJbGQ0CXRlMzA9W3RlMzBdCQkvLyAyLzE6dGUzW3MwXQorCShwMCkJc2hsYWRkCXRlMjM9dGUyMywzLHRlMgkJLy8gMi8xOnRlMitzMz4+OAorCShwMCkJc2hyLnUJdGUwMj1zMix0d2VudHk0CX07OwkvLyAyLzI6czI+PjI0Cit7IC5tbWk7CShwMCkJbGQ0CXRlMjI9W3RlMjJdCQkvLyAzLzA6dGUyW3MyPj44XQorCShwMCkJc2hsYWRkCXRlMjA9dGUyMCwzLHRlMgkJLy8gMy8yOnRlMitzMD4+OAorCShwMCkJZXh0ci51CXRlMjE9czEsOCw4CX0JLy8gMy8zOnMxPj44JjB4ZmYKK3sgLm1taTsJKHAwKQlsZDQJdGUyMz1bdGUyM10JCS8vIDMvMTp0ZTJbczM+PjhdCisJKHAwKQlzaGxhZGQJdGUwMD10ZTAwLDMsdGUwCQkvLyAzLzA6dGUwK3MwPj4yNAorCShwMCkJc2hyLnUJdGUwMz1zMyx0d2VudHk0CX07OwkvLyAzLzM6czM+PjI0Cit7IC5tbWk7CShwMCkJbGQ0CXRlMjA9W3RlMjBdCQkvLyA0LzI6dGUyW3MwPj44XQorCShwMCkJc2hsYWRkCXRlMjE9dGUyMSwzLHRlMgkJLy8gNC8zOnRlMytzMgorCShwMCkJZXh0ci51CXRlMTE9czEsMTYsOAl9CS8vIDQvMDpzMT4+MTYmMHhmZgoreyAubW1pOwkocDApCWxkNAl0ZTAwPVt0ZTAwXQkJLy8gNC8wOnRlMFtzMD4+MjRdCisJKHAwKQlzaGxhZGQJdGUwMT10ZTAxLDMsdGUwCQkvLyA0LzE6dGUwK3MxPj4yNAorCShwMCkJc2hyLnUJdGUxMz1zMyxzaXh0ZWVuCX07OwkvLyA0LzI6czM+PjE2Cit7IC5tbWk7CShwMCkJbGQ0CXRlMjE9W3RlMjFdCQkvLyA1LzM6dGUyW3MxPj44XQorCShwMCkJc2hsYWRkCXRlMTE9dGUxMSwzLHRlMQkJLy8gNS8wOnRlMStzMT4+MTYKKwkocDApCWV4dHIudQl0ZTEyPXMyLDE2LDgJfQkvLyA1LzE6czI+PjE2JjB4ZmYKK3sgLm1taTsJKHAwKQlsZDQJdGUwMT1bdGUwMV0JCS8vIDUvMTp0ZTBbczE+PjI0XQorCShwMCkJc2hsYWRkCXRlMDI9dGUwMiwzLHRlMAkJLy8gNS8yOnRlMCtzMj4+MjQKKwkocDApCWFuZAl0ZTMxPXMxLG1hc2tmZgl9OzsJLy8gNS8yOnMxJjB4ZmYKK3sgLm1taTsJKHAwKQlsZDQJdGUxMT1bdGUxMV0JCS8vIDYvMDp0ZTFbczE+PjE2XQorCShwMCkJc2hsYWRkCXRlMTI9dGUxMiwzLHRlMQkJLy8gNi8xOnRlMStzMj4+MTYKKwkocDApCWV4dHIudQl0ZTEwPXMwLDE2LDgJfQkvLyA2LzM6czA+PjE2JjB4ZmYKK3sgLm1taTsJKHAwKQlsZDQJdGUwMj1bdGUwMl0JCS8vIDYvMjp0ZTBbczI+PjI0XQorCShwMCkJc2hsYWRkCXRlMDM9dGUwMywzLHRlMAkJLy8gNi8zOnRlMStzMD4+MTYKKwkocDApCWFuZAl0ZTMyPXMyLG1hc2tmZgl9OzsJLy8gNi8zOnMyJjB4ZmYKKworeyAubW1pOwkocDApCWxkNAl0ZTEyPVt0ZTEyXQkJLy8gNy8xOnRlMVtzMj4+MTZdCisJKHAwKQlzaGxhZGQJdGUzMT10ZTMxLDMsdGUzCQkvLyA3LzI6dGUzK3MxJjB4ZmYKKwkocDApCWFuZAl0ZTEzPXRlMTMsbWFza2ZmfQkvLyA3LzI6czM+PjE2JjB4ZmYKK3sgLm1taTsJKHAwKQlsZDQJdGUwMz1bdGUwM10JCS8vIDcvMzp0ZTBbczM+PjI0XQorCShwMCkJc2hsYWRkCXRlMzI9dGUzMiwzLHRlMwkJLy8gNy8zOnRlMytzMgorCShwMCkJeG9yCXQwPXQwLHRlMzMJfTs7CS8vIDcvMDoKK3sgLm1taTsJKHAwKQlsZDQJdGUzMT1bdGUzMV0JCS8vIDgvMjp0ZTNbczFdCisJKHAwKQlzaGxhZGQJdGUxMz10ZTEzLDMsdGUxCQkvLyA4LzI6dGUxK3MzPj4xNgorCShwMCkJeG9yCXQwPXQwLHRlMjIJfQkvLyA4LzA6Cit7IC5tbWk7CShwMCkJbGQ0CXRlMzI9W3RlMzJdCQkvLyA4LzM6dGUzW3MyXQorCShwMCkJc2hsYWRkCXRlMTA9dGUxMCwzLHRlMQkJLy8gOC8zOnRlMStzMD4+MTYKKwkocDApCXhvcgl0MT10MSx0ZTMwCX07OwkvLyA4LzE6Cit7IC5tbWk7CShwMCkJbGQ0CXRlMTM9W3RlMTNdCQkvLyA5LzI6dGUxW3MzPj4xNl0KKwkocDApCWxkNAl0ZTEwPVt0ZTEwXQkJLy8gOS8zOnRlMVtzMD4+MTZdCisJKHAwKQl4b3IJdDA9dDAsdGUwMAl9OzsJLy8gOS8wOgkJIUwyIHNjaGVkdWxpbmcKK3sgLm1taTsJKHAwKQl4b3IJdDE9dDEsdGUyMwkJLy8gMTBbOV0vMToJCisJKHAwKQl4b3IJdDI9dDIsdGUyMAkJLy8gMTBbOV0vMjoKKwkocDApCXhvcgl0Mz10Myx0ZTIxCX07OwkvLyAxMFs5XS8zOgoreyAubW1pOwkocDApCXhvcgl0MD10MCx0ZTExCQkvLyAxMVsxMF0vMDpkb25lIQorCShwMCkJeG9yCXQxPXQxLHRlMDEJCS8vIDExWzEwXS8xOgorCShwMCkJeG9yCXQyPXQyLHRlMDIJfTs7CS8vIDExWzEwXS8yOgkhTDIgc2NoZWR1bGluZworeyAubW1pOwkocDApCXhvcgl0Mz10Myx0ZTAzCQkvLyAxMlsxMF0vMzoKKwkocDE2KQljbXAuZXEJcDAscDE3PXIwLHIwIAl9OzsJLy8gMTJbMTBdL2NsZWFyIChwMTcpCit7IC5tbWk7CShwMCkJeG9yCXQxPXQxLHRlMTIJCS8vIDEzWzExXS8xOmRvbmUhCisJKHAwKQl4b3IJdDI9dDIsdGUzMQkJLy8gMTNbMTFdLzI6CisJKHAwKQl4b3IJdDM9dDMsdGUzMgl9CS8vIDEzWzExXS8zOgoreyAubW1pOwkocDE3KQlhZGQJdGUwPTIwNDgsdGUwCQkvLyAxM1sxMV0vCisJKHAxNykJYWRkCXRlMT0yMDQ4KzY0LVRFMSx0ZTF9OzsJLy8gMTNbMTFdLworeyAubWliOwkocDApCXhvcgl0Mj10Mix0ZTEzCQkvLyAxNFsxMl0vMjpkb25lIQorCShwMTcpCWFkZAl0ZTI9MjA0OCsxMjgtVEUyLHRlMn0JLy8gMTRbMTJdLworeyAubWliOwkocDApCXhvcgl0Mz10Myx0ZTEwCQkvLyAxNFsxMl0vMzpkb25lIQorCShwMTcpCWFkZAl0ZTM9MjA0OCsxOTItVEUzLHRlMwkvLyAxNFsxMl0vCisJYnIuY3RvcC5zcHRrCS5MZV90b3AJCX07OworLkxlX2VuZDoKKwwKKworeyAubW1pOwlsZDgJdGUxMj1bdGUwXQkJLy8gcHJlZmV0Y2ggVGU0CisJbGQ4CXRlMzE9W3RlMV0JfQoreyAubW1pOwlsZDgJdGUxMD1bdGUyXQorCWxkOAl0ZTMyPVt0ZTNdCX0KKworeyAubW1pOwlMREtFWQl0MD1bcmswXSwyKktTWgkJLy8gMC8wOnJrWzBdCisJYW5kCXRlMzM9czMsbWFza2ZmCQkvLyAwLzA6czMmMHhmZgorCWV4dHIudQl0ZTIyPXMyLDgsOAl9CS8vIDAvMDpzMj4+OCYweGZmCit7IC5tbWk7IExES0VZCXQxPVtyazFdLDIqS1NaCQkvLyAwLzE6cmtbMV0KKwlhbmQJdGUzMD1zMCxtYXNrZmYJCS8vIDAvMTpzMCYweGZmCisJc2hyLnUJdGUwMD1zMCx0d2VudHk0CX07OwkvLyAwLzA6czA+PjI0Cit7IC5tbWk7CUxES0VZCXQyPVtyazBdLDIqS1NaCQkvLyAxLzI6cmtbMl0KKwlhZGQJdGUzMz10ZTMzLHRlMAkJLy8gMS8wOnRlMCtzMD4+MjQKKwlleHRyLnUJdGUyMz1zMyw4LDgJfQkvLyAxLzE6czM+PjgmMHhmZgoreyAubW1pOwlMREtFWQl0Mz1bcmsxXSwyKktTWgkJLy8gMS8zOnJrWzNdCisJYWRkCXRlMzA9dGUzMCx0ZTAJCS8vIDEvMTp0ZTArczAKKwlzaHIudQl0ZTAxPXMxLHR3ZW50eTQJfTs7CS8vIDEvMTpzMT4+MjQKK3sgLm1taTsJbGQxCXRlMzM9W3RlMzNdCQkvLyAyLzA6dGUwW3MzJjB4ZmZdCisJYWRkCXRlMjI9dGUyMix0ZTAJCS8vIDIvMDp0ZTArczI+PjgmMHhmZgorCWV4dHIudQl0ZTIwPXMwLDgsOAl9CS8vIDIvMjpzMD4+OCYweGZmCit7IC5tbWk7CWxkMQl0ZTMwPVt0ZTMwXQkJLy8gMi8xOnRlMFtzMF0KKwlhZGQJdGUyMz10ZTIzLHRlMAkJLy8gMi8xOnRlMCtzMz4+OAorCXNoci51CXRlMDI9czIsdHdlbnR5NAl9OzsJLy8gMi8yOnMyPj4yNAoreyAubW1pOwlsZDEJdGUyMj1bdGUyMl0JCS8vIDMvMDp0ZTBbczI+PjhdCisJYWRkCXRlMjA9dGUyMCx0ZTAJCS8vIDMvMjp0ZTArczA+PjgKKwlleHRyLnUJdGUyMT1zMSw4LDgJfQkvLyAzLzM6czE+PjgmMHhmZgoreyAubW1pOwlsZDEJdGUyMz1bdGUyM10JCS8vIDMvMTp0ZTBbczM+PjhdCisJYWRkCXRlMDA9dGUwMCx0ZTAJCS8vIDMvMDp0ZTArczA+PjI0CisJc2hyLnUJdGUwMz1zMyx0d2VudHk0CX07OwkvLyAzLzM6czM+PjI0Cit7IC5tbWk7CWxkMQl0ZTIwPVt0ZTIwXQkJLy8gNC8yOnRlMFtzMD4+OF0KKwlhZGQJdGUyMT10ZTIxLHRlMAkJLy8gNC8zOnRlMCtzMgorCWV4dHIudQl0ZTExPXMxLDE2LDgJfQkvLyA0LzA6czE+PjE2JjB4ZmYKK3sgLm1taTsJbGQxCXRlMDA9W3RlMDBdCQkvLyA0LzA6dGUwW3MwPj4yNF0KKwlhZGQJdGUwMT10ZTAxLHRlMAkJLy8gNC8xOnRlMCtzMT4+MjQKKwlzaHIudQl0ZTEzPXMzLHNpeHRlZW4JfTs7CS8vIDQvMjpzMz4+MTYKK3sgLm1taTsJbGQxCXRlMjE9W3RlMjFdCQkvLyA1LzM6dGUwW3MxPj44XQorCWFkZAl0ZTExPXRlMTEsdGUwCQkvLyA1LzA6dGUwK3MxPj4xNgorCWV4dHIudQl0ZTEyPXMyLDE2LDgJfQkvLyA1LzE6czI+PjE2JjB4ZmYKK3sgLm1taTsJbGQxCXRlMDE9W3RlMDFdCQkvLyA1LzE6dGUwW3MxPj4yNF0KKwlhZGQJdGUwMj10ZTAyLHRlMAkJLy8gNS8yOnRlMCtzMj4+MjQKKwlhbmQJdGUzMT1zMSxtYXNrZmYJfTs7CS8vIDUvMjpzMSYweGZmCit7IC5tbWk7CWxkMQl0ZTExPVt0ZTExXQkJLy8gNi8wOnRlMFtzMT4+MTZdCisJYWRkCXRlMTI9dGUxMix0ZTAJCS8vIDYvMTp0ZTArczI+PjE2CisJZXh0ci51CXRlMTA9czAsMTYsOAl9CS8vIDYvMzpzMD4+MTYmMHhmZgoreyAubW1pOwlsZDEJdGUwMj1bdGUwMl0JCS8vIDYvMjp0ZTBbczI+PjI0XQorCWFkZAl0ZTAzPXRlMDMsdGUwCQkvLyA2LzM6dGUwK3MwPj4xNgorCWFuZAl0ZTMyPXMyLG1hc2tmZgl9OzsJLy8gNi8zOnMyJjB4ZmYKKworeyAubW1pOwlsZDEJdGUxMj1bdGUxMl0JCS8vIDcvMTp0ZTBbczI+PjE2XQorCWFkZAl0ZTMxPXRlMzEsdGUwCQkvLyA3LzI6dGUwK3MxJjB4ZmYKKwlkZXAJdGUzMz10ZTIyLHRlMzMsOCw4fQkvLyA3LzA6Cit7IC5tbWk7CWxkMQl0ZTAzPVt0ZTAzXQkJLy8gNy8zOnRlMFtzMz4+MjRdCisJYWRkCXRlMzI9dGUzMix0ZTAJCS8vIDcvMzp0ZTArczIKKwlhbmQJdGUxMz10ZTEzLG1hc2tmZn07OwkvLyA3LzI6czM+PjE2JjB4ZmYKK3sgLm1taTsJbGQxCXRlMzE9W3RlMzFdCQkvLyA4LzI6dGUwW3MxXQorCWFkZAl0ZTEzPXRlMTMsdGUwCQkvLyA4LzI6dGUwK3MzPj4xNgorCWRlcAl0ZTMwPXRlMjMsdGUzMCw4LDh9CS8vIDgvMToKK3sgLm1taTsJbGQxCXRlMzI9W3RlMzJdCQkvLyA4LzM6dGUwW3MyXQorCWFkZAl0ZTEwPXRlMTAsdGUwCQkvLyA4LzM6dGUwK3MwPj4xNgorCXNobAl0ZTAwPXRlMDAsdHdlbnR5NH07OwkvLyA4LzA6Cit7IC5taWk7CWxkMQl0ZTEzPVt0ZTEzXQkJLy8gOS8yOnRlMFtzMz4+MTZdCisJZGVwCXRlMzM9dGUxMSx0ZTMzLDE2LDgJLy8gOS8wOgorCXNobAl0ZTAxPXRlMDEsdHdlbnR5NH07OwkvLyA5LzE6Cit7IC5taWk7CWxkMQl0ZTEwPVt0ZTEwXQkJLy8gMTAvMzp0ZTBbczA+PjE2XQorCWRlcAl0ZTMxPXRlMjAsdGUzMSw4LDgJLy8gMTAvMjoKKwlzaGwJdGUwMj10ZTAyLHR3ZW50eTR9OzsJLy8gMTAvMjoKK3sgLm1paTsJeG9yCXQwPXQwLHRlMzMJCS8vIDExLzA6CisJZGVwCXRlMzI9dGUyMSx0ZTMyLDgsOAkvLyAxMS8zOgorCXNobAl0ZTEyPXRlMTIsc2l4dGVlbn07OwkvLyAxMS8xOgoreyAubWlpOwl4b3IJcjE2PXQwLHRlMDAJCS8vIDEyLzA6ZG9uZSEKKwlkZXAJdGUzMT10ZTEzLHRlMzEsMTYsOAkvLyAxMi8yOgorCXNobAl0ZTAzPXRlMDMsdHdlbnR5NH07OwkvLyAxMi8zOgoreyAubW1pOwl4b3IJdDE9dDEsdGUwMQkJLy8gMTMvMToKKwl4b3IJdDI9dDIsdGUwMgkJLy8gMTMvMjoKKwlkZXAJdGUzMj10ZTEwLHRlMzIsMTYsOH07OwkvLyAxMy8zOgoreyAubW1pOwl4b3IJdDE9dDEsdGUzMAkJLy8gMTQvMToKKwl4b3IJcjI0PXQyLHRlMzEJCS8vIDE0LzI6ZG9uZSEKKwl4b3IJdDM9dDMsdGUzMgl9OzsJLy8gMTQvMzoKK3sgLm1pYjsJeG9yCXIyMD10MSx0ZTEyCQkvLyAxNS8xOmRvbmUhCisJeG9yCXIyOD10Myx0ZTAzCQkvLyAxNS8zOmRvbmUhCisJYnIucmV0LnNwdGsJYjYJfTs7CisuZW5kcAlfaWE2NF9BRVNfZW5jcnlwdCMKKworLy8gdm9pZCBBRVNfZW5jcnlwdCAoY29uc3Qgdm9pZCAqaW4sdm9pZCAqb3V0LGNvbnN0IEFFU19LRVkgKmtleSk7CisuZ2xvYmFsCUFFU19lbmNyeXB0IworLnByb2MJQUVTX2VuY3J5cHQjCisuYWxpZ24JMzIKK0FFU19lbmNyeXB0OgorCS5wcm9sb2d1ZQorCS5zYXZlCWFyLnBmcyxwZnNzYXZlCit7IC5tbWk7CWFsbG9jCXBmc3NhdmU9YXIucGZzLDMsMSwxMiwwCisJYW5kCW91dDA9MyxpbjAKKwltb3YJcjM9aXAJCQl9Cit7IC5tbWk7CUFERFAJaW4wPTAsaW4wCisJbW92CWxvYzA9cHNyLnVtCisJQUREUAlvdXQxMT1LU1oqNjAsaW4yCX07OwkvLyAmQUVTX0tFWS0+cm91bmRzCisKK3sgLm1taTsJbGQ0CW91dDExPVtvdXQxMV0JCQkvLyBBRVNfS0VZLT5yb3VuZHMKKwlhZGQJb3V0OD0oQUVTX1RlIy1BRVNfZW5jcnlwdCMpLHIzCS8vIFRlMAorCS5zYXZlCXByLHByc2F2ZQorCW1vdglwcnNhdmU9cHIJCX0KK3sgLm1taTsJcnVtCTE8PDMJCQkJLy8gY2xlYXIgdW0uYWMKKwkuc2F2ZQlhci5sYyxsY3NhdmUKKwltb3YJbGNzYXZlPWFyLmxjCQl9OzsKKworCS5ib2R5CisjaWYgZGVmaW5lZChfSFBVWF9TT1VSQ0UpCS8vIEhQVVggaXMgYmlnLWVuZGlhbiwgY3V0IDE1KzE1IGN5Y2xlcy4uLgoreyAubWliOyBjbXAubmUJcDYscDA9b3V0MCxyMAorCWFkZAlvdXQwPTQsaW4wCisocDYpCWJyLmRwbnQubWFueQkuTGVfaV91bmFsaWduZWQJfTs7CisKK3sgLm1taTsJbGQ0CW91dDE9W2luMF0sOAkJLy8gczAKKwlhbmQJb3V0OT0zLGluMQorCW1vdgl0d2VudHk0PTI0CQl9Cit7IC5tbWk7CWxkNAlvdXQzPVtvdXQwXSw4CQkvLyBzMQorCUFERFAJcmswPTAsaW4yCisJbW92CXNpeHRlZW49MTYJCX07OworeyAubW1pOwlsZDQJb3V0NT1baW4wXQkJLy8gczIKKwljbXAubmUJcDYscDA9b3V0OSxyMAorCW1vdgltYXNrZmY9MHhmZgkJfQoreyAubW1iOwlsZDQJb3V0Nz1bb3V0MF0JCS8vIHMzCisJQUREUAlyazE9S1NaLGluMgorCWJyLmNhbGwuc3B0ay5tYW55CWI2PV9pYTY0X0FFU19lbmNyeXB0CX07OworCit7IC5taWI7CUFERFAJaW4wPTQsaW4xCisJQUREUAlpbjE9MCxpbjEKKyhwNikJYnIuc3BudAkuTGVfb191bmFsaWduZWQJCX07OworCit7IC5taWk7CW1vdglwc3IudW09bG9jMAorCW1vdglhci5wZnM9cGZzc2F2ZQorCW1vdglhci5sYz1sY3NhdmUJCX07OworeyAubW1pOwlzdDQJW2luMV09cjE2LDgJCS8vIHMwCisJc3Q0CVtpbjBdPXIyMCw4CQkvLyBzMQorCW1vdglwcj1wcnNhdmUsMHgxZmZmZgl9OzsKK3sgLm1tYjsJc3Q0CVtpbjFdPXIyNAkJLy8gczIKKwlzdDQJW2luMF09cjI4CQkvLyBzMworCWJyLnJldC5zcHRrLm1hbnkJYjAJfTs7CisjZW5kaWYKKworLmFsaWduCTMyCisuTGVfaV91bmFsaWduZWQ6Cit7IC5tbWk7CWFkZAlvdXQwPTEsaW4wCisJYWRkCW91dDI9MixpbjAKKwlhZGQJb3V0ND0zLGluMAl9OzsKK3sgLm1taTsJbGQxCXIxNj1baW4wXSw0CisJbGQxCXIxNz1bb3V0MF0sNAl9Ly87OworeyAubW1pOwlsZDEJcjE4PVtvdXQyXSw0CisJbGQxCW91dDE9W291dDRdLDQJfTs7CS8vIHMwCit7IC5tbWk7CWxkMQlyMjA9W2luMF0sNAorCWxkMQlyMjE9W291dDBdLDQJfS8vOzsKK3sgLm1taTsJbGQxCXIyMj1bb3V0Ml0sNAorCWxkMQlvdXQzPVtvdXQ0XSw0CX07OwkvLyBzMQoreyAubW1pOwlsZDEJcjI0PVtpbjBdLDQKKwlsZDEJcjI1PVtvdXQwXSw0CX0vLzs7Cit7IC5tbWk7CWxkMQlyMjY9W291dDJdLDQKKwlsZDEJb3V0NT1bb3V0NF0sNAl9OzsJLy8gczIKK3sgLm1taTsJbGQxCXIyOD1baW4wXQorCWxkMQlyMjk9W291dDBdCX0vLzs7Cit7IC5tbWk7CWxkMQlyMzA9W291dDJdCisJbGQxCW91dDc9W291dDRdCX07OwkvLyBzMworCit7IC5taWk7CisJZGVwCW91dDE9cjE2LG91dDEsMjQsOAkvLzs7CisJZGVwCW91dDM9cjIwLG91dDMsMjQsOAl9Ly87OworeyAubWlpOwlBRERQCXJrMD0wLGluMgorCWRlcAlvdXQ1PXIyNCxvdXQ1LDI0LDgJLy87OworCWRlcAlvdXQ3PXIyOCxvdXQ3LDI0LDgJfTs7Cit7IC5taWk7CUFERFAJcmsxPUtTWixpbjIKKwlkZXAJb3V0MT1yMTcsb3V0MSwxNiw4CS8vOzsKKwlkZXAJb3V0Mz1yMjEsb3V0MywxNiw4CX0vLzs7Cit7IC5taWk7CW1vdgl0d2VudHk0PTI0CisJZGVwCW91dDU9cjI1LG91dDUsMTYsOAkvLzs7CisJZGVwCW91dDc9cjI5LG91dDcsMTYsOAl9OzsKK3sgLm1paTsJbW92CXNpeHRlZW49MTYKKwlkZXAJb3V0MT1yMTgsb3V0MSw4LDgJLy87OworCWRlcAlvdXQzPXIyMixvdXQzLDgsOAl9Ly87OworeyAubWlpOwltb3YJbWFza2ZmPTB4ZmYKKwlkZXAJb3V0NT1yMjYsb3V0NSw4LDgJLy87OworCWRlcAlvdXQ3PXIzMCxvdXQ3LDgsOAl9OzsKKworeyAubWliOwlici5jYWxsLnNwdGsubWFueQliNj1faWE2NF9BRVNfZW5jcnlwdAl9OzsKKworLkxlX29fdW5hbGlnbmVkOgoreyAubWlpOwlBRERQCW91dDA9MCxpbjEKKwlleHRyLnUJcjE3PXIxNiw4LDgJCQkvLyBzMAorCXNoci51CXIxOT1yMTYsdHdlbnR5NAkJfS8vOzsKK3sgLm1paTsJQUREUAlvdXQxPTEsaW4xCisJZXh0ci51CXIxOD1yMTYsMTYsOAorCXNoci51CXIyMz1yMjAsdHdlbnR5NAkJfS8vOzsJLy8gczEKK3sgLm1paTsJQUREUAlvdXQyPTIsaW4xCisJZXh0ci51CXIyMT1yMjAsOCw4CisJc2hyLnUJcjIyPXIyMCxzaXh0ZWVuCQl9Ly87OworeyAubWlpOwlBRERQCW91dDM9MyxpbjEKKwlleHRyLnUJcjI1PXIyNCw4LDgJCQkvLyBzMgorCXNoci51CXIyNz1yMjQsdHdlbnR5NAkJfTs7Cit7IC5taWk7CXN0MQlbb3V0M109cjE2LDQKKwlleHRyLnUJcjI2PXIyNCwxNiw4CisJc2hyLnUJcjMxPXIyOCx0d2VudHk0CQl9Ly87OwkvLyBzMworeyAubWlpOwlzdDEJW291dDJdPXIxNyw0CisJZXh0ci51CXIyOT1yMjgsOCw4CisJc2hyLnUJcjMwPXIyOCxzaXh0ZWVuCQl9Ly87OworCit7IC5tbWk7CXN0MQlbb3V0MV09cjE4LDQKKwlzdDEJW291dDBdPXIxOSw0CQl9OzsKK3sgLm1taTsJc3QxCVtvdXQzXT1yMjAsNAorCXN0MQlbb3V0Ml09cjIxLDQJCX0vLzs7Cit7IC5tbWk7CXN0MQlbb3V0MV09cjIyLDQKKwlzdDEJW291dDBdPXIyMyw0CQl9OzsKK3sgLm1taTsJc3QxCVtvdXQzXT1yMjQsNAorCXN0MQlbb3V0Ml09cjI1LDQKKwltb3YJcHI9cHJzYXZlLDB4MWZmZmYJfS8vOzsKK3sgLm1taTsJc3QxCVtvdXQxXT1yMjYsNAorCXN0MQlbb3V0MF09cjI3LDQKKwltb3YJYXIucGZzPXBmc3NhdmUJCX07OworeyAubW1pOwlzdDEJW291dDNdPXIyOAorCXN0MQlbb3V0Ml09cjI5CisJbW92CWFyLmxjPWxjc2F2ZQkJfS8vOzsKK3sgLm1taTsJc3QxCVtvdXQxXT1yMzAKKwlzdDEJW291dDBdPXIzMQkJfQoreyAubWZiOwltb3YJcHNyLnVtPWxvYzAJCQkvLyByZXN0b3JlIHVzZXIgbWFzaworCWJyLnJldC5zcHRrLm1hbnkJYjAJfTs7CisuZW5kcAlBRVNfZW5jcnlwdCMKKworLy8gKkFFU19kZWNyeXB0IGFyZSBhdXRvZ2VuZXJhdGVkIGJ5IHRoZSBmb2xsb3dpbmcgc2NyaXB0OgorI2lmIDAKKyMhL3Vzci9iaW4vZW52IHBlcmwKK3ByaW50ICIvLyAqQUVTX2RlY3J5cHQgYXJlIGF1dG9nZW5lcmF0ZWQgYnkgdGhlIGZvbGxvd2luZyBzY3JpcHQ6XG4jaWYgMFxuIjsKK29wZW4oUFJPRywnPCcuJDApOyB3aGlsZSg8UFJPRz4pIHsgcHJpbnQ7IH0gY2xvc2UoUFJPRyk7CitwcmludCAiI2VuZGlmXG4iOword2hpbGUoPD4pIHsKKwkkcHJvY2Vzcz0xCWlmICgvXC5wcm9jXHMrX2lhNjRfQUVTX2VuY3J5cHQvKTsKKwluZXh0CQlpZiAoISRwcm9jZXNzKTsKKworCSNzL3RlMDA9czAvdGQwMD1zMC87CXMvdGUwMC90ZDAwL2c7CisJcy90ZTExPXMxL3RkMTM9czMvOwlzL3RlMTEvdGQxMy9nOworCSNzL3RlMjI9czIvdGQyMj1zMi87CXMvdGUyMi90ZDIyL2c7CisJcy90ZTMzPXMzL3RkMzE9czEvOwlzL3RlMzMvdGQzMS9nOworCisJI3MvdGUwMT1zMS90ZDAxPXMxLzsJcy90ZTAxL3RkMDEvZzsKKwlzL3RlMTI9czIvdGQxMD1zMC87CXMvdGUxMi90ZDEwL2c7CisJI3MvdGUyMz1zMy90ZDIzPXMzLzsJcy90ZTIzL3RkMjMvZzsKKwlzL3RlMzA9czAvdGQzMj1zMi87CXMvdGUzMC90ZDMyL2c7CisKKwkjcy90ZTAyPXMyL3RkMDI9czIvOwlzL3RlMDIvdGQwMi9nOworCXMvdGUxMz1zMy90ZDExPXMxLzsJcy90ZTEzL3RkMTEvZzsKKwkjcy90ZTIwPXMwL3RkMjA9czAvOwlzL3RlMjAvdGQyMC9nOworCXMvdGUzMT1zMS90ZDMzPXMzLzsJcy90ZTMxL3RkMzMvZzsKKworCSNzL3RlMDM9czMvdGQwMz1zMy87CXMvdGUwMy90ZDAzL2c7CisJcy90ZTEwPXMwL3RkMTI9czIvOwlzL3RlMTAvdGQxMi9nOworCSNzL3RlMjE9czEvdGQyMT1zMS87CXMvdGUyMS90ZDIxL2c7CisJcy90ZTMyPXMyL3RkMzA9czAvOwlzL3RlMzIvdGQzMC9nOworCisJcy90ZC90ZS9nOworCisJcy9BRVNfZW5jcnlwdC9BRVNfZGVjcnlwdC9nOworCXMvXC5MZV8vLkxkXy9nOworCXMvQUVTX1RlIy9BRVNfVGQjL2c7CisKKwlwcmludDsKKworCWV4aXQJCWlmICgvXC5lbmRwXHMrQUVTX2RlY3J5cHQvKTsKK30KKyNlbmRpZgorLnByb2MJX2lhNjRfQUVTX2RlY3J5cHQjCisvLyBJbnB1dDoJcmswLXJrMQorLy8JCXRlMAorLy8JCXRlMwlhcyBBRVNfS0VZLT5yb3VuZHMhISEKKy8vCQlzMC1zMworLy8JCW1hc2tmZix0d2VudHk0LHNpeHRlZW4KKy8vIE91dHB1dDoJcjE2LHIyMCxyMjQscjI4IGFzIHMwLXMzCisvLyBDbG9iYmVyOglyMTYtcjMxLHJrMC1yazEscjMyLXI0MworLmFsaWduCTMyCitfaWE2NF9BRVNfZGVjcnlwdDoKKwkucHJvbG9ndWUKKwkuYWx0cnAJYjYKKwkuYm9keQoreyAubW1pOwlhbGxvYwlyMTY9YXIucGZzLDEyLDAsMCw4CisJTERLRVkJdDA9W3JrMF0sMipLU1oKKwltb3YJcHIucm90PTE8PDE2CX0KK3sgLm1taTsJTERLRVkJdDE9W3JrMV0sMipLU1oKKwlhZGQJdGUxPVRFMSx0ZTAKKwlhZGQJdGUzPS0zLHRlMwl9OzsKK3sgLm1pYjsJTERLRVkJdDI9W3JrMF0sMipLU1oKKwltb3YJYXIuZWM9MgkJfQoreyAubWliOwlMREtFWQl0Mz1bcmsxXSwyKktTWgorCWFkZAl0ZTI9VEUyLHRlMAorCWJycC5sb29wLmltcAkuTGRfdG9wLC5MZF9lbmQtMTYJfTs7CisKK3sgLm1taTsJeG9yCXMwPXMwLHQwCisJeG9yCXMxPXMxLHQxCisJbW92CWFyLmxjPXRlMwl9Cit7IC5tbWk7CXhvcglzMj1zMix0MgorCXhvcglzMz1zMyx0MworCWFkZAl0ZTM9VEUzLHRlMAl9OzsKKwwKKy5hbGlnbgkzMgorLkxkX3RvcDoKK3sgLm1taTsJKHAwKQlMREtFWQl0MD1bcmswXSwyKktTWgkJLy8gMC8wOnJrWzBdCisJKHAwKQlhbmQJdGUzMT1zMSxtYXNrZmYJCS8vIDAvMDpzMyYweGZmCisJKHAwKQlleHRyLnUJdGUyMj1zMiw4LDgJfQkvLyAwLzA6czI+PjgmMHhmZgoreyAubW1pOyAocDApCUxES0VZCXQxPVtyazFdLDIqS1NaCQkvLyAwLzE6cmtbMV0KKwkocDApCWFuZAl0ZTMyPXMyLG1hc2tmZgkJLy8gMC8xOnMwJjB4ZmYKKwkocDApCXNoci51CXRlMDA9czAsdHdlbnR5NAl9OzsJLy8gMC8wOnMwPj4yNAoreyAubW1pOwkocDApCUxES0VZCXQyPVtyazBdLDIqS1NaCQkvLyAxLzI6cmtbMl0KKwkocDApCXNobGFkZAl0ZTMxPXRlMzEsMyx0ZTMJCS8vIDEvMDp0ZTArczA+PjI0CisJKHAwKQlleHRyLnUJdGUyMz1zMyw4LDgJfQkvLyAxLzE6czM+PjgmMHhmZgoreyAubW1pOwkocDApCUxES0VZCXQzPVtyazFdLDIqS1NaCQkvLyAxLzM6cmtbM10KKwkocDApCXNobGFkZAl0ZTMyPXRlMzIsMyx0ZTMJCS8vIDEvMTp0ZTMrczAKKwkocDApCXNoci51CXRlMDE9czEsdHdlbnR5NAl9OzsJLy8gMS8xOnMxPj4yNAoreyAubW1pOwkocDApCWxkNAl0ZTMxPVt0ZTMxXQkJLy8gMi8wOnRlM1tzMyYweGZmXQorCShwMCkJc2hsYWRkCXRlMjI9dGUyMiwzLHRlMgkJLy8gMi8wOnRlMitzMj4+OCYweGZmCisJKHAwKQlleHRyLnUJdGUyMD1zMCw4LDgJfQkvLyAyLzI6czA+PjgmMHhmZgoreyAubW1pOwkocDApCWxkNAl0ZTMyPVt0ZTMyXQkJLy8gMi8xOnRlM1tzMF0KKwkocDApCXNobGFkZAl0ZTIzPXRlMjMsMyx0ZTIJCS8vIDIvMTp0ZTIrczM+PjgKKwkocDApCXNoci51CXRlMDI9czIsdHdlbnR5NAl9OzsJLy8gMi8yOnMyPj4yNAoreyAubW1pOwkocDApCWxkNAl0ZTIyPVt0ZTIyXQkJLy8gMy8wOnRlMltzMj4+OF0KKwkocDApCXNobGFkZAl0ZTIwPXRlMjAsMyx0ZTIJCS8vIDMvMjp0ZTIrczA+PjgKKwkocDApCWV4dHIudQl0ZTIxPXMxLDgsOAl9CS8vIDMvMzpzMT4+OCYweGZmCit7IC5tbWk7CShwMCkJbGQ0CXRlMjM9W3RlMjNdCQkvLyAzLzE6dGUyW3MzPj44XQorCShwMCkJc2hsYWRkCXRlMDA9dGUwMCwzLHRlMAkJLy8gMy8wOnRlMCtzMD4+MjQKKwkocDApCXNoci51CXRlMDM9czMsdHdlbnR5NAl9OzsJLy8gMy8zOnMzPj4yNAoreyAubW1pOwkocDApCWxkNAl0ZTIwPVt0ZTIwXQkJLy8gNC8yOnRlMltzMD4+OF0KKwkocDApCXNobGFkZAl0ZTIxPXRlMjEsMyx0ZTIJCS8vIDQvMzp0ZTMrczIKKwkocDApCWV4dHIudQl0ZTEzPXMzLDE2LDgJfQkvLyA0LzA6czE+PjE2JjB4ZmYKK3sgLm1taTsJKHAwKQlsZDQJdGUwMD1bdGUwMF0JCS8vIDQvMDp0ZTBbczA+PjI0XQorCShwMCkJc2hsYWRkCXRlMDE9dGUwMSwzLHRlMAkJLy8gNC8xOnRlMCtzMT4+MjQKKwkocDApCXNoci51CXRlMTE9czEsc2l4dGVlbgl9OzsJLy8gNC8yOnMzPj4xNgoreyAubW1pOwkocDApCWxkNAl0ZTIxPVt0ZTIxXQkJLy8gNS8zOnRlMltzMT4+OF0KKwkocDApCXNobGFkZAl0ZTEzPXRlMTMsMyx0ZTEJCS8vIDUvMDp0ZTErczE+PjE2CisJKHAwKQlleHRyLnUJdGUxMD1zMCwxNiw4CX0JLy8gNS8xOnMyPj4xNiYweGZmCit7IC5tbWk7CShwMCkJbGQ0CXRlMDE9W3RlMDFdCQkvLyA1LzE6dGUwW3MxPj4yNF0KKwkocDApCXNobGFkZAl0ZTAyPXRlMDIsMyx0ZTAJCS8vIDUvMjp0ZTArczI+PjI0CisJKHAwKQlhbmQJdGUzMz1zMyxtYXNrZmYJfTs7CS8vIDUvMjpzMSYweGZmCit7IC5tbWk7CShwMCkJbGQ0CXRlMTM9W3RlMTNdCQkvLyA2LzA6dGUxW3MxPj4xNl0KKwkocDApCXNobGFkZAl0ZTEwPXRlMTAsMyx0ZTEJCS8vIDYvMTp0ZTErczI+PjE2CisJKHAwKQlleHRyLnUJdGUxMj1zMiwxNiw4CX0JLy8gNi8zOnMwPj4xNiYweGZmCit7IC5tbWk7CShwMCkJbGQ0CXRlMDI9W3RlMDJdCQkvLyA2LzI6dGUwW3MyPj4yNF0KKwkocDApCXNobGFkZAl0ZTAzPXRlMDMsMyx0ZTAJCS8vIDYvMzp0ZTErczA+PjE2CisJKHAwKQlhbmQJdGUzMD1zMCxtYXNrZmYJfTs7CS8vIDYvMzpzMiYweGZmCisKK3sgLm1taTsJKHAwKQlsZDQJdGUxMD1bdGUxMF0JCS8vIDcvMTp0ZTFbczI+PjE2XQorCShwMCkJc2hsYWRkCXRlMzM9dGUzMywzLHRlMwkJLy8gNy8yOnRlMytzMSYweGZmCisJKHAwKQlhbmQJdGUxMT10ZTExLG1hc2tmZn0JLy8gNy8yOnMzPj4xNiYweGZmCit7IC5tbWk7CShwMCkJbGQ0CXRlMDM9W3RlMDNdCQkvLyA3LzM6dGUwW3MzPj4yNF0KKwkocDApCXNobGFkZAl0ZTMwPXRlMzAsMyx0ZTMJCS8vIDcvMzp0ZTMrczIKKwkocDApCXhvcgl0MD10MCx0ZTMxCX07OwkvLyA3LzA6Cit7IC5tbWk7CShwMCkJbGQ0CXRlMzM9W3RlMzNdCQkvLyA4LzI6dGUzW3MxXQorCShwMCkJc2hsYWRkCXRlMTE9dGUxMSwzLHRlMQkJLy8gOC8yOnRlMStzMz4+MTYKKwkocDApCXhvcgl0MD10MCx0ZTIyCX0JLy8gOC8wOgoreyAubW1pOwkocDApCWxkNAl0ZTMwPVt0ZTMwXQkJLy8gOC8zOnRlM1tzMl0KKwkocDApCXNobGFkZAl0ZTEyPXRlMTIsMyx0ZTEJCS8vIDgvMzp0ZTErczA+PjE2CisJKHAwKQl4b3IJdDE9dDEsdGUzMgl9OzsJLy8gOC8xOgoreyAubW1pOwkocDApCWxkNAl0ZTExPVt0ZTExXQkJLy8gOS8yOnRlMVtzMz4+MTZdCisJKHAwKQlsZDQJdGUxMj1bdGUxMl0JCS8vIDkvMzp0ZTFbczA+PjE2XQorCShwMCkJeG9yCXQwPXQwLHRlMDAJfTs7CS8vIDkvMDoJCSFMMiBzY2hlZHVsaW5nCit7IC5tbWk7CShwMCkJeG9yCXQxPXQxLHRlMjMJCS8vIDEwWzldLzE6CQorCShwMCkJeG9yCXQyPXQyLHRlMjAJCS8vIDEwWzldLzI6CisJKHAwKQl4b3IJdDM9dDMsdGUyMQl9OzsJLy8gMTBbOV0vMzoKK3sgLm1taTsJKHAwKQl4b3IJdDA9dDAsdGUxMwkJLy8gMTFbMTBdLzA6ZG9uZSEKKwkocDApCXhvcgl0MT10MSx0ZTAxCQkvLyAxMVsxMF0vMToKKwkocDApCXhvcgl0Mj10Mix0ZTAyCX07OwkvLyAxMVsxMF0vMjoJIUwyIHNjaGVkdWxpbmcKK3sgLm1taTsJKHAwKQl4b3IJdDM9dDMsdGUwMwkJLy8gMTJbMTBdLzM6CisJKHAxNikJY21wLmVxCXAwLHAxNz1yMCxyMCAJfTs7CS8vIDEyWzEwXS9jbGVhciAocDE3KQoreyAubW1pOwkocDApCXhvcgl0MT10MSx0ZTEwCQkvLyAxM1sxMV0vMTpkb25lIQorCShwMCkJeG9yCXQyPXQyLHRlMzMJCS8vIDEzWzExXS8yOgorCShwMCkJeG9yCXQzPXQzLHRlMzAJfQkvLyAxM1sxMV0vMzoKK3sgLm1taTsJKHAxNykJYWRkCXRlMD0yMDQ4LHRlMAkJLy8gMTNbMTFdLworCShwMTcpCWFkZAl0ZTE9MjA0OCs2NC1URTEsdGUxfTs7CS8vIDEzWzExXS8KK3sgLm1pYjsJKHAwKQl4b3IJdDI9dDIsdGUxMQkJLy8gMTRbMTJdLzI6ZG9uZSEKKwkocDE3KQlhZGQJdGUyPTIwNDgrMTI4LVRFMix0ZTJ9CS8vIDE0WzEyXS8KK3sgLm1pYjsJKHAwKQl4b3IJdDM9dDMsdGUxMgkJLy8gMTRbMTJdLzM6ZG9uZSEKKwkocDE3KQlhZGQJdGUzPTIwNDgrMTkyLVRFMyx0ZTMJLy8gMTRbMTJdLworCWJyLmN0b3Auc3B0awkuTGRfdG9wCQl9OzsKKy5MZF9lbmQ6CisMCisKK3sgLm1taTsJbGQ4CXRlMTA9W3RlMF0JCS8vIHByZWZldGNoIFRkNAorCWxkOAl0ZTMzPVt0ZTFdCX0KK3sgLm1taTsJbGQ4CXRlMTI9W3RlMl0KKwlsZDgJdGUzMD1bdGUzXQl9CisKK3sgLm1taTsJTERLRVkJdDA9W3JrMF0sMipLU1oJCS8vIDAvMDpya1swXQorCWFuZAl0ZTMxPXMxLG1hc2tmZgkJLy8gMC8wOnMzJjB4ZmYKKwlleHRyLnUJdGUyMj1zMiw4LDgJfQkvLyAwLzA6czI+PjgmMHhmZgoreyAubW1pOyBMREtFWQl0MT1bcmsxXSwyKktTWgkJLy8gMC8xOnJrWzFdCisJYW5kCXRlMzI9czIsbWFza2ZmCQkvLyAwLzE6czAmMHhmZgorCXNoci51CXRlMDA9czAsdHdlbnR5NAl9OzsJLy8gMC8wOnMwPj4yNAoreyAubW1pOwlMREtFWQl0Mj1bcmswXSwyKktTWgkJLy8gMS8yOnJrWzJdCisJYWRkCXRlMzE9dGUzMSx0ZTAJCS8vIDEvMDp0ZTArczA+PjI0CisJZXh0ci51CXRlMjM9czMsOCw4CX0JLy8gMS8xOnMzPj44JjB4ZmYKK3sgLm1taTsJTERLRVkJdDM9W3JrMV0sMipLU1oJCS8vIDEvMzpya1szXQorCWFkZAl0ZTMyPXRlMzIsdGUwCQkvLyAxLzE6dGUwK3MwCisJc2hyLnUJdGUwMT1zMSx0d2VudHk0CX07OwkvLyAxLzE6czE+PjI0Cit7IC5tbWk7CWxkMQl0ZTMxPVt0ZTMxXQkJLy8gMi8wOnRlMFtzMyYweGZmXQorCWFkZAl0ZTIyPXRlMjIsdGUwCQkvLyAyLzA6dGUwK3MyPj44JjB4ZmYKKwlleHRyLnUJdGUyMD1zMCw4LDgJfQkvLyAyLzI6czA+PjgmMHhmZgoreyAubW1pOwlsZDEJdGUzMj1bdGUzMl0JCS8vIDIvMTp0ZTBbczBdCisJYWRkCXRlMjM9dGUyMyx0ZTAJCS8vIDIvMTp0ZTArczM+PjgKKwlzaHIudQl0ZTAyPXMyLHR3ZW50eTQJfTs7CS8vIDIvMjpzMj4+MjQKK3sgLm1taTsJbGQxCXRlMjI9W3RlMjJdCQkvLyAzLzA6dGUwW3MyPj44XQorCWFkZAl0ZTIwPXRlMjAsdGUwCQkvLyAzLzI6dGUwK3MwPj44CisJZXh0ci51CXRlMjE9czEsOCw4CX0JLy8gMy8zOnMxPj44JjB4ZmYKK3sgLm1taTsJbGQxCXRlMjM9W3RlMjNdCQkvLyAzLzE6dGUwW3MzPj44XQorCWFkZAl0ZTAwPXRlMDAsdGUwCQkvLyAzLzA6dGUwK3MwPj4yNAorCXNoci51CXRlMDM9czMsdHdlbnR5NAl9OzsJLy8gMy8zOnMzPj4yNAoreyAubW1pOwlsZDEJdGUyMD1bdGUyMF0JCS8vIDQvMjp0ZTBbczA+PjhdCisJYWRkCXRlMjE9dGUyMSx0ZTAJCS8vIDQvMzp0ZTArczIKKwlleHRyLnUJdGUxMz1zMywxNiw4CX0JLy8gNC8wOnMxPj4xNiYweGZmCit7IC5tbWk7CWxkMQl0ZTAwPVt0ZTAwXQkJLy8gNC8wOnRlMFtzMD4+MjRdCisJYWRkCXRlMDE9dGUwMSx0ZTAJCS8vIDQvMTp0ZTArczE+PjI0CisJc2hyLnUJdGUxMT1zMSxzaXh0ZWVuCX07OwkvLyA0LzI6czM+PjE2Cit7IC5tbWk7CWxkMQl0ZTIxPVt0ZTIxXQkJLy8gNS8zOnRlMFtzMT4+OF0KKwlhZGQJdGUxMz10ZTEzLHRlMAkJLy8gNS8wOnRlMCtzMT4+MTYKKwlleHRyLnUJdGUxMD1zMCwxNiw4CX0JLy8gNS8xOnMyPj4xNiYweGZmCit7IC5tbWk7CWxkMQl0ZTAxPVt0ZTAxXQkJLy8gNS8xOnRlMFtzMT4+MjRdCisJYWRkCXRlMDI9dGUwMix0ZTAJCS8vIDUvMjp0ZTArczI+PjI0CisJYW5kCXRlMzM9czMsbWFza2ZmCX07OwkvLyA1LzI6czEmMHhmZgoreyAubW1pOwlsZDEJdGUxMz1bdGUxM10JCS8vIDYvMDp0ZTBbczE+PjE2XQorCWFkZAl0ZTEwPXRlMTAsdGUwCQkvLyA2LzE6dGUwK3MyPj4xNgorCWV4dHIudQl0ZTEyPXMyLDE2LDgJfQkvLyA2LzM6czA+PjE2JjB4ZmYKK3sgLm1taTsJbGQxCXRlMDI9W3RlMDJdCQkvLyA2LzI6dGUwW3MyPj4yNF0KKwlhZGQJdGUwMz10ZTAzLHRlMAkJLy8gNi8zOnRlMCtzMD4+MTYKKwlhbmQJdGUzMD1zMCxtYXNrZmYJfTs7CS8vIDYvMzpzMiYweGZmCisKK3sgLm1taTsJbGQxCXRlMTA9W3RlMTBdCQkvLyA3LzE6dGUwW3MyPj4xNl0KKwlhZGQJdGUzMz10ZTMzLHRlMAkJLy8gNy8yOnRlMCtzMSYweGZmCisJZGVwCXRlMzE9dGUyMix0ZTMxLDgsOH0JLy8gNy8wOgoreyAubW1pOwlsZDEJdGUwMz1bdGUwM10JCS8vIDcvMzp0ZTBbczM+PjI0XQorCWFkZAl0ZTMwPXRlMzAsdGUwCQkvLyA3LzM6dGUwK3MyCisJYW5kCXRlMTE9dGUxMSxtYXNrZmZ9OzsJLy8gNy8yOnMzPj4xNiYweGZmCit7IC5tbWk7CWxkMQl0ZTMzPVt0ZTMzXQkJLy8gOC8yOnRlMFtzMV0KKwlhZGQJdGUxMT10ZTExLHRlMAkJLy8gOC8yOnRlMCtzMz4+MTYKKwlkZXAJdGUzMj10ZTIzLHRlMzIsOCw4fQkvLyA4LzE6Cit7IC5tbWk7CWxkMQl0ZTMwPVt0ZTMwXQkJLy8gOC8zOnRlMFtzMl0KKwlhZGQJdGUxMj10ZTEyLHRlMAkJLy8gOC8zOnRlMCtzMD4+MTYKKwlzaGwJdGUwMD10ZTAwLHR3ZW50eTR9OzsJLy8gOC8wOgoreyAubWlpOwlsZDEJdGUxMT1bdGUxMV0JCS8vIDkvMjp0ZTBbczM+PjE2XQorCWRlcAl0ZTMxPXRlMTMsdGUzMSwxNiw4CS8vIDkvMDoKKwlzaGwJdGUwMT10ZTAxLHR3ZW50eTR9OzsJLy8gOS8xOgoreyAubWlpOwlsZDEJdGUxMj1bdGUxMl0JCS8vIDEwLzM6dGUwW3MwPj4xNl0KKwlkZXAJdGUzMz10ZTIwLHRlMzMsOCw4CS8vIDEwLzI6CisJc2hsCXRlMDI9dGUwMix0d2VudHk0fTs7CS8vIDEwLzI6Cit7IC5taWk7CXhvcgl0MD10MCx0ZTMxCQkvLyAxMS8wOgorCWRlcAl0ZTMwPXRlMjEsdGUzMCw4LDgJLy8gMTEvMzoKKwlzaGwJdGUxMD10ZTEwLHNpeHRlZW59OzsJLy8gMTEvMToKK3sgLm1paTsJeG9yCXIxNj10MCx0ZTAwCQkvLyAxMi8wOmRvbmUhCisJZGVwCXRlMzM9dGUxMSx0ZTMzLDE2LDgJLy8gMTIvMjoKKwlzaGwJdGUwMz10ZTAzLHR3ZW50eTR9OzsJLy8gMTIvMzoKK3sgLm1taTsJeG9yCXQxPXQxLHRlMDEJCS8vIDEzLzE6CisJeG9yCXQyPXQyLHRlMDIJCS8vIDEzLzI6CisJZGVwCXRlMzA9dGUxMix0ZTMwLDE2LDh9OzsJLy8gMTMvMzoKK3sgLm1taTsJeG9yCXQxPXQxLHRlMzIJCS8vIDE0LzE6CisJeG9yCXIyND10Mix0ZTMzCQkvLyAxNC8yOmRvbmUhCisJeG9yCXQzPXQzLHRlMzAJfTs7CS8vIDE0LzM6Cit7IC5taWI7CXhvcglyMjA9dDEsdGUxMAkJLy8gMTUvMTpkb25lIQorCXhvcglyMjg9dDMsdGUwMwkJLy8gMTUvMzpkb25lIQorCWJyLnJldC5zcHRrCWI2CX07OworLmVuZHAJX2lhNjRfQUVTX2RlY3J5cHQjCisKKy8vIHZvaWQgQUVTX2RlY3J5cHQgKGNvbnN0IHZvaWQgKmluLHZvaWQgKm91dCxjb25zdCBBRVNfS0VZICprZXkpOworLmdsb2JhbAlBRVNfZGVjcnlwdCMKKy5wcm9jCUFFU19kZWNyeXB0IworLmFsaWduCTMyCitBRVNfZGVjcnlwdDoKKwkucHJvbG9ndWUKKwkuc2F2ZQlhci5wZnMscGZzc2F2ZQoreyAubW1pOwlhbGxvYwlwZnNzYXZlPWFyLnBmcywzLDEsMTIsMAorCWFuZAlvdXQwPTMsaW4wCisJbW92CXIzPWlwCQkJfQoreyAubW1pOwlBRERQCWluMD0wLGluMAorCW1vdglsb2MwPXBzci51bQorCUFERFAJb3V0MTE9S1NaKjYwLGluMgl9OzsJLy8gJkFFU19LRVktPnJvdW5kcworCit7IC5tbWk7CWxkNAlvdXQxMT1bb3V0MTFdCQkJLy8gQUVTX0tFWS0+cm91bmRzCisJYWRkCW91dDg9KEFFU19UZCMtQUVTX2RlY3J5cHQjKSxyMwkvLyBUZTAKKwkuc2F2ZQlwcixwcnNhdmUKKwltb3YJcHJzYXZlPXByCQl9Cit7IC5tbWk7CXJ1bQkxPDwzCQkJCS8vIGNsZWFyIHVtLmFjCisJLnNhdmUJYXIubGMsbGNzYXZlCisJbW92CWxjc2F2ZT1hci5sYwkJfTs7CisKKwkuYm9keQorI2lmIGRlZmluZWQoX0hQVVhfU09VUkNFKQkvLyBIUFVYIGlzIGJpZy1lbmRpYW4sIGN1dCAxNSsxNSBjeWNsZXMuLi4KK3sgLm1pYjsgY21wLm5lCXA2LHAwPW91dDAscjAKKwlhZGQJb3V0MD00LGluMAorKHA2KQlici5kcG50Lm1hbnkJLkxkX2lfdW5hbGlnbmVkCX07OworCit7IC5tbWk7CWxkNAlvdXQxPVtpbjBdLDgJCS8vIHMwCisJYW5kCW91dDk9MyxpbjEKKwltb3YJdHdlbnR5ND0yNAkJfQoreyAubW1pOwlsZDQJb3V0Mz1bb3V0MF0sOAkJLy8gczEKKwlBRERQCXJrMD0wLGluMgorCW1vdglzaXh0ZWVuPTE2CQl9OzsKK3sgLm1taTsJbGQ0CW91dDU9W2luMF0JCS8vIHMyCisJY21wLm5lCXA2LHAwPW91dDkscjAKKwltb3YJbWFza2ZmPTB4ZmYJCX0KK3sgLm1tYjsJbGQ0CW91dDc9W291dDBdCQkvLyBzMworCUFERFAJcmsxPUtTWixpbjIKKwlici5jYWxsLnNwdGsubWFueQliNj1faWE2NF9BRVNfZGVjcnlwdAl9OzsKKworeyAubWliOwlBRERQCWluMD00LGluMQorCUFERFAJaW4xPTAsaW4xCisocDYpCWJyLnNwbnQJLkxkX29fdW5hbGlnbmVkCQl9OzsKKworeyAubWlpOwltb3YJcHNyLnVtPWxvYzAKKwltb3YJYXIucGZzPXBmc3NhdmUKKwltb3YJYXIubGM9bGNzYXZlCQl9OzsKK3sgLm1taTsJc3Q0CVtpbjFdPXIxNiw4CQkvLyBzMAorCXN0NAlbaW4wXT1yMjAsOAkJLy8gczEKKwltb3YJcHI9cHJzYXZlLDB4MWZmZmYJfTs7Cit7IC5tbWI7CXN0NAlbaW4xXT1yMjQJCS8vIHMyCisJc3Q0CVtpbjBdPXIyOAkJLy8gczMKKwlici5yZXQuc3B0ay5tYW55CWIwCX07OworI2VuZGlmCisKKy5hbGlnbgkzMgorLkxkX2lfdW5hbGlnbmVkOgoreyAubW1pOwlhZGQJb3V0MD0xLGluMAorCWFkZAlvdXQyPTIsaW4wCisJYWRkCW91dDQ9MyxpbjAJfTs7Cit7IC5tbWk7CWxkMQlyMTY9W2luMF0sNAorCWxkMQlyMTc9W291dDBdLDQJfS8vOzsKK3sgLm1taTsJbGQxCXIxOD1bb3V0Ml0sNAorCWxkMQlvdXQxPVtvdXQ0XSw0CX07OwkvLyBzMAoreyAubW1pOwlsZDEJcjIwPVtpbjBdLDQKKwlsZDEJcjIxPVtvdXQwXSw0CX0vLzs7Cit7IC5tbWk7CWxkMQlyMjI9W291dDJdLDQKKwlsZDEJb3V0Mz1bb3V0NF0sNAl9OzsJLy8gczEKK3sgLm1taTsJbGQxCXIyND1baW4wXSw0CisJbGQxCXIyNT1bb3V0MF0sNAl9Ly87OworeyAubW1pOwlsZDEJcjI2PVtvdXQyXSw0CisJbGQxCW91dDU9W291dDRdLDQJfTs7CS8vIHMyCit7IC5tbWk7CWxkMQlyMjg9W2luMF0KKwlsZDEJcjI5PVtvdXQwXQl9Ly87OworeyAubW1pOwlsZDEJcjMwPVtvdXQyXQorCWxkMQlvdXQ3PVtvdXQ0XQl9OzsJLy8gczMKKworeyAubWlpOworCWRlcAlvdXQxPXIxNixvdXQxLDI0LDgJLy87OworCWRlcAlvdXQzPXIyMCxvdXQzLDI0LDgJfS8vOzsKK3sgLm1paTsJQUREUAlyazA9MCxpbjIKKwlkZXAJb3V0NT1yMjQsb3V0NSwyNCw4CS8vOzsKKwlkZXAJb3V0Nz1yMjgsb3V0NywyNCw4CX07OworeyAubWlpOwlBRERQCXJrMT1LU1osaW4yCisJZGVwCW91dDE9cjE3LG91dDEsMTYsOAkvLzs7CisJZGVwCW91dDM9cjIxLG91dDMsMTYsOAl9Ly87OworeyAubWlpOwltb3YJdHdlbnR5ND0yNAorCWRlcAlvdXQ1PXIyNSxvdXQ1LDE2LDgJLy87OworCWRlcAlvdXQ3PXIyOSxvdXQ3LDE2LDgJfTs7Cit7IC5taWk7CW1vdglzaXh0ZWVuPTE2CisJZGVwCW91dDE9cjE4LG91dDEsOCw4CS8vOzsKKwlkZXAJb3V0Mz1yMjIsb3V0Myw4LDgJfS8vOzsKK3sgLm1paTsJbW92CW1hc2tmZj0weGZmCisJZGVwCW91dDU9cjI2LG91dDUsOCw4CS8vOzsKKwlkZXAJb3V0Nz1yMzAsb3V0Nyw4LDgJfTs7CisKK3sgLm1pYjsJYnIuY2FsbC5zcHRrLm1hbnkJYjY9X2lhNjRfQUVTX2RlY3J5cHQJfTs7CisKKy5MZF9vX3VuYWxpZ25lZDoKK3sgLm1paTsJQUREUAlvdXQwPTAsaW4xCisJZXh0ci51CXIxNz1yMTYsOCw4CQkJLy8gczAKKwlzaHIudQlyMTk9cjE2LHR3ZW50eTQJCX0vLzs7Cit7IC5taWk7CUFERFAJb3V0MT0xLGluMQorCWV4dHIudQlyMTg9cjE2LDE2LDgKKwlzaHIudQlyMjM9cjIwLHR3ZW50eTQJCX0vLzs7CS8vIHMxCit7IC5taWk7CUFERFAJb3V0Mj0yLGluMQorCWV4dHIudQlyMjE9cjIwLDgsOAorCXNoci51CXIyMj1yMjAsc2l4dGVlbgkJfS8vOzsKK3sgLm1paTsJQUREUAlvdXQzPTMsaW4xCisJZXh0ci51CXIyNT1yMjQsOCw4CQkJLy8gczIKKwlzaHIudQlyMjc9cjI0LHR3ZW50eTQJCX07OworeyAubWlpOwlzdDEJW291dDNdPXIxNiw0CisJZXh0ci51CXIyNj1yMjQsMTYsOAorCXNoci51CXIzMT1yMjgsdHdlbnR5NAkJfS8vOzsJLy8gczMKK3sgLm1paTsJc3QxCVtvdXQyXT1yMTcsNAorCWV4dHIudQlyMjk9cjI4LDgsOAorCXNoci51CXIzMD1yMjgsc2l4dGVlbgkJfS8vOzsKKworeyAubW1pOwlzdDEJW291dDFdPXIxOCw0CisJc3QxCVtvdXQwXT1yMTksNAkJfTs7Cit7IC5tbWk7CXN0MQlbb3V0M109cjIwLDQKKwlzdDEJW291dDJdPXIyMSw0CQl9Ly87OworeyAubW1pOwlzdDEJW291dDFdPXIyMiw0CisJc3QxCVtvdXQwXT1yMjMsNAkJfTs7Cit7IC5tbWk7CXN0MQlbb3V0M109cjI0LDQKKwlzdDEJW291dDJdPXIyNSw0CisJbW92CXByPXByc2F2ZSwweDFmZmZmCX0vLzs7Cit7IC5tbWk7CXN0MQlbb3V0MV09cjI2LDQKKwlzdDEJW291dDBdPXIyNyw0CisJbW92CWFyLnBmcz1wZnNzYXZlCQl9OzsKK3sgLm1taTsJc3QxCVtvdXQzXT1yMjgKKwlzdDEJW291dDJdPXIyOQorCW1vdglhci5sYz1sY3NhdmUJCX0vLzs7Cit7IC5tbWk7CXN0MQlbb3V0MV09cjMwCisJc3QxCVtvdXQwXT1yMzEJCX0KK3sgLm1mYjsJbW92CXBzci51bT1sb2MwCQkJLy8gcmVzdG9yZSB1c2VyIG1hc2sKKwlici5yZXQuc3B0ay5tYW55CWIwCX07OworLmVuZHAJQUVTX2RlY3J5cHQjCisKKy8vIGxlYXZlIGl0IGluIC50ZXh0IHNlZ21lbnQuLi4KKy5hbGlnbgk2NAorLmdsb2JhbAlBRVNfVGUjCisudHlwZQlBRVNfVGUjLEBvYmplY3QKK0FFU19UZToJZGF0YTQJMHhjNjYzNjNhNSwweGM2NjM2M2E1LCAweGY4N2M3Yzg0LDB4Zjg3YzdjODQKKwlkYXRhNAkweGVlNzc3Nzk5LDB4ZWU3Nzc3OTksIDB4ZjY3YjdiOGQsMHhmNjdiN2I4ZAorCWRhdGE0CTB4ZmZmMmYyMGQsMHhmZmYyZjIwZCwgMHhkNjZiNmJiZCwweGQ2NmI2YmJkCisJZGF0YTQJMHhkZTZmNmZiMSwweGRlNmY2ZmIxLCAweDkxYzVjNTU0LDB4OTFjNWM1NTQKKwlkYXRhNAkweDYwMzAzMDUwLDB4NjAzMDMwNTAsIDB4MDIwMTAxMDMsMHgwMjAxMDEwMworCWRhdGE0CTB4Y2U2NzY3YTksMHhjZTY3NjdhOSwgMHg1NjJiMmI3ZCwweDU2MmIyYjdkCisJZGF0YTQJMHhlN2ZlZmUxOSwweGU3ZmVmZTE5LCAweGI1ZDdkNzYyLDB4YjVkN2Q3NjIKKwlkYXRhNAkweDRkYWJhYmU2LDB4NGRhYmFiZTYsIDB4ZWM3Njc2OWEsMHhlYzc2NzY5YQorCWRhdGE0CTB4OGZjYWNhNDUsMHg4ZmNhY2E0NSwgMHgxZjgyODI5ZCwweDFmODI4MjlkCisJZGF0YTQJMHg4OWM5Yzk0MCwweDg5YzljOTQwLCAweGZhN2Q3ZDg3LDB4ZmE3ZDdkODcKKwlkYXRhNAkweGVmZmFmYTE1LDB4ZWZmYWZhMTUsIDB4YjI1OTU5ZWIsMHhiMjU5NTllYgorCWRhdGE0CTB4OGU0NzQ3YzksMHg4ZTQ3NDdjOSwgMHhmYmYwZjAwYiwweGZiZjBmMDBiCisJZGF0YTQJMHg0MWFkYWRlYywweDQxYWRhZGVjLCAweGIzZDRkNDY3LDB4YjNkNGQ0NjcKKwlkYXRhNAkweDVmYTJhMmZkLDB4NWZhMmEyZmQsIDB4NDVhZmFmZWEsMHg0NWFmYWZlYQorCWRhdGE0CTB4MjM5YzljYmYsMHgyMzljOWNiZiwgMHg1M2E0YTRmNywweDUzYTRhNGY3CisJZGF0YTQJMHhlNDcyNzI5NiwweGU0NzI3Mjk2LCAweDliYzBjMDViLDB4OWJjMGMwNWIKKwlkYXRhNAkweDc1YjdiN2MyLDB4NzViN2I3YzIsIDB4ZTFmZGZkMWMsMHhlMWZkZmQxYworCWRhdGE0CTB4M2Q5MzkzYWUsMHgzZDkzOTNhZSwgMHg0YzI2MjY2YSwweDRjMjYyNjZhCisJZGF0YTQJMHg2YzM2MzY1YSwweDZjMzYzNjVhLCAweDdlM2YzZjQxLDB4N2UzZjNmNDEKKwlkYXRhNAkweGY1ZjdmNzAyLDB4ZjVmN2Y3MDIsIDB4ODNjY2NjNGYsMHg4M2NjY2M0ZgorCWRhdGE0CTB4NjgzNDM0NWMsMHg2ODM0MzQ1YywgMHg1MWE1YTVmNCwweDUxYTVhNWY0CisJZGF0YTQJMHhkMWU1ZTUzNCwweGQxZTVlNTM0LCAweGY5ZjFmMTA4LDB4ZjlmMWYxMDgKKwlkYXRhNAkweGUyNzE3MTkzLDB4ZTI3MTcxOTMsIDB4YWJkOGQ4NzMsMHhhYmQ4ZDg3MworCWRhdGE0CTB4NjIzMTMxNTMsMHg2MjMxMzE1MywgMHgyYTE1MTUzZiwweDJhMTUxNTNmCisJZGF0YTQJMHgwODA0MDQwYywweDA4MDQwNDBjLCAweDk1YzdjNzUyLDB4OTVjN2M3NTIKKwlkYXRhNAkweDQ2MjMyMzY1LDB4NDYyMzIzNjUsIDB4OWRjM2MzNWUsMHg5ZGMzYzM1ZQorCWRhdGE0CTB4MzAxODE4MjgsMHgzMDE4MTgyOCwgMHgzNzk2OTZhMSwweDM3OTY5NmExCisJZGF0YTQJMHgwYTA1MDUwZiwweDBhMDUwNTBmLCAweDJmOWE5YWI1LDB4MmY5YTlhYjUKKwlkYXRhNAkweDBlMDcwNzA5LDB4MGUwNzA3MDksIDB4MjQxMjEyMzYsMHgyNDEyMTIzNgorCWRhdGE0CTB4MWI4MDgwOWIsMHgxYjgwODA5YiwgMHhkZmUyZTIzZCwweGRmZTJlMjNkCisJZGF0YTQJMHhjZGViZWIyNiwweGNkZWJlYjI2LCAweDRlMjcyNzY5LDB4NGUyNzI3NjkKKwlkYXRhNAkweDdmYjJiMmNkLDB4N2ZiMmIyY2QsIDB4ZWE3NTc1OWYsMHhlYTc1NzU5ZgorCWRhdGE0CTB4MTIwOTA5MWIsMHgxMjA5MDkxYiwgMHgxZDgzODM5ZSwweDFkODM4MzllCisJZGF0YTQJMHg1ODJjMmM3NCwweDU4MmMyYzc0LCAweDM0MWExYTJlLDB4MzQxYTFhMmUKKwlkYXRhNAkweDM2MWIxYjJkLDB4MzYxYjFiMmQsIDB4ZGM2ZTZlYjIsMHhkYzZlNmViMgorCWRhdGE0CTB4YjQ1YTVhZWUsMHhiNDVhNWFlZSwgMHg1YmEwYTBmYiwweDViYTBhMGZiCisJZGF0YTQJMHhhNDUyNTJmNiwweGE0NTI1MmY2LCAweDc2M2IzYjRkLDB4NzYzYjNiNGQKKwlkYXRhNAkweGI3ZDZkNjYxLDB4YjdkNmQ2NjEsIDB4N2RiM2IzY2UsMHg3ZGIzYjNjZQorCWRhdGE0CTB4NTIyOTI5N2IsMHg1MjI5Mjk3YiwgMHhkZGUzZTMzZSwweGRkZTNlMzNlCisJZGF0YTQJMHg1ZTJmMmY3MSwweDVlMmYyZjcxLCAweDEzODQ4NDk3LDB4MTM4NDg0OTcKKwlkYXRhNAkweGE2NTM1M2Y1LDB4YTY1MzUzZjUsIDB4YjlkMWQxNjgsMHhiOWQxZDE2OAorCWRhdGE0CTB4MDAwMDAwMDAsMHgwMDAwMDAwMCwgMHhjMWVkZWQyYywweGMxZWRlZDJjCisJZGF0YTQJMHg0MDIwMjA2MCwweDQwMjAyMDYwLCAweGUzZmNmYzFmLDB4ZTNmY2ZjMWYKKwlkYXRhNAkweDc5YjFiMWM4LDB4NzliMWIxYzgsIDB4YjY1YjViZWQsMHhiNjViNWJlZAorCWRhdGE0CTB4ZDQ2YTZhYmUsMHhkNDZhNmFiZSwgMHg4ZGNiY2I0NiwweDhkY2JjYjQ2CisJZGF0YTQJMHg2N2JlYmVkOSwweDY3YmViZWQ5LCAweDcyMzkzOTRiLDB4NzIzOTM5NGIKKwlkYXRhNAkweDk0NGE0YWRlLDB4OTQ0YTRhZGUsIDB4OTg0YzRjZDQsMHg5ODRjNGNkNAorCWRhdGE0CTB4YjA1ODU4ZTgsMHhiMDU4NThlOCwgMHg4NWNmY2Y0YSwweDg1Y2ZjZjRhCisJZGF0YTQJMHhiYmQwZDA2YiwweGJiZDBkMDZiLCAweGM1ZWZlZjJhLDB4YzVlZmVmMmEKKwlkYXRhNAkweDRmYWFhYWU1LDB4NGZhYWFhZTUsIDB4ZWRmYmZiMTYsMHhlZGZiZmIxNgorCWRhdGE0CTB4ODY0MzQzYzUsMHg4NjQzNDNjNSwgMHg5YTRkNGRkNywweDlhNGQ0ZGQ3CisJZGF0YTQJMHg2NjMzMzM1NSwweDY2MzMzMzU1LCAweDExODU4NTk0LDB4MTE4NTg1OTQKKwlkYXRhNAkweDhhNDU0NWNmLDB4OGE0NTQ1Y2YsIDB4ZTlmOWY5MTAsMHhlOWY5ZjkxMAorCWRhdGE0CTB4MDQwMjAyMDYsMHgwNDAyMDIwNiwgMHhmZTdmN2Y4MSwweGZlN2Y3ZjgxCisJZGF0YTQJMHhhMDUwNTBmMCwweGEwNTA1MGYwLCAweDc4M2MzYzQ0LDB4NzgzYzNjNDQKKwlkYXRhNAkweDI1OWY5ZmJhLDB4MjU5ZjlmYmEsIDB4NGJhOGE4ZTMsMHg0YmE4YThlMworCWRhdGE0CTB4YTI1MTUxZjMsMHhhMjUxNTFmMywgMHg1ZGEzYTNmZSwweDVkYTNhM2ZlCisJZGF0YTQJMHg4MDQwNDBjMCwweDgwNDA0MGMwLCAweDA1OGY4ZjhhLDB4MDU4ZjhmOGEKKwlkYXRhNAkweDNmOTI5MmFkLDB4M2Y5MjkyYWQsIDB4MjE5ZDlkYmMsMHgyMTlkOWRiYworCWRhdGE0CTB4NzAzODM4NDgsMHg3MDM4Mzg0OCwgMHhmMWY1ZjUwNCwweGYxZjVmNTA0CisJZGF0YTQJMHg2M2JjYmNkZiwweDYzYmNiY2RmLCAweDc3YjZiNmMxLDB4NzdiNmI2YzEKKwlkYXRhNAkweGFmZGFkYTc1LDB4YWZkYWRhNzUsIDB4NDIyMTIxNjMsMHg0MjIxMjE2MworCWRhdGE0CTB4MjAxMDEwMzAsMHgyMDEwMTAzMCwgMHhlNWZmZmYxYSwweGU1ZmZmZjFhCisJZGF0YTQJMHhmZGYzZjMwZSwweGZkZjNmMzBlLCAweGJmZDJkMjZkLDB4YmZkMmQyNmQKKwlkYXRhNAkweDgxY2RjZDRjLDB4ODFjZGNkNGMsIDB4MTgwYzBjMTQsMHgxODBjMGMxNAorCWRhdGE0CTB4MjYxMzEzMzUsMHgyNjEzMTMzNSwgMHhjM2VjZWMyZiwweGMzZWNlYzJmCisJZGF0YTQJMHhiZTVmNWZlMSwweGJlNWY1ZmUxLCAweDM1OTc5N2EyLDB4MzU5Nzk3YTIKKwlkYXRhNAkweDg4NDQ0NGNjLDB4ODg0NDQ0Y2MsIDB4MmUxNzE3MzksMHgyZTE3MTczOQorCWRhdGE0CTB4OTNjNGM0NTcsMHg5M2M0YzQ1NywgMHg1NWE3YTdmMiwweDU1YTdhN2YyCisJZGF0YTQJMHhmYzdlN2U4MiwweGZjN2U3ZTgyLCAweDdhM2QzZDQ3LDB4N2EzZDNkNDcKKwlkYXRhNAkweGM4NjQ2NGFjLDB4Yzg2NDY0YWMsIDB4YmE1ZDVkZTcsMHhiYTVkNWRlNworCWRhdGE0CTB4MzIxOTE5MmIsMHgzMjE5MTkyYiwgMHhlNjczNzM5NSwweGU2NzM3Mzk1CisJZGF0YTQJMHhjMDYwNjBhMCwweGMwNjA2MGEwLCAweDE5ODE4MTk4LDB4MTk4MTgxOTgKKwlkYXRhNAkweDllNGY0ZmQxLDB4OWU0ZjRmZDEsIDB4YTNkY2RjN2YsMHhhM2RjZGM3ZgorCWRhdGE0CTB4NDQyMjIyNjYsMHg0NDIyMjI2NiwgMHg1NDJhMmE3ZSwweDU0MmEyYTdlCisJZGF0YTQJMHgzYjkwOTBhYiwweDNiOTA5MGFiLCAweDBiODg4ODgzLDB4MGI4ODg4ODMKKwlkYXRhNAkweDhjNDY0NmNhLDB4OGM0NjQ2Y2EsIDB4YzdlZWVlMjksMHhjN2VlZWUyOQorCWRhdGE0CTB4NmJiOGI4ZDMsMHg2YmI4YjhkMywgMHgyODE0MTQzYywweDI4MTQxNDNjCisJZGF0YTQJMHhhN2RlZGU3OSwweGE3ZGVkZTc5LCAweGJjNWU1ZWUyLDB4YmM1ZTVlZTIKKwlkYXRhNAkweDE2MGIwYjFkLDB4MTYwYjBiMWQsIDB4YWRkYmRiNzYsMHhhZGRiZGI3NgorCWRhdGE0CTB4ZGJlMGUwM2IsMHhkYmUwZTAzYiwgMHg2NDMyMzI1NiwweDY0MzIzMjU2CisJZGF0YTQJMHg3NDNhM2E0ZSwweDc0M2EzYTRlLCAweDE0MGEwYTFlLDB4MTQwYTBhMWUKKwlkYXRhNAkweDkyNDk0OWRiLDB4OTI0OTQ5ZGIsIDB4MGMwNjA2MGEsMHgwYzA2MDYwYQorCWRhdGE0CTB4NDgyNDI0NmMsMHg0ODI0MjQ2YywgMHhiODVjNWNlNCwweGI4NWM1Y2U0CisJZGF0YTQJMHg5ZmMyYzI1ZCwweDlmYzJjMjVkLCAweGJkZDNkMzZlLDB4YmRkM2QzNmUKKwlkYXRhNAkweDQzYWNhY2VmLDB4NDNhY2FjZWYsIDB4YzQ2MjYyYTYsMHhjNDYyNjJhNgorCWRhdGE0CTB4Mzk5MTkxYTgsMHgzOTkxOTFhOCwgMHgzMTk1OTVhNCwweDMxOTU5NWE0CisJZGF0YTQJMHhkM2U0ZTQzNywweGQzZTRlNDM3LCAweGYyNzk3OThiLDB4ZjI3OTc5OGIKKwlkYXRhNAkweGQ1ZTdlNzMyLDB4ZDVlN2U3MzIsIDB4OGJjOGM4NDMsMHg4YmM4Yzg0MworCWRhdGE0CTB4NmUzNzM3NTksMHg2ZTM3Mzc1OSwgMHhkYTZkNmRiNywweGRhNmQ2ZGI3CisJZGF0YTQJMHgwMThkOGQ4YywweDAxOGQ4ZDhjLCAweGIxZDVkNTY0LDB4YjFkNWQ1NjQKKwlkYXRhNAkweDljNGU0ZWQyLDB4OWM0ZTRlZDIsIDB4NDlhOWE5ZTAsMHg0OWE5YTllMAorCWRhdGE0CTB4ZDg2YzZjYjQsMHhkODZjNmNiNCwgMHhhYzU2NTZmYSwweGFjNTY1NmZhCisJZGF0YTQJMHhmM2Y0ZjQwNywweGYzZjRmNDA3LCAweGNmZWFlYTI1LDB4Y2ZlYWVhMjUKKwlkYXRhNAkweGNhNjU2NWFmLDB4Y2E2NTY1YWYsIDB4ZjQ3YTdhOGUsMHhmNDdhN2E4ZQorCWRhdGE0CTB4NDdhZWFlZTksMHg0N2FlYWVlOSwgMHgxMDA4MDgxOCwweDEwMDgwODE4CisJZGF0YTQJMHg2ZmJhYmFkNSwweDZmYmFiYWQ1LCAweGYwNzg3ODg4LDB4ZjA3ODc4ODgKKwlkYXRhNAkweDRhMjUyNTZmLDB4NGEyNTI1NmYsIDB4NWMyZTJlNzIsMHg1YzJlMmU3MgorCWRhdGE0CTB4MzgxYzFjMjQsMHgzODFjMWMyNCwgMHg1N2E2YTZmMSwweDU3YTZhNmYxCisJZGF0YTQJMHg3M2I0YjRjNywweDczYjRiNGM3LCAweDk3YzZjNjUxLDB4OTdjNmM2NTEKKwlkYXRhNAkweGNiZThlODIzLDB4Y2JlOGU4MjMsIDB4YTFkZGRkN2MsMHhhMWRkZGQ3YworCWRhdGE0CTB4ZTg3NDc0OWMsMHhlODc0NzQ5YywgMHgzZTFmMWYyMSwweDNlMWYxZjIxCisJZGF0YTQJMHg5NjRiNGJkZCwweDk2NGI0YmRkLCAweDYxYmRiZGRjLDB4NjFiZGJkZGMKKwlkYXRhNAkweDBkOGI4Yjg2LDB4MGQ4YjhiODYsIDB4MGY4YThhODUsMHgwZjhhOGE4NQorCWRhdGE0CTB4ZTA3MDcwOTAsMHhlMDcwNzA5MCwgMHg3YzNlM2U0MiwweDdjM2UzZTQyCisJZGF0YTQJMHg3MWI1YjVjNCwweDcxYjViNWM0LCAweGNjNjY2NmFhLDB4Y2M2NjY2YWEKKwlkYXRhNAkweDkwNDg0OGQ4LDB4OTA0ODQ4ZDgsIDB4MDYwMzAzMDUsMHgwNjAzMDMwNQorCWRhdGE0CTB4ZjdmNmY2MDEsMHhmN2Y2ZjYwMSwgMHgxYzBlMGUxMiwweDFjMGUwZTEyCisJZGF0YTQJMHhjMjYxNjFhMywweGMyNjE2MWEzLCAweDZhMzUzNTVmLDB4NmEzNTM1NWYKKwlkYXRhNAkweGFlNTc1N2Y5LDB4YWU1NzU3ZjksIDB4NjliOWI5ZDAsMHg2OWI5YjlkMAorCWRhdGE0CTB4MTc4Njg2OTEsMHgxNzg2ODY5MSwgMHg5OWMxYzE1OCwweDk5YzFjMTU4CisJZGF0YTQJMHgzYTFkMWQyNywweDNhMWQxZDI3LCAweDI3OWU5ZWI5LDB4Mjc5ZTllYjkKKwlkYXRhNAkweGQ5ZTFlMTM4LDB4ZDllMWUxMzgsIDB4ZWJmOGY4MTMsMHhlYmY4ZjgxMworCWRhdGE0CTB4MmI5ODk4YjMsMHgyYjk4OThiMywgMHgyMjExMTEzMywweDIyMTExMTMzCisJZGF0YTQJMHhkMjY5NjliYiwweGQyNjk2OWJiLCAweGE5ZDlkOTcwLDB4YTlkOWQ5NzAKKwlkYXRhNAkweDA3OGU4ZTg5LDB4MDc4ZThlODksIDB4MzM5NDk0YTcsMHgzMzk0OTRhNworCWRhdGE0CTB4MmQ5YjliYjYsMHgyZDliOWJiNiwgMHgzYzFlMWUyMiwweDNjMWUxZTIyCisJZGF0YTQJMHgxNTg3ODc5MiwweDE1ODc4NzkyLCAweGM5ZTllOTIwLDB4YzllOWU5MjAKKwlkYXRhNAkweDg3Y2VjZTQ5LDB4ODdjZWNlNDksIDB4YWE1NTU1ZmYsMHhhYTU1NTVmZgorCWRhdGE0CTB4NTAyODI4NzgsMHg1MDI4Mjg3OCwgMHhhNWRmZGY3YSwweGE1ZGZkZjdhCisJZGF0YTQJMHgwMzhjOGM4ZiwweDAzOGM4YzhmLCAweDU5YTFhMWY4LDB4NTlhMWExZjgKKwlkYXRhNAkweDA5ODk4OTgwLDB4MDk4OTg5ODAsIDB4MWEwZDBkMTcsMHgxYTBkMGQxNworCWRhdGE0CTB4NjViZmJmZGEsMHg2NWJmYmZkYSwgMHhkN2U2ZTYzMSwweGQ3ZTZlNjMxCisJZGF0YTQJMHg4NDQyNDJjNiwweDg0NDI0MmM2LCAweGQwNjg2OGI4LDB4ZDA2ODY4YjgKKwlkYXRhNAkweDgyNDE0MWMzLDB4ODI0MTQxYzMsIDB4Mjk5OTk5YjAsMHgyOTk5OTliMAorCWRhdGE0CTB4NWEyZDJkNzcsMHg1YTJkMmQ3NywgMHgxZTBmMGYxMSwweDFlMGYwZjExCisJZGF0YTQJMHg3YmIwYjBjYiwweDdiYjBiMGNiLCAweGE4NTQ1NGZjLDB4YTg1NDU0ZmMKKwlkYXRhNAkweDZkYmJiYmQ2LDB4NmRiYmJiZDYsIDB4MmMxNjE2M2EsMHgyYzE2MTYzYQorLy8gVGU0OgorCWRhdGExCTB4NjMsIDB4N2MsIDB4NzcsIDB4N2IsIDB4ZjIsIDB4NmIsIDB4NmYsIDB4YzUKKwlkYXRhMQkweDMwLCAweDAxLCAweDY3LCAweDJiLCAweGZlLCAweGQ3LCAweGFiLCAweDc2CisJZGF0YTEJMHhjYSwgMHg4MiwgMHhjOSwgMHg3ZCwgMHhmYSwgMHg1OSwgMHg0NywgMHhmMAorCWRhdGExCTB4YWQsIDB4ZDQsIDB4YTIsIDB4YWYsIDB4OWMsIDB4YTQsIDB4NzIsIDB4YzAKKwlkYXRhMQkweGI3LCAweGZkLCAweDkzLCAweDI2LCAweDM2LCAweDNmLCAweGY3LCAweGNjCisJZGF0YTEJMHgzNCwgMHhhNSwgMHhlNSwgMHhmMSwgMHg3MSwgMHhkOCwgMHgzMSwgMHgxNQorCWRhdGExCTB4MDQsIDB4YzcsIDB4MjMsIDB4YzMsIDB4MTgsIDB4OTYsIDB4MDUsIDB4OWEKKwlkYXRhMQkweDA3LCAweDEyLCAweDgwLCAweGUyLCAweGViLCAweDI3LCAweGIyLCAweDc1CisJZGF0YTEJMHgwOSwgMHg4MywgMHgyYywgMHgxYSwgMHgxYiwgMHg2ZSwgMHg1YSwgMHhhMAorCWRhdGExCTB4NTIsIDB4M2IsIDB4ZDYsIDB4YjMsIDB4MjksIDB4ZTMsIDB4MmYsIDB4ODQKKwlkYXRhMQkweDUzLCAweGQxLCAweDAwLCAweGVkLCAweDIwLCAweGZjLCAweGIxLCAweDViCisJZGF0YTEJMHg2YSwgMHhjYiwgMHhiZSwgMHgzOSwgMHg0YSwgMHg0YywgMHg1OCwgMHhjZgorCWRhdGExCTB4ZDAsIDB4ZWYsIDB4YWEsIDB4ZmIsIDB4NDMsIDB4NGQsIDB4MzMsIDB4ODUKKwlkYXRhMQkweDQ1LCAweGY5LCAweDAyLCAweDdmLCAweDUwLCAweDNjLCAweDlmLCAweGE4CisJZGF0YTEJMHg1MSwgMHhhMywgMHg0MCwgMHg4ZiwgMHg5MiwgMHg5ZCwgMHgzOCwgMHhmNQorCWRhdGExCTB4YmMsIDB4YjYsIDB4ZGEsIDB4MjEsIDB4MTAsIDB4ZmYsIDB4ZjMsIDB4ZDIKKwlkYXRhMQkweGNkLCAweDBjLCAweDEzLCAweGVjLCAweDVmLCAweDk3LCAweDQ0LCAweDE3CisJZGF0YTEJMHhjNCwgMHhhNywgMHg3ZSwgMHgzZCwgMHg2NCwgMHg1ZCwgMHgxOSwgMHg3MworCWRhdGExCTB4NjAsIDB4ODEsIDB4NGYsIDB4ZGMsIDB4MjIsIDB4MmEsIDB4OTAsIDB4ODgKKwlkYXRhMQkweDQ2LCAweGVlLCAweGI4LCAweDE0LCAweGRlLCAweDVlLCAweDBiLCAweGRiCisJZGF0YTEJMHhlMCwgMHgzMiwgMHgzYSwgMHgwYSwgMHg0OSwgMHgwNiwgMHgyNCwgMHg1YworCWRhdGExCTB4YzIsIDB4ZDMsIDB4YWMsIDB4NjIsIDB4OTEsIDB4OTUsIDB4ZTQsIDB4NzkKKwlkYXRhMQkweGU3LCAweGM4LCAweDM3LCAweDZkLCAweDhkLCAweGQ1LCAweDRlLCAweGE5CisJZGF0YTEJMHg2YywgMHg1NiwgMHhmNCwgMHhlYSwgMHg2NSwgMHg3YSwgMHhhZSwgMHgwOAorCWRhdGExCTB4YmEsIDB4NzgsIDB4MjUsIDB4MmUsIDB4MWMsIDB4YTYsIDB4YjQsIDB4YzYKKwlkYXRhMQkweGU4LCAweGRkLCAweDc0LCAweDFmLCAweDRiLCAweGJkLCAweDhiLCAweDhhCisJZGF0YTEJMHg3MCwgMHgzZSwgMHhiNSwgMHg2NiwgMHg0OCwgMHgwMywgMHhmNiwgMHgwZQorCWRhdGExCTB4NjEsIDB4MzUsIDB4NTcsIDB4YjksIDB4ODYsIDB4YzEsIDB4MWQsIDB4OWUKKwlkYXRhMQkweGUxLCAweGY4LCAweDk4LCAweDExLCAweDY5LCAweGQ5LCAweDhlLCAweDk0CisJZGF0YTEJMHg5YiwgMHgxZSwgMHg4NywgMHhlOSwgMHhjZSwgMHg1NSwgMHgyOCwgMHhkZgorCWRhdGExCTB4OGMsIDB4YTEsIDB4ODksIDB4MGQsIDB4YmYsIDB4ZTYsIDB4NDIsIDB4NjgKKwlkYXRhMQkweDQxLCAweDk5LCAweDJkLCAweDBmLCAweGIwLCAweDU0LCAweGJiLCAweDE2Cisuc2l6ZQlBRVNfVGUjLDIwNDgrMjU2CS8vIEhQLVVYIGFzc2VtYmxlciBmYWlscyB0byAiLi1BRVNfVGUjIgorCisuYWxpZ24JNjQKKy5nbG9iYWwJQUVTX1RkIworLnR5cGUJQUVTX1RkIyxAb2JqZWN0CitBRVNfVGQ6CWRhdGE0CTB4NTFmNGE3NTAsMHg1MWY0YTc1MCwgMHg3ZTQxNjU1MywweDdlNDE2NTUzCisJZGF0YTQJMHgxYTE3YTRjMywweDFhMTdhNGMzLCAweDNhMjc1ZTk2LDB4M2EyNzVlOTYKKwlkYXRhNAkweDNiYWI2YmNiLDB4M2JhYjZiY2IsIDB4MWY5ZDQ1ZjEsMHgxZjlkNDVmMQorCWRhdGE0CTB4YWNmYTU4YWIsMHhhY2ZhNThhYiwgMHg0YmUzMDM5MywweDRiZTMwMzkzCisJZGF0YTQJMHgyMDMwZmE1NSwweDIwMzBmYTU1LCAweGFkNzY2ZGY2LDB4YWQ3NjZkZjYKKwlkYXRhNAkweDg4Y2M3NjkxLDB4ODhjYzc2OTEsIDB4ZjUwMjRjMjUsMHhmNTAyNGMyNQorCWRhdGE0CTB4NGZlNWQ3ZmMsMHg0ZmU1ZDdmYywgMHhjNTJhY2JkNywweGM1MmFjYmQ3CisJZGF0YTQJMHgyNjM1NDQ4MCwweDI2MzU0NDgwLCAweGI1NjJhMzhmLDB4YjU2MmEzOGYKKwlkYXRhNAkweGRlYjE1YTQ5LDB4ZGViMTVhNDksIDB4MjViYTFiNjcsMHgyNWJhMWI2NworCWRhdGE0CTB4NDVlYTBlOTgsMHg0NWVhMGU5OCwgMHg1ZGZlYzBlMSwweDVkZmVjMGUxCisJZGF0YTQJMHhjMzJmNzUwMiwweGMzMmY3NTAyLCAweDgxNGNmMDEyLDB4ODE0Y2YwMTIKKwlkYXRhNAkweDhkNDY5N2EzLDB4OGQ0Njk3YTMsIDB4NmJkM2Y5YzYsMHg2YmQzZjljNgorCWRhdGE0CTB4MDM4ZjVmZTcsMHgwMzhmNWZlNywgMHgxNTkyOWM5NSwweDE1OTI5Yzk1CisJZGF0YTQJMHhiZjZkN2FlYiwweGJmNmQ3YWViLCAweDk1NTI1OWRhLDB4OTU1MjU5ZGEKKwlkYXRhNAkweGQ0YmU4MzJkLDB4ZDRiZTgzMmQsIDB4NTg3NDIxZDMsMHg1ODc0MjFkMworCWRhdGE0CTB4NDllMDY5MjksMHg0OWUwNjkyOSwgMHg4ZWM5Yzg0NCwweDhlYzljODQ0CisJZGF0YTQJMHg3NWMyODk2YSwweDc1YzI4OTZhLCAweGY0OGU3OTc4LDB4ZjQ4ZTc5NzgKKwlkYXRhNAkweDk5NTgzZTZiLDB4OTk1ODNlNmIsIDB4MjdiOTcxZGQsMHgyN2I5NzFkZAorCWRhdGE0CTB4YmVlMTRmYjYsMHhiZWUxNGZiNiwgMHhmMDg4YWQxNywweGYwODhhZDE3CisJZGF0YTQJMHhjOTIwYWM2NiwweGM5MjBhYzY2LCAweDdkY2UzYWI0LDB4N2RjZTNhYjQKKwlkYXRhNAkweDYzZGY0YTE4LDB4NjNkZjRhMTgsIDB4ZTUxYTMxODIsMHhlNTFhMzE4MgorCWRhdGE0CTB4OTc1MTMzNjAsMHg5NzUxMzM2MCwgMHg2MjUzN2Y0NSwweDYyNTM3ZjQ1CisJZGF0YTQJMHhiMTY0NzdlMCwweGIxNjQ3N2UwLCAweGJiNmJhZTg0LDB4YmI2YmFlODQKKwlkYXRhNAkweGZlODFhMDFjLDB4ZmU4MWEwMWMsIDB4ZjkwODJiOTQsMHhmOTA4MmI5NAorCWRhdGE0CTB4NzA0ODY4NTgsMHg3MDQ4Njg1OCwgMHg4ZjQ1ZmQxOSwweDhmNDVmZDE5CisJZGF0YTQJMHg5NGRlNmM4NywweDk0ZGU2Yzg3LCAweDUyN2JmOGI3LDB4NTI3YmY4YjcKKwlkYXRhNAkweGFiNzNkMzIzLDB4YWI3M2QzMjMsIDB4NzI0YjAyZTIsMHg3MjRiMDJlMgorCWRhdGE0CTB4ZTMxZjhmNTcsMHhlMzFmOGY1NywgMHg2NjU1YWIyYSwweDY2NTVhYjJhCisJZGF0YTQJMHhiMmViMjgwNywweGIyZWIyODA3LCAweDJmYjVjMjAzLDB4MmZiNWMyMDMKKwlkYXRhNAkweDg2YzU3YjlhLDB4ODZjNTdiOWEsIDB4ZDMzNzA4YTUsMHhkMzM3MDhhNQorCWRhdGE0CTB4MzAyODg3ZjIsMHgzMDI4ODdmMiwgMHgyM2JmYTViMiwweDIzYmZhNWIyCisJZGF0YTQJMHgwMjAzNmFiYSwweDAyMDM2YWJhLCAweGVkMTY4MjVjLDB4ZWQxNjgyNWMKKwlkYXRhNAkweDhhY2YxYzJiLDB4OGFjZjFjMmIsIDB4YTc3OWI0OTIsMHhhNzc5YjQ5MgorCWRhdGE0CTB4ZjMwN2YyZjAsMHhmMzA3ZjJmMCwgMHg0ZTY5ZTJhMSwweDRlNjllMmExCisJZGF0YTQJMHg2NWRhZjRjZCwweDY1ZGFmNGNkLCAweDA2MDViZWQ1LDB4MDYwNWJlZDUKKwlkYXRhNAkweGQxMzQ2MjFmLDB4ZDEzNDYyMWYsIDB4YzRhNmZlOGEsMHhjNGE2ZmU4YQorCWRhdGE0CTB4MzQyZTUzOWQsMHgzNDJlNTM5ZCwgMHhhMmYzNTVhMCwweGEyZjM1NWEwCisJZGF0YTQJMHgwNThhZTEzMiwweDA1OGFlMTMyLCAweGE0ZjZlYjc1LDB4YTRmNmViNzUKKwlkYXRhNAkweDBiODNlYzM5LDB4MGI4M2VjMzksIDB4NDA2MGVmYWEsMHg0MDYwZWZhYQorCWRhdGE0CTB4NWU3MTlmMDYsMHg1ZTcxOWYwNiwgMHhiZDZlMTA1MSwweGJkNmUxMDUxCisJZGF0YTQJMHgzZTIxOGFmOSwweDNlMjE4YWY5LCAweDk2ZGQwNjNkLDB4OTZkZDA2M2QKKwlkYXRhNAkweGRkM2UwNWFlLDB4ZGQzZTA1YWUsIDB4NGRlNmJkNDYsMHg0ZGU2YmQ0NgorCWRhdGE0CTB4OTE1NDhkYjUsMHg5MTU0OGRiNSwgMHg3MWM0NWQwNSwweDcxYzQ1ZDA1CisJZGF0YTQJMHgwNDA2ZDQ2ZiwweDA0MDZkNDZmLCAweDYwNTAxNWZmLDB4NjA1MDE1ZmYKKwlkYXRhNAkweDE5OThmYjI0LDB4MTk5OGZiMjQsIDB4ZDZiZGU5OTcsMHhkNmJkZTk5NworCWRhdGE0CTB4ODk0MDQzY2MsMHg4OTQwNDNjYywgMHg2N2Q5OWU3NywweDY3ZDk5ZTc3CisJZGF0YTQJMHhiMGU4NDJiZCwweGIwZTg0MmJkLCAweDA3ODk4Yjg4LDB4MDc4OThiODgKKwlkYXRhNAkweGU3MTk1YjM4LDB4ZTcxOTViMzgsIDB4NzljOGVlZGIsMHg3OWM4ZWVkYgorCWRhdGE0CTB4YTE3YzBhNDcsMHhhMTdjMGE0NywgMHg3YzQyMGZlOSwweDdjNDIwZmU5CisJZGF0YTQJMHhmODg0MWVjOSwweGY4ODQxZWM5LCAweDAwMDAwMDAwLDB4MDAwMDAwMDAKKwlkYXRhNAkweDA5ODA4NjgzLDB4MDk4MDg2ODMsIDB4MzIyYmVkNDgsMHgzMjJiZWQ0OAorCWRhdGE0CTB4MWUxMTcwYWMsMHgxZTExNzBhYywgMHg2YzVhNzI0ZSwweDZjNWE3MjRlCisJZGF0YTQJMHhmZDBlZmZmYiwweGZkMGVmZmZiLCAweDBmODUzODU2LDB4MGY4NTM4NTYKKwlkYXRhNAkweDNkYWVkNTFlLDB4M2RhZWQ1MWUsIDB4MzYyZDM5MjcsMHgzNjJkMzkyNworCWRhdGE0CTB4MGEwZmQ5NjQsMHgwYTBmZDk2NCwgMHg2ODVjYTYyMSwweDY4NWNhNjIxCisJZGF0YTQJMHg5YjViNTRkMSwweDliNWI1NGQxLCAweDI0MzYyZTNhLDB4MjQzNjJlM2EKKwlkYXRhNAkweDBjMGE2N2IxLDB4MGMwYTY3YjEsIDB4OTM1N2U3MGYsMHg5MzU3ZTcwZgorCWRhdGE0CTB4YjRlZTk2ZDIsMHhiNGVlOTZkMiwgMHgxYjliOTE5ZSwweDFiOWI5MTllCisJZGF0YTQJMHg4MGMwYzU0ZiwweDgwYzBjNTRmLCAweDYxZGMyMGEyLDB4NjFkYzIwYTIKKwlkYXRhNAkweDVhNzc0YjY5LDB4NWE3NzRiNjksIDB4MWMxMjFhMTYsMHgxYzEyMWExNgorCWRhdGE0CTB4ZTI5M2JhMGEsMHhlMjkzYmEwYSwgMHhjMGEwMmFlNSwweGMwYTAyYWU1CisJZGF0YTQJMHgzYzIyZTA0MywweDNjMjJlMDQzLCAweDEyMWIxNzFkLDB4MTIxYjE3MWQKKwlkYXRhNAkweDBlMDkwZDBiLDB4MGUwOTBkMGIsIDB4ZjI4YmM3YWQsMHhmMjhiYzdhZAorCWRhdGE0CTB4MmRiNmE4YjksMHgyZGI2YThiOSwgMHgxNDFlYTljOCwweDE0MWVhOWM4CisJZGF0YTQJMHg1N2YxMTk4NSwweDU3ZjExOTg1LCAweGFmNzUwNzRjLDB4YWY3NTA3NGMKKwlkYXRhNAkweGVlOTlkZGJiLDB4ZWU5OWRkYmIsIDB4YTM3ZjYwZmQsMHhhMzdmNjBmZAorCWRhdGE0CTB4ZjcwMTI2OWYsMHhmNzAxMjY5ZiwgMHg1YzcyZjViYywweDVjNzJmNWJjCisJZGF0YTQJMHg0NDY2M2JjNSwweDQ0NjYzYmM1LCAweDViZmI3ZTM0LDB4NWJmYjdlMzQKKwlkYXRhNAkweDhiNDMyOTc2LDB4OGI0MzI5NzYsIDB4Y2IyM2M2ZGMsMHhjYjIzYzZkYworCWRhdGE0CTB4YjZlZGZjNjgsMHhiNmVkZmM2OCwgMHhiOGU0ZjE2MywweGI4ZTRmMTYzCisJZGF0YTQJMHhkNzMxZGNjYSwweGQ3MzFkY2NhLCAweDQyNjM4NTEwLDB4NDI2Mzg1MTAKKwlkYXRhNAkweDEzOTcyMjQwLDB4MTM5NzIyNDAsIDB4ODRjNjExMjAsMHg4NGM2MTEyMAorCWRhdGE0CTB4ODU0YTI0N2QsMHg4NTRhMjQ3ZCwgMHhkMmJiM2RmOCwweGQyYmIzZGY4CisJZGF0YTQJMHhhZWY5MzIxMSwweGFlZjkzMjExLCAweGM3MjlhMTZkLDB4YzcyOWExNmQKKwlkYXRhNAkweDFkOWUyZjRiLDB4MWQ5ZTJmNGIsIDB4ZGNiMjMwZjMsMHhkY2IyMzBmMworCWRhdGE0CTB4MGQ4NjUyZWMsMHgwZDg2NTJlYywgMHg3N2MxZTNkMCwweDc3YzFlM2QwCisJZGF0YTQJMHgyYmIzMTY2YywweDJiYjMxNjZjLCAweGE5NzBiOTk5LDB4YTk3MGI5OTkKKwlkYXRhNAkweDExOTQ0OGZhLDB4MTE5NDQ4ZmEsIDB4NDdlOTY0MjIsMHg0N2U5NjQyMgorCWRhdGE0CTB4YThmYzhjYzQsMHhhOGZjOGNjNCwgMHhhMGYwM2YxYSwweGEwZjAzZjFhCisJZGF0YTQJMHg1NjdkMmNkOCwweDU2N2QyY2Q4LCAweDIyMzM5MGVmLDB4MjIzMzkwZWYKKwlkYXRhNAkweDg3NDk0ZWM3LDB4ODc0OTRlYzcsIDB4ZDkzOGQxYzEsMHhkOTM4ZDFjMQorCWRhdGE0CTB4OGNjYWEyZmUsMHg4Y2NhYTJmZSwgMHg5OGQ0MGIzNiwweDk4ZDQwYjM2CisJZGF0YTQJMHhhNmY1ODFjZiwweGE2ZjU4MWNmLCAweGE1N2FkZTI4LDB4YTU3YWRlMjgKKwlkYXRhNAkweGRhYjc4ZTI2LDB4ZGFiNzhlMjYsIDB4M2ZhZGJmYTQsMHgzZmFkYmZhNAorCWRhdGE0CTB4MmMzYTlkZTQsMHgyYzNhOWRlNCwgMHg1MDc4OTIwZCwweDUwNzg5MjBkCisJZGF0YTQJMHg2YTVmY2M5YiwweDZhNWZjYzliLCAweDU0N2U0NjYyLDB4NTQ3ZTQ2NjIKKwlkYXRhNAkweGY2OGQxM2MyLDB4ZjY4ZDEzYzIsIDB4OTBkOGI4ZTgsMHg5MGQ4YjhlOAorCWRhdGE0CTB4MmUzOWY3NWUsMHgyZTM5Zjc1ZSwgMHg4MmMzYWZmNSwweDgyYzNhZmY1CisJZGF0YTQJMHg5ZjVkODBiZSwweDlmNWQ4MGJlLCAweDY5ZDA5MzdjLDB4NjlkMDkzN2MKKwlkYXRhNAkweDZmZDUyZGE5LDB4NmZkNTJkYTksIDB4Y2YyNTEyYjMsMHhjZjI1MTJiMworCWRhdGE0CTB4YzhhYzk5M2IsMHhjOGFjOTkzYiwgMHgxMDE4N2RhNywweDEwMTg3ZGE3CisJZGF0YTQJMHhlODljNjM2ZSwweGU4OWM2MzZlLCAweGRiM2JiYjdiLDB4ZGIzYmJiN2IKKwlkYXRhNAkweGNkMjY3ODA5LDB4Y2QyNjc4MDksIDB4NmU1OTE4ZjQsMHg2ZTU5MThmNAorCWRhdGE0CTB4ZWM5YWI3MDEsMHhlYzlhYjcwMSwgMHg4MzRmOWFhOCwweDgzNGY5YWE4CisJZGF0YTQJMHhlNjk1NmU2NSwweGU2OTU2ZTY1LCAweGFhZmZlNjdlLDB4YWFmZmU2N2UKKwlkYXRhNAkweDIxYmNjZjA4LDB4MjFiY2NmMDgsIDB4ZWYxNWU4ZTYsMHhlZjE1ZThlNgorCWRhdGE0CTB4YmFlNzliZDksMHhiYWU3OWJkOSwgMHg0YTZmMzZjZSwweDRhNmYzNmNlCisJZGF0YTQJMHhlYTlmMDlkNCwweGVhOWYwOWQ0LCAweDI5YjA3Y2Q2LDB4MjliMDdjZDYKKwlkYXRhNAkweDMxYTRiMmFmLDB4MzFhNGIyYWYsIDB4MmEzZjIzMzEsMHgyYTNmMjMzMQorCWRhdGE0CTB4YzZhNTk0MzAsMHhjNmE1OTQzMCwgMHgzNWEyNjZjMCwweDM1YTI2NmMwCisJZGF0YTQJMHg3NDRlYmMzNywweDc0NGViYzM3LCAweGZjODJjYWE2LDB4ZmM4MmNhYTYKKwlkYXRhNAkweGUwOTBkMGIwLDB4ZTA5MGQwYjAsIDB4MzNhN2Q4MTUsMHgzM2E3ZDgxNQorCWRhdGE0CTB4ZjEwNDk4NGEsMHhmMTA0OTg0YSwgMHg0MWVjZGFmNywweDQxZWNkYWY3CisJZGF0YTQJMHg3ZmNkNTAwZSwweDdmY2Q1MDBlLCAweDE3OTFmNjJmLDB4MTc5MWY2MmYKKwlkYXRhNAkweDc2NGRkNjhkLDB4NzY0ZGQ2OGQsIDB4NDNlZmIwNGQsMHg0M2VmYjA0ZAorCWRhdGE0CTB4Y2NhYTRkNTQsMHhjY2FhNGQ1NCwgMHhlNDk2MDRkZiwweGU0OTYwNGRmCisJZGF0YTQJMHg5ZWQxYjVlMywweDllZDFiNWUzLCAweDRjNmE4ODFiLDB4NGM2YTg4MWIKKwlkYXRhNAkweGMxMmMxZmI4LDB4YzEyYzFmYjgsIDB4NDY2NTUxN2YsMHg0NjY1NTE3ZgorCWRhdGE0CTB4OWQ1ZWVhMDQsMHg5ZDVlZWEwNCwgMHgwMThjMzU1ZCwweDAxOGMzNTVkCisJZGF0YTQJMHhmYTg3NzQ3MywweGZhODc3NDczLCAweGZiMGI0MTJlLDB4ZmIwYjQxMmUKKwlkYXRhNAkweGIzNjcxZDVhLDB4YjM2NzFkNWEsIDB4OTJkYmQyNTIsMHg5MmRiZDI1MgorCWRhdGE0CTB4ZTkxMDU2MzMsMHhlOTEwNTYzMywgMHg2ZGQ2NDcxMywweDZkZDY0NzEzCisJZGF0YTQJMHg5YWQ3NjE4YywweDlhZDc2MThjLCAweDM3YTEwYzdhLDB4MzdhMTBjN2EKKwlkYXRhNAkweDU5ZjgxNDhlLDB4NTlmODE0OGUsIDB4ZWIxMzNjODksMHhlYjEzM2M4OQorCWRhdGE0CTB4Y2VhOTI3ZWUsMHhjZWE5MjdlZSwgMHhiNzYxYzkzNSwweGI3NjFjOTM1CisJZGF0YTQJMHhlMTFjZTVlZCwweGUxMWNlNWVkLCAweDdhNDdiMTNjLDB4N2E0N2IxM2MKKwlkYXRhNAkweDljZDJkZjU5LDB4OWNkMmRmNTksIDB4NTVmMjczM2YsMHg1NWYyNzMzZgorCWRhdGE0CTB4MTgxNGNlNzksMHgxODE0Y2U3OSwgMHg3M2M3MzdiZiwweDczYzczN2JmCisJZGF0YTQJMHg1M2Y3Y2RlYSwweDUzZjdjZGVhLCAweDVmZmRhYTViLDB4NWZmZGFhNWIKKwlkYXRhNAkweGRmM2Q2ZjE0LDB4ZGYzZDZmMTQsIDB4Nzg0NGRiODYsMHg3ODQ0ZGI4NgorCWRhdGE0CTB4Y2FhZmYzODEsMHhjYWFmZjM4MSwgMHhiOTY4YzQzZSwweGI5NjhjNDNlCisJZGF0YTQJMHgzODI0MzQyYywweDM4MjQzNDJjLCAweGMyYTM0MDVmLDB4YzJhMzQwNWYKKwlkYXRhNAkweDE2MWRjMzcyLDB4MTYxZGMzNzIsIDB4YmNlMjI1MGMsMHhiY2UyMjUwYworCWRhdGE0CTB4MjgzYzQ5OGIsMHgyODNjNDk4YiwgMHhmZjBkOTU0MSwweGZmMGQ5NTQxCisJZGF0YTQJMHgzOWE4MDE3MSwweDM5YTgwMTcxLCAweDA4MGNiM2RlLDB4MDgwY2IzZGUKKwlkYXRhNAkweGQ4YjRlNDljLDB4ZDhiNGU0OWMsIDB4NjQ1NmMxOTAsMHg2NDU2YzE5MAorCWRhdGE0CTB4N2JjYjg0NjEsMHg3YmNiODQ2MSwgMHhkNTMyYjY3MCwweGQ1MzJiNjcwCisJZGF0YTQJMHg0ODZjNWM3NCwweDQ4NmM1Yzc0LCAweGQwYjg1NzQyLDB4ZDBiODU3NDIKKy8vIFRkNDoKKwlkYXRhMQkweDUyLCAweDA5LCAweDZhLCAweGQ1LCAweDMwLCAweDM2LCAweGE1LCAweDM4CisJZGF0YTEJMHhiZiwgMHg0MCwgMHhhMywgMHg5ZSwgMHg4MSwgMHhmMywgMHhkNywgMHhmYgorCWRhdGExCTB4N2MsIDB4ZTMsIDB4MzksIDB4ODIsIDB4OWIsIDB4MmYsIDB4ZmYsIDB4ODcKKwlkYXRhMQkweDM0LCAweDhlLCAweDQzLCAweDQ0LCAweGM0LCAweGRlLCAweGU5LCAweGNiCisJZGF0YTEJMHg1NCwgMHg3YiwgMHg5NCwgMHgzMiwgMHhhNiwgMHhjMiwgMHgyMywgMHgzZAorCWRhdGExCTB4ZWUsIDB4NGMsIDB4OTUsIDB4MGIsIDB4NDIsIDB4ZmEsIDB4YzMsIDB4NGUKKwlkYXRhMQkweDA4LCAweDJlLCAweGExLCAweDY2LCAweDI4LCAweGQ5LCAweDI0LCAweGIyCisJZGF0YTEJMHg3NiwgMHg1YiwgMHhhMiwgMHg0OSwgMHg2ZCwgMHg4YiwgMHhkMSwgMHgyNQorCWRhdGExCTB4NzIsIDB4ZjgsIDB4ZjYsIDB4NjQsIDB4ODYsIDB4NjgsIDB4OTgsIDB4MTYKKwlkYXRhMQkweGQ0LCAweGE0LCAweDVjLCAweGNjLCAweDVkLCAweDY1LCAweGI2LCAweDkyCisJZGF0YTEJMHg2YywgMHg3MCwgMHg0OCwgMHg1MCwgMHhmZCwgMHhlZCwgMHhiOSwgMHhkYQorCWRhdGExCTB4NWUsIDB4MTUsIDB4NDYsIDB4NTcsIDB4YTcsIDB4OGQsIDB4OWQsIDB4ODQKKwlkYXRhMQkweDkwLCAweGQ4LCAweGFiLCAweDAwLCAweDhjLCAweGJjLCAweGQzLCAweDBhCisJZGF0YTEJMHhmNywgMHhlNCwgMHg1OCwgMHgwNSwgMHhiOCwgMHhiMywgMHg0NSwgMHgwNgorCWRhdGExCTB4ZDAsIDB4MmMsIDB4MWUsIDB4OGYsIDB4Y2EsIDB4M2YsIDB4MGYsIDB4MDIKKwlkYXRhMQkweGMxLCAweGFmLCAweGJkLCAweDAzLCAweDAxLCAweDEzLCAweDhhLCAweDZiCisJZGF0YTEJMHgzYSwgMHg5MSwgMHgxMSwgMHg0MSwgMHg0ZiwgMHg2NywgMHhkYywgMHhlYQorCWRhdGExCTB4OTcsIDB4ZjIsIDB4Y2YsIDB4Y2UsIDB4ZjAsIDB4YjQsIDB4ZTYsIDB4NzMKKwlkYXRhMQkweDk2LCAweGFjLCAweDc0LCAweDIyLCAweGU3LCAweGFkLCAweDM1LCAweDg1CisJZGF0YTEJMHhlMiwgMHhmOSwgMHgzNywgMHhlOCwgMHgxYywgMHg3NSwgMHhkZiwgMHg2ZQorCWRhdGExCTB4NDcsIDB4ZjEsIDB4MWEsIDB4NzEsIDB4MWQsIDB4MjksIDB4YzUsIDB4ODkKKwlkYXRhMQkweDZmLCAweGI3LCAweDYyLCAweDBlLCAweGFhLCAweDE4LCAweGJlLCAweDFiCisJZGF0YTEJMHhmYywgMHg1NiwgMHgzZSwgMHg0YiwgMHhjNiwgMHhkMiwgMHg3OSwgMHgyMAorCWRhdGExCTB4OWEsIDB4ZGIsIDB4YzAsIDB4ZmUsIDB4NzgsIDB4Y2QsIDB4NWEsIDB4ZjQKKwlkYXRhMQkweDFmLCAweGRkLCAweGE4LCAweDMzLCAweDg4LCAweDA3LCAweGM3LCAweDMxCisJZGF0YTEJMHhiMSwgMHgxMiwgMHgxMCwgMHg1OSwgMHgyNywgMHg4MCwgMHhlYywgMHg1ZgorCWRhdGExCTB4NjAsIDB4NTEsIDB4N2YsIDB4YTksIDB4MTksIDB4YjUsIDB4NGEsIDB4MGQKKwlkYXRhMQkweDJkLCAweGU1LCAweDdhLCAweDlmLCAweDkzLCAweGM5LCAweDljLCAweGVmCisJZGF0YTEJMHhhMCwgMHhlMCwgMHgzYiwgMHg0ZCwgMHhhZSwgMHgyYSwgMHhmNSwgMHhiMAorCWRhdGExCTB4YzgsIDB4ZWIsIDB4YmIsIDB4M2MsIDB4ODMsIDB4NTMsIDB4OTksIDB4NjEKKwlkYXRhMQkweDE3LCAweDJiLCAweDA0LCAweDdlLCAweGJhLCAweDc3LCAweGQ2LCAweDI2CisJZGF0YTEJMHhlMSwgMHg2OSwgMHgxNCwgMHg2MywgMHg1NSwgMHgyMSwgMHgwYywgMHg3ZAorLnNpemUJQUVTX1RkIywyMDQ4KzI1NgkvLyBIUC1VWCBhc3NlbWJsZXIgZmFpbHMgdG8gIi4tQUVTX1RkIyIKZGlmZiAtLWdpdCBhL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYXNtL2Flcy1taXBzLnBsIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzLW1pcHMucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNlNmRlZgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYXNtL2Flcy1taXBzLnBsCkBAIC0wLDAgKzEsMTYxMSBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9Ab3BlbnNzbC5vcmc+IGZvciB0aGUgT3BlblNTTAorIyBwcm9qZWN0LiBUaGUgbW9kdWxlIGlzLCBob3dldmVyLCBkdWFsIGxpY2Vuc2VkIHVuZGVyIE9wZW5TU0wgYW5kCisjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRhaW4gaXQuIEZvciBmdXJ0aGVyCisjIGRldGFpbHMgc2VlIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL2NyeXB0b2dhbXMvLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIEFFUyBmb3IgTUlQUworCisjIE9jdG9iZXIgMjAxMAorIworIyBDb2RlIHVzZXMgMUtbKzI1NkJdIFMtYm94IGFuZCBvbiBzaW5nbGUtaXNzdWUgY29yZSBbc3VjaCBhcyBSNTAwMF0KKyMgc3BlbmRzIH42OCBjeWNsZXMgcGVyIGJ5dGUgcHJvY2Vzc2VkIHdpdGggMTI4LWJpdCBrZXkuIFRoaXMgaXMgfjE2JQorIyBmYXN0ZXIgdGhhbiBnY2MtZ2VuZXJhdGVkIGNvZGUsIHdoaWNoIGlzIG5vdCB2ZXJ5IGltcHJlc3NpdmUuIEJ1dAorIyByZWNhbGwgdGhhdCBjb21wcmVzc2VkIFMtYm94IHJlcXVpcmVzIGV4dHJhIHByb2Nlc3NpbmcsIG5hbWVseQorIyBhZGRpdGlvbmFsIHJvdGF0aW9ucy4gUm90YXRpb25zIGFyZSBpbXBsZW1lbnRlZCB3aXRoIGx3bC9sd3IgcGFpcnMsCisjIHdoaWNoIGlzIG5vcm1hbGx5IHVzZWQgZm9yIGxvYWRpbmcgdW5hbGlnbmVkIGRhdGEuIEFub3RoZXIgY29vbAorIyB0aGluZyBhYm91dCB0aGlzIG1vZHVsZSBpcyBpdHMgZW5kaWFuIG5ldXRyYWxpdHksIHdoaWNoIG1lYW5zIHRoYXQKKyMgaXQgcHJvY2Vzc2VzIGRhdGEgd2l0aG91dCBldmVyIGNoYW5naW5nIGJ5dGUgb3JkZXIuLi4KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUaGVyZSBpcyBhIG51bWJlciBvZiBNSVBTIEFCSSBpbiB1c2UsIE8zMiBhbmQgTjMyLzY0IGFyZSBtb3N0CisjIHdpZGVseSB1c2VkLiBUaGVuIHRoZXJlIGlzIGEgbmV3IGNvbnRlbmRlcjogTlVCSS4gSXQgYXBwZWFycyB0aGF0IGlmCisjIG9uZSBwaWNrcyB0aGUgbGF0dGVyLCBpdCdzIHBvc3NpYmxlIHRvIGFycmFuZ2UgY29kZSBpbiBBQkkgbmV1dHJhbAorIyBtYW5uZXIuIFRoZXJlZm9yZSBsZXQncyBzdGljayB0byBOVUJJIHJlZ2lzdGVyIGxheW91dDoKKyMKKygkemVybywkYXQsJHQwLCR0MSwkdDIpPW1hcCgiXCQkXyIsKDAuLjIsMjQsMjUpKTsKKygkYTAsJGExLCRhMiwkYTMsJGE0LCRhNSwkYTYsJGE3KT1tYXAoIlwkJF8iLCg0Li4xMSkpOworKCRzMCwkczEsJHMyLCRzMywkczQsJHM1LCRzNiwkczcsJHM4LCRzOSwkczEwLCRzMTEpPW1hcCgiXCQkXyIsKDEyLi4yMykpOworKCRncCwkdHAsJHNwLCRmcCwkcmEpPW1hcCgiXCQkXyIsKDMsMjguLjMxKSk7CisjCisjIFRoZSByZXR1cm4gdmFsdWUgaXMgcGxhY2VkIGluICRhMC4gRm9sbG93aW5nIGNvZGluZyBydWxlcyBmYWNpbGl0YXRlCisjIGludGVyb3BlcmFiaWxpdHk6CisjCisjIC0gbmV2ZXIgZXZlciB0b3VjaCAkdHAsICJ0aHJlYWQgcG9pbnRlciIsIGZvcm1lciAkZ3A7CisjIC0gY29weSByZXR1cm4gdmFsdWUgdG8gJHQwLCBmb3JtZXIgJHYwIFtvciB0byAkYTAgaWYgeW91J3JlIGFkYXB0aW5nCisjICAgb2xkIGNvZGVdOworIyAtIG9uIE8zMiBwb3B1bGF0ZSAkYTQtJGE3IHdpdGggJ2x3ICRhTiw0Kk4oJHNwKScgaWYgbmVjZXNzYXJ5OworIworIyBGb3IgcmVmZXJlbmNlIGhlcmUgaXMgcmVnaXN0ZXIgbGF5b3V0IGZvciBOMzIvNjQgTUlQUyBBQklzOgorIworIyAoJHplcm8sJGF0LCR2MCwkdjEpPW1hcCgiXCQkXyIsKDAuLjMpKTsKKyMgKCRhMCwkYTEsJGEyLCRhMywkYTQsJGE1LCRhNiwkYTcpPW1hcCgiXCQkXyIsKDQuLjExKSk7CisjICgkdDAsJHQxLCR0MiwkdDMsJHQ4LCR0OSk9bWFwKCJcJCRfIiwoMTIuLjE1LDI0LDI1KSk7CisjICgkczAsJHMxLCRzMiwkczMsJHM0LCRzNSwkczYsJHM3KT1tYXAoIlwkJF8iLCgxNi4uMjMpKTsKKyMgKCRncCwkc3AsJGZwLCRyYSk9bWFwKCJcJCRfIiwoMjguLjMxKSk7CisjCiskZmxhdm91ciA9IHNoaWZ0OyAjIHN1cHBvcnRlZCBmbGF2b3VycyBhcmUgbzMyLG4zMiw2NCxudWJpMzIsbnViaTY0CisKK2lmICgkZmxhdm91ciA9fiAvNjR8bjMyL2kpIHsKKwkkUFRSX0FERD0iZGFkZCI7CSMgaW5jaWRlbnRhbGx5IHdvcmtzIGV2ZW4gb24gbjMyCisJJFBUUl9TVUI9ImRzdWIiOwkjIGluY2lkZW50YWxseSB3b3JrcyBldmVuIG9uIG4zMgorCSRSRUdfUz0ic2QiOworCSRSRUdfTD0ibGQiOworCSRQVFJfU0xMPSJkc2xsIjsJIyBpbmNpZGVudGFsbHkgd29ya3MgZXZlbiBvbiBuMzIKKwkkU1pSRUc9ODsKK30gZWxzZSB7CisJJFBUUl9BREQ9ImFkZCI7CisJJFBUUl9TVUI9InN1YiI7CisJJFJFR19TPSJzdyI7CisJJFJFR19MPSJsdyI7CisJJFBUUl9TTEw9InNsbCI7CisJJFNaUkVHPTQ7Cit9CiskcGYgPSAoJGZsYXZvdXIgPX4gL251YmkvaSkgPyAkdDAgOiAkdDI7CisjCisjIDxhcHByb0BvcGVuc3NsLm9yZz4KKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJGJpZ19lbmRpYW49KGBlY2hvIE1JUFNFTCB8ICRFTlZ7Q0N9IC1FIC1QIC1gPX4vTUlQU0VMLyk/MTowOworCitmb3IgKEBBUkdWKSB7CSRvdXRwdXQ9JF8gaWYgKC9eXHdbXHdcLV0qXC5cdyskLyk7CX0KK29wZW4gU1RET1VULCI+JG91dHB1dCI7CisKK2lmICghZGVmaW5lZCgkYmlnX2VuZGlhbikpCit7ICAgICRiaWdfZW5kaWFuPSh1bnBhY2soJ0wnLHBhY2soJ04nLDEpKT09MSk7ICAgfQorCit3aGlsZSAoKCRvdXRwdXQ9c2hpZnQpICYmICgkb3V0cHV0IX4vXlx3W1x3XC1dKlwuXHcrJC8pKSB7fQorb3BlbiBTVERPVVQsIj4kb3V0cHV0IjsKKworbXkgKCRNU0IsJExTQik9KDAsMyk7CSMgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gbGl0dGxlLWVuZGlhbgorCiskY29kZS49PDxfX187CisudGV4dAorI2lmZGVmIE9QRU5TU0xfRklQU0NBTklTVEVSCisjIGluY2x1ZGUgPG9wZW5zc2wvZmlwc3N5bXMuaD4KKyNlbmRpZgorCisjaWYgIWRlZmluZWQoX192eHdvcmtzKSB8fCBkZWZpbmVkKF9fcGljX18pCisub3B0aW9uCXBpYzIKKyNlbmRpZgorLnNldAlub2F0CitfX18KKwwKK3t7eworbXkgJEZSQU1FU0laRT0xNiokU1pSRUc7CitteSAkU0FWRURfUkVHU19NQVNLID0gKCRmbGF2b3VyID1+IC9udWJpL2kpID8gMHhjMGZmZjAwOCA6IDB4YzBmZjAwMDA7CisKK215ICgkaW5wLCRvdXQsJGtleSwkVGJsLCRzMCwkczEsJHMyLCRzMyk9KCRhMCwkYTEsJGEyLCRhMywkYTQsJGE1LCRhNiwkYTcpOworbXkgKCRpMCwkaTEsJGkyLCRpMyk9KCRhdCwkdDAsJHQxLCR0Mik7CitteSAoJHQwLCR0MSwkdDIsJHQzLCR0NCwkdDUsJHQ2LCR0NywkdDgsJHQ5LCR0MTAsJHQxMSkgPSBtYXAoIlwkJF8iLCgxMi4uMjMpKTsKK215ICgka2V5MCwkY250KT0oJGdwLCRmcCk7CisKKyMgaW5zdHVjdGlvbiBvcmRlcmluZyBpcyAic3RvbGVuIiBmcm9tIG91dHB1dCBmcm9tIE1JUFNwcm8gYXNzZW1ibGVyCisjIGludm9rZWQgd2l0aCAtbWlwczMgLU8zIGFyZ3VtZW50cy4uLgorJGNvZGUuPTw8X19fOworLmFsaWduCTUKKy5lbnQJX21pcHNfQUVTX2VuY3J5cHQKK19taXBzX0FFU19lbmNyeXB0OgorCS5mcmFtZQkkc3AsMCwkcmEKKwkuc2V0CXJlb3JkZXIKKwlsdwkkdDAsMCgka2V5KQorCWx3CSR0MSw0KCRrZXkpCisJbHcJJHQyLDgoJGtleSkKKwlsdwkkdDMsMTIoJGtleSkKKwlsdwkkY250LDI0MCgka2V5KQorCSRQVFJfQUREICRrZXkwLCRrZXksMTYKKworCXhvcgkkczAsJHQwCisJeG9yCSRzMSwkdDEKKwl4b3IJJHMyLCR0MgorCXhvcgkkczMsJHQzCisKKwlzdWIJJGNudCwxCisJX3h0cgkkaTAsJHMxLDE2LTIKKy5Mb29wX2VuYzoKKwlfeHRyCSRpMSwkczIsMTYtMgorCV94dHIJJGkyLCRzMywxNi0yCisJX3h0cgkkaTMsJHMwLDE2LTIKKwlhbmQJJGkwLDB4M2ZjCisJYW5kCSRpMSwweDNmYworCWFuZAkkaTIsMHgzZmMKKwlhbmQJJGkzLDB4M2ZjCisJJFBUUl9BREQgJGkwLCRUYmwKKwkkUFRSX0FERCAkaTEsJFRibAorCSRQVFJfQUREICRpMiwkVGJsCisJJFBUUl9BREQgJGkzLCRUYmwKKwlsd2wJJHQwLDMoJGkwKQkJIyBUZTFbczE+PjE2XQorCWx3bAkkdDEsMygkaTEpCQkjIFRlMVtzMj4+MTZdCisJbHdsCSR0MiwzKCRpMikJCSMgVGUxW3MzPj4xNl0KKwlsd2wJJHQzLDMoJGkzKQkJIyBUZTFbczA+PjE2XQorCWx3cgkkdDAsMigkaTApCQkjIFRlMVtzMT4+MTZdCisJbHdyCSR0MSwyKCRpMSkJCSMgVGUxW3MyPj4xNl0KKwlsd3IJJHQyLDIoJGkyKQkJIyBUZTFbczM+PjE2XQorCWx3cgkkdDMsMigkaTMpCQkjIFRlMVtzMD4+MTZdCisKKwlfeHRyCSRpMCwkczIsOC0yCisJX3h0cgkkaTEsJHMzLDgtMgorCV94dHIJJGkyLCRzMCw4LTIKKwlfeHRyCSRpMywkczEsOC0yCisJYW5kCSRpMCwweDNmYworCWFuZAkkaTEsMHgzZmMKKwlhbmQJJGkyLDB4M2ZjCisJYW5kCSRpMywweDNmYworCSRQVFJfQUREICRpMCwkVGJsCisJJFBUUl9BREQgJGkxLCRUYmwKKwkkUFRSX0FERCAkaTIsJFRibAorCSRQVFJfQUREICRpMywkVGJsCisJbHdsCSR0NCwyKCRpMCkJCSMgVGUyW3MyPj44XQorCWx3bAkkdDUsMigkaTEpCQkjIFRlMltzMz4+OF0KKwlsd2wJJHQ2LDIoJGkyKQkJIyBUZTJbczA+PjhdCisJbHdsCSR0NywyKCRpMykJCSMgVGUyW3MxPj44XQorCWx3cgkkdDQsMSgkaTApCQkjIFRlMltzMj4+OF0KKwlsd3IJJHQ1LDEoJGkxKQkJIyBUZTJbczM+PjhdCisJbHdyCSR0NiwxKCRpMikJCSMgVGUyW3MwPj44XQorCWx3cgkkdDcsMSgkaTMpCQkjIFRlMltzMT4+OF0KKworCV94dHIJJGkwLCRzMywwLTIKKwlfeHRyCSRpMSwkczAsMC0yCisJX3h0cgkkaTIsJHMxLDAtMgorCV94dHIJJGkzLCRzMiwwLTIKKwlhbmQJJGkwLDB4M2ZjCisJYW5kCSRpMSwweDNmYworCWFuZAkkaTIsMHgzZmMKKwlhbmQJJGkzLDB4M2ZjCisJJFBUUl9BREQgJGkwLCRUYmwKKwkkUFRSX0FERCAkaTEsJFRibAorCSRQVFJfQUREICRpMiwkVGJsCisJJFBUUl9BREQgJGkzLCRUYmwKKwlsd2wJJHQ4LDEoJGkwKQkJIyBUZTNbczNdCisJbHdsCSR0OSwxKCRpMSkJCSMgVGUzW3MwXQorCWx3bAkkdDEwLDEoJGkyKQkJIyBUZTNbczFdCisJbHdsCSR0MTEsMSgkaTMpCQkjIFRlM1tzMl0KKwlsd3IJJHQ4LDAoJGkwKQkJIyBUZTNbczNdCisJbHdyCSR0OSwwKCRpMSkJCSMgVGUzW3MwXQorCWx3cgkkdDEwLDAoJGkyKQkJIyBUZTNbczFdCisJbHdyCSR0MTEsMCgkaTMpCQkjIFRlM1tzMl0KKworCV94dHIJJGkwLCRzMCwyNC0yCisJX3h0cgkkaTEsJHMxLDI0LTIKKwlfeHRyCSRpMiwkczIsMjQtMgorCV94dHIJJGkzLCRzMywyNC0yCisJYW5kCSRpMCwweDNmYworCWFuZAkkaTEsMHgzZmMKKwlhbmQJJGkyLDB4M2ZjCisJYW5kCSRpMywweDNmYworCSRQVFJfQUREICRpMCwkVGJsCisJJFBUUl9BREQgJGkxLCRUYmwKKwkkUFRSX0FERCAkaTIsJFRibAorCSRQVFJfQUREICRpMywkVGJsCisJeG9yCSR0MCwkdDQKKwl4b3IJJHQxLCR0NQorCXhvcgkkdDIsJHQ2CisJeG9yCSR0MywkdDcKKwlsdwkkdDQsMCgkaTApCQkjIFRlMFtzMD4+MjRdCisJbHcJJHQ1LDAoJGkxKQkJIyBUZTBbczE+PjI0XQorCWx3CSR0NiwwKCRpMikJCSMgVGUwW3MyPj4yNF0KKwlsdwkkdDcsMCgkaTMpCQkjIFRlMFtzMz4+MjRdCisKKwlsdwkkczAsMCgka2V5MCkKKwlsdwkkczEsNCgka2V5MCkKKwlsdwkkczIsOCgka2V5MCkKKwlsdwkkczMsMTIoJGtleTApCisKKwl4b3IJJHQwLCR0OAorCXhvcgkkdDEsJHQ5CisJeG9yCSR0MiwkdDEwCisJeG9yCSR0MywkdDExCisKKwl4b3IJJHQwLCR0NAorCXhvcgkkdDEsJHQ1CisJeG9yCSR0MiwkdDYKKwl4b3IJJHQzLCR0NworCisJc3ViCSRjbnQsMQorCSRQVFJfQUREICRrZXkwLDE2CisJeG9yCSRzMCwkdDAKKwl4b3IJJHMxLCR0MQorCXhvcgkkczIsJHQyCisJeG9yCSRzMywkdDMKKwkuc2V0CW5vcmVvcmRlcgorCWJuZXoJJGNudCwuTG9vcF9lbmMKKwlfeHRyCSRpMCwkczEsMTYtMgorCisJLnNldAlyZW9yZGVyCisJX3h0cgkkaTEsJHMyLDE2LTIKKwlfeHRyCSRpMiwkczMsMTYtMgorCV94dHIJJGkzLCRzMCwxNi0yCisJYW5kCSRpMCwweDNmYworCWFuZAkkaTEsMHgzZmMKKwlhbmQJJGkyLDB4M2ZjCisJYW5kCSRpMywweDNmYworCSRQVFJfQUREICRpMCwkVGJsCisJJFBUUl9BREQgJGkxLCRUYmwKKwkkUFRSX0FERCAkaTIsJFRibAorCSRQVFJfQUREICRpMywkVGJsCisJbGJ1CSR0MCwyKCRpMCkJCSMgVGU0W3MxPj4xNl0KKwlsYnUJJHQxLDIoJGkxKQkJIyBUZTRbczI+PjE2XQorCWxidQkkdDIsMigkaTIpCQkjIFRlNFtzMz4+MTZdCisJbGJ1CSR0MywyKCRpMykJCSMgVGU0W3MwPj4xNl0KKworCV94dHIJJGkwLCRzMiw4LTIKKwlfeHRyCSRpMSwkczMsOC0yCisJX3h0cgkkaTIsJHMwLDgtMgorCV94dHIJJGkzLCRzMSw4LTIKKwlhbmQJJGkwLDB4M2ZjCisJYW5kCSRpMSwweDNmYworCWFuZAkkaTIsMHgzZmMKKwlhbmQJJGkzLDB4M2ZjCisJJFBUUl9BREQgJGkwLCRUYmwKKwkkUFRSX0FERCAkaTEsJFRibAorCSRQVFJfQUREICRpMiwkVGJsCisJJFBUUl9BREQgJGkzLCRUYmwKKwlsYnUJJHQ0LDIoJGkwKQkJIyBUZTRbczI+PjhdCisJbGJ1CSR0NSwyKCRpMSkJCSMgVGU0W3MzPj44XQorCWxidQkkdDYsMigkaTIpCQkjIFRlNFtzMD4+OF0KKwlsYnUJJHQ3LDIoJGkzKQkJIyBUZTRbczE+PjhdCisKKwlfeHRyCSRpMCwkczAsMjQtMgorCV94dHIJJGkxLCRzMSwyNC0yCisJX3h0cgkkaTIsJHMyLDI0LTIKKwlfeHRyCSRpMywkczMsMjQtMgorCWFuZAkkaTAsMHgzZmMKKwlhbmQJJGkxLDB4M2ZjCisJYW5kCSRpMiwweDNmYworCWFuZAkkaTMsMHgzZmMKKwkkUFRSX0FERCAkaTAsJFRibAorCSRQVFJfQUREICRpMSwkVGJsCisJJFBUUl9BREQgJGkyLCRUYmwKKwkkUFRSX0FERCAkaTMsJFRibAorCWxidQkkdDgsMigkaTApCQkjIFRlNFtzMD4+MjRdCisJbGJ1CSR0OSwyKCRpMSkJCSMgVGU0W3MxPj4yNF0KKwlsYnUJJHQxMCwyKCRpMikJCSMgVGU0W3MyPj4yNF0KKwlsYnUJJHQxMSwyKCRpMykJCSMgVGU0W3MzPj4yNF0KKworCV94dHIJJGkwLCRzMywwLTIKKwlfeHRyCSRpMSwkczAsMC0yCisJX3h0cgkkaTIsJHMxLDAtMgorCV94dHIJJGkzLCRzMiwwLTIKKwlhbmQJJGkwLDB4M2ZjCisJYW5kCSRpMSwweDNmYworCWFuZAkkaTIsMHgzZmMKKwlhbmQJJGkzLDB4M2ZjCisKKwlfaW5zCSR0MCwxNgorCV9pbnMJJHQxLDE2CisJX2lucwkkdDIsMTYKKwlfaW5zCSR0MywxNgorCisJX2lucwkkdDQsOAorCV9pbnMJJHQ1LDgKKwlfaW5zCSR0Niw4CisJX2lucwkkdDcsOAorCisJeG9yCSR0MCwkdDQKKwl4b3IJJHQxLCR0NQorCXhvcgkkdDIsJHQ2CisJeG9yCSR0MywkdDcKKworCSRQVFJfQUREICRpMCwkVGJsCisJJFBUUl9BREQgJGkxLCRUYmwKKwkkUFRSX0FERCAkaTIsJFRibAorCSRQVFJfQUREICRpMywkVGJsCisJbGJ1CSR0NCwyKCRpMCkJCSMgVGU0W3MzXQorCWxidQkkdDUsMigkaTEpCQkjIFRlNFtzMF0KKwlsYnUJJHQ2LDIoJGkyKQkJIyBUZTRbczFdCisJbGJ1CSR0NywyKCRpMykJCSMgVGU0W3MyXQorCisJX2lucwkkdDgsMjQKKwlfaW5zCSR0OSwyNAorCV9pbnMJJHQxMCwyNAorCV9pbnMJJHQxMSwyNAorCisJbHcJJHMwLDAoJGtleTApCisJbHcJJHMxLDQoJGtleTApCisJbHcJJHMyLDgoJGtleTApCisJbHcJJHMzLDEyKCRrZXkwKQorCisJeG9yCSR0MCwkdDgKKwl4b3IJJHQxLCR0OQorCXhvcgkkdDIsJHQxMAorCXhvcgkkdDMsJHQxMQorCisJX2lucwkkdDQsMAorCV9pbnMJJHQ1LDAKKwlfaW5zCSR0NiwwCisJX2lucwkkdDcsMAorCisJeG9yCSR0MCwkdDQKKwl4b3IJJHQxLCR0NQorCXhvcgkkdDIsJHQ2CisJeG9yCSR0MywkdDcKKworCXhvcgkkczAsJHQwCisJeG9yCSRzMSwkdDEKKwl4b3IJJHMyLCR0MgorCXhvcgkkczMsJHQzCisKKwlqcgkkcmEKKy5lbmQJX21pcHNfQUVTX2VuY3J5cHQKKworLmFsaWduCTUKKy5nbG9ibAlBRVNfZW5jcnlwdAorLmVudAlBRVNfZW5jcnlwdAorQUVTX2VuY3J5cHQ6CisJLmZyYW1lCSRzcCwkRlJBTUVTSVpFLCRyYQorCS5tYXNrCSRTQVZFRF9SRUdTX01BU0ssLSRTWlJFRworCS5zZXQJbm9yZW9yZGVyCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJGZsYXZvdXIgPX4gL28zMi9pKTsJIyBvMzIgUElDLWlmaWNhdGlvbgorCS5jcGxvYWQJJHBmCitfX18KKyRjb2RlLj08PF9fXzsKKwkkUFRSX1NVQiAkc3AsJEZSQU1FU0laRQorCSRSRUdfUwkkcmEsJEZSQU1FU0laRS0xKiRTWlJFRygkc3ApCisJJFJFR19TCSRmcCwkRlJBTUVTSVpFLTIqJFNaUkVHKCRzcCkKKwkkUkVHX1MJJHMxMSwkRlJBTUVTSVpFLTMqJFNaUkVHKCRzcCkKKwkkUkVHX1MJJHMxMCwkRlJBTUVTSVpFLTQqJFNaUkVHKCRzcCkKKwkkUkVHX1MJJHM5LCRGUkFNRVNJWkUtNSokU1pSRUcoJHNwKQorCSRSRUdfUwkkczgsJEZSQU1FU0laRS02KiRTWlJFRygkc3ApCisJJFJFR19TCSRzNywkRlJBTUVTSVpFLTcqJFNaUkVHKCRzcCkKKwkkUkVHX1MJJHM2LCRGUkFNRVNJWkUtOCokU1pSRUcoJHNwKQorCSRSRUdfUwkkczUsJEZSQU1FU0laRS05KiRTWlJFRygkc3ApCisJJFJFR19TCSRzNCwkRlJBTUVTSVpFLTEwKiRTWlJFRygkc3ApCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJGZsYXZvdXIgPX4gL251YmkvaSk7CSMgb3B0aW1pemUgbm9uLW51YmkgcHJvbG9ndWUKKwkkUkVHX1MJXCQxNSwkRlJBTUVTSVpFLTExKiRTWlJFRygkc3ApCisJJFJFR19TCVwkMTQsJEZSQU1FU0laRS0xMiokU1pSRUcoJHNwKQorCSRSRUdfUwlcJDEzLCRGUkFNRVNJWkUtMTMqJFNaUkVHKCRzcCkKKwkkUkVHX1MJXCQxMiwkRlJBTUVTSVpFLTE0KiRTWlJFRygkc3ApCisJJFJFR19TCSRncCwkRlJBTUVTSVpFLTE1KiRTWlJFRygkc3ApCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJGZsYXZvdXIgIX4gL28zMi9pKTsJIyBub24tbzMyIFBJQy1pZmljYXRpb24KKwkuY3Bsb2NhbAkkVGJsCisJLmNwc2V0dXAJJHBmLCR6ZXJvLEFFU19lbmNyeXB0CitfX18KKyRjb2RlLj08PF9fXzsKKwkuc2V0CXJlb3JkZXIKKwlsYQkkVGJsLEFFU19UZQkJIyBQSUMtaWZpZWQgJ2xvYWQgYWRkcmVzcycKKworCWx3bAkkczAsMCskTVNCKCRpbnApCisJbHdsCSRzMSw0KyRNU0IoJGlucCkKKwlsd2wJJHMyLDgrJE1TQigkaW5wKQorCWx3bAkkczMsMTIrJE1TQigkaW5wKQorCWx3cgkkczAsMCskTFNCKCRpbnApCisJbHdyCSRzMSw0KyRMU0IoJGlucCkKKwlsd3IJJHMyLDgrJExTQigkaW5wKQorCWx3cgkkczMsMTIrJExTQigkaW5wKQorCisJYmFsCV9taXBzX0FFU19lbmNyeXB0CisKKwlzd3IJJHMwLDArJExTQigkb3V0KQorCXN3cgkkczEsNCskTFNCKCRvdXQpCisJc3dyCSRzMiw4KyRMU0IoJG91dCkKKwlzd3IJJHMzLDEyKyRMU0IoJG91dCkKKwlzd2wJJHMwLDArJE1TQigkb3V0KQorCXN3bAkkczEsNCskTVNCKCRvdXQpCisJc3dsCSRzMiw4KyRNU0IoJG91dCkKKwlzd2wJJHMzLDEyKyRNU0IoJG91dCkKKworCS5zZXQJbm9yZW9yZGVyCisJJFJFR19MCSRyYSwkRlJBTUVTSVpFLTEqJFNaUkVHKCRzcCkKKwkkUkVHX0wJJGZwLCRGUkFNRVNJWkUtMiokU1pSRUcoJHNwKQorCSRSRUdfTAkkczExLCRGUkFNRVNJWkUtMyokU1pSRUcoJHNwKQorCSRSRUdfTAkkczEwLCRGUkFNRVNJWkUtNCokU1pSRUcoJHNwKQorCSRSRUdfTAkkczksJEZSQU1FU0laRS01KiRTWlJFRygkc3ApCisJJFJFR19MCSRzOCwkRlJBTUVTSVpFLTYqJFNaUkVHKCRzcCkKKwkkUkVHX0wJJHM3LCRGUkFNRVNJWkUtNyokU1pSRUcoJHNwKQorCSRSRUdfTAkkczYsJEZSQU1FU0laRS04KiRTWlJFRygkc3ApCisJJFJFR19MCSRzNSwkRlJBTUVTSVpFLTkqJFNaUkVHKCRzcCkKKwkkUkVHX0wJJHM0LCRGUkFNRVNJWkUtMTAqJFNaUkVHKCRzcCkKK19fXworJGNvZGUuPTw8X19fIGlmICgkZmxhdm91ciA9fiAvbnViaS9pKTsKKwkkUkVHX0wJXCQxNSwkRlJBTUVTSVpFLTExKiRTWlJFRygkc3ApCisJJFJFR19MCVwkMTQsJEZSQU1FU0laRS0xMiokU1pSRUcoJHNwKQorCSRSRUdfTAlcJDEzLCRGUkFNRVNJWkUtMTMqJFNaUkVHKCRzcCkKKwkkUkVHX0wJXCQxMiwkRlJBTUVTSVpFLTE0KiRTWlJFRygkc3ApCisJJFJFR19MCSRncCwkRlJBTUVTSVpFLTE1KiRTWlJFRygkc3ApCitfX18KKyRjb2RlLj08PF9fXzsKKwlqcgkkcmEKKwkkUFRSX0FERCAkc3AsJEZSQU1FU0laRQorLmVuZAlBRVNfZW5jcnlwdAorX19fCisMCiskY29kZS49PDxfX187CisuYWxpZ24JNQorLmVudAlfbWlwc19BRVNfZGVjcnlwdAorX21pcHNfQUVTX2RlY3J5cHQ6CisJLmZyYW1lCSRzcCwwLCRyYQorCS5zZXQJcmVvcmRlcgorCWx3CSR0MCwwKCRrZXkpCisJbHcJJHQxLDQoJGtleSkKKwlsdwkkdDIsOCgka2V5KQorCWx3CSR0MywxMigka2V5KQorCWx3CSRjbnQsMjQwKCRrZXkpCisJJFBUUl9BREQgJGtleTAsJGtleSwxNgorCisJeG9yCSRzMCwkdDAKKwl4b3IJJHMxLCR0MQorCXhvcgkkczIsJHQyCisJeG9yCSRzMywkdDMKKworCXN1YgkkY250LDEKKwlfeHRyCSRpMCwkczMsMTYtMgorLkxvb3BfZGVjOgorCV94dHIJJGkxLCRzMCwxNi0yCisJX3h0cgkkaTIsJHMxLDE2LTIKKwlfeHRyCSRpMywkczIsMTYtMgorCWFuZAkkaTAsMHgzZmMKKwlhbmQJJGkxLDB4M2ZjCisJYW5kCSRpMiwweDNmYworCWFuZAkkaTMsMHgzZmMKKwkkUFRSX0FERCAkaTAsJFRibAorCSRQVFJfQUREICRpMSwkVGJsCisJJFBUUl9BREQgJGkyLCRUYmwKKwkkUFRSX0FERCAkaTMsJFRibAorCWx3bAkkdDAsMygkaTApCQkjIFRkMVtzMz4+MTZdCisJbHdsCSR0MSwzKCRpMSkJCSMgVGQxW3MwPj4xNl0KKwlsd2wJJHQyLDMoJGkyKQkJIyBUZDFbczE+PjE2XQorCWx3bAkkdDMsMygkaTMpCQkjIFRkMVtzMj4+MTZdCisJbHdyCSR0MCwyKCRpMCkJCSMgVGQxW3MzPj4xNl0KKwlsd3IJJHQxLDIoJGkxKQkJIyBUZDFbczA+PjE2XQorCWx3cgkkdDIsMigkaTIpCQkjIFRkMVtzMT4+MTZdCisJbHdyCSR0MywyKCRpMykJCSMgVGQxW3MyPj4xNl0KKworCV94dHIJJGkwLCRzMiw4LTIKKwlfeHRyCSRpMSwkczMsOC0yCisJX3h0cgkkaTIsJHMwLDgtMgorCV94dHIJJGkzLCRzMSw4LTIKKwlhbmQJJGkwLDB4M2ZjCisJYW5kCSRpMSwweDNmYworCWFuZAkkaTIsMHgzZmMKKwlhbmQJJGkzLDB4M2ZjCisJJFBUUl9BREQgJGkwLCRUYmwKKwkkUFRSX0FERCAkaTEsJFRibAorCSRQVFJfQUREICRpMiwkVGJsCisJJFBUUl9BREQgJGkzLCRUYmwKKwlsd2wJJHQ0LDIoJGkwKQkJIyBUZDJbczI+PjhdCisJbHdsCSR0NSwyKCRpMSkJCSMgVGQyW3MzPj44XQorCWx3bAkkdDYsMigkaTIpCQkjIFRkMltzMD4+OF0KKwlsd2wJJHQ3LDIoJGkzKQkJIyBUZDJbczE+PjhdCisJbHdyCSR0NCwxKCRpMCkJCSMgVGQyW3MyPj44XQorCWx3cgkkdDUsMSgkaTEpCQkjIFRkMltzMz4+OF0KKwlsd3IJJHQ2LDEoJGkyKQkJIyBUZDJbczA+PjhdCisJbHdyCSR0NywxKCRpMykJCSMgVGQyW3MxPj44XQorCisJX3h0cgkkaTAsJHMxLDAtMgorCV94dHIJJGkxLCRzMiwwLTIKKwlfeHRyCSRpMiwkczMsMC0yCisJX3h0cgkkaTMsJHMwLDAtMgorCWFuZAkkaTAsMHgzZmMKKwlhbmQJJGkxLDB4M2ZjCisJYW5kCSRpMiwweDNmYworCWFuZAkkaTMsMHgzZmMKKwkkUFRSX0FERCAkaTAsJFRibAorCSRQVFJfQUREICRpMSwkVGJsCisJJFBUUl9BREQgJGkyLCRUYmwKKwkkUFRSX0FERCAkaTMsJFRibAorCWx3bAkkdDgsMSgkaTApCQkjIFRkM1tzMV0KKwlsd2wJJHQ5LDEoJGkxKQkJIyBUZDNbczJdCisJbHdsCSR0MTAsMSgkaTIpCQkjIFRkM1tzM10KKwlsd2wJJHQxMSwxKCRpMykJCSMgVGQzW3MwXQorCWx3cgkkdDgsMCgkaTApCQkjIFRkM1tzMV0KKwlsd3IJJHQ5LDAoJGkxKQkJIyBUZDNbczJdCisJbHdyCSR0MTAsMCgkaTIpCQkjIFRkM1tzM10KKwlsd3IJJHQxMSwwKCRpMykJCSMgVGQzW3MwXQorCisJX3h0cgkkaTAsJHMwLDI0LTIKKwlfeHRyCSRpMSwkczEsMjQtMgorCV94dHIJJGkyLCRzMiwyNC0yCisJX3h0cgkkaTMsJHMzLDI0LTIKKwlhbmQJJGkwLDB4M2ZjCisJYW5kCSRpMSwweDNmYworCWFuZAkkaTIsMHgzZmMKKwlhbmQJJGkzLDB4M2ZjCisJJFBUUl9BREQgJGkwLCRUYmwKKwkkUFRSX0FERCAkaTEsJFRibAorCSRQVFJfQUREICRpMiwkVGJsCisJJFBUUl9BREQgJGkzLCRUYmwKKworCXhvcgkkdDAsJHQ0CisJeG9yCSR0MSwkdDUKKwl4b3IJJHQyLCR0NgorCXhvcgkkdDMsJHQ3CisKKworCWx3CSR0NCwwKCRpMCkJCSMgVGQwW3MwPj4yNF0KKwlsdwkkdDUsMCgkaTEpCQkjIFRkMFtzMT4+MjRdCisJbHcJJHQ2LDAoJGkyKQkJIyBUZDBbczI+PjI0XQorCWx3CSR0NywwKCRpMykJCSMgVGQwW3MzPj4yNF0KKworCWx3CSRzMCwwKCRrZXkwKQorCWx3CSRzMSw0KCRrZXkwKQorCWx3CSRzMiw4KCRrZXkwKQorCWx3CSRzMywxMigka2V5MCkKKworCXhvcgkkdDAsJHQ4CisJeG9yCSR0MSwkdDkKKwl4b3IJJHQyLCR0MTAKKwl4b3IJJHQzLCR0MTEKKworCXhvcgkkdDAsJHQ0CisJeG9yCSR0MSwkdDUKKwl4b3IJJHQyLCR0NgorCXhvcgkkdDMsJHQ3CisKKwlzdWIJJGNudCwxCisJJFBUUl9BREQgJGtleTAsMTYKKwl4b3IJJHMwLCR0MAorCXhvcgkkczEsJHQxCisJeG9yCSRzMiwkdDIKKwl4b3IJJHMzLCR0MworCS5zZXQJbm9yZW9yZGVyCisJYm5legkkY250LC5Mb29wX2RlYworCV94dHIJJGkwLCRzMywxNi0yCisKKwkuc2V0CXJlb3JkZXIKKwlsdwkkdDQsMTAyNCgkVGJsKQkJIyBwcmVmZXRjaCBUZDQKKwlsdwkkdDUsMTAyNCszMigkVGJsKQorCWx3CSR0NiwxMDI0KzY0KCRUYmwpCisJbHcJJHQ3LDEwMjQrOTYoJFRibCkKKwlsdwkkdDgsMTAyNCsxMjgoJFRibCkKKwlsdwkkdDksMTAyNCsxNjAoJFRibCkKKwlsdwkkdDEwLDEwMjQrMTkyKCRUYmwpCisJbHcJJHQxMSwxMDI0KzIyNCgkVGJsKQorCisJX3h0cgkkaTAsJHMzLDE2CisJX3h0cgkkaTEsJHMwLDE2CisJX3h0cgkkaTIsJHMxLDE2CisJX3h0cgkkaTMsJHMyLDE2CisJYW5kCSRpMCwweGZmCisJYW5kCSRpMSwweGZmCisJYW5kCSRpMiwweGZmCisJYW5kCSRpMywweGZmCisJJFBUUl9BREQgJGkwLCRUYmwKKwkkUFRSX0FERCAkaTEsJFRibAorCSRQVFJfQUREICRpMiwkVGJsCisJJFBUUl9BREQgJGkzLCRUYmwKKwlsYnUJJHQwLDEwMjQoJGkwKQkJIyBUZDRbczM+PjE2XQorCWxidQkkdDEsMTAyNCgkaTEpCQkjIFRkNFtzMD4+MTZdCisJbGJ1CSR0MiwxMDI0KCRpMikJCSMgVGQ0W3MxPj4xNl0KKwlsYnUJJHQzLDEwMjQoJGkzKQkJIyBUZDRbczI+PjE2XQorCisJX3h0cgkkaTAsJHMyLDgKKwlfeHRyCSRpMSwkczMsOAorCV94dHIJJGkyLCRzMCw4CisJX3h0cgkkaTMsJHMxLDgKKwlhbmQJJGkwLDB4ZmYKKwlhbmQJJGkxLDB4ZmYKKwlhbmQJJGkyLDB4ZmYKKwlhbmQJJGkzLDB4ZmYKKwkkUFRSX0FERCAkaTAsJFRibAorCSRQVFJfQUREICRpMSwkVGJsCisJJFBUUl9BREQgJGkyLCRUYmwKKwkkUFRSX0FERCAkaTMsJFRibAorCWxidQkkdDQsMTAyNCgkaTApCQkjIFRkNFtzMj4+OF0KKwlsYnUJJHQ1LDEwMjQoJGkxKQkJIyBUZDRbczM+PjhdCisJbGJ1CSR0NiwxMDI0KCRpMikJCSMgVGQ0W3MwPj44XQorCWxidQkkdDcsMTAyNCgkaTMpCQkjIFRkNFtzMT4+OF0KKworCV94dHIJJGkwLCRzMCwyNAorCV94dHIJJGkxLCRzMSwyNAorCV94dHIJJGkyLCRzMiwyNAorCV94dHIJJGkzLCRzMywyNAorCSRQVFJfQUREICRpMCwkVGJsCisJJFBUUl9BREQgJGkxLCRUYmwKKwkkUFRSX0FERCAkaTIsJFRibAorCSRQVFJfQUREICRpMywkVGJsCisJbGJ1CSR0OCwxMDI0KCRpMCkJCSMgVGQ0W3MwPj4yNF0KKwlsYnUJJHQ5LDEwMjQoJGkxKQkJIyBUZDRbczE+PjI0XQorCWxidQkkdDEwLDEwMjQoJGkyKQkJIyBUZDRbczI+PjI0XQorCWxidQkkdDExLDEwMjQoJGkzKQkJIyBUZDRbczM+PjI0XQorCisJX3h0cgkkaTAsJHMxLDAKKwlfeHRyCSRpMSwkczIsMAorCV94dHIJJGkyLCRzMywwCisJX3h0cgkkaTMsJHMwLDAKKworCV9pbnMJJHQwLDE2CisJX2lucwkkdDEsMTYKKwlfaW5zCSR0MiwxNgorCV9pbnMJJHQzLDE2CisKKwlfaW5zCSR0NCw4CisJX2lucwkkdDUsOAorCV9pbnMJJHQ2LDgKKwlfaW5zCSR0Nyw4CisKKwl4b3IJJHQwLCR0NAorCXhvcgkkdDEsJHQ1CisJeG9yCSR0MiwkdDYKKwl4b3IJJHQzLCR0NworCisJJFBUUl9BREQgJGkwLCRUYmwKKwkkUFRSX0FERCAkaTEsJFRibAorCSRQVFJfQUREICRpMiwkVGJsCisJJFBUUl9BREQgJGkzLCRUYmwKKwlsYnUJJHQ0LDEwMjQoJGkwKQkJIyBUZDRbczFdCisJbGJ1CSR0NSwxMDI0KCRpMSkJCSMgVGQ0W3MyXQorCWxidQkkdDYsMTAyNCgkaTIpCQkjIFRkNFtzM10KKwlsYnUJJHQ3LDEwMjQoJGkzKQkJIyBUZDRbczBdCisKKwlfaW5zCSR0OCwyNAorCV9pbnMJJHQ5LDI0CisJX2lucwkkdDEwLDI0CisJX2lucwkkdDExLDI0CisKKwlsdwkkczAsMCgka2V5MCkKKwlsdwkkczEsNCgka2V5MCkKKwlsdwkkczIsOCgka2V5MCkKKwlsdwkkczMsMTIoJGtleTApCisKKwlfaW5zCSR0NCwwCisJX2lucwkkdDUsMAorCV9pbnMJJHQ2LDAKKwlfaW5zCSR0NywwCisKKworCXhvcgkkdDAsJHQ4CisJeG9yCSR0MSwkdDkKKwl4b3IJJHQyLCR0MTAKKwl4b3IJJHQzLCR0MTEKKworCXhvcgkkdDAsJHQ0CisJeG9yCSR0MSwkdDUKKwl4b3IJJHQyLCR0NgorCXhvcgkkdDMsJHQ3CisKKwl4b3IJJHMwLCR0MAorCXhvcgkkczEsJHQxCisJeG9yCSRzMiwkdDIKKwl4b3IJJHMzLCR0MworCisJanIJJHJhCisuZW5kCV9taXBzX0FFU19kZWNyeXB0CisKKy5hbGlnbgk1CisuZ2xvYmwJQUVTX2RlY3J5cHQKKy5lbnQJQUVTX2RlY3J5cHQKK0FFU19kZWNyeXB0OgorCS5mcmFtZQkkc3AsJEZSQU1FU0laRSwkcmEKKwkubWFzawkkU0FWRURfUkVHU19NQVNLLC0kU1pSRUcKKwkuc2V0CW5vcmVvcmRlcgorX19fCiskY29kZS49PDxfX18gaWYgKCRmbGF2b3VyID1+IC9vMzIvaSk7CSMgbzMyIFBJQy1pZmljYXRpb24KKwkuY3Bsb2FkCSRwZgorX19fCiskY29kZS49PDxfX187CisJJFBUUl9TVUIgJHNwLCRGUkFNRVNJWkUKKwkkUkVHX1MJJHJhLCRGUkFNRVNJWkUtMSokU1pSRUcoJHNwKQorCSRSRUdfUwkkZnAsJEZSQU1FU0laRS0yKiRTWlJFRygkc3ApCisJJFJFR19TCSRzMTEsJEZSQU1FU0laRS0zKiRTWlJFRygkc3ApCisJJFJFR19TCSRzMTAsJEZSQU1FU0laRS00KiRTWlJFRygkc3ApCisJJFJFR19TCSRzOSwkRlJBTUVTSVpFLTUqJFNaUkVHKCRzcCkKKwkkUkVHX1MJJHM4LCRGUkFNRVNJWkUtNiokU1pSRUcoJHNwKQorCSRSRUdfUwkkczcsJEZSQU1FU0laRS03KiRTWlJFRygkc3ApCisJJFJFR19TCSRzNiwkRlJBTUVTSVpFLTgqJFNaUkVHKCRzcCkKKwkkUkVHX1MJJHM1LCRGUkFNRVNJWkUtOSokU1pSRUcoJHNwKQorCSRSRUdfUwkkczQsJEZSQU1FU0laRS0xMCokU1pSRUcoJHNwKQorX19fCiskY29kZS49PDxfX18gaWYgKCRmbGF2b3VyID1+IC9udWJpL2kpOwkjIG9wdGltaXplIG5vbi1udWJpIHByb2xvZ3VlCisJJFJFR19TCVwkMTUsJEZSQU1FU0laRS0xMSokU1pSRUcoJHNwKQorCSRSRUdfUwlcJDE0LCRGUkFNRVNJWkUtMTIqJFNaUkVHKCRzcCkKKwkkUkVHX1MJXCQxMywkRlJBTUVTSVpFLTEzKiRTWlJFRygkc3ApCisJJFJFR19TCVwkMTIsJEZSQU1FU0laRS0xNCokU1pSRUcoJHNwKQorCSRSRUdfUwkkZ3AsJEZSQU1FU0laRS0xNSokU1pSRUcoJHNwKQorX19fCiskY29kZS49PDxfX18gaWYgKCRmbGF2b3VyICF+IC9vMzIvaSk7CSMgbm9uLW8zMiBQSUMtaWZpY2F0aW9uCisJLmNwbG9jYWwJJFRibAorCS5jcHNldHVwCSRwZiwkemVybyxBRVNfZGVjcnlwdAorX19fCiskY29kZS49PDxfX187CisJLnNldAlyZW9yZGVyCisJbGEJJFRibCxBRVNfVGQJCSMgUElDLWlmaWVkICdsb2FkIGFkZHJlc3MnCisKKwlsd2wJJHMwLDArJE1TQigkaW5wKQorCWx3bAkkczEsNCskTVNCKCRpbnApCisJbHdsCSRzMiw4KyRNU0IoJGlucCkKKwlsd2wJJHMzLDEyKyRNU0IoJGlucCkKKwlsd3IJJHMwLDArJExTQigkaW5wKQorCWx3cgkkczEsNCskTFNCKCRpbnApCisJbHdyCSRzMiw4KyRMU0IoJGlucCkKKwlsd3IJJHMzLDEyKyRMU0IoJGlucCkKKworCWJhbAlfbWlwc19BRVNfZGVjcnlwdAorCisJc3dyCSRzMCwwKyRMU0IoJG91dCkKKwlzd3IJJHMxLDQrJExTQigkb3V0KQorCXN3cgkkczIsOCskTFNCKCRvdXQpCisJc3dyCSRzMywxMiskTFNCKCRvdXQpCisJc3dsCSRzMCwwKyRNU0IoJG91dCkKKwlzd2wJJHMxLDQrJE1TQigkb3V0KQorCXN3bAkkczIsOCskTVNCKCRvdXQpCisJc3dsCSRzMywxMiskTVNCKCRvdXQpCisKKwkuc2V0CW5vcmVvcmRlcgorCSRSRUdfTAkkcmEsJEZSQU1FU0laRS0xKiRTWlJFRygkc3ApCisJJFJFR19MCSRmcCwkRlJBTUVTSVpFLTIqJFNaUkVHKCRzcCkKKwkkUkVHX0wJJHMxMSwkRlJBTUVTSVpFLTMqJFNaUkVHKCRzcCkKKwkkUkVHX0wJJHMxMCwkRlJBTUVTSVpFLTQqJFNaUkVHKCRzcCkKKwkkUkVHX0wJJHM5LCRGUkFNRVNJWkUtNSokU1pSRUcoJHNwKQorCSRSRUdfTAkkczgsJEZSQU1FU0laRS02KiRTWlJFRygkc3ApCisJJFJFR19MCSRzNywkRlJBTUVTSVpFLTcqJFNaUkVHKCRzcCkKKwkkUkVHX0wJJHM2LCRGUkFNRVNJWkUtOCokU1pSRUcoJHNwKQorCSRSRUdfTAkkczUsJEZSQU1FU0laRS05KiRTWlJFRygkc3ApCisJJFJFR19MCSRzNCwkRlJBTUVTSVpFLTEwKiRTWlJFRygkc3ApCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJGZsYXZvdXIgPX4gL251YmkvaSk7CisJJFJFR19MCVwkMTUsJEZSQU1FU0laRS0xMSokU1pSRUcoJHNwKQorCSRSRUdfTAlcJDE0LCRGUkFNRVNJWkUtMTIqJFNaUkVHKCRzcCkKKwkkUkVHX0wJXCQxMywkRlJBTUVTSVpFLTEzKiRTWlJFRygkc3ApCisJJFJFR19MCVwkMTIsJEZSQU1FU0laRS0xNCokU1pSRUcoJHNwKQorCSRSRUdfTAkkZ3AsJEZSQU1FU0laRS0xNSokU1pSRUcoJHNwKQorX19fCiskY29kZS49PDxfX187CisJanIJJHJhCisJJFBUUl9BREQgJHNwLCRGUkFNRVNJWkUKKy5lbmQJQUVTX2RlY3J5cHQKK19fXworfX19CisMCit7e3sKK215ICRGUkFNRVNJWkU9OCokU1pSRUc7CitteSAkU0FWRURfUkVHU19NQVNLID0gKCRmbGF2b3VyID1+IC9udWJpL2kpID8gMHhjMDAwZjAwOCA6IDB4YzAwMDAwMDA7CisKK215ICgkaW5wLCRiaXRzLCRrZXksJFRibCk9KCRhMCwkYTEsJGEyLCRhMyk7CitteSAoJHJrMCwkcmsxLCRyazIsJHJrMywkcms0LCRyazUsJHJrNiwkcms3KT0oJGE0LCRhNSwkYTYsJGE3LCRzMCwkczEsJHMyLCRzMyk7CitteSAoJGkwLCRpMSwkaTIsJGkzKT0oJGF0LCR0MCwkdDEsJHQyKTsKK215ICgkcmNvbiwkY250KT0oJGdwLCRmcCk7CisKKyRjb2RlLj08PF9fXzsKKy5hbGlnbgk1CisuZW50CV9taXBzX0FFU19zZXRfZW5jcnlwdF9rZXkKK19taXBzX0FFU19zZXRfZW5jcnlwdF9rZXk6CisJLmZyYW1lCSRzcCwwLCRyYQorCS5zZXQJbm9yZW9yZGVyCisJYmVxegkkaW5wLC5MZWtleV9kb25lCisJbGkJJHQwLC0xCisJYmVxegkka2V5LC5MZWtleV9kb25lCisJJFBUUl9BREQgJHJjb24sJFRibCwxMDI0KzI1NgorCisJLnNldAlyZW9yZGVyCisJbHdsCSRyazAsMCskTVNCKCRpbnApCSMgbG9hZCAxMjggYml0cworCWx3bAkkcmsxLDQrJE1TQigkaW5wKQorCWx3bAkkcmsyLDgrJE1TQigkaW5wKQorCWx3bAkkcmszLDEyKyRNU0IoJGlucCkKKwlsaQkkYXQsMTI4CisJbHdyCSRyazAsMCskTFNCKCRpbnApCisJbHdyCSRyazEsNCskTFNCKCRpbnApCisJbHdyCSRyazIsOCskTFNCKCRpbnApCisJbHdyCSRyazMsMTIrJExTQigkaW5wKQorCS5zZXQJbm9yZW9yZGVyCisJYmVxCSRiaXRzLCRhdCwuTDEyOGJpdHMKKwlsaQkkY250LDEwCisKKwkuc2V0CXJlb3JkZXIKKwlsd2wJJHJrNCwxNiskTVNCKCRpbnApCSMgbG9hZCAxOTIgYml0cworCWx3bAkkcms1LDIwKyRNU0IoJGlucCkKKwlsaQkkYXQsMTkyCisJbHdyCSRyazQsMTYrJExTQigkaW5wKQorCWx3cgkkcms1LDIwKyRMU0IoJGlucCkKKwkuc2V0CW5vcmVvcmRlcgorCWJlcQkkYml0cywkYXQsLkwxOTJiaXRzCisJbGkJJGNudCw4CisKKwkuc2V0CXJlb3JkZXIKKwlsd2wJJHJrNiwyNCskTVNCKCRpbnApCSMgbG9hZCAyNTYgYml0cworCWx3bAkkcms3LDI4KyRNU0IoJGlucCkKKwlsaQkkYXQsMjU2CisJbHdyCSRyazYsMjQrJExTQigkaW5wKQorCWx3cgkkcms3LDI4KyRMU0IoJGlucCkKKwkuc2V0CW5vcmVvcmRlcgorCWJlcQkkYml0cywkYXQsLkwyNTZiaXRzCisJbGkJJGNudCw3CisKKwliCS5MZWtleV9kb25lCisJbGkJJHQwLC0yCisKKy5hbGlnbgk0CisuTDEyOGJpdHM6CisJLnNldAlyZW9yZGVyCisJc3JsCSRpMCwkcmszLDE2CisJc3JsCSRpMSwkcmszLDgKKwlhbmQJJGkwLDB4ZmYKKwlhbmQJJGkxLDB4ZmYKKwlhbmQJJGkyLCRyazMsMHhmZgorCXNybAkkaTMsJHJrMywyNAorCSRQVFJfQUREICRpMCwkVGJsCisJJFBUUl9BREQgJGkxLCRUYmwKKwkkUFRSX0FERCAkaTIsJFRibAorCSRQVFJfQUREICRpMywkVGJsCisJbGJ1CSRpMCwxMDI0KCRpMCkKKwlsYnUJJGkxLDEwMjQoJGkxKQorCWxidQkkaTIsMTAyNCgkaTIpCisJbGJ1CSRpMywxMDI0KCRpMykKKworCXN3CSRyazAsMCgka2V5KQorCXN3CSRyazEsNCgka2V5KQorCXN3CSRyazIsOCgka2V5KQorCXN3CSRyazMsMTIoJGtleSkKKwlzdWIJJGNudCwxCisJJFBUUl9BREQgJGtleSwxNgorCisJX2JpYXMJJGkwLDI0CisJX2JpYXMJJGkxLDE2CisJX2JpYXMJJGkyLDgKKwlfYmlhcwkkaTMsMAorCisJeG9yCSRyazAsJGkwCisJbHcJJGkwLDAoJHJjb24pCisJeG9yCSRyazAsJGkxCisJeG9yCSRyazAsJGkyCisJeG9yCSRyazAsJGkzCisJeG9yCSRyazAsJGkwCisKKwl4b3IJJHJrMSwkcmswCisJeG9yCSRyazIsJHJrMQorCXhvcgkkcmszLCRyazIKKworCS5zZXQJbm9yZW9yZGVyCisJYm5legkkY250LC5MMTI4Yml0cworCSRQVFJfQUREICRyY29uLDQKKworCXN3CSRyazAsMCgka2V5KQorCXN3CSRyazEsNCgka2V5KQorCXN3CSRyazIsOCgka2V5KQorCWxpCSRjbnQsMTAKKwlzdwkkcmszLDEyKCRrZXkpCisJbGkJJHQwLDAKKwlzdwkkY250LDgwKCRrZXkpCisJYgkuTGVrZXlfZG9uZQorCSRQVFJfU1VCICRrZXksMTAqMTYKKworLmFsaWduCTQKKy5MMTkyYml0czoKKwkuc2V0CXJlb3JkZXIKKwlzcmwJJGkwLCRyazUsMTYKKwlzcmwJJGkxLCRyazUsOAorCWFuZAkkaTAsMHhmZgorCWFuZAkkaTEsMHhmZgorCWFuZAkkaTIsJHJrNSwweGZmCisJc3JsCSRpMywkcms1LDI0CisJJFBUUl9BREQgJGkwLCRUYmwKKwkkUFRSX0FERCAkaTEsJFRibAorCSRQVFJfQUREICRpMiwkVGJsCisJJFBUUl9BREQgJGkzLCRUYmwKKwlsYnUJJGkwLDEwMjQoJGkwKQorCWxidQkkaTEsMTAyNCgkaTEpCisJbGJ1CSRpMiwxMDI0KCRpMikKKwlsYnUJJGkzLDEwMjQoJGkzKQorCisJc3cJJHJrMCwwKCRrZXkpCisJc3cJJHJrMSw0KCRrZXkpCisJc3cJJHJrMiw4KCRrZXkpCisJc3cJJHJrMywxMigka2V5KQorCXN3CSRyazQsMTYoJGtleSkKKwlzdwkkcms1LDIwKCRrZXkpCisJc3ViCSRjbnQsMQorCSRQVFJfQUREICRrZXksMjQKKworCV9iaWFzCSRpMCwyNAorCV9iaWFzCSRpMSwxNgorCV9iaWFzCSRpMiw4CisJX2JpYXMJJGkzLDAKKworCXhvcgkkcmswLCRpMAorCWx3CSRpMCwwKCRyY29uKQorCXhvcgkkcmswLCRpMQorCXhvcgkkcmswLCRpMgorCXhvcgkkcmswLCRpMworCXhvcgkkcmswLCRpMAorCisJeG9yCSRyazEsJHJrMAorCXhvcgkkcmsyLCRyazEKKwl4b3IJJHJrMywkcmsyCisJeG9yCSRyazQsJHJrMworCXhvcgkkcms1LCRyazQKKworCS5zZXQJbm9yZW9yZGVyCisJYm5legkkY250LC5MMTkyYml0cworCSRQVFJfQUREICRyY29uLDQKKworCXN3CSRyazAsMCgka2V5KQorCXN3CSRyazEsNCgka2V5KQorCXN3CSRyazIsOCgka2V5KQorCWxpCSRjbnQsMTIKKwlzdwkkcmszLDEyKCRrZXkpCisJbGkJJHQwLDAKKwlzdwkkY250LDQ4KCRrZXkpCisJYgkuTGVrZXlfZG9uZQorCSRQVFJfU1VCICRrZXksMTIqMTYKKworLmFsaWduCTQKKy5MMjU2Yml0czoKKwkuc2V0CXJlb3JkZXIKKwlzcmwJJGkwLCRyazcsMTYKKwlzcmwJJGkxLCRyazcsOAorCWFuZAkkaTAsMHhmZgorCWFuZAkkaTEsMHhmZgorCWFuZAkkaTIsJHJrNywweGZmCisJc3JsCSRpMywkcms3LDI0CisJJFBUUl9BREQgJGkwLCRUYmwKKwkkUFRSX0FERCAkaTEsJFRibAorCSRQVFJfQUREICRpMiwkVGJsCisJJFBUUl9BREQgJGkzLCRUYmwKKwlsYnUJJGkwLDEwMjQoJGkwKQorCWxidQkkaTEsMTAyNCgkaTEpCisJbGJ1CSRpMiwxMDI0KCRpMikKKwlsYnUJJGkzLDEwMjQoJGkzKQorCisJc3cJJHJrMCwwKCRrZXkpCisJc3cJJHJrMSw0KCRrZXkpCisJc3cJJHJrMiw4KCRrZXkpCisJc3cJJHJrMywxMigka2V5KQorCXN3CSRyazQsMTYoJGtleSkKKwlzdwkkcms1LDIwKCRrZXkpCisJc3cJJHJrNiwyNCgka2V5KQorCXN3CSRyazcsMjgoJGtleSkKKwlzdWIJJGNudCwxCisKKwlfYmlhcwkkaTAsMjQKKwlfYmlhcwkkaTEsMTYKKwlfYmlhcwkkaTIsOAorCV9iaWFzCSRpMywwCisKKwl4b3IJJHJrMCwkaTAKKwlsdwkkaTAsMCgkcmNvbikKKwl4b3IJJHJrMCwkaTEKKwl4b3IJJHJrMCwkaTIKKwl4b3IJJHJrMCwkaTMKKwl4b3IJJHJrMCwkaTAKKworCXhvcgkkcmsxLCRyazAKKwl4b3IJJHJrMiwkcmsxCisJeG9yCSRyazMsJHJrMgorCWJlcXoJJGNudCwuTDI1NmJpdHNfZG9uZQorCisJc3JsCSRpMCwkcmszLDI0CisJc3JsCSRpMSwkcmszLDE2CisJc3JsCSRpMiwkcmszLDgKKwlhbmQJJGkzLCRyazMsMHhmZgorCWFuZAkkaTEsMHhmZgorCWFuZAkkaTIsMHhmZgorCSRQVFJfQUREICRpMCwkVGJsCisJJFBUUl9BREQgJGkxLCRUYmwKKwkkUFRSX0FERCAkaTIsJFRibAorCSRQVFJfQUREICRpMywkVGJsCisJbGJ1CSRpMCwxMDI0KCRpMCkKKwlsYnUJJGkxLDEwMjQoJGkxKQorCWxidQkkaTIsMTAyNCgkaTIpCisJbGJ1CSRpMywxMDI0KCRpMykKKwlzbGwJJGkwLDI0CisJc2xsCSRpMSwxNgorCXNsbAkkaTIsOAorCisJeG9yCSRyazQsJGkwCisJeG9yCSRyazQsJGkxCisJeG9yCSRyazQsJGkyCisJeG9yCSRyazQsJGkzCisKKwl4b3IJJHJrNSwkcms0CisJeG9yCSRyazYsJHJrNQorCXhvcgkkcms3LCRyazYKKworCSRQVFJfQUREICRrZXksMzIKKwkuc2V0CW5vcmVvcmRlcgorCWIJLkwyNTZiaXRzCisJJFBUUl9BREQgJHJjb24sNAorCisuTDI1NmJpdHNfZG9uZToKKwlzdwkkcmswLDMyKCRrZXkpCisJc3cJJHJrMSwzNigka2V5KQorCXN3CSRyazIsNDAoJGtleSkKKwlsaQkkY250LDE0CisJc3cJJHJrMyw0NCgka2V5KQorCWxpCSR0MCwwCisJc3cJJGNudCw0OCgka2V5KQorCSRQVFJfU1VCICRrZXksMTIqMTYKKworLkxla2V5X2RvbmU6CisJanIJJHJhCisJbm9wCisuZW5kCV9taXBzX0FFU19zZXRfZW5jcnlwdF9rZXkKKworLmdsb2JsCUFFU19zZXRfZW5jcnlwdF9rZXkKKy5lbnQJQUVTX3NldF9lbmNyeXB0X2tleQorQUVTX3NldF9lbmNyeXB0X2tleToKKwkuZnJhbWUJJHNwLCRGUkFNRVNJWkUsJHJhCisJLm1hc2sJJFNBVkVEX1JFR1NfTUFTSywtJFNaUkVHCisJLnNldAlub3Jlb3JkZXIKK19fXworJGNvZGUuPTw8X19fIGlmICgkZmxhdm91ciA9fiAvbzMyL2kpOwkjIG8zMiBQSUMtaWZpY2F0aW9uCisJLmNwbG9hZAkkcGYKK19fXworJGNvZGUuPTw8X19fOworCSRQVFJfU1VCICRzcCwkRlJBTUVTSVpFCisJJFJFR19TCSRyYSwkRlJBTUVTSVpFLTEqJFNaUkVHKCRzcCkKKwkkUkVHX1MJJGZwLCRGUkFNRVNJWkUtMiokU1pSRUcoJHNwKQorX19fCiskY29kZS49PDxfX18gaWYgKCRmbGF2b3VyID1+IC9udWJpL2kpOwkjIG9wdGltaXplIG5vbi1udWJpIHByb2xvZ3VlCisJJFJFR19TCSRzMywkRlJBTUVTSVpFLTMqJFNaUkVHKCRzcCkKKwkkUkVHX1MJJHMyLCRGUkFNRVNJWkUtNCokU1pSRUcoJHNwKQorCSRSRUdfUwkkczEsJEZSQU1FU0laRS01KiRTWlJFRygkc3ApCisJJFJFR19TCSRzMCwkRlJBTUVTSVpFLTYqJFNaUkVHKCRzcCkKKwkkUkVHX1MJJGdwLCRGUkFNRVNJWkUtNyokU1pSRUcoJHNwKQorX19fCiskY29kZS49PDxfX18gaWYgKCRmbGF2b3VyICF+IC9vMzIvaSk7CSMgbm9uLW8zMiBQSUMtaWZpY2F0aW9uCisJLmNwbG9jYWwJJFRibAorCS5jcHNldHVwCSRwZiwkemVybyxBRVNfc2V0X2VuY3J5cHRfa2V5CitfX18KKyRjb2RlLj08PF9fXzsKKwkuc2V0CXJlb3JkZXIKKwlsYQkkVGJsLEFFU19UZQkJIyBQSUMtaWZpZWQgJ2xvYWQgYWRkcmVzcycKKworCWJhbAlfbWlwc19BRVNfc2V0X2VuY3J5cHRfa2V5CisKKwkuc2V0CW5vcmVvcmRlcgorCW1vdmUJJGEwLCR0MAorCSRSRUdfTAkkcmEsJEZSQU1FU0laRS0xKiRTWlJFRygkc3ApCisJJFJFR19MCSRmcCwkRlJBTUVTSVpFLTIqJFNaUkVHKCRzcCkKK19fXworJGNvZGUuPTw8X19fIGlmICgkZmxhdm91ciA9fiAvbnViaS9pKTsKKwkkUkVHX0wJJHMzLCRGUkFNRVNJWkUtMTEqJFNaUkVHKCRzcCkKKwkkUkVHX0wJJHMyLCRGUkFNRVNJWkUtMTIqJFNaUkVHKCRzcCkKKwkkUkVHX0wJJHMxLCRGUkFNRVNJWkUtMTMqJFNaUkVHKCRzcCkKKwkkUkVHX0wJJHMwLCRGUkFNRVNJWkUtMTQqJFNaUkVHKCRzcCkKKwkkUkVHX0wJJGdwLCRGUkFNRVNJWkUtMTUqJFNaUkVHKCRzcCkKK19fXworJGNvZGUuPTw8X19fOworCWpyCSRyYQorCSRQVFJfQUREICRzcCwkRlJBTUVTSVpFCisuZW5kCUFFU19zZXRfZW5jcnlwdF9rZXkKK19fXworDAorbXkgKCRoZWFkLCR0YWlsKT0oJGlucCwkYml0cyk7CitteSAoJHRwMSwkdHAyLCR0cDQsJHRwOCwkdHA5LCR0cGIsJHRwZCwkdHBlKT0oJGE0LCRhNSwkYTYsJGE3LCRzMCwkczEsJHMyLCRzMyk7CitteSAoJG0sJHg4MDgwODA4MCwkeDdmN2Y3ZjdmLCR4MWIxYjFiMWIpPSgkYXQsJHQwLCR0MSwkdDIpOworJGNvZGUuPTw8X19fOworLmFsaWduCTUKKy5nbG9ibAlBRVNfc2V0X2RlY3J5cHRfa2V5CisuZW50CUFFU19zZXRfZGVjcnlwdF9rZXkKK0FFU19zZXRfZGVjcnlwdF9rZXk6CisJLmZyYW1lCSRzcCwkRlJBTUVTSVpFLCRyYQorCS5tYXNrCSRTQVZFRF9SRUdTX01BU0ssLSRTWlJFRworCS5zZXQJbm9yZW9yZGVyCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJGZsYXZvdXIgPX4gL28zMi9pKTsJIyBvMzIgUElDLWlmaWNhdGlvbgorCS5jcGxvYWQJJHBmCitfX18KKyRjb2RlLj08PF9fXzsKKwkkUFRSX1NVQiAkc3AsJEZSQU1FU0laRQorCSRSRUdfUwkkcmEsJEZSQU1FU0laRS0xKiRTWlJFRygkc3ApCisJJFJFR19TCSRmcCwkRlJBTUVTSVpFLTIqJFNaUkVHKCRzcCkKK19fXworJGNvZGUuPTw8X19fIGlmICgkZmxhdm91ciA9fiAvbnViaS9pKTsJIyBvcHRpbWl6ZSBub24tbnViaSBwcm9sb2d1ZQorCSRSRUdfUwkkczMsJEZSQU1FU0laRS0zKiRTWlJFRygkc3ApCisJJFJFR19TCSRzMiwkRlJBTUVTSVpFLTQqJFNaUkVHKCRzcCkKKwkkUkVHX1MJJHMxLCRGUkFNRVNJWkUtNSokU1pSRUcoJHNwKQorCSRSRUdfUwkkczAsJEZSQU1FU0laRS02KiRTWlJFRygkc3ApCisJJFJFR19TCSRncCwkRlJBTUVTSVpFLTcqJFNaUkVHKCRzcCkKK19fXworJGNvZGUuPTw8X19fIGlmICgkZmxhdm91ciAhfiAvbzMyL2kpOwkjIG5vbi1vMzIgUElDLWlmaWNhdGlvbgorCS5jcGxvY2FsCSRUYmwKKwkuY3BzZXR1cAkkcGYsJHplcm8sQUVTX3NldF9kZWNyeXB0X2tleQorX19fCiskY29kZS49PDxfX187CisJLnNldAlyZW9yZGVyCisJbGEJJFRibCxBRVNfVGUJCSMgUElDLWlmaWVkICdsb2FkIGFkZHJlc3MnCisKKwliYWwJX21pcHNfQUVTX3NldF9lbmNyeXB0X2tleQorCisJYmx0egkkdDAsLkxka2V5X2RvbmUKKworCXNsbAkkYXQsJGNudCw0CisJJFBUUl9BREQgJGhlYWQsJGtleSwwCisJJFBUUl9BREQgJHRhaWwsJGtleSwkYXQKKy5hbGlnbgk0CisuTHN3YXA6CisJbHcJJHJrMCwwKCRoZWFkKQorCWx3CSRyazEsNCgkaGVhZCkKKwlsdwkkcmsyLDgoJGhlYWQpCisJbHcJJHJrMywxMigkaGVhZCkKKwlsdwkkcms0LDAoJHRhaWwpCisJbHcJJHJrNSw0KCR0YWlsKQorCWx3CSRyazYsOCgkdGFpbCkKKwlsdwkkcms3LDEyKCR0YWlsKQorCXN3CSRyazAsMCgkdGFpbCkKKwlzdwkkcmsxLDQoJHRhaWwpCisJc3cJJHJrMiw4KCR0YWlsKQorCXN3CSRyazMsMTIoJHRhaWwpCisJJFBUUl9BREQgJGhlYWQsMTYKKwkkUFRSX1NVQiAkdGFpbCwxNgorCXN3CSRyazQsLTE2KCRoZWFkKQorCXN3CSRyazUsLTEyKCRoZWFkKQorCXN3CSRyazYsLTgoJGhlYWQpCisJc3cJJHJrNywtNCgkaGVhZCkKKwlibmUJJGhlYWQsJHRhaWwsLkxzd2FwCisKKwlsdwkkdHAxLDE2KCRrZXkpCQkjIG1vZHVsby1zY2hlZHVsZWQKKwlsdWkJJHg4MDgwODA4MCwweDgwODAKKwlzdWIJJGNudCwxCisJb3IJJHg4MDgwODA4MCwweDgwODAKKwlzbGwJJGNudCwyCisJJFBUUl9BREQgJGtleSwxNgorCWx1aQkkeDFiMWIxYjFiLDB4MWIxYgorCW5vcgkkeDdmN2Y3ZjdmLCR6ZXJvLCR4ODA4MDgwODAKKwlvcgkkeDFiMWIxYjFiLDB4MWIxYgorLmFsaWduCTQKKy5MbWl4OgorCWFuZAkkbSwkdHAxLCR4ODA4MDgwODAKKwlhbmQJJHRwMiwkdHAxLCR4N2Y3ZjdmN2YKKwlzcmwJJHRwNCwkbSw3CisJYWRkdQkkdHAyLCR0cDIJCSMgdHAyPDwxCisJc3VidQkkbSwkdHA0CisJYW5kCSRtLCR4MWIxYjFiMWIKKwl4b3IJJHRwMiwkbQorCisJYW5kCSRtLCR0cDIsJHg4MDgwODA4MAorCWFuZAkkdHA0LCR0cDIsJHg3ZjdmN2Y3ZgorCXNybAkkdHA4LCRtLDcKKwlhZGR1CSR0cDQsJHRwNAkJIyB0cDQ8PDEKKwlzdWJ1CSRtLCR0cDgKKwlhbmQJJG0sJHgxYjFiMWIxYgorCXhvcgkkdHA0LCRtCisKKwlhbmQJJG0sJHRwNCwkeDgwODA4MDgwCisJYW5kCSR0cDgsJHRwNCwkeDdmN2Y3ZjdmCisJc3JsCSR0cDksJG0sNworCWFkZHUJJHRwOCwkdHA4CQkjIHRwODw8MQorCXN1YnUJJG0sJHRwOQorCWFuZAkkbSwkeDFiMWIxYjFiCisJeG9yCSR0cDgsJG0KKworCXhvcgkkdHA5LCR0cDgsJHRwMQorCXhvcgkkdHBlLCR0cDgsJHRwNAorCXhvcgkkdHBiLCR0cDksJHRwMgorCXhvcgkkdHBkLCR0cDksJHRwNAorCisJX3JvcgkkdHAxLCR0cGQsMTYKKwkgeG9yCSR0cGUsJHRwMgorCV9yb3IJJHRwMiwkdHBkLC0xNgorCXhvcgkkdHBlLCR0cDEKKwlfcm9yCSR0cDEsJHRwOSw4CisJeG9yCSR0cGUsJHRwMgorCV9yb3IJJHRwMiwkdHA5LC0yNAorCXhvcgkkdHBlLCR0cDEKKwlfcm9yCSR0cDEsJHRwYiwyNAorCXhvcgkkdHBlLCR0cDIKKwlfcm9yCSR0cDIsJHRwYiwtOAorCXhvcgkkdHBlLCR0cDEKKwlsdwkkdHAxLDQoJGtleSkJCSMgbW9kdWxvLXNjaGVkdWxlZAorCXhvcgkkdHBlLCR0cDIKKwlzdWIJJGNudCwxCisJc3cJJHRwZSwwKCRrZXkpCisJJFBUUl9BREQgJGtleSw0CisJYm5legkkY250LC5MbWl4CisKKwlsaQkkdDAsMAorLkxka2V5X2RvbmU6CisJLnNldAlub3Jlb3JkZXIKKwltb3ZlCSRhMCwkdDAKKwkkUkVHX0wJJHJhLCRGUkFNRVNJWkUtMSokU1pSRUcoJHNwKQorCSRSRUdfTAkkZnAsJEZSQU1FU0laRS0yKiRTWlJFRygkc3ApCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJGZsYXZvdXIgPX4gL251YmkvaSk7CisJJFJFR19MCSRzMywkRlJBTUVTSVpFLTExKiRTWlJFRygkc3ApCisJJFJFR19MCSRzMiwkRlJBTUVTSVpFLTEyKiRTWlJFRygkc3ApCisJJFJFR19MCSRzMSwkRlJBTUVTSVpFLTEzKiRTWlJFRygkc3ApCisJJFJFR19MCSRzMCwkRlJBTUVTSVpFLTE0KiRTWlJFRygkc3ApCisJJFJFR19MCSRncCwkRlJBTUVTSVpFLTE1KiRTWlJFRygkc3ApCitfX18KKyRjb2RlLj08PF9fXzsKKwlqcgkkcmEKKwkkUFRSX0FERCAkc3AsJEZSQU1FU0laRQorLmVuZAlBRVNfc2V0X2RlY3J5cHRfa2V5CitfX18KK319fQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRhYmxlcyBhcmUga2VwdCBpbiBlbmRpYW4tbmV1dHJhbCBtYW5uZXIKKyRjb2RlLj08PF9fXzsKKy5yZGF0YQorLmFsaWduCTYKK0FFU19UZToKKy5ieXRlCTB4YzYsMHg2MywweDYzLDB4YTUsCTB4ZjgsMHg3YywweDdjLDB4ODQJIyBUZTAKKy5ieXRlCTB4ZWUsMHg3NywweDc3LDB4OTksCTB4ZjYsMHg3YiwweDdiLDB4OGQKKy5ieXRlCTB4ZmYsMHhmMiwweGYyLDB4MGQsCTB4ZDYsMHg2YiwweDZiLDB4YmQKKy5ieXRlCTB4ZGUsMHg2ZiwweDZmLDB4YjEsCTB4OTEsMHhjNSwweGM1LDB4NTQKKy5ieXRlCTB4NjAsMHgzMCwweDMwLDB4NTAsCTB4MDIsMHgwMSwweDAxLDB4MDMKKy5ieXRlCTB4Y2UsMHg2NywweDY3LDB4YTksCTB4NTYsMHgyYiwweDJiLDB4N2QKKy5ieXRlCTB4ZTcsMHhmZSwweGZlLDB4MTksCTB4YjUsMHhkNywweGQ3LDB4NjIKKy5ieXRlCTB4NGQsMHhhYiwweGFiLDB4ZTYsCTB4ZWMsMHg3NiwweDc2LDB4OWEKKy5ieXRlCTB4OGYsMHhjYSwweGNhLDB4NDUsCTB4MWYsMHg4MiwweDgyLDB4OWQKKy5ieXRlCTB4ODksMHhjOSwweGM5LDB4NDAsCTB4ZmEsMHg3ZCwweDdkLDB4ODcKKy5ieXRlCTB4ZWYsMHhmYSwweGZhLDB4MTUsCTB4YjIsMHg1OSwweDU5LDB4ZWIKKy5ieXRlCTB4OGUsMHg0NywweDQ3LDB4YzksCTB4ZmIsMHhmMCwweGYwLDB4MGIKKy5ieXRlCTB4NDEsMHhhZCwweGFkLDB4ZWMsCTB4YjMsMHhkNCwweGQ0LDB4NjcKKy5ieXRlCTB4NWYsMHhhMiwweGEyLDB4ZmQsCTB4NDUsMHhhZiwweGFmLDB4ZWEKKy5ieXRlCTB4MjMsMHg5YywweDljLDB4YmYsCTB4NTMsMHhhNCwweGE0LDB4ZjcKKy5ieXRlCTB4ZTQsMHg3MiwweDcyLDB4OTYsCTB4OWIsMHhjMCwweGMwLDB4NWIKKy5ieXRlCTB4NzUsMHhiNywweGI3LDB4YzIsCTB4ZTEsMHhmZCwweGZkLDB4MWMKKy5ieXRlCTB4M2QsMHg5MywweDkzLDB4YWUsCTB4NGMsMHgyNiwweDI2LDB4NmEKKy5ieXRlCTB4NmMsMHgzNiwweDM2LDB4NWEsCTB4N2UsMHgzZiwweDNmLDB4NDEKKy5ieXRlCTB4ZjUsMHhmNywweGY3LDB4MDIsCTB4ODMsMHhjYywweGNjLDB4NGYKKy5ieXRlCTB4NjgsMHgzNCwweDM0LDB4NWMsCTB4NTEsMHhhNSwweGE1LDB4ZjQKKy5ieXRlCTB4ZDEsMHhlNSwweGU1LDB4MzQsCTB4ZjksMHhmMSwweGYxLDB4MDgKKy5ieXRlCTB4ZTIsMHg3MSwweDcxLDB4OTMsCTB4YWIsMHhkOCwweGQ4LDB4NzMKKy5ieXRlCTB4NjIsMHgzMSwweDMxLDB4NTMsCTB4MmEsMHgxNSwweDE1LDB4M2YKKy5ieXRlCTB4MDgsMHgwNCwweDA0LDB4MGMsCTB4OTUsMHhjNywweGM3LDB4NTIKKy5ieXRlCTB4NDYsMHgyMywweDIzLDB4NjUsCTB4OWQsMHhjMywweGMzLDB4NWUKKy5ieXRlCTB4MzAsMHgxOCwweDE4LDB4MjgsCTB4MzcsMHg5NiwweDk2LDB4YTEKKy5ieXRlCTB4MGEsMHgwNSwweDA1LDB4MGYsCTB4MmYsMHg5YSwweDlhLDB4YjUKKy5ieXRlCTB4MGUsMHgwNywweDA3LDB4MDksCTB4MjQsMHgxMiwweDEyLDB4MzYKKy5ieXRlCTB4MWIsMHg4MCwweDgwLDB4OWIsCTB4ZGYsMHhlMiwweGUyLDB4M2QKKy5ieXRlCTB4Y2QsMHhlYiwweGViLDB4MjYsCTB4NGUsMHgyNywweDI3LDB4NjkKKy5ieXRlCTB4N2YsMHhiMiwweGIyLDB4Y2QsCTB4ZWEsMHg3NSwweDc1LDB4OWYKKy5ieXRlCTB4MTIsMHgwOSwweDA5LDB4MWIsCTB4MWQsMHg4MywweDgzLDB4OWUKKy5ieXRlCTB4NTgsMHgyYywweDJjLDB4NzQsCTB4MzQsMHgxYSwweDFhLDB4MmUKKy5ieXRlCTB4MzYsMHgxYiwweDFiLDB4MmQsCTB4ZGMsMHg2ZSwweDZlLDB4YjIKKy5ieXRlCTB4YjQsMHg1YSwweDVhLDB4ZWUsCTB4NWIsMHhhMCwweGEwLDB4ZmIKKy5ieXRlCTB4YTQsMHg1MiwweDUyLDB4ZjYsCTB4NzYsMHgzYiwweDNiLDB4NGQKKy5ieXRlCTB4YjcsMHhkNiwweGQ2LDB4NjEsCTB4N2QsMHhiMywweGIzLDB4Y2UKKy5ieXRlCTB4NTIsMHgyOSwweDI5LDB4N2IsCTB4ZGQsMHhlMywweGUzLDB4M2UKKy5ieXRlCTB4NWUsMHgyZiwweDJmLDB4NzEsCTB4MTMsMHg4NCwweDg0LDB4OTcKKy5ieXRlCTB4YTYsMHg1MywweDUzLDB4ZjUsCTB4YjksMHhkMSwweGQxLDB4NjgKKy5ieXRlCTB4MDAsMHgwMCwweDAwLDB4MDAsCTB4YzEsMHhlZCwweGVkLDB4MmMKKy5ieXRlCTB4NDAsMHgyMCwweDIwLDB4NjAsCTB4ZTMsMHhmYywweGZjLDB4MWYKKy5ieXRlCTB4NzksMHhiMSwweGIxLDB4YzgsCTB4YjYsMHg1YiwweDViLDB4ZWQKKy5ieXRlCTB4ZDQsMHg2YSwweDZhLDB4YmUsCTB4OGQsMHhjYiwweGNiLDB4NDYKKy5ieXRlCTB4NjcsMHhiZSwweGJlLDB4ZDksCTB4NzIsMHgzOSwweDM5LDB4NGIKKy5ieXRlCTB4OTQsMHg0YSwweDRhLDB4ZGUsCTB4OTgsMHg0YywweDRjLDB4ZDQKKy5ieXRlCTB4YjAsMHg1OCwweDU4LDB4ZTgsCTB4ODUsMHhjZiwweGNmLDB4NGEKKy5ieXRlCTB4YmIsMHhkMCwweGQwLDB4NmIsCTB4YzUsMHhlZiwweGVmLDB4MmEKKy5ieXRlCTB4NGYsMHhhYSwweGFhLDB4ZTUsCTB4ZWQsMHhmYiwweGZiLDB4MTYKKy5ieXRlCTB4ODYsMHg0MywweDQzLDB4YzUsCTB4OWEsMHg0ZCwweDRkLDB4ZDcKKy5ieXRlCTB4NjYsMHgzMywweDMzLDB4NTUsCTB4MTEsMHg4NSwweDg1LDB4OTQKKy5ieXRlCTB4OGEsMHg0NSwweDQ1LDB4Y2YsCTB4ZTksMHhmOSwweGY5LDB4MTAKKy5ieXRlCTB4MDQsMHgwMiwweDAyLDB4MDYsCTB4ZmUsMHg3ZiwweDdmLDB4ODEKKy5ieXRlCTB4YTAsMHg1MCwweDUwLDB4ZjAsCTB4NzgsMHgzYywweDNjLDB4NDQKKy5ieXRlCTB4MjUsMHg5ZiwweDlmLDB4YmEsCTB4NGIsMHhhOCwweGE4LDB4ZTMKKy5ieXRlCTB4YTIsMHg1MSwweDUxLDB4ZjMsCTB4NWQsMHhhMywweGEzLDB4ZmUKKy5ieXRlCTB4ODAsMHg0MCwweDQwLDB4YzAsCTB4MDUsMHg4ZiwweDhmLDB4OGEKKy5ieXRlCTB4M2YsMHg5MiwweDkyLDB4YWQsCTB4MjEsMHg5ZCwweDlkLDB4YmMKKy5ieXRlCTB4NzAsMHgzOCwweDM4LDB4NDgsCTB4ZjEsMHhmNSwweGY1LDB4MDQKKy5ieXRlCTB4NjMsMHhiYywweGJjLDB4ZGYsCTB4NzcsMHhiNiwweGI2LDB4YzEKKy5ieXRlCTB4YWYsMHhkYSwweGRhLDB4NzUsCTB4NDIsMHgyMSwweDIxLDB4NjMKKy5ieXRlCTB4MjAsMHgxMCwweDEwLDB4MzAsCTB4ZTUsMHhmZiwweGZmLDB4MWEKKy5ieXRlCTB4ZmQsMHhmMywweGYzLDB4MGUsCTB4YmYsMHhkMiwweGQyLDB4NmQKKy5ieXRlCTB4ODEsMHhjZCwweGNkLDB4NGMsCTB4MTgsMHgwYywweDBjLDB4MTQKKy5ieXRlCTB4MjYsMHgxMywweDEzLDB4MzUsCTB4YzMsMHhlYywweGVjLDB4MmYKKy5ieXRlCTB4YmUsMHg1ZiwweDVmLDB4ZTEsCTB4MzUsMHg5NywweDk3LDB4YTIKKy5ieXRlCTB4ODgsMHg0NCwweDQ0LDB4Y2MsCTB4MmUsMHgxNywweDE3LDB4MzkKKy5ieXRlCTB4OTMsMHhjNCwweGM0LDB4NTcsCTB4NTUsMHhhNywweGE3LDB4ZjIKKy5ieXRlCTB4ZmMsMHg3ZSwweDdlLDB4ODIsCTB4N2EsMHgzZCwweDNkLDB4NDcKKy5ieXRlCTB4YzgsMHg2NCwweDY0LDB4YWMsCTB4YmEsMHg1ZCwweDVkLDB4ZTcKKy5ieXRlCTB4MzIsMHgxOSwweDE5LDB4MmIsCTB4ZTYsMHg3MywweDczLDB4OTUKKy5ieXRlCTB4YzAsMHg2MCwweDYwLDB4YTAsCTB4MTksMHg4MSwweDgxLDB4OTgKKy5ieXRlCTB4OWUsMHg0ZiwweDRmLDB4ZDEsCTB4YTMsMHhkYywweGRjLDB4N2YKKy5ieXRlCTB4NDQsMHgyMiwweDIyLDB4NjYsCTB4NTQsMHgyYSwweDJhLDB4N2UKKy5ieXRlCTB4M2IsMHg5MCwweDkwLDB4YWIsCTB4MGIsMHg4OCwweDg4LDB4ODMKKy5ieXRlCTB4OGMsMHg0NiwweDQ2LDB4Y2EsCTB4YzcsMHhlZSwweGVlLDB4MjkKKy5ieXRlCTB4NmIsMHhiOCwweGI4LDB4ZDMsCTB4MjgsMHgxNCwweDE0LDB4M2MKKy5ieXRlCTB4YTcsMHhkZSwweGRlLDB4NzksCTB4YmMsMHg1ZSwweDVlLDB4ZTIKKy5ieXRlCTB4MTYsMHgwYiwweDBiLDB4MWQsCTB4YWQsMHhkYiwweGRiLDB4NzYKKy5ieXRlCTB4ZGIsMHhlMCwweGUwLDB4M2IsCTB4NjQsMHgzMiwweDMyLDB4NTYKKy5ieXRlCTB4NzQsMHgzYSwweDNhLDB4NGUsCTB4MTQsMHgwYSwweDBhLDB4MWUKKy5ieXRlCTB4OTIsMHg0OSwweDQ5LDB4ZGIsCTB4MGMsMHgwNiwweDA2LDB4MGEKKy5ieXRlCTB4NDgsMHgyNCwweDI0LDB4NmMsCTB4YjgsMHg1YywweDVjLDB4ZTQKKy5ieXRlCTB4OWYsMHhjMiwweGMyLDB4NWQsCTB4YmQsMHhkMywweGQzLDB4NmUKKy5ieXRlCTB4NDMsMHhhYywweGFjLDB4ZWYsCTB4YzQsMHg2MiwweDYyLDB4YTYKKy5ieXRlCTB4MzksMHg5MSwweDkxLDB4YTgsCTB4MzEsMHg5NSwweDk1LDB4YTQKKy5ieXRlCTB4ZDMsMHhlNCwweGU0LDB4MzcsCTB4ZjIsMHg3OSwweDc5LDB4OGIKKy5ieXRlCTB4ZDUsMHhlNywweGU3LDB4MzIsCTB4OGIsMHhjOCwweGM4LDB4NDMKKy5ieXRlCTB4NmUsMHgzNywweDM3LDB4NTksCTB4ZGEsMHg2ZCwweDZkLDB4YjcKKy5ieXRlCTB4MDEsMHg4ZCwweDhkLDB4OGMsCTB4YjEsMHhkNSwweGQ1LDB4NjQKKy5ieXRlCTB4OWMsMHg0ZSwweDRlLDB4ZDIsCTB4NDksMHhhOSwweGE5LDB4ZTAKKy5ieXRlCTB4ZDgsMHg2YywweDZjLDB4YjQsCTB4YWMsMHg1NiwweDU2LDB4ZmEKKy5ieXRlCTB4ZjMsMHhmNCwweGY0LDB4MDcsCTB4Y2YsMHhlYSwweGVhLDB4MjUKKy5ieXRlCTB4Y2EsMHg2NSwweDY1LDB4YWYsCTB4ZjQsMHg3YSwweDdhLDB4OGUKKy5ieXRlCTB4NDcsMHhhZSwweGFlLDB4ZTksCTB4MTAsMHgwOCwweDA4LDB4MTgKKy5ieXRlCTB4NmYsMHhiYSwweGJhLDB4ZDUsCTB4ZjAsMHg3OCwweDc4LDB4ODgKKy5ieXRlCTB4NGEsMHgyNSwweDI1LDB4NmYsCTB4NWMsMHgyZSwweDJlLDB4NzIKKy5ieXRlCTB4MzgsMHgxYywweDFjLDB4MjQsCTB4NTcsMHhhNiwweGE2LDB4ZjEKKy5ieXRlCTB4NzMsMHhiNCwweGI0LDB4YzcsCTB4OTcsMHhjNiwweGM2LDB4NTEKKy5ieXRlCTB4Y2IsMHhlOCwweGU4LDB4MjMsCTB4YTEsMHhkZCwweGRkLDB4N2MKKy5ieXRlCTB4ZTgsMHg3NCwweDc0LDB4OWMsCTB4M2UsMHgxZiwweDFmLDB4MjEKKy5ieXRlCTB4OTYsMHg0YiwweDRiLDB4ZGQsCTB4NjEsMHhiZCwweGJkLDB4ZGMKKy5ieXRlCTB4MGQsMHg4YiwweDhiLDB4ODYsCTB4MGYsMHg4YSwweDhhLDB4ODUKKy5ieXRlCTB4ZTAsMHg3MCwweDcwLDB4OTAsCTB4N2MsMHgzZSwweDNlLDB4NDIKKy5ieXRlCTB4NzEsMHhiNSwweGI1LDB4YzQsCTB4Y2MsMHg2NiwweDY2LDB4YWEKKy5ieXRlCTB4OTAsMHg0OCwweDQ4LDB4ZDgsCTB4MDYsMHgwMywweDAzLDB4MDUKKy5ieXRlCTB4ZjcsMHhmNiwweGY2LDB4MDEsCTB4MWMsMHgwZSwweDBlLDB4MTIKKy5ieXRlCTB4YzIsMHg2MSwweDYxLDB4YTMsCTB4NmEsMHgzNSwweDM1LDB4NWYKKy5ieXRlCTB4YWUsMHg1NywweDU3LDB4ZjksCTB4NjksMHhiOSwweGI5LDB4ZDAKKy5ieXRlCTB4MTcsMHg4NiwweDg2LDB4OTEsCTB4OTksMHhjMSwweGMxLDB4NTgKKy5ieXRlCTB4M2EsMHgxZCwweDFkLDB4MjcsCTB4MjcsMHg5ZSwweDllLDB4YjkKKy5ieXRlCTB4ZDksMHhlMSwweGUxLDB4MzgsCTB4ZWIsMHhmOCwweGY4LDB4MTMKKy5ieXRlCTB4MmIsMHg5OCwweDk4LDB4YjMsCTB4MjIsMHgxMSwweDExLDB4MzMKKy5ieXRlCTB4ZDIsMHg2OSwweDY5LDB4YmIsCTB4YTksMHhkOSwweGQ5LDB4NzAKKy5ieXRlCTB4MDcsMHg4ZSwweDhlLDB4ODksCTB4MzMsMHg5NCwweDk0LDB4YTcKKy5ieXRlCTB4MmQsMHg5YiwweDliLDB4YjYsCTB4M2MsMHgxZSwweDFlLDB4MjIKKy5ieXRlCTB4MTUsMHg4NywweDg3LDB4OTIsCTB4YzksMHhlOSwweGU5LDB4MjAKKy5ieXRlCTB4ODcsMHhjZSwweGNlLDB4NDksCTB4YWEsMHg1NSwweDU1LDB4ZmYKKy5ieXRlCTB4NTAsMHgyOCwweDI4LDB4NzgsCTB4YTUsMHhkZiwweGRmLDB4N2EKKy5ieXRlCTB4MDMsMHg4YywweDhjLDB4OGYsCTB4NTksMHhhMSwweGExLDB4ZjgKKy5ieXRlCTB4MDksMHg4OSwweDg5LDB4ODAsCTB4MWEsMHgwZCwweDBkLDB4MTcKKy5ieXRlCTB4NjUsMHhiZiwweGJmLDB4ZGEsCTB4ZDcsMHhlNiwweGU2LDB4MzEKKy5ieXRlCTB4ODQsMHg0MiwweDQyLDB4YzYsCTB4ZDAsMHg2OCwweDY4LDB4YjgKKy5ieXRlCTB4ODIsMHg0MSwweDQxLDB4YzMsCTB4MjksMHg5OSwweDk5LDB4YjAKKy5ieXRlCTB4NWEsMHgyZCwweDJkLDB4NzcsCTB4MWUsMHgwZiwweDBmLDB4MTEKKy5ieXRlCTB4N2IsMHhiMCwweGIwLDB4Y2IsCTB4YTgsMHg1NCwweDU0LDB4ZmMKKy5ieXRlCTB4NmQsMHhiYiwweGJiLDB4ZDYsCTB4MmMsMHgxNiwweDE2LDB4M2EKKworLmJ5dGUJMHg2MywgMHg3YywgMHg3NywgMHg3YiwgMHhmMiwgMHg2YiwgMHg2ZiwgMHhjNQkjIFRlNAorLmJ5dGUJMHgzMCwgMHgwMSwgMHg2NywgMHgyYiwgMHhmZSwgMHhkNywgMHhhYiwgMHg3NgorLmJ5dGUJMHhjYSwgMHg4MiwgMHhjOSwgMHg3ZCwgMHhmYSwgMHg1OSwgMHg0NywgMHhmMAorLmJ5dGUJMHhhZCwgMHhkNCwgMHhhMiwgMHhhZiwgMHg5YywgMHhhNCwgMHg3MiwgMHhjMAorLmJ5dGUJMHhiNywgMHhmZCwgMHg5MywgMHgyNiwgMHgzNiwgMHgzZiwgMHhmNywgMHhjYworLmJ5dGUJMHgzNCwgMHhhNSwgMHhlNSwgMHhmMSwgMHg3MSwgMHhkOCwgMHgzMSwgMHgxNQorLmJ5dGUJMHgwNCwgMHhjNywgMHgyMywgMHhjMywgMHgxOCwgMHg5NiwgMHgwNSwgMHg5YQorLmJ5dGUJMHgwNywgMHgxMiwgMHg4MCwgMHhlMiwgMHhlYiwgMHgyNywgMHhiMiwgMHg3NQorLmJ5dGUJMHgwOSwgMHg4MywgMHgyYywgMHgxYSwgMHgxYiwgMHg2ZSwgMHg1YSwgMHhhMAorLmJ5dGUJMHg1MiwgMHgzYiwgMHhkNiwgMHhiMywgMHgyOSwgMHhlMywgMHgyZiwgMHg4NAorLmJ5dGUJMHg1MywgMHhkMSwgMHgwMCwgMHhlZCwgMHgyMCwgMHhmYywgMHhiMSwgMHg1YgorLmJ5dGUJMHg2YSwgMHhjYiwgMHhiZSwgMHgzOSwgMHg0YSwgMHg0YywgMHg1OCwgMHhjZgorLmJ5dGUJMHhkMCwgMHhlZiwgMHhhYSwgMHhmYiwgMHg0MywgMHg0ZCwgMHgzMywgMHg4NQorLmJ5dGUJMHg0NSwgMHhmOSwgMHgwMiwgMHg3ZiwgMHg1MCwgMHgzYywgMHg5ZiwgMHhhOAorLmJ5dGUJMHg1MSwgMHhhMywgMHg0MCwgMHg4ZiwgMHg5MiwgMHg5ZCwgMHgzOCwgMHhmNQorLmJ5dGUJMHhiYywgMHhiNiwgMHhkYSwgMHgyMSwgMHgxMCwgMHhmZiwgMHhmMywgMHhkMgorLmJ5dGUJMHhjZCwgMHgwYywgMHgxMywgMHhlYywgMHg1ZiwgMHg5NywgMHg0NCwgMHgxNworLmJ5dGUJMHhjNCwgMHhhNywgMHg3ZSwgMHgzZCwgMHg2NCwgMHg1ZCwgMHgxOSwgMHg3MworLmJ5dGUJMHg2MCwgMHg4MSwgMHg0ZiwgMHhkYywgMHgyMiwgMHgyYSwgMHg5MCwgMHg4OAorLmJ5dGUJMHg0NiwgMHhlZSwgMHhiOCwgMHgxNCwgMHhkZSwgMHg1ZSwgMHgwYiwgMHhkYgorLmJ5dGUJMHhlMCwgMHgzMiwgMHgzYSwgMHgwYSwgMHg0OSwgMHgwNiwgMHgyNCwgMHg1YworLmJ5dGUJMHhjMiwgMHhkMywgMHhhYywgMHg2MiwgMHg5MSwgMHg5NSwgMHhlNCwgMHg3OQorLmJ5dGUJMHhlNywgMHhjOCwgMHgzNywgMHg2ZCwgMHg4ZCwgMHhkNSwgMHg0ZSwgMHhhOQorLmJ5dGUJMHg2YywgMHg1NiwgMHhmNCwgMHhlYSwgMHg2NSwgMHg3YSwgMHhhZSwgMHgwOAorLmJ5dGUJMHhiYSwgMHg3OCwgMHgyNSwgMHgyZSwgMHgxYywgMHhhNiwgMHhiNCwgMHhjNgorLmJ5dGUJMHhlOCwgMHhkZCwgMHg3NCwgMHgxZiwgMHg0YiwgMHhiZCwgMHg4YiwgMHg4YQorLmJ5dGUJMHg3MCwgMHgzZSwgMHhiNSwgMHg2NiwgMHg0OCwgMHgwMywgMHhmNiwgMHgwZQorLmJ5dGUJMHg2MSwgMHgzNSwgMHg1NywgMHhiOSwgMHg4NiwgMHhjMSwgMHgxZCwgMHg5ZQorLmJ5dGUJMHhlMSwgMHhmOCwgMHg5OCwgMHgxMSwgMHg2OSwgMHhkOSwgMHg4ZSwgMHg5NAorLmJ5dGUJMHg5YiwgMHgxZSwgMHg4NywgMHhlOSwgMHhjZSwgMHg1NSwgMHgyOCwgMHhkZgorLmJ5dGUJMHg4YywgMHhhMSwgMHg4OSwgMHgwZCwgMHhiZiwgMHhlNiwgMHg0MiwgMHg2OAorLmJ5dGUJMHg0MSwgMHg5OSwgMHgyZCwgMHgwZiwgMHhiMCwgMHg1NCwgMHhiYiwgMHgxNgorCisuYnl0ZQkweDAxLDB4MDAsMHgwMCwweDAwLAkweDAyLDB4MDAsMHgwMCwweDAwCSMgcmNvbgorLmJ5dGUJMHgwNCwweDAwLDB4MDAsMHgwMCwJMHgwOCwweDAwLDB4MDAsMHgwMAorLmJ5dGUJMHgxMCwweDAwLDB4MDAsMHgwMCwJMHgyMCwweDAwLDB4MDAsMHgwMAorLmJ5dGUJMHg0MCwweDAwLDB4MDAsMHgwMCwJMHg4MCwweDAwLDB4MDAsMHgwMAorLmJ5dGUJMHgxQiwweDAwLDB4MDAsMHgwMCwJMHgzNiwweDAwLDB4MDAsMHgwMAorCisuYWxpZ24JNgorQUVTX1RkOgorLmJ5dGUJMHg1MSwweGY0LDB4YTcsMHg1MCwJMHg3ZSwweDQxLDB4NjUsMHg1MwkjIFRkMAorLmJ5dGUJMHgxYSwweDE3LDB4YTQsMHhjMywJMHgzYSwweDI3LDB4NWUsMHg5NgorLmJ5dGUJMHgzYiwweGFiLDB4NmIsMHhjYiwJMHgxZiwweDlkLDB4NDUsMHhmMQorLmJ5dGUJMHhhYywweGZhLDB4NTgsMHhhYiwJMHg0YiwweGUzLDB4MDMsMHg5MworLmJ5dGUJMHgyMCwweDMwLDB4ZmEsMHg1NSwJMHhhZCwweDc2LDB4NmQsMHhmNgorLmJ5dGUJMHg4OCwweGNjLDB4NzYsMHg5MSwJMHhmNSwweDAyLDB4NGMsMHgyNQorLmJ5dGUJMHg0ZiwweGU1LDB4ZDcsMHhmYywJMHhjNSwweDJhLDB4Y2IsMHhkNworLmJ5dGUJMHgyNiwweDM1LDB4NDQsMHg4MCwJMHhiNSwweDYyLDB4YTMsMHg4ZgorLmJ5dGUJMHhkZSwweGIxLDB4NWEsMHg0OSwJMHgyNSwweGJhLDB4MWIsMHg2NworLmJ5dGUJMHg0NSwweGVhLDB4MGUsMHg5OCwJMHg1ZCwweGZlLDB4YzAsMHhlMQorLmJ5dGUJMHhjMywweDJmLDB4NzUsMHgwMiwJMHg4MSwweDRjLDB4ZjAsMHgxMgorLmJ5dGUJMHg4ZCwweDQ2LDB4OTcsMHhhMywJMHg2YiwweGQzLDB4ZjksMHhjNgorLmJ5dGUJMHgwMywweDhmLDB4NWYsMHhlNywJMHgxNSwweDkyLDB4OWMsMHg5NQorLmJ5dGUJMHhiZiwweDZkLDB4N2EsMHhlYiwJMHg5NSwweDUyLDB4NTksMHhkYQorLmJ5dGUJMHhkNCwweGJlLDB4ODMsMHgyZCwJMHg1OCwweDc0LDB4MjEsMHhkMworLmJ5dGUJMHg0OSwweGUwLDB4NjksMHgyOSwJMHg4ZSwweGM5LDB4YzgsMHg0NAorLmJ5dGUJMHg3NSwweGMyLDB4ODksMHg2YSwJMHhmNCwweDhlLDB4NzksMHg3OAorLmJ5dGUJMHg5OSwweDU4LDB4M2UsMHg2YiwJMHgyNywweGI5LDB4NzEsMHhkZAorLmJ5dGUJMHhiZSwweGUxLDB4NGYsMHhiNiwJMHhmMCwweDg4LDB4YWQsMHgxNworLmJ5dGUJMHhjOSwweDIwLDB4YWMsMHg2NiwJMHg3ZCwweGNlLDB4M2EsMHhiNAorLmJ5dGUJMHg2MywweGRmLDB4NGEsMHgxOCwJMHhlNSwweDFhLDB4MzEsMHg4MgorLmJ5dGUJMHg5NywweDUxLDB4MzMsMHg2MCwJMHg2MiwweDUzLDB4N2YsMHg0NQorLmJ5dGUJMHhiMSwweDY0LDB4NzcsMHhlMCwJMHhiYiwweDZiLDB4YWUsMHg4NAorLmJ5dGUJMHhmZSwweDgxLDB4YTAsMHgxYywJMHhmOSwweDA4LDB4MmIsMHg5NAorLmJ5dGUJMHg3MCwweDQ4LDB4NjgsMHg1OCwJMHg4ZiwweDQ1LDB4ZmQsMHgxOQorLmJ5dGUJMHg5NCwweGRlLDB4NmMsMHg4NywJMHg1MiwweDdiLDB4ZjgsMHhiNworLmJ5dGUJMHhhYiwweDczLDB4ZDMsMHgyMywJMHg3MiwweDRiLDB4MDIsMHhlMgorLmJ5dGUJMHhlMywweDFmLDB4OGYsMHg1NywJMHg2NiwweDU1LDB4YWIsMHgyYQorLmJ5dGUJMHhiMiwweGViLDB4MjgsMHgwNywJMHgyZiwweGI1LDB4YzIsMHgwMworLmJ5dGUJMHg4NiwweGM1LDB4N2IsMHg5YSwJMHhkMywweDM3LDB4MDgsMHhhNQorLmJ5dGUJMHgzMCwweDI4LDB4ODcsMHhmMiwJMHgyMywweGJmLDB4YTUsMHhiMgorLmJ5dGUJMHgwMiwweDAzLDB4NmEsMHhiYSwJMHhlZCwweDE2LDB4ODIsMHg1YworLmJ5dGUJMHg4YSwweGNmLDB4MWMsMHgyYiwJMHhhNywweDc5LDB4YjQsMHg5MgorLmJ5dGUJMHhmMywweDA3LDB4ZjIsMHhmMCwJMHg0ZSwweDY5LDB4ZTIsMHhhMQorLmJ5dGUJMHg2NSwweGRhLDB4ZjQsMHhjZCwJMHgwNiwweDA1LDB4YmUsMHhkNQorLmJ5dGUJMHhkMSwweDM0LDB4NjIsMHgxZiwJMHhjNCwweGE2LDB4ZmUsMHg4YQorLmJ5dGUJMHgzNCwweDJlLDB4NTMsMHg5ZCwJMHhhMiwweGYzLDB4NTUsMHhhMAorLmJ5dGUJMHgwNSwweDhhLDB4ZTEsMHgzMiwJMHhhNCwweGY2LDB4ZWIsMHg3NQorLmJ5dGUJMHgwYiwweDgzLDB4ZWMsMHgzOSwJMHg0MCwweDYwLDB4ZWYsMHhhYQorLmJ5dGUJMHg1ZSwweDcxLDB4OWYsMHgwNiwJMHhiZCwweDZlLDB4MTAsMHg1MQorLmJ5dGUJMHgzZSwweDIxLDB4OGEsMHhmOSwJMHg5NiwweGRkLDB4MDYsMHgzZAorLmJ5dGUJMHhkZCwweDNlLDB4MDUsMHhhZSwJMHg0ZCwweGU2LDB4YmQsMHg0NgorLmJ5dGUJMHg5MSwweDU0LDB4OGQsMHhiNSwJMHg3MSwweGM0LDB4NWQsMHgwNQorLmJ5dGUJMHgwNCwweDA2LDB4ZDQsMHg2ZiwJMHg2MCwweDUwLDB4MTUsMHhmZgorLmJ5dGUJMHgxOSwweDk4LDB4ZmIsMHgyNCwJMHhkNiwweGJkLDB4ZTksMHg5NworLmJ5dGUJMHg4OSwweDQwLDB4NDMsMHhjYywJMHg2NywweGQ5LDB4OWUsMHg3NworLmJ5dGUJMHhiMCwweGU4LDB4NDIsMHhiZCwJMHgwNywweDg5LDB4OGIsMHg4OAorLmJ5dGUJMHhlNywweDE5LDB4NWIsMHgzOCwJMHg3OSwweGM4LDB4ZWUsMHhkYgorLmJ5dGUJMHhhMSwweDdjLDB4MGEsMHg0NywJMHg3YywweDQyLDB4MGYsMHhlOQorLmJ5dGUJMHhmOCwweDg0LDB4MWUsMHhjOSwJMHgwMCwweDAwLDB4MDAsMHgwMAorLmJ5dGUJMHgwOSwweDgwLDB4ODYsMHg4MywJMHgzMiwweDJiLDB4ZWQsMHg0OAorLmJ5dGUJMHgxZSwweDExLDB4NzAsMHhhYywJMHg2YywweDVhLDB4NzIsMHg0ZQorLmJ5dGUJMHhmZCwweDBlLDB4ZmYsMHhmYiwJMHgwZiwweDg1LDB4MzgsMHg1NgorLmJ5dGUJMHgzZCwweGFlLDB4ZDUsMHgxZSwJMHgzNiwweDJkLDB4MzksMHgyNworLmJ5dGUJMHgwYSwweDBmLDB4ZDksMHg2NCwJMHg2OCwweDVjLDB4YTYsMHgyMQorLmJ5dGUJMHg5YiwweDViLDB4NTQsMHhkMSwJMHgyNCwweDM2LDB4MmUsMHgzYQorLmJ5dGUJMHgwYywweDBhLDB4NjcsMHhiMSwJMHg5MywweDU3LDB4ZTcsMHgwZgorLmJ5dGUJMHhiNCwweGVlLDB4OTYsMHhkMiwJMHgxYiwweDliLDB4OTEsMHg5ZQorLmJ5dGUJMHg4MCwweGMwLDB4YzUsMHg0ZiwJMHg2MSwweGRjLDB4MjAsMHhhMgorLmJ5dGUJMHg1YSwweDc3LDB4NGIsMHg2OSwJMHgxYywweDEyLDB4MWEsMHgxNgorLmJ5dGUJMHhlMiwweDkzLDB4YmEsMHgwYSwJMHhjMCwweGEwLDB4MmEsMHhlNQorLmJ5dGUJMHgzYywweDIyLDB4ZTAsMHg0MywJMHgxMiwweDFiLDB4MTcsMHgxZAorLmJ5dGUJMHgwZSwweDA5LDB4MGQsMHgwYiwJMHhmMiwweDhiLDB4YzcsMHhhZAorLmJ5dGUJMHgyZCwweGI2LDB4YTgsMHhiOSwJMHgxNCwweDFlLDB4YTksMHhjOAorLmJ5dGUJMHg1NywweGYxLDB4MTksMHg4NSwJMHhhZiwweDc1LDB4MDcsMHg0YworLmJ5dGUJMHhlZSwweDk5LDB4ZGQsMHhiYiwJMHhhMywweDdmLDB4NjAsMHhmZAorLmJ5dGUJMHhmNywweDAxLDB4MjYsMHg5ZiwJMHg1YywweDcyLDB4ZjUsMHhiYworLmJ5dGUJMHg0NCwweDY2LDB4M2IsMHhjNSwJMHg1YiwweGZiLDB4N2UsMHgzNAorLmJ5dGUJMHg4YiwweDQzLDB4MjksMHg3NiwJMHhjYiwweDIzLDB4YzYsMHhkYworLmJ5dGUJMHhiNiwweGVkLDB4ZmMsMHg2OCwJMHhiOCwweGU0LDB4ZjEsMHg2MworLmJ5dGUJMHhkNywweDMxLDB4ZGMsMHhjYSwJMHg0MiwweDYzLDB4ODUsMHgxMAorLmJ5dGUJMHgxMywweDk3LDB4MjIsMHg0MCwJMHg4NCwweGM2LDB4MTEsMHgyMAorLmJ5dGUJMHg4NSwweDRhLDB4MjQsMHg3ZCwJMHhkMiwweGJiLDB4M2QsMHhmOAorLmJ5dGUJMHhhZSwweGY5LDB4MzIsMHgxMSwJMHhjNywweDI5LDB4YTEsMHg2ZAorLmJ5dGUJMHgxZCwweDllLDB4MmYsMHg0YiwJMHhkYywweGIyLDB4MzAsMHhmMworLmJ5dGUJMHgwZCwweDg2LDB4NTIsMHhlYywJMHg3NywweGMxLDB4ZTMsMHhkMAorLmJ5dGUJMHgyYiwweGIzLDB4MTYsMHg2YywJMHhhOSwweDcwLDB4YjksMHg5OQorLmJ5dGUJMHgxMSwweDk0LDB4NDgsMHhmYSwJMHg0NywweGU5LDB4NjQsMHgyMgorLmJ5dGUJMHhhOCwweGZjLDB4OGMsMHhjNCwJMHhhMCwweGYwLDB4M2YsMHgxYQorLmJ5dGUJMHg1NiwweDdkLDB4MmMsMHhkOCwJMHgyMiwweDMzLDB4OTAsMHhlZgorLmJ5dGUJMHg4NywweDQ5LDB4NGUsMHhjNywJMHhkOSwweDM4LDB4ZDEsMHhjMQorLmJ5dGUJMHg4YywweGNhLDB4YTIsMHhmZSwJMHg5OCwweGQ0LDB4MGIsMHgzNgorLmJ5dGUJMHhhNiwweGY1LDB4ODEsMHhjZiwJMHhhNSwweDdhLDB4ZGUsMHgyOAorLmJ5dGUJMHhkYSwweGI3LDB4OGUsMHgyNiwJMHgzZiwweGFkLDB4YmYsMHhhNAorLmJ5dGUJMHgyYywweDNhLDB4OWQsMHhlNCwJMHg1MCwweDc4LDB4OTIsMHgwZAorLmJ5dGUJMHg2YSwweDVmLDB4Y2MsMHg5YiwJMHg1NCwweDdlLDB4NDYsMHg2MgorLmJ5dGUJMHhmNiwweDhkLDB4MTMsMHhjMiwJMHg5MCwweGQ4LDB4YjgsMHhlOAorLmJ5dGUJMHgyZSwweDM5LDB4ZjcsMHg1ZSwJMHg4MiwweGMzLDB4YWYsMHhmNQorLmJ5dGUJMHg5ZiwweDVkLDB4ODAsMHhiZSwJMHg2OSwweGQwLDB4OTMsMHg3YworLmJ5dGUJMHg2ZiwweGQ1LDB4MmQsMHhhOSwJMHhjZiwweDI1LDB4MTIsMHhiMworLmJ5dGUJMHhjOCwweGFjLDB4OTksMHgzYiwJMHgxMCwweDE4LDB4N2QsMHhhNworLmJ5dGUJMHhlOCwweDljLDB4NjMsMHg2ZSwJMHhkYiwweDNiLDB4YmIsMHg3YgorLmJ5dGUJMHhjZCwweDI2LDB4NzgsMHgwOSwJMHg2ZSwweDU5LDB4MTgsMHhmNAorLmJ5dGUJMHhlYywweDlhLDB4YjcsMHgwMSwJMHg4MywweDRmLDB4OWEsMHhhOAorLmJ5dGUJMHhlNiwweDk1LDB4NmUsMHg2NSwJMHhhYSwweGZmLDB4ZTYsMHg3ZQorLmJ5dGUJMHgyMSwweGJjLDB4Y2YsMHgwOCwJMHhlZiwweDE1LDB4ZTgsMHhlNgorLmJ5dGUJMHhiYSwweGU3LDB4OWIsMHhkOSwJMHg0YSwweDZmLDB4MzYsMHhjZQorLmJ5dGUJMHhlYSwweDlmLDB4MDksMHhkNCwJMHgyOSwweGIwLDB4N2MsMHhkNgorLmJ5dGUJMHgzMSwweGE0LDB4YjIsMHhhZiwJMHgyYSwweDNmLDB4MjMsMHgzMQorLmJ5dGUJMHhjNiwweGE1LDB4OTQsMHgzMCwJMHgzNSwweGEyLDB4NjYsMHhjMAorLmJ5dGUJMHg3NCwweDRlLDB4YmMsMHgzNywJMHhmYywweDgyLDB4Y2EsMHhhNgorLmJ5dGUJMHhlMCwweDkwLDB4ZDAsMHhiMCwJMHgzMywweGE3LDB4ZDgsMHgxNQorLmJ5dGUJMHhmMSwweDA0LDB4OTgsMHg0YSwJMHg0MSwweGVjLDB4ZGEsMHhmNworLmJ5dGUJMHg3ZiwweGNkLDB4NTAsMHgwZSwJMHgxNywweDkxLDB4ZjYsMHgyZgorLmJ5dGUJMHg3NiwweDRkLDB4ZDYsMHg4ZCwJMHg0MywweGVmLDB4YjAsMHg0ZAorLmJ5dGUJMHhjYywweGFhLDB4NGQsMHg1NCwJMHhlNCwweDk2LDB4MDQsMHhkZgorLmJ5dGUJMHg5ZSwweGQxLDB4YjUsMHhlMywJMHg0YywweDZhLDB4ODgsMHgxYgorLmJ5dGUJMHhjMSwweDJjLDB4MWYsMHhiOCwJMHg0NiwweDY1LDB4NTEsMHg3ZgorLmJ5dGUJMHg5ZCwweDVlLDB4ZWEsMHgwNCwJMHgwMSwweDhjLDB4MzUsMHg1ZAorLmJ5dGUJMHhmYSwweDg3LDB4NzQsMHg3MywJMHhmYiwweDBiLDB4NDEsMHgyZQorLmJ5dGUJMHhiMywweDY3LDB4MWQsMHg1YSwJMHg5MiwweGRiLDB4ZDIsMHg1MgorLmJ5dGUJMHhlOSwweDEwLDB4NTYsMHgzMywJMHg2ZCwweGQ2LDB4NDcsMHgxMworLmJ5dGUJMHg5YSwweGQ3LDB4NjEsMHg4YywJMHgzNywweGExLDB4MGMsMHg3YQorLmJ5dGUJMHg1OSwweGY4LDB4MTQsMHg4ZSwJMHhlYiwweDEzLDB4M2MsMHg4OQorLmJ5dGUJMHhjZSwweGE5LDB4MjcsMHhlZSwJMHhiNywweDYxLDB4YzksMHgzNQorLmJ5dGUJMHhlMSwweDFjLDB4ZTUsMHhlZCwJMHg3YSwweDQ3LDB4YjEsMHgzYworLmJ5dGUJMHg5YywweGQyLDB4ZGYsMHg1OSwJMHg1NSwweGYyLDB4NzMsMHgzZgorLmJ5dGUJMHgxOCwweDE0LDB4Y2UsMHg3OSwJMHg3MywweGM3LDB4MzcsMHhiZgorLmJ5dGUJMHg1MywweGY3LDB4Y2QsMHhlYSwJMHg1ZiwweGZkLDB4YWEsMHg1YgorLmJ5dGUJMHhkZiwweDNkLDB4NmYsMHgxNCwJMHg3OCwweDQ0LDB4ZGIsMHg4NgorLmJ5dGUJMHhjYSwweGFmLDB4ZjMsMHg4MSwJMHhiOSwweDY4LDB4YzQsMHgzZQorLmJ5dGUJMHgzOCwweDI0LDB4MzQsMHgyYywJMHhjMiwweGEzLDB4NDAsMHg1ZgorLmJ5dGUJMHgxNiwweDFkLDB4YzMsMHg3MiwJMHhiYywweGUyLDB4MjUsMHgwYworLmJ5dGUJMHgyOCwweDNjLDB4NDksMHg4YiwJMHhmZiwweDBkLDB4OTUsMHg0MQorLmJ5dGUJMHgzOSwweGE4LDB4MDEsMHg3MSwJMHgwOCwweDBjLDB4YjMsMHhkZQorLmJ5dGUJMHhkOCwweGI0LDB4ZTQsMHg5YywJMHg2NCwweDU2LDB4YzEsMHg5MAorLmJ5dGUJMHg3YiwweGNiLDB4ODQsMHg2MSwJMHhkNSwweDMyLDB4YjYsMHg3MAorLmJ5dGUJMHg0OCwweDZjLDB4NWMsMHg3NCwJMHhkMCwweGI4LDB4NTcsMHg0MgorCisuYnl0ZQkweDUyLCAweDA5LCAweDZhLCAweGQ1LCAweDMwLCAweDM2LCAweGE1LCAweDM4CSMgVGQ0CisuYnl0ZQkweGJmLCAweDQwLCAweGEzLCAweDllLCAweDgxLCAweGYzLCAweGQ3LCAweGZiCisuYnl0ZQkweDdjLCAweGUzLCAweDM5LCAweDgyLCAweDliLCAweDJmLCAweGZmLCAweDg3CisuYnl0ZQkweDM0LCAweDhlLCAweDQzLCAweDQ0LCAweGM0LCAweGRlLCAweGU5LCAweGNiCisuYnl0ZQkweDU0LCAweDdiLCAweDk0LCAweDMyLCAweGE2LCAweGMyLCAweDIzLCAweDNkCisuYnl0ZQkweGVlLCAweDRjLCAweDk1LCAweDBiLCAweDQyLCAweGZhLCAweGMzLCAweDRlCisuYnl0ZQkweDA4LCAweDJlLCAweGExLCAweDY2LCAweDI4LCAweGQ5LCAweDI0LCAweGIyCisuYnl0ZQkweDc2LCAweDViLCAweGEyLCAweDQ5LCAweDZkLCAweDhiLCAweGQxLCAweDI1CisuYnl0ZQkweDcyLCAweGY4LCAweGY2LCAweDY0LCAweDg2LCAweDY4LCAweDk4LCAweDE2CisuYnl0ZQkweGQ0LCAweGE0LCAweDVjLCAweGNjLCAweDVkLCAweDY1LCAweGI2LCAweDkyCisuYnl0ZQkweDZjLCAweDcwLCAweDQ4LCAweDUwLCAweGZkLCAweGVkLCAweGI5LCAweGRhCisuYnl0ZQkweDVlLCAweDE1LCAweDQ2LCAweDU3LCAweGE3LCAweDhkLCAweDlkLCAweDg0CisuYnl0ZQkweDkwLCAweGQ4LCAweGFiLCAweDAwLCAweDhjLCAweGJjLCAweGQzLCAweDBhCisuYnl0ZQkweGY3LCAweGU0LCAweDU4LCAweDA1LCAweGI4LCAweGIzLCAweDQ1LCAweDA2CisuYnl0ZQkweGQwLCAweDJjLCAweDFlLCAweDhmLCAweGNhLCAweDNmLCAweDBmLCAweDAyCisuYnl0ZQkweGMxLCAweGFmLCAweGJkLCAweDAzLCAweDAxLCAweDEzLCAweDhhLCAweDZiCisuYnl0ZQkweDNhLCAweDkxLCAweDExLCAweDQxLCAweDRmLCAweDY3LCAweGRjLCAweGVhCisuYnl0ZQkweDk3LCAweGYyLCAweGNmLCAweGNlLCAweGYwLCAweGI0LCAweGU2LCAweDczCisuYnl0ZQkweDk2LCAweGFjLCAweDc0LCAweDIyLCAweGU3LCAweGFkLCAweDM1LCAweDg1CisuYnl0ZQkweGUyLCAweGY5LCAweDM3LCAweGU4LCAweDFjLCAweDc1LCAweGRmLCAweDZlCisuYnl0ZQkweDQ3LCAweGYxLCAweDFhLCAweDcxLCAweDFkLCAweDI5LCAweGM1LCAweDg5CisuYnl0ZQkweDZmLCAweGI3LCAweDYyLCAweDBlLCAweGFhLCAweDE4LCAweGJlLCAweDFiCisuYnl0ZQkweGZjLCAweDU2LCAweDNlLCAweDRiLCAweGM2LCAweGQyLCAweDc5LCAweDIwCisuYnl0ZQkweDlhLCAweGRiLCAweGMwLCAweGZlLCAweDc4LCAweGNkLCAweDVhLCAweGY0CisuYnl0ZQkweDFmLCAweGRkLCAweGE4LCAweDMzLCAweDg4LCAweDA3LCAweGM3LCAweDMxCisuYnl0ZQkweGIxLCAweDEyLCAweDEwLCAweDU5LCAweDI3LCAweDgwLCAweGVjLCAweDVmCisuYnl0ZQkweDYwLCAweDUxLCAweDdmLCAweGE5LCAweDE5LCAweGI1LCAweDRhLCAweDBkCisuYnl0ZQkweDJkLCAweGU1LCAweDdhLCAweDlmLCAweDkzLCAweGM5LCAweDljLCAweGVmCisuYnl0ZQkweGEwLCAweGUwLCAweDNiLCAweDRkLCAweGFlLCAweDJhLCAweGY1LCAweGIwCisuYnl0ZQkweGM4LCAweGViLCAweGJiLCAweDNjLCAweDgzLCAweDUzLCAweDk5LCAweDYxCisuYnl0ZQkweDE3LCAweDJiLCAweDA0LCAweDdlLCAweGJhLCAweDc3LCAweGQ2LCAweDI2CisuYnl0ZQkweGUxLCAweDY5LCAweDE0LCAweDYzLCAweDU1LCAweDIxLCAweDBjLCAweDdkCitfX18KKwwKK2ZvcmVhY2ggKHNwbGl0KCJcbiIsJGNvZGUpKSB7CisJcy9cYChbXlxgXSopXGAvZXZhbCAkMS9nZTsKKworCSMgbWFkZS11cCBfaW5zdHJ1Y3Rpb25zLCBfeHRyLCBfaW5zLCBfcm9yIGFuZCBfYmlhcywgY29wZQorCSMgd2l0aCBieXRlIG9yZGVyIGRlcGVuZGVuY2llcy4uLgorCWlmICgvXlxzK18vKSB7CisJICAgIHMvKF9bYS16XStccyspKFwkWzAtOV0rKSwoW14sXSspKCMuKikqJC8kMSQyLCQyLCQzLzsKKworCSAgICBzL194dHJccysoXCRbMC05XSspLChcJFswLTldKyksKFswLTldKyhcLTIpKikvCisJCXNwcmludGYoInNybFx0JDEsJDIsJWQiLCRiaWdfZW5kaWFuID8JZXZhbCgkMykKKwkJCQkJOgkJZXZhbCgiMjQtJDMiKSkvZSBvcgorCSAgICBzL19pbnNccysoXCRbMC05XSspLChcJFswLTldKyksKFswLTldKykvCisJCXNwcmludGYoInNsbFx0JDEsJDIsJWQiLCRiaWdfZW5kaWFuID8JZXZhbCgkMykKKwkJCQkJOgkJZXZhbCgiMjQtJDMiKSkvZSBvcgorCSAgICBzL19yb3JccysoXCRbMC05XSspLChcJFswLTldKyksKFwtP1swLTldKykvCisJCXNwcmludGYoInNybFx0JDEsJDIsJWQiLCRiaWdfZW5kaWFuID8JZXZhbCgkMykKKwkJCQkJOgkJZXZhbCgiJDMqLTEiKSkvZSBvcgorCSAgICBzL19iaWFzXHMrKFwkWzAtOV0rKSwoXCRbMC05XSspLChbMC05XSspLworCQlzcHJpbnRmKCJzbGxcdCQxLCQyLCVkIiwkYmlnX2VuZGlhbiA/CWV2YWwoJDMpCisJCQkJCToJCWV2YWwoIigkMy0xNikmMzEiKSkvZTsKKworCSAgICBzL3NybFxzKyhcJFswLTldKyksKFwkWzAtOV0rKSxcLShbMC05XSspLworCQlzcHJpbnRmKCJzbGxcdCQxLCQyLCQzIikvZQkJCQlvcgorCSAgICBzL3NybFxzKyhcJFswLTldKyksKFwkWzAtOV0rKSwwLworCQlzcHJpbnRmKCJhbmRcdCQxLCQyLDB4ZmYiKS9lCQkJCW9yCisJICAgIHMvKHNsbFxzK1wkWzAtOV0rLFwkWzAtOV0rLDApLyMkMS87CisJfQorCisJIyBjb252ZXJ0IGx3bC9sd3IgYW5kIHN3ci9zd2wgdG8gbGl0dGxlLWVuZGlhbiBvcmRlcgorCWlmICghJGJpZ19lbmRpYW4gJiYgL15ccytbc2xdd1tscl1ccysvKSB7CisJICAgIHMvKFtzbF13bC4qKShbMC05XSspXCgoXCRbMC05XSspXCkvCisJCXNwcmludGYoIiQxJWQoJDMpIixldmFsKCIkMi0kMiU0KygkMiU0LTEpJjMiKSkvZQlvcgorCSAgICBzLyhbc2xdd3IuKikoWzAtOV0rKVwoKFwkWzAtOV0rKVwpLworCQlzcHJpbnRmKCIkMSVkKCQzKSIsZXZhbCgiJDItJDIlNCsoJDIlNCsxKSYzIikpL2U7CisJfQorCisJcHJpbnQgJF8sIlxuIjsKK30KKworY2xvc2UgU1RET1VUOwpkaWZmIC0tZ2l0IGEvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzLW1pcHMucyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYXNtL2Flcy1taXBzLnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMxZDg1YQotLS0gL2Rldi9udWxsCisrKyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYXNtL2Flcy1taXBzLnMKQEAgLTAsMCArMSwxMzQxIEBACisudGV4dAorI2lmZGVmIE9QRU5TU0xfRklQU0NBTklTVEVSCisjIGluY2x1ZGUgPG9wZW5zc2wvZmlwc3N5bXMuaD4KKyNlbmRpZgorCisjaWYgIWRlZmluZWQoX192eHdvcmtzKSB8fCBkZWZpbmVkKF9fcGljX18pCisub3B0aW9uCXBpYzIKKyNlbmRpZgorLnNldAlub2F0CisuYWxpZ24JNQorLmVudAlfbWlwc19BRVNfZW5jcnlwdAorX21pcHNfQUVTX2VuY3J5cHQ6CisJLmZyYW1lCSQyOSwwLCQzMQorCS5zZXQJcmVvcmRlcgorCWx3CSQxMiwwKCQ2KQorCWx3CSQxMyw0KCQ2KQorCWx3CSQxNCw4KCQ2KQorCWx3CSQxNSwxMigkNikKKwlsdwkkMzAsMjQwKCQ2KQorCWFkZCAkMywkNiwxNgorCisJeG9yCSQ4LCQxMgorCXhvcgkkOSwkMTMKKwl4b3IJJDEwLCQxNAorCXhvcgkkMTEsJDE1CisKKwlzdWIJJDMwLDEKKwlzcmwJJDEsJDksNgorLkxvb3BfZW5jOgorCXNybAkkMiwkMTAsNgorCXNybAkkMjQsJDExLDYKKwlzcmwJJDI1LCQ4LDYKKwlhbmQJJDEsMHgzZmMKKwlhbmQJJDIsMHgzZmMKKwlhbmQJJDI0LDB4M2ZjCisJYW5kCSQyNSwweDNmYworCWFkZCAkMSwkNworCWFkZCAkMiwkNworCWFkZCAkMjQsJDcKKwlhZGQgJDI1LCQ3CisJbHdsCSQxMiwyKCQxKQkJIyBUZTFbczE+PjE2XQorCWx3bAkkMTMsMigkMikJCSMgVGUxW3MyPj4xNl0KKwlsd2wJJDE0LDIoJDI0KQkJIyBUZTFbczM+PjE2XQorCWx3bAkkMTUsMigkMjUpCQkjIFRlMVtzMD4+MTZdCisJbHdyCSQxMiwzKCQxKQkJIyBUZTFbczE+PjE2XQorCWx3cgkkMTMsMygkMikJCSMgVGUxW3MyPj4xNl0KKwlsd3IJJDE0LDMoJDI0KQkJIyBUZTFbczM+PjE2XQorCWx3cgkkMTUsMygkMjUpCQkjIFRlMVtzMD4+MTZdCisKKwlzcmwJJDEsJDEwLDE0CisJc3JsCSQyLCQxMSwxNAorCXNybAkkMjQsJDgsMTQKKwlzcmwJJDI1LCQ5LDE0CisJYW5kCSQxLDB4M2ZjCisJYW5kCSQyLDB4M2ZjCisJYW5kCSQyNCwweDNmYworCWFuZAkkMjUsMHgzZmMKKwlhZGQgJDEsJDcKKwlhZGQgJDIsJDcKKwlhZGQgJDI0LCQ3CisJYWRkICQyNSwkNworCWx3bAkkMTYsMSgkMSkJCSMgVGUyW3MyPj44XQorCWx3bAkkMTcsMSgkMikJCSMgVGUyW3MzPj44XQorCWx3bAkkMTgsMSgkMjQpCQkjIFRlMltzMD4+OF0KKwlsd2wJJDE5LDEoJDI1KQkJIyBUZTJbczE+PjhdCisJbHdyCSQxNiwyKCQxKQkJIyBUZTJbczI+PjhdCisJbHdyCSQxNywyKCQyKQkJIyBUZTJbczM+PjhdCisJbHdyCSQxOCwyKCQyNCkJCSMgVGUyW3MwPj44XQorCWx3cgkkMTksMigkMjUpCQkjIFRlMltzMT4+OF0KKworCXNybAkkMSwkMTEsMjIKKwlzcmwJJDIsJDgsMjIKKwlzcmwJJDI0LCQ5LDIyCisJc3JsCSQyNSwkMTAsMjIKKwlhbmQJJDEsMHgzZmMKKwlhbmQJJDIsMHgzZmMKKwlhbmQJJDI0LDB4M2ZjCisJYW5kCSQyNSwweDNmYworCWFkZCAkMSwkNworCWFkZCAkMiwkNworCWFkZCAkMjQsJDcKKwlhZGQgJDI1LCQ3CisJbHdsCSQyMCwwKCQxKQkJIyBUZTNbczNdCisJbHdsCSQyMSwwKCQyKQkJIyBUZTNbczBdCisJbHdsCSQyMiwwKCQyNCkJCSMgVGUzW3MxXQorCWx3bAkkMjMsMCgkMjUpCQkjIFRlM1tzMl0KKwlsd3IJJDIwLDEoJDEpCQkjIFRlM1tzM10KKwlsd3IJJDIxLDEoJDIpCQkjIFRlM1tzMF0KKwlsd3IJJDIyLDEoJDI0KQkJIyBUZTNbczFdCisJbHdyCSQyMywxKCQyNSkJCSMgVGUzW3MyXQorCisJc2xsCSQxLCQ4LDIKKwlzbGwJJDIsJDksMgorCXNsbAkkMjQsJDEwLDIKKwlzbGwJJDI1LCQxMSwyCisJYW5kCSQxLDB4M2ZjCisJYW5kCSQyLDB4M2ZjCisJYW5kCSQyNCwweDNmYworCWFuZAkkMjUsMHgzZmMKKwlhZGQgJDEsJDcKKwlhZGQgJDIsJDcKKwlhZGQgJDI0LCQ3CisJYWRkICQyNSwkNworCXhvcgkkMTIsJDE2CisJeG9yCSQxMywkMTcKKwl4b3IJJDE0LCQxOAorCXhvcgkkMTUsJDE5CisJbHcJJDE2LDAoJDEpCQkjIFRlMFtzMD4+MjRdCisJbHcJJDE3LDAoJDIpCQkjIFRlMFtzMT4+MjRdCisJbHcJJDE4LDAoJDI0KQkJIyBUZTBbczI+PjI0XQorCWx3CSQxOSwwKCQyNSkJCSMgVGUwW3MzPj4yNF0KKworCWx3CSQ4LDAoJDMpCisJbHcJJDksNCgkMykKKwlsdwkkMTAsOCgkMykKKwlsdwkkMTEsMTIoJDMpCisKKwl4b3IJJDEyLCQyMAorCXhvcgkkMTMsJDIxCisJeG9yCSQxNCwkMjIKKwl4b3IJJDE1LCQyMworCisJeG9yCSQxMiwkMTYKKwl4b3IJJDEzLCQxNworCXhvcgkkMTQsJDE4CisJeG9yCSQxNSwkMTkKKworCXN1YgkkMzAsMQorCWFkZCAkMywxNgorCXhvcgkkOCwkMTIKKwl4b3IJJDksJDEzCisJeG9yCSQxMCwkMTQKKwl4b3IJJDExLCQxNQorCS5zZXQJbm9yZW9yZGVyCisJYm5legkkMzAsLkxvb3BfZW5jCisJc3JsCSQxLCQ5LDYKKworCS5zZXQJcmVvcmRlcgorCXNybAkkMiwkMTAsNgorCXNybAkkMjQsJDExLDYKKwlzcmwJJDI1LCQ4LDYKKwlhbmQJJDEsMHgzZmMKKwlhbmQJJDIsMHgzZmMKKwlhbmQJJDI0LDB4M2ZjCisJYW5kCSQyNSwweDNmYworCWFkZCAkMSwkNworCWFkZCAkMiwkNworCWFkZCAkMjQsJDcKKwlhZGQgJDI1LCQ3CisJbGJ1CSQxMiwyKCQxKQkJIyBUZTRbczE+PjE2XQorCWxidQkkMTMsMigkMikJCSMgVGU0W3MyPj4xNl0KKwlsYnUJJDE0LDIoJDI0KQkJIyBUZTRbczM+PjE2XQorCWxidQkkMTUsMigkMjUpCQkjIFRlNFtzMD4+MTZdCisKKwlzcmwJJDEsJDEwLDE0CisJc3JsCSQyLCQxMSwxNAorCXNybAkkMjQsJDgsMTQKKwlzcmwJJDI1LCQ5LDE0CisJYW5kCSQxLDB4M2ZjCisJYW5kCSQyLDB4M2ZjCisJYW5kCSQyNCwweDNmYworCWFuZAkkMjUsMHgzZmMKKwlhZGQgJDEsJDcKKwlhZGQgJDIsJDcKKwlhZGQgJDI0LCQ3CisJYWRkICQyNSwkNworCWxidQkkMTYsMigkMSkJCSMgVGU0W3MyPj44XQorCWxidQkkMTcsMigkMikJCSMgVGU0W3MzPj44XQorCWxidQkkMTgsMigkMjQpCQkjIFRlNFtzMD4+OF0KKwlsYnUJJDE5LDIoJDI1KQkJIyBUZTRbczE+PjhdCisKKwlzbGwJJDEsJDgsMgorCXNsbAkkMiwkOSwyCisJc2xsCSQyNCwkMTAsMgorCXNsbAkkMjUsJDExLDIKKwlhbmQJJDEsMHgzZmMKKwlhbmQJJDIsMHgzZmMKKwlhbmQJJDI0LDB4M2ZjCisJYW5kCSQyNSwweDNmYworCWFkZCAkMSwkNworCWFkZCAkMiwkNworCWFkZCAkMjQsJDcKKwlhZGQgJDI1LCQ3CisJbGJ1CSQyMCwyKCQxKQkJIyBUZTRbczA+PjI0XQorCWxidQkkMjEsMigkMikJCSMgVGU0W3MxPj4yNF0KKwlsYnUJJDIyLDIoJDI0KQkJIyBUZTRbczI+PjI0XQorCWxidQkkMjMsMigkMjUpCQkjIFRlNFtzMz4+MjRdCisKKwlzcmwJJDEsJDExLDIyCisJc3JsCSQyLCQ4LDIyCisJc3JsCSQyNCwkOSwyMgorCXNybAkkMjUsJDEwLDIyCisJYW5kCSQxLDB4M2ZjCisJYW5kCSQyLDB4M2ZjCisJYW5kCSQyNCwweDNmYworCWFuZAkkMjUsMHgzZmMKKworCXNsbAkkMTIsJDEyLDgKKwlzbGwJJDEzLCQxMyw4CisJc2xsCSQxNCwkMTQsOAorCXNsbAkkMTUsJDE1LDgKKworCXNsbAkkMTYsJDE2LDE2CisJc2xsCSQxNywkMTcsMTYKKwlzbGwJJDE4LCQxOCwxNgorCXNsbAkkMTksJDE5LDE2CisKKwl4b3IJJDEyLCQxNgorCXhvcgkkMTMsJDE3CisJeG9yCSQxNCwkMTgKKwl4b3IJJDE1LCQxOQorCisJYWRkICQxLCQ3CisJYWRkICQyLCQ3CisJYWRkICQyNCwkNworCWFkZCAkMjUsJDcKKwlsYnUJJDE2LDIoJDEpCQkjIFRlNFtzM10KKwlsYnUJJDE3LDIoJDIpCQkjIFRlNFtzMF0KKwlsYnUJJDE4LDIoJDI0KQkJIyBUZTRbczFdCisJbGJ1CSQxOSwyKCQyNSkJCSMgVGU0W3MyXQorCisJI3NsbAkkMjAsJDIwLDAKKwkjc2xsCSQyMSwkMjEsMAorCSNzbGwJJDIyLCQyMiwwCisJI3NsbAkkMjMsJDIzLDAKKworCWx3CSQ4LDAoJDMpCisJbHcJJDksNCgkMykKKwlsdwkkMTAsOCgkMykKKwlsdwkkMTEsMTIoJDMpCisKKwl4b3IJJDEyLCQyMAorCXhvcgkkMTMsJDIxCisJeG9yCSQxNCwkMjIKKwl4b3IJJDE1LCQyMworCisJc2xsCSQxNiwkMTYsMjQKKwlzbGwJJDE3LCQxNywyNAorCXNsbAkkMTgsJDE4LDI0CisJc2xsCSQxOSwkMTksMjQKKworCXhvcgkkMTIsJDE2CisJeG9yCSQxMywkMTcKKwl4b3IJJDE0LCQxOAorCXhvcgkkMTUsJDE5CisKKwl4b3IJJDgsJDEyCisJeG9yCSQ5LCQxMworCXhvcgkkMTAsJDE0CisJeG9yCSQxMSwkMTUKKworCWpyCSQzMQorLmVuZAlfbWlwc19BRVNfZW5jcnlwdAorCisuYWxpZ24JNQorLmdsb2JsCUFFU19lbmNyeXB0CisuZW50CUFFU19lbmNyeXB0CitBRVNfZW5jcnlwdDoKKwkuZnJhbWUJJDI5LDY0LCQzMQorCS5tYXNrCTMyMzc5MzcxNTIsLTQKKwkuc2V0CW5vcmVvcmRlcgorCXN1YiAkMjksNjQKKwlzdwkkMzEsNjQtMSo0KCQyOSkKKwlzdwkkMzAsNjQtMio0KCQyOSkKKwlzdwkkMjMsNjQtMyo0KCQyOSkKKwlzdwkkMjIsNjQtNCo0KCQyOSkKKwlzdwkkMjEsNjQtNSo0KCQyOSkKKwlzdwkkMjAsNjQtNio0KCQyOSkKKwlzdwkkMTksNjQtNyo0KCQyOSkKKwlzdwkkMTgsNjQtOCo0KCQyOSkKKwlzdwkkMTcsNjQtOSo0KCQyOSkKKwlzdwkkMTYsNjQtMTAqNCgkMjkpCisJLmNwbG9jYWwJJDcKKwkuY3BzZXR1cAkkMjUsJDAsQUVTX2VuY3J5cHQKKwkuc2V0CXJlb3JkZXIKKwlsYQkkNyxBRVNfVGUJCSMgUElDLWlmaWVkICdsb2FkIGFkZHJlc3MnCisKKwlsd2wJJDgsMCszKCQ0KQorCWx3bAkkOSw0KzMoJDQpCisJbHdsCSQxMCw4KzMoJDQpCisJbHdsCSQxMSwxMiszKCQ0KQorCWx3cgkkOCwwKzAoJDQpCisJbHdyCSQ5LDQrMCgkNCkKKwlsd3IJJDEwLDgrMCgkNCkKKwlsd3IJJDExLDEyKzAoJDQpCisKKwliYWwJX21pcHNfQUVTX2VuY3J5cHQKKworCXN3cgkkOCwwKzAoJDUpCisJc3dyCSQ5LDQrMCgkNSkKKwlzd3IJJDEwLDgrMCgkNSkKKwlzd3IJJDExLDEyKzAoJDUpCisJc3dsCSQ4LDArMygkNSkKKwlzd2wJJDksNCszKCQ1KQorCXN3bAkkMTAsOCszKCQ1KQorCXN3bAkkMTEsMTIrMygkNSkKKworCS5zZXQJbm9yZW9yZGVyCisJbHcJJDMxLDY0LTEqNCgkMjkpCisJbHcJJDMwLDY0LTIqNCgkMjkpCisJbHcJJDIzLDY0LTMqNCgkMjkpCisJbHcJJDIyLDY0LTQqNCgkMjkpCisJbHcJJDIxLDY0LTUqNCgkMjkpCisJbHcJJDIwLDY0LTYqNCgkMjkpCisJbHcJJDE5LDY0LTcqNCgkMjkpCisJbHcJJDE4LDY0LTgqNCgkMjkpCisJbHcJJDE3LDY0LTkqNCgkMjkpCisJbHcJJDE2LDY0LTEwKjQoJDI5KQorCWpyCSQzMQorCWFkZCAkMjksNjQKKy5lbmQJQUVTX2VuY3J5cHQKKy5hbGlnbgk1CisuZW50CV9taXBzX0FFU19kZWNyeXB0CitfbWlwc19BRVNfZGVjcnlwdDoKKwkuZnJhbWUJJDI5LDAsJDMxCisJLnNldAlyZW9yZGVyCisJbHcJJDEyLDAoJDYpCisJbHcJJDEzLDQoJDYpCisJbHcJJDE0LDgoJDYpCisJbHcJJDE1LDEyKCQ2KQorCWx3CSQzMCwyNDAoJDYpCisJYWRkICQzLCQ2LDE2CisKKwl4b3IJJDgsJDEyCisJeG9yCSQ5LCQxMworCXhvcgkkMTAsJDE0CisJeG9yCSQxMSwkMTUKKworCXN1YgkkMzAsMQorCXNybAkkMSwkMTEsNgorLkxvb3BfZGVjOgorCXNybAkkMiwkOCw2CisJc3JsCSQyNCwkOSw2CisJc3JsCSQyNSwkMTAsNgorCWFuZAkkMSwweDNmYworCWFuZAkkMiwweDNmYworCWFuZAkkMjQsMHgzZmMKKwlhbmQJJDI1LDB4M2ZjCisJYWRkICQxLCQ3CisJYWRkICQyLCQ3CisJYWRkICQyNCwkNworCWFkZCAkMjUsJDcKKwlsd2wJJDEyLDIoJDEpCQkjIFRkMVtzMz4+MTZdCisJbHdsCSQxMywyKCQyKQkJIyBUZDFbczA+PjE2XQorCWx3bAkkMTQsMigkMjQpCQkjIFRkMVtzMT4+MTZdCisJbHdsCSQxNSwyKCQyNSkJCSMgVGQxW3MyPj4xNl0KKwlsd3IJJDEyLDMoJDEpCQkjIFRkMVtzMz4+MTZdCisJbHdyCSQxMywzKCQyKQkJIyBUZDFbczA+PjE2XQorCWx3cgkkMTQsMygkMjQpCQkjIFRkMVtzMT4+MTZdCisJbHdyCSQxNSwzKCQyNSkJCSMgVGQxW3MyPj4xNl0KKworCXNybAkkMSwkMTAsMTQKKwlzcmwJJDIsJDExLDE0CisJc3JsCSQyNCwkOCwxNAorCXNybAkkMjUsJDksMTQKKwlhbmQJJDEsMHgzZmMKKwlhbmQJJDIsMHgzZmMKKwlhbmQJJDI0LDB4M2ZjCisJYW5kCSQyNSwweDNmYworCWFkZCAkMSwkNworCWFkZCAkMiwkNworCWFkZCAkMjQsJDcKKwlhZGQgJDI1LCQ3CisJbHdsCSQxNiwxKCQxKQkJIyBUZDJbczI+PjhdCisJbHdsCSQxNywxKCQyKQkJIyBUZDJbczM+PjhdCisJbHdsCSQxOCwxKCQyNCkJCSMgVGQyW3MwPj44XQorCWx3bAkkMTksMSgkMjUpCQkjIFRkMltzMT4+OF0KKwlsd3IJJDE2LDIoJDEpCQkjIFRkMltzMj4+OF0KKwlsd3IJJDE3LDIoJDIpCQkjIFRkMltzMz4+OF0KKwlsd3IJJDE4LDIoJDI0KQkJIyBUZDJbczA+PjhdCisJbHdyCSQxOSwyKCQyNSkJCSMgVGQyW3MxPj44XQorCisJc3JsCSQxLCQ5LDIyCisJc3JsCSQyLCQxMCwyMgorCXNybAkkMjQsJDExLDIyCisJc3JsCSQyNSwkOCwyMgorCWFuZAkkMSwweDNmYworCWFuZAkkMiwweDNmYworCWFuZAkkMjQsMHgzZmMKKwlhbmQJJDI1LDB4M2ZjCisJYWRkICQxLCQ3CisJYWRkICQyLCQ3CisJYWRkICQyNCwkNworCWFkZCAkMjUsJDcKKwlsd2wJJDIwLDAoJDEpCQkjIFRkM1tzMV0KKwlsd2wJJDIxLDAoJDIpCQkjIFRkM1tzMl0KKwlsd2wJJDIyLDAoJDI0KQkJIyBUZDNbczNdCisJbHdsCSQyMywwKCQyNSkJCSMgVGQzW3MwXQorCWx3cgkkMjAsMSgkMSkJCSMgVGQzW3MxXQorCWx3cgkkMjEsMSgkMikJCSMgVGQzW3MyXQorCWx3cgkkMjIsMSgkMjQpCQkjIFRkM1tzM10KKwlsd3IJJDIzLDEoJDI1KQkJIyBUZDNbczBdCisKKwlzbGwJJDEsJDgsMgorCXNsbAkkMiwkOSwyCisJc2xsCSQyNCwkMTAsMgorCXNsbAkkMjUsJDExLDIKKwlhbmQJJDEsMHgzZmMKKwlhbmQJJDIsMHgzZmMKKwlhbmQJJDI0LDB4M2ZjCisJYW5kCSQyNSwweDNmYworCWFkZCAkMSwkNworCWFkZCAkMiwkNworCWFkZCAkMjQsJDcKKwlhZGQgJDI1LCQ3CisKKwl4b3IJJDEyLCQxNgorCXhvcgkkMTMsJDE3CisJeG9yCSQxNCwkMTgKKwl4b3IJJDE1LCQxOQorCisKKwlsdwkkMTYsMCgkMSkJCSMgVGQwW3MwPj4yNF0KKwlsdwkkMTcsMCgkMikJCSMgVGQwW3MxPj4yNF0KKwlsdwkkMTgsMCgkMjQpCQkjIFRkMFtzMj4+MjRdCisJbHcJJDE5LDAoJDI1KQkJIyBUZDBbczM+PjI0XQorCisJbHcJJDgsMCgkMykKKwlsdwkkOSw0KCQzKQorCWx3CSQxMCw4KCQzKQorCWx3CSQxMSwxMigkMykKKworCXhvcgkkMTIsJDIwCisJeG9yCSQxMywkMjEKKwl4b3IJJDE0LCQyMgorCXhvcgkkMTUsJDIzCisKKwl4b3IJJDEyLCQxNgorCXhvcgkkMTMsJDE3CisJeG9yCSQxNCwkMTgKKwl4b3IJJDE1LCQxOQorCisJc3ViCSQzMCwxCisJYWRkICQzLDE2CisJeG9yCSQ4LCQxMgorCXhvcgkkOSwkMTMKKwl4b3IJJDEwLCQxNAorCXhvcgkkMTEsJDE1CisJLnNldAlub3Jlb3JkZXIKKwlibmV6CSQzMCwuTG9vcF9kZWMKKwlzcmwJJDEsJDExLDYKKworCS5zZXQJcmVvcmRlcgorCWx3CSQxNiwxMDI0KCQ3KQkJIyBwcmVmZXRjaCBUZDQKKwlsdwkkMTcsMTAyNCszMigkNykKKwlsdwkkMTgsMTAyNCs2NCgkNykKKwlsdwkkMTksMTAyNCs5NigkNykKKwlsdwkkMjAsMTAyNCsxMjgoJDcpCisJbHcJJDIxLDEwMjQrMTYwKCQ3KQorCWx3CSQyMiwxMDI0KzE5MigkNykKKwlsdwkkMjMsMTAyNCsyMjQoJDcpCisKKwlzcmwJJDEsJDExLDgKKwlzcmwJJDIsJDgsOAorCXNybAkkMjQsJDksOAorCXNybAkkMjUsJDEwLDgKKwlhbmQJJDEsMHhmZgorCWFuZAkkMiwweGZmCisJYW5kCSQyNCwweGZmCisJYW5kCSQyNSwweGZmCisJYWRkICQxLCQ3CisJYWRkICQyLCQ3CisJYWRkICQyNCwkNworCWFkZCAkMjUsJDcKKwlsYnUJJDEyLDEwMjQoJDEpCQkjIFRkNFtzMz4+MTZdCisJbGJ1CSQxMywxMDI0KCQyKQkJIyBUZDRbczA+PjE2XQorCWxidQkkMTQsMTAyNCgkMjQpCQkjIFRkNFtzMT4+MTZdCisJbGJ1CSQxNSwxMDI0KCQyNSkJCSMgVGQ0W3MyPj4xNl0KKworCXNybAkkMSwkMTAsMTYKKwlzcmwJJDIsJDExLDE2CisJc3JsCSQyNCwkOCwxNgorCXNybAkkMjUsJDksMTYKKwlhbmQJJDEsMHhmZgorCWFuZAkkMiwweGZmCisJYW5kCSQyNCwweGZmCisJYW5kCSQyNSwweGZmCisJYWRkICQxLCQ3CisJYWRkICQyLCQ3CisJYWRkICQyNCwkNworCWFkZCAkMjUsJDcKKwlsYnUJJDE2LDEwMjQoJDEpCQkjIFRkNFtzMj4+OF0KKwlsYnUJJDE3LDEwMjQoJDIpCQkjIFRkNFtzMz4+OF0KKwlsYnUJJDE4LDEwMjQoJDI0KQkJIyBUZDRbczA+PjhdCisJbGJ1CSQxOSwxMDI0KCQyNSkJCSMgVGQ0W3MxPj44XQorCisJYW5kCSQxLCQ4LDB4ZmYKKwlhbmQJJDIsJDksMHhmZgorCWFuZAkkMjQsJDEwLDB4ZmYKKwlhbmQJJDI1LCQxMSwweGZmCisJYWRkICQxLCQ3CisJYWRkICQyLCQ3CisJYWRkICQyNCwkNworCWFkZCAkMjUsJDcKKwlsYnUJJDIwLDEwMjQoJDEpCQkjIFRkNFtzMD4+MjRdCisJbGJ1CSQyMSwxMDI0KCQyKQkJIyBUZDRbczE+PjI0XQorCWxidQkkMjIsMTAyNCgkMjQpCQkjIFRkNFtzMj4+MjRdCisJbGJ1CSQyMywxMDI0KCQyNSkJCSMgVGQ0W3MzPj4yNF0KKworCXNybAkkMSwkOSwyNAorCXNybAkkMiwkMTAsMjQKKwlzcmwJJDI0LCQxMSwyNAorCXNybAkkMjUsJDgsMjQKKworCXNsbAkkMTIsJDEyLDgKKwlzbGwJJDEzLCQxMyw4CisJc2xsCSQxNCwkMTQsOAorCXNsbAkkMTUsJDE1LDgKKworCXNsbAkkMTYsJDE2LDE2CisJc2xsCSQxNywkMTcsMTYKKwlzbGwJJDE4LCQxOCwxNgorCXNsbAkkMTksJDE5LDE2CisKKwl4b3IJJDEyLCQxNgorCXhvcgkkMTMsJDE3CisJeG9yCSQxNCwkMTgKKwl4b3IJJDE1LCQxOQorCisJYWRkICQxLCQ3CisJYWRkICQyLCQ3CisJYWRkICQyNCwkNworCWFkZCAkMjUsJDcKKwlsYnUJJDE2LDEwMjQoJDEpCQkjIFRkNFtzMV0KKwlsYnUJJDE3LDEwMjQoJDIpCQkjIFRkNFtzMl0KKwlsYnUJJDE4LDEwMjQoJDI0KQkJIyBUZDRbczNdCisJbGJ1CSQxOSwxMDI0KCQyNSkJCSMgVGQ0W3MwXQorCisJI3NsbAkkMjAsJDIwLDAKKwkjc2xsCSQyMSwkMjEsMAorCSNzbGwJJDIyLCQyMiwwCisJI3NsbAkkMjMsJDIzLDAKKworCWx3CSQ4LDAoJDMpCisJbHcJJDksNCgkMykKKwlsdwkkMTAsOCgkMykKKwlsdwkkMTEsMTIoJDMpCisKKwlzbGwJJDE2LCQxNiwyNAorCXNsbAkkMTcsJDE3LDI0CisJc2xsCSQxOCwkMTgsMjQKKwlzbGwJJDE5LCQxOSwyNAorCisKKwl4b3IJJDEyLCQyMAorCXhvcgkkMTMsJDIxCisJeG9yCSQxNCwkMjIKKwl4b3IJJDE1LCQyMworCisJeG9yCSQxMiwkMTYKKwl4b3IJJDEzLCQxNworCXhvcgkkMTQsJDE4CisJeG9yCSQxNSwkMTkKKworCXhvcgkkOCwkMTIKKwl4b3IJJDksJDEzCisJeG9yCSQxMCwkMTQKKwl4b3IJJDExLCQxNQorCisJanIJJDMxCisuZW5kCV9taXBzX0FFU19kZWNyeXB0CisKKy5hbGlnbgk1CisuZ2xvYmwJQUVTX2RlY3J5cHQKKy5lbnQJQUVTX2RlY3J5cHQKK0FFU19kZWNyeXB0OgorCS5mcmFtZQkkMjksNjQsJDMxCisJLm1hc2sJMzIzNzkzNzE1MiwtNAorCS5zZXQJbm9yZW9yZGVyCisJc3ViICQyOSw2NAorCXN3CSQzMSw2NC0xKjQoJDI5KQorCXN3CSQzMCw2NC0yKjQoJDI5KQorCXN3CSQyMyw2NC0zKjQoJDI5KQorCXN3CSQyMiw2NC00KjQoJDI5KQorCXN3CSQyMSw2NC01KjQoJDI5KQorCXN3CSQyMCw2NC02KjQoJDI5KQorCXN3CSQxOSw2NC03KjQoJDI5KQorCXN3CSQxOCw2NC04KjQoJDI5KQorCXN3CSQxNyw2NC05KjQoJDI5KQorCXN3CSQxNiw2NC0xMCo0KCQyOSkKKwkuY3Bsb2NhbAkkNworCS5jcHNldHVwCSQyNSwkMCxBRVNfZGVjcnlwdAorCS5zZXQJcmVvcmRlcgorCWxhCSQ3LEFFU19UZAkJIyBQSUMtaWZpZWQgJ2xvYWQgYWRkcmVzcycKKworCWx3bAkkOCwwKzMoJDQpCisJbHdsCSQ5LDQrMygkNCkKKwlsd2wJJDEwLDgrMygkNCkKKwlsd2wJJDExLDEyKzMoJDQpCisJbHdyCSQ4LDArMCgkNCkKKwlsd3IJJDksNCswKCQ0KQorCWx3cgkkMTAsOCswKCQ0KQorCWx3cgkkMTEsMTIrMCgkNCkKKworCWJhbAlfbWlwc19BRVNfZGVjcnlwdAorCisJc3dyCSQ4LDArMCgkNSkKKwlzd3IJJDksNCswKCQ1KQorCXN3cgkkMTAsOCswKCQ1KQorCXN3cgkkMTEsMTIrMCgkNSkKKwlzd2wJJDgsMCszKCQ1KQorCXN3bAkkOSw0KzMoJDUpCisJc3dsCSQxMCw4KzMoJDUpCisJc3dsCSQxMSwxMiszKCQ1KQorCisJLnNldAlub3Jlb3JkZXIKKwlsdwkkMzEsNjQtMSo0KCQyOSkKKwlsdwkkMzAsNjQtMio0KCQyOSkKKwlsdwkkMjMsNjQtMyo0KCQyOSkKKwlsdwkkMjIsNjQtNCo0KCQyOSkKKwlsdwkkMjEsNjQtNSo0KCQyOSkKKwlsdwkkMjAsNjQtNio0KCQyOSkKKwlsdwkkMTksNjQtNyo0KCQyOSkKKwlsdwkkMTgsNjQtOCo0KCQyOSkKKwlsdwkkMTcsNjQtOSo0KCQyOSkKKwlsdwkkMTYsNjQtMTAqNCgkMjkpCisJanIJJDMxCisJYWRkICQyOSw2NAorLmVuZAlBRVNfZGVjcnlwdAorLmFsaWduCTUKKy5lbnQJX21pcHNfQUVTX3NldF9lbmNyeXB0X2tleQorX21pcHNfQUVTX3NldF9lbmNyeXB0X2tleToKKwkuZnJhbWUJJDI5LDAsJDMxCisJLnNldAlub3Jlb3JkZXIKKwliZXF6CSQ0LC5MZWtleV9kb25lCisJbGkJJDIsLTEKKwliZXF6CSQ2LC5MZWtleV9kb25lCisJYWRkICQzLCQ3LDEwMjQrMjU2CisKKwkuc2V0CXJlb3JkZXIKKwlsd2wJJDgsMCszKCQ0KQkjIGxvYWQgMTI4IGJpdHMKKwlsd2wJJDksNCszKCQ0KQorCWx3bAkkMTAsOCszKCQ0KQorCWx3bAkkMTEsMTIrMygkNCkKKwlsaQkkMSwxMjgKKwlsd3IJJDgsMCswKCQ0KQorCWx3cgkkOSw0KzAoJDQpCisJbHdyCSQxMCw4KzAoJDQpCisJbHdyCSQxMSwxMiswKCQ0KQorCS5zZXQJbm9yZW9yZGVyCisJYmVxCSQ1LCQxLC5MMTI4Yml0cworCWxpCSQzMCwxMAorCisJLnNldAlyZW9yZGVyCisJbHdsCSQxMiwxNiszKCQ0KQkjIGxvYWQgMTkyIGJpdHMKKwlsd2wJJDEzLDIwKzMoJDQpCisJbGkJJDEsMTkyCisJbHdyCSQxMiwxNiswKCQ0KQorCWx3cgkkMTMsMjArMCgkNCkKKwkuc2V0CW5vcmVvcmRlcgorCWJlcQkkNSwkMSwuTDE5MmJpdHMKKwlsaQkkMzAsOAorCisJLnNldAlyZW9yZGVyCisJbHdsCSQxNCwyNCszKCQ0KQkjIGxvYWQgMjU2IGJpdHMKKwlsd2wJJDE1LDI4KzMoJDQpCisJbGkJJDEsMjU2CisJbHdyCSQxNCwyNCswKCQ0KQorCWx3cgkkMTUsMjgrMCgkNCkKKwkuc2V0CW5vcmVvcmRlcgorCWJlcQkkNSwkMSwuTDI1NmJpdHMKKwlsaQkkMzAsNworCisJYgkuTGVrZXlfZG9uZQorCWxpCSQyLC0yCisKKy5hbGlnbgk0CisuTDEyOGJpdHM6CisJLnNldAlyZW9yZGVyCisJc3JsCSQxLCQxMSwxNgorCXNybAkkMiwkMTEsOAorCWFuZAkkMSwweGZmCisJYW5kCSQyLDB4ZmYKKwlhbmQJJDI0LCQxMSwweGZmCisJc3JsCSQyNSwkMTEsMjQKKwlhZGQgJDEsJDcKKwlhZGQgJDIsJDcKKwlhZGQgJDI0LCQ3CisJYWRkICQyNSwkNworCWxidQkkMSwxMDI0KCQxKQorCWxidQkkMiwxMDI0KCQyKQorCWxidQkkMjQsMTAyNCgkMjQpCisJbGJ1CSQyNSwxMDI0KCQyNSkKKworCXN3CSQ4LDAoJDYpCisJc3cJJDksNCgkNikKKwlzdwkkMTAsOCgkNikKKwlzdwkkMTEsMTIoJDYpCisJc3ViCSQzMCwxCisJYWRkICQ2LDE2CisKKwlzbGwJJDEsJDEsOAorCSNzbGwJJDIsJDIsMAorCXNsbAkkMjQsJDI0LDI0CisJc2xsCSQyNSwkMjUsMTYKKworCXhvcgkkOCwkMQorCWx3CSQxLDAoJDMpCisJeG9yCSQ4LCQyCisJeG9yCSQ4LCQyNAorCXhvcgkkOCwkMjUKKwl4b3IJJDgsJDEKKworCXhvcgkkOSwkOAorCXhvcgkkMTAsJDkKKwl4b3IJJDExLCQxMAorCisJLnNldAlub3Jlb3JkZXIKKwlibmV6CSQzMCwuTDEyOGJpdHMKKwlhZGQgJDMsNAorCisJc3cJJDgsMCgkNikKKwlzdwkkOSw0KCQ2KQorCXN3CSQxMCw4KCQ2KQorCWxpCSQzMCwxMAorCXN3CSQxMSwxMigkNikKKwlsaQkkMiwwCisJc3cJJDMwLDgwKCQ2KQorCWIJLkxla2V5X2RvbmUKKwlzdWIgJDYsMTAqMTYKKworLmFsaWduCTQKKy5MMTkyYml0czoKKwkuc2V0CXJlb3JkZXIKKwlzcmwJJDEsJDEzLDE2CisJc3JsCSQyLCQxMyw4CisJYW5kCSQxLDB4ZmYKKwlhbmQJJDIsMHhmZgorCWFuZAkkMjQsJDEzLDB4ZmYKKwlzcmwJJDI1LCQxMywyNAorCWFkZCAkMSwkNworCWFkZCAkMiwkNworCWFkZCAkMjQsJDcKKwlhZGQgJDI1LCQ3CisJbGJ1CSQxLDEwMjQoJDEpCisJbGJ1CSQyLDEwMjQoJDIpCisJbGJ1CSQyNCwxMDI0KCQyNCkKKwlsYnUJJDI1LDEwMjQoJDI1KQorCisJc3cJJDgsMCgkNikKKwlzdwkkOSw0KCQ2KQorCXN3CSQxMCw4KCQ2KQorCXN3CSQxMSwxMigkNikKKwlzdwkkMTIsMTYoJDYpCisJc3cJJDEzLDIwKCQ2KQorCXN1YgkkMzAsMQorCWFkZCAkNiwyNAorCisJc2xsCSQxLCQxLDgKKwkjc2xsCSQyLCQyLDAKKwlzbGwJJDI0LCQyNCwyNAorCXNsbAkkMjUsJDI1LDE2CisKKwl4b3IJJDgsJDEKKwlsdwkkMSwwKCQzKQorCXhvcgkkOCwkMgorCXhvcgkkOCwkMjQKKwl4b3IJJDgsJDI1CisJeG9yCSQ4LCQxCisKKwl4b3IJJDksJDgKKwl4b3IJJDEwLCQ5CisJeG9yCSQxMSwkMTAKKwl4b3IJJDEyLCQxMQorCXhvcgkkMTMsJDEyCisKKwkuc2V0CW5vcmVvcmRlcgorCWJuZXoJJDMwLC5MMTkyYml0cworCWFkZCAkMyw0CisKKwlzdwkkOCwwKCQ2KQorCXN3CSQ5LDQoJDYpCisJc3cJJDEwLDgoJDYpCisJbGkJJDMwLDEyCisJc3cJJDExLDEyKCQ2KQorCWxpCSQyLDAKKwlzdwkkMzAsNDgoJDYpCisJYgkuTGVrZXlfZG9uZQorCXN1YiAkNiwxMioxNgorCisuYWxpZ24JNAorLkwyNTZiaXRzOgorCS5zZXQJcmVvcmRlcgorCXNybAkkMSwkMTUsMTYKKwlzcmwJJDIsJDE1LDgKKwlhbmQJJDEsMHhmZgorCWFuZAkkMiwweGZmCisJYW5kCSQyNCwkMTUsMHhmZgorCXNybAkkMjUsJDE1LDI0CisJYWRkICQxLCQ3CisJYWRkICQyLCQ3CisJYWRkICQyNCwkNworCWFkZCAkMjUsJDcKKwlsYnUJJDEsMTAyNCgkMSkKKwlsYnUJJDIsMTAyNCgkMikKKwlsYnUJJDI0LDEwMjQoJDI0KQorCWxidQkkMjUsMTAyNCgkMjUpCisKKwlzdwkkOCwwKCQ2KQorCXN3CSQ5LDQoJDYpCisJc3cJJDEwLDgoJDYpCisJc3cJJDExLDEyKCQ2KQorCXN3CSQxMiwxNigkNikKKwlzdwkkMTMsMjAoJDYpCisJc3cJJDE0LDI0KCQ2KQorCXN3CSQxNSwyOCgkNikKKwlzdWIJJDMwLDEKKworCXNsbAkkMSwkMSw4CisJI3NsbAkkMiwkMiwwCisJc2xsCSQyNCwkMjQsMjQKKwlzbGwJJDI1LCQyNSwxNgorCisJeG9yCSQ4LCQxCisJbHcJJDEsMCgkMykKKwl4b3IJJDgsJDIKKwl4b3IJJDgsJDI0CisJeG9yCSQ4LCQyNQorCXhvcgkkOCwkMQorCisJeG9yCSQ5LCQ4CisJeG9yCSQxMCwkOQorCXhvcgkkMTEsJDEwCisJYmVxegkkMzAsLkwyNTZiaXRzX2RvbmUKKworCXNybAkkMSwkMTEsMjQKKwlzcmwJJDIsJDExLDE2CisJc3JsCSQyNCwkMTEsOAorCWFuZAkkMjUsJDExLDB4ZmYKKwlhbmQJJDIsMHhmZgorCWFuZAkkMjQsMHhmZgorCWFkZCAkMSwkNworCWFkZCAkMiwkNworCWFkZCAkMjQsJDcKKwlhZGQgJDI1LCQ3CisJbGJ1CSQxLDEwMjQoJDEpCisJbGJ1CSQyLDEwMjQoJDIpCisJbGJ1CSQyNCwxMDI0KCQyNCkKKwlsYnUJJDI1LDEwMjQoJDI1KQorCXNsbAkkMSwyNAorCXNsbAkkMiwxNgorCXNsbAkkMjQsOAorCisJeG9yCSQxMiwkMQorCXhvcgkkMTIsJDIKKwl4b3IJJDEyLCQyNAorCXhvcgkkMTIsJDI1CisKKwl4b3IJJDEzLCQxMgorCXhvcgkkMTQsJDEzCisJeG9yCSQxNSwkMTQKKworCWFkZCAkNiwzMgorCS5zZXQJbm9yZW9yZGVyCisJYgkuTDI1NmJpdHMKKwlhZGQgJDMsNAorCisuTDI1NmJpdHNfZG9uZToKKwlzdwkkOCwzMigkNikKKwlzdwkkOSwzNigkNikKKwlzdwkkMTAsNDAoJDYpCisJbGkJJDMwLDE0CisJc3cJJDExLDQ0KCQ2KQorCWxpCSQyLDAKKwlzdwkkMzAsNDgoJDYpCisJc3ViICQ2LDEyKjE2CisKKy5MZWtleV9kb25lOgorCWpyCSQzMQorCW5vcAorLmVuZAlfbWlwc19BRVNfc2V0X2VuY3J5cHRfa2V5CisKKy5nbG9ibAlBRVNfc2V0X2VuY3J5cHRfa2V5CisuZW50CUFFU19zZXRfZW5jcnlwdF9rZXkKK0FFU19zZXRfZW5jcnlwdF9rZXk6CisJLmZyYW1lCSQyOSwzMiwkMzEKKwkubWFzawkzMjIxMjI1NDcyLC00CisJLnNldAlub3Jlb3JkZXIKKwlzdWIgJDI5LDMyCisJc3cJJDMxLDMyLTEqNCgkMjkpCisJc3cJJDMwLDMyLTIqNCgkMjkpCisJLmNwbG9jYWwJJDcKKwkuY3BzZXR1cAkkMjUsJDAsQUVTX3NldF9lbmNyeXB0X2tleQorCS5zZXQJcmVvcmRlcgorCWxhCSQ3LEFFU19UZQkJIyBQSUMtaWZpZWQgJ2xvYWQgYWRkcmVzcycKKworCWJhbAlfbWlwc19BRVNfc2V0X2VuY3J5cHRfa2V5CisKKwkuc2V0CW5vcmVvcmRlcgorCW1vdmUJJDQsJDIKKwlsdwkkMzEsMzItMSo0KCQyOSkKKwlsdwkkMzAsMzItMio0KCQyOSkKKwlqcgkkMzEKKwlhZGQgJDI5LDMyCisuZW5kCUFFU19zZXRfZW5jcnlwdF9rZXkKKy5hbGlnbgk1CisuZ2xvYmwJQUVTX3NldF9kZWNyeXB0X2tleQorLmVudAlBRVNfc2V0X2RlY3J5cHRfa2V5CitBRVNfc2V0X2RlY3J5cHRfa2V5OgorCS5mcmFtZQkkMjksMzIsJDMxCisJLm1hc2sJMzIyMTIyNTQ3MiwtNAorCS5zZXQJbm9yZW9yZGVyCisJc3ViICQyOSwzMgorCXN3CSQzMSwzMi0xKjQoJDI5KQorCXN3CSQzMCwzMi0yKjQoJDI5KQorCS5jcGxvY2FsCSQ3CisJLmNwc2V0dXAJJDI1LCQwLEFFU19zZXRfZGVjcnlwdF9rZXkKKwkuc2V0CXJlb3JkZXIKKwlsYQkkNyxBRVNfVGUJCSMgUElDLWlmaWVkICdsb2FkIGFkZHJlc3MnCisKKwliYWwJX21pcHNfQUVTX3NldF9lbmNyeXB0X2tleQorCisJYmx0egkkMiwuTGRrZXlfZG9uZQorCisJc2xsCSQxLCQzMCw0CisJYWRkICQ0LCQ2LDAKKwlhZGQgJDUsJDYsJDEKKy5hbGlnbgk0CisuTHN3YXA6CisJbHcJJDgsMCgkNCkKKwlsdwkkOSw0KCQ0KQorCWx3CSQxMCw4KCQ0KQorCWx3CSQxMSwxMigkNCkKKwlsdwkkMTIsMCgkNSkKKwlsdwkkMTMsNCgkNSkKKwlsdwkkMTQsOCgkNSkKKwlsdwkkMTUsMTIoJDUpCisJc3cJJDgsMCgkNSkKKwlzdwkkOSw0KCQ1KQorCXN3CSQxMCw4KCQ1KQorCXN3CSQxMSwxMigkNSkKKwlhZGQgJDQsMTYKKwlzdWIgJDUsMTYKKwlzdwkkMTIsLTE2KCQ0KQorCXN3CSQxMywtMTIoJDQpCisJc3cJJDE0LC04KCQ0KQorCXN3CSQxNSwtNCgkNCkKKwlibmUJJDQsJDUsLkxzd2FwCisKKwlsdwkkOCwxNigkNikJCSMgbW9kdWxvLXNjaGVkdWxlZAorCWx1aQkkMiwweDgwODAKKwlzdWIJJDMwLDEKKwlvcgkkMiwweDgwODAKKwlzbGwJJDMwLDIKKwlhZGQgJDYsMTYKKwlsdWkJJDI1LDB4MWIxYgorCW5vcgkkMjQsJDAsJDIKKwlvcgkkMjUsMHgxYjFiCisuYWxpZ24JNAorLkxtaXg6CisJYW5kCSQxLCQ4LCQyCisJYW5kCSQ5LCQ4LCQyNAorCXNybAkkMTAsJDEsNworCWFkZHUJJDksJDkJCSMgdHAyPDwxCisJc3VidQkkMSwkMTAKKwlhbmQJJDEsJDI1CisJeG9yCSQ5LCQxCisKKwlhbmQJJDEsJDksJDIKKwlhbmQJJDEwLCQ5LCQyNAorCXNybAkkMTEsJDEsNworCWFkZHUJJDEwLCQxMAkJIyB0cDQ8PDEKKwlzdWJ1CSQxLCQxMQorCWFuZAkkMSwkMjUKKwl4b3IJJDEwLCQxCisKKwlhbmQJJDEsJDEwLCQyCisJYW5kCSQxMSwkMTAsJDI0CisJc3JsCSQxMiwkMSw3CisJYWRkdQkkMTEsJDExCQkjIHRwODw8MQorCXN1YnUJJDEsJDEyCisJYW5kCSQxLCQyNQorCXhvcgkkMTEsJDEKKworCXhvcgkkMTIsJDExLCQ4CisJeG9yCSQxNSwkMTEsJDEwCisJeG9yCSQxMywkMTIsJDkKKwl4b3IJJDE0LCQxMiwkMTAKKworCXNsbAkkOCwkMTQsMTYKKwkgeG9yCSQxNSwkOQorCXNybAkkOSwkMTQsMTYKKwl4b3IJJDE1LCQ4CisJc2xsCSQ4LCQxMiw4CisJeG9yCSQxNSwkOQorCXNybAkkOSwkMTIsMjQKKwl4b3IJJDE1LCQ4CisJc2xsCSQ4LCQxMywyNAorCXhvcgkkMTUsJDkKKwlzcmwJJDksJDEzLDgKKwl4b3IJJDE1LCQ4CisJbHcJJDgsNCgkNikJCSMgbW9kdWxvLXNjaGVkdWxlZAorCXhvcgkkMTUsJDkKKwlzdWIJJDMwLDEKKwlzdwkkMTUsMCgkNikKKwlhZGQgJDYsNAorCWJuZXoJJDMwLC5MbWl4CisKKwlsaQkkMiwwCisuTGRrZXlfZG9uZToKKwkuc2V0CW5vcmVvcmRlcgorCW1vdmUJJDQsJDIKKwlsdwkkMzEsMzItMSo0KCQyOSkKKwlsdwkkMzAsMzItMio0KCQyOSkKKwlqcgkkMzEKKwlhZGQgJDI5LDMyCisuZW5kCUFFU19zZXRfZGVjcnlwdF9rZXkKKy5yZGF0YQorLmFsaWduCTYKK0FFU19UZToKKy5ieXRlCTB4YzYsMHg2MywweDYzLDB4YTUsCTB4ZjgsMHg3YywweDdjLDB4ODQJIyBUZTAKKy5ieXRlCTB4ZWUsMHg3NywweDc3LDB4OTksCTB4ZjYsMHg3YiwweDdiLDB4OGQKKy5ieXRlCTB4ZmYsMHhmMiwweGYyLDB4MGQsCTB4ZDYsMHg2YiwweDZiLDB4YmQKKy5ieXRlCTB4ZGUsMHg2ZiwweDZmLDB4YjEsCTB4OTEsMHhjNSwweGM1LDB4NTQKKy5ieXRlCTB4NjAsMHgzMCwweDMwLDB4NTAsCTB4MDIsMHgwMSwweDAxLDB4MDMKKy5ieXRlCTB4Y2UsMHg2NywweDY3LDB4YTksCTB4NTYsMHgyYiwweDJiLDB4N2QKKy5ieXRlCTB4ZTcsMHhmZSwweGZlLDB4MTksCTB4YjUsMHhkNywweGQ3LDB4NjIKKy5ieXRlCTB4NGQsMHhhYiwweGFiLDB4ZTYsCTB4ZWMsMHg3NiwweDc2LDB4OWEKKy5ieXRlCTB4OGYsMHhjYSwweGNhLDB4NDUsCTB4MWYsMHg4MiwweDgyLDB4OWQKKy5ieXRlCTB4ODksMHhjOSwweGM5LDB4NDAsCTB4ZmEsMHg3ZCwweDdkLDB4ODcKKy5ieXRlCTB4ZWYsMHhmYSwweGZhLDB4MTUsCTB4YjIsMHg1OSwweDU5LDB4ZWIKKy5ieXRlCTB4OGUsMHg0NywweDQ3LDB4YzksCTB4ZmIsMHhmMCwweGYwLDB4MGIKKy5ieXRlCTB4NDEsMHhhZCwweGFkLDB4ZWMsCTB4YjMsMHhkNCwweGQ0LDB4NjcKKy5ieXRlCTB4NWYsMHhhMiwweGEyLDB4ZmQsCTB4NDUsMHhhZiwweGFmLDB4ZWEKKy5ieXRlCTB4MjMsMHg5YywweDljLDB4YmYsCTB4NTMsMHhhNCwweGE0LDB4ZjcKKy5ieXRlCTB4ZTQsMHg3MiwweDcyLDB4OTYsCTB4OWIsMHhjMCwweGMwLDB4NWIKKy5ieXRlCTB4NzUsMHhiNywweGI3LDB4YzIsCTB4ZTEsMHhmZCwweGZkLDB4MWMKKy5ieXRlCTB4M2QsMHg5MywweDkzLDB4YWUsCTB4NGMsMHgyNiwweDI2LDB4NmEKKy5ieXRlCTB4NmMsMHgzNiwweDM2LDB4NWEsCTB4N2UsMHgzZiwweDNmLDB4NDEKKy5ieXRlCTB4ZjUsMHhmNywweGY3LDB4MDIsCTB4ODMsMHhjYywweGNjLDB4NGYKKy5ieXRlCTB4NjgsMHgzNCwweDM0LDB4NWMsCTB4NTEsMHhhNSwweGE1LDB4ZjQKKy5ieXRlCTB4ZDEsMHhlNSwweGU1LDB4MzQsCTB4ZjksMHhmMSwweGYxLDB4MDgKKy5ieXRlCTB4ZTIsMHg3MSwweDcxLDB4OTMsCTB4YWIsMHhkOCwweGQ4LDB4NzMKKy5ieXRlCTB4NjIsMHgzMSwweDMxLDB4NTMsCTB4MmEsMHgxNSwweDE1LDB4M2YKKy5ieXRlCTB4MDgsMHgwNCwweDA0LDB4MGMsCTB4OTUsMHhjNywweGM3LDB4NTIKKy5ieXRlCTB4NDYsMHgyMywweDIzLDB4NjUsCTB4OWQsMHhjMywweGMzLDB4NWUKKy5ieXRlCTB4MzAsMHgxOCwweDE4LDB4MjgsCTB4MzcsMHg5NiwweDk2LDB4YTEKKy5ieXRlCTB4MGEsMHgwNSwweDA1LDB4MGYsCTB4MmYsMHg5YSwweDlhLDB4YjUKKy5ieXRlCTB4MGUsMHgwNywweDA3LDB4MDksCTB4MjQsMHgxMiwweDEyLDB4MzYKKy5ieXRlCTB4MWIsMHg4MCwweDgwLDB4OWIsCTB4ZGYsMHhlMiwweGUyLDB4M2QKKy5ieXRlCTB4Y2QsMHhlYiwweGViLDB4MjYsCTB4NGUsMHgyNywweDI3LDB4NjkKKy5ieXRlCTB4N2YsMHhiMiwweGIyLDB4Y2QsCTB4ZWEsMHg3NSwweDc1LDB4OWYKKy5ieXRlCTB4MTIsMHgwOSwweDA5LDB4MWIsCTB4MWQsMHg4MywweDgzLDB4OWUKKy5ieXRlCTB4NTgsMHgyYywweDJjLDB4NzQsCTB4MzQsMHgxYSwweDFhLDB4MmUKKy5ieXRlCTB4MzYsMHgxYiwweDFiLDB4MmQsCTB4ZGMsMHg2ZSwweDZlLDB4YjIKKy5ieXRlCTB4YjQsMHg1YSwweDVhLDB4ZWUsCTB4NWIsMHhhMCwweGEwLDB4ZmIKKy5ieXRlCTB4YTQsMHg1MiwweDUyLDB4ZjYsCTB4NzYsMHgzYiwweDNiLDB4NGQKKy5ieXRlCTB4YjcsMHhkNiwweGQ2LDB4NjEsCTB4N2QsMHhiMywweGIzLDB4Y2UKKy5ieXRlCTB4NTIsMHgyOSwweDI5LDB4N2IsCTB4ZGQsMHhlMywweGUzLDB4M2UKKy5ieXRlCTB4NWUsMHgyZiwweDJmLDB4NzEsCTB4MTMsMHg4NCwweDg0LDB4OTcKKy5ieXRlCTB4YTYsMHg1MywweDUzLDB4ZjUsCTB4YjksMHhkMSwweGQxLDB4NjgKKy5ieXRlCTB4MDAsMHgwMCwweDAwLDB4MDAsCTB4YzEsMHhlZCwweGVkLDB4MmMKKy5ieXRlCTB4NDAsMHgyMCwweDIwLDB4NjAsCTB4ZTMsMHhmYywweGZjLDB4MWYKKy5ieXRlCTB4NzksMHhiMSwweGIxLDB4YzgsCTB4YjYsMHg1YiwweDViLDB4ZWQKKy5ieXRlCTB4ZDQsMHg2YSwweDZhLDB4YmUsCTB4OGQsMHhjYiwweGNiLDB4NDYKKy5ieXRlCTB4NjcsMHhiZSwweGJlLDB4ZDksCTB4NzIsMHgzOSwweDM5LDB4NGIKKy5ieXRlCTB4OTQsMHg0YSwweDRhLDB4ZGUsCTB4OTgsMHg0YywweDRjLDB4ZDQKKy5ieXRlCTB4YjAsMHg1OCwweDU4LDB4ZTgsCTB4ODUsMHhjZiwweGNmLDB4NGEKKy5ieXRlCTB4YmIsMHhkMCwweGQwLDB4NmIsCTB4YzUsMHhlZiwweGVmLDB4MmEKKy5ieXRlCTB4NGYsMHhhYSwweGFhLDB4ZTUsCTB4ZWQsMHhmYiwweGZiLDB4MTYKKy5ieXRlCTB4ODYsMHg0MywweDQzLDB4YzUsCTB4OWEsMHg0ZCwweDRkLDB4ZDcKKy5ieXRlCTB4NjYsMHgzMywweDMzLDB4NTUsCTB4MTEsMHg4NSwweDg1LDB4OTQKKy5ieXRlCTB4OGEsMHg0NSwweDQ1LDB4Y2YsCTB4ZTksMHhmOSwweGY5LDB4MTAKKy5ieXRlCTB4MDQsMHgwMiwweDAyLDB4MDYsCTB4ZmUsMHg3ZiwweDdmLDB4ODEKKy5ieXRlCTB4YTAsMHg1MCwweDUwLDB4ZjAsCTB4NzgsMHgzYywweDNjLDB4NDQKKy5ieXRlCTB4MjUsMHg5ZiwweDlmLDB4YmEsCTB4NGIsMHhhOCwweGE4LDB4ZTMKKy5ieXRlCTB4YTIsMHg1MSwweDUxLDB4ZjMsCTB4NWQsMHhhMywweGEzLDB4ZmUKKy5ieXRlCTB4ODAsMHg0MCwweDQwLDB4YzAsCTB4MDUsMHg4ZiwweDhmLDB4OGEKKy5ieXRlCTB4M2YsMHg5MiwweDkyLDB4YWQsCTB4MjEsMHg5ZCwweDlkLDB4YmMKKy5ieXRlCTB4NzAsMHgzOCwweDM4LDB4NDgsCTB4ZjEsMHhmNSwweGY1LDB4MDQKKy5ieXRlCTB4NjMsMHhiYywweGJjLDB4ZGYsCTB4NzcsMHhiNiwweGI2LDB4YzEKKy5ieXRlCTB4YWYsMHhkYSwweGRhLDB4NzUsCTB4NDIsMHgyMSwweDIxLDB4NjMKKy5ieXRlCTB4MjAsMHgxMCwweDEwLDB4MzAsCTB4ZTUsMHhmZiwweGZmLDB4MWEKKy5ieXRlCTB4ZmQsMHhmMywweGYzLDB4MGUsCTB4YmYsMHhkMiwweGQyLDB4NmQKKy5ieXRlCTB4ODEsMHhjZCwweGNkLDB4NGMsCTB4MTgsMHgwYywweDBjLDB4MTQKKy5ieXRlCTB4MjYsMHgxMywweDEzLDB4MzUsCTB4YzMsMHhlYywweGVjLDB4MmYKKy5ieXRlCTB4YmUsMHg1ZiwweDVmLDB4ZTEsCTB4MzUsMHg5NywweDk3LDB4YTIKKy5ieXRlCTB4ODgsMHg0NCwweDQ0LDB4Y2MsCTB4MmUsMHgxNywweDE3LDB4MzkKKy5ieXRlCTB4OTMsMHhjNCwweGM0LDB4NTcsCTB4NTUsMHhhNywweGE3LDB4ZjIKKy5ieXRlCTB4ZmMsMHg3ZSwweDdlLDB4ODIsCTB4N2EsMHgzZCwweDNkLDB4NDcKKy5ieXRlCTB4YzgsMHg2NCwweDY0LDB4YWMsCTB4YmEsMHg1ZCwweDVkLDB4ZTcKKy5ieXRlCTB4MzIsMHgxOSwweDE5LDB4MmIsCTB4ZTYsMHg3MywweDczLDB4OTUKKy5ieXRlCTB4YzAsMHg2MCwweDYwLDB4YTAsCTB4MTksMHg4MSwweDgxLDB4OTgKKy5ieXRlCTB4OWUsMHg0ZiwweDRmLDB4ZDEsCTB4YTMsMHhkYywweGRjLDB4N2YKKy5ieXRlCTB4NDQsMHgyMiwweDIyLDB4NjYsCTB4NTQsMHgyYSwweDJhLDB4N2UKKy5ieXRlCTB4M2IsMHg5MCwweDkwLDB4YWIsCTB4MGIsMHg4OCwweDg4LDB4ODMKKy5ieXRlCTB4OGMsMHg0NiwweDQ2LDB4Y2EsCTB4YzcsMHhlZSwweGVlLDB4MjkKKy5ieXRlCTB4NmIsMHhiOCwweGI4LDB4ZDMsCTB4MjgsMHgxNCwweDE0LDB4M2MKKy5ieXRlCTB4YTcsMHhkZSwweGRlLDB4NzksCTB4YmMsMHg1ZSwweDVlLDB4ZTIKKy5ieXRlCTB4MTYsMHgwYiwweDBiLDB4MWQsCTB4YWQsMHhkYiwweGRiLDB4NzYKKy5ieXRlCTB4ZGIsMHhlMCwweGUwLDB4M2IsCTB4NjQsMHgzMiwweDMyLDB4NTYKKy5ieXRlCTB4NzQsMHgzYSwweDNhLDB4NGUsCTB4MTQsMHgwYSwweDBhLDB4MWUKKy5ieXRlCTB4OTIsMHg0OSwweDQ5LDB4ZGIsCTB4MGMsMHgwNiwweDA2LDB4MGEKKy5ieXRlCTB4NDgsMHgyNCwweDI0LDB4NmMsCTB4YjgsMHg1YywweDVjLDB4ZTQKKy5ieXRlCTB4OWYsMHhjMiwweGMyLDB4NWQsCTB4YmQsMHhkMywweGQzLDB4NmUKKy5ieXRlCTB4NDMsMHhhYywweGFjLDB4ZWYsCTB4YzQsMHg2MiwweDYyLDB4YTYKKy5ieXRlCTB4MzksMHg5MSwweDkxLDB4YTgsCTB4MzEsMHg5NSwweDk1LDB4YTQKKy5ieXRlCTB4ZDMsMHhlNCwweGU0LDB4MzcsCTB4ZjIsMHg3OSwweDc5LDB4OGIKKy5ieXRlCTB4ZDUsMHhlNywweGU3LDB4MzIsCTB4OGIsMHhjOCwweGM4LDB4NDMKKy5ieXRlCTB4NmUsMHgzNywweDM3LDB4NTksCTB4ZGEsMHg2ZCwweDZkLDB4YjcKKy5ieXRlCTB4MDEsMHg4ZCwweDhkLDB4OGMsCTB4YjEsMHhkNSwweGQ1LDB4NjQKKy5ieXRlCTB4OWMsMHg0ZSwweDRlLDB4ZDIsCTB4NDksMHhhOSwweGE5LDB4ZTAKKy5ieXRlCTB4ZDgsMHg2YywweDZjLDB4YjQsCTB4YWMsMHg1NiwweDU2LDB4ZmEKKy5ieXRlCTB4ZjMsMHhmNCwweGY0LDB4MDcsCTB4Y2YsMHhlYSwweGVhLDB4MjUKKy5ieXRlCTB4Y2EsMHg2NSwweDY1LDB4YWYsCTB4ZjQsMHg3YSwweDdhLDB4OGUKKy5ieXRlCTB4NDcsMHhhZSwweGFlLDB4ZTksCTB4MTAsMHgwOCwweDA4LDB4MTgKKy5ieXRlCTB4NmYsMHhiYSwweGJhLDB4ZDUsCTB4ZjAsMHg3OCwweDc4LDB4ODgKKy5ieXRlCTB4NGEsMHgyNSwweDI1LDB4NmYsCTB4NWMsMHgyZSwweDJlLDB4NzIKKy5ieXRlCTB4MzgsMHgxYywweDFjLDB4MjQsCTB4NTcsMHhhNiwweGE2LDB4ZjEKKy5ieXRlCTB4NzMsMHhiNCwweGI0LDB4YzcsCTB4OTcsMHhjNiwweGM2LDB4NTEKKy5ieXRlCTB4Y2IsMHhlOCwweGU4LDB4MjMsCTB4YTEsMHhkZCwweGRkLDB4N2MKKy5ieXRlCTB4ZTgsMHg3NCwweDc0LDB4OWMsCTB4M2UsMHgxZiwweDFmLDB4MjEKKy5ieXRlCTB4OTYsMHg0YiwweDRiLDB4ZGQsCTB4NjEsMHhiZCwweGJkLDB4ZGMKKy5ieXRlCTB4MGQsMHg4YiwweDhiLDB4ODYsCTB4MGYsMHg4YSwweDhhLDB4ODUKKy5ieXRlCTB4ZTAsMHg3MCwweDcwLDB4OTAsCTB4N2MsMHgzZSwweDNlLDB4NDIKKy5ieXRlCTB4NzEsMHhiNSwweGI1LDB4YzQsCTB4Y2MsMHg2NiwweDY2LDB4YWEKKy5ieXRlCTB4OTAsMHg0OCwweDQ4LDB4ZDgsCTB4MDYsMHgwMywweDAzLDB4MDUKKy5ieXRlCTB4ZjcsMHhmNiwweGY2LDB4MDEsCTB4MWMsMHgwZSwweDBlLDB4MTIKKy5ieXRlCTB4YzIsMHg2MSwweDYxLDB4YTMsCTB4NmEsMHgzNSwweDM1LDB4NWYKKy5ieXRlCTB4YWUsMHg1NywweDU3LDB4ZjksCTB4NjksMHhiOSwweGI5LDB4ZDAKKy5ieXRlCTB4MTcsMHg4NiwweDg2LDB4OTEsCTB4OTksMHhjMSwweGMxLDB4NTgKKy5ieXRlCTB4M2EsMHgxZCwweDFkLDB4MjcsCTB4MjcsMHg5ZSwweDllLDB4YjkKKy5ieXRlCTB4ZDksMHhlMSwweGUxLDB4MzgsCTB4ZWIsMHhmOCwweGY4LDB4MTMKKy5ieXRlCTB4MmIsMHg5OCwweDk4LDB4YjMsCTB4MjIsMHgxMSwweDExLDB4MzMKKy5ieXRlCTB4ZDIsMHg2OSwweDY5LDB4YmIsCTB4YTksMHhkOSwweGQ5LDB4NzAKKy5ieXRlCTB4MDcsMHg4ZSwweDhlLDB4ODksCTB4MzMsMHg5NCwweDk0LDB4YTcKKy5ieXRlCTB4MmQsMHg5YiwweDliLDB4YjYsCTB4M2MsMHgxZSwweDFlLDB4MjIKKy5ieXRlCTB4MTUsMHg4NywweDg3LDB4OTIsCTB4YzksMHhlOSwweGU5LDB4MjAKKy5ieXRlCTB4ODcsMHhjZSwweGNlLDB4NDksCTB4YWEsMHg1NSwweDU1LDB4ZmYKKy5ieXRlCTB4NTAsMHgyOCwweDI4LDB4NzgsCTB4YTUsMHhkZiwweGRmLDB4N2EKKy5ieXRlCTB4MDMsMHg4YywweDhjLDB4OGYsCTB4NTksMHhhMSwweGExLDB4ZjgKKy5ieXRlCTB4MDksMHg4OSwweDg5LDB4ODAsCTB4MWEsMHgwZCwweDBkLDB4MTcKKy5ieXRlCTB4NjUsMHhiZiwweGJmLDB4ZGEsCTB4ZDcsMHhlNiwweGU2LDB4MzEKKy5ieXRlCTB4ODQsMHg0MiwweDQyLDB4YzYsCTB4ZDAsMHg2OCwweDY4LDB4YjgKKy5ieXRlCTB4ODIsMHg0MSwweDQxLDB4YzMsCTB4MjksMHg5OSwweDk5LDB4YjAKKy5ieXRlCTB4NWEsMHgyZCwweDJkLDB4NzcsCTB4MWUsMHgwZiwweDBmLDB4MTEKKy5ieXRlCTB4N2IsMHhiMCwweGIwLDB4Y2IsCTB4YTgsMHg1NCwweDU0LDB4ZmMKKy5ieXRlCTB4NmQsMHhiYiwweGJiLDB4ZDYsCTB4MmMsMHgxNiwweDE2LDB4M2EKKworLmJ5dGUJMHg2MywgMHg3YywgMHg3NywgMHg3YiwgMHhmMiwgMHg2YiwgMHg2ZiwgMHhjNQkjIFRlNAorLmJ5dGUJMHgzMCwgMHgwMSwgMHg2NywgMHgyYiwgMHhmZSwgMHhkNywgMHhhYiwgMHg3NgorLmJ5dGUJMHhjYSwgMHg4MiwgMHhjOSwgMHg3ZCwgMHhmYSwgMHg1OSwgMHg0NywgMHhmMAorLmJ5dGUJMHhhZCwgMHhkNCwgMHhhMiwgMHhhZiwgMHg5YywgMHhhNCwgMHg3MiwgMHhjMAorLmJ5dGUJMHhiNywgMHhmZCwgMHg5MywgMHgyNiwgMHgzNiwgMHgzZiwgMHhmNywgMHhjYworLmJ5dGUJMHgzNCwgMHhhNSwgMHhlNSwgMHhmMSwgMHg3MSwgMHhkOCwgMHgzMSwgMHgxNQorLmJ5dGUJMHgwNCwgMHhjNywgMHgyMywgMHhjMywgMHgxOCwgMHg5NiwgMHgwNSwgMHg5YQorLmJ5dGUJMHgwNywgMHgxMiwgMHg4MCwgMHhlMiwgMHhlYiwgMHgyNywgMHhiMiwgMHg3NQorLmJ5dGUJMHgwOSwgMHg4MywgMHgyYywgMHgxYSwgMHgxYiwgMHg2ZSwgMHg1YSwgMHhhMAorLmJ5dGUJMHg1MiwgMHgzYiwgMHhkNiwgMHhiMywgMHgyOSwgMHhlMywgMHgyZiwgMHg4NAorLmJ5dGUJMHg1MywgMHhkMSwgMHgwMCwgMHhlZCwgMHgyMCwgMHhmYywgMHhiMSwgMHg1YgorLmJ5dGUJMHg2YSwgMHhjYiwgMHhiZSwgMHgzOSwgMHg0YSwgMHg0YywgMHg1OCwgMHhjZgorLmJ5dGUJMHhkMCwgMHhlZiwgMHhhYSwgMHhmYiwgMHg0MywgMHg0ZCwgMHgzMywgMHg4NQorLmJ5dGUJMHg0NSwgMHhmOSwgMHgwMiwgMHg3ZiwgMHg1MCwgMHgzYywgMHg5ZiwgMHhhOAorLmJ5dGUJMHg1MSwgMHhhMywgMHg0MCwgMHg4ZiwgMHg5MiwgMHg5ZCwgMHgzOCwgMHhmNQorLmJ5dGUJMHhiYywgMHhiNiwgMHhkYSwgMHgyMSwgMHgxMCwgMHhmZiwgMHhmMywgMHhkMgorLmJ5dGUJMHhjZCwgMHgwYywgMHgxMywgMHhlYywgMHg1ZiwgMHg5NywgMHg0NCwgMHgxNworLmJ5dGUJMHhjNCwgMHhhNywgMHg3ZSwgMHgzZCwgMHg2NCwgMHg1ZCwgMHgxOSwgMHg3MworLmJ5dGUJMHg2MCwgMHg4MSwgMHg0ZiwgMHhkYywgMHgyMiwgMHgyYSwgMHg5MCwgMHg4OAorLmJ5dGUJMHg0NiwgMHhlZSwgMHhiOCwgMHgxNCwgMHhkZSwgMHg1ZSwgMHgwYiwgMHhkYgorLmJ5dGUJMHhlMCwgMHgzMiwgMHgzYSwgMHgwYSwgMHg0OSwgMHgwNiwgMHgyNCwgMHg1YworLmJ5dGUJMHhjMiwgMHhkMywgMHhhYywgMHg2MiwgMHg5MSwgMHg5NSwgMHhlNCwgMHg3OQorLmJ5dGUJMHhlNywgMHhjOCwgMHgzNywgMHg2ZCwgMHg4ZCwgMHhkNSwgMHg0ZSwgMHhhOQorLmJ5dGUJMHg2YywgMHg1NiwgMHhmNCwgMHhlYSwgMHg2NSwgMHg3YSwgMHhhZSwgMHgwOAorLmJ5dGUJMHhiYSwgMHg3OCwgMHgyNSwgMHgyZSwgMHgxYywgMHhhNiwgMHhiNCwgMHhjNgorLmJ5dGUJMHhlOCwgMHhkZCwgMHg3NCwgMHgxZiwgMHg0YiwgMHhiZCwgMHg4YiwgMHg4YQorLmJ5dGUJMHg3MCwgMHgzZSwgMHhiNSwgMHg2NiwgMHg0OCwgMHgwMywgMHhmNiwgMHgwZQorLmJ5dGUJMHg2MSwgMHgzNSwgMHg1NywgMHhiOSwgMHg4NiwgMHhjMSwgMHgxZCwgMHg5ZQorLmJ5dGUJMHhlMSwgMHhmOCwgMHg5OCwgMHgxMSwgMHg2OSwgMHhkOSwgMHg4ZSwgMHg5NAorLmJ5dGUJMHg5YiwgMHgxZSwgMHg4NywgMHhlOSwgMHhjZSwgMHg1NSwgMHgyOCwgMHhkZgorLmJ5dGUJMHg4YywgMHhhMSwgMHg4OSwgMHgwZCwgMHhiZiwgMHhlNiwgMHg0MiwgMHg2OAorLmJ5dGUJMHg0MSwgMHg5OSwgMHgyZCwgMHgwZiwgMHhiMCwgMHg1NCwgMHhiYiwgMHgxNgorCisuYnl0ZQkweDAxLDB4MDAsMHgwMCwweDAwLAkweDAyLDB4MDAsMHgwMCwweDAwCSMgcmNvbgorLmJ5dGUJMHgwNCwweDAwLDB4MDAsMHgwMCwJMHgwOCwweDAwLDB4MDAsMHgwMAorLmJ5dGUJMHgxMCwweDAwLDB4MDAsMHgwMCwJMHgyMCwweDAwLDB4MDAsMHgwMAorLmJ5dGUJMHg0MCwweDAwLDB4MDAsMHgwMCwJMHg4MCwweDAwLDB4MDAsMHgwMAorLmJ5dGUJMHgxQiwweDAwLDB4MDAsMHgwMCwJMHgzNiwweDAwLDB4MDAsMHgwMAorCisuYWxpZ24JNgorQUVTX1RkOgorLmJ5dGUJMHg1MSwweGY0LDB4YTcsMHg1MCwJMHg3ZSwweDQxLDB4NjUsMHg1MwkjIFRkMAorLmJ5dGUJMHgxYSwweDE3LDB4YTQsMHhjMywJMHgzYSwweDI3LDB4NWUsMHg5NgorLmJ5dGUJMHgzYiwweGFiLDB4NmIsMHhjYiwJMHgxZiwweDlkLDB4NDUsMHhmMQorLmJ5dGUJMHhhYywweGZhLDB4NTgsMHhhYiwJMHg0YiwweGUzLDB4MDMsMHg5MworLmJ5dGUJMHgyMCwweDMwLDB4ZmEsMHg1NSwJMHhhZCwweDc2LDB4NmQsMHhmNgorLmJ5dGUJMHg4OCwweGNjLDB4NzYsMHg5MSwJMHhmNSwweDAyLDB4NGMsMHgyNQorLmJ5dGUJMHg0ZiwweGU1LDB4ZDcsMHhmYywJMHhjNSwweDJhLDB4Y2IsMHhkNworLmJ5dGUJMHgyNiwweDM1LDB4NDQsMHg4MCwJMHhiNSwweDYyLDB4YTMsMHg4ZgorLmJ5dGUJMHhkZSwweGIxLDB4NWEsMHg0OSwJMHgyNSwweGJhLDB4MWIsMHg2NworLmJ5dGUJMHg0NSwweGVhLDB4MGUsMHg5OCwJMHg1ZCwweGZlLDB4YzAsMHhlMQorLmJ5dGUJMHhjMywweDJmLDB4NzUsMHgwMiwJMHg4MSwweDRjLDB4ZjAsMHgxMgorLmJ5dGUJMHg4ZCwweDQ2LDB4OTcsMHhhMywJMHg2YiwweGQzLDB4ZjksMHhjNgorLmJ5dGUJMHgwMywweDhmLDB4NWYsMHhlNywJMHgxNSwweDkyLDB4OWMsMHg5NQorLmJ5dGUJMHhiZiwweDZkLDB4N2EsMHhlYiwJMHg5NSwweDUyLDB4NTksMHhkYQorLmJ5dGUJMHhkNCwweGJlLDB4ODMsMHgyZCwJMHg1OCwweDc0LDB4MjEsMHhkMworLmJ5dGUJMHg0OSwweGUwLDB4NjksMHgyOSwJMHg4ZSwweGM5LDB4YzgsMHg0NAorLmJ5dGUJMHg3NSwweGMyLDB4ODksMHg2YSwJMHhmNCwweDhlLDB4NzksMHg3OAorLmJ5dGUJMHg5OSwweDU4LDB4M2UsMHg2YiwJMHgyNywweGI5LDB4NzEsMHhkZAorLmJ5dGUJMHhiZSwweGUxLDB4NGYsMHhiNiwJMHhmMCwweDg4LDB4YWQsMHgxNworLmJ5dGUJMHhjOSwweDIwLDB4YWMsMHg2NiwJMHg3ZCwweGNlLDB4M2EsMHhiNAorLmJ5dGUJMHg2MywweGRmLDB4NGEsMHgxOCwJMHhlNSwweDFhLDB4MzEsMHg4MgorLmJ5dGUJMHg5NywweDUxLDB4MzMsMHg2MCwJMHg2MiwweDUzLDB4N2YsMHg0NQorLmJ5dGUJMHhiMSwweDY0LDB4NzcsMHhlMCwJMHhiYiwweDZiLDB4YWUsMHg4NAorLmJ5dGUJMHhmZSwweDgxLDB4YTAsMHgxYywJMHhmOSwweDA4LDB4MmIsMHg5NAorLmJ5dGUJMHg3MCwweDQ4LDB4NjgsMHg1OCwJMHg4ZiwweDQ1LDB4ZmQsMHgxOQorLmJ5dGUJMHg5NCwweGRlLDB4NmMsMHg4NywJMHg1MiwweDdiLDB4ZjgsMHhiNworLmJ5dGUJMHhhYiwweDczLDB4ZDMsMHgyMywJMHg3MiwweDRiLDB4MDIsMHhlMgorLmJ5dGUJMHhlMywweDFmLDB4OGYsMHg1NywJMHg2NiwweDU1LDB4YWIsMHgyYQorLmJ5dGUJMHhiMiwweGViLDB4MjgsMHgwNywJMHgyZiwweGI1LDB4YzIsMHgwMworLmJ5dGUJMHg4NiwweGM1LDB4N2IsMHg5YSwJMHhkMywweDM3LDB4MDgsMHhhNQorLmJ5dGUJMHgzMCwweDI4LDB4ODcsMHhmMiwJMHgyMywweGJmLDB4YTUsMHhiMgorLmJ5dGUJMHgwMiwweDAzLDB4NmEsMHhiYSwJMHhlZCwweDE2LDB4ODIsMHg1YworLmJ5dGUJMHg4YSwweGNmLDB4MWMsMHgyYiwJMHhhNywweDc5LDB4YjQsMHg5MgorLmJ5dGUJMHhmMywweDA3LDB4ZjIsMHhmMCwJMHg0ZSwweDY5LDB4ZTIsMHhhMQorLmJ5dGUJMHg2NSwweGRhLDB4ZjQsMHhjZCwJMHgwNiwweDA1LDB4YmUsMHhkNQorLmJ5dGUJMHhkMSwweDM0LDB4NjIsMHgxZiwJMHhjNCwweGE2LDB4ZmUsMHg4YQorLmJ5dGUJMHgzNCwweDJlLDB4NTMsMHg5ZCwJMHhhMiwweGYzLDB4NTUsMHhhMAorLmJ5dGUJMHgwNSwweDhhLDB4ZTEsMHgzMiwJMHhhNCwweGY2LDB4ZWIsMHg3NQorLmJ5dGUJMHgwYiwweDgzLDB4ZWMsMHgzOSwJMHg0MCwweDYwLDB4ZWYsMHhhYQorLmJ5dGUJMHg1ZSwweDcxLDB4OWYsMHgwNiwJMHhiZCwweDZlLDB4MTAsMHg1MQorLmJ5dGUJMHgzZSwweDIxLDB4OGEsMHhmOSwJMHg5NiwweGRkLDB4MDYsMHgzZAorLmJ5dGUJMHhkZCwweDNlLDB4MDUsMHhhZSwJMHg0ZCwweGU2LDB4YmQsMHg0NgorLmJ5dGUJMHg5MSwweDU0LDB4OGQsMHhiNSwJMHg3MSwweGM0LDB4NWQsMHgwNQorLmJ5dGUJMHgwNCwweDA2LDB4ZDQsMHg2ZiwJMHg2MCwweDUwLDB4MTUsMHhmZgorLmJ5dGUJMHgxOSwweDk4LDB4ZmIsMHgyNCwJMHhkNiwweGJkLDB4ZTksMHg5NworLmJ5dGUJMHg4OSwweDQwLDB4NDMsMHhjYywJMHg2NywweGQ5LDB4OWUsMHg3NworLmJ5dGUJMHhiMCwweGU4LDB4NDIsMHhiZCwJMHgwNywweDg5LDB4OGIsMHg4OAorLmJ5dGUJMHhlNywweDE5LDB4NWIsMHgzOCwJMHg3OSwweGM4LDB4ZWUsMHhkYgorLmJ5dGUJMHhhMSwweDdjLDB4MGEsMHg0NywJMHg3YywweDQyLDB4MGYsMHhlOQorLmJ5dGUJMHhmOCwweDg0LDB4MWUsMHhjOSwJMHgwMCwweDAwLDB4MDAsMHgwMAorLmJ5dGUJMHgwOSwweDgwLDB4ODYsMHg4MywJMHgzMiwweDJiLDB4ZWQsMHg0OAorLmJ5dGUJMHgxZSwweDExLDB4NzAsMHhhYywJMHg2YywweDVhLDB4NzIsMHg0ZQorLmJ5dGUJMHhmZCwweDBlLDB4ZmYsMHhmYiwJMHgwZiwweDg1LDB4MzgsMHg1NgorLmJ5dGUJMHgzZCwweGFlLDB4ZDUsMHgxZSwJMHgzNiwweDJkLDB4MzksMHgyNworLmJ5dGUJMHgwYSwweDBmLDB4ZDksMHg2NCwJMHg2OCwweDVjLDB4YTYsMHgyMQorLmJ5dGUJMHg5YiwweDViLDB4NTQsMHhkMSwJMHgyNCwweDM2LDB4MmUsMHgzYQorLmJ5dGUJMHgwYywweDBhLDB4NjcsMHhiMSwJMHg5MywweDU3LDB4ZTcsMHgwZgorLmJ5dGUJMHhiNCwweGVlLDB4OTYsMHhkMiwJMHgxYiwweDliLDB4OTEsMHg5ZQorLmJ5dGUJMHg4MCwweGMwLDB4YzUsMHg0ZiwJMHg2MSwweGRjLDB4MjAsMHhhMgorLmJ5dGUJMHg1YSwweDc3LDB4NGIsMHg2OSwJMHgxYywweDEyLDB4MWEsMHgxNgorLmJ5dGUJMHhlMiwweDkzLDB4YmEsMHgwYSwJMHhjMCwweGEwLDB4MmEsMHhlNQorLmJ5dGUJMHgzYywweDIyLDB4ZTAsMHg0MywJMHgxMiwweDFiLDB4MTcsMHgxZAorLmJ5dGUJMHgwZSwweDA5LDB4MGQsMHgwYiwJMHhmMiwweDhiLDB4YzcsMHhhZAorLmJ5dGUJMHgyZCwweGI2LDB4YTgsMHhiOSwJMHgxNCwweDFlLDB4YTksMHhjOAorLmJ5dGUJMHg1NywweGYxLDB4MTksMHg4NSwJMHhhZiwweDc1LDB4MDcsMHg0YworLmJ5dGUJMHhlZSwweDk5LDB4ZGQsMHhiYiwJMHhhMywweDdmLDB4NjAsMHhmZAorLmJ5dGUJMHhmNywweDAxLDB4MjYsMHg5ZiwJMHg1YywweDcyLDB4ZjUsMHhiYworLmJ5dGUJMHg0NCwweDY2LDB4M2IsMHhjNSwJMHg1YiwweGZiLDB4N2UsMHgzNAorLmJ5dGUJMHg4YiwweDQzLDB4MjksMHg3NiwJMHhjYiwweDIzLDB4YzYsMHhkYworLmJ5dGUJMHhiNiwweGVkLDB4ZmMsMHg2OCwJMHhiOCwweGU0LDB4ZjEsMHg2MworLmJ5dGUJMHhkNywweDMxLDB4ZGMsMHhjYSwJMHg0MiwweDYzLDB4ODUsMHgxMAorLmJ5dGUJMHgxMywweDk3LDB4MjIsMHg0MCwJMHg4NCwweGM2LDB4MTEsMHgyMAorLmJ5dGUJMHg4NSwweDRhLDB4MjQsMHg3ZCwJMHhkMiwweGJiLDB4M2QsMHhmOAorLmJ5dGUJMHhhZSwweGY5LDB4MzIsMHgxMSwJMHhjNywweDI5LDB4YTEsMHg2ZAorLmJ5dGUJMHgxZCwweDllLDB4MmYsMHg0YiwJMHhkYywweGIyLDB4MzAsMHhmMworLmJ5dGUJMHgwZCwweDg2LDB4NTIsMHhlYywJMHg3NywweGMxLDB4ZTMsMHhkMAorLmJ5dGUJMHgyYiwweGIzLDB4MTYsMHg2YywJMHhhOSwweDcwLDB4YjksMHg5OQorLmJ5dGUJMHgxMSwweDk0LDB4NDgsMHhmYSwJMHg0NywweGU5LDB4NjQsMHgyMgorLmJ5dGUJMHhhOCwweGZjLDB4OGMsMHhjNCwJMHhhMCwweGYwLDB4M2YsMHgxYQorLmJ5dGUJMHg1NiwweDdkLDB4MmMsMHhkOCwJMHgyMiwweDMzLDB4OTAsMHhlZgorLmJ5dGUJMHg4NywweDQ5LDB4NGUsMHhjNywJMHhkOSwweDM4LDB4ZDEsMHhjMQorLmJ5dGUJMHg4YywweGNhLDB4YTIsMHhmZSwJMHg5OCwweGQ0LDB4MGIsMHgzNgorLmJ5dGUJMHhhNiwweGY1LDB4ODEsMHhjZiwJMHhhNSwweDdhLDB4ZGUsMHgyOAorLmJ5dGUJMHhkYSwweGI3LDB4OGUsMHgyNiwJMHgzZiwweGFkLDB4YmYsMHhhNAorLmJ5dGUJMHgyYywweDNhLDB4OWQsMHhlNCwJMHg1MCwweDc4LDB4OTIsMHgwZAorLmJ5dGUJMHg2YSwweDVmLDB4Y2MsMHg5YiwJMHg1NCwweDdlLDB4NDYsMHg2MgorLmJ5dGUJMHhmNiwweDhkLDB4MTMsMHhjMiwJMHg5MCwweGQ4LDB4YjgsMHhlOAorLmJ5dGUJMHgyZSwweDM5LDB4ZjcsMHg1ZSwJMHg4MiwweGMzLDB4YWYsMHhmNQorLmJ5dGUJMHg5ZiwweDVkLDB4ODAsMHhiZSwJMHg2OSwweGQwLDB4OTMsMHg3YworLmJ5dGUJMHg2ZiwweGQ1LDB4MmQsMHhhOSwJMHhjZiwweDI1LDB4MTIsMHhiMworLmJ5dGUJMHhjOCwweGFjLDB4OTksMHgzYiwJMHgxMCwweDE4LDB4N2QsMHhhNworLmJ5dGUJMHhlOCwweDljLDB4NjMsMHg2ZSwJMHhkYiwweDNiLDB4YmIsMHg3YgorLmJ5dGUJMHhjZCwweDI2LDB4NzgsMHgwOSwJMHg2ZSwweDU5LDB4MTgsMHhmNAorLmJ5dGUJMHhlYywweDlhLDB4YjcsMHgwMSwJMHg4MywweDRmLDB4OWEsMHhhOAorLmJ5dGUJMHhlNiwweDk1LDB4NmUsMHg2NSwJMHhhYSwweGZmLDB4ZTYsMHg3ZQorLmJ5dGUJMHgyMSwweGJjLDB4Y2YsMHgwOCwJMHhlZiwweDE1LDB4ZTgsMHhlNgorLmJ5dGUJMHhiYSwweGU3LDB4OWIsMHhkOSwJMHg0YSwweDZmLDB4MzYsMHhjZQorLmJ5dGUJMHhlYSwweDlmLDB4MDksMHhkNCwJMHgyOSwweGIwLDB4N2MsMHhkNgorLmJ5dGUJMHgzMSwweGE0LDB4YjIsMHhhZiwJMHgyYSwweDNmLDB4MjMsMHgzMQorLmJ5dGUJMHhjNiwweGE1LDB4OTQsMHgzMCwJMHgzNSwweGEyLDB4NjYsMHhjMAorLmJ5dGUJMHg3NCwweDRlLDB4YmMsMHgzNywJMHhmYywweDgyLDB4Y2EsMHhhNgorLmJ5dGUJMHhlMCwweDkwLDB4ZDAsMHhiMCwJMHgzMywweGE3LDB4ZDgsMHgxNQorLmJ5dGUJMHhmMSwweDA0LDB4OTgsMHg0YSwJMHg0MSwweGVjLDB4ZGEsMHhmNworLmJ5dGUJMHg3ZiwweGNkLDB4NTAsMHgwZSwJMHgxNywweDkxLDB4ZjYsMHgyZgorLmJ5dGUJMHg3NiwweDRkLDB4ZDYsMHg4ZCwJMHg0MywweGVmLDB4YjAsMHg0ZAorLmJ5dGUJMHhjYywweGFhLDB4NGQsMHg1NCwJMHhlNCwweDk2LDB4MDQsMHhkZgorLmJ5dGUJMHg5ZSwweGQxLDB4YjUsMHhlMywJMHg0YywweDZhLDB4ODgsMHgxYgorLmJ5dGUJMHhjMSwweDJjLDB4MWYsMHhiOCwJMHg0NiwweDY1LDB4NTEsMHg3ZgorLmJ5dGUJMHg5ZCwweDVlLDB4ZWEsMHgwNCwJMHgwMSwweDhjLDB4MzUsMHg1ZAorLmJ5dGUJMHhmYSwweDg3LDB4NzQsMHg3MywJMHhmYiwweDBiLDB4NDEsMHgyZQorLmJ5dGUJMHhiMywweDY3LDB4MWQsMHg1YSwJMHg5MiwweGRiLDB4ZDIsMHg1MgorLmJ5dGUJMHhlOSwweDEwLDB4NTYsMHgzMywJMHg2ZCwweGQ2LDB4NDcsMHgxMworLmJ5dGUJMHg5YSwweGQ3LDB4NjEsMHg4YywJMHgzNywweGExLDB4MGMsMHg3YQorLmJ5dGUJMHg1OSwweGY4LDB4MTQsMHg4ZSwJMHhlYiwweDEzLDB4M2MsMHg4OQorLmJ5dGUJMHhjZSwweGE5LDB4MjcsMHhlZSwJMHhiNywweDYxLDB4YzksMHgzNQorLmJ5dGUJMHhlMSwweDFjLDB4ZTUsMHhlZCwJMHg3YSwweDQ3LDB4YjEsMHgzYworLmJ5dGUJMHg5YywweGQyLDB4ZGYsMHg1OSwJMHg1NSwweGYyLDB4NzMsMHgzZgorLmJ5dGUJMHgxOCwweDE0LDB4Y2UsMHg3OSwJMHg3MywweGM3LDB4MzcsMHhiZgorLmJ5dGUJMHg1MywweGY3LDB4Y2QsMHhlYSwJMHg1ZiwweGZkLDB4YWEsMHg1YgorLmJ5dGUJMHhkZiwweDNkLDB4NmYsMHgxNCwJMHg3OCwweDQ0LDB4ZGIsMHg4NgorLmJ5dGUJMHhjYSwweGFmLDB4ZjMsMHg4MSwJMHhiOSwweDY4LDB4YzQsMHgzZQorLmJ5dGUJMHgzOCwweDI0LDB4MzQsMHgyYywJMHhjMiwweGEzLDB4NDAsMHg1ZgorLmJ5dGUJMHgxNiwweDFkLDB4YzMsMHg3MiwJMHhiYywweGUyLDB4MjUsMHgwYworLmJ5dGUJMHgyOCwweDNjLDB4NDksMHg4YiwJMHhmZiwweDBkLDB4OTUsMHg0MQorLmJ5dGUJMHgzOSwweGE4LDB4MDEsMHg3MSwJMHgwOCwweDBjLDB4YjMsMHhkZQorLmJ5dGUJMHhkOCwweGI0LDB4ZTQsMHg5YywJMHg2NCwweDU2LDB4YzEsMHg5MAorLmJ5dGUJMHg3YiwweGNiLDB4ODQsMHg2MSwJMHhkNSwweDMyLDB4YjYsMHg3MAorLmJ5dGUJMHg0OCwweDZjLDB4NWMsMHg3NCwJMHhkMCwweGI4LDB4NTcsMHg0MgorCisuYnl0ZQkweDUyLCAweDA5LCAweDZhLCAweGQ1LCAweDMwLCAweDM2LCAweGE1LCAweDM4CSMgVGQ0CisuYnl0ZQkweGJmLCAweDQwLCAweGEzLCAweDllLCAweDgxLCAweGYzLCAweGQ3LCAweGZiCisuYnl0ZQkweDdjLCAweGUzLCAweDM5LCAweDgyLCAweDliLCAweDJmLCAweGZmLCAweDg3CisuYnl0ZQkweDM0LCAweDhlLCAweDQzLCAweDQ0LCAweGM0LCAweGRlLCAweGU5LCAweGNiCisuYnl0ZQkweDU0LCAweDdiLCAweDk0LCAweDMyLCAweGE2LCAweGMyLCAweDIzLCAweDNkCisuYnl0ZQkweGVlLCAweDRjLCAweDk1LCAweDBiLCAweDQyLCAweGZhLCAweGMzLCAweDRlCisuYnl0ZQkweDA4LCAweDJlLCAweGExLCAweDY2LCAweDI4LCAweGQ5LCAweDI0LCAweGIyCisuYnl0ZQkweDc2LCAweDViLCAweGEyLCAweDQ5LCAweDZkLCAweDhiLCAweGQxLCAweDI1CisuYnl0ZQkweDcyLCAweGY4LCAweGY2LCAweDY0LCAweDg2LCAweDY4LCAweDk4LCAweDE2CisuYnl0ZQkweGQ0LCAweGE0LCAweDVjLCAweGNjLCAweDVkLCAweDY1LCAweGI2LCAweDkyCisuYnl0ZQkweDZjLCAweDcwLCAweDQ4LCAweDUwLCAweGZkLCAweGVkLCAweGI5LCAweGRhCisuYnl0ZQkweDVlLCAweDE1LCAweDQ2LCAweDU3LCAweGE3LCAweDhkLCAweDlkLCAweDg0CisuYnl0ZQkweDkwLCAweGQ4LCAweGFiLCAweDAwLCAweDhjLCAweGJjLCAweGQzLCAweDBhCisuYnl0ZQkweGY3LCAweGU0LCAweDU4LCAweDA1LCAweGI4LCAweGIzLCAweDQ1LCAweDA2CisuYnl0ZQkweGQwLCAweDJjLCAweDFlLCAweDhmLCAweGNhLCAweDNmLCAweDBmLCAweDAyCisuYnl0ZQkweGMxLCAweGFmLCAweGJkLCAweDAzLCAweDAxLCAweDEzLCAweDhhLCAweDZiCisuYnl0ZQkweDNhLCAweDkxLCAweDExLCAweDQxLCAweDRmLCAweDY3LCAweGRjLCAweGVhCisuYnl0ZQkweDk3LCAweGYyLCAweGNmLCAweGNlLCAweGYwLCAweGI0LCAweGU2LCAweDczCisuYnl0ZQkweDk2LCAweGFjLCAweDc0LCAweDIyLCAweGU3LCAweGFkLCAweDM1LCAweDg1CisuYnl0ZQkweGUyLCAweGY5LCAweDM3LCAweGU4LCAweDFjLCAweDc1LCAweGRmLCAweDZlCisuYnl0ZQkweDQ3LCAweGYxLCAweDFhLCAweDcxLCAweDFkLCAweDI5LCAweGM1LCAweDg5CisuYnl0ZQkweDZmLCAweGI3LCAweDYyLCAweDBlLCAweGFhLCAweDE4LCAweGJlLCAweDFiCisuYnl0ZQkweGZjLCAweDU2LCAweDNlLCAweDRiLCAweGM2LCAweGQyLCAweDc5LCAweDIwCisuYnl0ZQkweDlhLCAweGRiLCAweGMwLCAweGZlLCAweDc4LCAweGNkLCAweDVhLCAweGY0CisuYnl0ZQkweDFmLCAweGRkLCAweGE4LCAweDMzLCAweDg4LCAweDA3LCAweGM3LCAweDMxCisuYnl0ZQkweGIxLCAweDEyLCAweDEwLCAweDU5LCAweDI3LCAweDgwLCAweGVjLCAweDVmCisuYnl0ZQkweDYwLCAweDUxLCAweDdmLCAweGE5LCAweDE5LCAweGI1LCAweDRhLCAweDBkCisuYnl0ZQkweDJkLCAweGU1LCAweDdhLCAweDlmLCAweDkzLCAweGM5LCAweDljLCAweGVmCisuYnl0ZQkweGEwLCAweGUwLCAweDNiLCAweDRkLCAweGFlLCAweDJhLCAweGY1LCAweGIwCisuYnl0ZQkweGM4LCAweGViLCAweGJiLCAweDNjLCAweDgzLCAweDUzLCAweDk5LCAweDYxCisuYnl0ZQkweDE3LCAweDJiLCAweDA0LCAweDdlLCAweGJhLCAweDc3LCAweGQ2LCAweDI2CisuYnl0ZQkweGUxLCAweDY5LCAweDE0LCAweDYzLCAweDU1LCAweDIxLCAweDBjLCAweDdkCmRpZmYgLS1naXQgYS9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS9hZXMtcGFyaXNjLnBsIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzLXBhcmlzYy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzZiNmEyCi0tLSAvZGV2L251bGwKKysrIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzLXBhcmlzYy5wbApAQCAtMCwwICsxLDEwMjEgQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPiBmb3IgdGhlIE9wZW5TU0wKKyMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAorIyBDUllQVE9HQU1TIGxpY2Vuc2VzIGRlcGVuZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVydGhlcgorIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBBRVMgZm9yIFBBLVJJU0MuCisjCisjIEp1bmUgMjAwOS4KKyMKKyMgVGhlIG1vZHVsZSBpcyBtZWNoYW5pY2FsIHRyYW5zbGl0ZXJhdGlvbiBvZiBhZXMtc3BhcmN2OS5wbCwgYnV0IHdpdGgKKyMgYSB0d2lzdDogUy1ib3hlcyBhcmUgY29tcHJlc3NlZCBldmVuIGZ1cnRoZXIgZG93biB0byAxSysyNTZCLiBPbgorIyBQQS03MTAwTEMgcGVyZm9ybWFuY2UgaXMgfjQwJSBiZXR0ZXIgdGhhbiBnY2MgMy4yIGdlbmVyYXRlZCBjb2RlIGFuZAorIyBpcyBhYm91dCAzMyBjeWNsZXMgcGVyIGJ5dGUgcHJvY2Vzc2VkIHdpdGggMTI4LWJpdCBrZXkuIE5ld2VyIENQVXMKKyMgcGVyZm9ybSBhdCAxNiBjeWNsZXMgcGVyIGJ5dGUuIEl0J3Mgbm90IGZhc3RlciB0aGFuIGNvZGUgZ2VuZXJhdGVkCisjIGJ5IHZlbmRvciBjb21waWxlciwgYnV0IHJlY2FsbCB0aGF0IGl0IGhhcyBjb21wcmVzc2VkIFMtYm94ZXMsIHdoaWNoCisjIHJlcXVpcmVzIGV4dHJhIHByb2Nlc3NpbmcuCisjCisjIFNwZWNpYWwgdGhhbmtzIHRvIHBvbGFyaG9tZS5jb20gZm9yIHByb3ZpZGluZyBIUC1VWCBhY2NvdW50LgorCiskZmxhdm91ciA9IHNoaWZ0OworJG91dHB1dCA9IHNoaWZ0Oworb3BlbiBTVERPVVQsIj4kb3V0cHV0IjsKKworaWYgKCRmbGF2b3VyID1+IC82NC8pIHsKKwkkTEVWRUwJCT0iMi4wVyI7CisJJFNJWkVfVAkJPTg7CisJJEZSQU1FX01BUktFUgk9ODA7CisJJFNBVkVEX1JQCT0xNjsKKwkkUFVTSAkJPSJzdGQiOworCSRQVVNITUEJCT0ic3RkLG1hIjsKKwkkUE9QCQk9ImxkZCI7CisJJFBPUE1CCQk9ImxkZCxtYiI7Cit9IGVsc2UgeworCSRMRVZFTAkJPSIxLjAiOworCSRTSVpFX1QJCT00OworCSRGUkFNRV9NQVJLRVIJPTQ4OworCSRTQVZFRF9SUAk9MjA7CisJJFBVU0gJCT0ic3R3IjsKKwkkUFVTSE1BCQk9InN0d20iOworCSRQT1AJCT0ibGR3IjsKKwkkUE9QTUIJCT0ibGR3bSI7Cit9CisKKyRGUkFNRT0xNiokU0laRV9UKyRGUkFNRV9NQVJLRVI7IyAxNiBzYXZlZCByZWdzICsgZnJhbWUgbWFya2VyCisJCQkJIyAgICAgICAgICAgICAgICAgWysgYXJndW1lbnQgdHJhbnNmZXJdCiskaW5wPSIlcjI2IjsJIyBhcmcwCiskb3V0PSIlcjI1IjsJIyBhcmcxCiska2V5PSIlcjI0IjsJIyBhcmcyCisKKygkczAsJHMxLCRzMiwkczMpID0gKCIlcjEiLCIlcjIiLCIlcjMiLCIlcjQiKTsKKygkdDAsJHQxLCR0MiwkdDMpID0gKCIlcjUiLCIlcjYiLCIlcjciLCIlcjgiKTsKKworKCRhY2MwLCAkYWNjMSwgJGFjYzIsICRhY2MzLCAkYWNjNCwgJGFjYzUsICRhY2M2LCAkYWNjNywKKyAkYWNjOCwgJGFjYzksJGFjYzEwLCRhY2MxMSwkYWNjMTIsJGFjYzEzLCRhY2MxNCwkYWNjMTUpID0KKygiJXI5IiwiJXIxMCIsIiVyMTEiLCIlcjEyIiwiJXIxMyIsIiVyMTQiLCIlcjE1IiwiJXIxNiIsCisiJXIxNyIsIiVyMTgiLCIlcjE5IiwiJXIyMCIsIiVyMjEiLCIlcjIyIiwiJXIyMyIsIiVyMjYiKTsKKworJHRibD0iJXIyOCI7Ciskcm91bmRzPSIlcjI5IjsKKworJGNvZGU9PDxfX187CisJLkxFVkVMCSRMRVZFTAorCS5TUEFDRQlcJFRFWFRcJAorCS5TVUJTUEEJXCRDT0RFXCQsUVVBRD0wLEFMSUdOPTgsQUNDRVNTPTB4MkMsQ09ERV9PTkxZCisKKwkuRVhQT1JUCUFFU19lbmNyeXB0LEVOVFJZLEFSR1cwPUdSLEFSR1cxPUdSLEFSR1cyPUdSCisJLkFMSUdOCTY0CitBRVNfZW5jcnlwdAorCS5QUk9DCisJLkNBTExJTkZPCUZSQU1FPWAkRlJBTUUtMTYqJFNJWkVfVGAsTk9fQ0FMTFMsU0FWRV9SUCxFTlRSWV9HUj0xOAorCS5FTlRSWQorCSRQVVNICSVyMiwtJFNBVkVEX1JQKCVzcCkJOyBzdGFuZGFyZCBwcm9sb2d1ZQorCSRQVVNITUEJJXIzLCRGUkFNRSglc3ApCisJJFBVU0gJJXI0LGAtJEZSQU1FKzEqJFNJWkVfVGAoJXNwKQorCSRQVVNICSVyNSxgLSRGUkFNRSsyKiRTSVpFX1RgKCVzcCkKKwkkUFVTSAklcjYsYC0kRlJBTUUrMyokU0laRV9UYCglc3ApCisJJFBVU0gJJXI3LGAtJEZSQU1FKzQqJFNJWkVfVGAoJXNwKQorCSRQVVNICSVyOCxgLSRGUkFNRSs1KiRTSVpFX1RgKCVzcCkKKwkkUFVTSAklcjksYC0kRlJBTUUrNiokU0laRV9UYCglc3ApCisJJFBVU0gJJXIxMCxgLSRGUkFNRSs3KiRTSVpFX1RgKCVzcCkKKwkkUFVTSAklcjExLGAtJEZSQU1FKzgqJFNJWkVfVGAoJXNwKQorCSRQVVNICSVyMTIsYC0kRlJBTUUrOSokU0laRV9UYCglc3ApCisJJFBVU0gJJXIxMyxgLSRGUkFNRSsxMCokU0laRV9UYCglc3ApCisJJFBVU0gJJXIxNCxgLSRGUkFNRSsxMSokU0laRV9UYCglc3ApCisJJFBVU0gJJXIxNSxgLSRGUkFNRSsxMiokU0laRV9UYCglc3ApCisJJFBVU0gJJXIxNixgLSRGUkFNRSsxMyokU0laRV9UYCglc3ApCisJJFBVU0gJJXIxNyxgLSRGUkFNRSsxNCokU0laRV9UYCglc3ApCisJJFBVU0gJJXIxOCxgLSRGUkFNRSsxNSokU0laRV9UYCglc3ApCisKKwlibHIJJXIwLCR0YmwKKwlsZGkJMywkdDAKK0xcJGVuY19waWMKKwlhbmRjbQkkdGJsLCR0MCwkdGJsCisJbGRvCUxcJEFFU19UZS1MXCRlbmNfcGljKCR0YmwpLCR0YmwKKworCWFuZAkkaW5wLCR0MCwkdDAKKwlzdWIJJGlucCwkdDAsJGlucAorCWxkdwkwKCRpbnApLCRzMAorCWxkdwk0KCRpbnApLCRzMQorCWxkdwk4KCRpbnApLCRzMgorCWNvbWliLD0JMCwkdDAsTFwkZW5jX2lucF9hbGlnbmVkCisJbGR3CTEyKCRpbnApLCRzMworCisJc2gzYWRkbAkkdDAsJXIwLCR0MAorCXN1YmkJMzIsJHQwLCR0MAorCW10Y3RsCSR0MCwlY3IxMQorCWxkdwkxNigkaW5wKSwkdDEKKwl2c2hkCSRzMCwkczEsJHMwCisJdnNoZAkkczEsJHMyLCRzMQorCXZzaGQJJHMyLCRzMywkczIKKwl2c2hkCSRzMywkdDEsJHMzCisKK0xcJGVuY19pbnBfYWxpZ25lZAorCWJsCV9wYXJpc2NfQUVTX2VuY3J5cHQsJXIzMQorCW5vcAorCisJZXh0cnUsPD4gJG91dCwzMSwyLCVyMAorCWIJTFwkZW5jX291dF9hbGlnbmVkCisJbm9wCisKKwlfc3JtCSRzMCwyNCwkYWNjMAorCV9zcm0JJHMwLDE2LCRhY2MxCisJc3RiCSRhY2MwLDAoJG91dCkKKwlfc3JtCSRzMCw4LCRhY2MyCisJc3RiCSRhY2MxLDEoJG91dCkKKwlfc3JtCSRzMSwyNCwkYWNjNAorCXN0YgkkYWNjMiwyKCRvdXQpCisJX3NybQkkczEsMTYsJGFjYzUKKwlzdGIJJHMwLDMoJG91dCkKKwlfc3JtCSRzMSw4LCRhY2M2CisJc3RiCSRhY2M0LDQoJG91dCkKKwlfc3JtCSRzMiwyNCwkYWNjMAorCXN0YgkkYWNjNSw1KCRvdXQpCisJX3NybQkkczIsMTYsJGFjYzEKKwlzdGIJJGFjYzYsNigkb3V0KQorCV9zcm0JJHMyLDgsJGFjYzIKKwlzdGIJJHMxLDcoJG91dCkKKwlfc3JtCSRzMywyNCwkYWNjNAorCXN0YgkkYWNjMCw4KCRvdXQpCisJX3NybQkkczMsMTYsJGFjYzUKKwlzdGIJJGFjYzEsOSgkb3V0KQorCV9zcm0JJHMzLDgsJGFjYzYKKwlzdGIJJGFjYzIsMTAoJG91dCkKKwlzdGIJJHMyLDExKCRvdXQpCisJc3RiCSRhY2M0LDEyKCRvdXQpCisJc3RiCSRhY2M1LDEzKCRvdXQpCisJc3RiCSRhY2M2LDE0KCRvdXQpCisJYglMXCRlbmNfZG9uZQorCXN0YgkkczMsMTUoJG91dCkKKworTFwkZW5jX291dF9hbGlnbmVkCisJc3R3CSRzMCwwKCRvdXQpCisJc3R3CSRzMSw0KCRvdXQpCisJc3R3CSRzMiw4KCRvdXQpCisJc3R3CSRzMywxMigkb3V0KQorCitMXCRlbmNfZG9uZQorCSRQT1AJYC0kRlJBTUUtJFNBVkVEX1JQYCglc3ApLCVyMgk7IHN0YW5kYXJkIGVwaWxvZ3VlCisJJFBPUAlgLSRGUkFNRSsxKiRTSVpFX1RgKCVzcCksJXI0CisJJFBPUAlgLSRGUkFNRSsyKiRTSVpFX1RgKCVzcCksJXI1CisJJFBPUAlgLSRGUkFNRSszKiRTSVpFX1RgKCVzcCksJXI2CisJJFBPUAlgLSRGUkFNRSs0KiRTSVpFX1RgKCVzcCksJXI3CisJJFBPUAlgLSRGUkFNRSs1KiRTSVpFX1RgKCVzcCksJXI4CisJJFBPUAlgLSRGUkFNRSs2KiRTSVpFX1RgKCVzcCksJXI5CisJJFBPUAlgLSRGUkFNRSs3KiRTSVpFX1RgKCVzcCksJXIxMAorCSRQT1AJYC0kRlJBTUUrOCokU0laRV9UYCglc3ApLCVyMTEKKwkkUE9QCWAtJEZSQU1FKzkqJFNJWkVfVGAoJXNwKSwlcjEyCisJJFBPUAlgLSRGUkFNRSsxMCokU0laRV9UYCglc3ApLCVyMTMKKwkkUE9QCWAtJEZSQU1FKzExKiRTSVpFX1RgKCVzcCksJXIxNAorCSRQT1AJYC0kRlJBTUUrMTIqJFNJWkVfVGAoJXNwKSwlcjE1CisJJFBPUAlgLSRGUkFNRSsxMyokU0laRV9UYCglc3ApLCVyMTYKKwkkUE9QCWAtJEZSQU1FKzE0KiRTSVpFX1RgKCVzcCksJXIxNworCSRQT1AJYC0kRlJBTUUrMTUqJFNJWkVfVGAoJXNwKSwlcjE4CisJYnYJKCVyMikKKwkuRVhJVAorCSRQT1BNQgktJEZSQU1FKCVzcCksJXIzCisJLlBST0NFTkQKKworCS5BTElHTgkxNgorX3BhcmlzY19BRVNfZW5jcnlwdAorCS5QUk9DCisJLkNBTExJTkZPCU1JTExJQ09ERQorCS5FTlRSWQorCWxkdwkyNDAoJGtleSksJHJvdW5kcworCWxkdwkwKCRrZXkpLCR0MAorCWxkdwk0KCRrZXkpLCR0MQorCWxkdwk4KCRrZXkpLCR0MgorCV9zcm0JJHJvdW5kcywxLCRyb3VuZHMKKwl4b3IJJHQwLCRzMCwkczAKKwlsZHcJMTIoJGtleSksJHQzCisJX3NybQkkczAsMjQsJGFjYzAKKwl4b3IJJHQxLCRzMSwkczEKKwlsZHcJMTYoJGtleSksJHQwCisJX3NybQkkczEsMTYsJGFjYzEKKwl4b3IJJHQyLCRzMiwkczIKKwlsZHcJMjAoJGtleSksJHQxCisJeG9yCSR0MywkczMsJHMzCisJbGR3CTI0KCRrZXkpLCR0MgorCWxkdwkyOCgka2V5KSwkdDMKK0xcJGVuY19sb29wCisJX3NybQkkczIsOCwkYWNjMgorCWxkd3gscwkkYWNjMCgkdGJsKSwkYWNjMAorCV9zcm0JJHMzLDAsJGFjYzMKKwlsZHd4LHMJJGFjYzEoJHRibCksJGFjYzEKKwlfc3JtCSRzMSwyNCwkYWNjNAorCWxkd3gscwkkYWNjMigkdGJsKSwkYWNjMgorCV9zcm0JJHMyLDE2LCRhY2M1CisJbGR3eCxzCSRhY2MzKCR0YmwpLCRhY2MzCisJX3NybQkkczMsOCwkYWNjNgorCWxkd3gscwkkYWNjNCgkdGJsKSwkYWNjNAorCV9zcm0JJHMwLDAsJGFjYzcKKwlsZHd4LHMJJGFjYzUoJHRibCksJGFjYzUKKwlfc3JtCSRzMiwyNCwkYWNjOAorCWxkd3gscwkkYWNjNigkdGJsKSwkYWNjNgorCV9zcm0JJHMzLDE2LCRhY2M5CisJbGR3eCxzCSRhY2M3KCR0YmwpLCRhY2M3CisJX3NybQkkczAsOCwkYWNjMTAKKwlsZHd4LHMJJGFjYzgoJHRibCksJGFjYzgKKwlfc3JtCSRzMSwwLCRhY2MxMQorCWxkd3gscwkkYWNjOSgkdGJsKSwkYWNjOQorCV9zcm0JJHMzLDI0LCRhY2MxMgorCWxkd3gscwkkYWNjMTAoJHRibCksJGFjYzEwCisJX3NybQkkczAsMTYsJGFjYzEzCisJbGR3eCxzCSRhY2MxMSgkdGJsKSwkYWNjMTEKKwlfc3JtCSRzMSw4LCRhY2MxNAorCWxkd3gscwkkYWNjMTIoJHRibCksJGFjYzEyCisJX3NybQkkczIsMCwkYWNjMTUKKwlsZHd4LHMJJGFjYzEzKCR0YmwpLCRhY2MxMworCWxkd3gscwkkYWNjMTQoJHRibCksJGFjYzE0CisJbGR3eCxzCSRhY2MxNSgkdGJsKSwkYWNjMTUKKwlhZGRpYiw9IC0xLCRyb3VuZHMsTFwkZW5jX2xhc3QKKwlsZG8JMzIoJGtleSksJGtleQorCisJCV9yb3IJJGFjYzEsOCwkYWNjMQorCQl4b3IJJGFjYzAsJHQwLCR0MAorCWxkdwkwKCRrZXkpLCRzMAorCQlfcm9yCSRhY2MyLDE2LCRhY2MyCisJCXhvcgkkYWNjMSwkdDAsJHQwCisJbGR3CTQoJGtleSksJHMxCisJCV9yb3IJJGFjYzMsMjQsJGFjYzMKKwkJeG9yCSRhY2MyLCR0MCwkdDAKKwlsZHcJOCgka2V5KSwkczIKKwkJX3JvcgkkYWNjNSw4LCRhY2M1CisJCXhvcgkkYWNjMywkdDAsJHQwCisJbGR3CTEyKCRrZXkpLCRzMworCQlfcm9yCSRhY2M2LDE2LCRhY2M2CisJCXhvcgkkYWNjNCwkdDEsJHQxCisJCV9yb3IJJGFjYzcsMjQsJGFjYzcKKwkJeG9yCSRhY2M1LCR0MSwkdDEKKwkJX3JvcgkkYWNjOSw4LCRhY2M5CisJCXhvcgkkYWNjNiwkdDEsJHQxCisJCV9yb3IJJGFjYzEwLDE2LCRhY2MxMAorCQl4b3IJJGFjYzcsJHQxLCR0MQorCQlfcm9yCSRhY2MxMSwyNCwkYWNjMTEKKwkJeG9yCSRhY2M4LCR0MiwkdDIKKwkJX3JvcgkkYWNjMTMsOCwkYWNjMTMKKwkJeG9yCSRhY2M5LCR0MiwkdDIKKwkJX3JvcgkkYWNjMTQsMTYsJGFjYzE0CisJCXhvcgkkYWNjMTAsJHQyLCR0MgorCQlfcm9yCSRhY2MxNSwyNCwkYWNjMTUKKwkJeG9yCSRhY2MxMSwkdDIsJHQyCisJCXhvcgkkYWNjMTIsJGFjYzE0LCRhY2MxNAorCQl4b3IJJGFjYzEzLCR0MywkdDMKKwlfc3JtCSR0MCwyNCwkYWNjMAorCQl4b3IJJGFjYzE0LCR0MywkdDMKKwlfc3JtCSR0MSwxNiwkYWNjMQorCQl4b3IJJGFjYzE1LCR0MywkdDMKKworCV9zcm0JJHQyLDgsJGFjYzIKKwlsZHd4LHMJJGFjYzAoJHRibCksJGFjYzAKKwlfc3JtCSR0MywwLCRhY2MzCisJbGR3eCxzCSRhY2MxKCR0YmwpLCRhY2MxCisJX3NybQkkdDEsMjQsJGFjYzQKKwlsZHd4LHMJJGFjYzIoJHRibCksJGFjYzIKKwlfc3JtCSR0MiwxNiwkYWNjNQorCWxkd3gscwkkYWNjMygkdGJsKSwkYWNjMworCV9zcm0JJHQzLDgsJGFjYzYKKwlsZHd4LHMJJGFjYzQoJHRibCksJGFjYzQKKwlfc3JtCSR0MCwwLCRhY2M3CisJbGR3eCxzCSRhY2M1KCR0YmwpLCRhY2M1CisJX3NybQkkdDIsMjQsJGFjYzgKKwlsZHd4LHMJJGFjYzYoJHRibCksJGFjYzYKKwlfc3JtCSR0MywxNiwkYWNjOQorCWxkd3gscwkkYWNjNygkdGJsKSwkYWNjNworCV9zcm0JJHQwLDgsJGFjYzEwCisJbGR3eCxzCSRhY2M4KCR0YmwpLCRhY2M4CisJX3NybQkkdDEsMCwkYWNjMTEKKwlsZHd4LHMJJGFjYzkoJHRibCksJGFjYzkKKwlfc3JtCSR0MywyNCwkYWNjMTIKKwlsZHd4LHMJJGFjYzEwKCR0YmwpLCRhY2MxMAorCV9zcm0JJHQwLDE2LCRhY2MxMworCWxkd3gscwkkYWNjMTEoJHRibCksJGFjYzExCisJX3NybQkkdDEsOCwkYWNjMTQKKwlsZHd4LHMJJGFjYzEyKCR0YmwpLCRhY2MxMgorCV9zcm0JJHQyLDAsJGFjYzE1CisJbGR3eCxzCSRhY2MxMygkdGJsKSwkYWNjMTMKKwkJX3JvcgkkYWNjMSw4LCRhY2MxCisJbGR3eCxzCSRhY2MxNCgkdGJsKSwkYWNjMTQKKworCQlfcm9yCSRhY2MyLDE2LCRhY2MyCisJCXhvcgkkYWNjMCwkczAsJHMwCisJbGR3eCxzCSRhY2MxNSgkdGJsKSwkYWNjMTUKKwkJX3JvcgkkYWNjMywyNCwkYWNjMworCQl4b3IJJGFjYzEsJHMwLCRzMAorCWxkdwkxNigka2V5KSwkdDAKKwkJX3JvcgkkYWNjNSw4LCRhY2M1CisJCXhvcgkkYWNjMiwkczAsJHMwCisJbGR3CTIwKCRrZXkpLCR0MQorCQlfcm9yCSRhY2M2LDE2LCRhY2M2CisJCXhvcgkkYWNjMywkczAsJHMwCisJbGR3CTI0KCRrZXkpLCR0MgorCQlfcm9yCSRhY2M3LDI0LCRhY2M3CisJCXhvcgkkYWNjNCwkczEsJHMxCisJbGR3CTI4KCRrZXkpLCR0MworCQlfcm9yCSRhY2M5LDgsJGFjYzkKKwkJeG9yCSRhY2M1LCRzMSwkczEKKwlsZHcJMTAyNCswKCR0YmwpLCVyMAkJOyBwcmVmZXRjaCB0ZTQKKwkJX3JvcgkkYWNjMTAsMTYsJGFjYzEwCisJCXhvcgkkYWNjNiwkczEsJHMxCisJbGR3CTEwMjQrMzIoJHRibCksJXIwCQk7IHByZWZldGNoIHRlNAorCQlfcm9yCSRhY2MxMSwyNCwkYWNjMTEKKwkJeG9yCSRhY2M3LCRzMSwkczEKKwlsZHcJMTAyNCs2NCgkdGJsKSwlcjAJCTsgcHJlZmV0Y2ggdGU0CisJCV9yb3IJJGFjYzEzLDgsJGFjYzEzCisJCXhvcgkkYWNjOCwkczIsJHMyCisJbGR3CTEwMjQrOTYoJHRibCksJXIwCQk7IHByZWZldGNoIHRlNAorCQlfcm9yCSRhY2MxNCwxNiwkYWNjMTQKKwkJeG9yCSRhY2M5LCRzMiwkczIKKwlsZHcJMTAyNCsxMjgoJHRibCksJXIwCQk7IHByZWZldGNoIHRlNAorCQlfcm9yCSRhY2MxNSwyNCwkYWNjMTUKKwkJeG9yCSRhY2MxMCwkczIsJHMyCisJbGR3CTEwMjQrMTYwKCR0YmwpLCVyMAkJOyBwcmVmZXRjaCB0ZTQKKwlfc3JtCSRzMCwyNCwkYWNjMAorCQl4b3IJJGFjYzExLCRzMiwkczIKKwlsZHcJMTAyNCsxOTIoJHRibCksJXIwCQk7IHByZWZldGNoIHRlNAorCQl4b3IJJGFjYzEyLCRhY2MxNCwkYWNjMTQKKwkJeG9yCSRhY2MxMywkczMsJHMzCisJbGR3CTEwMjQrMjI0KCR0YmwpLCVyMAkJOyBwcmVmZXRjaCB0ZTQKKwlfc3JtCSRzMSwxNiwkYWNjMQorCQl4b3IJJGFjYzE0LCRzMywkczMKKwliCUxcJGVuY19sb29wCisJCXhvcgkkYWNjMTUsJHMzLCRzMworCisJLkFMSUdOCTE2CitMXCRlbmNfbGFzdAorCWxkbwkxMDI0KCR0YmwpLCRyb3VuZHMKKwkJX3JvcgkkYWNjMSw4LCRhY2MxCisJCXhvcgkkYWNjMCwkdDAsJHQwCisJbGR3CTAoJGtleSksJHMwCisJCV9yb3IJJGFjYzIsMTYsJGFjYzIKKwkJeG9yCSRhY2MxLCR0MCwkdDAKKwlsZHcJNCgka2V5KSwkczEKKwkJX3JvcgkkYWNjMywyNCwkYWNjMworCQl4b3IJJGFjYzIsJHQwLCR0MAorCWxkdwk4KCRrZXkpLCRzMgorCQlfcm9yCSRhY2M1LDgsJGFjYzUKKwkJeG9yCSRhY2MzLCR0MCwkdDAKKwlsZHcJMTIoJGtleSksJHMzCisJCV9yb3IJJGFjYzYsMTYsJGFjYzYKKwkJeG9yCSRhY2M0LCR0MSwkdDEKKwkJX3JvcgkkYWNjNywyNCwkYWNjNworCQl4b3IJJGFjYzUsJHQxLCR0MQorCQlfcm9yCSRhY2M5LDgsJGFjYzkKKwkJeG9yCSRhY2M2LCR0MSwkdDEKKwkJX3JvcgkkYWNjMTAsMTYsJGFjYzEwCisJCXhvcgkkYWNjNywkdDEsJHQxCisJCV9yb3IJJGFjYzExLDI0LCRhY2MxMQorCQl4b3IJJGFjYzgsJHQyLCR0MgorCQlfcm9yCSRhY2MxMyw4LCRhY2MxMworCQl4b3IJJGFjYzksJHQyLCR0MgorCQlfcm9yCSRhY2MxNCwxNiwkYWNjMTQKKwkJeG9yCSRhY2MxMCwkdDIsJHQyCisJCV9yb3IJJGFjYzE1LDI0LCRhY2MxNQorCQl4b3IJJGFjYzExLCR0MiwkdDIKKwkJeG9yCSRhY2MxMiwkYWNjMTQsJGFjYzE0CisJCXhvcgkkYWNjMTMsJHQzLCR0MworCV9zcm0JJHQwLDI0LCRhY2MwCisJCXhvcgkkYWNjMTQsJHQzLCR0MworCV9zcm0JJHQxLDE2LCRhY2MxCisJCXhvcgkkYWNjMTUsJHQzLCR0MworCisJX3NybQkkdDIsOCwkYWNjMgorCWxkYngJJGFjYzAoJHJvdW5kcyksJGFjYzAKKwlfc3JtCSR0MSwyNCwkYWNjNAorCWxkYngJJGFjYzEoJHJvdW5kcyksJGFjYzEKKwlfc3JtCSR0MiwxNiwkYWNjNQorCV9zcm0JJHQzLDAsJGFjYzMKKwlsZGJ4CSRhY2MyKCRyb3VuZHMpLCRhY2MyCisJbGRieAkkYWNjMygkcm91bmRzKSwkYWNjMworCV9zcm0JJHQzLDgsJGFjYzYKKwlsZGJ4CSRhY2M0KCRyb3VuZHMpLCRhY2M0CisJX3NybQkkdDIsMjQsJGFjYzgKKwlsZGJ4CSRhY2M1KCRyb3VuZHMpLCRhY2M1CisJX3NybQkkdDMsMTYsJGFjYzkKKwlfc3JtCSR0MCwwLCRhY2M3CisJbGRieAkkYWNjNigkcm91bmRzKSwkYWNjNgorCWxkYngJJGFjYzcoJHJvdW5kcyksJGFjYzcKKwlfc3JtCSR0MCw4LCRhY2MxMAorCWxkYngJJGFjYzgoJHJvdW5kcyksJGFjYzgKKwlfc3JtCSR0MywyNCwkYWNjMTIKKwlsZGJ4CSRhY2M5KCRyb3VuZHMpLCRhY2M5CisJX3NybQkkdDAsMTYsJGFjYzEzCisJX3NybQkkdDEsMCwkYWNjMTEKKwlsZGJ4CSRhY2MxMCgkcm91bmRzKSwkYWNjMTAKKwlfc3JtCSR0MSw4LCRhY2MxNAorCWxkYngJJGFjYzExKCRyb3VuZHMpLCRhY2MxMQorCWxkYngJJGFjYzEyKCRyb3VuZHMpLCRhY2MxMgorCWxkYngJJGFjYzEzKCRyb3VuZHMpLCRhY2MxMworCV9zcm0JJHQyLDAsJGFjYzE1CisJbGRieAkkYWNjMTQoJHJvdW5kcyksJGFjYzE0CisKKwkJZGVwCSRhY2MwLDcsOCwkYWNjMworCWxkYngJJGFjYzE1KCRyb3VuZHMpLCRhY2MxNQorCQlkZXAJJGFjYzQsNyw4LCRhY2M3CisJCWRlcAkkYWNjMSwxNSw4LCRhY2MzCisJCWRlcAkkYWNjNSwxNSw4LCRhY2M3CisJCWRlcAkkYWNjMiwyMyw4LCRhY2MzCisJCWRlcAkkYWNjNiwyMyw4LCRhY2M3CisJCXhvcgkkYWNjMywkczAsJHMwCisJCXhvcgkkYWNjNywkczEsJHMxCisJCWRlcAkkYWNjOCw3LDgsJGFjYzExCisJCWRlcAkkYWNjMTIsNyw4LCRhY2MxNQorCQlkZXAJJGFjYzksMTUsOCwkYWNjMTEKKwkJZGVwCSRhY2MxMywxNSw4LCRhY2MxNQorCQlkZXAJJGFjYzEwLDIzLDgsJGFjYzExCisJCWRlcAkkYWNjMTQsMjMsOCwkYWNjMTUKKwkJeG9yCSRhY2MxMSwkczIsJHMyCisKKwlidgkoJXIzMSkKKwkuRVhJVAorCQl4b3IJJGFjYzE1LCRzMywkczMKKwkuUFJPQ0VORAorCisJLkFMSUdOCTY0CitMXCRBRVNfVGUKKwkuV09SRAkweGM2NjM2M2E1LCAweGY4N2M3Yzg0LCAweGVlNzc3Nzk5LCAweGY2N2I3YjhkCisJLldPUkQJMHhmZmYyZjIwZCwgMHhkNjZiNmJiZCwgMHhkZTZmNmZiMSwgMHg5MWM1YzU1NAorCS5XT1JECTB4NjAzMDMwNTAsIDB4MDIwMTAxMDMsIDB4Y2U2NzY3YTksIDB4NTYyYjJiN2QKKwkuV09SRAkweGU3ZmVmZTE5LCAweGI1ZDdkNzYyLCAweDRkYWJhYmU2LCAweGVjNzY3NjlhCisJLldPUkQJMHg4ZmNhY2E0NSwgMHgxZjgyODI5ZCwgMHg4OWM5Yzk0MCwgMHhmYTdkN2Q4NworCS5XT1JECTB4ZWZmYWZhMTUsIDB4YjI1OTU5ZWIsIDB4OGU0NzQ3YzksIDB4ZmJmMGYwMGIKKwkuV09SRAkweDQxYWRhZGVjLCAweGIzZDRkNDY3LCAweDVmYTJhMmZkLCAweDQ1YWZhZmVhCisJLldPUkQJMHgyMzljOWNiZiwgMHg1M2E0YTRmNywgMHhlNDcyNzI5NiwgMHg5YmMwYzA1YgorCS5XT1JECTB4NzViN2I3YzIsIDB4ZTFmZGZkMWMsIDB4M2Q5MzkzYWUsIDB4NGMyNjI2NmEKKwkuV09SRAkweDZjMzYzNjVhLCAweDdlM2YzZjQxLCAweGY1ZjdmNzAyLCAweDgzY2NjYzRmCisJLldPUkQJMHg2ODM0MzQ1YywgMHg1MWE1YTVmNCwgMHhkMWU1ZTUzNCwgMHhmOWYxZjEwOAorCS5XT1JECTB4ZTI3MTcxOTMsIDB4YWJkOGQ4NzMsIDB4NjIzMTMxNTMsIDB4MmExNTE1M2YKKwkuV09SRAkweDA4MDQwNDBjLCAweDk1YzdjNzUyLCAweDQ2MjMyMzY1LCAweDlkYzNjMzVlCisJLldPUkQJMHgzMDE4MTgyOCwgMHgzNzk2OTZhMSwgMHgwYTA1MDUwZiwgMHgyZjlhOWFiNQorCS5XT1JECTB4MGUwNzA3MDksIDB4MjQxMjEyMzYsIDB4MWI4MDgwOWIsIDB4ZGZlMmUyM2QKKwkuV09SRAkweGNkZWJlYjI2LCAweDRlMjcyNzY5LCAweDdmYjJiMmNkLCAweGVhNzU3NTlmCisJLldPUkQJMHgxMjA5MDkxYiwgMHgxZDgzODM5ZSwgMHg1ODJjMmM3NCwgMHgzNDFhMWEyZQorCS5XT1JECTB4MzYxYjFiMmQsIDB4ZGM2ZTZlYjIsIDB4YjQ1YTVhZWUsIDB4NWJhMGEwZmIKKwkuV09SRAkweGE0NTI1MmY2LCAweDc2M2IzYjRkLCAweGI3ZDZkNjYxLCAweDdkYjNiM2NlCisJLldPUkQJMHg1MjI5Mjk3YiwgMHhkZGUzZTMzZSwgMHg1ZTJmMmY3MSwgMHgxMzg0ODQ5NworCS5XT1JECTB4YTY1MzUzZjUsIDB4YjlkMWQxNjgsIDB4MDAwMDAwMDAsIDB4YzFlZGVkMmMKKwkuV09SRAkweDQwMjAyMDYwLCAweGUzZmNmYzFmLCAweDc5YjFiMWM4LCAweGI2NWI1YmVkCisJLldPUkQJMHhkNDZhNmFiZSwgMHg4ZGNiY2I0NiwgMHg2N2JlYmVkOSwgMHg3MjM5Mzk0YgorCS5XT1JECTB4OTQ0YTRhZGUsIDB4OTg0YzRjZDQsIDB4YjA1ODU4ZTgsIDB4ODVjZmNmNGEKKwkuV09SRAkweGJiZDBkMDZiLCAweGM1ZWZlZjJhLCAweDRmYWFhYWU1LCAweGVkZmJmYjE2CisJLldPUkQJMHg4NjQzNDNjNSwgMHg5YTRkNGRkNywgMHg2NjMzMzM1NSwgMHgxMTg1ODU5NAorCS5XT1JECTB4OGE0NTQ1Y2YsIDB4ZTlmOWY5MTAsIDB4MDQwMjAyMDYsIDB4ZmU3ZjdmODEKKwkuV09SRAkweGEwNTA1MGYwLCAweDc4M2MzYzQ0LCAweDI1OWY5ZmJhLCAweDRiYThhOGUzCisJLldPUkQJMHhhMjUxNTFmMywgMHg1ZGEzYTNmZSwgMHg4MDQwNDBjMCwgMHgwNThmOGY4YQorCS5XT1JECTB4M2Y5MjkyYWQsIDB4MjE5ZDlkYmMsIDB4NzAzODM4NDgsIDB4ZjFmNWY1MDQKKwkuV09SRAkweDYzYmNiY2RmLCAweDc3YjZiNmMxLCAweGFmZGFkYTc1LCAweDQyMjEyMTYzCisJLldPUkQJMHgyMDEwMTAzMCwgMHhlNWZmZmYxYSwgMHhmZGYzZjMwZSwgMHhiZmQyZDI2ZAorCS5XT1JECTB4ODFjZGNkNGMsIDB4MTgwYzBjMTQsIDB4MjYxMzEzMzUsIDB4YzNlY2VjMmYKKwkuV09SRAkweGJlNWY1ZmUxLCAweDM1OTc5N2EyLCAweDg4NDQ0NGNjLCAweDJlMTcxNzM5CisJLldPUkQJMHg5M2M0YzQ1NywgMHg1NWE3YTdmMiwgMHhmYzdlN2U4MiwgMHg3YTNkM2Q0NworCS5XT1JECTB4Yzg2NDY0YWMsIDB4YmE1ZDVkZTcsIDB4MzIxOTE5MmIsIDB4ZTY3MzczOTUKKwkuV09SRAkweGMwNjA2MGEwLCAweDE5ODE4MTk4LCAweDllNGY0ZmQxLCAweGEzZGNkYzdmCisJLldPUkQJMHg0NDIyMjI2NiwgMHg1NDJhMmE3ZSwgMHgzYjkwOTBhYiwgMHgwYjg4ODg4MworCS5XT1JECTB4OGM0NjQ2Y2EsIDB4YzdlZWVlMjksIDB4NmJiOGI4ZDMsIDB4MjgxNDE0M2MKKwkuV09SRAkweGE3ZGVkZTc5LCAweGJjNWU1ZWUyLCAweDE2MGIwYjFkLCAweGFkZGJkYjc2CisJLldPUkQJMHhkYmUwZTAzYiwgMHg2NDMyMzI1NiwgMHg3NDNhM2E0ZSwgMHgxNDBhMGExZQorCS5XT1JECTB4OTI0OTQ5ZGIsIDB4MGMwNjA2MGEsIDB4NDgyNDI0NmMsIDB4Yjg1YzVjZTQKKwkuV09SRAkweDlmYzJjMjVkLCAweGJkZDNkMzZlLCAweDQzYWNhY2VmLCAweGM0NjI2MmE2CisJLldPUkQJMHgzOTkxOTFhOCwgMHgzMTk1OTVhNCwgMHhkM2U0ZTQzNywgMHhmMjc5Nzk4YgorCS5XT1JECTB4ZDVlN2U3MzIsIDB4OGJjOGM4NDMsIDB4NmUzNzM3NTksIDB4ZGE2ZDZkYjcKKwkuV09SRAkweDAxOGQ4ZDhjLCAweGIxZDVkNTY0LCAweDljNGU0ZWQyLCAweDQ5YTlhOWUwCisJLldPUkQJMHhkODZjNmNiNCwgMHhhYzU2NTZmYSwgMHhmM2Y0ZjQwNywgMHhjZmVhZWEyNQorCS5XT1JECTB4Y2E2NTY1YWYsIDB4ZjQ3YTdhOGUsIDB4NDdhZWFlZTksIDB4MTAwODA4MTgKKwkuV09SRAkweDZmYmFiYWQ1LCAweGYwNzg3ODg4LCAweDRhMjUyNTZmLCAweDVjMmUyZTcyCisJLldPUkQJMHgzODFjMWMyNCwgMHg1N2E2YTZmMSwgMHg3M2I0YjRjNywgMHg5N2M2YzY1MQorCS5XT1JECTB4Y2JlOGU4MjMsIDB4YTFkZGRkN2MsIDB4ZTg3NDc0OWMsIDB4M2UxZjFmMjEKKwkuV09SRAkweDk2NGI0YmRkLCAweDYxYmRiZGRjLCAweDBkOGI4Yjg2LCAweDBmOGE4YTg1CisJLldPUkQJMHhlMDcwNzA5MCwgMHg3YzNlM2U0MiwgMHg3MWI1YjVjNCwgMHhjYzY2NjZhYQorCS5XT1JECTB4OTA0ODQ4ZDgsIDB4MDYwMzAzMDUsIDB4ZjdmNmY2MDEsIDB4MWMwZTBlMTIKKwkuV09SRAkweGMyNjE2MWEzLCAweDZhMzUzNTVmLCAweGFlNTc1N2Y5LCAweDY5YjliOWQwCisJLldPUkQJMHgxNzg2ODY5MSwgMHg5OWMxYzE1OCwgMHgzYTFkMWQyNywgMHgyNzllOWViOQorCS5XT1JECTB4ZDllMWUxMzgsIDB4ZWJmOGY4MTMsIDB4MmI5ODk4YjMsIDB4MjIxMTExMzMKKwkuV09SRAkweGQyNjk2OWJiLCAweGE5ZDlkOTcwLCAweDA3OGU4ZTg5LCAweDMzOTQ5NGE3CisJLldPUkQJMHgyZDliOWJiNiwgMHgzYzFlMWUyMiwgMHgxNTg3ODc5MiwgMHhjOWU5ZTkyMAorCS5XT1JECTB4ODdjZWNlNDksIDB4YWE1NTU1ZmYsIDB4NTAyODI4NzgsIDB4YTVkZmRmN2EKKwkuV09SRAkweDAzOGM4YzhmLCAweDU5YTFhMWY4LCAweDA5ODk4OTgwLCAweDFhMGQwZDE3CisJLldPUkQJMHg2NWJmYmZkYSwgMHhkN2U2ZTYzMSwgMHg4NDQyNDJjNiwgMHhkMDY4NjhiOAorCS5XT1JECTB4ODI0MTQxYzMsIDB4Mjk5OTk5YjAsIDB4NWEyZDJkNzcsIDB4MWUwZjBmMTEKKwkuV09SRAkweDdiYjBiMGNiLCAweGE4NTQ1NGZjLCAweDZkYmJiYmQ2LCAweDJjMTYxNjNhCisJLkJZVEUJMHg2MywgMHg3YywgMHg3NywgMHg3YiwgMHhmMiwgMHg2YiwgMHg2ZiwgMHhjNQorCS5CWVRFCTB4MzAsIDB4MDEsIDB4NjcsIDB4MmIsIDB4ZmUsIDB4ZDcsIDB4YWIsIDB4NzYKKwkuQllURQkweGNhLCAweDgyLCAweGM5LCAweDdkLCAweGZhLCAweDU5LCAweDQ3LCAweGYwCisJLkJZVEUJMHhhZCwgMHhkNCwgMHhhMiwgMHhhZiwgMHg5YywgMHhhNCwgMHg3MiwgMHhjMAorCS5CWVRFCTB4YjcsIDB4ZmQsIDB4OTMsIDB4MjYsIDB4MzYsIDB4M2YsIDB4ZjcsIDB4Y2MKKwkuQllURQkweDM0LCAweGE1LCAweGU1LCAweGYxLCAweDcxLCAweGQ4LCAweDMxLCAweDE1CisJLkJZVEUJMHgwNCwgMHhjNywgMHgyMywgMHhjMywgMHgxOCwgMHg5NiwgMHgwNSwgMHg5YQorCS5CWVRFCTB4MDcsIDB4MTIsIDB4ODAsIDB4ZTIsIDB4ZWIsIDB4MjcsIDB4YjIsIDB4NzUKKwkuQllURQkweDA5LCAweDgzLCAweDJjLCAweDFhLCAweDFiLCAweDZlLCAweDVhLCAweGEwCisJLkJZVEUJMHg1MiwgMHgzYiwgMHhkNiwgMHhiMywgMHgyOSwgMHhlMywgMHgyZiwgMHg4NAorCS5CWVRFCTB4NTMsIDB4ZDEsIDB4MDAsIDB4ZWQsIDB4MjAsIDB4ZmMsIDB4YjEsIDB4NWIKKwkuQllURQkweDZhLCAweGNiLCAweGJlLCAweDM5LCAweDRhLCAweDRjLCAweDU4LCAweGNmCisJLkJZVEUJMHhkMCwgMHhlZiwgMHhhYSwgMHhmYiwgMHg0MywgMHg0ZCwgMHgzMywgMHg4NQorCS5CWVRFCTB4NDUsIDB4ZjksIDB4MDIsIDB4N2YsIDB4NTAsIDB4M2MsIDB4OWYsIDB4YTgKKwkuQllURQkweDUxLCAweGEzLCAweDQwLCAweDhmLCAweDkyLCAweDlkLCAweDM4LCAweGY1CisJLkJZVEUJMHhiYywgMHhiNiwgMHhkYSwgMHgyMSwgMHgxMCwgMHhmZiwgMHhmMywgMHhkMgorCS5CWVRFCTB4Y2QsIDB4MGMsIDB4MTMsIDB4ZWMsIDB4NWYsIDB4OTcsIDB4NDQsIDB4MTcKKwkuQllURQkweGM0LCAweGE3LCAweDdlLCAweDNkLCAweDY0LCAweDVkLCAweDE5LCAweDczCisJLkJZVEUJMHg2MCwgMHg4MSwgMHg0ZiwgMHhkYywgMHgyMiwgMHgyYSwgMHg5MCwgMHg4OAorCS5CWVRFCTB4NDYsIDB4ZWUsIDB4YjgsIDB4MTQsIDB4ZGUsIDB4NWUsIDB4MGIsIDB4ZGIKKwkuQllURQkweGUwLCAweDMyLCAweDNhLCAweDBhLCAweDQ5LCAweDA2LCAweDI0LCAweDVjCisJLkJZVEUJMHhjMiwgMHhkMywgMHhhYywgMHg2MiwgMHg5MSwgMHg5NSwgMHhlNCwgMHg3OQorCS5CWVRFCTB4ZTcsIDB4YzgsIDB4MzcsIDB4NmQsIDB4OGQsIDB4ZDUsIDB4NGUsIDB4YTkKKwkuQllURQkweDZjLCAweDU2LCAweGY0LCAweGVhLCAweDY1LCAweDdhLCAweGFlLCAweDA4CisJLkJZVEUJMHhiYSwgMHg3OCwgMHgyNSwgMHgyZSwgMHgxYywgMHhhNiwgMHhiNCwgMHhjNgorCS5CWVRFCTB4ZTgsIDB4ZGQsIDB4NzQsIDB4MWYsIDB4NGIsIDB4YmQsIDB4OGIsIDB4OGEKKwkuQllURQkweDcwLCAweDNlLCAweGI1LCAweDY2LCAweDQ4LCAweDAzLCAweGY2LCAweDBlCisJLkJZVEUJMHg2MSwgMHgzNSwgMHg1NywgMHhiOSwgMHg4NiwgMHhjMSwgMHgxZCwgMHg5ZQorCS5CWVRFCTB4ZTEsIDB4ZjgsIDB4OTgsIDB4MTEsIDB4NjksIDB4ZDksIDB4OGUsIDB4OTQKKwkuQllURQkweDliLCAweDFlLCAweDg3LCAweGU5LCAweGNlLCAweDU1LCAweDI4LCAweGRmCisJLkJZVEUJMHg4YywgMHhhMSwgMHg4OSwgMHgwZCwgMHhiZiwgMHhlNiwgMHg0MiwgMHg2OAorCS5CWVRFCTB4NDEsIDB4OTksIDB4MmQsIDB4MGYsIDB4YjAsIDB4NTQsIDB4YmIsIDB4MTYKK19fXworCiskY29kZS49PDxfX187CisJLkVYUE9SVAlBRVNfZGVjcnlwdCxFTlRSWSxBUkdXMD1HUixBUkdXMT1HUixBUkdXMj1HUgorCS5BTElHTgkxNgorQUVTX2RlY3J5cHQKKwkuUFJPQworCS5DQUxMSU5GTwlGUkFNRT1gJEZSQU1FLTE2KiRTSVpFX1RgLE5PX0NBTExTLFNBVkVfUlAsRU5UUllfR1I9MTgKKwkuRU5UUlkKKwkkUFVTSAklcjIsLSRTQVZFRF9SUCglc3ApCTsgc3RhbmRhcmQgcHJvbG9ndWUKKwkkUFVTSE1BCSVyMywkRlJBTUUoJXNwKQorCSRQVVNICSVyNCxgLSRGUkFNRSsxKiRTSVpFX1RgKCVzcCkKKwkkUFVTSAklcjUsYC0kRlJBTUUrMiokU0laRV9UYCglc3ApCisJJFBVU0gJJXI2LGAtJEZSQU1FKzMqJFNJWkVfVGAoJXNwKQorCSRQVVNICSVyNyxgLSRGUkFNRSs0KiRTSVpFX1RgKCVzcCkKKwkkUFVTSAklcjgsYC0kRlJBTUUrNSokU0laRV9UYCglc3ApCisJJFBVU0gJJXI5LGAtJEZSQU1FKzYqJFNJWkVfVGAoJXNwKQorCSRQVVNICSVyMTAsYC0kRlJBTUUrNyokU0laRV9UYCglc3ApCisJJFBVU0gJJXIxMSxgLSRGUkFNRSs4KiRTSVpFX1RgKCVzcCkKKwkkUFVTSAklcjEyLGAtJEZSQU1FKzkqJFNJWkVfVGAoJXNwKQorCSRQVVNICSVyMTMsYC0kRlJBTUUrMTAqJFNJWkVfVGAoJXNwKQorCSRQVVNICSVyMTQsYC0kRlJBTUUrMTEqJFNJWkVfVGAoJXNwKQorCSRQVVNICSVyMTUsYC0kRlJBTUUrMTIqJFNJWkVfVGAoJXNwKQorCSRQVVNICSVyMTYsYC0kRlJBTUUrMTMqJFNJWkVfVGAoJXNwKQorCSRQVVNICSVyMTcsYC0kRlJBTUUrMTQqJFNJWkVfVGAoJXNwKQorCSRQVVNICSVyMTgsYC0kRlJBTUUrMTUqJFNJWkVfVGAoJXNwKQorCisJYmxyCSVyMCwkdGJsCisJbGRpCTMsJHQwCitMXCRkZWNfcGljCisJYW5kY20JJHRibCwkdDAsJHRibAorCWxkbwlMXCRBRVNfVGQtTFwkZGVjX3BpYygkdGJsKSwkdGJsCisKKwlhbmQJJGlucCwkdDAsJHQwCisJc3ViCSRpbnAsJHQwLCRpbnAKKwlsZHcJMCgkaW5wKSwkczAKKwlsZHcJNCgkaW5wKSwkczEKKwlsZHcJOCgkaW5wKSwkczIKKwljb21pYiw9CTAsJHQwLExcJGRlY19pbnBfYWxpZ25lZAorCWxkdwkxMigkaW5wKSwkczMKKworCXNoM2FkZGwJJHQwLCVyMCwkdDAKKwlzdWJpCTMyLCR0MCwkdDAKKwltdGN0bAkkdDAsJWNyMTEKKwlsZHcJMTYoJGlucCksJHQxCisJdnNoZAkkczAsJHMxLCRzMAorCXZzaGQJJHMxLCRzMiwkczEKKwl2c2hkCSRzMiwkczMsJHMyCisJdnNoZAkkczMsJHQxLCRzMworCitMXCRkZWNfaW5wX2FsaWduZWQKKwlibAlfcGFyaXNjX0FFU19kZWNyeXB0LCVyMzEKKwlub3AKKworCWV4dHJ1LDw+ICRvdXQsMzEsMiwlcjAKKwliCUxcJGRlY19vdXRfYWxpZ25lZAorCW5vcAorCisJX3NybQkkczAsMjQsJGFjYzAKKwlfc3JtCSRzMCwxNiwkYWNjMQorCXN0YgkkYWNjMCwwKCRvdXQpCisJX3NybQkkczAsOCwkYWNjMgorCXN0YgkkYWNjMSwxKCRvdXQpCisJX3NybQkkczEsMjQsJGFjYzQKKwlzdGIJJGFjYzIsMigkb3V0KQorCV9zcm0JJHMxLDE2LCRhY2M1CisJc3RiCSRzMCwzKCRvdXQpCisJX3NybQkkczEsOCwkYWNjNgorCXN0YgkkYWNjNCw0KCRvdXQpCisJX3NybQkkczIsMjQsJGFjYzAKKwlzdGIJJGFjYzUsNSgkb3V0KQorCV9zcm0JJHMyLDE2LCRhY2MxCisJc3RiCSRhY2M2LDYoJG91dCkKKwlfc3JtCSRzMiw4LCRhY2MyCisJc3RiCSRzMSw3KCRvdXQpCisJX3NybQkkczMsMjQsJGFjYzQKKwlzdGIJJGFjYzAsOCgkb3V0KQorCV9zcm0JJHMzLDE2LCRhY2M1CisJc3RiCSRhY2MxLDkoJG91dCkKKwlfc3JtCSRzMyw4LCRhY2M2CisJc3RiCSRhY2MyLDEwKCRvdXQpCisJc3RiCSRzMiwxMSgkb3V0KQorCXN0YgkkYWNjNCwxMigkb3V0KQorCXN0YgkkYWNjNSwxMygkb3V0KQorCXN0YgkkYWNjNiwxNCgkb3V0KQorCWIJTFwkZGVjX2RvbmUKKwlzdGIJJHMzLDE1KCRvdXQpCisKK0xcJGRlY19vdXRfYWxpZ25lZAorCXN0dwkkczAsMCgkb3V0KQorCXN0dwkkczEsNCgkb3V0KQorCXN0dwkkczIsOCgkb3V0KQorCXN0dwkkczMsMTIoJG91dCkKKworTFwkZGVjX2RvbmUKKwkkUE9QCWAtJEZSQU1FLSRTQVZFRF9SUGAoJXNwKSwlcjIJOyBzdGFuZGFyZCBlcGlsb2d1ZQorCSRQT1AJYC0kRlJBTUUrMSokU0laRV9UYCglc3ApLCVyNAorCSRQT1AJYC0kRlJBTUUrMiokU0laRV9UYCglc3ApLCVyNQorCSRQT1AJYC0kRlJBTUUrMyokU0laRV9UYCglc3ApLCVyNgorCSRQT1AJYC0kRlJBTUUrNCokU0laRV9UYCglc3ApLCVyNworCSRQT1AJYC0kRlJBTUUrNSokU0laRV9UYCglc3ApLCVyOAorCSRQT1AJYC0kRlJBTUUrNiokU0laRV9UYCglc3ApLCVyOQorCSRQT1AJYC0kRlJBTUUrNyokU0laRV9UYCglc3ApLCVyMTAKKwkkUE9QCWAtJEZSQU1FKzgqJFNJWkVfVGAoJXNwKSwlcjExCisJJFBPUAlgLSRGUkFNRSs5KiRTSVpFX1RgKCVzcCksJXIxMgorCSRQT1AJYC0kRlJBTUUrMTAqJFNJWkVfVGAoJXNwKSwlcjEzCisJJFBPUAlgLSRGUkFNRSsxMSokU0laRV9UYCglc3ApLCVyMTQKKwkkUE9QCWAtJEZSQU1FKzEyKiRTSVpFX1RgKCVzcCksJXIxNQorCSRQT1AJYC0kRlJBTUUrMTMqJFNJWkVfVGAoJXNwKSwlcjE2CisJJFBPUAlgLSRGUkFNRSsxNCokU0laRV9UYCglc3ApLCVyMTcKKwkkUE9QCWAtJEZSQU1FKzE1KiRTSVpFX1RgKCVzcCksJXIxOAorCWJ2CSglcjIpCisJLkVYSVQKKwkkUE9QTUIJLSRGUkFNRSglc3ApLCVyMworCS5QUk9DRU5ECisKKwkuQUxJR04JMTYKK19wYXJpc2NfQUVTX2RlY3J5cHQKKwkuUFJPQworCS5DQUxMSU5GTwlNSUxMSUNPREUKKwkuRU5UUlkKKwlsZHcJMjQwKCRrZXkpLCRyb3VuZHMKKwlsZHcJMCgka2V5KSwkdDAKKwlsZHcJNCgka2V5KSwkdDEKKwlsZHcJOCgka2V5KSwkdDIKKwlsZHcJMTIoJGtleSksJHQzCisJX3NybQkkcm91bmRzLDEsJHJvdW5kcworCXhvcgkkdDAsJHMwLCRzMAorCWxkdwkxNigka2V5KSwkdDAKKwl4b3IJJHQxLCRzMSwkczEKKwlsZHcJMjAoJGtleSksJHQxCisJX3NybQkkczAsMjQsJGFjYzAKKwl4b3IJJHQyLCRzMiwkczIKKwlsZHcJMjQoJGtleSksJHQyCisJeG9yCSR0MywkczMsJHMzCisJbGR3CTI4KCRrZXkpLCR0MworCV9zcm0JJHMzLDE2LCRhY2MxCitMXCRkZWNfbG9vcAorCV9zcm0JJHMyLDgsJGFjYzIKKwlsZHd4LHMJJGFjYzAoJHRibCksJGFjYzAKKwlfc3JtCSRzMSwwLCRhY2MzCisJbGR3eCxzCSRhY2MxKCR0YmwpLCRhY2MxCisJX3NybQkkczEsMjQsJGFjYzQKKwlsZHd4LHMJJGFjYzIoJHRibCksJGFjYzIKKwlfc3JtCSRzMCwxNiwkYWNjNQorCWxkd3gscwkkYWNjMygkdGJsKSwkYWNjMworCV9zcm0JJHMzLDgsJGFjYzYKKwlsZHd4LHMJJGFjYzQoJHRibCksJGFjYzQKKwlfc3JtCSRzMiwwLCRhY2M3CisJbGR3eCxzCSRhY2M1KCR0YmwpLCRhY2M1CisJX3NybQkkczIsMjQsJGFjYzgKKwlsZHd4LHMJJGFjYzYoJHRibCksJGFjYzYKKwlfc3JtCSRzMSwxNiwkYWNjOQorCWxkd3gscwkkYWNjNygkdGJsKSwkYWNjNworCV9zcm0JJHMwLDgsJGFjYzEwCisJbGR3eCxzCSRhY2M4KCR0YmwpLCRhY2M4CisJX3NybQkkczMsMCwkYWNjMTEKKwlsZHd4LHMJJGFjYzkoJHRibCksJGFjYzkKKwlfc3JtCSRzMywyNCwkYWNjMTIKKwlsZHd4LHMJJGFjYzEwKCR0YmwpLCRhY2MxMAorCV9zcm0JJHMyLDE2LCRhY2MxMworCWxkd3gscwkkYWNjMTEoJHRibCksJGFjYzExCisJX3NybQkkczEsOCwkYWNjMTQKKwlsZHd4LHMJJGFjYzEyKCR0YmwpLCRhY2MxMgorCV9zcm0JJHMwLDAsJGFjYzE1CisJbGR3eCxzCSRhY2MxMygkdGJsKSwkYWNjMTMKKwlsZHd4LHMJJGFjYzE0KCR0YmwpLCRhY2MxNAorCWxkd3gscwkkYWNjMTUoJHRibCksJGFjYzE1CisJYWRkaWIsPSAtMSwkcm91bmRzLExcJGRlY19sYXN0CisJbGRvCTMyKCRrZXkpLCRrZXkKKworCQlfcm9yCSRhY2MxLDgsJGFjYzEKKwkJeG9yCSRhY2MwLCR0MCwkdDAKKwlsZHcJMCgka2V5KSwkczAKKwkJX3JvcgkkYWNjMiwxNiwkYWNjMgorCQl4b3IJJGFjYzEsJHQwLCR0MAorCWxkdwk0KCRrZXkpLCRzMQorCQlfcm9yCSRhY2MzLDI0LCRhY2MzCisJCXhvcgkkYWNjMiwkdDAsJHQwCisJbGR3CTgoJGtleSksJHMyCisJCV9yb3IJJGFjYzUsOCwkYWNjNQorCQl4b3IJJGFjYzMsJHQwLCR0MAorCWxkdwkxMigka2V5KSwkczMKKwkJX3JvcgkkYWNjNiwxNiwkYWNjNgorCQl4b3IJJGFjYzQsJHQxLCR0MQorCQlfcm9yCSRhY2M3LDI0LCRhY2M3CisJCXhvcgkkYWNjNSwkdDEsJHQxCisJCV9yb3IJJGFjYzksOCwkYWNjOQorCQl4b3IJJGFjYzYsJHQxLCR0MQorCQlfcm9yCSRhY2MxMCwxNiwkYWNjMTAKKwkJeG9yCSRhY2M3LCR0MSwkdDEKKwkJX3JvcgkkYWNjMTEsMjQsJGFjYzExCisJCXhvcgkkYWNjOCwkdDIsJHQyCisJCV9yb3IJJGFjYzEzLDgsJGFjYzEzCisJCXhvcgkkYWNjOSwkdDIsJHQyCisJCV9yb3IJJGFjYzE0LDE2LCRhY2MxNAorCQl4b3IJJGFjYzEwLCR0MiwkdDIKKwkJX3JvcgkkYWNjMTUsMjQsJGFjYzE1CisJCXhvcgkkYWNjMTEsJHQyLCR0MgorCQl4b3IJJGFjYzEyLCRhY2MxNCwkYWNjMTQKKwkJeG9yCSRhY2MxMywkdDMsJHQzCisJX3NybQkkdDAsMjQsJGFjYzAKKwkJeG9yCSRhY2MxNCwkdDMsJHQzCisJCXhvcgkkYWNjMTUsJHQzLCR0MworCV9zcm0JJHQzLDE2LCRhY2MxCisKKwlfc3JtCSR0Miw4LCRhY2MyCisJbGR3eCxzCSRhY2MwKCR0YmwpLCRhY2MwCisJX3NybQkkdDEsMCwkYWNjMworCWxkd3gscwkkYWNjMSgkdGJsKSwkYWNjMQorCV9zcm0JJHQxLDI0LCRhY2M0CisJbGR3eCxzCSRhY2MyKCR0YmwpLCRhY2MyCisJX3NybQkkdDAsMTYsJGFjYzUKKwlsZHd4LHMJJGFjYzMoJHRibCksJGFjYzMKKwlfc3JtCSR0Myw4LCRhY2M2CisJbGR3eCxzCSRhY2M0KCR0YmwpLCRhY2M0CisJX3NybQkkdDIsMCwkYWNjNworCWxkd3gscwkkYWNjNSgkdGJsKSwkYWNjNQorCV9zcm0JJHQyLDI0LCRhY2M4CisJbGR3eCxzCSRhY2M2KCR0YmwpLCRhY2M2CisJX3NybQkkdDEsMTYsJGFjYzkKKwlsZHd4LHMJJGFjYzcoJHRibCksJGFjYzcKKwlfc3JtCSR0MCw4LCRhY2MxMAorCWxkd3gscwkkYWNjOCgkdGJsKSwkYWNjOAorCV9zcm0JJHQzLDAsJGFjYzExCisJbGR3eCxzCSRhY2M5KCR0YmwpLCRhY2M5CisJX3NybQkkdDMsMjQsJGFjYzEyCisJbGR3eCxzCSRhY2MxMCgkdGJsKSwkYWNjMTAKKwlfc3JtCSR0MiwxNiwkYWNjMTMKKwlsZHd4LHMJJGFjYzExKCR0YmwpLCRhY2MxMQorCV9zcm0JJHQxLDgsJGFjYzE0CisJbGR3eCxzCSRhY2MxMigkdGJsKSwkYWNjMTIKKwlfc3JtCSR0MCwwLCRhY2MxNQorCWxkd3gscwkkYWNjMTMoJHRibCksJGFjYzEzCisJCV9yb3IJJGFjYzEsOCwkYWNjMQorCWxkd3gscwkkYWNjMTQoJHRibCksJGFjYzE0CisKKwkJX3JvcgkkYWNjMiwxNiwkYWNjMgorCQl4b3IJJGFjYzAsJHMwLCRzMAorCWxkd3gscwkkYWNjMTUoJHRibCksJGFjYzE1CisJCV9yb3IJJGFjYzMsMjQsJGFjYzMKKwkJeG9yCSRhY2MxLCRzMCwkczAKKwlsZHcJMTYoJGtleSksJHQwCisJCV9yb3IJJGFjYzUsOCwkYWNjNQorCQl4b3IJJGFjYzIsJHMwLCRzMAorCWxkdwkyMCgka2V5KSwkdDEKKwkJX3JvcgkkYWNjNiwxNiwkYWNjNgorCQl4b3IJJGFjYzMsJHMwLCRzMAorCWxkdwkyNCgka2V5KSwkdDIKKwkJX3JvcgkkYWNjNywyNCwkYWNjNworCQl4b3IJJGFjYzQsJHMxLCRzMQorCWxkdwkyOCgka2V5KSwkdDMKKwkJX3JvcgkkYWNjOSw4LCRhY2M5CisJCXhvcgkkYWNjNSwkczEsJHMxCisJbGR3CTEwMjQrMCgkdGJsKSwlcjAJCTsgcHJlZmV0Y2ggdGQ0CisJCV9yb3IJJGFjYzEwLDE2LCRhY2MxMAorCQl4b3IJJGFjYzYsJHMxLCRzMQorCWxkdwkxMDI0KzMyKCR0YmwpLCVyMAkJOyBwcmVmZXRjaCB0ZDQKKwkJX3JvcgkkYWNjMTEsMjQsJGFjYzExCisJCXhvcgkkYWNjNywkczEsJHMxCisJbGR3CTEwMjQrNjQoJHRibCksJXIwCQk7IHByZWZldGNoIHRkNAorCQlfcm9yCSRhY2MxMyw4LCRhY2MxMworCQl4b3IJJGFjYzgsJHMyLCRzMgorCWxkdwkxMDI0Kzk2KCR0YmwpLCVyMAkJOyBwcmVmZXRjaCB0ZDQKKwkJX3JvcgkkYWNjMTQsMTYsJGFjYzE0CisJCXhvcgkkYWNjOSwkczIsJHMyCisJbGR3CTEwMjQrMTI4KCR0YmwpLCVyMAkJOyBwcmVmZXRjaCB0ZDQKKwkJX3JvcgkkYWNjMTUsMjQsJGFjYzE1CisJCXhvcgkkYWNjMTAsJHMyLCRzMgorCWxkdwkxMDI0KzE2MCgkdGJsKSwlcjAJCTsgcHJlZmV0Y2ggdGQ0CisJX3NybQkkczAsMjQsJGFjYzAKKwkJeG9yCSRhY2MxMSwkczIsJHMyCisJbGR3CTEwMjQrMTkyKCR0YmwpLCVyMAkJOyBwcmVmZXRjaCB0ZDQKKwkJeG9yCSRhY2MxMiwkYWNjMTQsJGFjYzE0CisJCXhvcgkkYWNjMTMsJHMzLCRzMworCWxkdwkxMDI0KzIyNCgkdGJsKSwlcjAJCTsgcHJlZmV0Y2ggdGQ0CisJCXhvcgkkYWNjMTQsJHMzLCRzMworCQl4b3IJJGFjYzE1LCRzMywkczMKKwliCUxcJGRlY19sb29wCisJX3NybQkkczMsMTYsJGFjYzEKKworCS5BTElHTgkxNgorTFwkZGVjX2xhc3QKKwlsZG8JMTAyNCgkdGJsKSwkcm91bmRzCisJCV9yb3IJJGFjYzEsOCwkYWNjMQorCQl4b3IJJGFjYzAsJHQwLCR0MAorCWxkdwkwKCRrZXkpLCRzMAorCQlfcm9yCSRhY2MyLDE2LCRhY2MyCisJCXhvcgkkYWNjMSwkdDAsJHQwCisJbGR3CTQoJGtleSksJHMxCisJCV9yb3IJJGFjYzMsMjQsJGFjYzMKKwkJeG9yCSRhY2MyLCR0MCwkdDAKKwlsZHcJOCgka2V5KSwkczIKKwkJX3JvcgkkYWNjNSw4LCRhY2M1CisJCXhvcgkkYWNjMywkdDAsJHQwCisJbGR3CTEyKCRrZXkpLCRzMworCQlfcm9yCSRhY2M2LDE2LCRhY2M2CisJCXhvcgkkYWNjNCwkdDEsJHQxCisJCV9yb3IJJGFjYzcsMjQsJGFjYzcKKwkJeG9yCSRhY2M1LCR0MSwkdDEKKwkJX3JvcgkkYWNjOSw4LCRhY2M5CisJCXhvcgkkYWNjNiwkdDEsJHQxCisJCV9yb3IJJGFjYzEwLDE2LCRhY2MxMAorCQl4b3IJJGFjYzcsJHQxLCR0MQorCQlfcm9yCSRhY2MxMSwyNCwkYWNjMTEKKwkJeG9yCSRhY2M4LCR0MiwkdDIKKwkJX3JvcgkkYWNjMTMsOCwkYWNjMTMKKwkJeG9yCSRhY2M5LCR0MiwkdDIKKwkJX3JvcgkkYWNjMTQsMTYsJGFjYzE0CisJCXhvcgkkYWNjMTAsJHQyLCR0MgorCQlfcm9yCSRhY2MxNSwyNCwkYWNjMTUKKwkJeG9yCSRhY2MxMSwkdDIsJHQyCisJCXhvcgkkYWNjMTIsJGFjYzE0LCRhY2MxNAorCQl4b3IJJGFjYzEzLCR0MywkdDMKKwlfc3JtCSR0MCwyNCwkYWNjMAorCQl4b3IJJGFjYzE0LCR0MywkdDMKKwkJeG9yCSRhY2MxNSwkdDMsJHQzCisJX3NybQkkdDMsMTYsJGFjYzEKKworCV9zcm0JJHQyLDgsJGFjYzIKKwlsZGJ4CSRhY2MwKCRyb3VuZHMpLCRhY2MwCisJX3NybQkkdDEsMjQsJGFjYzQKKwlsZGJ4CSRhY2MxKCRyb3VuZHMpLCRhY2MxCisJX3NybQkkdDAsMTYsJGFjYzUKKwlfc3JtCSR0MSwwLCRhY2MzCisJbGRieAkkYWNjMigkcm91bmRzKSwkYWNjMgorCWxkYngJJGFjYzMoJHJvdW5kcyksJGFjYzMKKwlfc3JtCSR0Myw4LCRhY2M2CisJbGRieAkkYWNjNCgkcm91bmRzKSwkYWNjNAorCV9zcm0JJHQyLDI0LCRhY2M4CisJbGRieAkkYWNjNSgkcm91bmRzKSwkYWNjNQorCV9zcm0JJHQxLDE2LCRhY2M5CisJX3NybQkkdDIsMCwkYWNjNworCWxkYngJJGFjYzYoJHJvdW5kcyksJGFjYzYKKwlsZGJ4CSRhY2M3KCRyb3VuZHMpLCRhY2M3CisJX3NybQkkdDAsOCwkYWNjMTAKKwlsZGJ4CSRhY2M4KCRyb3VuZHMpLCRhY2M4CisJX3NybQkkdDMsMjQsJGFjYzEyCisJbGRieAkkYWNjOSgkcm91bmRzKSwkYWNjOQorCV9zcm0JJHQyLDE2LCRhY2MxMworCV9zcm0JJHQzLDAsJGFjYzExCisJbGRieAkkYWNjMTAoJHJvdW5kcyksJGFjYzEwCisJX3NybQkkdDEsOCwkYWNjMTQKKwlsZGJ4CSRhY2MxMSgkcm91bmRzKSwkYWNjMTEKKwlsZGJ4CSRhY2MxMigkcm91bmRzKSwkYWNjMTIKKwlsZGJ4CSRhY2MxMygkcm91bmRzKSwkYWNjMTMKKwlfc3JtCSR0MCwwLCRhY2MxNQorCWxkYngJJGFjYzE0KCRyb3VuZHMpLCRhY2MxNAorCisJCWRlcAkkYWNjMCw3LDgsJGFjYzMKKwlsZGJ4CSRhY2MxNSgkcm91bmRzKSwkYWNjMTUKKwkJZGVwCSRhY2M0LDcsOCwkYWNjNworCQlkZXAJJGFjYzEsMTUsOCwkYWNjMworCQlkZXAJJGFjYzUsMTUsOCwkYWNjNworCQlkZXAJJGFjYzIsMjMsOCwkYWNjMworCQlkZXAJJGFjYzYsMjMsOCwkYWNjNworCQl4b3IJJGFjYzMsJHMwLCRzMAorCQl4b3IJJGFjYzcsJHMxLCRzMQorCQlkZXAJJGFjYzgsNyw4LCRhY2MxMQorCQlkZXAJJGFjYzEyLDcsOCwkYWNjMTUKKwkJZGVwCSRhY2M5LDE1LDgsJGFjYzExCisJCWRlcAkkYWNjMTMsMTUsOCwkYWNjMTUKKwkJZGVwCSRhY2MxMCwyMyw4LCRhY2MxMQorCQlkZXAJJGFjYzE0LDIzLDgsJGFjYzE1CisJCXhvcgkkYWNjMTEsJHMyLCRzMgorCisJYnYJKCVyMzEpCisJLkVYSVQKKwkJeG9yCSRhY2MxNSwkczMsJHMzCisJLlBST0NFTkQKKworCS5BTElHTgk2NAorTFwkQUVTX1RkCisJLldPUkQJMHg1MWY0YTc1MCwgMHg3ZTQxNjU1MywgMHgxYTE3YTRjMywgMHgzYTI3NWU5NgorCS5XT1JECTB4M2JhYjZiY2IsIDB4MWY5ZDQ1ZjEsIDB4YWNmYTU4YWIsIDB4NGJlMzAzOTMKKwkuV09SRAkweDIwMzBmYTU1LCAweGFkNzY2ZGY2LCAweDg4Y2M3NjkxLCAweGY1MDI0YzI1CisJLldPUkQJMHg0ZmU1ZDdmYywgMHhjNTJhY2JkNywgMHgyNjM1NDQ4MCwgMHhiNTYyYTM4ZgorCS5XT1JECTB4ZGViMTVhNDksIDB4MjViYTFiNjcsIDB4NDVlYTBlOTgsIDB4NWRmZWMwZTEKKwkuV09SRAkweGMzMmY3NTAyLCAweDgxNGNmMDEyLCAweDhkNDY5N2EzLCAweDZiZDNmOWM2CisJLldPUkQJMHgwMzhmNWZlNywgMHgxNTkyOWM5NSwgMHhiZjZkN2FlYiwgMHg5NTUyNTlkYQorCS5XT1JECTB4ZDRiZTgzMmQsIDB4NTg3NDIxZDMsIDB4NDllMDY5MjksIDB4OGVjOWM4NDQKKwkuV09SRAkweDc1YzI4OTZhLCAweGY0OGU3OTc4LCAweDk5NTgzZTZiLCAweDI3Yjk3MWRkCisJLldPUkQJMHhiZWUxNGZiNiwgMHhmMDg4YWQxNywgMHhjOTIwYWM2NiwgMHg3ZGNlM2FiNAorCS5XT1JECTB4NjNkZjRhMTgsIDB4ZTUxYTMxODIsIDB4OTc1MTMzNjAsIDB4NjI1MzdmNDUKKwkuV09SRAkweGIxNjQ3N2UwLCAweGJiNmJhZTg0LCAweGZlODFhMDFjLCAweGY5MDgyYjk0CisJLldPUkQJMHg3MDQ4Njg1OCwgMHg4ZjQ1ZmQxOSwgMHg5NGRlNmM4NywgMHg1MjdiZjhiNworCS5XT1JECTB4YWI3M2QzMjMsIDB4NzI0YjAyZTIsIDB4ZTMxZjhmNTcsIDB4NjY1NWFiMmEKKwkuV09SRAkweGIyZWIyODA3LCAweDJmYjVjMjAzLCAweDg2YzU3YjlhLCAweGQzMzcwOGE1CisJLldPUkQJMHgzMDI4ODdmMiwgMHgyM2JmYTViMiwgMHgwMjAzNmFiYSwgMHhlZDE2ODI1YworCS5XT1JECTB4OGFjZjFjMmIsIDB4YTc3OWI0OTIsIDB4ZjMwN2YyZjAsIDB4NGU2OWUyYTEKKwkuV09SRAkweDY1ZGFmNGNkLCAweDA2MDViZWQ1LCAweGQxMzQ2MjFmLCAweGM0YTZmZThhCisJLldPUkQJMHgzNDJlNTM5ZCwgMHhhMmYzNTVhMCwgMHgwNThhZTEzMiwgMHhhNGY2ZWI3NQorCS5XT1JECTB4MGI4M2VjMzksIDB4NDA2MGVmYWEsIDB4NWU3MTlmMDYsIDB4YmQ2ZTEwNTEKKwkuV09SRAkweDNlMjE4YWY5LCAweDk2ZGQwNjNkLCAweGRkM2UwNWFlLCAweDRkZTZiZDQ2CisJLldPUkQJMHg5MTU0OGRiNSwgMHg3MWM0NWQwNSwgMHgwNDA2ZDQ2ZiwgMHg2MDUwMTVmZgorCS5XT1JECTB4MTk5OGZiMjQsIDB4ZDZiZGU5OTcsIDB4ODk0MDQzY2MsIDB4NjdkOTllNzcKKwkuV09SRAkweGIwZTg0MmJkLCAweDA3ODk4Yjg4LCAweGU3MTk1YjM4LCAweDc5YzhlZWRiCisJLldPUkQJMHhhMTdjMGE0NywgMHg3YzQyMGZlOSwgMHhmODg0MWVjOSwgMHgwMDAwMDAwMAorCS5XT1JECTB4MDk4MDg2ODMsIDB4MzIyYmVkNDgsIDB4MWUxMTcwYWMsIDB4NmM1YTcyNGUKKwkuV09SRAkweGZkMGVmZmZiLCAweDBmODUzODU2LCAweDNkYWVkNTFlLCAweDM2MmQzOTI3CisJLldPUkQJMHgwYTBmZDk2NCwgMHg2ODVjYTYyMSwgMHg5YjViNTRkMSwgMHgyNDM2MmUzYQorCS5XT1JECTB4MGMwYTY3YjEsIDB4OTM1N2U3MGYsIDB4YjRlZTk2ZDIsIDB4MWI5YjkxOWUKKwkuV09SRAkweDgwYzBjNTRmLCAweDYxZGMyMGEyLCAweDVhNzc0YjY5LCAweDFjMTIxYTE2CisJLldPUkQJMHhlMjkzYmEwYSwgMHhjMGEwMmFlNSwgMHgzYzIyZTA0MywgMHgxMjFiMTcxZAorCS5XT1JECTB4MGUwOTBkMGIsIDB4ZjI4YmM3YWQsIDB4MmRiNmE4YjksIDB4MTQxZWE5YzgKKwkuV09SRAkweDU3ZjExOTg1LCAweGFmNzUwNzRjLCAweGVlOTlkZGJiLCAweGEzN2Y2MGZkCisJLldPUkQJMHhmNzAxMjY5ZiwgMHg1YzcyZjViYywgMHg0NDY2M2JjNSwgMHg1YmZiN2UzNAorCS5XT1JECTB4OGI0MzI5NzYsIDB4Y2IyM2M2ZGMsIDB4YjZlZGZjNjgsIDB4YjhlNGYxNjMKKwkuV09SRAkweGQ3MzFkY2NhLCAweDQyNjM4NTEwLCAweDEzOTcyMjQwLCAweDg0YzYxMTIwCisJLldPUkQJMHg4NTRhMjQ3ZCwgMHhkMmJiM2RmOCwgMHhhZWY5MzIxMSwgMHhjNzI5YTE2ZAorCS5XT1JECTB4MWQ5ZTJmNGIsIDB4ZGNiMjMwZjMsIDB4MGQ4NjUyZWMsIDB4NzdjMWUzZDAKKwkuV09SRAkweDJiYjMxNjZjLCAweGE5NzBiOTk5LCAweDExOTQ0OGZhLCAweDQ3ZTk2NDIyCisJLldPUkQJMHhhOGZjOGNjNCwgMHhhMGYwM2YxYSwgMHg1NjdkMmNkOCwgMHgyMjMzOTBlZgorCS5XT1JECTB4ODc0OTRlYzcsIDB4ZDkzOGQxYzEsIDB4OGNjYWEyZmUsIDB4OThkNDBiMzYKKwkuV09SRAkweGE2ZjU4MWNmLCAweGE1N2FkZTI4LCAweGRhYjc4ZTI2LCAweDNmYWRiZmE0CisJLldPUkQJMHgyYzNhOWRlNCwgMHg1MDc4OTIwZCwgMHg2YTVmY2M5YiwgMHg1NDdlNDY2MgorCS5XT1JECTB4ZjY4ZDEzYzIsIDB4OTBkOGI4ZTgsIDB4MmUzOWY3NWUsIDB4ODJjM2FmZjUKKwkuV09SRAkweDlmNWQ4MGJlLCAweDY5ZDA5MzdjLCAweDZmZDUyZGE5LCAweGNmMjUxMmIzCisJLldPUkQJMHhjOGFjOTkzYiwgMHgxMDE4N2RhNywgMHhlODljNjM2ZSwgMHhkYjNiYmI3YgorCS5XT1JECTB4Y2QyNjc4MDksIDB4NmU1OTE4ZjQsIDB4ZWM5YWI3MDEsIDB4ODM0ZjlhYTgKKwkuV09SRAkweGU2OTU2ZTY1LCAweGFhZmZlNjdlLCAweDIxYmNjZjA4LCAweGVmMTVlOGU2CisJLldPUkQJMHhiYWU3OWJkOSwgMHg0YTZmMzZjZSwgMHhlYTlmMDlkNCwgMHgyOWIwN2NkNgorCS5XT1JECTB4MzFhNGIyYWYsIDB4MmEzZjIzMzEsIDB4YzZhNTk0MzAsIDB4MzVhMjY2YzAKKwkuV09SRAkweDc0NGViYzM3LCAweGZjODJjYWE2LCAweGUwOTBkMGIwLCAweDMzYTdkODE1CisJLldPUkQJMHhmMTA0OTg0YSwgMHg0MWVjZGFmNywgMHg3ZmNkNTAwZSwgMHgxNzkxZjYyZgorCS5XT1JECTB4NzY0ZGQ2OGQsIDB4NDNlZmIwNGQsIDB4Y2NhYTRkNTQsIDB4ZTQ5NjA0ZGYKKwkuV09SRAkweDllZDFiNWUzLCAweDRjNmE4ODFiLCAweGMxMmMxZmI4LCAweDQ2NjU1MTdmCisJLldPUkQJMHg5ZDVlZWEwNCwgMHgwMThjMzU1ZCwgMHhmYTg3NzQ3MywgMHhmYjBiNDEyZQorCS5XT1JECTB4YjM2NzFkNWEsIDB4OTJkYmQyNTIsIDB4ZTkxMDU2MzMsIDB4NmRkNjQ3MTMKKwkuV09SRAkweDlhZDc2MThjLCAweDM3YTEwYzdhLCAweDU5ZjgxNDhlLCAweGViMTMzYzg5CisJLldPUkQJMHhjZWE5MjdlZSwgMHhiNzYxYzkzNSwgMHhlMTFjZTVlZCwgMHg3YTQ3YjEzYworCS5XT1JECTB4OWNkMmRmNTksIDB4NTVmMjczM2YsIDB4MTgxNGNlNzksIDB4NzNjNzM3YmYKKwkuV09SRAkweDUzZjdjZGVhLCAweDVmZmRhYTViLCAweGRmM2Q2ZjE0LCAweDc4NDRkYjg2CisJLldPUkQJMHhjYWFmZjM4MSwgMHhiOTY4YzQzZSwgMHgzODI0MzQyYywgMHhjMmEzNDA1ZgorCS5XT1JECTB4MTYxZGMzNzIsIDB4YmNlMjI1MGMsIDB4MjgzYzQ5OGIsIDB4ZmYwZDk1NDEKKwkuV09SRAkweDM5YTgwMTcxLCAweDA4MGNiM2RlLCAweGQ4YjRlNDljLCAweDY0NTZjMTkwCisJLldPUkQJMHg3YmNiODQ2MSwgMHhkNTMyYjY3MCwgMHg0ODZjNWM3NCwgMHhkMGI4NTc0MgorCS5CWVRFCTB4NTIsIDB4MDksIDB4NmEsIDB4ZDUsIDB4MzAsIDB4MzYsIDB4YTUsIDB4MzgKKwkuQllURQkweGJmLCAweDQwLCAweGEzLCAweDllLCAweDgxLCAweGYzLCAweGQ3LCAweGZiCisJLkJZVEUJMHg3YywgMHhlMywgMHgzOSwgMHg4MiwgMHg5YiwgMHgyZiwgMHhmZiwgMHg4NworCS5CWVRFCTB4MzQsIDB4OGUsIDB4NDMsIDB4NDQsIDB4YzQsIDB4ZGUsIDB4ZTksIDB4Y2IKKwkuQllURQkweDU0LCAweDdiLCAweDk0LCAweDMyLCAweGE2LCAweGMyLCAweDIzLCAweDNkCisJLkJZVEUJMHhlZSwgMHg0YywgMHg5NSwgMHgwYiwgMHg0MiwgMHhmYSwgMHhjMywgMHg0ZQorCS5CWVRFCTB4MDgsIDB4MmUsIDB4YTEsIDB4NjYsIDB4MjgsIDB4ZDksIDB4MjQsIDB4YjIKKwkuQllURQkweDc2LCAweDViLCAweGEyLCAweDQ5LCAweDZkLCAweDhiLCAweGQxLCAweDI1CisJLkJZVEUJMHg3MiwgMHhmOCwgMHhmNiwgMHg2NCwgMHg4NiwgMHg2OCwgMHg5OCwgMHgxNgorCS5CWVRFCTB4ZDQsIDB4YTQsIDB4NWMsIDB4Y2MsIDB4NWQsIDB4NjUsIDB4YjYsIDB4OTIKKwkuQllURQkweDZjLCAweDcwLCAweDQ4LCAweDUwLCAweGZkLCAweGVkLCAweGI5LCAweGRhCisJLkJZVEUJMHg1ZSwgMHgxNSwgMHg0NiwgMHg1NywgMHhhNywgMHg4ZCwgMHg5ZCwgMHg4NAorCS5CWVRFCTB4OTAsIDB4ZDgsIDB4YWIsIDB4MDAsIDB4OGMsIDB4YmMsIDB4ZDMsIDB4MGEKKwkuQllURQkweGY3LCAweGU0LCAweDU4LCAweDA1LCAweGI4LCAweGIzLCAweDQ1LCAweDA2CisJLkJZVEUJMHhkMCwgMHgyYywgMHgxZSwgMHg4ZiwgMHhjYSwgMHgzZiwgMHgwZiwgMHgwMgorCS5CWVRFCTB4YzEsIDB4YWYsIDB4YmQsIDB4MDMsIDB4MDEsIDB4MTMsIDB4OGEsIDB4NmIKKwkuQllURQkweDNhLCAweDkxLCAweDExLCAweDQxLCAweDRmLCAweDY3LCAweGRjLCAweGVhCisJLkJZVEUJMHg5NywgMHhmMiwgMHhjZiwgMHhjZSwgMHhmMCwgMHhiNCwgMHhlNiwgMHg3MworCS5CWVRFCTB4OTYsIDB4YWMsIDB4NzQsIDB4MjIsIDB4ZTcsIDB4YWQsIDB4MzUsIDB4ODUKKwkuQllURQkweGUyLCAweGY5LCAweDM3LCAweGU4LCAweDFjLCAweDc1LCAweGRmLCAweDZlCisJLkJZVEUJMHg0NywgMHhmMSwgMHgxYSwgMHg3MSwgMHgxZCwgMHgyOSwgMHhjNSwgMHg4OQorCS5CWVRFCTB4NmYsIDB4YjcsIDB4NjIsIDB4MGUsIDB4YWEsIDB4MTgsIDB4YmUsIDB4MWIKKwkuQllURQkweGZjLCAweDU2LCAweDNlLCAweDRiLCAweGM2LCAweGQyLCAweDc5LCAweDIwCisJLkJZVEUJMHg5YSwgMHhkYiwgMHhjMCwgMHhmZSwgMHg3OCwgMHhjZCwgMHg1YSwgMHhmNAorCS5CWVRFCTB4MWYsIDB4ZGQsIDB4YTgsIDB4MzMsIDB4ODgsIDB4MDcsIDB4YzcsIDB4MzEKKwkuQllURQkweGIxLCAweDEyLCAweDEwLCAweDU5LCAweDI3LCAweDgwLCAweGVjLCAweDVmCisJLkJZVEUJMHg2MCwgMHg1MSwgMHg3ZiwgMHhhOSwgMHgxOSwgMHhiNSwgMHg0YSwgMHgwZAorCS5CWVRFCTB4MmQsIDB4ZTUsIDB4N2EsIDB4OWYsIDB4OTMsIDB4YzksIDB4OWMsIDB4ZWYKKwkuQllURQkweGEwLCAweGUwLCAweDNiLCAweDRkLCAweGFlLCAweDJhLCAweGY1LCAweGIwCisJLkJZVEUJMHhjOCwgMHhlYiwgMHhiYiwgMHgzYywgMHg4MywgMHg1MywgMHg5OSwgMHg2MQorCS5CWVRFCTB4MTcsIDB4MmIsIDB4MDQsIDB4N2UsIDB4YmEsIDB4NzcsIDB4ZDYsIDB4MjYKKwkuQllURQkweGUxLCAweDY5LCAweDE0LCAweDYzLCAweDU1LCAweDIxLCAweDBjLCAweDdkCisJLlNUUklOR1ogIkFFUyBmb3IgUEEtUklTQywgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIKK19fXworCitmb3JlYWNoIChzcGxpdCgiXG4iLCRjb2RlKSkgeworCXMvXGAoW15cYF0qKVxgL2V2YWwgJDEvZ2U7CisKKwkjIHRyYW5zbGF0ZSBtYWRlIHVwIGluc3RydWN0b25zOiBfcm9yLCBfc3JtCisJcy9fcm9yKFxzKykoJXJbMC05XSspLC9zaGQkMSQyLCQyLC8JCQkJb3IKKworCXMvX3NybShccyslclswLTldKyksKFswLTldKyksLworCQkkU0laRV9UPT00ID8gc3ByaW50ZigiZXh0cnUlcywlZCw4LCIsJDEsMzEtJDIpCisJCTogICAgICAgICAgICBzcHJpbnRmKCJleHRyZCx1JXMsJWQsOCwiLCQxLDYzLSQyKS9lOworCisJcy8sXCovLC8gaWYgKCRTSVpFX1Q9PTQpOworCXByaW50ICRfLCJcbiI7Cit9CitjbG9zZSBTVERPVVQ7CmRpZmYgLS1naXQgYS9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS9hZXMtcHBjLnBsIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzLXBwYy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzUyY2JlCi0tLSAvZGV2L251bGwKKysrIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzLXBwYy5wbApAQCAtMCwwICsxLDEzNjUgQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPiBmb3IgdGhlIE9wZW5TU0wKKyMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAorIyBDUllQVE9HQU1TIGxpY2Vuc2VzIGRlcGVuZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVydGhlcgorIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBOZWVkcyBtb3JlIHdvcms6IGtleSBzZXR1cCwgQ0JDIHJvdXRpbmUuLi4KKyMKKyMgcHBjX0FFU19bZW58ZGVdY3J5cHQgcGVyZm9ybSBhdCAxOCBjeWNsZXMgcGVyIGJ5dGUgcHJvY2Vzc2VkIHdpdGgKKyMgMTI4LWJpdCBrZXksIHdoaWNoIGlzIH40MCUgYmV0dGVyIHRoYW4gNjQtYml0IGNvZGUgZ2VuZXJhdGVkIGJ5IGdjYworIyA0LjAuIEJ1dCB0aGVzZSBhcmUgbm90IHRoZSBvbmVzIGN1cnJlbnRseSB1c2VkISBUaGVpciAiY29tcGFjdCIKKyMgY291bnRlcnBhcnRzIGFyZSwgZm9yIHNlY3VyaXR5IHJlYXNvbi4gcHBjX0FFU19lbmNyeXB0X2NvbXBhY3QgcnVucworIyBhdCAxLzIgb2YgcHBjX0FFU19lbmNyeXB0IHNwZWVkLCB3aGlsZSBwcGNfQUVTX2RlY3J5cHRfY29tcGFjdCAtCisjIGF0IDEvMyBvZiBwcGNfQUVTX2RlY3J5cHQuCisKKyMgRmVicnVhcnkgMjAxMAorIworIyBSZXNjaGVkdWxpbmcgaW5zdHJ1Y3Rpb25zIHRvIGZhdm91ciBQb3dlcjYgcGlwZWxpbmUgZ2F2ZSAxMCUKKyMgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgb24gdGhlIHBsYXRmcm9tIGluIHF1ZXN0aW9uIChhbmQgbWFyZ2luYWwKKyMgaW1wcm92ZW1lbnQgZXZlbiBvbiBvdGhlcnMpLiBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBQb3dlcjYgZmFpbHMKKyMgdG8gcHJvY2VzcyBieXRlIGluIDE4IGN5Y2xlcywgb25seSBpbiAyMywgYmVjYXVzZSBpdCBmYWlscyB0byBpc3N1ZQorIyA0IGxvYWQgaW5zdHJ1Y3Rpb25zIGluIHR3byBjeWNsZXMsIG9ubHkgaW4gMy4gQXMgcmVzdWx0IG5vbi1jb21wYWN0CisjIGJsb2NrIHN1YnJvdXRpbmVzIGFyZSAyNSUgc2xvd2VyIHRoYW4gb25lIHdvdWxkIGV4cGVjdC4gQ29tcGFjdAorIyBmdW5jdGlvbnMgc2NhbGUgYmV0dGVyLCBiZWNhdXNlIHRoZXkgaGF2ZSBwdXJlIGNvbXB1dGF0aW9uYWwgcGFydCwKKyMgd2hpY2ggc2NhbGVzIHBlcmZlY3RseSB3aXRoIGNsb2NrIGZyZXF1ZW5jeS4gVG8gYmUgc3BlY2lmaWMKKyMgcHBjX0FFU19lbmNyeXB0X2NvbXBhY3Qgb3BlcmF0ZXMgYXQgNDIgY3ljbGVzIHBlciBieXRlLCB3aGlsZQorIyBwcGNfQUVTX2RlY3J5cHRfY29tcGFjdCAtIGF0IDU1IChpbiA2NC1iaXQgYnVpbGQpLgorCiskZmxhdm91ciA9IHNoaWZ0OworCitpZiAoJGZsYXZvdXIgPX4gLzY0LykgeworCSRTSVpFX1QJPTg7CisJJExSU0FWRQk9MiokU0laRV9UOworCSRTVFUJPSJzdGR1IjsKKwkkUE9QCT0ibGQiOworCSRQVVNICT0ic3RkIjsKK30gZWxzaWYgKCRmbGF2b3VyID1+IC8zMi8pIHsKKwkkU0laRV9UCT00OworCSRMUlNBVkUJPSRTSVpFX1Q7CisJJFNUVQk9InN0d3UiOworCSRQT1AJPSJsd3oiOworCSRQVVNICT0ic3R3IjsKK30gZWxzZSB7IGRpZSAibm9uc2Vuc2UgJGZsYXZvdXIiOyB9CisKKyQwID1+IG0vKC4qW1wvXFxdKVteXC9cXF0rJC87ICRkaXI9JDE7CisoICR4bGF0ZT0iJHtkaXJ9cHBjLXhsYXRlLnBsIiBhbmQgLWYgJHhsYXRlICkgb3IKKyggJHhsYXRlPSIke2Rpcn0uLi8uLi9wZXJsYXNtL3BwYy14bGF0ZS5wbCIgYW5kIC1mICR4bGF0ZSkgb3IKK2RpZSAiY2FuJ3QgbG9jYXRlIHBwYy14bGF0ZS5wbCI7CisKK29wZW4gU1RET1VULCJ8ICReWCAkeGxhdGUgJGZsYXZvdXIgIi5zaGlmdCB8fCBkaWUgImNhbid0IGNhbGwgJHhsYXRlOiAkISI7CisKKyRGUkFNRT0zMiokU0laRV9UOworCitzdWIgX2RhdGFfd29yZCgpCit7IG15ICRpOworICAgIHdoaWxlKGRlZmluZWQoJGk9c2hpZnQpKSB7ICRjb2RlLj1zcHJpbnRmIlx0LmxvbmdcdDB4JTA4eCwweCUwOHhcbiIsJGksJGk7IH0KK30KKworJHNwPSJyMSI7CiskdG9jPSJyMiI7CiskaW5wPSJyMyI7Ciskb3V0PSJyNCI7Ciska2V5PSJyNSI7CisKKyRUYmwwPSJyMyI7CiskVGJsMT0icjYiOworJFRibDI9InI3IjsKKyRUYmwzPSJyMiI7CisKKyRzMD0icjgiOworJHMxPSJyOSI7CiskczI9InIxMCI7CiskczM9InIxMSI7CisKKyR0MD0icjEyIjsKKyR0MT0icjEzIjsKKyR0Mj0icjE0IjsKKyR0Mz0icjE1IjsKKworJGFjYzAwPSJyMTYiOworJGFjYzAxPSJyMTciOworJGFjYzAyPSJyMTgiOworJGFjYzAzPSJyMTkiOworCiskYWNjMDQ9InIyMCI7CiskYWNjMDU9InIyMSI7CiskYWNjMDY9InIyMiI7CiskYWNjMDc9InIyMyI7CisKKyRhY2MwOD0icjI0IjsKKyRhY2MwOT0icjI1IjsKKyRhY2MxMD0icjI2IjsKKyRhY2MxMT0icjI3IjsKKworJGFjYzEyPSJyMjgiOworJGFjYzEzPSJyMjkiOworJGFjYzE0PSJyMzAiOworJGFjYzE1PSJyMzEiOworCisjIHN0YXkgYXdheSBmcm9tIFRMUyBwb2ludGVyCitpZiAoJFNJWkVfVD09OCkJeyBkaWUgaWYgKCR0MSBuZSAicjEzIik7ICAkdDE9InIwIjsJCX0KK2Vsc2UJCXsgZGllIGlmICgkVGJsMyBuZSAicjIiKTsgJFRibDM9JHQwOyAkdDA9InIwIjsJfQorJG1hc2s4MD0kVGJsMjsKKyRtYXNrMWI9JFRibDM7CisKKyRjb2RlLj08PF9fXzsKKy5tYWNoaW5lCSJhbnkiCisudGV4dAorCisuYWxpZ24JNworTEFFU19UZToKKwltZmxyCXIwCisJYmNsCTIwLDMxLFwkKzQKKwltZmxyCSRUYmwwCTsgICAgdnZ2dnYgImRpc3RhbmNlIiBiZXR3ZWVuIC4gYW5kIDFzdCBkYXRhIGVudHJ5CisJYWRkaQkkVGJsMCwkVGJsMCxgMTI4LThgCisJbXRscglyMAorCWJscgorCS5sb25nCTAKKwkuYnl0ZQkwLDEyLDB4MTQsMCwwLDAsMCwwCisJLnNwYWNlCWA2NC05KjRgCitMQUVTX1RkOgorCW1mbHIJcjAKKwliY2wJMjAsMzEsXCQrNAorCW1mbHIJJFRibDAJOyAgICB2dnZ2dnZ2diAiZGlzdGFuY2UiIGJldHdlZW4gLiBhbmQgMXN0IGRhdGEgZW50cnkKKwlhZGRpCSRUYmwwLCRUYmwwLGAxMjgtNjQtOCsyMDQ4KzI1NmAKKwltdGxyCXIwCisJYmxyCisJLmxvbmcJMAorCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwwLDAKKwkuc3BhY2UJYDEyOC02NC05KjRgCitfX18KKyZfZGF0YV93b3JkKAorCTB4YzY2MzYzYTUsIDB4Zjg3YzdjODQsIDB4ZWU3Nzc3OTksIDB4ZjY3YjdiOGQsCisJMHhmZmYyZjIwZCwgMHhkNjZiNmJiZCwgMHhkZTZmNmZiMSwgMHg5MWM1YzU1NCwKKwkweDYwMzAzMDUwLCAweDAyMDEwMTAzLCAweGNlNjc2N2E5LCAweDU2MmIyYjdkLAorCTB4ZTdmZWZlMTksIDB4YjVkN2Q3NjIsIDB4NGRhYmFiZTYsIDB4ZWM3Njc2OWEsCisJMHg4ZmNhY2E0NSwgMHgxZjgyODI5ZCwgMHg4OWM5Yzk0MCwgMHhmYTdkN2Q4NywKKwkweGVmZmFmYTE1LCAweGIyNTk1OWViLCAweDhlNDc0N2M5LCAweGZiZjBmMDBiLAorCTB4NDFhZGFkZWMsIDB4YjNkNGQ0NjcsIDB4NWZhMmEyZmQsIDB4NDVhZmFmZWEsCisJMHgyMzljOWNiZiwgMHg1M2E0YTRmNywgMHhlNDcyNzI5NiwgMHg5YmMwYzA1YiwKKwkweDc1YjdiN2MyLCAweGUxZmRmZDFjLCAweDNkOTM5M2FlLCAweDRjMjYyNjZhLAorCTB4NmMzNjM2NWEsIDB4N2UzZjNmNDEsIDB4ZjVmN2Y3MDIsIDB4ODNjY2NjNGYsCisJMHg2ODM0MzQ1YywgMHg1MWE1YTVmNCwgMHhkMWU1ZTUzNCwgMHhmOWYxZjEwOCwKKwkweGUyNzE3MTkzLCAweGFiZDhkODczLCAweDYyMzEzMTUzLCAweDJhMTUxNTNmLAorCTB4MDgwNDA0MGMsIDB4OTVjN2M3NTIsIDB4NDYyMzIzNjUsIDB4OWRjM2MzNWUsCisJMHgzMDE4MTgyOCwgMHgzNzk2OTZhMSwgMHgwYTA1MDUwZiwgMHgyZjlhOWFiNSwKKwkweDBlMDcwNzA5LCAweDI0MTIxMjM2LCAweDFiODA4MDliLCAweGRmZTJlMjNkLAorCTB4Y2RlYmViMjYsIDB4NGUyNzI3NjksIDB4N2ZiMmIyY2QsIDB4ZWE3NTc1OWYsCisJMHgxMjA5MDkxYiwgMHgxZDgzODM5ZSwgMHg1ODJjMmM3NCwgMHgzNDFhMWEyZSwKKwkweDM2MWIxYjJkLCAweGRjNmU2ZWIyLCAweGI0NWE1YWVlLCAweDViYTBhMGZiLAorCTB4YTQ1MjUyZjYsIDB4NzYzYjNiNGQsIDB4YjdkNmQ2NjEsIDB4N2RiM2IzY2UsCisJMHg1MjI5Mjk3YiwgMHhkZGUzZTMzZSwgMHg1ZTJmMmY3MSwgMHgxMzg0ODQ5NywKKwkweGE2NTM1M2Y1LCAweGI5ZDFkMTY4LCAweDAwMDAwMDAwLCAweGMxZWRlZDJjLAorCTB4NDAyMDIwNjAsIDB4ZTNmY2ZjMWYsIDB4NzliMWIxYzgsIDB4YjY1YjViZWQsCisJMHhkNDZhNmFiZSwgMHg4ZGNiY2I0NiwgMHg2N2JlYmVkOSwgMHg3MjM5Mzk0YiwKKwkweDk0NGE0YWRlLCAweDk4NGM0Y2Q0LCAweGIwNTg1OGU4LCAweDg1Y2ZjZjRhLAorCTB4YmJkMGQwNmIsIDB4YzVlZmVmMmEsIDB4NGZhYWFhZTUsIDB4ZWRmYmZiMTYsCisJMHg4NjQzNDNjNSwgMHg5YTRkNGRkNywgMHg2NjMzMzM1NSwgMHgxMTg1ODU5NCwKKwkweDhhNDU0NWNmLCAweGU5ZjlmOTEwLCAweDA0MDIwMjA2LCAweGZlN2Y3ZjgxLAorCTB4YTA1MDUwZjAsIDB4NzgzYzNjNDQsIDB4MjU5ZjlmYmEsIDB4NGJhOGE4ZTMsCisJMHhhMjUxNTFmMywgMHg1ZGEzYTNmZSwgMHg4MDQwNDBjMCwgMHgwNThmOGY4YSwKKwkweDNmOTI5MmFkLCAweDIxOWQ5ZGJjLCAweDcwMzgzODQ4LCAweGYxZjVmNTA0LAorCTB4NjNiY2JjZGYsIDB4NzdiNmI2YzEsIDB4YWZkYWRhNzUsIDB4NDIyMTIxNjMsCisJMHgyMDEwMTAzMCwgMHhlNWZmZmYxYSwgMHhmZGYzZjMwZSwgMHhiZmQyZDI2ZCwKKwkweDgxY2RjZDRjLCAweDE4MGMwYzE0LCAweDI2MTMxMzM1LCAweGMzZWNlYzJmLAorCTB4YmU1ZjVmZTEsIDB4MzU5Nzk3YTIsIDB4ODg0NDQ0Y2MsIDB4MmUxNzE3MzksCisJMHg5M2M0YzQ1NywgMHg1NWE3YTdmMiwgMHhmYzdlN2U4MiwgMHg3YTNkM2Q0NywKKwkweGM4NjQ2NGFjLCAweGJhNWQ1ZGU3LCAweDMyMTkxOTJiLCAweGU2NzM3Mzk1LAorCTB4YzA2MDYwYTAsIDB4MTk4MTgxOTgsIDB4OWU0ZjRmZDEsIDB4YTNkY2RjN2YsCisJMHg0NDIyMjI2NiwgMHg1NDJhMmE3ZSwgMHgzYjkwOTBhYiwgMHgwYjg4ODg4MywKKwkweDhjNDY0NmNhLCAweGM3ZWVlZTI5LCAweDZiYjhiOGQzLCAweDI4MTQxNDNjLAorCTB4YTdkZWRlNzksIDB4YmM1ZTVlZTIsIDB4MTYwYjBiMWQsIDB4YWRkYmRiNzYsCisJMHhkYmUwZTAzYiwgMHg2NDMyMzI1NiwgMHg3NDNhM2E0ZSwgMHgxNDBhMGExZSwKKwkweDkyNDk0OWRiLCAweDBjMDYwNjBhLCAweDQ4MjQyNDZjLCAweGI4NWM1Y2U0LAorCTB4OWZjMmMyNWQsIDB4YmRkM2QzNmUsIDB4NDNhY2FjZWYsIDB4YzQ2MjYyYTYsCisJMHgzOTkxOTFhOCwgMHgzMTk1OTVhNCwgMHhkM2U0ZTQzNywgMHhmMjc5Nzk4YiwKKwkweGQ1ZTdlNzMyLCAweDhiYzhjODQzLCAweDZlMzczNzU5LCAweGRhNmQ2ZGI3LAorCTB4MDE4ZDhkOGMsIDB4YjFkNWQ1NjQsIDB4OWM0ZTRlZDIsIDB4NDlhOWE5ZTAsCisJMHhkODZjNmNiNCwgMHhhYzU2NTZmYSwgMHhmM2Y0ZjQwNywgMHhjZmVhZWEyNSwKKwkweGNhNjU2NWFmLCAweGY0N2E3YThlLCAweDQ3YWVhZWU5LCAweDEwMDgwODE4LAorCTB4NmZiYWJhZDUsIDB4ZjA3ODc4ODgsIDB4NGEyNTI1NmYsIDB4NWMyZTJlNzIsCisJMHgzODFjMWMyNCwgMHg1N2E2YTZmMSwgMHg3M2I0YjRjNywgMHg5N2M2YzY1MSwKKwkweGNiZThlODIzLCAweGExZGRkZDdjLCAweGU4NzQ3NDljLCAweDNlMWYxZjIxLAorCTB4OTY0YjRiZGQsIDB4NjFiZGJkZGMsIDB4MGQ4YjhiODYsIDB4MGY4YThhODUsCisJMHhlMDcwNzA5MCwgMHg3YzNlM2U0MiwgMHg3MWI1YjVjNCwgMHhjYzY2NjZhYSwKKwkweDkwNDg0OGQ4LCAweDA2MDMwMzA1LCAweGY3ZjZmNjAxLCAweDFjMGUwZTEyLAorCTB4YzI2MTYxYTMsIDB4NmEzNTM1NWYsIDB4YWU1NzU3ZjksIDB4NjliOWI5ZDAsCisJMHgxNzg2ODY5MSwgMHg5OWMxYzE1OCwgMHgzYTFkMWQyNywgMHgyNzllOWViOSwKKwkweGQ5ZTFlMTM4LCAweGViZjhmODEzLCAweDJiOTg5OGIzLCAweDIyMTExMTMzLAorCTB4ZDI2OTY5YmIsIDB4YTlkOWQ5NzAsIDB4MDc4ZThlODksIDB4MzM5NDk0YTcsCisJMHgyZDliOWJiNiwgMHgzYzFlMWUyMiwgMHgxNTg3ODc5MiwgMHhjOWU5ZTkyMCwKKwkweDg3Y2VjZTQ5LCAweGFhNTU1NWZmLCAweDUwMjgyODc4LCAweGE1ZGZkZjdhLAorCTB4MDM4YzhjOGYsIDB4NTlhMWExZjgsIDB4MDk4OTg5ODAsIDB4MWEwZDBkMTcsCisJMHg2NWJmYmZkYSwgMHhkN2U2ZTYzMSwgMHg4NDQyNDJjNiwgMHhkMDY4NjhiOCwKKwkweDgyNDE0MWMzLCAweDI5OTk5OWIwLCAweDVhMmQyZDc3LCAweDFlMGYwZjExLAorCTB4N2JiMGIwY2IsIDB4YTg1NDU0ZmMsIDB4NmRiYmJiZDYsIDB4MmMxNjE2M2EpOworJGNvZGUuPTw8X19fOworLmJ5dGUJMHg2MywgMHg3YywgMHg3NywgMHg3YiwgMHhmMiwgMHg2YiwgMHg2ZiwgMHhjNQorLmJ5dGUJMHgzMCwgMHgwMSwgMHg2NywgMHgyYiwgMHhmZSwgMHhkNywgMHhhYiwgMHg3NgorLmJ5dGUJMHhjYSwgMHg4MiwgMHhjOSwgMHg3ZCwgMHhmYSwgMHg1OSwgMHg0NywgMHhmMAorLmJ5dGUJMHhhZCwgMHhkNCwgMHhhMiwgMHhhZiwgMHg5YywgMHhhNCwgMHg3MiwgMHhjMAorLmJ5dGUJMHhiNywgMHhmZCwgMHg5MywgMHgyNiwgMHgzNiwgMHgzZiwgMHhmNywgMHhjYworLmJ5dGUJMHgzNCwgMHhhNSwgMHhlNSwgMHhmMSwgMHg3MSwgMHhkOCwgMHgzMSwgMHgxNQorLmJ5dGUJMHgwNCwgMHhjNywgMHgyMywgMHhjMywgMHgxOCwgMHg5NiwgMHgwNSwgMHg5YQorLmJ5dGUJMHgwNywgMHgxMiwgMHg4MCwgMHhlMiwgMHhlYiwgMHgyNywgMHhiMiwgMHg3NQorLmJ5dGUJMHgwOSwgMHg4MywgMHgyYywgMHgxYSwgMHgxYiwgMHg2ZSwgMHg1YSwgMHhhMAorLmJ5dGUJMHg1MiwgMHgzYiwgMHhkNiwgMHhiMywgMHgyOSwgMHhlMywgMHgyZiwgMHg4NAorLmJ5dGUJMHg1MywgMHhkMSwgMHgwMCwgMHhlZCwgMHgyMCwgMHhmYywgMHhiMSwgMHg1YgorLmJ5dGUJMHg2YSwgMHhjYiwgMHhiZSwgMHgzOSwgMHg0YSwgMHg0YywgMHg1OCwgMHhjZgorLmJ5dGUJMHhkMCwgMHhlZiwgMHhhYSwgMHhmYiwgMHg0MywgMHg0ZCwgMHgzMywgMHg4NQorLmJ5dGUJMHg0NSwgMHhmOSwgMHgwMiwgMHg3ZiwgMHg1MCwgMHgzYywgMHg5ZiwgMHhhOAorLmJ5dGUJMHg1MSwgMHhhMywgMHg0MCwgMHg4ZiwgMHg5MiwgMHg5ZCwgMHgzOCwgMHhmNQorLmJ5dGUJMHhiYywgMHhiNiwgMHhkYSwgMHgyMSwgMHgxMCwgMHhmZiwgMHhmMywgMHhkMgorLmJ5dGUJMHhjZCwgMHgwYywgMHgxMywgMHhlYywgMHg1ZiwgMHg5NywgMHg0NCwgMHgxNworLmJ5dGUJMHhjNCwgMHhhNywgMHg3ZSwgMHgzZCwgMHg2NCwgMHg1ZCwgMHgxOSwgMHg3MworLmJ5dGUJMHg2MCwgMHg4MSwgMHg0ZiwgMHhkYywgMHgyMiwgMHgyYSwgMHg5MCwgMHg4OAorLmJ5dGUJMHg0NiwgMHhlZSwgMHhiOCwgMHgxNCwgMHhkZSwgMHg1ZSwgMHgwYiwgMHhkYgorLmJ5dGUJMHhlMCwgMHgzMiwgMHgzYSwgMHgwYSwgMHg0OSwgMHgwNiwgMHgyNCwgMHg1YworLmJ5dGUJMHhjMiwgMHhkMywgMHhhYywgMHg2MiwgMHg5MSwgMHg5NSwgMHhlNCwgMHg3OQorLmJ5dGUJMHhlNywgMHhjOCwgMHgzNywgMHg2ZCwgMHg4ZCwgMHhkNSwgMHg0ZSwgMHhhOQorLmJ5dGUJMHg2YywgMHg1NiwgMHhmNCwgMHhlYSwgMHg2NSwgMHg3YSwgMHhhZSwgMHgwOAorLmJ5dGUJMHhiYSwgMHg3OCwgMHgyNSwgMHgyZSwgMHgxYywgMHhhNiwgMHhiNCwgMHhjNgorLmJ5dGUJMHhlOCwgMHhkZCwgMHg3NCwgMHgxZiwgMHg0YiwgMHhiZCwgMHg4YiwgMHg4YQorLmJ5dGUJMHg3MCwgMHgzZSwgMHhiNSwgMHg2NiwgMHg0OCwgMHgwMywgMHhmNiwgMHgwZQorLmJ5dGUJMHg2MSwgMHgzNSwgMHg1NywgMHhiOSwgMHg4NiwgMHhjMSwgMHgxZCwgMHg5ZQorLmJ5dGUJMHhlMSwgMHhmOCwgMHg5OCwgMHgxMSwgMHg2OSwgMHhkOSwgMHg4ZSwgMHg5NAorLmJ5dGUJMHg5YiwgMHgxZSwgMHg4NywgMHhlOSwgMHhjZSwgMHg1NSwgMHgyOCwgMHhkZgorLmJ5dGUJMHg4YywgMHhhMSwgMHg4OSwgMHgwZCwgMHhiZiwgMHhlNiwgMHg0MiwgMHg2OAorLmJ5dGUJMHg0MSwgMHg5OSwgMHgyZCwgMHgwZiwgMHhiMCwgMHg1NCwgMHhiYiwgMHgxNgorX19fCismX2RhdGFfd29yZCgKKwkweDUxZjRhNzUwLCAweDdlNDE2NTUzLCAweDFhMTdhNGMzLCAweDNhMjc1ZTk2LAorCTB4M2JhYjZiY2IsIDB4MWY5ZDQ1ZjEsIDB4YWNmYTU4YWIsIDB4NGJlMzAzOTMsCisJMHgyMDMwZmE1NSwgMHhhZDc2NmRmNiwgMHg4OGNjNzY5MSwgMHhmNTAyNGMyNSwKKwkweDRmZTVkN2ZjLCAweGM1MmFjYmQ3LCAweDI2MzU0NDgwLCAweGI1NjJhMzhmLAorCTB4ZGViMTVhNDksIDB4MjViYTFiNjcsIDB4NDVlYTBlOTgsIDB4NWRmZWMwZTEsCisJMHhjMzJmNzUwMiwgMHg4MTRjZjAxMiwgMHg4ZDQ2OTdhMywgMHg2YmQzZjljNiwKKwkweDAzOGY1ZmU3LCAweDE1OTI5Yzk1LCAweGJmNmQ3YWViLCAweDk1NTI1OWRhLAorCTB4ZDRiZTgzMmQsIDB4NTg3NDIxZDMsIDB4NDllMDY5MjksIDB4OGVjOWM4NDQsCisJMHg3NWMyODk2YSwgMHhmNDhlNzk3OCwgMHg5OTU4M2U2YiwgMHgyN2I5NzFkZCwKKwkweGJlZTE0ZmI2LCAweGYwODhhZDE3LCAweGM5MjBhYzY2LCAweDdkY2UzYWI0LAorCTB4NjNkZjRhMTgsIDB4ZTUxYTMxODIsIDB4OTc1MTMzNjAsIDB4NjI1MzdmNDUsCisJMHhiMTY0NzdlMCwgMHhiYjZiYWU4NCwgMHhmZTgxYTAxYywgMHhmOTA4MmI5NCwKKwkweDcwNDg2ODU4LCAweDhmNDVmZDE5LCAweDk0ZGU2Yzg3LCAweDUyN2JmOGI3LAorCTB4YWI3M2QzMjMsIDB4NzI0YjAyZTIsIDB4ZTMxZjhmNTcsIDB4NjY1NWFiMmEsCisJMHhiMmViMjgwNywgMHgyZmI1YzIwMywgMHg4NmM1N2I5YSwgMHhkMzM3MDhhNSwKKwkweDMwMjg4N2YyLCAweDIzYmZhNWIyLCAweDAyMDM2YWJhLCAweGVkMTY4MjVjLAorCTB4OGFjZjFjMmIsIDB4YTc3OWI0OTIsIDB4ZjMwN2YyZjAsIDB4NGU2OWUyYTEsCisJMHg2NWRhZjRjZCwgMHgwNjA1YmVkNSwgMHhkMTM0NjIxZiwgMHhjNGE2ZmU4YSwKKwkweDM0MmU1MzlkLCAweGEyZjM1NWEwLCAweDA1OGFlMTMyLCAweGE0ZjZlYjc1LAorCTB4MGI4M2VjMzksIDB4NDA2MGVmYWEsIDB4NWU3MTlmMDYsIDB4YmQ2ZTEwNTEsCisJMHgzZTIxOGFmOSwgMHg5NmRkMDYzZCwgMHhkZDNlMDVhZSwgMHg0ZGU2YmQ0NiwKKwkweDkxNTQ4ZGI1LCAweDcxYzQ1ZDA1LCAweDA0MDZkNDZmLCAweDYwNTAxNWZmLAorCTB4MTk5OGZiMjQsIDB4ZDZiZGU5OTcsIDB4ODk0MDQzY2MsIDB4NjdkOTllNzcsCisJMHhiMGU4NDJiZCwgMHgwNzg5OGI4OCwgMHhlNzE5NWIzOCwgMHg3OWM4ZWVkYiwKKwkweGExN2MwYTQ3LCAweDdjNDIwZmU5LCAweGY4ODQxZWM5LCAweDAwMDAwMDAwLAorCTB4MDk4MDg2ODMsIDB4MzIyYmVkNDgsIDB4MWUxMTcwYWMsIDB4NmM1YTcyNGUsCisJMHhmZDBlZmZmYiwgMHgwZjg1Mzg1NiwgMHgzZGFlZDUxZSwgMHgzNjJkMzkyNywKKwkweDBhMGZkOTY0LCAweDY4NWNhNjIxLCAweDliNWI1NGQxLCAweDI0MzYyZTNhLAorCTB4MGMwYTY3YjEsIDB4OTM1N2U3MGYsIDB4YjRlZTk2ZDIsIDB4MWI5YjkxOWUsCisJMHg4MGMwYzU0ZiwgMHg2MWRjMjBhMiwgMHg1YTc3NGI2OSwgMHgxYzEyMWExNiwKKwkweGUyOTNiYTBhLCAweGMwYTAyYWU1LCAweDNjMjJlMDQzLCAweDEyMWIxNzFkLAorCTB4MGUwOTBkMGIsIDB4ZjI4YmM3YWQsIDB4MmRiNmE4YjksIDB4MTQxZWE5YzgsCisJMHg1N2YxMTk4NSwgMHhhZjc1MDc0YywgMHhlZTk5ZGRiYiwgMHhhMzdmNjBmZCwKKwkweGY3MDEyNjlmLCAweDVjNzJmNWJjLCAweDQ0NjYzYmM1LCAweDViZmI3ZTM0LAorCTB4OGI0MzI5NzYsIDB4Y2IyM2M2ZGMsIDB4YjZlZGZjNjgsIDB4YjhlNGYxNjMsCisJMHhkNzMxZGNjYSwgMHg0MjYzODUxMCwgMHgxMzk3MjI0MCwgMHg4NGM2MTEyMCwKKwkweDg1NGEyNDdkLCAweGQyYmIzZGY4LCAweGFlZjkzMjExLCAweGM3MjlhMTZkLAorCTB4MWQ5ZTJmNGIsIDB4ZGNiMjMwZjMsIDB4MGQ4NjUyZWMsIDB4NzdjMWUzZDAsCisJMHgyYmIzMTY2YywgMHhhOTcwYjk5OSwgMHgxMTk0NDhmYSwgMHg0N2U5NjQyMiwKKwkweGE4ZmM4Y2M0LCAweGEwZjAzZjFhLCAweDU2N2QyY2Q4LCAweDIyMzM5MGVmLAorCTB4ODc0OTRlYzcsIDB4ZDkzOGQxYzEsIDB4OGNjYWEyZmUsIDB4OThkNDBiMzYsCisJMHhhNmY1ODFjZiwgMHhhNTdhZGUyOCwgMHhkYWI3OGUyNiwgMHgzZmFkYmZhNCwKKwkweDJjM2E5ZGU0LCAweDUwNzg5MjBkLCAweDZhNWZjYzliLCAweDU0N2U0NjYyLAorCTB4ZjY4ZDEzYzIsIDB4OTBkOGI4ZTgsIDB4MmUzOWY3NWUsIDB4ODJjM2FmZjUsCisJMHg5ZjVkODBiZSwgMHg2OWQwOTM3YywgMHg2ZmQ1MmRhOSwgMHhjZjI1MTJiMywKKwkweGM4YWM5OTNiLCAweDEwMTg3ZGE3LCAweGU4OWM2MzZlLCAweGRiM2JiYjdiLAorCTB4Y2QyNjc4MDksIDB4NmU1OTE4ZjQsIDB4ZWM5YWI3MDEsIDB4ODM0ZjlhYTgsCisJMHhlNjk1NmU2NSwgMHhhYWZmZTY3ZSwgMHgyMWJjY2YwOCwgMHhlZjE1ZThlNiwKKwkweGJhZTc5YmQ5LCAweDRhNmYzNmNlLCAweGVhOWYwOWQ0LCAweDI5YjA3Y2Q2LAorCTB4MzFhNGIyYWYsIDB4MmEzZjIzMzEsIDB4YzZhNTk0MzAsIDB4MzVhMjY2YzAsCisJMHg3NDRlYmMzNywgMHhmYzgyY2FhNiwgMHhlMDkwZDBiMCwgMHgzM2E3ZDgxNSwKKwkweGYxMDQ5ODRhLCAweDQxZWNkYWY3LCAweDdmY2Q1MDBlLCAweDE3OTFmNjJmLAorCTB4NzY0ZGQ2OGQsIDB4NDNlZmIwNGQsIDB4Y2NhYTRkNTQsIDB4ZTQ5NjA0ZGYsCisJMHg5ZWQxYjVlMywgMHg0YzZhODgxYiwgMHhjMTJjMWZiOCwgMHg0NjY1NTE3ZiwKKwkweDlkNWVlYTA0LCAweDAxOGMzNTVkLCAweGZhODc3NDczLCAweGZiMGI0MTJlLAorCTB4YjM2NzFkNWEsIDB4OTJkYmQyNTIsIDB4ZTkxMDU2MzMsIDB4NmRkNjQ3MTMsCisJMHg5YWQ3NjE4YywgMHgzN2ExMGM3YSwgMHg1OWY4MTQ4ZSwgMHhlYjEzM2M4OSwKKwkweGNlYTkyN2VlLCAweGI3NjFjOTM1LCAweGUxMWNlNWVkLCAweDdhNDdiMTNjLAorCTB4OWNkMmRmNTksIDB4NTVmMjczM2YsIDB4MTgxNGNlNzksIDB4NzNjNzM3YmYsCisJMHg1M2Y3Y2RlYSwgMHg1ZmZkYWE1YiwgMHhkZjNkNmYxNCwgMHg3ODQ0ZGI4NiwKKwkweGNhYWZmMzgxLCAweGI5NjhjNDNlLCAweDM4MjQzNDJjLCAweGMyYTM0MDVmLAorCTB4MTYxZGMzNzIsIDB4YmNlMjI1MGMsIDB4MjgzYzQ5OGIsIDB4ZmYwZDk1NDEsCisJMHgzOWE4MDE3MSwgMHgwODBjYjNkZSwgMHhkOGI0ZTQ5YywgMHg2NDU2YzE5MCwKKwkweDdiY2I4NDYxLCAweGQ1MzJiNjcwLCAweDQ4NmM1Yzc0LCAweGQwYjg1NzQyKTsKKyRjb2RlLj08PF9fXzsKKy5ieXRlCTB4NTIsIDB4MDksIDB4NmEsIDB4ZDUsIDB4MzAsIDB4MzYsIDB4YTUsIDB4MzgKKy5ieXRlCTB4YmYsIDB4NDAsIDB4YTMsIDB4OWUsIDB4ODEsIDB4ZjMsIDB4ZDcsIDB4ZmIKKy5ieXRlCTB4N2MsIDB4ZTMsIDB4MzksIDB4ODIsIDB4OWIsIDB4MmYsIDB4ZmYsIDB4ODcKKy5ieXRlCTB4MzQsIDB4OGUsIDB4NDMsIDB4NDQsIDB4YzQsIDB4ZGUsIDB4ZTksIDB4Y2IKKy5ieXRlCTB4NTQsIDB4N2IsIDB4OTQsIDB4MzIsIDB4YTYsIDB4YzIsIDB4MjMsIDB4M2QKKy5ieXRlCTB4ZWUsIDB4NGMsIDB4OTUsIDB4MGIsIDB4NDIsIDB4ZmEsIDB4YzMsIDB4NGUKKy5ieXRlCTB4MDgsIDB4MmUsIDB4YTEsIDB4NjYsIDB4MjgsIDB4ZDksIDB4MjQsIDB4YjIKKy5ieXRlCTB4NzYsIDB4NWIsIDB4YTIsIDB4NDksIDB4NmQsIDB4OGIsIDB4ZDEsIDB4MjUKKy5ieXRlCTB4NzIsIDB4ZjgsIDB4ZjYsIDB4NjQsIDB4ODYsIDB4NjgsIDB4OTgsIDB4MTYKKy5ieXRlCTB4ZDQsIDB4YTQsIDB4NWMsIDB4Y2MsIDB4NWQsIDB4NjUsIDB4YjYsIDB4OTIKKy5ieXRlCTB4NmMsIDB4NzAsIDB4NDgsIDB4NTAsIDB4ZmQsIDB4ZWQsIDB4YjksIDB4ZGEKKy5ieXRlCTB4NWUsIDB4MTUsIDB4NDYsIDB4NTcsIDB4YTcsIDB4OGQsIDB4OWQsIDB4ODQKKy5ieXRlCTB4OTAsIDB4ZDgsIDB4YWIsIDB4MDAsIDB4OGMsIDB4YmMsIDB4ZDMsIDB4MGEKKy5ieXRlCTB4ZjcsIDB4ZTQsIDB4NTgsIDB4MDUsIDB4YjgsIDB4YjMsIDB4NDUsIDB4MDYKKy5ieXRlCTB4ZDAsIDB4MmMsIDB4MWUsIDB4OGYsIDB4Y2EsIDB4M2YsIDB4MGYsIDB4MDIKKy5ieXRlCTB4YzEsIDB4YWYsIDB4YmQsIDB4MDMsIDB4MDEsIDB4MTMsIDB4OGEsIDB4NmIKKy5ieXRlCTB4M2EsIDB4OTEsIDB4MTEsIDB4NDEsIDB4NGYsIDB4NjcsIDB4ZGMsIDB4ZWEKKy5ieXRlCTB4OTcsIDB4ZjIsIDB4Y2YsIDB4Y2UsIDB4ZjAsIDB4YjQsIDB4ZTYsIDB4NzMKKy5ieXRlCTB4OTYsIDB4YWMsIDB4NzQsIDB4MjIsIDB4ZTcsIDB4YWQsIDB4MzUsIDB4ODUKKy5ieXRlCTB4ZTIsIDB4ZjksIDB4MzcsIDB4ZTgsIDB4MWMsIDB4NzUsIDB4ZGYsIDB4NmUKKy5ieXRlCTB4NDcsIDB4ZjEsIDB4MWEsIDB4NzEsIDB4MWQsIDB4MjksIDB4YzUsIDB4ODkKKy5ieXRlCTB4NmYsIDB4YjcsIDB4NjIsIDB4MGUsIDB4YWEsIDB4MTgsIDB4YmUsIDB4MWIKKy5ieXRlCTB4ZmMsIDB4NTYsIDB4M2UsIDB4NGIsIDB4YzYsIDB4ZDIsIDB4NzksIDB4MjAKKy5ieXRlCTB4OWEsIDB4ZGIsIDB4YzAsIDB4ZmUsIDB4NzgsIDB4Y2QsIDB4NWEsIDB4ZjQKKy5ieXRlCTB4MWYsIDB4ZGQsIDB4YTgsIDB4MzMsIDB4ODgsIDB4MDcsIDB4YzcsIDB4MzEKKy5ieXRlCTB4YjEsIDB4MTIsIDB4MTAsIDB4NTksIDB4MjcsIDB4ODAsIDB4ZWMsIDB4NWYKKy5ieXRlCTB4NjAsIDB4NTEsIDB4N2YsIDB4YTksIDB4MTksIDB4YjUsIDB4NGEsIDB4MGQKKy5ieXRlCTB4MmQsIDB4ZTUsIDB4N2EsIDB4OWYsIDB4OTMsIDB4YzksIDB4OWMsIDB4ZWYKKy5ieXRlCTB4YTAsIDB4ZTAsIDB4M2IsIDB4NGQsIDB4YWUsIDB4MmEsIDB4ZjUsIDB4YjAKKy5ieXRlCTB4YzgsIDB4ZWIsIDB4YmIsIDB4M2MsIDB4ODMsIDB4NTMsIDB4OTksIDB4NjEKKy5ieXRlCTB4MTcsIDB4MmIsIDB4MDQsIDB4N2UsIDB4YmEsIDB4NzcsIDB4ZDYsIDB4MjYKKy5ieXRlCTB4ZTEsIDB4NjksIDB4MTQsIDB4NjMsIDB4NTUsIDB4MjEsIDB4MGMsIDB4N2QKKworCisuZ2xvYmwJLkFFU19lbmNyeXB0CisuYWxpZ24JNworLkFFU19lbmNyeXB0OgorCSRTVFUJJHNwLC0kRlJBTUUoJHNwKQorCW1mbHIJcjAKKworCSRQVVNICSR0b2MsYCRGUkFNRS0kU0laRV9UKjIwYCgkc3ApCisJJFBVU0gJcjEzLGAkRlJBTUUtJFNJWkVfVCoxOWAoJHNwKQorCSRQVVNICXIxNCxgJEZSQU1FLSRTSVpFX1QqMThgKCRzcCkKKwkkUFVTSAlyMTUsYCRGUkFNRS0kU0laRV9UKjE3YCgkc3ApCisJJFBVU0gJcjE2LGAkRlJBTUUtJFNJWkVfVCoxNmAoJHNwKQorCSRQVVNICXIxNyxgJEZSQU1FLSRTSVpFX1QqMTVgKCRzcCkKKwkkUFVTSAlyMTgsYCRGUkFNRS0kU0laRV9UKjE0YCgkc3ApCisJJFBVU0gJcjE5LGAkRlJBTUUtJFNJWkVfVCoxM2AoJHNwKQorCSRQVVNICXIyMCxgJEZSQU1FLSRTSVpFX1QqMTJgKCRzcCkKKwkkUFVTSAlyMjEsYCRGUkFNRS0kU0laRV9UKjExYCgkc3ApCisJJFBVU0gJcjIyLGAkRlJBTUUtJFNJWkVfVCoxMGAoJHNwKQorCSRQVVNICXIyMyxgJEZSQU1FLSRTSVpFX1QqOWAoJHNwKQorCSRQVVNICXIyNCxgJEZSQU1FLSRTSVpFX1QqOGAoJHNwKQorCSRQVVNICXIyNSxgJEZSQU1FLSRTSVpFX1QqN2AoJHNwKQorCSRQVVNICXIyNixgJEZSQU1FLSRTSVpFX1QqNmAoJHNwKQorCSRQVVNICXIyNyxgJEZSQU1FLSRTSVpFX1QqNWAoJHNwKQorCSRQVVNICXIyOCxgJEZSQU1FLSRTSVpFX1QqNGAoJHNwKQorCSRQVVNICXIyOSxgJEZSQU1FLSRTSVpFX1QqM2AoJHNwKQorCSRQVVNICXIzMCxgJEZSQU1FLSRTSVpFX1QqMmAoJHNwKQorCSRQVVNICXIzMSxgJEZSQU1FLSRTSVpFX1QqMWAoJHNwKQorCSRQVVNICXIwLGAkRlJBTUUrJExSU0FWRWAoJHNwKQorCisJYW5kaS4JJHQwLCRpbnAsMworCWFuZGkuCSR0MSwkb3V0LDMKKwlvci4JJHQwLCR0MCwkdDEKKwlibmUJTGVuY191bmFsaWduZWQKKworTGVuY191bmFsaWduZWRfb2s6CisJbHd6CSRzMCwwKCRpbnApCisJbHd6CSRzMSw0KCRpbnApCisJbHd6CSRzMiw4KCRpbnApCisJbHd6CSRzMywxMigkaW5wKQorCWJsCUxBRVNfVGUKKwlibAlMcHBjX0FFU19lbmNyeXB0X2NvbXBhY3QKKwlzdHcJJHMwLDAoJG91dCkKKwlzdHcJJHMxLDQoJG91dCkKKwlzdHcJJHMyLDgoJG91dCkKKwlzdHcJJHMzLDEyKCRvdXQpCisJYglMZW5jX2RvbmUKKworTGVuY191bmFsaWduZWQ6CisJc3ViZmljCSR0MCwkaW5wLDQwOTYKKwlzdWJmaWMJJHQxLCRvdXQsNDA5NgorCWFuZGkuCSR0MCwkdDAsNDA5Ni0xNgorCWJlcQlMZW5jX3hwYWdlCisJYW5kaS4JJHQxLCR0MSw0MDk2LTE2CisJYm5lCUxlbmNfdW5hbGlnbmVkX29rCisKK0xlbmNfeHBhZ2U6CisJbGJ6CSRhY2MwMCwwKCRpbnApCisJbGJ6CSRhY2MwMSwxKCRpbnApCisJbGJ6CSRhY2MwMiwyKCRpbnApCisJbGJ6CSRzMCwzKCRpbnApCisJbGJ6CSRhY2MwNCw0KCRpbnApCisJbGJ6CSRhY2MwNSw1KCRpbnApCisJbGJ6CSRhY2MwNiw2KCRpbnApCisJbGJ6CSRzMSw3KCRpbnApCisJbGJ6CSRhY2MwOCw4KCRpbnApCisJbGJ6CSRhY2MwOSw5KCRpbnApCisJbGJ6CSRhY2MxMCwxMCgkaW5wKQorCWluc3J3aQkkczAsJGFjYzAwLDgsMAorCWxiegkkczIsMTEoJGlucCkKKwlpbnNyd2kJJHMxLCRhY2MwNCw4LDAKKwlsYnoJJGFjYzEyLDEyKCRpbnApCisJaW5zcndpCSRzMCwkYWNjMDEsOCw4CisJbGJ6CSRhY2MxMywxMygkaW5wKQorCWluc3J3aQkkczEsJGFjYzA1LDgsOAorCWxiegkkYWNjMTQsMTQoJGlucCkKKwlpbnNyd2kJJHMwLCRhY2MwMiw4LDE2CisJbGJ6CSRzMywxNSgkaW5wKQorCWluc3J3aQkkczEsJGFjYzA2LDgsMTYKKwlpbnNyd2kJJHMyLCRhY2MwOCw4LDAKKwlpbnNyd2kJJHMzLCRhY2MxMiw4LDAKKwlpbnNyd2kJJHMyLCRhY2MwOSw4LDgKKwlpbnNyd2kJJHMzLCRhY2MxMyw4LDgKKwlpbnNyd2kJJHMyLCRhY2MxMCw4LDE2CisJaW5zcndpCSRzMywkYWNjMTQsOCwxNgorCisJYmwJTEFFU19UZQorCWJsCUxwcGNfQUVTX2VuY3J5cHRfY29tcGFjdAorCisJZXh0cndpCSRhY2MwMCwkczAsOCwwCisJZXh0cndpCSRhY2MwMSwkczAsOCw4CisJc3RiCSRhY2MwMCwwKCRvdXQpCisJZXh0cndpCSRhY2MwMiwkczAsOCwxNgorCXN0YgkkYWNjMDEsMSgkb3V0KQorCXN0YgkkYWNjMDIsMigkb3V0KQorCWV4dHJ3aQkkYWNjMDQsJHMxLDgsMAorCXN0YgkkczAsMygkb3V0KQorCWV4dHJ3aQkkYWNjMDUsJHMxLDgsOAorCXN0YgkkYWNjMDQsNCgkb3V0KQorCWV4dHJ3aQkkYWNjMDYsJHMxLDgsMTYKKwlzdGIJJGFjYzA1LDUoJG91dCkKKwlzdGIJJGFjYzA2LDYoJG91dCkKKwlleHRyd2kJJGFjYzA4LCRzMiw4LDAKKwlzdGIJJHMxLDcoJG91dCkKKwlleHRyd2kJJGFjYzA5LCRzMiw4LDgKKwlzdGIJJGFjYzA4LDgoJG91dCkKKwlleHRyd2kJJGFjYzEwLCRzMiw4LDE2CisJc3RiCSRhY2MwOSw5KCRvdXQpCisJc3RiCSRhY2MxMCwxMCgkb3V0KQorCWV4dHJ3aQkkYWNjMTIsJHMzLDgsMAorCXN0YgkkczIsMTEoJG91dCkKKwlleHRyd2kJJGFjYzEzLCRzMyw4LDgKKwlzdGIJJGFjYzEyLDEyKCRvdXQpCisJZXh0cndpCSRhY2MxNCwkczMsOCwxNgorCXN0YgkkYWNjMTMsMTMoJG91dCkKKwlzdGIJJGFjYzE0LDE0KCRvdXQpCisJc3RiCSRzMywxNSgkb3V0KQorCitMZW5jX2RvbmU6CisJJFBPUAlyMCxgJEZSQU1FKyRMUlNBVkVgKCRzcCkKKwkkUE9QCSR0b2MsYCRGUkFNRS0kU0laRV9UKjIwYCgkc3ApCisJJFBPUAlyMTMsYCRGUkFNRS0kU0laRV9UKjE5YCgkc3ApCisJJFBPUAlyMTQsYCRGUkFNRS0kU0laRV9UKjE4YCgkc3ApCisJJFBPUAlyMTUsYCRGUkFNRS0kU0laRV9UKjE3YCgkc3ApCisJJFBPUAlyMTYsYCRGUkFNRS0kU0laRV9UKjE2YCgkc3ApCisJJFBPUAlyMTcsYCRGUkFNRS0kU0laRV9UKjE1YCgkc3ApCisJJFBPUAlyMTgsYCRGUkFNRS0kU0laRV9UKjE0YCgkc3ApCisJJFBPUAlyMTksYCRGUkFNRS0kU0laRV9UKjEzYCgkc3ApCisJJFBPUAlyMjAsYCRGUkFNRS0kU0laRV9UKjEyYCgkc3ApCisJJFBPUAlyMjEsYCRGUkFNRS0kU0laRV9UKjExYCgkc3ApCisJJFBPUAlyMjIsYCRGUkFNRS0kU0laRV9UKjEwYCgkc3ApCisJJFBPUAlyMjMsYCRGUkFNRS0kU0laRV9UKjlgKCRzcCkKKwkkUE9QCXIyNCxgJEZSQU1FLSRTSVpFX1QqOGAoJHNwKQorCSRQT1AJcjI1LGAkRlJBTUUtJFNJWkVfVCo3YCgkc3ApCisJJFBPUAlyMjYsYCRGUkFNRS0kU0laRV9UKjZgKCRzcCkKKwkkUE9QCXIyNyxgJEZSQU1FLSRTSVpFX1QqNWAoJHNwKQorCSRQT1AJcjI4LGAkRlJBTUUtJFNJWkVfVCo0YCgkc3ApCisJJFBPUAlyMjksYCRGUkFNRS0kU0laRV9UKjNgKCRzcCkKKwkkUE9QCXIzMCxgJEZSQU1FLSRTSVpFX1QqMmAoJHNwKQorCSRQT1AJcjMxLGAkRlJBTUUtJFNJWkVfVCoxYCgkc3ApCisJbXRscglyMAorCWFkZGkJJHNwLCRzcCwkRlJBTUUKKwlibHIKKwkubG9uZwkwCisJLmJ5dGUJMCwxMiw0LDEsMHg4MCwxOCwzLDAKKwkubG9uZwkwCisKKy5hbGlnbgk1CitMcHBjX0FFU19lbmNyeXB0OgorCWx3egkkYWNjMDAsMjQwKCRrZXkpCisJYWRkaQkkVGJsMSwkVGJsMCwzCisJbHd6CSR0MCwwKCRrZXkpCisJYWRkaQkkVGJsMiwkVGJsMCwyCisJbHd6CSR0MSw0KCRrZXkpCisJYWRkaQkkVGJsMywkVGJsMCwxCisJbHd6CSR0Miw4KCRrZXkpCisJYWRkaQkkYWNjMDAsJGFjYzAwLC0xCisJbHd6CSR0MywxMigka2V5KQorCWFkZGkJJGtleSwka2V5LDE2CisJeG9yCSRzMCwkczAsJHQwCisJeG9yCSRzMSwkczEsJHQxCisJeG9yCSRzMiwkczIsJHQyCisJeG9yCSRzMywkczMsJHQzCisJbXRjdHIJJGFjYzAwCisuYWxpZ24JNAorTGVuY19sb29wOgorCXJsd2lubQkkYWNjMDAsJHMwLGAzMi0yNCszYCwyMSwyOAorCXJsd2lubQkkYWNjMDEsJHMxLGAzMi0yNCszYCwyMSwyOAorCXJsd2lubQkkYWNjMDIsJHMyLGAzMi0yNCszYCwyMSwyOAorCXJsd2lubQkkYWNjMDMsJHMzLGAzMi0yNCszYCwyMSwyOAorCWx3egkkdDAsMCgka2V5KQorCXJsd2lubQkkYWNjMDQsJHMxLGAzMi0xNiszYCwyMSwyOAorCWx3egkkdDEsNCgka2V5KQorCXJsd2lubQkkYWNjMDUsJHMyLGAzMi0xNiszYCwyMSwyOAorCWx3egkkdDIsOCgka2V5KQorCXJsd2lubQkkYWNjMDYsJHMzLGAzMi0xNiszYCwyMSwyOAorCWx3egkkdDMsMTIoJGtleSkKKwlybHdpbm0JJGFjYzA3LCRzMCxgMzItMTYrM2AsMjEsMjgKKwlsd3p4CSRhY2MwMCwkVGJsMCwkYWNjMDAKKwlybHdpbm0JJGFjYzA4LCRzMixgMzItOCszYCwyMSwyOAorCWx3engJJGFjYzAxLCRUYmwwLCRhY2MwMQorCXJsd2lubQkkYWNjMDksJHMzLGAzMi04KzNgLDIxLDI4CisJbHd6eAkkYWNjMDIsJFRibDAsJGFjYzAyCisJcmx3aW5tCSRhY2MxMCwkczAsYDMyLTgrM2AsMjEsMjgKKwlsd3p4CSRhY2MwMywkVGJsMCwkYWNjMDMKKwlybHdpbm0JJGFjYzExLCRzMSxgMzItOCszYCwyMSwyOAorCWx3engJJGFjYzA0LCRUYmwxLCRhY2MwNAorCXJsd2lubQkkYWNjMTIsJHMzLGAwKzNgLDIxLDI4CisJbHd6eAkkYWNjMDUsJFRibDEsJGFjYzA1CisJcmx3aW5tCSRhY2MxMywkczAsYDArM2AsMjEsMjgKKwlsd3p4CSRhY2MwNiwkVGJsMSwkYWNjMDYKKwlybHdpbm0JJGFjYzE0LCRzMSxgMCszYCwyMSwyOAorCWx3engJJGFjYzA3LCRUYmwxLCRhY2MwNworCXJsd2lubQkkYWNjMTUsJHMyLGAwKzNgLDIxLDI4CisJbHd6eAkkYWNjMDgsJFRibDIsJGFjYzA4CisJeG9yCSR0MCwkdDAsJGFjYzAwCisJbHd6eAkkYWNjMDksJFRibDIsJGFjYzA5CisJeG9yCSR0MSwkdDEsJGFjYzAxCisJbHd6eAkkYWNjMTAsJFRibDIsJGFjYzEwCisJeG9yCSR0MiwkdDIsJGFjYzAyCisJbHd6eAkkYWNjMTEsJFRibDIsJGFjYzExCisJeG9yCSR0MywkdDMsJGFjYzAzCisJbHd6eAkkYWNjMTIsJFRibDMsJGFjYzEyCisJeG9yCSR0MCwkdDAsJGFjYzA0CisJbHd6eAkkYWNjMTMsJFRibDMsJGFjYzEzCisJeG9yCSR0MSwkdDEsJGFjYzA1CisJbHd6eAkkYWNjMTQsJFRibDMsJGFjYzE0CisJeG9yCSR0MiwkdDIsJGFjYzA2CisJbHd6eAkkYWNjMTUsJFRibDMsJGFjYzE1CisJeG9yCSR0MywkdDMsJGFjYzA3CisJeG9yCSR0MCwkdDAsJGFjYzA4CisJeG9yCSR0MSwkdDEsJGFjYzA5CisJeG9yCSR0MiwkdDIsJGFjYzEwCisJeG9yCSR0MywkdDMsJGFjYzExCisJeG9yCSRzMCwkdDAsJGFjYzEyCisJeG9yCSRzMSwkdDEsJGFjYzEzCisJeG9yCSRzMiwkdDIsJGFjYzE0CisJeG9yCSRzMywkdDMsJGFjYzE1CisJYWRkaQkka2V5LCRrZXksMTYKKwliZG56LQlMZW5jX2xvb3AKKworCWFkZGkJJFRibDIsJFRibDAsMjA0OAorCW5vcAorCWx3egkkdDAsMCgka2V5KQorCXJsd2lubQkkYWNjMDAsJHMwLGAzMi0yNGAsMjQsMzEKKwlsd3oJJHQxLDQoJGtleSkKKwlybHdpbm0JJGFjYzAxLCRzMSxgMzItMjRgLDI0LDMxCisJbHd6CSR0Miw4KCRrZXkpCisJcmx3aW5tCSRhY2MwMiwkczIsYDMyLTI0YCwyNCwzMQorCWx3egkkdDMsMTIoJGtleSkKKwlybHdpbm0JJGFjYzAzLCRzMyxgMzItMjRgLDI0LDMxCisJbHd6CSRhY2MwOCxgMjA0OCswYCgkVGJsMCkJISBwcmVmZXRjaCBUZTQKKwlybHdpbm0JJGFjYzA0LCRzMSxgMzItMTZgLDI0LDMxCisJbHd6CSRhY2MwOSxgMjA0OCszMmAoJFRibDApCisJcmx3aW5tCSRhY2MwNSwkczIsYDMyLTE2YCwyNCwzMQorCWx3egkkYWNjMTAsYDIwNDgrNjRgKCRUYmwwKQorCXJsd2lubQkkYWNjMDYsJHMzLGAzMi0xNmAsMjQsMzEKKwlsd3oJJGFjYzExLGAyMDQ4Kzk2YCgkVGJsMCkKKwlybHdpbm0JJGFjYzA3LCRzMCxgMzItMTZgLDI0LDMxCisJbHd6CSRhY2MxMixgMjA0OCsxMjhgKCRUYmwwKQorCXJsd2lubQkkYWNjMDgsJHMyLGAzMi04YCwyNCwzMQorCWx3egkkYWNjMTMsYDIwNDgrMTYwYCgkVGJsMCkKKwlybHdpbm0JJGFjYzA5LCRzMyxgMzItOGAsMjQsMzEKKwlsd3oJJGFjYzE0LGAyMDQ4KzE5MmAoJFRibDApCisJcmx3aW5tCSRhY2MxMCwkczAsYDMyLThgLDI0LDMxCisJbHd6CSRhY2MxNSxgMjA0OCsyMjRgKCRUYmwwKQorCXJsd2lubQkkYWNjMTEsJHMxLGAzMi04YCwyNCwzMQorCWxiengJJGFjYzAwLCRUYmwyLCRhY2MwMAorCXJsd2lubQkkYWNjMTIsJHMzLGAwYCwyNCwzMQorCWxiengJJGFjYzAxLCRUYmwyLCRhY2MwMQorCXJsd2lubQkkYWNjMTMsJHMwLGAwYCwyNCwzMQorCWxiengJJGFjYzAyLCRUYmwyLCRhY2MwMgorCXJsd2lubQkkYWNjMTQsJHMxLGAwYCwyNCwzMQorCWxiengJJGFjYzAzLCRUYmwyLCRhY2MwMworCXJsd2lubQkkYWNjMTUsJHMyLGAwYCwyNCwzMQorCWxiengJJGFjYzA0LCRUYmwyLCRhY2MwNAorCXJsd2lubQkkczAsJGFjYzAwLDI0LDAsNworCWxiengJJGFjYzA1LCRUYmwyLCRhY2MwNQorCXJsd2lubQkkczEsJGFjYzAxLDI0LDAsNworCWxiengJJGFjYzA2LCRUYmwyLCRhY2MwNgorCXJsd2lubQkkczIsJGFjYzAyLDI0LDAsNworCWxiengJJGFjYzA3LCRUYmwyLCRhY2MwNworCXJsd2lubQkkczMsJGFjYzAzLDI0LDAsNworCWxiengJJGFjYzA4LCRUYmwyLCRhY2MwOAorCXJsd2ltaQkkczAsJGFjYzA0LDE2LDgsMTUKKwlsYnp4CSRhY2MwOSwkVGJsMiwkYWNjMDkKKwlybHdpbWkJJHMxLCRhY2MwNSwxNiw4LDE1CisJbGJ6eAkkYWNjMTAsJFRibDIsJGFjYzEwCisJcmx3aW1pCSRzMiwkYWNjMDYsMTYsOCwxNQorCWxiengJJGFjYzExLCRUYmwyLCRhY2MxMQorCXJsd2ltaQkkczMsJGFjYzA3LDE2LDgsMTUKKwlsYnp4CSRhY2MxMiwkVGJsMiwkYWNjMTIKKwlybHdpbWkJJHMwLCRhY2MwOCw4LDE2LDIzCisJbGJ6eAkkYWNjMTMsJFRibDIsJGFjYzEzCisJcmx3aW1pCSRzMSwkYWNjMDksOCwxNiwyMworCWxiengJJGFjYzE0LCRUYmwyLCRhY2MxNAorCXJsd2ltaQkkczIsJGFjYzEwLDgsMTYsMjMKKwlsYnp4CSRhY2MxNSwkVGJsMiwkYWNjMTUKKwlybHdpbWkJJHMzLCRhY2MxMSw4LDE2LDIzCisJb3IJJHMwLCRzMCwkYWNjMTIKKwlvcgkkczEsJHMxLCRhY2MxMworCW9yCSRzMiwkczIsJGFjYzE0CisJb3IJJHMzLCRzMywkYWNjMTUKKwl4b3IJJHMwLCRzMCwkdDAKKwl4b3IJJHMxLCRzMSwkdDEKKwl4b3IJJHMyLCRzMiwkdDIKKwl4b3IJJHMzLCRzMywkdDMKKwlibHIKKwkubG9uZwkwCisJLmJ5dGUJMCwxMiwweDE0LDAsMCwwLDAsMAorCisuYWxpZ24JNAorTHBwY19BRVNfZW5jcnlwdF9jb21wYWN0OgorCWx3egkkYWNjMDAsMjQwKCRrZXkpCisJYWRkaQkkVGJsMSwkVGJsMCwyMDQ4CisJbHd6CSR0MCwwKCRrZXkpCisJbGlzCSRtYXNrODAsMHg4MDgwCisJbHd6CSR0MSw0KCRrZXkpCisJbGlzCSRtYXNrMWIsMHgxYjFiCisJbHd6CSR0Miw4KCRrZXkpCisJb3JpCSRtYXNrODAsJG1hc2s4MCwweDgwODAKKwlsd3oJJHQzLDEyKCRrZXkpCisJb3JpCSRtYXNrMWIsJG1hc2sxYiwweDFiMWIKKwlhZGRpCSRrZXksJGtleSwxNgorCW10Y3RyCSRhY2MwMAorLmFsaWduCTQKK0xlbmNfY29tcGFjdF9sb29wOgorCXhvcgkkczAsJHMwLCR0MAorCXhvcgkkczEsJHMxLCR0MQorCXJsd2lubQkkYWNjMDAsJHMwLGAzMi0yNGAsMjQsMzEKKwl4b3IJJHMyLCRzMiwkdDIKKwlybHdpbm0JJGFjYzAxLCRzMSxgMzItMjRgLDI0LDMxCisJeG9yCSRzMywkczMsJHQzCisJcmx3aW5tCSRhY2MwMiwkczIsYDMyLTI0YCwyNCwzMQorCXJsd2lubQkkYWNjMDMsJHMzLGAzMi0yNGAsMjQsMzEKKwlybHdpbm0JJGFjYzA0LCRzMSxgMzItMTZgLDI0LDMxCisJcmx3aW5tCSRhY2MwNSwkczIsYDMyLTE2YCwyNCwzMQorCXJsd2lubQkkYWNjMDYsJHMzLGAzMi0xNmAsMjQsMzEKKwlybHdpbm0JJGFjYzA3LCRzMCxgMzItMTZgLDI0LDMxCisJbGJ6eAkkYWNjMDAsJFRibDEsJGFjYzAwCisJcmx3aW5tCSRhY2MwOCwkczIsYDMyLThgLDI0LDMxCisJbGJ6eAkkYWNjMDEsJFRibDEsJGFjYzAxCisJcmx3aW5tCSRhY2MwOSwkczMsYDMyLThgLDI0LDMxCisJbGJ6eAkkYWNjMDIsJFRibDEsJGFjYzAyCisJcmx3aW5tCSRhY2MxMCwkczAsYDMyLThgLDI0LDMxCisJbGJ6eAkkYWNjMDMsJFRibDEsJGFjYzAzCisJcmx3aW5tCSRhY2MxMSwkczEsYDMyLThgLDI0LDMxCisJbGJ6eAkkYWNjMDQsJFRibDEsJGFjYzA0CisJcmx3aW5tCSRhY2MxMiwkczMsYDBgLDI0LDMxCisJbGJ6eAkkYWNjMDUsJFRibDEsJGFjYzA1CisJcmx3aW5tCSRhY2MxMywkczAsYDBgLDI0LDMxCisJbGJ6eAkkYWNjMDYsJFRibDEsJGFjYzA2CisJcmx3aW5tCSRhY2MxNCwkczEsYDBgLDI0LDMxCisJbGJ6eAkkYWNjMDcsJFRibDEsJGFjYzA3CisJcmx3aW5tCSRhY2MxNSwkczIsYDBgLDI0LDMxCisJbGJ6eAkkYWNjMDgsJFRibDEsJGFjYzA4CisJcmx3aW5tCSRzMCwkYWNjMDAsMjQsMCw3CisJbGJ6eAkkYWNjMDksJFRibDEsJGFjYzA5CisJcmx3aW5tCSRzMSwkYWNjMDEsMjQsMCw3CisJbGJ6eAkkYWNjMTAsJFRibDEsJGFjYzEwCisJcmx3aW5tCSRzMiwkYWNjMDIsMjQsMCw3CisJbGJ6eAkkYWNjMTEsJFRibDEsJGFjYzExCisJcmx3aW5tCSRzMywkYWNjMDMsMjQsMCw3CisJbGJ6eAkkYWNjMTIsJFRibDEsJGFjYzEyCisJcmx3aW1pCSRzMCwkYWNjMDQsMTYsOCwxNQorCWxiengJJGFjYzEzLCRUYmwxLCRhY2MxMworCXJsd2ltaQkkczEsJGFjYzA1LDE2LDgsMTUKKwlsYnp4CSRhY2MxNCwkVGJsMSwkYWNjMTQKKwlybHdpbWkJJHMyLCRhY2MwNiwxNiw4LDE1CisJbGJ6eAkkYWNjMTUsJFRibDEsJGFjYzE1CisJcmx3aW1pCSRzMywkYWNjMDcsMTYsOCwxNQorCXJsd2ltaQkkczAsJGFjYzA4LDgsMTYsMjMKKwlybHdpbWkJJHMxLCRhY2MwOSw4LDE2LDIzCisJcmx3aW1pCSRzMiwkYWNjMTAsOCwxNiwyMworCXJsd2ltaQkkczMsJGFjYzExLDgsMTYsMjMKKwlsd3oJJHQwLDAoJGtleSkKKwlvcgkkczAsJHMwLCRhY2MxMgorCWx3egkkdDEsNCgka2V5KQorCW9yCSRzMSwkczEsJGFjYzEzCisJbHd6CSR0Miw4KCRrZXkpCisJb3IJJHMyLCRzMiwkYWNjMTQKKwlsd3oJJHQzLDEyKCRrZXkpCisJb3IJJHMzLCRzMywkYWNjMTUKKworCWFkZGkJJGtleSwka2V5LDE2CisJYmR6CUxlbmNfY29tcGFjdF9kb25lCisKKwlhbmQJJGFjYzAwLCRzMCwkbWFzazgwCSMgcjE9cjAmMHg4MDgwODA4MAorCWFuZAkkYWNjMDEsJHMxLCRtYXNrODAKKwlhbmQJJGFjYzAyLCRzMiwkbWFzazgwCisJYW5kCSRhY2MwMywkczMsJG1hc2s4MAorCXNyd2kJJGFjYzA0LCRhY2MwMCw3CQkjIHIxPj43CisJYW5kYwkkYWNjMDgsJHMwLCRtYXNrODAJIyByMCYweDdmN2Y3ZjdmCisJc3J3aQkkYWNjMDUsJGFjYzAxLDcKKwlhbmRjCSRhY2MwOSwkczEsJG1hc2s4MAorCXNyd2kJJGFjYzA2LCRhY2MwMiw3CisJYW5kYwkkYWNjMTAsJHMyLCRtYXNrODAKKwlzcndpCSRhY2MwNywkYWNjMDMsNworCWFuZGMJJGFjYzExLCRzMywkbWFzazgwCisJc3ViCSRhY2MwMCwkYWNjMDAsJGFjYzA0CSMgcjEtKHIxPj43KQorCXN1YgkkYWNjMDEsJGFjYzAxLCRhY2MwNQorCXN1YgkkYWNjMDIsJGFjYzAyLCRhY2MwNgorCXN1YgkkYWNjMDMsJGFjYzAzLCRhY2MwNworCWFkZAkkYWNjMDgsJGFjYzA4LCRhY2MwOAkjIChyMCYweDdmN2Y3ZjdmKTw8MQorCWFkZAkkYWNjMDksJGFjYzA5LCRhY2MwOQorCWFkZAkkYWNjMTAsJGFjYzEwLCRhY2MxMAorCWFkZAkkYWNjMTEsJGFjYzExLCRhY2MxMQorCWFuZAkkYWNjMDAsJGFjYzAwLCRtYXNrMWIJIyAocjEtKHIxPj43KSkmMHgxYjFiMWIxYgorCWFuZAkkYWNjMDEsJGFjYzAxLCRtYXNrMWIKKwlhbmQJJGFjYzAyLCRhY2MwMiwkbWFzazFiCisJYW5kCSRhY2MwMywkYWNjMDMsJG1hc2sxYgorCXhvcgkkYWNjMDAsJGFjYzAwLCRhY2MwOAkjIHIyCisJeG9yCSRhY2MwMSwkYWNjMDEsJGFjYzA5CisJIHJvdGx3aQkkYWNjMTIsJHMwLDE2CQkjIFJPVEFURShyMCwxNikKKwl4b3IJJGFjYzAyLCRhY2MwMiwkYWNjMTAKKwkgcm90bHdpCSRhY2MxMywkczEsMTYKKwl4b3IJJGFjYzAzLCRhY2MwMywkYWNjMTEKKwkgcm90bHdpCSRhY2MxNCwkczIsMTYKKworCXhvcgkkczAsJHMwLCRhY2MwMAkJIyByMF5yMgorCXJvdGx3aQkkYWNjMTUsJHMzLDE2CisJeG9yCSRzMSwkczEsJGFjYzAxCisJcm90cndpCSRzMCwkczAsMjQJCSMgUk9UQVRFKHIyXnIwLDI0KQorCXhvcgkkczIsJHMyLCRhY2MwMgorCXJvdHJ3aQkkczEsJHMxLDI0CisJeG9yCSRzMywkczMsJGFjYzAzCisJcm90cndpCSRzMiwkczIsMjQKKwl4b3IJJHMwLCRzMCwkYWNjMDAJCSMgUk9UQVRFKHIyXnIwLDI0KV5yMgorCXJvdHJ3aQkkczMsJHMzLDI0CisJeG9yCSRzMSwkczEsJGFjYzAxCisJeG9yCSRzMiwkczIsJGFjYzAyCisJeG9yCSRzMywkczMsJGFjYzAzCisJcm90bHdpCSRhY2MwOCwkYWNjMTIsOAkJIyBST1RBVEUocjAsMjQpCisJeG9yCSRzMCwkczAsJGFjYzEyCQkjCisJcm90bHdpCSRhY2MwOSwkYWNjMTMsOAorCXhvcgkkczEsJHMxLCRhY2MxMworCXJvdGx3aQkkYWNjMTAsJGFjYzE0LDgKKwl4b3IJJHMyLCRzMiwkYWNjMTQKKwlyb3Rsd2kJJGFjYzExLCRhY2MxNSw4CisJeG9yCSRzMywkczMsJGFjYzE1CisJeG9yCSRzMCwkczAsJGFjYzA4CQkjCisJeG9yCSRzMSwkczEsJGFjYzA5CisJeG9yCSRzMiwkczIsJGFjYzEwCisJeG9yCSRzMywkczMsJGFjYzExCisKKwliCUxlbmNfY29tcGFjdF9sb29wCisuYWxpZ24JNAorTGVuY19jb21wYWN0X2RvbmU6CisJeG9yCSRzMCwkczAsJHQwCisJeG9yCSRzMSwkczEsJHQxCisJeG9yCSRzMiwkczIsJHQyCisJeG9yCSRzMywkczMsJHQzCisJYmxyCisJLmxvbmcJMAorCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwwLDAKKworLmdsb2JsCS5BRVNfZGVjcnlwdAorLmFsaWduCTcKKy5BRVNfZGVjcnlwdDoKKwkkU1RVCSRzcCwtJEZSQU1FKCRzcCkKKwltZmxyCXIwCisKKwkkUFVTSAkkdG9jLGAkRlJBTUUtJFNJWkVfVCoyMGAoJHNwKQorCSRQVVNICXIxMyxgJEZSQU1FLSRTSVpFX1QqMTlgKCRzcCkKKwkkUFVTSAlyMTQsYCRGUkFNRS0kU0laRV9UKjE4YCgkc3ApCisJJFBVU0gJcjE1LGAkRlJBTUUtJFNJWkVfVCoxN2AoJHNwKQorCSRQVVNICXIxNixgJEZSQU1FLSRTSVpFX1QqMTZgKCRzcCkKKwkkUFVTSAlyMTcsYCRGUkFNRS0kU0laRV9UKjE1YCgkc3ApCisJJFBVU0gJcjE4LGAkRlJBTUUtJFNJWkVfVCoxNGAoJHNwKQorCSRQVVNICXIxOSxgJEZSQU1FLSRTSVpFX1QqMTNgKCRzcCkKKwkkUFVTSAlyMjAsYCRGUkFNRS0kU0laRV9UKjEyYCgkc3ApCisJJFBVU0gJcjIxLGAkRlJBTUUtJFNJWkVfVCoxMWAoJHNwKQorCSRQVVNICXIyMixgJEZSQU1FLSRTSVpFX1QqMTBgKCRzcCkKKwkkUFVTSAlyMjMsYCRGUkFNRS0kU0laRV9UKjlgKCRzcCkKKwkkUFVTSAlyMjQsYCRGUkFNRS0kU0laRV9UKjhgKCRzcCkKKwkkUFVTSAlyMjUsYCRGUkFNRS0kU0laRV9UKjdgKCRzcCkKKwkkUFVTSAlyMjYsYCRGUkFNRS0kU0laRV9UKjZgKCRzcCkKKwkkUFVTSAlyMjcsYCRGUkFNRS0kU0laRV9UKjVgKCRzcCkKKwkkUFVTSAlyMjgsYCRGUkFNRS0kU0laRV9UKjRgKCRzcCkKKwkkUFVTSAlyMjksYCRGUkFNRS0kU0laRV9UKjNgKCRzcCkKKwkkUFVTSAlyMzAsYCRGUkFNRS0kU0laRV9UKjJgKCRzcCkKKwkkUFVTSAlyMzEsYCRGUkFNRS0kU0laRV9UKjFgKCRzcCkKKwkkUFVTSAlyMCxgJEZSQU1FKyRMUlNBVkVgKCRzcCkKKworCWFuZGkuCSR0MCwkaW5wLDMKKwlhbmRpLgkkdDEsJG91dCwzCisJb3IuCSR0MCwkdDAsJHQxCisJYm5lCUxkZWNfdW5hbGlnbmVkCisKK0xkZWNfdW5hbGlnbmVkX29rOgorCWx3egkkczAsMCgkaW5wKQorCWx3egkkczEsNCgkaW5wKQorCWx3egkkczIsOCgkaW5wKQorCWx3egkkczMsMTIoJGlucCkKKwlibAlMQUVTX1RkCisJYmwJTHBwY19BRVNfZGVjcnlwdF9jb21wYWN0CisJc3R3CSRzMCwwKCRvdXQpCisJc3R3CSRzMSw0KCRvdXQpCisJc3R3CSRzMiw4KCRvdXQpCisJc3R3CSRzMywxMigkb3V0KQorCWIJTGRlY19kb25lCisKK0xkZWNfdW5hbGlnbmVkOgorCXN1YmZpYwkkdDAsJGlucCw0MDk2CisJc3ViZmljCSR0MSwkb3V0LDQwOTYKKwlhbmRpLgkkdDAsJHQwLDQwOTYtMTYKKwliZXEJTGRlY194cGFnZQorCWFuZGkuCSR0MSwkdDEsNDA5Ni0xNgorCWJuZQlMZGVjX3VuYWxpZ25lZF9vaworCitMZGVjX3hwYWdlOgorCWxiegkkYWNjMDAsMCgkaW5wKQorCWxiegkkYWNjMDEsMSgkaW5wKQorCWxiegkkYWNjMDIsMigkaW5wKQorCWxiegkkczAsMygkaW5wKQorCWxiegkkYWNjMDQsNCgkaW5wKQorCWxiegkkYWNjMDUsNSgkaW5wKQorCWxiegkkYWNjMDYsNigkaW5wKQorCWxiegkkczEsNygkaW5wKQorCWxiegkkYWNjMDgsOCgkaW5wKQorCWxiegkkYWNjMDksOSgkaW5wKQorCWxiegkkYWNjMTAsMTAoJGlucCkKKwlpbnNyd2kJJHMwLCRhY2MwMCw4LDAKKwlsYnoJJHMyLDExKCRpbnApCisJaW5zcndpCSRzMSwkYWNjMDQsOCwwCisJbGJ6CSRhY2MxMiwxMigkaW5wKQorCWluc3J3aQkkczAsJGFjYzAxLDgsOAorCWxiegkkYWNjMTMsMTMoJGlucCkKKwlpbnNyd2kJJHMxLCRhY2MwNSw4LDgKKwlsYnoJJGFjYzE0LDE0KCRpbnApCisJaW5zcndpCSRzMCwkYWNjMDIsOCwxNgorCWxiegkkczMsMTUoJGlucCkKKwlpbnNyd2kJJHMxLCRhY2MwNiw4LDE2CisJaW5zcndpCSRzMiwkYWNjMDgsOCwwCisJaW5zcndpCSRzMywkYWNjMTIsOCwwCisJaW5zcndpCSRzMiwkYWNjMDksOCw4CisJaW5zcndpCSRzMywkYWNjMTMsOCw4CisJaW5zcndpCSRzMiwkYWNjMTAsOCwxNgorCWluc3J3aQkkczMsJGFjYzE0LDgsMTYKKworCWJsCUxBRVNfVGQKKwlibAlMcHBjX0FFU19kZWNyeXB0X2NvbXBhY3QKKworCWV4dHJ3aQkkYWNjMDAsJHMwLDgsMAorCWV4dHJ3aQkkYWNjMDEsJHMwLDgsOAorCXN0YgkkYWNjMDAsMCgkb3V0KQorCWV4dHJ3aQkkYWNjMDIsJHMwLDgsMTYKKwlzdGIJJGFjYzAxLDEoJG91dCkKKwlzdGIJJGFjYzAyLDIoJG91dCkKKwlleHRyd2kJJGFjYzA0LCRzMSw4LDAKKwlzdGIJJHMwLDMoJG91dCkKKwlleHRyd2kJJGFjYzA1LCRzMSw4LDgKKwlzdGIJJGFjYzA0LDQoJG91dCkKKwlleHRyd2kJJGFjYzA2LCRzMSw4LDE2CisJc3RiCSRhY2MwNSw1KCRvdXQpCisJc3RiCSRhY2MwNiw2KCRvdXQpCisJZXh0cndpCSRhY2MwOCwkczIsOCwwCisJc3RiCSRzMSw3KCRvdXQpCisJZXh0cndpCSRhY2MwOSwkczIsOCw4CisJc3RiCSRhY2MwOCw4KCRvdXQpCisJZXh0cndpCSRhY2MxMCwkczIsOCwxNgorCXN0YgkkYWNjMDksOSgkb3V0KQorCXN0YgkkYWNjMTAsMTAoJG91dCkKKwlleHRyd2kJJGFjYzEyLCRzMyw4LDAKKwlzdGIJJHMyLDExKCRvdXQpCisJZXh0cndpCSRhY2MxMywkczMsOCw4CisJc3RiCSRhY2MxMiwxMigkb3V0KQorCWV4dHJ3aQkkYWNjMTQsJHMzLDgsMTYKKwlzdGIJJGFjYzEzLDEzKCRvdXQpCisJc3RiCSRhY2MxNCwxNCgkb3V0KQorCXN0YgkkczMsMTUoJG91dCkKKworTGRlY19kb25lOgorCSRQT1AJcjAsYCRGUkFNRSskTFJTQVZFYCgkc3ApCisJJFBPUAkkdG9jLGAkRlJBTUUtJFNJWkVfVCoyMGAoJHNwKQorCSRQT1AJcjEzLGAkRlJBTUUtJFNJWkVfVCoxOWAoJHNwKQorCSRQT1AJcjE0LGAkRlJBTUUtJFNJWkVfVCoxOGAoJHNwKQorCSRQT1AJcjE1LGAkRlJBTUUtJFNJWkVfVCoxN2AoJHNwKQorCSRQT1AJcjE2LGAkRlJBTUUtJFNJWkVfVCoxNmAoJHNwKQorCSRQT1AJcjE3LGAkRlJBTUUtJFNJWkVfVCoxNWAoJHNwKQorCSRQT1AJcjE4LGAkRlJBTUUtJFNJWkVfVCoxNGAoJHNwKQorCSRQT1AJcjE5LGAkRlJBTUUtJFNJWkVfVCoxM2AoJHNwKQorCSRQT1AJcjIwLGAkRlJBTUUtJFNJWkVfVCoxMmAoJHNwKQorCSRQT1AJcjIxLGAkRlJBTUUtJFNJWkVfVCoxMWAoJHNwKQorCSRQT1AJcjIyLGAkRlJBTUUtJFNJWkVfVCoxMGAoJHNwKQorCSRQT1AJcjIzLGAkRlJBTUUtJFNJWkVfVCo5YCgkc3ApCisJJFBPUAlyMjQsYCRGUkFNRS0kU0laRV9UKjhgKCRzcCkKKwkkUE9QCXIyNSxgJEZSQU1FLSRTSVpFX1QqN2AoJHNwKQorCSRQT1AJcjI2LGAkRlJBTUUtJFNJWkVfVCo2YCgkc3ApCisJJFBPUAlyMjcsYCRGUkFNRS0kU0laRV9UKjVgKCRzcCkKKwkkUE9QCXIyOCxgJEZSQU1FLSRTSVpFX1QqNGAoJHNwKQorCSRQT1AJcjI5LGAkRlJBTUUtJFNJWkVfVCozYCgkc3ApCisJJFBPUAlyMzAsYCRGUkFNRS0kU0laRV9UKjJgKCRzcCkKKwkkUE9QCXIzMSxgJEZSQU1FLSRTSVpFX1QqMWAoJHNwKQorCW10bHIJcjAKKwlhZGRpCSRzcCwkc3AsJEZSQU1FCisJYmxyCisJLmxvbmcJMAorCS5ieXRlCTAsMTIsNCwxLDB4ODAsMTgsMywwCisJLmxvbmcJMAorCisuYWxpZ24JNQorTHBwY19BRVNfZGVjcnlwdDoKKwlsd3oJJGFjYzAwLDI0MCgka2V5KQorCWFkZGkJJFRibDEsJFRibDAsMworCWx3egkkdDAsMCgka2V5KQorCWFkZGkJJFRibDIsJFRibDAsMgorCWx3egkkdDEsNCgka2V5KQorCWFkZGkJJFRibDMsJFRibDAsMQorCWx3egkkdDIsOCgka2V5KQorCWFkZGkJJGFjYzAwLCRhY2MwMCwtMQorCWx3egkkdDMsMTIoJGtleSkKKwlhZGRpCSRrZXksJGtleSwxNgorCXhvcgkkczAsJHMwLCR0MAorCXhvcgkkczEsJHMxLCR0MQorCXhvcgkkczIsJHMyLCR0MgorCXhvcgkkczMsJHMzLCR0MworCW10Y3RyCSRhY2MwMAorLmFsaWduCTQKK0xkZWNfbG9vcDoKKwlybHdpbm0JJGFjYzAwLCRzMCxgMzItMjQrM2AsMjEsMjgKKwlybHdpbm0JJGFjYzAxLCRzMSxgMzItMjQrM2AsMjEsMjgKKwlybHdpbm0JJGFjYzAyLCRzMixgMzItMjQrM2AsMjEsMjgKKwlybHdpbm0JJGFjYzAzLCRzMyxgMzItMjQrM2AsMjEsMjgKKwlsd3oJJHQwLDAoJGtleSkKKwlybHdpbm0JJGFjYzA0LCRzMyxgMzItMTYrM2AsMjEsMjgKKwlsd3oJJHQxLDQoJGtleSkKKwlybHdpbm0JJGFjYzA1LCRzMCxgMzItMTYrM2AsMjEsMjgKKwlsd3oJJHQyLDgoJGtleSkKKwlybHdpbm0JJGFjYzA2LCRzMSxgMzItMTYrM2AsMjEsMjgKKwlsd3oJJHQzLDEyKCRrZXkpCisJcmx3aW5tCSRhY2MwNywkczIsYDMyLTE2KzNgLDIxLDI4CisJbHd6eAkkYWNjMDAsJFRibDAsJGFjYzAwCisJcmx3aW5tCSRhY2MwOCwkczIsYDMyLTgrM2AsMjEsMjgKKwlsd3p4CSRhY2MwMSwkVGJsMCwkYWNjMDEKKwlybHdpbm0JJGFjYzA5LCRzMyxgMzItOCszYCwyMSwyOAorCWx3engJJGFjYzAyLCRUYmwwLCRhY2MwMgorCXJsd2lubQkkYWNjMTAsJHMwLGAzMi04KzNgLDIxLDI4CisJbHd6eAkkYWNjMDMsJFRibDAsJGFjYzAzCisJcmx3aW5tCSRhY2MxMSwkczEsYDMyLTgrM2AsMjEsMjgKKwlsd3p4CSRhY2MwNCwkVGJsMSwkYWNjMDQKKwlybHdpbm0JJGFjYzEyLCRzMSxgMCszYCwyMSwyOAorCWx3engJJGFjYzA1LCRUYmwxLCRhY2MwNQorCXJsd2lubQkkYWNjMTMsJHMyLGAwKzNgLDIxLDI4CisJbHd6eAkkYWNjMDYsJFRibDEsJGFjYzA2CisJcmx3aW5tCSRhY2MxNCwkczMsYDArM2AsMjEsMjgKKwlsd3p4CSRhY2MwNywkVGJsMSwkYWNjMDcKKwlybHdpbm0JJGFjYzE1LCRzMCxgMCszYCwyMSwyOAorCWx3engJJGFjYzA4LCRUYmwyLCRhY2MwOAorCXhvcgkkdDAsJHQwLCRhY2MwMAorCWx3engJJGFjYzA5LCRUYmwyLCRhY2MwOQorCXhvcgkkdDEsJHQxLCRhY2MwMQorCWx3engJJGFjYzEwLCRUYmwyLCRhY2MxMAorCXhvcgkkdDIsJHQyLCRhY2MwMgorCWx3engJJGFjYzExLCRUYmwyLCRhY2MxMQorCXhvcgkkdDMsJHQzLCRhY2MwMworCWx3engJJGFjYzEyLCRUYmwzLCRhY2MxMgorCXhvcgkkdDAsJHQwLCRhY2MwNAorCWx3engJJGFjYzEzLCRUYmwzLCRhY2MxMworCXhvcgkkdDEsJHQxLCRhY2MwNQorCWx3engJJGFjYzE0LCRUYmwzLCRhY2MxNAorCXhvcgkkdDIsJHQyLCRhY2MwNgorCWx3engJJGFjYzE1LCRUYmwzLCRhY2MxNQorCXhvcgkkdDMsJHQzLCRhY2MwNworCXhvcgkkdDAsJHQwLCRhY2MwOAorCXhvcgkkdDEsJHQxLCRhY2MwOQorCXhvcgkkdDIsJHQyLCRhY2MxMAorCXhvcgkkdDMsJHQzLCRhY2MxMQorCXhvcgkkczAsJHQwLCRhY2MxMgorCXhvcgkkczEsJHQxLCRhY2MxMworCXhvcgkkczIsJHQyLCRhY2MxNAorCXhvcgkkczMsJHQzLCRhY2MxNQorCWFkZGkJJGtleSwka2V5LDE2CisJYmRuei0JTGRlY19sb29wCisKKwlhZGRpCSRUYmwyLCRUYmwwLDIwNDgKKwlub3AKKwlsd3oJJHQwLDAoJGtleSkKKwlybHdpbm0JJGFjYzAwLCRzMCxgMzItMjRgLDI0LDMxCisJbHd6CSR0MSw0KCRrZXkpCisJcmx3aW5tCSRhY2MwMSwkczEsYDMyLTI0YCwyNCwzMQorCWx3egkkdDIsOCgka2V5KQorCXJsd2lubQkkYWNjMDIsJHMyLGAzMi0yNGAsMjQsMzEKKwlsd3oJJHQzLDEyKCRrZXkpCisJcmx3aW5tCSRhY2MwMywkczMsYDMyLTI0YCwyNCwzMQorCWx3egkkYWNjMDgsYDIwNDgrMGAoJFRibDApCSEgcHJlZmV0Y2ggVGQ0CisJcmx3aW5tCSRhY2MwNCwkczMsYDMyLTE2YCwyNCwzMQorCWx3egkkYWNjMDksYDIwNDgrMzJgKCRUYmwwKQorCXJsd2lubQkkYWNjMDUsJHMwLGAzMi0xNmAsMjQsMzEKKwlsd3oJJGFjYzEwLGAyMDQ4KzY0YCgkVGJsMCkKKwlsYnp4CSRhY2MwMCwkVGJsMiwkYWNjMDAKKwlsd3oJJGFjYzExLGAyMDQ4Kzk2YCgkVGJsMCkKKwlsYnp4CSRhY2MwMSwkVGJsMiwkYWNjMDEKKwlsd3oJJGFjYzEyLGAyMDQ4KzEyOGAoJFRibDApCisJcmx3aW5tCSRhY2MwNiwkczEsYDMyLTE2YCwyNCwzMQorCWx3egkkYWNjMTMsYDIwNDgrMTYwYCgkVGJsMCkKKwlybHdpbm0JJGFjYzA3LCRzMixgMzItMTZgLDI0LDMxCisJbHd6CSRhY2MxNCxgMjA0OCsxOTJgKCRUYmwwKQorCXJsd2lubQkkYWNjMDgsJHMyLGAzMi04YCwyNCwzMQorCWx3egkkYWNjMTUsYDIwNDgrMjI0YCgkVGJsMCkKKwlybHdpbm0JJGFjYzA5LCRzMyxgMzItOGAsMjQsMzEKKwlsYnp4CSRhY2MwMiwkVGJsMiwkYWNjMDIKKwlybHdpbm0JJGFjYzEwLCRzMCxgMzItOGAsMjQsMzEKKwlsYnp4CSRhY2MwMywkVGJsMiwkYWNjMDMKKwlybHdpbm0JJGFjYzExLCRzMSxgMzItOGAsMjQsMzEKKwlsYnp4CSRhY2MwNCwkVGJsMiwkYWNjMDQKKwlybHdpbm0JJGFjYzEyLCRzMSxgMGAsMjQsMzEKKwlsYnp4CSRhY2MwNSwkVGJsMiwkYWNjMDUKKwlybHdpbm0JJGFjYzEzLCRzMixgMGAsMjQsMzEKKwlsYnp4CSRhY2MwNiwkVGJsMiwkYWNjMDYKKwlybHdpbm0JJGFjYzE0LCRzMyxgMGAsMjQsMzEKKwlsYnp4CSRhY2MwNywkVGJsMiwkYWNjMDcKKwlybHdpbm0JJGFjYzE1LCRzMCxgMGAsMjQsMzEKKwlsYnp4CSRhY2MwOCwkVGJsMiwkYWNjMDgKKwlybHdpbm0JJHMwLCRhY2MwMCwyNCwwLDcKKwlsYnp4CSRhY2MwOSwkVGJsMiwkYWNjMDkKKwlybHdpbm0JJHMxLCRhY2MwMSwyNCwwLDcKKwlsYnp4CSRhY2MxMCwkVGJsMiwkYWNjMTAKKwlybHdpbm0JJHMyLCRhY2MwMiwyNCwwLDcKKwlsYnp4CSRhY2MxMSwkVGJsMiwkYWNjMTEKKwlybHdpbm0JJHMzLCRhY2MwMywyNCwwLDcKKwlsYnp4CSRhY2MxMiwkVGJsMiwkYWNjMTIKKwlybHdpbWkJJHMwLCRhY2MwNCwxNiw4LDE1CisJbGJ6eAkkYWNjMTMsJFRibDIsJGFjYzEzCisJcmx3aW1pCSRzMSwkYWNjMDUsMTYsOCwxNQorCWxiengJJGFjYzE0LCRUYmwyLCRhY2MxNAorCXJsd2ltaQkkczIsJGFjYzA2LDE2LDgsMTUKKwlsYnp4CSRhY2MxNSwkVGJsMiwkYWNjMTUKKwlybHdpbWkJJHMzLCRhY2MwNywxNiw4LDE1CisJcmx3aW1pCSRzMCwkYWNjMDgsOCwxNiwyMworCXJsd2ltaQkkczEsJGFjYzA5LDgsMTYsMjMKKwlybHdpbWkJJHMyLCRhY2MxMCw4LDE2LDIzCisJcmx3aW1pCSRzMywkYWNjMTEsOCwxNiwyMworCW9yCSRzMCwkczAsJGFjYzEyCisJb3IJJHMxLCRzMSwkYWNjMTMKKwlvcgkkczIsJHMyLCRhY2MxNAorCW9yCSRzMywkczMsJGFjYzE1CisJeG9yCSRzMCwkczAsJHQwCisJeG9yCSRzMSwkczEsJHQxCisJeG9yCSRzMiwkczIsJHQyCisJeG9yCSRzMywkczMsJHQzCisJYmxyCisJLmxvbmcJMAorCS5ieXRlCTAsMTIsMHgxNCwwLDAsMCwwLDAKKworLmFsaWduCTQKK0xwcGNfQUVTX2RlY3J5cHRfY29tcGFjdDoKKwlsd3oJJGFjYzAwLDI0MCgka2V5KQorCWFkZGkJJFRibDEsJFRibDAsMjA0OAorCWx3egkkdDAsMCgka2V5KQorCWxpcwkkbWFzazgwLDB4ODA4MAorCWx3egkkdDEsNCgka2V5KQorCWxpcwkkbWFzazFiLDB4MWIxYgorCWx3egkkdDIsOCgka2V5KQorCW9yaQkkbWFzazgwLCRtYXNrODAsMHg4MDgwCisJbHd6CSR0MywxMigka2V5KQorCW9yaQkkbWFzazFiLCRtYXNrMWIsMHgxYjFiCisJYWRkaQkka2V5LCRrZXksMTYKK19fXworJGNvZGUuPTw8X19fIGlmICgkU0laRV9UPT04KTsKKwlpbnNyZGkJJG1hc2s4MCwkbWFzazgwLDMyLDAKKwlpbnNyZGkJJG1hc2sxYiwkbWFzazFiLDMyLDAKK19fXworJGNvZGUuPTw8X19fOworCW10Y3RyCSRhY2MwMAorLmFsaWduCTQKK0xkZWNfY29tcGFjdF9sb29wOgorCXhvcgkkczAsJHMwLCR0MAorCXhvcgkkczEsJHMxLCR0MQorCXJsd2lubQkkYWNjMDAsJHMwLGAzMi0yNGAsMjQsMzEKKwl4b3IJJHMyLCRzMiwkdDIKKwlybHdpbm0JJGFjYzAxLCRzMSxgMzItMjRgLDI0LDMxCisJeG9yCSRzMywkczMsJHQzCisJcmx3aW5tCSRhY2MwMiwkczIsYDMyLTI0YCwyNCwzMQorCXJsd2lubQkkYWNjMDMsJHMzLGAzMi0yNGAsMjQsMzEKKwlybHdpbm0JJGFjYzA0LCRzMyxgMzItMTZgLDI0LDMxCisJcmx3aW5tCSRhY2MwNSwkczAsYDMyLTE2YCwyNCwzMQorCXJsd2lubQkkYWNjMDYsJHMxLGAzMi0xNmAsMjQsMzEKKwlybHdpbm0JJGFjYzA3LCRzMixgMzItMTZgLDI0LDMxCisJbGJ6eAkkYWNjMDAsJFRibDEsJGFjYzAwCisJcmx3aW5tCSRhY2MwOCwkczIsYDMyLThgLDI0LDMxCisJbGJ6eAkkYWNjMDEsJFRibDEsJGFjYzAxCisJcmx3aW5tCSRhY2MwOSwkczMsYDMyLThgLDI0LDMxCisJbGJ6eAkkYWNjMDIsJFRibDEsJGFjYzAyCisJcmx3aW5tCSRhY2MxMCwkczAsYDMyLThgLDI0LDMxCisJbGJ6eAkkYWNjMDMsJFRibDEsJGFjYzAzCisJcmx3aW5tCSRhY2MxMSwkczEsYDMyLThgLDI0LDMxCisJbGJ6eAkkYWNjMDQsJFRibDEsJGFjYzA0CisJcmx3aW5tCSRhY2MxMiwkczEsYDBgLDI0LDMxCisJbGJ6eAkkYWNjMDUsJFRibDEsJGFjYzA1CisJcmx3aW5tCSRhY2MxMywkczIsYDBgLDI0LDMxCisJbGJ6eAkkYWNjMDYsJFRibDEsJGFjYzA2CisJcmx3aW5tCSRhY2MxNCwkczMsYDBgLDI0LDMxCisJbGJ6eAkkYWNjMDcsJFRibDEsJGFjYzA3CisJcmx3aW5tCSRhY2MxNSwkczAsYDBgLDI0LDMxCisJbGJ6eAkkYWNjMDgsJFRibDEsJGFjYzA4CisJcmx3aW5tCSRzMCwkYWNjMDAsMjQsMCw3CisJbGJ6eAkkYWNjMDksJFRibDEsJGFjYzA5CisJcmx3aW5tCSRzMSwkYWNjMDEsMjQsMCw3CisJbGJ6eAkkYWNjMTAsJFRibDEsJGFjYzEwCisJcmx3aW5tCSRzMiwkYWNjMDIsMjQsMCw3CisJbGJ6eAkkYWNjMTEsJFRibDEsJGFjYzExCisJcmx3aW5tCSRzMywkYWNjMDMsMjQsMCw3CisJbGJ6eAkkYWNjMTIsJFRibDEsJGFjYzEyCisJcmx3aW1pCSRzMCwkYWNjMDQsMTYsOCwxNQorCWxiengJJGFjYzEzLCRUYmwxLCRhY2MxMworCXJsd2ltaQkkczEsJGFjYzA1LDE2LDgsMTUKKwlsYnp4CSRhY2MxNCwkVGJsMSwkYWNjMTQKKwlybHdpbWkJJHMyLCRhY2MwNiwxNiw4LDE1CisJbGJ6eAkkYWNjMTUsJFRibDEsJGFjYzE1CisJcmx3aW1pCSRzMywkYWNjMDcsMTYsOCwxNQorCXJsd2ltaQkkczAsJGFjYzA4LDgsMTYsMjMKKwlybHdpbWkJJHMxLCRhY2MwOSw4LDE2LDIzCisJcmx3aW1pCSRzMiwkYWNjMTAsOCwxNiwyMworCXJsd2ltaQkkczMsJGFjYzExLDgsMTYsMjMKKwlsd3oJJHQwLDAoJGtleSkKKwlvcgkkczAsJHMwLCRhY2MxMgorCWx3egkkdDEsNCgka2V5KQorCW9yCSRzMSwkczEsJGFjYzEzCisJbHd6CSR0Miw4KCRrZXkpCisJb3IJJHMyLCRzMiwkYWNjMTQKKwlsd3oJJHQzLDEyKCRrZXkpCisJb3IJJHMzLCRzMywkYWNjMTUKKworCWFkZGkJJGtleSwka2V5LDE2CisJYmR6CUxkZWNfY29tcGFjdF9kb25lCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJFNJWkVfVD09OCk7CisJIyB2ZWN0b3JpemVkIHBlcm11dGF0aW9uIGltcHJvdmVzIGRlY3J5cHQgcGVyZm9ybWFuY2UgYnkgMTAlCisJaW5zcmRpCSRzMCwkczEsMzIsMAorCWluc3JkaQkkczIsJHMzLDMyLDAKKworCWFuZAkkYWNjMDAsJHMwLCRtYXNrODAJIyByMT1yMCYweDgwODA4MDgwCisJYW5kCSRhY2MwMiwkczIsJG1hc2s4MAorCXNyZGkJJGFjYzA0LCRhY2MwMCw3CQkjIHIxPj43CisJc3JkaQkkYWNjMDYsJGFjYzAyLDcKKwlhbmRjCSRhY2MwOCwkczAsJG1hc2s4MAkjIHIwJjB4N2Y3ZjdmN2YKKwlhbmRjCSRhY2MxMCwkczIsJG1hc2s4MAorCXN1YgkkYWNjMDAsJGFjYzAwLCRhY2MwNAkjIHIxLShyMT4+NykKKwlzdWIJJGFjYzAyLCRhY2MwMiwkYWNjMDYKKwlhZGQJJGFjYzA4LCRhY2MwOCwkYWNjMDgJIyAocjAmMHg3ZjdmN2Y3Zik8PDEKKwlhZGQJJGFjYzEwLCRhY2MxMCwkYWNjMTAKKwlhbmQJJGFjYzAwLCRhY2MwMCwkbWFzazFiCSMgKHIxLShyMT4+NykpJjB4MWIxYjFiMWIKKwlhbmQJJGFjYzAyLCRhY2MwMiwkbWFzazFiCisJeG9yCSRhY2MwMCwkYWNjMDAsJGFjYzA4CSMgcjIKKwl4b3IJJGFjYzAyLCRhY2MwMiwkYWNjMTAKKworCWFuZAkkYWNjMDQsJGFjYzAwLCRtYXNrODAJIyByMT1yMiYweDgwODA4MDgwCisJYW5kCSRhY2MwNiwkYWNjMDIsJG1hc2s4MAorCXNyZGkJJGFjYzA4LCRhY2MwNCw3CQkjIHIxPj43CisJc3JkaQkkYWNjMTAsJGFjYzA2LDcKKwlhbmRjCSRhY2MxMiwkYWNjMDAsJG1hc2s4MAkjIHIyJjB4N2Y3ZjdmN2YKKwlhbmRjCSRhY2MxNCwkYWNjMDIsJG1hc2s4MAorCXN1YgkkYWNjMDQsJGFjYzA0LCRhY2MwOAkjIHIxLShyMT4+NykKKwlzdWIJJGFjYzA2LCRhY2MwNiwkYWNjMTAKKwlhZGQJJGFjYzEyLCRhY2MxMiwkYWNjMTIJIyAocjImMHg3ZjdmN2Y3Zik8PDEKKwlhZGQJJGFjYzE0LCRhY2MxNCwkYWNjMTQKKwlhbmQJJGFjYzA0LCRhY2MwNCwkbWFzazFiCSMgKHIxLShyMT4+NykpJjB4MWIxYjFiMWIKKwlhbmQJJGFjYzA2LCRhY2MwNiwkbWFzazFiCisJeG9yCSRhY2MwNCwkYWNjMDQsJGFjYzEyCSMgcjQKKwl4b3IJJGFjYzA2LCRhY2MwNiwkYWNjMTQKKworCWFuZAkkYWNjMDgsJGFjYzA0LCRtYXNrODAJIyByMT1yNCYweDgwODA4MDgwCisJYW5kCSRhY2MxMCwkYWNjMDYsJG1hc2s4MAorCXNyZGkJJGFjYzEyLCRhY2MwOCw3CQkjIHIxPj43CisJc3JkaQkkYWNjMTQsJGFjYzEwLDcKKwlzdWIJJGFjYzA4LCRhY2MwOCwkYWNjMTIJIyByMS0ocjE+PjcpCisJc3ViCSRhY2MxMCwkYWNjMTAsJGFjYzE0CisJYW5kYwkkYWNjMTIsJGFjYzA0LCRtYXNrODAJIyByNCYweDdmN2Y3ZjdmCisJYW5kYwkkYWNjMTQsJGFjYzA2LCRtYXNrODAKKwlhZGQJJGFjYzEyLCRhY2MxMiwkYWNjMTIJIyAocjQmMHg3ZjdmN2Y3Zik8PDEKKwlhZGQJJGFjYzE0LCRhY2MxNCwkYWNjMTQKKwlhbmQJJGFjYzA4LCRhY2MwOCwkbWFzazFiCSMgKHIxLShyMT4+NykpJjB4MWIxYjFiMWIKKwlhbmQJJGFjYzEwLCRhY2MxMCwkbWFzazFiCisJeG9yCSRhY2MwOCwkYWNjMDgsJGFjYzEyCSMgcjgKKwl4b3IJJGFjYzEwLCRhY2MxMCwkYWNjMTQKKworCXhvcgkkYWNjMDAsJGFjYzAwLCRzMAkjIHIyXnIwCisJeG9yCSRhY2MwMiwkYWNjMDIsJHMyCisJeG9yCSRhY2MwNCwkYWNjMDQsJHMwCSMgcjRecjAKKwl4b3IJJGFjYzA2LCRhY2MwNiwkczIKKworCWV4dHJkaQkkYWNjMDEsJGFjYzAwLDMyLDAKKwlleHRyZGkJJGFjYzAzLCRhY2MwMiwzMiwwCisJZXh0cmRpCSRhY2MwNSwkYWNjMDQsMzIsMAorCWV4dHJkaQkkYWNjMDcsJGFjYzA2LDMyLDAKKwlleHRyZGkJJGFjYzA5LCRhY2MwOCwzMiwwCisJZXh0cmRpCSRhY2MxMSwkYWNjMTAsMzIsMAorX19fCiskY29kZS49PDxfX18gaWYgKCRTSVpFX1Q9PTQpOworCWFuZAkkYWNjMDAsJHMwLCRtYXNrODAJIyByMT1yMCYweDgwODA4MDgwCisJYW5kCSRhY2MwMSwkczEsJG1hc2s4MAorCWFuZAkkYWNjMDIsJHMyLCRtYXNrODAKKwlhbmQJJGFjYzAzLCRzMywkbWFzazgwCisJc3J3aQkkYWNjMDQsJGFjYzAwLDcJCSMgcjE+PjcKKwlhbmRjCSRhY2MwOCwkczAsJG1hc2s4MAkjIHIwJjB4N2Y3ZjdmN2YKKwlzcndpCSRhY2MwNSwkYWNjMDEsNworCWFuZGMJJGFjYzA5LCRzMSwkbWFzazgwCisJc3J3aQkkYWNjMDYsJGFjYzAyLDcKKwlhbmRjCSRhY2MxMCwkczIsJG1hc2s4MAorCXNyd2kJJGFjYzA3LCRhY2MwMyw3CisJYW5kYwkkYWNjMTEsJHMzLCRtYXNrODAKKwlzdWIJJGFjYzAwLCRhY2MwMCwkYWNjMDQJIyByMS0ocjE+PjcpCisJc3ViCSRhY2MwMSwkYWNjMDEsJGFjYzA1CisJc3ViCSRhY2MwMiwkYWNjMDIsJGFjYzA2CisJc3ViCSRhY2MwMywkYWNjMDMsJGFjYzA3CisJYWRkCSRhY2MwOCwkYWNjMDgsJGFjYzA4CSMgKHIwJjB4N2Y3ZjdmN2YpPDwxCisJYWRkCSRhY2MwOSwkYWNjMDksJGFjYzA5CisJYWRkCSRhY2MxMCwkYWNjMTAsJGFjYzEwCisJYWRkCSRhY2MxMSwkYWNjMTEsJGFjYzExCisJYW5kCSRhY2MwMCwkYWNjMDAsJG1hc2sxYgkjIChyMS0ocjE+PjcpKSYweDFiMWIxYjFiCisJYW5kCSRhY2MwMSwkYWNjMDEsJG1hc2sxYgorCWFuZAkkYWNjMDIsJGFjYzAyLCRtYXNrMWIKKwlhbmQJJGFjYzAzLCRhY2MwMywkbWFzazFiCisJeG9yCSRhY2MwMCwkYWNjMDAsJGFjYzA4CSMgcjIKKwl4b3IJJGFjYzAxLCRhY2MwMSwkYWNjMDkKKwl4b3IJJGFjYzAyLCRhY2MwMiwkYWNjMTAKKwl4b3IJJGFjYzAzLCRhY2MwMywkYWNjMTEKKworCWFuZAkkYWNjMDQsJGFjYzAwLCRtYXNrODAJIyByMT1yMiYweDgwODA4MDgwCisJYW5kCSRhY2MwNSwkYWNjMDEsJG1hc2s4MAorCWFuZAkkYWNjMDYsJGFjYzAyLCRtYXNrODAKKwlhbmQJJGFjYzA3LCRhY2MwMywkbWFzazgwCisJc3J3aQkkYWNjMDgsJGFjYzA0LDcJCSMgcjE+PjcKKwlhbmRjCSRhY2MxMiwkYWNjMDAsJG1hc2s4MAkjIHIyJjB4N2Y3ZjdmN2YKKwlzcndpCSRhY2MwOSwkYWNjMDUsNworCWFuZGMJJGFjYzEzLCRhY2MwMSwkbWFzazgwCisJc3J3aQkkYWNjMTAsJGFjYzA2LDcKKwlhbmRjCSRhY2MxNCwkYWNjMDIsJG1hc2s4MAorCXNyd2kJJGFjYzExLCRhY2MwNyw3CisJYW5kYwkkYWNjMTUsJGFjYzAzLCRtYXNrODAKKwlzdWIJJGFjYzA0LCRhY2MwNCwkYWNjMDgJIyByMS0ocjE+PjcpCisJc3ViCSRhY2MwNSwkYWNjMDUsJGFjYzA5CisJc3ViCSRhY2MwNiwkYWNjMDYsJGFjYzEwCisJc3ViCSRhY2MwNywkYWNjMDcsJGFjYzExCisJYWRkCSRhY2MxMiwkYWNjMTIsJGFjYzEyCSMgKHIyJjB4N2Y3ZjdmN2YpPDwxCisJYWRkCSRhY2MxMywkYWNjMTMsJGFjYzEzCisJYWRkCSRhY2MxNCwkYWNjMTQsJGFjYzE0CisJYWRkCSRhY2MxNSwkYWNjMTUsJGFjYzE1CisJYW5kCSRhY2MwNCwkYWNjMDQsJG1hc2sxYgkjIChyMS0ocjE+PjcpKSYweDFiMWIxYjFiCisJYW5kCSRhY2MwNSwkYWNjMDUsJG1hc2sxYgorCWFuZAkkYWNjMDYsJGFjYzA2LCRtYXNrMWIKKwlhbmQJJGFjYzA3LCRhY2MwNywkbWFzazFiCisJeG9yCSRhY2MwNCwkYWNjMDQsJGFjYzEyCSMgcjQKKwl4b3IJJGFjYzA1LCRhY2MwNSwkYWNjMTMKKwl4b3IJJGFjYzA2LCRhY2MwNiwkYWNjMTQKKwl4b3IJJGFjYzA3LCRhY2MwNywkYWNjMTUKKworCWFuZAkkYWNjMDgsJGFjYzA0LCRtYXNrODAJIyByMT1yNCYweDgwODA4MDgwCisJYW5kCSRhY2MwOSwkYWNjMDUsJG1hc2s4MAorCXNyd2kJJGFjYzEyLCRhY2MwOCw3CQkjIHIxPj43CisJYW5kCSRhY2MxMCwkYWNjMDYsJG1hc2s4MAorCXNyd2kJJGFjYzEzLCRhY2MwOSw3CisJYW5kCSRhY2MxMSwkYWNjMDcsJG1hc2s4MAorCXNyd2kJJGFjYzE0LCRhY2MxMCw3CisJc3ViCSRhY2MwOCwkYWNjMDgsJGFjYzEyCSMgcjEtKHIxPj43KQorCXNyd2kJJGFjYzE1LCRhY2MxMSw3CisJc3ViCSRhY2MwOSwkYWNjMDksJGFjYzEzCisJc3ViCSRhY2MxMCwkYWNjMTAsJGFjYzE0CisJc3ViCSRhY2MxMSwkYWNjMTEsJGFjYzE1CisJYW5kYwkkYWNjMTIsJGFjYzA0LCRtYXNrODAJIyByNCYweDdmN2Y3ZjdmCisJYW5kYwkkYWNjMTMsJGFjYzA1LCRtYXNrODAKKwlhbmRjCSRhY2MxNCwkYWNjMDYsJG1hc2s4MAorCWFuZGMJJGFjYzE1LCRhY2MwNywkbWFzazgwCisJYWRkCSRhY2MxMiwkYWNjMTIsJGFjYzEyCSMgKHI0JjB4N2Y3ZjdmN2YpPDwxCisJYWRkCSRhY2MxMywkYWNjMTMsJGFjYzEzCisJYWRkCSRhY2MxNCwkYWNjMTQsJGFjYzE0CisJYWRkCSRhY2MxNSwkYWNjMTUsJGFjYzE1CisJYW5kCSRhY2MwOCwkYWNjMDgsJG1hc2sxYgkjIChyMS0ocjE+PjcpKSYweDFiMWIxYjFiCisJYW5kCSRhY2MwOSwkYWNjMDksJG1hc2sxYgorCWFuZAkkYWNjMTAsJGFjYzEwLCRtYXNrMWIKKwlhbmQJJGFjYzExLCRhY2MxMSwkbWFzazFiCisJeG9yCSRhY2MwOCwkYWNjMDgsJGFjYzEyCSMgcjgKKwl4b3IJJGFjYzA5LCRhY2MwOSwkYWNjMTMKKwl4b3IJJGFjYzEwLCRhY2MxMCwkYWNjMTQKKwl4b3IJJGFjYzExLCRhY2MxMSwkYWNjMTUKKworCXhvcgkkYWNjMDAsJGFjYzAwLCRzMAkjIHIyXnIwCisJeG9yCSRhY2MwMSwkYWNjMDEsJHMxCisJeG9yCSRhY2MwMiwkYWNjMDIsJHMyCisJeG9yCSRhY2MwMywkYWNjMDMsJHMzCisJeG9yCSRhY2MwNCwkYWNjMDQsJHMwCSMgcjRecjAKKwl4b3IJJGFjYzA1LCRhY2MwNSwkczEKKwl4b3IJJGFjYzA2LCRhY2MwNiwkczIKKwl4b3IJJGFjYzA3LCRhY2MwNywkczMKK19fXworJGNvZGUuPTw8X19fOworCXJvdHJ3aQkkczAsJHMwLDgJCSMgPSBST1RBVEUocjAsOCkKKwlyb3Ryd2kJJHMxLCRzMSw4CisJeG9yCSRzMCwkczAsJGFjYzAwCQkjIF49IHIyXnIwCisJcm90cndpCSRzMiwkczIsOAorCXhvcgkkczEsJHMxLCRhY2MwMQorCXJvdHJ3aQkkczMsJHMzLDgKKwl4b3IJJHMyLCRzMiwkYWNjMDIKKwl4b3IJJHMzLCRzMywkYWNjMDMKKwl4b3IJJGFjYzAwLCRhY2MwMCwkYWNjMDgKKwl4b3IJJGFjYzAxLCRhY2MwMSwkYWNjMDkKKwl4b3IJJGFjYzAyLCRhY2MwMiwkYWNjMTAKKwl4b3IJJGFjYzAzLCRhY2MwMywkYWNjMTEKKwl4b3IJJHMwLCRzMCwkYWNjMDQJCSMgXj0gcjRecjAKKwlyb3Ryd2kJJGFjYzAwLCRhY2MwMCwyNAorCXhvcgkkczEsJHMxLCRhY2MwNQorCXJvdHJ3aQkkYWNjMDEsJGFjYzAxLDI0CisJeG9yCSRzMiwkczIsJGFjYzA2CisJcm90cndpCSRhY2MwMiwkYWNjMDIsMjQKKwl4b3IJJHMzLCRzMywkYWNjMDcKKwlyb3Ryd2kJJGFjYzAzLCRhY2MwMywyNAorCXhvcgkkYWNjMDQsJGFjYzA0LCRhY2MwOAorCXhvcgkkYWNjMDUsJGFjYzA1LCRhY2MwOQorCXhvcgkkYWNjMDYsJGFjYzA2LCRhY2MxMAorCXhvcgkkYWNjMDcsJGFjYzA3LCRhY2MxMQorCXhvcgkkczAsJHMwLCRhY2MwOAkJIyBePSByOCBbXigocjRecjApXihyMl5yMCk9cjRecjIpXQorCXJvdHJ3aQkkYWNjMDQsJGFjYzA0LDE2CisJeG9yCSRzMSwkczEsJGFjYzA5CisJcm90cndpCSRhY2MwNSwkYWNjMDUsMTYKKwl4b3IJJHMyLCRzMiwkYWNjMTAKKwlyb3Ryd2kJJGFjYzA2LCRhY2MwNiwxNgorCXhvcgkkczMsJHMzLCRhY2MxMQorCXJvdHJ3aQkkYWNjMDcsJGFjYzA3LDE2CisJeG9yCSRzMCwkczAsJGFjYzAwCQkjIF49IFJPVEFURShyOF5yMl5yMCwyNCkKKwlyb3Ryd2kJJGFjYzA4LCRhY2MwOCw4CisJeG9yCSRzMSwkczEsJGFjYzAxCisJcm90cndpCSRhY2MwOSwkYWNjMDksOAorCXhvcgkkczIsJHMyLCRhY2MwMgorCXJvdHJ3aQkkYWNjMTAsJGFjYzEwLDgKKwl4b3IJJHMzLCRzMywkYWNjMDMKKwlyb3Ryd2kJJGFjYzExLCRhY2MxMSw4CisJeG9yCSRzMCwkczAsJGFjYzA0CQkjIF49IFJPVEFURShyOF5yNF5yMCwxNikKKwl4b3IJJHMxLCRzMSwkYWNjMDUKKwl4b3IJJHMyLCRzMiwkYWNjMDYKKwl4b3IJJHMzLCRzMywkYWNjMDcKKwl4b3IJJHMwLCRzMCwkYWNjMDgJCSMgXj0gUk9UQVRFKHI4LDgpCQorCXhvcgkkczEsJHMxLCRhY2MwOQkKKwl4b3IJJHMyLCRzMiwkYWNjMTAJCisJeG9yCSRzMywkczMsJGFjYzExCQorCisJYglMZGVjX2NvbXBhY3RfbG9vcAorLmFsaWduCTQKK0xkZWNfY29tcGFjdF9kb25lOgorCXhvcgkkczAsJHMwLCR0MAorCXhvcgkkczEsJHMxLCR0MQorCXhvcgkkczIsJHMyLCR0MgorCXhvcgkkczMsJHMzLCR0MworCWJscgorCS5sb25nCTAKKwkuYnl0ZQkwLDEyLDB4MTQsMCwwLDAsMCwwCisKKy5hc2NpegkiQUVTIGZvciBQUEMsIENSWVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iCisuYWxpZ24JNworX19fCisKKyRjb2RlID1+IHMvXGAoW15cYF0qKVxgL2V2YWwgJDEvZ2VtOworcHJpbnQgJGNvZGU7CitjbG9zZSBTVERPVVQ7CmRpZmYgLS1naXQgYS9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS9hZXMtczM5MHgucGwgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS9hZXMtczM5MHgucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ1YTFlNgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYXNtL2Flcy1zMzkweC5wbApAQCAtMCwwICsxLDIyNTQgQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPiBmb3IgdGhlIE9wZW5TU0wKKyMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAorIyBDUllQVE9HQU1TIGxpY2Vuc2VzIGRlcGVuZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVydGhlcgorIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBBRVMgZm9yIHMzOTB4LgorCisjIEFwcmlsIDIwMDcuCisjCisjIFNvZnR3YXJlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IG92ZXIgZ2NjLWdlbmVyYXRlZCBjb2RlIGlzIH43MCUgYW5kCisjIGluIGFic29sdXRlIHRlcm1zIGlzIH43MyBjeWNsZXMgcGVyIGJ5dGUgcHJvY2Vzc2VkIHdpdGggMTI4LWJpdCBrZXkuCisjIFlvdSdyZSBsaWtlbHkgdG8gZXhjbGFpbSAid2h5IHNvIHNsb3c/IiBLZWVwIGluIG1pbmQgdGhhdCB6LUNQVXMgYXJlCisjICpzdHJpY3RseSogaW4tb3JkZXIgZXhlY3V0aW9uIGFuZCBpc3N1ZWQgaW5zdHJ1Y3Rpb24gW2luIHRoaXMgY2FzZQorIyBsb2FkIHZhbHVlIGZyb20gbWVtb3J5IGlzIGNyaXRpY2FsXSBoYXMgdG8gY29tcGxldGUgYmVmb3JlIGV4ZWN1dGlvbgorIyBmbG93IHByb2NlZWRzLiBTLWJveGVzIGFyZSBjb21wcmVzc2VkIHRvIDJLQlsrMjU2Ql0uCisjCisjIEFzIGZvciBoYXJkd2FyZSBhY2NlbGVyYXRpb24gc3VwcG9ydC4gSXQncyBiYXNpY2FsbHkgYSAidGVhc2VyLCIgYXMKKyMgaXQgY2FuIGFuZCBzaG91bGQgYmUgaW1wcm92ZWQgaW4gc2V2ZXJhbCB3YXlzLiBNb3N0IG5vdGFibHkgc3VwcG9ydAorIyBmb3IgQ0JDIGlzIG5vdCB1dGlsaXplZCwgbm9yIG11bHRpcGxlIGJsb2NrcyBhcmUgZXZlciBwcm9jZXNzZWQuCisjIFRoZW4gc29mdHdhcmUga2V5IHNjaGVkdWxlIGNhbiBiZSBwb3N0cG9uZWQgdGlsbCBoYXJkd2FyZSBzdXBwb3J0CisjIGRldGVjdGlvbi4uLiBQZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBvdmVyIGFzc2VtYmxlciBpcyByZXBvcnRlZGx5CisjIH4yLjV4LCBidXQgY2FuIHJlYWNoID44eCBbbmF0dXJhbGx5IG9uIGxhcmdlciBjaHVua3NdIGlmIHByb3BlcgorIyBzdXBwb3J0IGlzIGltcGxlbWVudGVkLgorCisjIE1heSAyMDA3LgorIworIyBJbXBsZW1lbnQgQUVTX3NldF9bZW58ZGVdY3J5cHRfa2V5LiBLZXkgc2NoZWR1bGUgc2V0dXAgaXMgYXZvaWRlZAorIyBmb3IgMTI4LWJpdCBrZXlzLCBpZiBoYXJkd2FyZSBzdXBwb3J0IGlzIGRldGVjdGVkLgorCisjIEphbnVyYXkgMjAwOS4KKyMKKyMgQWRkIHN1cHBvcnQgZm9yIGhhcmR3YXJlIEFFUzE5Mi8yNTYgYW5kIHJlc2NoZWR1bGUgaW5zdHJ1Y3Rpb25zIHRvCisjIG1pbmltaXplL2F2b2lkIEFkZHJlc3MgR2VuZXJhdGlvbiBJbnRlcmxvY2sgaGF6YXJkIGFuZCB0byBmYXZvdXIKKyMgZHVhbC1pc3N1ZSB6MTAgcGlwZWxpbmUuIFRoaXMgZ2F2ZSB+MjUlIGltcHJvdmVtZW50IG9uIHoxMCBhbmQKKyMgYWxtb3N0IDUwJSBvbiB6OS4gVGhlIGdhaW4gaXMgc21hbGxlciBvbiB6MTAsIGJlY2F1c2UgYmVpbmcgZHVhbC0KKyMgaXNzdWUgejEwIG1ha2VzIGl0IGltcHJvc3NpYmxlIHRvIGVsaW1pbmF0ZSB0aGUgaW50ZXJsb2NrIGNvbmRpdGlvbjoKKyMgY3JpdGlhbCBwYXRoIGlzIG5vdCBsb25nIGVub3VnaC4gWWV0IGl0IHNwZW5kcyB+MjQgY3ljbGVzIHBlciBieXRlCisjIHByb2Nlc3NlZCB3aXRoIDEyOC1iaXQga2V5LgorIworIyBVbmxpa2UgcHJldmlvdXMgdmVyc2lvbiBoYXJkd2FyZSBzdXBwb3J0IGRldGVjdGlvbiB0YWtlcyBwbGFjZSBvbmx5CisjIGF0IHRoZSBtb21lbnQgb2Yga2V5IHNjaGVkdWxlIHNldHVwLCB3aGljaCBpcyBkZW5vdGVkIGluIGtleS0+cm91bmRzLgorIyBUaGlzIGlzIGRvbmUsIGJlY2F1c2UgZGVmZXJyZWQga2V5IHNldHVwIGNhbid0IGJlIG1hZGUgTVQtc2FmZSwgbm90CisjIGZvciBrZXlzIGxvbmdlciB0aGFuIDEyOCBiaXRzLgorIworIyBBZGQgQUVTX2NiY19lbmNyeXB0LCB3aGljaCBnaXZlcyBpbmNyZWRpYmxlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LAorIyBpdCB3YXMgbWVhc3VyZWQgdG8gYmUgfjYuNnguIEl0J3MgbGVzcyB0aGFuIHByZXZpb3VzbHkgbWVudGlvbmVkIDh4LAorIyBiZWNhdXNlIHNvZnR3YXJlIGltcGxlbWVudGF0aW9uIHdhcyBvcHRpbWl6ZWQuCisKKyMgTWF5IDIwMTAuCisjCisjIEFkZCBBRVNfY3RyMzJfZW5jcnlwdC4gSWYgaGFyZHdhcmUtYXNzaXN0ZWQsIGl0IHByb3ZpZGVzIHVwIHRvIDQuM3gKKyMgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgb3ZlciAiZ2VuZXJpYyIgY291bnRlciBtb2RlIHJvdXRpbmUgcmVseWluZworIyBvbiBzaW5nbGUtYmxvY2ssIGFsc28gaGFyZHdhcmUtYXNzaXN0ZWQsIEFFU19lbmNyeXB0LiAiVXAgdG8iIHJlZmVycworIyB0byB0aGUgZmFjdCB0aGF0IGV4YWN0IHRocm91Z2hwdXQgdmFsdWUgZGVwZW5kcyBvbiBjdXJyZW50IHN0YWNrCisjIGZyYW1lIGFsaWdubWVudCB3aXRoaW4gNEtCIHBhZ2UuIEluIHdvcnN0IGNhc2UgeW91IGdldCB+NzUlIG9mIHRoZQorIyBtYXhpbXVtLCBidXQgKm9uIGF2ZXJhZ2UqIGl0IHdvdWxkIGJlIGFzIG11Y2ggYXMgfjk4JS4gTWVhbmluZyB0aGF0CisjIHdvcnN0IGNhc2UgaXMgdW5saWtlLCBpdCdzIGxpa2UgaGl0dGluZyByYXZpbmUgb24gcGxhdGVhdS4KKworIyBOb3ZlbWJlciAyMDEwLgorIworIyBBZGFwdCBmb3IgLW0zMSBidWlsZC4gSWYga2VybmVsIHN1cHBvcnRzIHdoYXQncyBjYWxsZWQgImhpZ2hncHJzIgorIyBmZWF0dXJlIG9uIExpbnV4IFtzZWUgL3Byb2MvY3B1aW5mb10sIGl0J3MgcG9zc2libGUgdG8gdXNlIDY0LWJpdAorIyBpbnN0cnVjdGlvbnMgYW5kIGFjaGlldmUgIjY0LWJpdCIgcGVyZm9ybWFuY2UgZXZlbiBpbiAzMS1iaXQgbGVnYWN5CisjIGFwcGxpY2F0aW9uIGNvbnRleHQuIFRoZSBmZWF0dXJlIGlzIG5vdCBzcGVjaWZpYyB0byBhbnkgcGFydGljdWxhcgorIyBwcm9jZXNzb3IsIGFzIGxvbmcgYXMgaXQncyAiei1DUFUiLiBMYXR0ZXIgaW1wbGllcyB0aGF0IHRoZSBjb2RlCisjIHJlbWFpbnMgei9BcmNoaXRlY3R1cmUgc3BlY2lmaWMuIE9uIHo5OTAgaXQgd2FzIG1lYXN1cmVkIHRvIHBlcmZvcm0KKyMgMnggYmV0dGVyIHRoYW4gY29kZSBnZW5lcmF0ZWQgYnkgZ2NjIDQuMy4KKworIyBEZWNlbWJlciAyMDEwLgorIworIyBBZGQgc3VwcG9ydCBmb3IgejE5NiAiY2lwaGVyIG1lc3NhZ2Ugd2l0aCBjb3VudGVyIiBpbnN0cnVjdGlvbi4KKyMgTm90ZSBob3dldmVyIHRoYXQgaXQncyBkaXNlbmdhZ2VkLCBiZWNhdXNlIGl0IHdhcyBtZWFzdXJlZCB0bworIyBwZXJmb3JtIH4xMiUgd29yc2UgdGhhbiB2YW5pbGxhIGttLWJhc2VkIGNvZGUuLi4KKworIyBGZWJydWFyeSAyMDExLgorIworIyBBZGQgQUVTX3h0c19bZW58ZGVdY3J5cHQuIFRoaXMgaW5jbHVkZXMgc3VwcG9ydCBmb3IgejE5NiBrbS14dHMtYWVzCisjIGluc3RydWN0aW9ucywgd2hpY2ggZGVsaXZlciB+NzAlIGltcHJvdmVtZW50IGF0IDhLQiBibG9jayBzaXplIG92ZXIKKyMgdmFuaWxsYSBrbS1iYXNlZCBjb2RlLCAzNyUgLSBhdCBtb3N0IGxpa2UgNTEyLWJ5dGVzIGJsb2NrIHNpemUuCisKKyRmbGF2b3VyID0gc2hpZnQ7CisKK2lmICgkZmxhdm91ciA9fiAvM1sxMl0vKSB7CisJJFNJWkVfVD00OworCSRnPSIiOworfSBlbHNlIHsKKwkkU0laRV9UPTg7CisJJGc9ImciOworfQorCit3aGlsZSAoKCRvdXRwdXQ9c2hpZnQpICYmICgkb3V0cHV0IX4vXlx3W1x3XC1dKlwuXHcrJC8pKSB7fQorb3BlbiBTVERPVVQsIj4kb3V0cHV0IjsKKworJHNvZnRvbmx5PTA7CSMgYWxsb3cgaGFyZHdhcmUgc3VwcG9ydAorCiskdDA9IiVyMCI7CSRtYXNrPSIlcjAiOworJHQxPSIlcjEiOworJHQyPSIlcjIiOwkkaW5wPSIlcjIiOworJHQzPSIlcjMiOwkkb3V0PSIlcjMiOwkkYml0cz0iJXIzIjsKKyRrZXk9IiVyNCI7CiskaTE9IiVyNSI7CiskaTI9IiVyNiI7CiskaTM9IiVyNyI7CiskczA9IiVyOCI7CiskczE9IiVyOSI7CiskczI9IiVyMTAiOworJHMzPSIlcjExIjsKKyR0Ymw9IiVyMTIiOworJHJvdW5kcz0iJXIxMyI7CiskcmE9IiVyMTQiOworJHNwPSIlcjE1IjsKKworJHN0ZGZyYW1lPTE2KiRTSVpFX1QrNCo4OworCitzdWIgX2RhdGFfd29yZCgpCit7IG15ICRpOworICAgIHdoaWxlKGRlZmluZWQoJGk9c2hpZnQpKSB7ICRjb2RlLj1zcHJpbnRmIi5sb25nXHQweCUwOHgsMHglMDh4XG4iLCRpLCRpOyB9Cit9CisKKyRjb2RlPTw8X19fOworLnRleHQKKworLnR5cGUJQUVTX1RlLFxAb2JqZWN0CisuYWxpZ24JMjU2CitBRVNfVGU6CitfX18KKyZfZGF0YV93b3JkKAorCTB4YzY2MzYzYTUsIDB4Zjg3YzdjODQsIDB4ZWU3Nzc3OTksIDB4ZjY3YjdiOGQsCisJMHhmZmYyZjIwZCwgMHhkNjZiNmJiZCwgMHhkZTZmNmZiMSwgMHg5MWM1YzU1NCwKKwkweDYwMzAzMDUwLCAweDAyMDEwMTAzLCAweGNlNjc2N2E5LCAweDU2MmIyYjdkLAorCTB4ZTdmZWZlMTksIDB4YjVkN2Q3NjIsIDB4NGRhYmFiZTYsIDB4ZWM3Njc2OWEsCisJMHg4ZmNhY2E0NSwgMHgxZjgyODI5ZCwgMHg4OWM5Yzk0MCwgMHhmYTdkN2Q4NywKKwkweGVmZmFmYTE1LCAweGIyNTk1OWViLCAweDhlNDc0N2M5LCAweGZiZjBmMDBiLAorCTB4NDFhZGFkZWMsIDB4YjNkNGQ0NjcsIDB4NWZhMmEyZmQsIDB4NDVhZmFmZWEsCisJMHgyMzljOWNiZiwgMHg1M2E0YTRmNywgMHhlNDcyNzI5NiwgMHg5YmMwYzA1YiwKKwkweDc1YjdiN2MyLCAweGUxZmRmZDFjLCAweDNkOTM5M2FlLCAweDRjMjYyNjZhLAorCTB4NmMzNjM2NWEsIDB4N2UzZjNmNDEsIDB4ZjVmN2Y3MDIsIDB4ODNjY2NjNGYsCisJMHg2ODM0MzQ1YywgMHg1MWE1YTVmNCwgMHhkMWU1ZTUzNCwgMHhmOWYxZjEwOCwKKwkweGUyNzE3MTkzLCAweGFiZDhkODczLCAweDYyMzEzMTUzLCAweDJhMTUxNTNmLAorCTB4MDgwNDA0MGMsIDB4OTVjN2M3NTIsIDB4NDYyMzIzNjUsIDB4OWRjM2MzNWUsCisJMHgzMDE4MTgyOCwgMHgzNzk2OTZhMSwgMHgwYTA1MDUwZiwgMHgyZjlhOWFiNSwKKwkweDBlMDcwNzA5LCAweDI0MTIxMjM2LCAweDFiODA4MDliLCAweGRmZTJlMjNkLAorCTB4Y2RlYmViMjYsIDB4NGUyNzI3NjksIDB4N2ZiMmIyY2QsIDB4ZWE3NTc1OWYsCisJMHgxMjA5MDkxYiwgMHgxZDgzODM5ZSwgMHg1ODJjMmM3NCwgMHgzNDFhMWEyZSwKKwkweDM2MWIxYjJkLCAweGRjNmU2ZWIyLCAweGI0NWE1YWVlLCAweDViYTBhMGZiLAorCTB4YTQ1MjUyZjYsIDB4NzYzYjNiNGQsIDB4YjdkNmQ2NjEsIDB4N2RiM2IzY2UsCisJMHg1MjI5Mjk3YiwgMHhkZGUzZTMzZSwgMHg1ZTJmMmY3MSwgMHgxMzg0ODQ5NywKKwkweGE2NTM1M2Y1LCAweGI5ZDFkMTY4LCAweDAwMDAwMDAwLCAweGMxZWRlZDJjLAorCTB4NDAyMDIwNjAsIDB4ZTNmY2ZjMWYsIDB4NzliMWIxYzgsIDB4YjY1YjViZWQsCisJMHhkNDZhNmFiZSwgMHg4ZGNiY2I0NiwgMHg2N2JlYmVkOSwgMHg3MjM5Mzk0YiwKKwkweDk0NGE0YWRlLCAweDk4NGM0Y2Q0LCAweGIwNTg1OGU4LCAweDg1Y2ZjZjRhLAorCTB4YmJkMGQwNmIsIDB4YzVlZmVmMmEsIDB4NGZhYWFhZTUsIDB4ZWRmYmZiMTYsCisJMHg4NjQzNDNjNSwgMHg5YTRkNGRkNywgMHg2NjMzMzM1NSwgMHgxMTg1ODU5NCwKKwkweDhhNDU0NWNmLCAweGU5ZjlmOTEwLCAweDA0MDIwMjA2LCAweGZlN2Y3ZjgxLAorCTB4YTA1MDUwZjAsIDB4NzgzYzNjNDQsIDB4MjU5ZjlmYmEsIDB4NGJhOGE4ZTMsCisJMHhhMjUxNTFmMywgMHg1ZGEzYTNmZSwgMHg4MDQwNDBjMCwgMHgwNThmOGY4YSwKKwkweDNmOTI5MmFkLCAweDIxOWQ5ZGJjLCAweDcwMzgzODQ4LCAweGYxZjVmNTA0LAorCTB4NjNiY2JjZGYsIDB4NzdiNmI2YzEsIDB4YWZkYWRhNzUsIDB4NDIyMTIxNjMsCisJMHgyMDEwMTAzMCwgMHhlNWZmZmYxYSwgMHhmZGYzZjMwZSwgMHhiZmQyZDI2ZCwKKwkweDgxY2RjZDRjLCAweDE4MGMwYzE0LCAweDI2MTMxMzM1LCAweGMzZWNlYzJmLAorCTB4YmU1ZjVmZTEsIDB4MzU5Nzk3YTIsIDB4ODg0NDQ0Y2MsIDB4MmUxNzE3MzksCisJMHg5M2M0YzQ1NywgMHg1NWE3YTdmMiwgMHhmYzdlN2U4MiwgMHg3YTNkM2Q0NywKKwkweGM4NjQ2NGFjLCAweGJhNWQ1ZGU3LCAweDMyMTkxOTJiLCAweGU2NzM3Mzk1LAorCTB4YzA2MDYwYTAsIDB4MTk4MTgxOTgsIDB4OWU0ZjRmZDEsIDB4YTNkY2RjN2YsCisJMHg0NDIyMjI2NiwgMHg1NDJhMmE3ZSwgMHgzYjkwOTBhYiwgMHgwYjg4ODg4MywKKwkweDhjNDY0NmNhLCAweGM3ZWVlZTI5LCAweDZiYjhiOGQzLCAweDI4MTQxNDNjLAorCTB4YTdkZWRlNzksIDB4YmM1ZTVlZTIsIDB4MTYwYjBiMWQsIDB4YWRkYmRiNzYsCisJMHhkYmUwZTAzYiwgMHg2NDMyMzI1NiwgMHg3NDNhM2E0ZSwgMHgxNDBhMGExZSwKKwkweDkyNDk0OWRiLCAweDBjMDYwNjBhLCAweDQ4MjQyNDZjLCAweGI4NWM1Y2U0LAorCTB4OWZjMmMyNWQsIDB4YmRkM2QzNmUsIDB4NDNhY2FjZWYsIDB4YzQ2MjYyYTYsCisJMHgzOTkxOTFhOCwgMHgzMTk1OTVhNCwgMHhkM2U0ZTQzNywgMHhmMjc5Nzk4YiwKKwkweGQ1ZTdlNzMyLCAweDhiYzhjODQzLCAweDZlMzczNzU5LCAweGRhNmQ2ZGI3LAorCTB4MDE4ZDhkOGMsIDB4YjFkNWQ1NjQsIDB4OWM0ZTRlZDIsIDB4NDlhOWE5ZTAsCisJMHhkODZjNmNiNCwgMHhhYzU2NTZmYSwgMHhmM2Y0ZjQwNywgMHhjZmVhZWEyNSwKKwkweGNhNjU2NWFmLCAweGY0N2E3YThlLCAweDQ3YWVhZWU5LCAweDEwMDgwODE4LAorCTB4NmZiYWJhZDUsIDB4ZjA3ODc4ODgsIDB4NGEyNTI1NmYsIDB4NWMyZTJlNzIsCisJMHgzODFjMWMyNCwgMHg1N2E2YTZmMSwgMHg3M2I0YjRjNywgMHg5N2M2YzY1MSwKKwkweGNiZThlODIzLCAweGExZGRkZDdjLCAweGU4NzQ3NDljLCAweDNlMWYxZjIxLAorCTB4OTY0YjRiZGQsIDB4NjFiZGJkZGMsIDB4MGQ4YjhiODYsIDB4MGY4YThhODUsCisJMHhlMDcwNzA5MCwgMHg3YzNlM2U0MiwgMHg3MWI1YjVjNCwgMHhjYzY2NjZhYSwKKwkweDkwNDg0OGQ4LCAweDA2MDMwMzA1LCAweGY3ZjZmNjAxLCAweDFjMGUwZTEyLAorCTB4YzI2MTYxYTMsIDB4NmEzNTM1NWYsIDB4YWU1NzU3ZjksIDB4NjliOWI5ZDAsCisJMHgxNzg2ODY5MSwgMHg5OWMxYzE1OCwgMHgzYTFkMWQyNywgMHgyNzllOWViOSwKKwkweGQ5ZTFlMTM4LCAweGViZjhmODEzLCAweDJiOTg5OGIzLCAweDIyMTExMTMzLAorCTB4ZDI2OTY5YmIsIDB4YTlkOWQ5NzAsIDB4MDc4ZThlODksIDB4MzM5NDk0YTcsCisJMHgyZDliOWJiNiwgMHgzYzFlMWUyMiwgMHgxNTg3ODc5MiwgMHhjOWU5ZTkyMCwKKwkweDg3Y2VjZTQ5LCAweGFhNTU1NWZmLCAweDUwMjgyODc4LCAweGE1ZGZkZjdhLAorCTB4MDM4YzhjOGYsIDB4NTlhMWExZjgsIDB4MDk4OTg5ODAsIDB4MWEwZDBkMTcsCisJMHg2NWJmYmZkYSwgMHhkN2U2ZTYzMSwgMHg4NDQyNDJjNiwgMHhkMDY4NjhiOCwKKwkweDgyNDE0MWMzLCAweDI5OTk5OWIwLCAweDVhMmQyZDc3LCAweDFlMGYwZjExLAorCTB4N2JiMGIwY2IsIDB4YTg1NDU0ZmMsIDB4NmRiYmJiZDYsIDB4MmMxNjE2M2EpOworJGNvZGUuPTw8X19fOworIyBUZTRbMjU2XQorLmJ5dGUJMHg2MywgMHg3YywgMHg3NywgMHg3YiwgMHhmMiwgMHg2YiwgMHg2ZiwgMHhjNQorLmJ5dGUJMHgzMCwgMHgwMSwgMHg2NywgMHgyYiwgMHhmZSwgMHhkNywgMHhhYiwgMHg3NgorLmJ5dGUJMHhjYSwgMHg4MiwgMHhjOSwgMHg3ZCwgMHhmYSwgMHg1OSwgMHg0NywgMHhmMAorLmJ5dGUJMHhhZCwgMHhkNCwgMHhhMiwgMHhhZiwgMHg5YywgMHhhNCwgMHg3MiwgMHhjMAorLmJ5dGUJMHhiNywgMHhmZCwgMHg5MywgMHgyNiwgMHgzNiwgMHgzZiwgMHhmNywgMHhjYworLmJ5dGUJMHgzNCwgMHhhNSwgMHhlNSwgMHhmMSwgMHg3MSwgMHhkOCwgMHgzMSwgMHgxNQorLmJ5dGUJMHgwNCwgMHhjNywgMHgyMywgMHhjMywgMHgxOCwgMHg5NiwgMHgwNSwgMHg5YQorLmJ5dGUJMHgwNywgMHgxMiwgMHg4MCwgMHhlMiwgMHhlYiwgMHgyNywgMHhiMiwgMHg3NQorLmJ5dGUJMHgwOSwgMHg4MywgMHgyYywgMHgxYSwgMHgxYiwgMHg2ZSwgMHg1YSwgMHhhMAorLmJ5dGUJMHg1MiwgMHgzYiwgMHhkNiwgMHhiMywgMHgyOSwgMHhlMywgMHgyZiwgMHg4NAorLmJ5dGUJMHg1MywgMHhkMSwgMHgwMCwgMHhlZCwgMHgyMCwgMHhmYywgMHhiMSwgMHg1YgorLmJ5dGUJMHg2YSwgMHhjYiwgMHhiZSwgMHgzOSwgMHg0YSwgMHg0YywgMHg1OCwgMHhjZgorLmJ5dGUJMHhkMCwgMHhlZiwgMHhhYSwgMHhmYiwgMHg0MywgMHg0ZCwgMHgzMywgMHg4NQorLmJ5dGUJMHg0NSwgMHhmOSwgMHgwMiwgMHg3ZiwgMHg1MCwgMHgzYywgMHg5ZiwgMHhhOAorLmJ5dGUJMHg1MSwgMHhhMywgMHg0MCwgMHg4ZiwgMHg5MiwgMHg5ZCwgMHgzOCwgMHhmNQorLmJ5dGUJMHhiYywgMHhiNiwgMHhkYSwgMHgyMSwgMHgxMCwgMHhmZiwgMHhmMywgMHhkMgorLmJ5dGUJMHhjZCwgMHgwYywgMHgxMywgMHhlYywgMHg1ZiwgMHg5NywgMHg0NCwgMHgxNworLmJ5dGUJMHhjNCwgMHhhNywgMHg3ZSwgMHgzZCwgMHg2NCwgMHg1ZCwgMHgxOSwgMHg3MworLmJ5dGUJMHg2MCwgMHg4MSwgMHg0ZiwgMHhkYywgMHgyMiwgMHgyYSwgMHg5MCwgMHg4OAorLmJ5dGUJMHg0NiwgMHhlZSwgMHhiOCwgMHgxNCwgMHhkZSwgMHg1ZSwgMHgwYiwgMHhkYgorLmJ5dGUJMHhlMCwgMHgzMiwgMHgzYSwgMHgwYSwgMHg0OSwgMHgwNiwgMHgyNCwgMHg1YworLmJ5dGUJMHhjMiwgMHhkMywgMHhhYywgMHg2MiwgMHg5MSwgMHg5NSwgMHhlNCwgMHg3OQorLmJ5dGUJMHhlNywgMHhjOCwgMHgzNywgMHg2ZCwgMHg4ZCwgMHhkNSwgMHg0ZSwgMHhhOQorLmJ5dGUJMHg2YywgMHg1NiwgMHhmNCwgMHhlYSwgMHg2NSwgMHg3YSwgMHhhZSwgMHgwOAorLmJ5dGUJMHhiYSwgMHg3OCwgMHgyNSwgMHgyZSwgMHgxYywgMHhhNiwgMHhiNCwgMHhjNgorLmJ5dGUJMHhlOCwgMHhkZCwgMHg3NCwgMHgxZiwgMHg0YiwgMHhiZCwgMHg4YiwgMHg4YQorLmJ5dGUJMHg3MCwgMHgzZSwgMHhiNSwgMHg2NiwgMHg0OCwgMHgwMywgMHhmNiwgMHgwZQorLmJ5dGUJMHg2MSwgMHgzNSwgMHg1NywgMHhiOSwgMHg4NiwgMHhjMSwgMHgxZCwgMHg5ZQorLmJ5dGUJMHhlMSwgMHhmOCwgMHg5OCwgMHgxMSwgMHg2OSwgMHhkOSwgMHg4ZSwgMHg5NAorLmJ5dGUJMHg5YiwgMHgxZSwgMHg4NywgMHhlOSwgMHhjZSwgMHg1NSwgMHgyOCwgMHhkZgorLmJ5dGUJMHg4YywgMHhhMSwgMHg4OSwgMHgwZCwgMHhiZiwgMHhlNiwgMHg0MiwgMHg2OAorLmJ5dGUJMHg0MSwgMHg5OSwgMHgyZCwgMHgwZiwgMHhiMCwgMHg1NCwgMHhiYiwgMHgxNgorIyByY29uW10KKy5sb25nCTB4MDEwMDAwMDAsIDB4MDIwMDAwMDAsIDB4MDQwMDAwMDAsIDB4MDgwMDAwMDAKKy5sb25nCTB4MTAwMDAwMDAsIDB4MjAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4ODAwMDAwMDAKKy5sb25nCTB4MUIwMDAwMDAsIDB4MzYwMDAwMDAsIDAsIDAsIDAsIDAsIDAsIDAKKy5hbGlnbgkyNTYKKy5zaXplCUFFU19UZSwuLUFFU19UZQorCisjIHZvaWQgQUVTX2VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW5wLCB1bnNpZ25lZCBjaGFyICpvdXQsCisjIAkJIGNvbnN0IEFFU19LRVkgKmtleSkgeworLmdsb2JsCUFFU19lbmNyeXB0CisudHlwZQlBRVNfZW5jcnlwdCxcQGZ1bmN0aW9uCitBRVNfZW5jcnlwdDoKK19fXworJGNvZGUuPTw8X19fIGlmICghJHNvZnRvbmx5KTsKKwlsCSVyMCwyNDAoJGtleSkKKwlsaGkJJXIxLDE2CisJY2xyCSVyMCwlcjEKKwlqbAkuTGVzb2Z0CisKKwlsYQklcjEsMCgka2V5KQorCSNsYQklcjIsMCgkaW5wKQorCWxhCSVyNCwwKCRvdXQpCisJbGdoaQklcjMsMTYJCSMgc2luZ2xlIGJsb2NrIGxlbmd0aAorCS5sb25nCTB4YjkyZTAwNDIJIyBrbSAlcjQsJXIyCisJYnJjCTEsLi00CQkjIGNhbiB0aGlzIGhhcHBlbj8KKwlicgklcjE0CisuYWxpZ24JNjQKKy5MZXNvZnQ6CitfX18KKyRjb2RlLj08PF9fXzsKKwlzdG0ke2d9CSVyMywkcmEsMyokU0laRV9UKCRzcCkKKworCWxsZ2YJJHMwLDAoJGlucCkKKwlsbGdmCSRzMSw0KCRpbnApCisJbGxnZgkkczIsOCgkaW5wKQorCWxsZ2YJJHMzLDEyKCRpbnApCisKKwlsYXJsCSR0YmwsQUVTX1RlCisJYnJhcwkkcmEsX3MzOTB4X0FFU19lbmNyeXB0CisKKwlsJHtnfQkkb3V0LDMqJFNJWkVfVCgkc3ApCisJc3QJJHMwLDAoJG91dCkKKwlzdAkkczEsNCgkb3V0KQorCXN0CSRzMiw4KCRvdXQpCisJc3QJJHMzLDEyKCRvdXQpCisKKwlsbSR7Z30JJXI2LCRyYSw2KiRTSVpFX1QoJHNwKQorCWJyCSRyYQorLnNpemUJQUVTX2VuY3J5cHQsLi1BRVNfZW5jcnlwdAorCisudHlwZSAgIF9zMzkweF9BRVNfZW5jcnlwdCxcQGZ1bmN0aW9uCisuYWxpZ24JMTYKK19zMzkweF9BRVNfZW5jcnlwdDoKKwlzdCR7Z30JJHJhLDE1KiRTSVpFX1QoJHNwKQorCXgJJHMwLDAoJGtleSkKKwl4CSRzMSw0KCRrZXkpCisJeAkkczIsOCgka2V5KQorCXgJJHMzLDEyKCRrZXkpCisJbAkkcm91bmRzLDI0MCgka2V5KQorCWxsaWxsCSRtYXNrLGAweGZmPDwzYAorCWFnaGkJJHJvdW5kcywtMQorCWoJLkxlbmNfbG9vcAorLmFsaWduCTE2CisuTGVuY19sb29wOgorCXNsbGcJJHQxLCRzMCxgMCszYAorCXNybGcJJHQyLCRzMCxgOC0zYAorCXNybGcJJHQzLCRzMCxgMTYtM2AKKwlzcmwJJHMwLGAyNC0zYAorCW5yCSRzMCwkbWFzaworCW5ncgkkdDEsJG1hc2sKKwlucgkkdDIsJG1hc2sKKwlucgkkdDMsJG1hc2sKKworCXNybGcJJGkxLCRzMSxgMTYtM2AJIyBpMAorCXNsbGcJJGkyLCRzMSxgMCszYAorCXNybGcJJGkzLCRzMSxgOC0zYAorCXNybAkkczEsYDI0LTNgCisJbnIJJGkxLCRtYXNrCisJbnIJJHMxLCRtYXNrCisJbmdyCSRpMiwkbWFzaworCW5yCSRpMywkbWFzaworCisJbAkkczAsMCgkczAsJHRibCkJIyBUZTBbczA+PjI0XQorCWwJJHQxLDEoJHQxLCR0YmwpCSMgVGUzW3MwPj4wXQorCWwJJHQyLDIoJHQyLCR0YmwpICMgVGUyW3MwPj44XQorCWwJJHQzLDMoJHQzLCR0YmwpCSMgVGUxW3MwPj4xNl0KKworCXgJJHMwLDMoJGkxLCR0YmwpCSMgVGUxW3MxPj4xNl0KKwlsCSRzMSwwKCRzMSwkdGJsKQkjIFRlMFtzMT4+MjRdCisJeAkkdDIsMSgkaTIsJHRibCkJIyBUZTNbczE+PjBdCisJeAkkdDMsMigkaTMsJHRibCkJIyBUZTJbczE+PjhdCisKKwlzcmxnCSRpMSwkczIsYDgtM2AJIyBpMAorCXNybGcJJGkyLCRzMixgMTYtM2AJIyBpMQorCW5yCSRpMSwkbWFzaworCW5yCSRpMiwkbWFzaworCXNsbGcJJGkzLCRzMixgMCszYAorCXNybAkkczIsYDI0LTNgCisJbnIJJHMyLCRtYXNrCisJbmdyCSRpMywkbWFzaworCisJeHIJJHMxLCR0MQorCXNybGcJJHJhLCRzMyxgOC0zYAkjIGkxCisJc2xsZwkkdDEsJHMzLGAwKzNgCSMgaTAKKwlucgkkcmEsJG1hc2sKKwlsYQkka2V5LDE2KCRrZXkpCisJbmdyCSR0MSwkbWFzaworCisJeAkkczAsMigkaTEsJHRibCkJIyBUZTJbczI+PjhdCisJeAkkczEsMygkaTIsJHRibCkJIyBUZTFbczI+PjE2XQorCWwJJHMyLDAoJHMyLCR0YmwpCSMgVGUwW3MyPj4yNF0KKwl4CSR0MywxKCRpMywkdGJsKQkjIFRlM1tzMj4+MF0KKworCXNybGcJJGkzLCRzMyxgMTYtM2AJIyBpMgorCXhyCSRzMiwkdDIKKwlzcmwJJHMzLGAyNC0zYAorCW5yCSRpMywkbWFzaworCW5yCSRzMywkbWFzaworCisJeAkkczAsMCgka2V5KQorCXgJJHMxLDQoJGtleSkKKwl4CSRzMiw4KCRrZXkpCisJeAkkdDMsMTIoJGtleSkKKworCXgJJHMwLDEoJHQxLCR0YmwpCSMgVGUzW3MzPj4wXQorCXgJJHMxLDIoJHJhLCR0YmwpCSMgVGUyW3MzPj44XQorCXgJJHMyLDMoJGkzLCR0YmwpCSMgVGUxW3MzPj4xNl0KKwlsCSRzMywwKCRzMywkdGJsKQkjIFRlMFtzMz4+MjRdCisJeHIJJHMzLCR0MworCisJYnJjdAkkcm91bmRzLC5MZW5jX2xvb3AKKwkuYWxpZ24JMTYKKworCXNsbGcJJHQxLCRzMCxgMCszYAorCXNybGcJJHQyLCRzMCxgOC0zYAorCW5ncgkkdDEsJG1hc2sKKwlzcmxnCSR0MywkczAsYDE2LTNgCisJc3JsCSRzMCxgMjQtM2AKKwlucgkkczAsJG1hc2sKKwlucgkkdDIsJG1hc2sKKwlucgkkdDMsJG1hc2sKKworCXNybGcJJGkxLCRzMSxgMTYtM2AJIyBpMAorCXNsbGcJJGkyLCRzMSxgMCszYAorCW5ncgkkaTIsJG1hc2sKKwlzcmxnCSRpMywkczEsYDgtM2AKKwlzcmwJJHMxLGAyNC0zYAorCW5yCSRpMSwkbWFzaworCW5yCSRzMSwkbWFzaworCW5yCSRpMywkbWFzaworCisJbGxnYwkkczAsMigkczAsJHRibCkJIyBUZTRbczA+PjI0XQorCWxsZ2MJJHQxLDIoJHQxLCR0YmwpCSMgVGU0W3MwPj4wXQorCXNsbAkkczAsMjQKKwlsbGdjCSR0MiwyKCR0MiwkdGJsKQkjIFRlNFtzMD4+OF0KKwlsbGdjCSR0MywyKCR0MywkdGJsKQkjIFRlNFtzMD4+MTZdCisJc2xsCSR0Miw4CisJc2xsCSR0MywxNgorCisJbGxnYwkkaTEsMigkaTEsJHRibCkJIyBUZTRbczE+PjE2XQorCWxsZ2MJJHMxLDIoJHMxLCR0YmwpCSMgVGU0W3MxPj4yNF0KKwlsbGdjCSRpMiwyKCRpMiwkdGJsKQkjIFRlNFtzMT4+MF0KKwlsbGdjCSRpMywyKCRpMywkdGJsKQkjIFRlNFtzMT4+OF0KKwlzbGwJJGkxLDE2CisJc2xsCSRzMSwyNAorCXNsbAkkaTMsOAorCW9yCSRzMCwkaTEKKwlvcgkkczEsJHQxCisJb3IJJHQyLCRpMgorCW9yCSR0MywkaTMKKwkKKwlzcmxnCSRpMSwkczIsYDgtM2AJIyBpMAorCXNybGcJJGkyLCRzMixgMTYtM2AJIyBpMQorCW5yCSRpMSwkbWFzaworCW5yCSRpMiwkbWFzaworCXNsbGcJJGkzLCRzMixgMCszYAorCXNybAkkczIsYDI0LTNgCisJbmdyCSRpMywkbWFzaworCW5yCSRzMiwkbWFzaworCisJc2xsZwkkdDEsJHMzLGAwKzNgCSMgaTAKKwlzcmxnCSRyYSwkczMsYDgtM2AJIyBpMQorCW5ncgkkdDEsJG1hc2sKKworCWxsZ2MJJGkxLDIoJGkxLCR0YmwpCSMgVGU0W3MyPj44XQorCWxsZ2MJJGkyLDIoJGkyLCR0YmwpCSMgVGU0W3MyPj4xNl0KKwlzbGwJJGkxLDgKKwlsbGdjCSRzMiwyKCRzMiwkdGJsKQkjIFRlNFtzMj4+MjRdCisJbGxnYwkkaTMsMigkaTMsJHRibCkJIyBUZTRbczI+PjBdCisJc2xsCSRpMiwxNgorCW5yCSRyYSwkbWFzaworCXNsbAkkczIsMjQKKwlvcgkkczAsJGkxCisJb3IJJHMxLCRpMgorCW9yCSRzMiwkdDIKKwlvcgkkdDMsJGkzCisKKwlzcmxnCSRpMywkczMsYDE2LTNgCSMgaTIKKwlzcmwJJHMzLGAyNC0zYAorCW5yCSRpMywkbWFzaworCW5yCSRzMywkbWFzaworCisJbAkkdDAsMTYoJGtleSkKKwlsCSR0MiwyMCgka2V5KQorCisJbGxnYwkkaTEsMigkdDEsJHRibCkJIyBUZTRbczM+PjBdCisJbGxnYwkkaTIsMigkcmEsJHRibCkJIyBUZTRbczM+PjhdCisJbGxnYwkkaTMsMigkaTMsJHRibCkJIyBUZTRbczM+PjE2XQorCWxsZ2MJJHMzLDIoJHMzLCR0YmwpCSMgVGU0W3MzPj4yNF0KKwlzbGwJJGkyLDgKKwlzbGwJJGkzLDE2CisJc2xsCSRzMywyNAorCW9yCSRzMCwkaTEKKwlvcgkkczEsJGkyCisJb3IJJHMyLCRpMworCW9yCSRzMywkdDMKKworCWwke2d9CSRyYSwxNSokU0laRV9UKCRzcCkKKwl4cgkkczAsJHQwCisJeHIJJHMxLCR0MgorCXgJJHMyLDI0KCRrZXkpCisJeAkkczMsMjgoJGtleSkKKworCWJyCSRyYQkKKy5zaXplCV9zMzkweF9BRVNfZW5jcnlwdCwuLV9zMzkweF9BRVNfZW5jcnlwdAorX19fCisKKyRjb2RlLj08PF9fXzsKKy50eXBlCUFFU19UZCxcQG9iamVjdAorLmFsaWduCTI1NgorQUVTX1RkOgorX19fCismX2RhdGFfd29yZCgKKwkweDUxZjRhNzUwLCAweDdlNDE2NTUzLCAweDFhMTdhNGMzLCAweDNhMjc1ZTk2LAorCTB4M2JhYjZiY2IsIDB4MWY5ZDQ1ZjEsIDB4YWNmYTU4YWIsIDB4NGJlMzAzOTMsCisJMHgyMDMwZmE1NSwgMHhhZDc2NmRmNiwgMHg4OGNjNzY5MSwgMHhmNTAyNGMyNSwKKwkweDRmZTVkN2ZjLCAweGM1MmFjYmQ3LCAweDI2MzU0NDgwLCAweGI1NjJhMzhmLAorCTB4ZGViMTVhNDksIDB4MjViYTFiNjcsIDB4NDVlYTBlOTgsIDB4NWRmZWMwZTEsCisJMHhjMzJmNzUwMiwgMHg4MTRjZjAxMiwgMHg4ZDQ2OTdhMywgMHg2YmQzZjljNiwKKwkweDAzOGY1ZmU3LCAweDE1OTI5Yzk1LCAweGJmNmQ3YWViLCAweDk1NTI1OWRhLAorCTB4ZDRiZTgzMmQsIDB4NTg3NDIxZDMsIDB4NDllMDY5MjksIDB4OGVjOWM4NDQsCisJMHg3NWMyODk2YSwgMHhmNDhlNzk3OCwgMHg5OTU4M2U2YiwgMHgyN2I5NzFkZCwKKwkweGJlZTE0ZmI2LCAweGYwODhhZDE3LCAweGM5MjBhYzY2LCAweDdkY2UzYWI0LAorCTB4NjNkZjRhMTgsIDB4ZTUxYTMxODIsIDB4OTc1MTMzNjAsIDB4NjI1MzdmNDUsCisJMHhiMTY0NzdlMCwgMHhiYjZiYWU4NCwgMHhmZTgxYTAxYywgMHhmOTA4MmI5NCwKKwkweDcwNDg2ODU4LCAweDhmNDVmZDE5LCAweDk0ZGU2Yzg3LCAweDUyN2JmOGI3LAorCTB4YWI3M2QzMjMsIDB4NzI0YjAyZTIsIDB4ZTMxZjhmNTcsIDB4NjY1NWFiMmEsCisJMHhiMmViMjgwNywgMHgyZmI1YzIwMywgMHg4NmM1N2I5YSwgMHhkMzM3MDhhNSwKKwkweDMwMjg4N2YyLCAweDIzYmZhNWIyLCAweDAyMDM2YWJhLCAweGVkMTY4MjVjLAorCTB4OGFjZjFjMmIsIDB4YTc3OWI0OTIsIDB4ZjMwN2YyZjAsIDB4NGU2OWUyYTEsCisJMHg2NWRhZjRjZCwgMHgwNjA1YmVkNSwgMHhkMTM0NjIxZiwgMHhjNGE2ZmU4YSwKKwkweDM0MmU1MzlkLCAweGEyZjM1NWEwLCAweDA1OGFlMTMyLCAweGE0ZjZlYjc1LAorCTB4MGI4M2VjMzksIDB4NDA2MGVmYWEsIDB4NWU3MTlmMDYsIDB4YmQ2ZTEwNTEsCisJMHgzZTIxOGFmOSwgMHg5NmRkMDYzZCwgMHhkZDNlMDVhZSwgMHg0ZGU2YmQ0NiwKKwkweDkxNTQ4ZGI1LCAweDcxYzQ1ZDA1LCAweDA0MDZkNDZmLCAweDYwNTAxNWZmLAorCTB4MTk5OGZiMjQsIDB4ZDZiZGU5OTcsIDB4ODk0MDQzY2MsIDB4NjdkOTllNzcsCisJMHhiMGU4NDJiZCwgMHgwNzg5OGI4OCwgMHhlNzE5NWIzOCwgMHg3OWM4ZWVkYiwKKwkweGExN2MwYTQ3LCAweDdjNDIwZmU5LCAweGY4ODQxZWM5LCAweDAwMDAwMDAwLAorCTB4MDk4MDg2ODMsIDB4MzIyYmVkNDgsIDB4MWUxMTcwYWMsIDB4NmM1YTcyNGUsCisJMHhmZDBlZmZmYiwgMHgwZjg1Mzg1NiwgMHgzZGFlZDUxZSwgMHgzNjJkMzkyNywKKwkweDBhMGZkOTY0LCAweDY4NWNhNjIxLCAweDliNWI1NGQxLCAweDI0MzYyZTNhLAorCTB4MGMwYTY3YjEsIDB4OTM1N2U3MGYsIDB4YjRlZTk2ZDIsIDB4MWI5YjkxOWUsCisJMHg4MGMwYzU0ZiwgMHg2MWRjMjBhMiwgMHg1YTc3NGI2OSwgMHgxYzEyMWExNiwKKwkweGUyOTNiYTBhLCAweGMwYTAyYWU1LCAweDNjMjJlMDQzLCAweDEyMWIxNzFkLAorCTB4MGUwOTBkMGIsIDB4ZjI4YmM3YWQsIDB4MmRiNmE4YjksIDB4MTQxZWE5YzgsCisJMHg1N2YxMTk4NSwgMHhhZjc1MDc0YywgMHhlZTk5ZGRiYiwgMHhhMzdmNjBmZCwKKwkweGY3MDEyNjlmLCAweDVjNzJmNWJjLCAweDQ0NjYzYmM1LCAweDViZmI3ZTM0LAorCTB4OGI0MzI5NzYsIDB4Y2IyM2M2ZGMsIDB4YjZlZGZjNjgsIDB4YjhlNGYxNjMsCisJMHhkNzMxZGNjYSwgMHg0MjYzODUxMCwgMHgxMzk3MjI0MCwgMHg4NGM2MTEyMCwKKwkweDg1NGEyNDdkLCAweGQyYmIzZGY4LCAweGFlZjkzMjExLCAweGM3MjlhMTZkLAorCTB4MWQ5ZTJmNGIsIDB4ZGNiMjMwZjMsIDB4MGQ4NjUyZWMsIDB4NzdjMWUzZDAsCisJMHgyYmIzMTY2YywgMHhhOTcwYjk5OSwgMHgxMTk0NDhmYSwgMHg0N2U5NjQyMiwKKwkweGE4ZmM4Y2M0LCAweGEwZjAzZjFhLCAweDU2N2QyY2Q4LCAweDIyMzM5MGVmLAorCTB4ODc0OTRlYzcsIDB4ZDkzOGQxYzEsIDB4OGNjYWEyZmUsIDB4OThkNDBiMzYsCisJMHhhNmY1ODFjZiwgMHhhNTdhZGUyOCwgMHhkYWI3OGUyNiwgMHgzZmFkYmZhNCwKKwkweDJjM2E5ZGU0LCAweDUwNzg5MjBkLCAweDZhNWZjYzliLCAweDU0N2U0NjYyLAorCTB4ZjY4ZDEzYzIsIDB4OTBkOGI4ZTgsIDB4MmUzOWY3NWUsIDB4ODJjM2FmZjUsCisJMHg5ZjVkODBiZSwgMHg2OWQwOTM3YywgMHg2ZmQ1MmRhOSwgMHhjZjI1MTJiMywKKwkweGM4YWM5OTNiLCAweDEwMTg3ZGE3LCAweGU4OWM2MzZlLCAweGRiM2JiYjdiLAorCTB4Y2QyNjc4MDksIDB4NmU1OTE4ZjQsIDB4ZWM5YWI3MDEsIDB4ODM0ZjlhYTgsCisJMHhlNjk1NmU2NSwgMHhhYWZmZTY3ZSwgMHgyMWJjY2YwOCwgMHhlZjE1ZThlNiwKKwkweGJhZTc5YmQ5LCAweDRhNmYzNmNlLCAweGVhOWYwOWQ0LCAweDI5YjA3Y2Q2LAorCTB4MzFhNGIyYWYsIDB4MmEzZjIzMzEsIDB4YzZhNTk0MzAsIDB4MzVhMjY2YzAsCisJMHg3NDRlYmMzNywgMHhmYzgyY2FhNiwgMHhlMDkwZDBiMCwgMHgzM2E3ZDgxNSwKKwkweGYxMDQ5ODRhLCAweDQxZWNkYWY3LCAweDdmY2Q1MDBlLCAweDE3OTFmNjJmLAorCTB4NzY0ZGQ2OGQsIDB4NDNlZmIwNGQsIDB4Y2NhYTRkNTQsIDB4ZTQ5NjA0ZGYsCisJMHg5ZWQxYjVlMywgMHg0YzZhODgxYiwgMHhjMTJjMWZiOCwgMHg0NjY1NTE3ZiwKKwkweDlkNWVlYTA0LCAweDAxOGMzNTVkLCAweGZhODc3NDczLCAweGZiMGI0MTJlLAorCTB4YjM2NzFkNWEsIDB4OTJkYmQyNTIsIDB4ZTkxMDU2MzMsIDB4NmRkNjQ3MTMsCisJMHg5YWQ3NjE4YywgMHgzN2ExMGM3YSwgMHg1OWY4MTQ4ZSwgMHhlYjEzM2M4OSwKKwkweGNlYTkyN2VlLCAweGI3NjFjOTM1LCAweGUxMWNlNWVkLCAweDdhNDdiMTNjLAorCTB4OWNkMmRmNTksIDB4NTVmMjczM2YsIDB4MTgxNGNlNzksIDB4NzNjNzM3YmYsCisJMHg1M2Y3Y2RlYSwgMHg1ZmZkYWE1YiwgMHhkZjNkNmYxNCwgMHg3ODQ0ZGI4NiwKKwkweGNhYWZmMzgxLCAweGI5NjhjNDNlLCAweDM4MjQzNDJjLCAweGMyYTM0MDVmLAorCTB4MTYxZGMzNzIsIDB4YmNlMjI1MGMsIDB4MjgzYzQ5OGIsIDB4ZmYwZDk1NDEsCisJMHgzOWE4MDE3MSwgMHgwODBjYjNkZSwgMHhkOGI0ZTQ5YywgMHg2NDU2YzE5MCwKKwkweDdiY2I4NDYxLCAweGQ1MzJiNjcwLCAweDQ4NmM1Yzc0LCAweGQwYjg1NzQyKTsKKyRjb2RlLj08PF9fXzsKKyMgVGQ0WzI1Nl0KKy5ieXRlCTB4NTIsIDB4MDksIDB4NmEsIDB4ZDUsIDB4MzAsIDB4MzYsIDB4YTUsIDB4MzgKKy5ieXRlCTB4YmYsIDB4NDAsIDB4YTMsIDB4OWUsIDB4ODEsIDB4ZjMsIDB4ZDcsIDB4ZmIKKy5ieXRlCTB4N2MsIDB4ZTMsIDB4MzksIDB4ODIsIDB4OWIsIDB4MmYsIDB4ZmYsIDB4ODcKKy5ieXRlCTB4MzQsIDB4OGUsIDB4NDMsIDB4NDQsIDB4YzQsIDB4ZGUsIDB4ZTksIDB4Y2IKKy5ieXRlCTB4NTQsIDB4N2IsIDB4OTQsIDB4MzIsIDB4YTYsIDB4YzIsIDB4MjMsIDB4M2QKKy5ieXRlCTB4ZWUsIDB4NGMsIDB4OTUsIDB4MGIsIDB4NDIsIDB4ZmEsIDB4YzMsIDB4NGUKKy5ieXRlCTB4MDgsIDB4MmUsIDB4YTEsIDB4NjYsIDB4MjgsIDB4ZDksIDB4MjQsIDB4YjIKKy5ieXRlCTB4NzYsIDB4NWIsIDB4YTIsIDB4NDksIDB4NmQsIDB4OGIsIDB4ZDEsIDB4MjUKKy5ieXRlCTB4NzIsIDB4ZjgsIDB4ZjYsIDB4NjQsIDB4ODYsIDB4NjgsIDB4OTgsIDB4MTYKKy5ieXRlCTB4ZDQsIDB4YTQsIDB4NWMsIDB4Y2MsIDB4NWQsIDB4NjUsIDB4YjYsIDB4OTIKKy5ieXRlCTB4NmMsIDB4NzAsIDB4NDgsIDB4NTAsIDB4ZmQsIDB4ZWQsIDB4YjksIDB4ZGEKKy5ieXRlCTB4NWUsIDB4MTUsIDB4NDYsIDB4NTcsIDB4YTcsIDB4OGQsIDB4OWQsIDB4ODQKKy5ieXRlCTB4OTAsIDB4ZDgsIDB4YWIsIDB4MDAsIDB4OGMsIDB4YmMsIDB4ZDMsIDB4MGEKKy5ieXRlCTB4ZjcsIDB4ZTQsIDB4NTgsIDB4MDUsIDB4YjgsIDB4YjMsIDB4NDUsIDB4MDYKKy5ieXRlCTB4ZDAsIDB4MmMsIDB4MWUsIDB4OGYsIDB4Y2EsIDB4M2YsIDB4MGYsIDB4MDIKKy5ieXRlCTB4YzEsIDB4YWYsIDB4YmQsIDB4MDMsIDB4MDEsIDB4MTMsIDB4OGEsIDB4NmIKKy5ieXRlCTB4M2EsIDB4OTEsIDB4MTEsIDB4NDEsIDB4NGYsIDB4NjcsIDB4ZGMsIDB4ZWEKKy5ieXRlCTB4OTcsIDB4ZjIsIDB4Y2YsIDB4Y2UsIDB4ZjAsIDB4YjQsIDB4ZTYsIDB4NzMKKy5ieXRlCTB4OTYsIDB4YWMsIDB4NzQsIDB4MjIsIDB4ZTcsIDB4YWQsIDB4MzUsIDB4ODUKKy5ieXRlCTB4ZTIsIDB4ZjksIDB4MzcsIDB4ZTgsIDB4MWMsIDB4NzUsIDB4ZGYsIDB4NmUKKy5ieXRlCTB4NDcsIDB4ZjEsIDB4MWEsIDB4NzEsIDB4MWQsIDB4MjksIDB4YzUsIDB4ODkKKy5ieXRlCTB4NmYsIDB4YjcsIDB4NjIsIDB4MGUsIDB4YWEsIDB4MTgsIDB4YmUsIDB4MWIKKy5ieXRlCTB4ZmMsIDB4NTYsIDB4M2UsIDB4NGIsIDB4YzYsIDB4ZDIsIDB4NzksIDB4MjAKKy5ieXRlCTB4OWEsIDB4ZGIsIDB4YzAsIDB4ZmUsIDB4NzgsIDB4Y2QsIDB4NWEsIDB4ZjQKKy5ieXRlCTB4MWYsIDB4ZGQsIDB4YTgsIDB4MzMsIDB4ODgsIDB4MDcsIDB4YzcsIDB4MzEKKy5ieXRlCTB4YjEsIDB4MTIsIDB4MTAsIDB4NTksIDB4MjcsIDB4ODAsIDB4ZWMsIDB4NWYKKy5ieXRlCTB4NjAsIDB4NTEsIDB4N2YsIDB4YTksIDB4MTksIDB4YjUsIDB4NGEsIDB4MGQKKy5ieXRlCTB4MmQsIDB4ZTUsIDB4N2EsIDB4OWYsIDB4OTMsIDB4YzksIDB4OWMsIDB4ZWYKKy5ieXRlCTB4YTAsIDB4ZTAsIDB4M2IsIDB4NGQsIDB4YWUsIDB4MmEsIDB4ZjUsIDB4YjAKKy5ieXRlCTB4YzgsIDB4ZWIsIDB4YmIsIDB4M2MsIDB4ODMsIDB4NTMsIDB4OTksIDB4NjEKKy5ieXRlCTB4MTcsIDB4MmIsIDB4MDQsIDB4N2UsIDB4YmEsIDB4NzcsIDB4ZDYsIDB4MjYKKy5ieXRlCTB4ZTEsIDB4NjksIDB4MTQsIDB4NjMsIDB4NTUsIDB4MjEsIDB4MGMsIDB4N2QKKy5zaXplCUFFU19UZCwuLUFFU19UZAorCisjIHZvaWQgQUVTX2RlY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW5wLCB1bnNpZ25lZCBjaGFyICpvdXQsCisjIAkJIGNvbnN0IEFFU19LRVkgKmtleSkgeworLmdsb2JsCUFFU19kZWNyeXB0CisudHlwZQlBRVNfZGVjcnlwdCxcQGZ1bmN0aW9uCitBRVNfZGVjcnlwdDoKK19fXworJGNvZGUuPTw8X19fIGlmICghJHNvZnRvbmx5KTsKKwlsCSVyMCwyNDAoJGtleSkKKwlsaGkJJXIxLDE2CisJY2xyCSVyMCwlcjEKKwlqbAkuTGRzb2Z0CisKKwlsYQklcjEsMCgka2V5KQorCSNsYQklcjIsMCgkaW5wKQorCWxhCSVyNCwwKCRvdXQpCisJbGdoaQklcjMsMTYJCSMgc2luZ2xlIGJsb2NrIGxlbmd0aAorCS5sb25nCTB4YjkyZTAwNDIJIyBrbSAlcjQsJXIyCisJYnJjCTEsLi00CQkjIGNhbiB0aGlzIGhhcHBlbj8KKwlicgklcjE0CisuYWxpZ24JNjQKKy5MZHNvZnQ6CitfX18KKyRjb2RlLj08PF9fXzsKKwlzdG0ke2d9CSVyMywkcmEsMyokU0laRV9UKCRzcCkKKworCWxsZ2YJJHMwLDAoJGlucCkKKwlsbGdmCSRzMSw0KCRpbnApCisJbGxnZgkkczIsOCgkaW5wKQorCWxsZ2YJJHMzLDEyKCRpbnApCisKKwlsYXJsCSR0YmwsQUVTX1RkCisJYnJhcwkkcmEsX3MzOTB4X0FFU19kZWNyeXB0CisKKwlsJHtnfQkkb3V0LDMqJFNJWkVfVCgkc3ApCisJc3QJJHMwLDAoJG91dCkKKwlzdAkkczEsNCgkb3V0KQorCXN0CSRzMiw4KCRvdXQpCisJc3QJJHMzLDEyKCRvdXQpCisKKwlsbSR7Z30JJXI2LCRyYSw2KiRTSVpFX1QoJHNwKQorCWJyCSRyYQorLnNpemUJQUVTX2RlY3J5cHQsLi1BRVNfZGVjcnlwdAorCisudHlwZSAgIF9zMzkweF9BRVNfZGVjcnlwdCxcQGZ1bmN0aW9uCisuYWxpZ24JMTYKK19zMzkweF9BRVNfZGVjcnlwdDoKKwlzdCR7Z30JJHJhLDE1KiRTSVpFX1QoJHNwKQorCXgJJHMwLDAoJGtleSkKKwl4CSRzMSw0KCRrZXkpCisJeAkkczIsOCgka2V5KQorCXgJJHMzLDEyKCRrZXkpCisJbAkkcm91bmRzLDI0MCgka2V5KQorCWxsaWxsCSRtYXNrLGAweGZmPDwzYAorCWFnaGkJJHJvdW5kcywtMQorCWoJLkxkZWNfbG9vcAorLmFsaWduCTE2CisuTGRlY19sb29wOgorCXNybGcJJHQxLCRzMCxgMTYtM2AKKwlzcmxnCSR0MiwkczAsYDgtM2AKKwlzbGxnCSR0MywkczAsYDArM2AKKwlzcmwJJHMwLGAyNC0zYAorCW5yCSRzMCwkbWFzaworCW5yCSR0MSwkbWFzaworCW5yCSR0MiwkbWFzaworCW5ncgkkdDMsJG1hc2sKKworCXNsbGcJJGkxLCRzMSxgMCszYAkjIGkwCisJc3JsZwkkaTIsJHMxLGAxNi0zYAorCXNybGcJJGkzLCRzMSxgOC0zYAorCXNybAkkczEsYDI0LTNgCisJbmdyCSRpMSwkbWFzaworCW5yCSRzMSwkbWFzaworCW5yCSRpMiwkbWFzaworCW5yCSRpMywkbWFzaworCisJbAkkczAsMCgkczAsJHRibCkJIyBUZDBbczA+PjI0XQorCWwJJHQxLDMoJHQxLCR0YmwpCSMgVGQxW3MwPj4xNl0KKwlsCSR0MiwyKCR0MiwkdGJsKQkjIFRkMltzMD4+OF0KKwlsCSR0MywxKCR0MywkdGJsKQkjIFRkM1tzMD4+MF0KKworCXgJJHMwLDEoJGkxLCR0YmwpCSMgVGQzW3MxPj4wXQorCWwJJHMxLDAoJHMxLCR0YmwpCSMgVGQwW3MxPj4yNF0KKwl4CSR0MiwzKCRpMiwkdGJsKQkjIFRkMVtzMT4+MTZdCisJeAkkdDMsMigkaTMsJHRibCkJIyBUZDJbczE+PjhdCisKKwlzcmxnCSRpMSwkczIsYDgtM2AJIyBpMAorCXNsbGcJJGkyLCRzMixgMCszYAkjIGkxCisJc3JsZwkkaTMsJHMyLGAxNi0zYAorCXNybAkkczIsYDI0LTNgCisJbnIJJGkxLCRtYXNrCisJbmdyCSRpMiwkbWFzaworCW5yCSRzMiwkbWFzaworCW5yCSRpMywkbWFzaworCisJeHIJJHMxLCR0MQorCXNybGcJJHJhLCRzMyxgOC0zYAkjIGkxCisJc3JsZwkkdDEsJHMzLGAxNi0zYAkjIGkwCisJbnIJJHJhLCRtYXNrCisJbGEJJGtleSwxNigka2V5KQorCW5yCSR0MSwkbWFzaworCisJeAkkczAsMigkaTEsJHRibCkJIyBUZDJbczI+PjhdCisJeAkkczEsMSgkaTIsJHRibCkJIyBUZDNbczI+PjBdCisJbAkkczIsMCgkczIsJHRibCkJIyBUZDBbczI+PjI0XQorCXgJJHQzLDMoJGkzLCR0YmwpCSMgVGQxW3MyPj4xNl0KKworCXNsbGcJJGkzLCRzMyxgMCszYAkjIGkyCisJc3JsCSRzMyxgMjQtM2AKKwluZ3IJJGkzLCRtYXNrCisJbnIJJHMzLCRtYXNrCisKKwl4cgkkczIsJHQyCisJeAkkczAsMCgka2V5KQorCXgJJHMxLDQoJGtleSkKKwl4CSRzMiw4KCRrZXkpCisJeAkkdDMsMTIoJGtleSkKKworCXgJJHMwLDMoJHQxLCR0YmwpCSMgVGQxW3MzPj4xNl0KKwl4CSRzMSwyKCRyYSwkdGJsKQkjIFRkMltzMz4+OF0KKwl4CSRzMiwxKCRpMywkdGJsKQkjIFRkM1tzMz4+MF0KKwlsCSRzMywwKCRzMywkdGJsKQkjIFRkMFtzMz4+MjRdCisJeHIJJHMzLCR0MworCisJYnJjdAkkcm91bmRzLC5MZGVjX2xvb3AKKwkuYWxpZ24JMTYKKworCWwJJHQxLGAyMDQ4KzBgKCR0YmwpCSMgcHJlZmV0Y2ggVGQ0CisJbAkkdDIsYDIwNDgrNjRgKCR0YmwpCisJbAkkdDMsYDIwNDgrMTI4YCgkdGJsKQorCWwJJGkxLGAyMDQ4KzE5MmAoJHRibCkKKwlsbGlsbAkkbWFzaywweGZmCisKKwlzcmxnCSRpMywkczAsMjQJIyBpMAorCXNybGcJJHQxLCRzMCwxNgorCXNybGcJJHQyLCRzMCw4CisJbnIJJHMwLCRtYXNrCSMgaTMKKwlucgkkdDEsJG1hc2sKKworCXNybGcJJGkxLCRzMSwyNAorCW5yCSR0MiwkbWFzaworCXNybGcJJGkyLCRzMSwxNgorCXNybGcJJHJhLCRzMSw4CisJbnIJJHMxLCRtYXNrCSMgaTAKKwlucgkkaTIsJG1hc2sKKwlucgkkcmEsJG1hc2sKKworCWxsZ2MJJGkzLDIwNDgoJGkzLCR0YmwpCSMgVGQ0W3MwPj4yNF0KKwlsbGdjCSR0MSwyMDQ4KCR0MSwkdGJsKQkjIFRkNFtzMD4+MTZdCisJbGxnYwkkdDIsMjA0OCgkdDIsJHRibCkJIyBUZDRbczA+PjhdCisJc2xsCSR0MSwxNgorCWxsZ2MJJHQzLDIwNDgoJHMwLCR0YmwpCSMgVGQ0W3MwPj4wXQorCXNsbGcJJHMwLCRpMywyNAorCXNsbAkkdDIsOAorCisJbGxnYwkkczEsMjA0OCgkczEsJHRibCkJIyBUZDRbczE+PjBdCisJbGxnYwkkaTEsMjA0OCgkaTEsJHRibCkJIyBUZDRbczE+PjI0XQorCWxsZ2MJJGkyLDIwNDgoJGkyLCR0YmwpCSMgVGQ0W3MxPj4xNl0KKwlzbGwJJGkxLDI0CisJbGxnYwkkaTMsMjA0OCgkcmEsJHRibCkJIyBUZDRbczE+PjhdCisJc2xsCSRpMiwxNgorCXNsbAkkaTMsOAorCW9yCSRzMCwkczEKKwlvcgkkdDEsJGkxCisJb3IJJHQyLCRpMgorCW9yCSR0MywkaTMKKworCXNybGcJJGkxLCRzMiw4CSMgaTAKKwlzcmxnCSRpMiwkczIsMjQKKwlzcmxnCSRpMywkczIsMTYKKwlucgkkczIsJG1hc2sJIyBpMQorCW5yCSRpMSwkbWFzaworCW5yCSRpMywkbWFzaworCWxsZ2MJJGkxLDIwNDgoJGkxLCR0YmwpCSMgVGQ0W3MyPj44XQorCWxsZ2MJJHMxLDIwNDgoJHMyLCR0YmwpCSMgVGQ0W3MyPj4wXQorCWxsZ2MJJGkyLDIwNDgoJGkyLCR0YmwpCSMgVGQ0W3MyPj4yNF0KKwlsbGdjCSRpMywyMDQ4KCRpMywkdGJsKQkjIFRkNFtzMj4+MTZdCisJc2xsCSRpMSw4CisJc2xsCSRpMiwyNAorCW9yCSRzMCwkaTEKKwlzbGwJJGkzLDE2CisJb3IJJHQyLCRpMgorCW9yCSR0MywkaTMKKworCXNybGcJJGkxLCRzMywxNgkjIGkwCisJc3JsZwkkaTIsJHMzLDgJIyBpMQorCXNybGcJJGkzLCRzMywyNAorCW5yCSRzMywkbWFzawkjIGkyCisJbnIJJGkxLCRtYXNrCisJbnIJJGkyLCRtYXNrCisKKwlsJHtnfQkkcmEsMTUqJFNJWkVfVCgkc3ApCisJb3IJJHMxLCR0MQorCWwJJHQwLDE2KCRrZXkpCisJbAkkdDEsMjAoJGtleSkKKworCWxsZ2MJJGkxLDIwNDgoJGkxLCR0YmwpCSMgVGQ0W3MzPj4xNl0KKwlsbGdjCSRpMiwyMDQ4KCRpMiwkdGJsKQkjIFRkNFtzMz4+OF0KKwlzbGwJJGkxLDE2CisJbGxnYwkkczIsMjA0OCgkczMsJHRibCkJIyBUZDRbczM+PjBdCisJbGxnYwkkczMsMjA0OCgkaTMsJHRibCkJIyBUZDRbczM+PjI0XQorCXNsbAkkaTIsOAorCXNsbAkkczMsMjQKKwlvcgkkczAsJGkxCisJb3IJJHMxLCRpMgorCW9yCSRzMiwkdDIKKwlvcgkkczMsJHQzCisKKwl4cgkkczAsJHQwCisJeHIJJHMxLCR0MQorCXgJJHMyLDI0KCRrZXkpCisJeAkkczMsMjgoJGtleSkKKworCWJyCSRyYQkKKy5zaXplCV9zMzkweF9BRVNfZGVjcnlwdCwuLV9zMzkweF9BRVNfZGVjcnlwdAorX19fCisKKyRjb2RlLj08PF9fXzsKKyMgdm9pZCBBRVNfc2V0X2VuY3J5cHRfa2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBpbnQgYml0cywKKyMgCQkgQUVTX0tFWSAqa2V5KSB7CisuZ2xvYmwJcHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5CisudHlwZQlwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXksXEBmdW5jdGlvbgorLmFsaWduCTE2Citwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXk6CitfczM5MHhfQUVTX3NldF9lbmNyeXB0X2tleToKKwlsZ2hpCSR0MCwwCisJY2wke2d9cgkkaW5wLCR0MAorCWplCS5MbWludXMxCisJY2wke2d9cgkka2V5LCR0MAorCWplCS5MbWludXMxCisKKwlsZ2hpCSR0MCwxMjgKKwljbHIJJGJpdHMsJHQwCisJamUJLkxwcm9jZWVkCisJbGdoaQkkdDAsMTkyCisJY2xyCSRiaXRzLCR0MAorCWplCS5McHJvY2VlZAorCWxnaGkJJHQwLDI1NgorCWNscgkkYml0cywkdDAKKwlqZQkuTHByb2NlZWQKKwlsZ2hpCSVyMiwtMgorCWJyCSVyMTQKKworLmFsaWduCTE2CisuTHByb2NlZWQ6CitfX18KKyRjb2RlLj08PF9fXyBpZiAoISRzb2Z0b25seSk7CisJIyBjb252ZXJ0IGJpdHMgdG8ga20gY29kZSwgWzEyOCwxOTIsMjU2XS0+WzE4LDE5LDIwXQorCWxoaQklcjUsLTEyOAorCWxoaQklcjAsMTgKKwlhcgklcjUsJGJpdHMKKwlzcmwJJXI1LDYKKwlhcgklcjUsJXIwCisKKwlsYXJsCSVyMSxPUEVOU1NMX3MzOTB4Y2FwX1AKKwlsZwklcjAsMCglcjEpCisJdG1obAklcjAsMHg0MDAwCSMgY2hlY2sgZm9yIG1lc3NhZ2Utc2VjdXJpdHkgYXNzaXN0CisJanoJLkxla2V5X2ludGVybmFsCisKKwlsZ2hpCSVyMCwwCQkjIHF1ZXJ5IGNhcGFiaWxpdHkgdmVjdG9yCisJbGEJJXIxLDE2KCRzcCkKKwkubG9uZwkweGI5MmYwMDQyCSMga21jICVyNCwlcjIKKworCWxsaWhoCSVyMSwweDgwMDAKKwlzcmxnCSVyMSwlcjEsMCglcjUpCisJbmcJJXIxLDE2KCRzcCkKKwlqegkuTGVrZXlfaW50ZXJuYWwKKworCWxtZwklcjAsJXIxLDAoJGlucCkJIyBqdXN0IGNvcHkgMTI4IGJpdHMuLi4KKwlzdG1nCSVyMCwlcjEsMCgka2V5KQorCWxoaQklcjAsMTkyCisJY3IJJGJpdHMsJXIwCisJamwJMWYKKwlsZwklcjEsMTYoJGlucCkKKwlzdGcJJXIxLDE2KCRrZXkpCisJamUJMWYKKwlsZwklcjEsMjQoJGlucCkKKwlzdGcJJXIxLDI0KCRrZXkpCisxOglzdAkkYml0cywyMzYoJGtleSkJIyBzYXZlIGJpdHMgW2ZvciBkZWJ1Z2dpbmcgcHVycG9zZXNdCisJbGdyCSR0MCwlcjUKKwlzdAklcjUsMjQwKCRrZXkpCSMgc2F2ZSBrbSBjb2RlCisJbGdoaQklcjIsMAorCWJyCSVyMTQKK19fXworJGNvZGUuPTw8X19fOworLmFsaWduCTE2CisuTGVrZXlfaW50ZXJuYWw6CisJc3RtJHtnfQklcjQsJXIxMyw0KiRTSVpFX1QoJHNwKQkjIGFsbCBub24tdm9sYXRpbGUgcmVncyBhbmQgJGtleQorCisJbGFybAkkdGJsLEFFU19UZSsyMDQ4CisKKwlsbGdmCSRzMCwwKCRpbnApCisJbGxnZgkkczEsNCgkaW5wKQorCWxsZ2YJJHMyLDgoJGlucCkKKwlsbGdmCSRzMywxMigkaW5wKQorCXN0CSRzMCwwKCRrZXkpCisJc3QJJHMxLDQoJGtleSkKKwlzdAkkczIsOCgka2V5KQorCXN0CSRzMywxMigka2V5KQorCWxnaGkJJHQwLDEyOAorCWNyCSRiaXRzLCR0MAorCWpuZQkuTG5vdDEyOAorCisJbGxpbGwJJG1hc2ssMHhmZgorCWxnaGkJJHQzLDAJCQkjIGk9MAorCWxnaGkJJHJvdW5kcywxMAorCXN0CSRyb3VuZHMsMjQwKCRrZXkpCisKKwlsbGdmcgkkdDIsJHMzCQkJIyB0ZW1wPXJrWzNdCisJc3JsZwkkaTEsJHMzLDgKKwlzcmxnCSRpMiwkczMsMTYKKwlzcmxnCSRpMywkczMsMjQKKwlucgkkdDIsJG1hc2sKKwlucgkkaTEsJG1hc2sKKwlucgkkaTIsJG1hc2sKKworLmFsaWduCTE2CisuTDEyOF9sb29wOgorCWxhCSR0MiwwKCR0MiwkdGJsKQorCWxhCSRpMSwwKCRpMSwkdGJsKQorCWxhCSRpMiwwKCRpMiwkdGJsKQorCWxhCSRpMywwKCRpMywkdGJsKQorCWljbQkkdDIsMiwwKCR0MikJCSMgVGU0W3JrWzNdPj4wXTw8OAorCWljbQkkdDIsNCwwKCRpMSkJCSMgVGU0W3JrWzNdPj44XTw8MTYKKwlpY20JJHQyLDgsMCgkaTIpCQkjIFRlNFtya1szXT4+MTZdPDwyNAorCWljbQkkdDIsMSwwKCRpMykJCSMgVGU0W3JrWzNdPj4yNF0KKwl4CSR0MiwyNTYoJHQzLCR0YmwpCSMgcmNvbltpXQorCXhyCSRzMCwkdDIJCQkjIHJrWzRdPXJrWzBdXi4uLgorCXhyCSRzMSwkczAJCQkjIHJrWzVdPXJrWzFdXnJrWzRdCisJeHIJJHMyLCRzMQkJCSMgcmtbNl09cmtbMl1ecmtbNV0KKwl4cgkkczMsJHMyCQkJIyBya1s3XT1ya1szXV5ya1s2XQorCisJbGxnZnIJJHQyLCRzMwkJCSMgdGVtcD1ya1szXQorCXNybGcJJGkxLCRzMyw4CisJc3JsZwkkaTIsJHMzLDE2CisJbnIJJHQyLCRtYXNrCisJbnIJJGkxLCRtYXNrCisJc3JsZwkkaTMsJHMzLDI0CisJbnIJJGkyLCRtYXNrCisKKwlzdAkkczAsMTYoJGtleSkKKwlzdAkkczEsMjAoJGtleSkKKwlzdAkkczIsMjQoJGtleSkKKwlzdAkkczMsMjgoJGtleSkKKwlsYQkka2V5LDE2KCRrZXkpCQkjIGtleSs9NAorCWxhCSR0Myw0KCR0MykJCSMgaSsrCisJYnJjdAkkcm91bmRzLC5MMTI4X2xvb3AKKwlsZ2hpCSR0MCwxMAorCWxnaGkJJXIyLDAKKwlsbSR7Z30JJXI0LCVyMTMsNCokU0laRV9UKCRzcCkKKwlicgkkcmEKKworLmFsaWduCTE2CisuTG5vdDEyODoKKwlsbGdmCSR0MCwxNigkaW5wKQorCWxsZ2YJJHQxLDIwKCRpbnApCisJc3QJJHQwLDE2KCRrZXkpCisJc3QJJHQxLDIwKCRrZXkpCisJbGdoaQkkdDAsMTkyCisJY3IJJGJpdHMsJHQwCisJam5lCS5Mbm90MTkyCisKKwlsbGlsbAkkbWFzaywweGZmCisJbGdoaQkkdDMsMAkJCSMgaT0wCisJbGdoaQkkcm91bmRzLDEyCisJc3QJJHJvdW5kcywyNDAoJGtleSkKKwlsZ2hpCSRyb3VuZHMsOAorCisJc3JsZwkkaTEsJHQxLDgKKwlzcmxnCSRpMiwkdDEsMTYKKwlzcmxnCSRpMywkdDEsMjQKKwlucgkkdDEsJG1hc2sKKwlucgkkaTEsJG1hc2sKKwlucgkkaTIsJG1hc2sKKworLmFsaWduCTE2CisuTDE5Ml9sb29wOgorCWxhCSR0MSwwKCR0MSwkdGJsKQorCWxhCSRpMSwwKCRpMSwkdGJsKQorCWxhCSRpMiwwKCRpMiwkdGJsKQorCWxhCSRpMywwKCRpMywkdGJsKQorCWljbQkkdDEsMiwwKCR0MSkJCSMgVGU0W3JrWzVdPj4wXTw8OAorCWljbQkkdDEsNCwwKCRpMSkJCSMgVGU0W3JrWzVdPj44XTw8MTYKKwlpY20JJHQxLDgsMCgkaTIpCQkjIFRlNFtya1s1XT4+MTZdPDwyNAorCWljbQkkdDEsMSwwKCRpMykJCSMgVGU0W3JrWzVdPj4yNF0KKwl4CSR0MSwyNTYoJHQzLCR0YmwpCSMgcmNvbltpXQorCXhyCSRzMCwkdDEJCQkjIHJrWzZdPXJrWzBdXi4uLgorCXhyCSRzMSwkczAJCQkjIHJrWzddPXJrWzFdXnJrWzZdCisJeHIJJHMyLCRzMQkJCSMgcmtbOF09cmtbMl1ecmtbN10KKwl4cgkkczMsJHMyCQkJIyBya1s5XT1ya1szXV5ya1s4XQorCisJc3QJJHMwLDI0KCRrZXkpCisJc3QJJHMxLDI4KCRrZXkpCisJc3QJJHMyLDMyKCRrZXkpCisJc3QJJHMzLDM2KCRrZXkpCisJYnJjdAkkcm91bmRzLC5MMTkyX2NvbnRpbnVlCisJbGdoaQkkdDAsMTIKKwlsZ2hpCSVyMiwwCisJbG0ke2d9CSVyNCwlcjEzLDQqJFNJWkVfVCgkc3ApCisJYnIJJHJhCisKKy5hbGlnbgkxNgorLkwxOTJfY29udGludWU6CisJbGdyCSR0MSwkczMKKwl4CSR0MSwxNigka2V5KQkJIyBya1sxMF09cmtbNF1ecmtbOV0KKwlzdAkkdDEsNDAoJGtleSkKKwl4CSR0MSwyMCgka2V5KQkJIyBya1sxMV09cmtbNV1ecmtbMTBdCisJc3QJJHQxLDQ0KCRrZXkpCisKKwlzcmxnCSRpMSwkdDEsOAorCXNybGcJJGkyLCR0MSwxNgorCXNybGcJJGkzLCR0MSwyNAorCW5yCSR0MSwkbWFzaworCW5yCSRpMSwkbWFzaworCW5yCSRpMiwkbWFzaworCisJbGEJJGtleSwyNCgka2V5KQkJIyBrZXkrPTYKKwlsYQkkdDMsNCgkdDMpCQkjIGkrKworCWoJLkwxOTJfbG9vcAorCisuYWxpZ24JMTYKKy5Mbm90MTkyOgorCWxsZ2YJJHQwLDI0KCRpbnApCisJbGxnZgkkdDEsMjgoJGlucCkKKwlzdAkkdDAsMjQoJGtleSkKKwlzdAkkdDEsMjgoJGtleSkKKwlsbGlsbAkkbWFzaywweGZmCisJbGdoaQkkdDMsMAkJCSMgaT0wCisJbGdoaQkkcm91bmRzLDE0CisJc3QJJHJvdW5kcywyNDAoJGtleSkKKwlsZ2hpCSRyb3VuZHMsNworCisJc3JsZwkkaTEsJHQxLDgKKwlzcmxnCSRpMiwkdDEsMTYKKwlzcmxnCSRpMywkdDEsMjQKKwlucgkkdDEsJG1hc2sKKwlucgkkaTEsJG1hc2sKKwlucgkkaTIsJG1hc2sKKworLmFsaWduCTE2CisuTDI1Nl9sb29wOgorCWxhCSR0MSwwKCR0MSwkdGJsKQorCWxhCSRpMSwwKCRpMSwkdGJsKQorCWxhCSRpMiwwKCRpMiwkdGJsKQorCWxhCSRpMywwKCRpMywkdGJsKQorCWljbQkkdDEsMiwwKCR0MSkJCSMgVGU0W3JrWzddPj4wXTw8OAorCWljbQkkdDEsNCwwKCRpMSkJCSMgVGU0W3JrWzddPj44XTw8MTYKKwlpY20JJHQxLDgsMCgkaTIpCQkjIFRlNFtya1s3XT4+MTZdPDwyNAorCWljbQkkdDEsMSwwKCRpMykJCSMgVGU0W3JrWzddPj4yNF0KKwl4CSR0MSwyNTYoJHQzLCR0YmwpCSMgcmNvbltpXQorCXhyCSRzMCwkdDEJCQkjIHJrWzhdPXJrWzBdXi4uLgorCXhyCSRzMSwkczAJCQkjIHJrWzldPXJrWzFdXnJrWzhdCisJeHIJJHMyLCRzMQkJCSMgcmtbMTBdPXJrWzJdXnJrWzldCisJeHIJJHMzLCRzMgkJCSMgcmtbMTFdPXJrWzNdXnJrWzEwXQorCXN0CSRzMCwzMigka2V5KQorCXN0CSRzMSwzNigka2V5KQorCXN0CSRzMiw0MCgka2V5KQorCXN0CSRzMyw0NCgka2V5KQorCWJyY3QJJHJvdW5kcywuTDI1Nl9jb250aW51ZQorCWxnaGkJJHQwLDE0CisJbGdoaQklcjIsMAorCWxtJHtnfQklcjQsJXIxMyw0KiRTSVpFX1QoJHNwKQorCWJyCSRyYQorCisuYWxpZ24JMTYKKy5MMjU2X2NvbnRpbnVlOgorCWxncgkkdDEsJHMzCQkJIyB0ZW1wPXJrWzExXQorCXNybGcJJGkxLCRzMyw4CisJc3JsZwkkaTIsJHMzLDE2CisJc3JsZwkkaTMsJHMzLDI0CisJbnIJJHQxLCRtYXNrCisJbnIJJGkxLCRtYXNrCisJbnIJJGkyLCRtYXNrCisJbGEJJHQxLDAoJHQxLCR0YmwpCisJbGEJJGkxLDAoJGkxLCR0YmwpCisJbGEJJGkyLDAoJGkyLCR0YmwpCisJbGEJJGkzLDAoJGkzLCR0YmwpCisJbGxnYwkkdDEsMCgkdDEpCQkjIFRlNFtya1sxMV0+PjBdCisJaWNtCSR0MSwyLDAoJGkxKQkJIyBUZTRbcmtbMTFdPj44XTw8OAorCWljbQkkdDEsNCwwKCRpMikJCSMgVGU0W3JrWzExXT4+MTZdPDwxNgorCWljbQkkdDEsOCwwKCRpMykJCSMgVGU0W3JrWzExXT4+MjRdPDwyNAorCXgJJHQxLDE2KCRrZXkpCQkjIHJrWzEyXT1ya1s0XV4uLi4KKwlzdAkkdDEsNDgoJGtleSkKKwl4CSR0MSwyMCgka2V5KQkJIyBya1sxM109cmtbNV1ecmtbMTJdCisJc3QJJHQxLDUyKCRrZXkpCisJeAkkdDEsMjQoJGtleSkJCSMgcmtbMTRdPXJrWzZdXnJrWzEzXQorCXN0CSR0MSw1Nigka2V5KQorCXgJJHQxLDI4KCRrZXkpCQkjIHJrWzE1XT1ya1s3XV5ya1sxNF0KKwlzdAkkdDEsNjAoJGtleSkKKworCXNybGcJJGkxLCR0MSw4CisJc3JsZwkkaTIsJHQxLDE2CisJc3JsZwkkaTMsJHQxLDI0CisJbnIJJHQxLCRtYXNrCisJbnIJJGkxLCRtYXNrCisJbnIJJGkyLCRtYXNrCisKKwlsYQkka2V5LDMyKCRrZXkpCQkjIGtleSs9OAorCWxhCSR0Myw0KCR0MykJCSMgaSsrCisJagkuTDI1Nl9sb29wCisKKy5MbWludXMxOgorCWxnaGkJJXIyLC0xCisJYnIJJHJhCisuc2l6ZQlwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXksLi1wcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXkKKworIyB2b2lkIEFFU19zZXRfZGVjcnlwdF9rZXkoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIGludCBiaXRzLAorIyAJCSBBRVNfS0VZICprZXkpIHsKKy5nbG9ibAlwcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXkKKy50eXBlCXByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleSxcQGZ1bmN0aW9uCisuYWxpZ24JMTYKK3ByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleToKKwkjc3Qke2d9CSRrZXksNCokU0laRV9UKCRzcCkJIyBJIHJlbHkgb24gQUVTX3NldF9lbmNyeXB0X2tleSB0bworCXN0JHtnfQkkcmEsMTQqJFNJWkVfVCgkc3ApCSMgc2F2ZSBub24tdm9sYXRpbGUgcmVnaXN0ZXJzIGFuZCAka2V5IQorCWJyYXMJJHJhLF9zMzkweF9BRVNfc2V0X2VuY3J5cHRfa2V5CisJI2wke2d9CSRrZXksNCokU0laRV9UKCRzcCkKKwlsJHtnfQkkcmEsMTQqJFNJWkVfVCgkc3ApCisJbHRncgklcjIsJXIyCisJYm56cgkkcmEKK19fXworJGNvZGUuPTw8X19fIGlmICghJHNvZnRvbmx5KTsKKwkjbAkkdDAsMjQwKCRrZXkpCisJbGhpCSR0MSwxNgorCWNyCSR0MCwkdDEKKwlqbAkuTGdvCisJb2lsbAkkdDAsMHg4MAkjIHNldCAiZGVjcnlwdCIgYml0CisJc3QJJHQwLDI0MCgka2V5KQorCWJyCSRyYQorX19fCiskY29kZS49PDxfX187CisuYWxpZ24JMTYKKy5MZ286CWxncgkkcm91bmRzLCR0MAkjbGxnZgkkcm91bmRzLDI0MCgka2V5KQorCWxhCSRpMSwwKCRrZXkpCisJc2xsZwkkaTIsJHJvdW5kcyw0CisJbGEJJGkyLDAoJGkyLCRrZXkpCisJc3JsCSRyb3VuZHMsMQorCWxnaGkJJHQxLC0xNgorCisuYWxpZ24JMTYKKy5MaW52OglsbWcJJHMwLCRzMSwwKCRpMSkKKwlsbWcJJHMyLCRzMywwKCRpMikKKwlzdG1nCSRzMCwkczEsMCgkaTIpCisJc3RtZwkkczIsJHMzLDAoJGkxKQorCWxhCSRpMSwxNigkaTEpCisJbGEJJGkyLDAoJHQxLCRpMikKKwlicmN0CSRyb3VuZHMsLkxpbnYKK19fXworJG1hc2s4MD0kaTE7CiskbWFzazFiPSRpMjsKKyRtYXNrZmU9JGkzOworJGNvZGUuPTw8X19fOworCWxsZ2YJJHJvdW5kcywyNDAoJGtleSkKKwlhZ2hpCSRyb3VuZHMsLTEKKwlzbGwJJHJvdW5kcywyCSMgKHJvdW5kcy0xKSo0CisJbGxpbGgJJG1hc2s4MCwweDgwODAKKwlsbGlsaAkkbWFzazFiLDB4MWIxYgorCWxsaWxoCSRtYXNrZmUsMHhmZWZlCisJb2lsbAkkbWFzazgwLDB4ODA4MAorCW9pbGwJJG1hc2sxYiwweDFiMWIKKwlvaWxsCSRtYXNrZmUsMHhmZWZlCisKKy5hbGlnbgkxNgorLkxtaXg6CWwJJHMwLDE2KCRrZXkpCSMgdHAxCisJbHIJJHMxLCRzMAorCW5ncgkkczEsJG1hc2s4MAorCXNybGcJJHQxLCRzMSw3CisJc2xyCSRzMSwkdDEKKwlucgkkczEsJG1hc2sxYgorCXNsbGcJJHQxLCRzMCwxCisJbnIJJHQxLCRtYXNrZmUKKwl4cgkkczEsJHQxCQkjIHRwMgorCisJbHIJJHMyLCRzMQorCW5ncgkkczIsJG1hc2s4MAorCXNybGcJJHQxLCRzMiw3CisJc2xyCSRzMiwkdDEKKwlucgkkczIsJG1hc2sxYgorCXNsbGcJJHQxLCRzMSwxCisJbnIJJHQxLCRtYXNrZmUKKwl4cgkkczIsJHQxCQkjIHRwNAorCisJbHIJJHMzLCRzMgorCW5ncgkkczMsJG1hc2s4MAorCXNybGcJJHQxLCRzMyw3CisJc2xyCSRzMywkdDEKKwlucgkkczMsJG1hc2sxYgorCXNsbGcJJHQxLCRzMiwxCisJbnIJJHQxLCRtYXNrZmUKKwl4cgkkczMsJHQxCQkjIHRwOAorCisJeHIJJHMxLCRzMAkJIyB0cDJedHAxCisJeHIJJHMyLCRzMAkJIyB0cDRedHAxCisJcmxsCSRzMCwkczAsMjQJIyA9IFJPVEFURSh0cDEsOCkKKwl4cgkkczIsJHMzCQkjIF49dHA4CisJeHIJJHMwLCRzMQkJIyBePXRwMl50cDEKKwl4cgkkczEsJHMzCQkjIHRwMl50cDFedHA4CisJeHIJJHMwLCRzMgkJIyBePXRwNF50cDFedHA4CisJcmxsCSRzMSwkczEsOAorCXJsbAkkczIsJHMyLDE2CisJeHIJJHMwLCRzMQkJIyBePSBST1RBVEUodHA4XnRwMl50cDEsMjQpCisJcmxsCSRzMywkczMsMjQKKwl4cgkkczAsJHMyICAgIAkjIF49IFJPVEFURSh0cDhedHA0XnRwMSwxNikKKwl4cgkkczAsJHMzCQkjIF49IFJPVEFURSh0cDgsOCkKKworCXN0CSRzMCwxNigka2V5KQorCWxhCSRrZXksNCgka2V5KQorCWJyY3QJJHJvdW5kcywuTG1peAorCisJbG0ke2d9CSVyNiwlcjEzLDYqJFNJWkVfVCgkc3ApIyBhcyB3YXMgc2F2ZWQgYnkgQUVTX3NldF9lbmNyeXB0X2tleSEKKwlsZ2hpCSVyMiwwCisJYnIJJHJhCisuc2l6ZQlwcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXksLi1wcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXkKK19fXworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgdm9pZCBBRVNfY2JjX2VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGNoYXIgKm91dCwKKyMgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisjICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqaXZlYywgY29uc3QgaW50IGVuYykKK3sKK215ICRpbnA9IiVyMiI7CitteSAkb3V0PSIlcjQiOwkjIGxlbmd0aCBhbmQgb3V0IGFyZSBzd2FwcGVkCitteSAkbGVuPSIlcjMiOworbXkgJGtleT0iJXI1IjsKK215ICRpdnA9IiVyNiI7CisKKyRjb2RlLj08PF9fXzsKKy5nbG9ibAlBRVNfY2JjX2VuY3J5cHQKKy50eXBlCUFFU19jYmNfZW5jcnlwdCxcQGZ1bmN0aW9uCisuYWxpZ24JMTYKK0FFU19jYmNfZW5jcnlwdDoKKwl4Z3IJJXIzLCVyNAkJIyBmbGlwICVyMyBhbmQgJXI0LCBvdXQgYW5kIGxlbgorCXhncgklcjQsJXIzCisJeGdyCSVyMywlcjQKK19fXworJGNvZGUuPTw8X19fIGlmICghJHNvZnRvbmx5KTsKKwlsaGkJJXIwLDE2CisJY2wJJXIwLDI0MCgka2V5KQorCWpoCS5MY2JjX3NvZnR3YXJlCisKKwlsZwklcjAsMCgkaXZwKQkjIGNvcHkgaXZlYworCWxnCSVyMSw4KCRpdnApCisJc3RtZwklcjAsJXIxLDE2KCRzcCkKKwlsbWcJJXIwLCVyMSwwKCRrZXkpCSMgY29weSBrZXksIGNvdmVyIDI1NiBiaXQKKwlzdG1nCSVyMCwlcjEsMzIoJHNwKQorCWxtZwklcjAsJXIxLDE2KCRrZXkpCisJc3RtZwklcjAsJXIxLDQ4KCRzcCkKKwlsCSVyMCwyNDAoJGtleSkJIyBsb2FkIGttYyBjb2RlCisJbGdoaQkka2V5LDE1CQkjIHJlcz1sZW4lMTYsIGxlbi09cmVzOworCW5ncgkka2V5LCRsZW4KKwlzbCR7Z31yCSRsZW4sJGtleQorCWxhCSVyMSwxNigkc3ApCSMgcGFyYW1ldGVyIGJsb2NrIC0gaXZlYyB8fCBrZXkKKwlqegkuTGttY190cnVuY2F0ZWQKKwkubG9uZwkweGI5MmYwMDQyCSMga21jICVyNCwlcjIKKwlicmMJMSwuLTQJCSMgcGF5IGF0dGVudGlvbiB0byAicGFydGlhbCBjb21wbGV0aW9uIgorCWx0cgkka2V5LCRrZXkKKwlqbnoJLkxrbWNfdHJ1bmNhdGVkCisuTGttY19kb25lOgorCWxtZwklcjAsJXIxLDE2KCRzcCkJIyBjb3B5IGl2ZWMgdG8gY2FsbGVyCisJc3RnCSVyMCwwKCRpdnApCisJc3RnCSVyMSw4KCRpdnApCisJYnIJJHJhCisuYWxpZ24JMTYKKy5Ma21jX3RydW5jYXRlZDoKKwlhaGkJJGtleSwtMQkJIyBpdCdzIHRoZSB3YXkgaXQncyBlbmNvZGVkIGluIG12YworCXRtbGwJJXIwLDB4ODAKKwlqbnoJLkxrbWNfdHJ1bmNhdGVkX2RlYworCWxnaGkJJXIxLDAKKwlzdGcJJXIxLDE2KiRTSVpFX1QoJHNwKQorCXN0ZwklcjEsMTYqJFNJWkVfVCs4KCRzcCkKKwlicmFzCSVyMSwxZgorCW12YwkxNiokU0laRV9UKDEsJHNwKSwwKCRpbnApCisxOglleAkka2V5LDAoJXIxKQorCWxhCSVyMSwxNigkc3ApCSMgcmVzdG9yZSBwYXJhbWV0ZXIgYmxvY2sKKwlsYQkkaW5wLDE2KiRTSVpFX1QoJHNwKQorCWxnaGkJJGxlbiwxNgorCS5sb25nCTB4YjkyZjAwNDIJIyBrbWMgJXI0LCVyMgorCWoJLkxrbWNfZG9uZQorLmFsaWduCTE2CisuTGttY190cnVuY2F0ZWRfZGVjOgorCXN0JHtnfQkkb3V0LDQqJFNJWkVfVCgkc3ApCisJbGEJJG91dCwxNiokU0laRV9UKCRzcCkKKwlsZ2hpCSRsZW4sMTYKKwkubG9uZwkweGI5MmYwMDQyCSMga21jICVyNCwlcjIKKwlsJHtnfQkkb3V0LDQqJFNJWkVfVCgkc3ApCisJYnJhcwklcjEsMmYKKwltdmMJMCgxLCRvdXQpLDE2KiRTSVpFX1QoJHNwKQorMjoJZXgJJGtleSwwKCVyMSkKKwlqCS5Ma21jX2RvbmUKKy5hbGlnbgkxNgorLkxjYmNfc29mdHdhcmU6CitfX18KKyRjb2RlLj08PF9fXzsKKwlzdG0ke2d9CSRrZXksJHJhLDUqJFNJWkVfVCgkc3ApCisJbGhpCSVyMCwwCisJY2wJJXIwLGAkc3RkZnJhbWUrJFNJWkVfVC00YCgkc3ApCisJamUJLkxjYmNfZGVjcnlwdAorCisJbGFybAkkdGJsLEFFU19UZQorCisJbGxnZgkkczAsMCgkaXZwKQorCWxsZ2YJJHMxLDQoJGl2cCkKKwlsbGdmCSRzMiw4KCRpdnApCisJbGxnZgkkczMsMTIoJGl2cCkKKworCWxnaGkJJHQwLDE2CisJc2wke2d9cgkkbGVuLCR0MAorCWJyYwk0LC5MY2JjX2VuY190YWlsCSMgaWYgYm9ycm93CisuTGNiY19lbmNfbG9vcDoKKwlzdG0ke2d9CSRpbnAsJG91dCwyKiRTSVpFX1QoJHNwKQorCXgJJHMwLDAoJGlucCkKKwl4CSRzMSw0KCRpbnApCisJeAkkczIsOCgkaW5wKQorCXgJJHMzLDEyKCRpbnApCisJbGdyCSVyNCwka2V5CisKKwlicmFzCSRyYSxfczM5MHhfQUVTX2VuY3J5cHQKKworCWxtJHtnfQkkaW5wLCRrZXksMiokU0laRV9UKCRzcCkKKwlzdAkkczAsMCgkb3V0KQorCXN0CSRzMSw0KCRvdXQpCisJc3QJJHMyLDgoJG91dCkKKwlzdAkkczMsMTIoJG91dCkKKworCWxhCSRpbnAsMTYoJGlucCkKKwlsYQkkb3V0LDE2KCRvdXQpCisJbGdoaQkkdDAsMTYKKwlsdCR7Z31yCSRsZW4sJGxlbgorCWp6CS5MY2JjX2VuY19kb25lCisJc2wke2d9cgkkbGVuLCR0MAorCWJyYwk0LC5MY2JjX2VuY190YWlsCSMgaWYgYm9ycm93CisJagkuTGNiY19lbmNfbG9vcAorLmFsaWduCTE2CisuTGNiY19lbmNfZG9uZToKKwlsJHtnfQkkaXZwLDYqJFNJWkVfVCgkc3ApCisJc3QJJHMwLDAoJGl2cCkKKwlzdAkkczEsNCgkaXZwKQkKKwlzdAkkczIsOCgkaXZwKQorCXN0CSRzMywxMigkaXZwKQorCisJbG0ke2d9CSVyNywkcmEsNyokU0laRV9UKCRzcCkKKwlicgkkcmEKKworLmFsaWduCTE2CisuTGNiY19lbmNfdGFpbDoKKwlhZ2hpCSRsZW4sMTUKKwlsZ2hpCSR0MCwwCisJc3RnCSR0MCwxNiokU0laRV9UKCRzcCkKKwlzdGcJJHQwLDE2KiRTSVpFX1QrOCgkc3ApCisJYnJhcwkkdDEsM2YKKwltdmMJMTYqJFNJWkVfVCgxLCRzcCksMCgkaW5wKQorMzoJZXgJJGxlbiwwKCR0MSkKKwlsZ2hpCSRsZW4sMAorCWxhCSRpbnAsMTYqJFNJWkVfVCgkc3ApCisJagkuTGNiY19lbmNfbG9vcAorCisuYWxpZ24JMTYKKy5MY2JjX2RlY3J5cHQ6CisJbGFybAkkdGJsLEFFU19UZAorCisJbGcJJHQwLDAoJGl2cCkKKwlsZwkkdDEsOCgkaXZwKQorCXN0bWcJJHQwLCR0MSwxNiokU0laRV9UKCRzcCkKKworLkxjYmNfZGVjX2xvb3A6CisJc3RtJHtnfQkkaW5wLCRvdXQsMiokU0laRV9UKCRzcCkKKwlsbGdmCSRzMCwwKCRpbnApCisJbGxnZgkkczEsNCgkaW5wKQorCWxsZ2YJJHMyLDgoJGlucCkKKwlsbGdmCSRzMywxMigkaW5wKQorCWxncgklcjQsJGtleQorCisJYnJhcwkkcmEsX3MzOTB4X0FFU19kZWNyeXB0CisKKwlsbSR7Z30JJGlucCwka2V5LDIqJFNJWkVfVCgkc3ApCisJc2xsZwkkczAsJHMwLDMyCisJc2xsZwkkczIsJHMyLDMyCisJbHIJJHMwLCRzMQorCWxyCSRzMiwkczMKKworCWxnCSR0MCwwKCRpbnApCisJbGcJJHQxLDgoJGlucCkKKwl4ZwkkczAsMTYqJFNJWkVfVCgkc3ApCisJeGcJJHMyLDE2KiRTSVpFX1QrOCgkc3ApCisJbGdoaQkkczEsMTYKKwlzbCR7Z31yCSRsZW4sJHMxCisJYnJjCTQsLkxjYmNfZGVjX3RhaWwJIyBpZiBib3Jyb3cKKwlicmMJMiwuTGNiY19kZWNfZG9uZQkjIGlmIHplcm8KKwlzdGcJJHMwLDAoJG91dCkKKwlzdGcJJHMyLDgoJG91dCkKKwlzdG1nCSR0MCwkdDEsMTYqJFNJWkVfVCgkc3ApCisKKwlsYQkkaW5wLDE2KCRpbnApCisJbGEJJG91dCwxNigkb3V0KQorCWoJLkxjYmNfZGVjX2xvb3AKKworLkxjYmNfZGVjX2RvbmU6CisJc3RnCSRzMCwwKCRvdXQpCisJc3RnCSRzMiw4KCRvdXQpCisuTGNiY19kZWNfZXhpdDoKKwlsbSR7Z30JJXI2LCRyYSw2KiRTSVpFX1QoJHNwKQorCXN0bWcJJHQwLCR0MSwwKCRpdnApCisKKwlicgkkcmEKKworLmFsaWduCTE2CisuTGNiY19kZWNfdGFpbDoKKwlhZ2hpCSRsZW4sMTUKKwlzdGcJJHMwLDE2KiRTSVpFX1QoJHNwKQorCXN0ZwkkczIsMTYqJFNJWkVfVCs4KCRzcCkKKwlicmFzCSRzMSw0ZgorCW12YwkwKDEsJG91dCksMTYqJFNJWkVfVCgkc3ApCis0OglleAkkbGVuLDAoJHMxKQorCWoJLkxjYmNfZGVjX2V4aXQKKy5zaXplCUFFU19jYmNfZW5jcnlwdCwuLUFFU19jYmNfZW5jcnlwdAorX19fCit9CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgdm9pZCBBRVNfY3RyMzJfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorIyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBibG9ja3MsIGNvbnN0IEFFU19LRVkgKmtleSwKKyMgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppdmVjKQoreworbXkgJGlucD0iJXIyIjsKK215ICRvdXQ9IiVyNCI7CSMgYmxvY2tzIGFuZCBvdXQgYXJlIHN3YXBwZWQKK215ICRsZW49IiVyMyI7CitteSAka2V5PSIlcjUiOwlteSAkaXYwPSIlcjUiOworbXkgJGl2cD0iJXI2IjsKK215ICRmcCA9IiVyNyI7CisKKyRjb2RlLj08PF9fXzsKKy5nbG9ibAlBRVNfY3RyMzJfZW5jcnlwdAorLnR5cGUJQUVTX2N0cjMyX2VuY3J5cHQsXEBmdW5jdGlvbgorLmFsaWduCTE2CitBRVNfY3RyMzJfZW5jcnlwdDoKKwl4Z3IJJXIzLCVyNAkJIyBmbGlwICVyMyBhbmQgJXI0LCAkb3V0IGFuZCAkbGVuCisJeGdyCSVyNCwlcjMKKwl4Z3IJJXIzLCVyNAorCWxsZ2ZyCSRsZW4sJGxlbgkjIHNhZmUgaW4gY3RyMzIgc3Vicm91dGluZSBldmVuIGluIDY0LWJpdCBjYXNlCitfX18KKyRjb2RlLj08PF9fXyBpZiAoISRzb2Z0b25seSk7CisJbAklcjAsMjQwKCRrZXkpCisJbGhpCSVyMSwxNgorCWNscgklcjAsJXIxCisJamwJLkxjdHIzMl9zb2Z0d2FyZQorCisJc3RtJHtnfQklcjYsJHMzLDYqJFNJWkVfVCgkc3ApCisKKwlzbGdyCSRvdXQsJGlucAorCWxhCSVyMSwwKCRrZXkpCSMgJXIxIGlzIHBlcm1hbmVudCBjb3B5IG9mICRrZXkKKwlsZwkkaXYwLDAoJGl2cCkJIyBsb2FkIGl2ZWMKKwlsZwkkaXZwLDgoJGl2cCkKKworCSMgcHJlcGFyZSBhbmQgYWxsb2NhdGUgc3RhY2sgZnJhbWUgYXQgdGhlIHRvcCBvZiA0SyBwYWdlCisJIyB3aXRoIDFLIHJlc2VydmVkIGZvciBldmVudHVhbCBzaWduYWwgaGFuZGxpbmcKKwlsZ2hpCSRzMCwtMTAyNC0yNTYtMTYjIGd1YXJhbnRlZSBhdCBsZWFzdCAyNTYtYnl0ZXMgYnVmZmVyCisJbGdoaQkkczEsLTQwOTYKKwlhbGdyCSRzMCwkc3AKKwlsZ3IJJGZwLCRzcAorCW5ncgkkczAsJHMxCQkjIGFsaWduIGF0IHBhZ2UgYm91bmRhcnkKKwlzbGdyCSRmcCwkczAJCSMgdG90YWwgYnVmZmVyIHNpemUKKwlsZ3IJJHMyLCRzcAorCWxnaGkJJHMxLDEwMjQrMTYJIyBzbFtnXWZpIGlzIGV4dGVuZGVkLWltbWVkaWF0ZSBmYWNpbGl0eQorCXNsZ3IJJGZwLCRzMQkJIyBkZWR1Y3QgcmVzZXJ2YXRpb24gdG8gZ2V0IHVzYWJsZSBidWZmZXIgc2l6ZQorCSMgYnVmZmVyIHNpemUgaXMgYXQgbGVzdCAyNTYgYW5kIGF0IG1vc3QgMzA3MisyNTYtMTYKKworCWxhCSRzcCwxMDI0KCRzMCkJIyBhbGxvY2EKKwlzcmxnCSRmcCwkZnAsNAkjIGNvbnZlcnQgYnl0ZXMgdG8gYmxvY2tzLCBtaW5pbXVtIDE2CisJc3Qke2d9CSRzMiwwKCRzcCkJIyBiYWNrLWNoYWluCisJc3Qke2d9CSRmcCwkU0laRV9UKCRzcCkKKworCXNsZ3IJJGxlbiwkZnAKKwlicmMJMSwuTGN0cjMyX2h3X3N3aXRjaAkjIG5vdCB6ZXJvLCBubyBib3Jyb3cKKwlhbGdyCSRmcCwkbGVuCSMgaW5wdXQgaXMgc2hvcnRlciB0aGFuIGFsbG9jYXRlZCBidWZmZXIKKwlsZ2hpCSRsZW4sMAorCXN0JHtnfQkkZnAsJFNJWkVfVCgkc3ApCisKKy5MY3RyMzJfaHdfc3dpdGNoOgorX19fCiskY29kZS49PDxfX18gaWYgKDApOwkjIyMjIyMjIyMga21jdHIgY29kZSB3YXMgbWVhc3VyZWQgdG8gYmUgfjEyJSBzbG93ZXIKKwlsYXJsCSRzMCxPUEVOU1NMX3MzOTB4Y2FwX1AKKwlsZwkkczAsOCgkczApCisJdG1oaAkkczAsMHgwMDA0CSMgY2hlY2sgZm9yIG1lc3NhZ2Vfc2VjdXJpdHktYXNzaXN0LTQKKwlqegkuTGN0cjMyX2ttX2xvb3AKKworCWxsZ2ZyCSRzMCwlcjAKKwlsZ3IJJHMxLCVyMQorCWxnaGkJJXIwLDAKKwlsYQklcjEsMTYoJHNwKQorCS5sb25nCTB4YjkyZDIwNDIJIyBrbWN0ciAlcjQsJXIyLCVyMgorCisJbGxpaGgJJXIwLDB4ODAwMAkjIGNoZWNrIGlmIGttY3RyIHN1cHBvcnRzIHRoZSBmdW5jdGlvbiBjb2RlCisJc3JsZwklcjAsJXIwLDAoJHMwKQorCW5nCSVyMCwxNigkc3ApCisJbGdyCSVyMCwkczAKKwlsZ3IJJXIxLCRzMQorCWp6CS5MY3RyMzJfa21fbG9vcAorCisjIyMjIyMjIGttY3RyIGNvZGUKKwlhbGdyCSRvdXQsJGlucAkjIHJlc3RvcmUgJG91dAorCWxncgkkczEsJGxlbgkjICRzMSB1bmRlcnRha2VzICRsZW4KKwlqCS5MY3RyMzJfa21jdHJfbG9vcAorLmFsaWduCTE2CisuTGN0cjMyX2ttY3RyX2xvb3A6CisJbGEJJHMyLDE2KCRzcCkKKwlsZ3IJJHMzLCRmcAorLkxjdHIzMl9rbWN0cl9wcmVwYXJlOgorCXN0ZwkkaXYwLDAoJHMyKQorCXN0ZwkkaXZwLDgoJHMyKQorCWxhCSRzMiwxNigkczIpCisJYWhpCSRpdnAsMQkJIyAzMi1iaXQgaW5jcmVtZW50LCBwcmVzZXJ2ZXMgdXBwZXIgaGFsZgorCWJyY3QJJHMzLC5MY3RyMzJfa21jdHJfcHJlcGFyZQorCisJI2xhCSRpbnAsMCgkaW5wKQkjIGlucAorCXNsbGcJJGxlbiwkZnAsNAkjIGxlbgorCSNsYQkkb3V0LDAoJG91dCkJIyBvdXQKKwlsYQkkczIsMTYoJHNwKQkjIGl2CisJLmxvbmcJMHhiOTJkYTA0MgkjIGttY3RyICRvdXQsJHMyLCRpbnAKKwlicmMJMSwuLTQJCSMgcGF5IGF0dGVudGlvbiB0byAicGFydGlhbCBjb21wbGV0aW9uIgorCisJc2xncgkkczEsJGZwCisJYnJjCTEsLkxjdHIzMl9rbWN0cl9sb29wCSMgbm90IHplcm8sIG5vIGJvcnJvdworCWFsZ3IJJGZwLCRzMQorCWxnaGkJJHMxLDAKKwlicmMJNCsxLC5MY3RyMzJfa21jdHJfbG9vcAkjIG5vdCB6ZXJvCisKKwlsJHtnfQkkc3AsMCgkc3ApCisJbG0ke2d9CSVyNiwkczMsNiokU0laRV9UKCRzcCkKKwlicgkkcmEKKy5hbGlnbgkxNgorX19fCiskY29kZS49PDxfX187CisuTGN0cjMyX2ttX2xvb3A6CisJbGEJJHMyLDE2KCRzcCkKKwlsZ3IJJHMzLCRmcAorLkxjdHIzMl9rbV9wcmVwYXJlOgorCXN0ZwkkaXYwLDAoJHMyKQorCXN0ZwkkaXZwLDgoJHMyKQorCWxhCSRzMiwxNigkczIpCisJYWhpCSRpdnAsMQkJIyAzMi1iaXQgaW5jcmVtZW50LCBwcmVzZXJ2ZXMgdXBwZXIgaGFsZgorCWJyY3QJJHMzLC5MY3RyMzJfa21fcHJlcGFyZQorCisJbGEJJHMwLDE2KCRzcCkJIyBpbnAKKwlzbGxnCSRzMSwkZnAsNAkjIGxlbgorCWxhCSRzMiwxNigkc3ApCSMgb3V0CisJLmxvbmcJMHhiOTJlMDBhOAkjIGttICVyMTAsJXI4CisJYnJjCTEsLi00CQkjIHBheSBhdHRlbnRpb24gdG8gInBhcnRpYWwgY29tcGxldGlvbiIKKworCWxhCSRzMiwxNigkc3ApCisJbGdyCSRzMywkZnAKKwlzbGdyCSRzMiwkaW5wCisuTGN0cjMyX2ttX3hvcjoKKwlsZwkkczAsMCgkaW5wKQorCWxnCSRzMSw4KCRpbnApCisJeGcJJHMwLDAoJHMyLCRpbnApCisJeGcJJHMxLDgoJHMyLCRpbnApCisJc3RnCSRzMCwwKCRvdXQsJGlucCkKKwlzdGcJJHMxLDgoJG91dCwkaW5wKQorCWxhCSRpbnAsMTYoJGlucCkKKwlicmN0CSRzMywuTGN0cjMyX2ttX3hvcgorCisJc2xncgkkbGVuLCRmcAorCWJyYwkxLC5MY3RyMzJfa21fbG9vcAkjIG5vdCB6ZXJvLCBubyBib3Jyb3cKKwlhbGdyCSRmcCwkbGVuCisJbGdoaQkkbGVuLDAKKwlicmMJNCsxLC5MY3RyMzJfa21fbG9vcAkjIG5vdCB6ZXJvCisKKwlsJHtnfQkkczAsMCgkc3ApCisJbCR7Z30JJHMxLCRTSVpFX1QoJHNwKQorCWxhCSRzMiwxNigkc3ApCisuTGN0cjMyX2ttX3phcDoKKwlzdGcJJHMwLDAoJHMyKQorCXN0ZwkkczAsOCgkczIpCisJbGEJJHMyLDE2KCRzMikKKwlicmN0CSRzMSwuTGN0cjMyX2ttX3phcAorCisJbGEJJHNwLDAoJHMwKQorCWxtJHtnfQklcjYsJHMzLDYqJFNJWkVfVCgkc3ApCisJYnIJJHJhCisuYWxpZ24JMTYKKy5MY3RyMzJfc29mdHdhcmU6CitfX18KKyRjb2RlLj08PF9fXzsKKwlzdG0ke2d9CSRrZXksJHJhLDUqJFNJWkVfVCgkc3ApCisJc2wke2d9cgkkaW5wLCRvdXQKKwlsYXJsCSR0YmwsQUVTX1RlCisJbGxnZgkkdDEsMTIoJGl2cCkKKworLkxjdHIzMl9sb29wOgorCXN0bSR7Z30JJGlucCwkb3V0LDIqJFNJWkVfVCgkc3ApCisJbGxnZgkkczAsMCgkaXZwKQorCWxsZ2YJJHMxLDQoJGl2cCkKKwlsbGdmCSRzMiw4KCRpdnApCisJbGdyCSRzMywkdDEKKwlzdAkkdDEsMTYqJFNJWkVfVCgkc3ApCisJbGdyCSVyNCwka2V5CisKKwlicmFzCSRyYSxfczM5MHhfQUVTX2VuY3J5cHQKKworCWxtJHtnfQkkaW5wLCRpdnAsMiokU0laRV9UKCRzcCkKKwlsbGdmCSR0MSwxNiokU0laRV9UKCRzcCkKKwl4CSRzMCwwKCRpbnAsJG91dCkKKwl4CSRzMSw0KCRpbnAsJG91dCkKKwl4CSRzMiw4KCRpbnAsJG91dCkKKwl4CSRzMywxMigkaW5wLCRvdXQpCisJc3RtCSRzMCwkczMsMCgkb3V0KQorCisJbGEJJG91dCwxNigkb3V0KQorCWFoaQkkdDEsMQkJIyAzMi1iaXQgaW5jcmVtZW50CisJYnJjdAkkbGVuLC5MY3RyMzJfbG9vcAorCisJbG0ke2d9CSVyNiwkcmEsNiokU0laRV9UKCRzcCkKKwlicgkkcmEKKy5zaXplCUFFU19jdHIzMl9lbmNyeXB0LC4tQUVTX2N0cjMyX2VuY3J5cHQKK19fXworfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgdm9pZCBBRVNfeHRzX2VuY3J5cHQoY29uc3QgY2hhciAqaW5wLGNoYXIgKm91dCxzaXplX3QgbGVuLAorIwljb25zdCBBRVNfS0VZICprZXkxLCBjb25zdCBBRVNfS0VZICprZXkyLAorIwljb25zdCB1bnNpZ25lZCBjaGFyIGl2WzE2XSk7CisjCit7CitteSAkaW5wPSIlcjIiOworbXkgJG91dD0iJXI0IjsJIyBsZW4gYW5kIG91dCBhcmUgc3dhcHBlZAorbXkgJGxlbj0iJXIzIjsKK215ICRrZXkxPSIlcjUiOwkjICRpMQorbXkgJGtleTI9IiVyNiI7CSMgJGkyCitteSAkZnA9IiVyNyI7CSMgJGkzCitteSAkdHdlYWs9MTYqJFNJWkVfVCsxNjsJIyBvciAkc3RkZnJhbWUtMTYsIGJvdHRvbSBvZiB0aGUgZnJhbWUuLi4KKworJGNvZGUuPTw8X19fOworLnR5cGUJX3MzOTB4X3h0c19rbSxcQGZ1bmN0aW9uCisuYWxpZ24JMTYKK19zMzkweF94dHNfa206CitfX18KKyRjb2RlLj08PF9fXyBpZigxKTsKKwlsbGdmcgkkczAsJXIwCQkJIyBwdXQgYXNpZGUgdGhlIGZ1bmN0aW9uIGNvZGUKKwlsZ2hpCSRzMSwweDdmCisJbnIJJHMxLCVyMAorCWxnaGkJJXIwLDAJCQkjIHF1ZXJ5IGNhcGFiaWxpdHkgdmVjdG9yCisJbGEJJXIxLDIqJFNJWkVfVCgkc3ApCisJLmxvbmcJMHhiOTJlMDA0MgkJIyBrbSAlcjQsJXIyCisJbGxpaGgJJXIxLDB4ODAwMAorCXNybGcJJXIxLCVyMSwzMigkczEpCQkjIGNoZWNrIGZvciAzMitmdW5jdGlvbiBjb2RlCisJbmcJJXIxLDIqJFNJWkVfVCgkc3ApCisJbGdyCSVyMCwkczAJCQkjIHJlc3RvcmUgdGhlIGZ1bmN0aW9uIGNvZGUKKwlsYQklcjEsMCgka2V5MSkJCSMgcmVzdG9yZSAka2V5MQorCWp6CS5MeHRzX2ttX3ZhbmlsbGEKKworCWxtZwkkaTIsJGkzLCR0d2Vhaygkc3ApCSMgcHV0IGFzaWRlIHRoZSB0d2VhayB2YWx1ZQorCWFsZ3IJJG91dCwkaW5wCisKKwlvaWxsCSVyMCwzMgkJCSMgc3dpdGNoIHRvIHh0cyBmdW5jdGlvbiBjb2RlCisJYWdoaQkkczEsLTE4CQkJIworCXNsbGcJJHMxLCRzMSwzCQkjIChmdW5jdGlvbiBjb2RlIC0gMTgpKjgsIDAgb3IgMTYKKwlsYQklcjEsJHR3ZWFrLTE2KCRzcCkKKwlzbGdyCSVyMSwkczEJCQkjIHBhcmFtZXRlciBibG9jayBwb3NpdGlvbgorCWxtZwkkczAsJHMzLDAoJGtleTEpCSMgbG9hZCAyNTYgYml0cyBvZiBrZXkgbWF0ZXJpYWwsCisJc3RtZwkkczAsJHMzLDAoJXIxKQkJIyBhbmQgY29weSBpdCB0byBwYXJhbWV0ZXIgYmxvY2suCisJCQkJCSMgeWVzLCBpdCBjb250YWlucyBqdW5rIGFuZCBvdmVybGFwcworCQkJCQkjIHdpdGggdGhlIHR3ZWFrIGluIDEyOC1iaXQgY2FzZS4KKwkJCQkJIyBpdCdzIGRvbmUgdG8gYXZvaWQgY29uZGl0aW9uYWwKKwkJCQkJIyBicmFuY2guCisJc3RtZwkkaTIsJGkzLCR0d2Vhaygkc3ApCSMgInJlLXNlYXQiIHRoZSB0d2VhayB2YWx1ZQorCisJLmxvbmcJMHhiOTJlMDA0MgkJIyBrbSAlcjQsJXIyCisJYnJjCTEsLi00CQkJIyBwYXkgYXR0ZW50aW9uIHRvICJwYXJ0aWFsIGNvbXBsZXRpb24iCisKKwlscnZnCSRzMCwkdHdlYWsrMCgkc3ApCSMgbG9hZCB0aGUgbGFzdCB0d2VhaworCWxydmcJJHMxLCR0d2Vhays4KCRzcCkKKwlzdG1nCSVyMCwlcjMsJHR3ZWFrLTMyKCVyMSkJIyB3aXBlIGNvcHkgb2YgdGhlIGtleQorCisJbmlsbAklcjAsMHhmZmRmCQkjIHN3aXRjaCBiYWNrIHRvIG9yaWdpbmFsIGZ1bmN0aW9uIGNvZGUKKwlsYQklcjEsMCgka2V5MSkJCSMgcmVzdG9yZSBwb2ludGVyIHRvICRrZXkxCisJc2xncgkkb3V0LCRpbnAKKworCWxsZ2MJJGxlbiwyKiRTSVpFX1QtMSgkc3ApCisJbmlsbAkkbGVuLDB4MGYJCSMgJGxlbiU9MTYKKwlicgkkcmEKKwkKKy5hbGlnbgkxNgorLkx4dHNfa21fdmFuaWxsYToKK19fXworJGNvZGUuPTw8X19fOworCSMgcHJlcGFyZSBhbmQgYWxsb2NhdGUgc3RhY2sgZnJhbWUgYXQgdGhlIHRvcCBvZiA0SyBwYWdlCisJIyB3aXRoIDFLIHJlc2VydmVkIGZvciBldmVudHVhbCBzaWduYWwgaGFuZGxpbmcKKwlsZ2hpCSRzMCwtMTAyNC0yNTYtMTYjIGd1YXJhbnRlZSBhdCBsZWFzdCAyNTYtYnl0ZXMgYnVmZmVyCisJbGdoaQkkczEsLTQwOTYKKwlhbGdyCSRzMCwkc3AKKwlsZ3IJJGZwLCRzcAorCW5ncgkkczAsJHMxCQkjIGFsaWduIGF0IHBhZ2UgYm91bmRhcnkKKwlzbGdyCSRmcCwkczAJCSMgdG90YWwgYnVmZmVyIHNpemUKKwlsZ3IJJHMyLCRzcAorCWxnaGkJJHMxLDEwMjQrMTYJIyBzbFtnXWZpIGlzIGV4dGVuZGVkLWltbWVkaWF0ZSBmYWNpbGl0eQorCXNsZ3IJJGZwLCRzMQkJIyBkZWR1Y3QgcmVzZXJ2YXRpb24gdG8gZ2V0IHVzYWJsZSBidWZmZXIgc2l6ZQorCSMgYnVmZmVyIHNpemUgaXMgYXQgbGVzdCAyNTYgYW5kIGF0IG1vc3QgMzA3MisyNTYtMTYKKworCWxhCSRzcCwxMDI0KCRzMCkJIyBhbGxvY2EKKwluaWxsCSRmcCwweGZmZjAJIyByb3VuZCB0byAxNipuCisJc3Qke2d9CSRzMiwwKCRzcCkJIyBiYWNrLWNoYWluCisJbmlsbAkkbGVuLDB4ZmZmMAkjIHJlZHVuZGFudAorCXN0JHtnfQkkZnAsJFNJWkVfVCgkc3ApCisKKwlzbGdyCSRsZW4sJGZwCisJYnJjCTEsLkx4dHNfa21fZ28JIyBub3QgemVybywgbm8gYm9ycm93CisJYWxncgkkZnAsJGxlbgkjIGlucHV0IGlzIHNob3J0ZXIgdGhhbiBhbGxvY2F0ZWQgYnVmZmVyCisJbGdoaQkkbGVuLDAKKwlzdCR7Z30JJGZwLCRTSVpFX1QoJHNwKQorCisuTHh0c19rbV9nbzoKKwlscnZnCSRzMCwkdHdlYWsrMCgkczIpCSMgbG9hZCB0aGUgdHdlYWsgdmFsdWUgaW4gbGl0dGxlLWVuZGlhbgorCWxydmcJJHMxLCR0d2Vhays4KCRzMikKKworCWxhCSRzMiwxNigkc3ApCQkjIHZlY3RvciBvZiBhc2NlbmRpbmcgdHdlYWsgdmFsdWVzCisJc2xncgkkczIsJGlucAorCXNybGcJJHMzLCRmcCw0CisJagkuTHh0c19rbV9zdGFydAorCisuTHh0c19rbV9sb29wOgorCWxhCSRzMiwxNigkc3ApCisJc2xncgkkczIsJGlucAorCXNybGcJJHMzLCRmcCw0CisuTHh0c19rbV9wcmVwYXJlOgorCWxnaGkJJGkxLDB4ODcKKwlzcmFnCSRpMiwkczEsNjMJCSMgYnJvYWRjYXN0IHVwcGVyIGJpdAorCW5ncgkkaTEsJGkyCQkJIyByZW0KKwlzcmxnCSRpMiwkczAsNjMJCSMgY2FycnkgYml0IGZyb20gbG93ZXIgaGFsZgorCXNsbGcJJHMwLCRzMCwxCisJc2xsZwkkczEsJHMxLDEKKwl4Z3IJJHMwLCRpMQorCW9ncgkkczEsJGkyCisuTHh0c19rbV9zdGFydDoKKwlscnZncgkkaTEsJHMwCQkJIyBmbGlwIGJ5dGUgb3JkZXIKKwlscnZncgkkaTIsJHMxCisJc3RnCSRpMSwwKCRzMiwkaW5wKQorCXN0ZwkkaTIsOCgkczIsJGlucCkKKwl4ZwkkaTEsMCgkaW5wKQorCXhnCSRpMiw4KCRpbnApCisJc3RnCSRpMSwwKCRvdXQsJGlucCkKKwlzdGcJJGkyLDgoJG91dCwkaW5wKQorCWxhCSRpbnAsMTYoJGlucCkKKwlicmN0CSRzMywuTHh0c19rbV9wcmVwYXJlCisKKwlzbGdyCSRpbnAsJGZwCQkjIHJld2luZCAkaW5wCisJbGEJJHMyLDAoJG91dCwkaW5wKQorCWxncgkkczMsJGZwCisJLmxvbmcJMHhiOTJlMDBhYQkJIyBrbSAkczIsJHMyCisJYnJjCTEsLi00CQkJIyBwYXkgYXR0ZW50aW9uIHRvICJwYXJ0aWFsIGNvbXBsZXRpb24iCisKKwlsYQkkczIsMTYoJHNwKQorCXNsZ3IJJHMyLCRpbnAKKwlzcmxnCSRzMywkZnAsNAorLkx4dHNfa21feG9yOgorCWxnCSRpMSwwKCRvdXQsJGlucCkKKwlsZwkkaTIsOCgkb3V0LCRpbnApCisJeGcJJGkxLDAoJHMyLCRpbnApCisJeGcJJGkyLDgoJHMyLCRpbnApCisJc3RnCSRpMSwwKCRvdXQsJGlucCkKKwlzdGcJJGkyLDgoJG91dCwkaW5wKQorCWxhCSRpbnAsMTYoJGlucCkKKwlicmN0CSRzMywuTHh0c19rbV94b3IKKworCXNsZ3IJJGxlbiwkZnAKKwlicmMJMSwuTHh0c19rbV9sb29wCQkjIG5vdCB6ZXJvLCBubyBib3Jyb3cKKwlhbGdyCSRmcCwkbGVuCisJbGdoaQkkbGVuLDAKKwlicmMJNCsxLC5MeHRzX2ttX2xvb3AJIyBub3QgemVybworCisJbCR7Z30JJGkxLDAoJHNwKQkJIyBiYWNrLWNoYWluCisJbGxnZgkkZnAsYDIqJFNJWkVfVC00YCgkc3ApCSMgYnl0ZXMgdXNlZAorCWxhCSRpMiwxNigkc3ApCisJc3JsZwkkZnAsJGZwLDQKKy5MeHRzX2ttX3phcDoKKwlzdGcJJGkxLDAoJGkyKQorCXN0ZwkkaTEsOCgkaTIpCisJbGEJJGkyLDE2KCRpMikKKwlicmN0CSRmcCwuTHh0c19rbV96YXAKKworCWxhCSRzcCwwKCRpMSkKKwlsbGdjCSRsZW4sMiokU0laRV9ULTEoJGkxKQorCW5pbGwJJGxlbiwweDBmCQkjICRsZW4lPTE2CisJYnpyCSRyYQorCisJIyBnZW5lcmF0ZSBvbmUgbW9yZSB0d2Vhay4uLgorCWxnaGkJJGkxLDB4ODcKKwlzcmFnCSRpMiwkczEsNjMJCSMgYnJvYWRjYXN0IHVwcGVyIGJpdAorCW5ncgkkaTEsJGkyCQkJIyByZW0KKwlzcmxnCSRpMiwkczAsNjMJCSMgY2FycnkgYml0IGZyb20gbG93ZXIgaGFsZgorCXNsbGcJJHMwLCRzMCwxCisJc2xsZwkkczEsJHMxLDEKKwl4Z3IJJHMwLCRpMQorCW9ncgkkczEsJGkyCisKKwlsdHIJJGxlbiwkbGVuCQkjIGNsZWFyIHplcm8gZmxhZworCWJyCSRyYQorLnNpemUJX3MzOTB4X3h0c19rbSwuLV9zMzkweF94dHNfa20KKworLmdsb2JsCUFFU194dHNfZW5jcnlwdAorLnR5cGUJQUVTX3h0c19lbmNyeXB0LFxAZnVuY3Rpb24KKy5hbGlnbgkxNgorQUVTX3h0c19lbmNyeXB0OgorCXhncgklcjMsJXI0CQkJIyBmbGlwICVyMyBhbmQgJXI0LCAkb3V0IGFuZCAkbGVuCisJeGdyCSVyNCwlcjMKKwl4Z3IJJXIzLCVyNAorX19fCiskY29kZS49PDxfX18gaWYgKCRTSVpFX1Q9PTQpOworCWxsZ2ZyCSRsZW4sJGxlbgorX19fCiskY29kZS49PDxfX187CisJc3Qke2d9CSRsZW4sMSokU0laRV9UKCRzcCkJIyBzYXZlIGNvcHkgb2YgJGxlbgorCXNyYWcJJGxlbiwkbGVuLDQJCSMgZm9ybWFsbHkgd3JvbmcsIGJlY2F1c2UgaXQgZXhwYW5kcworCQkJCQkjIHNpZ24gYnl0ZSwgYnV0IHdobyBjYW4gYWZmb3JkIGFza2luZworCQkJCQkjIHRvIHByb2Nlc3MgbW9yZSB0aGFuIDJeNjMtMSBieXRlcz8KKwkJCQkJIyBJIHVzZSBpdCwgYmVjYXVzZSBpdCBzZXRzIGNvbmRpdGlvbgorCQkJCQkjIGNvZGUuLi4KKwliY3IJOCwkcmEJCQkjIGFib3J0IGlmIHplcm8gKGkuZS4gbGVzcyB0aGFuIDE2KQorX19fCiskY29kZS49PDxfX18gaWYgKCEkc29mdG9ubHkpOworCWxsZ2YJJXIwLDI0MCgka2V5MikKKwlsaGkJJXIxLDE2CisJY2xyCSVyMCwlcjEKKwlqbAkuTHh0c19lbmNfc29mdHdhcmUKKworCXN0bSR7Z30JJXI2LCRzMyw2KiRTSVpFX1QoJHNwKQorCXN0JHtnfQkkcmEsMTQqJFNJWkVfVCgkc3ApCisKKwlzbGxnCSRsZW4sJGxlbiw0CQkjICRsZW4mPX4xNQorCXNsZ3IJJG91dCwkaW5wCisKKwkjIGdlbmVyYXRlIHRoZSB0d2VhayB2YWx1ZQorCWwke2d9CSRzMywkc3RkZnJhbWUoJHNwKQkjIHBvaW50ZXIgdG8gaXYKKwlsYQkkczIsJHR3ZWFrKCRzcCkKKwlsbWcJJHMwLCRzMSwwKCRzMykKKwlsZ2hpCSRzMywxNgorCXN0bWcJJHMwLCRzMSwwKCRzMikKKwlsYQklcjEsMCgka2V5MikJCSMgJGtleTIgaXMgbm90IG5lZWRlZCBhbnltb3JlCisJLmxvbmcJMHhiOTJlMDBhYQkJIyBrbSAkczIsJHMyLCBnZW5lcmF0ZSB0aGUgdHdlYWsKKwlicmMJMSwuLTQJCQkjIGNhbiB0aGlzIGhhcHBlbj8KKworCWwJJXIwLDI0MCgka2V5MSkKKwlsYQklcjEsMCgka2V5MSkJCSMgJGtleTEgaXMgbm90IG5lZWRlZCBhbnltb3JlCisJYnJhcwkkcmEsX3MzOTB4X3h0c19rbQorCWp6CS5MeHRzX2VuY19rbV9kb25lCisKKwlhZ2hpCSRpbnAsLTE2CQkjIHRha2Ugb25lIHN0ZXAgYmFjaworCWxhCSRpMywwKCRvdXQsJGlucCkJIyBwdXQgYXNpZGUgcmVhbCAkb3V0CisuTHh0c19lbmNfa21fc3RlYWw6CisJbGxnYwkkaTEsMTYoJGlucCkKKwlsbGdjCSRpMiwwKCRvdXQsJGlucCkKKwlzdGMJJGkxLDAoJG91dCwkaW5wKQorCXN0YwkkaTIsMTYoJG91dCwkaW5wKQorCWxhCSRpbnAsMSgkaW5wKQorCWJyY3QJJGxlbiwuTHh0c19lbmNfa21fc3RlYWwKKworCWxhCSRzMiwwKCRpMykKKwlsZ2hpCSRzMywxNgorCWxydmdyCSRpMSwkczAJCQkjIGZsaXAgYnl0ZSBvcmRlcgorCWxydmdyCSRpMiwkczEKKwl4ZwkkaTEsMCgkczIpCisJeGcJJGkyLDgoJHMyKQorCXN0ZwkkaTEsMCgkczIpCisJc3RnCSRpMiw4KCRzMikKKwkubG9uZwkweGI5MmUwMGFhCQkjIGttICRzMiwkczIKKwlicmMJMSwuLTQJCQkjIGNhbiB0aGlzIGhhcHBlbj8KKwlscnZncgkkaTEsJHMwCQkJIyBmbGlwIGJ5dGUgb3JkZXIKKwlscnZncgkkaTIsJHMxCisJeGcJJGkxLDAoJGkzKQorCXhnCSRpMiw4KCRpMykKKwlzdGcJJGkxLDAoJGkzKQorCXN0ZwkkaTIsOCgkaTMpCisKKy5MeHRzX2VuY19rbV9kb25lOgorCWwke2d9CSRyYSwxNCokU0laRV9UKCRzcCkKKwlzdCR7Z30JJHNwLCR0d2Vhaygkc3ApCQkjIHdpcGUgdHdlYWsKKwlzdCR7Z30JJHNwLCR0d2Vhaygkc3ApCisJbG0ke2d9CSVyNiwkczMsNiokU0laRV9UKCRzcCkKKwlicgkkcmEKKy5hbGlnbgkxNgorLkx4dHNfZW5jX3NvZnR3YXJlOgorX19fCiskY29kZS49PDxfX187CisJc3RtJHtnfQklcjYsJHJhLDYqJFNJWkVfVCgkc3ApCisKKwlzbGdyCSRvdXQsJGlucAorCisJeGdyCSRzMCwkczAJCQkjIGNsZWFyIHVwcGVyIGhhbGYKKwl4Z3IJJHMxLCRzMQorCWxydgkkczAsJHN0ZGZyYW1lKzQoJHNwKQkjIGxvYWQgc2Vjbm8KKwlscnYJJHMxLCRzdGRmcmFtZSswKCRzcCkKKwl4Z3IJJHMyLCRzMgorCXhncgkkczMsJHMzCisJc3RtJHtnfQklcjIsJXI1LDIqJFNJWkVfVCgkc3ApCisJbGEJJGtleSwwKCRrZXkyKQorCWxhcmwJJHRibCxBRVNfVGUKKwlicmFzCSRyYSxfczM5MHhfQUVTX2VuY3J5cHQJIyBnZW5lcmF0ZSB0aGUgdHdlYWsKKwlsbSR7Z30JJXIyLCVyNSwyKiRTSVpFX1QoJHNwKQorCXN0bQkkczAsJHMzLCR0d2Vhaygkc3ApCSMgc2F2ZSB0aGUgdHdlYWsKKwlqCS5MeHRzX2VuY19lbnRlcgorCisuYWxpZ24JMTYKKy5MeHRzX2VuY19sb29wOgorCWxydmcJJHMxLCR0d2VhayswKCRzcCkJIyBsb2FkIHRoZSB0d2VhayBpbiBsaXR0bGUtZW5kaWFuCisJbHJ2ZwkkczMsJHR3ZWFrKzgoJHNwKQorCWxnaGkJJXIxLDB4ODcKKwlzcmFnCSVyMCwkczMsNjMJCSMgYnJvYWRjYXN0IHVwcGVyIGJpdAorCW5ncgklcjEsJXIwCQkJIyByZW0KKwlzcmxnCSVyMCwkczEsNjMJCSMgY2FycnkgYml0IGZyb20gbG93ZXIgaGFsZgorCXNsbGcJJHMxLCRzMSwxCisJc2xsZwkkczMsJHMzLDEKKwl4Z3IJJHMxLCVyMQorCW9ncgkkczMsJXIwCisJbHJ2Z3IJJHMxLCRzMQkJCSMgZmxpcCBieXRlIG9yZGVyCisJbHJ2Z3IJJHMzLCRzMworCXNybGcJJHMwLCRzMSwzMgkJIyBzbWFzaCB0aGUgdHdlYWsgdG8gNHgzMi1iaXRzIAorCXN0ZwkkczEsJHR3ZWFrKzAoJHNwKQkjIHNhdmUgdGhlIHR3ZWFrCisJbGxnZnIJJHMxLCRzMQorCXNybGcJJHMyLCRzMywzMgorCXN0ZwkkczMsJHR3ZWFrKzgoJHNwKQorCWxsZ2ZyCSRzMywkczMKKwlsYQkkaW5wLDE2KCRpbnApCQkjICRpbnArPTE2CisuTHh0c19lbmNfZW50ZXI6CisJeAkkczAsMCgkaW5wKQkJIyBePSooJGlucCkKKwl4CSRzMSw0KCRpbnApCisJeAkkczIsOCgkaW5wKQorCXgJJHMzLDEyKCRpbnApCisJc3RtJHtnfQklcjIsJXIzLDIqJFNJWkVfVCgkc3ApCSMgb25seSB0d28gcmVnaXN0ZXJzIGFyZSBjaGFuZ2luZworCWxhCSRrZXksMCgka2V5MSkKKwlicmFzCSRyYSxfczM5MHhfQUVTX2VuY3J5cHQKKwlsbSR7Z30JJXIyLCVyNSwyKiRTSVpFX1QoJHNwKQorCXgJJHMwLCR0d2VhayswKCRzcCkJIyBePXR3ZWFrCisJeAkkczEsJHR3ZWFrKzQoJHNwKQorCXgJJHMyLCR0d2Vhays4KCRzcCkKKwl4CSRzMywkdHdlYWsrMTIoJHNwKQorCXN0CSRzMCwwKCRvdXQsJGlucCkKKwlzdAkkczEsNCgkb3V0LCRpbnApCisJc3QJJHMyLDgoJG91dCwkaW5wKQorCXN0CSRzMywxMigkb3V0LCRpbnApCisJYnJjdCR7Z30JJGxlbiwuTHh0c19lbmNfbG9vcAorCisJbGxnYwkkbGVuLGAyKiRTSVpFX1QtMWAoJHNwKQorCW5pbGwJJGxlbiwweDBmCQkjICRsZW4lMTYKKwlqegkuTHh0c19lbmNfZG9uZQorCisJbGEJJGkzLDAoJGlucCwkb3V0KQkjIHB1dCBhc2lkZSByZWFsICRvdXQKKy5MeHRzX2VuY19zdGVhbDoKKwlsbGdjCSVyMCwxNigkaW5wKQorCWxsZ2MJJXIxLDAoJG91dCwkaW5wKQorCXN0YwklcjAsMCgkb3V0LCRpbnApCisJc3RjCSVyMSwxNigkb3V0LCRpbnApCisJbGEJJGlucCwxKCRpbnApCisJYnJjdAkkbGVuLC5MeHRzX2VuY19zdGVhbAorCWxhCSRvdXQsMCgkaTMpCQkjIHJlc3RvcmUgcmVhbCAkb3V0CisKKwkjIGdlbmVyYXRlIGxhc3QgdHdlYWsuLi4KKwlscnZnCSRzMSwkdHdlYWsrMCgkc3ApCSMgbG9hZCB0aGUgdHdlYWsgaW4gbGl0dGxlLWVuZGlhbgorCWxydmcJJHMzLCR0d2Vhays4KCRzcCkKKwlsZ2hpCSVyMSwweDg3CisJc3JhZwklcjAsJHMzLDYzCQkjIGJyb2FkY2FzdCB1cHBlciBiaXQKKwluZ3IJJXIxLCVyMAkJCSMgcmVtCisJc3JsZwklcjAsJHMxLDYzCQkjIGNhcnJ5IGJpdCBmcm9tIGxvd2VyIGhhbGYKKwlzbGxnCSRzMSwkczEsMQorCXNsbGcJJHMzLCRzMywxCisJeGdyCSRzMSwlcjEKKwlvZ3IJJHMzLCVyMAorCWxydmdyCSRzMSwkczEJCQkjIGZsaXAgYnl0ZSBvcmRlcgorCWxydmdyCSRzMywkczMKKwlzcmxnCSRzMCwkczEsMzIJCSMgc21hc2ggdGhlIHR3ZWFrIHRvIDR4MzItYml0cyAKKwlzdGcJJHMxLCR0d2VhayswKCRzcCkJIyBzYXZlIHRoZSB0d2VhaworCWxsZ2ZyCSRzMSwkczEKKwlzcmxnCSRzMiwkczMsMzIKKwlzdGcJJHMzLCR0d2Vhays4KCRzcCkKKwlsbGdmcgkkczMsJHMzCisKKwl4CSRzMCwwKCRvdXQpCQkjIF49KihpbnApfHN0b2xlbiBjaXB0aGVyLXRleHQKKwl4CSRzMSw0KCRvdXQpCisJeAkkczIsOCgkb3V0KQorCXgJJHMzLDEyKCRvdXQpCisJc3Qke2d9CSRvdXQsNCokU0laRV9UKCRzcCkKKwlsYQkka2V5LDAoJGtleTEpCisJYnJhcwkkcmEsX3MzOTB4X0FFU19lbmNyeXB0CisJbCR7Z30JJG91dCw0KiRTSVpFX1QoJHNwKQorCXgJJHMwLGAkdHdlYWsrMGAoJHNwKQkjIF49dHdlYWsKKwl4CSRzMSxgJHR3ZWFrKzRgKCRzcCkKKwl4CSRzMixgJHR3ZWFrKzhgKCRzcCkKKwl4CSRzMyxgJHR3ZWFrKzEyYCgkc3ApCisJc3QJJHMwLDAoJG91dCkKKwlzdAkkczEsNCgkb3V0KQorCXN0CSRzMiw4KCRvdXQpCisJc3QJJHMzLDEyKCRvdXQpCisKKy5MeHRzX2VuY19kb25lOgorCXN0Zwkkc3AsJHR3ZWFrKzAoJHNwKQkjIHdpcGUgdHdlYWsKKwlzdGcJJHNwLCR0d2Vzays4KCRzcCkKKwlsbSR7Z30JJXI2LCRyYSw2KiRTSVpFX1QoJHNwKQorCWJyCSRyYQorLnNpemUJQUVTX3h0c19lbmNyeXB0LC4tQUVTX3h0c19lbmNyeXB0CitfX18KKyMgdm9pZCBBRVNfeHRzX2RlY3J5cHQoY29uc3QgY2hhciAqaW5wLGNoYXIgKm91dCxzaXplX3QgbGVuLAorIwljb25zdCBBRVNfS0VZICprZXkxLCBjb25zdCBBRVNfS0VZICprZXkyLHU2NCBzZWNubyk7CisjCiskY29kZS49PDxfX187CisuZ2xvYmwJQUVTX3h0c19kZWNyeXB0CisudHlwZQlBRVNfeHRzX2RlY3J5cHQsXEBmdW5jdGlvbgorLmFsaWduCTE2CitBRVNfeHRzX2RlY3J5cHQ6CisJeGdyCSVyMywlcjQJCQkjIGZsaXAgJXIzIGFuZCAlcjQsICRvdXQgYW5kICRsZW4KKwl4Z3IJJXI0LCVyMworCXhncgklcjMsJXI0CitfX18KKyRjb2RlLj08PF9fXyBpZiAoJFNJWkVfVD09NCk7CisJbGxnZnIJJGxlbiwkbGVuCitfX18KKyRjb2RlLj08PF9fXzsKKwlzdCR7Z30JJGxlbiwxKiRTSVpFX1QoJHNwKQkjIHNhdmUgY29weSBvZiAkbGVuCisJYWdoaQkkbGVuLC0xNgorCWJjcgk0LCRyYQkJCSMgYWJvcnQgaWYgbGVzcyB0aGFuIHplcm8uIGZvcm1hbGx5CisJCQkJCSMgd3JvbmcsIGJlY2F1c2UgJGxlbiBpcyB1bnNpZ25lZCwKKwkJCQkJIyBidXQgd2hvIGNhbiBhZmZvcmQgYXNraW5nIHRvCisJCQkJCSMgcHJvY2VzcyBtb3JlIHRoYW4gMl42My0xIGJ5dGVzPworCXRtbGwJJGxlbiwweDBmCisJam56CS5MeHRzX2RlY19wcm9jZWVkCisJYWdoaQkkbGVuLDE2CisuTHh0c19kZWNfcHJvY2VlZDoKK19fXworJGNvZGUuPTw8X19fIGlmICghJHNvZnRvbmx5KTsKKwlsbGdmCSVyMCwyNDAoJGtleTIpCisJbGhpCSVyMSwxNgorCWNscgklcjAsJXIxCisJamwJLkx4dHNfZGVjX3NvZnR3YXJlCisKKwlzdG0ke2d9CSVyNiwkczMsNiokU0laRV9UKCRzcCkKKwlzdCR7Z30JJHJhLDE0KiRTSVpFX1QoJHNwKQorCisJbmlsbAkkbGVuLDB4ZmZmMAkJIyAkbGVuJj1+MTUKKwlzbGdyCSRvdXQsJGlucAorCisJIyBnZW5lcmF0ZSB0aGUgdHdlYWsgdmFsdWUKKwlsJHtnfQkkczMsJHN0ZGZyYW1lKCRzcCkJIyBwb2ludGVyIHRvIGl2CisJbGEJJHMyLCR0d2Vhaygkc3ApCisJbG1nCSRzMCwkczEsMCgkczMpCisJbGdoaQkkczMsMTYKKwlzdG1nCSRzMCwkczEsMCgkczIpCisJbGEJJXIxLDAoJGtleTIpCQkjICRrZXkyIGlzIG5vdCBuZWVkZWQgcGFzdCB0aGlzIHBvaW50CisJLmxvbmcJMHhiOTJlMDBhYQkJIyBrbSAkczIsJHMyLCBnZW5lcmF0ZSB0aGUgdHdlYWsKKwlicmMJMSwuLTQJCQkjIGNhbiB0aGlzIGhhcHBlbj8KKworCWwJJXIwLDI0MCgka2V5MSkKKwlsYQklcjEsMCgka2V5MSkJCSMgJGtleTEgaXMgbm90IG5lZWRlZCBhbnltb3JlCisKKwlsdGdyCSRsZW4sJGxlbgorCWp6CS5MeHRzX2RlY19rbV9zaG9ydAorCWJyYXMJJHJhLF9zMzkweF94dHNfa20KKwlqegkuTHh0c19kZWNfa21fZG9uZQorCisJbHJ2Z3IJJHMyLCRzMAkJCSMgbWFrZSBjb3B5IGluIHJldmVyc2UgYnl0ZSBvcmRlcgorCWxydmdyCSRzMywkczEKKwlqCS5MeHRzX2RlY19rbV8ybmR0d2VhaworCisuTHh0c19kZWNfa21fc2hvcnQ6CisJbGxnYwkkbGVuLGAyKiRTSVpFX1QtMWAoJHNwKQorCW5pbGwJJGxlbiwweDBmCQkjICRsZW4lPTE2CisJbHJ2ZwkkczAsJHR3ZWFrKzAoJHNwKQkjIGxvYWQgdGhlIHR3ZWFrCisJbHJ2ZwkkczEsJHR3ZWFrKzgoJHNwKQorCWxydmdyCSRzMiwkczAJCQkjIG1ha2UgY29weSBpbiByZXZlcnNlIGJ5dGUgb3JkZXIKKwlscnZncgkkczMsJHMxCisKKy5MeHRzX2RlY19rbV8ybmR0d2VhazoKKwlsZ2hpCSRpMSwweDg3CisJc3JhZwkkaTIsJHMxLDYzCQkjIGJyb2FkY2FzdCB1cHBlciBiaXQKKwluZ3IJJGkxLCRpMgkJCSMgcmVtCisJc3JsZwkkaTIsJHMwLDYzCQkjIGNhcnJ5IGJpdCBmcm9tIGxvd2VyIGhhbGYKKwlzbGxnCSRzMCwkczAsMQorCXNsbGcJJHMxLCRzMSwxCisJeGdyCSRzMCwkaTEKKwlvZ3IJJHMxLCRpMgorCWxydmdyCSRpMSwkczAJCQkjIGZsaXAgYnl0ZSBvcmRlcgorCWxydmdyCSRpMiwkczEKKworCXhnCSRpMSwwKCRpbnApCisJeGcJJGkyLDgoJGlucCkKKwlzdGcJJGkxLDAoJG91dCwkaW5wKQorCXN0ZwkkaTIsOCgkb3V0LCRpbnApCisJbGEJJGkyLDAoJG91dCwkaW5wKQorCWxnaGkJJGkzLDE2CisJLmxvbmcJMHhiOTJlMDA2NgkJIyBrbSAkaTIsJGkyCisJYnJjCTEsLi00CQkJIyBjYW4gdGhpcyBoYXBwZW4/CisJbHJ2Z3IJJGkxLCRzMAorCWxydmdyCSRpMiwkczEKKwl4ZwkkaTEsMCgkb3V0LCRpbnApCisJeGcJJGkyLDgoJG91dCwkaW5wKQorCXN0ZwkkaTEsMCgkb3V0LCRpbnApCisJc3RnCSRpMiw4KCRvdXQsJGlucCkKKworCWxhCSRpMywwKCRvdXQsJGlucCkJIyBwdXQgYXNpZGUgcmVhbCAkb3V0CisuTHh0c19kZWNfa21fc3RlYWw6CisJbGxnYwkkaTEsMTYoJGlucCkKKwlsbGdjCSRpMiwwKCRvdXQsJGlucCkKKwlzdGMJJGkxLDAoJG91dCwkaW5wKQorCXN0YwkkaTIsMTYoJG91dCwkaW5wKQorCWxhCSRpbnAsMSgkaW5wKQorCWJyY3QJJGxlbiwuTHh0c19kZWNfa21fc3RlYWwKKworCWxncgkkczAsJHMyCisJbGdyCSRzMSwkczMKKwl4ZwkkczAsMCgkaTMpCisJeGcJJHMxLDgoJGkzKQorCXN0ZwkkczAsMCgkaTMpCisJc3RnCSRzMSw4KCRpMykKKwlsYQkkczAsMCgkaTMpCisJbGdoaQkkczEsMTYKKwkubG9uZwkweGI5MmUwMDg4CQkjIGttICRzMCwkczAKKwlicmMJMSwuLTQJCQkjIGNhbiB0aGlzIGhhcHBlbj8KKwl4ZwkkczIsMCgkaTMpCisJeGcJJHMzLDgoJGkzKQorCXN0ZwkkczIsMCgkaTMpCisJc3RnCSRzMyw4KCRpMykKKy5MeHRzX2RlY19rbV9kb25lOgorCWwke2d9CSRyYSwxNCokU0laRV9UKCRzcCkKKwlzdCR7Z30JJHNwLCR0d2Vhaygkc3ApCQkjIHdpcGUgdHdlYWsKKwlzdCR7Z30JJHNwLCR0d2Vhaygkc3ApCisJbG0ke2d9CSVyNiwkczMsNiokU0laRV9UKCRzcCkKKwlicgkkcmEKKy5hbGlnbgkxNgorLkx4dHNfZGVjX3NvZnR3YXJlOgorX19fCiskY29kZS49PDxfX187CisJc3RtJHtnfQklcjYsJHJhLDYqJFNJWkVfVCgkc3ApCisKKwlzcmxnCSRsZW4sJGxlbiw0CisJc2xncgkkb3V0LCRpbnAKKworCXhncgkkczAsJHMwCQkJIyBjbGVhciB1cHBlciBoYWxmCisJeGdyCSRzMSwkczEKKwlscnYJJHMwLCRzdGRmcmFtZSs0KCRzcCkJIyBsb2FkIHNlY25vCisJbHJ2CSRzMSwkc3RkZnJhbWUrMCgkc3ApCisJeGdyCSRzMiwkczIKKwl4Z3IJJHMzLCRzMworCXN0bSR7Z30JJXIyLCVyNSwyKiRTSVpFX1QoJHNwKQorCWxhCSRrZXksMCgka2V5MikKKwlsYXJsCSR0YmwsQUVTX1RlCisJYnJhcwkkcmEsX3MzOTB4X0FFU19lbmNyeXB0CSMgZ2VuZXJhdGUgdGhlIHR3ZWFrCisJbG0ke2d9CSVyMiwlcjUsMiokU0laRV9UKCRzcCkKKwlsYXJsCSR0YmwsQUVTX1RkCisJbHQke2d9cgkkbGVuLCRsZW4KKwlzdG0JJHMwLCRzMywkdHdlYWsoJHNwKQkjIHNhdmUgdGhlIHR3ZWFrCisJanoJLkx4dHNfZGVjX3Nob3J0CisJagkuTHh0c19kZWNfZW50ZXIKKworLmFsaWduCTE2CisuTHh0c19kZWNfbG9vcDoKKwlscnZnCSRzMSwkdHdlYWsrMCgkc3ApCSMgbG9hZCB0aGUgdHdlYWsgaW4gbGl0dGxlLWVuZGlhbgorCWxydmcJJHMzLCR0d2Vhays4KCRzcCkKKwlsZ2hpCSVyMSwweDg3CisJc3JhZwklcjAsJHMzLDYzCQkjIGJyb2FkY2FzdCB1cHBlciBiaXQKKwluZ3IJJXIxLCVyMAkJCSMgcmVtCisJc3JsZwklcjAsJHMxLDYzCQkjIGNhcnJ5IGJpdCBmcm9tIGxvd2VyIGhhbGYKKwlzbGxnCSRzMSwkczEsMQorCXNsbGcJJHMzLCRzMywxCisJeGdyCSRzMSwlcjEKKwlvZ3IJJHMzLCVyMAorCWxydmdyCSRzMSwkczEJCQkjIGZsaXAgYnl0ZSBvcmRlcgorCWxydmdyCSRzMywkczMKKwlzcmxnCSRzMCwkczEsMzIJCSMgc21hc2ggdGhlIHR3ZWFrIHRvIDR4MzItYml0cyAKKwlzdGcJJHMxLCR0d2VhayswKCRzcCkJIyBzYXZlIHRoZSB0d2VhaworCWxsZ2ZyCSRzMSwkczEKKwlzcmxnCSRzMiwkczMsMzIKKwlzdGcJJHMzLCR0d2Vhays4KCRzcCkKKwlsbGdmcgkkczMsJHMzCisuTHh0c19kZWNfZW50ZXI6CisJeAkkczAsMCgkaW5wKQkJIyB0d2Vha149KihpbnApCisJeAkkczEsNCgkaW5wKQorCXgJJHMyLDgoJGlucCkKKwl4CSRzMywxMigkaW5wKQorCXN0bSR7Z30JJXIyLCVyMywyKiRTSVpFX1QoJHNwKQkjIG9ubHkgdHdvIHJlZ2lzdGVycyBhcmUgY2hhbmdpbmcKKwlsYQkka2V5LDAoJGtleTEpCisJYnJhcwkkcmEsX3MzOTB4X0FFU19kZWNyeXB0CisJbG0ke2d9CSVyMiwlcjUsMiokU0laRV9UKCRzcCkKKwl4CSRzMCwkdHdlYWsrMCgkc3ApCSMgXj10d2VhaworCXgJJHMxLCR0d2Vhays0KCRzcCkKKwl4CSRzMiwkdHdlYWsrOCgkc3ApCisJeAkkczMsJHR3ZWFrKzEyKCRzcCkKKwlzdAkkczAsMCgkb3V0LCRpbnApCisJc3QJJHMxLDQoJG91dCwkaW5wKQorCXN0CSRzMiw4KCRvdXQsJGlucCkKKwlzdAkkczMsMTIoJG91dCwkaW5wKQorCWxhCSRpbnAsMTYoJGlucCkKKwlicmN0JHtnfQkkbGVuLC5MeHRzX2RlY19sb29wCisKKwlsbGdjCSRsZW4sYDIqJFNJWkVfVC0xYCgkc3ApCisJbmlsbAkkbGVuLDB4MGYJCSMgJGxlbiUxNgorCWp6CS5MeHRzX2RlY19kb25lCisKKwkjIGdlbmVyYXRlIHBhaXIgb2YgdHdlYWtzLi4uCisJbHJ2ZwkkczEsJHR3ZWFrKzAoJHNwKQkjIGxvYWQgdGhlIHR3ZWFrIGluIGxpdHRsZS1lbmRpYW4KKwlscnZnCSRzMywkdHdlYWsrOCgkc3ApCisJbGdoaQklcjEsMHg4NworCXNyYWcJJXIwLCRzMyw2MwkJIyBicm9hZGNhc3QgdXBwZXIgYml0CisJbmdyCSVyMSwlcjAJCQkjIHJlbQorCXNybGcJJXIwLCRzMSw2MwkJIyBjYXJyeSBiaXQgZnJvbSBsb3dlciBoYWxmCisJc2xsZwkkczEsJHMxLDEKKwlzbGxnCSRzMywkczMsMQorCXhncgkkczEsJXIxCisJb2dyCSRzMywlcjAKKwlscnZncgkkaTIsJHMxCQkJIyBmbGlwIGJ5dGUgb3JkZXIKKwlscnZncgkkaTMsJHMzCisJc3RtZwkkaTIsJGkzLCR0d2Vhaygkc3ApCSMgc2F2ZSB0aGUgMXN0IHR3ZWFrCisJagkuTHh0c19kZWNfMm5kdHdlYWsKKworLmFsaWduCTE2CisuTHh0c19kZWNfc2hvcnQ6CisJbGxnYwkkbGVuLGAyKiRTSVpFX1QtMWAoJHNwKQorCW5pbGwJJGxlbiwweDBmCQkjICRsZW4lMTYKKwlscnZnCSRzMSwkdHdlYWsrMCgkc3ApCSMgbG9hZCB0aGUgdHdlYWsgaW4gbGl0dGxlLWVuZGlhbgorCWxydmcJJHMzLCR0d2Vhays4KCRzcCkKKy5MeHRzX2RlY18ybmR0d2VhazoKKwlsZ2hpCSVyMSwweDg3CisJc3JhZwklcjAsJHMzLDYzCQkjIGJyb2FkY2FzdCB1cHBlciBiaXQKKwluZ3IJJXIxLCVyMAkJCSMgcmVtCisJc3JsZwklcjAsJHMxLDYzCQkjIGNhcnJ5IGJpdCBmcm9tIGxvd2VyIGhhbGYKKwlzbGxnCSRzMSwkczEsMQorCXNsbGcJJHMzLCRzMywxCisJeGdyCSRzMSwlcjEKKwlvZ3IJJHMzLCVyMAorCWxydmdyCSRzMSwkczEJCQkjIGZsaXAgYnl0ZSBvcmRlcgorCWxydmdyCSRzMywkczMKKwlzcmxnCSRzMCwkczEsMzIJCSMgc21hc2ggdGhlIHR3ZWFrIHRvIDR4MzItYml0cworCXN0ZwkkczEsJHR3ZWFrLTE2KzAoJHNwKQkjIHNhdmUgdGhlIDJuZCB0d2VhaworCWxsZ2ZyCSRzMSwkczEKKwlzcmxnCSRzMiwkczMsMzIKKwlzdGcJJHMzLCR0d2Vhay0xNis4KCRzcCkKKwlsbGdmcgkkczMsJHMzCisKKwl4CSRzMCwwKCRpbnApCQkjIHR3ZWFrX3RoZV8ybmRePSooaW5wKQorCXgJJHMxLDQoJGlucCkKKwl4CSRzMiw4KCRpbnApCisJeAkkczMsMTIoJGlucCkKKwlzdG0ke2d9CSVyMiwlcjMsMiokU0laRV9UKCRzcCkKKwlsYQkka2V5LDAoJGtleTEpCisJYnJhcwkkcmEsX3MzOTB4X0FFU19kZWNyeXB0CisJbG0ke2d9CSVyMiwlcjUsMiokU0laRV9UKCRzcCkKKwl4CSRzMCwkdHdlYWstMTYrMCgkc3ApCSMgXj10d2Vha190aGVfMm5kCisJeAkkczEsJHR3ZWFrLTE2KzQoJHNwKQorCXgJJHMyLCR0d2Vhay0xNis4KCRzcCkKKwl4CSRzMywkdHdlYWstMTYrMTIoJHNwKQorCXN0CSRzMCwwKCRvdXQsJGlucCkKKwlzdAkkczEsNCgkb3V0LCRpbnApCisJc3QJJHMyLDgoJG91dCwkaW5wKQorCXN0CSRzMywxMigkb3V0LCRpbnApCisKKwlsYQkkaTMsMCgkb3V0LCRpbnApCSMgcHV0IGFzaWRlIHJlYWwgJG91dAorLkx4dHNfZGVjX3N0ZWFsOgorCWxsZ2MJJXIwLDE2KCRpbnApCisJbGxnYwklcjEsMCgkb3V0LCRpbnApCisJc3RjCSVyMCwwKCRvdXQsJGlucCkKKwlzdGMJJXIxLDE2KCRvdXQsJGlucCkKKwlsYQkkaW5wLDEoJGlucCkKKwlicmN0CSRsZW4sLkx4dHNfZGVjX3N0ZWFsCisJbGEJJG91dCwwKCRpMykJCSMgcmVzdG9yZSByZWFsICRvdXQKKworCWxtCSRzMCwkczMsJHR3ZWFrKCRzcCkJIyBsb2FkIHRoZSAxc3QgdHdlYWsKKwl4CSRzMCwwKCRvdXQpCQkjIHR3ZWFrXj0qKGlucCl8c3RvbGVuIGNpcGhlci10ZXh0CisJeAkkczEsNCgkb3V0KQorCXgJJHMyLDgoJG91dCkKKwl4CSRzMywxMigkb3V0KQorCXN0JHtnfQkkb3V0LDQqJFNJWkVfVCgkc3ApCisJbGEJJGtleSwwKCRrZXkxKQorCWJyYXMJJHJhLF9zMzkweF9BRVNfZGVjcnlwdAorCWwke2d9CSRvdXQsNCokU0laRV9UKCRzcCkKKwl4CSRzMCwkdHdlYWsrMCgkc3ApCSMgXj10d2VhaworCXgJJHMxLCR0d2Vhays0KCRzcCkKKwl4CSRzMiwkdHdlYWsrOCgkc3ApCisJeAkkczMsJHR3ZWFrKzEyKCRzcCkKKwlzdAkkczAsMCgkb3V0KQorCXN0CSRzMSw0KCRvdXQpCisJc3QJJHMyLDgoJG91dCkKKwlzdAkkczMsMTIoJG91dCkKKwlzdGcJJHNwLCR0d2Vhay0xNiswKCRzcCkJIyB3aXBlIDJuZCB0d2VhaworCXN0Zwkkc3AsJHR3ZWFrLTE2KzgoJHNwKQorLkx4dHNfZGVjX2RvbmU6CisJc3RnCSRzcCwkdHdlYWsrMCgkc3ApCSMgd2lwZSB0d2VhaworCXN0Zwkkc3AsJHR3ZXNrKzgoJHNwKQorCWxtJHtnfQklcjYsJHJhLDYqJFNJWkVfVCgkc3ApCisJYnIJJHJhCisuc2l6ZQlBRVNfeHRzX2RlY3J5cHQsLi1BRVNfeHRzX2RlY3J5cHQKK19fXworfQorJGNvZGUuPTw8X19fOworLnN0cmluZwkiQUVTIGZvciBzMzkweCwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIKKy5jb21tCU9QRU5TU0xfczM5MHhjYXBfUCwxNiw4CitfX18KKworJGNvZGUgPX4gcy9cYChbXlxgXSopXGAvZXZhbCAkMS9nZW07CitwcmludCAkY29kZTsKK2Nsb3NlIFNURE9VVDsJIyBmb3JjZSBmbHVzaApkaWZmIC0tZ2l0IGEvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzLXNwYXJjdjkucGwgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS9hZXMtc3BhcmN2OS5wbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40MDNjNGQxCi0tLSAvZGV2L251bGwKKysrIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzLXNwYXJjdjkucGwKQEAgLTAsMCArMSwxMTgyIEBACisjIS91c3IvYmluL2VudiBwZXJsCisjCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9AZnkuY2hhbG1lcnMuc2U+IGZvciB0aGUgT3BlblNTTAorIyBwcm9qZWN0LiBSaWdodHMgZm9yIHJlZGlzdHJpYnV0aW9uIGFuZCB1c2FnZSBpbiBzb3VyY2UgYW5kIGJpbmFyeQorIyBmb3JtcyBhcmUgZ3JhbnRlZCBhY2NvcmRpbmcgdG8gdGhlIE9wZW5TU0wgbGljZW5zZS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgVmVyc2lvbiAxLjEKKyMKKyMgVGhlIG1ham9yIHJlYXNvbiBmb3IgdW5kZXJ0YWtlbiBlZmZvcnQgd2FzIHRvIG1pdGlnYXRlIHRoZSBoYXphcmQgb2YKKyMgY2FjaGUtdGltaW5nIGF0dGFjay4gVGhpcyBpcyBbY3VycmVudGx5IGFuZCBpbml0aWFsbHkhXSBhZGRyZXNzZWQgaW4KKyMgdHdvIHdheXMuIDEuIFMtYm94ZXMgYXJlIGNvbXByZXNzZWQgZnJvbSA1S0IgdG8gMktCKzI1NkIgc2l6ZSBlYWNoLgorIyAyLiBSZWZlcmVuY2VzIHRvIHRoZW0gYXJlIHNjaGVkdWxlZCBmb3IgTDIgY2FjaGUgbGF0ZW5jeSwgbWVhbmluZworIyB0aGF0IHRoZSB0YWJsZXMgZG9uJ3QgaGF2ZSB0byByZXNpZGUgaW4gTDEgY2FjaGUuIE9uY2UgYWdhaW4sIHRoaXMKKyMgaXMgYW4gaW5pdGlhbCBkcmFmdCBhbmQgb25lIHNob3VsZCBleHBlY3QgbW9yZSBjb3VudGVybWVhc3VyZXMgdG8KKyMgYmUgaW1wbGVtZW50ZWQuLi4KKyMKKyMgVmVyc2lvbiAxLjEgcHJlZmV0Y2hlcyBUW2VkXTQgaW4gb3JkZXIgdG8gbWl0aWdhdGUgYXR0YWNrIG9uIGxhc3QKKyMgcm91bmQuCisjCisjIEV2ZW4gdGhvdWdoIHBlcmZvcm1hbmNlIHdhcyBub3QgdGhlIHByaW1hcnkgZ29hbCBbb24gdGhlIGNvbnRyYXJ5LAorIyBleHRyYSBzaGlmdHMgImluZHVjZWQiIGJ5IGNvbXByZXNzZWQgUy1ib3ggYW5kIGxvbmdlciBsb29wIGVwaWxvZ3VlCisjICJpbmR1Y2VkIiBieSBzY2hlZHVsaW5nIGZvciBMMiBoYXZlIG5lZ2F0aXZlIGVmZmVjdCBvbiBwZXJmb3JtYW5jZV0sCisjIHRoZSBjb2RlIHR1cm5lZCBvdXQgdG8gcnVuIGluIH4yMyBjeWNsZXMgcGVyIHByb2Nlc3NlZCBieXRlIGVuLS8KKyMgZGVjcnlwdGVkIHdpdGggMTI4LWJpdCBrZXkuIFRoaXMgaXMgcHJldHR5IGdvb2QgcmVzdWx0IGZvciBjb2RlCisjIHdpdGggbWVudGlvbmVkIHF1YWxpdGllcyBhbmQgVWx0cmFTUEFSQyBjb3JlLiBDb21wYXJlZCB0byBTdW4gQworIyBnZW5lcmF0ZWQgY29kZSBteSBlbmNyeXB0IHByb2NlZHVyZSBydW5zIGp1c3QgZmV3IHBlcmNlbnRzIGZhc3RlciwKKyMgd2hpbGUgZGVjcnlwdCBvbmUgLSB3aG9sZSA1MCUgZmFzdGVyIFt5ZXMsIFN1biBDIGZhaWxlZCB0byBnZW5lcmF0ZQorIyBvcHRpbWFsIGRlY3J5cHQgcHJvY2VkdXJlXS4gQ29tcGFyZWQgdG8gR05VIEMgZ2VuZXJhdGVkIGNvZGUgYm90aAorIyBwcm9jZWR1cmVzIGFyZSBtb3JlIHRoYW4gNjAlIGZhc3RlcjotKQorCiskYml0cz0zMjsKK2ZvciAoQEFSR1YpCXsgJGJpdHM9NjQgaWYgKC9cLW02NC8gfHwgL1wteGFyY2hcPXY5Lyk7IH0KK2lmICgkYml0cz09NjQpCXsgJGJpYXM9MjA0NzsgJGZyYW1lPTE5MjsgfQorZWxzZQkJeyAkYmlhcz0wOyAgICAkZnJhbWU9MTEyOyB9CiskbG9jYWxzPTE2OworCiskYWNjMD0iJWwwIjsKKyRhY2MxPSIlbzAiOworJGFjYzI9IiVvMSI7CiskYWNjMz0iJW8yIjsKKworJGFjYzQ9IiVsMSI7CiskYWNjNT0iJW8zIjsKKyRhY2M2PSIlbzQiOworJGFjYzc9IiVvNSI7CisKKyRhY2M4PSIlbDIiOworJGFjYzk9IiVvNyI7CiskYWNjMTA9IiVnMSI7CiskYWNjMTE9IiVnMiI7CisKKyRhY2MxMj0iJWwzIjsKKyRhY2MxMz0iJWczIjsKKyRhY2MxND0iJWc0IjsKKyRhY2MxNT0iJWc1IjsKKworJHQwPSIlbDQiOworJHQxPSIlbDUiOworJHQyPSIlbDYiOworJHQzPSIlbDciOworCiskczA9IiVpMCI7CiskczE9IiVpMSI7CiskczI9IiVpMiI7CiskczM9IiVpMyI7CiskdGJsPSIlaTQiOworJGtleT0iJWk1IjsKKyRyb3VuZHM9IiVpNyI7CSMgYWxpYXNlcyB3aXRoIHJldHVybiBhZGRyZXNzLCB3aGljaCBpcyBvZmYtbG9hZGVkIHRvIHN0YWNrCisKK3N1YiBfZGF0YV93b3JkKCkKK3sgbXkgJGk7CisgICAgd2hpbGUoZGVmaW5lZCgkaT1zaGlmdCkpIHsgJGNvZGUuPXNwcmludGYiXHQubG9uZ1x0MHglMDh4LDB4JTA4eFxuIiwkaSwkaTsgfQorfQorCiskY29kZS49PDxfX18gaWYgKCRiaXRzPT02NCk7CisucmVnaXN0ZXIJJWcyLCNzY3JhdGNoCisucmVnaXN0ZXIJJWczLCNzY3JhdGNoCitfX18KKyRjb2RlLj08PF9fXzsKKy5zZWN0aW9uCSIudGV4dCIsI2FsbG9jLCNleGVjaW5zdHIKKworLmFsaWduCTI1NgorQUVTX1RlOgorX19fCismX2RhdGFfd29yZCgKKwkweGM2NjM2M2E1LCAweGY4N2M3Yzg0LCAweGVlNzc3Nzk5LCAweGY2N2I3YjhkLAorCTB4ZmZmMmYyMGQsIDB4ZDY2YjZiYmQsIDB4ZGU2ZjZmYjEsIDB4OTFjNWM1NTQsCisJMHg2MDMwMzA1MCwgMHgwMjAxMDEwMywgMHhjZTY3NjdhOSwgMHg1NjJiMmI3ZCwKKwkweGU3ZmVmZTE5LCAweGI1ZDdkNzYyLCAweDRkYWJhYmU2LCAweGVjNzY3NjlhLAorCTB4OGZjYWNhNDUsIDB4MWY4MjgyOWQsIDB4ODljOWM5NDAsIDB4ZmE3ZDdkODcsCisJMHhlZmZhZmExNSwgMHhiMjU5NTllYiwgMHg4ZTQ3NDdjOSwgMHhmYmYwZjAwYiwKKwkweDQxYWRhZGVjLCAweGIzZDRkNDY3LCAweDVmYTJhMmZkLCAweDQ1YWZhZmVhLAorCTB4MjM5YzljYmYsIDB4NTNhNGE0ZjcsIDB4ZTQ3MjcyOTYsIDB4OWJjMGMwNWIsCisJMHg3NWI3YjdjMiwgMHhlMWZkZmQxYywgMHgzZDkzOTNhZSwgMHg0YzI2MjY2YSwKKwkweDZjMzYzNjVhLCAweDdlM2YzZjQxLCAweGY1ZjdmNzAyLCAweDgzY2NjYzRmLAorCTB4NjgzNDM0NWMsIDB4NTFhNWE1ZjQsIDB4ZDFlNWU1MzQsIDB4ZjlmMWYxMDgsCisJMHhlMjcxNzE5MywgMHhhYmQ4ZDg3MywgMHg2MjMxMzE1MywgMHgyYTE1MTUzZiwKKwkweDA4MDQwNDBjLCAweDk1YzdjNzUyLCAweDQ2MjMyMzY1LCAweDlkYzNjMzVlLAorCTB4MzAxODE4MjgsIDB4Mzc5Njk2YTEsIDB4MGEwNTA1MGYsIDB4MmY5YTlhYjUsCisJMHgwZTA3MDcwOSwgMHgyNDEyMTIzNiwgMHgxYjgwODA5YiwgMHhkZmUyZTIzZCwKKwkweGNkZWJlYjI2LCAweDRlMjcyNzY5LCAweDdmYjJiMmNkLCAweGVhNzU3NTlmLAorCTB4MTIwOTA5MWIsIDB4MWQ4MzgzOWUsIDB4NTgyYzJjNzQsIDB4MzQxYTFhMmUsCisJMHgzNjFiMWIyZCwgMHhkYzZlNmViMiwgMHhiNDVhNWFlZSwgMHg1YmEwYTBmYiwKKwkweGE0NTI1MmY2LCAweDc2M2IzYjRkLCAweGI3ZDZkNjYxLCAweDdkYjNiM2NlLAorCTB4NTIyOTI5N2IsIDB4ZGRlM2UzM2UsIDB4NWUyZjJmNzEsIDB4MTM4NDg0OTcsCisJMHhhNjUzNTNmNSwgMHhiOWQxZDE2OCwgMHgwMDAwMDAwMCwgMHhjMWVkZWQyYywKKwkweDQwMjAyMDYwLCAweGUzZmNmYzFmLCAweDc5YjFiMWM4LCAweGI2NWI1YmVkLAorCTB4ZDQ2YTZhYmUsIDB4OGRjYmNiNDYsIDB4NjdiZWJlZDksIDB4NzIzOTM5NGIsCisJMHg5NDRhNGFkZSwgMHg5ODRjNGNkNCwgMHhiMDU4NThlOCwgMHg4NWNmY2Y0YSwKKwkweGJiZDBkMDZiLCAweGM1ZWZlZjJhLCAweDRmYWFhYWU1LCAweGVkZmJmYjE2LAorCTB4ODY0MzQzYzUsIDB4OWE0ZDRkZDcsIDB4NjYzMzMzNTUsIDB4MTE4NTg1OTQsCisJMHg4YTQ1NDVjZiwgMHhlOWY5ZjkxMCwgMHgwNDAyMDIwNiwgMHhmZTdmN2Y4MSwKKwkweGEwNTA1MGYwLCAweDc4M2MzYzQ0LCAweDI1OWY5ZmJhLCAweDRiYThhOGUzLAorCTB4YTI1MTUxZjMsIDB4NWRhM2EzZmUsIDB4ODA0MDQwYzAsIDB4MDU4ZjhmOGEsCisJMHgzZjkyOTJhZCwgMHgyMTlkOWRiYywgMHg3MDM4Mzg0OCwgMHhmMWY1ZjUwNCwKKwkweDYzYmNiY2RmLCAweDc3YjZiNmMxLCAweGFmZGFkYTc1LCAweDQyMjEyMTYzLAorCTB4MjAxMDEwMzAsIDB4ZTVmZmZmMWEsIDB4ZmRmM2YzMGUsIDB4YmZkMmQyNmQsCisJMHg4MWNkY2Q0YywgMHgxODBjMGMxNCwgMHgyNjEzMTMzNSwgMHhjM2VjZWMyZiwKKwkweGJlNWY1ZmUxLCAweDM1OTc5N2EyLCAweDg4NDQ0NGNjLCAweDJlMTcxNzM5LAorCTB4OTNjNGM0NTcsIDB4NTVhN2E3ZjIsIDB4ZmM3ZTdlODIsIDB4N2EzZDNkNDcsCisJMHhjODY0NjRhYywgMHhiYTVkNWRlNywgMHgzMjE5MTkyYiwgMHhlNjczNzM5NSwKKwkweGMwNjA2MGEwLCAweDE5ODE4MTk4LCAweDllNGY0ZmQxLCAweGEzZGNkYzdmLAorCTB4NDQyMjIyNjYsIDB4NTQyYTJhN2UsIDB4M2I5MDkwYWIsIDB4MGI4ODg4ODMsCisJMHg4YzQ2NDZjYSwgMHhjN2VlZWUyOSwgMHg2YmI4YjhkMywgMHgyODE0MTQzYywKKwkweGE3ZGVkZTc5LCAweGJjNWU1ZWUyLCAweDE2MGIwYjFkLCAweGFkZGJkYjc2LAorCTB4ZGJlMGUwM2IsIDB4NjQzMjMyNTYsIDB4NzQzYTNhNGUsIDB4MTQwYTBhMWUsCisJMHg5MjQ5NDlkYiwgMHgwYzA2MDYwYSwgMHg0ODI0MjQ2YywgMHhiODVjNWNlNCwKKwkweDlmYzJjMjVkLCAweGJkZDNkMzZlLCAweDQzYWNhY2VmLCAweGM0NjI2MmE2LAorCTB4Mzk5MTkxYTgsIDB4MzE5NTk1YTQsIDB4ZDNlNGU0MzcsIDB4ZjI3OTc5OGIsCisJMHhkNWU3ZTczMiwgMHg4YmM4Yzg0MywgMHg2ZTM3Mzc1OSwgMHhkYTZkNmRiNywKKwkweDAxOGQ4ZDhjLCAweGIxZDVkNTY0LCAweDljNGU0ZWQyLCAweDQ5YTlhOWUwLAorCTB4ZDg2YzZjYjQsIDB4YWM1NjU2ZmEsIDB4ZjNmNGY0MDcsIDB4Y2ZlYWVhMjUsCisJMHhjYTY1NjVhZiwgMHhmNDdhN2E4ZSwgMHg0N2FlYWVlOSwgMHgxMDA4MDgxOCwKKwkweDZmYmFiYWQ1LCAweGYwNzg3ODg4LCAweDRhMjUyNTZmLCAweDVjMmUyZTcyLAorCTB4MzgxYzFjMjQsIDB4NTdhNmE2ZjEsIDB4NzNiNGI0YzcsIDB4OTdjNmM2NTEsCisJMHhjYmU4ZTgyMywgMHhhMWRkZGQ3YywgMHhlODc0NzQ5YywgMHgzZTFmMWYyMSwKKwkweDk2NGI0YmRkLCAweDYxYmRiZGRjLCAweDBkOGI4Yjg2LCAweDBmOGE4YTg1LAorCTB4ZTA3MDcwOTAsIDB4N2MzZTNlNDIsIDB4NzFiNWI1YzQsIDB4Y2M2NjY2YWEsCisJMHg5MDQ4NDhkOCwgMHgwNjAzMDMwNSwgMHhmN2Y2ZjYwMSwgMHgxYzBlMGUxMiwKKwkweGMyNjE2MWEzLCAweDZhMzUzNTVmLCAweGFlNTc1N2Y5LCAweDY5YjliOWQwLAorCTB4MTc4Njg2OTEsIDB4OTljMWMxNTgsIDB4M2ExZDFkMjcsIDB4Mjc5ZTllYjksCisJMHhkOWUxZTEzOCwgMHhlYmY4ZjgxMywgMHgyYjk4OThiMywgMHgyMjExMTEzMywKKwkweGQyNjk2OWJiLCAweGE5ZDlkOTcwLCAweDA3OGU4ZTg5LCAweDMzOTQ5NGE3LAorCTB4MmQ5YjliYjYsIDB4M2MxZTFlMjIsIDB4MTU4Nzg3OTIsIDB4YzllOWU5MjAsCisJMHg4N2NlY2U0OSwgMHhhYTU1NTVmZiwgMHg1MDI4Mjg3OCwgMHhhNWRmZGY3YSwKKwkweDAzOGM4YzhmLCAweDU5YTFhMWY4LCAweDA5ODk4OTgwLCAweDFhMGQwZDE3LAorCTB4NjViZmJmZGEsIDB4ZDdlNmU2MzEsIDB4ODQ0MjQyYzYsIDB4ZDA2ODY4YjgsCisJMHg4MjQxNDFjMywgMHgyOTk5OTliMCwgMHg1YTJkMmQ3NywgMHgxZTBmMGYxMSwKKwkweDdiYjBiMGNiLCAweGE4NTQ1NGZjLCAweDZkYmJiYmQ2LCAweDJjMTYxNjNhKTsKKyRjb2RlLj08PF9fXzsKKwkuYnl0ZQkweDYzLCAweDdjLCAweDc3LCAweDdiLCAweGYyLCAweDZiLCAweDZmLCAweGM1CisJLmJ5dGUJMHgzMCwgMHgwMSwgMHg2NywgMHgyYiwgMHhmZSwgMHhkNywgMHhhYiwgMHg3NgorCS5ieXRlCTB4Y2EsIDB4ODIsIDB4YzksIDB4N2QsIDB4ZmEsIDB4NTksIDB4NDcsIDB4ZjAKKwkuYnl0ZQkweGFkLCAweGQ0LCAweGEyLCAweGFmLCAweDljLCAweGE0LCAweDcyLCAweGMwCisJLmJ5dGUJMHhiNywgMHhmZCwgMHg5MywgMHgyNiwgMHgzNiwgMHgzZiwgMHhmNywgMHhjYworCS5ieXRlCTB4MzQsIDB4YTUsIDB4ZTUsIDB4ZjEsIDB4NzEsIDB4ZDgsIDB4MzEsIDB4MTUKKwkuYnl0ZQkweDA0LCAweGM3LCAweDIzLCAweGMzLCAweDE4LCAweDk2LCAweDA1LCAweDlhCisJLmJ5dGUJMHgwNywgMHgxMiwgMHg4MCwgMHhlMiwgMHhlYiwgMHgyNywgMHhiMiwgMHg3NQorCS5ieXRlCTB4MDksIDB4ODMsIDB4MmMsIDB4MWEsIDB4MWIsIDB4NmUsIDB4NWEsIDB4YTAKKwkuYnl0ZQkweDUyLCAweDNiLCAweGQ2LCAweGIzLCAweDI5LCAweGUzLCAweDJmLCAweDg0CisJLmJ5dGUJMHg1MywgMHhkMSwgMHgwMCwgMHhlZCwgMHgyMCwgMHhmYywgMHhiMSwgMHg1YgorCS5ieXRlCTB4NmEsIDB4Y2IsIDB4YmUsIDB4MzksIDB4NGEsIDB4NGMsIDB4NTgsIDB4Y2YKKwkuYnl0ZQkweGQwLCAweGVmLCAweGFhLCAweGZiLCAweDQzLCAweDRkLCAweDMzLCAweDg1CisJLmJ5dGUJMHg0NSwgMHhmOSwgMHgwMiwgMHg3ZiwgMHg1MCwgMHgzYywgMHg5ZiwgMHhhOAorCS5ieXRlCTB4NTEsIDB4YTMsIDB4NDAsIDB4OGYsIDB4OTIsIDB4OWQsIDB4MzgsIDB4ZjUKKwkuYnl0ZQkweGJjLCAweGI2LCAweGRhLCAweDIxLCAweDEwLCAweGZmLCAweGYzLCAweGQyCisJLmJ5dGUJMHhjZCwgMHgwYywgMHgxMywgMHhlYywgMHg1ZiwgMHg5NywgMHg0NCwgMHgxNworCS5ieXRlCTB4YzQsIDB4YTcsIDB4N2UsIDB4M2QsIDB4NjQsIDB4NWQsIDB4MTksIDB4NzMKKwkuYnl0ZQkweDYwLCAweDgxLCAweDRmLCAweGRjLCAweDIyLCAweDJhLCAweDkwLCAweDg4CisJLmJ5dGUJMHg0NiwgMHhlZSwgMHhiOCwgMHgxNCwgMHhkZSwgMHg1ZSwgMHgwYiwgMHhkYgorCS5ieXRlCTB4ZTAsIDB4MzIsIDB4M2EsIDB4MGEsIDB4NDksIDB4MDYsIDB4MjQsIDB4NWMKKwkuYnl0ZQkweGMyLCAweGQzLCAweGFjLCAweDYyLCAweDkxLCAweDk1LCAweGU0LCAweDc5CisJLmJ5dGUJMHhlNywgMHhjOCwgMHgzNywgMHg2ZCwgMHg4ZCwgMHhkNSwgMHg0ZSwgMHhhOQorCS5ieXRlCTB4NmMsIDB4NTYsIDB4ZjQsIDB4ZWEsIDB4NjUsIDB4N2EsIDB4YWUsIDB4MDgKKwkuYnl0ZQkweGJhLCAweDc4LCAweDI1LCAweDJlLCAweDFjLCAweGE2LCAweGI0LCAweGM2CisJLmJ5dGUJMHhlOCwgMHhkZCwgMHg3NCwgMHgxZiwgMHg0YiwgMHhiZCwgMHg4YiwgMHg4YQorCS5ieXRlCTB4NzAsIDB4M2UsIDB4YjUsIDB4NjYsIDB4NDgsIDB4MDMsIDB4ZjYsIDB4MGUKKwkuYnl0ZQkweDYxLCAweDM1LCAweDU3LCAweGI5LCAweDg2LCAweGMxLCAweDFkLCAweDllCisJLmJ5dGUJMHhlMSwgMHhmOCwgMHg5OCwgMHgxMSwgMHg2OSwgMHhkOSwgMHg4ZSwgMHg5NAorCS5ieXRlCTB4OWIsIDB4MWUsIDB4ODcsIDB4ZTksIDB4Y2UsIDB4NTUsIDB4MjgsIDB4ZGYKKwkuYnl0ZQkweDhjLCAweGExLCAweDg5LCAweDBkLCAweGJmLCAweGU2LCAweDQyLCAweDY4CisJLmJ5dGUJMHg0MSwgMHg5OSwgMHgyZCwgMHgwZiwgMHhiMCwgMHg1NCwgMHhiYiwgMHgxNgorLnR5cGUJQUVTX1RlLCNvYmplY3QKKy5zaXplCUFFU19UZSwoLi1BRVNfVGUpCisKKy5hbGlnbgk2NAorLnNraXAJMTYKK19zcGFyY3Y5X0FFU19lbmNyeXB0OgorCXNhdmUJJXNwLC0kZnJhbWUtJGxvY2Fscywlc3AKKwlzdHgJJWk3LFslc3ArJGJpYXMrJGZyYW1lKzBdCSEgb2ZmLWxvYWQgcmV0dXJuIGFkZHJlc3MKKwlsZAlbJGtleSsyNDBdLCRyb3VuZHMKKwlsZAlbJGtleSswXSwkdDAKKwlsZAlbJGtleSs0XSwkdDEJCQkhCisJbGQJWyRrZXkrOF0sJHQyCisJc3JsCSRyb3VuZHMsMSwkcm91bmRzCisJeG9yCSR0MCwkczAsJHMwCisJbGQJWyRrZXkrMTJdLCR0MworCXNybAkkczAsMjEsJGFjYzAKKwl4b3IJJHQxLCRzMSwkczEKKwlsZAlbJGtleSsxNl0sJHQwCisJc3JsCSRzMSwxMywkYWNjMQkJCSEKKwl4b3IJJHQyLCRzMiwkczIKKwlsZAlbJGtleSsyMF0sJHQxCisJeG9yCSR0MywkczMsJHMzCisJbGQJWyRrZXkrMjRdLCR0MgorCWFuZAkkYWNjMCwyMDQwLCRhY2MwCisJbGQJWyRrZXkrMjhdLCR0MworCW5vcAorLkxlbmNfbG9vcDoKKwlzcmwJJHMyLDUsJGFjYzIJCQkhCisJYW5kCSRhY2MxLDIwNDAsJGFjYzEKKwlsZHgJWyR0YmwrJGFjYzBdLCRhY2MwCisJc2xsCSRzMywzLCRhY2MzCisJYW5kCSRhY2MyLDIwNDAsJGFjYzIKKwlsZHgJWyR0YmwrJGFjYzFdLCRhY2MxCisJc3JsCSRzMSwyMSwkYWNjNAorCWFuZAkkYWNjMywyMDQwLCRhY2MzCisJbGR4CVskdGJsKyRhY2MyXSwkYWNjMgkJIQorCXNybAkkczIsMTMsJGFjYzUKKwlhbmQJJGFjYzQsMjA0MCwkYWNjNAorCWxkeAlbJHRibCskYWNjM10sJGFjYzMKKwlzcmwJJHMzLDUsJGFjYzYKKwlhbmQJJGFjYzUsMjA0MCwkYWNjNQorCWxkeAlbJHRibCskYWNjNF0sJGFjYzQKKwlmbW92cwklZjAsJWYwCisJc2xsCSRzMCwzLCRhY2M3CQkJIQorCWFuZAkkYWNjNiwyMDQwLCRhY2M2CisJbGR4CVskdGJsKyRhY2M1XSwkYWNjNQorCXNybAkkczIsMjEsJGFjYzgKKwlhbmQJJGFjYzcsMjA0MCwkYWNjNworCWxkeAlbJHRibCskYWNjNl0sJGFjYzYKKwlzcmwJJHMzLDEzLCRhY2M5CisJYW5kCSRhY2M4LDIwNDAsJGFjYzgKKwlsZHgJWyR0YmwrJGFjYzddLCRhY2M3CQkhCisJc3JsCSRzMCw1LCRhY2MxMAorCWFuZAkkYWNjOSwyMDQwLCRhY2M5CisJbGR4CVskdGJsKyRhY2M4XSwkYWNjOAorCXNsbAkkczEsMywkYWNjMTEKKwlhbmQJJGFjYzEwLDIwNDAsJGFjYzEwCisJbGR4CVskdGJsKyRhY2M5XSwkYWNjOQorCWZtb3ZzCSVmMCwlZjAKKwlzcmwJJHMzLDIxLCRhY2MxMgkJCSEKKwlhbmQJJGFjYzExLDIwNDAsJGFjYzExCisJbGR4CVskdGJsKyRhY2MxMF0sJGFjYzEwCisJc3JsCSRzMCwxMywkYWNjMTMKKwlhbmQJJGFjYzEyLDIwNDAsJGFjYzEyCisJbGR4CVskdGJsKyRhY2MxMV0sJGFjYzExCisJc3JsCSRzMSw1LCRhY2MxNAorCWFuZAkkYWNjMTMsMjA0MCwkYWNjMTMKKwlsZHgJWyR0YmwrJGFjYzEyXSwkYWNjMTIJCSEKKwlzbGwJJHMyLDMsJGFjYzE1CisJYW5kCSRhY2MxNCwyMDQwLCRhY2MxNAorCWxkeAlbJHRibCskYWNjMTNdLCRhY2MxMworCWFuZAkkYWNjMTUsMjA0MCwkYWNjMTUKKwlhZGQJJGtleSwzMiwka2V5CisJbGR4CVskdGJsKyRhY2MxNF0sJGFjYzE0CisJZm1vdnMJJWYwLCVmMAorCXN1YmNjCSRyb3VuZHMsMSwkcm91bmRzCQkhCisJbGR4CVskdGJsKyRhY2MxNV0sJGFjYzE1CisJYnosYSxwbgklaWNjLC5MZW5jX2xhc3QKKwlhZGQJJHRibCwyMDQ4LCRyb3VuZHMKKworCQlzcmx4CSRhY2MxLDgsJGFjYzEKKwkJeG9yCSRhY2MwLCR0MCwkdDAKKwlsZAlbJGtleSswXSwkczAKKwlmbW92cwklZjAsJWYwCisJCXNybHgJJGFjYzIsMTYsJGFjYzIJCSEKKwkJeG9yCSRhY2MxLCR0MCwkdDAKKwlsZAlbJGtleSs0XSwkczEKKwkJc3JseAkkYWNjMywyNCwkYWNjMworCQl4b3IJJGFjYzIsJHQwLCR0MAorCWxkCVska2V5KzhdLCRzMgorCQlzcmx4CSRhY2M1LDgsJGFjYzUKKwkJeG9yCSRhY2MzLCR0MCwkdDAKKwlsZAlbJGtleSsxMl0sJHMzCQkJIQorCQlzcmx4CSRhY2M2LDE2LCRhY2M2CisJCXhvcgkkYWNjNCwkdDEsJHQxCisJZm1vdnMJJWYwLCVmMAorCQlzcmx4CSRhY2M3LDI0LCRhY2M3CisJCXhvcgkkYWNjNSwkdDEsJHQxCisJCXNybHgJJGFjYzksOCwkYWNjOQorCQl4b3IJJGFjYzYsJHQxLCR0MQorCQlzcmx4CSRhY2MxMCwxNiwkYWNjMTAJIQorCQl4b3IJJGFjYzcsJHQxLCR0MQorCQlzcmx4CSRhY2MxMSwyNCwkYWNjMTEKKwkJeG9yCSRhY2M4LCR0MiwkdDIKKwkJc3JseAkkYWNjMTMsOCwkYWNjMTMKKwkJeG9yCSRhY2M5LCR0MiwkdDIKKwkJc3JseAkkYWNjMTQsMTYsJGFjYzE0CisJCXhvcgkkYWNjMTAsJHQyLCR0MgorCQlzcmx4CSRhY2MxNSwyNCwkYWNjMTUJIQorCQl4b3IJJGFjYzExLCR0MiwkdDIKKwkJeG9yCSRhY2MxMiwkYWNjMTQsJGFjYzE0CisJCXhvcgkkYWNjMTMsJHQzLCR0MworCXNybAkkdDAsMjEsJGFjYzAKKwkJeG9yCSRhY2MxNCwkdDMsJHQzCisJc3JsCSR0MSwxMywkYWNjMQorCQl4b3IJJGFjYzE1LCR0MywkdDMKKworCWFuZAkkYWNjMCwyMDQwLCRhY2MwCQkhCisJc3JsCSR0Miw1LCRhY2MyCisJYW5kCSRhY2MxLDIwNDAsJGFjYzEKKwlsZHgJWyR0YmwrJGFjYzBdLCRhY2MwCisJc2xsCSR0MywzLCRhY2MzCisJYW5kCSRhY2MyLDIwNDAsJGFjYzIKKwlsZHgJWyR0YmwrJGFjYzFdLCRhY2MxCisJZm1vdnMJJWYwLCVmMAorCXNybAkkdDEsMjEsJGFjYzQJCQkhCisJYW5kCSRhY2MzLDIwNDAsJGFjYzMKKwlsZHgJWyR0YmwrJGFjYzJdLCRhY2MyCisJc3JsCSR0MiwxMywkYWNjNQorCWFuZAkkYWNjNCwyMDQwLCRhY2M0CisJbGR4CVskdGJsKyRhY2MzXSwkYWNjMworCXNybAkkdDMsNSwkYWNjNgorCWFuZAkkYWNjNSwyMDQwLCRhY2M1CisJbGR4CVskdGJsKyRhY2M0XSwkYWNjNAkJIQorCXNsbAkkdDAsMywkYWNjNworCWFuZAkkYWNjNiwyMDQwLCRhY2M2CisJbGR4CVskdGJsKyRhY2M1XSwkYWNjNQorCXNybAkkdDIsMjEsJGFjYzgKKwlhbmQJJGFjYzcsMjA0MCwkYWNjNworCWxkeAlbJHRibCskYWNjNl0sJGFjYzYKKwlmbW92cwklZjAsJWYwCisJc3JsCSR0MywxMywkYWNjOQkJCSEKKwlhbmQJJGFjYzgsMjA0MCwkYWNjOAorCWxkeAlbJHRibCskYWNjN10sJGFjYzcKKwlzcmwJJHQwLDUsJGFjYzEwCisJYW5kCSRhY2M5LDIwNDAsJGFjYzkKKwlsZHgJWyR0YmwrJGFjYzhdLCRhY2M4CisJc2xsCSR0MSwzLCRhY2MxMQorCWFuZAkkYWNjMTAsMjA0MCwkYWNjMTAKKwlsZHgJWyR0YmwrJGFjYzldLCRhY2M5CQkhCisJc3JsCSR0MywyMSwkYWNjMTIKKwlhbmQJJGFjYzExLDIwNDAsJGFjYzExCisJbGR4CVskdGJsKyRhY2MxMF0sJGFjYzEwCisJc3JsCSR0MCwxMywkYWNjMTMKKwlhbmQJJGFjYzEyLDIwNDAsJGFjYzEyCisJbGR4CVskdGJsKyRhY2MxMV0sJGFjYzExCisJZm1vdnMJJWYwLCVmMAorCXNybAkkdDEsNSwkYWNjMTQJCQkhCisJYW5kCSRhY2MxMywyMDQwLCRhY2MxMworCWxkeAlbJHRibCskYWNjMTJdLCRhY2MxMgorCXNsbAkkdDIsMywkYWNjMTUKKwlhbmQJJGFjYzE0LDIwNDAsJGFjYzE0CisJbGR4CVskdGJsKyRhY2MxM10sJGFjYzEzCisJCXNybHgJJGFjYzEsOCwkYWNjMQorCWFuZAkkYWNjMTUsMjA0MCwkYWNjMTUKKwlsZHgJWyR0YmwrJGFjYzE0XSwkYWNjMTQJCSEKKworCQlzcmx4CSRhY2MyLDE2LCRhY2MyCisJCXhvcgkkYWNjMCwkczAsJHMwCisJbGR4CVskdGJsKyRhY2MxNV0sJGFjYzE1CisJCXNybHgJJGFjYzMsMjQsJGFjYzMKKwkJeG9yCSRhY2MxLCRzMCwkczAKKwlsZAlbJGtleSsxNl0sJHQwCisJZm1vdnMJJWYwLCVmMAorCQlzcmx4CSRhY2M1LDgsJGFjYzUJCSEKKwkJeG9yCSRhY2MyLCRzMCwkczAKKwlsZAlbJGtleSsyMF0sJHQxCisJCXNybHgJJGFjYzYsMTYsJGFjYzYKKwkJeG9yCSRhY2MzLCRzMCwkczAKKwlsZAlbJGtleSsyNF0sJHQyCisJCXNybHgJJGFjYzcsMjQsJGFjYzcKKwkJeG9yCSRhY2M0LCRzMSwkczEKKwlsZAlbJGtleSsyOF0sJHQzCQkJIQorCQlzcmx4CSRhY2M5LDgsJGFjYzkKKwkJeG9yCSRhY2M1LCRzMSwkczEKKwlsZHgJWyR0YmwrMjA0OCswXSwlZzAJCSEgcHJlZmV0Y2ggdGU0CisJCXNybHgJJGFjYzEwLDE2LCRhY2MxMAorCQl4b3IJJGFjYzYsJHMxLCRzMQorCWxkeAlbJHRibCsyMDQ4KzMyXSwlZzAJCSEgcHJlZmV0Y2ggdGU0CisJCXNybHgJJGFjYzExLDI0LCRhY2MxMQorCQl4b3IJJGFjYzcsJHMxLCRzMQorCWxkeAlbJHRibCsyMDQ4KzY0XSwlZzAJCSEgcHJlZmV0Y2ggdGU0CisJCXNybHgJJGFjYzEzLDgsJGFjYzEzCisJCXhvcgkkYWNjOCwkczIsJHMyCisJbGR4CVskdGJsKzIwNDgrOTZdLCVnMAkJISBwcmVmZXRjaCB0ZTQKKwkJc3JseAkkYWNjMTQsMTYsJGFjYzE0CSEKKwkJeG9yCSRhY2M5LCRzMiwkczIKKwlsZHgJWyR0YmwrMjA0OCsxMjhdLCVnMAkJISBwcmVmZXRjaCB0ZTQKKwkJc3JseAkkYWNjMTUsMjQsJGFjYzE1CisJCXhvcgkkYWNjMTAsJHMyLCRzMgorCWxkeAlbJHRibCsyMDQ4KzE2MF0sJWcwCQkhIHByZWZldGNoIHRlNAorCXNybAkkczAsMjEsJGFjYzAKKwkJeG9yCSRhY2MxMSwkczIsJHMyCisJbGR4CVskdGJsKzIwNDgrMTkyXSwlZzAJCSEgcHJlZmV0Y2ggdGU0CisJCXhvcgkkYWNjMTIsJGFjYzE0LCRhY2MxNAorCQl4b3IJJGFjYzEzLCRzMywkczMKKwlsZHgJWyR0YmwrMjA0OCsyMjRdLCVnMAkJISBwcmVmZXRjaCB0ZTQKKwlzcmwJJHMxLDEzLCRhY2MxCQkJIQorCQl4b3IJJGFjYzE0LCRzMywkczMKKwkJeG9yCSRhY2MxNSwkczMsJHMzCisJYmEJLkxlbmNfbG9vcAorCWFuZAkkYWNjMCwyMDQwLCRhY2MwCisKKy5hbGlnbgkzMgorLkxlbmNfbGFzdDoKKwkJc3JseAkkYWNjMSw4LCRhY2MxCQkhCisJCXhvcgkkYWNjMCwkdDAsJHQwCisJbGQJWyRrZXkrMF0sJHMwCisJCXNybHgJJGFjYzIsMTYsJGFjYzIKKwkJeG9yCSRhY2MxLCR0MCwkdDAKKwlsZAlbJGtleSs0XSwkczEKKwkJc3JseAkkYWNjMywyNCwkYWNjMworCQl4b3IJJGFjYzIsJHQwLCR0MAorCWxkCVska2V5KzhdLCRzMgkJCSEKKwkJc3JseAkkYWNjNSw4LCRhY2M1CisJCXhvcgkkYWNjMywkdDAsJHQwCisJbGQJWyRrZXkrMTJdLCRzMworCQlzcmx4CSRhY2M2LDE2LCRhY2M2CisJCXhvcgkkYWNjNCwkdDEsJHQxCisJCXNybHgJJGFjYzcsMjQsJGFjYzcKKwkJeG9yCSRhY2M1LCR0MSwkdDEKKwkJc3JseAkkYWNjOSw4LCRhY2M5CQkhCisJCXhvcgkkYWNjNiwkdDEsJHQxCisJCXNybHgJJGFjYzEwLDE2LCRhY2MxMAorCQl4b3IJJGFjYzcsJHQxLCR0MQorCQlzcmx4CSRhY2MxMSwyNCwkYWNjMTEKKwkJeG9yCSRhY2M4LCR0MiwkdDIKKwkJc3JseAkkYWNjMTMsOCwkYWNjMTMKKwkJeG9yCSRhY2M5LCR0MiwkdDIKKwkJc3JseAkkYWNjMTQsMTYsJGFjYzE0CSEKKwkJeG9yCSRhY2MxMCwkdDIsJHQyCisJCXNybHgJJGFjYzE1LDI0LCRhY2MxNQorCQl4b3IJJGFjYzExLCR0MiwkdDIKKwkJeG9yCSRhY2MxMiwkYWNjMTQsJGFjYzE0CisJCXhvcgkkYWNjMTMsJHQzLCR0MworCXNybAkkdDAsMjQsJGFjYzAKKwkJeG9yCSRhY2MxNCwkdDMsJHQzCisJc3JsCSR0MSwxNiwkYWNjMQkJCSEKKwkJeG9yCSRhY2MxNSwkdDMsJHQzCisKKwlzcmwJJHQyLDgsJGFjYzIKKwlhbmQJJGFjYzEsMjU1LCRhY2MxCisJbGR1YglbJHJvdW5kcyskYWNjMF0sJGFjYzAKKwlzcmwJJHQxLDI0LCRhY2M0CisJYW5kCSRhY2MyLDI1NSwkYWNjMgorCWxkdWIJWyRyb3VuZHMrJGFjYzFdLCRhY2MxCisJc3JsCSR0MiwxNiwkYWNjNQkJCSEKKwlhbmQJJHQzLDI1NSwkYWNjMworCWxkdWIJWyRyb3VuZHMrJGFjYzJdLCRhY2MyCisJbGR1YglbJHJvdW5kcyskYWNjM10sJGFjYzMKKwlzcmwJJHQzLDgsJGFjYzYKKwlhbmQJJGFjYzUsMjU1LCRhY2M1CisJbGR1YglbJHJvdW5kcyskYWNjNF0sJGFjYzQKKwlmbW92cwklZjAsJWYwCisJc3JsCSR0MiwyNCwkYWNjOAkJCSEKKwlhbmQJJGFjYzYsMjU1LCRhY2M2CisJbGR1YglbJHJvdW5kcyskYWNjNV0sJGFjYzUKKwlzcmwJJHQzLDE2LCRhY2M5CisJYW5kCSR0MCwyNTUsJGFjYzcKKwlsZHViCVskcm91bmRzKyRhY2M2XSwkYWNjNgorCWxkdWIJWyRyb3VuZHMrJGFjYzddLCRhY2M3CisJZm1vdnMJJWYwLCVmMAorCXNybAkkdDAsOCwkYWNjMTAJCQkhCisJYW5kCSRhY2M5LDI1NSwkYWNjOQorCWxkdWIJWyRyb3VuZHMrJGFjYzhdLCRhY2M4CisJc3JsCSR0MywyNCwkYWNjMTIKKwlhbmQJJGFjYzEwLDI1NSwkYWNjMTAKKwlsZHViCVskcm91bmRzKyRhY2M5XSwkYWNjOQorCXNybAkkdDAsMTYsJGFjYzEzCisJYW5kCSR0MSwyNTUsJGFjYzExCisJbGR1YglbJHJvdW5kcyskYWNjMTBdLCRhY2MxMAkJIQorCXNybAkkdDEsOCwkYWNjMTQKKwlhbmQJJGFjYzEzLDI1NSwkYWNjMTMKKwlsZHViCVskcm91bmRzKyRhY2MxMV0sJGFjYzExCisJbGR1YglbJHJvdW5kcyskYWNjMTJdLCRhY2MxMgorCWFuZAkkYWNjMTQsMjU1LCRhY2MxNAorCWxkdWIJWyRyb3VuZHMrJGFjYzEzXSwkYWNjMTMKKwlhbmQJJHQyLDI1NSwkYWNjMTUKKwlsZHViCVskcm91bmRzKyRhY2MxNF0sJGFjYzE0CQkhCisKKwkJc2xsCSRhY2MwLDI0LCRhY2MwCisJCXhvcgkkYWNjMywkczAsJHMwCisJbGR1YglbJHJvdW5kcyskYWNjMTVdLCRhY2MxNQorCQlzbGwJJGFjYzEsMTYsJGFjYzEKKwkJeG9yCSRhY2MwLCRzMCwkczAKKwlsZHgJWyVzcCskYmlhcyskZnJhbWUrMF0sJWk3CSEgcmVzdG9yZSByZXR1cm4gYWRkcmVzcworCWZtb3ZzCSVmMCwlZjAKKwkJc2xsCSRhY2MyLDgsJGFjYzIJCSEKKwkJeG9yCSRhY2MxLCRzMCwkczAKKwkJc2xsCSRhY2M0LDI0LCRhY2M0CisJCXhvcgkkYWNjMiwkczAsJHMwCisJCXNsbAkkYWNjNSwxNiwkYWNjNQorCQl4b3IJJGFjYzcsJHMxLCRzMQorCQlzbGwJJGFjYzYsOCwkYWNjNgorCQl4b3IJJGFjYzQsJHMxLCRzMQorCQlzbGwJJGFjYzgsMjQsJGFjYzgJCSEKKwkJeG9yCSRhY2M1LCRzMSwkczEKKwkJc2xsCSRhY2M5LDE2LCRhY2M5CisJCXhvcgkkYWNjMTEsJHMyLCRzMgorCQlzbGwJJGFjYzEwLDgsJGFjYzEwCisJCXhvcgkkYWNjNiwkczEsJHMxCisJCXNsbAkkYWNjMTIsMjQsJGFjYzEyCisJCXhvcgkkYWNjOCwkczIsJHMyCisJCXNsbAkkYWNjMTMsMTYsJGFjYzEzCSEKKwkJeG9yCSRhY2M5LCRzMiwkczIKKwkJc2xsCSRhY2MxNCw4LCRhY2MxNAorCQl4b3IJJGFjYzEwLCRzMiwkczIKKwkJeG9yCSRhY2MxMiwkYWNjMTQsJGFjYzE0CisJCXhvcgkkYWNjMTMsJHMzLCRzMworCQl4b3IJJGFjYzE0LCRzMywkczMKKwkJeG9yCSRhY2MxNSwkczMsJHMzCisKKwlyZXQKKwlyZXN0b3JlCisudHlwZQlfc3BhcmN2OV9BRVNfZW5jcnlwdCwjZnVuY3Rpb24KKy5zaXplCV9zcGFyY3Y5X0FFU19lbmNyeXB0LCguLV9zcGFyY3Y5X0FFU19lbmNyeXB0KQorCisuYWxpZ24JMzIKKy5nbG9ibAlBRVNfZW5jcnlwdAorQUVTX2VuY3J5cHQ6CisJb3IJJW8wLCVvMSwlZzEKKwlhbmRjYwklZzEsMywlZzAKKwlibnoscG4JJXhjYywuTHVuYWxpZ25lZF9lbmMKKwlzYXZlCSVzcCwtJGZyYW1lLCVzcAorCisJbGQJWyVpMCswXSwlbzAKKwlsZAlbJWkwKzRdLCVvMQorCWxkCVslaTArOF0sJW8yCisJbGQJWyVpMCsxMl0sJW8zCisKKzE6CWNhbGwJLis4CisJYWRkCSVvNyxBRVNfVGUtMWIsJW80CisJY2FsbAlfc3BhcmN2OV9BRVNfZW5jcnlwdAorCW1vdgklaTIsJW81CisKKwlzdAklbzAsWyVpMSswXQorCXN0CSVvMSxbJWkxKzRdCisJc3QJJW8yLFslaTErOF0KKwlzdAklbzMsWyVpMSsxMl0KKworCXJldAorCXJlc3RvcmUKKworLmFsaWduCTMyCisuTHVuYWxpZ25lZF9lbmM6CisJbGR1YglbJWkwKzBdLCVsMAorCWxkdWIJWyVpMCsxXSwlbDEKKwlsZHViCVslaTArMl0sJWwyCisKKwlzbGwJJWwwLDI0LCVsMAorCWxkdWIJWyVpMCszXSwlbDMKKwlzbGwJJWwxLDE2LCVsMQorCWxkdWIJWyVpMCs0XSwlbDQKKwlzbGwJJWwyLDgsJWwyCisJb3IJJWwxLCVsMCwlbDAKKwlsZHViCVslaTArNV0sJWw1CisJc2xsCSVsNCwyNCwlbDQKKwlvcgklbDMsJWwyLCVsMgorCWxkdWIJWyVpMCs2XSwlbDYKKwlzbGwJJWw1LDE2LCVsNQorCW9yCSVsMCwlbDIsJW8wCisJbGR1YglbJWkwKzddLCVsNworCisJc2xsCSVsNiw4LCVsNgorCW9yCSVsNSwlbDQsJWw0CisJbGR1YglbJWkwKzhdLCVsMAorCW9yCSVsNywlbDYsJWw2CisJbGR1YglbJWkwKzldLCVsMQorCW9yCSVsNCwlbDYsJW8xCisJbGR1YglbJWkwKzEwXSwlbDIKKworCXNsbAklbDAsMjQsJWwwCisJbGR1YglbJWkwKzExXSwlbDMKKwlzbGwJJWwxLDE2LCVsMQorCWxkdWIJWyVpMCsxMl0sJWw0CisJc2xsCSVsMiw4LCVsMgorCW9yCSVsMSwlbDAsJWwwCisJbGR1YglbJWkwKzEzXSwlbDUKKwlzbGwJJWw0LDI0LCVsNAorCW9yCSVsMywlbDIsJWwyCisJbGR1YglbJWkwKzE0XSwlbDYKKwlzbGwJJWw1LDE2LCVsNQorCW9yCSVsMCwlbDIsJW8yCisJbGR1YglbJWkwKzE1XSwlbDcKKworCXNsbAklbDYsOCwlbDYKKwlvcgklbDUsJWw0LCVsNAorCW9yCSVsNywlbDYsJWw2CisJb3IJJWw0LCVsNiwlbzMKKworMToJY2FsbAkuKzgKKwlhZGQJJW83LEFFU19UZS0xYiwlbzQKKwljYWxsCV9zcGFyY3Y5X0FFU19lbmNyeXB0CisJbW92CSVpMiwlbzUKKworCXNybAklbzAsMjQsJWwwCisJc3JsCSVvMCwxNiwlbDEKKwlzdGIJJWwwLFslaTErMF0KKwlzcmwJJW8wLDgsJWwyCisJc3RiCSVsMSxbJWkxKzFdCisJc3RiCSVsMixbJWkxKzJdCisJc3JsCSVvMSwyNCwlbDQKKwlzdGIJJW8wLFslaTErM10KKworCXNybAklbzEsMTYsJWw1CisJc3RiCSVsNCxbJWkxKzRdCisJc3JsCSVvMSw4LCVsNgorCXN0YgklbDUsWyVpMSs1XQorCXN0YgklbDYsWyVpMSs2XQorCXNybAklbzIsMjQsJWwwCisJc3RiCSVvMSxbJWkxKzddCisKKwlzcmwJJW8yLDE2LCVsMQorCXN0YgklbDAsWyVpMSs4XQorCXNybAklbzIsOCwlbDIKKwlzdGIJJWwxLFslaTErOV0KKwlzdGIJJWwyLFslaTErMTBdCisJc3JsCSVvMywyNCwlbDQKKwlzdGIJJW8yLFslaTErMTFdCisKKwlzcmwJJW8zLDE2LCVsNQorCXN0YgklbDQsWyVpMSsxMl0KKwlzcmwJJW8zLDgsJWw2CisJc3RiCSVsNSxbJWkxKzEzXQorCXN0YgklbDYsWyVpMSsxNF0KKwlzdGIJJW8zLFslaTErMTVdCisKKwlyZXQKKwlyZXN0b3JlCisudHlwZQlBRVNfZW5jcnlwdCwjZnVuY3Rpb24KKy5zaXplCUFFU19lbmNyeXB0LCguLUFFU19lbmNyeXB0KQorCitfX18KKworJGNvZGUuPTw8X19fOworLmFsaWduCTI1NgorQUVTX1RkOgorX19fCismX2RhdGFfd29yZCgKKwkweDUxZjRhNzUwLCAweDdlNDE2NTUzLCAweDFhMTdhNGMzLCAweDNhMjc1ZTk2LAorCTB4M2JhYjZiY2IsIDB4MWY5ZDQ1ZjEsIDB4YWNmYTU4YWIsIDB4NGJlMzAzOTMsCisJMHgyMDMwZmE1NSwgMHhhZDc2NmRmNiwgMHg4OGNjNzY5MSwgMHhmNTAyNGMyNSwKKwkweDRmZTVkN2ZjLCAweGM1MmFjYmQ3LCAweDI2MzU0NDgwLCAweGI1NjJhMzhmLAorCTB4ZGViMTVhNDksIDB4MjViYTFiNjcsIDB4NDVlYTBlOTgsIDB4NWRmZWMwZTEsCisJMHhjMzJmNzUwMiwgMHg4MTRjZjAxMiwgMHg4ZDQ2OTdhMywgMHg2YmQzZjljNiwKKwkweDAzOGY1ZmU3LCAweDE1OTI5Yzk1LCAweGJmNmQ3YWViLCAweDk1NTI1OWRhLAorCTB4ZDRiZTgzMmQsIDB4NTg3NDIxZDMsIDB4NDllMDY5MjksIDB4OGVjOWM4NDQsCisJMHg3NWMyODk2YSwgMHhmNDhlNzk3OCwgMHg5OTU4M2U2YiwgMHgyN2I5NzFkZCwKKwkweGJlZTE0ZmI2LCAweGYwODhhZDE3LCAweGM5MjBhYzY2LCAweDdkY2UzYWI0LAorCTB4NjNkZjRhMTgsIDB4ZTUxYTMxODIsIDB4OTc1MTMzNjAsIDB4NjI1MzdmNDUsCisJMHhiMTY0NzdlMCwgMHhiYjZiYWU4NCwgMHhmZTgxYTAxYywgMHhmOTA4MmI5NCwKKwkweDcwNDg2ODU4LCAweDhmNDVmZDE5LCAweDk0ZGU2Yzg3LCAweDUyN2JmOGI3LAorCTB4YWI3M2QzMjMsIDB4NzI0YjAyZTIsIDB4ZTMxZjhmNTcsIDB4NjY1NWFiMmEsCisJMHhiMmViMjgwNywgMHgyZmI1YzIwMywgMHg4NmM1N2I5YSwgMHhkMzM3MDhhNSwKKwkweDMwMjg4N2YyLCAweDIzYmZhNWIyLCAweDAyMDM2YWJhLCAweGVkMTY4MjVjLAorCTB4OGFjZjFjMmIsIDB4YTc3OWI0OTIsIDB4ZjMwN2YyZjAsIDB4NGU2OWUyYTEsCisJMHg2NWRhZjRjZCwgMHgwNjA1YmVkNSwgMHhkMTM0NjIxZiwgMHhjNGE2ZmU4YSwKKwkweDM0MmU1MzlkLCAweGEyZjM1NWEwLCAweDA1OGFlMTMyLCAweGE0ZjZlYjc1LAorCTB4MGI4M2VjMzksIDB4NDA2MGVmYWEsIDB4NWU3MTlmMDYsIDB4YmQ2ZTEwNTEsCisJMHgzZTIxOGFmOSwgMHg5NmRkMDYzZCwgMHhkZDNlMDVhZSwgMHg0ZGU2YmQ0NiwKKwkweDkxNTQ4ZGI1LCAweDcxYzQ1ZDA1LCAweDA0MDZkNDZmLCAweDYwNTAxNWZmLAorCTB4MTk5OGZiMjQsIDB4ZDZiZGU5OTcsIDB4ODk0MDQzY2MsIDB4NjdkOTllNzcsCisJMHhiMGU4NDJiZCwgMHgwNzg5OGI4OCwgMHhlNzE5NWIzOCwgMHg3OWM4ZWVkYiwKKwkweGExN2MwYTQ3LCAweDdjNDIwZmU5LCAweGY4ODQxZWM5LCAweDAwMDAwMDAwLAorCTB4MDk4MDg2ODMsIDB4MzIyYmVkNDgsIDB4MWUxMTcwYWMsIDB4NmM1YTcyNGUsCisJMHhmZDBlZmZmYiwgMHgwZjg1Mzg1NiwgMHgzZGFlZDUxZSwgMHgzNjJkMzkyNywKKwkweDBhMGZkOTY0LCAweDY4NWNhNjIxLCAweDliNWI1NGQxLCAweDI0MzYyZTNhLAorCTB4MGMwYTY3YjEsIDB4OTM1N2U3MGYsIDB4YjRlZTk2ZDIsIDB4MWI5YjkxOWUsCisJMHg4MGMwYzU0ZiwgMHg2MWRjMjBhMiwgMHg1YTc3NGI2OSwgMHgxYzEyMWExNiwKKwkweGUyOTNiYTBhLCAweGMwYTAyYWU1LCAweDNjMjJlMDQzLCAweDEyMWIxNzFkLAorCTB4MGUwOTBkMGIsIDB4ZjI4YmM3YWQsIDB4MmRiNmE4YjksIDB4MTQxZWE5YzgsCisJMHg1N2YxMTk4NSwgMHhhZjc1MDc0YywgMHhlZTk5ZGRiYiwgMHhhMzdmNjBmZCwKKwkweGY3MDEyNjlmLCAweDVjNzJmNWJjLCAweDQ0NjYzYmM1LCAweDViZmI3ZTM0LAorCTB4OGI0MzI5NzYsIDB4Y2IyM2M2ZGMsIDB4YjZlZGZjNjgsIDB4YjhlNGYxNjMsCisJMHhkNzMxZGNjYSwgMHg0MjYzODUxMCwgMHgxMzk3MjI0MCwgMHg4NGM2MTEyMCwKKwkweDg1NGEyNDdkLCAweGQyYmIzZGY4LCAweGFlZjkzMjExLCAweGM3MjlhMTZkLAorCTB4MWQ5ZTJmNGIsIDB4ZGNiMjMwZjMsIDB4MGQ4NjUyZWMsIDB4NzdjMWUzZDAsCisJMHgyYmIzMTY2YywgMHhhOTcwYjk5OSwgMHgxMTk0NDhmYSwgMHg0N2U5NjQyMiwKKwkweGE4ZmM4Y2M0LCAweGEwZjAzZjFhLCAweDU2N2QyY2Q4LCAweDIyMzM5MGVmLAorCTB4ODc0OTRlYzcsIDB4ZDkzOGQxYzEsIDB4OGNjYWEyZmUsIDB4OThkNDBiMzYsCisJMHhhNmY1ODFjZiwgMHhhNTdhZGUyOCwgMHhkYWI3OGUyNiwgMHgzZmFkYmZhNCwKKwkweDJjM2E5ZGU0LCAweDUwNzg5MjBkLCAweDZhNWZjYzliLCAweDU0N2U0NjYyLAorCTB4ZjY4ZDEzYzIsIDB4OTBkOGI4ZTgsIDB4MmUzOWY3NWUsIDB4ODJjM2FmZjUsCisJMHg5ZjVkODBiZSwgMHg2OWQwOTM3YywgMHg2ZmQ1MmRhOSwgMHhjZjI1MTJiMywKKwkweGM4YWM5OTNiLCAweDEwMTg3ZGE3LCAweGU4OWM2MzZlLCAweGRiM2JiYjdiLAorCTB4Y2QyNjc4MDksIDB4NmU1OTE4ZjQsIDB4ZWM5YWI3MDEsIDB4ODM0ZjlhYTgsCisJMHhlNjk1NmU2NSwgMHhhYWZmZTY3ZSwgMHgyMWJjY2YwOCwgMHhlZjE1ZThlNiwKKwkweGJhZTc5YmQ5LCAweDRhNmYzNmNlLCAweGVhOWYwOWQ0LCAweDI5YjA3Y2Q2LAorCTB4MzFhNGIyYWYsIDB4MmEzZjIzMzEsIDB4YzZhNTk0MzAsIDB4MzVhMjY2YzAsCisJMHg3NDRlYmMzNywgMHhmYzgyY2FhNiwgMHhlMDkwZDBiMCwgMHgzM2E3ZDgxNSwKKwkweGYxMDQ5ODRhLCAweDQxZWNkYWY3LCAweDdmY2Q1MDBlLCAweDE3OTFmNjJmLAorCTB4NzY0ZGQ2OGQsIDB4NDNlZmIwNGQsIDB4Y2NhYTRkNTQsIDB4ZTQ5NjA0ZGYsCisJMHg5ZWQxYjVlMywgMHg0YzZhODgxYiwgMHhjMTJjMWZiOCwgMHg0NjY1NTE3ZiwKKwkweDlkNWVlYTA0LCAweDAxOGMzNTVkLCAweGZhODc3NDczLCAweGZiMGI0MTJlLAorCTB4YjM2NzFkNWEsIDB4OTJkYmQyNTIsIDB4ZTkxMDU2MzMsIDB4NmRkNjQ3MTMsCisJMHg5YWQ3NjE4YywgMHgzN2ExMGM3YSwgMHg1OWY4MTQ4ZSwgMHhlYjEzM2M4OSwKKwkweGNlYTkyN2VlLCAweGI3NjFjOTM1LCAweGUxMWNlNWVkLCAweDdhNDdiMTNjLAorCTB4OWNkMmRmNTksIDB4NTVmMjczM2YsIDB4MTgxNGNlNzksIDB4NzNjNzM3YmYsCisJMHg1M2Y3Y2RlYSwgMHg1ZmZkYWE1YiwgMHhkZjNkNmYxNCwgMHg3ODQ0ZGI4NiwKKwkweGNhYWZmMzgxLCAweGI5NjhjNDNlLCAweDM4MjQzNDJjLCAweGMyYTM0MDVmLAorCTB4MTYxZGMzNzIsIDB4YmNlMjI1MGMsIDB4MjgzYzQ5OGIsIDB4ZmYwZDk1NDEsCisJMHgzOWE4MDE3MSwgMHgwODBjYjNkZSwgMHhkOGI0ZTQ5YywgMHg2NDU2YzE5MCwKKwkweDdiY2I4NDYxLCAweGQ1MzJiNjcwLCAweDQ4NmM1Yzc0LCAweGQwYjg1NzQyKTsKKyRjb2RlLj08PF9fXzsKKwkuYnl0ZQkweDUyLCAweDA5LCAweDZhLCAweGQ1LCAweDMwLCAweDM2LCAweGE1LCAweDM4CisJLmJ5dGUJMHhiZiwgMHg0MCwgMHhhMywgMHg5ZSwgMHg4MSwgMHhmMywgMHhkNywgMHhmYgorCS5ieXRlCTB4N2MsIDB4ZTMsIDB4MzksIDB4ODIsIDB4OWIsIDB4MmYsIDB4ZmYsIDB4ODcKKwkuYnl0ZQkweDM0LCAweDhlLCAweDQzLCAweDQ0LCAweGM0LCAweGRlLCAweGU5LCAweGNiCisJLmJ5dGUJMHg1NCwgMHg3YiwgMHg5NCwgMHgzMiwgMHhhNiwgMHhjMiwgMHgyMywgMHgzZAorCS5ieXRlCTB4ZWUsIDB4NGMsIDB4OTUsIDB4MGIsIDB4NDIsIDB4ZmEsIDB4YzMsIDB4NGUKKwkuYnl0ZQkweDA4LCAweDJlLCAweGExLCAweDY2LCAweDI4LCAweGQ5LCAweDI0LCAweGIyCisJLmJ5dGUJMHg3NiwgMHg1YiwgMHhhMiwgMHg0OSwgMHg2ZCwgMHg4YiwgMHhkMSwgMHgyNQorCS5ieXRlCTB4NzIsIDB4ZjgsIDB4ZjYsIDB4NjQsIDB4ODYsIDB4NjgsIDB4OTgsIDB4MTYKKwkuYnl0ZQkweGQ0LCAweGE0LCAweDVjLCAweGNjLCAweDVkLCAweDY1LCAweGI2LCAweDkyCisJLmJ5dGUJMHg2YywgMHg3MCwgMHg0OCwgMHg1MCwgMHhmZCwgMHhlZCwgMHhiOSwgMHhkYQorCS5ieXRlCTB4NWUsIDB4MTUsIDB4NDYsIDB4NTcsIDB4YTcsIDB4OGQsIDB4OWQsIDB4ODQKKwkuYnl0ZQkweDkwLCAweGQ4LCAweGFiLCAweDAwLCAweDhjLCAweGJjLCAweGQzLCAweDBhCisJLmJ5dGUJMHhmNywgMHhlNCwgMHg1OCwgMHgwNSwgMHhiOCwgMHhiMywgMHg0NSwgMHgwNgorCS5ieXRlCTB4ZDAsIDB4MmMsIDB4MWUsIDB4OGYsIDB4Y2EsIDB4M2YsIDB4MGYsIDB4MDIKKwkuYnl0ZQkweGMxLCAweGFmLCAweGJkLCAweDAzLCAweDAxLCAweDEzLCAweDhhLCAweDZiCisJLmJ5dGUJMHgzYSwgMHg5MSwgMHgxMSwgMHg0MSwgMHg0ZiwgMHg2NywgMHhkYywgMHhlYQorCS5ieXRlCTB4OTcsIDB4ZjIsIDB4Y2YsIDB4Y2UsIDB4ZjAsIDB4YjQsIDB4ZTYsIDB4NzMKKwkuYnl0ZQkweDk2LCAweGFjLCAweDc0LCAweDIyLCAweGU3LCAweGFkLCAweDM1LCAweDg1CisJLmJ5dGUJMHhlMiwgMHhmOSwgMHgzNywgMHhlOCwgMHgxYywgMHg3NSwgMHhkZiwgMHg2ZQorCS5ieXRlCTB4NDcsIDB4ZjEsIDB4MWEsIDB4NzEsIDB4MWQsIDB4MjksIDB4YzUsIDB4ODkKKwkuYnl0ZQkweDZmLCAweGI3LCAweDYyLCAweDBlLCAweGFhLCAweDE4LCAweGJlLCAweDFiCisJLmJ5dGUJMHhmYywgMHg1NiwgMHgzZSwgMHg0YiwgMHhjNiwgMHhkMiwgMHg3OSwgMHgyMAorCS5ieXRlCTB4OWEsIDB4ZGIsIDB4YzAsIDB4ZmUsIDB4NzgsIDB4Y2QsIDB4NWEsIDB4ZjQKKwkuYnl0ZQkweDFmLCAweGRkLCAweGE4LCAweDMzLCAweDg4LCAweDA3LCAweGM3LCAweDMxCisJLmJ5dGUJMHhiMSwgMHgxMiwgMHgxMCwgMHg1OSwgMHgyNywgMHg4MCwgMHhlYywgMHg1ZgorCS5ieXRlCTB4NjAsIDB4NTEsIDB4N2YsIDB4YTksIDB4MTksIDB4YjUsIDB4NGEsIDB4MGQKKwkuYnl0ZQkweDJkLCAweGU1LCAweDdhLCAweDlmLCAweDkzLCAweGM5LCAweDljLCAweGVmCisJLmJ5dGUJMHhhMCwgMHhlMCwgMHgzYiwgMHg0ZCwgMHhhZSwgMHgyYSwgMHhmNSwgMHhiMAorCS5ieXRlCTB4YzgsIDB4ZWIsIDB4YmIsIDB4M2MsIDB4ODMsIDB4NTMsIDB4OTksIDB4NjEKKwkuYnl0ZQkweDE3LCAweDJiLCAweDA0LCAweDdlLCAweGJhLCAweDc3LCAweGQ2LCAweDI2CisJLmJ5dGUJMHhlMSwgMHg2OSwgMHgxNCwgMHg2MywgMHg1NSwgMHgyMSwgMHgwYywgMHg3ZAorLnR5cGUJQUVTX1RkLCNvYmplY3QKKy5zaXplCUFFU19UZCwoLi1BRVNfVGQpCisKKy5hbGlnbgk2NAorLnNraXAJMTYKK19zcGFyY3Y5X0FFU19kZWNyeXB0OgorCXNhdmUJJXNwLC0kZnJhbWUtJGxvY2Fscywlc3AKKwlzdHgJJWk3LFslc3ArJGJpYXMrJGZyYW1lKzBdCSEgb2ZmLWxvYWQgcmV0dXJuIGFkZHJlc3MKKwlsZAlbJGtleSsyNDBdLCRyb3VuZHMKKwlsZAlbJGtleSswXSwkdDAKKwlsZAlbJGtleSs0XSwkdDEJCQkhCisJbGQJWyRrZXkrOF0sJHQyCisJbGQJWyRrZXkrMTJdLCR0MworCXNybAkkcm91bmRzLDEsJHJvdW5kcworCXhvcgkkdDAsJHMwLCRzMAorCWxkCVska2V5KzE2XSwkdDAKKwl4b3IJJHQxLCRzMSwkczEKKwlsZAlbJGtleSsyMF0sJHQxCisJc3JsCSRzMCwyMSwkYWNjMAkJCSEKKwl4b3IJJHQyLCRzMiwkczIKKwlsZAlbJGtleSsyNF0sJHQyCisJeG9yCSR0MywkczMsJHMzCisJYW5kCSRhY2MwLDIwNDAsJGFjYzAKKwlsZAlbJGtleSsyOF0sJHQzCisJc3JsCSRzMywxMywkYWNjMQorCW5vcAorLkxkZWNfbG9vcDoKKwlzcmwJJHMyLDUsJGFjYzIJCQkhCisJYW5kCSRhY2MxLDIwNDAsJGFjYzEKKwlsZHgJWyR0YmwrJGFjYzBdLCRhY2MwCisJc2xsCSRzMSwzLCRhY2MzCisJYW5kCSRhY2MyLDIwNDAsJGFjYzIKKwlsZHgJWyR0YmwrJGFjYzFdLCRhY2MxCisJc3JsCSRzMSwyMSwkYWNjNAorCWFuZAkkYWNjMywyMDQwLCRhY2MzCisJbGR4CVskdGJsKyRhY2MyXSwkYWNjMgkJIQorCXNybAkkczAsMTMsJGFjYzUKKwlhbmQJJGFjYzQsMjA0MCwkYWNjNAorCWxkeAlbJHRibCskYWNjM10sJGFjYzMKKwlzcmwJJHMzLDUsJGFjYzYKKwlhbmQJJGFjYzUsMjA0MCwkYWNjNQorCWxkeAlbJHRibCskYWNjNF0sJGFjYzQKKwlmbW92cwklZjAsJWYwCisJc2xsCSRzMiwzLCRhY2M3CQkJIQorCWFuZAkkYWNjNiwyMDQwLCRhY2M2CisJbGR4CVskdGJsKyRhY2M1XSwkYWNjNQorCXNybAkkczIsMjEsJGFjYzgKKwlhbmQJJGFjYzcsMjA0MCwkYWNjNworCWxkeAlbJHRibCskYWNjNl0sJGFjYzYKKwlzcmwJJHMxLDEzLCRhY2M5CisJYW5kCSRhY2M4LDIwNDAsJGFjYzgKKwlsZHgJWyR0YmwrJGFjYzddLCRhY2M3CQkhCisJc3JsCSRzMCw1LCRhY2MxMAorCWFuZAkkYWNjOSwyMDQwLCRhY2M5CisJbGR4CVskdGJsKyRhY2M4XSwkYWNjOAorCXNsbAkkczMsMywkYWNjMTEKKwlhbmQJJGFjYzEwLDIwNDAsJGFjYzEwCisJbGR4CVskdGJsKyRhY2M5XSwkYWNjOQorCWZtb3ZzCSVmMCwlZjAKKwlzcmwJJHMzLDIxLCRhY2MxMgkJCSEKKwlhbmQJJGFjYzExLDIwNDAsJGFjYzExCisJbGR4CVskdGJsKyRhY2MxMF0sJGFjYzEwCisJc3JsCSRzMiwxMywkYWNjMTMKKwlhbmQJJGFjYzEyLDIwNDAsJGFjYzEyCisJbGR4CVskdGJsKyRhY2MxMV0sJGFjYzExCisJc3JsCSRzMSw1LCRhY2MxNAorCWFuZAkkYWNjMTMsMjA0MCwkYWNjMTMKKwlsZHgJWyR0YmwrJGFjYzEyXSwkYWNjMTIJCSEKKwlzbGwJJHMwLDMsJGFjYzE1CisJYW5kCSRhY2MxNCwyMDQwLCRhY2MxNAorCWxkeAlbJHRibCskYWNjMTNdLCRhY2MxMworCWFuZAkkYWNjMTUsMjA0MCwkYWNjMTUKKwlhZGQJJGtleSwzMiwka2V5CisJbGR4CVskdGJsKyRhY2MxNF0sJGFjYzE0CisJZm1vdnMJJWYwLCVmMAorCXN1YmNjCSRyb3VuZHMsMSwkcm91bmRzCQkhCisJbGR4CVskdGJsKyRhY2MxNV0sJGFjYzE1CisJYnosYSxwbgklaWNjLC5MZGVjX2xhc3QKKwlhZGQJJHRibCwyMDQ4LCRyb3VuZHMKKworCQlzcmx4CSRhY2MxLDgsJGFjYzEKKwkJeG9yCSRhY2MwLCR0MCwkdDAKKwlsZAlbJGtleSswXSwkczAKKwlmbW92cwklZjAsJWYwCisJCXNybHgJJGFjYzIsMTYsJGFjYzIJCSEKKwkJeG9yCSRhY2MxLCR0MCwkdDAKKwlsZAlbJGtleSs0XSwkczEKKwkJc3JseAkkYWNjMywyNCwkYWNjMworCQl4b3IJJGFjYzIsJHQwLCR0MAorCWxkCVska2V5KzhdLCRzMgorCQlzcmx4CSRhY2M1LDgsJGFjYzUKKwkJeG9yCSRhY2MzLCR0MCwkdDAKKwlsZAlbJGtleSsxMl0sJHMzCQkJIQorCQlzcmx4CSRhY2M2LDE2LCRhY2M2CisJCXhvcgkkYWNjNCwkdDEsJHQxCisJZm1vdnMJJWYwLCVmMAorCQlzcmx4CSRhY2M3LDI0LCRhY2M3CisJCXhvcgkkYWNjNSwkdDEsJHQxCisJCXNybHgJJGFjYzksOCwkYWNjOQorCQl4b3IJJGFjYzYsJHQxLCR0MQorCQlzcmx4CSRhY2MxMCwxNiwkYWNjMTAJIQorCQl4b3IJJGFjYzcsJHQxLCR0MQorCQlzcmx4CSRhY2MxMSwyNCwkYWNjMTEKKwkJeG9yCSRhY2M4LCR0MiwkdDIKKwkJc3JseAkkYWNjMTMsOCwkYWNjMTMKKwkJeG9yCSRhY2M5LCR0MiwkdDIKKwkJc3JseAkkYWNjMTQsMTYsJGFjYzE0CisJCXhvcgkkYWNjMTAsJHQyLCR0MgorCQlzcmx4CSRhY2MxNSwyNCwkYWNjMTUJIQorCQl4b3IJJGFjYzExLCR0MiwkdDIKKwkJeG9yCSRhY2MxMiwkYWNjMTQsJGFjYzE0CisJCXhvcgkkYWNjMTMsJHQzLCR0MworCXNybAkkdDAsMjEsJGFjYzAKKwkJeG9yCSRhY2MxNCwkdDMsJHQzCisJCXhvcgkkYWNjMTUsJHQzLCR0MworCXNybAkkdDMsMTMsJGFjYzEKKworCWFuZAkkYWNjMCwyMDQwLCRhY2MwCQkhCisJc3JsCSR0Miw1LCRhY2MyCisJYW5kCSRhY2MxLDIwNDAsJGFjYzEKKwlsZHgJWyR0YmwrJGFjYzBdLCRhY2MwCisJc2xsCSR0MSwzLCRhY2MzCisJYW5kCSRhY2MyLDIwNDAsJGFjYzIKKwlsZHgJWyR0YmwrJGFjYzFdLCRhY2MxCisJZm1vdnMJJWYwLCVmMAorCXNybAkkdDEsMjEsJGFjYzQJCQkhCisJYW5kCSRhY2MzLDIwNDAsJGFjYzMKKwlsZHgJWyR0YmwrJGFjYzJdLCRhY2MyCisJc3JsCSR0MCwxMywkYWNjNQorCWFuZAkkYWNjNCwyMDQwLCRhY2M0CisJbGR4CVskdGJsKyRhY2MzXSwkYWNjMworCXNybAkkdDMsNSwkYWNjNgorCWFuZAkkYWNjNSwyMDQwLCRhY2M1CisJbGR4CVskdGJsKyRhY2M0XSwkYWNjNAkJIQorCXNsbAkkdDIsMywkYWNjNworCWFuZAkkYWNjNiwyMDQwLCRhY2M2CisJbGR4CVskdGJsKyRhY2M1XSwkYWNjNQorCXNybAkkdDIsMjEsJGFjYzgKKwlhbmQJJGFjYzcsMjA0MCwkYWNjNworCWxkeAlbJHRibCskYWNjNl0sJGFjYzYKKwlmbW92cwklZjAsJWYwCisJc3JsCSR0MSwxMywkYWNjOQkJCSEKKwlhbmQJJGFjYzgsMjA0MCwkYWNjOAorCWxkeAlbJHRibCskYWNjN10sJGFjYzcKKwlzcmwJJHQwLDUsJGFjYzEwCisJYW5kCSRhY2M5LDIwNDAsJGFjYzkKKwlsZHgJWyR0YmwrJGFjYzhdLCRhY2M4CisJc2xsCSR0MywzLCRhY2MxMQorCWFuZAkkYWNjMTAsMjA0MCwkYWNjMTAKKwlsZHgJWyR0YmwrJGFjYzldLCRhY2M5CQkhCisJc3JsCSR0MywyMSwkYWNjMTIKKwlhbmQJJGFjYzExLDIwNDAsJGFjYzExCisJbGR4CVskdGJsKyRhY2MxMF0sJGFjYzEwCisJc3JsCSR0MiwxMywkYWNjMTMKKwlhbmQJJGFjYzEyLDIwNDAsJGFjYzEyCisJbGR4CVskdGJsKyRhY2MxMV0sJGFjYzExCisJZm1vdnMJJWYwLCVmMAorCXNybAkkdDEsNSwkYWNjMTQJCQkhCisJYW5kCSRhY2MxMywyMDQwLCRhY2MxMworCWxkeAlbJHRibCskYWNjMTJdLCRhY2MxMgorCXNsbAkkdDAsMywkYWNjMTUKKwlhbmQJJGFjYzE0LDIwNDAsJGFjYzE0CisJbGR4CVskdGJsKyRhY2MxM10sJGFjYzEzCisJCXNybHgJJGFjYzEsOCwkYWNjMQorCWFuZAkkYWNjMTUsMjA0MCwkYWNjMTUKKwlsZHgJWyR0YmwrJGFjYzE0XSwkYWNjMTQJCSEKKworCQlzcmx4CSRhY2MyLDE2LCRhY2MyCisJCXhvcgkkYWNjMCwkczAsJHMwCisJbGR4CVskdGJsKyRhY2MxNV0sJGFjYzE1CisJCXNybHgJJGFjYzMsMjQsJGFjYzMKKwkJeG9yCSRhY2MxLCRzMCwkczAKKwlsZAlbJGtleSsxNl0sJHQwCisJZm1vdnMJJWYwLCVmMAorCQlzcmx4CSRhY2M1LDgsJGFjYzUJCSEKKwkJeG9yCSRhY2MyLCRzMCwkczAKKwlsZAlbJGtleSsyMF0sJHQxCisJCXNybHgJJGFjYzYsMTYsJGFjYzYKKwkJeG9yCSRhY2MzLCRzMCwkczAKKwlsZAlbJGtleSsyNF0sJHQyCisJCXNybHgJJGFjYzcsMjQsJGFjYzcKKwkJeG9yCSRhY2M0LCRzMSwkczEKKwlsZAlbJGtleSsyOF0sJHQzCQkJIQorCQlzcmx4CSRhY2M5LDgsJGFjYzkKKwkJeG9yCSRhY2M1LCRzMSwkczEKKwlsZHgJWyR0YmwrMjA0OCswXSwlZzAJCSEgcHJlZmV0Y2ggdGQ0CisJCXNybHgJJGFjYzEwLDE2LCRhY2MxMAorCQl4b3IJJGFjYzYsJHMxLCRzMQorCWxkeAlbJHRibCsyMDQ4KzMyXSwlZzAJCSEgcHJlZmV0Y2ggdGQ0CisJCXNybHgJJGFjYzExLDI0LCRhY2MxMQorCQl4b3IJJGFjYzcsJHMxLCRzMQorCWxkeAlbJHRibCsyMDQ4KzY0XSwlZzAJCSEgcHJlZmV0Y2ggdGQ0CisJCXNybHgJJGFjYzEzLDgsJGFjYzEzCisJCXhvcgkkYWNjOCwkczIsJHMyCisJbGR4CVskdGJsKzIwNDgrOTZdLCVnMAkJISBwcmVmZXRjaCB0ZDQKKwkJc3JseAkkYWNjMTQsMTYsJGFjYzE0CSEKKwkJeG9yCSRhY2M5LCRzMiwkczIKKwlsZHgJWyR0YmwrMjA0OCsxMjhdLCVnMAkJISBwcmVmZXRjaCB0ZDQKKwkJc3JseAkkYWNjMTUsMjQsJGFjYzE1CisJCXhvcgkkYWNjMTAsJHMyLCRzMgorCWxkeAlbJHRibCsyMDQ4KzE2MF0sJWcwCQkhIHByZWZldGNoIHRkNAorCXNybAkkczAsMjEsJGFjYzAKKwkJeG9yCSRhY2MxMSwkczIsJHMyCisJbGR4CVskdGJsKzIwNDgrMTkyXSwlZzAJCSEgcHJlZmV0Y2ggdGQ0CisJCXhvcgkkYWNjMTIsJGFjYzE0LCRhY2MxNAorCQl4b3IJJGFjYzEzLCRzMywkczMKKwlsZHgJWyR0YmwrMjA0OCsyMjRdLCVnMAkJISBwcmVmZXRjaCB0ZDQKKwlhbmQJJGFjYzAsMjA0MCwkYWNjMAkJIQorCQl4b3IJJGFjYzE0LCRzMywkczMKKwkJeG9yCSRhY2MxNSwkczMsJHMzCisJYmEJLkxkZWNfbG9vcAorCXNybAkkczMsMTMsJGFjYzEKKworLmFsaWduCTMyCisuTGRlY19sYXN0OgorCQlzcmx4CSRhY2MxLDgsJGFjYzEJCSEKKwkJeG9yCSRhY2MwLCR0MCwkdDAKKwlsZAlbJGtleSswXSwkczAKKwkJc3JseAkkYWNjMiwxNiwkYWNjMgorCQl4b3IJJGFjYzEsJHQwLCR0MAorCWxkCVska2V5KzRdLCRzMQorCQlzcmx4CSRhY2MzLDI0LCRhY2MzCisJCXhvcgkkYWNjMiwkdDAsJHQwCisJbGQJWyRrZXkrOF0sJHMyCQkJIQorCQlzcmx4CSRhY2M1LDgsJGFjYzUKKwkJeG9yCSRhY2MzLCR0MCwkdDAKKwlsZAlbJGtleSsxMl0sJHMzCisJCXNybHgJJGFjYzYsMTYsJGFjYzYKKwkJeG9yCSRhY2M0LCR0MSwkdDEKKwkJc3JseAkkYWNjNywyNCwkYWNjNworCQl4b3IJJGFjYzUsJHQxLCR0MQorCQlzcmx4CSRhY2M5LDgsJGFjYzkJCSEKKwkJeG9yCSRhY2M2LCR0MSwkdDEKKwkJc3JseAkkYWNjMTAsMTYsJGFjYzEwCisJCXhvcgkkYWNjNywkdDEsJHQxCisJCXNybHgJJGFjYzExLDI0LCRhY2MxMQorCQl4b3IJJGFjYzgsJHQyLCR0MgorCQlzcmx4CSRhY2MxMyw4LCRhY2MxMworCQl4b3IJJGFjYzksJHQyLCR0MgorCQlzcmx4CSRhY2MxNCwxNiwkYWNjMTQJIQorCQl4b3IJJGFjYzEwLCR0MiwkdDIKKwkJc3JseAkkYWNjMTUsMjQsJGFjYzE1CisJCXhvcgkkYWNjMTEsJHQyLCR0MgorCQl4b3IJJGFjYzEyLCRhY2MxNCwkYWNjMTQKKwkJeG9yCSRhY2MxMywkdDMsJHQzCisJc3JsCSR0MCwyNCwkYWNjMAorCQl4b3IJJGFjYzE0LCR0MywkdDMKKwkJeG9yCSRhY2MxNSwkdDMsJHQzCQkhCisJc3JsCSR0MywxNiwkYWNjMQorCisJc3JsCSR0Miw4LCRhY2MyCisJYW5kCSRhY2MxLDI1NSwkYWNjMQorCWxkdWIJWyRyb3VuZHMrJGFjYzBdLCRhY2MwCisJc3JsCSR0MSwyNCwkYWNjNAorCWFuZAkkYWNjMiwyNTUsJGFjYzIKKwlsZHViCVskcm91bmRzKyRhY2MxXSwkYWNjMQorCXNybAkkdDAsMTYsJGFjYzUJCQkhCisJYW5kCSR0MSwyNTUsJGFjYzMKKwlsZHViCVskcm91bmRzKyRhY2MyXSwkYWNjMgorCWxkdWIJWyRyb3VuZHMrJGFjYzNdLCRhY2MzCisJc3JsCSR0Myw4LCRhY2M2CisJYW5kCSRhY2M1LDI1NSwkYWNjNQorCWxkdWIJWyRyb3VuZHMrJGFjYzRdLCRhY2M0CisJZm1vdnMJJWYwLCVmMAorCXNybAkkdDIsMjQsJGFjYzgJCQkhCisJYW5kCSRhY2M2LDI1NSwkYWNjNgorCWxkdWIJWyRyb3VuZHMrJGFjYzVdLCRhY2M1CisJc3JsCSR0MSwxNiwkYWNjOQorCWFuZAkkdDIsMjU1LCRhY2M3CisJbGR1YglbJHJvdW5kcyskYWNjNl0sJGFjYzYKKwlsZHViCVskcm91bmRzKyRhY2M3XSwkYWNjNworCWZtb3ZzCSVmMCwlZjAKKwlzcmwJJHQwLDgsJGFjYzEwCQkJIQorCWFuZAkkYWNjOSwyNTUsJGFjYzkKKwlsZHViCVskcm91bmRzKyRhY2M4XSwkYWNjOAorCXNybAkkdDMsMjQsJGFjYzEyCisJYW5kCSRhY2MxMCwyNTUsJGFjYzEwCisJbGR1YglbJHJvdW5kcyskYWNjOV0sJGFjYzkKKwlzcmwJJHQyLDE2LCRhY2MxMworCWFuZAkkdDMsMjU1LCRhY2MxMQorCWxkdWIJWyRyb3VuZHMrJGFjYzEwXSwkYWNjMTAJCSEKKwlzcmwJJHQxLDgsJGFjYzE0CisJYW5kCSRhY2MxMywyNTUsJGFjYzEzCisJbGR1YglbJHJvdW5kcyskYWNjMTFdLCRhY2MxMQorCWxkdWIJWyRyb3VuZHMrJGFjYzEyXSwkYWNjMTIKKwlhbmQJJGFjYzE0LDI1NSwkYWNjMTQKKwlsZHViCVskcm91bmRzKyRhY2MxM10sJGFjYzEzCisJYW5kCSR0MCwyNTUsJGFjYzE1CisJbGR1YglbJHJvdW5kcyskYWNjMTRdLCRhY2MxNAkJIQorCisJCXNsbAkkYWNjMCwyNCwkYWNjMAorCQl4b3IJJGFjYzMsJHMwLCRzMAorCWxkdWIJWyRyb3VuZHMrJGFjYzE1XSwkYWNjMTUKKwkJc2xsCSRhY2MxLDE2LCRhY2MxCisJCXhvcgkkYWNjMCwkczAsJHMwCisJbGR4CVslc3ArJGJpYXMrJGZyYW1lKzBdLCVpNwkhIHJlc3RvcmUgcmV0dXJuIGFkZHJlc3MKKwlmbW92cwklZjAsJWYwCisJCXNsbAkkYWNjMiw4LCRhY2MyCQkhCisJCXhvcgkkYWNjMSwkczAsJHMwCisJCXNsbAkkYWNjNCwyNCwkYWNjNAorCQl4b3IJJGFjYzIsJHMwLCRzMAorCQlzbGwJJGFjYzUsMTYsJGFjYzUKKwkJeG9yCSRhY2M3LCRzMSwkczEKKwkJc2xsCSRhY2M2LDgsJGFjYzYKKwkJeG9yCSRhY2M0LCRzMSwkczEKKwkJc2xsCSRhY2M4LDI0LCRhY2M4CQkhCisJCXhvcgkkYWNjNSwkczEsJHMxCisJCXNsbAkkYWNjOSwxNiwkYWNjOQorCQl4b3IJJGFjYzExLCRzMiwkczIKKwkJc2xsCSRhY2MxMCw4LCRhY2MxMAorCQl4b3IJJGFjYzYsJHMxLCRzMQorCQlzbGwJJGFjYzEyLDI0LCRhY2MxMgorCQl4b3IJJGFjYzgsJHMyLCRzMgorCQlzbGwJJGFjYzEzLDE2LCRhY2MxMwkhCisJCXhvcgkkYWNjOSwkczIsJHMyCisJCXNsbAkkYWNjMTQsOCwkYWNjMTQKKwkJeG9yCSRhY2MxMCwkczIsJHMyCisJCXhvcgkkYWNjMTIsJGFjYzE0LCRhY2MxNAorCQl4b3IJJGFjYzEzLCRzMywkczMKKwkJeG9yCSRhY2MxNCwkczMsJHMzCisJCXhvcgkkYWNjMTUsJHMzLCRzMworCisJcmV0CisJcmVzdG9yZQorLnR5cGUJX3NwYXJjdjlfQUVTX2RlY3J5cHQsI2Z1bmN0aW9uCisuc2l6ZQlfc3BhcmN2OV9BRVNfZGVjcnlwdCwoLi1fc3BhcmN2OV9BRVNfZGVjcnlwdCkKKworLmFsaWduCTMyCisuZ2xvYmwJQUVTX2RlY3J5cHQKK0FFU19kZWNyeXB0OgorCW9yCSVvMCwlbzEsJWcxCisJYW5kY2MJJWcxLDMsJWcwCisJYm56LHBuCSV4Y2MsLkx1bmFsaWduZWRfZGVjCisJc2F2ZQklc3AsLSRmcmFtZSwlc3AKKworCWxkCVslaTArMF0sJW8wCisJbGQJWyVpMCs0XSwlbzEKKwlsZAlbJWkwKzhdLCVvMgorCWxkCVslaTArMTJdLCVvMworCisxOgljYWxsCS4rOAorCWFkZAklbzcsQUVTX1RkLTFiLCVvNAorCWNhbGwJX3NwYXJjdjlfQUVTX2RlY3J5cHQKKwltb3YJJWkyLCVvNQorCisJc3QJJW8wLFslaTErMF0KKwlzdAklbzEsWyVpMSs0XQorCXN0CSVvMixbJWkxKzhdCisJc3QJJW8zLFslaTErMTJdCisKKwlyZXQKKwlyZXN0b3JlCisKKy5hbGlnbgkzMgorLkx1bmFsaWduZWRfZGVjOgorCWxkdWIJWyVpMCswXSwlbDAKKwlsZHViCVslaTArMV0sJWwxCisJbGR1YglbJWkwKzJdLCVsMgorCisJc2xsCSVsMCwyNCwlbDAKKwlsZHViCVslaTArM10sJWwzCisJc2xsCSVsMSwxNiwlbDEKKwlsZHViCVslaTArNF0sJWw0CisJc2xsCSVsMiw4LCVsMgorCW9yCSVsMSwlbDAsJWwwCisJbGR1YglbJWkwKzVdLCVsNQorCXNsbAklbDQsMjQsJWw0CisJb3IJJWwzLCVsMiwlbDIKKwlsZHViCVslaTArNl0sJWw2CisJc2xsCSVsNSwxNiwlbDUKKwlvcgklbDAsJWwyLCVvMAorCWxkdWIJWyVpMCs3XSwlbDcKKworCXNsbAklbDYsOCwlbDYKKwlvcgklbDUsJWw0LCVsNAorCWxkdWIJWyVpMCs4XSwlbDAKKwlvcgklbDcsJWw2LCVsNgorCWxkdWIJWyVpMCs5XSwlbDEKKwlvcgklbDQsJWw2LCVvMQorCWxkdWIJWyVpMCsxMF0sJWwyCisKKwlzbGwJJWwwLDI0LCVsMAorCWxkdWIJWyVpMCsxMV0sJWwzCisJc2xsCSVsMSwxNiwlbDEKKwlsZHViCVslaTArMTJdLCVsNAorCXNsbAklbDIsOCwlbDIKKwlvcgklbDEsJWwwLCVsMAorCWxkdWIJWyVpMCsxM10sJWw1CisJc2xsCSVsNCwyNCwlbDQKKwlvcgklbDMsJWwyLCVsMgorCWxkdWIJWyVpMCsxNF0sJWw2CisJc2xsCSVsNSwxNiwlbDUKKwlvcgklbDAsJWwyLCVvMgorCWxkdWIJWyVpMCsxNV0sJWw3CisKKwlzbGwJJWw2LDgsJWw2CisJb3IJJWw1LCVsNCwlbDQKKwlvcgklbDcsJWw2LCVsNgorCW9yCSVsNCwlbDYsJW8zCisKKzE6CWNhbGwJLis4CisJYWRkCSVvNyxBRVNfVGQtMWIsJW80CisJY2FsbAlfc3BhcmN2OV9BRVNfZGVjcnlwdAorCW1vdgklaTIsJW81CisKKwlzcmwJJW8wLDI0LCVsMAorCXNybAklbzAsMTYsJWwxCisJc3RiCSVsMCxbJWkxKzBdCisJc3JsCSVvMCw4LCVsMgorCXN0YgklbDEsWyVpMSsxXQorCXN0YgklbDIsWyVpMSsyXQorCXNybAklbzEsMjQsJWw0CisJc3RiCSVvMCxbJWkxKzNdCisKKwlzcmwJJW8xLDE2LCVsNQorCXN0YgklbDQsWyVpMSs0XQorCXNybAklbzEsOCwlbDYKKwlzdGIJJWw1LFslaTErNV0KKwlzdGIJJWw2LFslaTErNl0KKwlzcmwJJW8yLDI0LCVsMAorCXN0YgklbzEsWyVpMSs3XQorCisJc3JsCSVvMiwxNiwlbDEKKwlzdGIJJWwwLFslaTErOF0KKwlzcmwJJW8yLDgsJWwyCisJc3RiCSVsMSxbJWkxKzldCisJc3RiCSVsMixbJWkxKzEwXQorCXNybAklbzMsMjQsJWw0CisJc3RiCSVvMixbJWkxKzExXQorCisJc3JsCSVvMywxNiwlbDUKKwlzdGIJJWw0LFslaTErMTJdCisJc3JsCSVvMyw4LCVsNgorCXN0YgklbDUsWyVpMSsxM10KKwlzdGIJJWw2LFslaTErMTRdCisJc3RiCSVvMyxbJWkxKzE1XQorCisJcmV0CisJcmVzdG9yZQorLnR5cGUJQUVTX2RlY3J5cHQsI2Z1bmN0aW9uCisuc2l6ZQlBRVNfZGVjcnlwdCwoLi1BRVNfZGVjcnlwdCkKK19fXworCisjIGZtb3ZzIGluc3RydWN0aW9ucyBzdWJzdGl0dXRpbmcgZm9yIEZQIG5vcHMgd2VyZSBvcmlnaW5hbGx5IGFkZGVkCisjIHRvIG1lZXQgc3BlY2lmaWMgaW5zdHJ1Y3Rpb24gYWxpZ25tZW50IHJlcXVpcmVtZW50cyB0byBtYXhpbWl6ZSBJTFAuCisjIEFzIFVsdHJhU1BBUkMgVDEsIGEuay5hLiBOaWFnYXJhLCBoYXMgc2hhcmVkIEZQVSwgRlAgbm9wcyBjYW4gaGF2ZQorIyB1bmRlc2lyZWQgZWZmZWN0LCBzbyBqdXN0IG9taXQgdGhlbSBhbmQgc2FjcmlmaWNlIHNvbWUgcG9ydGlvbiBvZgorIyBwZXJjZW50IGluIHBlcmZvcm1hbmNlLi4uCiskY29kZSA9fiBzL2Ztb3ZzLiokLy9nbTsKKworcHJpbnQgJGNvZGU7CitjbG9zZSBTVERPVVQ7CSMgZW5zdXJlIGZsdXNoCmRpZmYgLS1naXQgYS9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS9hZXMteDg2XzY0LnBsIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzLXg4Nl82NC5wbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40OGZhODU3Ci0tLSAvZGV2L251bGwKKysrIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzLXg4Nl82NC5wbApAQCAtMCwwICsxLDI4MTggQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKyMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgV3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0BmeS5jaGFsbWVycy5zZT4gZm9yIHRoZSBPcGVuU1NMCisjIHByb2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNTTCBhbmQKKyMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKKyMgZGV0YWlscyBzZWUgaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9+YXBwcm8vY3J5cHRvZ2Ftcy8uCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFZlcnNpb24gMi4xLgorIworIyBhZXMtKi1jYmMgYmVuY2htYXJrcyBhcmUgaW1wcm92ZWQgYnkgPjcwJSBbY29tcGFyZWQgdG8gZ2NjIDMuMy4yIG9uCisjIE9wdGVyb24gMjQwIENQVV0gcGx1cyBhbGwgdGhlIGJlbGxzLW4td2hpc3RsZXMgZnJvbSAzMi1iaXQgdmVyc2lvbgorIyBbeW91J2xsIG5vdGljZSBhIGxvdCBvZiByZXNlbWJsYW5jZV0sIHN1Y2ggYXMgY29tcHJlc3NlZCBTLWJveGVzCisjIGluIGxpdHRsZS1lbmRpYW4gYnl0ZSBvcmRlciwgcHJlZmV0Y2ggb2YgdGhlc2UgdGFibGVzIGluIENCQyBtb2RlLAorIyBhcyB3ZWxsIGFzIGF2b2lkaW5nIEwxIGNhY2hlIGFsaWFzaW5nIGJldHdlZW4gc3RhY2sgZnJhbWUgYW5kIGtleQorIyBzY2hlZHVsZSBhbmQgYWxyZWFkeSBtZW50aW9uZWQgdGFibGVzLCBjb21wcmVzc2VkIFRkNC4uLgorIworIyBQZXJmb3JtYW5jZSBpbiBudW1iZXIgb2YgY3ljbGVzIHBlciBwcm9jZXNzZWQgYnl0ZSBmb3IgMTI4LWJpdCBrZXk6CisjCisjCQlFQ0IgZW5jcnlwdAlFQ0IgZGVjcnlwdAlDQkMgbGFyZ2UgY2h1bmsKKyMgQU1ENjQJCTMzCQk0MQkJMTMuMAorIyBFTTY0VAkJMzgJCTU5CQkxOC42KCopCisjIENvcmUgMgkzMAkJNDMJCTE0LjUoKikKKyMKKyMgKCopIHdpdGggaHlwZXItdGhyZWFkaW5nIG9mZgorCiskZmxhdm91ciA9IHNoaWZ0OworJG91dHB1dCAgPSBzaGlmdDsKK2lmICgkZmxhdm91ciA9fiAvXC4vKSB7ICRvdXRwdXQgPSAkZmxhdm91cjsgdW5kZWYgJGZsYXZvdXI7IH0KKworJHdpbjY0PTA7ICR3aW42ND0xIGlmICgkZmxhdm91ciA9fiAvW25tXWFzbXxtaW5ndzY0LyB8fCAkb3V0cHV0ID1+IC9cLmFzbSQvKTsKKworJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsKKyggJHhsYXRlPSIke2Rpcn14ODZfNjQteGxhdGUucGwiIGFuZCAtZiAkeGxhdGUgKSBvcgorKCAkeGxhdGU9IiR7ZGlyfS4uLy4uL3Blcmxhc20veDg2XzY0LXhsYXRlLnBsIiBhbmQgLWYgJHhsYXRlKSBvcgorZGllICJjYW4ndCBsb2NhdGUgeDg2XzY0LXhsYXRlLnBsIjsKKworb3BlbiBTVERPVVQsInwgJF5YICR4bGF0ZSAkZmxhdm91ciAkb3V0cHV0IjsKKworJHZlcnRpY2Fsc3Bpbj0xOwkjIHVubGlrZSAzMi1iaXQgdmVyc2lvbiAkdmVydGljYWxzcGluIHBlcmZvcm1zCisJCQkjIH4xNSUgYmV0dGVyIG9uIGJvdGggQU1EIGFuZCBJbnRlbCBjb3JlcworJHNwZWVkX2xpbWl0PTUxMjsJIyBzZWUgYWVzLTU4Ni5wbCBmb3IgZGV0YWlscworCiskY29kZT0iLnRleHRcbiI7CisKKyRzMD0iJWVheCI7CiskczE9IiVlYngiOworJHMyPSIlZWN4IjsKKyRzMz0iJWVkeCI7CiskYWNjMD0iJWVzaSI7CSRtYXNrODA9IiVyc2kiOworJGFjYzE9IiVlZGkiOwkkbWFza2ZlPSIlcmRpIjsKKyRhY2MyPSIlZWJwIjsJJG1hc2sxYj0iJXJicCI7CiskaW5wPSIlcjgiOworJG91dD0iJXI5IjsKKyR0MD0iJXIxMGQiOworJHQxPSIlcjExZCI7CiskdDI9IiVyMTJkIjsKKyRybmRzPSIlcjEzZCI7Ciskc2JveD0iJXIxNCI7Ciska2V5PSIlcjE1IjsKKworc3ViIGhpKCkgeyBteSAkcj1zaGlmdDsJJHIgPX4gcy8lW2VyXShbYS1kXSl4LyVcMWgvOwkkcjsgfQorc3ViIGxvKCkgeyBteSAkcj1zaGlmdDsJJHIgPX4gcy8lW2VyXShbYS1kXSl4LyVcMWwvOworCQkJJHIgPX4gcy8lW2VyXShbc2RdaSkvJVwxbC87CisJCQkkciA9fiBzLyUoclswLTldKylbZF0/LyVcMWIvOwkkcjsgfQorc3ViIExPKCkgeyBteSAkcj1zaGlmdDsgJHIgPX4gcy8lcihbYS16XSspLyVlXDEvOworCQkJJHIgPX4gcy8lcihbMC05XSspLyVyXDFkLzsJJHI7IH0KK3N1YiBfZGF0YV93b3JkKCkKK3sgbXkgJGk7CisgICAgd2hpbGUoZGVmaW5lZCgkaT1zaGlmdCkpIHsgJGNvZGUuPXNwcmludGYiLmxvbmdcdDB4JTA4eCwweCUwOHhcbiIsJGksJGk7IH0KK30KK3N1YiBkYXRhX3dvcmQoKQoreyBteSAkaTsKKyAgbXkgJGxhc3Q9cG9wKEBfKTsKKyAgICAkY29kZS49Ii5sb25nXHQiOworICAgIHdoaWxlKGRlZmluZWQoJGk9c2hpZnQpKSB7ICRjb2RlLj1zcHJpbnRmIjB4JTA4eCwiLCRpOyB9CisgICAgJGNvZGUuPXNwcmludGYiMHglMDh4XG4iLCRsYXN0OworfQorCitzdWIgZGF0YV9ieXRlKCkKK3sgbXkgJGk7CisgIG15ICRsYXN0PXBvcChAXyk7CisgICAgJGNvZGUuPSIuYnl0ZVx0IjsKKyAgICB3aGlsZShkZWZpbmVkKCRpPXNoaWZ0KSkgeyAkY29kZS49c3ByaW50ZiIweCUwMngsIiwkaSYweGZmOyB9CisgICAgJGNvZGUuPXNwcmludGYiMHglMDJ4XG4iLCRsYXN0JjB4ZmY7Cit9CisKK3N1YiBlbmN2ZXJ0KCkKK3sgbXkgJHQzPSIlcjhkIjsJIyB6YXBzICRpbnAhCisKKyRjb2RlLj08PF9fXzsKKwkjIGZhdm9yIDMtd2F5IGlzc3VlIE9wdGVyb24gcGlwZWxpbmUuLi4KKwltb3Z6YglgJmxvKCIkczAiKWAsJGFjYzAKKwltb3Z6YglgJmxvKCIkczEiKWAsJGFjYzEKKwltb3Z6YglgJmxvKCIkczIiKWAsJGFjYzIKKwltb3YJMCgkc2JveCwkYWNjMCw4KSwkdDAKKwltb3YJMCgkc2JveCwkYWNjMSw4KSwkdDEKKwltb3YJMCgkc2JveCwkYWNjMiw4KSwkdDIKKworCW1vdnpiCWAmaGkoIiRzMSIpYCwkYWNjMAorCW1vdnpiCWAmaGkoIiRzMiIpYCwkYWNjMQorCW1vdnpiCWAmbG8oIiRzMyIpYCwkYWNjMgorCXhvcgkzKCRzYm94LCRhY2MwLDgpLCR0MAorCXhvcgkzKCRzYm94LCRhY2MxLDgpLCR0MQorCW1vdgkwKCRzYm94LCRhY2MyLDgpLCR0MworCisJbW92emIJYCZoaSgiJHMzIilgLCRhY2MwCisJc2hyCVwkMTYsJHMyCisJbW92emIJYCZoaSgiJHMwIilgLCRhY2MyCisJeG9yCTMoJHNib3gsJGFjYzAsOCksJHQyCisJc2hyCVwkMTYsJHMzCisJeG9yCTMoJHNib3gsJGFjYzIsOCksJHQzCisKKwlzaHIJXCQxNiwkczEKKwlsZWEJMTYoJGtleSksJGtleQorCXNocglcJDE2LCRzMAorCisJbW92emIJYCZsbygiJHMyIilgLCRhY2MwCisJbW92emIJYCZsbygiJHMzIilgLCRhY2MxCisJbW92emIJYCZsbygiJHMwIilgLCRhY2MyCisJeG9yCTIoJHNib3gsJGFjYzAsOCksJHQwCisJeG9yCTIoJHNib3gsJGFjYzEsOCksJHQxCisJeG9yCTIoJHNib3gsJGFjYzIsOCksJHQyCisKKwltb3Z6YglgJmhpKCIkczMiKWAsJGFjYzAKKwltb3Z6YglgJmhpKCIkczAiKWAsJGFjYzEKKwltb3Z6YglgJmxvKCIkczEiKWAsJGFjYzIKKwl4b3IJMSgkc2JveCwkYWNjMCw4KSwkdDAKKwl4b3IJMSgkc2JveCwkYWNjMSw4KSwkdDEKKwl4b3IJMigkc2JveCwkYWNjMiw4KSwkdDMKKworCW1vdgkxMigka2V5KSwkczMKKwltb3Z6YglgJmhpKCIkczEiKWAsJGFjYzEKKwltb3Z6YglgJmhpKCIkczIiKWAsJGFjYzIKKwltb3YJMCgka2V5KSwkczAKKwl4b3IJMSgkc2JveCwkYWNjMSw4KSwkdDIKKwl4b3IJMSgkc2JveCwkYWNjMiw4KSwkdDMKKworCW1vdgk0KCRrZXkpLCRzMQorCW1vdgk4KCRrZXkpLCRzMgorCXhvcgkkdDAsJHMwCisJeG9yCSR0MSwkczEKKwl4b3IJJHQyLCRzMgorCXhvcgkkdDMsJHMzCitfX18KK30KKworc3ViIGVuY2xhc3R2ZXJ0KCkKK3sgbXkgJHQzPSIlcjhkIjsJIyB6YXBzICRpbnAhCisKKyRjb2RlLj08PF9fXzsKKwltb3Z6YglgJmxvKCIkczAiKWAsJGFjYzAKKwltb3Z6YglgJmxvKCIkczEiKWAsJGFjYzEKKwltb3Z6YglgJmxvKCIkczIiKWAsJGFjYzIKKwltb3Z6YgkyKCRzYm94LCRhY2MwLDgpLCR0MAorCW1vdnpiCTIoJHNib3gsJGFjYzEsOCksJHQxCisJbW92emIJMigkc2JveCwkYWNjMiw4KSwkdDIKKworCW1vdnpiCWAmbG8oIiRzMyIpYCwkYWNjMAorCW1vdnpiCWAmaGkoIiRzMSIpYCwkYWNjMQorCW1vdnpiCWAmaGkoIiRzMiIpYCwkYWNjMgorCW1vdnpiCTIoJHNib3gsJGFjYzAsOCksJHQzCisJbW92CTAoJHNib3gsJGFjYzEsOCksJGFjYzEJIyR0MAorCW1vdgkwKCRzYm94LCRhY2MyLDgpLCRhY2MyCSMkdDEKKworCWFuZAlcJDB4MDAwMGZmMDAsJGFjYzEKKwlhbmQJXCQweDAwMDBmZjAwLCRhY2MyCisKKwl4b3IJJGFjYzEsJHQwCisJeG9yCSRhY2MyLCR0MQorCXNocglcJDE2LCRzMgorCisJbW92emIJYCZoaSgiJHMzIilgLCRhY2MwCisJbW92emIJYCZoaSgiJHMwIilgLCRhY2MxCisJc2hyCVwkMTYsJHMzCisJbW92CTAoJHNib3gsJGFjYzAsOCksJGFjYzAJIyR0MgorCW1vdgkwKCRzYm94LCRhY2MxLDgpLCRhY2MxCSMkdDMKKworCWFuZAlcJDB4MDAwMGZmMDAsJGFjYzAKKwlhbmQJXCQweDAwMDBmZjAwLCRhY2MxCisJc2hyCVwkMTYsJHMxCisJeG9yCSRhY2MwLCR0MgorCXhvcgkkYWNjMSwkdDMKKwlzaHIJXCQxNiwkczAKKworCW1vdnpiCWAmbG8oIiRzMiIpYCwkYWNjMAorCW1vdnpiCWAmbG8oIiRzMyIpYCwkYWNjMQorCW1vdnpiCWAmbG8oIiRzMCIpYCwkYWNjMgorCW1vdgkwKCRzYm94LCRhY2MwLDgpLCRhY2MwCSMkdDAKKwltb3YJMCgkc2JveCwkYWNjMSw4KSwkYWNjMQkjJHQxCisJbW92CTAoJHNib3gsJGFjYzIsOCksJGFjYzIJIyR0MgorCisJYW5kCVwkMHgwMGZmMDAwMCwkYWNjMAorCWFuZAlcJDB4MDBmZjAwMDAsJGFjYzEKKwlhbmQJXCQweDAwZmYwMDAwLCRhY2MyCisKKwl4b3IJJGFjYzAsJHQwCisJeG9yCSRhY2MxLCR0MQorCXhvcgkkYWNjMiwkdDIKKworCW1vdnpiCWAmbG8oIiRzMSIpYCwkYWNjMAorCW1vdnpiCWAmaGkoIiRzMyIpYCwkYWNjMQorCW1vdnpiCWAmaGkoIiRzMCIpYCwkYWNjMgorCW1vdgkwKCRzYm94LCRhY2MwLDgpLCRhY2MwCSMkdDMKKwltb3YJMigkc2JveCwkYWNjMSw4KSwkYWNjMQkjJHQwCisJbW92CTIoJHNib3gsJGFjYzIsOCksJGFjYzIJIyR0MQorCisJYW5kCVwkMHgwMGZmMDAwMCwkYWNjMAorCWFuZAlcJDB4ZmYwMDAwMDAsJGFjYzEKKwlhbmQJXCQweGZmMDAwMDAwLCRhY2MyCisKKwl4b3IJJGFjYzAsJHQzCisJeG9yCSRhY2MxLCR0MAorCXhvcgkkYWNjMiwkdDEKKworCW1vdnpiCWAmaGkoIiRzMSIpYCwkYWNjMAorCW1vdnpiCWAmaGkoIiRzMiIpYCwkYWNjMQorCW1vdgkxNisxMigka2V5KSwkczMKKwltb3YJMigkc2JveCwkYWNjMCw4KSwkYWNjMAkjJHQyCisJbW92CTIoJHNib3gsJGFjYzEsOCksJGFjYzEJIyR0MworCW1vdgkxNiswKCRrZXkpLCRzMAorCisJYW5kCVwkMHhmZjAwMDAwMCwkYWNjMAorCWFuZAlcJDB4ZmYwMDAwMDAsJGFjYzEKKworCXhvcgkkYWNjMCwkdDIKKwl4b3IJJGFjYzEsJHQzCisKKwltb3YJMTYrNCgka2V5KSwkczEKKwltb3YJMTYrOCgka2V5KSwkczIKKwl4b3IJJHQwLCRzMAorCXhvcgkkdDEsJHMxCisJeG9yCSR0MiwkczIKKwl4b3IJJHQzLCRzMworX19fCit9CisKK3N1YiBlbmNzdGVwKCkKK3sgbXkgKCRpLEBzKSA9IEBfOworICBteSAkdG1wMD0kYWNjMDsKKyAgbXkgJHRtcDE9JGFjYzE7CisgIG15ICR0bXAyPSRhY2MyOworICBteSAkb3V0PSgkdDAsJHQxLCR0Miwkc1swXSlbJGldOworCisJaWYgKCRpPT0zKSB7CisJCSR0bXAwPSRzWzFdOworCQkkdG1wMT0kc1syXTsKKwkJJHRtcDI9JHNbM107CisJfQorCSRjb2RlLj0iCW1vdnpiCSIuJmxvKCRzWzBdKS4iLCRvdXRcbiI7CisJJGNvZGUuPSIJbW92CSRzWzJdLCR0bXAxXG4iCQlpZiAoJGkhPTMpOworCSRjb2RlLj0iCWxlYQkxNigka2V5KSwka2V5XG4iCWlmICgkaT09MCk7CisKKwkkY29kZS49Igltb3Z6YgkiLiZoaSgkc1sxXSkuIiwkdG1wMFxuIjsKKwkkY29kZS49Igltb3YJMCgkc2JveCwkb3V0LDgpLCRvdXRcbiI7CisKKwkkY29kZS49IglzaHIJXCQxNiwkdG1wMVxuIjsKKwkkY29kZS49Igltb3YJJHNbM10sJHRtcDJcbiIJCWlmICgkaSE9Myk7CisJJGNvZGUuPSIJeG9yCTMoJHNib3gsJHRtcDAsOCksJG91dFxuIjsKKworCSRjb2RlLj0iCW1vdnpiCSIuJmxvKCR0bXAxKS4iLCR0bXAxXG4iOworCSRjb2RlLj0iCXNocglcJDI0LCR0bXAyXG4iOworCSRjb2RlLj0iCXhvcgk0KiRpKCRrZXkpLCRvdXRcbiI7CisKKwkkY29kZS49Igl4b3IJMigkc2JveCwkdG1wMSw4KSwkb3V0XG4iOworCSRjb2RlLj0iCXhvcgkxKCRzYm94LCR0bXAyLDgpLCRvdXRcbiI7CisKKwkkY29kZS49Igltb3YJJHQwLCRzWzFdXG4iCQlpZiAoJGk9PTMpOworCSRjb2RlLj0iCW1vdgkkdDEsJHNbMl1cbiIJCWlmICgkaT09Myk7CisJJGNvZGUuPSIJbW92CSR0Miwkc1szXVxuIgkJaWYgKCRpPT0zKTsKKwkkY29kZS49IlxuIjsKK30KKworc3ViIGVuY2xhc3QoKQoreyBteSAoJGksQHMpPUBfOworICBteSAkdG1wMD0kYWNjMDsKKyAgbXkgJHRtcDE9JGFjYzE7CisgIG15ICR0bXAyPSRhY2MyOworICBteSAkb3V0PSgkdDAsJHQxLCR0Miwkc1swXSlbJGldOworCisJaWYgKCRpPT0zKSB7CisJCSR0bXAwPSRzWzFdOworCQkkdG1wMT0kc1syXTsKKwkJJHRtcDI9JHNbM107CisJfQorCSRjb2RlLj0iCW1vdnpiCSIuJmxvKCRzWzBdKS4iLCRvdXRcbiI7CisJJGNvZGUuPSIJbW92CSRzWzJdLCR0bXAxXG4iCQlpZiAoJGkhPTMpOworCisJJGNvZGUuPSIJbW92CTIoJHNib3gsJG91dCw4KSwkb3V0XG4iOworCSRjb2RlLj0iCXNocglcJDE2LCR0bXAxXG4iOworCSRjb2RlLj0iCW1vdgkkc1szXSwkdG1wMlxuIgkJaWYgKCRpIT0zKTsKKworCSRjb2RlLj0iCWFuZAlcJDB4MDAwMDAwZmYsJG91dFxuIjsKKwkkY29kZS49Igltb3Z6YgkiLiZoaSgkc1sxXSkuIiwkdG1wMFxuIjsKKwkkY29kZS49Igltb3Z6YgkiLiZsbygkdG1wMSkuIiwkdG1wMVxuIjsKKwkkY29kZS49IglzaHIJXCQyNCwkdG1wMlxuIjsKKworCSRjb2RlLj0iCW1vdgkwKCRzYm94LCR0bXAwLDgpLCR0bXAwXG4iOworCSRjb2RlLj0iCW1vdgkwKCRzYm94LCR0bXAxLDgpLCR0bXAxXG4iOworCSRjb2RlLj0iCW1vdgkyKCRzYm94LCR0bXAyLDgpLCR0bXAyXG4iOworCisJJGNvZGUuPSIJYW5kCVwkMHgwMDAwZmYwMCwkdG1wMFxuIjsKKwkkY29kZS49IglhbmQJXCQweDAwZmYwMDAwLCR0bXAxXG4iOworCSRjb2RlLj0iCWFuZAlcJDB4ZmYwMDAwMDAsJHRtcDJcbiI7CisKKwkkY29kZS49Igl4b3IJJHRtcDAsJG91dFxuIjsKKwkkY29kZS49Igltb3YJJHQwLCRzWzFdXG4iCQlpZiAoJGk9PTMpOworCSRjb2RlLj0iCXhvcgkkdG1wMSwkb3V0XG4iOworCSRjb2RlLj0iCW1vdgkkdDEsJHNbMl1cbiIJCWlmICgkaT09Myk7CisJJGNvZGUuPSIJeG9yCSR0bXAyLCRvdXRcbiI7CisJJGNvZGUuPSIJbW92CSR0Miwkc1szXVxuIgkJaWYgKCRpPT0zKTsKKwkkY29kZS49IlxuIjsKK30KKworJGNvZGUuPTw8X19fOworLnR5cGUJX3g4Nl82NF9BRVNfZW5jcnlwdCxcQGFiaS1vbW5pcG90ZW50CisuYWxpZ24JMTYKK194ODZfNjRfQUVTX2VuY3J5cHQ6CisJeG9yCTAoJGtleSksJHMwCQkJIyB4b3Igd2l0aCBrZXkKKwl4b3IJNCgka2V5KSwkczEKKwl4b3IJOCgka2V5KSwkczIKKwl4b3IJMTIoJGtleSksJHMzCisKKwltb3YJMjQwKCRrZXkpLCRybmRzCQkJIyBsb2FkIGtleS0+cm91bmRzCisJc3ViCVwkMSwkcm5kcworCWptcAkuTGVuY19sb29wCisuYWxpZ24JMTYKKy5MZW5jX2xvb3A6CitfX18KKwlpZiAoJHZlcnRpY2Fsc3BpbikgeyAmZW5jdmVydCgpOyB9CisJZWxzZSB7CSZlbmNzdGVwKDAsJHMwLCRzMSwkczIsJHMzKTsKKwkJJmVuY3N0ZXAoMSwkczEsJHMyLCRzMywkczApOworCQkmZW5jc3RlcCgyLCRzMiwkczMsJHMwLCRzMSk7CisJCSZlbmNzdGVwKDMsJHMzLCRzMCwkczEsJHMyKTsKKwl9CiskY29kZS49PDxfX187CisJc3ViCVwkMSwkcm5kcworCWpuegkuTGVuY19sb29wCitfX18KKwlpZiAoJHZlcnRpY2Fsc3BpbikgeyAmZW5jbGFzdHZlcnQoKTsgfQorCWVsc2UgewkmZW5jbGFzdCgwLCRzMCwkczEsJHMyLCRzMyk7CisJCSZlbmNsYXN0KDEsJHMxLCRzMiwkczMsJHMwKTsKKwkJJmVuY2xhc3QoMiwkczIsJHMzLCRzMCwkczEpOworCQkmZW5jbGFzdCgzLCRzMywkczAsJHMxLCRzMik7CisJCSRjb2RlLj08PF9fXzsKKwkJeG9yCTE2KzAoJGtleSksJHMwCQkjIHhvciB3aXRoIGtleQorCQl4b3IJMTYrNCgka2V5KSwkczEKKwkJeG9yCTE2KzgoJGtleSksJHMyCisJCXhvcgkxNisxMigka2V5KSwkczMKK19fXworCX0KKyRjb2RlLj08PF9fXzsKKwkuYnl0ZQkweGYzLDB4YzMJCQkjIHJlcCByZXQKKy5zaXplCV94ODZfNjRfQUVTX2VuY3J5cHQsLi1feDg2XzY0X0FFU19lbmNyeXB0CitfX18KKworIyBpdCdzIHBvc3NpYmxlIHRvIGltcGxlbWVudCB0aGlzIGJ5IHNoaWZ0aW5nIHROIGJ5IDgsIGZpbGxpbmcgbGVhc3QKKyMgc2lnbmlmaWNhbnQgYnl0ZSB3aXRoIGJ5dGUgbG9hZCBhbmQgZmluYWxseSBic3dhcC1pbmcgYXQgdGhlIGVuZCwKKyMgYnV0IHN1Y2ggcGFydGlhbCByZWdpc3RlciBsb2FkIGtpbGxzIENvcmUgMi4uLgorc3ViIGVuY2NvbXBhY3R2ZXJ0KCkKK3sgbXkgKCR0MywkdDQsJHQ1KT0oIiVyOGQiLCIlcjlkIiwiJXIxM2QiKTsKKworJGNvZGUuPTw8X19fOworCW1vdnpiCWAmbG8oIiRzMCIpYCwkdDAKKwltb3Z6YglgJmxvKCIkczEiKWAsJHQxCisJbW92emIJYCZsbygiJHMyIilgLCR0MgorCW1vdnpiCSgkc2JveCwkdDAsMSksJHQwCisJbW92emIJKCRzYm94LCR0MSwxKSwkdDEKKwltb3Z6YgkoJHNib3gsJHQyLDEpLCR0MgorCisJbW92emIJYCZsbygiJHMzIilgLCR0MworCW1vdnpiCWAmaGkoIiRzMSIpYCwkYWNjMAorCW1vdnpiCWAmaGkoIiRzMiIpYCwkYWNjMQorCW1vdnpiCSgkc2JveCwkdDMsMSksJHQzCisJbW92emIJKCRzYm94LCRhY2MwLDEpLCR0NAkjJHQwCisJbW92emIJKCRzYm94LCRhY2MxLDEpLCR0NQkjJHQxCisKKwltb3Z6YglgJmhpKCIkczMiKWAsJGFjYzIKKwltb3Z6YglgJmhpKCIkczAiKWAsJGFjYzAKKwlzaHIJXCQxNiwkczIKKwltb3Z6YgkoJHNib3gsJGFjYzIsMSksJGFjYzIJIyR0MgorCW1vdnpiCSgkc2JveCwkYWNjMCwxKSwkYWNjMAkjJHQzCisJc2hyCVwkMTYsJHMzCisKKwltb3Z6YglgJmxvKCIkczIiKWAsJGFjYzEKKwlzaGwJXCQ4LCR0NAorCXNobAlcJDgsJHQ1CisJbW92emIJKCRzYm94LCRhY2MxLDEpLCRhY2MxCSMkdDAKKwl4b3IJJHQ0LCR0MAorCXhvcgkkdDUsJHQxCisKKwltb3Z6YglgJmxvKCIkczMiKWAsJHQ0CisJc2hyCVwkMTYsJHMwCisJc2hyCVwkMTYsJHMxCisJbW92emIJYCZsbygiJHMwIilgLCR0NQorCXNobAlcJDgsJGFjYzIKKwlzaGwJXCQ4LCRhY2MwCisJbW92emIJKCRzYm94LCR0NCwxKSwkdDQJIyR0MQorCW1vdnpiCSgkc2JveCwkdDUsMSksJHQ1CSMkdDIKKwl4b3IJJGFjYzIsJHQyCisJeG9yCSRhY2MwLCR0MworCisJbW92emIJYCZsbygiJHMxIilgLCRhY2MyCisJbW92emIJYCZoaSgiJHMzIilgLCRhY2MwCisJc2hsCVwkMTYsJGFjYzEKKwltb3Z6YgkoJHNib3gsJGFjYzIsMSksJGFjYzIJIyR0MworCW1vdnpiCSgkc2JveCwkYWNjMCwxKSwkYWNjMAkjJHQwCisJeG9yCSRhY2MxLCR0MAorCisJbW92emIJYCZoaSgiJHMwIilgLCRhY2MxCisJc2hyCVwkOCwkczIKKwlzaHIJXCQ4LCRzMQorCW1vdnpiCSgkc2JveCwkYWNjMSwxKSwkYWNjMQkjJHQxCisJbW92emIJKCRzYm94LCRzMiwxKSwkczMJIyR0MworCW1vdnpiCSgkc2JveCwkczEsMSksJHMyCSMkdDIKKwlzaGwJXCQxNiwkdDQKKwlzaGwJXCQxNiwkdDUKKwlzaGwJXCQxNiwkYWNjMgorCXhvcgkkdDQsJHQxCisJeG9yCSR0NSwkdDIKKwl4b3IJJGFjYzIsJHQzCisKKwlzaGwJXCQyNCwkYWNjMAorCXNobAlcJDI0LCRhY2MxCisJc2hsCVwkMjQsJHMzCisJeG9yCSRhY2MwLCR0MAorCXNobAlcJDI0LCRzMgorCXhvcgkkYWNjMSwkdDEKKwltb3YJJHQwLCRzMAorCW1vdgkkdDEsJHMxCisJeG9yCSR0MiwkczIKKwl4b3IJJHQzLCRzMworX19fCit9CisKK3N1YiBlbmN0cmFuc2Zvcm1fcmVmKCkKK3sgbXkgJHNuID0gc2hpZnQ7CisgIG15ICgkYWNjLCRyMiwkdG1wKT0oIiVyOGQiLCIlcjlkIiwiJXIxM2QiKTsKKworJGNvZGUuPTw8X19fOworCW1vdgkkc24sJGFjYworCWFuZAlcJDB4ODA4MDgwODAsJGFjYworCW1vdgkkYWNjLCR0bXAKKwlzaHIJXCQ3LCR0bXAKKwlsZWEJKCRzbiwkc24pLCRyMgorCXN1YgkkdG1wLCRhY2MKKwlhbmQJXCQweGZlZmVmZWZlLCRyMgorCWFuZAlcJDB4MWIxYjFiMWIsJGFjYworCW1vdgkkc24sJHRtcAorCXhvcgkkYWNjLCRyMgorCisJeG9yCSRyMiwkc24KKwlyb2wJXCQyNCwkc24KKwl4b3IJJHIyLCRzbgorCXJvcglcJDE2LCR0bXAKKwl4b3IJJHRtcCwkc24KKwlyb3IJXCQ4LCR0bXAKKwl4b3IJJHRtcCwkc24KK19fXworfQorCisjIHVubGlrZSBkZWNyeXB0IGNhc2UgaXQgZG9lcyBub3QgcGF5IG9mZiB0byBwYXJhbGxlbGl6ZSBlbmN0cmFuc2Zvcm0KK3N1YiBlbmN0cmFuc2Zvcm0oKQoreyBteSAoJHQzLCRyMjAsJHIyMSk9KCRhY2MyLCIlcjhkIiwiJXI5ZCIpOworCiskY29kZS49PDxfX187CisJbW92CSRzMCwkYWNjMAorCW1vdgkkczEsJGFjYzEKKwlhbmQJXCQweDgwODA4MDgwLCRhY2MwCisJYW5kCVwkMHg4MDgwODA4MCwkYWNjMQorCW1vdgkkYWNjMCwkdDAKKwltb3YJJGFjYzEsJHQxCisJc2hyCVwkNywkdDAKKwlsZWEJKCRzMCwkczApLCRyMjAKKwlzaHIJXCQ3LCR0MQorCWxlYQkoJHMxLCRzMSksJHIyMQorCXN1YgkkdDAsJGFjYzAKKwlzdWIJJHQxLCRhY2MxCisJYW5kCVwkMHhmZWZlZmVmZSwkcjIwCisJYW5kCVwkMHhmZWZlZmVmZSwkcjIxCisJYW5kCVwkMHgxYjFiMWIxYiwkYWNjMAorCWFuZAlcJDB4MWIxYjFiMWIsJGFjYzEKKwltb3YJJHMwLCR0MAorCW1vdgkkczEsJHQxCisJeG9yCSRhY2MwLCRyMjAKKwl4b3IJJGFjYzEsJHIyMQorCisJeG9yCSRyMjAsJHMwCisJeG9yCSRyMjEsJHMxCisJIG1vdgkkczIsJGFjYzAKKwkgbW92CSRzMywkYWNjMQorCXJvbAlcJDI0LCRzMAorCXJvbAlcJDI0LCRzMQorCSBhbmQJXCQweDgwODA4MDgwLCRhY2MwCisJIGFuZAlcJDB4ODA4MDgwODAsJGFjYzEKKwl4b3IJJHIyMCwkczAKKwl4b3IJJHIyMSwkczEKKwkgbW92CSRhY2MwLCR0MgorCSBtb3YJJGFjYzEsJHQzCisJcm9yCVwkMTYsJHQwCisJcm9yCVwkMTYsJHQxCisJIHNocglcJDcsJHQyCisJIGxlYQkoJHMyLCRzMiksJHIyMAorCXhvcgkkdDAsJHMwCisJeG9yCSR0MSwkczEKKwkgc2hyCVwkNywkdDMKKwkgbGVhCSgkczMsJHMzKSwkcjIxCisJcm9yCVwkOCwkdDAKKwlyb3IJXCQ4LCR0MQorCSBzdWIJJHQyLCRhY2MwCisJIHN1YgkkdDMsJGFjYzEKKwl4b3IJJHQwLCRzMAorCXhvcgkkdDEsJHMxCisKKwlhbmQJXCQweGZlZmVmZWZlLCRyMjAKKwlhbmQJXCQweGZlZmVmZWZlLCRyMjEKKwlhbmQJXCQweDFiMWIxYjFiLCRhY2MwCisJYW5kCVwkMHgxYjFiMWIxYiwkYWNjMQorCW1vdgkkczIsJHQyCisJbW92CSRzMywkdDMKKwl4b3IJJGFjYzAsJHIyMAorCXhvcgkkYWNjMSwkcjIxCisKKwl4b3IJJHIyMCwkczIKKwl4b3IJJHIyMSwkczMKKwlyb2wJXCQyNCwkczIKKwlyb2wJXCQyNCwkczMKKwl4b3IJJHIyMCwkczIKKwl4b3IJJHIyMSwkczMKKwltb3YJMCgkc2JveCksJGFjYzAJCQkjIHByZWZldGNoIFRlNAorCXJvcglcJDE2LCR0MgorCXJvcglcJDE2LCR0MworCW1vdgk2NCgkc2JveCksJGFjYzEKKwl4b3IJJHQyLCRzMgorCXhvcgkkdDMsJHMzCisJbW92CTEyOCgkc2JveCksJHIyMAorCXJvcglcJDgsJHQyCisJcm9yCVwkOCwkdDMKKwltb3YJMTkyKCRzYm94KSwkcjIxCisJeG9yCSR0MiwkczIKKwl4b3IJJHQzLCRzMworX19fCit9CisKKyRjb2RlLj08PF9fXzsKKy50eXBlCV94ODZfNjRfQUVTX2VuY3J5cHRfY29tcGFjdCxcQGFiaS1vbW5pcG90ZW50CisuYWxpZ24JMTYKK194ODZfNjRfQUVTX2VuY3J5cHRfY29tcGFjdDoKKwlsZWEJMTI4KCRzYm94KSwkaW5wCQkJIyBzaXplIG9wdGltaXphdGlvbgorCW1vdgkwLTEyOCgkaW5wKSwkYWNjMQkJIyBwcmVmZXRjaCBUZTQKKwltb3YJMzItMTI4KCRpbnApLCRhY2MyCisJbW92CTY0LTEyOCgkaW5wKSwkdDAKKwltb3YJOTYtMTI4KCRpbnApLCR0MQorCW1vdgkxMjgtMTI4KCRpbnApLCRhY2MxCisJbW92CTE2MC0xMjgoJGlucCksJGFjYzIKKwltb3YJMTkyLTEyOCgkaW5wKSwkdDAKKwltb3YJMjI0LTEyOCgkaW5wKSwkdDEKKwlqbXAJLkxlbmNfbG9vcF9jb21wYWN0CisuYWxpZ24JMTYKKy5MZW5jX2xvb3BfY29tcGFjdDoKKwkJeG9yCTAoJGtleSksJHMwCQkjIHhvciB3aXRoIGtleQorCQl4b3IJNCgka2V5KSwkczEKKwkJeG9yCTgoJGtleSksJHMyCisJCXhvcgkxMigka2V5KSwkczMKKwkJbGVhCTE2KCRrZXkpLCRrZXkKK19fXworCQkmZW5jY29tcGFjdHZlcnQoKTsKKyRjb2RlLj08PF9fXzsKKwkJY21wCTE2KCVyc3ApLCRrZXkKKwkJamUJLkxlbmNfY29tcGFjdF9kb25lCitfX18KKwkJJmVuY3RyYW5zZm9ybSgpOworJGNvZGUuPTw8X19fOworCWptcAkuTGVuY19sb29wX2NvbXBhY3QKKy5hbGlnbgkxNgorLkxlbmNfY29tcGFjdF9kb25lOgorCXhvcgkwKCRrZXkpLCRzMAorCXhvcgk0KCRrZXkpLCRzMQorCXhvcgk4KCRrZXkpLCRzMgorCXhvcgkxMigka2V5KSwkczMKKwkuYnl0ZQkweGYzLDB4YzMJCQkjIHJlcCByZXQKKy5zaXplCV94ODZfNjRfQUVTX2VuY3J5cHRfY29tcGFjdCwuLV94ODZfNjRfQUVTX2VuY3J5cHRfY29tcGFjdAorX19fCisKKyMgdm9pZCBBRVNfZW5jcnlwdCAoY29uc3Qgdm9pZCAqaW5wLHZvaWQgKm91dCxjb25zdCBBRVNfS0VZICprZXkpOworJGNvZGUuPTw8X19fOworLmdsb2JsCUFFU19lbmNyeXB0CisudHlwZQlBRVNfZW5jcnlwdCxcQGZ1bmN0aW9uLDMKKy5hbGlnbgkxNgorLmdsb2JsCWFzbV9BRVNfZW5jcnlwdAorLmhpZGRlbglhc21fQUVTX2VuY3J5cHQKK2FzbV9BRVNfZW5jcnlwdDoKK0FFU19lbmNyeXB0OgorCXB1c2gJJXJieAorCXB1c2gJJXJicAorCXB1c2gJJXIxMgorCXB1c2gJJXIxMworCXB1c2gJJXIxNAorCXB1c2gJJXIxNQorCisJIyBhbGxvY2F0ZSBmcmFtZSAiYWJvdmUiIGtleSBzY2hlZHVsZQorCW1vdgklcnNwLCVyMTAKKwlsZWEJLTYzKCVyZHgpLCVyY3gJIyAlcmR4IGlzIGtleSBhcmd1bWVudAorCWFuZAlcJC02NCwlcnNwCisJc3ViCSVyc3AsJXJjeAorCW5lZwklcmN4CisJYW5kCVwkMHgzYzAsJXJjeAorCXN1YgklcmN4LCVyc3AKKwlzdWIJXCQzMiwlcnNwCisKKwltb3YJJXJzaSwxNiglcnNwKQkjIHNhdmUgb3V0CisJbW92CSVyMTAsMjQoJXJzcCkJIyBzYXZlIHJlYWwgc3RhY2sgcG9pbnRlcgorLkxlbmNfcHJvbG9ndWU6CisKKwltb3YJJXJkeCwka2V5CisJbW92CTI0MCgka2V5KSwkcm5kcwkjIGxvYWQgcm91bmRzCisKKwltb3YJMCglcmRpKSwkczAJIyBsb2FkIGlucHV0IHZlY3RvcgorCW1vdgk0KCVyZGkpLCRzMQorCW1vdgk4KCVyZGkpLCRzMgorCW1vdgkxMiglcmRpKSwkczMKKworCXNobAlcJDQsJHJuZHMKKwlsZWEJKCRrZXksJHJuZHMpLCVyYnAKKwltb3YJJGtleSwoJXJzcCkJIyBrZXkgc2NoZWR1bGUKKwltb3YJJXJicCw4KCVyc3ApCSMgZW5kIG9mIGtleSBzY2hlZHVsZQorCisJIyBwaWNrIFRlNCBjb3B5IHdoaWNoIGNhbid0ICJvdmVybGFwIiB3aXRoIHN0YWNrIGZyYW1lIG9yIGtleSBzY2hlZHVsZQorCWxlYQkuTEFFU19UZSsyMDQ4KCVyaXApLCRzYm94CisJbGVhCTc2OCglcnNwKSwlcmJwCisJc3ViCSRzYm94LCVyYnAKKwlhbmQJXCQweDMwMCwlcmJwCisJbGVhCSgkc2JveCwlcmJwKSwkc2JveAorCisJY2FsbAlfeDg2XzY0X0FFU19lbmNyeXB0X2NvbXBhY3QKKworCW1vdgkxNiglcnNwKSwkb3V0CSMgcmVzdG9yZSBvdXQKKwltb3YJMjQoJXJzcCksJXJzaQkjIHJlc3RvcmUgc2F2ZWQgc3RhY2sgcG9pbnRlcgorCW1vdgkkczAsMCgkb3V0KQkjIHdyaXRlIG91dHB1dCB2ZWN0b3IKKwltb3YJJHMxLDQoJG91dCkKKwltb3YJJHMyLDgoJG91dCkKKwltb3YJJHMzLDEyKCRvdXQpCisKKwltb3YJKCVyc2kpLCVyMTUKKwltb3YJOCglcnNpKSwlcjE0CisJbW92CTE2KCVyc2kpLCVyMTMKKwltb3YJMjQoJXJzaSksJXIxMgorCW1vdgkzMiglcnNpKSwlcmJwCisJbW92CTQwKCVyc2kpLCVyYngKKwlsZWEJNDgoJXJzaSksJXJzcAorLkxlbmNfZXBpbG9ndWU6CisJcmV0Cisuc2l6ZQlBRVNfZW5jcnlwdCwuLUFFU19lbmNyeXB0CitfX18KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKKworc3ViIGRlY3ZlcnQoKQoreyBteSAkdDM9IiVyOGQiOwkjIHphcHMgJGlucCEKKworJGNvZGUuPTw8X19fOworCSMgZmF2b3IgMy13YXkgaXNzdWUgT3B0ZXJvbiBwaXBlbGluZS4uLgorCW1vdnpiCWAmbG8oIiRzMCIpYCwkYWNjMAorCW1vdnpiCWAmbG8oIiRzMSIpYCwkYWNjMQorCW1vdnpiCWAmbG8oIiRzMiIpYCwkYWNjMgorCW1vdgkwKCRzYm94LCRhY2MwLDgpLCR0MAorCW1vdgkwKCRzYm94LCRhY2MxLDgpLCR0MQorCW1vdgkwKCRzYm94LCRhY2MyLDgpLCR0MgorCisJbW92emIJYCZoaSgiJHMzIilgLCRhY2MwCisJbW92emIJYCZoaSgiJHMwIilgLCRhY2MxCisJbW92emIJYCZsbygiJHMzIilgLCRhY2MyCisJeG9yCTMoJHNib3gsJGFjYzAsOCksJHQwCisJeG9yCTMoJHNib3gsJGFjYzEsOCksJHQxCisJbW92CTAoJHNib3gsJGFjYzIsOCksJHQzCisKKwltb3Z6YglgJmhpKCIkczEiKWAsJGFjYzAKKwlzaHIJXCQxNiwkczAKKwltb3Z6YglgJmhpKCIkczIiKWAsJGFjYzIKKwl4b3IJMygkc2JveCwkYWNjMCw4KSwkdDIKKwlzaHIJXCQxNiwkczMKKwl4b3IJMygkc2JveCwkYWNjMiw4KSwkdDMKKworCXNocglcJDE2LCRzMQorCWxlYQkxNigka2V5KSwka2V5CisJc2hyCVwkMTYsJHMyCisKKwltb3Z6YglgJmxvKCIkczIiKWAsJGFjYzAKKwltb3Z6YglgJmxvKCIkczMiKWAsJGFjYzEKKwltb3Z6YglgJmxvKCIkczAiKWAsJGFjYzIKKwl4b3IJMigkc2JveCwkYWNjMCw4KSwkdDAKKwl4b3IJMigkc2JveCwkYWNjMSw4KSwkdDEKKwl4b3IJMigkc2JveCwkYWNjMiw4KSwkdDIKKworCW1vdnpiCWAmaGkoIiRzMSIpYCwkYWNjMAorCW1vdnpiCWAmaGkoIiRzMiIpYCwkYWNjMQorCW1vdnpiCWAmbG8oIiRzMSIpYCwkYWNjMgorCXhvcgkxKCRzYm94LCRhY2MwLDgpLCR0MAorCXhvcgkxKCRzYm94LCRhY2MxLDgpLCR0MQorCXhvcgkyKCRzYm94LCRhY2MyLDgpLCR0MworCisJbW92emIJYCZoaSgiJHMzIilgLCRhY2MwCisJbW92CTEyKCRrZXkpLCRzMworCW1vdnpiCWAmaGkoIiRzMCIpYCwkYWNjMgorCXhvcgkxKCRzYm94LCRhY2MwLDgpLCR0MgorCW1vdgkwKCRrZXkpLCRzMAorCXhvcgkxKCRzYm94LCRhY2MyLDgpLCR0MworCisJeG9yCSR0MCwkczAKKwltb3YJNCgka2V5KSwkczEKKwltb3YJOCgka2V5KSwkczIKKwl4b3IJJHQyLCRzMgorCXhvcgkkdDEsJHMxCisJeG9yCSR0MywkczMKK19fXworfQorCitzdWIgZGVjbGFzdHZlcnQoKQoreyBteSAkdDM9IiVyOGQiOwkjIHphcHMgJGlucCEKKworJGNvZGUuPTw8X19fOworCWxlYQkyMDQ4KCRzYm94KSwkc2JveAkjIHNpemUgb3B0aW1pemF0aW9uCisJbW92emIJYCZsbygiJHMwIilgLCRhY2MwCisJbW92emIJYCZsbygiJHMxIilgLCRhY2MxCisJbW92emIJYCZsbygiJHMyIilgLCRhY2MyCisJbW92emIJKCRzYm94LCRhY2MwLDEpLCR0MAorCW1vdnpiCSgkc2JveCwkYWNjMSwxKSwkdDEKKwltb3Z6YgkoJHNib3gsJGFjYzIsMSksJHQyCisKKwltb3Z6YglgJmxvKCIkczMiKWAsJGFjYzAKKwltb3Z6YglgJmhpKCIkczMiKWAsJGFjYzEKKwltb3Z6YglgJmhpKCIkczAiKWAsJGFjYzIKKwltb3Z6YgkoJHNib3gsJGFjYzAsMSksJHQzCisJbW92emIJKCRzYm94LCRhY2MxLDEpLCRhY2MxCSMkdDAKKwltb3Z6YgkoJHNib3gsJGFjYzIsMSksJGFjYzIJIyR0MQorCisJc2hsCVwkOCwkYWNjMQorCXNobAlcJDgsJGFjYzIKKworCXhvcgkkYWNjMSwkdDAKKwl4b3IJJGFjYzIsJHQxCisJc2hyCVwkMTYsJHMzCisKKwltb3Z6YglgJmhpKCIkczEiKWAsJGFjYzAKKwltb3Z6YglgJmhpKCIkczIiKWAsJGFjYzEKKwlzaHIJXCQxNiwkczAKKwltb3Z6YgkoJHNib3gsJGFjYzAsMSksJGFjYzAJIyR0MgorCW1vdnpiCSgkc2JveCwkYWNjMSwxKSwkYWNjMQkjJHQzCisKKwlzaGwJXCQ4LCRhY2MwCisJc2hsCVwkOCwkYWNjMQorCXNocglcJDE2LCRzMQorCXhvcgkkYWNjMCwkdDIKKwl4b3IJJGFjYzEsJHQzCisJc2hyCVwkMTYsJHMyCisKKwltb3Z6YglgJmxvKCIkczIiKWAsJGFjYzAKKwltb3Z6YglgJmxvKCIkczMiKWAsJGFjYzEKKwltb3Z6YglgJmxvKCIkczAiKWAsJGFjYzIKKwltb3Z6YgkoJHNib3gsJGFjYzAsMSksJGFjYzAJIyR0MAorCW1vdnpiCSgkc2JveCwkYWNjMSwxKSwkYWNjMQkjJHQxCisJbW92emIJKCRzYm94LCRhY2MyLDEpLCRhY2MyCSMkdDIKKworCXNobAlcJDE2LCRhY2MwCisJc2hsCVwkMTYsJGFjYzEKKwlzaGwJXCQxNiwkYWNjMgorCisJeG9yCSRhY2MwLCR0MAorCXhvcgkkYWNjMSwkdDEKKwl4b3IJJGFjYzIsJHQyCisKKwltb3Z6YglgJmxvKCIkczEiKWAsJGFjYzAKKwltb3Z6YglgJmhpKCIkczEiKWAsJGFjYzEKKwltb3Z6YglgJmhpKCIkczIiKWAsJGFjYzIKKwltb3Z6YgkoJHNib3gsJGFjYzAsMSksJGFjYzAJIyR0MworCW1vdnpiCSgkc2JveCwkYWNjMSwxKSwkYWNjMQkjJHQwCisJbW92emIJKCRzYm94LCRhY2MyLDEpLCRhY2MyCSMkdDEKKworCXNobAlcJDE2LCRhY2MwCisJc2hsCVwkMjQsJGFjYzEKKwlzaGwJXCQyNCwkYWNjMgorCisJeG9yCSRhY2MwLCR0MworCXhvcgkkYWNjMSwkdDAKKwl4b3IJJGFjYzIsJHQxCisKKwltb3Z6YglgJmhpKCIkczMiKWAsJGFjYzAKKwltb3Z6YglgJmhpKCIkczAiKWAsJGFjYzEKKwltb3YJMTYrMTIoJGtleSksJHMzCisJbW92emIJKCRzYm94LCRhY2MwLDEpLCRhY2MwCSMkdDIKKwltb3Z6YgkoJHNib3gsJGFjYzEsMSksJGFjYzEJIyR0MworCW1vdgkxNiswKCRrZXkpLCRzMAorCisJc2hsCVwkMjQsJGFjYzAKKwlzaGwJXCQyNCwkYWNjMQorCisJeG9yCSRhY2MwLCR0MgorCXhvcgkkYWNjMSwkdDMKKworCW1vdgkxNis0KCRrZXkpLCRzMQorCW1vdgkxNis4KCRrZXkpLCRzMgorCWxlYQktMjA0OCgkc2JveCksJHNib3gKKwl4b3IJJHQwLCRzMAorCXhvcgkkdDEsJHMxCisJeG9yCSR0MiwkczIKKwl4b3IJJHQzLCRzMworX19fCit9CisKK3N1YiBkZWNzdGVwKCkKK3sgbXkgKCRpLEBzKSA9IEBfOworICBteSAkdG1wMD0kYWNjMDsKKyAgbXkgJHRtcDE9JGFjYzE7CisgIG15ICR0bXAyPSRhY2MyOworICBteSAkb3V0PSgkdDAsJHQxLCR0Miwkc1swXSlbJGldOworCisJJGNvZGUuPSIJbW92CSRzWzBdLCRvdXRcbiIJCWlmICgkaSE9Myk7CisJCQkkdG1wMT0kc1syXQkJCWlmICgkaT09Myk7CisJJGNvZGUuPSIJbW92CSRzWzJdLCR0bXAxXG4iCQlpZiAoJGkhPTMpOworCSRjb2RlLj0iCWFuZAlcJDB4RkYsJG91dFxuIjsKKworCSRjb2RlLj0iCW1vdgkwKCRzYm94LCRvdXQsOCksJG91dFxuIjsKKwkkY29kZS49IglzaHIJXCQxNiwkdG1wMVxuIjsKKwkJCSR0bXAyPSRzWzNdCQkJaWYgKCRpPT0zKTsKKwkkY29kZS49Igltb3YJJHNbM10sJHRtcDJcbiIJCWlmICgkaSE9Myk7CisKKwkJCSR0bXAwPSRzWzFdCQkJaWYgKCRpPT0zKTsKKwkkY29kZS49Igltb3Z6YgkiLiZoaSgkc1sxXSkuIiwkdG1wMFxuIjsKKwkkY29kZS49IglhbmQJXCQweEZGLCR0bXAxXG4iOworCSRjb2RlLj0iCXNocglcJDI0LCR0bXAyXG4iOworCisJJGNvZGUuPSIJeG9yCTMoJHNib3gsJHRtcDAsOCksJG91dFxuIjsKKwkkY29kZS49Igl4b3IJMigkc2JveCwkdG1wMSw4KSwkb3V0XG4iOworCSRjb2RlLj0iCXhvcgkxKCRzYm94LCR0bXAyLDgpLCRvdXRcbiI7CisKKwkkY29kZS49Igltb3YJJHQyLCRzWzFdXG4iCQlpZiAoJGk9PTMpOworCSRjb2RlLj0iCW1vdgkkdDEsJHNbMl1cbiIJCWlmICgkaT09Myk7CisJJGNvZGUuPSIJbW92CSR0MCwkc1szXVxuIgkJaWYgKCRpPT0zKTsKKwkkY29kZS49IlxuIjsKK30KKworc3ViIGRlY2xhc3QoKQoreyBteSAoJGksQHMpPUBfOworICBteSAkdG1wMD0kYWNjMDsKKyAgbXkgJHRtcDE9JGFjYzE7CisgIG15ICR0bXAyPSRhY2MyOworICBteSAkb3V0PSgkdDAsJHQxLCR0Miwkc1swXSlbJGldOworCisJJGNvZGUuPSIJbW92CSRzWzBdLCRvdXRcbiIJCWlmICgkaSE9Myk7CisJCQkkdG1wMT0kc1syXQkJCWlmICgkaT09Myk7CisJJGNvZGUuPSIJbW92CSRzWzJdLCR0bXAxXG4iCQlpZiAoJGkhPTMpOworCSRjb2RlLj0iCWFuZAlcJDB4RkYsJG91dFxuIjsKKworCSRjb2RlLj0iCW1vdnpiCTIwNDgoJHNib3gsJG91dCwxKSwkb3V0XG4iOworCSRjb2RlLj0iCXNocglcJDE2LCR0bXAxXG4iOworCQkJJHRtcDI9JHNbM10JCQlpZiAoJGk9PTMpOworCSRjb2RlLj0iCW1vdgkkc1szXSwkdG1wMlxuIgkJaWYgKCRpIT0zKTsKKworCQkJJHRtcDA9JHNbMV0JCQlpZiAoJGk9PTMpOworCSRjb2RlLj0iCW1vdnpiCSIuJmhpKCRzWzFdKS4iLCR0bXAwXG4iOworCSRjb2RlLj0iCWFuZAlcJDB4RkYsJHRtcDFcbiI7CisJJGNvZGUuPSIJc2hyCVwkMjQsJHRtcDJcbiI7CisKKwkkY29kZS49Igltb3Z6YgkyMDQ4KCRzYm94LCR0bXAwLDEpLCR0bXAwXG4iOworCSRjb2RlLj0iCW1vdnpiCTIwNDgoJHNib3gsJHRtcDEsMSksJHRtcDFcbiI7CisJJGNvZGUuPSIJbW92emIJMjA0OCgkc2JveCwkdG1wMiwxKSwkdG1wMlxuIjsKKworCSRjb2RlLj0iCXNobAlcJDgsJHRtcDBcbiI7CisJJGNvZGUuPSIJc2hsCVwkMTYsJHRtcDFcbiI7CisJJGNvZGUuPSIJc2hsCVwkMjQsJHRtcDJcbiI7CisKKwkkY29kZS49Igl4b3IJJHRtcDAsJG91dFxuIjsKKwkkY29kZS49Igltb3YJJHQyLCRzWzFdXG4iCQlpZiAoJGk9PTMpOworCSRjb2RlLj0iCXhvcgkkdG1wMSwkb3V0XG4iOworCSRjb2RlLj0iCW1vdgkkdDEsJHNbMl1cbiIJCWlmICgkaT09Myk7CisJJGNvZGUuPSIJeG9yCSR0bXAyLCRvdXRcbiI7CisJJGNvZGUuPSIJbW92CSR0MCwkc1szXVxuIgkJaWYgKCRpPT0zKTsKKwkkY29kZS49IlxuIjsKK30KKworJGNvZGUuPTw8X19fOworLnR5cGUJX3g4Nl82NF9BRVNfZGVjcnlwdCxcQGFiaS1vbW5pcG90ZW50CisuYWxpZ24JMTYKK194ODZfNjRfQUVTX2RlY3J5cHQ6CisJeG9yCTAoJGtleSksJHMwCQkJIyB4b3Igd2l0aCBrZXkKKwl4b3IJNCgka2V5KSwkczEKKwl4b3IJOCgka2V5KSwkczIKKwl4b3IJMTIoJGtleSksJHMzCisKKwltb3YJMjQwKCRrZXkpLCRybmRzCQkJIyBsb2FkIGtleS0+cm91bmRzCisJc3ViCVwkMSwkcm5kcworCWptcAkuTGRlY19sb29wCisuYWxpZ24JMTYKKy5MZGVjX2xvb3A6CitfX18KKwlpZiAoJHZlcnRpY2Fsc3BpbikgeyAmZGVjdmVydCgpOyB9CisJZWxzZSB7CSZkZWNzdGVwKDAsJHMwLCRzMywkczIsJHMxKTsKKwkJJmRlY3N0ZXAoMSwkczEsJHMwLCRzMywkczIpOworCQkmZGVjc3RlcCgyLCRzMiwkczEsJHMwLCRzMyk7CisJCSZkZWNzdGVwKDMsJHMzLCRzMiwkczEsJHMwKTsKKwkJJGNvZGUuPTw8X19fOworCQlsZWEJMTYoJGtleSksJGtleQorCQl4b3IJMCgka2V5KSwkczAJCQkjIHhvciB3aXRoIGtleQorCQl4b3IJNCgka2V5KSwkczEKKwkJeG9yCTgoJGtleSksJHMyCisJCXhvcgkxMigka2V5KSwkczMKK19fXworCX0KKyRjb2RlLj08PF9fXzsKKwlzdWIJXCQxLCRybmRzCisJam56CS5MZGVjX2xvb3AKK19fXworCWlmICgkdmVydGljYWxzcGluKSB7ICZkZWNsYXN0dmVydCgpOyB9CisJZWxzZSB7CSZkZWNsYXN0KDAsJHMwLCRzMywkczIsJHMxKTsKKwkJJmRlY2xhc3QoMSwkczEsJHMwLCRzMywkczIpOworCQkmZGVjbGFzdCgyLCRzMiwkczEsJHMwLCRzMyk7CisJCSZkZWNsYXN0KDMsJHMzLCRzMiwkczEsJHMwKTsKKwkJJGNvZGUuPTw8X19fOworCQl4b3IJMTYrMCgka2V5KSwkczAJCQkjIHhvciB3aXRoIGtleQorCQl4b3IJMTYrNCgka2V5KSwkczEKKwkJeG9yCTE2KzgoJGtleSksJHMyCisJCXhvcgkxNisxMigka2V5KSwkczMKK19fXworCX0KKyRjb2RlLj08PF9fXzsKKwkuYnl0ZQkweGYzLDB4YzMJCQkjIHJlcCByZXQKKy5zaXplCV94ODZfNjRfQUVTX2RlY3J5cHQsLi1feDg2XzY0X0FFU19kZWNyeXB0CitfX18KKworc3ViIGRlY2NvbXBhY3R2ZXJ0KCkKK3sgbXkgKCR0MywkdDQsJHQ1KT0oIiVyOGQiLCIlcjlkIiwiJXIxM2QiKTsKKworJGNvZGUuPTw8X19fOworCW1vdnpiCWAmbG8oIiRzMCIpYCwkdDAKKwltb3Z6YglgJmxvKCIkczEiKWAsJHQxCisJbW92emIJYCZsbygiJHMyIilgLCR0MgorCW1vdnpiCSgkc2JveCwkdDAsMSksJHQwCisJbW92emIJKCRzYm94LCR0MSwxKSwkdDEKKwltb3Z6YgkoJHNib3gsJHQyLDEpLCR0MgorCisJbW92emIJYCZsbygiJHMzIilgLCR0MworCW1vdnpiCWAmaGkoIiRzMyIpYCwkYWNjMAorCW1vdnpiCWAmaGkoIiRzMCIpYCwkYWNjMQorCW1vdnpiCSgkc2JveCwkdDMsMSksJHQzCisJbW92emIJKCRzYm94LCRhY2MwLDEpLCR0NAkjJHQwCisJbW92emIJKCRzYm94LCRhY2MxLDEpLCR0NQkjJHQxCisKKwltb3Z6YglgJmhpKCIkczEiKWAsJGFjYzIKKwltb3Z6YglgJmhpKCIkczIiKWAsJGFjYzAKKwlzaHIJXCQxNiwkczIKKwltb3Z6YgkoJHNib3gsJGFjYzIsMSksJGFjYzIJIyR0MgorCW1vdnpiCSgkc2JveCwkYWNjMCwxKSwkYWNjMAkjJHQzCisJc2hyCVwkMTYsJHMzCisKKwltb3Z6YglgJmxvKCIkczIiKWAsJGFjYzEKKwlzaGwJXCQ4LCR0NAorCXNobAlcJDgsJHQ1CisJbW92emIJKCRzYm94LCRhY2MxLDEpLCRhY2MxCSMkdDAKKwl4b3IJJHQ0LCR0MAorCXhvcgkkdDUsJHQxCisKKwltb3Z6YglgJmxvKCIkczMiKWAsJHQ0CisJc2hyCVwkMTYsJHMwCisJc2hyCVwkMTYsJHMxCisJbW92emIJYCZsbygiJHMwIilgLCR0NQorCXNobAlcJDgsJGFjYzIKKwlzaGwJXCQ4LCRhY2MwCisJbW92emIJKCRzYm94LCR0NCwxKSwkdDQJIyR0MQorCW1vdnpiCSgkc2JveCwkdDUsMSksJHQ1CSMkdDIKKwl4b3IJJGFjYzIsJHQyCisJeG9yCSRhY2MwLCR0MworCisJbW92emIJYCZsbygiJHMxIilgLCRhY2MyCisJbW92emIJYCZoaSgiJHMxIilgLCRhY2MwCisJc2hsCVwkMTYsJGFjYzEKKwltb3Z6YgkoJHNib3gsJGFjYzIsMSksJGFjYzIJIyR0MworCW1vdnpiCSgkc2JveCwkYWNjMCwxKSwkYWNjMAkjJHQwCisJeG9yCSRhY2MxLCR0MAorCisJbW92emIJYCZoaSgiJHMyIilgLCRhY2MxCisJc2hsCVwkMTYsJHQ0CisJc2hsCVwkMTYsJHQ1CisJbW92emIJKCRzYm94LCRhY2MxLDEpLCRzMQkjJHQxCisJeG9yCSR0NCwkdDEKKwl4b3IJJHQ1LCR0MgorCisJbW92emIJYCZoaSgiJHMzIilgLCRhY2MxCisJc2hyCVwkOCwkczAKKwlzaGwJXCQxNiwkYWNjMgorCW1vdnpiCSgkc2JveCwkYWNjMSwxKSwkczIJIyR0MgorCW1vdnpiCSgkc2JveCwkczAsMSksJHMzCSMkdDMKKwl4b3IJJGFjYzIsJHQzCisKKwlzaGwJXCQyNCwkYWNjMAorCXNobAlcJDI0LCRzMQorCXNobAlcJDI0LCRzMgorCXhvcgkkYWNjMCwkdDAKKwlzaGwJXCQyNCwkczMKKwl4b3IJJHQxLCRzMQorCW1vdgkkdDAsJHMwCisJeG9yCSR0MiwkczIKKwl4b3IJJHQzLCRzMworX19fCit9CisKKyMgcGFyYWxsZWxpemVkIHZlcnNpb24hIGlucHV0IGlzIHBhaXIgb2YgNjQtYml0IHZhbHVlczogJXJheD1zMS5zMAorIyBhbmQgJXJjeD1zMy5zMiwgb3V0cHV0IGlzIGZvdXIgMzItYml0IHZhbHVlcyBpbiAlZWF4PXMwLCAlZWJ4PXMxLAorIyAlZWN4PXMyIGFuZCAlZWR4PXMzLgorc3ViIGRlY3RyYW5zZm9ybSgpCit7IG15ICgkdHAxMCwkdHAyMCwkdHA0MCwkdHA4MCwkYWNjMCk9KCIlcmF4IiwiJXI4IiwgIiVyOSIsICIlcjEwIiwiJXJieCIpOworICBteSAoJHRwMTgsJHRwMjgsJHRwNDgsJHRwODgsJGFjYzgpPSgiJXJjeCIsIiVyMTEiLCIlcjEyIiwiJXIxMyIsIiVyZHgiKTsKKyAgbXkgJHByZWZldGNoID0gc2hpZnQ7CisKKyRjb2RlLj08PF9fXzsKKwltb3YJJHRwMTAsJGFjYzAKKwltb3YJJHRwMTgsJGFjYzgKKwlhbmQJJG1hc2s4MCwkYWNjMAorCWFuZAkkbWFzazgwLCRhY2M4CisJbW92CSRhY2MwLCR0cDQwCisJbW92CSRhY2M4LCR0cDQ4CisJc2hyCVwkNywkdHA0MAorCWxlYQkoJHRwMTAsJHRwMTApLCR0cDIwCisJc2hyCVwkNywkdHA0OAorCWxlYQkoJHRwMTgsJHRwMTgpLCR0cDI4CisJc3ViCSR0cDQwLCRhY2MwCisJc3ViCSR0cDQ4LCRhY2M4CisJYW5kCSRtYXNrZmUsJHRwMjAKKwlhbmQJJG1hc2tmZSwkdHAyOAorCWFuZAkkbWFzazFiLCRhY2MwCisJYW5kCSRtYXNrMWIsJGFjYzgKKwl4b3IJJHRwMjAsJGFjYzAKKwl4b3IJJHRwMjgsJGFjYzgKKwltb3YJJGFjYzAsJHRwMjAKKwltb3YJJGFjYzgsJHRwMjgKKworCWFuZAkkbWFzazgwLCRhY2MwCisJYW5kCSRtYXNrODAsJGFjYzgKKwltb3YJJGFjYzAsJHRwODAKKwltb3YJJGFjYzgsJHRwODgKKwlzaHIJXCQ3LCR0cDgwCisJbGVhCSgkdHAyMCwkdHAyMCksJHRwNDAKKwlzaHIJXCQ3LCR0cDg4CisJbGVhCSgkdHAyOCwkdHAyOCksJHRwNDgKKwlzdWIJJHRwODAsJGFjYzAKKwlzdWIJJHRwODgsJGFjYzgKKwlhbmQJJG1hc2tmZSwkdHA0MAorCWFuZAkkbWFza2ZlLCR0cDQ4CisJYW5kCSRtYXNrMWIsJGFjYzAKKwlhbmQJJG1hc2sxYiwkYWNjOAorCXhvcgkkdHA0MCwkYWNjMAorCXhvcgkkdHA0OCwkYWNjOAorCW1vdgkkYWNjMCwkdHA0MAorCW1vdgkkYWNjOCwkdHA0OAorCisJYW5kCSRtYXNrODAsJGFjYzAKKwlhbmQJJG1hc2s4MCwkYWNjOAorCW1vdgkkYWNjMCwkdHA4MAorCW1vdgkkYWNjOCwkdHA4OAorCXNocglcJDcsJHRwODAKKwkgeG9yCSR0cDEwLCR0cDIwCQkjIHRwMl49dHAxCisJc2hyCVwkNywkdHA4OAorCSB4b3IJJHRwMTgsJHRwMjgJCSMgdHAyXj10cDEKKwlzdWIJJHRwODAsJGFjYzAKKwlzdWIJJHRwODgsJGFjYzgKKwlsZWEJKCR0cDQwLCR0cDQwKSwkdHA4MAorCWxlYQkoJHRwNDgsJHRwNDgpLCR0cDg4CisJIHhvcgkkdHAxMCwkdHA0MAkJIyB0cDRePXRwMQorCSB4b3IJJHRwMTgsJHRwNDgJCSMgdHA0Xj10cDEKKwlhbmQJJG1hc2tmZSwkdHA4MAorCWFuZAkkbWFza2ZlLCR0cDg4CisJYW5kCSRtYXNrMWIsJGFjYzAKKwlhbmQJJG1hc2sxYiwkYWNjOAorCXhvcgkkYWNjMCwkdHA4MAorCXhvcgkkYWNjOCwkdHA4OAorCisJeG9yCSR0cDgwLCR0cDEwCQkjIHRwMV49dHA4CisJeG9yCSR0cDg4LCR0cDE4CQkjIHRwMV49dHA4CisJeG9yCSR0cDgwLCR0cDIwCQkjIHRwMl50cDFePXRwOAorCXhvcgkkdHA4OCwkdHAyOAkJIyB0cDJedHAxXj10cDgKKwltb3YJJHRwMTAsJGFjYzAKKwltb3YJJHRwMTgsJGFjYzgKKwl4b3IJJHRwODAsJHRwNDAJCSMgdHA0XnRwMV49dHA4CisJeG9yCSR0cDg4LCR0cDQ4CQkjIHRwNF50cDFePXRwOAorCXNocglcJDMyLCRhY2MwCisJc2hyCVwkMzIsJGFjYzgKKwl4b3IJJHRwMjAsJHRwODAJCSMgdHA4Xj10cDhedHAyXnRwMT10cDJedHAxCisJeG9yCSR0cDI4LCR0cDg4CQkjIHRwOF49dHA4XnRwMl50cDE9dHAyXnRwMQorCXJvbAlcJDgsYCZMTygiJHRwMTAiKWAJIyBST1RBVEUodHAxXnRwOCw4KQorCXJvbAlcJDgsYCZMTygiJHRwMTgiKWAJIyBST1RBVEUodHAxXnRwOCw4KQorCXhvcgkkdHA0MCwkdHA4MAkJIyB0cDJedHAxXj10cDhedHA0XnRwMT10cDhedHA0XnRwMgorCXhvcgkkdHA0OCwkdHA4OAkJIyB0cDJedHAxXj10cDhedHA0XnRwMT10cDhedHA0XnRwMgorCisJcm9sCVwkOCxgJkxPKCIkYWNjMCIpYAkjIFJPVEFURSh0cDFedHA4LDgpCisJcm9sCVwkOCxgJkxPKCIkYWNjOCIpYAkjIFJPVEFURSh0cDFedHA4LDgpCisJeG9yCWAmTE8oIiR0cDgwIilgLGAmTE8oIiR0cDEwIilgCisJeG9yCWAmTE8oIiR0cDg4IilgLGAmTE8oIiR0cDE4IilgCisJc2hyCVwkMzIsJHRwODAKKwlzaHIJXCQzMiwkdHA4OAorCXhvcglgJkxPKCIkdHA4MCIpYCxgJkxPKCIkYWNjMCIpYAorCXhvcglgJkxPKCIkdHA4OCIpYCxgJkxPKCIkYWNjOCIpYAorCisJbW92CSR0cDIwLCR0cDgwCisJbW92CSR0cDI4LCR0cDg4CisJc2hyCVwkMzIsJHRwODAKKwlzaHIJXCQzMiwkdHA4OAorCXJvbAlcJDI0LGAmTE8oIiR0cDIwIilgCSMgUk9UQVRFKHRwMl50cDFedHA4LDI0KQorCXJvbAlcJDI0LGAmTE8oIiR0cDI4IilgCSMgUk9UQVRFKHRwMl50cDFedHA4LDI0KQorCXJvbAlcJDI0LGAmTE8oIiR0cDgwIilgCSMgUk9UQVRFKHRwMl50cDFedHA4LDI0KQorCXJvbAlcJDI0LGAmTE8oIiR0cDg4IilgCSMgUk9UQVRFKHRwMl50cDFedHA4LDI0KQorCXhvcglgJkxPKCIkdHAyMCIpYCxgJkxPKCIkdHAxMCIpYAorCXhvcglgJkxPKCIkdHAyOCIpYCxgJkxPKCIkdHAxOCIpYAorCW1vdgkkdHA0MCwkdHAyMAorCW1vdgkkdHA0OCwkdHAyOAorCXhvcglgJkxPKCIkdHA4MCIpYCxgJkxPKCIkYWNjMCIpYAorCXhvcglgJkxPKCIkdHA4OCIpYCxgJkxPKCIkYWNjOCIpYAorCisJYCJtb3YJMCgkc2JveCksJG1hc2s4MCIJaWYgKCRwcmVmZXRjaClgCisJc2hyCVwkMzIsJHRwMjAKKwlzaHIJXCQzMiwkdHAyOAorCWAibW92CTY0KCRzYm94KSwkbWFza2ZlIglpZiAoJHByZWZldGNoKWAKKwlyb2wJXCQxNixgJkxPKCIkdHA0MCIpYAkjIFJPVEFURSh0cDRedHAxXnRwOCwxNikKKwlyb2wJXCQxNixgJkxPKCIkdHA0OCIpYAkjIFJPVEFURSh0cDRedHAxXnRwOCwxNikKKwlgIm1vdgkxMjgoJHNib3gpLCRtYXNrMWIiCWlmICgkcHJlZmV0Y2gpYAorCXJvbAlcJDE2LGAmTE8oIiR0cDIwIilgCSMgUk9UQVRFKHRwNF50cDFedHA4LDE2KQorCXJvbAlcJDE2LGAmTE8oIiR0cDI4IilgCSMgUk9UQVRFKHRwNF50cDFedHA4LDE2KQorCWAibW92CTE5Migkc2JveCksJHRwODAiCWlmICgkcHJlZmV0Y2gpYAorCXhvcglgJkxPKCIkdHA0MCIpYCxgJkxPKCIkdHAxMCIpYAorCXhvcglgJkxPKCIkdHA0OCIpYCxgJkxPKCIkdHAxOCIpYAorCWAibW92CTI1Nigkc2JveCksJHRwODgiCWlmICgkcHJlZmV0Y2gpYAorCXhvcglgJkxPKCIkdHAyMCIpYCxgJkxPKCIkYWNjMCIpYAorCXhvcglgJkxPKCIkdHAyOCIpYCxgJkxPKCIkYWNjOCIpYAorX19fCit9CisKKyRjb2RlLj08PF9fXzsKKy50eXBlCV94ODZfNjRfQUVTX2RlY3J5cHRfY29tcGFjdCxcQGFiaS1vbW5pcG90ZW50CisuYWxpZ24JMTYKK194ODZfNjRfQUVTX2RlY3J5cHRfY29tcGFjdDoKKwlsZWEJMTI4KCRzYm94KSwkaW5wCQkJIyBzaXplIG9wdGltaXphdGlvbgorCW1vdgkwLTEyOCgkaW5wKSwkYWNjMQkJIyBwcmVmZXRjaCBUZDQKKwltb3YJMzItMTI4KCRpbnApLCRhY2MyCisJbW92CTY0LTEyOCgkaW5wKSwkdDAKKwltb3YJOTYtMTI4KCRpbnApLCR0MQorCW1vdgkxMjgtMTI4KCRpbnApLCRhY2MxCisJbW92CTE2MC0xMjgoJGlucCksJGFjYzIKKwltb3YJMTkyLTEyOCgkaW5wKSwkdDAKKwltb3YJMjI0LTEyOCgkaW5wKSwkdDEKKwlqbXAJLkxkZWNfbG9vcF9jb21wYWN0CisKKy5hbGlnbgkxNgorLkxkZWNfbG9vcF9jb21wYWN0OgorCQl4b3IJMCgka2V5KSwkczAJCSMgeG9yIHdpdGgga2V5CisJCXhvcgk0KCRrZXkpLCRzMQorCQl4b3IJOCgka2V5KSwkczIKKwkJeG9yCTEyKCRrZXkpLCRzMworCQlsZWEJMTYoJGtleSksJGtleQorX19fCisJCSZkZWNjb21wYWN0dmVydCgpOworJGNvZGUuPTw8X19fOworCQljbXAJMTYoJXJzcCksJGtleQorCQlqZQkuTGRlY19jb21wYWN0X2RvbmUKKworCQltb3YJMjU2KzAoJHNib3gpLCRtYXNrODAKKwkJc2hsCVwkMzIsJXJieAorCQlzaGwJXCQzMiwlcmR4CisJCW1vdgkyNTYrOCgkc2JveCksJG1hc2tmZQorCQlvcgklcmJ4LCVyYXgKKwkJb3IJJXJkeCwlcmN4CisJCW1vdgkyNTYrMTYoJHNib3gpLCRtYXNrMWIKK19fXworCQkmZGVjdHJhbnNmb3JtKDEpOworJGNvZGUuPTw8X19fOworCWptcAkuTGRlY19sb29wX2NvbXBhY3QKKy5hbGlnbgkxNgorLkxkZWNfY29tcGFjdF9kb25lOgorCXhvcgkwKCRrZXkpLCRzMAorCXhvcgk0KCRrZXkpLCRzMQorCXhvcgk4KCRrZXkpLCRzMgorCXhvcgkxMigka2V5KSwkczMKKwkuYnl0ZQkweGYzLDB4YzMJCQkjIHJlcCByZXQKKy5zaXplCV94ODZfNjRfQUVTX2RlY3J5cHRfY29tcGFjdCwuLV94ODZfNjRfQUVTX2RlY3J5cHRfY29tcGFjdAorX19fCisKKyMgdm9pZCBBRVNfZGVjcnlwdCAoY29uc3Qgdm9pZCAqaW5wLHZvaWQgKm91dCxjb25zdCBBRVNfS0VZICprZXkpOworJGNvZGUuPTw8X19fOworLmdsb2JsCUFFU19kZWNyeXB0CisudHlwZQlBRVNfZGVjcnlwdCxcQGZ1bmN0aW9uLDMKKy5hbGlnbgkxNgorLmdsb2JsCWFzbV9BRVNfZGVjcnlwdAorLmhpZGRlbglhc21fQUVTX2RlY3J5cHQKK2FzbV9BRVNfZGVjcnlwdDoKK0FFU19kZWNyeXB0OgorCXB1c2gJJXJieAorCXB1c2gJJXJicAorCXB1c2gJJXIxMgorCXB1c2gJJXIxMworCXB1c2gJJXIxNAorCXB1c2gJJXIxNQorCisJIyBhbGxvY2F0ZSBmcmFtZSAiYWJvdmUiIGtleSBzY2hlZHVsZQorCW1vdgklcnNwLCVyMTAKKwlsZWEJLTYzKCVyZHgpLCVyY3gJIyAlcmR4IGlzIGtleSBhcmd1bWVudAorCWFuZAlcJC02NCwlcnNwCisJc3ViCSVyc3AsJXJjeAorCW5lZwklcmN4CisJYW5kCVwkMHgzYzAsJXJjeAorCXN1YgklcmN4LCVyc3AKKwlzdWIJXCQzMiwlcnNwCisKKwltb3YJJXJzaSwxNiglcnNwKQkjIHNhdmUgb3V0CisJbW92CSVyMTAsMjQoJXJzcCkJIyBzYXZlIHJlYWwgc3RhY2sgcG9pbnRlcgorLkxkZWNfcHJvbG9ndWU6CisKKwltb3YJJXJkeCwka2V5CisJbW92CTI0MCgka2V5KSwkcm5kcwkjIGxvYWQgcm91bmRzCisKKwltb3YJMCglcmRpKSwkczAJIyBsb2FkIGlucHV0IHZlY3RvcgorCW1vdgk0KCVyZGkpLCRzMQorCW1vdgk4KCVyZGkpLCRzMgorCW1vdgkxMiglcmRpKSwkczMKKworCXNobAlcJDQsJHJuZHMKKwlsZWEJKCRrZXksJHJuZHMpLCVyYnAKKwltb3YJJGtleSwoJXJzcCkJIyBrZXkgc2NoZWR1bGUKKwltb3YJJXJicCw4KCVyc3ApCSMgZW5kIG9mIGtleSBzY2hlZHVsZQorCisJIyBwaWNrIFRkNCBjb3B5IHdoaWNoIGNhbid0ICJvdmVybGFwIiB3aXRoIHN0YWNrIGZyYW1lIG9yIGtleSBzY2hlZHVsZQorCWxlYQkuTEFFU19UZCsyMDQ4KCVyaXApLCRzYm94CisJbGVhCTc2OCglcnNwKSwlcmJwCisJc3ViCSRzYm94LCVyYnAKKwlhbmQJXCQweDMwMCwlcmJwCisJbGVhCSgkc2JveCwlcmJwKSwkc2JveAorCXNocglcJDMsJXJicAkjIHJlY2FsbCAibWFnaWMiIGNvbnN0YW50cyEKKwlhZGQJJXJicCwkc2JveAorCisJY2FsbAlfeDg2XzY0X0FFU19kZWNyeXB0X2NvbXBhY3QKKworCW1vdgkxNiglcnNwKSwkb3V0CSMgcmVzdG9yZSBvdXQKKwltb3YJMjQoJXJzcCksJXJzaQkjIHJlc3RvcmUgc2F2ZWQgc3RhY2sgcG9pbnRlcgorCW1vdgkkczAsMCgkb3V0KQkjIHdyaXRlIG91dHB1dCB2ZWN0b3IKKwltb3YJJHMxLDQoJG91dCkKKwltb3YJJHMyLDgoJG91dCkKKwltb3YJJHMzLDEyKCRvdXQpCisKKwltb3YJKCVyc2kpLCVyMTUKKwltb3YJOCglcnNpKSwlcjE0CisJbW92CTE2KCVyc2kpLCVyMTMKKwltb3YJMjQoJXJzaSksJXIxMgorCW1vdgkzMiglcnNpKSwlcmJwCisJbW92CTQwKCVyc2kpLCVyYngKKwlsZWEJNDgoJXJzaSksJXJzcAorLkxkZWNfZXBpbG9ndWU6CisJcmV0Cisuc2l6ZQlBRVNfZGVjcnlwdCwuLUFFU19kZWNyeXB0CitfX18KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCisKK3N1YiBlbmNrZXkoKQoreworJGNvZGUuPTw8X19fOworCW1vdnoJJWRsLCVlc2kJCSMgcmtbaV0+PjAKKwltb3Z6YgktMTI4KCVyYnAsJXJzaSksJWVieAorCW1vdnoJJWRoLCVlc2kJCSMgcmtbaV0+PjgKKwlzaGwJXCQyNCwlZWJ4CisJeG9yCSVlYngsJWVheAorCisJbW92emIJLTEyOCglcmJwLCVyc2kpLCVlYngKKwlzaHIJXCQxNiwlZWR4CisJbW92egklZGwsJWVzaQkJIyBya1tpXT4+MTYKKwl4b3IJJWVieCwlZWF4CisKKwltb3Z6YgktMTI4KCVyYnAsJXJzaSksJWVieAorCW1vdnoJJWRoLCVlc2kJCSMgcmtbaV0+PjI0CisJc2hsCVwkOCwlZWJ4CisJeG9yCSVlYngsJWVheAorCisJbW92emIJLTEyOCglcmJwLCVyc2kpLCVlYngKKwlzaGwJXCQxNiwlZWJ4CisJeG9yCSVlYngsJWVheAorCisJeG9yCTEwMjQtMTI4KCVyYnAsJXJjeCw0KSwlZWF4CQkjIHJjb24KK19fXworfQorCisjIGludCBwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXkoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgY29uc3QgaW50IGJpdHMsCisjICAgICAgICAgICAgICAgICAgICAgICAgQUVTX0tFWSAqa2V5KQorJGNvZGUuPTw8X19fOworLmdsb2JsCXByaXZhdGVfQUVTX3NldF9lbmNyeXB0X2tleQorLnR5cGUJcHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5LFxAZnVuY3Rpb24sMworLmFsaWduCTE2Citwcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXk6CisJcHVzaAklcmJ4CisJcHVzaAklcmJwCisJcHVzaAklcjEyCQkJIyByZWR1bmRhbnQsIGJ1dCBhbGxvd3MgdG8gc2hhcmUgCisJcHVzaAklcjEzCQkJIyBleGNlcHRpb24gaGFuZGxlci4uLgorCXB1c2gJJXIxNAorCXB1c2gJJXIxNQorCXN1YglcJDgsJXJzcAorLkxlbmNfa2V5X3Byb2xvZ3VlOgorCisJY2FsbAlfeDg2XzY0X0FFU19zZXRfZW5jcnlwdF9rZXkKKworCW1vdgk4KCVyc3ApLCVyMTUKKwltb3YJMTYoJXJzcCksJXIxNAorCW1vdgkyNCglcnNwKSwlcjEzCisJbW92CTMyKCVyc3ApLCVyMTIKKwltb3YJNDAoJXJzcCksJXJicAorCW1vdgk0OCglcnNwKSwlcmJ4CisJYWRkCVwkNTYsJXJzcAorLkxlbmNfa2V5X2VwaWxvZ3VlOgorCXJldAorLnNpemUJcHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5LC4tcHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5CisKKy50eXBlCV94ODZfNjRfQUVTX3NldF9lbmNyeXB0X2tleSxcQGFiaS1vbW5pcG90ZW50CisuYWxpZ24JMTYKK194ODZfNjRfQUVTX3NldF9lbmNyeXB0X2tleToKKwltb3YJJWVzaSwlZWN4CQkJIyAlZWN4PWJpdHMKKwltb3YJJXJkaSwlcnNpCQkJIyAlcnNpPXVzZXJLZXkKKwltb3YJJXJkeCwlcmRpCQkJIyAlcmRpPWtleQorCisJdGVzdAlcJC0xLCVyc2kKKwlqegkuTGJhZHBvaW50ZXIKKwl0ZXN0CVwkLTEsJXJkaQorCWp6CS5MYmFkcG9pbnRlcgorCisJbGVhCS5MQUVTX1RlKCVyaXApLCVyYnAKKwlsZWEJMjA0OCsxMjgoJXJicCksJXJicAorCisJIyBwcmVmZXRjaCBUZTQKKwltb3YJMC0xMjgoJXJicCksJWVheAorCW1vdgkzMi0xMjgoJXJicCksJWVieAorCW1vdgk2NC0xMjgoJXJicCksJXI4ZAorCW1vdgk5Ni0xMjgoJXJicCksJWVkeAorCW1vdgkxMjgtMTI4KCVyYnApLCVlYXgKKwltb3YJMTYwLTEyOCglcmJwKSwlZWJ4CisJbW92CTE5Mi0xMjgoJXJicCksJXI4ZAorCW1vdgkyMjQtMTI4KCVyYnApLCVlZHgKKworCWNtcAlcJDEyOCwlZWN4CisJamUJLkwxMHJvdW5kcworCWNtcAlcJDE5MiwlZWN4CisJamUJLkwxMnJvdW5kcworCWNtcAlcJDI1NiwlZWN4CisJamUJLkwxNHJvdW5kcworCW1vdglcJC0yLCVyYXgJCQkjIGludmFsaWQgbnVtYmVyIG9mIGJpdHMKKwlqbXAJLkxleGl0CisKKy5MMTByb3VuZHM6CisJbW92CTAoJXJzaSksJXJheAkJCSMgY29weSBmaXJzdCA0IGR3b3JkcworCW1vdgk4KCVyc2kpLCVyZHgKKwltb3YJJXJheCwwKCVyZGkpCisJbW92CSVyZHgsOCglcmRpKQorCisJc2hyCVwkMzIsJXJkeAorCXhvcgklZWN4LCVlY3gKKwlqbXAJLkwxMHNob3J0Y3V0CisuYWxpZ24JNAorLkwxMGxvb3A6CisJCW1vdgkwKCVyZGkpLCVlYXgJCQkjIHJrWzBdCisJCW1vdgkxMiglcmRpKSwlZWR4CQkJIyBya1szXQorLkwxMHNob3J0Y3V0OgorX19fCisJCSZlbmNrZXkJKCk7CiskY29kZS49PDxfX187CisJCW1vdgklZWF4LDE2KCVyZGkpCQkJIyBya1s0XQorCQl4b3IJNCglcmRpKSwlZWF4CisJCW1vdgklZWF4LDIwKCVyZGkpCQkJIyBya1s1XQorCQl4b3IJOCglcmRpKSwlZWF4CisJCW1vdgklZWF4LDI0KCVyZGkpCQkJIyBya1s2XQorCQl4b3IJMTIoJXJkaSksJWVheAorCQltb3YJJWVheCwyOCglcmRpKQkJCSMgcmtbN10KKwkJYWRkCVwkMSwlZWN4CisJCWxlYQkxNiglcmRpKSwlcmRpCisJCWNtcAlcJDEwLCVlY3gKKwlqbAkuTDEwbG9vcAorCisJbW92bAlcJDEwLDgwKCVyZGkpCQkJIyBzZXR1cCBudW1iZXIgb2Ygcm91bmRzCisJeG9yCSVyYXgsJXJheAorCWptcAkuTGV4aXQKKworLkwxMnJvdW5kczoKKwltb3YJMCglcnNpKSwlcmF4CQkJIyBjb3B5IGZpcnN0IDYgZHdvcmRzCisJbW92CTgoJXJzaSksJXJieAorCW1vdgkxNiglcnNpKSwlcmR4CisJbW92CSVyYXgsMCglcmRpKQorCW1vdgklcmJ4LDgoJXJkaSkKKwltb3YJJXJkeCwxNiglcmRpKQorCisJc2hyCVwkMzIsJXJkeAorCXhvcgklZWN4LCVlY3gKKwlqbXAJLkwxMnNob3J0Y3V0CisuYWxpZ24JNAorLkwxMmxvb3A6CisJCW1vdgkwKCVyZGkpLCVlYXgJCQkjIHJrWzBdCisJCW1vdgkyMCglcmRpKSwlZWR4CQkJIyBya1s1XQorLkwxMnNob3J0Y3V0OgorX19fCisJCSZlbmNrZXkJKCk7CiskY29kZS49PDxfX187CisJCW1vdgklZWF4LDI0KCVyZGkpCQkJIyBya1s2XQorCQl4b3IJNCglcmRpKSwlZWF4CisJCW1vdgklZWF4LDI4KCVyZGkpCQkJIyBya1s3XQorCQl4b3IJOCglcmRpKSwlZWF4CisJCW1vdgklZWF4LDMyKCVyZGkpCQkJIyBya1s4XQorCQl4b3IJMTIoJXJkaSksJWVheAorCQltb3YJJWVheCwzNiglcmRpKQkJCSMgcmtbOV0KKworCQljbXAJXCQ3LCVlY3gKKwkJamUJLkwxMmJyZWFrCisJCWFkZAlcJDEsJWVjeAorCisJCXhvcgkxNiglcmRpKSwlZWF4CisJCW1vdgklZWF4LDQwKCVyZGkpCQkJIyBya1sxMF0KKwkJeG9yCTIwKCVyZGkpLCVlYXgKKwkJbW92CSVlYXgsNDQoJXJkaSkJCQkjIHJrWzExXQorCisJCWxlYQkyNCglcmRpKSwlcmRpCisJam1wCS5MMTJsb29wCisuTDEyYnJlYWs6CisJbW92bAlcJDEyLDcyKCVyZGkpCQkjIHNldHVwIG51bWJlciBvZiByb3VuZHMKKwl4b3IJJXJheCwlcmF4CisJam1wCS5MZXhpdAorCisuTDE0cm91bmRzOgkJCisJbW92CTAoJXJzaSksJXJheAkJCSMgY29weSBmaXJzdCA4IGR3b3JkcworCW1vdgk4KCVyc2kpLCVyYngKKwltb3YJMTYoJXJzaSksJXJjeAorCW1vdgkyNCglcnNpKSwlcmR4CisJbW92CSVyYXgsMCglcmRpKQorCW1vdgklcmJ4LDgoJXJkaSkKKwltb3YJJXJjeCwxNiglcmRpKQorCW1vdgklcmR4LDI0KCVyZGkpCisKKwlzaHIJXCQzMiwlcmR4CisJeG9yCSVlY3gsJWVjeAorCWptcAkuTDE0c2hvcnRjdXQKKy5hbGlnbgk0CisuTDE0bG9vcDoKKwkJbW92CTAoJXJkaSksJWVheAkJCSMgcmtbMF0KKwkJbW92CTI4KCVyZGkpLCVlZHgJCQkjIHJrWzRdCisuTDE0c2hvcnRjdXQ6CitfX18KKwkJJmVuY2tleQkoKTsKKyRjb2RlLj08PF9fXzsKKwkJbW92CSVlYXgsMzIoJXJkaSkJCQkjIHJrWzhdCisJCXhvcgk0KCVyZGkpLCVlYXgKKwkJbW92CSVlYXgsMzYoJXJkaSkJCQkjIHJrWzldCisJCXhvcgk4KCVyZGkpLCVlYXgKKwkJbW92CSVlYXgsNDAoJXJkaSkJCQkjIHJrWzEwXQorCQl4b3IJMTIoJXJkaSksJWVheAorCQltb3YJJWVheCw0NCglcmRpKQkJCSMgcmtbMTFdCisKKwkJY21wCVwkNiwlZWN4CisJCWplCS5MMTRicmVhaworCQlhZGQJXCQxLCVlY3gKKworCQltb3YJJWVheCwlZWR4CisJCW1vdgkxNiglcmRpKSwlZWF4CQkJIyBya1s0XQorCQltb3Z6CSVkbCwlZXNpCQkJIyBya1sxMV0+PjAKKwkJbW92emIJLTEyOCglcmJwLCVyc2kpLCVlYngKKwkJbW92egklZGgsJWVzaQkJCSMgcmtbMTFdPj44CisJCXhvcgklZWJ4LCVlYXgKKworCQltb3Z6YgktMTI4KCVyYnAsJXJzaSksJWVieAorCQlzaHIJXCQxNiwlZWR4CisJCXNobAlcJDgsJWVieAorCQltb3Z6CSVkbCwlZXNpCQkJIyBya1sxMV0+PjE2CisJCXhvcgklZWJ4LCVlYXgKKworCQltb3Z6YgktMTI4KCVyYnAsJXJzaSksJWVieAorCQltb3Z6CSVkaCwlZXNpCQkJIyBya1sxMV0+PjI0CisJCXNobAlcJDE2LCVlYngKKwkJeG9yCSVlYngsJWVheAorCisJCW1vdnpiCS0xMjgoJXJicCwlcnNpKSwlZWJ4CisJCXNobAlcJDI0LCVlYngKKwkJeG9yCSVlYngsJWVheAorCisJCW1vdgklZWF4LDQ4KCVyZGkpCQkJIyBya1sxMl0KKwkJeG9yCTIwKCVyZGkpLCVlYXgKKwkJbW92CSVlYXgsNTIoJXJkaSkJCQkjIHJrWzEzXQorCQl4b3IJMjQoJXJkaSksJWVheAorCQltb3YJJWVheCw1NiglcmRpKQkJCSMgcmtbMTRdCisJCXhvcgkyOCglcmRpKSwlZWF4CisJCW1vdgklZWF4LDYwKCVyZGkpCQkJIyBya1sxNV0KKworCQlsZWEJMzIoJXJkaSksJXJkaQorCWptcAkuTDE0bG9vcAorLkwxNGJyZWFrOgorCW1vdmwJXCQxNCw0OCglcmRpKQkJIyBzZXR1cCBudW1iZXIgb2Ygcm91bmRzCisJeG9yCSVyYXgsJXJheAorCWptcAkuTGV4aXQKKworLkxiYWRwb2ludGVyOgorCW1vdglcJC0xLCVyYXgKKy5MZXhpdDoKKwkuYnl0ZQkweGYzLDB4YzMJCQkjIHJlcCByZXQKKy5zaXplCV94ODZfNjRfQUVTX3NldF9lbmNyeXB0X2tleSwuLV94ODZfNjRfQUVTX3NldF9lbmNyeXB0X2tleQorX19fCisKK3N1YiBkZWNrZXlfcmVmKCkKK3sgbXkgKCRpLCRwdHIsJHRlLCR0ZCkgPSBAXzsKKyAgbXkgKCR0cDEsJHRwMiwkdHA0LCR0cDgsJGFjYyk9KCIlZWF4IiwiJWVieCIsIiVlZGkiLCIlZWR4IiwiJXI4ZCIpOworJGNvZGUuPTw8X19fOworCW1vdgkkaSgkcHRyKSwkdHAxCisJbW92CSR0cDEsJGFjYworCWFuZAlcJDB4ODA4MDgwODAsJGFjYworCW1vdgkkYWNjLCR0cDQKKwlzaHIJXCQ3LCR0cDQKKwlsZWEJMCgkdHAxLCR0cDEpLCR0cDIKKwlzdWIJJHRwNCwkYWNjCisJYW5kCVwkMHhmZWZlZmVmZSwkdHAyCisJYW5kCVwkMHgxYjFiMWIxYiwkYWNjCisJeG9yCSR0cDIsJGFjYworCW1vdgkkYWNjLCR0cDIKKworCWFuZAlcJDB4ODA4MDgwODAsJGFjYworCW1vdgkkYWNjLCR0cDgKKwlzaHIJXCQ3LCR0cDgKKwlsZWEJMCgkdHAyLCR0cDIpLCR0cDQKKwlzdWIJJHRwOCwkYWNjCisJYW5kCVwkMHhmZWZlZmVmZSwkdHA0CisJYW5kCVwkMHgxYjFiMWIxYiwkYWNjCisJIHhvcgkkdHAxLCR0cDIJCSMgdHAyXnRwMQorCXhvcgkkdHA0LCRhY2MKKwltb3YJJGFjYywkdHA0CisKKwlhbmQJXCQweDgwODA4MDgwLCRhY2MKKwltb3YJJGFjYywkdHA4CisJc2hyCVwkNywkdHA4CisJc3ViCSR0cDgsJGFjYworCWxlYQkwKCR0cDQsJHRwNCksJHRwOAorCSB4b3IJJHRwMSwkdHA0CQkjIHRwNF50cDEKKwlhbmQJXCQweGZlZmVmZWZlLCR0cDgKKwlhbmQJXCQweDFiMWIxYjFiLCRhY2MKKwl4b3IJJGFjYywkdHA4CisKKwl4b3IJJHRwOCwkdHAxCQkjIHRwMV50cDgKKwlyb2wJXCQ4LCR0cDEJCSMgUk9UQVRFKHRwMV50cDgsOCkKKwl4b3IJJHRwOCwkdHAyCQkjIHRwMl50cDFedHA4CisJeG9yCSR0cDgsJHRwNAkJIyB0cDRedHAxXnRwOAorCXhvcgkkdHAyLCR0cDgKKwl4b3IJJHRwNCwkdHA4CQkjIHRwOF4odHA4XnRwNF50cDEpXih0cDhedHAyXnRwMSk9dHA4XnRwNF50cDIKKworCXhvcgkkdHA4LCR0cDEKKwlyb2wJXCQyNCwkdHAyCQkjIFJPVEFURSh0cDJedHAxXnRwOCwyNCkKKwl4b3IJJHRwMiwkdHAxCisJcm9sCVwkMTYsJHRwNAkJIyBST1RBVEUodHA0XnRwMV50cDgsMTYpCisJeG9yCSR0cDQsJHRwMQorCisJbW92CSR0cDEsJGkoJHB0cikKK19fXworfQorCisjIGludCBwcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXkoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgY29uc3QgaW50IGJpdHMsCisjICAgICAgICAgICAgICAgICAgICAgICAgQUVTX0tFWSAqa2V5KQorJGNvZGUuPTw8X19fOworLmdsb2JsCXByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleQorLnR5cGUJcHJpdmF0ZV9BRVNfc2V0X2RlY3J5cHRfa2V5LFxAZnVuY3Rpb24sMworLmFsaWduCTE2Citwcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXk6CisJcHVzaAklcmJ4CisJcHVzaAklcmJwCisJcHVzaAklcjEyCisJcHVzaAklcjEzCisJcHVzaAklcjE0CisJcHVzaAklcjE1CisJcHVzaAklcmR4CQkJIyBzYXZlIGtleSBzY2hlZHVsZQorLkxkZWNfa2V5X3Byb2xvZ3VlOgorCisJY2FsbAlfeDg2XzY0X0FFU19zZXRfZW5jcnlwdF9rZXkKKwltb3YJKCVyc3ApLCVyOAkJIyByZXN0b3JlIGtleSBzY2hlZHVsZQorCWNtcAlcJDAsJWVheAorCWpuZQkuTGFib3J0CisKKwltb3YJMjQwKCVyOCksJXIxNGQJCSMgcHVsbCBudW1iZXIgb2Ygcm91bmRzCisJeG9yCSVyZGksJXJkaQorCWxlYQkoJXJkaSwlcjE0ZCw0KSwlcmN4CisJbW92CSVyOCwlcnNpCisJbGVhCSglcjgsJXJjeCw0KSwlcmRpCSMgcG9pbnRlciB0byBsYXN0IGNodW5rCisuYWxpZ24JNAorLkxpbnZlcnQ6CisJCW1vdgkwKCVyc2kpLCVyYXgKKwkJbW92CTgoJXJzaSksJXJieAorCQltb3YJMCglcmRpKSwlcmN4CisJCW1vdgk4KCVyZGkpLCVyZHgKKwkJbW92CSVyYXgsMCglcmRpKQorCQltb3YJJXJieCw4KCVyZGkpCisJCW1vdgklcmN4LDAoJXJzaSkKKwkJbW92CSVyZHgsOCglcnNpKQorCQlsZWEJMTYoJXJzaSksJXJzaQorCQlsZWEJLTE2KCVyZGkpLCVyZGkKKwkJY21wCSVyc2ksJXJkaQorCWpuZQkuTGludmVydAorCisJbGVhCS5MQUVTX1RlKzIwNDgrMTAyNCglcmlwKSwlcmF4CSMgcmNvbgorCisJbW92CTQwKCVyYXgpLCRtYXNrODAKKwltb3YJNDgoJXJheCksJG1hc2tmZQorCW1vdgk1NiglcmF4KSwkbWFzazFiCisKKwltb3YJJXI4LCRrZXkKKwlzdWIJXCQxLCVyMTRkCisuYWxpZ24JNAorLkxwZXJtdXRlOgorCQlsZWEJMTYoJGtleSksJGtleQorCQltb3YJMCgka2V5KSwlcmF4CisJCW1vdgk4KCRrZXkpLCVyY3gKK19fXworCQkmZGVjdHJhbnNmb3JtICgpOworJGNvZGUuPTw8X19fOworCQltb3YJJWVheCwwKCRrZXkpCisJCW1vdgklZWJ4LDQoJGtleSkKKwkJbW92CSVlY3gsOCgka2V5KQorCQltb3YJJWVkeCwxMigka2V5KQorCQlzdWIJXCQxLCVyMTRkCisJam56CS5McGVybXV0ZQorCisJeG9yCSVyYXgsJXJheAorLkxhYm9ydDoKKwltb3YJOCglcnNwKSwlcjE1CisJbW92CTE2KCVyc3ApLCVyMTQKKwltb3YJMjQoJXJzcCksJXIxMworCW1vdgkzMiglcnNwKSwlcjEyCisJbW92CTQwKCVyc3ApLCVyYnAKKwltb3YJNDgoJXJzcCksJXJieAorCWFkZAlcJDU2LCVyc3AKKy5MZGVjX2tleV9lcGlsb2d1ZToKKwlyZXQKKy5zaXplCXByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleSwuLXByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleQorX19fCisKKyMgdm9pZCBBRVNfY2JjX2VuY3J5cHQgKGNvbnN0IHZvaWQgY2hhciAqaW5wLCB1bnNpZ25lZCBjaGFyICpvdXQsCisjCQkJc2l6ZV90IGxlbmd0aCwgY29uc3QgQUVTX0tFWSAqa2V5LAorIwkJCXVuc2lnbmVkIGNoYXIgKml2cCxjb25zdCBpbnQgZW5jKTsKK3sKKyMgc3RhY2sgZnJhbWUgbGF5b3V0CisjIC04KCVyc3ApCQlyZXR1cm4gYWRkcmVzcworbXkgJGtleXA9IjAoJXJzcCkiOwkJIyBvbmUgdG8gcGFzcyBhcyAka2V5CitteSAka2V5ZW5kPSI4KCVyc3ApIjsJCSMgJihrZXlwLT5yZF9rZXlbNCprZXlwLT5yb3VuZHNdKQorbXkgJF9yc3A9IjE2KCVyc3ApIjsJCSMgc2F2ZWQgJXJzcAorbXkgJF9pbnA9IjI0KCVyc3ApIjsJCSMgY29weSBvZiAxc3QgcGFyYW1ldGVyLCBpbnAKK215ICRfb3V0PSIzMiglcnNwKSI7CQkjIGNvcHkgb2YgMm5kIHBhcmFtZXRlciwgb3V0CitteSAkX2xlbj0iNDAoJXJzcCkiOwkJIyBjb3B5IG9mIDNyZCBwYXJhbWV0ZXIsIGxlbmd0aAorbXkgJF9rZXk9IjQ4KCVyc3ApIjsJCSMgY29weSBvZiA0dGggcGFyYW1ldGVyLCBrZXkKK215ICRfaXZwPSI1NiglcnNwKSI7CQkjIGNvcHkgb2YgNXRoIHBhcmFtZXRlciwgaXZwCitteSAkaXZlYz0iNjQoJXJzcCkiOwkJIyBpdmVjWzE2XQorbXkgJGFlc19rZXk9IjgwKCVyc3ApIjsJCSMgY29weSBvZiBhZXNfa2V5CitteSAkbWFyaz0iODArMjQwKCVyc3ApIjsJIyBjb3B5IG9mIGFlc19rZXktPnJvdW5kcworCiskY29kZS49PDxfX187CisuZ2xvYmwJQUVTX2NiY19lbmNyeXB0CisudHlwZQlBRVNfY2JjX2VuY3J5cHQsXEBmdW5jdGlvbiw2CisuYWxpZ24JMTYKKy5leHRlcm4JT1BFTlNTTF9pYTMyY2FwX1AKKy5nbG9ibAlhc21fQUVTX2NiY19lbmNyeXB0CisuaGlkZGVuCWFzbV9BRVNfY2JjX2VuY3J5cHQKK2FzbV9BRVNfY2JjX2VuY3J5cHQ6CitBRVNfY2JjX2VuY3J5cHQ6CisJY21wCVwkMCwlcmR4CSMgY2hlY2sgbGVuZ3RoCisJamUJLkxjYmNfZXBpbG9ndWUKKwlwdXNoZnEKKwlwdXNoCSVyYngKKwlwdXNoCSVyYnAKKwlwdXNoCSVyMTIKKwlwdXNoCSVyMTMKKwlwdXNoCSVyMTQKKwlwdXNoCSVyMTUKKy5MY2JjX3Byb2xvZ3VlOgorCisJY2xkCisJbW92CSVyOWQsJXI5ZAkjIGNsZWFyIHVwcGVyIGhhbGYgb2YgZW5jCisKKwlsZWEJLkxBRVNfVGUoJXJpcCksJHNib3gKKwljbXAJXCQwLCVyOQorCWpuZQkuTGNiY19waWNrZWRfdGUKKwlsZWEJLkxBRVNfVGQoJXJpcCksJHNib3gKKy5MY2JjX3BpY2tlZF90ZToKKworCW1vdglPUEVOU1NMX2lhMzJjYXBfUCglcmlwKSwlcjEwZAorCWNtcAlcJCRzcGVlZF9saW1pdCwlcmR4CisJamIJLkxjYmNfc2xvd19wcm9sb2d1ZQorCXRlc3QJXCQxNSwlcmR4CisJam56CS5MY2JjX3Nsb3dfcHJvbG9ndWUKKwlidAlcJDI4LCVyMTBkCisJamMJLkxjYmNfc2xvd19wcm9sb2d1ZQorCisJIyBhbGxvY2F0ZSBhbGlnbmVkIHN0YWNrIGZyYW1lLi4uCisJbGVhCS04OC0yNDgoJXJzcCksJGtleQorCWFuZAlcJC02NCwka2V5CisKKwkjIC4uLiBhbmQgbWFrZSBzdXJlIGl0IGRvZXNuJ3QgYWxpYXMgd2l0aCBBRVNfVFtlZF0gbW9kdWxvIDQwOTYKKwltb3YJJHNib3gsJXIxMAorCWxlYQkyMzA0KCRzYm94KSwlcjExCisJbW92CSRrZXksJXIxMgorCWFuZAlcJDB4RkZGLCVyMTAJIyBzID0gJHNib3gmMHhmZmYKKwlhbmQJXCQweEZGRiwlcjExCSMgZSA9ICgkc2JveCsyMDQ4KSYweGZmZgorCWFuZAlcJDB4RkZGLCVyMTIJIyBwID0gJXJzcCYweGZmZgorCisJY21wCSVyMTEsJXIxMgkjIGlmIChwPT5lKSAlcnNwID0tIChwLWUpOworCWpiCS5MY2JjX3RlX2JyZWFrX291dAorCXN1YgklcjExLCVyMTIKKwlzdWIJJXIxMiwka2V5CisJam1wCS5MY2JjX3RlX29rCisuTGNiY190ZV9icmVha19vdXQ6CQkjIGVsc2UgJXJzcCAtPSAocC1zKSYweGZmZiArIGZyYW1lc3oKKwlzdWIJJXIxMCwlcjEyCisJYW5kCVwkMHhGRkYsJXIxMgorCWFkZAlcJDMyMCwlcjEyCisJc3ViCSVyMTIsJGtleQorLmFsaWduCTQKKy5MY2JjX3RlX29rOgorCisJeGNoZwklcnNwLCRrZXkKKwkjYWRkCVwkOCwlcnNwCSMgcmVzZXJ2ZSBmb3IgcmV0dXJuIGFkZHJlc3MhCisJbW92CSRrZXksJF9yc3AJIyBzYXZlICVyc3AKKy5MY2JjX2Zhc3RfYm9keToKKwltb3YJJXJkaSwkX2lucAkjIHNhdmUgY29weSBvZiBpbnAKKwltb3YJJXJzaSwkX291dAkjIHNhdmUgY29weSBvZiBvdXQKKwltb3YJJXJkeCwkX2xlbgkjIHNhdmUgY29weSBvZiBsZW4KKwltb3YJJXJjeCwkX2tleQkjIHNhdmUgY29weSBvZiBrZXkKKwltb3YJJXI4LCRfaXZwCSMgc2F2ZSBjb3B5IG9mIGl2cAorCW1vdmwJXCQwLCRtYXJrCSMgY29weSBvZiBhZXNfa2V5LT5yb3VuZHMgPSAwOworCW1vdgklcjgsJXJicAkjIHJlYXJyYW5nZSBpbnB1dCBhcmd1bWVudHMKKwltb3YJJXI5LCVyYngKKwltb3YJJXJzaSwkb3V0CisJbW92CSVyZGksJGlucAorCW1vdgklcmN4LCRrZXkKKworCW1vdgkyNDAoJGtleSksJWVheAkJIyBrZXktPnJvdW5kcworCSMgZG8gd2UgY29weSBrZXkgc2NoZWR1bGUgdG8gc3RhY2s/CisJbW92CSRrZXksJXIxMAorCXN1Ygkkc2JveCwlcjEwCisJYW5kCVwkMHhmZmYsJXIxMAorCWNtcAlcJDIzMDQsJXIxMAorCWpiCS5MY2JjX2RvX2Vjb3B5CisJY21wCVwkNDA5Ni0yNDgsJXIxMAorCWpiCS5MY2JjX3NraXBfZWNvcHkKKy5hbGlnbgk0CisuTGNiY19kb19lY29weToKKwkJbW92CSRrZXksJXJzaQorCQlsZWEJJGFlc19rZXksJXJkaQorCQlsZWEJJGFlc19rZXksJGtleQorCQltb3YJXCQyNDAvOCwlZWN4CisJCS5sb25nCTB4OTBBNTQ4RjMJIyByZXAgbW92c3EKKwkJbW92CSVlYXgsKCVyZGkpCSMgY29weSBhZXNfa2V5LT5yb3VuZHMKKy5MY2JjX3NraXBfZWNvcHk6CisJbW92CSRrZXksJGtleXAJIyBzYXZlIGtleSBwb2ludGVyCisKKwltb3YJXCQxOCwlZWN4CisuYWxpZ24JNAorLkxjYmNfcHJlZmV0Y2hfdGU6CisJCW1vdgkwKCRzYm94KSwlcjEwCisJCW1vdgkzMigkc2JveCksJXIxMQorCQltb3YJNjQoJHNib3gpLCVyMTIKKwkJbW92CTk2KCRzYm94KSwlcjEzCisJCWxlYQkxMjgoJHNib3gpLCRzYm94CisJCXN1YglcJDEsJWVjeAorCWpuegkuTGNiY19wcmVmZXRjaF90ZQorCWxlYQktMjMwNCgkc2JveCksJHNib3gKKworCWNtcAlcJDAsJXJieAorCWplCS5MRkFTVF9ERUNSWVBUCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkNSWVBUIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIworCW1vdgkwKCVyYnApLCRzMAkJIyBsb2FkIGl2CisJbW92CTQoJXJicCksJHMxCisJbW92CTgoJXJicCksJHMyCisJbW92CTEyKCVyYnApLCRzMworCisuYWxpZ24JNAorLkxjYmNfZmFzdF9lbmNfbG9vcDoKKwkJeG9yCTAoJGlucCksJHMwCisJCXhvcgk0KCRpbnApLCRzMQorCQl4b3IJOCgkaW5wKSwkczIKKwkJeG9yCTEyKCRpbnApLCRzMworCQltb3YJJGtleXAsJGtleQkjIHJlc3RvcmUga2V5CisJCW1vdgkkaW5wLCRfaW5wCSMgaWYgKCR2ZXJ0aWNhbHNwaW4pIHNhdmUgaW5wCisKKwkJY2FsbAlfeDg2XzY0X0FFU19lbmNyeXB0CisKKwkJbW92CSRfaW5wLCRpbnAJIyBpZiAoJHZlcnRpY2Fsc3BpbikgcmVzdG9yZSBpbnAKKwkJbW92CSRfbGVuLCVyMTAKKwkJbW92CSRzMCwwKCRvdXQpCisJCW1vdgkkczEsNCgkb3V0KQorCQltb3YJJHMyLDgoJG91dCkKKwkJbW92CSRzMywxMigkb3V0KQorCisJCWxlYQkxNigkaW5wKSwkaW5wCisJCWxlYQkxNigkb3V0KSwkb3V0CisJCXN1YglcJDE2LCVyMTAKKwkJdGVzdAlcJC0xNiwlcjEwCisJCW1vdgklcjEwLCRfbGVuCisJam56CS5MY2JjX2Zhc3RfZW5jX2xvb3AKKwltb3YJJF9pdnAsJXJicAkjIHJlc3RvcmUgaXZwCisJbW92CSRzMCwwKCVyYnApCSMgc2F2ZSBpdmVjCisJbW92CSRzMSw0KCVyYnApCisJbW92CSRzMiw4KCVyYnApCisJbW92CSRzMywxMiglcmJwKQorCisJam1wCS5MY2JjX2Zhc3RfY2xlYW51cAorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gREVDUllQVCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKKy5hbGlnbgkxNgorLkxGQVNUX0RFQ1JZUFQ6CisJY21wCSRpbnAsJG91dAorCWplCS5MY2JjX2Zhc3RfZGVjX2luX3BsYWNlCisKKwltb3YJJXJicCwkaXZlYworLmFsaWduCTQKKy5MY2JjX2Zhc3RfZGVjX2xvb3A6CisJCW1vdgkwKCRpbnApLCRzMAkjIHJlYWQgaW5wdXQKKwkJbW92CTQoJGlucCksJHMxCisJCW1vdgk4KCRpbnApLCRzMgorCQltb3YJMTIoJGlucCksJHMzCisJCW1vdgkka2V5cCwka2V5CSMgcmVzdG9yZSBrZXkKKwkJbW92CSRpbnAsJF9pbnAJIyBpZiAoJHZlcnRpY2Fsc3Bpbikgc2F2ZSBpbnAKKworCQljYWxsCV94ODZfNjRfQUVTX2RlY3J5cHQKKworCQltb3YJJGl2ZWMsJXJicAkjIGxvYWQgaXZwCisJCW1vdgkkX2lucCwkaW5wCSMgaWYgKCR2ZXJ0aWNhbHNwaW4pIHJlc3RvcmUgaW5wCisJCW1vdgkkX2xlbiwlcjEwCSMgbG9hZCBsZW4KKwkJeG9yCTAoJXJicCksJHMwCSMgeG9yIGl2CisJCXhvcgk0KCVyYnApLCRzMQorCQl4b3IJOCglcmJwKSwkczIKKwkJeG9yCTEyKCVyYnApLCRzMworCQltb3YJJGlucCwlcmJwCSMgY3VycmVudCBpbnB1dCwgbmV4dCBpdgorCisJCXN1YglcJDE2LCVyMTAKKwkJbW92CSVyMTAsJF9sZW4JIyB1cGRhdGUgbGVuCisJCW1vdgklcmJwLCRpdmVjCSMgdXBkYXRlIGl2cAorCisJCW1vdgkkczAsMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCQltb3YJJHMxLDQoJG91dCkKKwkJbW92CSRzMiw4KCRvdXQpCisJCW1vdgkkczMsMTIoJG91dCkKKworCQlsZWEJMTYoJGlucCksJGlucAorCQlsZWEJMTYoJG91dCksJG91dAorCWpuegkuTGNiY19mYXN0X2RlY19sb29wCisJbW92CSRfaXZwLCVyMTIJCSMgbG9hZCB1c2VyIGl2cAorCW1vdgkwKCVyYnApLCVyMTAJCSMgbG9hZCBpdgorCW1vdgk4KCVyYnApLCVyMTEKKwltb3YJJXIxMCwwKCVyMTIpCQkjIGNvcHkgYmFjayB0byB1c2VyCisJbW92CSVyMTEsOCglcjEyKQorCWptcAkuTGNiY19mYXN0X2NsZWFudXAKKworLmFsaWduCTE2CisuTGNiY19mYXN0X2RlY19pbl9wbGFjZToKKwltb3YJMCglcmJwKSwlcjEwCQkjIGNvcHkgaXYgdG8gc3RhY2sKKwltb3YJOCglcmJwKSwlcjExCisJbW92CSVyMTAsMCskaXZlYworCW1vdgklcjExLDgrJGl2ZWMKKy5hbGlnbgk0CisuTGNiY19mYXN0X2RlY19pbl9wbGFjZV9sb29wOgorCQltb3YJMCgkaW5wKSwkczAJIyBsb2FkIGlucHV0CisJCW1vdgk0KCRpbnApLCRzMQorCQltb3YJOCgkaW5wKSwkczIKKwkJbW92CTEyKCRpbnApLCRzMworCQltb3YJJGtleXAsJGtleQkjIHJlc3RvcmUga2V5CisJCW1vdgkkaW5wLCRfaW5wCSMgaWYgKCR2ZXJ0aWNhbHNwaW4pIHNhdmUgaW5wCisKKwkJY2FsbAlfeDg2XzY0X0FFU19kZWNyeXB0CisKKwkJbW92CSRfaW5wLCRpbnAJIyBpZiAoJHZlcnRpY2Fsc3BpbikgcmVzdG9yZSBpbnAKKwkJbW92CSRfbGVuLCVyMTAKKwkJeG9yCTArJGl2ZWMsJHMwCisJCXhvcgk0KyRpdmVjLCRzMQorCQl4b3IJOCskaXZlYywkczIKKwkJeG9yCTEyKyRpdmVjLCRzMworCisJCW1vdgkwKCRpbnApLCVyMTEJIyBsb2FkIGlucHV0CisJCW1vdgk4KCRpbnApLCVyMTIKKwkJc3ViCVwkMTYsJXIxMAorCQlqegkuTGNiY19mYXN0X2RlY19pbl9wbGFjZV9kb25lCisKKwkJbW92CSVyMTEsMCskaXZlYwkjIGNvcHkgaW5wdXQgdG8gaXYKKwkJbW92CSVyMTIsOCskaXZlYworCisJCW1vdgkkczAsMCgkb3V0KQkjIHNhdmUgb3V0cHV0IFt6YXBzIGlucHV0XQorCQltb3YJJHMxLDQoJG91dCkKKwkJbW92CSRzMiw4KCRvdXQpCisJCW1vdgkkczMsMTIoJG91dCkKKworCQlsZWEJMTYoJGlucCksJGlucAorCQlsZWEJMTYoJG91dCksJG91dAorCQltb3YJJXIxMCwkX2xlbgorCWptcAkuTGNiY19mYXN0X2RlY19pbl9wbGFjZV9sb29wCisuTGNiY19mYXN0X2RlY19pbl9wbGFjZV9kb25lOgorCW1vdgkkX2l2cCwlcmRpCisJbW92CSVyMTEsMCglcmRpKQkjIGNvcHkgaXYgYmFjayB0byB1c2VyCisJbW92CSVyMTIsOCglcmRpKQorCisJbW92CSRzMCwwKCRvdXQpCSMgc2F2ZSBvdXRwdXQgW3phcHMgaW5wdXRdCisJbW92CSRzMSw0KCRvdXQpCisJbW92CSRzMiw4KCRvdXQpCisJbW92CSRzMywxMigkb3V0KQorCisuYWxpZ24JNAorLkxjYmNfZmFzdF9jbGVhbnVwOgorCWNtcGwJXCQwLCRtYXJrCSMgd2FzIHRoZSBrZXkgc2NoZWR1bGUgY29waWVkPworCWxlYQkkYWVzX2tleSwlcmRpCisJamUJLkxjYmNfZXhpdAorCQltb3YJXCQyNDAvOCwlZWN4CisJCXhvcgklcmF4LCVyYXgKKwkJLmxvbmcJMHg5MEFCNDhGMwkjIHJlcCBzdG9zcQorCisJam1wCS5MY2JjX2V4aXQKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTTE9XIFJPVVRJTkUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIworLmFsaWduCTE2CisuTGNiY19zbG93X3Byb2xvZ3VlOgorCSMgYWxsb2NhdGUgYWxpZ25lZCBzdGFjayBmcmFtZS4uLgorCWxlYQktODgoJXJzcCksJXJicAorCWFuZAlcJC02NCwlcmJwCisJIyAuLi4ganVzdCAiYWJvdmUiIGtleSBzY2hlZHVsZQorCWxlYQktODgtNjMoJXJjeCksJXIxMAorCXN1YgklcmJwLCVyMTAKKwluZWcJJXIxMAorCWFuZAlcJDB4M2MwLCVyMTAKKwlzdWIJJXIxMCwlcmJwCisKKwl4Y2hnCSVyc3AsJXJicAorCSNhZGQJXCQ4LCVyc3AJIyByZXNlcnZlIGZvciByZXR1cm4gYWRkcmVzcyEKKwltb3YJJXJicCwkX3JzcAkjIHNhdmUgJXJzcAorLkxjYmNfc2xvd19ib2R5OgorCSNtb3YJJXJkaSwkX2lucAkjIHNhdmUgY29weSBvZiBpbnAKKwkjbW92CSVyc2ksJF9vdXQJIyBzYXZlIGNvcHkgb2Ygb3V0CisJI21vdgklcmR4LCRfbGVuCSMgc2F2ZSBjb3B5IG9mIGxlbgorCSNtb3YJJXJjeCwkX2tleQkjIHNhdmUgY29weSBvZiBrZXkKKwltb3YJJXI4LCRfaXZwCSMgc2F2ZSBjb3B5IG9mIGl2cAorCW1vdgklcjgsJXJicAkjIHJlYXJyYW5nZSBpbnB1dCBhcmd1bWVudHMKKwltb3YJJXI5LCVyYngKKwltb3YJJXJzaSwkb3V0CisJbW92CSVyZGksJGlucAorCW1vdgklcmN4LCRrZXkKKwltb3YJJXJkeCwlcjEwCisKKwltb3YJMjQwKCRrZXkpLCVlYXgKKwltb3YJJGtleSwka2V5cAkjIHNhdmUga2V5IHBvaW50ZXIKKwlzaGwJXCQ0LCVlYXgKKwlsZWEJKCRrZXksJXJheCksJXJheAorCW1vdgklcmF4LCRrZXllbmQKKworCSMgcGljayBUZTQgY29weSB3aGljaCBjYW4ndCAib3ZlcmxhcCIgd2l0aCBzdGFjayBmcmFtZSBvciBrZXkgc2NkZWR1bGUKKwlsZWEJMjA0OCgkc2JveCksJHNib3gKKwlsZWEJNzY4LTgoJXJzcCksJXJheAorCXN1Ygkkc2JveCwlcmF4CisJYW5kCVwkMHgzMDAsJXJheAorCWxlYQkoJHNib3gsJXJheCksJHNib3gKKworCWNtcAlcJDAsJXJieAorCWplCS5MU0xPV19ERUNSWVBUCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU0xPVyBFTkNSWVBUIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKKwl0ZXN0CVwkLTE2LCVyMTAJCSMgY2hlY2sgdXBvbiBsZW5ndGgKKwltb3YJMCglcmJwKSwkczAJCSMgbG9hZCBpdgorCW1vdgk0KCVyYnApLCRzMQorCW1vdgk4KCVyYnApLCRzMgorCW1vdgkxMiglcmJwKSwkczMKKwlqegkuTGNiY19zbG93X2VuY190YWlsCSMgc2hvcnQgaW5wdXQuLi4KKworLmFsaWduCTQKKy5MY2JjX3Nsb3dfZW5jX2xvb3A6CisJCXhvcgkwKCRpbnApLCRzMAorCQl4b3IJNCgkaW5wKSwkczEKKwkJeG9yCTgoJGlucCksJHMyCisJCXhvcgkxMigkaW5wKSwkczMKKwkJbW92CSRrZXlwLCRrZXkJIyByZXN0b3JlIGtleQorCQltb3YJJGlucCwkX2lucAkjIHNhdmUgaW5wCisJCW1vdgkkb3V0LCRfb3V0CSMgc2F2ZSBvdXQKKwkJbW92CSVyMTAsJF9sZW4JIyBzYXZlIGxlbgorCisJCWNhbGwJX3g4Nl82NF9BRVNfZW5jcnlwdF9jb21wYWN0CisKKwkJbW92CSRfaW5wLCRpbnAJIyByZXN0b3JlIGlucAorCQltb3YJJF9vdXQsJG91dAkjIHJlc3RvcmUgb3V0CisJCW1vdgkkX2xlbiwlcjEwCSMgcmVzdG9yZSBsZW4KKwkJbW92CSRzMCwwKCRvdXQpCisJCW1vdgkkczEsNCgkb3V0KQorCQltb3YJJHMyLDgoJG91dCkKKwkJbW92CSRzMywxMigkb3V0KQorCisJCWxlYQkxNigkaW5wKSwkaW5wCisJCWxlYQkxNigkb3V0KSwkb3V0CisJCXN1YglcJDE2LCVyMTAKKwkJdGVzdAlcJC0xNiwlcjEwCisJam56CS5MY2JjX3Nsb3dfZW5jX2xvb3AKKwl0ZXN0CVwkMTUsJXIxMAorCWpuegkuTGNiY19zbG93X2VuY190YWlsCisJbW92CSRfaXZwLCVyYnAJIyByZXN0b3JlIGl2cAorCW1vdgkkczAsMCglcmJwKQkjIHNhdmUgaXZlYworCW1vdgkkczEsNCglcmJwKQorCW1vdgkkczIsOCglcmJwKQorCW1vdgkkczMsMTIoJXJicCkKKworCWptcAkuTGNiY19leGl0CisKKy5hbGlnbgk0CisuTGNiY19zbG93X2VuY190YWlsOgorCW1vdgklcmF4LCVyMTEKKwltb3YJJXJjeCwlcjEyCisJbW92CSVyMTAsJXJjeAorCW1vdgkkaW5wLCVyc2kKKwltb3YJJG91dCwlcmRpCisJLmxvbmcJMHg5MDY2QTRGMwkJIyByZXAgbW92c2IKKwltb3YJXCQxNiwlcmN4CQkjIHplcm8gdGFpbAorCXN1YgklcjEwLCVyY3gKKwl4b3IJJXJheCwlcmF4CisJLmxvbmcJMHg5MDY2QUFGMwkJIyByZXAgc3Rvc2IKKwltb3YJJG91dCwkaW5wCQkjIHRoaXMgaXMgbm90IGEgbWlzdGFrZSEKKwltb3YJXCQxNiwlcjEwCQkjIGxlbj0xNgorCW1vdgklcjExLCVyYXgKKwltb3YJJXIxMiwlcmN4CisJam1wCS5MY2JjX3Nsb3dfZW5jX2xvb3AJIyBvbmUgbW9yZSBzcGluLi4uCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNMT1cgREVDUllQVCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCisuYWxpZ24JMTYKKy5MU0xPV19ERUNSWVBUOgorCXNocglcJDMsJXJheAorCWFkZAklcmF4LCRzYm94CQkjIHJlY2FsbCAibWFnaWMiIGNvbnN0YW50cyEKKworCW1vdgkwKCVyYnApLCVyMTEJCSMgY29weSBpdiB0byBzdGFjaworCW1vdgk4KCVyYnApLCVyMTIKKwltb3YJJXIxMSwwKyRpdmVjCisJbW92CSVyMTIsOCskaXZlYworCisuYWxpZ24JNAorLkxjYmNfc2xvd19kZWNfbG9vcDoKKwkJbW92CTAoJGlucCksJHMwCSMgbG9hZCBpbnB1dAorCQltb3YJNCgkaW5wKSwkczEKKwkJbW92CTgoJGlucCksJHMyCisJCW1vdgkxMigkaW5wKSwkczMKKwkJbW92CSRrZXlwLCRrZXkJIyByZXN0b3JlIGtleQorCQltb3YJJGlucCwkX2lucAkjIHNhdmUgaW5wCisJCW1vdgkkb3V0LCRfb3V0CSMgc2F2ZSBvdXQKKwkJbW92CSVyMTAsJF9sZW4JIyBzYXZlIGxlbgorCisJCWNhbGwJX3g4Nl82NF9BRVNfZGVjcnlwdF9jb21wYWN0CisKKwkJbW92CSRfaW5wLCRpbnAJIyByZXN0b3JlIGlucAorCQltb3YJJF9vdXQsJG91dAkjIHJlc3RvcmUgb3V0CisJCW1vdgkkX2xlbiwlcjEwCisJCXhvcgkwKyRpdmVjLCRzMAorCQl4b3IJNCskaXZlYywkczEKKwkJeG9yCTgrJGl2ZWMsJHMyCisJCXhvcgkxMiskaXZlYywkczMKKworCQltb3YJMCgkaW5wKSwlcjExCSMgbG9hZCBpbnB1dAorCQltb3YJOCgkaW5wKSwlcjEyCisJCXN1YglcJDE2LCVyMTAKKwkJamMJLkxjYmNfc2xvd19kZWNfcGFydGlhbAorCQlqegkuTGNiY19zbG93X2RlY19kb25lCisKKwkJbW92CSVyMTEsMCskaXZlYwkjIGNvcHkgaW5wdXQgdG8gaXYKKwkJbW92CSVyMTIsOCskaXZlYworCisJCW1vdgkkczAsMCgkb3V0KQkjIHNhdmUgb3V0cHV0IFtjYW4gemFwIGlucHV0XQorCQltb3YJJHMxLDQoJG91dCkKKwkJbW92CSRzMiw4KCRvdXQpCisJCW1vdgkkczMsMTIoJG91dCkKKworCQlsZWEJMTYoJGlucCksJGlucAorCQlsZWEJMTYoJG91dCksJG91dAorCWptcAkuTGNiY19zbG93X2RlY19sb29wCisuTGNiY19zbG93X2RlY19kb25lOgorCW1vdgkkX2l2cCwlcmRpCisJbW92CSVyMTEsMCglcmRpKQkJIyBjb3B5IGl2IGJhY2sgdG8gdXNlcgorCW1vdgklcjEyLDgoJXJkaSkKKworCW1vdgkkczAsMCgkb3V0KQkJIyBzYXZlIG91dHB1dCBbY2FuIHphcCBpbnB1dF0KKwltb3YJJHMxLDQoJG91dCkKKwltb3YJJHMyLDgoJG91dCkKKwltb3YJJHMzLDEyKCRvdXQpCisKKwlqbXAJLkxjYmNfZXhpdAorCisuYWxpZ24JNAorLkxjYmNfc2xvd19kZWNfcGFydGlhbDoKKwltb3YJJF9pdnAsJXJkaQorCW1vdgklcjExLDAoJXJkaSkJCSMgY29weSBpdiBiYWNrIHRvIHVzZXIKKwltb3YJJXIxMiw4KCVyZGkpCisKKwltb3YJJHMwLDArJGl2ZWMJCSMgc2F2ZSBvdXRwdXQgdG8gc3RhY2sKKwltb3YJJHMxLDQrJGl2ZWMKKwltb3YJJHMyLDgrJGl2ZWMKKwltb3YJJHMzLDEyKyRpdmVjCisKKwltb3YJJG91dCwlcmRpCisJbGVhCSRpdmVjLCVyc2kKKwlsZWEJMTYoJXIxMCksJXJjeAorCS5sb25nCTB4OTA2NkE0RjMJIyByZXAgbW92c2IKKwlqbXAJLkxjYmNfZXhpdAorCisuYWxpZ24JMTYKKy5MY2JjX2V4aXQ6CisJbW92CSRfcnNwLCVyc2kKKwltb3YJKCVyc2kpLCVyMTUKKwltb3YJOCglcnNpKSwlcjE0CisJbW92CTE2KCVyc2kpLCVyMTMKKwltb3YJMjQoJXJzaSksJXIxMgorCW1vdgkzMiglcnNpKSwlcmJwCisJbW92CTQwKCVyc2kpLCVyYngKKwlsZWEJNDgoJXJzaSksJXJzcAorLkxjYmNfcG9wZnE6CisJcG9wZnEKKy5MY2JjX2VwaWxvZ3VlOgorCXJldAorLnNpemUJQUVTX2NiY19lbmNyeXB0LC4tQUVTX2NiY19lbmNyeXB0CitfX18KK30KKworJGNvZGUuPTw8X19fOworLmFsaWduCTY0CisuTEFFU19UZToKK19fXworCSZfZGF0YV93b3JkKDB4YTU2MzYzYzYsIDB4ODQ3YzdjZjgsIDB4OTk3Nzc3ZWUsIDB4OGQ3YjdiZjYpOworCSZfZGF0YV93b3JkKDB4MGRmMmYyZmYsIDB4YmQ2YjZiZDYsIDB4YjE2ZjZmZGUsIDB4NTRjNWM1OTEpOworCSZfZGF0YV93b3JkKDB4NTAzMDMwNjAsIDB4MDMwMTAxMDIsIDB4YTk2NzY3Y2UsIDB4N2QyYjJiNTYpOworCSZfZGF0YV93b3JkKDB4MTlmZWZlZTcsIDB4NjJkN2Q3YjUsIDB4ZTZhYmFiNGQsIDB4OWE3Njc2ZWMpOworCSZfZGF0YV93b3JkKDB4NDVjYWNhOGYsIDB4OWQ4MjgyMWYsIDB4NDBjOWM5ODksIDB4ODc3ZDdkZmEpOworCSZfZGF0YV93b3JkKDB4MTVmYWZhZWYsIDB4ZWI1OTU5YjIsIDB4Yzk0NzQ3OGUsIDB4MGJmMGYwZmIpOworCSZfZGF0YV93b3JkKDB4ZWNhZGFkNDEsIDB4NjdkNGQ0YjMsIDB4ZmRhMmEyNWYsIDB4ZWFhZmFmNDUpOworCSZfZGF0YV93b3JkKDB4YmY5YzljMjMsIDB4ZjdhNGE0NTMsIDB4OTY3MjcyZTQsIDB4NWJjMGMwOWIpOworCSZfZGF0YV93b3JkKDB4YzJiN2I3NzUsIDB4MWNmZGZkZTEsIDB4YWU5MzkzM2QsIDB4NmEyNjI2NGMpOworCSZfZGF0YV93b3JkKDB4NWEzNjM2NmMsIDB4NDEzZjNmN2UsIDB4MDJmN2Y3ZjUsIDB4NGZjY2NjODMpOworCSZfZGF0YV93b3JkKDB4NWMzNDM0NjgsIDB4ZjRhNWE1NTEsIDB4MzRlNWU1ZDEsIDB4MDhmMWYxZjkpOworCSZfZGF0YV93b3JkKDB4OTM3MTcxZTIsIDB4NzNkOGQ4YWIsIDB4NTMzMTMxNjIsIDB4M2YxNTE1MmEpOworCSZfZGF0YV93b3JkKDB4MGMwNDA0MDgsIDB4NTJjN2M3OTUsIDB4NjUyMzIzNDYsIDB4NWVjM2MzOWQpOworCSZfZGF0YV93b3JkKDB4MjgxODE4MzAsIDB4YTE5Njk2MzcsIDB4MGYwNTA1MGEsIDB4YjU5YTlhMmYpOworCSZfZGF0YV93b3JkKDB4MDkwNzA3MGUsIDB4MzYxMjEyMjQsIDB4OWI4MDgwMWIsIDB4M2RlMmUyZGYpOworCSZfZGF0YV93b3JkKDB4MjZlYmViY2QsIDB4NjkyNzI3NGUsIDB4Y2RiMmIyN2YsIDB4OWY3NTc1ZWEpOworCSZfZGF0YV93b3JkKDB4MWIwOTA5MTIsIDB4OWU4MzgzMWQsIDB4NzQyYzJjNTgsIDB4MmUxYTFhMzQpOworCSZfZGF0YV93b3JkKDB4MmQxYjFiMzYsIDB4YjI2ZTZlZGMsIDB4ZWU1YTVhYjQsIDB4ZmJhMGEwNWIpOworCSZfZGF0YV93b3JkKDB4ZjY1MjUyYTQsIDB4NGQzYjNiNzYsIDB4NjFkNmQ2YjcsIDB4Y2ViM2IzN2QpOworCSZfZGF0YV93b3JkKDB4N2IyOTI5NTIsIDB4M2VlM2UzZGQsIDB4NzEyZjJmNWUsIDB4OTc4NDg0MTMpOworCSZfZGF0YV93b3JkKDB4ZjU1MzUzYTYsIDB4NjhkMWQxYjksIDB4MDAwMDAwMDAsIDB4MmNlZGVkYzEpOworCSZfZGF0YV93b3JkKDB4NjAyMDIwNDAsIDB4MWZmY2ZjZTMsIDB4YzhiMWIxNzksIDB4ZWQ1YjViYjYpOworCSZfZGF0YV93b3JkKDB4YmU2YTZhZDQsIDB4NDZjYmNiOGQsIDB4ZDliZWJlNjcsIDB4NGIzOTM5NzIpOworCSZfZGF0YV93b3JkKDB4ZGU0YTRhOTQsIDB4ZDQ0YzRjOTgsIDB4ZTg1ODU4YjAsIDB4NGFjZmNmODUpOworCSZfZGF0YV93b3JkKDB4NmJkMGQwYmIsIDB4MmFlZmVmYzUsIDB4ZTVhYWFhNGYsIDB4MTZmYmZiZWQpOworCSZfZGF0YV93b3JkKDB4YzU0MzQzODYsIDB4ZDc0ZDRkOWEsIDB4NTUzMzMzNjYsIDB4OTQ4NTg1MTEpOworCSZfZGF0YV93b3JkKDB4Y2Y0NTQ1OGEsIDB4MTBmOWY5ZTksIDB4MDYwMjAyMDQsIDB4ODE3ZjdmZmUpOworCSZfZGF0YV93b3JkKDB4ZjA1MDUwYTAsIDB4NDQzYzNjNzgsIDB4YmE5ZjlmMjUsIDB4ZTNhOGE4NGIpOworCSZfZGF0YV93b3JkKDB4ZjM1MTUxYTIsIDB4ZmVhM2EzNWQsIDB4YzA0MDQwODAsIDB4OGE4ZjhmMDUpOworCSZfZGF0YV93b3JkKDB4YWQ5MjkyM2YsIDB4YmM5ZDlkMjEsIDB4NDgzODM4NzAsIDB4MDRmNWY1ZjEpOworCSZfZGF0YV93b3JkKDB4ZGZiY2JjNjMsIDB4YzFiNmI2NzcsIDB4NzVkYWRhYWYsIDB4NjMyMTIxNDIpOworCSZfZGF0YV93b3JkKDB4MzAxMDEwMjAsIDB4MWFmZmZmZTUsIDB4MGVmM2YzZmQsIDB4NmRkMmQyYmYpOworCSZfZGF0YV93b3JkKDB4NGNjZGNkODEsIDB4MTQwYzBjMTgsIDB4MzUxMzEzMjYsIDB4MmZlY2VjYzMpOworCSZfZGF0YV93b3JkKDB4ZTE1ZjVmYmUsIDB4YTI5Nzk3MzUsIDB4Y2M0NDQ0ODgsIDB4MzkxNzE3MmUpOworCSZfZGF0YV93b3JkKDB4NTdjNGM0OTMsIDB4ZjJhN2E3NTUsIDB4ODI3ZTdlZmMsIDB4NDczZDNkN2EpOworCSZfZGF0YV93b3JkKDB4YWM2NDY0YzgsIDB4ZTc1ZDVkYmEsIDB4MmIxOTE5MzIsIDB4OTU3MzczZTYpOworCSZfZGF0YV93b3JkKDB4YTA2MDYwYzAsIDB4OTg4MTgxMTksIDB4ZDE0ZjRmOWUsIDB4N2ZkY2RjYTMpOworCSZfZGF0YV93b3JkKDB4NjYyMjIyNDQsIDB4N2UyYTJhNTQsIDB4YWI5MDkwM2IsIDB4ODM4ODg4MGIpOworCSZfZGF0YV93b3JkKDB4Y2E0NjQ2OGMsIDB4MjllZWVlYzcsIDB4ZDNiOGI4NmIsIDB4M2MxNDE0MjgpOworCSZfZGF0YV93b3JkKDB4NzlkZWRlYTcsIDB4ZTI1ZTVlYmMsIDB4MWQwYjBiMTYsIDB4NzZkYmRiYWQpOworCSZfZGF0YV93b3JkKDB4M2JlMGUwZGIsIDB4NTYzMjMyNjQsIDB4NGUzYTNhNzQsIDB4MWUwYTBhMTQpOworCSZfZGF0YV93b3JkKDB4ZGI0OTQ5OTIsIDB4MGEwNjA2MGMsIDB4NmMyNDI0NDgsIDB4ZTQ1YzVjYjgpOworCSZfZGF0YV93b3JkKDB4NWRjMmMyOWYsIDB4NmVkM2QzYmQsIDB4ZWZhY2FjNDMsIDB4YTY2MjYyYzQpOworCSZfZGF0YV93b3JkKDB4YTg5MTkxMzksIDB4YTQ5NTk1MzEsIDB4MzdlNGU0ZDMsIDB4OGI3OTc5ZjIpOworCSZfZGF0YV93b3JkKDB4MzJlN2U3ZDUsIDB4NDNjOGM4OGIsIDB4NTkzNzM3NmUsIDB4Yjc2ZDZkZGEpOworCSZfZGF0YV93b3JkKDB4OGM4ZDhkMDEsIDB4NjRkNWQ1YjEsIDB4ZDI0ZTRlOWMsIDB4ZTBhOWE5NDkpOworCSZfZGF0YV93b3JkKDB4YjQ2YzZjZDgsIDB4ZmE1NjU2YWMsIDB4MDdmNGY0ZjMsIDB4MjVlYWVhY2YpOworCSZfZGF0YV93b3JkKDB4YWY2NTY1Y2EsIDB4OGU3YTdhZjQsIDB4ZTlhZWFlNDcsIDB4MTgwODA4MTApOworCSZfZGF0YV93b3JkKDB4ZDViYWJhNmYsIDB4ODg3ODc4ZjAsIDB4NmYyNTI1NGEsIDB4NzIyZTJlNWMpOworCSZfZGF0YV93b3JkKDB4MjQxYzFjMzgsIDB4ZjFhNmE2NTcsIDB4YzdiNGI0NzMsIDB4NTFjNmM2OTcpOworCSZfZGF0YV93b3JkKDB4MjNlOGU4Y2IsIDB4N2NkZGRkYTEsIDB4OWM3NDc0ZTgsIDB4MjExZjFmM2UpOworCSZfZGF0YV93b3JkKDB4ZGQ0YjRiOTYsIDB4ZGNiZGJkNjEsIDB4ODY4YjhiMGQsIDB4ODU4YThhMGYpOworCSZfZGF0YV93b3JkKDB4OTA3MDcwZTAsIDB4NDIzZTNlN2MsIDB4YzRiNWI1NzEsIDB4YWE2NjY2Y2MpOworCSZfZGF0YV93b3JkKDB4ZDg0ODQ4OTAsIDB4MDUwMzAzMDYsIDB4MDFmNmY2ZjcsIDB4MTIwZTBlMWMpOworCSZfZGF0YV93b3JkKDB4YTM2MTYxYzIsIDB4NWYzNTM1NmEsIDB4Zjk1NzU3YWUsIDB4ZDBiOWI5NjkpOworCSZfZGF0YV93b3JkKDB4OTE4Njg2MTcsIDB4NThjMWMxOTksIDB4MjcxZDFkM2EsIDB4Yjk5ZTllMjcpOworCSZfZGF0YV93b3JkKDB4MzhlMWUxZDksIDB4MTNmOGY4ZWIsIDB4YjM5ODk4MmIsIDB4MzMxMTExMjIpOworCSZfZGF0YV93b3JkKDB4YmI2OTY5ZDIsIDB4NzBkOWQ5YTksIDB4ODk4ZThlMDcsIDB4YTc5NDk0MzMpOworCSZfZGF0YV93b3JkKDB4YjY5YjliMmQsIDB4MjIxZTFlM2MsIDB4OTI4Nzg3MTUsIDB4MjBlOWU5YzkpOworCSZfZGF0YV93b3JkKDB4NDljZWNlODcsIDB4ZmY1NTU1YWEsIDB4NzgyODI4NTAsIDB4N2FkZmRmYTUpOworCSZfZGF0YV93b3JkKDB4OGY4YzhjMDMsIDB4ZjhhMWExNTksIDB4ODA4OTg5MDksIDB4MTcwZDBkMWEpOworCSZfZGF0YV93b3JkKDB4ZGFiZmJmNjUsIDB4MzFlNmU2ZDcsIDB4YzY0MjQyODQsIDB4Yjg2ODY4ZDApOworCSZfZGF0YV93b3JkKDB4YzM0MTQxODIsIDB4YjA5OTk5MjksIDB4NzcyZDJkNWEsIDB4MTEwZjBmMWUpOworCSZfZGF0YV93b3JkKDB4Y2JiMGIwN2IsIDB4ZmM1NDU0YTgsIDB4ZDZiYmJiNmQsIDB4M2ExNjE2MmMpOworCisjVGU0CSMgZm91ciBjb3BpZXMgb2YgVGU0IHRvIGNob29zZSBmcm9tIHRvIGF2b2lkIEwxIGFsaWFzaW5nCisJJmRhdGFfYnl0ZSgweDYzLCAweDdjLCAweDc3LCAweDdiLCAweGYyLCAweDZiLCAweDZmLCAweGM1KTsKKwkmZGF0YV9ieXRlKDB4MzAsIDB4MDEsIDB4NjcsIDB4MmIsIDB4ZmUsIDB4ZDcsIDB4YWIsIDB4NzYpOworCSZkYXRhX2J5dGUoMHhjYSwgMHg4MiwgMHhjOSwgMHg3ZCwgMHhmYSwgMHg1OSwgMHg0NywgMHhmMCk7CisJJmRhdGFfYnl0ZSgweGFkLCAweGQ0LCAweGEyLCAweGFmLCAweDljLCAweGE0LCAweDcyLCAweGMwKTsKKwkmZGF0YV9ieXRlKDB4YjcsIDB4ZmQsIDB4OTMsIDB4MjYsIDB4MzYsIDB4M2YsIDB4ZjcsIDB4Y2MpOworCSZkYXRhX2J5dGUoMHgzNCwgMHhhNSwgMHhlNSwgMHhmMSwgMHg3MSwgMHhkOCwgMHgzMSwgMHgxNSk7CisJJmRhdGFfYnl0ZSgweDA0LCAweGM3LCAweDIzLCAweGMzLCAweDE4LCAweDk2LCAweDA1LCAweDlhKTsKKwkmZGF0YV9ieXRlKDB4MDcsIDB4MTIsIDB4ODAsIDB4ZTIsIDB4ZWIsIDB4MjcsIDB4YjIsIDB4NzUpOworCSZkYXRhX2J5dGUoMHgwOSwgMHg4MywgMHgyYywgMHgxYSwgMHgxYiwgMHg2ZSwgMHg1YSwgMHhhMCk7CisJJmRhdGFfYnl0ZSgweDUyLCAweDNiLCAweGQ2LCAweGIzLCAweDI5LCAweGUzLCAweDJmLCAweDg0KTsKKwkmZGF0YV9ieXRlKDB4NTMsIDB4ZDEsIDB4MDAsIDB4ZWQsIDB4MjAsIDB4ZmMsIDB4YjEsIDB4NWIpOworCSZkYXRhX2J5dGUoMHg2YSwgMHhjYiwgMHhiZSwgMHgzOSwgMHg0YSwgMHg0YywgMHg1OCwgMHhjZik7CisJJmRhdGFfYnl0ZSgweGQwLCAweGVmLCAweGFhLCAweGZiLCAweDQzLCAweDRkLCAweDMzLCAweDg1KTsKKwkmZGF0YV9ieXRlKDB4NDUsIDB4ZjksIDB4MDIsIDB4N2YsIDB4NTAsIDB4M2MsIDB4OWYsIDB4YTgpOworCSZkYXRhX2J5dGUoMHg1MSwgMHhhMywgMHg0MCwgMHg4ZiwgMHg5MiwgMHg5ZCwgMHgzOCwgMHhmNSk7CisJJmRhdGFfYnl0ZSgweGJjLCAweGI2LCAweGRhLCAweDIxLCAweDEwLCAweGZmLCAweGYzLCAweGQyKTsKKwkmZGF0YV9ieXRlKDB4Y2QsIDB4MGMsIDB4MTMsIDB4ZWMsIDB4NWYsIDB4OTcsIDB4NDQsIDB4MTcpOworCSZkYXRhX2J5dGUoMHhjNCwgMHhhNywgMHg3ZSwgMHgzZCwgMHg2NCwgMHg1ZCwgMHgxOSwgMHg3Myk7CisJJmRhdGFfYnl0ZSgweDYwLCAweDgxLCAweDRmLCAweGRjLCAweDIyLCAweDJhLCAweDkwLCAweDg4KTsKKwkmZGF0YV9ieXRlKDB4NDYsIDB4ZWUsIDB4YjgsIDB4MTQsIDB4ZGUsIDB4NWUsIDB4MGIsIDB4ZGIpOworCSZkYXRhX2J5dGUoMHhlMCwgMHgzMiwgMHgzYSwgMHgwYSwgMHg0OSwgMHgwNiwgMHgyNCwgMHg1Yyk7CisJJmRhdGFfYnl0ZSgweGMyLCAweGQzLCAweGFjLCAweDYyLCAweDkxLCAweDk1LCAweGU0LCAweDc5KTsKKwkmZGF0YV9ieXRlKDB4ZTcsIDB4YzgsIDB4MzcsIDB4NmQsIDB4OGQsIDB4ZDUsIDB4NGUsIDB4YTkpOworCSZkYXRhX2J5dGUoMHg2YywgMHg1NiwgMHhmNCwgMHhlYSwgMHg2NSwgMHg3YSwgMHhhZSwgMHgwOCk7CisJJmRhdGFfYnl0ZSgweGJhLCAweDc4LCAweDI1LCAweDJlLCAweDFjLCAweGE2LCAweGI0LCAweGM2KTsKKwkmZGF0YV9ieXRlKDB4ZTgsIDB4ZGQsIDB4NzQsIDB4MWYsIDB4NGIsIDB4YmQsIDB4OGIsIDB4OGEpOworCSZkYXRhX2J5dGUoMHg3MCwgMHgzZSwgMHhiNSwgMHg2NiwgMHg0OCwgMHgwMywgMHhmNiwgMHgwZSk7CisJJmRhdGFfYnl0ZSgweDYxLCAweDM1LCAweDU3LCAweGI5LCAweDg2LCAweGMxLCAweDFkLCAweDllKTsKKwkmZGF0YV9ieXRlKDB4ZTEsIDB4ZjgsIDB4OTgsIDB4MTEsIDB4NjksIDB4ZDksIDB4OGUsIDB4OTQpOworCSZkYXRhX2J5dGUoMHg5YiwgMHgxZSwgMHg4NywgMHhlOSwgMHhjZSwgMHg1NSwgMHgyOCwgMHhkZik7CisJJmRhdGFfYnl0ZSgweDhjLCAweGExLCAweDg5LCAweDBkLCAweGJmLCAweGU2LCAweDQyLCAweDY4KTsKKwkmZGF0YV9ieXRlKDB4NDEsIDB4OTksIDB4MmQsIDB4MGYsIDB4YjAsIDB4NTQsIDB4YmIsIDB4MTYpOworCisJJmRhdGFfYnl0ZSgweDYzLCAweDdjLCAweDc3LCAweDdiLCAweGYyLCAweDZiLCAweDZmLCAweGM1KTsKKwkmZGF0YV9ieXRlKDB4MzAsIDB4MDEsIDB4NjcsIDB4MmIsIDB4ZmUsIDB4ZDcsIDB4YWIsIDB4NzYpOworCSZkYXRhX2J5dGUoMHhjYSwgMHg4MiwgMHhjOSwgMHg3ZCwgMHhmYSwgMHg1OSwgMHg0NywgMHhmMCk7CisJJmRhdGFfYnl0ZSgweGFkLCAweGQ0LCAweGEyLCAweGFmLCAweDljLCAweGE0LCAweDcyLCAweGMwKTsKKwkmZGF0YV9ieXRlKDB4YjcsIDB4ZmQsIDB4OTMsIDB4MjYsIDB4MzYsIDB4M2YsIDB4ZjcsIDB4Y2MpOworCSZkYXRhX2J5dGUoMHgzNCwgMHhhNSwgMHhlNSwgMHhmMSwgMHg3MSwgMHhkOCwgMHgzMSwgMHgxNSk7CisJJmRhdGFfYnl0ZSgweDA0LCAweGM3LCAweDIzLCAweGMzLCAweDE4LCAweDk2LCAweDA1LCAweDlhKTsKKwkmZGF0YV9ieXRlKDB4MDcsIDB4MTIsIDB4ODAsIDB4ZTIsIDB4ZWIsIDB4MjcsIDB4YjIsIDB4NzUpOworCSZkYXRhX2J5dGUoMHgwOSwgMHg4MywgMHgyYywgMHgxYSwgMHgxYiwgMHg2ZSwgMHg1YSwgMHhhMCk7CisJJmRhdGFfYnl0ZSgweDUyLCAweDNiLCAweGQ2LCAweGIzLCAweDI5LCAweGUzLCAweDJmLCAweDg0KTsKKwkmZGF0YV9ieXRlKDB4NTMsIDB4ZDEsIDB4MDAsIDB4ZWQsIDB4MjAsIDB4ZmMsIDB4YjEsIDB4NWIpOworCSZkYXRhX2J5dGUoMHg2YSwgMHhjYiwgMHhiZSwgMHgzOSwgMHg0YSwgMHg0YywgMHg1OCwgMHhjZik7CisJJmRhdGFfYnl0ZSgweGQwLCAweGVmLCAweGFhLCAweGZiLCAweDQzLCAweDRkLCAweDMzLCAweDg1KTsKKwkmZGF0YV9ieXRlKDB4NDUsIDB4ZjksIDB4MDIsIDB4N2YsIDB4NTAsIDB4M2MsIDB4OWYsIDB4YTgpOworCSZkYXRhX2J5dGUoMHg1MSwgMHhhMywgMHg0MCwgMHg4ZiwgMHg5MiwgMHg5ZCwgMHgzOCwgMHhmNSk7CisJJmRhdGFfYnl0ZSgweGJjLCAweGI2LCAweGRhLCAweDIxLCAweDEwLCAweGZmLCAweGYzLCAweGQyKTsKKwkmZGF0YV9ieXRlKDB4Y2QsIDB4MGMsIDB4MTMsIDB4ZWMsIDB4NWYsIDB4OTcsIDB4NDQsIDB4MTcpOworCSZkYXRhX2J5dGUoMHhjNCwgMHhhNywgMHg3ZSwgMHgzZCwgMHg2NCwgMHg1ZCwgMHgxOSwgMHg3Myk7CisJJmRhdGFfYnl0ZSgweDYwLCAweDgxLCAweDRmLCAweGRjLCAweDIyLCAweDJhLCAweDkwLCAweDg4KTsKKwkmZGF0YV9ieXRlKDB4NDYsIDB4ZWUsIDB4YjgsIDB4MTQsIDB4ZGUsIDB4NWUsIDB4MGIsIDB4ZGIpOworCSZkYXRhX2J5dGUoMHhlMCwgMHgzMiwgMHgzYSwgMHgwYSwgMHg0OSwgMHgwNiwgMHgyNCwgMHg1Yyk7CisJJmRhdGFfYnl0ZSgweGMyLCAweGQzLCAweGFjLCAweDYyLCAweDkxLCAweDk1LCAweGU0LCAweDc5KTsKKwkmZGF0YV9ieXRlKDB4ZTcsIDB4YzgsIDB4MzcsIDB4NmQsIDB4OGQsIDB4ZDUsIDB4NGUsIDB4YTkpOworCSZkYXRhX2J5dGUoMHg2YywgMHg1NiwgMHhmNCwgMHhlYSwgMHg2NSwgMHg3YSwgMHhhZSwgMHgwOCk7CisJJmRhdGFfYnl0ZSgweGJhLCAweDc4LCAweDI1LCAweDJlLCAweDFjLCAweGE2LCAweGI0LCAweGM2KTsKKwkmZGF0YV9ieXRlKDB4ZTgsIDB4ZGQsIDB4NzQsIDB4MWYsIDB4NGIsIDB4YmQsIDB4OGIsIDB4OGEpOworCSZkYXRhX2J5dGUoMHg3MCwgMHgzZSwgMHhiNSwgMHg2NiwgMHg0OCwgMHgwMywgMHhmNiwgMHgwZSk7CisJJmRhdGFfYnl0ZSgweDYxLCAweDM1LCAweDU3LCAweGI5LCAweDg2LCAweGMxLCAweDFkLCAweDllKTsKKwkmZGF0YV9ieXRlKDB4ZTEsIDB4ZjgsIDB4OTgsIDB4MTEsIDB4NjksIDB4ZDksIDB4OGUsIDB4OTQpOworCSZkYXRhX2J5dGUoMHg5YiwgMHgxZSwgMHg4NywgMHhlOSwgMHhjZSwgMHg1NSwgMHgyOCwgMHhkZik7CisJJmRhdGFfYnl0ZSgweDhjLCAweGExLCAweDg5LCAweDBkLCAweGJmLCAweGU2LCAweDQyLCAweDY4KTsKKwkmZGF0YV9ieXRlKDB4NDEsIDB4OTksIDB4MmQsIDB4MGYsIDB4YjAsIDB4NTQsIDB4YmIsIDB4MTYpOworCisJJmRhdGFfYnl0ZSgweDYzLCAweDdjLCAweDc3LCAweDdiLCAweGYyLCAweDZiLCAweDZmLCAweGM1KTsKKwkmZGF0YV9ieXRlKDB4MzAsIDB4MDEsIDB4NjcsIDB4MmIsIDB4ZmUsIDB4ZDcsIDB4YWIsIDB4NzYpOworCSZkYXRhX2J5dGUoMHhjYSwgMHg4MiwgMHhjOSwgMHg3ZCwgMHhmYSwgMHg1OSwgMHg0NywgMHhmMCk7CisJJmRhdGFfYnl0ZSgweGFkLCAweGQ0LCAweGEyLCAweGFmLCAweDljLCAweGE0LCAweDcyLCAweGMwKTsKKwkmZGF0YV9ieXRlKDB4YjcsIDB4ZmQsIDB4OTMsIDB4MjYsIDB4MzYsIDB4M2YsIDB4ZjcsIDB4Y2MpOworCSZkYXRhX2J5dGUoMHgzNCwgMHhhNSwgMHhlNSwgMHhmMSwgMHg3MSwgMHhkOCwgMHgzMSwgMHgxNSk7CisJJmRhdGFfYnl0ZSgweDA0LCAweGM3LCAweDIzLCAweGMzLCAweDE4LCAweDk2LCAweDA1LCAweDlhKTsKKwkmZGF0YV9ieXRlKDB4MDcsIDB4MTIsIDB4ODAsIDB4ZTIsIDB4ZWIsIDB4MjcsIDB4YjIsIDB4NzUpOworCSZkYXRhX2J5dGUoMHgwOSwgMHg4MywgMHgyYywgMHgxYSwgMHgxYiwgMHg2ZSwgMHg1YSwgMHhhMCk7CisJJmRhdGFfYnl0ZSgweDUyLCAweDNiLCAweGQ2LCAweGIzLCAweDI5LCAweGUzLCAweDJmLCAweDg0KTsKKwkmZGF0YV9ieXRlKDB4NTMsIDB4ZDEsIDB4MDAsIDB4ZWQsIDB4MjAsIDB4ZmMsIDB4YjEsIDB4NWIpOworCSZkYXRhX2J5dGUoMHg2YSwgMHhjYiwgMHhiZSwgMHgzOSwgMHg0YSwgMHg0YywgMHg1OCwgMHhjZik7CisJJmRhdGFfYnl0ZSgweGQwLCAweGVmLCAweGFhLCAweGZiLCAweDQzLCAweDRkLCAweDMzLCAweDg1KTsKKwkmZGF0YV9ieXRlKDB4NDUsIDB4ZjksIDB4MDIsIDB4N2YsIDB4NTAsIDB4M2MsIDB4OWYsIDB4YTgpOworCSZkYXRhX2J5dGUoMHg1MSwgMHhhMywgMHg0MCwgMHg4ZiwgMHg5MiwgMHg5ZCwgMHgzOCwgMHhmNSk7CisJJmRhdGFfYnl0ZSgweGJjLCAweGI2LCAweGRhLCAweDIxLCAweDEwLCAweGZmLCAweGYzLCAweGQyKTsKKwkmZGF0YV9ieXRlKDB4Y2QsIDB4MGMsIDB4MTMsIDB4ZWMsIDB4NWYsIDB4OTcsIDB4NDQsIDB4MTcpOworCSZkYXRhX2J5dGUoMHhjNCwgMHhhNywgMHg3ZSwgMHgzZCwgMHg2NCwgMHg1ZCwgMHgxOSwgMHg3Myk7CisJJmRhdGFfYnl0ZSgweDYwLCAweDgxLCAweDRmLCAweGRjLCAweDIyLCAweDJhLCAweDkwLCAweDg4KTsKKwkmZGF0YV9ieXRlKDB4NDYsIDB4ZWUsIDB4YjgsIDB4MTQsIDB4ZGUsIDB4NWUsIDB4MGIsIDB4ZGIpOworCSZkYXRhX2J5dGUoMHhlMCwgMHgzMiwgMHgzYSwgMHgwYSwgMHg0OSwgMHgwNiwgMHgyNCwgMHg1Yyk7CisJJmRhdGFfYnl0ZSgweGMyLCAweGQzLCAweGFjLCAweDYyLCAweDkxLCAweDk1LCAweGU0LCAweDc5KTsKKwkmZGF0YV9ieXRlKDB4ZTcsIDB4YzgsIDB4MzcsIDB4NmQsIDB4OGQsIDB4ZDUsIDB4NGUsIDB4YTkpOworCSZkYXRhX2J5dGUoMHg2YywgMHg1NiwgMHhmNCwgMHhlYSwgMHg2NSwgMHg3YSwgMHhhZSwgMHgwOCk7CisJJmRhdGFfYnl0ZSgweGJhLCAweDc4LCAweDI1LCAweDJlLCAweDFjLCAweGE2LCAweGI0LCAweGM2KTsKKwkmZGF0YV9ieXRlKDB4ZTgsIDB4ZGQsIDB4NzQsIDB4MWYsIDB4NGIsIDB4YmQsIDB4OGIsIDB4OGEpOworCSZkYXRhX2J5dGUoMHg3MCwgMHgzZSwgMHhiNSwgMHg2NiwgMHg0OCwgMHgwMywgMHhmNiwgMHgwZSk7CisJJmRhdGFfYnl0ZSgweDYxLCAweDM1LCAweDU3LCAweGI5LCAweDg2LCAweGMxLCAweDFkLCAweDllKTsKKwkmZGF0YV9ieXRlKDB4ZTEsIDB4ZjgsIDB4OTgsIDB4MTEsIDB4NjksIDB4ZDksIDB4OGUsIDB4OTQpOworCSZkYXRhX2J5dGUoMHg5YiwgMHgxZSwgMHg4NywgMHhlOSwgMHhjZSwgMHg1NSwgMHgyOCwgMHhkZik7CisJJmRhdGFfYnl0ZSgweDhjLCAweGExLCAweDg5LCAweDBkLCAweGJmLCAweGU2LCAweDQyLCAweDY4KTsKKwkmZGF0YV9ieXRlKDB4NDEsIDB4OTksIDB4MmQsIDB4MGYsIDB4YjAsIDB4NTQsIDB4YmIsIDB4MTYpOworCisJJmRhdGFfYnl0ZSgweDYzLCAweDdjLCAweDc3LCAweDdiLCAweGYyLCAweDZiLCAweDZmLCAweGM1KTsKKwkmZGF0YV9ieXRlKDB4MzAsIDB4MDEsIDB4NjcsIDB4MmIsIDB4ZmUsIDB4ZDcsIDB4YWIsIDB4NzYpOworCSZkYXRhX2J5dGUoMHhjYSwgMHg4MiwgMHhjOSwgMHg3ZCwgMHhmYSwgMHg1OSwgMHg0NywgMHhmMCk7CisJJmRhdGFfYnl0ZSgweGFkLCAweGQ0LCAweGEyLCAweGFmLCAweDljLCAweGE0LCAweDcyLCAweGMwKTsKKwkmZGF0YV9ieXRlKDB4YjcsIDB4ZmQsIDB4OTMsIDB4MjYsIDB4MzYsIDB4M2YsIDB4ZjcsIDB4Y2MpOworCSZkYXRhX2J5dGUoMHgzNCwgMHhhNSwgMHhlNSwgMHhmMSwgMHg3MSwgMHhkOCwgMHgzMSwgMHgxNSk7CisJJmRhdGFfYnl0ZSgweDA0LCAweGM3LCAweDIzLCAweGMzLCAweDE4LCAweDk2LCAweDA1LCAweDlhKTsKKwkmZGF0YV9ieXRlKDB4MDcsIDB4MTIsIDB4ODAsIDB4ZTIsIDB4ZWIsIDB4MjcsIDB4YjIsIDB4NzUpOworCSZkYXRhX2J5dGUoMHgwOSwgMHg4MywgMHgyYywgMHgxYSwgMHgxYiwgMHg2ZSwgMHg1YSwgMHhhMCk7CisJJmRhdGFfYnl0ZSgweDUyLCAweDNiLCAweGQ2LCAweGIzLCAweDI5LCAweGUzLCAweDJmLCAweDg0KTsKKwkmZGF0YV9ieXRlKDB4NTMsIDB4ZDEsIDB4MDAsIDB4ZWQsIDB4MjAsIDB4ZmMsIDB4YjEsIDB4NWIpOworCSZkYXRhX2J5dGUoMHg2YSwgMHhjYiwgMHhiZSwgMHgzOSwgMHg0YSwgMHg0YywgMHg1OCwgMHhjZik7CisJJmRhdGFfYnl0ZSgweGQwLCAweGVmLCAweGFhLCAweGZiLCAweDQzLCAweDRkLCAweDMzLCAweDg1KTsKKwkmZGF0YV9ieXRlKDB4NDUsIDB4ZjksIDB4MDIsIDB4N2YsIDB4NTAsIDB4M2MsIDB4OWYsIDB4YTgpOworCSZkYXRhX2J5dGUoMHg1MSwgMHhhMywgMHg0MCwgMHg4ZiwgMHg5MiwgMHg5ZCwgMHgzOCwgMHhmNSk7CisJJmRhdGFfYnl0ZSgweGJjLCAweGI2LCAweGRhLCAweDIxLCAweDEwLCAweGZmLCAweGYzLCAweGQyKTsKKwkmZGF0YV9ieXRlKDB4Y2QsIDB4MGMsIDB4MTMsIDB4ZWMsIDB4NWYsIDB4OTcsIDB4NDQsIDB4MTcpOworCSZkYXRhX2J5dGUoMHhjNCwgMHhhNywgMHg3ZSwgMHgzZCwgMHg2NCwgMHg1ZCwgMHgxOSwgMHg3Myk7CisJJmRhdGFfYnl0ZSgweDYwLCAweDgxLCAweDRmLCAweGRjLCAweDIyLCAweDJhLCAweDkwLCAweDg4KTsKKwkmZGF0YV9ieXRlKDB4NDYsIDB4ZWUsIDB4YjgsIDB4MTQsIDB4ZGUsIDB4NWUsIDB4MGIsIDB4ZGIpOworCSZkYXRhX2J5dGUoMHhlMCwgMHgzMiwgMHgzYSwgMHgwYSwgMHg0OSwgMHgwNiwgMHgyNCwgMHg1Yyk7CisJJmRhdGFfYnl0ZSgweGMyLCAweGQzLCAweGFjLCAweDYyLCAweDkxLCAweDk1LCAweGU0LCAweDc5KTsKKwkmZGF0YV9ieXRlKDB4ZTcsIDB4YzgsIDB4MzcsIDB4NmQsIDB4OGQsIDB4ZDUsIDB4NGUsIDB4YTkpOworCSZkYXRhX2J5dGUoMHg2YywgMHg1NiwgMHhmNCwgMHhlYSwgMHg2NSwgMHg3YSwgMHhhZSwgMHgwOCk7CisJJmRhdGFfYnl0ZSgweGJhLCAweDc4LCAweDI1LCAweDJlLCAweDFjLCAweGE2LCAweGI0LCAweGM2KTsKKwkmZGF0YV9ieXRlKDB4ZTgsIDB4ZGQsIDB4NzQsIDB4MWYsIDB4NGIsIDB4YmQsIDB4OGIsIDB4OGEpOworCSZkYXRhX2J5dGUoMHg3MCwgMHgzZSwgMHhiNSwgMHg2NiwgMHg0OCwgMHgwMywgMHhmNiwgMHgwZSk7CisJJmRhdGFfYnl0ZSgweDYxLCAweDM1LCAweDU3LCAweGI5LCAweDg2LCAweGMxLCAweDFkLCAweDllKTsKKwkmZGF0YV9ieXRlKDB4ZTEsIDB4ZjgsIDB4OTgsIDB4MTEsIDB4NjksIDB4ZDksIDB4OGUsIDB4OTQpOworCSZkYXRhX2J5dGUoMHg5YiwgMHgxZSwgMHg4NywgMHhlOSwgMHhjZSwgMHg1NSwgMHgyOCwgMHhkZik7CisJJmRhdGFfYnl0ZSgweDhjLCAweGExLCAweDg5LCAweDBkLCAweGJmLCAweGU2LCAweDQyLCAweDY4KTsKKwkmZGF0YV9ieXRlKDB4NDEsIDB4OTksIDB4MmQsIDB4MGYsIDB4YjAsIDB4NTQsIDB4YmIsIDB4MTYpOworI3Jjb246CiskY29kZS49PDxfX187CisJLmxvbmcJMHgwMDAwMDAwMSwgMHgwMDAwMDAwMiwgMHgwMDAwMDAwNCwgMHgwMDAwMDAwOAorCS5sb25nCTB4MDAwMDAwMTAsIDB4MDAwMDAwMjAsIDB4MDAwMDAwNDAsIDB4MDAwMDAwODAKKwkubG9uZwkweDAwMDAwMDFiLCAweDAwMDAwMDM2LCAweDgwODA4MDgwLCAweDgwODA4MDgwCisJLmxvbmcJMHhmZWZlZmVmZSwgMHhmZWZlZmVmZSwgMHgxYjFiMWIxYiwgMHgxYjFiMWIxYgorX19fCiskY29kZS49PDxfX187CisuYWxpZ24JNjQKKy5MQUVTX1RkOgorX19fCisJJl9kYXRhX3dvcmQoMHg1MGE3ZjQ1MSwgMHg1MzY1NDE3ZSwgMHhjM2E0MTcxYSwgMHg5NjVlMjczYSk7CisJJl9kYXRhX3dvcmQoMHhjYjZiYWIzYiwgMHhmMTQ1OWQxZiwgMHhhYjU4ZmFhYywgMHg5MzAzZTM0Yik7CisJJl9kYXRhX3dvcmQoMHg1NWZhMzAyMCwgMHhmNjZkNzZhZCwgMHg5MTc2Y2M4OCwgMHgyNTRjMDJmNSk7CisJJl9kYXRhX3dvcmQoMHhmY2Q3ZTU0ZiwgMHhkN2NiMmFjNSwgMHg4MDQ0MzUyNiwgMHg4ZmEzNjJiNSk7CisJJl9kYXRhX3dvcmQoMHg0OTVhYjFkZSwgMHg2NzFiYmEyNSwgMHg5ODBlZWE0NSwgMHhlMWMwZmU1ZCk7CisJJl9kYXRhX3dvcmQoMHgwMjc1MmZjMywgMHgxMmYwNGM4MSwgMHhhMzk3NDY4ZCwgMHhjNmY5ZDM2Yik7CisJJl9kYXRhX3dvcmQoMHhlNzVmOGYwMywgMHg5NTljOTIxNSwgMHhlYjdhNmRiZiwgMHhkYTU5NTI5NSk7CisJJl9kYXRhX3dvcmQoMHgyZDgzYmVkNCwgMHhkMzIxNzQ1OCwgMHgyOTY5ZTA0OSwgMHg0NGM4Yzk4ZSk7CisJJl9kYXRhX3dvcmQoMHg2YTg5YzI3NSwgMHg3ODc5OGVmNCwgMHg2YjNlNTg5OSwgMHhkZDcxYjkyNyk7CisJJl9kYXRhX3dvcmQoMHhiNjRmZTFiZSwgMHgxN2FkODhmMCwgMHg2NmFjMjBjOSwgMHhiNDNhY2U3ZCk7CisJJl9kYXRhX3dvcmQoMHgxODRhZGY2MywgMHg4MjMxMWFlNSwgMHg2MDMzNTE5NywgMHg0NTdmNTM2Mik7CisJJl9kYXRhX3dvcmQoMHhlMDc3NjRiMSwgMHg4NGFlNmJiYiwgMHgxY2EwODFmZSwgMHg5NDJiMDhmOSk7CisJJl9kYXRhX3dvcmQoMHg1ODY4NDg3MCwgMHgxOWZkNDU4ZiwgMHg4NzZjZGU5NCwgMHhiN2Y4N2I1Mik7CisJJl9kYXRhX3dvcmQoMHgyM2QzNzNhYiwgMHhlMjAyNGI3MiwgMHg1NzhmMWZlMywgMHgyYWFiNTU2Nik7CisJJl9kYXRhX3dvcmQoMHgwNzI4ZWJiMiwgMHgwM2MyYjUyZiwgMHg5YTdiYzU4NiwgMHhhNTA4MzdkMyk7CisJJl9kYXRhX3dvcmQoMHhmMjg3MjgzMCwgMHhiMmE1YmYyMywgMHhiYTZhMDMwMiwgMHg1YzgyMTZlZCk7CisJJl9kYXRhX3dvcmQoMHgyYjFjY2Y4YSwgMHg5MmI0NzlhNywgMHhmMGYyMDdmMywgMHhhMWUyNjk0ZSk7CisJJl9kYXRhX3dvcmQoMHhjZGY0ZGE2NSwgMHhkNWJlMDUwNiwgMHgxZjYyMzRkMSwgMHg4YWZlYTZjNCk7CisJJl9kYXRhX3dvcmQoMHg5ZDUzMmUzNCwgMHhhMDU1ZjNhMiwgMHgzMmUxOGEwNSwgMHg3NWViZjZhNCk7CisJJl9kYXRhX3dvcmQoMHgzOWVjODMwYiwgMHhhYWVmNjA0MCwgMHgwNjlmNzE1ZSwgMHg1MTEwNmViZCk7CisJJl9kYXRhX3dvcmQoMHhmOThhMjEzZSwgMHgzZDA2ZGQ5NiwgMHhhZTA1M2VkZCwgMHg0NmJkZTY0ZCk7CisJJl9kYXRhX3dvcmQoMHhiNThkNTQ5MSwgMHgwNTVkYzQ3MSwgMHg2ZmQ0MDYwNCwgMHhmZjE1NTA2MCk7CisJJl9kYXRhX3dvcmQoMHgyNGZiOTgxOSwgMHg5N2U5YmRkNiwgMHhjYzQzNDA4OSwgMHg3NzllZDk2Nyk7CisJJl9kYXRhX3dvcmQoMHhiZDQyZThiMCwgMHg4ODhiODkwNywgMHgzODViMTllNywgMHhkYmVlYzg3OSk7CisJJl9kYXRhX3dvcmQoMHg0NzBhN2NhMSwgMHhlOTBmNDI3YywgMHhjOTFlODRmOCwgMHgwMDAwMDAwMCk7CisJJl9kYXRhX3dvcmQoMHg4Mzg2ODAwOSwgMHg0OGVkMmIzMiwgMHhhYzcwMTExZSwgMHg0ZTcyNWE2Yyk7CisJJl9kYXRhX3dvcmQoMHhmYmZmMGVmZCwgMHg1NjM4ODUwZiwgMHgxZWQ1YWUzZCwgMHgyNzM5MmQzNik7CisJJl9kYXRhX3dvcmQoMHg2NGQ5MGYwYSwgMHgyMWE2NWM2OCwgMHhkMTU0NWI5YiwgMHgzYTJlMzYyNCk7CisJJl9kYXRhX3dvcmQoMHhiMTY3MGEwYywgMHgwZmU3NTc5MywgMHhkMjk2ZWViNCwgMHg5ZTkxOWIxYik7CisJJl9kYXRhX3dvcmQoMHg0ZmM1YzA4MCwgMHhhMjIwZGM2MSwgMHg2OTRiNzc1YSwgMHgxNjFhMTIxYyk7CisJJl9kYXRhX3dvcmQoMHgwYWJhOTNlMiwgMHhlNTJhYTBjMCwgMHg0M2UwMjIzYywgMHgxZDE3MWIxMik7CisJJl9kYXRhX3dvcmQoMHgwYjBkMDkwZSwgMHhhZGM3OGJmMiwgMHhiOWE4YjYyZCwgMHhjOGE5MWUxNCk7CisJJl9kYXRhX3dvcmQoMHg4NTE5ZjE1NywgMHg0YzA3NzVhZiwgMHhiYmRkOTllZSwgMHhmZDYwN2ZhMyk7CisJJl9kYXRhX3dvcmQoMHg5ZjI2MDFmNywgMHhiY2Y1NzI1YywgMHhjNTNiNjY0NCwgMHgzNDdlZmI1Yik7CisJJl9kYXRhX3dvcmQoMHg3NjI5NDM4YiwgMHhkY2M2MjNjYiwgMHg2OGZjZWRiNiwgMHg2M2YxZTRiOCk7CisJJl9kYXRhX3dvcmQoMHhjYWRjMzFkNywgMHgxMDg1NjM0MiwgMHg0MDIyOTcxMywgMHgyMDExYzY4NCk7CisJJl9kYXRhX3dvcmQoMHg3ZDI0NGE4NSwgMHhmODNkYmJkMiwgMHgxMTMyZjlhZSwgMHg2ZGExMjljNyk7CisJJl9kYXRhX3dvcmQoMHg0YjJmOWUxZCwgMHhmMzMwYjJkYywgMHhlYzUyODYwZCwgMHhkMGUzYzE3Nyk7CisJJl9kYXRhX3dvcmQoMHg2YzE2YjMyYiwgMHg5OWI5NzBhOSwgMHhmYTQ4OTQxMSwgMHgyMjY0ZTk0Nyk7CisJJl9kYXRhX3dvcmQoMHhjNDhjZmNhOCwgMHgxYTNmZjBhMCwgMHhkODJjN2Q1NiwgMHhlZjkwMzMyMik7CisJJl9kYXRhX3dvcmQoMHhjNzRlNDk4NywgMHhjMWQxMzhkOSwgMHhmZWEyY2E4YywgMHgzNjBiZDQ5OCk7CisJJl9kYXRhX3dvcmQoMHhjZjgxZjVhNiwgMHgyOGRlN2FhNSwgMHgyNjhlYjdkYSwgMHhhNGJmYWQzZik7CisJJl9kYXRhX3dvcmQoMHhlNDlkM2EyYywgMHgwZDkyNzg1MCwgMHg5YmNjNWY2YSwgMHg2MjQ2N2U1NCk7CisJJl9kYXRhX3dvcmQoMHhjMjEzOGRmNiwgMHhlOGI4ZDg5MCwgMHg1ZWY3MzkyZSwgMHhmNWFmYzM4Mik7CisJJl9kYXRhX3dvcmQoMHhiZTgwNWQ5ZiwgMHg3YzkzZDA2OSwgMHhhOTJkZDU2ZiwgMHhiMzEyMjVjZik7CisJJl9kYXRhX3dvcmQoMHgzYjk5YWNjOCwgMHhhNzdkMTgxMCwgMHg2ZTYzOWNlOCwgMHg3YmJiM2JkYik7CisJJl9kYXRhX3dvcmQoMHgwOTc4MjZjZCwgMHhmNDE4NTk2ZSwgMHgwMWI3OWFlYywgMHhhODlhNGY4Myk7CisJJl9kYXRhX3dvcmQoMHg2NTZlOTVlNiwgMHg3ZWU2ZmZhYSwgMHgwOGNmYmMyMSwgMHhlNmU4MTVlZik7CisJJl9kYXRhX3dvcmQoMHhkOTliZTdiYSwgMHhjZTM2NmY0YSwgMHhkNDA5OWZlYSwgMHhkNjdjYjAyOSk7CisJJl9kYXRhX3dvcmQoMHhhZmIyYTQzMSwgMHgzMTIzM2YyYSwgMHgzMDk0YTVjNiwgMHhjMDY2YTIzNSk7CisJJl9kYXRhX3dvcmQoMHgzN2JjNGU3NCwgMHhhNmNhODJmYywgMHhiMGQwOTBlMCwgMHgxNWQ4YTczMyk7CisJJl9kYXRhX3dvcmQoMHg0YTk4MDRmMSwgMHhmN2RhZWM0MSwgMHgwZTUwY2Q3ZiwgMHgyZmY2OTExNyk7CisJJl9kYXRhX3dvcmQoMHg4ZGQ2NGQ3NiwgMHg0ZGIwZWY0MywgMHg1NDRkYWFjYywgMHhkZjA0OTZlNCk7CisJJl9kYXRhX3dvcmQoMHhlM2I1ZDE5ZSwgMHgxYjg4NmE0YywgMHhiODFmMmNjMSwgMHg3ZjUxNjU0Nik7CisJJl9kYXRhX3dvcmQoMHgwNGVhNWU5ZCwgMHg1ZDM1OGMwMSwgMHg3Mzc0ODdmYSwgMHgyZTQxMGJmYik7CisJJl9kYXRhX3dvcmQoMHg1YTFkNjdiMywgMHg1MmQyZGI5MiwgMHgzMzU2MTBlOSwgMHgxMzQ3ZDY2ZCk7CisJJl9kYXRhX3dvcmQoMHg4YzYxZDc5YSwgMHg3YTBjYTEzNywgMHg4ZTE0Zjg1OSwgMHg4OTNjMTNlYik7CisJJl9kYXRhX3dvcmQoMHhlZTI3YTljZSwgMHgzNWM5NjFiNywgMHhlZGU1MWNlMSwgMHgzY2IxNDc3YSk7CisJJl9kYXRhX3dvcmQoMHg1OWRmZDI5YywgMHgzZjczZjI1NSwgMHg3OWNlMTQxOCwgMHhiZjM3Yzc3Myk7CisJJl9kYXRhX3dvcmQoMHhlYWNkZjc1MywgMHg1YmFhZmQ1ZiwgMHgxNDZmM2RkZiwgMHg4NmRiNDQ3OCk7CisJJl9kYXRhX3dvcmQoMHg4MWYzYWZjYSwgMHgzZWM0NjhiOSwgMHgyYzM0MjQzOCwgMHg1ZjQwYTNjMik7CisJJl9kYXRhX3dvcmQoMHg3MmMzMWQxNiwgMHgwYzI1ZTJiYywgMHg4YjQ5M2MyOCwgMHg0MTk1MGRmZik7CisJJl9kYXRhX3dvcmQoMHg3MTAxYTgzOSwgMHhkZWIzMGMwOCwgMHg5Y2U0YjRkOCwgMHg5MGMxNTY2NCk7CisJJl9kYXRhX3dvcmQoMHg2MTg0Y2I3YiwgMHg3MGI2MzJkNSwgMHg3NDVjNmM0OCwgMHg0MjU3YjhkMCk7CisKKyNUZDQ6CSMgZm91ciBjb3BpZXMgb2YgVGQ0IHRvIGNob29zZSBmcm9tIHRvIGF2b2lkIEwxIGFsaWFzaW5nCisJJmRhdGFfYnl0ZSgweDUyLCAweDA5LCAweDZhLCAweGQ1LCAweDMwLCAweDM2LCAweGE1LCAweDM4KTsKKwkmZGF0YV9ieXRlKDB4YmYsIDB4NDAsIDB4YTMsIDB4OWUsIDB4ODEsIDB4ZjMsIDB4ZDcsIDB4ZmIpOworCSZkYXRhX2J5dGUoMHg3YywgMHhlMywgMHgzOSwgMHg4MiwgMHg5YiwgMHgyZiwgMHhmZiwgMHg4Nyk7CisJJmRhdGFfYnl0ZSgweDM0LCAweDhlLCAweDQzLCAweDQ0LCAweGM0LCAweGRlLCAweGU5LCAweGNiKTsKKwkmZGF0YV9ieXRlKDB4NTQsIDB4N2IsIDB4OTQsIDB4MzIsIDB4YTYsIDB4YzIsIDB4MjMsIDB4M2QpOworCSZkYXRhX2J5dGUoMHhlZSwgMHg0YywgMHg5NSwgMHgwYiwgMHg0MiwgMHhmYSwgMHhjMywgMHg0ZSk7CisJJmRhdGFfYnl0ZSgweDA4LCAweDJlLCAweGExLCAweDY2LCAweDI4LCAweGQ5LCAweDI0LCAweGIyKTsKKwkmZGF0YV9ieXRlKDB4NzYsIDB4NWIsIDB4YTIsIDB4NDksIDB4NmQsIDB4OGIsIDB4ZDEsIDB4MjUpOworCSZkYXRhX2J5dGUoMHg3MiwgMHhmOCwgMHhmNiwgMHg2NCwgMHg4NiwgMHg2OCwgMHg5OCwgMHgxNik7CisJJmRhdGFfYnl0ZSgweGQ0LCAweGE0LCAweDVjLCAweGNjLCAweDVkLCAweDY1LCAweGI2LCAweDkyKTsKKwkmZGF0YV9ieXRlKDB4NmMsIDB4NzAsIDB4NDgsIDB4NTAsIDB4ZmQsIDB4ZWQsIDB4YjksIDB4ZGEpOworCSZkYXRhX2J5dGUoMHg1ZSwgMHgxNSwgMHg0NiwgMHg1NywgMHhhNywgMHg4ZCwgMHg5ZCwgMHg4NCk7CisJJmRhdGFfYnl0ZSgweDkwLCAweGQ4LCAweGFiLCAweDAwLCAweDhjLCAweGJjLCAweGQzLCAweDBhKTsKKwkmZGF0YV9ieXRlKDB4ZjcsIDB4ZTQsIDB4NTgsIDB4MDUsIDB4YjgsIDB4YjMsIDB4NDUsIDB4MDYpOworCSZkYXRhX2J5dGUoMHhkMCwgMHgyYywgMHgxZSwgMHg4ZiwgMHhjYSwgMHgzZiwgMHgwZiwgMHgwMik7CisJJmRhdGFfYnl0ZSgweGMxLCAweGFmLCAweGJkLCAweDAzLCAweDAxLCAweDEzLCAweDhhLCAweDZiKTsKKwkmZGF0YV9ieXRlKDB4M2EsIDB4OTEsIDB4MTEsIDB4NDEsIDB4NGYsIDB4NjcsIDB4ZGMsIDB4ZWEpOworCSZkYXRhX2J5dGUoMHg5NywgMHhmMiwgMHhjZiwgMHhjZSwgMHhmMCwgMHhiNCwgMHhlNiwgMHg3Myk7CisJJmRhdGFfYnl0ZSgweDk2LCAweGFjLCAweDc0LCAweDIyLCAweGU3LCAweGFkLCAweDM1LCAweDg1KTsKKwkmZGF0YV9ieXRlKDB4ZTIsIDB4ZjksIDB4MzcsIDB4ZTgsIDB4MWMsIDB4NzUsIDB4ZGYsIDB4NmUpOworCSZkYXRhX2J5dGUoMHg0NywgMHhmMSwgMHgxYSwgMHg3MSwgMHgxZCwgMHgyOSwgMHhjNSwgMHg4OSk7CisJJmRhdGFfYnl0ZSgweDZmLCAweGI3LCAweDYyLCAweDBlLCAweGFhLCAweDE4LCAweGJlLCAweDFiKTsKKwkmZGF0YV9ieXRlKDB4ZmMsIDB4NTYsIDB4M2UsIDB4NGIsIDB4YzYsIDB4ZDIsIDB4NzksIDB4MjApOworCSZkYXRhX2J5dGUoMHg5YSwgMHhkYiwgMHhjMCwgMHhmZSwgMHg3OCwgMHhjZCwgMHg1YSwgMHhmNCk7CisJJmRhdGFfYnl0ZSgweDFmLCAweGRkLCAweGE4LCAweDMzLCAweDg4LCAweDA3LCAweGM3LCAweDMxKTsKKwkmZGF0YV9ieXRlKDB4YjEsIDB4MTIsIDB4MTAsIDB4NTksIDB4MjcsIDB4ODAsIDB4ZWMsIDB4NWYpOworCSZkYXRhX2J5dGUoMHg2MCwgMHg1MSwgMHg3ZiwgMHhhOSwgMHgxOSwgMHhiNSwgMHg0YSwgMHgwZCk7CisJJmRhdGFfYnl0ZSgweDJkLCAweGU1LCAweDdhLCAweDlmLCAweDkzLCAweGM5LCAweDljLCAweGVmKTsKKwkmZGF0YV9ieXRlKDB4YTAsIDB4ZTAsIDB4M2IsIDB4NGQsIDB4YWUsIDB4MmEsIDB4ZjUsIDB4YjApOworCSZkYXRhX2J5dGUoMHhjOCwgMHhlYiwgMHhiYiwgMHgzYywgMHg4MywgMHg1MywgMHg5OSwgMHg2MSk7CisJJmRhdGFfYnl0ZSgweDE3LCAweDJiLCAweDA0LCAweDdlLCAweGJhLCAweDc3LCAweGQ2LCAweDI2KTsKKwkmZGF0YV9ieXRlKDB4ZTEsIDB4NjksIDB4MTQsIDB4NjMsIDB4NTUsIDB4MjEsIDB4MGMsIDB4N2QpOworJGNvZGUuPTw8X19fOworCS5sb25nCTB4ODA4MDgwODAsIDB4ODA4MDgwODAsIDB4ZmVmZWZlZmUsIDB4ZmVmZWZlZmUKKwkubG9uZwkweDFiMWIxYjFiLCAweDFiMWIxYjFiLCAwLCAwCitfX18KKwkmZGF0YV9ieXRlKDB4NTIsIDB4MDksIDB4NmEsIDB4ZDUsIDB4MzAsIDB4MzYsIDB4YTUsIDB4MzgpOworCSZkYXRhX2J5dGUoMHhiZiwgMHg0MCwgMHhhMywgMHg5ZSwgMHg4MSwgMHhmMywgMHhkNywgMHhmYik7CisJJmRhdGFfYnl0ZSgweDdjLCAweGUzLCAweDM5LCAweDgyLCAweDliLCAweDJmLCAweGZmLCAweDg3KTsKKwkmZGF0YV9ieXRlKDB4MzQsIDB4OGUsIDB4NDMsIDB4NDQsIDB4YzQsIDB4ZGUsIDB4ZTksIDB4Y2IpOworCSZkYXRhX2J5dGUoMHg1NCwgMHg3YiwgMHg5NCwgMHgzMiwgMHhhNiwgMHhjMiwgMHgyMywgMHgzZCk7CisJJmRhdGFfYnl0ZSgweGVlLCAweDRjLCAweDk1LCAweDBiLCAweDQyLCAweGZhLCAweGMzLCAweDRlKTsKKwkmZGF0YV9ieXRlKDB4MDgsIDB4MmUsIDB4YTEsIDB4NjYsIDB4MjgsIDB4ZDksIDB4MjQsIDB4YjIpOworCSZkYXRhX2J5dGUoMHg3NiwgMHg1YiwgMHhhMiwgMHg0OSwgMHg2ZCwgMHg4YiwgMHhkMSwgMHgyNSk7CisJJmRhdGFfYnl0ZSgweDcyLCAweGY4LCAweGY2LCAweDY0LCAweDg2LCAweDY4LCAweDk4LCAweDE2KTsKKwkmZGF0YV9ieXRlKDB4ZDQsIDB4YTQsIDB4NWMsIDB4Y2MsIDB4NWQsIDB4NjUsIDB4YjYsIDB4OTIpOworCSZkYXRhX2J5dGUoMHg2YywgMHg3MCwgMHg0OCwgMHg1MCwgMHhmZCwgMHhlZCwgMHhiOSwgMHhkYSk7CisJJmRhdGFfYnl0ZSgweDVlLCAweDE1LCAweDQ2LCAweDU3LCAweGE3LCAweDhkLCAweDlkLCAweDg0KTsKKwkmZGF0YV9ieXRlKDB4OTAsIDB4ZDgsIDB4YWIsIDB4MDAsIDB4OGMsIDB4YmMsIDB4ZDMsIDB4MGEpOworCSZkYXRhX2J5dGUoMHhmNywgMHhlNCwgMHg1OCwgMHgwNSwgMHhiOCwgMHhiMywgMHg0NSwgMHgwNik7CisJJmRhdGFfYnl0ZSgweGQwLCAweDJjLCAweDFlLCAweDhmLCAweGNhLCAweDNmLCAweDBmLCAweDAyKTsKKwkmZGF0YV9ieXRlKDB4YzEsIDB4YWYsIDB4YmQsIDB4MDMsIDB4MDEsIDB4MTMsIDB4OGEsIDB4NmIpOworCSZkYXRhX2J5dGUoMHgzYSwgMHg5MSwgMHgxMSwgMHg0MSwgMHg0ZiwgMHg2NywgMHhkYywgMHhlYSk7CisJJmRhdGFfYnl0ZSgweDk3LCAweGYyLCAweGNmLCAweGNlLCAweGYwLCAweGI0LCAweGU2LCAweDczKTsKKwkmZGF0YV9ieXRlKDB4OTYsIDB4YWMsIDB4NzQsIDB4MjIsIDB4ZTcsIDB4YWQsIDB4MzUsIDB4ODUpOworCSZkYXRhX2J5dGUoMHhlMiwgMHhmOSwgMHgzNywgMHhlOCwgMHgxYywgMHg3NSwgMHhkZiwgMHg2ZSk7CisJJmRhdGFfYnl0ZSgweDQ3LCAweGYxLCAweDFhLCAweDcxLCAweDFkLCAweDI5LCAweGM1LCAweDg5KTsKKwkmZGF0YV9ieXRlKDB4NmYsIDB4YjcsIDB4NjIsIDB4MGUsIDB4YWEsIDB4MTgsIDB4YmUsIDB4MWIpOworCSZkYXRhX2J5dGUoMHhmYywgMHg1NiwgMHgzZSwgMHg0YiwgMHhjNiwgMHhkMiwgMHg3OSwgMHgyMCk7CisJJmRhdGFfYnl0ZSgweDlhLCAweGRiLCAweGMwLCAweGZlLCAweDc4LCAweGNkLCAweDVhLCAweGY0KTsKKwkmZGF0YV9ieXRlKDB4MWYsIDB4ZGQsIDB4YTgsIDB4MzMsIDB4ODgsIDB4MDcsIDB4YzcsIDB4MzEpOworCSZkYXRhX2J5dGUoMHhiMSwgMHgxMiwgMHgxMCwgMHg1OSwgMHgyNywgMHg4MCwgMHhlYywgMHg1Zik7CisJJmRhdGFfYnl0ZSgweDYwLCAweDUxLCAweDdmLCAweGE5LCAweDE5LCAweGI1LCAweDRhLCAweDBkKTsKKwkmZGF0YV9ieXRlKDB4MmQsIDB4ZTUsIDB4N2EsIDB4OWYsIDB4OTMsIDB4YzksIDB4OWMsIDB4ZWYpOworCSZkYXRhX2J5dGUoMHhhMCwgMHhlMCwgMHgzYiwgMHg0ZCwgMHhhZSwgMHgyYSwgMHhmNSwgMHhiMCk7CisJJmRhdGFfYnl0ZSgweGM4LCAweGViLCAweGJiLCAweDNjLCAweDgzLCAweDUzLCAweDk5LCAweDYxKTsKKwkmZGF0YV9ieXRlKDB4MTcsIDB4MmIsIDB4MDQsIDB4N2UsIDB4YmEsIDB4NzcsIDB4ZDYsIDB4MjYpOworCSZkYXRhX2J5dGUoMHhlMSwgMHg2OSwgMHgxNCwgMHg2MywgMHg1NSwgMHgyMSwgMHgwYywgMHg3ZCk7CiskY29kZS49PDxfX187CisJLmxvbmcJMHg4MDgwODA4MCwgMHg4MDgwODA4MCwgMHhmZWZlZmVmZSwgMHhmZWZlZmVmZQorCS5sb25nCTB4MWIxYjFiMWIsIDB4MWIxYjFiMWIsIDAsIDAKK19fXworCSZkYXRhX2J5dGUoMHg1MiwgMHgwOSwgMHg2YSwgMHhkNSwgMHgzMCwgMHgzNiwgMHhhNSwgMHgzOCk7CisJJmRhdGFfYnl0ZSgweGJmLCAweDQwLCAweGEzLCAweDllLCAweDgxLCAweGYzLCAweGQ3LCAweGZiKTsKKwkmZGF0YV9ieXRlKDB4N2MsIDB4ZTMsIDB4MzksIDB4ODIsIDB4OWIsIDB4MmYsIDB4ZmYsIDB4ODcpOworCSZkYXRhX2J5dGUoMHgzNCwgMHg4ZSwgMHg0MywgMHg0NCwgMHhjNCwgMHhkZSwgMHhlOSwgMHhjYik7CisJJmRhdGFfYnl0ZSgweDU0LCAweDdiLCAweDk0LCAweDMyLCAweGE2LCAweGMyLCAweDIzLCAweDNkKTsKKwkmZGF0YV9ieXRlKDB4ZWUsIDB4NGMsIDB4OTUsIDB4MGIsIDB4NDIsIDB4ZmEsIDB4YzMsIDB4NGUpOworCSZkYXRhX2J5dGUoMHgwOCwgMHgyZSwgMHhhMSwgMHg2NiwgMHgyOCwgMHhkOSwgMHgyNCwgMHhiMik7CisJJmRhdGFfYnl0ZSgweDc2LCAweDViLCAweGEyLCAweDQ5LCAweDZkLCAweDhiLCAweGQxLCAweDI1KTsKKwkmZGF0YV9ieXRlKDB4NzIsIDB4ZjgsIDB4ZjYsIDB4NjQsIDB4ODYsIDB4NjgsIDB4OTgsIDB4MTYpOworCSZkYXRhX2J5dGUoMHhkNCwgMHhhNCwgMHg1YywgMHhjYywgMHg1ZCwgMHg2NSwgMHhiNiwgMHg5Mik7CisJJmRhdGFfYnl0ZSgweDZjLCAweDcwLCAweDQ4LCAweDUwLCAweGZkLCAweGVkLCAweGI5LCAweGRhKTsKKwkmZGF0YV9ieXRlKDB4NWUsIDB4MTUsIDB4NDYsIDB4NTcsIDB4YTcsIDB4OGQsIDB4OWQsIDB4ODQpOworCSZkYXRhX2J5dGUoMHg5MCwgMHhkOCwgMHhhYiwgMHgwMCwgMHg4YywgMHhiYywgMHhkMywgMHgwYSk7CisJJmRhdGFfYnl0ZSgweGY3LCAweGU0LCAweDU4LCAweDA1LCAweGI4LCAweGIzLCAweDQ1LCAweDA2KTsKKwkmZGF0YV9ieXRlKDB4ZDAsIDB4MmMsIDB4MWUsIDB4OGYsIDB4Y2EsIDB4M2YsIDB4MGYsIDB4MDIpOworCSZkYXRhX2J5dGUoMHhjMSwgMHhhZiwgMHhiZCwgMHgwMywgMHgwMSwgMHgxMywgMHg4YSwgMHg2Yik7CisJJmRhdGFfYnl0ZSgweDNhLCAweDkxLCAweDExLCAweDQxLCAweDRmLCAweDY3LCAweGRjLCAweGVhKTsKKwkmZGF0YV9ieXRlKDB4OTcsIDB4ZjIsIDB4Y2YsIDB4Y2UsIDB4ZjAsIDB4YjQsIDB4ZTYsIDB4NzMpOworCSZkYXRhX2J5dGUoMHg5NiwgMHhhYywgMHg3NCwgMHgyMiwgMHhlNywgMHhhZCwgMHgzNSwgMHg4NSk7CisJJmRhdGFfYnl0ZSgweGUyLCAweGY5LCAweDM3LCAweGU4LCAweDFjLCAweDc1LCAweGRmLCAweDZlKTsKKwkmZGF0YV9ieXRlKDB4NDcsIDB4ZjEsIDB4MWEsIDB4NzEsIDB4MWQsIDB4MjksIDB4YzUsIDB4ODkpOworCSZkYXRhX2J5dGUoMHg2ZiwgMHhiNywgMHg2MiwgMHgwZSwgMHhhYSwgMHgxOCwgMHhiZSwgMHgxYik7CisJJmRhdGFfYnl0ZSgweGZjLCAweDU2LCAweDNlLCAweDRiLCAweGM2LCAweGQyLCAweDc5LCAweDIwKTsKKwkmZGF0YV9ieXRlKDB4OWEsIDB4ZGIsIDB4YzAsIDB4ZmUsIDB4NzgsIDB4Y2QsIDB4NWEsIDB4ZjQpOworCSZkYXRhX2J5dGUoMHgxZiwgMHhkZCwgMHhhOCwgMHgzMywgMHg4OCwgMHgwNywgMHhjNywgMHgzMSk7CisJJmRhdGFfYnl0ZSgweGIxLCAweDEyLCAweDEwLCAweDU5LCAweDI3LCAweDgwLCAweGVjLCAweDVmKTsKKwkmZGF0YV9ieXRlKDB4NjAsIDB4NTEsIDB4N2YsIDB4YTksIDB4MTksIDB4YjUsIDB4NGEsIDB4MGQpOworCSZkYXRhX2J5dGUoMHgyZCwgMHhlNSwgMHg3YSwgMHg5ZiwgMHg5MywgMHhjOSwgMHg5YywgMHhlZik7CisJJmRhdGFfYnl0ZSgweGEwLCAweGUwLCAweDNiLCAweDRkLCAweGFlLCAweDJhLCAweGY1LCAweGIwKTsKKwkmZGF0YV9ieXRlKDB4YzgsIDB4ZWIsIDB4YmIsIDB4M2MsIDB4ODMsIDB4NTMsIDB4OTksIDB4NjEpOworCSZkYXRhX2J5dGUoMHgxNywgMHgyYiwgMHgwNCwgMHg3ZSwgMHhiYSwgMHg3NywgMHhkNiwgMHgyNik7CisJJmRhdGFfYnl0ZSgweGUxLCAweDY5LCAweDE0LCAweDYzLCAweDU1LCAweDIxLCAweDBjLCAweDdkKTsKKyRjb2RlLj08PF9fXzsKKwkubG9uZwkweDgwODA4MDgwLCAweDgwODA4MDgwLCAweGZlZmVmZWZlLCAweGZlZmVmZWZlCisJLmxvbmcJMHgxYjFiMWIxYiwgMHgxYjFiMWIxYiwgMCwgMAorX19fCisJJmRhdGFfYnl0ZSgweDUyLCAweDA5LCAweDZhLCAweGQ1LCAweDMwLCAweDM2LCAweGE1LCAweDM4KTsKKwkmZGF0YV9ieXRlKDB4YmYsIDB4NDAsIDB4YTMsIDB4OWUsIDB4ODEsIDB4ZjMsIDB4ZDcsIDB4ZmIpOworCSZkYXRhX2J5dGUoMHg3YywgMHhlMywgMHgzOSwgMHg4MiwgMHg5YiwgMHgyZiwgMHhmZiwgMHg4Nyk7CisJJmRhdGFfYnl0ZSgweDM0LCAweDhlLCAweDQzLCAweDQ0LCAweGM0LCAweGRlLCAweGU5LCAweGNiKTsKKwkmZGF0YV9ieXRlKDB4NTQsIDB4N2IsIDB4OTQsIDB4MzIsIDB4YTYsIDB4YzIsIDB4MjMsIDB4M2QpOworCSZkYXRhX2J5dGUoMHhlZSwgMHg0YywgMHg5NSwgMHgwYiwgMHg0MiwgMHhmYSwgMHhjMywgMHg0ZSk7CisJJmRhdGFfYnl0ZSgweDA4LCAweDJlLCAweGExLCAweDY2LCAweDI4LCAweGQ5LCAweDI0LCAweGIyKTsKKwkmZGF0YV9ieXRlKDB4NzYsIDB4NWIsIDB4YTIsIDB4NDksIDB4NmQsIDB4OGIsIDB4ZDEsIDB4MjUpOworCSZkYXRhX2J5dGUoMHg3MiwgMHhmOCwgMHhmNiwgMHg2NCwgMHg4NiwgMHg2OCwgMHg5OCwgMHgxNik7CisJJmRhdGFfYnl0ZSgweGQ0LCAweGE0LCAweDVjLCAweGNjLCAweDVkLCAweDY1LCAweGI2LCAweDkyKTsKKwkmZGF0YV9ieXRlKDB4NmMsIDB4NzAsIDB4NDgsIDB4NTAsIDB4ZmQsIDB4ZWQsIDB4YjksIDB4ZGEpOworCSZkYXRhX2J5dGUoMHg1ZSwgMHgxNSwgMHg0NiwgMHg1NywgMHhhNywgMHg4ZCwgMHg5ZCwgMHg4NCk7CisJJmRhdGFfYnl0ZSgweDkwLCAweGQ4LCAweGFiLCAweDAwLCAweDhjLCAweGJjLCAweGQzLCAweDBhKTsKKwkmZGF0YV9ieXRlKDB4ZjcsIDB4ZTQsIDB4NTgsIDB4MDUsIDB4YjgsIDB4YjMsIDB4NDUsIDB4MDYpOworCSZkYXRhX2J5dGUoMHhkMCwgMHgyYywgMHgxZSwgMHg4ZiwgMHhjYSwgMHgzZiwgMHgwZiwgMHgwMik7CisJJmRhdGFfYnl0ZSgweGMxLCAweGFmLCAweGJkLCAweDAzLCAweDAxLCAweDEzLCAweDhhLCAweDZiKTsKKwkmZGF0YV9ieXRlKDB4M2EsIDB4OTEsIDB4MTEsIDB4NDEsIDB4NGYsIDB4NjcsIDB4ZGMsIDB4ZWEpOworCSZkYXRhX2J5dGUoMHg5NywgMHhmMiwgMHhjZiwgMHhjZSwgMHhmMCwgMHhiNCwgMHhlNiwgMHg3Myk7CisJJmRhdGFfYnl0ZSgweDk2LCAweGFjLCAweDc0LCAweDIyLCAweGU3LCAweGFkLCAweDM1LCAweDg1KTsKKwkmZGF0YV9ieXRlKDB4ZTIsIDB4ZjksIDB4MzcsIDB4ZTgsIDB4MWMsIDB4NzUsIDB4ZGYsIDB4NmUpOworCSZkYXRhX2J5dGUoMHg0NywgMHhmMSwgMHgxYSwgMHg3MSwgMHgxZCwgMHgyOSwgMHhjNSwgMHg4OSk7CisJJmRhdGFfYnl0ZSgweDZmLCAweGI3LCAweDYyLCAweDBlLCAweGFhLCAweDE4LCAweGJlLCAweDFiKTsKKwkmZGF0YV9ieXRlKDB4ZmMsIDB4NTYsIDB4M2UsIDB4NGIsIDB4YzYsIDB4ZDIsIDB4NzksIDB4MjApOworCSZkYXRhX2J5dGUoMHg5YSwgMHhkYiwgMHhjMCwgMHhmZSwgMHg3OCwgMHhjZCwgMHg1YSwgMHhmNCk7CisJJmRhdGFfYnl0ZSgweDFmLCAweGRkLCAweGE4LCAweDMzLCAweDg4LCAweDA3LCAweGM3LCAweDMxKTsKKwkmZGF0YV9ieXRlKDB4YjEsIDB4MTIsIDB4MTAsIDB4NTksIDB4MjcsIDB4ODAsIDB4ZWMsIDB4NWYpOworCSZkYXRhX2J5dGUoMHg2MCwgMHg1MSwgMHg3ZiwgMHhhOSwgMHgxOSwgMHhiNSwgMHg0YSwgMHgwZCk7CisJJmRhdGFfYnl0ZSgweDJkLCAweGU1LCAweDdhLCAweDlmLCAweDkzLCAweGM5LCAweDljLCAweGVmKTsKKwkmZGF0YV9ieXRlKDB4YTAsIDB4ZTAsIDB4M2IsIDB4NGQsIDB4YWUsIDB4MmEsIDB4ZjUsIDB4YjApOworCSZkYXRhX2J5dGUoMHhjOCwgMHhlYiwgMHhiYiwgMHgzYywgMHg4MywgMHg1MywgMHg5OSwgMHg2MSk7CisJJmRhdGFfYnl0ZSgweDE3LCAweDJiLCAweDA0LCAweDdlLCAweGJhLCAweDc3LCAweGQ2LCAweDI2KTsKKwkmZGF0YV9ieXRlKDB4ZTEsIDB4NjksIDB4MTQsIDB4NjMsIDB4NTUsIDB4MjEsIDB4MGMsIDB4N2QpOworJGNvZGUuPTw8X19fOworCS5sb25nCTB4ODA4MDgwODAsIDB4ODA4MDgwODAsIDB4ZmVmZWZlZmUsIDB4ZmVmZWZlZmUKKwkubG9uZwkweDFiMWIxYjFiLCAweDFiMWIxYjFiLCAwLCAwCisuYXNjaXogICJBRVMgZm9yIHg4Nl82NCwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIKKy5hbGlnbgk2NAorX19fCisKKyMgRVhDRVBUSU9OX0RJU1BPU0lUSU9OIGhhbmRsZXIgKEVYQ0VQVElPTl9SRUNPUkQgKnJlYyxVTE9ORzY0IGZyYW1lLAorIwkJQ09OVEVYVCAqY29udGV4dCxESVNQQVRDSEVSX0NPTlRFWFQgKmRpc3ApCitpZiAoJHdpbjY0KSB7CiskcmVjPSIlcmN4IjsKKyRmcmFtZT0iJXJkeCI7CiskY29udGV4dD0iJXI4IjsKKyRkaXNwPSIlcjkiOworCiskY29kZS49PDxfX187CisuZXh0ZXJuCV9faW1wX1J0bFZpcnR1YWxVbndpbmQKKy50eXBlCWJsb2NrX3NlX2hhbmRsZXIsXEBhYmktb21uaXBvdGVudAorLmFsaWduCTE2CitibG9ja19zZV9oYW5kbGVyOgorCXB1c2gJJXJzaQorCXB1c2gJJXJkaQorCXB1c2gJJXJieAorCXB1c2gJJXJicAorCXB1c2gJJXIxMgorCXB1c2gJJXIxMworCXB1c2gJJXIxNAorCXB1c2gJJXIxNQorCXB1c2hmcQorCXN1YglcJDY0LCVyc3AKKworCW1vdgkxMjAoJGNvbnRleHQpLCVyYXgJIyBwdWxsIGNvbnRleHQtPlJheAorCW1vdgkyNDgoJGNvbnRleHQpLCVyYngJIyBwdWxsIGNvbnRleHQtPlJpcAorCisJbW92CTgoJGRpc3ApLCVyc2kJCSMgZGlzcC0+SW1hZ2VCYXNlCisJbW92CTU2KCRkaXNwKSwlcjExCQkjIGRpc3AtPkhhbmRsZXJEYXRhCisKKwltb3YJMCglcjExKSwlcjEwZAkJIyBIYW5kbGVyRGF0YVswXQorCWxlYQkoJXJzaSwlcjEwKSwlcjEwCSMgcHJvbG9ndWUgbGFiZWwKKwljbXAJJXIxMCwlcmJ4CQkjIGNvbnRleHQtPlJpcDxwcm9sb2d1ZSBsYWJlbAorCWpiCS5MaW5fYmxvY2tfcHJvbG9ndWUKKworCW1vdgkxNTIoJGNvbnRleHQpLCVyYXgJIyBwdWxsIGNvbnRleHQtPlJzcAorCisJbW92CTQoJXIxMSksJXIxMGQJCSMgSGFuZGxlckRhdGFbMV0KKwlsZWEJKCVyc2ksJXIxMCksJXIxMAkjIGVwaWxvZ3VlIGxhYmVsCisJY21wCSVyMTAsJXJieAkJIyBjb250ZXh0LT5SaXA+PWVwaWxvZ3VlIGxhYmVsCisJamFlCS5MaW5fYmxvY2tfcHJvbG9ndWUKKworCW1vdgkyNCglcmF4KSwlcmF4CQkjIHB1bGwgc2F2ZWQgcmVhbCBzdGFjayBwb2ludGVyCisJbGVhCTQ4KCVyYXgpLCVyYXgJCSMgYWRqdXN0Li4uCisKKwltb3YJLTgoJXJheCksJXJieAorCW1vdgktMTYoJXJheCksJXJicAorCW1vdgktMjQoJXJheCksJXIxMgorCW1vdgktMzIoJXJheCksJXIxMworCW1vdgktNDAoJXJheCksJXIxNAorCW1vdgktNDgoJXJheCksJXIxNQorCW1vdgklcmJ4LDE0NCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJieAorCW1vdgklcmJwLDE2MCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJicAorCW1vdgklcjEyLDIxNigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxMgorCW1vdgklcjEzLDIyNCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxMworCW1vdgklcjE0LDIzMigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxNAorCW1vdgklcjE1LDI0MCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxNQorCisuTGluX2Jsb2NrX3Byb2xvZ3VlOgorCW1vdgk4KCVyYXgpLCVyZGkKKwltb3YJMTYoJXJheCksJXJzaQorCW1vdgklcmF4LDE1MigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJzcAorCW1vdgklcnNpLDE2OCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJzaQorCW1vdgklcmRpLDE3NigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJkaQorCisJam1wCS5MY29tbW9uX3NlaF9leGl0Cisuc2l6ZQlibG9ja19zZV9oYW5kbGVyLC4tYmxvY2tfc2VfaGFuZGxlcgorCisudHlwZQlrZXlfc2VfaGFuZGxlcixcQGFiaS1vbW5pcG90ZW50CisuYWxpZ24JMTYKK2tleV9zZV9oYW5kbGVyOgorCXB1c2gJJXJzaQorCXB1c2gJJXJkaQorCXB1c2gJJXJieAorCXB1c2gJJXJicAorCXB1c2gJJXIxMgorCXB1c2gJJXIxMworCXB1c2gJJXIxNAorCXB1c2gJJXIxNQorCXB1c2hmcQorCXN1YglcJDY0LCVyc3AKKworCW1vdgkxMjAoJGNvbnRleHQpLCVyYXgJIyBwdWxsIGNvbnRleHQtPlJheAorCW1vdgkyNDgoJGNvbnRleHQpLCVyYngJIyBwdWxsIGNvbnRleHQtPlJpcAorCisJbW92CTgoJGRpc3ApLCVyc2kJCSMgZGlzcC0+SW1hZ2VCYXNlCisJbW92CTU2KCRkaXNwKSwlcjExCQkjIGRpc3AtPkhhbmRsZXJEYXRhCisKKwltb3YJMCglcjExKSwlcjEwZAkJIyBIYW5kbGVyRGF0YVswXQorCWxlYQkoJXJzaSwlcjEwKSwlcjEwCSMgcHJvbG9ndWUgbGFiZWwKKwljbXAJJXIxMCwlcmJ4CQkjIGNvbnRleHQtPlJpcDxwcm9sb2d1ZSBsYWJlbAorCWpiCS5MaW5fa2V5X3Byb2xvZ3VlCisKKwltb3YJMTUyKCRjb250ZXh0KSwlcmF4CSMgcHVsbCBjb250ZXh0LT5Sc3AKKworCW1vdgk0KCVyMTEpLCVyMTBkCQkjIEhhbmRsZXJEYXRhWzFdCisJbGVhCSglcnNpLCVyMTApLCVyMTAJIyBlcGlsb2d1ZSBsYWJlbAorCWNtcAklcjEwLCVyYngJCSMgY29udGV4dC0+UmlwPj1lcGlsb2d1ZSBsYWJlbAorCWphZQkuTGluX2tleV9wcm9sb2d1ZQorCisJbGVhCTU2KCVyYXgpLCVyYXgKKworCW1vdgktOCglcmF4KSwlcmJ4CisJbW92CS0xNiglcmF4KSwlcmJwCisJbW92CS0yNCglcmF4KSwlcjEyCisJbW92CS0zMiglcmF4KSwlcjEzCisJbW92CS00MCglcmF4KSwlcjE0CisJbW92CS00OCglcmF4KSwlcjE1CisJbW92CSVyYngsMTQ0KCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UmJ4CisJbW92CSVyYnAsMTYwKCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UmJwCisJbW92CSVyMTIsMjE2KCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UjEyCisJbW92CSVyMTMsMjI0KCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UjEzCisJbW92CSVyMTQsMjMyKCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UjE0CisJbW92CSVyMTUsMjQwKCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UjE1CisKKy5MaW5fa2V5X3Byb2xvZ3VlOgorCW1vdgk4KCVyYXgpLCVyZGkKKwltb3YJMTYoJXJheCksJXJzaQorCW1vdgklcmF4LDE1MigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJzcAorCW1vdgklcnNpLDE2OCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJzaQorCW1vdgklcmRpLDE3NigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJkaQorCisJam1wCS5MY29tbW9uX3NlaF9leGl0Cisuc2l6ZQlrZXlfc2VfaGFuZGxlciwuLWtleV9zZV9oYW5kbGVyCisKKy50eXBlCWNiY19zZV9oYW5kbGVyLFxAYWJpLW9tbmlwb3RlbnQKKy5hbGlnbgkxNgorY2JjX3NlX2hhbmRsZXI6CisJcHVzaAklcnNpCisJcHVzaAklcmRpCisJcHVzaAklcmJ4CisJcHVzaAklcmJwCisJcHVzaAklcjEyCisJcHVzaAklcjEzCisJcHVzaAklcjE0CisJcHVzaAklcjE1CisJcHVzaGZxCisJc3ViCVwkNjQsJXJzcAorCisJbW92CTEyMCgkY29udGV4dCksJXJheAkjIHB1bGwgY29udGV4dC0+UmF4CisJbW92CTI0OCgkY29udGV4dCksJXJieAkjIHB1bGwgY29udGV4dC0+UmlwCisKKwlsZWEJLkxjYmNfcHJvbG9ndWUoJXJpcCksJXIxMAorCWNtcAklcjEwLCVyYngJCSMgY29udGV4dC0+UmlwPC5MY2JjX3Byb2xvZ3VlCisJamIJLkxpbl9jYmNfcHJvbG9ndWUKKworCWxlYQkuTGNiY19mYXN0X2JvZHkoJXJpcCksJXIxMAorCWNtcAklcjEwLCVyYngJCSMgY29udGV4dC0+UmlwPC5MY2JjX2Zhc3RfYm9keQorCWpiCS5MaW5fY2JjX2ZyYW1lX3NldHVwCisKKwlsZWEJLkxjYmNfc2xvd19wcm9sb2d1ZSglcmlwKSwlcjEwCisJY21wCSVyMTAsJXJieAkJIyBjb250ZXh0LT5SaXA8LkxjYmNfc2xvd19wcm9sb2d1ZQorCWpiCS5MaW5fY2JjX2JvZHkKKworCWxlYQkuTGNiY19zbG93X2JvZHkoJXJpcCksJXIxMAorCWNtcAklcjEwLCVyYngJCSMgY29udGV4dC0+UmlwPC5MY2JjX3Nsb3dfYm9keQorCWpiCS5MaW5fY2JjX2ZyYW1lX3NldHVwCisKKy5MaW5fY2JjX2JvZHk6CisJbW92CTE1MigkY29udGV4dCksJXJheAkjIHB1bGwgY29udGV4dC0+UnNwCisKKwlsZWEJLkxjYmNfZXBpbG9ndWUoJXJpcCksJXIxMAorCWNtcAklcjEwLCVyYngJCSMgY29udGV4dC0+UmlwPj0uTGNiY19lcGlsb2d1ZQorCWphZQkuTGluX2NiY19wcm9sb2d1ZQorCisJbGVhCTgoJXJheCksJXJheAorCisJbGVhCS5MY2JjX3BvcGZxKCVyaXApLCVyMTAKKwljbXAJJXIxMCwlcmJ4CQkjIGNvbnRleHQtPlJpcD49LkxjYmNfcG9wZnEKKwlqYWUJLkxpbl9jYmNfcHJvbG9ndWUKKworCW1vdglgMTYtOGAoJXJheCksJXJheAkjIGJpYXNlZCAkX3JzcAorCWxlYQk1NiglcmF4KSwlcmF4CisKKy5MaW5fY2JjX2ZyYW1lX3NldHVwOgorCW1vdgktMTYoJXJheCksJXJieAorCW1vdgktMjQoJXJheCksJXJicAorCW1vdgktMzIoJXJheCksJXIxMgorCW1vdgktNDAoJXJheCksJXIxMworCW1vdgktNDgoJXJheCksJXIxNAorCW1vdgktNTYoJXJheCksJXIxNQorCW1vdgklcmJ4LDE0NCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJieAorCW1vdgklcmJwLDE2MCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJicAorCW1vdgklcjEyLDIxNigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxMgorCW1vdgklcjEzLDIyNCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxMworCW1vdgklcjE0LDIzMigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxNAorCW1vdgklcjE1LDI0MCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxNQorCisuTGluX2NiY19wcm9sb2d1ZToKKwltb3YJOCglcmF4KSwlcmRpCisJbW92CTE2KCVyYXgpLCVyc2kKKwltb3YJJXJheCwxNTIoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5Sc3AKKwltb3YJJXJzaSwxNjgoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5Sc2kKKwltb3YJJXJkaSwxNzYoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5SZGkKKworLkxjb21tb25fc2VoX2V4aXQ6CisKKwltb3YJNDAoJGRpc3ApLCVyZGkJCSMgZGlzcC0+Q29udGV4dFJlY29yZAorCW1vdgkkY29udGV4dCwlcnNpCQkjIGNvbnRleHQKKwltb3YJXCRgMTIzMi84YCwlZWN4CQkjIHNpemVvZihDT05URVhUKQorCS5sb25nCTB4YTU0OGYzZmMJCSMgY2xkOyByZXAgbW92c3EKKworCW1vdgkkZGlzcCwlcnNpCisJeG9yCSVyY3gsJXJjeAkJIyBhcmcxLCBVTldfRkxBR19OSEFORExFUgorCW1vdgk4KCVyc2kpLCVyZHgJCSMgYXJnMiwgZGlzcC0+SW1hZ2VCYXNlCisJbW92CTAoJXJzaSksJXI4CQkjIGFyZzMsIGRpc3AtPkNvbnRyb2xQYworCW1vdgkxNiglcnNpKSwlcjkJCSMgYXJnNCwgZGlzcC0+RnVuY3Rpb25FbnRyeQorCW1vdgk0MCglcnNpKSwlcjEwCQkjIGRpc3AtPkNvbnRleHRSZWNvcmQKKwlsZWEJNTYoJXJzaSksJXIxMQkJIyAmZGlzcC0+SGFuZGxlckRhdGEKKwlsZWEJMjQoJXJzaSksJXIxMgkJIyAmZGlzcC0+RXN0YWJsaXNoZXJGcmFtZQorCW1vdgklcjEwLDMyKCVyc3ApCQkjIGFyZzUKKwltb3YJJXIxMSw0MCglcnNwKQkJIyBhcmc2CisJbW92CSVyMTIsNDgoJXJzcCkJCSMgYXJnNworCW1vdgklcmN4LDU2KCVyc3ApCQkjIGFyZzgsIChOVUxMKQorCWNhbGwJKl9faW1wX1J0bFZpcnR1YWxVbndpbmQoJXJpcCkKKworCW1vdglcJDEsJWVheAkJIyBFeGNlcHRpb25Db250aW51ZVNlYXJjaAorCWFkZAlcJDY0LCVyc3AKKwlwb3BmcQorCXBvcAklcjE1CisJcG9wCSVyMTQKKwlwb3AJJXIxMworCXBvcAklcjEyCisJcG9wCSVyYnAKKwlwb3AJJXJieAorCXBvcAklcmRpCisJcG9wCSVyc2kKKwlyZXQKKy5zaXplCWNiY19zZV9oYW5kbGVyLC4tY2JjX3NlX2hhbmRsZXIKKworLnNlY3Rpb24JLnBkYXRhCisuYWxpZ24JNAorCS5ydmEJLkxTRUhfYmVnaW5fQUVTX2VuY3J5cHQKKwkucnZhCS5MU0VIX2VuZF9BRVNfZW5jcnlwdAorCS5ydmEJLkxTRUhfaW5mb19BRVNfZW5jcnlwdAorCisJLnJ2YQkuTFNFSF9iZWdpbl9BRVNfZGVjcnlwdAorCS5ydmEJLkxTRUhfZW5kX0FFU19kZWNyeXB0CisJLnJ2YQkuTFNFSF9pbmZvX0FFU19kZWNyeXB0CisKKwkucnZhCS5MU0VIX2JlZ2luX3ByaXZhdGVfQUVTX3NldF9lbmNyeXB0X2tleQorCS5ydmEJLkxTRUhfZW5kX3ByaXZhdGVfQUVTX3NldF9lbmNyeXB0X2tleQorCS5ydmEJLkxTRUhfaW5mb19wcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXkKKworCS5ydmEJLkxTRUhfYmVnaW5fcHJpdmF0ZV9BRVNfc2V0X2RlY3J5cHRfa2V5CisJLnJ2YQkuTFNFSF9lbmRfcHJpdmF0ZV9BRVNfc2V0X2RlY3J5cHRfa2V5CisJLnJ2YQkuTFNFSF9pbmZvX3ByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleQorCisJLnJ2YQkuTFNFSF9iZWdpbl9BRVNfY2JjX2VuY3J5cHQKKwkucnZhCS5MU0VIX2VuZF9BRVNfY2JjX2VuY3J5cHQKKwkucnZhCS5MU0VIX2luZm9fQUVTX2NiY19lbmNyeXB0CisKKy5zZWN0aW9uCS54ZGF0YQorLmFsaWduCTgKKy5MU0VIX2luZm9fQUVTX2VuY3J5cHQ6CisJLmJ5dGUJOSwwLDAsMAorCS5ydmEJYmxvY2tfc2VfaGFuZGxlcgorCS5ydmEJLkxlbmNfcHJvbG9ndWUsLkxlbmNfZXBpbG9ndWUJIyBIYW5kbGVyRGF0YVtdCisuTFNFSF9pbmZvX0FFU19kZWNyeXB0OgorCS5ieXRlCTksMCwwLDAKKwkucnZhCWJsb2NrX3NlX2hhbmRsZXIKKwkucnZhCS5MZGVjX3Byb2xvZ3VlLC5MZGVjX2VwaWxvZ3VlCSMgSGFuZGxlckRhdGFbXQorLkxTRUhfaW5mb19wcml2YXRlX0FFU19zZXRfZW5jcnlwdF9rZXk6CisJLmJ5dGUJOSwwLDAsMAorCS5ydmEJa2V5X3NlX2hhbmRsZXIKKwkucnZhCS5MZW5jX2tleV9wcm9sb2d1ZSwuTGVuY19rZXlfZXBpbG9ndWUJIyBIYW5kbGVyRGF0YVtdCisuTFNFSF9pbmZvX3ByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleToKKwkuYnl0ZQk5LDAsMCwwCisJLnJ2YQlrZXlfc2VfaGFuZGxlcgorCS5ydmEJLkxkZWNfa2V5X3Byb2xvZ3VlLC5MZGVjX2tleV9lcGlsb2d1ZQkjIEhhbmRsZXJEYXRhW10KKy5MU0VIX2luZm9fQUVTX2NiY19lbmNyeXB0OgorCS5ieXRlCTksMCwwLDAKKwkucnZhCWNiY19zZV9oYW5kbGVyCitfX18KK30KKworJGNvZGUgPX4gcy9cYChbXlxgXSopXGAvZXZhbCgkMSkvZ2VtOworCitwcmludCAkY29kZTsKKworY2xvc2UgU1RET1VUOwpkaWZmIC0tZ2l0IGEvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzbmktc2hhMS14ODZfNjQucGwgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS9hZXNuaS1zaGExLXg4Nl82NC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmY2YjMzCi0tLSAvZGV2L251bGwKKysrIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYWVzbmktc2hhMS14ODZfNjQucGwKQEAgLTAsMCArMSwxMjQ5IEBACisjIS91c3IvYmluL2VudiBwZXJsCisjCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9Ab3BlbnNzbC5vcmc+IGZvciB0aGUgT3BlblNTTAorIyBwcm9qZWN0LiBUaGUgbW9kdWxlIGlzLCBob3dldmVyLCBkdWFsIGxpY2Vuc2VkIHVuZGVyIE9wZW5TU0wgYW5kCisjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRhaW4gaXQuIEZvciBmdXJ0aGVyCisjIGRldGFpbHMgc2VlIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL2NyeXB0b2dhbXMvLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBKdW5lIDIwMTEKKyMKKyMgVGhpcyBpcyBBRVNOSS1DQkMrU0hBMSAic3RpdGNoIiBpbXBsZW1lbnRhdGlvbi4gVGhlIGlkZWEsIGFzIHNwZWxsZWQKKyMgaW4gaHR0cDovL2Rvd25sb2FkLmludGVsLmNvbS9kZXNpZ24vaW50YXJjaC9wYXBlcnMvMzIzNjg2LnBkZiwgaXMKKyMgdGhhdCBzaW5jZSBBRVNOSS1DQkMgZW5jcnlwdCBleGhpYml0ICp2ZXJ5KiBsb3cgaW5zdHJ1Y3Rpb24tbGV2ZWwKKyMgcGFyYWxsZWxpc20sIGludGVybGVhdmluZyBpdCB3aXRoIGFub3RoZXIgYWxnb3JpdGhtIHdvdWxkIGFsbG93IHRvCisjIHV0aWxpemUgcHJvY2Vzc29yIHJlc291cmNlcyBiZXR0ZXIgYW5kIGFjaGlldmUgYmV0dGVyIHBlcmZvcm1hbmNlLgorIyBTSEExIGluc3RydWN0aW9uIHNlcXVlbmNlcygqKSBhcmUgdGFrZW4gZnJvbSBzaGExLXg4Nl82NC5wbCBhbmQKKyMgQUVTTkkgY29kZSBpcyB3ZWF2ZWQgaW50byBpdC4gQmVsb3cgYXJlIHBlcmZvcm1hbmNlIG51bWJlcnMgaW4KKyMgY3ljbGVzIHBlciBwcm9jZXNzZWQgYnl0ZSwgbGVzcyBpcyBiZXR0ZXIsIGZvciBzdGFuZGFsb25lIEFFU05JLUNCQworIyBlbmNyeXB0LCBzdW0gb2YgdGhlIGxhdHRlciBhbmQgc3RhbmRhbG9uZSBTSEExLCBhbmQgInN0aXRjaGVkIgorIyBzdWJyb3V0aW5lOgorIworIwkJQUVTLTEyOC1DQkMJK1NIQTEJCXN0aXRjaCAgICAgIGdhaW4KKyMgV2VzdG1lcmUJMy43N1srNS42XQk5LjM3CQk2LjY1CSAgICArNDElCisjIFNhbmR5IEJyaWRnZQk1LjA1Wys1LjIoNi4zKV0JMTAuMjUoMTEuMzUpCTYuMTYoNy4wOCkgICs2NyUoKzYwJSkKKyMKKyMJCUFFUy0xOTItQ0JDCisjIFdlc3RtZXJlCTQuNTEJCTEwLjExCQk2Ljk3CSAgICArNDUlCisjIFNhbmR5IEJyaWRnZQk2LjA1CQkxMS4yNSgxMi4zNSkJNi4zNCg3LjI3KSAgKzc3JSgrNzAlKQorIworIwkJQUVTLTI1Ni1DQkMKKyMgV2VzdG1lcmUJNS4yNQkJMTAuODUJCTcuMjUJICAgICs1MCUKKyMgU2FuZHkgQnJpZGdlCTcuMDUJCTEyLjI1KDEzLjM1KQk3LjA2KDcuNzApICArNzQlKCs3MyUpCisjCisjICgqKQlUaGVyZSBhcmUgdHdvIGNvZGUgcGF0aHM6IFNTU0UzIGFuZCBBVlguIFNlZSBzaGExLTU2OC5wbCBmb3IKKyMJYmFja2dyb3VuZCBpbmZvcm1hdGlvbi4gQWJvdmUgbnVtYmVycyBpbiBwYXJlbnRoZXNlcyBhcmUgU1NTRTMKKyMJcmVzdWx0cyBjb2xsZWN0ZWQgb24gQVZYLWNhcGFibGUgQ1BVLCBpLmUuIGFwcGx5IG9uIE9TZXMgdGhhdAorIwlkb24ndCBzdXBwb3J0IEFWWC4KKyMKKyMgTmVlZGxlc3MgdG8gbWVudGlvbiB0aGF0IGl0IG1ha2VzIG5vIHNlbnNlIHRvIGltcGxlbWVudCAic3RpdGNoZWQiCisjICpkZWNyeXB0KiBzdWJyb3V0aW5lLiBCZWNhdXNlICpib3RoKiBBRVNOSS1DQkMgZGVjcnlwdCBhbmQgU0hBMQorIyBmdWxseSB1dGlsaXplIHBhcmFsbGVsaXNtLCBzbyBzdGl0Y2hpbmcgd291bGQgbm90IGdpdmUgYW55IGdhaW4KKyMgYW55d2F5LiBXZWxsLCB0aGVyZSBtaWdodCBiZSBzb21lLCBlLmcuIGJlY2F1c2Ugb2YgYmV0dGVyIGNhY2hlCisjIGxvY2FsaXR5Li4uIEZvciByZWZlcmVuY2UsIGhlcmUgYXJlIHBlcmZvcm1hbmNlIHJlc3VsdHMgZm9yCisjIHN0YW5kYWxvbmUgQUVTTkktQ0JDIGRlY3J5cHQ6CisjCisjCQlBRVMtMTI4LUNCQwlBRVMtMTkyLUNCQwlBRVMtMjU2LUNCQworIyBXZXN0bWVyZQkxLjMxCQkxLjU1CQkxLjgwCisjIFNhbmR5IEJyaWRnZQkwLjkzCQkxLjA2CQkxLjIyCisKKyRmbGF2b3VyID0gc2hpZnQ7Ciskb3V0cHV0ICA9IHNoaWZ0OworaWYgKCRmbGF2b3VyID1+IC9cLi8pIHsgJG91dHB1dCA9ICRmbGF2b3VyOyB1bmRlZiAkZmxhdm91cjsgfQorCiskd2luNjQ9MDsgJHdpbjY0PTEgaWYgKCRmbGF2b3VyID1+IC9bbm1dYXNtfG1pbmd3NjQvIHx8ICRvdXRwdXQgPX4gL1wuYXNtJC8pOworCiskMCA9fiBtLyguKltcL1xcXSlbXlwvXFxdKyQvOyAkZGlyPSQxOworKCAkeGxhdGU9IiR7ZGlyfXg4Nl82NC14bGF0ZS5wbCIgYW5kIC1mICR4bGF0ZSApIG9yCisoICR4bGF0ZT0iJHtkaXJ9Li4vLi4vcGVybGFzbS94ODZfNjQteGxhdGUucGwiIGFuZCAtZiAkeGxhdGUpIG9yCitkaWUgImNhbid0IGxvY2F0ZSB4ODZfNjQteGxhdGUucGwiOworCiskYXZ4PTEgaWYgKGAkRU5We0NDfSAtV2EsLXYgLWMgLW8gL2Rldi9udWxsIC14IGFzc2VtYmxlciAvZGV2L251bGwgMj4mMWAKKwkJPX4gL0dOVSBhc3NlbWJsZXIgdmVyc2lvbiAoWzItOV1cLlswLTldKykvICYmCisJICAgJDE+PTIuMTkpOworJGF2eD0xIGlmICghJGF2eCAmJiAkd2luNjQgJiYgKCRmbGF2b3VyID1+IC9uYXNtLyB8fCAkRU5We0FTTX0gPX4gL25hc20vKSAmJgorCSAgIGBuYXNtIC12IDI+JjFgID1+IC9OQVNNIHZlcnNpb24gKFsyLTldXC5bMC05XSspLyAmJgorCSAgICQxPj0yLjA5KTsKKyRhdng9MSBpZiAoISRhdnggJiYgJHdpbjY0ICYmICgkZmxhdm91ciA9fiAvbWFzbS8gfHwgJEVOVntBU019ID1+IC9tbDY0LykgJiYKKwkgICBgbWw2NCAyPiYxYCA9fiAvVmVyc2lvbiAoWzAtOV0rKVwuLyAmJgorCSAgICQxPj0xMCk7CisKK29wZW4gU1RET1VULCJ8ICReWCAkeGxhdGUgJGZsYXZvdXIgJG91dHB1dCI7CisKKyMgdm9pZCBhZXNuaV9jYmNfc2hhMV9lbmMoY29uc3Qgdm9pZCAqaW5wLAorIwkJCXZvaWQgKm91dCwKKyMJCQlzaXplX3QgbGVuZ3RoLAorIwkJCWNvbnN0IEFFU19LRVkgKmtleSwKKyMJCQl1bnNpZ25lZCBjaGFyICppdiwKKyMJCQlTSEFfQ1RYICpjdHgsCisjCQkJY29uc3Qgdm9pZCAqaW4wKTsKKworJGNvZGUuPTw8X19fOworLnRleHQKKy5leHRlcm4JT1BFTlNTTF9pYTMyY2FwX1AKKworLmdsb2JsCWFlc25pX2NiY19zaGExX2VuYworLnR5cGUJYWVzbmlfY2JjX3NoYTFfZW5jLFxAYWJpLW9tbmlwb3RlbnQKKy5hbGlnbgkxNgorYWVzbmlfY2JjX3NoYTFfZW5jOgorCSMgY2FsbGVyIHNob3VsZCBjaGVjayBmb3IgU1NTRTMgYW5kIEFFUy1OSSBiaXRzCisJbW92CU9QRU5TU0xfaWEzMmNhcF9QKzAoJXJpcCksJXIxMGQKKwltb3YJT1BFTlNTTF9pYTMyY2FwX1ArNCglcmlwKSwlcjExZAorX19fCiskY29kZS49PDxfX18gaWYgKCRhdngpOworCWFuZAlcJGAxPDwyOGAsJXIxMWQJCSMgbWFzayBBVlggYml0CisJYW5kCVwkYDE8PDMwYCwlcjEwZAkJIyBtYXNrICJJbnRlbCBDUFUiIGJpdAorCW9yCSVyMTFkLCVyMTBkCisJY21wCVwkYDE8PDI4fDE8PDMwYCwlcjEwZAorCWplCWFlc25pX2NiY19zaGExX2VuY19hdngKK19fXworJGNvZGUuPTw8X19fOworCWptcAlhZXNuaV9jYmNfc2hhMV9lbmNfc3NzZTMKKwlyZXQKKy5zaXplCWFlc25pX2NiY19zaGExX2VuYywuLWFlc25pX2NiY19zaGExX2VuYworX19fCisKK215ICgkaW4wLCRvdXQsJGxlbiwka2V5LCRpdnAsJGN0eCwkaW5wKT0oIiVyZGkiLCIlcnNpIiwiJXJkeCIsIiVyY3giLCIlcjgiLCIlcjkiLCIlcjEwIik7CisKK215ICRYaT00OworbXkgQFg9bWFwKCIleG1tJF8iLCg0Li43LDAuLjMpKTsKK215IEBUeD1tYXAoIiV4bW0kXyIsKDguLjEwKSk7CitteSBAVj0oJEEsJEIsJEMsJEQsJEUpPSgiJWVheCIsIiVlYngiLCIlZWN4IiwiJWVkeCIsIiVlYnAiKTsJIyBzaXplIG9wdGltaXphdGlvbgorbXkgQFQ9KCIlZXNpIiwiJWVkaSIpOworbXkgJGo9MDsgbXkgJGpqPTA7IG15ICRyPTA7IG15ICRzbj0wOworbXkgJEtfWFhfWFg9IiVyMTEiOworbXkgKCRpdiwkaW4sJHJuZGtleTApPW1hcCgiJXhtbSRfIiwoMTEuLjEzKSk7CitteSBAcm5ka2V5PSgiJXhtbTE0IiwiJXhtbTE1Iik7CisKK3N1YiBBVVRPTE9BRCgpCQkjIHRodW5rIFtzaW1wbGlmaWVkXSAzMi1iaXQgc3R5bGUgcGVybGFzbQoreyBteSAkb3Bjb2RlID0gJEFVVE9MT0FEOyAkb3Bjb2RlID1+IHMvLio6Oi8vOworICBteSAkYXJnID0gcG9wOworICAgICRhcmcgPSAiXCQkYXJnIiBpZiAoJGFyZyoxIGVxICRhcmcpOworICAgICRjb2RlIC49ICJcdCRvcGNvZGVcdCIuam9pbignLCcsJGFyZyxyZXZlcnNlIEBfKS4iXG4iOworfQorCitteSAkX3JvbD1zdWIgeyAmcm9sKEBfKSB9OworbXkgJF9yb3I9c3ViIHsgJnJvcihAXykgfTsKKworJGNvZGUuPTw8X19fOworLnR5cGUJYWVzbmlfY2JjX3NoYTFfZW5jX3Nzc2UzLFxAZnVuY3Rpb24sNgorLmFsaWduCTE2CithZXNuaV9jYmNfc2hhMV9lbmNfc3NzZTM6CisJbW92CWAoJHdpbjY0PzU2OjgpYCglcnNwKSwkaW5wCSMgbG9hZCA3dGggYXJndW1lbnQKKwkjc2hyCVwkNiwkbGVuCQkJIyBkZWJ1Z2dpbmcgYXJ0ZWZhY3QKKwkjanoJLkxlcGlsb2d1ZV9zc3NlMwkJIyBkZWJ1Z2dpbmcgYXJ0ZWZhY3QKKwlwdXNoCSVyYngKKwlwdXNoCSVyYnAKKwlwdXNoCSVyMTIKKwlwdXNoCSVyMTMKKwlwdXNoCSVyMTQKKwlwdXNoCSVyMTUKKwlsZWEJYC0xMDQtKCR3aW42ND8xMCoxNjowKWAoJXJzcCksJXJzcAorCSNtb3YJJGluMCwkaW5wCQkJIyBkZWJ1Z2dpbmcgYXJ0ZWZhY3QKKwkjbGVhCTY0KCVyc3ApLCRjdHgJCQkjIGRlYnVnZ2luZyBhcnRlZmFjdAorX19fCiskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisJbW92YXBzCSV4bW02LDk2KzAoJXJzcCkKKwltb3ZhcHMJJXhtbTcsOTYrMTYoJXJzcCkKKwltb3ZhcHMJJXhtbTgsOTYrMzIoJXJzcCkKKwltb3ZhcHMJJXhtbTksOTYrNDgoJXJzcCkKKwltb3ZhcHMJJXhtbTEwLDk2KzY0KCVyc3ApCisJbW92YXBzCSV4bW0xMSw5Nis4MCglcnNwKQorCW1vdmFwcwkleG1tMTIsOTYrOTYoJXJzcCkKKwltb3ZhcHMJJXhtbTEzLDk2KzExMiglcnNwKQorCW1vdmFwcwkleG1tMTQsOTYrMTI4KCVyc3ApCisJbW92YXBzCSV4bW0xNSw5NisxNDQoJXJzcCkKKy5McHJvbG9ndWVfc3NzZTM6CitfX18KKyRjb2RlLj08PF9fXzsKKwltb3YJJGluMCwlcjEyCQkJIyByZWFzc2lnbiBhcmd1bWVudHMKKwltb3YJJG91dCwlcjEzCisJbW92CSRsZW4sJXIxNAorCW1vdgkka2V5LCVyMTUKKwltb3ZkcXUJKCRpdnApLCRpdgkJCSMgbG9hZCBJVgorCW1vdgkkaXZwLDg4KCVyc3ApCQkJIyBzYXZlICRpdnAKK19fXworbXkgKCRpbjAsJG91dCwkbGVuLCRrZXkpPW1hcCgiJXIkXyIsKDEyLi4xNSkpOwkjIHJlYXNzaWduIGFyZ3VtZW50cworbXkgJHJvdW5kcz0iJHtpdnB9ZCI7CiskY29kZS49PDxfX187CisJc2hsCVwkNiwkbGVuCisJc3ViCSRpbjAsJG91dAorCW1vdgkyNDAoJGtleSksJHJvdW5kcworCWFkZAkkaW5wLCRsZW4JCSMgZW5kIG9mIGlucHV0CisKKwlsZWEJS19YWF9YWCglcmlwKSwkS19YWF9YWAorCW1vdgkwKCRjdHgpLCRBCQkjIGxvYWQgY29udGV4dAorCW1vdgk0KCRjdHgpLCRCCisJbW92CTgoJGN0eCksJEMKKwltb3YJMTIoJGN0eCksJEQKKwltb3YJJEIsQFRbMF0JCSMgbWFnaWMgc2VlZAorCW1vdgkxNigkY3R4KSwkRQorCisJbW92ZHFhCTY0KCRLX1hYX1hYKSxAWFsyXQkjIHBic3dhcCBtYXNrCisJbW92ZHFhCTAoJEtfWFhfWFgpLEBUeFsxXQkjIEtfMDBfMTkKKwltb3ZkcXUJMCgkaW5wKSxAWFstNCY3XQkjIGxvYWQgaW5wdXQgdG8gJXhtbVswLTNdCisJbW92ZHF1CTE2KCRpbnApLEBYWy0zJjddCisJbW92ZHF1CTMyKCRpbnApLEBYWy0yJjddCisJbW92ZHF1CTQ4KCRpbnApLEBYWy0xJjddCisJcHNodWZiCUBYWzJdLEBYWy00JjddCQkjIGJ5dGUgc3dhcAorCWFkZAlcJDY0LCRpbnAKKwlwc2h1ZmIJQFhbMl0sQFhbLTMmN10KKwlwc2h1ZmIJQFhbMl0sQFhbLTImN10KKwlwc2h1ZmIJQFhbMl0sQFhbLTEmN10KKwlwYWRkZAlAVHhbMV0sQFhbLTQmN10JCSMgYWRkIEtfMDBfMTkKKwlwYWRkZAlAVHhbMV0sQFhbLTMmN10KKwlwYWRkZAlAVHhbMV0sQFhbLTImN10KKwltb3ZkcWEJQFhbLTQmN10sMCglcnNwKQkjIFhbXStLIHhmZXIgdG8gSUFMVQorCXBzdWJkCUBUeFsxXSxAWFstNCY3XQkJIyByZXN0b3JlIFhbXQorCW1vdmRxYQlAWFstMyY3XSwxNiglcnNwKQorCXBzdWJkCUBUeFsxXSxAWFstMyY3XQorCW1vdmRxYQlAWFstMiY3XSwzMiglcnNwKQorCXBzdWJkCUBUeFsxXSxAWFstMiY3XQorCW1vdnVwcwkoJGtleSksJHJuZGtleTAJCSMgJGtleVswXQorCW1vdnVwcwkxNigka2V5KSwkcm5ka2V5WzBdCSMgZm9yd2FyZCByZWZlcmVuY2UKKwlqbXAJLkxvb3Bfc3NzZTMKK19fXworCitteSAkYWVzZW5jPXN1YiB7CisgIHVzZSBpbnRlZ2VyOworICBteSAoJG4sJGspPSgkci8xMCwkciUxMCk7CisgICAgaWYgKCRrPT0wKSB7CisgICAgICAkY29kZS49PDxfX187CisJbW92dXBzCQlgMTYqJG5gKCRpbjApLCRpbgkJIyBsb2FkIGlucHV0CisJeG9ycHMJCSRybmRrZXkwLCRpbgorX19fCisgICAgICAkY29kZS49PDxfX18gaWYgKCRuKTsKKwltb3Z1cHMJCSRpdixgMTYqKCRuLTEpYCgkb3V0LCRpbjApCSMgd3JpdGUgb3V0cHV0CitfX18KKyAgICAgICRjb2RlLj08PF9fXzsKKwl4b3JwcwkJJGluLCRpdgorCWFlc2VuYwkJJHJuZGtleVswXSwkaXYKKwltb3Z1cHMJCWAzMisxNioka2AoJGtleSksJHJuZGtleVsxXQorX19fCisgICAgfSBlbHNpZiAoJGs9PTkpIHsKKyAgICAgICRzbisrOworICAgICAgJGNvZGUuPTw8X19fOworCWNtcAkJXCQxMSwkcm91bmRzCisJamIJCS5MYWVzZW5jbGFzdCRzbgorCW1vdnVwcwkJYDMyKzE2KigkayswKWAoJGtleSksJHJuZGtleVsxXQorCWFlc2VuYwkJJHJuZGtleVswXSwkaXYKKwltb3Z1cHMJCWAzMisxNiooJGsrMSlgKCRrZXkpLCRybmRrZXlbMF0KKwlhZXNlbmMJCSRybmRrZXlbMV0sJGl2CisJamUJCS5MYWVzZW5jbGFzdCRzbgorCW1vdnVwcwkJYDMyKzE2KigkaysyKWAoJGtleSksJHJuZGtleVsxXQorCWFlc2VuYwkJJHJuZGtleVswXSwkaXYKKwltb3Z1cHMJCWAzMisxNiooJGsrMylgKCRrZXkpLCRybmRrZXlbMF0KKwlhZXNlbmMJCSRybmRrZXlbMV0sJGl2CisuTGFlc2VuY2xhc3Qkc246CisJYWVzZW5jbGFzdAkkcm5ka2V5WzBdLCRpdgorCW1vdnVwcwkJMTYoJGtleSksJHJuZGtleVsxXQkJIyBmb3J3YXJkIHJlZmVyZW5jZQorX19fCisgICAgfSBlbHNlIHsKKyAgICAgICRjb2RlLj08PF9fXzsKKwlhZXNlbmMJCSRybmRrZXlbMF0sJGl2CisJbW92dXBzCQlgMzIrMTYqJGtgKCRrZXkpLCRybmRrZXlbMV0KK19fXworICAgIH0KKyAgICAkcisrOwl1bnNoaWZ0KEBybmRrZXkscG9wKEBybmRrZXkpKTsKK307CisKK3N1YiBYdXBkYXRlX3Nzc2UzXzE2XzMxKCkJCSMgcmVjYWxsIHRoYXQgJFhpIHN0YXJ0cyB3dGloIDQKK3sgdXNlIGludGVnZXI7CisgIG15ICRib2R5ID0gc2hpZnQ7CisgIG15IEBpbnNucyA9ICgmJGJvZHksJiRib2R5LCYkYm9keSwmJGJvZHkpOwkjIDQwIGluc3RydWN0aW9ucworICBteSAoJGEsJGIsJGMsJGQsJGUpOworCisJJm1vdmRxYQkoQFhbMF0sQFhbLTMmN10pOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZtb3ZkcWEJKEBUeFswXSxAWFstMSY3XSk7CisJJnBhbGlnbnIoQFhbMF0sQFhbLTQmN10sOCk7CSMgY29tcG9zZSAiWFstMTRdIiBpbiAiWFswXSIKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKworCSAgJnBhZGRkCShAVHhbMV0sQFhbLTEmN10pOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZwc3JsZHEJKEBUeFswXSw0KTsJCSMgIlhbLTNdIiwgMyBkd29yZHMKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmcHhvcgkoQFhbMF0sQFhbLTQmN10pOwkjICJYWzBdIl49IlhbLTE2XSIKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKworCSZweG9yCShAVHhbMF0sQFhbLTImN10pOwkjICJYWy0zXSJeIlhbLThdIgorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCisJJnB4b3IJKEBYWzBdLEBUeFswXSk7CQkjICJYWzBdIl49IlhbLTNdIl4iWFstOF0iCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJICAmbW92ZHFhCShldmFsKDE2KigoJFhpLTEpJjMpKS4iKCVyc3ApIixAVHhbMV0pOwkjIFhbXStLIHhmZXIgdG8gSUFMVQorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCisJJm1vdmRxYQkoQFR4WzJdLEBYWzBdKTsKKwkmbW92ZHFhCShAVHhbMF0sQFhbMF0pOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCisJJnBzbGxkcQkoQFR4WzJdLDEyKTsJCSMgIlhbMF0iPDw5NiwgZXh0cmFjdCBvbmUgZHdvcmQKKwkmcGFkZGQJKEBYWzBdLEBYWzBdKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKworCSZwc3JsZAkoQFR4WzBdLDMxKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmbW92ZHFhCShAVHhbMV0sQFR4WzJdKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKworCSZwc3JsZAkoQFR4WzJdLDMwKTsKKwkmcG9yCShAWFswXSxAVHhbMF0pOwkJIyAiWFswXSI8PDw9MQorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCisJJnBzbGxkCShAVHhbMV0sMik7CisJJnB4b3IJKEBYWzBdLEBUeFsyXSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJICAmbW92ZHFhCShAVHhbMl0sZXZhbCgxNiooKCRYaSkvNSkpLiIoJEtfWFhfWFgpIik7CSMgS19YWF9YWAorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCisJJnB4b3IJKEBYWzBdLEBUeFsxXSk7CQkjICJYWzBdIl49KCJYWzBdIj4+OTYpPDw8MgorCisJIGZvcmVhY2ggKEBpbnNucykgeyBldmFsOyB9CSMgcmVtYWluaW5nIGluc3RydWN0aW9ucyBbaWYgYW55XQorCisgICRYaSsrOwlwdXNoKEBYLHNoaWZ0KEBYKSk7CSMgInJvdGF0ZSIgWFtdCisJCXB1c2goQFR4LHNoaWZ0KEBUeCkpOworfQorCitzdWIgWHVwZGF0ZV9zc3NlM18zMl83OSgpCit7IHVzZSBpbnRlZ2VyOworICBteSAkYm9keSA9IHNoaWZ0OworICBteSBAaW5zbnMgPSAoJiRib2R5LCYkYm9keSwmJGJvZHksJiRib2R5KTsJIyAzMiB0byA0OCBpbnN0cnVjdGlvbnMKKyAgbXkgKCRhLCRiLCRjLCRkLCRlKTsKKworCSZtb3ZkcWEJKEBUeFswXSxAWFstMSY3XSkJaWYgKCRYaT09OCk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CQkjIGJvZHlfMjBfMzkKKwkmcHhvcgkoQFhbMF0sQFhbLTQmN10pOwkjICJYWzBdIj0iWFstMzJdIl4iWFstMTZdIgorCSZwYWxpZ25yKEBUeFswXSxAWFstMiY3XSw4KTsJIyBjb21wb3NlICJYWy02XSIKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsJCSMgcm9sCisKKwkmcHhvcgkoQFhbMF0sQFhbLTcmN10pOwkjICJYWzBdIl49IlhbLTI4XSIKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKQlpZiAoQGluc25zWzBdICF+IC8mcm9bcmxdLyk7CisJaWYgKCRYaSU1KSB7CisJICAmbW92ZHFhCShAVHhbMl0sQFR4WzFdKTsjICJwZXJwZXR1YXRlIiBLX1hYX1hYLi4uCisJfSBlbHNlIHsJCQkjIC4uLiBvciBsb2FkIG5leHQgb25lCisJICAmbW92ZHFhCShAVHhbMl0sZXZhbCgxNiooJFhpLzUpKS4iKCRLX1hYX1hYKSIpOworCX0KKwkgICZwYWRkZAkoQFR4WzFdLEBYWy0xJjddKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsJCSMgcm9yCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisKKwkmcHhvcgkoQFhbMF0sQFR4WzBdKTsJCSMgIlhbMF0iXj0iWFstNl0iCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CQkjIGJvZHlfMjBfMzkKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsJCSMgcm9sCisKKwkmbW92ZHFhCShAVHhbMF0sQFhbMF0pOworCSAgJm1vdmRxYQkoZXZhbCgxNiooKCRYaS0xKSYzKSkuIiglcnNwKSIsQFR4WzFdKTsJIyBYW10rSyB4ZmVyIHRvIElBTFUKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsJCSMgcm9yCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisKKwkmcHNsbGQJKEBYWzBdLDIpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOwkJIyBib2R5XzIwXzM5CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnBzcmxkCShAVHhbMF0sMzApOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOwkJIyByb2wKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsJCSMgcm9yCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisKKwkmcG9yCShAWFswXSxAVHhbMF0pOwkJIyAiWFswXSI8PDw9MgorCSBldmFsKHNoaWZ0KEBpbnNucykpOwkJIyBib2R5XzIwXzM5CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJICAmbW92ZHFhCShAVHhbMV0sQFhbMF0pCWlmICgkWGk8MTkpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOwkJIyByb2wKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsJCSMgcm9sCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisKKwkgZm9yZWFjaCAoQGluc25zKSB7IGV2YWw7IH0JIyByZW1haW5pbmcgaW5zdHJ1Y3Rpb25zCisKKyAgJFhpKys7CXB1c2goQFgsc2hpZnQoQFgpKTsJIyAicm90YXRlIiBYW10KKwkJcHVzaChAVHgsc2hpZnQoQFR4KSk7Cit9CisKK3N1YiBYdXBsYXN0X3Nzc2UzXzgwKCkKK3sgdXNlIGludGVnZXI7CisgIG15ICRib2R5ID0gc2hpZnQ7CisgIG15IEBpbnNucyA9ICgmJGJvZHksJiRib2R5LCYkYm9keSwmJGJvZHkpOwkjIDMyIGluc3RydWN0aW9ucworICBteSAoJGEsJGIsJGMsJGQsJGUpOworCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJICAmcGFkZGQJKEBUeFsxXSxAWFstMSY3XSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisKKwkgICZtb3ZkcWEJKGV2YWwoMTYqKCgkWGktMSkmMykpLiIoJXJzcCkiLEBUeFsxXSk7CSMgWFtdK0sgeGZlciBJQUxVCisKKwkgZm9yZWFjaCAoQGluc25zKSB7IGV2YWw7IH0JCSMgcmVtYWluaW5nIGluc3RydWN0aW9ucworCisJJmNtcAkoJGlucCwkbGVuKTsKKwkmamUJKCIuTGRvbmVfc3NzZTMiKTsKKworCXVuc2hpZnQoQFR4LHBvcChAVHgpKTsKKworCSZtb3ZkcWEJKEBYWzJdLCI2NCgkS19YWF9YWCkiKTsJCSMgcGJzd2FwIG1hc2sKKwkmbW92ZHFhCShAVHhbMV0sIjAoJEtfWFhfWFgpIik7CQkjIEtfMDBfMTkKKwkmbW92ZHF1CShAWFstNCY3XSwiMCgkaW5wKSIpOwkJIyBsb2FkIGlucHV0CisJJm1vdmRxdQkoQFhbLTMmN10sIjE2KCRpbnApIik7CisJJm1vdmRxdQkoQFhbLTImN10sIjMyKCRpbnApIik7CisJJm1vdmRxdQkoQFhbLTEmN10sIjQ4KCRpbnApIik7CisJJnBzaHVmYgkoQFhbLTQmN10sQFhbMl0pOwkJIyBieXRlIHN3YXAKKwkmYWRkCSgkaW5wLDY0KTsKKworICAkWGk9MDsKK30KKworc3ViIFhsb29wX3Nzc2UzKCkKK3sgdXNlIGludGVnZXI7CisgIG15ICRib2R5ID0gc2hpZnQ7CisgIG15IEBpbnNucyA9ICgmJGJvZHksJiRib2R5LCYkYm9keSwmJGJvZHkpOwkjIDMyIGluc3RydWN0aW9ucworICBteSAoJGEsJGIsJGMsJGQsJGUpOworCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnBzaHVmYgkoQFhbKCRYaS0zKSY3XSxAWFsyXSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnBhZGRkCShAWFsoJFhpLTQpJjddLEBUeFsxXSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJm1vdmRxYQkoZXZhbCgxNiokWGkpLiIoJXJzcCkiLEBYWygkWGktNCkmN10pOwkjIFhbXStLIHhmZXIgdG8gSUFMVQorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZwc3ViZAkoQFhbKCRYaS00KSY3XSxAVHhbMV0pOworCisJZm9yZWFjaCAoQGluc25zKSB7IGV2YWw7IH0KKyAgJFhpKys7Cit9CisKK3N1YiBYdGFpbF9zc3NlMygpCit7IHVzZSBpbnRlZ2VyOworICBteSAkYm9keSA9IHNoaWZ0OworICBteSBAaW5zbnMgPSAoJiRib2R5LCYkYm9keSwmJGJvZHksJiRib2R5KTsJIyAzMiBpbnN0cnVjdGlvbnMKKyAgbXkgKCRhLCRiLCRjLCRkLCRlKTsKKworCWZvcmVhY2ggKEBpbnNucykgeyBldmFsOyB9Cit9CisKK3N1YiBib2R5XzAwXzE5ICgpIHsKKyAgdXNlIGludGVnZXI7CisgIG15ICgkaywkbik7CisgIG15IEByPSgKKwknKCRhLCRiLCRjLCRkLCRlKT1AVjsnLgorCScmYWRkCSgkZSxldmFsKDQqKCRqJjE1KSkuIiglcnNwKSIpOycsCSMgWFtdK0sgeGZlcgorCScmeG9yCSgkYywkZCk7JywKKwknJm1vdgkoQFRbMV0sJGEpOycsCSMgJGIgaW4gbmV4dCByb3VuZAorCScmJF9yb2wJKCRhLDUpOycsCisJJyZhbmQJKEBUWzBdLCRjKTsnLAkjICgkYiYoJGNeJGQpKQorCScmeG9yCSgkYywkZCk7JywJIyByZXN0b3JlICRjCisJJyZ4b3IJKEBUWzBdLCRkKTsnLAorCScmYWRkCSgkZSwkYSk7JywKKwknJiRfcm9yCSgkYiwkaj83OjIpOycsCSMgJGI+Pj4yCisJJyZhZGQJKCRlLEBUWzBdKTsnCS4nJGorKzsgdW5zaGlmdChAVixwb3AoQFYpKTsgdW5zaGlmdChAVCxwb3AoQFQpKTsnCisJKTsKKwkkbiA9IHNjYWxhcihAcik7CisJJGsgPSAoKCRqaisxKSoxMi8yMCkqMjAqJG4vMTI7CSMgMTIgYWVzZW5jcyBwZXIgdGhlc2UgMjAgcm91bmRzCisJQHJbJGslJG5dLj0nJiRhZXNlbmMoKTsnCWlmICgkamo9PSRrLyRuKTsKKwkkamorKzsKKyAgICByZXR1cm4gQHI7Cit9CisKK3N1YiBib2R5XzIwXzM5ICgpIHsKKyAgdXNlIGludGVnZXI7CisgIG15ICgkaywkbik7CisgIG15IEByPSgKKwknKCRhLCRiLCRjLCRkLCRlKT1AVjsnLgorCScmYWRkCSgkZSxldmFsKDQqKCRqKysmMTUpKS4iKCVyc3ApIik7JywJIyBYW10rSyB4ZmVyCisJJyZ4b3IJKEBUWzBdLCRkKTsnLAkjICgkYl4kZCkKKwknJm1vdgkoQFRbMV0sJGEpOycsCSMgJGIgaW4gbmV4dCByb3VuZAorCScmJF9yb2wJKCRhLDUpOycsCisJJyZ4b3IJKEBUWzBdLCRjKTsnLAkjICgkYl4kZF4kYykKKwknJmFkZAkoJGUsJGEpOycsCisJJyYkX3JvcgkoJGIsNyk7JywJIyAkYj4+PjIKKwknJmFkZAkoJGUsQFRbMF0pOycJLid1bnNoaWZ0KEBWLHBvcChAVikpOyB1bnNoaWZ0KEBULHBvcChAVCkpOycKKwkpOworCSRuID0gc2NhbGFyKEByKTsKKwkkayA9ICgoJGpqKzEpKjgvMjApKjIwKiRuLzg7CSMgOCBhZXNlbmNzIHBlciB0aGVzZSAyMCByb3VuZHMKKwlAclskayUkbl0uPScmJGFlc2VuYygpOycJaWYgKCRqaj09JGsvJG4pOworCSRqaisrOworICAgIHJldHVybiBAcjsKK30KKworc3ViIGJvZHlfNDBfNTkgKCkgeworICB1c2UgaW50ZWdlcjsKKyAgbXkgKCRrLCRuKTsKKyAgbXkgQHI9KAorCScoJGEsJGIsJGMsJGQsJGUpPUBWOycuCisJJyZtb3YJKEBUWzFdLCRjKTsnLAorCScmeG9yCSgkYywkZCk7JywKKwknJmFkZAkoJGUsZXZhbCg0KigkaisrJjE1KSkuIiglcnNwKSIpOycsCSMgWFtdK0sgeGZlcgorCScmYW5kCShAVFsxXSwkZCk7JywKKwknJmFuZAkoQFRbMF0sJGMpOycsCSMgKCRiJigkY14kZCkpCisJJyYkX3JvcgkoJGIsNyk7JywJIyAkYj4+PjIKKwknJmFkZAkoJGUsQFRbMV0pOycsCisJJyZtb3YJKEBUWzFdLCRhKTsnLAkjICRiIGluIG5leHQgcm91bmQKKwknJiRfcm9sCSgkYSw1KTsnLAorCScmYWRkCSgkZSxAVFswXSk7JywKKwknJnhvcgkoJGMsJGQpOycsCSMgcmVzdG9yZSAkYworCScmYWRkCSgkZSwkYSk7JwkuJ3Vuc2hpZnQoQFYscG9wKEBWKSk7IHVuc2hpZnQoQFQscG9wKEBUKSk7JworCSk7CisJJG4gPSBzY2FsYXIoQHIpOworCSRrPSgoJGpqKzEpKjEyLzIwKSoyMCokbi8xMjsJIyAxMiBhZXNlbmNzIHBlciB0aGVzZSAyMCByb3VuZHMKKwlAclskayUkbl0uPScmJGFlc2VuYygpOycJaWYgKCRqaj09JGsvJG4pOworCSRqaisrOworICAgIHJldHVybiBAcjsKK30KKyRjb2RlLj08PF9fXzsKKy5hbGlnbgkxNgorLkxvb3Bfc3NzZTM6CitfX18KKwkmWHVwZGF0ZV9zc3NlM18xNl8zMShcJmJvZHlfMDBfMTkpOworCSZYdXBkYXRlX3Nzc2UzXzE2XzMxKFwmYm9keV8wMF8xOSk7CisJJlh1cGRhdGVfc3NzZTNfMTZfMzEoXCZib2R5XzAwXzE5KTsKKwkmWHVwZGF0ZV9zc3NlM18xNl8zMShcJmJvZHlfMDBfMTkpOworCSZYdXBkYXRlX3Nzc2UzXzMyXzc5KFwmYm9keV8wMF8xOSk7CisJJlh1cGRhdGVfc3NzZTNfMzJfNzkoXCZib2R5XzIwXzM5KTsKKwkmWHVwZGF0ZV9zc3NlM18zMl83OShcJmJvZHlfMjBfMzkpOworCSZYdXBkYXRlX3Nzc2UzXzMyXzc5KFwmYm9keV8yMF8zOSk7CisJJlh1cGRhdGVfc3NzZTNfMzJfNzkoXCZib2R5XzIwXzM5KTsKKwkmWHVwZGF0ZV9zc3NlM18zMl83OShcJmJvZHlfMjBfMzkpOworCSZYdXBkYXRlX3Nzc2UzXzMyXzc5KFwmYm9keV80MF81OSk7CisJJlh1cGRhdGVfc3NzZTNfMzJfNzkoXCZib2R5XzQwXzU5KTsKKwkmWHVwZGF0ZV9zc3NlM18zMl83OShcJmJvZHlfNDBfNTkpOworCSZYdXBkYXRlX3Nzc2UzXzMyXzc5KFwmYm9keV80MF81OSk7CisJJlh1cGRhdGVfc3NzZTNfMzJfNzkoXCZib2R5XzQwXzU5KTsKKwkmWHVwZGF0ZV9zc3NlM18zMl83OShcJmJvZHlfMjBfMzkpOworCSZYdXBsYXN0X3Nzc2UzXzgwKFwmYm9keV8yMF8zOSk7CSMgY2FuIGp1bXAgdG8gImRvbmUiCisKKwkJCQkkc2F2ZWRfaj0kajsgQHNhdmVkX1Y9QFY7CisJCQkJJHNhdmVkX3I9JHI7IEBzYXZlZF9ybmRrZXk9QHJuZGtleTsKKworCSZYbG9vcF9zc3NlMyhcJmJvZHlfMjBfMzkpOworCSZYbG9vcF9zc3NlMyhcJmJvZHlfMjBfMzkpOworCSZYbG9vcF9zc3NlMyhcJmJvZHlfMjBfMzkpOworCiskY29kZS49PDxfX187CisJbW92dXBzCSRpdiw0OCgkb3V0LCRpbjApCQkjIHdyaXRlIG91dHB1dAorCWxlYQk2NCgkaW4wKSwkaW4wCisKKwlhZGQJMCgkY3R4KSwkQQkJCSMgdXBkYXRlIGNvbnRleHQKKwlhZGQJNCgkY3R4KSxAVFswXQorCWFkZAk4KCRjdHgpLCRDCisJYWRkCTEyKCRjdHgpLCRECisJbW92CSRBLDAoJGN0eCkKKwlhZGQJMTYoJGN0eCksJEUKKwltb3YJQFRbMF0sNCgkY3R4KQorCW1vdglAVFswXSwkQgkJCSMgbWFnaWMgc2VlZAorCW1vdgkkQyw4KCRjdHgpCisJbW92CSRELDEyKCRjdHgpCisJbW92CSRFLDE2KCRjdHgpCisJam1wCS5Mb29wX3Nzc2UzCisKKy5hbGlnbgkxNgorLkxkb25lX3Nzc2UzOgorX19fCisJCQkJJGpqPSRqPSRzYXZlZF9qOyBAVj1Ac2F2ZWRfVjsKKwkJCQkkcj0kc2F2ZWRfcjsgICAgIEBybmRrZXk9QHNhdmVkX3JuZGtleTsKKworCSZYdGFpbF9zc3NlMyhcJmJvZHlfMjBfMzkpOworCSZYdGFpbF9zc3NlMyhcJmJvZHlfMjBfMzkpOworCSZYdGFpbF9zc3NlMyhcJmJvZHlfMjBfMzkpOworCiskY29kZS49PDxfX187CisJbW92dXBzCSRpdiw0OCgkb3V0LCRpbjApCQkjIHdyaXRlIG91dHB1dAorCW1vdgk4OCglcnNwKSwkaXZwCQkJIyByZXN0b3JlICRpdnAKKworCWFkZAkwKCRjdHgpLCRBCQkJIyB1cGRhdGUgY29udGV4dAorCWFkZAk0KCRjdHgpLEBUWzBdCisJYWRkCTgoJGN0eCksJEMKKwltb3YJJEEsMCgkY3R4KQorCWFkZAkxMigkY3R4KSwkRAorCW1vdglAVFswXSw0KCRjdHgpCisJYWRkCTE2KCRjdHgpLCRFCisJbW92CSRDLDgoJGN0eCkKKwltb3YJJEQsMTIoJGN0eCkKKwltb3YJJEUsMTYoJGN0eCkKKwltb3Z1cHMJJGl2LCgkaXZwKQkJCSMgd3JpdGUgSVYKK19fXworJGNvZGUuPTw8X19fIGlmICgkd2luNjQpOworCW1vdmFwcwk5NiswKCVyc3ApLCV4bW02CisJbW92YXBzCTk2KzE2KCVyc3ApLCV4bW03CisJbW92YXBzCTk2KzMyKCVyc3ApLCV4bW04CisJbW92YXBzCTk2KzQ4KCVyc3ApLCV4bW05CisJbW92YXBzCTk2KzY0KCVyc3ApLCV4bW0xMAorCW1vdmFwcwk5Nis4MCglcnNwKSwleG1tMTEKKwltb3ZhcHMJOTYrOTYoJXJzcCksJXhtbTEyCisJbW92YXBzCTk2KzExMiglcnNwKSwleG1tMTMKKwltb3ZhcHMJOTYrMTI4KCVyc3ApLCV4bW0xNAorCW1vdmFwcwk5NisxNDQoJXJzcCksJXhtbTE1CitfX18KKyRjb2RlLj08PF9fXzsKKwlsZWEJYDEwNCsoJHdpbjY0PzEwKjE2OjApYCglcnNwKSwlcnNpCisJbW92CTAoJXJzaSksJXIxNQorCW1vdgk4KCVyc2kpLCVyMTQKKwltb3YJMTYoJXJzaSksJXIxMworCW1vdgkyNCglcnNpKSwlcjEyCisJbW92CTMyKCVyc2kpLCVyYnAKKwltb3YJNDAoJXJzaSksJXJieAorCWxlYQk0OCglcnNpKSwlcnNwCisuTGVwaWxvZ3VlX3Nzc2UzOgorCXJldAorLnNpemUJYWVzbmlfY2JjX3NoYTFfZW5jX3Nzc2UzLC4tYWVzbmlfY2JjX3NoYTFfZW5jX3Nzc2UzCitfX18KKworJGo9JGpqPSRyPSRzbj0wOworCitpZiAoJGF2eCkgeworbXkgKCRpbjAsJG91dCwkbGVuLCRrZXksJGl2cCwkY3R4LCRpbnApPSgiJXJkaSIsIiVyc2kiLCIlcmR4IiwiJXJjeCIsIiVyOCIsIiVyOSIsIiVyMTAiKTsKKworbXkgJFhpPTQ7CitteSBAWD1tYXAoIiV4bW0kXyIsKDQuLjcsMC4uMykpOworbXkgQFR4PW1hcCgiJXhtbSRfIiwoOC4uMTApKTsKK215IEBWPSgkQSwkQiwkQywkRCwkRSk9KCIlZWF4IiwiJWVieCIsIiVlY3giLCIlZWR4IiwiJWVicCIpOwkjIHNpemUgb3B0aW1pemF0aW9uCitteSBAVD0oIiVlc2kiLCIlZWRpIik7CisKK215ICRfcm9sPXN1YiB7ICZzaGxkKEBfWzBdLEBfKSB9OworbXkgJF9yb3I9c3ViIHsgJnNocmQoQF9bMF0sQF8pIH07CisKKyRjb2RlLj08PF9fXzsKKy50eXBlCWFlc25pX2NiY19zaGExX2VuY19hdngsXEBmdW5jdGlvbiw2CisuYWxpZ24JMTYKK2Flc25pX2NiY19zaGExX2VuY19hdng6CisJbW92CWAoJHdpbjY0PzU2OjgpYCglcnNwKSwkaW5wCSMgbG9hZCA3dGggYXJndW1lbnQKKwkjc2hyCVwkNiwkbGVuCQkJIyBkZWJ1Z2dpbmcgYXJ0ZWZhY3QKKwkjanoJLkxlcGlsb2d1ZV9hdngJCQkjIGRlYnVnZ2luZyBhcnRlZmFjdAorCXB1c2gJJXJieAorCXB1c2gJJXJicAorCXB1c2gJJXIxMgorCXB1c2gJJXIxMworCXB1c2gJJXIxNAorCXB1c2gJJXIxNQorCWxlYQlgLTEwNC0oJHdpbjY0PzEwKjE2OjApYCglcnNwKSwlcnNwCisJI21vdgkkaW4wLCRpbnAJCQkjIGRlYnVnZ2luZyBhcnRlZmFjdAorCSNsZWEJNjQoJXJzcCksJGN0eAkJCSMgZGVidWdnaW5nIGFydGVmYWN0CitfX18KKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKwltb3ZhcHMJJXhtbTYsOTYrMCglcnNwKQorCW1vdmFwcwkleG1tNyw5NisxNiglcnNwKQorCW1vdmFwcwkleG1tOCw5NiszMiglcnNwKQorCW1vdmFwcwkleG1tOSw5Nis0OCglcnNwKQorCW1vdmFwcwkleG1tMTAsOTYrNjQoJXJzcCkKKwltb3ZhcHMJJXhtbTExLDk2KzgwKCVyc3ApCisJbW92YXBzCSV4bW0xMiw5Nis5NiglcnNwKQorCW1vdmFwcwkleG1tMTMsOTYrMTEyKCVyc3ApCisJbW92YXBzCSV4bW0xNCw5NisxMjgoJXJzcCkKKwltb3ZhcHMJJXhtbTE1LDk2KzE0NCglcnNwKQorLkxwcm9sb2d1ZV9hdng6CitfX18KKyRjb2RlLj08PF9fXzsKKwl2emVyb2FsbAorCW1vdgkkaW4wLCVyMTIJCQkjIHJlYXNzaWduIGFyZ3VtZW50cworCW1vdgkkb3V0LCVyMTMKKwltb3YJJGxlbiwlcjE0CisJbW92CSRrZXksJXIxNQorCXZtb3ZkcXUJKCRpdnApLCRpdgkJCSMgbG9hZCBJVgorCW1vdgkkaXZwLDg4KCVyc3ApCQkJIyBzYXZlICRpdnAKK19fXworbXkgKCRpbjAsJG91dCwkbGVuLCRrZXkpPW1hcCgiJXIkXyIsKDEyLi4xNSkpOwkjIHJlYXNzaWduIGFyZ3VtZW50cworbXkgJHJvdW5kcz0iJHtpdnB9ZCI7CiskY29kZS49PDxfX187CisJc2hsCVwkNiwkbGVuCisJc3ViCSRpbjAsJG91dAorCW1vdgkyNDAoJGtleSksJHJvdW5kcworCWFkZAlcJDExMiwka2V5CQkjIHNpemUgb3B0aW1pemF0aW9uCisJYWRkCSRpbnAsJGxlbgkJIyBlbmQgb2YgaW5wdXQKKworCWxlYQlLX1hYX1hYKCVyaXApLCRLX1hYX1hYCisJbW92CTAoJGN0eCksJEEJCSMgbG9hZCBjb250ZXh0CisJbW92CTQoJGN0eCksJEIKKwltb3YJOCgkY3R4KSwkQworCW1vdgkxMigkY3R4KSwkRAorCW1vdgkkQixAVFswXQkJIyBtYWdpYyBzZWVkCisJbW92CTE2KCRjdHgpLCRFCisKKwl2bW92ZHFhCTY0KCRLX1hYX1hYKSxAWFsyXQkjIHBic3dhcCBtYXNrCisJdm1vdmRxYQkwKCRLX1hYX1hYKSxAVHhbMV0JIyBLXzAwXzE5CisJdm1vdmRxdQkwKCRpbnApLEBYWy00JjddCSMgbG9hZCBpbnB1dCB0byAleG1tWzAtM10KKwl2bW92ZHF1CTE2KCRpbnApLEBYWy0zJjddCisJdm1vdmRxdQkzMigkaW5wKSxAWFstMiY3XQorCXZtb3ZkcXUJNDgoJGlucCksQFhbLTEmN10KKwl2cHNodWZiCUBYWzJdLEBYWy00JjddLEBYWy00JjddCSMgYnl0ZSBzd2FwCisJYWRkCVwkNjQsJGlucAorCXZwc2h1ZmIJQFhbMl0sQFhbLTMmN10sQFhbLTMmN10KKwl2cHNodWZiCUBYWzJdLEBYWy0yJjddLEBYWy0yJjddCisJdnBzaHVmYglAWFsyXSxAWFstMSY3XSxAWFstMSY3XQorCXZwYWRkZAlAVHhbMV0sQFhbLTQmN10sQFhbMF0JIyBhZGQgS18wMF8xOQorCXZwYWRkZAlAVHhbMV0sQFhbLTMmN10sQFhbMV0KKwl2cGFkZGQJQFR4WzFdLEBYWy0yJjddLEBYWzJdCisJdm1vdmRxYQlAWFswXSwwKCVyc3ApCQkjIFhbXStLIHhmZXIgdG8gSUFMVQorCXZtb3ZkcWEJQFhbMV0sMTYoJXJzcCkKKwl2bW92ZHFhCUBYWzJdLDMyKCVyc3ApCisJdm1vdnVwcwktMTEyKCRrZXkpLCRybmRrZXkwCSMgJGtleVswXQorCXZtb3Z1cHMJMTYtMTEyKCRrZXkpLCRybmRrZXlbMF0JIyBmb3J3YXJkIHJlZmVyZW5jZQorCWptcAkuTG9vcF9hdngKK19fXworCitteSAkYWVzZW5jPXN1YiB7CisgIHVzZSBpbnRlZ2VyOworICBteSAoJG4sJGspPSgkci8xMCwkciUxMCk7CisgICAgaWYgKCRrPT0wKSB7CisgICAgICAkY29kZS49PDxfX187CisJdm1vdnVwcwkJYDE2KiRuYCgkaW4wKSwkaW4JCSMgbG9hZCBpbnB1dAorCXZ4b3JwcwkJJHJuZGtleTAsJGluLCRpbgorX19fCisgICAgICAkY29kZS49PDxfX18gaWYgKCRuKTsKKwl2bW92dXBzCQkkaXYsYDE2Kigkbi0xKWAoJG91dCwkaW4wKQkjIHdyaXRlIG91dHB1dAorX19fCisgICAgICAkY29kZS49PDxfX187CisJdnhvcnBzCQkkaW4sJGl2LCRpdgorCXZhZXNlbmMJCSRybmRrZXlbMF0sJGl2LCRpdgorCXZtb3Z1cHMJCWAzMisxNiokay0xMTJgKCRrZXkpLCRybmRrZXlbMV0KK19fXworICAgIH0gZWxzaWYgKCRrPT05KSB7CisgICAgICAkc24rKzsKKyAgICAgICRjb2RlLj08PF9fXzsKKwljbXAJCVwkMTEsJHJvdW5kcworCWpiCQkuTHZhZXNlbmNsYXN0JHNuCisJdmFlc2VuYwkJJHJuZGtleVswXSwkaXYsJGl2CisJdm1vdnVwcwkJYDMyKzE2KigkayswKS0xMTJgKCRrZXkpLCRybmRrZXlbMV0KKwl2YWVzZW5jCQkkcm5ka2V5WzFdLCRpdiwkaXYKKwl2bW92dXBzCQlgMzIrMTYqKCRrKzEpLTExMmAoJGtleSksJHJuZGtleVswXQorCWplCQkuTHZhZXNlbmNsYXN0JHNuCisJdmFlc2VuYwkJJHJuZGtleVswXSwkaXYsJGl2CisJdm1vdnVwcwkJYDMyKzE2KigkaysyKS0xMTJgKCRrZXkpLCRybmRrZXlbMV0KKwl2YWVzZW5jCQkkcm5ka2V5WzFdLCRpdiwkaXYKKwl2bW92dXBzCQlgMzIrMTYqKCRrKzMpLTExMmAoJGtleSksJHJuZGtleVswXQorLkx2YWVzZW5jbGFzdCRzbjoKKwl2YWVzZW5jbGFzdAkkcm5ka2V5WzBdLCRpdiwkaXYKKwl2bW92dXBzCQkxNi0xMTIoJGtleSksJHJuZGtleVsxXQkJIyBmb3J3YXJkIHJlZmVyZW5jZQorX19fCisgICAgfSBlbHNlIHsKKyAgICAgICRjb2RlLj08PF9fXzsKKwl2YWVzZW5jCQkkcm5ka2V5WzBdLCRpdiwkaXYKKwl2bW92dXBzCQlgMzIrMTYqJGstMTEyYCgka2V5KSwkcm5ka2V5WzFdCitfX18KKyAgICB9CisgICAgJHIrKzsJdW5zaGlmdChAcm5ka2V5LHBvcChAcm5ka2V5KSk7Cit9OworCitzdWIgWHVwZGF0ZV9hdnhfMTZfMzEoKQkJIyByZWNhbGwgdGhhdCAkWGkgc3RhcnRzIHd0aWggNAoreyB1c2UgaW50ZWdlcjsKKyAgbXkgJGJvZHkgPSBzaGlmdDsKKyAgbXkgQGluc25zID0gKCYkYm9keSwmJGJvZHksJiRib2R5LCYkYm9keSk7CSMgNDAgaW5zdHJ1Y3Rpb25zCisgIG15ICgkYSwkYiwkYywkZCwkZSk7CisKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdnBhbGlnbnIoQFhbMF0sQFhbLTMmN10sQFhbLTQmN10sOCk7CSMgY29tcG9zZSAiWFstMTRdIiBpbiAiWFswXSIKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKworCSAgJnZwYWRkZAkoQFR4WzFdLEBUeFsxXSxAWFstMSY3XSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnZwc3JsZHEoQFR4WzBdLEBYWy0xJjddLDQpOwkjICJYWy0zXSIsIDMgZHdvcmRzCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnZweG9yCShAWFswXSxAWFswXSxAWFstNCY3XSk7CQkjICJYWzBdIl49IlhbLTE2XSIKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKworCSZ2cHhvcgkoQFR4WzBdLEBUeFswXSxAWFstMiY3XSk7CSMgIlhbLTNdIl4iWFstOF0iCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisKKwkmdnB4b3IJKEBYWzBdLEBYWzBdLEBUeFswXSk7CQkjICJYWzBdIl49IlhbLTNdIl4iWFstOF0iCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJICAmdm1vdmRxYQkoZXZhbCgxNiooKCRYaS0xKSYzKSkuIiglcnNwKSIsQFR4WzFdKTsJIyBYW10rSyB4ZmVyIHRvIElBTFUKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKworCSZ2cHNybGQJKEBUeFswXSxAWFswXSwzMSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisKKwkmdnBzbGxkcShAVHhbMl0sQFhbMF0sMTIpOwkJIyAiWFswXSI8PDk2LCBleHRyYWN0IG9uZSBkd29yZAorCSZ2cGFkZGQJKEBYWzBdLEBYWzBdLEBYWzBdKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKworCSZ2cHNybGQJKEBUeFsxXSxAVHhbMl0sMzApOworCSZ2cG9yCShAWFswXSxAWFswXSxAVHhbMF0pOwkJIyAiWFswXSI8PDw9MQorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCisJJnZwc2xsZAkoQFR4WzJdLEBUeFsyXSwyKTsKKwkmdnB4b3IJKEBYWzBdLEBYWzBdLEBUeFsxXSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisKKwkmdnB4b3IJKEBYWzBdLEBYWzBdLEBUeFsyXSk7CQkjICJYWzBdIl49KCJYWzBdIj4+OTYpPDw8MgorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSAgJnZtb3ZkcWEJKEBUeFsyXSxldmFsKDE2KigoJFhpKS81KSkuIigkS19YWF9YWCkiKTsJIyBLX1hYX1hYCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisKKworCSBmb3JlYWNoIChAaW5zbnMpIHsgZXZhbDsgfQkjIHJlbWFpbmluZyBpbnN0cnVjdGlvbnMgW2lmIGFueV0KKworICAkWGkrKzsJcHVzaChAWCxzaGlmdChAWCkpOwkjICJyb3RhdGUiIFhbXQorCQlwdXNoKEBUeCxzaGlmdChAVHgpKTsKK30KKworc3ViIFh1cGRhdGVfYXZ4XzMyXzc5KCkKK3sgdXNlIGludGVnZXI7CisgIG15ICRib2R5ID0gc2hpZnQ7CisgIG15IEBpbnNucyA9ICgmJGJvZHksJiRib2R5LCYkYm9keSwmJGJvZHkpOwkjIDMyIHRvIDQ4IGluc3RydWN0aW9ucworICBteSAoJGEsJGIsJGMsJGQsJGUpOworCisJJnZwYWxpZ25yKEBUeFswXSxAWFstMSY3XSxAWFstMiY3XSw4KTsJIyBjb21wb3NlICJYWy02XSIKKwkmdnB4b3IJKEBYWzBdLEBYWzBdLEBYWy00JjddKTsJCSMgIlhbMF0iPSJYWy0zMl0iXiJYWy0xNl0iCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CQkjIGJvZHlfMjBfMzkKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsJCSMgcm9sCisKKwkmdnB4b3IJKEBYWzBdLEBYWzBdLEBYWy03JjddKTsJCSMgIlhbMF0iXj0iWFstMjhdIgorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpCWlmIChAaW5zbnNbMF0gIX4gLyZyb1tybF0vKTsKKwlpZiAoJFhpJTUpIHsKKwkgICZ2bW92ZHFhCShAVHhbMl0sQFR4WzFdKTsjICJwZXJwZXR1YXRlIiBLX1hYX1hYLi4uCisJfSBlbHNlIHsJCQkjIC4uLiBvciBsb2FkIG5leHQgb25lCisJICAmdm1vdmRxYQkoQFR4WzJdLGV2YWwoMTYqKCRYaS81KSkuIigkS19YWF9YWCkiKTsKKwl9CisJICAmdnBhZGRkCShAVHhbMV0sQFR4WzFdLEBYWy0xJjddKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsJCSMgcm9yCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisKKwkmdnB4b3IJKEBYWzBdLEBYWzBdLEBUeFswXSk7CQkjICJYWzBdIl49IlhbLTZdIgorCSBldmFsKHNoaWZ0KEBpbnNucykpOwkJIyBib2R5XzIwXzM5CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CQkjIHJvbAorCisJJnZwc3JsZAkoQFR4WzBdLEBYWzBdLDMwKTsKKwkgICZ2bW92ZHFhCShldmFsKDE2KigoJFhpLTEpJjMpKS4iKCVyc3ApIixAVHhbMV0pOwkjIFhbXStLIHhmZXIgdG8gSUFMVQorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOwkJIyByb3IKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKworCSZ2cHNsbGQJKEBYWzBdLEBYWzBdLDIpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOwkJIyBib2R5XzIwXzM5CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CQkjIHJvbAorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOwkJIyByb3IKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKworCSZ2cG9yCShAWFswXSxAWFswXSxAVHhbMF0pOwkJIyAiWFswXSI8PDw9MgorCSBldmFsKHNoaWZ0KEBpbnNucykpOwkJIyBib2R5XzIwXzM5CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJICAmdm1vdmRxYQkoQFR4WzFdLEBYWzBdKQlpZiAoJFhpPDE5KTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsJCSMgcm9sCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CQkjIHJvbAorCSBldmFsKHNoaWZ0KEBpbnNucykpOworCisJIGZvcmVhY2ggKEBpbnNucykgeyBldmFsOyB9CSMgcmVtYWluaW5nIGluc3RydWN0aW9ucworCisgICRYaSsrOwlwdXNoKEBYLHNoaWZ0KEBYKSk7CSMgInJvdGF0ZSIgWFtdCisJCXB1c2goQFR4LHNoaWZ0KEBUeCkpOworfQorCitzdWIgWHVwbGFzdF9hdnhfODAoKQoreyB1c2UgaW50ZWdlcjsKKyAgbXkgJGJvZHkgPSBzaGlmdDsKKyAgbXkgQGluc25zID0gKCYkYm9keSwmJGJvZHksJiRib2R5LCYkYm9keSk7CSMgMzIgaW5zdHJ1Y3Rpb25zCisgIG15ICgkYSwkYiwkYywkZCwkZSk7CisKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgICZ2cGFkZGQJKEBUeFsxXSxAVHhbMV0sQFhbLTEmN10pOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCisJICAmbW92ZHFhCShldmFsKDE2KigoJFhpLTEpJjMpKS4iKCVyc3ApIixAVHhbMV0pOwkjIFhbXStLIHhmZXIgSUFMVQorCisJIGZvcmVhY2ggKEBpbnNucykgeyBldmFsOyB9CQkjIHJlbWFpbmluZyBpbnN0cnVjdGlvbnMKKworCSZjbXAJKCRpbnAsJGxlbik7CisJJmplCSgiLkxkb25lX2F2eCIpOworCisJdW5zaGlmdChAVHgscG9wKEBUeCkpOworCisJJnZtb3ZkcWEoQFhbMl0sIjY0KCRLX1hYX1hYKSIpOwkJIyBwYnN3YXAgbWFzaworCSZ2bW92ZHFhKEBUeFsxXSwiMCgkS19YWF9YWCkiKTsJCSMgS18wMF8xOQorCSZ2bW92ZHF1KEBYWy00JjddLCIwKCRpbnApIik7CQkjIGxvYWQgaW5wdXQKKwkmdm1vdmRxdShAWFstMyY3XSwiMTYoJGlucCkiKTsKKwkmdm1vdmRxdShAWFstMiY3XSwiMzIoJGlucCkiKTsKKwkmdm1vdmRxdShAWFstMSY3XSwiNDgoJGlucCkiKTsKKwkmdnBzaHVmYihAWFstNCY3XSxAWFstNCY3XSxAWFsyXSk7CSMgYnl0ZSBzd2FwCisJJmFkZAkoJGlucCw2NCk7CisKKyAgJFhpPTA7Cit9CisKK3N1YiBYbG9vcF9hdngoKQoreyB1c2UgaW50ZWdlcjsKKyAgbXkgJGJvZHkgPSBzaGlmdDsKKyAgbXkgQGluc25zID0gKCYkYm9keSwmJGJvZHksJiRib2R5LCYkYm9keSk7CSMgMzIgaW5zdHJ1Y3Rpb25zCisgIG15ICgkYSwkYiwkYywkZCwkZSk7CisKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkgZXZhbChzaGlmdChAaW5zbnMpKTsKKwkmdnBzaHVmYihAWFsoJFhpLTMpJjddLEBYWygkWGktMykmN10sQFhbMl0pOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSBldmFsKHNoaWZ0KEBpbnNucykpOworCSZ2cGFkZGQJKEBYWyRYaSY3XSxAWFsoJFhpLTQpJjddLEBUeFsxXSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJJnZtb3ZkcWEoZXZhbCgxNiokWGkpLiIoJXJzcCkiLEBYWyRYaSY3XSk7CSMgWFtdK0sgeGZlciB0byBJQUxVCisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisJIGV2YWwoc2hpZnQoQGluc25zKSk7CisKKwlmb3JlYWNoIChAaW5zbnMpIHsgZXZhbDsgfQorICAkWGkrKzsKK30KKworc3ViIFh0YWlsX2F2eCgpCit7IHVzZSBpbnRlZ2VyOworICBteSAkYm9keSA9IHNoaWZ0OworICBteSBAaW5zbnMgPSAoJiRib2R5LCYkYm9keSwmJGJvZHksJiRib2R5KTsJIyAzMiBpbnN0cnVjdGlvbnMKKyAgbXkgKCRhLCRiLCRjLCRkLCRlKTsKKworCWZvcmVhY2ggKEBpbnNucykgeyBldmFsOyB9Cit9CisKKyRjb2RlLj08PF9fXzsKKy5hbGlnbgkxNgorLkxvb3BfYXZ4OgorX19fCisJJlh1cGRhdGVfYXZ4XzE2XzMxKFwmYm9keV8wMF8xOSk7CisJJlh1cGRhdGVfYXZ4XzE2XzMxKFwmYm9keV8wMF8xOSk7CisJJlh1cGRhdGVfYXZ4XzE2XzMxKFwmYm9keV8wMF8xOSk7CisJJlh1cGRhdGVfYXZ4XzE2XzMxKFwmYm9keV8wMF8xOSk7CisJJlh1cGRhdGVfYXZ4XzMyXzc5KFwmYm9keV8wMF8xOSk7CisJJlh1cGRhdGVfYXZ4XzMyXzc5KFwmYm9keV8yMF8zOSk7CisJJlh1cGRhdGVfYXZ4XzMyXzc5KFwmYm9keV8yMF8zOSk7CisJJlh1cGRhdGVfYXZ4XzMyXzc5KFwmYm9keV8yMF8zOSk7CisJJlh1cGRhdGVfYXZ4XzMyXzc5KFwmYm9keV8yMF8zOSk7CisJJlh1cGRhdGVfYXZ4XzMyXzc5KFwmYm9keV8yMF8zOSk7CisJJlh1cGRhdGVfYXZ4XzMyXzc5KFwmYm9keV80MF81OSk7CisJJlh1cGRhdGVfYXZ4XzMyXzc5KFwmYm9keV80MF81OSk7CisJJlh1cGRhdGVfYXZ4XzMyXzc5KFwmYm9keV80MF81OSk7CisJJlh1cGRhdGVfYXZ4XzMyXzc5KFwmYm9keV80MF81OSk7CisJJlh1cGRhdGVfYXZ4XzMyXzc5KFwmYm9keV80MF81OSk7CisJJlh1cGRhdGVfYXZ4XzMyXzc5KFwmYm9keV8yMF8zOSk7CisJJlh1cGxhc3RfYXZ4XzgwKFwmYm9keV8yMF8zOSk7CSMgY2FuIGp1bXAgdG8gImRvbmUiCisKKwkJCQkkc2F2ZWRfaj0kajsgQHNhdmVkX1Y9QFY7CisJCQkJJHNhdmVkX3I9JHI7IEBzYXZlZF9ybmRrZXk9QHJuZGtleTsKKworCSZYbG9vcF9hdngoXCZib2R5XzIwXzM5KTsKKwkmWGxvb3BfYXZ4KFwmYm9keV8yMF8zOSk7CisJJlhsb29wX2F2eChcJmJvZHlfMjBfMzkpOworCiskY29kZS49PDxfX187CisJdm1vdnVwcwkkaXYsNDgoJG91dCwkaW4wKQkJIyB3cml0ZSBvdXRwdXQKKwlsZWEJNjQoJGluMCksJGluMAorCisJYWRkCTAoJGN0eCksJEEJCQkjIHVwZGF0ZSBjb250ZXh0CisJYWRkCTQoJGN0eCksQFRbMF0KKwlhZGQJOCgkY3R4KSwkQworCWFkZAkxMigkY3R4KSwkRAorCW1vdgkkQSwwKCRjdHgpCisJYWRkCTE2KCRjdHgpLCRFCisJbW92CUBUWzBdLDQoJGN0eCkKKwltb3YJQFRbMF0sJEIJCQkjIG1hZ2ljIHNlZWQKKwltb3YJJEMsOCgkY3R4KQorCW1vdgkkRCwxMigkY3R4KQorCW1vdgkkRSwxNigkY3R4KQorCWptcAkuTG9vcF9hdngKKworLmFsaWduCTE2CisuTGRvbmVfYXZ4OgorX19fCisJCQkJJGpqPSRqPSRzYXZlZF9qOyBAVj1Ac2F2ZWRfVjsKKwkJCQkkcj0kc2F2ZWRfcjsgICAgIEBybmRrZXk9QHNhdmVkX3JuZGtleTsKKworCSZYdGFpbF9hdngoXCZib2R5XzIwXzM5KTsKKwkmWHRhaWxfYXZ4KFwmYm9keV8yMF8zOSk7CisJJlh0YWlsX2F2eChcJmJvZHlfMjBfMzkpOworCiskY29kZS49PDxfX187CisJdm1vdnVwcwkkaXYsNDgoJG91dCwkaW4wKQkJIyB3cml0ZSBvdXRwdXQKKwltb3YJODgoJXJzcCksJGl2cAkJCSMgcmVzdG9yZSAkaXZwCisKKwlhZGQJMCgkY3R4KSwkQQkJCSMgdXBkYXRlIGNvbnRleHQKKwlhZGQJNCgkY3R4KSxAVFswXQorCWFkZAk4KCRjdHgpLCRDCisJbW92CSRBLDAoJGN0eCkKKwlhZGQJMTIoJGN0eCksJEQKKwltb3YJQFRbMF0sNCgkY3R4KQorCWFkZAkxNigkY3R4KSwkRQorCW1vdgkkQyw4KCRjdHgpCisJbW92CSRELDEyKCRjdHgpCisJbW92CSRFLDE2KCRjdHgpCisJdm1vdnVwcwkkaXYsKCRpdnApCQkJIyB3cml0ZSBJVgorCXZ6ZXJvYWxsCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKwltb3ZhcHMJOTYrMCglcnNwKSwleG1tNgorCW1vdmFwcwk5NisxNiglcnNwKSwleG1tNworCW1vdmFwcwk5NiszMiglcnNwKSwleG1tOAorCW1vdmFwcwk5Nis0OCglcnNwKSwleG1tOQorCW1vdmFwcwk5Nis2NCglcnNwKSwleG1tMTAKKwltb3ZhcHMJOTYrODAoJXJzcCksJXhtbTExCisJbW92YXBzCTk2Kzk2KCVyc3ApLCV4bW0xMgorCW1vdmFwcwk5NisxMTIoJXJzcCksJXhtbTEzCisJbW92YXBzCTk2KzEyOCglcnNwKSwleG1tMTQKKwltb3ZhcHMJOTYrMTQ0KCVyc3ApLCV4bW0xNQorX19fCiskY29kZS49PDxfX187CisJbGVhCWAxMDQrKCR3aW42ND8xMCoxNjowKWAoJXJzcCksJXJzaQorCW1vdgkwKCVyc2kpLCVyMTUKKwltb3YJOCglcnNpKSwlcjE0CisJbW92CTE2KCVyc2kpLCVyMTMKKwltb3YJMjQoJXJzaSksJXIxMgorCW1vdgkzMiglcnNpKSwlcmJwCisJbW92CTQwKCVyc2kpLCVyYngKKwlsZWEJNDgoJXJzaSksJXJzcAorLkxlcGlsb2d1ZV9hdng6CisJcmV0Cisuc2l6ZQlhZXNuaV9jYmNfc2hhMV9lbmNfYXZ4LC4tYWVzbmlfY2JjX3NoYTFfZW5jX2F2eAorX19fCit9CiskY29kZS49PDxfX187CisuYWxpZ24JNjQKK0tfWFhfWFg6CisubG9uZwkweDVhODI3OTk5LDB4NWE4Mjc5OTksMHg1YTgyNzk5OSwweDVhODI3OTk5CSMgS18wMF8xOQorLmxvbmcJMHg2ZWQ5ZWJhMSwweDZlZDllYmExLDB4NmVkOWViYTEsMHg2ZWQ5ZWJhMQkjIEtfMjBfMzkKKy5sb25nCTB4OGYxYmJjZGMsMHg4ZjFiYmNkYywweDhmMWJiY2RjLDB4OGYxYmJjZGMJIyBLXzQwXzU5CisubG9uZwkweGNhNjJjMWQ2LDB4Y2E2MmMxZDYsMHhjYTYyYzFkNiwweGNhNjJjMWQ2CSMgS182MF83OQorLmxvbmcJMHgwMDAxMDIwMywweDA0MDUwNjA3LDB4MDgwOTBhMGIsMHgwYzBkMGUwZgkjIHBic3dhcCBtYXNrCisKKy5hc2NpegkiQUVTTkktQ0JDK1NIQTEgc3RpdGNoIGZvciB4ODZfNjQsIENSWVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iCisuYWxpZ24JNjQKK19fXworCisjIEVYQ0VQVElPTl9ESVNQT1NJVElPTiBoYW5kbGVyIChFWENFUFRJT05fUkVDT1JEICpyZWMsVUxPTkc2NCBmcmFtZSwKKyMJCUNPTlRFWFQgKmNvbnRleHQsRElTUEFUQ0hFUl9DT05URVhUICpkaXNwKQoraWYgKCR3aW42NCkgeworJHJlYz0iJXJjeCI7CiskZnJhbWU9IiVyZHgiOworJGNvbnRleHQ9IiVyOCI7CiskZGlzcD0iJXI5IjsKKworJGNvZGUuPTw8X19fOworLmV4dGVybglfX2ltcF9SdGxWaXJ0dWFsVW53aW5kCisudHlwZQlzc3NlM19oYW5kbGVyLFxAYWJpLW9tbmlwb3RlbnQKKy5hbGlnbgkxNgorc3NzZTNfaGFuZGxlcjoKKwlwdXNoCSVyc2kKKwlwdXNoCSVyZGkKKwlwdXNoCSVyYngKKwlwdXNoCSVyYnAKKwlwdXNoCSVyMTIKKwlwdXNoCSVyMTMKKwlwdXNoCSVyMTQKKwlwdXNoCSVyMTUKKwlwdXNoZnEKKwlzdWIJXCQ2NCwlcnNwCisKKwltb3YJMTIwKCRjb250ZXh0KSwlcmF4CSMgcHVsbCBjb250ZXh0LT5SYXgKKwltb3YJMjQ4KCRjb250ZXh0KSwlcmJ4CSMgcHVsbCBjb250ZXh0LT5SaXAKKworCW1vdgk4KCRkaXNwKSwlcnNpCQkjIGRpc3AtPkltYWdlQmFzZQorCW1vdgk1NigkZGlzcCksJXIxMQkJIyBkaXNwLT5IYW5kbGVyRGF0YQorCisJbW92CTAoJXIxMSksJXIxMGQJCSMgSGFuZGxlckRhdGFbMF0KKwlsZWEJKCVyc2ksJXIxMCksJXIxMAkjIHByb2xvZ3VlIGxhYmVsCisJY21wCSVyMTAsJXJieAkJIyBjb250ZXh0LT5SaXA8cHJvbG9ndWUgbGFiZWwKKwlqYgkuTGNvbW1vbl9zZWhfdGFpbAorCisJbW92CTE1MigkY29udGV4dCksJXJheAkjIHB1bGwgY29udGV4dC0+UnNwCisKKwltb3YJNCglcjExKSwlcjEwZAkJIyBIYW5kbGVyRGF0YVsxXQorCWxlYQkoJXJzaSwlcjEwKSwlcjEwCSMgZXBpbG9ndWUgbGFiZWwKKwljbXAJJXIxMCwlcmJ4CQkjIGNvbnRleHQtPlJpcD49ZXBpbG9ndWUgbGFiZWwKKwlqYWUJLkxjb21tb25fc2VoX3RhaWwKKworCWxlYQk5NiglcmF4KSwlcnNpCisJbGVhCTUxMigkY29udGV4dCksJXJkaQkjICZjb250ZXh0LlhtbTYKKwltb3YJXCQyMCwlZWN4CisJLmxvbmcJMHhhNTQ4ZjNmYwkJIyBjbGQ7IHJlcCBtb3ZzcQorCWxlYQlgMTA0KzEwKjE2YCglcmF4KSwlcmF4CSMgYWRqdXN0IHN0YWNrIHBvaW50ZXIKKworCW1vdgkwKCVyYXgpLCVyMTUKKwltb3YJOCglcmF4KSwlcjE0CisJbW92CTE2KCVyYXgpLCVyMTMKKwltb3YJMjQoJXJheCksJXIxMgorCW1vdgkzMiglcmF4KSwlcmJwCisJbW92CTQwKCVyYXgpLCVyYngKKwlsZWEJNDgoJXJheCksJXJheAorCW1vdgklcmJ4LDE0NCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJieAorCW1vdgklcmJwLDE2MCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJicAorCW1vdgklcjEyLDIxNigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxMgorCW1vdgklcjEzLDIyNCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxMworCW1vdgklcjE0LDIzMigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxNAorCW1vdgklcjE1LDI0MCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxNQorCisuTGNvbW1vbl9zZWhfdGFpbDoKKwltb3YJOCglcmF4KSwlcmRpCisJbW92CTE2KCVyYXgpLCVyc2kKKwltb3YJJXJheCwxNTIoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5Sc3AKKwltb3YJJXJzaSwxNjgoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5Sc2kKKwltb3YJJXJkaSwxNzYoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5SZGkKKworCW1vdgk0MCgkZGlzcCksJXJkaQkJIyBkaXNwLT5Db250ZXh0UmVjb3JkCisJbW92CSRjb250ZXh0LCVyc2kJCSMgY29udGV4dAorCW1vdglcJDE1NCwlZWN4CQkjIHNpemVvZihDT05URVhUKQorCS5sb25nCTB4YTU0OGYzZmMJCSMgY2xkOyByZXAgbW92c3EKKworCW1vdgkkZGlzcCwlcnNpCisJeG9yCSVyY3gsJXJjeAkJIyBhcmcxLCBVTldfRkxBR19OSEFORExFUgorCW1vdgk4KCVyc2kpLCVyZHgJCSMgYXJnMiwgZGlzcC0+SW1hZ2VCYXNlCisJbW92CTAoJXJzaSksJXI4CQkjIGFyZzMsIGRpc3AtPkNvbnRyb2xQYworCW1vdgkxNiglcnNpKSwlcjkJCSMgYXJnNCwgZGlzcC0+RnVuY3Rpb25FbnRyeQorCW1vdgk0MCglcnNpKSwlcjEwCQkjIGRpc3AtPkNvbnRleHRSZWNvcmQKKwlsZWEJNTYoJXJzaSksJXIxMQkJIyAmZGlzcC0+SGFuZGxlckRhdGEKKwlsZWEJMjQoJXJzaSksJXIxMgkJIyAmZGlzcC0+RXN0YWJsaXNoZXJGcmFtZQorCW1vdgklcjEwLDMyKCVyc3ApCQkjIGFyZzUKKwltb3YJJXIxMSw0MCglcnNwKQkJIyBhcmc2CisJbW92CSVyMTIsNDgoJXJzcCkJCSMgYXJnNworCW1vdgklcmN4LDU2KCVyc3ApCQkjIGFyZzgsIChOVUxMKQorCWNhbGwJKl9faW1wX1J0bFZpcnR1YWxVbndpbmQoJXJpcCkKKworCW1vdglcJDEsJWVheAkJIyBFeGNlcHRpb25Db250aW51ZVNlYXJjaAorCWFkZAlcJDY0LCVyc3AKKwlwb3BmcQorCXBvcAklcjE1CisJcG9wCSVyMTQKKwlwb3AJJXIxMworCXBvcAklcjEyCisJcG9wCSVyYnAKKwlwb3AJJXJieAorCXBvcAklcmRpCisJcG9wCSVyc2kKKwlyZXQKKy5zaXplCXNzc2UzX2hhbmRsZXIsLi1zc3NlM19oYW5kbGVyCisKKy5zZWN0aW9uCS5wZGF0YQorLmFsaWduCTQKKwkucnZhCS5MU0VIX2JlZ2luX2Flc25pX2NiY19zaGExX2VuY19zc3NlMworCS5ydmEJLkxTRUhfZW5kX2Flc25pX2NiY19zaGExX2VuY19zc3NlMworCS5ydmEJLkxTRUhfaW5mb19hZXNuaV9jYmNfc2hhMV9lbmNfc3NzZTMKK19fXworJGNvZGUuPTw8X19fIGlmICgkYXZ4KTsKKwkucnZhCS5MU0VIX2JlZ2luX2Flc25pX2NiY19zaGExX2VuY19hdngKKwkucnZhCS5MU0VIX2VuZF9hZXNuaV9jYmNfc2hhMV9lbmNfYXZ4CisJLnJ2YQkuTFNFSF9pbmZvX2Flc25pX2NiY19zaGExX2VuY19hdngKK19fXworJGNvZGUuPTw8X19fOworLnNlY3Rpb24JLnhkYXRhCisuYWxpZ24JOAorLkxTRUhfaW5mb19hZXNuaV9jYmNfc2hhMV9lbmNfc3NzZTM6CisJLmJ5dGUJOSwwLDAsMAorCS5ydmEJc3NzZTNfaGFuZGxlcgorCS5ydmEJLkxwcm9sb2d1ZV9zc3NlMywuTGVwaWxvZ3VlX3Nzc2UzCSMgSGFuZGxlckRhdGFbXQorX19fCiskY29kZS49PDxfX18gaWYgKCRhdngpOworLkxTRUhfaW5mb19hZXNuaV9jYmNfc2hhMV9lbmNfYXZ4OgorCS5ieXRlCTksMCwwLDAKKwkucnZhCXNzc2UzX2hhbmRsZXIKKwkucnZhCS5McHJvbG9ndWVfYXZ4LC5MZXBpbG9ndWVfYXZ4CQkjIEhhbmRsZXJEYXRhW10KK19fXworfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworc3ViIHJleCB7CisgIGxvY2FsICpvcGNvZGU9c2hpZnQ7CisgIG15ICgkZHN0LCRzcmMpPUBfOworICBteSAkcmV4PTA7CisKKyAgICAkcmV4fD0weDA0CQkJaWYoJGRzdD49OCk7CisgICAgJHJleHw9MHgwMQkJCWlmKCRzcmM+PTgpOworICAgIHB1c2ggQG9wY29kZSwkcmV4fDB4NDAJaWYoJHJleCk7Cit9CisKK3N1YiBhZXNuaSB7CisgIG15ICRsaW5lPXNoaWZ0OworICBteSBAb3Bjb2RlPSgweDY2KTsKKworICAgIGlmICgkbGluZT1+LyhhZXNbYS16XSspXHMrJXhtbShbMC05XSspLFxzKiV4bW0oWzAtOV0rKS8pIHsKKwlteSAlb3Bjb2RlbGV0ID0gKAorCQkiYWVzZW5jIiA9PiAweGRjLAkiYWVzZW5jbGFzdCIgPT4gMHhkZAorCSk7CisJcmV0dXJuIHVuZGVmIGlmICghZGVmaW5lZCgkb3Bjb2RlbGV0eyQxfSkpOworCXJleChcQG9wY29kZSwkMywkMik7CisJcHVzaCBAb3Bjb2RlLDB4MGYsMHgzOCwkb3Bjb2RlbGV0eyQxfTsKKwlwdXNoIEBvcGNvZGUsMHhjMHwoJDImNyl8KCgkMyY3KTw8Myk7CSMgTW9kUi9NCisJcmV0dXJuICIuYnl0ZVx0Ii5qb2luKCcsJyxAb3Bjb2RlKTsKKyAgICB9CisgICAgcmV0dXJuICRsaW5lOworfQorCiskY29kZSA9fiBzL1xgKFteXGBdKilcYC9ldmFsKCQxKS9nZW07CiskY29kZSA9fiBzL1xiKGFlcy4qJXhtbVswLTldKykuKiQvYWVzbmkoJDEpL2dlbTsKKworcHJpbnQgJGNvZGU7CitjbG9zZSBTVERPVVQ7CmRpZmYgLS1naXQgYS9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS9hZXNuaS14ODYucGwgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS9hZXNuaS14ODYucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RjMzQ1YgotLS0gL2Rldi9udWxsCisrKyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYXNtL2Flc25pLXg4Ni5wbApAQCAtMCwwICsxLDIxODkgQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPiBmb3IgdGhlIE9wZW5TU0wKKyMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAorIyBDUllQVE9HQU1TIGxpY2Vuc2VzIGRlcGVuZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVydGhlcgorIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBzdXBwb3J0IGZvciBJbnRlbCBBRVMtTkkgZXh0ZW5zaW9uLiBJbgorIyBPcGVuU1NMIGNvbnRleHQgaXQncyB1c2VkIHdpdGggSW50ZWwgZW5naW5lLCBidXQgY2FuIGFsc28gYmUgdXNlZCBhcworIyBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBjcnlwdG8vYWVzL2FzbS9hZXMtNTg2LnBsIFtzZWUgYmVsb3cgZm9yCisjIGRldGFpbHNdLgorIworIyBQZXJmb3JtYW5jZS4KKyMKKyMgVG8gc3RhcnQgd2l0aCBzZWUgY29ycmVzcG9uZGluZyBwYXJhZ3JhcGggaW4gYWVzbmkteDg2XzY0LnBsLi4uCisjIEluc3RlYWQgb2YgZmlsbGluZyB0YWJsZSBzaW1pbGFyIHRvIG9uZSBmb3VuZCB0aGVyZSBJJ3ZlIGNob3NlbiB0bworIyBzdW1tYXJpemUgKmNvbXBhcmlzb24qIHJlc3VsdHMgZm9yIHJhdyBFQ0IsIENUUiBhbmQgQ0JDIGJlbmNobWFya3MuCisjIFRoZSBzaW1wbGlmaWVkIHRhYmxlIGJlbG93IHJlcHJlc2VudHMgMzItYml0IHBlcmZvcm1hbmNlIHJlbGF0aXZlCisjIHRvIDY0LWJpdCBvbmUgaW4gZXZlcnkgZ2l2ZW4gcG9pbnQuIFJhdGlvcyB2YXJ5IGZvciBkaWZmZXJlbnQKKyMgZW5jcnlwdGlvbiBtb2RlcywgdGhlcmVmb3JlIGludGVydmFsIHZhbHVlcy4KKyMKKyMJMTYtYnl0ZSAgICAgNjQtYnl0ZSAgICAgMjU2LWJ5dGUgICAgMS1LQiAgICAgICAgOC1LQgorIwk1My02NyUgICAgICA2Ny04NCUgICAgICA5MS05NCUgICAgICA5NS05OCUgICAgICA5Ny05OS41JQorIworIyBMb3dlciByYXRpb3MgZm9yIHNtYWxsZXIgYmxvY2sgc2l6ZXMgYXJlIHBlcmZlY3RseSB1bmRlcnN0YW5kYWJsZSwKKyMgYmVjYXVzZSBmdW5jdGlvbiBjYWxsIG92ZXJoZWFkIGlzIGhpZ2hlciBpbiAzMi1iaXQgbW9kZS4gTGFyZ2VzdAorIyA4LUtCIGJsb2NrIHBlcmZvcm1hbmNlIGlzIHZpcnR1YWxseSBzYW1lOiAzMi1iaXQgY29kZSBpcyBsZXNzIHRoYW4KKyMgMSUgc2xvd2VyIGZvciBFQ0IsIENCQyBhbmQgQ0NNLCBhbmQgfjMlIHNsb3dlciBvdGhlcndpc2UuCisKKyMgSmFudWFyeSAyMDExCisjCisjIFNlZSBhZXNuaS14ODZfNjQucGwgZm9yIGRldGFpbHMuIFVubGlrZSB4ODZfNjQgdmVyc2lvbiB0aGlzIG1vZHVsZQorIyBpbnRlcmxlYXZlcyBhdCBtb3N0IDYgYWVzW2VuY3xkZWNdIGluc3RydWN0aW9ucywgYmVjYXVzZSB0aGVyZSBhcmUKKyMgbm90IGVub3VnaCByZWdpc3RlcnMgZm9yIDh4IGludGVybGVhdmUgW3doaWNoIHNob3VsZCBiZSBvcHRpbWFsIGZvcgorIyBTYW5keSBCcmlkZ2VdLiBBY3R1YWxseSwgcGVyZm9ybWFuY2UgcmVzdWx0cyBmb3IgNnggaW50ZXJsZWF2ZQorIyBmYWN0b3IgcHJlc2VudGVkIGluIGFlc25pLXg4Nl82NC5wbCAoZXhjZXB0IGZvciBDVFIpIGFyZSBmb3IgdGhpcworIyBtb2R1bGUuCisKKyMgQXByaWwgMjAxMQorIworIyBBZGQgYWVzbmlfeHRzX1tlbnxkZV1jcnlwdC4gV2VzdG1lcmUgc3BlbmRzIDEuNTAgY3ljbGVzIHByb2Nlc3NpbmcKKyMgb25lIGJ5dGUgb3V0IG9mIDhLQiB3aXRoIDEyOC1iaXQga2V5LCBTYW5keSBCcmlkZ2UgLSAxLjA5LgorCiskUFJFRklYPSJhZXNuaSI7CSMgaWYgJFBSRUZJWCBpcyBzZXQgdG8gIkFFUyIsIHRoZSBzY3JpcHQKKwkJCSMgZ2VuZXJhdGVzIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yCisJCQkjIGNyeXB0by9hZXMvYXNtL2Flcy01ODYucGw6LSkKKyRpbmxpbmU9MTsJCSMgaW5saW5lIF9hZXNuaV9bZW58ZGVdY3J5cHQKKworJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsKK3B1c2goQElOQywiJHtkaXJ9IiwiJHtkaXJ9Li4vLi4vcGVybGFzbSIpOworcmVxdWlyZSAieDg2YXNtLnBsIjsKKworJmFzbV9pbml0KCRBUkdWWzBdLCQwKTsKKworaWYgKCRQUkVGSVggZXEgImFlc25pIikJeyAkbW92ZWtleT0qbW92dXBzOyB9CitlbHNlCQkJeyAkbW92ZWtleT0qbW92dXBzOyB9CisKKyRsZW49ImVheCI7Ciskcm91bmRzPSJlY3giOworJGtleT0iZWR4IjsKKyRpbnA9ImVzaSI7Ciskb3V0PSJlZGkiOworJHJvdW5kc189ImVieCI7CSMgYmFja3VwIGNvcHkgZm9yICRyb3VuZHMKKyRrZXlfPSJlYnAiOwkjIGJhY2t1cCBjb3B5IGZvciAka2V5CisKKyRybmRrZXkwPSJ4bW0wIjsKKyRybmRrZXkxPSJ4bW0xIjsKKyRpbm91dDA9InhtbTIiOworJGlub3V0MT0ieG1tMyI7CiskaW5vdXQyPSJ4bW00IjsKKyRpbm91dDM9InhtbTUiOwkkaW4xPSJ4bW01IjsKKyRpbm91dDQ9InhtbTYiOwkkaW4wPSJ4bW02IjsKKyRpbm91dDU9InhtbTciOwkkaXZlYz0ieG1tNyI7CisKKyMgQUVTTkkgZXh0ZW5zdGlvbgorc3ViIGFlc2tleWdlbmFzc2lzdAoreyBteSgkZHN0LCRzcmMsJGltbSk9QF87CisgICAgaWYgKCIkZHN0OiRzcmMiID1+IC94bW0oWzAtN10pOnhtbShbMC03XSkvKQorICAgIHsJJmRhdGFfYnl0ZSgweDY2LDB4MGYsMHgzYSwweGRmLDB4YzB8KCQxPDwzKXwkMiwkaW1tKTsJfQorfQorc3ViIGFlc2NvbW1vbgoreyBteSgkb3Bjb2RlbGV0LCRkc3QsJHNyYyk9QF87CisgICAgaWYgKCIkZHN0OiRzcmMiID1+IC94bW0oWzAtN10pOnhtbShbMC03XSkvKQorICAgIHsJJmRhdGFfYnl0ZSgweDY2LDB4MGYsMHgzOCwkb3Bjb2RlbGV0LDB4YzB8KCQxPDwzKXwkMik7fQorfQorc3ViIGFlc2ltYwl7IGFlc2NvbW1vbigweGRiLEBfKTsgfQorc3ViIGFlc2VuYwl7IGFlc2NvbW1vbigweGRjLEBfKTsgfQorc3ViIGFlc2VuY2xhc3QJeyBhZXNjb21tb24oMHhkZCxAXyk7IH0KK3N1YiBhZXNkZWMJeyBhZXNjb21tb24oMHhkZSxAXyk7IH0KK3N1YiBhZXNkZWNsYXN0CXsgYWVzY29tbW9uKDB4ZGYsQF8pOyB9CisMCisjIElubGluZSB2ZXJzaW9uIG9mIGludGVybmFsIGFlc25pX1tlbnxkZV1jcnlwdDEKK3sgbXkgJHNuOworc3ViIGFlc25pX2lubGluZV9nZW5lcmF0ZTEKK3sgbXkgKCRwLCRpbm91dCwkaXZlYyk9QF87ICRpbm91dD0kaW5vdXQwIGlmICghZGVmaW5lZCgkaW5vdXQpKTsKKyAgJHNuKys7CisKKyAgICAmJG1vdmVrZXkJCSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOworICAgICYkbW92ZWtleQkJKCRybmRrZXkxLCZRV1AoMTYsJGtleSkpOworICAgICZ4b3JwcwkJKCRpdmVjLCRybmRrZXkwKQlpZiAoZGVmaW5lZCgkaXZlYykpOworICAgICZsZWEJCSgka2V5LCZEV1AoMzIsJGtleSkpOworICAgICZ4b3JwcwkJKCRpbm91dCwkaXZlYykJCWlmIChkZWZpbmVkKCRpdmVjKSk7CisgICAgJnhvcnBzCQkoJGlub3V0LCRybmRrZXkwKQlpZiAoIWRlZmluZWQoJGl2ZWMpKTsKKyAgICAmc2V0X2xhYmVsKCIke3B9MV9sb29wXyRzbiIpOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dCwkcm5ka2V5MSkiOworCSZkZWMJCSgkcm91bmRzKTsKKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMCwka2V5KSk7CisJJmxlYQkJKCRrZXksJkRXUCgxNiwka2V5KSk7CisgICAgJmpuegkJKCZsYWJlbCgiJHtwfTFfbG9vcF8kc24iKSk7CisgICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91dCwkcm5ka2V5MSkiOworfX0KKworc3ViIGFlc25pX2dlbmVyYXRlMQkjIGZ1bGx5IHVucm9sbGVkIGxvb3AKK3sgbXkgKCRwLCRpbm91dCk9QF87ICRpbm91dD0kaW5vdXQwIGlmICghZGVmaW5lZCgkaW5vdXQpKTsKKworICAgICZmdW5jdGlvbl9iZWdpbl9CKCJfYWVzbmlfJHtwfXJ5cHQxIik7CisJJm1vdnVwcwkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKDB4MTAsJGtleSkpOworCSZ4b3JwcwkJKCRpbm91dCwkcm5ka2V5MCk7CisJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDB4MjAsJGtleSkpOworCSZsZWEJCSgka2V5LCZEV1AoMHgzMCwka2V5KSk7CisJJmNtcAkJKCRyb3VuZHMsMTEpOworCSZqYgkJKCZsYWJlbCgiJHtwfTEyOCIpKTsKKwkmbGVhCQkoJGtleSwmRFdQKDB4MjAsJGtleSkpOworCSZqZQkJKCZsYWJlbCgiJHtwfTE5MiIpKTsKKwkmbGVhCQkoJGtleSwmRFdQKDB4MjAsJGtleSkpOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dCwkcm5ka2V5MSkiOworCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgtMHg0MCwka2V5KSk7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0LCRybmRrZXkwKSI7CisJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKC0weDMwLCRrZXkpKTsKKyAgICAmc2V0X2xhYmVsKCIke3B9MTkyIik7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0LCRybmRrZXkxKSI7CisJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKC0weDIwLCRrZXkpKTsKKwlldmFsIiZhZXMke3B9CSgkaW5vdXQsJHJuZGtleTApIjsKKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoLTB4MTAsJGtleSkpOworICAgICZzZXRfbGFiZWwoIiR7cH0xMjgiKTsKKwlldmFsIiZhZXMke3B9CSgkaW5vdXQsJHJuZGtleTEpIjsKKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMCwka2V5KSk7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0LCRybmRrZXkwKSI7CisJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDB4MTAsJGtleSkpOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dCwkcm5ka2V5MSkiOworCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgweDIwLCRrZXkpKTsKKwlldmFsIiZhZXMke3B9CSgkaW5vdXQsJHJuZGtleTApIjsKKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMHgzMCwka2V5KSk7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0LCRybmRrZXkxKSI7CisJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKDB4NDAsJGtleSkpOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dCwkcm5ka2V5MCkiOworCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgweDUwLCRrZXkpKTsKKwlldmFsIiZhZXMke3B9CSgkaW5vdXQsJHJuZGtleTEpIjsKKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMHg2MCwka2V5KSk7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0LCRybmRrZXkwKSI7CisJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDB4NzAsJGtleSkpOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dCwkcm5ka2V5MSkiOworICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQsJHJuZGtleTApIjsKKyAgICAmcmV0KCk7CisgICAgJmZ1bmN0aW9uX2VuZF9CKCJfYWVzbmlfJHtwfXJ5cHQxIik7Cit9CisMCisjIHZvaWQgJFBSRUZJWF9lbmNyeXB0IChjb25zdCB2b2lkICppbnAsdm9pZCAqb3V0LGNvbnN0IEFFU19LRVkgKmtleSk7CismYWVzbmlfZ2VuZXJhdGUxKCJlbmMiKSBpZiAoISRpbmxpbmUpOworJmZ1bmN0aW9uX2JlZ2luX0IoIiR7UFJFRklYfV9lbmNyeXB0Iik7CisJJm1vdgkoImVheCIsJndwYXJhbSgwKSk7CisJJm1vdgkoJGtleSwmd3BhcmFtKDIpKTsKKwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMCwiZWF4IikpOworCSZtb3YJKCRyb3VuZHMsJkRXUCgyNDAsJGtleSkpOworCSZtb3YJKCJlYXgiLCZ3cGFyYW0oMSkpOworCWlmICgkaW5saW5lKQorCXsgICAmYWVzbmlfaW5saW5lX2dlbmVyYXRlMSgiZW5jIik7CX0KKwllbHNlCisJeyAgICZjYWxsCSgiX2Flc25pX2VuY3J5cHQxIik7CX0KKwkmbW92dXBzCSgmUVdQKDAsImVheCIpLCRpbm91dDApOworCSZyZXQJKCk7CismZnVuY3Rpb25fZW5kX0IoIiR7UFJFRklYfV9lbmNyeXB0Iik7CisKKyMgdm9pZCAkUFJFRklYX2RlY3J5cHQgKGNvbnN0IHZvaWQgKmlucCx2b2lkICpvdXQsY29uc3QgQUVTX0tFWSAqa2V5KTsKKyZhZXNuaV9nZW5lcmF0ZTEoImRlYyIpIGlmKCEkaW5saW5lKTsKKyZmdW5jdGlvbl9iZWdpbl9CKCIke1BSRUZJWH1fZGVjcnlwdCIpOworCSZtb3YJKCJlYXgiLCZ3cGFyYW0oMCkpOworCSZtb3YJKCRrZXksJndwYXJhbSgyKSk7CisJJm1vdnVwcwkoJGlub3V0MCwmUVdQKDAsImVheCIpKTsKKwkmbW92CSgkcm91bmRzLCZEV1AoMjQwLCRrZXkpKTsKKwkmbW92CSgiZWF4Iiwmd3BhcmFtKDEpKTsKKwlpZiAoJGlubGluZSkKKwl7ICAgJmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImRlYyIpOwl9CisJZWxzZQorCXsgICAmY2FsbAkoIl9hZXNuaV9kZWNyeXB0MSIpOwl9CisJJm1vdnVwcwkoJlFXUCgwLCJlYXgiKSwkaW5vdXQwKTsKKwkmcmV0CSgpOworJmZ1bmN0aW9uX2VuZF9CKCIke1BSRUZJWH1fZGVjcnlwdCIpOworCisjIF9hZXNuaV9bZW58ZGVdY3J5cHROIGFyZSBwcml2YXRlIGludGVyZmFjZXMsIE4gZGVub3RlcyBpbnRlcmxlYXZlCisjIGZhY3Rvci4gV2h5IDN4IHN1YnJvdXRpbmUgd2VyZSBvcmlnaW5hbGx5IHVzZWQgaW4gbG9vcHM/IEV2ZW4gdGhvdWdoCisjIGFlc1tlbmN8ZGVjXSBsYXRlbmN5IHdhcyBvcmlnaW5hbGx5IDYsIGl0IGNvdWxkIGJlIHNjaGVkdWxlZCBvbmx5CisjIGV2ZXJ5ICoybmQqIGN5Y2xlLiBUaHVzIDN4IGludGVybGVhdmUgd2FzIHRoZSBvbmUgcHJvdmlkaW5nIG9wdGltYWwKKyMgdXRpbGl6YXRpb24sIGkuZS4gd2hlbiBzdWJyb3V0aW5lJ3MgdGhyb3VnaHB1dCBpcyB2aXJ0dWFsbHkgc2FtZSBhcworIyBvZiBub24taW50ZXJsZWF2ZWQgc3Vicm91dGluZSBbZm9yIG51bWJlciBvZiBpbnB1dCBibG9ja3MgdXAgdG8gM10uCisjIFRoaXMgaXMgd2h5IGl0IG1ha2VzIG5vIHNlbnNlIHRvIGltcGxlbWVudCAyeCBzdWJyb3V0aW5lLgorIyBhZXNbZW5jfGRlY10gbGF0ZW5jeSBpbiBuZXh0IHByb2Nlc3NvciBnZW5lcmF0aW9uIGlzIDgsIGJ1dCB0aGUKKyMgaW5zdHJ1Y3Rpb25zIGNhbiBiZSBzY2hlZHVsZWQgZXZlcnkgY3ljbGUuIE9wdGltYWwgaW50ZXJsZWF2ZSBmb3IKKyMgbmV3IHByb2Nlc3NvciBpcyB0aGVyZWZvcmUgOHgsIGJ1dCBpdCdzIHVuZmVhc2libGUgdG8gYWNjb21tb2RhdGUgaXQKKyMgaW4gWE1NIHJlZ2lzdGVycyBhZGRyZWFzc2FibGUgaW4gMzItYml0IG1vZGUgYW5kIHRoZXJlZm9yZSA2eCBpcworIyB1c2VkIGluc3RlYWQuLi4KKworc3ViIGFlc25pX2dlbmVyYXRlMworeyBteSAkcD1zaGlmdDsKKworICAgICZmdW5jdGlvbl9iZWdpbl9CKCJfYWVzbmlfJHtwfXJ5cHQzIik7CisJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOworCSZzaHIJCSgkcm91bmRzLDEpOworCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgxNiwka2V5KSk7CisJJmxlYQkJKCRrZXksJkRXUCgzMiwka2V5KSk7CisJJnhvcnBzCQkoJGlub3V0MCwkcm5ka2V5MCk7CisJJnB4b3IJCSgkaW5vdXQxLCRybmRrZXkwKTsKKwkmcHhvcgkJKCRpbm91dDIsJHJuZGtleTApOworCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgwLCRrZXkpKTsKKworICAgICZzZXRfbGFiZWwoIiR7cH0zX2xvb3AiKTsKKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0MSwkcm5ka2V5MSkiOworCSZkZWMJCSgkcm91bmRzKTsKKwlldmFsIiZhZXMke3B9CSgkaW5vdXQyLCRybmRrZXkxKSI7CisJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKDE2LCRrZXkpKTsKKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkwKSI7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0MSwkcm5ka2V5MCkiOworCSZsZWEJCSgka2V5LCZEV1AoMzIsJGtleSkpOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dDIsJHJuZGtleTApIjsKKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisJJmpuegkJKCZsYWJlbCgiJHtwfTNfbG9vcCIpKTsKKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7CisgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0MSwkcm5ka2V5MSkiOworICAgIGV2YWwiJmFlcyR7cH0JKCRpbm91dDIsJHJuZGtleTEpIjsKKyAgICBldmFsIiZhZXMke3B9bGFzdAkoJGlub3V0MCwkcm5ka2V5MCkiOworICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQxLCRybmRrZXkwKSI7CisgICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91dDIsJHJuZGtleTApIjsKKyAgICAmcmV0KCk7CisgICAgJmZ1bmN0aW9uX2VuZF9CKCJfYWVzbmlfJHtwfXJ5cHQzIik7Cit9CisKKyMgNHggaW50ZXJsZWF2ZSBpcyBpbXBsZW1lbnRlZCB0byBpbXByb3ZlIHNtYWxsIGJsb2NrIHBlcmZvcm1hbmNlLAorIyBtb3N0IG5vdGFibHkgW2FuZCBuYXR1cmFsbHldIDQgYmxvY2sgYnkgfjMwJS4gT25lIGNhbiBhcmd1ZSB0aGF0IG9uZQorIyBzaG91bGQgaGF2ZSBpbXBsZW1lbnRlZCA1eCBhcyB3ZWxsLCBidXQgaW1wcm92ZW1lbnQgIHdvdWxkIGJlIDwyMCUsCisjIHNvIGl0J3Mgbm90IHdvcnRoIGl0Li4uCitzdWIgYWVzbmlfZ2VuZXJhdGU0Cit7IG15ICRwPXNoaWZ0OworCisgICAgJmZ1bmN0aW9uX2JlZ2luX0IoIl9hZXNuaV8ke3B9cnlwdDQiKTsKKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKDE2LCRrZXkpKTsKKwkmc2hyCQkoJHJvdW5kcywxKTsKKwkmbGVhCQkoJGtleSwmRFdQKDMyLCRrZXkpKTsKKwkmeG9ycHMJCSgkaW5vdXQwLCRybmRrZXkwKTsKKwkmcHhvcgkJKCRpbm91dDEsJHJuZGtleTApOworCSZweG9yCQkoJGlub3V0Miwkcm5ka2V5MCk7CisJJnB4b3IJCSgkaW5vdXQzLCRybmRrZXkwKTsKKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisKKyAgICAmc2V0X2xhYmVsKCIke3B9NF9sb29wIik7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dDEsJHJuZGtleTEpIjsKKwkmZGVjCQkoJHJvdW5kcyk7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5MSkiOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dDMsJHJuZGtleTEpIjsKKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMTYsJGtleSkpOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKKwlldmFsIiZhZXMke3B9CSgkaW5vdXQxLCRybmRrZXkwKSI7CisJJmxlYQkJKCRrZXksJkRXUCgzMiwka2V5KSk7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5MCkiOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dDMsJHJuZGtleTApIjsKKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisgICAgJmpuegkJKCZsYWJlbCgiJHtwfTRfbG9vcCIpKTsKKworICAgIGV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQxLCRybmRrZXkxKSI7CisgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5MSkiOworICAgIGV2YWwiJmFlcyR7cH0JKCRpbm91dDMsJHJuZGtleTEpIjsKKyAgICBldmFsIiZhZXMke3B9bGFzdAkoJGlub3V0MCwkcm5ka2V5MCkiOworICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQxLCRybmRrZXkwKSI7CisgICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91dDIsJHJuZGtleTApIjsKKyAgICBldmFsIiZhZXMke3B9bGFzdAkoJGlub3V0Mywkcm5ka2V5MCkiOworICAgICZyZXQoKTsKKyAgICAmZnVuY3Rpb25fZW5kX0IoIl9hZXNuaV8ke3B9cnlwdDQiKTsKK30KKworc3ViIGFlc25pX2dlbmVyYXRlNgoreyBteSAkcD1zaGlmdDsKKworICAgICZmdW5jdGlvbl9iZWdpbl9CKCJfYWVzbmlfJHtwfXJ5cHQ2Iik7CisgICAgJnN0YXRpY19sYWJlbCgiX2Flc25pXyR7cH1yeXB0Nl9lbnRlciIpOworCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgwLCRrZXkpKTsKKwkmc2hyCQkoJHJvdW5kcywxKTsKKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMTYsJGtleSkpOworCSZsZWEJCSgka2V5LCZEV1AoMzIsJGtleSkpOworCSZ4b3JwcwkJKCRpbm91dDAsJHJuZGtleTApOworCSZweG9yCQkoJGlub3V0MSwkcm5ka2V5MCk7CSMgcHhvciBkb2VzIGJldHRlciBoZXJlCisJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOworCSZweG9yCQkoJGlub3V0Miwkcm5ka2V5MCk7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0MSwkcm5ka2V5MSkiOworCSZweG9yCQkoJGlub3V0Mywkcm5ka2V5MCk7CisJJmRlYwkJKCRyb3VuZHMpOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dDIsJHJuZGtleTEpIjsKKwkmcHhvcgkJKCRpbm91dDQsJHJuZGtleTApOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dDMsJHJuZGtleTEpIjsKKwkmcHhvcgkJKCRpbm91dDUsJHJuZGtleTApOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dDQsJHJuZGtleTEpIjsKKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0NSwkcm5ka2V5MSkiOworCSZqbXAJCSgmbGFiZWwoIl9hZXNuaV8ke3B9cnlwdDZfZW50ZXIiKSk7CisKKyAgICAmc2V0X2xhYmVsKCIke3B9Nl9sb29wIiwxNik7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dDEsJHJuZGtleTEpIjsKKwkmZGVjCQkoJHJvdW5kcyk7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5MSkiOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dDMsJHJuZGtleTEpIjsKKwlldmFsIiZhZXMke3B9CSgkaW5vdXQ0LCRybmRrZXkxKSI7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0NSwkcm5ka2V5MSkiOworICAgICZzZXRfbGFiZWwoIl9hZXNuaV8ke3B9cnlwdDZfZW50ZXIiLDE2KTsKKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMTYsJGtleSkpOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKKwlldmFsIiZhZXMke3B9CSgkaW5vdXQxLCRybmRrZXkwKSI7CisJJmxlYQkJKCRrZXksJkRXUCgzMiwka2V5KSk7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5MCkiOworCWV2YWwiJmFlcyR7cH0JKCRpbm91dDMsJHJuZGtleTApIjsKKwlldmFsIiZhZXMke3B9CSgkaW5vdXQ0LCRybmRrZXkwKSI7CisJZXZhbCImYWVzJHtwfQkoJGlub3V0NSwkcm5ka2V5MCkiOworCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgwLCRrZXkpKTsKKyAgICAmam56CQkoJmxhYmVsKCIke3B9Nl9sb29wIikpOworCisgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOworICAgIGV2YWwiJmFlcyR7cH0JKCRpbm91dDEsJHJuZGtleTEpIjsKKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQyLCRybmRrZXkxKSI7CisgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0Mywkcm5ka2V5MSkiOworICAgIGV2YWwiJmFlcyR7cH0JKCRpbm91dDQsJHJuZGtleTEpIjsKKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQ1LCRybmRrZXkxKSI7CisgICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91dDAsJHJuZGtleTApIjsKKyAgICBldmFsIiZhZXMke3B9bGFzdAkoJGlub3V0MSwkcm5ka2V5MCkiOworICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQyLCRybmRrZXkwKSI7CisgICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91dDMsJHJuZGtleTApIjsKKyAgICBldmFsIiZhZXMke3B9bGFzdAkoJGlub3V0NCwkcm5ka2V5MCkiOworICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQ1LCRybmRrZXkwKSI7CisgICAgJnJldCgpOworICAgICZmdW5jdGlvbl9lbmRfQigiX2Flc25pXyR7cH1yeXB0NiIpOworfQorJmFlc25pX2dlbmVyYXRlMygiZW5jIikgaWYgKCRQUkVGSVggZXEgImFlc25pIik7CismYWVzbmlfZ2VuZXJhdGUzKCJkZWMiKTsKKyZhZXNuaV9nZW5lcmF0ZTQoImVuYyIpIGlmICgkUFJFRklYIGVxICJhZXNuaSIpOworJmFlc25pX2dlbmVyYXRlNCgiZGVjIik7CismYWVzbmlfZ2VuZXJhdGU2KCJlbmMiKSBpZiAoJFBSRUZJWCBlcSAiYWVzbmkiKTsKKyZhZXNuaV9nZW5lcmF0ZTYoImRlYyIpOworDAoraWYgKCRQUkVGSVggZXEgImFlc25pIikgeworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyB2b2lkIGFlc25pX2VjYl9lbmNyeXB0IChjb25zdCB2b2lkICppbiwgdm9pZCAqb3V0LAorIyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisjICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbmMpOworJmZ1bmN0aW9uX2JlZ2luKCJhZXNuaV9lY2JfZW5jcnlwdCIpOworCSZtb3YJKCRpbnAsJndwYXJhbSgwKSk7CisJJm1vdgkoJG91dCwmd3BhcmFtKDEpKTsKKwkmbW92CSgkbGVuLCZ3cGFyYW0oMikpOworCSZtb3YJKCRrZXksJndwYXJhbSgzKSk7CisJJm1vdgkoJHJvdW5kc18sJndwYXJhbSg0KSk7CisJJmFuZAkoJGxlbiwtMTYpOworCSZqegkoJmxhYmVsKCJlY2JfcmV0IikpOworCSZtb3YJKCRyb3VuZHMsJkRXUCgyNDAsJGtleSkpOworCSZ0ZXN0CSgkcm91bmRzXywkcm91bmRzXyk7CisJJmp6CSgmbGFiZWwoImVjYl9kZWNyeXB0IikpOworCisJJm1vdgkoJGtleV8sJGtleSk7CQkjIGJhY2t1cCAka2V5CisJJm1vdgkoJHJvdW5kc18sJHJvdW5kcyk7CSMgYmFja3VwICRyb3VuZHMKKwkmY21wCSgkbGVuLDB4NjApOworCSZqYgkoJmxhYmVsKCJlY2JfZW5jX3RhaWwiKSk7CisKKwkmbW92ZHF1CSgkaW5vdXQwLCZRV1AoMCwkaW5wKSk7CisJJm1vdmRxdQkoJGlub3V0MSwmUVdQKDB4MTAsJGlucCkpOworCSZtb3ZkcXUJKCRpbm91dDIsJlFXUCgweDIwLCRpbnApKTsKKwkmbW92ZHF1CSgkaW5vdXQzLCZRV1AoMHgzMCwkaW5wKSk7CisJJm1vdmRxdQkoJGlub3V0NCwmUVdQKDB4NDAsJGlucCkpOworCSZtb3ZkcXUJKCRpbm91dDUsJlFXUCgweDUwLCRpbnApKTsKKwkmbGVhCSgkaW5wLCZEV1AoMHg2MCwkaW5wKSk7CisJJnN1YgkoJGxlbiwweDYwKTsKKwkmam1wCSgmbGFiZWwoImVjYl9lbmNfbG9vcDZfZW50ZXIiKSk7CisKKyZzZXRfbGFiZWwoImVjYl9lbmNfbG9vcDYiLDE2KTsKKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisJJm1vdmRxdQkoJGlub3V0MCwmUVdQKDAsJGlucCkpOworCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKKwkmbW92ZHF1CSgkaW5vdXQxLCZRV1AoMHgxMCwkaW5wKSk7CisJJm1vdnVwcwkoJlFXUCgweDIwLCRvdXQpLCRpbm91dDIpOworCSZtb3ZkcXUJKCRpbm91dDIsJlFXUCgweDIwLCRpbnApKTsKKwkmbW92dXBzCSgmUVdQKDB4MzAsJG91dCksJGlub3V0Myk7CisJJm1vdmRxdQkoJGlub3V0MywmUVdQKDB4MzAsJGlucCkpOworCSZtb3Z1cHMJKCZRV1AoMHg0MCwkb3V0KSwkaW5vdXQ0KTsKKwkmbW92ZHF1CSgkaW5vdXQ0LCZRV1AoMHg0MCwkaW5wKSk7CisJJm1vdnVwcwkoJlFXUCgweDUwLCRvdXQpLCRpbm91dDUpOworCSZsZWEJKCRvdXQsJkRXUCgweDYwLCRvdXQpKTsKKwkmbW92ZHF1CSgkaW5vdXQ1LCZRV1AoMHg1MCwkaW5wKSk7CisJJmxlYQkoJGlucCwmRFdQKDB4NjAsJGlucCkpOworJnNldF9sYWJlbCgiZWNiX2VuY19sb29wNl9lbnRlciIpOworCisJJmNhbGwJKCJfYWVzbmlfZW5jcnlwdDYiKTsKKworCSZtb3YJKCRrZXksJGtleV8pOwkJIyByZXN0b3JlICRrZXkKKwkmbW92CSgkcm91bmRzLCRyb3VuZHNfKTsJIyByZXN0b3JlICRyb3VuZHMKKwkmc3ViCSgkbGVuLDB4NjApOworCSZqbmMJKCZsYWJlbCgiZWNiX2VuY19sb29wNiIpKTsKKworCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKwkmbW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisJJm1vdnVwcwkoJlFXUCgweDIwLCRvdXQpLCRpbm91dDIpOworCSZtb3Z1cHMJKCZRV1AoMHgzMCwkb3V0KSwkaW5vdXQzKTsKKwkmbW92dXBzCSgmUVdQKDB4NDAsJG91dCksJGlub3V0NCk7CisJJm1vdnVwcwkoJlFXUCgweDUwLCRvdXQpLCRpbm91dDUpOworCSZsZWEJKCRvdXQsJkRXUCgweDYwLCRvdXQpKTsKKwkmYWRkCSgkbGVuLDB4NjApOworCSZqegkoJmxhYmVsKCJlY2JfcmV0IikpOworCismc2V0X2xhYmVsKCJlY2JfZW5jX3RhaWwiKTsKKwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMCwkaW5wKSk7CisJJmNtcAkoJGxlbiwweDIwKTsKKwkmamIJKCZsYWJlbCgiZWNiX2VuY19vbmUiKSk7CisJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAsJGlucCkpOworCSZqZQkoJmxhYmVsKCJlY2JfZW5jX3R3byIpKTsKKwkmbW92dXBzCSgkaW5vdXQyLCZRV1AoMHgyMCwkaW5wKSk7CisJJmNtcAkoJGxlbiwweDQwKTsKKwkmamIJKCZsYWJlbCgiZWNiX2VuY190aHJlZSIpKTsKKwkmbW92dXBzCSgkaW5vdXQzLCZRV1AoMHgzMCwkaW5wKSk7CisJJmplCSgmbGFiZWwoImVjYl9lbmNfZm91ciIpKTsKKwkmbW92dXBzCSgkaW5vdXQ0LCZRV1AoMHg0MCwkaW5wKSk7CisJJnhvcnBzCSgkaW5vdXQ1LCRpbm91dDUpOworCSZjYWxsCSgiX2Flc25pX2VuY3J5cHQ2Iik7CisJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOworCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKKwkmbW92dXBzCSgmUVdQKDB4MjAsJG91dCksJGlub3V0Mik7CisJJm1vdnVwcwkoJlFXUCgweDMwLCRvdXQpLCRpbm91dDMpOworCSZtb3Z1cHMJKCZRV1AoMHg0MCwkb3V0KSwkaW5vdXQ0KTsKKwlqbXAJKCZsYWJlbCgiZWNiX3JldCIpKTsKKworJnNldF9sYWJlbCgiZWNiX2VuY19vbmUiLDE2KTsKKwlpZiAoJGlubGluZSkKKwl7ICAgJmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImVuYyIpOwl9CisJZWxzZQorCXsgICAmY2FsbAkoIl9hZXNuaV9lbmNyeXB0MSIpOwl9CisJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOworCSZqbXAJKCZsYWJlbCgiZWNiX3JldCIpKTsKKworJnNldF9sYWJlbCgiZWNiX2VuY190d28iLDE2KTsKKwkmeG9ycHMJKCRpbm91dDIsJGlub3V0Mik7CisJJmNhbGwJKCJfYWVzbmlfZW5jcnlwdDMiKTsKKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisJJm1vdnVwcwkoJlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOworCSZqbXAJKCZsYWJlbCgiZWNiX3JldCIpKTsKKworJnNldF9sYWJlbCgiZWNiX2VuY190aHJlZSIsMTYpOworCSZjYWxsCSgiX2Flc25pX2VuY3J5cHQzIik7CisJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOworCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKKwkmbW92dXBzCSgmUVdQKDB4MjAsJG91dCksJGlub3V0Mik7CisJJmptcAkoJmxhYmVsKCJlY2JfcmV0IikpOworCismc2V0X2xhYmVsKCJlY2JfZW5jX2ZvdXIiLDE2KTsKKwkmY2FsbAkoIl9hZXNuaV9lbmNyeXB0NCIpOworCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKwkmbW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisJJm1vdnVwcwkoJlFXUCgweDIwLCRvdXQpLCRpbm91dDIpOworCSZtb3Z1cHMJKCZRV1AoMHgzMCwkb3V0KSwkaW5vdXQzKTsKKwkmam1wCSgmbGFiZWwoImVjYl9yZXQiKSk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCismc2V0X2xhYmVsKCJlY2JfZGVjcnlwdCIsMTYpOworCSZtb3YJKCRrZXlfLCRrZXkpOwkJIyBiYWNrdXAgJGtleQorCSZtb3YJKCRyb3VuZHNfLCRyb3VuZHMpOwkjIGJhY2t1cCAkcm91bmRzCisJJmNtcAkoJGxlbiwweDYwKTsKKwkmamIJKCZsYWJlbCgiZWNiX2RlY190YWlsIikpOworCisJJm1vdmRxdQkoJGlub3V0MCwmUVdQKDAsJGlucCkpOworCSZtb3ZkcXUJKCRpbm91dDEsJlFXUCgweDEwLCRpbnApKTsKKwkmbW92ZHF1CSgkaW5vdXQyLCZRV1AoMHgyMCwkaW5wKSk7CisJJm1vdmRxdQkoJGlub3V0MywmUVdQKDB4MzAsJGlucCkpOworCSZtb3ZkcXUJKCRpbm91dDQsJlFXUCgweDQwLCRpbnApKTsKKwkmbW92ZHF1CSgkaW5vdXQ1LCZRV1AoMHg1MCwkaW5wKSk7CisJJmxlYQkoJGlucCwmRFdQKDB4NjAsJGlucCkpOworCSZzdWIJKCRsZW4sMHg2MCk7CisJJmptcAkoJmxhYmVsKCJlY2JfZGVjX2xvb3A2X2VudGVyIikpOworCismc2V0X2xhYmVsKCJlY2JfZGVjX2xvb3A2IiwxNik7CisJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOworCSZtb3ZkcXUJKCRpbm91dDAsJlFXUCgwLCRpbnApKTsKKwkmbW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisJJm1vdmRxdQkoJGlub3V0MSwmUVdQKDB4MTAsJGlucCkpOworCSZtb3Z1cHMJKCZRV1AoMHgyMCwkb3V0KSwkaW5vdXQyKTsKKwkmbW92ZHF1CSgkaW5vdXQyLCZRV1AoMHgyMCwkaW5wKSk7CisJJm1vdnVwcwkoJlFXUCgweDMwLCRvdXQpLCRpbm91dDMpOworCSZtb3ZkcXUJKCRpbm91dDMsJlFXUCgweDMwLCRpbnApKTsKKwkmbW92dXBzCSgmUVdQKDB4NDAsJG91dCksJGlub3V0NCk7CisJJm1vdmRxdQkoJGlub3V0NCwmUVdQKDB4NDAsJGlucCkpOworCSZtb3Z1cHMJKCZRV1AoMHg1MCwkb3V0KSwkaW5vdXQ1KTsKKwkmbGVhCSgkb3V0LCZEV1AoMHg2MCwkb3V0KSk7CisJJm1vdmRxdQkoJGlub3V0NSwmUVdQKDB4NTAsJGlucCkpOworCSZsZWEJKCRpbnAsJkRXUCgweDYwLCRpbnApKTsKKyZzZXRfbGFiZWwoImVjYl9kZWNfbG9vcDZfZW50ZXIiKTsKKworCSZjYWxsCSgiX2Flc25pX2RlY3J5cHQ2Iik7CisKKwkmbW92CSgka2V5LCRrZXlfKTsJCSMgcmVzdG9yZSAka2V5CisJJm1vdgkoJHJvdW5kcywkcm91bmRzXyk7CSMgcmVzdG9yZSAkcm91bmRzCisJJnN1YgkoJGxlbiwweDYwKTsKKwkmam5jCSgmbGFiZWwoImVjYl9kZWNfbG9vcDYiKSk7CisKKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisJJm1vdnVwcwkoJlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOworCSZtb3Z1cHMJKCZRV1AoMHgyMCwkb3V0KSwkaW5vdXQyKTsKKwkmbW92dXBzCSgmUVdQKDB4MzAsJG91dCksJGlub3V0Myk7CisJJm1vdnVwcwkoJlFXUCgweDQwLCRvdXQpLCRpbm91dDQpOworCSZtb3Z1cHMJKCZRV1AoMHg1MCwkb3V0KSwkaW5vdXQ1KTsKKwkmbGVhCSgkb3V0LCZEV1AoMHg2MCwkb3V0KSk7CisJJmFkZAkoJGxlbiwweDYwKTsKKwkmanoJKCZsYWJlbCgiZWNiX3JldCIpKTsKKworJnNldF9sYWJlbCgiZWNiX2RlY190YWlsIik7CisJJm1vdnVwcwkoJGlub3V0MCwmUVdQKDAsJGlucCkpOworCSZjbXAJKCRsZW4sMHgyMCk7CisJJmpiCSgmbGFiZWwoImVjYl9kZWNfb25lIikpOworCSZtb3Z1cHMJKCRpbm91dDEsJlFXUCgweDEwLCRpbnApKTsKKwkmamUJKCZsYWJlbCgiZWNiX2RlY190d28iKSk7CisJJm1vdnVwcwkoJGlub3V0MiwmUVdQKDB4MjAsJGlucCkpOworCSZjbXAJKCRsZW4sMHg0MCk7CisJJmpiCSgmbGFiZWwoImVjYl9kZWNfdGhyZWUiKSk7CisJJm1vdnVwcwkoJGlub3V0MywmUVdQKDB4MzAsJGlucCkpOworCSZqZQkoJmxhYmVsKCJlY2JfZGVjX2ZvdXIiKSk7CisJJm1vdnVwcwkoJGlub3V0NCwmUVdQKDB4NDAsJGlucCkpOworCSZ4b3JwcwkoJGlub3V0NSwkaW5vdXQ1KTsKKwkmY2FsbAkoIl9hZXNuaV9kZWNyeXB0NiIpOworCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKwkmbW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisJJm1vdnVwcwkoJlFXUCgweDIwLCRvdXQpLCRpbm91dDIpOworCSZtb3Z1cHMJKCZRV1AoMHgzMCwkb3V0KSwkaW5vdXQzKTsKKwkmbW92dXBzCSgmUVdQKDB4NDAsJG91dCksJGlub3V0NCk7CisJJmptcAkoJmxhYmVsKCJlY2JfcmV0IikpOworCismc2V0X2xhYmVsKCJlY2JfZGVjX29uZSIsMTYpOworCWlmICgkaW5saW5lKQorCXsgICAmYWVzbmlfaW5saW5lX2dlbmVyYXRlMSgiZGVjIik7CX0KKwllbHNlCisJeyAgICZjYWxsCSgiX2Flc25pX2RlY3J5cHQxIik7CX0KKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisJJmptcAkoJmxhYmVsKCJlY2JfcmV0IikpOworCismc2V0X2xhYmVsKCJlY2JfZGVjX3R3byIsMTYpOworCSZ4b3JwcwkoJGlub3V0MiwkaW5vdXQyKTsKKwkmY2FsbAkoIl9hZXNuaV9kZWNyeXB0MyIpOworCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKwkmbW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisJJmptcAkoJmxhYmVsKCJlY2JfcmV0IikpOworCismc2V0X2xhYmVsKCJlY2JfZGVjX3RocmVlIiwxNik7CisJJmNhbGwJKCJfYWVzbmlfZGVjcnlwdDMiKTsKKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisJJm1vdnVwcwkoJlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOworCSZtb3Z1cHMJKCZRV1AoMHgyMCwkb3V0KSwkaW5vdXQyKTsKKwkmam1wCSgmbGFiZWwoImVjYl9yZXQiKSk7CisKKyZzZXRfbGFiZWwoImVjYl9kZWNfZm91ciIsMTYpOworCSZjYWxsCSgiX2Flc25pX2RlY3J5cHQ0Iik7CisJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOworCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKKwkmbW92dXBzCSgmUVdQKDB4MjAsJG91dCksJGlub3V0Mik7CisJJm1vdnVwcwkoJlFXUCgweDMwLCRvdXQpLCRpbm91dDMpOworCismc2V0X2xhYmVsKCJlY2JfcmV0Iik7CismZnVuY3Rpb25fZW5kKCJhZXNuaV9lY2JfZW5jcnlwdCIpOworDAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyB2b2lkIGFlc25pX2NjbTY0X1tlbnxkZV1jcnlwdF9ibG9ja3MgKGNvbnN0IHZvaWQgKmluLCB2b2lkICpvdXQsCisjICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBibG9ja3MsIGNvbnN0IEFFU19LRVkgKmtleSwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaXZlYyxjaGFyICpjbWFjKTsKKyMKKyMgSGFuZGxlcyBvbmx5IGNvbXBsZXRlIGJsb2Nrcywgb3BlcmF0ZXMgb24gNjQtYml0IGNvdW50ZXIgYW5kCisjIGRvZXMgbm90IHVwZGF0ZSAqaXZlYyEgTm9yIGRvZXMgaXQgZmluYWxpemUgQ01BQyB2YWx1ZQorIyAoc2VlIGVuZ2luZS9lbmdfYWVzbmkuYyBmb3IgZGV0YWlscykKKyMKK3sgbXkgJGNtYWM9JGlub3V0MTsKKyZmdW5jdGlvbl9iZWdpbigiYWVzbmlfY2NtNjRfZW5jcnlwdF9ibG9ja3MiKTsKKwkmbW92CSgkaW5wLCZ3cGFyYW0oMCkpOworCSZtb3YJKCRvdXQsJndwYXJhbSgxKSk7CisJJm1vdgkoJGxlbiwmd3BhcmFtKDIpKTsKKwkmbW92CSgka2V5LCZ3cGFyYW0oMykpOworCSZtb3YJKCRyb3VuZHNfLCZ3cGFyYW0oNCkpOworCSZtb3YJKCRyb3VuZHMsJndwYXJhbSg1KSk7CisJJm1vdgkoJGtleV8sImVzcCIpOworCSZzdWIJKCJlc3AiLDYwKTsKKwkmYW5kCSgiZXNwIiwtMTYpOwkJCSMgYWxpZ24gc3RhY2sKKwkmbW92CSgmRFdQKDQ4LCJlc3AiKSwka2V5Xyk7CisKKwkmbW92ZHF1CSgkaXZlYywmUVdQKDAsJHJvdW5kc18pKTsJIyBsb2FkIGl2ZWMKKwkmbW92ZHF1CSgkY21hYywmUVdQKDAsJHJvdW5kcykpOwkjIGxvYWQgY21hYworCSZtb3YJKCRyb3VuZHMsJkRXUCgyNDAsJGtleSkpOworCisJIyBjb21wb3NlIGJ5dGUtc3dhcCBjb250cm9sIG1hc2sgZm9yIHBzaHVmYiBvbiBzdGFjaworCSZtb3YJKCZEV1AoMCwiZXNwIiksMHgwYzBkMGUwZik7CisJJm1vdgkoJkRXUCg0LCJlc3AiKSwweDA4MDkwYTBiKTsKKwkmbW92CSgmRFdQKDgsImVzcCIpLDB4MDQwNTA2MDcpOworCSZtb3YJKCZEV1AoMTIsImVzcCIpLDB4MDAwMTAyMDMpOworCisJIyBjb21wb3NlIGNvdW50ZXIgaW5jcmVtZW50IHZlY3RvciBvbiBzdGFjaworCSZtb3YJKCRyb3VuZHNfLDEpOworCSZ4b3IJKCRrZXlfLCRrZXlfKTsKKwkmbW92CSgmRFdQKDE2LCJlc3AiKSwkcm91bmRzXyk7CisJJm1vdgkoJkRXUCgyMCwiZXNwIiksJGtleV8pOworCSZtb3YJKCZEV1AoMjQsImVzcCIpLCRrZXlfKTsKKwkmbW92CSgmRFdQKDI4LCJlc3AiKSwka2V5Xyk7CisKKwkmc2hyCSgkcm91bmRzLDEpOworCSZsZWEJKCRrZXlfLCZEV1AoMCwka2V5KSk7CisJJm1vdmRxYQkoJGlub3V0MywmUVdQKDAsImVzcCIpKTsKKwkmbW92ZHFhCSgkaW5vdXQwLCRpdmVjKTsKKwkmbW92CSgkcm91bmRzXywkcm91bmRzKTsKKwkmcHNodWZiCSgkaXZlYywkaW5vdXQzKTsKKworJnNldF9sYWJlbCgiY2NtNjRfZW5jX291dGVyIik7CisJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDAsJGtleV8pKTsKKwkmbW92CQkoJHJvdW5kcywkcm91bmRzXyk7CisJJm1vdnVwcwkJKCRpbjAsJlFXUCgwLCRpbnApKTsKKworCSZ4b3JwcwkJKCRpbm91dDAsJHJuZGtleTApOworCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgxNiwka2V5XykpOworCSZ4b3JwcwkJKCRybmRrZXkwLCRpbjApOworCSZsZWEJCSgka2V5LCZEV1AoMzIsJGtleV8pKTsKKwkmeG9ycHMJCSgkY21hYywkcm5ka2V5MCk7CQkjIGNtYWNePWlucAorCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgwLCRrZXkpKTsKKworJnNldF9sYWJlbCgiY2NtNjRfZW5jMl9sb29wIik7CisJJmFlc2VuYwkJKCRpbm91dDAsJHJuZGtleTEpOworCSZkZWMJCSgkcm91bmRzKTsKKwkmYWVzZW5jCQkoJGNtYWMsJHJuZGtleTEpOworCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgxNiwka2V5KSk7CisJJmFlc2VuYwkJKCRpbm91dDAsJHJuZGtleTApOworCSZsZWEJCSgka2V5LCZEV1AoMzIsJGtleSkpOworCSZhZXNlbmMJCSgkY21hYywkcm5ka2V5MCk7CisJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOworCSZqbnoJCSgmbGFiZWwoImNjbTY0X2VuYzJfbG9vcCIpKTsKKwkmYWVzZW5jCQkoJGlub3V0MCwkcm5ka2V5MSk7CisJJmFlc2VuYwkJKCRjbWFjLCRybmRrZXkxKTsKKwkmcGFkZHEJCSgkaXZlYywmUVdQKDE2LCJlc3AiKSk7CisJJmFlc2VuY2xhc3QJKCRpbm91dDAsJHJuZGtleTApOworCSZhZXNlbmNsYXN0CSgkY21hYywkcm5ka2V5MCk7CisKKwkmZGVjCSgkbGVuKTsKKwkmbGVhCSgkaW5wLCZEV1AoMTYsJGlucCkpOworCSZ4b3JwcwkoJGluMCwkaW5vdXQwKTsJCQkjIGlucF49RShpdmVjKQorCSZtb3ZkcWEJKCRpbm91dDAsJGl2ZWMpOworCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW4wKTsJCSMgc2F2ZSBvdXRwdXQKKwkmbGVhCSgkb3V0LCZEV1AoMTYsJG91dCkpOworCSZwc2h1ZmIJKCRpbm91dDAsJGlub3V0Myk7CisJJmpuegkoJmxhYmVsKCJjY202NF9lbmNfb3V0ZXIiKSk7CisKKwkmbW92CSgiZXNwIiwmRFdQKDQ4LCJlc3AiKSk7CisJJm1vdgkoJG91dCwmd3BhcmFtKDUpKTsKKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGNtYWMpOworJmZ1bmN0aW9uX2VuZCgiYWVzbmlfY2NtNjRfZW5jcnlwdF9ibG9ja3MiKTsKKworJmZ1bmN0aW9uX2JlZ2luKCJhZXNuaV9jY202NF9kZWNyeXB0X2Jsb2NrcyIpOworCSZtb3YJKCRpbnAsJndwYXJhbSgwKSk7CisJJm1vdgkoJG91dCwmd3BhcmFtKDEpKTsKKwkmbW92CSgkbGVuLCZ3cGFyYW0oMikpOworCSZtb3YJKCRrZXksJndwYXJhbSgzKSk7CisJJm1vdgkoJHJvdW5kc18sJndwYXJhbSg0KSk7CisJJm1vdgkoJHJvdW5kcywmd3BhcmFtKDUpKTsKKwkmbW92CSgka2V5XywiZXNwIik7CisJJnN1YgkoImVzcCIsNjApOworCSZhbmQJKCJlc3AiLC0xNik7CQkJIyBhbGlnbiBzdGFjaworCSZtb3YJKCZEV1AoNDgsImVzcCIpLCRrZXlfKTsKKworCSZtb3ZkcXUJKCRpdmVjLCZRV1AoMCwkcm91bmRzXykpOwkjIGxvYWQgaXZlYworCSZtb3ZkcXUJKCRjbWFjLCZRV1AoMCwkcm91bmRzKSk7CSMgbG9hZCBjbWFjCisJJm1vdgkoJHJvdW5kcywmRFdQKDI0MCwka2V5KSk7CisKKwkjIGNvbXBvc2UgYnl0ZS1zd2FwIGNvbnRyb2wgbWFzayBmb3IgcHNodWZiIG9uIHN0YWNrCisJJm1vdgkoJkRXUCgwLCJlc3AiKSwweDBjMGQwZTBmKTsKKwkmbW92CSgmRFdQKDQsImVzcCIpLDB4MDgwOTBhMGIpOworCSZtb3YJKCZEV1AoOCwiZXNwIiksMHgwNDA1MDYwNyk7CisJJm1vdgkoJkRXUCgxMiwiZXNwIiksMHgwMDAxMDIwMyk7CisKKwkjIGNvbXBvc2UgY291bnRlciBpbmNyZW1lbnQgdmVjdG9yIG9uIHN0YWNrCisJJm1vdgkoJHJvdW5kc18sMSk7CisJJnhvcgkoJGtleV8sJGtleV8pOworCSZtb3YJKCZEV1AoMTYsImVzcCIpLCRyb3VuZHNfKTsKKwkmbW92CSgmRFdQKDIwLCJlc3AiKSwka2V5Xyk7CisJJm1vdgkoJkRXUCgyNCwiZXNwIiksJGtleV8pOworCSZtb3YJKCZEV1AoMjgsImVzcCIpLCRrZXlfKTsKKworCSZtb3ZkcWEJKCRpbm91dDMsJlFXUCgwLCJlc3AiKSk7CSMgYnN3YXAgbWFzaworCSZtb3ZkcWEJKCRpbm91dDAsJGl2ZWMpOworCisJJm1vdgkoJGtleV8sJGtleSk7CisJJm1vdgkoJHJvdW5kc18sJHJvdW5kcyk7CisKKwkmcHNodWZiCSgkaXZlYywkaW5vdXQzKTsKKwlpZiAoJGlubGluZSkKKwl7ICAgJmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImVuYyIpOwl9CisJZWxzZQorCXsgICAmY2FsbAkoIl9hZXNuaV9lbmNyeXB0MSIpOwl9CisJJm1vdnVwcwkoJGluMCwmUVdQKDAsJGlucCkpOwkJIyBsb2FkIGlucAorCSZwYWRkcQkoJGl2ZWMsJlFXUCgxNiwiZXNwIikpOworCSZsZWEJKCRpbnAsJlFXUCgxNiwkaW5wKSk7CisJJmptcAkoJmxhYmVsKCJjY202NF9kZWNfb3V0ZXIiKSk7CisKKyZzZXRfbGFiZWwoImNjbTY0X2RlY19vdXRlciIsMTYpOworCSZ4b3JwcwkoJGluMCwkaW5vdXQwKTsJCQkjIGlucCBePSBFKGl2ZWMpCisJJm1vdmRxYQkoJGlub3V0MCwkaXZlYyk7CisJJm1vdgkoJHJvdW5kcywkcm91bmRzXyk7CisJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbjApOwkJIyBzYXZlIG91dHB1dAorCSZsZWEJKCRvdXQsJkRXUCgxNiwkb3V0KSk7CisJJnBzaHVmYgkoJGlub3V0MCwkaW5vdXQzKTsKKworCSZzdWIJKCRsZW4sMSk7CisJJmp6CSgmbGFiZWwoImNjbTY0X2RlY19icmVhayIpKTsKKworCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgwLCRrZXlfKSk7CisJJnNocgkJKCRyb3VuZHMsMSk7CisJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKDE2LCRrZXlfKSk7CisJJnhvcnBzCQkoJGluMCwkcm5ka2V5MCk7CisJJmxlYQkJKCRrZXksJkRXUCgzMiwka2V5XykpOworCSZ4b3JwcwkJKCRpbm91dDAsJHJuZGtleTApOworCSZ4b3JwcwkJKCRjbWFjLCRpbjApOwkJIyBjbWFjXj1vdXQKKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisKKyZzZXRfbGFiZWwoImNjbTY0X2RlYzJfbG9vcCIpOworCSZhZXNlbmMJCSgkaW5vdXQwLCRybmRrZXkxKTsKKwkmZGVjCQkoJHJvdW5kcyk7CisJJmFlc2VuYwkJKCRjbWFjLCRybmRrZXkxKTsKKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMTYsJGtleSkpOworCSZhZXNlbmMJCSgkaW5vdXQwLCRybmRrZXkwKTsKKwkmbGVhCQkoJGtleSwmRFdQKDMyLCRrZXkpKTsKKwkmYWVzZW5jCQkoJGNtYWMsJHJuZGtleTApOworCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgwLCRrZXkpKTsKKwkmam56CQkoJmxhYmVsKCJjY202NF9kZWMyX2xvb3AiKSk7CisJJm1vdnVwcwkJKCRpbjAsJlFXUCgwLCRpbnApKTsJIyBsb2FkIGlucAorCSZwYWRkcQkJKCRpdmVjLCZRV1AoMTYsImVzcCIpKTsKKwkmYWVzZW5jCQkoJGlub3V0MCwkcm5ka2V5MSk7CisJJmFlc2VuYwkJKCRjbWFjLCRybmRrZXkxKTsKKwkmbGVhCQkoJGlucCwmUVdQKDE2LCRpbnApKTsKKwkmYWVzZW5jbGFzdAkoJGlub3V0MCwkcm5ka2V5MCk7CisJJmFlc2VuY2xhc3QJKCRjbWFjLCRybmRrZXkwKTsKKwkmam1wCSgmbGFiZWwoImNjbTY0X2RlY19vdXRlciIpKTsKKworJnNldF9sYWJlbCgiY2NtNjRfZGVjX2JyZWFrIiwxNik7CisJJm1vdgkoJGtleSwka2V5Xyk7CisJaWYgKCRpbmxpbmUpCisJeyAgICZhZXNuaV9pbmxpbmVfZ2VuZXJhdGUxKCJlbmMiLCRjbWFjLCRpbjApOwl9CisJZWxzZQorCXsgICAmY2FsbAkoIl9hZXNuaV9lbmNyeXB0MSIsJGNtYWMpOwl9CisKKwkmbW92CSgiZXNwIiwmRFdQKDQ4LCJlc3AiKSk7CisJJm1vdgkoJG91dCwmd3BhcmFtKDUpKTsKKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGNtYWMpOworJmZ1bmN0aW9uX2VuZCgiYWVzbmlfY2NtNjRfZGVjcnlwdF9ibG9ja3MiKTsKK30KKwwKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgdm9pZCBhZXNuaV9jdHIzMl9lbmNyeXB0X2Jsb2NrcyAoY29uc3Qgdm9pZCAqaW4sIHZvaWQgKm91dCwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJsb2NrcywgY29uc3QgQUVTX0tFWSAqa2V5LAorIyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppdmVjKTsKKyMKKyMgSGFuZGxlcyBvbmx5IGNvbXBsZXRlIGJsb2Nrcywgb3BlcmF0ZXMgb24gMzItYml0IGNvdW50ZXIgYW5kCisjIGRvZXMgbm90IHVwZGF0ZSAqaXZlYyEgKHNlZSBlbmdpbmUvZW5nX2Flc25pLmMgZm9yIGRldGFpbHMpCisjCisjIHN0YWNrIGxheW91dDoKKyMJMAlwc2h1ZmIgbWFzaworIwkxNgl2ZWN0b3IgYWRkZW5kOiAwLDYsNiw2CisjIAkzMgljb3VudGVyLWxlc3MgaXZlYworIwk0OAkxc3QgdHJpcGxldCBvZiBjb3VudGVyIHZlY3RvcgorIwk2NAkybmQgdHJpcGxldCBvZiBjb3VudGVyIHZlY3RvcgorIwk4MAlzYXZlZCAlZXNwCisKKyZmdW5jdGlvbl9iZWdpbigiYWVzbmlfY3RyMzJfZW5jcnlwdF9ibG9ja3MiKTsKKwkmbW92CSgkaW5wLCZ3cGFyYW0oMCkpOworCSZtb3YJKCRvdXQsJndwYXJhbSgxKSk7CisJJm1vdgkoJGxlbiwmd3BhcmFtKDIpKTsKKwkmbW92CSgka2V5LCZ3cGFyYW0oMykpOworCSZtb3YJKCRyb3VuZHNfLCZ3cGFyYW0oNCkpOworCSZtb3YJKCRrZXlfLCJlc3AiKTsKKwkmc3ViCSgiZXNwIiw4OCk7CisJJmFuZAkoImVzcCIsLTE2KTsJCQkjIGFsaWduIHN0YWNrCisJJm1vdgkoJkRXUCg4MCwiZXNwIiksJGtleV8pOworCisJJmNtcAkoJGxlbiwxKTsKKwkmamUJKCZsYWJlbCgiY3RyMzJfb25lX3Nob3J0Y3V0IikpOworCisJJm1vdmRxdQkoJGlub3V0NSwmUVdQKDAsJHJvdW5kc18pKTsJIyBsb2FkIGl2ZWMKKworCSMgY29tcG9zZSBieXRlLXN3YXAgY29udHJvbCBtYXNrIGZvciBwc2h1ZmIgb24gc3RhY2sKKwkmbW92CSgmRFdQKDAsImVzcCIpLDB4MGMwZDBlMGYpOworCSZtb3YJKCZEV1AoNCwiZXNwIiksMHgwODA5MGEwYik7CisJJm1vdgkoJkRXUCg4LCJlc3AiKSwweDA0MDUwNjA3KTsKKwkmbW92CSgmRFdQKDEyLCJlc3AiKSwweDAwMDEwMjAzKTsKKworCSMgY29tcG9zZSBjb3VudGVyIGluY3JlbWVudCB2ZWN0b3Igb24gc3RhY2sKKwkmbW92CSgkcm91bmRzLDYpOworCSZ4b3IJKCRrZXlfLCRrZXlfKTsKKwkmbW92CSgmRFdQKDE2LCJlc3AiKSwkcm91bmRzKTsKKwkmbW92CSgmRFdQKDIwLCJlc3AiKSwkcm91bmRzKTsKKwkmbW92CSgmRFdQKDI0LCJlc3AiKSwkcm91bmRzKTsKKwkmbW92CSgmRFdQKDI4LCJlc3AiKSwka2V5Xyk7CisKKwkmcGV4dHJkCSgkcm91bmRzXywkaW5vdXQ1LDMpOwkJIyBwdWxsIDMyLWJpdCBjb3VudGVyCisJJnBpbnNyZAkoJGlub3V0NSwka2V5XywzKTsJCSMgd2lwZSAzMi1iaXQgY291bnRlcgorCisJJm1vdgkoJHJvdW5kcywmRFdQKDI0MCwka2V5KSk7CSMga2V5LT5yb3VuZHMKKworCSMgY29tcG9zZSAyIHZlY3RvcnMgb2YgM3gzMi1iaXQgY291bnRlcnMKKwkmYnN3YXAJKCRyb3VuZHNfKTsKKwkmcHhvcgkoJHJuZGtleTEsJHJuZGtleTEpOworCSZweG9yCSgkcm5ka2V5MCwkcm5ka2V5MCk7CisJJm1vdmRxYQkoJGlub3V0MCwmUVdQKDAsImVzcCIpKTsJIyBsb2FkIGJ5dGUtc3dhcCBtYXNrCisJJnBpbnNyZAkoJHJuZGtleTEsJHJvdW5kc18sMCk7CisJJmxlYQkoJGtleV8sJkRXUCgzLCRyb3VuZHNfKSk7CisJJnBpbnNyZAkoJHJuZGtleTAsJGtleV8sMCk7CisJJmluYwkoJHJvdW5kc18pOworCSZwaW5zcmQJKCRybmRrZXkxLCRyb3VuZHNfLDEpOworCSZpbmMJKCRrZXlfKTsKKwkmcGluc3JkCSgkcm5ka2V5MCwka2V5XywxKTsKKwkmaW5jCSgkcm91bmRzXyk7CisJJnBpbnNyZAkoJHJuZGtleTEsJHJvdW5kc18sMik7CisJJmluYwkoJGtleV8pOworCSZwaW5zcmQJKCRybmRrZXkwLCRrZXlfLDIpOworCSZtb3ZkcWEJKCZRV1AoNDgsImVzcCIpLCRybmRrZXkxKTsJIyBzYXZlIDFzdCB0cmlwbGV0CisJJnBzaHVmYgkoJHJuZGtleTEsJGlub3V0MCk7CQkjIGJ5dGUgc3dhcAorCSZtb3ZkcWEJKCZRV1AoNjQsImVzcCIpLCRybmRrZXkwKTsJIyBzYXZlIDJuZCB0cmlwbGV0CisJJnBzaHVmYgkoJHJuZGtleTAsJGlub3V0MCk7CQkjIGJ5dGUgc3dhcAorCisJJnBzaHVmZAkoJGlub3V0MCwkcm5ka2V5MSwzPDw2KTsJIyBwbGFjZSBjb3VudGVyIHRvIHVwcGVyIGR3b3JkCisJJnBzaHVmZAkoJGlub3V0MSwkcm5ka2V5MSwyPDw2KTsKKwkmY21wCSgkbGVuLDYpOworCSZqYgkoJmxhYmVsKCJjdHIzMl90YWlsIikpOworCSZtb3ZkcWEJKCZRV1AoMzIsImVzcCIpLCRpbm91dDUpOwkjIHNhdmUgY291bnRlci1sZXNzIGl2ZWMKKwkmc2hyCSgkcm91bmRzLDEpOworCSZtb3YJKCRrZXlfLCRrZXkpOwkJCSMgYmFja3VwICRrZXkKKwkmbW92CSgkcm91bmRzXywkcm91bmRzKTsJCSMgYmFja3VwICRyb3VuZHMKKwkmc3ViCSgkbGVuLDYpOworCSZqbXAJKCZsYWJlbCgiY3RyMzJfbG9vcDYiKSk7CisKKyZzZXRfbGFiZWwoImN0cjMyX2xvb3A2IiwxNik7CisJJnBzaHVmZAkoJGlub3V0Miwkcm5ka2V5MSwxPDw2KTsKKwkmbW92ZHFhCSgkcm5ka2V5MSwmUVdQKDMyLCJlc3AiKSk7CSMgcHVsbCBjb3VudGVyLWxlc3MgaXZlYworCSZwc2h1ZmQJKCRpbm91dDMsJHJuZGtleTAsMzw8Nik7CisJJnBvcgkoJGlub3V0MCwkcm5ka2V5MSk7CQkjIG1lcmdlIGNvdW50ZXItbGVzcyBpdmVjCisJJnBzaHVmZAkoJGlub3V0NCwkcm5ka2V5MCwyPDw2KTsKKwkmcG9yCSgkaW5vdXQxLCRybmRrZXkxKTsKKwkmcHNodWZkCSgkaW5vdXQ1LCRybmRrZXkwLDE8PDYpOworCSZwb3IJKCRpbm91dDIsJHJuZGtleTEpOworCSZwb3IJKCRpbm91dDMsJHJuZGtleTEpOworCSZwb3IJKCRpbm91dDQsJHJuZGtleTEpOworCSZwb3IJKCRpbm91dDUsJHJuZGtleTEpOworCisJIyBpbmxpbmluZyBfYWVzbmlfZW5jcnlwdDYncyBwcm9sb2d1ZSBnaXZlcyB+NCUgaW1wcm92ZW1lbnQuLi4KKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5XykpOworCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgxNiwka2V5XykpOworCSZsZWEJCSgka2V5LCZEV1AoMzIsJGtleV8pKTsKKwkmZGVjCQkoJHJvdW5kcyk7CisJJnB4b3IJCSgkaW5vdXQwLCRybmRrZXkwKTsKKwkmcHhvcgkJKCRpbm91dDEsJHJuZGtleTApOworCSZhZXNlbmMJCSgkaW5vdXQwLCRybmRrZXkxKTsKKwkmcHhvcgkJKCRpbm91dDIsJHJuZGtleTApOworCSZhZXNlbmMJCSgkaW5vdXQxLCRybmRrZXkxKTsKKwkmcHhvcgkJKCRpbm91dDMsJHJuZGtleTApOworCSZhZXNlbmMJCSgkaW5vdXQyLCRybmRrZXkxKTsKKwkmcHhvcgkJKCRpbm91dDQsJHJuZGtleTApOworCSZhZXNlbmMJCSgkaW5vdXQzLCRybmRrZXkxKTsKKwkmcHhvcgkJKCRpbm91dDUsJHJuZGtleTApOworCSZhZXNlbmMJCSgkaW5vdXQ0LCRybmRrZXkxKTsKKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisJJmFlc2VuYwkJKCRpbm91dDUsJHJuZGtleTEpOworCisJJmNhbGwJCSgmbGFiZWwoIl9hZXNuaV9lbmNyeXB0Nl9lbnRlciIpKTsKKworCSZtb3Z1cHMJKCRybmRrZXkxLCZRV1AoMCwkaW5wKSk7CisJJm1vdnVwcwkoJHJuZGtleTAsJlFXUCgweDEwLCRpbnApKTsKKwkmeG9ycHMJKCRpbm91dDAsJHJuZGtleTEpOworCSZtb3Z1cHMJKCRybmRrZXkxLCZRV1AoMHgyMCwkaW5wKSk7CisJJnhvcnBzCSgkaW5vdXQxLCRybmRrZXkwKTsKKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisJJm1vdmRxYQkoJHJuZGtleTAsJlFXUCgxNiwiZXNwIikpOwkjIGxvYWQgaW5jcmVtZW50CisJJnhvcnBzCSgkaW5vdXQyLCRybmRrZXkxKTsKKwkmbW92ZHFhCSgkcm5ka2V5MSwmUVdQKDQ4LCJlc3AiKSk7CSMgbG9hZCAxc3QgdHJpcGxldAorCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKKwkmbW92dXBzCSgmUVdQKDB4MjAsJG91dCksJGlub3V0Mik7CisKKwkmcGFkZGQJKCRybmRrZXkxLCRybmRrZXkwKTsJCSMgMXN0IHRyaXBsZXQgaW5jcmVtZW50CisJJnBhZGRkCSgkcm5ka2V5MCwmUVdQKDY0LCJlc3AiKSk7CSMgMm5kIHRyaXBsZXQgaW5jcmVtZW50CisJJm1vdmRxYQkoJGlub3V0MCwmUVdQKDAsImVzcCIpKTsJIyBsb2FkIGJ5dGUgc3dhcCBtYXNrCisKKwkmbW92dXBzCSgkaW5vdXQxLCZRV1AoMHgzMCwkaW5wKSk7CisJJm1vdnVwcwkoJGlub3V0MiwmUVdQKDB4NDAsJGlucCkpOworCSZ4b3JwcwkoJGlub3V0MywkaW5vdXQxKTsKKwkmbW92dXBzCSgkaW5vdXQxLCZRV1AoMHg1MCwkaW5wKSk7CisJJmxlYQkoJGlucCwmRFdQKDB4NjAsJGlucCkpOworCSZtb3ZkcWEJKCZRV1AoNDgsImVzcCIpLCRybmRrZXkxKTsJIyBzYXZlIDFzdCB0cmlwbGV0CisJJnBzaHVmYgkoJHJuZGtleTEsJGlub3V0MCk7CQkjIGJ5dGUgc3dhcAorCSZ4b3JwcwkoJGlub3V0NCwkaW5vdXQyKTsKKwkmbW92dXBzCSgmUVdQKDB4MzAsJG91dCksJGlub3V0Myk7CisJJnhvcnBzCSgkaW5vdXQ1LCRpbm91dDEpOworCSZtb3ZkcWEJKCZRV1AoNjQsImVzcCIpLCRybmRrZXkwKTsJIyBzYXZlIDJuZCB0cmlwbGV0CisJJnBzaHVmYgkoJHJuZGtleTAsJGlub3V0MCk7CQkjIGJ5dGUgc3dhcAorCSZtb3Z1cHMJKCZRV1AoMHg0MCwkb3V0KSwkaW5vdXQ0KTsKKwkmcHNodWZkCSgkaW5vdXQwLCRybmRrZXkxLDM8PDYpOworCSZtb3Z1cHMJKCZRV1AoMHg1MCwkb3V0KSwkaW5vdXQ1KTsKKwkmbGVhCSgkb3V0LCZEV1AoMHg2MCwkb3V0KSk7CisKKwkmbW92CSgkcm91bmRzLCRyb3VuZHNfKTsKKwkmcHNodWZkCSgkaW5vdXQxLCRybmRrZXkxLDI8PDYpOworCSZzdWIJKCRsZW4sNik7CisJJmpuYwkoJmxhYmVsKCJjdHIzMl9sb29wNiIpKTsKKworCSZhZGQJKCRsZW4sNik7CisJJmp6CSgmbGFiZWwoImN0cjMyX3JldCIpKTsKKwkmbW92CSgka2V5LCRrZXlfKTsKKwkmbGVhCSgkcm91bmRzLCZEV1AoMSwiIiwkcm91bmRzLDIpKTsJIyByZXN0b3JlICRyb3VuZHMKKwkmbW92ZHFhCSgkaW5vdXQ1LCZRV1AoMzIsImVzcCIpKTsJIyBwdWxsIGNvdW50LWxlc3MgaXZlYworCismc2V0X2xhYmVsKCJjdHIzMl90YWlsIik7CisJJnBvcgkoJGlub3V0MCwkaW5vdXQ1KTsKKwkmY21wCSgkbGVuLDIpOworCSZqYgkoJmxhYmVsKCJjdHIzMl9vbmUiKSk7CisKKwkmcHNodWZkCSgkaW5vdXQyLCRybmRrZXkxLDE8PDYpOworCSZwb3IJKCRpbm91dDEsJGlub3V0NSk7CisJJmplCSgmbGFiZWwoImN0cjMyX3R3byIpKTsKKworCSZwc2h1ZmQJKCRpbm91dDMsJHJuZGtleTAsMzw8Nik7CisJJnBvcgkoJGlub3V0MiwkaW5vdXQ1KTsKKwkmY21wCSgkbGVuLDQpOworCSZqYgkoJmxhYmVsKCJjdHIzMl90aHJlZSIpKTsKKworCSZwc2h1ZmQJKCRpbm91dDQsJHJuZGtleTAsMjw8Nik7CisJJnBvcgkoJGlub3V0MywkaW5vdXQ1KTsKKwkmamUJKCZsYWJlbCgiY3RyMzJfZm91ciIpKTsKKworCSZwb3IJKCRpbm91dDQsJGlub3V0NSk7CisJJmNhbGwJKCJfYWVzbmlfZW5jcnlwdDYiKTsKKwkmbW92dXBzCSgkcm5ka2V5MSwmUVdQKDAsJGlucCkpOworCSZtb3Z1cHMJKCRybmRrZXkwLCZRV1AoMHgxMCwkaW5wKSk7CisJJnhvcnBzCSgkaW5vdXQwLCRybmRrZXkxKTsKKwkmbW92dXBzCSgkcm5ka2V5MSwmUVdQKDB4MjAsJGlucCkpOworCSZ4b3JwcwkoJGlub3V0MSwkcm5ka2V5MCk7CisJJm1vdnVwcwkoJHJuZGtleTAsJlFXUCgweDMwLCRpbnApKTsKKwkmeG9ycHMJKCRpbm91dDIsJHJuZGtleTEpOworCSZtb3Z1cHMJKCRybmRrZXkxLCZRV1AoMHg0MCwkaW5wKSk7CisJJnhvcnBzCSgkaW5vdXQzLCRybmRrZXkwKTsKKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisJJnhvcnBzCSgkaW5vdXQ0LCRybmRrZXkxKTsKKwkmbW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisJJm1vdnVwcwkoJlFXUCgweDIwLCRvdXQpLCRpbm91dDIpOworCSZtb3Z1cHMJKCZRV1AoMHgzMCwkb3V0KSwkaW5vdXQzKTsKKwkmbW92dXBzCSgmUVdQKDB4NDAsJG91dCksJGlub3V0NCk7CisJJmptcAkoJmxhYmVsKCJjdHIzMl9yZXQiKSk7CisKKyZzZXRfbGFiZWwoImN0cjMyX29uZV9zaG9ydGN1dCIsMTYpOworCSZtb3Z1cHMJKCRpbm91dDAsJlFXUCgwLCRyb3VuZHNfKSk7CSMgbG9hZCBpdmVjCisJJm1vdgkoJHJvdW5kcywmRFdQKDI0MCwka2V5KSk7CisJCismc2V0X2xhYmVsKCJjdHIzMl9vbmUiKTsKKwlpZiAoJGlubGluZSkKKwl7ICAgJmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImVuYyIpOwl9CisJZWxzZQorCXsgICAmY2FsbAkoIl9hZXNuaV9lbmNyeXB0MSIpOwl9CisJJm1vdnVwcwkoJGluMCwmUVdQKDAsJGlucCkpOworCSZ4b3JwcwkoJGluMCwkaW5vdXQwKTsKKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGluMCk7CisJJmptcAkoJmxhYmVsKCJjdHIzMl9yZXQiKSk7CisKKyZzZXRfbGFiZWwoImN0cjMyX3R3byIsMTYpOworCSZjYWxsCSgiX2Flc25pX2VuY3J5cHQzIik7CisJJm1vdnVwcwkoJGlub3V0MywmUVdQKDAsJGlucCkpOworCSZtb3Z1cHMJKCRpbm91dDQsJlFXUCgweDEwLCRpbnApKTsKKwkmeG9ycHMJKCRpbm91dDAsJGlub3V0Myk7CisJJnhvcnBzCSgkaW5vdXQxLCRpbm91dDQpOworCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKwkmbW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisJJmptcAkoJmxhYmVsKCJjdHIzMl9yZXQiKSk7CisKKyZzZXRfbGFiZWwoImN0cjMyX3RocmVlIiwxNik7CisJJmNhbGwJKCJfYWVzbmlfZW5jcnlwdDMiKTsKKwkmbW92dXBzCSgkaW5vdXQzLCZRV1AoMCwkaW5wKSk7CisJJm1vdnVwcwkoJGlub3V0NCwmUVdQKDB4MTAsJGlucCkpOworCSZ4b3JwcwkoJGlub3V0MCwkaW5vdXQzKTsKKwkmbW92dXBzCSgkaW5vdXQ1LCZRV1AoMHgyMCwkaW5wKSk7CisJJnhvcnBzCSgkaW5vdXQxLCRpbm91dDQpOworCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKwkmeG9ycHMJKCRpbm91dDIsJGlub3V0NSk7CisJJm1vdnVwcwkoJlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOworCSZtb3Z1cHMJKCZRV1AoMHgyMCwkb3V0KSwkaW5vdXQyKTsKKwkmam1wCSgmbGFiZWwoImN0cjMyX3JldCIpKTsKKworJnNldF9sYWJlbCgiY3RyMzJfZm91ciIsMTYpOworCSZjYWxsCSgiX2Flc25pX2VuY3J5cHQ0Iik7CisJJm1vdnVwcwkoJGlub3V0NCwmUVdQKDAsJGlucCkpOworCSZtb3Z1cHMJKCRpbm91dDUsJlFXUCgweDEwLCRpbnApKTsKKwkmbW92dXBzCSgkcm5ka2V5MSwmUVdQKDB4MjAsJGlucCkpOworCSZ4b3JwcwkoJGlub3V0MCwkaW5vdXQ0KTsKKwkmbW92dXBzCSgkcm5ka2V5MCwmUVdQKDB4MzAsJGlucCkpOworCSZ4b3JwcwkoJGlub3V0MSwkaW5vdXQ1KTsKKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisJJnhvcnBzCSgkaW5vdXQyLCRybmRrZXkxKTsKKwkmbW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisJJnhvcnBzCSgkaW5vdXQzLCRybmRrZXkwKTsKKwkmbW92dXBzCSgmUVdQKDB4MjAsJG91dCksJGlub3V0Mik7CisJJm1vdnVwcwkoJlFXUCgweDMwLCRvdXQpLCRpbm91dDMpOworCismc2V0X2xhYmVsKCJjdHIzMl9yZXQiKTsKKwkmbW92CSgiZXNwIiwmRFdQKDgwLCJlc3AiKSk7CismZnVuY3Rpb25fZW5kKCJhZXNuaV9jdHIzMl9lbmNyeXB0X2Jsb2NrcyIpOworDAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyB2b2lkIGFlc25pX3h0c19bZW58ZGVdY3J5cHQoY29uc3QgY2hhciAqaW5wLGNoYXIgKm91dCxzaXplX3QgbGVuLAorIwljb25zdCBBRVNfS0VZICprZXkxLCBjb25zdCBBRVNfS0VZICprZXkyCisjCWNvbnN0IHVuc2lnbmVkIGNoYXIgaXZbMTZdKTsKKyMKK3sgbXkgKCR0d2VhaywkdHd0bXAsJHR3cmVzLCR0d21hc2spPSgkcm5ka2V5MSwkcm5ka2V5MCwkaW5vdXQwLCRpbm91dDEpOworCismZnVuY3Rpb25fYmVnaW4oImFlc25pX3h0c19lbmNyeXB0Iik7CisJJm1vdgkoJGtleSwmd3BhcmFtKDQpKTsJCSMga2V5MgorCSZtb3YJKCRpbnAsJndwYXJhbSg1KSk7CQkjIGNsZWFyLXRleHQgdHdlYWsKKworCSZtb3YJKCRyb3VuZHMsJkRXUCgyNDAsJGtleSkpOwkjIGtleTItPnJvdW5kcworCSZtb3Z1cHMJKCRpbm91dDAsJlFXUCgwLCRpbnApKTsKKwlpZiAoJGlubGluZSkKKwl7ICAgJmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImVuYyIpOwl9CisJZWxzZQorCXsgICAmY2FsbAkoIl9hZXNuaV9lbmNyeXB0MSIpOwl9CisKKwkmbW92CSgkaW5wLCZ3cGFyYW0oMCkpOworCSZtb3YJKCRvdXQsJndwYXJhbSgxKSk7CisJJm1vdgkoJGxlbiwmd3BhcmFtKDIpKTsKKwkmbW92CSgka2V5LCZ3cGFyYW0oMykpOwkJIyBrZXkxCisKKwkmbW92CSgka2V5XywiZXNwIik7CisJJnN1YgkoImVzcCIsMTYqNys4KTsKKwkmbW92CSgkcm91bmRzLCZEV1AoMjQwLCRrZXkpKTsJIyBrZXkxLT5yb3VuZHMKKwkmYW5kCSgiZXNwIiwtMTYpOwkJCSMgYWxpZ24gc3RhY2sKKworCSZtb3YJKCZEV1AoMTYqNiswLCJlc3AiKSwweDg3KTsJIyBjb21wb3NlIHRoZSBtYWdpYyBjb25zdGFudAorCSZtb3YJKCZEV1AoMTYqNis0LCJlc3AiKSwwKTsKKwkmbW92CSgmRFdQKDE2KjYrOCwiZXNwIiksMSk7CisJJm1vdgkoJkRXUCgxNio2KzEyLCJlc3AiKSwwKTsKKwkmbW92CSgmRFdQKDE2KjcrMCwiZXNwIiksJGxlbik7CSMgc2F2ZSBvcmlnaW5hbCAkbGVuCisJJm1vdgkoJkRXUCgxNio3KzQsImVzcCIpLCRrZXlfKTsJIyBzYXZlIG9yaWdpbmFsICVlc3AKKworCSZtb3ZkcWEJKCR0d2VhaywkaW5vdXQwKTsKKwkmcHhvcgkoJHR3dG1wLCR0d3RtcCk7CisJJm1vdmRxYQkoJHR3bWFzaywmUVdQKDYqMTYsImVzcCIpKTsJIyAweDAuLi4wMTAuLi44NworCSZwY21wZ3RkKCR0d3RtcCwkdHdlYWspOwkJIyBicm9hZGNhc3QgdXBwZXIgYml0cworCisJJmFuZAkoJGxlbiwtMTYpOworCSZtb3YJKCRrZXlfLCRrZXkpOwkJCSMgYmFja3VwICRrZXkKKwkmbW92CSgkcm91bmRzXywkcm91bmRzKTsJCSMgYmFja3VwICRyb3VuZHMKKwkmc3ViCSgkbGVuLDE2KjYpOworCSZqYwkoJmxhYmVsKCJ4dHNfZW5jX3Nob3J0IikpOworCisJJnNocgkoJHJvdW5kcywxKTsKKwkmbW92CSgkcm91bmRzXywkcm91bmRzKTsKKwkmam1wCSgmbGFiZWwoInh0c19lbmNfbG9vcDYiKSk7CisKKyZzZXRfbGFiZWwoInh0c19lbmNfbG9vcDYiLDE2KTsKKwlmb3IgKCRpPTA7JGk8NDskaSsrKSB7CisJICAgICZwc2h1ZmQJKCR0d3JlcywkdHd0bXAsMHgxMyk7CisJICAgICZweG9yCSgkdHd0bXAsJHR3dG1wKTsKKwkgICAgJm1vdmRxYQkoJlFXUCgxNiokaSwiZXNwIiksJHR3ZWFrKTsKKwkgICAgJnBhZGRxCSgkdHdlYWssJHR3ZWFrKTsJIyAmcHNsbHEoJHR3ZWFrLDEpOworCSAgICAmcGFuZAkoJHR3cmVzLCR0d21hc2spOwkjIGlzb2xhdGUgY2FycnkgYW5kIHJlc2lkdWUKKwkgICAgJnBjbXBndGQJKCR0d3RtcCwkdHdlYWspOwkjIGJyb2FkY2FzdCB1cHBlciBiaXRzCisJICAgICZweG9yCSgkdHdlYWssJHR3cmVzKTsKKwl9CisJJnBzaHVmZAkoJGlub3V0NSwkdHd0bXAsMHgxMyk7CisJJm1vdmRxYQkoJlFXUCgxNiokaSsrLCJlc3AiKSwkdHdlYWspOworCSZwYWRkcQkoJHR3ZWFrLCR0d2Vhayk7CQkjICZwc2xscSgkdHdlYWssMSk7CisJICYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgwLCRrZXlfKSk7CisJJnBhbmQJKCRpbm91dDUsJHR3bWFzayk7CQkjIGlzb2xhdGUgY2FycnkgYW5kIHJlc2lkdWUKKwkgJm1vdnVwcwkoJGlub3V0MCwmUVdQKDAsJGlucCkpOwkjIGxvYWQgaW5wdXQKKwkmcHhvcgkoJGlub3V0NSwkdHdlYWspOworCisJIyBpbmxpbmUgX2Flc25pX2VuY3J5cHQ2IHByb2xvZ3VlIGFuZCBmbGlwIHhvciB3aXRoIHR3ZWFrIGFuZCBrZXlbMF0KKwkmbW92ZHF1CSgkaW5vdXQxLCZRV1AoMTYqMSwkaW5wKSk7CisJICZ4b3JwcwkJKCRpbm91dDAsJHJuZGtleTApOwkjIGlucHV0Xj1ybmRrZXlbMF0KKwkmbW92ZHF1CSgkaW5vdXQyLCZRV1AoMTYqMiwkaW5wKSk7CisJICZweG9yCQkoJGlub3V0MSwkcm5ka2V5MCk7CisJJm1vdmRxdQkoJGlub3V0MywmUVdQKDE2KjMsJGlucCkpOworCSAmcHhvcgkJKCRpbm91dDIsJHJuZGtleTApOworCSZtb3ZkcXUJKCRpbm91dDQsJlFXUCgxNio0LCRpbnApKTsKKwkgJnB4b3IJCSgkaW5vdXQzLCRybmRrZXkwKTsKKwkmbW92ZHF1CSgkcm5ka2V5MSwmUVdQKDE2KjUsJGlucCkpOworCSAmcHhvcgkJKCRpbm91dDQsJHJuZGtleTApOworCSZsZWEJKCRpbnAsJkRXUCgxNio2LCRpbnApKTsKKwkmcHhvcgkoJGlub3V0MCwmUVdQKDE2KjAsImVzcCIpKTsJIyBpbnB1dF49dHdlYWsKKwkmbW92ZHFhCSgmUVdQKDE2KiRpLCJlc3AiKSwkaW5vdXQ1KTsJIyBzYXZlIGxhc3QgdHdlYWsKKwkmcHhvcgkoJGlub3V0NSwkcm5ka2V5MSk7CisKKwkgJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKDE2LCRrZXlfKSk7CisJICZsZWEJCSgka2V5LCZEV1AoMzIsJGtleV8pKTsKKwkmcHhvcgkoJGlub3V0MSwmUVdQKDE2KjEsImVzcCIpKTsKKwkgJmFlc2VuYwkoJGlub3V0MCwkcm5ka2V5MSk7CisJJnB4b3IJKCRpbm91dDIsJlFXUCgxNioyLCJlc3AiKSk7CisJICZhZXNlbmMJKCRpbm91dDEsJHJuZGtleTEpOworCSZweG9yCSgkaW5vdXQzLCZRV1AoMTYqMywiZXNwIikpOworCSAmZGVjCQkoJHJvdW5kcyk7CisJICZhZXNlbmMJKCRpbm91dDIsJHJuZGtleTEpOworCSZweG9yCSgkaW5vdXQ0LCZRV1AoMTYqNCwiZXNwIikpOworCSAmYWVzZW5jCSgkaW5vdXQzLCRybmRrZXkxKTsKKwkmcHhvcgkJKCRpbm91dDUsJHJuZGtleTApOworCSAmYWVzZW5jCSgkaW5vdXQ0LCRybmRrZXkxKTsKKwkgJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOworCSAmYWVzZW5jCSgkaW5vdXQ1LCRybmRrZXkxKTsKKwkmY2FsbAkJKCZsYWJlbCgiX2Flc25pX2VuY3J5cHQ2X2VudGVyIikpOworCisJJm1vdmRxYQkoJHR3ZWFrLCZRV1AoMTYqNSwiZXNwIikpOwkjIGxhc3QgdHdlYWsKKyAgICAgICAmcHhvcgkoJHR3dG1wLCR0d3RtcCk7CisJJnhvcnBzCSgkaW5vdXQwLCZRV1AoMTYqMCwiZXNwIikpOwkjIG91dHB1dF49dHdlYWsKKyAgICAgICAmcGNtcGd0ZAkoJHR3dG1wLCR0d2Vhayk7CQkjIGJyb2FkY2FzdCB1cHBlciBiaXRzCisJJnhvcnBzCSgkaW5vdXQxLCZRV1AoMTYqMSwiZXNwIikpOworCSZtb3Z1cHMJKCZRV1AoMTYqMCwkb3V0KSwkaW5vdXQwKTsJIyB3cml0ZSBvdXRwdXQKKwkmeG9ycHMJKCRpbm91dDIsJlFXUCgxNioyLCJlc3AiKSk7CisJJm1vdnVwcwkoJlFXUCgxNioxLCRvdXQpLCRpbm91dDEpOworCSZ4b3JwcwkoJGlub3V0MywmUVdQKDE2KjMsImVzcCIpKTsKKwkmbW92dXBzCSgmUVdQKDE2KjIsJG91dCksJGlub3V0Mik7CisJJnhvcnBzCSgkaW5vdXQ0LCZRV1AoMTYqNCwiZXNwIikpOworCSZtb3Z1cHMJKCZRV1AoMTYqMywkb3V0KSwkaW5vdXQzKTsKKwkmeG9ycHMJKCRpbm91dDUsJHR3ZWFrKTsKKwkmbW92dXBzCSgmUVdQKDE2KjQsJG91dCksJGlub3V0NCk7CisgICAgICAgJnBzaHVmZAkoJHR3cmVzLCR0d3RtcCwweDEzKTsKKwkmbW92dXBzCSgmUVdQKDE2KjUsJG91dCksJGlub3V0NSk7CisJJmxlYQkoJG91dCwmRFdQKDE2KjYsJG91dCkpOworICAgICAgICZtb3ZkcWEJKCR0d21hc2ssJlFXUCgxNio2LCJlc3AiKSk7CSMgMHgwLi4uMDEwLi4uODcKKworCSZweG9yCSgkdHd0bXAsJHR3dG1wKTsKKwkmcGFkZHEJKCR0d2VhaywkdHdlYWspOwkJIyAmcHNsbHEoJHR3ZWFrLDEpOworCSZwYW5kCSgkdHdyZXMsJHR3bWFzayk7CQkjIGlzb2xhdGUgY2FycnkgYW5kIHJlc2lkdWUKKwkmcGNtcGd0ZCgkdHd0bXAsJHR3ZWFrKTsJCSMgYnJvYWRjYXN0IHVwcGVyIGJpdHMKKwkmbW92CSgkcm91bmRzLCRyb3VuZHNfKTsJCSMgcmVzdG9yZSAkcm91bmRzCisJJnB4b3IJKCR0d2VhaywkdHdyZXMpOworCisJJnN1YgkoJGxlbiwxNio2KTsKKwkmam5jCSgmbGFiZWwoInh0c19lbmNfbG9vcDYiKSk7CisKKwkmbGVhCSgkcm91bmRzLCZEV1AoMSwiIiwkcm91bmRzLDIpKTsJIyByZXN0b3JlICRyb3VuZHMKKwkmbW92CSgka2V5LCRrZXlfKTsJCQkjIHJlc3RvcmUgJGtleQorCSZtb3YJKCRyb3VuZHNfLCRyb3VuZHMpOworCismc2V0X2xhYmVsKCJ4dHNfZW5jX3Nob3J0Iik7CisJJmFkZAkoJGxlbiwxNio2KTsKKwkmanoJKCZsYWJlbCgieHRzX2VuY19kb25lNngiKSk7CisKKwkmbW92ZHFhCSgkaW5vdXQzLCR0d2Vhayk7CQkjIHB1dCBhc2lkZSBwcmV2aW91cyB0d2VhaworCSZjbXAJKCRsZW4sMHgyMCk7CisJJmpiCSgmbGFiZWwoInh0c19lbmNfb25lIikpOworCisJJnBzaHVmZAkoJHR3cmVzLCR0d3RtcCwweDEzKTsKKwkmcHhvcgkoJHR3dG1wLCR0d3RtcCk7CisJJnBhZGRxCSgkdHdlYWssJHR3ZWFrKTsJCSMgJnBzbGxxKCR0d2VhaywxKTsKKwkmcGFuZAkoJHR3cmVzLCR0d21hc2spOwkJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJJnBjbXBndGQoJHR3dG1wLCR0d2Vhayk7CQkjIGJyb2FkY2FzdCB1cHBlciBiaXRzCisJJnB4b3IJKCR0d2VhaywkdHdyZXMpOworCSZqZQkoJmxhYmVsKCJ4dHNfZW5jX3R3byIpKTsKKworCSZwc2h1ZmQJKCR0d3JlcywkdHd0bXAsMHgxMyk7CisJJnB4b3IJKCR0d3RtcCwkdHd0bXApOworCSZtb3ZkcWEJKCRpbm91dDQsJHR3ZWFrKTsJCSMgcHV0IGFzaWRlIHByZXZpb3VzIHR3ZWFrCisJJnBhZGRxCSgkdHdlYWssJHR3ZWFrKTsJCSMgJnBzbGxxKCR0d2VhaywxKTsKKwkmcGFuZAkoJHR3cmVzLCR0d21hc2spOwkJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJJnBjbXBndGQoJHR3dG1wLCR0d2Vhayk7CQkjIGJyb2FkY2FzdCB1cHBlciBiaXRzCisJJnB4b3IJKCR0d2VhaywkdHdyZXMpOworCSZjbXAJKCRsZW4sMHg0MCk7CisJJmpiCSgmbGFiZWwoInh0c19lbmNfdGhyZWUiKSk7CisKKwkmcHNodWZkCSgkdHdyZXMsJHR3dG1wLDB4MTMpOworCSZweG9yCSgkdHd0bXAsJHR3dG1wKTsKKwkmbW92ZHFhCSgkaW5vdXQ1LCR0d2Vhayk7CQkjIHB1dCBhc2lkZSBwcmV2aW91cyB0d2VhaworCSZwYWRkcQkoJHR3ZWFrLCR0d2Vhayk7CQkjICZwc2xscSgkdHdlYWssMSk7CisJJnBhbmQJKCR0d3JlcywkdHdtYXNrKTsJCSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCSZwY21wZ3RkKCR0d3RtcCwkdHdlYWspOwkJIyBicm9hZGNhc3QgdXBwZXIgYml0cworCSZweG9yCSgkdHdlYWssJHR3cmVzKTsKKwkmbW92ZHFhCSgmUVdQKDE2KjAsImVzcCIpLCRpbm91dDMpOworCSZtb3ZkcWEJKCZRV1AoMTYqMSwiZXNwIiksJGlub3V0NCk7CisJJmplCSgmbGFiZWwoInh0c19lbmNfZm91ciIpKTsKKworCSZtb3ZkcWEJKCZRV1AoMTYqMiwiZXNwIiksJGlub3V0NSk7CisJJnBzaHVmZAkoJGlub3V0NSwkdHd0bXAsMHgxMyk7CisJJm1vdmRxYQkoJlFXUCgxNiozLCJlc3AiKSwkdHdlYWspOworCSZwYWRkcQkoJHR3ZWFrLCR0d2Vhayk7CQkjICZwc2xscSgkaW5vdXQwLDEpOworCSZwYW5kCSgkaW5vdXQ1LCR0d21hc2spOwkJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJJnB4b3IJKCRpbm91dDUsJHR3ZWFrKTsKKworCSZtb3ZkcXUJKCRpbm91dDAsJlFXUCgxNiowLCRpbnApKTsJIyBsb2FkIGlucHV0CisJJm1vdmRxdQkoJGlub3V0MSwmUVdQKDE2KjEsJGlucCkpOworCSZtb3ZkcXUJKCRpbm91dDIsJlFXUCgxNioyLCRpbnApKTsKKwkmcHhvcgkoJGlub3V0MCwmUVdQKDE2KjAsImVzcCIpKTsJIyBpbnB1dF49dHdlYWsKKwkmbW92ZHF1CSgkaW5vdXQzLCZRV1AoMTYqMywkaW5wKSk7CisJJnB4b3IJKCRpbm91dDEsJlFXUCgxNioxLCJlc3AiKSk7CisJJm1vdmRxdQkoJGlub3V0NCwmUVdQKDE2KjQsJGlucCkpOworCSZweG9yCSgkaW5vdXQyLCZRV1AoMTYqMiwiZXNwIikpOworCSZsZWEJKCRpbnAsJkRXUCgxNio1LCRpbnApKTsKKwkmcHhvcgkoJGlub3V0MywmUVdQKDE2KjMsImVzcCIpKTsKKwkmbW92ZHFhCSgmUVdQKDE2KjQsImVzcCIpLCRpbm91dDUpOwkjIHNhdmUgbGFzdCB0d2VhaworCSZweG9yCSgkaW5vdXQ0LCRpbm91dDUpOworCisJJmNhbGwJKCJfYWVzbmlfZW5jcnlwdDYiKTsKKworCSZtb3ZhcHMJKCR0d2VhaywmUVdQKDE2KjQsImVzcCIpKTsJIyBsYXN0IHR3ZWFrCisJJnhvcnBzCSgkaW5vdXQwLCZRV1AoMTYqMCwiZXNwIikpOwkjIG91dHB1dF49dHdlYWsKKwkmeG9ycHMJKCRpbm91dDEsJlFXUCgxNioxLCJlc3AiKSk7CisJJnhvcnBzCSgkaW5vdXQyLCZRV1AoMTYqMiwiZXNwIikpOworCSZtb3Z1cHMJKCZRV1AoMTYqMCwkb3V0KSwkaW5vdXQwKTsJIyB3cml0ZSBvdXRwdXQKKwkmeG9ycHMJKCRpbm91dDMsJlFXUCgxNiozLCJlc3AiKSk7CisJJm1vdnVwcwkoJlFXUCgxNioxLCRvdXQpLCRpbm91dDEpOworCSZ4b3JwcwkoJGlub3V0NCwkdHdlYWspOworCSZtb3Z1cHMJKCZRV1AoMTYqMiwkb3V0KSwkaW5vdXQyKTsKKwkmbW92dXBzCSgmUVdQKDE2KjMsJG91dCksJGlub3V0Myk7CisJJm1vdnVwcwkoJlFXUCgxNio0LCRvdXQpLCRpbm91dDQpOworCSZsZWEJKCRvdXQsJkRXUCgxNio1LCRvdXQpKTsKKwkmam1wCSgmbGFiZWwoInh0c19lbmNfZG9uZSIpKTsKKworJnNldF9sYWJlbCgieHRzX2VuY19vbmUiLDE2KTsKKwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMTYqMCwkaW5wKSk7CSMgbG9hZCBpbnB1dAorCSZsZWEJKCRpbnAsJkRXUCgxNioxLCRpbnApKTsKKwkmeG9ycHMJKCRpbm91dDAsJGlub3V0Myk7CQkjIGlucHV0Xj10d2VhaworCWlmICgkaW5saW5lKQorCXsgICAmYWVzbmlfaW5saW5lX2dlbmVyYXRlMSgiZW5jIik7CX0KKwllbHNlCisJeyAgICZjYWxsCSgiX2Flc25pX2VuY3J5cHQxIik7CX0KKwkmeG9ycHMJKCRpbm91dDAsJGlub3V0Myk7CQkjIG91dHB1dF49dHdlYWsKKwkmbW92dXBzCSgmUVdQKDE2KjAsJG91dCksJGlub3V0MCk7CSMgd3JpdGUgb3V0cHV0CisJJmxlYQkoJG91dCwmRFdQKDE2KjEsJG91dCkpOworCisJJm1vdmRxYQkoJHR3ZWFrLCRpbm91dDMpOwkJIyBsYXN0IHR3ZWFrCisJJmptcAkoJmxhYmVsKCJ4dHNfZW5jX2RvbmUiKSk7CisKKyZzZXRfbGFiZWwoInh0c19lbmNfdHdvIiwxNik7CisJJm1vdmFwcwkoJGlub3V0NCwkdHdlYWspOwkJIyBwdXQgYXNpZGUgbGFzdCB0d2VhaworCisJJm1vdnVwcwkoJGlub3V0MCwmUVdQKDE2KjAsJGlucCkpOwkjIGxvYWQgaW5wdXQKKwkmbW92dXBzCSgkaW5vdXQxLCZRV1AoMTYqMSwkaW5wKSk7CisJJmxlYQkoJGlucCwmRFdQKDE2KjIsJGlucCkpOworCSZ4b3JwcwkoJGlub3V0MCwkaW5vdXQzKTsJCSMgaW5wdXRePXR3ZWFrCisJJnhvcnBzCSgkaW5vdXQxLCRpbm91dDQpOworCSZ4b3JwcwkoJGlub3V0MiwkaW5vdXQyKTsKKworCSZjYWxsCSgiX2Flc25pX2VuY3J5cHQzIik7CisKKwkmeG9ycHMJKCRpbm91dDAsJGlub3V0Myk7CQkjIG91dHB1dF49dHdlYWsKKwkmeG9ycHMJKCRpbm91dDEsJGlub3V0NCk7CisJJm1vdnVwcwkoJlFXUCgxNiowLCRvdXQpLCRpbm91dDApOwkjIHdyaXRlIG91dHB1dAorCSZtb3Z1cHMJKCZRV1AoMTYqMSwkb3V0KSwkaW5vdXQxKTsKKwkmbGVhCSgkb3V0LCZEV1AoMTYqMiwkb3V0KSk7CisKKwkmbW92ZHFhCSgkdHdlYWssJGlub3V0NCk7CQkjIGxhc3QgdHdlYWsKKwkmam1wCSgmbGFiZWwoInh0c19lbmNfZG9uZSIpKTsKKworJnNldF9sYWJlbCgieHRzX2VuY190aHJlZSIsMTYpOworCSZtb3ZhcHMJKCRpbm91dDUsJHR3ZWFrKTsJCSMgcHV0IGFzaWRlIGxhc3QgdHdlYWsKKwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMTYqMCwkaW5wKSk7CSMgbG9hZCBpbnB1dAorCSZtb3Z1cHMJKCRpbm91dDEsJlFXUCgxNioxLCRpbnApKTsKKwkmbW92dXBzCSgkaW5vdXQyLCZRV1AoMTYqMiwkaW5wKSk7CisJJmxlYQkoJGlucCwmRFdQKDE2KjMsJGlucCkpOworCSZ4b3JwcwkoJGlub3V0MCwkaW5vdXQzKTsJCSMgaW5wdXRePXR3ZWFrCisJJnhvcnBzCSgkaW5vdXQxLCRpbm91dDQpOworCSZ4b3JwcwkoJGlub3V0MiwkaW5vdXQ1KTsKKworCSZjYWxsCSgiX2Flc25pX2VuY3J5cHQzIik7CisKKwkmeG9ycHMJKCRpbm91dDAsJGlub3V0Myk7CQkjIG91dHB1dF49dHdlYWsKKwkmeG9ycHMJKCRpbm91dDEsJGlub3V0NCk7CisJJnhvcnBzCSgkaW5vdXQyLCRpbm91dDUpOworCSZtb3Z1cHMJKCZRV1AoMTYqMCwkb3V0KSwkaW5vdXQwKTsJIyB3cml0ZSBvdXRwdXQKKwkmbW92dXBzCSgmUVdQKDE2KjEsJG91dCksJGlub3V0MSk7CisJJm1vdnVwcwkoJlFXUCgxNioyLCRvdXQpLCRpbm91dDIpOworCSZsZWEJKCRvdXQsJkRXUCgxNiozLCRvdXQpKTsKKworCSZtb3ZkcWEJKCR0d2VhaywkaW5vdXQ1KTsJCSMgbGFzdCB0d2VhaworCSZqbXAJKCZsYWJlbCgieHRzX2VuY19kb25lIikpOworCismc2V0X2xhYmVsKCJ4dHNfZW5jX2ZvdXIiLDE2KTsKKwkmbW92YXBzCSgkaW5vdXQ0LCR0d2Vhayk7CQkjIHB1dCBhc2lkZSBsYXN0IHR3ZWFrCisKKwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMTYqMCwkaW5wKSk7CSMgbG9hZCBpbnB1dAorCSZtb3Z1cHMJKCRpbm91dDEsJlFXUCgxNioxLCRpbnApKTsKKwkmbW92dXBzCSgkaW5vdXQyLCZRV1AoMTYqMiwkaW5wKSk7CisJJnhvcnBzCSgkaW5vdXQwLCZRV1AoMTYqMCwiZXNwIikpOwkjIGlucHV0Xj10d2VhaworCSZtb3Z1cHMJKCRpbm91dDMsJlFXUCgxNiozLCRpbnApKTsKKwkmbGVhCSgkaW5wLCZEV1AoMTYqNCwkaW5wKSk7CisJJnhvcnBzCSgkaW5vdXQxLCZRV1AoMTYqMSwiZXNwIikpOworCSZ4b3JwcwkoJGlub3V0MiwkaW5vdXQ1KTsKKwkmeG9ycHMJKCRpbm91dDMsJGlub3V0NCk7CisKKwkmY2FsbAkoIl9hZXNuaV9lbmNyeXB0NCIpOworCisJJnhvcnBzCSgkaW5vdXQwLCZRV1AoMTYqMCwiZXNwIikpOwkjIG91dHB1dF49dHdlYWsKKwkmeG9ycHMJKCRpbm91dDEsJlFXUCgxNioxLCJlc3AiKSk7CisJJnhvcnBzCSgkaW5vdXQyLCRpbm91dDUpOworCSZtb3Z1cHMJKCZRV1AoMTYqMCwkb3V0KSwkaW5vdXQwKTsJIyB3cml0ZSBvdXRwdXQKKwkmeG9ycHMJKCRpbm91dDMsJGlub3V0NCk7CisJJm1vdnVwcwkoJlFXUCgxNioxLCRvdXQpLCRpbm91dDEpOworCSZtb3Z1cHMJKCZRV1AoMTYqMiwkb3V0KSwkaW5vdXQyKTsKKwkmbW92dXBzCSgmUVdQKDE2KjMsJG91dCksJGlub3V0Myk7CisJJmxlYQkoJG91dCwmRFdQKDE2KjQsJG91dCkpOworCisJJm1vdmRxYQkoJHR3ZWFrLCRpbm91dDQpOwkJIyBsYXN0IHR3ZWFrCisJJmptcAkoJmxhYmVsKCJ4dHNfZW5jX2RvbmUiKSk7CisKKyZzZXRfbGFiZWwoInh0c19lbmNfZG9uZTZ4IiwxNik7CQkjICR0d2VhayBpcyBwcmUtY2FsY3VsYXRlZAorCSZtb3YJKCRsZW4sJkRXUCgxNio3KzAsImVzcCIpKTsJIyByZXN0b3JlIG9yaWdpbmFsICRsZW4KKwkmYW5kCSgkbGVuLDE1KTsKKwkmanoJKCZsYWJlbCgieHRzX2VuY19yZXQiKSk7CisJJm1vdmRxYQkoJGlub3V0MywkdHdlYWspOworCSZtb3YJKCZEV1AoMTYqNyswLCJlc3AiKSwkbGVuKTsJIyBzYXZlICRsZW4lMTYKKwkmam1wCSgmbGFiZWwoInh0c19lbmNfc3RlYWwiKSk7CisKKyZzZXRfbGFiZWwoInh0c19lbmNfZG9uZSIsMTYpOworCSZtb3YJKCRsZW4sJkRXUCgxNio3KzAsImVzcCIpKTsJIyByZXN0b3JlIG9yaWdpbmFsICRsZW4KKwkmcHhvcgkoJHR3dG1wLCR0d3RtcCk7CisJJmFuZAkoJGxlbiwxNSk7CisJJmp6CSgmbGFiZWwoInh0c19lbmNfcmV0IikpOworCisJJnBjbXBndGQoJHR3dG1wLCR0d2Vhayk7CQkjIGJyb2FkY2FzdCB1cHBlciBiaXRzCisJJm1vdgkoJkRXUCgxNio3KzAsImVzcCIpLCRsZW4pOwkjIHNhdmUgJGxlbiUxNgorCSZwc2h1ZmQJKCRpbm91dDMsJHR3dG1wLDB4MTMpOworCSZwYWRkcQkoJHR3ZWFrLCR0d2Vhayk7CQkjICZwc2xscSgkdHdlYWssMSk7CisJJnBhbmQJKCRpbm91dDMsJlFXUCgxNio2LCJlc3AiKSk7CSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCSZweG9yCSgkaW5vdXQzLCR0d2Vhayk7CisKKyZzZXRfbGFiZWwoInh0c19lbmNfc3RlYWwiKTsKKwkmbW92egkoJHJvdW5kcywmQlAoMCwkaW5wKSk7CisJJm1vdnoJKCRrZXksJkJQKC0xNiwkb3V0KSk7CisJJmxlYQkoJGlucCwmRFdQKDEsJGlucCkpOworCSZtb3YJKCZCUCgtMTYsJG91dCksJkxCKCRyb3VuZHMpKTsKKwkmbW92CSgmQlAoMCwkb3V0KSwmTEIoJGtleSkpOworCSZsZWEJKCRvdXQsJkRXUCgxLCRvdXQpKTsKKwkmc3ViCSgkbGVuLDEpOworCSZqbnoJKCZsYWJlbCgieHRzX2VuY19zdGVhbCIpKTsKKworCSZzdWIJKCRvdXQsJkRXUCgxNio3KzAsImVzcCIpKTsJIyByZXdpbmQgJG91dAorCSZtb3YJKCRrZXksJGtleV8pOwkJCSMgcmVzdG9yZSAka2V5CisJJm1vdgkoJHJvdW5kcywkcm91bmRzXyk7CQkjIHJlc3RvcmUgJHJvdW5kcworCisJJm1vdnVwcwkoJGlub3V0MCwmUVdQKC0xNiwkb3V0KSk7CSMgbG9hZCBpbnB1dAorCSZ4b3JwcwkoJGlub3V0MCwkaW5vdXQzKTsJCSMgaW5wdXRePXR3ZWFrCisJaWYgKCRpbmxpbmUpCisJeyAgICZhZXNuaV9pbmxpbmVfZ2VuZXJhdGUxKCJlbmMiKTsJfQorCWVsc2UKKwl7ICAgJmNhbGwJKCJfYWVzbmlfZW5jcnlwdDEiKTsJfQorCSZ4b3JwcwkoJGlub3V0MCwkaW5vdXQzKTsJCSMgb3V0cHV0Xj10d2VhaworCSZtb3Z1cHMJKCZRV1AoLTE2LCRvdXQpLCRpbm91dDApOwkjIHdyaXRlIG91dHB1dAorCismc2V0X2xhYmVsKCJ4dHNfZW5jX3JldCIpOworCSZtb3YJKCJlc3AiLCZEV1AoMTYqNys0LCJlc3AiKSk7CSMgcmVzdG9yZSAlZXNwCismZnVuY3Rpb25fZW5kKCJhZXNuaV94dHNfZW5jcnlwdCIpOworCismZnVuY3Rpb25fYmVnaW4oImFlc25pX3h0c19kZWNyeXB0Iik7CisJJm1vdgkoJGtleSwmd3BhcmFtKDQpKTsJCSMga2V5MgorCSZtb3YJKCRpbnAsJndwYXJhbSg1KSk7CQkjIGNsZWFyLXRleHQgdHdlYWsKKworCSZtb3YJKCRyb3VuZHMsJkRXUCgyNDAsJGtleSkpOwkjIGtleTItPnJvdW5kcworCSZtb3Z1cHMJKCRpbm91dDAsJlFXUCgwLCRpbnApKTsKKwlpZiAoJGlubGluZSkKKwl7ICAgJmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImVuYyIpOwl9CisJZWxzZQorCXsgICAmY2FsbAkoIl9hZXNuaV9lbmNyeXB0MSIpOwl9CisKKwkmbW92CSgkaW5wLCZ3cGFyYW0oMCkpOworCSZtb3YJKCRvdXQsJndwYXJhbSgxKSk7CisJJm1vdgkoJGxlbiwmd3BhcmFtKDIpKTsKKwkmbW92CSgka2V5LCZ3cGFyYW0oMykpOwkJIyBrZXkxCisKKwkmbW92CSgka2V5XywiZXNwIik7CisJJnN1YgkoImVzcCIsMTYqNys4KTsKKwkmYW5kCSgiZXNwIiwtMTYpOwkJCSMgYWxpZ24gc3RhY2sKKworCSZ4b3IJKCRyb3VuZHNfLCRyb3VuZHNfKTsJCSMgaWYobGVuJTE2KSBsZW4tPTE2OworCSZ0ZXN0CSgkbGVuLDE1KTsKKwkmc2V0bnoJKCZMQigkcm91bmRzXykpOworCSZzaGwJKCRyb3VuZHNfLDQpOworCSZzdWIJKCRsZW4sJHJvdW5kc18pOworCisJJm1vdgkoJkRXUCgxNio2KzAsImVzcCIpLDB4ODcpOwkjIGNvbXBvc2UgdGhlIG1hZ2ljIGNvbnN0YW50CisJJm1vdgkoJkRXUCgxNio2KzQsImVzcCIpLDApOworCSZtb3YJKCZEV1AoMTYqNis4LCJlc3AiKSwxKTsKKwkmbW92CSgmRFdQKDE2KjYrMTIsImVzcCIpLDApOworCSZtb3YJKCZEV1AoMTYqNyswLCJlc3AiKSwkbGVuKTsJIyBzYXZlIG9yaWdpbmFsICRsZW4KKwkmbW92CSgmRFdQKDE2KjcrNCwiZXNwIiksJGtleV8pOwkjIHNhdmUgb3JpZ2luYWwgJWVzcAorCisJJm1vdgkoJHJvdW5kcywmRFdQKDI0MCwka2V5KSk7CSMga2V5MS0+cm91bmRzCisJJm1vdgkoJGtleV8sJGtleSk7CQkJIyBiYWNrdXAgJGtleQorCSZtb3YJKCRyb3VuZHNfLCRyb3VuZHMpOwkJIyBiYWNrdXAgJHJvdW5kcworCisJJm1vdmRxYQkoJHR3ZWFrLCRpbm91dDApOworCSZweG9yCSgkdHd0bXAsJHR3dG1wKTsKKwkmbW92ZHFhCSgkdHdtYXNrLCZRV1AoNioxNiwiZXNwIikpOwkjIDB4MC4uLjAxMC4uLjg3CisJJnBjbXBndGQoJHR3dG1wLCR0d2Vhayk7CQkjIGJyb2FkY2FzdCB1cHBlciBiaXRzCisKKwkmYW5kCSgkbGVuLC0xNik7CisJJnN1YgkoJGxlbiwxNio2KTsKKwkmamMJKCZsYWJlbCgieHRzX2RlY19zaG9ydCIpKTsKKworCSZzaHIJKCRyb3VuZHMsMSk7CisJJm1vdgkoJHJvdW5kc18sJHJvdW5kcyk7CisJJmptcAkoJmxhYmVsKCJ4dHNfZGVjX2xvb3A2IikpOworCismc2V0X2xhYmVsKCJ4dHNfZGVjX2xvb3A2IiwxNik7CisJZm9yICgkaT0wOyRpPDQ7JGkrKykgeworCSAgICAmcHNodWZkCSgkdHdyZXMsJHR3dG1wLDB4MTMpOworCSAgICAmcHhvcgkoJHR3dG1wLCR0d3RtcCk7CisJICAgICZtb3ZkcWEJKCZRV1AoMTYqJGksImVzcCIpLCR0d2Vhayk7CisJICAgICZwYWRkcQkoJHR3ZWFrLCR0d2Vhayk7CSMgJnBzbGxxKCR0d2VhaywxKTsKKwkgICAgJnBhbmQJKCR0d3JlcywkdHdtYXNrKTsJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJICAgICZwY21wZ3RkCSgkdHd0bXAsJHR3ZWFrKTsJIyBicm9hZGNhc3QgdXBwZXIgYml0cworCSAgICAmcHhvcgkoJHR3ZWFrLCR0d3Jlcyk7CisJfQorCSZwc2h1ZmQJKCRpbm91dDUsJHR3dG1wLDB4MTMpOworCSZtb3ZkcWEJKCZRV1AoMTYqJGkrKywiZXNwIiksJHR3ZWFrKTsKKwkmcGFkZHEJKCR0d2VhaywkdHdlYWspOwkJIyAmcHNsbHEoJHR3ZWFrLDEpOworCSAmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5XykpOworCSZwYW5kCSgkaW5vdXQ1LCR0d21hc2spOwkJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJICZtb3Z1cHMJKCRpbm91dDAsJlFXUCgwLCRpbnApKTsJIyBsb2FkIGlucHV0CisJJnB4b3IJKCRpbm91dDUsJHR3ZWFrKTsKKworCSMgaW5saW5lIF9hZXNuaV9lbmNyeXB0NiBwcm9sb2d1ZSBhbmQgZmxpcCB4b3Igd2l0aCB0d2VhayBhbmQga2V5WzBdCisJJm1vdmRxdQkoJGlub3V0MSwmUVdQKDE2KjEsJGlucCkpOworCSAmeG9ycHMJCSgkaW5vdXQwLCRybmRrZXkwKTsJIyBpbnB1dF49cm5ka2V5WzBdCisJJm1vdmRxdQkoJGlub3V0MiwmUVdQKDE2KjIsJGlucCkpOworCSAmcHhvcgkJKCRpbm91dDEsJHJuZGtleTApOworCSZtb3ZkcXUJKCRpbm91dDMsJlFXUCgxNiozLCRpbnApKTsKKwkgJnB4b3IJCSgkaW5vdXQyLCRybmRrZXkwKTsKKwkmbW92ZHF1CSgkaW5vdXQ0LCZRV1AoMTYqNCwkaW5wKSk7CisJICZweG9yCQkoJGlub3V0Mywkcm5ka2V5MCk7CisJJm1vdmRxdQkoJHJuZGtleTEsJlFXUCgxNio1LCRpbnApKTsKKwkgJnB4b3IJCSgkaW5vdXQ0LCRybmRrZXkwKTsKKwkmbGVhCSgkaW5wLCZEV1AoMTYqNiwkaW5wKSk7CisJJnB4b3IJKCRpbm91dDAsJlFXUCgxNiowLCJlc3AiKSk7CSMgaW5wdXRePXR3ZWFrCisJJm1vdmRxYQkoJlFXUCgxNiokaSwiZXNwIiksJGlub3V0NSk7CSMgc2F2ZSBsYXN0IHR3ZWFrCisJJnB4b3IJKCRpbm91dDUsJHJuZGtleTEpOworCisJICYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgxNiwka2V5XykpOworCSAmbGVhCQkoJGtleSwmRFdQKDMyLCRrZXlfKSk7CisJJnB4b3IJKCRpbm91dDEsJlFXUCgxNioxLCJlc3AiKSk7CisJICZhZXNkZWMJKCRpbm91dDAsJHJuZGtleTEpOworCSZweG9yCSgkaW5vdXQyLCZRV1AoMTYqMiwiZXNwIikpOworCSAmYWVzZGVjCSgkaW5vdXQxLCRybmRrZXkxKTsKKwkmcHhvcgkoJGlub3V0MywmUVdQKDE2KjMsImVzcCIpKTsKKwkgJmRlYwkJKCRyb3VuZHMpOworCSAmYWVzZGVjCSgkaW5vdXQyLCRybmRrZXkxKTsKKwkmcHhvcgkoJGlub3V0NCwmUVdQKDE2KjQsImVzcCIpKTsKKwkgJmFlc2RlYwkoJGlub3V0Mywkcm5ka2V5MSk7CisJJnB4b3IJCSgkaW5vdXQ1LCRybmRrZXkwKTsKKwkgJmFlc2RlYwkoJGlub3V0NCwkcm5ka2V5MSk7CisJICYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgwLCRrZXkpKTsKKwkgJmFlc2RlYwkoJGlub3V0NSwkcm5ka2V5MSk7CisJJmNhbGwJCSgmbGFiZWwoIl9hZXNuaV9kZWNyeXB0Nl9lbnRlciIpKTsKKworCSZtb3ZkcWEJKCR0d2VhaywmUVdQKDE2KjUsImVzcCIpKTsJIyBsYXN0IHR3ZWFrCisgICAgICAgJnB4b3IJKCR0d3RtcCwkdHd0bXApOworCSZ4b3JwcwkoJGlub3V0MCwmUVdQKDE2KjAsImVzcCIpKTsJIyBvdXRwdXRePXR3ZWFrCisgICAgICAgJnBjbXBndGQJKCR0d3RtcCwkdHdlYWspOwkJIyBicm9hZGNhc3QgdXBwZXIgYml0cworCSZ4b3JwcwkoJGlub3V0MSwmUVdQKDE2KjEsImVzcCIpKTsKKwkmbW92dXBzCSgmUVdQKDE2KjAsJG91dCksJGlub3V0MCk7CSMgd3JpdGUgb3V0cHV0CisJJnhvcnBzCSgkaW5vdXQyLCZRV1AoMTYqMiwiZXNwIikpOworCSZtb3Z1cHMJKCZRV1AoMTYqMSwkb3V0KSwkaW5vdXQxKTsKKwkmeG9ycHMJKCRpbm91dDMsJlFXUCgxNiozLCJlc3AiKSk7CisJJm1vdnVwcwkoJlFXUCgxNioyLCRvdXQpLCRpbm91dDIpOworCSZ4b3JwcwkoJGlub3V0NCwmUVdQKDE2KjQsImVzcCIpKTsKKwkmbW92dXBzCSgmUVdQKDE2KjMsJG91dCksJGlub3V0Myk7CisJJnhvcnBzCSgkaW5vdXQ1LCR0d2Vhayk7CisJJm1vdnVwcwkoJlFXUCgxNio0LCRvdXQpLCRpbm91dDQpOworICAgICAgICZwc2h1ZmQJKCR0d3JlcywkdHd0bXAsMHgxMyk7CisJJm1vdnVwcwkoJlFXUCgxNio1LCRvdXQpLCRpbm91dDUpOworCSZsZWEJKCRvdXQsJkRXUCgxNio2LCRvdXQpKTsKKyAgICAgICAmbW92ZHFhCSgkdHdtYXNrLCZRV1AoMTYqNiwiZXNwIikpOwkjIDB4MC4uLjAxMC4uLjg3CisKKwkmcHhvcgkoJHR3dG1wLCR0d3RtcCk7CisJJnBhZGRxCSgkdHdlYWssJHR3ZWFrKTsJCSMgJnBzbGxxKCR0d2VhaywxKTsKKwkmcGFuZAkoJHR3cmVzLCR0d21hc2spOwkJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJJnBjbXBndGQoJHR3dG1wLCR0d2Vhayk7CQkjIGJyb2FkY2FzdCB1cHBlciBiaXRzCisJJm1vdgkoJHJvdW5kcywkcm91bmRzXyk7CQkjIHJlc3RvcmUgJHJvdW5kcworCSZweG9yCSgkdHdlYWssJHR3cmVzKTsKKworCSZzdWIJKCRsZW4sMTYqNik7CisJJmpuYwkoJmxhYmVsKCJ4dHNfZGVjX2xvb3A2IikpOworCisJJmxlYQkoJHJvdW5kcywmRFdQKDEsIiIsJHJvdW5kcywyKSk7CSMgcmVzdG9yZSAkcm91bmRzCisJJm1vdgkoJGtleSwka2V5Xyk7CQkJIyByZXN0b3JlICRrZXkKKwkmbW92CSgkcm91bmRzXywkcm91bmRzKTsKKworJnNldF9sYWJlbCgieHRzX2RlY19zaG9ydCIpOworCSZhZGQJKCRsZW4sMTYqNik7CisJJmp6CSgmbGFiZWwoInh0c19kZWNfZG9uZTZ4IikpOworCisJJm1vdmRxYQkoJGlub3V0MywkdHdlYWspOwkJIyBwdXQgYXNpZGUgcHJldmlvdXMgdHdlYWsKKwkmY21wCSgkbGVuLDB4MjApOworCSZqYgkoJmxhYmVsKCJ4dHNfZGVjX29uZSIpKTsKKworCSZwc2h1ZmQJKCR0d3JlcywkdHd0bXAsMHgxMyk7CisJJnB4b3IJKCR0d3RtcCwkdHd0bXApOworCSZwYWRkcQkoJHR3ZWFrLCR0d2Vhayk7CQkjICZwc2xscSgkdHdlYWssMSk7CisJJnBhbmQJKCR0d3JlcywkdHdtYXNrKTsJCSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCSZwY21wZ3RkKCR0d3RtcCwkdHdlYWspOwkJIyBicm9hZGNhc3QgdXBwZXIgYml0cworCSZweG9yCSgkdHdlYWssJHR3cmVzKTsKKwkmamUJKCZsYWJlbCgieHRzX2RlY190d28iKSk7CisKKwkmcHNodWZkCSgkdHdyZXMsJHR3dG1wLDB4MTMpOworCSZweG9yCSgkdHd0bXAsJHR3dG1wKTsKKwkmbW92ZHFhCSgkaW5vdXQ0LCR0d2Vhayk7CQkjIHB1dCBhc2lkZSBwcmV2aW91cyB0d2VhaworCSZwYWRkcQkoJHR3ZWFrLCR0d2Vhayk7CQkjICZwc2xscSgkdHdlYWssMSk7CisJJnBhbmQJKCR0d3JlcywkdHdtYXNrKTsJCSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCSZwY21wZ3RkKCR0d3RtcCwkdHdlYWspOwkJIyBicm9hZGNhc3QgdXBwZXIgYml0cworCSZweG9yCSgkdHdlYWssJHR3cmVzKTsKKwkmY21wCSgkbGVuLDB4NDApOworCSZqYgkoJmxhYmVsKCJ4dHNfZGVjX3RocmVlIikpOworCisJJnBzaHVmZAkoJHR3cmVzLCR0d3RtcCwweDEzKTsKKwkmcHhvcgkoJHR3dG1wLCR0d3RtcCk7CisJJm1vdmRxYQkoJGlub3V0NSwkdHdlYWspOwkJIyBwdXQgYXNpZGUgcHJldmlvdXMgdHdlYWsKKwkmcGFkZHEJKCR0d2VhaywkdHdlYWspOwkJIyAmcHNsbHEoJHR3ZWFrLDEpOworCSZwYW5kCSgkdHdyZXMsJHR3bWFzayk7CQkjIGlzb2xhdGUgY2FycnkgYW5kIHJlc2lkdWUKKwkmcGNtcGd0ZCgkdHd0bXAsJHR3ZWFrKTsJCSMgYnJvYWRjYXN0IHVwcGVyIGJpdHMKKwkmcHhvcgkoJHR3ZWFrLCR0d3Jlcyk7CisJJm1vdmRxYQkoJlFXUCgxNiowLCJlc3AiKSwkaW5vdXQzKTsKKwkmbW92ZHFhCSgmUVdQKDE2KjEsImVzcCIpLCRpbm91dDQpOworCSZqZQkoJmxhYmVsKCJ4dHNfZGVjX2ZvdXIiKSk7CisKKwkmbW92ZHFhCSgmUVdQKDE2KjIsImVzcCIpLCRpbm91dDUpOworCSZwc2h1ZmQJKCRpbm91dDUsJHR3dG1wLDB4MTMpOworCSZtb3ZkcWEJKCZRV1AoMTYqMywiZXNwIiksJHR3ZWFrKTsKKwkmcGFkZHEJKCR0d2VhaywkdHdlYWspOwkJIyAmcHNsbHEoJGlub3V0MCwxKTsKKwkmcGFuZAkoJGlub3V0NSwkdHdtYXNrKTsJCSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCSZweG9yCSgkaW5vdXQ1LCR0d2Vhayk7CisKKwkmbW92ZHF1CSgkaW5vdXQwLCZRV1AoMTYqMCwkaW5wKSk7CSMgbG9hZCBpbnB1dAorCSZtb3ZkcXUJKCRpbm91dDEsJlFXUCgxNioxLCRpbnApKTsKKwkmbW92ZHF1CSgkaW5vdXQyLCZRV1AoMTYqMiwkaW5wKSk7CisJJnB4b3IJKCRpbm91dDAsJlFXUCgxNiowLCJlc3AiKSk7CSMgaW5wdXRePXR3ZWFrCisJJm1vdmRxdQkoJGlub3V0MywmUVdQKDE2KjMsJGlucCkpOworCSZweG9yCSgkaW5vdXQxLCZRV1AoMTYqMSwiZXNwIikpOworCSZtb3ZkcXUJKCRpbm91dDQsJlFXUCgxNio0LCRpbnApKTsKKwkmcHhvcgkoJGlub3V0MiwmUVdQKDE2KjIsImVzcCIpKTsKKwkmbGVhCSgkaW5wLCZEV1AoMTYqNSwkaW5wKSk7CisJJnB4b3IJKCRpbm91dDMsJlFXUCgxNiozLCJlc3AiKSk7CisJJm1vdmRxYQkoJlFXUCgxNio0LCJlc3AiKSwkaW5vdXQ1KTsJIyBzYXZlIGxhc3QgdHdlYWsKKwkmcHhvcgkoJGlub3V0NCwkaW5vdXQ1KTsKKworCSZjYWxsCSgiX2Flc25pX2RlY3J5cHQ2Iik7CisKKwkmbW92YXBzCSgkdHdlYWssJlFXUCgxNio0LCJlc3AiKSk7CSMgbGFzdCB0d2VhaworCSZ4b3JwcwkoJGlub3V0MCwmUVdQKDE2KjAsImVzcCIpKTsJIyBvdXRwdXRePXR3ZWFrCisJJnhvcnBzCSgkaW5vdXQxLCZRV1AoMTYqMSwiZXNwIikpOworCSZ4b3JwcwkoJGlub3V0MiwmUVdQKDE2KjIsImVzcCIpKTsKKwkmbW92dXBzCSgmUVdQKDE2KjAsJG91dCksJGlub3V0MCk7CSMgd3JpdGUgb3V0cHV0CisJJnhvcnBzCSgkaW5vdXQzLCZRV1AoMTYqMywiZXNwIikpOworCSZtb3Z1cHMJKCZRV1AoMTYqMSwkb3V0KSwkaW5vdXQxKTsKKwkmeG9ycHMJKCRpbm91dDQsJHR3ZWFrKTsKKwkmbW92dXBzCSgmUVdQKDE2KjIsJG91dCksJGlub3V0Mik7CisJJm1vdnVwcwkoJlFXUCgxNiozLCRvdXQpLCRpbm91dDMpOworCSZtb3Z1cHMJKCZRV1AoMTYqNCwkb3V0KSwkaW5vdXQ0KTsKKwkmbGVhCSgkb3V0LCZEV1AoMTYqNSwkb3V0KSk7CisJJmptcAkoJmxhYmVsKCJ4dHNfZGVjX2RvbmUiKSk7CisKKyZzZXRfbGFiZWwoInh0c19kZWNfb25lIiwxNik7CisJJm1vdnVwcwkoJGlub3V0MCwmUVdQKDE2KjAsJGlucCkpOwkjIGxvYWQgaW5wdXQKKwkmbGVhCSgkaW5wLCZEV1AoMTYqMSwkaW5wKSk7CisJJnhvcnBzCSgkaW5vdXQwLCRpbm91dDMpOwkJIyBpbnB1dF49dHdlYWsKKwlpZiAoJGlubGluZSkKKwl7ICAgJmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImRlYyIpOwl9CisJZWxzZQorCXsgICAmY2FsbAkoIl9hZXNuaV9kZWNyeXB0MSIpOwl9CisJJnhvcnBzCSgkaW5vdXQwLCRpbm91dDMpOwkJIyBvdXRwdXRePXR3ZWFrCisJJm1vdnVwcwkoJlFXUCgxNiowLCRvdXQpLCRpbm91dDApOwkjIHdyaXRlIG91dHB1dAorCSZsZWEJKCRvdXQsJkRXUCgxNioxLCRvdXQpKTsKKworCSZtb3ZkcWEJKCR0d2VhaywkaW5vdXQzKTsJCSMgbGFzdCB0d2VhaworCSZqbXAJKCZsYWJlbCgieHRzX2RlY19kb25lIikpOworCismc2V0X2xhYmVsKCJ4dHNfZGVjX3R3byIsMTYpOworCSZtb3ZhcHMJKCRpbm91dDQsJHR3ZWFrKTsJCSMgcHV0IGFzaWRlIGxhc3QgdHdlYWsKKworCSZtb3Z1cHMJKCRpbm91dDAsJlFXUCgxNiowLCRpbnApKTsJIyBsb2FkIGlucHV0CisJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDE2KjEsJGlucCkpOworCSZsZWEJKCRpbnAsJkRXUCgxNioyLCRpbnApKTsKKwkmeG9ycHMJKCRpbm91dDAsJGlub3V0Myk7CQkjIGlucHV0Xj10d2VhaworCSZ4b3JwcwkoJGlub3V0MSwkaW5vdXQ0KTsKKworCSZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7CisKKwkmeG9ycHMJKCRpbm91dDAsJGlub3V0Myk7CQkjIG91dHB1dF49dHdlYWsKKwkmeG9ycHMJKCRpbm91dDEsJGlub3V0NCk7CisJJm1vdnVwcwkoJlFXUCgxNiowLCRvdXQpLCRpbm91dDApOwkjIHdyaXRlIG91dHB1dAorCSZtb3Z1cHMJKCZRV1AoMTYqMSwkb3V0KSwkaW5vdXQxKTsKKwkmbGVhCSgkb3V0LCZEV1AoMTYqMiwkb3V0KSk7CisKKwkmbW92ZHFhCSgkdHdlYWssJGlub3V0NCk7CQkjIGxhc3QgdHdlYWsKKwkmam1wCSgmbGFiZWwoInh0c19kZWNfZG9uZSIpKTsKKworJnNldF9sYWJlbCgieHRzX2RlY190aHJlZSIsMTYpOworCSZtb3ZhcHMJKCRpbm91dDUsJHR3ZWFrKTsJCSMgcHV0IGFzaWRlIGxhc3QgdHdlYWsKKwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMTYqMCwkaW5wKSk7CSMgbG9hZCBpbnB1dAorCSZtb3Z1cHMJKCRpbm91dDEsJlFXUCgxNioxLCRpbnApKTsKKwkmbW92dXBzCSgkaW5vdXQyLCZRV1AoMTYqMiwkaW5wKSk7CisJJmxlYQkoJGlucCwmRFdQKDE2KjMsJGlucCkpOworCSZ4b3JwcwkoJGlub3V0MCwkaW5vdXQzKTsJCSMgaW5wdXRePXR3ZWFrCisJJnhvcnBzCSgkaW5vdXQxLCRpbm91dDQpOworCSZ4b3JwcwkoJGlub3V0MiwkaW5vdXQ1KTsKKworCSZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7CisKKwkmeG9ycHMJKCRpbm91dDAsJGlub3V0Myk7CQkjIG91dHB1dF49dHdlYWsKKwkmeG9ycHMJKCRpbm91dDEsJGlub3V0NCk7CisJJnhvcnBzCSgkaW5vdXQyLCRpbm91dDUpOworCSZtb3Z1cHMJKCZRV1AoMTYqMCwkb3V0KSwkaW5vdXQwKTsJIyB3cml0ZSBvdXRwdXQKKwkmbW92dXBzCSgmUVdQKDE2KjEsJG91dCksJGlub3V0MSk7CisJJm1vdnVwcwkoJlFXUCgxNioyLCRvdXQpLCRpbm91dDIpOworCSZsZWEJKCRvdXQsJkRXUCgxNiozLCRvdXQpKTsKKworCSZtb3ZkcWEJKCR0d2VhaywkaW5vdXQ1KTsJCSMgbGFzdCB0d2VhaworCSZqbXAJKCZsYWJlbCgieHRzX2RlY19kb25lIikpOworCismc2V0X2xhYmVsKCJ4dHNfZGVjX2ZvdXIiLDE2KTsKKwkmbW92YXBzCSgkaW5vdXQ0LCR0d2Vhayk7CQkjIHB1dCBhc2lkZSBsYXN0IHR3ZWFrCisKKwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMTYqMCwkaW5wKSk7CSMgbG9hZCBpbnB1dAorCSZtb3Z1cHMJKCRpbm91dDEsJlFXUCgxNioxLCRpbnApKTsKKwkmbW92dXBzCSgkaW5vdXQyLCZRV1AoMTYqMiwkaW5wKSk7CisJJnhvcnBzCSgkaW5vdXQwLCZRV1AoMTYqMCwiZXNwIikpOwkjIGlucHV0Xj10d2VhaworCSZtb3Z1cHMJKCRpbm91dDMsJlFXUCgxNiozLCRpbnApKTsKKwkmbGVhCSgkaW5wLCZEV1AoMTYqNCwkaW5wKSk7CisJJnhvcnBzCSgkaW5vdXQxLCZRV1AoMTYqMSwiZXNwIikpOworCSZ4b3JwcwkoJGlub3V0MiwkaW5vdXQ1KTsKKwkmeG9ycHMJKCRpbm91dDMsJGlub3V0NCk7CisKKwkmY2FsbAkoIl9hZXNuaV9kZWNyeXB0NCIpOworCisJJnhvcnBzCSgkaW5vdXQwLCZRV1AoMTYqMCwiZXNwIikpOwkjIG91dHB1dF49dHdlYWsKKwkmeG9ycHMJKCRpbm91dDEsJlFXUCgxNioxLCJlc3AiKSk7CisJJnhvcnBzCSgkaW5vdXQyLCRpbm91dDUpOworCSZtb3Z1cHMJKCZRV1AoMTYqMCwkb3V0KSwkaW5vdXQwKTsJIyB3cml0ZSBvdXRwdXQKKwkmeG9ycHMJKCRpbm91dDMsJGlub3V0NCk7CisJJm1vdnVwcwkoJlFXUCgxNioxLCRvdXQpLCRpbm91dDEpOworCSZtb3Z1cHMJKCZRV1AoMTYqMiwkb3V0KSwkaW5vdXQyKTsKKwkmbW92dXBzCSgmUVdQKDE2KjMsJG91dCksJGlub3V0Myk7CisJJmxlYQkoJG91dCwmRFdQKDE2KjQsJG91dCkpOworCisJJm1vdmRxYQkoJHR3ZWFrLCRpbm91dDQpOwkJIyBsYXN0IHR3ZWFrCisJJmptcAkoJmxhYmVsKCJ4dHNfZGVjX2RvbmUiKSk7CisKKyZzZXRfbGFiZWwoInh0c19kZWNfZG9uZTZ4IiwxNik7CQkjICR0d2VhayBpcyBwcmUtY2FsY3VsYXRlZAorCSZtb3YJKCRsZW4sJkRXUCgxNio3KzAsImVzcCIpKTsJIyByZXN0b3JlIG9yaWdpbmFsICRsZW4KKwkmYW5kCSgkbGVuLDE1KTsKKwkmanoJKCZsYWJlbCgieHRzX2RlY19yZXQiKSk7CisJJm1vdgkoJkRXUCgxNio3KzAsImVzcCIpLCRsZW4pOwkjIHNhdmUgJGxlbiUxNgorCSZqbXAJKCZsYWJlbCgieHRzX2RlY19vbmx5X29uZV9tb3JlIikpOworCismc2V0X2xhYmVsKCJ4dHNfZGVjX2RvbmUiLDE2KTsKKwkmbW92CSgkbGVuLCZEV1AoMTYqNyswLCJlc3AiKSk7CSMgcmVzdG9yZSBvcmlnaW5hbCAkbGVuCisJJnB4b3IJKCR0d3RtcCwkdHd0bXApOworCSZhbmQJKCRsZW4sMTUpOworCSZqegkoJmxhYmVsKCJ4dHNfZGVjX3JldCIpKTsKKworCSZwY21wZ3RkKCR0d3RtcCwkdHdlYWspOwkJIyBicm9hZGNhc3QgdXBwZXIgYml0cworCSZtb3YJKCZEV1AoMTYqNyswLCJlc3AiKSwkbGVuKTsJIyBzYXZlICRsZW4lMTYKKwkmcHNodWZkCSgkdHdyZXMsJHR3dG1wLDB4MTMpOworCSZweG9yCSgkdHd0bXAsJHR3dG1wKTsKKwkmbW92ZHFhCSgkdHdtYXNrLCZRV1AoMTYqNiwiZXNwIikpOworCSZwYWRkcQkoJHR3ZWFrLCR0d2Vhayk7CQkjICZwc2xscSgkdHdlYWssMSk7CisJJnBhbmQJKCR0d3JlcywkdHdtYXNrKTsJCSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCSZwY21wZ3RkKCR0d3RtcCwkdHdlYWspOwkJIyBicm9hZGNhc3QgdXBwZXIgYml0cworCSZweG9yCSgkdHdlYWssJHR3cmVzKTsKKworJnNldF9sYWJlbCgieHRzX2RlY19vbmx5X29uZV9tb3JlIik7CisJJnBzaHVmZAkoJGlub3V0MywkdHd0bXAsMHgxMyk7CisJJm1vdmRxYQkoJGlub3V0NCwkdHdlYWspOwkJIyBwdXQgYXNpZGUgcHJldmlvdXMgdHdlYWsKKwkmcGFkZHEJKCR0d2VhaywkdHdlYWspOwkJIyAmcHNsbHEoJHR3ZWFrLDEpOworCSZwYW5kCSgkaW5vdXQzLCR0d21hc2spOwkJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJJnB4b3IJKCRpbm91dDMsJHR3ZWFrKTsKKworCSZtb3YJKCRrZXksJGtleV8pOwkJCSMgcmVzdG9yZSAka2V5CisJJm1vdgkoJHJvdW5kcywkcm91bmRzXyk7CQkjIHJlc3RvcmUgJHJvdW5kcworCisJJm1vdnVwcwkoJGlub3V0MCwmUVdQKDAsJGlucCkpOwkJIyBsb2FkIGlucHV0CisJJnhvcnBzCSgkaW5vdXQwLCRpbm91dDMpOwkJIyBpbnB1dF49dHdlYWsKKwlpZiAoJGlubGluZSkKKwl7ICAgJmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImRlYyIpOwl9CisJZWxzZQorCXsgICAmY2FsbAkoIl9hZXNuaV9kZWNyeXB0MSIpOwl9CisJJnhvcnBzCSgkaW5vdXQwLCRpbm91dDMpOwkJIyBvdXRwdXRePXR3ZWFrCisJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOwkJIyB3cml0ZSBvdXRwdXQKKworJnNldF9sYWJlbCgieHRzX2RlY19zdGVhbCIpOworCSZtb3Z6CSgkcm91bmRzLCZCUCgxNiwkaW5wKSk7CisJJm1vdnoJKCRrZXksJkJQKDAsJG91dCkpOworCSZsZWEJKCRpbnAsJkRXUCgxLCRpbnApKTsKKwkmbW92CSgmQlAoMCwkb3V0KSwmTEIoJHJvdW5kcykpOworCSZtb3YJKCZCUCgxNiwkb3V0KSwmTEIoJGtleSkpOworCSZsZWEJKCRvdXQsJkRXUCgxLCRvdXQpKTsKKwkmc3ViCSgkbGVuLDEpOworCSZqbnoJKCZsYWJlbCgieHRzX2RlY19zdGVhbCIpKTsKKworCSZzdWIJKCRvdXQsJkRXUCgxNio3KzAsImVzcCIpKTsJIyByZXdpbmQgJG91dAorCSZtb3YJKCRrZXksJGtleV8pOwkJCSMgcmVzdG9yZSAka2V5CisJJm1vdgkoJHJvdW5kcywkcm91bmRzXyk7CQkjIHJlc3RvcmUgJHJvdW5kcworCisJJm1vdnVwcwkoJGlub3V0MCwmUVdQKDAsJG91dCkpOwkJIyBsb2FkIGlucHV0CisJJnhvcnBzCSgkaW5vdXQwLCRpbm91dDQpOwkJIyBpbnB1dF49dHdlYWsKKwlpZiAoJGlubGluZSkKKwl7ICAgJmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImRlYyIpOwl9CisJZWxzZQorCXsgICAmY2FsbAkoIl9hZXNuaV9kZWNyeXB0MSIpOwl9CisJJnhvcnBzCSgkaW5vdXQwLCRpbm91dDQpOwkJIyBvdXRwdXRePXR3ZWFrCisJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOwkJIyB3cml0ZSBvdXRwdXQKKworJnNldF9sYWJlbCgieHRzX2RlY19yZXQiKTsKKwkmbW92CSgiZXNwIiwmRFdQKDE2KjcrNCwiZXNwIikpOwkjIHJlc3RvcmUgJWVzcAorJmZ1bmN0aW9uX2VuZCgiYWVzbmlfeHRzX2RlY3J5cHQiKTsKK30KK30KKwwKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgdm9pZCAkUFJFRklYX2NiY19lbmNyeXB0IChjb25zdCB2b2lkICppbnAsIHZvaWQgKm91dCwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqaXZwLGNvbnN0IGludCBlbmMpOworJmZ1bmN0aW9uX2JlZ2luKCIke1BSRUZJWH1fY2JjX2VuY3J5cHQiKTsKKwkmbW92CSgkaW5wLCZ3cGFyYW0oMCkpOworCSZtb3YJKCRyb3VuZHNfLCJlc3AiKTsKKwkmbW92CSgkb3V0LCZ3cGFyYW0oMSkpOworCSZzdWIJKCRyb3VuZHNfLDI0KTsKKwkmbW92CSgkbGVuLCZ3cGFyYW0oMikpOworCSZhbmQJKCRyb3VuZHNfLC0xNik7CisJJm1vdgkoJGtleSwmd3BhcmFtKDMpKTsKKwkmbW92CSgka2V5Xywmd3BhcmFtKDQpKTsKKwkmdGVzdAkoJGxlbiwkbGVuKTsKKwkmanoJKCZsYWJlbCgiY2JjX2Fib3J0IikpOworCisJJmNtcAkoJndwYXJhbSg1KSwwKTsKKwkmeGNoZwkoJHJvdW5kc18sImVzcCIpOwkJIyBhbGxvY2EKKwkmbW92dXBzCSgkaXZlYywmUVdQKDAsJGtleV8pKTsJCSMgbG9hZCBJVgorCSZtb3YJKCRyb3VuZHMsJkRXUCgyNDAsJGtleSkpOworCSZtb3YJKCRrZXlfLCRrZXkpOwkJCSMgYmFja3VwICRrZXkKKwkmbW92CSgmRFdQKDE2LCJlc3AiKSwkcm91bmRzXyk7CSMgc2F2ZSBvcmlnaW5hbCAlZXNwCisJJm1vdgkoJHJvdW5kc18sJHJvdW5kcyk7CQkjIGJhY2t1cCAkcm91bmRzCisJJmplCSgmbGFiZWwoImNiY19kZWNyeXB0IikpOworCisJJm1vdmFwcwkoJGlub3V0MCwkaXZlYyk7CisJJmNtcAkoJGxlbiwxNik7CisJJmpiCSgmbGFiZWwoImNiY19lbmNfdGFpbCIpKTsKKwkmc3ViCSgkbGVuLDE2KTsKKwkmam1wCSgmbGFiZWwoImNiY19lbmNfbG9vcCIpKTsKKworJnNldF9sYWJlbCgiY2JjX2VuY19sb29wIiwxNik7CisJJm1vdnVwcwkoJGl2ZWMsJlFXUCgwLCRpbnApKTsJCSMgaW5wdXQgYWN0dWFsbHkKKwkmbGVhCSgkaW5wLCZEV1AoMTYsJGlucCkpOworCWlmICgkaW5saW5lKQorCXsgICAmYWVzbmlfaW5saW5lX2dlbmVyYXRlMSgiZW5jIiwkaW5vdXQwLCRpdmVjKTsJfQorCWVsc2UKKwl7ICAgJnhvcnBzKCRpbm91dDAsJGl2ZWMpOyAmY2FsbCgiX2Flc25pX2VuY3J5cHQxIik7CX0KKwkmbW92CSgkcm91bmRzLCRyb3VuZHNfKTsJIyByZXN0b3JlICRyb3VuZHMKKwkmbW92CSgka2V5LCRrZXlfKTsJCSMgcmVzdG9yZSAka2V5CisJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOwkjIHN0b3JlIG91dHB1dAorCSZsZWEJKCRvdXQsJkRXUCgxNiwkb3V0KSk7CisJJnN1YgkoJGxlbiwxNik7CisJJmpuYwkoJmxhYmVsKCJjYmNfZW5jX2xvb3AiKSk7CisJJmFkZAkoJGxlbiwxNik7CisJJmpuegkoJmxhYmVsKCJjYmNfZW5jX3RhaWwiKSk7CisJJm1vdmFwcwkoJGl2ZWMsJGlub3V0MCk7CisJJmptcAkoJmxhYmVsKCJjYmNfcmV0IikpOworCismc2V0X2xhYmVsKCJjYmNfZW5jX3RhaWwiKTsKKwkmbW92CSgiZWN4IiwkbGVuKTsJCSMgemFwcyAkcm91bmRzCisJJmRhdGFfd29yZCgweEE0RjNGNjg5KTsJCSMgcmVwIG1vdnNiCisJJm1vdgkoImVjeCIsMTYpOwkJIyB6ZXJvIHRhaWwKKwkmc3ViCSgiZWN4IiwkbGVuKTsKKwkmeG9yCSgiZWF4IiwiZWF4Iik7CQkjIHphcHMgJGxlbgorCSZkYXRhX3dvcmQoMHhBQUYzRjY4OSk7CQkjIHJlcCBzdG9zYgorCSZsZWEJKCRvdXQsJkRXUCgtMTYsJG91dCkpOwkjIHJld2luZCAkb3V0IGJ5IDEgYmxvY2sKKwkmbW92CSgkcm91bmRzLCRyb3VuZHNfKTsJIyByZXN0b3JlICRyb3VuZHMKKwkmbW92CSgkaW5wLCRvdXQpOwkJIyAkaW5wIGFuZCAkb3V0IGFyZSB0aGUgc2FtZQorCSZtb3YJKCRrZXksJGtleV8pOwkJIyByZXN0b3JlICRrZXkKKwkmam1wCSgmbGFiZWwoImNiY19lbmNfbG9vcCIpKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyZzZXRfbGFiZWwoImNiY19kZWNyeXB0IiwxNik7CisJJmNtcAkoJGxlbiwweDUwKTsKKwkmamJlCSgmbGFiZWwoImNiY19kZWNfdGFpbCIpKTsKKwkmbW92YXBzCSgmUVdQKDAsImVzcCIpLCRpdmVjKTsJCSMgc2F2ZSBJVgorCSZzdWIJKCRsZW4sMHg1MCk7CisJJmptcAkoJmxhYmVsKCJjYmNfZGVjX2xvb3A2X2VudGVyIikpOworCismc2V0X2xhYmVsKCJjYmNfZGVjX2xvb3A2IiwxNik7CisJJm1vdmFwcwkoJlFXUCgwLCJlc3AiKSwkcm5ka2V5MCk7CSMgc2F2ZSBJVgorCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQ1KTsKKwkmbGVhCSgkb3V0LCZEV1AoMHgxMCwkb3V0KSk7Cismc2V0X2xhYmVsKCJjYmNfZGVjX2xvb3A2X2VudGVyIik7CisJJm1vdmRxdQkoJGlub3V0MCwmUVdQKDAsJGlucCkpOworCSZtb3ZkcXUJKCRpbm91dDEsJlFXUCgweDEwLCRpbnApKTsKKwkmbW92ZHF1CSgkaW5vdXQyLCZRV1AoMHgyMCwkaW5wKSk7CisJJm1vdmRxdQkoJGlub3V0MywmUVdQKDB4MzAsJGlucCkpOworCSZtb3ZkcXUJKCRpbm91dDQsJlFXUCgweDQwLCRpbnApKTsKKwkmbW92ZHF1CSgkaW5vdXQ1LCZRV1AoMHg1MCwkaW5wKSk7CisKKwkmY2FsbAkoIl9hZXNuaV9kZWNyeXB0NiIpOworCisJJm1vdnVwcwkoJHJuZGtleTEsJlFXUCgwLCRpbnApKTsKKwkmbW92dXBzCSgkcm5ka2V5MCwmUVdQKDB4MTAsJGlucCkpOworCSZ4b3JwcwkoJGlub3V0MCwmUVdQKDAsImVzcCIpKTsJIyBePUlWCisJJnhvcnBzCSgkaW5vdXQxLCRybmRrZXkxKTsKKwkmbW92dXBzCSgkcm5ka2V5MSwmUVdQKDB4MjAsJGlucCkpOworCSZ4b3JwcwkoJGlub3V0Miwkcm5ka2V5MCk7CisJJm1vdnVwcwkoJHJuZGtleTAsJlFXUCgweDMwLCRpbnApKTsKKwkmeG9ycHMJKCRpbm91dDMsJHJuZGtleTEpOworCSZtb3Z1cHMJKCRybmRrZXkxLCZRV1AoMHg0MCwkaW5wKSk7CisJJnhvcnBzCSgkaW5vdXQ0LCRybmRrZXkwKTsKKwkmbW92dXBzCSgkcm5ka2V5MCwmUVdQKDB4NTAsJGlucCkpOwkjIElWCisJJnhvcnBzCSgkaW5vdXQ1LCRybmRrZXkxKTsKKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisJJm1vdnVwcwkoJlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOworCSZsZWEJKCRpbnAsJkRXUCgweDYwLCRpbnApKTsKKwkmbW92dXBzCSgmUVdQKDB4MjAsJG91dCksJGlub3V0Mik7CisJJm1vdgkoJHJvdW5kcywkcm91bmRzXykJCSMgcmVzdG9yZSAkcm91bmRzCisJJm1vdnVwcwkoJlFXUCgweDMwLCRvdXQpLCRpbm91dDMpOworCSZtb3YJKCRrZXksJGtleV8pOwkJCSMgcmVzdG9yZSAka2V5CisJJm1vdnVwcwkoJlFXUCgweDQwLCRvdXQpLCRpbm91dDQpOworCSZsZWEJKCRvdXQsJkRXUCgweDUwLCRvdXQpKTsKKwkmc3ViCSgkbGVuLDB4NjApOworCSZqYQkoJmxhYmVsKCJjYmNfZGVjX2xvb3A2IikpOworCisJJm1vdmFwcwkoJGlub3V0MCwkaW5vdXQ1KTsKKwkmbW92YXBzCSgkaXZlYywkcm5ka2V5MCk7CisJJmFkZAkoJGxlbiwweDUwKTsKKwkmamxlCSgmbGFiZWwoImNiY19kZWNfdGFpbF9jb2xsZWN0ZWQiKSk7CisJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOworCSZsZWEJKCRvdXQsJkRXUCgweDEwLCRvdXQpKTsKKyZzZXRfbGFiZWwoImNiY19kZWNfdGFpbCIpOworCSZtb3Z1cHMJKCRpbm91dDAsJlFXUCgwLCRpbnApKTsKKwkmbW92YXBzCSgkaW4wLCRpbm91dDApOworCSZjbXAJKCRsZW4sMHgxMCk7CisJJmpiZQkoJmxhYmVsKCJjYmNfZGVjX29uZSIpKTsKKworCSZtb3Z1cHMJKCRpbm91dDEsJlFXUCgweDEwLCRpbnApKTsKKwkmbW92YXBzCSgkaW4xLCRpbm91dDEpOworCSZjbXAJKCRsZW4sMHgyMCk7CisJJmpiZQkoJmxhYmVsKCJjYmNfZGVjX3R3byIpKTsKKworCSZtb3Z1cHMJKCRpbm91dDIsJlFXUCgweDIwLCRpbnApKTsKKwkmY21wCSgkbGVuLDB4MzApOworCSZqYmUJKCZsYWJlbCgiY2JjX2RlY190aHJlZSIpKTsKKworCSZtb3Z1cHMJKCRpbm91dDMsJlFXUCgweDMwLCRpbnApKTsKKwkmY21wCSgkbGVuLDB4NDApOworCSZqYmUJKCZsYWJlbCgiY2JjX2RlY19mb3VyIikpOworCisJJm1vdnVwcwkoJGlub3V0NCwmUVdQKDB4NDAsJGlucCkpOworCSZtb3ZhcHMJKCZRV1AoMCwiZXNwIiksJGl2ZWMpOwkJIyBzYXZlIElWCisJJm1vdnVwcwkoJGlub3V0MCwmUVdQKDAsJGlucCkpOworCSZ4b3JwcwkoJGlub3V0NSwkaW5vdXQ1KTsKKwkmY2FsbAkoIl9hZXNuaV9kZWNyeXB0NiIpOworCSZtb3Z1cHMJKCRybmRrZXkxLCZRV1AoMCwkaW5wKSk7CisJJm1vdnVwcwkoJHJuZGtleTAsJlFXUCgweDEwLCRpbnApKTsKKwkmeG9ycHMJKCRpbm91dDAsJlFXUCgwLCJlc3AiKSk7CSMgXj0gSVYKKwkmeG9ycHMJKCRpbm91dDEsJHJuZGtleTEpOworCSZtb3Z1cHMJKCRybmRrZXkxLCZRV1AoMHgyMCwkaW5wKSk7CisJJnhvcnBzCSgkaW5vdXQyLCRybmRrZXkwKTsKKwkmbW92dXBzCSgkcm5ka2V5MCwmUVdQKDB4MzAsJGlucCkpOworCSZ4b3JwcwkoJGlub3V0Mywkcm5ka2V5MSk7CisJJm1vdnVwcwkoJGl2ZWMsJlFXUCgweDQwLCRpbnApKTsJIyBJVgorCSZ4b3JwcwkoJGlub3V0NCwkcm5ka2V5MCk7CisJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOworCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKKwkmbW92dXBzCSgmUVdQKDB4MjAsJG91dCksJGlub3V0Mik7CisJJm1vdnVwcwkoJlFXUCgweDMwLCRvdXQpLCRpbm91dDMpOworCSZsZWEJKCRvdXQsJkRXUCgweDQwLCRvdXQpKTsKKwkmbW92YXBzCSgkaW5vdXQwLCRpbm91dDQpOworCSZzdWIJKCRsZW4sMHg1MCk7CisJJmptcAkoJmxhYmVsKCJjYmNfZGVjX3RhaWxfY29sbGVjdGVkIikpOworCismc2V0X2xhYmVsKCJjYmNfZGVjX29uZSIsMTYpOworCWlmICgkaW5saW5lKQorCXsgICAmYWVzbmlfaW5saW5lX2dlbmVyYXRlMSgiZGVjIik7CX0KKwllbHNlCisJeyAgICZjYWxsCSgiX2Flc25pX2RlY3J5cHQxIik7CX0KKwkmeG9ycHMJKCRpbm91dDAsJGl2ZWMpOworCSZtb3ZhcHMJKCRpdmVjLCRpbjApOworCSZzdWIJKCRsZW4sMHgxMCk7CisJJmptcAkoJmxhYmVsKCJjYmNfZGVjX3RhaWxfY29sbGVjdGVkIikpOworCismc2V0X2xhYmVsKCJjYmNfZGVjX3R3byIsMTYpOworCSZ4b3JwcwkoJGlub3V0MiwkaW5vdXQyKTsKKwkmY2FsbAkoIl9hZXNuaV9kZWNyeXB0MyIpOworCSZ4b3JwcwkoJGlub3V0MCwkaXZlYyk7CisJJnhvcnBzCSgkaW5vdXQxLCRpbjApOworCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKwkmbW92YXBzCSgkaW5vdXQwLCRpbm91dDEpOworCSZsZWEJKCRvdXQsJkRXUCgweDEwLCRvdXQpKTsKKwkmbW92YXBzCSgkaXZlYywkaW4xKTsKKwkmc3ViCSgkbGVuLDB4MjApOworCSZqbXAJKCZsYWJlbCgiY2JjX2RlY190YWlsX2NvbGxlY3RlZCIpKTsKKworJnNldF9sYWJlbCgiY2JjX2RlY190aHJlZSIsMTYpOworCSZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7CisJJnhvcnBzCSgkaW5vdXQwLCRpdmVjKTsKKwkmeG9ycHMJKCRpbm91dDEsJGluMCk7CisJJnhvcnBzCSgkaW5vdXQyLCRpbjEpOworCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKwkmbW92YXBzCSgkaW5vdXQwLCRpbm91dDIpOworCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKKwkmbGVhCSgkb3V0LCZEV1AoMHgyMCwkb3V0KSk7CisJJm1vdnVwcwkoJGl2ZWMsJlFXUCgweDIwLCRpbnApKTsKKwkmc3ViCSgkbGVuLDB4MzApOworCSZqbXAJKCZsYWJlbCgiY2JjX2RlY190YWlsX2NvbGxlY3RlZCIpKTsKKworJnNldF9sYWJlbCgiY2JjX2RlY19mb3VyIiwxNik7CisJJmNhbGwJKCJfYWVzbmlfZGVjcnlwdDQiKTsKKwkmbW92dXBzCSgkcm5ka2V5MSwmUVdQKDB4MTAsJGlucCkpOworCSZtb3Z1cHMJKCRybmRrZXkwLCZRV1AoMHgyMCwkaW5wKSk7CisJJnhvcnBzCSgkaW5vdXQwLCRpdmVjKTsKKwkmbW92dXBzCSgkaXZlYywmUVdQKDB4MzAsJGlucCkpOworCSZ4b3JwcwkoJGlub3V0MSwkaW4wKTsKKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisJJnhvcnBzCSgkaW5vdXQyLCRybmRrZXkxKTsKKwkmbW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisJJnhvcnBzCSgkaW5vdXQzLCRybmRrZXkwKTsKKwkmbW92dXBzCSgmUVdQKDB4MjAsJG91dCksJGlub3V0Mik7CisJJmxlYQkoJG91dCwmRFdQKDB4MzAsJG91dCkpOworCSZtb3ZhcHMJKCRpbm91dDAsJGlub3V0Myk7CisJJnN1YgkoJGxlbiwweDQwKTsKKworJnNldF9sYWJlbCgiY2JjX2RlY190YWlsX2NvbGxlY3RlZCIpOworCSZhbmQJKCRsZW4sMTUpOworCSZqbnoJKCZsYWJlbCgiY2JjX2RlY190YWlsX3BhcnRpYWwiKSk7CisJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOworCSZqbXAJKCZsYWJlbCgiY2JjX3JldCIpKTsKKworJnNldF9sYWJlbCgiY2JjX2RlY190YWlsX3BhcnRpYWwiLDE2KTsKKwkmbW92YXBzCSgmUVdQKDAsImVzcCIpLCRpbm91dDApOworCSZtb3YJKCJlY3giLDE2KTsKKwkmbW92CSgkaW5wLCJlc3AiKTsKKwkmc3ViCSgiZWN4IiwkbGVuKTsKKwkmZGF0YV93b3JkKDB4QTRGM0Y2ODkpOwkJIyByZXAgbW92c2IKKworJnNldF9sYWJlbCgiY2JjX3JldCIpOworCSZtb3YJKCJlc3AiLCZEV1AoMTYsImVzcCIpKTsJIyBwdWxsIG9yaWdpbmFsICVlc3AKKwkmbW92CSgka2V5Xywmd3BhcmFtKDQpKTsKKwkmbW92dXBzCSgmUVdQKDAsJGtleV8pLCRpdmVjKTsJIyBvdXRwdXQgSVYKKyZzZXRfbGFiZWwoImNiY19hYm9ydCIpOworJmZ1bmN0aW9uX2VuZCgiJHtQUkVGSVh9X2NiY19lbmNyeXB0Iik7CisMCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIE1lY2hhbmljYWwgcG9ydCBmcm9tIGFlc25pLXg4Nl82NC5wbC4KKyMKKyMgX2Flc25pX3NldF9lbmNyeXB0X2tleSBpcyBwcml2YXRlIGludGVyZmFjZSwKKyMgaW5wdXQ6CisjCSJlYXgiCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXkKKyMJJHJvdW5kcwlpbnQgYml0cworIwkka2V5CUFFU19LRVkgKmtleQorIyBvdXRwdXQ6CisjCSJlYXgiCXJldHVybiBjb2RlCisjCSRyb3VuZAlyb3VuZHMKKworJmZ1bmN0aW9uX2JlZ2luX0IoIl9hZXNuaV9zZXRfZW5jcnlwdF9rZXkiKTsKKwkmdGVzdAkoImVheCIsImVheCIpOworCSZqegkoJmxhYmVsKCJiYWRfcG9pbnRlciIpKTsKKwkmdGVzdAkoJGtleSwka2V5KTsKKwkmanoJKCZsYWJlbCgiYmFkX3BvaW50ZXIiKSk7CisKKwkmbW92dXBzCSgieG1tMCIsJlFXUCgwLCJlYXgiKSk7CSMgcHVsbCBmaXJzdCAxMjggYml0cyBvZiAqdXNlcktleQorCSZ4b3JwcwkoInhtbTQiLCJ4bW00Iik7CSMgbG93IGR3b3JkIG9mIHhtbTQgaXMgYXNzdW1lZCAwCisJJmxlYQkoJGtleSwmRFdQKDE2LCRrZXkpKTsKKwkmY21wCSgkcm91bmRzLDI1Nik7CisJJmplCSgmbGFiZWwoIjE0cm91bmRzIikpOworCSZjbXAJKCRyb3VuZHMsMTkyKTsKKwkmamUJKCZsYWJlbCgiMTJyb3VuZHMiKSk7CisJJmNtcAkoJHJvdW5kcywxMjgpOworCSZqbmUJKCZsYWJlbCgiYmFkX2tleWJpdHMiKSk7CisKKyZzZXRfbGFiZWwoIjEwcm91bmRzIiwxNik7CisJJm1vdgkJKCRyb3VuZHMsOSk7CisJJiRtb3Zla2V5CSgmUVdQKC0xNiwka2V5KSwieG1tMCIpOwkjIHJvdW5kIDAKKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgwMSk7CQkjIHJvdW5kIDEKKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOF9jb2xkIikpOworCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDIpOwkJIyByb3VuZCAyCisJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MDQpOwkJIyByb3VuZCAzCisJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MDgpOwkJIyByb3VuZCA0CisJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MTApOwkJIyByb3VuZCA1CisJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MjApOwkJIyByb3VuZCA2CisJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4NDApOwkJIyByb3VuZCA3CisJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4ODApOwkJIyByb3VuZCA4CisJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MWIpOwkJIyByb3VuZCA5CisJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MzYpOwkJIyByb3VuZCAxMAorCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTI4IikpOworCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7CisJJm1vdgkJKCZEV1AoODAsJGtleSksJHJvdW5kcyk7CisJJnhvcgkJKCJlYXgiLCJlYXgiKTsKKwkmcmV0KCk7CisKKyZzZXRfbGFiZWwoImtleV8xMjgiLDE2KTsKKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1tMCIpOworCSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkpOworJnNldF9sYWJlbCgia2V5XzEyOF9jb2xkIik7CisJJnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIwMDAxMDAwMCk7CisJJnhvcnBzCQkoInhtbTAiLCJ4bW00Iik7CisJJnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIxMDAwMTEwMCk7CisJJnhvcnBzCQkoInhtbTAiLCJ4bW00Iik7CisJJnNodWZwcwkJKCJ4bW0xIiwieG1tMSIsMGIxMTExMTExMSk7CSMgY3JpdGljYWwgcGF0aAorCSZ4b3JwcwkJKCJ4bW0wIiwieG1tMSIpOworCSZyZXQoKTsKKworJnNldF9sYWJlbCgiMTJyb3VuZHMiLDE2KTsKKwkmbW92cQkJKCJ4bW0yIiwmUVdQKDE2LCJlYXgiKSk7CSMgcmVtYWluaW5nIDEvMyBvZiAqdXNlcktleQorCSZtb3YJCSgkcm91bmRzLDExKTsKKwkmJG1vdmVrZXkJKCZRV1AoLTE2LCRrZXkpLCJ4bW0wIikJCSMgcm91bmQgMAorCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDAxKTsJCSMgcm91bmQgMSwyCisJJmNhbGwJCSgmbGFiZWwoImtleV8xOTJhX2NvbGQiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDIpOwkJIyByb3VuZCAyLDMKKwkmY2FsbAkJKCZsYWJlbCgia2V5XzE5MmIiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDQpOwkJIyByb3VuZCA0LDUKKwkmY2FsbAkJKCZsYWJlbCgia2V5XzE5MmEiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDgpOwkJIyByb3VuZCA1LDYKKwkmY2FsbAkJKCZsYWJlbCgia2V5XzE5MmIiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MTApOwkJIyByb3VuZCA3LDgKKwkmY2FsbAkJKCZsYWJlbCgia2V5XzE5MmEiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MjApOwkJIyByb3VuZCA4LDkKKwkmY2FsbAkJKCZsYWJlbCgia2V5XzE5MmIiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4NDApOwkJIyByb3VuZCAxMCwxMQorCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTkyYSIpKTsKKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHg4MCk7CQkjIHJvdW5kIDExLDEyCisJJmNhbGwJCSgmbGFiZWwoImtleV8xOTJiIikpOworCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7CisJJm1vdgkJKCZEV1AoNDgsJGtleSksJHJvdW5kcyk7CisJJnhvcgkJKCJlYXgiLCJlYXgiKTsKKwkmcmV0KCk7CisKKyZzZXRfbGFiZWwoImtleV8xOTJhIiwxNik7CisJJiRtb3Zla2V5CSgmUVdQKDAsJGtleSksInhtbTAiKTsKKwkmbGVhCQkoJGtleSwmRFdQKDE2LCRrZXkpKTsKKyZzZXRfbGFiZWwoImtleV8xOTJhX2NvbGQiLDE2KTsKKwkmbW92YXBzCQkoInhtbTUiLCJ4bW0yIik7Cismc2V0X2xhYmVsKCJrZXlfMTkyYl93YXJtIik7CisJJnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIwMDAxMDAwMCk7CisJJm1vdmRxYQkJKCJ4bW0zIiwieG1tMiIpOworCSZ4b3JwcwkJKCJ4bW0wIiwieG1tNCIpOworCSZzaHVmcHMJCSgieG1tNCIsInhtbTAiLDBiMTAwMDExMDApOworCSZwc2xsZHEJCSgieG1tMyIsNCk7CisJJnhvcnBzCQkoInhtbTAiLCJ4bW00Iik7CisJJnBzaHVmZAkJKCJ4bW0xIiwieG1tMSIsMGIwMTAxMDEwMSk7CSMgY3JpdGljYWwgcGF0aAorCSZweG9yCQkoInhtbTIiLCJ4bW0zIik7CisJJnB4b3IJCSgieG1tMCIsInhtbTEiKTsKKwkmcHNodWZkCQkoInhtbTMiLCJ4bW0wIiwwYjExMTExMTExKTsKKwkmcHhvcgkJKCJ4bW0yIiwieG1tMyIpOworCSZyZXQoKTsKKworJnNldF9sYWJlbCgia2V5XzE5MmIiLDE2KTsKKwkmbW92YXBzCQkoInhtbTMiLCJ4bW0wIik7CisJJnNodWZwcwkJKCJ4bW01IiwieG1tMCIsMGIwMTAwMDEwMCk7CisJJiRtb3Zla2V5CSgmUVdQKDAsJGtleSksInhtbTUiKTsKKwkmc2h1ZnBzCQkoInhtbTMiLCJ4bW0yIiwwYjAxMDAxMTEwKTsKKwkmJG1vdmVrZXkJKCZRV1AoMTYsJGtleSksInhtbTMiKTsKKwkmbGVhCQkoJGtleSwmRFdQKDMyLCRrZXkpKTsKKwkmam1wCQkoJmxhYmVsKCJrZXlfMTkyYl93YXJtIikpOworCismc2V0X2xhYmVsKCIxNHJvdW5kcyIsMTYpOworCSZtb3Z1cHMJCSgieG1tMiIsJlFXUCgxNiwiZWF4IikpOwkjIHJlbWFpbmluZyBoYWxmIG9mICp1c2VyS2V5CisJJm1vdgkJKCRyb3VuZHMsMTMpOworCSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkpOworCSYkbW92ZWtleQkoJlFXUCgtMzIsJGtleSksInhtbTAiKTsJIyByb3VuZCAwCisJJiRtb3Zla2V5CSgmUVdQKC0xNiwka2V5KSwieG1tMiIpOwkjIHJvdW5kIDEKKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgwMSk7CQkjIHJvdW5kIDIKKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmFfY29sZCIpKTsKKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgwMSk7CQkjIHJvdW5kIDMKKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmIiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDIpOwkJIyByb3VuZCA0CisJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZhIikpOworCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDAyKTsJCSMgcm91bmQgNQorCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YiIpKTsKKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgwNCk7CQkjIHJvdW5kIDYKKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmEiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MDQpOwkJIyByb3VuZCA3CisJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZiIikpOworCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDA4KTsJCSMgcm91bmQgOAorCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgwOCk7CQkjIHJvdW5kIDkKKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmIiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MTApOwkJIyByb3VuZCAxMAorCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgxMCk7CQkjIHJvdW5kIDExCisJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZiIikpOworCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDIwKTsJCSMgcm91bmQgMTIKKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmEiKSk7CisJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MjApOwkJIyByb3VuZCAxMworCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YiIpKTsKKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHg0MCk7CQkjIHJvdW5kIDE0CisJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZhIikpOworCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7CisJJm1vdgkJKCZEV1AoMTYsJGtleSksJHJvdW5kcyk7CisJJnhvcgkJKCJlYXgiLCJlYXgiKTsKKwkmcmV0KCk7CisKKyZzZXRfbGFiZWwoImtleV8yNTZhIiwxNik7CisJJiRtb3Zla2V5CSgmUVdQKDAsJGtleSksInhtbTIiKTsKKwkmbGVhCQkoJGtleSwmRFdQKDE2LCRrZXkpKTsKKyZzZXRfbGFiZWwoImtleV8yNTZhX2NvbGQiKTsKKwkmc2h1ZnBzCQkoInhtbTQiLCJ4bW0wIiwwYjAwMDEwMDAwKTsKKwkmeG9ycHMJCSgieG1tMCIsInhtbTQiKTsKKwkmc2h1ZnBzCQkoInhtbTQiLCJ4bW0wIiwwYjEwMDAxMTAwKTsKKwkmeG9ycHMJCSgieG1tMCIsInhtbTQiKTsKKwkmc2h1ZnBzCQkoInhtbTEiLCJ4bW0xIiwwYjExMTExMTExKTsJIyBjcml0aWNhbCBwYXRoCisJJnhvcnBzCQkoInhtbTAiLCJ4bW0xIik7CisJJnJldCgpOworCismc2V0X2xhYmVsKCJrZXlfMjU2YiIsMTYpOworCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7CisJJmxlYQkJKCRrZXksJkRXUCgxNiwka2V5KSk7CisKKwkmc2h1ZnBzCQkoInhtbTQiLCJ4bW0yIiwwYjAwMDEwMDAwKTsKKwkmeG9ycHMJCSgieG1tMiIsInhtbTQiKTsKKwkmc2h1ZnBzCQkoInhtbTQiLCJ4bW0yIiwwYjEwMDAxMTAwKTsKKwkmeG9ycHMJCSgieG1tMiIsInhtbTQiKTsKKwkmc2h1ZnBzCQkoInhtbTEiLCJ4bW0xIiwwYjEwMTAxMDEwKTsJIyBjcml0aWNhbCBwYXRoCisJJnhvcnBzCQkoInhtbTIiLCJ4bW0xIik7CisJJnJldCgpOworCismc2V0X2xhYmVsKCJiYWRfcG9pbnRlciIsNCk7CisJJm1vdgkoImVheCIsLTEpOworCSZyZXQJKCk7Cismc2V0X2xhYmVsKCJiYWRfa2V5Yml0cyIsNCk7CisJJm1vdgkoImVheCIsLTIpOworCSZyZXQJKCk7CismZnVuY3Rpb25fZW5kX0IoIl9hZXNuaV9zZXRfZW5jcnlwdF9rZXkiKTsKKworIyBpbnQgJFBSRUZJWF9zZXRfZW5jcnlwdF9rZXkgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXksIGludCBiaXRzLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFFU19LRVkgKmtleSkKKyZmdW5jdGlvbl9iZWdpbl9CKCIke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5Iik7CisJJm1vdgkoImVheCIsJndwYXJhbSgwKSk7CisJJm1vdgkoJHJvdW5kcywmd3BhcmFtKDEpKTsKKwkmbW92CSgka2V5LCZ3cGFyYW0oMikpOworCSZjYWxsCSgiX2Flc25pX3NldF9lbmNyeXB0X2tleSIpOworCSZyZXQJKCk7CismZnVuY3Rpb25fZW5kX0IoIiR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXkiKTsKKworIyBpbnQgJFBSRUZJWF9zZXRfZGVjcnlwdF9rZXkgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXksIGludCBiaXRzLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFFU19LRVkgKmtleSkKKyZmdW5jdGlvbl9iZWdpbl9CKCIke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5Iik7CisJJm1vdgkoImVheCIsJndwYXJhbSgwKSk7CisJJm1vdgkoJHJvdW5kcywmd3BhcmFtKDEpKTsKKwkmbW92CSgka2V5LCZ3cGFyYW0oMikpOworCSZjYWxsCSgiX2Flc25pX3NldF9lbmNyeXB0X2tleSIpOworCSZtb3YJKCRrZXksJndwYXJhbSgyKSk7CisJJnNobAkoJHJvdW5kcyw0KQkjIHJvdW5kcy0xIGFmdGVyIF9hZXNuaV9zZXRfZW5jcnlwdF9rZXkKKwkmdGVzdAkoImVheCIsImVheCIpOworCSZqbnoJKCZsYWJlbCgiZGVjX2tleV9yZXQiKSk7CisJJmxlYQkoImVheCIsJkRXUCgxNiwka2V5LCRyb3VuZHMpKTsJIyBlbmQgb2Yga2V5IHNjaGVkdWxlCisKKwkmJG1vdmVrZXkJKCJ4bW0wIiwmUVdQKDAsJGtleSkpOwkjIGp1c3Qgc3dhcAorCSYkbW92ZWtleQkoInhtbTEiLCZRV1AoMCwiZWF4IikpOworCSYkbW92ZWtleQkoJlFXUCgwLCJlYXgiKSwieG1tMCIpOworCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0xIik7CisJJmxlYQkJKCRrZXksJkRXUCgxNiwka2V5KSk7CisJJmxlYQkJKCJlYXgiLCZEV1AoLTE2LCJlYXgiKSk7CisKKyZzZXRfbGFiZWwoImRlY19rZXlfaW52ZXJzZSIpOworCSYkbW92ZWtleQkoInhtbTAiLCZRV1AoMCwka2V5KSk7CSMgc3dhcCBhbmQgaW52ZXJzZQorCSYkbW92ZWtleQkoInhtbTEiLCZRV1AoMCwiZWF4IikpOworCSZhZXNpbWMJCSgieG1tMCIsInhtbTAiKTsKKwkmYWVzaW1jCQkoInhtbTEiLCJ4bW0xIik7CisJJmxlYQkJKCRrZXksJkRXUCgxNiwka2V5KSk7CisJJmxlYQkJKCJlYXgiLCZEV1AoLTE2LCJlYXgiKSk7CisJJiRtb3Zla2V5CSgmUVdQKDE2LCJlYXgiKSwieG1tMCIpOworCSYkbW92ZWtleQkoJlFXUCgtMTYsJGtleSksInhtbTEiKTsKKwkmY21wCQkoImVheCIsJGtleSk7CisJJmphCQkoJmxhYmVsKCJkZWNfa2V5X2ludmVyc2UiKSk7CisKKwkmJG1vdmVrZXkJKCJ4bW0wIiwmUVdQKDAsJGtleSkpOwkjIGludmVyc2UgbWlkZGxlCisJJmFlc2ltYwkJKCJ4bW0wIiwieG1tMCIpOworCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7CisKKwkmeG9yCQkoImVheCIsImVheCIpOwkJIyByZXR1cm4gc3VjY2VzcworJnNldF9sYWJlbCgiZGVjX2tleV9yZXQiKTsKKwkmcmV0CSgpOworJmZ1bmN0aW9uX2VuZF9CKCIke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5Iik7CismYXNjaXooIkFFUyBmb3IgSW50ZWwgQUVTLU5JLCBDUllQVE9HQU1TIGJ5IDxhcHByb1xAb3BlbnNzbC5vcmc+Iik7CisKKyZhc21fZmluaXNoKCk7CmRpZmYgLS1naXQgYS9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS9hZXNuaS14ODZfNjQucGwgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS9hZXNuaS14ODZfNjQucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk5ZjNiMwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYXNtL2Flc25pLXg4Nl82NC5wbApAQCAtMCwwICsxLDMwNjggQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKyMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgV3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0BmeS5jaGFsbWVycy5zZT4gZm9yIHRoZSBPcGVuU1NMCisjIHByb2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNTTCBhbmQKKyMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKKyMgZGV0YWlscyBzZWUgaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9+YXBwcm8vY3J5cHRvZ2Ftcy8uCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgSW50ZWwgQUVTLU5JIGV4dGVuc2lvbi4gSW4KKyMgT3BlblNTTCBjb250ZXh0IGl0J3MgdXNlZCB3aXRoIEludGVsIGVuZ2luZSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYXMKKyMgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgY3J5cHRvL2Flcy9hc20vYWVzLXg4Nl82NC5wbCBbc2VlIGJlbG93IGZvcgorIyBkZXRhaWxzXS4KKyMKKyMgUGVyZm9ybWFuY2UuCisjCisjIEdpdmVuIGFlcyhlbmN8ZGVjKSBpbnN0cnVjdGlvbnMnIGxhdGVuY3kgYXN5bXB0b3RpYyBwZXJmb3JtYW5jZSBmb3IKKyMgbm9uLXBhcmFsbGVsaXphYmxlIG1vZGVzIHN1Y2ggYXMgQ0JDIGVuY3J5cHQgaXMgMy43NSBjeWNsZXMgcGVyIGJ5dGUKKyMgcHJvY2Vzc2VkIHdpdGggMTI4LWJpdCBrZXkuIEFuZCBnaXZlbiB0aGVpciB0aHJvdWdocHV0IGFzeW1wdG90aWMKKyMgcGVyZm9ybWFuY2UgZm9yIHBhcmFsbGVsaXphYmxlIG1vZGVzIGlzIDEuMjUgY3ljbGVzIHBlciBieXRlLiBCZWluZworIyBhc3ltcHRvdGljIGxpbWl0IGl0J3Mgbm90IHNvbWV0aGluZyB5b3UgY29tbW9ubHkgYWNoaWV2ZSBpbiByZWFsaXR5LAorIyBidXQgaG93IGNsb3NlIGRvZXMgb25lIGdldD8gQmVsb3cgYXJlIHJlc3VsdHMgY29sbGVjdGVkIGZvcgorIyBkaWZmZXJlbnQgbW9kZXMgYW5kIGJsb2NrIHNpemVkLiBQYWlycyBvZiBudW1iZXJzIGFyZSBmb3IgZW4tLworIyBkZWNyeXB0aW9uLgorIworIwkxNi1ieXRlICAgICA2NC1ieXRlICAgICAyNTYtYnl0ZSAgICAxLUtCICAgICAgICA4LUtCCisjIEVDQgk0LjI1LzQuMjUgICAxLjM4LzEuMzggICAxLjI4LzEuMjggICAxLjI2LzEuMjYJMS4yNi8xLjI2CisjIENUUgk1LjQyLzUuNDIgICAxLjkyLzEuOTIgICAxLjQ0LzEuNDQgICAxLjI4LzEuMjggICAxLjI2LzEuMjYKKyMgQ0JDCTQuMzgvNC40MyAgIDQuMTUvMS40MyAgIDQuMDcvMS4zMiAgIDQuMDcvMS4yOSAgIDQuMDYvMS4yOAorIyBDQ00JNS42Ni85LjQyICAgNC40Mi81LjQxICAgNC4xNi80LjQwICAgNC4wOS80LjE1ICAgNC4wNi80LjA3ICAgCisjIE9GQgk1LjQyLzUuNDIgICA0LjY0LzQuNjQgICA0LjQ0LzQuNDQgICA0LjM5LzQuMzkgICA0LjM4LzQuMzgKKyMgQ0ZCCTUuNzMvNS44NSAgIDUuNTYvNS42MiAgIDUuNDgvNS41NiAgIDUuNDcvNS41NSAgIDUuNDcvNS41NQorIworIyBFQ0IsIENUUiwgQ0JDIGFuZCBDQ00gcmVzdWx0cyBhcmUgZnJlZSBmcm9tIEVWUCBvdmVyaGVhZC4gVGhpcyBtZWFucworIyB0aGF0IG90aGVyd2lzZSB1c2VkICdvcGVuc3NsIHNwZWVkIC1ldnAgYWVzLTEyOC0/Pz8gLWVuZ2luZSBhZXNuaQorIyBbLWRlY3J5cHRdJyB3aWxsIGV4aGliaXQgMTAtMTUlIHdvcnNlIHJlc3VsdHMgZm9yIHNtYWxsZXIgYmxvY2tzLgorIyBUaGUgcmVzdWx0cyB3ZXJlIGNvbGxlY3RlZCB3aXRoIHNwZWNpYWxseSBjcmFmdGVkIHNwZWVkLmMgYmVuY2htYXJrCisjIGluIG9yZGVyIHRvIGNvbXBhcmUgdGhlbSB3aXRoIHJlc3VsdHMgcmVwb3J0ZWQgaW4gIkludGVsIEFkdmFuY2VkCisjIEVuY3J5cHRpb24gU3RhbmRhcmQgKEFFUykgTmV3IEluc3RydWN0aW9uIFNldCIgV2hpdGUgUGFwZXIgUmV2aXNpb24KKyMgMy4wIGRhdGVkIE1heSAyMDEwLiBBbGwgYWJvdmUgcmVzdWx0cyBhcmUgY29uc2lzdGVudGx5IGJldHRlci4gVGhpcworIyBtb2R1bGUgYWxzbyBwcm92aWRlcyBiZXR0ZXIgcGVyZm9ybWFuY2UgZm9yIGJsb2NrIHNpemVzIHNtYWxsZXIgdGhhbgorIyAxMjggYnl0ZXMgaW4gcG9pbnRzICpub3QqIHJlcHJlc2VudGVkIGluIHRoZSBhYm92ZSB0YWJsZS4KKyMKKyMgTG9va2luZyBhdCB0aGUgcmVzdWx0cyBmb3IgOC1LQiBidWZmZXIuCisjCisjIENGQiBhbmQgT0ZCIHJlc3VsdHMgYXJlIGZhciBmcm9tIHRoZSBsaW1pdCwgYmVjYXVzZSBpbXBsZW1lbnRhdGlvbgorIyB1c2VzICJnZW5lcmljIiBDUllQVE9fW2N8b11mYjEyOF9lbmNyeXB0IGludGVyZmFjZXMgcmVseWluZyBvbgorIyBzaW5nbGUtYmxvY2sgYWVzbmlfZW5jcnlwdCwgd2hpY2ggaXMgbm90IHRoZSBtb3N0IG9wdGltYWwgd2F5IHRvIGdvLgorIyBDQkMgZW5jcnlwdCByZXN1bHQgaXMgdW5leHBlY3RlZGx5IGhpZ2ggYW5kIHRoZXJlIGlzIG5vIGRvY3VtZW50ZWQKKyMgZXhwbGFuYXRpb24gZm9yIGl0LiBTZWVtaW5nbHkgdGhlcmUgaXMgYSBzbWFsbCBwZW5hbHR5IGZvciBmZWVkaW5nCisjIHRoZSByZXN1bHQgYmFjayB0byBBRVMgdW5pdCB0aGUgd2F5IGl0J3MgZG9uZSBpbiBDQkMgbW9kZS4gVGhlcmUgaXMKKyMgbm90aGluZyBvbmUgY2FuIGRvIGFuZCB0aGUgcmVzdWx0IGFwcGVhcnMgb3B0aW1hbC4gQ0NNIHJlc3VsdCBpcworIyBpZGVudGljYWwgdG8gQ0JDLCBiZWNhdXNlIENCQy1NQUMgaXMgZXNzZW50aWFsbHkgQ0JDIGVuY3J5cHQgd2l0aG91dAorIyBzYXZpbmcgb3V0cHV0LiBDQ00gQ1RSICJzdGF5cyBpbnZpc2libGUsIiBiZWNhdXNlIGl0J3MgbmVhdGx5CisjIGludGVybGVhdmVkIHdpaCBDQkMtTUFDLiBUaGlzIHByb3ZpZGVzIH4zMCUgaW1wcm92ZW1lbnQgb3ZlcgorIyAic3RyYWdodGZvcndhcmQiIENDTSBpbXBsZW1lbnRhdGlvbiB3aXRoIENUUiBhbmQgQ0JDLU1BQyBwZXJmb3JtZWQKKyMgZGlzam9pbnRseS4gUGFyYWxsZWxpemFibGUgbW9kZXMgcHJhY3RpY2FsbHkgYWNoaWV2ZSB0aGUgdGhlb3JldGljYWwKKyMgbGltaXQuCisjCisjIExvb2tpbmcgYXQgaG93IHJlc3VsdHMgdmFyeSB3aXRoIGJ1ZmZlciBzaXplLgorIworIyBDdXJ2ZXMgYXJlIHByYWN0aWNhbGx5IHNhdHVyYXRlZCBhdCAxLUtCIGJ1ZmZlciBzaXplLiBJbiBtb3N0IGNhc2VzCisjICIyNTYtYnl0ZSIgcGVyZm9ybWFuY2UgaXMgPjk1JSwgYW5kICI2NC1ieXRlIiBpcyB+OTAlIG9mICI4LUtCIiBvbmUuCisjIENUUiBjdXJ2ZSBkb2Vzbid0IGZvbGxvdyB0aGlzIHBhdHRlcm4gYW5kIGlzICJzbG93ZXN0IiBjaGFuZ2luZyBvbmUKKyMgd2l0aCAiMjU2LWJ5dGUiIHJlc3VsdCBiZWluZyA4NyUgb2YgIjgtS0IuIiBUaGlzIGlzIGJlY2F1c2Ugb3ZlcmhlYWQKKyMgaW4gQ1RSIG1vZGUgaXMgbW9zdCBjb21wdXRhdGlvbmFsbHkgaW50ZW5zaXZlLiBTbWFsbC1ibG9jayBDQ00KKyMgZGVjcnlwdCBpcyBzbG93ZXIgdGhhbiBlbmNyeXB0LCBiZWNhdXNlIGZpcnN0IENUUiBhbmQgbGFzdCBDQkMtTUFDCisjIGl0ZXJhdGlvbnMgY2FuJ3QgYmUgaW50ZXJsZWF2ZWQuCisjCisjIFJlc3VsdHMgZm9yIDE5Mi0gYW5kIDI1Ni1iaXQga2V5cy4KKyMKKyMgRVZQLWZyZWUgcmVzdWx0cyB3ZXJlIG9ic2VydmVkIHRvIHNjYWxlIHBlcmZlY3RseSB3aXRoIG51bWJlciBvZgorIyByb3VuZHMgZm9yIGxhcmdlciBibG9jayBzaXplcywgaS5lLiAxOTItYml0IHJlc3VsdCBiZWluZyAxMC8xMiB0aW1lcworIyBsb3dlciBhbmQgMjU2LWJpdCBvbmUgLSAxMC8xNC4gV2VsbCwgaW4gQ0JDIGVuY3J5cHQgY2FzZSBkaWZmZXJlbmNlcworIyBhcmUgYSB0YWQgc21hbGxlciwgYmVjYXVzZSB0aGUgYWJvdmUgbWVudGlvbmVkIHBlbmFsdHkgYmlhc2VzIGFsbAorIyByZXN1bHRzIGJ5IHNhbWUgY29uc3RhbnQgdmFsdWUuIEluIHNpbWlsYXIgd2F5IGZ1bmN0aW9uIGNhbGwKKyMgb3ZlcmhlYWQgYWZmZWN0cyBzbWFsbC1ibG9jayBwZXJmb3JtYW5jZSwgYXMgd2VsbCBhcyBPRkIgYW5kIENGQgorIyByZXN1bHRzLiBEaWZmZXJlbmNlcyBhcmUgbm90IGxhcmdlLCBtb3N0IGNvbW1vbiBjb2VmZmljaWVudHMgYXJlCisjIDEwLzExLjcgYW5kIDEwLzEzLjQgKGFzIG9wcG9zaXRlIHRvIDEwLzEyLjAgYW5kIDEwLzE0LjApLCBidXQgb25lCisjIG9ic2VydmUgZXZlbiAxMC8xMS4yIGFuZCAxMC8xMi40IChDVFIsIE9GQiwgQ0ZCKS4uLgorCisjIEphbnVhcnkgMjAxMQorIworIyBXaGlsZSBXZXN0bWVyZSBwcm9jZXNzb3IgZmVhdHVyZXMgNiBjeWNsZXMgbGF0ZW5jeSBmb3IgYWVzW2VuY3xkZWNdCisjIGluc3RydWN0aW9ucywgd2hpY2ggY2FuIGJlIHNjaGVkdWxlZCBldmVyeSBzZWNvbmQgY3ljbGUsIFNhbmR5CisjIEJyaWRnZSBzcGVuZHMgOCBjeWNsZXMgcGVyIGluc3RydWN0aW9uLCBidXQgaXQgY2FuIHNjaGVkdWxlIHRoZW0KKyMgZXZlcnkgY3ljbGUuIFRoaXMgbWVhbnMgdGhhdCBjb2RlIHRhcmdldGluZyBXZXN0bWVyZSB3b3VsZCBwZXJmb3JtCisjIHN1Ym9wdGltYWxseSBvbiBTYW5keSBCcmlkZ2UuIFRoZXJlZm9yZSB0aGlzIHVwZGF0ZS4KKyMKKyMgSW4gYWRkaXRpb24sIG5vbi1wYXJhbGxlbGl6YWJsZSBDQkMgZW5jcnlwdCAoYXMgd2VsbCBhcyBDQ00pIGlzCisjIG9wdGltaXplZC4gUmVsYXRpdmUgaW1wcm92ZW1lbnQgbWlnaHQgYXBwZWFyIG1vZGVzdCwgOCUgb24gV2VzdG1lcmUsCisjIGJ1dCBpbiBhYnNvbHV0ZSB0ZXJtcyBpdCdzIDMuNzcgY3ljbGVzIHBlciBieXRlIGVuY3J5cHRlZCB3aXRoCisjIDEyOC1iaXQga2V5IG9uIFdlc3RtZXJlLCBhbmQgNS4wNyAtIG9uIFNhbmR5IEJyaWRnZS4gVGhlc2UgbnVtYmVycworIyBzaG91bGQgYmUgY29tcGFyZWQgdG8gYXN5bXB0b3RpYyBsaW1pdHMgb2YgMy43NSBmb3IgV2VzdG1lcmUgYW5kCisjIDUuMDAgZm9yIFNhbmR5IEJyaWRnZS4gQWN0dWFsbHksIHRoZSBmYWN0IHRoYXQgdGhleSBnZXQgdGhpcyBjbG9zZQorIyB0byBhc3ltcHRvdGljIGxpbWl0cyBpcyBxdWl0ZSBhbWF6aW5nLiBJbmRlZWQsIHRoZSBsaW1pdCBpcworIyBjYWxjdWxhdGVkIGFzIGxhdGVuY3kgdGltZXMgbnVtYmVyIG9mIHJvdW5kcywgMTAgZm9yIDEyOC1iaXQga2V5LAorIyBhbmQgZGl2aWRlZCBieSAxNiwgdGhlIG51bWJlciBvZiBieXRlcyBpbiBibG9jaywgb3IgaW4gb3RoZXIgd29yZHMKKyMgaXQgYWNjb3VudHMgKnNvbGVseSogZm9yIGFlc2VuYyBpbnN0cnVjdGlvbnMuIEJ1dCB0aGVyZSBhcmUgZXh0cmEKKyMgaW5zdHJ1Y3Rpb25zLCBhbmQgbnVtYmVycyBzbyBjbG9zZSB0byB0aGUgYXN5bXB0b3RpYyBsaW1pdHMgbWVhbgorIyB0aGF0IGl0J3MgYXMgaWYgaXQgdGFrZXMgYXMgbGl0dGxlIGFzICpvbmUqIGFkZGl0aW9uYWwgY3ljbGUgdG8KKyMgZXhlY3V0ZSBhbGwgb2YgdGhlbS4gSG93IGlzIGl0IHBvc3NpYmxlPyBJdCBpcyBwb3NzaWJsZSB0aGFua3MgdG8KKyMgb3V0LW9mLW9yZGVyIGV4ZWN1dGlvbiBsb2dpYywgd2hpY2ggbWFuYWdlcyB0byBvdmVybGFwIHBvc3QtCisjIHByb2Nlc3Npbmcgb2YgcHJldmlvdXMgYmxvY2ssIHRoaW5ncyBsaWtlIHNhdmluZyB0aGUgb3V0cHV0LCB3aXRoCisjIGFjdHVhbCBlbmNyeXB0aW9uIG9mIGN1cnJlbnQgYmxvY2ssIGFzIHdlbGwgYXMgcHJlLXByb2Nlc3Npbmcgb2YKKyMgY3VycmVudCBibG9jaywgdGhpbmdzIGxpa2UgZmV0Y2hpbmcgaW5wdXQgYW5kIHhvci1pbmcgaXQgd2l0aAorIyAwLXJvdW5kIGVsZW1lbnQgb2YgdGhlIGtleSBzY2hlZHVsZSwgd2l0aCBhY3R1YWwgZW5jcnlwdGlvbiBvZgorIyBwcmV2aW91cyBibG9jay4gS2VlcCB0aGlzIGluIG1pbmQuLi4KKyMKKyMgRm9yIHBhcmFsbGVsaXphYmxlIG1vZGVzLCBzdWNoIGFzIEVDQiwgQ0JDIGRlY3J5cHQsIENUUiwgaGlnaGVyCisjIHBlcmZvcm1hbmNlIGlzIGFjaGlldmVkIGJ5IGludGVybGVhdmluZyBpbnN0cnVjdGlvbnMgd29ya2luZyBvbgorIyBpbmRlcGVuZGVudCBibG9ja3MuIEluIHdoaWNoIGNhc2UgYXN5bXB0b3RpYyBsaW1pdCBmb3Igc3VjaCBtb2RlcworIyBjYW4gYmUgb2J0YWluZWQgYnkgZGl2aWRpbmcgYWJvdmUgbWVudGlvbmVkIG51bWJlcnMgYnkgQUVTCisjIGluc3RydWN0aW9ucycgaW50ZXJsZWF2ZSBmYWN0b3IuIFdlc3RtZXJlIGNhbiBleGVjdXRlIGF0IG1vc3QgMyAKKyMgaW5zdHJ1Y3Rpb25zIGF0IGEgdGltZSwgbWVhbmluZyB0aGF0IG9wdGltYWwgaW50ZXJsZWF2ZSBmYWN0b3IgaXMgMywKKyMgYW5kIHRoYXQncyB3aGVyZSB0aGUgIm1hZ2ljIiBudW1iZXIgb2YgMS4yNSBjb21lIGZyb20uICJPcHRpbWFsCisjIGludGVybGVhdmUgZmFjdG9yIiBtZWFucyB0aGF0IGluY3JlYXNlIG9mIGludGVybGVhdmUgZmFjdG9yIGRvZXMKKyMgbm90IGltcHJvdmUgcGVyZm9ybWFuY2UuIFRoZSBmb3JtdWxhIGhhcyBwcm92ZW4gdG8gcmVmbGVjdCByZWFsaXR5CisjIHByZXR0eSB3ZWxsIG9uIFdlc3RtZXJlLi4uIFNhbmR5IEJyaWRnZSBvbiB0aGUgb3RoZXIgaGFuZCBjYW4KKyMgZXhlY3V0ZSB1cCB0byA4IEFFUyBpbnN0cnVjdGlvbnMgYXQgYSB0aW1lLCBzbyBob3cgZG9lcyB2YXJ5aW5nCisjIGludGVybGVhdmUgZmFjdG9yIGFmZmVjdCB0aGUgcGVyZm9ybWFuY2U/IEhlcmUgaXMgdGFibGUgZm9yIEVDQgorIyAobnVtYmVycyBhcmUgY3ljbGVzIHBlciBieXRlIHByb2Nlc3NlZCB3aXRoIDEyOC1iaXQga2V5KToKKyMKKyMgaW5zdHJ1Y3Rpb24gaW50ZXJsZWF2ZSBmYWN0b3IJCTN4CTZ4CTh4CisjIHRoZW9yZXRpY2FsIGFzeW1wdG90aWMgbGltaXQJCTEuNjcJMC44MwkwLjYyNQorIyBtZWFzdXJlZCBwZXJmb3JtYW5jZSBmb3IgOEtCIGJsb2NrCTEuMDUJMC44NgkwLjg0CisjCisjICJhcyBpZiIgaW50ZXJsZWF2ZSBmYWN0b3IJCTQuN3gJNS44eAk2LjB4CisjCisjIEZ1cnRoZXIgZGF0YSBmb3Igb3RoZXIgcGFyYWxsZWxpemFibGUgbW9kZXM6CisjCisjIENCQyBkZWNyeXB0CQkJCTEuMTYJMC45MwkwLjkzCisjIENUUgkJCQkJMS4xNAkwLjkxCW4vYQorIworIyBXZWxsLCBnaXZlbiAzeCBjb2x1bW4gaXQncyBwcm9iYWJseSBpbmFwcHJvcHJpYXRlIHRvIGNhbGwgdGhlIGxpbWl0CisjIGFzeW1wdG90aWMsIGlmIGl0IGNhbiBiZSBzdXJwYXNzZWQsIGlzbid0IGl0PyBXaGF0IGhhcHBlbnMgdGhlcmU/CisjIFJld2luZCB0byBDQkMgcGFyYWdyYXBoIGZvciB0aGUgYW5zd2VyLiBZZXMsIG91dC1vZi1vcmRlciBleGVjdXRpb24KKyMgbWFnaWMgaXMgcmVzcG9uc2libGUgZm9yIHRoaXMuIFByb2Nlc3NvciBvdmVybGFwcyBub3Qgb25seSB0aGUKKyMgYWRkaXRpb25hbCBpbnN0cnVjdGlvbnMgd2l0aCBBRVMgb25lcywgYnV0IGV2ZW4gQUVTIGluc3R1Y3Rpb25zCisjIHByb2Nlc3NpbmcgYWRqYWNlbnQgdHJpcGxldHMgb2YgaW5kZXBlbmRlbnQgYmxvY2tzLiBJbiB0aGUgNnggY2FzZQorIyBhZGRpdGlvbmFsIGluc3RydWN0aW9ucyAgc3RpbGwgY2xhaW0gZGlzcHJvcG9ydGlvbmFsbHkgc21hbGwgYW1vdW50CisjIG9mIGFkZGl0aW9uYWwgY3ljbGVzLCBidXQgaW4gOHggY2FzZSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIG11c3QgYmUKKyMgYSB0YWQgdG9vIGhpZ2ggZm9yIG91dC1vZi1vcmRlciBsb2dpYyB0byBjb3BlIHdpdGgsIGFuZCBBRVMgdW5pdAorIyByZW1haW5zIHVuZGVydXRpbGl6ZWQuLi4gQXMgeW91IGNhbiBzZWUgOHggaW50ZXJsZWF2ZSBpcyBoYXJkbHkKKyMganVzdGlmaWFibGUsIHNvIHRoZXJlIG5vIG5lZWQgdG8gZmVlbCBiYWQgdGhhdCAzMi1iaXQgYWVzbmkteDg2LnBsCisjIHV0aWxpemllcyA2eCBpbnRlcmxlYXZlIGJlY2F1c2Ugb2YgbGltaXRlZCByZWdpc3RlciBiYW5rIGNhcGFjaXR5LgorIworIyBIaWdoZXIgaW50ZXJsZWF2ZSBmYWN0b3JzIGRvIGhhdmUgbmVnYXRpdmUgaW1wYWN0IG9uIFdlc3RtZXJlCisjIHBlcmZvcm1hbmNlLiBXaGlsZSBmb3IgRUNCIG1vZGUgaXQncyBuZWdsaWdpYmxlIH4xLjUlLCBvdGhlcgorIyBwYXJhbGxlbGl6YWJsZXMgcGVyZm9ybSB+NSUgd29yc2UsIHdoaWNoIGlzIG91dHdlaWdoZWQgYnkgfjI1JQorIyBpbXByb3ZlbWVudCBvbiBTYW5keSBCcmlkZ2UuIFRvIGJhbGFuY2UgcmVncmVzc2lvbiBvbiBXZXN0bWVyZQorIyBDVFIgbW9kZSB3YXMgaW1wbGVtZW50ZWQgd2l0aCA2eCBhZXNlbmMgaW50ZXJsZWF2ZSBmYWN0b3IuCisKKyMgQXByaWwgMjAxMQorIworIyBBZGQgYWVzbmlfeHRzX1tlbnxkZV1jcnlwdC4gV2VzdG1lcmUgc3BlbmRzIDEuMzMgY3ljbGVzIHByb2Nlc3NpbmcKKyMgb25lIGJ5dGUgb3V0IG9mIDhLQiB3aXRoIDEyOC1iaXQga2V5LCBTYW5keSBCcmlkZ2UgLSAwLjk3LiBKdXN0IGxpa2UKKyMgaW4gQ1RSIG1vZGUgQUVTIGluc3RydWN0aW9uIGludGVybGVhdmUgZmFjdG9yIHdhcyBjaG9zZW4gdG8gYmUgNnguCisKKyRQUkVGSVg9ImFlc25pIjsJIyBpZiAkUFJFRklYIGlzIHNldCB0byAiQUVTIiwgdGhlIHNjcmlwdAorCQkJIyBnZW5lcmF0ZXMgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IKKwkJCSMgY3J5cHRvL2Flcy9hc20vYWVzLXg4Nl82NC5wbDotKQorCiskZmxhdm91ciA9IHNoaWZ0OworJG91dHB1dCAgPSBzaGlmdDsKK2lmICgkZmxhdm91ciA9fiAvXC4vKSB7ICRvdXRwdXQgPSAkZmxhdm91cjsgdW5kZWYgJGZsYXZvdXI7IH0KKworJHdpbjY0PTA7ICR3aW42ND0xIGlmICgkZmxhdm91ciA9fiAvW25tXWFzbXxtaW5ndzY0LyB8fCAkb3V0cHV0ID1+IC9cLmFzbSQvKTsKKworJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsKKyggJHhsYXRlPSIke2Rpcn14ODZfNjQteGxhdGUucGwiIGFuZCAtZiAkeGxhdGUgKSBvcgorKCAkeGxhdGU9IiR7ZGlyfS4uLy4uL3Blcmxhc20veDg2XzY0LXhsYXRlLnBsIiBhbmQgLWYgJHhsYXRlKSBvcgorZGllICJjYW4ndCBsb2NhdGUgeDg2XzY0LXhsYXRlLnBsIjsKKworb3BlbiBTVERPVVQsInwgJF5YICR4bGF0ZSAkZmxhdm91ciAkb3V0cHV0IjsKKworJG1vdmtleSA9ICRQUkVGSVggZXEgImFlc25pIiA/ICJtb3Z1cHMiIDogIm1vdnVwcyI7CitAXzRhcmdzPSR3aW42ND8JKCIlcmN4IiwiJXJkeCIsIiVyOCIsICIlcjkiKSA6CSMgV2luNjQgb3JkZXIKKwkJKCIlcmRpIiwiJXJzaSIsIiVyZHgiLCIlcmN4Iik7CSMgVW5peCBvcmRlcgorCiskY29kZT0iLnRleHRcbiI7CisKKyRyb3VuZHM9IiVlYXgiOwkjIGlucHV0IHRvIGFuZCBjaGFuZ2VkIGJ5IGFlc25pX1tlbnxkZV1jcnlwdE4gISEhCisjIHRoaXMgaXMgbmF0dXJhbCBVbml4IGFyZ3VtZW50IG9yZGVyIGZvciBwdWJsaWMgJFBSRUZJWF9bZWNifGNiY11fZW5jcnlwdCAuLi4KKyRpbnA9IiVyZGkiOworJG91dD0iJXJzaSI7CiskbGVuPSIlcmR4IjsKKyRrZXk9IiVyY3giOwkjIGlucHV0IHRvIGFuZCBjaGFuZ2VkIGJ5IGFlc25pX1tlbnxkZV1jcnlwdE4gISEhCiskaXZwPSIlcjgiOwkjIGNiYywgY3RyLCAuLi4KKworJHJuZHNfPSIlcjEwZCI7CSMgYmFja3VwIGNvcHkgZm9yICRyb3VuZHMKKyRrZXlfPSIlcjExIjsJIyBiYWNrdXAgY29weSBmb3IgJGtleQorCisjICV4bW0gcmVnaXN0ZXIgbGF5b3V0Ciskcm5ka2V5MD0iJXhtbTAiOwkkcm5ka2V5MT0iJXhtbTEiOworJGlub3V0MD0iJXhtbTIiOwkkaW5vdXQxPSIleG1tMyI7CiskaW5vdXQyPSIleG1tNCI7CSRpbm91dDM9IiV4bW01IjsKKyRpbm91dDQ9IiV4bW02IjsJJGlub3V0NT0iJXhtbTciOworJGlub3V0Nj0iJXhtbTgiOwkkaW5vdXQ3PSIleG1tOSI7CisKKyRpbjI9IiV4bW02IjsJCSRpbjE9IiV4bW03IjsJIyB1c2VkIGluIENCQyBkZWNyeXB0LCBDVFIsIC4uLgorJGluMD0iJXhtbTgiOwkJJGl2PSIleG1tOSI7CisMCisjIElubGluZSB2ZXJzaW9uIG9mIGludGVybmFsIGFlc25pX1tlbnxkZV1jcnlwdDEuCisjCisjIFdoeSBmb2xkZWQgbG9vcD8gQmVjYXVzZSBhZXNbZW5jfGRlY10gaXMgc2xvdyBlbm91Z2ggdG8gYWNjb21tb2RhdGUKKyMgY3ljbGVzIHdoaWNoIHRha2UgY2FyZSBvZiBsb29wIHZhcmlhYmxlcy4uLgoreyBteSAkc247CitzdWIgYWVzbmlfZ2VuZXJhdGUxIHsKK215ICgkcCwka2V5LCRyb3VuZHMsJGlub3V0LCRpdmVjKT1AXzsJJGlub3V0PSRpbm91dDAgaWYgKCFkZWZpbmVkKCRpbm91dCkpOworKyskc247CiskY29kZS49PDxfX187CisJJG1vdmtleQkoJGtleSksJHJuZGtleTAKKwkkbW92a2V5CTE2KCRrZXkpLCRybmRrZXkxCitfX18KKyRjb2RlLj08PF9fXyBpZiAoZGVmaW5lZCgkaXZlYykpOworCXhvcnBzCSRybmRrZXkwLCRpdmVjCisJbGVhCTMyKCRrZXkpLCRrZXkKKwl4b3JwcwkkaXZlYywkaW5vdXQKK19fXworJGNvZGUuPTw8X19fIGlmICghZGVmaW5lZCgkaXZlYykpOworCWxlYQkzMigka2V5KSwka2V5CisJeG9ycHMJJHJuZGtleTAsJGlub3V0CitfX18KKyRjb2RlLj08PF9fXzsKKy5Mb29wXyR7cH0xXyRzbjoKKwlhZXMke3B9CSRybmRrZXkxLCRpbm91dAorCWRlYwkkcm91bmRzCisJJG1vdmtleQkoJGtleSksJHJuZGtleTEKKwlsZWEJMTYoJGtleSksJGtleQorCWpuegkuTG9vcF8ke3B9MV8kc24JIyBsb29wIGJvZHkgaXMgMTYgYnl0ZXMKKwlhZXMke3B9bGFzdAkkcm5ka2V5MSwkaW5vdXQKK19fXworfX0KKyMgdm9pZCAkUFJFRklYX1tlbnxkZV1jcnlwdCAoY29uc3Qgdm9pZCAqaW5wLHZvaWQgKm91dCxjb25zdCBBRVNfS0VZICprZXkpOworIworeyBteSAoJGlucCwkb3V0LCRrZXkpID0gQF80YXJnczsKKworJGNvZGUuPTw8X19fOworLmdsb2JsCSR7UFJFRklYfV9lbmNyeXB0CisudHlwZQkke1BSRUZJWH1fZW5jcnlwdCxcQGFiaS1vbW5pcG90ZW50CisuYWxpZ24JMTYKKyR7UFJFRklYfV9lbmNyeXB0OgorCW1vdnVwcwkoJGlucCksJGlub3V0MAkJIyBsb2FkIGlucHV0CisJbW92CTI0MCgka2V5KSwkcm91bmRzCSMga2V5LT5yb3VuZHMKK19fXworCSZhZXNuaV9nZW5lcmF0ZTEoImVuYyIsJGtleSwkcm91bmRzKTsKKyRjb2RlLj08PF9fXzsKKwltb3Z1cHMJJGlub3V0MCwoJG91dCkJCSMgb3V0cHV0CisJcmV0Cisuc2l6ZQkke1BSRUZJWH1fZW5jcnlwdCwuLSR7UFJFRklYfV9lbmNyeXB0CisKKy5nbG9ibAkke1BSRUZJWH1fZGVjcnlwdAorLnR5cGUJJHtQUkVGSVh9X2RlY3J5cHQsXEBhYmktb21uaXBvdGVudAorLmFsaWduCTE2Ciske1BSRUZJWH1fZGVjcnlwdDoKKwltb3Z1cHMJKCRpbnApLCRpbm91dDAJCSMgbG9hZCBpbnB1dAorCW1vdgkyNDAoJGtleSksJHJvdW5kcwkjIGtleS0+cm91bmRzCitfX18KKwkmYWVzbmlfZ2VuZXJhdGUxKCJkZWMiLCRrZXksJHJvdW5kcyk7CiskY29kZS49PDxfX187CisJbW92dXBzCSRpbm91dDAsKCRvdXQpCQkjIG91dHB1dAorCXJldAorLnNpemUJJHtQUkVGSVh9X2RlY3J5cHQsIC4tJHtQUkVGSVh9X2RlY3J5cHQKK19fXworfQorDAorIyBfYWVzbmlfW2VufGRlXWNyeXB0TiBhcmUgcHJpdmF0ZSBpbnRlcmZhY2VzLCBOIGRlbm90ZXMgaW50ZXJsZWF2ZQorIyBmYWN0b3IuIFdoeSAzeCBzdWJyb3V0aW5lIHdlcmUgb3JpZ2luYWxseSB1c2VkIGluIGxvb3BzPyBFdmVuIHRob3VnaAorIyBhZXNbZW5jfGRlY10gbGF0ZW5jeSB3YXMgb3JpZ2luYWxseSA2LCBpdCBjb3VsZCBiZSBzY2hlZHVsZWQgb25seQorIyBldmVyeSAqMm5kKiBjeWNsZS4gVGh1cyAzeCBpbnRlcmxlYXZlIHdhcyB0aGUgb25lIHByb3ZpZGluZyBvcHRpbWFsCisjIHV0aWxpemF0aW9uLCBpLmUuIHdoZW4gc3Vicm91dGluZSdzIHRocm91Z2hwdXQgaXMgdmlydHVhbGx5IHNhbWUgYXMKKyMgb2Ygbm9uLWludGVybGVhdmVkIHN1YnJvdXRpbmUgW2ZvciBudW1iZXIgb2YgaW5wdXQgYmxvY2tzIHVwIHRvIDNdLgorIyBUaGlzIGlzIHdoeSBpdCBtYWtlcyBubyBzZW5zZSB0byBpbXBsZW1lbnQgMnggc3Vicm91dGluZS4KKyMgYWVzW2VuY3xkZWNdIGxhdGVuY3kgaW4gbmV4dCBwcm9jZXNzb3IgZ2VuZXJhdGlvbiBpcyA4LCBidXQgdGhlCisjIGluc3RydWN0aW9ucyBjYW4gYmUgc2NoZWR1bGVkIGV2ZXJ5IGN5Y2xlLiBPcHRpbWFsIGludGVybGVhdmUgZm9yCisjIG5ldyBwcm9jZXNzb3IgaXMgdGhlcmVmb3JlIDh4Li4uCitzdWIgYWVzbmlfZ2VuZXJhdGUzIHsKK215ICRkaXI9c2hpZnQ7CisjIEFzIGFscmVhZHkgbWVudGlvbmVkIGl0IHRha2VzIGluICRrZXkgYW5kICRyb3VuZHMsIHdoaWNoIGFyZSAqbm90KgorIyBwcmVzZXJ2ZWQuICRpbm91dFswLTJdIGlzIGNpcGhlci9jbGVhciB0ZXh0Li4uCiskY29kZS49PDxfX187CisudHlwZQlfYWVzbmlfJHtkaXJ9cnlwdDMsXEBhYmktb21uaXBvdGVudAorLmFsaWduCTE2CitfYWVzbmlfJHtkaXJ9cnlwdDM6CisJJG1vdmtleQkoJGtleSksJHJuZGtleTAKKwlzaHIJXCQxLCRyb3VuZHMKKwkkbW92a2V5CTE2KCRrZXkpLCRybmRrZXkxCisJbGVhCTMyKCRrZXkpLCRrZXkKKwl4b3Jwcwkkcm5ka2V5MCwkaW5vdXQwCisJeG9ycHMJJHJuZGtleTAsJGlub3V0MQorCXhvcnBzCSRybmRrZXkwLCRpbm91dDIKKwkkbW92a2V5CQkoJGtleSksJHJuZGtleTAKKworLkwke2Rpcn1fbG9vcDM6CisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDAKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MQorCWRlYwkJJHJvdW5kcworCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQyCisJJG1vdmtleQkJMTYoJGtleSksJHJuZGtleTEKKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MAorCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQxCisJbGVhCQkzMigka2V5KSwka2V5CisJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDIKKwkkbW92a2V5CQkoJGtleSksJHJuZGtleTAKKwlqbnoJCS5MJHtkaXJ9X2xvb3AzCisKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MAorCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQxCisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDIKKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDAKKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDEKKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDIKKwlyZXQKKy5zaXplCV9hZXNuaV8ke2Rpcn1yeXB0MywuLV9hZXNuaV8ke2Rpcn1yeXB0MworX19fCit9CisjIDR4IGludGVybGVhdmUgaXMgaW1wbGVtZW50ZWQgdG8gaW1wcm92ZSBzbWFsbCBibG9jayBwZXJmb3JtYW5jZSwKKyMgbW9zdCBub3RhYmx5IFthbmQgbmF0dXJhbGx5XSA0IGJsb2NrIGJ5IH4zMCUuIE9uZSBjYW4gYXJndWUgdGhhdCBvbmUKKyMgc2hvdWxkIGhhdmUgaW1wbGVtZW50ZWQgNXggYXMgd2VsbCwgYnV0IGltcHJvdmVtZW50IHdvdWxkIGJlIDwyMCUsCisjIHNvIGl0J3Mgbm90IHdvcnRoIGl0Li4uCitzdWIgYWVzbmlfZ2VuZXJhdGU0IHsKK215ICRkaXI9c2hpZnQ7CisjIEFzIGFscmVhZHkgbWVudGlvbmVkIGl0IHRha2VzIGluICRrZXkgYW5kICRyb3VuZHMsIHdoaWNoIGFyZSAqbm90KgorIyBwcmVzZXJ2ZWQuICRpbm91dFswLTNdIGlzIGNpcGhlci9jbGVhciB0ZXh0Li4uCiskY29kZS49PDxfX187CisudHlwZQlfYWVzbmlfJHtkaXJ9cnlwdDQsXEBhYmktb21uaXBvdGVudAorLmFsaWduCTE2CitfYWVzbmlfJHtkaXJ9cnlwdDQ6CisJJG1vdmtleQkoJGtleSksJHJuZGtleTAKKwlzaHIJXCQxLCRyb3VuZHMKKwkkbW92a2V5CTE2KCRrZXkpLCRybmRrZXkxCisJbGVhCTMyKCRrZXkpLCRrZXkKKwl4b3Jwcwkkcm5ka2V5MCwkaW5vdXQwCisJeG9ycHMJJHJuZGtleTAsJGlub3V0MQorCXhvcnBzCSRybmRrZXkwLCRpbm91dDIKKwl4b3Jwcwkkcm5ka2V5MCwkaW5vdXQzCisJJG1vdmtleQkoJGtleSksJHJuZGtleTAKKworLkwke2Rpcn1fbG9vcDQ6CisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDAKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MQorCWRlYwkJJHJvdW5kcworCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQyCisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDMKKwkkbW92a2V5CQkxNigka2V5KSwkcm5ka2V5MQorCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQwCisJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDEKKwlsZWEJCTMyKCRrZXkpLCRrZXkKKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MgorCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQzCisJJG1vdmtleQkJKCRrZXkpLCRybmRrZXkwCisJam56CQkuTCR7ZGlyfV9sb29wNAorCisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDAKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MQorCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQyCisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDMKKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDAKKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDEKKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDIKKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDMKKwlyZXQKKy5zaXplCV9hZXNuaV8ke2Rpcn1yeXB0NCwuLV9hZXNuaV8ke2Rpcn1yeXB0NAorX19fCit9CitzdWIgYWVzbmlfZ2VuZXJhdGU2IHsKK215ICRkaXI9c2hpZnQ7CisjIEFzIGFscmVhZHkgbWVudGlvbmVkIGl0IHRha2VzIGluICRrZXkgYW5kICRyb3VuZHMsIHdoaWNoIGFyZSAqbm90KgorIyBwcmVzZXJ2ZWQuICRpbm91dFswLTVdIGlzIGNpcGhlci9jbGVhciB0ZXh0Li4uCiskY29kZS49PDxfX187CisudHlwZQlfYWVzbmlfJHtkaXJ9cnlwdDYsXEBhYmktb21uaXBvdGVudAorLmFsaWduCTE2CitfYWVzbmlfJHtkaXJ9cnlwdDY6CisJJG1vdmtleQkJKCRrZXkpLCRybmRrZXkwCisJc2hyCQlcJDEsJHJvdW5kcworCSRtb3ZrZXkJCTE2KCRrZXkpLCRybmRrZXkxCisJbGVhCQkzMigka2V5KSwka2V5CisJeG9ycHMJCSRybmRrZXkwLCRpbm91dDAKKwlweG9yCQkkcm5ka2V5MCwkaW5vdXQxCisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDAKKwlweG9yCQkkcm5ka2V5MCwkaW5vdXQyCisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDEKKwlweG9yCQkkcm5ka2V5MCwkaW5vdXQzCisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDIKKwlweG9yCQkkcm5ka2V5MCwkaW5vdXQ0CisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDMKKwlweG9yCQkkcm5ka2V5MCwkaW5vdXQ1CisJZGVjCQkkcm91bmRzCisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDQKKwkkbW92a2V5CQkoJGtleSksJHJuZGtleTAKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0NQorCWptcAkJLkwke2Rpcn1fbG9vcDZfZW50ZXIKKy5hbGlnbgkxNgorLkwke2Rpcn1fbG9vcDY6CisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDAKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MQorCWRlYwkJJHJvdW5kcworCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQyCisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDMKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0NAorCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQ1CisuTCR7ZGlyfV9sb29wNl9lbnRlcjoJCQkJIyBoYXBwZW5zIHRvIGJlIDE2LWJ5dGUgYWxpZ25lZAorCSRtb3ZrZXkJCTE2KCRrZXkpLCRybmRrZXkxCisJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDAKKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MQorCWxlYQkJMzIoJGtleSksJGtleQorCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQyCisJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDMKKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0NAorCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQ1CisJJG1vdmtleQkJKCRrZXkpLCRybmRrZXkwCisJam56CQkuTCR7ZGlyfV9sb29wNgorCisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDAKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MQorCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQyCisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDMKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0NAorCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQ1CisJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQwCisJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQxCisJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQyCisJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQzCisJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQ0CisJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQ1CisJcmV0Cisuc2l6ZQlfYWVzbmlfJHtkaXJ9cnlwdDYsLi1fYWVzbmlfJHtkaXJ9cnlwdDYKK19fXworfQorc3ViIGFlc25pX2dlbmVyYXRlOCB7CitteSAkZGlyPXNoaWZ0OworIyBBcyBhbHJlYWR5IG1lbnRpb25lZCBpdCB0YWtlcyBpbiAka2V5IGFuZCAkcm91bmRzLCB3aGljaCBhcmUgKm5vdCoKKyMgcHJlc2VydmVkLiAkaW5vdXRbMC03XSBpcyBjaXBoZXIvY2xlYXIgdGV4dC4uLgorJGNvZGUuPTw8X19fOworLnR5cGUJX2Flc25pXyR7ZGlyfXJ5cHQ4LFxAYWJpLW9tbmlwb3RlbnQKKy5hbGlnbgkxNgorX2Flc25pXyR7ZGlyfXJ5cHQ4OgorCSRtb3ZrZXkJCSgka2V5KSwkcm5ka2V5MAorCXNocgkJXCQxLCRyb3VuZHMKKwkkbW92a2V5CQkxNigka2V5KSwkcm5ka2V5MQorCWxlYQkJMzIoJGtleSksJGtleQorCXhvcnBzCQkkcm5ka2V5MCwkaW5vdXQwCisJeG9ycHMJCSRybmRrZXkwLCRpbm91dDEKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MAorCXB4b3IJCSRybmRrZXkwLCRpbm91dDIKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MQorCXB4b3IJCSRybmRrZXkwLCRpbm91dDMKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MgorCXB4b3IJCSRybmRrZXkwLCRpbm91dDQKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MworCXB4b3IJCSRybmRrZXkwLCRpbm91dDUKKwlkZWMJCSRyb3VuZHMKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0NAorCXB4b3IJCSRybmRrZXkwLCRpbm91dDYKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0NQorCXB4b3IJCSRybmRrZXkwLCRpbm91dDcKKwkkbW92a2V5CQkoJGtleSksJHJuZGtleTAKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0NgorCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQ3CisJJG1vdmtleQkJMTYoJGtleSksJHJuZGtleTEKKwlqbXAJCS5MJHtkaXJ9X2xvb3A4X2VudGVyCisuYWxpZ24JMTYKKy5MJHtkaXJ9X2xvb3A4OgorCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQwCisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDEKKwlkZWMJCSRyb3VuZHMKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MgorCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQzCisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDQKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0NQorCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQ2CisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDcKKwkkbW92a2V5CQkxNigka2V5KSwkcm5ka2V5MQorLkwke2Rpcn1fbG9vcDhfZW50ZXI6CQkJCSMgaGFwcGVucyB0byBiZSAxNi1ieXRlIGFsaWduZWQKKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MAorCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQxCisJbGVhCQkzMigka2V5KSwka2V5CisJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDIKKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MworCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQ0CisJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDUKKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0NgorCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQ3CisJJG1vdmtleQkJKCRrZXkpLCRybmRrZXkwCisJam56CQkuTCR7ZGlyfV9sb29wOAorCisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDAKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MQorCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQyCisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDMKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0NAorCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQ1CisJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDYKKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0NworCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0MAorCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0MQorCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0MgorCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0MworCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0NAorCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0NQorCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0NgorCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0NworCXJldAorLnNpemUJX2Flc25pXyR7ZGlyfXJ5cHQ4LC4tX2Flc25pXyR7ZGlyfXJ5cHQ4CitfX18KK30KKyZhZXNuaV9nZW5lcmF0ZTMoImVuYyIpIGlmICgkUFJFRklYIGVxICJhZXNuaSIpOworJmFlc25pX2dlbmVyYXRlMygiZGVjIik7CismYWVzbmlfZ2VuZXJhdGU0KCJlbmMiKSBpZiAoJFBSRUZJWCBlcSAiYWVzbmkiKTsKKyZhZXNuaV9nZW5lcmF0ZTQoImRlYyIpOworJmFlc25pX2dlbmVyYXRlNigiZW5jIikgaWYgKCRQUkVGSVggZXEgImFlc25pIik7CismYWVzbmlfZ2VuZXJhdGU2KCJkZWMiKTsKKyZhZXNuaV9nZW5lcmF0ZTgoImVuYyIpIGlmICgkUFJFRklYIGVxICJhZXNuaSIpOworJmFlc25pX2dlbmVyYXRlOCgiZGVjIik7CisMCitpZiAoJFBSRUZJWCBlcSAiYWVzbmkiKSB7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgdm9pZCBhZXNuaV9lY2JfZW5jcnlwdCAoY29uc3Qgdm9pZCAqaW4sIHZvaWQgKm91dCwKKyMJCQkgIHNpemVfdCBsZW5ndGgsIGNvbnN0IEFFU19LRVkgKmtleSwKKyMJCQkgIGludCBlbmMpOworJGNvZGUuPTw8X19fOworLmdsb2JsCWFlc25pX2VjYl9lbmNyeXB0CisudHlwZQlhZXNuaV9lY2JfZW5jcnlwdCxcQGZ1bmN0aW9uLDUKKy5hbGlnbgkxNgorYWVzbmlfZWNiX2VuY3J5cHQ6CisJYW5kCVwkLTE2LCRsZW4KKwlqegkuTGVjYl9yZXQKKworCW1vdgkyNDAoJGtleSksJHJvdW5kcwkjIGtleS0+cm91bmRzCisJJG1vdmtleQkoJGtleSksJHJuZGtleTAKKwltb3YJJGtleSwka2V5XwkJIyBiYWNrdXAgJGtleQorCW1vdgkkcm91bmRzLCRybmRzXwkJIyBiYWNrdXAgJHJvdW5kcworCXRlc3QJJXI4ZCwlcjhkCQkjIDV0aCBhcmd1bWVudAorCWp6CS5MZWNiX2RlY3J5cHQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRUNCIEVOQ1JZUFQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIworCWNtcAlcJDB4ODAsJGxlbgorCWpiCS5MZWNiX2VuY190YWlsCisKKwltb3ZkcXUJKCRpbnApLCRpbm91dDAKKwltb3ZkcXUJMHgxMCgkaW5wKSwkaW5vdXQxCisJbW92ZHF1CTB4MjAoJGlucCksJGlub3V0MgorCW1vdmRxdQkweDMwKCRpbnApLCRpbm91dDMKKwltb3ZkcXUJMHg0MCgkaW5wKSwkaW5vdXQ0CisJbW92ZHF1CTB4NTAoJGlucCksJGlub3V0NQorCW1vdmRxdQkweDYwKCRpbnApLCRpbm91dDYKKwltb3ZkcXUJMHg3MCgkaW5wKSwkaW5vdXQ3CisJbGVhCTB4ODAoJGlucCksJGlucAorCXN1YglcJDB4ODAsJGxlbgorCWptcAkuTGVjYl9lbmNfbG9vcDhfZW50ZXIKKy5hbGlnbiAxNgorLkxlY2JfZW5jX2xvb3A4OgorCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorCW1vdgkka2V5Xywka2V5CQkjIHJlc3RvcmUgJGtleQorCW1vdmRxdQkoJGlucCksJGlub3V0MAorCW1vdgkkcm5kc18sJHJvdW5kcwkJIyByZXN0b3JlICRyb3VuZHMKKwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisJbW92ZHF1CTB4MTAoJGlucCksJGlub3V0MQorCW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKKwltb3ZkcXUJMHgyMCgkaW5wKSwkaW5vdXQyCisJbW92dXBzCSRpbm91dDMsMHgzMCgkb3V0KQorCW1vdmRxdQkweDMwKCRpbnApLCRpbm91dDMKKwltb3Z1cHMJJGlub3V0NCwweDQwKCRvdXQpCisJbW92ZHF1CTB4NDAoJGlucCksJGlub3V0NAorCW1vdnVwcwkkaW5vdXQ1LDB4NTAoJG91dCkKKwltb3ZkcXUJMHg1MCgkaW5wKSwkaW5vdXQ1CisJbW92dXBzCSRpbm91dDYsMHg2MCgkb3V0KQorCW1vdmRxdQkweDYwKCRpbnApLCRpbm91dDYKKwltb3Z1cHMJJGlub3V0NywweDcwKCRvdXQpCisJbGVhCTB4ODAoJG91dCksJG91dAorCW1vdmRxdQkweDcwKCRpbnApLCRpbm91dDcKKwlsZWEJMHg4MCgkaW5wKSwkaW5wCisuTGVjYl9lbmNfbG9vcDhfZW50ZXI6CisKKwljYWxsCV9hZXNuaV9lbmNyeXB0OAorCisJc3ViCVwkMHg4MCwkbGVuCisJam5jCS5MZWNiX2VuY19sb29wOAorCisJbW92dXBzCSRpbm91dDAsKCRvdXQpCisJbW92CSRrZXlfLCRrZXkJCSMgcmVzdG9yZSAka2V5CisJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorCW1vdgkkcm5kc18sJHJvdW5kcwkJIyByZXN0b3JlICRyb3VuZHMKKwltb3Z1cHMJJGlub3V0MiwweDIwKCRvdXQpCisJbW92dXBzCSRpbm91dDMsMHgzMCgkb3V0KQorCW1vdnVwcwkkaW5vdXQ0LDB4NDAoJG91dCkKKwltb3Z1cHMJJGlub3V0NSwweDUwKCRvdXQpCisJbW92dXBzCSRpbm91dDYsMHg2MCgkb3V0KQorCW1vdnVwcwkkaW5vdXQ3LDB4NzAoJG91dCkKKwlsZWEJMHg4MCgkb3V0KSwkb3V0CisJYWRkCVwkMHg4MCwkbGVuCisJanoJLkxlY2JfcmV0CisKKy5MZWNiX2VuY190YWlsOgorCW1vdnVwcwkoJGlucCksJGlub3V0MAorCWNtcAlcJDB4MjAsJGxlbgorCWpiCS5MZWNiX2VuY19vbmUKKwltb3Z1cHMJMHgxMCgkaW5wKSwkaW5vdXQxCisJamUJLkxlY2JfZW5jX3R3bworCW1vdnVwcwkweDIwKCRpbnApLCRpbm91dDIKKwljbXAJXCQweDQwLCRsZW4KKwlqYgkuTGVjYl9lbmNfdGhyZWUKKwltb3Z1cHMJMHgzMCgkaW5wKSwkaW5vdXQzCisJamUJLkxlY2JfZW5jX2ZvdXIKKwltb3Z1cHMJMHg0MCgkaW5wKSwkaW5vdXQ0CisJY21wCVwkMHg2MCwkbGVuCisJamIJLkxlY2JfZW5jX2ZpdmUKKwltb3Z1cHMJMHg1MCgkaW5wKSwkaW5vdXQ1CisJamUJLkxlY2JfZW5jX3NpeAorCW1vdmRxdQkweDYwKCRpbnApLCRpbm91dDYKKwljYWxsCV9hZXNuaV9lbmNyeXB0OAorCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKKwltb3Z1cHMJJGlub3V0MiwweDIwKCRvdXQpCisJbW92dXBzCSRpbm91dDMsMHgzMCgkb3V0KQorCW1vdnVwcwkkaW5vdXQ0LDB4NDAoJG91dCkKKwltb3Z1cHMJJGlub3V0NSwweDUwKCRvdXQpCisJbW92dXBzCSRpbm91dDYsMHg2MCgkb3V0KQorCWptcAkuTGVjYl9yZXQKKy5hbGlnbgkxNgorLkxlY2JfZW5jX29uZToKK19fXworCSZhZXNuaV9nZW5lcmF0ZTEoImVuYyIsJGtleSwkcm91bmRzKTsKKyRjb2RlLj08PF9fXzsKKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKwlqbXAJLkxlY2JfcmV0CisuYWxpZ24JMTYKKy5MZWNiX2VuY190d286CisJeG9ycHMJJGlub3V0MiwkaW5vdXQyCisJY2FsbAlfYWVzbmlfZW5jcnlwdDMKKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisJam1wCS5MZWNiX3JldAorLmFsaWduCTE2CisuTGVjYl9lbmNfdGhyZWU6CisJY2FsbAlfYWVzbmlfZW5jcnlwdDMKKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisJbW92dXBzCSRpbm91dDIsMHgyMCgkb3V0KQorCWptcAkuTGVjYl9yZXQKKy5hbGlnbgkxNgorLkxlY2JfZW5jX2ZvdXI6CisJY2FsbAlfYWVzbmlfZW5jcnlwdDQKKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisJbW92dXBzCSRpbm91dDIsMHgyMCgkb3V0KQorCW1vdnVwcwkkaW5vdXQzLDB4MzAoJG91dCkKKwlqbXAJLkxlY2JfcmV0CisuYWxpZ24JMTYKKy5MZWNiX2VuY19maXZlOgorCXhvcnBzCSRpbm91dDUsJGlub3V0NQorCWNhbGwJX2Flc25pX2VuY3J5cHQ2CisJbW92dXBzCSRpbm91dDAsKCRvdXQpCisJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorCW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKKwltb3Z1cHMJJGlub3V0MywweDMwKCRvdXQpCisJbW92dXBzCSRpbm91dDQsMHg0MCgkb3V0KQorCWptcAkuTGVjYl9yZXQKKy5hbGlnbgkxNgorLkxlY2JfZW5jX3NpeDoKKwljYWxsCV9hZXNuaV9lbmNyeXB0NgorCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKKwltb3Z1cHMJJGlub3V0MiwweDIwKCRvdXQpCisJbW92dXBzCSRpbm91dDMsMHgzMCgkb3V0KQorCW1vdnVwcwkkaW5vdXQ0LDB4NDAoJG91dCkKKwltb3Z1cHMJJGlub3V0NSwweDUwKCRvdXQpCisJam1wCS5MZWNiX3JldAorDCMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRUNCIERFQ1JZUFQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIworLmFsaWduCTE2CisuTGVjYl9kZWNyeXB0OgorCWNtcAlcJDB4ODAsJGxlbgorCWpiCS5MZWNiX2RlY190YWlsCisKKwltb3ZkcXUJKCRpbnApLCRpbm91dDAKKwltb3ZkcXUJMHgxMCgkaW5wKSwkaW5vdXQxCisJbW92ZHF1CTB4MjAoJGlucCksJGlub3V0MgorCW1vdmRxdQkweDMwKCRpbnApLCRpbm91dDMKKwltb3ZkcXUJMHg0MCgkaW5wKSwkaW5vdXQ0CisJbW92ZHF1CTB4NTAoJGlucCksJGlub3V0NQorCW1vdmRxdQkweDYwKCRpbnApLCRpbm91dDYKKwltb3ZkcXUJMHg3MCgkaW5wKSwkaW5vdXQ3CisJbGVhCTB4ODAoJGlucCksJGlucAorCXN1YglcJDB4ODAsJGxlbgorCWptcAkuTGVjYl9kZWNfbG9vcDhfZW50ZXIKKy5hbGlnbiAxNgorLkxlY2JfZGVjX2xvb3A4OgorCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorCW1vdgkka2V5Xywka2V5CQkjIHJlc3RvcmUgJGtleQorCW1vdmRxdQkoJGlucCksJGlub3V0MAorCW1vdgkkcm5kc18sJHJvdW5kcwkJIyByZXN0b3JlICRyb3VuZHMKKwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisJbW92ZHF1CTB4MTAoJGlucCksJGlub3V0MQorCW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKKwltb3ZkcXUJMHgyMCgkaW5wKSwkaW5vdXQyCisJbW92dXBzCSRpbm91dDMsMHgzMCgkb3V0KQorCW1vdmRxdQkweDMwKCRpbnApLCRpbm91dDMKKwltb3Z1cHMJJGlub3V0NCwweDQwKCRvdXQpCisJbW92ZHF1CTB4NDAoJGlucCksJGlub3V0NAorCW1vdnVwcwkkaW5vdXQ1LDB4NTAoJG91dCkKKwltb3ZkcXUJMHg1MCgkaW5wKSwkaW5vdXQ1CisJbW92dXBzCSRpbm91dDYsMHg2MCgkb3V0KQorCW1vdmRxdQkweDYwKCRpbnApLCRpbm91dDYKKwltb3Z1cHMJJGlub3V0NywweDcwKCRvdXQpCisJbGVhCTB4ODAoJG91dCksJG91dAorCW1vdmRxdQkweDcwKCRpbnApLCRpbm91dDcKKwlsZWEJMHg4MCgkaW5wKSwkaW5wCisuTGVjYl9kZWNfbG9vcDhfZW50ZXI6CisKKwljYWxsCV9hZXNuaV9kZWNyeXB0OAorCisJJG1vdmtleQkoJGtleV8pLCRybmRrZXkwCisJc3ViCVwkMHg4MCwkbGVuCisJam5jCS5MZWNiX2RlY19sb29wOAorCisJbW92dXBzCSRpbm91dDAsKCRvdXQpCisJbW92CSRrZXlfLCRrZXkJCSMgcmVzdG9yZSAka2V5CisJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorCW1vdgkkcm5kc18sJHJvdW5kcwkJIyByZXN0b3JlICRyb3VuZHMKKwltb3Z1cHMJJGlub3V0MiwweDIwKCRvdXQpCisJbW92dXBzCSRpbm91dDMsMHgzMCgkb3V0KQorCW1vdnVwcwkkaW5vdXQ0LDB4NDAoJG91dCkKKwltb3Z1cHMJJGlub3V0NSwweDUwKCRvdXQpCisJbW92dXBzCSRpbm91dDYsMHg2MCgkb3V0KQorCW1vdnVwcwkkaW5vdXQ3LDB4NzAoJG91dCkKKwlsZWEJMHg4MCgkb3V0KSwkb3V0CisJYWRkCVwkMHg4MCwkbGVuCisJanoJLkxlY2JfcmV0CisKKy5MZWNiX2RlY190YWlsOgorCW1vdnVwcwkoJGlucCksJGlub3V0MAorCWNtcAlcJDB4MjAsJGxlbgorCWpiCS5MZWNiX2RlY19vbmUKKwltb3Z1cHMJMHgxMCgkaW5wKSwkaW5vdXQxCisJamUJLkxlY2JfZGVjX3R3bworCW1vdnVwcwkweDIwKCRpbnApLCRpbm91dDIKKwljbXAJXCQweDQwLCRsZW4KKwlqYgkuTGVjYl9kZWNfdGhyZWUKKwltb3Z1cHMJMHgzMCgkaW5wKSwkaW5vdXQzCisJamUJLkxlY2JfZGVjX2ZvdXIKKwltb3Z1cHMJMHg0MCgkaW5wKSwkaW5vdXQ0CisJY21wCVwkMHg2MCwkbGVuCisJamIJLkxlY2JfZGVjX2ZpdmUKKwltb3Z1cHMJMHg1MCgkaW5wKSwkaW5vdXQ1CisJamUJLkxlY2JfZGVjX3NpeAorCW1vdnVwcwkweDYwKCRpbnApLCRpbm91dDYKKwkkbW92a2V5CSgka2V5KSwkcm5ka2V5MAorCWNhbGwJX2Flc25pX2RlY3J5cHQ4CisJbW92dXBzCSRpbm91dDAsKCRvdXQpCisJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorCW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKKwltb3Z1cHMJJGlub3V0MywweDMwKCRvdXQpCisJbW92dXBzCSRpbm91dDQsMHg0MCgkb3V0KQorCW1vdnVwcwkkaW5vdXQ1LDB4NTAoJG91dCkKKwltb3Z1cHMJJGlub3V0NiwweDYwKCRvdXQpCisJam1wCS5MZWNiX3JldAorLmFsaWduCTE2CisuTGVjYl9kZWNfb25lOgorX19fCisJJmFlc25pX2dlbmVyYXRlMSgiZGVjIiwka2V5LCRyb3VuZHMpOworJGNvZGUuPTw8X19fOworCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorCWptcAkuTGVjYl9yZXQKKy5hbGlnbgkxNgorLkxlY2JfZGVjX3R3bzoKKwl4b3JwcwkkaW5vdXQyLCRpbm91dDIKKwljYWxsCV9hZXNuaV9kZWNyeXB0MworCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKKwlqbXAJLkxlY2JfcmV0CisuYWxpZ24JMTYKKy5MZWNiX2RlY190aHJlZToKKwljYWxsCV9hZXNuaV9kZWNyeXB0MworCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKKwltb3Z1cHMJJGlub3V0MiwweDIwKCRvdXQpCisJam1wCS5MZWNiX3JldAorLmFsaWduCTE2CisuTGVjYl9kZWNfZm91cjoKKwljYWxsCV9hZXNuaV9kZWNyeXB0NAorCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKKwltb3Z1cHMJJGlub3V0MiwweDIwKCRvdXQpCisJbW92dXBzCSRpbm91dDMsMHgzMCgkb3V0KQorCWptcAkuTGVjYl9yZXQKKy5hbGlnbgkxNgorLkxlY2JfZGVjX2ZpdmU6CisJeG9ycHMJJGlub3V0NSwkaW5vdXQ1CisJY2FsbAlfYWVzbmlfZGVjcnlwdDYKKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisJbW92dXBzCSRpbm91dDIsMHgyMCgkb3V0KQorCW1vdnVwcwkkaW5vdXQzLDB4MzAoJG91dCkKKwltb3Z1cHMJJGlub3V0NCwweDQwKCRvdXQpCisJam1wCS5MZWNiX3JldAorLmFsaWduCTE2CisuTGVjYl9kZWNfc2l4OgorCWNhbGwJX2Flc25pX2RlY3J5cHQ2CisJbW92dXBzCSRpbm91dDAsKCRvdXQpCisJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorCW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKKwltb3Z1cHMJJGlub3V0MywweDMwKCRvdXQpCisJbW92dXBzCSRpbm91dDQsMHg0MCgkb3V0KQorCW1vdnVwcwkkaW5vdXQ1LDB4NTAoJG91dCkKKworLkxlY2JfcmV0OgorCXJldAorLnNpemUJYWVzbmlfZWNiX2VuY3J5cHQsLi1hZXNuaV9lY2JfZW5jcnlwdAorX19fCisMCit7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIHZvaWQgYWVzbmlfY2NtNjRfW2VufGRlXWNyeXB0X2Jsb2NrcyAoY29uc3Qgdm9pZCAqaW4sIHZvaWQgKm91dCwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJsb2NrcywgY29uc3QgQUVTX0tFWSAqa2V5LAorIyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppdmVjLGNoYXIgKmNtYWMpOworIworIyBIYW5kbGVzIG9ubHkgY29tcGxldGUgYmxvY2tzLCBvcGVyYXRlcyBvbiA2NC1iaXQgY291bnRlciBhbmQKKyMgZG9lcyBub3QgdXBkYXRlICppdmVjISBOb3IgZG9lcyBpdCBmaW5hbGl6ZSBDTUFDIHZhbHVlCisjIChzZWUgZW5naW5lL2VuZ19hZXNuaS5jIGZvciBkZXRhaWxzKQorIworeworbXkgJGNtYWM9IiVyOSI7CSMgNnRoIGFyZ3VtZW50CisKK215ICRpbmNyZW1lbnQ9IiV4bW02IjsKK215ICRic3dhcF9tYXNrPSIleG1tNyI7CisKKyRjb2RlLj08PF9fXzsKKy5nbG9ibAlhZXNuaV9jY202NF9lbmNyeXB0X2Jsb2NrcworLnR5cGUJYWVzbmlfY2NtNjRfZW5jcnlwdF9ibG9ja3MsXEBmdW5jdGlvbiw2CisuYWxpZ24JMTYKK2Flc25pX2NjbTY0X2VuY3J5cHRfYmxvY2tzOgorX19fCiskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisJbGVhCS0weDU4KCVyc3ApLCVyc3AKKwltb3ZhcHMJJXhtbTYsKCVyc3ApCisJbW92YXBzCSV4bW03LDB4MTAoJXJzcCkKKwltb3ZhcHMJJXhtbTgsMHgyMCglcnNwKQorCW1vdmFwcwkleG1tOSwweDMwKCVyc3ApCisuTGNjbTY0X2VuY19ib2R5OgorX19fCiskY29kZS49PDxfX187CisJbW92CTI0MCgka2V5KSwkcm91bmRzCQkjIGtleS0+cm91bmRzCisJbW92ZHF1CSgkaXZwKSwkaXYKKwltb3ZkcWEJLkxpbmNyZW1lbnQ2NCglcmlwKSwkaW5jcmVtZW50CisJbW92ZHFhCS5MYnN3YXBfbWFzayglcmlwKSwkYnN3YXBfbWFzaworCisJc2hyCVwkMSwkcm91bmRzCisJbGVhCTAoJGtleSksJGtleV8KKwltb3ZkcXUJKCRjbWFjKSwkaW5vdXQxCisJbW92ZHFhCSRpdiwkaW5vdXQwCisJbW92CSRyb3VuZHMsJHJuZHNfCisJcHNodWZiCSRic3dhcF9tYXNrLCRpdgorCWptcAkuTGNjbTY0X2VuY19vdXRlcgorLmFsaWduCTE2CisuTGNjbTY0X2VuY19vdXRlcjoKKwkkbW92a2V5CSgka2V5XyksJHJuZGtleTAKKwltb3YJJHJuZHNfLCRyb3VuZHMKKwltb3Z1cHMJKCRpbnApLCRpbjAJCQkjIGxvYWQgaW5wCisKKwl4b3Jwcwkkcm5ka2V5MCwkaW5vdXQwCQkjIGNvdW50ZXIKKwkkbW92a2V5CTE2KCRrZXlfKSwkcm5ka2V5MQorCXhvcnBzCSRpbjAsJHJuZGtleTAKKwlsZWEJMzIoJGtleV8pLCRrZXkKKwl4b3Jwcwkkcm5ka2V5MCwkaW5vdXQxCQkjIGNtYWNePWlucAorCSRtb3ZrZXkJKCRrZXkpLCRybmRrZXkwCisKKy5MY2NtNjRfZW5jMl9sb29wOgorCWFlc2VuYwkkcm5ka2V5MSwkaW5vdXQwCisJZGVjCSRyb3VuZHMKKwlhZXNlbmMJJHJuZGtleTEsJGlub3V0MQorCSRtb3ZrZXkJMTYoJGtleSksJHJuZGtleTEKKwlhZXNlbmMJJHJuZGtleTAsJGlub3V0MAorCWxlYQkzMigka2V5KSwka2V5CisJYWVzZW5jCSRybmRrZXkwLCRpbm91dDEKKwkkbW92a2V5CTAoJGtleSksJHJuZGtleTAKKwlqbnoJLkxjY202NF9lbmMyX2xvb3AKKwlhZXNlbmMJJHJuZGtleTEsJGlub3V0MAorCWFlc2VuYwkkcm5ka2V5MSwkaW5vdXQxCisJcGFkZHEJJGluY3JlbWVudCwkaXYKKwlhZXNlbmNsYXN0CSRybmRrZXkwLCRpbm91dDAKKwlhZXNlbmNsYXN0CSRybmRrZXkwLCRpbm91dDEKKworCWRlYwkkbGVuCisJbGVhCTE2KCRpbnApLCRpbnAKKwl4b3JwcwkkaW5vdXQwLCRpbjAJCQkjIGlucCBePSBFKGl2KQorCW1vdmRxYQkkaXYsJGlub3V0MAorCW1vdnVwcwkkaW4wLCgkb3V0KQkJCSMgc2F2ZSBvdXRwdXQKKwlsZWEJMTYoJG91dCksJG91dAorCXBzaHVmYgkkYnN3YXBfbWFzaywkaW5vdXQwCisJam56CS5MY2NtNjRfZW5jX291dGVyCisKKwltb3Z1cHMJJGlub3V0MSwoJGNtYWMpCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKwltb3ZhcHMJKCVyc3ApLCV4bW02CisJbW92YXBzCTB4MTAoJXJzcCksJXhtbTcKKwltb3ZhcHMJMHgyMCglcnNwKSwleG1tOAorCW1vdmFwcwkweDMwKCVyc3ApLCV4bW05CisJbGVhCTB4NTgoJXJzcCksJXJzcAorLkxjY202NF9lbmNfcmV0OgorX19fCiskY29kZS49PDxfX187CisJcmV0Cisuc2l6ZQlhZXNuaV9jY202NF9lbmNyeXB0X2Jsb2NrcywuLWFlc25pX2NjbTY0X2VuY3J5cHRfYmxvY2tzCitfX18KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyRjb2RlLj08PF9fXzsKKy5nbG9ibAlhZXNuaV9jY202NF9kZWNyeXB0X2Jsb2NrcworLnR5cGUJYWVzbmlfY2NtNjRfZGVjcnlwdF9ibG9ja3MsXEBmdW5jdGlvbiw2CisuYWxpZ24JMTYKK2Flc25pX2NjbTY0X2RlY3J5cHRfYmxvY2tzOgorX19fCiskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisJbGVhCS0weDU4KCVyc3ApLCVyc3AKKwltb3ZhcHMJJXhtbTYsKCVyc3ApCisJbW92YXBzCSV4bW03LDB4MTAoJXJzcCkKKwltb3ZhcHMJJXhtbTgsMHgyMCglcnNwKQorCW1vdmFwcwkleG1tOSwweDMwKCVyc3ApCisuTGNjbTY0X2RlY19ib2R5OgorX19fCiskY29kZS49PDxfX187CisJbW92CTI0MCgka2V5KSwkcm91bmRzCQkjIGtleS0+cm91bmRzCisJbW92dXBzCSgkaXZwKSwkaXYKKwltb3ZkcXUJKCRjbWFjKSwkaW5vdXQxCisJbW92ZHFhCS5MaW5jcmVtZW50NjQoJXJpcCksJGluY3JlbWVudAorCW1vdmRxYQkuTGJzd2FwX21hc2soJXJpcCksJGJzd2FwX21hc2sKKworCW1vdmFwcwkkaXYsJGlub3V0MAorCW1vdgkkcm91bmRzLCRybmRzXworCW1vdgkka2V5LCRrZXlfCisJcHNodWZiCSRic3dhcF9tYXNrLCRpdgorX19fCisJJmFlc25pX2dlbmVyYXRlMSgiZW5jIiwka2V5LCRyb3VuZHMpOworJGNvZGUuPTw8X19fOworCW1vdnVwcwkoJGlucCksJGluMAkJCSMgbG9hZCBpbnAKKwlwYWRkcQkkaW5jcmVtZW50LCRpdgorCWxlYQkxNigkaW5wKSwkaW5wCisJam1wCS5MY2NtNjRfZGVjX291dGVyCisuYWxpZ24JMTYKKy5MY2NtNjRfZGVjX291dGVyOgorCXhvcnBzCSRpbm91dDAsJGluMAkJCSMgaW5wIF49IEUoaXYpCisJbW92ZHFhCSRpdiwkaW5vdXQwCisJbW92CSRybmRzXywkcm91bmRzCisJbW92dXBzCSRpbjAsKCRvdXQpCQkJIyBzYXZlIG91dHB1dAorCWxlYQkxNigkb3V0KSwkb3V0CisJcHNodWZiCSRic3dhcF9tYXNrLCRpbm91dDAKKworCXN1YglcJDEsJGxlbgorCWp6CS5MY2NtNjRfZGVjX2JyZWFrCisKKwkkbW92a2V5CSgka2V5XyksJHJuZGtleTAKKwlzaHIJXCQxLCRyb3VuZHMKKwkkbW92a2V5CTE2KCRrZXlfKSwkcm5ka2V5MQorCXhvcnBzCSRybmRrZXkwLCRpbjAKKwlsZWEJMzIoJGtleV8pLCRrZXkKKwl4b3Jwcwkkcm5ka2V5MCwkaW5vdXQwCisJeG9ycHMJJGluMCwkaW5vdXQxCQkJIyBjbWFjXj1vdXQKKwkkbW92a2V5CSgka2V5KSwkcm5ka2V5MAorCisuTGNjbTY0X2RlYzJfbG9vcDoKKwlhZXNlbmMJJHJuZGtleTEsJGlub3V0MAorCWRlYwkkcm91bmRzCisJYWVzZW5jCSRybmRrZXkxLCRpbm91dDEKKwkkbW92a2V5CTE2KCRrZXkpLCRybmRrZXkxCisJYWVzZW5jCSRybmRrZXkwLCRpbm91dDAKKwlsZWEJMzIoJGtleSksJGtleQorCWFlc2VuYwkkcm5ka2V5MCwkaW5vdXQxCisJJG1vdmtleQkwKCRrZXkpLCRybmRrZXkwCisJam56CS5MY2NtNjRfZGVjMl9sb29wCisJbW92dXBzCSgkaW5wKSwkaW4wCQkJIyBsb2FkIGlucAorCXBhZGRxCSRpbmNyZW1lbnQsJGl2CisJYWVzZW5jCSRybmRrZXkxLCRpbm91dDAKKwlhZXNlbmMJJHJuZGtleTEsJGlub3V0MQorCWxlYQkxNigkaW5wKSwkaW5wCisJYWVzZW5jbGFzdAkkcm5ka2V5MCwkaW5vdXQwCisJYWVzZW5jbGFzdAkkcm5ka2V5MCwkaW5vdXQxCisJam1wCS5MY2NtNjRfZGVjX291dGVyCisKKy5hbGlnbgkxNgorLkxjY202NF9kZWNfYnJlYWs6CisJI3hvcnBzCSRpbjAsJGlub3V0MQkJCSMgY21hY149b3V0CitfX18KKwkmYWVzbmlfZ2VuZXJhdGUxKCJlbmMiLCRrZXlfLCRyb3VuZHMsJGlub3V0MSwkaW4wKTsKKyRjb2RlLj08PF9fXzsKKwltb3Z1cHMJJGlub3V0MSwoJGNtYWMpCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKwltb3ZhcHMJKCVyc3ApLCV4bW02CisJbW92YXBzCTB4MTAoJXJzcCksJXhtbTcKKwltb3ZhcHMJMHgyMCglcnNwKSwleG1tOAorCW1vdmFwcwkweDMwKCVyc3ApLCV4bW05CisJbGVhCTB4NTgoJXJzcCksJXJzcAorLkxjY202NF9kZWNfcmV0OgorX19fCiskY29kZS49PDxfX187CisJcmV0Cisuc2l6ZQlhZXNuaV9jY202NF9kZWNyeXB0X2Jsb2NrcywuLWFlc25pX2NjbTY0X2RlY3J5cHRfYmxvY2tzCitfX18KK30MCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIHZvaWQgYWVzbmlfY3RyMzJfZW5jcnlwdF9ibG9ja3MgKGNvbnN0IHZvaWQgKmluLCB2b2lkICpvdXQsCisjICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBibG9ja3MsIGNvbnN0IEFFU19LRVkgKmtleSwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaXZlYyk7CisjCisjIEhhbmRsZXMgb25seSBjb21wbGV0ZSBibG9ja3MsIG9wZXJhdGVzIG9uIDMyLWJpdCBjb3VudGVyIGFuZAorIyBkb2VzIG5vdCB1cGRhdGUgKml2ZWMhIChzZWUgZW5naW5lL2VuZ19hZXNuaS5jIGZvciBkZXRhaWxzKQorIworeworbXkgJHJlc2VydmVkID0gJHdpbjY0PzA6LTB4Mjg7CitteSAoJGluMCwkaW4xLCRpbjIsJGluMyk9bWFwKCIleG1tJF8iLCg4Li4xMSkpOworbXkgKCRpdjAsJGl2MSwkaXZlYyk9KCIleG1tMTIiLCIleG1tMTMiLCIleG1tMTQiKTsKK215ICRic3dhcF9tYXNrPSIleG1tMTUiOworCiskY29kZS49PDxfX187CisuZ2xvYmwJYWVzbmlfY3RyMzJfZW5jcnlwdF9ibG9ja3MKKy50eXBlCWFlc25pX2N0cjMyX2VuY3J5cHRfYmxvY2tzLFxAZnVuY3Rpb24sNQorLmFsaWduCTE2CithZXNuaV9jdHIzMl9lbmNyeXB0X2Jsb2NrczoKK19fXworJGNvZGUuPTw8X19fIGlmICgkd2luNjQpOworCWxlYQktMHhjOCglcnNwKSwlcnNwCisJbW92YXBzCSV4bW02LDB4MjAoJXJzcCkKKwltb3ZhcHMJJXhtbTcsMHgzMCglcnNwKQorCW1vdmFwcwkleG1tOCwweDQwKCVyc3ApCisJbW92YXBzCSV4bW05LDB4NTAoJXJzcCkKKwltb3ZhcHMJJXhtbTEwLDB4NjAoJXJzcCkKKwltb3ZhcHMJJXhtbTExLDB4NzAoJXJzcCkKKwltb3ZhcHMJJXhtbTEyLDB4ODAoJXJzcCkKKwltb3ZhcHMJJXhtbTEzLDB4OTAoJXJzcCkKKwltb3ZhcHMJJXhtbTE0LDB4YTAoJXJzcCkKKwltb3ZhcHMJJXhtbTE1LDB4YjAoJXJzcCkKKy5MY3RyMzJfYm9keToKK19fXworJGNvZGUuPTw8X19fOworCWNtcAlcJDEsJGxlbgorCWplCS5MY3RyMzJfb25lX3Nob3J0Y3V0CisKKwltb3ZkcXUJKCRpdnApLCRpdmVjCisJbW92ZHFhCS5MYnN3YXBfbWFzayglcmlwKSwkYnN3YXBfbWFzaworCXhvcgkkcm91bmRzLCRyb3VuZHMKKwlwZXh0cmQJXCQzLCRpdmVjLCRybmRzXwkJIyBwdWxsIDMyLWJpdCBjb3VudGVyCisJcGluc3JkCVwkMywkcm91bmRzLCRpdmVjCQkjIHdpcGUgMzItYml0IGNvdW50ZXIKKworCW1vdgkyNDAoJGtleSksJHJvdW5kcwkJIyBrZXktPnJvdW5kcworCWJzd2FwCSRybmRzXworCXB4b3IJJGl2MCwkaXYwCQkJIyB2ZWN0b3Igb2YgMyAzMi1iaXQgY291bnRlcnMKKwlweG9yCSRpdjEsJGl2MQkJCSMgdmVjdG9yIG9mIDMgMzItYml0IGNvdW50ZXJzCisJcGluc3JkCVwkMCwkcm5kc18sJGl2MAorCWxlYQkzKCRybmRzXyksJGtleV8KKwlwaW5zcmQJXCQwLCRrZXlfLCRpdjEKKwlpbmMJJHJuZHNfCisJcGluc3JkCVwkMSwkcm5kc18sJGl2MAorCWluYwkka2V5XworCXBpbnNyZAlcJDEsJGtleV8sJGl2MQorCWluYwkkcm5kc18KKwlwaW5zcmQJXCQyLCRybmRzXywkaXYwCisJaW5jCSRrZXlfCisJcGluc3JkCVwkMiwka2V5XywkaXYxCisJbW92ZHFhCSRpdjAsJHJlc2VydmVkKCVyc3ApCisJcHNodWZiCSRic3dhcF9tYXNrLCRpdjAKKwltb3ZkcWEJJGl2MSxgJHJlc2VydmVkKzB4MTBgKCVyc3ApCisJcHNodWZiCSRic3dhcF9tYXNrLCRpdjEKKworCXBzaHVmZAlcJGAzPDw2YCwkaXYwLCRpbm91dDAJCSMgcGxhY2UgY291bnRlciB0byB1cHBlciBkd29yZAorCXBzaHVmZAlcJGAyPDw2YCwkaXYwLCRpbm91dDEKKwlwc2h1ZmQJXCRgMTw8NmAsJGl2MCwkaW5vdXQyCisJY21wCVwkNiwkbGVuCisJamIJLkxjdHIzMl90YWlsCisJc2hyCVwkMSwkcm91bmRzCisJbW92CSRrZXksJGtleV8JCQkjIGJhY2t1cCAka2V5CisJbW92CSRyb3VuZHMsJHJuZHNfCQkJIyBiYWNrdXAgJHJvdW5kcworCXN1YglcJDYsJGxlbgorCWptcAkuTGN0cjMyX2xvb3A2CisKKy5hbGlnbgkxNgorLkxjdHIzMl9sb29wNjoKKwlwc2h1ZmQJXCRgMzw8NmAsJGl2MSwkaW5vdXQzCisJcG9yCSRpdmVjLCRpbm91dDAJCQkjIG1lcmdlIGNvdW50ZXItbGVzcyBpdmVjCisJICRtb3ZrZXkJKCRrZXlfKSwkcm5ka2V5MAorCXBzaHVmZAlcJGAyPDw2YCwkaXYxLCRpbm91dDQKKwlwb3IJJGl2ZWMsJGlub3V0MQorCSAkbW92a2V5CTE2KCRrZXlfKSwkcm5ka2V5MQorCXBzaHVmZAlcJGAxPDw2YCwkaXYxLCRpbm91dDUKKwlwb3IJJGl2ZWMsJGlub3V0MgorCXBvcgkkaXZlYywkaW5vdXQzCisJIHhvcnBzCQkkcm5ka2V5MCwkaW5vdXQwCisJcG9yCSRpdmVjLCRpbm91dDQKKwlwb3IJJGl2ZWMsJGlub3V0NQorCisJIyBpbmxpbmUgX2Flc25pX2VuY3J5cHQ2IGFuZCBpbnRlcmxlYXZlIGxhc3Qgcm91bmRzCisJIyB3aXRoIG93biBjb2RlLi4uCisKKwlweG9yCQkkcm5ka2V5MCwkaW5vdXQxCisJYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQwCisJbGVhCQkzMigka2V5XyksJGtleQorCXB4b3IJCSRybmRrZXkwLCRpbm91dDIKKwlhZXNlbmMJCSRybmRrZXkxLCRpbm91dDEKKwkgbW92ZHFhCQkuTGluY3JlbWVudDMyKCVyaXApLCRpdjEKKwlweG9yCQkkcm5ka2V5MCwkaW5vdXQzCisJYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQyCisJIG1vdmRxYQkJJHJlc2VydmVkKCVyc3ApLCRpdjAKKwlweG9yCQkkcm5ka2V5MCwkaW5vdXQ0CisJYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQzCisJcHhvcgkJJHJuZGtleTAsJGlub3V0NQorCSRtb3ZrZXkJCSgka2V5KSwkcm5ka2V5MAorCWRlYwkJJHJvdW5kcworCWFlc2VuYwkJJHJuZGtleTEsJGlub3V0NAorCWFlc2VuYwkJJHJuZGtleTEsJGlub3V0NQorCWptcAkJLkxjdHIzMl9lbmNfbG9vcDZfZW50ZXIKKy5hbGlnbgkxNgorLkxjdHIzMl9lbmNfbG9vcDY6CisJYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQwCisJYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQxCisJZGVjCQkkcm91bmRzCisJYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQyCisJYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQzCisJYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQ0CisJYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQ1CisuTGN0cjMyX2VuY19sb29wNl9lbnRlcjoKKwkkbW92a2V5CQkxNigka2V5KSwkcm5ka2V5MQorCWFlc2VuYwkJJHJuZGtleTAsJGlub3V0MAorCWFlc2VuYwkJJHJuZGtleTAsJGlub3V0MQorCWxlYQkJMzIoJGtleSksJGtleQorCWFlc2VuYwkJJHJuZGtleTAsJGlub3V0MgorCWFlc2VuYwkJJHJuZGtleTAsJGlub3V0MworCWFlc2VuYwkJJHJuZGtleTAsJGlub3V0NAorCWFlc2VuYwkJJHJuZGtleTAsJGlub3V0NQorCSRtb3ZrZXkJCSgka2V5KSwkcm5ka2V5MAorCWpuegkJLkxjdHIzMl9lbmNfbG9vcDYKKworCWFlc2VuYwkJJHJuZGtleTEsJGlub3V0MAorCSBwYWRkZAkJJGl2MSwkaXYwCQkjIGluY3JlbWVudCBjb3VudGVyIHZlY3RvcgorCWFlc2VuYwkJJHJuZGtleTEsJGlub3V0MQorCSBwYWRkZAkJYCRyZXNlcnZlZCsweDEwYCglcnNwKSwkaXYxCisJYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQyCisJIG1vdmRxYQkJJGl2MCwkcmVzZXJ2ZWQoJXJzcCkJIyBzYXZlIGNvdW50ZXIgdmVjdG9yCisJYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQzCisJIG1vdmRxYQkJJGl2MSxgJHJlc2VydmVkKzB4MTBgKCVyc3ApCisJYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQ0CisJIHBzaHVmYgkJJGJzd2FwX21hc2ssJGl2MAkjIGJ5dGUgc3dhcAorCWFlc2VuYwkJJHJuZGtleTEsJGlub3V0NQorCSBwc2h1ZmIJCSRic3dhcF9tYXNrLCRpdjEKKworCWFlc2VuY2xhc3QJJHJuZGtleTAsJGlub3V0MAorCSBtb3Z1cHMJCSgkaW5wKSwkaW4wCQkjIGxvYWQgaW5wdXQKKwlhZXNlbmNsYXN0CSRybmRrZXkwLCRpbm91dDEKKwkgbW92dXBzCQkweDEwKCRpbnApLCRpbjEKKwlhZXNlbmNsYXN0CSRybmRrZXkwLCRpbm91dDIKKwkgbW92dXBzCQkweDIwKCRpbnApLCRpbjIKKwlhZXNlbmNsYXN0CSRybmRrZXkwLCRpbm91dDMKKwkgbW92dXBzCQkweDMwKCRpbnApLCRpbjMKKwlhZXNlbmNsYXN0CSRybmRrZXkwLCRpbm91dDQKKwkgbW92dXBzCQkweDQwKCRpbnApLCRybmRrZXkxCisJYWVzZW5jbGFzdAkkcm5ka2V5MCwkaW5vdXQ1CisJIG1vdnVwcwkJMHg1MCgkaW5wKSwkcm5ka2V5MAorCSBsZWEJMHg2MCgkaW5wKSwkaW5wCisKKwl4b3JwcwkkaW5vdXQwLCRpbjAJCQkjIHhvcgorCSBwc2h1ZmQJXCRgMzw8NmAsJGl2MCwkaW5vdXQwCisJeG9ycHMJJGlub3V0MSwkaW4xCisJIHBzaHVmZAlcJGAyPDw2YCwkaXYwLCRpbm91dDEKKwltb3Z1cHMJJGluMCwoJG91dCkJCQkjIHN0b3JlIG91dHB1dAorCXhvcnBzCSRpbm91dDIsJGluMgorCSBwc2h1ZmQJXCRgMTw8NmAsJGl2MCwkaW5vdXQyCisJbW92dXBzCSRpbjEsMHgxMCgkb3V0KQorCXhvcnBzCSRpbm91dDMsJGluMworCW1vdnVwcwkkaW4yLDB4MjAoJG91dCkKKwl4b3JwcwkkaW5vdXQ0LCRybmRrZXkxCisJbW92dXBzCSRpbjMsMHgzMCgkb3V0KQorCXhvcnBzCSRpbm91dDUsJHJuZGtleTAKKwltb3Z1cHMJJHJuZGtleTEsMHg0MCgkb3V0KQorCW1vdnVwcwkkcm5ka2V5MCwweDUwKCRvdXQpCisJbGVhCTB4NjAoJG91dCksJG91dAorCW1vdgkkcm5kc18sJHJvdW5kcworCXN1YglcJDYsJGxlbgorCWpuYwkuTGN0cjMyX2xvb3A2CisKKwlhZGQJXCQ2LCRsZW4KKwlqegkuTGN0cjMyX2RvbmUKKwltb3YJJGtleV8sJGtleQkJCSMgcmVzdG9yZSAka2V5CisJbGVhCTEoJHJvdW5kcywkcm91bmRzKSwkcm91bmRzCSMgcmVzdG9yZSBvcmlnaW5hbCB2YWx1ZQorCisuTGN0cjMyX3RhaWw6CisJcG9yCSRpdmVjLCRpbm91dDAKKwltb3Z1cHMJKCRpbnApLCRpbjAKKwljbXAJXCQyLCRsZW4KKwlqYgkuTGN0cjMyX29uZQorCisJcG9yCSRpdmVjLCRpbm91dDEKKwltb3Z1cHMJMHgxMCgkaW5wKSwkaW4xCisJamUJLkxjdHIzMl90d28KKworCXBzaHVmZAlcJGAzPDw2YCwkaXYxLCRpbm91dDMKKwlwb3IJJGl2ZWMsJGlub3V0MgorCW1vdnVwcwkweDIwKCRpbnApLCRpbjIKKwljbXAJXCQ0LCRsZW4KKwlqYgkuTGN0cjMyX3RocmVlCisKKwlwc2h1ZmQJXCRgMjw8NmAsJGl2MSwkaW5vdXQ0CisJcG9yCSRpdmVjLCRpbm91dDMKKwltb3Z1cHMJMHgzMCgkaW5wKSwkaW4zCisJamUJLkxjdHIzMl9mb3VyCisKKwlwb3IJJGl2ZWMsJGlub3V0NAorCXhvcnBzCSRpbm91dDUsJGlub3V0NQorCisJY2FsbAlfYWVzbmlfZW5jcnlwdDYKKworCW1vdnVwcwkweDQwKCRpbnApLCRybmRrZXkxCisJeG9ycHMJJGlub3V0MCwkaW4wCisJeG9ycHMJJGlub3V0MSwkaW4xCisJbW92dXBzCSRpbjAsKCRvdXQpCisJeG9ycHMJJGlub3V0MiwkaW4yCisJbW92dXBzCSRpbjEsMHgxMCgkb3V0KQorCXhvcnBzCSRpbm91dDMsJGluMworCW1vdnVwcwkkaW4yLDB4MjAoJG91dCkKKwl4b3JwcwkkaW5vdXQ0LCRybmRrZXkxCisJbW92dXBzCSRpbjMsMHgzMCgkb3V0KQorCW1vdnVwcwkkcm5ka2V5MSwweDQwKCRvdXQpCisJam1wCS5MY3RyMzJfZG9uZQorCisuYWxpZ24JMTYKKy5MY3RyMzJfb25lX3Nob3J0Y3V0OgorCW1vdnVwcwkoJGl2cCksJGlub3V0MAorCW1vdnVwcwkoJGlucCksJGluMAorCW1vdgkyNDAoJGtleSksJHJvdW5kcwkJIyBrZXktPnJvdW5kcworLkxjdHIzMl9vbmU6CitfX18KKwkmYWVzbmlfZ2VuZXJhdGUxKCJlbmMiLCRrZXksJHJvdW5kcyk7CiskY29kZS49PDxfX187CisJeG9ycHMJJGlub3V0MCwkaW4wCisJbW92dXBzCSRpbjAsKCRvdXQpCisJam1wCS5MY3RyMzJfZG9uZQorCisuYWxpZ24JMTYKKy5MY3RyMzJfdHdvOgorCXhvcnBzCSRpbm91dDIsJGlub3V0MgorCWNhbGwJX2Flc25pX2VuY3J5cHQzCisJeG9ycHMJJGlub3V0MCwkaW4wCisJeG9ycHMJJGlub3V0MSwkaW4xCisJbW92dXBzCSRpbjAsKCRvdXQpCisJbW92dXBzCSRpbjEsMHgxMCgkb3V0KQorCWptcAkuTGN0cjMyX2RvbmUKKworLmFsaWduCTE2CisuTGN0cjMyX3RocmVlOgorCWNhbGwJX2Flc25pX2VuY3J5cHQzCisJeG9ycHMJJGlub3V0MCwkaW4wCisJeG9ycHMJJGlub3V0MSwkaW4xCisJbW92dXBzCSRpbjAsKCRvdXQpCisJeG9ycHMJJGlub3V0MiwkaW4yCisJbW92dXBzCSRpbjEsMHgxMCgkb3V0KQorCW1vdnVwcwkkaW4yLDB4MjAoJG91dCkKKwlqbXAJLkxjdHIzMl9kb25lCisKKy5hbGlnbgkxNgorLkxjdHIzMl9mb3VyOgorCWNhbGwJX2Flc25pX2VuY3J5cHQ0CisJeG9ycHMJJGlub3V0MCwkaW4wCisJeG9ycHMJJGlub3V0MSwkaW4xCisJbW92dXBzCSRpbjAsKCRvdXQpCisJeG9ycHMJJGlub3V0MiwkaW4yCisJbW92dXBzCSRpbjEsMHgxMCgkb3V0KQorCXhvcnBzCSRpbm91dDMsJGluMworCW1vdnVwcwkkaW4yLDB4MjAoJG91dCkKKwltb3Z1cHMJJGluMywweDMwKCRvdXQpCisKKy5MY3RyMzJfZG9uZToKK19fXworJGNvZGUuPTw8X19fIGlmICgkd2luNjQpOworCW1vdmFwcwkweDIwKCVyc3ApLCV4bW02CisJbW92YXBzCTB4MzAoJXJzcCksJXhtbTcKKwltb3ZhcHMJMHg0MCglcnNwKSwleG1tOAorCW1vdmFwcwkweDUwKCVyc3ApLCV4bW05CisJbW92YXBzCTB4NjAoJXJzcCksJXhtbTEwCisJbW92YXBzCTB4NzAoJXJzcCksJXhtbTExCisJbW92YXBzCTB4ODAoJXJzcCksJXhtbTEyCisJbW92YXBzCTB4OTAoJXJzcCksJXhtbTEzCisJbW92YXBzCTB4YTAoJXJzcCksJXhtbTE0CisJbW92YXBzCTB4YjAoJXJzcCksJXhtbTE1CisJbGVhCTB4YzgoJXJzcCksJXJzcAorLkxjdHIzMl9yZXQ6CitfX18KKyRjb2RlLj08PF9fXzsKKwlyZXQKKy5zaXplCWFlc25pX2N0cjMyX2VuY3J5cHRfYmxvY2tzLC4tYWVzbmlfY3RyMzJfZW5jcnlwdF9ibG9ja3MKK19fXworfQorDAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyB2b2lkIGFlc25pX3h0c19bZW58ZGVdY3J5cHQoY29uc3QgY2hhciAqaW5wLGNoYXIgKm91dCxzaXplX3QgbGVuLAorIwljb25zdCBBRVNfS0VZICprZXkxLCBjb25zdCBBRVNfS0VZICprZXkyCisjCWNvbnN0IHVuc2lnbmVkIGNoYXIgaXZbMTZdKTsKKyMKK3sKK215IEB0d2Vhaz1tYXAoIiV4bW0kXyIsKDEwLi4xNSkpOworbXkgKCR0d21hc2ssJHR3cmVzLCR0d3RtcCk9KCIleG1tOCIsIiV4bW05IixAdHdlYWtbNF0pOworbXkgKCRrZXkyLCRpdnAsJGxlbl8pPSgiJXI4IiwiJXI5IiwiJXI5Iik7CitteSAkZnJhbWVfc2l6ZSA9IDB4NjggKyAoJHdpbjY0PzE2MDowKTsKKworJGNvZGUuPTw8X19fOworLmdsb2JsCWFlc25pX3h0c19lbmNyeXB0CisudHlwZQlhZXNuaV94dHNfZW5jcnlwdCxcQGZ1bmN0aW9uLDYKKy5hbGlnbgkxNgorYWVzbmlfeHRzX2VuY3J5cHQ6CisJbGVhCS0kZnJhbWVfc2l6ZSglcnNwKSwlcnNwCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKwltb3ZhcHMJJXhtbTYsMHg2MCglcnNwKQorCW1vdmFwcwkleG1tNywweDcwKCVyc3ApCisJbW92YXBzCSV4bW04LDB4ODAoJXJzcCkKKwltb3ZhcHMJJXhtbTksMHg5MCglcnNwKQorCW1vdmFwcwkleG1tMTAsMHhhMCglcnNwKQorCW1vdmFwcwkleG1tMTEsMHhiMCglcnNwKQorCW1vdmFwcwkleG1tMTIsMHhjMCglcnNwKQorCW1vdmFwcwkleG1tMTMsMHhkMCglcnNwKQorCW1vdmFwcwkleG1tMTQsMHhlMCglcnNwKQorCW1vdmFwcwkleG1tMTUsMHhmMCglcnNwKQorLkx4dHNfZW5jX2JvZHk6CitfX18KKyRjb2RlLj08PF9fXzsKKwltb3Z1cHMJKCRpdnApLEB0d2Vha1s1XQkJIyBsb2FkIGNsZWFyLXRleHQgdHdlYWsKKwltb3YJMjQwKCVyOCksJHJvdW5kcwkJIyBrZXkyLT5yb3VuZHMKKwltb3YJMjQwKCRrZXkpLCRybmRzXwkJIyBrZXkxLT5yb3VuZHMKK19fXworCSMgZ2VuZXJhdGUgdGhlIHR3ZWFrCisJJmFlc25pX2dlbmVyYXRlMSgiZW5jIiwka2V5Miwkcm91bmRzLEB0d2Vha1s1XSk7CiskY29kZS49PDxfX187CisJbW92CSRrZXksJGtleV8JCQkjIGJhY2t1cCAka2V5CisJbW92CSRybmRzXywkcm91bmRzCQkJIyBiYWNrdXAgJHJvdW5kcworCW1vdgkkbGVuLCRsZW5fCQkJIyBiYWNrdXAgJGxlbgorCWFuZAlcJC0xNiwkbGVuCisKKwltb3ZkcWEJLkx4dHNfbWFnaWMoJXJpcCksJHR3bWFzaworCXB4b3IJJHR3dG1wLCR0d3RtcAorCXBjbXBndGQJQHR3ZWFrWzVdLCR0d3RtcAkJIyBicm9hZGNhc3QgdXBwZXIgYml0cworX19fCisgICAgZm9yICgkaT0wOyRpPDQ7JGkrKykgeworICAgICRjb2RlLj08PF9fXzsKKwlwc2h1ZmQJXCQweDEzLCR0d3RtcCwkdHdyZXMKKwlweG9yCSR0d3RtcCwkdHd0bXAKKwltb3ZkcWEJQHR3ZWFrWzVdLEB0d2Vha1skaV0KKwlwYWRkcQlAdHdlYWtbNV0sQHR3ZWFrWzVdCQkjIHBzbGxxCTEsJHR3ZWFrCisJcGFuZAkkdHdtYXNrLCR0d3JlcwkJCSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCXBjbXBndGQJQHR3ZWFrWzVdLCR0d3RtcAkJIyBicm9hZGNhdCB1cHBlciBiaXRzCisJcHhvcgkkdHdyZXMsQHR3ZWFrWzVdCitfX18KKyAgICB9CiskY29kZS49PDxfX187CisJc3ViCVwkMTYqNiwkbGVuCisJamMJLkx4dHNfZW5jX3Nob3J0CisKKwlzaHIJXCQxLCRyb3VuZHMKKwlzdWIJXCQxLCRyb3VuZHMKKwltb3YJJHJvdW5kcywkcm5kc18KKwlqbXAJLkx4dHNfZW5jX2dyYW5kbG9vcAorCisuYWxpZ24JMTYKKy5MeHRzX2VuY19ncmFuZGxvb3A6CisJcHNodWZkCVwkMHgxMywkdHd0bXAsJHR3cmVzCisJbW92ZHFhCUB0d2Vha1s1XSxAdHdlYWtbNF0KKwlwYWRkcQlAdHdlYWtbNV0sQHR3ZWFrWzVdCQkjIHBzbGxxIDEsJHR3ZWFrCisJbW92ZHF1CWAxNiowYCgkaW5wKSwkaW5vdXQwCQkjIGxvYWQgaW5wdXQKKwlwYW5kCSR0d21hc2ssJHR3cmVzCQkJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJbW92ZHF1CWAxNioxYCgkaW5wKSwkaW5vdXQxCisJcHhvcgkkdHdyZXMsQHR3ZWFrWzVdCisKKwltb3ZkcXUJYDE2KjJgKCRpbnApLCRpbm91dDIKKwlweG9yCUB0d2Vha1swXSwkaW5vdXQwCQkjIGlucHV0Xj10d2VhaworCW1vdmRxdQlgMTYqM2AoJGlucCksJGlub3V0MworCXB4b3IJQHR3ZWFrWzFdLCRpbm91dDEKKwltb3ZkcXUJYDE2KjRgKCRpbnApLCRpbm91dDQKKwlweG9yCUB0d2Vha1syXSwkaW5vdXQyCisJbW92ZHF1CWAxNio1YCgkaW5wKSwkaW5vdXQ1CisJbGVhCWAxNio2YCgkaW5wKSwkaW5wCisJcHhvcglAdHdlYWtbM10sJGlub3V0MworCSRtb3ZrZXkJCSgka2V5XyksJHJuZGtleTAKKwlweG9yCUB0d2Vha1s0XSwkaW5vdXQ0CisJcHhvcglAdHdlYWtbNV0sJGlub3V0NQorCisJIyBpbmxpbmUgX2Flc25pX2VuY3J5cHQ2IGFuZCBpbnRlcmxlYXZlIGZpcnN0IGFuZCBsYXN0IHJvdW5kcworCSMgd2l0aCBvd24gY29kZS4uLgorCSRtb3ZrZXkJCTE2KCRrZXlfKSwkcm5ka2V5MQorCXB4b3IJCSRybmRrZXkwLCRpbm91dDAKKwlweG9yCQkkcm5ka2V5MCwkaW5vdXQxCisJIG1vdmRxYQlAdHdlYWtbMF0sYDE2KjBgKCVyc3ApCQkjIHB1dCBhc2lkZSB0d2Vha3MKKwlhZXNlbmMJCSRybmRrZXkxLCRpbm91dDAKKwlsZWEJCTMyKCRrZXlfKSwka2V5CisJcHhvcgkJJHJuZGtleTAsJGlub3V0MgorCSBtb3ZkcWEJQHR3ZWFrWzFdLGAxNioxYCglcnNwKQorCWFlc2VuYwkJJHJuZGtleTEsJGlub3V0MQorCXB4b3IJCSRybmRrZXkwLCRpbm91dDMKKwkgbW92ZHFhCUB0d2Vha1syXSxgMTYqMmAoJXJzcCkKKwlhZXNlbmMJCSRybmRrZXkxLCRpbm91dDIKKwlweG9yCQkkcm5ka2V5MCwkaW5vdXQ0CisJIG1vdmRxYQlAdHdlYWtbM10sYDE2KjNgKCVyc3ApCisJYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQzCisJcHhvcgkJJHJuZGtleTAsJGlub3V0NQorCSRtb3ZrZXkJCSgka2V5KSwkcm5ka2V5MAorCWRlYwkJJHJvdW5kcworCSBtb3ZkcWEJQHR3ZWFrWzRdLGAxNio0YCglcnNwKQorCWFlc2VuYwkJJHJuZGtleTEsJGlub3V0NAorCSBtb3ZkcWEJQHR3ZWFrWzVdLGAxNio1YCglcnNwKQorCWFlc2VuYwkJJHJuZGtleTEsJGlub3V0NQorCXB4b3IJJHR3dG1wLCR0d3RtcAorCXBjbXBndGQJQHR3ZWFrWzVdLCR0d3RtcAorCWptcAkJLkx4dHNfZW5jX2xvb3A2X2VudGVyCisKKy5hbGlnbgkxNgorLkx4dHNfZW5jX2xvb3A2OgorCWFlc2VuYwkJJHJuZGtleTEsJGlub3V0MAorCWFlc2VuYwkJJHJuZGtleTEsJGlub3V0MQorCWRlYwkJJHJvdW5kcworCWFlc2VuYwkJJHJuZGtleTEsJGlub3V0MgorCWFlc2VuYwkJJHJuZGtleTEsJGlub3V0MworCWFlc2VuYwkJJHJuZGtleTEsJGlub3V0NAorCWFlc2VuYwkJJHJuZGtleTEsJGlub3V0NQorLkx4dHNfZW5jX2xvb3A2X2VudGVyOgorCSRtb3ZrZXkJCTE2KCRrZXkpLCRybmRrZXkxCisJYWVzZW5jCQkkcm5ka2V5MCwkaW5vdXQwCisJYWVzZW5jCQkkcm5ka2V5MCwkaW5vdXQxCisJbGVhCQkzMigka2V5KSwka2V5CisJYWVzZW5jCQkkcm5ka2V5MCwkaW5vdXQyCisJYWVzZW5jCQkkcm5ka2V5MCwkaW5vdXQzCisJYWVzZW5jCQkkcm5ka2V5MCwkaW5vdXQ0CisJYWVzZW5jCQkkcm5ka2V5MCwkaW5vdXQ1CisJJG1vdmtleQkJKCRrZXkpLCRybmRrZXkwCisJam56CQkuTHh0c19lbmNfbG9vcDYKKworCXBzaHVmZAlcJDB4MTMsJHR3dG1wLCR0d3JlcworCXB4b3IJJHR3dG1wLCR0d3RtcAorCXBhZGRxCUB0d2Vha1s1XSxAdHdlYWtbNV0JCSMgcHNsbHEJMSwkdHdlYWsKKwkgYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQwCisJcGFuZAkkdHdtYXNrLCR0d3JlcwkJCSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCSBhZXNlbmMJCSRybmRrZXkxLCRpbm91dDEKKwlwY21wZ3RkCUB0d2Vha1s1XSwkdHd0bXAJCSMgYnJvYWRjYXN0IHVwcGVyIGJpdHMKKwkgYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQyCisJcHhvcgkkdHdyZXMsQHR3ZWFrWzVdCisJIGFlc2VuYwkJJHJuZGtleTEsJGlub3V0MworCSBhZXNlbmMJCSRybmRrZXkxLCRpbm91dDQKKwkgYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQ1CisJICRtb3ZrZXkJMTYoJGtleSksJHJuZGtleTEKKworCXBzaHVmZAlcJDB4MTMsJHR3dG1wLCR0d3JlcworCXB4b3IJJHR3dG1wLCR0d3RtcAorCW1vdmRxYQlAdHdlYWtbNV0sQHR3ZWFrWzBdCisJcGFkZHEJQHR3ZWFrWzVdLEB0d2Vha1s1XQkJIyBwc2xscQkxLCR0d2VhaworCSBhZXNlbmMJCSRybmRrZXkwLCRpbm91dDAKKwlwYW5kCSR0d21hc2ssJHR3cmVzCQkJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJIGFlc2VuYwkJJHJuZGtleTAsJGlub3V0MQorCXBjbXBndGQJQHR3ZWFrWzVdLCR0d3RtcAkJIyBicm9hZGNhdCB1cHBlciBiaXRzCisJIGFlc2VuYwkJJHJuZGtleTAsJGlub3V0MgorCXB4b3IJJHR3cmVzLEB0d2Vha1s1XQorCSBhZXNlbmMJCSRybmRrZXkwLCRpbm91dDMKKwkgYWVzZW5jCQkkcm5ka2V5MCwkaW5vdXQ0CisJIGFlc2VuYwkJJHJuZGtleTAsJGlub3V0NQorCSAkbW92a2V5CTMyKCRrZXkpLCRybmRrZXkwCisKKwlwc2h1ZmQJXCQweDEzLCR0d3RtcCwkdHdyZXMKKwlweG9yCSR0d3RtcCwkdHd0bXAKKwltb3ZkcWEJQHR3ZWFrWzVdLEB0d2Vha1sxXQorCXBhZGRxCUB0d2Vha1s1XSxAdHdlYWtbNV0JCSMgcHNsbHEJMSwkdHdlYWsKKwkgYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQwCisJcGFuZAkkdHdtYXNrLCR0d3JlcwkJCSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCSBhZXNlbmMJCSRybmRrZXkxLCRpbm91dDEKKwlwY21wZ3RkCUB0d2Vha1s1XSwkdHd0bXAJCSMgYnJvYWRjYXQgdXBwZXIgYml0cworCSBhZXNlbmMJCSRybmRrZXkxLCRpbm91dDIKKwlweG9yCSR0d3JlcyxAdHdlYWtbNV0KKwkgYWVzZW5jCQkkcm5ka2V5MSwkaW5vdXQzCisJIGFlc2VuYwkJJHJuZGtleTEsJGlub3V0NAorCSBhZXNlbmMJCSRybmRrZXkxLCRpbm91dDUKKworCXBzaHVmZAlcJDB4MTMsJHR3dG1wLCR0d3JlcworCXB4b3IJJHR3dG1wLCR0d3RtcAorCW1vdmRxYQlAdHdlYWtbNV0sQHR3ZWFrWzJdCisJcGFkZHEJQHR3ZWFrWzVdLEB0d2Vha1s1XQkJIyBwc2xscQkxLCR0d2VhaworCSBhZXNlbmNsYXN0CSRybmRrZXkwLCRpbm91dDAKKwlwYW5kCSR0d21hc2ssJHR3cmVzCQkJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJIGFlc2VuY2xhc3QJJHJuZGtleTAsJGlub3V0MQorCXBjbXBndGQJQHR3ZWFrWzVdLCR0d3RtcAkJIyBicm9hZGNhdCB1cHBlciBiaXRzCisJIGFlc2VuY2xhc3QJJHJuZGtleTAsJGlub3V0MgorCXB4b3IJJHR3cmVzLEB0d2Vha1s1XQorCSBhZXNlbmNsYXN0CSRybmRrZXkwLCRpbm91dDMKKwkgYWVzZW5jbGFzdAkkcm5ka2V5MCwkaW5vdXQ0CisJIGFlc2VuY2xhc3QJJHJuZGtleTAsJGlub3V0NQorCisJcHNodWZkCVwkMHgxMywkdHd0bXAsJHR3cmVzCisJcHhvcgkkdHd0bXAsJHR3dG1wCisJbW92ZHFhCUB0d2Vha1s1XSxAdHdlYWtbM10KKwlwYWRkcQlAdHdlYWtbNV0sQHR3ZWFrWzVdCQkjIHBzbGxxCTEsJHR3ZWFrCisJIHhvcnBzCWAxNiowYCglcnNwKSwkaW5vdXQwCQkjIG91dHB1dF49dHdlYWsKKwlwYW5kCSR0d21hc2ssJHR3cmVzCQkJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJIHhvcnBzCWAxNioxYCglcnNwKSwkaW5vdXQxCisJcGNtcGd0ZAlAdHdlYWtbNV0sJHR3dG1wCQkjIGJyb2FkY2F0IHVwcGVyIGJpdHMKKwlweG9yCSR0d3JlcyxAdHdlYWtbNV0KKworCXhvcnBzCWAxNioyYCglcnNwKSwkaW5vdXQyCisJbW92dXBzCSRpbm91dDAsYDE2KjBgKCRvdXQpCQkjIHdyaXRlIG91dHB1dAorCXhvcnBzCWAxNiozYCglcnNwKSwkaW5vdXQzCisJbW92dXBzCSRpbm91dDEsYDE2KjFgKCRvdXQpCisJeG9ycHMJYDE2KjRgKCVyc3ApLCRpbm91dDQKKwltb3Z1cHMJJGlub3V0MixgMTYqMmAoJG91dCkKKwl4b3JwcwlgMTYqNWAoJXJzcCksJGlub3V0NQorCW1vdnVwcwkkaW5vdXQzLGAxNiozYCgkb3V0KQorCW1vdgkkcm5kc18sJHJvdW5kcwkJCSMgcmVzdG9yZSAkcm91bmRzCisJbW92dXBzCSRpbm91dDQsYDE2KjRgKCRvdXQpCisJbW92dXBzCSRpbm91dDUsYDE2KjVgKCRvdXQpCisJbGVhCWAxNio2YCgkb3V0KSwkb3V0CisJc3ViCVwkMTYqNiwkbGVuCisJam5jCS5MeHRzX2VuY19ncmFuZGxvb3AKKworCWxlYQkzKCRyb3VuZHMsJHJvdW5kcyksJHJvdW5kcwkjIHJlc3RvcmUgb3JpZ2luYWwgdmFsdWUKKwltb3YJJGtleV8sJGtleQkJCSMgcmVzdG9yZSAka2V5CisJbW92CSRyb3VuZHMsJHJuZHNfCQkJIyBiYWNrdXAgJHJvdW5kcworCisuTHh0c19lbmNfc2hvcnQ6CisJYWRkCVwkMTYqNiwkbGVuCisJanoJLkx4dHNfZW5jX2RvbmUKKworCWNtcAlcJDB4MjAsJGxlbgorCWpiCS5MeHRzX2VuY19vbmUKKwlqZQkuTHh0c19lbmNfdHdvCisKKwljbXAJXCQweDQwLCRsZW4KKwlqYgkuTHh0c19lbmNfdGhyZWUKKwlqZQkuTHh0c19lbmNfZm91cgorCisJcHNodWZkCVwkMHgxMywkdHd0bXAsJHR3cmVzCisJbW92ZHFhCUB0d2Vha1s1XSxAdHdlYWtbNF0KKwlwYWRkcQlAdHdlYWtbNV0sQHR3ZWFrWzVdCQkjIHBzbGxxIDEsJHR3ZWFrCisJIG1vdmRxdQkoJGlucCksJGlub3V0MAorCXBhbmQJJHR3bWFzaywkdHdyZXMJCQkjIGlzb2xhdGUgY2FycnkgYW5kIHJlc2lkdWUKKwkgbW92ZHF1CTE2KjEoJGlucCksJGlub3V0MQorCXB4b3IJJHR3cmVzLEB0d2Vha1s1XQorCisJbW92ZHF1CTE2KjIoJGlucCksJGlub3V0MgorCXB4b3IJQHR3ZWFrWzBdLCRpbm91dDAKKwltb3ZkcXUJMTYqMygkaW5wKSwkaW5vdXQzCisJcHhvcglAdHdlYWtbMV0sJGlub3V0MQorCW1vdmRxdQkxNio0KCRpbnApLCRpbm91dDQKKwlsZWEJMTYqNSgkaW5wKSwkaW5wCisJcHhvcglAdHdlYWtbMl0sJGlub3V0MgorCXB4b3IJQHR3ZWFrWzNdLCRpbm91dDMKKwlweG9yCUB0d2Vha1s0XSwkaW5vdXQ0CisKKwljYWxsCV9hZXNuaV9lbmNyeXB0NgorCisJeG9ycHMJQHR3ZWFrWzBdLCRpbm91dDAKKwltb3ZkcWEJQHR3ZWFrWzVdLEB0d2Vha1swXQorCXhvcnBzCUB0d2Vha1sxXSwkaW5vdXQxCisJeG9ycHMJQHR3ZWFrWzJdLCRpbm91dDIKKwltb3ZkcXUJJGlub3V0MCwoJG91dCkKKwl4b3JwcwlAdHdlYWtbM10sJGlub3V0MworCW1vdmRxdQkkaW5vdXQxLDE2KjEoJG91dCkKKwl4b3JwcwlAdHdlYWtbNF0sJGlub3V0NAorCW1vdmRxdQkkaW5vdXQyLDE2KjIoJG91dCkKKwltb3ZkcXUJJGlub3V0MywxNiozKCRvdXQpCisJbW92ZHF1CSRpbm91dDQsMTYqNCgkb3V0KQorCWxlYQkxNio1KCRvdXQpLCRvdXQKKwlqbXAJLkx4dHNfZW5jX2RvbmUKKworLmFsaWduCTE2CisuTHh0c19lbmNfb25lOgorCW1vdnVwcwkoJGlucCksJGlub3V0MAorCWxlYQkxNioxKCRpbnApLCRpbnAKKwl4b3JwcwlAdHdlYWtbMF0sJGlub3V0MAorX19fCisJJmFlc25pX2dlbmVyYXRlMSgiZW5jIiwka2V5LCRyb3VuZHMpOworJGNvZGUuPTw8X19fOworCXhvcnBzCUB0d2Vha1swXSwkaW5vdXQwCisJbW92ZHFhCUB0d2Vha1sxXSxAdHdlYWtbMF0KKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKwlsZWEJMTYqMSgkb3V0KSwkb3V0CisJam1wCS5MeHRzX2VuY19kb25lCisKKy5hbGlnbgkxNgorLkx4dHNfZW5jX3R3bzoKKwltb3Z1cHMJKCRpbnApLCRpbm91dDAKKwltb3Z1cHMJMTYoJGlucCksJGlub3V0MQorCWxlYQkzMigkaW5wKSwkaW5wCisJeG9ycHMJQHR3ZWFrWzBdLCRpbm91dDAKKwl4b3JwcwlAdHdlYWtbMV0sJGlub3V0MQorCisJY2FsbAlfYWVzbmlfZW5jcnlwdDMKKworCXhvcnBzCUB0d2Vha1swXSwkaW5vdXQwCisJbW92ZHFhCUB0d2Vha1syXSxAdHdlYWtbMF0KKwl4b3JwcwlAdHdlYWtbMV0sJGlub3V0MQorCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorCW1vdnVwcwkkaW5vdXQxLDE2KjEoJG91dCkKKwlsZWEJMTYqMigkb3V0KSwkb3V0CisJam1wCS5MeHRzX2VuY19kb25lCisKKy5hbGlnbgkxNgorLkx4dHNfZW5jX3RocmVlOgorCW1vdnVwcwkoJGlucCksJGlub3V0MAorCW1vdnVwcwkxNioxKCRpbnApLCRpbm91dDEKKwltb3Z1cHMJMTYqMigkaW5wKSwkaW5vdXQyCisJbGVhCTE2KjMoJGlucCksJGlucAorCXhvcnBzCUB0d2Vha1swXSwkaW5vdXQwCisJeG9ycHMJQHR3ZWFrWzFdLCRpbm91dDEKKwl4b3JwcwlAdHdlYWtbMl0sJGlub3V0MgorCisJY2FsbAlfYWVzbmlfZW5jcnlwdDMKKworCXhvcnBzCUB0d2Vha1swXSwkaW5vdXQwCisJbW92ZHFhCUB0d2Vha1szXSxAdHdlYWtbMF0KKwl4b3JwcwlAdHdlYWtbMV0sJGlub3V0MQorCXhvcnBzCUB0d2Vha1syXSwkaW5vdXQyCisJbW92dXBzCSRpbm91dDAsKCRvdXQpCisJbW92dXBzCSRpbm91dDEsMTYqMSgkb3V0KQorCW1vdnVwcwkkaW5vdXQyLDE2KjIoJG91dCkKKwlsZWEJMTYqMygkb3V0KSwkb3V0CisJam1wCS5MeHRzX2VuY19kb25lCisKKy5hbGlnbgkxNgorLkx4dHNfZW5jX2ZvdXI6CisJbW92dXBzCSgkaW5wKSwkaW5vdXQwCisJbW92dXBzCTE2KjEoJGlucCksJGlub3V0MQorCW1vdnVwcwkxNioyKCRpbnApLCRpbm91dDIKKwl4b3JwcwlAdHdlYWtbMF0sJGlub3V0MAorCW1vdnVwcwkxNiozKCRpbnApLCRpbm91dDMKKwlsZWEJMTYqNCgkaW5wKSwkaW5wCisJeG9ycHMJQHR3ZWFrWzFdLCRpbm91dDEKKwl4b3JwcwlAdHdlYWtbMl0sJGlub3V0MgorCXhvcnBzCUB0d2Vha1szXSwkaW5vdXQzCisKKwljYWxsCV9hZXNuaV9lbmNyeXB0NAorCisJeG9ycHMJQHR3ZWFrWzBdLCRpbm91dDAKKwltb3ZkcWEJQHR3ZWFrWzVdLEB0d2Vha1swXQorCXhvcnBzCUB0d2Vha1sxXSwkaW5vdXQxCisJeG9ycHMJQHR3ZWFrWzJdLCRpbm91dDIKKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKwl4b3JwcwlAdHdlYWtbM10sJGlub3V0MworCW1vdnVwcwkkaW5vdXQxLDE2KjEoJG91dCkKKwltb3Z1cHMJJGlub3V0MiwxNioyKCRvdXQpCisJbW92dXBzCSRpbm91dDMsMTYqMygkb3V0KQorCWxlYQkxNio0KCRvdXQpLCRvdXQKKwlqbXAJLkx4dHNfZW5jX2RvbmUKKworLmFsaWduCTE2CisuTHh0c19lbmNfZG9uZToKKwlhbmQJXCQxNSwkbGVuXworCWp6CS5MeHRzX2VuY19yZXQKKwltb3YJJGxlbl8sJGxlbgorCisuTHh0c19lbmNfc3RlYWw6CisJbW92emIJKCRpbnApLCVlYXgJCQkjIGJvcnJvdyAkcm91bmRzIC4uLgorCW1vdnpiCS0xNigkb3V0KSwlZWN4CQkJIyAuLi4gYW5kICRrZXkKKwlsZWEJMSgkaW5wKSwkaW5wCisJbW92CSVhbCwtMTYoJG91dCkKKwltb3YJJWNsLDAoJG91dCkKKwlsZWEJMSgkb3V0KSwkb3V0CisJc3ViCVwkMSwkbGVuCisJam56CS5MeHRzX2VuY19zdGVhbAorCisJc3ViCSRsZW5fLCRvdXQJCQkjIHJld2luZCAkb3V0CisJbW92CSRrZXlfLCRrZXkJCQkjIHJlc3RvcmUgJGtleQorCW1vdgkkcm5kc18sJHJvdW5kcwkJCSMgcmVzdG9yZSAkcm91bmRzCisKKwltb3Z1cHMJLTE2KCRvdXQpLCRpbm91dDAKKwl4b3JwcwlAdHdlYWtbMF0sJGlub3V0MAorX19fCisJJmFlc25pX2dlbmVyYXRlMSgiZW5jIiwka2V5LCRyb3VuZHMpOworJGNvZGUuPTw8X19fOworCXhvcnBzCUB0d2Vha1swXSwkaW5vdXQwCisJbW92dXBzCSRpbm91dDAsLTE2KCRvdXQpCisKKy5MeHRzX2VuY19yZXQ6CitfX18KKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKwltb3ZhcHMJMHg2MCglcnNwKSwleG1tNgorCW1vdmFwcwkweDcwKCVyc3ApLCV4bW03CisJbW92YXBzCTB4ODAoJXJzcCksJXhtbTgKKwltb3ZhcHMJMHg5MCglcnNwKSwleG1tOQorCW1vdmFwcwkweGEwKCVyc3ApLCV4bW0xMAorCW1vdmFwcwkweGIwKCVyc3ApLCV4bW0xMQorCW1vdmFwcwkweGMwKCVyc3ApLCV4bW0xMgorCW1vdmFwcwkweGQwKCVyc3ApLCV4bW0xMworCW1vdmFwcwkweGUwKCVyc3ApLCV4bW0xNAorCW1vdmFwcwkweGYwKCVyc3ApLCV4bW0xNQorX19fCiskY29kZS49PDxfX187CisJbGVhCSRmcmFtZV9zaXplKCVyc3ApLCVyc3AKKy5MeHRzX2VuY19lcGlsb2d1ZToKKwlyZXQKKy5zaXplCWFlc25pX3h0c19lbmNyeXB0LC4tYWVzbmlfeHRzX2VuY3J5cHQKK19fXworCiskY29kZS49PDxfX187CisuZ2xvYmwJYWVzbmlfeHRzX2RlY3J5cHQKKy50eXBlCWFlc25pX3h0c19kZWNyeXB0LFxAZnVuY3Rpb24sNgorLmFsaWduCTE2CithZXNuaV94dHNfZGVjcnlwdDoKKwlsZWEJLSRmcmFtZV9zaXplKCVyc3ApLCVyc3AKK19fXworJGNvZGUuPTw8X19fIGlmICgkd2luNjQpOworCW1vdmFwcwkleG1tNiwweDYwKCVyc3ApCisJbW92YXBzCSV4bW03LDB4NzAoJXJzcCkKKwltb3ZhcHMJJXhtbTgsMHg4MCglcnNwKQorCW1vdmFwcwkleG1tOSwweDkwKCVyc3ApCisJbW92YXBzCSV4bW0xMCwweGEwKCVyc3ApCisJbW92YXBzCSV4bW0xMSwweGIwKCVyc3ApCisJbW92YXBzCSV4bW0xMiwweGMwKCVyc3ApCisJbW92YXBzCSV4bW0xMywweGQwKCVyc3ApCisJbW92YXBzCSV4bW0xNCwweGUwKCVyc3ApCisJbW92YXBzCSV4bW0xNSwweGYwKCVyc3ApCisuTHh0c19kZWNfYm9keToKK19fXworJGNvZGUuPTw8X19fOworCW1vdnVwcwkoJGl2cCksQHR3ZWFrWzVdCQkjIGxvYWQgY2xlYXItdGV4dCB0d2VhaworCW1vdgkyNDAoJGtleTIpLCRyb3VuZHMJCSMga2V5Mi0+cm91bmRzCisJbW92CTI0MCgka2V5KSwkcm5kc18JCSMga2V5MS0+cm91bmRzCitfX18KKwkjIGdlbmVyYXRlIHRoZSB0d2VhaworCSZhZXNuaV9nZW5lcmF0ZTEoImVuYyIsJGtleTIsJHJvdW5kcyxAdHdlYWtbNV0pOworJGNvZGUuPTw8X19fOworCXhvcgklZWF4LCVlYXgJCQkjIGlmICgkbGVuJTE2KSBsZW4tPTE2OworCXRlc3QJXCQxNSwkbGVuCisJc2V0bnoJJWFsCisJc2hsCVwkNCwlcmF4CisJc3ViCSVyYXgsJGxlbgorCisJbW92CSRrZXksJGtleV8JCQkjIGJhY2t1cCAka2V5CisJbW92CSRybmRzXywkcm91bmRzCQkJIyBiYWNrdXAgJHJvdW5kcworCW1vdgkkbGVuLCRsZW5fCQkJIyBiYWNrdXAgJGxlbgorCWFuZAlcJC0xNiwkbGVuCisKKwltb3ZkcWEJLkx4dHNfbWFnaWMoJXJpcCksJHR3bWFzaworCXB4b3IJJHR3dG1wLCR0d3RtcAorCXBjbXBndGQJQHR3ZWFrWzVdLCR0d3RtcAkJIyBicm9hZGNhc3QgdXBwZXIgYml0cworX19fCisgICAgZm9yICgkaT0wOyRpPDQ7JGkrKykgeworICAgICRjb2RlLj08PF9fXzsKKwlwc2h1ZmQJXCQweDEzLCR0d3RtcCwkdHdyZXMKKwlweG9yCSR0d3RtcCwkdHd0bXAKKwltb3ZkcWEJQHR3ZWFrWzVdLEB0d2Vha1skaV0KKwlwYWRkcQlAdHdlYWtbNV0sQHR3ZWFrWzVdCQkjIHBzbGxxCTEsJHR3ZWFrCisJcGFuZAkkdHdtYXNrLCR0d3JlcwkJCSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCXBjbXBndGQJQHR3ZWFrWzVdLCR0d3RtcAkJIyBicm9hZGNhdCB1cHBlciBiaXRzCisJcHhvcgkkdHdyZXMsQHR3ZWFrWzVdCitfX18KKyAgICB9CiskY29kZS49PDxfX187CisJc3ViCVwkMTYqNiwkbGVuCisJamMJLkx4dHNfZGVjX3Nob3J0CisKKwlzaHIJXCQxLCRyb3VuZHMKKwlzdWIJXCQxLCRyb3VuZHMKKwltb3YJJHJvdW5kcywkcm5kc18KKwlqbXAJLkx4dHNfZGVjX2dyYW5kbG9vcAorCisuYWxpZ24JMTYKKy5MeHRzX2RlY19ncmFuZGxvb3A6CisJcHNodWZkCVwkMHgxMywkdHd0bXAsJHR3cmVzCisJbW92ZHFhCUB0d2Vha1s1XSxAdHdlYWtbNF0KKwlwYWRkcQlAdHdlYWtbNV0sQHR3ZWFrWzVdCQkjIHBzbGxxIDEsJHR3ZWFrCisJbW92ZHF1CWAxNiowYCgkaW5wKSwkaW5vdXQwCQkjIGxvYWQgaW5wdXQKKwlwYW5kCSR0d21hc2ssJHR3cmVzCQkJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJbW92ZHF1CWAxNioxYCgkaW5wKSwkaW5vdXQxCisJcHhvcgkkdHdyZXMsQHR3ZWFrWzVdCisKKwltb3ZkcXUJYDE2KjJgKCRpbnApLCRpbm91dDIKKwlweG9yCUB0d2Vha1swXSwkaW5vdXQwCQkjIGlucHV0Xj10d2VhaworCW1vdmRxdQlgMTYqM2AoJGlucCksJGlub3V0MworCXB4b3IJQHR3ZWFrWzFdLCRpbm91dDEKKwltb3ZkcXUJYDE2KjRgKCRpbnApLCRpbm91dDQKKwlweG9yCUB0d2Vha1syXSwkaW5vdXQyCisJbW92ZHF1CWAxNio1YCgkaW5wKSwkaW5vdXQ1CisJbGVhCWAxNio2YCgkaW5wKSwkaW5wCisJcHhvcglAdHdlYWtbM10sJGlub3V0MworCSRtb3ZrZXkJCSgka2V5XyksJHJuZGtleTAKKwlweG9yCUB0d2Vha1s0XSwkaW5vdXQ0CisJcHhvcglAdHdlYWtbNV0sJGlub3V0NQorCisJIyBpbmxpbmUgX2Flc25pX2RlY3J5cHQ2IGFuZCBpbnRlcmxlYXZlIGZpcnN0IGFuZCBsYXN0IHJvdW5kcworCSMgd2l0aCBvd24gY29kZS4uLgorCSRtb3ZrZXkJCTE2KCRrZXlfKSwkcm5ka2V5MQorCXB4b3IJCSRybmRrZXkwLCRpbm91dDAKKwlweG9yCQkkcm5ka2V5MCwkaW5vdXQxCisJIG1vdmRxYQlAdHdlYWtbMF0sYDE2KjBgKCVyc3ApCQkjIHB1dCBhc2lkZSB0d2Vha3MKKwlhZXNkZWMJCSRybmRrZXkxLCRpbm91dDAKKwlsZWEJCTMyKCRrZXlfKSwka2V5CisJcHhvcgkJJHJuZGtleTAsJGlub3V0MgorCSBtb3ZkcWEJQHR3ZWFrWzFdLGAxNioxYCglcnNwKQorCWFlc2RlYwkJJHJuZGtleTEsJGlub3V0MQorCXB4b3IJCSRybmRrZXkwLCRpbm91dDMKKwkgbW92ZHFhCUB0d2Vha1syXSxgMTYqMmAoJXJzcCkKKwlhZXNkZWMJCSRybmRrZXkxLCRpbm91dDIKKwlweG9yCQkkcm5ka2V5MCwkaW5vdXQ0CisJIG1vdmRxYQlAdHdlYWtbM10sYDE2KjNgKCVyc3ApCisJYWVzZGVjCQkkcm5ka2V5MSwkaW5vdXQzCisJcHhvcgkJJHJuZGtleTAsJGlub3V0NQorCSRtb3ZrZXkJCSgka2V5KSwkcm5ka2V5MAorCWRlYwkJJHJvdW5kcworCSBtb3ZkcWEJQHR3ZWFrWzRdLGAxNio0YCglcnNwKQorCWFlc2RlYwkJJHJuZGtleTEsJGlub3V0NAorCSBtb3ZkcWEJQHR3ZWFrWzVdLGAxNio1YCglcnNwKQorCWFlc2RlYwkJJHJuZGtleTEsJGlub3V0NQorCXB4b3IJJHR3dG1wLCR0d3RtcAorCXBjbXBndGQJQHR3ZWFrWzVdLCR0d3RtcAorCWptcAkJLkx4dHNfZGVjX2xvb3A2X2VudGVyCisKKy5hbGlnbgkxNgorLkx4dHNfZGVjX2xvb3A2OgorCWFlc2RlYwkJJHJuZGtleTEsJGlub3V0MAorCWFlc2RlYwkJJHJuZGtleTEsJGlub3V0MQorCWRlYwkJJHJvdW5kcworCWFlc2RlYwkJJHJuZGtleTEsJGlub3V0MgorCWFlc2RlYwkJJHJuZGtleTEsJGlub3V0MworCWFlc2RlYwkJJHJuZGtleTEsJGlub3V0NAorCWFlc2RlYwkJJHJuZGtleTEsJGlub3V0NQorLkx4dHNfZGVjX2xvb3A2X2VudGVyOgorCSRtb3ZrZXkJCTE2KCRrZXkpLCRybmRrZXkxCisJYWVzZGVjCQkkcm5ka2V5MCwkaW5vdXQwCisJYWVzZGVjCQkkcm5ka2V5MCwkaW5vdXQxCisJbGVhCQkzMigka2V5KSwka2V5CisJYWVzZGVjCQkkcm5ka2V5MCwkaW5vdXQyCisJYWVzZGVjCQkkcm5ka2V5MCwkaW5vdXQzCisJYWVzZGVjCQkkcm5ka2V5MCwkaW5vdXQ0CisJYWVzZGVjCQkkcm5ka2V5MCwkaW5vdXQ1CisJJG1vdmtleQkJKCRrZXkpLCRybmRrZXkwCisJam56CQkuTHh0c19kZWNfbG9vcDYKKworCXBzaHVmZAlcJDB4MTMsJHR3dG1wLCR0d3JlcworCXB4b3IJJHR3dG1wLCR0d3RtcAorCXBhZGRxCUB0d2Vha1s1XSxAdHdlYWtbNV0JCSMgcHNsbHEJMSwkdHdlYWsKKwkgYWVzZGVjCQkkcm5ka2V5MSwkaW5vdXQwCisJcGFuZAkkdHdtYXNrLCR0d3JlcwkJCSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCSBhZXNkZWMJCSRybmRrZXkxLCRpbm91dDEKKwlwY21wZ3RkCUB0d2Vha1s1XSwkdHd0bXAJCSMgYnJvYWRjYXN0IHVwcGVyIGJpdHMKKwkgYWVzZGVjCQkkcm5ka2V5MSwkaW5vdXQyCisJcHhvcgkkdHdyZXMsQHR3ZWFrWzVdCisJIGFlc2RlYwkJJHJuZGtleTEsJGlub3V0MworCSBhZXNkZWMJCSRybmRrZXkxLCRpbm91dDQKKwkgYWVzZGVjCQkkcm5ka2V5MSwkaW5vdXQ1CisJICRtb3ZrZXkJMTYoJGtleSksJHJuZGtleTEKKworCXBzaHVmZAlcJDB4MTMsJHR3dG1wLCR0d3JlcworCXB4b3IJJHR3dG1wLCR0d3RtcAorCW1vdmRxYQlAdHdlYWtbNV0sQHR3ZWFrWzBdCisJcGFkZHEJQHR3ZWFrWzVdLEB0d2Vha1s1XQkJIyBwc2xscQkxLCR0d2VhaworCSBhZXNkZWMJCSRybmRrZXkwLCRpbm91dDAKKwlwYW5kCSR0d21hc2ssJHR3cmVzCQkJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJIGFlc2RlYwkJJHJuZGtleTAsJGlub3V0MQorCXBjbXBndGQJQHR3ZWFrWzVdLCR0d3RtcAkJIyBicm9hZGNhdCB1cHBlciBiaXRzCisJIGFlc2RlYwkJJHJuZGtleTAsJGlub3V0MgorCXB4b3IJJHR3cmVzLEB0d2Vha1s1XQorCSBhZXNkZWMJCSRybmRrZXkwLCRpbm91dDMKKwkgYWVzZGVjCQkkcm5ka2V5MCwkaW5vdXQ0CisJIGFlc2RlYwkJJHJuZGtleTAsJGlub3V0NQorCSAkbW92a2V5CTMyKCRrZXkpLCRybmRrZXkwCisKKwlwc2h1ZmQJXCQweDEzLCR0d3RtcCwkdHdyZXMKKwlweG9yCSR0d3RtcCwkdHd0bXAKKwltb3ZkcWEJQHR3ZWFrWzVdLEB0d2Vha1sxXQorCXBhZGRxCUB0d2Vha1s1XSxAdHdlYWtbNV0JCSMgcHNsbHEJMSwkdHdlYWsKKwkgYWVzZGVjCQkkcm5ka2V5MSwkaW5vdXQwCisJcGFuZAkkdHdtYXNrLCR0d3JlcwkJCSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCSBhZXNkZWMJCSRybmRrZXkxLCRpbm91dDEKKwlwY21wZ3RkCUB0d2Vha1s1XSwkdHd0bXAJCSMgYnJvYWRjYXQgdXBwZXIgYml0cworCSBhZXNkZWMJCSRybmRrZXkxLCRpbm91dDIKKwlweG9yCSR0d3JlcyxAdHdlYWtbNV0KKwkgYWVzZGVjCQkkcm5ka2V5MSwkaW5vdXQzCisJIGFlc2RlYwkJJHJuZGtleTEsJGlub3V0NAorCSBhZXNkZWMJCSRybmRrZXkxLCRpbm91dDUKKworCXBzaHVmZAlcJDB4MTMsJHR3dG1wLCR0d3JlcworCXB4b3IJJHR3dG1wLCR0d3RtcAorCW1vdmRxYQlAdHdlYWtbNV0sQHR3ZWFrWzJdCisJcGFkZHEJQHR3ZWFrWzVdLEB0d2Vha1s1XQkJIyBwc2xscQkxLCR0d2VhaworCSBhZXNkZWNsYXN0CSRybmRrZXkwLCRpbm91dDAKKwlwYW5kCSR0d21hc2ssJHR3cmVzCQkJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJIGFlc2RlY2xhc3QJJHJuZGtleTAsJGlub3V0MQorCXBjbXBndGQJQHR3ZWFrWzVdLCR0d3RtcAkJIyBicm9hZGNhdCB1cHBlciBiaXRzCisJIGFlc2RlY2xhc3QJJHJuZGtleTAsJGlub3V0MgorCXB4b3IJJHR3cmVzLEB0d2Vha1s1XQorCSBhZXNkZWNsYXN0CSRybmRrZXkwLCRpbm91dDMKKwkgYWVzZGVjbGFzdAkkcm5ka2V5MCwkaW5vdXQ0CisJIGFlc2RlY2xhc3QJJHJuZGtleTAsJGlub3V0NQorCisJcHNodWZkCVwkMHgxMywkdHd0bXAsJHR3cmVzCisJcHhvcgkkdHd0bXAsJHR3dG1wCisJbW92ZHFhCUB0d2Vha1s1XSxAdHdlYWtbM10KKwlwYWRkcQlAdHdlYWtbNV0sQHR3ZWFrWzVdCQkjIHBzbGxxCTEsJHR3ZWFrCisJIHhvcnBzCWAxNiowYCglcnNwKSwkaW5vdXQwCQkjIG91dHB1dF49dHdlYWsKKwlwYW5kCSR0d21hc2ssJHR3cmVzCQkJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJIHhvcnBzCWAxNioxYCglcnNwKSwkaW5vdXQxCisJcGNtcGd0ZAlAdHdlYWtbNV0sJHR3dG1wCQkjIGJyb2FkY2F0IHVwcGVyIGJpdHMKKwlweG9yCSR0d3JlcyxAdHdlYWtbNV0KKworCXhvcnBzCWAxNioyYCglcnNwKSwkaW5vdXQyCisJbW92dXBzCSRpbm91dDAsYDE2KjBgKCRvdXQpCQkjIHdyaXRlIG91dHB1dAorCXhvcnBzCWAxNiozYCglcnNwKSwkaW5vdXQzCisJbW92dXBzCSRpbm91dDEsYDE2KjFgKCRvdXQpCisJeG9ycHMJYDE2KjRgKCVyc3ApLCRpbm91dDQKKwltb3Z1cHMJJGlub3V0MixgMTYqMmAoJG91dCkKKwl4b3JwcwlgMTYqNWAoJXJzcCksJGlub3V0NQorCW1vdnVwcwkkaW5vdXQzLGAxNiozYCgkb3V0KQorCW1vdgkkcm5kc18sJHJvdW5kcwkJCSMgcmVzdG9yZSAkcm91bmRzCisJbW92dXBzCSRpbm91dDQsYDE2KjRgKCRvdXQpCisJbW92dXBzCSRpbm91dDUsYDE2KjVgKCRvdXQpCisJbGVhCWAxNio2YCgkb3V0KSwkb3V0CisJc3ViCVwkMTYqNiwkbGVuCisJam5jCS5MeHRzX2RlY19ncmFuZGxvb3AKKworCWxlYQkzKCRyb3VuZHMsJHJvdW5kcyksJHJvdW5kcwkjIHJlc3RvcmUgb3JpZ2luYWwgdmFsdWUKKwltb3YJJGtleV8sJGtleQkJCSMgcmVzdG9yZSAka2V5CisJbW92CSRyb3VuZHMsJHJuZHNfCQkJIyBiYWNrdXAgJHJvdW5kcworCisuTHh0c19kZWNfc2hvcnQ6CisJYWRkCVwkMTYqNiwkbGVuCisJanoJLkx4dHNfZGVjX2RvbmUKKworCWNtcAlcJDB4MjAsJGxlbgorCWpiCS5MeHRzX2RlY19vbmUKKwlqZQkuTHh0c19kZWNfdHdvCisKKwljbXAJXCQweDQwLCRsZW4KKwlqYgkuTHh0c19kZWNfdGhyZWUKKwlqZQkuTHh0c19kZWNfZm91cgorCisJcHNodWZkCVwkMHgxMywkdHd0bXAsJHR3cmVzCisJbW92ZHFhCUB0d2Vha1s1XSxAdHdlYWtbNF0KKwlwYWRkcQlAdHdlYWtbNV0sQHR3ZWFrWzVdCQkjIHBzbGxxIDEsJHR3ZWFrCisJIG1vdmRxdQkoJGlucCksJGlub3V0MAorCXBhbmQJJHR3bWFzaywkdHdyZXMJCQkjIGlzb2xhdGUgY2FycnkgYW5kIHJlc2lkdWUKKwkgbW92ZHF1CTE2KjEoJGlucCksJGlub3V0MQorCXB4b3IJJHR3cmVzLEB0d2Vha1s1XQorCisJbW92ZHF1CTE2KjIoJGlucCksJGlub3V0MgorCXB4b3IJQHR3ZWFrWzBdLCRpbm91dDAKKwltb3ZkcXUJMTYqMygkaW5wKSwkaW5vdXQzCisJcHhvcglAdHdlYWtbMV0sJGlub3V0MQorCW1vdmRxdQkxNio0KCRpbnApLCRpbm91dDQKKwlsZWEJMTYqNSgkaW5wKSwkaW5wCisJcHhvcglAdHdlYWtbMl0sJGlub3V0MgorCXB4b3IJQHR3ZWFrWzNdLCRpbm91dDMKKwlweG9yCUB0d2Vha1s0XSwkaW5vdXQ0CisKKwljYWxsCV9hZXNuaV9kZWNyeXB0NgorCisJeG9ycHMJQHR3ZWFrWzBdLCRpbm91dDAKKwl4b3JwcwlAdHdlYWtbMV0sJGlub3V0MQorCXhvcnBzCUB0d2Vha1syXSwkaW5vdXQyCisJbW92ZHF1CSRpbm91dDAsKCRvdXQpCisJeG9ycHMJQHR3ZWFrWzNdLCRpbm91dDMKKwltb3ZkcXUJJGlub3V0MSwxNioxKCRvdXQpCisJeG9ycHMJQHR3ZWFrWzRdLCRpbm91dDQKKwltb3ZkcXUJJGlub3V0MiwxNioyKCRvdXQpCisJIHB4b3IJCSR0d3RtcCwkdHd0bXAKKwltb3ZkcXUJJGlub3V0MywxNiozKCRvdXQpCisJIHBjbXBndGQJQHR3ZWFrWzVdLCR0d3RtcAorCW1vdmRxdQkkaW5vdXQ0LDE2KjQoJG91dCkKKwlsZWEJMTYqNSgkb3V0KSwkb3V0CisJIHBzaHVmZAkJXCQweDEzLCR0d3RtcCxAdHdlYWtbMV0JIyAkdHdyZXMKKwlhbmQJXCQxNSwkbGVuXworCWp6CS5MeHRzX2RlY19yZXQKKworCW1vdmRxYQlAdHdlYWtbNV0sQHR3ZWFrWzBdCisJcGFkZHEJQHR3ZWFrWzVdLEB0d2Vha1s1XQkJIyBwc2xscSAxLCR0d2VhaworCXBhbmQJJHR3bWFzayxAdHdlYWtbMV0JCSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCXB4b3IJQHR3ZWFrWzVdLEB0d2Vha1sxXQorCWptcAkuTHh0c19kZWNfZG9uZTIKKworLmFsaWduCTE2CisuTHh0c19kZWNfb25lOgorCW1vdnVwcwkoJGlucCksJGlub3V0MAorCWxlYQkxNioxKCRpbnApLCRpbnAKKwl4b3JwcwlAdHdlYWtbMF0sJGlub3V0MAorX19fCisJJmFlc25pX2dlbmVyYXRlMSgiZGVjIiwka2V5LCRyb3VuZHMpOworJGNvZGUuPTw8X19fOworCXhvcnBzCUB0d2Vha1swXSwkaW5vdXQwCisJbW92ZHFhCUB0d2Vha1sxXSxAdHdlYWtbMF0KKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKwltb3ZkcWEJQHR3ZWFrWzJdLEB0d2Vha1sxXQorCWxlYQkxNioxKCRvdXQpLCRvdXQKKwlqbXAJLkx4dHNfZGVjX2RvbmUKKworLmFsaWduCTE2CisuTHh0c19kZWNfdHdvOgorCW1vdnVwcwkoJGlucCksJGlub3V0MAorCW1vdnVwcwkxNigkaW5wKSwkaW5vdXQxCisJbGVhCTMyKCRpbnApLCRpbnAKKwl4b3JwcwlAdHdlYWtbMF0sJGlub3V0MAorCXhvcnBzCUB0d2Vha1sxXSwkaW5vdXQxCisKKwljYWxsCV9hZXNuaV9kZWNyeXB0MworCisJeG9ycHMJQHR3ZWFrWzBdLCRpbm91dDAKKwltb3ZkcWEJQHR3ZWFrWzJdLEB0d2Vha1swXQorCXhvcnBzCUB0d2Vha1sxXSwkaW5vdXQxCisJbW92ZHFhCUB0d2Vha1szXSxAdHdlYWtbMV0KKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKwltb3Z1cHMJJGlub3V0MSwxNioxKCRvdXQpCisJbGVhCTE2KjIoJG91dCksJG91dAorCWptcAkuTHh0c19kZWNfZG9uZQorCisuYWxpZ24JMTYKKy5MeHRzX2RlY190aHJlZToKKwltb3Z1cHMJKCRpbnApLCRpbm91dDAKKwltb3Z1cHMJMTYqMSgkaW5wKSwkaW5vdXQxCisJbW92dXBzCTE2KjIoJGlucCksJGlub3V0MgorCWxlYQkxNiozKCRpbnApLCRpbnAKKwl4b3JwcwlAdHdlYWtbMF0sJGlub3V0MAorCXhvcnBzCUB0d2Vha1sxXSwkaW5vdXQxCisJeG9ycHMJQHR3ZWFrWzJdLCRpbm91dDIKKworCWNhbGwJX2Flc25pX2RlY3J5cHQzCisKKwl4b3JwcwlAdHdlYWtbMF0sJGlub3V0MAorCW1vdmRxYQlAdHdlYWtbM10sQHR3ZWFrWzBdCisJeG9ycHMJQHR3ZWFrWzFdLCRpbm91dDEKKwltb3ZkcWEJQHR3ZWFrWzVdLEB0d2Vha1sxXQorCXhvcnBzCUB0d2Vha1syXSwkaW5vdXQyCisJbW92dXBzCSRpbm91dDAsKCRvdXQpCisJbW92dXBzCSRpbm91dDEsMTYqMSgkb3V0KQorCW1vdnVwcwkkaW5vdXQyLDE2KjIoJG91dCkKKwlsZWEJMTYqMygkb3V0KSwkb3V0CisJam1wCS5MeHRzX2RlY19kb25lCisKKy5hbGlnbgkxNgorLkx4dHNfZGVjX2ZvdXI6CisJcHNodWZkCVwkMHgxMywkdHd0bXAsJHR3cmVzCisJbW92ZHFhCUB0d2Vha1s1XSxAdHdlYWtbNF0KKwlwYWRkcQlAdHdlYWtbNV0sQHR3ZWFrWzVdCQkjIHBzbGxxIDEsJHR3ZWFrCisJIG1vdnVwcwkoJGlucCksJGlub3V0MAorCXBhbmQJJHR3bWFzaywkdHdyZXMJCQkjIGlzb2xhdGUgY2FycnkgYW5kIHJlc2lkdWUKKwkgbW92dXBzCTE2KjEoJGlucCksJGlub3V0MQorCXB4b3IJJHR3cmVzLEB0d2Vha1s1XQorCisJbW92dXBzCTE2KjIoJGlucCksJGlub3V0MgorCXhvcnBzCUB0d2Vha1swXSwkaW5vdXQwCisJbW92dXBzCTE2KjMoJGlucCksJGlub3V0MworCWxlYQkxNio0KCRpbnApLCRpbnAKKwl4b3JwcwlAdHdlYWtbMV0sJGlub3V0MQorCXhvcnBzCUB0d2Vha1syXSwkaW5vdXQyCisJeG9ycHMJQHR3ZWFrWzNdLCRpbm91dDMKKworCWNhbGwJX2Flc25pX2RlY3J5cHQ0CisKKwl4b3JwcwlAdHdlYWtbMF0sJGlub3V0MAorCW1vdmRxYQlAdHdlYWtbNF0sQHR3ZWFrWzBdCisJeG9ycHMJQHR3ZWFrWzFdLCRpbm91dDEKKwltb3ZkcWEJQHR3ZWFrWzVdLEB0d2Vha1sxXQorCXhvcnBzCUB0d2Vha1syXSwkaW5vdXQyCisJbW92dXBzCSRpbm91dDAsKCRvdXQpCisJeG9ycHMJQHR3ZWFrWzNdLCRpbm91dDMKKwltb3Z1cHMJJGlub3V0MSwxNioxKCRvdXQpCisJbW92dXBzCSRpbm91dDIsMTYqMigkb3V0KQorCW1vdnVwcwkkaW5vdXQzLDE2KjMoJG91dCkKKwlsZWEJMTYqNCgkb3V0KSwkb3V0CisJam1wCS5MeHRzX2RlY19kb25lCisKKy5hbGlnbgkxNgorLkx4dHNfZGVjX2RvbmU6CisJYW5kCVwkMTUsJGxlbl8KKwlqegkuTHh0c19kZWNfcmV0CisuTHh0c19kZWNfZG9uZTI6CisJbW92CSRsZW5fLCRsZW4KKwltb3YJJGtleV8sJGtleQkJCSMgcmVzdG9yZSAka2V5CisJbW92CSRybmRzXywkcm91bmRzCQkJIyByZXN0b3JlICRyb3VuZHMKKworCW1vdnVwcwkoJGlucCksJGlub3V0MAorCXhvcnBzCUB0d2Vha1sxXSwkaW5vdXQwCitfX18KKwkmYWVzbmlfZ2VuZXJhdGUxKCJkZWMiLCRrZXksJHJvdW5kcyk7CiskY29kZS49PDxfX187CisJeG9ycHMJQHR3ZWFrWzFdLCRpbm91dDAKKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKworLkx4dHNfZGVjX3N0ZWFsOgorCW1vdnpiCTE2KCRpbnApLCVlYXgJCQkjIGJvcnJvdyAkcm91bmRzIC4uLgorCW1vdnpiCSgkb3V0KSwlZWN4CQkJIyAuLi4gYW5kICRrZXkKKwlsZWEJMSgkaW5wKSwkaW5wCisJbW92CSVhbCwoJG91dCkKKwltb3YJJWNsLDE2KCRvdXQpCisJbGVhCTEoJG91dCksJG91dAorCXN1YglcJDEsJGxlbgorCWpuegkuTHh0c19kZWNfc3RlYWwKKworCXN1YgkkbGVuXywkb3V0CQkJIyByZXdpbmQgJG91dAorCW1vdgkka2V5Xywka2V5CQkJIyByZXN0b3JlICRrZXkKKwltb3YJJHJuZHNfLCRyb3VuZHMJCQkjIHJlc3RvcmUgJHJvdW5kcworCisJbW92dXBzCSgkb3V0KSwkaW5vdXQwCisJeG9ycHMJQHR3ZWFrWzBdLCRpbm91dDAKK19fXworCSZhZXNuaV9nZW5lcmF0ZTEoImRlYyIsJGtleSwkcm91bmRzKTsKKyRjb2RlLj08PF9fXzsKKwl4b3JwcwlAdHdlYWtbMF0sJGlub3V0MAorCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorCisuTHh0c19kZWNfcmV0OgorX19fCiskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisJbW92YXBzCTB4NjAoJXJzcCksJXhtbTYKKwltb3ZhcHMJMHg3MCglcnNwKSwleG1tNworCW1vdmFwcwkweDgwKCVyc3ApLCV4bW04CisJbW92YXBzCTB4OTAoJXJzcCksJXhtbTkKKwltb3ZhcHMJMHhhMCglcnNwKSwleG1tMTAKKwltb3ZhcHMJMHhiMCglcnNwKSwleG1tMTEKKwltb3ZhcHMJMHhjMCglcnNwKSwleG1tMTIKKwltb3ZhcHMJMHhkMCglcnNwKSwleG1tMTMKKwltb3ZhcHMJMHhlMCglcnNwKSwleG1tMTQKKwltb3ZhcHMJMHhmMCglcnNwKSwleG1tMTUKK19fXworJGNvZGUuPTw8X19fOworCWxlYQkkZnJhbWVfc2l6ZSglcnNwKSwlcnNwCisuTHh0c19kZWNfZXBpbG9ndWU6CisJcmV0Cisuc2l6ZQlhZXNuaV94dHNfZGVjcnlwdCwuLWFlc25pX3h0c19kZWNyeXB0CitfX18KK30gfX0KKwwKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyB2b2lkICRQUkVGSVhfY2JjX2VuY3J5cHQgKGNvbnN0IHZvaWQgKmlucCwgdm9pZCAqb3V0LAorIwkJCSAgICBzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisjCQkJICAgIHVuc2lnbmVkIGNoYXIgKml2cCxjb25zdCBpbnQgZW5jKTsKK3sKK215ICRyZXNlcnZlZCA9ICR3aW42ND8weDQwOi0weDE4OwkjIHVzZWQgaW4gZGVjcnlwdAorJGNvZGUuPTw8X19fOworLmdsb2JsCSR7UFJFRklYfV9jYmNfZW5jcnlwdAorLnR5cGUJJHtQUkVGSVh9X2NiY19lbmNyeXB0LFxAZnVuY3Rpb24sNgorLmFsaWduCTE2Ciske1BSRUZJWH1fY2JjX2VuY3J5cHQ6CisJdGVzdAkkbGVuLCRsZW4JCSMgY2hlY2sgbGVuZ3RoCisJanoJLkxjYmNfcmV0CisKKwltb3YJMjQwKCRrZXkpLCRybmRzXwkjIGtleS0+cm91bmRzCisJbW92CSRrZXksJGtleV8JCSMgYmFja3VwICRrZXkKKwl0ZXN0CSVyOWQsJXI5ZAkJIyA2dGggYXJndW1lbnQKKwlqegkuTGNiY19kZWNyeXB0CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENCQyBFTkNSWVBUIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKKwltb3Z1cHMJKCRpdnApLCRpbm91dDAJCSMgbG9hZCBpdiBhcyBpbml0aWFsIHN0YXRlCisJbW92CSRybmRzXywkcm91bmRzCisJY21wCVwkMTYsJGxlbgorCWpiCS5MY2JjX2VuY190YWlsCisJc3ViCVwkMTYsJGxlbgorCWptcAkuTGNiY19lbmNfbG9vcAorLmFsaWduCTE2CisuTGNiY19lbmNfbG9vcDoKKwltb3Z1cHMJKCRpbnApLCRpbm91dDEJCSMgbG9hZCBpbnB1dAorCWxlYQkxNigkaW5wKSwkaW5wCisJI3hvcnBzCSRpbm91dDEsJGlub3V0MAorX19fCisJJmFlc25pX2dlbmVyYXRlMSgiZW5jIiwka2V5LCRyb3VuZHMsJGlub3V0MCwkaW5vdXQxKTsKKyRjb2RlLj08PF9fXzsKKwltb3YJJHJuZHNfLCRyb3VuZHMJCSMgcmVzdG9yZSAkcm91bmRzCisJbW92CSRrZXlfLCRrZXkJCSMgcmVzdG9yZSAka2V5CisJbW92dXBzCSRpbm91dDAsMCgkb3V0KQkJIyBzdG9yZSBvdXRwdXQKKwlsZWEJMTYoJG91dCksJG91dAorCXN1YglcJDE2LCRsZW4KKwlqbmMJLkxjYmNfZW5jX2xvb3AKKwlhZGQJXCQxNiwkbGVuCisJam56CS5MY2JjX2VuY190YWlsCisJbW92dXBzCSRpbm91dDAsKCRpdnApCisJam1wCS5MY2JjX3JldAorCisuTGNiY19lbmNfdGFpbDoKKwltb3YJJGxlbiwlcmN4CSMgemFwcyAka2V5CisJeGNoZwkkaW5wLCRvdXQJIyAkaW5wIGlzICVyc2kgYW5kICRvdXQgaXMgJXJkaSBub3cKKwkubG9uZwkweDkwNjZBNEYzCSMgcmVwIG1vdnNiCisJbW92CVwkMTYsJWVjeAkjIHplcm8gdGFpbAorCXN1YgkkbGVuLCVyY3gKKwl4b3IJJWVheCwlZWF4CisJLmxvbmcJMHg5MDY2QUFGMwkjIHJlcCBzdG9zYgorCWxlYQktMTYoJXJkaSksJXJkaQkjIHJld2luZCAkb3V0IGJ5IDEgYmxvY2sKKwltb3YJJHJuZHNfLCRyb3VuZHMJIyByZXN0b3JlICRyb3VuZHMKKwltb3YJJXJkaSwlcnNpCSMgJGlucCBhbmQgJG91dCBhcmUgdGhlIHNhbWUKKwltb3YJJGtleV8sJGtleQkjIHJlc3RvcmUgJGtleQorCXhvcgkkbGVuLCRsZW4JIyBsZW49MTYKKwlqbXAJLkxjYmNfZW5jX2xvb3AJIyBvbmUgbW9yZSBzcGluCisMIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDQkMgREVDUllQVCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCisuYWxpZ24JMTYKKy5MY2JjX2RlY3J5cHQ6CitfX18KKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKwlsZWEJLTB4NTgoJXJzcCksJXJzcAorCW1vdmFwcwkleG1tNiwoJXJzcCkKKwltb3ZhcHMJJXhtbTcsMHgxMCglcnNwKQorCW1vdmFwcwkleG1tOCwweDIwKCVyc3ApCisJbW92YXBzCSV4bW05LDB4MzAoJXJzcCkKKy5MY2JjX2RlY3J5cHRfYm9keToKK19fXworJGNvZGUuPTw8X19fOworCW1vdnVwcwkoJGl2cCksJGl2CisJbW92CSRybmRzXywkcm91bmRzCisJY21wCVwkMHg3MCwkbGVuCisJamJlCS5MY2JjX2RlY190YWlsCisJc2hyCVwkMSwkcm5kc18KKwlzdWIJXCQweDcwLCRsZW4KKwltb3YJJHJuZHNfLCRyb3VuZHMKKwltb3ZhcHMJJGl2LCRyZXNlcnZlZCglcnNwKQorCWptcAkuTGNiY19kZWNfbG9vcDhfZW50ZXIKKy5hbGlnbgkxNgorLkxjYmNfZGVjX2xvb3A4OgorCW1vdmFwcwkkcm5ka2V5MCwkcmVzZXJ2ZWQoJXJzcCkJIyBzYXZlIElWCisJbW92dXBzCSRpbm91dDcsKCRvdXQpCisJbGVhCTB4MTAoJG91dCksJG91dAorLkxjYmNfZGVjX2xvb3A4X2VudGVyOgorCSRtb3ZrZXkJCSgka2V5KSwkcm5ka2V5MAorCW1vdnVwcwkoJGlucCksJGlub3V0MAkJCSMgbG9hZCBpbnB1dAorCW1vdnVwcwkweDEwKCRpbnApLCRpbm91dDEKKwkkbW92a2V5CQkxNigka2V5KSwkcm5ka2V5MQorCisJbGVhCQkzMigka2V5KSwka2V5CisJbW92ZHF1CTB4MjAoJGlucCksJGlub3V0MgorCXhvcnBzCQkkcm5ka2V5MCwkaW5vdXQwCisJbW92ZHF1CTB4MzAoJGlucCksJGlub3V0MworCXhvcnBzCQkkcm5ka2V5MCwkaW5vdXQxCisJbW92ZHF1CTB4NDAoJGlucCksJGlub3V0NAorCWFlc2RlYwkJJHJuZGtleTEsJGlub3V0MAorCXB4b3IJCSRybmRrZXkwLCRpbm91dDIKKwltb3ZkcXUJMHg1MCgkaW5wKSwkaW5vdXQ1CisJYWVzZGVjCQkkcm5ka2V5MSwkaW5vdXQxCisJcHhvcgkJJHJuZGtleTAsJGlub3V0MworCW1vdmRxdQkweDYwKCRpbnApLCRpbm91dDYKKwlhZXNkZWMJCSRybmRrZXkxLCRpbm91dDIKKwlweG9yCQkkcm5ka2V5MCwkaW5vdXQ0CisJbW92ZHF1CTB4NzAoJGlucCksJGlub3V0NworCWFlc2RlYwkJJHJuZGtleTEsJGlub3V0MworCXB4b3IJCSRybmRrZXkwLCRpbm91dDUKKwlkZWMJCSRyb3VuZHMKKwlhZXNkZWMJCSRybmRrZXkxLCRpbm91dDQKKwlweG9yCQkkcm5ka2V5MCwkaW5vdXQ2CisJYWVzZGVjCQkkcm5ka2V5MSwkaW5vdXQ1CisJcHhvcgkJJHJuZGtleTAsJGlub3V0NworCSRtb3ZrZXkJCSgka2V5KSwkcm5ka2V5MAorCWFlc2RlYwkJJHJuZGtleTEsJGlub3V0NgorCWFlc2RlYwkJJHJuZGtleTEsJGlub3V0NworCSRtb3ZrZXkJCTE2KCRrZXkpLCRybmRrZXkxCisKKwljYWxsCQkuTGRlY19sb29wOF9lbnRlcgorCisJbW92dXBzCSgkaW5wKSwkcm5ka2V5MQkJIyByZS1sb2FkIGlucHV0CisJbW92dXBzCTB4MTAoJGlucCksJHJuZGtleTAKKwl4b3JwcwkkcmVzZXJ2ZWQoJXJzcCksJGlub3V0MAkjIF49IElWCisJeG9ycHMJJHJuZGtleTEsJGlub3V0MQorCW1vdnVwcwkweDIwKCRpbnApLCRybmRrZXkxCisJeG9ycHMJJHJuZGtleTAsJGlub3V0MgorCW1vdnVwcwkweDMwKCRpbnApLCRybmRrZXkwCisJeG9ycHMJJHJuZGtleTEsJGlub3V0MworCW1vdnVwcwkweDQwKCRpbnApLCRybmRrZXkxCisJeG9ycHMJJHJuZGtleTAsJGlub3V0NAorCW1vdnVwcwkweDUwKCRpbnApLCRybmRrZXkwCisJeG9ycHMJJHJuZGtleTEsJGlub3V0NQorCW1vdnVwcwkweDYwKCRpbnApLCRybmRrZXkxCisJeG9ycHMJJHJuZGtleTAsJGlub3V0NgorCW1vdnVwcwkweDcwKCRpbnApLCRybmRrZXkwCSMgSVYKKwl4b3Jwcwkkcm5ka2V5MSwkaW5vdXQ3CisJbW92dXBzCSRpbm91dDAsKCRvdXQpCisJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorCW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKKwltb3Z1cHMJJGlub3V0MywweDMwKCRvdXQpCisJbW92CSRybmRzXywkcm91bmRzCQkjIHJlc3RvcmUgJHJvdW5kcworCW1vdnVwcwkkaW5vdXQ0LDB4NDAoJG91dCkKKwltb3YJJGtleV8sJGtleQkJIyByZXN0b3JlICRrZXkKKwltb3Z1cHMJJGlub3V0NSwweDUwKCRvdXQpCisJbGVhCTB4ODAoJGlucCksJGlucAorCW1vdnVwcwkkaW5vdXQ2LDB4NjAoJG91dCkKKwlsZWEJMHg3MCgkb3V0KSwkb3V0CisJc3ViCVwkMHg4MCwkbGVuCisJamEJLkxjYmNfZGVjX2xvb3A4CisKKwltb3ZhcHMJJGlub3V0NywkaW5vdXQwCisJbW92YXBzCSRybmRrZXkwLCRpdgorCWFkZAlcJDB4NzAsJGxlbgorCWpsZQkuTGNiY19kZWNfdGFpbF9jb2xsZWN0ZWQKKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKwlsZWEJMSgkcm5kc18sJHJuZHNfKSwkcm91bmRzCisJbGVhCTB4MTAoJG91dCksJG91dAorLkxjYmNfZGVjX3RhaWw6CisJbW92dXBzCSgkaW5wKSwkaW5vdXQwCisJbW92YXBzCSRpbm91dDAsJGluMAorCWNtcAlcJDB4MTAsJGxlbgorCWpiZQkuTGNiY19kZWNfb25lCisKKwltb3Z1cHMJMHgxMCgkaW5wKSwkaW5vdXQxCisJbW92YXBzCSRpbm91dDEsJGluMQorCWNtcAlcJDB4MjAsJGxlbgorCWpiZQkuTGNiY19kZWNfdHdvCisKKwltb3Z1cHMJMHgyMCgkaW5wKSwkaW5vdXQyCisJbW92YXBzCSRpbm91dDIsJGluMgorCWNtcAlcJDB4MzAsJGxlbgorCWpiZQkuTGNiY19kZWNfdGhyZWUKKworCW1vdnVwcwkweDMwKCRpbnApLCRpbm91dDMKKwljbXAJXCQweDQwLCRsZW4KKwlqYmUJLkxjYmNfZGVjX2ZvdXIKKworCW1vdnVwcwkweDQwKCRpbnApLCRpbm91dDQKKwljbXAJXCQweDUwLCRsZW4KKwlqYmUJLkxjYmNfZGVjX2ZpdmUKKworCW1vdnVwcwkweDUwKCRpbnApLCRpbm91dDUKKwljbXAJXCQweDYwLCRsZW4KKwlqYmUJLkxjYmNfZGVjX3NpeAorCisJbW92dXBzCTB4NjAoJGlucCksJGlub3V0NgorCW1vdmFwcwkkaXYsJHJlc2VydmVkKCVyc3ApCSMgc2F2ZSBJVgorCWNhbGwJX2Flc25pX2RlY3J5cHQ4CisJbW92dXBzCSgkaW5wKSwkcm5ka2V5MQorCW1vdnVwcwkweDEwKCRpbnApLCRybmRrZXkwCisJeG9ycHMJJHJlc2VydmVkKCVyc3ApLCRpbm91dDAJIyBePSBJVgorCXhvcnBzCSRybmRrZXkxLCRpbm91dDEKKwltb3Z1cHMJMHgyMCgkaW5wKSwkcm5ka2V5MQorCXhvcnBzCSRybmRrZXkwLCRpbm91dDIKKwltb3Z1cHMJMHgzMCgkaW5wKSwkcm5ka2V5MAorCXhvcnBzCSRybmRrZXkxLCRpbm91dDMKKwltb3Z1cHMJMHg0MCgkaW5wKSwkcm5ka2V5MQorCXhvcnBzCSRybmRrZXkwLCRpbm91dDQKKwltb3Z1cHMJMHg1MCgkaW5wKSwkcm5ka2V5MAorCXhvcnBzCSRybmRrZXkxLCRpbm91dDUKKwltb3Z1cHMJMHg2MCgkaW5wKSwkaXYJCSMgSVYKKwl4b3Jwcwkkcm5ka2V5MCwkaW5vdXQ2CisJbW92dXBzCSRpbm91dDAsKCRvdXQpCisJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorCW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKKwltb3Z1cHMJJGlub3V0MywweDMwKCRvdXQpCisJbW92dXBzCSRpbm91dDQsMHg0MCgkb3V0KQorCW1vdnVwcwkkaW5vdXQ1LDB4NTAoJG91dCkKKwlsZWEJMHg2MCgkb3V0KSwkb3V0CisJbW92YXBzCSRpbm91dDYsJGlub3V0MAorCXN1YglcJDB4NzAsJGxlbgorCWptcAkuTGNiY19kZWNfdGFpbF9jb2xsZWN0ZWQKKy5hbGlnbgkxNgorLkxjYmNfZGVjX29uZToKK19fXworCSZhZXNuaV9nZW5lcmF0ZTEoImRlYyIsJGtleSwkcm91bmRzKTsKKyRjb2RlLj08PF9fXzsKKwl4b3JwcwkkaXYsJGlub3V0MAorCW1vdmFwcwkkaW4wLCRpdgorCXN1YglcJDB4MTAsJGxlbgorCWptcAkuTGNiY19kZWNfdGFpbF9jb2xsZWN0ZWQKKy5hbGlnbgkxNgorLkxjYmNfZGVjX3R3bzoKKwl4b3JwcwkkaW5vdXQyLCRpbm91dDIKKwljYWxsCV9hZXNuaV9kZWNyeXB0MworCXhvcnBzCSRpdiwkaW5vdXQwCisJeG9ycHMJJGluMCwkaW5vdXQxCisJbW92dXBzCSRpbm91dDAsKCRvdXQpCisJbW92YXBzCSRpbjEsJGl2CisJbW92YXBzCSRpbm91dDEsJGlub3V0MAorCWxlYQkweDEwKCRvdXQpLCRvdXQKKwlzdWIJXCQweDIwLCRsZW4KKwlqbXAJLkxjYmNfZGVjX3RhaWxfY29sbGVjdGVkCisuYWxpZ24JMTYKKy5MY2JjX2RlY190aHJlZToKKwljYWxsCV9hZXNuaV9kZWNyeXB0MworCXhvcnBzCSRpdiwkaW5vdXQwCisJeG9ycHMJJGluMCwkaW5vdXQxCisJbW92dXBzCSRpbm91dDAsKCRvdXQpCisJeG9ycHMJJGluMSwkaW5vdXQyCisJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorCW1vdmFwcwkkaW4yLCRpdgorCW1vdmFwcwkkaW5vdXQyLCRpbm91dDAKKwlsZWEJMHgyMCgkb3V0KSwkb3V0CisJc3ViCVwkMHgzMCwkbGVuCisJam1wCS5MY2JjX2RlY190YWlsX2NvbGxlY3RlZAorLmFsaWduCTE2CisuTGNiY19kZWNfZm91cjoKKwljYWxsCV9hZXNuaV9kZWNyeXB0NAorCXhvcnBzCSRpdiwkaW5vdXQwCisJbW92dXBzCTB4MzAoJGlucCksJGl2CisJeG9ycHMJJGluMCwkaW5vdXQxCisJbW92dXBzCSRpbm91dDAsKCRvdXQpCisJeG9ycHMJJGluMSwkaW5vdXQyCisJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorCXhvcnBzCSRpbjIsJGlub3V0MworCW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKKwltb3ZhcHMJJGlub3V0MywkaW5vdXQwCisJbGVhCTB4MzAoJG91dCksJG91dAorCXN1YglcJDB4NDAsJGxlbgorCWptcAkuTGNiY19kZWNfdGFpbF9jb2xsZWN0ZWQKKy5hbGlnbgkxNgorLkxjYmNfZGVjX2ZpdmU6CisJeG9ycHMJJGlub3V0NSwkaW5vdXQ1CisJY2FsbAlfYWVzbmlfZGVjcnlwdDYKKwltb3Z1cHMJMHgxMCgkaW5wKSwkcm5ka2V5MQorCW1vdnVwcwkweDIwKCRpbnApLCRybmRrZXkwCisJeG9ycHMJJGl2LCRpbm91dDAKKwl4b3JwcwkkaW4wLCRpbm91dDEKKwl4b3Jwcwkkcm5ka2V5MSwkaW5vdXQyCisJbW92dXBzCTB4MzAoJGlucCksJHJuZGtleTEKKwl4b3Jwcwkkcm5ka2V5MCwkaW5vdXQzCisJbW92dXBzCTB4NDAoJGlucCksJGl2CisJeG9ycHMJJHJuZGtleTEsJGlub3V0NAorCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKKwltb3Z1cHMJJGlub3V0MiwweDIwKCRvdXQpCisJbW92dXBzCSRpbm91dDMsMHgzMCgkb3V0KQorCWxlYQkweDQwKCRvdXQpLCRvdXQKKwltb3ZhcHMJJGlub3V0NCwkaW5vdXQwCisJc3ViCVwkMHg1MCwkbGVuCisJam1wCS5MY2JjX2RlY190YWlsX2NvbGxlY3RlZAorLmFsaWduCTE2CisuTGNiY19kZWNfc2l4OgorCWNhbGwJX2Flc25pX2RlY3J5cHQ2CisJbW92dXBzCTB4MTAoJGlucCksJHJuZGtleTEKKwltb3Z1cHMJMHgyMCgkaW5wKSwkcm5ka2V5MAorCXhvcnBzCSRpdiwkaW5vdXQwCisJeG9ycHMJJGluMCwkaW5vdXQxCisJeG9ycHMJJHJuZGtleTEsJGlub3V0MgorCW1vdnVwcwkweDMwKCRpbnApLCRybmRrZXkxCisJeG9ycHMJJHJuZGtleTAsJGlub3V0MworCW1vdnVwcwkweDQwKCRpbnApLCRybmRrZXkwCisJeG9ycHMJJHJuZGtleTEsJGlub3V0NAorCW1vdnVwcwkweDUwKCRpbnApLCRpdgorCXhvcnBzCSRybmRrZXkwLCRpbm91dDUKKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisJbW92dXBzCSRpbm91dDIsMHgyMCgkb3V0KQorCW1vdnVwcwkkaW5vdXQzLDB4MzAoJG91dCkKKwltb3Z1cHMJJGlub3V0NCwweDQwKCRvdXQpCisJbGVhCTB4NTAoJG91dCksJG91dAorCW1vdmFwcwkkaW5vdXQ1LCRpbm91dDAKKwlzdWIJXCQweDYwLCRsZW4KKwlqbXAJLkxjYmNfZGVjX3RhaWxfY29sbGVjdGVkCisuYWxpZ24JMTYKKy5MY2JjX2RlY190YWlsX2NvbGxlY3RlZDoKKwlhbmQJXCQxNSwkbGVuCisJbW92dXBzCSRpdiwoJGl2cCkKKwlqbnoJLkxjYmNfZGVjX3RhaWxfcGFydGlhbAorCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorCWptcAkuTGNiY19kZWNfcmV0CisuYWxpZ24JMTYKKy5MY2JjX2RlY190YWlsX3BhcnRpYWw6CisJbW92YXBzCSRpbm91dDAsJHJlc2VydmVkKCVyc3ApCisJbW92CVwkMTYsJXJjeAorCW1vdgkkb3V0LCVyZGkKKwlzdWIJJGxlbiwlcmN4CisJbGVhCSRyZXNlcnZlZCglcnNwKSwlcnNpCisJLmxvbmcJMHg5MDY2QTRGMwkjIHJlcCBtb3ZzYgorCisuTGNiY19kZWNfcmV0OgorX19fCiskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisJbW92YXBzCSglcnNwKSwleG1tNgorCW1vdmFwcwkweDEwKCVyc3ApLCV4bW03CisJbW92YXBzCTB4MjAoJXJzcCksJXhtbTgKKwltb3ZhcHMJMHgzMCglcnNwKSwleG1tOQorCWxlYQkweDU4KCVyc3ApLCVyc3AKK19fXworJGNvZGUuPTw8X19fOworLkxjYmNfcmV0OgorCXJldAorLnNpemUJJHtQUkVGSVh9X2NiY19lbmNyeXB0LC4tJHtQUkVGSVh9X2NiY19lbmNyeXB0CitfX18KK30gDAorIyBpbnQgJFBSRUZJWF9zZXRfW2VufGRlXWNyeXB0X2tleSAoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwKKyMJCQkJaW50IGJpdHMsIEFFU19LRVkgKmtleSkKK3sgbXkgKCRpbnAsJGJpdHMsJGtleSkgPSBAXzRhcmdzOworICAkYml0cyA9fiBzLyVyLyVlLzsKKworJGNvZGUuPTw8X19fOworLmdsb2JsCSR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXkKKy50eXBlCSR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXksXEBhYmktb21uaXBvdGVudAorLmFsaWduCTE2Ciske1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5OgorCS5ieXRlCTB4NDgsMHg4MywweEVDLDB4MDgJIyBzdWIgcnNwLDgKKwljYWxsCV9fYWVzbmlfc2V0X2VuY3J5cHRfa2V5CisJc2hsCVwkNCwkYml0cwkJIyByb3VuZHMtMSBhZnRlciBfYWVzbmlfc2V0X2VuY3J5cHRfa2V5CisJdGVzdAklZWF4LCVlYXgKKwlqbnoJLkxkZWNfa2V5X3JldAorCWxlYQkxNigka2V5LCRiaXRzKSwkaW5wCSMgcG9pbnRzIGF0IHRoZSBlbmQgb2Yga2V5IHNjaGVkdWxlCisKKwkkbW92a2V5CSgka2V5KSwleG1tMAkJIyBqdXN0IHN3YXAKKwkkbW92a2V5CSgkaW5wKSwleG1tMQorCSRtb3ZrZXkJJXhtbTAsKCRpbnApCisJJG1vdmtleQkleG1tMSwoJGtleSkKKwlsZWEJMTYoJGtleSksJGtleQorCWxlYQktMTYoJGlucCksJGlucAorCisuTGRlY19rZXlfaW52ZXJzZToKKwkkbW92a2V5CSgka2V5KSwleG1tMAkJIyBzd2FwIGFuZCBpbnZlcnNlCisJJG1vdmtleQkoJGlucCksJXhtbTEKKwlhZXNpbWMJJXhtbTAsJXhtbTAKKwlhZXNpbWMJJXhtbTEsJXhtbTEKKwlsZWEJMTYoJGtleSksJGtleQorCWxlYQktMTYoJGlucCksJGlucAorCSRtb3ZrZXkJJXhtbTAsMTYoJGlucCkKKwkkbW92a2V5CSV4bW0xLC0xNigka2V5KQorCWNtcAkka2V5LCRpbnAKKwlqYQkuTGRlY19rZXlfaW52ZXJzZQorCisJJG1vdmtleQkoJGtleSksJXhtbTAJCSMgaW52ZXJzZSBtaWRkbGUKKwlhZXNpbWMJJXhtbTAsJXhtbTAKKwkkbW92a2V5CSV4bW0wLCgkaW5wKQorLkxkZWNfa2V5X3JldDoKKwlhZGQJXCQ4LCVyc3AKKwlyZXQKKy5MU0VIX2VuZF9zZXRfZGVjcnlwdF9rZXk6Cisuc2l6ZQkke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5LC4tJHtQUkVGSVh9X3NldF9kZWNyeXB0X2tleQorX19fCisMCisjIFRoaXMgaXMgYmFzZWQgb24gc3VibWlzc2lvbiBieQorIworIwlIdWFuZyBZaW5nIDx5aW5nLmh1YW5nQGludGVsLmNvbT4KKyMJVmlub2RoIEdvcGFsIDx2aW5vZGguZ29wYWxAaW50ZWwuY29tPgorIwlLYWhyYW1hbiBBa2RlbWlyCisjCisjIEFncmVzc2l2ZWx5IG9wdGltaXplZCBpbiByZXNwZWN0IHRvIGFlc2tleWdlbmFzc2lzdCdzIGNyaXRpY2FsIHBhdGgKKyMgYW5kIGlzIGNvbnRhaW5lZCBpbiAleG1tMC01IHRvIG1lZXQgV2luNjQgQUJJIHJlcXVpcmVtZW50LgorIworJGNvZGUuPTw8X19fOworLmdsb2JsCSR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXkKKy50eXBlCSR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXksXEBhYmktb21uaXBvdGVudAorLmFsaWduCTE2Ciske1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5OgorX19hZXNuaV9zZXRfZW5jcnlwdF9rZXk6CisJLmJ5dGUJMHg0OCwweDgzLDB4RUMsMHgwOAkjIHN1YiByc3AsOAorCW1vdglcJC0xLCVyYXgKKwl0ZXN0CSRpbnAsJGlucAorCWp6CS5MZW5jX2tleV9yZXQKKwl0ZXN0CSRrZXksJGtleQorCWp6CS5MZW5jX2tleV9yZXQKKworCW1vdnVwcwkoJGlucCksJXhtbTAJCSMgcHVsbCBmaXJzdCAxMjggYml0cyBvZiAqdXNlcktleQorCXhvcnBzCSV4bW00LCV4bW00CQkjIGxvdyBkd29yZCBvZiB4bW00IGlzIGFzc3VtZWQgMAorCWxlYQkxNigka2V5KSwlcmF4CisJY21wCVwkMjU2LCRiaXRzCisJamUJLkwxNHJvdW5kcworCWNtcAlcJDE5MiwkYml0cworCWplCS5MMTJyb3VuZHMKKwljbXAJXCQxMjgsJGJpdHMKKwlqbmUJLkxiYWRfa2V5Yml0cworCisuTDEwcm91bmRzOgorCW1vdglcJDksJGJpdHMJCQkjIDEwIHJvdW5kcyBmb3IgMTI4LWJpdCBrZXkKKwkkbW92a2V5CSV4bW0wLCgka2V5KQkJCSMgcm91bmQgMAorCWFlc2tleWdlbmFzc2lzdAlcJDB4MSwleG1tMCwleG1tMQkjIHJvdW5kIDEKKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTI4X2NvbGQKKwlhZXNrZXlnZW5hc3Npc3QJXCQweDIsJXhtbTAsJXhtbTEJIyByb3VuZCAyCisJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOAorCWFlc2tleWdlbmFzc2lzdAlcJDB4NCwleG1tMCwleG1tMQkjIHJvdW5kIDMKKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTI4CisJYWVza2V5Z2VuYXNzaXN0CVwkMHg4LCV4bW0wLCV4bW0xCSMgcm91bmQgNAorCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEwLCV4bW0wLCV4bW0xCSMgcm91bmQgNQorCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKKwlhZXNrZXlnZW5hc3Npc3QJXCQweDIwLCV4bW0wLCV4bW0xCSMgcm91bmQgNgorCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQwLCV4bW0wLCV4bW0xCSMgcm91bmQgNworCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKKwlhZXNrZXlnZW5hc3Npc3QJXCQweDgwLCV4bW0wLCV4bW0xCSMgcm91bmQgOAorCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKKwlhZXNrZXlnZW5hc3Npc3QJXCQweDFiLCV4bW0wLCV4bW0xCSMgcm91bmQgOQorCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKKwlhZXNrZXlnZW5hc3Npc3QJXCQweDM2LCV4bW0wLCV4bW0xCSMgcm91bmQgMTAKKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTI4CisJJG1vdmtleQkleG1tMCwoJXJheCkKKwltb3YJJGJpdHMsODAoJXJheCkJIyAyNDAoJXJkeCkKKwl4b3IJJWVheCwlZWF4CisJam1wCS5MZW5jX2tleV9yZXQKKworLmFsaWduCTE2CisuTDEycm91bmRzOgorCW1vdnEJMTYoJGlucCksJXhtbTIJCQkjIHJlbWFpbmluZyAxLzMgb2YgKnVzZXJLZXkKKwltb3YJXCQxMSwkYml0cwkJCSMgMTIgcm91bmRzIGZvciAxOTIKKwkkbW92a2V5CSV4bW0wLCgka2V5KQkJCSMgcm91bmQgMAorCWFlc2tleWdlbmFzc2lzdAlcJDB4MSwleG1tMiwleG1tMQkjIHJvdW5kIDEsMgorCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJhX2NvbGQKKwlhZXNrZXlnZW5hc3Npc3QJXCQweDIsJXhtbTIsJXhtbTEJIyByb3VuZCAyLDMKKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTkyYgorCWFlc2tleWdlbmFzc2lzdAlcJDB4NCwleG1tMiwleG1tMQkjIHJvdW5kIDQsNQorCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJhCisJYWVza2V5Z2VuYXNzaXN0CVwkMHg4LCV4bW0yLCV4bW0xCSMgcm91bmQgNSw2CisJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmIKKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEwLCV4bW0yLCV4bW0xCSMgcm91bmQgNyw4CisJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmEKKwlhZXNrZXlnZW5hc3Npc3QJXCQweDIwLCV4bW0yLCV4bW0xCSMgcm91bmQgOCw5CisJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmIKKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQwLCV4bW0yLCV4bW0xCSMgcm91bmQgMTAsMTEKKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTkyYQorCWFlc2tleWdlbmFzc2lzdAlcJDB4ODAsJXhtbTIsJXhtbTEJIyByb3VuZCAxMSwxMgorCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJiCisJJG1vdmtleQkleG1tMCwoJXJheCkKKwltb3YJJGJpdHMsNDgoJXJheCkJIyAyNDAoJXJkeCkKKwl4b3IJJXJheCwgJXJheAorCWptcAkuTGVuY19rZXlfcmV0CisKKy5hbGlnbgkxNgorLkwxNHJvdW5kczoKKwltb3Z1cHMJMTYoJGlucCksJXhtbTIJCQkjIHJlbWFuaW5nIGhhbGYgb2YgKnVzZXJLZXkKKwltb3YJXCQxMywkYml0cwkJCSMgMTQgcm91bmRzIGZvciAyNTYKKwlsZWEJMTYoJXJheCksJXJheAorCSRtb3ZrZXkJJXhtbTAsKCRrZXkpCQkJIyByb3VuZCAwCisJJG1vdmtleQkleG1tMiwxNigka2V5KQkJCSMgcm91bmQgMQorCWFlc2tleWdlbmFzc2lzdAlcJDB4MSwleG1tMiwleG1tMQkjIHJvdW5kIDIKKwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2YV9jb2xkCisJYWVza2V5Z2VuYXNzaXN0CVwkMHgxLCV4bW0wLCV4bW0xCSMgcm91bmQgMworCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCisJYWVza2V5Z2VuYXNzaXN0CVwkMHgyLCV4bW0yLCV4bW0xCSMgcm91bmQgNAorCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhCisJYWVza2V5Z2VuYXNzaXN0CVwkMHgyLCV4bW0wLCV4bW0xCSMgcm91bmQgNQorCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCisJYWVza2V5Z2VuYXNzaXN0CVwkMHg0LCV4bW0yLCV4bW0xCSMgcm91bmQgNgorCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhCisJYWVza2V5Z2VuYXNzaXN0CVwkMHg0LCV4bW0wLCV4bW0xCSMgcm91bmQgNworCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCisJYWVza2V5Z2VuYXNzaXN0CVwkMHg4LCV4bW0yLCV4bW0xCSMgcm91bmQgOAorCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhCisJYWVza2V5Z2VuYXNzaXN0CVwkMHg4LCV4bW0wLCV4bW0xCSMgcm91bmQgOQorCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCisJYWVza2V5Z2VuYXNzaXN0CVwkMHgxMCwleG1tMiwleG1tMQkjIHJvdW5kIDEwCisJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1NmEKKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEwLCV4bW0wLCV4bW0xCSMgcm91bmQgMTEKKwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2YgorCWFlc2tleWdlbmFzc2lzdAlcJDB4MjAsJXhtbTIsJXhtbTEJIyByb3VuZCAxMgorCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhCisJYWVza2V5Z2VuYXNzaXN0CVwkMHgyMCwleG1tMCwleG1tMQkjIHJvdW5kIDEzCisJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1NmIKKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQwLCV4bW0yLCV4bW0xCSMgcm91bmQgMTQKKwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2YQorCSRtb3ZrZXkJJXhtbTAsKCVyYXgpCisJbW92CSRiaXRzLDE2KCVyYXgpCSMgMjQwKCVyZHgpCisJeG9yCSVyYXgsJXJheAorCWptcAkuTGVuY19rZXlfcmV0CisKKy5hbGlnbgkxNgorLkxiYWRfa2V5Yml0czoKKwltb3YJXCQtMiwlcmF4CisuTGVuY19rZXlfcmV0OgorCWFkZAlcJDgsJXJzcAorCXJldAorLkxTRUhfZW5kX3NldF9lbmNyeXB0X2tleToKKwwKKy5hbGlnbgkxNgorLkxrZXlfZXhwYW5zaW9uXzEyODoKKwkkbW92a2V5CSV4bW0wLCglcmF4KQorCWxlYQkxNiglcmF4KSwlcmF4CisuTGtleV9leHBhbnNpb25fMTI4X2NvbGQ6CisJc2h1ZnBzCVwkMGIwMDAxMDAwMCwleG1tMCwleG1tNAorCXhvcnBzCSV4bW00LCAleG1tMAorCXNodWZwcwlcJDBiMTAwMDExMDAsJXhtbTAsJXhtbTQKKwl4b3JwcwkleG1tNCwgJXhtbTAKKwlzaHVmcHMJXCQwYjExMTExMTExLCV4bW0xLCV4bW0xCSMgY3JpdGljYWwgcGF0aAorCXhvcnBzCSV4bW0xLCV4bW0wCisJcmV0CisKKy5hbGlnbiAxNgorLkxrZXlfZXhwYW5zaW9uXzE5MmE6CisJJG1vdmtleQkleG1tMCwoJXJheCkKKwlsZWEJMTYoJXJheCksJXJheAorLkxrZXlfZXhwYW5zaW9uXzE5MmFfY29sZDoKKwltb3ZhcHMJJXhtbTIsICV4bW01CisuTGtleV9leHBhbnNpb25fMTkyYl93YXJtOgorCXNodWZwcwlcJDBiMDAwMTAwMDAsJXhtbTAsJXhtbTQKKwltb3ZkcWEJJXhtbTIsJXhtbTMKKwl4b3JwcwkleG1tNCwleG1tMAorCXNodWZwcwlcJDBiMTAwMDExMDAsJXhtbTAsJXhtbTQKKwlwc2xsZHEJXCQ0LCV4bW0zCisJeG9ycHMJJXhtbTQsJXhtbTAKKwlwc2h1ZmQJXCQwYjAxMDEwMTAxLCV4bW0xLCV4bW0xCSMgY3JpdGljYWwgcGF0aAorCXB4b3IJJXhtbTMsJXhtbTIKKwlweG9yCSV4bW0xLCV4bW0wCisJcHNodWZkCVwkMGIxMTExMTExMSwleG1tMCwleG1tMworCXB4b3IJJXhtbTMsJXhtbTIKKwlyZXQKKworLmFsaWduIDE2CisuTGtleV9leHBhbnNpb25fMTkyYjoKKwltb3ZhcHMJJXhtbTAsJXhtbTMKKwlzaHVmcHMJXCQwYjAxMDAwMTAwLCV4bW0wLCV4bW01CisJJG1vdmtleQkleG1tNSwoJXJheCkKKwlzaHVmcHMJXCQwYjAxMDAxMTEwLCV4bW0yLCV4bW0zCisJJG1vdmtleQkleG1tMywxNiglcmF4KQorCWxlYQkzMiglcmF4KSwlcmF4CisJam1wCS5Ma2V5X2V4cGFuc2lvbl8xOTJiX3dhcm0KKworLmFsaWduCTE2CisuTGtleV9leHBhbnNpb25fMjU2YToKKwkkbW92a2V5CSV4bW0yLCglcmF4KQorCWxlYQkxNiglcmF4KSwlcmF4CisuTGtleV9leHBhbnNpb25fMjU2YV9jb2xkOgorCXNodWZwcwlcJDBiMDAwMTAwMDAsJXhtbTAsJXhtbTQKKwl4b3JwcwkleG1tNCwleG1tMAorCXNodWZwcwlcJDBiMTAwMDExMDAsJXhtbTAsJXhtbTQKKwl4b3JwcwkleG1tNCwleG1tMAorCXNodWZwcwlcJDBiMTExMTExMTEsJXhtbTEsJXhtbTEJIyBjcml0aWNhbCBwYXRoCisJeG9ycHMJJXhtbTEsJXhtbTAKKwlyZXQKKworLmFsaWduIDE2CisuTGtleV9leHBhbnNpb25fMjU2YjoKKwkkbW92a2V5CSV4bW0wLCglcmF4KQorCWxlYQkxNiglcmF4KSwlcmF4CisKKwlzaHVmcHMJXCQwYjAwMDEwMDAwLCV4bW0yLCV4bW00CisJeG9ycHMJJXhtbTQsJXhtbTIKKwlzaHVmcHMJXCQwYjEwMDAxMTAwLCV4bW0yLCV4bW00CisJeG9ycHMJJXhtbTQsJXhtbTIKKwlzaHVmcHMJXCQwYjEwMTAxMDEwLCV4bW0xLCV4bW0xCSMgY3JpdGljYWwgcGF0aAorCXhvcnBzCSV4bW0xLCV4bW0yCisJcmV0Cisuc2l6ZQkke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5LC4tJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleQorLnNpemUJX19hZXNuaV9zZXRfZW5jcnlwdF9rZXksLi1fX2Flc25pX3NldF9lbmNyeXB0X2tleQorX19fCit9CisMCiskY29kZS49PDxfX187CisuYWxpZ24JNjQKKy5MYnN3YXBfbWFzazoKKwkuYnl0ZQkxNSwxNCwxMywxMiwxMSwxMCw5LDgsNyw2LDUsNCwzLDIsMSwwCisuTGluY3JlbWVudDMyOgorCS5sb25nCTYsNiw2LDAKKy5MaW5jcmVtZW50NjQ6CisJLmxvbmcJMSwwLDAsMAorLkx4dHNfbWFnaWM6CisJLmxvbmcJMHg4NywwLDEsMAorCisuYXNjaXogICJBRVMgZm9yIEludGVsIEFFUy1OSSwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIKKy5hbGlnbgk2NAorX19fCisKKyMgRVhDRVBUSU9OX0RJU1BPU0lUSU9OIGhhbmRsZXIgKEVYQ0VQVElPTl9SRUNPUkQgKnJlYyxVTE9ORzY0IGZyYW1lLAorIwkJQ09OVEVYVCAqY29udGV4dCxESVNQQVRDSEVSX0NPTlRFWFQgKmRpc3ApCitpZiAoJHdpbjY0KSB7CiskcmVjPSIlcmN4IjsKKyRmcmFtZT0iJXJkeCI7CiskY29udGV4dD0iJXI4IjsKKyRkaXNwPSIlcjkiOworCiskY29kZS49PDxfX187CisuZXh0ZXJuCV9faW1wX1J0bFZpcnR1YWxVbndpbmQKK19fXworJGNvZGUuPTw8X19fIGlmICgkUFJFRklYIGVxICJhZXNuaSIpOworLnR5cGUJZWNiX3NlX2hhbmRsZXIsXEBhYmktb21uaXBvdGVudAorLmFsaWduCTE2CitlY2Jfc2VfaGFuZGxlcjoKKwlwdXNoCSVyc2kKKwlwdXNoCSVyZGkKKwlwdXNoCSVyYngKKwlwdXNoCSVyYnAKKwlwdXNoCSVyMTIKKwlwdXNoCSVyMTMKKwlwdXNoCSVyMTQKKwlwdXNoCSVyMTUKKwlwdXNoZnEKKwlzdWIJXCQ2NCwlcnNwCisKKwltb3YJMTUyKCRjb250ZXh0KSwlcmF4CSMgcHVsbCBjb250ZXh0LT5Sc3AKKworCWptcAkuTGNvbW1vbl9zZWhfdGFpbAorLnNpemUJZWNiX3NlX2hhbmRsZXIsLi1lY2Jfc2VfaGFuZGxlcgorCisudHlwZQljY202NF9zZV9oYW5kbGVyLFxAYWJpLW9tbmlwb3RlbnQKKy5hbGlnbgkxNgorY2NtNjRfc2VfaGFuZGxlcjoKKwlwdXNoCSVyc2kKKwlwdXNoCSVyZGkKKwlwdXNoCSVyYngKKwlwdXNoCSVyYnAKKwlwdXNoCSVyMTIKKwlwdXNoCSVyMTMKKwlwdXNoCSVyMTQKKwlwdXNoCSVyMTUKKwlwdXNoZnEKKwlzdWIJXCQ2NCwlcnNwCisKKwltb3YJMTIwKCRjb250ZXh0KSwlcmF4CSMgcHVsbCBjb250ZXh0LT5SYXgKKwltb3YJMjQ4KCRjb250ZXh0KSwlcmJ4CSMgcHVsbCBjb250ZXh0LT5SaXAKKworCW1vdgk4KCRkaXNwKSwlcnNpCQkjIGRpc3AtPkltYWdlQmFzZQorCW1vdgk1NigkZGlzcCksJXIxMQkJIyBkaXNwLT5IYW5kbGVyRGF0YQorCisJbW92CTAoJXIxMSksJXIxMGQJCSMgSGFuZGxlckRhdGFbMF0KKwlsZWEJKCVyc2ksJXIxMCksJXIxMAkjIHByb2xvZ3VlIGxhYmVsCisJY21wCSVyMTAsJXJieAkJIyBjb250ZXh0LT5SaXA8cHJvbG9ndWUgbGFiZWwKKwlqYgkuTGNvbW1vbl9zZWhfdGFpbAorCisJbW92CTE1MigkY29udGV4dCksJXJheAkjIHB1bGwgY29udGV4dC0+UnNwCisKKwltb3YJNCglcjExKSwlcjEwZAkJIyBIYW5kbGVyRGF0YVsxXQorCWxlYQkoJXJzaSwlcjEwKSwlcjEwCSMgZXBpbG9ndWUgbGFiZWwKKwljbXAJJXIxMCwlcmJ4CQkjIGNvbnRleHQtPlJpcD49ZXBpbG9ndWUgbGFiZWwKKwlqYWUJLkxjb21tb25fc2VoX3RhaWwKKworCWxlYQkwKCVyYXgpLCVyc2kJCSMgJXhtbSBzYXZlIGFyZWEKKwlsZWEJNTEyKCRjb250ZXh0KSwlcmRpCSMgJmNvbnRleHQuWG1tNgorCW1vdglcJDgsJWVjeAkJIyA0KnNpemVvZigleG1tMCkvc2l6ZW9mKCVyYXgpCisJLmxvbmcJMHhhNTQ4ZjNmYwkJIyBjbGQ7IHJlcCBtb3ZzcQorCWxlYQkweDU4KCVyYXgpLCVyYXgJCSMgYWRqdXN0IHN0YWNrIHBvaW50ZXIKKworCWptcAkuTGNvbW1vbl9zZWhfdGFpbAorLnNpemUJY2NtNjRfc2VfaGFuZGxlciwuLWNjbTY0X3NlX2hhbmRsZXIKKworLnR5cGUJY3RyMzJfc2VfaGFuZGxlcixcQGFiaS1vbW5pcG90ZW50CisuYWxpZ24JMTYKK2N0cjMyX3NlX2hhbmRsZXI6CisJcHVzaAklcnNpCisJcHVzaAklcmRpCisJcHVzaAklcmJ4CisJcHVzaAklcmJwCisJcHVzaAklcjEyCisJcHVzaAklcjEzCisJcHVzaAklcjE0CisJcHVzaAklcjE1CisJcHVzaGZxCisJc3ViCVwkNjQsJXJzcAorCisJbW92CTEyMCgkY29udGV4dCksJXJheAkjIHB1bGwgY29udGV4dC0+UmF4CisJbW92CTI0OCgkY29udGV4dCksJXJieAkjIHB1bGwgY29udGV4dC0+UmlwCisKKwlsZWEJLkxjdHIzMl9ib2R5KCVyaXApLCVyMTAKKwljbXAJJXIxMCwlcmJ4CQkjIGNvbnRleHQtPlJpcDwicHJvbG9ndWUiIGxhYmVsCisJamIJLkxjb21tb25fc2VoX3RhaWwKKworCW1vdgkxNTIoJGNvbnRleHQpLCVyYXgJIyBwdWxsIGNvbnRleHQtPlJzcAorCisJbGVhCS5MY3RyMzJfcmV0KCVyaXApLCVyMTAKKwljbXAJJXIxMCwlcmJ4CisJamFlCS5MY29tbW9uX3NlaF90YWlsCisKKwlsZWEJMHgyMCglcmF4KSwlcnNpCQkjICV4bW0gc2F2ZSBhcmVhCisJbGVhCTUxMigkY29udGV4dCksJXJkaQkjICZjb250ZXh0LlhtbTYKKwltb3YJXCQyMCwlZWN4CQkjIDEwKnNpemVvZigleG1tMCkvc2l6ZW9mKCVyYXgpCisJLmxvbmcJMHhhNTQ4ZjNmYwkJIyBjbGQ7IHJlcCBtb3ZzcQorCWxlYQkweGM4KCVyYXgpLCVyYXgJCSMgYWRqdXN0IHN0YWNrIHBvaW50ZXIKKworCWptcAkuTGNvbW1vbl9zZWhfdGFpbAorLnNpemUJY3RyMzJfc2VfaGFuZGxlciwuLWN0cjMyX3NlX2hhbmRsZXIKKworLnR5cGUJeHRzX3NlX2hhbmRsZXIsXEBhYmktb21uaXBvdGVudAorLmFsaWduCTE2Cit4dHNfc2VfaGFuZGxlcjoKKwlwdXNoCSVyc2kKKwlwdXNoCSVyZGkKKwlwdXNoCSVyYngKKwlwdXNoCSVyYnAKKwlwdXNoCSVyMTIKKwlwdXNoCSVyMTMKKwlwdXNoCSVyMTQKKwlwdXNoCSVyMTUKKwlwdXNoZnEKKwlzdWIJXCQ2NCwlcnNwCisKKwltb3YJMTIwKCRjb250ZXh0KSwlcmF4CSMgcHVsbCBjb250ZXh0LT5SYXgKKwltb3YJMjQ4KCRjb250ZXh0KSwlcmJ4CSMgcHVsbCBjb250ZXh0LT5SaXAKKworCW1vdgk4KCRkaXNwKSwlcnNpCQkjIGRpc3AtPkltYWdlQmFzZQorCW1vdgk1NigkZGlzcCksJXIxMQkJIyBkaXNwLT5IYW5kbGVyRGF0YQorCisJbW92CTAoJXIxMSksJXIxMGQJCSMgSGFuZGxlckRhdGFbMF0KKwlsZWEJKCVyc2ksJXIxMCksJXIxMAkjIHByb2xvZ3VlIGxhYmxlCisJY21wCSVyMTAsJXJieAkJIyBjb250ZXh0LT5SaXA8cHJvbG9ndWUgbGFiZWwKKwlqYgkuTGNvbW1vbl9zZWhfdGFpbAorCisJbW92CTE1MigkY29udGV4dCksJXJheAkjIHB1bGwgY29udGV4dC0+UnNwCisKKwltb3YJNCglcjExKSwlcjEwZAkJIyBIYW5kbGVyRGF0YVsxXQorCWxlYQkoJXJzaSwlcjEwKSwlcjEwCSMgZXBpbG9ndWUgbGFiZWwKKwljbXAJJXIxMCwlcmJ4CQkjIGNvbnRleHQtPlJpcD49ZXBpbG9ndWUgbGFiZWwKKwlqYWUJLkxjb21tb25fc2VoX3RhaWwKKworCWxlYQkweDYwKCVyYXgpLCVyc2kJCSMgJXhtbSBzYXZlIGFyZWEKKwlsZWEJNTEyKCRjb250ZXh0KSwlcmRpCSMgJiBjb250ZXh0LlhtbTYKKwltb3YJXCQyMCwlZWN4CQkjIDEwKnNpemVvZigleG1tMCkvc2l6ZW9mKCVyYXgpCisJLmxvbmcJMHhhNTQ4ZjNmYwkJIyBjbGQ7IHJlcCBtb3ZzcQorCWxlYQkweDY4KzE2MCglcmF4KSwlcmF4CSMgYWRqdXN0IHN0YWNrIHBvaW50ZXIKKworCWptcAkuTGNvbW1vbl9zZWhfdGFpbAorLnNpemUJeHRzX3NlX2hhbmRsZXIsLi14dHNfc2VfaGFuZGxlcgorX19fCiskY29kZS49PDxfX187CisudHlwZQljYmNfc2VfaGFuZGxlcixcQGFiaS1vbW5pcG90ZW50CisuYWxpZ24JMTYKK2NiY19zZV9oYW5kbGVyOgorCXB1c2gJJXJzaQorCXB1c2gJJXJkaQorCXB1c2gJJXJieAorCXB1c2gJJXJicAorCXB1c2gJJXIxMgorCXB1c2gJJXIxMworCXB1c2gJJXIxNAorCXB1c2gJJXIxNQorCXB1c2hmcQorCXN1YglcJDY0LCVyc3AKKworCW1vdgkxNTIoJGNvbnRleHQpLCVyYXgJIyBwdWxsIGNvbnRleHQtPlJzcAorCW1vdgkyNDgoJGNvbnRleHQpLCVyYngJIyBwdWxsIGNvbnRleHQtPlJpcAorCisJbGVhCS5MY2JjX2RlY3J5cHQoJXJpcCksJXIxMAorCWNtcAklcjEwLCVyYngJCSMgY29udGV4dC0+UmlwPCJwcm9sb2d1ZSIgbGFiZWwKKwlqYgkuTGNvbW1vbl9zZWhfdGFpbAorCisJbGVhCS5MY2JjX2RlY3J5cHRfYm9keSglcmlwKSwlcjEwCisJY21wCSVyMTAsJXJieAkJIyBjb250ZXh0LT5SaXA8Y2JjX2RlY3J5cHRfYm9keQorCWpiCS5McmVzdG9yZV9jYmNfcmF4CisKKwlsZWEJLkxjYmNfcmV0KCVyaXApLCVyMTAKKwljbXAJJXIxMCwlcmJ4CQkjIGNvbnRleHQtPlJpcD49ImVwaWxvZ3VlIiBsYWJlbAorCWphZQkuTGNvbW1vbl9zZWhfdGFpbAorCisJbGVhCTAoJXJheCksJXJzaQkJIyB0b3Agb2Ygc3RhY2sKKwlsZWEJNTEyKCRjb250ZXh0KSwlcmRpCSMgJmNvbnRleHQuWG1tNgorCW1vdglcJDgsJWVjeAkJIyA0KnNpemVvZigleG1tMCkvc2l6ZW9mKCVyYXgpCisJLmxvbmcJMHhhNTQ4ZjNmYwkJIyBjbGQ7IHJlcCBtb3ZzcQorCWxlYQkweDU4KCVyYXgpLCVyYXgJCSMgYWRqdXN0IHN0YWNrIHBvaW50ZXIKKwlqbXAJLkxjb21tb25fc2VoX3RhaWwKKworLkxyZXN0b3JlX2NiY19yYXg6CisJbW92CTEyMCgkY29udGV4dCksJXJheAorCisuTGNvbW1vbl9zZWhfdGFpbDoKKwltb3YJOCglcmF4KSwlcmRpCisJbW92CTE2KCVyYXgpLCVyc2kKKwltb3YJJXJheCwxNTIoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5Sc3AKKwltb3YJJXJzaSwxNjgoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5Sc2kKKwltb3YJJXJkaSwxNzYoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5SZGkKKworCW1vdgk0MCgkZGlzcCksJXJkaQkJIyBkaXNwLT5Db250ZXh0UmVjb3JkCisJbW92CSRjb250ZXh0LCVyc2kJCSMgY29udGV4dAorCW1vdglcJDE1NCwlZWN4CQkjIHNpemVvZihDT05URVhUKQorCS5sb25nCTB4YTU0OGYzZmMJCSMgY2xkOyByZXAgbW92c3EKKworCW1vdgkkZGlzcCwlcnNpCisJeG9yCSVyY3gsJXJjeAkJIyBhcmcxLCBVTldfRkxBR19OSEFORExFUgorCW1vdgk4KCVyc2kpLCVyZHgJCSMgYXJnMiwgZGlzcC0+SW1hZ2VCYXNlCisJbW92CTAoJXJzaSksJXI4CQkjIGFyZzMsIGRpc3AtPkNvbnRyb2xQYworCW1vdgkxNiglcnNpKSwlcjkJCSMgYXJnNCwgZGlzcC0+RnVuY3Rpb25FbnRyeQorCW1vdgk0MCglcnNpKSwlcjEwCQkjIGRpc3AtPkNvbnRleHRSZWNvcmQKKwlsZWEJNTYoJXJzaSksJXIxMQkJIyAmZGlzcC0+SGFuZGxlckRhdGEKKwlsZWEJMjQoJXJzaSksJXIxMgkJIyAmZGlzcC0+RXN0YWJsaXNoZXJGcmFtZQorCW1vdgklcjEwLDMyKCVyc3ApCQkjIGFyZzUKKwltb3YJJXIxMSw0MCglcnNwKQkJIyBhcmc2CisJbW92CSVyMTIsNDgoJXJzcCkJCSMgYXJnNworCW1vdgklcmN4LDU2KCVyc3ApCQkjIGFyZzgsIChOVUxMKQorCWNhbGwJKl9faW1wX1J0bFZpcnR1YWxVbndpbmQoJXJpcCkKKworCW1vdglcJDEsJWVheAkJIyBFeGNlcHRpb25Db250aW51ZVNlYXJjaAorCWFkZAlcJDY0LCVyc3AKKwlwb3BmcQorCXBvcAklcjE1CisJcG9wCSVyMTQKKwlwb3AJJXIxMworCXBvcAklcjEyCisJcG9wCSVyYnAKKwlwb3AJJXJieAorCXBvcAklcmRpCisJcG9wCSVyc2kKKwlyZXQKKy5zaXplCWNiY19zZV9oYW5kbGVyLC4tY2JjX3NlX2hhbmRsZXIKKworLnNlY3Rpb24JLnBkYXRhCisuYWxpZ24JNAorX19fCiskY29kZS49PDxfX18gaWYgKCRQUkVGSVggZXEgImFlc25pIik7CisJLnJ2YQkuTFNFSF9iZWdpbl9hZXNuaV9lY2JfZW5jcnlwdAorCS5ydmEJLkxTRUhfZW5kX2Flc25pX2VjYl9lbmNyeXB0CisJLnJ2YQkuTFNFSF9pbmZvX2VjYgorCisJLnJ2YQkuTFNFSF9iZWdpbl9hZXNuaV9jY202NF9lbmNyeXB0X2Jsb2NrcworCS5ydmEJLkxTRUhfZW5kX2Flc25pX2NjbTY0X2VuY3J5cHRfYmxvY2tzCisJLnJ2YQkuTFNFSF9pbmZvX2NjbTY0X2VuYworCisJLnJ2YQkuTFNFSF9iZWdpbl9hZXNuaV9jY202NF9kZWNyeXB0X2Jsb2NrcworCS5ydmEJLkxTRUhfZW5kX2Flc25pX2NjbTY0X2RlY3J5cHRfYmxvY2tzCisJLnJ2YQkuTFNFSF9pbmZvX2NjbTY0X2RlYworCisJLnJ2YQkuTFNFSF9iZWdpbl9hZXNuaV9jdHIzMl9lbmNyeXB0X2Jsb2NrcworCS5ydmEJLkxTRUhfZW5kX2Flc25pX2N0cjMyX2VuY3J5cHRfYmxvY2tzCisJLnJ2YQkuTFNFSF9pbmZvX2N0cjMyCisKKwkucnZhCS5MU0VIX2JlZ2luX2Flc25pX3h0c19lbmNyeXB0CisJLnJ2YQkuTFNFSF9lbmRfYWVzbmlfeHRzX2VuY3J5cHQKKwkucnZhCS5MU0VIX2luZm9feHRzX2VuYworCisJLnJ2YQkuTFNFSF9iZWdpbl9hZXNuaV94dHNfZGVjcnlwdAorCS5ydmEJLkxTRUhfZW5kX2Flc25pX3h0c19kZWNyeXB0CisJLnJ2YQkuTFNFSF9pbmZvX3h0c19kZWMKK19fXworJGNvZGUuPTw8X19fOworCS5ydmEJLkxTRUhfYmVnaW5fJHtQUkVGSVh9X2NiY19lbmNyeXB0CisJLnJ2YQkuTFNFSF9lbmRfJHtQUkVGSVh9X2NiY19lbmNyeXB0CisJLnJ2YQkuTFNFSF9pbmZvX2NiYworCisJLnJ2YQkke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5CisJLnJ2YQkuTFNFSF9lbmRfc2V0X2RlY3J5cHRfa2V5CisJLnJ2YQkuTFNFSF9pbmZvX2tleQorCisJLnJ2YQkke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5CisJLnJ2YQkuTFNFSF9lbmRfc2V0X2VuY3J5cHRfa2V5CisJLnJ2YQkuTFNFSF9pbmZvX2tleQorLnNlY3Rpb24JLnhkYXRhCisuYWxpZ24JOAorX19fCiskY29kZS49PDxfX18gaWYgKCRQUkVGSVggZXEgImFlc25pIik7CisuTFNFSF9pbmZvX2VjYjoKKwkuYnl0ZQk5LDAsMCwwCisJLnJ2YQllY2Jfc2VfaGFuZGxlcgorLkxTRUhfaW5mb19jY202NF9lbmM6CisJLmJ5dGUJOSwwLDAsMAorCS5ydmEJY2NtNjRfc2VfaGFuZGxlcgorCS5ydmEJLkxjY202NF9lbmNfYm9keSwuTGNjbTY0X2VuY19yZXQJIyBIYW5kbGVyRGF0YVtdCisuTFNFSF9pbmZvX2NjbTY0X2RlYzoKKwkuYnl0ZQk5LDAsMCwwCisJLnJ2YQljY202NF9zZV9oYW5kbGVyCisJLnJ2YQkuTGNjbTY0X2RlY19ib2R5LC5MY2NtNjRfZGVjX3JldAkjIEhhbmRsZXJEYXRhW10KKy5MU0VIX2luZm9fY3RyMzI6CisJLmJ5dGUJOSwwLDAsMAorCS5ydmEJY3RyMzJfc2VfaGFuZGxlcgorLkxTRUhfaW5mb194dHNfZW5jOgorCS5ieXRlCTksMCwwLDAKKwkucnZhCXh0c19zZV9oYW5kbGVyCisJLnJ2YQkuTHh0c19lbmNfYm9keSwuTHh0c19lbmNfZXBpbG9ndWUJIyBIYW5kbGVyRGF0YVtdCisuTFNFSF9pbmZvX3h0c19kZWM6CisJLmJ5dGUJOSwwLDAsMAorCS5ydmEJeHRzX3NlX2hhbmRsZXIKKwkucnZhCS5MeHRzX2RlY19ib2R5LC5MeHRzX2RlY19lcGlsb2d1ZQkjIEhhbmRsZXJEYXRhW10KK19fXworJGNvZGUuPTw8X19fOworLkxTRUhfaW5mb19jYmM6CisJLmJ5dGUJOSwwLDAsMAorCS5ydmEJY2JjX3NlX2hhbmRsZXIKKy5MU0VIX2luZm9fa2V5OgorCS5ieXRlCTB4MDEsMHgwNCwweDAxLDB4MDAKKwkuYnl0ZQkweDA0LDB4MDIsMHgwMCwweDAwCSMgc3ViIHJzcCw4CitfX18KK30KKworc3ViIHJleCB7CisgIGxvY2FsICpvcGNvZGU9c2hpZnQ7CisgIG15ICgkZHN0LCRzcmMpPUBfOworICBteSAkcmV4PTA7CisKKyAgICAkcmV4fD0weDA0CQkJaWYoJGRzdD49OCk7CisgICAgJHJleHw9MHgwMQkJCWlmKCRzcmM+PTgpOworICAgIHB1c2ggQG9wY29kZSwkcmV4fDB4NDAJaWYoJHJleCk7Cit9CisKK3N1YiBhZXNuaSB7CisgIG15ICRsaW5lPXNoaWZ0OworICBteSBAb3Bjb2RlPSgweDY2KTsKKworICAgIGlmICgkbGluZT1+LyhhZXNrZXlnZW5hc3Npc3QpXHMrXCQoW3gwLTlhLWZdKyksXHMqJXhtbShbMC05XSspLFxzKiV4bW0oWzAtOV0rKS8pIHsKKwlyZXgoXEBvcGNvZGUsJDQsJDMpOworCXB1c2ggQG9wY29kZSwweDBmLDB4M2EsMHhkZjsKKwlwdXNoIEBvcGNvZGUsMHhjMHwoJDMmNyl8KCgkNCY3KTw8Myk7CSMgTW9kUi9NCisJbXkgJGM9JDI7CisJcHVzaCBAb3Bjb2RlLCRjPX4vXjAvP29jdCgkYyk6JGM7CisJcmV0dXJuICIuYnl0ZVx0Ii5qb2luKCcsJyxAb3Bjb2RlKTsKKyAgICB9CisgICAgZWxzaWYgKCRsaW5lPX4vKGFlc1thLXpdKylccysleG1tKFswLTldKyksXHMqJXhtbShbMC05XSspLykgeworCW15ICVvcGNvZGVsZXQgPSAoCisJCSJhZXNpbWMiID0+IDB4ZGIsCisJCSJhZXNlbmMiID0+IDB4ZGMsCSJhZXNlbmNsYXN0IiA9PiAweGRkLAorCQkiYWVzZGVjIiA9PiAweGRlLAkiYWVzZGVjbGFzdCIgPT4gMHhkZgorCSk7CisJcmV0dXJuIHVuZGVmIGlmICghZGVmaW5lZCgkb3Bjb2RlbGV0eyQxfSkpOworCXJleChcQG9wY29kZSwkMywkMik7CisJcHVzaCBAb3Bjb2RlLDB4MGYsMHgzOCwkb3Bjb2RlbGV0eyQxfTsKKwlwdXNoIEBvcGNvZGUsMHhjMHwoJDImNyl8KCgkMyY3KTw8Myk7CSMgTW9kUi9NCisJcmV0dXJuICIuYnl0ZVx0Ii5qb2luKCcsJyxAb3Bjb2RlKTsKKyAgICB9CisgICAgcmV0dXJuICRsaW5lOworfQorCiskY29kZSA9fiBzL1xgKFteXGBdKilcYC9ldmFsKCQxKS9nZW07CiskY29kZSA9fiBzL1xiKGFlcy4qJXhtbVswLTldKykuKiQvYWVzbmkoJDEpL2dlbTsKKworcHJpbnQgJGNvZGU7CisKK2Nsb3NlIFNURE9VVDsKZGlmZiAtLWdpdCBhL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYXNtL2JzYWVzLXg4Nl82NC5wbCBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYXNtL2JzYWVzLXg4Nl82NC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWM2MzEyCi0tLSAvZGV2L251bGwKKysrIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vYnNhZXMteDg2XzY0LnBsCkBAIC0wLDAgKzEsMzA0NCBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMgQUVTLTEyOCBbb3JpZ2luYWxseSBpbiBDVFIgbW9kZV0JCQkJIyMjCisjIyMgYml0c2xpY2VkIGltcGxlbWVudGF0aW9uIGZvciBJbnRlbCBDb3JlIDIgcHJvY2Vzc29ycwkjIyMKKyMjIyByZXF1aXJlcyBzdXBwb3J0IG9mIFNTRSBleHRlbnNpb25zIHVwIHRvIFNTU0UzCQkjIyMKKyMjIyBBdXRob3I6IEVtaWxpYSBLw6RzcGVyIGFuZCBQZXRlciBTY2h3YWJlCQkJIyMjCisjIyMgRGF0ZTogMjAwOS0wMy0xOQkJCQkJCSMjIworIyMjIFB1YmxpYyBkb21haW4JCQkJCQkjIyMKKyMjIwkJCQkJCQkJIyMjCisjIyMgU2VlIGh0dHA6Ly9ob21lcy5lc2F0Lmt1bGV1dmVuLmJlL35la2FzcGVyLyNzb2Z0d2FyZSBmb3IJIyMjCisjIyMgZnVydGhlciBpbmZvcm1hdGlvbi4JCQkJCSMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBTZXB0ZW1iZXIgMjAxMS4KKyMKKyMgU3RhcnRlZCBhcyB0cmFuc2xpdGVyYXRpb24gdG8gInBlcmxhc20iIHRoZSBvcmlnaW5hbCBjb2RlIGhhcworIyB1bmRlcmdvbmUgZm9sbG93aW5nIGNoYW5nZXM6CisjCisjIC0gY29kZSB3YXMgbWFkZSBwb3NpdGlvbi1pbmRlcGVuZGVudDsKKyMgLSByb3VuZHMgd2VyZSBmb2xkZWQgaW50byBhIGxvb3AgcmVzdWx0aW5nIGluID41eCBzaXplIHJlZHVjdGlvbgorIyAgIGZyb20gMTIuNUtCIHRvIDIuMktCOworIyAtIGFib3ZlIHdhcyBwb3NzaWJpbGUgdGhhbmtzIHRvIG1peGNvbHVtbnMoKSBtb2RpZmljYXRpb24gdGhhdAorIyAgIGFsbG93ZWQgdG8gZmVlZCBpdHMgb3V0cHV0IGJhY2sgdG8gYWVzZW5jW2xhc3RdLCB0aGlzIHdhcworIyAgIGFjaGlldmVkIGF0IGNvc3Qgb2YgdHdvIGFkZGl0aW9uYWwgaW50ZXItcmVnaXN0ZXJzIG1vdmVzOworIyAtIHNvbWUgaW5zdHJ1Y3Rpb24gcmVvcmRlcmluZyBhbmQgaW50ZXJsZWF2aW5nOworIyAtIHRoaXMgbW9kdWxlIGRvZXNuJ3QgaW1wbGVtZW50IGtleSBzZXR1cCBzdWJyb3V0aW5lLCBpbnN0ZWFkIGl0CisjICAgcmVsaWVzIG9uIGNvbnZlcnNpb24gb2YgImNvbnZlbnRpb25hbCIga2V5IHNjaGVkdWxlIGFzIHJldHVybmVkCisjICAgYnkgQUVTX3NldF9lbmNyeXB0X2tleSAoc2VlIGRpc2N1c3Npb24gYmVsb3cpOworIyAtIGZpcnN0IGFuZCBsYXN0IHJvdW5kIGtleXMgYXJlIHRyZWF0ZWQgZGlmZmVyZW50bHksIHdoaWNoIGFsbG93ZWQKKyMgICB0byBza2lwIG9uZSBzaGlmdHJvd3MoKSwgcmVkdWNlIGJpdC1zbGljZWQga2V5IHNjaGVkdWxlIGFuZAorIyAgIHNwZWVkLXVwIGNvbnZlcnNpb24gYnkgMjIlOworIyAtIHN1cHBvcnQgZm9yIDE5Mi0gYW5kIDI1Ni1iaXQga2V5cyB3YXMgYWRkZWQ7CisjCisjIFJlc3VsdGluZyBwZXJmb3JtYW5jZSBpbiBDUFUgY3ljbGVzIHNwZW50IHRvIGVuY3J5cHQgb25lIGJ5dGUgb3V0CisjIG9mIDQwOTYtYnl0ZSBidWZmZXIgd2l0aCAxMjgtYml0IGtleSBpczoKKyMKKyMJCUVtaWxpYSdzCXRoaXMoKikJCWRpZmZlcmVuY2UKKyMKKyMgQ29yZSAyICAgIAk5LjMwCQk4LjY5CQkrNyUKKyMgTmVoYWxlbSgqKikgCTcuNjMJCTYuOTgJCSs5JQorIyBBdG9tCSAgICAJMTcuMQkJMTcuNAkJLTIlKCoqKikKKyMKKyMgKCopCUNvbXBhcmlzb24gaXMgbm90IGNvbXBsZXRlbHkgZmFpciwgYmVjYXVzZSAidGhpcyIgaXMgRUNCLAorIwlpLmUuIG5vIGV4dHJhIHByb2Nlc3Npbmcgc3VjaCBhcyBjb3VudGVyIHZhbHVlcyBjYWxjdWxhdGlvbgorIwlhbmQgeG9yLWluZyBpbnB1dCBhcyBpbiBFbWlsaWEncyBDVFIgaW1wbGVtZW50YXRpb24gaXMKKyMJcGVyZm9ybWVkLiBIb3dldmVyLCB0aGUgQ1RSIGNhbGN1bGF0aW9ucyBzdGFuZCBmb3Igbm90IG1vcmUKKyMJdGhhbiAxJSBvZiB0b3RhbCB0aW1lLCBzbyBjb21wYXJpc29uIGlzICpyYXRoZXIqIGZhaXIuCisjCisjICgqKikJUmVzdWx0cyB3ZXJlIGNvbGxlY3RlZCBvbiBXZXN0bWVyZSwgd2hpY2ggaXMgY29uc2lkZXJlZCB0bworIwliZSBlcXVpdmFsZW50IHRvIE5laGFsZW0gZm9yIHRoaXMgY29kZS4KKyMKKyMgKCoqKikJU2xvd2Rvd24gb24gQXRvbSBpcyByYXRoZXIgc3RyYW5nZSBwZXIgc2UsIGJlY2F1c2Ugb3JpZ2luYWwKKyMJaW1wbGVtZW50YXRpb24gaGFzIGEgbnVtYmVyIG9mIDkrLWJ5dGVzIGluc3RydWN0aW9ucywgd2hpY2gKKyMJYXJlIGJhZCBmb3IgQXRvbSBmcm9udC1lbmQsIGFuZCB3aGljaCBJIGVsaW1pbmF0ZWQgY29tcGxldGVseS4KKyMJSW4gYXR0ZW1wdCB0byBhZGRyZXNzIGRldGVyaW9yYXRpb24gc2JveCgpIHdhcyB0ZXN0ZWQgaW4gRlAKKyMJU0lNRCAiZG9tYWluIiAobW92YXBzIGluc3RlYWQgb2YgbW92ZHFhLCB4b3JwcyBpbnN0ZWFkIG9mCisjCXB4b3IsIGV0Yy4pLiBXaGlsZSBpdCByZXN1bHRlZCBpbiBub21pbmFsIDQlIGltcHJvdmVtZW50IG9uCisjCUF0b20sIGl0IGh1cnRlZCBXZXN0bWVyZSBieSBtb3JlIHRoYW4gMnggZmFjdG9yLgorIworIyBBcyBmb3Iga2V5IHNjaGVkdWxlIGNvbnZlcnNpb24gc3Vicm91dGluZS4gSW50ZXJmYWNlIHRvIE9wZW5TU0wKKyMgcmVsaWVzIG9uIHBlci1pbnZvY2F0aW9uIG9uLXRoZS1mbHkgY29udmVyc2lvbi4gVGhpcyBuYXR1cmFsbHkKKyMgaGFzIGltcGFjdCBvbiBwZXJmb3JtYW5jZSwgZXNwZWNpYWxseSBmb3Igc2hvcnQgaW5wdXRzLiBDb252ZXJzaW9uCisjIHRpbWUgaW4gQ1BVIGN5Y2xlcyBhbmQgaXRzIHJhdGlvIHRvIENQVSBjeWNsZXMgc3BlbnQgaW4gOHggYmxvY2sKKyMgZnVuY3Rpb24gaXM6CisjCisjIAkJY29udmVyc2lvbgljb252ZXJzaW9uLzh4IGJsb2NrCisjIENvcmUgMgkyNDAJCTAuMjIKKyMgTmVoYWxlbQkxODAJCTAuMjAKKyMgQXRvbQkJNDMwCQkwLjE5CisjCisjIFRoZSByYXRpbyB2YWx1ZXMgbWVhbiB0aGF0IDEyOC1ieXRlIGJsb2NrcyB3aWxsIGJlIHByb2Nlc3NlZAorIyAxNi0xOCUgc2xvd2VyLCAyNTYtYnl0ZSBibG9ja3MgLSA5LTEwJSwgMzg0LWJ5dGUgYmxvY2tzIC0gNi03JSwKKyMgZXRjLiBUaGVuIGtlZXAgaW4gbWluZCB0aGF0IGlucHV0IHNpemVzIG5vdCBkaXZpc2libGUgYnkgMTI4IGFyZQorIyAqZWZmZWN0aXZlbHkqIHNsb3dlciwgZXNwZWNpYWxseSBzaG9ydGVzdCBvbmVzLCBlLmcuIGNvbnNlY3V0aXZlCisjIDE0NC1ieXRlIGJsb2NrcyBhcmUgcHJvY2Vzc2VkIDQ0JSBzbG93ZXIgdGhhbiBvbmUgd291bGQgZXhwZWN0LAorIyAyNzIgLSAyOSUsIDQwMCAtIDIyJSwgZXRjLiBZZXQsIGRlc3BpdGUgYWxsIHRoZXNlICJzaG9ydGNvbWluZ3MiCisjIGl0J3Mgc3RpbGwgZmFzdGVyIHRoYW4gWyJoeXBlci10aHJlYWRpbmctc2FmZSIgY29kZSBwYXRoIGluXQorIyBhZXMteDg2XzY0LnBsIG9uIGFsbCBsZW5ndGhzIGFib3ZlIDY0IGJ5dGVzLi4uCisjCisjIE9jdG9iZXIgMjAxMS4KKyMKKyMgQWRkIGRlY3J5cHRpb24gcHJvY2VkdXJlLiBQZXJmb3JtYW5jZSBpbiBDUFUgY3ljbGVzIHNwZW50IHRvIGRlY3J5cHQKKyMgb25lIGJ5dGUgb3V0IG9mIDQwOTYtYnl0ZSBidWZmZXIgd2l0aCAxMjgtYml0IGtleSBpczoKKyMKKyMgQ29yZSAyCTExLjAKKyMgTmVoYWxlbQk5LjE2CisjIEF0b20JCTIwLjkKKyMKKyMgTm92ZW1iZXIgMjAxMS4KKyMKKyMgQWRkIGJzYWVzX3h0c19bZW58ZGVdY3J5cHQuIExlc3MtdGhhbi04MC1ieXRlcy1ibG9jayBwZXJmb3JtYW5jZSBpcworIyBzdWJvcHRpbWFsLCBidXQgWFRTIGlzIG1lYW50IHRvIGJlIHVzZWQgd2l0aCBsYXJnZXIgYmxvY2tzLi4uCisjCisjCQkJCQkJPGFwcHJvQG9wZW5zc2wub3JnPgorCiskZmxhdm91ciA9IHNoaWZ0OworJG91dHB1dCAgPSBzaGlmdDsKK2lmICgkZmxhdm91ciA9fiAvXC4vKSB7ICRvdXRwdXQgPSAkZmxhdm91cjsgdW5kZWYgJGZsYXZvdXI7IH0KKworJHdpbjY0PTA7ICR3aW42ND0xIGlmICgkZmxhdm91ciA9fiAvW25tXWFzbXxtaW5ndzY0LyB8fCAkb3V0cHV0ID1+IC9cLmFzbSQvKTsKKworJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsKKyggJHhsYXRlPSIke2Rpcn14ODZfNjQteGxhdGUucGwiIGFuZCAtZiAkeGxhdGUgKSBvcgorKCAkeGxhdGU9IiR7ZGlyfS4uLy4uL3Blcmxhc20veDg2XzY0LXhsYXRlLnBsIiBhbmQgLWYgJHhsYXRlKSBvcgorZGllICJjYW4ndCBsb2NhdGUgeDg2XzY0LXhsYXRlLnBsIjsKKworb3BlbiBTVERPVVQsInwgJF5YICR4bGF0ZSAkZmxhdm91ciAkb3V0cHV0IjsKKworbXkgKCRpbnAsJG91dCwkbGVuLCRrZXksJGl2cCk9KCIlcmRpIiwiJXJzaSIsIiVyZHgiLCIlcmN4Iik7CitteSBAWE1NPW1hcCgiJXhtbSRfIiwoMTUsMC4uMTQpKTsJIyBiZXN0IG9uIEF0b20sICsxMCUgb3ZlciAoMC4uMTUpCitteSAkZWNiPTA7CSMgc3VwcHJlc3MgdW5yZWZlcmVuY2VkIEVDQiBzdWJyb3V0aW5lcywgc3BhcmUgc29tZSBzcGFjZS4uLgorCit7CitteSAoJGtleSwkcm91bmRzLCRjb25zdCk9KCIlcmF4IiwiJXIxMGQiLCIlcjExIik7CisKK3N1YiBTYm94IHsKKyMgaW5wdXQgaW4gIGxzYiA+IFtiMCwgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjddIDwgbXNiCisjIG91dHB1dCBpbiBsc2IgPiBbYjAsIGIxLCBiNCwgYjYsIGIzLCBiNywgYjIsIGI1XSA8IG1zYgorbXkgQGI9QF9bMC4uN107CitteSBAdD1AX1s4Li4xMV07CitteSBAcz1AX1sxMi4uMTVdOworCSZJbkJhc2lzQ2hhbmdlCShAYik7CisJJkludl9HRjI1NgkoQGJbNiw1LDAsMyw3LDEsNCwyXSxAdCxAcyk7CisJJk91dEJhc2lzQ2hhbmdlCShAYls3LDEsNCwyLDYsNSwwLDNdKTsKK30KKworc3ViIEluQmFzaXNDaGFuZ2UgeworIyBpbnB1dCBpbiAgbHNiID4gW2IwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiN10gPCBtc2IKKyMgb3V0cHV0IGluIGxzYiA+IFtiNiwgYjUsIGIwLCBiMywgYjcsIGIxLCBiNCwgYjJdIDwgbXNiIAorbXkgQGI9QF9bMC4uN107CiskY29kZS49PDxfX187CisJcHhvcglAYls2XSwgQGJbNV0KKwlweG9yCUBiWzFdLCBAYlsyXQorCXB4b3IJQGJbMF0sIEBiWzNdCisJcHhvcglAYlsyXSwgQGJbNl0KKwlweG9yIAlAYlswXSwgQGJbNV0KKworCXB4b3IJQGJbM10sIEBiWzZdCisJcHhvcglAYls3XSwgQGJbM10KKwlweG9yCUBiWzVdLCBAYls3XQorCXB4b3IJQGJbNF0sIEBiWzNdCisJcHhvcglAYls1XSwgQGJbNF0KKwlweG9yCUBiWzFdLCBAYlszXQorCisJcHhvcglAYls3XSwgQGJbMl0KKwlweG9yCUBiWzVdLCBAYlsxXQorX19fCit9CisKK3N1YiBPdXRCYXNpc0NoYW5nZSB7CisjIGlucHV0IGluICBsc2IgPiBbYjAsIGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3XSA8IG1zYgorIyBvdXRwdXQgaW4gbHNiID4gW2I2LCBiMSwgYjIsIGI0LCBiNywgYjAsIGIzLCBiNV0gPCBtc2IKK215IEBiPUBfWzAuLjddOworJGNvZGUuPTw8X19fOworCXB4b3IJQGJbNl0sIEBiWzBdCisJcHhvcglAYls0XSwgQGJbMV0KKwlweG9yCUBiWzBdLCBAYlsyXQorCXB4b3IJQGJbNl0sIEBiWzRdCisJcHhvcglAYlsxXSwgQGJbNl0KKworCXB4b3IJQGJbNV0sIEBiWzFdCisJcHhvcglAYlszXSwgQGJbNV0KKwlweG9yCUBiWzddLCBAYlszXQorCXB4b3IJQGJbNV0sIEBiWzddCisJcHhvcglAYls1XSwgQGJbMl0KKworCXB4b3IJQGJbN10sIEBiWzRdCitfX18KK30KKworc3ViIEludlNib3ggeworIyBpbnB1dCBpbiBsc2IgCT4gW2IwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiN10gPCBtc2IKKyMgb3V0cHV0IGluIGxzYgk+IFtiMCwgYjEsIGI2LCBiNCwgYjIsIGI3LCBiMywgYjVdIDwgbXNiCitteSBAYj1AX1swLi43XTsKK215IEB0PUBfWzguLjExXTsKK215IEBzPUBfWzEyLi4xNV07CisJJkludkluQmFzaXNDaGFuZ2UJKEBiKTsKKwkmSW52X0dGMjU2CQkoQGJbNSwxLDIsNiwzLDcsMCw0XSxAdCxAcyk7CisJJkludk91dEJhc2lzQ2hhbmdlCShAYlszLDcsMCw0LDUsMSwyLDZdKTsKK30KKworc3ViIEludkluQmFzaXNDaGFuZ2UgewkJIyBPdXRCYXNpc0NoYW5nZSBpbiByZXZlcnNlCitteSBAYj1AX1s1LDEsMiw2LDMsNywwLDRdOworJGNvZGUuPTw8X19fCisJcHhvcglAYls3XSwgQGJbNF0KKworCXB4b3IJQGJbNV0sIEBiWzddCisJcHhvcglAYls1XSwgQGJbMl0KKwlweG9yCUBiWzddLCBAYlszXQorCXB4b3IJQGJbM10sIEBiWzVdCisJcHhvcglAYls1XSwgQGJbMV0KKworCXB4b3IJQGJbMV0sIEBiWzZdCisJcHhvcglAYlswXSwgQGJbMl0KKwlweG9yCUBiWzZdLCBAYls0XQorCXB4b3IJQGJbNl0sIEBiWzBdCisJcHhvcglAYls0XSwgQGJbMV0KK19fXworfQorCitzdWIgSW52T3V0QmFzaXNDaGFuZ2UgewkJIyBJbkJhc2lzQ2hhbmdlIGluIHJldmVyc2UKK215IEBiPUBfWzIsNSw3LDMsNiwxLDAsNF07CiskY29kZS49PDxfX187CisJcHhvcglAYls1XSwgQGJbMV0KKwlweG9yCUBiWzddLCBAYlsyXQorCisJcHhvcglAYlsxXSwgQGJbM10KKwlweG9yCUBiWzVdLCBAYls0XQorCXB4b3IJQGJbNV0sIEBiWzddCisJcHhvcglAYls0XSwgQGJbM10KKwkgcHhvciAJQGJbMF0sIEBiWzVdCisJcHhvcglAYls3XSwgQGJbM10KKwkgcHhvcglAYlsyXSwgQGJbNl0KKwkgcHhvcglAYlsxXSwgQGJbMl0KKwlweG9yCUBiWzNdLCBAYls2XQorCisJcHhvcglAYlswXSwgQGJbM10KKwlweG9yCUBiWzZdLCBAYls1XQorX19fCit9CisKK3N1YiBNdWxfR0Y0IHsKKyM7KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIzsqIE11bF9HRjQ6IElucHV0IHgwLXgxLHkwLXkxIE91dHB1dCB4MC14MSBUZW1wIHQwICg4KSAqCisjOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK215ICgkeDAsJHgxLCR5MCwkeTEsJHQwKT1AXzsKKyRjb2RlLj08PF9fXzsKKwltb3ZkcWEJJHkwLCAkdDAKKwlweG9yIAkkeTEsICR0MAorCXBhbmQJJHgwLCAkdDAKKwlweG9yCSR4MSwgJHgwCisJcGFuZAkkeTAsICR4MQorCXBhbmQJJHkxLCAkeDAKKwlweG9yCSR4MSwgJHgwCisJcHhvcgkkdDAsICR4MQorX19fCit9CisKK3N1YiBNdWxfR0Y0X04gewkJCQkjIG5vdCB1c2VkLCBzZWUgbmV4dCBzdWJyb3V0aW5lCisjIG11bHRpcGx5IGFuZCBzY2FsZSBieSBOCitteSAoJHgwLCR4MSwkeTAsJHkxLCR0MCk9QF87CiskY29kZS49PDxfX187CisJbW92ZHFhCSR5MCwgJHQwCisJcHhvcgkkeTEsICR0MAorCXBhbmQJJHgwLCAkdDAKKwlweG9yCSR4MSwgJHgwCisJcGFuZAkkeTAsICR4MQorCXBhbmQJJHkxLCAkeDAKKwlweG9yCSR4MCwgJHgxCisJcHhvcgkkdDAsICR4MAorX19fCit9CisKK3N1YiBNdWxfR0Y0X05fR0Y0IHsKKyMgaW50ZXJsZWF2ZWQgTXVsX0dGNF9OIGFuZCBNdWxfR0Y0CitteSAoJHgwLCR4MSwkeTAsJHkxLCR0MCwKKyAgICAkeDIsJHgzLCR5MiwkeTMsJHQxKT1AXzsKKyRjb2RlLj08PF9fXzsKKwltb3ZkcWEJJHkwLCAkdDAKKwkgbW92ZHFhCSR5MiwgJHQxCisJcHhvcgkkeTEsICR0MAorCSBweG9yIAkkeTMsICR0MQorCXBhbmQJJHgwLCAkdDAKKwkgcGFuZAkkeDIsICR0MQorCXB4b3IJJHgxLCAkeDAKKwkgcHhvcgkkeDMsICR4MgorCXBhbmQJJHkwLCAkeDEKKwkgcGFuZAkkeTIsICR4MworCXBhbmQJJHkxLCAkeDAKKwkgcGFuZAkkeTMsICR4MgorCXB4b3IJJHgwLCAkeDEKKwkgcHhvcgkkeDMsICR4MgorCXB4b3IJJHQwLCAkeDAKKwkgcHhvcgkkdDEsICR4MworX19fCit9CitzdWIgTXVsX0dGMTZfMiB7CitteSBAeD1AX1swLi43XTsKK215IEB5PUBfWzguLjExXTsKK215IEB0PUBfWzEyLi4xNV07CiskY29kZS49PDxfX187CisJbW92ZHFhCUB4WzBdLCBAdFswXQorCW1vdmRxYQlAeFsxXSwgQHRbMV0KK19fXworCSZNdWxfR0Y0ICAJKEB4WzBdLCBAeFsxXSwgQHlbMF0sIEB5WzFdLCBAdFsyXSk7CiskY29kZS49PDxfX187CisJcHhvcglAeFsyXSwgQHRbMF0KKwlweG9yCUB4WzNdLCBAdFsxXQorCXB4b3IJQHlbMl0sIEB5WzBdCisJcHhvcglAeVszXSwgQHlbMV0KK19fXworCU11bF9HRjRfTl9HRjQJKEB0WzBdLCBAdFsxXSwgQHlbMF0sIEB5WzFdLCBAdFszXSwKKwkJCSBAeFsyXSwgQHhbM10sIEB5WzJdLCBAeVszXSwgQHRbMl0pOworJGNvZGUuPTw8X19fOworCXB4b3IJQHRbMF0sIEB4WzBdCisJcHhvcglAdFswXSwgQHhbMl0KKwlweG9yCUB0WzFdLCBAeFsxXQorCXB4b3IJQHRbMV0sIEB4WzNdCisKKwltb3ZkcWEJQHhbNF0sIEB0WzBdCisJbW92ZHFhCUB4WzVdLCBAdFsxXQorCXB4b3IJQHhbNl0sIEB0WzBdCisJcHhvcglAeFs3XSwgQHRbMV0KK19fXworCSZNdWxfR0Y0X05fR0Y0CShAdFswXSwgQHRbMV0sIEB5WzBdLCBAeVsxXSwgQHRbM10sCisJCQkgQHhbNl0sIEB4WzddLCBAeVsyXSwgQHlbM10sIEB0WzJdKTsKKyRjb2RlLj08PF9fXzsKKwlweG9yCUB5WzJdLCBAeVswXQorCXB4b3IJQHlbM10sIEB5WzFdCitfX18KKwkmTXVsX0dGNCAgCShAeFs0XSwgQHhbNV0sIEB5WzBdLCBAeVsxXSwgQHRbM10pOworJGNvZGUuPTw8X19fOworCXB4b3IJQHRbMF0sIEB4WzRdCisJcHhvcglAdFswXSwgQHhbNl0KKwlweG9yCUB0WzFdLCBAeFs1XQorCXB4b3IJQHRbMV0sIEB4WzddCitfX18KK30KK3N1YiBJbnZfR0YyNTYgeworIzsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIzsqIEludl9HRjI1NjogSW5wdXQgeDAteDcgT3V0cHV0IHgwLXg3IFRlbXAgdDAtdDMsczAtczMgKDE0NCkgICAgICAgKgorIzsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorbXkgQHg9QF9bMC4uN107CitteSBAdD1AX1s4Li4xMV07CitteSBAcz1AX1sxMi4uMTVdOworIyBkaXJlY3Qgb3B0aW1pemF0aW9ucyBmcm9tIGhhcmR3YXJlCiskY29kZS49PDxfX187CisJbW92ZHFhCUB4WzRdLCBAdFszXQorCW1vdmRxYQlAeFs1XSwgQHRbMl0KKwltb3ZkcWEJQHhbMV0sIEB0WzFdCisJbW92ZHFhCUB4WzddLCBAc1sxXQorCW1vdmRxYQlAeFswXSwgQHNbMF0KKworCXB4b3IJQHhbNl0sIEB0WzNdCisJcHhvcglAeFs3XSwgQHRbMl0KKwlweG9yCUB4WzNdLCBAdFsxXQorCSBtb3ZkcWEJQHRbM10sIEBzWzJdCisJcHhvcglAeFs2XSwgQHNbMV0KKwkgbW92ZHFhCUB0WzJdLCBAdFswXQorCXB4b3IJQHhbMl0sIEBzWzBdCisJIG1vdmRxYQlAdFszXSwgQHNbM10KKworCXBvcglAdFsxXSwgQHRbMl0KKwlwb3IJQHNbMF0sIEB0WzNdCisJcHhvcglAdFswXSwgQHNbM10KKwlwYW5kCUBzWzBdLCBAc1syXQorCXB4b3IJQHRbMV0sIEBzWzBdCisJcGFuZAlAdFsxXSwgQHRbMF0KKwlwYW5kCUBzWzBdLCBAc1szXQorCW1vdmRxYQlAeFszXSwgQHNbMF0KKwlweG9yCUB4WzJdLCBAc1swXQorCXBhbmQJQHNbMF0sIEBzWzFdCisJcHhvcglAc1sxXSwgQHRbM10KKwlweG9yCUBzWzFdLCBAdFsyXQorCW1vdmRxYQlAeFs0XSwgQHNbMV0KKwltb3ZkcWEJQHhbMV0sIEBzWzBdCisJcHhvcglAeFs1XSwgQHNbMV0KKwlweG9yCUB4WzBdLCBAc1swXQorCW1vdmRxYQlAc1sxXSwgQHRbMV0KKwlwYW5kCUBzWzBdLCBAc1sxXQorCXBvcglAc1swXSwgQHRbMV0KKwlweG9yCUBzWzFdLCBAdFswXQorCXB4b3IJQHNbM10sIEB0WzNdCisJcHhvcglAc1syXSwgQHRbMl0KKwlweG9yCUBzWzNdLCBAdFsxXQorCW1vdmRxYQlAeFs3XSwgQHNbMF0KKwlweG9yCUBzWzJdLCBAdFswXQorCW1vdmRxYQlAeFs2XSwgQHNbMV0KKwlweG9yCUBzWzJdLCBAdFsxXQorCW1vdmRxYQlAeFs1XSwgQHNbMl0KKwlwYW5kCUB4WzNdLCBAc1swXQorCW1vdmRxYQlAeFs0XSwgQHNbM10KKwlwYW5kCUB4WzJdLCBAc1sxXQorCXBhbmQJQHhbMV0sIEBzWzJdCisJcG9yCUB4WzBdLCBAc1szXQorCXB4b3IJQHNbMF0sIEB0WzNdCisJcHhvcglAc1sxXSwgQHRbMl0KKwlweG9yCUBzWzJdLCBAdFsxXQorCXB4b3IJQHNbM10sIEB0WzBdIAorCisJI0ludl9HRjE2IFx0MCwgXHQxLCBcdDIsIFx0MywgXHMwLCBcczEsIFxzMiwgXHMzCisKKwkjIG5ldyBzbWFsbGVyIGludmVyc2lvbgorCisJbW92ZHFhCUB0WzNdLCBAc1swXQorCXBhbmQJQHRbMV0sIEB0WzNdCisJcHhvcglAdFsyXSwgQHNbMF0KKworCW1vdmRxYQlAdFswXSwgQHNbMl0KKwltb3ZkcWEJQHNbMF0sIEBzWzNdCisJcHhvcglAdFszXSwgQHNbMl0KKwlwYW5kCUBzWzJdLCBAc1szXQorCisJbW92ZHFhCUB0WzFdLCBAc1sxXQorCXB4b3IJQHRbMl0sIEBzWzNdCisJcHhvcglAdFswXSwgQHNbMV0KKworCXB4b3IJQHRbMl0sIEB0WzNdCisKKwlwYW5kCUB0WzNdLCBAc1sxXQorCisJbW92ZHFhCUBzWzJdLCBAdFsyXQorCXB4b3IJQHRbMF0sIEBzWzFdCisKKwlweG9yCUBzWzFdLCBAdFsyXQorCXB4b3IJQHNbMV0sIEB0WzFdCisKKwlwYW5kCUB0WzBdLCBAdFsyXQorCisJcHhvcglAdFsyXSwgQHNbMl0KKwlweG9yCUB0WzJdLCBAdFsxXQorCisJcGFuZAlAc1szXSwgQHNbMl0KKworCXB4b3IJQHNbMF0sIEBzWzJdCitfX18KKyMgb3V0cHV0IGluIHMzLCBzMiwgczEsIHQxCisKKyMgTXVsX0dGMTZfMiBceDAsIFx4MSwgXHgyLCBceDMsIFx4NCwgXHg1LCBceDYsIFx4NywgXHQyLCBcdDMsIFx0MCwgXHQxLCBcczAsIFxzMSwgXHMyLCBcczMKKworIyBNdWxfR0YxNl8yIFx4MCwgXHgxLCBceDIsIFx4MywgXHg0LCBceDUsIFx4NiwgXHg3LCBcczMsIFxzMiwgXHMxLCBcdDEsIFxzMCwgXHQwLCBcdDIsIFx0MworCSZNdWxfR0YxNl8yKEB4LEBzWzMsMiwxXSxAdFsxXSxAc1swXSxAdFswLDIsM10pOworCisjIyMgb3V0cHV0IG1zYiA+IFt4Myx4Mix4MSx4MCx4Nyx4Nix4NSx4NF0gPCBsc2IKK30KKworIyBBRVMgbGluZWFyIGNvbXBvbmVudHMKKworc3ViIFNoaWZ0Um93cyB7CitteSBAeD1AX1swLi43XTsKK215ICRtYXNrPXBvcDsKKyRjb2RlLj08PF9fXzsKKwlweG9yCTB4MDAoJGtleSksQHhbMF0KKwlweG9yCTB4MTAoJGtleSksQHhbMV0KKwlwc2h1ZmIJJG1hc2ssQHhbMF0KKwlweG9yCTB4MjAoJGtleSksQHhbMl0KKwlwc2h1ZmIJJG1hc2ssQHhbMV0KKwlweG9yCTB4MzAoJGtleSksQHhbM10KKwlwc2h1ZmIJJG1hc2ssQHhbMl0KKwlweG9yCTB4NDAoJGtleSksQHhbNF0KKwlwc2h1ZmIJJG1hc2ssQHhbM10KKwlweG9yCTB4NTAoJGtleSksQHhbNV0KKwlwc2h1ZmIJJG1hc2ssQHhbNF0KKwlweG9yCTB4NjAoJGtleSksQHhbNl0KKwlwc2h1ZmIJJG1hc2ssQHhbNV0KKwlweG9yCTB4NzAoJGtleSksQHhbN10KKwlwc2h1ZmIJJG1hc2ssQHhbNl0KKwlsZWEJMHg4MCgka2V5KSwka2V5CisJcHNodWZiCSRtYXNrLEB4WzddCitfX18KK30KKworc3ViIE1peENvbHVtbnMgeworIyBtb2RpZmllZCB0byBlbWl0IG91dHB1dCBpbiBvcmRlciBzdWl0YWJsZSBmb3IgZmVlZGluZyBiYWNrIHRvIGFlc2VuY1tsYXN0XQorbXkgQHg9QF9bMC4uN107CitteSBAdD1AX1s4Li4xNV07CiskY29kZS49PDxfX187CisJcHNodWZkCVwkMHg5MywgQHhbMF0sIEB0WzBdCSMgeDAgPDw8IDMyCisJcHNodWZkCVwkMHg5MywgQHhbMV0sIEB0WzFdCisJIHB4b3IJQHRbMF0sIEB4WzBdCQkjIHgwIF4gKHgwIDw8PCAzMikKKwlwc2h1ZmQJXCQweDkzLCBAeFsyXSwgQHRbMl0KKwkgcHhvcglAdFsxXSwgQHhbMV0KKwlwc2h1ZmQJXCQweDkzLCBAeFszXSwgQHRbM10KKwkgcHhvcglAdFsyXSwgQHhbMl0KKwlwc2h1ZmQJXCQweDkzLCBAeFs0XSwgQHRbNF0KKwkgcHhvcglAdFszXSwgQHhbM10KKwlwc2h1ZmQJXCQweDkzLCBAeFs1XSwgQHRbNV0KKwkgcHhvcglAdFs0XSwgQHhbNF0KKwlwc2h1ZmQJXCQweDkzLCBAeFs2XSwgQHRbNl0KKwkgcHhvcglAdFs1XSwgQHhbNV0KKwlwc2h1ZmQJXCQweDkzLCBAeFs3XSwgQHRbN10KKwkgcHhvcglAdFs2XSwgQHhbNl0KKwkgcHhvcglAdFs3XSwgQHhbN10KKworCXB4b3IJQHhbMF0sIEB0WzFdCisJcHhvcglAeFs3XSwgQHRbMF0KKwlweG9yCUB4WzddLCBAdFsxXQorCSBwc2h1ZmQJXCQweDRFLCBAeFswXSwgQHhbMF0gCSMgKHgwIF4gKHgwIDw8PCAzMikpIDw8PCA2NCkKKwlweG9yCUB4WzFdLCBAdFsyXQorCSBwc2h1ZmQJXCQweDRFLCBAeFsxXSwgQHhbMV0KKwlweG9yCUB4WzRdLCBAdFs1XQorCSBweG9yCUB0WzBdLCBAeFswXQorCXB4b3IJQHhbNV0sIEB0WzZdCisJIHB4b3IJQHRbMV0sIEB4WzFdCisJcHhvcglAeFszXSwgQHRbNF0KKwkgcHNodWZkCVwkMHg0RSwgQHhbNF0sIEB0WzBdCisJcHhvcglAeFs2XSwgQHRbN10KKwkgcHNodWZkCVwkMHg0RSwgQHhbNV0sIEB0WzFdCisJcHhvcglAeFsyXSwgQHRbM10KKwkgcHNodWZkCVwkMHg0RSwgQHhbM10sIEB4WzRdCisJcHhvcglAeFs3XSwgQHRbM10KKwkgcHNodWZkCVwkMHg0RSwgQHhbN10sIEB4WzVdCisJcHhvcglAeFs3XSwgQHRbNF0KKwkgcHNodWZkCVwkMHg0RSwgQHhbNl0sIEB4WzNdCisJcHhvcglAdFs0XSwgQHRbMF0KKwkgcHNodWZkCVwkMHg0RSwgQHhbMl0sIEB4WzZdCisJcHhvcglAdFs1XSwgQHRbMV0KKworCXB4b3IJQHRbM10sIEB4WzRdCisJcHhvcglAdFs3XSwgQHhbNV0KKwlweG9yCUB0WzZdLCBAeFszXQorCSBtb3ZkcWEJQHRbMF0sIEB4WzJdCisJcHhvcglAdFsyXSwgQHhbNl0KKwkgbW92ZHFhCUB0WzFdLCBAeFs3XQorX19fCit9CisKK3N1YiBJbnZNaXhDb2x1bW5zIHsKK215IEB4PUBfWzAuLjddOworbXkgQHQ9QF9bOC4uMTVdOworCiskY29kZS49PDxfX187CisJIyBtdWx0aXBsaWNhdGlvbiBieSAweDBlCisJcHNodWZkCVwkMHg5MywgQHhbN10sIEB0WzddCisJbW92ZHFhCUB4WzJdLCBAdFsyXQorCXB4b3IJQHhbNV0sIEB4WzddCQkjIDcgNQorCXB4b3IJQHhbNV0sIEB4WzJdCQkjIDIgNQorCXBzaHVmZAlcJDB4OTMsIEB4WzBdLCBAdFswXQorCW1vdmRxYQlAeFs1XSwgQHRbNV0KKwlweG9yCUB4WzBdLCBAeFs1XQkJIyA1IDAJCVsxXQorCXB4b3IJQHhbMV0sIEB4WzBdCQkjIDAgMQorCXBzaHVmZAlcJDB4OTMsIEB4WzFdLCBAdFsxXQorCXB4b3IJQHhbMl0sIEB4WzFdCQkjIDEgMjUKKwlweG9yCUB4WzZdLCBAeFswXQkJIyAwMSA2CQlbMl0KKwlweG9yCUB4WzNdLCBAeFsxXQkJIyAxMjUgMwkJWzRdCisJcHNodWZkCVwkMHg5MywgQHhbM10sIEB0WzNdCisJcHhvcglAeFswXSwgQHhbMl0JCSMgMjUgMDE2CVszXQorCXB4b3IJQHhbN10sIEB4WzNdCQkjIDMgNzUKKwlweG9yCUB4WzZdLCBAeFs3XQkJIyA3NSA2CQlbMF0KKwlwc2h1ZmQJXCQweDkzLCBAeFs2XSwgQHRbNl0KKwltb3ZkcWEJQHhbNF0sIEB0WzRdCisJcHhvcglAeFs0XSwgQHhbNl0JCSMgNiA0CisJcHhvcglAeFszXSwgQHhbNF0JCSMgNCAzNzUJCVs2XQorCXB4b3IJQHhbN10sIEB4WzNdCQkjIDM3NSA3NTY9MzYKKwlweG9yCUB0WzVdLCBAeFs2XQkJIyA2NCA1CQlbN10KKwlweG9yCUB0WzJdLCBAeFszXQkJIyAzNiAyCisJcHhvcglAdFs0XSwgQHhbM10JCSMgMzYyIDQJCVs1XQorCXBzaHVmZAlcJDB4OTMsIEB0WzVdLCBAdFs1XQorX19fCisJCQkJCW15IEB5ID0gQHhbNyw1LDAsMiwxLDMsNCw2XTsKKyRjb2RlLj08PF9fXzsKKwkjIG11bHRpcGxpY2F0aW9uIGJ5IDB4MGIKKwlweG9yCUB5WzBdLCBAeVsxXQorCXB4b3IJQHRbMF0sIEB5WzBdCisJcHhvcglAdFsxXSwgQHlbMV0KKwlwc2h1ZmQJXCQweDkzLCBAdFsyXSwgQHRbMl0KKwlweG9yCUB0WzVdLCBAeVswXQorCXB4b3IJQHRbNl0sIEB5WzFdCisJcHhvcglAdFs3XSwgQHlbMF0KKwlwc2h1ZmQJXCQweDkzLCBAdFs0XSwgQHRbNF0KKwlweG9yCUB0WzZdLCBAdFs3XQkJIyBjbG9iYmVyIHRbN10KKwlweG9yCUB5WzBdLCBAeVsxXQorCisJcHhvcglAdFswXSwgQHlbM10KKwlwc2h1ZmQJXCQweDkzLCBAdFswXSwgQHRbMF0KKwlweG9yCUB0WzFdLCBAeVsyXQorCXB4b3IJQHRbMV0sIEB5WzRdCisJcHhvcglAdFsyXSwgQHlbMl0KKwlwc2h1ZmQJXCQweDkzLCBAdFsxXSwgQHRbMV0KKwlweG9yCUB0WzJdLCBAeVszXQorCXB4b3IJQHRbMl0sIEB5WzVdCisJcHhvcglAdFs3XSwgQHlbMl0KKwlwc2h1ZmQJXCQweDkzLCBAdFsyXSwgQHRbMl0KKwlweG9yCUB0WzNdLCBAeVszXQorCXB4b3IJQHRbM10sIEB5WzZdCisJcHhvcglAdFszXSwgQHlbNF0KKwlwc2h1ZmQJXCQweDkzLCBAdFszXSwgQHRbM10KKwlweG9yCUB0WzRdLCBAeVs3XQorCXB4b3IJQHRbNF0sIEB5WzVdCisJcHhvcglAdFs3XSwgQHlbN10KKwlweG9yCUB0WzVdLCBAeVszXQorCXB4b3IJQHRbNF0sIEB5WzRdCisJcHhvcglAdFs1XSwgQHRbN10JCSMgY2xvYmJlciB0WzddIGV2ZW4gbW9yZQorCisJcHhvcglAdFs3XSwgQHlbNV0KKwlwc2h1ZmQJXCQweDkzLCBAdFs0XSwgQHRbNF0KKwlweG9yCUB0WzddLCBAeVs2XQorCXB4b3IJQHRbN10sIEB5WzRdCisKKwlweG9yCUB0WzVdLCBAdFs3XQorCXBzaHVmZAlcJDB4OTMsIEB0WzVdLCBAdFs1XQorCXB4b3IJQHRbNl0sIEB0WzddCQkjIHJlc3RvcmUgdFs3XQorCisJIyBtdWx0aXBsaWNhdGlvbiBieSAweDBkCisJcHhvcglAeVs3XSwgQHlbNF0KKwlweG9yCUB0WzRdLCBAeVs3XQorCXBzaHVmZAlcJDB4OTMsIEB0WzZdLCBAdFs2XQorCXB4b3IJQHRbMF0sIEB5WzJdCisJcHhvcglAdFs1XSwgQHlbN10KKwlweG9yCUB0WzJdLCBAeVsyXQorCXBzaHVmZAlcJDB4OTMsIEB0WzddLCBAdFs3XQorCisJcHhvcglAeVsxXSwgQHlbM10KKwlweG9yCUB0WzFdLCBAeVsxXQorCXB4b3IJQHRbMF0sIEB5WzBdCisJcHhvcglAdFswXSwgQHlbM10KKwlweG9yCUB0WzVdLCBAeVsxXQorCXB4b3IJQHRbNV0sIEB5WzBdCisJcHhvcglAdFs3XSwgQHlbMV0KKwlwc2h1ZmQJXCQweDkzLCBAdFswXSwgQHRbMF0KKwlweG9yCUB0WzZdLCBAeVswXQorCXB4b3IJQHlbMV0sIEB5WzNdCisJcHhvcglAdFsxXSwgQHlbNF0KKwlwc2h1ZmQJXCQweDkzLCBAdFsxXSwgQHRbMV0KKworCXB4b3IJQHRbN10sIEB5WzddCisJcHhvcglAdFsyXSwgQHlbNF0KKwlweG9yCUB0WzJdLCBAeVs1XQorCXBzaHVmZAlcJDB4OTMsIEB0WzJdLCBAdFsyXQorCXB4b3IJQHRbNl0sIEB5WzJdCisJcHhvcglAdFszXSwgQHRbNl0JCSMgY2xvYmJlciB0WzZdCisJcHhvcglAeVs3XSwgQHlbNF0KKwlweG9yCUB0WzZdLCBAeVszXQorCisJcHhvcglAdFs2XSwgQHlbNl0KKwlweG9yCUB0WzVdLCBAeVs1XQorCXB4b3IJQHRbNF0sIEB5WzZdCisJcHNodWZkCVwkMHg5MywgQHRbNF0sIEB0WzRdCisJcHhvcglAdFs2XSwgQHlbNV0KKwlweG9yCUB0WzddLCBAeVs2XQorCXB4b3IJQHRbM10sIEB0WzZdCQkjIHJlc3RvcmUgdFs2XQorCisJcHNodWZkCVwkMHg5MywgQHRbNV0sIEB0WzVdCisJcHNodWZkCVwkMHg5MywgQHRbNl0sIEB0WzZdCisJcHNodWZkCVwkMHg5MywgQHRbN10sIEB0WzddCisJcHNodWZkCVwkMHg5MywgQHRbM10sIEB0WzNdCisKKwkjIG11bHRpcGxpY2F0aW9uIGJ5IDB4MDkKKwlweG9yCUB5WzFdLCBAeVs0XQorCXB4b3IJQHlbMV0sIEB0WzFdCQkjIHRbMV09eVsxXQorCXB4b3IJQHRbNV0sIEB0WzBdCQkjIGNsb2JiZXIgdFswXQorCXB4b3IJQHRbNV0sIEB0WzFdCisJcHhvcglAdFswXSwgQHlbM10KKwlweG9yCUB5WzBdLCBAdFswXQkJIyB0WzBdPXlbMF0KKwlweG9yCUB0WzZdLCBAdFsxXQorCXB4b3IJQHRbN10sIEB0WzZdCQkjIGNsb2JiZXIgdFs2XQorCXB4b3IJQHRbMV0sIEB5WzRdCisJcHhvcglAdFs0XSwgQHlbN10KKwlweG9yCUB5WzRdLCBAdFs0XQkJIyB0WzRdPXlbNF0KKwlweG9yCUB0WzNdLCBAeVs2XQorCXB4b3IJQHlbM10sIEB0WzNdCQkjIHRbM109eVszXQorCXB4b3IJQHRbMl0sIEB5WzVdCisJcHhvcglAeVsyXSwgQHRbMl0JCSMgdFsyXT15WzJdCisJcHhvcglAdFs3XSwgQHRbM10KKwlweG9yCUB5WzVdLCBAdFs1XQkJIyB0WzVdPXlbNV0KKwlweG9yCUB0WzZdLCBAdFsyXQorCXB4b3IJQHRbNl0sIEB0WzVdCisJcHhvcglAeVs2XSwgQHRbNl0JCSMgdFs2XT15WzZdCisJcHhvcglAeVs3XSwgQHRbN10JCSMgdFs3XT15WzddCisKKwltb3ZkcWEJQHRbMF0sQFhNTVswXQorCW1vdmRxYQlAdFsxXSxAWE1NWzFdCisJbW92ZHFhCUB0WzJdLEBYTU1bMl0KKwltb3ZkcWEJQHRbM10sQFhNTVszXQorCW1vdmRxYQlAdFs0XSxAWE1NWzRdCisJbW92ZHFhCUB0WzVdLEBYTU1bNV0KKwltb3ZkcWEJQHRbNl0sQFhNTVs2XQorCW1vdmRxYQlAdFs3XSxAWE1NWzddCitfX18KK30KKworc3ViIGFlc2VuYyB7CQkJCSMgbm90IHVzZWQKK215IEBiPUBfWzAuLjddOworbXkgQHQ9QF9bOC4uMTVdOworJGNvZGUuPTw8X19fOworCW1vdmRxYQkweDMwKCRjb25zdCksQHRbMF0JIyAuTFNSCitfX18KKwkmU2hpZnRSb3dzCShAYixAdFswXSk7CisJJlNib3gJCShAYixAdCk7CisJJk1peENvbHVtbnMJKEBiWzAsMSw0LDYsMyw3LDIsNV0sQHQpOworfQorCitzdWIgYWVzZW5jbGFzdCB7CQkJIyBub3QgdXNlZAorbXkgQGI9QF9bMC4uN107CitteSBAdD1AX1s4Li4xNV07CiskY29kZS49PDxfX187CisJbW92ZHFhCTB4NDAoJGNvbnN0KSxAdFswXQkjIC5MU1JNMAorX19fCisJJlNoaWZ0Um93cwkoQGIsQHRbMF0pOworCSZTYm94CQkoQGIsQHQpOworJGNvZGUuPTw8X19fCisJcHhvcgkweDAwKCRrZXkpLEBiWzBdCisJcHhvcgkweDEwKCRrZXkpLEBiWzFdCisJcHhvcgkweDIwKCRrZXkpLEBiWzRdCisJcHhvcgkweDMwKCRrZXkpLEBiWzZdCisJcHhvcgkweDQwKCRrZXkpLEBiWzNdCisJcHhvcgkweDUwKCRrZXkpLEBiWzddCisJcHhvcgkweDYwKCRrZXkpLEBiWzJdCisJcHhvcgkweDcwKCRrZXkpLEBiWzVdCitfX18KK30KKworc3ViIHN3YXBtb3ZlIHsKK215ICgkYSwkYiwkbiwkbWFzaywkdCk9QF87CiskY29kZS49PDxfX187CisJbW92ZHFhCSRiLCR0CisJcHNybHEJXCQkbiwkYgorCXB4b3IgIAkkYSwkYgorCXBhbmQJJG1hc2ssJGIKKwlweG9yCSRiLCRhCisJcHNsbHEJXCQkbiwkYgorCXB4b3IJJHQsJGIKK19fXworfQorc3ViIHN3YXBtb3ZlMnggeworbXkgKCRhMCwkYjAsJGExLCRiMSwkbiwkbWFzaywkdDAsJHQxKT1AXzsKKyRjb2RlLj08PF9fXzsKKwltb3ZkcWEJJGIwLCR0MAorCXBzcmxxCVwkJG4sJGIwCisJIG1vdmRxYQkkYjEsJHQxCisJIHBzcmxxCVwkJG4sJGIxCisJcHhvciAgCSRhMCwkYjAKKwkgcHhvciAgCSRhMSwkYjEKKwlwYW5kCSRtYXNrLCRiMAorCSBwYW5kCSRtYXNrLCRiMQorCXB4b3IJJGIwLCRhMAorCXBzbGxxCVwkJG4sJGIwCisJIHB4b3IJJGIxLCRhMQorCSBwc2xscQlcJCRuLCRiMQorCXB4b3IJJHQwLCRiMAorCSBweG9yCSR0MSwkYjEKK19fXworfQorCitzdWIgYml0c2xpY2UgeworbXkgQHg9cmV2ZXJzZShAX1swLi43XSk7CitteSAoJHQwLCR0MSwkdDIsJHQzKT1AX1s4Li4xMV07CiskY29kZS49PDxfX187CisJbW92ZHFhCTB4MDAoJGNvbnN0KSwkdDAJIyAuTEJTMAorCW1vdmRxYQkweDEwKCRjb25zdCksJHQxCSMgLkxCUzEKK19fXworCSZzd2FwbW92ZTJ4KEB4WzAsMSwyLDNdLDEsJHQwLCR0MiwkdDMpOworCSZzd2FwbW92ZTJ4KEB4WzQsNSw2LDddLDEsJHQwLCR0MiwkdDMpOworJGNvZGUuPTw8X19fOworCW1vdmRxYQkweDIwKCRjb25zdCksJHQwCSMgLkxCUzIKK19fXworCSZzd2FwbW92ZTJ4KEB4WzAsMiwxLDNdLDIsJHQxLCR0MiwkdDMpOworCSZzd2FwbW92ZTJ4KEB4WzQsNiw1LDddLDIsJHQxLCR0MiwkdDMpOworCisJJnN3YXBtb3ZlMngoQHhbMCw0LDEsNV0sNCwkdDAsJHQyLCR0Myk7CisJJnN3YXBtb3ZlMngoQHhbMiw2LDMsN10sNCwkdDAsJHQyLCR0Myk7Cit9CisKKyRjb2RlLj08PF9fXzsKKy50ZXh0CisKKy5leHRlcm4JYXNtX0FFU19lbmNyeXB0CisuZXh0ZXJuCWFzbV9BRVNfZGVjcnlwdAorCisudHlwZQlfYnNhZXNfZW5jcnlwdDgsXEBhYmktb21uaXBvdGVudAorLmFsaWduCTY0CitfYnNhZXNfZW5jcnlwdDg6CisJbGVhCS5MQlMwKCVyaXApLCAkY29uc3QJIyBjb25zdGFudHMgdGFibGUKKworCW1vdmRxYQkoJGtleSksIEBYTU1bOV0JCSMgcm91bmQgMCBrZXkKKwlsZWEJMHgxMCgka2V5KSwgJGtleQorCW1vdmRxYQkweDUwKCRjb25zdCksIEBYTU1bOF0JIyAuTE0wU1IKKwlweG9yCUBYTU1bOV0sIEBYTU1bMF0JIyB4b3Igd2l0aCByb3VuZDAga2V5CisJcHhvcglAWE1NWzldLCBAWE1NWzFdCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzBdCisJcHhvcglAWE1NWzldLCBAWE1NWzJdCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzFdCisJcHhvcglAWE1NWzldLCBAWE1NWzNdCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzJdCisJcHhvcglAWE1NWzldLCBAWE1NWzRdCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzNdCisJcHhvcglAWE1NWzldLCBAWE1NWzVdCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzRdCisJcHhvcglAWE1NWzldLCBAWE1NWzZdCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzVdCisJcHhvcglAWE1NWzldLCBAWE1NWzddCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzZdCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzddCitfYnNhZXNfZW5jcnlwdDhfYml0c2xpY2U6CitfX18KKwkmYml0c2xpY2UJKEBYTU1bMC4uNywgOC4uMTFdKTsKKyRjb2RlLj08PF9fXzsKKwlkZWMJJHJvdW5kcworCWptcAkuTGVuY19zYm94CisuYWxpZ24JMTYKKy5MZW5jX2xvb3A6CitfX18KKwkmU2hpZnRSb3dzCShAWE1NWzAuLjcsIDhdKTsKKyRjb2RlLj0iLkxlbmNfc2JveDpcbiI7CisJJlNib3gJCShAWE1NWzAuLjcsIDguLjE1XSk7CiskY29kZS49PDxfX187CisJZGVjCSRyb3VuZHMKKwlqbAkuTGVuY19kb25lCitfX18KKwkmTWl4Q29sdW1ucwkoQFhNTVswLDEsNCw2LDMsNywyLDUsIDguLjE1XSk7CiskY29kZS49PDxfX187CisJbW92ZHFhCTB4MzAoJGNvbnN0KSwgQFhNTVs4XQkjIC5MU1IKKwlqbnoJLkxlbmNfbG9vcAorCW1vdmRxYQkweDQwKCRjb25zdCksIEBYTU1bOF0JIyAuTFNSTTAKKwlqbXAJLkxlbmNfbG9vcAorLmFsaWduCTE2CisuTGVuY19kb25lOgorX19fCisJIyBvdXRwdXQgaW4gbHNiID4gW3QwLCB0MSwgdDQsIHQ2LCB0MywgdDcsIHQyLCB0NV0gPCBtc2IKKwkmYml0c2xpY2UJKEBYTU1bMCwxLDQsNiwzLDcsMiw1LCA4Li4xMV0pOworJGNvZGUuPTw8X19fOworCW1vdmRxYQkoJGtleSksIEBYTU1bOF0JCSMgbGFzdCByb3VuZCBrZXkKKwlweG9yCUBYTU1bOF0sIEBYTU1bNF0KKwlweG9yCUBYTU1bOF0sIEBYTU1bNl0KKwlweG9yCUBYTU1bOF0sIEBYTU1bM10KKwlweG9yCUBYTU1bOF0sIEBYTU1bN10KKwlweG9yCUBYTU1bOF0sIEBYTU1bMl0KKwlweG9yCUBYTU1bOF0sIEBYTU1bNV0KKwlweG9yCUBYTU1bOF0sIEBYTU1bMF0KKwlweG9yCUBYTU1bOF0sIEBYTU1bMV0KKwlyZXQKKy5zaXplCV9ic2Flc19lbmNyeXB0OCwuLV9ic2Flc19lbmNyeXB0OAorCisudHlwZQlfYnNhZXNfZGVjcnlwdDgsXEBhYmktb21uaXBvdGVudAorLmFsaWduCTY0CitfYnNhZXNfZGVjcnlwdDg6CisJbGVhCS5MQlMwKCVyaXApLCAkY29uc3QJIyBjb25zdGFudHMgdGFibGUKKworCW1vdmRxYQkoJGtleSksIEBYTU1bOV0JCSMgcm91bmQgMCBrZXkKKwlsZWEJMHgxMCgka2V5KSwgJGtleQorCW1vdmRxYQktMHgzMCgkY29uc3QpLCBAWE1NWzhdCSMgLkxNMElTUgorCXB4b3IJQFhNTVs5XSwgQFhNTVswXQkjIHhvciB3aXRoIHJvdW5kMCBrZXkKKwlweG9yCUBYTU1bOV0sIEBYTU1bMV0KKwkgcHNodWZiCUBYTU1bOF0sIEBYTU1bMF0KKwlweG9yCUBYTU1bOV0sIEBYTU1bMl0KKwkgcHNodWZiCUBYTU1bOF0sIEBYTU1bMV0KKwlweG9yCUBYTU1bOV0sIEBYTU1bM10KKwkgcHNodWZiCUBYTU1bOF0sIEBYTU1bMl0KKwlweG9yCUBYTU1bOV0sIEBYTU1bNF0KKwkgcHNodWZiCUBYTU1bOF0sIEBYTU1bM10KKwlweG9yCUBYTU1bOV0sIEBYTU1bNV0KKwkgcHNodWZiCUBYTU1bOF0sIEBYTU1bNF0KKwlweG9yCUBYTU1bOV0sIEBYTU1bNl0KKwkgcHNodWZiCUBYTU1bOF0sIEBYTU1bNV0KKwlweG9yCUBYTU1bOV0sIEBYTU1bN10KKwkgcHNodWZiCUBYTU1bOF0sIEBYTU1bNl0KKwkgcHNodWZiCUBYTU1bOF0sIEBYTU1bN10KK19fXworCSZiaXRzbGljZQkoQFhNTVswLi43LCA4Li4xMV0pOworJGNvZGUuPTw8X19fOworCWRlYwkkcm91bmRzCisJam1wCS5MZGVjX3Nib3gKKy5hbGlnbgkxNgorLkxkZWNfbG9vcDoKK19fXworCSZTaGlmdFJvd3MJKEBYTU1bMC4uNywgOF0pOworJGNvZGUuPSIuTGRlY19zYm94OlxuIjsKKwkmSW52U2JveAkoQFhNTVswLi43LCA4Li4xNV0pOworJGNvZGUuPTw8X19fOworCWRlYwkkcm91bmRzCisJamwJLkxkZWNfZG9uZQorX19fCisJJkludk1peENvbHVtbnMJKEBYTU1bMCwxLDYsNCwyLDcsMyw1LCA4Li4xNV0pOworJGNvZGUuPTw8X19fOworCW1vdmRxYQktMHgxMCgkY29uc3QpLCBAWE1NWzhdCSMgLkxJU1IKKwlqbnoJLkxkZWNfbG9vcAorCW1vdmRxYQktMHgyMCgkY29uc3QpLCBAWE1NWzhdCSMgLkxJU1JNMAorCWptcAkuTGRlY19sb29wCisuYWxpZ24JMTYKKy5MZGVjX2RvbmU6CitfX18KKwkmYml0c2xpY2UJKEBYTU1bMCwxLDYsNCwyLDcsMyw1LCA4Li4xMV0pOworJGNvZGUuPTw8X19fOworCW1vdmRxYQkoJGtleSksIEBYTU1bOF0JCSMgbGFzdCByb3VuZCBrZXkKKwlweG9yCUBYTU1bOF0sIEBYTU1bNl0KKwlweG9yCUBYTU1bOF0sIEBYTU1bNF0KKwlweG9yCUBYTU1bOF0sIEBYTU1bMl0KKwlweG9yCUBYTU1bOF0sIEBYTU1bN10KKwlweG9yCUBYTU1bOF0sIEBYTU1bM10KKwlweG9yCUBYTU1bOF0sIEBYTU1bNV0KKwlweG9yCUBYTU1bOF0sIEBYTU1bMF0KKwlweG9yCUBYTU1bOF0sIEBYTU1bMV0KKwlyZXQKKy5zaXplCV9ic2Flc19kZWNyeXB0OCwuLV9ic2Flc19kZWNyeXB0OAorX19fCit9Cit7CitteSAoJG91dCwkaW5wLCRyb3VuZHMsJGNvbnN0KT0oIiVyYXgiLCIlcmN4IiwiJXIxMGQiLCIlcjExIik7CisKK3N1YiBiaXRzbGljZV9rZXkgeworbXkgQHg9cmV2ZXJzZShAX1swLi43XSk7CitteSAoJGJzMCwkYnMxLCRiczIsJHQyLCR0Myk9QF9bOC4uMTJdOworCisJJnN3YXBtb3ZlCShAeFswLDFdLDEsJGJzMCwkdDIsJHQzKTsKKyRjb2RlLj08PF9fXzsKKwkjJnN3YXBtb3ZlKEB4WzIsM10sMSwkdDAsJHQyLCR0Myk7CisJbW92ZHFhCUB4WzBdLCBAeFsyXQorCW1vdmRxYQlAeFsxXSwgQHhbM10KK19fXworCSMmc3dhcG1vdmUyeChAeFs0LDUsNiw3XSwxLCR0MCwkdDIsJHQzKTsKKworCSZzd2FwbW92ZTJ4CShAeFswLDIsMSwzXSwyLCRiczEsJHQyLCR0Myk7CiskY29kZS49PDxfX187CisJIyZzd2FwbW92ZTJ4KEB4WzQsNiw1LDddLDIsJHQxLCR0MiwkdDMpOworCW1vdmRxYQlAeFswXSwgQHhbNF0KKwltb3ZkcWEJQHhbMl0sIEB4WzZdCisJbW92ZHFhCUB4WzFdLCBAeFs1XQorCW1vdmRxYQlAeFszXSwgQHhbN10KK19fXworCSZzd2FwbW92ZTJ4CShAeFswLDQsMSw1XSw0LCRiczIsJHQyLCR0Myk7CisJJnN3YXBtb3ZlMngJKEB4WzIsNiwzLDddLDQsJGJzMiwkdDIsJHQzKTsKK30KKworJGNvZGUuPTw8X19fOworLnR5cGUJX2JzYWVzX2tleV9jb252ZXJ0LFxAYWJpLW9tbmlwb3RlbnQKKy5hbGlnbgkxNgorX2JzYWVzX2tleV9jb252ZXJ0OgorCWxlYQkuTG1hc2tzKCVyaXApLCAkY29uc3QKKwltb3ZkcXUJKCRpbnApLCAleG1tNwkJIyBsb2FkIHJvdW5kIDAga2V5CisJbGVhCTB4MTAoJGlucCksICRpbnAKKwltb3ZkcWEJMHgwMCgkY29uc3QpLCAleG1tMAkjIDB4MDEuLi4KKwltb3ZkcWEJMHgxMCgkY29uc3QpLCAleG1tMQkjIDB4MDIuLi4KKwltb3ZkcWEJMHgyMCgkY29uc3QpLCAleG1tMgkjIDB4MDQuLi4KKwltb3ZkcWEJMHgzMCgkY29uc3QpLCAleG1tMwkjIDB4MDguLi4KKwltb3ZkcWEJMHg0MCgkY29uc3QpLCAleG1tNAkjIC5MTTAKKwlwY21wZXFkCSV4bW01LCAleG1tNQkJIyAuTE5PVAorCisJbW92ZHF1CSgkaW5wKSwgJXhtbTYJCSMgbG9hZCByb3VuZCAxIGtleQorCW1vdmRxYQkleG1tNywgKCRvdXQpCQkjIHNhdmUgcm91bmQgMCBrZXkKKwlsZWEJMHgxMCgkb3V0KSwgJG91dAorCWRlYwkkcm91bmRzCisJam1wCS5Ma2V5X2xvb3AKKy5hbGlnbgkxNgorLkxrZXlfbG9vcDoKKwlwc2h1ZmIJJXhtbTQsICV4bW02CQkjIC5MTTAKKworCW1vdmRxYQkleG1tMCwJJXhtbTgKKwltb3ZkcWEJJXhtbTEsCSV4bW05CisKKwlwYW5kCSV4bW02LAkleG1tOAorCXBhbmQJJXhtbTYsCSV4bW05CisJbW92ZHFhCSV4bW0yLAkleG1tMTAKKwlwY21wZXFiCSV4bW0wLAkleG1tOAorCXBzbGxxCVwkNCwJJXhtbTAJCSMgMHgxMC4uLgorCW1vdmRxYQkleG1tMywJJXhtbTExCisJcGNtcGVxYgkleG1tMSwJJXhtbTkKKwlwc2xscQlcJDQsCSV4bW0xCQkjIDB4MjAuLi4KKworCXBhbmQJJXhtbTYsCSV4bW0xMAorCXBhbmQJJXhtbTYsCSV4bW0xMQorCW1vdmRxYQkleG1tMCwJJXhtbTEyCisJcGNtcGVxYgkleG1tMiwJJXhtbTEwCisJcHNsbHEJXCQ0LAkleG1tMgkJIyAweDQwLi4uCisJbW92ZHFhCSV4bW0xLAkleG1tMTMKKwlwY21wZXFiCSV4bW0zLAkleG1tMTEKKwlwc2xscQlcJDQsCSV4bW0zCQkjIDB4ODAuLi4KKworCW1vdmRxYQkleG1tMiwJJXhtbTE0CisJbW92ZHFhCSV4bW0zLAkleG1tMTUKKwkgcHhvcgkleG1tNSwJJXhtbTgJCSMgInBub3QiCisJIHB4b3IJJXhtbTUsCSV4bW05CisKKwlwYW5kCSV4bW02LAkleG1tMTIKKwlwYW5kCSV4bW02LAkleG1tMTMKKwkgbW92ZHFhCSV4bW04LCAweDAwKCRvdXQpCSMgd3JpdGUgYml0LXNsaWNlZCByb3VuZCBrZXkKKwlwY21wZXFiCSV4bW0wLAkleG1tMTIKKwlwc3JscQlcJDQsCSV4bW0wCQkjIDB4MDEuLi4KKwkgbW92ZHFhCSV4bW05LCAweDEwKCRvdXQpCisJcGNtcGVxYgkleG1tMSwJJXhtbTEzCisJcHNybHEJXCQ0LAkleG1tMQkJIyAweDAyLi4uCisJIGxlYQkweDEwKCRpbnApLCAkaW5wCisKKwlwYW5kCSV4bW02LAkleG1tMTQKKwlwYW5kCSV4bW02LAkleG1tMTUKKwkgbW92ZHFhCSV4bW0xMCwgMHgyMCgkb3V0KQorCXBjbXBlcWIJJXhtbTIsCSV4bW0xNAorCXBzcmxxCVwkNCwJJXhtbTIJCSMgMHgwNC4uLgorCSBtb3ZkcWEJJXhtbTExLCAweDMwKCRvdXQpCisJcGNtcGVxYgkleG1tMywJJXhtbTE1CisJcHNybHEJXCQ0LAkleG1tMwkJIyAweDA4Li4uCisJIG1vdmRxdQkoJGlucCksICV4bW02CQkjIGxvYWQgbmV4dCByb3VuZCBrZXkKKworCXB4b3IJJXhtbTUsICV4bW0xMwkJIyAicG5vdCIKKwlweG9yCSV4bW01LCAleG1tMTQKKwltb3ZkcWEJJXhtbTEyLCAweDQwKCRvdXQpCisJbW92ZHFhCSV4bW0xMywgMHg1MCgkb3V0KQorCW1vdmRxYQkleG1tMTQsIDB4NjAoJG91dCkKKwltb3ZkcWEJJXhtbTE1LCAweDcwKCRvdXQpCisJbGVhCTB4ODAoJG91dCksJG91dAorCWRlYwkkcm91bmRzCisJam56CS5Ma2V5X2xvb3AKKworCW1vdmRxYQkweDUwKCRjb25zdCksICV4bW03CSMgLkw2MworCSNtb3ZkcWEJJXhtbTYsICgkb3V0KQkJIyBkb24ndCBzYXZlIGxhc3Qgcm91bmQga2V5CisJcmV0Cisuc2l6ZQlfYnNhZXNfa2V5X2NvbnZlcnQsLi1fYnNhZXNfa2V5X2NvbnZlcnQKK19fXworfQorCitpZiAoMCAmJiAhJHdpbjY0KSB7CSMgZm9sbG93aW5nIGZvdXIgZnVuY3Rpb25zIGFyZSB1bnN1cHBvcnRlZCBpbnRlcmZhY2UKKwkJCSMgdXNlZCBmb3IgYmVuY2htYXJraW5nLi4uCiskY29kZS49PDxfX187CisuZ2xvYmwJYnNhZXNfZW5jX2tleV9jb252ZXJ0CisudHlwZQlic2Flc19lbmNfa2V5X2NvbnZlcnQsXEBmdW5jdGlvbiwyCisuYWxpZ24JMTYKK2JzYWVzX2VuY19rZXlfY29udmVydDoKKwltb3YJMjQwKCRpbnApLCVyMTBkCQkjIHBhc3Mgcm91bmRzCisJbW92CSRpbnAsJXJjeAkJIyBwYXNzIGtleQorCW1vdgkkb3V0LCVyYXgJCSMgcGFzcyBrZXkgc2NoZWR1bGUKKwljYWxsCV9ic2Flc19rZXlfY29udmVydAorCXB4b3IJJXhtbTYsJXhtbTcJCSMgZml4IHVwIGxhc3Qgcm91bmQga2V5CisJbW92ZHFhCSV4bW03LCglcmF4KQkJIyBzYXZlIGxhc3Qgcm91bmQga2V5CisJcmV0Cisuc2l6ZQlic2Flc19lbmNfa2V5X2NvbnZlcnQsLi1ic2Flc19lbmNfa2V5X2NvbnZlcnQKKworLmdsb2JsCWJzYWVzX2VuY3J5cHRfMTI4CisudHlwZQlic2Flc19lbmNyeXB0XzEyOCxcQGZ1bmN0aW9uLDQKKy5hbGlnbgkxNgorYnNhZXNfZW5jcnlwdF8xMjg6CisuTGVuYzEyOF9sb29wOgorCW1vdmRxdQkweDAwKCRpbnApLCBAWE1NWzBdCSMgbG9hZCBpbnB1dAorCW1vdmRxdQkweDEwKCRpbnApLCBAWE1NWzFdCisJbW92ZHF1CTB4MjAoJGlucCksIEBYTU1bMl0KKwltb3ZkcXUJMHgzMCgkaW5wKSwgQFhNTVszXQorCW1vdmRxdQkweDQwKCRpbnApLCBAWE1NWzRdCisJbW92ZHF1CTB4NTAoJGlucCksIEBYTU1bNV0KKwltb3ZkcXUJMHg2MCgkaW5wKSwgQFhNTVs2XQorCW1vdmRxdQkweDcwKCRpbnApLCBAWE1NWzddCisJbW92CSRrZXksICVyYXgJCSMgcGFzcyB0aGUgJGtleQorCWxlYQkweDgwKCRpbnApLCAkaW5wCisJbW92CVwkMTAsJXIxMGQKKworCWNhbGwJX2JzYWVzX2VuY3J5cHQ4CisKKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJbW92ZHF1CUBYTU1bNF0sIDB4MjAoJG91dCkKKwltb3ZkcXUJQFhNTVs2XSwgMHgzMCgkb3V0KQorCW1vdmRxdQlAWE1NWzNdLCAweDQwKCRvdXQpCisJbW92ZHF1CUBYTU1bN10sIDB4NTAoJG91dCkKKwltb3ZkcXUJQFhNTVsyXSwgMHg2MCgkb3V0KQorCW1vdmRxdQlAWE1NWzVdLCAweDcwKCRvdXQpCisJbGVhCTB4ODAoJG91dCksICRvdXQKKwlzdWIJXCQweDgwLCRsZW4KKwlqYQkuTGVuYzEyOF9sb29wCisJcmV0Cisuc2l6ZQlic2Flc19lbmNyeXB0XzEyOCwuLWJzYWVzX2VuY3J5cHRfMTI4CisKKy5nbG9ibAlic2Flc19kZWNfa2V5X2NvbnZlcnQKKy50eXBlCWJzYWVzX2RlY19rZXlfY29udmVydCxcQGZ1bmN0aW9uLDIKKy5hbGlnbgkxNgorYnNhZXNfZGVjX2tleV9jb252ZXJ0OgorCW1vdgkyNDAoJGlucCksJXIxMGQJCSMgcGFzcyByb3VuZHMKKwltb3YJJGlucCwlcmN4CQkjIHBhc3Mga2V5CisJbW92CSRvdXQsJXJheAkJIyBwYXNzIGtleSBzY2hlZHVsZQorCWNhbGwJX2JzYWVzX2tleV9jb252ZXJ0CisJcHhvcgkoJG91dCksJXhtbTcJCSMgZml4IHVwIHJvdW5kIDAga2V5CisJbW92ZHFhCSV4bW02LCglcmF4KQkJIyBzYXZlIGxhc3Qgcm91bmQga2V5CisJbW92ZHFhCSV4bW03LCgkb3V0KQorCXJldAorLnNpemUJYnNhZXNfZGVjX2tleV9jb252ZXJ0LC4tYnNhZXNfZGVjX2tleV9jb252ZXJ0CisKKy5nbG9ibAlic2Flc19kZWNyeXB0XzEyOAorLnR5cGUJYnNhZXNfZGVjcnlwdF8xMjgsXEBmdW5jdGlvbiw0CisuYWxpZ24JMTYKK2JzYWVzX2RlY3J5cHRfMTI4OgorLkxkZWMxMjhfbG9vcDoKKwltb3ZkcXUJMHgwMCgkaW5wKSwgQFhNTVswXQkjIGxvYWQgaW5wdXQKKwltb3ZkcXUJMHgxMCgkaW5wKSwgQFhNTVsxXQorCW1vdmRxdQkweDIwKCRpbnApLCBAWE1NWzJdCisJbW92ZHF1CTB4MzAoJGlucCksIEBYTU1bM10KKwltb3ZkcXUJMHg0MCgkaW5wKSwgQFhNTVs0XQorCW1vdmRxdQkweDUwKCRpbnApLCBAWE1NWzVdCisJbW92ZHF1CTB4NjAoJGlucCksIEBYTU1bNl0KKwltb3ZkcXUJMHg3MCgkaW5wKSwgQFhNTVs3XQorCW1vdgkka2V5LCAlcmF4CQkjIHBhc3MgdGhlICRrZXkKKwlsZWEJMHg4MCgkaW5wKSwgJGlucAorCW1vdglcJDEwLCVyMTBkCisKKwljYWxsCV9ic2Flc19kZWNyeXB0OAorCisJbW92ZHF1CUBYTU1bMF0sIDB4MDAoJG91dCkJIyB3cml0ZSBvdXRwdXQKKwltb3ZkcXUJQFhNTVsxXSwgMHgxMCgkb3V0KQorCW1vdmRxdQlAWE1NWzZdLCAweDIwKCRvdXQpCisJbW92ZHF1CUBYTU1bNF0sIDB4MzAoJG91dCkKKwltb3ZkcXUJQFhNTVsyXSwgMHg0MCgkb3V0KQorCW1vdmRxdQlAWE1NWzddLCAweDUwKCRvdXQpCisJbW92ZHF1CUBYTU1bM10sIDB4NjAoJG91dCkKKwltb3ZkcXUJQFhNTVs1XSwgMHg3MCgkb3V0KQorCWxlYQkweDgwKCRvdXQpLCAkb3V0CisJc3ViCVwkMHg4MCwkbGVuCisJamEJLkxkZWMxMjhfbG9vcAorCXJldAorLnNpemUJYnNhZXNfZGVjcnlwdF8xMjgsLi1ic2Flc19kZWNyeXB0XzEyOAorX19fCit9Cit7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIE9wZW5TU0wgaW50ZXJmYWNlCisjCitteSAoJGFyZzEsJGFyZzIsJGFyZzMsJGFyZzQsJGFyZzUsJGFyZzYpPSR3aW42NAk/ICgiJXJjeCIsIiVyZHgiLCIlcjgiLCIlcjkiLCIlcjEwIiwiJXIxMWQiKQorCQkJCQkJOiAoIiVyZGkiLCIlcnNpIiwiJXJkeCIsIiVyY3giLCIlcjgiLCIlcjlkIik7CitteSAoJGlucCwkb3V0LCRsZW4sJGtleSk9KCIlcjEyIiwiJXIxMyIsIiVyMTQiLCIlcjE1Iik7CisKK2lmICgkZWNiKSB7CiskY29kZS49PDxfX187CisuZ2xvYmwJYnNhZXNfZWNiX2VuY3J5cHRfYmxvY2tzCisudHlwZQlic2Flc19lY2JfZW5jcnlwdF9ibG9ja3MsXEBhYmktb21uaXBvdGVudAorLmFsaWduCTE2Citic2Flc19lY2JfZW5jcnlwdF9ibG9ja3M6CisJbW92CSVyc3AsICVyYXgKKy5MZWNiX2VuY19wcm9sb2d1ZToKKwlwdXNoCSVyYnAKKwlwdXNoCSVyYngKKwlwdXNoCSVyMTIKKwlwdXNoCSVyMTMKKwlwdXNoCSVyMTQKKwlwdXNoCSVyMTUKKwlsZWEJLTB4NDgoJXJzcCksJXJzcAorX19fCiskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisJbGVhCS0weGEwKCVyc3ApLCAlcnNwCisJbW92YXBzCSV4bW02LCAweDQwKCVyc3ApCisJbW92YXBzCSV4bW03LCAweDUwKCVyc3ApCisJbW92YXBzCSV4bW04LCAweDYwKCVyc3ApCisJbW92YXBzCSV4bW05LCAweDcwKCVyc3ApCisJbW92YXBzCSV4bW0xMCwgMHg4MCglcnNwKQorCW1vdmFwcwkleG1tMTEsIDB4OTAoJXJzcCkKKwltb3ZhcHMJJXhtbTEyLCAweGEwKCVyc3ApCisJbW92YXBzCSV4bW0xMywgMHhiMCglcnNwKQorCW1vdmFwcwkleG1tMTQsIDB4YzAoJXJzcCkKKwltb3ZhcHMJJXhtbTE1LCAweGQwKCVyc3ApCisuTGVjYl9lbmNfYm9keToKK19fXworJGNvZGUuPTw8X19fOworCW1vdgklcnNwLCVyYnAJCSMgYmFja3VwICVyc3AKKwltb3YJMjQwKCRhcmc0KSwlZWF4CQkjIHJvdW5kcworCW1vdgkkYXJnMSwkaW5wCQkjIGJhY2t1cCBhcmd1bWVudHMKKwltb3YJJGFyZzIsJG91dAorCW1vdgkkYXJnMywkbGVuCisJbW92CSRhcmc0LCRrZXkKKwljbXAJXCQ4LCRhcmczCisJamIJLkxlY2JfZW5jX3Nob3J0CisKKwltb3YJJWVheCwlZWJ4CQkjIGJhY2t1cCByb3VuZHMKKwlzaGwJXCQ3LCVyYXgJCSMgMTI4IGJ5dGVzIHBlciBpbm5lciByb3VuZCBrZXkKKwlzdWIJXCRgMTI4LTMyYCwlcmF4CQkjIHNpemUgb2YgYml0LXNsaWNlZCBrZXkgc2NoZWR1bGUKKwlzdWIJJXJheCwlcnNwCisJbW92CSVyc3AsJXJheAkJIyBwYXNzIGtleSBzY2hlZHVsZQorCW1vdgkka2V5LCVyY3gJCSMgcGFzcyBrZXkKKwltb3YJJWVieCwlcjEwZAkJIyBwYXNzIHJvdW5kcworCWNhbGwJX2JzYWVzX2tleV9jb252ZXJ0CisJcHhvcgkleG1tNiwleG1tNwkJIyBmaXggdXAgbGFzdCByb3VuZCBrZXkKKwltb3ZkcWEJJXhtbTcsKCVyYXgpCQkjIHNhdmUgbGFzdCByb3VuZCBrZXkKKworCXN1YglcJDgsJGxlbgorLkxlY2JfZW5jX2xvb3A6CisJbW92ZHF1CTB4MDAoJGlucCksIEBYTU1bMF0JIyBsb2FkIGlucHV0CisJbW92ZHF1CTB4MTAoJGlucCksIEBYTU1bMV0KKwltb3ZkcXUJMHgyMCgkaW5wKSwgQFhNTVsyXQorCW1vdmRxdQkweDMwKCRpbnApLCBAWE1NWzNdCisJbW92ZHF1CTB4NDAoJGlucCksIEBYTU1bNF0KKwltb3ZkcXUJMHg1MCgkaW5wKSwgQFhNTVs1XQorCW1vdgklcnNwLCAlcmF4CQkjIHBhc3Mga2V5IHNjaGVkdWxlCisJbW92ZHF1CTB4NjAoJGlucCksIEBYTU1bNl0KKwltb3YJJWVieCwlcjEwZAkJIyBwYXNzIHJvdW5kcworCW1vdmRxdQkweDcwKCRpbnApLCBAWE1NWzddCisJbGVhCTB4ODAoJGlucCksICRpbnAKKworCWNhbGwJX2JzYWVzX2VuY3J5cHQ4CisKKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJbW92ZHF1CUBYTU1bNF0sIDB4MjAoJG91dCkKKwltb3ZkcXUJQFhNTVs2XSwgMHgzMCgkb3V0KQorCW1vdmRxdQlAWE1NWzNdLCAweDQwKCRvdXQpCisJbW92ZHF1CUBYTU1bN10sIDB4NTAoJG91dCkKKwltb3ZkcXUJQFhNTVsyXSwgMHg2MCgkb3V0KQorCW1vdmRxdQlAWE1NWzVdLCAweDcwKCRvdXQpCisJbGVhCTB4ODAoJG91dCksICRvdXQKKwlzdWIJXCQ4LCRsZW4KKwlqbmMJLkxlY2JfZW5jX2xvb3AKKworCWFkZAlcJDgsJGxlbgorCWp6CS5MZWNiX2VuY19kb25lCisKKwltb3ZkcXUJMHgwMCgkaW5wKSwgQFhNTVswXQkjIGxvYWQgaW5wdXQKKwltb3YJJXJzcCwgJXJheAkJIyBwYXNzIGtleSBzY2hlZHVsZQorCW1vdgklZWJ4LCVyMTBkCQkjIHBhc3Mgcm91bmRzCisJY21wCVwkMiwkbGVuCisJamIJLkxlY2JfZW5jX29uZQorCW1vdmRxdQkweDEwKCRpbnApLCBAWE1NWzFdCisJamUJLkxlY2JfZW5jX3R3bworCW1vdmRxdQkweDIwKCRpbnApLCBAWE1NWzJdCisJY21wCVwkNCwkbGVuCisJamIJLkxlY2JfZW5jX3RocmVlCisJbW92ZHF1CTB4MzAoJGlucCksIEBYTU1bM10KKwlqZQkuTGVjYl9lbmNfZm91cgorCW1vdmRxdQkweDQwKCRpbnApLCBAWE1NWzRdCisJY21wCVwkNiwkbGVuCisJamIJLkxlY2JfZW5jX2ZpdmUKKwltb3ZkcXUJMHg1MCgkaW5wKSwgQFhNTVs1XQorCWplCS5MZWNiX2VuY19zaXgKKwltb3ZkcXUJMHg2MCgkaW5wKSwgQFhNTVs2XQorCWNhbGwJX2JzYWVzX2VuY3J5cHQ4CisJbW92ZHF1CUBYTU1bMF0sIDB4MDAoJG91dCkJIyB3cml0ZSBvdXRwdXQKKwltb3ZkcXUJQFhNTVsxXSwgMHgxMCgkb3V0KQorCW1vdmRxdQlAWE1NWzRdLCAweDIwKCRvdXQpCisJbW92ZHF1CUBYTU1bNl0sIDB4MzAoJG91dCkKKwltb3ZkcXUJQFhNTVszXSwgMHg0MCgkb3V0KQorCW1vdmRxdQlAWE1NWzddLCAweDUwKCRvdXQpCisJbW92ZHF1CUBYTU1bMl0sIDB4NjAoJG91dCkKKwlqbXAJLkxlY2JfZW5jX2RvbmUKKy5hbGlnbgkxNgorLkxlY2JfZW5jX3NpeDoKKwljYWxsCV9ic2Flc19lbmNyeXB0OAorCW1vdmRxdQlAWE1NWzBdLCAweDAwKCRvdXQpCSMgd3JpdGUgb3V0cHV0CisJbW92ZHF1CUBYTU1bMV0sIDB4MTAoJG91dCkKKwltb3ZkcXUJQFhNTVs0XSwgMHgyMCgkb3V0KQorCW1vdmRxdQlAWE1NWzZdLCAweDMwKCRvdXQpCisJbW92ZHF1CUBYTU1bM10sIDB4NDAoJG91dCkKKwltb3ZkcXUJQFhNTVs3XSwgMHg1MCgkb3V0KQorCWptcAkuTGVjYl9lbmNfZG9uZQorLmFsaWduCTE2CisuTGVjYl9lbmNfZml2ZToKKwljYWxsCV9ic2Flc19lbmNyeXB0OAorCW1vdmRxdQlAWE1NWzBdLCAweDAwKCRvdXQpCSMgd3JpdGUgb3V0cHV0CisJbW92ZHF1CUBYTU1bMV0sIDB4MTAoJG91dCkKKwltb3ZkcXUJQFhNTVs0XSwgMHgyMCgkb3V0KQorCW1vdmRxdQlAWE1NWzZdLCAweDMwKCRvdXQpCisJbW92ZHF1CUBYTU1bM10sIDB4NDAoJG91dCkKKwlqbXAJLkxlY2JfZW5jX2RvbmUKKy5hbGlnbgkxNgorLkxlY2JfZW5jX2ZvdXI6CisJY2FsbAlfYnNhZXNfZW5jcnlwdDgKKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJbW92ZHF1CUBYTU1bNF0sIDB4MjAoJG91dCkKKwltb3ZkcXUJQFhNTVs2XSwgMHgzMCgkb3V0KQorCWptcAkuTGVjYl9lbmNfZG9uZQorLmFsaWduCTE2CisuTGVjYl9lbmNfdGhyZWU6CisJY2FsbAlfYnNhZXNfZW5jcnlwdDgKKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJbW92ZHF1CUBYTU1bNF0sIDB4MjAoJG91dCkKKwlqbXAJLkxlY2JfZW5jX2RvbmUKKy5hbGlnbgkxNgorLkxlY2JfZW5jX3R3bzoKKwljYWxsCV9ic2Flc19lbmNyeXB0OAorCW1vdmRxdQlAWE1NWzBdLCAweDAwKCRvdXQpCSMgd3JpdGUgb3V0cHV0CisJbW92ZHF1CUBYTU1bMV0sIDB4MTAoJG91dCkKKwlqbXAJLkxlY2JfZW5jX2RvbmUKKy5hbGlnbgkxNgorLkxlY2JfZW5jX29uZToKKwljYWxsCV9ic2Flc19lbmNyeXB0OAorCW1vdmRxdQlAWE1NWzBdLCAweDAwKCRvdXQpCSMgd3JpdGUgb3V0cHV0CisJam1wCS5MZWNiX2VuY19kb25lCisuYWxpZ24JMTYKKy5MZWNiX2VuY19zaG9ydDoKKwlsZWEJKCRpbnApLCAkYXJnMQorCWxlYQkoJG91dCksICRhcmcyCisJbGVhCSgka2V5KSwgJGFyZzMKKwljYWxsCWFzbV9BRVNfZW5jcnlwdAorCWxlYQkxNigkaW5wKSwgJGlucAorCWxlYQkxNigkb3V0KSwgJG91dAorCWRlYwkkbGVuCisJam56CS5MZWNiX2VuY19zaG9ydAorCisuTGVjYl9lbmNfZG9uZToKKwlsZWEJKCVyc3ApLCVyYXgKKwlweG9yCSV4bW0wLCAleG1tMAorLkxlY2JfZW5jX2J6ZXJvOgkJCSMgd2lwZSBrZXkgc2NoZWR1bGUgW2lmIGFueV0KKwltb3ZkcWEJJXhtbTAsIDB4MDAoJXJheCkKKwltb3ZkcWEJJXhtbTAsIDB4MTAoJXJheCkKKwlsZWEJMHgyMCglcmF4KSwgJXJheAorCWNtcAklcmF4LCAlcmJwCisJamIJLkxlY2JfZW5jX2J6ZXJvCisKKwlsZWEJKCVyYnApLCVyc3AJCSMgcmVzdG9yZSAlcnNwCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKwltb3ZhcHMJMHg0MCglcmJwKSwgJXhtbTYKKwltb3ZhcHMJMHg1MCglcmJwKSwgJXhtbTcKKwltb3ZhcHMJMHg2MCglcmJwKSwgJXhtbTgKKwltb3ZhcHMJMHg3MCglcmJwKSwgJXhtbTkKKwltb3ZhcHMJMHg4MCglcmJwKSwgJXhtbTEwCisJbW92YXBzCTB4OTAoJXJicCksICV4bW0xMQorCW1vdmFwcwkweGEwKCVyYnApLCAleG1tMTIKKwltb3ZhcHMJMHhiMCglcmJwKSwgJXhtbTEzCisJbW92YXBzCTB4YzAoJXJicCksICV4bW0xNAorCW1vdmFwcwkweGQwKCVyYnApLCAleG1tMTUKKwlsZWEJMHhhMCglcmJwKSwgJXJzcAorX19fCiskY29kZS49PDxfX187CisJbW92CTB4NDgoJXJzcCksICVyMTUKKwltb3YJMHg1MCglcnNwKSwgJXIxNAorCW1vdgkweDU4KCVyc3ApLCAlcjEzCisJbW92CTB4NjAoJXJzcCksICVyMTIKKwltb3YJMHg2OCglcnNwKSwgJXJieAorCW1vdgkweDcwKCVyc3ApLCAlcmF4CisJbGVhCTB4NzgoJXJzcCksICVyc3AKKwltb3YJJXJheCwgJXJicAorLkxlY2JfZW5jX2VwaWxvZ3VlOgorCXJldAorLnNpemUJYnNhZXNfZWNiX2VuY3J5cHRfYmxvY2tzLC4tYnNhZXNfZWNiX2VuY3J5cHRfYmxvY2tzCisKKy5nbG9ibAlic2Flc19lY2JfZGVjcnlwdF9ibG9ja3MKKy50eXBlCWJzYWVzX2VjYl9kZWNyeXB0X2Jsb2NrcyxcQGFiaS1vbW5pcG90ZW50CisuYWxpZ24JMTYKK2JzYWVzX2VjYl9kZWNyeXB0X2Jsb2NrczoKKwltb3YJJXJzcCwgJXJheAorLkxlY2JfZGVjX3Byb2xvZ3VlOgorCXB1c2gJJXJicAorCXB1c2gJJXJieAorCXB1c2gJJXIxMgorCXB1c2gJJXIxMworCXB1c2gJJXIxNAorCXB1c2gJJXIxNQorCWxlYQktMHg0OCglcnNwKSwlcnNwCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKwlsZWEJLTB4YTAoJXJzcCksICVyc3AKKwltb3ZhcHMJJXhtbTYsIDB4NDAoJXJzcCkKKwltb3ZhcHMJJXhtbTcsIDB4NTAoJXJzcCkKKwltb3ZhcHMJJXhtbTgsIDB4NjAoJXJzcCkKKwltb3ZhcHMJJXhtbTksIDB4NzAoJXJzcCkKKwltb3ZhcHMJJXhtbTEwLCAweDgwKCVyc3ApCisJbW92YXBzCSV4bW0xMSwgMHg5MCglcnNwKQorCW1vdmFwcwkleG1tMTIsIDB4YTAoJXJzcCkKKwltb3ZhcHMJJXhtbTEzLCAweGIwKCVyc3ApCisJbW92YXBzCSV4bW0xNCwgMHhjMCglcnNwKQorCW1vdmFwcwkleG1tMTUsIDB4ZDAoJXJzcCkKKy5MZWNiX2RlY19ib2R5OgorX19fCiskY29kZS49PDxfX187CisJbW92CSVyc3AsJXJicAkJIyBiYWNrdXAgJXJzcAorCW1vdgkyNDAoJGFyZzQpLCVlYXgJCSMgcm91bmRzCisJbW92CSRhcmcxLCRpbnAJCSMgYmFja3VwIGFyZ3VtZW50cworCW1vdgkkYXJnMiwkb3V0CisJbW92CSRhcmczLCRsZW4KKwltb3YJJGFyZzQsJGtleQorCWNtcAlcJDgsJGFyZzMKKwlqYgkuTGVjYl9kZWNfc2hvcnQKKworCW1vdgklZWF4LCVlYngJCSMgYmFja3VwIHJvdW5kcworCXNobAlcJDcsJXJheAkJIyAxMjggYnl0ZXMgcGVyIGlubmVyIHJvdW5kIGtleQorCXN1YglcJGAxMjgtMzJgLCVyYXgJCSMgc2l6ZSBvZiBiaXQtc2xpY2VkIGtleSBzY2hlZHVsZQorCXN1YgklcmF4LCVyc3AKKwltb3YJJXJzcCwlcmF4CQkjIHBhc3Mga2V5IHNjaGVkdWxlCisJbW92CSRrZXksJXJjeAkJIyBwYXNzIGtleQorCW1vdgklZWJ4LCVyMTBkCQkjIHBhc3Mgcm91bmRzCisJY2FsbAlfYnNhZXNfa2V5X2NvbnZlcnQKKwlweG9yCSglcnNwKSwleG1tNwkJIyBmaXggdXAgMCByb3VuZCBrZXkKKwltb3ZkcWEJJXhtbTYsKCVyYXgpCQkjIHNhdmUgbGFzdCByb3VuZCBrZXkKKwltb3ZkcWEJJXhtbTcsKCVyc3ApCisKKwlzdWIJXCQ4LCRsZW4KKy5MZWNiX2RlY19sb29wOgorCW1vdmRxdQkweDAwKCRpbnApLCBAWE1NWzBdCSMgbG9hZCBpbnB1dAorCW1vdmRxdQkweDEwKCRpbnApLCBAWE1NWzFdCisJbW92ZHF1CTB4MjAoJGlucCksIEBYTU1bMl0KKwltb3ZkcXUJMHgzMCgkaW5wKSwgQFhNTVszXQorCW1vdmRxdQkweDQwKCRpbnApLCBAWE1NWzRdCisJbW92ZHF1CTB4NTAoJGlucCksIEBYTU1bNV0KKwltb3YJJXJzcCwgJXJheAkJIyBwYXNzIGtleSBzY2hlZHVsZQorCW1vdmRxdQkweDYwKCRpbnApLCBAWE1NWzZdCisJbW92CSVlYngsJXIxMGQJCSMgcGFzcyByb3VuZHMKKwltb3ZkcXUJMHg3MCgkaW5wKSwgQFhNTVs3XQorCWxlYQkweDgwKCRpbnApLCAkaW5wCisKKwljYWxsCV9ic2Flc19kZWNyeXB0OAorCisJbW92ZHF1CUBYTU1bMF0sIDB4MDAoJG91dCkJIyB3cml0ZSBvdXRwdXQKKwltb3ZkcXUJQFhNTVsxXSwgMHgxMCgkb3V0KQorCW1vdmRxdQlAWE1NWzZdLCAweDIwKCRvdXQpCisJbW92ZHF1CUBYTU1bNF0sIDB4MzAoJG91dCkKKwltb3ZkcXUJQFhNTVsyXSwgMHg0MCgkb3V0KQorCW1vdmRxdQlAWE1NWzddLCAweDUwKCRvdXQpCisJbW92ZHF1CUBYTU1bM10sIDB4NjAoJG91dCkKKwltb3ZkcXUJQFhNTVs1XSwgMHg3MCgkb3V0KQorCWxlYQkweDgwKCRvdXQpLCAkb3V0CisJc3ViCVwkOCwkbGVuCisJam5jCS5MZWNiX2RlY19sb29wCisKKwlhZGQJXCQ4LCRsZW4KKwlqegkuTGVjYl9kZWNfZG9uZQorCisJbW92ZHF1CTB4MDAoJGlucCksIEBYTU1bMF0JIyBsb2FkIGlucHV0CisJbW92CSVyc3AsICVyYXgJCSMgcGFzcyBrZXkgc2NoZWR1bGUKKwltb3YJJWVieCwlcjEwZAkJIyBwYXNzIHJvdW5kcworCWNtcAlcJDIsJGxlbgorCWpiCS5MZWNiX2RlY19vbmUKKwltb3ZkcXUJMHgxMCgkaW5wKSwgQFhNTVsxXQorCWplCS5MZWNiX2RlY190d28KKwltb3ZkcXUJMHgyMCgkaW5wKSwgQFhNTVsyXQorCWNtcAlcJDQsJGxlbgorCWpiCS5MZWNiX2RlY190aHJlZQorCW1vdmRxdQkweDMwKCRpbnApLCBAWE1NWzNdCisJamUJLkxlY2JfZGVjX2ZvdXIKKwltb3ZkcXUJMHg0MCgkaW5wKSwgQFhNTVs0XQorCWNtcAlcJDYsJGxlbgorCWpiCS5MZWNiX2RlY19maXZlCisJbW92ZHF1CTB4NTAoJGlucCksIEBYTU1bNV0KKwlqZQkuTGVjYl9kZWNfc2l4CisJbW92ZHF1CTB4NjAoJGlucCksIEBYTU1bNl0KKwljYWxsCV9ic2Flc19kZWNyeXB0OAorCW1vdmRxdQlAWE1NWzBdLCAweDAwKCRvdXQpCSMgd3JpdGUgb3V0cHV0CisJbW92ZHF1CUBYTU1bMV0sIDB4MTAoJG91dCkKKwltb3ZkcXUJQFhNTVs2XSwgMHgyMCgkb3V0KQorCW1vdmRxdQlAWE1NWzRdLCAweDMwKCRvdXQpCisJbW92ZHF1CUBYTU1bMl0sIDB4NDAoJG91dCkKKwltb3ZkcXUJQFhNTVs3XSwgMHg1MCgkb3V0KQorCW1vdmRxdQlAWE1NWzNdLCAweDYwKCRvdXQpCisJam1wCS5MZWNiX2RlY19kb25lCisuYWxpZ24JMTYKKy5MZWNiX2RlY19zaXg6CisJY2FsbAlfYnNhZXNfZGVjcnlwdDgKKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJbW92ZHF1CUBYTU1bNl0sIDB4MjAoJG91dCkKKwltb3ZkcXUJQFhNTVs0XSwgMHgzMCgkb3V0KQorCW1vdmRxdQlAWE1NWzJdLCAweDQwKCRvdXQpCisJbW92ZHF1CUBYTU1bN10sIDB4NTAoJG91dCkKKwlqbXAJLkxlY2JfZGVjX2RvbmUKKy5hbGlnbgkxNgorLkxlY2JfZGVjX2ZpdmU6CisJY2FsbAlfYnNhZXNfZGVjcnlwdDgKKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJbW92ZHF1CUBYTU1bNl0sIDB4MjAoJG91dCkKKwltb3ZkcXUJQFhNTVs0XSwgMHgzMCgkb3V0KQorCW1vdmRxdQlAWE1NWzJdLCAweDQwKCRvdXQpCisJam1wCS5MZWNiX2RlY19kb25lCisuYWxpZ24JMTYKKy5MZWNiX2RlY19mb3VyOgorCWNhbGwJX2JzYWVzX2RlY3J5cHQ4CisJbW92ZHF1CUBYTU1bMF0sIDB4MDAoJG91dCkJIyB3cml0ZSBvdXRwdXQKKwltb3ZkcXUJQFhNTVsxXSwgMHgxMCgkb3V0KQorCW1vdmRxdQlAWE1NWzZdLCAweDIwKCRvdXQpCisJbW92ZHF1CUBYTU1bNF0sIDB4MzAoJG91dCkKKwlqbXAJLkxlY2JfZGVjX2RvbmUKKy5hbGlnbgkxNgorLkxlY2JfZGVjX3RocmVlOgorCWNhbGwJX2JzYWVzX2RlY3J5cHQ4CisJbW92ZHF1CUBYTU1bMF0sIDB4MDAoJG91dCkJIyB3cml0ZSBvdXRwdXQKKwltb3ZkcXUJQFhNTVsxXSwgMHgxMCgkb3V0KQorCW1vdmRxdQlAWE1NWzZdLCAweDIwKCRvdXQpCisJam1wCS5MZWNiX2RlY19kb25lCisuYWxpZ24JMTYKKy5MZWNiX2RlY190d286CisJY2FsbAlfYnNhZXNfZGVjcnlwdDgKKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJam1wCS5MZWNiX2RlY19kb25lCisuYWxpZ24JMTYKKy5MZWNiX2RlY19vbmU6CisJY2FsbAlfYnNhZXNfZGVjcnlwdDgKKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCWptcAkuTGVjYl9kZWNfZG9uZQorLmFsaWduCTE2CisuTGVjYl9kZWNfc2hvcnQ6CisJbGVhCSgkaW5wKSwgJGFyZzEKKwlsZWEJKCRvdXQpLCAkYXJnMgorCWxlYQkoJGtleSksICRhcmczCisJY2FsbAlhc21fQUVTX2RlY3J5cHQKKwlsZWEJMTYoJGlucCksICRpbnAKKwlsZWEJMTYoJG91dCksICRvdXQKKwlkZWMJJGxlbgorCWpuegkuTGVjYl9kZWNfc2hvcnQKKworLkxlY2JfZGVjX2RvbmU6CisJbGVhCSglcnNwKSwlcmF4CisJcHhvcgkleG1tMCwgJXhtbTAKKy5MZWNiX2RlY19iemVybzoJCQkjIHdpcGUga2V5IHNjaGVkdWxlIFtpZiBhbnldCisJbW92ZHFhCSV4bW0wLCAweDAwKCVyYXgpCisJbW92ZHFhCSV4bW0wLCAweDEwKCVyYXgpCisJbGVhCTB4MjAoJXJheCksICVyYXgKKwljbXAJJXJheCwgJXJicAorCWpiCS5MZWNiX2RlY19iemVybworCisJbGVhCSglcmJwKSwlcnNwCQkjIHJlc3RvcmUgJXJzcAorX19fCiskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisJbW92YXBzCTB4NDAoJXJicCksICV4bW02CisJbW92YXBzCTB4NTAoJXJicCksICV4bW03CisJbW92YXBzCTB4NjAoJXJicCksICV4bW04CisJbW92YXBzCTB4NzAoJXJicCksICV4bW05CisJbW92YXBzCTB4ODAoJXJicCksICV4bW0xMAorCW1vdmFwcwkweDkwKCVyYnApLCAleG1tMTEKKwltb3ZhcHMJMHhhMCglcmJwKSwgJXhtbTEyCisJbW92YXBzCTB4YjAoJXJicCksICV4bW0xMworCW1vdmFwcwkweGMwKCVyYnApLCAleG1tMTQKKwltb3ZhcHMJMHhkMCglcmJwKSwgJXhtbTE1CisJbGVhCTB4YTAoJXJicCksICVyc3AKK19fXworJGNvZGUuPTw8X19fOworCW1vdgkweDQ4KCVyc3ApLCAlcjE1CisJbW92CTB4NTAoJXJzcCksICVyMTQKKwltb3YJMHg1OCglcnNwKSwgJXIxMworCW1vdgkweDYwKCVyc3ApLCAlcjEyCisJbW92CTB4NjgoJXJzcCksICVyYngKKwltb3YJMHg3MCglcnNwKSwgJXJheAorCWxlYQkweDc4KCVyc3ApLCAlcnNwCisJbW92CSVyYXgsICVyYnAKKy5MZWNiX2RlY19lcGlsb2d1ZToKKwlyZXQKKy5zaXplCWJzYWVzX2VjYl9kZWNyeXB0X2Jsb2NrcywuLWJzYWVzX2VjYl9kZWNyeXB0X2Jsb2NrcworX19fCit9CiskY29kZS49PDxfX187CisuZXh0ZXJuCWFzbV9BRVNfY2JjX2VuY3J5cHQKKy5nbG9ibAlic2Flc19jYmNfZW5jcnlwdAorLnR5cGUJYnNhZXNfY2JjX2VuY3J5cHQsXEBhYmktb21uaXBvdGVudAorLmFsaWduCTE2Citic2Flc19jYmNfZW5jcnlwdDoKK19fXworJGNvZGUuPTw8X19fIGlmICgkd2luNjQpOworCW1vdgk0OCglcnNwKSwkYXJnNgkJIyBwdWxsIGRpcmVjdGlvbiBmbGFnCitfX18KKyRjb2RlLj08PF9fXzsKKwljbXAJXCQwLCRhcmc2CisJam5lCWFzbV9BRVNfY2JjX2VuY3J5cHQKKwljbXAJXCQxMjgsJGFyZzMKKwlqYglhc21fQUVTX2NiY19lbmNyeXB0CisKKwltb3YJJXJzcCwgJXJheAorLkxjYmNfZGVjX3Byb2xvZ3VlOgorCXB1c2gJJXJicAorCXB1c2gJJXJieAorCXB1c2gJJXIxMgorCXB1c2gJJXIxMworCXB1c2gJJXIxNAorCXB1c2gJJXIxNQorCWxlYQktMHg0OCglcnNwKSwgJXJzcAorX19fCiskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisJbW92CTB4YTAoJXJzcCksJGFyZzUJIyBwdWxsIGl2cAorCWxlYQktMHhhMCglcnNwKSwgJXJzcAorCW1vdmFwcwkleG1tNiwgMHg0MCglcnNwKQorCW1vdmFwcwkleG1tNywgMHg1MCglcnNwKQorCW1vdmFwcwkleG1tOCwgMHg2MCglcnNwKQorCW1vdmFwcwkleG1tOSwgMHg3MCglcnNwKQorCW1vdmFwcwkleG1tMTAsIDB4ODAoJXJzcCkKKwltb3ZhcHMJJXhtbTExLCAweDkwKCVyc3ApCisJbW92YXBzCSV4bW0xMiwgMHhhMCglcnNwKQorCW1vdmFwcwkleG1tMTMsIDB4YjAoJXJzcCkKKwltb3ZhcHMJJXhtbTE0LCAweGMwKCVyc3ApCisJbW92YXBzCSV4bW0xNSwgMHhkMCglcnNwKQorLkxjYmNfZGVjX2JvZHk6CitfX18KKyRjb2RlLj08PF9fXzsKKwltb3YJJXJzcCwgJXJicAkJIyBiYWNrdXAgJXJzcAorCW1vdgkyNDAoJGFyZzQpLCAlZWF4CSMgcm91bmRzCisJbW92CSRhcmcxLCAkaW5wCQkjIGJhY2t1cCBhcmd1bWVudHMKKwltb3YJJGFyZzIsICRvdXQKKwltb3YJJGFyZzMsICRsZW4KKwltb3YJJGFyZzQsICRrZXkKKwltb3YJJGFyZzUsICVyYngKKwlzaHIJXCQ0LCAkbGVuCQkjIGJ5dGVzIHRvIGJsb2NrcworCisJbW92CSVlYXgsICVlZHgJCSMgcm91bmRzCisJc2hsCVwkNywgJXJheAkJIyAxMjggYnl0ZXMgcGVyIGlubmVyIHJvdW5kIGtleQorCXN1YglcJGAxMjgtMzJgLCAlcmF4CSMgc2l6ZSBvZiBiaXQtc2xpY2VkIGtleSBzY2hlZHVsZQorCXN1YgklcmF4LCAlcnNwCisKKwltb3YJJXJzcCwgJXJheAkJIyBwYXNzIGtleSBzY2hlZHVsZQorCW1vdgkka2V5LCAlcmN4CQkjIHBhc3Mga2V5CisJbW92CSVlZHgsICVyMTBkCQkjIHBhc3Mgcm91bmRzCisJY2FsbAlfYnNhZXNfa2V5X2NvbnZlcnQKKwlweG9yCSglcnNwKSwleG1tNwkJIyBmaXggdXAgMCByb3VuZCBrZXkKKwltb3ZkcWEJJXhtbTYsKCVyYXgpCQkjIHNhdmUgbGFzdCByb3VuZCBrZXkKKwltb3ZkcWEJJXhtbTcsKCVyc3ApCisKKwltb3ZkcXUJKCVyYngpLCBAWE1NWzE1XQkjIGxvYWQgSVYKKwlzdWIJXCQ4LCRsZW4KKy5MY2JjX2RlY19sb29wOgorCW1vdmRxdQkweDAwKCRpbnApLCBAWE1NWzBdCSMgbG9hZCBpbnB1dAorCW1vdmRxdQkweDEwKCRpbnApLCBAWE1NWzFdCisJbW92ZHF1CTB4MjAoJGlucCksIEBYTU1bMl0KKwltb3ZkcXUJMHgzMCgkaW5wKSwgQFhNTVszXQorCW1vdmRxdQkweDQwKCRpbnApLCBAWE1NWzRdCisJbW92ZHF1CTB4NTAoJGlucCksIEBYTU1bNV0KKwltb3YJJXJzcCwgJXJheAkJIyBwYXNzIGtleSBzY2hlZHVsZQorCW1vdmRxdQkweDYwKCRpbnApLCBAWE1NWzZdCisJbW92CSVlZHgsJXIxMGQJCSMgcGFzcyByb3VuZHMKKwltb3ZkcXUJMHg3MCgkaW5wKSwgQFhNTVs3XQorCW1vdmRxYQlAWE1NWzE1XSwgMHgyMCglcmJwKQkjIHB1dCBhc2lkZSBJVgorCisJY2FsbAlfYnNhZXNfZGVjcnlwdDgKKworCXB4b3IJMHgyMCglcmJwKSwgQFhNTVswXQkjIF49IElWCisJbW92ZHF1CTB4MDAoJGlucCksIEBYTU1bOF0JIyByZS1sb2FkIGlucHV0CisJbW92ZHF1CTB4MTAoJGlucCksIEBYTU1bOV0KKwlweG9yCUBYTU1bOF0sIEBYTU1bMV0KKwltb3ZkcXUJMHgyMCgkaW5wKSwgQFhNTVsxMF0KKwlweG9yCUBYTU1bOV0sIEBYTU1bNl0KKwltb3ZkcXUJMHgzMCgkaW5wKSwgQFhNTVsxMV0KKwlweG9yCUBYTU1bMTBdLCBAWE1NWzRdCisJbW92ZHF1CTB4NDAoJGlucCksIEBYTU1bMTJdCisJcHhvcglAWE1NWzExXSwgQFhNTVsyXQorCW1vdmRxdQkweDUwKCRpbnApLCBAWE1NWzEzXQorCXB4b3IJQFhNTVsxMl0sIEBYTU1bN10KKwltb3ZkcXUJMHg2MCgkaW5wKSwgQFhNTVsxNF0KKwlweG9yCUBYTU1bMTNdLCBAWE1NWzNdCisJbW92ZHF1CTB4NzAoJGlucCksIEBYTU1bMTVdCSMgSVYKKwlweG9yCUBYTU1bMTRdLCBAWE1NWzVdCisJbW92ZHF1CUBYTU1bMF0sIDB4MDAoJG91dCkJIyB3cml0ZSBvdXRwdXQKKwlsZWEJMHg4MCgkaW5wKSwgJGlucAorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJbW92ZHF1CUBYTU1bNl0sIDB4MjAoJG91dCkKKwltb3ZkcXUJQFhNTVs0XSwgMHgzMCgkb3V0KQorCW1vdmRxdQlAWE1NWzJdLCAweDQwKCRvdXQpCisJbW92ZHF1CUBYTU1bN10sIDB4NTAoJG91dCkKKwltb3ZkcXUJQFhNTVszXSwgMHg2MCgkb3V0KQorCW1vdmRxdQlAWE1NWzVdLCAweDcwKCRvdXQpCisJbGVhCTB4ODAoJG91dCksICRvdXQKKwlzdWIJXCQ4LCRsZW4KKwlqbmMJLkxjYmNfZGVjX2xvb3AKKworCWFkZAlcJDgsJGxlbgorCWp6CS5MY2JjX2RlY19kb25lCisKKwltb3ZkcXUJMHgwMCgkaW5wKSwgQFhNTVswXQkjIGxvYWQgaW5wdXQKKwltb3YJJXJzcCwgJXJheAkJIyBwYXNzIGtleSBzY2hlZHVsZQorCW1vdgklZWR4LCAlcjEwZAkJIyBwYXNzIHJvdW5kcworCWNtcAlcJDIsJGxlbgorCWpiCS5MY2JjX2RlY19vbmUKKwltb3ZkcXUJMHgxMCgkaW5wKSwgQFhNTVsxXQorCWplCS5MY2JjX2RlY190d28KKwltb3ZkcXUJMHgyMCgkaW5wKSwgQFhNTVsyXQorCWNtcAlcJDQsJGxlbgorCWpiCS5MY2JjX2RlY190aHJlZQorCW1vdmRxdQkweDMwKCRpbnApLCBAWE1NWzNdCisJamUJLkxjYmNfZGVjX2ZvdXIKKwltb3ZkcXUJMHg0MCgkaW5wKSwgQFhNTVs0XQorCWNtcAlcJDYsJGxlbgorCWpiCS5MY2JjX2RlY19maXZlCisJbW92ZHF1CTB4NTAoJGlucCksIEBYTU1bNV0KKwlqZQkuTGNiY19kZWNfc2l4CisJbW92ZHF1CTB4NjAoJGlucCksIEBYTU1bNl0KKwltb3ZkcWEJQFhNTVsxNV0sIDB4MjAoJXJicCkJIyBwdXQgYXNpZGUgSVYKKwljYWxsCV9ic2Flc19kZWNyeXB0OAorCXB4b3IJMHgyMCglcmJwKSwgQFhNTVswXQkjIF49IElWCisJbW92ZHF1CTB4MDAoJGlucCksIEBYTU1bOF0JIyByZS1sb2FkIGlucHV0CisJbW92ZHF1CTB4MTAoJGlucCksIEBYTU1bOV0KKwlweG9yCUBYTU1bOF0sIEBYTU1bMV0KKwltb3ZkcXUJMHgyMCgkaW5wKSwgQFhNTVsxMF0KKwlweG9yCUBYTU1bOV0sIEBYTU1bNl0KKwltb3ZkcXUJMHgzMCgkaW5wKSwgQFhNTVsxMV0KKwlweG9yCUBYTU1bMTBdLCBAWE1NWzRdCisJbW92ZHF1CTB4NDAoJGlucCksIEBYTU1bMTJdCisJcHhvcglAWE1NWzExXSwgQFhNTVsyXQorCW1vdmRxdQkweDUwKCRpbnApLCBAWE1NWzEzXQorCXB4b3IJQFhNTVsxMl0sIEBYTU1bN10KKwltb3ZkcXUJMHg2MCgkaW5wKSwgQFhNTVsxNV0JIyBJVgorCXB4b3IJQFhNTVsxM10sIEBYTU1bM10KKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJbW92ZHF1CUBYTU1bNl0sIDB4MjAoJG91dCkKKwltb3ZkcXUJQFhNTVs0XSwgMHgzMCgkb3V0KQorCW1vdmRxdQlAWE1NWzJdLCAweDQwKCRvdXQpCisJbW92ZHF1CUBYTU1bN10sIDB4NTAoJG91dCkKKwltb3ZkcXUJQFhNTVszXSwgMHg2MCgkb3V0KQorCWptcAkuTGNiY19kZWNfZG9uZQorLmFsaWduCTE2CisuTGNiY19kZWNfc2l4OgorCW1vdmRxYQlAWE1NWzE1XSwgMHgyMCglcmJwKQkjIHB1dCBhc2lkZSBJVgorCWNhbGwJX2JzYWVzX2RlY3J5cHQ4CisJcHhvcgkweDIwKCVyYnApLCBAWE1NWzBdCSMgXj0gSVYKKwltb3ZkcXUJMHgwMCgkaW5wKSwgQFhNTVs4XQkjIHJlLWxvYWQgaW5wdXQKKwltb3ZkcXUJMHgxMCgkaW5wKSwgQFhNTVs5XQorCXB4b3IJQFhNTVs4XSwgQFhNTVsxXQorCW1vdmRxdQkweDIwKCRpbnApLCBAWE1NWzEwXQorCXB4b3IJQFhNTVs5XSwgQFhNTVs2XQorCW1vdmRxdQkweDMwKCRpbnApLCBAWE1NWzExXQorCXB4b3IJQFhNTVsxMF0sIEBYTU1bNF0KKwltb3ZkcXUJMHg0MCgkaW5wKSwgQFhNTVsxMl0KKwlweG9yCUBYTU1bMTFdLCBAWE1NWzJdCisJbW92ZHF1CTB4NTAoJGlucCksIEBYTU1bMTVdCSMgSVYKKwlweG9yCUBYTU1bMTJdLCBAWE1NWzddCisJbW92ZHF1CUBYTU1bMF0sIDB4MDAoJG91dCkJIyB3cml0ZSBvdXRwdXQKKwltb3ZkcXUJQFhNTVsxXSwgMHgxMCgkb3V0KQorCW1vdmRxdQlAWE1NWzZdLCAweDIwKCRvdXQpCisJbW92ZHF1CUBYTU1bNF0sIDB4MzAoJG91dCkKKwltb3ZkcXUJQFhNTVsyXSwgMHg0MCgkb3V0KQorCW1vdmRxdQlAWE1NWzddLCAweDUwKCRvdXQpCisJam1wCS5MY2JjX2RlY19kb25lCisuYWxpZ24JMTYKKy5MY2JjX2RlY19maXZlOgorCW1vdmRxYQlAWE1NWzE1XSwgMHgyMCglcmJwKQkjIHB1dCBhc2lkZSBJVgorCWNhbGwJX2JzYWVzX2RlY3J5cHQ4CisJcHhvcgkweDIwKCVyYnApLCBAWE1NWzBdCSMgXj0gSVYKKwltb3ZkcXUJMHgwMCgkaW5wKSwgQFhNTVs4XQkjIHJlLWxvYWQgaW5wdXQKKwltb3ZkcXUJMHgxMCgkaW5wKSwgQFhNTVs5XQorCXB4b3IJQFhNTVs4XSwgQFhNTVsxXQorCW1vdmRxdQkweDIwKCRpbnApLCBAWE1NWzEwXQorCXB4b3IJQFhNTVs5XSwgQFhNTVs2XQorCW1vdmRxdQkweDMwKCRpbnApLCBAWE1NWzExXQorCXB4b3IJQFhNTVsxMF0sIEBYTU1bNF0KKwltb3ZkcXUJMHg0MCgkaW5wKSwgQFhNTVsxNV0JIyBJVgorCXB4b3IJQFhNTVsxMV0sIEBYTU1bMl0KKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJbW92ZHF1CUBYTU1bNl0sIDB4MjAoJG91dCkKKwltb3ZkcXUJQFhNTVs0XSwgMHgzMCgkb3V0KQorCW1vdmRxdQlAWE1NWzJdLCAweDQwKCRvdXQpCisJam1wCS5MY2JjX2RlY19kb25lCisuYWxpZ24JMTYKKy5MY2JjX2RlY19mb3VyOgorCW1vdmRxYQlAWE1NWzE1XSwgMHgyMCglcmJwKQkjIHB1dCBhc2lkZSBJVgorCWNhbGwJX2JzYWVzX2RlY3J5cHQ4CisJcHhvcgkweDIwKCVyYnApLCBAWE1NWzBdCSMgXj0gSVYKKwltb3ZkcXUJMHgwMCgkaW5wKSwgQFhNTVs4XQkjIHJlLWxvYWQgaW5wdXQKKwltb3ZkcXUJMHgxMCgkaW5wKSwgQFhNTVs5XQorCXB4b3IJQFhNTVs4XSwgQFhNTVsxXQorCW1vdmRxdQkweDIwKCRpbnApLCBAWE1NWzEwXQorCXB4b3IJQFhNTVs5XSwgQFhNTVs2XQorCW1vdmRxdQkweDMwKCRpbnApLCBAWE1NWzE1XQkjIElWCisJcHhvcglAWE1NWzEwXSwgQFhNTVs0XQorCW1vdmRxdQlAWE1NWzBdLCAweDAwKCRvdXQpCSMgd3JpdGUgb3V0cHV0CisJbW92ZHF1CUBYTU1bMV0sIDB4MTAoJG91dCkKKwltb3ZkcXUJQFhNTVs2XSwgMHgyMCgkb3V0KQorCW1vdmRxdQlAWE1NWzRdLCAweDMwKCRvdXQpCisJam1wCS5MY2JjX2RlY19kb25lCisuYWxpZ24JMTYKKy5MY2JjX2RlY190aHJlZToKKwltb3ZkcWEJQFhNTVsxNV0sIDB4MjAoJXJicCkJIyBwdXQgYXNpZGUgSVYKKwljYWxsCV9ic2Flc19kZWNyeXB0OAorCXB4b3IJMHgyMCglcmJwKSwgQFhNTVswXQkjIF49IElWCisJbW92ZHF1CTB4MDAoJGlucCksIEBYTU1bOF0JIyByZS1sb2FkIGlucHV0CisJbW92ZHF1CTB4MTAoJGlucCksIEBYTU1bOV0KKwlweG9yCUBYTU1bOF0sIEBYTU1bMV0KKwltb3ZkcXUJMHgyMCgkaW5wKSwgQFhNTVsxNV0JIyBJVgorCXB4b3IJQFhNTVs5XSwgQFhNTVs2XQorCW1vdmRxdQlAWE1NWzBdLCAweDAwKCRvdXQpCSMgd3JpdGUgb3V0cHV0CisJbW92ZHF1CUBYTU1bMV0sIDB4MTAoJG91dCkKKwltb3ZkcXUJQFhNTVs2XSwgMHgyMCgkb3V0KQorCWptcAkuTGNiY19kZWNfZG9uZQorLmFsaWduCTE2CisuTGNiY19kZWNfdHdvOgorCW1vdmRxYQlAWE1NWzE1XSwgMHgyMCglcmJwKQkjIHB1dCBhc2lkZSBJVgorCWNhbGwJX2JzYWVzX2RlY3J5cHQ4CisJcHhvcgkweDIwKCVyYnApLCBAWE1NWzBdCSMgXj0gSVYKKwltb3ZkcXUJMHgwMCgkaW5wKSwgQFhNTVs4XQkjIHJlLWxvYWQgaW5wdXQKKwltb3ZkcXUJMHgxMCgkaW5wKSwgQFhNTVsxNV0JIyBJVgorCXB4b3IJQFhNTVs4XSwgQFhNTVsxXQorCW1vdmRxdQlAWE1NWzBdLCAweDAwKCRvdXQpCSMgd3JpdGUgb3V0cHV0CisJbW92ZHF1CUBYTU1bMV0sIDB4MTAoJG91dCkKKwlqbXAJLkxjYmNfZGVjX2RvbmUKKy5hbGlnbgkxNgorLkxjYmNfZGVjX29uZToKKwlsZWEJKCRpbnApLCAkYXJnMQorCWxlYQkweDIwKCVyYnApLCAkYXJnMgkjIGJ1ZmZlciBvdXRwdXQKKwlsZWEJKCRrZXkpLCAkYXJnMworCWNhbGwJYXNtX0FFU19kZWNyeXB0CQkjIGRvZXNuJ3QgdG91Y2ggJXhtbQorCXB4b3IJMHgyMCglcmJwKSwgQFhNTVsxNV0JIyBePSBJVgorCW1vdmRxdQlAWE1NWzE1XSwgKCRvdXQpCSMgd3JpdGUgb3V0cHV0CisJbW92ZHFhCUBYTU1bMF0sIEBYTU1bMTVdCSMgSVYKKworLkxjYmNfZGVjX2RvbmU6CisJbW92ZHF1CUBYTU1bMTVdLCAoJXJieCkJIyByZXR1cm4gSVYKKwlsZWEJKCVyc3ApLCAlcmF4CisJcHhvcgkleG1tMCwgJXhtbTAKKy5MY2JjX2RlY19iemVybzoJCQkjIHdpcGUga2V5IHNjaGVkdWxlIFtpZiBhbnldCisJbW92ZHFhCSV4bW0wLCAweDAwKCVyYXgpCisJbW92ZHFhCSV4bW0wLCAweDEwKCVyYXgpCisJbGVhCTB4MjAoJXJheCksICVyYXgKKwljbXAJJXJheCwgJXJicAorCWphCS5MY2JjX2RlY19iemVybworCisJbGVhCSglcmJwKSwlcnNwCQkjIHJlc3RvcmUgJXJzcAorX19fCiskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisJbW92YXBzCTB4NDAoJXJicCksICV4bW02CisJbW92YXBzCTB4NTAoJXJicCksICV4bW03CisJbW92YXBzCTB4NjAoJXJicCksICV4bW04CisJbW92YXBzCTB4NzAoJXJicCksICV4bW05CisJbW92YXBzCTB4ODAoJXJicCksICV4bW0xMAorCW1vdmFwcwkweDkwKCVyYnApLCAleG1tMTEKKwltb3ZhcHMJMHhhMCglcmJwKSwgJXhtbTEyCisJbW92YXBzCTB4YjAoJXJicCksICV4bW0xMworCW1vdmFwcwkweGMwKCVyYnApLCAleG1tMTQKKwltb3ZhcHMJMHhkMCglcmJwKSwgJXhtbTE1CisJbGVhCTB4YTAoJXJicCksICVyc3AKK19fXworJGNvZGUuPTw8X19fOworCW1vdgkweDQ4KCVyc3ApLCAlcjE1CisJbW92CTB4NTAoJXJzcCksICVyMTQKKwltb3YJMHg1OCglcnNwKSwgJXIxMworCW1vdgkweDYwKCVyc3ApLCAlcjEyCisJbW92CTB4NjgoJXJzcCksICVyYngKKwltb3YJMHg3MCglcnNwKSwgJXJheAorCWxlYQkweDc4KCVyc3ApLCAlcnNwCisJbW92CSVyYXgsICVyYnAKKy5MY2JjX2RlY19lcGlsb2d1ZToKKwlyZXQKKy5zaXplCWJzYWVzX2NiY19lbmNyeXB0LC4tYnNhZXNfY2JjX2VuY3J5cHQKKworLmdsb2JsCWJzYWVzX2N0cjMyX2VuY3J5cHRfYmxvY2tzCisudHlwZQlic2Flc19jdHIzMl9lbmNyeXB0X2Jsb2NrcyxcQGFiaS1vbW5pcG90ZW50CisuYWxpZ24JMTYKK2JzYWVzX2N0cjMyX2VuY3J5cHRfYmxvY2tzOgorCW1vdgklcnNwLCAlcmF4CisuTGN0cl9lbmNfcHJvbG9ndWU6CisJcHVzaAklcmJwCisJcHVzaAklcmJ4CisJcHVzaAklcjEyCisJcHVzaAklcjEzCisJcHVzaAklcjE0CisJcHVzaAklcjE1CisJbGVhCS0weDQ4KCVyc3ApLCAlcnNwCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKwltb3YJMHhhMCglcnNwKSwkYXJnNQkjIHB1bGwgaXZwCisJbGVhCS0weGEwKCVyc3ApLCAlcnNwCisJbW92YXBzCSV4bW02LCAweDQwKCVyc3ApCisJbW92YXBzCSV4bW03LCAweDUwKCVyc3ApCisJbW92YXBzCSV4bW04LCAweDYwKCVyc3ApCisJbW92YXBzCSV4bW05LCAweDcwKCVyc3ApCisJbW92YXBzCSV4bW0xMCwgMHg4MCglcnNwKQorCW1vdmFwcwkleG1tMTEsIDB4OTAoJXJzcCkKKwltb3ZhcHMJJXhtbTEyLCAweGEwKCVyc3ApCisJbW92YXBzCSV4bW0xMywgMHhiMCglcnNwKQorCW1vdmFwcwkleG1tMTQsIDB4YzAoJXJzcCkKKwltb3ZhcHMJJXhtbTE1LCAweGQwKCVyc3ApCisuTGN0cl9lbmNfYm9keToKK19fXworJGNvZGUuPTw8X19fOworCW1vdgklcnNwLCAlcmJwCQkjIGJhY2t1cCAlcnNwCisJbW92ZHF1CSgkYXJnNSksICV4bW0wCQkjIGxvYWQgY291bnRlcgorCW1vdgkyNDAoJGFyZzQpLCAlZWF4CSMgcm91bmRzCisJbW92CSRhcmcxLCAkaW5wCQkjIGJhY2t1cCBhcmd1bWVudHMKKwltb3YJJGFyZzIsICRvdXQKKwltb3YJJGFyZzMsICRsZW4KKwltb3YJJGFyZzQsICRrZXkKKwltb3ZkcWEJJXhtbTAsIDB4MjAoJXJicCkJIyBjb3B5IGNvdW50ZXIKKwljbXAJXCQ4LCAkYXJnMworCWpiCS5MY3RyX2VuY19zaG9ydAorCisJbW92CSVlYXgsICVlYngJCSMgcm91bmRzCisJc2hsCVwkNywgJXJheAkJIyAxMjggYnl0ZXMgcGVyIGlubmVyIHJvdW5kIGtleQorCXN1YglcJGAxMjgtMzJgLCAlcmF4CSMgc2l6ZSBvZiBiaXQtc2xpY2VkIGtleSBzY2hlZHVsZQorCXN1YgklcmF4LCAlcnNwCisKKwltb3YJJXJzcCwgJXJheAkJIyBwYXNzIGtleSBzY2hlZHVsZQorCW1vdgkka2V5LCAlcmN4CQkjIHBhc3Mga2V5CisJbW92CSVlYngsICVyMTBkCQkjIHBhc3Mgcm91bmRzCisJY2FsbAlfYnNhZXNfa2V5X2NvbnZlcnQKKwlweG9yCSV4bW02LCV4bW03CQkjIGZpeCB1cCBsYXN0IHJvdW5kIGtleQorCW1vdmRxYQkleG1tNywoJXJheCkJCSMgc2F2ZSBsYXN0IHJvdW5kIGtleQorCisJbW92ZHFhCSglcnNwKSwgQFhNTVs5XQkJIyBsb2FkIHJvdW5kMCBrZXkKKwlsZWEJLkxBREQxKCVyaXApLCAlcjExCisJbW92ZHFhCTB4MjAoJXJicCksIEBYTU1bMF0JIyBjb3VudGVyIGNvcHkKKwltb3ZkcWEJLTB4MjAoJXIxMSksIEBYTU1bOF0JIyAuTFNXUFVQCisJcHNodWZiCUBYTU1bOF0sIEBYTU1bOV0JIyBieXRlIHN3YXAgdXBwZXIgcGFydAorCXBzaHVmYglAWE1NWzhdLCBAWE1NWzBdCisJbW92ZHFhCUBYTU1bOV0sICglcnNwKQkJIyBzYXZlIGFkanVzdGVkIHJvdW5kMCBrZXkKKwlqbXAJLkxjdHJfZW5jX2xvb3AKKy5hbGlnbgkxNgorLkxjdHJfZW5jX2xvb3A6CisJbW92ZHFhCUBYTU1bMF0sIDB4MjAoJXJicCkJIyBzYXZlIGNvdW50ZXIKKwltb3ZkcWEJQFhNTVswXSwgQFhNTVsxXQkjIHByZXBhcmUgOCBjb3VudGVyIHZhbHVlcworCW1vdmRxYQlAWE1NWzBdLCBAWE1NWzJdCisJcGFkZGQJMHgwMCglcjExKSwgQFhNTVsxXQkjIC5MQUREMQorCW1vdmRxYQlAWE1NWzBdLCBAWE1NWzNdCisJcGFkZGQJMHgxMCglcjExKSwgQFhNTVsyXQkjIC5MQUREMgorCW1vdmRxYQlAWE1NWzBdLCBAWE1NWzRdCisJcGFkZGQJMHgyMCglcjExKSwgQFhNTVszXQkjIC5MQUREMworCW1vdmRxYQlAWE1NWzBdLCBAWE1NWzVdCisJcGFkZGQJMHgzMCglcjExKSwgQFhNTVs0XQkjIC5MQURENAorCW1vdmRxYQlAWE1NWzBdLCBAWE1NWzZdCisJcGFkZGQJMHg0MCglcjExKSwgQFhNTVs1XQkjIC5MQURENQorCW1vdmRxYQlAWE1NWzBdLCBAWE1NWzddCisJcGFkZGQJMHg1MCglcjExKSwgQFhNTVs2XQkjIC5MQURENgorCXBhZGRkCTB4NjAoJXIxMSksIEBYTU1bN10JIyAuTEFERDcKKworCSMgQm9ycm93IHByb2xvZ3VlIGZyb20gX2JzYWVzX2VuY3J5cHQ4IHRvIHVzZSB0aGUgb3Bwb3J0dW5pdHkKKwkjIHRvIGZsaXAgYnl0ZSBvcmRlciBpbiAzMi1iaXQgY291bnRlcgorCW1vdmRxYQkoJXJzcCksIEBYTU1bOV0JCSMgcm91bmQgMCBrZXkKKwlsZWEJMHgxMCglcnNwKSwgJXJheAkjIHBhc3Mga2V5IHNjaGVkdWxlCisJbW92ZHFhCS0weDEwKCVyMTEpLCBAWE1NWzhdCSMgLkxTV1BVUE0wU1IKKwlweG9yCUBYTU1bOV0sIEBYTU1bMF0JIyB4b3Igd2l0aCByb3VuZDAga2V5CisJcHhvcglAWE1NWzldLCBAWE1NWzFdCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzBdCisJcHhvcglAWE1NWzldLCBAWE1NWzJdCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzFdCisJcHhvcglAWE1NWzldLCBAWE1NWzNdCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzJdCisJcHhvcglAWE1NWzldLCBAWE1NWzRdCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzNdCisJcHhvcglAWE1NWzldLCBAWE1NWzVdCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzRdCisJcHhvcglAWE1NWzldLCBAWE1NWzZdCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzVdCisJcHhvcglAWE1NWzldLCBAWE1NWzddCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzZdCisJbGVhCS5MQlMwKCVyaXApLCAlcjExCSMgY29uc3RhbnRzIHRhYmxlCisJIHBzaHVmYglAWE1NWzhdLCBAWE1NWzddCisJbW92CSVlYngsJXIxMGQJCSMgcGFzcyByb3VuZHMKKworCWNhbGwJX2JzYWVzX2VuY3J5cHQ4X2JpdHNsaWNlCisKKwlzdWIJXCQ4LCRsZW4KKwlqYwkuTGN0cl9lbmNfbG9vcF9kb25lCisKKwltb3ZkcXUJMHgwMCgkaW5wKSwgQFhNTVs4XQkjIGxvYWQgaW5wdXQKKwltb3ZkcXUJMHgxMCgkaW5wKSwgQFhNTVs5XQorCW1vdmRxdQkweDIwKCRpbnApLCBAWE1NWzEwXQorCW1vdmRxdQkweDMwKCRpbnApLCBAWE1NWzExXQorCW1vdmRxdQkweDQwKCRpbnApLCBAWE1NWzEyXQorCW1vdmRxdQkweDUwKCRpbnApLCBAWE1NWzEzXQorCW1vdmRxdQkweDYwKCRpbnApLCBAWE1NWzE0XQorCW1vdmRxdQkweDcwKCRpbnApLCBAWE1NWzE1XQorCWxlYQkweDgwKCRpbnApLCRpbnAKKwlweG9yCUBYTU1bMF0sIEBYTU1bOF0KKwltb3ZkcWEJMHgyMCglcmJwKSwgQFhNTVswXQkjIGxvYWQgY291bnRlcgorCXB4b3IJQFhNTVs5XSwgQFhNTVsxXQorCW1vdmRxdQlAWE1NWzhdLCAweDAwKCRvdXQpCSMgd3JpdGUgb3V0cHV0CisJcHhvcglAWE1NWzEwXSwgQFhNTVs0XQorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJcHhvcglAWE1NWzExXSwgQFhNTVs2XQorCW1vdmRxdQlAWE1NWzRdLCAweDIwKCRvdXQpCisJcHhvcglAWE1NWzEyXSwgQFhNTVszXQorCW1vdmRxdQlAWE1NWzZdLCAweDMwKCRvdXQpCisJcHhvcglAWE1NWzEzXSwgQFhNTVs3XQorCW1vdmRxdQlAWE1NWzNdLCAweDQwKCRvdXQpCisJcHhvcglAWE1NWzE0XSwgQFhNTVsyXQorCW1vdmRxdQlAWE1NWzddLCAweDUwKCRvdXQpCisJcHhvcglAWE1NWzE1XSwgQFhNTVs1XQorCW1vdmRxdQlAWE1NWzJdLCAweDYwKCRvdXQpCisJbGVhCS5MQUREMSglcmlwKSwgJXIxMQorCW1vdmRxdQlAWE1NWzVdLCAweDcwKCRvdXQpCisJbGVhCTB4ODAoJG91dCksICRvdXQKKwlwYWRkZAkweDcwKCVyMTEpLCBAWE1NWzBdCSMgLkxBREQ4CisJam56CS5MY3RyX2VuY19sb29wCisKKwlqbXAJLkxjdHJfZW5jX2RvbmUKKy5hbGlnbgkxNgorLkxjdHJfZW5jX2xvb3BfZG9uZToKKwlhZGQJXCQ4LCAkbGVuCisJbW92ZHF1CTB4MDAoJGlucCksIEBYTU1bOF0JIyBsb2FkIGlucHV0CisJcHhvcglAWE1NWzhdLCBAWE1NWzBdCisJbW92ZHF1CUBYTU1bMF0sIDB4MDAoJG91dCkJIyB3cml0ZSBvdXRwdXQKKwljbXAJXCQyLCRsZW4KKwlqYgkuTGN0cl9lbmNfZG9uZQorCW1vdmRxdQkweDEwKCRpbnApLCBAWE1NWzldCisJcHhvcglAWE1NWzldLCBAWE1NWzFdCisJbW92ZHF1CUBYTU1bMV0sIDB4MTAoJG91dCkKKwlqZQkuTGN0cl9lbmNfZG9uZQorCW1vdmRxdQkweDIwKCRpbnApLCBAWE1NWzEwXQorCXB4b3IJQFhNTVsxMF0sIEBYTU1bNF0KKwltb3ZkcXUJQFhNTVs0XSwgMHgyMCgkb3V0KQorCWNtcAlcJDQsJGxlbgorCWpiCS5MY3RyX2VuY19kb25lCisJbW92ZHF1CTB4MzAoJGlucCksIEBYTU1bMTFdCisJcHhvcglAWE1NWzExXSwgQFhNTVs2XQorCW1vdmRxdQlAWE1NWzZdLCAweDMwKCRvdXQpCisJamUJLkxjdHJfZW5jX2RvbmUKKwltb3ZkcXUJMHg0MCgkaW5wKSwgQFhNTVsxMl0KKwlweG9yCUBYTU1bMTJdLCBAWE1NWzNdCisJbW92ZHF1CUBYTU1bM10sIDB4NDAoJG91dCkKKwljbXAJXCQ2LCRsZW4KKwlqYgkuTGN0cl9lbmNfZG9uZQorCW1vdmRxdQkweDUwKCRpbnApLCBAWE1NWzEzXQorCXB4b3IJQFhNTVsxM10sIEBYTU1bN10KKwltb3ZkcXUJQFhNTVs3XSwgMHg1MCgkb3V0KQorCWplCS5MY3RyX2VuY19kb25lCisJbW92ZHF1CTB4NjAoJGlucCksIEBYTU1bMTRdCisJcHhvcglAWE1NWzE0XSwgQFhNTVsyXQorCW1vdmRxdQlAWE1NWzJdLCAweDYwKCRvdXQpCisJam1wCS5MY3RyX2VuY19kb25lCisKKy5hbGlnbgkxNgorLkxjdHJfZW5jX3Nob3J0OgorCWxlYQkweDIwKCVyYnApLCAkYXJnMQorCWxlYQkweDMwKCVyYnApLCAkYXJnMgorCWxlYQkoJGtleSksICRhcmczCisJY2FsbAlhc21fQUVTX2VuY3J5cHQKKwltb3ZkcXUJKCRpbnApLCBAWE1NWzFdCisJbGVhCTE2KCRpbnApLCAkaW5wCisJbW92CTB4MmMoJXJicCksICVlYXgJIyBsb2FkIDMyLWJpdCBjb3VudGVyCisJYnN3YXAJJWVheAorCXB4b3IJMHgzMCglcmJwKSwgQFhNTVsxXQorCWluYwklZWF4CQkJIyBpbmNyZW1lbnQKKwltb3ZkcXUJQFhNTVsxXSwgKCRvdXQpCisJYnN3YXAJJWVheAorCWxlYQkxNigkb3V0KSwgJG91dAorCW1vdgklZWF4LCAweDJjKCVyc3ApCSMgc2F2ZSAzMi1iaXQgY291bnRlcgorCWRlYwkkbGVuCisJam56CS5MY3RyX2VuY19zaG9ydAorCisuTGN0cl9lbmNfZG9uZToKKwlsZWEJKCVyc3ApLCAlcmF4CisJcHhvcgkleG1tMCwgJXhtbTAKKy5MY3RyX2VuY19iemVybzoJCQkjIHdpcGUga2V5IHNjaGVkdWxlIFtpZiBhbnldCisJbW92ZHFhCSV4bW0wLCAweDAwKCVyYXgpCisJbW92ZHFhCSV4bW0wLCAweDEwKCVyYXgpCisJbGVhCTB4MjAoJXJheCksICVyYXgKKwljbXAJJXJheCwgJXJicAorCWphCS5MY3RyX2VuY19iemVybworCisJbGVhCSglcmJwKSwlcnNwCQkjIHJlc3RvcmUgJXJzcAorX19fCiskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisJbW92YXBzCTB4NDAoJXJicCksICV4bW02CisJbW92YXBzCTB4NTAoJXJicCksICV4bW03CisJbW92YXBzCTB4NjAoJXJicCksICV4bW04CisJbW92YXBzCTB4NzAoJXJicCksICV4bW05CisJbW92YXBzCTB4ODAoJXJicCksICV4bW0xMAorCW1vdmFwcwkweDkwKCVyYnApLCAleG1tMTEKKwltb3ZhcHMJMHhhMCglcmJwKSwgJXhtbTEyCisJbW92YXBzCTB4YjAoJXJicCksICV4bW0xMworCW1vdmFwcwkweGMwKCVyYnApLCAleG1tMTQKKwltb3ZhcHMJMHhkMCglcmJwKSwgJXhtbTE1CisJbGVhCTB4YTAoJXJicCksICVyc3AKK19fXworJGNvZGUuPTw8X19fOworCW1vdgkweDQ4KCVyc3ApLCAlcjE1CisJbW92CTB4NTAoJXJzcCksICVyMTQKKwltb3YJMHg1OCglcnNwKSwgJXIxMworCW1vdgkweDYwKCVyc3ApLCAlcjEyCisJbW92CTB4NjgoJXJzcCksICVyYngKKwltb3YJMHg3MCglcnNwKSwgJXJheAorCWxlYQkweDc4KCVyc3ApLCAlcnNwCisJbW92CSVyYXgsICVyYnAKKy5MY3RyX2VuY19lcGlsb2d1ZToKKwlyZXQKKy5zaXplCWJzYWVzX2N0cjMyX2VuY3J5cHRfYmxvY2tzLC4tYnNhZXNfY3RyMzJfZW5jcnlwdF9ibG9ja3MKK19fXworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyB2b2lkIGJzYWVzX3h0c19bZW58ZGVdY3J5cHQoY29uc3QgY2hhciAqaW5wLGNoYXIgKm91dCxzaXplX3QgbGVuLAorIwljb25zdCBBRVNfS0VZICprZXkxLCBjb25zdCBBRVNfS0VZICprZXkyLAorIwljb25zdCB1bnNpZ25lZCBjaGFyIGl2WzE2XSk7CisjCitteSAoJHR3bWFzaywkdHdyZXMsJHR3dG1wKT1AWE1NWzEzLi4xNV07CiskY29kZS49PDxfX187CisuZ2xvYmwJYnNhZXNfeHRzX2VuY3J5cHQKKy50eXBlCWJzYWVzX3h0c19lbmNyeXB0LFxAYWJpLW9tbmlwb3RlbnQKKy5hbGlnbgkxNgorYnNhZXNfeHRzX2VuY3J5cHQ6CisJbW92CSVyc3AsICVyYXgKKy5MeHRzX2VuY19wcm9sb2d1ZToKKwlwdXNoCSVyYnAKKwlwdXNoCSVyYngKKwlwdXNoCSVyMTIKKwlwdXNoCSVyMTMKKwlwdXNoCSVyMTQKKwlwdXNoCSVyMTUKKwlsZWEJLTB4NDgoJXJzcCksICVyc3AKK19fXworJGNvZGUuPTw8X19fIGlmICgkd2luNjQpOworCW1vdgkweGEwKCVyc3ApLCRhcmc1CSMgcHVsbCBrZXkyCisJbW92CTB4YTgoJXJzcCksJGFyZzYJIyBwdWxsIGl2cAorCWxlYQktMHhhMCglcnNwKSwgJXJzcAorCW1vdmFwcwkleG1tNiwgMHg0MCglcnNwKQorCW1vdmFwcwkleG1tNywgMHg1MCglcnNwKQorCW1vdmFwcwkleG1tOCwgMHg2MCglcnNwKQorCW1vdmFwcwkleG1tOSwgMHg3MCglcnNwKQorCW1vdmFwcwkleG1tMTAsIDB4ODAoJXJzcCkKKwltb3ZhcHMJJXhtbTExLCAweDkwKCVyc3ApCisJbW92YXBzCSV4bW0xMiwgMHhhMCglcnNwKQorCW1vdmFwcwkleG1tMTMsIDB4YjAoJXJzcCkKKwltb3ZhcHMJJXhtbTE0LCAweGMwKCVyc3ApCisJbW92YXBzCSV4bW0xNSwgMHhkMCglcnNwKQorLkx4dHNfZW5jX2JvZHk6CitfX18KKyRjb2RlLj08PF9fXzsKKwltb3YJJXJzcCwgJXJicAkJIyBiYWNrdXAgJXJzcAorCW1vdgkkYXJnMSwgJGlucAkJIyBiYWNrdXAgYXJndW1lbnRzCisJbW92CSRhcmcyLCAkb3V0CisJbW92CSRhcmczLCAkbGVuCisJbW92CSRhcmc0LCAka2V5CisKKwlsZWEJKCRhcmc2KSwgJGFyZzEKKwlsZWEJMHgyMCglcmJwKSwgJGFyZzIKKwlsZWEJKCRhcmc1KSwgJGFyZzMKKwljYWxsCWFzbV9BRVNfZW5jcnlwdAkJIyBnZW5lcmF0ZSBpbml0aWFsIHR3ZWFrCisKKwltb3YJMjQwKCRrZXkpLCAlZWF4CQkjIHJvdW5kcworCW1vdgkkbGVuLCAlcmJ4CQkjIGJhY2t1cCAkbGVuCisKKwltb3YJJWVheCwgJWVkeAkJIyByb3VuZHMKKwlzaGwJXCQ3LCAlcmF4CQkjIDEyOCBieXRlcyBwZXIgaW5uZXIgcm91bmQga2V5CisJc3ViCVwkYDEyOC0zMmAsICVyYXgJIyBzaXplIG9mIGJpdC1zbGljZWQga2V5IHNjaGVkdWxlCisJc3ViCSVyYXgsICVyc3AKKworCW1vdgklcnNwLCAlcmF4CQkjIHBhc3Mga2V5IHNjaGVkdWxlCisJbW92CSRrZXksICVyY3gJCSMgcGFzcyBrZXkKKwltb3YJJWVkeCwgJXIxMGQJCSMgcGFzcyByb3VuZHMKKwljYWxsCV9ic2Flc19rZXlfY29udmVydAorCXB4b3IJJXhtbTYsICV4bW03CQkjIGZpeCB1cCBsYXN0IHJvdW5kIGtleQorCW1vdmRxYQkleG1tNywgKCVyYXgpCQkjIHNhdmUgbGFzdCByb3VuZCBrZXkKKworCWFuZAlcJC0xNiwgJGxlbgorCXN1YglcJDB4ODAsICVyc3AJCSMgcGxhY2UgZm9yIHR3ZWFrWzhdCisJbW92ZHFhCTB4MjAoJXJicCksIEBYTU1bN10JIyBpbml0aWFsIHR3ZWFrCisKKwlweG9yCSR0d3RtcCwgJHR3dG1wCisJbW92ZHFhCS5MeHRzX21hZ2ljKCVyaXApLCAkdHdtYXNrCisJcGNtcGd0ZAlAWE1NWzddLCAkdHd0bXAJCSMgYnJvYWRjYXN0IHVwcGVyIGJpdHMKKworCXN1YglcJDB4ODAsICRsZW4KKwlqYwkuTHh0c19lbmNfc2hvcnQKKwlqbXAJLkx4dHNfZW5jX2xvb3AKKworLmFsaWduCTE2CisuTHh0c19lbmNfbG9vcDoKK19fXworICAgIGZvciAoJGk9MDskaTw3OyRpKyspIHsKKyAgICAkY29kZS49PDxfX187CisJcHNodWZkCVwkMHgxMywgJHR3dG1wLCAkdHdyZXMKKwlweG9yCSR0d3RtcCwgJHR3dG1wCisJbW92ZHFhCUBYTU1bN10sIEBYTU1bJGldCisJbW92ZHFhCUBYTU1bN10sIGAweDEwKiRpYCglcnNwKSMgc2F2ZSB0d2Vha1skaV0KKwlwYWRkcQlAWE1NWzddLCBAWE1NWzddCSMgcHNsbHEJMSwkdHdlYWsKKwlwYW5kCSR0d21hc2ssICR0d3JlcwkJIyBpc29sYXRlIGNhcnJ5IGFuZCByZXNpZHVlCisJcGNtcGd0ZAlAWE1NWzddLCAkdHd0bXAJCSMgYnJvYWRjYXN0IHVwcGVyIGJpdHMKKwlweG9yCSR0d3JlcywgQFhNTVs3XQorX19fCisgICAgJGNvZGUuPTw8X19fIGlmICgkaT49MSk7CisJbW92ZHF1CWAweDEwKigkaS0xKWAoJGlucCksIEBYTU1bOCskaS0xXQorX19fCisgICAgJGNvZGUuPTw8X19fIGlmICgkaT49Mik7CisJcHhvcglAWE1NWzgrJGktMl0sIEBYTU1bJGktMl0jIGlucHV0W10gXiB0d2Vha1tdCitfX18KKyAgICB9CiskY29kZS49PDxfX187CisJbW92ZHF1CTB4NjAoJGlucCksIEBYTU1bOCs2XQorCXB4b3IJQFhNTVs4KzVdLCBAWE1NWzVdCisJbW92ZHF1CTB4NzAoJGlucCksIEBYTU1bOCs3XQorCWxlYQkweDgwKCRpbnApLCAkaW5wCisJbW92ZHFhCUBYTU1bN10sIDB4NzAoJXJzcCkKKwlweG9yCUBYTU1bOCs2XSwgQFhNTVs2XQorCWxlYQkweDgwKCVyc3ApLCAlcmF4CSMgcGFzcyBrZXkgc2NoZWR1bGUKKwlweG9yCUBYTU1bOCs3XSwgQFhNTVs3XQorCW1vdgklZWR4LCAlcjEwZAkJIyBwYXNzIHJvdW5kcworCisJY2FsbAlfYnNhZXNfZW5jcnlwdDgKKworCXB4b3IJMHgwMCglcnNwKSwgQFhNTVswXQkjIF49IHR3ZWFrW10KKwlweG9yCTB4MTAoJXJzcCksIEBYTU1bMV0KKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCXB4b3IJMHgyMCglcnNwKSwgQFhNTVs0XQorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJcHhvcgkweDMwKCVyc3ApLCBAWE1NWzZdCisJbW92ZHF1CUBYTU1bNF0sIDB4MjAoJG91dCkKKwlweG9yCTB4NDAoJXJzcCksIEBYTU1bM10KKwltb3ZkcXUJQFhNTVs2XSwgMHgzMCgkb3V0KQorCXB4b3IJMHg1MCglcnNwKSwgQFhNTVs3XQorCW1vdmRxdQlAWE1NWzNdLCAweDQwKCRvdXQpCisJcHhvcgkweDYwKCVyc3ApLCBAWE1NWzJdCisJbW92ZHF1CUBYTU1bN10sIDB4NTAoJG91dCkKKwlweG9yCTB4NzAoJXJzcCksIEBYTU1bNV0KKwltb3ZkcXUJQFhNTVsyXSwgMHg2MCgkb3V0KQorCW1vdmRxdQlAWE1NWzVdLCAweDcwKCRvdXQpCisJbGVhCTB4ODAoJG91dCksICRvdXQKKworCW1vdmRxYQkweDcwKCVyc3ApLCBAWE1NWzddCSMgcHJlcGFyZSBuZXh0IGl0ZXJhdGlvbiB0d2VhaworCXB4b3IJJHR3dG1wLCAkdHd0bXAKKwltb3ZkcWEJLkx4dHNfbWFnaWMoJXJpcCksICR0d21hc2sKKwlwY21wZ3RkCUBYTU1bN10sICR0d3RtcAorCXBzaHVmZAlcJDB4MTMsICR0d3RtcCwgJHR3cmVzCisJcHhvcgkkdHd0bXAsICR0d3RtcAorCXBhZGRxCUBYTU1bN10sIEBYTU1bN10JIyBwc2xscQkxLCR0d2VhaworCXBhbmQJJHR3bWFzaywgJHR3cmVzCQkjIGlzb2xhdGUgY2FycnkgYW5kIHJlc2lkdWUKKwlwY21wZ3RkCUBYTU1bN10sICR0d3RtcAkJIyBicm9hZGNhc3QgdXBwZXIgYml0cworCXB4b3IJJHR3cmVzLCBAWE1NWzddCisKKwlzdWIJXCQweDgwLCRsZW4KKwlqbmMJLkx4dHNfZW5jX2xvb3AKKworLkx4dHNfZW5jX3Nob3J0OgorCWFkZAlcJDB4ODAsICRsZW4KKwlqegkuTHh0c19lbmNfZG9uZQorX19fCisgICAgZm9yICgkaT0wOyRpPDc7JGkrKykgeworICAgICRjb2RlLj08PF9fXzsKKwlwc2h1ZmQJXCQweDEzLCAkdHd0bXAsICR0d3JlcworCXB4b3IJJHR3dG1wLCAkdHd0bXAKKwltb3ZkcWEJQFhNTVs3XSwgQFhNTVskaV0KKwltb3ZkcWEJQFhNTVs3XSwgYDB4MTAqJGlgKCVyc3ApIyBzYXZlIHR3ZWFrWyRpXQorCXBhZGRxCUBYTU1bN10sIEBYTU1bN10JIyBwc2xscQkxLCR0d2VhaworCXBhbmQJJHR3bWFzaywgJHR3cmVzCQkjIGlzb2xhdGUgY2FycnkgYW5kIHJlc2lkdWUKKwlwY21wZ3RkCUBYTU1bN10sICR0d3RtcAkJIyBicm9hZGNhc3QgdXBwZXIgYml0cworCXB4b3IJJHR3cmVzLCBAWE1NWzddCitfX18KKyAgICAkY29kZS49PDxfX18gaWYgKCRpPj0xKTsKKwltb3ZkcXUJYDB4MTAqKCRpLTEpYCgkaW5wKSwgQFhNTVs4KyRpLTFdCisJY21wCVwkYDB4MTAqJGlgLCRsZW4KKwlqZQkuTHh0c19lbmNfJGkKK19fXworICAgICRjb2RlLj08PF9fXyBpZiAoJGk+PTIpOworCXB4b3IJQFhNTVs4KyRpLTJdLCBAWE1NWyRpLTJdIyBpbnB1dFtdIF4gdHdlYWtbXQorX19fCisgICAgfQorJGNvZGUuPTw8X19fOworCW1vdmRxdQkweDYwKCRpbnApLCBAWE1NWzgrNl0KKwlweG9yCUBYTU1bOCs1XSwgQFhNTVs1XQorCW1vdmRxYQlAWE1NWzddLCAweDcwKCVyc3ApCisJbGVhCTB4NzAoJGlucCksICRpbnAKKwlweG9yCUBYTU1bOCs2XSwgQFhNTVs2XQorCWxlYQkweDgwKCVyc3ApLCAlcmF4CSMgcGFzcyBrZXkgc2NoZWR1bGUKKwltb3YJJWVkeCwgJXIxMGQJCSMgcGFzcyByb3VuZHMKKworCWNhbGwJX2JzYWVzX2VuY3J5cHQ4CisKKwlweG9yCTB4MDAoJXJzcCksIEBYTU1bMF0JIyBePSB0d2Vha1tdCisJcHhvcgkweDEwKCVyc3ApLCBAWE1NWzFdCisJbW92ZHF1CUBYTU1bMF0sIDB4MDAoJG91dCkJIyB3cml0ZSBvdXRwdXQKKwlweG9yCTB4MjAoJXJzcCksIEBYTU1bNF0KKwltb3ZkcXUJQFhNTVsxXSwgMHgxMCgkb3V0KQorCXB4b3IJMHgzMCglcnNwKSwgQFhNTVs2XQorCW1vdmRxdQlAWE1NWzRdLCAweDIwKCRvdXQpCisJcHhvcgkweDQwKCVyc3ApLCBAWE1NWzNdCisJbW92ZHF1CUBYTU1bNl0sIDB4MzAoJG91dCkKKwlweG9yCTB4NTAoJXJzcCksIEBYTU1bN10KKwltb3ZkcXUJQFhNTVszXSwgMHg0MCgkb3V0KQorCXB4b3IJMHg2MCglcnNwKSwgQFhNTVsyXQorCW1vdmRxdQlAWE1NWzddLCAweDUwKCRvdXQpCisJbW92ZHF1CUBYTU1bMl0sIDB4NjAoJG91dCkKKwlsZWEJMHg3MCgkb3V0KSwgJG91dAorCisJbW92ZHFhCTB4NzAoJXJzcCksIEBYTU1bN10JIyBuZXh0IGl0ZXJhdGlvbiB0d2VhaworCWptcAkuTHh0c19lbmNfZG9uZQorLmFsaWduCTE2CisuTHh0c19lbmNfNjoKKwlweG9yCUBYTU1bOCs0XSwgQFhNTVs0XQorCWxlYQkweDYwKCRpbnApLCAkaW5wCisJcHhvcglAWE1NWzgrNV0sIEBYTU1bNV0KKwlsZWEJMHg4MCglcnNwKSwgJXJheAkjIHBhc3Mga2V5IHNjaGVkdWxlCisJbW92CSVlZHgsICVyMTBkCQkjIHBhc3Mgcm91bmRzCisKKwljYWxsCV9ic2Flc19lbmNyeXB0OAorCisJcHhvcgkweDAwKCVyc3ApLCBAWE1NWzBdCSMgXj0gdHdlYWtbXQorCXB4b3IJMHgxMCglcnNwKSwgQFhNTVsxXQorCW1vdmRxdQlAWE1NWzBdLCAweDAwKCRvdXQpCSMgd3JpdGUgb3V0cHV0CisJcHhvcgkweDIwKCVyc3ApLCBAWE1NWzRdCisJbW92ZHF1CUBYTU1bMV0sIDB4MTAoJG91dCkKKwlweG9yCTB4MzAoJXJzcCksIEBYTU1bNl0KKwltb3ZkcXUJQFhNTVs0XSwgMHgyMCgkb3V0KQorCXB4b3IJMHg0MCglcnNwKSwgQFhNTVszXQorCW1vdmRxdQlAWE1NWzZdLCAweDMwKCRvdXQpCisJcHhvcgkweDUwKCVyc3ApLCBAWE1NWzddCisJbW92ZHF1CUBYTU1bM10sIDB4NDAoJG91dCkKKwltb3ZkcXUJQFhNTVs3XSwgMHg1MCgkb3V0KQorCWxlYQkweDYwKCRvdXQpLCAkb3V0CisKKwltb3ZkcWEJMHg2MCglcnNwKSwgQFhNTVs3XQkjIG5leHQgaXRlcmF0aW9uIHR3ZWFrCisJam1wCS5MeHRzX2VuY19kb25lCisuYWxpZ24JMTYKKy5MeHRzX2VuY181OgorCXB4b3IJQFhNTVs4KzNdLCBAWE1NWzNdCisJbGVhCTB4NTAoJGlucCksICRpbnAKKwlweG9yCUBYTU1bOCs0XSwgQFhNTVs0XQorCWxlYQkweDgwKCVyc3ApLCAlcmF4CSMgcGFzcyBrZXkgc2NoZWR1bGUKKwltb3YJJWVkeCwgJXIxMGQJCSMgcGFzcyByb3VuZHMKKworCWNhbGwJX2JzYWVzX2VuY3J5cHQ4CisKKwlweG9yCTB4MDAoJXJzcCksIEBYTU1bMF0JIyBePSB0d2Vha1tdCisJcHhvcgkweDEwKCVyc3ApLCBAWE1NWzFdCisJbW92ZHF1CUBYTU1bMF0sIDB4MDAoJG91dCkJIyB3cml0ZSBvdXRwdXQKKwlweG9yCTB4MjAoJXJzcCksIEBYTU1bNF0KKwltb3ZkcXUJQFhNTVsxXSwgMHgxMCgkb3V0KQorCXB4b3IJMHgzMCglcnNwKSwgQFhNTVs2XQorCW1vdmRxdQlAWE1NWzRdLCAweDIwKCRvdXQpCisJcHhvcgkweDQwKCVyc3ApLCBAWE1NWzNdCisJbW92ZHF1CUBYTU1bNl0sIDB4MzAoJG91dCkKKwltb3ZkcXUJQFhNTVszXSwgMHg0MCgkb3V0KQorCWxlYQkweDUwKCRvdXQpLCAkb3V0CisKKwltb3ZkcWEJMHg1MCglcnNwKSwgQFhNTVs3XQkjIG5leHQgaXRlcmF0aW9uIHR3ZWFrCisJam1wCS5MeHRzX2VuY19kb25lCisuYWxpZ24JMTYKKy5MeHRzX2VuY180OgorCXB4b3IJQFhNTVs4KzJdLCBAWE1NWzJdCisJbGVhCTB4NDAoJGlucCksICRpbnAKKwlweG9yCUBYTU1bOCszXSwgQFhNTVszXQorCWxlYQkweDgwKCVyc3ApLCAlcmF4CSMgcGFzcyBrZXkgc2NoZWR1bGUKKwltb3YJJWVkeCwgJXIxMGQJCSMgcGFzcyByb3VuZHMKKworCWNhbGwJX2JzYWVzX2VuY3J5cHQ4CisKKwlweG9yCTB4MDAoJXJzcCksIEBYTU1bMF0JIyBePSB0d2Vha1tdCisJcHhvcgkweDEwKCVyc3ApLCBAWE1NWzFdCisJbW92ZHF1CUBYTU1bMF0sIDB4MDAoJG91dCkJIyB3cml0ZSBvdXRwdXQKKwlweG9yCTB4MjAoJXJzcCksIEBYTU1bNF0KKwltb3ZkcXUJQFhNTVsxXSwgMHgxMCgkb3V0KQorCXB4b3IJMHgzMCglcnNwKSwgQFhNTVs2XQorCW1vdmRxdQlAWE1NWzRdLCAweDIwKCRvdXQpCisJbW92ZHF1CUBYTU1bNl0sIDB4MzAoJG91dCkKKwlsZWEJMHg0MCgkb3V0KSwgJG91dAorCisJbW92ZHFhCTB4NDAoJXJzcCksIEBYTU1bN10JIyBuZXh0IGl0ZXJhdGlvbiB0d2VhaworCWptcAkuTHh0c19lbmNfZG9uZQorLmFsaWduCTE2CisuTHh0c19lbmNfMzoKKwlweG9yCUBYTU1bOCsxXSwgQFhNTVsxXQorCWxlYQkweDMwKCRpbnApLCAkaW5wCisJcHhvcglAWE1NWzgrMl0sIEBYTU1bMl0KKwlsZWEJMHg4MCglcnNwKSwgJXJheAkjIHBhc3Mga2V5IHNjaGVkdWxlCisJbW92CSVlZHgsICVyMTBkCQkjIHBhc3Mgcm91bmRzCisKKwljYWxsCV9ic2Flc19lbmNyeXB0OAorCisJcHhvcgkweDAwKCVyc3ApLCBAWE1NWzBdCSMgXj0gdHdlYWtbXQorCXB4b3IJMHgxMCglcnNwKSwgQFhNTVsxXQorCW1vdmRxdQlAWE1NWzBdLCAweDAwKCRvdXQpCSMgd3JpdGUgb3V0cHV0CisJcHhvcgkweDIwKCVyc3ApLCBAWE1NWzRdCisJbW92ZHF1CUBYTU1bMV0sIDB4MTAoJG91dCkKKwltb3ZkcXUJQFhNTVs0XSwgMHgyMCgkb3V0KQorCWxlYQkweDMwKCRvdXQpLCAkb3V0CisKKwltb3ZkcWEJMHgzMCglcnNwKSwgQFhNTVs3XQkjIG5leHQgaXRlcmF0aW9uIHR3ZWFrCisJam1wCS5MeHRzX2VuY19kb25lCisuYWxpZ24JMTYKKy5MeHRzX2VuY18yOgorCXB4b3IJQFhNTVs4KzBdLCBAWE1NWzBdCisJbGVhCTB4MjAoJGlucCksICRpbnAKKwlweG9yCUBYTU1bOCsxXSwgQFhNTVsxXQorCWxlYQkweDgwKCVyc3ApLCAlcmF4CSMgcGFzcyBrZXkgc2NoZWR1bGUKKwltb3YJJWVkeCwgJXIxMGQJCSMgcGFzcyByb3VuZHMKKworCWNhbGwJX2JzYWVzX2VuY3J5cHQ4CisKKwlweG9yCTB4MDAoJXJzcCksIEBYTU1bMF0JIyBePSB0d2Vha1tdCisJcHhvcgkweDEwKCVyc3ApLCBAWE1NWzFdCisJbW92ZHF1CUBYTU1bMF0sIDB4MDAoJG91dCkJIyB3cml0ZSBvdXRwdXQKKwltb3ZkcXUJQFhNTVsxXSwgMHgxMCgkb3V0KQorCWxlYQkweDIwKCRvdXQpLCAkb3V0CisKKwltb3ZkcWEJMHgyMCglcnNwKSwgQFhNTVs3XQkjIG5leHQgaXRlcmF0aW9uIHR3ZWFrCisJam1wCS5MeHRzX2VuY19kb25lCisuYWxpZ24JMTYKKy5MeHRzX2VuY18xOgorCXB4b3IJQFhNTVswXSwgQFhNTVs4XQorCWxlYQkweDEwKCRpbnApLCAkaW5wCisJbW92ZHFhCUBYTU1bOF0sIDB4MjAoJXJicCkKKwlsZWEJMHgyMCglcmJwKSwgJGFyZzEKKwlsZWEJMHgyMCglcmJwKSwgJGFyZzIKKwlsZWEJKCRrZXkpLCAkYXJnMworCWNhbGwJYXNtX0FFU19lbmNyeXB0CQkjIGRvZXNuJ3QgdG91Y2ggJXhtbQorCXB4b3IJMHgyMCglcmJwKSwgQFhNTVswXQkjIF49IHR3ZWFrW10KKwkjcHhvcglAWE1NWzhdLCBAWE1NWzBdCisJI2xlYQkweDgwKCVyc3ApLCAlcmF4CSMgcGFzcyBrZXkgc2NoZWR1bGUKKwkjbW92CSVlZHgsICVyMTBkCQkjIHBhc3Mgcm91bmRzCisJI2NhbGwJX2JzYWVzX2VuY3J5cHQ4CisJI3B4b3IJMHgwMCglcnNwKSwgQFhNTVswXQkjIF49IHR3ZWFrW10KKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCWxlYQkweDEwKCRvdXQpLCAkb3V0CisKKwltb3ZkcWEJMHgxMCglcnNwKSwgQFhNTVs3XQkjIG5leHQgaXRlcmF0aW9uIHR3ZWFrCisKKy5MeHRzX2VuY19kb25lOgorCWFuZAlcJDE1LCAlZWJ4CisJanoJLkx4dHNfZW5jX3JldAorCW1vdgkkb3V0LCAlcmR4CisKKy5MeHRzX2VuY19zdGVhbDoKKwltb3Z6YgkoJGlucCksICVlYXgKKwltb3Z6YgktMTYoJXJkeCksICVlY3gKKwlsZWEJMSgkaW5wKSwgJGlucAorCW1vdgklYWwsIC0xNiglcmR4KQorCW1vdgklY2wsIDAoJXJkeCkKKwlsZWEJMSglcmR4KSwgJXJkeAorCXN1YglcJDEsJWVieAorCWpuegkuTHh0c19lbmNfc3RlYWwKKworCW1vdmRxdQktMTYoJG91dCksIEBYTU1bMF0KKwlsZWEJMHgyMCglcmJwKSwgJGFyZzEKKwlweG9yCUBYTU1bN10sIEBYTU1bMF0KKwlsZWEJMHgyMCglcmJwKSwgJGFyZzIKKwltb3ZkcWEJQFhNTVswXSwgMHgyMCglcmJwKQorCWxlYQkoJGtleSksICRhcmczCisJY2FsbAlhc21fQUVTX2VuY3J5cHQJCSMgZG9lc24ndCB0b3VjaCAleG1tCisJcHhvcgkweDIwKCVyYnApLCBAWE1NWzddCisJbW92ZHF1CUBYTU1bN10sIC0xNigkb3V0KQorCisuTHh0c19lbmNfcmV0OgorCWxlYQkoJXJzcCksICVyYXgKKwlweG9yCSV4bW0wLCAleG1tMAorLkx4dHNfZW5jX2J6ZXJvOgkJCSMgd2lwZSBrZXkgc2NoZWR1bGUgW2lmIGFueV0KKwltb3ZkcWEJJXhtbTAsIDB4MDAoJXJheCkKKwltb3ZkcWEJJXhtbTAsIDB4MTAoJXJheCkKKwlsZWEJMHgyMCglcmF4KSwgJXJheAorCWNtcAklcmF4LCAlcmJwCisJamEJLkx4dHNfZW5jX2J6ZXJvCisKKwlsZWEJKCVyYnApLCVyc3AJCSMgcmVzdG9yZSAlcnNwCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKwltb3ZhcHMJMHg0MCglcmJwKSwgJXhtbTYKKwltb3ZhcHMJMHg1MCglcmJwKSwgJXhtbTcKKwltb3ZhcHMJMHg2MCglcmJwKSwgJXhtbTgKKwltb3ZhcHMJMHg3MCglcmJwKSwgJXhtbTkKKwltb3ZhcHMJMHg4MCglcmJwKSwgJXhtbTEwCisJbW92YXBzCTB4OTAoJXJicCksICV4bW0xMQorCW1vdmFwcwkweGEwKCVyYnApLCAleG1tMTIKKwltb3ZhcHMJMHhiMCglcmJwKSwgJXhtbTEzCisJbW92YXBzCTB4YzAoJXJicCksICV4bW0xNAorCW1vdmFwcwkweGQwKCVyYnApLCAleG1tMTUKKwlsZWEJMHhhMCglcmJwKSwgJXJzcAorX19fCiskY29kZS49PDxfX187CisJbW92CTB4NDgoJXJzcCksICVyMTUKKwltb3YJMHg1MCglcnNwKSwgJXIxNAorCW1vdgkweDU4KCVyc3ApLCAlcjEzCisJbW92CTB4NjAoJXJzcCksICVyMTIKKwltb3YJMHg2OCglcnNwKSwgJXJieAorCW1vdgkweDcwKCVyc3ApLCAlcmF4CisJbGVhCTB4NzgoJXJzcCksICVyc3AKKwltb3YJJXJheCwgJXJicAorLkx4dHNfZW5jX2VwaWxvZ3VlOgorCXJldAorLnNpemUJYnNhZXNfeHRzX2VuY3J5cHQsLi1ic2Flc194dHNfZW5jcnlwdAorCisuZ2xvYmwJYnNhZXNfeHRzX2RlY3J5cHQKKy50eXBlCWJzYWVzX3h0c19kZWNyeXB0LFxAYWJpLW9tbmlwb3RlbnQKKy5hbGlnbgkxNgorYnNhZXNfeHRzX2RlY3J5cHQ6CisJbW92CSVyc3AsICVyYXgKKy5MeHRzX2RlY19wcm9sb2d1ZToKKwlwdXNoCSVyYnAKKwlwdXNoCSVyYngKKwlwdXNoCSVyMTIKKwlwdXNoCSVyMTMKKwlwdXNoCSVyMTQKKwlwdXNoCSVyMTUKKwlsZWEJLTB4NDgoJXJzcCksICVyc3AKK19fXworJGNvZGUuPTw8X19fIGlmICgkd2luNjQpOworCW1vdgkweGEwKCVyc3ApLCRhcmc1CSMgcHVsbCBrZXkyCisJbW92CTB4YTgoJXJzcCksJGFyZzYJIyBwdWxsIGl2cAorCWxlYQktMHhhMCglcnNwKSwgJXJzcAorCW1vdmFwcwkleG1tNiwgMHg0MCglcnNwKQorCW1vdmFwcwkleG1tNywgMHg1MCglcnNwKQorCW1vdmFwcwkleG1tOCwgMHg2MCglcnNwKQorCW1vdmFwcwkleG1tOSwgMHg3MCglcnNwKQorCW1vdmFwcwkleG1tMTAsIDB4ODAoJXJzcCkKKwltb3ZhcHMJJXhtbTExLCAweDkwKCVyc3ApCisJbW92YXBzCSV4bW0xMiwgMHhhMCglcnNwKQorCW1vdmFwcwkleG1tMTMsIDB4YjAoJXJzcCkKKwltb3ZhcHMJJXhtbTE0LCAweGMwKCVyc3ApCisJbW92YXBzCSV4bW0xNSwgMHhkMCglcnNwKQorLkx4dHNfZGVjX2JvZHk6CitfX18KKyRjb2RlLj08PF9fXzsKKwltb3YJJXJzcCwgJXJicAkJIyBiYWNrdXAgJXJzcAorCW1vdgkkYXJnMSwgJGlucAkJIyBiYWNrdXAgYXJndW1lbnRzCisJbW92CSRhcmcyLCAkb3V0CisJbW92CSRhcmczLCAkbGVuCisJbW92CSRhcmc0LCAka2V5CisKKwlsZWEJKCRhcmc2KSwgJGFyZzEKKwlsZWEJMHgyMCglcmJwKSwgJGFyZzIKKwlsZWEJKCRhcmc1KSwgJGFyZzMKKwljYWxsCWFzbV9BRVNfZW5jcnlwdAkJIyBnZW5lcmF0ZSBpbml0aWFsIHR3ZWFrCisKKwltb3YJMjQwKCRrZXkpLCAlZWF4CQkjIHJvdW5kcworCW1vdgkkbGVuLCAlcmJ4CQkjIGJhY2t1cCAkbGVuCisKKwltb3YJJWVheCwgJWVkeAkJIyByb3VuZHMKKwlzaGwJXCQ3LCAlcmF4CQkjIDEyOCBieXRlcyBwZXIgaW5uZXIgcm91bmQga2V5CisJc3ViCVwkYDEyOC0zMmAsICVyYXgJIyBzaXplIG9mIGJpdC1zbGljZWQga2V5IHNjaGVkdWxlCisJc3ViCSVyYXgsICVyc3AKKworCW1vdgklcnNwLCAlcmF4CQkjIHBhc3Mga2V5IHNjaGVkdWxlCisJbW92CSRrZXksICVyY3gJCSMgcGFzcyBrZXkKKwltb3YJJWVkeCwgJXIxMGQJCSMgcGFzcyByb3VuZHMKKwljYWxsCV9ic2Flc19rZXlfY29udmVydAorCXB4b3IJKCVyc3ApLCAleG1tNwkJIyBmaXggdXAgcm91bmQgMCBrZXkKKwltb3ZkcWEJJXhtbTYsICglcmF4KQkJIyBzYXZlIGxhc3Qgcm91bmQga2V5CisJbW92ZHFhCSV4bW03LCAoJXJzcCkKKworCXhvcgklZWF4LCAlZWF4CQkjIGlmICgkbGVuJTE2KSBsZW4tPTE2OworCWFuZAlcJC0xNiwgJGxlbgorCXRlc3QJXCQxNSwgJWVieAorCXNldG56CSVhbAorCXNobAlcJDQsICVyYXgKKwlzdWIJJXJheCwgJGxlbgorCisJc3ViCVwkMHg4MCwgJXJzcAkJIyBwbGFjZSBmb3IgdHdlYWtbOF0KKwltb3ZkcWEJMHgyMCglcmJwKSwgQFhNTVs3XQkjIGluaXRpYWwgdHdlYWsKKworCXB4b3IJJHR3dG1wLCAkdHd0bXAKKwltb3ZkcWEJLkx4dHNfbWFnaWMoJXJpcCksICR0d21hc2sKKwlwY21wZ3RkCUBYTU1bN10sICR0d3RtcAkJIyBicm9hZGNhc3QgdXBwZXIgYml0cworCisJc3ViCVwkMHg4MCwgJGxlbgorCWpjCS5MeHRzX2RlY19zaG9ydAorCWptcAkuTHh0c19kZWNfbG9vcAorCisuYWxpZ24JMTYKKy5MeHRzX2RlY19sb29wOgorX19fCisgICAgZm9yICgkaT0wOyRpPDc7JGkrKykgeworICAgICRjb2RlLj08PF9fXzsKKwlwc2h1ZmQJXCQweDEzLCAkdHd0bXAsICR0d3JlcworCXB4b3IJJHR3dG1wLCAkdHd0bXAKKwltb3ZkcWEJQFhNTVs3XSwgQFhNTVskaV0KKwltb3ZkcWEJQFhNTVs3XSwgYDB4MTAqJGlgKCVyc3ApIyBzYXZlIHR3ZWFrWyRpXQorCXBhZGRxCUBYTU1bN10sIEBYTU1bN10JIyBwc2xscQkxLCR0d2VhaworCXBhbmQJJHR3bWFzaywgJHR3cmVzCQkjIGlzb2xhdGUgY2FycnkgYW5kIHJlc2lkdWUKKwlwY21wZ3RkCUBYTU1bN10sICR0d3RtcAkJIyBicm9hZGNhc3QgdXBwZXIgYml0cworCXB4b3IJJHR3cmVzLCBAWE1NWzddCitfX18KKyAgICAkY29kZS49PDxfX18gaWYgKCRpPj0xKTsKKwltb3ZkcXUJYDB4MTAqKCRpLTEpYCgkaW5wKSwgQFhNTVs4KyRpLTFdCitfX18KKyAgICAkY29kZS49PDxfX18gaWYgKCRpPj0yKTsKKwlweG9yCUBYTU1bOCskaS0yXSwgQFhNTVskaS0yXSMgaW5wdXRbXSBeIHR3ZWFrW10KK19fXworICAgIH0KKyRjb2RlLj08PF9fXzsKKwltb3ZkcXUJMHg2MCgkaW5wKSwgQFhNTVs4KzZdCisJcHhvcglAWE1NWzgrNV0sIEBYTU1bNV0KKwltb3ZkcXUJMHg3MCgkaW5wKSwgQFhNTVs4KzddCisJbGVhCTB4ODAoJGlucCksICRpbnAKKwltb3ZkcWEJQFhNTVs3XSwgMHg3MCglcnNwKQorCXB4b3IJQFhNTVs4KzZdLCBAWE1NWzZdCisJbGVhCTB4ODAoJXJzcCksICVyYXgJIyBwYXNzIGtleSBzY2hlZHVsZQorCXB4b3IJQFhNTVs4KzddLCBAWE1NWzddCisJbW92CSVlZHgsICVyMTBkCQkjIHBhc3Mgcm91bmRzCisKKwljYWxsCV9ic2Flc19kZWNyeXB0OAorCisJcHhvcgkweDAwKCVyc3ApLCBAWE1NWzBdCSMgXj0gdHdlYWtbXQorCXB4b3IJMHgxMCglcnNwKSwgQFhNTVsxXQorCW1vdmRxdQlAWE1NWzBdLCAweDAwKCRvdXQpCSMgd3JpdGUgb3V0cHV0CisJcHhvcgkweDIwKCVyc3ApLCBAWE1NWzZdCisJbW92ZHF1CUBYTU1bMV0sIDB4MTAoJG91dCkKKwlweG9yCTB4MzAoJXJzcCksIEBYTU1bNF0KKwltb3ZkcXUJQFhNTVs2XSwgMHgyMCgkb3V0KQorCXB4b3IJMHg0MCglcnNwKSwgQFhNTVsyXQorCW1vdmRxdQlAWE1NWzRdLCAweDMwKCRvdXQpCisJcHhvcgkweDUwKCVyc3ApLCBAWE1NWzddCisJbW92ZHF1CUBYTU1bMl0sIDB4NDAoJG91dCkKKwlweG9yCTB4NjAoJXJzcCksIEBYTU1bM10KKwltb3ZkcXUJQFhNTVs3XSwgMHg1MCgkb3V0KQorCXB4b3IJMHg3MCglcnNwKSwgQFhNTVs1XQorCW1vdmRxdQlAWE1NWzNdLCAweDYwKCRvdXQpCisJbW92ZHF1CUBYTU1bNV0sIDB4NzAoJG91dCkKKwlsZWEJMHg4MCgkb3V0KSwgJG91dAorCisJbW92ZHFhCTB4NzAoJXJzcCksIEBYTU1bN10JIyBwcmVwYXJlIG5leHQgaXRlcmF0aW9uIHR3ZWFrCisJcHhvcgkkdHd0bXAsICR0d3RtcAorCW1vdmRxYQkuTHh0c19tYWdpYyglcmlwKSwgJHR3bWFzaworCXBjbXBndGQJQFhNTVs3XSwgJHR3dG1wCisJcHNodWZkCVwkMHgxMywgJHR3dG1wLCAkdHdyZXMKKwlweG9yCSR0d3RtcCwgJHR3dG1wCisJcGFkZHEJQFhNTVs3XSwgQFhNTVs3XQkjIHBzbGxxCTEsJHR3ZWFrCisJcGFuZAkkdHdtYXNrLCAkdHdyZXMJCSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCXBjbXBndGQJQFhNTVs3XSwgJHR3dG1wCQkjIGJyb2FkY2FzdCB1cHBlciBiaXRzCisJcHhvcgkkdHdyZXMsIEBYTU1bN10KKworCXN1YglcJDB4ODAsJGxlbgorCWpuYwkuTHh0c19kZWNfbG9vcAorCisuTHh0c19kZWNfc2hvcnQ6CisJYWRkCVwkMHg4MCwgJGxlbgorCWp6CS5MeHRzX2RlY19kb25lCitfX18KKyAgICBmb3IgKCRpPTA7JGk8NzskaSsrKSB7CisgICAgJGNvZGUuPTw8X19fOworCXBzaHVmZAlcJDB4MTMsICR0d3RtcCwgJHR3cmVzCisJcHhvcgkkdHd0bXAsICR0d3RtcAorCW1vdmRxYQlAWE1NWzddLCBAWE1NWyRpXQorCW1vdmRxYQlAWE1NWzddLCBgMHgxMCokaWAoJXJzcCkjIHNhdmUgdHdlYWtbJGldCisJcGFkZHEJQFhNTVs3XSwgQFhNTVs3XQkjIHBzbGxxCTEsJHR3ZWFrCisJcGFuZAkkdHdtYXNrLCAkdHdyZXMJCSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCXBjbXBndGQJQFhNTVs3XSwgJHR3dG1wCQkjIGJyb2FkY2FzdCB1cHBlciBiaXRzCisJcHhvcgkkdHdyZXMsIEBYTU1bN10KK19fXworICAgICRjb2RlLj08PF9fXyBpZiAoJGk+PTEpOworCW1vdmRxdQlgMHgxMCooJGktMSlgKCRpbnApLCBAWE1NWzgrJGktMV0KKwljbXAJXCRgMHgxMCokaWAsJGxlbgorCWplCS5MeHRzX2RlY18kaQorX19fCisgICAgJGNvZGUuPTw8X19fIGlmICgkaT49Mik7CisJcHhvcglAWE1NWzgrJGktMl0sIEBYTU1bJGktMl0jIGlucHV0W10gXiB0d2Vha1tdCitfX18KKyAgICB9CiskY29kZS49PDxfX187CisJbW92ZHF1CTB4NjAoJGlucCksIEBYTU1bOCs2XQorCXB4b3IJQFhNTVs4KzVdLCBAWE1NWzVdCisJbW92ZHFhCUBYTU1bN10sIDB4NzAoJXJzcCkKKwlsZWEJMHg3MCgkaW5wKSwgJGlucAorCXB4b3IJQFhNTVs4KzZdLCBAWE1NWzZdCisJbGVhCTB4ODAoJXJzcCksICVyYXgJIyBwYXNzIGtleSBzY2hlZHVsZQorCW1vdgklZWR4LCAlcjEwZAkJIyBwYXNzIHJvdW5kcworCisJY2FsbAlfYnNhZXNfZGVjcnlwdDgKKworCXB4b3IJMHgwMCglcnNwKSwgQFhNTVswXQkjIF49IHR3ZWFrW10KKwlweG9yCTB4MTAoJXJzcCksIEBYTU1bMV0KKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCXB4b3IJMHgyMCglcnNwKSwgQFhNTVs2XQorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJcHhvcgkweDMwKCVyc3ApLCBAWE1NWzRdCisJbW92ZHF1CUBYTU1bNl0sIDB4MjAoJG91dCkKKwlweG9yCTB4NDAoJXJzcCksIEBYTU1bMl0KKwltb3ZkcXUJQFhNTVs0XSwgMHgzMCgkb3V0KQorCXB4b3IJMHg1MCglcnNwKSwgQFhNTVs3XQorCW1vdmRxdQlAWE1NWzJdLCAweDQwKCRvdXQpCisJcHhvcgkweDYwKCVyc3ApLCBAWE1NWzNdCisJbW92ZHF1CUBYTU1bN10sIDB4NTAoJG91dCkKKwltb3ZkcXUJQFhNTVszXSwgMHg2MCgkb3V0KQorCWxlYQkweDcwKCRvdXQpLCAkb3V0CisKKwltb3ZkcWEJMHg3MCglcnNwKSwgQFhNTVs3XQkjIG5leHQgaXRlcmF0aW9uIHR3ZWFrCisJam1wCS5MeHRzX2RlY19kb25lCisuYWxpZ24JMTYKKy5MeHRzX2RlY182OgorCXB4b3IJQFhNTVs4KzRdLCBAWE1NWzRdCisJbGVhCTB4NjAoJGlucCksICRpbnAKKwlweG9yCUBYTU1bOCs1XSwgQFhNTVs1XQorCWxlYQkweDgwKCVyc3ApLCAlcmF4CSMgcGFzcyBrZXkgc2NoZWR1bGUKKwltb3YJJWVkeCwgJXIxMGQJCSMgcGFzcyByb3VuZHMKKworCWNhbGwJX2JzYWVzX2RlY3J5cHQ4CisKKwlweG9yCTB4MDAoJXJzcCksIEBYTU1bMF0JIyBePSB0d2Vha1tdCisJcHhvcgkweDEwKCVyc3ApLCBAWE1NWzFdCisJbW92ZHF1CUBYTU1bMF0sIDB4MDAoJG91dCkJIyB3cml0ZSBvdXRwdXQKKwlweG9yCTB4MjAoJXJzcCksIEBYTU1bNl0KKwltb3ZkcXUJQFhNTVsxXSwgMHgxMCgkb3V0KQorCXB4b3IJMHgzMCglcnNwKSwgQFhNTVs0XQorCW1vdmRxdQlAWE1NWzZdLCAweDIwKCRvdXQpCisJcHhvcgkweDQwKCVyc3ApLCBAWE1NWzJdCisJbW92ZHF1CUBYTU1bNF0sIDB4MzAoJG91dCkKKwlweG9yCTB4NTAoJXJzcCksIEBYTU1bN10KKwltb3ZkcXUJQFhNTVsyXSwgMHg0MCgkb3V0KQorCW1vdmRxdQlAWE1NWzddLCAweDUwKCRvdXQpCisJbGVhCTB4NjAoJG91dCksICRvdXQKKworCW1vdmRxYQkweDYwKCVyc3ApLCBAWE1NWzddCSMgbmV4dCBpdGVyYXRpb24gdHdlYWsKKwlqbXAJLkx4dHNfZGVjX2RvbmUKKy5hbGlnbgkxNgorLkx4dHNfZGVjXzU6CisJcHhvcglAWE1NWzgrM10sIEBYTU1bM10KKwlsZWEJMHg1MCgkaW5wKSwgJGlucAorCXB4b3IJQFhNTVs4KzRdLCBAWE1NWzRdCisJbGVhCTB4ODAoJXJzcCksICVyYXgJIyBwYXNzIGtleSBzY2hlZHVsZQorCW1vdgklZWR4LCAlcjEwZAkJIyBwYXNzIHJvdW5kcworCisJY2FsbAlfYnNhZXNfZGVjcnlwdDgKKworCXB4b3IJMHgwMCglcnNwKSwgQFhNTVswXQkjIF49IHR3ZWFrW10KKwlweG9yCTB4MTAoJXJzcCksIEBYTU1bMV0KKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCXB4b3IJMHgyMCglcnNwKSwgQFhNTVs2XQorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJcHhvcgkweDMwKCVyc3ApLCBAWE1NWzRdCisJbW92ZHF1CUBYTU1bNl0sIDB4MjAoJG91dCkKKwlweG9yCTB4NDAoJXJzcCksIEBYTU1bMl0KKwltb3ZkcXUJQFhNTVs0XSwgMHgzMCgkb3V0KQorCW1vdmRxdQlAWE1NWzJdLCAweDQwKCRvdXQpCisJbGVhCTB4NTAoJG91dCksICRvdXQKKworCW1vdmRxYQkweDUwKCVyc3ApLCBAWE1NWzddCSMgbmV4dCBpdGVyYXRpb24gdHdlYWsKKwlqbXAJLkx4dHNfZGVjX2RvbmUKKy5hbGlnbgkxNgorLkx4dHNfZGVjXzQ6CisJcHhvcglAWE1NWzgrMl0sIEBYTU1bMl0KKwlsZWEJMHg0MCgkaW5wKSwgJGlucAorCXB4b3IJQFhNTVs4KzNdLCBAWE1NWzNdCisJbGVhCTB4ODAoJXJzcCksICVyYXgJIyBwYXNzIGtleSBzY2hlZHVsZQorCW1vdgklZWR4LCAlcjEwZAkJIyBwYXNzIHJvdW5kcworCisJY2FsbAlfYnNhZXNfZGVjcnlwdDgKKworCXB4b3IJMHgwMCglcnNwKSwgQFhNTVswXQkjIF49IHR3ZWFrW10KKwlweG9yCTB4MTAoJXJzcCksIEBYTU1bMV0KKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCXB4b3IJMHgyMCglcnNwKSwgQFhNTVs2XQorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJcHhvcgkweDMwKCVyc3ApLCBAWE1NWzRdCisJbW92ZHF1CUBYTU1bNl0sIDB4MjAoJG91dCkKKwltb3ZkcXUJQFhNTVs0XSwgMHgzMCgkb3V0KQorCWxlYQkweDQwKCRvdXQpLCAkb3V0CisKKwltb3ZkcWEJMHg0MCglcnNwKSwgQFhNTVs3XQkjIG5leHQgaXRlcmF0aW9uIHR3ZWFrCisJam1wCS5MeHRzX2RlY19kb25lCisuYWxpZ24JMTYKKy5MeHRzX2RlY18zOgorCXB4b3IJQFhNTVs4KzFdLCBAWE1NWzFdCisJbGVhCTB4MzAoJGlucCksICRpbnAKKwlweG9yCUBYTU1bOCsyXSwgQFhNTVsyXQorCWxlYQkweDgwKCVyc3ApLCAlcmF4CSMgcGFzcyBrZXkgc2NoZWR1bGUKKwltb3YJJWVkeCwgJXIxMGQJCSMgcGFzcyByb3VuZHMKKworCWNhbGwJX2JzYWVzX2RlY3J5cHQ4CisKKwlweG9yCTB4MDAoJXJzcCksIEBYTU1bMF0JIyBePSB0d2Vha1tdCisJcHhvcgkweDEwKCVyc3ApLCBAWE1NWzFdCisJbW92ZHF1CUBYTU1bMF0sIDB4MDAoJG91dCkJIyB3cml0ZSBvdXRwdXQKKwlweG9yCTB4MjAoJXJzcCksIEBYTU1bNl0KKwltb3ZkcXUJQFhNTVsxXSwgMHgxMCgkb3V0KQorCW1vdmRxdQlAWE1NWzZdLCAweDIwKCRvdXQpCisJbGVhCTB4MzAoJG91dCksICRvdXQKKworCW1vdmRxYQkweDMwKCVyc3ApLCBAWE1NWzddCSMgbmV4dCBpdGVyYXRpb24gdHdlYWsKKwlqbXAJLkx4dHNfZGVjX2RvbmUKKy5hbGlnbgkxNgorLkx4dHNfZGVjXzI6CisJcHhvcglAWE1NWzgrMF0sIEBYTU1bMF0KKwlsZWEJMHgyMCgkaW5wKSwgJGlucAorCXB4b3IJQFhNTVs4KzFdLCBAWE1NWzFdCisJbGVhCTB4ODAoJXJzcCksICVyYXgJIyBwYXNzIGtleSBzY2hlZHVsZQorCW1vdgklZWR4LCAlcjEwZAkJIyBwYXNzIHJvdW5kcworCisJY2FsbAlfYnNhZXNfZGVjcnlwdDgKKworCXB4b3IJMHgwMCglcnNwKSwgQFhNTVswXQkjIF49IHR3ZWFrW10KKwlweG9yCTB4MTAoJXJzcCksIEBYTU1bMV0KKwltb3ZkcXUJQFhNTVswXSwgMHgwMCgkb3V0KQkjIHdyaXRlIG91dHB1dAorCW1vdmRxdQlAWE1NWzFdLCAweDEwKCRvdXQpCisJbGVhCTB4MjAoJG91dCksICRvdXQKKworCW1vdmRxYQkweDIwKCVyc3ApLCBAWE1NWzddCSMgbmV4dCBpdGVyYXRpb24gdHdlYWsKKwlqbXAJLkx4dHNfZGVjX2RvbmUKKy5hbGlnbgkxNgorLkx4dHNfZGVjXzE6CisJcHhvcglAWE1NWzBdLCBAWE1NWzhdCisJbGVhCTB4MTAoJGlucCksICRpbnAKKwltb3ZkcWEJQFhNTVs4XSwgMHgyMCglcmJwKQorCWxlYQkweDIwKCVyYnApLCAkYXJnMQorCWxlYQkweDIwKCVyYnApLCAkYXJnMgorCWxlYQkoJGtleSksICRhcmczCisJY2FsbAlhc21fQUVTX2RlY3J5cHQJCSMgZG9lc24ndCB0b3VjaCAleG1tCisJcHhvcgkweDIwKCVyYnApLCBAWE1NWzBdCSMgXj0gdHdlYWtbXQorCSNweG9yCUBYTU1bOF0sIEBYTU1bMF0KKwkjbGVhCTB4ODAoJXJzcCksICVyYXgJIyBwYXNzIGtleSBzY2hlZHVsZQorCSNtb3YJJWVkeCwgJXIxMGQJCSMgcGFzcyByb3VuZHMKKwkjY2FsbAlfYnNhZXNfZGVjcnlwdDgKKwkjcHhvcgkweDAwKCVyc3ApLCBAWE1NWzBdCSMgXj0gdHdlYWtbXQorCW1vdmRxdQlAWE1NWzBdLCAweDAwKCRvdXQpCSMgd3JpdGUgb3V0cHV0CisJbGVhCTB4MTAoJG91dCksICRvdXQKKworCW1vdmRxYQkweDEwKCVyc3ApLCBAWE1NWzddCSMgbmV4dCBpdGVyYXRpb24gdHdlYWsKKworLkx4dHNfZGVjX2RvbmU6CisJYW5kCVwkMTUsICVlYngKKwlqegkuTHh0c19kZWNfcmV0CisKKwlweG9yCSR0d3RtcCwgJHR3dG1wCisJbW92ZHFhCS5MeHRzX21hZ2ljKCVyaXApLCAkdHdtYXNrCisJcGNtcGd0ZAlAWE1NWzddLCAkdHd0bXAKKwlwc2h1ZmQJXCQweDEzLCAkdHd0bXAsICR0d3JlcworCW1vdmRxYQlAWE1NWzddLCBAWE1NWzZdCisJcGFkZHEJQFhNTVs3XSwgQFhNTVs3XQkjIHBzbGxxIDEsJHR3ZWFrCisJcGFuZAkkdHdtYXNrLCAkdHdyZXMJCSMgaXNvbGF0ZSBjYXJyeSBhbmQgcmVzaWR1ZQorCW1vdmRxdQkoJGlucCksIEBYTU1bMF0KKwlweG9yCSR0d3JlcywgQFhNTVs3XQorCisJbGVhCTB4MjAoJXJicCksICRhcmcxCisJcHhvcglAWE1NWzddLCBAWE1NWzBdCisJbGVhCTB4MjAoJXJicCksICRhcmcyCisJbW92ZHFhCUBYTU1bMF0sIDB4MjAoJXJicCkKKwlsZWEJKCRrZXkpLCAkYXJnMworCWNhbGwJYXNtX0FFU19kZWNyeXB0CQkjIGRvZXNuJ3QgdG91Y2ggJXhtbQorCXB4b3IJMHgyMCglcmJwKSwgQFhNTVs3XQorCW1vdgkkb3V0LCAlcmR4CisJbW92ZHF1CUBYTU1bN10sICgkb3V0KQorCisuTHh0c19kZWNfc3RlYWw6CisJbW92emIJMTYoJGlucCksICVlYXgKKwltb3Z6YgkoJXJkeCksICVlY3gKKwlsZWEJMSgkaW5wKSwgJGlucAorCW1vdgklYWwsICglcmR4KQorCW1vdgklY2wsIDE2KCVyZHgpCisJbGVhCTEoJXJkeCksICVyZHgKKwlzdWIJXCQxLCVlYngKKwlqbnoJLkx4dHNfZGVjX3N0ZWFsCisKKwltb3ZkcXUJKCRvdXQpLCBAWE1NWzBdCisJbGVhCTB4MjAoJXJicCksICRhcmcxCisJcHhvcglAWE1NWzZdLCBAWE1NWzBdCisJbGVhCTB4MjAoJXJicCksICRhcmcyCisJbW92ZHFhCUBYTU1bMF0sIDB4MjAoJXJicCkKKwlsZWEJKCRrZXkpLCAkYXJnMworCWNhbGwJYXNtX0FFU19kZWNyeXB0CQkjIGRvZXNuJ3QgdG91Y2ggJXhtbQorCXB4b3IJMHgyMCglcmJwKSwgQFhNTVs2XQorCW1vdmRxdQlAWE1NWzZdLCAoJG91dCkKKworLkx4dHNfZGVjX3JldDoKKwlsZWEJKCVyc3ApLCAlcmF4CisJcHhvcgkleG1tMCwgJXhtbTAKKy5MeHRzX2RlY19iemVybzoJCQkjIHdpcGUga2V5IHNjaGVkdWxlIFtpZiBhbnldCisJbW92ZHFhCSV4bW0wLCAweDAwKCVyYXgpCisJbW92ZHFhCSV4bW0wLCAweDEwKCVyYXgpCisJbGVhCTB4MjAoJXJheCksICVyYXgKKwljbXAJJXJheCwgJXJicAorCWphCS5MeHRzX2RlY19iemVybworCisJbGVhCSglcmJwKSwlcnNwCQkjIHJlc3RvcmUgJXJzcAorX19fCiskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisJbW92YXBzCTB4NDAoJXJicCksICV4bW02CisJbW92YXBzCTB4NTAoJXJicCksICV4bW03CisJbW92YXBzCTB4NjAoJXJicCksICV4bW04CisJbW92YXBzCTB4NzAoJXJicCksICV4bW05CisJbW92YXBzCTB4ODAoJXJicCksICV4bW0xMAorCW1vdmFwcwkweDkwKCVyYnApLCAleG1tMTEKKwltb3ZhcHMJMHhhMCglcmJwKSwgJXhtbTEyCisJbW92YXBzCTB4YjAoJXJicCksICV4bW0xMworCW1vdmFwcwkweGMwKCVyYnApLCAleG1tMTQKKwltb3ZhcHMJMHhkMCglcmJwKSwgJXhtbTE1CisJbGVhCTB4YTAoJXJicCksICVyc3AKK19fXworJGNvZGUuPTw8X19fOworCW1vdgkweDQ4KCVyc3ApLCAlcjE1CisJbW92CTB4NTAoJXJzcCksICVyMTQKKwltb3YJMHg1OCglcnNwKSwgJXIxMworCW1vdgkweDYwKCVyc3ApLCAlcjEyCisJbW92CTB4NjgoJXJzcCksICVyYngKKwltb3YJMHg3MCglcnNwKSwgJXJheAorCWxlYQkweDc4KCVyc3ApLCAlcnNwCisJbW92CSVyYXgsICVyYnAKKy5MeHRzX2RlY19lcGlsb2d1ZToKKwlyZXQKKy5zaXplCWJzYWVzX3h0c19kZWNyeXB0LC4tYnNhZXNfeHRzX2RlY3J5cHQKK19fXworfQorJGNvZGUuPTw8X19fOworLnR5cGUJX2JzYWVzX2NvbnN0LFxAb2JqZWN0CisuYWxpZ24JNjQKK19ic2Flc19jb25zdDoKKy5MTTBJU1I6CSMgSW52U2hpZnRSb3dzIGNvbnN0YW50cworCS5xdWFkCTB4MGEwZTAyMDYwNzBiMGYwMywgMHgwMDA0MDgwYzBkMDEwNTA5CisuTElTUk0wOgorCS5xdWFkCTB4MDEwNDBiMGUwMjA1MDgwZiwgMHgwMzA2MDkwYzAwMDcwYTBkCisuTElTUjoKKwkucXVhZAkweDA1MDQwNzA2MDIwMTAwMDMsIDB4MGYwZTBkMGMwODBiMGEwOQorLkxCUzA6CQkjIGJpdC1zbGljZSBjb25zdGFudHMKKwkucXVhZAkweDU1NTU1NTU1NTU1NTU1NTUsIDB4NTU1NTU1NTU1NTU1NTU1NQorLkxCUzE6CisJLnF1YWQJMHgzMzMzMzMzMzMzMzMzMzMzLCAweDMzMzMzMzMzMzMzMzMzMzMKKy5MQlMyOgorCS5xdWFkCTB4MGYwZjBmMGYwZjBmMGYwZiwgMHgwZjBmMGYwZjBmMGYwZjBmCisuTFNSOgkJIyBzaGlmdHJvd3MgY29uc3RhbnRzCisJLnF1YWQJMHgwNTA0MDcwNjAwMDMwMjAxLCAweDBmMGUwZDBjMGEwOTA4MGIKKy5MU1JNMDoKKwkucXVhZAkweDAzMDQwOTBlMDAwNTBhMGYsIDB4MDEwNjBiMGMwMjA3MDgwZAorLkxNMFNSOgorCS5xdWFkCTB4MGEwZTAyMDYwZjAzMDcwYiwgMHgwMDA0MDgwYzA1MDkwZDAxCisuTFNXUFVQOgkjIGJ5dGUtc3dhcCB1cHBlciBkd29yZAorCS5xdWFkCTB4MDcwNjA1MDQwMzAyMDEwMCwgMHgwYzBkMGUwZjBiMGEwOTA4CisuTFNXUFVQTTBTUjoKKwkucXVhZAkweDBhMGQwMjA2MGMwMzA3MGIsIDB4MDAwNDA4MGYwNTA5MGUwMQorLkxBREQxOgkJIyBjb3VudGVyIGluY3JlbWVudCBjb25zdGFudHMKKwkucXVhZAkweDAwMDAwMDAwMDAwMDAwMDAsIDB4MDAwMDAwMDEwMDAwMDAwMAorLkxBREQyOgorCS5xdWFkCTB4MDAwMDAwMDAwMDAwMDAwMCwgMHgwMDAwMDAwMjAwMDAwMDAwCisuTEFERDM6CisJLnF1YWQJMHgwMDAwMDAwMDAwMDAwMDAwLCAweDAwMDAwMDAzMDAwMDAwMDAKKy5MQURENDoKKwkucXVhZAkweDAwMDAwMDAwMDAwMDAwMDAsIDB4MDAwMDAwMDQwMDAwMDAwMAorLkxBREQ1OgorCS5xdWFkCTB4MDAwMDAwMDAwMDAwMDAwMCwgMHgwMDAwMDAwNTAwMDAwMDAwCisuTEFERDY6CisJLnF1YWQJMHgwMDAwMDAwMDAwMDAwMDAwLCAweDAwMDAwMDA2MDAwMDAwMDAKKy5MQURENzoKKwkucXVhZAkweDAwMDAwMDAwMDAwMDAwMDAsIDB4MDAwMDAwMDcwMDAwMDAwMAorLkxBREQ4OgorCS5xdWFkCTB4MDAwMDAwMDAwMDAwMDAwMCwgMHgwMDAwMDAwODAwMDAwMDAwCisuTHh0c19tYWdpYzoKKwkubG9uZwkweDg3LDAsMSwwCisuTG1hc2tzOgorCS5xdWFkCTB4MDEwMTAxMDEwMTAxMDEwMSwgMHgwMTAxMDEwMTAxMDEwMTAxCisJLnF1YWQJMHgwMjAyMDIwMjAyMDIwMjAyLCAweDAyMDIwMjAyMDIwMjAyMDIKKwkucXVhZAkweDA0MDQwNDA0MDQwNDA0MDQsIDB4MDQwNDA0MDQwNDA0MDQwNAorCS5xdWFkCTB4MDgwODA4MDgwODA4MDgwOCwgMHgwODA4MDgwODA4MDgwODA4CisuTE0wOgorCS5xdWFkCTB4MDIwNjBhMGUwMzA3MGIwZiwgMHgwMDA0MDgwYzAxMDUwOTBkCisuTDYzOgorCS5xdWFkCTB4NjM2MzYzNjM2MzYzNjM2MywgMHg2MzYzNjM2MzYzNjM2MzYzCisuYXNjaXoJIkJpdC1zbGljZWQgQUVTIGZvciB4ODZfNjQvU1NTRTMsIEVtaWxpYSBLw6RzcGVyLCBQZXRlciBTY2h3YWJlLCBBbmR5IFBvbHlha292IgorLmFsaWduCTY0Cisuc2l6ZQlfYnNhZXNfY29uc3QsLi1fYnNhZXNfY29uc3QKK19fXworCisjIEVYQ0VQVElPTl9ESVNQT1NJVElPTiBoYW5kbGVyIChFWENFUFRJT05fUkVDT1JEICpyZWMsVUxPTkc2NCBmcmFtZSwKKyMJCUNPTlRFWFQgKmNvbnRleHQsRElTUEFUQ0hFUl9DT05URVhUICpkaXNwKQoraWYgKCR3aW42NCkgeworJHJlYz0iJXJjeCI7CiskZnJhbWU9IiVyZHgiOworJGNvbnRleHQ9IiVyOCI7CiskZGlzcD0iJXI5IjsKKworJGNvZGUuPTw8X19fOworLmV4dGVybglfX2ltcF9SdGxWaXJ0dWFsVW53aW5kCisudHlwZQlzZV9oYW5kbGVyLFxAYWJpLW9tbmlwb3RlbnQKKy5hbGlnbgkxNgorc2VfaGFuZGxlcjoKKwlwdXNoCSVyc2kKKwlwdXNoCSVyZGkKKwlwdXNoCSVyYngKKwlwdXNoCSVyYnAKKwlwdXNoCSVyMTIKKwlwdXNoCSVyMTMKKwlwdXNoCSVyMTQKKwlwdXNoCSVyMTUKKwlwdXNoZnEKKwlzdWIJXCQ2NCwlcnNwCisKKwltb3YJMTIwKCRjb250ZXh0KSwlcmF4CSMgcHVsbCBjb250ZXh0LT5SYXgKKwltb3YJMjQ4KCRjb250ZXh0KSwlcmJ4CSMgcHVsbCBjb250ZXh0LT5SaXAKKworCW1vdgk4KCRkaXNwKSwlcnNpCQkjIGRpc3AtPkltYWdlQmFzZQorCW1vdgk1NigkZGlzcCksJXIxMQkJIyBkaXNwLT5IYW5kbGVyRGF0YQorCisJbW92CTAoJXIxMSksJXIxMGQJCSMgSGFuZGxlckRhdGFbMF0KKwlsZWEJKCVyc2ksJXIxMCksJXIxMAkjIHByb2xvZ3VlIGxhYmVsCisJY21wCSVyMTAsJXJieAkJIyBjb250ZXh0LT5SaXA8cHJvbG9ndWUgbGFiZWwKKwlqYgkuTGluX3Byb2xvZ3VlCisKKwltb3YJMTUyKCRjb250ZXh0KSwlcmF4CSMgcHVsbCBjb250ZXh0LT5Sc3AKKworCW1vdgk0KCVyMTEpLCVyMTBkCQkjIEhhbmRsZXJEYXRhWzFdCisJbGVhCSglcnNpLCVyMTApLCVyMTAJIyBlcGlsb2d1ZSBsYWJlbAorCWNtcAklcjEwLCVyYngJCSMgY29udGV4dC0+UmlwPj1lcGlsb2d1ZSBsYWJlbAorCWphZQkuTGluX3Byb2xvZ3VlCisKKwltb3YJMTYwKCRjb250ZXh0KSwlcmF4CSMgcHVsbCBjb250ZXh0LT5SYnAKKworCWxlYQkweDQwKCVyYXgpLCVyc2kJCSMgJXhtbSBzYXZlIGFyZWEKKwlsZWEJNTEyKCRjb250ZXh0KSwlcmRpCSMgJmNvbnRleHQuWG1tNgorCW1vdglcJDIwLCVlY3gJCSMgMTAqc2l6ZW9mKCV4bW0wKS9zaXplb2YoJXJheCkKKwkubG9uZwkweGE1NDhmM2ZjCQkjIGNsZDsgcmVwIG1vdnNxCisJbGVhCTB4YTAoJXJheCksJXJheAkJIyBhZGp1c3Qgc3RhY2sgcG9pbnRlcgorCisJbW92CTB4NzAoJXJheCksJXJicAorCW1vdgkweDY4KCVyYXgpLCVyYngKKwltb3YJMHg2MCglcmF4KSwlcjEyCisJbW92CTB4NTgoJXJheCksJXIxMworCW1vdgkweDUwKCVyYXgpLCVyMTQKKwltb3YJMHg0OCglcmF4KSwlcjE1CisJbGVhCTB4NzgoJXJheCksJXJheAkJIyBhZGp1c3Qgc3RhY2sgcG9pbnRlcgorCW1vdgklcmJ4LDE0NCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJieAorCW1vdgklcmJwLDE2MCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJicAorCW1vdgklcjEyLDIxNigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxMgorCW1vdgklcjEzLDIyNCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxMworCW1vdgklcjE0LDIzMigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxNAorCW1vdgklcjE1LDI0MCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlIxNQorCisuTGluX3Byb2xvZ3VlOgorCW1vdgklcmF4LDE1MigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJzcAorCisJbW92CTQwKCRkaXNwKSwlcmRpCQkjIGRpc3AtPkNvbnRleHRSZWNvcmQKKwltb3YJJGNvbnRleHQsJXJzaQkJIyBjb250ZXh0CisJbW92CVwkYDEyMzIvOGAsJWVjeAkJIyBzaXplb2YoQ09OVEVYVCkKKwkubG9uZwkweGE1NDhmM2ZjCQkjIGNsZDsgcmVwIG1vdnNxCisKKwltb3YJJGRpc3AsJXJzaQorCXhvcgklcmN4LCVyY3gJCSMgYXJnMSwgVU5XX0ZMQUdfTkhBTkRMRVIKKwltb3YJOCglcnNpKSwlcmR4CQkjIGFyZzIsIGRpc3AtPkltYWdlQmFzZQorCW1vdgkwKCVyc2kpLCVyOAkJIyBhcmczLCBkaXNwLT5Db250cm9sUGMKKwltb3YJMTYoJXJzaSksJXI5CQkjIGFyZzQsIGRpc3AtPkZ1bmN0aW9uRW50cnkKKwltb3YJNDAoJXJzaSksJXIxMAkJIyBkaXNwLT5Db250ZXh0UmVjb3JkCisJbGVhCTU2KCVyc2kpLCVyMTEJCSMgJmRpc3AtPkhhbmRsZXJEYXRhCisJbGVhCTI0KCVyc2kpLCVyMTIJCSMgJmRpc3AtPkVzdGFibGlzaGVyRnJhbWUKKwltb3YJJXIxMCwzMiglcnNwKQkJIyBhcmc1CisJbW92CSVyMTEsNDAoJXJzcCkJCSMgYXJnNgorCW1vdgklcjEyLDQ4KCVyc3ApCQkjIGFyZzcKKwltb3YJJXJjeCw1NiglcnNwKQkJIyBhcmc4LCAoTlVMTCkKKwljYWxsCSpfX2ltcF9SdGxWaXJ0dWFsVW53aW5kKCVyaXApCisKKwltb3YJXCQxLCVlYXgJCSMgRXhjZXB0aW9uQ29udGludWVTZWFyY2gKKwlhZGQJXCQ2NCwlcnNwCisJcG9wZnEKKwlwb3AJJXIxNQorCXBvcAklcjE0CisJcG9wCSVyMTMKKwlwb3AJJXIxMgorCXBvcAklcmJwCisJcG9wCSVyYngKKwlwb3AJJXJkaQorCXBvcAklcnNpCisJcmV0Cisuc2l6ZQlzZV9oYW5kbGVyLC4tc2VfaGFuZGxlcgorCisuc2VjdGlvbgkucGRhdGEKKy5hbGlnbgk0CitfX18KKyRjb2RlLj08PF9fXyBpZiAoJGVjYik7CisJLnJ2YQkuTGVjYl9lbmNfcHJvbG9ndWUKKwkucnZhCS5MZWNiX2VuY19lcGlsb2d1ZQorCS5ydmEJLkxlY2JfZW5jX2luZm8KKworCS5ydmEJLkxlY2JfZGVjX3Byb2xvZ3VlCisJLnJ2YQkuTGVjYl9kZWNfZXBpbG9ndWUKKwkucnZhCS5MZWNiX2RlY19pbmZvCitfX18KKyRjb2RlLj08PF9fXzsKKwkucnZhCS5MY2JjX2RlY19wcm9sb2d1ZQorCS5ydmEJLkxjYmNfZGVjX2VwaWxvZ3VlCisJLnJ2YQkuTGNiY19kZWNfaW5mbworCisJLnJ2YQkuTGN0cl9lbmNfcHJvbG9ndWUKKwkucnZhCS5MY3RyX2VuY19lcGlsb2d1ZQorCS5ydmEJLkxjdHJfZW5jX2luZm8KKworCS5ydmEJLkx4dHNfZW5jX3Byb2xvZ3VlCisJLnJ2YQkuTHh0c19lbmNfZXBpbG9ndWUKKwkucnZhCS5MeHRzX2VuY19pbmZvCisKKwkucnZhCS5MeHRzX2RlY19wcm9sb2d1ZQorCS5ydmEJLkx4dHNfZGVjX2VwaWxvZ3VlCisJLnJ2YQkuTHh0c19kZWNfaW5mbworCisuc2VjdGlvbgkueGRhdGEKKy5hbGlnbgk4CitfX18KKyRjb2RlLj08PF9fXyBpZiAoJGVjYik7CisuTGVjYl9lbmNfaW5mbzoKKwkuYnl0ZQk5LDAsMCwwCisJLnJ2YQlzZV9oYW5kbGVyCisJLnJ2YQkuTGVjYl9lbmNfYm9keSwuTGVjYl9lbmNfZXBpbG9ndWUJIyBIYW5kbGVyRGF0YVtdCisuTGVjYl9kZWNfaW5mbzoKKwkuYnl0ZQk5LDAsMCwwCisJLnJ2YQlzZV9oYW5kbGVyCisJLnJ2YQkuTGVjYl9kZWNfYm9keSwuTGVjYl9kZWNfZXBpbG9ndWUJIyBIYW5kbGVyRGF0YVtdCitfX18KKyRjb2RlLj08PF9fXzsKKy5MY2JjX2RlY19pbmZvOgorCS5ieXRlCTksMCwwLDAKKwkucnZhCXNlX2hhbmRsZXIKKwkucnZhCS5MY2JjX2RlY19ib2R5LC5MY2JjX2RlY19lcGlsb2d1ZQkjIEhhbmRsZXJEYXRhW10KKy5MY3RyX2VuY19pbmZvOgorCS5ieXRlCTksMCwwLDAKKwkucnZhCXNlX2hhbmRsZXIKKwkucnZhCS5MY3RyX2VuY19ib2R5LC5MY3RyX2VuY19lcGlsb2d1ZQkjIEhhbmRsZXJEYXRhW10KKy5MeHRzX2VuY19pbmZvOgorCS5ieXRlCTksMCwwLDAKKwkucnZhCXNlX2hhbmRsZXIKKwkucnZhCS5MeHRzX2VuY19ib2R5LC5MeHRzX2VuY19lcGlsb2d1ZQkjIEhhbmRsZXJEYXRhW10KKy5MeHRzX2RlY19pbmZvOgorCS5ieXRlCTksMCwwLDAKKwkucnZhCXNlX2hhbmRsZXIKKwkucnZhCS5MeHRzX2RlY19ib2R5LC5MeHRzX2RlY19lcGlsb2d1ZQkjIEhhbmRsZXJEYXRhW10KK19fXworfQorCiskY29kZSA9fiBzL1xgKFteXGBdKilcYC9ldmFsKCQxKS9nZW07CisKK3ByaW50ICRjb2RlOworCitjbG9zZSBTVERPVVQ7CmRpZmYgLS1naXQgYS9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS92cGFlcy14ODYucGwgYi9qbmkvb3BlbnNzbC9jcnlwdG8vYWVzL2FzbS92cGFlcy14ODYucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUzM2UyYwotLS0gL2Rldi9udWxsCisrKyBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYXNtL3ZwYWVzLXg4Ni5wbApAQCAtMCwwICsxLDkwMyBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyBDb25zdGFudC10aW1lIFNTU0UzIEFFUyBjb3JlIGltcGxlbWVudGF0aW9uLgorIyMgdmVyc2lvbiAwLjEKKyMjCisjIyBCeSBNaWtlIEhhbWJ1cmcgKFN0YW5mb3JkIFVuaXZlcnNpdHkpLCAyMDA5CisjIyBQdWJsaWMgZG9tYWluLgorIyMKKyMjIEZvciBkZXRhaWxzIHNlZSBodHRwOi8vc2hpZnRsZWZ0Lm9yZy9wYXBlcnMvdmVjdG9yX2Flcy8gYW5kCisjIyBodHRwOi8vY3J5cHRvLnN0YW5mb3JkLmVkdS92cGFlcy8uCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU2VwdGVtYmVyIDIwMTEuCisjCisjIFBvcnQgdnBhZXMteDg2XzY0LnBsIGFzIDMyLWJpdCAiYWxtb3N0IiBkcm9wLWluIHJlcGxhY2VtZW50IGZvcgorIyBhZXMtNTg2LnBsLiAiQWxtb3N0IiByZWZlcnMgdG8gdGhlIGZhY3QgdGhhdCBBRVNfY2JjX2VuY3J5cHQKKyMgZG9lc24ndCBoYW5kbGUgcGFydGlhbCB2ZWN0b3JzIChkb2Vzbid0IGhhdmUgdG8gaWYgY2FsbGVkIGZyb20KKyMgRVZQIG9ubHkpLiAiRHJvcC1pbiIgaW1wbGllcyB0aGF0IHRoaXMgbW9kdWxlIGRvZXNuJ3Qgc2hhcmUga2V5CisjIHNjaGVkdWxlIHN0cnVjdHVyZSB3aXRoIHRoZSBvcmlnaW5hbCBub3IgZG9lcyBpdCBtYWtlIGFzc3VtcHRpb24KKyMgYWJvdXQgaXRzIGFsaWdubWVudC4uLgorIworIyBQZXJmb3JtYW5jZSBzdW1tYXJ5LiBhZXMtNTg2LnBsIGNvbHVtbiBsaXN0cyBsYXJnZS1ibG9jayBDQkMKKyMgZW5jcnlwdC9kZWNyeXB0L3dpdGgtaHlwZXItdGhyZWFkaW5nLW9mZigqKSByZXN1bHRzIGluIGN5Y2xlcyBwZXIKKyMgYnl0ZSBwcm9jZXNzZWQgd2l0aCAxMjgtYml0IGtleSwgYW5kIHZwYWVzLXg4Ni5wbCBjb2x1bW4gLSBbYWxzbworIyBsYXJnZS1ibG9jayBDQkNdIGVuY3J5cHQvZGVjcnlwdC4KKyMKKyMJCWFlcy01ODYucGwJCXZwYWVzLXg4Ni5wbAorIworIyBDb3JlIDIoKiopCTI5LjEvNDIuMy8xOC4zCQkyMi4wLzI1LjYoKioqKQorIyBOZWhhbGVtCTI3LjkvNDAuNC8xOC4xCQkxMC4zLzEyLjAKKyMgQXRvbQkJMTAyLi8xMTkuLzYwLjEJCTY0LjUvODUuMygqKiopCisjCisjICgqKQkiSHlwZXItdGhyZWFkaW5nIiBpbiB0aGUgY29udGV4dCByZWZlcnMgcmF0aGVyIHRvIGNhY2hlIHNoYXJlZAorIwlhbW9uZyBtdWx0aXBsZSBjb3JlcywgdGhhbiB0byBzcGVjaWZpY2FsbHkgSW50ZWwgSFRULiBBcyB2YXN0CisjCW1ham9yaXR5IG9mIGNvbnRlbXBvcmFyeSBjb3JlcyBzaGFyZSBjYWNoZSwgc2xvd2VyIGNvZGUgcGF0aAorIwlpcyBjb21tb24gcGxhY2UuIEluIG90aGVyIHdvcmRzICJ3aXRoLWh5cGVyLXRocmVhZGluZy1vZmYiCisjCXJlc3VsdHMgYXJlIHByZXNlbnRlZCBtb3N0bHkgZm9yIHJlZmVyZW5jZSBwdXJwb3Nlcy4KKyMKKyMgKCoqKQkiQ29yZSAyIiByZWZlcnMgdG8gaW5pdGlhbCA2NW5tIGRlc2lnbiwgYS5rLmEuIENvbnJvZS4KKyMKKyMgKCoqKikJTGVzcyBpbXByZXNzaXZlIGltcHJvdmVtZW50IG9uIENvcmUgMiBhbmQgQXRvbSBpcyBkdWUgdG8gc2xvdworIwlwc2h1ZmIsCXlldCBpdCdzIHJlc3BlY3RhYmxlICszMiUvNjUlICBpbXByb3ZlbWVudCBvbiBDb3JlIDIKKyMJYW5kICs1OCUvNDAlIG9uIEF0b20gKGFzIGltcGxpZWQsIG92ZXIgImh5cGVyLXRocmVhZGluZy1zYWZlIgorIwljb2RlIHBhdGgpLgorIworIwkJCQkJCTxhcHByb0BvcGVuc3NsLm9yZz4KKworJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsKK3B1c2goQElOQywiJHtkaXJ9IiwiJHtkaXJ9Li4vLi4vcGVybGFzbSIpOworcmVxdWlyZSAieDg2YXNtLnBsIjsKKworJmFzbV9pbml0KCRBUkdWWzBdLCJ2cGFlcy14ODYucGwiLCR4ODZvbmx5ID0gJEFSR1ZbJCNBUkdWXSBlcSAiMzg2Iik7CisKKyRQUkVGSVg9InZwYWVzIjsKKworbXkgICgkcm91bmQsICRiYXNlLCAkbWFnaWMsICRrZXksICRjb25zdCwgJGlucCwgJG91dCk9CisgICAgKCJlYXgiLCAgImVieCIsICJlY3giLCAgImVkeCIsImVicCIsICAiZXNpIiwiZWRpIik7CisKKyZzdGF0aWNfbGFiZWwoIl92cGFlc19jb25zdHMiKTsKKyZzdGF0aWNfbGFiZWwoIl92cGFlc19zY2hlZHVsZV9sb3dfcm91bmQiKTsKKworJnNldF9sYWJlbCgiX3ZwYWVzX2NvbnN0cyIsNjQpOworJGtfaW52PS0weDMwOwkJIyBpbnYsIGludmEKKwkmZGF0YV93b3JkKDB4MEQwODAxODAsMHgwRTA1MDYwRiwweDBBMEIwQzAyLDB4MDQwNzAzMDkpOworCSZkYXRhX3dvcmQoMHgwRjBCMDc4MCwweDAxMDQwQTA2LDB4MDIwNTA4MDksMHgwMzBEMEUwQyk7CisKKyRrX3MwRj0tMHgxMDsJCSMgczBGCisJJmRhdGFfd29yZCgweDBGMEYwRjBGLDB4MEYwRjBGMEYsMHgwRjBGMEYwRiwweDBGMEYwRjBGKTsKKworJGtfaXB0PTB4MDA7CQkjIGlucHV0IHRyYW5zZm9ybSAobG8sIGhpKQorCSZkYXRhX3dvcmQoMHg1QTJBNzAwMCwweEMyQjJFODk4LDB4NTIyMjc4MDgsMHhDQUJBRTA5MCk7CisJJmRhdGFfd29yZCgweDMxN0M0RDAwLDB4NEMwMTMwN0QsMHhCMEZEQ0M4MSwweENEODBCMUZDKTsKKworJGtfc2IxPTB4MjA7CQkjIHNiMXUsIHNiMXQKKwkmZGF0YV93b3JkKDB4Q0I1MDNFMDAsMHhCMTlCRTE4RiwweDE0MkFGNTQ0LDB4QTVERjdBNkUpOworCSZkYXRhX3dvcmQoMHhGQUUyMjMwMCwweDM2MThENDE1LDB4MEQyRUQ5RUYsMHgzQkY3Q0NDMSk7Ciska19zYjI9MHg0MDsJCSMgc2IydSwgc2IydAorCSZkYXRhX3dvcmQoMHgwQjcxMjQwMCwweEUyN0E5M0M2LDB4QkM5ODJGQ0QsMHg1RUI3RTk1NSk7CisJJmRhdGFfd29yZCgweDBBRTEyOTAwLDB4NjlFQjg4NDAsMHhBQjgyMjM0QSwweEMyQTE2M0M4KTsKKyRrX3Nibz0weDYwOwkJIyBzYm91LCBzYm90CisJJmRhdGFfd29yZCgweDZGQkRDNzAwLDB4RDBEMjZEMTcsMHhDNTAyQTg3OCwweDE1QUFCRjdBKTsKKwkmZGF0YV93b3JkKDB4NUZCQjZBMDAsMHhDRkU0NzRBNSwweDQxMkIzNUZBLDB4OEUxRTkwRDEpOworCiska19tY19mb3J3YXJkPTB4ODA7CSMgbWNfZm9yd2FyZAorCSZkYXRhX3dvcmQoMHgwMDAzMDIwMSwweDA0MDcwNjA1LDB4MDgwQjBBMDksMHgwQzBGMEUwRCk7CisJJmRhdGFfd29yZCgweDA0MDcwNjA1LDB4MDgwQjBBMDksMHgwQzBGMEUwRCwweDAwMDMwMjAxKTsKKwkmZGF0YV93b3JkKDB4MDgwQjBBMDksMHgwQzBGMEUwRCwweDAwMDMwMjAxLDB4MDQwNzA2MDUpOworCSZkYXRhX3dvcmQoMHgwQzBGMEUwRCwweDAwMDMwMjAxLDB4MDQwNzA2MDUsMHgwODBCMEEwOSk7CisKKyRrX21jX2JhY2t3YXJkPTB4YzA7CSMgbWNfYmFja3dhcmQKKwkmZGF0YV93b3JkKDB4MDIwMTAwMDMsMHgwNjA1MDQwNywweDBBMDkwODBCLDB4MEUwRDBDMEYpOworCSZkYXRhX3dvcmQoMHgwRTBEMEMwRiwweDAyMDEwMDAzLDB4MDYwNTA0MDcsMHgwQTA5MDgwQik7CisJJmRhdGFfd29yZCgweDBBMDkwODBCLDB4MEUwRDBDMEYsMHgwMjAxMDAwMywweDA2MDUwNDA3KTsKKwkmZGF0YV93b3JkKDB4MDYwNTA0MDcsMHgwQTA5MDgwQiwweDBFMEQwQzBGLDB4MDIwMTAwMDMpOworCiska19zcj0weDEwMDsJCSMgc3IKKwkmZGF0YV93b3JkKDB4MDMwMjAxMDAsMHgwNzA2MDUwNCwweDBCMEEwOTA4LDB4MEYwRTBEMEMpOworCSZkYXRhX3dvcmQoMHgwRjBBMDUwMCwweDAzMEUwOTA0LDB4MDcwMjBEMDgsMHgwQjA2MDEwQyk7CisJJmRhdGFfd29yZCgweDBCMDIwOTAwLDB4MEYwNjBEMDQsMHgwMzBBMDEwOCwweDA3MEUwNTBDKTsKKwkmZGF0YV93b3JkKDB4MDcwQTBEMDAsMHgwQjBFMDEwNCwweDBGMDIwNTA4LDB4MDMwNjA5MEMpOworCiska19yY29uPTB4MTQwOwkJIyByY29uCisJJmRhdGFfd29yZCgweEFGOURFRUI2LDB4MUY4MzkxQjksMHg0RDdDN0Q4MSwweDcwMkE5ODA4KTsKKworJGtfczYzPTB4MTUwOwkJIyBzNjM6IGFsbCBlcXVhbCB0byAweDYzIHRyYW5zZm9ybWVkCisJJmRhdGFfd29yZCgweDVCNUI1QjVCLDB4NUI1QjVCNUIsMHg1QjVCNUI1QiwweDVCNUI1QjVCKTsKKworJGtfb3B0PTB4MTYwOwkJIyBvdXRwdXQgdHJhbnNmb3JtCisJJmRhdGFfd29yZCgweEQ2QjY2MDAwLDB4RkY5RjQ5MjksMHhERUJFNjgwOCwweEY3OTc0MTIxKTsKKwkmZGF0YV93b3JkKDB4NTBCQ0VDMDAsMHgwMUVEQkQ1MSwweEIwNUMwQ0UwLDB4RTEwRDVEQjEpOworCiska19kZXNrZXc9MHgxODA7CSMgZGVza2V3IHRhYmxlczogaW52ZXJ0cyB0aGUgc2JveCdzICJza2V3IgorCSZkYXRhX3dvcmQoMHg0N0E0RTMwMCwweDA3RTRBMzQwLDB4NURCRUY5MUEsMHgxREZFQjk1QSk7CisJJmRhdGFfd29yZCgweDgzRUE2OTAwLDB4NUYzNkI1REMsMHhGNDlEMUU3NywweDI4NDFDMkFCKTsKKyMjCisjIyAgRGVjcnlwdGlvbiBzdHVmZgorIyMgIEtleSBzY2hlZHVsZSBjb25zdGFudHMKKyMjCiska19ka3NkPTB4MWEwOwkJIyBkZWNyeXB0aW9uIGtleSBzY2hlZHVsZTogaW52c2tldyB4KkQKKwkmZGF0YV93b3JkKDB4QTNFNDQ3MDAsMHhGRUI5MUE1RCwweDVBMURCRUY5LDB4MDc0MEUzQTQpOworCSZkYXRhX3dvcmQoMHhCNTM2ODMwMCwweDQxQzI3N0Y0LDB4QUIyODlEMUUsMHg1RkRDNjlFQSk7Ciska19ka3NiPTB4MWMwOwkJIyBkZWNyeXB0aW9uIGtleSBzY2hlZHVsZTogaW52c2tldyB4KkIKKwkmZGF0YV93b3JkKDB4ODU1MEQ1MDAsMHg5QTRGQ0ExRiwweDFDQzk0Qzk5LDB4MDNENjUzODYpOworCSZkYXRhX3dvcmQoMHhCNkZDNEEwMCwweDExNUJFREE3LDB4N0UzNDgyQzgsMHhEOTkzMjU2Rik7Ciska19ka3NlPTB4MWUwOwkJIyBkZWNyeXB0aW9uIGtleSBzY2hlZHVsZTogaW52c2tldyB4KkUgKyAweDYzCisJJmRhdGFfd29yZCgweDFGQzlENjAwLDB4RDUwMzFDQ0EsMHg5OTRGNTA4NiwweDUzODU5QTRDKTsKKwkmZGF0YV93b3JkKDB4NEZEQzdCRTgsMHhBMjMxOTYwNSwweDIwQjMxNDg3LDB4Q0Q1RUY5NkEpOworJGtfZGtzOT0weDIwMDsJCSMgZGVjcnlwdGlvbiBrZXkgc2NoZWR1bGU6IGludnNrZXcgeCo5CisJJmRhdGFfd29yZCgweDdFRDlBNzAwLDB4QjYxMTZGQzgsMHg4MjI1NUJGQywweDRBRUQ5MzM0KTsKKwkmZGF0YV93b3JkKDB4MjcxNDMzMDAsMHg0NTc2NTE2MiwweEU5REFGRENFLDB4OEJCODlGQUMpOworCisjIworIyMgIERlY3J5cHRpb24gc3R1ZmYKKyMjICBSb3VuZCBmdW5jdGlvbiBjb25zdGFudHMKKyMjCiska19kaXB0PTB4MjIwOwkJIyBkZWNyeXB0aW9uIGlucHV0IHRyYW5zZm9ybQorCSZkYXRhX3dvcmQoMHgwQjU0NUYwMCwweDBGNTA1QjA0LDB4MTE0RTQ1MUEsMHgxNTRBNDExRSk7CisJJmRhdGFfd29yZCgweDYwMDU2NTAwLDB4ODZFMzgzRTYsMHhGNDkxRjE5NCwweDEyNzcxNzcyKTsKKworJGtfZHNiOT0weDI0MDsJCSMgZGVjcnlwdGlvbiBzYm94IG91dHB1dCAqOSp1LCAqOSp0CisJJmRhdGFfd29yZCgweDlBODZENjAwLDB4ODUxQzAzNTMsMHg0Rjk5NENDOSwweENBRDUxRjUwKTsKKwkmZGF0YV93b3JkKDB4RUNENzQ5MDAsMHhDMDNCMTc4OSwweEIyRkJBNTY1LDB4NzI1RTJDOUUpOworJGtfZHNiZD0weDI2MDsJCSMgZGVjcnlwdGlvbiBzYm94IG91dHB1dCAqRCp1LCAqRCp0CisJJmRhdGFfd29yZCgweEU2QjFBMjAwLDB4N0Q1N0NDREYsMHg4ODJBNDQzOSwweEY1NkU5QjEzKTsKKwkmZGF0YV93b3JkKDB4MjRDNkNCMDAsMHgzQ0UyRkFGNywweDE1REVFRkQzLDB4MjkzMTE4MEQpOworJGtfZHNiYj0weDI4MDsJCSMgZGVjcnlwdGlvbiBzYm94IG91dHB1dCAqQip1LCAqQip0CisJJmRhdGFfd29yZCgweDk2QjQ0MjAwLDB4RDAyMjY0OTIsMHhCMEYyRDQwNCwweDYwMjY0NkY2KTsKKwkmZGF0YV93b3JkKDB4Q0Q1OTY3MDAsMHhDMTk0OThBNiwweDMyNTVBQTZCLDB4RjNGRjBDM0UpOworJGtfZHNiZT0weDJhMDsJCSMgZGVjcnlwdGlvbiBzYm94IG91dHB1dCAqRSp1LCAqRSp0CisJJmRhdGFfd29yZCgweDI2RDREMDAwLDB4NDZGMjkyOTYsMHg2NEI0RjZCMCwweDIyNDI2MDA0KTsKKwkmZGF0YV93b3JkKDB4RkZBQUMxMDAsMHgwQzU1QTZDRCwweDk4NTkzRTMyLDB4OTQ2N0YzNkIpOworJGtfZHNibz0weDJjMDsJCSMgZGVjcnlwdGlvbiBzYm94IGZpbmFsIG91dHB1dAorCSZkYXRhX3dvcmQoMHg3RUY5NDAwMCwweDEzODdFQTUzLDB4RDQ5NDNFMkQsMHhDN0FBNkRCOSk7CisJJmRhdGFfd29yZCgweDkzNDQxRDAwLDB4MTJENzU2MEYsMHhEOEM1OEU5QywweENBNEI4MTU5KTsKKyZhc2NpegkoIlZlY3RvciBQZXJtdXRhdGlvbiBBRVMgZm9yIHg4Ni9TU1NFMywgTWlrZSBIYW1idXJnIChTdGFuZm9yZCBVbml2ZXJzaXR5KSIpOworJmFsaWduCSg2NCk7CisKKyZmdW5jdGlvbl9iZWdpbl9CKCJfdnBhZXNfcHJlaGVhdCIpOworCSZhZGQJKCRjb25zdCwmRFdQKDAsImVzcCIpKTsKKwkmbW92ZHFhCSgieG1tNyIsJlFXUCgka19pbnYsJGNvbnN0KSk7CisJJm1vdmRxYQkoInhtbTYiLCZRV1AoJGtfczBGLCRjb25zdCkpOworCSZyZXQJKCk7CismZnVuY3Rpb25fZW5kX0IoIl92cGFlc19wcmVoZWF0Iik7CisKKyMjCisjIyAgX2Flc19lbmNyeXB0X2NvcmUKKyMjCisjIyAgQUVTLWVuY3J5cHQgJXhtbTAuCisjIworIyMgIElucHV0czoKKyMjICAgICAleG1tMCA9IGlucHV0CisjIyAgICAgJXhtbTYtJXhtbTcgYXMgaW4gX3ZwYWVzX3ByZWhlYXQKKyMjICAgICglZWR4KSA9IHNjaGVkdWxlZCBrZXlzCisjIworIyMgIE91dHB1dCBpbiAleG1tMAorIyMgIENsb2JiZXJzICAleG1tMS0leG1tNSwgJWVheCwgJWVieCwgJWVjeCwgJWVkeAorIyMKKyMjCismZnVuY3Rpb25fYmVnaW5fQigiX3ZwYWVzX2VuY3J5cHRfY29yZSIpOworCSZtb3YJKCRtYWdpYywxNik7CisJJm1vdgkoJHJvdW5kLCZEV1AoMjQwLCRrZXkpKTsKKwkmbW92ZHFhCSgieG1tMSIsInhtbTYiKQorCSZtb3ZkcWEJKCJ4bW0yIiwmUVdQKCRrX2lwdCwkY29uc3QpKTsKKwkmcGFuZG4JKCJ4bW0xIiwieG1tMCIpOworCSZtb3ZkcXUJKCJ4bW01IiwmUVdQKDAsJGtleSkpOworCSZwc3JsZAkoInhtbTEiLDQpOworCSZwYW5kCSgieG1tMCIsInhtbTYiKTsKKwkmcHNodWZiCSgieG1tMiIsInhtbTAiKTsKKwkmbW92ZHFhCSgieG1tMCIsJlFXUCgka19pcHQrMTYsJGNvbnN0KSk7CisJJnBzaHVmYgkoInhtbTAiLCJ4bW0xIik7CisJJnB4b3IJKCJ4bW0yIiwieG1tNSIpOworCSZweG9yCSgieG1tMCIsInhtbTIiKTsKKwkmYWRkCSgka2V5LDE2KTsKKwkmbGVhCSgkYmFzZSwmRFdQKCRrX21jX2JhY2t3YXJkLCRjb25zdCkpOworCSZqbXAJKCZsYWJlbCgiZW5jX2VudHJ5IikpOworCisKKyZzZXRfbGFiZWwoImVuY19sb29wIiwxNik7CisJIyBtaWRkbGUgb2YgbWlkZGxlIHJvdW5kCisJJm1vdmRxYQkoInhtbTQiLCZRV1AoJGtfc2IxLCRjb25zdCkpOwkjIDQgOiBzYjF1CisJJnBzaHVmYgkoInhtbTQiLCJ4bW0yIik7CQkjIDQgPSBzYjF1CisJJnB4b3IJKCJ4bW00IiwieG1tNSIpOwkJIyA0ID0gc2IxdSArIGsKKwkmbW92ZHFhCSgieG1tMCIsJlFXUCgka19zYjErMTYsJGNvbnN0KSk7IyAwIDogc2IxdAorCSZwc2h1ZmIJKCJ4bW0wIiwieG1tMyIpOwkJIyAwID0gc2IxdAorCSZweG9yCSgieG1tMCIsInhtbTQiKTsJCSMgMCA9IEEKKwkmbW92ZHFhCSgieG1tNSIsJlFXUCgka19zYjIsJGNvbnN0KSk7CSMgNCA6IHNiMnUKKwkmcHNodWZiCSgieG1tNSIsInhtbTIiKTsJCSMgNCA9IHNiMnUKKwkmbW92ZHFhCSgieG1tMSIsJlFXUCgtMHg0MCwkYmFzZSwkbWFnaWMpKTsjIC5Ma19tY19mb3J3YXJkW10KKwkmbW92ZHFhCSgieG1tMiIsJlFXUCgka19zYjIrMTYsJGNvbnN0KSk7IyAyIDogc2IydAorCSZwc2h1ZmIJKCJ4bW0yIiwieG1tMyIpOwkJIyAyID0gc2IydAorCSZweG9yCSgieG1tMiIsInhtbTUiKTsJCSMgMiA9IDJBCisJJm1vdmRxYQkoInhtbTQiLCZRV1AoMCwkYmFzZSwkbWFnaWMpKTsJIyAuTGtfbWNfYmFja3dhcmRbXQorCSZtb3ZkcWEJKCJ4bW0zIiwieG1tMCIpOwkJIyAzID0gQQorCSZwc2h1ZmIJKCJ4bW0wIiwieG1tMSIpOwkJIyAwID0gQgorCSZhZGQJKCRrZXksMTYpOwkJCSMgbmV4dCBrZXkKKwkmcHhvcgkoInhtbTAiLCJ4bW0yIik7CQkjIDAgPSAyQStCCisJJnBzaHVmYgkoInhtbTMiLCJ4bW00Iik7CQkjIDMgPSBECisJJmFkZAkoJG1hZ2ljLDE2KTsJCQkjIG5leHQgbWMKKwkmcHhvcgkoInhtbTMiLCJ4bW0wIik7CQkjIDMgPSAyQStCK0QKKwkmcHNodWZiCSgieG1tMCIsInhtbTEiKTsJCSMgMCA9IDJCK0MKKwkmYW5kCSgkbWFnaWMsMHgzMCk7CQkJIyAuLi4gbW9kIDQKKwkmcHhvcgkoInhtbTAiLCJ4bW0zIik7CQkjIDAgPSAyQSszQitDK0QKKwkmc3ViCSgkcm91bmQsMSk7CQkJIyBuci0tCisKKyZzZXRfbGFiZWwoImVuY19lbnRyeSIpOworCSMgdG9wIG9mIHJvdW5kCisJJm1vdmRxYQkoInhtbTEiLCJ4bW02Iik7CQkjIDEgOiBpCisJJnBhbmRuCSgieG1tMSIsInhtbTAiKTsJCSMgMSA9IGk8PDQKKwkmcHNybGQJKCJ4bW0xIiw0KTsJCQkjIDEgPSBpCisJJnBhbmQJKCJ4bW0wIiwieG1tNiIpOwkJIyAwID0gaworCSZtb3ZkcWEJKCJ4bW01IiwmUVdQKCRrX2ludisxNiwkY29uc3QpKTsjIDIgOiBhL2sKKwkmcHNodWZiCSgieG1tNSIsInhtbTAiKTsJCSMgMiA9IGEvaworCSZweG9yCSgieG1tMCIsInhtbTEiKTsJCSMgMCA9IGoKKwkmbW92ZHFhCSgieG1tMyIsInhtbTciKTsJCSMgMyA6IDEvaQorCSZwc2h1ZmIJKCJ4bW0zIiwieG1tMSIpOwkJIyAzID0gMS9pCisJJnB4b3IJKCJ4bW0zIiwieG1tNSIpOwkJIyAzID0gaWFrID0gMS9pICsgYS9rCisJJm1vdmRxYQkoInhtbTQiLCJ4bW03Iik7CQkjIDQgOiAxL2oKKwkmcHNodWZiCSgieG1tNCIsInhtbTAiKTsJCSMgNCA9IDEvagorCSZweG9yCSgieG1tNCIsInhtbTUiKTsJCSMgNCA9IGphayA9IDEvaiArIGEvaworCSZtb3ZkcWEJKCJ4bW0yIiwieG1tNyIpOwkJIyAyIDogMS9pYWsKKwkmcHNodWZiCSgieG1tMiIsInhtbTMiKTsJCSMgMiA9IDEvaWFrCisJJnB4b3IJKCJ4bW0yIiwieG1tMCIpOwkJIyAyID0gaW8KKwkmbW92ZHFhCSgieG1tMyIsInhtbTciKTsJCSMgMyA6IDEvamFrCisJJm1vdmRxdQkoInhtbTUiLCZRV1AoMCwka2V5KSk7CisJJnBzaHVmYgkoInhtbTMiLCJ4bW00Iik7CQkjIDMgPSAxL2phaworCSZweG9yCSgieG1tMyIsInhtbTEiKTsJCSMgMyA9IGpvCisJJmpuegkoJmxhYmVsKCJlbmNfbG9vcCIpKTsKKworCSMgbWlkZGxlIG9mIGxhc3Qgcm91bmQKKwkmbW92ZHFhCSgieG1tNCIsJlFXUCgka19zYm8sJGNvbnN0KSk7CSMgMyA6IHNib3UgICAgICAuTGtfc2JvCisJJm1vdmRxYQkoInhtbTAiLCZRV1AoJGtfc2JvKzE2LCRjb25zdCkpOyMgMyA6IHNib3QgICAgICAuTGtfc2JvKzE2CisJJnBzaHVmYgkoInhtbTQiLCJ4bW0yIik7CQkjIDQgPSBzYm91CisJJnB4b3IJKCJ4bW00IiwieG1tNSIpOwkJIyA0ID0gc2IxdSArIGsKKwkmcHNodWZiCSgieG1tMCIsInhtbTMiKTsJCSMgMCA9IHNiMXQKKwkmbW92ZHFhCSgieG1tMSIsJlFXUCgweDQwLCRiYXNlLCRtYWdpYykpOyMgLkxrX3NyW10KKwkmcHhvcgkoInhtbTAiLCJ4bW00Iik7CQkjIDAgPSBBCisJJnBzaHVmYgkoInhtbTAiLCJ4bW0xIik7CisJJnJldAkoKTsKKyZmdW5jdGlvbl9lbmRfQigiX3ZwYWVzX2VuY3J5cHRfY29yZSIpOworCisjIworIyMgIERlY3J5cHRpb24gY29yZQorIyMKKyMjICBTYW1lIEFQSSBhcyBlbmNyeXB0aW9uIGNvcmUuCisjIworJmZ1bmN0aW9uX2JlZ2luX0IoIl92cGFlc19kZWNyeXB0X2NvcmUiKTsKKwkmbW92CSgkcm91bmQsJkRXUCgyNDAsJGtleSkpOworCSZsZWEJKCRiYXNlLCZEV1AoJGtfZHNiZCwkY29uc3QpKTsKKwkmbW92ZHFhCSgieG1tMSIsInhtbTYiKTsKKwkmbW92ZHFhCSgieG1tMiIsJlFXUCgka19kaXB0LSRrX2RzYmQsJGJhc2UpKTsKKwkmcGFuZG4JKCJ4bW0xIiwieG1tMCIpOworCSZtb3YJKCRtYWdpYywkcm91bmQpOworCSZwc3JsZAkoInhtbTEiLDQpCisJJm1vdmRxdQkoInhtbTUiLCZRV1AoMCwka2V5KSk7CisJJnNobAkoJG1hZ2ljLDQpOworCSZwYW5kCSgieG1tMCIsInhtbTYiKTsKKwkmcHNodWZiCSgieG1tMiIsInhtbTAiKTsKKwkmbW92ZHFhCSgieG1tMCIsJlFXUCgka19kaXB0LSRrX2RzYmQrMTYsJGJhc2UpKTsKKwkmeG9yCSgkbWFnaWMsMHgzMCk7CisJJnBzaHVmYgkoInhtbTAiLCJ4bW0xIik7CisJJmFuZAkoJG1hZ2ljLDB4MzApOworCSZweG9yCSgieG1tMiIsInhtbTUiKTsKKwkmbW92ZHFhCSgieG1tNSIsJlFXUCgka19tY19mb3J3YXJkKzQ4LCRjb25zdCkpOworCSZweG9yCSgieG1tMCIsInhtbTIiKTsKKwkmYWRkCSgka2V5LDE2KTsKKwkmbGVhCSgkbWFnaWMsJkRXUCgka19zci0ka19kc2JkLCRiYXNlLCRtYWdpYykpOworCSZqbXAJKCZsYWJlbCgiZGVjX2VudHJ5IikpOworCismc2V0X2xhYmVsKCJkZWNfbG9vcCIsMTYpOworIyMKKyMjICBJbnZlcnNlIG1peCBjb2x1bW5zCisjIworCSZtb3ZkcWEJKCJ4bW00IiwmUVdQKC0weDIwLCRiYXNlKSk7CSMgNCA6IHNiOXUKKwkmcHNodWZiCSgieG1tNCIsInhtbTIiKTsJCSMgNCA9IHNiOXUKKwkmcHhvcgkoInhtbTQiLCJ4bW0wIik7CisJJm1vdmRxYQkoInhtbTAiLCZRV1AoLTB4MTAsJGJhc2UpKTsJIyAwIDogc2I5dAorCSZwc2h1ZmIJKCJ4bW0wIiwieG1tMyIpOwkJIyAwID0gc2I5dAorCSZweG9yCSgieG1tMCIsInhtbTQiKTsJCSMgMCA9IGNoCisJJmFkZAkoJGtleSwxNik7CQkJIyBuZXh0IHJvdW5kIGtleQorCisJJnBzaHVmYgkoInhtbTAiLCJ4bW01Iik7CQkjIE1DIGNoCisJJm1vdmRxYQkoInhtbTQiLCZRV1AoMCwkYmFzZSkpOwkJIyA0IDogc2JkdQorCSZwc2h1ZmIJKCJ4bW00IiwieG1tMiIpOwkJIyA0ID0gc2JkdQorCSZweG9yCSgieG1tNCIsInhtbTAiKTsJCSMgNCA9IGNoCisJJm1vdmRxYQkoInhtbTAiLCZRV1AoMHgxMCwkYmFzZSkpOwkjIDAgOiBzYmR0CisJJnBzaHVmYgkoInhtbTAiLCJ4bW0zIik7CQkjIDAgPSBzYmR0CisJJnB4b3IJKCJ4bW0wIiwieG1tNCIpOwkJIyAwID0gY2gKKwkmc3ViCSgkcm91bmQsMSk7CQkJIyBuci0tCisKKwkmcHNodWZiCSgieG1tMCIsInhtbTUiKTsJCSMgTUMgY2gKKwkmbW92ZHFhCSgieG1tNCIsJlFXUCgweDIwLCRiYXNlKSk7CSMgNCA6IHNiYnUKKwkmcHNodWZiCSgieG1tNCIsInhtbTIiKTsJCSMgNCA9IHNiYnUKKwkmcHhvcgkoInhtbTQiLCJ4bW0wIik7CQkjIDQgPSBjaAorCSZtb3ZkcWEJKCJ4bW0wIiwmUVdQKDB4MzAsJGJhc2UpKTsJIyAwIDogc2JidAorCSZwc2h1ZmIJKCJ4bW0wIiwieG1tMyIpOwkJIyAwID0gc2JidAorCSZweG9yCSgieG1tMCIsInhtbTQiKTsJCSMgMCA9IGNoCisKKwkmcHNodWZiCSgieG1tMCIsInhtbTUiKTsJCSMgTUMgY2gKKwkmbW92ZHFhCSgieG1tNCIsJlFXUCgweDQwLCRiYXNlKSk7CSMgNCA6IHNiZXUKKwkmcHNodWZiCSgieG1tNCIsInhtbTIiKTsJCSMgNCA9IHNiZXUKKwkmcHhvcgkoInhtbTQiLCJ4bW0wIik7CQkjIDQgPSBjaAorCSZtb3ZkcWEJKCJ4bW0wIiwmUVdQKDB4NTAsJGJhc2UpKTsJIyAwIDogc2JldAorCSZwc2h1ZmIJKCJ4bW0wIiwieG1tMyIpOwkJIyAwID0gc2JldAorCSZweG9yCSgieG1tMCIsInhtbTQiKTsJCSMgMCA9IGNoCisKKwkmcGFsaWducigieG1tNSIsInhtbTUiLDEyKTsKKworJnNldF9sYWJlbCgiZGVjX2VudHJ5Iik7CisJIyB0b3Agb2Ygcm91bmQKKwkmbW92ZHFhCSgieG1tMSIsInhtbTYiKTsJCSMgMSA6IGkKKwkmcGFuZG4JKCJ4bW0xIiwieG1tMCIpOwkJIyAxID0gaTw8NAorCSZwc3JsZAkoInhtbTEiLDQpOwkJCSMgMSA9IGkKKwkmcGFuZAkoInhtbTAiLCJ4bW02Iik7CQkjIDAgPSBrCisJJm1vdmRxYQkoInhtbTIiLCZRV1AoJGtfaW52KzE2LCRjb25zdCkpOyMgMiA6IGEvaworCSZwc2h1ZmIJKCJ4bW0yIiwieG1tMCIpOwkJIyAyID0gYS9rCisJJnB4b3IJKCJ4bW0wIiwieG1tMSIpOwkJIyAwID0gagorCSZtb3ZkcWEJKCJ4bW0zIiwieG1tNyIpOwkJIyAzIDogMS9pCisJJnBzaHVmYgkoInhtbTMiLCJ4bW0xIik7CQkjIDMgPSAxL2kKKwkmcHhvcgkoInhtbTMiLCJ4bW0yIik7CQkjIDMgPSBpYWsgPSAxL2kgKyBhL2sKKwkmbW92ZHFhCSgieG1tNCIsInhtbTciKTsJCSMgNCA6IDEvagorCSZwc2h1ZmIJKCJ4bW00IiwieG1tMCIpOwkJIyA0ID0gMS9qCisJJnB4b3IJKCJ4bW00IiwieG1tMiIpOwkJIyA0ID0gamFrID0gMS9qICsgYS9rCisJJm1vdmRxYQkoInhtbTIiLCJ4bW03Iik7CQkjIDIgOiAxL2lhaworCSZwc2h1ZmIJKCJ4bW0yIiwieG1tMyIpOwkJIyAyID0gMS9pYWsKKwkmcHhvcgkoInhtbTIiLCJ4bW0wIik7CQkjIDIgPSBpbworCSZtb3ZkcWEJKCJ4bW0zIiwieG1tNyIpOwkJIyAzIDogMS9qYWsKKwkmcHNodWZiCSgieG1tMyIsInhtbTQiKTsJCSMgMyA9IDEvamFrCisJJnB4b3IJKCJ4bW0zIiwieG1tMSIpOwkJIyAzID0gam8KKwkmbW92ZHF1CSgieG1tMCIsJlFXUCgwLCRrZXkpKTsKKwkmam56CSgmbGFiZWwoImRlY19sb29wIikpOworCisJIyBtaWRkbGUgb2YgbGFzdCByb3VuZAorCSZtb3ZkcWEJKCJ4bW00IiwmUVdQKDB4NjAsJGJhc2UpKTsJIyAzIDogc2JvdQorCSZwc2h1ZmIJKCJ4bW00IiwieG1tMiIpOwkJIyA0ID0gc2JvdQorCSZweG9yCSgieG1tNCIsInhtbTAiKTsJCSMgNCA9IHNiMXUgKyBrCisJJm1vdmRxYQkoInhtbTAiLCZRV1AoMHg3MCwkYmFzZSkpOwkjIDAgOiBzYm90CisJJm1vdmRxYQkoInhtbTIiLCZRV1AoMCwkbWFnaWMpKTsKKwkmcHNodWZiCSgieG1tMCIsInhtbTMiKTsJCSMgMCA9IHNiMXQKKwkmcHhvcgkoInhtbTAiLCJ4bW00Iik7CQkjIDAgPSBBCisJJnBzaHVmYgkoInhtbTAiLCJ4bW0yIik7CisJJnJldAkoKTsKKyZmdW5jdGlvbl9lbmRfQigiX3ZwYWVzX2RlY3J5cHRfY29yZSIpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMKKyMjICAgICAgICAgICAgICAgICAgQUVTIGtleSBzY2hlZHVsZSAgICAgICAgICAgICAgICAgICMjCisjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyZmdW5jdGlvbl9iZWdpbl9CKCJfdnBhZXNfc2NoZWR1bGVfY29yZSIpOworCSZhZGQJKCRjb25zdCwmRFdQKDAsImVzcCIpKTsKKwkmbW92ZHF1CSgieG1tMCIsJlFXUCgwLCRpbnApKTsJCSMgbG9hZCBrZXkgKHVuYWxpZ25lZCkKKwkmbW92ZHFhCSgieG1tMiIsJlFXUCgka19yY29uLCRjb25zdCkpOwkjIGxvYWQgcmNvbgorCisJIyBpbnB1dCB0cmFuc2Zvcm0KKwkmbW92ZHFhCSgieG1tMyIsInhtbTAiKTsKKwkmbGVhCSgkYmFzZSwmRFdQKCRrX2lwdCwkY29uc3QpKTsKKwkmbW92ZHFhCSgmUVdQKDQsImVzcCIpLCJ4bW0yIik7CQkjIHhtbTgKKwkmY2FsbAkoIl92cGFlc19zY2hlZHVsZV90cmFuc2Zvcm0iKTsKKwkmbW92ZHFhCSgieG1tNyIsInhtbTAiKTsKKworCSZ0ZXN0CSgkb3V0LCRvdXQpOworCSZqbnoJKCZsYWJlbCgic2NoZWR1bGVfYW1fZGVjcnlwdGluZyIpKTsKKworCSMgZW5jcnlwdGluZywgb3V0cHV0IHplcm90aCByb3VuZCBrZXkgYWZ0ZXIgdHJhbnNmb3JtCisJJm1vdmRxdQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7CisJJmptcAkoJmxhYmVsKCJzY2hlZHVsZV9nbyIpKTsKKworJnNldF9sYWJlbCgic2NoZWR1bGVfYW1fZGVjcnlwdGluZyIpOworCSMgZGVjcnlwdGluZywgb3V0cHV0IHplcm90aCByb3VuZCBrZXkgYWZ0ZXIgc2hpZnRyb3dzCisJJm1vdmRxYQkoInhtbTEiLCZRV1AoJGtfc3IsJGNvbnN0LCRtYWdpYykpOworCSZwc2h1ZmIJKCJ4bW0zIiwieG1tMSIpOworCSZtb3ZkcXUJKCZRV1AoMCwka2V5KSwieG1tMyIpOworCSZ4b3IJKCRtYWdpYywweDMwKTsKKworJnNldF9sYWJlbCgic2NoZWR1bGVfZ28iKTsKKwkmY21wCSgkcm91bmQsMTkyKTsKKwkmamEJKCZsYWJlbCgic2NoZWR1bGVfMjU2IikpOworCSZqZQkoJmxhYmVsKCJzY2hlZHVsZV8xOTIiKSk7CisJIyAxMjg6IGZhbGwgdGhvdWdoCisKKyMjCisjIyAgLnNjaGVkdWxlXzEyOAorIyMKKyMjICAxMjgtYml0IHNwZWNpZmljIHBhcnQgb2Yga2V5IHNjaGVkdWxlLgorIyMKKyMjICBUaGlzIHNjaGVkdWxlIGlzIHJlYWxseSBzaW1wbGUsIGJlY2F1c2UgYWxsIGl0cyBwYXJ0cworIyMgIGFyZSBhY2NvbXBsaXNoZWQgYnkgdGhlIHN1YnJvdXRpbmVzLgorIyMKKyZzZXRfbGFiZWwoInNjaGVkdWxlXzEyOCIpOworCSZtb3YJKCRyb3VuZCwxMCk7CisKKyZzZXRfbGFiZWwoImxvb3Bfc2NoZWR1bGVfMTI4Iik7CisJJmNhbGwJKCJfdnBhZXNfc2NoZWR1bGVfcm91bmQiKTsKKwkmZGVjCSgkcm91bmQpOworCSZqegkoJmxhYmVsKCJzY2hlZHVsZV9tYW5nbGVfbGFzdCIpKTsKKwkmY2FsbAkoIl92cGFlc19zY2hlZHVsZV9tYW5nbGUiKTsJIyB3cml0ZSBvdXRwdXQKKwkmam1wCSgmbGFiZWwoImxvb3Bfc2NoZWR1bGVfMTI4IikpOworCisjIworIyMgIC5hZXNfc2NoZWR1bGVfMTkyCisjIworIyMgIDE5Mi1iaXQgc3BlY2lmaWMgcGFydCBvZiBrZXkgc2NoZWR1bGUuCisjIworIyMgIFRoZSBtYWluIGJvZHkgb2YgdGhpcyBzY2hlZHVsZSBpcyB0aGUgc2FtZSBhcyB0aGUgMTI4LWJpdAorIyMgIHNjaGVkdWxlLCBidXQgd2l0aCBtb3JlIHNtZWFyaW5nLiAgVGhlIGxvbmcsIGhpZ2ggc2lkZSBpcworIyMgIHN0b3JlZCBpbiAleG1tNyBhcyBiZWZvcmUsIGFuZCB0aGUgc2hvcnQsIGxvdyBzaWRlIGlzIGluCisjIyAgdGhlIGhpZ2ggYml0cyBvZiAleG1tNi4KKyMjCisjIyAgVGhpcyBzY2hlZHVsZSBpcyBzb21ld2hhdCBuYXN0aWVyLCBob3dldmVyLCBiZWNhdXNlIGVhY2gKKyMjICByb3VuZCBwcm9kdWNlcyAxOTIgYml0cyBvZiBrZXkgbWF0ZXJpYWwsIG9yIDEuNSByb3VuZCBrZXlzLgorIyMgIFRoZXJlZm9yZSwgb24gZWFjaCBjeWNsZSB3ZSBkbyAyIHJvdW5kcyBhbmQgcHJvZHVjZSAzIHJvdW5kCisjIyAga2V5cy4KKyMjCismc2V0X2xhYmVsKCJzY2hlZHVsZV8xOTIiLDE2KTsKKwkmbW92ZHF1CSgieG1tMCIsJlFXUCg4LCRpbnApKTsJCSMgbG9hZCBrZXkgcGFydCAyICh2ZXJ5IHVuYWxpZ25lZCkKKwkmY2FsbAkoIl92cGFlc19zY2hlZHVsZV90cmFuc2Zvcm0iKTsJIyBpbnB1dCB0cmFuc2Zvcm0JCisJJm1vdmRxYQkoInhtbTYiLCJ4bW0wIik7CQkjIHNhdmUgc2hvcnQgcGFydAorCSZweG9yCSgieG1tNCIsInhtbTQiKTsJCSMgY2xlYXIgNAorCSZtb3ZobHBzKCJ4bW02IiwieG1tNCIpOwkJIyBjbG9iYmVyIGxvdyBzaWRlIHdpdGggemVyb3MKKwkmbW92CSgkcm91bmQsNCk7CisKKyZzZXRfbGFiZWwoImxvb3Bfc2NoZWR1bGVfMTkyIik7CisJJmNhbGwJKCJfdnBhZXNfc2NoZWR1bGVfcm91bmQiKTsKKwkmcGFsaWducigieG1tMCIsInhtbTYiLDgpOworCSZjYWxsCSgiX3ZwYWVzX3NjaGVkdWxlX21hbmdsZSIpOwkjIHNhdmUga2V5IG4KKwkmY2FsbAkoIl92cGFlc19zY2hlZHVsZV8xOTJfc21lYXIiKTsKKwkmY2FsbAkoIl92cGFlc19zY2hlZHVsZV9tYW5nbGUiKTsJIyBzYXZlIGtleSBuKzEKKwkmY2FsbAkoIl92cGFlc19zY2hlZHVsZV9yb3VuZCIpOworCSZkZWMJKCRyb3VuZCk7CisJJmp6CSgmbGFiZWwoInNjaGVkdWxlX21hbmdsZV9sYXN0IikpOworCSZjYWxsCSgiX3ZwYWVzX3NjaGVkdWxlX21hbmdsZSIpOwkjIHNhdmUga2V5IG4rMgorCSZjYWxsCSgiX3ZwYWVzX3NjaGVkdWxlXzE5Ml9zbWVhciIpOworCSZqbXAJKCZsYWJlbCgibG9vcF9zY2hlZHVsZV8xOTIiKSk7CisKKyMjCisjIyAgLmFlc19zY2hlZHVsZV8yNTYKKyMjCisjIyAgMjU2LWJpdCBzcGVjaWZpYyBwYXJ0IG9mIGtleSBzY2hlZHVsZS4KKyMjCisjIyAgVGhlIHN0cnVjdHVyZSBoZXJlIGlzIHZlcnkgc2ltaWxhciB0byB0aGUgMTI4LWJpdAorIyMgIHNjaGVkdWxlLCBidXQgd2l0aCBhbiBhZGRpdGlvbmFsICJsb3cgc2lkZSIgaW4KKyMjICAleG1tNi4gIFRoZSBsb3cgc2lkZSdzIHJvdW5kcyBhcmUgdGhlIHNhbWUgYXMgdGhlCisjIyAgaGlnaCBzaWRlJ3MsIGV4Y2VwdCBubyByY29uIGFuZCBubyByb3RhdGlvbi4KKyMjCismc2V0X2xhYmVsKCJzY2hlZHVsZV8yNTYiLDE2KTsKKwkmbW92ZHF1CSgieG1tMCIsJlFXUCgxNiwkaW5wKSk7CQkjIGxvYWQga2V5IHBhcnQgMiAodW5hbGlnbmVkKQorCSZjYWxsCSgiX3ZwYWVzX3NjaGVkdWxlX3RyYW5zZm9ybSIpOwkjIGlucHV0IHRyYW5zZm9ybQkKKwkmbW92CSgkcm91bmQsNyk7CisKKyZzZXRfbGFiZWwoImxvb3Bfc2NoZWR1bGVfMjU2Iik7CisJJmNhbGwJKCJfdnBhZXNfc2NoZWR1bGVfbWFuZ2xlIik7CSMgb3V0cHV0IGxvdyByZXN1bHQKKwkmbW92ZHFhCSgieG1tNiIsInhtbTAiKTsJCSMgc2F2ZSBjdXJfbG8gaW4geG1tNgorCisJIyBoaWdoIHJvdW5kCisJJmNhbGwJKCJfdnBhZXNfc2NoZWR1bGVfcm91bmQiKTsKKwkmZGVjCSgkcm91bmQpOworCSZqegkoJmxhYmVsKCJzY2hlZHVsZV9tYW5nbGVfbGFzdCIpKTsKKwkmY2FsbAkoIl92cGFlc19zY2hlZHVsZV9tYW5nbGUiKTsJCisKKwkjIGxvdyByb3VuZC4gc3dhcCB4bW03IGFuZCB4bW02CisJJnBzaHVmZAkoInhtbTAiLCJ4bW0wIiwweEZGKTsKKwkmbW92ZHFhCSgmUVdQKDIwLCJlc3AiKSwieG1tNyIpOworCSZtb3ZkcWEJKCJ4bW03IiwieG1tNiIpOworCSZjYWxsCSgiX3ZwYWVzX3NjaGVkdWxlX2xvd19yb3VuZCIpOworCSZtb3ZkcWEJKCJ4bW03IiwmUVdQKDIwLCJlc3AiKSk7CisKKwkmam1wCSgmbGFiZWwoImxvb3Bfc2NoZWR1bGVfMjU2IikpOworCisjIworIyMgIC5hZXNfc2NoZWR1bGVfbWFuZ2xlX2xhc3QKKyMjCisjIyAgTWFuZ2xlciBmb3IgbGFzdCByb3VuZCBvZiBrZXkgc2NoZWR1bGUKKyMjICBNYW5nbGVzICV4bW0wCisjIyAgICB3aGVuIGVuY3J5cHRpbmcsIG91dHB1dHMgb3V0KCV4bW0wKSBeIDYzCisjIyAgICB3aGVuIGRlY3J5cHRpbmcsIG91dHB1dHMgdW5za2V3KCV4bW0wKQorIyMKKyMjICBBbHdheXMgY2FsbGVkIHJpZ2h0IGJlZm9yZSByZXR1cm4uLi4ganVtcHMgdG8gY2xlYW51cCBhbmQgZXhpdHMKKyMjCismc2V0X2xhYmVsKCJzY2hlZHVsZV9tYW5nbGVfbGFzdCIsMTYpOworCSMgc2NoZWR1bGUgbGFzdCByb3VuZCBrZXkgZnJvbSB4bW0wCisJJmxlYQkoJGJhc2UsJkRXUCgka19kZXNrZXcsJGNvbnN0KSk7CisJJnRlc3QJKCRvdXQsJG91dCk7CisJJmpuegkoJmxhYmVsKCJzY2hlZHVsZV9tYW5nbGVfbGFzdF9kZWMiKSk7CisKKwkjIGVuY3J5cHRpbmcKKwkmbW92ZHFhCSgieG1tMSIsJlFXUCgka19zciwkY29uc3QsJG1hZ2ljKSk7CisJJnBzaHVmYgkoInhtbTAiLCJ4bW0xIik7CQkjIG91dHB1dCBwZXJtdXRlCisJJmxlYQkoJGJhc2UsJkRXUCgka19vcHQsJGNvbnN0KSk7CSMgcHJlcGFyZSB0byBvdXRwdXQgdHJhbnNmb3JtCisJJmFkZAkoJGtleSwzMik7CisKKyZzZXRfbGFiZWwoInNjaGVkdWxlX21hbmdsZV9sYXN0X2RlYyIpOworCSZhZGQJKCRrZXksLTE2KTsKKwkmcHhvcgkoInhtbTAiLCZRV1AoJGtfczYzLCRjb25zdCkpOworCSZjYWxsCSgiX3ZwYWVzX3NjaGVkdWxlX3RyYW5zZm9ybSIpOwkjIG91dHB1dCB0cmFuc2Zvcm0KKwkmbW92ZHF1CSgmUVdQKDAsJGtleSksInhtbTAiKTsJCSMgc2F2ZSBsYXN0IGtleQorCisJIyBjbGVhbnVwCisJJnB4b3IJKCJ4bW0wIiwieG1tMCIpOworCSZweG9yCSgieG1tMSIsInhtbTEiKTsKKwkmcHhvcgkoInhtbTIiLCJ4bW0yIik7CisJJnB4b3IJKCJ4bW0zIiwieG1tMyIpOworCSZweG9yCSgieG1tNCIsInhtbTQiKTsKKwkmcHhvcgkoInhtbTUiLCJ4bW01Iik7CisJJnB4b3IJKCJ4bW02IiwieG1tNiIpOworCSZweG9yCSgieG1tNyIsInhtbTciKTsKKwkmcmV0CSgpOworJmZ1bmN0aW9uX2VuZF9CKCJfdnBhZXNfc2NoZWR1bGVfY29yZSIpOworCisjIworIyMgIC5hZXNfc2NoZWR1bGVfMTkyX3NtZWFyCisjIworIyMgIFNtZWFyIHRoZSBzaG9ydCwgbG93IHNpZGUgaW4gdGhlIDE5Mi1iaXQga2V5IHNjaGVkdWxlLgorIyMKKyMjICBJbnB1dHM6CisjIyAgICAleG1tNzogaGlnaCBzaWRlLCBiICBhICB4ICB5CisjIyAgICAleG1tNjogIGxvdyBzaWRlLCBkICBjICAwICAwCisjIyAgICAleG1tMTM6IDAKKyMjCisjIyAgT3V0cHV0czoKKyMjICAgICV4bW02OiBiK2MrZCAgYitjICAwICAwCisjIyAgICAleG1tMDogYitjK2QgIGIrYyAgYiAgYQorIyMKKyZmdW5jdGlvbl9iZWdpbl9CKCJfdnBhZXNfc2NoZWR1bGVfMTkyX3NtZWFyIik7CisJJnBzaHVmZAkoInhtbTAiLCJ4bW02IiwweDgwKTsJCSMgZCBjIDAgMCAtPiBjIDAgMCAwCisJJnB4b3IJKCJ4bW02IiwieG1tMCIpOwkJIyAtPiBjK2QgYyAwIDAKKwkmcHNodWZkCSgieG1tMCIsInhtbTciLDB4RkUpOwkJIyBiIGEgXyBfIC0+IGIgYiBiIGEKKwkmcHhvcgkoInhtbTYiLCJ4bW0wIik7CQkjIC0+IGIrYytkIGIrYyBiIGEKKwkmbW92ZHFhCSgieG1tMCIsInhtbTYiKTsKKwkmcHhvcgkoInhtbTEiLCJ4bW0xIik7CisJJm1vdmhscHMoInhtbTYiLCJ4bW0xIik7CQkjIGNsb2JiZXIgbG93IHNpZGUgd2l0aCB6ZXJvcworCSZyZXQJKCk7CismZnVuY3Rpb25fZW5kX0IoIl92cGFlc19zY2hlZHVsZV8xOTJfc21lYXIiKTsKKworIyMKKyMjICAuYWVzX3NjaGVkdWxlX3JvdW5kCisjIworIyMgIFJ1bnMgb25lIG1haW4gcm91bmQgb2YgdGhlIGtleSBzY2hlZHVsZSBvbiAleG1tMCwgJXhtbTcKKyMjCisjIyAgU3BlY2lmaWNhbGx5LCBydW5zIHN1YmJ5dGVzIG9uIHRoZSBoaWdoIGR3b3JkIG9mICV4bW0wCisjIyAgdGhlbiByb3RhdGVzIGl0IGJ5IG9uZSBieXRlIGFuZCB4b3JzIGludG8gdGhlIGxvdyBkd29yZCBvZgorIyMgICV4bW03LgorIyMKKyMjICBBZGRzIHJjb24gZnJvbSBsb3cgYnl0ZSBvZiAleG1tOCwgdGhlbiByb3RhdGVzICV4bW04IGZvcgorIyMgIG5leHQgcmNvbi4KKyMjCisjIyAgU21lYXJzIHRoZSBkd29yZHMgb2YgJXhtbTcgYnkgeG9yaW5nIHRoZSBsb3cgaW50byB0aGUKKyMjICBzZWNvbmQgbG93LCByZXN1bHQgaW50byB0aGlyZCwgcmVzdWx0IGludG8gaGlnaGVzdC4KKyMjCisjIyAgUmV0dXJucyByZXN1bHRzIGluICV4bW03ID0gJXhtbTAuCisjIyAgQ2xvYmJlcnMgJXhtbTEtJXhtbTUuCisjIworJmZ1bmN0aW9uX2JlZ2luX0IoIl92cGFlc19zY2hlZHVsZV9yb3VuZCIpOworCSMgZXh0cmFjdCByY29uIGZyb20geG1tOAorCSZtb3ZkcWEJKCJ4bW0yIiwmUVdQKDgsImVzcCIpKTsJCSMgeG1tOAorCSZweG9yCSgieG1tMSIsInhtbTEiKTsKKwkmcGFsaWducigieG1tMSIsInhtbTIiLDE1KTsKKwkmcGFsaWducigieG1tMiIsInhtbTIiLDE1KTsKKwkmcHhvcgkoInhtbTciLCJ4bW0xIik7CisKKwkjIHJvdGF0ZQorCSZwc2h1ZmQJKCJ4bW0wIiwieG1tMCIsMHhGRik7CisJJnBhbGlnbnIoInhtbTAiLCJ4bW0wIiwxKTsKKworCSMgZmFsbCB0aHJvdWdoLi4uCisJJm1vdmRxYQkoJlFXUCg4LCJlc3AiKSwieG1tMiIpOwkJIyB4bW04CisKKwkjIGxvdyByb3VuZDogc2FtZSBhcyBoaWdoIHJvdW5kLCBidXQgbm8gcm90YXRpb24gYW5kIG5vIHJjb24uCismc2V0X2xhYmVsKCJfdnBhZXNfc2NoZWR1bGVfbG93X3JvdW5kIik7CisJIyBzbWVhciB4bW03CisJJm1vdmRxYQkoInhtbTEiLCJ4bW03Iik7CisJJnBzbGxkcQkoInhtbTciLDQpOworCSZweG9yCSgieG1tNyIsInhtbTEiKTsKKwkmbW92ZHFhCSgieG1tMSIsInhtbTciKTsKKwkmcHNsbGRxCSgieG1tNyIsOCk7CisJJnB4b3IJKCJ4bW03IiwieG1tMSIpOworCSZweG9yCSgieG1tNyIsJlFXUCgka19zNjMsJGNvbnN0KSk7CisKKwkjIHN1YmJ5dGUKKwkmbW92ZHFhCSgieG1tNCIsJlFXUCgka19zMEYsJGNvbnN0KSk7CisJJm1vdmRxYQkoInhtbTUiLCZRV1AoJGtfaW52LCRjb25zdCkpOwkjIDQgOiAxL2oKKwkmbW92ZHFhCSgieG1tMSIsInhtbTQiKTsJCisJJnBhbmRuCSgieG1tMSIsInhtbTAiKTsKKwkmcHNybGQJKCJ4bW0xIiw0KTsJCQkjIDEgPSBpCisJJnBhbmQJKCJ4bW0wIiwieG1tNCIpOwkJIyAwID0gaworCSZtb3ZkcWEJKCJ4bW0yIiwmUVdQKCRrX2ludisxNiwkY29uc3QpKTsjIDIgOiBhL2sKKwkmcHNodWZiCSgieG1tMiIsInhtbTAiKTsJCSMgMiA9IGEvaworCSZweG9yCSgieG1tMCIsInhtbTEiKTsJCSMgMCA9IGoKKwkmbW92ZHFhCSgieG1tMyIsInhtbTUiKTsJCSMgMyA6IDEvaQorCSZwc2h1ZmIJKCJ4bW0zIiwieG1tMSIpOwkJIyAzID0gMS9pCisJJnB4b3IJKCJ4bW0zIiwieG1tMiIpOwkJIyAzID0gaWFrID0gMS9pICsgYS9rCisJJm1vdmRxYQkoInhtbTQiLCJ4bW01Iik7CQkjIDQgOiAxL2oKKwkmcHNodWZiCSgieG1tNCIsInhtbTAiKTsJCSMgNCA9IDEvagorCSZweG9yCSgieG1tNCIsInhtbTIiKTsJCSMgNCA9IGphayA9IDEvaiArIGEvaworCSZtb3ZkcWEJKCJ4bW0yIiwieG1tNSIpOwkJIyAyIDogMS9pYWsKKwkmcHNodWZiCSgieG1tMiIsInhtbTMiKTsJCSMgMiA9IDEvaWFrCisJJnB4b3IJKCJ4bW0yIiwieG1tMCIpOwkJIyAyID0gaW8KKwkmbW92ZHFhCSgieG1tMyIsInhtbTUiKTsJCSMgMyA6IDEvamFrCisJJnBzaHVmYgkoInhtbTMiLCJ4bW00Iik7CQkjIDMgPSAxL2phaworCSZweG9yCSgieG1tMyIsInhtbTEiKTsJCSMgMyA9IGpvCisJJm1vdmRxYQkoInhtbTQiLCZRV1AoJGtfc2IxLCRjb25zdCkpOwkjIDQgOiBzYm91CisJJnBzaHVmYgkoInhtbTQiLCJ4bW0yIik7CQkjIDQgPSBzYm91CisJJm1vdmRxYQkoInhtbTAiLCZRV1AoJGtfc2IxKzE2LCRjb25zdCkpOyMgMCA6IHNib3QKKwkmcHNodWZiCSgieG1tMCIsInhtbTMiKTsJCSMgMCA9IHNiMXQKKwkmcHhvcgkoInhtbTAiLCJ4bW00Iik7CQkjIDAgPSBzYm94IG91dHB1dAorCisJIyBhZGQgaW4gc21lYXJlZCBzdHVmZgorCSZweG9yCSgieG1tMCIsInhtbTciKTsKKwkmbW92ZHFhCSgieG1tNyIsInhtbTAiKTsKKwkmcmV0CSgpOworJmZ1bmN0aW9uX2VuZF9CKCJfdnBhZXNfc2NoZWR1bGVfcm91bmQiKTsKKworIyMKKyMjICAuYWVzX3NjaGVkdWxlX3RyYW5zZm9ybQorIyMKKyMjICBMaW5lYXItdHJhbnNmb3JtICV4bW0wIGFjY29yZGluZyB0byB0YWJsZXMgYXQgKCVlYngpCisjIworIyMgIE91dHB1dCBpbiAleG1tMAorIyMgIENsb2JiZXJzICV4bW0xLCAleG1tMgorIyMKKyZmdW5jdGlvbl9iZWdpbl9CKCJfdnBhZXNfc2NoZWR1bGVfdHJhbnNmb3JtIik7CisJJm1vdmRxYQkoInhtbTIiLCZRV1AoJGtfczBGLCRjb25zdCkpOworCSZtb3ZkcWEJKCJ4bW0xIiwieG1tMiIpOworCSZwYW5kbgkoInhtbTEiLCJ4bW0wIik7CisJJnBzcmxkCSgieG1tMSIsNCk7CisJJnBhbmQJKCJ4bW0wIiwieG1tMiIpOworCSZtb3ZkcWEJKCJ4bW0yIiwmUVdQKDAsJGJhc2UpKTsKKwkmcHNodWZiCSgieG1tMiIsInhtbTAiKTsKKwkmbW92ZHFhCSgieG1tMCIsJlFXUCgxNiwkYmFzZSkpOworCSZwc2h1ZmIJKCJ4bW0wIiwieG1tMSIpOworCSZweG9yCSgieG1tMCIsInhtbTIiKTsKKwkmcmV0CSgpOworJmZ1bmN0aW9uX2VuZF9CKCJfdnBhZXNfc2NoZWR1bGVfdHJhbnNmb3JtIik7CisKKyMjCisjIyAgLmFlc19zY2hlZHVsZV9tYW5nbGUKKyMjCisjIyAgTWFuZ2xlIHhtbTAgZnJvbSAoYmFzaXMtdHJhbnNmb3JtZWQpIHN0YW5kYXJkIHZlcnNpb24KKyMjICB0byBvdXIgdmVyc2lvbi4KKyMjCisjIyAgT24gZW5jcnlwdCwKKyMjICAgIHhvciB3aXRoIDB4NjMKKyMjICAgIG11bHRpcGx5IGJ5IGNpcmN1bGFudCAwLDEsMSwxCisjIyAgICBhcHBseSBzaGlmdHJvd3MgdHJhbnNmb3JtCisjIworIyMgIE9uIGRlY3J5cHQsCisjIyAgICB4b3Igd2l0aCAweDYzCisjIyAgICBtdWx0aXBseSBieSAiaW52ZXJzZSBtaXhjb2x1bW5zIiBjaXJjdWxhbnQgRSxCLEQsOQorIyMgICAgZGVza2V3CisjIyAgICBhcHBseSBzaGlmdHJvd3MgdHJhbnNmb3JtCisjIworIyMKKyMjICBXcml0ZXMgb3V0IHRvICglZWR4KSwgYW5kIGluY3JlbWVudHMgb3IgZGVjcmVtZW50cyBpdAorIyMgIEtlZXBzIHRyYWNrIG9mIHJvdW5kIG51bWJlciBtb2QgNCBpbiAlZWN4CisjIyAgUHJlc2VydmVzIHhtbTAKKyMjICBDbG9iYmVycyB4bW0xLXhtbTUKKyMjCismZnVuY3Rpb25fYmVnaW5fQigiX3ZwYWVzX3NjaGVkdWxlX21hbmdsZSIpOworCSZtb3ZkcWEJKCJ4bW00IiwieG1tMCIpOwkjIHNhdmUgeG1tMCBmb3IgbGF0ZXIKKwkmbW92ZHFhCSgieG1tNSIsJlFXUCgka19tY19mb3J3YXJkLCRjb25zdCkpOworCSZ0ZXN0CSgkb3V0LCRvdXQpOworCSZqbnoJKCZsYWJlbCgic2NoZWR1bGVfbWFuZ2xlX2RlYyIpKTsKKworCSMgZW5jcnlwdGluZworCSZhZGQJKCRrZXksMTYpOworCSZweG9yCSgieG1tNCIsJlFXUCgka19zNjMsJGNvbnN0KSk7CisJJnBzaHVmYgkoInhtbTQiLCJ4bW01Iik7CisJJm1vdmRxYQkoInhtbTMiLCJ4bW00Iik7CisJJnBzaHVmYgkoInhtbTQiLCJ4bW01Iik7CisJJnB4b3IJKCJ4bW0zIiwieG1tNCIpOworCSZwc2h1ZmIJKCJ4bW00IiwieG1tNSIpOworCSZweG9yCSgieG1tMyIsInhtbTQiKTsKKworCSZqbXAJKCZsYWJlbCgic2NoZWR1bGVfbWFuZ2xlX2JvdGgiKSk7CisKKyZzZXRfbGFiZWwoInNjaGVkdWxlX21hbmdsZV9kZWMiLDE2KTsKKwkjIGludmVyc2UgbWl4IGNvbHVtbnMKKwkmbW92ZHFhCSgieG1tMiIsJlFXUCgka19zMEYsJGNvbnN0KSk7CisJJmxlYQkoJGlucCwmRFdQKCRrX2Rrc2QsJGNvbnN0KSk7CisJJm1vdmRxYQkoInhtbTEiLCJ4bW0yIik7CisJJnBhbmRuCSgieG1tMSIsInhtbTQiKTsKKwkmcHNybGQJKCJ4bW0xIiw0KTsJCQkjIDEgPSBoaQorCSZwYW5kCSgieG1tNCIsInhtbTIiKTsJCSMgNCA9IGxvCisKKwkmbW92ZHFhCSgieG1tMiIsJlFXUCgwLCRpbnApKTsKKwkmcHNodWZiCSgieG1tMiIsInhtbTQiKTsKKwkmbW92ZHFhCSgieG1tMyIsJlFXUCgweDEwLCRpbnApKTsKKwkmcHNodWZiCSgieG1tMyIsInhtbTEiKTsKKwkmcHhvcgkoInhtbTMiLCJ4bW0yIik7CisJJnBzaHVmYgkoInhtbTMiLCJ4bW01Iik7CisKKwkmbW92ZHFhCSgieG1tMiIsJlFXUCgweDIwLCRpbnApKTsKKwkmcHNodWZiCSgieG1tMiIsInhtbTQiKTsKKwkmcHhvcgkoInhtbTIiLCJ4bW0zIik7CisJJm1vdmRxYQkoInhtbTMiLCZRV1AoMHgzMCwkaW5wKSk7CisJJnBzaHVmYgkoInhtbTMiLCJ4bW0xIik7CisJJnB4b3IJKCJ4bW0zIiwieG1tMiIpOworCSZwc2h1ZmIJKCJ4bW0zIiwieG1tNSIpOworCisJJm1vdmRxYQkoInhtbTIiLCZRV1AoMHg0MCwkaW5wKSk7CisJJnBzaHVmYgkoInhtbTIiLCJ4bW00Iik7CisJJnB4b3IJKCJ4bW0yIiwieG1tMyIpOworCSZtb3ZkcWEJKCJ4bW0zIiwmUVdQKDB4NTAsJGlucCkpOworCSZwc2h1ZmIJKCJ4bW0zIiwieG1tMSIpOworCSZweG9yCSgieG1tMyIsInhtbTIiKTsKKwkmcHNodWZiCSgieG1tMyIsInhtbTUiKTsKKworCSZtb3ZkcWEJKCJ4bW0yIiwmUVdQKDB4NjAsJGlucCkpOworCSZwc2h1ZmIJKCJ4bW0yIiwieG1tNCIpOworCSZweG9yCSgieG1tMiIsInhtbTMiKTsKKwkmbW92ZHFhCSgieG1tMyIsJlFXUCgweDcwLCRpbnApKTsKKwkmcHNodWZiCSgieG1tMyIsInhtbTEiKTsKKwkmcHhvcgkoInhtbTMiLCJ4bW0yIik7CisKKwkmYWRkCSgka2V5LC0xNik7CisKKyZzZXRfbGFiZWwoInNjaGVkdWxlX21hbmdsZV9ib3RoIik7CisJJm1vdmRxYQkoInhtbTEiLCZRV1AoJGtfc3IsJGNvbnN0LCRtYWdpYykpOworCSZwc2h1ZmIJKCJ4bW0zIiwieG1tMSIpOworCSZhZGQJKCRtYWdpYywtMTYpOworCSZhbmQJKCRtYWdpYywweDMwKTsKKwkmbW92ZHF1CSgmUVdQKDAsJGtleSksInhtbTMiKTsKKwkmcmV0CSgpOworJmZ1bmN0aW9uX2VuZF9CKCJfdnBhZXNfc2NoZWR1bGVfbWFuZ2xlIik7CisKKyMKKyMgSW50ZXJmYWNlIHRvIE9wZW5TU0wKKyMKKyZmdW5jdGlvbl9iZWdpbigiJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleSIpOworCSZtb3YJKCRpbnAsJndwYXJhbSgwKSk7CQkjIGlucAorCSZsZWEJKCRiYXNlLCZEV1AoLTU2LCJlc3AiKSk7CisJJm1vdgkoJHJvdW5kLCZ3cGFyYW0oMSkpOwkJIyBiaXRzCisJJmFuZAkoJGJhc2UsLTE2KTsKKwkmbW92CSgka2V5LCZ3cGFyYW0oMikpOwkJIyBrZXkKKwkmeGNoZwkoJGJhc2UsImVzcCIpOwkJCSMgYWxsb2NhCisJJm1vdgkoJkRXUCg0OCwiZXNwIiksJGJhc2UpOworCisJJm1vdgkoJGJhc2UsJHJvdW5kKTsKKwkmc2hyCSgkYmFzZSw1KTsKKwkmYWRkCSgkYmFzZSw1KTsKKwkmbW92CSgmRFdQKDI0MCwka2V5KSwkYmFzZSk7CQkjIEFFU19LRVktPnJvdW5kcyA9IG5iaXRzLzMyKzU7CisJJm1vdgkoJG1hZ2ljLDB4MzApOworCSZtb3YJKCRvdXQsMCk7CisKKwkmbGVhCSgkY29uc3QsJkRXUCgmbGFiZWwoIl92cGFlc19jb25zdHMiKS4iKzB4MzAtIi4mbGFiZWwoInBpY19wb2ludCIpKSk7CisJJmNhbGwJKCJfdnBhZXNfc2NoZWR1bGVfY29yZSIpOworJnNldF9sYWJlbCgicGljX3BvaW50Iik7CisKKwkmbW92CSgiZXNwIiwmRFdQKDQ4LCJlc3AiKSk7CisJJnhvcgkoImVheCIsImVheCIpOworJmZ1bmN0aW9uX2VuZCgiJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleSIpOworCismZnVuY3Rpb25fYmVnaW4oIiR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXkiKTsKKwkmbW92CSgkaW5wLCZ3cGFyYW0oMCkpOwkJIyBpbnAKKwkmbGVhCSgkYmFzZSwmRFdQKC01NiwiZXNwIikpOworCSZtb3YJKCRyb3VuZCwmd3BhcmFtKDEpKTsJCSMgYml0cworCSZhbmQJKCRiYXNlLC0xNik7CisJJm1vdgkoJGtleSwmd3BhcmFtKDIpKTsJCSMga2V5CisJJnhjaGcJKCRiYXNlLCJlc3AiKTsJCQkjIGFsbG9jYQorCSZtb3YJKCZEV1AoNDgsImVzcCIpLCRiYXNlKTsKKworCSZtb3YJKCRiYXNlLCRyb3VuZCk7CisJJnNocgkoJGJhc2UsNSk7CisJJmFkZAkoJGJhc2UsNSk7CisJJm1vdgkoJkRXUCgyNDAsJGtleSksJGJhc2UpOwkjIEFFU19LRVktPnJvdW5kcyA9IG5iaXRzLzMyKzU7CisJJnNobAkoJGJhc2UsNCk7CisJJmxlYQkoJGtleSwmRFdQKDE2LCRrZXksJGJhc2UpKTsKKworCSZtb3YJKCRvdXQsMSk7CisJJm1vdgkoJG1hZ2ljLCRyb3VuZCk7CisJJnNocgkoJG1hZ2ljLDEpOworCSZhbmQJKCRtYWdpYywzMik7CisJJnhvcgkoJG1hZ2ljLDMyKTsJCQkjIG5iaXN0PT0xOTI/MDozMjsKKworCSZsZWEJKCRjb25zdCwmRFdQKCZsYWJlbCgiX3ZwYWVzX2NvbnN0cyIpLiIrMHgzMC0iLiZsYWJlbCgicGljX3BvaW50IikpKTsKKwkmY2FsbAkoIl92cGFlc19zY2hlZHVsZV9jb3JlIik7Cismc2V0X2xhYmVsKCJwaWNfcG9pbnQiKTsKKworCSZtb3YJKCJlc3AiLCZEV1AoNDgsImVzcCIpKTsKKwkmeG9yCSgiZWF4IiwiZWF4Iik7CismZnVuY3Rpb25fZW5kKCIke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5Iik7CisKKyZmdW5jdGlvbl9iZWdpbigiJHtQUkVGSVh9X2VuY3J5cHQiKTsKKwkmbGVhCSgkY29uc3QsJkRXUCgmbGFiZWwoIl92cGFlc19jb25zdHMiKS4iKzB4MzAtIi4mbGFiZWwoInBpY19wb2ludCIpKSk7CisJJmNhbGwJKCJfdnBhZXNfcHJlaGVhdCIpOworJnNldF9sYWJlbCgicGljX3BvaW50Iik7CisJJm1vdgkoJGlucCwmd3BhcmFtKDApKTsJCSMgaW5wCisJJmxlYQkoJGJhc2UsJkRXUCgtNTYsImVzcCIpKTsKKwkmbW92CSgkb3V0LCZ3cGFyYW0oMSkpOwkJIyBvdXQKKwkmYW5kCSgkYmFzZSwtMTYpOworCSZtb3YJKCRrZXksJndwYXJhbSgyKSk7CQkjIGtleQorCSZ4Y2hnCSgkYmFzZSwiZXNwIik7CQkJIyBhbGxvY2EKKwkmbW92CSgmRFdQKDQ4LCJlc3AiKSwkYmFzZSk7CisKKwkmbW92ZHF1CSgieG1tMCIsJlFXUCgwLCRpbnApKTsKKwkmY2FsbAkoIl92cGFlc19lbmNyeXB0X2NvcmUiKTsKKwkmbW92ZHF1CSgmUVdQKDAsJG91dCksInhtbTAiKTsKKworCSZtb3YJKCJlc3AiLCZEV1AoNDgsImVzcCIpKTsKKyZmdW5jdGlvbl9lbmQoIiR7UFJFRklYfV9lbmNyeXB0Iik7CisKKyZmdW5jdGlvbl9iZWdpbigiJHtQUkVGSVh9X2RlY3J5cHQiKTsKKwkmbGVhCSgkY29uc3QsJkRXUCgmbGFiZWwoIl92cGFlc19jb25zdHMiKS4iKzB4MzAtIi4mbGFiZWwoInBpY19wb2ludCIpKSk7CisJJmNhbGwJKCJfdnBhZXNfcHJlaGVhdCIpOworJnNldF9sYWJlbCgicGljX3BvaW50Iik7CisJJm1vdgkoJGlucCwmd3BhcmFtKDApKTsJCSMgaW5wCisJJmxlYQkoJGJhc2UsJkRXUCgtNTYsImVzcCIpKTsKKwkmbW92CSgkb3V0LCZ3cGFyYW0oMSkpOwkJIyBvdXQKKwkmYW5kCSgkYmFzZSwtMTYpOworCSZtb3YJKCRrZXksJndwYXJhbSgyKSk7CQkjIGtleQorCSZ4Y2hnCSgkYmFzZSwiZXNwIik7CQkJIyBhbGxvY2EKKwkmbW92CSgmRFdQKDQ4LCJlc3AiKSwkYmFzZSk7CisKKwkmbW92ZHF1CSgieG1tMCIsJlFXUCgwLCRpbnApKTsKKwkmY2FsbAkoIl92cGFlc19kZWNyeXB0X2NvcmUiKTsKKwkmbW92ZHF1CSgmUVdQKDAsJG91dCksInhtbTAiKTsKKworCSZtb3YJKCJlc3AiLCZEV1AoNDgsImVzcCIpKTsKKyZmdW5jdGlvbl9lbmQoIiR7UFJFRklYfV9kZWNyeXB0Iik7CisKKyZmdW5jdGlvbl9iZWdpbigiJHtQUkVGSVh9X2NiY19lbmNyeXB0Iik7CisJJm1vdgkoJGlucCwmd3BhcmFtKDApKTsJCSMgaW5wCisJJm1vdgkoJG91dCwmd3BhcmFtKDEpKTsJCSMgb3V0CisJJm1vdgkoJHJvdW5kLCZ3cGFyYW0oMikpOwkJIyBsZW4KKwkmbW92CSgka2V5LCZ3cGFyYW0oMykpOwkJIyBrZXkKKwkmc3ViCSgkcm91bmQsMTYpOworCSZqYwkoJmxhYmVsKCJjYmNfYWJvcnQiKSk7CisJJmxlYQkoJGJhc2UsJkRXUCgtNTYsImVzcCIpKTsKKwkmbW92CSgkY29uc3QsJndwYXJhbSg0KSk7CQkjIGl2cAorCSZhbmQJKCRiYXNlLC0xNik7CisJJm1vdgkoJG1hZ2ljLCZ3cGFyYW0oNSkpOwkJIyBlbmMKKwkmeGNoZwkoJGJhc2UsImVzcCIpOwkJCSMgYWxsb2NhCisJJm1vdmRxdQkoInhtbTEiLCZRV1AoMCwkY29uc3QpKTsJIyBsb2FkIElWCisJJnN1YgkoJG91dCwkaW5wKTsKKwkmbW92CSgmRFdQKDQ4LCJlc3AiKSwkYmFzZSk7CisKKwkmbW92CSgmRFdQKDAsImVzcCIpLCRvdXQpOwkJIyBzYXZlIG91dAorCSZtb3YJKCZEV1AoNCwiZXNwIiksJGtleSkJCSMgc2F2ZSBrZXkKKwkmbW92CSgmRFdQKDgsImVzcCIpLCRjb25zdCk7CQkjIHNhdmUgaXZwCisJJm1vdgkoJG91dCwkcm91bmQpOwkJCSMgJG91dCB3b3JrcyBhcyAkbGVuCisKKwkmbGVhCSgkY29uc3QsJkRXUCgmbGFiZWwoIl92cGFlc19jb25zdHMiKS4iKzB4MzAtIi4mbGFiZWwoInBpY19wb2ludCIpKSk7CisJJmNhbGwJKCJfdnBhZXNfcHJlaGVhdCIpOworJnNldF9sYWJlbCgicGljX3BvaW50Iik7CisJJmNtcAkoJG1hZ2ljLDApOworCSZqZQkoJmxhYmVsKCJjYmNfZGVjX2xvb3AiKSk7CisJJmptcAkoJmxhYmVsKCJjYmNfZW5jX2xvb3AiKSk7CisKKyZzZXRfbGFiZWwoImNiY19lbmNfbG9vcCIsMTYpOworCSZtb3ZkcXUJKCJ4bW0wIiwmUVdQKDAsJGlucCkpOwkJIyBsb2FkIGlucHV0CisJJnB4b3IJKCJ4bW0wIiwieG1tMSIpOwkJIyBpbnBePWl2CisJJmNhbGwJKCJfdnBhZXNfZW5jcnlwdF9jb3JlIik7CisJJm1vdgkoJGJhc2UsJkRXUCgwLCJlc3AiKSk7CQkjIHJlc3RvcmUgb3V0CisJJm1vdgkoJGtleSwmRFdQKDQsImVzcCIpKTsJCSMgcmVzdG9yZSBrZXkKKwkmbW92ZHFhCSgieG1tMSIsInhtbTAiKTsKKwkmbW92ZHF1CSgmUVdQKDAsJGJhc2UsJGlucCksInhtbTAiKTsJIyB3cml0ZSBvdXRwdXQKKwkmbGVhCSgkaW5wLCZEV1AoMTYsJGlucCkpOworCSZzdWIJKCRvdXQsMTYpOworCSZqbmMJKCZsYWJlbCgiY2JjX2VuY19sb29wIikpOworCSZqbXAJKCZsYWJlbCgiY2JjX2RvbmUiKSk7CisKKyZzZXRfbGFiZWwoImNiY19kZWNfbG9vcCIsMTYpOworCSZtb3ZkcXUJKCJ4bW0wIiwmUVdQKDAsJGlucCkpOwkJIyBsb2FkIGlucHV0CisJJm1vdmRxYQkoJlFXUCgxNiwiZXNwIiksInhtbTEiKTsJIyBzYXZlIElWCisJJm1vdmRxYQkoJlFXUCgzMiwiZXNwIiksInhtbTAiKTsJIyBzYXZlIGZ1dHVyZSBJVgorCSZjYWxsCSgiX3ZwYWVzX2RlY3J5cHRfY29yZSIpOworCSZtb3YJKCRiYXNlLCZEV1AoMCwiZXNwIikpOwkJIyByZXN0b3JlIG91dAorCSZtb3YJKCRrZXksJkRXUCg0LCJlc3AiKSk7CQkjIHJlc3RvcmUga2V5CisJJnB4b3IJKCJ4bW0wIiwmUVdQKDE2LCJlc3AiKSk7CSMgb3V0Xj1pdgorCSZtb3ZkcWEJKCJ4bW0xIiwmUVdQKDMyLCJlc3AiKSk7CSMgbG9hZCBuZXh0IElWCisJJm1vdmRxdQkoJlFXUCgwLCRiYXNlLCRpbnApLCJ4bW0wIik7CSMgd3JpdGUgb3V0cHV0CisJJmxlYQkoJGlucCwmRFdQKDE2LCRpbnApKTsKKwkmc3ViCSgkb3V0LDE2KTsKKwkmam5jCSgmbGFiZWwoImNiY19kZWNfbG9vcCIpKTsKKworJnNldF9sYWJlbCgiY2JjX2RvbmUiKTsKKwkmbW92CSgkYmFzZSwmRFdQKDgsImVzcCIpKTsJCSMgcmVzdG9yZSBpdnAKKwkmbW92CSgiZXNwIiwmRFdQKDQ4LCJlc3AiKSk7CisJJm1vdmRxdQkoJlFXUCgwLCRiYXNlKSwieG1tMSIpOwkJIyB3cml0ZSBJVgorJnNldF9sYWJlbCgiY2JjX2Fib3J0Iik7CismZnVuY3Rpb25fZW5kKCIke1BSRUZJWH1fY2JjX2VuY3J5cHQiKTsKKworJmFzbV9maW5pc2goKTsKZGlmZiAtLWdpdCBhL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYXNtL3ZwYWVzLXg4Nl82NC5wbCBiL2puaS9vcGVuc3NsL2NyeXB0by9hZXMvYXNtL3ZwYWVzLXg4Nl82NC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzk5OGRiCi0tLSAvZGV2L251bGwKKysrIGIvam5pL29wZW5zc2wvY3J5cHRvL2Flcy9hc20vdnBhZXMteDg2XzY0LnBsCkBAIC0wLDAgKzEsMTIwNiBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyBDb25zdGFudC10aW1lIFNTU0UzIEFFUyBjb3JlIGltcGxlbWVudGF0aW9uLgorIyMgdmVyc2lvbiAwLjEKKyMjCisjIyBCeSBNaWtlIEhhbWJ1cmcgKFN0YW5mb3JkIFVuaXZlcnNpdHkpLCAyMDA5CisjIyBQdWJsaWMgZG9tYWluLgorIyMKKyMjIEZvciBkZXRhaWxzIHNlZSBodHRwOi8vc2hpZnRsZWZ0Lm9yZy9wYXBlcnMvdmVjdG9yX2Flcy8gYW5kCisjIyBodHRwOi8vY3J5cHRvLnN0YW5mb3JkLmVkdS92cGFlcy8uCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU2VwdGVtYmVyIDIwMTEuCisjCisjIEludGVyZmFjZSB0byBPcGVuU1NMIGFzICJhbG1vc3QiIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yCisjIGFlcy14ODZfNjQucGwuICJBbG1vc3QiIHJlZmVycyB0byB0aGUgZmFjdCB0aGF0IEFFU19jYmNfZW5jcnlwdAorIyBkb2Vzbid0IGhhbmRsZSBwYXJ0aWFsIHZlY3RvcnMgKGRvZXNuJ3QgaGF2ZSB0byBpZiBjYWxsZWQgZnJvbQorIyBFVlAgb25seSkuICJEcm9wLWluIiBpbXBsaWVzIHRoYXQgdGhpcyBtb2R1bGUgZG9lc24ndCBzaGFyZSBrZXkKKyMgc2NoZWR1bGUgc3RydWN0dXJlIHdpdGggdGhlIG9yaWdpbmFsIG5vciBkb2VzIGl0IG1ha2UgYXNzdW1wdGlvbgorIyBhYm91dCBpdHMgYWxpZ25tZW50Li4uCisjCisjIFBlcmZvcm1hbmNlIHN1bW1hcnkuIGFlcy14ODZfNjQucGwgY29sdW1uIGxpc3RzIGxhcmdlLWJsb2NrIENCQworIyBlbmNyeXB0L2RlY3J5cHQvd2l0aC1oeXBlci10aHJlYWRpbmctb2ZmKCopIHJlc3VsdHMgaW4gY3ljbGVzIHBlcgorIyBieXRlIHByb2Nlc3NlZCB3aXRoIDEyOC1iaXQga2V5LCBhbmQgdnBhZXMteDg2XzY0LnBsIGNvbHVtbiAtCisjIFthbHNvIGxhcmdlLWJsb2NrIENCQ10gZW5jcnlwdC9kZWNyeXB0LgorIworIwkJYWVzLXg4Nl82NC5wbAkJdnBhZXMteDg2XzY0LnBsCisjCisjIENvcmUgMigqKikJMzAuNS80My43LzE0LjMJCTIxLjgvMjUuNygqKiopCisjIE5laGFsZW0JMzAuNS80Mi4yLzE0LjYJCSA5LjgvMTEuOAorIyBBdG9tCQk2My45Lzc5LjAvMzIuMQkJNjQuMC84NC44KCoqKikKKyMKKyMgKCopCSJIeXBlci10aHJlYWRpbmciIGluIHRoZSBjb250ZXh0IHJlZmVycyByYXRoZXIgdG8gY2FjaGUgc2hhcmVkCisjCWFtb25nIG11bHRpcGxlIGNvcmVzLCB0aGFuIHRvIHNwZWNpZmljYWxseSBJbnRlbCBIVFQuIEFzIHZhc3QKKyMJbWFqb3JpdHkgb2YgY29udGVtcG9yYXJ5IGNvcmVzIHNoYXJlIGNhY2hlLCBzbG93ZXIgY29kZSBwYXRoCisjCWlzIGNvbW1vbiBwbGFjZS4gSW4gb3RoZXIgd29yZHMgIndpdGgtaHlwZXItdGhyZWFkaW5nLW9mZiIKKyMJcmVzdWx0cyBhcmUgcHJlc2VudGVkIG1vc3RseSBmb3IgcmVmZXJlbmNlIHB1cnBvc2VzLgorIworIyAoKiopCSJDb3JlIDIiIHJlZmVycyB0byBpbml0aWFsIDY1bm0gZGVzaWduLCBhLmsuYS4gQ29ucm9lLgorIworIyAoKioqKQlMZXNzIGltcHJlc3NpdmUgaW1wcm92ZW1lbnQgb24gQ29yZSAyIGFuZCBBdG9tIGlzIGR1ZSB0byBzbG93CisjCXBzaHVmYiwJeWV0IGl0J3MgcmVzcGVjdGFibGUgKzQwJS83OCUgaW1wcm92ZW1lbnQgb24gQ29yZSAyCisjCShhcyBpbXBsaWVkLCBvdmVyICJoeXBlci10aHJlYWRpbmctc2FmZSIgY29kZSBwYXRoKS4KKyMKKyMJCQkJCQk8YXBwcm9Ab3BlbnNzbC5vcmc+CisKKyRmbGF2b3VyID0gc2hpZnQ7Ciskb3V0cHV0ICA9IHNoaWZ0OworaWYgKCRmbGF2b3VyID1+IC9cLi8pIHsgJG91dHB1dCA9ICRmbGF2b3VyOyB1bmRlZiAkZmxhdm91cjsgfQorCiskd2luNjQ9MDsgJHdpbjY0PTEgaWYgKCRmbGF2b3VyID1+IC9bbm1dYXNtfG1pbmd3NjQvIHx8ICRvdXRwdXQgPX4gL1wuYXNtJC8pOworCiskMCA9fiBtLyguKltcL1xcXSlbXlwvXFxdKyQvOyAkZGlyPSQxOworKCAkeGxhdGU9IiR7ZGlyfXg4Nl82NC14bGF0ZS5wbCIgYW5kIC1mICR4bGF0ZSApIG9yCisoICR4bGF0ZT0iJHtkaXJ9Li4vLi4vcGVybGFzbS94ODZfNjQteGxhdGUucGwiIGFuZCAtZiAkeGxhdGUpIG9yCitkaWUgImNhbid0IGxvY2F0ZSB4ODZfNjQteGxhdGUucGwiOworCitvcGVuIFNURE9VVCwifCAkXlggJHhsYXRlICRmbGF2b3VyICRvdXRwdXQiOworCiskUFJFRklYPSJ2cGFlcyI7CisKKyRjb2RlLj08PF9fXzsKKy50ZXh0CisKKyMjCisjIyAgX2Flc19lbmNyeXB0X2NvcmUKKyMjCisjIyAgQUVTLWVuY3J5cHQgJXhtbTAuCisjIworIyMgIElucHV0czoKKyMjICAgICAleG1tMCA9IGlucHV0CisjIyAgICAgJXhtbTktJXhtbTE1IGFzIGluIF92cGFlc19wcmVoZWF0CisjIyAgICAoJXJkeCkgPSBzY2hlZHVsZWQga2V5cworIyMKKyMjICBPdXRwdXQgaW4gJXhtbTAKKyMjICBDbG9iYmVycyAgJXhtbTEtJXhtbTUsICVyOSwgJXIxMCwgJXIxMSwgJXJheAorIyMgIFByZXNlcnZlcyAleG1tNiAtICV4bW04IHNvIHlvdSBnZXQgc29tZSBsb2NhbCB2ZWN0b3JzCisjIworIyMKKy50eXBlCV92cGFlc19lbmNyeXB0X2NvcmUsXEBhYmktb21uaXBvdGVudAorLmFsaWduIDE2CitfdnBhZXNfZW5jcnlwdF9jb3JlOgorCW1vdgklcmR4LAklcjkKKwltb3YJXCQxNiwJJXIxMQorCW1vdgkyNDAoJXJkeCksJWVheAorCW1vdmRxYQkleG1tOSwJJXhtbTEKKwltb3ZkcWEJLkxrX2lwdCglcmlwKSwgJXhtbTIJIyBpcHRsbworCXBhbmRuCSV4bW0wLAkleG1tMQorCW1vdmRxdQkoJXI5KSwJJXhtbTUJCSMgcm91bmQwIGtleQorCXBzcmxkCVwkNCwJJXhtbTEKKwlwYW5kCSV4bW05LAkleG1tMAorCXBzaHVmYgkleG1tMCwJJXhtbTIKKwltb3ZkcWEJLkxrX2lwdCsxNiglcmlwKSwgJXhtbTAJIyBpcHRoaQorCXBzaHVmYgkleG1tMSwJJXhtbTAKKwlweG9yCSV4bW01LAkleG1tMgorCXB4b3IJJXhtbTIsCSV4bW0wCisJYWRkCVwkMTYsCSVyOQorCWxlYQkuTGtfbWNfYmFja3dhcmQoJXJpcCksJXIxMAorCWptcAkuTGVuY19lbnRyeQorCisuYWxpZ24gMTYKKy5MZW5jX2xvb3A6CisJIyBtaWRkbGUgb2YgbWlkZGxlIHJvdW5kCisJbW92ZHFhICAleG1tMTMsCSV4bW00CSMgNCA6IHNiMXUKKwlwc2h1ZmIgICV4bW0yLAkleG1tNAkjIDQgPSBzYjF1CisJcHhvcgkleG1tNSwJJXhtbTQJIyA0ID0gc2IxdSArIGsKKwltb3ZkcWEgICV4bW0xMiwJJXhtbTAJIyAwIDogc2IxdAorCXBzaHVmYiAgJXhtbTMsCSV4bW0wCSMgMCA9IHNiMXQKKwlweG9yCSV4bW00LAkleG1tMAkjIDAgPSBBCisJbW92ZHFhICAleG1tMTUsCSV4bW01CSMgNCA6IHNiMnUKKwlwc2h1ZmIJJXhtbTIsCSV4bW01CSMgNCA9IHNiMnUKKwltb3ZkcWEJLTB4NDAoJXIxMSwlcjEwKSwgJXhtbTEJCSMgLkxrX21jX2ZvcndhcmRbXQorCW1vdmRxYQkleG1tMTQsICV4bW0yCSMgMiA6IHNiMnQKKwlwc2h1ZmIJJXhtbTMsICAleG1tMgkjIDIgPSBzYjJ0CisJcHhvcgkleG1tNSwJJXhtbTIJIyAyID0gMkEKKwltb3ZkcWEJKCVyMTEsJXIxMCksICV4bW00CQkjIC5Ma19tY19iYWNrd2FyZFtdCisJbW92ZHFhCSV4bW0wLCAgJXhtbTMJIyAzID0gQQorCXBzaHVmYiAgJXhtbTEsICAleG1tMAkjIDAgPSBCCisJYWRkCVwkMTYsCSVyOQkjIG5leHQga2V5CisJcHhvcgkleG1tMiwgICV4bW0wCSMgMCA9IDJBK0IKKwlwc2h1ZmIJJXhtbTQsCSV4bW0zCSMgMyA9IEQKKwlhZGQJXCQxNiwJJXIxMQkjIG5leHQgbWMKKwlweG9yCSV4bW0wLAkleG1tMwkjIDMgPSAyQStCK0QKKwlwc2h1ZmIgICV4bW0xLAkleG1tMAkjIDAgPSAyQitDCisJYW5kCVwkMHgzMCwJJXIxMQkjIC4uLiBtb2QgNAorCXB4b3IJJXhtbTMsCSV4bW0wCSMgMCA9IDJBKzNCK0MrRAorCXN1YglcJDEsJXJheAkjIG5yLS0KKworLkxlbmNfZW50cnk6CisJIyB0b3Agb2Ygcm91bmQKKwltb3ZkcWEgICV4bW05LCAJJXhtbTEJIyAxIDogaQorCXBhbmRuCSV4bW0wLCAJJXhtbTEJIyAxID0gaTw8NAorCXBzcmxkCVwkNCwgICAJJXhtbTEgICAjIDEgPSBpCisJcGFuZAkleG1tOSwgCSV4bW0wICAgIyAwID0gaworCW1vdmRxYQkleG1tMTEsICV4bW01CSMgMiA6IGEvaworCXBzaHVmYiAgJXhtbTAsICAleG1tNQkjIDIgPSBhL2sKKwlweG9yCSV4bW0xLAkleG1tMAkjIDAgPSBqCisJbW92ZHFhCSV4bW0xMCwJJXhtbTMgIAkjIDMgOiAxL2kKKwlwc2h1ZmIgICV4bW0xLCAJJXhtbTMgIAkjIDMgPSAxL2kKKwlweG9yCSV4bW01LCAJJXhtbTMgIAkjIDMgPSBpYWsgPSAxL2kgKyBhL2sKKwltb3ZkcWEJJXhtbTEwLAkleG1tNCAgCSMgNCA6IDEvagorCXBzaHVmYgkleG1tMCwgCSV4bW00ICAJIyA0ID0gMS9qCisJcHhvcgkleG1tNSwgCSV4bW00ICAJIyA0ID0gamFrID0gMS9qICsgYS9rCisJbW92ZHFhCSV4bW0xMCwJJXhtbTIgIAkjIDIgOiAxL2lhaworCXBzaHVmYiAgJXhtbTMsCSV4bW0yICAJIyAyID0gMS9pYWsKKwlweG9yCSV4bW0wLCAJJXhtbTIgIAkjIDIgPSBpbworCW1vdmRxYQkleG1tMTAsICV4bW0zICAgIyAzIDogMS9qYWsKKwltb3ZkcXUJKCVyOSksCSV4bW01CisJcHNodWZiICAleG1tNCwgICV4bW0zICAgIyAzID0gMS9qYWsKKwlweG9yCSV4bW0xLCAgJXhtbTMgICAjIDMgPSBqbworCWpuegkuTGVuY19sb29wCisKKwkjIG1pZGRsZSBvZiBsYXN0IHJvdW5kCisJbW92ZHFhCS0weDYwKCVyMTApLCAleG1tNAkjIDMgOiBzYm91CS5Ma19zYm8KKwltb3ZkcWEJLTB4NTAoJXIxMCksICV4bW0wCSMgMCA6IHNib3QJLkxrX3NibysxNgorCXBzaHVmYiAgJXhtbTIsICAleG1tNAkjIDQgPSBzYm91CisJcHhvcgkleG1tNSwgICV4bW00CSMgNCA9IHNiMXUgKyBrCisJcHNodWZiICAleG1tMywJJXhtbTAJIyAwID0gc2IxdAorCW1vdmRxYQkweDQwKCVyMTEsJXIxMCksICV4bW0xCQkjIC5Ma19zcltdCisJcHhvcgkleG1tNCwJJXhtbTAJIyAwID0gQQorCXBzaHVmYgkleG1tMSwJJXhtbTAKKwlyZXQKKy5zaXplCV92cGFlc19lbmNyeXB0X2NvcmUsLi1fdnBhZXNfZW5jcnlwdF9jb3JlCisJCisjIworIyMgIERlY3J5cHRpb24gY29yZQorIyMKKyMjICBTYW1lIEFQSSBhcyBlbmNyeXB0aW9uIGNvcmUuCisjIworLnR5cGUJX3ZwYWVzX2RlY3J5cHRfY29yZSxcQGFiaS1vbW5pcG90ZW50CisuYWxpZ24JMTYKK192cGFlc19kZWNyeXB0X2NvcmU6CisJbW92CSVyZHgsCSVyOQkJIyBsb2FkIGtleQorCW1vdgkyNDAoJXJkeCksJWVheAorCW1vdmRxYQkleG1tOSwJJXhtbTEKKwltb3ZkcWEJLkxrX2RpcHQoJXJpcCksICV4bW0yCSMgaXB0bG8KKwlwYW5kbgkleG1tMCwJJXhtbTEKKwltb3YJJXJheCwJJXIxMQorCXBzcmxkCVwkNCwJJXhtbTEKKwltb3ZkcXUJKCVyOSksCSV4bW01CQkjIHJvdW5kMCBrZXkKKwlzaGwJXCQ0LAklcjExCisJcGFuZAkleG1tOSwJJXhtbTAKKwlwc2h1ZmIJJXhtbTAsCSV4bW0yCisJbW92ZHFhCS5Ma19kaXB0KzE2KCVyaXApLCAleG1tMCAjIGlwdGhpCisJeG9yCVwkMHgzMCwJJXIxMQorCWxlYQkuTGtfZHNiZCglcmlwKSwlcjEwCisJcHNodWZiCSV4bW0xLAkleG1tMAorCWFuZAlcJDB4MzAsCSVyMTEKKwlweG9yCSV4bW01LAkleG1tMgorCW1vdmRxYQkuTGtfbWNfZm9yd2FyZCs0OCglcmlwKSwgJXhtbTUKKwlweG9yCSV4bW0yLAkleG1tMAorCWFkZAlcJDE2LAklcjkKKwlhZGQJJXIxMCwJJXIxMQorCWptcAkuTGRlY19lbnRyeQorCisuYWxpZ24gMTYKKy5MZGVjX2xvb3A6CisjIworIyMgIEludmVyc2UgbWl4IGNvbHVtbnMKKyMjCisJbW92ZHFhICAtMHgyMCglcjEwKSwleG1tNAkjIDQgOiBzYjl1CisJcHNodWZiCSV4bW0yLAkleG1tNAkJIyA0ID0gc2I5dQorCXB4b3IJJXhtbTAsCSV4bW00CisJbW92ZHFhICAtMHgxMCglcjEwKSwleG1tMAkjIDAgOiBzYjl0CisJcHNodWZiCSV4bW0zLAkleG1tMAkJIyAwID0gc2I5dAorCXB4b3IJJXhtbTQsCSV4bW0wCQkjIDAgPSBjaAorCWFkZAlcJDE2LCAlcjkJCSMgbmV4dCByb3VuZCBrZXkKKworCXBzaHVmYgkleG1tNSwJJXhtbTAJCSMgTUMgY2gKKwltb3ZkcWEgIDB4MDAoJXIxMCksJXhtbTQJIyA0IDogc2JkdQorCXBzaHVmYgkleG1tMiwJJXhtbTQJCSMgNCA9IHNiZHUKKwlweG9yCSV4bW0wLAkleG1tNAkJIyA0ID0gY2gKKwltb3ZkcWEgIDB4MTAoJXIxMCksJXhtbTAJIyAwIDogc2JkdAorCXBzaHVmYgkleG1tMywJJXhtbTAJCSMgMCA9IHNiZHQKKwlweG9yCSV4bW00LAkleG1tMAkJIyAwID0gY2gKKwlzdWIJXCQxLCVyYXgJCSMgbnItLQorCQorCXBzaHVmYgkleG1tNSwJJXhtbTAJCSMgTUMgY2gKKwltb3ZkcWEgIDB4MjAoJXIxMCksJXhtbTQJIyA0IDogc2JidQorCXBzaHVmYgkleG1tMiwJJXhtbTQJCSMgNCA9IHNiYnUKKwlweG9yCSV4bW0wLAkleG1tNAkJIyA0ID0gY2gKKwltb3ZkcWEgIDB4MzAoJXIxMCksJXhtbTAJIyAwIDogc2JidAorCXBzaHVmYgkleG1tMywJJXhtbTAJCSMgMCA9IHNiYnQKKwlweG9yCSV4bW00LAkleG1tMAkJIyAwID0gY2gKKwkKKwlwc2h1ZmIJJXhtbTUsCSV4bW0wCQkjIE1DIGNoCisJbW92ZHFhICAweDQwKCVyMTApLCV4bW00CSMgNCA6IHNiZXUKKwlwc2h1ZmIJJXhtbTIsCSV4bW00CQkjIDQgPSBzYmV1CisJcHhvcgkleG1tMCwJJXhtbTQJCSMgNCA9IGNoCisJbW92ZHFhICAweDUwKCVyMTApLCV4bW0wCSMgMCA6IHNiZXQKKwlwc2h1ZmIJJXhtbTMsCSV4bW0wCQkjIDAgPSBzYmV0CisJcHhvcgkleG1tNCwJJXhtbTAJCSMgMCA9IGNoCisKKwlwYWxpZ25yCVwkMTIsCSV4bW01LAkleG1tNQorCQorLkxkZWNfZW50cnk6CisJIyB0b3Agb2Ygcm91bmQKKwltb3ZkcWEgICV4bW05LCAJJXhtbTEJIyAxIDogaQorCXBhbmRuCSV4bW0wLCAJJXhtbTEJIyAxID0gaTw8NAorCXBzcmxkCVwkNCwgICAgJXhtbTEJIyAxID0gaQorCXBhbmQJJXhtbTksIAkleG1tMAkjIDAgPSBrCisJbW92ZHFhCSV4bW0xMSwgJXhtbTIJIyAyIDogYS9rCisJcHNodWZiICAleG1tMCwgICV4bW0yCSMgMiA9IGEvaworCXB4b3IJJXhtbTEsCSV4bW0wCSMgMCA9IGoKKwltb3ZkcWEJJXhtbTEwLAkleG1tMwkjIDMgOiAxL2kKKwlwc2h1ZmIgICV4bW0xLCAJJXhtbTMJIyAzID0gMS9pCisJcHhvcgkleG1tMiwgCSV4bW0zCSMgMyA9IGlhayA9IDEvaSArIGEvaworCW1vdmRxYQkleG1tMTAsCSV4bW00CSMgNCA6IDEvagorCXBzaHVmYgkleG1tMCwgCSV4bW00CSMgNCA9IDEvagorCXB4b3IJJXhtbTIsIAkleG1tNAkjIDQgPSBqYWsgPSAxL2ogKyBhL2sKKwltb3ZkcWEJJXhtbTEwLAkleG1tMgkjIDIgOiAxL2lhaworCXBzaHVmYiAgJXhtbTMsCSV4bW0yCSMgMiA9IDEvaWFrCisJcHhvcgkleG1tMCwgCSV4bW0yCSMgMiA9IGlvCisJbW92ZHFhCSV4bW0xMCwgJXhtbTMJIyAzIDogMS9qYWsKKwlwc2h1ZmIgICV4bW00LCAgJXhtbTMJIyAzID0gMS9qYWsKKwlweG9yCSV4bW0xLCAgJXhtbTMJIyAzID0gam8KKwltb3ZkcXUJKCVyOSksCSV4bW0wCisJam56CS5MZGVjX2xvb3AKKworCSMgbWlkZGxlIG9mIGxhc3Qgcm91bmQKKwltb3ZkcWEJMHg2MCglcjEwKSwgJXhtbTQJIyAzIDogc2JvdQorCXBzaHVmYiAgJXhtbTIsICAleG1tNAkjIDQgPSBzYm91CisJcHhvcgkleG1tMCwgICV4bW00CSMgNCA9IHNiMXUgKyBrCisJbW92ZHFhCTB4NzAoJXIxMCksICV4bW0wCSMgMCA6IHNib3QKKwltb3ZkcWEJLTB4MTYwKCVyMTEpLCAleG1tMgkjIC5Ma19zci0uTGtfZHNiZD0tMHgxNjAKKwlwc2h1ZmIgICV4bW0zLAkleG1tMAkjIDAgPSBzYjF0CisJcHhvcgkleG1tNCwJJXhtbTAJIyAwID0gQQorCXBzaHVmYgkleG1tMiwJJXhtbTAKKwlyZXQKKy5zaXplCV92cGFlc19kZWNyeXB0X2NvcmUsLi1fdnBhZXNfZGVjcnlwdF9jb3JlCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIworIyMgICAgICAgICAgICAgICAgICBBRVMga2V5IHNjaGVkdWxlICAgICAgICAgICAgICAgICAgIyMKKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworLnR5cGUJX3ZwYWVzX3NjaGVkdWxlX2NvcmUsXEBhYmktb21uaXBvdGVudAorLmFsaWduCTE2CitfdnBhZXNfc2NoZWR1bGVfY29yZToKKwkjIHJkaSA9IGtleQorCSMgcnNpID0gc2l6ZSBpbiBiaXRzCisJIyByZHggPSBidWZmZXIKKwkjIHJjeCA9IGRpcmVjdGlvbi4gIDA9ZW5jcnlwdCwgMT1kZWNyeXB0CisKKwljYWxsCV92cGFlc19wcmVoZWF0CQkjIGxvYWQgdGhlIHRhYmxlcworCW1vdmRxYQkuTGtfcmNvbiglcmlwKSwgJXhtbTgJIyBsb2FkIHJjb24KKwltb3ZkcXUJKCVyZGkpLAkleG1tMAkJIyBsb2FkIGtleSAodW5hbGlnbmVkKQorCisJIyBpbnB1dCB0cmFuc2Zvcm0KKwltb3ZkcWEJJXhtbTAsCSV4bW0zCisJbGVhCS5Ma19pcHQoJXJpcCksICVyMTEKKwljYWxsCV92cGFlc19zY2hlZHVsZV90cmFuc2Zvcm0KKwltb3ZkcWEJJXhtbTAsCSV4bW03CisKKwlsZWEJLkxrX3NyKCVyaXApLCVyMTAKKwl0ZXN0CSVyY3gsCSVyY3gKKwlqbnoJLkxzY2hlZHVsZV9hbV9kZWNyeXB0aW5nCisKKwkjIGVuY3J5cHRpbmcsIG91dHB1dCB6ZXJvdGggcm91bmQga2V5IGFmdGVyIHRyYW5zZm9ybQorCW1vdmRxdQkleG1tMCwJKCVyZHgpCisJam1wCS5Mc2NoZWR1bGVfZ28KKworLkxzY2hlZHVsZV9hbV9kZWNyeXB0aW5nOgorCSMgZGVjcnlwdGluZywgb3V0cHV0IHplcm90aCByb3VuZCBrZXkgYWZ0ZXIgc2hpZnRyb3dzCisJbW92ZHFhCSglcjgsJXIxMCksJXhtbTEKKwlwc2h1ZmIgICV4bW0xLAkleG1tMworCW1vdmRxdQkleG1tMywJKCVyZHgpCisJeG9yCVwkMHgzMCwgJXI4CisKKy5Mc2NoZWR1bGVfZ286CisJY21wCVwkMTkyLAklZXNpCisJamEJLkxzY2hlZHVsZV8yNTYKKwlqZQkuTHNjaGVkdWxlXzE5MgorCSMgMTI4OiBmYWxsIHRob3VnaAorCisjIworIyMgIC5zY2hlZHVsZV8xMjgKKyMjCisjIyAgMTI4LWJpdCBzcGVjaWZpYyBwYXJ0IG9mIGtleSBzY2hlZHVsZS4KKyMjCisjIyAgVGhpcyBzY2hlZHVsZSBpcyByZWFsbHkgc2ltcGxlLCBiZWNhdXNlIGFsbCBpdHMgcGFydHMKKyMjICBhcmUgYWNjb21wbGlzaGVkIGJ5IHRoZSBzdWJyb3V0aW5lcy4KKyMjCisuTHNjaGVkdWxlXzEyODoKKwltb3YJXCQxMCwgJWVzaQorCQorLkxvb3Bfc2NoZWR1bGVfMTI4OgorCWNhbGwgCV92cGFlc19zY2hlZHVsZV9yb3VuZAorCWRlYwklcnNpCisJanogCS5Mc2NoZWR1bGVfbWFuZ2xlX2xhc3QKKwljYWxsCV92cGFlc19zY2hlZHVsZV9tYW5nbGUJIyB3cml0ZSBvdXRwdXQKKwlqbXAgCS5Mb29wX3NjaGVkdWxlXzEyOAorCisjIworIyMgIC5hZXNfc2NoZWR1bGVfMTkyCisjIworIyMgIDE5Mi1iaXQgc3BlY2lmaWMgcGFydCBvZiBrZXkgc2NoZWR1bGUuCisjIworIyMgIFRoZSBtYWluIGJvZHkgb2YgdGhpcyBzY2hlZHVsZSBpcyB0aGUgc2FtZSBhcyB0aGUgMTI4LWJpdAorIyMgIHNjaGVkdWxlLCBidXQgd2l0aCBtb3JlIHNtZWFyaW5nLiAgVGhlIGxvbmcsIGhpZ2ggc2lkZSBpcworIyMgIHN0b3JlZCBpbiAleG1tNyBhcyBiZWZvcmUsIGFuZCB0aGUgc2hvcnQsIGxvdyBzaWRlIGlzIGluCisjIyAgdGhlIGhpZ2ggYml0cyBvZiAleG1tNi4KKyMjCisjIyAgVGhpcyBzY2hlZHVsZSBpcyBzb21ld2hhdCBuYXN0aWVyLCBob3dldmVyLCBiZWNhdXNlIGVhY2gKKyMjICByb3VuZCBwcm9kdWNlcyAxOTIgYml0cyBvZiBrZXkgbWF0ZXJpYWwsIG9yIDEuNSByb3VuZCBrZXlzLgorIyMgIFRoZXJlZm9yZSwgb24gZWFjaCBjeWNsZSB3ZSBkbyAyIHJvdW5kcyBhbmQgcHJvZHVjZSAzIHJvdW5kCisjIyAga2V5cy4KKyMjCisuYWxpZ24JMTYKKy5Mc2NoZWR1bGVfMTkyOgorCW1vdmRxdQk4KCVyZGkpLCV4bW0wCQkjIGxvYWQga2V5IHBhcnQgMiAodmVyeSB1bmFsaWduZWQpCisJY2FsbAlfdnBhZXNfc2NoZWR1bGVfdHJhbnNmb3JtCSMgaW5wdXQgdHJhbnNmb3JtCisJbW92ZHFhCSV4bW0wLAkleG1tNgkJIyBzYXZlIHNob3J0IHBhcnQKKwlweG9yCSV4bW00LAkleG1tNAkJIyBjbGVhciA0CisJbW92aGxwcwkleG1tNCwJJXhtbTYJCSMgY2xvYmJlciBsb3cgc2lkZSB3aXRoIHplcm9zCisJbW92CVwkNCwJJWVzaQorCisuTG9vcF9zY2hlZHVsZV8xOTI6CisJY2FsbAlfdnBhZXNfc2NoZWR1bGVfcm91bmQKKwlwYWxpZ25yCVwkOCwleG1tNiwleG1tMAkKKwljYWxsCV92cGFlc19zY2hlZHVsZV9tYW5nbGUJIyBzYXZlIGtleSBuCisJY2FsbAlfdnBhZXNfc2NoZWR1bGVfMTkyX3NtZWFyCisJY2FsbAlfdnBhZXNfc2NoZWR1bGVfbWFuZ2xlCSMgc2F2ZSBrZXkgbisxCisJY2FsbAlfdnBhZXNfc2NoZWR1bGVfcm91bmQKKwlkZWMJJXJzaQorCWp6IAkuTHNjaGVkdWxlX21hbmdsZV9sYXN0CisJY2FsbAlfdnBhZXNfc2NoZWR1bGVfbWFuZ2xlCSMgc2F2ZSBrZXkgbisyCisJY2FsbAlfdnBhZXNfc2NoZWR1bGVfMTkyX3NtZWFyCisJam1wCS5Mb29wX3NjaGVkdWxlXzE5MgorCisjIworIyMgIC5hZXNfc2NoZWR1bGVfMjU2CisjIworIyMgIDI1Ni1iaXQgc3BlY2lmaWMgcGFydCBvZiBrZXkgc2NoZWR1bGUuCisjIworIyMgIFRoZSBzdHJ1Y3R1cmUgaGVyZSBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIDEyOC1iaXQKKyMjICBzY2hlZHVsZSwgYnV0IHdpdGggYW4gYWRkaXRpb25hbCAibG93IHNpZGUiIGluCisjIyAgJXhtbTYuICBUaGUgbG93IHNpZGUncyByb3VuZHMgYXJlIHRoZSBzYW1lIGFzIHRoZQorIyMgIGhpZ2ggc2lkZSdzLCBleGNlcHQgbm8gcmNvbiBhbmQgbm8gcm90YXRpb24uCisjIworLmFsaWduCTE2CisuTHNjaGVkdWxlXzI1NjoKKwltb3ZkcXUJMTYoJXJkaSksJXhtbTAJCSMgbG9hZCBrZXkgcGFydCAyICh1bmFsaWduZWQpCisJY2FsbAlfdnBhZXNfc2NoZWR1bGVfdHJhbnNmb3JtCSMgaW5wdXQgdHJhbnNmb3JtCisJbW92CVwkNywgJWVzaQorCQorLkxvb3Bfc2NoZWR1bGVfMjU2OgorCWNhbGwJX3ZwYWVzX3NjaGVkdWxlX21hbmdsZQkjIG91dHB1dCBsb3cgcmVzdWx0CisJbW92ZHFhCSV4bW0wLAkleG1tNgkJIyBzYXZlIGN1cl9sbyBpbiB4bW02CisKKwkjIGhpZ2ggcm91bmQKKwljYWxsCV92cGFlc19zY2hlZHVsZV9yb3VuZAorCWRlYwklcnNpCisJanogCS5Mc2NoZWR1bGVfbWFuZ2xlX2xhc3QKKwljYWxsCV92cGFlc19zY2hlZHVsZV9tYW5nbGUJCisKKwkjIGxvdyByb3VuZC4gc3dhcCB4bW03IGFuZCB4bW02CisJcHNodWZkCVwkMHhGRiwJJXhtbTAsCSV4bW0wCisJbW92ZHFhCSV4bW03LAkleG1tNQorCW1vdmRxYQkleG1tNiwJJXhtbTcKKwljYWxsCV92cGFlc19zY2hlZHVsZV9sb3dfcm91bmQKKwltb3ZkcWEJJXhtbTUsCSV4bW03CisJCisJam1wCS5Mb29wX3NjaGVkdWxlXzI1NgorCisJCisjIworIyMgIC5hZXNfc2NoZWR1bGVfbWFuZ2xlX2xhc3QKKyMjCisjIyAgTWFuZ2xlciBmb3IgbGFzdCByb3VuZCBvZiBrZXkgc2NoZWR1bGUKKyMjICBNYW5nbGVzICV4bW0wCisjIyAgICB3aGVuIGVuY3J5cHRpbmcsIG91dHB1dHMgb3V0KCV4bW0wKSBeIDYzCisjIyAgICB3aGVuIGRlY3J5cHRpbmcsIG91dHB1dHMgdW5za2V3KCV4bW0wKQorIyMKKyMjICBBbHdheXMgY2FsbGVkIHJpZ2h0IGJlZm9yZSByZXR1cm4uLi4ganVtcHMgdG8gY2xlYW51cCBhbmQgZXhpdHMKKyMjCisuYWxpZ24JMTYKKy5Mc2NoZWR1bGVfbWFuZ2xlX2xhc3Q6CisJIyBzY2hlZHVsZSBsYXN0IHJvdW5kIGtleSBmcm9tIHhtbTAKKwlsZWEJLkxrX2Rlc2tldyglcmlwKSwlcjExCSMgcHJlcGFyZSB0byBkZXNrZXcKKwl0ZXN0CSVyY3gsIAklcmN4CisJam56CS5Mc2NoZWR1bGVfbWFuZ2xlX2xhc3RfZGVjCisKKwkjIGVuY3J5cHRpbmcKKwltb3ZkcWEJKCVyOCwlcjEwKSwleG1tMQorCXBzaHVmYgkleG1tMSwJJXhtbTAJCSMgb3V0cHV0IHBlcm11dGUKKwlsZWEJLkxrX29wdCglcmlwKSwJJXIxMQkjIHByZXBhcmUgdG8gb3V0cHV0IHRyYW5zZm9ybQorCWFkZAlcJDMyLAklcmR4CisKKy5Mc2NoZWR1bGVfbWFuZ2xlX2xhc3RfZGVjOgorCWFkZAlcJC0xNiwJJXJkeAorCXB4b3IJLkxrX3M2MyglcmlwKSwJJXhtbTAKKwljYWxsCV92cGFlc19zY2hlZHVsZV90cmFuc2Zvcm0gIyBvdXRwdXQgdHJhbnNmb3JtCisJbW92ZHF1CSV4bW0wLAkoJXJkeCkJCSMgc2F2ZSBsYXN0IGtleQorCisJIyBjbGVhbnVwCisJcHhvcgkleG1tMCwgICV4bW0wCisJcHhvcgkleG1tMSwgICV4bW0xCisJcHhvcgkleG1tMiwgICV4bW0yCisJcHhvcgkleG1tMywgICV4bW0zCisJcHhvcgkleG1tNCwgICV4bW00CisJcHhvcgkleG1tNSwgICV4bW01CisJcHhvcgkleG1tNiwgICV4bW02CisJcHhvcgkleG1tNywgICV4bW03CisJcmV0Cisuc2l6ZQlfdnBhZXNfc2NoZWR1bGVfY29yZSwuLV92cGFlc19zY2hlZHVsZV9jb3JlCisKKyMjCisjIyAgLmFlc19zY2hlZHVsZV8xOTJfc21lYXIKKyMjCisjIyAgU21lYXIgdGhlIHNob3J0LCBsb3cgc2lkZSBpbiB0aGUgMTkyLWJpdCBrZXkgc2NoZWR1bGUuCisjIworIyMgIElucHV0czoKKyMjICAgICV4bW03OiBoaWdoIHNpZGUsIGIgIGEgIHggIHkKKyMjICAgICV4bW02OiAgbG93IHNpZGUsIGQgIGMgIDAgIDAKKyMjICAgICV4bW0xMzogMAorIyMKKyMjICBPdXRwdXRzOgorIyMgICAgJXhtbTY6IGIrYytkICBiK2MgIDAgIDAKKyMjICAgICV4bW0wOiBiK2MrZCAgYitjICBiICBhCisjIworLnR5cGUJX3ZwYWVzX3NjaGVkdWxlXzE5Ml9zbWVhcixcQGFiaS1vbW5pcG90ZW50CisuYWxpZ24JMTYKK192cGFlc19zY2hlZHVsZV8xOTJfc21lYXI6CisJcHNodWZkCVwkMHg4MCwJJXhtbTYsCSV4bW0wCSMgZCBjIDAgMCAtPiBjIDAgMCAwCisJcHhvcgkleG1tMCwJJXhtbTYJCSMgLT4gYytkIGMgMCAwCisJcHNodWZkCVwkMHhGRSwJJXhtbTcsCSV4bW0wCSMgYiBhIF8gXyAtPiBiIGIgYiBhCisJcHhvcgkleG1tMCwJJXhtbTYJCSMgLT4gYitjK2QgYitjIGIgYQorCW1vdmRxYQkleG1tNiwJJXhtbTAKKwlweG9yCSV4bW0xLAkleG1tMQorCW1vdmhscHMJJXhtbTEsCSV4bW02CQkjIGNsb2JiZXIgbG93IHNpZGUgd2l0aCB6ZXJvcworCXJldAorLnNpemUJX3ZwYWVzX3NjaGVkdWxlXzE5Ml9zbWVhciwuLV92cGFlc19zY2hlZHVsZV8xOTJfc21lYXIKKworIyMKKyMjICAuYWVzX3NjaGVkdWxlX3JvdW5kCisjIworIyMgIFJ1bnMgb25lIG1haW4gcm91bmQgb2YgdGhlIGtleSBzY2hlZHVsZSBvbiAleG1tMCwgJXhtbTcKKyMjCisjIyAgU3BlY2lmaWNhbGx5LCBydW5zIHN1YmJ5dGVzIG9uIHRoZSBoaWdoIGR3b3JkIG9mICV4bW0wCisjIyAgdGhlbiByb3RhdGVzIGl0IGJ5IG9uZSBieXRlIGFuZCB4b3JzIGludG8gdGhlIGxvdyBkd29yZCBvZgorIyMgICV4bW03LgorIyMKKyMjICBBZGRzIHJjb24gZnJvbSBsb3cgYnl0ZSBvZiAleG1tOCwgdGhlbiByb3RhdGVzICV4bW04IGZvcgorIyMgIG5leHQgcmNvbi4KKyMjCisjIyAgU21lYXJzIHRoZSBkd29yZHMgb2YgJXhtbTcgYnkgeG9yaW5nIHRoZSBsb3cgaW50byB0aGUKKyMjICBzZWNvbmQgbG93LCByZXN1bHQgaW50byB0aGlyZCwgcmVzdWx0IGludG8gaGlnaGVzdC4KKyMjCisjIyAgUmV0dXJucyByZXN1bHRzIGluICV4bW03ID0gJXhtbTAuCisjIyAgQ2xvYmJlcnMgJXhtbTEtJXhtbTQsICVyMTEuCisjIworLnR5cGUJX3ZwYWVzX3NjaGVkdWxlX3JvdW5kLFxAYWJpLW9tbmlwb3RlbnQKKy5hbGlnbgkxNgorX3ZwYWVzX3NjaGVkdWxlX3JvdW5kOgorCSMgZXh0cmFjdCByY29uIGZyb20geG1tOAorCXB4b3IJJXhtbTEsCSV4bW0xCisJcGFsaWducglcJDE1LAkleG1tOCwJJXhtbTEKKwlwYWxpZ25yCVwkMTUsCSV4bW04LAkleG1tOAorCXB4b3IJJXhtbTEsCSV4bW03CisKKwkjIHJvdGF0ZQorCXBzaHVmZAlcJDB4RkYsCSV4bW0wLAkleG1tMAorCXBhbGlnbnIJXCQxLAkleG1tMCwJJXhtbTAKKwkKKwkjIGZhbGwgdGhyb3VnaC4uLgorCQorCSMgbG93IHJvdW5kOiBzYW1lIGFzIGhpZ2ggcm91bmQsIGJ1dCBubyByb3RhdGlvbiBhbmQgbm8gcmNvbi4KK192cGFlc19zY2hlZHVsZV9sb3dfcm91bmQ6CisJIyBzbWVhciB4bW03CisJbW92ZHFhCSV4bW03LAkleG1tMQorCXBzbGxkcQlcJDQsCSV4bW03CisJcHhvcgkleG1tMSwJJXhtbTcKKwltb3ZkcWEJJXhtbTcsCSV4bW0xCisJcHNsbGRxCVwkOCwJJXhtbTcKKwlweG9yCSV4bW0xLAkleG1tNworCXB4b3IJLkxrX3M2MyglcmlwKSwgJXhtbTcKKworCSMgc3ViYnl0ZXMKKwltb3ZkcWEgICV4bW05LCAJJXhtbTEKKwlwYW5kbgkleG1tMCwgCSV4bW0xCisJcHNybGQJXCQ0LCAgICAleG1tMQkJIyAxID0gaQorCXBhbmQJJXhtbTksIAkleG1tMAkJIyAwID0gaworCW1vdmRxYQkleG1tMTEsICV4bW0yCQkjIDIgOiBhL2sKKwlwc2h1ZmIgICV4bW0wLCAgJXhtbTIJCSMgMiA9IGEvaworCXB4b3IJJXhtbTEsCSV4bW0wCQkjIDAgPSBqCisJbW92ZHFhCSV4bW0xMCwJJXhtbTMJCSMgMyA6IDEvaQorCXBzaHVmYiAgJXhtbTEsIAkleG1tMwkJIyAzID0gMS9pCisJcHhvcgkleG1tMiwgCSV4bW0zCQkjIDMgPSBpYWsgPSAxL2kgKyBhL2sKKwltb3ZkcWEJJXhtbTEwLAkleG1tNAkJIyA0IDogMS9qCisJcHNodWZiCSV4bW0wLCAJJXhtbTQJCSMgNCA9IDEvagorCXB4b3IJJXhtbTIsIAkleG1tNAkJIyA0ID0gamFrID0gMS9qICsgYS9rCisJbW92ZHFhCSV4bW0xMCwJJXhtbTIJCSMgMiA6IDEvaWFrCisJcHNodWZiICAleG1tMywJJXhtbTIJCSMgMiA9IDEvaWFrCisJcHhvcgkleG1tMCwgCSV4bW0yCQkjIDIgPSBpbworCW1vdmRxYQkleG1tMTAsICV4bW0zCQkjIDMgOiAxL2phaworCXBzaHVmYiAgJXhtbTQsICAleG1tMwkJIyAzID0gMS9qYWsKKwlweG9yCSV4bW0xLCAgJXhtbTMJCSMgMyA9IGpvCisJbW92ZHFhCSV4bW0xMywgJXhtbTQJCSMgNCA6IHNib3UKKwlwc2h1ZmIgICV4bW0yLCAgJXhtbTQJCSMgNCA9IHNib3UKKwltb3ZkcWEJJXhtbTEyLCAleG1tMAkJIyAwIDogc2JvdAorCXBzaHVmYiAgJXhtbTMsCSV4bW0wCQkjIDAgPSBzYjF0CisJcHhvcgkleG1tNCwgCSV4bW0wCQkjIDAgPSBzYm94IG91dHB1dAorCisJIyBhZGQgaW4gc21lYXJlZCBzdHVmZgorCXB4b3IJJXhtbTcsCSV4bW0wCQorCW1vdmRxYQkleG1tMCwJJXhtbTcKKwlyZXQKKy5zaXplCV92cGFlc19zY2hlZHVsZV9yb3VuZCwuLV92cGFlc19zY2hlZHVsZV9yb3VuZAorCisjIworIyMgIC5hZXNfc2NoZWR1bGVfdHJhbnNmb3JtCisjIworIyMgIExpbmVhci10cmFuc2Zvcm0gJXhtbTAgYWNjb3JkaW5nIHRvIHRhYmxlcyBhdCAoJXIxMSkKKyMjCisjIyAgUmVxdWlyZXMgdGhhdCAleG1tOSA9IDB4MEYwRi4uLiBhcyBpbiBwcmVoZWF0CisjIyAgT3V0cHV0IGluICV4bW0wCisjIyAgQ2xvYmJlcnMgJXhtbTEsICV4bW0yCisjIworLnR5cGUJX3ZwYWVzX3NjaGVkdWxlX3RyYW5zZm9ybSxcQGFiaS1vbW5pcG90ZW50CisuYWxpZ24JMTYKK192cGFlc19zY2hlZHVsZV90cmFuc2Zvcm06CisJbW92ZHFhCSV4bW05LAkleG1tMQorCXBhbmRuCSV4bW0wLAkleG1tMQorCXBzcmxkCVwkNCwJJXhtbTEKKwlwYW5kCSV4bW05LAkleG1tMAorCW1vdmRxYQkoJXIxMSksICV4bW0yIAkjIGxvCisJcHNodWZiCSV4bW0wLAkleG1tMgorCW1vdmRxYQkxNiglcjExKSwgJXhtbTAgIyBoaQorCXBzaHVmYgkleG1tMSwJJXhtbTAKKwlweG9yCSV4bW0yLAkleG1tMAorCXJldAorLnNpemUJX3ZwYWVzX3NjaGVkdWxlX3RyYW5zZm9ybSwuLV92cGFlc19zY2hlZHVsZV90cmFuc2Zvcm0KKworIyMKKyMjICAuYWVzX3NjaGVkdWxlX21hbmdsZQorIyMKKyMjICBNYW5nbGUgeG1tMCBmcm9tIChiYXNpcy10cmFuc2Zvcm1lZCkgc3RhbmRhcmQgdmVyc2lvbgorIyMgIHRvIG91ciB2ZXJzaW9uLgorIyMKKyMjICBPbiBlbmNyeXB0LAorIyMgICAgeG9yIHdpdGggMHg2MworIyMgICAgbXVsdGlwbHkgYnkgY2lyY3VsYW50IDAsMSwxLDEKKyMjICAgIGFwcGx5IHNoaWZ0cm93cyB0cmFuc2Zvcm0KKyMjCisjIyAgT24gZGVjcnlwdCwKKyMjICAgIHhvciB3aXRoIDB4NjMKKyMjICAgIG11bHRpcGx5IGJ5ICJpbnZlcnNlIG1peGNvbHVtbnMiIGNpcmN1bGFudCBFLEIsRCw5CisjIyAgICBkZXNrZXcKKyMjICAgIGFwcGx5IHNoaWZ0cm93cyB0cmFuc2Zvcm0KKyMjCisjIworIyMgIFdyaXRlcyBvdXQgdG8gKCVyZHgpLCBhbmQgaW5jcmVtZW50cyBvciBkZWNyZW1lbnRzIGl0CisjIyAgS2VlcHMgdHJhY2sgb2Ygcm91bmQgbnVtYmVyIG1vZCA0IGluICVyOAorIyMgIFByZXNlcnZlcyB4bW0wCisjIyAgQ2xvYmJlcnMgeG1tMS14bW01CisjIworLnR5cGUJX3ZwYWVzX3NjaGVkdWxlX21hbmdsZSxcQGFiaS1vbW5pcG90ZW50CisuYWxpZ24JMTYKK192cGFlc19zY2hlZHVsZV9tYW5nbGU6CisJbW92ZHFhCSV4bW0wLAkleG1tNAkjIHNhdmUgeG1tMCBmb3IgbGF0ZXIKKwltb3ZkcWEJLkxrX21jX2ZvcndhcmQoJXJpcCksJXhtbTUKKwl0ZXN0CSVyY3gsIAklcmN4CisJam56CS5Mc2NoZWR1bGVfbWFuZ2xlX2RlYworCisJIyBlbmNyeXB0aW5nCisJYWRkCVwkMTYsCSVyZHgKKwlweG9yCS5Ma19zNjMoJXJpcCksJXhtbTQKKwlwc2h1ZmIJJXhtbTUsCSV4bW00CisJbW92ZHFhCSV4bW00LAkleG1tMworCXBzaHVmYgkleG1tNSwJJXhtbTQKKwlweG9yCSV4bW00LAkleG1tMworCXBzaHVmYgkleG1tNSwJJXhtbTQKKwlweG9yCSV4bW00LAkleG1tMworCisJam1wCS5Mc2NoZWR1bGVfbWFuZ2xlX2JvdGgKKy5hbGlnbgkxNgorLkxzY2hlZHVsZV9tYW5nbGVfZGVjOgorCSMgaW52ZXJzZSBtaXggY29sdW1ucworCWxlYQkuTGtfZGtzZCglcmlwKSwlcjExCisJbW92ZHFhCSV4bW05LAkleG1tMQorCXBhbmRuCSV4bW00LAkleG1tMQorCXBzcmxkCVwkNCwJJXhtbTEJIyAxID0gaGkKKwlwYW5kCSV4bW05LAkleG1tNAkjIDQgPSBsbworCisJbW92ZHFhCTB4MDAoJXIxMSksICV4bW0yCisJcHNodWZiCSV4bW00LAkleG1tMgorCW1vdmRxYQkweDEwKCVyMTEpLCAleG1tMworCXBzaHVmYgkleG1tMSwJJXhtbTMKKwlweG9yCSV4bW0yLAkleG1tMworCXBzaHVmYgkleG1tNSwJJXhtbTMKKworCW1vdmRxYQkweDIwKCVyMTEpLCAleG1tMgorCXBzaHVmYgkleG1tNCwJJXhtbTIKKwlweG9yCSV4bW0zLAkleG1tMgorCW1vdmRxYQkweDMwKCVyMTEpLCAleG1tMworCXBzaHVmYgkleG1tMSwJJXhtbTMKKwlweG9yCSV4bW0yLAkleG1tMworCXBzaHVmYgkleG1tNSwJJXhtbTMKKworCW1vdmRxYQkweDQwKCVyMTEpLCAleG1tMgorCXBzaHVmYgkleG1tNCwJJXhtbTIKKwlweG9yCSV4bW0zLAkleG1tMgorCW1vdmRxYQkweDUwKCVyMTEpLCAleG1tMworCXBzaHVmYgkleG1tMSwJJXhtbTMKKwlweG9yCSV4bW0yLAkleG1tMworCXBzaHVmYgkleG1tNSwJJXhtbTMKKworCW1vdmRxYQkweDYwKCVyMTEpLCAleG1tMgorCXBzaHVmYgkleG1tNCwJJXhtbTIKKwlweG9yCSV4bW0zLAkleG1tMgorCW1vdmRxYQkweDcwKCVyMTEpLCAleG1tMworCXBzaHVmYgkleG1tMSwJJXhtbTMKKwlweG9yCSV4bW0yLAkleG1tMworCisJYWRkCVwkLTE2LAklcmR4CisKKy5Mc2NoZWR1bGVfbWFuZ2xlX2JvdGg6CisJbW92ZHFhCSglcjgsJXIxMCksJXhtbTEKKwlwc2h1ZmIJJXhtbTEsJXhtbTMKKwlhZGQJXCQtMTYsCSVyOAorCWFuZAlcJDB4MzAsCSVyOAorCW1vdmRxdQkleG1tMywJKCVyZHgpCisJcmV0Cisuc2l6ZQlfdnBhZXNfc2NoZWR1bGVfbWFuZ2xlLC4tX3ZwYWVzX3NjaGVkdWxlX21hbmdsZQorCisjCisjIEludGVyZmFjZSB0byBPcGVuU1NMCisjCisuZ2xvYmwJJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleQorLnR5cGUJJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleSxcQGZ1bmN0aW9uLDMKKy5hbGlnbgkxNgorJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleToKK19fXworJGNvZGUuPTw8X19fIGlmICgkd2luNjQpOworCWxlYQktMHhiOCglcnNwKSwlcnNwCisJbW92YXBzCSV4bW02LDB4MTAoJXJzcCkKKwltb3ZhcHMJJXhtbTcsMHgyMCglcnNwKQorCW1vdmFwcwkleG1tOCwweDMwKCVyc3ApCisJbW92YXBzCSV4bW05LDB4NDAoJXJzcCkKKwltb3ZhcHMJJXhtbTEwLDB4NTAoJXJzcCkKKwltb3ZhcHMJJXhtbTExLDB4NjAoJXJzcCkKKwltb3ZhcHMJJXhtbTEyLDB4NzAoJXJzcCkKKwltb3ZhcHMJJXhtbTEzLDB4ODAoJXJzcCkKKwltb3ZhcHMJJXhtbTE0LDB4OTAoJXJzcCkKKwltb3ZhcHMJJXhtbTE1LDB4YTAoJXJzcCkKKy5MZW5jX2tleV9ib2R5OgorX19fCiskY29kZS49PDxfX187CisJbW92CSVlc2ksJWVheAorCXNocglcJDUsJWVheAorCWFkZAlcJDUsJWVheAorCW1vdgklZWF4LDI0MCglcmR4KQkjIEFFU19LRVktPnJvdW5kcyA9IG5iaXRzLzMyKzU7CisKKwltb3YJXCQwLCVlY3gKKwltb3YJXCQweDMwLCVyOGQKKwljYWxsCV92cGFlc19zY2hlZHVsZV9jb3JlCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKwltb3ZhcHMJMHgxMCglcnNwKSwleG1tNgorCW1vdmFwcwkweDIwKCVyc3ApLCV4bW03CisJbW92YXBzCTB4MzAoJXJzcCksJXhtbTgKKwltb3ZhcHMJMHg0MCglcnNwKSwleG1tOQorCW1vdmFwcwkweDUwKCVyc3ApLCV4bW0xMAorCW1vdmFwcwkweDYwKCVyc3ApLCV4bW0xMQorCW1vdmFwcwkweDcwKCVyc3ApLCV4bW0xMgorCW1vdmFwcwkweDgwKCVyc3ApLCV4bW0xMworCW1vdmFwcwkweDkwKCVyc3ApLCV4bW0xNAorCW1vdmFwcwkweGEwKCVyc3ApLCV4bW0xNQorCWxlYQkweGI4KCVyc3ApLCVyc3AKKy5MZW5jX2tleV9lcGlsb2d1ZToKK19fXworJGNvZGUuPTw8X19fOworCXhvcgklZWF4LCVlYXgKKwlyZXQKKy5zaXplCSR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXksLi0ke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5CisKKy5nbG9ibAkke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5CisudHlwZQkke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5LFxAZnVuY3Rpb24sMworLmFsaWduCTE2Ciske1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5OgorX19fCiskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisJbGVhCS0weGI4KCVyc3ApLCVyc3AKKwltb3ZhcHMJJXhtbTYsMHgxMCglcnNwKQorCW1vdmFwcwkleG1tNywweDIwKCVyc3ApCisJbW92YXBzCSV4bW04LDB4MzAoJXJzcCkKKwltb3ZhcHMJJXhtbTksMHg0MCglcnNwKQorCW1vdmFwcwkleG1tMTAsMHg1MCglcnNwKQorCW1vdmFwcwkleG1tMTEsMHg2MCglcnNwKQorCW1vdmFwcwkleG1tMTIsMHg3MCglcnNwKQorCW1vdmFwcwkleG1tMTMsMHg4MCglcnNwKQorCW1vdmFwcwkleG1tMTQsMHg5MCglcnNwKQorCW1vdmFwcwkleG1tMTUsMHhhMCglcnNwKQorLkxkZWNfa2V5X2JvZHk6CitfX18KKyRjb2RlLj08PF9fXzsKKwltb3YJJWVzaSwlZWF4CisJc2hyCVwkNSwlZWF4CisJYWRkCVwkNSwlZWF4CisJbW92CSVlYXgsMjQwKCVyZHgpCSMgQUVTX0tFWS0+cm91bmRzID0gbmJpdHMvMzIrNTsKKwlzaGwJXCQ0LCVlYXgKKwlsZWEJMTYoJXJkeCwlcmF4KSwlcmR4CisKKwltb3YJXCQxLCVlY3gKKwltb3YJJWVzaSwlcjhkCisJc2hyCVwkMSwlcjhkCisJYW5kCVwkMzIsJXI4ZAorCXhvcglcJDMyLCVyOGQJIyBuYml0cz09MTkyPzA6MzIKKwljYWxsCV92cGFlc19zY2hlZHVsZV9jb3JlCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKwltb3ZhcHMJMHgxMCglcnNwKSwleG1tNgorCW1vdmFwcwkweDIwKCVyc3ApLCV4bW03CisJbW92YXBzCTB4MzAoJXJzcCksJXhtbTgKKwltb3ZhcHMJMHg0MCglcnNwKSwleG1tOQorCW1vdmFwcwkweDUwKCVyc3ApLCV4bW0xMAorCW1vdmFwcwkweDYwKCVyc3ApLCV4bW0xMQorCW1vdmFwcwkweDcwKCVyc3ApLCV4bW0xMgorCW1vdmFwcwkweDgwKCVyc3ApLCV4bW0xMworCW1vdmFwcwkweDkwKCVyc3ApLCV4bW0xNAorCW1vdmFwcwkweGEwKCVyc3ApLCV4bW0xNQorCWxlYQkweGI4KCVyc3ApLCVyc3AKKy5MZGVjX2tleV9lcGlsb2d1ZToKK19fXworJGNvZGUuPTw8X19fOworCXhvcgklZWF4LCVlYXgKKwlyZXQKKy5zaXplCSR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXksLi0ke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5CisKKy5nbG9ibAkke1BSRUZJWH1fZW5jcnlwdAorLnR5cGUJJHtQUkVGSVh9X2VuY3J5cHQsXEBmdW5jdGlvbiwzCisuYWxpZ24JMTYKKyR7UFJFRklYfV9lbmNyeXB0OgorX19fCiskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisJbGVhCS0weGI4KCVyc3ApLCVyc3AKKwltb3ZhcHMJJXhtbTYsMHgxMCglcnNwKQorCW1vdmFwcwkleG1tNywweDIwKCVyc3ApCisJbW92YXBzCSV4bW04LDB4MzAoJXJzcCkKKwltb3ZhcHMJJXhtbTksMHg0MCglcnNwKQorCW1vdmFwcwkleG1tMTAsMHg1MCglcnNwKQorCW1vdmFwcwkleG1tMTEsMHg2MCglcnNwKQorCW1vdmFwcwkleG1tMTIsMHg3MCglcnNwKQorCW1vdmFwcwkleG1tMTMsMHg4MCglcnNwKQorCW1vdmFwcwkleG1tMTQsMHg5MCglcnNwKQorCW1vdmFwcwkleG1tMTUsMHhhMCglcnNwKQorLkxlbmNfYm9keToKK19fXworJGNvZGUuPTw8X19fOworCW1vdmRxdQkoJXJkaSksJXhtbTAKKwljYWxsCV92cGFlc19wcmVoZWF0CisJY2FsbAlfdnBhZXNfZW5jcnlwdF9jb3JlCisJbW92ZHF1CSV4bW0wLCglcnNpKQorX19fCiskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisJbW92YXBzCTB4MTAoJXJzcCksJXhtbTYKKwltb3ZhcHMJMHgyMCglcnNwKSwleG1tNworCW1vdmFwcwkweDMwKCVyc3ApLCV4bW04CisJbW92YXBzCTB4NDAoJXJzcCksJXhtbTkKKwltb3ZhcHMJMHg1MCglcnNwKSwleG1tMTAKKwltb3ZhcHMJMHg2MCglcnNwKSwleG1tMTEKKwltb3ZhcHMJMHg3MCglcnNwKSwleG1tMTIKKwltb3ZhcHMJMHg4MCglcnNwKSwleG1tMTMKKwltb3ZhcHMJMHg5MCglcnNwKSwleG1tMTQKKwltb3ZhcHMJMHhhMCglcnNwKSwleG1tMTUKKwlsZWEJMHhiOCglcnNwKSwlcnNwCisuTGVuY19lcGlsb2d1ZToKK19fXworJGNvZGUuPTw8X19fOworCXJldAorLnNpemUJJHtQUkVGSVh9X2VuY3J5cHQsLi0ke1BSRUZJWH1fZW5jcnlwdAorCisuZ2xvYmwJJHtQUkVGSVh9X2RlY3J5cHQKKy50eXBlCSR7UFJFRklYfV9kZWNyeXB0LFxAZnVuY3Rpb24sMworLmFsaWduCTE2Ciske1BSRUZJWH1fZGVjcnlwdDoKK19fXworJGNvZGUuPTw8X19fIGlmICgkd2luNjQpOworCWxlYQktMHhiOCglcnNwKSwlcnNwCisJbW92YXBzCSV4bW02LDB4MTAoJXJzcCkKKwltb3ZhcHMJJXhtbTcsMHgyMCglcnNwKQorCW1vdmFwcwkleG1tOCwweDMwKCVyc3ApCisJbW92YXBzCSV4bW05LDB4NDAoJXJzcCkKKwltb3ZhcHMJJXhtbTEwLDB4NTAoJXJzcCkKKwltb3ZhcHMJJXhtbTExLDB4NjAoJXJzcCkKKwltb3ZhcHMJJXhtbTEyLDB4NzAoJXJzcCkKKwltb3ZhcHMJJXhtbTEzLDB4ODAoJXJzcCkKKwltb3ZhcHMJJXhtbTE0LDB4OTAoJXJzcCkKKwltb3ZhcHMJJXhtbTE1LDB4YTAoJXJzcCkKKy5MZGVjX2JvZHk6CitfX18KKyRjb2RlLj08PF9fXzsKKwltb3ZkcXUJKCVyZGkpLCV4bW0wCisJY2FsbAlfdnBhZXNfcHJlaGVhdAorCWNhbGwJX3ZwYWVzX2RlY3J5cHRfY29yZQorCW1vdmRxdQkleG1tMCwoJXJzaSkKK19fXworJGNvZGUuPTw8X19fIGlmICgkd2luNjQpOworCW1vdmFwcwkweDEwKCVyc3ApLCV4bW02CisJbW92YXBzCTB4MjAoJXJzcCksJXhtbTcKKwltb3ZhcHMJMHgzMCglcnNwKSwleG1tOAorCW1vdmFwcwkweDQwKCVyc3ApLCV4bW05CisJbW92YXBzCTB4NTAoJXJzcCksJXhtbTEwCisJbW92YXBzCTB4NjAoJXJzcCksJXhtbTExCisJbW92YXBzCTB4NzAoJXJzcCksJXhtbTEyCisJbW92YXBzCTB4ODAoJXJzcCksJXhtbTEzCisJbW92YXBzCTB4OTAoJXJzcCksJXhtbTE0CisJbW92YXBzCTB4YTAoJXJzcCksJXhtbTE1CisJbGVhCTB4YjgoJXJzcCksJXJzcAorLkxkZWNfZXBpbG9ndWU6CitfX18KKyRjb2RlLj08PF9fXzsKKwlyZXQKKy5zaXplCSR7UFJFRklYfV9kZWNyeXB0LC4tJHtQUkVGSVh9X2RlY3J5cHQKK19fXworeworbXkgKCRpbnAsJG91dCwkbGVuLCRrZXksJGl2cCwkZW5jKT0oIiVyZGkiLCIlcnNpIiwiJXJkeCIsIiVyY3giLCIlcjgiLCIlcjkiKTsKKyMgdm9pZCBBRVNfY2JjX2VuY3J5cHQgKGNvbnN0IHZvaWQgY2hhciAqaW5wLCB1bnNpZ25lZCBjaGFyICpvdXQsCisjICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisjICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICppdnAsY29uc3QgaW50IGVuYyk7CiskY29kZS49PDxfX187CisuZ2xvYmwJJHtQUkVGSVh9X2NiY19lbmNyeXB0CisudHlwZQkke1BSRUZJWH1fY2JjX2VuY3J5cHQsXEBmdW5jdGlvbiw2CisuYWxpZ24JMTYKKyR7UFJFRklYfV9jYmNfZW5jcnlwdDoKKwl4Y2hnCSRrZXksJGxlbgorX19fCisoJGxlbiwka2V5KT0oJGtleSwkbGVuKTsKKyRjb2RlLj08PF9fXzsKKwlzdWIJXCQxNiwkbGVuCisJamMJLkxjYmNfYWJvcnQKK19fXworJGNvZGUuPTw8X19fIGlmICgkd2luNjQpOworCWxlYQktMHhiOCglcnNwKSwlcnNwCisJbW92YXBzCSV4bW02LDB4MTAoJXJzcCkKKwltb3ZhcHMJJXhtbTcsMHgyMCglcnNwKQorCW1vdmFwcwkleG1tOCwweDMwKCVyc3ApCisJbW92YXBzCSV4bW05LDB4NDAoJXJzcCkKKwltb3ZhcHMJJXhtbTEwLDB4NTAoJXJzcCkKKwltb3ZhcHMJJXhtbTExLDB4NjAoJXJzcCkKKwltb3ZhcHMJJXhtbTEyLDB4NzAoJXJzcCkKKwltb3ZhcHMJJXhtbTEzLDB4ODAoJXJzcCkKKwltb3ZhcHMJJXhtbTE0LDB4OTAoJXJzcCkKKwltb3ZhcHMJJXhtbTE1LDB4YTAoJXJzcCkKKy5MY2JjX2JvZHk6CitfX18KKyRjb2RlLj08PF9fXzsKKwltb3ZkcXUJKCRpdnApLCV4bW02CQkjIGxvYWQgSVYKKwlzdWIJJGlucCwkb3V0CisJY2FsbAlfdnBhZXNfcHJlaGVhdAorCWNtcAlcJDAsJHtlbmN9ZAorCWplCS5MY2JjX2RlY19sb29wCisJam1wCS5MY2JjX2VuY19sb29wCisuYWxpZ24JMTYKKy5MY2JjX2VuY19sb29wOgorCW1vdmRxdQkoJGlucCksJXhtbTAKKwlweG9yCSV4bW02LCV4bW0wCisJY2FsbAlfdnBhZXNfZW5jcnlwdF9jb3JlCisJbW92ZHFhCSV4bW0wLCV4bW02CisJbW92ZHF1CSV4bW0wLCgkb3V0LCRpbnApCisJbGVhCTE2KCRpbnApLCRpbnAKKwlzdWIJXCQxNiwkbGVuCisJam5jCS5MY2JjX2VuY19sb29wCisJam1wCS5MY2JjX2RvbmUKKy5hbGlnbgkxNgorLkxjYmNfZGVjX2xvb3A6CisJbW92ZHF1CSgkaW5wKSwleG1tMAorCW1vdmRxYQkleG1tMCwleG1tNworCWNhbGwJX3ZwYWVzX2RlY3J5cHRfY29yZQorCXB4b3IJJXhtbTYsJXhtbTAKKwltb3ZkcWEJJXhtbTcsJXhtbTYKKwltb3ZkcXUJJXhtbTAsKCRvdXQsJGlucCkKKwlsZWEJMTYoJGlucCksJGlucAorCXN1YglcJDE2LCRsZW4KKwlqbmMJLkxjYmNfZGVjX2xvb3AKKy5MY2JjX2RvbmU6CisJbW92ZHF1CSV4bW02LCgkaXZwKQkJIyBzYXZlIElWCitfX18KKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKwltb3ZhcHMJMHgxMCglcnNwKSwleG1tNgorCW1vdmFwcwkweDIwKCVyc3ApLCV4bW03CisJbW92YXBzCTB4MzAoJXJzcCksJXhtbTgKKwltb3ZhcHMJMHg0MCglcnNwKSwleG1tOQorCW1vdmFwcwkweDUwKCVyc3ApLCV4bW0xMAorCW1vdmFwcwkweDYwKCVyc3ApLCV4bW0xMQorCW1vdmFwcwkweDcwKCVyc3ApLCV4bW0xMgorCW1vdmFwcwkweDgwKCVyc3ApLCV4bW0xMworCW1vdmFwcwkweDkwKCVyc3ApLCV4bW0xNAorCW1vdmFwcwkweGEwKCVyc3ApLCV4bW0xNQorCWxlYQkweGI4KCVyc3ApLCVyc3AKKy5MY2JjX2VwaWxvZ3VlOgorX19fCiskY29kZS49PDxfX187CisuTGNiY19hYm9ydDoKKwlyZXQKKy5zaXplCSR7UFJFRklYfV9jYmNfZW5jcnlwdCwuLSR7UFJFRklYfV9jYmNfZW5jcnlwdAorX19fCit9CiskY29kZS49PDxfX187CisjIworIyMgIF9hZXNfcHJlaGVhdAorIyMKKyMjICBGaWxscyByZWdpc3RlciAlcjEwIC0+IC5hZXNfY29uc3RzIChzbyB5b3UgY2FuIC1mUElDKQorIyMgIGFuZCAleG1tOS0leG1tMTUgYXMgc3BlY2lmaWVkIGJlbG93LgorIyMKKy50eXBlCV92cGFlc19wcmVoZWF0LFxAYWJpLW9tbmlwb3RlbnQKKy5hbGlnbgkxNgorX3ZwYWVzX3ByZWhlYXQ6CisJbGVhCS5Ma19zMEYoJXJpcCksICVyMTAKKwltb3ZkcWEJLTB4MjAoJXIxMCksICV4bW0xMAkjIC5Ma19pbnYKKwltb3ZkcWEJLTB4MTAoJXIxMCksICV4bW0xMQkjIC5Ma19pbnYrMTYKKwltb3ZkcWEJMHgwMCglcjEwKSwgJXhtbTkJIyAuTGtfczBGCisJbW92ZHFhCTB4MzAoJXIxMCksICV4bW0xMwkjIC5Ma19zYjEKKwltb3ZkcWEJMHg0MCglcjEwKSwgJXhtbTEyCSMgLkxrX3NiMSsxNgorCW1vdmRxYQkweDUwKCVyMTApLCAleG1tMTUJIyAuTGtfc2IyCisJbW92ZHFhCTB4NjAoJXIxMCksICV4bW0xNAkjIC5Ma19zYjIrMTYKKwlyZXQKKy5zaXplCV92cGFlc19wcmVoZWF0LC4tX3ZwYWVzX3ByZWhlYXQKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIworIyMgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMgICAgICAgICAgICAgICAgICAgICAgIyMKKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworLnR5cGUJX3ZwYWVzX2NvbnN0cyxcQG9iamVjdAorLmFsaWduCTY0CitfdnBhZXNfY29uc3RzOgorLkxrX2ludjoJIyBpbnYsIGludmEKKwkucXVhZAkweDBFMDUwNjBGMEQwODAxODAsIDB4MDQwNzAzMDkwQTBCMEMwMgorCS5xdWFkCTB4MDEwNDBBMDYwRjBCMDc4MCwgMHgwMzBEMEUwQzAyMDUwODA5CisKKy5Ma19zMEY6CSMgczBGCisJLnF1YWQJMHgwRjBGMEYwRjBGMEYwRjBGLCAweDBGMEYwRjBGMEYwRjBGMEYKKworLkxrX2lwdDoJIyBpbnB1dCB0cmFuc2Zvcm0gKGxvLCBoaSkKKwkucXVhZAkweEMyQjJFODk4NUEyQTcwMDAsIDB4Q0FCQUUwOTA1MjIyNzgwOAorCS5xdWFkCTB4NEMwMTMwN0QzMTdDNEQwMCwgMHhDRDgwQjFGQ0IwRkRDQzgxCisKKy5Ma19zYjE6CSMgc2IxdSwgc2IxdAorCS5xdWFkCTB4QjE5QkUxOEZDQjUwM0UwMCwgMHhBNURGN0E2RTE0MkFGNTQ0CisJLnF1YWQJMHgzNjE4RDQxNUZBRTIyMzAwLCAweDNCRjdDQ0MxMEQyRUQ5RUYKKy5Ma19zYjI6CSMgc2IydSwgc2IydAorCS5xdWFkCTB4RTI3QTkzQzYwQjcxMjQwMCwgMHg1RUI3RTk1NUJDOTgyRkNECisJLnF1YWQJMHg2OUVCODg0MDBBRTEyOTAwLCAweEMyQTE2M0M4QUI4MjIzNEEKKy5Ma19zYm86CSMgc2JvdSwgc2JvdAorCS5xdWFkCTB4RDBEMjZEMTc2RkJEQzcwMCwgMHgxNUFBQkY3QUM1MDJBODc4CisJLnF1YWQJMHhDRkU0NzRBNTVGQkI2QTAwLCAweDhFMUU5MEQxNDEyQjM1RkEKKworLkxrX21jX2ZvcndhcmQ6CSMgbWNfZm9yd2FyZAorCS5xdWFkCTB4MDQwNzA2MDUwMDAzMDIwMSwgMHgwQzBGMEUwRDA4MEIwQTA5CisJLnF1YWQJMHgwODBCMEEwOTA0MDcwNjA1LCAweDAwMDMwMjAxMEMwRjBFMEQKKwkucXVhZAkweDBDMEYwRTBEMDgwQjBBMDksIDB4MDQwNzA2MDUwMDAzMDIwMQorCS5xdWFkCTB4MDAwMzAyMDEwQzBGMEUwRCwgMHgwODBCMEEwOTA0MDcwNjA1CisKKy5Ma19tY19iYWNrd2FyZDojIG1jX2JhY2t3YXJkCisJLnF1YWQJMHgwNjA1MDQwNzAyMDEwMDAzLCAweDBFMEQwQzBGMEEwOTA4MEIKKwkucXVhZAkweDAyMDEwMDAzMEUwRDBDMEYsIDB4MEEwOTA4MEIwNjA1MDQwNworCS5xdWFkCTB4MEUwRDBDMEYwQTA5MDgwQiwgMHgwNjA1MDQwNzAyMDEwMDAzCisJLnF1YWQJMHgwQTA5MDgwQjA2MDUwNDA3LCAweDAyMDEwMDAzMEUwRDBDMEYKKworLkxrX3NyOgkJIyBzcgorCS5xdWFkCTB4MDcwNjA1MDQwMzAyMDEwMCwgMHgwRjBFMEQwQzBCMEEwOTA4CisJLnF1YWQJMHgwMzBFMDkwNDBGMEEwNTAwLCAweDBCMDYwMTBDMDcwMjBEMDgKKwkucXVhZAkweDBGMDYwRDA0MEIwMjA5MDAsIDB4MDcwRTA1MEMwMzBBMDEwOAorCS5xdWFkCTB4MEIwRTAxMDQwNzBBMEQwMCwgMHgwMzA2MDkwQzBGMDIwNTA4CisKKy5Ma19yY29uOgkjIHJjb24KKwkucXVhZAkweDFGODM5MUI5QUY5REVFQjYsIDB4NzAyQTk4MDg0RDdDN0Q4MQorCisuTGtfczYzOgkjIHM2MzogYWxsIGVxdWFsIHRvIDB4NjMgdHJhbnNmb3JtZWQKKwkucXVhZAkweDVCNUI1QjVCNUI1QjVCNUIsIDB4NUI1QjVCNUI1QjVCNUI1QgorCisuTGtfb3B0OgkjIG91dHB1dCB0cmFuc2Zvcm0KKwkucXVhZAkweEZGOUY0OTI5RDZCNjYwMDAsIDB4Rjc5NzQxMjFERUJFNjgwOAorCS5xdWFkCTB4MDFFREJENTE1MEJDRUMwMCwgMHhFMTBENURCMUIwNUMwQ0UwCisKKy5Ma19kZXNrZXc6CSMgZGVza2V3IHRhYmxlczogaW52ZXJ0cyB0aGUgc2JveCdzICJza2V3IgorCS5xdWFkCTB4MDdFNEEzNDA0N0E0RTMwMCwgMHgxREZFQjk1QTVEQkVGOTFBCisJLnF1YWQJMHg1RjM2QjVEQzgzRUE2OTAwLCAweDI4NDFDMkFCRjQ5RDFFNzcKKworIyMKKyMjICBEZWNyeXB0aW9uIHN0dWZmCisjIyAgS2V5IHNjaGVkdWxlIGNvbnN0YW50cworIyMKKy5Ma19ka3NkOgkjIGRlY3J5cHRpb24ga2V5IHNjaGVkdWxlOiBpbnZza2V3IHgqRAorCS5xdWFkCTB4RkVCOTFBNURBM0U0NDcwMCwgMHgwNzQwRTNBNDVBMURCRUY5CisJLnF1YWQJMHg0MUMyNzdGNEI1MzY4MzAwLCAweDVGREM2OUVBQUIyODlEMUUKKy5Ma19ka3NiOgkjIGRlY3J5cHRpb24ga2V5IHNjaGVkdWxlOiBpbnZza2V3IHgqQgorCS5xdWFkCTB4OUE0RkNBMUY4NTUwRDUwMCwgMHgwM0Q2NTM4NjFDQzk0Qzk5CisJLnF1YWQJMHgxMTVCRURBN0I2RkM0QTAwLCAweEQ5OTMyNTZGN0UzNDgyQzgKKy5Ma19ka3NlOgkjIGRlY3J5cHRpb24ga2V5IHNjaGVkdWxlOiBpbnZza2V3IHgqRSArIDB4NjMKKwkucXVhZAkweEQ1MDMxQ0NBMUZDOUQ2MDAsIDB4NTM4NTlBNEM5OTRGNTA4NgorCS5xdWFkCTB4QTIzMTk2MDU0RkRDN0JFOCwgMHhDRDVFRjk2QTIwQjMxNDg3CisuTGtfZGtzOToJIyBkZWNyeXB0aW9uIGtleSBzY2hlZHVsZTogaW52c2tldyB4KjkKKwkucXVhZAkweEI2MTE2RkM4N0VEOUE3MDAsIDB4NEFFRDkzMzQ4MjI1NUJGQworCS5xdWFkCTB4NDU3NjUxNjIyNzE0MzMwMCwgMHg4QkI4OUZBQ0U5REFGRENFCisKKyMjCisjIyAgRGVjcnlwdGlvbiBzdHVmZgorIyMgIFJvdW5kIGZ1bmN0aW9uIGNvbnN0YW50cworIyMKKy5Ma19kaXB0OgkjIGRlY3J5cHRpb24gaW5wdXQgdHJhbnNmb3JtCisJLnF1YWQJMHgwRjUwNUIwNDBCNTQ1RjAwLCAweDE1NEE0MTFFMTE0RTQ1MUEKKwkucXVhZAkweDg2RTM4M0U2NjAwNTY1MDAsIDB4MTI3NzE3NzJGNDkxRjE5NAorCisuTGtfZHNiOToJIyBkZWNyeXB0aW9uIHNib3ggb3V0cHV0ICo5KnUsICo5KnQKKwkucXVhZAkweDg1MUMwMzUzOUE4NkQ2MDAsIDB4Q0FENTFGNTA0Rjk5NENDOQorCS5xdWFkCTB4QzAzQjE3ODlFQ0Q3NDkwMCwgMHg3MjVFMkM5RUIyRkJBNTY1CisuTGtfZHNiZDoJIyBkZWNyeXB0aW9uIHNib3ggb3V0cHV0ICpEKnUsICpEKnQKKwkucXVhZAkweDdENTdDQ0RGRTZCMUEyMDAsIDB4RjU2RTlCMTM4ODJBNDQzOQorCS5xdWFkCTB4M0NFMkZBRjcyNEM2Q0IwMCwgMHgyOTMxMTgwRDE1REVFRkQzCisuTGtfZHNiYjoJIyBkZWNyeXB0aW9uIHNib3ggb3V0cHV0ICpCKnUsICpCKnQKKwkucXVhZAkweEQwMjI2NDkyOTZCNDQyMDAsIDB4NjAyNjQ2RjZCMEYyRDQwNAorCS5xdWFkCTB4QzE5NDk4QTZDRDU5NjcwMCwgMHhGM0ZGMEMzRTMyNTVBQTZCCisuTGtfZHNiZToJIyBkZWNyeXB0aW9uIHNib3ggb3V0cHV0ICpFKnUsICpFKnQKKwkucXVhZAkweDQ2RjI5Mjk2MjZENEQwMDAsIDB4MjI0MjYwMDQ2NEI0RjZCMAorCS5xdWFkCTB4MEM1NUE2Q0RGRkFBQzEwMCwgMHg5NDY3RjM2Qjk4NTkzRTMyCisuTGtfZHNibzoJIyBkZWNyeXB0aW9uIHNib3ggZmluYWwgb3V0cHV0CisJLnF1YWQJMHgxMzg3RUE1MzdFRjk0MDAwLCAweEM3QUE2REI5RDQ5NDNFMkQKKwkucXVhZAkweDEyRDc1NjBGOTM0NDFEMDAsIDB4Q0E0QjgxNTlEOEM1OEU5QworLmFzY2l6CSJWZWN0b3IgUGVybXV0YWlvbiBBRVMgZm9yIHg4Nl82NC9TU1NFMywgTWlrZSBIYW1idXJnIChTdGFuZm9yZCBVbml2ZXJzaXR5KSIKKy5hbGlnbgk2NAorLnNpemUJX3ZwYWVzX2NvbnN0cywuLV92cGFlc19jb25zdHMKK19fXworCitpZiAoJHdpbjY0KSB7CisjIEVYQ0VQVElPTl9ESVNQT1NJVElPTiBoYW5kbGVyIChFWENFUFRJT05fUkVDT1JEICpyZWMsVUxPTkc2NCBmcmFtZSwKKyMJCUNPTlRFWFQgKmNvbnRleHQsRElTUEFUQ0hFUl9DT05URVhUICpkaXNwKQorJHJlYz0iJXJjeCI7CiskZnJhbWU9IiVyZHgiOworJGNvbnRleHQ9IiVyOCI7CiskZGlzcD0iJXI5IjsKKworJGNvZGUuPTw8X19fOworLmV4dGVybglfX2ltcF9SdGxWaXJ0dWFsVW53aW5kCisudHlwZQlzZV9oYW5kbGVyLFxAYWJpLW9tbmlwb3RlbnQKKy5hbGlnbgkxNgorc2VfaGFuZGxlcjoKKwlwdXNoCSVyc2kKKwlwdXNoCSVyZGkKKwlwdXNoCSVyYngKKwlwdXNoCSVyYnAKKwlwdXNoCSVyMTIKKwlwdXNoCSVyMTMKKwlwdXNoCSVyMTQKKwlwdXNoCSVyMTUKKwlwdXNoZnEKKwlzdWIJXCQ2NCwlcnNwCisKKwltb3YJMTIwKCRjb250ZXh0KSwlcmF4CSMgcHVsbCBjb250ZXh0LT5SYXgKKwltb3YJMjQ4KCRjb250ZXh0KSwlcmJ4CSMgcHVsbCBjb250ZXh0LT5SaXAKKworCW1vdgk4KCRkaXNwKSwlcnNpCQkjIGRpc3AtPkltYWdlQmFzZQorCW1vdgk1NigkZGlzcCksJXIxMQkJIyBkaXNwLT5IYW5kbGVyRGF0YQorCisJbW92CTAoJXIxMSksJXIxMGQJCSMgSGFuZGxlckRhdGFbMF0KKwlsZWEJKCVyc2ksJXIxMCksJXIxMAkjIHByb2xvZ3VlIGxhYmVsCisJY21wCSVyMTAsJXJieAkJIyBjb250ZXh0LT5SaXA8cHJvbG9ndWUgbGFiZWwKKwlqYgkuTGluX3Byb2xvZ3VlCisKKwltb3YJMTUyKCRjb250ZXh0KSwlcmF4CSMgcHVsbCBjb250ZXh0LT5Sc3AKKworCW1vdgk0KCVyMTEpLCVyMTBkCQkjIEhhbmRsZXJEYXRhWzFdCisJbGVhCSglcnNpLCVyMTApLCVyMTAJIyBlcGlsb2d1ZSBsYWJlbAorCWNtcAklcjEwLCVyYngJCSMgY29udGV4dC0+UmlwPj1lcGlsb2d1ZSBsYWJlbAorCWphZQkuTGluX3Byb2xvZ3VlCisKKwlsZWEJMTYoJXJheCksJXJzaQkJIyAleG1tIHNhdmUgYXJlYQorCWxlYQk1MTIoJGNvbnRleHQpLCVyZGkJIyAmY29udGV4dC5YbW02CisJbW92CVwkMjAsJWVjeAkJIyAxMCpzaXplb2YoJXhtbTApL3NpemVvZiglcmF4KQorCS5sb25nCTB4YTU0OGYzZmMJCSMgY2xkOyByZXAgbW92c3EKKwlsZWEJMHhiOCglcmF4KSwlcmF4CQkjIGFkanVzdCBzdGFjayBwb2ludGVyCisKKy5MaW5fcHJvbG9ndWU6CisJbW92CTgoJXJheCksJXJkaQorCW1vdgkxNiglcmF4KSwlcnNpCisJbW92CSVyYXgsMTUyKCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UnNwCisJbW92CSVyc2ksMTY4KCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UnNpCisJbW92CSVyZGksMTc2KCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UmRpCisKKwltb3YJNDAoJGRpc3ApLCVyZGkJCSMgZGlzcC0+Q29udGV4dFJlY29yZAorCW1vdgkkY29udGV4dCwlcnNpCQkjIGNvbnRleHQKKwltb3YJXCRgMTIzMi84YCwlZWN4CQkjIHNpemVvZihDT05URVhUKQorCS5sb25nCTB4YTU0OGYzZmMJCSMgY2xkOyByZXAgbW92c3EKKworCW1vdgkkZGlzcCwlcnNpCisJeG9yCSVyY3gsJXJjeAkJIyBhcmcxLCBVTldfRkxBR19OSEFORExFUgorCW1vdgk4KCVyc2kpLCVyZHgJCSMgYXJnMiwgZGlzcC0+SW1hZ2VCYXNlCisJbW92CTAoJXJzaSksJXI4CQkjIGFyZzMsIGRpc3AtPkNvbnRyb2xQYworCW1vdgkxNiglcnNpKSwlcjkJCSMgYXJnNCwgZGlzcC0+RnVuY3Rpb25FbnRyeQorCW1vdgk0MCglcnNpKSwlcjEwCQkjIGRpc3AtPkNvbnRleHRSZWNvcmQKKwlsZWEJNTYoJXJzaSksJXIxMQkJIyAmZGlzcC0+SGFuZGxlckRhdGEKKwlsZWEJMjQoJXJzaSksJXIxMgkJIyAmZGlzcC0+RXN0YWJsaXNoZXJGcmFtZQorCW1vdgklcjEwLDMyKCVyc3ApCQkjIGFyZzUKKwltb3YJJXIxMSw0MCglcnNwKQkJIyBhcmc2CisJbW92CSVyMTIsNDgoJXJzcCkJCSMgYXJnNworCW1vdgklcmN4LDU2KCVyc3ApCQkjIGFyZzgsIChOVUxMKQorCWNhbGwJKl9faW1wX1J0bFZpcnR1YWxVbndpbmQoJXJpcCkKKworCW1vdglcJDEsJWVheAkJIyBFeGNlcHRpb25Db250aW51ZVNlYXJjaAorCWFkZAlcJDY0LCVyc3AKKwlwb3BmcQorCXBvcAklcjE1CisJcG9wCSVyMTQKKwlwb3AJJXIxMworCXBvcAklcjEyCisJcG9wCSVyYnAKKwlwb3AJJXJieAorCXBvcAklcmRpCisJcG9wCSVyc2kKKwlyZXQKKy5zaXplCXNlX2hhbmRsZXIsLi1zZV9oYW5kbGVyCisKKy5zZWN0aW9uCS5wZGF0YQorLmFsaWduCTQKKwkucnZhCS5MU0VIX2JlZ2luXyR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXkKKwkucnZhCS5MU0VIX2VuZF8ke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5CisJLnJ2YQkuTFNFSF9pbmZvXyR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXkKKworCS5ydmEJLkxTRUhfYmVnaW5fJHtQUkVGSVh9X3NldF9kZWNyeXB0X2tleQorCS5ydmEJLkxTRUhfZW5kXyR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXkKKwkucnZhCS5MU0VIX2luZm9fJHtQUkVGSVh9X3NldF9kZWNyeXB0X2tleQorCisJLnJ2YQkuTFNFSF9iZWdpbl8ke1BSRUZJWH1fZW5jcnlwdAorCS5ydmEJLkxTRUhfZW5kXyR7UFJFRklYfV9lbmNyeXB0CisJLnJ2YQkuTFNFSF9pbmZvXyR7UFJFRklYfV9lbmNyeXB0CisKKwkucnZhCS5MU0VIX2JlZ2luXyR7UFJFRklYfV9kZWNyeXB0CisJLnJ2YQkuTFNFSF9lbmRfJHtQUkVGSVh9X2RlY3J5cHQKKwkucnZhCS5MU0VIX2luZm9fJHtQUkVGSVh9X2RlY3J5cHQKKworCS5ydmEJLkxTRUhfYmVnaW5fJHtQUkVGSVh9X2NiY19lbmNyeXB0CisJLnJ2YQkuTFNFSF9lbmRfJHtQUkVGSVh9X2NiY19lbmNyeXB0CisJLnJ2YQkuTFNFSF9pbmZvXyR7UFJFRklYfV9jYmNfZW5jcnlwdAorCisuc2VjdGlvbgkueGRhdGEKKy5hbGlnbgk4CisuTFNFSF9pbmZvXyR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXk6CisJLmJ5dGUJOSwwLDAsMAorCS5ydmEJc2VfaGFuZGxlcgorCS5ydmEJLkxlbmNfa2V5X2JvZHksLkxlbmNfa2V5X2VwaWxvZ3VlCSMgSGFuZGxlckRhdGFbXQorLkxTRUhfaW5mb18ke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5OgorCS5ieXRlCTksMCwwLDAKKwkucnZhCXNlX2hhbmRsZXIKKwkucnZhCS5MZGVjX2tleV9ib2R5LC5MZGVjX2tleV9lcGlsb2d1ZQkjIEhhbmRsZXJEYXRhW10KKy5MU0VIX2luZm9fJHtQUkVGSVh9X2VuY3J5cHQ6CisJLmJ5dGUJOSwwLDAsMAorCS5ydmEJc2VfaGFuZGxlcgorCS5ydmEJLkxlbmNfYm9keSwuTGVuY19lcGlsb2d1ZQkJIyBIYW5kbGVyRGF0YVtdCisuTFNFSF9pbmZvXyR7UFJFRklYfV9kZWNyeXB0OgorCS5ieXRlCTksMCwwLDAKKwkucnZhCXNlX2hhbmRsZXIKKwkucnZhCS5MZGVjX2JvZHksLkxkZWNfZXBpbG9ndWUJCSMgSGFuZGxlckRhdGFbXQorLkxTRUhfaW5mb18ke1BSRUZJWH1fY2JjX2VuY3J5cHQ6CisJLmJ5dGUJOSwwLDAsMAorCS5ydmEJc2VfaGFuZGxlcgorCS5ydmEJLkxjYmNfYm9keSwuTGNiY19lcGlsb2d1ZQkJIyBIYW5kbGVyRGF0YVtdCitfX18KK30KKworJGNvZGUgPX4gcy9cYChbXlxgXSopXGAvZXZhbCgkMSkvZ2VtOworCitwcmludCAkY29kZTsKKworY2xvc2UgU1RET1VUOwo=