ZGlmZiAtLWdpdCBhL3NyYy9oYW5ndWxpbi5jIGIvc3JjL2hhbmd1bGluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFlMTZhMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9oYW5ndWxpbi5jCkBAIC0wLDAgKzEsMTYyMSBAQAorLyogdmk6c2V0IHRzPTggc3RzPTQgc3c9NDoKKyAqCisgKiBWSU0gLSBWaSBJTXByb3ZlZAlieSBCcmFtIE1vb2xlbmFhcgorICoKKyAqIERvICI6aGVscCB1Z2FuZGEiICBpbiBWaW0gdG8gcmVhZCBjb3B5aW5nIGFuZCB1c2FnZSBjb25kaXRpb25zLgorICogRG8gIjpoZWxwIGNyZWRpdHMiIGluIFZpbSB0byBzZWUgYSBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQuCisgKiBTZWUgUkVBRE1FLnR4dCBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIFZpbSBzb3VyY2UgY29kZS4KKyAqLworCisjaW5jbHVkZSAidmltLmgiCisKKyNpZm5kZWYgSEFOR1VMX0RFRkFVTFRfS0VZQk9BUkQKKyMgZGVmaW5lIEhBTkdVTF9ERUZBVUxUX0tFWUJPQVJEIDMKKyNlbmRpZgorCisjZGVmaW5lIEFVVE9NQVRBX05FVwkJMAorI2RlZmluZSBBVVRPTUFUQV9DT1JSRUNUCTEKKyNkZWZpbmUgQVVUT01BVEFfU1BFQ0lBTAkyCisjZGVmaW5lIEFVVE9NQVRBX0NPUlJFQ1RfTkVXCTMKKyNkZWZpbmUgQVVUT01BVEFfRVJST1IJCTQKKyNkZWZpbmUgQVVUT01BVEFfTlVMTAkJNQorCisjZGVmaW5lIEZfRgkweDEJLyogw8q8uiAoaW5pdGlhbCBzb3VuZCkgKi8KKyNkZWZpbmUgRl9NCTB4MgkvKiDB37y6IChtZWRpYWwgdm93ZWwpICovCisjZGVmaW5lIEZfTAkweDQJLyogwb68uiAoZmluYWwgY29uc29uYW50KSAqLworI2RlZmluZSBGX0EJMHg4CS8qIEFTQ0lJICovCisjZGVmaW5lIEZfTlVMTCAxCisjZGVmaW5lIE1fTlVMTCAyCisjZGVmaW5lIExfTlVMTCAxCisKK3N0YXRpYyBpbnQgaGFuZ3VsX2lucHV0X3N0YXRlID0gMDsKK3N0YXRpYyBpbnQgZj1GX05VTEwsIG09TV9OVUxMLCBsPUxfTlVMTDsKK3N0YXRpYyBpbnQgc3A9MDsKK3N0YXRpYyBjaGFyX3Ugc3RhY2tbMjBdID0gezB9Oworc3RhdGljIGludCBsYXN0X2wgPSAtMSwgbGFzdF9sbCA9IC0xOworc3RhdGljIGludCBoYW5ndWxfa2V5Ym9hcmRfdHlwZSA9IEhBTkdVTF9ERUZBVUxUX0tFWUJPQVJEOworCitzdGF0aWMgdm9pZCBjb252ZXJ0X2tzX3RvXzMgX19BUkdTKChjb25zdCBjaGFyX3UgKnNyYywgaW50ICpmcCwgaW50ICptcCwgaW50ICpscCkpOworc3RhdGljIGludCBjb252ZXJ0XzNfdG9fa3MgX19BUkdTKChpbnQgZnYsIGludCBtdiwgaW50IGx2LCBjaGFyX3UgKmRlcykpOworc3RhdGljIGludCBoYW5ndWxfYXV0b21hdGEyIF9fQVJHUygoY2hhcl91ICpidWYsIHVuc2lnbmVkIGludCAqYykpOworc3RhdGljIGludCBoYW5ndWxfYXV0b21hdGEzIF9fQVJHUygoY2hhcl91ICpidWYsIHVuc2lnbmVkIGludCAqYykpOworCisjZGVmaW5lIHB1c2goeCkJIHtzdGFja1sgc3ArKyBdID0gKih4KTsgc3RhY2tbc3ArK10gPSAqKCh4KSsxKTt9CisjZGVmaW5lIHBvcCh4KQkgeyooKHgpICsgMSkgPSBzdGFja1stLXNwXTsgKih4KSA9IHN0YWNrWy0tc3BdO30KKyNkZWZpbmUgcXVlcnkoeCkgeyooKHgpICsgMSkgPSBzdGFja1tzcCAtIDFdOyAqKHgpID0gc3RhY2tbc3AgLSAyXTt9CisKKyNkZWZpbmUgY29udmVydF8zX3RvX2NvZGUgY29udmVydF8zX3RvX2tzCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqIDMgufq9xMDaxsfAuyDAp8fRILfnxr4gIChSb3V0aW5lcyBmb3IgMyBidWxzaWsga2V5Ym9hcmQpICoqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiAzILn6vcS/obytIMDaxscguq/IryAoMyBidWxzaWsga2V5Ym9hcmQgY29udmVyc2lvbikgKi8KKworc3RhdGljIGNoYXJfdSB2YWx1ZV90YWJsZV9mb3JfM1tdID0KK3sKKyAgICAyNCAgLCAnIicgLCAnIycgLCAnJCcgLCAnJScgLCAnJicgLAkvKiAhICIgIyAkICUgJiAqLworICAgIDE4ICAsICcoJyAsICcpJyAsICcqJyAsICcrJyAsICcsJyAsCS8qICcgKCApICogKyAsICovCisgICAgJy0nICwgJy4nICwgMTMgICwgMTcgICwgMjkgICwgMjIgICwJLyogLSAuIC8gMCAxIDIgKi8KKyAgICAxOSAgLCAxOSAgLCAyNiAgLCA1ICAgLCAxMiAgLCAyOCAgLAkvKiAzIDQgNSA2IDcgOCAqLworICAgIDIwICAsICc6JyAsIDkgICAsICcyJyAsICc9JyAsICczJyAsCS8qIDkgOiA7IDwgPSA+ICovCisgICAgJz8nICwgJ0AnICwgOCAgICwgJyEnICwgMTEgICwgMTAgICwJLyogPyBAIEEgQiBDIEQgKi8KKyAgICAyNiAgLCAzICAgLCAnLycgLCAzOSAgLCAnOCcgLCAnNCcgLAkvKiBFIEYgRyBIIEkgSiAqLworICAgICc1JyAsICc2JyAsICcxJyAsICcwJyAsICc5JyAsICc+JyAsCS8qIEsgTCBNIE4gTyBQICovCisgICAgMjggICwgNiAgICwgNyAgICwgJzsnICwgJzcnICwgMTYgICwJLyogUSBSIFMgVCBVIFYgKi8KKyAgICAyNyAgLCAyMCAgLCAnPCcgLCAyNSAgLCAnWycgLCA5MiAgLAkvKiBXIFggWSBaIFsgXCAqLworICAgICddJyAsICdeJyAsICdfJyAsICdgJyAsIDIzICAsIDIwICAsCS8qIF0gXiBfIGAgYSBiICovCisgICAgMTAgICwgMjkgICwgMTEgICwgMyAgICwgMjcgICwgNCAgICwJLyogYyBkIGUgZiBnIGggKi8KKyAgICA4ICAgLCAxMyAgLCAyICAgLCAxNCAgLCAyMCAgLCAxMSAgLAkvKiBpIGogayBsIG0gbiAqLworICAgIDE2ICAsIDE5ICAsIDIxICAsIDQgICAsIDUgICAsIDcgICAsCS8qIG8gcCBxIHIgcyB0ICovCisgICAgNSAgICwgMTMgICwgOSAgICwgMiAgICwgNyAgICwgMTcgICwJLyogdSB2IHcgeCB5IHogKi8KK307CisKK3N0YXRpYyBzaG9ydF91IGtpbmRfdGFibGVfZm9yXzNbXSA9Cit7CisgICAgRl9MLCBGX0EsIEZfQSwgRl9BLCBGX0EsIEZfQSwJLyogISAiICMgJCAlICYgKi8KKyAgICBGX0YsIEZfQSwgRl9BLCBGX0EsIEZfQSwgRl9BLAkvKiAnICggKSAqICsgLCAqLworICAgIEZfQSwgRl9BLCBGX00sIEZfRiwgRl9MLCBGX0wsCS8qIC0gLiAvIDAgMSAyICovCisgICAgRl9MLCBGX00sIEZfTSwgRl9NLCBGX00sIEZfTSwJLyogMyA0IDUgNiA3IDggKi8KKyAgICBGX00sIEZfQSwgRl9GLCBGX0EsIEZfQSwgRl9BLAkvKiA5IDogOyA8ID0gPiAqLworICAgIEZfQSwgRl9BLCBGX0wsIEZfQSwgRl9MLCBGX0wsCS8qID8gQCBBIEIgQyBEICovCisgICAgRl9MLCBGX0wsIEZfQSwgRl9BLCBGX0EsIEZfQSwJLyogRSBGIEcgSCBJIEogKi8KKyAgICBGX0EsIEZfQSwgRl9BLCBGX0EsIEZfQSwgRl9BLAkvKiBLIEwgTSBOIE8gUCAqLworICAgIEZfTCwgRl9NLCBGX0wsIEZfQSwgRl9BLCBGX0wsCS8qIFEgUiBTIFQgVSBWICovCisgICAgRl9MLCBGX0wsIEZfQSwgRl9MLCBGX0EsIEZfQSwJLyogVyBYIFkgWiBbIFwgKi8KKyAgICBGX0EsIEZfQSwgRl9BLCBGX0EsIEZfTCwgRl9NLAkvKiBdIF4gXyBgIGEgYiAqLworICAgIEZfTSwgRl9NLCBGX00sIEZfTSwgRl9NLCBGX0YsCS8qIGMgZCBlIGYgZyBoICovCisgICAgRl9GLCBGX0YsIEZfRiwgRl9GLCBGX0YsIEZfRiwJLyogaSBqIGsgbCBtIG4gKi8KKyAgICBGX0YsIEZfRiwgRl9MLCBGX00sIEZfTCwgRl9NLAkvKiBvIHAgcSByIHMgdCAqLworICAgIEZfRiwgRl9NLCBGX0wsIEZfTCwgRl9GLCBGX0wsCS8qIHUgdiB3IHggeSB6ICovCit9OworCisvKiAzILn6vcS/obytICjH9sDnw8q8uiwgwNS3wr+1ua4pIC0+ILq5x9XDyry6IMOzuK4KKyAqIDMgYnVsc2lrOiAoY3VycmVudCBpbml0aWFsIHNvdW5kLCBpbnB1dCBlbmdsaXNoKSAtPiBjb21wb3VuZCBpbml0aWFsIHNvdW5kLgorICovCisKKyAgICBzdGF0aWMgaW50Citjb21mY29uMyh2LCBjKQorICAgIGludAl2OworICAgIGludCBjOworeworICAgIGlmICh2ID09IDIgJiYgYyA9PSAyKQorCXJldHVybiAzOworICAgIGlmICh2ID09IDUgJiYgYyA9PSA1KQorCXJldHVybiA2OworICAgIGlmICh2ID09IDkgJiYgYyA9PSA5KQorCXJldHVybiAxMDsKKyAgICBpZiAodiA9PSAxMSAmJiBjID09IDExKQorCXJldHVybiAxMjsKKyAgICBpZiAodiA9PSAxNCAmJiBjID09IDE0KQorCXJldHVybiAxNTsKKyAgICByZXR1cm4gMDsKK30KKworLyogMyC5+r3Ev6G8rSAox/bA57jwwL0sIMDUt8Igv7W5rikgLT4gurnH1SC48MC9IMOzuK4KKyAqIDMgYnVsc2lrOiAoY3VycmVudCB2b3dlbCwgaW5wdXQgZW5nbGlzaCkgLT4gY29tcG91bmQgdm93ZWwuCisgKi8KKworICAgIHN0YXRpYyBpbnQKK2NvbXZvdzModiwgYykKKyAgICBpbnQgdjsKKyAgICBpbnQgYzsKK3sKKyAgICBzd2l0Y2ggKHYpCisgICAgeworCWNhc2UgMTM6CQkJCQkvKiCkxyAqLworCSAgICBzd2l0Y2ggKGMpIHsKKwkJY2FzZSAzOgkJCQkJLyogpMekvyAqLworCQkgICAgcmV0dXJuIDE0OworCQljYXNlIDQ6CQkJCQkvKiCkx6TAICovCisJCSAgICByZXR1cm4gMTU7CisJCWNhc2UgMjk6CQkJCS8qIKTHpNMgKi8KKwkJICAgIHJldHVybiAxODsKKwkgICAgfQorCSAgICBicmVhazsKKworCWNhc2UgMjA6CQkJCQkvKiCkzCAqLworCSAgICBzd2l0Y2ggKGMpIHsKKwkJY2FzZSA3OgkJCQkJLyogpMykwyAqLworCQkgICAgcmV0dXJuIDIxOworCQljYXNlIDEwOgkJCQkvKiCkzKTEICovCisJCSAgICByZXR1cm4gMjI7CisJCWNhc2UgMjk6CQkJCS8qIKTMpNMgKi8KKwkJICAgIHJldHVybiAyMzsKKwkgICAgfQorCSAgICBicmVhazsKKworCSAgICAvKiAzILn6vcQgwNrGx8C6IKTRpNMgsKEgwNbAuLnHt84gLi4uICovCisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiAzILn6vcS/obytICjH9sDnILnexKcsIL+1ua7A2iDA1LfCKSAtPiC53sSnCisgKiAzIGJ1bHNpazogKGN1cnJlbnQgcHJvcCg/KSwgaW5wdXQgZW5nbGlzaCkgLT4gcHJvcCg/KS4KKyAqIEkgd2FudCB0byBzYXksIHRoZSAncHJvcCcgaXMgc2ltaWxhciB0byAnZmluYWwgY29uc29uYW50JywgYnV0IG5vdCB2b3dlbC4KKyAqIChJIGNhbm5vdCBmaW5kIHRoZSByZWFsIGVuZ2xpc2ggZnJvbSBteSBkaWN0aW9uYXJ5LiBTb3JyeSEpCisgKiBWSU06IFYgPSBpbml0aWFsIHNvdW5kLCBJID0gbWVkaWFsIHZvd2VsLCBNID0gZmluYWwgY29uc29uYW50LgorICovCisKKyAgICBzdGF0aWMgaW50Citjb21jb24zKGssIGMpCisgICAgaW50IGs7CisgICAgaW50IGM7Cit7CisgICAgc3dpdGNoIChrKQorICAgIHsKKwljYXNlIDI6CQkJCQkJLyogpKEgKi8KKwkgICAgc3dpdGNoIChjKSB7CisJCWNhc2UgMjoKKwkJICAgIHJldHVybiAzOwkJCQkvKiCkoaShICovCisJCWNhc2UgMjE6CisJCSAgICByZXR1cm4gNDsJCQkJLyogpKGktSAqLworCSAgICB9CisJICAgIGJyZWFrOworCisJY2FzZSA1OgkJCQkJCS8qIKSkICovCisJICAgIHN3aXRjaCAoYykgeworCQljYXNlIDI0OgkJCQkvKiCkpKS4ICovCisJCSAgICByZXR1cm4gNjsKKwkJY2FzZSAyOToKKwkJICAgIHJldHVybiA3OwkJCQkvKiCkpKS+ICovCisJICAgIH0KKwkgICAgYnJlYWs7CisKKwljYXNlIDk6CQkJCQkJLyogpKkgKi8KKwkgICAgc3dpdGNoIChjKSB7CisJCWNhc2UgMjoJCQkJCS8qIKSppKEgKi8KKwkJICAgIHJldHVybiAxMDsKKwkJY2FzZSAxNzoJCQkJLyogpKmksSAqLworCQkgICAgcmV0dXJuIDExOworCQljYXNlIDE5OgkJCQkvKiCkqaSyICovCisJCSAgICByZXR1cm4gMTI7CisJCWNhc2UgMjE6CQkJCS8qIKSppLUgKi8KKwkJICAgIHJldHVybiAxMzsKKwkJY2FzZSAyNzoJCQkJLyogpKmkvCAqLworCQkgICAgcmV0dXJuIDE0OworCQljYXNlIDI4OgkJCQkvKiCkqaS9ICovCisJCSAgICByZXR1cm4gMTU7CisJCWNhc2UgMjk6CQkJCS8qIKSppL4gKi8KKwkJICAgIHJldHVybiAxNjsKKwkgICAgfQorCSAgICBicmVhazsKKworCWNhc2UgMTk6CisJICAgIHN3aXRjaCAoYykgeworCQljYXNlIDIxOgkJCQkvKiCksqS1ICovCisJCSAgICByZXR1cm4gMjA7CisJICAgIH0KKwkgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKiogMiC5+r3EwNrGx8C7IMCnx9Egt+fGviAgKFJvdXRpbmVzIGZvciAyIGJ1bHNpayBrZXlib2FyZCkgKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgICBzdGF0aWMgaW50CitraW5kX3RhYmxlX2Zvcl8yKGMpCisgICAgaW50IGM7Cit7CisgICAgc3RhdGljIGNoYXJfdSB0YWJsZVtdID0KKyAgICB7CisgICAgIC8qIGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGksIGosIGssIGwsIG0sIG4sIG8sIHAsIHEsIHIsIHMgKi8KKwkwLCAxLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAwLCAwLCAwLAorICAgICAvKiB0LCB1LCB2LCB3LCB4LCB5LCB6ICovCisJMCwgMSwgMCwgMCwgMCwgMSwgMAorICAgIH07CisKKyAgICBpZiAoYyA8PSAnWicpCisJYyAtPSAnQSc7CisgICAgZWxzZQorCWMgLT0gJ2EnOworCisgICAgcmV0dXJuIHRhYmxlW2NdOworfQorCisvKiAyILn6vcS/obytIL+1ua7A2iAtPiDBtsfVx/wgw8q8uiC6r8ivCisgKiAoMiBidWxzaWs6IGNvbnZlcnNpb24gZW5nbGlzaCBjaGFyLiB0byBpbml0aWFsIHNvdW5kIG9mIGNvbXBvdW5kIHR5cGUpCisgKiCw4bD6OiDDyry6wMwgvsa0z7jpIDAgKElmIGl0IGlzIG5vdCBpbml0aWFsIHNvdW5kLCByZXR1cm4gMCkuCisgKi8KKyAgICBzdGF0aWMgaW50CitmY29uKGMpCisgICAgaW50IGM7Cit7CisgICAgc3RhdGljIGNoYXJfdSB0YWJsZVtdID0KKyAgICB7CisJLypFICovIDYgLCAvKkYgKi8gMCAsIC8qRyAqLyAwICwgLypIICovIDAgLCAvKkkgKi8gMCAsIC8qSiAqLyAwICwgLypLICovIDAgLAorCS8qTCAqLyAwICwgLypNICovIDAgLCAvKk4gKi8gMCAsIC8qTyAqLyAwICwgLypQICovIDAgLCAvKlEgKi8gMTAsIC8qUiAqLyAzICwKKwkvKlMgKi8gMCAsIC8qVCAqLyAxMiwgLypVICovIDAgLCAvKlYgKi8gMCAsIC8qVyAqLyAxNSwgLypYICovIDAgLCAvKlkgKi8gMCAsCisJLypaICovIDAgLCAvKlsgKi8gMCAsIC8qXCAqLyAwICwgLypdICovIDAgLCAvKl4gKi8gMCAsIC8qXyAqLyAwICwgLypgICovIDAgLAorCS8qYSAqLyA4ICwgLypiICovIDAgLCAvKmMgKi8gMTYsIC8qZCAqLyAxMywgLyplICovIDUgLCAvKmYgKi8gNyAsIC8qZyAqLyAyMCwKKwkvKmggKi8gMCAsIC8qaSAqLyAwICwgLypqICovIDAgLCAvKmsgKi8gMCAsIC8qbCAqLyAwICwgLyptICovIDAgLCAvKm4gKi8gMCAsCisJLypvICovIDAgLCAvKnAgKi8gMCAsIC8qcSAqLyA5ICwgLypyICovIDIgLCAvKnMgKi8gNCAsIC8qdCAqLyAxMSwgLyp1ICovIDAgLAorCS8qdiAqLyAxOSwgLyp3ICovIDE0LCAvKnggKi8gMTgsIC8qeSAqLyAwICwgLyp6ICovIDE3CisgICAgfTsKKworICAgIGlmIChjIDwgJ0UnIHx8IGMgPiAneicpCisJcmV0dXJuIDA7CisgICAgcmV0dXJuIHRhYmxlW2MgLSAnRSddOworfQorCisvKiAyILn6vcS/obytIL+1ua7A2iAtPiDB37y6ILqvyK8KKyAqICgyIGJ1bHNpazogY29udmVyc2lvbiBlbmdsaXNoIGNoYXIuIHRvIG1lZGlhbCB2b3dlbCkKKyAqILDhsPo6IMHfvLrAzCC+xrTPuOkgMCAoSWYgaXQgaXMgbm90IG1lZGlhbCB2b3dlbCwgcmV0dXJuIDApLgorICovCisgICAgc3RhdGljIGludAordm93KGMpCisgICAgaW50IGM7Cit7CisgICAgc3RhdGljIGNoYXJfdSB0YWJsZVtdID0KKyAgICB7CisJLypPICovIDYgLCAvKlAgKi8gMTIsIC8qUSAqLyAwICwgLypSICovIDAgLCAvKlMgKi8gMCAsIC8qVCAqLyAwICwgLypVICovIDAgLAorCS8qViAqLyAwICwgLypXICovIDAgLCAvKlggKi8gMCAsIC8qWSAqLyAwICwgLypaICovIDAgLCAvKlsgKi8gMCAsIC8qXCAqLyAwICwKKwkvKl0gKi8gMCAsIC8qXiAqLyAwICwgLypfICovIDAgLCAvKmAgKi8gMCAsIC8qYSAqLyAwICwgLypiICovIDI2LCAvKmMgKi8gMCAsCisJLypkICovIDAgLCAvKmUgKi8gMCAsIC8qZiAqLyAwICwgLypnICovIDAgLCAvKmggKi8gMTMsIC8qaSAqLyA1ICwgLypqICovIDcgLAorCS8qayAqLyAzICwgLypsICovIDI5LCAvKm0gKi8gMjcsIC8qbiAqLyAyMCwgLypvICovIDQgLCAvKnAgKi8gMTAsIC8qcSAqLyAwICwKKwkvKnIgKi8gMCAsIC8qcyAqLyAwICwgLyp0ICovIDAgLCAvKnUgKi8gMTEsIC8qdiAqLyAwICwgLyp3ICovIDAgLCAvKnggKi8gMCAsCisJLyp5ICovIDE5fTsKKworICAgIGlmIChjIDwgJ08nIHx8IGMgPiAneScpCisJcmV0dXJuIDA7CisgICAgcmV0dXJuIHRhYmxlW2MgLSAnTyddOworfQorCisvKiAyufq9xL+hvK0gv7W5rsDaIC0+ILnexKcguq/IrworICogKDIgYnVsc2lrOiBjb252ZXJzaW9uIGVuZ2xpc2ggY2hhci4gdG8gcHJvcCkKKyAqILDhsPo6ILnexKfAzCC+xrTPuOkgMCAoSWYgbm90IHByb3AsIHJldHVybiAwKQorICovCisgICAgc3RhdGljIGludAorbGNvbihjKQorICAgIGludCBjOworeworICAgIHN0YXRpYyBjaGFyX3UgdGFibGVbXSA9CisgICAgeworCS8qUiAqLyAzICwgLypTICovIDAgLCAvKlQgKi8gMjIsIC8qVSAqLyAwICwgLypWICovIDAgLCAvKlcgKi8gMCAsIC8qWCAqLyAwICwKKwkvKlkgKi8gMCAsIC8qWiAqLyAwICwgLypbICovIDAgLCAvKlwgKi8gMCAsIC8qXSAqLyAwICwgLypeICovIDAgLCAvKl8gKi8gMCAsCisJLypgICovIDAgLCAvKmEgKi8gMTcsIC8qYiAqLyAwICwgLypjICovIDI1LCAvKmQgKi8gMjMsIC8qZSAqLyA4ICwgLypmICovIDkgLAorCS8qZyAqLyAyOSwgLypoICovIDAgLCAvKmkgKi8gMCAsIC8qaiAqLyAwICwgLyprICovIDAgLCAvKmwgKi8gMCAsIC8qbSAqLyAwICwKKwkvKm4gKi8gMCAsIC8qbyAqLyAwICwgLypwICovIDAgLCAvKnEgKi8gMTksIC8qciAqLyAyICwgLypzICovIDUgLCAvKnQgKi8gMjEsCisJLyp1ICovIDAgLCAvKnYgKi8gMjgsIC8qdyAqLyAyNCwgLyp4ICovIDI3LCAvKnkgKi8gMCAsIC8qeiAqLyAyNgorICAgIH07CisKKyAgICBpZiAoYyA8ICdSJyB8fCBjID4gJ3onKQorCXJldHVybiAwOworICAgIHJldHVybiB0YWJsZVtjIC0gJ1InXTsKK30KKworLyogMiC5+r3Ev6G8rSAox/bA5yC53sSnLCC/tbmuwNogwNS3wikgLT4gud7EpyC6r8ivCisgKiAoMiBidWxzaWs6IGNvbnZlcnNpb24gKGN1cnIuIHByb3AsIGlucHV0IGVuZ2xpc2gpIHRvIHByb3ApCisgKi8KKworICAgIHN0YXRpYyBpbnQKK2NvbWNvbjIoaywgYykKKyAgICBpbnQgazsKKyAgICBpbnQgYzsKK3sKKyAgICBzd2l0Y2ggKGspCisgICAgeworCWNhc2UgMjoJCQkJCS8qIKShICovCisJICAgIHN3aXRjaCAoYykgeworCQljYXNlICd0JzoKKwkJICAgIHJldHVybiA0OwkJCS8qIKShpLUgKi8KKwkgICAgfQorCSAgICBicmVhazsKKworCWNhc2UgNToJCQkJCS8qIKSkICovCisJICAgIHN3aXRjaCAoYykgeworCQljYXNlICd3JzoJCQkvKiCkpKS4ICovCisJCSAgICByZXR1cm4gNjsKKwkJY2FzZSAnZyc6CQkJLyogpKSkviAqLworCQkgICAgcmV0dXJuIDc7CisJICAgIH0KKwkgICAgYnJlYWs7CisKKwljYXNlIDk6CQkJCQkvKiCkqSAqLworCSAgICBzd2l0Y2ggKGMpIHsKKwkJY2FzZSAncic6CQkJLyogpKmkoSAqLworCQkgICAgcmV0dXJuIDEwOworCQljYXNlICdhJzoJCQkvKiCkqaSxICovCisJCSAgICByZXR1cm4gMTE7CisJCWNhc2UgJ3EnOgkJCS8qIKSppLIgKi8KKwkJICAgIHJldHVybiAxMjsKKwkJY2FzZSAndCc6CQkJLyogpKmktSAqLworCQkgICAgcmV0dXJuIDEzOworCQljYXNlICd4JzoJCQkvKiCkqaS8ICovCisJCSAgICByZXR1cm4gMTQ7CisJCWNhc2UgJ3YnOgkJCS8qIKSppL0gKi8KKwkJICAgIHJldHVybiAxNTsKKwkJY2FzZSAnZyc6CQkJLyogpKmkviAqLworCQkgICAgcmV0dXJuIDE2OworCSAgICB9CisJICAgIGJyZWFrOworCisJY2FzZSAxOToJCQkJLyogpLIgKi8KKwkgICAgc3dpdGNoIChjKSB7CisJCWNhc2UgJ3QnOgkJCS8qIKSypLUgKi8KKwkJICAgIHJldHVybiAyMDsKKwkgICAgfQorCSAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIDK5+r3Ev6G8rSAox/bA5yDB37y6LCC/tbmuIMDUt8IpIC0+IMHfvLoguq/IrworICogKDIgYnVsc2lrOiBjb252ZXJzaW9uIChjdXJyLiBtZWRpYWwgdm93ZWwsIGlucHV0IGVuZ2xpc2gpIHRvIG1lZGlhbAorICogdm93ZWwpCisgKi8KKworICAgIHN0YXRpYyBpbnQKK2NvbXZvdzIodiwgYykKKyAgICBpbnQgdjsKKyAgICBpbnQgYzsKK3sKKyAgICBzd2l0Y2ggKHYpCisgICAgeworCWNhc2UgMTM6CQkJCQkvKiCkxyAqLworCSAgICBzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnayc6CQkJCS8qIKTHpL8gKi8KKwkJICAgIHJldHVybiAxNDsKKwkJY2FzZSAnbyc6CQkJCS8qIKTHpMAgKi8KKwkJICAgIHJldHVybiAxNTsKKwkJY2FzZSAnbCc6CQkJCS8qIKTHpNMgKi8KKwkJICAgIHJldHVybiAxODsKKwkgICAgfQorCSAgICBicmVhazsKKworCWNhc2UgMjA6CQkJCQkvKiCkzCAqLworCSAgICBzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnaic6CQkJCS8qIKTMpMMgKi8KKwkJICAgIHJldHVybiAyMTsKKwkJY2FzZSAncCc6CQkJCS8qIKTMpMQgKi8KKwkJICAgIHJldHVybiAyMjsKKwkJY2FzZSAnbCc6CQkJCS8qIKTMpNMgKi8KKwkJICAgIHJldHVybiAyMzsKKwkgICAgfQorCSAgICBicmVhazsKKworCWNhc2UgMjc6CQkJCQkvKiCk0SAqLworCSAgICBzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnbCc6CQkJCS8qIKTRpNMgKi8KKwkJICAgIHJldHVybiAyODsKKwkgICAgfQorCSAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKyAgICBpbnQKK2hhbmd1bF9pbnB1dF9zdGF0ZV9nZXQoKQoreworICAgIHJldHVybiBoYW5ndWxfaW5wdXRfc3RhdGU7Cit9CisKKyAgICB2b2lkCitoYW5ndWxfaW5wdXRfc3RhdGVfc2V0KHN0YXRlKQorICAgIGludCBzdGF0ZTsKK3sKKyAgICBoYW5ndWxfaW5wdXRfc3RhdGUgPSBzdGF0ZTsKKyAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKK30KKworICAgIGludAoraW1fZ2V0X3N0YXR1cygpCit7CisgICAgcmV0dXJuIGhhbmd1bF9pbnB1dF9zdGF0ZV9nZXQoKTsKK30KKworICAgIHZvaWQKK2hhbmd1bF9pbnB1dF9zdGF0ZV90b2dnbGUoKQoreworICAgIGlmIChoYW5ndWxfaW5wdXRfc3RhdGVfZ2V0KCkpCisgICAgeworCWhhbmd1bF9pbnB1dF9zdGF0ZV9zZXQoMCk7CisJaWYgKGNvbXBvc2luZ19oYW5ndWwpCisJeworCSAgICBwdXNoX3Jhd19rZXkoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsIDIpOworCSAgICBjb21wb3NpbmdfaGFuZ3VsID0gMDsKKwl9CisgICAgfQorICAgIGVsc2UKKwloYW5ndWxfaW5wdXRfc3RhdGVfc2V0KDEpOworCisgICAgaWYgKHNob3dtb2RlKCkpCisgICAgeworCXNldGN1cnNvcigpOworCW91dF9mbHVzaCgpOworICAgIH0KKworICAgIGd1aV91cGRhdGVfY3Vyc29yKFRSVUUsIEZBTFNFKTsKK30KKworICAgIHN0YXRpYyBpbnQKK2hhbmd1bF9hdXRvbWF0YTIoYnVmLCBjKQorICAgIGNoYXJfdSAgKmJ1ZjsKKyAgICBpbnRfdSAgICpjOworeworICAgIGludCB0LHQyOworCisgICAgaWYgKCpjID09IEJTKQorICAgIHsKKwlpZiAoc3AgPT0gMCkKKwkgICAgcmV0dXJuIEFVVE9NQVRBX1NQRUNJQUw7CisJZWxzZSBpZiAoc3AgPCA0KQorCXsKKwkgICAgaGFuZ3VsX2lucHV0X2NsZWFyKCk7CisJICAgIHJldHVybiBBVVRPTUFUQV9OVUxMOworCX0KKwlwb3AoYnVmKTsKKwlxdWVyeShidWYpOworCWNvbnZlcnRfa3NfdG9fMyhidWYsICZmLCAmbSwgJmwpOworCWxhc3RfbCA9IGxhc3RfbGw7CisJbGFzdF9sbCA9IC0xOworCXJldHVybiBBVVRPTUFUQV9DT1JSRUNUOworICAgIH0KKyAgICBpZiAoKCEoKmMgPj0gJ0EnICYmICpjIDw9ICdaJykpICYmICghKCpjID49ICdhJyAmJiAqYyA8PSAneicpKSkKKyAgICB7CisJaGFuZ3VsX2lucHV0X2NsZWFyKCk7CisJcmV0dXJuIEFVVE9NQVRBX1NQRUNJQUw7CisgICAgfQorICAgIHQgPSAqYzsKKyAgICBzd2l0Y2ggKGtpbmRfdGFibGVfZm9yXzIodCkpCisgICAgeworCWNhc2UgMDogLyogwNrAvSAoY29uc29uYW50KSAqLworCSAgICBpZiAoZiA9PSBGX05VTEwpCisJICAgIHsKKwkJaWYgKG0gIT0gTV9OVUxMKQorCQkgICAgaGFuZ3VsX2lucHV0X2NsZWFyKCk7CisJCWYgPSBmY29uKHQpOworCQljb252ZXJ0XzNfdG9fY29kZShmLCBNX05VTEwsIExfTlVMTCwgYnVmKTsKKwkJcHVzaChidWYpOworCQlsYXN0X2xsID0gbGFzdF9sID0gLTE7CisJCXJldHVybiBBVVRPTUFUQV9ORVc7CisJICAgIH0KKwkgICAgaWYgKG0gPT0gTV9OVUxMKQorCQlyZXR1cm4gQVVUT01BVEFfRVJST1I7CisJICAgIGlmIChsID09IExfTlVMTCkKKwkgICAgeworCQl0MiA9IGxjb24odCk7CisJCWlmICghdDIpICAgIC8qILnexKfAuLfOIMD7x9XHz8H2vsq02SAoY2Fubm90IHVzZSBpdCBhcyBhIHByb3ApICovCisJCXsKKwkJICAgIGhhbmd1bF9pbnB1dF9jbGVhcigpOworCQkgICAgbGFzdF9sbCA9IGxhc3RfbCA9IC0xOworCQkgICAgZiA9IGZjb24odCk7CisJCSAgICBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCBsLCBidWYpOworCQkgICAgcHVzaChidWYpOworCQkgICAgcmV0dXJuIEFVVE9NQVRBX05FVzsKKwkJfQorCQlpZiAoMiA9PSBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCB0MiwgYnVmKSkKKwkJeworCQkgICAgbGFzdF9sbCA9IC0xOworCQkgICAgbGFzdF9sID0gdDsKKwkJICAgIGwgPSB0MjsKKwkJICAgIHB1c2goYnVmKTsKKwkJICAgIHJldHVybiBBVVRPTUFUQV9DT1JSRUNUOworCQl9CisJCWVsc2UJLyogud7Ep8C4t84gvrK3wcfPv7TAuLOqIGNvZGW/oSC++LTCILHbwNrAzLTZICovCisJCXsJLyogY2Fubm90IGZpbmQgc3VjaCBhIHByb3AgaW4gdGhlIGNvZGUgdGFibGUgKi8KKwkJICAgIGxhc3RfbGwgPSBsYXN0X2wgPSAtMTsKKwkJICAgIGhhbmd1bF9pbnB1dF9jbGVhcigpOworCQkgICAgZiA9IGZjb24odCk7CisJCSAgICBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCBsLCBidWYpOworCQkgICAgcHVzaChidWYpOworCQkgICAgcmV0dXJuIEFVVE9NQVRBX05FVzsKKwkJfQorCSAgICB9CisJICAgIC8qIMPKIMHfIMG+vLrAzCC48LXOILCuw9++7sGuIMDWtNkKKwkgICAgICogSSBoYXZlIGFsbCB0aGUgJ2luaXRpYWwgc291bmQnIGFuZCAnbWVkaWFsIHZvd2VsJyBhbmQgJ2ZpbmFsCisJICAgICAqIGNvbnNvbmFudCcuCisJICAgICAqLworCSAgICB0MiA9IGNvbWNvbjIobCwgdCk7CisJICAgIGlmICh0MikKKwkgICAgeworCQlpZiAoMiA9PSBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCB0MiwgYnVmKSkKKwkJeworCQkgICAgbCA9IHQyOworCQkgICAgbGFzdF9sbCA9IGxhc3RfbDsKKwkJICAgIGxhc3RfbCA9IHQ7CisJCSAgICBwdXNoKGJ1Zik7CisJCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVDsKKwkJfQorCSAgICB9CisJICAgIGxhc3RfbGwgPSBsYXN0X2wgPSAtMTsKKwkgICAgaGFuZ3VsX2lucHV0X2NsZWFyKCk7CisJICAgIGYgPSBmY29uKHQpOworCSAgICBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCBsLCBidWYpOworCSAgICBwdXNoKGJ1Zik7CisJICAgIHJldHVybiBBVVRPTUFUQV9ORVc7CisKKwljYXNlIDE6CisJICAgIGlmIChmID09IEZfTlVMTCkKKwkgICAgeworCQloYW5ndWxfaW5wdXRfY2xlYXIoKTsKKwkJbSA9IHZvdyh0KTsKKwkJY29udmVydF8zX3RvX2NvZGUgKGYsIG0sIExfTlVMTCwgYnVmKTsKKwkJcHVzaCAoYnVmKTsKKwkJbGFzdF9sbCA9IGxhc3RfbCA9IC0xOworCQlyZXR1cm4gQVVUT01BVEFfTkVXOworCSAgICB9CisJICAgIGlmIChtID09IE1fTlVMTCkKKwkgICAgeworCQltID0gdm93KHQpOworCQlpZiAoMiA9PSBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCBMX05VTEwsIGJ1ZikpCisJCXsKKwkJICAgIGxhc3RfbGwgPSBsYXN0X2wgPSAtMTsKKwkJICAgIHB1c2goYnVmKTsKKwkJICAgIHJldHVybiBBVVRPTUFUQV9DT1JSRUNUOworCQl9CisJCW0gPSBNX05VTEw7CisJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKKwkgICAgfQorCSAgICBpZiAobCA9PSBMX05VTEwpCisJICAgIHsKKwkJdDIgPSBjb212b3cyKG0sIHQpOworCQlpZiAodDIpCisJCXsKKwkJICAgIGlmICgyICE9IGNvbnZlcnRfM190b19jb2RlKGYsIHQyLCBMX05VTEwsIGJ1ZikpCisJCQlyZXR1cm4gQVVUT01BVEFfRVJST1I7CisKKwkJICAgIG0gPSB0MjsKKwkJICAgIHB1c2goYnVmKTsKKwkJICAgIGxhc3RfbGwgPSBsYXN0X2wgPSAtMTsKKwkJICAgIHJldHVybiBBVVRPTUFUQV9DT1JSRUNUOworCQl9CisJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKKwkgICAgfQorCSAgICBwb3AoYnVmKTsKKwkgICAgcG9wKGJ1Zik7CisJICAgIHNwID0gMDsKKwkgICAgaWYgKGxhc3RfbCA9PSAtMSkKKwkgICAgeworCQkvKiDAvS4uLiDAzLDUIMfKv+THz7OqPz8gKEhtbS4uLiBJcyBpdCBuZWVkZWQ/KSAqLworCQljb252ZXJ0X2tzX3RvXzMoYnVmLCAmZiwgJm0sICZsKTsKKwkgICAgfQorCSAgICBlbHNlCisJICAgIHsKKwkJY2hhcl91IHRtcFszXTsKKwkJZiA9IGZjb24obGFzdF9sKTsKKwkJY29udmVydF8zX3RvX2NvZGUgKGYsIE1fTlVMTCwgTF9OVUxMLCB0bXApOworCQlwdXNoICh0bXApOworCSAgICB9CisJICAgIG0gPSB2b3codCk7CisJICAgIGwgPSBMX05VTEw7CisJICAgIGNvbnZlcnRfM190b19jb2RlKGYsIG0sIGwsIGJ1ZiArIDIpOworCSAgICBwdXNoKGJ1ZiArIDIpOworCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVF9ORVc7CisKKwlkZWZhdWx0OgorCSAgICBFTVNHKF8oIkUyNTY6IEhhbmd1bCBhdXRvbWF0YSBFUlJPUiIpKTsKKwkgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBBVVRPTUFUQV9FUlJPUjsgLyogUnJFZUFhTGxMbFl5IEVlUnJSck9vUnIgKi8KK30KKworICAgIHN0YXRpYyBpbnQKK2hhbmd1bF9hdXRvbWF0YTMoYnVmLCBjKQorICAgIGNoYXJfdSAgKmJ1ZjsKKyAgICBpbnRfdSAgICpjOworeworICAgIGludCB0LCB0MjsKKworICAgIGlmICgqYyA+PSAnIScgJiYgKmMgPD0gJ3onKQorICAgIHsKKwkqYyAtPSAnISc7CisJdCA9IHZhbHVlX3RhYmxlX2Zvcl8zWypjXTsKKwlzd2l0Y2ggKGtpbmRfdGFibGVfZm9yXzNbKmNdKQorCXsKKwkgICAgY2FzZSBGX0Y6IC8qIMPKvLq5rsDaIChjaGFyLiBvZiBhbiBpbml0aWFsIHNvdW5kKSAqLworCQlpZiAobSAhPSBNX05VTEwgfHwgc3AgPT0gMCkKKwkJeworCQkgICAgLyogw8q8usDMILrxvvqwxbOqILTZwL0gsdvA2iC48MC4seIgvcPA2worCQkgICAgICogRW1wdHkgJ2luaXRpYWwgc291bmQnLCBzbyBzdGFydGluZyBhdXRvbWF0YS4KKwkJICAgICAqLworCQkgICAgaGFuZ3VsX2lucHV0X2NsZWFyKCk7CisJCSAgICBmID0gdDsKKwkJICAgIGNvbnZlcnRfM190b19jb2RlKGYsIE1fTlVMTCwgTF9OVUxMLCBidWYpOworCQkgICAgcHVzaChidWYpOworCQkgICAgcmV0dXJuIEFVVE9NQVRBX05FVzsKKwkJfQorCQlpZiAoKHQyID0gY29tZmNvbjMoZix0KSkgIT0gMCkJLyogurnA2sC9IChkb3VibGU/IGNvbnNvbmFudCkgKi8KKwkJeworCQkgICAgZj10MjsKKwkJICAgIGNvbnZlcnRfM190b19jb2RlKGYsIE1fTlVMTCwgTF9OVUxMLCBidWYpOworCQkgICAgcHVzaChidWYpOworCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CisJCX0KKwkJcmV0dXJuIEFVVE9NQVRBX0VSUk9SOworCisJICAgIGNhc2UgRl9NOgkvKiC48MC9ICh2b3dlbCkgKi8KKwkJaWYgKG0gPT0gTV9OVUxMKQorCQl7CisJCSAgICBpZiAoMiAhPSBjb252ZXJ0XzNfdG9fY29kZShmLCB0LCBMX05VTEwsYnVmKSkKKwkJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKKworCQkgICAgbSA9IHQ7CisJCSAgICBwdXNoKGJ1Zik7CisJCSAgICBpZiAoZiA9PSBGX05VTEwpCisJCQlyZXR1cm4gQVVUT01BVEFfTkVXOworCQkgICAgZWxzZQorCQkJcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CisJCX0KKwkJaWYgKCh0MiA9IGNvbXZvdzMobSx0KSkpICAgIC8qILq5uPDAvSAoYSBkaXBodGhvbmcpICovCisJCXsKKwkJICAgIG0gPSB0MjsKKwkJICAgIGNvbnZlcnRfM190b19jb2RlKGYsIG0sIExfTlVMTCwgYnVmKTsKKwkJICAgIHB1c2goYnVmKTsKKwkJICAgIHJldHVybiBBVVRPTUFUQV9DT1JSRUNUOworCQl9CisJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKKworCSAgICBjYXNlIEZfTDoJLyogud7EpyAocHJvcD8pICovCisJCWlmIChtID09IE1fTlVMTCkKKwkJICAgIHJldHVybiBBVVRPTUFUQV9FUlJPUjsgLyogwd+8ur74tMIgwb68uiAqLworCQlpZiAobCA9PSBMX05VTEwpCisJCXsKKwkJICAgIGlmICgyICE9IGNvbnZlcnRfM190b19jb2RlKGYsIG0sIHQsIGJ1ZikpCisJCSAgICB7CisJCQlsID0gTF9OVUxMOworCQkJcmV0dXJuIEFVVE9NQVRBX0VSUk9SOworCQkgICAgfQorCQkgICAgcHVzaChidWYpOworCQkgICAgbCA9IHQ7CisJCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVDsKKwkJfQorCQlpZiAoKHQyID0gY29tY29uMyhsLHQpKSAhPSAwKQkvKiC6uSC53sSnID8/IChkb3VibGUgcHJvcD8pICovCisJCXsKKwkJICAgIGlmICgyICE9IGNvbnZlcnRfM190b19jb2RlKGYsIG0sIHQyLCBidWYpKQorCQkJcmV0dXJuIEFVVE9NQVRBX0VSUk9SOworCisJCSAgICBwdXNoKGJ1Zik7CisJCSAgICBsID0gdDI7CisJCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVDsKKwkJfQorCQlyZXR1cm4gQVVUT01BVEFfRVJST1I7CisKKwkgICAgY2FzZSBGX0E6IC8qIMavvPa5rsDas6ogvP3A2iAoc3BlY2lhbCBjaGFyLiBvciBudW1iZXIpICovCisJCWhhbmd1bF9pbnB1dF9jbGVhcigpOworCQkqYyA9IHQ7CisJCXJldHVybiBBVVRPTUFUQV9TUEVDSUFMOworCX0KKyAgICB9CisgICAgaWYgKCpjID09IEJTKQorICAgIHsKKwlpZiAoc3AgPj0gNCkKKwl7CisJICAgIHBvcChidWYpOworCSAgICBwb3AoYnVmKTsKKwkgICAgY29udmVydF9rc190b18zKGJ1ZiwgJmYsICZtLCAmbCk7CisJICAgIHB1c2goYnVmKTsKKwkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CisJfQorCWVsc2UgaWYgKHNwID09IDApCisJeworCSAgICByZXR1cm4gQVVUT01BVEFfU1BFQ0lBTDsKKwl9CisJZWxzZQorCXsKKwkgICAgaGFuZ3VsX2lucHV0X2NsZWFyKCk7CisJICAgIHJldHVybiBBVVRPTUFUQV9OVUxMOworCX0KKyAgICB9CisgICAgaGFuZ3VsX2lucHV0X2NsZWFyKCk7CisgICAgcmV0dXJuIEFVVE9NQVRBX1NQRUNJQUw7Cit9CisKKyAgICB2b2lkCitoYW5ndWxfa2V5Ym9hcmRfc2V0KCkKK3sKKyAgICBpbnQJICAgIGtleWJvYXJkOworICAgIGNoYXIgICAgKnM7CisKKyAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKKworICAgIGlmICgocyA9IGdldGVudigiVklNX0tFWUJPQVJEIikpID09IE5VTEwpCisJcyA9IGdldGVudigiSEFOR1VMX0tFWUJPQVJEX1RZUEUiKTsKKworICAgIGlmIChzKQorICAgIHsKKwlpZiAoKnMgPT0gJzInKQorCSAgICBrZXlib2FyZCA9IDI7CisJZWxzZQorCSAgICBrZXlib2FyZCA9IDM7CisJaGFuZ3VsX2tleWJvYXJkX3R5cGUgPSBrZXlib2FyZDsKKyAgICB9Cit9CisKKyAgICBpbnQKK2hhbmd1bF9pbnB1dF9wcm9jZXNzKHMsIGxlbikKKyAgICBjaGFyX3UgICpzOworICAgIGludAkgICAgbGVuOworeworICAgIGludCBuOworICAgIHVuc2lnbmVkIGludCBjOworICAgIGNoYXJfdSBoYW5idWZbMjBdOworCisgICAgaWYgKGxlbiA9PSAxKQorCS8qIG5vcm1hbCBrZXkgcHJlc3MgKi8KKwljID0gKnM7CisgICAgZWxzZSBpZiAobGVuID09IDMgJiYgc1swXSA9PSBDU0kgJiYgc1sxXSA9PSAnaycgJiYgc1syXSA9PSAnYicpCisgICAgeworCS8qIGJhY2tzcGFjZSAqLworCWlmIChjb21wb3NpbmdfaGFuZ3VsKQorCSAgICBjID0gQ3RybF9IOworCWVsc2UKKwkgICAgcmV0dXJuIGxlbjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKwlpZiAoY29tcG9zaW5nX2hhbmd1bCkKKwkgICAgcHVzaF9yYXdfa2V5KGNvbXBvc2luZ19oYW5ndWxfYnVmZmVyLCAyKTsKKwloYW5ndWxfaW5wdXRfY2xlYXIoKTsKKwljb21wb3NpbmdfaGFuZ3VsID0gMDsKKwlyZXR1cm4gbGVuOworICAgIH0KKworICAgIGlmIChoYW5ndWxfa2V5Ym9hcmRfdHlwZSA9PSAyKQorCW4gPSBoYW5ndWxfYXV0b21hdGEyKGhhbmJ1ZiwgJmMpOworICAgIGVsc2UKKwluID0gaGFuZ3VsX2F1dG9tYXRhMyhoYW5idWYsICZjKTsKKworICAgIGlmIChuID09IEFVVE9NQVRBX0NPUlJFQ1QpCisgICAgeworCVNUUk5DUFkoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsIGhhbmJ1ZiwgMik7CisJZ3VpX3VwZGF0ZV9jdXJzb3IoVFJVRSwgRkFMU0UpOworCXJldHVybiAwOworICAgIH0KKyAgICBlbHNlIGlmIChuID09IEFVVE9NQVRBX05FVykKKyAgICB7CisJaWYgKGNvbXBvc2luZ19oYW5ndWwpCisJICAgIHB1c2hfcmF3X2tleShjb21wb3NpbmdfaGFuZ3VsX2J1ZmZlciwgMik7CisJU1RSTkNQWShjb21wb3NpbmdfaGFuZ3VsX2J1ZmZlciwgaGFuYnVmLCAyKTsKKwljb21wb3NpbmdfaGFuZ3VsID0gMTsKKwlndWlfdXBkYXRlX2N1cnNvcihUUlVFLCBGQUxTRSk7CisJcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgaWYgKG4gPT0gQVVUT01BVEFfQ09SUkVDVF9ORVcpCisgICAgeworCWlmIChjb21wb3NpbmdfaGFuZ3VsKQorCSAgICBwdXNoX3Jhd19rZXkoaGFuYnVmLCAyKTsKKwlTVFJOQ1BZKGNvbXBvc2luZ19oYW5ndWxfYnVmZmVyLCBoYW5idWYrMiwgMik7CisJY29tcG9zaW5nX2hhbmd1bCA9IDE7CisJZ3VpX3VwZGF0ZV9jdXJzb3IoVFJVRSwgRkFMU0UpOworCXJldHVybiAwOworICAgIH0KKyAgICBlbHNlIGlmIChuID09IEFVVE9NQVRBX05VTEwpCisgICAgeworCWNvbXBvc2luZ19oYW5ndWwgPSAwOworCWd1aV9yZWRyYXdfYmxvY2soZ3VpLmN1cnNvcl9yb3csIGd1aS5jdXJzb3JfY29sLAorCQkJIGd1aS5jdXJzb3Jfcm93LCBndWkuY3Vyc29yX2NvbCArIDEsCisJCQkgR1VJX01PTl9OT0NMRUFSKTsKKwlndWlfdXBkYXRlX2N1cnNvcihUUlVFLCBGQUxTRSk7CisJcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgaWYgKG4gPT0gQVVUT01BVEFfU1BFQ0lBTCkKKyAgICB7CisJaWYgKGNvbXBvc2luZ19oYW5ndWwpCisJeworCSAgICBwdXNoX3Jhd19rZXkoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsIDIpOworCSAgICBjb21wb3NpbmdfaGFuZ3VsID0gMDsKKwl9CisJKnMgPSBjOworCXJldHVybiAxOworICAgIH0KKyAgICBlbHNlIGlmIChuID09IEFVVE9NQVRBX0VSUk9SKQorICAgIHsKKwl2aW1fYmVlcCgpOworCXJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gbGVuOworfQorCisgICAgdm9pZAoraGFuZ3VsX2lucHV0X2NsZWFyKCkKK3sKKyAgICBzcCA9IDA7CisgICAgZiA9IEZfTlVMTDsKKyAgICBtID0gTV9OVUxMOworICAgIGwgPSBMX05VTEw7Cit9CisKKyNkZWZpbmUgaGFuX2luZGV4KGgsIGwpCSgoKGgpLTB4YjApKigweGZmLTB4YTEpKygobCktMHhhMSkpCisKK3N0YXRpYyBjb25zdCBjaGFyX3Uga3NfdGFibGUxW11bM10gPQoreworICAgIHsgIDIsICAzLCAgMX0sIHsgIDIsICAzLCAgMn0sIHsgIDIsICAzLCAgNX0sIHsgIDIsICAzLCAgOH0sCisgICAgeyAgMiwgIDMsICA5fSwgeyAgMiwgIDMsIDEwfSwgeyAgMiwgIDMsIDExfSwgeyAgMiwgIDMsIDE3fSwKKyAgICB7ICAyLCAgMywgMTl9LCB7ICAyLCAgMywgMjB9LCB7ICAyLCAgMywgMjF9LCB7ICAyLCAgMywgMjJ9LAorICAgIHsgIDIsICAzLCAyM30sIHsgIDIsICAzLCAyNH0sIHsgIDIsICAzLCAyNX0sIHsgIDIsICAzLCAyN30sCisgICAgeyAgMiwgIDMsIDI4fSwgeyAgMiwgIDMsIDI5fSwgeyAgMiwgIDQsICAxfSwgeyAgMiwgIDQsICAyfSwKKyAgICB7ICAyLCAgNCwgIDV9LCB7ICAyLCAgNCwgIDl9LCB7ICAyLCAgNCwgMTd9LCB7ICAyLCAgNCwgMTl9LAorICAgIHsgIDIsICA0LCAyMX0sIHsgIDIsICA0LCAyMn0sIHsgIDIsICA0LCAyM30sIHsgIDIsICA1LCAgMX0sCisgICAgeyAgMiwgIDUsICAyfSwgeyAgMiwgIDUsICA1fSwgeyAgMiwgIDUsICA5fSwgeyAgMiwgIDUsIDIxfSwKKyAgICB7ICAyLCAgNSwgMjN9LCB7ICAyLCAgNiwgIDF9LCB7ICAyLCAgNiwgIDV9LCB7ICAyLCAgNiwgIDl9LAorICAgIHsgIDIsICA3LCAgMX0sIHsgIDIsICA3LCAgMn0sIHsgIDIsICA3LCAgNX0sIHsgIDIsICA3LCAgOH0sCisgICAgeyAgMiwgIDcsICA5fSwgeyAgMiwgIDcsIDExfSwgeyAgMiwgIDcsIDE3fSwgeyAgMiwgIDcsIDE5fSwKKyAgICB7ICAyLCAgNywgMjF9LCB7ICAyLCAgNywgMjJ9LCB7ICAyLCAgNywgMjN9LCB7ICAyLCAgNywgMjR9LAorICAgIHsgIDIsICA3LCAyN30sIHsgIDIsICA3LCAyOH0sIHsgIDIsICA3LCAyOX0sIHsgIDIsIDEwLCAgMX0sCisgICAgeyAgMiwgMTAsICA1fSwgeyAgMiwgMTAsICA5fSwgeyAgMiwgMTAsIDE3fSwgeyAgMiwgMTAsIDE5fSwKKyAgICB7ICAyLCAxMCwgMjF9LCB7ICAyLCAxMCwgMjJ9LCB7ICAyLCAxMCwgMjN9LCB7ICAyLCAxMSwgIDF9LAorICAgIHsgIDIsIDExLCAgMn0sIHsgIDIsIDExLCAgM30sIHsgIDIsIDExLCAgNX0sIHsgIDIsIDExLCAgOH0sCisgICAgeyAgMiwgMTEsICA5fSwgeyAgMiwgMTEsIDE3fSwgeyAgMiwgMTEsIDE5fSwgeyAgMiwgMTEsIDIxfSwKKyAgICB7ICAyLCAxMSwgMjJ9LCB7ICAyLCAxMSwgMjN9LCB7ICAyLCAxMSwgMjd9LCB7ICAyLCAxMiwgIDF9LAorICAgIHsgIDIsIDEyLCAgNX0sIHsgIDIsIDEyLCAgOX0sIHsgIDIsIDEyLCAxOX0sIHsgIDIsIDEyLCAyMX0sCisgICAgeyAgMiwgMTMsICAxfSwgeyAgMiwgMTMsICAyfSwgeyAgMiwgMTMsICA1fSwgeyAgMiwgMTMsICA4fSwKKyAgICB7ICAyLCAxMywgIDl9LCB7ICAyLCAxMywgMTF9LCB7ICAyLCAxMywgMTN9LCB7ICAyLCAxMywgMTZ9LAorICAgIHsgIDIsIDEzLCAxN30sIHsgIDIsIDEzLCAxOX0sIHsgIDIsIDEzLCAyMX0sIHsgIDIsIDEzLCAyM30sCisgICAgeyAgMiwgMTMsIDI0fSwgeyAgMiwgMTQsICAxfSwgeyAgMiwgMTQsICAyfSwgeyAgMiwgMTQsICA1fSwKKyAgICB7ICAyLCAxNCwgIDl9LCB7ICAyLCAxNCwgMTF9LCB7ICAyLCAxNCwgMTd9LCB7ICAyLCAxNCwgMTl9LAorICAgIHsgIDIsIDE0LCAyMX0sIHsgIDIsIDE0LCAyM30sIHsgIDIsIDE1LCAgMX0sIHsgIDIsIDE1LCAgNX0sCisgICAgeyAgMiwgMTUsICA5fSwgeyAgMiwgMTUsIDE5fSwgeyAgMiwgMTUsIDIyfSwgeyAgMiwgMTUsIDIzfSwKKyAgICB7ICAyLCAxOCwgIDF9LCB7ICAyLCAxOCwgIDJ9LCB7ICAyLCAxOCwgIDV9LCB7ICAyLCAxOCwgIDl9LAorICAgIHsgIDIsIDE4LCAxN30sIHsgIDIsIDE4LCAxOX0sIHsgIDIsIDE4LCAyMX0sIHsgIDIsIDE4LCAyM30sCisgICAgeyAgMiwgMTksICAxfSwgeyAgMiwgMTksICA1fSwgeyAgMiwgMTksICA5fSwgeyAgMiwgMTksIDE5fSwKKyAgICB7ICAyLCAxOSwgMjF9LCB7ICAyLCAyMCwgIDF9LCB7ICAyLCAyMCwgIDJ9LCB7ICAyLCAyMCwgIDV9LAorICAgIHsgIDIsIDIwLCAgOH0sIHsgIDIsIDIwLCAgOX0sIHsgIDIsIDIwLCAxMH0sIHsgIDIsIDIwLCAxMX0sCisgICAgeyAgMiwgMjAsIDE2fSwgeyAgMiwgMjAsIDE3fSwgeyAgMiwgMjAsIDE5fSwgeyAgMiwgMjAsIDIxfSwKKyAgICB7ICAyLCAyMCwgMjN9LCB7ICAyLCAyMCwgMjR9LCB7ICAyLCAyMSwgIDF9LCB7ICAyLCAyMSwgIDJ9LAorICAgIHsgIDIsIDIxLCAgNX0sIHsgIDIsIDIxLCAgOX0sIHsgIDIsIDIxLCAyMn0sIHsgIDIsIDIxLCAyM30sCisgICAgeyAgMiwgMjIsICAxfSwgeyAgMiwgMjIsIDIxfSwgeyAgMiwgMjMsICAxfSwgeyAgMiwgMjMsICAyfSwKKyAgICB7ICAyLCAyMywgIDV9LCB7ICAyLCAyMywgIDl9LCB7ICAyLCAyMywgMTd9LCB7ICAyLCAyMywgMTl9LAorICAgIHsgIDIsIDIzLCAyMX0sIHsgIDIsIDI2LCAgMX0sIHsgIDIsIDI2LCAgNX0sIHsgIDIsIDI2LCAgOX0sCisgICAgeyAgMiwgMjcsICAxfSwgeyAgMiwgMjcsICAyfSwgeyAgMiwgMjcsICA1fSwgeyAgMiwgMjcsICA4fSwKKyAgICB7ICAyLCAyNywgIDl9LCB7ICAyLCAyNywgMTB9LCB7ICAyLCAyNywgMTd9LCB7ICAyLCAyNywgMTl9LAorICAgIHsgIDIsIDI3LCAyMX0sIHsgIDIsIDI3LCAyM30sIHsgIDIsIDI4LCAgMX0sIHsgIDIsIDI5LCAgMX0sCisgICAgeyAgMiwgMjksICAyfSwgeyAgMiwgMjksICA1fSwgeyAgMiwgMjksICA4fSwgeyAgMiwgMjksICA5fSwKKyAgICB7ICAyLCAyOSwgMTF9LCB7ICAyLCAyOSwgMTd9LCB7ICAyLCAyOSwgMTl9LCB7ICAyLCAyOSwgMjF9LAorICAgIHsgIDIsIDI5LCAyM30sIHsgIDIsIDI5LCAyNH0sIHsgIDIsIDI5LCAyOH0sIHsgIDMsICAzLCAgMX0sCisgICAgeyAgMywgIDMsICAyfSwgeyAgMywgIDMsICAzfSwgeyAgMywgIDMsICA1fSwgeyAgMywgIDMsICA5fSwKKyAgICB7ICAzLCAgMywgMTF9LCB7ICAzLCAgMywgMTd9LCB7ICAzLCAgMywgMTl9LCB7ICAzLCAgMywgMjF9LAorICAgIHsgIDMsICAzLCAyMn0sIHsgIDMsICAzLCAyM30sIHsgIDMsICAzLCAyN30sIHsgIDMsICA0LCAgMX0sCisgICAgeyAgMywgIDQsICAyfSwgeyAgMywgIDQsICA1fSwgeyAgMywgIDQsICA5fSwgeyAgMywgIDQsIDE3fSwKKyAgICB7ICAzLCAgNCwgMTl9LCB7ICAzLCAgNCwgMjF9LCB7ICAzLCAgNCwgMjJ9LCB7ICAzLCAgNCwgMjN9LAorICAgIHsgIDMsICA1LCAgMX0sIHsgIDMsICA1LCAgMn0sIHsgIDMsICA1LCAgOX0sIHsgIDMsICA3LCAgMX0sCisgICAgeyAgMywgIDcsICAyfSwgeyAgMywgIDcsICAzfSwgeyAgMywgIDcsICA1fSwgeyAgMywgIDcsICA5fSwKKyAgICB7ICAzLCAgNywgMTd9LCB7ICAzLCAgNywgMTl9LCB7ICAzLCAgNywgMjF9LCB7ICAzLCAgNywgMjJ9LAorICAgIHsgIDMsICA3LCAyM30sIHsgIDMsIDEwLCAgMX0sIHsgIDMsIDEwLCAgMn0sIHsgIDMsIDEwLCAgNX0sCisgICAgeyAgMywgMTAsIDE3fSwgeyAgMywgMTAsIDIxfSwgeyAgMywgMTAsIDIzfSwgeyAgMywgMTEsICAxfSwKKyAgICB7ICAzLCAxMSwgIDV9LCB7ICAzLCAxMSwgIDl9LCB7ICAzLCAxMSwgMjF9LCB7ICAzLCAxMSwgMjJ9LAorICAgIHsgIDMsIDExLCAyN30sIHsgIDMsIDEyLCAgMX0sIHsgIDMsIDEzLCAgMX0sIHsgIDMsIDEzLCAgMn0sCisgICAgeyAgMywgMTMsICA1fSwgeyAgMywgMTMsICA3fSwgeyAgMywgMTMsICA5fSwgeyAgMywgMTMsIDE3fSwKKyAgICB7ICAzLCAxMywgMTl9LCB7ICAzLCAxMywgMjF9LCB7ICAzLCAxMywgMjN9LCB7ICAzLCAxMywgMjR9LAorICAgIHsgIDMsIDEzLCAyNX0sIHsgIDMsIDE0LCAgMX0sIHsgIDMsIDE0LCAgMn0sIHsgIDMsIDE0LCAgOX0sCisgICAgeyAgMywgMTQsIDIyfSwgeyAgMywgMTQsIDIzfSwgeyAgMywgMTUsICAxfSwgeyAgMywgMTUsICAyfSwKKyAgICB7ICAzLCAxNSwgMjN9LCB7ICAzLCAxOCwgIDF9LCB7ICAzLCAxOCwgIDV9LCB7ICAzLCAxOCwgIDl9LAorICAgIHsgIDMsIDE4LCAxN30sIHsgIDMsIDE4LCAxOX0sIHsgIDMsIDE4LCAyM30sIHsgIDMsIDE5LCAgMX0sCisgICAgeyAgMywgMjAsICAxfSwgeyAgMywgMjAsICAyfSwgeyAgMywgMjAsICA1fSwgeyAgMywgMjAsICA5fSwKKyAgICB7ICAzLCAyMCwgMTZ9LCB7ICAzLCAyMCwgMTd9LCB7ICAzLCAyMCwgMTl9LCB7ICAzLCAyMCwgMjF9LAorICAgIHsgIDMsIDIwLCAyM30sIHsgIDMsIDIwLCAyNH0sIHsgIDMsIDIxLCAgMX0sIHsgIDMsIDIxLCAgOX0sCisgICAgeyAgMywgMjEsIDIyfSwgeyAgMywgMjEsIDIzfSwgeyAgMywgMjIsICAxfSwgeyAgMywgMjIsICAyfSwKKyAgICB7ICAzLCAyMiwgIDV9LCB7ICAzLCAyMiwgIDl9LCB7ICAzLCAyMiwgMTd9LCB7ICAzLCAyMiwgMTl9LAorICAgIHsgIDMsIDIyLCAyMn0sIHsgIDMsIDIzLCAgMX0sIHsgIDMsIDIzLCAgNX0sIHsgIDMsIDIzLCAgOX0sCisgICAgeyAgMywgMjMsIDE3fSwgeyAgMywgMjMsIDE5fSwgeyAgMywgMjYsICAxfSwgeyAgMywgMjcsICAxfSwKKyAgICB7ICAzLCAyNywgIDJ9LCB7ICAzLCAyNywgIDV9LCB7ICAzLCAyNywgIDd9LCB7ICAzLCAyNywgIDl9LAorICAgIHsgIDMsIDI3LCAxMX0sIHsgIDMsIDI3LCAxNn0sIHsgIDMsIDI3LCAxN30sIHsgIDMsIDI3LCAxOX0sCisgICAgeyAgMywgMjcsIDIxfSwgeyAgMywgMjcsIDIzfSwgeyAgMywgMjcsIDI3fSwgeyAgMywgMjksICAxfSwKKyAgICB7ICAzLCAyOSwgIDJ9LCB7ICAzLCAyOSwgIDV9LCB7ICAzLCAyOSwgIDl9LCB7ICAzLCAyOSwgMTd9LAorICAgIHsgIDMsIDI5LCAxOX0sIHsgIDMsIDI5LCAyMX0sIHsgIDMsIDI5LCAyM30sIHsgIDQsICAzLCAgMX0sCisgICAgeyAgNCwgIDMsICAyfSwgeyAgNCwgIDMsICAzfSwgeyAgNCwgIDMsICA1fSwgeyAgNCwgIDMsICA4fSwKKyAgICB7ICA0LCAgMywgIDl9LCB7ICA0LCAgMywgMTB9LCB7ICA0LCAgMywgMTF9LCB7ICA0LCAgMywgMTd9LAorICAgIHsgIDQsICAzLCAxOX0sIHsgIDQsICAzLCAyMX0sIHsgIDQsICAzLCAyMn0sIHsgIDQsICAzLCAyM30sCisgICAgeyAgNCwgIDMsIDI0fSwgeyAgNCwgIDMsIDI1fSwgeyAgNCwgIDMsIDI3fSwgeyAgNCwgIDMsIDI5fSwKKyAgICB7ICA0LCAgNCwgIDF9LCB7ICA0LCAgNCwgIDJ9LCB7ICA0LCAgNCwgIDV9LCB7ICA0LCAgNCwgIDl9LAorICAgIHsgIDQsICA0LCAxN30sIHsgIDQsICA0LCAxOX0sIHsgIDQsICA0LCAyMX0sIHsgIDQsICA0LCAyMn0sCisgICAgeyAgNCwgIDQsIDIzfSwgeyAgNCwgIDUsICAxfSwgeyAgNCwgIDUsICAyfSwgeyAgNCwgIDUsICA1fSwKKyAgICB7ICA0LCAgNSwgIDl9LCB7ICA0LCAgNSwgMTd9LCB7ICA0LCAgNSwgMjN9LCB7ICA0LCAgNywgIDF9LAorICAgIHsgIDQsICA3LCAgMn0sIHsgIDQsICA3LCAgNH0sIHsgIDQsICA3LCAgNX0sIHsgIDQsICA3LCAgOX0sCisgICAgeyAgNCwgIDcsIDExfSwgeyAgNCwgIDcsIDEyfSwgeyAgNCwgIDcsIDE3fSwgeyAgNCwgIDcsIDE5fSwKKyAgICB7ICA0LCAgNywgMjF9LCB7ICA0LCAgNywgMjJ9LCB7ICA0LCAgNywgMjN9LCB7ICA0LCAgNywgMjl9LAorICAgIHsgIDQsIDEwLCAgMX0sIHsgIDQsIDEwLCAgMn0sIHsgIDQsIDEwLCAgNX0sIHsgIDQsIDEwLCAgOX0sCisgICAgeyAgNCwgMTAsIDE3fSwgeyAgNCwgMTAsIDE5fSwgeyAgNCwgMTAsIDIxfSwgeyAgNCwgMTAsIDIyfSwKKyAgICB7ICA0LCAxMCwgMjN9LCB7ICA0LCAxMSwgIDF9LCB7ICA0LCAxMSwgIDJ9LCB7ICA0LCAxMSwgIDV9LAorICAgIHsgIDQsIDExLCAgOX0sIHsgIDQsIDExLCAxN30sIHsgIDQsIDExLCAxOX0sIHsgIDQsIDExLCAyMn0sCisgICAgeyAgNCwgMTEsIDIzfSwgeyAgNCwgMTEsIDI2fSwgeyAgNCwgMTIsICAxfSwgeyAgNCwgMTIsICA1fSwKKyAgICB7ICA0LCAxMywgIDF9LCB7ICA0LCAxMywgIDJ9LCB7ICA0LCAxMywgIDV9LCB7ICA0LCAxMywgIDl9LAorICAgIHsgIDQsIDEzLCAxMX0sIHsgIDQsIDEzLCAxN30sIHsgIDQsIDEzLCAxOX0sIHsgIDQsIDEzLCAyMX0sCisgICAgeyAgNCwgMTMsIDIzfSwgeyAgNCwgMTMsIDI4fSwgeyAgNCwgMTMsIDI5fSwgeyAgNCwgMTQsICAxfSwKKyAgICB7ICA0LCAxNCwgIDV9LCB7ICA0LCAxNCwgIDl9LCB7ICA0LCAxNCwgMjJ9LCB7ICA0LCAxOCwgIDF9LAorICAgIHsgIDQsIDE4LCAgNX0sIHsgIDQsIDE4LCAgOX0sIHsgIDQsIDE4LCAxN30sIHsgIDQsIDE4LCAxOX0sCisgICAgeyAgNCwgMTgsIDIxfSwgeyAgNCwgMTksICAxfSwgeyAgNCwgMTksICAyfSwgeyAgNCwgMTksICA1fSwKKyAgICB7ICA0LCAxOSwgIDl9LCB7ICA0LCAxOSwgMTl9LCB7ICA0LCAxOSwgMjF9LCB7ICA0LCAxOSwgMjN9LAorICAgIHsgIDQsIDIwLCAgMX0sIHsgIDQsIDIwLCAgMn0sIHsgIDQsIDIwLCAgNX0sIHsgIDQsIDIwLCAgOH0sCisgICAgeyAgNCwgMjAsICA5fSwgeyAgNCwgMjAsIDE3fSwgeyAgNCwgMjAsIDE5fSwgeyAgNCwgMjAsIDIxfSwKKyAgICB7ICA0LCAyMCwgMjN9LCB7ICA0LCAyMSwgIDF9LCB7ICA0LCAyMSwgMjJ9LCB7ICA0LCAyMiwgIDF9LAorICAgIHsgIDQsIDIzLCAgMX0sIHsgIDQsIDIzLCAgNX0sIHsgIDQsIDIzLCAgOX0sIHsgIDQsIDIzLCAxN30sCisgICAgeyAgNCwgMjMsIDE5fSwgeyAgNCwgMjYsICAxfSwgeyAgNCwgMjYsICAyfSwgeyAgNCwgMjYsICA5fSwKKyAgICB7ICA0LCAyNiwgMTd9LCB7ICA0LCAyNiwgMTl9LCB7ICA0LCAyNiwgMjN9LCB7ICA0LCAyNywgIDF9LAorICAgIHsgIDQsIDI3LCAgMn0sIHsgIDQsIDI3LCAgNX0sIHsgIDQsIDI3LCAgOX0sIHsgIDQsIDI3LCAxMH0sCisgICAgeyAgNCwgMjcsIDExfSwgeyAgNCwgMjcsIDE3fSwgeyAgNCwgMjcsIDE5fSwgeyAgNCwgMjcsIDIxfSwKKyAgICB7ICA0LCAyNywgMjN9LCB7ICA0LCAyNywgMjR9LCB7ICA0LCAyNywgMjh9LCB7ICA0LCAyOCwgIDF9LAorICAgIHsgIDQsIDI4LCAgNX0sIHsgIDQsIDI4LCAgOX0sIHsgIDQsIDI5LCAgMX0sIHsgIDQsIDI5LCAgMn0sCisgICAgeyAgNCwgMjksICA1fSwgeyAgNCwgMjksICA5fSwgeyAgNCwgMjksIDExfSwgeyAgNCwgMjksIDE3fSwKKyAgICB7ICA0LCAyOSwgMTl9LCB7ICA0LCAyOSwgMjF9LCB7ICA0LCAyOSwgMjN9LCB7ICA0LCAyOSwgMjh9LAorICAgIHsgIDUsICAzLCAgMX0sIHsgIDUsICAzLCAgMn0sIHsgIDUsICAzLCAgM30sIHsgIDUsICAzLCAgNX0sCisgICAgeyAgNSwgIDMsICA4fSwgeyAgNSwgIDMsICA5fSwgeyAgNSwgIDMsIDEwfSwgeyAgNSwgIDMsIDExfSwKKyAgICB7ICA1LCAgMywgMTJ9LCB7ICA1LCAgMywgMTZ9LCB7ICA1LCAgMywgMTd9LCB7ICA1LCAgMywgMTl9LAorICAgIHsgIDUsICAzLCAyMX0sIHsgIDUsICAzLCAyMn0sIHsgIDUsICAzLCAyM30sIHsgIDUsICAzLCAyNH0sCisgICAgeyAgNSwgIDMsIDI1fSwgeyAgNSwgIDMsIDI5fSwgeyAgNSwgIDQsICAxfSwgeyAgNSwgIDQsICAyfSwKKyAgICB7ICA1LCAgNCwgIDV9LCB7ICA1LCAgNCwgIDl9LCB7ICA1LCAgNCwgMTd9LCB7ICA1LCAgNCwgMTl9LAorICAgIHsgIDUsICA0LCAyMX0sIHsgIDUsICA0LCAyMn0sIHsgIDUsICA0LCAyM30sIHsgIDUsICA1LCAgMX0sCisgICAgeyAgNSwgIDcsICAxfSwgeyAgNSwgIDcsICAyfSwgeyAgNSwgIDcsICAzfSwgeyAgNSwgIDcsICA1fSwKKyAgICB7ICA1LCAgNywgIDh9LCB7ICA1LCAgNywgIDl9LCB7ICA1LCAgNywgMTF9LCB7ICA1LCAgNywgMTJ9LAorICAgIHsgIDUsICA3LCAxN30sIHsgIDUsICA3LCAxOX0sIHsgIDUsICA3LCAyMX0sIHsgIDUsICA3LCAyM30sCisgICAgeyAgNSwgIDcsIDI1fSwgeyAgNSwgIDcsIDI4fSwgeyAgNSwgMTAsICAxfSwgeyAgNSwgMTAsICAyfSwKKyAgICB7ICA1LCAxMCwgIDV9LCB7ICA1LCAxMCwgIDl9LCB7ICA1LCAxMCwgMTd9LCB7ICA1LCAxMCwgMTl9LAorICAgIHsgIDUsIDEwLCAyMX0sIHsgIDUsIDEwLCAyMn0sIHsgIDUsIDEwLCAyM30sIHsgIDUsIDExLCAgMX0sCisgICAgeyAgNSwgMTEsICA1fSwgeyAgNSwgMTEsICA5fSwgeyAgNSwgMTEsIDIyfSwgeyAgNSwgMTEsIDIzfSwKKyAgICB7ICA1LCAxMiwgIDF9LCB7ICA1LCAxMiwgIDV9LCB7ICA1LCAxMywgIDF9LCB7ICA1LCAxMywgIDJ9LAorICAgIHsgIDUsIDEzLCAgNX0sIHsgIDUsIDEzLCAgOH0sIHsgIDUsIDEzLCAgOX0sIHsgIDUsIDEzLCAxMX0sCisgICAgeyAgNSwgMTMsIDEzfSwgeyAgNSwgMTMsIDE3fSwgeyAgNSwgMTMsIDE5fSwgeyAgNSwgMTMsIDIxfSwKKyAgICB7ICA1LCAxMywgMjN9LCB7ICA1LCAxMywgMjV9LCB7ICA1LCAxMywgMjd9LCB7ICA1LCAxNCwgIDF9LAorICAgIHsgIDUsIDE0LCAgNX0sIHsgIDUsIDE0LCAgOX0sIHsgIDUsIDE1LCAgMX0sIHsgIDUsIDE1LCAyMn0sCisgICAgeyAgNSwgMTgsICAxfSwgeyAgNSwgMTgsICA1fSwgeyAgNSwgMTgsICA5fSwgeyAgNSwgMTgsIDE3fSwKKyAgICB7ICA1LCAxOCwgMTl9LCB7ICA1LCAxOCwgMjF9LCB7ICA1LCAxOSwgIDF9LCB7ICA1LCAyMCwgIDF9LAorICAgIHsgIDUsIDIwLCAgMn0sIHsgIDUsIDIwLCAgNX0sIHsgIDUsIDIwLCAgOX0sIHsgIDUsIDIwLCAxN30sCisgICAgeyAgNSwgMjAsIDE5fSwgeyAgNSwgMjAsIDIxfSwgeyAgNSwgMjAsIDIzfSwgeyAgNSwgMjEsICAxfSwKKyAgICB7ICA1LCAyMSwgMjJ9LCB7ICA1LCAyMiwgIDF9LCB7ICA1LCAyMiwgMjN9LCB7ICA1LCAyMywgIDF9LAorICAgIHsgIDUsIDIzLCAgNX0sIHsgIDUsIDIzLCAgOX0sIHsgIDUsIDIzLCAxOX0sIHsgIDUsIDIzLCAyMX0sCisgICAgeyAgNSwgMjMsIDIzfSwgeyAgNSwgMjYsICAxfSwgeyAgNSwgMjYsICA1fSwgeyAgNSwgMjYsICA5fSwKKyAgICB7ICA1LCAyNiwgMTd9LCB7ICA1LCAyNiwgMjN9LCB7ICA1LCAyNywgIDF9LCB7ICA1LCAyNywgIDJ9LAorICAgIHsgIDUsIDI3LCAgNX0sIHsgIDUsIDI3LCAgOH0sIHsgIDUsIDI3LCAgOX0sIHsgIDUsIDI3LCAxMX0sCisgICAgeyAgNSwgMjcsIDE3fSwgeyAgNSwgMjcsIDE5fSwgeyAgNSwgMjcsIDIxfSwgeyAgNSwgMjcsIDIzfSwKKyAgICB7ICA1LCAyOCwgIDF9LCB7ICA1LCAyOSwgIDF9LCB7ICA1LCAyOSwgIDJ9LCB7ICA1LCAyOSwgIDV9LAorICAgIHsgIDUsIDI5LCAgOH0sIHsgIDUsIDI5LCAgOX0sIHsgIDUsIDI5LCAxN30sIHsgIDUsIDI5LCAxOX0sCisgICAgeyAgNSwgMjksIDIxfSwgeyAgNSwgMjksIDIyfSwgeyAgNSwgMjksIDIzfSwgeyAgNSwgMjksIDI0fSwKKyAgICB7ICA2LCAgMywgIDF9LCB7ICA2LCAgMywgIDJ9LCB7ICA2LCAgMywgIDV9LCB7ICA2LCAgMywgIDl9LAorICAgIHsgIDYsICAzLCAxN30sIHsgIDYsICAzLCAxOX0sIHsgIDYsICAzLCAyMX0sIHsgIDYsICAzLCAyMn0sCisgICAgeyAgNiwgIDMsIDIzfSwgeyAgNiwgIDMsIDI5fSwgeyAgNiwgIDQsICAxfSwgeyAgNiwgIDQsICAyfSwKKyAgICB7ICA2LCAgNCwgIDV9LCB7ICA2LCAgNCwgIDl9LCB7ICA2LCAgNCwgMTd9LCB7ICA2LCAgNCwgMTl9LAorICAgIHsgIDYsICA0LCAyMX0sIHsgIDYsICA0LCAyMn0sIHsgIDYsICA0LCAyM30sIHsgIDYsICA3LCAgMX0sCisgICAgeyAgNiwgIDcsICAyfSwgeyAgNiwgIDcsICA1fSwgeyAgNiwgIDcsICA5fSwgeyAgNiwgIDcsIDExfSwKKyAgICB7ICA2LCAgNywgMTJ9LCB7ICA2LCAgNywgMTd9LCB7ICA2LCAgNywgMTl9LCB7ICA2LCAgNywgMjF9LAorICAgIHsgIDYsICA3LCAyMn0sIHsgIDYsICA3LCAyM30sIHsgIDYsICA3LCAyOX0sIHsgIDYsIDEwLCAgMX0sCisgICAgeyAgNiwgMTAsICAyfSwgeyAgNiwgMTAsICA1fSwgeyAgNiwgMTAsICA5fSwgeyAgNiwgMTAsIDE3fSwKKyAgICB7ICA2LCAxMCwgMTl9LCB7ICA2LCAxMCwgMjF9LCB7ICA2LCAxMCwgMjJ9LCB7ICA2LCAxMCwgMjN9LAorICAgIHsgIDYsIDExLCAgMX0sIHsgIDYsIDExLCAyMn0sIHsgIDYsIDEzLCAgMX0sIHsgIDYsIDEzLCAgMn0sCisgICAgeyAgNiwgMTMsICA1fSwgeyAgNiwgMTMsICA5fSwgeyAgNiwgMTMsIDIzfSwgeyAgNiwgMTQsICAxfSwKKyAgICB7ICA2LCAxNCwgIDl9LCB7ICA2LCAxNSwgIDF9LCB7ICA2LCAxOCwgIDF9LCB7ICA2LCAxOCwgIDV9LAorICAgIHsgIDYsIDIwLCAgMX0sIHsgIDYsIDIwLCAgMn0sIHsgIDYsIDIwLCAgNX0sIHsgIDYsIDIwLCAgOX0sCisgICAgeyAgNiwgMjAsIDE2fSwgeyAgNiwgMjAsIDE3fSwgeyAgNiwgMjAsIDIzfSwgeyAgNiwgMjIsICAxfSwKKyAgICB7ICA2LCAyMywgIDF9LCB7ICA2LCAyMywgIDV9LCB7ICA2LCAyMywgIDl9LCB7ICA2LCAyMywgMTd9LAorICAgIHsgIDYsIDIzLCAxOX0sIHsgIDYsIDIzLCAyM30sIHsgIDYsIDI3LCAgMX0sIHsgIDYsIDI3LCAgMn0sCisgICAgeyAgNiwgMjcsICA1fSwgeyAgNiwgMjcsICA4fSwgeyAgNiwgMjcsICA5fSwgeyAgNiwgMjcsIDE3fSwKKyAgICB7ICA2LCAyNywgMTl9LCB7ICA2LCAyNywgMjF9LCB7ICA2LCAyOCwgIDF9LCB7ICA2LCAyOCwgIDV9LAorICAgIHsgIDYsIDI4LCAgOX0sIHsgIDYsIDI4LCAxN30sIHsgIDYsIDI4LCAxOX0sIHsgIDYsIDI5LCAgMX0sCisgICAgeyAgNiwgMjksICA1fSwgeyAgNiwgMjksICA5fSwgeyAgNiwgMjksIDE3fSwgeyAgNiwgMjksIDE5fSwKKyAgICB7ICA2LCAyOSwgMjF9LCB7ICA2LCAyOSwgMjN9LCB7ICA3LCAgMywgIDF9LCB7ICA3LCAgMywgIDJ9LAorICAgIHsgIDcsICAzLCAgNX0sIHsgIDcsICAzLCAgOX0sIHsgIDcsICAzLCAxN30sIHsgIDcsICAzLCAxOX0sCisgICAgeyAgNywgIDMsIDIxfSwgeyAgNywgIDMsIDIyfSwgeyAgNywgIDMsIDIzfSwgeyAgNywgIDMsIDI0fSwKKyAgICB7ICA3LCAgMywgMjh9LCB7ICA3LCAgMywgMjl9LCB7ICA3LCAgNCwgIDF9LCB7ICA3LCAgNCwgIDJ9LAorICAgIHsgIDcsICA0LCAgNX0sIHsgIDcsICA0LCAgOX0sIHsgIDcsICA0LCAxN30sIHsgIDcsICA0LCAxOX0sCisgICAgeyAgNywgIDQsIDIxfSwgeyAgNywgIDQsIDIyfSwgeyAgNywgIDQsIDIzfSwgeyAgNywgIDUsICAxfSwKKyAgICB7ICA3LCAgNSwgIDJ9LCB7ICA3LCAgNSwgIDV9LCB7ICA3LCAgNSwgMjF9LCB7ICA3LCAgNSwgMjN9LAorICAgIHsgIDcsICA3LCAgMX0sIHsgIDcsICA3LCAgMn0sIHsgIDcsICA3LCAgNX0sIHsgIDcsICA3LCAgOX0sCisgICAgeyAgNywgIDcsIDE3fSwgeyAgNywgIDcsIDE5fSwgeyAgNywgIDcsIDIxfSwgeyAgNywgIDcsIDIyfSwKKyAgICB7ICA3LCAgNywgMjN9LCB7ICA3LCAgNywgMjl9LCB7ICA3LCAxMCwgIDF9LCB7ICA3LCAxMCwgIDJ9LAorICAgIHsgIDcsIDEwLCAgNX0sIHsgIDcsIDEwLCAgOX0sIHsgIDcsIDEwLCAxN30sIHsgIDcsIDEwLCAxOX0sCisgICAgeyAgNywgMTAsIDIxfSwgeyAgNywgMTAsIDIzfSwgeyAgNywgMTEsICAxfSwgeyAgNywgMTEsICAyfSwKKyAgICB7ICA3LCAxMSwgIDV9LCB7ICA3LCAxMSwgIDl9LCB7ICA3LCAxMSwgMTd9LCB7ICA3LCAxMSwgMTl9LAorICAgIHsgIDcsIDExLCAyMX0sIHsgIDcsIDExLCAyMn0sIHsgIDcsIDExLCAyM30sIHsgIDcsIDEyLCAgMX0sCisgICAgeyAgNywgMTIsICA1fSwgeyAgNywgMTIsIDE5fSwgeyAgNywgMTIsIDIxfSwgeyAgNywgMTMsICAxfSwKKyAgICB7ICA3LCAxMywgIDJ9LCB7ICA3LCAxMywgIDV9LCB7ICA3LCAxMywgIDl9LCB7ICA3LCAxMywgMTd9LAorICAgIHsgIDcsIDEzLCAxOX0sIHsgIDcsIDEzLCAyMX0sIHsgIDcsIDEzLCAyM30sIHsgIDcsIDE0LCAgMX0sCisgICAgeyAgNywgMTQsICA1fSwgeyAgNywgMTQsIDIzfSwgeyAgNywgMTUsIDIyfSwgeyAgNywgMTgsICAxfSwKKyAgICB7ICA3LCAxOCwgIDV9LCB7ICA3LCAxOCwgIDl9LCB7ICA3LCAxOCwgMTd9LCB7ICA3LCAxOCwgMTl9LAorICAgIHsgIDcsIDE4LCAyMX0sIHsgIDcsIDE4LCAyM30sIHsgIDcsIDE5LCAgMX0sIHsgIDcsIDE5LCAgNX0sCisgICAgeyAgNywgMTksICA5fSwgeyAgNywgMTksIDE5fSwgeyAgNywgMTksIDIxfSwgeyAgNywgMTksIDIzfSwKKyAgICB7ICA3LCAyMCwgIDF9LCB7ICA3LCAyMCwgIDJ9LCB7ICA3LCAyMCwgIDV9LCB7ICA3LCAyMCwgIDl9LAorICAgIHsgIDcsIDIwLCAxN30sIHsgIDcsIDIwLCAxOX0sIHsgIDcsIDIwLCAyMX0sIHsgIDcsIDIwLCAyM30sCisgICAgeyAgNywgMjEsICAxfSwgeyAgNywgMjEsIDIyfSwgeyAgNywgMjIsICAxfSwgeyAgNywgMjMsICAxfSwKKyAgICB7ICA3LCAyMywgIDJ9LCB7ICA3LCAyMywgIDV9LCB7ICA3LCAyMywgIDl9LCB7ICA3LCAyMywgMTd9LAorICAgIHsgIDcsIDIzLCAyMX0sIHsgIDcsIDIzLCAyM30sIHsgIDcsIDI2LCAgMX0sIHsgIDcsIDI2LCAgMn0sCisgICAgeyAgNywgMjYsICA1fSwgeyAgNywgMjYsICA5fSwgeyAgNywgMjYsIDE3fSwgeyAgNywgMjYsIDE5fSwKKyAgICB7ICA3LCAyNiwgMjF9LCB7ICA3LCAyNiwgMjN9LCB7ICA3LCAyNywgIDF9LCB7ICA3LCAyNywgIDJ9LAorICAgIHsgIDcsIDI3LCAgNX0sIHsgIDcsIDI3LCAgOX0sIHsgIDcsIDI3LCAxN30sIHsgIDcsIDI3LCAxOX0sCisgICAgeyAgNywgMjcsIDIxfSwgeyAgNywgMjcsIDIzfSwgeyAgNywgMjcsIDI0fSwgeyAgNywgMjcsIDI3fSwKKyAgICB7ICA3LCAyNywgMjh9LCB7ICA3LCAyOSwgIDF9LCB7ICA3LCAyOSwgIDJ9LCB7ICA3LCAyOSwgIDV9LAorICAgIHsgIDcsIDI5LCAgOX0sIHsgIDcsIDI5LCAxN30sIHsgIDcsIDI5LCAxOX0sIHsgIDcsIDI5LCAyMX0sCisgICAgeyAgNywgMjksIDIzfSwgeyAgOCwgIDMsICAxfSwgeyAgOCwgIDMsICAyfSwgeyAgOCwgIDMsICA1fSwKKyAgICB7ICA4LCAgMywgIDd9LCB7ICA4LCAgMywgIDh9LCB7ICA4LCAgMywgIDl9LCB7ICA4LCAgMywgMTB9LAorICAgIHsgIDgsICAzLCAxMX0sIHsgIDgsICAzLCAxN30sIHsgIDgsICAzLCAxOX0sIHsgIDgsICAzLCAyMX0sCisgICAgeyAgOCwgIDMsIDIzfSwgeyAgOCwgIDMsIDI0fSwgeyAgOCwgIDMsIDI3fSwgeyAgOCwgIDMsIDI5fSwKKyAgICB7ICA4LCAgNCwgIDF9LCB7ICA4LCAgNCwgIDJ9LCB7ICA4LCAgNCwgIDV9LCB7ICA4LCAgNCwgIDl9LAorICAgIHsgIDgsICA0LCAxN30sIHsgIDgsICA0LCAxOX0sIHsgIDgsICA0LCAyMX0sIHsgIDgsICA0LCAyMn0sCisgICAgeyAgOCwgIDQsIDIzfSwgeyAgOCwgIDQsIDI0fSwgeyAgOCwgIDUsICAxfSwgeyAgOCwgIDUsICAyfSwKKyAgICB7ICA4LCAgNSwgIDl9LCB7ICA4LCAgNSwgMjN9LCB7ICA4LCAgNywgIDF9LCB7ICA4LCAgNywgIDJ9LAorICAgIHsgIDgsICA3LCAgNX0sIHsgIDgsICA3LCAgOX0sIHsgIDgsICA3LCAxMX0sIHsgIDgsICA3LCAxN30sCisgICAgeyAgOCwgIDcsIDE5fSwgeyAgOCwgIDcsIDIxfSwgeyAgOCwgIDcsIDIzfSwgeyAgOCwgIDcsIDI0fSwKKyAgICB7ICA4LCAgNywgMjl9LCB7ICA4LCAxMCwgIDF9LCB7ICA4LCAxMCwgIDJ9LCB7ICA4LCAxMCwgIDV9LAorICAgIHsgIDgsIDEwLCAgOX0sIHsgIDgsIDEwLCAxN30sIHsgIDgsIDEwLCAxOX0sIHsgIDgsIDEwLCAyMX0sCisgICAgeyAgOCwgMTAsIDIyfSwgeyAgOCwgMTAsIDIzfSwgeyAgOCwgMTEsICAxfSwgeyAgOCwgMTEsICAyfSwKKyAgICB7ICA4LCAxMSwgIDV9LCB7ICA4LCAxMSwgIDl9LCB7ICA4LCAxMSwgMjF9LCB7ICA4LCAxMSwgMjJ9LAorICAgIHsgIDgsIDExLCAyM30sIHsgIDgsIDExLCAyNX0sIHsgIDgsIDEyLCAgMX0sIHsgIDgsIDEzLCAgMX0sCisgICAgeyAgOCwgMTMsICAyfSwgeyAgOCwgMTMsICA0fSwgeyAgOCwgMTMsICA1fSwgeyAgOCwgMTMsICA5fSwKKyAgICB7ICA4LCAxMywgMTF9LCB7ICA4LCAxMywgMTd9LCB7ICA4LCAxMywgMTl9LCB7ICA4LCAxMywgMjF9LAorICAgIHsgIDgsIDEzLCAyM30sIHsgIDgsIDE0LCAgMX0sIHsgIDgsIDE0LCAgNX0sIHsgIDgsIDE0LCAyMn0sCisgICAgeyAgOCwgMTQsIDIzfSwgeyAgOCwgMTgsICAxfSwgeyAgOCwgMTgsICA1fSwgeyAgOCwgMTgsICA5fSwKKyAgICB7ICA4LCAxOCwgMTl9LCB7ICA4LCAxOCwgMjF9LCB7ICA4LCAxOCwgMjN9LCB7ICA4LCAxOSwgIDF9LAorICAgIHsgIDgsIDE5LCAgNX0sIHsgIDgsIDE5LCAgOX0sIHsgIDgsIDE5LCAxOX0sIHsgIDgsIDE5LCAyMX0sCisgICAgeyAgOCwgMjAsICAxfSwgeyAgOCwgMjAsICAyfSwgeyAgOCwgMjAsICAzfSwgeyAgOCwgMjAsICA1fSwKKyAgICB7ICA4LCAyMCwgIDh9LCB7ICA4LCAyMCwgIDl9LCB7ICA4LCAyMCwgMTB9LCB7ICA4LCAyMCwgMTF9LAorICAgIHsgIDgsIDIwLCAxN30sIHsgIDgsIDIwLCAxOX0sIHsgIDgsIDIwLCAyMX0sIHsgIDgsIDIwLCAyM30sCisgICAgeyAgOCwgMjAsIDI3fSwgeyAgOCwgMjAsIDI5fSwgeyAgOCwgMjEsICAxfSwgeyAgOCwgMjEsICA1fSwKKyAgICB7ICA4LCAyMSwgIDl9LCB7ICA4LCAyMSwgMTl9LCB7ICA4LCAyMSwgMjF9LCB7ICA4LCAyMiwgIDF9LAorICAgIHsgIDgsIDIzLCAgMX0sIHsgIDgsIDIzLCAgNX0sIHsgIDgsIDIzLCAgOX0sIHsgIDgsIDI2LCAgMX0sCisgICAgeyAgOCwgMjYsICA1fSwgeyAgOCwgMjYsICA5fSwgeyAgOCwgMjYsIDE3fSwgeyAgOCwgMjYsIDIxfSwKKyAgICB7ICA4LCAyNywgIDF9LCB7ICA4LCAyNywgIDV9LCB7ICA4LCAyNywgIDl9LCB7ICA4LCAyNywgMTd9LAorICAgIHsgIDgsIDI3LCAyMX0sIHsgIDgsIDI5LCAgMX0sIHsgIDgsIDI5LCAgMn0sIHsgIDgsIDI5LCAgNX0sCisgICAgeyAgOCwgMjksICA4fSwgeyAgOCwgMjksICA5fSwgeyAgOCwgMjksIDExfSwgeyAgOCwgMjksIDE3fSwKKyAgICB7ICA4LCAyOSwgMTl9LCB7ICA4LCAyOSwgMjF9LCB7ICA4LCAyOSwgMjJ9LCB7ICA4LCAyOSwgMjN9LAorICAgIHsgIDgsIDI5LCAyNX0sIHsgIDgsIDI5LCAyN30sIHsgIDksICAzLCAgMX0sIHsgIDksICAzLCAgMn0sCisgICAgeyAgOSwgIDMsICAzfSwgeyAgOSwgIDMsICA0fSwgeyAgOSwgIDMsICA1fSwgeyAgOSwgIDMsICA4fSwKKyAgICB7ICA5LCAgMywgIDl9LCB7ICA5LCAgMywgMTB9LCB7ICA5LCAgMywgMTF9LCB7ICA5LCAgMywgMTJ9LAorICAgIHsgIDksICAzLCAxN30sIHsgIDksICAzLCAxOX0sIHsgIDksICAzLCAyMX0sIHsgIDksICAzLCAyM30sCisgICAgeyAgOSwgIDMsIDI3fSwgeyAgOSwgIDQsICAxfSwgeyAgOSwgIDQsICAyfSwgeyAgOSwgIDQsICA1fSwKKyAgICB7ICA5LCAgNCwgIDl9LCB7ICA5LCAgNCwgMTd9LCB7ICA5LCAgNCwgMTl9LCB7ICA5LCAgNCwgMjF9LAorICAgIHsgIDksICA0LCAyMn0sIHsgIDksICA0LCAyM30sIHsgIDksICA0LCAyN30sIHsgIDksICA1LCAgMX0sCisgICAgeyAgOSwgIDUsICAyfSwgeyAgOSwgIDUsICA1fSwgeyAgOSwgIDUsIDE5fSwgeyAgOSwgIDcsICAxfSwKKyAgICB7ICA5LCAgNywgIDJ9LCB7ICA5LCAgNywgIDV9LCB7ICA5LCAgNywgIDh9LCB7ICA5LCAgNywgIDl9LAorICAgIHsgIDksICA3LCAxMX0sIHsgIDksICA3LCAxN30sIHsgIDksICA3LCAxOX0sIHsgIDksICA3LCAyMX0sCisgICAgeyAgOSwgIDcsIDIzfSwgeyAgOSwgIDcsIDI0fSwgeyAgOSwgMTAsICAxfSwgeyAgOSwgMTAsICAyfSwKKyAgICB7ICA5LCAxMCwgIDV9LCB7ICA5LCAxMCwgIDh9LCB7ICA5LCAxMCwgIDl9LCB7ICA5LCAxMCwgMTd9LAorICAgIHsgIDksIDEwLCAxOX0sIHsgIDksIDEwLCAyMX0sIHsgIDksIDEwLCAyMn0sIHsgIDksIDEwLCAyM30sCisgICAgeyAgOSwgMTEsICAxfSwgeyAgOSwgMTEsICAyfSwgeyAgOSwgMTEsICA1fSwgeyAgOSwgMTEsICA5fSwKKyAgICB7ICA5LCAxMSwgMTl9LCB7ICA5LCAxMSwgMjF9LCB7ICA5LCAxMSwgMjJ9LCB7ICA5LCAxMSwgMjN9LAorICAgIHsgIDksIDExLCAyN30sIHsgIDksIDEyLCAgMX0sIHsgIDksIDEyLCAgNX0sIHsgIDksIDEzLCAgMX0sCisgICAgeyAgOSwgMTMsICAyfSwgeyAgOSwgMTMsICAzfSwgeyAgOSwgMTMsICA1fSwgeyAgOSwgMTMsICA5fSwKKyAgICB7ICA5LCAxMywgMTd9LCB7ICA5LCAxMywgMTl9LCB7ICA5LCAxMywgMjF9LCB7ICA5LCAxMywgMjN9LAorICAgIHsgIDksIDE0LCAgMX0sIHsgIDksIDE0LCAgNX0sIHsgIDksIDE0LCAyMn0sIHsgIDksIDE1LCAgMX0sCisgICAgeyAgOSwgMTUsIDIyfSwgeyAgOSwgMTgsICAxfSwgeyAgOSwgMTgsICAyfSwgeyAgOSwgMTgsICA1fSwKKyAgICB7ICA5LCAxOCwgIDl9LCB7ICA5LCAxOCwgMTd9LCB7ICA5LCAxOCwgMTl9LCB7ICA5LCAxOSwgIDF9LAorICAgIHsgIDksIDE5LCAgNX0sIHsgIDksIDIwLCAgMX0sIHsgIDksIDIwLCAgMn0sIHsgIDksIDIwLCAgNX0sCisgICAgeyAgOSwgMjAsICA4fSwgeyAgOSwgMjAsICA5fSwgeyAgOSwgMjAsIDEwfSwgeyAgOSwgMjAsIDExfSwKKyAgICB7ICA5LCAyMCwgMTd9LCB7ICA5LCAyMCwgMTl9LCB7ICA5LCAyMCwgMjF9LCB7ICA5LCAyMCwgMjN9LAorICAgIHsgIDksIDIwLCAyN30sIHsgIDksIDIwLCAyOH0sIHsgIDksIDIxLCAgMX0sIHsgIDksIDIxLCAgOX0sCisgICAgeyAgOSwgMjEsIDIyfSwgeyAgOSwgMjIsICAxfSwgeyAgOSwgMjMsICAxfSwgeyAgOSwgMjMsICAyfSwKKyAgICB7ICA5LCAyMywgIDV9LCB7ICA5LCAyMywgIDl9LCB7ICA5LCAyMywgMjN9LCB7ICA5LCAyNiwgIDF9LAorICAgIHsgIDksIDI2LCAgNX0sIHsgIDksIDI2LCAgOX0sIHsgIDksIDI2LCAxN30sIHsgIDksIDI2LCAyMX0sCisgICAgeyAgOSwgMjYsIDIzfSwgeyAgOSwgMjcsICAxfSwgeyAgOSwgMjcsICAyfSwgeyAgOSwgMjcsICA1fSwKKyAgICB7ICA5LCAyNywgIDl9LCB7ICA5LCAyNywgMTd9LCB7ICA5LCAyNywgMTl9LCB7ICA5LCAyNywgMjF9LAorICAgIHsgIDksIDI5LCAgMX0sIHsgIDksIDI5LCAgMn0sIHsgIDksIDI5LCAgNX0sIHsgIDksIDI5LCAgOX0sCisgICAgeyAgOSwgMjksIDExfSwgeyAgOSwgMjksIDE3fSwgeyAgOSwgMjksIDE5fSwgeyAgOSwgMjksIDIxfSwKKyAgICB7ICA5LCAyOSwgMjN9LCB7ICA5LCAyOSwgMjR9LCB7ICA5LCAyOSwgMjV9LCB7IDEwLCAgMywgIDF9LAorICAgIHsgMTAsICAzLCAgMn0sIHsgMTAsICAzLCAgNX0sIHsgMTAsICAzLCAgOX0sIHsgMTAsICAzLCAxMX0sCisgICAgeyAxMCwgIDMsIDE3fSwgeyAxMCwgIDMsIDE5fSwgeyAxMCwgIDMsIDIxfSwgeyAxMCwgIDMsIDIyfSwKKyAgICB7IDEwLCAgMywgMjN9LCB7IDEwLCAgMywgMjl9LCB7IDEwLCAgNCwgIDF9LCB7IDEwLCAgNCwgIDJ9LAorICAgIHsgMTAsICA0LCAgNX0sIHsgMTAsICA0LCAgOX0sIHsgMTAsICA0LCAxN30sIHsgMTAsICA0LCAxOX0sCisgICAgeyAxMCwgIDQsIDIxfSwgeyAxMCwgIDQsIDIyfSwgeyAxMCwgIDQsIDIzfSwgeyAxMCwgIDUsICAxfSwKKyAgICB7IDEwLCAgNSwgIDJ9LCB7IDEwLCAgNSwgMTd9LCB7IDEwLCAgNywgIDF9LCB7IDEwLCAgNywgIDJ9LAorICAgIHsgMTAsICA3LCAgNX0sIHsgMTAsICA3LCAgOH0sIHsgMTAsICA3LCAgOX0sIHsgMTAsICA3LCAxN30sCisgICAgeyAxMCwgIDcsIDIxfSwgeyAxMCwgIDcsIDIyfSwgeyAxMCwgIDcsIDIzfSwgeyAxMCwgMTAsICAxfSwKKyAgICB7IDEwLCAxMCwgMjN9LCB7IDEwLCAxMSwgIDF9LCB7IDEwLCAxMSwgIDJ9LCB7IDEwLCAxMSwgMTd9LAorICAgIHsgMTAsIDExLCAxOX0sIHsgMTAsIDExLCAyMX0sIHsgMTAsIDExLCAyMn0sIHsgMTAsIDExLCAyM30sCisgICAgeyAxMCwgMTMsICAxfSwgeyAxMCwgMTMsICAyfSwgeyAxMCwgMTMsICA1fSwgeyAxMCwgMTMsICA5fSwKKyAgICB7IDEwLCAxMywgMTd9LCB7IDEwLCAxMywgMTl9LCB7IDEwLCAxMywgMjN9LCB7IDEwLCAxOCwgIDF9LAorICAgIHsgMTAsIDE5LCAgMX0sIHsgMTAsIDE5LCAyM30sIHsgMTAsIDIwLCAgMX0sIHsgMTAsIDIwLCAgMn0sCisgICAgeyAxMCwgMjAsICA1fSwgeyAxMCwgMjAsICA5fSwgeyAxMCwgMjAsIDE3fSwgeyAxMCwgMjAsIDIxfSwKKyAgICB7IDEwLCAyMCwgMjN9LCB7IDEwLCAyNiwgIDF9LCB7IDEwLCAyNiwgMjN9LCB7IDEwLCAyNywgIDF9LAorICAgIHsgMTAsIDI3LCAgNX0sIHsgMTAsIDI3LCAgOX0sIHsgMTAsIDI3LCAxN30sIHsgMTAsIDI3LCAxOX0sCisgICAgeyAxMCwgMjksICAxfSwgeyAxMCwgMjksICAyfSwgeyAxMCwgMjksICA1fSwgeyAxMCwgMjksICA5fSwKKyAgICB7IDEwLCAyOSwgMTd9LCB7IDEwLCAyOSwgMTl9LCB7IDEwLCAyOSwgMjF9LCB7IDEwLCAyOSwgMjN9LAorICAgIHsgMTEsICAzLCAgMX0sIHsgMTEsICAzLCAgMn0sIHsgMTEsICAzLCAgNH0sIHsgMTEsICAzLCAgNX0sCisgICAgeyAxMSwgIDMsICA4fSwgeyAxMSwgIDMsICA5fSwgeyAxMSwgIDMsIDEwfSwgeyAxMSwgIDMsIDExfSwKKyAgICB7IDExLCAgMywgMTd9LCB7IDExLCAgMywgMTl9LCB7IDExLCAgMywgMjF9LCB7IDExLCAgMywgMjJ9LAorICAgIHsgMTEsICAzLCAyM30sIHsgMTEsICAzLCAyN30sIHsgMTEsICA0LCAgMX0sIHsgMTEsICA0LCAgMn0sCisgICAgeyAxMSwgIDQsICA1fSwgeyAxMSwgIDQsICA5fSwgeyAxMSwgIDQsIDE3fSwgeyAxMSwgIDQsIDE5fSwKKyAgICB7IDExLCAgNCwgMjF9LCB7IDExLCAgNCwgMjJ9LCB7IDExLCAgNCwgMjN9LCB7IDExLCAgNSwgIDF9LAorICAgIHsgMTEsICA1LCAgMn0sIHsgMTEsICA1LCAgNX0sIHsgMTEsICA1LCAgOX0sIHsgMTEsICA1LCAxN30sCisgICAgeyAxMSwgIDUsIDE5fSwgeyAxMSwgIDUsIDIxfSwgeyAxMSwgIDUsIDIzfSwgeyAxMSwgIDYsICAxfSwKKyAgICB7IDExLCAgNiwgIDV9LCB7IDExLCAgNiwgIDl9LCB7IDExLCAgNiwgMTd9LCB7IDExLCAgNiwgMjN9LAorICAgIHsgMTEsICA3LCAgMX0sIHsgMTEsICA3LCAgMn0sIHsgMTEsICA3LCAgM30sIHsgMTEsICA3LCAgNH0sCisgICAgeyAxMSwgIDcsICA1fSwgeyAxMSwgIDcsICA4fSwgeyAxMSwgIDcsICA5fSwgeyAxMSwgIDcsIDExfSwKKyAgICB7IDExLCAgNywgMTJ9LCB7IDExLCAgNywgMTd9LCB7IDExLCAgNywgMTl9LCB7IDExLCAgNywgMjF9LAorICAgIHsgMTEsICA3LCAyMn0sIHsgMTEsICA3LCAyM30sIHsgMTEsICA3LCAyOH0sIHsgMTEsIDEwLCAgMX0sCisgICAgeyAxMSwgMTAsICAyfSwgeyAxMSwgMTAsICA1fSwgeyAxMSwgMTAsICA5fSwgeyAxMSwgMTAsIDE3fSwKKyAgICB7IDExLCAxMCwgMTl9LCB7IDExLCAxMCwgMjF9LCB7IDExLCAxMCwgMjJ9LCB7IDExLCAxMCwgMjN9LAorICAgIHsgMTEsIDExLCAgMX0sIHsgMTEsIDExLCAgMn0sIHsgMTEsIDExLCAgNX0sIHsgMTEsIDExLCAgOX0sCisgICAgeyAxMSwgMTEsIDE3fSwgeyAxMSwgMTEsIDE5fSwgeyAxMSwgMTEsIDIxfSwgeyAxMSwgMTEsIDIyfSwKKyAgICB7IDExLCAxMSwgMjN9LCB7IDExLCAxMiwgIDF9LCB7IDExLCAxMiwgIDV9LCB7IDExLCAxMiwgIDl9LAorICAgIHsgMTEsIDEyLCAyM30sIHsgMTEsIDEzLCAgMX0sIHsgMTEsIDEzLCAgMn0sIHsgMTEsIDEzLCAgM30sCisgICAgeyAxMSwgMTMsICA1fSwgeyAxMSwgMTMsICA5fSwgeyAxMSwgMTMsIDExfSwgeyAxMSwgMTMsIDE3fSwKKyAgICB7IDExLCAxMywgMTl9LCB7IDExLCAxMywgMjF9LCB7IDExLCAxMywgMjN9LCB7IDExLCAxMywgMjd9LAorICAgIHsgMTEsIDE0LCAgMX0sIHsgMTEsIDE0LCAgMn0sIHsgMTEsIDE0LCAgNX0sIHsgMTEsIDE0LCAgOX0sCisgICAgeyAxMSwgMTQsIDIzfSwgeyAxMSwgMTUsICAxfSwgeyAxMSwgMTUsICA1fSwgeyAxMSwgMTUsICA5fSwKKyAgICB7IDExLCAxNSwgMTd9LCB7IDExLCAxNSwgMjF9LCB7IDExLCAxNSwgMjJ9LCB7IDExLCAxOCwgIDF9LAorICAgIHsgMTEsIDE4LCAgNX0sIHsgMTEsIDE4LCAgOX0sIHsgMTEsIDE4LCAxN30sIHsgMTEsIDE4LCAxOX0sCisgICAgeyAxMSwgMTgsIDIxfSwgeyAxMSwgMTksICAxfSwgeyAxMSwgMTksICAyfSwgeyAxMSwgMTksICA1fSwKKyAgICB7IDExLCAxOSwgIDl9LCB7IDExLCAxOSwgMTd9LCB7IDExLCAxOSwgMTl9LCB7IDExLCAxOSwgMjF9LAorICAgIHsgMTEsIDE5LCAyM30sIHsgMTEsIDIwLCAgMX0sIHsgMTEsIDIwLCAgMn0sIHsgMTEsIDIwLCAgNX0sCisgICAgeyAxMSwgMjAsICA4fSwgeyAxMSwgMjAsICA5fSwgeyAxMSwgMjAsIDE3fSwgeyAxMSwgMjAsIDE5fSwKKyAgICB7IDExLCAyMCwgMjF9LCB7IDExLCAyMCwgMjN9LCB7IDExLCAyMCwgMjV9LCB7IDExLCAyMCwgMjd9LAorICAgIHsgMTEsIDIwLCAyOH0sIHsgMTEsIDIxLCAgMX0sIHsgMTEsIDIxLCAyMn0sIHsgMTEsIDIyLCAgMX0sCisgICAgeyAxMSwgMjIsICAyfSwgeyAxMSwgMjIsICA1fSwgeyAxMSwgMjIsICA5fSwgeyAxMSwgMjIsIDE3fSwKKyAgICB7IDExLCAyMiwgMjN9LCB7IDExLCAyMywgIDF9LCB7IDExLCAyMywgIDJ9LCB7IDExLCAyMywgIDV9LAorICAgIHsgMTEsIDIzLCAgOX0sIHsgMTEsIDIzLCAxN30sIHsgMTEsIDIzLCAxOX0sIHsgMTEsIDIzLCAyMX0sCisgICAgeyAxMSwgMjMsIDIzfSwgeyAxMSwgMjYsICAxfSwgeyAxMSwgMjYsICAyfSwgeyAxMSwgMjYsICA5fSwKKyAgICB7IDExLCAyNiwgMTd9LCB7IDExLCAyNiwgMjF9LCB7IDExLCAyNiwgMjN9LCB7IDExLCAyNywgIDF9LAorICAgIHsgMTEsIDI3LCAgMn0sIHsgMTEsIDI3LCAgNX0sIHsgMTEsIDI3LCAgOX0sIHsgMTEsIDI3LCAxMH0sCisgICAgeyAxMSwgMjcsIDE3fSwgeyAxMSwgMjcsIDE5fSwgeyAxMSwgMjcsIDIxfSwgeyAxMSwgMjcsIDIzfSwKKyAgICB7IDExLCAyOSwgIDF9LCB7IDExLCAyOSwgIDJ9LCB7IDExLCAyOSwgIDV9LCB7IDExLCAyOSwgIDh9LAorICAgIHsgMTEsIDI5LCAgOX0sIHsgMTEsIDI5LCAxNn0sIHsgMTEsIDI5LCAxN30sIHsgMTEsIDI5LCAxOX0sCisgICAgeyAxMSwgMjksIDIxfSwgeyAxMSwgMjksIDIzfSwgeyAxMSwgMjksIDI4fSwgeyAxMiwgIDMsICAxfSwKKyAgICB7IDEyLCAgMywgIDJ9LCB7IDEyLCAgMywgIDR9LCB7IDEyLCAgMywgIDV9LCB7IDEyLCAgMywgIDl9LAorICAgIHsgMTIsICAzLCAxN30sIHsgMTIsICAzLCAxOX0sIHsgMTIsICAzLCAyMn0sIHsgMTIsICAzLCAyM30sCisgICAgeyAxMiwgIDMsIDI5fSwgeyAxMiwgIDQsICAxfSwgeyAxMiwgIDQsICAyfSwgeyAxMiwgIDQsICA1fSwKKyAgICB7IDEyLCAgNCwgIDl9LCB7IDEyLCAgNCwgMTd9LCB7IDEyLCAgNCwgMTl9LCB7IDEyLCAgNCwgMjJ9LAorICAgIHsgMTIsICA0LCAyM30sIHsgMTIsICA1LCAyM30sIHsgMTIsICA3LCAgMX0sIHsgMTIsICA3LCAgMn0sCisgICAgeyAxMiwgIDcsICA1fSwgeyAxMiwgIDcsICA5fSwgeyAxMiwgIDcsIDExfSwgeyAxMiwgIDcsIDE3fSwKKyAgICB7IDEyLCAgNywgMTl9LCB7IDEyLCAgNywgMjJ9LCB7IDEyLCAgNywgMjN9LCB7IDEyLCAxMCwgIDF9LAorICAgIHsgMTIsIDEwLCAgNX0sIHsgMTIsIDEwLCAgOX0sIHsgMTIsIDEyLCAgNX0sIHsgMTIsIDEzLCAgMX0sCisgICAgeyAxMiwgMTMsICAyfSwgeyAxMiwgMTMsICA1fSwgeyAxMiwgMTMsICA4fSwgeyAxMiwgMTMsICA5fSwKKyAgICB7IDEyLCAxMywgMTF9LCB7IDEyLCAxMywgMTd9LCB7IDEyLCAxMywgMTl9LCB7IDEyLCAxMywgMjN9LAorICAgIHsgMTIsIDE0LCAgMX0sIHsgMTIsIDE0LCAgMn0sIHsgMTIsIDE0LCAgNX0sIHsgMTIsIDE0LCAyMn0sCisgICAgeyAxMiwgMTUsICAxfSwgeyAxMiwgMTUsIDIyfSwgeyAxMiwgMTgsICAxfSwgeyAxMiwgMTgsICA1fSwKKyAgICB7IDEyLCAxOCwgIDl9LCB7IDEyLCAxOCwgMTd9LCB7IDEyLCAxOCwgMTl9LCB7IDEyLCAxOSwgIDF9LAorICAgIHsgMTIsIDIwLCAgMX0sIHsgMTIsIDIwLCAgMn0sIHsgMTIsIDIwLCAgNX0sIHsgMTIsIDIwLCAgOX0sCisgICAgeyAxMiwgMjAsIDE3fSwgeyAxMiwgMjAsIDE5fSwgeyAxMiwgMjAsIDIzfSwgeyAxMiwgMjEsICAxfSwKKyAgICB7IDEyLCAyMSwgMjJ9LCB7IDEyLCAyMiwgIDF9LCB7IDEyLCAyMywgIDF9LCB7IDEyLCAyMywgIDV9LAorICAgIHsgMTIsIDI2LCAyM30sIHsgMTIsIDI3LCAgMX0sIHsgMTIsIDI3LCAgMn0sIHsgMTIsIDI3LCAgNX0sCisgICAgeyAxMiwgMjcsICA5fSwgeyAxMiwgMjcsIDExfSwgeyAxMiwgMjcsIDE2fSwgeyAxMiwgMjcsIDE3fSwKKyAgICB7IDEyLCAyNywgMTl9LCB7IDEyLCAyOCwgIDF9LCB7IDEyLCAyOCwgIDV9LCB7IDEyLCAyOCwgIDl9LAorICAgIHsgMTIsIDI4LCAxN30sIHsgMTIsIDI5LCAgMX0sIHsgMTIsIDI5LCAgMn0sIHsgMTIsIDI5LCAgNX0sCisgICAgeyAxMiwgMjksICA5fSwgeyAxMiwgMjksIDE3fSwgeyAxMiwgMjksIDE5fSwgeyAxMiwgMjksIDIxfSwKKyAgICB7IDEyLCAyOSwgMjN9LCB7IDEzLCAgMywgIDF9LCB7IDEzLCAgMywgIDJ9LCB7IDEzLCAgMywgIDV9LAorICAgIHsgMTMsICAzLCAgNn0sIHsgMTMsICAzLCAgN30sIHsgMTMsICAzLCAgOX0sIHsgMTMsICAzLCAxMH0sCisgICAgeyAxMywgIDMsIDExfSwgeyAxMywgIDMsIDE2fSwgeyAxMywgIDMsIDE3fSwgeyAxMywgIDMsIDE5fSwKKyAgICB7IDEzLCAgMywgMjF9LCB7IDEzLCAgMywgMjJ9LCB7IDEzLCAgMywgMjN9LCB7IDEzLCAgMywgMjd9LAorICAgIHsgMTMsICAzLCAyOH0sIHsgMTMsICA0LCAgMX0sIHsgMTMsICA0LCAgMn0sIHsgMTMsICA0LCAgNX0sCisgICAgeyAxMywgIDQsICA5fSwgeyAxMywgIDQsIDE3fSwgeyAxMywgIDQsIDE5fSwgeyAxMywgIDQsIDIxfSwKKyAgICB7IDEzLCAgNCwgMjJ9LCB7IDEzLCAgNCwgMjN9LCB7IDEzLCAgNSwgIDF9LCB7IDEzLCAgNSwgIDJ9LAorICAgIHsgMTMsICA1LCAgNX0sIHsgMTMsICA1LCAgOX0sIHsgMTMsICA1LCAxMn0sIHsgMTMsICA1LCAxN30sCisgICAgeyAxMywgIDUsIDE5fSwgeyAxMywgIDUsIDIxfSwgeyAxMywgIDUsIDIzfSwgeyAxMywgIDUsIDI3fSwKKyAgICB7IDEzLCAgNSwgMjl9LCB7IDEzLCAgNiwgIDF9LCB7IDEzLCAgNiwgIDV9LCB7IDEzLCAgNiwgIDl9LAorICAgIHsgMTMsICA2LCAxOX0sIHsgMTMsICA3LCAgMX0sIHsgMTMsICA3LCAgMn0sIHsgMTMsICA3LCAgNX0sCisgICAgeyAxMywgIDcsICA2fSwgeyAxMywgIDcsICA4fSwgeyAxMywgIDcsICA5fSwgeyAxMywgIDcsIDEwfSwKKyAgICB7IDEzLCAgNywgMTF9LCB7IDEzLCAgNywgMTd9LCB7IDEzLCAgNywgMTl9LCB7IDEzLCAgNywgMjB9LAorICAgIHsgMTMsICA3LCAyMX0sIHsgMTMsICA3LCAyMn0sIHsgMTMsICA3LCAyM30sIHsgMTMsICA3LCAyNH0sCisgICAgeyAxMywgIDcsIDI2fSwgeyAxMywgIDcsIDI4fSwgeyAxMywgMTAsICAxfSwgeyAxMywgMTAsICAyfSwKKyAgICB7IDEzLCAxMCwgIDV9LCB7IDEzLCAxMCwgIDl9LCB7IDEzLCAxMCwgMTd9LCB7IDEzLCAxMCwgMTl9LAorICAgIHsgMTMsIDEwLCAyMX0sIHsgMTMsIDEwLCAyM30sIHsgMTMsIDExLCAgMX0sIHsgMTMsIDExLCAgMn0sCisgICAgeyAxMywgMTEsICAzfSwgeyAxMywgMTEsICA1fSwgeyAxMywgMTEsICA5fSwgeyAxMywgMTEsIDExfSwKKyAgICB7IDEzLCAxMSwgMTJ9LCB7IDEzLCAxMSwgMTd9LCB7IDEzLCAxMSwgMTl9LCB7IDEzLCAxMSwgMjB9LAorICAgIHsgMTMsIDExLCAyMX0sIHsgMTMsIDExLCAyMn0sIHsgMTMsIDExLCAyM30sIHsgMTMsIDExLCAyN30sCisgICAgeyAxMywgMTEsIDI4fSwgeyAxMywgMTEsIDI5fSwgeyAxMywgMTIsICAxfSwgeyAxMywgMTIsICA1fSwKKyAgICB7IDEzLCAxMiwgIDl9LCB7IDEzLCAxMiwgMTd9LCB7IDEzLCAxMiwgMTl9LCB7IDEzLCAxMiwgMjF9LAorICAgIHsgMTMsIDEyLCAyMn0sIHsgMTMsIDEzLCAgMX0sIHsgMTMsIDEzLCAgMn0sIHsgMTMsIDEzLCAgNX0sCisgICAgeyAxMywgMTMsICA5fSwgeyAxMywgMTMsIDEwfSwgeyAxMywgMTMsIDExfSwgeyAxMywgMTMsIDEzfSwKKyAgICB7IDEzLCAxMywgMTZ9LCB7IDEzLCAxMywgMTd9LCB7IDEzLCAxMywgMTl9LCB7IDEzLCAxMywgMjF9LAorICAgIHsgMTMsIDEzLCAyM30sIHsgMTMsIDEzLCAyNX0sIHsgMTMsIDE0LCAgMX0sIHsgMTMsIDE0LCAgMn0sCisgICAgeyAxMywgMTQsICA1fSwgeyAxMywgMTQsICA5fSwgeyAxMywgMTQsIDE3fSwgeyAxMywgMTQsIDE5fSwKKyAgICB7IDEzLCAxNCwgMjF9LCB7IDEzLCAxNCwgMjJ9LCB7IDEzLCAxNCwgMjN9LCB7IDEzLCAxNSwgIDF9LAorICAgIHsgMTMsIDE1LCAgMn0sIHsgMTMsIDE1LCAgNX0sIHsgMTMsIDE1LCAxN30sIHsgMTMsIDE1LCAyMX0sCisgICAgeyAxMywgMTUsIDIzfSwgeyAxMywgMTgsICAxfSwgeyAxMywgMTgsICAyfSwgeyAxMywgMTgsICA1fSwKKyAgICB7IDEzLCAxOCwgIDl9LCB7IDEzLCAxOCwgMTd9LCB7IDEzLCAxOCwgMTl9LCB7IDEzLCAxOCwgMjF9LAorICAgIHsgMTMsIDE4LCAyM30sIHsgMTMsIDE5LCAgMX0sIHsgMTMsIDE5LCAgMn0sIHsgMTMsIDE5LCAgNX0sCisgICAgeyAxMywgMTksICA5fSwgeyAxMywgMTksIDE3fSwgeyAxMywgMTksIDE5fSwgeyAxMywgMTksIDIxfSwKKyAgICB7IDEzLCAxOSwgMjN9LCB7IDEzLCAyMCwgIDF9LCB7IDEzLCAyMCwgIDJ9LCB7IDEzLCAyMCwgIDV9LAorICAgIHsgMTMsIDIwLCAgOX0sIHsgMTMsIDIwLCAxMH0sIHsgMTMsIDIwLCAxMX0sIHsgMTMsIDIwLCAxN30sCisgICAgeyAxMywgMjAsIDE5fSwgeyAxMywgMjAsIDIxfSwgeyAxMywgMjAsIDIzfSwgeyAxMywgMjEsICAxfSwKKyAgICB7IDEzLCAyMSwgIDJ9LCB7IDEzLCAyMSwgIDV9LCB7IDEzLCAyMSwgIDl9LCB7IDEzLCAyMSwgMTd9LAorICAgIHsgMTMsIDIxLCAxOX0sIHsgMTMsIDIxLCAyMn0sIHsgMTMsIDIxLCAyM30sIHsgMTMsIDIyLCAgMX0sCisgICAgeyAxMywgMjIsICAyfSwgeyAxMywgMjIsICA1fSwgeyAxMywgMjIsICA5fSwgeyAxMywgMjIsIDE3fSwKKyAgICB7IDEzLCAyMiwgMTl9LCB7IDEzLCAyMiwgMjN9LCB7IDEzLCAyMywgIDF9LCB7IDEzLCAyMywgIDJ9LAorICAgIHsgMTMsIDIzLCAgNX0sIHsgMTMsIDIzLCAgOX0sIHsgMTMsIDIzLCAxN30sIHsgMTMsIDIzLCAxOX0sCisgICAgeyAxMywgMjMsIDIxfSwgeyAxMywgMjMsIDIzfSwgeyAxMywgMjYsICAxfSwgeyAxMywgMjYsICAyfSwKKyAgICB7IDEzLCAyNiwgIDV9LCB7IDEzLCAyNiwgIDl9LCB7IDEzLCAyNiwgMTd9LCB7IDEzLCAyNiwgMTl9LAorICAgIHsgMTMsIDI2LCAyMX0sIHsgMTMsIDI2LCAyM30sIHsgMTMsIDI2LCAyNX0sIHsgMTMsIDI3LCAgMX0sCisgICAgeyAxMywgMjcsICAyfSwgeyAxMywgMjcsICA1fSwgeyAxMywgMjcsICA5fSwgeyAxMywgMjcsIDE1fSwKKyAgICB7IDEzLCAyNywgMTd9LCB7IDEzLCAyNywgMTl9LCB7IDEzLCAyNywgMjF9LCB7IDEzLCAyNywgMjN9LAorICAgIHsgMTMsIDI3LCAyNH0sIHsgMTMsIDI3LCAyNX0sIHsgMTMsIDI3LCAyNn0sIHsgMTMsIDI3LCAyN30sCisgICAgeyAxMywgMjcsIDI4fSwgeyAxMywgMjcsIDI5fSwgeyAxMywgMjgsICAxfSwgeyAxMywgMjgsICA1fSwKKyAgICB7IDEzLCAyOCwgIDl9LCB7IDEzLCAyOCwgMTd9LCB7IDEzLCAyOCwgMjF9LCB7IDEzLCAyOSwgIDF9LAorICAgIHsgMTMsIDI5LCAgMn0sIHsgMTMsIDI5LCAgNX0sIHsgMTMsIDI5LCAgOX0sIHsgMTMsIDI5LCAxMH0sCisgICAgeyAxMywgMjksIDExfSwgeyAxMywgMjksIDE2fSwgeyAxMywgMjksIDE3fSwgeyAxMywgMjksIDE5fSwKKyAgICB7IDEzLCAyOSwgMjF9LCB7IDEzLCAyOSwgMjJ9LCB7IDEzLCAyOSwgMjN9LCB7IDEzLCAyOSwgMjR9LAorICAgIHsgMTMsIDI5LCAyOH0sIHsgMTQsICAzLCAgMX0sIHsgMTQsICAzLCAgMn0sIHsgMTQsICAzLCAgNX0sCisgICAgeyAxNCwgIDMsICA3fSwgeyAxNCwgIDMsICA4fSwgeyAxNCwgIDMsICA5fSwgeyAxNCwgIDMsIDExfSwKKyAgICB7IDE0LCAgMywgMTd9LCB7IDE0LCAgMywgMTl9LCB7IDE0LCAgMywgMjF9LCB7IDE0LCAgMywgMjJ9LAorICAgIHsgMTQsICAzLCAyM30sIHsgMTQsICAzLCAyNH0sIHsgMTQsICA0LCAgMX0sIHsgMTQsICA0LCAgMn0sCisgICAgeyAxNCwgIDQsICA1fSwgeyAxNCwgIDQsICA5fSwgeyAxNCwgIDQsIDE3fSwgeyAxNCwgIDQsIDE5fSwKKyAgICB7IDE0LCAgNCwgMjF9LCB7IDE0LCAgNCwgMjJ9LCB7IDE0LCAgNCwgMjN9LCB7IDE0LCAgNSwgIDF9LAorICAgIHsgMTQsICA1LCAgMn0sIHsgMTQsICA1LCAgNX0sIHsgMTQsICA1LCAgN30sIHsgMTQsICA1LCAgOX0sCisgICAgeyAxNCwgIDUsIDE3fSwgeyAxNCwgIDUsIDIzfSwgeyAxNCwgIDYsICAxfSwgeyAxNCwgIDYsICA1fSwKKyAgICB7IDE0LCAgNiwgIDl9LCB7IDE0LCAgNywgIDF9LCB7IDE0LCAgNywgIDJ9LCB7IDE0LCAgNywgIDV9LAorICAgIHsgMTQsICA3LCAgOX0sIHsgMTQsICA3LCAxMX0sIHsgMTQsICA3LCAxN30sIHsgMTQsICA3LCAxOX0sCisgICAgeyAxNCwgIDcsIDIxfSwgeyAxNCwgIDcsIDIzfSwgeyAxNCwgIDcsIDI0fSwgeyAxNCwgMTAsICAxfSwKKyAgICB7IDE0LCAxMCwgIDJ9LCB7IDE0LCAxMCwgIDV9LCB7IDE0LCAxMCwgIDl9LCB7IDE0LCAxMCwgMTd9LAorICAgIHsgMTQsIDEwLCAxOX0sIHsgMTQsIDEwLCAyMX0sIHsgMTQsIDEwLCAyM30sIHsgMTQsIDExLCAgMX0sCisgICAgeyAxNCwgMTEsICA1fSwgeyAxNCwgMTEsICA5fSwgeyAxNCwgMTEsIDE3fSwgeyAxNCwgMTEsIDE5fSwKKyAgICB7IDE0LCAxMSwgMjJ9LCB7IDE0LCAxMSwgMjN9LCB7IDE0LCAxMiwgIDF9LCB7IDE0LCAxMywgIDF9LAorICAgIHsgMTQsIDEzLCAgMn0sIHsgMTQsIDEzLCAgNX0sIHsgMTQsIDEzLCAgOX0sIHsgMTQsIDEzLCAxMX0sCisgICAgeyAxNCwgMTMsIDE3fSwgeyAxNCwgMTMsIDE5fSwgeyAxNCwgMTMsIDIxfSwgeyAxNCwgMTMsIDIzfSwKKyAgICB7IDE0LCAxMywgMjR9LCB7IDE0LCAxMywgMjV9LCB7IDE0LCAxMywgMjl9LCB7IDE0LCAxNCwgIDF9LAorICAgIHsgMTQsIDE0LCAgMn0sIHsgMTQsIDE0LCAgOX0sIHsgMTQsIDE0LCAxOX0sIHsgMTQsIDE0LCAyMX0sCisgICAgeyAxNCwgMTQsIDIzfSwgeyAxNCwgMTUsICAxfSwgeyAxNCwgMTUsIDIyfSwgeyAxNCwgMTUsIDIzfSwKKyAgICB7IDE0LCAxOCwgIDF9LCB7IDE0LCAxOCwgIDV9LCB7IDE0LCAxOCwgIDl9LCB7IDE0LCAxOCwgMTd9LAorICAgIHsgMTQsIDE4LCAxOX0sIHsgMTQsIDE4LCAyMX0sIHsgMTQsIDE4LCAyM30sIHsgMTQsIDE5LCAgMX0sCisgICAgeyAxNCwgMTksICAyfSwgeyAxNCwgMTksICA1fSwgeyAxNCwgMTksIDIzfSwgeyAxNCwgMjAsICAxfSwKKyAgICB7IDE0LCAyMCwgIDJ9LCB7IDE0LCAyMCwgIDV9LCB7IDE0LCAyMCwgIDl9LCB7IDE0LCAyMCwgMTB9LAorICAgIHsgMTQsIDIwLCAxMX0sIHsgMTQsIDIwLCAxN30sIHsgMTQsIDIwLCAxOX0sIHsgMTQsIDIwLCAyMX0sCisgICAgeyAxNCwgMjAsIDIzfSwgeyAxNCwgMjEsICAxfSwgeyAxNCwgMjEsIDIyfSwgeyAxNCwgMjIsICAxfSwKKyAgICB7IDE0LCAyMywgIDF9LCB7IDE0LCAyMywgIDJ9LCB7IDE0LCAyMywgIDV9LCB7IDE0LCAyMywgIDl9LAorICAgIHsgMTQsIDIzLCAxN30sIHsgMTQsIDIzLCAxOX0sIHsgMTQsIDIzLCAyMX0sIHsgMTQsIDI2LCAgMX0sCisgICAgeyAxNCwgMjYsICA1fSwgeyAxNCwgMjYsICA5fSwgeyAxNCwgMjYsIDE3fSwgeyAxNCwgMjcsICAxfSwKKyAgICB7IDE0LCAyNywgIDJ9LCB7IDE0LCAyNywgIDV9LCB7IDE0LCAyNywgIDl9LCB7IDE0LCAyNywgMTd9LAorICAgIHsgMTQsIDI3LCAxOX0sIHsgMTQsIDI3LCAyMX0sIHsgMTQsIDI3LCAyM30sIHsgMTQsIDI5LCAgMX0sCisgICAgeyAxNCwgMjksICAyfSwgeyAxNCwgMjksICA1fSwgeyAxNCwgMjksICA4fSwgeyAxNCwgMjksICA5fSwKKyAgICB7IDE0LCAyOSwgMTF9LCB7IDE0LCAyOSwgMTd9LCB7IDE0LCAyOSwgMTl9LCB7IDE0LCAyOSwgMjF9LAorICAgIHsgMTQsIDI5LCAyM30sIHsgMTQsIDI5LCAyNH0sIHsgMTQsIDI5LCAyN30sIHsgMTQsIDI5LCAyOH0sCisgICAgeyAxNSwgIDMsICAxfSwgeyAxNSwgIDMsICAyfSwgeyAxNSwgIDMsICA1fSwgeyAxNSwgIDMsICA3fSwKKyAgICB7IDE1LCAgMywgIDl9LCB7IDE1LCAgMywgMTJ9LCB7IDE1LCAgMywgMTd9LCB7IDE1LCAgMywgMTl9LAorICAgIHsgMTUsICAzLCAyMX0sIHsgMTUsICAzLCAyMn0sIHsgMTUsICAzLCAyM30sIHsgMTUsICA0LCAgMX0sCisgICAgeyAxNSwgIDQsICAyfSwgeyAxNSwgIDQsICA1fSwgeyAxNSwgIDQsICA5fSwgeyAxNSwgIDQsIDE3fSwKKyAgICB7IDE1LCAgNCwgMTl9LCB7IDE1LCAgNCwgMjF9LCB7IDE1LCAgNCwgMjJ9LCB7IDE1LCAgNCwgMjN9LAorICAgIHsgMTUsICA1LCAgMX0sIHsgMTUsICA1LCAgNX0sIHsgMTUsICA1LCAyM30sIHsgMTUsICA3LCAgMX0sCisgICAgeyAxNSwgIDcsICAyfSwgeyAxNSwgIDcsICA1fSwgeyAxNSwgIDcsICA5fSwgeyAxNSwgIDcsIDE3fSwKKyAgICB7IDE1LCAgNywgMTl9LCB7IDE1LCAgNywgMjF9LCB7IDE1LCAgNywgMjJ9LCB7IDE1LCAgNywgMjN9LAorICAgIHsgMTUsIDEwLCAgMX0sIHsgMTUsIDEwLCAyM30sIHsgMTUsIDExLCAgMX0sIHsgMTUsIDExLCAyMn0sCisgICAgeyAxNSwgMTMsICAxfSwgeyAxNSwgMTMsICAyfSwgeyAxNSwgMTMsICA1fSwgeyAxNSwgMTMsICA5fSwKKyAgICB7IDE1LCAxMywgMTd9LCB7IDE1LCAxMywgMTl9LCB7IDE1LCAxMywgMjF9LCB7IDE1LCAxMywgMjN9LAorICAgIHsgMTUsIDEzLCAyNX0sIHsgMTUsIDE0LCAgMX0sIHsgMTUsIDE0LCAgMn0sIHsgMTUsIDE0LCAgOX0sCisgICAgeyAxNSwgMTQsIDIyfSwgeyAxNSwgMTUsICAxfSwgeyAxNSwgMTUsIDIyfSwgeyAxNSwgMTgsICAxfSwKKyAgICB7IDE1LCAxOCwgIDV9LCB7IDE1LCAxOCwgIDl9LCB7IDE1LCAxOCwgMTd9LCB7IDE1LCAxOCwgMTl9LAorICAgIHsgMTUsIDE5LCAyM30sIHsgMTUsIDIwLCAgMX0sIHsgMTUsIDIwLCAgMn0sIHsgMTUsIDIwLCAgNX0sCisgICAgeyAxNSwgMjAsICA5fSwgeyAxNSwgMjAsIDE3fSwgeyAxNSwgMjAsIDE5fSwgeyAxNSwgMjAsIDIzfSwKKyAgICB7IDE1LCAyMSwgIDF9LCB7IDE1LCAyMSwgMjJ9LCB7IDE1LCAyMSwgMjN9LCB7IDE1LCAyMywgIDF9LAorICAgIHsgMTUsIDI2LCAgMX0sIHsgMTUsIDI3LCAgMX0sIHsgMTUsIDI3LCAxN30sIHsgMTUsIDI3LCAyMX0sCisgICAgeyAxNSwgMjcsIDIzfSwgeyAxNSwgMjksICAxfSwgeyAxNSwgMjksICAyfSwgeyAxNSwgMjksICA1fSwKKyAgICB7IDE1LCAyOSwgIDl9LCB7IDE1LCAyOSwgMTd9LCB7IDE1LCAyOSwgMTl9LCB7IDE1LCAyOSwgMjN9LAorICAgIHsgMTUsIDI5LCAyNH0sIHsgMTUsIDI5LCAyOX0sIHsgMTYsICAzLCAgMX0sIHsgMTYsICAzLCAgMn0sCisgICAgeyAxNiwgIDMsICA1fSwgeyAxNiwgIDMsICA3fSwgeyAxNiwgIDMsICA5fSwgeyAxNiwgIDMsIDE3fSwKKyAgICB7IDE2LCAgMywgMTl9LCB7IDE2LCAgMywgMjF9LCB7IDE2LCAgMywgMjJ9LCB7IDE2LCAgMywgMjN9LAorICAgIHsgMTYsICAzLCAyNH0sIHsgMTYsICA0LCAgMX0sIHsgMTYsICA0LCAgMn0sIHsgMTYsICA0LCAgNX0sCisgICAgeyAxNiwgIDQsICA5fSwgeyAxNiwgIDQsIDE3fSwgeyAxNiwgIDQsIDE5fSwgeyAxNiwgIDQsIDIxfSwKKyAgICB7IDE2LCAgNCwgMjJ9LCB7IDE2LCAgNCwgMjN9LCB7IDE2LCAgNSwgIDF9LCB7IDE2LCAgNSwgIDV9LAorICAgIHsgMTYsICA1LCAgN30sIHsgMTYsICA1LCAgOX0sIHsgMTYsICA1LCAxN30sIHsgMTYsICA1LCAyM30sCisgICAgeyAxNiwgIDcsICAxfSwgeyAxNiwgIDcsICAyfSwgeyAxNiwgIDcsICA1fSwgeyAxNiwgIDcsICA5fSwKKyAgICB7IDE2LCAgNywgMTd9LCB7IDE2LCAgNywgMTl9LCB7IDE2LCAgNywgMjF9LCB7IDE2LCAgNywgMjJ9LAorICAgIHsgMTYsICA3LCAyM30sIHsgMTYsIDEwLCAgMX0sIHsgMTYsIDEwLCAgMn0sIHsgMTYsIDEwLCAgNX0sCisgICAgeyAxNiwgMTAsICA5fSwgeyAxNiwgMTAsIDE3fSwgeyAxNiwgMTAsIDE5fSwgeyAxNiwgMTAsIDIxfSwKKyAgICB7IDE2LCAxMCwgMjN9LCB7IDE2LCAxMSwgIDF9LCB7IDE2LCAxMSwgIDV9LCB7IDE2LCAxMSwgMjJ9LAorICAgIHsgMTYsIDEyLCAgMX0sIHsgMTYsIDEyLCAgNX0sIHsgMTYsIDEyLCAyM30sIHsgMTYsIDEzLCAgMX0sCisgICAgeyAxNiwgMTMsICAyfSwgeyAxNiwgMTMsICA1fSwgeyAxNiwgMTMsICA5fSwgeyAxNiwgMTMsIDE3fSwKKyAgICB7IDE2LCAxMywgMTl9LCB7IDE2LCAxMywgMjF9LCB7IDE2LCAxMywgMjN9LCB7IDE2LCAxNCwgIDF9LAorICAgIHsgMTYsIDE0LCAgNX0sIHsgMTYsIDE0LCAgOX0sIHsgMTYsIDE0LCAyM30sIHsgMTYsIDE4LCAgMX0sCisgICAgeyAxNiwgMTgsICA1fSwgeyAxNiwgMTgsICA5fSwgeyAxNiwgMTgsIDE3fSwgeyAxNiwgMTgsIDE5fSwKKyAgICB7IDE2LCAxOCwgMjF9LCB7IDE2LCAxOCwgMjN9LCB7IDE2LCAxOSwgIDF9LCB7IDE2LCAxOSwgMTd9LAorICAgIHsgMTYsIDIwLCAgMX0sIHsgMTYsIDIwLCAgMn0sIHsgMTYsIDIwLCAgNX0sIHsgMTYsIDIwLCAgOX0sCisgICAgeyAxNiwgMjAsIDE3fSwgeyAxNiwgMjAsIDE5fSwgeyAxNiwgMjAsIDIxfSwgeyAxNiwgMjAsIDIzfSwKKyAgICB7IDE2LCAyMSwgIDF9LCB7IDE2LCAyMSwgMjJ9LCB7IDE2LCAyMiwgIDF9LCB7IDE2LCAyMiwgIDV9LAorICAgIHsgMTYsIDIzLCAgMX0sIHsgMTYsIDIzLCAgNX0sIHsgMTYsIDIzLCAgOX0sIHsgMTYsIDIzLCAxN30sCisgICAgeyAxNiwgMjMsIDE5fSwgeyAxNiwgMjMsIDIxfSwgeyAxNiwgMjMsIDIzfSwgeyAxNiwgMjYsICAxfSwKKyAgICB7IDE2LCAyNiwgIDV9LCB7IDE2LCAyNiwgIDl9LCB7IDE2LCAyNiwgMTd9LCB7IDE2LCAyNiwgMjN9LAorICAgIHsgMTYsIDI3LCAgMX0sIHsgMTYsIDI3LCAgMn0sIHsgMTYsIDI3LCAgNX0sIHsgMTYsIDI3LCAgOX0sCisgICAgeyAxNiwgMjcsIDE3fSwgeyAxNiwgMjcsIDE5fSwgeyAxNiwgMjcsIDIxfSwgeyAxNiwgMjcsIDIzfSwKKyAgICB7IDE2LCAyOSwgIDF9LCB7IDE2LCAyOSwgIDJ9LCB7IDE2LCAyOSwgIDV9LCB7IDE2LCAyOSwgIDh9LAorICAgIHsgMTYsIDI5LCAgOX0sIHsgMTYsIDI5LCAxMH0sIHsgMTYsIDI5LCAxN30sIHsgMTYsIDI5LCAxOX0sCisgICAgeyAxNiwgMjksIDIxfSwgeyAxNiwgMjksIDIzfSwgeyAxNywgIDMsICAxfSwgeyAxNywgIDMsICAyfSwKKyAgICB7IDE3LCAgMywgIDV9LCB7IDE3LCAgMywgIDl9LCB7IDE3LCAgMywgMTd9LCB7IDE3LCAgMywgMTl9LAorICAgIHsgMTcsICAzLCAyMX0sIHsgMTcsICAzLCAyM30sIHsgMTcsICA0LCAgMX0sIHsgMTcsICA0LCAgMn0sCisgICAgeyAxNywgIDQsICA1fSwgeyAxNywgIDQsICA5fSwgeyAxNywgIDQsIDE3fSwgeyAxNywgIDQsIDE5fSwKKyAgICB7IDE3LCAgNCwgMjF9LCB7IDE3LCAgNCwgMjJ9LCB7IDE3LCAgNCwgMjN9LCB7IDE3LCAgNSwgIDF9LAorICAgIHsgMTcsICA1LCAgMn0sIHsgMTcsICA1LCAyM30sIHsgMTcsICA3LCAgMX0sIHsgMTcsICA3LCAgMn0sCisgICAgeyAxNywgIDcsICA1fSwgeyAxNywgIDcsICA4fSwgeyAxNywgIDcsICA5fSwgeyAxNywgIDcsIDE3fSwKKyAgICB7IDE3LCAgNywgMTl9LCB7IDE3LCAgNywgMjF9LCB7IDE3LCAgNywgMjJ9LCB7IDE3LCAgNywgMjN9LAorICAgIHsgMTcsIDEwLCAgMX0sIHsgMTcsIDEwLCAgMn0sIHsgMTcsIDEwLCAgNX0sIHsgMTcsIDEwLCAgOX0sCisgICAgeyAxNywgMTAsIDE3fSwgeyAxNywgMTAsIDE5fSwgeyAxNywgMTAsIDIxfSwgeyAxNywgMTAsIDIzfSwKKyAgICB7IDE3LCAxMSwgIDF9LCB7IDE3LCAxMSwgIDV9LCB7IDE3LCAxMSwgIDl9LCB7IDE3LCAxMSwgMTd9LAorICAgIHsgMTcsIDExLCAxOX0sIHsgMTcsIDExLCAyMX0sIHsgMTcsIDExLCAyMn0sIHsgMTcsIDExLCAyM30sCisgICAgeyAxNywgMTIsICAxfSwgeyAxNywgMTMsICAxfSwgeyAxNywgMTMsICAyfSwgeyAxNywgMTMsICA1fSwKKyAgICB7IDE3LCAxMywgIDl9LCB7IDE3LCAxMywgMTd9LCB7IDE3LCAxMywgMTl9LCB7IDE3LCAxMywgMjF9LAorICAgIHsgMTcsIDEzLCAyM30sIHsgMTcsIDE0LCAgMX0sIHsgMTcsIDE0LCAgMn0sIHsgMTcsIDE0LCAgNX0sCisgICAgeyAxNywgMTQsICA5fSwgeyAxNywgMTQsIDE3fSwgeyAxNywgMTQsIDIzfSwgeyAxNywgMTUsICAxfSwKKyAgICB7IDE3LCAxNSwgMjN9LCB7IDE3LCAxOCwgIDF9LCB7IDE3LCAxOCwgIDl9LCB7IDE3LCAxOSwgIDF9LAorICAgIHsgMTcsIDIwLCAgMX0sIHsgMTcsIDIwLCAgMn0sIHsgMTcsIDIwLCAgNX0sIHsgMTcsIDIwLCAgOX0sCisgICAgeyAxNywgMjAsIDE3fSwgeyAxNywgMjAsIDE5fSwgeyAxNywgMjAsIDIxfSwgeyAxNywgMjAsIDIzfSwKKyAgICB7IDE3LCAyMSwgIDF9LCB7IDE3LCAyMSwgIDV9LCB7IDE3LCAyMSwgIDl9LCB7IDE3LCAyMSwgMjN9LAorICAgIHsgMTcsIDIyLCAgMX0sIHsgMTcsIDIyLCAyM30sIHsgMTcsIDIzLCAgMX0sIHsgMTcsIDIzLCAgMn0sCisgICAgeyAxNywgMjMsICA1fSwgeyAxNywgMjMsICA5fSwgeyAxNywgMjMsIDE3fSwgeyAxNywgMjMsIDE5fSwKKyAgICB7IDE3LCAyMywgMjF9LCB7IDE3LCAyMywgMjN9LCB7IDE3LCAyNiwgIDF9LCB7IDE3LCAyNiwgIDV9LAorICAgIHsgMTcsIDI2LCAgOX0sIHsgMTcsIDI2LCAxN30sIHsgMTcsIDI3LCAgMX0sIHsgMTcsIDI3LCAgMn0sCisgICAgeyAxNywgMjcsICA1fSwgeyAxNywgMjcsICA5fSwgeyAxNywgMjcsIDE3fSwgeyAxNywgMjcsIDE5fSwKKyAgICB7IDE3LCAyNywgMjN9LCB7IDE3LCAyOSwgIDF9LCB7IDE3LCAyOSwgIDJ9LCB7IDE3LCAyOSwgIDV9LAorICAgIHsgMTcsIDI5LCAgOX0sIHsgMTcsIDI5LCAxN30sIHsgMTcsIDI5LCAxOX0sIHsgMTcsIDI5LCAyMX0sCisgICAgeyAxNywgMjksIDIzfSwgeyAxOCwgIDMsICAxfSwgeyAxOCwgIDMsICAyfSwgeyAxOCwgIDMsICA1fSwKKyAgICB7IDE4LCAgMywgIDl9LCB7IDE4LCAgMywgMTB9LCB7IDE4LCAgMywgMTd9LCB7IDE4LCAgMywgMTl9LAorICAgIHsgMTgsICAzLCAyMX0sIHsgMTgsICAzLCAyMn0sIHsgMTgsICAzLCAyM30sIHsgMTgsICA0LCAgMX0sCisgICAgeyAxOCwgIDQsICAyfSwgeyAxOCwgIDQsICA1fSwgeyAxOCwgIDQsICA5fSwgeyAxOCwgIDQsIDE3fSwKKyAgICB7IDE4LCAgNCwgMTl9LCB7IDE4LCAgNCwgMjF9LCB7IDE4LCAgNCwgMjJ9LCB7IDE4LCAgNCwgMjN9LAorICAgIHsgMTgsICA1LCAgMX0sIHsgMTgsICA1LCAyM30sIHsgMTgsICA3LCAgMX0sIHsgMTgsICA3LCAgMn0sCisgICAgeyAxOCwgIDcsICA1fSwgeyAxOCwgIDcsICA5fSwgeyAxOCwgIDcsIDExfSwgeyAxOCwgIDcsIDE3fSwKKyAgICB7IDE4LCAgNywgMTl9LCB7IDE4LCAgNywgMjF9LCB7IDE4LCAgNywgMjJ9LCB7IDE4LCAgNywgMjN9LAorICAgIHsgMTgsIDEwLCAgMX0sIHsgMTgsIDEwLCAgMn0sIHsgMTgsIDEwLCAgNX0sIHsgMTgsIDEwLCAgOX0sCisgICAgeyAxOCwgMTAsIDE3fSwgeyAxOCwgMTAsIDE5fSwgeyAxOCwgMTAsIDIxfSwgeyAxOCwgMTAsIDIzfSwKKyAgICB7IDE4LCAxMSwgIDF9LCB7IDE4LCAxMSwgIDV9LCB7IDE4LCAxMSwgMjJ9LCB7IDE4LCAxMiwgIDF9LAorICAgIHsgMTgsIDEyLCAgNX0sIHsgMTgsIDEzLCAgMX0sIHsgMTgsIDEzLCAgMn0sIHsgMTgsIDEzLCAgNX0sCisgICAgeyAxOCwgMTMsICA5fSwgeyAxOCwgMTMsIDE3fSwgeyAxOCwgMTMsIDE5fSwgeyAxOCwgMTMsIDIxfSwKKyAgICB7IDE4LCAxMywgMjN9LCB7IDE4LCAxMywgMjh9LCB7IDE4LCAxNCwgIDF9LCB7IDE4LCAxNCwgIDV9LAorICAgIHsgMTgsIDE1LCAgMX0sIHsgMTgsIDE4LCAgMX0sIHsgMTgsIDE4LCAgNX0sIHsgMTgsIDE4LCAyMX0sCisgICAgeyAxOCwgMTgsIDIzfSwgeyAxOCwgMTksICAxfSwgeyAxOCwgMjAsICAxfSwgeyAxOCwgMjAsICAyfSwKKyAgICB7IDE4LCAyMCwgIDV9LCB7IDE4LCAyMCwgIDl9LCB7IDE4LCAyMCwgMTd9LCB7IDE4LCAyMCwgMTl9LAorICAgIHsgMTgsIDIwLCAyMX0sIHsgMTgsIDIwLCAyM30sIHsgMTgsIDIxLCAgMX0sIHsgMTgsIDIxLCAyMn0sCisgICAgeyAxOCwgMjIsICAxfSwgeyAxOCwgMjMsICAxfSwgeyAxOCwgMjMsICAyfSwgeyAxOCwgMjMsICA1fSwKKyAgICB7IDE4LCAyMywgIDl9LCB7IDE4LCAyMywgMTd9LCB7IDE4LCAyMywgMTl9LCB7IDE4LCAyMywgMjN9LAorICAgIHsgMTgsIDI2LCAgMX0sIHsgMTgsIDI2LCAgNX0sIHsgMTgsIDI2LCAgOX0sIHsgMTgsIDI2LCAxN30sCisgICAgeyAxOCwgMjYsIDIzfSwgeyAxOCwgMjcsICAxfSwgeyAxOCwgMjcsICAyfSwgeyAxOCwgMjcsICA1fSwKKyAgICB7IDE4LCAyNywgIDh9LCB7IDE4LCAyNywgIDl9LCB7IDE4LCAyNywgMTF9LCB7IDE4LCAyNywgMTd9LAorICAgIHsgMTgsIDI3LCAxOX0sIHsgMTgsIDI3LCAyMX0sIHsgMTgsIDI4LCAgMX0sIHsgMTgsIDI4LCAgNX0sCisgICAgeyAxOCwgMjgsICA5fSwgeyAxOCwgMjgsIDE3fSwgeyAxOCwgMjgsIDE5fSwgeyAxOCwgMjksICAxfSwKKyAgICB7IDE4LCAyOSwgIDJ9LCB7IDE4LCAyOSwgIDV9LCB7IDE4LCAyOSwgIDl9LCB7IDE4LCAyOSwgMTd9LAorICAgIHsgMTgsIDI5LCAxOX0sIHsgMTgsIDI5LCAyMX0sIHsgMTgsIDI5LCAyM30sIHsgMTksICAzLCAgMX0sCisgICAgeyAxOSwgIDMsICAyfSwgeyAxOSwgIDMsICAzfSwgeyAxOSwgIDMsICA1fSwgeyAxOSwgIDMsICA5fSwKKyAgICB7IDE5LCAgMywgMTF9LCB7IDE5LCAgMywgMTd9LCB7IDE5LCAgMywgMTl9LCB7IDE5LCAgMywgMjF9LAorICAgIHsgMTksICAzLCAyMn0sIHsgMTksICAzLCAyM30sIHsgMTksICAzLCAyN30sIHsgMTksICA0LCAgMX0sCisgICAgeyAxOSwgIDQsICAyfSwgeyAxOSwgIDQsICA1fSwgeyAxOSwgIDQsICA5fSwgeyAxOSwgIDQsIDE3fSwKKyAgICB7IDE5LCAgNCwgMTl9LCB7IDE5LCAgNCwgMjF9LCB7IDE5LCAgNCwgMjJ9LCB7IDE5LCAgNCwgMjN9LAorICAgIHsgMTksICA1LCAgMX0sIHsgMTksICA1LCAgMn0sIHsgMTksICA3LCAgMX0sIHsgMTksICA3LCAgMn0sCisgICAgeyAxOSwgIDcsICA1fSwgeyAxOSwgIDcsICA5fSwgeyAxOSwgIDcsIDE3fSwgeyAxOSwgIDcsIDE5fSwKKyAgICB7IDE5LCAgNywgMjF9LCB7IDE5LCAgNywgMjJ9LCB7IDE5LCAgNywgMjN9LCB7IDE5LCAxMCwgIDF9LAorICAgIHsgMTksIDEwLCAgMn0sIHsgMTksIDEwLCAgNX0sIHsgMTksIDEwLCAgOX0sIHsgMTksIDEwLCAxN30sCisgICAgeyAxOSwgMTAsIDE5fSwgeyAxOSwgMTAsIDIxfSwgeyAxOSwgMTAsIDIzfSwgeyAxOSwgMTEsICAxfSwKKyAgICB7IDE5LCAxMSwgIDV9LCB7IDE5LCAxMSwgIDl9LCB7IDE5LCAxMSwgMTd9LCB7IDE5LCAxMSwgMTl9LAorICAgIHsgMTksIDExLCAyMn0sIHsgMTksIDExLCAyM30sIHsgMTksIDEyLCAgMX0sIHsgMTksIDEyLCAgOX0sCisgICAgeyAxOSwgMTIsIDE5fSwgeyAxOSwgMTIsIDIxfSwgeyAxOSwgMTMsICAxfSwgeyAxOSwgMTMsICAyfSwKKyAgICB7IDE5LCAxMywgIDV9LCB7IDE5LCAxMywgIDl9LCB7IDE5LCAxMywgMTd9LCB7IDE5LCAxMywgMTl9LAorICAgIHsgMTksIDEzLCAyMX0sIHsgMTksIDEzLCAyM30sIHsgMTksIDE0LCAgMX0sIHsgMTksIDE0LCAyM30sCisgICAgeyAxOSwgMTgsICAxfSwgeyAxOSwgMTgsICA1fSwgeyAxOSwgMTksICAxfSwgeyAxOSwgMTksICA1fSwKKyAgICB7IDE5LCAxOSwgIDl9LCB7IDE5LCAxOSwgMTl9LCB7IDE5LCAxOSwgMjF9LCB7IDE5LCAyMCwgIDF9LAorICAgIHsgMTksIDIwLCAgMn0sIHsgMTksIDIwLCAgNX0sIHsgMTksIDIwLCAgOH0sIHsgMTksIDIwLCAgOX0sCisgICAgeyAxOSwgMjAsIDExfSwgeyAxOSwgMjAsIDE3fSwgeyAxOSwgMjAsIDE5fSwgeyAxOSwgMjAsIDIxfSwKKyAgICB7IDE5LCAyMCwgMjN9LCB7IDE5LCAyMSwgIDF9LCB7IDE5LCAyMSwgMjN9LCB7IDE5LCAyMywgIDF9LAorICAgIHsgMTksIDIzLCAgNX0sIHsgMTksIDIzLCAgOX0sIHsgMTksIDIzLCAxN30sIHsgMTksIDIzLCAyMX0sCisgICAgeyAxOSwgMjYsICAxfSwgeyAxOSwgMjYsICA1fSwgeyAxOSwgMjYsICA5fSwgeyAxOSwgMjYsIDE3fSwKKyAgICB7IDE5LCAyNiwgMjF9LCB7IDE5LCAyNiwgMjN9LCB7IDE5LCAyNywgIDF9LCB7IDE5LCAyNywgIDV9LAorICAgIHsgMTksIDI3LCAgOX0sIHsgMTksIDI3LCAxN30sIHsgMTksIDI3LCAxOX0sIHsgMTksIDI3LCAyMX0sCisgICAgeyAxOSwgMjksICAxfSwgeyAxOSwgMjksICAyfSwgeyAxOSwgMjksICA1fSwgeyAxOSwgMjksICA5fSwKKyAgICB7IDE5LCAyOSwgMTd9LCB7IDE5LCAyOSwgMTl9LCB7IDE5LCAyOSwgMjF9LCB7IDE5LCAyOSwgMjN9LAorICAgIHsgMjAsICAzLCAgMX0sIHsgMjAsICAzLCAgMn0sIHsgMjAsICAzLCAgNX0sIHsgMjAsICAzLCAgOX0sCisgICAgeyAyMCwgIDMsIDE0fSwgeyAyMCwgIDMsIDE3fSwgeyAyMCwgIDMsIDE5fSwgeyAyMCwgIDMsIDIxfSwKKyAgICB7IDIwLCAgMywgMjN9LCB7IDIwLCAgNCwgIDF9LCB7IDIwLCAgNCwgIDJ9LCB7IDIwLCAgNCwgIDV9LAorICAgIHsgMjAsICA0LCAgOX0sIHsgMjAsICA0LCAxN30sIHsgMjAsICA0LCAxOX0sIHsgMjAsICA0LCAyMX0sCisgICAgeyAyMCwgIDQsIDIyfSwgeyAyMCwgIDQsIDIzfSwgeyAyMCwgIDUsICAxfSwgeyAyMCwgIDUsIDIzfSwKKyAgICB7IDIwLCAgNywgIDF9LCB7IDIwLCAgNywgIDJ9LCB7IDIwLCAgNywgIDV9LCB7IDIwLCAgNywgIDl9LAorICAgIHsgMjAsICA3LCAxMX0sIHsgMjAsICA3LCAxN30sIHsgMjAsICA3LCAxOX0sIHsgMjAsICA3LCAyMX0sCisgICAgeyAyMCwgIDcsIDIzfSwgeyAyMCwgMTAsICAxfSwgeyAyMCwgMTAsICAyfSwgeyAyMCwgMTAsICA1fSwKKyAgICB7IDIwLCAxMCwgIDl9LCB7IDIwLCAxMCwgMTd9LCB7IDIwLCAxMCwgMTl9LCB7IDIwLCAxMCwgMjF9LAorICAgIHsgMjAsIDEwLCAyM30sIHsgMjAsIDExLCAgMX0sIHsgMjAsIDExLCAgMn0sIHsgMjAsIDExLCAgNX0sCisgICAgeyAyMCwgMTEsICA5fSwgeyAyMCwgMTEsIDE3fSwgeyAyMCwgMTEsIDE5fSwgeyAyMCwgMTEsIDIxfSwKKyAgICB7IDIwLCAxMSwgMjJ9LCB7IDIwLCAxMSwgMjN9LCB7IDIwLCAxMiwgIDF9LCB7IDIwLCAxMiwgIDV9LAorICAgIHsgMjAsIDEyLCAgOX0sIHsgMjAsIDEyLCAxOX0sIHsgMjAsIDEzLCAgMX0sIHsgMjAsIDEzLCAgMn0sCisgICAgeyAyMCwgMTMsICA1fSwgeyAyMCwgMTMsICA5fSwgeyAyMCwgMTMsIDE0fSwgeyAyMCwgMTMsIDE3fSwKKyAgICB7IDIwLCAxMywgMTl9LCB7IDIwLCAxMywgMjF9LCB7IDIwLCAxMywgMjN9LCB7IDIwLCAxMywgMjd9LAorICAgIHsgMjAsIDE0LCAgMX0sIHsgMjAsIDE0LCAgMn0sIHsgMjAsIDE0LCAgNX0sIHsgMjAsIDE0LCAgOX0sCisgICAgeyAyMCwgMTQsIDIxfSwgeyAyMCwgMTQsIDIzfSwgeyAyMCwgMTUsICAxfSwgeyAyMCwgMTUsICAyfSwKKyAgICB7IDIwLCAxNSwgIDV9LCB7IDIwLCAxNSwgMjF9LCB7IDIwLCAxNSwgMjN9LCB7IDIwLCAxOCwgIDF9LAorICAgIHsgMjAsIDE4LCAgMn0sIHsgMjAsIDE4LCAgNX0sIHsgMjAsIDE4LCAgOX0sIHsgMjAsIDE4LCAxOX0sCisgICAgeyAyMCwgMTgsIDIxfSwgeyAyMCwgMTgsIDIzfSwgeyAyMCwgMTksICAxfSwgeyAyMCwgMTksICA1fSwKKyAgICB7IDIwLCAxOSwgIDl9LCB7IDIwLCAxOSwgMTl9LCB7IDIwLCAxOSwgMjF9LCB7IDIwLCAyMCwgIDF9LAorICAgIHsgMjAsIDIwLCAgMn0sIHsgMjAsIDIwLCAgNX0sIHsgMjAsIDIwLCAgOX0sIHsgMjAsIDIwLCAxNH0sCisgICAgeyAyMCwgMjAsIDE3fSwgeyAyMCwgMjAsIDIxfSwgeyAyMCwgMjAsIDIzfSwgeyAyMCwgMjEsICAxfSwKKyAgICB7IDIwLCAyMSwgIDV9LCB7IDIwLCAyMSwgIDl9LCB7IDIwLCAyMSwgMTd9LCB7IDIwLCAyMSwgMjN9LAorICAgIHsgMjAsIDIyLCAgMX0sIHsgMjAsIDIyLCAgMn0sIHsgMjAsIDIyLCAgNX0sIHsgMjAsIDIyLCAgOX0sCisgICAgeyAyMCwgMjIsIDIzfSwgeyAyMCwgMjMsICAxfSwgeyAyMCwgMjMsICAyfSwgeyAyMCwgMjMsICA1fSwKKyAgICB7IDIwLCAyMywgIDl9LCB7IDIwLCAyMywgMTd9LCB7IDIwLCAyMywgMTl9LCB7IDIwLCAyMywgMjF9LAorICAgIHsgMjAsIDIzLCAyM30sIHsgMjAsIDI2LCAgMX0sIHsgMjAsIDI2LCAgMn0sIHsgMjAsIDI2LCAgNX0sCisgICAgeyAyMCwgMjYsICA5fSwgeyAyMCwgMjYsIDE3fSwgeyAyMCwgMjYsIDIxfSwgeyAyMCwgMjYsIDIzfSwKKyAgICB7IDIwLCAyNywgIDF9LCB7IDIwLCAyNywgIDJ9LCB7IDIwLCAyNywgIDV9LCB7IDIwLCAyNywgIDd9LAorICAgIHsgMjAsIDI3LCAgOH0sIHsgMjAsIDI3LCAgOX0sIHsgMjAsIDI3LCAxMH0sIHsgMjAsIDI3LCAxN30sCisgICAgeyAyMCwgMjcsIDE5fSwgeyAyMCwgMjcsIDIxfSwgeyAyMCwgMjcsIDIzfSwgeyAyMCwgMjcsIDI3fSwKKyAgICB7IDIwLCAyOCwgIDF9LCB7IDIwLCAyOCwgIDV9LCB7IDIwLCAyOCwgIDl9LCB7IDIwLCAyOCwgMTd9LAorICAgIHsgMjAsIDI4LCAxOX0sIHsgMjAsIDI4LCAyM30sIHsgMjAsIDI5LCAgMX0sIHsgMjAsIDI5LCAgMn0sCisgICAgeyAyMCwgMjksICA1fSwgeyAyMCwgMjksICA5fSwgeyAyMCwgMjksIDE3fSwgeyAyMCwgMjksIDE5fSwKKyAgICB7IDIwLCAyOSwgMjF9LCB7IDIwLCAyOSwgMjN9LAorfTsKKworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQga3NfdGFibGUyW11bNF0gPQoreworICAgIHsweGE0YmYsICAxLCAgMywgIDF9LCAgezB4YTRjMCwgIDEsICA0LCAgMX0sCisgICAgezB4YTRjMSwgIDEsICA1LCAgMX0sICB7MHhhNGMyLCAgMSwgIDYsICAxfSwKKyAgICB7MHhhNGMzLCAgMSwgIDcsICAxfSwgIHsweGE0YzQsICAxLCAxMCwgIDF9LAorICAgIHsweGE0YzUsICAxLCAxMSwgIDF9LCAgezB4YTRjNiwgIDEsIDEyLCAgMX0sCisgICAgezB4YTRjNywgIDEsIDEzLCAgMX0sICB7MHhhNGM4LCAgMSwgMTQsICAxfSwKKyAgICB7MHhhNGM5LCAgMSwgMTUsICAxfSwgIHsweGE0Y2EsICAxLCAxOCwgIDF9LAorICAgIHsweGE0Y2IsICAxLCAxOSwgIDF9LCAgezB4YTRjYywgIDEsIDIwLCAgMX0sCisgICAgezB4YTRjZCwgIDEsIDIxLCAgMX0sICB7MHhhNGNlLCAgMSwgMjIsICAxfSwKKyAgICB7MHhhNGNmLCAgMSwgMjMsICAxfSwgIHsweGE0ZDAsICAxLCAyNiwgIDF9LAorICAgIHsweGE0ZDEsICAxLCAyNywgIDF9LCAgezB4YTRkMiwgIDEsIDI4LCAgMX0sCisgICAgezB4YTRkMywgIDEsIDI5LCAgMX0sICB7MHhhNGExLCAgMiwgIDIsICAxfSwKKyAgICB7MHhhNGEyLCAgMywgIDIsICAxfSwgIHsweGE0YTQsICA0LCAgMiwgIDF9LAorICAgIHsweGE0YTcsICA1LCAgMiwgIDF9LCAgezB4YTRhOCwgIDYsICAyLCAgMX0sCisgICAgezB4YTRhOSwgIDcsICAyLCAgMX0sICB7MHhhNGIxLCAgOCwgIDIsICAxfSwKKyAgICB7MHhhNGIyLCAgOSwgIDIsICAxfSwgIHsweGE0YjMsIDEwLCAgMiwgIDF9LAorICAgIHsweGE0YjUsIDExLCAgMiwgIDF9LCAgezB4YTRiNiwgMTIsICAyLCAgMX0sCisgICAgezB4YTRiNywgMTMsICAyLCAgMX0sICB7MHhhNGI4LCAxNCwgIDIsICAxfSwKKyAgICB7MHhhNGI5LCAxNSwgIDIsICAxfSwgIHsweGE0YmEsIDE2LCAgMiwgIDF9LAorICAgIHsweGE0YmIsIDE3LCAgMiwgIDF9LCAgezB4YTRiYywgMTgsICAyLCAgMX0sCisgICAgezB4YTRiZCwgMTksICAyLCAgMX0sICB7MHhhNGJlLCAyMCwgIDIsICAxfSwKK307CisKKy8qIMG2x9XH/CDDyry6IC0gv8+8usf8ILO5wNoguq/IrworICogY29udmVyc2lvbjogaW5pdGlhbCBzb3VuZCBvZiBjb21wb3VuZCB0eXBlIC0gPz8/IG9mIGNvbXBsZXRpb24gdHlwZQorICovCisKK3N0YXRpYyBjb25zdCBjaGFyX3Ugam9oYWJfZmNvbl90b193YW5bXSA9Cit7CisgICAgMCwKKyAgICAweGQ0LCAweGExLCAweGEyLCAweGE0LCAweGE3LCAgICAvKiAow6S/8ikspKEspKIspKQspKcgKi8KKyAgICAweGE4LCAweGE5LCAweGIxLCAweGIyLCAweGIzLCAgICAvKiCkqCykqSyksSyksiyksyAqLworICAgIDB4YjUsIDB4YjYsIDB4YjcsIDB4YjgsIDB4YjksICAgIC8qIKS1LKS2LKS3LKS4LKS5ICovCisgICAgMHhiYSwgMHhiYiwgMHhiYywgMHhiZCwgMHhiZSAgICAgLyogpLospLsspLwspL0spL4gKi8KK307CisKKy8qIMG2x9XH/CDB37y6IC0+IL/PvLrH/CCzucDaILqvyK8KKyAqIGNvbnZlcnNpb246IG1lZGlhbCB2b3dlbCBvZiBjb21wb3VuZCB0eXBlIC0gPz8/IG9mIGNvbXBsZXRpb24gdHlwZQorICovCisKK3N0YXRpYyBjb25zdCBjaGFyX3Ugam9oYWJfdm93X3RvX3dhbltdID0KK3sKKyAgICAwLCAwLAorICAgIDB4ZDQsIDB4YmYsIDB4YzAsIDB4YzEsIDB4YzIsIDB4YzMsCS8qICjDpL/yKSykvyykwCykwSykwiykwyAqLworICAgIDAsIDAsCisgICAgMHhjNCwgMHhjNSwgMHhjNiwgMHhjNywgMHhjOCwgMHhjOSwgLyogpMQspMUspMYspMcspMekvyykx6TAICovCisgICAgMCwgMCwKKyAgICAweGNhLCAweGNiLCAweGNjLCAweGNkLCAweGNlLCAweGNmLCAvKiCkx6TTLKTLLKTMLKTMpMMspMykxCykzKTTICovCisgICAgMCwgMCwKKyAgICAweGQwLCAweGQxLCAweGQyLCAweGQzCSAgICAgLyogpNAspNEspNGk0yyk0yAqLworfTsKKworLyogwbbH1cf8IMG+vLogLT4gv8+8usf8ILO5wNoguq/IrworICogY29udmVyc2lvbjogZmluYWwgY29uc29uYW50IG9mIGNvbXBvdW5kIHR5cGUgLSA/Pz8gb2YgY29tcGxldGlvbiB0eXBlCisgKi8KKworc3RhdGljIGNvbnN0IGNoYXJfdSBqb2hhYl9sY29uX3RvX3dhbltdID0KK3sKKyAgICAwLAorICAgIDB4ZDQsIDB4YTEsIDB4YTIsIDB4YTMsIDB4YTQsICAgIC8qICjDpL/yKSwgpKEsIKSiLCCkoaS1LCCkpCAqLworICAgIDB4YTUsIDB4YTYsIDB4YTcsIDB4YTksIDB4YWEsICAgIC8qIKSkpLgsIKSkpL4sIKSnLCCkqSwgpKmkoSAqLworICAgIDB4YWIsIDB4YWMsIDB4YWQsIDB4YWUsIDB4YWYsICAgIC8qIKSppLEsIKSppLIsIKSppLUsIKSppLwsIKSppL0gKi8KKyAgICAweGIwLCAweGIxLCAwLCAgICAweGIyLCAweGI0LCAgICAvKiCkqaS+LCCksSwgMCwgpLIsIKSypLUgKi8KKyAgICAweGI1LCAweGI2LCAweGI3LCAweGI4LCAweGJhLCAgICAvKiCktSwgpLYsIKS3LCCkuCwgpLogKi8KKyAgICAweGJiLCAweGJjLCAweGJkLCAweGJlCSAgICAgLyogpLssIKS8LCCkvSwgpL4gKi8KK307CisKKyAgICBzdGF0aWMgdm9pZAorY29udmVydF9rc190b18zKHNyYywgZnAsIG1wLCBscCkKKyAgICBjb25zdCBjaGFyX3UgICAgKnNyYzsKKyAgICBpbnQJCSAgICAqZnA7CisgICAgaW50CQkgICAgKm1wOworICAgIGludAkJICAgICpscDsKK3sKKyAgICBpbnQgaCA9ICpzcmM7CisgICAgaW50IGxvdyA9ICooc3JjICsgMSk7CisgICAgaW50IGM7CisgICAgaW50IGk7CisKKyAgICBpZiAoKGkgPSBoYW5faW5kZXgoaCwgbG93KSkgPj0gMAorCSYmIGkgPCBzaXplb2Yoa3NfdGFibGUxKS9zaXplb2Yoa3NfdGFibGUxWzBdKSkKKyAgICB7CisJKmZwID0ga3NfdGFibGUxW2ldWzBdOworCSptcCA9IGtzX3RhYmxlMVtpXVsxXTsKKwkqbHAgPSBrc190YWJsZTFbaV1bMl07CisgICAgfQorICAgIGVsc2UKKyAgICB7CisJYyA9IChoIDw8IDgpIHwgbG93OworCWZvciAoaSA9IDA7IGkgPCA0MDsgaSsrKQorCSAgICBpZiAoa3NfdGFibGUyW2ldWzBdID09IGMpCisJICAgIHsKKwkJKmZwID0ga3NfdGFibGUyW2ldWzFdOworCQkqbXAgPSBrc190YWJsZTJbaV1bMl07CisJCSpscCA9IGtzX3RhYmxlMltpXVszXTsKKwkJcmV0dXJuOworCSAgICB9CisJKmZwID0gMHhmZjsJLyogsde3ocfIIMTateUgKGdyYXBoaWMgY29kZSkgKi8KKwkqbXAgPSBoOworCSpscCA9IGxvdzsKKyAgICB9Cit9CisKKyAgICBzdGF0aWMgaW50Citjb252ZXJ0XzNfdG9fa3MoZnYsIG12LCBsdiwgZGVzKQorICAgIGludAkgICAgZnY7CisgICAgaW50CSAgICBtdjsKKyAgICBpbnQJICAgIGx2OworICAgIGNoYXJfdSAgKmRlczsKK3sKKyAgICBjaGFyX3Uga2V5WzNdOworICAgIHJlZ2lzdGVyIGludCBoaSwgbG8sIG1pID0gMCwgcmVzdWx0LCBmb3VuZDsKKworICAgIGlmIChmdiA9PSAweGZmKQorICAgIHsKKwlkZXNbMF0gPSBtdjsKKwlkZXNbMV0gPSBsdjsKKwlyZXR1cm4gMjsKKyAgICB9CisgICAga2V5WzBdID0gZnY7CisgICAga2V5WzFdID0gbXY7CisgICAga2V5WzJdID0gbHY7CisgICAgbG8gPSAwOworICAgIGhpID0gc2l6ZW9mKGtzX3RhYmxlMSkvMyAtIDE7CisgICAgZm91bmQgPSAwOworICAgIHdoaWxlIChsbyArIDEgPCBoaSkKKyAgICB7CisJbWkgPSAobG8gKyBoaSkvMjsKKwlyZXN1bHQgPSBTVFJOQ01QKGtzX3RhYmxlMVttaV0sIGtleSwgMyk7CisJaWYgKHJlc3VsdCA9PSAwKQorCXsKKwkgICAgZm91bmQgPSAxOworCSAgICBicmVhazsKKwl9CisJZWxzZSBpZiAocmVzdWx0ID4gMCkKKwkgICAgaGkgPSBtaTsKKwllbHNlCisJICAgIGxvID0gbWk7CisgICAgfQorICAgIGlmICghZm91bmQpCisgICAgeworCWlmICghU1RSTkNNUChrc190YWJsZTFbbG9dLCBrZXksIDMpKQorCXsKKwkgICAgZm91bmQgPSAxOworCSAgICBtaSA9IGxvOworCX0KKwlpZiAoIVNUUk5DTVAoa3NfdGFibGUxW2hpXSwga2V5LCAzKSkKKwl7CisJICAgIGZvdW5kID0gMTsKKwkgICAgbWkgPSBoaTsKKwl9CisgICAgfQorICAgIGlmICghZm91bmQpCisgICAgeworCWZvciAobWkgPSAwOyBtaSA8IDQwOyBtaSsrKQorCSAgICBpZiAoa3NfdGFibGUyW21pXVsxXSA9PSBmdiAmJiBrc190YWJsZTJbbWldWzJdID09IG12ICYmCisJCWtzX3RhYmxlMlttaV1bM10gPT0gbHYpCisJICAgIHsKKwkJZGVzWzBdID0gKHVuc2lnbmVkKShrc190YWJsZTJbbWldWzBdKSA+PiA4OworCQlkZXNbMV0gPSBrc190YWJsZTJbbWldWzBdOworCQlyZXR1cm4gMjsJLyogZm91bmQgKi8KKwkgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworCWRlc1swXSA9IG1pIC8gKDB4ZmYtMHhhMSkgKyAweGIwOworCWRlc1sxXSA9IG1pICUgKDB4ZmYtMHhhMSkgKyAweGExOworCXJldHVybiAyOwkJLyogZm91bmQgKi8KKyAgICB9CisKKyAgICAvKiC/z7y6x/wgx6W/oSC++LTZLiBgYEtTIEMgNTYwMSAtIDE5OTIgwaS6uCCxs8ivv+sgus7IoyDH2LyzJycKKyAgICAgKiAzLjMgwP2/oSC8s7jttcgguea5/cC4t84gZW5jb2Rpbmcgx9G02S4KKyAgICAgKi8KKworICAgICpkZXMrKyA9IDB4YTQ7CQkgICAgIC8qIMOkv/IgKi8KKyAgICAqZGVzKysgPSAweGQ0OworICAgICpkZXMrKyA9IDB4YTQ7CQkgICAgIC8qILO5wNq0wiC48LXOIGE0IMfgv6EgwNa02S4gKi8KKyAgICAqZGVzKysgPSBqb2hhYl9mY29uX3RvX3dhbltmdl07CisgICAgKmRlcysrID0gMHhhNDsKKyAgICAqZGVzKysgPSBqb2hhYl92b3dfdG9fd2FuW212XTsKKyAgICAqZGVzKysgPSAweGE0OworICAgICpkZXMrKyA9IGpvaGFiX2xjb25fdG9fd2FuW2x2XTsKKyAgICByZXR1cm4gODsKK30K