ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGJmNjY2NDguLjY2NjliZjAgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMSw3ICsxLDEwIEBACiAvR0lULUJVSUxELU9QVElPTlMKIC9HSVQtQ0ZMQUdTCiAvR0lULUxERkxBR1MKLS9HSVQtR1VJLVZBUlMKKy9HSVQtUFJFRklYCisvR0lULVBZVEhPTi1WQVJTCisvR0lULVNDUklQVC1ERUZJTkVTCisvR0lULVVTRVItQUdFTlQKIC9HSVQtVkVSU0lPTi1GSUxFCiAvYmluLXdyYXBwZXJzLwogL2dpdApAQCAtMTksNiArMjIsNyBAQAogL2dpdC1idW5kbGUKIC9naXQtY2F0LWZpbGUKIC9naXQtY2hlY2stYXR0cgorL2dpdC1jaGVjay1pZ25vcmUKIC9naXQtY2hlY2stcmVmLWZvcm1hdAogL2dpdC1jaGVja291dAogL2dpdC1jaGVja291dC1pbmRleApAQCAtMzEsNiArMzUsNyBAQAogL2dpdC1jb21taXQtdHJlZQogL2dpdC1jb25maWcKIC9naXQtY291bnQtb2JqZWN0cworL2dpdC1jcmVkZW50aWFsCiAvZ2l0LWNyZWRlbnRpYWwtY2FjaGUKIC9naXQtY3JlZGVudGlhbC1jYWNoZS0tZGFlbW9uCiAvZ2l0LWNyZWRlbnRpYWwtc3RvcmUKQEAgLTEyMCw3ICsxMjUsOCBAQAogL2dpdC1yZW1vdGUtZnRwcwogL2dpdC1yZW1vdGUtZmQKIC9naXQtcmVtb3RlLWV4dAotL2dpdC1yZW1vdGUtdGVzdGdpdAorL2dpdC1yZW1vdGUtdGVzdHB5CisvZ2l0LXJlbW90ZS10ZXN0c3ZuCiAvZ2l0LXJlcGFjawogL2dpdC1yZXBsYWNlCiAvZ2l0LXJlcG8tY29uZmlnCkBAIC0xNjYsMTMgKzE3MiwxMSBAQAogL2dpdC13aGF0Y2hhbmdlZAogL2dpdC13cml0ZS10cmVlCiAvZ2l0LWNvcmUtKi8/KgotL2dpdGstZ2l0L2dpdGstd2lzaAogL2dpdHdlYi9HSVRXRUItQlVJTEQtT1BUSU9OUwogL2dpdHdlYi9naXR3ZWIuY2dpCiAvZ2l0d2ViL3N0YXRpYy9naXR3ZWIuanMKIC9naXR3ZWIvc3RhdGljL2dpdHdlYi5taW4uKgogL3Rlc3QtY2htdGltZQotL3Rlc3QtY3JlZGVudGlhbAogL3Rlc3QtY3R5cGUKIC90ZXN0LWRhdGUKIC90ZXN0LWRlbHRhCkBAIC0xODYsMTIgKzE5MCwxNSBAQAogL3Rlc3QtbWt0ZW1wCiAvdGVzdC1wYXJzZS1vcHRpb25zCiAvdGVzdC1wYXRoLXV0aWxzCisvdGVzdC1yZWdleAogL3Rlc3QtcmV2aXNpb24td2Fsa2luZwogL3Rlc3QtcnVuLWNvbW1hbmQKIC90ZXN0LXNoYTEKIC90ZXN0LXNpZ2NoYWluCisvdGVzdC1zdHJpbmctbGlzdAogL3Rlc3Qtc3VicHJvY2VzcwogL3Rlc3Qtc3ZuLWZlCisvdGVzdC13aWxkbWF0Y2gKIC9jb21tb24tY21kcy5oCiAqLnRhci5negogKi5kc2MKZGlmZiAtLWdpdCBhLy5tYWlsbWFwIGIvLm1haWxtYXAKaW5kZXggNjMwMzc4Mi4uNDhkN2FjZiAxMDA2NDQKLS0tIGEvLm1haWxtYXAKKysrIGIvLm1haWxtYXAKQEAgLTksNyArOSw5IEBACiBBbGV4YW5kZXIgR2F2cmlsb3YgPGFuZ2F2cmlsb3ZAZ21haWwuY29tPgogQW5lZXNoIEt1bWFyIEsuViA8YW5lZXNoLmt1bWFyQGdtYWlsLmNvbT4KIEJyaWFuIE0uIENhcmxzb24gPHNhbmRhbHNAY3J1c3R5dG9vdGhwYXN0ZS5hdGguY3g+CitDaGVuZyBSZW5xdWFuIDxjcnF1YW5AZ21haWwuY29tPgogQ2hyaXMgU2hvZW1ha2VyIDxjLnNob2VtYWtlckBjb3gubmV0PgorRGFuIEpvaG5zb24gPGNvbXB1dGVyZHJ1aWRAZ21haWwuY29tPgogRGFuYSBMLiBIb3cgPGRhbmFob3dAZ21haWwuY29tPgogRGFuYSBMLiBIb3cgPGhvd0BkZWF0aHZhbGxleS5jc3dpdGNoLmNvbT4KIERhbmllbCBCYXJrYWxvdyA8YmFya2Fsb3dAaWFiZXJ2b24ub3JnPgpAQCAtMTgsMTQgKzIwLDIyIEBACiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+CiBEZXNraW4gTWlsbGVyIDxkZXNraW5tQHVtaWNoLmVkdT4KIERpcmsgU8O8c3Nlcm90dCA8bmV3c2xldHRlckBkaXJrLm15MS5jYz4KK0VyaWMgUy4gUmF5bW9uZCA8ZXNyQHRoeXJzdXMuY29tPgorRXJpayBGYXllLUx1bmQgPGt1c21hYml0ZUBnbWFpbC5jb20+IDxrdXNtYWJpdGVAZ29vZ2xlbWFpbC5jb20+CiBGcmVkcmlrIEt1aXZpbmVuIDxmcmVrdTA0NUBzdHVkZW50LmxpdS5zZT4KK0Zyw6lkw6lyaWMgSGVpdHptYW5uIDxmcmVkZXJpYy5oZWl0em1hbm5AZ21haWwuY29tPgogSC4gUGV0ZXIgQW52aW4gPGhwYUBib25kZS5zYy5vcmlvbm11bHRpLmNvbT4KIEguIFBldGVyIEFudmluIDxocGFAdGF6ZW5kYS5zYy5vcmlvbm11bHRpLmNvbT4KIEguIFBldGVyIEFudmluIDxocGFAdHJhbnRvci5ob3MuYW52aW4ub3JnPgogSG9yc3QgSC4gdm9uIEJyYW5kIDx2b25icmFuZEBpbmYudXRmc20uY2w+CiDEsHNtYWlsIETDtm5tZXogPGlzbWFpbEBwYXJkdXMub3JnLnRyPgorSmFrdWIgTmFyxJlic2tpIDxqbmFyZWJAZ21haWwuY29tPgogSmF5IFNvZmZpYW4gPGpheXNvZmZpYW4rZ2l0QGdtYWlsLmNvbT4KK0plZmYgS2luZyA8cGVmZkBwZWZmLm5ldD4gPHBlZmZAZ2l0aHViLmNvbT4KIEpvYWNoaW0gQmVyZGFsIEhhZ2EgPGNqaGFnYUBmeXMudWlvLm5vPgorSm9oYW5uZXMgU2l4dCA8ajZ0QGtkYmcub3JnPiA8am9oYW5uZXMuc2l4dEB0ZWxlY29tLmF0PgorSm9oYW5uZXMgU2l4dCA8ajZ0QGtkYmcub3JnPiA8ai5zaXh0QHZpc2NvdmVyeS5uZXQ+CitKb2hhbm5lcyBTaXh0IDxqNnRAa2RiZy5vcmc+IDxKLlNpeHRAZXVkYXB0aWNzLmNvbT4KIEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CiBKb24gU2V5bW91ciA8am9uQGJsYWNrY3ViZXMuZHluZG5zLm9yZz4KIEpvbmF0aGFuIE5pZWRlciA8anJuaWVkZXJAdWNoaWNhZ28uZWR1PgpAQCAtMzcsMTIgKzQ3LDIyIEBACiBKdW5pbyBDIEhhbWFubyA8Z2l0c3RlckBwb2JveC5jb20+IDxqdW5pb0BrZXJuZWwub3JnPgogSnVuaW8gQyBIYW1hbm8gPGdpdHN0ZXJAcG9ib3guY29tPiA8anVua2lvQGNveC5uZXQ+CiBLYXJsIEhhc3NlbHN0csO2bSA8a2hhQHRyZXNrYWwuY29tPgorS2V2aW4gTGV1bmcgPGtldmlubHNrQGdtYWlsLmNvbT4KIEtlbnQgRW5nc3Ryb20gPGtlbnRAbHlzYXRvci5saXUuc2U+CiBMYXJzIERvZWxsZSA8bGFycy5kb2VsbGVAb24tbGluZSAhIGRlPgogTGFycyBEb2VsbGUgPGxhcnMuZG9lbGxlQG9uLWxpbmUuZGU+CiBMaSBIb25nIDxsZWVob25nQHBrdS5lZHUuY24+CitMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+IDx0b3J2YWxkc0B3b29keS5saW51eC1mb3VuZGF0aW9uLm9yZz4KK0xpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4gPHRvcnZhbGRzQG9zZGwub3JnPgorTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnPiA8dG9ydmFsZHNAZzUub3NkbC5vcmc+CitMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+IDx0b3J2YWxkc0Bldm8ub3NkbC5vcmc+CitMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+IDx0b3J2YWxkc0BwcGM5NzAub3NkbC5vcmc+CitMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+IDx0b3J2YWxkc0BwcGM5NzAub3NkbC5vcmcuKG5vbmUpPgogTHVrYXMgU2FuZHN0csO2bSA8bHVrYXNzQGV0ZWsuY2hhbG1lcnMuc2U+Ci1NYXJ0aW4gTGFuZ2hvZmYgPG1hcnRpbkBsYXB0b3Aub3JnPgorTWFyYy1BbmRyw6kgTHVyZWF1IDxtYXJjYW5kcmUubHVyZWF1QGdtYWlsLmNvbT4KK01hcmsgUmFkYSA8bWFyYWRhQHV3YXRlcmxvby5jYT4KK01hcnRpbiBMYW5naG9mZiA8bWFydGluQGxhcHRvcC5vcmc+IDxtYXJ0aW5AY2F0YWx5c3QubmV0Lm56PgorTWFydGluIHZvbiBad2VpZ2JlcmdrIDxtYXJ0aW52b256QGdtYWlsLmNvbT4gPG1hcnRpbi52b24uendlaWdiZXJna0BnbWFpbC5jb20+CiBNaWNoYWVsIENvbGVtYW4gPHR1dHVmYW5AZ21haWwuY29tPgogTWljaGFlbCBKIEdydWJlciA8Z2l0QGRybWljaGEud2FycG1haWwubmV0PiA8bWljaGFlbGpncnViZXIrZ21hbmVAZmFzdG1haWwuZm0+CiBNaWNoYWVsIFcuIE9sc29uIDxtd29sc29uQGdudS5vcmc+CkBAIC01MSwxNiArNzEsMjMgQEAKIE5hbmFrbyBTaGlyYWlzaGkgPG5hbmFrbzNAbGF2YWJpdC5jb20+CiBOZ3V54buFbiBUaMOhaSBOZ+G7jWMgRHV5IDxwY2xvdWRzQGdtYWlsLmNvbT4KIDxuaWNvQGZsdXhuaWMubmV0PiA8bmljb0BjYW0ub3JnPgorUGV0ZXIgS3JlZnRpbmcgPHBldGVyQHNvZnR3b2x2ZXMucHAuc2U+IDxwZXRlckBzdmFydGVuLmludGVybi5zb2Z0d29sdmVzLnBwLnNlPgorUGV0ZXIgS3JlZnRpbmcgPHBldGVyQHNvZnR3b2x2ZXMucHAuc2U+IDxwZXRlckBzb2Z0d29sdmVzLnBwLnNlPgorUGV0ciBCYXVkaXMgPHBhc2t5QHVjdy5jej4gPHBhc2t5QHN1c2UuY3o+CiBQaGlsaXBwZSBCcnVoYXQgPGJvb2tAY3Bhbi5vcmc+CitSYWxmIFRoaWVsb3cgPHJhbGYudGhpZWxvd0BnbWFpbC5jb20+IDxyYWxmLnRoaWVsb3dAZ29vZ2xlbWFpbC5jb20+CiBSYW1zYXkgQWxsYW4gSm9uZXMgPHJhbXNheUByYW1zYXkxLmRlbW9uLmNvLnVrPgogUmVuw6kgU2NoYXJmZSA8cmVuZS5zY2hhcmZlQGxzcmZpcmUuYXRoLmN4PgogUm9iZXJ0IEZpdHpzaW1vbnMgPHJvYmZpdHpAMjczay5uZXQ+CitSb2JlcnQgWmVoIDxyb2JlcnQuYS56ZWhAZ21haWwuY29tPgogU2FtIFZpbGFpbiA8c2FtQHZpbGFpbi5uZXQ+CiBTYW50aSBCw6lqYXIgPHNiZWphckBnbWFpbC5jb20+CiBTZWFuIEVzdGFicm9va3MgPHNlYW5sa21sQHN5bXBhdGljby5jYT4KIFNoYXduIE8uIFBlYXJjZSA8c3BlYXJjZUBzcGVhcmNlLm9yZz4KIFN0ZXZlbiBHcmltbSA8a29yZXRoQG1pZHdpbnRlci5jb20+CitUYXkgUmF5IENodWFuIDxyY3RheTg5QGdtYWlsLmNvbT4KIFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CitUaG9tYXMgUmFzdCA8dHJhc3RAaW5mLmV0aHouY2g+IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CiBUb255IEx1Y2sgPHRvbnkubHVja0BpbnRlbC5jb20+CiBVd2UgS2xlaW5lLUvDtm5pZyA8VXdlX1plaXNiZXJnZXJAZGlnaS5jb20+CiBVd2UgS2xlaW5lLUvDtm5pZyA8VXdlLktsZWluZS1Lb2VuaWdAZGlnaS5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uLy5naXRpZ25vcmUgYi9Eb2N1bWVudGF0aW9uLy5naXRpZ25vcmUKaW5kZXggZDYyYWViZC4uMmM4YjJkNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi8uZ2l0aWdub3JlCisrKyBiL0RvY3VtZW50YXRpb24vLmdpdGlnbm9yZQpAQCAtOSw0ICs5LDUgQEAKIGhvd3RvLWluZGV4LnR4dAogZG9jLmRlcAogY21kcy0qLnR4dAorbWVyZ2V0b29scy0qLnR4dAogbWFucGFnZS1iYXNlLXVybC54c2wKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQ29kaW5nR3VpZGVsaW5lcyBiL0RvY3VtZW50YXRpb24vQ29kaW5nR3VpZGVsaW5lcwppbmRleCA0NTU3NzExLi41NTlkNWY5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL0NvZGluZ0d1aWRlbGluZXMKKysrIGIvRG9jdW1lbnRhdGlvbi9Db2RpbmdHdWlkZWxpbmVzCkBAIC0xLDUgKzEsNSBAQAogTGlrZSBvdGhlciBwcm9qZWN0cywgd2UgYWxzbyBoYXZlIHNvbWUgZ3VpZGVsaW5lcyB0byBrZWVwIHRvIHRoZQotY29kZS4gIEZvciBnaXQgaW4gZ2VuZXJhbCwgdGhyZWUgcm91Z2ggcnVsZXMgYXJlOgorY29kZS4gIEZvciBHaXQgaW4gZ2VuZXJhbCwgdGhyZWUgcm91Z2ggcnVsZXMgYXJlOgogCiAgLSBNb3N0IGltcG9ydGFudGx5LCB3ZSBuZXZlciBzYXkgIkl0J3MgaW4gUE9TSVg7IHdlJ2xsIGhhcHBpbHkKICAgIGlnbm9yZSB5b3VyIG5lZWRzIHNob3VsZCB5b3VyIHN5c3RlbSBub3QgY29uZm9ybSB0byBpdC4iCkBAIC0xOCwxMSArMTgsMTIgQEAKICAgIGp1ZGdlbWVudCBjYWxsLCB0aGUgZGVjaXNpb24gYmFzZWQgbW9yZSBvbiByZWFsIHdvcmxkCiAgICBjb25zdHJhaW50cyBwZW9wbGUgZmFjZSB0aGFuIHdoYXQgdGhlIHBhcGVyIHN0YW5kYXJkIHNheXMuCiAKK01ha2UgeW91ciBjb2RlIHJlYWRhYmxlIGFuZCBzZW5zaWJsZSwgYW5kIGRvbid0IHRyeSB0byBiZSBjbGV2ZXIuCiAKIEFzIGZvciBtb3JlIGNvbmNyZXRlIGd1aWRlbGluZXMsIGp1c3QgaW1pdGF0ZSB0aGUgZXhpc3RpbmcgY29kZQogKHRoaXMgaXMgYSBnb29kIGd1aWRlbGluZSwgbm8gbWF0dGVyIHdoaWNoIHByb2plY3QgeW91IGFyZQogY29udHJpYnV0aW5nIHRvKS4gSXQgaXMgYWx3YXlzIHByZWZlcmFibGUgdG8gbWF0Y2ggdGhlIF9sb2NhbF8KLWNvbnZlbnRpb24uIE5ldyBjb2RlIGFkZGVkIHRvIGdpdCBzdWl0ZSBpcyBleHBlY3RlZCB0byBtYXRjaAorY29udmVudGlvbi4gTmV3IGNvZGUgYWRkZWQgdG8gR2l0IHN1aXRlIGlzIGV4cGVjdGVkIHRvIG1hdGNoCiB0aGUgb3ZlcmFsbCBzdHlsZSBvZiBleGlzdGluZyBjb2RlLiBNb2RpZmljYXRpb25zIHRvIGV4aXN0aW5nCiBjb2RlIGlzIGV4cGVjdGVkIHRvIG1hdGNoIHRoZSBzdHlsZSB0aGUgc3Vycm91bmRpbmcgY29kZSBhbHJlYWR5CiB1c2VzIChldmVuIGlmIGl0IGRvZXNuJ3QgbWF0Y2ggdGhlIG92ZXJhbGwgc3R5bGUgb2YgZXhpc3RpbmcgY29kZSkuCkBAIC03NiwxMSArNzcsMTkgQEAKIAogIC0gV2UgZG8gbm90IHVzZSBQcm9jZXNzIFN1YnN0aXR1dGlvbiA8KGxpc3QpIG9yID4obGlzdCkuCiAKKyAtIERvIG5vdCB3cml0ZSBjb250cm9sIHN0cnVjdHVyZXMgb24gYSBzaW5nbGUgbGluZSB3aXRoIHNlbWljb2xvbi4KKyAgICJ0aGVuIiBzaG91bGQgYmUgb24gdGhlIG5leHQgbGluZSBmb3IgaWYgc3RhdGVtZW50cywgYW5kICJkbyIKKyAgIHNob3VsZCBiZSBvbiB0aGUgbmV4dCBsaW5lIGZvciAid2hpbGUiIGFuZCAiZm9yIi4KKwogIC0gV2UgcHJlZmVyICJ0ZXN0IiBvdmVyICJbIC4uLiBdIi4KIAogIC0gV2UgZG8gbm90IHdyaXRlIHRoZSBub2lzZXdvcmQgImZ1bmN0aW9uIiBpbiBmcm9udCBvZiBzaGVsbAogICAgZnVuY3Rpb25zLgogCisgLSBXZSBwcmVmZXIgYSBzcGFjZSBiZXR3ZWVuIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCB0aGUgcGFyZW50aGVzZXMuIFRoZQorICAgb3BlbmluZyAieyIgc2hvdWxkIGFsc28gYmUgb24gdGhlIHNhbWUgbGluZS4KKyAgIEUuZy46IG15X2Z1bmN0aW9uICgpIHsKKwogIC0gQXMgdG8gdXNlIG9mIGdyZXAsIHN0aWNrIHRvIGEgc3Vic2V0IG9mIEJSRSAobmFtZWx5LCBubyBce20sblx9LAogICAgWzo6XSwgWz09XSwgbm9yIFsuLl0pIGZvciBwb3J0YWJpbGl0eS4KIApAQCAtMTA0LDYgKzExMywxNCBAQAogCiAgLSBXZSB0cnkgdG8ga2VlcCB0byBhdCBtb3N0IDgwIGNoYXJhY3RlcnMgcGVyIGxpbmUuCiAKKyAtIFdlIHRyeSB0byBzdXBwb3J0IGEgd2lkZSByYW5nZSBvZiBDIGNvbXBpbGVycyB0byBjb21waWxlIEdpdCB3aXRoLAorICAgaW5jbHVkaW5nIG9sZCBvbmVzLiBUaGF0IG1lYW5zIHRoYXQgeW91IHNob3VsZCBub3QgdXNlIEM5OQorICAgaW5pdGlhbGl6ZXJzLCBldmVuIGlmIGEgbG90IG9mIGNvbXBpbGVycyBncm9rIGl0LgorCisgLSBWYXJpYWJsZXMgaGF2ZSB0byBiZSBkZWNsYXJlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jay4KKworIC0gTlVMTCBwb2ludGVycyBzaGFsbCBiZSB3cml0dGVuIGFzIE5VTEwsIG5vdCBhcyAwLgorCiAgLSBXaGVuIGRlY2xhcmluZyBwb2ludGVycywgdGhlIHN0YXIgc2lkZXMgd2l0aCB0aGUgdmFyaWFibGUKICAgIG5hbWUsIGkuZS4gImNoYXIgKnN0cmluZyIsIG5vdCAiY2hhciogc3RyaW5nIiBvcgogICAgImNoYXIgKiBzdHJpbmciLiAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gdW5kZXJzdGFuZCBjb2RlCkBAIC0xNDgsMTQgKzE2NSwxNCBAQAogCiAgLSBJZiB5b3UgYXJlIHBsYW5uaW5nIGEgbmV3IGNvbW1hbmQsIGNvbnNpZGVyIHdyaXRpbmcgaXQgaW4gc2hlbGwKICAgIG9yIHBlcmwgZmlyc3QsIHNvIHRoYXQgY2hhbmdlcyBpbiBzZW1hbnRpY3MgY2FuIGJlIGVhc2lseQotICAgY2hhbmdlZCBhbmQgZGlzY3Vzc2VkLiAgTWFueSBnaXQgY29tbWFuZHMgc3RhcnRlZCBvdXQgbGlrZQorICAgY2hhbmdlZCBhbmQgZGlzY3Vzc2VkLiAgTWFueSBHaXQgY29tbWFuZHMgc3RhcnRlZCBvdXQgbGlrZQogICAgdGhhdCwgYW5kIGEgZmV3IGFyZSBzdGlsbCBzY3JpcHRzLgogCi0gLSBBdm9pZCBpbnRyb2R1Y2luZyBhIG5ldyBkZXBlbmRlbmN5IGludG8gZ2l0LiBUaGlzIG1lYW5zIHlvdQorIC0gQXZvaWQgaW50cm9kdWNpbmcgYSBuZXcgZGVwZW5kZW5jeSBpbnRvIEdpdC4gVGhpcyBtZWFucyB5b3UKICAgIHVzdWFsbHkgc2hvdWxkIHN0YXkgYXdheSBmcm9tIHNjcmlwdGluZyBsYW5ndWFnZXMgbm90IGFscmVhZHkKLSAgIHVzZWQgaW4gdGhlIGdpdCBjb3JlIGNvbW1hbmQgc2V0ICh1bmxlc3MgeW91ciBjb21tYW5kIGlzIGNsZWFybHkKKyAgIHVzZWQgaW4gdGhlIEdpdCBjb3JlIGNvbW1hbmQgc2V0ICh1bmxlc3MgeW91ciBjb21tYW5kIGlzIGNsZWFybHkKICAgIHNlcGFyYXRlIGZyb20gaXQsIHN1Y2ggYXMgYW4gaW1wb3J0ZXIgdG8gY29udmVydCByYW5kb20tc2NtLVgKLSAgIHJlcG9zaXRvcmllcyB0byBnaXQpLgorICAgcmVwb3NpdG9yaWVzIHRvIEdpdCkuCiAKICAtIFdoZW4gd2UgcGFzcyA8c3RyaW5nLCBsZW5ndGg+IHBhaXIgdG8gZnVuY3Rpb25zLCB3ZSBzaG91bGQgdHJ5IHRvCiAgICBwYXNzIHRoZW0gaW4gdGhhdCBvcmRlci4KQEAgLTE2Myw4ICsxODAsNjggQEAKICAtIFVzZSBHaXQncyBnZXR0ZXh0IHdyYXBwZXJzIHRvIG1ha2UgdGhlIHVzZXIgaW50ZXJmYWNlCiAgICB0cmFuc2xhdGFibGUuIFNlZSAiTWFya2luZyBzdHJpbmdzIGZvciB0cmFuc2xhdGlvbiIgaW4gcG8vUkVBRE1FLgogCitGb3IgUGVybCBwcm9ncmFtczoKKworIC0gTW9zdCBvZiB0aGUgQyBndWlkZWxpbmVzIGFib3ZlIGFwcGx5LgorCisgLSBXZSB0cnkgdG8gc3VwcG9ydCBQZXJsIDUuOCBhbmQgbGF0ZXIgKCJ1c2UgUGVybCA1LjAwOCIpLgorCisgLSB1c2Ugc3RyaWN0IGFuZCB1c2Ugd2FybmluZ3MgYXJlIHN0cm9uZ2x5IHByZWZlcnJlZC4KKworIC0gRG9uJ3Qgb3ZlcnVzZSBzdGF0ZW1lbnQgbW9kaWZpZXJzIHVubGVzcyB1c2luZyB0aGVtIG1ha2VzIHRoZQorICAgcmVzdWx0IGVhc2llciB0byBmb2xsb3cuCisKKwkuLi4gZG8gc29tZXRoaW5nIC4uLgorCWRvX3RoaXMoKSB1bmxlc3MgKGNvbmRpdGlvbik7CisgICAgICAgIC4uLiBkbyBzb21ldGhpbmcgZWxzZSAuLi4KKworICAgaXMgbW9yZSByZWFkYWJsZSB0aGFuOgorCisJLi4uIGRvIHNvbWV0aGluZyAuLi4KKwl1bmxlc3MgKGNvbmRpdGlvbikgeworCQlkb190aGlzKCk7CisJfQorICAgICAgICAuLi4gZG8gc29tZXRoaW5nIGVsc2UgLi4uCisKKyAgICpvbmx5KiB3aGVuIHRoZSBjb25kaXRpb24gaXMgc28gcmFyZSB0aGF0IGRvX3RoaXMoKSB3aWxsIGJlIGFsbW9zdAorICAgYWx3YXlzIGNhbGxlZC4KKworIC0gV2UgdHJ5IHRvIGF2b2lkIGFzc2lnbm1lbnRzIGluc2lkZSAiaWYgKCkiIGNvbmRpdGlvbnMuCisKKyAtIExlYXJuIGFuZCB1c2UgR2l0LnBtIGlmIHlvdSBuZWVkIHRoYXQgZnVuY3Rpb25hbGl0eS4KKworIC0gRm9yIEVtYWNzLCBpdCdzIHVzZWZ1bCB0byBwdXQgdGhlIGZvbGxvd2luZyBpbgorICAgR0lUX0NIRUNLT1VULy5kaXItbG9jYWxzLmVsLCBhc3N1bWluZyB5b3UgdXNlIGNwZXJsLW1vZGU6CisKKyAgICA7OyBub3RlIHRoZSBmaXJzdCBwYXJ0IGlzIHVzZWZ1bCBmb3IgQyBlZGl0aW5nLCB0b28KKyAgICAoKG5pbCAuICgoaW5kZW50LXRhYnMtbW9kZSAuIHQpCisgICAgICAgICAgICAgICAgICAodGFiLXdpZHRoIC4gOCkKKyAgICAgICAgICAgICAgICAgIChmaWxsLWNvbHVtbiAuIDgwKSkpCisgICAgIChjcGVybC1tb2RlIC4gKChjcGVybC1pbmRlbnQtbGV2ZWwgLiA4KQorICAgICAgICAgICAgICAgICAgICAoY3BlcmwtZXh0cmEtbmV3bGluZS1iZWZvcmUtYnJhY2UgLiBuaWwpCisgICAgICAgICAgICAgICAgICAgIChjcGVybC1tZXJnZS10cmFpbGluZy1lbHNlIC4gdCkpKSkKKworRm9yIFB5dGhvbiBzY3JpcHRzOgorCisgLSBXZSBmb2xsb3cgUEVQLTggKGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDAwOC8pLgorCisgLSBBcyBhIG1pbmltdW0sIHdlIGFpbSB0byBiZSBjb21wYXRpYmxlIHdpdGggUHl0aG9uIDIuNiBhbmQgMi43LgorCisgLSBXaGVyZSByZXF1aXJlZCBsaWJyYXJpZXMgZG8gbm90IHJlc3RyaWN0IHVzIHRvIFB5dGhvbiAyLCB3ZSB0cnkgdG8KKyAgIGFsc28gYmUgY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAzLjEgYW5kIGxhdGVyLgorCisgLSBXaGVuIHlvdSBtdXN0IGRpZmZlcmVudGlhdGUgYmV0d2VlbiBVbmljb2RlIGxpdGVyYWxzIGFuZCBieXRlIHN0cmluZworICAgbGl0ZXJhbHMsIGl0IGlzIE9LIHRvIHVzZSB0aGUgJ2InIHByZWZpeC4gIEV2ZW4gdGhvdWdoIHRoZSBQeXRob24KKyAgIGRvY3VtZW50YXRpb24gZm9yIHZlcnNpb24gMi42IGRvZXMgbm90IG1lbnRpb24gdGhpcyBwcmVmaXgsIGl0IGhhcworICAgYmVlbiBzdXBwb3J0ZWQgc2luY2UgdmVyc2lvbiAyLjYuMC4KKwogV3JpdGluZyBEb2N1bWVudGF0aW9uOgogCisgTW9zdCAoaWYgbm90IGFsbCkgb2YgdGhlIGRvY3VtZW50YXRpb24gcGFnZXMgYXJlIHdyaXR0ZW4gaW4gdGhlCisgQXNjaWlEb2MgZm9ybWF0IGluICoudHh0IGZpbGVzIChlLmcuIERvY3VtZW50YXRpb24vZ2l0LnR4dCksIGFuZAorIHByb2Nlc3NlZCBpbnRvIEhUTUwgYW5kIG1hbnBhZ2VzIChlLmcuIGdpdC5odG1sIGFuZCBnaXQuMSBpbiB0aGUKKyBzYW1lIGRpcmVjdG9yeSkuCisKICBFdmVyeSB1c2VyLXZpc2libGUgY2hhbmdlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCiAgVGhlIHNhbWUgZ2VuZXJhbCBydWxlIGFzIGZvciBjb2RlIGFwcGxpZXMgLS0gaW1pdGF0ZSB0aGUgZXhpc3RpbmcKICBjb252ZW50aW9ucy4gIEEgZmV3IGNvbW1lbnRlZCBleGFtcGxlcyBmb2xsb3cgdG8gcHJvdmlkZSByZWZlcmVuY2UKQEAgLTIxNCwzICsyOTEsOCBAQAogICAgdmFsaWQgdXNhZ2UuICAiKiIgaGFzIGl0cyBvd24gcGFpciBvZiBicmFja2V0cywgYmVjYXVzZSBpdCBjYW4KICAgIChvcHRpb25hbGx5KSBiZSBzcGVjaWZpZWQgb25seSB3aGVuIG9uZSBvciBtb3JlIG9mIHRoZSBsZXR0ZXJzIGlzCiAgICBhbHNvIHByb3ZpZGVkLgorCisgIEEgbm90ZSBvbiBub3RhdGlvbjoKKyAgIFVzZSAnZ2l0JyAoYWxsIGxvd2VyY2FzZSkgd2hlbiB0YWxraW5nIGFib3V0IGNvbW1hbmRzIGkuZS4gc29tZXRoaW5nCisgICB0aGUgdXNlciB3b3VsZCB0eXBlIGludG8gYSBzaGVsbCBhbmQgdXNlICdHaXQnICh1cHBlcmNhc2UgZmlyc3QgbGV0dGVyKQorICAgd2hlbiB0YWxraW5nIGFib3V0IHRoZSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIGFuZCBpdHMgcHJvcGVydGllcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vTWFrZWZpbGUgYi9Eb2N1bWVudGF0aW9uL01ha2VmaWxlCmluZGV4IDVkNzZhODQuLjYyZGJkOWEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vTWFrZWZpbGUKKysrIGIvRG9jdW1lbnRhdGlvbi9NYWtlZmlsZQpAQCAtMSwxOSArMSw0MSBAQAotTUFOMV9UWFQ9IFwKLQkkKGZpbHRlci1vdXQgJChhZGRzdWZmaXggLnR4dCwgJChBUlRJQ0xFUykgJChTUF9BUlRJQ0xFUykpLCBcCi0JCSQod2lsZGNhcmQgZ2l0LSoudHh0KSkgXAotCWdpdGsudHh0IGdpdHdlYi50eHQgZ2l0LnR4dAotTUFONV9UWFQ9Z2l0YXR0cmlidXRlcy50eHQgZ2l0aWdub3JlLnR4dCBnaXRtb2R1bGVzLnR4dCBnaXRob29rcy50eHQgXAotCWdpdHJlcG9zaXRvcnktbGF5b3V0LnR4dCBnaXR3ZWIuY29uZi50eHQKLU1BTjdfVFhUPWdpdGNsaS50eHQgZ2l0dHV0b3JpYWwudHh0IGdpdHR1dG9yaWFsLTIudHh0IFwKLQlnaXRjdnMtbWlncmF0aW9uLnR4dCBnaXRjb3JlLXR1dG9yaWFsLnR4dCBnaXRnbG9zc2FyeS50eHQgXAotCWdpdGRpZmZjb3JlLnR4dCBnaXRuYW1lc3BhY2VzLnR4dCBnaXRyZXZpc2lvbnMudHh0IGdpdHdvcmtmbG93cy50eHQKKyMgR3VhcmQgYWdhaW5zdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKK01BTjFfVFhUID0KK01BTjVfVFhUID0KK01BTjdfVFhUID0KKworTUFOMV9UWFQgKz0gJChmaWx0ZXItb3V0IFwKKwkJJChhZGRzdWZmaXggLnR4dCwgJChBUlRJQ0xFUykgJChTUF9BUlRJQ0xFUykpLCBcCisJCSQod2lsZGNhcmQgZ2l0LSoudHh0KSkKK01BTjFfVFhUICs9IGdpdC50eHQKK01BTjFfVFhUICs9IGdpdGsudHh0CitNQU4xX1RYVCArPSBnaXRyZW1vdGUtaGVscGVycy50eHQKK01BTjFfVFhUICs9IGdpdHdlYi50eHQKKworTUFONV9UWFQgKz0gZ2l0YXR0cmlidXRlcy50eHQKK01BTjVfVFhUICs9IGdpdGhvb2tzLnR4dAorTUFONV9UWFQgKz0gZ2l0aWdub3JlLnR4dAorTUFONV9UWFQgKz0gZ2l0bW9kdWxlcy50eHQKK01BTjVfVFhUICs9IGdpdHJlcG9zaXRvcnktbGF5b3V0LnR4dAorTUFONV9UWFQgKz0gZ2l0d2ViLmNvbmYudHh0CisKK01BTjdfVFhUICs9IGdpdGNsaS50eHQKK01BTjdfVFhUICs9IGdpdGNvcmUtdHV0b3JpYWwudHh0CiBNQU43X1RYVCArPSBnaXRjcmVkZW50aWFscy50eHQKK01BTjdfVFhUICs9IGdpdGN2cy1taWdyYXRpb24udHh0CitNQU43X1RYVCArPSBnaXRkaWZmY29yZS50eHQKK01BTjdfVFhUICs9IGdpdGdsb3NzYXJ5LnR4dAorTUFON19UWFQgKz0gZ2l0bmFtZXNwYWNlcy50eHQKK01BTjdfVFhUICs9IGdpdHJldmlzaW9ucy50eHQKK01BTjdfVFhUICs9IGdpdHR1dG9yaWFsLTIudHh0CitNQU43X1RYVCArPSBnaXR0dXRvcmlhbC50eHQKK01BTjdfVFhUICs9IGdpdHdvcmtmbG93cy50eHQKIAogTUFOX1RYVCA9ICQoTUFOMV9UWFQpICQoTUFONV9UWFQpICQoTUFON19UWFQpCiBNQU5fWE1MPSQocGF0c3Vic3QgJS50eHQsJS54bWwsJChNQU5fVFhUKSkKIE1BTl9IVE1MPSQocGF0c3Vic3QgJS50eHQsJS5odG1sLCQoTUFOX1RYVCkpCiAKLURPQ19IVE1MPSQoTUFOX0hUTUwpCitPQlNPTEVURV9IVE1MID0gZ2l0LXJlbW90ZS1oZWxwZXJzLmh0bWwKK0RPQ19IVE1MPSQoTUFOX0hUTUwpICQoT0JTT0xFVEVfSFRNTCkKIAogQVJUSUNMRVMgPSBob3d0by1pbmRleAogQVJUSUNMRVMgKz0gZXZlcnlkYXkKQEAgLTIxLDExICs0MywzMyBAQAogQVJUSUNMRVMgKz0gZ2l0LWJpc2VjdC1sazIwMDkKICMgd2l0aCB0aGVpciBvd24gZm9ybWF0dGluZyBydWxlcy4KIFNQX0FSVElDTEVTID0gdXNlci1tYW51YWwKK1NQX0FSVElDTEVTICs9IGhvd3RvL25ldy1jb21tYW5kCiBTUF9BUlRJQ0xFUyArPSBob3d0by9yZXZlcnQtYnJhbmNoLXJlYmFzZQogU1BfQVJUSUNMRVMgKz0gaG93dG8vdXNpbmctbWVyZ2Utc3VidHJlZQogU1BfQVJUSUNMRVMgKz0gaG93dG8vdXNpbmctc2lnbmVkLXRhZy1pbi1wdWxsLXJlcXVlc3QKK1NQX0FSVElDTEVTICs9IGhvd3RvL3VzZS1naXQtZGFlbW9uCitTUF9BUlRJQ0xFUyArPSBob3d0by91cGRhdGUtaG9vay1leGFtcGxlCitTUF9BUlRJQ0xFUyArPSBob3d0by9zZXR1cC1naXQtc2VydmVyLW92ZXItaHR0cAorU1BfQVJUSUNMRVMgKz0gaG93dG8vc2VwYXJhdGluZy10b3BpYy1icmFuY2hlcworU1BfQVJUSUNMRVMgKz0gaG93dG8vcmV2ZXJ0LWEtZmF1bHR5LW1lcmdlCitTUF9BUlRJQ0xFUyArPSBob3d0by9yZWNvdmVyLWNvcnJ1cHRlZC1ibG9iLW9iamVjdAorU1BfQVJUSUNMRVMgKz0gaG93dG8vcmVidWlsZC1mcm9tLXVwZGF0ZS1ob29rCitTUF9BUlRJQ0xFUyArPSBob3d0by9yZWJhc2UtZnJvbS1pbnRlcm5hbC1icmFuY2gKK1NQX0FSVElDTEVTICs9IGhvd3RvL21haW50YWluLWdpdAogQVBJX0RPQ1MgPSAkKHBhdHN1YnN0ICUudHh0LCUsJChmaWx0ZXItb3V0IHRlY2huaWNhbC9hcGktaW5kZXgtc2tlbC50eHQgdGVjaG5pY2FsL2FwaS1pbmRleC50eHQsICQod2lsZGNhcmQgdGVjaG5pY2FsL2FwaS0qLnR4dCkpKQogU1BfQVJUSUNMRVMgKz0gJChBUElfRE9DUykKKworVEVDSF9ET0NTID0gdGVjaG5pY2FsL2luZGV4LWZvcm1hdAorVEVDSF9ET0NTICs9IHRlY2huaWNhbC9wYWNrLWZvcm1hdAorVEVDSF9ET0NTICs9IHRlY2huaWNhbC9wYWNrLWhldXJpc3RpY3MKK1RFQ0hfRE9DUyArPSB0ZWNobmljYWwvcGFjay1wcm90b2NvbAorVEVDSF9ET0NTICs9IHRlY2huaWNhbC9wcm90b2NvbC1jYXBhYmlsaXRpZXMKK1RFQ0hfRE9DUyArPSB0ZWNobmljYWwvcHJvdG9jb2wtY29tbW9uCitURUNIX0RPQ1MgKz0gdGVjaG5pY2FsL3JhY3ktZ2l0CitURUNIX0RPQ1MgKz0gdGVjaG5pY2FsL3NlbmQtcGFjay1waXBlbGluZQorVEVDSF9ET0NTICs9IHRlY2huaWNhbC9zaGFsbG93CitURUNIX0RPQ1MgKz0gdGVjaG5pY2FsL3RyaXZpYWwtbWVyZ2UKK1NQX0FSVElDTEVTICs9ICQoVEVDSF9ET0NTKQogU1BfQVJUSUNMRVMgKz0gdGVjaG5pY2FsL2FwaS1pbmRleAogCiBET0NfSFRNTCArPSAkKHBhdHN1YnN0ICUsJS5odG1sLCQoQVJUSUNMRVMpICQoU1BfQVJUSUNMRVMpKQpAQCAtNDQsOSArODgsMTAgQEAKIG1hbjdkaXI9JChtYW5kaXIpL21hbjcKICMgREVTVERJUj0KIAotQVNDSUlET0M9YXNjaWlkb2MKK0FTQ0lJRE9DID0gYXNjaWlkb2MKIEFTQ0lJRE9DX0VYVFJBID0KIE1BTlBBR0VfWFNMID0gbWFucGFnZS1ub3JtYWwueHNsCitYTUxUTyA9IHhtbHRvCiBYTUxUT19FWFRSQSA9CiBJTlNUQUxMPz1pbnN0YWxsCiBSTSA/PSBybSAtZgpAQCAtNjYsMTIgKzExMSw2IEBACiAtaW5jbHVkZSAuLi9jb25maWcubWFrCiAKICMKLSMgRm9yIGFzY2lpZG9jIC4uLgotIwktNy4xLjIsCXNldCBBU0NJSURPQzcKLSMJOC4wLSwJbm8gZXh0cmEgc2V0dGluZ3MgYXJlIG5lZWRlZAotIwotCi0jCiAjIEZvciBkb2Nib29rLXhzbCAuLi4KICMJLTEuNjguMSwJbm8gZXh0cmEgc2V0dGluZ3MgYXJlIG5lZWRlZD8KICMJMS42OS4wLAkJc2V0IEFTQ0lJRE9DX1JPRkY/CkBAIC04MSw5ICsxMjAsNiBAQAogIwkxLjczLjAtLAlubyBleHRyYSBzZXR0aW5ncyBhcmUgbmVlZGVkCiAjCiAKLWlmbmRlZiBBU0NJSURPQzcKLUFTQ0lJRE9DX0VYVFJBICs9IC1hIGFzY2lpZG9jN2NvbXBhdGlibGUKLWVuZGlmCiBpZmRlZiBET0NCT09LX1hTTF8xNzIKIEFTQ0lJRE9DX0VYVFJBICs9IC1hIGdpdC1hc2NpaWRvYy1uby1yb2ZmCiBNQU5QQUdFX1hTTCA9IG1hbnBhZ2UtMS43Mi54c2wKQEAgLTEzNCwxNSArMTcwLDYgQEAKIEFTQ0lJRE9DX0VYVFJBICs9IC1hICdnaXQtZGVmYXVsdC1lZGl0b3I9JChERUZBVUxUX0VESVRPUl9TUSknCiBlbmRpZgogCi0jCi0jIFBsZWFzZSBub3RlIHRoYXQgdGhlcmUgaXMgYSBtaW5vciBidWcgaW4gYXNjaWlkb2MuCi0jIFRoZSB2ZXJzaW9uIGFmdGVyIDYuMC4zIF93aWxsXyBpbmNsdWRlIHRoZSBwYXRjaCBmb3VuZCBoZXJlOgotIyAgIGh0dHA6Ly9tYXJjLnRoZWFpbXNncm91cC5jb20vP2w9Z2l0Jm09MTExNTU4NzU3MjAyMjQzJnc9MgotIwotIyBVbnRpbCB0aGF0IHZlcnNpb24gaXMgcmVsZWFzZWQgeW91IG1heSBoYXZlIHRvIGFwcGx5IHRoZSBwYXRjaAotIyB5b3Vyc2VsZiAtIHllcywgYWxsIDYgY2hhcmFjdGVycyBvZiBpdCEKLSMKLQogUVVJRVRfU1VCRElSMCAgPSArJChNQUtFKSAtQyAjIHNwYWNlIHRvIHNlcGFyYXRlIC1DIGFuZCBzdWJkaXIKIFFVSUVUX1NVQkRJUjEgID0KIApAQCAtMTczLDggKzIwMCw2IEBACiAKIGh0bWw6ICQoRE9DX0hUTUwpCiAKLSQoRE9DX0hUTUwpICQoRE9DX01BTjEpICQoRE9DX01BTjUpICQoRE9DX01BTjcpOiBhc2NpaWRvYy5jb25mCi0KIG1hbjogbWFuMSBtYW41IG1hbjcKIG1hbjE6ICQoRE9DX01BTjEpCiBtYW41OiAkKERPQ19NQU41KQpAQCAtMjE5LDcgKzI0NCwxMSBAQAogIwogIyBEZXRlcm1pbmUgImluY2x1ZGU6OiIgZmlsZSByZWZlcmVuY2VzIGluIGFzY2lpZG9jIGZpbGVzLgogIwotZG9jLmRlcCA6ICQod2lsZGNhcmQgKi50eHQpIGJ1aWxkLWRvY2RlcC5wZXJsCitkb2NkZXBfcHJlcmVxcyA9IFwKKwltZXJnZXRvb2xzLWxpc3QubWFkZSAkKG1lcmdldG9vbHNfdHh0KSBcCisJY21kLWxpc3QubWFkZSAkKGNtZHNfdHh0KQorCitkb2MuZGVwIDogJChkb2NkZXBfcHJlcmVxcykgJCh3aWxkY2FyZCAqLnR4dCkgYnVpbGQtZG9jZGVwLnBlcmwKIAkkKFFVSUVUX0dFTikkKFJNKSAkQCsgJEAgJiYgXAogCSQoUEVSTF9QQVRIKSAuL2J1aWxkLWRvY2RlcC5wZXJsID4kQCsgJChRVUlFVF9TVERFUlIpICYmIFwKIAltdiAkQCsgJEAKQEAgLTI0MywyOSArMjcyLDQ5IEBACiAJJChQRVJMX1BBVEgpIC4vY21kLWxpc3QucGVybCAuLi9jb21tYW5kLWxpc3QudHh0ICQoUVVJRVRfU1RERVJSKSAmJiBcCiAJZGF0ZSA+JEAKIAorbWVyZ2V0b29sc190eHQgPSBtZXJnZXRvb2xzLWRpZmYudHh0IG1lcmdldG9vbHMtbWVyZ2UudHh0CisKKyQobWVyZ2V0b29sc190eHQpOiBtZXJnZXRvb2xzLWxpc3QubWFkZQorCittZXJnZXRvb2xzLWxpc3QubWFkZTogLi4vZ2l0LW1lcmdldG9vbC0tbGliLnNoICQod2lsZGNhcmQgLi4vbWVyZ2V0b29scy8qKQorCSQoUVVJRVRfR0VOKSQoUk0pICRAICYmIFwKKwkkKFNIRUxMX1BBVEgpIC1jICdNRVJHRV9UT09MU19ESVI9Li4vbWVyZ2V0b29scyAmJiBcCisJCS4gLi4vZ2l0LW1lcmdldG9vbC0tbGliLnNoICYmIFwKKwkJc2hvd190b29sX25hbWVzIGNhbl9kaWZmICIqICIgfHwgOicgPm1lcmdldG9vbHMtZGlmZi50eHQgJiYgXAorCSQoU0hFTExfUEFUSCkgLWMgJ01FUkdFX1RPT0xTX0RJUj0uLi9tZXJnZXRvb2xzICYmIFwKKwkJLiAuLi9naXQtbWVyZ2V0b29sLS1saWIuc2ggJiYgXAorCQlzaG93X3Rvb2xfbmFtZXMgY2FuX21lcmdlICIqICIgfHwgOicgPm1lcmdldG9vbHMtbWVyZ2UudHh0ICYmIFwKKwlkYXRlID4kQAorCiBjbGVhbjoKIAkkKFJNKSAqLnhtbCAqLnhtbCsgKi5odG1sICouaHRtbCsgKi4xICouNSAqLjcKIAkkKFJNKSAqLnRleGkgKi50ZXhpKyAqLnRleGkrKyBnaXQuaW5mbyBnaXRtYW4uaW5mbwogCSQoUk0pICoucGRmCiAJJChSTSkgaG93dG8taW5kZXgudHh0IGhvd3RvLyouaHRtbCBkb2MuZGVwCi0JJChSTSkgdGVjaG5pY2FsL2FwaS0qLmh0bWwgdGVjaG5pY2FsL2FwaS1pbmRleC50eHQKLQkkKFJNKSAkKGNtZHNfdHh0KSAqLm1hZGUKKwkkKFJNKSB0ZWNobmljYWwvKi5odG1sIHRlY2huaWNhbC9hcGktaW5kZXgudHh0CisJJChSTSkgJChjbWRzX3R4dCkgJChtZXJnZXRvb2xzX3R4dCkgKi5tYWRlCiAJJChSTSkgbWFucGFnZS1iYXNlLXVybC54c2wKIAotJChNQU5fSFRNTCk6ICUuaHRtbCA6ICUudHh0CiskKE1BTl9IVE1MKTogJS5odG1sIDogJS50eHQgYXNjaWlkb2MuY29uZgogCSQoUVVJRVRfQVNDSUlET0MpJChSTSkgJEArICRAICYmIFwKIAkkKEFTQ0lJRE9DKSAtYiB4aHRtbDExIC1kIG1hbnBhZ2UgLWYgYXNjaWlkb2MuY29uZiBcCiAJCSQoQVNDSUlET0NfRVhUUkEpIC1hZ2l0X3ZlcnNpb249JChHSVRfVkVSU0lPTikgLW8gJEArICQ8ICYmIFwKIAltdiAkQCsgJEAKIAorJChPQlNPTEVURV9IVE1MKTogJS5odG1sIDogJS50eHRvIGFzY2lpZG9jLmNvbmYKKwkkKFFVSUVUX0FTQ0lJRE9DKSQoUk0pICRAKyAkQCAmJiBcCisJJChBU0NJSURPQykgLWIgeGh0bWwxMSAtZiBhc2NpaWRvYy5jb25mIFwKKwkJJChBU0NJSURPQ19FWFRSQSkgLWFnaXRfdmVyc2lvbj0kKEdJVF9WRVJTSU9OKSAtbyAkQCsgJDwgJiYgXAorCW12ICRAKyAkQAorCiBtYW5wYWdlLWJhc2UtdXJsLnhzbDogbWFucGFnZS1iYXNlLXVybC54c2wuaW4KIAlzZWQgInN8QEBNQU5fQkFTRV9VUkxAQHwkKE1BTl9CQVNFX1VSTCl8IiAkPCA+ICRACiAKICUuMSAlLjUgJS43IDogJS54bWwgbWFucGFnZS1iYXNlLXVybC54c2wKIAkkKFFVSUVUX1hNTFRPKSQoUk0pICRAICYmIFwKLQl4bWx0byAtbSAkKE1BTlBBR0VfWFNMKSAkKFhNTFRPX0VYVFJBKSBtYW4gJDwKKwkkKFhNTFRPKSAtbSAkKE1BTlBBR0VfWFNMKSAkKFhNTFRPX0VYVFJBKSBtYW4gJDwKIAotJS54bWwgOiAlLnR4dAorJS54bWwgOiAlLnR4dCBhc2NpaWRvYy5jb25mCiAJJChRVUlFVF9BU0NJSURPQykkKFJNKSAkQCsgJEAgJiYgXAogCSQoQVNDSUlET0MpIC1iIGRvY2Jvb2sgLWQgbWFucGFnZSAtZiBhc2NpaWRvYy5jb25mIFwKIAkJJChBU0NJSURPQ19FWFRSQSkgLWFnaXRfdmVyc2lvbj0kKEdJVF9WRVJTSU9OKSAtbyAkQCsgJDwgJiYgXApAQCAtMjgxLDcgKzMzMCw3IEBACiAJJChRVUlFVF9HRU4pY2QgdGVjaG5pY2FsICYmICckKFNIRUxMX1BBVEhfU1EpJyAuL2FwaS1pbmRleC5zaAogCiB0ZWNobmljYWwvJS5odG1sOiBBU0NJSURPQ19FWFRSQSArPSAtYSBnaXQtcmVsYXRpdmUtaHRtbC1wcmVmaXg9Li4vCi0kKHBhdHN1YnN0ICUsJS5odG1sLCQoQVBJX0RPQ1MpIHRlY2huaWNhbC9hcGktaW5kZXgpOiAlLmh0bWwgOiAlLnR4dAorJChwYXRzdWJzdCAlLCUuaHRtbCwkKEFQSV9ET0NTKSB0ZWNobmljYWwvYXBpLWluZGV4ICQoVEVDSF9ET0NTKSk6ICUuaHRtbCA6ICUudHh0IGFzY2lpZG9jLmNvbmYKIAkkKFFVSUVUX0FTQ0lJRE9DKSQoQVNDSUlET0MpIC1iIHhodG1sMTEgLWYgYXNjaWlkb2MuY29uZiBcCiAJCSQoQVNDSUlET0NfRVhUUkEpIC1hZ2l0X3ZlcnNpb249JChHSVRfVkVSU0lPTikgJCoudHh0CiAKQEAgLTMyNiw3ICszNzUsNyBAQAogCiBob3d0by1pbmRleC50eHQ6IGhvd3RvLWluZGV4LnNoICQod2lsZGNhcmQgaG93dG8vKi50eHQpCiAJJChRVUlFVF9HRU4pJChSTSkgJEArICRAICYmIFwKLQknJChTSEVMTF9QQVRIX1NRKScgLi9ob3d0by1pbmRleC5zaCAkKHdpbGRjYXJkIGhvd3RvLyoudHh0KSA+JEArICYmIFwKKwknJChTSEVMTF9QQVRIX1NRKScgLi9ob3d0by1pbmRleC5zaCAkKHNvcnQgJCh3aWxkY2FyZCBob3d0by8qLnR4dCkpID4kQCsgJiYgXAogCW12ICRAKyAkQAogCiAkKHBhdHN1YnN0ICUsJS5odG1sLCQoQVJUSUNMRVMpKSA6ICUuaHRtbCA6ICUudHh0CkBAIC0zNDMsOCArMzkyLDggQEAKIGluc3RhbGwtd2ViZG9jIDogaHRtbAogCSckKFNIRUxMX1BBVEhfU1EpJyAuL2luc3RhbGwtd2ViZG9jLnNoICQoV0VCRE9DX0RFU1QpCiAKLSMgWW91IG11c3QgaGF2ZSBhIGNsb25lIG9mIGdpdC1odG1sZG9jcyBhbmQgZ2l0LW1hbnBhZ2VzIHJlcG9zaXRvcmllcwotIyBuZXh0IHRvIHRoZSBnaXQgcmVwb3NpdG9yeSBpdHNlbGYgZm9yIHRoZSBmb2xsb3dpbmcgdG8gd29yay4KKyMgWW91IG11c3QgaGF2ZSBhIGNsb25lIG9mICdnaXQtaHRtbGRvY3MnIGFuZCAnZ2l0LW1hbnBhZ2VzJyByZXBvc2l0b3JpZXMKKyMgbmV4dCB0byB0aGUgJ2dpdCcgcmVwb3NpdG9yeSBpdHNlbGYgZm9yIHRoZSBmb2xsb3dpbmcgdG8gd29yay4KIAogcXVpY2staW5zdGFsbDogcXVpY2staW5zdGFsbC1tYW4KIApAQCAtMzYyLDQgKzQxMSw3IEBACiBxdWljay1pbnN0YWxsLWh0bWw6IHJlcXVpcmUtaHRtbHJlcG8KIAknJChTSEVMTF9QQVRIX1NRKScgLi9pbnN0YWxsLWRvYy1xdWljay5zaCAkKEhUTUxfUkVQTykgJChERVNURElSKSQoaHRtbGRpcikKIAorcHJpbnQtbWFuMToKKwlAZm9yIGkgaW4gJChNQU4xX1RYVCk7IGRvIGVjaG8gJCRpOyBkb25lCisKIC5QSE9OWTogRk9SQ0UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS41LjIuMS50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNS4yLjEudHh0CmluZGV4IGViZjIwZTIuLmQ0MTk4NGQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS41LjIuMS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjUuMi4xLnR4dApAQCAtNDUsOSArNDUsMyBAQAogICAtIGdpdC1mYXN0aW1wb3J0IC0taW1wb3J0LW1hcmtzIHdhcyBicm9rZW47IGZpeGVkLgogCiAgIC0gQSBsb3Qgb2YgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLCBjbGFyaWZpY2F0aW9ucyBhbmQgZml4ZXMuCi0KLS0tCi1leGVjID4vdmFyL3RtcC8xCi1PPXYxLjUuMi02NS1nOTk2ZTJkNgotZWNobyBPPWBnaXQgZGVzY3JpYmUgcmVmcy9oZWFkcy9tYWludGAKLWdpdCBzaG9ydGxvZyAtLW5vLW1lcmdlcyAkTy4ucmVmcy9oZWFkcy9tYWludApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjYuMC4yLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS42LjAuMi50eHQKaW5kZXggZTFlMjRiMy4uN2Q4ZmI4NSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjYuMC4yLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNi4wLjIudHh0CkBAIC03OSw5ICs3OSwzIEBACiAgIHBhY2tmaWxlLgogCiBBbHNvIGNvbnRhaW5zIG1hbnkgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgotCi0tLQotZXhlYyA+L3Zhci90bXAvMQotTz12MS42LjAuMS03OC1nMzYzMmNmYwotZWNobyBPPSQoZ2l0IGRlc2NyaWJlIG1haW50KQotZ2l0IHNob3J0bG9nIC0tbm8tbWVyZ2VzICRPLi5tYWludApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjYuMS4zLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS42LjEuMy50eHQKaW5kZXggNmYwYmRlMS4uY2QwOGQ4MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjYuMS4zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNi4xLjMudHh0CkBAIC0yNiw3ICsyNiwzIEBACiAqIFJQTSBiaW5hcnkgcGFja2FnZSBpbnN0YWxsZWQgdGhlIGh0bWwgbWFucGFnZXMgaW4gYSB3cm9uZyBwbGFjZS4KIAogQWxzbyBpbmNsdWRlcyBtaW5vciBkb2N1bWVudGF0aW9uIGZpeGVzIGFuZCB1cGRhdGVzLgotCi0KLS0tCi1naXQgc2hvcnRsb2cgLS1uby1tZXJnZXMgdjEuNi4xLjItMzMtZ2M3ODkzNTAuLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjYuMS40LnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS42LjEuNC50eHQKaW5kZXggMGNlNjMxNi4uY2NiYWQ3OSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjYuMS40LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNi4xLjQudHh0CkBAIC0zOSw2ICszOSwzIEBACiAgIFRoaXMgZml4IHdhcyBmaXJzdCBtZXJnZWQgdG8gMS42LjIuMy4KIAogQWxzbyBpbmNsdWRlcyBtaW5vciBkb2N1bWVudGF0aW9uIGZpeGVzIGFuZCB1cGRhdGVzLgotCi0tLQotZ2l0IHNob3J0bG9nIC0tbm8tbWVyZ2VzIHYxLjYuMS4zLi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS42LjEudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjYuMS50eHQKaW5kZXggYWRiN2NjYS4uN2IxNTJhNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjYuMS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjYuMS50eHQKQEAgLTI3OCw5ICsyNzgsMyBAQAogCiAqICJnaXR3ZWIiIGRpZCBub3QgbWFyayBub24tQVNDSUkgY2hhcmFjdGVycyBpbXBvcnRlZCBmcm9tIGV4dGVybmFsIEhUTUwgZnJhZ21lbnRzCiAgIGNvcnJlY3RseS4KLQotLS0KLWV4ZWMgPi92YXIvdG1wLzEKLU89djEuNi4xLXJjMy03NC1nZjY2YmM1ZgotZWNobyBPPSQoZ2l0IGRlc2NyaWJlIG1hc3RlcikKLWdpdCBzaG9ydGxvZyAtLW5vLW1lcmdlcyAkTy4ubWFzdGVyIF5tYWludApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMTEuMS50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4xMS4xLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzdlY2NhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMTEuMS50eHQKQEAgLTAsMCArMSw5IEBACitHaXQgdjEuNy4xMS4xIFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlcyBzaW5jZSB2MS43LjExCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAqIFRoZSBjcm9zcyBsaW5rcyBpbiB0aGUgSFRNTCB2ZXJzaW9uIG9mIG1hbnVhbCBwYWdlcyB3ZXJlIGJyb2tlbi4KKworQWxzbyBjb250YWlucyBtaW5vciB0eXBvZml4ZXMgYW5kIGRvY3VtZW50YXRpb24gdXBkYXRlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjExLjIudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMTEuMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBkMjRkMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjExLjIudHh0CkBAIC0wLDAgKzEsNTMgQEAKK0dpdCB2MS43LjExLjIgUmVsZWFzZSBOb3RlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVzIHNpbmNlIHYxLjcuMTEuMQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAqIE9uIEN5Z3dpbiwgdGhlIHBsYXRmb3JtIHByZWFkKDIpIGlzIG5vdCB0aHJlYWQgc2FmZSwganVzdCBsaWtlIG91cgorICAgb3duIGNvbXBhdC8gZW11bGF0aW9uLCBhbmQgY2Fubm90IGJlIHVzZWQgaW4gdGhlIGluZGV4LXBhY2sKKyAgIHByb2dyYW0uICBNYWtlZmlsZSB2YXJpYWJsZSBOT19USFJFQURfU0FGRV9QUkVBRCBjYW4gYmUgZGVmaW5lZCB0bworICAgYXZvaWQgdXNlIG9mIHRoaXMgZnVuY3Rpb24gaW4gYSB0aHJlYWRlZCBwcm9ncmFtLgorCisgKiAiZ2l0IGFkZCIgYWxsb3dzIGFkZGluZyBhIHJlZ3VsYXIgZmlsZSB0byB0aGUgcGF0aCB3aGVyZSBhCisgICBzdWJtb2R1bGUgdXNlZCB0byBleGlzdCwgYnV0ICJnaXQgdXBkYXRlLWluZGV4IiBkb2VzIG5vdCBhbGxvdyBhbgorICAgZXF1aXZhbGVudCBvcGVyYXRpb24gdG8gUG9yY2VsYWluIHdyaXRlcnMuCisKKyAqICJnaXQgYXJjaGl2ZSIgaW5jb3JyZWN0bHkgY29tcHV0ZWQgdGhlIGhlYWRlciBjaGVja3N1bTsgdGhlIHN5bXB0b20KKyAgIHdhcyBvYnNlcnZlZCBvbmx5IHdoZW4gdXNpbmcgcGF0aG5hbWVzIHdpdGggaGktYml0IHNldC4KKworICogImdpdCBibGFtZSIgZGlkIG5vdCB0cnkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGFiYnJldmlhdGVkIGNvbW1pdAorICAgb2JqZWN0IG5hbWVzIGluIGl0cyBvdXRwdXQgYXJlIHVuaXF1ZS4KKworICogUnVubmluZyAiZ2l0IGJ1bmRsZSB2ZXJpZnkiIG9uIGEgYnVuZGxlIHRoYXQgcmVjb3JkcyBhIGNvbXBsZXRlCisgICBoaXN0b3J5IHNhaWQgIml0IHJlcXVpcmVzIHRoZXNlIDAgY29tbWl0cyIuCisKKyAqICJnaXQgY2xvbmUgLS1zaW5nbGUtYnJhbmNoIiB0byBjbG9uZSBhIHNpbmdsZSBicmFuY2ggZGlkIG5vdCBsaW1pdAorICAgdGhlIGNsb25pbmcgdG8gdGhlIHNwZWNpZmllZCBicmFuY2guCisKKyAqICJnaXQgZGlmZiAtLW5vLWluZGV4IiBkaWQgbm90IGNvcnJlY3RseSBoYW5kbGUgcmVsYXRpdmUgcGF0aHMgYW5kCisgICBkaWQgbm90IGNvcnJlY3RseSBnaXZlIGV4aXQgY29kZXMgd2hlbiBydW4gdW5kZXIgIi0tcXVpZXQiIG9wdGlvbi4KKworICogImdpdCBkaWZmIC0tbm8taW5kZXgiIGRpZCBub3Qgd29yayB3aXRoIHBhZ2VycyBjb3JyZWN0bHkuCisKKyAqICJnaXQgZGlmZiBDT1BZSU5HIEhFQUQ6Q09QWUlORyIgZ2F2ZSBhIG5vbnNlbnNlIGVycm9yIG1lc3NhZ2UgdGhhdAorICAgY2xhaW1lZCB0aGF0IHRoZSB0cmVlaXNoIEhFQUQgZGlkIG5vdCBoYXZlIENPUFlJTkcgaW4gaXQuCisKKyAqIFdoZW4gImdpdCBsb2ciIGdldHMgIi0tc2ltcGxpZnktbWVyZ2VzL2J5LWRlY29yYXRpb24iIHRvZ2V0aGVyIHdpdGgKKyAgICItLWZpcnN0LXBhcmVudCIsIHRoZSBjb21iaW5hdGlvbiBvZiB0aGVzZSBvcHRpb25zIG1ha2VzIHRoZQorICAgc2ltcGxpZmljYXRpb24gbG9naWMgdG8gdXNlIGluLWNvcmUgY29tbWl0IG9iamVjdHMgdGhhdCBoYXZlbid0CisgICBiZWVuIGV4YW1pbmVkIGZvciByZWxldmFuY2UsIGVpdGhlciBwcm9kdWNpbmcgaW5jb3JyZWN0IHJlc3VsdCBvcgorICAgdGFraW5nIHRvbyBsb25nIHRvIHByb2R1Y2UgYW55IG91dHB1dC4gIFRlYWNoIHRoZSBzaW1wbGlmaWNhdGlvbgorICAgbG9naWMgdG8gaWdub3JlIGNvbW1pdHMgdGhhdCB0aGUgZmlyc3QtcGFyZW50IHRyYXZlcnNhbCBsb2dpYworICAgaWdub3JlZCB3aGVuIGJvdGggYXJlIGluIGVmZmVjdCB0byB3b3JrIGFyb3VuZCB0aGUgaXNzdWUuCisKKyAqICJnaXQgbHMtZmlsZXMgLS1leGNsdWRlPXQgLWkiIGRpZCBub3QgY29uc2lkZXIgYW55dGhpbmcgdW5kZXIgdC8gYXMKKyAgIGV4Y2x1ZGVkLCBhcyBpdCBkaWQgbm90IHBheSBhdHRlbnRpb24gdG8gZXhjbHVzaW9uIG9mIGxlYWRpbmcgcGF0aHMKKyAgIHdoaWxlIHdhbGtpbmcgdGhlIGluZGV4LiAgT3RoZXIgdHdvIHVzZXJzIG9mIGV4Y2x1ZGVkKCkgYXJlIGFsc28KKyAgIHVwZGF0ZWQuCisKKyAqICJnaXQgcmVxdWVzdC1wdWxsICR1cmwgZGV2IiB3aGVuIHRoZSB0aXAgb2YgImRldiIgYnJhbmNoIHdhcyB0YWdnZWQKKyAgIHdpdGggImV4dDQtZm9yLWxpbnVzIiB1c2VkIHRoZSBjb250ZW50cyBmcm9tIHRoZSB0YWcgaW4gdGhlIG91dHB1dAorICAgYnV0IHN0aWxsIGFza2VkIHRoZSAiZGV2IiBicmFuY2ggdG8gYmUgcHVsbGVkLCBub3QgdGhlIHRhZy4KKworQWxzbyBjb250YWlucyBtaW5vciB0eXBvZml4ZXMgYW5kIGRvY3VtZW50YXRpb24gdXBkYXRlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjExLjMudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMTEuMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ0OTRmOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjExLjMudHh0CkBAIC0wLDAgKzEsNTMgQEAKK0dpdCB2MS43LjExLjMgUmVsZWFzZSBOb3RlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVzIHNpbmNlIHYxLjcuMTEuMworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAqIFRoZSBlcnJvciBtZXNzYWdlIGZyb20gImdpdCBwdXNoICR0aGVyZSA6Ym9nbyIgKGFuZCBpdHMgZXF1aXZhbGVudAorICAgImdpdCBwdXNoICR0aGVyZSAtLWRlbGV0ZSBib2dvIikgbWVudGlvbmVkIHRoYXQgd2UgdHJpZWQgYW5kIGZhaWxlZAorICAgdG8gZ3Vlc3Mgd2hhdCByZWYgaXMgYmVpbmcgZGVsZXRlZCBiYXNlZCBvbiB0aGUgTEhTIG9mIHRoZSByZWZzcGVjLAorICAgd2hpY2ggd2UgZG9uJ3QuCisKKyAqIEEgaGFuZGZ1bCBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgd2UgY3JlYXRlIGhhZCB0aWdodGVyIHRoYW4KKyAgIG5lY2Vzc2FyeSBwZXJtaXNzaW9uIGJpdHMgd2hlbiB0aGUgdXNlciB3YW50ZWQgdG8gaGF2ZSBncm91cAorICAgd3JpdGFiaWxpdHkgKGUuZy4gYnkgc2V0dGluZyAidW1hc2sgMDAyIikuCisKKyAqICJjb21taXQgLS1hbWVuZCIgdXNlZCB0byByZWZ1c2UgYW1lbmRpbmcgYSBjb21taXQgd2l0aCBhbiBlbXB0eSBsb2cKKyAgIG1lc3NhZ2UsIHdpdGggb3Igd2l0aG91dCAiLS1hbGxvdy1lbXB0eS1tZXNzYWdlIi4KKworICogImdpdCBjb21taXQgLS1hbWVuZCAtLW9ubHkgLS0iIHdhcyBtZWFudCB0byBhbGxvdyAiQ2xldmVyIiBwZW9wbGUgdG8KKyAgIHJld3JpdGUgdGhlIGNvbW1pdCBtZXNzYWdlIHdpdGhvdXQgbWFraW5nIGFueSBjaGFuZ2UgZXZlbiB3aGVuIHRoZXkKKyAgIGhhdmUgYWxyZWFkeSBjaGFuZ2VzIGZvciB0aGUgbmV4dCBjb21taXQgYWRkZWQgdG8gdGhlaXIgaW5kZXgsIGJ1dAorICAgaXQgbmV2ZXIgd29ya2VkIGFzIGFkdmVydGlzZWQgc2luY2UgaXQgd2FzIGludHJvZHVjZWQgaW4gMS4zLjAgZXJhLgorCisgKiBFdmVuIHRob3VnaCB0aGUgaW5kZXggY2FuIHJlY29yZCBwYXRobmFtZXMgbG9uZ2VyIHRoYW4gMTw8MTIgYnl0ZXMsCisgICBpbiBzb21lIHBsYWNlcyB3ZSB3ZXJlIG5vdCBjb21wYXJpbmcgdGhlbSBpbiBmdWxsLCBwb3RlbnRpYWxseQorICAgcmVwbGFjaW5nIGluZGV4IGVudHJpZXMgaW5zdGVhZCBvZiBhZGRpbmcuCisKKyAqICJnaXQgc2hvdyIncyBhdXRvLXdhbGtpbmcgYmVoYXZpb3VyIHdhcyBhbiB1bnJlbGlhYmxlIGFuZAorICAgdW5wcmVkaWN0YWJsZSBoYWNrOyBpdCBub3cgYmVoYXZlcyBqdXN0IGxpa2UgImdpdCBsb2ciIGRvZXMgd2hlbiBpdAorICAgd2Fsa3MuCisKKyAqICJnaXQgZGlmZiIsICJnaXQgc3RhdHVzIiBhbmQgYW55dGhpbmcgdGhhdCBpbnRlcm5hbGx5IHVzZXMgdGhlCisgICBjb21wYXJpc29uIG1hY2hpbmVyeSB3YXMgdXR0ZXJseSBicm9rZW4gd2hlbiB0aGUgZGlmZmVyZW5jZQorICAgaW52b2x2ZWQgYSBmaWxlIHdpdGggIi0iIGFzIGl0cyBuYW1lLiAgVGhpcyB3YXMgZHVlIHRvIHRoZSB3YXkgImdpdAorICAgZGlmZiAtLW5vLWluZGV4IiB3YXMgaW5jb3JyZWN0bHkgYm9sdGVkIG9uIHRvIHRoZSBzeXN0ZW0sIG1ha2luZworICAgYW55IGNvbXBhcmlzb24gdGhhdCBpbnZvbHZlcyBhIGZpbGUgIi0iIGF0IHRoZSByb290IGxldmVsCisgICBpbmNvcnJlY3RseSByZWFkIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0LgorCisgKiBXZSBkaWQgbm90IGhhdmUgdGVzdCB0byBtYWtlIHN1cmUgImdpdCByZWJhc2UiIHdpdGhvdXQgZXh0cmEgb3B0aW9ucworICAgZmlsdGVycyBvdXQgYW4gZW1wdHkgY29tbWl0IGluIHRoZSBvcmlnaW5hbCBoaXN0b3J5LgorCisgKiAiZ2l0IGZhc3QtZXhwb3J0IiBwcm9kdWNlZCBhbiBpbnB1dCBzdHJlYW0gZm9yIGZhc3QtaW1wb3J0IHdpdGhvdXQKKyAgIHByb3Blcmx5IHF1b3RpbmcgcGF0aG5hbWVzIHdoZW4gdGhleSBjb250YWluIFNQcyBpbiB0aGVtLgorCisgKiAiZ2l0IGNoZWNrb3V0IC0tZGV0YWNoIiwgd2hlbiB5b3UgYXJlIHN0aWxsIG9uIGFuIHVuYm9ybiBicmFuY2gsCisgICBzaG91bGQgYmUgZm9yYmlkZGVuLCBidXQgaXQgd2Fzbid0LgorCisgKiBTb21lIGltcGxlbWVudGF0aW9ucyBvZiBQZXJsIHRlcm1pbmF0ZXMgImxpbmVzIiB3aXRoIENSTEYgZXZlbiB3aGVuCisgICB0aGUgc2NyaXB0IGlzIG9wZXJhdGluZyBvbiBqdXN0IGEgc2VxdWVuY2Ugb2YgYnl0ZXMuICBNYWtlIHN1cmUgdG8KKyAgIHVzZSAiJFBFUkxfUEFUSCIsIHRoZSB2ZXJzaW9uIG9mIFBlcmwgdGhlIHVzZXIgdG9sZCBHaXQgdG8gdXNlLCBpbgorICAgb3VyIHRlc3RzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGJyZWFrYWdlcyBpbiB0ZXN0cy4KKworQWxzbyBjb250YWlucyBtaW5vciB0eXBvZml4ZXMgYW5kIGRvY3VtZW50YXRpb24gdXBkYXRlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjExLjQudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMTEuNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E2NDBjMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjExLjQudHh0CkBAIC0wLDAgKzEsMzEgQEAKK0dpdCB2MS43LjExLjQgUmVsZWFzZSBOb3RlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVzIHNpbmNlIHYxLjcuMTEuMworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAqICIkR0lUX0RJUi9DT01NSVRfRURJVE1TRyIgZmlsZSB0aGF0IGlzIHVzZWQgdG8gaG9sZCB0aGUgY29tbWl0IGxvZworICAgbWVzc2FnZSB1c2VyIGVkaXRzIHdhcyBub3QgZG9jdW1lbnRlZC4KKworICogVGhlIGFkdmlzZSgpIGZ1bmN0aW9uIGRpZCBub3QgdXNlIHZhcmFyZ3MgY29ycmVjdGx5IHRvIGZvcm1hdAorICAgaXRzIG1lc3NhZ2UuCisKKyAqIFdoZW4gImdpdCBhbSIgZmFpbGVkLCBvbGQgdGltZXJzIGtuZXcgdG8gY2hlY2sgLmdpdC9yZWJhc2UtYXBwbHkvcGF0Y2gKKyAgIHRvIHNlZSB3aGF0IHdlbnQgd3JvbmcsIGJ1dCB3ZSBuZXZlciB0b2xkIHRoZSB1c2VycyBhYm91dCBpdC4KKworICogImdpdCBjb21taXQtdHJlZSIgbGVhcm5lZCBhIG1vcmUgbmF0dXJhbCAiLXAgPHBhcmVudD4gPHRyZWU+IiBvcmRlcgorICAgb2YgYXJndW1lbnRzIGxvbmcgdGltZSBhZ28sIGJ1dCByZWNlbnRseSBmb3Jnb3QgaXQgYnkgbWlzdGFrZS4KKworICogImdpdCBkaWZmIC0tbm8tZXh0LWRpZmYiIGRpZCBub3Qgb3V0cHV0IGFueXRoaW5nIGZvciBhIHR5cGVjaGFuZ2UKKyAgIGZpbGVwYWlyIHdoZW4gR0lUX0VYVEVSTkFMX0RJRkYgaXMgaW4gZWZmZWN0LgorCisgKiBJbiAxLjcuOSBlcmEsIHdlIHRhdWdodCAiZ2l0IHJlYmFzZSIgYWJvdXQgdGhlIHJhdyB0aW1lc3RhbXAgZm9ybWF0CisgICBidXQgd2UgZGlkIG5vdCB0ZWFjaCB0aGUgc2FtZSB0cmljayB0byAiZmlsdGVyLWJyYW5jaCIsIHdoaWNoIHJvbGxlZAorICAgYSBzaW1pbGFyIGxvZ2ljIG9uIGl0cyBvd24uCisKKyAqIFdoZW4gImdpdCBzdWJtb2R1bGUgYWRkIiBjbG9uZXMgYSBzdWJtb2R1bGUgcmVwb3NpdG9yeSwgaXQgY2FuIGdldAorICAgY29uZnVzZWQgd2hlcmUgdG8gc3RvcmUgdGhlIHJlc3VsdGluZyBzdWJtb2R1bGUgcmVwb3NpdG9yeSBpbiB0aGUKKyAgIHN1cGVycHJvamVjdCdzIC5naXQvIGRpcmVjdG9yeSB3aGVuIHRoZXJlIGlzIGEgc3ltYm9saWMgbGluayBpbiB0aGUKKyAgIHBhdGggdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorCitBbHNvIGNvbnRhaW5zIG1pbm9yIHR5cG9maXhlcyBhbmQgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMTEuNS50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4xMS41LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTJlZDg1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMTEuNS50eHQKQEAgLTAsMCArMSwzNiBAQAorR2l0IHYxLjcuMTEuNSBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4ZXMgc2luY2UgdjEuNy4xMS40CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICogVGhlIE1ha2VmaWxlIHJ1bGUgdG8gY3JlYXRlIGFzc2VtYmx5IG91dHB1dCAocHJpbWFyaWx5IGZvcgorICAgZGVidWdnaW5nIHB1cnBvc2VzKSBkaWQgbm90IGNyZWF0ZSBpdCBuZXh0IHRvIHRoZSBzb3VyY2UuCisKKyAqIFRoZSBjb2RlIHRvIGF2b2lkIG1pc3Rha2VuIGF0dGVtcHQgdG8gYWRkIHRoZSBvYmplY3QgZGlyZWN0b3J5CisgICBpdHNlbGYgYXMgaXRzIG93biBhbHRlcm5hdGUgY291bGQgcmVhZCBiZXlvbmQgZW5kIG9mIGEgc3RyaW5nIHdoaWxlCisgICBjb21wYXJpc29uLgorCisgKiBPbiBzb21lIGFyY2hpdGVjdHVyZXMsICJibG9jay1zaGExIiBkaWQgbm90IGNvbXBpbGUgY29ycmVjdGx5CisgICB3aGVuIGNvbXBpbGVycyBpbmZlcnJlZCBhbGlnbm1lbnQgZ3VhcmFudGVlcyBmcm9tIG91ciBzb3VyY2Ugd2UKKyAgIGRpZCBub3QgaW50ZW5kIHRvIG1ha2UuCisKKyAqIFdoZW4gdGFsa2luZyB0byBhIHJlbW90ZSBydW5uaW5nIHNzaCBvbiBJUHY2IGVuYWJsZWQgaG9zdCwgd2hvc2UKKyAgIGFkZHJlc3MgaXMgc3BlbGxlZCBhcyAiW0hPU1RdOlBPUlQiLCB3ZSBkaWQgbm90IHBhcnNlIHRoZSBhZGRyZXNzCisgICBjb3JyZWN0bHkgYW5kIGZhaWxlZCB0byBjb25uZWN0LgorCisgKiBnaXQtYmxhbWUuZWwgKGluIGNvbXBhdC8pIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHVzZSBFbGlzcCBtb3JlCisgICBjb3JyZWN0bHkuCisKKyAqICJnaXQgY2hlY2tvdXQgPGJyYW5jaG5hbWU+IiB0byBjb21lIGJhY2sgZnJvbSBhIGRldGFjaGVkIEhFQUQgc3RhdGUKKyAgIGluY29ycmVjdGx5IGNvbXB1dGVkIHJlYWNoYWJpbGl0eSBvZiB0aGUgZGV0YWNoZWQgSEVBRCwgcmVzdWx0aW5nCisgICBpbiB1bm5lY2Vzc2FyeSB3YXJuaW5ncy4KKworICogImdpdCBtZXJnZXRvb2wiIGRpZCBub3Qgc3VwcG9ydCAtLXRvb2wtaGVscCBvcHRpb24gdG8gZ2l2ZSB0aGUgbGlzdAorICAgb2Ygc3VwcG9ydGVkIGJhY2tlbmRzLCBsaWtlICJnaXQgZGlmZnRvb2wiIGRvZXMuCisKKyAqICJnaXQgZ3JlcCIgc3RvcHBlZCBzcGF3bmluZyBhbiBleHRlcm5hbCAiZ3JlcCIgbG9uZyB0aW1lIGFnbywgYnV0IGEKKyAgIGR1cGxpY2F0ZWQgdGVzdCB0byBjaGVjayBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgImdyZXAiIHdhcyBsZWZ0CisgICBiZWhpbmQuCisKK0Fsc28gY29udGFpbnMgbWlub3IgdHlwb2ZpeGVzIGFuZCBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4xMS42LnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjExLjYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhN2QzYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4xMS42LnR4dApAQCAtMCwwICsxLDg0IEBACitHaXQgdjEuNy4xMS42IFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlcyBzaW5jZSB2MS43LjExLjUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgKiAiY2lhYm90IiBzY3JpcHQgKGluIGNvbnRyaWIvKSBoYXMgYmVlbiB1cGRhdGVkIHdpdGggZXh0ZW5zaXZlCisgICBkb2N1bWVudGF0aW9uLgorCisgKiAiZ2l0IGZvbyIgZXJyb3JlZCBvdXQgd2l0aCAiTm90IGEgZGlyZWN0b3J5IiB3aGVuIHRoZSB1c2VyIGhhZCBhCisgICBub24tZGlyZWN0b3J5IG9uICRQQVRILCBhbmQgd29yc2UgeWV0IGl0IG1hc2tlZCBhbiBhbGlhcyAiZm9vIiBmcm9tCisgICBydW5uaW5nLgorCisgKiBXaGVuIHRoZSB1c2VyIGV4cG9ydHMgYSBub24tZGVmYXVsdCBJRlMgd2l0aG91dCBIVCwgc2NyaXB0cyB0aGF0CisgICByZWx5IG9uIGJlaW5nIGFibGUgdG8gcGFyc2UgImxzLWZpbGVzIC1zIHwgd2hpbGUgcmVhZCBhIGIgYy4uLiIKKyAgIHN0YXJ0ZWQgdG8gZmFpbC4gIFByb3RlY3QgdGhlbSBmcm9tIHN1Y2ggYSBtaXNjb25maWd1cmF0aW9uLgorCisgKiBXaGVuIHRoZSB1c2VyIGdpdmVzIGFuIGFyZ3VtZW50IHRoYXQgY2FuIGJlIHRha2VuIGFzIGJvdGggYQorICAgcmV2aXNpb24gbmFtZSBhbmQgYSBwYXRobmFtZSB3aXRob3V0IGRpc2FtYmlndWF0aW5nIHdpdGggIi0tIiwgd2UKKyAgIHVzZWQgdG8gZ2l2ZSBhIGhlbHAgbWVzc2FnZSAiVXNlICctLScgdG8gc2VwYXJhdGUiLiAgVGhlIG1lc3NhZ2UKKyAgIGhhcyBiZWVuIGNsYXJpZmllZCB0byBzaG93IHdoZXJlIHRoYXQgJy0tJyBnb2VzIG9uIHRoZSBjb21tYW5kCisgICBsaW5lLgorCisgKiBEb2N1bWVudGF0aW9uIGZvciB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGZvcm1hdCBoYWQgYSBjb25mdXNpbmcKKyAgIGV4YW1wbGUuCisKKyAqIE9sZGVyIHBhcnRzIG9mIHRoZSBkb2N1bWVudGF0aW9uIGRlc2NyaWJlZCBhcyBpZiBoYXZpbmcgYSByZWd1bGFyCisgICBmaWxlIGluIC5naXQvcmVmcy8gaGllcmFyY2h5IHdlcmUgdGhlIG9ubHkgd2F5IHRvIGhhdmUgYnJhbmNoZXMgYW5kCisgICB0YWdzLCB3aGljaCBpcyBub3QgdHJ1ZSBmb3IgcXVpdGUgc29tZSB0aW1lLgorCisgKiBJdCB3YXMgZ2VuZXJhbGx5IHVuZGVyc3Rvb2QgdGhhdCAiLS1sb25nLW9wdGlvbiJzIHRvIG1hbnkgb2Ygb3VyCisgICBzdWJjb21tYW5kcyBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gdGhlIHVuaXF1ZSBwcmVmaXgsIGJ1dCBpdCB3YXMgbm90CisgICBlYXN5IHRvIGZpbmQgaXQgZGVzY3JpYmVkIGZvciBuZXcgcmVhZGVycyBvZiB0aGUgZG9jdW1lbnRhdGlvbiBzZXQuCisKKyAqIFRoZSAiLS10b3BvLW9yZGVyIiwgIi0tZGF0ZS1vcmRlciIgKGFuZCB0aGUgbGFjayBvZiBlaXRoZXIgbWVhbnMKKyAgIHRoZSBkZWZhdWx0IG9yZGVyKSBvcHRpb25zIHRvICJyZXYtbGlzdCIgYW5kICJsb2ciIGZhbWlseSBvZgorICAgY29tbWFuZHMgd2VyZSBwb29ybHkgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgorCisgKiAiZ2l0IGNvbW1pdCAtLWFtZW5kIiBsZXQgdGhlIHVzZXIgZWRpdCB0aGUgbG9nIG1lc3NhZ2UgYW5kIHRoZW4KKyAgIGRpZWQgd2hlbiB0aGUgaHVtYW4tcmVhZGFibGUgY29tbWl0dGVyIG5hbWUgd2FzIGdpdmVuCisgICBpbnN1ZmZpY2llbnRseSBieSBnZXRwd2VudCgzKS4KKworICogVGhlIGV4aXQgc3RhdHVzIGNvZGUgZnJvbSAiZ2l0IGNvbmZpZyIgd2FzIHdheSBvdmVyc3BlY2lmaWVkIHdoaWxlCisgICBiZWluZyBpbmNvcnJlY3QuICBUaGUgaW1wbGVtZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZCB0byBnaXZlIHRoZQorICAgZG9jdW1lbnRlZCBzdGF0dXMgZm9yIGEgY2FzZSB0aGF0IHdhcyBkb2N1bWVudGVkLCBhbmQgaW50cm9kdWNlIGEKKyAgIG5ldyBjb2RlIGZvciAiYWxsIG90aGVyIGVycm9ycyIuCisKKyAqIFRoZSBvdXRwdXQgZnJvbSAiZ2l0IGRpZmYgLUIiIGZvciBhIGZpbGUgdGhhdCBlbmRzIHdpdGggYW4KKyAgIGluY29tcGxldGUgbGluZSBkaWQgbm90IHB1dCAiXCBObyBuZXdsaW5lLi4uIiBvbiBhIGxpbmUgb2YgaXRzIG93bi4KKworICogImdpdCBkaWZmIiBoYWQgYSBjb25mdXNpb24gYmV0d2VlbiB0YWtpbmcgZGF0YSBmcm9tIGEgcGF0aCBpbiB0aGUKKyAgIHdvcmtpbmcgdHJlZSBhbmQgdGFraW5nIGRhdGEgZnJvbSBhbiBvYmplY3QgdGhhdCBoYXBwZW5zIHRvIGhhdmUKKyAgIG5hbWUgMHs0MH0gcmVjb3JkZWQgaW4gYSB0cmVlLgorCisgKiBUaGUgIi0tcmViYXNlIiBvcHRpb24gdG8gImdpdCBwdWxsIiBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gIi1yIiwKKyAgIGJ1dCB3ZSBkaWRuJ3QgZG9jdW1lbnQgaXQuCisKKyAqIFdoZW4gImdpdCBwdXNoIiB0cmlnZ2VyZWQgdGhlIGF1dG9tYXRpYyBnYyBvbiB0aGUgcmVjZWl2aW5nIGVuZCwgYQorICAgbWVzc2FnZSBmcm9tICJnaXQgcHJ1bmUiIHRoYXQgc2FpZCBpdCB3YXMgcmVtb3ZpbmcgY3J1ZnQgbGVha2VkIHRvCisgICB0aGUgc3RhbmRhcmQgb3V0cHV0LCBicmVha2luZyB0aGUgY29tbXVuaWNhdGlvbiBwcm90b2NvbC4KKworICogVGhlIHJlZmxvZyBlbnRyaWVzIGxlZnQgYnkgImdpdCByZWJhc2UiIGFuZCAiZ2l0IHJlYmFzZSAtaSIgd2VyZQorICAgaW5jb25zaXN0ZW50ICh0aGUgaW50ZXJhY3RpdmUgb25lIGdhdmUgYW4gYWJicmV2aWF0ZWQgb2JqZWN0IG5hbWUpLgorCisgKiAiZ2l0IHNlbmQtZW1haWwiIGRpZCBub3QgdW5xdW90ZSBlbmNvZGVkIHdvcmRzIHRoYXQgYXBwZWFyIG9uIHRoZQorICAgaGVhZGVyIGNvcnJlY3RseSwgYW5kIGxvc3QgIl8iIGZyb20gc3RyaW5ncy4KKworICogImdpdCBzdGFzaCBhcHBseS9wb3AiIGRpZCBub3QgdHJpZ2dlciAicmVyZXJlIiB1cG9uIGNvbmZsaWN0cworICAgdW5saWtlIG90aGVyIG1lcmd5IG9wZXJhdGlvbnMuCisKKyAqICJnaXQgc3VibW9kdWxlIDxjbWQ+IHBhdGgiIGRpZCBub3QgZXJyb3Igb3V0IHdoZW4gdGhlIHBhdGggdG8gdGhlCisgICBzdWJtb2R1bGUgd2FzIG1pc3NwZWx0LgorCisgKiAiZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLWYiIGRpZCBub3QgdXBkYXRlIHBhdGhzIGluIHRoZSB3b3JraW5nIHRyZWUKKyAgIHRoYXQgaGFzIGxvY2FsIGNoYW5nZXMuCisgICAobWVyZ2UgMDFkNDcyMSBzei9zdWJtb2R1bGUtZm9yY2UtdXBkYXRlIGxhdGVyIHRvIG1haW50KS4KKworICogImdpdHdlYiIgd2hlbiB1c2VkIHdpdGggUEFUSF9JTkZPIGZhaWxlZCB0byBub3RpY2UgZGlyZWN0b3JpZXMgd2l0aAorICAgU1AgKGFuZCBvdGhlciBjaGFyYWN0ZXJzIHRoYXQgbmVlZCBVUkwtc3R5bGUgcXVvdGluZykgaW4gdGhlbS4KKworICogRmFsbGJhY2sgJ2dldHBhc3MnIGltcGxlbWVudGF0aW9uIG1hZGUgdW5wb3J0YWJsZSB1c2Ugb2Ygc3RkaW8gQVBJLgorCisgKiBBIHV0aWxpdHkgc2hlbGwgZnVuY3Rpb24gdGVzdF9zZXEgaGFzIGJlZW4gYWRkZWQgYXMgYSByZXBsYWNlbWVudAorICAgZm9yIHRoZSAnc2VxJyB1dGlsaXR5IGZvdW5kIG9uIHNvbWUgcGxhdGZvcm1zLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMTEuNy50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4xMS43LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2U3OWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMTEuNy50eHQKQEAgLTAsMCArMSw0NiBAQAorR2l0IHYxLjcuMTEuNyBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4ZXMgc2luY2UgdjEuNy4xMS42CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICogVGhlIHN5bm9wc2lzIHNhaWQgImNoZWNrb3V0IFstQiBicmFuY2hdIiB0byBtYWtlIGl0IGNsZWFyIHRoZQorICAgYnJhbmNoIG5hbWUgaXMgYSBwYXJhbWV0ZXIgdG8gdGhlIG9wdGlvbiwgYnV0IHRoZSBoZWFkaW5nIGZvciB0aGUKKyAgIG9wdGlvbiBkZXNjcmlwdGlvbiB3YXMgIi1COjoiLCBub3QgIi1CIGJyYW5jaDo6IiwgbWFraW5nIHRoZQorICAgZG9jdW1lbnRhdGlvbiBtaXNsZWFkaW5nLgorCisgKiBHaXQgc2hpcHMgd2l0aCBhIGZhbGwtYmFjayByZWdleHAgaW1wbGVtZW50YXRpb24gZm9yIHBsYXRmb3JtcyB3aXRoCisgICBidWdneSByZWdleHAgbGlicmFyeSwgYnV0IGl0IHdhcyBlYXN5IGZvciBwZW9wbGUgdG8ga2VlcCB1c2luZyB0aGVpcgorICAgcGxhdGZvcm0gcmVnZXhwLiAgQSBuZXcgdGVzdCBoYXMgYmVlbiBhZGRlZCB0byBjaGVjayB0aGlzLgorCisgKiAiZ2l0IGFwcGx5IC1wMCIgZGlkIG5vdCBwYXJzZSBwYXRobmFtZXMgb24gImRpZmYgLS1naXQiIGxpbmUKKyAgIGNvcnJlY3RseS4gIFRoaXMgY2F1c2VkIHBhdGNoZXMgdGhhdCBoYWQgcGF0aG5hbWVzIGluIG5vIG90aGVyCisgICBwbGFjZXMgdG8gYmUgbWlzdGFrZW5seSByZWplY3RlZCAobW9zdCBub3RhYmx5LCBiaW5hcnkgcGF0Y2ggdGhhdAorICAgZG9lcyBub3QgcmVuYW1lIG5vciBjaGFuZ2UgbW9kZSkuICBUZXh0dWFsIHBhdGNoZXMsIHJlbmFtZXMgb3IgbW9kZQorICAgY2hhbmdlcyBoYXZlIHByZWltYWdlIGFuZCBwb3N0aW1hZ2UgcGF0aG5hbWVzIGluIGRpZmZlcmVudCBwbGFjZXMKKyAgIGluIGEgZm9ybSB0aGF0IGNhbiBiZSBwYXJzZWQgdW5hbWJpZ3VvdXNseSBhbmQgZGlkIG5vdCBzdWZmZXIgZnJvbQorICAgdGhpcyBwcm9ibGVtLgorCisgKiBBZnRlciAiZ2l0ayIgc2hvd2VkIHRoZSBjb250ZW50cyBvZiBhIHRhZywgbmVpdGhlciAiUmVyZWFkCisgICByZWZlcmVuY2VzIiBub3IgIlJlbG9hZCIgZGlkIG5vdCB1cGRhdGUgd2hhdCBpcyBzaG93biBhcyB0aGUKKyAgIGNvbnRlbnRzIG9mIGl0LCB3aGVuIHRoZSB1c2VyIG92ZXJ3cm90ZSB0aGUgdGFnIHdpdGggImdpdCB0YWcgLWYiLgorCisgKiAiZ2l0IGZvci1lYWNoLXJlZiIgZGlkIG5vdCBjdXJyZWN0bHkgc3VwcG9ydCBtb3JlIHRoYW4gb25lIC0tc29ydAorICAgb3B0aW9uLgorCisgKiAiZ2l0IGxvZyAuLiIgZXJyb3JlZCBvdXQgc2F5aW5nIGl0IGlzIGJvdGggcmV2IHJhbmdlIGFuZCBhIHBhdGgKKyAgIHdoZW4gdGhlcmUgaXMgbm8gZGlzYW1iaWd1YXRpbmcgIi0tIiBpcyBvbiB0aGUgY29tbWFuZCBsaW5lLgorICAgVXBkYXRlIHRoZSBjb21tYW5kIGxpbmUgcGFyc2VyIHRvIGludGVycHJldCAiLi4iIGFzIGEgcGF0aCBpbiBzdWNoCisgICBhIGNhc2UuCisKKyAqIFB1c2hpbmcgdG8gc21hcnQgSFRUUCBzZXJ2ZXIgd2l0aCByZWNlbnQgR2l0IGZhaWxzIHdpdGhvdXQgaGF2aW5nCisgICB0aGUgdXNlcm5hbWUgaW4gdGhlIFVSTCB0byBmb3JjZSBhdXRoZW50aWNhdGlvbiwgaWYgdGhlIHNlcnZlciBpcworICAgY29uZmlndXJlZCB0byBhbGxvdyBHRVQgYW5vbnltb3VzbHksIHdoaWxlIHJlcXVpcmluZyBhdXRoZW50aWNhdGlvbgorICAgZm9yIFBPU1QuCisKKyAqICJnaXQgc2hvdyAtLWZvcm1hdD0nJWNpJyIgZGlkIG5vdCBnaXZlIHRpbWVzdGFtcCBjb3JyZWN0bHkgZm9yCisgICBjb21taXRzIGNyZWF0ZWQgd2l0aG91dCBodW1hbiByZWFkYWJsZSBuYW1lIG9uICJjb21taXR0ZXIiIGxpbmUuCisgICAobWVyZ2UgZTI3ZGRiNiBqYy9tYWludC1pZGVudC1taXNzaW5nLWh1bWFuLW5hbWUgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiAiZ2l0IHNob3cgLS1xdWlldCIgb3VnaHQgdG8gYmUgYSBzeW5vbnltIGZvciAiZ2l0IHNob3cgLXMiLCBidXQKKyAgIHdhc24ndC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjEyLjEudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMTIuMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhmMDRhZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjEyLjEudHh0CkBAIC0wLDAgKzEsMTM0IEBACitHaXQgMS43LjEyLjEgUmVsZWFzZSBOb3RlcworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4ZXMgc2luY2UgdjEuNy4xMgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgKiAiZ2l0IGFwcGx5IC1wMCIgZGlkIG5vdCBwYXJzZSBwYXRobmFtZXMgb24gImRpZmYgLS1naXQiIGxpbmUKKyAgIGNvcnJlY3RseS4gIFRoaXMgY2F1c2VkIHBhdGNoZXMgdGhhdCBoYWQgcGF0aG5hbWVzIGluIG5vIG90aGVyCisgICBwbGFjZXMgdG8gYmUgbWlzdGFrZW5seSByZWplY3RlZCAobW9zdCBub3RhYmx5LCBiaW5hcnkgcGF0Y2ggdGhhdAorICAgZG9lcyBub3QgcmVuYW1lIG5vciBjaGFuZ2UgbW9kZSkuICBUZXh0dWFsIHBhdGNoZXMsIHJlbmFtZXMgb3IgbW9kZQorICAgY2hhbmdlcyBoYXZlIHByZWltYWdlIGFuZCBwb3N0aW1hZ2UgcGF0aG5hbWVzIGluIGRpZmZlcmVudCBwbGFjZXMKKyAgIGluIGEgZm9ybSB0aGF0IGNhbiBiZSBwYXJzZWQgdW5hbWJpZ3VvdXNseSBhbmQgZGlkIG5vdCBzdWZmZXIgZnJvbQorICAgdGhpcyBwcm9ibGVtLgorCisgKiAiZ2l0IGNoZXJyeS1waWNrIEEgQyBCIiB1c2VkIHRvIHJlcGxheSBjaGFuZ2VzIGluIEEgYW5kIHRoZW4gQiBhbmQKKyAgIHRoZW4gQyBpZiB0aGVzZSB0aHJlZSBjb21taXRzIGhhZCBjb21taXR0ZXIgdGltZXN0YW1wcyBpbiB0aGF0CisgICBvcmRlciwgd2hpY2ggaXMgbm90IHdoYXQgdGhlIHVzZXIgd2hvIHNhaWQgIkEgQyBCIiBuYXR1cmFsbHkKKyAgIGV4cGVjdHMuCisKKyAqICJnaXQgY29tbWl0IC0tYW1lbmQiIGxldCB0aGUgdXNlciBlZGl0IHRoZSBsb2cgbWVzc2FnZSBhbmQgdGhlbgorICAgZGllZCB3aGVuIHRoZSBodW1hbi1yZWFkYWJsZSBjb21taXR0ZXIgbmFtZSB3YXMgZ2l2ZW4KKyAgIGluc3VmZmljaWVudGx5IGJ5IGdldHB3ZW50KDMpLgorCisgKiBTb21lIGNhcGFiaWxpdGllcyB3ZXJlIGFza2VkIGJ5IGZldGNoLXBhY2sgZXZlbiB3aGVuIHVwbG9hZC1wYWNrCisgICBkaWQgbm90IGFkdmVydGlzZSB0aGF0IHRoZXkgYXJlIGF2YWlsYWJsZS4gIGZldGNoLXBhY2sgaGFzIGJlZW4KKyAgIGZpeGVkIG5vdCB0byBkbyBzby4KKworICogImdpdCBkaWZmIiBoYWQgYSBjb25mdXNpb24gYmV0d2VlbiB0YWtpbmcgZGF0YSBmcm9tIGEgcGF0aCBpbiB0aGUKKyAgIHdvcmtpbmcgdHJlZSBhbmQgdGFraW5nIGRhdGEgZnJvbSBhbiBvYmplY3QgdGhhdCBoYXBwZW5zIHRvIGhhdmUKKyAgIG5hbWUgMHs0MH0gcmVjb3JkZWQgaW4gYSB0cmVlLgorCisgKiAiZ2l0IGZvci1lYWNoLXJlZiIgZGlkIG5vdCBjb3JyZWN0bHkgc3VwcG9ydCBtb3JlIHRoYW4gb25lIC0tc29ydAorICAgb3B0aW9uLgorCisgKiAiZ2l0IGxvZyAuLiIgZXJyb3JlZCBvdXQgc2F5aW5nIGl0IGlzIGJvdGggcmV2IHJhbmdlIGFuZCBhIHBhdGgKKyAgIHdoZW4gdGhlcmUgaXMgbm8gZGlzYW1iaWd1YXRpbmcgIi0tIiBpcyBvbiB0aGUgY29tbWFuZCBsaW5lLgorICAgVXBkYXRlIHRoZSBjb21tYW5kIGxpbmUgcGFyc2VyIHRvIGludGVycHJldCAiLi4iIGFzIGEgcGF0aCBpbiBzdWNoCisgICBhIGNhc2UuCisKKyAqIFRoZSAiLS10b3BvLW9yZGVyIiwgIi0tZGF0ZS1vcmRlciIgKGFuZCB0aGUgbGFjayBvZiBlaXRoZXIgbWVhbnMKKyAgIHRoZSBkZWZhdWx0IG9yZGVyKSBvcHRpb25zIHRvICJyZXYtbGlzdCIgYW5kICJsb2ciIGZhbWlseSBvZgorICAgY29tbWFuZHMgd2VyZSBwb29ybHkgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgorCisgKiAiZ2l0IHBydW5lIiB3aXRob3V0ICItdiIgdXNlZCB0byB3YXJuIGFib3V0IGxlZnRvdmVyIHRlbXBvcmFyeQorICAgZmlsZXMgKHdoaWNoIGlzIGFuIGluZGljYXRpb24gb2YgYW4gZWFybGllciBhYm9ydGVkIG9wZXJhdGlvbikuCisKKyAqIFB1c2hpbmcgdG8gc21hcnQgSFRUUCBzZXJ2ZXIgd2l0aCByZWNlbnQgR2l0IGZhaWxzIHdpdGhvdXQgaGF2aW5nCisgICB0aGUgdXNlcm5hbWUgaW4gdGhlIFVSTCB0byBmb3JjZSBhdXRoZW50aWNhdGlvbiwgaWYgdGhlIHNlcnZlciBpcworICAgY29uZmlndXJlZCB0byBhbGxvdyBHRVQgYW5vbnltb3VzbHksIHdoaWxlIHJlcXVpcmluZyBhdXRoZW50aWNhdGlvbgorICAgZm9yIFBPU1QuCisKKyAqIFRoZSByZWZsb2cgZW50cmllcyBsZWZ0IGJ5ICJnaXQgcmViYXNlIiBhbmQgImdpdCByZWJhc2UgLWkiIHdlcmUKKyAgIGluY29uc2lzdGVudCAodGhlIGludGVyYWN0aXZlIG9uZSBnYXZlIGFuIGFiYnJldmlhdGVkIG9iamVjdCBuYW1lKS4KKworICogV2hlbiAiZ2l0IHB1c2giIHRyaWdnZXJlZCB0aGUgYXV0b21hdGljIGdjIG9uIHRoZSByZWNlaXZpbmcgZW5kLCBhCisgICBtZXNzYWdlIGZyb20gImdpdCBwcnVuZSIgdGhhdCBzYWlkIGl0IHdhcyByZW1vdmluZyBjcnVmdCBsZWFrZWQgdG8KKyAgIHRoZSBzdGFuZGFyZCBvdXRwdXQsIGJyZWFraW5nIHRoZSBjb21tdW5pY2F0aW9uIHByb3RvY29sLgorCisgKiAiZ2l0IHNob3cgLS1xdWlldCIgb3VnaHQgdG8gYmUgYSBzeW5vbnltIGZvciAiZ2l0IHNob3cgLXMiLCBidXQKKyAgIHdhc24ndC4KKworICogImdpdCBzaG93IC0tZm9ybWF0PSclY2knIiBkaWQgbm90IGdpdmUgdGltZXN0YW1wIGNvcnJlY3RseSBmb3IKKyAgIGNvbW1pdHMgY3JlYXRlZCB3aXRob3V0IGh1bWFuIHJlYWRhYmxlIG5hbWUgb24gImNvbW1pdHRlciIgbGluZS4KKworICogImdpdCBzZW5kLWVtYWlsIiBkaWQgbm90IHVucXVvdGUgZW5jb2RlZCB3b3JkcyB0aGF0IGFwcGVhciBvbiB0aGUKKyAgIGhlYWRlciBjb3JyZWN0bHksIGFuZCBsb3N0ICJfIiBmcm9tIHN0cmluZ3MuCisKKyAqIFRoZSBpbnRlcmFjdGl2ZSBwcm9tcHQgImdpdCBzZW5kLWVtYWlsIiBnaXZlcyB3YXMgZXJyb3IgcHJvbmUuIEl0CisgICBhc2tlZCAiV2hhdCBlLW1haWwgYWRkcmVzcyBkbyB5b3Ugd2FudCB0byB1c2U/IiB3aXRoIHRoZSBhZGRyZXNzIGl0CisgICBndWVzc2VkIChjb3JyZWN0bHkpIHRoZSB1c2VyIHdvdWxkIHdhbnQgdG8gdXNlIGluIGl0cyBwcm9tcHQsCisgICB0ZW1wdGluZyB0aGUgdXNlciB0byBzYXkgInkiLiBCdXQgdGhlIHJlc3BvbnNlIHdhcyB0YWtlbiBhcyAiTm8sCisgICBwbGVhc2UgdXNlICd5JyBhcyB0aGUgZS1tYWlsIGFkZHJlc3MgaW5zdGVhZCIsIHdoaWNoIGlzIG1vc3QKKyAgIGNlcnRhaW5seSBub3Qgd2hhdCB0aGUgdXNlciBtZWFudC4KKworICogImdpdHdlYiIgd2hlbiB1c2VkIHdpdGggUEFUSF9JTkZPIGZhaWxlZCB0byBub3RpY2UgZGlyZWN0b3JpZXMgd2l0aAorICAgU1AgKGFuZCBvdGhlciBjaGFyYWN0ZXJzIHRoYXQgbmVlZCBVUkwtc3R5bGUgcXVvdGluZykgaW4gdGhlbS4KKworICogV2hlbiB0aGUgdXNlciBnaXZlcyBhbiBhcmd1bWVudCB0aGF0IGNhbiBiZSB0YWtlbiBhcyBib3RoIGEKKyAgIHJldmlzaW9uIG5hbWUgYW5kIGEgcGF0aG5hbWUgd2l0aG91dCBkaXNhbWJpZ3VhdGluZyB3aXRoICItLSIsIHdlCisgICB1c2VkIHRvIGdpdmUgYSBoZWxwIG1lc3NhZ2UgIlVzZSAnLS0nIHRvIHNlcGFyYXRlIi4gIFRoZSBtZXNzYWdlCisgICBoYXMgYmVlbiBjbGFyaWZpZWQgdG8gc2hvdyB3aGVyZSB0aGF0ICctLScgZ29lcyBvbiB0aGUgY29tbWFuZAorICAgbGluZS4KKworICogV2hlbiB0aGUgdXNlciBleHBvcnRzIGEgbm9uLWRlZmF1bHQgSUZTIHdpdGhvdXQgSFQsIHNjcmlwdHMgdGhhdAorICAgcmVseSBvbiBiZWluZyBhYmxlIHRvIHBhcnNlICJscy1maWxlcyAtcyB8IHdoaWxlIHJlYWQgYSBiIGMuLi4iCisgICBzdGFydGVkIHRvIGZhaWwuICBQcm90ZWN0IHRoZW0gZnJvbSBzdWNoIGEgbWlzY29uZmlndXJhdGlvbi4KKworICogVGhlIGF0dHJpYnV0ZSBzeXN0ZW0gbWF5IGJlIGFza2VkIGZvciBhIHBhdGggdGhhdCBpdHNlbGYgb3IgaXRzCisgICBsZWFkaW5nIGRpcmVjdG9yaWVzIG5vIGxvbmdlciBleGlzdHMgaW4gdGhlIHdvcmtpbmcgdHJlZSwgYW5kIGl0IGlzCisgICBmaW5lIGlmIHdlIGNhbm5vdCBvcGVuIC5naXRhdHRyaWJ1dGUgZmlsZSBpbiBzdWNoIGEgY2FzZS4gIEZhaWx1cmUKKyAgIHRvIG9wZW4gcGVyLWRpcmVjdG9yeSAuZ2l0YXR0cmlidXRlcyB3aXRoIGVycm9yIHN0YXR1cyBvdGhlciB0aGFuCisgICBFTk9FTlQgYW5kIEVOT1RESVIgc2hvdWxkIGJlIGRpYWdub3NlZCwgYnV0IGl0IHdhc24ndC4KKworICogQWZ0ZXIgImdpdGsiIHNob3dlZCB0aGUgY29udGVudHMgb2YgYSB0YWcsIG5laXRoZXIgIlJlcmVhZAorICAgcmVmZXJlbmNlcyIgbm9yICJSZWxvYWQiIGRpZCBub3QgdXBkYXRlIHdoYXQgaXMgc2hvd24gYXMgdGhlCisgICBjb250ZW50cyBvZiBpdCwgd2hlbiB0aGUgdXNlciBvdmVyd3JvdGUgdGhlIHRhZyB3aXRoICJnaXQgdGFnIC1mIi4KKworICogImNpYWJvdCIgc2NyaXB0IChpbiBjb250cmliLykgaGFzIGJlZW4gdXBkYXRlZCB3aXRoIGV4dGVuc2l2ZQorICAgZG9jdW1lbnRhdGlvbi4KKworICogImdpdC1qdW1wIiBzY3JpcHQgKGluIGNvbnRyaWIvKSBkaWQgbm90IHdvcmsgd2VsbCB3aGVuCisgICBkaWZmLm5vcHJlZml4IG9yIGRpZmYubW5lbW9uaWNwcmVmaXggaXMgaW4gZWZmZWN0LgorCisgKiBPbGRlciBwYXJ0cyBvZiB0aGUgZG9jdW1lbnRhdGlvbiBkZXNjcmliZWQgYXMgaWYgaGF2aW5nIGEgcmVndWxhcgorICAgZmlsZSBpbiAuZ2l0L3JlZnMvIGhpZXJhcmNoeSB3ZXJlIHRoZSBvbmx5IHdheSB0byBoYXZlIGJyYW5jaGVzIGFuZAorICAgdGFncywgd2hpY2ggaXMgbm90IHRydWUgZm9yIHF1aXRlIHNvbWUgdGltZS4KKworICogQSB1dGlsaXR5IHNoZWxsIGZ1bmN0aW9uIHRlc3Rfc2VxIGhhcyBiZWVuIGFkZGVkIGFzIGEgcmVwbGFjZW1lbnQKKyAgIGZvciB0aGUgJ3NlcScgdXRpbGl0eSBmb3VuZCBvbiBzb21lIHBsYXRmb3Jtcy4KKworICogQ29tcGF0aWJpbGl0eSB3cmFwcGVyIHRvIGxlYXJuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBmaWxlCisgICBkZXNjcmlwdG9ycyB3ZSBjYW4gb3BlbiBhcm91bmQgc3lzY29uZihfU0NfT1BFTl9NQVgpIGFuZAorICAgZ2V0cmxpbWl0KFJMSU1JVF9OT19GSUxFKSBoYXMgYmVlbiBpbnRyb2R1Y2VkIGZvciBwb3J0YWJpbGl0eS4KKworICogV2UgdXNlZCBjdXJsX2Vhc3lfc3RyZXJyb3IoKSB3aXRob3V0IGNoZWNraW5nIHZlcnNpb24gb2YgY1VSTCwKKyAgIGJyZWFraW5nIHRoZSBidWlsZCBmb3IgdmVyc2lvbnMgYmVmb3JlIGN1cmwgNy4xMi4wLgorCisgKiBDb2RlIHRvIHdvcmsgYXJvdW5kIE1hY09TIFggVVRGLTggZ290Y2hhIGhhcyBiZWVuIGNsZWFuZWQgdXAuCisKKyAqIEZhbGxiYWNrICdnZXRwYXNzJyBpbXBsZW1lbnRhdGlvbiBtYWRlIHVucG9ydGFibGUgdXNlIG9mIHN0ZGlvIEFQSS4KKworICogVGhlICItLXJlYmFzZSIgb3B0aW9uIHRvICJnaXQgcHVsbCIgY2FuIGJlIGFiYnJldmlhdGVkIHRvICItciIsCisgICBidXQgd2UgZGlkbid0IGRvY3VtZW50IGl0LgorCisgKiBJdCB3YXMgZ2VuZXJhbGx5IHVuZGVyc3Rvb2QgdGhhdCAiLS1sb25nLW9wdGlvbiJzIHRvIG1hbnkgb2Ygb3VyCisgICBzdWJjb21tYW5kcyBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gdGhlIHVuaXF1ZSBwcmVmaXgsIGJ1dCBpdCB3YXMgbm90CisgICBlYXN5IHRvIGZpbmQgaXQgZGVzY3JpYmVkIGZvciBuZXcgcmVhZGVycyBvZiB0aGUgZG9jdW1lbnRhdGlvbiBzZXQuCisKKyAqIFRoZSBzeW5vcHNpcyBzYWlkICJjaGVja291dCBbLUIgYnJhbmNoXSIgdG8gbWFrZSBpdCBjbGVhciB0aGUKKyAgIGJyYW5jaCBuYW1lIGlzIGEgcGFyYW1ldGVyIHRvIHRoZSBvcHRpb24sIGJ1dCB0aGUgaGVhZGluZyBmb3IgdGhlCisgICBvcHRpb24gZGVzY3JpcHRpb24gd2FzICItQjo6Iiwgbm90ICItQiBicmFuY2g6OiIsIG1ha2luZyB0aGUKKyAgIGRvY3VtZW50YXRpb24gbWlzbGVhZGluZy4KKworQWxzbyBjb250YWlucyBudW1lcm91cyBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4xMi4yLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjEyLjIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MjU1NzQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4xMi4yLnR4dApAQCAtMCwwICsxLDQwIEBACitHaXQgMS43LjEyLjIgUmVsZWFzZSBOb3RlcworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4ZXMgc2luY2UgdjEuNy4xMi4xCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICogV2hlbiAiZ2l0IGFtIiBpcyBmZWQgYW4gaW5wdXQgdGhhdCBoYXMgbXVsdGlwbGUgIkNvbnRlbnQtdHlwZTogLi4uIgorICAgaGVhZGVyLCBpdCBkaWQgbm90IGdyb2sgY2hhcnNldD0gYXR0cmlidXRlIGNvcnJlY3RseS4KKworICogRXZlbiBkdXJpbmcgYSBjb25mbGljdGVkIG1lcmdlLCAiZ2l0IGJsYW1lICRwYXRoIiBhbHdheXMgbWVhbnQgdG8KKyAgIGJsYW1lIHVuY29tbWl0dGVkIGNoYW5nZXMgdG8gdGhlICJ3b3JraW5nIHRyZWUiIHZlcnNpb247IG1ha2UgaXQKKyAgIG1vcmUgdXNlZnVsIGJ5IHNob3dpbmcgY2xlYW5seSBtZXJnZWQgcGFydHMgYXMgY29taW5nIGZyb20gdGhlIG90aGVyCisgICBicmFuY2ggdGhhdCBpcyBiZWluZyBtZXJnZWQuCisKKyAqICJnaXQgYmxhbWUgTUFLRUZJTEUiIHJ1biBpbiBhIGhpc3RvcnkgdGhhdCBoYXMgIk1ha2VmaWxlIiBidXQgbm90CisgICAiTUFLRUZJTEUiIHNob3VsZCBzYXkgIk5vIHN1Y2ggZmlsZSBNQUtFRklMRSBpbiBIRUFEIiwgYnV0IGdvdAorICAgY29uZnVzZWQgb24gYSBjYXNlIGluc2Vuc2l0aXZlIGZpbGVzeXN0ZW0gYW5kIGZhaWxlZCB0byBkbyBzby4KKworICogImdpdCBmZXRjaCAtLWFsbCIsIHdoZW4gcGFzc2VkICItLW5vLXRhZ3MiLCBkaWQgbm90IGhvbm9yIHRoZQorICAgIi0tbm8tdGFncyIgb3B0aW9uIHdoaWxlIGZldGNoaW5nIGZyb20gaW5kaXZpZHVhbCByZW1vdGVzICh0aGUgc2FtZQorICAgaXNzdWUgZXhpc3RlZCB3aXRoICItLXRhZ3MiLCBidXQgY29tYmluYXRpb24gIi0tYWxsIC0tdGFncyIgbWFrZXMKKyAgIG11Y2ggbGVzcyBzZW5zZSB0aGFuICItLWFsbCAtLW5vLXRhZ3MiKS4KKworICogImdpdCBsb2cvZGlmZi9mb3JtYXQtcGF0Y2ggLS1zdGF0IiBzaG93ZWQgdGhlICJOIGxpbmUocykgYWRkZWQiCisgICBjb21tZW50IGluIHVzZXIncyBsb2NhbGUgYW5kIGNhdXNlZCBjYXJlbGVzcyBzdWJtaXR0ZXJzIHRvIHNlbmQKKyAgIHBhdGNoZXMgd2l0aCBzdWNoIGEgbGluZSBpbiB0aGVtIHRvIHByb2plY3RzIHdob3NlIHByb2plY3QgbGFuZ3VhZ2UKKyAgIGlzIG5vdCB0aGVpciBsYW5ndWFnZSwgbWlsZGx5IGlycml0YXRpbmcgb3RoZXJzLiBMb2NhbGl6YXRpb24gdG8KKyAgIHRoZSBsaW5lIGhhcyBiZWVuIGRpc2FibGVkIGZvciBub3cuCisKKyAqICJnaXQgbG9nIC0tYWxsLW1hdGNoIC0tZ3JlcD1BIC0tZ3JlcD1CIiBvdWdodCB0byBzaG93IGNvbW1pdHMgdGhhdAorICAgbWVudGlvbiBib3RoIEEgYW5kIEIsIGJ1dCB3aGVuIHRoZXNlIHRocmVlIG9wdGlvbnMgYXJlIHVzZWQgd2l0aAorICAgLS1hdXRob3Igb3IgLS1jb21taXR0ZXIsIGl0IHNob3dlZCBjb21taXRzIHRoYXQgbWVudGlvbiBlaXRoZXIgQSBvcgorICAgQiAob3IgYm90aCkgaW5zdGVhZC4KKworICogVGhlIHN1YmNvbW1hbmQgdG8gcmVtb3ZlIHRoZSBkZWZpbml0aW9uIG9mIGEgcmVtb3RlIGluICJnaXQgcmVtb3RlIgorICAgd2FzIG5hbWVkICJybSIgZXZlbiB0aG91Z2ggYWxsIG90aGVyIHN1YmNvbW1hbmRzIHdlcmUgc3BlbGxlZCBvdXQuCisgICBJbnRyb2R1Y2UgImdpdCByZW1vdGUgcmVtb3ZlIiB0byByZW1vdmUgY29uZnVzaW9uLCBhbmQga2VlcCAicm0iIGFzCisgICBhIGJhY2t3YXJkIGNvbXBhdGlibGUgc3lub255bS4KKworQWxzbyBjb250YWlucyBhIGhhbmRmdWwgb2YgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMTIuMy50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4xMi4zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2RhNDI3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMTIuMy50eHQKQEAgLTAsMCArMSwzNCBAQAorR2l0IDEuNy4xMi4zIFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVzIHNpbmNlIHYxLjcuMTIuMgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAqICJnaXQgYW0iIG1pc2hhbmRsZWQgYSBwYXRjaCBhdHRhY2hlZCBhcyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KKyAgIChlLmcuIG5vdCB0ZXh0LyopOyBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIChlLmcuIGJhc2U2NCkgd2FzIG5vdAorICAgaG9ub3JlZCBjb3JyZWN0bHkuCisKKyAqIEl0IHdhcyB1bmNsZWFyIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciAiZ2l0IGJsYW1lIiB0aGF0IGl0IGlzCisgICB1bm5lY2Vzc2FyeSBmb3IgdXNlcnMgdG8gdXNlIHRoZSAiLS1mb2xsb3ciIG9wdGlvbi4KKworICogQSByZXBvc2l0b3J5IGNyZWF0ZWQgd2l0aCAiZ2l0IGNsb25lIC0tc2luZ2xlIiBoYWQgaXRzIGZldGNoCisgICByZWZzcGVjcyBzZXQgdXAganVzdCBsaWtlIGEgY2xvbmUgd2l0aG91dCAiLS1zaW5nbGUiLCBsZWFkaW5nIHRoZQorICAgc3Vic2VxdWVudCAiZ2l0IGZldGNoIiB0byBzbHVycCBhbGwgdGhlIG90aGVyIGJyYW5jaGVzLCBkZWZlYXRpbmcKKyAgIHRoZSB3aG9sZSBwb2ludCBvZiBzcGVjaWZ5aW5nICJvbmx5IHRoaXMgYnJhbmNoIi4KKworICogImdpdCBmZXRjaCIgb3ZlciBodHRwIGhhZCBhbiBvbGQgd29ya2Fyb3VuZCBmb3IgYW4gdW5saWtlbHkgc2VydmVyCisgICBtaXNjb25maWd1cmF0aW9uOyBpdCB0dXJucyBvdXQgdGhhdCB0aGlzIGh1cnRzIGRlYnVnZ2FiaWxpdHkgb2YgdGhlCisgICBjb25maWd1cmF0aW9uIGluIGdlbmVyYWwsIGFuZCBoYXMgYmVlbiByZXZlcnRlZC4KKworICogImdpdCBmZXRjaCIgb3ZlciBodHRwIGFkdmVydGlzZWQgdGhhdCBpdCBzdXBwb3J0cyAiZGVmbGF0ZSIsIHdoaWNoCisgICBpcyBtdWNoIGxlc3MgY29tbW9uLCBhbmQgZGlkIG5vdCBhZHZlcnRpc2UgdGhlIG1vcmUgY29tbW9uICJnemlwIiBvbgorICAgaXRzIEFjY2VwdC1FbmNvZGluZyBoZWFkZXIuCisKKyAqICJnaXQgcmVjZWl2ZS1wYWNrIiAodGhlIGNvdW50ZXJwYXJ0IHRvICJnaXQgcHVzaCIpIGRpZCBub3QgZ2l2ZQorICAgcHJvZ3Jlc3Mgb3V0cHV0IHdoaWxlIHByb2Nlc3Npbmcgb2JqZWN0cyBpdCByZWNlaXZlZCB0byB0aGUgcHVzZXIKKyAgIHdoZW4gcnVuIG92ZXIgdGhlIHNtYXJ0LWh0dHAgcHJvdG9jb2wuCisKKyAqICJnaXQgc3RhdHVzIiBob25vcmVkIHRoZSBpZ25vcmU9ZGlydHkgc2V0dGluZ3MgaW4gLmdpdG1vZHVsZXMgYnV0CisgICAiZ2l0IGNvbW1pdCIgZGlkbid0LgorCitBbHNvIGNvbnRhaW5zIGEgaGFuZGZ1bCBvZiBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4xMi40LnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjEyLjQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2ZGEzY2MKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4xMi40LnR4dApAQCAtMCwwICsxLDIzIEBACitHaXQgMS43LjEyLjQgUmVsZWFzZSBOb3RlcworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4ZXMgc2luY2UgdjEuNy4xMi4zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICogImdpdCBmZXRjaCIgb3ZlciB0aGUgZHVtYi1odHRwIHJldmlzaW9uIHdhbGtlciBjb3VsZCBzZWdmYXVsdCB3aGVuCisgICBjdXJsJ3MgbXVsdGkgaW50ZXJmYWNlIHdhcyB1c2VkLgorCisgKiBJdCB3YXMgcG9zc2libGUgdG8gZ2l2ZSBzcGVjaWZpYyBwYXRocyBmb3IgImFzY2lpZG9jIiBhbmQgb3RoZXIKKyAgIHRvb2xzIGluIHRoZSBkb2N1bWVudGF0aW9uIHRvb2xjaGFpbiwgYnV0IG5vdCBmb3IgInhtbHRvIi4KKworICogImdpdHdlYiIgZGlkIG5vdCBnaXZlIHRoZSBjb3JyZWN0IGNvbW1pdHRlciB0aW1lem9uZSBpbiBpdHMgZmVlZAorICAgb3V0cHV0IGR1ZSB0byBhIHR5cG8uCisKKyAqIFRoZSAiLVhvdXJzIiAoYW5kIHNpbWlsYXJseSAtWHRoZWlycykgYmFja2VuZCBvcHRpb24gdG8gImdpdAorICAgbWVyZ2UgLXMgcmVjdXJzaXZlIiB3YXMgaWdub3JlZCBmb3IgYmluYXJ5IGZpbGVzLiAgTm93IGl0IGlzCisgICBob25vcmVkLgorCisgKiBUaGUgImJpbmFyeSIgc3ludGhldGljIGF0dHJpYnV0ZSBtYWRlICJkaWZmIiB0byB0cmVhdCB0aGUgcGF0aCBhcworICAgYmluYXJ5LCBidXQgbm90ICJtZXJnZSIuCisKK0Fsc28gY29udGFpbnMgbWFueSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4xMi50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4xMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDEwZDhjNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjEyLnR4dApAQCAtMCwwICsxLDEzNiBAQAorR2l0IHYxLjcuMTIgUmVsZWFzZSBOb3RlcworPT09PT09PT09PT09PT09PT09PT09PT09PQorCitVcGRhdGVzIHNpbmNlIHYxLjcuMTEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVSSwgV29ya2Zsb3dzICYgRmVhdHVyZXMKKworICogR2l0IGNhbiBiZSB0b2xkIHRvIG5vcm1hbGl6ZSBwYXRobmFtZXMgaXQgcmVhZCBmcm9tIHJlYWRkaXIoMykgYW5kCisgICBhbGwgYXJndW1lbnRzIGl0IGdvdCBmcm9tIHRoZSBjb21tYW5kIGxpbmUgaW50byBwcmVjb21wb3NlZCBVVEYtOAorICAgKGFzc3VtaW5nIHRoYXQgdGhleSBjb21lIGFzIGRlY29tcG9zZWQgVVRGLTgpLCBpbiBvcmRlciB0byB3b3JrCisgICBhcm91bmQgaXNzdWVzIG9uIE1hYyBPUy4KKworICAgSSB0aGluayB0aGVyZSBzdGlsbCBhcmUgb3RoZXIgcGxhY2VzIHRoYXQgbmVlZCBjb252ZXJzaW9uCisgICAoZS5nLiBwYXRocyB0aGF0IGFyZSByZWFkIGZyb20gc3RkaW4gZm9yIHNvbWUgY29tbWFuZHMpLCBidXQgdGhpcworICAgc2hvdWxkIGJlIGEgZ29vZCBmaXJzdCBzdGVwIGluIHRoZSByaWdodCBkaXJlY3Rpb24uCisKKyAqIFBlci11c2VyICRIT01FLy5naXRjb25maWcgZmlsZSBjYW4gb3B0aW9uYWxseSBiZSBzdG9yZWQgaW4KKyAgICRIT01FLy5jb25maWcvZ2l0L2NvbmZpZyBpbnN0ZWFkLCB3aGljaCBpcyBpbiBsaW5lIHdpdGggWERHLgorCisgKiBUaGUgdmFsdWUgb2YgY29yZS5hdHRyaWJ1dGVzZmlsZSBhbmQgY29yZS5leGNsdWRlc2ZpbGUgZGVmYXVsdCB0bworICAgJEhPTUUvLmNvbmZpZy9naXQvYXR0cmlidXRlcyBhbmQgJEhPTUUvLmNvbmZpZy9naXQvaWdub3JlIHJlc3BlY3RpdmVseQorICAgd2hlbiB0aGVzZSBmaWxlcyBleGlzdC4KKworICogTG9naWMgdG8gZGlzYW1iaWd1YXRlIGFiYnJldmlhdGVkIG9iamVjdCBuYW1lcyBoYXZlIGJlZW4gdGF1Z2h0IHRvCisgICB0YWtlIGFkdmFudGFnZSBvZiBvYmplY3QgdHlwZXMgdGhhdCBhcmUgZXhwZWN0ZWQgaW4gdGhlIGNvbnRleHQsCisgICBlLmcuIFhYWFhYWCBpbiB0aGUgImdpdCBkZXNjcmliZSIgb3V0cHV0IHYxLjIuMy1nWFhYWFhYIG11c3QgYmUgYQorICAgY29tbWl0IG9iamVjdCwgbm90IGEgYmxvYiBub3IgYSB0cmVlLiAgVGhpcyB3aWxsIGhlbHAgdXMgcHJvbG9uZworICAgdGhlIGxpZmV0aW1lIG9mIGFiYnJldmlhdGVkIG9iamVjdCBuYW1lcy4KKworICogImdpdCBhcHBseSIgbGVhcm5lZCB0byB3aWdnbGUgdGhlIGJhc2UgdmVyc2lvbiBhbmQgcGVyZm9ybSB0aHJlZS13YXkKKyAgIG1lcmdlIHdoZW4gYSBwYXRjaCBkb2VzIG5vdCBleGFjdGx5IGFwcGx5IHRvIHRoZSB2ZXJzaW9uIHlvdSBoYXZlLgorCisgKiBTY3JpcHRlZCBQb3JjZWxhaW4gd3JpdGVycyBub3cgaGF2ZSBhY2Nlc3MgdG8gdGhlIGNyZWRlbnRpYWwgQVBJIHZpYQorICAgdGhlICJnaXQgY3JlZGVudGlhbCIgcGx1bWJpbmcgY29tbWFuZC4KKworICogImdpdCBoZWxwIiB1c2VkIHRvIGFsd2F5cyBkZWZhdWx0IHRvICJtYW4iIGZvcm1hdCBldmVuIG9uIHBsYXRmb3JtcworICAgd2hlcmUgIm1hbiIgdmlld2VyIGlzIG5vdCB3aWRlbHkgYXZhaWxhYmxlLgorCisgKiAiZ2l0IGNsb25lIC0tbG9jYWwgJHBhdGgiIHN0YXJ0ZWQgaXRzIGxpZmUgYXMgYW4gZXhwZXJpbWVudCB0bworICAgb3B0aW9uYWxseSB1c2UgbGluay9jb3B5IHdoZW4gY2xvbmluZyBhIHJlcG9zaXRvcnkgb24gdGhlIGRpc2ssIGJ1dAorICAgd2UgZGlkbid0IGRlcHJlY2F0ZSBpdCBhZnRlciB3ZSBtYWRlIHRoZSBvcHRpb24gYSBuby1vcCB0byBhbHdheXMKKyAgIHVzZSB0aGUgb3B0aW1pemF0aW9uLiAgVGhlIGNvbW1hbmQgbGVhcm5lZCAiLS1uby1sb2NhbCIgb3B0aW9uIHRvCisgICB0dXJuIHRoaXMgb2ZmLCBhcyBhIG1vcmUgZXhwbGljaXQgYWx0ZXJuYXRpdmUgb3ZlciB1c2Ugb2YgZmlsZTovLworICAgVVJMLgorCisgKiAiZ2l0IGZldGNoIiBhbmQgZnJpZW5kcyB1c2VkIHRvIHNheSAicmVtb3RlIHNpZGUgaHVuZyB1cAorICAgdW5leHBlY3RlZGx5IiB3aGVuIHRoZXkgZmFpbGVkIHRvIGdldCByZXNwb25zZSB0aGV5IGV4cGVjdCBmcm9tIHRoZQorICAgb3RoZXIgc2lkZSwgYnV0IG9uZSBjb21tb24gcmVhc29uIHdoeSB0aGV5IGRvbid0IGdldCBleHBlY3RlZAorICAgcmVzcG9uc2UgaXMgdGhhdCB0aGUgcmVtb3RlIHJlcG9zaXRvcnkgZG9lcyBub3QgZXhpc3Qgb3IgY2Fubm90IGJlCisgICByZWFkLiBUaGUgZXJyb3IgbWVzc2FnZSBpbiB0aGlzIGNhc2Ugd2FzIHVwZGF0ZWQgdG8gZ2l2ZSBiZXR0ZXIKKyAgIGhpbnRzIHRvIHRoZSB1c2VyLgorCisgKiAiZ2l0IGhlbHAgLXcgJGNtZCIgY2FuIHNob3cgSFRNTCB2ZXJzaW9uIG9mIGRvY3VtZW50YXRpb24gZm9yCisgICAiZ2l0LSRjbWQiIGJ5IHNldHRpbmcgaGVscC5odG1scGF0aCB0byBzb21ld2hlcmUgb3RoZXIgdGhhbiB0aGUKKyAgIGRlZmF1bHQgbG9jYXRpb24gd2hlcmUgdGhlIGJ1aWxkIHByb2NlZHVyZSBpbnN0YWxscyB0aGVtIGxvY2FsbHk7CisgICB0aGUgdmFyaWFibGUgY2FuIGV2ZW4gcG9pbnQgYXQgYSBodHRwOi8vIFVSTC4KKworICogImdpdCByZWJhc2UgWy1pXSAtLXJvb3QgJHRpcCIgY2FuIG5vdyBiZSB1c2VkIHRvIHJld3JpdGUgYWxsIHRoZQorICAgaGlzdG9yeSBsZWFkaW5nIHRvICIkdGlwIiBkb3duIHRvIHRoZSByb290IGNvbW1pdC4KKworICogImdpdCByZWJhc2UgLWkiIGxlYXJuZWQgIi14IDxjbWQ+IiB0byBpbnNlcnQgImV4ZWMgPGNtZD4iIGFmdGVyCisgICBlYWNoIGNvbW1pdCBpbiB0aGUgcmVzdWx0aW5nIGhpc3RvcnkuCisKKyAqICJnaXQgc3RhdHVzIiBnaXZlcyBmaW5lciBjbGFzc2lmaWNhdGlvbiB0byB2YXJpb3VzIHN0YXRlcyBvZiBwYXRocworICAgaW4gY29uZmxpY3RlZCBzdGF0ZSBhbmQgb2ZmZXIgYWR2aWNlIG1lc3NhZ2VzIGluIGl0cyBvdXRwdXQuCisKKyAqICJnaXQgc3VibW9kdWxlIiBsZWFybmVkIHRvIGRlYWwgd2l0aCBuZXN0ZWQgc3VibW9kdWxlIHN0cnVjdHVyZQorICAgd2hlcmUgYSBtb2R1bGUgaXMgY29udGFpbmVkIHdpdGhpbiBhIG1vZHVsZSB3aG9zZSBvcmlnaW4gaXMKKyAgIHNwZWNpZmllZCBhcyBhIHJlbGF0aXZlIFVSTCB0byBpdHMgc3VwZXJwcm9qZWN0J3Mgb3JpZ2luLgorCisgKiBBIHJhdGhlciBoZWF2eS1pc2ggImdpdCBjb21wbGV0aW9uIiBzY3JpcHQgaGFzIGJlZW4gc3BsaXQgdG8gY3JlYXRlCisgICBhIHNlcGFyYXRlICJnaXQgcHJvbXB0aW5nIiBzY3JpcHQsIHRvIGhlbHAgbGF6eS1hdXRvbG9hZGluZyBvZiB0aGUKKyAgIGNvbXBsZXRpb24gcGFydCB3aGlsZSBtYWtpbmcgcHJvbXB0aW5nIHBhcnQgYWx3YXlzIGF2YWlsYWJsZS4KKworICogImdpdHdlYiIgcGF5cyBhdHRlbnRpb24gdG8gdmFyaW91cyBmb3JtcyBvZiBjcmVkaXRzIHRoYXQgYXJlCisgICBzaW1pbGFyIHRvICJTaWduZWQtb2ZmLWJ5OiIgbGluZXMgaW4gdGhlIGNvbW1pdCBvYmplY3RzIGFuZAorICAgaGlnaGxpZ2h0cyB0aGVtIGFjY29yZGluZ2x5LgorCisKK0ZvcmVpZ24gSW50ZXJmYWNlCisKKyAqICJtZWRpYXdpa2kiIHJlbW90ZSBoZWxwZXIgKGluIGNvbnRyaWIvKSBsZWFybmVkIHRvIGhhbmRsZSBmaWxlCisgICBhdHRhY2htZW50cy4KKworICogImdpdCBwNCIgbm93IHVzZXMgIkpvYnM6IiBhbmQgInA0IG1vdmUiIHdoZW4gYXBwcm9wcmlhdGUuCisKKyAqIHZjcy1zdm4gaGFzIGJlZW4gdXBkYXRlZCB0byBjbGVhbi11cCBjb21waWxhdGlvbiwgbGlmdCAzMi1iaXQKKyAgIGxpbWl0YXRpb25zLCBldGMuCisKKworUGVyZm9ybWFuY2UsIEludGVybmFsIEltcGxlbWVudGF0aW9uLCBldGMuIChwbGVhc2UgcmVwb3J0IHBvc3NpYmxlIHJlZ3Jlc3Npb25zKQorCisgKiBTb21lIHRlc3RzIHNob3dlZCBmYWxzZSBmYWlsdXJlcyBjYXVzZWQgYnkgYSBidWcgaW4gZWNyeXB0b2ZzLgorCisgKiBXZSBubyBsb25nZXIgdXNlIEFzY2lpRG9jNyBzeW50YXggaW4gb3VyIGRvY3VtZW50YXRpb24gYW5kIGZhdm9yIGEKKyAgIG1vcmUgbW9kZXJuIHN0eWxlLgorCisgKiAiZ2l0IGFtIC0tcmViYXNpbmciIGNvZGVwYXRoIHdhcyB0YXVnaHQgdG8gZ3JhYiBhdXRob3JzaGlwLCBsb2cKKyAgIG1lc3NhZ2UgYW5kIHRoZSBwYXRjaCB0ZXh0IGRpcmVjdGx5IG91dCBvZiBleGlzdGluZyBjb21taXRzLiAgVGhpcworICAgd2lsbCBoZWxwIHJlYmFzaW5nIGNvbW1pdHMgdGhhdCBoYXZlIGNvbmZ1c2luZyAiZGlmZiIgb3V0cHV0IGluCisgICB0aGVpciBsb2cgbWVzc2FnZXMuCisKKyAqICJnaXQgaW5kZXgtcGFjayIgYW5kICJnaXQgcGFjay1vYmplY3RzIiB1c2Ugc3RyZWFtaW5nIEFQSSB0byByZWFkCisgICBmcm9tIHRoZSBvYmplY3Qgc3RvcmUgdG8gYXZvaWQgaGF2aW5nIHRvIGhvbGQgYSBsYXJnZSBibG9iIG9iamVjdAorICAgaW4tY29yZSB3aGlsZSB0aGV5IGFyZSBkb2luZyB0aGVpciB0aGluZy4KKworICogQ29kZSB0byBtYXRjaCBwYXRocyB3aXRoIGV4Y2x1ZGUgcGF0dGVybnMgbGVhcm5lZCB0byBhdm9pZCBjYWxsaW5nCisgICBmbm1hdGNoKCkgYnkgY29tcGFyaW5nIGZpeGVkIGxlYWRpbmcgc3Vic3RyaW5nIGxpdGVyYWxseSB3aGVuCisgICBwb3NzaWJsZS4KKworICogImdpdCBsb2cgLW4gMSAtLSByYXJlbHktdG91Y2hlZC1wYXRoIiB3YXMgc3BlbmRpbmcgdW5uZWNlc3NhcnkKKyAgIGN5Y2xlcyBhZnRlciBzaG93aW5nIHRoZSBmaXJzdCBjaGFuZ2UgdG8gZmluZCB0aGUgbmV4dCBvbmUsIG9ubHkgdG8KKyAgIGRpc2NhcmQgaXQuCisKKyAqICJnaXQgc3ZuIiBnb3QgYSBsYXJnZS1sb29raW5nIGNvZGUgcmVvcmdhbml6YXRpb24gYXQgdGhlIGxhc3QKKyAgIG1pbnV0ZSBiZWZvcmUgdGhlIGNvZGUgZnJlZXplLgorCisKK0Fsc28gY29udGFpbnMgbWlub3IgZG9jdW1lbnRhdGlvbiB1cGRhdGVzIGFuZCBjb2RlIGNsZWFuLXVwcy4KKworCitGaXhlcyBzaW5jZSB2MS43LjExCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VubGVzcyBvdGhlcndpc2Ugbm90ZWQsIGFsbCB0aGUgZml4ZXMgc2luY2UgdjEuNy4xMSBpbiB0aGUgbWFpbnRlbmFuY2UKK3JlbGVhc2VzIGFyZSBjb250YWluZWQgaW4gdGhpcyByZWxlYXNlIChzZWUgcmVsZWFzZSBub3RlcyB0byB0aGVtIGZvcgorZGV0YWlscykuCisKKyAqICJnaXQgc3VibW9kdWxlIGFkZCIgd2FzIGNvbmZ1c2VkIHdoZW4gdGhlIHN1cGVycHJvamVjdCBkaWQgbm90IGhhdmUKKyAgIGl0cyByZXBvc2l0b3J5IGluIGl0cyB1c3VhbCBwbGFjZSBpbiB0aGUgd29ya2luZyB0cmVlIGFuZCBHSVRfRElSCisgICBhbmQgR0lUX1dPUktfVFJFRSB3YXMgdXNlZCB0byBhY2Nlc3MgaXQuCisKKyAqICJnaXQgY29tbWl0IC0tYW1lbmQiIGxldCB0aGUgdXNlciBlZGl0IHRoZSBsb2cgbWVzc2FnZSBhbmQgdGhlbiBkaWVkCisgICB3aGVuIHRoZSBodW1hbi1yZWFkYWJsZSBjb21taXR0ZXIgbmFtZSB3YXMgZ2l2ZW4gaW5zdWZmaWNpZW50bHkgYnkKKyAgIGdldHB3ZW50KDMpLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMC4xLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjAuMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYzNzJmYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjAuMS50eHQKQEAgLTAsMCArMSw2NCBAQAorR2l0IHYxLjguMC4xIFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVzIHNpbmNlIHYxLjguMAorLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAqIFRoZSBjb25maWd1cmF0aW9uIHBhcnNlciBoYWQgYW4gdW5uZWNlc3NhcnkgaGFyZGNvZGVkIGxpbWl0IG9uCisgICB2YXJpYWJsZSBuYW1lcyB0aGF0IHdhcyBub3QgY2hlY2tlZCBjb25zaXN0ZW50bHkuCisKKyAqIFRoZSAic2F5IiBmdW5jdGlvbiBpbiB0aGUgdGVzdCBzY2FmZm9sZGluZyBpbmNvcnJlY3RseSBhbGxvd2VkCisgICAiZWNobyIgdG8gaW50ZXJwcmV0ICJcYSIgYXMgaWYgaXQgd2VyZSBhIEMtc3RyaW5nIGFza2luZyBmb3IgYQorICAgQkVMIG91dHB1dC4KKworICogImdpdCBtZXJnZXRvb2wiIGZlZWRzIC9kZXYvbnVsbCBhcyBhIGNvbW1vbiBhbmNlc3RvciB3aGVuIGRlYWxpbmcKKyAgIHdpdGggYW4gYWRkL2FkZCBjb25mbGljdCwgYnV0IHA0bWVyZ2UgYmFja2VuZCBjYW5ub3QgaGFuZGxlCisgICBpdC4gV29yayBpdCBhcm91bmQgYnkgcGFzc2luZyBhIHRlbXBvcmFyeSBlbXB0eSBmaWxlLgorCisgKiAiZ2l0IGxvZyAtRiAtRSAtLWdyZXA9JzxlcmU+JyIgZmFpbGVkIHRvIHVzZSB0aGUgZ2l2ZW4gPGVyZT4KKyAgIHBhdHRlcm4gYXMgZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uLCBhbmQgaW5zdGVhZCBsb29rZWQgZm9yIHRoZQorICAgc3RyaW5nIGxpdGVyYWxseS4KKworICogImdpdCBncmVwIC1lIHBhdHRlcm4gPHRyZWU+IiBhc2tlZCB0aGUgYXR0cmlidXRlIHN5c3RlbSB0byByZWFkCisgICAiPHRyZWU+Oi5naXRhdHRyaWJ1dGVzIiBmaWxlIGluIHRoZSB3b3JraW5nIHRyZWUsIHdoaWNoIHdhcworICAgbm9uc2Vuc2UuCisKKyAqIEEgc3ltYm9saWMgcmVmIHJlZnMvaGVhZHMvU1lNIHdhcyBub3QgY29ycmVjdGx5IHJlbW92ZWQgd2l0aCAiZ2l0CisgICBicmFuY2ggLWQgU1lNIjsgdGhlIGNvbW1hbmQgcmVtb3ZlZCB0aGUgcmVmIHBvaW50ZWQgYnkgU1lNCisgICBpbnN0ZWFkLgorCisgKiBFYXJsaWVyIHdlIGZpeGVkIGRvY3VtZW50YXRpb24gdG8gaHlwaGVuYXRlICJyZW1vdGUtdHJhY2tpbmcgYnJhbmNoIgorICAgdG8gY2xhcmlmeSB0aGF0IHRoZXNlIGFyZSBub3QgYSByZW1vdGUgZW50aXR5LCBidXQgdW5oeXBoZW5hdGVkCisgICBzcGVsbGluZyBzbnVjayBpbiB0byBhIGZldyBwbGFjZXMgc2luY2UgdGhlbi4KKworICogImdpdCBwdWxsIC0tcmViYXNlIiBydW4gd2hpbGUgdGhlIEhFQUQgaXMgZGV0YWNoZWQgdHJpZWQgdG8gZmluZAorICAgdGhlIHVwc3RyZWFtIGJyYW5jaCBvZiB0aGUgZGV0YWNoZWQgSEVBRCAod2hpY2ggYnkgZGVmaW5pdGlvbgorICAgZG9lcyBub3QgZXhpc3QpIGFuZCBlbWl0dGVkIHVubmVjZXNzYXJ5IGVycm9yIG1lc3NhZ2VzLgorCisgKiBUaGUgcmVmcy9yZXBsYWNlIGhpZXJhcmNoeSB3YXMgbm90IG1lbnRpb25lZCBpbiB0aGUKKyAgIHJlcG9zaXRvcnktbGF5b3V0IGRvY3MuCisKKyAqIFNvbWV0aW1lcyBjdXJsX211bHRpX3RpbWVvdXQoKSBmdW5jdGlvbiBzdWdnZXN0ZWQgYSB3cm9uZyB0aW1lb3V0CisgICB2YWx1ZSB3aGVuIHRoZXJlIGlzIG5vIGZpbGUgZGVzY3JpcHRvcnMgdG8gd2FpdCBvbiBhbmQgdGhlIGh0dHAKKyAgIHRyYW5zcG9ydCBlbmRlZCB1cCBzbGVlcGluZyBmb3IgbWludXRlcyBpbiBzZWxlY3QoMikgc3lzdGVtIGNhbGwuCisgICBBIHdvcmthcm91bmQgaGFzIGJlZW4gYWRkZWQgZm9yIHRoaXMuCisKKyAqIFZhcmlvdXMgcmZjMjA0NyBxdW90aW5nIGlzc3VlcyBhcm91bmQgYSBub24tQVNDSUkgbmFtZSBvbiB0aGUKKyAgIEZyb206IGxpbmUgaW4gdGhlIG91dHB1dCBmcm9tIGZvcm1hdC1wYXRjaCBoYXZlIGJlZW4gY29ycmVjdGVkLgorCisgKiAiZ2l0IGRpZmYgLUc8cGF0dGVybj4iIGRpZCBub3QgaG9ub3IgdGV4dGNvbnYgZmlsdGVyIHdoZW4gbG9va2luZworICAgZm9yIGNoYW5nZXMuCisKKyAqIEJhc2ggY29tcGxldGlvbiBzY3JpcHQgKGluIGNvbnRyaWIvKSBkaWQgbm90IGNvcnJlY3RseSBjb21wbGV0ZSBhCisgICBsYXp5ICJnaXQgY2hlY2tvdXQgJG5hbWVfb2ZfcmVtb3RlX3RyYWNraW5nX2JyYW5jaF90aGF0X2lzX3VuaXF1ZSIKKyAgIGNvbW1hbmQgbGluZS4KKworICogUlNTIGZlZWQgZnJvbSAiZ2l0d2ViIiBoYWQgYSB4c3MgaG9sZSBpbiBpdHMgdGl0bGUgb3V0cHV0LgorCisgKiAiZ2l0IGNvbmZpZyAtLXBhdGggJGtleSIgc2VnZmF1bHRlZCBvbiAiW3NlY3Rpb25dIGtleSIgKGEgYm9vbGVhbgorICAgInRydWUiIHNwZWxsZWQgd2l0aG91dCAiPSIsIG5vdCAiW3NlY3Rpb25dIGtleSA9IHRydWUiKS4KKworICogImdpdCBjaGVja291dCAtYiBmb28iIHdoaWxlIG9uIGFuIHVuYm9ybiBicmFuY2ggZGlkIG5vdCBzYXkKKyAgICJTd2l0Y2hlZCB0byBhIG5ldyBicmFuY2ggJ2ZvbyciIGxpa2Ugb3RoZXIgY2FzZXMuCisKK0Fsc28gY29udGFpbnMgb3RoZXIgbWlub3IgZml4ZXMgYW5kIGRvY3VtZW50YXRpb24gdXBkYXRlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjAuMi50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4wLjIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0OTdlMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4wLjIudHh0CkBAIC0wLDAgKzEsMzQgQEAKK0dpdCB2MS44LjAuMiBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlcyBzaW5jZSB2MS44LjAuMQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICogVmFyaW91cyBjb2RlcGF0aHMgaGF2ZSB3b3JrYXJvdW5kIGZvciBhIGNvbW1vbiBtaXNjb25maWd1cmF0aW9uIHRvCisgICBzcGVsbCAiVVRGLTgiIGFzICJ1dGY4IiwgYnV0IGl0IHdhcyBub3QgdXNlZCB1bmlmb3JtbHkuICBNb3N0CisgICBub3RhYmx5LCBtYWlsaW5mbyAod2hpY2ggaXMgdXNlZCBieSAiZ2l0IGFtIikgbGFja2VkIHRoaXMgc3VwcG9ydC4KKworICogV2UgZmFpbGVkIHRvIG1lbnRpb24gYSBmaWxlIHdpdGhvdXQgYW55IGNvbnRlbnQgY2hhbmdlIGJ1dCB3aG9zZQorICAgcGVybWlzc2lvbiBiaXQgd2FzIG1vZGlmaWVkLCBvciAod29yc2UgeWV0KSBhIG5ldyBmaWxlIHdpdGhvdXQgYW55CisgICBjb250ZW50IGluIHRoZSAiZ2l0IGRpZmYgLS1zdGF0IiBvdXRwdXQuCisKKyAqIFdoZW4gIi0tc3RhdC1jb3VudCIgaGlkZXMgYSBkaWZmc3RhdCBmb3IgYmluYXJ5IGNvbnRlbnRzLCB0aGUgdG90YWwKKyAgIG51bWJlciBvZiBhZGRlZCBhbmQgcmVtb3ZlZCBsaW5lcyBhdCB0aGUgYm90dG9tIHdhcyBjb21wdXRlZAorICAgaW5jb3JyZWN0bHkuCisKKyAqIFdoZW4gIi0tc3RhdC1jb3VudCIgaGlkZXMgYSBkaWZmc3RhdCBmb3IgdW5tZXJnZWQgcGF0aHMsIHRoZSB0b3RhbAorICAgbnVtYmVyIG9mIGFmZmVjdGVkIGZpbGVzIGF0IHRoZSBib3R0b20gb2YgdGhlICJkaWZmIC0tc3RhdCIgb3V0cHV0CisgICB3YXMgY29tcHV0ZWQgaW5jb3JyZWN0bHkuCisKKyAqICJkaWZmIC0tc2hvcnRzdGF0IiBtaXNjb3VudGVkIHRoZSB0b3RhbCBudW1iZXIgb2YgYWZmZWN0ZWQgZmlsZXMKKyAgIHdoZW4gdGhlcmUgd2VyZSB1bm1lcmdlZCBwYXRocy4KKworICogImdpdCBwNCIgdXNlZCB0byB0cnkgZXhwYW5kaW5nIG1hbGZvcm1lZCAiJGtleXdvcmQkIiB0aGF0IHNwYW5zCisgICBhY3Jvc3MgbXVsdGlwbGUgbGluZXMuCisKKyAqICJnaXQgdXBkYXRlLXJlZiAtZCAtLWRlcmVmIFNZTSIgdG8gZGVsZXRlIGEgcmVmIHRocm91Z2ggYSBzeW1ib2xpYworICAgcmVmIHRoYXQgcG9pbnRzIHRvIGl0IGRpZCBub3QgcmVtb3ZlIGl0IGNvcnJlY3RseS4KKworICogU3ludGF4IGhpZ2hsaWdodGluZyBpbiAiZ2l0d2ViIiB3YXMgbm90IHF1aXRlIHdvcmtpbmcuCisKK0Fsc28gY29udGFpbnMgb3RoZXIgbWlub3IgZml4ZXMgYW5kIGRvY3VtZW50YXRpb24gdXBkYXRlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjAuMy50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4wLjMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYjFlNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4wLjMudHh0CkBAIC0wLDAgKzEsMTQgQEAKK0dpdCB2MS44LjAuMyBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlcyBzaW5jZSB2MS44LjAuMgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICogImdpdCBsb2cgLXAgLVM8c3RyaW5nPiIgZGlkIG5vdCBhcHBseSB0aGUgdGV4dGNvbnYgZmlsdGVyIHdoaWxlCisgICBsb29raW5nIGZvciB0aGUgPHN0cmluZz4uCisKKyAqIEluIHRoZSBkb2N1bWVudGF0aW9uLCBzb21lIGludmFsaWQgZXhhbXBsZSBlLW1haWwgYWRkcmVzc2VzIHdlcmUKKyAgIGZvcm1hdHRlZCBpbnRvIG1haWx0bzogbGlua3MuCisKK0Fsc28gY29udGFpbnMgbWFueSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMgYmFja3BvcnRlZCBmcm9tIHRoZSAnbWFzdGVyJworYnJhbmNoIHRoYXQgaXMgcHJlcGFyaW5nIGZvciB0aGUgdXBjb21pbmcgMS44LjEgcmVsZWFzZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjAudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM4ODNjMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjAudHh0CkBAIC0wLDAgKzEsMjY3IEBACitHaXQgdjEuOC4wIFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitCYWNrd2FyZCBjb21wYXRpYmlsaXR5IG5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UgKG5vdCAqdGhpcyogb25lKSwgd2Ugd2lsbCBjaGFuZ2UgdGhlCitiZWhhdmlvciBvZiB0aGUgImdpdCBwdXNoIiBjb21tYW5kLgorCitXaGVuICJnaXQgcHVzaCBbJHRoZXJlXSIgZG9lcyBub3Qgc2F5IHdoYXQgdG8gcHVzaCwgd2UgaGF2ZSB1c2VkIHRoZQordHJhZGl0aW9uYWwgIm1hdGNoaW5nIiBzZW1hbnRpY3Mgc28gZmFyIChhbGwgeW91ciBicmFuY2hlcyB3ZXJlIHNlbnQKK3RvIHRoZSByZW1vdGUgYXMgbG9uZyBhcyB0aGVyZSBhbHJlYWR5IGFyZSBicmFuY2hlcyBvZiB0aGUgc2FtZSBuYW1lCitvdmVyIHRoZXJlKS4gIFdlIHdpbGwgdXNlIHRoZSAic2ltcGxlIiBzZW1hbnRpY3MgdGhhdCBwdXNoZXMgdGhlCitjdXJyZW50IGJyYW5jaCB0byB0aGUgYnJhbmNoIHdpdGggdGhlIHNhbWUgbmFtZSwgb25seSB3aGVuIHRoZSBjdXJyZW50CiticmFuY2ggaXMgc2V0IHRvIGludGVncmF0ZSB3aXRoIHRoYXQgcmVtb3RlIGJyYW5jaC4gIFRoZXJlIGlzIGEgdXNlcgorcHJlZmVyZW5jZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlICJwdXNoLmRlZmF1bHQiIHRvIGNoYW5nZSB0aGlzLCBhbmQKKyJnaXQgcHVzaCIgd2lsbCB3YXJuIGFib3V0IHRoZSB1cGNvbWluZyBjaGFuZ2UgdW50aWwgeW91IHNldCB0aGlzCit2YXJpYWJsZSBpbiB0aGlzIHJlbGVhc2UuCisKKyJnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtIiBpcyBkZXByZWNhdGVkIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiBhCityZWxhdGl2ZWx5IGRpc3RhbnQgZnV0dXJlLiAgImdpdCBicmFuY2ggWy11fC0tc2V0LXVwc3RyZWFtLXRvXSIgaGFzCitiZWVuIGludHJvZHVjZWQgd2l0aCBhIHNhbmVyIG9yZGVyIG9mIGFyZ3VtZW50cy4KKworCitVcGRhdGVzIHNpbmNlIHYxLjcuMTIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVSSwgV29ya2Zsb3dzICYgRmVhdHVyZXMKKworICogQSBjcmVkZW50aWFsIGhlbHBlciBmb3IgV2luMzIgdG8gYWxsb3cgYWNjZXNzIHRvIHRoZSBrZXljaGFpbiBvZgorICAgdGhlIGxvZ2dlZC1pbiB1c2VyIGhhcyBiZWVuIGFkZGVkLgorCisgKiBBbiBpbml0aWFsIHBvcnQgdG8gSFAgTm9uU3RvcC4KKworICogQSBjcmVkZW50aWFsIGhlbHBlciB0byBhbGxvdyBhY2Nlc3MgdG8gdGhlIEdub21lIGtleXJpbmcgaGFzIGJlZW4KKyAgIGFkZGVkLgorCisgKiBXaGVuICJnaXQgYW0iIHNhbml0aXplcyB0aGUgIlN1YmplY3Q6IiBsaW5lLCB3ZSBzdHJpcCB0aGUgcHJlZml4IGZyb20KKyAgICJSZTogc3ViamVjdCIgYW5kIGFsc28gZnJvbSBhIGxlc3MgY29tbW9uICJyZTogc3ViamVjdCIsIGJ1dCBsZWZ0CisgICB0aGUgZXZlbiBsZXNzIGNvbW1vbiAiUkU6IHN1YmplY3QiIGludGFjdC4gIE5vdyB3ZSBzdHJpcCB0aGF0IHRvby4KKworICogSXQgd2FzIHRlbXB0aW5nIHRvIHNheSAiZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbSBvcmlnaW4vbWFzdGVyIiwKKyAgIGJ1dCB0aGF0IHRlbGxzIEdpdCB0byBhcnJhbmdlIHRoZSBsb2NhbCBicmFuY2ggIm9yaWdpbi9tYXN0ZXIiIHRvCisgICBpbnRlZ3JhdGUgd2l0aCB0aGUgY3VycmVudGx5IGNoZWNrZWQgb3V0IGJyYW5jaCwgd2hpY2ggaXMgaGlnaGx5CisgICB1bmxpa2VseSB3aGF0IHRoZSB1c2VyIG1lYW50LiAgVGhlIG9wdGlvbiBpcyBkZXByZWNhdGVkOyB1c2UgdGhlCisgICBuZXcgIi0tc2V0LXVwc3RyZWFtLXRvIiAod2l0aCBhIHNob3J0LWFuZC1zd2VldCAiLXUiKSBvcHRpb24KKyAgIGluc3RlYWQuCisKKyAqICJnaXQgY2hlcnJ5LXBpY2siIGxlYXJuZWQgdGhlICItLWFsbG93LWVtcHR5LW1lc3NhZ2UiIG9wdGlvbiB0bworICAgYWxsb3cgaXQgdG8gcmVwbGF5IGEgY29tbWl0IHdpdGhvdXQgYW55IGxvZyBtZXNzYWdlLgorCisgKiBBZnRlciAiZ2l0IGNoZXJyeS1waWNrIC1zIiBnYXZlIGNvbnRyb2wgYmFjayB0byB0aGUgdXNlciBhc2tpbmcKKyAgIGhlbHAgdG8gcmVzb2x2ZSBjb25mbGljdHMsIGNvbmNsdWRpbmcgImdpdCBjb21taXQiIHVzZWQgdG8gbmVlZCB0bworICAgYmUgcnVuIHdpdGggIi1zIiBpZiB0aGUgdXNlciB3YW50cyB0byBzaWduIGl0IG9mZjsgbm93IHRoZSBjb21tYW5kCisgICBsZWF2ZXMgdGhlIHNpZ24tb2ZmIGxpbmUgaW4gdGhlIGxvZyB0ZW1wbGF0ZS4KKworICogImdpdCBkYWVtb24iIGxlYXJuZWQgdGhlICItLWFjY2Vzcy1ob29rIiBvcHRpb24gdG8gYWxsb3cgYW4KKyAgIGV4dGVybmFsIGNvbW1hbmQgdG8gZGVjbGluZSBzZXJ2aWNlIGJhc2VkIG9uIHRoZSBjbGllbnQgYWRkcmVzcywKKyAgIHJlcG9zaXRvcnkgcGF0aCwgZXRjLgorCisgKiAiZ2l0IGRpZmZ0b29sIC0tZGlyLWRpZmYiIGxlYXJuZWQgdG8gdXNlIHN5bWJvbGljIGxpbmtzIHRvIHByZXBhcmUKKyAgIGEgdGVtcG9yYXJ5IGNvcHkgb2YgdGhlIHdvcmtpbmcgdHJlZSB3aGVuIGF2YWlsYWJsZS4KKworICogImdpdCBncmVwIiBsZWFybmVkIHRvIHVzZSBhIG5vbi1zdGFuZGFyZCBwYXR0ZXJuIHR5cGUgYnkgZGVmYXVsdCBpZgorICAgYSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIHRlbGxzIGl0IHRvLgorCisgKiBBY2N1bXVsYXRlZCB1cGRhdGVzIHRvICJnaXQgZ3VpIiBoYXMgYmVlbiBtZXJnZWQuCisKKyAqICJnaXQgbG9nIC1nIiBsZWFybmVkIHRoZSAiLS1ncmVwLXJlZmxvZz08cGF0dGVybj4iIG9wdGlvbiB0byBsaW1pdAorICAgaXRzIG91dHB1dCB0byBjb21taXRzIHdpdGggYSByZWZsb2cgbWVzc2FnZSB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuCisgICBwYXR0ZXJuLgorCisgKiAiZ2l0IG1lcmdlLWJhc2UiIGxlYXJuZWQgdGhlICItLWlzLWFuY2VzdG9yIEEgQiIgb3B0aW9uIHRvIHRlbGwgaWYgQSBpcworICAgYW4gYW5jZXN0b3Igb2YgQi4gIFRoZSByZXN1bHQgaXMgaW5kaWNhdGVkIGJ5IGl0cyBleGl0IHN0YXR1cyBjb2RlLgorCisgKiAiZ2l0IG1lcmdldG9vbCIgbm93IGFsbG93cyB1c2VycyB0byBvdmVycmlkZSB0aGUgYWN0dWFsIGNvbW1hbmQgdXNlZAorICAgd2l0aCB0aGUgbWVyZ2V0b29sLiRuYW1lLmNtZCBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGV2ZW4gZm9yIGJ1aWx0LWluCisgICBtZXJnZXRvb2wgYmFja2VuZHMuCisKKyAqICJnaXQgcmViYXNlIC1pIiBsZWFybmVkIHRoZSAiLS1lZGl0LXRvZG8iIG9wdGlvbiB0byBvcGVuIGFuIGVkaXRvcgorICAgdG8gZWRpdCB0aGUgaW5zdHJ1Y3Rpb24gc2hlZXQuCisKKworRm9yZWlnbiBJbnRlcmZhY2UKKworICogImdpdCBzdm4iIGhhcyBiZWVuIHVwZGF0ZWQgdG8gd29yayB3aXRoIFNWTiAxLjcuCisKKyAqICJnaXQgcDQiIGxlYXJuZWQgdGhlICItLWNvbmZsaWN0cyIgb3B0aW9uIHRvIHNwZWNpZnkgd2hhdCB0byBkbyB3aGVuCisgICBlbmNvdW50ZXJpbmcgYSBjb25mbGljdCBkdXJpbmcgInA0IHN1Ym1pdCIuCisKKworUGVyZm9ybWFuY2UsIEludGVybmFsIEltcGxlbWVudGF0aW9uLCBldGMuCisKKyAqIEdpdCBzaGlwcyB3aXRoIGEgZmFsbC1iYWNrIHJlZ2V4cCBpbXBsZW1lbnRhdGlvbiBmb3IgcGxhdGZvcm1zIHdpdGgKKyAgIGJ1Z2d5IHJlZ2V4cCBsaWJyYXJ5LCBidXQgaXQgd2FzIGVhc3kgZm9yIHBlb3BsZSB0byBrZWVwIHVzaW5nIHRoZWlyCisgICBwbGF0Zm9ybSByZWdleHAgYnkgbWlzdGFrZS4gIEEgbmV3IHRlc3QgaGFzIGJlZW4gYWRkZWQgdG8gY2hlY2sgdGhpcy4KKworICogVGhlICJjaGVjay1kb2NzIiBidWlsZCB0YXJnZXQgaGFzIGJlZW4gdXBkYXRlZCBhbmQgZ3JlYXRseQorICAgc2ltcGxpZmllZC4KKworICogVGhlIHRlc3Qgc3VpdGUgaXMgcnVuIHVuZGVyIE1BTExPQ19DSEVDS18gd2hlbiBydW5uaW5nIHdpdGggYSBnbGliYworICAgdGhhdCBzdXBwb3J0cyB0aGUgZmVhdHVyZS4KKworICogVGhlIGRvY3VtZW50YXRpb24gaW4gdGhlIFRlWGluZm8gZm9ybWF0IHdhcyB1c2luZyBpbmRlbnRlZCBvdXRwdXQKKyAgIGZvciBtYXRlcmlhbHMgbWVhbnQgdG8gYmUgZXhhbXBsZXMgdGhhdCBhcmUgYmV0dGVyIHR5cGVzZXQgaW4KKyAgIG1vbm9zcGFjZS4KKworICogQ29tcGF0aWJpbGl0eSB3cmFwcGVyIGFyb3VuZCBzb21lIG1rZGlyKDIpIGltcGxlbWVudGF0aW9ucyB0aGF0CisgICByZWplY3QgcGFyYW1ldGVycyB3aXRoIHRyYWlsaW5nIHNsYXNoIGhhcyBiZWVuIGludHJvZHVjZWQuCisKKyAqIENvbXBhdGliaWxpdHkgd3JhcHBlciBmb3Igc3lzdGVtcyB0aGF0IGxhY2sgdXNhYmxlIHNldGl0aW1lcigpIGhhcworICAgYmVlbiBhZGRlZC4KKworICogVGhlIG9wdGlvbiBwYXJzaW5nIG9mICJnaXQgY2hlY2tvdXQiIGhhZCBlcnJvciBjaGVja2luZywgZHdpbSBhbmQKKyAgIGRlZmF1bHRpbmcgbWlzc2luZyBvcHRpb25zLCBhbGwgbWl4ZWQgaW4gdGhlIGNvZGUsIGFuZCBpc3N1aW5nIGFuCisgICBhcHByb3ByaWF0ZSBlcnJvciBtZXNzYWdlIHdpdGggdXNlZnVsIGNvbnRleHQgd2FzIGdldHRpbmcgaGFyZGVyLgorICAgVGhlIGNvZGUgaGFzIGJlZW4gcmVvcmdhbml6ZWQgdG8gYWxsb3cgZ2l2aW5nIGEgcHJvcGVyIGRpYWdub3NpcworICAgd2hlbiB0aGUgdXNlciBzYXlzICJnaXQgY2hlY2tvdXQgLWIgLXQgZm9vIGJhciIgKGUuZy4gIi10IiBpcyBub3QgYQorICAgZ29vZCBuYW1lIGZvciBhIGJyYW5jaCkuCisKKyAqIE1hbnkgaW50ZXJuYWwgdXNlcyBvZiBhICJnaXQgbWVyZ2UtYmFzZSIgZXF1aXZhbGVudCB3ZXJlIG9ubHkgdG8gc2VlCisgICBpZiBvbmUgY29tbWl0IGZhc3QtZm9yd2FyZHMgdG8gdGhlIG90aGVyLCB3aGljaCBkaWQgbm90IG5lZWQgdGhlCisgICBmdWxsIHNldCBvZiBtZXJnZSBiYXNlcyB0byBiZSBjb21wdXRlZC4gVGhleSBoYXZlIGJlZW4gdXBkYXRlZCB0bworICAgdXNlIGxlc3MgZXhwZW5zaXZlIGNoZWNrcy4KKworICogVGhlIGhldXJpc3RpY3MgdG8gZGV0ZWN0IGFuZCBzaWxlbnRseSBjb252ZXJ0IGxhdGluMSB0byB1dGY4IHdoZW4KKyAgIHdlIHdlcmUgdG9sZCB0byB1c2UgdXRmLTggaW4gdGhlIGxvZyBtZXNzYWdlIGhhcyBiZWVuIHRyYW5zcGxhbnRlZAorICAgZnJvbSAibWFpbGluZm8iIHRvICJjb21taXQiIGFuZCAiY29tbWl0LXRyZWUiLgorCisgKiBNZXNzYWdlcyBnaXZlbiBieSAiZ2l0IDxzdWJjb21tYW5kPiAtaCIgZnJvbSBtYW55IHN1YmNvbW1hbmRzIGhhdmUKKyAgIGJlZW4gbWFya2VkIGZvciB0cmFuc2xhdGlvbi4KKworCitBbHNvIGNvbnRhaW5zIG1pbm9yIGRvY3VtZW50YXRpb24gdXBkYXRlcyBhbmQgY29kZSBjbGVhbi11cHMuCisKKworRml4ZXMgc2luY2UgdjEuNy4xMgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVbmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLCBhbGwgdGhlIGZpeGVzIHNpbmNlIHYxLjcuMTIgaW4gdGhlCittYWludGVuYW5jZSB0cmFjayBhcmUgY29udGFpbmVkIGluIHRoaXMgcmVsZWFzZSAoc2VlIHJlbGVhc2Ugbm90ZXMKK3RvIHRoZW0gZm9yIGRldGFpbHMpLgorCisgKiBUaGUgYXR0cmlidXRlIHN5c3RlbSBtYXkgYmUgYXNrZWQgZm9yIGEgcGF0aCB0aGF0IGl0c2VsZiBvciBpdHMKKyAgIGxlYWRpbmcgZGlyZWN0b3JpZXMgbm8gbG9uZ2VyIGV4aXN0cyBpbiB0aGUgd29ya2luZyB0cmVlLCBhbmQgaXQgaXMKKyAgIGZpbmUgaWYgd2UgY2Fubm90IG9wZW4gLmdpdGF0dHJpYnV0ZSBmaWxlIGluIHN1Y2ggYSBjYXNlLiAgRmFpbHVyZQorICAgdG8gb3BlbiBwZXItZGlyZWN0b3J5IC5naXRhdHRyaWJ1dGVzIHdpdGggZXJyb3Igc3RhdHVzIG90aGVyIHRoYW4KKyAgIEVOT0VOVCBhbmQgRU5PVERJUiBzaG91bGQgYmUgZGlhZ25vc2VkLCBidXQgaXQgd2Fzbid0LgorCisgKiBXaGVuIGxvb2tpbmcgZm9yICRIT01FLy5naXRjb25maWcgZXRjLiwgaXQgaXMgT0sgaWYgd2UgY2Fubm90IHJlYWQKKyAgIHRoZW0gYmVjYXVzZSB0aGV5IGRvIG5vdCBleGlzdCwgYnV0IHdlIGRpZCBub3QgZGlhZ25vc2UgZXhpc3RpbmcKKyAgIGZpbGVzIHRoYXQgd2UgY2Fubm90IHJlYWQuCisKKyAqIFdoZW4gImdpdCBhbSIgaXMgZmVkIGFuIGlucHV0IHRoYXQgaGFzIG11bHRpcGxlICJDb250ZW50LXR5cGU6IC4uLiIKKyAgIGhlYWRlciwgaXQgZGlkIG5vdCBncm9rIGNoYXJzZXQ9IGF0dHJpYnV0ZSBjb3JyZWN0bHkuCisKKyAqICJnaXQgYW0iIG1pc2hhbmRsZWQgYSBwYXRjaCBhdHRhY2hlZCBhcyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KKyAgIChlLmcuIG5vdCB0ZXh0LyopOyBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIChlLmcuIGJhc2U2NCkgd2FzIG5vdAorICAgaG9ub3JlZCBjb3JyZWN0bHkuCisKKyAqICJnaXQgYmxhbWUgTUFLRUZJTEUiIHJ1biBpbiBhIGhpc3RvcnkgdGhhdCBoYXMgIk1ha2VmaWxlIiBidXQgbm90CisgICAiTUFLRUZJTEUiIHNob3VsZCBzYXkgIk5vIHN1Y2ggZmlsZSBNQUtFRklMRSBpbiBIRUFEIiwgYnV0IGdvdAorICAgY29uZnVzZWQgb24gYSBjYXNlIGluc2Vuc2l0aXZlIGZpbGVzeXN0ZW0gYW5kIGZhaWxlZCB0byBkbyBzby4KKworICogRXZlbiBkdXJpbmcgYSBjb25mbGljdGVkIG1lcmdlLCAiZ2l0IGJsYW1lICRwYXRoIiBhbHdheXMgbWVhbnQgdG8KKyAgIGJsYW1lIHVuY29tbWl0dGVkIGNoYW5nZXMgdG8gdGhlICJ3b3JraW5nIHRyZWUiIHZlcnNpb247IG1ha2UgaXQKKyAgIG1vcmUgdXNlZnVsIGJ5IHNob3dpbmcgY2xlYW5seSBtZXJnZWQgcGFydHMgYXMgY29taW5nIGZyb20gdGhlIG90aGVyCisgICBicmFuY2ggdGhhdCBpcyBiZWluZyBtZXJnZWQuCisKKyAqIEl0IHdhcyB1bmNsZWFyIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciAiZ2l0IGJsYW1lIiB0aGF0IGl0IGlzCisgICB1bm5lY2Vzc2FyeSBmb3IgdXNlcnMgdG8gdXNlIHRoZSAiLS1mb2xsb3ciIG9wdGlvbi4KKworICogT3V0cHV0IGZyb20gImdpdCBicmFuY2ggLXYiIGNvbnRhaW5zICIobm8gYnJhbmNoKSIgdGhhdCBjb3VsZCBiZQorICAgbG9jYWxpemVkLCBidXQgdGhlIGNvZGUgdG8gYWxpZ24gaXQgYWxvbmcgd2l0aCB0aGUgbmFtZXMgb2YKKyAgIGJyYW5jaGVzIHdhcyBjb3VudGluZyBpbiBieXRlcywgbm90IGluIGRpc3BsYXkgY29sdW1ucy4KKworICogImdpdCBjaGVycnktcGljayBBIEMgQiIgdXNlZCB0byByZXBsYXkgY2hhbmdlcyBpbiBBIGFuZCB0aGVuIEIgYW5kCisgICB0aGVuIEMgaWYgdGhlc2UgdGhyZWUgY29tbWl0cyBoYWQgY29tbWl0dGVyIHRpbWVzdGFtcHMgaW4gdGhhdAorICAgb3JkZXIsIHdoaWNoIGlzIG5vdCB3aGF0IHRoZSB1c2VyIHdobyBzYWlkICJBIEMgQiIgbmF0dXJhbGx5CisgICBleHBlY3RzLgorCisgKiBBIHJlcG9zaXRvcnkgY3JlYXRlZCB3aXRoICJnaXQgY2xvbmUgLS1zaW5nbGUiIGhhZCBpdHMgZmV0Y2gKKyAgIHJlZnNwZWNzIHNldCB1cCBqdXN0IGxpa2UgYSBjbG9uZSB3aXRob3V0ICItLXNpbmdsZSIsIGxlYWRpbmcgdGhlCisgICBzdWJzZXF1ZW50ICJnaXQgZmV0Y2giIHRvIHNsdXJwIGFsbCB0aGUgb3RoZXIgYnJhbmNoZXMsIGRlZmVhdGluZworICAgdGhlIHdob2xlIHBvaW50IG9mIHNwZWNpZnlpbmcgIm9ubHkgdGhpcyBicmFuY2giLgorCisgKiBEb2N1bWVudGF0aW9uIHRhbGtlZCBhYm91dCAiZmlyc3QgbGluZSBvZiBjb21taXQgbG9nIiB3aGVuIGl0IG1lYW50CisgICB0aGUgdGl0bGUgb2YgdGhlIGNvbW1pdC4gIFRoZSBkZXNjcmlwdGlvbiB3YXMgY2xhcmlmaWVkIGJ5IGRlZmluaW5nCisgICBob3cgdGhlIHRpdGxlIGlzIGRlY2lkZWQgYW5kIHJld29yZGluZyB0aGUgY2FzdWFsIG1lbnRpb24gb2YgImZpcnN0CisgICBsaW5lIiB0byAidGl0bGUiLgorCisgKiAiZ2l0IGN2c2ltcG9ydCIgZGlkIG5vdCB0aG9yb3VnaGx5IGNsZWFuc2UgdGFnIG5hbWVzIHRoYXQgaXQKKyAgIGluZmVycmVkIGZyb20gdGhlIG5hbWVzIG9mIHRoZSB0YWdzIGl0IG9idGFpbmVkIGZyb20gQ1ZTLCB3aGljaAorICAgY2F1c2VkICJnaXQgdGFnIiB0byBiYXJmIGFuZCBzdG9wIHRoZSBpbXBvcnQgaW4gdGhlIG1pZGRsZS4KKworICogRWFybGllciB3ZSBtYWRlIHRoZSBkaWZmc3RhdCBzdW1tYXJ5IGxpbmUgdGhhdCBzaG93cyB0aGUgbnVtYmVyIG9mCisgICBsaW5lcyBhZGRlZC9kZWxldGVkIGxvY2FsaXphYmxlLCBidXQgaXQgd2FzIGZvdW5kIGlycml0YXRpbmcgaGF2aW5nCisgICB0byBzZWUgdGhlbSBpbiB2YXJpb3VzIGxhbmd1YWdlcyBvbiBhIGxpc3Qgd2hvc2UgZGlzY3Vzc2lvbiBsYW5ndWFnZQorICAgaXMgRW5nbGlzaCwgYW5kIHRoaXMgY2hhbmdlIGhhcyBiZWVuIHJldmVydGVkLgorCisgKiAiZ2l0IGZldGNoIC0tYWxsIiwgd2hlbiBwYXNzZWQgIi0tbm8tdGFncyIsIGRpZCBub3QgaG9ub3IgdGhlCisgICAiLS1uby10YWdzIiBvcHRpb24gd2hpbGUgZmV0Y2hpbmcgZnJvbSBpbmRpdmlkdWFsIHJlbW90ZXMgKHRoZSBzYW1lCisgICBpc3N1ZSBleGlzdGVkIHdpdGggIi0tdGFncyIsIGJ1dCB0aGUgY29tYmluYXRpb24gIi0tYWxsIC0tdGFncyIgbWFrZXMKKyAgIG11Y2ggbGVzcyBzZW5zZSB0aGFuICItLWFsbCAtLW5vLXRhZ3MiKS4KKworICogImdpdCBmZXRjaCIgb3ZlciBodHRwIGhhZCBhbiBvbGQgd29ya2Fyb3VuZCBmb3IgYW4gdW5saWtlbHkgc2VydmVyCisgICBtaXNjb25maWd1cmF0aW9uOyBpdCB0dXJucyBvdXQgdGhhdCB0aGlzIGh1cnRzIGRlYnVnZ2FiaWxpdHkgb2YgdGhlCisgICBjb25maWd1cmF0aW9uIGluIGdlbmVyYWwsIGFuZCBoYXMgYmVlbiByZXZlcnRlZC4KKworICogImdpdCBmZXRjaCIgb3ZlciBodHRwIGFkdmVydGlzZWQgdGhhdCBpdCBzdXBwb3J0cyAiZGVmbGF0ZSIsIHdoaWNoCisgICBpcyBtdWNoIGxlc3MgY29tbW9uLCBhbmQgZGlkIG5vdCBhZHZlcnRpc2UgdGhlIG1vcmUgY29tbW9uICJnemlwIiBvbgorICAgaXRzIEFjY2VwdC1FbmNvZGluZyBoZWFkZXIuCisKKyAqICJnaXQgZmV0Y2giIG92ZXIgdGhlIGR1bWItaHR0cCByZXZpc2lvbiB3YWxrZXIgY291bGQgc2VnZmF1bHQgd2hlbgorICAgY3VybCdzIG11bHRpIGludGVyZmFjZSB3YXMgdXNlZC4KKworICogImdpdCBnYyAtLWF1dG8iIG5vdGlmaWVkIHRoZSB1c2VyIHRoYXQgYXV0by1wYWNraW5nIGhhcyB0cmlnZ2VyZWQKKyAgICBldmVuIHVuZGVyIHRoZSAiLS1xdWlldCIgb3B0aW9uLgorCisgKiBBZnRlciAiZ2l0ayIgc2hvd2VkIHRoZSBjb250ZW50cyBvZiBhIHRhZywgbmVpdGhlciAiUmVyZWFkCisgICByZWZlcmVuY2VzIiBub3IgIlJlbG9hZCIgdXBkYXRlZCB3aGF0IGlzIHNob3duIGFzIHRoZQorICAgY29udGVudHMgb2YgaXQgd2hlbiB0aGUgdXNlciBvdmVyd3JvdGUgdGhlIHRhZyB3aXRoICJnaXQgdGFnIC1mIi4KKworICogImdpdCBsb2cgLS1hbGwtbWF0Y2ggLS1ncmVwPUEgLS1ncmVwPUIiIG91Z2h0IHRvIHNob3cgY29tbWl0cyB0aGF0CisgICBtZW50aW9uIGJvdGggQSBhbmQgQiwgYnV0IHdoZW4gdGhlc2UgdGhyZWUgb3B0aW9ucyBhcmUgdXNlZCB3aXRoCisgICAtLWF1dGhvciBvciAtLWNvbW1pdHRlciwgaXQgc2hvd2VkIGNvbW1pdHMgdGhhdCBtZW50aW9uIGVpdGhlciBBIG9yCisgICBCIChvciBib3RoKSBpbnN0ZWFkLgorCisgKiBUaGUgIi1Yb3VycyIgYmFja2VuZCBvcHRpb24gdG8gImdpdCBtZXJnZSAtcyByZWN1cnNpdmUiIHdhcyBpZ25vcmVkCisgICBmb3IgYmluYXJ5IGZpbGVzLgorCisgKiAiZ2l0IHA0Iiwgd2hlbiAiLS11c2UtY2xpZW50LXNwZWMiIGFuZCAiLS1kZXRlY3QtYnJhbmNoZXMiIGFyZSB1c2VkCisgICB0b2dldGhlciwgbWlzZGV0ZWN0ZWQgYnJhbmNoZXMuCisKKyAqICJnaXQgcmVjZWl2ZS1wYWNrIiAodGhlIGNvdW50ZXJwYXJ0IHRvICJnaXQgcHVzaCIpIGRpZCBub3QgZ2l2ZQorICAgcHJvZ3Jlc3Mgb3V0cHV0IHdoaWxlIHByb2Nlc3Npbmcgb2JqZWN0cyBpdCByZWNlaXZlZCB0byB0aGUgcHVzZXIKKyAgIHdoZW4gcnVuIG92ZXIgdGhlIHNtYXJ0LWh0dHAgcHJvdG9jb2wuCisKKyAqIFdoZW4geW91IG1pc3NwZWxsIHRoZSBjb21tYW5kIG5hbWUgeW91IGdpdmUgdG8gdGhlICJleGVjIiBhY3Rpb24gaW4KKyAgIHRoZSAiZ2l0IHJlYmFzZSAtaSIgaW5zdHJ1Y3Rpb24gc2hlZXQgeW91IHdlcmUgdG9sZCB0aGF0ICdyZWJhc2UnIGlzIG5vdCBhCisgICBnaXQgc3ViY29tbWFuZCBmcm9tICJnaXQgcmViYXNlIC0tY29udGludWUiLgorCisgKiBUaGUgc3ViY29tbWFuZCBpbiAiZ2l0IHJlbW90ZSIgdG8gcmVtb3ZlIGEgZGVmaW5lZCByZW1vdGUgd2FzCisgICAicm0iIGFuZCB0aGUgY29tbWFuZCBkaWQgbm90IHRha2UgYSBmdWxseS1zcGVsbGVkICJyZW1vdmUiLgorCisgKiBUaGUgaW50ZXJhY3RpdmUgcHJvbXB0IHRoYXQgImdpdCBzZW5kLWVtYWlsIiBnaXZlcyB3YXMgZXJyb3IgcHJvbmUuIEl0CisgICBhc2tlZCAiV2hhdCBlLW1haWwgYWRkcmVzcyBkbyB5b3Ugd2FudCB0byB1c2U/IiB3aXRoIHRoZSBhZGRyZXNzIGl0CisgICBndWVzc2VkIChjb3JyZWN0bHkpIHRoZSB1c2VyIHdvdWxkIHdhbnQgdG8gdXNlIGluIGl0cyBwcm9tcHQsCisgICB0ZW1wdGluZyB0aGUgdXNlciB0byBzYXkgInkiLiBCdXQgdGhlIHJlc3BvbnNlIHdhcyB0YWtlbiBhcyAiTm8sCisgICBwbGVhc2UgdXNlICd5JyBhcyB0aGUgZS1tYWlsIGFkZHJlc3MgaW5zdGVhZCIsIHdoaWNoIGlzIG1vc3QKKyAgIGNlcnRhaW5seSBub3Qgd2hhdCB0aGUgdXNlciBtZWFudC4KKworICogImdpdCBzaG93IC0tZm9ybWF0PSclY2knIiBkaWQgbm90IGdpdmUgdGhlIHRpbWVzdGFtcCBjb3JyZWN0bHkgZm9yCisgICBjb21taXRzIGNyZWF0ZWQgd2l0aG91dCBodW1hbiByZWFkYWJsZSBuYW1lIG9uIHRoZSAiY29tbWl0dGVyIiBsaW5lLgorCisgKiAiZ2l0IHNob3cgLS1xdWlldCIgb3VnaHQgdG8gYmUgYSBzeW5vbnltIGZvciAiZ2l0IHNob3cgLXMiLCBidXQKKyAgIHdhc24ndC4KKworICogImdpdCBzdWJtb2R1bGUgZnJvdHoiIHdhcyBub3QgZGlhZ25vc2VkIGFzICJmcm90eiIgYmVpbmcgYW4gdW5rbm93bgorICAgc3ViY29tbWFuZCB0byAiZ2l0IHN1Ym1vZHVsZSI7IHRoZSB1c2VyIGluc3RlYWQgZ290IGEgY29tcGxhaW50CisgICB0aGF0ICJnaXQgc3VibW9kdWxlIHN0YXR1cyIgd2FzIHJ1biB3aXRoIGFuIHVua25vd24gcGF0aCAiZnJvdHoiLgorCisgKiAiZ2l0IHN0YXR1cyIgaG9ub3JlZCB0aGUgaWdub3JlPWRpcnR5IHNldHRpbmdzIGluIC5naXRtb2R1bGVzIGJ1dAorICAgImdpdCBjb21taXQiIGRpZG4ndC4KKworICogImdpdHdlYiIgZGlkIG5vdCBnaXZlIHRoZSBjb3JyZWN0IGNvbW1pdHRlciB0aW1lem9uZSBpbiBpdHMgZmVlZAorICAgb3V0cHV0IGR1ZSB0byBhIHR5cG8uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4xLjEudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMS4xLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2RlMDdiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMS4xLnR4dApAQCAtMCwwICsxLDg3IEBACitHaXQgMS44LjEuMSBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVzIHNpbmNlIHYxLjguMQorLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAqIFRoZSBhdHRyaWJ1dGUgbWVjaGFuaXNtIGRpZG4ndCBhbGxvdyBsaW1pdGluZyBhdHRyaWJ1dGVzIHRvIGJlCisgICBhcHBsaWVkIHRvIG9ubHkgYSBzaW5nbGUgZGlyZWN0b3J5IGl0c2VsZiB3aXRoICJwYXRoLyIgbGlrZSB0aGUKKyAgIGV4Y2x1ZGUgbWVjaGFuaXNtIGRvZXMuCisKKyAqIFdoZW4gYXR0ZW1wdGluZyB0byByZWFkIHRoZSBYREctc3R5bGUgJEhPTUUvLmNvbmZpZy9naXQvY29uZmlnIGFuZAorICAgZmluZGluZyB0aGF0ICRIT01FLy5jb25maWcvZ2l0IGlzIGEgZmlsZSwgd2UgZ2F2ZSBhIHdyb25nIGVycm9yCisgICBtZXNzYWdlLCBpbnN0ZWFkIG9mIHRyZWF0aW5nIHRoZSBjYXNlIGFzICJhIGN1c3RvbSBjb25maWcgZmlsZSBkb2VzCisgICBub3QgZXhpc3QgdGhlcmUiIGFuZCBtb3Zpbmcgb24uCisKKyAqIEFmdGVyIGZhaWxpbmcgdG8gY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUgdXNpbmcgbWtzdGVtcCgpLCBmYWlsaW5nCisgICBwYXRobmFtZSB3YXMgbm90IHJlcG9ydGVkIGNvcnJlY3RseSBvbiBzb21lIHBsYXRmb3Jtcy4KKworICogaHR0cCB0cmFuc3BvcnQgd2FzIHdyb25nIHRvIGFzayBmb3IgdGhlIHVzZXJuYW1lIHdoZW4gdGhlCisgICBhdXRoZW50aWNhdGlvbiBpcyBkb25lIGJ5IGNlcnRpZmljYXRlIGlkZW50aXR5LgorCisgKiBUaGUgYmVoYXZpb3VyIHZpc2libGUgdG8gdGhlIGVuZCB1c2VycyB3YXMgY29uZnVzaW5nLCB3aGVuIHRoZXkKKyAgIGF0dGVtcHQgdG8ga2lsbCBhIHByb2Nlc3Mgc3Bhd25lZCBpbiB0aGUgZWRpdG9yIHRoYXQgd2FzIGluIHR1cm4KKyAgIGxhdW5jaGVkIGJ5IEdpdCB3aXRoIFNJR0lOVCAob3IgU0lHUVVJVCksIGFzIEdpdCB3b3VsZCBjYXRjaCB0aGF0CisgICBzaWduYWwgYW5kIGRpZS4gIFdlIGlnbm9yZSB0aGVzZSBzaWduYWxzIG5vdy4KKworICogQSBjaGlsZCBwcm9jZXNzIHRoYXQgd2FzIGtpbGxlZCBieSBhIHNpZ25hbCAoZS5nLiBTSUdJTlQpIHdhcworICAgcmVwb3J0ZWQgaW4gYW4gaW5jb25zaXN0ZW50IHdheSBkZXBlbmRpbmcgb24gaG93IHRoZSBwcm9jZXNzIHdhcworICAgc3Bhd25lZCBieSB1cywgd2l0aCBvciB3aXRob3V0IGEgc2hlbGwgaW4gYmV0d2Vlbi4KKworICogQWZ0ZXIgImdpdCBhZGQgLU4iIGFuZCB0aGVuIHdyaXRpbmcgYSB0cmVlIG9iamVjdCBvdXQgb2YgdGhlCisgICBpbmRleCwgdGhlIGNhY2hlLXRyZWUgZGF0YSBzdHJ1Y3R1cmUgZ290IGNvcnJ1cHRlZC4KKworICogImdpdCBhcHBseSIgbWlzYmVoYXZlZCB3aGVuIGZpeGluZyB3aGl0ZXNwYWNlIGJyZWFrYWdlcyBieSByZW1vdmluZworICAgZXhjZXNzIHRyYWlsaW5nIGJsYW5rIGxpbmVzIGluIHNvbWUgY29ybmVyIGNhc2VzLgorCisgKiBBIHRhciBhcmNoaXZlIGNyZWF0ZWQgYnkgImdpdCBhcmNoaXZlIiByZWNvcmRlZCBhIGRpcmVjdG9yeSBpbiBhCisgICB3YXkgdGhhdCBtYWRlIE5ldEJTRCdzIGltcGxlbWVudGF0aW9uIG9mICJ0YXIiIHNvbWV0aW1lcyB1bmhhcHB5LgorCisgKiBXaGVuICJnaXQgY2xvbmUgLS1zZXBhcmF0ZS1naXQtZGlyPSRvdmVyX3RoZXJlIiBpcyBpbnRlcnJ1cHRlZCwgaXQKKyAgIGZhaWxlZCB0byByZW1vdmUgdGhlIHJlYWwgbG9jYXRpb24gb2YgdGhlICRHSVRfRElSIGl0IGNyZWF0ZWQuCisgICBUaGlzIHdhcyBtb3N0IHZpc2libGUgd2hlbiBpbnRlcnJ1cHRpbmcgYSBzdWJtb2R1bGUgdXBkYXRlLgorCisgKiAiZ2l0IGZldGNoIC0tbWlycm9yIiBhbmQgZmV0Y2ggdGhhdCB1c2VzIG90aGVyIGZvcm1zIG9mIHJlZnNwZWMKKyAgIHdpdGggd2lsZGNhcmQgdXNlZCB0byBhdHRlbXB0IHRvIHVwZGF0ZSBhIHN5bWJvbGljIHJlZiB0aGF0IG1hdGNoCisgICB0aGUgd2lsZGNhcmQgb24gdGhlIHJlY2VpdmluZyBlbmQsIHdoaWNoIG1hZGUgbGl0dGxlIHNlbnNlICh0aGUKKyAgIHJlYWwgcmVmIHRoYXQgaXMgcG9pbnRlZCBhdCBieSB0aGUgc3ltYm9saWMgcmVmIHdvdWxkIGJlIHVwZGF0ZWQKKyAgIGFueXdheSkuICBTeW1ib2xpYyByZWZzIG5vIGxvbmdlciBhcmUgYWZmZWN0ZWQgYnkgc3VjaCBhIGZldGNoLgorCisgKiBUaGUgImxvZyAtLWdyYXBoIiBjb2RlcGF0aCBmZWxsIGludG8gaW5maW5pdGUgbG9vcCBpbiBzb21lCisgICBjb3JuZXIgY2FzZXMuCisKKyAqICJnaXQgbWVyZ2UiIHN0YXJ0ZWQgY2FsbGluZyBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vayBsaWtlICJnaXQKKyAgIGNvbW1pdCIgZG9lcyBzb21lIHRpbWUgYWdvLCBidXQgZm9yZ290IHRvIHBheSBhdHRlbnRpb24gdG8gdGhlIGV4aXQKKyAgIHN0YXR1cyBvZiB0aGUgaG9vay4KKworICogImdpdCBwYWNrLXJlZnMiIHRoYXQgcmFuIGluIHBhcmFsbGVsIHRvIGFub3RoZXIgcHJvY2VzcyB0aGF0CisgICBjcmVhdGVkIG5ldyByZWZzIGhhZCBhIHJhY2UgdGhhdCBjYW4gbG9zZSBuZXcgb25lcy4KKworICogV2hlbiBhIGxpbmUgdG8gYmUgd3JhcHBlZCBoYXMgYSBzb2xpZCBydW4gb2Ygbm9uIHNwYWNlIGNoYXJhY3RlcnMKKyAgIHdob3NlIGxlbmd0aCBleGFjdGx5IGlzIHRoZSB3cmFwIHdpZHRoLCAiZ2l0IHNob3J0bG9nIC13IiBmYWlsZWQKKyAgIHRvIGFkZCBhIG5ld2xpbmUgYWZ0ZXIgc3VjaCBhIGxpbmUuCisKKyAqIFRoZSB3YXkgImdpdCBzdm4iIGFza2VkIGZvciBwYXNzd29yZCB1c2luZyBTU0hfQVNLUEFTUyBhbmQKKyAgIEdJVF9BU0tQQVNTIHdhcyBub3QgaW4gbGluZSB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uCisKKyAqICJnaXR3ZWIiLCB3aGVuIHNvcnRpbmcgYnkgYWdlIHRvIHNob3cgcmVwb3NpdG9yaWVzIHdpdGggbmV3CisgICBhY3Rpdml0aWVzIGZpcnN0LCB1c2VkIHRvIHNvcnQgcmVwb3NpdG9yaWVzIHdpdGggYWJzb2x1dGVseQorICAgbm90aGluZyBpbiBpdCBlYXJseSwgd2hpY2ggd2FzIG5vdCB2ZXJ5IHVzZWZ1bC4KKworICogImdpdHdlYiIsIHdoZW4gc29ydGluZyBieSBhZ2UgdG8gc2hvdyByZXBvc2l0b3JpZXMgd2l0aCBuZXcKKyAgIGFjdGl2aXRpZXMgZmlyc3QsIHVzZWQgdG8gc29ydCByZXBvc2l0b3JpZXMgd2l0aCBhYnNvbHV0ZWx5CisgICBub3RoaW5nIGluIGl0IGVhcmx5LCB3aGljaCB3YXMgbm90IHZlcnkgdXNlZnVsLgorCisgKiBXaGVuIGF1dG9jb25mIGlzIHVzZWQsIGFueSBidWlsZCBvbiBhIGRpZmZlcmVudCBjb21taXQgYWx3YXlzIHJhbgorICAgImNvbmZpZy5zdGF0dXMgLS1yZWNoZWNrIiBldmVuIHdoZW4gdW5uZWNlc3NhcnkuCisKKyAqIFNvbWUgc2NyaXB0ZWQgcHJvZ3JhbXMgd3JpdHRlbiBpbiBQeXRob24gZGlkIG5vdCBnZXQgdXBkYXRlZCB3aGVuCisgICBQWVRIT05fUEFUSCBjaGFuZ2VkLgorCisgKiBXZSBoYXZlIGJlZW4gY2FycnlpbmcgYSB0cmFuc2xhdGVkIGFuZCBsb25nLXVubWFpbnRhaW5lZCBjb3B5IG9mIGFuCisgICBvbGQgdmVyc2lvbiBvZiB0aGUgdHV0b3JpYWw7IHJlbW92ZWQuCisKKyAqIFBvcnRhYmlsaXR5IGlzc3VlcyBpbiBtYW55IHNlbGYtdGVzdCBzY3JpcHRzIGhhdmUgYmVlbiBhZGRyZXNzZWQuCisKKworQWxzbyBjb250YWlucyBvdGhlciBtaW5vciBmaXhlcyBhbmQgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMS4yLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjEuMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFiN2IxOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjEuMi50eHQKQEAgLTAsMCArMSwyNSBAQAorR2l0IDEuOC4xLjIgUmVsZWFzZSBOb3RlcworPT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlcyBzaW5jZSB2MS44LjEuMQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICogQW4gZWxlbWVudCBvbiBHSVRfQ0VJTElOR19ESVJFQ1RPUklFUyBsaXN0IHRoYXQgZG9lcyBub3QgbmFtZSB0aGUKKyAgIHJlYWwgcGF0aCB0byBhIGRpcmVjdG9yeSAoaS5lLiBhIHN5bWJvbGljIGxpbmspIGNvdWxkIGhhdmUgY2F1c2VkCisgICB0aGUgR0lUX0RJUiBkaXNjb3ZlcnkgbG9naWMgdG8gZXNjYXBlIHRoZSBjZWlsaW5nLgorCisgKiBDb21tYW5kIGxpbmUgY29tcGxldGlvbiBmb3IgInRjc2giIGVtaXR0ZWQgYW4gdW53YW50ZWQgc3BhY2UKKyAgIGFmdGVyIGNvbXBsZXRpbmcgYSBzaW5nbGUgZGlyZWN0b3J5IG5hbWUuCisKKyAqIENvbW1hbmQgbGluZSBjb21wbGV0aW9uIGxlYWtlZCBhbiB1bm5lY2Vzc2FyeSBlcnJvciBtZXNzYWdlIHdoaWxlCisgICBsb29raW5nIGZvciBwb3NzaWJsZSBtYXRjaGVzIHdpdGggcGF0aHMgaW4gPHRyZWUtaXNoPi4KKworICogImdpdCBhcmNoaXZlIiBkaWQgbm90IHJlY29yZCB1bmNvbXByZXNzZWQgc2l6ZSBpbiB0aGUgaGVhZGVyIHdoZW4KKyAgIHN0cmVhbWluZyBhIHppcCBhcmNoaXZlLCB3aGljaCBjb25mdXNlZCBzb21lIGltcGxlbWVudGF0aW9ucyBvZiB1bnppcC4KKworICogV2hlbiB1c2VycyBzcGVsbGVkICJjYzoiIGluIGxvd2VyY2FzZSBpbiB0aGUgZmFrZSAiaGVhZGVyIiBpbiB0aGUKKyAgIHRyYWlsZXIgcGFydCwgImdpdCBzZW5kLWVtYWlsIiBmYWlsZWQgdG8gcGljayB1cCB0aGUgYWRkcmVzc2VzIGZyb20KKyAgIHRoZXJlLiBBcyBlLW1haWwgaGVhZGVycyBmaWVsZCBuYW1lcyBhcmUgY2FzZSBpbnNlbnNpdGl2ZSwgdGhpcworICAgc2NyaXB0IHNob3VsZCBmb2xsb3cgc3VpdCBhbmQgdHJlYXQgImNjOiIgYW5kICJDYzoiIHRoZSBzYW1lIHdheS4KKworQWxzbyBjb250YWlucyB2YXJpb3VzIGRvY3VtZW50YXRpb24gZml4ZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4xLjMudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMS4zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODFjYjM1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMS4zLnR4dApAQCAtMCwwICsxLDQ3IEBACitHaXQgMS44LjEuMyBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVzIHNpbmNlIHYxLjguMS4yCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgKiBUaGUgYXR0cmlidXRlIG1lY2hhbmlzbSBkaWRuJ3QgYWxsb3cgbGltaXRpbmcgYXR0cmlidXRlcyB0byBiZQorICAgYXBwbGllZCB0byBvbmx5IGEgc2luZ2xlIGRpcmVjdG9yeSBpdHNlbGYgd2l0aCAicGF0aC8iIGxpa2UgdGhlCisgICBleGNsdWRlIG1lY2hhbmlzbSBkb2VzLiAgVGhlIGZpeCBmb3IgdGhpcyBpbiAxLjguMS4yIGhhZAorICAgcGVyZm9ybWFuY2UgZGVncmFkYXRpb25zLgorCisgKiBDb21tYW5kIGxpbmUgY29tcGxldGlvbiBjb2RlIHdhcyBpbmFkdmVydGVudGx5IG1hZGUgaW5jb21wYXRpYmxlIHdpdGgKKyAgIG9sZGVyIHZlcnNpb25zIG9mIGJhc2ggYnkgdXNpbmcgYSBuZXdlciBhcnJheSBub3RhdGlvbi4KKworICogU2NyaXB0cyB0byB0ZXN0IGJhc2ggY29tcGxldGlvbiB3YXMgaW5oZXJlbnRseSBmbGFreSBhcyBpdCB3YXMKKyAgIGFmZmVjdGVkIGJ5IHdoYXRldmVyIHJhbmRvbSB0aGluZ3MgdGhlIHVzZXIgbWF5IGhhdmUgb24gJFBBVEguCisKKyAqIEEgZml4IHdhcyBhZGRlZCB0byB0aGUgYnVpbGQgcHJvY2VkdXJlIHRvIHdvcmsgYXJvdW5kIGJ1Z2d5CisgICB2ZXJzaW9ucyBvZiBjY2FjaGUgYnJva2UgdGhlIGF1dG8tZ2VuZXJhdGlvbiBvZiBkZXBlbmRlbmNpZXMsIHdoaWNoCisgICB1bmZvcnR1bmF0ZWx5IGlzIHN0aWxsIHJlbGV2YW50IGJlY2F1c2Ugc29tZSBwZW9wbGUgdXNlIGFuY2llbnQKKyAgIGRpc3Ryb3MuCisKKyAqIFdlIHVzZWQgdG8gc3R1ZmYgInVzZXJAIiBhbmQgdGhlbiBhcHBlbmQgd2hhdCB3ZSByZWFkIGZyb20KKyAgIC9ldGMvbWFpbG5hbWUgdG8gY29tZSB1cCB3aXRoIGEgZGVmYXVsdCBlLW1haWwgaWRlbnQsIGJ1dCBhIGJ1ZworICAgbG9zdCB0aGUgInVzZXJAIiBwYXJ0LgorCisgKiAiZ2l0IGFtIiBkaWQgbm90IHBhcnNlIGRhdGVzdGFtcCBjb3JyZWN0bHkgZnJvbSBIZyBnZW5lcmF0ZWQgcGF0Y2gsCisgICB3aGVuIGl0IGlzIHJ1biBpbiBhIGxvY2FsZSBvdXRzaWRlIEMgKG9yIGVuKS4KKworICogQXR0ZW1wdCB0byAiYnJhbmNoIC0tZWRpdC1kZXNjcmlwdGlvbiIgYW4gZXhpc3RpbmcgYnJhbmNoLCB3aGlsZQorICAgYmVpbmcgb24gYSBkZXRhY2hlZCBIRUFELCBlcnJvcmVkIG91dC4KKworICogImdpdCBjaGVycnktcGljayIgZGlkIG5vdCByZXBsYXkgYSByb290IGNvbW1pdCB0byBhbiB1bmJvcm4gYnJhbmNoLgorCisgKiBXZSBmb3Jnb3QgdG8gY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvciByZWFkaW5nIGZyb20gImdwZyIgb3V0cHV0LAorICAga2lsbGluZyAiZ2l0IGxvZyAtLXNob3ctc2lnbmF0dXJlIiBvbiBhIGxvbmcgaGlzdG9yeS4KKworICogImdpdCByZWJhc2UgLS1wcmVzZXJ2ZS1tZXJnZXMiIGxvc3QgZW1wdHkgbWVyZ2VzIGluIHJlY2VudCB2ZXJzaW9ucworICAgb2YgR2l0LgorCisgKiBSZWJhc2luZyB0aGUgaGlzdG9yeSBvZiBzdXBlcnByb2plY3Qgd2l0aCBjaGFuZ2UgaW4gdGhlIHN1Ym1vZHVsZQorICAgaGFzIGJlZW4gYnJva2VuIHNpbmNlIHYxLjcuMTIuCisKKyAqIEEgZmFpbHVyZSB0byBwdXNoIGR1ZSB0byBub24tZmYgd2hpbGUgb24gYW4gdW5ib3JuIGJyYW5jaAorICAgZGVyZWZlcmVuY2VkIGEgTlVMTCBwb2ludGVyIHdoZW4gc2hvd2luZyBhbiBlcnJvciBtZXNzYWdlLgorCitBbHNvIGNvbnRhaW5zIHZhcmlvdXMgZG9jdW1lbnRhdGlvbiBmaXhlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjEuNC50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4xLjQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYWYxZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4xLjQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0dpdCAxLjguMS40IFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4ZXMgc2luY2UgdjEuOC4xLjMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAqICJnaXQgaW1hcC1zZW5kIiB0YWxraW5nIG92ZXIgaW1hcHM6Ly8gZGlkIG1ha2Ugc3VyZSBpdCByZWNlaXZlZCBhCisgICB2YWxpZCBjZXJ0aWZpY2F0ZSBmcm9tIHRoZSBvdGhlciBlbmQsIGJ1dCBkaWQgbm90IGNoZWNrIGlmIHRoZQorICAgY2VydGlmaWNhdGUgbWF0Y2hlZCB0aGUgaG9zdCBpdCB0aG91Z2h0IGl0IHdhcyB0YWxraW5nIHRvLgorCitBbHNvIGNvbnRhaW5zIHZhcmlvdXMgZG9jdW1lbnRhdGlvbiBmaXhlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjEuNS50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4xLjUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmYTY4YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4xLjUudHh0CkBAIC0wLDAgKzEsNDcgQEAKK0dpdCAxLjguMS41IFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4ZXMgc2luY2UgdjEuOC4xLjQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAqIEdpdmVuIGEgc3RyaW5nIHdpdGggYSBtdWx0aS1ieXRlIGNoYXJhY3RlciB0aGF0IGJlZ2lucyB3aXRoICctJyBvbgorICAgdGhlIGNvbW1hbmQgbGluZSB3aGVyZSBhbiBvcHRpb24gaXMgZXhwZWN0ZWQsIHRoZSBvcHRpb24gcGFyc2VyCisgICB1c2VkIGp1c3Qgb25lIGJ5dGUgb2YgdGhlIHVua25vd24gbGV0dGVyIHdoZW4gcmVwb3J0aW5nIGFuIGVycm9yLgorCisgKiBJbiB2MS44LjEsIHRoZSBhdHRyaWJ1dGUgcGFyc2VyIHdhcyB0aWdodGVuZWQgdG9vIHJlc3RyaWN0aXZlIHRvCisgICBlcnJvciBvdXQgdXBvbiBzZWVpbmcgYW4gZW50cnkgdGhhdCBiZWdpbnMgd2l0aCBhbiAhIChleGNsYW1hdGlvbiksCisgICB3aGljaCBtYXkgY29uZnVzZSB1c2VycyB0byBleHBlY3QgYSAibmVnYXRpdmUgbWF0Y2giLCB3aGljaCBkb2VzCisgICBub3QgZXhpc3QuICBUaGlzIGhhcyBiZWVuIGRlbW90ZWQgdG8gYSB3YXJuaW5nOyBzdWNoIGFuIGVudHJ5IGlzCisgICBzdGlsbCBpZ25vcmVkLgorCisgKiAiZ2l0IGFwcGx5IC0tc3VtbWFyeSIgaGFzIGJlZW4gdGF1Z2h0IHRvIG1ha2Ugc3VyZSB0aGUgc2ltaWxhcml0eQorICAgdmFsdWUgc2hvd24gaW4gaXRzIG91dHB1dCBpcyBzZW5zaWJsZSwgZXZlbiB3aGVuIHRoZSBpbnB1dCBoYWQgYQorICAgYm9ndXMgdmFsdWUuCisKKyAqICJnaXQgY2xlYW4iIHNob3dlZCB3aGF0IGl0IHdhcyBnb2luZyB0byBkbywgYnV0IHNvbWV0aW1lcyBlbmRlZAorICAgdXAgZmluZGluZyB0aGF0IGl0IHdhcyBub3QgYWxsb3dlZCB0byBkbyBzbywgd2hpY2ggcmVzdWx0ZWQgaW4gYQorICAgY29uZnVzaW5nIG91dHB1dCAoZS5nLiBhZnRlciBzYXlpbmcgdGhhdCBpdCB3aWxsIHJlbW92ZSBhbgorICAgdW50cmFja2VkIGRpcmVjdG9yeSwgaXQgZm91bmQgYW4gZW1iZWRkZWQgZ2l0IHJlcG9zaXRvcnkgdGhlcmUKKyAgIHdoaWNoIGl0IGlzIG5vdCBhbGxvd2VkIHRvIHJlbW92ZSkuICBJdCBub3cgcGVyZm9ybXMgdGhlIGFjdGlvbnMKKyAgIGFuZCB0aGVuIHJlcG9ydHMgdGhlIG91dGNvbWUgbW9yZSBmYWl0aGZ1bGx5LgorCisgKiAiZ2l0IGNsb25lIiB1c2VkIHRvIGFsbG93IC0tYmFyZSBhbmQgLS1zZXBhcmF0ZS1naXQtZGlyPSR0aGVyZQorICAgb3B0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLCB3aGljaCB3YXMgbm9uc2Vuc2ljYWwuCisKKyAqICJnaXQgY3ZzaW1wb3J0IiBtaXNoYW5kbGVkIHRpbWVzdGFtcHMgYXQgRFNUIGJvdW5kYXJ5LgorCisgKiBXZSB1c2VkIHRvIGhhdmUgYW4gYXJiaXRyYXJ5IDMyIGxpbWl0IGZvciBjb21iaW5lZCBkaWZmIGlucHV0LAorICAgcmVzdWx0aW5nIGluIGluY29ycmVjdCBudW1iZXIgb2YgbGVhZGluZyBjb2xvbnMgc2hvd24gd2hlbiBzaG93aW5nCisgICB0aGUgIi0tcmF3IC0tY2MiIG91dHB1dC4KKworICogVGhlIHNtYXJ0IEhUVFAgY2xpZW50cyBmb3Jnb3QgdG8gdmVyaWZ5IHRoZSBjb250ZW50LXR5cGUgdGhhdCBjb21lcworICAgYmFjayBmcm9tIHRoZSBzZXJ2ZXIgc2lkZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVxdWVzdCBpcyBiZWluZworICAgaGFuZGxlZCBwcm9wZXJseS4KKworICogImdpdCBoZWxwIHJlbW90ZS1oZWxwZXJzIiBmYWlsZWQgdG8gZmluZCB0aGUgZG9jdW1lbnRhdGlvbi4KKworICogImdpdHdlYiIgcGFnZXMgc2VydmVkIG92ZXIgSFRUUFMsIHdoZW4gY29uZmlndXJlZCB0byBzaG93IHBpY29uIG9yCisgICBncmF2YXRhciwgcmVmZXJyZWQgdG8gdGhlc2UgZXh0ZXJuYWwgcmVzb3VyY2VzIHRvIGJlIGZldGNoZWQgdmlhCisgICBIVFRQLCByZXN1bHRpbmcgaW4gbWl4ZWQgY29udGVudHMgd2FybmluZyBpbiBicm93c2Vycy4KKworQWxzbyBjb250YWlucyB2YXJpb3VzIGRvY3VtZW50YXRpb24gZml4ZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4xLjYudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMS42LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTVjZjJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMS42LnR4dApAQCAtMCwwICsxLDM5IEBACitHaXQgMS44LjEuNiBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVzIHNpbmNlIHYxLjguMS41CistLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgKiBBbiBlYXJsaWVyIGNoYW5nZSB0byB0aGUgYXR0cmlidXRlIHN5c3RlbSBpbnRyb2R1Y2VkIGF0IHYxLjguMS4yIGJ5CisgICBtaXN0YWtlIHN0b3BwZWQgYSBwYXR0ZXJuICJkaXIiICh3aXRob3V0IHRyYWlsaW5nIHNsYXNoKSBmcm9tCisgICBtYXRjaGluZyBhIGRpcmVjdG9yeSAiZGlyIiAoaXQgb25seSB3YW50ZWQgdG8gYWxsb3cgcGF0dGVybiAiZGlyLyIKKyAgIHRvIGFsc28gbWF0Y2gpLgorCisgKiBUaGUgY29kZSB0byBrZWVwIHRyYWNrIG9mIHdoYXQgZGlyZWN0b3J5IG5hbWVzIGFyZSBrbm93biB0byBHaXQgb24KKyAgIHBsYXRmb3JtcyB3aXRoIGNhc2UgaW5zZW5zaXRpdmUgZmlsZXN5c3RlbXMgY2FuIGdldCBjb25mdXNlZCB1cG9uIGEKKyAgIGhhc2ggY29sbGlzaW9uIGJldHdlZW4gdGhlc2UgcGF0aG5hbWVzIGFuZCBsb29wZWQgZm9yZXZlci4KKworICogV2hlbiB0aGUgIi0tcHJlZml4IiBvcHRpb24gaXMgdXNlZCB0byAiY2hlY2tvdXQtaW5kZXgiLCB0aGUgY29kZQorICAgZGlkIG5vdCBwaWNrIHRoZSBjb3JyZWN0IG91dHB1dCBmaWx0ZXIgYmFzZWQgb24gdGhlIGF0dHJpYnV0ZQorICAgc2V0dGluZy4KKworICogQW5ub3RhdGVkIHRhZ3Mgb3V0c2lkZSByZWZzL3RhZ3MvIGhpZXJhcmNoeSB3ZXJlIG5vdCBhZHZlcnRpc2VkCisgICBjb3JyZWN0bHkgdG8gdGhlIGxzLXJlbW90ZSBhbmQgZmV0Y2ggd2l0aCByZWNlbnQgdmVyc2lvbiBvZiBHaXQuCisKKyAqIFRoZSBsb2dpYyB1c2VkIGJ5ICJnaXQgZGlmZiAtTSAtLXN0YXQiIHRvIHNob3J0ZW4gdGhlIG5hbWVzIG9mCisgICBmaWxlcyBiZWZvcmUgYW5kIGFmdGVyIGEgcmVuYW1lIGRpZCBub3Qgd29yayBjb3JyZWN0bHkgd2hlbiB0aGUKKyAgIGNvbW1vbiBwcmVmaXggYW5kIHN1ZmZpeCBiZXR3ZWVuIHRoZSB0d28gZmlsZW5hbWVzIG92ZXJsYXBwZWQuCisKKyAqICJnaXQgdXBkYXRlLWluZGV4IC1oIiBkaWQgbm90IGRvIHRoZSB1c3VhbCAiLWgoZWxwKSIgdGhpbmcuCisKKyAqIHBlcmwvR2l0LnBtOjpjYXRfYmxvYiBzbHVycGVkIGV2ZXJ5dGhpbmcgaW4gY29yZSBvbmx5IHRvIHdyaXRlIGl0CisgICBvdXQgdG8gYSBmaWxlIGRlc2NyaXB0b3IsIHdoaWNoIHdhcyBub3QgYSB2ZXJ5IHNtYXJ0IHRoaW5nIHRvIGRvLgorCisgKiBUaGUgU1NMIHBlZXIgdmVyaWZpY2F0aW9uIGRvbmUgYnkgImdpdCBpbWFwLXNlbmQiIGRpZCBub3QgYXNrIGZvcgorICAgU2VydmVyIE5hbWUgSW5kaWNhdGlvbiAoUkZDIDQzNjYpLCBmYWlsaW5nIHRvIGNvbm5lY3QgU1NML1RMUworICAgc2l0ZXMgdGhhdCBzZXJ2ZSBtdWx0aXBsZSBob3N0bmFtZXMgb24gYSBzaW5nbGUgSVAuCisKKyAqICJnaXQgYnVuZGxlIHZlcmlmeSIgZGlkIG5vdCBzYXkgInJlY29yZHMgYSBjb21wbGV0ZSBoaXN0b3J5IiBmb3IgYQorICAgYnVuZGxlIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgcHJlcmVxdWlzaXRlcy4KKworQWxzbyBjb250YWlucyB2YXJpb3VzIGRvY3VtZW50YXRpb24gZml4ZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4xLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2Zjk1NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4xLnR4dApAQCAtMCwwICsxLDI0MSBAQAorR2l0IHYxLjguMSBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworQmFja3dhcmQgY29tcGF0aWJpbGl0eSBub3RlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlIChub3QgKnRoaXMqIG9uZSksIHdlIHdpbGwgY2hhbmdlIHRoZQorYmVoYXZpb3Igb2YgdGhlICJnaXQgcHVzaCIgY29tbWFuZC4KKworV2hlbiAiZ2l0IHB1c2ggWyR0aGVyZV0iIGRvZXMgbm90IHNheSB3aGF0IHRvIHB1c2gsIHdlIGhhdmUgdXNlZCB0aGUKK3RyYWRpdGlvbmFsICJtYXRjaGluZyIgc2VtYW50aWNzIHNvIGZhciAoYWxsIHlvdXIgYnJhbmNoZXMgd2VyZSBzZW50Cit0byB0aGUgcmVtb3RlIGFzIGxvbmcgYXMgdGhlcmUgYWxyZWFkeSBhcmUgYnJhbmNoZXMgb2YgdGhlIHNhbWUgbmFtZQorb3ZlciB0aGVyZSkuICBXZSB3aWxsIHVzZSB0aGUgInNpbXBsZSIgc2VtYW50aWNzIHRoYXQgcHVzaGVzIHRoZQorY3VycmVudCBicmFuY2ggdG8gdGhlIGJyYW5jaCB3aXRoIHRoZSBzYW1lIG5hbWUsIG9ubHkgd2hlbiB0aGUgY3VycmVudAorYnJhbmNoIGlzIHNldCB0byBpbnRlZ3JhdGUgd2l0aCB0aGF0IHJlbW90ZSBicmFuY2guICBUaGVyZSBpcyBhIHVzZXIKK3ByZWZlcmVuY2UgY29uZmlndXJhdGlvbiB2YXJpYWJsZSAicHVzaC5kZWZhdWx0IiB0byBjaGFuZ2UgdGhpcywgYW5kCisiZ2l0IHB1c2giIHdpbGwgd2FybiBhYm91dCB0aGUgdXBjb21pbmcgY2hhbmdlIHVudGlsIHlvdSBzZXQgdGhpcwordmFyaWFibGUgaW4gdGhpcyByZWxlYXNlLgorCisiZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbSIgaXMgZGVwcmVjYXRlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gYQorcmVsYXRpdmVseSBkaXN0YW50IGZ1dHVyZS4gICJnaXQgYnJhbmNoIFstdXwtLXNldC11cHN0cmVhbS10b10iIGhhcworYmVlbiBpbnRyb2R1Y2VkIHdpdGggYSBzYW5lciBvcmRlciBvZiBhcmd1bWVudHMgdG8gcmVwbGFjZSBpdC4KKworCitVcGRhdGVzIHNpbmNlIHYxLjguMAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVUksIFdvcmtmbG93cyAmIEZlYXR1cmVzCisKKyAqIENvbW1hbmQtbGluZSBjb21wbGV0aW9uIHNjcmlwdHMgZm9yIHRjc2ggYW5kIHpzaCBoYXZlIGJlZW4gYWRkZWQuCisKKyAqICJnaXQtcHJvbXB0IiBzY3JpcHRsZXQgKGluIGNvbnRyaWIvY29tcGxldGlvbikgY2FuIGJlIHRvbGQgdG8gcGFpbnQKKyAgIHBpZWNlcyBvZiB0aGUgaGludHMgaW4gdGhlIHByb21wdCBzdHJpbmcgaW4gY29sb3JzLgorCisgKiBTb21lIGRvY3VtZW50YXRpb24gcGFnZXMgdGhhdCB1c2VkIHRvIHNoaXAgb25seSBpbiB0aGUgcGxhaW4gdGV4dAorICAgZm9ybWF0IGFyZSBub3cgZm9ybWF0dGVkIGluIEhUTUwgYXMgd2VsbC4KKworICogV2UgdXNlZCB0byBoYXZlIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gYW5jaWVudCAibGVzcyIgdGhhdAorICAgY2F1c2VzIGl0IHRvIGV4aXQgd2l0aG91dCBhbnkgb3V0cHV0IHdoZW4gdGhlIHRlcm1pbmFsIGlzIHJlc2l6ZWQuCisgICBUaGUgYnVnIGhhcyBiZWVuIGZpeGVkIGluICJsZXNzIiB2ZXJzaW9uIDQwNiAoSnVuZSAyMDA3KSwgYW5kIHRoZQorICAgd29ya2Fyb3VuZCBoYXMgYmVlbiByZW1vdmVkIGluIHRoaXMgcmVsZWFzZS4KKworICogV2hlbiAiZ2l0IGNoZWNrb3V0IiBjaGVja3Mgb3V0IGEgYnJhbmNoLCBpdCB0ZWxscyB0aGUgdXNlciBob3cgZmFyCisgICBiZWhpbmQgKG9yIGFoZWFkKSB0aGUgbmV3IGJyYW5jaCBpcyByZWxhdGl2ZSB0byB0aGUgcmVtb3RlIHRyYWNraW5nCisgICBicmFuY2ggaXQgYnVpbGRzIHVwb24uICBUaGUgbWVzc2FnZSBub3cgYWxzbyBhZHZpc2VzIGhvdyB0byBzeW5jCisgICB0aGVtIHVwIGJ5IHB1c2hpbmcgb3IgcHVsbGluZy4gIFRoaXMgY2FuIGJlIGRpc2FibGVkIHdpdGggdGhlCisgICBhZHZpY2Uuc3RhdHVzSGludHMgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4KKworICogImdpdCBjb25maWcgLS1nZXQiIHVzZWQgdG8gZGlhZ25vc2UgcHJlc2VuY2Ugb2YgbXVsdGlwbGUKKyAgIGRlZmluaXRpb25zIG9mIHRoZSBzYW1lIHZhcmlhYmxlIGluIHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gZmlsZSBhcworICAgYW4gZXJyb3IsIGJ1dCBpdCBub3cgYXBwbGllcyB0aGUgImxhc3Qgb25lIHdpbnMiIHJ1bGUgdXNlZCBieSB0aGUKKyAgIGludGVybmFsIGNvbmZpZ3VyYXRpb24gbG9naWMuICBTdHJpY3RseSBzcGVha2luZywgdGhpcyBtYXkgYmUgYW4KKyAgIEFQSSByZWdyZXNzaW9uIGJ1dCBpdCBpcyBleHBlY3RlZCB0aGF0IG5vYm9keSB3aWxsIG5vdGljZSBpdCBpbgorICAgcHJhY3RpY2UuCisKKyAqIEEgbmV3IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgImRpZmYuY29udGV4dCIgY2FuIGJlIHVzZWQgdG8KKyAgIGdpdmUgdGhlIGRlZmF1bHQgbnVtYmVyIG9mIGNvbnRleHQgbGluZXMgaW4gdGhlIHBhdGNoIG91dHB1dCwgdG8KKyAgIG92ZXJyaWRlIHRoZSBoYXJkY29kZWQgZGVmYXVsdCBvZiAzIGxpbmVzLgorCisgKiAiZ2l0IGZvcm1hdC1wYXRjaCIgbGVhcm5lZCB0aGUgIi0tbm90ZXM9PHJlZj4iIG9wdGlvbiB0byBnaXZlCisgICBub3RlcyBmb3IgdGhlIGNvbW1pdCBhZnRlciB0aGUgdGhyZWUtZGFzaCBsaW5lcyBpbiBpdHMgb3V0cHV0LgorCisgKiAiZ2l0IGxvZyAtcCAtUzxzdHJpbmc+IiBub3cgbG9va3MgZm9yIHRoZSA8c3RyaW5nPiBhZnRlciBhcHBseWluZworICAgdGhlIHRleHRjb252IGZpbHRlciAoaWYgZGVmaW5lZCk7IGVhcmxpZXIgaXQgaW5zcGVjdGVkIHRoZSBjb250ZW50cworICAgb2YgdGhlIGJsb2JzIHdpdGhvdXQgZmlsdGVyaW5nLgorCisgKiAiZ2l0IGxvZyAtLWdyZXA9PHBjcmU+IiBsZWFybmVkIHRvIGhvbm9yIHRoZSAiZ3JlcC5wYXR0ZXJudHlwZSIKKyAgIGNvbmZpZ3VyYXRpb24gc2V0IHRvICJwZXJsIi4KKworICogImdpdCByZXBsYWNlIC1kIDxvYmplY3Q+IiBub3cgaW50ZXJwcmV0cyA8b2JqZWN0PiBhcyBhbiBleHRlbmRlZAorICAgU0hBLTEgKGUuZy4gSEVBRH40IGlzIGFsbG93ZWQpLCBpbnN0ZWFkIG9mIG9ubHkgYWNjZXB0aW5nIGZ1bGwgaGV4CisgICBvYmplY3QgbmFtZS4KKworICogImdpdCBybSAkc3VibW9kdWxlIiB1c2VkIHRvIHB1bnQgb24gcmVtb3ZpbmcgYSBzdWJtb2R1bGUgd29ya2luZworICAgdHJlZSB0byBhdm9pZCBsb3NpbmcgdGhlIHJlcG9zaXRvcnkgZW1iZWRkZWQgaW4gaXQuICBCZWNhdXNlCisgICByZWNlbnQgZ2l0IHVzZXMgYSBtZWNoYW5pc20gdG8gc2VwYXJhdGUgdGhlIHN1Ym1vZHVsZSByZXBvc2l0b3J5CisgICBmcm9tIHRoZSBzdWJtb2R1bGUgd29ya2luZyB0cmVlLCAiZ2l0IHJtIiBsZWFybmVkIHRvIGRldGVjdCB0aGlzCisgICBjYXNlIGFuZCByZW1vdmVzIHRoZSBzdWJtb2R1bGUgd29ya2luZyB0cmVlIHdoZW4gaXQgaXMgc2FmZSB0byBkbyBzby4KKworICogImdpdCBzZW5kLWVtYWlsIiB1c2VkIHRvIHByb21wdCBmb3IgdGhlIHNlbmRlciBhZGRyZXNzLCBldmVuIHdoZW4KKyAgIHRoZSBjb21taXR0ZXIgaWRlbnRpdHkgaXMgd2VsbCBzcGVjaWZpZWQgKGUuZy4gdmlhIHVzZXIubmFtZSBhbmQKKyAgIHVzZXIuZW1haWwgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMpLiAgVGhlIGNvbW1hbmQgbm8gbG9uZ2VyIGdpdmVzCisgICB0aGlzIHByb21wdCB3aGVuIG5vdCBuZWNlc3NhcnkuCisKKyAqICJnaXQgc2VuZC1lbWFpbCIgZGlkIG5vdCBhbGxvdyBub24tYWRkcmVzcyBnYXJiYWdlIHN0cmluZ3MgdG8KKyAgIGFwcGVhciBhZnRlciBhZGRyZXNzZXMgb24gQ2M6IGxpbmVzIGluIHRoZSBwYXRjaCBmaWxlcyAoYW5kIHdoZW4KKyAgIHRvbGQgdG8gcGljayB0aGVtIHVwIHRvIGZpbmQgbW9yZSByZWNpcGllbnRzKSwgZS5nLgorCisgICAgIENjOiBTdGFibGUgS2VybmVsIDxzdGFibGVAay5vcmc+ICMgZm9yIHYzLjIgYW5kIHVwCisKKyAgIFRoZSBjb21tYW5kIG5vdyBzdHJpcHMgIiAjIGZvciB2My4yIGFuZCB1cCIgcGFydCBiZWZvcmUgYWRkaW5nIHRoZQorICAgcmVtYWluZGVyIG9mIHRoaXMgbGluZSB0byB0aGUgbGlzdCBvZiByZWNpcGllbnRzLgorCisgKiAiZ2l0IHN1Ym1vZHVsZSBhZGQiIGxlYXJuZWQgdG8gYWRkIGEgbmV3IHN1Ym1vZHVsZSBhdCB0aGUgc2FtZQorICAgcGF0aCBhcyB0aGUgcGF0aCB3aGVyZSBhbiB1bnJlbGF0ZWQgc3VibW9kdWxlIHdhcyBib3VuZCB0byBpbiBhbgorICAgZXhpc3RpbmcgcmV2aXNpb24gdmlhIHRoZSAiLS1uYW1lIiBvcHRpb24uCisKKyAqICJnaXQgc3VibW9kdWxlIHN5bmMiIGxlYXJuZWQgdGhlICItLXJlY3Vyc2l2ZSIgb3B0aW9uLgorCisgKiAiZGlmZi5zdWJtb2R1bGUiIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8gZ2l2ZSBjdXN0b20KKyAgIGRlZmF1bHQgdmFsdWUgdG8gdGhlICJnaXQgZGlmZiAtLXN1Ym1vZHVsZSIgb3B0aW9uLgorCisgKiAiZ2l0IHN5bWJvbGljLXJlZiIgbGVhcm5lZCB0aGUgIi1kICRzeW1yZWYiIG9wdGlvbiB0byBkZWxldGUgdGhlCisgICBuYW1lZCBzeW1ib2xpYyByZWYsIHdoaWNoIGlzIG1vcmUgaW50dWl0aXZlIHdheSB0byBzcGVsbCBpdCB0aGFuCisgICAidXBkYXRlLXJlZiAtZCAtLW5vLWRlcmVmICRzeW1yZWYiLgorCisKK0ZvcmVpZ24gSW50ZXJmYWNlCisKKyAqICJnaXQgY3ZzaW1wb3J0IiBjYW4gYmUgdG9sZCB0byByZWNvcmQgdGltZXpvbmVzIChvdGhlciB0aGFuIEdNVCkKKyAgIHBlci1hdXRob3IgdmlhIGl0cyBhdXRob3IgaW5mbyBmaWxlLgorCisgKiBUaGUgcmVtb3RlIGhlbHBlciBpbnRlcmZhY2UgdG8gaW50ZXJhY3Qgd2l0aCBzdWJ2ZXJzaW9uCisgICByZXBvc2l0b3JpZXMgKG9uZSBvZiB0aGUgR1NvQyAyMDEyIHByb2plY3RzKSBoYXMgYmVlbiBtZXJnZWQuCisKKyAqIEEgbmV3IHJlbW90ZS1oZWxwZXIgaW50ZXJmYWNlIGZvciBNZXJjdXJpYWwgaGFzIGJlZW4gYWRkZWQgdG8KKyAgIGNvbnRyaWIvcmVtb3RlLWhlbHBlcnMuCisKKyAqIFRoZSBkb2N1bWVudGF0aW9uIGZvciBnaXQoMSkgd2FzIHBvaW50aW5nIGF0IGEgcGFnZSBhdCBhbiBleHRlcm5hbAorICAgc2l0ZSBmb3IgdGhlIGxpc3Qgb2YgYXV0aG9ycyB0aGF0IG5vIGxvbmdlciBleGlzdGVkLiAgVGhlIGxpbmsgaGFzCisgICBiZWVuIHVwZGF0ZWQgdG8gcG9pbnQgYXQgYW4gYWx0ZXJuYXRpdmUgc2l0ZS4KKworCitQZXJmb3JtYW5jZSwgSW50ZXJuYWwgSW1wbGVtZW50YXRpb24sIGV0Yy4KKworICogQ29tcGlsYXRpb24gb24gQ3lnd2luIHdpdGggbmV3ZXIgaGVhZGVyIGZpbGVzIGFyZSBzdXBwb3J0ZWQgbm93LgorCisgKiBBIGNvdXBsZSBvZiBsb3ctbGV2ZWwgaW1wbGVtZW50YXRpb24gdXBkYXRlcyBvbiBNaW5HVy4KKworICogVGhlIGxvZ2ljIHRvIGdlbmVyYXRlIHRoZSBpbml0aWFsIGFkdmVydGlzZW1lbnQgZnJvbSAidXBsb2FkLXBhY2siCisgICAoaS5lLiB3aGF0IGlzIGludm9rZWQgYnkgImdpdCBmZXRjaCIgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlCisgICBjb25uZWN0aW9uKSB0byBsaXN0IHdoYXQgcmVmcyBhcmUgYXZhaWxhYmxlIGluIHRoZSByZXBvc2l0b3J5IGhhcworICAgYmVlbiBvcHRpbWl6ZWQuCisKKyAqIFRoZSBsb2dpYyB0byBmaW5kIHNldCBvZiBhdHRyaWJ1dGVzIHRoYXQgbWF0Y2ggYSBnaXZlbiBwYXRoIGhhcworICAgYmVlbiBvcHRpbWl6ZWQuCisKKyAqIFVzZSBwcmVsb2FkaW5kZXggaW4gImdpdCBkaWZmLWluZGV4IiBhbmQgImdpdCB1cGRhdGUtaW5kZXgiLCB3aGljaAorICAgaGFzIGEgbmljZSBzcGVlZHVwIG9uIHN5c3RlbXMgd2l0aCBzbG93IHN0YXQgY2FsbHMgKGFuZCBldmVuIG9uCisgICBMaW51eCkuCisKKworQWxzbyBjb250YWlucyBtaW5vciBkb2N1bWVudGF0aW9uIHVwZGF0ZXMgYW5kIGNvZGUgY2xlYW4tdXBzLgorCisKK0ZpeGVzIHNpbmNlIHYxLjguMAorLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VubGVzcyBvdGhlcndpc2Ugbm90ZWQsIGFsbCB0aGUgZml4ZXMgc2luY2UgdjEuOC4wIGluIHRoZSBtYWludGVuYW5jZQordHJhY2sgYXJlIGNvbnRhaW5lZCBpbiB0aGlzIHJlbGVhc2UgKHNlZSByZWxlYXNlIG5vdGVzIHRvIHRoZW0gZm9yCitkZXRhaWxzKS4KKworICogVGhlIGNvbmZpZ3VyYXRpb24gcGFyc2VyIGhhZCBhbiB1bm5lY2Vzc2FyeSBoYXJkY29kZWQgbGltaXQgb24KKyAgIHZhcmlhYmxlIG5hbWVzIHRoYXQgd2FzIG5vdCBjaGVja2VkIGNvbnNpc3RlbnRseS4KKworICogVGhlICJzYXkiIGZ1bmN0aW9uIGluIHRoZSB0ZXN0IHNjYWZmb2xkaW5nIGluY29ycmVjdGx5IGFsbG93ZWQKKyAgICJlY2hvIiB0byBpbnRlcnByZXQgIlxhIiBhcyBpZiBpdCB3ZXJlIGEgQy1zdHJpbmcgYXNraW5nIGZvciBhCisgICBCRUwgb3V0cHV0LgorCisgKiAiZ2l0IG1lcmdldG9vbCIgZmVlZHMgL2Rldi9udWxsIGFzIGEgY29tbW9uIGFuY2VzdG9yIHdoZW4gZGVhbGluZworICAgd2l0aCBhbiBhZGQvYWRkIGNvbmZsaWN0LCBidXQgcDRtZXJnZSBiYWNrZW5kIGNhbm5vdCBoYW5kbGUKKyAgIGl0LiBXb3JrIGl0IGFyb3VuZCBieSBwYXNzaW5nIGEgdGVtcG9yYXJ5IGVtcHR5IGZpbGUuCisKKyAqICJnaXQgbG9nIC1GIC1FIC0tZ3JlcD0nPGVyZT4nIiBmYWlsZWQgdG8gdXNlIHRoZSBnaXZlbiA8ZXJlPgorICAgcGF0dGVybiBhcyBleHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb24sIGFuZCBpbnN0ZWFkIGxvb2tlZCBmb3IgdGhlCisgICBzdHJpbmcgbGl0ZXJhbGx5LgorCisgKiAiZ2l0IGdyZXAgLWUgcGF0dGVybiA8dHJlZT4iIGFza2VkIHRoZSBhdHRyaWJ1dGUgc3lzdGVtIHRvIHJlYWQKKyAgICI8dHJlZT46LmdpdGF0dHJpYnV0ZXMiIGZpbGUgaW4gdGhlIHdvcmtpbmcgdHJlZSwgd2hpY2ggd2FzCisgICBub25zZW5zZS4KKworICogQSBzeW1ib2xpYyByZWYgcmVmcy9oZWFkcy9TWU0gd2FzIG5vdCBjb3JyZWN0bHkgcmVtb3ZlZCB3aXRoICJnaXQKKyAgIGJyYW5jaCAtZCBTWU0iOyB0aGUgY29tbWFuZCByZW1vdmVkIHRoZSByZWYgcG9pbnRlZCBieSBTWU0KKyAgIGluc3RlYWQuCisKKyAqIFVwZGF0ZSAicmVtb3RlIHRyYWNraW5nIGJyYW5jaCIgaW4gdGhlIGRvY3VtZW50YXRpb24gdG8KKyAgICJyZW1vdGUtdHJhY2tpbmcgYnJhbmNoIi4KKworICogImdpdCBwdWxsIC0tcmViYXNlIiBydW4gd2hpbGUgdGhlIEhFQUQgaXMgZGV0YWNoZWQgdHJpZWQgdG8gZmluZAorICAgdGhlIHVwc3RyZWFtIGJyYW5jaCBvZiB0aGUgZGV0YWNoZWQgSEVBRCAod2hpY2ggYnkgZGVmaW5pdGlvbgorICAgZG9lcyBub3QgZXhpc3QpIGFuZCBlbWl0dGVkIHVubmVjZXNzYXJ5IGVycm9yIG1lc3NhZ2VzLgorCisgKiBUaGUgcmVmcy9yZXBsYWNlIGhpZXJhcmNoeSB3YXMgbm90IG1lbnRpb25lZCBpbiB0aGUKKyAgIHJlcG9zaXRvcnktbGF5b3V0IGRvY3MuCisKKyAqIFZhcmlvdXMgcmZjMjA0NyBxdW90aW5nIGlzc3VlcyBhcm91bmQgYSBub24tQVNDSUkgbmFtZSBvbiB0aGUKKyAgIEZyb206IGxpbmUgaW4gdGhlIG91dHB1dCBmcm9tIGZvcm1hdC1wYXRjaCBoYXZlIGJlZW4gY29ycmVjdGVkLgorCisgKiBTb21ldGltZXMgY3VybF9tdWx0aV90aW1lb3V0KCkgZnVuY3Rpb24gc3VnZ2VzdGVkIGEgd3JvbmcgdGltZW91dAorICAgdmFsdWUgd2hlbiB0aGVyZSBpcyBubyBmaWxlIGRlc2NyaXB0b3IgdG8gd2FpdCBvbiBhbmQgdGhlIGh0dHAKKyAgIHRyYW5zcG9ydCBlbmRlZCB1cCBzbGVlcGluZyBmb3IgbWludXRlcyBpbiBzZWxlY3QoMikgc3lzdGVtIGNhbGwuCisgICBBIHdvcmthcm91bmQgaGFzIGJlZW4gYWRkZWQgZm9yIHRoaXMuCisKKyAqIEZvciBhIGZldGNoIHJlZnNwZWMgKG9yIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgd2lsZGNhcmQgb24gb25lKSwKKyAgIHdlIGFsd2F5cyB3YW50IHRoZSBSSFMgdG8gbWFwIHRvIHNvbWV0aGluZyBpbnNpZGUgInJlZnMvIgorICAgaGllcmFyY2h5LCBidXQgdGhlIGxvZ2ljIHRvIGNoZWNrIGl0IHdhcyBub3QgZXhhY3RseSByaWdodC4KKyAgIChtZXJnZSA1YzA4YzFmIGpjL21haW50LWZldGNoLXRpZ2h0ZW4tcmVmbmFtZS1jaGVjayBsYXRlciB0byBtYWludCkuCisKKyAqICJnaXQgZGlmZiAtRzxwYXR0ZXJuPiIgZGlkIG5vdCBob25vciB0ZXh0Y29udiBmaWx0ZXIgd2hlbiBsb29raW5nCisgICBmb3IgY2hhbmdlcy4KKworICogU29tZSBIVFRQIHNlcnZlcnMgYXNrIGZvciBhdXRoIG9ubHkgZHVyaW5nIHRoZSBhY3R1YWwgcGFja2luZyBwaGFzZQorICAgKG5vdCBpbiBscy1yZW1vdGUgcGhhc2UpOyB0aGlzIGlzIG5vdCByZWFsbHkgYSByZWNvbW1lbmRlZAorICAgY29uZmlndXJhdGlvbiwgYnV0IHRoZSBjbGllbnRzIHVzZWQgdG8gZmFpbCB0byBhdXRoZW50aWNhdGUgd2l0aAorICAgc3VjaCBzZXJ2ZXJzLgorICAgKG1lcmdlIDJlNzM2ZmQgamsvbWFpbnQtaHR0cC1oYWxmLWF1dGgtZmV0Y2ggbGF0ZXIgdG8gbWFpbnQpLgorCisgKiAiZ2l0IHA0IiB1c2VkIHRvIHRyeSBleHBhbmRpbmcgbWFsZm9ybWVkICIka2V5d29yZCQiIHRoYXQgc3BhbnMKKyAgIGFjcm9zcyBtdWx0aXBsZSBsaW5lcy4KKworICogU3ludGF4IGhpZ2hsaWdodGluZyBpbiAiZ2l0d2ViIiB3YXMgbm90IHF1aXRlIHdvcmtpbmcuCisKKyAqIFJTUyBmZWVkIGZyb20gImdpdHdlYiIgaGFkIGEgeHNzIGhvbGUgaW4gaXRzIHRpdGxlIG91dHB1dC4KKworICogImdpdCBjb25maWcgLS1wYXRoICRrZXkiIHNlZ2ZhdWx0ZWQgb24gIltzZWN0aW9uXSBrZXkiIChhIGJvb2xlYW4KKyAgICJ0cnVlIiBzcGVsbGVkIHdpdGhvdXQgIj0iLCBub3QgIltzZWN0aW9uXSBrZXkgPSB0cnVlIikuCisKKyAqICJnaXQgY2hlY2tvdXQgLWIgZm9vIiB3aGlsZSBvbiBhbiB1bmJvcm4gYnJhbmNoIGRpZCBub3Qgc2F5CisgICAiU3dpdGNoZWQgdG8gYSBuZXcgYnJhbmNoICdmb28nIiBsaWtlIG90aGVyIGNhc2VzLgorCisgKiBWYXJpb3VzIGNvZGVwYXRocyBoYXZlIHdvcmthcm91bmQgZm9yIGEgY29tbW9uIG1pc2NvbmZpZ3VyYXRpb24gdG8KKyAgIHNwZWxsICJVVEYtOCIgYXMgInV0ZjgiLCBidXQgaXQgd2FzIG5vdCB1c2VkIHVuaWZvcm1seS4gIE1vc3QKKyAgIG5vdGFibHksIG1haWxpbmZvICh3aGljaCBpcyB1c2VkIGJ5ICJnaXQgYW0iKSBsYWNrZWQgdGhpcyBzdXBwb3J0LgorCisgKiBXZSBmYWlsZWQgdG8gbWVudGlvbiBhIGZpbGUgd2l0aG91dCBhbnkgY29udGVudCBjaGFuZ2UgYnV0IHdob3NlCisgICBwZXJtaXNzaW9uIGJpdCB3YXMgbW9kaWZpZWQsIG9yICh3b3JzZSB5ZXQpIGEgbmV3IGZpbGUgd2l0aG91dCBhbnkKKyAgIGNvbnRlbnQgaW4gdGhlICJnaXQgZGlmZiAtLXN0YXQiIG91dHB1dC4KKworICogV2hlbiAiLS1zdGF0LWNvdW50IiBoaWRlcyBhIGRpZmZzdGF0IGZvciBiaW5hcnkgY29udGVudHMsIHRoZSB0b3RhbAorICAgbnVtYmVyIG9mIGFkZGVkIGFuZCByZW1vdmVkIGxpbmVzIGF0IHRoZSBib3R0b20gd2FzIGNvbXB1dGVkCisgICBpbmNvcnJlY3RseS4KKworICogV2hlbiAiLS1zdGF0LWNvdW50IiBoaWRlcyBhIGRpZmZzdGF0IGZvciB1bm1lcmdlZCBwYXRocywgdGhlIHRvdGFsCisgICBudW1iZXIgb2YgYWZmZWN0ZWQgZmlsZXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgImRpZmYgLS1zdGF0IiBvdXRwdXQKKyAgIHdhcyBjb21wdXRlZCBpbmNvcnJlY3RseS4KKworICogImRpZmYgLS1zaG9ydHN0YXQiIG1pc2NvdW50ZWQgdGhlIHRvdGFsIG51bWJlciBvZiBhZmZlY3RlZCBmaWxlcworICAgd2hlbiB0aGVyZSB3ZXJlIHVubWVyZ2VkIHBhdGhzLgorCisgKiAidXBkYXRlLXJlZiAtZCAtLWRlcmVmIFNZTSIgdG8gZGVsZXRlIGEgcmVmIHRocm91Z2ggYSBzeW1ib2xpYyByZWYKKyAgIHRoYXQgcG9pbnRzIHRvIGl0IGRpZCBub3QgcmVtb3ZlIGl0IGNvcnJlY3RseS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjIuMS50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4yLjEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNTRhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4yLjEudHh0CkBAIC0wLDAgKzEsMTE1IEBACitHaXQgdjEuOC4yLjEgUmVsZWFzZSBOb3RlcworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4ZXMgc2luY2UgdjEuOC4yCistLS0tLS0tLS0tLS0tLS0tLS0KKworICogQW4gZWFybGllciBjaGFuZ2UgdG8gdGhlIGF0dHJpYnV0ZSBzeXN0ZW0gaW50cm9kdWNlZCBhdCB2MS44LjEuMiBieQorICAgbWlzdGFrZSBzdG9wcGVkIGEgcGF0dGVybiAiZGlyIiAod2l0aG91dCB0cmFpbGluZyBzbGFzaCkgZnJvbQorICAgbWF0Y2hpbmcgYSBkaXJlY3RvcnkgImRpciIgKGl0IG9ubHkgd2FudGVkIHRvIGFsbG93IHBhdHRlcm4gImRpci8iCisgICB0byBhbHNvIG1hdGNoKS4KKworICogVmVyaWZpY2F0aW9uIG9mIHNpZ25lZCB0YWdzIHdlcmUgbm90IGRvbmUgY29ycmVjdGx5IHdoZW4gbm90IGluIEMKKyAgIG9yIGVuL1VTIGxvY2FsZS4KKworICogJ2dpdCBjb21taXQgLW0gIiRtc2ciJyB1c2VkIHRvIGFkZCBhbiBleHRyYSBuZXdsaW5lIGV2ZW4gd2hlbgorICAgJG1zZyBhbHJlYWR5IGVuZGVkIHdpdGggb25lLgorCisgKiBUaGUgIi0tbWF0Y2g9PHBhdHRlcm4+IiBvcHRpb24gb2YgImdpdCBkZXNjcmliZSIsIHdoZW4gdXNlZCB3aXRoCisgICAiLS1hbGwiIHRvIGFsbG93IHJlZnMgdGhhdCBhcmUgbm90IGFubm90YXRlZCB0YWdzIHRvIGJlIHVzZWQgYXMgYQorICAgYmFzZSBvZiBkZXNjcmlwdGlvbiwgZGlkIG5vdCByZXN0cmljdCB0aGUgb3V0cHV0IGZyb20gdGhlIGNvbW1hbmQKKyAgIHRvIHRob3NlIHRoYXQgbWF0Y2ggdGhlIGdpdmVuIHBhdHRlcm4uCisKKyAqIEFuIGFsaWFzZWQgY29tbWFuZCBzcGF3bmVkIGZyb20gYSBiYXJlIHJlcG9zaXRvcnkgdGhhdCBkb2VzIG5vdCBzYXkKKyAgIGl0IGlzIGJhcmUgd2l0aCAiY29yZS5iYXJlID0geWVzIiBpcyB0cmVhdGVkIGFzIG5vbi1iYXJlIGJ5IG1pc3Rha2UuCisKKyAqIFdoZW4gImZvcm1hdC1wYXRjaCIgcXVvdGVkIGEgbm9uLWFzY2lpIHN0cmluZ3Mgb24gdGhlIGhlYWRlciBmaWxlcywKKyAgIGl0IGluY29ycmVjdGx5IGFwcGxpZWQgcmZjMjA0NyBhbmQgY2hvcHBlZCBhIHNpbmdsZSBjaGFyYWN0ZXIgaW4KKyAgIHRoZSBtaWRkbGUgb2YgaXQuCisKKyAqICJnaXQgYXJjaGl2ZSIgcmVwb3J0cyBhIGZhaWx1cmUgd2hlbiBhc2tlZCB0byBjcmVhdGUgYW4gYXJjaGl2ZSBvdXQKKyAgIG9mIGFuIGVtcHR5IHRyZWUuICBJdCB3b3VsZCBiZSBtb3JlIGludHVpdGl2ZSB0byBnaXZlIGFuIGVtcHR5CisgICBhcmNoaXZlIGJhY2sgaW4gc3VjaCBhIGNhc2UuCisKKyAqICJnaXQgdGFnIC1mIDx0YWc+IiBhbHdheXMgc2FpZCAiVXBkYXRlZCB0YWcgJzx0YWc+JyIgZXZlbiB3aGVuCisgICBjcmVhdGluZyBhIG5ldyB0YWcgKGkuZS4gbm90IG92ZXJ3cml0aW5nIG5vciB1cGRhdGluZykuCisKKyAqICJnaXQgY21kIC0tICc6KHRvcCciIHdhcyBub3QgZGlhZ25vc2VkIGFzIGFuIGludmFsaWQgc3ludGF4LCBhbmQKKyAgIGluc3RlYWQgdGhlIHBhcnNlciBrZXB0IHJlYWRpbmcgYmV5b25kIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KKworICogQW5ub3RhdGVkIHRhZ3Mgb3V0c2lkZSByZWZzL3RhZ3MvIGhpZXJhcmNoeSB3ZXJlIG5vdCBhZHZlcnRpc2VkCisgICBjb3JyZWN0bHkgdG8gdGhlIGxzLXJlbW90ZSBhbmQgZmV0Y2ggd2l0aCByZWNlbnQgdmVyc2lvbiBvZiBHaXQuCisKKyAqIFRoZSBjb2RlIHRvIGtlZXAgdHJhY2sgb2Ygd2hhdCBkaXJlY3RvcnkgbmFtZXMgYXJlIGtub3duIHRvIEdpdCBvbgorICAgcGxhdGZvcm1zIHdpdGggY2FzZSBpbnNlbnNpdGl2ZSBmaWxlc3lzdGVtcyBjYW4gZ2V0IGNvbmZ1c2VkIHVwb24gYQorICAgaGFzaCBjb2xsaXNpb24gYmV0d2VlbiB0aGVzZSBwYXRobmFtZXMgYW5kIGxvb3BlZCBmb3JldmVyLgorCisgKiBUaGUgbG9naWMgdXNlZCBieSAiZ2l0IGRpZmYgLU0gLS1zdGF0IiB0byBzaG9ydGVuIHRoZSBuYW1lcyBvZgorICAgZmlsZXMgYmVmb3JlIGFuZCBhZnRlciBhIHJlbmFtZSBkaWQgbm90IHdvcmsgY29ycmVjdGx5IHdoZW4gdGhlCisgICBjb21tb24gcHJlZml4IGFuZCBzdWZmaXggYmV0d2VlbiB0aGUgdHdvIGZpbGVuYW1lcyBvdmVybGFwcGVkLgorCisgKiAiZ2l0IHN1Ym1vZHVsZSB1cGRhdGUiLCB3aGVuIHJlY3Vyc2VkIGludG8gc3ViLXN1Ym1vZHVsZXMsIGRpZCBub3QKKyAgIGFjY2N1bXVsYXRlIHRoZSBwcmVmaXggcGF0aHMuCisKKyAqICJnaXQgYW0gJG1haWxkaXIvIiBhcHBsaWVkIG1lc3NhZ2VzIGluIGFuIHVuZXhwZWN0ZWQgb3JkZXI7IHNvcnQKKyAgIGZpbGVuYW1lcyByZWFkIGZyb20gdGhlIG1haWxkaXIvIGluIGEgd2F5IHRoYXQgaXMgbW9yZSBsaWtlbHkgdG8KKyAgIHNvcnQgbWVzc2FnZXMgaW4gdGhlIG9yZGVyIHRoZSB3cml0aW5nIE1VQSBtZWFudCB0bywgYnkgc29ydGluZworICAgbnVtZXJpYyBzZWdtZW50IGluIG51bWVyaWMgb3JkZXIgYW5kIG5vbi1udW1lcmljIHNlZ21lbnQgaW4KKyAgIGFscGhhYmV0aWNhbCBvcmRlci4KKworICogV2hlbiBleHBvcnQtc3Vic3QgaXMgdXNlZCwgInppcCIgb3V0cHV0IHJlY29yZGVkIGluY29ycmVjdAorICAgc2l6ZSBvZiB0aGUgZmlsZS4KKworICogU29tZSBwbGF0Zm9ybXMgYW5kIHVzZXJzIHNwZWxsIFVURi04IGRpZmZlcmVudGx5OyByZXRyeSB3aXRoIHRoZQorICAgbW9zdCBvZmZpY2lhbCAiVVRGLTgiIHdoZW4gdGhlIHN5c3RlbSBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoZQorICAgdXNlci1zdXBwbGllZCBlbmNvZGluZyBuYW1lIHRoYXQgYXJlIHRoZSBjb21tb24gYWx0ZXJuYXRpdmUKKyAgIHNwZWxsaW5ncyBvZiBVVEYtOC4KKworICogImdpdCBicmFuY2giIGRpZCBub3QgYm90aGVyIHRvIGNoZWNrIG5vbnNlbnNlIGNvbW1hbmQgbGluZQorICAgcGFyYW1ldGVycyBhbmQgaXNzdWUgZXJyb3JzIGluIG1hbnkgY2FzZXMuCisKKyAqICJnaXQgdXBkYXRlLWluZGV4IC1oIiBkaWQgbm90IGRvIHRoZSB1c3VhbCAiLWgoZWxwKSIgdGhpbmcuCisKKyAqIHBlcmwvR2l0LnBtOjpjYXRfYmxvYiBzbHVycGVkIGV2ZXJ5dGhpbmcgaW4gY29yZSBvbmx5IHRvIHdyaXRlIGl0CisgICBvdXQgdG8gYSBmaWxlIGRlc2NyaXB0b3IsIHdoaWNoIHdhcyBub3QgYSB2ZXJ5IHNtYXJ0IHRoaW5nIHRvIGRvLgorCisgKiBUaGUgU1NMIHBlZXIgdmVyaWZpY2F0aW9uIGRvbmUgYnkgImdpdCBpbWFwLXNlbmQiIGRpZCBub3QgYXNrIGZvcgorICAgU2VydmVyIE5hbWUgSW5kaWNhdGlvbiAoUkZDIDQzNjYpLCBmYWlsaW5nIHRvIGNvbm5lY3QgU1NML1RMUworICAgc2l0ZXMgdGhhdCBzZXJ2ZSBtdWx0aXBsZSBob3N0bmFtZXMgb24gYSBzaW5nbGUgSVAuCisKKyAqICJnaXQgaW5kZXgtcGFjayIgaGFkIGEgYnVmZmVyLW92ZXJmbG93IHdoaWxlIHByZXBhcmluZyBhbgorICAgaW5mb3JtYXRpb25hbCBtZXNzYWdlIHdoZW4gdGhlIHRyYW5zbGF0ZWQgdmVyc2lvbiBvZiBpdCB3YXMgdG9vCisgICBsb25nLgorCisgKiBDbGFyaWZ5IGluIHRoZSBkb2N1bWVudGF0aW9uICJ3aGF0IiBnZXRzIHB1c2hlZCB0byAid2hlcmUiIHdoZW4gdGhlCisgICBjb21tYW5kIGxpbmUgdG8gImdpdCBwdXNoIiBkb2VzIG5vdCBzYXkgdGhlc2UgZXhwbGljaXRseS4KKworICogSW4gImdpdCByZWZsb2cgZXhwaXJlIiwgUkVBQ0hBQkxFIGJpdCB3YXMgbm90IGNsZWFyZWQgZnJvbSB0aGUKKyAgIGNvcnJlY3Qgb2JqZWN0cy4KKworICogVGhlICItLWNvbG9yPTx3aGVuPiIgYXJndW1lbnQgdG8gdGhlIGNvbW1hbmRzIGluIHRoZSBkaWZmIGZhbWlseQorICAgd2FzIGRlc2NyaWJlZCBwb29ybHkuCisKKyAqIFRoZSBhcmd1bWVudHMgZ2l2ZW4gdG8gcHJlLXJlYmFzZSBob29rIHdlcmUgbm90IGRvY3VtZW50ZWQuCisKKyAqIFRoZSB2NCBpbmRleCBmb3JtYXQgd2FzIG5vdCBkb2N1bWVudGVkLgorCisgKiBUaGUgIi0tbWF0Y2g9PHBhdHRlcm4+IiBhcmd1bWVudCAiZ2l0IGRlc2NyaWJlIiB0YWtlcyB1c2VzIGdsb2IKKyAgIHBhdHRlcm4gYnV0IGl0IHdhc24ndCBvYnZpb3VzIGZyb20gdGhlIGRvY3VtZW50YXRpb24uCisKKyAqIFNvbWUgc291cmNlcyBmYWlsZWQgdG8gY29tcGlsZSBvbiBzeXN0ZW1zIHRoYXQgbGFjayBOSV9NQVhIT1NUIGluCisgICB0aGVpciBzeXN0ZW0gaGVhZGVyIChlLmcuIHovT1MpLgorCisgKiBBZGQgYW4gZXhhbXBsZSB1c2Ugb2YgIi0tZW52LWZpbHRlciIgaW4gImZpbHRlci1icmFuY2giCisgICBkb2N1bWVudGF0aW9uLgorCisgKiAiZ2l0IGJ1bmRsZSB2ZXJpZnkiIGRpZCBub3Qgc2F5ICJyZWNvcmRzIGEgY29tcGxldGUgaGlzdG9yeSIgZm9yIGEKKyAgIGJ1bmRsZSB0aGF0IGRvZXMgbm90IGhhdmUgYW55IHByZXJlcXVpc2l0ZXMuCisKKyAqIEluIHRoZSB2MS44LjAgZXJhLCB3ZSBjaGFuZ2VkIHN5bWJvbHMgdGhhdCBkbyBub3QgaGF2ZSB0byBiZSBnbG9iYWwKKyAgIHRvIGZpbGUgc2NvcGUgc3RhdGljLCBidXQgYSBmZXcgZnVuY3Rpb25zIGluIGdyYXBoLmMgd2VyZSB1c2VkIGJ5CisgICBDR2l0IGZyb20gc2lkZXdheXMgYnlwYXNzaW5nIHRoZSBlbnRyeSBwb2ludHMgb2YgdGhlIEFQSSB0aGUKKyAgIGluLXRyZWUgdXNlcnMgdXNlLgorCisgKiAiZ2l0IG1lcmdlLXRyZWUiIGhhZCBhIHR5cG8gaW4gdGhlIGxvZ2ljIHRvIGRldGVjdCBkL2YgY29uZmxpY3RzLAorICAgd2hpY2ggY2F1c2VkIGl0IHRvIHNlZ2ZhdWx0IGluIHNvbWUgY2FzZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4yLjIudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMi4yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWI0ODMxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMi4yLnR4dApAQCAtMCwwICsxLDYxIEBACitHaXQgdjEuOC4yLjIgUmVsZWFzZSBOb3RlcworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4ZXMgc2luY2UgdjEuOC4yLjEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAqIFpzaCBjb21wbGV0aW9uIGZvcmdvdCB0aGF0ICclJyBjaGFyYWN0ZXIgdXNlZCB0byBzaWduYWwgdW50cmFja2VkCisgICBmaWxlcyBuZWVkcyB0byBiZSBlc2NhcGVkIHdpdGggYW5vdGhlciAnJScuCisKKyAqIEEgY29tbWl0IG9iamVjdCB3aG9zZSBhdXRob3Igb3IgY29tbWl0dGVyIGlkZW50IGFyZSBtYWxmb3JtZWQKKyAgIGNyYXNoZWQgc29tZSBjb2RlIHRoYXQgdHJ1c3RlZCB0aGF0IGEgbmFtZSwgYW4gZW1haWwgYW5kIGFuCisgICB0aW1lc3RhbXAgY2FuIGFsd2F5cyBiZSBmb3VuZCBpbiBpdC4KKworICogVGhlIG5ldyBjb3JlLmNvbW1lbnRjaGFyIGNvbmZpZ3VyYXRpb24gd2FzIG5vdCBhcHBsaWVkIHRvIGEgZmV3CisgICBwbGFjZXMuCisKKyAqICJnaXQgcHVsbCAtLXJlYmFzZSIgZGlkIG5vdCBwYXNzICItdi8tcSIgb3B0aW9ucyB0byB1bmRlcmx5aW5nCisgICAiZ2l0IHJlYmFzZSIuCisKKyAqIFdoZW4gcmVjZWl2ZS1wYWNrIGRldGVjdHMgZXJyb3IgaW4gdGhlIHBhY2sgaGVhZGVyIGl0IHJlY2VpdmVkIGluCisgICBvcmRlciB0byBkZWNpZGUgd2hpY2ggb2YgdW5wYWNrLW9iamVjdHMgb3IgaW5kZXgtcGFjayB0byBydW4sIGl0CisgICByZXR1cm5lZCB3aXRob3V0IGNsb3NpbmcgdGhlIGVycm9yIHN0cmVhbSwgd2hpY2ggbGVkIHRvIGEgaGFuZworICAgc2lkZWJhbmQgdGhyZWFkLgorCisgKiAiZ2l0IGRpZmYgLS1kaWZmLWFsZ29yaXRobT1hbGdvIiB3YXMgdW5kZXJzdG9vZCBieSB0aGUgY29tbWFuZCBsaW5lCisgICBwYXJzZXIsIGJ1dCAiZ2l0IGRpZmYgLS1kaWZmLWFsZ29yaXRobSBhbGdvIiB3YXMgbm90LgorCisgKiAiZ2l0IGxvZyAtUy8tRyIgc3RhcnRlZCBwYXlpbmcgYXR0ZW50aW9uIHRvIHRleHRjb252IGZpbHRlciwgYnV0CisgICB0aGVyZSB3YXMgbm8gd2F5IHRvIGRpc2FibGUgdGhpcy4gIE1ha2UgaXQgaG9ub3IgLS1uby10ZXh0Y29udgorICAgb3B0aW9uLgorCisgKiAiZ2l0IG1lcmdlICQoZ2l0IHJldi1wYXJzZSB2MS44LjIpIiBiZWhhdmVkIHF1aXRlIGRpZmZlcmVudGx5IGZyb20KKyAgICJnaXQgbWVyZ2UgdjEuOC4yIiwgYXMgaWYgdjEuOC4yIHdlcmUgd3JpdHRlbiBhcyB2MS44LjJeMCBhbmQgZGlkCisgICBub3QgcGF5IG11Y2ggYXR0ZW50aW9uIHRvIHRoZSBhbm5vdGF0ZWQgdGFnIHBheWxvYWQuICBNYWtlIHRoZSBjb2RlCisgICBub3RpY2UgdGhlIHR5cGUgb2YgdGhlIHRhZyBvYmplY3QsIGluIGFkZGl0aW9uIHRvIHRoZSBkd2ltX3JlZigpCisgICBiYXNlZCBjbGFzc2lmaWNhdGlvbiB0aGUgY3VycmVudCBjb2RlIHVzZXMgKGkuZS4gdGhlIG5hbWUgYXBwZWFycworICAgaW4gcmVmcy90YWdzLykgdG8gZGVjaWRlIHdoZW4gdG8gc3BlY2lhbCBjYXNlIG1lcmdpbmcgb2YgdGFncy4KKworICogImdpdCBjaGVycnktcGljayIgYW5kICJnaXQgcmV2ZXJ0IiBjYW4gdGFrZSBtb3JlIHRoYW4gb25lIGNvbW1pdAorICAgb24gdGhlIGNvbW1hbmQgbGluZSB0aGVzZSBkYXlzLCBidXQgaXQgd2FzIG5vdCBtZW50aW9uZWQgb24gdGhlIHVzYWdlCisgICB0ZXh0LgorCisgKiBQZXJsIHNjcmlwdHMgbGlrZSAiZ2l0LXN2biIgY2xvc2VkIChub3QgcmVkaXJlY3RpbmcgdG8gL2Rldi9udWxsKQorICAgdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbSwgd2hpY2ggaXMgbm90IGEgdmVyeSBzbWFydCB0aGluZyB0byBkby4KKyAgIExhdGVyIG9wZW4gbWF5IHJldHVybiBmaWxlIGRlc2NyaXB0b3IgIzIgZm9yIHVucmVsYXRlZCBwdXJwb3NlLCBhbmQKKyAgIGVycm9yIHJlcG9ydGluZyBjb2RlIG1heSB3cml0ZSBpbnRvIHRoZW0uCisKKyAqICJnaXQgYXBwbHkgLS13aGl0ZXNwYWNlPWZpeCIgd2FzIG5vdCBwcmVwYXJlZCB0byBzZWUgYSBsaW5lIGdldHRpbmcKKyAgIGxvbmdlciBhZnRlciBmaXhpbmcgd2hpdGVzcGFjZXMgKGUuZy4gdGFiLWluLWluZGVudCBha2EgUHl0aG9uKS4KKworICogImdpdCBkaWZmL2xvZyAtLWNjIiBkaWQgbm90IHdvcmsgd2VsbCB3aXRoIG9wdGlvbnMgdGhhdCBpZ25vcmUKKyAgIHdoaXRlc3BhY2UgY2hhbmdlcy4KKworICogRG9jdW1lbnRhdGlvbiBvbiBzZXR0aW5nIHVwIGEgaHR0cCBzZXJ2ZXIgdGhhdCByZXF1aXJlcworICAgYXV0aGVudGljYXRpb24gb25seSBvbiB0aGUgcHVzaCBidXQgbm90IGZldGNoIGhhcyBiZWVuIGNsYXJpZmllZC4KKworICogQSBmZXcgYnVnZml4ZXMgdG8gImdpdCByZXJlcmUiIHdvcmtpbmcgb24gY29ybmVyIGNhc2UgbWVyZ2UKKyAgIGNvbmZsaWN0cyBoYXZlIGJlZW4gYXBwbGllZC4KKworICogImdpdCBidW5kbGUiIGRpZCBub3QgbGlrZSBhIGJ1bmRsZSBjcmVhdGVkIHVzaW5nIGEgY29tbWl0IHdpdGhvdXQKKyAgIGFueSBtZXNzYWdlIGFzIGl0cyBvbmUgb2YgdGhlIHByZXJlcXVpc3Rlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjIuMy50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4yLjMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMzk0ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4yLjMudHh0CkBAIC0wLDAgKzEsMTkgQEAKK0dpdCB2MS44LjIuMyBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlcyBzaW5jZSB2MS44LjIuMgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICogInJldi1saXN0IC0tc3RkaW4iIGFuZCBmcmllbmRzIGtlcHQgYm9ndXMgcG9pbnRlcnMgaW50byB0aGUgaW5wdXQKKyAgIGJ1ZmZlciBhcm91bmQgYXMgaHVtYW4gcmVhZGFibGUgb2JqZWN0IG5hbWVzLiAgVGhpcyB3YXMgbm90IGEKKyAgIGh1Z2UgcHJvYmxlbSBidXQgd2FzIGV4cG9zZWQgYnkgYSBuZXcgY2hhbmdlIHRoYXQgdXNlcyB0aGVzZQorICAgbmFtZXMgaW4gZXJyb3Igb3V0cHV0LgorCisgKiBXaGVuICJnaXQgZGlmZnRvb2wiIGRyb3ZlICJrZGlmZjMiLCBpdCBtaXN0YWtlbmx5IHBhc3NlZCAtLWF1dG8KKyAgIG9wdGlvbiB0aGF0IHdhcyBtZWFudCB3aGlsZSByZXNvbHZpbmcgbWVyZ2UgY29uZmxpY3RzLgorCisgKiAiZ2l0IHJlbW90ZSBhZGQiIGNvbW1hbmQgZGlkIG5vdCBkaWFnbm9zZSBleHRyYSBjb21tYW5kIGxpbmUKKyAgIGFyZ3VtZW50cyBhcyBhbiBlcnJvciBhbmQgc2lsZW50bHkgaWdub3JlZCB0aGVtLgorCitBbHNvIGNvbnRhaW5zIGEgaGFuZGZ1bCBvZiB0cml2aWFsIGNvZGUgY2xlYW4tdXBzLCBkb2N1bWVudGF0aW9uCit1cGRhdGVzLCB1cGRhdGVzIHRvIHRoZSB0ZXN0IHN1aXRlLCBldGMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4yLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNjA2YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4yLnR4dApAQCAtMCwwICsxLDQ5NSBAQAorR2l0IHYxLjguMiBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworQmFja3dhcmQgY29tcGF0aWJpbGl0eSBub3RlcyAodGhpcyByZWxlYXNlKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisiZ2l0IHB1c2ggJHRoZXJlIHRhZyB2MS4yLjMiIHVzZWQgdG8gYWxsb3cgcmVwbGFjaW5nIGEgdGFnIHYxLjIuMwordGhhdCBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgcmVwb3NpdG9yeSAkdGhlcmUsIGlmIHRoZSByZXdyaXR0ZW4gdGFnCit5b3UgYXJlIHB1c2hpbmcgcG9pbnRzIGF0IGEgY29tbWl0IHRoYXQgaXMgYSBkZXNjZW5kYW50IG9mIGEgY29tbWl0Cit0aGF0IHRoZSBvbGQgdGFnIHYxLjIuMyBwb2ludHMgYXQuICBUaGlzIHdhcyBmb3VuZCB0byBiZSBlcnJvciBwcm9uZQorYW5kIHN0YXJ0aW5nIHdpdGggdGhpcyByZWxlYXNlLCBhbnkgYXR0ZW1wdCB0byB1cGRhdGUgYW4gZXhpc3RpbmcKK3JlZiB1bmRlciByZWZzL3RhZ3MvIGhpZXJhcmNoeSB3aWxsIGZhaWwsIHdpdGhvdXQgIi0tZm9yY2UiLgorCitXaGVuICJnaXQgYWRkIC11IiBhbmQgImdpdCBhZGQgLUEiIHRoYXQgZG9lcyBub3Qgc3BlY2lmeSB3aGF0IHBhdGhzCit0byBhZGQgb24gdGhlIGNvbW1hbmQgbGluZSBpcyBydW4gZnJvbSBpbnNpZGUgYSBzdWJkaXJlY3RvcnksIHRoZQorc2NvcGUgb2YgdGhlIG9wZXJhdGlvbiBoYXMgYWx3YXlzIGJlZW4gbGltaXRlZCB0byB0aGUgc3ViZGlyZWN0b3J5LgorTWFueSB1c2VycyBmb3VuZCB0aGlzIGNvdW50ZXItaW50dWl0aXZlLCBnaXZlbiB0aGF0ICJnaXQgY29tbWl0IC1hIgorYW5kIG90aGVyIGNvbW1hbmRzIG9wZXJhdGUgb24gdGhlIGVudGlyZSB0cmVlIHJlZ2FyZGxlc3Mgb2Ygd2hlcmUgeW91CithcmUuICBJbiB0aGlzIHJlbGVhc2UsIHRoZXNlIGNvbW1hbmRzIGdpdmUgYSB3YXJuaW5nIG1lc3NhZ2UgdGhhdAorc3VnZ2VzdHMgdGhlIHVzZXJzIHRvIHVzZSAiZ2l0IGFkZCAtdS8tQSAuIiB3aGVuIHRoZXkgd2FudCB0byBsaW1pdAordGhlIHNjb3BlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeTsgZG9pbmcgc28gd2lsbCBzcXVlbGNoIHRoZSBtZXNzYWdlLAord2hpbGUgdHJhaW5pbmcgdGhlaXIgZmluZ2Vycy4KKworCitCYWNrd2FyZCBjb21wYXRpYmlsaXR5IG5vdGVzIChmb3IgR2l0IDIuMCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGVuICJnaXQgcHVzaCBbJHRoZXJlXSIgZG9lcyBub3Qgc2F5IHdoYXQgdG8gcHVzaCwgd2UgaGF2ZSB1c2VkIHRoZQordHJhZGl0aW9uYWwgIm1hdGNoaW5nIiBzZW1hbnRpY3Mgc28gZmFyIChhbGwgeW91ciBicmFuY2hlcyB3ZXJlIHNlbnQKK3RvIHRoZSByZW1vdGUgYXMgbG9uZyBhcyB0aGVyZSBhbHJlYWR5IGFyZSBicmFuY2hlcyBvZiB0aGUgc2FtZSBuYW1lCitvdmVyIHRoZXJlKS4gIEluIEdpdCAyLjAsIHRoZSBkZWZhdWx0IHdpbGwgY2hhbmdlIHRvIHRoZSAic2ltcGxlIgorc2VtYW50aWNzIHRoYXQgcHVzaGVzIHRoZSBjdXJyZW50IGJyYW5jaCB0byB0aGUgYnJhbmNoIHdpdGggdGhlIHNhbWUKK25hbWUsIG9ubHkgd2hlbiB0aGUgY3VycmVudCBicmFuY2ggaXMgc2V0IHRvIGludGVncmF0ZSB3aXRoIHRoYXQKK3JlbW90ZSBicmFuY2guICBUaGVyZSBpcyBhIHVzZXIgcHJlZmVyZW5jZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlCisicHVzaC5kZWZhdWx0IiB0byBjaGFuZ2UgdGhpcy4gIElmIHlvdSBhcmUgYW4gb2xkLXRpbWVyIHdobyBpcyB1c2VkCit0byB0aGUgIm1hdGNoaW5nIiBzZW1hbnRpY3MsIHlvdSBjYW4gc2V0IGl0IHRvICJtYXRjaGluZyIgdG8ga2VlcCB0aGUKK3RyYWRpdGlvbmFsIGJlaGF2aW91ci4gIElmIHlvdSB3YW50IHRvIGxpdmUgaW4gdGhlIGZ1dHVyZSBlYXJseSwKK3lvdSBjYW4gc2V0IGl0IHRvICJzaW1wbGUiIHRvZGF5IHdpdGhvdXQgd2FpdGluZyBmb3IgR2l0IDIuMC4KKworV2hlbiAiZ2l0IGFkZCAtdSIgYW5kICJnaXQgYWRkIC1BIiwgdGhhdCBkb2VzIG5vdCBzcGVjaWZ5IHdoYXQgcGF0aHMKK3RvIGFkZCBvbiB0aGUgY29tbWFuZCBsaW5lIGlzIHJ1biBmcm9tIGluc2lkZSBhIHN1YmRpcmVjdG9yeSwgdGhlc2UKK2NvbW1hbmRzIHdpbGwgb3BlcmF0ZSBvbiB0aGUgZW50aXJlIHRyZWUgaW4gR2l0IDIuMCBmb3IgY29uc2lzdGVuY3kKK3dpdGggImdpdCBjb21taXQgLWEiIGFuZCBvdGhlciBjb21tYW5kcy4gQmVjYXVzZSB0aGVyZSB3aWxsIGJlIG5vCittZWNoYW5pc20gdG8gbWFrZSAiZ2l0IGFkZCAtdSIgYmVoYXZlIGFzIGlmICJnaXQgYWRkIC11IC4iLCBpdCBpcworaW1wb3J0YW50IGZvciB0aG9zZSB3aG8gYXJlIHVzZWQgdG8gImdpdCBhZGQgLXUiICh3aXRob3V0IHBhdGhzcGVjKQordXBkYXRpbmcgdGhlIGluZGV4IG9ubHkgZm9yIHBhdGhzIGluIHRoZSBjdXJyZW50IHN1YmRpcmVjdG9yeSB0byBzdGFydAordHJhaW5pbmcgdGhlaXIgZmluZ2VycyB0byBleHBsaWNpdGx5IHNheSAiZ2l0IGFkZCAtdSAuIiB3aGVuIHRoZXkgbWVhbgoraXQgYmVmb3JlIEdpdCAyLjAgY29tZXMuCisKKworVXBkYXRlcyBzaW5jZSB2MS44LjEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VJLCBXb3JrZmxvd3MgJiBGZWF0dXJlcworCisgKiBJbml0aWFsIHBvcnRzIHRvIFFOWCBhbmQgei9PUyBVTklYIFN5c3RlbSBTZXJ2aWNlcyBoYXZlIHN0YXJ0ZWQuCisKKyAqIE91dHB1dCBmcm9tIHRoZSB0ZXN0cyBpcyBjb2xvdXJlZCB1c2luZyAiZ3JlZW4gaXMgb2theSwgeWVsbG93IGlzCisgICBxdWVzdGlvbmFibGUsIHJlZCBpcyBiYWQgYW5kIGJsdWUgaXMgaW5mb3JtYXRpdmUiIHNjaGVtZS4KKworICogTWVudGlvbiBvZiAiR0lUL0dpdC9naXQiIGluIHRoZSBkb2N1bWVudGF0aW9uIGhhdmUgYmVlbiB1cGRhdGVkIHRvCisgICBiZSBtb3JlIHVuaWZvcm0gYW5kIGNvbnNpc3RlbnQuICBUaGUgbmFtZSBvZiB0aGUgc3lzdGVtIGFuZCB0aGUKKyAgIGNvbmNlcHQgaXQgZW1ib2RpZXMgaXMgIkdpdCI7IHRoZSBjb21tYW5kIHRoZSB1c2VycyB0eXBlIGlzICJnaXQiLgorICAgQWxsLWNhcHMgIkdJVCIgd2FzIG1lcmVseSBhIHdheSB0byBpbWl0YXRlICJHaXQiIHR5cGVzZXQgaW4gc21hbGwKKyAgIGNhcHMgaW4gb3VyIEFTQ0lJIHRleHQgb25seSBkb2N1bWVudGF0aW9uIGFuZCB0byBiZSBhdm9pZGVkLgorCisgKiBUaGUgY29tcGxldGlvbiBzY3JpcHQgKGluIGNvbnRyaWIvY29tcGxldGlvbikgdXNlZCB0byBsZXQgdGhlCisgICBkZWZhdWx0IGNvbXBsZXRlciB0byBzdWdnZXN0IHBhdGhuYW1lcywgd2hpY2ggZ2F2ZSB0b28gbWFueQorICAgaXJyZWxldmFudCBjaG9pY2VzIChlLmcuICJnaXQgYWRkIiB3b3VsZCBub3Qgd2FudCB0byBhZGQgYW4KKyAgIHVubW9kaWZpZWQgcGF0aCkuICBJdCBsZWFybnQgdG8gdXNlIGEgbW9yZSBnaXQtYXdhcmUgbG9naWMgdG8KKyAgIGVudW1lcmF0ZSBvbmx5IHJlbGV2YW50IG9uZXMuCisKKyAqIEluIGJhcmUgcmVwb3NpdG9yaWVzLCAiZ2l0IHNob3J0bG9nIiBhbmQgb3RoZXIgY29tbWFuZHMgbm93IHJlYWQKKyAgIG1haWxtYXAgZmlsZXMgZnJvbSB0aGUgdGlwIG9mIHRoZSBoaXN0b3J5LCB0byBoZWxwIHJ1bm5pbmcgdGhlc2UKKyAgIHRvb2xzIGluIHNlcnZlciBzZXR0aW5ncy4KKworICogQ29sb3Igc3BlY2lmaWVycywgZS5nLiAiJUMoYmx1ZSlIZWxsbyVDKHJlc2V0KSIsIHVzZWQgaW4gdGhlCisgICAiLS1mb3JtYXQ9IiBvcHRpb24gb2YgImdpdCBsb2ciIGFuZCBmcmllbmRzIGNhbiBiZSBkaXNhYmxlZCB3aGVuCisgICB0aGUgb3V0cHV0IGlzIG5vdCBzZW50IHRvIGEgdGVybWluYWwgYnkgcHJlZml4aW5nIHRoZW0gd2l0aAorICAgImF1dG8sIiwgZS5nLiAiJUMoYXV0byxibHVlKUhlbGxvJUMoYXV0byxyZXNldCkiLgorCisgKiBTY3JpcHRzIGNhbiBhc2sgR2l0IHRoYXQgd2lsZGNhcmQgcGF0dGVybnMgaW4gcGF0aHNwZWNzIHRoZXkgZ2l2ZSBkbworICAgbm90IGhhdmUgYW55IHNpZ25pZmljYW5jZSwgaS5lLiB0YWtlIHRoZW0gYXMgbGl0ZXJhbCBzdHJpbmdzLgorCisgKiBUaGUgcGF0dGVybnMgaW4gLmdpdGlnbm9yZSBhbmQgLmdpdGF0dHJpYnV0ZXMgZmlsZXMgY2FuIGhhdmUgKiovLAorICAgYXMgYSBwYXR0ZXJuIHRoYXQgbWF0Y2hlcyAwIG9yIG1vcmUgbGV2ZWxzIG9mIHN1YmRpcmVjdG9yeS4KKyAgIEUuZy4gImZvby8qKi9iYXIiIG1hdGNoZXMgImJhciIgaW4gImZvbyIgaXRzZWxmIG9yIGluIGEKKyAgIHN1YmRpcmVjdG9yeSBvZiAiZm9vIi4KKworICogV2hlbiBnaXZpbmcgYXJndW1lbnRzIHdpdGhvdXQgIi0tIiBkaXNhbWJpZ3VhdGlvbiwgb2JqZWN0IG5hbWVzCisgICB0aGF0IGNvbWUgZWFybGllciBvbiB0aGUgY29tbWFuZCBsaW5lIG11c3Qgbm90IGJlIGludGVycHJldGFibGUgYXMKKyAgIHBhdGhzcGVjcyBhbmQgcGF0aHNwZWNzIHRoYXQgY29tZSBsYXRlciBvbiB0aGUgY29tbWFuZCBsaW5lIG11c3QKKyAgIG5vdCBiZSBpbnRlcnByZXRhYmxlIGFzIG9iamVjdCBuYW1lcy4gIFRoaXMgZGlzYW1iaWd1YXRpb24gcnVsZSBoYXMKKyAgIGJlZW4gdHdlYWtlZCBzbyB0aGF0ICI6LyIgKG5vIG90aGVyIHN0cmluZyBiZWZvcmUgb3IgYWZ0ZXIpIGlzCisgICBhbHdheXMgaW50ZXJwcmV0ZWQgYXMgYSBwYXRoc3BlYzsgImdpdCBjbWQgLS0gOi8iIGlzIG5vIGxvbmdlcgorICAgbmVlZGVkLCB5b3UgY2FuIGp1c3Qgc2F5ICJnaXQgY21kIDovIi4KKworICogVmFyaW91cyAiaGludCIgbGluZXMgR2l0IGdpdmVzIHdoZW4gaXQgYXNrcyB0aGUgdXNlciB0byBlZGl0CisgICBtZXNzYWdlcyBpbiB0aGUgZWRpdG9yIGFyZSBjb21tZW50ZWQgb3V0IHdpdGggJyMnIGJ5IGRlZmF1bHQuIFRoZQorICAgY29yZS5jb21tZW50Y2hhciBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZQorICAgdGhpcyAnIycgdG8gYSBkaWZmZXJlbnQgY2hhcmFjdGVyLgorCisgKiAiZ2l0IGFkZCAtdSIgYW5kICJnaXQgYWRkIC1BIiB3aXRob3V0IHBhdGhzcGVjIGlzc3VlcyB3YXJuaW5nIHRvCisgICBtYWtlIHVzZXJzIGF3YXJlIHRoYXQgdGhleSBhcmUgb25seSBvcGVyYXRpbmcgb24gcGF0aHMgaW5zaWRlIHRoZQorICAgc3ViZGlyZWN0b3J5IHRoZXkgYXJlIGluLiAgVXNlICI6LyIgKGV2ZXJ5dGhpbmcgZnJvbSB0aGUgdG9wKSBvcgorICAgIi4iIChldmVyeXRoaW5nIGZyb20gdGhlICRjd2QpIHRvIGRpc2FtYmlndWF0ZS4KKworICogImdpdCBibGFtZSIgKGFuZCAiZ2l0IGRpZmYiKSBsZWFybmVkIHRoZSAiLS1uby1mb2xsb3ciIG9wdGlvbi4KKworICogImdpdCBicmFuY2giIG5vdyByZWplY3RzIHNvbWUgbm9uc2Vuc2UgY29tYmluYXRpb25zIG9mIGNvbW1hbmQgbGluZQorICAgYXJndW1lbnRzIChlLmcuIGdpdmluZyBtb3JlIHRoYW4gb25lIGJyYW5jaCBuYW1lIHRvIHJlbmFtZSkgd2l0aAorICAgbW9yZSBjYXNlLXNwZWNpZmljIGVycm9yIG1lc3NhZ2VzLgorCisgKiAiZ2l0IGNoZWNrLWlnbm9yZSIgY29tbWFuZCB0byBoZWxwIGRlYnVnZ2luZyAuZ2l0aWdub3JlIGZpbGVzIGhhcworICAgYmVlbiBhZGRlZC4KKworICogImdpdCBjaGVycnktcGljayIgY2FuIGJlIHVzZWQgdG8gcmVwbGF5IGEgcm9vdCBjb21taXQgdG8gYW4gdW5ib3JuCisgICBicmFuY2guCisKKyAqICJnaXQgY29tbWl0IiBjYW4gYmUgdG9sZCB0byB1c2UgLS1jbGVhbnVwPXdoaXRlc3BhY2UgYnkgc2V0dGluZyB0aGUKKyAgIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgY29tbWl0LmNsZWFudXAgdG8gJ3doaXRlc3BhY2UnLgorCisgKiAiZ2l0IGRpZmYiIGFuZCBvdGhlciBQb3JjZWxhaW4gY29tbWFuZHMgY2FuIGJlIHRvbGQgdG8gdXNlIGEKKyAgIG5vbi1zdGFuZGFyZCBhbGdvcml0aG0gYnkgc2V0dGluZyBkaWZmLmFsZ29yaXRobSBjb25maWd1cmF0aW9uCisgICB2YXJpYWJsZS4KKworICogImdpdCBmZXRjaCAtLW1pcnJvciIgYW5kIGZldGNoIHRoYXQgdXNlcyBvdGhlciBmb3JtcyBvZiByZWZzcGVjCisgICB3aXRoIHdpbGRjYXJkIHVzZWQgdG8gYXR0ZW1wdCB0byB1cGRhdGUgYSBzeW1ib2xpYyByZWYgdGhhdCBtYXRjaAorICAgdGhlIHdpbGRjYXJkIG9uIHRoZSByZWNlaXZpbmcgZW5kLCB3aGljaCBtYWRlIGxpdHRsZSBzZW5zZSAodGhlCisgICByZWFsIHJlZiB0aGF0IGlzIHBvaW50ZWQgYXQgYnkgdGhlIHN5bWJvbGljIHJlZiB3b3VsZCBiZSB1cGRhdGVkCisgICBhbnl3YXkpLiAgU3ltYm9saWMgcmVmcyBubyBsb25nZXIgYXJlIGFmZmVjdGVkIGJ5IHN1Y2ggYSBmZXRjaC4KKworICogImdpdCBmb3JtYXQtcGF0Y2giIG5vdyBkZXRlY3RzIG1vcmUgY2FzZXMgaW4gd2hpY2ggYSB3aG9sZSBicmFuY2gKKyAgIGlzIGJlaW5nIGV4cG9ydGVkLCBhbmQgdXNlcyB0aGUgZGVzY3JpcHRpb24gZm9yIHRoZSBicmFuY2gsIHdoZW4KKyAgIGFza2VkIHRvIHdyaXRlIGEgY292ZXIgbGV0dGVyIGZvciB0aGUgc2VyaWVzLgorCisgKiAiZ2l0IGZvcm1hdC1wYXRjaCIgbGVhcm5lZCAiLXYgJGNvdW50IiBvcHRpb24sIGFuZCBwcmVwZW5kcyBhCisgICBzdHJpbmcgInYkY291bnQtIiB0byB0aGUgbmFtZXMgb2YgaXRzIG91dHB1dCBmaWxlcywgYW5kIGFsc28KKyAgIGF1dG9tYXRpY2FsbHkgc2V0cyB0aGUgc3ViamVjdCBwcmVmaXggdG8gIlBBVENIIHYkY291bnQiLiBUaGlzCisgICBhbGxvd3MgcGF0Y2hlcyBmcm9tIHJlcm9sbGVkIHNlcmllcyB0byBiZSBzdG9yZWQgdW5kZXIgZGlmZmVyZW50CisgICBuYW1lcyBhbmQgbWFrZXMgaXQgZWFzaWVyIHRvIHJldXNlIGNvdmVyIGxldHRlciBtZXNzYWdlcy4KKworICogImdpdCBsb2ciIGFuZCBmcmllbmRzIGNhbiBiZSB0b2xkIHdpdGggLS11c2UtbWFpbG1hcCBvcHRpb24gdG8KKyAgIHJld3JpdGUgdGhlIG5hbWVzIGFuZCBlbWFpbCBhZGRyZXNzZXMgb2YgcGVvcGxlIHVzaW5nIHRoZSBtYWlsbWFwCisgICBtZWNoYW5pc20uCisKKyAqICJnaXQgbG9nIC0tY2MgLS1ncmFwaCIgbm93IHNob3dzIHRoZSBjb21iaW5lZCBkaWZmIG91dHB1dCB3aXRoIHRoZQorICAgYW5jZXN0cnkgZ3JhcGguCisKKyAqICJnaXQgbG9nIC0tZ3JlcD08cGF0dGVybj4iIGhvbm9ycyBpMThuLmxvZ291dHB1dGVuY29kaW5nIHRvIGxvb2sKKyAgIGZvciB0aGUgcGF0dGVybiBhZnRlciBmaXhpbmcgdGhlIGxvZyBtZXNzYWdlIHRvIHRoZSBzcGVjaWZpZWQKKyAgIGVuY29kaW5nLgorCisgKiAiZ2l0IG1lcmdldG9vbCIgYW5kICJnaXQgZGlmZnRvb2wiIGxlYXJuZWQgdG8gbGlzdCB0aGUgYXZhaWxhYmxlCisgICB0b29sIGJhY2tlbmRzIGluIGEgbW9yZSBjb25zaXN0ZW50IG1hbm5lci4KKworICogImdpdCBtZXJnZXRvb2wiIGlzIGF3YXJlIG9mIFRvcnRvaXNlR2l0TWVyZ2Ugbm93IGFuZCB1c2VzIGl0IG92ZXIKKyAgIFRvcnRvaXNlTWVyZ2Ugd2hlbiBhdmFpbGFibGUuCisKKyAqICJnaXQgcHVzaCIgbm93IHJlcXVpcmVzICItZiIgdG8gdXBkYXRlIGEgdGFnLCBldmVuIGlmIGl0IGlzIGEKKyAgIGZhc3QtZm9yd2FyZCwgYXMgdGFncyBhcmUgbWVhbnQgdG8gYmUgZml4ZWQgcG9pbnRzLgorCisgKiBFcnJvciBtZXNzYWdlcyBmcm9tICJnaXQgcHVzaCIgd2hlbiBpdCBzdG9wcyB0byBwcmV2ZW50IHJlbW90ZSByZWZzCisgICBmcm9tIGdldHRpbmcgb3ZlcndyaXR0ZW4gYnkgbWlzdGFrZSBoYXZlIGJlZW4gaW1wcm92ZWQgdG8gZXhwbGFpbgorICAgdmFyaW91cyBzaXR1YXRpb25zIHNlcGFyYXRlbHkuCisKKyAqICJnaXQgcHVzaCIgd2lsbCBzdG9wIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgaWYgdGhlIG5ldyAicHJlLXB1c2giCisgICBob29rIGV4aXN0cyBhbmQgZXhpdHMgd2l0aCBhIGZhaWx1cmUuCisKKyAqIFdoZW4gImdpdCByZWJhc2UiIGZhaWxzIHRvIGdlbmVyYXRlIHBhdGNoZXMgdG8gYmUgYXBwbGllZCAoZS5nLiBkdWUKKyAgIHRvIG9vbSksIGl0IGZhaWxlZCB0byBkZXRlY3QgdGhlIGZhaWx1cmUgYW5kIGluc3RlYWQgYmVoYXZlZCBhcyBpZgorICAgdGhlcmUgd2VyZSBub3RoaW5nIHRvIGRvLiAgQSB3b3JrYXJvdW5kIHRvIHVzZSBhIHRlbXBvcmFyeSBmaWxlIGhhcworICAgYmVlbiBhcHBsaWVkLCBidXQgd2UgcHJvYmFibHkgd291bGQgd2FudCB0byByZXZpc2l0IHRoaXMgbGF0ZXIsIGFzCisgICBpdCBodXJ0cyB0aGUgY29tbW9uIGNhc2Ugb2Ygbm90IGZhaWxpbmcgYXQgYWxsLgorCisgKiBJbnB1dCBhbmQgcHJlY29uZGl0aW9ucyB0byAiZ2l0IHJlc2V0IiBoYXMgYmVlbiBsb29zZW5lZCB3aGVyZQorICAgYXBwcm9wcmlhdGUuICAiZ2l0IHJlc2V0ICRmcm9tdHJlZSBNYWtlZmlsZSIgcmVxdWlyZXMgJGZyb210cmVlIHRvCisgICBiZSBhbnkgdHJlZSAoaXQgdXNlZCB0byByZXF1aXJlIGl0IHRvIGJlIGEgY29tbWl0KSwgZm9yIGV4YW1wbGUuCisgICAiZ2l0IHJlc2V0IiAod2l0aG91dCBvcHRpb25zIG9yIHBhcmFtZXRlcnMpIHVzZWQgdG8gZXJyb3Igb3V0IHdoZW4KKyAgIHlvdSBkbyBub3QgaGF2ZSBhbnkgY29tbWl0cyBpbiB5b3VyIGhpc3RvcnksIGJ1dCBpdCBub3cgZ2l2ZXMgeW91CisgICBhbiBlbXB0eSBpbmRleCAodG8gbWF0Y2ggbm9uLWV4aXN0ZW50IGNvbW1pdCB5b3UgYXJlIG5vdCBldmVuIG9uKS4KKworICogImdpdCBzdGF0dXMiIHNheXMgd2hhdCBicmFuY2ggaXMgYmVpbmcgYmlzZWN0ZWQgb3IgcmViYXNlZCB3aGVuCisgICBhYmxlLCBub3QganVzdCAiYmlzZWN0aW5nIiBvciAicmViYXNpbmciLgorCisgKiAiZ2l0IHN1Ym1vZHVsZSIgc3RhcnRlZCBsZWFybmluZyBhIG5ldyBtb2RlIHRvIGludGVncmF0ZSB3aXRoIHRoZQorICAgdGlwIG9mIHRoZSByZW1vdGUgYnJhbmNoIChhcyBvcHBvc2VkIHRvIGludGVncmF0aW5nIHdpdGggdGhlIGNvbW1pdAorICAgcmVjb3JkZWQgaW4gdGhlIHN1cGVycHJvamVjdCdzIGdpdGxpbmspLgorCisgKiAiZ2l0IHVwbG9hZC1wYWNrIiB3aGljaCBpbXBsZW1lbnRzIHRoZSBzZXJ2aWNlICJscy1yZW1vdGUiIGFuZAorICAgImZldGNoIiB0YWxrIHRvIGNhbiBiZSB0b2xkIHRvIGhpZGUgcmVmIGhpZXJhcmNoaWVzIHRoZSBzZXJ2ZXIKKyAgIHNpZGUgaW50ZXJuYWxseSB1c2VzIChhbmQgdGhhdCBjbGllbnRzIGhhdmUgbm8gYnVzaW5lc3MgbGVhcm5pbmcKKyAgIGFib3V0KSB3aXRoIHRyYW5zZmVyLmhpZGVyZWZzIGNvbmZpZ3VyYXRpb24uCisKKworRm9yZWlnbiBJbnRlcmZhY2UKKworICogImdpdCBmYXN0LWV4cG9ydCIgaGFzIGJlZW4gdXBkYXRlZCBmb3IgaXRzIHVzZSBpbiB0aGUgY29udGV4dCBvZgorICAgdGhlIHJlbW90ZSBoZWxwZXIgaW50ZXJmYWNlLgorCisgKiBBIG5ldyByZW1vdGUgaGVscGVyIHRvIGludGVyYWN0IHdpdGggYnpyIGhhcyBiZWVuIGFkZGVkIHRvIGNvbnRyaWIvLgorCisgKiAiZ2l0IHA0IiBnb3QgdmFyaW91cyBidWdmaXhlcyBhcm91bmQgaXRzIGJyYW5jaCBoYW5kbGluZy4gIEl0IGlzCisgICBhbHNvIG1hZGUgdXNhYmxlIHdpdGggUHl0aG9uIDIuNC8yLjUuICBJbiBhZGRpdGlvbiwgaXRzIHZhcmlvdXMKKyAgIHBvcnRhYmlsaXR5IGlzc3VlcyBmb3IgQ3lnd2luIGhhdmUgYmVlbiBhZGRyZXNzZWQuCisKKyAqIFRoZSByZW1vdGUgaGVscGVyIHRvIGludGVyYWN0IHdpdGggSGcgaW4gY29udHJpYi8gaGFzIHNlZW4gYSBmZXcKKyAgIGZpeGVzLgorCisKK1BlcmZvcm1hbmNlLCBJbnRlcm5hbCBJbXBsZW1lbnRhdGlvbiwgZXRjLgorCisgKiAiZ2l0IGZzY2siIGhhcyBiZWVuIHRhdWdodCB0byBiZSBwaWNraWVyIGFib3V0IGVudHJpZXMgaW4gdHJlZQorICAgb2JqZWN0cyB0aGF0IHNob3VsZCBub3QgYmUgdGhlcmUsIGUuZy4gIi4iLCAiLmdpdCIsIGFuZCAiLi4iLgorCisgKiBNYXRjaGluZyBwYXRocyB3aXRoIGNvbW1vbiBmb3JtcyBvZiBwYXRoc3BlY3MgdGhhdCBjb250YWluIHdpbGRjYXJkCisgICBjaGFyYWN0ZXJzIGhhcyBiZWVuIG9wdGltaXplZCBmdXJ0aGVyLgorCisgKiBXZSBzdG9wcGVkIHBheWluZyBhdHRlbnRpb24gdG8gJEdJVF9DT05GSUcgZW52aXJvbm1lbnQgdGhhdCBwb2ludHMKKyAgIGF0IGEgc2luZ2xlIGNvbmZpZ3VyYXRpb24gZmlsZSBmcm9tIGFueSBjb21tYW5kIG90aGVyIHRoYW4gImdpdCBjb25maWciCisgICBxdWl0ZSBhIHdoaWxlIGFnbywgYnV0ICJnaXQgY2xvbmUiIGludGVybmFsbHkgc2V0LCBleHBvcnRlZCwgYW5kCisgICB0aGVuIHVuZXhwb3J0ZWQgdGhlIHZhcmlhYmxlIGR1cmluZyBpdHMgb3BlcmF0aW9uIHVubmVjZXNzYXJpbHkuCisKKyAqICJnaXQgcmVzZXQiIGludGVybmFscyBoYXMgYmVlbiByZXdvcmtlZCBhbmQgc2hvdWxkIGJlIGZhc3RlciBpbgorICAgZ2VuZXJhbC4gV2UgdHJpZWQgdG8gYmUgY2FyZWZ1bCBub3QgdG8gYnJlYWsgYW55IGJlaGF2aW91ciBidXQKKyAgIHRoZXJlIGNvdWxkIGJlIGNvcm5lciBjYXNlcywgZXNwZWNpYWxseSB3aGVuIHJ1bm5pbmcgdGhlIGNvbW1hbmQKKyAgIGZyb20gYSBjb25mbGljdGVkIHN0YXRlLCB0aGF0IHdlIG1heSBoYXZlIG1pc3NlZC4KKworICogVGhlIGltcGxlbWVudGF0aW9uIG9mICJpbWFwLXNlbmQiIGhhcyBiZWVuIHVwZGF0ZWQgdG8gcmV1c2UgeG1sCisgICBxdW90aW5nIGNvZGUgZnJvbSBodHRwLXB1c2ggY29kZXBhdGgsIGFuZCBsb3N0IGEgbG90IG9mIHVudXNlZAorICAgY29kZS4KKworICogVGhlcmUgaXMgYSBzaW1wbGUtbWluZGVkIGNoZWNrZXIgZm9yIHRoZSB0ZXN0IHNjcmlwdHMgaW4gdC8KKyAgIGRpcmVjdG9yeSB0byBjYXRjaCBtb3N0IGNvbW1vbiBtaXN0YWtlcyAoaXQgaXMgbm90IGVuYWJsZWQgYnkKKyAgIGRlZmF1bHQpLgorCisgKiBZb3UgY2FuIGJ1aWxkIHdpdGggVVNFX1dJTERNQVRDSD1ZZXNQbGVhc2UgdG8gdXNlIGEgcmVwbGFjZW1lbnQKKyAgIGltcGxlbWVudGF0aW9uIG9mIHBhdHRlcm4gbWF0Y2hpbmcgbG9naWMgdXNlZCBmb3IgcGF0aG5hbWUtbGlrZQorICAgdGhpbmdzLCBlLmcuIHJlZm5hbWVzIGFuZCBwYXRocyBpbiB0aGUgcmVwb3NpdG9yeS4gIFRoaXMgbmV3CisgICBpbXBsZW1lbnRhdGlvbiBpcyBub3QgZXhwZWN0ZWQgY2hhbmdlIHRoZSBleGlzdGluZyBiZWhhdmlvdXIgb2YgR2l0CisgICBpbiB0aGlzIHJlbGVhc2UsIGV4Y2VwdCBmb3IgImdpdCBmb3ItZWFjaC1yZWYiIHdoZXJlIHlvdSBjYW4gbm93CisgICBzYXkgInJlZnMvKiovbWFzdGVyIiBhbmQgbWF0Y2ggd2l0aCBib3RoIHJlZnMvaGVhZHMvbWFzdGVyIGFuZAorICAgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIuICBXZSBwbGFuIHRvIHVzZSB0aGlzIG5ldyBpbXBsZW1lbnRhdGlvbgorICAgaW4gd2lkZXIgcGxhY2VzIChlLmcuICJnaXQgbHMtZmlsZXMgJyoqL01ha2VmaWxlJyBtYXkgZmluZCBNYWtlZmlsZQorICAgYXQgdGhlIHRvcC1sZXZlbCwgYW5kICJnaXQgbG9nICcqKi90Ki5zaCciIG1heSBmaW5kIGNvbW1pdHMgdGhhdAorICAgdG91Y2ggYSBzaGVsbCBzY3JpcHQgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCAidCIgYXQgYW55IGxldmVsKSBpbgorICAgZnV0dXJlIHZlcnNpb25zIG9mIEdpdCwgYnV0IHdlIGFyZSBub3QgdGhlcmUgeWV0LiAgQnkgYnVpbGRpbmcgd2l0aAorICAgVVNFX1dJTERNQVRDSCwgdXNpbmcgdGhlIHJlc3VsdGluZyBHaXQgZGFpbHkgYW5kIHJlcG9ydGluZyB3aGVuIHlvdQorICAgZmluZCBicmVha2FnZXMsIHlvdSBjYW4gaGVscCB1cyBnZXQgY2xvc2VyIHRvIHRoYXQgZ29hbC4KKworICogU29tZSByZWltcGxlbWVudGF0aW9ucyBvZiBHaXQgZG8gbm90IHdyaXRlIGFsbCB0aGUgc3RhdCBpbmZvIGJhY2sKKyAgIHRvIHRoZSBpbmRleCBkdWUgdG8gdGhlaXIgaW1wbGVtZW50YXRpb24gbGltaXRhdGlvbnMgKGUuZy4gamdpdCkuCisgICBBIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGNhbiB0ZWxsIEdpdCB0byBpZ25vcmUgY2hhbmdlcyB0byBtb3N0IG9mCisgICB0aGUgc3RhdCBmaWVsZHMgYW5kIG9ubHkgcGF5IGF0dGVudGlvbiB0byBtdGltZSBhbmQgc2l6ZSwgd2hpY2gKKyAgIHRoZXNlIGltcGxlbWVudGF0aW9ucyBjYW4gcmVsaWFibHkgdXBkYXRlLiAgVGhpcyBjYW4gYmUgdXNlZCB0bworICAgYXZvaWQgZXhjZXNzaXZlIHJldmFsaWRhdGlvbiBvZiBjb250ZW50cy4KKworICogU29tZSBwbGF0Zm9ybXMgc2hpcCB3aXRoIG9sZCB2ZXJzaW9uIG9mIGV4cGF0IHdoZXJlIHhtbHBhcnNlLmgKKyAgIG5lZWRzIHRvIGJlIGluY2x1ZGVkIGluc3RlYWQgb2YgZXhwYXQuaDsgdGhlIGJ1aWxkIHByb2NlZHVyZSBoYXMKKyAgIGJlZW4gdGF1Z2h0IGFib3V0IHRoaXMuCisKKyAqICJtYWtlIGNsZWFuIiBvbiBwbGF0Zm9ybXMgdGhhdCBjYW5ub3QgY29tcHV0ZSBoZWFkZXIgZGVwZW5kZW5jaWVzCisgICBvbiB0aGUgZmx5IGRpZCBub3Qgd29yayB3aXRoIGltcGxlbWVudGF0aW9ucyBvZiAicm0iIHRoYXQgZG8gbm90CisgICBsaWtlIGFuIGVtcHR5IGFyZ3VtZW50IGxpc3QuCisKK0Fsc28gY29udGFpbnMgbWlub3IgZG9jdW1lbnRhdGlvbiB1cGRhdGVzIGFuZCBjb2RlIGNsZWFuLXVwcy4KKworCitGaXhlcyBzaW5jZSB2MS44LjEKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitVbmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLCBhbGwgdGhlIGZpeGVzIHNpbmNlIHYxLjguMSBpbiB0aGUgbWFpbnRlbmFuY2UKK3RyYWNrIGFyZSBjb250YWluZWQgaW4gdGhpcyByZWxlYXNlIChzZWUgcmVsZWFzZSBub3RlcyB0byB0aGVtIGZvcgorZGV0YWlscykuCisKKyAqIEFuIGVsZW1lbnQgb24gR0lUX0NFSUxJTkdfRElSRUNUT1JJRVMgbGlzdCB0aGF0IGRvZXMgbm90IG5hbWUgdGhlCisgICByZWFsIHBhdGggdG8gYSBkaXJlY3RvcnkgKGkuZS4gYSBzeW1ib2xpYyBsaW5rKSBjb3VsZCBoYXZlIGNhdXNlZAorICAgdGhlIEdJVF9ESVIgZGlzY292ZXJ5IGxvZ2ljIHRvIGVzY2FwZSB0aGUgY2VpbGluZy4KKworICogV2hlbiBhdHRlbXB0aW5nIHRvIHJlYWQgdGhlIFhERy1zdHlsZSAkSE9NRS8uY29uZmlnL2dpdC9jb25maWcgYW5kCisgICBmaW5kaW5nIHRoYXQgJEhPTUUvLmNvbmZpZy9naXQgaXMgYSBmaWxlLCB3ZSBnYXZlIGEgd3JvbmcgZXJyb3IKKyAgIG1lc3NhZ2UsIGluc3RlYWQgb2YgdHJlYXRpbmcgdGhlIGNhc2UgYXMgImEgY3VzdG9tIGNvbmZpZyBmaWxlIGRvZXMKKyAgIG5vdCBleGlzdCB0aGVyZSIgYW5kIG1vdmluZyBvbi4KKworICogVGhlIGJlaGF2aW91ciB2aXNpYmxlIHRvIHRoZSBlbmQgdXNlcnMgd2FzIGNvbmZ1c2luZywgd2hlbiB0aGV5CisgICBhdHRlbXB0IHRvIGtpbGwgYSBwcm9jZXNzIHNwYXduZWQgaW4gdGhlIGVkaXRvciB0aGF0IHdhcyBpbiB0dXJuCisgICBsYXVuY2hlZCBieSBHaXQgd2l0aCBTSUdJTlQgKG9yIFNJR1FVSVQpLCBhcyBHaXQgd291bGQgY2F0Y2ggdGhhdAorICAgc2lnbmFsIGFuZCBkaWUuICBXZSBpZ25vcmUgdGhlc2Ugc2lnbmFscyBub3cuCisgICAobWVyZ2UgMDM5OGZjMzQgcGYvZWRpdG9yLWlnbm9yZS1zaWdpbnQgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiBBIGNoaWxkIHByb2Nlc3MgdGhhdCB3YXMga2lsbGVkIGJ5IGEgc2lnbmFsIChlLmcuIFNJR0lOVCkgd2FzCisgICByZXBvcnRlZCBpbiBhbiBpbmNvbnNpc3RlbnQgd2F5IGRlcGVuZGluZyBvbiBob3cgdGhlIHByb2Nlc3Mgd2FzCisgICBzcGF3bmVkIGJ5IHVzLCB3aXRoIG9yIHdpdGhvdXQgYSBzaGVsbCBpbiBiZXR3ZWVuLgorCisgKiBBZnRlciBmYWlsaW5nIHRvIGNyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlIHVzaW5nIG1rc3RlbXAoKSwgZmFpbGluZworICAgcGF0aG5hbWUgd2FzIG5vdCByZXBvcnRlZCBjb3JyZWN0bHkgb24gc29tZSBwbGF0Zm9ybXMuCisKKyAqIFdlIHVzZWQgdG8gc3R1ZmYgInVzZXJAIiBhbmQgdGhlbiBhcHBlbmQgd2hhdCB3ZSByZWFkIGZyb20KKyAgIC9ldGMvbWFpbG5hbWUgdG8gY29tZSB1cCB3aXRoIGEgZGVmYXVsdCBlLW1haWwgaWRlbnQsIGJ1dCBhIGJ1ZworICAgbG9zdCB0aGUgInVzZXJAIiBwYXJ0LgorCisgKiBUaGUgYXR0cmlidXRlIG1lY2hhbmlzbSBkaWRuJ3QgYWxsb3cgbGltaXRpbmcgYXR0cmlidXRlcyB0byBiZQorICAgYXBwbGllZCB0byBvbmx5IGEgc2luZ2xlIGRpcmVjdG9yeSBpdHNlbGYgd2l0aCAicGF0aC8iIGxpa2UgdGhlCisgICBleGNsdWRlIG1lY2hhbmlzbSBkb2VzLiAgVGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhpcyB0aGF0CisgICB3YXMgbWVyZ2VkIHRvICdtYWludCcgYW5kIDEuOC4xLjIgd2FzIHdpdGggYSBzZXZlcmUgcGVyZm9ybWFuY2UKKyAgIGRlZ3JhZGF0aW9ucyBhbmQgbmVlZHMgdG8gbWVyZ2UgYSBmaXgtdXAgdG9waWMuCisKKyAqIFRoZSBzbWFydCBIVFRQIGNsaWVudHMgZm9yZ290IHRvIHZlcmlmeSB0aGUgY29udGVudC10eXBlIHRoYXQgY29tZXMKKyAgIGJhY2sgZnJvbSB0aGUgc2VydmVyIHNpZGUgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlcXVlc3QgaXMgYmVpbmcKKyAgIGhhbmRsZWQgcHJvcGVybHkuCisKKyAqICJnaXQgYW0iIGRpZCBub3QgcGFyc2UgZGF0ZXN0YW1wIGNvcnJlY3RseSBmcm9tIEhnIGdlbmVyYXRlZCBwYXRjaCwKKyAgIHdoZW4gaXQgaXMgcnVuIGluIGEgbG9jYWxlIG91dHNpZGUgQyAob3IgZW4pLgorCisgKiAiZ2l0IGFwcGx5IiBtaXNiZWhhdmVkIHdoZW4gZml4aW5nIHdoaXRlc3BhY2UgYnJlYWthZ2VzIGJ5IHJlbW92aW5nCisgICBleGNlc3MgdHJhaWxpbmcgYmxhbmsgbGluZXMuCisKKyAqICJnaXQgYXBwbHkgLS1zdW1tYXJ5IiBoYXMgYmVlbiB0YXVnaHQgdG8gbWFrZSBzdXJlIHRoZSBzaW1pbGFyaXR5CisgICB2YWx1ZSBzaG93biBpbiBpdHMgb3V0cHV0IGlzIHNlbnNpYmxlLCBldmVuIHdoZW4gdGhlIGlucHV0IGhhZCBhCisgICBib2d1cyB2YWx1ZS4KKworICogQSB0YXIgYXJjaGl2ZSBjcmVhdGVkIGJ5ICJnaXQgYXJjaGl2ZSIgcmVjb3JkZWQgYSBkaXJlY3RvcnkgaW4gYQorICAgd2F5IHRoYXQgbWFkZSBOZXRCU0QncyBpbXBsZW1lbnRhdGlvbiBvZiAidGFyIiBzb21ldGltZXMgdW5oYXBweS4KKworICogImdpdCBhcmNoaXZlIiBkaWQgbm90IHJlY29yZCB1bmNvbXByZXNzZWQgc2l6ZSBpbiB0aGUgaGVhZGVyIHdoZW4KKyAgIHN0cmVhbWluZyBhIHppcCBhcmNoaXZlLCB3aGljaCBjb25mdXNlZCBzb21lIGltcGxlbWVudGF0aW9ucyBvZiB1bnppcC4KKworICogImdpdCBhcmNoaXZlIiBkaWQgbm90IHBhcnNlIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGluIHRhci4qIG5hbWVzcGFjZQorICAgY29ycmVjdGx5LgorICAgKG1lcmdlIGIzODczYzMgamsvY29uZmlnLXBhcnNpbmctY2xlYW51cCBsYXRlciB0byBtYWludCkuCisKKyAqIEF0dGVtcHQgdG8gImJyYW5jaCAtLWVkaXQtZGVzY3JpcHRpb24iIGFuIGV4aXN0aW5nIGJyYW5jaCwgd2hpbGUKKyAgIGJlaW5nIG9uIGEgZGV0YWNoZWQgSEVBRCwgZXJyb3JlZCBvdXQuCisKKyAqICJnaXQgY2xlYW4iIHNob3dlZCB3aGF0IGl0IHdhcyBnb2luZyB0byBkbywgYnV0IHNvbWV0aW1lcyBlbmQgdXAKKyAgIGZpbmRpbmcgdGhhdCBpdCB3YXMgbm90IGFsbG93ZWQgdG8gZG8gc28sIHdoaWNoIHJlc3VsdGVkIGluIGEKKyAgIGNvbmZ1c2luZyBvdXRwdXQgKGUuZy4gYWZ0ZXIgc2F5aW5nIHRoYXQgaXQgd2lsbCByZW1vdmUgYW4KKyAgIHVudHJhY2tlZCBkaXJlY3RvcnksIGl0IGZvdW5kIGFuIGVtYmVkZGVkIGdpdCByZXBvc2l0b3J5IHRoZXJlCisgICB3aGljaCBpdCBpcyBub3QgYWxsb3dlZCB0byByZW1vdmUpLiAgSXQgbm93IHBlcmZvcm1zIHRoZSBhY3Rpb25zCisgICBhbmQgdGhlbiByZXBvcnRzIHRoZSBvdXRjb21lIG1vcmUgZmFpdGhmdWxseS4KKworICogV2hlbiAiZ2l0IGNsb25lIC0tc2VwYXJhdGUtZ2l0LWRpcj0kb3Zlcl90aGVyZSIgaXMgaW50ZXJydXB0ZWQsIGl0CisgICBmYWlsZWQgdG8gcmVtb3ZlIHRoZSByZWFsIGxvY2F0aW9uIG9mIHRoZSAkR0lUX0RJUiBpdCBjcmVhdGVkLgorICAgVGhpcyB3YXMgbW9zdCB2aXNpYmxlIHdoZW4gaW50ZXJydXB0aW5nIGEgc3VibW9kdWxlIHVwZGF0ZS4KKworICogImdpdCBjdnNpbXBvcnQiIG1pc2hhbmRsZWQgdGltZXN0YW1wcyBhdCBEU1QgYm91bmRhcnkuCisKKyAqIFdlIHVzZWQgdG8gaGF2ZSBhbiBhcmJpdHJhcnkgMzIgbGltaXQgZm9yIGNvbWJpbmVkIGRpZmYgaW5wdXQsCisgICByZXN1bHRpbmcgaW4gaW5jb3JyZWN0IG51bWJlciBvZiBsZWFkaW5nIGNvbG9ucyBzaG93biB3aGVuIHNob3dpbmcKKyAgIHRoZSAiLS1yYXcgLS1jYyIgb3V0cHV0LgorCisgKiAiZ2l0IGZldGNoIC0tZGVwdGgiIHdhcyBicm9rZW4gaW4gYXQgbGVhc3QgdGhyZWUgd2F5cy4gIFRoZQorICAgcmVzdWx0aW5nIGhpc3Rvcnkgd2FzIGRlZXBlciB0aGFuIHNwZWNpZmllZCBieSBvbmUgY29tbWl0LCBpdCB3YXMKKyAgIHVuY2xlYXIgaG93IHRvIHdpcGUgdGhlIHNoYWxsb3duZXNzIG9mIHRoZSByZXBvc2l0b3J5IHdpdGggdGhlCisgICBjb21tYW5kLCBhbmQgZG9jdW1lbnRhdGlvbiB3YXMgbWlzbGVhZGluZy4KKyAgIChtZXJnZSBjZmI3MGUxIG5kL2ZldGNoLWRlcHRoLWlzLWJyb2tlbiBsYXRlciB0byBtYWludCkuCisKKyAqICJnaXQgbG9nIC0tYWxsIC1wIiB0aGF0IHdhbGtlZCByZWZzL25vdGVzL3RleHRjb252LyByZWYgY2FuIGxhdGVyCisgICB0cnkgdG8gdXNlIHRoZSB0ZXh0Y29udiBkYXRhIGluY29ycmVjdGx5IGFmdGVyIGl0IGdldHMgZnJlZWQuCisKKyAqIFdlIGZvcmdvdCB0byBjbG9zZSB0aGUgZmlsZSBkZXNjcmlwdG9yIHJlYWRpbmcgZnJvbSAiZ3BnIiBvdXRwdXQsCisgICBraWxsaW5nICJnaXQgbG9nIC0tc2hvdy1zaWduYXR1cmUiIG9uIGEgbG9uZyBoaXN0b3J5LgorCisgKiBUaGUgd2F5ICJnaXQgc3ZuIiBhc2tlZCBmb3IgcGFzc3dvcmQgdXNpbmcgU1NIX0FTS1BBU1MgYW5kCisgICBHSVRfQVNLUEFTUyB3YXMgbm90IGluIGxpbmUgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLgorCisgKiBUaGUgLS1ncmFwaCBjb2RlIGZlbGwgaW50byBpbmZpbml0ZSBsb29wIHdoZW4gYXNrZWQgdG8gZG8gd2hhdCB0aGUKKyAgIGNvZGUgZGlkIG5vdCBleHBlY3QuCisKKyAqIGh0dHAgdHJhbnNwb3J0IHdhcyB3cm9uZyB0byBhc2sgZm9yIHRoZSB1c2VybmFtZSB3aGVuIHRoZQorICAgYXV0aGVudGljYXRpb24gaXMgZG9uZSBieSBjZXJ0aWZpY2F0ZSBpZGVudGl0eS4KKworICogImdpdCBwYWNrLXJlZnMiIHRoYXQgcmFuIGluIHBhcmFsbGVsIHRvIGFub3RoZXIgcHJvY2VzcyB0aGF0CisgICBjcmVhdGVkIG5ldyByZWZzIGhhZCBhIG5hc3R5IHJhY2UuCisKKyAqIFJlYmFzaW5nIHRoZSBoaXN0b3J5IG9mIHN1cGVycHJvamVjdCB3aXRoIGNoYW5nZSBpbiB0aGUgc3VibW9kdWxlCisgICBoYXMgYmVlbiBicm9rZW4gc2luY2UgdjEuNy4xMi4KKworICogQWZ0ZXIgImdpdCBhZGQgLU4iIGFuZCB0aGVuIHdyaXRpbmcgYSB0cmVlIG9iamVjdCBvdXQgb2YgdGhlCisgICBpbmRleCwgdGhlIGNhY2hlLXRyZWUgZGF0YSBzdHJ1Y3R1cmUgZ290IGNvcnJ1cHRlZC4KKworICogImdpdCBjbG9uZSIgdXNlZCB0byBhbGxvdyAtLWJhcmUgYW5kIC0tc2VwYXJhdGUtZ2l0LWRpcj0kdGhlcmUKKyAgIG9wdGlvbnMgYXQgdGhlIHNhbWUgdGltZSwgd2hpY2ggd2FzIG5vbnNlbnNpY2FsLgorCisgKiAiZ2l0IHJlYmFzZSAtLXByZXNlcnZlLW1lcmdlcyIgbG9zdCBlbXB0eSBtZXJnZXMgaW4gcmVjZW50IHZlcnNpb25zCisgICBvZiBHaXQuCisKKyAqICJnaXQgbWVyZ2UgLS1uby1lZGl0IiBjb21wdXRlZCB3aG8gd2VyZSBpbnZvbHZlZCBpbiB0aGUgd29yayBkb25lCisgICBvbiB0aGUgc2lkZSBicmFuY2gsIGV2ZW4gdGhvdWdoIHRoYXQgaW5mb3JtYXRpb24gaXMgdG8gYmUgZGlzY2FyZGVkCisgICB3aXRob3V0IGdldHRpbmcgc2VlbiBpbiB0aGUgZWRpdG9yLgorCisgKiAiZ2l0IG1lcmdlIiBzdGFydGVkIGNhbGxpbmcgcHJlcGFyZS1jb21taXQtbXNnIGhvb2sgbGlrZSAiZ2l0CisgICBjb21taXQiIGRvZXMgc29tZSB0aW1lIGFnbywgYnV0IGZvcmdvdCB0byBwYXkgYXR0ZW50aW9uIHRvIHRoZSBleGl0CisgICBzdGF0dXMgb2YgdGhlIGhvb2suCisKKyAqIEEgZmFpbHVyZSB0byBwdXNoIGR1ZSB0byBub24tZmYgd2hpbGUgb24gYW4gdW5ib3JuIGJyYW5jaAorICAgZGVyZWZlcmVuY2VkIGEgTlVMTCBwb2ludGVyIHdoZW4gc2hvd2luZyBhbiBlcnJvciBtZXNzYWdlLgorCisgKiBXaGVuIHVzZXJzIHNwZWxsICJjYzoiIGluIGxvd2VyY2FzZSBpbiB0aGUgZmFrZSAiaGVhZGVyIiBpbiB0aGUKKyAgIHRyYWlsZXIgcGFydCwgImdpdCBzZW5kLWVtYWlsIiBmYWlsZWQgdG8gcGljayB1cCB0aGUgYWRkcmVzc2VzIGZyb20KKyAgIHRoZXJlLiBBcyBlLW1haWwgaGVhZGVycyBmaWVsZCBuYW1lcyBhcmUgY2FzZSBpbnNlbnNpdGl2ZSwgdGhpcworICAgc2NyaXB0IHNob3VsZCBmb2xsb3cgc3VpdCBhbmQgdHJlYXQgImNjOiIgYW5kICJDYzoiIHRoZSBzYW1lIHdheS4KKworICogT3V0cHV0IGZyb20gImdpdCBzdGF0dXMgLS1pZ25vcmVkIiBzaG93ZWQgYW4gdW5leHBlY3RlZCBpbnRlcmFjdGlvbgorICAgd2l0aCAiLS11bnRyYWNrZWQiLgorCisgKiAiZ2l0d2ViIiwgd2hlbiBzb3J0aW5nIGJ5IGFnZSB0byBzaG93IHJlcG9zaXRvcmllcyB3aXRoIG5ldworICAgYWN0aXZpdGllcyBmaXJzdCwgdXNlZCB0byBzb3J0IHJlcG9zaXRvcmllcyB3aXRoIGFic29sdXRlbHkKKyAgIG5vdGhpbmcgaW4gaXQgZWFybHksIHdoaWNoIHdhcyBub3QgdmVyeSB1c2VmdWwuCisKKyAqICJnaXR3ZWIiJ3MgY29kZSB0byBzYW5pdGl6ZSBjb250cm9sIGNoYXJhY3RlcnMgYmVmb3JlIHBhc3NpbmcgaXQgdG8KKyAgICJoaWdobGlnaHQiIGZpbHRlciBsb3N0IGtub3duLXRvLWJlLXNhZmUgY29udHJvbCBjaGFyYWN0ZXJzIGJ5CisgICBtaXN0YWtlLgorCisgKiAiZ2l0d2ViIiBwYWdlcyBzZXJ2ZWQgb3ZlciBIVFRQUywgd2hlbiBjb25maWd1cmVkIHRvIHNob3cgcGljb24gb3IKKyAgIGdyYXZhdGFyLCByZWZlcnJlZCB0byB0aGVzZSBleHRlcm5hbCByZXNvdXJjZXMgdG8gYmUgZmV0Y2hlZCB2aWEKKyAgIEhUVFAsIHJlc3VsdGluZyBpbiBtaXhlZCBjb250ZW50cyB3YXJuaW5nIGluIGJyb3dzZXJzLgorCisgKiBXaGVuIGEgbGluZSB0byBiZSB3cmFwcGVkIGhhcyBhIHNvbGlkIHJ1biBvZiBub24gc3BhY2UgY2hhcmFjdGVycworICAgd2hvc2UgbGVuZ3RoIGV4YWN0bHkgaXMgdGhlIHdyYXAgd2lkdGgsICJnaXQgc2hvcnRsb2cgLXciIGZhaWxlZAorICAgdG8gYWRkIGEgbmV3bGluZSBhZnRlciBzdWNoIGEgbGluZS4KKworICogQ29tbWFuZCBsaW5lIGNvbXBsZXRpb24gbGVha2VkIGFuIHVubmVjZXNzYXJ5IGVycm9yIG1lc3NhZ2Ugd2hpbGUKKyAgIGxvb2tpbmcgZm9yIHBvc3NpYmxlIG1hdGNoZXMgd2l0aCBwYXRocyBpbiA8dHJlZS1pc2g+LgorCisgKiBDb21tYW5kIGxpbmUgY29tcGxldGlvbiBmb3IgInRjc2giIGVtaXR0ZWQgYW4gdW53YW50ZWQgc3BhY2UKKyAgIGFmdGVyIGNvbXBsZXRpbmcgYSBzaW5nbGUgZGlyZWN0b3J5IG5hbWUuCisKKyAqIENvbW1hbmQgbGluZSBjb21wbGV0aW9uIGNvZGUgd2FzIGluYWR2ZXJ0ZW50bHkgbWFkZSBpbmNvbXBhdGlibGUgd2l0aAorICAgb2xkZXIgdmVyc2lvbnMgb2YgYmFzaCBieSB1c2luZyBhIG5ld2VyIGFycmF5IG5vdGF0aW9uLgorCisgKiAiZ2l0IHB1c2giIHdhcyB0YXVnaHQgdG8gcmVmdXNlIHVwZGF0aW5nIHRoZSBicmFuY2ggdGhhdCBpcworICAgY3VycmVudGx5IGNoZWNrZWQgb3V0IGxvbmcgdGltZSBhZ28sIGJ1dCB0aGUgdXNlciBtYW51YWwgd2FzIGxlZnQKKyAgIHN0YWxlLgorICAgKG1lcmdlIDUwOTk1ZWQgd2svbWFuLWRlbnktY3VycmVudC1icmFuY2gtaXMtZGVmYXVsdC10aGVzZS1kYXlzIGxhdGVyIHRvIG1haW50KS4KKworICogU29tZSBzaGVsbHMgZG8gbm90IGJlaGF2ZSBjb3JyZWN0bHkgd2hlbiBJRlMgaXMgdW5zZXQ7IHdvcmsgaXQKKyAgIGFyb3VuZCBieSBleHBsaWNpdGx5IHNldHRpbmcgaXQgdG8gdGhlIGRlZmF1bHQgdmFsdWUuCisKKyAqIFNvbWUgc2NyaXB0ZWQgcHJvZ3JhbXMgd3JpdHRlbiBpbiBQeXRob24gZGlkIG5vdCBnZXQgdXBkYXRlZCB3aGVuCisgICBQWVRIT05fUEFUSCBjaGFuZ2VkLgorICAgKGNoZXJyeS1waWNrIDk2YTQ2NDdmY2E1NDAzMTk3NGNkNmFkMSBsYXRlciB0byBtYWludCkuCisKKyAqIFdoZW4gYXV0b2NvbmYgaXMgdXNlZCwgYW55IGJ1aWxkIG9uIGEgZGlmZmVyZW50IGNvbW1pdCBhbHdheXMgcmFuCisgICAiY29uZmlnLnN0YXR1cyAtLXJlY2hlY2siIGV2ZW4gd2hlbiB1bm5lY2Vzc2FyeS4KKworICogQSBmaXggd2FzIGFkZGVkIHRvIHRoZSBidWlsZCBwcm9jZWR1cmUgdG8gd29yayBhcm91bmQgYnVnZ3kKKyAgIHZlcnNpb25zIG9mIGNjYWNoZSBicm9rZSB0aGUgYXV0by1nZW5lcmF0aW9uIG9mIGRlcGVuZGVuY2llcywgd2hpY2gKKyAgIHVuZm9ydHVuYXRlbHkgaXMgc3RpbGwgcmVsZXZhbnQgYmVjYXVzZSBzb21lIHBlb3BsZSB1c2UgYW5jaWVudAorICAgZGlzdHJvcy4KKworICogVGhlIGF1dG9jb25mIHN1YnN5c3RlbSBwYXNzZWQgLS1tYW5kaXIgZG93biB0byBnZW5lcmF0ZWQKKyAgIGNvbmZpZy5tYWsuYXV0b2dlbiBidXQgZm9yZ290IHRvIGRvIHRoZSBzYW1lIGZvciAtLWh0bWxkaXIuCisgICAobWVyZ2UgNTVkOWJmMCBjdC9hdXRvY29uZi1odG1sZGlyIGxhdGVyIHRvIG1haW50KS4KKworICogQSBjaGFuZ2UgbWFkZSBvbiB2MS44LjEueCBtYWludGVuYW5jZSB0cmFjayBoYWQgYSBuYXN0eSByZWdyZXNzaW9uCisgICB0byBicmVhayB0aGUgYnVpbGQgd2hlbiBhdXRvY29uZiBpcyB1c2VkLgorICAgKG1lcmdlIDdmMWI2OTcgam4vbGVzcy1yZWNvbmZpZ3VyZSBsYXRlciB0byBtYWludCkuCisKKyAqIFdlIGhhdmUgYmVlbiBjYXJyeWluZyBhIHRyYW5zbGF0ZWQgYW5kIGxvbmctdW5tYWludGFpbmVkIGNvcHkgb2YgYW4KKyAgIG9sZCB2ZXJzaW9uIG9mIHRoZSB0dXRvcmlhbDsgcmVtb3ZlZC4KKworICogdDAwNTAgaGFkIHRlc3RzIGV4cGVjdGluZyBmYWlsdXJlcyBmcm9tIGEgYnVnIHRoYXQgd2FzIGZpeGVkIHNvbWUKKyAgIHRpbWUgYWdvLgorCisgKiB0NDAxNCwgdDk1MDIgYW5kIHQwMjAwIHRlc3RzIGhhZCB2YXJpb3VzIHBvcnRhYmlsaXR5IGlzc3VlcyB0aGF0CisgICBicm9rZSBvbiBPcGVuQlNELgorCisgKiB0OTAyMCBhbmQgdDM2MDAgdGVzdHMgaGFkIHZhcmlvdXMgcG9ydGFiaWxpdHkgaXNzdWVzLgorCisgKiB0OTIwMCBydW5zICJjdnMgaW5pdCIgb24gYSBkaXJlY3RvcnkgdGhhdCBhbHJlYWR5IGV4aXN0cywgYnV0IGEKKyAgIHBsYXRmb3JtIGNhbiBjb25maWd1cmUgdGhpcyBmYWlsIGZvciB0aGUgY3VycmVudCB1c2VyIChlLmcuIHlvdQorICAgbmVlZCB0byBiZSBpbiB0aGUgY3ZzYWRtaW4gZ3JvdXAgb24gTmV0QlNEIDYuMCkuCisKKyAqIHQ5MDIwIGFuZCB0OTgxMCBoYWQgYSBmZXcgbm9uLXBvcnRhYmxlIHNoZWxsIHNjcmlwdCBjb25zdHJ1Y3QuCisKKyAqIFNjcmlwdHMgdG8gdGVzdCBiYXNoIGNvbXBsZXRpb24gd2FzIGluaGVyZW50bHkgZmxha3kgYXMgaXQgd2FzCisgICBhZmZlY3RlZCBieSB3aGF0ZXZlciByYW5kb20gdGhpbmdzIHRoZSB1c2VyIG1heSBoYXZlIG9uICRQQVRILgorCisgKiBBbiBlbGVtZW50IG9uIEdJVF9DRUlMSU5HX0RJUkVDVE9SSUVTIGNvdWxkIGJlIGEgImxvZ2ljYWwiIHBhdGhuYW1lCisgICB0aGF0IHVzZXMgYSBzeW1ib2xpYyBsaW5rIHRvIHBvaW50IGF0IHNvbWV3aGVyZSBlbHNlIChlLmcuIC9ob21lL21lCisgICB0aGF0IHBvaW50cyBhdCAvbmV0L2hvc3QvZXhwb3J0L2hvbWUvbWUsIGFuZCB0aGUgbGF0dGVyIGRpcmVjdG9yeQorICAgaXMgYXV0b21vdW50ZWQpLiBFYXJsaWVyIHdoZW4gR2l0IHNhdyBzdWNoIGEgcGF0aG5hbWUgZS5nLiAvaG9tZS9tZQorICAgb24gdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlICJjZWlsaW5nIiBtZWNoYW5pc20gZGlkIG5vdCB0YWtlCisgICBlZmZlY3QuIFdpdGggdGhpcyByZWxlYXNlICh0aGUgZml4IGhhcyBhbHNvIGJlZW4gbWVyZ2VkIHRvIHRoZQorICAgdjEuOC4xLnggbWFpbnRlbmFuY2Ugc2VyaWVzKSwgZWxlbWVudHMgb24gR0lUX0NFSUxJTkdfRElSRUNUT1JJRVMKKyAgIGFyZSBieSBkZWZhdWx0IGNoZWNrZWQgZm9yIHN1Y2ggYWxpYXNpbmcgY29taW5nIGZyb20gc3ltYm9saWMKKyAgIGxpbmtzLiBBcyB0aGlzIG5lZWRzIHRvIGFjdHVhbGx5IHJlc29sdmUgc3ltYm9saWMgbGlua3MgZm9yIGVhY2gKKyAgIGVsZW1lbnQgb24gdGhlIEdJVF9DRUlMSU5HX0RJUkVDVE9SSUVTLCB5b3UgY2FuIGRpc2FibGUgdGhpcworICAgbWVjaGFuaXNtIGZvciBzb21lIGVsZW1lbnRzIGJ5IGxpc3RpbmcgdGhlbSBhZnRlciBhbiBlbXB0eSBlbGVtZW50CisgICBvbiB0aGUgR0lUX0NFSUxJTkdfRElSRUNUT1JJRVMuIGUuZy4gU2V0dGluZyAvaG9tZS9tZTo6L2hvbWUvaGltIHRvCisgICBHSVRfQ0VJTElOR19ESVJFQ1RPUklFUyBtYWtlcyBHaXQgcmVzb2x2ZSBzeW1ib2xpYyBsaW5rcyBpbgorICAgL2hvbWUvbWUgd2hlbiBjaGVja2luZyBpZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgdW5kZXIgL2hvbWUvbWUsCisgICBidXQgZG9lcyBub3QgZG8gc28gZm9yIC9ob21lL2hpbS4KKyAgIChtZXJnZSA3ZWMzMGFhIG1oL21haW50LWNlaWwtYWJzb2x1dGUgbGF0ZXIgdG8gbWFpbnQpLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMy4xLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjMuMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMzZWExOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjMuMS50eHQKQEAgLTAsMCArMSwxNCBAQAorR2l0IHYxLjguMy4xIFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlcyBzaW5jZSB2MS44LjMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisgKiBXaGVuICRIT01FIGlzIG1pc2NvbmZpZ3VyZWQgdG8gcG9pbnQgYXQgYW4gdW5yZWFkYWJsZSBkaXJlY3RvcnksIHdlCisgICB1c2VkIHRvIGNvbXBsYWluIGFuZCBkaWUuIFRoZSBjaGVjayBoYXMgYmVlbiBsb29zZW5lZC4KKworICogSGFuZGxpbmcgb2YgbmVnYXRpdmUgZXhjbHVkZSBwYXR0ZXJuIGZvciBkaXJlY3RvcmllcyAiIWRpciIgd2FzCisgICBicm9rZW4gaW4gdGhlIHVwZGF0ZSB0byB2MS44LjMuCisKK0Fsc28gY29udGFpbnMgYSBoYW5kZnVsIG9mIHRyaXZpYWwgY29kZSBjbGVhbi11cHMsIGRvY3VtZW50YXRpb24KK3VwZGF0ZXMsIHVwZGF0ZXMgdG8gdGhlIHRlc3Qgc3VpdGUsIGV0Yy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjMuMi50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4zLjIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YWUxNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4zLjIudHh0CkBAIC0wLDAgKzEsNTkgQEAKK0dpdCB2MS44LjMuMiBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlcyBzaW5jZSB2MS44LjMuMQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICogQ2xvbmluZyB3aXRoICJnaXQgY2xvbmUgLS1kZXB0aCBOIiB3aGlsZSBmZXRjaC5mc2Nrb2JqZWN0cyAob3IKKyAgIHRyYW5zZmVyLmZzY2tvYmplY3RzKSBpcyBzZXQgdG8gdHJ1ZSBkaWQgbm90IHRlbGwgdGhlIGN1dC1vZmYKKyAgIHBvaW50cyBvZiB0aGUgc2hhbGxvdyBoaXN0b3J5IHRvIHRoZSBwcm9jZXNzIHRoYXQgdmFsaWRhdGVzIHRoZQorICAgb2JqZWN0cyBhbmQgdGhlIGhpc3RvcnkgcmVjZWl2ZWQsIGNhdXNpbmcgdGhlIHZhbGlkYXRpb24gdG8gZmFpbC4KKworICogImdpdCBjaGVja291dCBmb28iIERXSU1zIHRoZSBpbnRlbmRlZCAidXBzdHJlYW0iIGFuZCB0dXJucyBpdCBpbnRvCisgICAiZ2l0IGNoZWNrb3V0IC10IC1iIGZvbyByZW1vdGVzL29yaWdpbi9mb28iLiBUaGlzIGNvZGVwYXRoIGhhcyBiZWVuCisgICB1cGRhdGVkIHRvIGNvcnJlY3RseSB0YWtlIGV4aXN0aW5nIHJlbW90ZSBkZWZpbml0aW9ucyBpbnRvIGFjY291bnQuCisKKyAqICJnaXQgZmV0Y2giIGludG8gYSBzaGFsbG93IHJlcG9zaXRvcnkgZnJvbSBhIHJlcG9zaXRvcnkgdGhhdCBkb2VzCisgICBub3Qga25vdyBhYm91dCB0aGUgc2hhbGxvdyBib3VuZGFyeSBjb21taXRzIChlLmcuIGEgZGlmZmVyZW50IGZvcmsKKyAgIGZyb20gdGhlIHJlcG9zaXRvcnkgdGhlIGN1cnJlbnQgc2hhbGxvdyByZXBvc2l0b3J5IHdhcyBjbG9uZWQgZnJvbSkKKyAgIGRpZCBub3Qgd29yayBjb3JyZWN0bHkuCisKKyAqICJnaXQgc3VidHJlZSIgKGluIGNvbnRyaWIvKSBoYWQgb25lIGNvZGVwYXRoIHdpdGggbG9vc2UgZXJyb3IKKyAgIGNoZWNrcyB0byBsb3NlIGRhdGEgYXQgdGhlIHJlbW90ZSBzaWRlLgorCisgKiAiZ2l0IGxvZyAtLWFuY2VzdHJ5LXBhdGggQS4uLkIiIGRpZCBub3Qgd29yayBhcyBleHBlY3RlZCwgYXMgaXQgZGlkCisgICBub3QgcGF5IGF0dGVudGlvbiB0byB0aGUgZmFjdCB0aGF0IHRoZSBtZXJnZSBiYXNlIGJldHdlZW4gQSBhbmQgQgorICAgd2FzIHRoZSBib3R0b20gb2YgdGhlIHJhbmdlIGJlaW5nIHNwZWNpZmllZC4KKworICogImdpdCBkaWZmIC1jIC1wIiB3YXMgbm90IHNob3dpbmcgYSBkZWxldGVkIGxpbmUgZnJvbSBhIGh1bmsgd2hlbgorICAgYW5vdGhlciBodW5rIGltbWVkaWF0ZWx5IGJlZ2lucyB3aGVyZSB0aGUgZWFybGllciBvbmUgZW5kcy4KKworICogImdpdCBtZXJnZSBAey0xfX4yMiIgd2FzIHJld3JpdHRlbiB0byAiZ2l0IG1lcmdlIGZyb3R6QHsxfX4yMiIKKyAgIGluY29ycmVjdGx5IHdoZW4geW91ciBwcmV2aW91cyBicmFuY2ggd2FzICJmcm90eiIgKGl0IHNob3VsZCBiZQorICAgcmV3cml0dGVuIHRvICJnaXQgbWVyZ2UgZnJvdHp+MjIiIGluc3RlYWQpLgorCisgKiAiZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5LW1lc3NhZ2UgLW0gJyciIHNob3VsZCBub3Qgc3RhcnQgYW4KKyAgIGVkaXRvci4KKworICogImdpdCBwdXNoIC0tW25vLV12ZXJpZnkiIHdhcyBub3QgZG9jdW1lbnRlZC4KKworICogQW4gZW50cnkgZm9yICJmaWxlOi8vIiBzY2hlbWUgaW4gdGhlIGVudW1lcmF0aW9uIG9mIFVSTCB0eXBlcyBHaXQKKyAgIGNhbiB0YWtlIGluIHRoZSBIVE1MIGRvY3VtZW50YXRpb24gd2FzIG1hZGUgaW50byBhIGNsaWNrYWJsZSBsaW5rCisgICBieSBtaXN0YWtlLgorCisgKiB6c2ggcHJvbXB0IHNjcmlwdCB0aGF0IGJvcnJvd2VkIGZyb20gYmFzaCBwcm9tcHQgc2NyaXB0IGRpZCBub3QKKyAgIHdvcmsgZHVlIHRvIHNsaWdodCBkaWZmZXJlbmNlcyBpbiBhcnJheSB2YXJpYWJsZSBub3RhdGlvbiBiZXR3ZWVuCisgICB0aGVzZSB0d28gc2hlbGxzLgorCisgKiBUaGUgYmFzaCBwcm9tcHQgY29kZSAoaW4gY29udHJpYi8pIGRpc3BsYXllZCB0aGUgbmFtZSBvZiB0aGUgYnJhbmNoCisgICBiZWluZyByZWJhc2VkIHdoZW4gInJlYmFzZSAtaS8tbS8tcCIgbW9kZXMgYXJlIGluIHVzZSwgYnV0IG5vdCB0aGUKKyAgIHBsYWluIHZhbmlsbGEgInJlYmFzZSIuCisKKyAqICJnaXQgcHVzaCAkdGhlcmUgSEVBRDpicmFuY2giIGRpZCBub3QgcmVzb2x2ZSBIRUFEIGVhcmx5IGVub3VnaCwgc28KKyAgIGl0IHdhcyBlYXN5IHRvIGZsaXAgaXQgYXJvdW5kIHdoaWxlIHB1c2ggaXMgc3RpbGwgZ29pbmcgb24gYW5kIHB1c2gKKyAgIG91dCBhIGJyYW5jaCB0aGF0IHRoZSB1c2VyIGRpZCBub3Qgb3JpZ2luYWxseSBpbnRlbmRlZCB3aGVuIHRoZQorICAgY29tbWFuZCB3YXMgc3RhcnRlZC4KKworICogImRpZmZ0b29sIC0tZGlyLWRpZmYiIGRpZCBub3QgY29weSBiYWNrIGNoYW5nZXMgbWFkZSBieSB0aGUKKyAgIGVuZC11c2VyIGluIHRoZSBkaWZmIHRvb2wgYmFja2VuZCB0byB0aGUgd29ya2luZyB0cmVlIGluIHNvbWUKKyAgIGNhc2VzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMy4zLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjMuMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQyODllNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjMuMy50eHQKQEAgLTAsMCArMSwyNiBAQAorR2l0IHYxLjguMy4zIFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVzIHNpbmNlIHYxLjguMy4yCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgKiAiZ2l0d2ViIiBmb3Jnb3QgdG8gY2xlYXIgYSBnbG9iYWwgdmFyaWFibGUgJHNlYXJjaF9yZWdleHAgdXBvbiBlYWNoCisgICByZXF1ZXN0LCBtaXN0YWtlbmx5IGNhcnJ5aW5nIG92ZXIgdGhlIHByZXZpb3VzIHNlYXJjaCB0byBhIG5ldyBvbmUKKyAgIHdoZW4gdXNlZCBhcyBhIHBlcnNpc3RlbnQgQ0dJLgorCisgKiBUaGUgd2lsZG1hdGNoIGVuZ2luZSBkaWQgbm90IGhvbm9yIFdNX0NBU0VGT0xEIG9wdGlvbiBjb3JyZWN0bHkuCisKKyAqICJnaXQgbG9nIC1jIC0tZm9sbG93ICRwYXRoIiBzZWdmYXVsdGVkIHVwb24gaGl0dGluZyB0aGUgY29tbWl0IHRoYXQKKyAgIHJlbmFtZWQgdGhlICRwYXRoIGJlaW5nIGZvbGxvd2VkLgorCisgKiBXaGVuIGEgcmVmbG9nIG5vdGF0aW9uIGlzIHVzZWQgZm9yIGltcGxpY2l0ICJjdXJyZW50IGJyYW5jaCIsCisgICBlLmcuICJnaXQgbG9nIEB7dX0iLCB3ZSBkaWQgbm90IHNheSB3aGljaCBicmFuY2ggYW5kIHdvcnNlIHNhaWQKKyAgICJicmFuY2ggJyciIGluIHRoZSBlcnJvciBtZXNzYWdlcy4KKworICogTWFjIE9TIFggZG9lcyBub3QgbGlrZSB0byB3cml0ZSgyKSBtb3JlIHRoYW4gSU5UX01BWCBudW1iZXIgb2YKKyAgIGJ5dGVzOyB3b3JrIGl0IGFyb3VuZCBieSBjaG9wcGluZyB3cml0ZSgyKSBpbnRvIHNtYWxsZXIgcGllY2VzLgorCisgKiBOZXdlciBNYWNPUyBYIGVuY291cmFnZXMgdGhlIHByb2dyYW1zIHRvIGNvbXBpbGUgYW5kIGxpbmsgd2l0aAorICAgdGhlaXIgQ29tbW9uQ3J5cHRvLCBub3Qgd2l0aCBPcGVuU1NMLgorCitBbHNvIGNvbnRhaW5zIHZhcmlvdXMgbWlub3IgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMy50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWQ1NjhlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMy50eHQKQEAgLTAsMCArMSw0MzYgQEAKK0dpdCB2MS44LjMgUmVsZWFzZSBOb3RlcworPT09PT09PT09PT09PT09PT09PT09PT09CisKK0JhY2t3YXJkIGNvbXBhdGliaWxpdHkgbm90ZXMgKGZvciBHaXQgMi4wKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gImdpdCBwdXNoIFskdGhlcmVdIiBkb2VzIG5vdCBzYXkgd2hhdCB0byBwdXNoLCB3ZSBoYXZlIHVzZWQgdGhlCit0cmFkaXRpb25hbCAibWF0Y2hpbmciIHNlbWFudGljcyBzbyBmYXIgKGFsbCB5b3VyIGJyYW5jaGVzIHdlcmUgc2VudAordG8gdGhlIHJlbW90ZSBhcyBsb25nIGFzIHRoZXJlIGFscmVhZHkgYXJlIGJyYW5jaGVzIG9mIHRoZSBzYW1lIG5hbWUKK292ZXIgdGhlcmUpLiAgSW4gR2l0IDIuMCwgdGhlIGRlZmF1bHQgd2lsbCBjaGFuZ2UgdG8gdGhlICJzaW1wbGUiCitzZW1hbnRpY3MgdGhhdCBwdXNoZXMgb25seSB0aGUgY3VycmVudCBicmFuY2ggdG8gdGhlIGJyYW5jaCB3aXRoIHRoZSBzYW1lCituYW1lLCBhbmQgb25seSB3aGVuIHRoZSBjdXJyZW50IGJyYW5jaCBpcyBzZXQgdG8gaW50ZWdyYXRlIHdpdGggdGhhdAorcmVtb3RlIGJyYW5jaC4gIFVzZSB0aGUgdXNlciBwcmVmZXJlbmNlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUKKyJwdXNoLmRlZmF1bHQiIHRvIGNoYW5nZSB0aGlzLiAgSWYgeW91IGFyZSBhbiBvbGQtdGltZXIgd2hvIGlzIHVzZWQKK3RvIHRoZSAibWF0Y2hpbmciIHNlbWFudGljcywgeW91IGNhbiBzZXQgdGhlIHZhcmlhYmxlIHRvICJtYXRjaGluZyIKK3RvIGtlZXAgdGhlIHRyYWRpdGlvbmFsIGJlaGF2aW91ci4gIElmIHlvdSB3YW50IHRvIGxpdmUgaW4gdGhlIGZ1dHVyZQorZWFybHksIHlvdSBjYW4gc2V0IGl0IHRvICJzaW1wbGUiIHRvZGF5IHdpdGhvdXQgd2FpdGluZyBmb3IgR2l0IDIuMC4KKworV2hlbiAiZ2l0IGFkZCAtdSIgKGFuZCAiZ2l0IGFkZCAtQSIpIGlzIHJ1biBpbnNpZGUgYSBzdWJkaXJlY3RvcnkgYW5kCitkb2VzIG5vdCBzcGVjaWZ5IHdoaWNoIHBhdGhzIHRvIGFkZCBvbiB0aGUgY29tbWFuZCBsaW5lLCBpdAord2lsbCBvcGVyYXRlIG9uIHRoZSBlbnRpcmUgdHJlZSBpbiBHaXQgMi4wIGZvciBjb25zaXN0ZW5jeQord2l0aCAiZ2l0IGNvbW1pdCAtYSIgYW5kIG90aGVyIGNvbW1hbmRzLiAgVGhlcmUgd2lsbCBiZSBubworbWVjaGFuaXNtIHRvIG1ha2UgcGxhaW4gImdpdCBhZGQgLXUiIGJlaGF2ZSBsaWtlICJnaXQgYWRkIC11IC4iLgorQ3VycmVudCB1c2VycyBvZiAiZ2l0IGFkZCAtdSIgKHdpdGhvdXQgYSBwYXRoc3BlYykgc2hvdWxkIHN0YXJ0Cit0cmFpbmluZyB0aGVpciBmaW5nZXJzIHRvIGV4cGxpY2l0bHkgc2F5ICJnaXQgYWRkIC11IC4iCitiZWZvcmUgR2l0IDIuMCBjb21lcy4gIEEgd2FybmluZyBpcyBpc3N1ZWQgd2hlbiB0aGVzZSBjb21tYW5kcyBhcmUKK3J1biB3aXRob3V0IGEgcGF0aHNwZWMgYW5kIHdoZW4geW91IGhhdmUgbG9jYWwgY2hhbmdlcyBvdXRzaWRlIHRoZQorY3VycmVudCBkaXJlY3RvcnksIGJlY2F1c2UgdGhlIGJlaGF2aW91ciBpbiBHaXQgMi4wIHdpbGwgYmUgZGlmZmVyZW50Citmcm9tIHRvZGF5J3MgdmVyc2lvbiBpbiBzdWNoIGEgc2l0dWF0aW9uLgorCitJbiBHaXQgMi4wLCAiZ2l0IGFkZCA8cGF0aD4iIHdpbGwgYmVoYXZlIGFzICJnaXQgYWRkIC1BIDxwYXRoPiIsIHNvCit0aGF0ICJnaXQgYWRkIGRpci8iIHdpbGwgbm90aWNlIHBhdGhzIHlvdSByZW1vdmVkIGZyb20gdGhlIGRpcmVjdG9yeQorYW5kIHJlY29yZCB0aGUgcmVtb3ZhbC4gIFZlcnNpb25zIGJlZm9yZSBHaXQgMi4wLCBpbmNsdWRpbmcgdGhpcworcmVsZWFzZSwgd2lsbCBrZWVwIGlnbm9yaW5nIHJlbW92YWxzLCBidXQgdGhlIHVzZXJzIHdobyByZWx5IG9uIHRoaXMKK2JlaGF2aW91ciBhcmUgZW5jb3VyYWdlZCB0byBzdGFydCB1c2luZyAiZ2l0IGFkZCAtLWlnbm9yZS1yZW1vdmFsIDxwYXRoPiIKK25vdyBiZWZvcmUgMi4wIGlzIHJlbGVhc2VkLgorCisKK1VwZGF0ZXMgc2luY2UgdjEuOC4yCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGb3JlaWduIGludGVyZmFjZQorCisgKiByZW1vdGUtaGcgYW5kIHJlbW90ZS1ienIgaGVscGVycyAoaW4gY29udHJpYi8gc2luY2UgdjEuOC4yKSBoYXZlCisgICBiZWVuIHVwZGF0ZWQ7IGVzcGVjaWFsbHksIHRoZSBsYXR0ZXIgaGFzIGJlZW4gZG9uZSBpbiBhbgorICAgYWNjZWxlcmF0ZWQgc2NoZWR1bGUgKHJlYWQ6IHdlIG1heSBub3QgaGF2ZSBtZXJnZWQgdG8gdGhpcyByZWxlYXNlCisgICBpZiB3ZSB3ZXJlIGZvbGxvd2luZyB0aGUgdXN1YWwgImNvb2sgc3VmZmljaWVudGx5IGluIG5leHQgYmVmb3JlCisgICB1bmxlYXNoaW5nIGl0IHRvIHRoZSB3b3JsZCIgd29ya2Zsb3cpIGluIG9yZGVyIHRvIGhlbHAgRW1hY3MgZm9sa3MsCisgICB3aG9zZSBwcmltYXJ5IFNDTSBzZWVtcyB0byBiZSBzdGFnbmF0aW5nLgorCisKK1VJLCBXb3JrZmxvd3MgJiBGZWF0dXJlcworCisgKiBBIGhhbmRmdWwgb2YgdXBkYXRlcyBhcHBsaWVkIHRvIGdpdGssIGluY2x1ZGluZyBhbiBhZGRpdGlvbiBvZgorICAgInJldmVydCIgYWN0aW9uLCBzaG93aW5nIGRhdGVzIGluIHRhZ3MgaW4gYSBuaWNlciB3YXksIG1ha2luZworICAgY29sb3JzIGNvbmZpZ3VyYWJsZSwgYW5kIHN1cHBvcnQgZm9yIC1HJ3BpY2theGUnIHNlYXJjaC4KKworICogVGhlIHByb21wdCBzdHJpbmcgZ2VuZXJhdG9yIChpbiBjb250cmliL2NvbXBsZXRpb24vKSBsZWFybmVkIHRvCisgICBzaG93IGhvdyBtYW55IGNoYW5nZXMgdGhlcmUgYXJlIGluIHRvdGFsIGFuZCBob3cgbWFueSBoYXZlIGJlZW4KKyAgIHJlcGxheWVkIGR1cmluZyBhICJnaXQgcmViYXNlIiBzZXNzaW9uLgorCisgKiAiZ2l0IGJyYW5jaCAtLXZ2IiBsZWFybmVkIHRvIHBhaW50IHRoZSBuYW1lIG9mIHRoZSBicmFuY2ggaXQKKyAgIGludGVncmF0ZXMgd2l0aCBpbiBhIGRpZmZlcmVudCBjb2xvciAoY29sb3IuYnJhbmNoLnVwc3RyZWFtLAorICAgd2hpY2ggZGVmYXVsdHMgdG8gYmx1ZSkuCisKKyAqIEluIGEgc3BhcnNlbHkgcG9wdWxhdGVkIHdvcmtpbmcgdHJlZSwgImdpdCBjaGVja291dCA8cGF0aHNwZWM+IiBubworICAgbG9uZ2VyIHVubWFya3MgcGF0aHMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcGF0aHNwZWMgdGhhdCB3ZXJlCisgICBvcmlnaW5hbGx5IGlnbm9yZWQgd2l0aCAiLS1zcGFyc2UiICh1c2UgLS1pZ25vcmUtc2tpcC13b3JrdHJlZS1iaXRzCisgICBvcHRpb24gdG8gcmVzdXJyZWN0IHRoZXNlIHBhdGhzIG91dCBvZiB0aGUgaW5kZXggaWYgeW91IHJlYWxseSB3YW50CisgICB0bykuCisKKyAqICJnaXQgbG9nIC0tZm9ybWF0IiBzcGVjaWZpZXIgbGVhcm5lZCAlQyhhdXRvKSB0b2tlbiB0aGF0IHRlbGxzIEdpdAorICAgdG8gdXNlIGNvbG9yIHdoZW4gaW50ZXJwb2xhdGluZyAlZCAoZGVjb3JhdGlvbiksICVoIChzaG9ydCBjb21taXQKKyAgIG9iamVjdCBuYW1lKSwgZXRjLiBmb3IgdGVybWluYWwgb3V0cHV0LgorCisgKiAiZ2l0IGJpc2VjdCIgbGVhdmVzIHRoZSBmaW5hbCBvdXRjb21lIGFzIGEgY29tbWVudCBpbiBpdHMgYmlzZWN0CisgICBsb2cgZmlsZS4KKworICogImdpdCBjbG9uZSAtLXJlZmVyZW5jZSIgY2FuIG5vdyByZWZlciB0byBhIGdpdGZpbGUgInRleHR1YWwgc3ltbGluayIKKyAgIHRoYXQgcG9pbnRzIGF0IHRoZSByZWFsIGxvY2F0aW9uIG9mIHRoZSByZXBvc2l0b3J5LgorCisgKiAiZ2l0IGNvdW50LW9iamVjdHMiIGxlYXJuZWQgIi0taHVtYW4tcmVhZGFibGUiIGFrYSAiLUgiIG9wdGlvbiB0bworICAgc2hvdyB2YXJpb3VzIGxhcmdlIG51bWJlcnMgaW4gS2kvTWkvR2lCIHNjYWxlZCBhcyBuZWNlc3NhcnkuCisKKyAqICJnaXQgY2hlcnJ5LXBpY2sgJGJsb2IiIGFuZCAiZ2l0IGNoZXJyeS1waWNrICR0cmVlIiBhcmUgbm9uc2Vuc2UsCisgICBhbmQgYSBtb3JlIHJlYWRhYmxlIGVycm9yIG1lc3NhZ2UgZS5nLiAiY2FuJ3QgY2hlcnJ5LXBpY2sgYSB0cmVlIgorICAgaXMgZ2l2ZW4gKHdlIHVzZWQgdG8gc2F5ICJleHBlY3RlZCBleGFjdGx5IG9uZSBjb21taXQiKS4KKworICogVGhlICItLWFubm90YXRlIiBvcHRpb24gdG8gImdpdCBzZW5kLWVtYWlsIiBjYW4gYmUgdHVybmVkIG9uIChvcgorICAgb2ZmKSBieSBkZWZhdWx0IHdpdGggc2VuZGVtYWlsLmFubm90YXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgKHlvdQorICAgY2FuIHVzZSAtLW5vLWFubm90YXRlIGZyb20gdGhlIGNvbW1hbmQgbGluZSB0byBvdmVycmlkZSBpdCkuCisKKyAqIFRoZSAiLS1jb3Zlci1sZXR0ZXIiIG9wdGlvbiB0byAiZ2l0IGZvcm1hdC1wYXRjaCIgY2FuIGJlIHR1cm5lZCBvbgorICAgKG9yIG9mZikgYnkgZGVmYXVsdCB3aXRoIGZvcm1hdC5jb3ZlckxldHRlciBjb25maWd1cmF0aW9uCisgICB2YXJpYWJsZS4gQnkgc2V0dGluZyBpdCB0byAnYXV0bycsIHlvdSBjYW4gdHVybiBpdCBvbiBvbmx5IGZvciBhCisgICBzZXJpZXMgd2l0aCB0d28gb3IgbW9yZSBwYXRjaGVzLgorCisgKiBUaGUgYmFzaCBjb21wbGV0aW9uIHN1cHBvcnQgKGluIGNvbnRyaWIvKSBsZWFybmVkIHRoYXQgY2hlcnJ5LXBpY2sKKyAgIHRha2VzIGEgZmV3IG1vcmUgb3B0aW9ucyB0aGFuIGl0IGFscmVhZHkga25ldyBhYm91dC4KKworICogImdpdCBoZWxwIiBsZWFybmVkICItZyIgb3B0aW9uIHRvIHNob3cgdGhlIGxpc3Qgb2YgZ3VpZGVzIGp1c3QgbGlrZQorICAgbGlzdCBvZiBjb21tYW5kcyBhcmUgZ2l2ZW4gd2l0aCAiLWEiLgorCisgKiBBIHRyaWFuZ3VsYXIgInB1bGwgZnJvbSBvbmUgcGxhY2UsIHB1c2ggdG8gYW5vdGhlciBwbGFjZSIgd29ya2Zsb3cKKyAgIGlzIHN1cHBvcnRlZCBiZXR0ZXIgYnkgbmV3IHJlbW90ZS5wdXNoZGVmYXVsdCAob3ZlcnJpZGVzIHRoZQorICAgIm9yaWdpbiIgdGhpbmcpIGFuZCBicmFuY2guKi5wdXNocmVtb3RlIChvdmVycmlkZXMgdGhlCisgICBicmFuY2guKi5yZW1vdGUpIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLgorCisgKiAiZ2l0IHN0YXR1cyIgbGVhcm5lZCB0byByZXBvcnQgdGhhdCB5b3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYQorICAgcmV2ZXJ0IHNlc3Npb24sIGp1c3QgbGlrZSBpdCBkb2VzIGZvciBhIGNoZXJyeS1waWNrIGFuZCBhIGJpc2VjdAorICAgc2Vzc2lvbi4KKworICogVGhlIGhhbmRsaW5nIGJ5ICJnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIiBhZ2FpbnN0IHZhcmlvdXMgZm9ybXMKKyAgIG9mIGVycm9uZW91cyBpbnB1dHMgd2FzIHN1Ym9wdGltYWwgYW5kIGhhcyBiZWVuIGltcHJvdmVkLgorCisgKiBXaGVuIHRoZSBpbnRlcmFjdGl2ZSBhY2Nlc3MgdG8gZ2l0LXNoZWxsIGlzIG5vdCBlbmFibGVkLCBpdCBpc3N1ZXMKKyAgIGEgbWVzc2FnZSBtZWFudCB0byBoZWxwIHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvciB0byBlbmFibGUgaXQuICBBbgorICAgZXhwbGljaXQgd2F5IGhhcyBiZWVuIGFkZGVkIHRvIGlzc3VlIGN1c3RvbSBtZXNzYWdlcyB0byByZWZ1c2UgYW4KKyAgIGFjY2VzcyBvdmVyIHRoZSBuZXR3b3JrIHRvIGhlbHAgdGhlIGVuZCB1c2VycyB3aG8gY29ubmVjdCB0byB0aGUKKyAgIHNlcnZpY2UgZXhwZWN0aW5nIGFuIGludGVyYWN0aXZlIHNoZWxsLgorCisgKiBJbiBhZGRpdGlvbiB0byB0aGUgY2FzZSB3aGVyZSB0aGUgdXNlciBlZGl0cyB0aGUgbG9nIG1lc3NhZ2Ugd2l0aAorICAgdGhlICJlKWRpdCIgb3B0aW9uIG9mICJhbSAtaSIsIHJlcGxhY2UgdGhlICJBcHBseWluZzogdGhpcyBwYXRjaCIKKyAgIG1lc3NhZ2Ugd2l0aCB0aGUgZmluYWwgbG9nIG1lc3NhZ2UgY29udGVudHMgYWZ0ZXIgYXBwbHltc2cgaG9vaworICAgbXVuZ2VzIGl0LgorCisgKiAiZ2l0IHN0YXR1cyIgc3VnZ2VzdHMgdXNlcnMgdG8gbG9vayBpbnRvIHVzaW5nIC0tdW50cmFja2VkPW5vIG9wdGlvbgorICAgd2hlbiBpdCB0YWtlcyB0b28gbG9uZy4KKworICogImdpdCBzdGF0dXMiIHNob3dzIGEgYml0IG1vcmUgaW5mb3JtYXRpb24gZHVyaW5nIGEgcmViYXNlL2Jpc2VjdAorICAgc2Vzc2lvbi4KKworICogImdpdCBmZXRjaCIgbGVhcm5lZCB0byBmZXRjaCBhIGNvbW1pdCBhdCB0aGUgdGlwIG9mIGFuIHVuYWR2ZXJ0aXNlZAorICAgcmVmIGJ5IHNwZWNpZnlpbmcgYSByYXcgb2JqZWN0IG5hbWUgZnJvbSB0aGUgY29tbWFuZCBsaW5lIHdoZW4gdGhlCisgICBzZXJ2ZXIgc2lkZSBzdXBwb3J0cyB0aGlzIGZlYXR1cmUuCisKKyAqIE91dHB1dCBmcm9tICJnaXQgbG9nIC0tZ3JhcGgiIHdvcmtzIGJldHRlciB3aXRoIHN1Ym1vZHVsZSBsb2cKKyAgIG91dHB1dCBub3cuCisKKyAqICJnaXQgY291bnQtb2JqZWN0cyAtdiIgbGVhcm5lZCB0byByZXBvcnQgbGVmdG92ZXIgdGVtcG9yYXJ5CisgICBwYWNrZmlsZXMgYW5kIG90aGVyIGdhcmJhZ2UgaW4gdGhlIG9iamVjdCBzdG9yZS4KKworICogQSBuZXcgcmVhZC1vbmx5IGNyZWRlbnRpYWwgaGVscGVyIChpbiBjb250cmliLykgdG8gaW50ZXJhY3Qgd2l0aAorICAgdGhlIC5uZXRyYy8uYXV0aGluZm8gZmlsZXMgaGFzIGJlZW4gYWRkZWQuCisKKyAqICJnaXQgc2VuZC1lbWFpbCIgY2FuIGJlIHVzZWQgd2l0aCB0aGUgY3JlZGVudGlhbCBoZWxwZXIgc3lzdGVtLgorCisgKiBUaGVyZSB3YXMgbm8gUG9yY2VsYWluIHdheSB0byBzYXkgIkkgbm8gbG9uZ2VyIGFtIGludGVyZXN0ZWQgaW4KKyAgIHRoaXMgc3VibW9kdWxlIiwgb25jZSB5b3UgZXhwcmVzcyB5b3VyIGludGVyZXN0IGluIGEgc3VibW9kdWxlIHdpdGgKKyAgICJzdWJtb2R1bGUgaW5pdCIuICAic3VibW9kdWxlIGRlaW5pdCIgaXMgdGhlIHdheSB0byBkbyBzby4KKworICogImdpdCBwdWxsIC0tcmViYXNlIiBsZWFybmVkIHRvIHBhc3MgIi12Ly1xIiBvcHRpb25zIHRvIHVuZGVybHlpbmcKKyAgICJnaXQgcmViYXNlIi4KKworICogVGhlIG5ldyAiLS1mb2xsb3ctdGFncyIgb3B0aW9uIHRlbGxzICJnaXQgcHVzaCIgdG8gcHVzaCByZWxldmFudAorICAgYW5ub3RhdGVkIHRhZ3Mgd2hlbiBwdXNoaW5nIGJyYW5jaGVzIG91dC4KKworICogImdpdCBtZXJnZSIgYW5kICJnaXQgcHVsbCIgY2FuIG9wdGlvbmFsbHkgYmUgdG9sZCB0byBpbnNwZWN0IGFuZAorICAgcmVqZWN0IHdoZW4gbWVyZ2luZyBhIGNvbW1pdCB0aGF0IGRvZXMgbm90IGNhcnJ5IGEgdHJ1c3RlZCBHUEcKKyAgIHNpZ25hdHVyZS4KKworICogImdpdCBtZXJnZXRvb2wiIG5vdyBmZWVkcyBmaWxlcyB0byB0aGUgInA0bWVyZ2UiIGJhY2tlbmQgaW4gdGhlCisgICBvcmRlciB0aGF0IG1hdGNoZXMgdGhlIHA0IGNvbnZlbnRpb24sIHdoZXJlICJ0aGVpcnMiIGlzIHVzdWFsbHkKKyAgIHNob3duIG9uIHRoZSBsZWZ0IHNpZGUsIHdoaWNoIGlzIHRoZSBvcHBvc2l0ZSBmcm9tIHdoYXQgb3RoZXIgYmFja2VuZHMKKyAgIGV4cGVjdC4KKworICogInNob3cvbG9nIiBub3cgaG9ub3JzIGdwZy5wcm9ncmFtIGNvbmZpZ3VyYXRpb24ganVzdCBsaWtlIG90aGVyCisgICBwYXJ0cyBvZiB0aGUgY29kZSB0aGF0IHVzZSBHbnVQRy4KKworICogImdpdCBsb2ciIHRoYXQgc2hvd3MgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgcGFyZW50IGFuZCB0aGUKKyAgIGNoaWxkIGhhcyBiZWVuIG9wdGltaXplZCBzb21ld2hhdC4KKworICogImdpdCBkaWZmdG9vbCIgYWxsb3dzIHRoZSB1c2VyIHRvIHdyaXRlIGludG8gdGhlIHRlbXBvcmFyeSBmaWxlcworICAgYmVpbmcgc2hvd247IGlmIHRoZSB1c2VyIG1ha2VzIGNoYW5nZXMgdG8gdGhlIHdvcmtpbmcgdHJlZSBhdCB0aGUKKyAgIHNhbWUgdGltZSwgaXQgbm93IHJlZnJhaW5zIGZyb20gb3ZlcndyaXRpbmcgdGhlIGNvcHkgaW4gdGhlIHdvcmtpbmcKKyAgIHRyZWUgYW5kIGxlYXZlcyB0aGUgdGVtcG9yYXJ5IGZpbGUgc28gdGhhdCBjaGFuZ2VzIGNhbiBiZSBtZXJnZWQKKyAgIG1hbnVhbGx5LgorCisgKiBUaGVyZSB3YXMgbm8gZ29vZCB3YXkgdG8gYXNrICJJIGhhdmUgYSByYW5kb20gc3RyaW5nIHRoYXQgY2FtZSBmcm9tCisgICBvdXRzaWRlIHdvcmxkLiBJIHdhbnQgdG8gdHVybiBpdCBpbnRvIGEgNDAtaGV4IG9iamVjdCBuYW1lIHdoaWxlCisgICBtYWtpbmcgc3VyZSBzdWNoIGFuIG9iamVjdCBleGlzdHMiLiAgQSBuZXcgcGVlbGluZyBzdWZmaXggXntvYmplY3R9CisgICBjYW4gYmUgdXNlZCBmb3IgdGhhdCBwdXJwb3NlLCB0b2dldGhlciB3aXRoICJyZXYtcGFyc2UgLS12ZXJpZnkiLgorCisKK1BlcmZvcm1hbmNlLCBJbnRlcm5hbCBJbXBsZW1lbnRhdGlvbiwgZXRjLgorCisgKiBVcGRhdGVzIGZvciBidWlsZGluZyB1bmRlciBtc3ZjLgorCisgKiBBIGhhbmRmdWwgb2YgaXNzdWVzIGluIHRoZSBjb2RlIHRoYXQgdHJhdmVyc2VzIHRoZSB3b3JraW5nIHRyZWUgdG8gZmluZAorICAgdW50cmFja2VkIGFuZC9vciBpZ25vcmVkIGZpbGVzIGhhdmUgYmVlbiBmaXhlZCwgYW5kIHRoZSBnZW5lcmFsCisgICBjb2RlcGF0aCBpbnZvbHZlZCBpbiAic3RhdHVzIC11IiBhbmQgImNsZWFuIiBoYXZlIGJlZW4gY2xlYW5lZCB1cAorICAgYW5kIG9wdGltaXplZC4KKworICogVGhlIHN0YWNrIGZvb3RwcmludCBvZiBzb21lIGNvZGVwYXRocyB0aGF0IGFjY2VzcyBhbiBvYmplY3QgZnJvbSBhCisgICBwYWNrIGhhcyBiZWVuIHNocnVuay4KKworICogVGhlIGxvZ2ljIHRvIGNvYWxlc2NlIHRoZSBzYW1lIGxpbmVzIHJlbW92ZWQgZnJvbSB0aGUgcGFyZW50cyBpbgorICAgdGhlIG91dHB1dCBmcm9tICJkaWZmIC1jLy0tY2MiIGhhcyBiZWVuIHVwZGF0ZWQsIGJ1dCB3aXRoIE8obl4yKQorICAgY29tcGxleGl0eSwgc28gdGhpcyBtaWdodCB0dXJuIG91dCB0byBiZSB1bmRlc2lyYWJsZS4KKworICogVGhlIGNvZGUgdG8gZW5mb3JjZSBwZXJtaXNzaW9uIGJpdHMgb24gZmlsZXMgaW4gJEdJVF9ESVIvIGZvcgorICAgc2hhcmVkIHJlcG9zaXRvcmllcyBoYXMgYmVlbiBzaW1wbGlmaWVkLgorCisgKiBBIGZldyBjb2RlcGF0aHMga25vdyBob3cgbXVjaCBkYXRhIHRoZXkgbmVlZCB0byBwdXQgaW4gdGhlCisgICBoYXNodGFibGVzIHRoZXkgdXNlIHdoZW4gdGhleSBzdGFydCwgYnV0IHN0aWxsIGJlZ2FuIHdpdGggc21hbGwgdGFibGVzCisgICBhbmQgcmVwZWF0ZWRseSBncmV3IGFuZCByZWhhc2hlZCB0aGVtLgorCisgKiBUaGUgQVBJIHRvIHdhbGsgcmVmbG9nIGVudHJpZXMgZnJvbSB0aGUgbGF0ZXN0IHRvIG9sZGVyLCB3aGljaCB3YXMKKyAgIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyBzdWNoIGFzICJnaXQgY2hlY2tvdXQgLSIsIHdhcyBjdW1iZXJzb21lCisgICB0byB1c2UgY29ycmVjdGx5IGFuZCBhbHNvIGluZWZmaWNpZW50LgorCisgKiBDb2RlcGF0aHMgdGhhdCBpbnNwZWN0IGxvZy1tZXNzYWdlLXRvLWJlIGFuZCBkZWNpZGUgd2hlbiB0byBhZGQgYQorICAgbmV3IFNpZ25lZC1vZmYtYnkgbGluZSBpbiB2YXJpb3VzIGNvbW1hbmRzIGhhdmUgYmVlbiBjb25zb2xpZGF0ZWQuCisKKyAqIFRoZSBwa3QtbGluZSBBUEksIGltcGxlbWVudGF0aW9uIGFuZCBpdHMgY2FsbGVycyBoYXZlIGJlZW4gY2xlYW5lZAorICAgdXAgdG8gbWFrZSB0aGVtIG1vcmUgcm9idXN0LgorCisgKiBUaGUgQ3lnd2luIHBvcnQgaGFzIGEgZmFzdGVyLWJ1dC1seWluZyBsc3RhdCgyKSBlbXVsYXRpb24gd2hvc2UKKyAgIGluY29ycmVjdG5lc3MgZG9lcyBub3QgbWF0dGVyIGluIHByYWN0aWNlIGV4Y2VwdCBmb3IgYSBmZXcKKyAgIGNvZGVwYXRocywgYW5kIHNldHRpbmcgcGVybWlzc2lvbiBiaXRzIG9uIGRpcmVjdG9yaWVzIGlzIGEgY29kZXBhdGgKKyAgIHRoYXQgbmVlZHMgdG8gdXNlIGEgbW9yZSBjb3JyZWN0IG9uZS4KKworICogImdpdCBjaGVja291dCIgaGFkIHJlcGVhdGVkIHBhdGhzcGVjIG1hdGNoZXMgb24gdGhlIHNhbWUgcGF0aHMsCisgICB3aGljaCBoYXZlIGJlZW4gY29uc29saWRhdGVkLiAgQWxzbyBhIGJ1ZyBpbiAiZ2l0IGNoZWNrb3V0IGRpci8iCisgICB0aGF0IGlzIHN0YXJ0ZWQgZnJvbSBhbiB1bm1lcmdlZCBpbmRleCBoYXMgYmVlbiBmaXhlZC4KKworICogQSBmZXcgYnVnZml4ZXMgdG8gImdpdCByZXJlcmUiIHdvcmtpbmcgb24gY29ybmVyIGNhc2UgbWVyZ2UKKyAgIGNvbmZsaWN0cyBoYXZlIGJlZW4gYXBwbGllZC4KKworCitBbHNvIGNvbnRhaW5zIHZhcmlvdXMgZG9jdW1lbnRhdGlvbiB1cGRhdGVzIGFuZCBjb2RlIGNsZWFuLXVwcy4KKworCitGaXhlcyBzaW5jZSB2MS44LjIKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitVbmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLCBhbGwgdGhlIGZpeGVzIHNpbmNlIHYxLjguMiBpbiB0aGUgbWFpbnRlbmFuY2UKK3RyYWNrIGFyZSBjb250YWluZWQgaW4gdGhpcyByZWxlYXNlIChzZWUgcmVsZWFzZSBub3RlcyB0byB0aGVtIGZvcgorZGV0YWlscykuCisKKyAqIFJlY2VudCB2ZXJzaW9ucyBvZiBGaWxlOjpUZW1wICh1c2VkIGJ5ICJnaXQgc3ZuIikgc3RhcnRlZCBibG93aW5nCisgICB1cCB3aGVuIGl0cyB0ZW1wZmlsZSBzdWIgaXMgY2FsbGVkIGFzIGEgY2xhc3MgbWV0aG9kOyB1cGRhdGVkIHRoZQorICAgY2FsbHNpdGUgdG8gY2FsbCBpdCBhcyBhIHBsYWluIHZhbmlsbGEgZnVuY3Rpb24gdG8gZml4IGl0LgorICAgKG1lcmdlIGVhZmMyZGQgaGIvZ2l0LXBtLXRlbXBmaWxlIGxhdGVyIHRvIG1haW50KS4KKworICogVmFyaW91cyBzdWJjb21tYW5kcyBvZiAiZ2l0IHJlbW90ZSIgc2ltcGx5IGlnbm9yZWQgZXh0cmFuZW91cworICAgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIGRpYWdub3NpbmcgdGhlbSBhcyBlcnJvcnMuCisKKyAqIFdoZW4gcmVjZWl2ZS1wYWNrIGRldGVjdHMgYW4gZXJyb3IgaW4gdGhlIHBhY2sgaGVhZGVyIGl0IHJlY2VpdmVkIGluCisgICBvcmRlciB0byBkZWNpZGUgd2hpY2ggb2YgdW5wYWNrLW9iamVjdHMgb3IgaW5kZXgtcGFjayB0byBydW4sIGl0CisgICByZXR1cm5lZCB3aXRob3V0IGNsb3NpbmcgdGhlIGVycm9yIHN0cmVhbSwgd2hpY2ggbGVkIHRvIGEgaHVuZworICAgc2lkZWJhbmQgdGhyZWFkLgorCisgKiBac2ggY29tcGxldGlvbiBmb3Jnb3QgdGhhdCB0aGUgJyUnIGNoYXJhY3RlciB1c2VkIHRvIHNpZ25hbCB1bnRyYWNrZWQKKyAgIGZpbGVzIG5lZWRzIHRvIGJlIGVzY2FwZWQgd2l0aCBhbm90aGVyICclJy4KKworICogQSBjb21taXQgb2JqZWN0IHdob3NlIGF1dGhvciBvciBjb21taXR0ZXIgaWRlbnQgYXJlIG1hbGZvcm1lZAorICAgY3Jhc2hlZCBzb21lIGNvZGUgdGhhdCB0cnVzdGVkIHRoYXQgYSBuYW1lLCBhbiBlbWFpbCBhbmQgYQorICAgdGltZXN0YW1wIGNhbiBhbHdheXMgYmUgZm91bmQgaW4gaXQuCisKKyAqIFdoZW4gInVwbG9hZC1wYWNrIiBmYWlscyB3aGlsZSBnZW5lcmF0aW5nIGEgcGFjayBpbiByZXNwb25zZSB0bworICAgImdpdCBmZXRjaCIgKG9yICJnaXQgY2xvbmUiKSwgdGhlIHJlY2VpdmluZyBzaWRlIGhhZAorICAgYSBwcm9ncmFtbWluZyBlcnJvciB0aGF0IHRyaWdnZXJlZCB0aGUgZGllIGhhbmRsZXIKKyAgIHJlY3Vyc2l2ZWx5LgorCisgKiAicmV2LWxpc3QgLS1zdGRpbiIgYW5kIGZyaWVuZHMga2VwdCBib2d1cyBwb2ludGVycyBpbnRvIHRoZSBpbnB1dAorICAgYnVmZmVyIGFyb3VuZCBhcyBodW1hbiByZWFkYWJsZSBvYmplY3QgbmFtZXMuICBUaGlzIHdhcyBub3QgYSBodWdlCisgICBwcm9ibGVtIGJ1dCB3YXMgZXhwb3NlZCBieSBhIG5ldyBjaGFuZ2UgdGhhdCB1c2VzIHRoZXNlIG5hbWVzIGluCisgICBlcnJvciBvdXRwdXQuCisKKyAqIFNtYXJ0LWNhcGFibGUgSFRUUCBzZXJ2ZXJzIHdlcmUgbm90IHJlc3RyaWN0ZWQgdmlhIHRoZQorICAgR0lUX05BTUVTUEFDRSBtZWNoYW5pc20gd2hlbiB0YWxraW5nIHdpdGggY29tbWl0LXdhbGtpbmcgY2xpZW50cywKKyAgIGxpa2UgdGhleSBhcmUgd2hlbiB0YWxraW5nIHdpdGggc21hcnQgSFRUUCBjbGllbnRzLgorICAgKG1lcmdlIDYxMzBmODYgamsvaHR0cC1kdW1iLW5hbWVzcGFjZXMgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiAiZ2l0IG1lcmdlLXRyZWUiIGRpZCBub3Qgb21pdCBhIG1lcmdlIHJlc3VsdCB0aGF0IGlzIGlkZW50aWNhbCB0bworICAgdGhlICJvdXIiIHNpZGUgaW4gY2VydGFpbiBjYXNlcy4KKyAgIChtZXJnZSBhYWNlY2MzIGprL21lcmdlLXRyZWUtYWRkZWQtaWRlbnRpY2FsbHkgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiBQZXJsIHNjcmlwdHMgbGlrZSAiZ2l0LXN2biIgY2xvc2VkIChpbnN0ZWFkIG9mIHJlZGlyZWN0aW5nIHRvIC9kZXYvbnVsbCkKKyAgIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0sIHdoaWNoIGlzIG5vdCBhIHZlcnkgc21hcnQgdGhpbmcgdG8gZG8uCisgICBBIGxhdGVyIG9wZW4gbWF5IHJldHVybiBmaWxlIGRlc2NyaXB0b3IgIzIgZm9yIGFuIHVucmVsYXRlZCBwdXJwb3NlLCBhbmQKKyAgIGVycm9yIHJlcG9ydGluZyBjb2RlIG1heSB3cml0ZSBpbnRvIGl0LgorCisgKiAiZ2l0IHNob3ctYnJhbmNoIiB3YXMgbm90IHByZXBhcmVkIHRvIHNob3cgYSB2ZXJ5IGxvbmcgcnVuIG9mCisgICBhbmNlc3RvciBvcGVyYXRvcnMgZS5nLiBmb29iYXJeMn4yXjJeMl4yLi4uXjJ+NCBjb3JyZWN0bHkuCisKKyAqICJnaXQgZGlmZiAtLWRpZmYtYWxnb3JpdGhtIGFsZ28iIGlzIGFsc28gdW5kZXJzdG9vZCBhcyAiZ2l0IGRpZmYKKyAgIC0tZGlmZi1hbGdvcml0aG09YWxnbyIuCisKKyAqIFRoZSBuZXcgY29yZS5jb21tZW50Y2hhciBjb25maWd1cmF0aW9uIHdhcyBub3QgYXBwbGllZCBpbiBhIGZldworICAgcGxhY2VzLgorCisgKiAiZ2l0IGJ1bmRsZSIgZXJyb25lb3VzbHkgYmFpbGVkIG91dCB3aGVuIHBhcnNpbmcgYSB2YWxpZCBidW5kbGUKKyAgIGNvbnRhaW5pbmcgYSBwcmVyZXF1aXNpdGUgY29tbWl0IHdpdGhvdXQgYSBjb21taXQgbWVzc2FnZS4KKworICogImdpdCBsb2cgLVMvLUciIHN0YXJ0ZWQgcGF5aW5nIGF0dGVudGlvbiB0byB0ZXh0Y29udiBmaWx0ZXIsIGJ1dAorICAgdGhlcmUgd2FzIG5vIHdheSB0byBkaXNhYmxlIHRoaXMuICBNYWtlIGl0IGhvbm9yIHRoZSAtLW5vLXRleHRjb252CisgICBvcHRpb24uCisKKyAqIFdoZW4gdXNlZCB3aXRoIHRoZSAiLWQgdGVtcG9yYXJ5LWRpcmVjdG9yeSIgb3B0aW9uLCAiZ2l0IGZpbHRlci1icmFuY2giCisgICBmYWlsZWQgdG8gY29tZSBiYWNrIHRvIHRoZSBvcmlnaW5hbCB3b3JraW5nIHRyZWUgdG8gcGVyZm9ybSB0aGUKKyAgIGZpbmFsIGNsZWFuLXVwIHByb2NlZHVyZS4KKworICogImdpdCBtZXJnZSAkKGdpdCByZXYtcGFyc2UgdjEuOC4yKSIgYmVoYXZlZCBxdWl0ZSBkaWZmZXJlbnRseSBmcm9tCisgICAiZ2l0IG1lcmdlIHYxLjguMiIsIGFzIGlmIHYxLjguMiB3ZXJlIHdyaXR0ZW4gYXMgdjEuOC4yXjAgYW5kIGRpZAorICAgbm90IHBheSBtdWNoIGF0dGVudGlvbiB0byB0aGUgYW5ub3RhdGVkIHRhZyBwYXlsb2FkLiAgTWFrZSB0aGUgY29kZQorICAgbm90aWNlIHRoZSB0eXBlIG9mIHRoZSB0YWcgb2JqZWN0LCBpbiBhZGRpdGlvbiB0byB0aGUgZHdpbV9yZWYoKQorICAgYmFzZWQgY2xhc3NpZmljYXRpb24gdGhlIGN1cnJlbnQgY29kZSB1c2VzIChpLmUuIHRoZSBuYW1lIGFwcGVhcnMKKyAgIGluIHJlZnMvdGFncy8pIHRvIGRlY2lkZSB3aGVuIHRvIHNwZWNpYWwtY2FzZSB0YWcgbWVyZ2luZy4KKworICogRml4IGEgMS44LjEueCByZWdyZXNzaW9uIHRoYXQgc3RvcHBlZCBtYXRjaGluZyAiZGlyIiAod2l0aG91dCBhCisgICB0cmFpbGluZyBzbGFzaCkgdG8gYSBkaXJlY3RvcnkgImRpciIuCisKKyAqICJnaXQgYXBwbHkgLS13aGl0ZXNwYWNlPWZpeCIgd2FzIG5vdCBwcmVwYXJlZCB0byBzZWUgYSBsaW5lIGdldHRpbmcKKyAgIGxvbmdlciBhZnRlciBmaXhpbmcgd2hpdGVzcGFjZXMgKGUuZy4gdGFiLWluLWluZGVudCBha2EgUHl0aG9uKS4KKworICogVGhlIHByb21wdCBzdHJpbmcgZ2VuZXJhdG9yIChpbiBjb250cmliL2NvbXBsZXRpb24vKSBkaWQgbm90IG5vdGljZQorICAgd2hlbiB3ZSBhcmUgaW4gYSBtaWRkbGUgb2YgYSAiZ2l0IHJldmVydCIgc2Vzc2lvbi4KKworICogInN1Ym1vZHVsZSBzdW1tYXJ5IC0tc3VtbWFyeS1saW1pdCIgb3B0aW9uIGRpZCBub3Qgc3VwcG9ydCB0aGUKKyAgICItLW9wdGlvbj12YWx1ZSIgZm9ybS4KKworICogImluZGV4LXBhY2sgLS1maXgtdGhpbiIgdXNlZCBhbiB1bmluaXRpYWxpemVkIHZhbHVlIHRvIGNvbXB1dGUKKyAgIHRoZSBkZWx0YSBkZXB0aHMgb2Ygb2JqZWN0cyBpdCBhcHBlbmRzIHRvIHRoZSByZXN1bHRpbmcgcGFjay4KKworICogImluZGV4LXBhY2sgLS12ZXJpZnktc3RhdCIgdXNlZCBhIGZldyBjb3VudGVycyBvdXRzaWRlIHRoZSBwcm90ZWN0aW9uCisgICBvZiBhIG11dGV4LCBwb3NzaWJseSBzaG93aW5nIGluY29ycmVjdCBudW1iZXJzLgorCisgKiBUaGUgY29kZSB0byBrZWVwIHRyYWNrIG9mIHdoYXQgZGlyZWN0b3J5IG5hbWVzIGFyZSBrbm93biB0byBHaXQgb24KKyAgIHBsYXRmb3JtcyB3aXRoIGNhc2UgaW5zZW5zaXRpdmUgZmlsZXN5c3RlbXMgY291bGQgZ2V0IGNvbmZ1c2VkIHVwb24gYQorICAgaGFzaCBjb2xsaXNpb24gYmV0d2VlbiB0aGVzZSBwYXRobmFtZXMgYW5kIHdvdWxkIGxvb3AgZm9yZXZlci4KKworICogQW5ub3RhdGVkIHRhZ3Mgb3V0c2lkZSB0aGUgcmVmcy90YWdzLyBoaWVyYXJjaHkgd2VyZSBub3QgYWR2ZXJ0aXNlZAorICAgY29ycmVjdGx5IHRvIGxzLXJlbW90ZSBhbmQgZmV0Y2ggd2l0aCByZWNlbnQgdmVyc2lvbnMgb2YgR2l0LgorCisgKiBSZWNlbnQgb3B0aW1pemF0aW9ucyBicm9rZSBzaGFsbG93IGNsb25lcy4KKworICogImdpdCBjbWQgLS0gJzoodG9wJyIgd2FzIG5vdCBkaWFnbm9zZWQgYXMgYW4gaW52YWxpZCBzeW50YXgsIGFuZAorICAgaW5zdGVhZCB0aGUgcGFyc2VyIGtlcHQgcmVhZGluZyBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLgorCisgKiAiZ2l0IHRhZyAtZiA8dGFnPiIgYWx3YXlzIHNhaWQgIlVwZGF0ZWQgdGFnICc8dGFnPiciIGV2ZW4gd2hlbgorICAgY3JlYXRpbmcgYSBuZXcgdGFnIChpLmUuIG5laXRoZXIgb3ZlcndyaXRpbmcgbm9yIHVwZGF0aW5nKS4KKworICogImdpdCBwNCIgZGlkIG5vdCBiZWhhdmUgd2VsbCB3aGVuIHRoZSBwYXRoIHRvIHRoZSByb290IG9mIHRoZSBQNAorICAgY2xpZW50IHdhcyBub3QgaXRzIHJlYWwgcGF0aC4KKyAgIChtZXJnZSBiYmQ4NDg2IHB3L3A0LXN5bWxpbmtlZC1yb290IGxhdGVyIHRvIG1haW50KS4KKworICogImdpdCBhcmNoaXZlIiByZXBvcnRlZCBhIGZhaWx1cmUgd2hlbiBhc2tlZCB0byBjcmVhdGUgYW4gYXJjaGl2ZSBvdXQKKyAgIG9mIGFuIGVtcHR5IHRyZWUuICBJdCBpcyBtb3JlIGludHVpdGl2ZSB0byBnaXZlIGFuIGVtcHR5CisgICBhcmNoaXZlIGJhY2sgaW4gc3VjaCBhIGNhc2UuCisKKyAqIFdoZW4gImZvcm1hdC1wYXRjaCIgcXVvdGVkIGEgbm9uLWFzY2lpIHN0cmluZyBpbiBoZWFkZXIgZmlsZXMsCisgICBpdCBpbmNvcnJlY3RseSBhcHBsaWVkIHJmYzIwNDcgYW5kIGNob3BwZWQgYSBzaW5nbGUgY2hhcmFjdGVyIGluCisgICB0aGUgbWlkZGxlIG9mIHRoZSBzdHJpbmcuCisKKyAqIEFuIGFsaWFzZWQgY29tbWFuZCBzcGF3bmVkIGZyb20gYSBiYXJlIHJlcG9zaXRvcnkgdGhhdCBkb2VzIG5vdCBzYXkKKyAgIGl0IGlzIGJhcmUgd2l0aCAiY29yZS5iYXJlID0geWVzIiB3YXMgdHJlYXRlZCBhcyBub24tYmFyZSBieSBtaXN0YWtlLgorCisgKiBJbiAiZ2l0IHJlZmxvZyBleHBpcmUiLCB0aGUgUkVBQ0hBQkxFIGJpdCB3YXMgbm90IGNsZWFyZWQgZnJvbSB0aGUKKyAgIGNvcnJlY3Qgb2JqZWN0cy4KKworICogVGhlIGxvZ2ljIHVzZWQgYnkgImdpdCBkaWZmIC1NIC0tc3RhdCIgdG8gc2hvcnRlbiB0aGUgbmFtZXMgb2YKKyAgIGZpbGVzIGJlZm9yZSBhbmQgYWZ0ZXIgYSByZW5hbWUgZGlkIG5vdCB3b3JrIGNvcnJlY3RseSB3aGVuIHRoZQorICAgY29tbW9uIHByZWZpeCBhbmQgc3VmZml4IGJldHdlZW4gdGhlIHR3byBmaWxlbmFtZXMgb3ZlcmxhcHBlZC4KKworICogVGhlICItLW1hdGNoPTxwYXR0ZXJuPiIgb3B0aW9uIG9mICJnaXQgZGVzY3JpYmUiLCB3aGVuIHVzZWQgd2l0aAorICAgIi0tYWxsIiB0byBhbGxvdyByZWZzIHRoYXQgYXJlIG5vdCBhbm5vdGF0ZWQgdGFncyB0byBiZSBhCisgICBiYXNlIG9mIGRlc2NyaXB0aW9uLCBkaWQgbm90IHJlc3RyaWN0IHRoZSBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZAorICAgdG8gdGhvc2UgcmVmcyB0aGF0IG1hdGNoIHRoZSBnaXZlbiBwYXR0ZXJuLgorCisgKiBDbGFyaWZ5IGluIHRoZSBkb2N1bWVudGF0aW9uICJ3aGF0IiBnZXRzIHB1c2hlZCB0byAid2hlcmUiIHdoZW4gdGhlCisgICBjb21tYW5kIGxpbmUgdG8gImdpdCBwdXNoIiBkb2VzIG5vdCBzYXkgdGhlc2UgZXhwbGljaXRseS4KKworICogVGhlICItLWNvbG9yPTx3aGVuPiIgYXJndW1lbnQgdG8gdGhlIGNvbW1hbmRzIGluIHRoZSBkaWZmIGZhbWlseQorICAgd2FzIGRlc2NyaWJlZCBwb29ybHkuCisKKyAqIFRoZSBhcmd1bWVudHMgZ2l2ZW4gdG8gdGhlIHByZS1yZWJhc2UgaG9vayB3ZXJlIG5vdCBkb2N1bWVudGVkLgorCisgKiBUaGUgdjQgaW5kZXggZm9ybWF0IHdhcyBub3QgZG9jdW1lbnRlZC4KKworICogVGhlICItLW1hdGNoPTxwYXR0ZXJuPiIgYXJndW1lbnQgImdpdCBkZXNjcmliZSIgdGFrZXMgdXNlcyBnbG9iCisgICBwYXR0ZXJuIGJ1dCBpdCB3YXNuJ3Qgb2J2aW91cyBmcm9tIHRoZSBkb2N1bWVudGF0aW9uLgorCisgKiBTb21lIHNvdXJjZXMgZmFpbGVkIHRvIGNvbXBpbGUgb24gc3lzdGVtcyB0aGF0IGxhY2sgTklfTUFYSE9TVCBpbgorICAgdGhlaXIgc3lzdGVtIGhlYWRlciAoZS5nLiB6L09TKS4KKworICogQWRkIGFuIGV4YW1wbGUgdXNlIG9mICItLWVudi1maWx0ZXIiIGluICJmaWx0ZXItYnJhbmNoIgorICAgZG9jdW1lbnRhdGlvbi4KKworICogImdpdCBidW5kbGUgdmVyaWZ5IiBkaWQgbm90IHNheSAicmVjb3JkcyBhIGNvbXBsZXRlIGhpc3RvcnkiIGZvciBhCisgICBidW5kbGUgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBwcmVyZXF1aXNpdGVzLgorCisgKiBJbiB0aGUgdjEuOC4wIGVyYSwgd2UgY2hhbmdlZCBzeW1ib2xzIHRoYXQgZG8gbm90IGhhdmUgdG8gYmUgZ2xvYmFsCisgICB0byBmaWxlIHNjb3BlIHN0YXRpYywgYnV0IGEgZmV3IGZ1bmN0aW9ucyBpbiBncmFwaC5jIHdlcmUgdXNlZCBieQorICAgQ0dpdCBzaWRld2F5cywgYnlwYXNzaW5nIHRoZSBlbnRyeSBwb2ludHMgb2YgdGhlIEFQSSB0aGUKKyAgIGluLXRyZWUgdXNlcnMgdXNlLgorCisgKiAiZ2l0IHVwZGF0ZS1pbmRleCAtaCIgZGlkIG5vdCBkbyB0aGUgdXN1YWwgIi1oKGVscCkiIHRoaW5nLgorCisgKiAiZ2l0IGluZGV4LXBhY2siIGhhZCBhIGJ1ZmZlci1vdmVyZmxvdyB3aGlsZSBwcmVwYXJpbmcgYW4KKyAgIGluZm9ybWF0aW9uYWwgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2xhdGVkIHZlcnNpb24gb2YgaXQgd2FzIHRvbworICAgbG9uZy4KKworICogJ2dpdCBjb21taXQgLW0gIiRtc2ciJyB1c2VkIHRvIGFkZCBhbiBleHRyYSBuZXdsaW5lIGV2ZW4gd2hlbgorICAgJG1zZyBhbHJlYWR5IGVuZGVkIHdpdGggb25lLgorCisgKiBUaGUgU1NMIHBlZXIgdmVyaWZpY2F0aW9uIGRvbmUgYnkgImdpdCBpbWFwLXNlbmQiIGRpZCBub3QgYXNrIGZvcgorICAgU2VydmVyIE5hbWUgSW5kaWNhdGlvbiAoUkZDIDQzNjYpLCBmYWlsaW5nIHRvIGNvbm5lY3QgdG8gU1NML1RMUworICAgc2l0ZXMgdGhhdCBzZXJ2ZSBtdWx0aXBsZSBob3N0bmFtZXMgb24gYSBzaW5nbGUgSVAuCisKKyAqIHBlcmwvR2l0LnBtOjpjYXRfYmxvYiBzbHVycGVkIGV2ZXJ5dGhpbmcgaW4gY29yZSBvbmx5IHRvIHdyaXRlIGl0CisgICBvdXQgdG8gYSBmaWxlIGRlc2NyaXB0b3IsIHdoaWNoIHdhcyBub3QgYSB2ZXJ5IHNtYXJ0IHRoaW5nIHRvIGRvLgorCisgKiAiZ2l0IGJyYW5jaCIgZGlkIG5vdCBib3RoZXIgdG8gY2hlY2sgbm9uc2Vuc2UgY29tbWFuZCBsaW5lCisgICBwYXJhbWV0ZXJzLiAgSXQgbm93IGlzc3VlcyBlcnJvcnMgaW4gbWFueSBjYXNlcy4KKworICogVmVyaWZpY2F0aW9uIG9mIHNpZ25lZCB0YWdzIHdhcyBub3QgZG9uZSBjb3JyZWN0bHkgd2hlbiBub3QgaW4gQworICAgb3IgZW4vVVMgbG9jYWxlLgorCisgKiBTb21lIHBsYXRmb3JtcyBhbmQgdXNlcnMgc3BlbGwgVVRGLTggZGlmZmVyZW50bHk7IHJldHJ5IHdpdGggdGhlCisgICBtb3N0IG9mZmljaWFsICJVVEYtOCIgd2hlbiB0aGUgc3lzdGVtIGRvZXMgbm90IHVuZGVyc3RhbmQgdGhlCisgICB1c2VyLXN1cHBsaWVkIGVuY29kaW5nIG5hbWUgdGhhdCBpcyBhIGNvbW1vbiBhbHRlcm5hdGl2ZQorICAgc3BlbGxpbmcgb2YgVVRGLTguCisKKyAqIFdoZW4gZXhwb3J0LXN1YnN0IGlzIHVzZWQsICJ6aXAiIG91dHB1dCByZWNvcmRlZCBhbiBpbmNvcnJlY3QKKyAgIHNpemUgb2YgdGhlIGZpbGUuCisKKyAqICJnaXQgYW0gJG1haWxkaXIvIiBhcHBsaWVkIG1lc3NhZ2VzIGluIGFuIHVuZXhwZWN0ZWQgb3JkZXI7IHNvcnQKKyAgIGZpbGVuYW1lcyByZWFkIGZyb20gdGhlIG1haWxkaXIvIGluIGEgd2F5IHRoYXQgaXMgbW9yZSBsaWtlbHkgdG8KKyAgIHNvcnQgdGhlIG1lc3NhZ2VzIGluIHRoZSBvcmRlciB0aGUgd3JpdGluZyBNVUEgbWVhbnQgdG8sIGJ5IHNvcnRpbmcKKyAgIG51bWVyaWMgc2VnbWVudHMgaW4gbnVtZXJpYyBvcmRlciBhbmQgbm9uLW51bWVyaWMgc2VnbWVudHMgaW4KKyAgIGFscGhhYmV0aWNhbCBvcmRlci4KKworICogImdpdCBzdWJtb2R1bGUgdXBkYXRlIiwgd2hlbiByZWN1cnNlZCBpbnRvIHN1Yi1zdWJtb2R1bGVzLCBkaWQgbm90CisgICBhY2N1bXVsYXRlIHRoZSBwcmVmaXggcGF0aHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzIGIvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcwppbmRleCAwZGJmMmM5Li5kMGE0NzMzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzCisrKyBiL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMKQEAgLTEsNjUgKzEsNSBAQAotQ2hlY2tsaXN0IChhbmQgYSBzaG9ydCB2ZXJzaW9uIGZvciB0aGUgaW1wYXRpZW50KToKLQotCUNvbW1pdHM6Ci0KLQktIG1ha2UgY29tbWl0cyBvZiBsb2dpY2FsIHVuaXRzCi0JLSBjaGVjayBmb3IgdW5uZWNlc3Nhcnkgd2hpdGVzcGFjZSB3aXRoICJnaXQgZGlmZiAtLWNoZWNrIgotCSAgYmVmb3JlIGNvbW1pdHRpbmcKLQktIGRvIG5vdCBjaGVjayBpbiBjb21tZW50ZWQgb3V0IGNvZGUgb3IgdW5uZWVkZWQgZmlsZXMKLQktIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBjb21taXQgbWVzc2FnZSBzaG91bGQgYmUgYSBzaG9ydAotCSAgZGVzY3JpcHRpb24gKDUwIGNoYXJhY3RlcnMgaXMgdGhlIHNvZnQgbGltaXQsIHNlZSBESVNDVVNTSU9OCi0JICBpbiBnaXQtY29tbWl0KDEpKSwgYW5kIHNob3VsZCBza2lwIHRoZSBmdWxsIHN0b3AKLQktIHRoZSBib2R5IHNob3VsZCBwcm92aWRlIGEgbWVhbmluZ2Z1bCBjb21taXQgbWVzc2FnZSwgd2hpY2g6Ci0JICAuIGV4cGxhaW5zIHRoZSBwcm9ibGVtIHRoZSBjaGFuZ2UgdHJpZXMgdG8gc29sdmUsIGlvdywgd2hhdAotCSAgICBpcyB3cm9uZyB3aXRoIHRoZSBjdXJyZW50IGNvZGUgd2l0aG91dCB0aGUgY2hhbmdlLgotCSAgLiBqdXN0aWZpZXMgdGhlIHdheSB0aGUgY2hhbmdlIHNvbHZlcyB0aGUgcHJvYmxlbSwgaW93LCB3aHkKLQkgICAgdGhlIHJlc3VsdCB3aXRoIHRoZSBjaGFuZ2UgaXMgYmV0dGVyLgotCSAgLiBhbHRlcm5hdGUgc29sdXRpb25zIGNvbnNpZGVyZWQgYnV0IGRpc2NhcmRlZCwgaWYgYW55LgotCS0gZGVzY3JpYmUgY2hhbmdlcyBpbiBpbXBlcmF0aXZlIG1vb2QsIGUuZy4gIm1ha2UgeHl6enkgZG8gZnJvdHoiCi0JICBpbnN0ZWFkIG9mICJbVGhpcyBwYXRjaF0gbWFrZXMgeHl6enkgZG8gZnJvdHoiIG9yICJbSV0gY2hhbmdlZAotCSAgeHl6enkgdG8gZG8gZnJvdHoiLCBhcyBpZiB5b3UgYXJlIGdpdmluZyBvcmRlcnMgdG8gdGhlIGNvZGViYXNlCi0JICB0byBjaGFuZ2UgaXRzIGJlaGF2aW91ci4KLQktIHRyeSB0byBtYWtlIHN1cmUgeW91ciBleHBsYW5hdGlvbiBjYW4gYmUgdW5kZXJzdG9vZCB3aXRob3V0Ci0JICBleHRlcm5hbCByZXNvdXJjZXMuIEluc3RlYWQgb2YgZ2l2aW5nIGEgVVJMIHRvIGEgbWFpbGluZyBsaXN0Ci0JICBhcmNoaXZlLCBzdW1tYXJpemUgdGhlIHJlbGV2YW50IHBvaW50cyBvZiB0aGUgZGlzY3Vzc2lvbi4KLQktIGFkZCBhICJTaWduZWQtb2ZmLWJ5OiBZb3VyIE5hbWUgPHlvdUBleGFtcGxlLmNvbT4iIGxpbmUgdG8gdGhlCi0JICBjb21taXQgbWVzc2FnZSAob3IganVzdCB1c2UgdGhlIG9wdGlvbiAiLXMiIHdoZW4gY29tbWl0dGluZykKLQkgIHRvIGNvbmZpcm0gdGhhdCB5b3UgYWdyZWUgdG8gdGhlIERldmVsb3BlcidzIENlcnRpZmljYXRlIG9mIE9yaWdpbgotCS0gbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgdGVzdHMgZm9yIHRoZSBidWcgeW91IGFyZSBmaXhpbmcKLQktIG1ha2Ugc3VyZSB0aGF0IHRoZSB0ZXN0IHN1aXRlIHBhc3NlcyBhZnRlciB5b3VyIGNvbW1pdAotCi0JUGF0Y2g6Ci0KLQktIHVzZSAiZ2l0IGZvcm1hdC1wYXRjaCAtTSIgdG8gY3JlYXRlIHRoZSBwYXRjaAotCS0gZG8gbm90IFBHUCBzaWduIHlvdXIgcGF0Y2gKLQktIGRvIG5vdCBhdHRhY2ggeW91ciBwYXRjaCwgYnV0IHJlYWQgaW4gdGhlIG1haWwKLQkgIGJvZHksIHVubGVzcyB5b3UgY2Fubm90IHRlYWNoIHlvdXIgbWFpbGVyIHRvCi0JICBsZWF2ZSB0aGUgZm9ybWF0dGluZyBvZiB0aGUgcGF0Y2ggYWxvbmUuCi0JLSBiZSBjYXJlZnVsIGRvaW5nIGN1dCAmIHBhc3RlIGludG8geW91ciBtYWlsZXIsIG5vdCB0bwotCSAgY29ycnVwdCB3aGl0ZXNwYWNlcy4KLQktIHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiAod2hpY2ggaXMgdW5zdWl0YWJsZSBmb3IKLQkgIHRoZSBjb21taXQgbWVzc2FnZSkgYmV0d2VlbiB0aGUgIi0tLSIgYW5kIHRoZSBkaWZmc3RhdAotCS0gaWYgeW91IGNoYW5nZSwgYWRkLCBvciByZW1vdmUgYSBjb21tYW5kIGxpbmUgb3B0aW9uIG9yCi0JICBtYWtlIHNvbWUgb3RoZXIgdXNlciBpbnRlcmZhY2UgY2hhbmdlLCB0aGUgYXNzb2NpYXRlZAotCSAgZG9jdW1lbnRhdGlvbiBzaG91bGQgYmUgdXBkYXRlZCBhcyB3ZWxsLgotCS0gaWYgeW91ciBuYW1lIGlzIG5vdCB3cml0YWJsZSBpbiBBU0NJSSwgbWFrZSBzdXJlIHRoYXQKLQkgIHlvdSBzZW5kIG9mZiBhIG1lc3NhZ2UgaW4gdGhlIGNvcnJlY3QgZW5jb2RpbmcuCi0JLSBzZW5kIHRoZSBwYXRjaCB0byB0aGUgbGlzdCAoZ2l0QHZnZXIua2VybmVsLm9yZykgYW5kIHRoZQotCSAgbWFpbnRhaW5lciAoZ2l0c3RlckBwb2JveC5jb20pIGlmIChhbmQgb25seSBpZikgdGhlIHBhdGNoCi0JICBpcyByZWFkeSBmb3IgaW5jbHVzaW9uLiBJZiB5b3UgdXNlIGdpdC1zZW5kLWVtYWlsKDEpLAotCSAgcGxlYXNlIHRlc3QgaXQgZmlyc3QgYnkgc2VuZGluZyBlbWFpbCB0byB5b3Vyc2VsZi4KLQktIHNlZSBiZWxvdyBmb3IgaW5zdHJ1Y3Rpb25zIHNwZWNpZmljIHRvIHlvdXIgbWFpbGVyCi0KLUxvbmcgdmVyc2lvbjoKLQotSSBzdGFydGVkIHJlYWRpbmcgb3ZlciB0aGUgU3VibWl0dGluZ1BhdGNoZXMgZG9jdW1lbnQgZm9yIExpbnV4Ci1rZXJuZWwsIHByaW1hcmlseSBiZWNhdXNlIEkgd2FudGVkIHRvIGhhdmUgYSBkb2N1bWVudCBzaW1pbGFyIHRvCi1pdCBmb3IgdGhlIGNvcmUgR0lUIHRvIG1ha2Ugc3VyZSBwZW9wbGUgdW5kZXJzdGFuZCB3aGF0IHRoZXkgYXJlCi1kb2luZyB3aGVuIHRoZXkgd3JpdGUgIlNpZ25lZC1vZmYtYnkiIGxpbmUuCi0KLUJ1dCB0aGUgcGF0Y2ggc3VibWlzc2lvbiByZXF1aXJlbWVudHMgYXJlIGEgbG90IG1vcmUgcmVsYXhlZAotaGVyZSBvbiB0aGUgdGVjaG5pY2FsL2NvbnRlbnRzIGZyb250LCBiZWNhdXNlIHRoZSBjb3JlIEdJVCBpcwotdGhvdXNhbmQgdGltZXMgc21hbGxlciA7LSkuICBTbyBoZXJlIGlzIG9ubHkgdGhlIHJlbGV2YW50IGJpdHMuCitIZXJlIGFyZSBzb21lIGd1aWRlbGluZXMgZm9yIHBlb3BsZSB3aG8gd2FudCB0byBjb250cmlidXRlIHRoZWlyIGNvZGUKK3RvIHRoaXMgc29mdHdhcmUuCiAKICgwKSBEZWNpZGUgd2hhdCB0byBiYXNlIHlvdXIgd29yayBvbi4KIApAQCAtODYsNiArMjYsMTAgQEAKICAgIHdhaXQgdW50aWwgc29tZSBvZiB0aGUgZGVwZW5kZW50IHRvcGljcyBncmFkdWF0ZSB0byAnbWFzdGVyJywgYW5kCiAgICByZWJhc2UgeW91ciB3b3JrLgogCisgLSBTb21lIHBhcnRzIG9mIHRoZSBzeXN0ZW0gaGF2ZSBkZWRpY2F0ZWQgbWFpbnRhaW5lcnMgd2l0aCB0aGVpciBvd24KKyAgIHJlcG9zaXRvcmllcyAoc2VlIHRoZSBzZWN0aW9uICJTdWJzeXN0ZW1zIiBiZWxvdykuICBDaGFuZ2VzIHRvCisgICB0aGVzZSBwYXJ0cyBzaG91bGQgYmUgYmFzZWQgb24gdGhlaXIgdHJlZXMuCisKIFRvIGZpbmQgdGhlIHRpcCBvZiBhIHRvcGljIGJyYW5jaCwgcnVuICJnaXQgbG9nIC0tZmlyc3QtcGFyZW50CiBtYXN0ZXIuLnB1IiBhbmQgbG9vayBmb3IgdGhlIG1lcmdlIGNvbW1pdC4gVGhlIHNlY29uZCBwYXJlbnQgb2YgdGhpcwogY29tbWl0IGlzIHRoZSB0aXAgb2YgdGhlIHRvcGljIGJyYW5jaC4KQEAgLTExMyw0OSArNTcsODEgQEAKIGRpZmZlcnMgc3Vic3RhbnRpYWxseSBmcm9tIHRoZSBwcmlvciB2ZXJzaW9uLCBhcmUgYWxsIGdvb2QgdGhpbmdzCiB0byBoYXZlLgogCitNYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSB0ZXN0cyBmb3IgdGhlIGJ1ZyB5b3UgYXJlIGZpeGluZy4KKworV2hlbiBhZGRpbmcgYSBuZXcgZmVhdHVyZSwgbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgbmV3IHRlc3RzIHRvIHNob3cKK3RoZSBmZWF0dXJlIHRyaWdnZXJzIHRoZSBuZXcgYmVoYXZpb3VyIHdoZW4gaXQgc2hvdWxkLCBhbmQgdG8gc2hvdyB0aGUKK2ZlYXR1cmUgZG9lcyBub3QgdHJpZ2dlciB3aGVuIGl0IHNob3VsZG4ndC4gIEFsc28gbWFrZSBzdXJlIHRoYXQgdGhlCit0ZXN0IHN1aXRlIHBhc3NlcyBhZnRlciB5b3VyIGNvbW1pdC4gIERvIG5vdCBmb3JnZXQgdG8gdXBkYXRlIHRoZQorZG9jdW1lbnRhdGlvbiB0byBkZXNjcmliZSB0aGUgdXBkYXRlZCBiZWhhdmlvdXIuCisKIE9oLCBhbm90aGVyIHRoaW5nLiAgSSBhbSBwaWNreSBhYm91dCB3aGl0ZXNwYWNlcy4gIE1ha2Ugc3VyZSB5b3VyCiBjaGFuZ2VzIGRvIG5vdCB0cmlnZ2VyIGVycm9ycyB3aXRoIHRoZSBzYW1wbGUgcHJlLWNvbW1pdCBob29rIHNoaXBwZWQKIGluIHRlbXBsYXRlcy9ob29rcy0tcHJlLWNvbW1pdC4gIFRvIGhlbHAgZW5zdXJlIHRoaXMgZG9lcyBub3QgaGFwcGVuLAogcnVuIGdpdCBkaWZmIC0tY2hlY2sgb24geW91ciBjaGFuZ2VzIGJlZm9yZSB5b3UgY29tbWl0LgogCiAKLSgxYSkgVHJ5IHRvIGJlIG5pY2UgdG8gb2xkZXIgQyBjb21waWxlcnMKKygyKSBEZXNjcmliZSB5b3VyIGNoYW5nZXMgd2VsbC4KIAotV2UgdHJ5IHRvIHN1cHBvcnQgYSB3aWRlIHJhbmdlIG9mIEMgY29tcGlsZXJzIHRvIGNvbXBpbGUKLWdpdCB3aXRoLiBUaGF0IG1lYW5zIHRoYXQgeW91IHNob3VsZCBub3QgdXNlIEM5OSBpbml0aWFsaXplcnMsIGV2ZW4KLWlmIGEgbG90IG9mIGNvbXBpbGVycyBncm9rIGl0LgorVGhlIGZpcnN0IGxpbmUgb2YgdGhlIGNvbW1pdCBtZXNzYWdlIHNob3VsZCBiZSBhIHNob3J0IGRlc2NyaXB0aW9uICg1MAorY2hhcmFjdGVycyBpcyB0aGUgc29mdCBsaW1pdCwgc2VlIERJU0NVU1NJT04gaW4gZ2l0LWNvbW1pdCgxKSksIGFuZAorc2hvdWxkIHNraXAgdGhlIGZ1bGwgc3RvcC4gIEl0IGlzIGFsc28gY29udmVudGlvbmFsIGluIG1vc3QgY2FzZXMgdG8KK3ByZWZpeCB0aGUgZmlyc3QgbGluZSB3aXRoICJhcmVhOiAiIHdoZXJlIHRoZSBhcmVhIGlzIGEgZmlsZW5hbWUgb3IKK2lkZW50aWZpZXIgZm9yIHRoZSBnZW5lcmFsIGFyZWEgb2YgdGhlIGNvZGUgYmVpbmcgbW9kaWZpZWQsIGUuZy4KIAotQWxzbywgdmFyaWFibGVzIGhhdmUgdG8gYmUgZGVjbGFyZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sKLSh5b3UgY2FuIGNoZWNrIHRoaXMgd2l0aCBnY2MsIHVzaW5nIHRoZSAtV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudAotb3B0aW9uKS4KKyAgLiBhcmNoaXZlOiB1c3RhciBoZWFkZXIgY2hlY2tzdW0gaXMgY29tcHV0ZWQgdW5zaWduZWQKKyAgLiBnaXQtY2hlcnJ5LXBpY2sudHh0OiBjbGFyaWZ5IHRoZSB1c2Ugb2YgcmV2aXNpb24gcmFuZ2Ugbm90YXRpb24KIAotQW5vdGhlciB0aGluZzogTlVMTCBwb2ludGVycyBzaGFsbCBiZSB3cml0dGVuIGFzIE5VTEwsIG5vdCBhcyAwLgorSWYgaW4gZG91YnQgd2hpY2ggaWRlbnRpZmllciB0byB1c2UsIHJ1biAiZ2l0IGxvZyAtLW5vLW1lcmdlcyIgb24gdGhlCitmaWxlcyB5b3UgYXJlIG1vZGlmeWluZyB0byBzZWUgdGhlIGN1cnJlbnQgY29udmVudGlvbnMuCisKK1RoZSBib2R5IHNob3VsZCBwcm92aWRlIGEgbWVhbmluZ2Z1bCBjb21taXQgbWVzc2FnZSwgd2hpY2g6CisKKyAgLiBleHBsYWlucyB0aGUgcHJvYmxlbSB0aGUgY2hhbmdlIHRyaWVzIHRvIHNvbHZlLCBpb3csIHdoYXQgaXMgd3JvbmcKKyAgICB3aXRoIHRoZSBjdXJyZW50IGNvZGUgd2l0aG91dCB0aGUgY2hhbmdlLgorCisgIC4ganVzdGlmaWVzIHRoZSB3YXkgdGhlIGNoYW5nZSBzb2x2ZXMgdGhlIHByb2JsZW0sIGlvdywgd2h5IHRoZQorICAgIHJlc3VsdCB3aXRoIHRoZSBjaGFuZ2UgaXMgYmV0dGVyLgorCisgIC4gYWx0ZXJuYXRlIHNvbHV0aW9ucyBjb25zaWRlcmVkIGJ1dCBkaXNjYXJkZWQsIGlmIGFueS4KKworRGVzY3JpYmUgeW91ciBjaGFuZ2VzIGluIGltcGVyYXRpdmUgbW9vZCwgZS5nLiAibWFrZSB4eXp6eSBkbyBmcm90eiIKK2luc3RlYWQgb2YgIltUaGlzIHBhdGNoXSBtYWtlcyB4eXp6eSBkbyBmcm90eiIgb3IgIltJXSBjaGFuZ2VkIHh5enp5Cit0byBkbyBmcm90eiIsIGFzIGlmIHlvdSBhcmUgZ2l2aW5nIG9yZGVycyB0byB0aGUgY29kZWJhc2UgdG8gY2hhbmdlCitpdHMgYmVoYXZpb3VyLiAgVHJ5IHRvIG1ha2Ugc3VyZSB5b3VyIGV4cGxhbmF0aW9uIGNhbiBiZSB1bmRlcnN0b29kCit3aXRob3V0IGV4dGVybmFsIHJlc291cmNlcy4gSW5zdGVhZCBvZiBnaXZpbmcgYSBVUkwgdG8gYSBtYWlsaW5nIGxpc3QKK2FyY2hpdmUsIHN1bW1hcml6ZSB0aGUgcmVsZXZhbnQgcG9pbnRzIG9mIHRoZSBkaXNjdXNzaW9uLgogCiAKLSgyKSBHZW5lcmF0ZSB5b3VyIHBhdGNoIHVzaW5nIGdpdCB0b29scyBvdXQgb2YgeW91ciBjb21taXRzLgorKDMpIEdlbmVyYXRlIHlvdXIgcGF0Y2ggdXNpbmcgR2l0IHRvb2xzIG91dCBvZiB5b3VyIGNvbW1pdHMuCiAKLWdpdCBiYXNlZCBkaWZmIHRvb2xzIGdlbmVyYXRlIHVuaWRpZmYgd2hpY2ggaXMgdGhlIHByZWZlcnJlZCBmb3JtYXQuCitHaXQgYmFzZWQgZGlmZiB0b29scyBnZW5lcmF0ZSB1bmlkaWZmIHdoaWNoIGlzIHRoZSBwcmVmZXJyZWQgZm9ybWF0LgogCiBZb3UgZG8gbm90IGhhdmUgdG8gYmUgYWZyYWlkIHRvIHVzZSAtTSBvcHRpb24gdG8gImdpdCBkaWZmIiBvcgogImdpdCBmb3JtYXQtcGF0Y2giLCBpZiB5b3VyIHBhdGNoIGludm9sdmVzIGZpbGUgcmVuYW1lcy4gIFRoZQogcmVjZWl2aW5nIGVuZCBjYW4gaGFuZGxlIHRoZW0ganVzdCBmaW5lLgogCi1QbGVhc2UgbWFrZSBzdXJlIHlvdXIgcGF0Y2ggZG9lcyBub3QgaW5jbHVkZSBhbnkgZXh0cmEgZmlsZXMKLXdoaWNoIGRvIG5vdCBiZWxvbmcgaW4gYSBwYXRjaCBzdWJtaXNzaW9uLiAgTWFrZSBzdXJlIHRvIHJldmlldworUGxlYXNlIG1ha2Ugc3VyZSB5b3VyIHBhdGNoIGRvZXMgbm90IGFkZCBjb21tZW50ZWQgb3V0IGRlYnVnZ2luZyBjb2RlLAorb3IgaW5jbHVkZSBhbnkgZXh0cmEgZmlsZXMgd2hpY2ggZG8gbm90IHJlbGF0ZSB0byB3aGF0IHlvdXIgcGF0Y2gKK2lzIHRyeWluZyB0byBhY2hpZXZlLiBNYWtlIHN1cmUgdG8gcmV2aWV3CiB5b3VyIHBhdGNoIGFmdGVyIGdlbmVyYXRpbmcgaXQsIHRvIGVuc3VyZSBhY2N1cmFjeS4gIEJlZm9yZQogc2VuZGluZyBvdXQsIHBsZWFzZSBtYWtlIHN1cmUgaXQgY2xlYW5seSBhcHBsaWVzIHRvIHRoZSAibWFzdGVyIgogYnJhbmNoIGhlYWQuICBJZiB5b3UgYXJlIHByZXBhcmluZyBhIHdvcmsgYmFzZWQgb24gIm5leHQiIGJyYW5jaCwKIHRoYXQgaXMgZmluZSwgYnV0IHBsZWFzZSBtYXJrIGl0IGFzIHN1Y2guCiAKIAotKDMpIFNlbmRpbmcgeW91ciBwYXRjaGVzLgorKDQpIFNlbmRpbmcgeW91ciBwYXRjaGVzLgogCi1QZW9wbGUgb24gdGhlIGdpdCBtYWlsaW5nIGxpc3QgbmVlZCB0byBiZSBhYmxlIHRvIHJlYWQgYW5kCitQZW9wbGUgb24gdGhlIEdpdCBtYWlsaW5nIGxpc3QgbmVlZCB0byBiZSBhYmxlIHRvIHJlYWQgYW5kCiBjb21tZW50IG9uIHRoZSBjaGFuZ2VzIHlvdSBhcmUgc3VibWl0dGluZy4gIEl0IGlzIGltcG9ydGFudCBmb3IKIGEgZGV2ZWxvcGVyIHRvIGJlIGFibGUgdG8gInF1b3RlIiB5b3VyIGNoYW5nZXMsIHVzaW5nIHN0YW5kYXJkCiBlLW1haWwgdG9vbHMsIHNvIHRoYXQgdGhleSBtYXkgY29tbWVudCBvbiBzcGVjaWZpYyBwb3J0aW9ucyBvZgogeW91ciBjb2RlLiAgRm9yIHRoaXMgcmVhc29uLCBhbGwgcGF0Y2hlcyBzaG91bGQgYmUgc3VibWl0dGVkCi0iaW5saW5lIi4gIFdBUk5JTkc6IEJlIHdhcnkgb2YgeW91ciBNVUFzIHdvcmQtd3JhcAorImlubGluZSIuICBJZiB5b3VyIGxvZyBtZXNzYWdlIChpbmNsdWRpbmcgeW91ciBuYW1lIG9uIHRoZQorU2lnbmVkLW9mZi1ieSBsaW5lKSBpcyBub3Qgd3JpdGFibGUgaW4gQVNDSUksIG1ha2Ugc3VyZSB0aGF0Cit5b3Ugc2VuZCBvZmYgYSBtZXNzYWdlIGluIHRoZSBjb3JyZWN0IGVuY29kaW5nLgorCitXQVJOSU5HOiBCZSB3YXJ5IG9mIHlvdXIgTVVBcyB3b3JkLXdyYXAKIGNvcnJ1cHRpbmcgeW91ciBwYXRjaC4gIERvIG5vdCBjdXQtbi1wYXN0ZSB5b3VyIHBhdGNoOyB5b3UgY2FuCiBsb3NlIHRhYnMgdGhhdCB3YXkgaWYgeW91IGFyZSBub3QgY2FyZWZ1bC4KIApAQCAtMTc5LDcgKzE1NSw4IEBACiAKIFlvdSBvZnRlbiB3YW50IHRvIGFkZCBhZGRpdGlvbmFsIGV4cGxhbmF0aW9uIGFib3V0IHRoZSBwYXRjaCwKIG90aGVyIHRoYW4gdGhlIGNvbW1pdCBtZXNzYWdlIGl0c2VsZi4gIFBsYWNlIHN1Y2ggImNvdmVyIGxldHRlciIKLW1hdGVyaWFsIGJldHdlZW4gdGhlIHRocmVlIGRhc2ggbGluZXMgYW5kIHRoZSBkaWZmc3RhdC4KK21hdGVyaWFsIGJldHdlZW4gdGhlIHRocmVlIGRhc2ggbGluZXMgYW5kIHRoZSBkaWZmc3RhdC4gR2l0LW5vdGVzCitjYW4gYWxzbyBiZSBpbnNlcnRlZCB1c2luZyB0aGUgYC0tbm90ZXNgIG9wdGlvbi4KIAogRG8gbm90IGF0dGFjaCB0aGUgcGF0Y2ggYXMgYSBNSU1FIGF0dGFjaG1lbnQsIGNvbXByZXNzZWQgb3Igbm90LgogRG8gbm90IGxldCB5b3VyIGUtbWFpbCBjbGllbnQgc2VuZCBxdW90ZWQtcHJpbnRhYmxlLiAgRG8gbm90IGxldApAQCAtMjA3LDIzICsxODQsMjkgQEAKIHRoYXQgc3RhcnRzIHdpdGggJy0tLS0tQkVHSU4gUEdQIFNJR05FRCBNRVNTQUdFLS0tLS0nLiAgVGhhdCBpcwogbm90IGEgdGV4dC9wbGFpbiwgaXQncyBzb21ldGhpbmcgZWxzZS4KIAotVW5sZXNzIHlvdXIgcGF0Y2ggaXMgYSB2ZXJ5IHRyaXZpYWwgYW5kIGFuIG9idmlvdXNseSBjb3JyZWN0IG9uZSwKLWZpcnN0IHNlbmQgaXQgd2l0aCAiVG86IiBzZXQgdG8gdGhlIG1haWxpbmcgbGlzdCwgd2l0aCAiY2M6IiBsaXN0aW5nCitTZW5kIHlvdXIgcGF0Y2ggd2l0aCAiVG86IiBzZXQgdG8gdGhlIG1haWxpbmcgbGlzdCwgd2l0aCAiY2M6IiBsaXN0aW5nCiBwZW9wbGUgd2hvIGFyZSBpbnZvbHZlZCBpbiB0aGUgYXJlYSB5b3UgYXJlIHRvdWNoaW5nICh0aGUgb3V0cHV0IGZyb20KICJnaXQgYmxhbWUgJHBhdGgiIGFuZCAiZ2l0IHNob3J0bG9nIC0tbm8tbWVyZ2VzICRwYXRoIiB3b3VsZCBoZWxwIHRvCi1pZGVudGlmeSB0aGVtKSwgdG8gc29saWNpdCBjb21tZW50cyBhbmQgcmV2aWV3cy4gIEFmdGVyIHRoZSBsaXN0Ci1yZWFjaGVkIGEgY29uc2Vuc3VzIHRoYXQgaXQgaXMgYSBnb29kIGlkZWEgdG8gYXBwbHkgdGhlIHBhdGNoLCByZS1zZW5kCi1pdCB3aXRoICJUbzoiIHNldCB0byB0aGUgbWFpbnRhaW5lciBhbmQgb3B0aW9uYWxseSAiY2M6IiB0aGUgbGlzdCBmb3IKLWluY2x1c2lvbi4gIERvIG5vdCBmb3JnZXQgdG8gYWRkIHRyYWlsZXJzIHN1Y2ggYXMgIkFja2VkLWJ5OiIsCi0iUmV2aWV3ZWQtYnk6IiBhbmQgIlRlc3RlZC1ieToiIGFmdGVyIHlvdXIgIlNpZ25lZC1vZmYtYnk6IiBsaW5lIGFzCi1uZWNlc3NhcnkuCitpZGVudGlmeSB0aGVtKSwgdG8gc29saWNpdCBjb21tZW50cyBhbmQgcmV2aWV3cy4KKworQWZ0ZXIgdGhlIGxpc3QgcmVhY2hlZCBhIGNvbnNlbnN1cyB0aGF0IGl0IGlzIGEgZ29vZCBpZGVhIHRvIGFwcGx5IHRoZQorcGF0Y2gsIHJlLXNlbmQgaXQgd2l0aCAiVG86IiBzZXQgdG8gdGhlIG1haW50YWluZXIgWyoxKl0gYW5kICJjYzoiIHRoZQorbGlzdCBbKjIqXSBmb3IgaW5jbHVzaW9uLgorCitEbyBub3QgZm9yZ2V0IHRvIGFkZCB0cmFpbGVycyBzdWNoIGFzICJBY2tlZC1ieToiLCAiUmV2aWV3ZWQtYnk6IiBhbmQKKyJUZXN0ZWQtYnk6IiBsaW5lcyBhcyBuZWNlc3NhcnkgdG8gY3JlZGl0IHBlb3BsZSB3aG8gaGVscGVkIHlvdXIKK3BhdGNoLgorCisgICAgW0FkZHJlc3Nlc10KKyAgICAgKjEqIFRoZSBjdXJyZW50IG1haW50YWluZXI6IGdpdHN0ZXJAcG9ib3guY29tCisgICAgICoyKiBUaGUgbWFpbGluZyBsaXN0OiBnaXRAdmdlci5rZXJuZWwub3JnCiAKIAotKDQpIFNpZ24geW91ciB3b3JrCisoNSkgU2lnbiB5b3VyIHdvcmsKIAogVG8gaW1wcm92ZSB0cmFja2luZyBvZiB3aG8gZGlkIHdoYXQsIHdlJ3ZlIGJvcnJvd2VkIHRoZQogInNpZ24tb2ZmIiBwcm9jZWR1cmUgZnJvbSB0aGUgTGludXgga2VybmVsIHByb2plY3Qgb24gcGF0Y2hlcwotdGhhdCBhcmUgYmVpbmcgZW1haWxlZCBhcm91bmQuICBBbHRob3VnaCBjb3JlIEdJVCBpcyBhIGxvdAordGhhdCBhcmUgYmVpbmcgZW1haWxlZCBhcm91bmQuICBBbHRob3VnaCBjb3JlIEdpdCBpcyBhIGxvdAogc21hbGxlciBwcm9qZWN0IGl0IGlzIGEgZ29vZCBkaXNjaXBsaW5lIHRvIGZvbGxvdyBpdC4KIAogVGhlIHNpZ24tb2ZmIGlzIGEgc2ltcGxlIGxpbmUgYXQgdGhlIGVuZCBvZiB0aGUgZXhwbGFuYXRpb24gZm9yCkBAIC0yNjEsNyArMjQ0LDcgQEAKIAogCVNpZ25lZC1vZmYtYnk6IFJhbmRvbSBKIERldmVsb3BlciA8cmFuZG9tQGRldmVsb3Blci5leGFtcGxlLm9yZz4KIAotVGhpcyBsaW5lIGNhbiBiZSBhdXRvbWF0aWNhbGx5IGFkZGVkIGJ5IGdpdCBpZiB5b3UgcnVuIHRoZSBnaXQtY29tbWl0CitUaGlzIGxpbmUgY2FuIGJlIGF1dG9tYXRpY2FsbHkgYWRkZWQgYnkgR2l0IGlmIHlvdSBydW4gdGhlIGdpdC1jb21taXQKIGNvbW1hbmQgd2l0aCB0aGUgLXMgb3B0aW9uLgogCiBOb3RpY2UgdGhhdCB5b3UgY2FuIHBsYWNlIHlvdXIgb3duIFNpZ25lZC1vZmYtYnk6IGxpbmUgd2hlbgpAQCAtMjkwLDYgKzI3MywyNiBAQAogc3VjaCBhcyAiVGhhbmtzLXRvOiIsICJCYXNlZC1vbi1wYXRjaC1ieToiLCBvciAiTWVudG9yZWQtYnk6Ii4KIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTdWJzeXN0ZW1zIHdpdGggZGVkaWNhdGVkIG1haW50YWluZXJzCisKK1NvbWUgcGFydHMgb2YgdGhlIHN5c3RlbSBoYXZlIGRlZGljYXRlZCBtYWludGFpbmVycyB3aXRoIHRoZWlyIG93bgorcmVwb3NpdG9yaWVzLgorCisgLSBnaXQtZ3VpLyBjb21lcyBmcm9tIGdpdC1ndWkgcHJvamVjdCwgbWFpbnRhaW5lZCBieSBQYXQgVGhveXRzOgorCisgICAgICAgIGdpdDovL3JlcG8ub3IuY3ovZ2l0LWd1aS5naXQKKworIC0gZ2l0ay1naXQvIGNvbWVzIGZyb20gUGF1bCBNYWNrZXJyYXMncyBnaXRrIHByb2plY3Q6CisKKyAgICAgICAgZ2l0Oi8vb3psYWJzLm9yZy9+cGF1bHVzL2dpdGsKKworIC0gcG8vIGNvbWVzIGZyb20gdGhlIGxvY2FsaXphdGlvbiBjb29yZGluYXRvciwgSmlhbmcgWGluOgorCisJaHR0cHM6Ly9naXRodWIuY29tL2dpdC1sMTBuL2dpdC1wby8KKworUGF0Y2hlcyB0byB0aGVzZSBwYXJ0cyBzaG91bGQgYmUgYmFzZWQgb24gdGhlaXIgdHJlZXMuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQW4gaWRlYWwgcGF0Y2ggZmxvdwogCiBIZXJlIGlzIGFuIGlkZWFsIHBhdGNoIGZsb3cgZm9yIHRoaXMgcHJvamVjdCB0aGUgY3VycmVudCBtYWludGFpbmVyCkBAIC0zMzQsNyArMzM3LDcgQEAKICAgdGVsbCB5b3UgaWYgeW91ciBwYXRjaCBpcyBtZXJnZWQgaW4gcHUgaWYgeW91IHJlYmFzZSBvbiB0b3Agb2YKICAgbWFzdGVyKS4KIAotKiBSZWFkIHRoZSBnaXQgbWFpbGluZyBsaXN0LCB0aGUgbWFpbnRhaW5lciByZWd1bGFybHkgcG9zdHMgbWVzc2FnZXMKKyogUmVhZCB0aGUgR2l0IG1haWxpbmcgbGlzdCwgdGhlIG1haW50YWluZXIgcmVndWxhcmx5IHBvc3RzIG1lc3NhZ2VzCiAgIGVudGl0bGVkICJXaGF0J3MgY29va2luZyBpbiBnaXQuZ2l0IiBhbmQgIldoYXQncyBpbiBnaXQuZ2l0IiBnaXZpbmcKICAgdGhlIHN0YXR1cyBvZiB2YXJpb3VzIHByb3Bvc2VkIGNoYW5nZXMuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXNjaWlkb2MuY29uZiBiL0RvY3VtZW50YXRpb24vYXNjaWlkb2MuY29uZgppbmRleCA2ZDA2MjcxLi4yYzE2YzUzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2FzY2lpZG9jLmNvbmYKKysrIGIvRG9jdW1lbnRhdGlvbi9hc2NpaWRvYy5jb25mCkBAIC00LDcgKzQsNyBAQAogIwogIyBOb3RlLCB7MH0gaXMgdGhlIG1hbnBhZ2Ugc2VjdGlvbiwgd2hpbGUge3RhcmdldH0gaXMgdGhlIGNvbW1hbmQuCiAjCi0jIFNob3cgR0lUIGxpbmsgYXM6IDxjb21tYW5kPig8c2VjdGlvbj4pOyBpZiBzZWN0aW9uIGlzIGRlZmluZWQsIGVsc2UganVzdCBzaG93CisjIFNob3cgR2l0IGxpbmsgYXM6IDxjb21tYW5kPig8c2VjdGlvbj4pOyBpZiBzZWN0aW9uIGlzIGRlZmluZWQsIGVsc2UganVzdCBzaG93CiAjIHRoZSBjb21tYW5kLgogCiBbbWFjcm9zXQpAQCAtMzYsNyArMzYsNyBAQAogIyB2MS43MiBicmVha3Mgd2l0aCB0aGlzIGJlY2F1c2UgaXQgcmVwbGFjZXMgZG90cyBub3QgaW4gcm9mZiByZXF1ZXN0cy4KIFtsaXN0aW5nYmxvY2tdCiA8ZXhhbXBsZT48dGl0bGU+e3RpdGxlfTwvdGl0bGU+Ci08bGl0ZXJhbGxheW91dD4KKzxsaXRlcmFsbGF5b3V0IGNsYXNzPSJtb25vc3BhY2VkIj4KIGlmZGVmOjpkb2N0eXBlLW1hbnBhZ2VbXQogJiMxMDsuZnQgQyYjMTA7CiBlbmRpZjo6ZG9jdHlwZS1tYW5wYWdlW10KQEAgLTUzLDcgKzUzLDcgQEAKICMgVGhlIGZvbGxvd2luZyB0d28gc21hbGwgd29ya2Fyb3VuZHMgaW5zZXJ0IGEgc2ltcGxlIHBhcmFncmFwaCBhZnRlciBzY3JlZW4KIFtsaXN0aW5nYmxvY2tdCiA8ZXhhbXBsZT48dGl0bGU+e3RpdGxlfTwvdGl0bGU+Ci08bGl0ZXJhbGxheW91dD4KKzxsaXRlcmFsbGF5b3V0IGNsYXNzPSJtb25vc3BhY2VkIj4KIHwKIDwvbGl0ZXJhbGxheW91dD48c2ltcGFyYT48L3NpbXBhcmE+CiB7dGl0bGUjfTwvZXhhbXBsZT4KQEAgLTkwLDYgKzkwLDggQEAKIGVuZGlmOjpkb2N0eXBlLW1hbnBhZ2VbXQogCiBpZmRlZjo6YmFja2VuZC14aHRtbDExW10KK1thdHRyaWJ1dGVzXQorZ2l0LXJlbGF0aXZlLWh0bWwtcHJlZml4PQogW2xpbmtnaXQtaW5saW5lbWFjcm9dCiA8YSBocmVmPSJ7Z2l0LXJlbGF0aXZlLWh0bWwtcHJlZml4fXt0YXJnZXR9Lmh0bWwiPnt0YXJnZXR9ezA/KHswfSl9PC9hPgogZW5kaWY6OmJhY2tlbmQteGh0bWwxMVtdCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2JsYW1lLW9wdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9ibGFtZS1vcHRpb25zLnR4dAppbmRleCBkNGE1MWRhLi5iMGQzMWRmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2JsYW1lLW9wdGlvbnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vYmxhbWUtb3B0aW9ucy50eHQKQEAgLTk1LDcgKzk1LDcgQEAKIAlydW5uaW5nIGV4dHJhIHBhc3NlcyBvZiBpbnNwZWN0aW9uLgogKwogPG51bT4gaXMgb3B0aW9uYWwgYnV0IGl0IGlzIHRoZSBsb3dlciBib3VuZCBvbiB0aGUgbnVtYmVyIG9mCi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyB0aGF0IGdpdCBtdXN0IGRldGVjdCBhcyBtb3ZpbmcvY29weWluZworYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgdGhhdCBHaXQgbXVzdCBkZXRlY3QgYXMgbW92aW5nL2NvcHlpbmcKIHdpdGhpbiBhIGZpbGUgZm9yIGl0IHRvIGFzc29jaWF0ZSB0aG9zZSBsaW5lcyB3aXRoIHRoZSBwYXJlbnQKIGNvbW1pdC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMjAuCiAKQEAgLTExMCw3ICsxMTAsNyBAQAogCWxvb2tzIGZvciBjb3BpZXMgZnJvbSBvdGhlciBmaWxlcyBpbiBhbnkgY29tbWl0LgogKwogPG51bT4gaXMgb3B0aW9uYWwgYnV0IGl0IGlzIHRoZSBsb3dlciBib3VuZCBvbiB0aGUgbnVtYmVyIG9mCi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyB0aGF0IGdpdCBtdXN0IGRldGVjdCBhcyBtb3ZpbmcvY29weWluZworYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgdGhhdCBHaXQgbXVzdCBkZXRlY3QgYXMgbW92aW5nL2NvcHlpbmcKIGJldHdlZW4gZmlsZXMgZm9yIGl0IHRvIGFzc29jaWF0ZSB0aG9zZSBsaW5lcyB3aXRoIHRoZSBwYXJlbnQKIGNvbW1pdC4gQW5kIHRoZSBkZWZhdWx0IHZhbHVlIGlzIDQwLiBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZQogYC1DYCBvcHRpb25zIGdpdmVuLCB0aGUgPG51bT4gYXJndW1lbnQgb2YgdGhlIGxhc3QgYC1DYCB3aWxsCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NhdC10ZXhpLnBlcmwgYi9Eb2N1bWVudGF0aW9uL2NhdC10ZXhpLnBlcmwKaW5kZXggODI4ZWM2Mi4uODc0MzdmOCAxMDA3NTUKLS0tIGEvRG9jdW1lbnRhdGlvbi9jYXQtdGV4aS5wZXJsCisrKyBiL0RvY3VtZW50YXRpb24vY2F0LXRleGkucGVybApAQCAtMTIsNiArMTIsNyBAQAogCQlwdXNoIEBtZW51LCAkMTsKIAl9CiAJcy9cKFxAcHhyZWZ7XFsoVVJMU3xSRU1PVEVTKVxdfVwpLy87CisJcy9cQGFuY2hvclx7W157fV0qXH0vL2c7CiAJcHJpbnQgVE1QOwogfQogY2xvc2UgVE1QOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jb25maWcudHh0IGIvRG9jdW1lbnRhdGlvbi9jb25maWcudHh0CmluZGV4IDkxNWNiNWEuLjZlNTNmYzUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vY29uZmlnLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2NvbmZpZy50eHQKQEAgLTEsMTQgKzEsMTQgQEAKIENPTkZJR1VSQVRJT04gRklMRQogLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVRoZSBnaXQgY29uZmlndXJhdGlvbiBmaWxlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIHZhcmlhYmxlcyB0aGF0IGFmZmVjdAotdGhlIGdpdCBjb21tYW5kJ3MgYmVoYXZpb3IuIFRoZSBgLmdpdC9jb25maWdgIGZpbGUgaW4gZWFjaCByZXBvc2l0b3J5CitUaGUgR2l0IGNvbmZpZ3VyYXRpb24gZmlsZSBjb250YWlucyBhIG51bWJlciBvZiB2YXJpYWJsZXMgdGhhdCBhZmZlY3QKK3RoZSBHaXQgY29tbWFuZHMnIGJlaGF2aW9yLiBUaGUgYC5naXQvY29uZmlnYCBmaWxlIGluIGVhY2ggcmVwb3NpdG9yeQogaXMgdXNlZCB0byBzdG9yZSB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhhdCByZXBvc2l0b3J5LCBhbmQKIGAkSE9NRS8uZ2l0Y29uZmlnYCBpcyB1c2VkIHRvIHN0b3JlIGEgcGVyLXVzZXIgY29uZmlndXJhdGlvbiBhcwogZmFsbGJhY2sgdmFsdWVzIGZvciB0aGUgYC5naXQvY29uZmlnYCBmaWxlLiBUaGUgZmlsZSBgL2V0Yy9naXRjb25maWdgCiBjYW4gYmUgdXNlZCB0byBzdG9yZSBhIHN5c3RlbS13aWRlIGRlZmF1bHQgY29uZmlndXJhdGlvbi4KIAotVGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGFyZSB1c2VkIGJ5IGJvdGggdGhlIGdpdCBwbHVtYmluZworVGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGFyZSB1c2VkIGJ5IGJvdGggdGhlIEdpdCBwbHVtYmluZwogYW5kIHRoZSBwb3JjZWxhaW5zLiBUaGUgdmFyaWFibGVzIGFyZSBkaXZpZGVkIGludG8gc2VjdGlvbnMsIHdoZXJlaW4KIHRoZSBmdWxseSBxdWFsaWZpZWQgdmFyaWFibGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgaXRzZWxmIGlzIHRoZSBsYXN0CiBkb3Qtc2VwYXJhdGVkIHNlZ21lbnQgYW5kIHRoZSBzZWN0aW9uIG5hbWUgaXMgZXZlcnl0aGluZyBiZWZvcmUgdGhlIGxhc3QKQEAgLTE0MCwxMCArMTQwLDEyIEBACiAJY2FuIHRlbGwgR2l0IHRoYXQgeW91IGRvIG5vdCBuZWVkIGhlbHAgYnkgc2V0dGluZyB0aGVzZSB0byAnZmFsc2UnOgogKwogLS0KLQlwdXNoTm9uRmFzdEZvcndhcmQ6OgorCXB1c2hVcGRhdGVSZWplY3RlZDo6CiAJCVNldCB0aGlzIHZhcmlhYmxlIHRvICdmYWxzZScgaWYgeW91IHdhbnQgdG8gZGlzYWJsZQotCQkncHVzaE5vbkZGQ3VycmVudCcsICdwdXNoTm9uRkZEZWZhdWx0JywgYW5kCi0JCSdwdXNoTm9uRkZNYXRjaGluZycgc2ltdWx0YW5lb3VzbHkuCisJCSdwdXNoTm9uRkZDdXJyZW50JywgJ3B1c2hOb25GRkRlZmF1bHQnLAorCQkncHVzaE5vbkZGTWF0Y2hpbmcnLCAncHVzaEFscmVhZHlFeGlzdHMnLAorCQkncHVzaEZldGNoRmlyc3QnLCBhbmQgJ3B1c2hOZWVkc0ZvcmNlJworCQlzaW11bHRhbmVvdXNseS4KIAlwdXNoTm9uRkZDdXJyZW50OjoKIAkJQWR2aWNlIHNob3duIHdoZW4gbGlua2dpdDpnaXQtcHVzaFsxXSBmYWlscyBkdWUgdG8gYQogCQlub24tZmFzdC1mb3J3YXJkIHVwZGF0ZSB0byB0aGUgY3VycmVudCBicmFuY2guCkBAIC0xNTgsMTUgKzE2MCwzMyBAQAogCQknbWF0Y2hpbmcgcmVmcycgZXhwbGljaXRseSAoaS5lLiB5b3UgdXNlZCAnOicsIG9yCiAJCXNwZWNpZmllZCBhIHJlZnNwZWMgdGhhdCBpc24ndCB5b3VyIGN1cnJlbnQgYnJhbmNoKSBhbmQKIAkJaXQgcmVzdWx0ZWQgaW4gYSBub24tZmFzdC1mb3J3YXJkIGVycm9yLgorCXB1c2hBbHJlYWR5RXhpc3RzOjoKKwkJU2hvd24gd2hlbiBsaW5rZ2l0OmdpdC1wdXNoWzFdIHJlamVjdHMgYW4gdXBkYXRlIHRoYXQKKwkJZG9lcyBub3QgcXVhbGlmeSBmb3IgZmFzdC1mb3J3YXJkaW5nIChlLmcuLCBhIHRhZy4pCisJcHVzaEZldGNoRmlyc3Q6OgorCQlTaG93biB3aGVuIGxpbmtnaXQ6Z2l0LXB1c2hbMV0gcmVqZWN0cyBhbiB1cGRhdGUgdGhhdAorCQl0cmllcyB0byBvdmVyd3JpdGUgYSByZW1vdGUgcmVmIHRoYXQgcG9pbnRzIGF0IGFuCisJCW9iamVjdCB3ZSBkbyBub3QgaGF2ZS4KKwlwdXNoTmVlZHNGb3JjZTo6CisJCVNob3duIHdoZW4gbGlua2dpdDpnaXQtcHVzaFsxXSByZWplY3RzIGFuIHVwZGF0ZSB0aGF0CisJCXRyaWVzIHRvIG92ZXJ3cml0ZSBhIHJlbW90ZSByZWYgdGhhdCBwb2ludHMgYXQgYW4KKwkJb2JqZWN0IHRoYXQgaXMgbm90IGEgY29tbWl0dGlzaCwgb3IgbWFrZSB0aGUgcmVtb3RlCisJCXJlZiBwb2ludCBhdCBhbiBvYmplY3QgdGhhdCBpcyBub3QgYSBjb21taXR0aXNoLgogCXN0YXR1c0hpbnRzOjoKLQkJRGlyZWN0aW9ucyBvbiBob3cgdG8gc3RhZ2UvdW5zdGFnZS9hZGQgc2hvd24gaW4gdGhlCi0JCW91dHB1dCBvZiBsaW5rZ2l0OmdpdC1zdGF0dXNbMV0gYW5kIHRoZSB0ZW1wbGF0ZSBzaG93bgotCQl3aGVuIHdyaXRpbmcgY29tbWl0IG1lc3NhZ2VzLgorCQlTaG93IGRpcmVjdGlvbnMgb24gaG93IHRvIHByb2NlZWQgZnJvbSB0aGUgY3VycmVudAorCQlzdGF0ZSBpbiB0aGUgb3V0cHV0IG9mIGxpbmtnaXQ6Z2l0LXN0YXR1c1sxXSwgaW4KKwkJdGhlIHRlbXBsYXRlIHNob3duIHdoZW4gd3JpdGluZyBjb21taXQgbWVzc2FnZXMgaW4KKwkJbGlua2dpdDpnaXQtY29tbWl0WzFdLCBhbmQgaW4gdGhlIGhlbHAgbWVzc2FnZSBzaG93bgorCQlieSBsaW5rZ2l0OmdpdC1jaGVja291dFsxXSB3aGVuIHN3aXRjaGluZyBicmFuY2guCisJc3RhdHVzVW9wdGlvbjo6CisJCUFkdmlzZSB0byBjb25zaWRlciB1c2luZyB0aGUgYC11YCBvcHRpb24gdG8gbGlua2dpdDpnaXQtc3RhdHVzWzFdCisJCXdoZW4gdGhlIGNvbW1hbmQgdGFrZXMgbW9yZSB0aGFuIDIgc2Vjb25kcyB0byBlbnVtZXJhdGUgdW50cmFja2VkCisJCWZpbGVzLgogCWNvbW1pdEJlZm9yZU1lcmdlOjoKIAkJQWR2aWNlIHNob3duIHdoZW4gbGlua2dpdDpnaXQtbWVyZ2VbMV0gcmVmdXNlcyB0bwogCQltZXJnZSB0byBhdm9pZCBvdmVyd3JpdGluZyBsb2NhbCBjaGFuZ2VzLgogCXJlc29sdmVDb25mbGljdDo6Ci0JCUFkdmljZXMgc2hvd24gYnkgdmFyaW91cyBjb21tYW5kcyB3aGVuIGNvbmZsaWN0cworCQlBZHZpY2Ugc2hvd24gYnkgdmFyaW91cyBjb21tYW5kcyB3aGVuIGNvbmZsaWN0cwogCQlwcmV2ZW50IHRoZSBvcGVyYXRpb24gZnJvbSBiZWluZyBwZXJmb3JtZWQuCiAJaW1wbGljaXRJZGVudGl0eTo6CiAJCUFkdmljZSBvbiBob3cgdG8gc2V0IHlvdXIgaWRlbnRpdHkgY29uZmlndXJhdGlvbiB3aGVuCkBAIC0xNzYsNiArMTk2LDkgQEAKIAkJQWR2aWNlIHNob3duIHdoZW4geW91IHVzZWQgbGlua2dpdDpnaXQtY2hlY2tvdXRbMV0gdG8KIAkJbW92ZSB0byB0aGUgZGV0YWNoIEhFQUQgc3RhdGUsIHRvIGluc3RydWN0IGhvdyB0byBjcmVhdGUKIAkJYSBsb2NhbCBicmFuY2ggYWZ0ZXIgdGhlIGZhY3QuCisJYW1Xb3JrRGlyOjoKKwkJQWR2aWNlIHRoYXQgc2hvd3MgdGhlIGxvY2F0aW9uIG9mIHRoZSBwYXRjaCBmaWxlIHdoZW4KKwkJbGlua2dpdDpnaXQtYW1bMV0gZmFpbHMgdG8gYXBwbHkgaXQuCiAtLQogCiBjb3JlLmZpbGVNb2RlOjoKQEAgLTIwMCw5ICsyMjMsOSBAQAogCiBjb3JlLmlnbm9yZWNhc2U6OgogCUlmIHRydWUsIHRoaXMgb3B0aW9uIGVuYWJsZXMgdmFyaW91cyB3b3JrYXJvdW5kcyB0byBlbmFibGUKLQlnaXQgdG8gd29yayBiZXR0ZXIgb24gZmlsZXN5c3RlbXMgdGhhdCBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZlLAorCUdpdCB0byB3b3JrIGJldHRlciBvbiBmaWxlc3lzdGVtcyB0aGF0IGFyZSBub3QgY2FzZSBzZW5zaXRpdmUsCiAJbGlrZSBGQVQuIEZvciBleGFtcGxlLCBpZiBhIGRpcmVjdG9yeSBsaXN0aW5nIGZpbmRzCi0JIm1ha2VmaWxlIiB3aGVuIGdpdCBleHBlY3RzICJNYWtlZmlsZSIsIGdpdCB3aWxsIGFzc3VtZQorCSJtYWtlZmlsZSIgd2hlbiBHaXQgZXhwZWN0cyAiTWFrZWZpbGUiLCBHaXQgd2lsbCBhc3N1bWUKIAlpdCBpcyByZWFsbHkgdGhlIHNhbWUgZmlsZSwgYW5kIGNvbnRpbnVlIHRvIHJlbWVtYmVyIGl0IGFzCiAJIk1ha2VmaWxlIi4KICsKQEAgLTIxMCw2ICsyMzMsMTUgQEAKIHdpbGwgcHJvYmUgYW5kIHNldCBjb3JlLmlnbm9yZWNhc2UgdHJ1ZSBpZiBhcHByb3ByaWF0ZSB3aGVuIHRoZSByZXBvc2l0b3J5CiBpcyBjcmVhdGVkLgogCitjb3JlLnByZWNvbXBvc2V1bmljb2RlOjoKKwlUaGlzIG9wdGlvbiBpcyBvbmx5IHVzZWQgYnkgTWFjIE9TIGltcGxlbWVudGF0aW9uIG9mIEdpdC4KKwlXaGVuIGNvcmUucHJlY29tcG9zZXVuaWNvZGU9dHJ1ZSwgR2l0IHJldmVydHMgdGhlIHVuaWNvZGUgZGVjb21wb3NpdGlvbgorCW9mIGZpbGVuYW1lcyBkb25lIGJ5IE1hYyBPUy4gVGhpcyBpcyB1c2VmdWwgd2hlbiBzaGFyaW5nIGEgcmVwb3NpdG9yeQorCWJldHdlZW4gTWFjIE9TIGFuZCBMaW51eCBvciBXaW5kb3dzLgorCShHaXQgZm9yIFdpbmRvd3MgMS43LjEwIG9yIGhpZ2hlciBpcyBuZWVkZWQsIG9yIEdpdCB1bmRlciBjeWd3aW4gMS43KS4KKwlXaGVuIGZhbHNlLCBmaWxlIG5hbWVzIGFyZSBoYW5kbGVkIGZ1bGx5IHRyYW5zcGFyZW50IGJ5IEdpdCwKKwl3aGljaCBpcyBiYWNrd2FyZCBjb21wYXRpYmxlIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgR2l0LgorCiBjb3JlLnRydXN0Y3RpbWU6OgogCUlmIGZhbHNlLCB0aGUgY3RpbWUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgaW5kZXggYW5kIHRoZQogCXdvcmtpbmcgdHJlZSBhcmUgaWdub3JlZDsgdXNlZnVsIHdoZW4gdGhlIGlub2RlIGNoYW5nZSB0aW1lCkBAIC0yMTcsNiArMjQ5LDEyIEBACiAJY3Jhd2xlcnMgYW5kIHNvbWUgYmFja3VwIHN5c3RlbXMpLgogCVNlZSBsaW5rZ2l0OmdpdC11cGRhdGUtaW5kZXhbMV0uIFRydWUgYnkgZGVmYXVsdC4KIAorY29yZS5jaGVja3N0YXQ6OgorCURldGVybWluZXMgd2hpY2ggc3RhdCBmaWVsZHMgdG8gbWF0Y2ggYmV0d2VlbiB0aGUgaW5kZXgKKwlhbmQgd29yayB0cmVlLiBUaGUgdXNlciBjYW4gc2V0IHRoaXMgdG8gJ2RlZmF1bHQnIG9yCisJJ21pbmltYWwnLiBEZWZhdWx0IChvciBleHBsaWNpdGx5ICdkZWZhdWx0JyksIGlzIHRvIGNoZWNrCisJYWxsIGZpZWxkcywgaW5jbHVkaW5nIHRoZSBzdWItc2Vjb25kIHBhcnQgb2YgbXRpbWUgYW5kIGN0aW1lLgorCiBjb3JlLnF1b3RlcGF0aDo6CiAJVGhlIGNvbW1hbmRzIHRoYXQgb3V0cHV0IHBhdGhzIChlLmcuICdscy1maWxlcycsCiAJJ2RpZmYnKSwgd2hlbiBub3QgZ2l2ZW4gdGhlIGAtemAgb3B0aW9uLCB3aWxsIHF1b3RlCkBAIC0yMzgsMjAgKzI3NiwyMCBAQAogCWNvbnZlcnNpb24uCiAKIGNvcmUuc2FmZWNybGY6OgotCUlmIHRydWUsIG1ha2VzIGdpdCBjaGVjayBpZiBjb252ZXJ0aW5nIGBDUkxGYCBpcyByZXZlcnNpYmxlIHdoZW4KKwlJZiB0cnVlLCBtYWtlcyBHaXQgY2hlY2sgaWYgY29udmVydGluZyBgQ1JMRmAgaXMgcmV2ZXJzaWJsZSB3aGVuCiAJZW5kLW9mLWxpbmUgY29udmVyc2lvbiBpcyBhY3RpdmUuICBHaXQgd2lsbCB2ZXJpZnkgaWYgYSBjb21tYW5kCiAJbW9kaWZpZXMgYSBmaWxlIGluIHRoZSB3b3JrIHRyZWUgZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCiAJRm9yIGV4YW1wbGUsIGNvbW1pdHRpbmcgYSBmaWxlIGZvbGxvd2VkIGJ5IGNoZWNraW5nIG91dCB0aGUKIAlzYW1lIGZpbGUgc2hvdWxkIHlpZWxkIHRoZSBvcmlnaW5hbCBmaWxlIGluIHRoZSB3b3JrIHRyZWUuICBJZgogCXRoaXMgaXMgbm90IHRoZSBjYXNlIGZvciB0aGUgY3VycmVudCBzZXR0aW5nIG9mCi0JYGNvcmUuYXV0b2NybGZgLCBnaXQgd2lsbCByZWplY3QgdGhlIGZpbGUuICBUaGUgdmFyaWFibGUgY2FuCi0JYmUgc2V0IHRvICJ3YXJuIiwgaW4gd2hpY2ggY2FzZSBnaXQgd2lsbCBvbmx5IHdhcm4gYWJvdXQgYW4KKwlgY29yZS5hdXRvY3JsZmAsIEdpdCB3aWxsIHJlamVjdCB0aGUgZmlsZS4gIFRoZSB2YXJpYWJsZSBjYW4KKwliZSBzZXQgdG8gIndhcm4iLCBpbiB3aGljaCBjYXNlIEdpdCB3aWxsIG9ubHkgd2FybiBhYm91dCBhbgogCWlycmV2ZXJzaWJsZSBjb252ZXJzaW9uIGJ1dCBjb250aW51ZSB0aGUgb3BlcmF0aW9uLgogKwogQ1JMRiBjb252ZXJzaW9uIGJlYXJzIGEgc2xpZ2h0IGNoYW5jZSBvZiBjb3JydXB0aW5nIGRhdGEuCi1XaGVuIGl0IGlzIGVuYWJsZWQsIGdpdCB3aWxsIGNvbnZlcnQgQ1JMRiB0byBMRiBkdXJpbmcgY29tbWl0IGFuZCBMRiB0bworV2hlbiBpdCBpcyBlbmFibGVkLCBHaXQgd2lsbCBjb252ZXJ0IENSTEYgdG8gTEYgZHVyaW5nIGNvbW1pdCBhbmQgTEYgdG8KIENSTEYgZHVyaW5nIGNoZWNrb3V0LiAgQSBmaWxlIHRoYXQgY29udGFpbnMgYSBtaXh0dXJlIG9mIExGIGFuZAotQ1JMRiBiZWZvcmUgdGhlIGNvbW1pdCBjYW5ub3QgYmUgcmVjcmVhdGVkIGJ5IGdpdC4gIEZvciB0ZXh0CitDUkxGIGJlZm9yZSB0aGUgY29tbWl0IGNhbm5vdCBiZSByZWNyZWF0ZWQgYnkgR2l0LiAgRm9yIHRleHQKIGZpbGVzIHRoaXMgaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvOiBpdCBjb3JyZWN0cyBsaW5lIGVuZGluZ3MKIHN1Y2ggdGhhdCB3ZSBoYXZlIG9ubHkgTEYgbGluZSBlbmRpbmdzIGluIHRoZSByZXBvc2l0b3J5LgogQnV0IGZvciBiaW5hcnkgZmlsZXMgdGhhdCBhcmUgYWNjaWRlbnRhbGx5IGNsYXNzaWZpZWQgYXMgdGV4dCB0aGUKQEAgLTI2MSw3ICsyOTksNyBAQAogc2V0dGluZyB0aGUgY29udmVyc2lvbiB0eXBlIGV4cGxpY2l0bHkgaW4gLmdpdGF0dHJpYnV0ZXMuICBSaWdodAogYWZ0ZXIgY29tbWl0dGluZyB5b3Ugc3RpbGwgaGF2ZSB0aGUgb3JpZ2luYWwgZmlsZSBpbiB5b3VyIHdvcmsKIHRyZWUgYW5kIHRoaXMgZmlsZSBpcyBub3QgeWV0IGNvcnJ1cHRlZC4gIFlvdSBjYW4gZXhwbGljaXRseSB0ZWxsCi1naXQgdGhhdCB0aGlzIGZpbGUgaXMgYmluYXJ5IGFuZCBnaXQgd2lsbCBoYW5kbGUgdGhlIGZpbGUKK0dpdCB0aGF0IHRoaXMgZmlsZSBpcyBiaW5hcnkgYW5kIEdpdCB3aWxsIGhhbmRsZSB0aGUgZmlsZQogYXBwcm9wcmlhdGVseS4KICsKIFVuZm9ydHVuYXRlbHksIHRoZSBkZXNpcmVkIGVmZmVjdCBvZiBjbGVhbmluZyB1cCB0ZXh0IGZpbGVzIHdpdGgKQEAgLTMwNiw3ICszNDQsNyBAQAogY29yZS5naXRQcm94eTo6CiAJQSAicHJveHkgY29tbWFuZCIgdG8gZXhlY3V0ZSAoYXMgJ2NvbW1hbmQgaG9zdCBwb3J0JykgaW5zdGVhZAogCW9mIGVzdGFibGlzaGluZyBkaXJlY3QgY29ubmVjdGlvbiB0byB0aGUgcmVtb3RlIHNlcnZlciB3aGVuCi0JdXNpbmcgdGhlIGdpdCBwcm90b2NvbCBmb3IgZmV0Y2hpbmcuIElmIHRoZSB2YXJpYWJsZSB2YWx1ZSBpcworCXVzaW5nIHRoZSBHaXQgcHJvdG9jb2wgZm9yIGZldGNoaW5nLiBJZiB0aGUgdmFyaWFibGUgdmFsdWUgaXMKIAlpbiB0aGUgIkNPTU1BTkQgZm9yIERPTUFJTiIgZm9ybWF0LCB0aGUgY29tbWFuZCBpcyBhcHBsaWVkIG9ubHkKIAlvbiBob3N0bmFtZXMgZW5kaW5nIHdpdGggdGhlIHNwZWNpZmllZCBkb21haW4gc3RyaW5nLiBUaGlzIHZhcmlhYmxlCiAJbWF5IGJlIHNldCBtdWx0aXBsZSB0aW1lcyBhbmQgaXMgbWF0Y2hlZCBpbiB0aGUgZ2l2ZW4gb3JkZXI7CkBAIC0zNjUsNyArNDAzLDcgQEAKIGZpbGUgaW4gYSAiLmdpdCIgc3ViZGlyZWN0b3J5IG9mIGEgZGlyZWN0b3J5IGFuZCBpdHMgdmFsdWUgZGlmZmVycwogZnJvbSB0aGUgbGF0dGVyIGRpcmVjdG9yeSAoZS5nLiAiL3BhdGgvdG8vLmdpdC9jb25maWciIGhhcwogY29yZS53b3JrdHJlZSBzZXQgdG8gIi9kaWZmZXJlbnQvcGF0aCIpLCB3aGljaCBpcyBtb3N0IGxpa2VseSBhCi1taXNjb25maWd1cmF0aW9uLiAgUnVubmluZyBnaXQgY29tbWFuZHMgaW4gdGhlICIvcGF0aC90byIgZGlyZWN0b3J5IHdpbGwKK21pc2NvbmZpZ3VyYXRpb24uICBSdW5uaW5nIEdpdCBjb21tYW5kcyBpbiB0aGUgIi9wYXRoL3RvIiBkaXJlY3Rvcnkgd2lsbAogc3RpbGwgdXNlICIvZGlmZmVyZW50L3BhdGgiIGFzIHRoZSByb290IG9mIHRoZSB3b3JrIHRyZWUgYW5kIGNhbiBjYXVzZQogY29uZnVzaW9uIHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcgKGUuZy4geW91IGFyZSBjcmVhdGluZyBhCiByZWFkLW9ubHkgc25hcHNob3Qgb2YgdGhlIHNhbWUgaW5kZXggdG8gYSBsb2NhdGlvbiBkaWZmZXJlbnQgZnJvbSB0aGUKQEAgLTM3NCw3ICs0MTIsNyBAQAogY29yZS5sb2dBbGxSZWZVcGRhdGVzOjoKIAlFbmFibGUgdGhlIHJlZmxvZy4gVXBkYXRlcyB0byBhIHJlZiA8cmVmPiBpcyBsb2dnZWQgdG8gdGhlIGZpbGUKIAkiJEdJVF9ESVIvbG9ncy88cmVmPiIsIGJ5IGFwcGVuZGluZyB0aGUgbmV3IGFuZCBvbGQKLQlTSEExLCB0aGUgZGF0ZS90aW1lIGFuZCB0aGUgcmVhc29uIG9mIHRoZSB1cGRhdGUsIGJ1dAorCVNIQS0xLCB0aGUgZGF0ZS90aW1lIGFuZCB0aGUgcmVhc29uIG9mIHRoZSB1cGRhdGUsIGJ1dAogCW9ubHkgd2hlbiB0aGUgZmlsZSBleGlzdHMuICBJZiB0aGlzIGNvbmZpZ3VyYXRpb24KIAl2YXJpYWJsZSBpcyBzZXQgdG8gdHJ1ZSwgbWlzc2luZyAiJEdJVF9ESVIvbG9ncy88cmVmPiIKIAlmaWxlIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmb3IgYnJhbmNoIGhlYWRzIChpLmUuIHVuZGVyCkBAIC0zOTcsNyArNDM1LDcgQEAKIAlzZXZlcmFsIHVzZXJzIGluIGEgZ3JvdXAgKG1ha2luZyBzdXJlIGFsbCB0aGUgZmlsZXMgYW5kIG9iamVjdHMgYXJlCiAJZ3JvdXAtd3JpdGFibGUpLiBXaGVuICdhbGwnIChvciAnd29ybGQnIG9yICdldmVyeWJvZHknKSwgdGhlCiAJcmVwb3NpdG9yeSB3aWxsIGJlIHJlYWRhYmxlIGJ5IGFsbCB1c2VycywgYWRkaXRpb25hbGx5IHRvIGJlaW5nCi0JZ3JvdXAtc2hhcmVhYmxlLiBXaGVuICd1bWFzaycgKG9yICdmYWxzZScpLCBnaXQgd2lsbCB1c2UgcGVybWlzc2lvbnMKKwlncm91cC1zaGFyZWFibGUuIFdoZW4gJ3VtYXNrJyAob3IgJ2ZhbHNlJyksIEdpdCB3aWxsIHVzZSBwZXJtaXNzaW9ucwogCXJlcG9ydGVkIGJ5IHVtYXNrKDIpLiBXaGVuICcweHh4Jywgd2hlcmUgJzB4eHgnIGlzIGFuIG9jdGFsIG51bWJlciwKIAlmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSB3aWxsIGhhdmUgdGhpcyBtb2RlIHZhbHVlLiAnMHh4eCcgd2lsbCBvdmVycmlkZQogCXVzZXIncyB1bWFzayB2YWx1ZSAod2hlcmVhcyB0aGUgb3RoZXIgb3B0aW9ucyB3aWxsIG9ubHkgb3ZlcnJpZGUKQEAgLTQwOCw4ICs0NDYsOCBAQAogCVNlZSBsaW5rZ2l0OmdpdC1pbml0WzFdLiBGYWxzZSBieSBkZWZhdWx0LgogCiBjb3JlLndhcm5BbWJpZ3VvdXNSZWZzOjoKLQlJZiB0cnVlLCBnaXQgd2lsbCB3YXJuIHlvdSBpZiB0aGUgcmVmIG5hbWUgeW91IHBhc3NlZCBpdCBpcyBhbWJpZ3VvdXMKLQlhbmQgbWlnaHQgbWF0Y2ggbXVsdGlwbGUgcmVmcyBpbiB0aGUgLmdpdC9yZWZzLyB0cmVlLiBUcnVlIGJ5IGRlZmF1bHQuCisJSWYgdHJ1ZSwgR2l0IHdpbGwgd2FybiB5b3UgaWYgdGhlIHJlZiBuYW1lIHlvdSBwYXNzZWQgaXQgaXMgYW1iaWd1b3VzCisJYW5kIG1pZ2h0IG1hdGNoIG11bHRpcGxlIHJlZnMgaW4gdGhlIHJlcG9zaXRvcnkuIFRydWUgYnkgZGVmYXVsdC4KIAogY29yZS5jb21wcmVzc2lvbjo6CiAJQW4gaW50ZWdlciAtMS4uOSwgaW5kaWNhdGluZyBhIGRlZmF1bHQgY29tcHJlc3Npb24gbGV2ZWwuCkBAIC00ODAsMTAgKzUxOCwxMiBAQAogCiBjb3JlLmV4Y2x1ZGVzZmlsZTo6CiAJSW4gYWRkaXRpb24gdG8gJy5naXRpZ25vcmUnIChwZXItZGlyZWN0b3J5KSBhbmQKLQknLmdpdC9pbmZvL2V4Y2x1ZGUnLCBnaXQgbG9va3MgaW50byB0aGlzIGZpbGUgZm9yIHBhdHRlcm5zCisJJy5naXQvaW5mby9leGNsdWRlJywgR2l0IGxvb2tzIGludG8gdGhpcyBmaWxlIGZvciBwYXR0ZXJucwogCW9mIGZpbGVzIHdoaWNoIGFyZSBub3QgbWVhbnQgdG8gYmUgdHJhY2tlZC4gICJgfi9gIiBpcyBleHBhbmRlZAogCXRvIHRoZSB2YWx1ZSBvZiBgJEhPTUVgIGFuZCAiYH51c2VyL2AiIHRvIHRoZSBzcGVjaWZpZWQgdXNlcidzCi0JaG9tZSBkaXJlY3RvcnkuICBTZWUgbGlua2dpdDpnaXRpZ25vcmVbNV0uCisJaG9tZSBkaXJlY3RvcnkuIEl0cyBkZWZhdWx0IHZhbHVlIGlzICRYREdfQ09ORklHX0hPTUUvZ2l0L2lnbm9yZS4KKwlJZiAkWERHX0NPTkZJR19IT01FIGlzIGVpdGhlciBub3Qgc2V0IG9yIGVtcHR5LCAkSE9NRS8uY29uZmlnL2dpdC9pZ25vcmUKKwlpcyB1c2VkIGluc3RlYWQuIFNlZSBsaW5rZ2l0OmdpdGlnbm9yZVs1XS4KIAogY29yZS5hc2twYXNzOjoKIAlTb21lIGNvbW1hbmRzIChlLmcuIHN2biBhbmQgaHR0cCBpbnRlcmZhY2VzKSB0aGF0IGludGVyYWN0aXZlbHkKQEAgLTQ5Niw5ICs1MzYsMTEgQEAKIAogY29yZS5hdHRyaWJ1dGVzZmlsZTo6CiAJSW4gYWRkaXRpb24gdG8gJy5naXRhdHRyaWJ1dGVzJyAocGVyLWRpcmVjdG9yeSkgYW5kCi0JJy5naXQvaW5mby9hdHRyaWJ1dGVzJywgZ2l0IGxvb2tzIGludG8gdGhpcyBmaWxlIGZvciBhdHRyaWJ1dGVzCisJJy5naXQvaW5mby9hdHRyaWJ1dGVzJywgR2l0IGxvb2tzIGludG8gdGhpcyBmaWxlIGZvciBhdHRyaWJ1dGVzCiAJKHNlZSBsaW5rZ2l0OmdpdGF0dHJpYnV0ZXNbNV0pLiBQYXRoIGV4cGFuc2lvbnMgYXJlIG1hZGUgdGhlIHNhbWUKLQl3YXkgYXMgZm9yIGBjb3JlLmV4Y2x1ZGVzZmlsZWAuCisJd2F5IGFzIGZvciBgY29yZS5leGNsdWRlc2ZpbGVgLiBJdHMgZGVmYXVsdCB2YWx1ZSBpcworCSRYREdfQ09ORklHX0hPTUUvZ2l0L2F0dHJpYnV0ZXMuIElmICRYREdfQ09ORklHX0hPTUUgaXMgZWl0aGVyIG5vdAorCXNldCBvciBlbXB0eSwgJEhPTUUvLmNvbmZpZy9naXQvYXR0cmlidXRlcyBpcyB1c2VkIGluc3RlYWQuCiAKIGNvcmUuZWRpdG9yOjoKIAlDb21tYW5kcyBzdWNoIGFzIGBjb21taXRgIGFuZCBgdGFnYCB0aGF0IGxldHMgeW91IGVkaXQKQEAgLTUwNiwyOSArNTQ4LDM1IEBACiAJdmFyaWFibGUgd2hlbiBpdCBpcyBzZXQsIGFuZCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKIAlgR0lUX0VESVRPUmAgaXMgbm90IHNldC4gIFNlZSBsaW5rZ2l0OmdpdC12YXJbMV0uCiAKK2NvcmUuY29tbWVudGNoYXI6OgorCUNvbW1hbmRzIHN1Y2ggYXMgYGNvbW1pdGAgYW5kIGB0YWdgIHRoYXQgbGV0cyB5b3UgZWRpdAorCW1lc3NhZ2VzIGNvbnNpZGVyIGEgbGluZSB0aGF0IGJlZ2lucyB3aXRoIHRoaXMgY2hhcmFjdGVyCisJY29tbWVudGVkLCBhbmQgcmVtb3ZlcyB0aGVtIGFmdGVyIHRoZSBlZGl0b3IgcmV0dXJucworCShkZWZhdWx0ICcjJykuCisKIHNlcXVlbmNlLmVkaXRvcjo6Ci0JVGV4dCBlZGl0b3IgdXNlZCBieSBgZ2l0IHJlYmFzZSAtaWAgZm9yIGVkaXRpbmcgdGhlIHJlYmFzZSBpbnNuIGZpbGUuCisJVGV4dCBlZGl0b3IgdXNlZCBieSBgZ2l0IHJlYmFzZSAtaWAgZm9yIGVkaXRpbmcgdGhlIHJlYmFzZSBpbnN0cnVjdGlvbiBmaWxlLgogCVRoZSB2YWx1ZSBpcyBtZWFudCB0byBiZSBpbnRlcnByZXRlZCBieSB0aGUgc2hlbGwgd2hlbiBpdCBpcyB1c2VkLgogCUl0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBgR0lUX1NFUVVFTkNFX0VESVRPUmAgZW52aXJvbm1lbnQgdmFyaWFibGUuCiAJV2hlbiBub3QgY29uZmlndXJlZCB0aGUgZGVmYXVsdCBjb21taXQgbWVzc2FnZSBlZGl0b3IgaXMgdXNlZCBpbnN0ZWFkLgogCiBjb3JlLnBhZ2VyOjoKLQlUaGUgY29tbWFuZCB0aGF0IGdpdCB3aWxsIHVzZSB0byBwYWdpbmF0ZSBvdXRwdXQuICBDYW4KKwlUaGUgY29tbWFuZCB0aGF0IEdpdCB3aWxsIHVzZSB0byBwYWdpbmF0ZSBvdXRwdXQuICBDYW4KIAliZSBvdmVycmlkZGVuIHdpdGggdGhlIGBHSVRfUEFHRVJgIGVudmlyb25tZW50Ci0JdmFyaWFibGUuICBOb3RlIHRoYXQgZ2l0IHNldHMgdGhlIGBMRVNTYCBlbnZpcm9ubWVudAorCXZhcmlhYmxlLiAgTm90ZSB0aGF0IEdpdCBzZXRzIHRoZSBgTEVTU2AgZW52aXJvbm1lbnQKIAl2YXJpYWJsZSB0byBgRlJTWGAgaWYgaXQgaXMgdW5zZXQgd2hlbiBpdCBydW5zIHRoZQogCXBhZ2VyLiAgT25lIGNhbiBjaGFuZ2UgdGhlc2Ugc2V0dGluZ3MgYnkgc2V0dGluZyB0aGUKIAlgTEVTU2AgdmFyaWFibGUgdG8gc29tZSBvdGhlciB2YWx1ZS4gIEFsdGVybmF0ZWx5LAogCXRoZXNlIHNldHRpbmdzIGNhbiBiZSBvdmVycmlkZGVuIG9uIGEgcHJvamVjdCBvcgogCWdsb2JhbCBiYXNpcyBieSBzZXR0aW5nIHRoZSBgY29yZS5wYWdlcmAgb3B0aW9uLgotCVNldHRpbmcgYGNvcmUucGFnZXJgIGhhcyBubyBhZmZlY3Qgb24gdGhlIGBMRVNTYAorCVNldHRpbmcgYGNvcmUucGFnZXJgIGhhcyBubyBlZmZlY3Qgb24gdGhlIGBMRVNTYAogCWVudmlyb25tZW50IHZhcmlhYmxlIGJlaGF2aW91ciBhYm92ZSwgc28gaWYgeW91IHdhbnQKLQl0byBvdmVycmlkZSBnaXQncyBkZWZhdWx0IHNldHRpbmdzIHRoaXMgd2F5LCB5b3UgbmVlZAorCXRvIG92ZXJyaWRlIEdpdCdzIGRlZmF1bHQgc2V0dGluZ3MgdGhpcyB3YXksIHlvdSBuZWVkCiAJdG8gYmUgZXhwbGljaXQuICBGb3IgZXhhbXBsZSwgdG8gZGlzYWJsZSB0aGUgUyBvcHRpb24KIAlpbiBhIGJhY2t3YXJkIGNvbXBhdGlibGUgbWFubmVyLCBzZXQgYGNvcmUucGFnZXJgCi0JdG8gYGxlc3MgLSskTEVTUyAtRlJYYC4gIFRoaXMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlCi0Jc2hlbGwgYnkgZ2l0LCB3aGljaCB3aWxsIHRyYW5zbGF0ZSB0aGUgZmluYWwgY29tbWFuZCB0bwotCWBMRVNTPUZSU1ggbGVzcyAtK0ZSU1ggLUZSWGAuCisJdG8gYGxlc3MgLStTYC4gIFRoaXMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIHNoZWxsIGJ5CisJR2l0LCB3aGljaCB3aWxsIHRyYW5zbGF0ZSB0aGUgZmluYWwgY29tbWFuZCB0bworCWBMRVNTPUZSU1ggbGVzcyAtK1NgLgogCiBjb3JlLndoaXRlc3BhY2U6OgogCUEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgY29tbW9uIHdoaXRlc3BhY2UgcHJvYmxlbXMgdG8KQEAgLTU0Miw4ICs1OTAsOSBAQAogKiBgc3BhY2UtYmVmb3JlLXRhYmAgdHJlYXRzIGEgc3BhY2UgY2hhcmFjdGVyIHRoYXQgYXBwZWFycyBpbW1lZGlhdGVseQogICBiZWZvcmUgYSB0YWIgY2hhcmFjdGVyIGluIHRoZSBpbml0aWFsIGluZGVudCBwYXJ0IG9mIHRoZSBsaW5lIGFzIGFuCiAgIGVycm9yIChlbmFibGVkIGJ5IGRlZmF1bHQpLgotKiBgaW5kZW50LXdpdGgtbm9uLXRhYmAgdHJlYXRzIGEgbGluZSB0aGF0IGlzIGluZGVudGVkIHdpdGggOCBvciBtb3JlCi0gIHNwYWNlIGNoYXJhY3RlcnMgYXMgYW4gZXJyb3IgKG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQpLgorKiBgaW5kZW50LXdpdGgtbm9uLXRhYmAgdHJlYXRzIGEgbGluZSB0aGF0IGlzIGluZGVudGVkIHdpdGggc3BhY2UKKyAgY2hhcmFjdGVycyBpbnN0ZWFkIG9mIHRoZSBlcXVpdmFsZW50IHRhYnMgYXMgYW4gZXJyb3IgKG5vdCBlbmFibGVkIGJ5CisgIGRlZmF1bHQpLgogKiBgdGFiLWluLWluZGVudGAgdHJlYXRzIGEgdGFiIGNoYXJhY3RlciBpbiB0aGUgaW5pdGlhbCBpbmRlbnQgcGFydCBvZgogICB0aGUgbGluZSBhcyBhbiBlcnJvciAobm90IGVuYWJsZWQgYnkgZGVmYXVsdCkuCiAqIGBibGFuay1hdC1lb2ZgIHRyZWF0cyBibGFuayBsaW5lcyBhZGRlZCBhdCB0aGUgZW5kIG9mIGZpbGUgYXMgYW4gZXJyb3IKQEAgLTU1NSw3ICs2MDQsNyBAQAogICBkb2VzIG5vdCB0cmlnZ2VyIGlmIHRoZSBjaGFyYWN0ZXIgYmVmb3JlIHN1Y2ggYSBjYXJyaWFnZS1yZXR1cm4KICAgaXMgbm90IGEgd2hpdGVzcGFjZSAobm90IGVuYWJsZWQgYnkgZGVmYXVsdCkuCiAqIGB0YWJ3aWR0aD08bj5gIHRlbGxzIGhvdyBtYW55IGNoYXJhY3RlciBwb3NpdGlvbnMgYSB0YWIgb2NjdXBpZXM7IHRoaXMKLSAgaXMgcmVsZXZhbnQgZm9yIGBpbmRlbnQtd2l0aC1ub24tdGFiYCBhbmQgd2hlbiBnaXQgZml4ZXMgYHRhYi1pbi1pbmRlbnRgCisgIGlzIHJlbGV2YW50IGZvciBgaW5kZW50LXdpdGgtbm9uLXRhYmAgYW5kIHdoZW4gR2l0IGZpeGVzIGB0YWItaW4taW5kZW50YAogICBlcnJvcnMuIFRoZSBkZWZhdWx0IHRhYiB3aWR0aCBpcyA4LiBBbGxvd2VkIHZhbHVlcyBhcmUgMSB0byA2My4KIAogY29yZS5mc3luY29iamVjdGZpbGVzOjoKQEAgLTU3MSw3ICs2MjAsNyBAQAogKwogVGhpcyBjYW4gc3BlZWQgdXAgb3BlcmF0aW9ucyBsaWtlICdnaXQgZGlmZicgYW5kICdnaXQgc3RhdHVzJyBlc3BlY2lhbGx5CiBvbiBmaWxlc3lzdGVtcyBsaWtlIE5GUyB0aGF0IGhhdmUgd2VhayBjYWNoaW5nIHNlbWFudGljcyBhbmQgdGh1cwotcmVsYXRpdmVseSBoaWdoIElPIGxhdGVuY2llcy4gIFdpdGggdGhpcyBzZXQgdG8gJ3RydWUnLCBnaXQgd2lsbCBkbyB0aGUKK3JlbGF0aXZlbHkgaGlnaCBJTyBsYXRlbmNpZXMuICBXaXRoIHRoaXMgc2V0IHRvICd0cnVlJywgR2l0IHdpbGwgZG8gdGhlCiBpbmRleCBjb21wYXJpc29uIHRvIHRoZSBmaWxlc3lzdGVtIGRhdGEgaW4gcGFyYWxsZWwsIGFsbG93aW5nCiBvdmVybGFwcGluZyBJTydzLgogCkBAIC02MDcsOSArNjU2LDkgQEAKIGFkZC5pZ25vcmVFcnJvcnM6OgogCVRlbGxzICdnaXQgYWRkJyB0byBjb250aW51ZSBhZGRpbmcgZmlsZXMgd2hlbiBzb21lIGZpbGVzIGNhbm5vdCBiZQogCWFkZGVkIGR1ZSB0byBpbmRleGluZyBlcnJvcnMuIEVxdWl2YWxlbnQgdG8gdGhlICctLWlnbm9yZS1lcnJvcnMnCi0Jb3B0aW9uIG9mIGxpbmtnaXQ6Z2l0LWFkZFsxXS4gIE9sZGVyIHZlcnNpb25zIG9mIGdpdCBhY2NlcHQgb25seQorCW9wdGlvbiBvZiBsaW5rZ2l0OmdpdC1hZGRbMV0uICBPbGRlciB2ZXJzaW9ucyBvZiBHaXQgYWNjZXB0IG9ubHkKIAlgYWRkLmlnbm9yZS1lcnJvcnNgLCB3aGljaCBkb2VzIG5vdCBmb2xsb3cgdGhlIHVzdWFsIG5hbWluZwotCWNvbnZlbnRpb24gZm9yIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLiAgTmV3ZXIgdmVyc2lvbnMgb2YgZ2l0CisJY29udmVudGlvbiBmb3IgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMuICBOZXdlciB2ZXJzaW9ucyBvZiBHaXQKIAlob25vciBgYWRkLmlnbm9yZUVycm9yc2AgYXMgd2VsbC4KIAogYWxpYXMuKjo6CkBAIC02MTcsNyArNjY2LDcgQEAKIAlhZnRlciBkZWZpbmluZyAiYWxpYXMubGFzdCA9IGNhdC1maWxlIGNvbW1pdCBIRUFEIiwgdGhlIGludm9jYXRpb24KIAkiZ2l0IGxhc3QiIGlzIGVxdWl2YWxlbnQgdG8gImdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCIuIFRvIGF2b2lkCiAJY29uZnVzaW9uIGFuZCB0cm91YmxlcyB3aXRoIHNjcmlwdCB1c2FnZSwgYWxpYXNlcyB0aGF0Ci0JaGlkZSBleGlzdGluZyBnaXQgY29tbWFuZHMgYXJlIGlnbm9yZWQuIEFyZ3VtZW50cyBhcmUgc3BsaXQgYnkKKwloaWRlIGV4aXN0aW5nIEdpdCBjb21tYW5kcyBhcmUgaWdub3JlZC4gQXJndW1lbnRzIGFyZSBzcGxpdCBieQogCXNwYWNlcywgdGhlIHVzdWFsIHNoZWxsIHF1b3RpbmcgYW5kIGVzY2FwaW5nIGlzIHN1cHBvcnRlZC4KIAlxdW90ZSBwYWlyIGFuZCBhIGJhY2tzbGFzaCBjYW4gYmUgdXNlZCB0byBxdW90ZSB0aGVtLgogKwpAQCAtNjY0LDcgKzcxMyw3IEBACiAKIGJyYW5jaC5hdXRvc2V0dXByZWJhc2U6OgogCVdoZW4gYSBuZXcgYnJhbmNoIGlzIGNyZWF0ZWQgd2l0aCAnZ2l0IGJyYW5jaCcgb3IgJ2dpdCBjaGVja291dCcKLQl0aGF0IHRyYWNrcyBhbm90aGVyIGJyYW5jaCwgdGhpcyB2YXJpYWJsZSB0ZWxscyBnaXQgdG8gc2V0CisJdGhhdCB0cmFja3MgYW5vdGhlciBicmFuY2gsIHRoaXMgdmFyaWFibGUgdGVsbHMgR2l0IHRvIHNldAogCXVwIHB1bGwgdG8gcmViYXNlIGluc3RlYWQgb2YgbWVyZ2UgKHNlZSAiYnJhbmNoLjxuYW1lPi5yZWJhc2UiKS4KIAlXaGVuIGBuZXZlcmAsIHJlYmFzZSBpcyBuZXZlciBhdXRvbWF0aWNhbGx5IHNldCB0byB0cnVlLgogCVdoZW4gYGxvY2FsYCwgcmViYXNlIGlzIHNldCB0byB0cnVlIGZvciB0cmFja2VkIGJyYW5jaGVzIG9mCkBAIC02NzgsOSArNzI3LDIyIEBACiAJVGhpcyBvcHRpb24gZGVmYXVsdHMgdG8gbmV2ZXIuCiAKIGJyYW5jaC48bmFtZT4ucmVtb3RlOjoKLQlXaGVuIGluIGJyYW5jaCA8bmFtZT4sIGl0IHRlbGxzICdnaXQgZmV0Y2gnIGFuZCAnZ2l0IHB1c2gnIHdoaWNoCi0JcmVtb3RlIHRvIGZldGNoIGZyb20vcHVzaCB0by4gIEl0IGRlZmF1bHRzIHRvIGBvcmlnaW5gIGlmIG5vIHJlbW90ZSBpcwotCWNvbmZpZ3VyZWQuIGBvcmlnaW5gIGlzIGFsc28gdXNlZCBpZiB5b3UgYXJlIG5vdCBvbiBhbnkgYnJhbmNoLgorCVdoZW4gb24gYnJhbmNoIDxuYW1lPiwgaXQgdGVsbHMgJ2dpdCBmZXRjaCcgYW5kICdnaXQgcHVzaCcKKwl3aGljaCByZW1vdGUgdG8gZmV0Y2ggZnJvbS9wdXNoIHRvLiAgVGhlIHJlbW90ZSB0byBwdXNoIHRvCisJbWF5IGJlIG92ZXJyaWRkZW4gd2l0aCBgcmVtb3RlLnB1c2hkZWZhdWx0YCAoZm9yIGFsbCBicmFuY2hlcykuCisJVGhlIHJlbW90ZSB0byBwdXNoIHRvLCBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLCBtYXkgYmUgZnVydGhlcgorCW92ZXJyaWRkZW4gYnkgYGJyYW5jaC48bmFtZT4ucHVzaHJlbW90ZWAuICBJZiBubyByZW1vdGUgaXMKKwljb25maWd1cmVkLCBvciBpZiB5b3UgYXJlIG5vdCBvbiBhbnkgYnJhbmNoLCBpdCBkZWZhdWx0cyB0bworCWBvcmlnaW5gIGZvciBmZXRjaGluZyBhbmQgYHJlbW90ZS5wdXNoZGVmYXVsdGAgZm9yIHB1c2hpbmcuCisKK2JyYW5jaC48bmFtZT4ucHVzaHJlbW90ZTo6CisJV2hlbiBvbiBicmFuY2ggPG5hbWU+LCBpdCBvdmVycmlkZXMgYGJyYW5jaC48bmFtZT4ucmVtb3RlYCBmb3IKKwlwdXNoaW5nLiAgSXQgYWxzbyBvdmVycmlkZXMgYHJlbW90ZS5wdXNoZGVmYXVsdGAgZm9yIHB1c2hpbmcKKwlmcm9tIGJyYW5jaCA8bmFtZT4uICBXaGVuIHlvdSBwdWxsIGZyb20gb25lIHBsYWNlIChlLmcuIHlvdXIKKwl1cHN0cmVhbSkgYW5kIHB1c2ggdG8gYW5vdGhlciBwbGFjZSAoZS5nLiB5b3VyIG93biBwdWJsaXNoaW5nCisJcmVwb3NpdG9yeSksIHlvdSB3b3VsZCB3YW50IHRvIHNldCBgcmVtb3RlLnB1c2hkZWZhdWx0YCB0bworCXNwZWNpZnkgdGhlIHJlbW90ZSB0byBwdXNoIHRvIGZvciBhbGwgYnJhbmNoZXMsIGFuZCB1c2UgdGhpcworCW9wdGlvbiB0byBvdmVycmlkZSBpdCBmb3IgYSBzcGVjaWZpYyBicmFuY2guCiAKIGJyYW5jaC48bmFtZT4ubWVyZ2U6OgogCURlZmluZXMsIHRvZ2V0aGVyIHdpdGggYnJhbmNoLjxuYW1lPi5yZW1vdGUsIHRoZSB1cHN0cmVhbSBicmFuY2gKQEAgLTcxNiw2ICs3NzgsMTIgQEAKIGl0IHVubGVzcyB5b3UgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIChzZWUgbGlua2dpdDpnaXQtcmViYXNlWzFdCiBmb3IgZGV0YWlscykuCiAKK2JyYW5jaC48bmFtZT4uZGVzY3JpcHRpb246OgorCUJyYW5jaCBkZXNjcmlwdGlvbiwgY2FuIGJlIGVkaXRlZCB3aXRoCisJYGdpdCBicmFuY2ggLS1lZGl0LWRlc2NyaXB0aW9uYC4gQnJhbmNoIGRlc2NyaXB0aW9uIGlzCisJYXV0b21hdGljYWxseSBhZGRlZCBpbiB0aGUgZm9ybWF0LXBhdGNoIGNvdmVyIGxldHRlciBvcgorCXJlcXVlc3QtcHVsbCBzdW1tYXJ5LgorCiBicm93c2VyLjx0b29sPi5jbWQ6OgogCVNwZWNpZnkgdGhlIGNvbW1hbmQgdG8gaW52b2tlIHRoZSBzcGVjaWZpZWQgYnJvd3Nlci4gVGhlCiAJc3BlY2lmaWVkIGNvbW1hbmQgaXMgZXZhbHVhdGVkIGluIHNoZWxsIHdpdGggdGhlIFVSTHMgcGFzc2VkCkBAIC03MzksNyArODA3LDggQEAKIGNvbG9yLmJyYW5jaC48c2xvdD46OgogCVVzZSBjdXN0b21pemVkIGNvbG9yIGZvciBicmFuY2ggY29sb3JhdGlvbi4gYDxzbG90PmAgaXMgb25lIG9mCiAJYGN1cnJlbnRgICh0aGUgY3VycmVudCBicmFuY2gpLCBgbG9jYWxgIChhIGxvY2FsIGJyYW5jaCksCi0JYHJlbW90ZWAgKGEgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCBpbiByZWZzL3JlbW90ZXMvKSwgYHBsYWluYCAob3RoZXIKKwlgcmVtb3RlYCAoYSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoIGluIHJlZnMvcmVtb3Rlcy8pLAorCWB1cHN0cmVhbWAgKHVwc3RyZWFtIHRyYWNraW5nIGJyYW5jaCksIGBwbGFpbmAgKG90aGVyCiAJcmVmcykuCiArCiBUaGUgdmFsdWUgZm9yIHRoZXNlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGlzIGEgbGlzdCBvZiBjb2xvcnMgKGF0IG1vc3QKQEAgLTgzOSw3ICs5MDgsNyBAQAogCW9uZSBvZiBgaGVhZGVyYCAodGhlIGhlYWRlciB0ZXh0IG9mIHRoZSBzdGF0dXMgbWVzc2FnZSksCiAJYGFkZGVkYCBvciBgdXBkYXRlZGAgKGZpbGVzIHdoaWNoIGFyZSBhZGRlZCBidXQgbm90IGNvbW1pdHRlZCksCiAJYGNoYW5nZWRgIChmaWxlcyB3aGljaCBhcmUgY2hhbmdlZCBidXQgbm90IGFkZGVkIGluIHRoZSBpbmRleCksCi0JYHVudHJhY2tlZGAgKGZpbGVzIHdoaWNoIGFyZSBub3QgdHJhY2tlZCBieSBnaXQpLAorCWB1bnRyYWNrZWRgIChmaWxlcyB3aGljaCBhcmUgbm90IHRyYWNrZWQgYnkgR2l0KSwKIAlgYnJhbmNoYCAodGhlIGN1cnJlbnQgYnJhbmNoKSwgb3IKIAlgbm9icmFuY2hgICh0aGUgY29sb3IgdGhlICdubyBicmFuY2gnIHdhcm5pbmcgaXMgc2hvd24gaW4sIGRlZmF1bHRpbmcKIAl0byByZWQpLiBUaGUgdmFsdWVzIG9mIHRoZXNlIHZhcmlhYmxlcyBtYXkgYmUgc3BlY2lmaWVkIGFzIGluCkBAIC04NTMsNyArOTIyLDcgQEAKIAl0byBgYWx3YXlzYCBpZiB5b3Ugd2FudCBhbGwgb3V0cHV0IG5vdCBpbnRlbmRlZCBmb3IgbWFjaGluZQogCWNvbnN1bXB0aW9uIHRvIHVzZSBjb2xvciwgdG8gYHRydWVgIG9yIGBhdXRvYCBpZiB5b3Ugd2FudCBzdWNoCiAJb3V0cHV0IHRvIHVzZSBjb2xvciB3aGVuIHdyaXR0ZW4gdG8gdGhlIHRlcm1pbmFsLCBvciB0byBgZmFsc2VgIG9yCi0JYG5ldmVyYCBpZiB5b3UgcHJlZmVyIGdpdCBjb21tYW5kcyBub3QgdG8gdXNlIGNvbG9yIHVubGVzcyBlbmFibGVkCisJYG5ldmVyYCBpZiB5b3UgcHJlZmVyIEdpdCBjb21tYW5kcyBub3QgdG8gdXNlIGNvbG9yIHVubGVzcyBlbmFibGVkCiAJZXhwbGljaXRseSB3aXRoIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBvciB0aGUgYC0tY29sb3JgIG9wdGlvbi4KIAogY29sdW1uLnVpOjoKQEAgLTg4MCw3ICs5NDksNyBAQAogCW1ha2UgZXF1YWwgc2l6ZSBjb2x1bW5zCiAtLQogKwotCVRoaXMgb3B0aW9uIGRlZmF1bHRzIHRvICduZXZlcicuCitUaGlzIG9wdGlvbiBkZWZhdWx0cyB0byAnbmV2ZXInLgogCiBjb2x1bW4uYnJhbmNoOjoKIAlTcGVjaWZ5IHdoZXRoZXIgdG8gb3V0cHV0IGJyYW5jaCBsaXN0aW5nIGluIGBnaXQgYnJhbmNoYCBpbiBjb2x1bW5zLgpAQCAtODk0LDYgKzk2MywxNSBAQAogCVNwZWNpZnkgd2hldGhlciB0byBvdXRwdXQgdGFnIGxpc3RpbmcgaW4gYGdpdCB0YWdgIGluIGNvbHVtbnMuCiAJU2VlIGBjb2x1bW4udWlgIGZvciBkZXRhaWxzLgogCitjb21taXQuY2xlYW51cDo6CisJVGhpcyBzZXR0aW5nIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBvZiB0aGUgYC0tY2xlYW51cGAgb3B0aW9uIGluCisJYGdpdCBjb21taXRgLiBTZWUgbGlua2dpdDpnaXQtY29tbWl0WzFdIGZvciBkZXRhaWxzLiBDaGFuZ2luZyB0aGUKKwlkZWZhdWx0IGNhbiBiZSB1c2VmdWwgd2hlbiB5b3UgYWx3YXlzIHdhbnQgdG8ga2VlcCBsaW5lcyB0aGF0IGJlZ2luCisJd2l0aCBjb21tZW50IGNoYXJhY3RlciBgI2AgaW4geW91ciBsb2cgbWVzc2FnZSwgaW4gd2hpY2ggY2FzZSB5b3UKKwl3b3VsZCBkbyBgZ2l0IGNvbmZpZyBjb21taXQuY2xlYW51cCB3aGl0ZXNwYWNlYCAobm90ZSB0aGF0IHlvdSB3aWxsCisJaGF2ZSB0byByZW1vdmUgdGhlIGhlbHAgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGAjYCBpbiB0aGUgY29tbWl0IGxvZworCXRlbXBsYXRlIHlvdXJzZWxmLCBpZiB5b3UgZG8gdGhpcykuCisKIGNvbW1pdC5zdGF0dXM6OgogCUEgYm9vbGVhbiB0byBlbmFibGUvZGlzYWJsZSBpbmNsdXNpb24gb2Ygc3RhdHVzIGluZm9ybWF0aW9uIGluIHRoZQogCWNvbW1pdCBtZXNzYWdlIHRlbXBsYXRlIHdoZW4gdXNpbmcgYW4gZWRpdG9yIHRvIHByZXBhcmUgdGhlIGNvbW1pdApAQCAtOTQ0LDEyICsxMDIyLDYgQEAKIGRpZmZ0b29sLnByb21wdDo6CiAJUHJvbXB0IGJlZm9yZSBlYWNoIGludm9jYXRpb24gb2YgdGhlIGRpZmYgdG9vbC4KIAotZGlmZi53b3JkUmVnZXg6OgotCUEgUE9TSVggRXh0ZW5kZWQgUmVndWxhciBFeHByZXNzaW9uIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgaXMgYSAid29yZCIKLQl3aGVuIHBlcmZvcm1pbmcgd29yZC1ieS13b3JkIGRpZmZlcmVuY2UgY2FsY3VsYXRpb25zLiAgQ2hhcmFjdGVyCi0Jc2VxdWVuY2VzIHRoYXQgbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBhcmUgIndvcmRzIiwgYWxsIG90aGVyCi0JY2hhcmFjdGVycyBhcmUgKmlnbm9yYWJsZSogd2hpdGVzcGFjZS4KLQogZmV0Y2gucmVjdXJzZVN1Ym1vZHVsZXM6OgogCVRoaXMgb3B0aW9uIGNhbiBiZSBlaXRoZXIgc2V0IHRvIGEgYm9vbGVhbiB2YWx1ZSBvciB0byAnb24tZGVtYW5kJy4KIAlTZXR0aW5nIGl0IHRvIGEgYm9vbGVhbiBjaGFuZ2VzIHRoZSBiZWhhdmlvciBvZiBmZXRjaCBhbmQgcHVsbCB0bwpAQCAtOTY3LDcgKzEwMzksNyBAQAogCWlzIHVzZWQgaW5zdGVhZC4KIAogZmV0Y2gudW5wYWNrTGltaXQ6OgotCUlmIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyBmZXRjaGVkIG92ZXIgdGhlIGdpdCBuYXRpdmUKKwlJZiB0aGUgbnVtYmVyIG9mIG9iamVjdHMgZmV0Y2hlZCBvdmVyIHRoZSBHaXQgbmF0aXZlCiAJdHJhbnNmZXIgaXMgYmVsb3cgdGhpcwogCWxpbWl0LCB0aGVuIHRoZSBvYmplY3RzIHdpbGwgYmUgdW5wYWNrZWQgaW50byBsb29zZSBvYmplY3QKIAlmaWxlcy4gSG93ZXZlciBpZiB0aGUgbnVtYmVyIG9mIHJlY2VpdmVkIG9iamVjdHMgZXF1YWxzIG9yCkBAIC0xMDA3LDcgKzEwNzksNyBAQAogCiBmb3JtYXQuc2lnbmF0dXJlOjoKIAlUaGUgZGVmYXVsdCBmb3IgZm9ybWF0LXBhdGNoIGlzIHRvIG91dHB1dCBhIHNpZ25hdHVyZSBjb250YWluaW5nCi0JdGhlIGdpdCB2ZXJzaW9uIG51bWJlci4gVXNlIHRoaXMgdmFyaWFibGUgdG8gY2hhbmdlIHRoYXQgZGVmYXVsdC4KKwl0aGUgR2l0IHZlcnNpb24gbnVtYmVyLiBVc2UgdGhpcyB2YXJpYWJsZSB0byBjaGFuZ2UgdGhhdCBkZWZhdWx0LgogCVNldCB0aGlzIHZhcmlhYmxlIHRvIHRoZSBlbXB0eSBzdHJpbmcgKCIiKSB0byBzdXBwcmVzcwogCXNpZ25hdHVyZSBnZW5lcmF0aW9uLgogCkBAIC0xMDMyLDExICsxMTA0LDE2IEBACiAJdmFsdWUgZGlzYWJsZXMgdGhyZWFkaW5nLgogCiBmb3JtYXQuc2lnbm9mZjo6Ci0gICAgQSBib29sZWFuIHZhbHVlIHdoaWNoIGxldHMgeW91IGVuYWJsZSB0aGUgYC1zLy0tc2lnbm9mZmAgb3B0aW9uIG9mCi0gICAgZm9ybWF0LXBhdGNoIGJ5IGRlZmF1bHQuICpOb3RlOiogQWRkaW5nIHRoZSBTaWduZWQtb2ZmLWJ5OiBsaW5lIHRvIGEKLSAgICBwYXRjaCBzaG91bGQgYmUgYSBjb25zY2lvdXMgYWN0IGFuZCBtZWFucyB0aGF0IHlvdSBjZXJ0aWZ5IHlvdSBoYXZlCi0gICAgdGhlIHJpZ2h0cyB0byBzdWJtaXQgdGhpcyB3b3JrIHVuZGVyIHRoZSBzYW1lIG9wZW4gc291cmNlIGxpY2Vuc2UuCi0gICAgUGxlYXNlIHNlZSB0aGUgJ1N1Ym1pdHRpbmdQYXRjaGVzJyBkb2N1bWVudCBmb3IgZnVydGhlciBkaXNjdXNzaW9uLgorCUEgYm9vbGVhbiB2YWx1ZSB3aGljaCBsZXRzIHlvdSBlbmFibGUgdGhlIGAtcy8tLXNpZ25vZmZgIG9wdGlvbiBvZgorCWZvcm1hdC1wYXRjaCBieSBkZWZhdWx0LiAqTm90ZToqIEFkZGluZyB0aGUgU2lnbmVkLW9mZi1ieTogbGluZSB0byBhCisJcGF0Y2ggc2hvdWxkIGJlIGEgY29uc2Npb3VzIGFjdCBhbmQgbWVhbnMgdGhhdCB5b3UgY2VydGlmeSB5b3UgaGF2ZQorCXRoZSByaWdodHMgdG8gc3VibWl0IHRoaXMgd29yayB1bmRlciB0aGUgc2FtZSBvcGVuIHNvdXJjZSBsaWNlbnNlLgorCVBsZWFzZSBzZWUgdGhlICdTdWJtaXR0aW5nUGF0Y2hlcycgZG9jdW1lbnQgZm9yIGZ1cnRoZXIgZGlzY3Vzc2lvbi4KKworZm9ybWF0LmNvdmVyTGV0dGVyOjoKKwlBIGJvb2xlYW4gdGhhdCBjb250cm9scyB3aGV0aGVyIHRvIGdlbmVyYXRlIGEgY292ZXItbGV0dGVyIHdoZW4KKwlmb3JtYXQtcGF0Y2ggaXMgaW52b2tlZCwgYnV0IGluIGFkZGl0aW9uIGNhbiBiZSBzZXQgdG8gImF1dG8iLCB0bworCWdlbmVyYXRlIGEgY292ZXItbGV0dGVyIG9ubHkgd2hlbiB0aGVyZSdzIG1vcmUgdGhhbiBvbmUgcGF0Y2guCiAKIGZpbHRlci48ZHJpdmVyPi5jbGVhbjo6CiAJVGhlIGNvbW1hbmQgd2hpY2ggaXMgdXNlZCB0byBjb252ZXJ0IHRoZSBjb250ZW50IG9mIGEgd29ya3RyZWUKQEAgLTExMjAsNyArMTE5Nyw3IEBACiBnaXRjdnMudXNlY3JsZmF0dHI6OgogCUlmIHRydWUsIHRoZSBzZXJ2ZXIgd2lsbCBsb29rIHVwIHRoZSBlbmQtb2YtbGluZSBjb252ZXJzaW9uCiAJYXR0cmlidXRlcyBmb3IgZmlsZXMgdG8gZGV0ZXJtaW5lIHRoZSAnLWsnIG1vZGVzIHRvIHVzZS4gSWYKLQl0aGUgYXR0cmlidXRlcyBmb3JjZSBnaXQgdG8gdHJlYXQgYSBmaWxlIGFzIHRleHQsCisJdGhlIGF0dHJpYnV0ZXMgZm9yY2UgR2l0IHRvIHRyZWF0IGEgZmlsZSBhcyB0ZXh0LAogCXRoZSAnLWsnIG1vZGUgd2lsbCBiZSBsZWZ0IGJsYW5rIHNvIENWUyBjbGllbnRzIHdpbGwKIAl0cmVhdCBpdCBhcyB0ZXh0LiBJZiB0aGV5IHN1cHByZXNzIHRleHQgY29udmVyc2lvbiwgdGhlIGZpbGUKIAl3aWxsIGJlIHNldCB3aXRoICcta2InIG1vZGUsIHdoaWNoIHN1cHByZXNzZXMgYW55IG5ld2xpbmUgbXVuZ2luZwpAQCAtMTE0MCw3ICsxMjE3LDcgQEAKIAogZ2l0Y3ZzLmRibmFtZTo6CiAJRGF0YWJhc2UgdXNlZCBieSBnaXQtY3Zzc2VydmVyIHRvIGNhY2hlIHJldmlzaW9uIGluZm9ybWF0aW9uCi0JZGVyaXZlZCBmcm9tIHRoZSBnaXQgcmVwb3NpdG9yeS4gVGhlIGV4YWN0IG1lYW5pbmcgZGVwZW5kcyBvbiB0aGUKKwlkZXJpdmVkIGZyb20gdGhlIEdpdCByZXBvc2l0b3J5LiBUaGUgZXhhY3QgbWVhbmluZyBkZXBlbmRzIG9uIHRoZQogCXVzZWQgZGF0YWJhc2UgZHJpdmVyLCBmb3IgU1FMaXRlICh3aGljaCBpcyB0aGUgZGVmYXVsdCBkcml2ZXIpIHRoaXMKIAlpcyBhIGZpbGVuYW1lLiBTdXBwb3J0cyB2YXJpYWJsZSBzdWJzdGl0dXRpb24gKHNlZQogCWxpbmtnaXQ6Z2l0LWN2c3NlcnZlclsxXSBmb3IgZGV0YWlscykuIE1heSBub3QgY29udGFpbiBzZW1pY29sb25zIChgO2ApLgpAQCAtMTE0OCw3ICsxMjI1LDcgQEAKIAogZ2l0Y3ZzLmRiZHJpdmVyOjoKIAlVc2VkIFBlcmwgREJJIGRyaXZlci4gWW91IGNhbiBzcGVjaWZ5IGFueSBhdmFpbGFibGUgZHJpdmVyCi0gICAgICAgIGZvciB0aGlzIGhlcmUsIGJ1dCBpdCBtaWdodCBub3Qgd29yay4gZ2l0LWN2c3NlcnZlciBpcyB0ZXN0ZWQKKwlmb3IgdGhpcyBoZXJlLCBidXQgaXQgbWlnaHQgbm90IHdvcmsuIGdpdC1jdnNzZXJ2ZXIgaXMgdGVzdGVkCiAJd2l0aCAnREJEOjpTUUxpdGUnLCByZXBvcnRlZCB0byB3b3JrIHdpdGggJ0RCRDo6UGcnLCBhbmQKIAlyZXBvcnRlZCAqbm90KiB0byB3b3JrIHdpdGggJ0RCRDo6bXlzcWwnLiBFeHBlcmltZW50YWwgZmVhdHVyZS4KIAlNYXkgbm90IGNvbnRhaW4gZG91YmxlIGNvbG9ucyAoYDpgKS4gRGVmYXVsdDogJ1NRTGl0ZScuCkBAIC0xMTkzLDggKzEyNzAsMTYgQEAKIGdyZXAubGluZU51bWJlcjo6CiAJSWYgc2V0IHRvIHRydWUsIGVuYWJsZSAnLW4nIG9wdGlvbiBieSBkZWZhdWx0LgogCitncmVwLnBhdHRlcm5UeXBlOjoKKwlTZXQgdGhlIGRlZmF1bHQgbWF0Y2hpbmcgYmVoYXZpb3IuIFVzaW5nIGEgdmFsdWUgb2YgJ2Jhc2ljJywgJ2V4dGVuZGVkJywKKwknZml4ZWQnLCBvciAncGVybCcgd2lsbCBlbmFibGUgdGhlICctLWJhc2ljLXJlZ2V4cCcsICctLWV4dGVuZGVkLXJlZ2V4cCcsCisJJy0tZml4ZWQtc3RyaW5ncycsIG9yICctLXBlcmwtcmVnZXhwJyBvcHRpb24gYWNjb3JkaW5nbHksIHdoaWxlIHRoZQorCXZhbHVlICdkZWZhdWx0JyB3aWxsIHJldHVybiB0byB0aGUgZGVmYXVsdCBtYXRjaGluZyBiZWhhdmlvci4KKwogZ3JlcC5leHRlbmRlZFJlZ2V4cDo6Ci0JSWYgc2V0IHRvIHRydWUsIGVuYWJsZSAnLS1leHRlbmRlZC1yZWdleHAnIG9wdGlvbiBieSBkZWZhdWx0LgorCUlmIHNldCB0byB0cnVlLCBlbmFibGUgJy0tZXh0ZW5kZWQtcmVnZXhwJyBvcHRpb24gYnkgZGVmYXVsdC4gVGhpcworCW9wdGlvbiBpcyBpZ25vcmVkIHdoZW4gdGhlICdncmVwLnBhdHRlcm5UeXBlJyBvcHRpb24gaXMgc2V0IHRvIGEgdmFsdWUKKwlvdGhlciB0aGFuICdkZWZhdWx0Jy4KIAogZ3BnLnByb2dyYW06OgogCVVzZSB0aGlzIGN1c3RvbSBwcm9ncmFtIGluc3RlYWQgb2YgImdwZyIgZm91bmQgb24gJFBBVEggd2hlbgpAQCAtMTMzMCw2ICsxNDE1LDEyIEBACiAJdmFsdWUgaXMgMCAtIHRoZSBjb21tYW5kIHdpbGwgYmUganVzdCBzaG93biBidXQgbm90IGV4ZWN1dGVkLgogCVRoaXMgaXMgdGhlIGRlZmF1bHQuCiAKK2hlbHAuaHRtbHBhdGg6OgorCVNwZWNpZnkgdGhlIHBhdGggd2hlcmUgdGhlIEhUTUwgZG9jdW1lbnRhdGlvbiByZXNpZGVzLiBGaWxlIHN5c3RlbSBwYXRocworCWFuZCBVUkxzIGFyZSBzdXBwb3J0ZWQuIEhUTUwgcGFnZXMgd2lsbCBiZSBwcmVmaXhlZCB3aXRoIHRoaXMgcGF0aCB3aGVuCisJaGVscCBpcyBkaXNwbGF5ZWQgaW4gdGhlICd3ZWInIGZvcm1hdC4gVGhpcyBkZWZhdWx0cyB0byB0aGUgZG9jdW1lbnRhdGlvbgorCXBhdGggb2YgeW91ciBHaXQgaW5zdGFsbGF0aW9uLgorCiBodHRwLnByb3h5OjoKIAlPdmVycmlkZSB0aGUgSFRUUCBwcm94eSwgbm9ybWFsbHkgY29uZmlndXJlZCB1c2luZyB0aGUgJ2h0dHBfcHJveHknLAogCSdodHRwc19wcm94eScsIGFuZCAnYWxsX3Byb3h5JyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKHNlZQpAQCAtMTMzOCw3ICsxNDI5LDcgQEAKIAogaHR0cC5jb29raWVmaWxlOjoKIAlGaWxlIGNvbnRhaW5pbmcgcHJldmlvdXNseSBzdG9yZWQgY29va2llIGxpbmVzIHdoaWNoIHNob3VsZCBiZSB1c2VkCi0JaW4gdGhlIGdpdCBodHRwIHNlc3Npb24sIGlmIHRoZXkgbWF0Y2ggdGhlIHNlcnZlci4gVGhlIGZpbGUgZm9ybWF0CisJaW4gdGhlIEdpdCBodHRwIHNlc3Npb24sIGlmIHRoZXkgbWF0Y2ggdGhlIHNlcnZlci4gVGhlIGZpbGUgZm9ybWF0CiAJb2YgdGhlIGZpbGUgdG8gcmVhZCBjb29raWVzIGZyb20gc2hvdWxkIGJlIHBsYWluIEhUVFAgaGVhZGVycyBvcgogCXRoZSBOZXRzY2FwZS9Nb3ppbGxhIGNvb2tpZSBmaWxlIGZvcm1hdCAoc2VlIGxpbmtnaXQ6Y3VybFsxXSkuCiAJTk9URSB0aGF0IHRoZSBmaWxlIHNwZWNpZmllZCB3aXRoIGh0dHAuY29va2llZmlsZSBpcyBvbmx5IHVzZWQgYXMKQEAgLTEzNjAsNyArMTQ1MSw3IEBACiAJdmFyaWFibGUuCiAKIGh0dHAuc3NsQ2VydFBhc3N3b3JkUHJvdGVjdGVkOjoKLQlFbmFibGUgZ2l0J3MgcGFzc3dvcmQgcHJvbXB0IGZvciB0aGUgU1NMIGNlcnRpZmljYXRlLiAgT3RoZXJ3aXNlCisJRW5hYmxlIEdpdCdzIHBhc3N3b3JkIHByb21wdCBmb3IgdGhlIFNTTCBjZXJ0aWZpY2F0ZS4gIE90aGVyd2lzZQogCU9wZW5TU0wgd2lsbCBwcm9tcHQgdGhlIHVzZXIsIHBvc3NpYmx5IG1hbnkgdGltZXMsIGlmIHRoZQogCWNlcnRpZmljYXRlIG9yIHByaXZhdGUga2V5IGlzIGVuY3J5cHRlZC4gIENhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZQogCSdHSVRfU1NMX0NFUlRfUEFTU1dPUkRfUFJPVEVDVEVEJyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KQEAgLTEzNzUsNiArMTQ2NiwxNCBAQAogCXdpdGggd2hlbiBmZXRjaGluZyBvciBwdXNoaW5nIG92ZXIgSFRUUFMuIENhbiBiZSBvdmVycmlkZGVuCiAJYnkgdGhlICdHSVRfU1NMX0NBUEFUSCcgZW52aXJvbm1lbnQgdmFyaWFibGUuCiAKK2h0dHAuc3NsVHJ5OjoKKwlBdHRlbXB0IHRvIHVzZSBBVVRIIFNTTC9UTFMgYW5kIGVuY3J5cHRlZCBkYXRhIHRyYW5zZmVycworCXdoZW4gY29ubmVjdGluZyB2aWEgcmVndWxhciBGVFAgcHJvdG9jb2wuIFRoaXMgbWlnaHQgYmUgbmVlZGVkCisJaWYgdGhlIEZUUCBzZXJ2ZXIgcmVxdWlyZXMgaXQgZm9yIHNlY3VyaXR5IHJlYXNvbnMgb3IgeW91IHdpc2gKKwl0byBjb25uZWN0IHNlY3VyZWx5IHdoZW5ldmVyIHJlbW90ZSBGVFAgc2VydmVyIHN1cHBvcnRzIGl0LgorCURlZmF1bHQgaXMgZmFsc2Ugc2luY2UgaXQgbWlnaHQgdHJpZ2dlciBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24KKwllcnJvcnMgb24gbWlzY29uZmlndXJlZCBzZXJ2ZXJzLgorCiBodHRwLm1heFJlcXVlc3RzOjoKIAlIb3cgbWFueSBIVFRQIHJlcXVlc3RzIHRvIGxhdW5jaCBpbiBwYXJhbGxlbC4gQ2FuIGJlIG92ZXJyaWRkZW4KIAlieSB0aGUgJ0dJVF9IVFRQX01BWF9SRVFVRVNUUycgZW52aXJvbm1lbnQgdmFyaWFibGUuIERlZmF1bHQgaXMgNS4KQEAgLTE0MDcsNyArMTUwNiw3IEBACiAKIGh0dHAudXNlcmFnZW50OjoKIAlUaGUgSFRUUCBVU0VSX0FHRU5UIHN0cmluZyBwcmVzZW50ZWQgdG8gYW4gSFRUUCBzZXJ2ZXIuICBUaGUgZGVmYXVsdAotCXZhbHVlIHJlcHJlc2VudHMgdGhlIHZlcnNpb24gb2YgdGhlIGNsaWVudCBnaXQgc3VjaCBhcyBnaXQvMS43LjEuCisJdmFsdWUgcmVwcmVzZW50cyB0aGUgdmVyc2lvbiBvZiB0aGUgY2xpZW50IEdpdCBzdWNoIGFzIGdpdC8xLjcuMS4KIAlUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIG92ZXJyaWRlIHRoaXMgdmFsdWUgdG8gYSBtb3JlIGNvbW1vbiB2YWx1ZQogCXN1Y2ggYXMgTW96aWxsYS80LjAuICBUaGlzIG1heSBiZSBuZWNlc3NhcnksIGZvciBpbnN0YW5jZSwgaWYKIAljb25uZWN0aW5nIHRocm91Z2ggYSBmaXJld2FsbCB0aGF0IHJlc3RyaWN0cyBIVFRQIGNvbm5lY3Rpb25zIHRvIGEgc2V0CkBAIC0xNDE1LDcgKzE1MTQsNyBAQAogCUNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSAnR0lUX0hUVFBfVVNFUl9BR0VOVCcgZW52aXJvbm1lbnQgdmFyaWFibGUuCiAKIGkxOG4uY29tbWl0RW5jb2Rpbmc6OgotCUNoYXJhY3RlciBlbmNvZGluZyB0aGUgY29tbWl0IG1lc3NhZ2VzIGFyZSBzdG9yZWQgaW47IGdpdCBpdHNlbGYKKwlDaGFyYWN0ZXIgZW5jb2RpbmcgdGhlIGNvbW1pdCBtZXNzYWdlcyBhcmUgc3RvcmVkIGluOyBHaXQgaXRzZWxmCiAJZG9lcyBub3QgY2FyZSBwZXIgc2UsIGJ1dCB0aGlzIGluZm9ybWF0aW9uIGlzIG5lY2Vzc2FyeSBlLmcuIHdoZW4KIAlpbXBvcnRpbmcgY29tbWl0cyBmcm9tIGVtYWlscyBvciBpbiB0aGUgZ2l0ayBncmFwaGljYWwgaGlzdG9yeQogCWJyb3dzZXIgKGFuZCBwb3NzaWJseSBhdCBvdGhlciBwbGFjZXMgaW4gdGhlIGZ1dHVyZSBvciBpbiBvdGhlcgpAQCAtMTQ4OCw2ICsxNTg3LDEwIEBACiAJVG9vbHMgbGlrZSBsaW5rZ2l0OmdpdC1sb2dbMV0gb3IgbGlua2dpdDpnaXQtd2hhdGNoYW5nZWRbMV0sIHdoaWNoCiAJbm9ybWFsbHkgaGlkZSB0aGUgcm9vdCBjb21taXQgd2lsbCBub3cgc2hvdyBpdC4gVHJ1ZSBieSBkZWZhdWx0LgogCitsb2cubWFpbG1hcDo6CisJSWYgdHJ1ZSwgbWFrZXMgbGlua2dpdDpnaXQtbG9nWzFdLCBsaW5rZ2l0OmdpdC1zaG93WzFdLCBhbmQKKwlsaW5rZ2l0OmdpdC13aGF0Y2hhbmdlZFsxXSBhc3N1bWUgYC0tdXNlLW1haWxtYXBgLgorCiBtYWlsbWFwLmZpbGU6OgogCVRoZSBsb2NhdGlvbiBvZiBhbiBhdWdtZW50aW5nIG1haWxtYXAgZmlsZS4gVGhlIGRlZmF1bHQKIAltYWlsbWFwLCBsb2NhdGVkIGluIHRoZSByb290IG9mIHRoZSByZXBvc2l0b3J5LCBpcyBsb2FkZWQKQEAgLTE0OTYsNiArMTU5OSwxNCBAQAogCXN1YmRpcmVjdG9yeSwgb3Igc29tZXdoZXJlIG91dHNpZGUgb2YgdGhlIHJlcG9zaXRvcnkgaXRzZWxmLgogCVNlZSBsaW5rZ2l0OmdpdC1zaG9ydGxvZ1sxXSBhbmQgbGlua2dpdDpnaXQtYmxhbWVbMV0uCiAKK21haWxtYXAuYmxvYjo6CisJTGlrZSBgbWFpbG1hcC5maWxlYCwgYnV0IGNvbnNpZGVyIHRoZSB2YWx1ZSBhcyBhIHJlZmVyZW5jZSB0byBhCisJYmxvYiBpbiB0aGUgcmVwb3NpdG9yeS4gSWYgYm90aCBgbWFpbG1hcC5maWxlYCBhbmQKKwlgbWFpbG1hcC5ibG9iYCBhcmUgZ2l2ZW4sIGJvdGggYXJlIHBhcnNlZCwgd2l0aCBlbnRyaWVzIGZyb20KKwlgbWFpbG1hcC5maWxlYCB0YWtpbmcgcHJlY2VkZW5jZS4gSW4gYSBiYXJlIHJlcG9zaXRvcnksIHRoaXMKKwlkZWZhdWx0cyB0byBgSEVBRDoubWFpbG1hcGAuIEluIGEgbm9uLWJhcmUgcmVwb3NpdG9yeSwgaXQKKwlkZWZhdWx0cyB0byBlbXB0eS4KKwogbWFuLnZpZXdlcjo6CiAJU3BlY2lmeSB0aGUgcHJvZ3JhbXMgdGhhdCBtYXkgYmUgdXNlZCB0byBkaXNwbGF5IGhlbHAgaW4gdGhlCiAJJ21hbicgZm9ybWF0LiBTZWUgbGlua2dpdDpnaXQtaGVscFsxXS4KQEAgLTE1NDEsNyArMTY1Miw3IEBACiAJYHRydWVgIChpLmUuIGtlZXAgdGhlIGJhY2t1cCBmaWxlcykuCiAKIG1lcmdldG9vbC5rZWVwVGVtcG9yYXJpZXM6OgotCVdoZW4gaW52b2tpbmcgYSBjdXN0b20gbWVyZ2UgdG9vbCwgZ2l0IHVzZXMgYSBzZXQgb2YgdGVtcG9yYXJ5CisJV2hlbiBpbnZva2luZyBhIGN1c3RvbSBtZXJnZSB0b29sLCBHaXQgdXNlcyBhIHNldCBvZiB0ZW1wb3JhcnkKIAlmaWxlcyB0byBwYXNzIHRvIHRoZSB0b29sLiBJZiB0aGUgdG9vbCByZXR1cm5zIGFuIGVycm9yIGFuZCB0aGlzCiAJdmFyaWFibGUgaXMgc2V0IHRvIGB0cnVlYCwgdGhlbiB0aGVzZSB0ZW1wb3JhcnkgZmlsZXMgd2lsbCBiZQogCXByZXNlcnZlZCwgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSByZW1vdmVkIGFmdGVyIHRoZSB0b29sIGhhcwpAQCAtMTU2OSw3ICsxNjgwLDcgQEAKIAogbm90ZXMucmV3cml0ZS48Y29tbWFuZD46OgogCVdoZW4gcmV3cml0aW5nIGNvbW1pdHMgd2l0aCA8Y29tbWFuZD4gKGN1cnJlbnRseSBgYW1lbmRgIG9yCi0JYHJlYmFzZWApIGFuZCB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byBgdHJ1ZWAsIGdpdAorCWByZWJhc2VgKSBhbmQgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gYHRydWVgLCBHaXQKIAlhdXRvbWF0aWNhbGx5IGNvcGllcyB5b3VyIG5vdGVzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZQogCXJld3JpdHRlbiBjb21taXQuICBEZWZhdWx0cyB0byBgdHJ1ZWAsIGJ1dCBzZWUKIAkibm90ZXMucmV3cml0ZVJlZiIgYmVsb3cuCkBAIC0xNjQ5LDcgKzE3NjAsNyBAQAogCXdhcm5pbmcuIFRoaXMgaXMgbWVhbnQgdG8gcmVkdWNlIHBhY2tpbmcgdGltZSBvbiBtdWx0aXByb2Nlc3NvcgogCW1hY2hpbmVzLiBUaGUgcmVxdWlyZWQgYW1vdW50IG9mIG1lbW9yeSBmb3IgdGhlIGRlbHRhIHNlYXJjaCB3aW5kb3cKIAlpcyBob3dldmVyIG11bHRpcGxpZWQgYnkgdGhlIG51bWJlciBvZiB0aHJlYWRzLgotCVNwZWNpZnlpbmcgMCB3aWxsIGNhdXNlIGdpdCB0byBhdXRvLWRldGVjdCB0aGUgbnVtYmVyIG9mIENQVSdzCisJU3BlY2lmeWluZyAwIHdpbGwgY2F1c2UgR2l0IHRvIGF1dG8tZGV0ZWN0IHRoZSBudW1iZXIgb2YgQ1BVJ3MKIAlhbmQgc2V0IHRoZSBudW1iZXIgb2YgdGhyZWFkcyBhY2NvcmRpbmdseS4KIAogcGFjay5pbmRleFZlcnNpb246OgpAQCAtMTY2MSwxMSArMTc3MiwxMSBAQAogCWFuZCB0aGlzIGNvbmZpZyBvcHRpb24gaWdub3JlZCB3aGVuZXZlciB0aGUgY29ycmVzcG9uZGluZyBwYWNrIGlzCiAJbGFyZ2VyIHRoYW4gMiBHQi4KICsKLUlmIHlvdSBoYXZlIGFuIG9sZCBnaXQgdGhhdCBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoZSB2ZXJzaW9uIDIgYCouaWR4YCBmaWxlLAorSWYgeW91IGhhdmUgYW4gb2xkIEdpdCB0aGF0IGRvZXMgbm90IHVuZGVyc3RhbmQgdGhlIHZlcnNpb24gMiBgKi5pZHhgIGZpbGUsCiBjbG9uaW5nIG9yIGZldGNoaW5nIG92ZXIgYSBub24gbmF0aXZlIHByb3RvY29sIChlLmcuICJodHRwIiBhbmQgInJzeW5jIikKIHRoYXQgd2lsbCBjb3B5IGJvdGggYCoucGFja2AgZmlsZSBhbmQgY29ycmVzcG9uZGluZyBgKi5pZHhgIGZpbGUgZnJvbSB0aGUKIG90aGVyIHNpZGUgbWF5IGdpdmUgeW91IGEgcmVwb3NpdG9yeSB0aGF0IGNhbm5vdCBiZSBhY2Nlc3NlZCB3aXRoIHlvdXIKLW9sZGVyIHZlcnNpb24gb2YgZ2l0LiBJZiB0aGUgYCoucGFja2AgZmlsZSBpcyBzbWFsbGVyIHRoYW4gMiBHQiwgaG93ZXZlciwKK29sZGVyIHZlcnNpb24gb2YgR2l0LiBJZiB0aGUgYCoucGFja2AgZmlsZSBpcyBzbWFsbGVyIHRoYW4gMiBHQiwgaG93ZXZlciwKIHlvdSBjYW4gdXNlIGxpbmtnaXQ6Z2l0LWluZGV4LXBhY2tbMV0gb24gdGhlICoucGFjayBmaWxlIHRvIHJlZ2VuZXJhdGUKIHRoZSBgKi5pZHhgIGZpbGUuCiAKQEAgLTE2ODAsNyArMTc5MSw3IEBACiAKIHBhZ2VyLjxjbWQ+OjoKIAlJZiB0aGUgdmFsdWUgaXMgYm9vbGVhbiwgdHVybnMgb24gb3Igb2ZmIHBhZ2luYXRpb24gb2YgdGhlCi0Jb3V0cHV0IG9mIGEgcGFydGljdWxhciBnaXQgc3ViY29tbWFuZCB3aGVuIHdyaXRpbmcgdG8gYSB0dHkuCisJb3V0cHV0IG9mIGEgcGFydGljdWxhciBHaXQgc3ViY29tbWFuZCB3aGVuIHdyaXRpbmcgdG8gYSB0dHkuCiAJT3RoZXJ3aXNlLCB0dXJucyBvbiBwYWdpbmF0aW9uIGZvciB0aGUgc3ViY29tbWFuZCB1c2luZyB0aGUKIAlwYWdlciBzcGVjaWZpZWQgYnkgdGhlIHZhbHVlIG9mIGBwYWdlci48Y21kPmAuICBJZiBgLS1wYWdpbmF0ZWAKIAlvciBgLS1uby1wYWdlcmAgaXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUsIGl0IHRha2VzCkBAIC0xNzE1LDExICsxODI2LDEyIEBACiAJVGhlIGRlZmF1bHQgbWVyZ2Ugc3RyYXRlZ3kgdG8gdXNlIHdoZW4gcHVsbGluZyBhIHNpbmdsZSBicmFuY2guCiAKIHB1c2guZGVmYXVsdDo6Ci0JRGVmaW5lcyB0aGUgYWN0aW9uIGdpdCBwdXNoIHNob3VsZCB0YWtlIGlmIG5vIHJlZnNwZWMgaXMgZ2l2ZW4KKwlEZWZpbmVzIHRoZSBhY3Rpb24gYGdpdCBwdXNoYCBzaG91bGQgdGFrZSBpZiBubyByZWZzcGVjIGlzIGdpdmVuCiAJb24gdGhlIGNvbW1hbmQgbGluZSwgbm8gcmVmc3BlYyBpcyBjb25maWd1cmVkIGluIHRoZSByZW1vdGUsIGFuZAogCW5vIHJlZnNwZWMgaXMgaW1wbGllZCBieSBhbnkgb2YgdGhlIG9wdGlvbnMgZ2l2ZW4gb24gdGhlIGNvbW1hbmQKIAlsaW5lLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgogKworLS0KICogYG5vdGhpbmdgIC0gZG8gbm90IHB1c2ggYW55dGhpbmcuCiAqIGBtYXRjaGluZ2AgLSBwdXNoIGFsbCBicmFuY2hlcyBoYXZpbmcgdGhlIHNhbWUgbmFtZSBpbiBib3RoIGVuZHMuCiAgIFRoaXMgaXMgZm9yIHRob3NlIHdobyBwcmVwYXJlIGFsbCB0aGUgYnJhbmNoZXMgaW50byBhIHB1Ymxpc2hhYmxlCkBAIC0xNzMwLDcgKzE4NDIsOCBAQAogICArCiAgIFRoaXMgaXMgY3VycmVudGx5IHRoZSBkZWZhdWx0LCBidXQgR2l0IDIuMCB3aWxsIGNoYW5nZSB0aGUgZGVmYXVsdAogICB0byBgc2ltcGxlYC4KLSogYHVwc3RyZWFtYCAtIHB1c2ggdGhlIGN1cnJlbnQgYnJhbmNoIHRvIGl0cyB1cHN0cmVhbSBicmFuY2guCisqIGB1cHN0cmVhbWAgLSBwdXNoIHRoZSBjdXJyZW50IGJyYW5jaCB0byBpdHMgdXBzdHJlYW0gYnJhbmNoCisgIChgdHJhY2tpbmdgIGlzIGEgZGVwcmVjYXRlZCBzeW5vbnltIGZvciB0aGlzKS4KICAgV2l0aCB0aGlzLCBgZ2l0IHB1c2hgIHdpbGwgdXBkYXRlIHRoZSBzYW1lIHJlbW90ZSByZWYgYXMgdGhlIG9uZSB3aGljaAogICBpcyBtZXJnZWQgYnkgYGdpdCBwdWxsYCwgbWFraW5nIGBwdXNoYCBhbmQgYHB1bGxgIHN5bW1ldHJpY2FsLgogICBTZWUgImJyYW5jaC48bmFtZT4ubWVyZ2UiIGZvciBob3cgdG8gY29uZmlndXJlIHRoZSB1cHN0cmVhbSBicmFuY2guCkBAIC0xNzM5LDEyICsxODUyLDEzIEBACiAgIG9wdGlvbiBhbmQgaXMgd2VsbC1zdWl0ZWQgZm9yIGJlZ2lubmVycy4gSXQgd2lsbCBiZWNvbWUgdGhlIGRlZmF1bHQKICAgaW4gR2l0IDIuMC4KICogYGN1cnJlbnRgIC0gcHVzaCB0aGUgY3VycmVudCBicmFuY2ggdG8gYSBicmFuY2ggb2YgdGhlIHNhbWUgbmFtZS4KLSAgKwotICBUaGUgYHNpbXBsZWAsIGBjdXJyZW50YCBhbmQgYHVwc3RyZWFtYCBtb2RlcyBhcmUgZm9yIHRob3NlIHdobyB3YW50IHRvCi0gIHB1c2ggb3V0IGEgc2luZ2xlIGJyYW5jaCBhZnRlciBmaW5pc2hpbmcgd29yaywgZXZlbiB3aGVuIHRoZSBvdGhlcgotICBicmFuY2hlcyBhcmUgbm90IHlldCByZWFkeSB0byBiZSBwdXNoZWQgb3V0LiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aAotICBvdGhlciBwZW9wbGUgdG8gcHVzaCBpbnRvIHRoZSBzYW1lIHNoYXJlZCByZXBvc2l0b3J5LCB5b3Ugd291bGQgd2FudAotICB0byB1c2Ugb25lIG9mIHRoZXNlLgorLS0KKysKK1RoZSBgc2ltcGxlYCwgYGN1cnJlbnRgIGFuZCBgdXBzdHJlYW1gIG1vZGVzIGFyZSBmb3IgdGhvc2Ugd2hvIHdhbnQgdG8KK3B1c2ggb3V0IGEgc2luZ2xlIGJyYW5jaCBhZnRlciBmaW5pc2hpbmcgd29yaywgZXZlbiB3aGVuIHRoZSBvdGhlcgorYnJhbmNoZXMgYXJlIG5vdCB5ZXQgcmVhZHkgdG8gYmUgcHVzaGVkIG91dC4gSWYgeW91IGFyZSB3b3JraW5nIHdpdGgKK290aGVyIHBlb3BsZSB0byBwdXNoIGludG8gdGhlIHNhbWUgc2hhcmVkIHJlcG9zaXRvcnksIHlvdSB3b3VsZCB3YW50Cit0byB1c2Ugb25lIG9mIHRoZXNlLgogCiByZWJhc2Uuc3RhdDo6CiAJV2hldGhlciB0byBzaG93IGEgZGlmZnN0YXQgb2Ygd2hhdCBjaGFuZ2VkIHVwc3RyZWFtIHNpbmNlIHRoZSBsYXN0CkBAIC0xNzk4LDEwICsxOTEyLDI0IEBACiAJZXZlbiBpZiB0aGF0IHB1c2ggaXMgZm9yY2VkLiBUaGlzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgaXMKIAlzZXQgd2hlbiBpbml0aWFsaXppbmcgYSBzaGFyZWQgcmVwb3NpdG9yeS4KIAorcmVjZWl2ZS5oaWRlcmVmczo6CisJU3RyaW5nKHMpIGByZWNlaXZlLXBhY2tgIHVzZXMgdG8gZGVjaWRlIHdoaWNoIHJlZnMgdG8gb21pdAorCWZyb20gaXRzIGluaXRpYWwgYWR2ZXJ0aXNlbWVudC4gIFVzZSBtb3JlIHRoYW4gb25lCisJZGVmaW5pdGlvbnMgdG8gc3BlY2lmeSBtdWx0aXBsZSBwcmVmaXggc3RyaW5ncy4gQSByZWYgdGhhdAorCWFyZSB1bmRlciB0aGUgaGllcmFyY2hpZXMgbGlzdGVkIG9uIHRoZSB2YWx1ZSBvZiB0aGlzCisJdmFyaWFibGUgaXMgZXhjbHVkZWQsIGFuZCBpcyBoaWRkZW4gd2hlbiByZXNwb25kaW5nIHRvIGBnaXQKKwlwdXNoYCwgYW5kIGFuIGF0dGVtcHQgdG8gdXBkYXRlIG9yIGRlbGV0ZSBhIGhpZGRlbiByZWYgYnkKKwlgZ2l0IHB1c2hgIGlzIHJlamVjdGVkLgorCiByZWNlaXZlLnVwZGF0ZXNlcnZlcmluZm86OgogCUlmIHNldCB0byB0cnVlLCBnaXQtcmVjZWl2ZS1wYWNrIHdpbGwgcnVuIGdpdC11cGRhdGUtc2VydmVyLWluZm8KIAlhZnRlciByZWNlaXZpbmcgZGF0YSBmcm9tIGdpdC1wdXNoIGFuZCB1cGRhdGluZyByZWZzLgogCityZW1vdGUucHVzaGRlZmF1bHQ6OgorCVRoZSByZW1vdGUgdG8gcHVzaCB0byBieSBkZWZhdWx0LiAgT3ZlcnJpZGVzCisJYGJyYW5jaC48bmFtZT4ucmVtb3RlYCBmb3IgYWxsIGJyYW5jaGVzLCBhbmQgaXMgb3ZlcnJpZGRlbiBieQorCWBicmFuY2guPG5hbWU+LnB1c2hyZW1vdGVgIGZvciBzcGVjaWZpYyBicmFuY2hlcy4KKwogcmVtb3RlLjxuYW1lPi51cmw6OgogCVRoZSBVUkwgb2YgYSByZW1vdGUgcmVwb3NpdG9yeS4gIFNlZSBsaW5rZ2l0OmdpdC1mZXRjaFsxXSBvcgogCWxpbmtnaXQ6Z2l0LXB1c2hbMV0uCkBAIC0xODUzLDcgKzE5ODEsNyBAQAogCWxpbmtnaXQ6Z2l0LWZldGNoWzFdLgogCiByZW1vdGUuPG5hbWU+LnZjczo6Ci0JU2V0dGluZyB0aGlzIHRvIGEgdmFsdWUgPHZjcz4gd2lsbCBjYXVzZSBnaXQgdG8gaW50ZXJhY3Qgd2l0aAorCVNldHRpbmcgdGhpcyB0byBhIHZhbHVlIDx2Y3M+IHdpbGwgY2F1c2UgR2l0IHRvIGludGVyYWN0IHdpdGgKIAl0aGUgcmVtb3RlIHdpdGggdGhlIGdpdC1yZW1vdGUtPHZjcz4gaGVscGVyLgogCiByZW1vdGVzLjxncm91cD46OgpAQCAtMTg2Myw5ICsxOTkxLDkgQEAKIHJlcGFjay51c2VkZWx0YWJhc2VvZmZzZXQ6OgogCUJ5IGRlZmF1bHQsIGxpbmtnaXQ6Z2l0LXJlcGFja1sxXSBjcmVhdGVzIHBhY2tzIHRoYXQgdXNlCiAJZGVsdGEtYmFzZSBvZmZzZXQuIElmIHlvdSBuZWVkIHRvIHNoYXJlIHlvdXIgcmVwb3NpdG9yeSB3aXRoCi0JZ2l0IG9sZGVyIHRoYW4gdmVyc2lvbiAxLjQuNCwgZWl0aGVyIGRpcmVjdGx5IG9yIHZpYSBhIGR1bWIKKwlHaXQgb2xkZXIgdGhhbiB2ZXJzaW9uIDEuNC40LCBlaXRoZXIgZGlyZWN0bHkgb3IgdmlhIGEgZHVtYgogCXByb3RvY29sIHN1Y2ggYXMgaHR0cCwgdGhlbiB5b3UgbmVlZCB0byBzZXQgdGhpcyBvcHRpb24gdG8KLQkiZmFsc2UiIGFuZCByZXBhY2suIEFjY2VzcyBmcm9tIG9sZCBnaXQgdmVyc2lvbnMgb3ZlciB0aGUKKwkiZmFsc2UiIGFuZCByZXBhY2suIEFjY2VzcyBmcm9tIG9sZCBHaXQgdmVyc2lvbnMgb3ZlciB0aGUKIAluYXRpdmUgcHJvdG9jb2wgYXJlIHVuYWZmZWN0ZWQgYnkgdGhpcyBvcHRpb24uCiAKIHJlcmVyZS5hdXRvdXBkYXRlOjoKQEAgLTE5MDIsNiArMjAzMCw3IEBACiAKIHNlbmRlbWFpbC5hbGlhc2VzZmlsZTo6CiBzZW5kZW1haWwuYWxpYXNmaWxldHlwZTo6CitzZW5kZW1haWwuYW5ub3RhdGU6Ogogc2VuZGVtYWlsLmJjYzo6CiBzZW5kZW1haWwuY2M6Ogogc2VuZGVtYWlsLmNjY21kOjoKQEAgLTE5MzQsNyArMjA2Myw3IEBACiBzdGF0dXMucmVsYXRpdmVQYXRoczo6CiAJQnkgZGVmYXVsdCwgbGlua2dpdDpnaXQtc3RhdHVzWzFdIHNob3dzIHBhdGhzIHJlbGF0aXZlIHRvIHRoZQogCWN1cnJlbnQgZGlyZWN0b3J5LiBTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gYGZhbHNlYCBzaG93cyBwYXRocwotCXJlbGF0aXZlIHRvIHRoZSByZXBvc2l0b3J5IHJvb3QgKHRoaXMgd2FzIHRoZSBkZWZhdWx0IGZvciBnaXQKKwlyZWxhdGl2ZSB0byB0aGUgcmVwb3NpdG9yeSByb290ICh0aGlzIHdhcyB0aGUgZGVmYXVsdCBmb3IgR2l0CiAJcHJpb3IgdG8gdjEuNS40KS4KIAogc3RhdHVzLnNob3dVbnRyYWNrZWRGaWxlczo6CkBAIC0xOTcyLDYgKzIxMDEsMTIgQEAKIAlVUkwgYW5kIG90aGVyIHZhbHVlcyBmb3VuZCBpbiB0aGUgYC5naXRtb2R1bGVzYCBmaWxlLiAgU2VlCiAJbGlua2dpdDpnaXQtc3VibW9kdWxlWzFdIGFuZCBsaW5rZ2l0OmdpdG1vZHVsZXNbNV0gZm9yIGRldGFpbHMuCiAKK3N1Ym1vZHVsZS48bmFtZT4uYnJhbmNoOjoKKwlUaGUgcmVtb3RlIGJyYW5jaCBuYW1lIGZvciBhIHN1Ym1vZHVsZSwgdXNlZCBieSBgZ2l0IHN1Ym1vZHVsZQorCXVwZGF0ZSAtLXJlbW90ZWAuICBTZXQgdGhpcyBvcHRpb24gdG8gb3ZlcnJpZGUgdGhlIHZhbHVlIGZvdW5kIGluCisJdGhlIGAuZ2l0bW9kdWxlc2AgZmlsZS4gIFNlZSBsaW5rZ2l0OmdpdC1zdWJtb2R1bGVbMV0gYW5kCisJbGlua2dpdDpnaXRtb2R1bGVzWzVdIGZvciBkZXRhaWxzLgorCiBzdWJtb2R1bGUuPG5hbWU+LmZldGNoUmVjdXJzZVN1Ym1vZHVsZXM6OgogCVRoaXMgb3B0aW9uIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgcmVjdXJzaXZlIGZldGNoaW5nIG9mIHRoaXMKIAlzdWJtb2R1bGUuIEl0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHVzaW5nIHRoZSAtLVtuby1dcmVjdXJzZS1zdWJtb2R1bGVzCkBAIC0yMDA0LDE4ICsyMTM5LDM4IEBACiAJbm90IHNldCwgdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgaXMgdXNlZCBpbnN0ZWFkLgogCURlZmF1bHRzIHRvIGZhbHNlLgogCit0cmFuc2Zlci5oaWRlcmVmczo6CisJVGhpcyB2YXJpYWJsZSBjYW4gYmUgdXNlZCB0byBzZXQgYm90aCBgcmVjZWl2ZS5oaWRlcmVmc2AKKwlhbmQgYHVwbG9hZHBhY2suaGlkZXJlZnNgIGF0IHRoZSBzYW1lIHRpbWUgdG8gdGhlIHNhbWUKKwl2YWx1ZXMuICBTZWUgZW50cmllcyBmb3IgdGhlc2Ugb3RoZXIgdmFyaWFibGVzLgorCiB0cmFuc2Zlci51bnBhY2tMaW1pdDo6CiAJV2hlbiBgZmV0Y2gudW5wYWNrTGltaXRgIG9yIGByZWNlaXZlLnVucGFja0xpbWl0YCBhcmUKIAlub3Qgc2V0LCB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBpcyB1c2VkIGluc3RlYWQuCiAJVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTAwLgogCit1cGxvYWRwYWNrLmhpZGVyZWZzOjoKKwlTdHJpbmcocykgYHVwbG9hZC1wYWNrYCB1c2VzIHRvIGRlY2lkZSB3aGljaCByZWZzIHRvIG9taXQKKwlmcm9tIGl0cyBpbml0aWFsIGFkdmVydGlzZW1lbnQuICBVc2UgbW9yZSB0aGFuIG9uZQorCWRlZmluaXRpb25zIHRvIHNwZWNpZnkgbXVsdGlwbGUgcHJlZml4IHN0cmluZ3MuIEEgcmVmIHRoYXQKKwlhcmUgdW5kZXIgdGhlIGhpZXJhcmNoaWVzIGxpc3RlZCBvbiB0aGUgdmFsdWUgb2YgdGhpcworCXZhcmlhYmxlIGlzIGV4Y2x1ZGVkLCBhbmQgaXMgaGlkZGVuIGZyb20gYGdpdCBscy1yZW1vdGVgLAorCWBnaXQgZmV0Y2hgLCBldGMuICBBbiBhdHRlbXB0IHRvIGZldGNoIGEgaGlkZGVuIHJlZiBieSBgZ2l0CisJZmV0Y2hgIHdpbGwgZmFpbC4gIFNlZSBhbHNvIGB1cGxvYWRwYWNrLmFsbG93dGlwc2hhMWlud2FudGAuCisKK3VwbG9hZHBhY2suYWxsb3d0aXBzaGExaW53YW50OjoKKwlXaGVuIGB1cGxvYWRwYWNrLmhpZGVyZWZzYCBpcyBpbiBlZmZlY3QsIGFsbG93IGB1cGxvYWQtcGFja2AKKwl0byBhY2NlcHQgYSBmZXRjaCByZXF1ZXN0IHRoYXQgYXNrcyBmb3IgYW4gb2JqZWN0IGF0IHRoZSB0aXAKKwlvZiBhIGhpZGRlbiByZWYgKGJ5IGRlZmF1bHQsIHN1Y2ggYSByZXF1ZXN0IGlzIHJlamVjdGVkKS4KKwlzZWUgYWxzbyBgdXBsb2FkcGFjay5oaWRlcmVmc2AuCisKIHVybC48YmFzZT4uaW5zdGVhZE9mOjoKIAlBbnkgVVJMIHRoYXQgc3RhcnRzIHdpdGggdGhpcyB2YWx1ZSB3aWxsIGJlIHJld3JpdHRlbiB0bwogCXN0YXJ0LCBpbnN0ZWFkLCB3aXRoIDxiYXNlPi4gSW4gY2FzZXMgd2hlcmUgc29tZSBzaXRlIHNlcnZlcyBhCiAJbGFyZ2UgbnVtYmVyIG9mIHJlcG9zaXRvcmllcywgYW5kIHNlcnZlcyB0aGVtIHdpdGggbXVsdGlwbGUKIAlhY2Nlc3MgbWV0aG9kcywgYW5kIHNvbWUgdXNlcnMgbmVlZCB0byB1c2UgZGlmZmVyZW50IGFjY2VzcwogCW1ldGhvZHMsIHRoaXMgZmVhdHVyZSBhbGxvd3MgcGVvcGxlIHRvIHNwZWNpZnkgYW55IG9mIHRoZQotCWVxdWl2YWxlbnQgVVJMcyBhbmQgaGF2ZSBnaXQgYXV0b21hdGljYWxseSByZXdyaXRlIHRoZSBVUkwgdG8KKwllcXVpdmFsZW50IFVSTHMgYW5kIGhhdmUgR2l0IGF1dG9tYXRpY2FsbHkgcmV3cml0ZSB0aGUgVVJMIHRvCiAJdGhlIGJlc3QgYWx0ZXJuYXRpdmUgZm9yIHRoZSBwYXJ0aWN1bGFyIHVzZXIsIGV2ZW4gZm9yIGEKIAluZXZlci1iZWZvcmUtc2VlbiByZXBvc2l0b3J5IG9uIHRoZSBzaXRlLiAgV2hlbiBtb3JlIHRoYW4gb25lCiAJaW5zdGVhZE9mIHN0cmluZ3MgbWF0Y2ggYSBnaXZlbiBVUkwsIHRoZSBsb25nZXN0IG1hdGNoIGlzIHVzZWQuCkBAIC0yMDI2LDExICsyMTgxLDExIEBACiAJcmVzdWx0aW5nIFVSTCB3aWxsIGJlIHB1c2hlZCB0by4gSW4gY2FzZXMgd2hlcmUgc29tZSBzaXRlIHNlcnZlcwogCWEgbGFyZ2UgbnVtYmVyIG9mIHJlcG9zaXRvcmllcywgYW5kIHNlcnZlcyB0aGVtIHdpdGggbXVsdGlwbGUKIAlhY2Nlc3MgbWV0aG9kcywgc29tZSBvZiB3aGljaCBkbyBub3QgYWxsb3cgcHVzaCwgdGhpcyBmZWF0dXJlCi0JYWxsb3dzIHBlb3BsZSB0byBzcGVjaWZ5IGEgcHVsbC1vbmx5IFVSTCBhbmQgaGF2ZSBnaXQKKwlhbGxvd3MgcGVvcGxlIHRvIHNwZWNpZnkgYSBwdWxsLW9ubHkgVVJMIGFuZCBoYXZlIEdpdAogCWF1dG9tYXRpY2FsbHkgdXNlIGFuIGFwcHJvcHJpYXRlIFVSTCB0byBwdXNoLCBldmVuIGZvciBhCiAJbmV2ZXItYmVmb3JlLXNlZW4gcmVwb3NpdG9yeSBvbiB0aGUgc2l0ZS4gIFdoZW4gbW9yZSB0aGFuIG9uZQogCXB1c2hJbnN0ZWFkT2Ygc3RyaW5ncyBtYXRjaCBhIGdpdmVuIFVSTCwgdGhlIGxvbmdlc3QgbWF0Y2ggaXMKLQl1c2VkLiAgSWYgYSByZW1vdGUgaGFzIGFuIGV4cGxpY2l0IHB1c2h1cmwsIGdpdCB3aWxsIGlnbm9yZSB0aGlzCisJdXNlZC4gIElmIGEgcmVtb3RlIGhhcyBhbiBleHBsaWNpdCBwdXNodXJsLCBHaXQgd2lsbCBpZ25vcmUgdGhpcwogCXNldHRpbmcgZm9yIHRoYXQgcmVtb3RlLgogCiB1c2VyLmVtYWlsOjoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGlmZi1jb25maWcudHh0IGIvRG9jdW1lbnRhdGlvbi9kaWZmLWNvbmZpZy50eHQKaW5kZXggNmFhMWJlMC4uYWM3NzA1MCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kaWZmLWNvbmZpZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9kaWZmLWNvbmZpZy50eHQKQEAgLTU0LDcgKzU0LDExIEBACiAKIGRpZmYuc3RhdEdyYXBoV2lkdGg6OgogCUxpbWl0IHRoZSB3aWR0aCBvZiB0aGUgZ3JhcGggcGFydCBpbiAtLXN0YXQgb3V0cHV0LiBJZiBzZXQsIGFwcGxpZXMKLQl0byBhbGwgY29tbWFuZHMgZ2VuZXJhdGluZyAtLXN0YXQgb3V0dXB1dCBleGNlcHQgZm9ybWF0LXBhdGNoLgorCXRvIGFsbCBjb21tYW5kcyBnZW5lcmF0aW5nIC0tc3RhdCBvdXRwdXQgZXhjZXB0IGZvcm1hdC1wYXRjaC4KKworZGlmZi5jb250ZXh0OjoKKwlHZW5lcmF0ZSBkaWZmcyB3aXRoIDxuPiBsaW5lcyBvZiBjb250ZXh0IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQKKwlvZiAzLiBUaGlzIHZhbHVlIGlzIG92ZXJyaWRkZW4gYnkgdGhlIC1VIG9wdGlvbi4KIAogZGlmZi5leHRlcm5hbDo6CiAJSWYgdGhpcyBjb25maWcgdmFyaWFibGUgaXMgc2V0LCBkaWZmIGdlbmVyYXRpb24gaXMgbm90CkBAIC05NSw3ICs5OSw3IEBACiAJZGV0ZWN0aW9uOyBlcXVpdmFsZW50IHRvIHRoZSAnZ2l0IGRpZmYnIG9wdGlvbiAnLWwnLgogCiBkaWZmLnJlbmFtZXM6OgotCVRlbGxzIGdpdCB0byBkZXRlY3QgcmVuYW1lcy4gIElmIHNldCB0byBhbnkgYm9vbGVhbiB2YWx1ZSwgaXQKKwlUZWxscyBHaXQgdG8gZGV0ZWN0IHJlbmFtZXMuICBJZiBzZXQgdG8gYW55IGJvb2xlYW4gdmFsdWUsIGl0CiAJd2lsbCBlbmFibGUgYmFzaWMgcmVuYW1lIGRldGVjdGlvbi4gIElmIHNldCB0byAiY29waWVzIiBvcgogCSJjb3B5IiwgaXQgd2lsbCBkZXRlY3QgY29waWVzLCBhcyB3ZWxsLgogCkBAIC0xMDMsNiArMTA3LDE5IEBACiAJQSBib29sZWFuIHRvIGluaGliaXQgdGhlIHN0YW5kYXJkIGJlaGF2aW9yIG9mIHByaW50aW5nIGEgc3BhY2UKIAliZWZvcmUgZWFjaCBlbXB0eSBvdXRwdXQgbGluZS4gRGVmYXVsdHMgdG8gZmFsc2UuCiAKK2RpZmYuc3VibW9kdWxlOjoKKwlTcGVjaWZ5IHRoZSBmb3JtYXQgaW4gd2hpY2ggZGlmZmVyZW5jZXMgaW4gc3VibW9kdWxlcyBhcmUKKwlzaG93bi4gIFRoZSAibG9nIiBmb3JtYXQgbGlzdHMgdGhlIGNvbW1pdHMgaW4gdGhlIHJhbmdlIGxpa2UKKwlsaW5rZ2l0OmdpdC1zdWJtb2R1bGVbMV0gYHN1bW1hcnlgIGRvZXMuICBUaGUgInNob3J0IiBmb3JtYXQKKwlmb3JtYXQganVzdCBzaG93cyB0aGUgbmFtZXMgb2YgdGhlIGNvbW1pdHMgYXQgdGhlIGJlZ2lubmluZworCWFuZCBlbmQgb2YgdGhlIHJhbmdlLiAgRGVmYXVsdHMgdG8gc2hvcnQuCisKK2RpZmYud29yZFJlZ2V4OjoKKwlBIFBPU0lYIEV4dGVuZGVkIFJlZ3VsYXIgRXhwcmVzc2lvbiB1c2VkIHRvIGRldGVybWluZSB3aGF0IGlzIGEgIndvcmQiCisJd2hlbiBwZXJmb3JtaW5nIHdvcmQtYnktd29yZCBkaWZmZXJlbmNlIGNhbGN1bGF0aW9ucy4gIENoYXJhY3RlcgorCXNlcXVlbmNlcyB0aGF0IG1hdGNoIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gYXJlICJ3b3JkcyIsIGFsbCBvdGhlcgorCWNoYXJhY3RlcnMgYXJlICppZ25vcmFibGUqIHdoaXRlc3BhY2UuCisKIGRpZmYuPGRyaXZlcj4uY29tbWFuZDo6CiAJVGhlIGN1c3RvbSBkaWZmIGRyaXZlciBjb21tYW5kLiAgU2VlIGxpbmtnaXQ6Z2l0YXR0cmlidXRlc1s1XQogCWZvciBkZXRhaWxzLgpAQCAtMTMyLDkgKzE0OSwyNyBAQAogCWNvbnZlcnNpb24gb3V0cHV0cy4gIFNlZSBsaW5rZ2l0OmdpdGF0dHJpYnV0ZXNbNV0gZm9yIGRldGFpbHMuCiAKIGRpZmYudG9vbDo6Ci0JVGhlIGRpZmYgdG9vbCB0byBiZSB1c2VkIGJ5IGxpbmtnaXQ6Z2l0LWRpZmZ0b29sWzFdLiAgVGhpcwotCW9wdGlvbiBvdmVycmlkZXMgYG1lcmdlLnRvb2xgLCBhbmQgaGFzIHRoZSBzYW1lIHZhbGlkIGJ1aWx0LWluCi0JdmFsdWVzIGFzIGBtZXJnZS50b29sYCBtaW51cyAidG9ydG9pc2VtZXJnZSIgYW5kIHBsdXMKLQkia29tcGFyZSIuICBBbnkgb3RoZXIgdmFsdWUgaXMgdHJlYXRlZCBhcyBhIGN1c3RvbSBkaWZmIHRvb2wsCi0JYW5kIHRoZXJlIG11c3QgYmUgYSBjb3JyZXNwb25kaW5nIGBkaWZmdG9vbC48dG9vbD4uY21kYAotCW9wdGlvbi4KKwlDb250cm9scyB3aGljaCBkaWZmIHRvb2wgaXMgdXNlZCBieSBsaW5rZ2l0OmdpdC1kaWZmdG9vbFsxXS4KKwlUaGlzIHZhcmlhYmxlIG92ZXJyaWRlcyB0aGUgdmFsdWUgY29uZmlndXJlZCBpbiBgbWVyZ2UudG9vbGAuCisJVGhlIGxpc3QgYmVsb3cgc2hvd3MgdGhlIHZhbGlkIGJ1aWx0LWluIHZhbHVlcy4KKwlBbnkgb3RoZXIgdmFsdWUgaXMgdHJlYXRlZCBhcyBhIGN1c3RvbSBkaWZmIHRvb2wgYW5kIHJlcXVpcmVzCisJdGhhdCBhIGNvcnJlc3BvbmRpbmcgZGlmZnRvb2wuPHRvb2w+LmNtZCB2YXJpYWJsZSBpcyBkZWZpbmVkLgorCitpbmNsdWRlOjptZXJnZXRvb2xzLWRpZmYudHh0W10KKworZGlmZi5hbGdvcml0aG06OgorCUNob29zZSBhIGRpZmYgYWxnb3JpdGhtLiAgVGhlIHZhcmlhbnRzIGFyZSBhcyBmb2xsb3dzOgorKworLS0KK2BkZWZhdWx0YCwgYG15ZXJzYDs7CisJVGhlIGJhc2ljIGdyZWVkeSBkaWZmIGFsZ29yaXRobS4gQ3VycmVudGx5LCB0aGlzIGlzIHRoZSBkZWZhdWx0LgorYG1pbmltYWxgOzsKKwlTcGVuZCBleHRyYSB0aW1lIHRvIG1ha2Ugc3VyZSB0aGUgc21hbGxlc3QgcG9zc2libGUgZGlmZiBpcworCXByb2R1Y2VkLgorYHBhdGllbmNlYDs7CisJVXNlICJwYXRpZW5jZSBkaWZmIiBhbGdvcml0aG0gd2hlbiBnZW5lcmF0aW5nIHBhdGNoZXMuCitgaGlzdG9ncmFtYDs7CisJVGhpcyBhbGdvcml0aG0gZXh0ZW5kcyB0aGUgcGF0aWVuY2UgYWxnb3JpdGhtIHRvICJzdXBwb3J0CisJbG93LW9jY3VycmVuY2UgY29tbW9uIGVsZW1lbnRzIi4KKy0tCisrCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RpZmYtb3B0aW9ucy50eHQgYi9Eb2N1bWVudGF0aW9uL2RpZmYtb3B0aW9ucy50eHQKaW5kZXggNmNmZWRkOC4uYTg1Mjg4ZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kaWZmLW9wdGlvbnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZGlmZi1vcHRpb25zLnR4dApAQCAtNTUsMTEgKzU1LDMxIEBACiAtLWhpc3RvZ3JhbTo6CiAJR2VuZXJhdGUgYSBkaWZmIHVzaW5nIHRoZSAiaGlzdG9ncmFtIGRpZmYiIGFsZ29yaXRobS4KIAorLS1kaWZmLWFsZ29yaXRobT17cGF0aWVuY2V8bWluaW1hbHxoaXN0b2dyYW18bXllcnN9OjoKKwlDaG9vc2UgYSBkaWZmIGFsZ29yaXRobS4gVGhlIHZhcmlhbnRzIGFyZSBhcyBmb2xsb3dzOgorKworLS0KK2BkZWZhdWx0YCwgYG15ZXJzYDs7CisJVGhlIGJhc2ljIGdyZWVkeSBkaWZmIGFsZ29yaXRobS4gQ3VycmVudGx5LCB0aGlzIGlzIHRoZSBkZWZhdWx0LgorYG1pbmltYWxgOzsKKwlTcGVuZCBleHRyYSB0aW1lIHRvIG1ha2Ugc3VyZSB0aGUgc21hbGxlc3QgcG9zc2libGUgZGlmZiBpcworCXByb2R1Y2VkLgorYHBhdGllbmNlYDs7CisJVXNlICJwYXRpZW5jZSBkaWZmIiBhbGdvcml0aG0gd2hlbiBnZW5lcmF0aW5nIHBhdGNoZXMuCitgaGlzdG9ncmFtYDs7CisJVGhpcyBhbGdvcml0aG0gZXh0ZW5kcyB0aGUgcGF0aWVuY2UgYWxnb3JpdGhtIHRvICJzdXBwb3J0CisJbG93LW9jY3VycmVuY2UgY29tbW9uIGVsZW1lbnRzIi4KKy0tCisrCitGb3IgaW5zdGFuY2UsIGlmIHlvdSBjb25maWd1cmVkIGRpZmYuYWxnb3JpdGhtIHZhcmlhYmxlIHRvIGEKK25vbi1kZWZhdWx0IHZhbHVlIGFuZCB3YW50IHRvIHVzZSB0aGUgZGVmYXVsdCBvbmUsIHRoZW4geW91CitoYXZlIHRvIHVzZSBgLS1kaWZmLWFsZ29yaXRobT1kZWZhdWx0YCBvcHRpb24uCisKIC0tc3RhdFs9PHdpZHRoPlssPG5hbWUtd2lkdGg+Wyw8Y291bnQ+XV1dOjoKIAlHZW5lcmF0ZSBhIGRpZmZzdGF0LiBCeSBkZWZhdWx0LCBhcyBtdWNoIHNwYWNlIGFzIG5lY2Vzc2FyeQogCXdpbGwgYmUgdXNlZCBmb3IgdGhlIGZpbGVuYW1lIHBhcnQsIGFuZCB0aGUgcmVzdCBmb3IgdGhlIGdyYXBoCiAJcGFydC4gTWF4aW11bSB3aWR0aCBkZWZhdWx0cyB0byB0ZXJtaW5hbCB3aWR0aCwgb3IgODAgY29sdW1ucwotCWlmIG5vdCBjb25uZWN0ZWQgdG8gYSB0ZXJtaW5hbCwgYW5kIGNhbiBiZSBvdmVycmlkZW4gYnkKKwlpZiBub3QgY29ubmVjdGVkIHRvIGEgdGVybWluYWwsIGFuZCBjYW4gYmUgb3ZlcnJpZGRlbiBieQogCWA8d2lkdGg+YC4gVGhlIHdpZHRoIG9mIHRoZSBmaWxlbmFtZSBwYXJ0IGNhbiBiZSBsaW1pdGVkIGJ5CiAJZ2l2aW5nIGFub3RoZXIgd2lkdGggYDxuYW1lLXdpZHRoPmAgYWZ0ZXIgYSBjb21tYS4gVGhlIHdpZHRoCiAJb2YgdGhlIGdyYXBoIHBhcnQgY2FuIGJlIGxpbWl0ZWQgYnkgdXNpbmcKQEAgLTE3MCwxMiArMTkwLDEzIEBACiAJdGhlIGNvbW1pdHMgaW4gdGhlIHJhbmdlIGxpa2UgbGlua2dpdDpnaXQtc3VibW9kdWxlWzFdIGBzdW1tYXJ5YCBkb2VzLgogCU9taXR0aW5nIHRoZSBgLS1zdWJtb2R1bGVgIG9wdGlvbiBvciBzcGVjaWZ5aW5nIGAtLXN1Ym1vZHVsZT1zaG9ydGAsCiAJdXNlcyB0aGUgJ3Nob3J0JyBmb3JtYXQuIFRoaXMgZm9ybWF0IGp1c3Qgc2hvd3MgdGhlIG5hbWVzIG9mIHRoZSBjb21taXRzCi0JYXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHRoZSByYW5nZS4KKwlhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIHJhbmdlLiAgQ2FuIGJlIHR3ZWFrZWQgdmlhIHRoZQorCWBkaWZmLnN1Ym1vZHVsZWAgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4KIAogLS1jb2xvcls9PHdoZW4+XTo6CiAJU2hvdyBjb2xvcmVkIGRpZmYuCi0JVGhlIHZhbHVlIG11c3QgYmUgYGFsd2F5c2AgKHRoZSBkZWZhdWx0IGZvciBgPHdoZW4+YCksIGBuZXZlcmAsIG9yIGBhdXRvYC4KLQlUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgbmV2ZXJgLgorCWAtLWNvbG9yYCAoaS5lLiB3aXRob3V0ICc9PHdoZW4+JykgaXMgdGhlIHNhbWUgYXMgYC0tY29sb3I9YWx3YXlzYC4KKwknPHdoZW4+JyBjYW4gYmUgb25lIG9mIGBhbHdheXNgLCBgbmV2ZXJgLCBvciBgYXV0b2AuCiBpZmRlZjo6Z2l0LWRpZmZbXQogCUl0IGNhbiBiZSBjaGFuZ2VkIGJ5IHRoZSBgY29sb3IudWlgIGFuZCBgY29sb3IuZGlmZmAKIAljb25maWd1cmF0aW9uIHNldHRpbmdzLgpAQCAtMjgyLDcgKzMwMyw3IEBACiBzaW5nbGUgZGVsZXRpb24gb2YgZXZlcnl0aGluZyBvbGQgZm9sbG93ZWQgYnkgYSBzaW5nbGUgaW5zZXJ0aW9uIG9mCiBldmVyeXRoaW5nIG5ldywgYW5kIHRoZSBudW1iZXIgYG1gIGNvbnRyb2xzIHRoaXMgYXNwZWN0IG9mIHRoZSAtQgogb3B0aW9uIChkZWZhdWx0cyB0byA2MCUpLiBgLUIvNzAlYCBzcGVjaWZpZXMgdGhhdCBsZXNzIHRoYW4gMzAlIG9mIHRoZQotb3JpZ2luYWwgc2hvdWxkIHJlbWFpbiBpbiB0aGUgcmVzdWx0IGZvciBnaXQgdG8gY29uc2lkZXIgaXQgYSB0b3RhbAorb3JpZ2luYWwgc2hvdWxkIHJlbWFpbiBpbiB0aGUgcmVzdWx0IGZvciBHaXQgdG8gY29uc2lkZXIgaXQgYSB0b3RhbAogcmV3cml0ZSAoaS5lLiBvdGhlcndpc2UgdGhlIHJlc3VsdGluZyBwYXRjaCB3aWxsIGJlIGEgc2VyaWVzIG9mCiBkZWxldGlvbiBhbmQgaW5zZXJ0aW9uIG1peGVkIHRvZ2V0aGVyIHdpdGggY29udGV4dCBsaW5lcykuCiArCkBAIC0zMDYsOSArMzI3LDEzIEBACiBlbmRpZjo6Z2l0LWxvZ1tdCiAJSWYgYG5gIGlzIHNwZWNpZmllZCwgaXQgaXMgYSB0aHJlc2hvbGQgb24gdGhlIHNpbWlsYXJpdHkKIAlpbmRleCAoaS5lLiBhbW91bnQgb2YgYWRkaXRpb24vZGVsZXRpb25zIGNvbXBhcmVkIHRvIHRoZQotCWZpbGUncyBzaXplKS4gRm9yIGV4YW1wbGUsIGAtTTkwJWAgbWVhbnMgZ2l0IHNob3VsZCBjb25zaWRlciBhCisJZmlsZSdzIHNpemUpLiBGb3IgZXhhbXBsZSwgYC1NOTAlYCBtZWFucyBHaXQgc2hvdWxkIGNvbnNpZGVyIGEKIAlkZWxldGUvYWRkIHBhaXIgdG8gYmUgYSByZW5hbWUgaWYgbW9yZSB0aGFuIDkwJSBvZiB0aGUgZmlsZQotCWhhc24ndCBjaGFuZ2VkLgorCWhhc24ndCBjaGFuZ2VkLiAgV2l0aG91dCBhIGAlYCBzaWduLCB0aGUgbnVtYmVyIGlzIHRvIGJlIHJlYWQgYXMKKwlhIGZyYWN0aW9uLCB3aXRoIGEgZGVjaW1hbCBwb2ludCBiZWZvcmUgaXQuICBJLmUuLCBgLU01YCBiZWNvbWVzCisJMC41LCBhbmQgaXMgdGh1cyB0aGUgc2FtZSBhcyBgLU01MCVgLiAgU2ltaWxhcmx5LCBgLU0wNWAgaXMKKwl0aGUgc2FtZSBhcyBgLU01JWAuICBUbyBsaW1pdCBkZXRlY3Rpb24gdG8gZXhhY3QgcmVuYW1lcywgdXNlCisJYC1NMTAwJWAuCiAKIC1DWzxuPl06OgogLS1maW5kLWNvcGllc1s9PG4+XTo6CkBAIC0zNTgsMTQgKzM4MywzNiBAQAogCXRoYXQgbWF0Y2hlcyBvdGhlciBjcml0ZXJpYSwgbm90aGluZyBpcyBzZWxlY3RlZC4KIAogLVM8c3RyaW5nPjo6Ci0JTG9vayBmb3IgZGlmZmVyZW5jZXMgdGhhdCBpbnRyb2R1Y2Ugb3IgcmVtb3ZlIGFuIGluc3RhbmNlIG9mCi0JPHN0cmluZz4uIE5vdGUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBzdHJpbmcgc2ltcGx5Ci0JYXBwZWFyaW5nIGluIGRpZmYgb3V0cHV0OyBzZWUgdGhlICdwaWNrYXhlJyBlbnRyeSBpbgotCWxpbmtnaXQ6Z2l0ZGlmZmNvcmVbN10gZm9yIG1vcmUgZGV0YWlscy4KKwlMb29rIGZvciBkaWZmZXJlbmNlcyB0aGF0IGNoYW5nZSB0aGUgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mCisJdGhlIHNwZWNpZmllZCBzdHJpbmcgKGkuZS4gYWRkaXRpb24vZGVsZXRpb24pIGluIGEgZmlsZS4KKwlJbnRlbmRlZCBmb3IgdGhlIHNjcmlwdGVyJ3MgdXNlLgorKworSXQgaXMgdXNlZnVsIHdoZW4geW91J3JlIGxvb2tpbmcgZm9yIGFuIGV4YWN0IGJsb2NrIG9mIGNvZGUgKGxpa2UgYQorc3RydWN0KSwgYW5kIHdhbnQgdG8ga25vdyB0aGUgaGlzdG9yeSBvZiB0aGF0IGJsb2NrIHNpbmNlIGl0IGZpcnN0CitjYW1lIGludG8gYmVpbmc6IHVzZSB0aGUgZmVhdHVyZSBpdGVyYXRpdmVseSB0byBmZWVkIHRoZSBpbnRlcmVzdGluZworYmxvY2sgaW4gdGhlIHByZWltYWdlIGJhY2sgaW50byBgLVNgLCBhbmQga2VlcCBnb2luZyB1bnRpbCB5b3UgZ2V0IHRoZQordmVyeSBmaXJzdCB2ZXJzaW9uIG9mIHRoZSBibG9jay4KIAogLUc8cmVnZXg+OjoKLQlMb29rIGZvciBkaWZmZXJlbmNlcyB3aG9zZSBhZGRlZCBvciByZW1vdmVkIGxpbmUgbWF0Y2hlcwotCXRoZSBnaXZlbiA8cmVnZXg+LgorCUxvb2sgZm9yIGRpZmZlcmVuY2VzIHdob3NlIHBhdGNoIHRleHQgY29udGFpbnMgYWRkZWQvcmVtb3ZlZAorCWxpbmVzIHRoYXQgbWF0Y2ggPHJlZ2V4Pi4KKysKK1RvIGlsbHVzdHJhdGUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBgLVM8cmVnZXg+IC0tcGlja2F4ZS1yZWdleGAgYW5kCitgLUc8cmVnZXg+YCwgY29uc2lkZXIgYSBjb21taXQgd2l0aCB0aGUgZm9sbG93aW5nIGRpZmYgaW4gdGhlIHNhbWUKK2ZpbGU6CisrCistLS0tCisrICAgIHJldHVybiAhcmVnZXhlYyhyZWdleHAsIHR3by0+cHRyLCAxLCAmcmVnbWF0Y2gsIDApOworLi4uCistICAgIGhpdCA9ICFyZWdleGVjKHJlZ2V4cCwgbWYyLnB0ciwgMSwgJnJlZ21hdGNoLCAwKTsKKy0tLS0KKysKK1doaWxlIGBnaXQgbG9nIC1HInJlZ2V4ZWNcKHJlZ2V4cCJgIHdpbGwgc2hvdyB0aGlzIGNvbW1pdCwgYGdpdCBsb2cKKy1TInJlZ2V4ZWNcKHJlZ2V4cCIgLS1waWNrYXhlLXJlZ2V4YCB3aWxsIG5vdCAoYmVjYXVzZSB0aGUgbnVtYmVyIG9mCitvY2N1cnJlbmNlcyBvZiB0aGF0IHN0cmluZyBkaWQgbm90IGNoYW5nZSkuCisrCitTZWUgdGhlICdwaWNrYXhlJyBlbnRyeSBpbiBsaW5rZ2l0OmdpdGRpZmZjb3JlWzddIGZvciBtb3JlCitpbmZvcm1hdGlvbi4KIAogLS1waWNrYXhlLWFsbDo6CiAJV2hlbiBgLVNgIG9yIGAtR2AgZmluZHMgYSBjaGFuZ2UsIHNob3cgYWxsIHRoZSBjaGFuZ2VzIGluIHRoYXQKQEAgLTM3Myw4ICs0MjAsOCBAQAogCWluIDxzdHJpbmc+LgogCiAtLXBpY2theGUtcmVnZXg6OgotCU1ha2UgdGhlIDxzdHJpbmc+IG5vdCBhIHBsYWluIHN0cmluZyBidXQgYW4gZXh0ZW5kZWQgUE9TSVgKLQlyZWdleCB0byBtYXRjaC4KKwlUcmVhdCB0aGUgPHN0cmluZz4gZ2l2ZW4gdG8gYC1TYCBhcyBhbiBleHRlbmRlZCBQT1NJWCByZWd1bGFyCisJZXhwcmVzc2lvbiB0byBtYXRjaC4KIGVuZGlmOjpnaXQtZm9ybWF0LXBhdGNoW10KIAogLU88b3JkZXJmaWxlPjo6CkBAIC00NTUsNyArNTAyLDcgQEAKIAogLS1pZ25vcmUtc3VibW9kdWxlc1s9PHdoZW4+XTo6CiAJSWdub3JlIGNoYW5nZXMgdG8gc3VibW9kdWxlcyBpbiB0aGUgZGlmZiBnZW5lcmF0aW9uLiA8d2hlbj4gY2FuIGJlCi0JZWl0aGVyICJub25lIiwgInVudHJhY2tlZCIsICJkaXJ0eSIgb3IgImFsbCIsIHdoaWNoIGlzIHRoZSBkZWZhdWx0CisJZWl0aGVyICJub25lIiwgInVudHJhY2tlZCIsICJkaXJ0eSIgb3IgImFsbCIsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LgogCVVzaW5nICJub25lIiB3aWxsIGNvbnNpZGVyIHRoZSBzdWJtb2R1bGUgbW9kaWZpZWQgd2hlbiBpdCBlaXRoZXIgY29udGFpbnMKIAl1bnRyYWNrZWQgb3IgbW9kaWZpZWQgZmlsZXMgb3IgaXRzIEhFQUQgZGlmZmVycyBmcm9tIHRoZSBjb21taXQgcmVjb3JkZWQKIAlpbiB0aGUgc3VwZXJwcm9qZWN0IGFuZCBjYW4gYmUgdXNlZCB0byBvdmVycmlkZSBhbnkgc2V0dGluZ3Mgb2YgdGhlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2V2ZXJ5ZGF5LnR4dCBiL0RvY3VtZW50YXRpb24vZXZlcnlkYXkudHh0CmluZGV4IDA0ODMzN2IuLmUxZmJhODUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZXZlcnlkYXkudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZXZlcnlkYXkudHh0CkBAIC0xLDQgKzEsNCBAQAotRXZlcnlkYXkgR0lUIFdpdGggMjAgQ29tbWFuZHMgT3IgU28KK0V2ZXJ5ZGF5IEdpdCBXaXRoIDIwIENvbW1hbmRzIE9yIFNvCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiA8PEluZGl2aWR1YWwgRGV2ZWxvcGVyIChTdGFuZGFsb25lKT4+IGNvbW1hbmRzIGFyZSBlc3NlbnRpYWwgZm9yCkBAIC0xMiw3ICsxMiw3IEBACiAKIDw8UmVwb3NpdG9yeSBBZG1pbmlzdHJhdGlvbj4+IGNvbW1hbmRzIGFyZSBmb3Igc3lzdGVtCiBhZG1pbmlzdHJhdG9ycyB3aG8gYXJlIHJlc3BvbnNpYmxlIGZvciB0aGUgY2FyZSBhbmQgZmVlZGluZwotb2YgZ2l0IHJlcG9zaXRvcmllcy4KK29mIEdpdCByZXBvc2l0b3JpZXMuCiAKIAogSW5kaXZpZHVhbCBEZXZlbG9wZXIgKFN0YW5kYWxvbmUpW1tJbmRpdmlkdWFsIERldmVsb3BlciAoU3RhbmRhbG9uZSldXQpAQCAtODcsNyArODcsNyBAQAogKwogPDE+IGNyZWF0ZSBhIG5ldyB0b3BpYyBicmFuY2guCiA8Mj4gcmV2ZXJ0IHlvdXIgYm90Y2hlZCBjaGFuZ2VzIGluIGBjdXJzZXMvdXhfYXVkaW9fb3NzLmNgLgotPDM+IHlvdSBuZWVkIHRvIHRlbGwgZ2l0IGlmIHlvdSBhZGRlZCBhIG5ldyBmaWxlOyByZW1vdmFsIGFuZAorPDM+IHlvdSBuZWVkIHRvIHRlbGwgR2l0IGlmIHlvdSBhZGRlZCBhIG5ldyBmaWxlOyByZW1vdmFsIGFuZAogbW9kaWZpY2F0aW9uIHdpbGwgYmUgY2F1Z2h0IGlmIHlvdSBkbyBgZ2l0IGNvbW1pdCAtYWAgbGF0ZXIuCiA8ND4gdG8gc2VlIHdoYXQgY2hhbmdlcyB5b3UgYXJlIGNvbW1pdHRpbmcuCiA8NT4gY29tbWl0IGV2ZXJ5dGhpbmcgYXMgeW91IGhhdmUgdGVzdGVkLCB3aXRoIHlvdXIgc2lnbi1vZmYuCkBAIC0yMjksNyArMjI5LDcgQEAKIEV4YW1wbGVzCiB+fn5+fn5+fgogCi1NeSB0eXBpY2FsIEdJVCBkYXkuOjoKK015IHR5cGljYWwgR2l0IGRheS46OgogKwogLS0tLS0tLS0tLS0tCiAkIGdpdCBzdGF0dXMgPDE+CkBAIC0zMzIsNyArMzMyLDcgQEAKIC0tLS0tLS0tLS0tLQogJCBjYXQgL2V0Yy94aW5ldGQuZC9naXQtZGFlbW9uCiAjIGRlZmF1bHQ6IG9mZgotIyBkZXNjcmlwdGlvbjogVGhlIGdpdCBzZXJ2ZXIgb2ZmZXJzIGFjY2VzcyB0byBnaXQgcmVwb3NpdG9yaWVzCisjIGRlc2NyaXB0aW9uOiBUaGUgR2l0IHNlcnZlciBvZmZlcnMgYWNjZXNzIHRvIEdpdCByZXBvc2l0b3JpZXMKIHNlcnZpY2UgZ2l0CiB7CiAgICAgICAgIGRpc2FibGUgPSBubwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mZXRjaC1vcHRpb25zLnR4dCBiL0RvY3VtZW50YXRpb24vZmV0Y2gtb3B0aW9ucy50eHQKaW5kZXggMzlkMzI2YS4uOWNiNjQ5NiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9mZXRjaC1vcHRpb25zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZldGNoLW9wdGlvbnMudHh0CkBAIC04LDkgKzgsMTQgQEAKIAlvcHRpb24gb2xkIGRhdGEgaW4gYC5naXQvRkVUQ0hfSEVBRGAgd2lsbCBiZSBvdmVyd3JpdHRlbi4KIAogLS1kZXB0aD08ZGVwdGg+OjoKLQlEZWVwZW4gdGhlIGhpc3Rvcnkgb2YgYSAnc2hhbGxvdycgcmVwb3NpdG9yeSBjcmVhdGVkIGJ5CisJRGVlcGVuIG9yIHNob3J0ZW4gdGhlIGhpc3Rvcnkgb2YgYSAnc2hhbGxvdycgcmVwb3NpdG9yeSBjcmVhdGVkIGJ5CiAJYGdpdCBjbG9uZWAgd2l0aCBgLS1kZXB0aD08ZGVwdGg+YCBvcHRpb24gKHNlZSBsaW5rZ2l0OmdpdC1jbG9uZVsxXSkKLQlieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBjb21taXRzLgorCXRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGNvbW1pdHMgZnJvbSB0aGUgdGlwIG9mIGVhY2ggcmVtb3RlCisJYnJhbmNoIGhpc3RvcnkuIFRhZ3MgZm9yIHRoZSBkZWVwZW5lZCBjb21taXRzIGFyZSBub3QgZmV0Y2hlZC4KKworLS11bnNoYWxsb3c6OgorCUNvbnZlcnQgYSBzaGFsbG93IHJlcG9zaXRvcnkgdG8gYSBjb21wbGV0ZSBvbmUsIHJlbW92aW5nIGFsbAorCXRoZSBsaW1pdGF0aW9ucyBpbXBvc2VkIGJ5IHNoYWxsb3cgcmVwb3NpdG9yaWVzLgogCiBpZm5kZWY6OmdpdC1wdWxsW10KIC0tZHJ5LXJ1bjo6CkBAIC01NiwxNCArNjEsMTEgQEAKIGlmbmRlZjo6Z2l0LXB1bGxbXQogLXQ6OgogLS10YWdzOjoKLQlNb3N0IG9mIHRoZSB0YWdzIGFyZSBmZXRjaGVkIGF1dG9tYXRpY2FsbHkgYXMgYnJhbmNoCi0JaGVhZHMgYXJlIGRvd25sb2FkZWQsIGJ1dCB0YWdzIHRoYXQgZG8gbm90IHBvaW50IGF0Ci0Jb2JqZWN0cyByZWFjaGFibGUgZnJvbSB0aGUgYnJhbmNoIGhlYWRzIHRoYXQgYXJlIGJlaW5nCi0JdHJhY2tlZCB3aWxsIG5vdCBiZSBmZXRjaGVkIGJ5IHRoaXMgbWVjaGFuaXNtLiAgVGhpcwotCWZsYWcgbGV0cyBhbGwgdGFncyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBvYmplY3RzIGJlCi0JZG93bmxvYWRlZC4gVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGEgcmVtb3RlIG1heSBiZQotCXNwZWNpZmllZCB3aXRoIHRoZSByZW1vdGUuPG5hbWU+LnRhZ29wdCBzZXR0aW5nLiBTZWUKLQlsaW5rZ2l0OmdpdC1jb25maWdbMV0uCisJVGhpcyBpcyBhIHNob3J0LWhhbmQgZm9yIGdpdmluZyAicmVmcy90YWdzLyo6cmVmcy90YWdzLyoiCisJcmVmc3BlYyBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIHRvIGFzayBhbGwgdGFncyB0byBiZSBmZXRjaGVkCisJYW5kIHN0b3JlZCBsb2NhbGx5LiAgQmVjYXVzZSB0aGlzIGFjdHMgYXMgYW4gZXhwbGljaXQKKwlyZWZzcGVjLCB0aGUgZGVmYXVsdCByZWZzcGVjcyAoY29uZmlndXJlZCB3aXRoIHRoZQorCXJlbW90ZS4kbmFtZS5mZXRjaCB2YXJpYWJsZSkgYXJlIG92ZXJyaWRkZW4gYW5kIG5vdCB1c2VkLgogCiAtLXJlY3Vyc2Utc3VibW9kdWxlc1s9eWVzfG9uLWRlbWFuZHxub106OgogCVRoaXMgb3B0aW9uIGNvbnRyb2xzIGlmIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMgbmV3IGNvbW1pdHMgb2YKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWFkZC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1hZGQudHh0CmluZGV4IDljMWQzOTUuLjQ4NzU0Y2IgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWFkZC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtYWRkLnR4dApAQCAtOSw5ICs5LDkgQEAKIC0tLS0tLS0tCiBbdmVyc2VdCiAnZ2l0IGFkZCcgWy1uXSBbLXZdIFstLWZvcmNlIHwgLWZdIFstLWludGVyYWN0aXZlIHwgLWldIFstLXBhdGNoIHwgLXBdCi0JICBbLS1lZGl0IHwgLWVdIFstLWFsbCB8IFstLXVwZGF0ZSB8IC11XV0gWy0taW50ZW50LXRvLWFkZCB8IC1OXQotCSAgWy0tcmVmcmVzaF0gWy0taWdub3JlLWVycm9yc10gWy0taWdub3JlLW1pc3NpbmddIFstLV0KLQkgIFs8ZmlsZXBhdHRlcm4+Li4uXQorCSAgWy0tZWRpdCB8IC1lXSBbLS1bbm8tXWFsbCB8IC0tW25vLV1pZ25vcmUtcmVtb3ZhbCB8IFstLXVwZGF0ZSB8IC11XV0KKwkgIFstLWludGVudC10by1hZGQgfCAtTl0gWy0tcmVmcmVzaF0gWy0taWdub3JlLWVycm9yc10gWy0taWdub3JlLW1pc3NpbmddCisJICBbLS1dIFs8cGF0aHNwZWM+Li4uXQogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KQEAgLTQ5LDcgKzQ5LDcgQEAKIAogT1BUSU9OUwogLS0tLS0tLQotPGZpbGVwYXR0ZXJuPi4uLjo6Cis8cGF0aHNwZWM+Li4uOjoKIAlGaWxlcyB0byBhZGQgY29udGVudCBmcm9tLiAgRmlsZWdsb2JzIChlLmcuIGAqLmNgKSBjYW4KIAliZSBnaXZlbiB0byBhZGQgYWxsIG1hdGNoaW5nIGZpbGVzLiAgQWxzbyBhCiAJbGVhZGluZyBkaXJlY3RvcnkgbmFtZSAoZS5nLiBgZGlyYCB0byBhZGQgYGRpci9maWxlMWAKQEAgLTEwMCwyMyArMTAwLDQwIEBACiAKIC11OjoKIC0tdXBkYXRlOjoKLQlPbmx5IG1hdGNoIDxmaWxlcGF0dGVybj4gYWdhaW5zdCBhbHJlYWR5IHRyYWNrZWQgZmlsZXMgaW4KLQl0aGUgaW5kZXggcmF0aGVyIHRoYW4gdGhlIHdvcmtpbmcgdHJlZS4gVGhhdCBtZWFucyB0aGF0IGl0Ci0Jd2lsbCBuZXZlciBzdGFnZSBuZXcgZmlsZXMsIGJ1dCB0aGF0IGl0IHdpbGwgc3RhZ2UgbW9kaWZpZWQKLQluZXcgY29udGVudHMgb2YgdHJhY2tlZCBmaWxlcyBhbmQgdGhhdCBpdCB3aWxsIHJlbW92ZSBmaWxlcwotCWZyb20gdGhlIGluZGV4IGlmIHRoZSBjb3JyZXNwb25kaW5nIGZpbGVzIGluIHRoZSB3b3JraW5nIHRyZWUKLQloYXZlIGJlZW4gcmVtb3ZlZC4KKwlVcGRhdGUgdGhlIGluZGV4IGp1c3Qgd2hlcmUgaXQgYWxyZWFkeSBoYXMgYW4gZW50cnkgbWF0Y2hpbmcKKwk8cGF0aHNwZWM+LiAgVGhpcyByZW1vdmVzIGFzIHdlbGwgYXMgbW9kaWZpZXMgaW5kZXggZW50cmllcyB0bworCW1hdGNoIHRoZSB3b3JraW5nIHRyZWUsIGJ1dCBhZGRzIG5vIG5ldyBmaWxlcy4KICsKLUlmIG5vIDxmaWxlcGF0dGVybj4gaXMgZ2l2ZW4sIGRlZmF1bHQgdG8gIi4iOyBpbiBvdGhlciB3b3JkcywKLXVwZGF0ZSBhbGwgdHJhY2tlZCBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgYW5kIGl0cwotc3ViZGlyZWN0b3JpZXMuCitJZiBubyA8cGF0aHNwZWM+IGlzIGdpdmVuLCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIEdpdCBkZWZhdWx0cyB0bworIi4iOyBpbiBvdGhlciB3b3JkcywgdXBkYXRlIGFsbCB0cmFja2VkIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorYW5kIGl0cyBzdWJkaXJlY3Rvcmllcy4gVGhpcyBkZWZhdWx0IHdpbGwgY2hhbmdlIGluIGEgZnV0dXJlIHZlcnNpb24KK29mIEdpdCwgaGVuY2UgdGhlIGZvcm0gd2l0aG91dCA8cGF0aHNwZWM+IHNob3VsZCBub3QgYmUgdXNlZC4KIAogLUE6OgogLS1hbGw6OgotCUxpa2UgYC11YCwgYnV0IG1hdGNoIDxmaWxlcGF0dGVybj4gYWdhaW5zdCBmaWxlcyBpbiB0aGUKLQl3b3JraW5nIHRyZWUgaW4gYWRkaXRpb24gdG8gdGhlIGluZGV4LiBUaGF0IG1lYW5zIHRoYXQgaXQKLQl3aWxsIGZpbmQgbmV3IGZpbGVzIGFzIHdlbGwgYXMgc3RhZ2luZyBtb2RpZmllZCBjb250ZW50IGFuZAotCXJlbW92aW5nIGZpbGVzIHRoYXQgYXJlIG5vIGxvbmdlciBpbiB0aGUgd29ya2luZyB0cmVlLgorLS1uby1pZ25vcmUtcmVtb3ZhbDo6CisJVXBkYXRlIHRoZSBpbmRleCBub3Qgb25seSB3aGVyZSB0aGUgd29ya2luZyB0cmVlIGhhcyBhIGZpbGUKKwltYXRjaGluZyA8cGF0aHNwZWM+IGJ1dCBhbHNvIHdoZXJlIHRoZSBpbmRleCBhbHJlYWR5IGhhcyBhbgorCWVudHJ5LglUaGlzIGFkZHMsIG1vZGlmaWVzLCBhbmQgcmVtb3ZlcyBpbmRleCBlbnRyaWVzIHRvCisJbWF0Y2ggdGhlIHdvcmtpbmcgdHJlZS4KKysKK0lmIG5vIDxwYXRoc3BlYz4gaXMgZ2l2ZW4sIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgR2l0IGRlZmF1bHRzIHRvCisiLiI7IGluIG90aGVyIHdvcmRzLCB1cGRhdGUgYWxsIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorYW5kIGl0cyBzdWJkaXJlY3Rvcmllcy4gVGhpcyBkZWZhdWx0IHdpbGwgY2hhbmdlIGluIGEgZnV0dXJlIHZlcnNpb24KK29mIEdpdCwgaGVuY2UgdGhlIGZvcm0gd2l0aG91dCA8cGF0aHNwZWM+IHNob3VsZCBub3QgYmUgdXNlZC4KKworLS1uby1hbGw6OgorLS1pZ25vcmUtcmVtb3ZhbDo6CisJVXBkYXRlIHRoZSBpbmRleCBieSBhZGRpbmcgbmV3IGZpbGVzIHRoYXQgYXJlIHVua25vd24gdG8gdGhlCisJaW5kZXggYW5kIGZpbGVzIG1vZGlmaWVkIGluIHRoZSB3b3JraW5nIHRyZWUsIGJ1dCBpZ25vcmUKKwlmaWxlcyB0aGF0IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHdvcmtpbmcgdHJlZS4gIFRoaXMKKwlvcHRpb24gaXMgYSBuby1vcCB3aGVuIG5vIDxwYXRoc3BlYz4gaXMgdXNlZC4KKysKK1RoaXMgb3B0aW9uIGlzIHByaW1hcmlseSB0byBoZWxwIHRoZSBjdXJyZW50IHVzZXJzIG9mIEdpdCwgd2hvc2UKKyJnaXQgYWRkIDxwYXRoc3BlYz4uLi4iIGlnbm9yZXMgcmVtb3ZlZCBmaWxlcy4gIEluIGZ1dHVyZSB2ZXJzaW9ucworb2YgR2l0LCAiZ2l0IGFkZCA8cGF0aHNwZWM+Li4uIiB3aWxsIGJlIGEgc3lub255bSB0byAiZ2l0IGFkZCAtQQorPHBhdGhzcGVjPi4uLiIgYW5kICJnaXQgYWRkIC0taWdub3JlLXJlbW92YWwgPHBhdGhzcGVjPi4uLiIgd2lsbCBiZWhhdmUgbGlrZQordG9kYXkncyAiZ2l0IGFkZCA8cGF0aHNwZWM+Li4uIiwgaWdub3JpbmcgcmVtb3ZlZCBmaWxlcy4KIAogLU46OgogLS1pbnRlbnQtdG8tYWRkOjoKQEAgLTE1NSw3ICsxNzIsNyBAQAogVGhlIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgYGNvcmUuZXhjbHVkZXNmaWxlYCBpbmRpY2F0ZXMgYSBwYXRoIHRvIGEKIGZpbGUgY29udGFpbmluZyBwYXR0ZXJucyBvZiBmaWxlIG5hbWVzIHRvIGV4Y2x1ZGUgZnJvbSBnaXQtYWRkLCBzaW1pbGFyIHRvCiAkR0lUX0RJUi9pbmZvL2V4Y2x1ZGUuICBQYXR0ZXJucyBpbiB0aGUgZXhjbHVkZSBmaWxlIGFyZSB1c2VkIGluIGFkZGl0aW9uIHRvCi10aG9zZSBpbiBpbmZvL2V4Y2x1ZGUuICBTZWUgbGlua2dpdDpnaXRyZXBvc2l0b3J5LWxheW91dFs1XS4KK3Rob3NlIGluIGluZm8vZXhjbHVkZS4gIFNlZSBsaW5rZ2l0OmdpdGlnbm9yZVs1XS4KIAogCiBFWEFNUExFUwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtYW0udHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYW0udHh0CmluZGV4IDE5ZDU3YTguLjViYmU3YjYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWFtLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1hbS50eHQKQEAgLTksMTIgKzksMTIgQEAKIFNZTk9QU0lTCiAtLS0tLS0tLQogW3ZlcnNlXQotJ2dpdCBhbScgWy0tc2lnbm9mZl0gWy0ta2VlcF0gWy0ta2VlcC1jciB8IC0tbm8ta2VlcC1jcl0gWy0tdXRmOCB8IC0tbm8tdXRmOF0KKydnaXQgYW0nIFstLXNpZ25vZmZdIFstLWtlZXBdIFstLVtuby1da2VlcC1jcl0gWy0tW25vLV11dGY4XQogCSBbLS0zd2F5XSBbLS1pbnRlcmFjdGl2ZV0gWy0tY29tbWl0dGVyLWRhdGUtaXMtYXV0aG9yLWRhdGVdCiAJIFstLWlnbm9yZS1kYXRlXSBbLS1pZ25vcmUtc3BhY2UtY2hhbmdlIHwgLS1pZ25vcmUtd2hpdGVzcGFjZV0KIAkgWy0td2hpdGVzcGFjZT08b3B0aW9uPl0gWy1DPG4+XSBbLXA8bj5dIFstLWRpcmVjdG9yeT08ZGlyPl0KIAkgWy0tZXhjbHVkZT08cGF0aD5dIFstLWluY2x1ZGU9PHBhdGg+XSBbLS1yZWplY3RdIFstcSB8IC0tcXVpZXRdCi0JIFstLXNjaXNzb3JzIHwgLS1uby1zY2lzc29yc10KKwkgWy0tW25vLV1zY2lzc29yc10KIAkgWyg8bWJveD4gfCA8TWFpbGRpcj4pLi4uXQogJ2dpdCBhbScgKC0tY29udGludWUgfCAtLXNraXAgfCAtLWFib3J0KQogCkBAIC00Myw4ICs0Myw3IEBACiAtLWtlZXAtbm9uLXBhdGNoOjoKIAlQYXNzIGAtYmAgZmxhZyB0byAnZ2l0IG1haWxpbmZvJyAoc2VlIGxpbmtnaXQ6Z2l0LW1haWxpbmZvWzFdKS4KIAotLS1rZWVwLWNyOjoKLS0tbm8ta2VlcC1jcjo6CistLVtuby1da2VlcC1jcjo6CiAJV2l0aCBgLS1rZWVwLWNyYCwgY2FsbCAnZ2l0IG1haWxzcGxpdCcgKHNlZSBsaW5rZ2l0OmdpdC1tYWlsc3BsaXRbMV0pCiAJd2l0aCB0aGUgc2FtZSBvcHRpb24sIHRvIHByZXZlbnQgaXQgZnJvbSBzdHJpcHBpbmcgQ1IgYXQgdGhlIGVuZCBvZgogCWxpbmVzLiBgYW0ua2VlcGNyYCBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1hcHBseS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1hcHBseS50eHQKaW5kZXggYWZkMmM5YS4uZjYwNTMyNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYXBwbHkudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWFwcGx5LnR4dApAQCAtOSw3ICs5LDcgQEAKIFNZTk9QU0lTCiAtLS0tLS0tLQogW3ZlcnNlXQotJ2dpdCBhcHBseScgWy0tc3RhdF0gWy0tbnVtc3RhdF0gWy0tc3VtbWFyeV0gWy0tY2hlY2tdIFstLWluZGV4XQorJ2dpdCBhcHBseScgWy0tc3RhdF0gWy0tbnVtc3RhdF0gWy0tc3VtbWFyeV0gWy0tY2hlY2tdIFstLWluZGV4XSBbLS0zd2F5XQogCSAgWy0tYXBwbHldIFstLW5vLWFkZF0gWy0tYnVpbGQtZmFrZS1hbmNlc3Rvcj08ZmlsZT5dIFstUiB8IC0tcmV2ZXJzZV0KIAkgIFstLWFsbG93LWJpbmFyeS1yZXBsYWNlbWVudCB8IC0tYmluYXJ5XSBbLS1yZWplY3RdIFstel0KIAkgIFstcDxuPl0gWy1DPG4+XSBbLS1pbmFjY3VyYXRlLWVvZl0gWy0tcmVjb3VudF0gWy0tY2FjaGVkXQpAQCAtMjQsNyArMjQsNyBAQAogV2l0aCB0aGUgYC0taW5kZXhgIG9wdGlvbiB0aGUgcGF0Y2ggaXMgYWxzbyBhcHBsaWVkIHRvIHRoZSBpbmRleCwgYW5kCiB3aXRoIHRoZSBgLS1jYWNoZWRgIG9wdGlvbiB0aGUgcGF0Y2ggaXMgb25seSBhcHBsaWVkIHRvIHRoZSBpbmRleC4KIFdpdGhvdXQgdGhlc2Ugb3B0aW9ucywgdGhlIGNvbW1hbmQgYXBwbGllcyB0aGUgcGF0Y2ggb25seSB0byBmaWxlcywKLWFuZCBkb2VzIG5vdCByZXF1aXJlIHRoZW0gdG8gYmUgaW4gYSBnaXQgcmVwb3NpdG9yeS4KK2FuZCBkb2VzIG5vdCByZXF1aXJlIHRoZW0gdG8gYmUgaW4gYSBHaXQgcmVwb3NpdG9yeS4KIAogVGhpcyBjb21tYW5kIGFwcGxpZXMgdGhlIHBhdGNoIGJ1dCBkb2VzIG5vdCBjcmVhdGUgYSBjb21taXQuICBVc2UKIGxpbmtnaXQ6Z2l0LWFtWzFdIHRvIGNyZWF0ZSBjb21taXRzIGZyb20gcGF0Y2hlcyBnZW5lcmF0ZWQgYnkKQEAgLTcyLDYgKzcyLDE1IEBACiAJY2FjaGVkIGRhdGEsIGFwcGx5IHRoZSBwYXRjaCwgYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gdGhlIGluZGV4CiAJd2l0aG91dCB1c2luZyB0aGUgd29ya2luZyB0cmVlLiBUaGlzIGltcGxpZXMgYC0taW5kZXhgLgogCistMzo6CistLTN3YXk6OgorCVdoZW4gdGhlIHBhdGNoIGRvZXMgbm90IGFwcGx5IGNsZWFubHksIGZhbGwgYmFjayBvbiAzLXdheSBtZXJnZSBpZgorCXRoZSBwYXRjaCByZWNvcmRzIHRoZSBpZGVudGl0eSBvZiBibG9icyBpdCBpcyBzdXBwb3NlZCB0byBhcHBseSB0bywKKwlhbmQgd2UgaGF2ZSB0aG9zZSBibG9icyBhdmFpbGFibGUgbG9jYWxseSwgcG9zc2libHkgbGVhdmluZyB0aGUKKwljb25mbGljdCBtYXJrZXJzIGluIHRoZSBmaWxlcyBpbiB0aGUgd29ya2luZyB0cmVlIGZvciB0aGUgdXNlciB0bworCXJlc29sdmUuICBUaGlzIG9wdGlvbiBpbXBsaWVzIHRoZSBgLS1pbmRleGAgb3B0aW9uLCBhbmQgaXMgaW5jb21wYXRpYmxlCisJd2l0aCB0aGUgYC0tcmVqZWN0YCBhbmQgdGhlIGAtLWNhY2hlZGAgb3B0aW9ucy4KKwogLS1idWlsZC1mYWtlLWFuY2VzdG9yPTxmaWxlPjo6CiAJTmV3ZXIgJ2dpdCBkaWZmJyBvdXRwdXQgaGFzIGVtYmVkZGVkICdpbmRleCBpbmZvcm1hdGlvbicKIAlmb3IgZWFjaCBibG9iIHRvIGhlbHAgaWRlbnRpZnkgdGhlIG9yaWdpbmFsIHZlcnNpb24gdGhhdApAQCAtMTg5LDcgKzE5OCw3IEBACiAqIGBmaXhgIG91dHB1dHMgd2FybmluZ3MgZm9yIGEgZmV3IHN1Y2ggZXJyb3JzLCBhbmQgYXBwbGllcyB0aGUKICAgcGF0Y2ggYWZ0ZXIgZml4aW5nIHRoZW0gKGBzdHJpcGAgaXMgYSBzeW5vbnltIC0tLSB0aGUgdG9vbAogICB1c2VkIHRvIGNvbnNpZGVyIG9ubHkgdHJhaWxpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFzIGVycm9ycywgYW5kIHRoZQotICBmaXggaW52b2x2ZWQgJ3N0cmlwcGluZycgdGhlbSwgYnV0IG1vZGVybiBnaXRzIGRvIG1vcmUpLgorICBmaXggaW52b2x2ZWQgJ3N0cmlwcGluZycgdGhlbSwgYnV0IG1vZGVybiBHaXRzIGRvIG1vcmUpLgogKiBgZXJyb3JgIG91dHB1dHMgd2FybmluZ3MgZm9yIGEgZmV3IHN1Y2ggZXJyb3JzLCBhbmQgcmVmdXNlcwogICB0byBhcHBseSB0aGUgcGF0Y2guCiAqIGBlcnJvci1hbGxgIGlzIHNpbWlsYXIgdG8gYGVycm9yYCBidXQgc2hvd3MgYWxsIGVycm9ycy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWFyY2hpbXBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYXJjaGltcG9ydC50eHQKaW5kZXggZjQ1MDRiYS4uMTYzYjlmNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYXJjaGltcG9ydC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtYXJjaGltcG9ydC50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdC1hcmNoaW1wb3J0IC0gSW1wb3J0IGFuIEFyY2ggcmVwb3NpdG9yeSBpbnRvIGdpdAorZ2l0LWFyY2hpbXBvcnQgLSBJbXBvcnQgYW4gQXJjaCByZXBvc2l0b3J5IGludG8gR2l0CiAKIAogU1lOT1BTSVMKQEAgLTQwLDEzICs0MCwxMyBAQAogaW5jcmVtZW50YWwgaW1wb3J0cy4KIAogV2hpbGUgJ2dpdCBhcmNoaW1wb3J0JyB3aWxsIHRyeSB0byBjcmVhdGUgc2Vuc2libGUgYnJhbmNoIG5hbWVzIGZvciB0aGUKLWFyY2hpdmVzIHRoYXQgaXQgaW1wb3J0cywgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzcGVjaWZ5IGdpdCBicmFuY2ggbmFtZXMKLW1hbnVhbGx5LiAgVG8gZG8gc28sIHdyaXRlIGEgZ2l0IGJyYW5jaCBuYW1lIGFmdGVyIGVhY2ggPGFyY2hpdmUvYnJhbmNoPgorYXJjaGl2ZXMgdGhhdCBpdCBpbXBvcnRzLCBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkgR2l0IGJyYW5jaCBuYW1lcworbWFudWFsbHkuICBUbyBkbyBzbywgd3JpdGUgYSBHaXQgYnJhbmNoIG5hbWUgYWZ0ZXIgZWFjaCA8YXJjaGl2ZS9icmFuY2g+CiBwYXJhbWV0ZXIsIHNlcGFyYXRlZCBieSBhIGNvbG9uLiAgVGhpcyB3YXksIHlvdSBjYW4gc2hvcnRlbiB0aGUgQXJjaAotYnJhbmNoIG5hbWVzIGFuZCBjb252ZXJ0IEFyY2ggamFyZ29uIHRvIGdpdCBqYXJnb24sIGZvciBleGFtcGxlIG1hcHBpbmcgYQorYnJhbmNoIG5hbWVzIGFuZCBjb252ZXJ0IEFyY2ggamFyZ29uIHRvIEdpdCBqYXJnb24sIGZvciBleGFtcGxlIG1hcHBpbmcgYQogIlBST0pFQ1R7bGl0ZGR9ZGV2b3tsaXRkZH1WRVJTSU9OIiBicmFuY2ggdG8gIm1hc3RlciIuCiAKLUFzc29jaWF0aW5nIG11bHRpcGxlIEFyY2ggYnJhbmNoZXMgdG8gb25lIGdpdCBicmFuY2ggaXMgcG9zc2libGU7IHRoZQorQXNzb2NpYXRpbmcgbXVsdGlwbGUgQXJjaCBicmFuY2hlcyB0byBvbmUgR2l0IGJyYW5jaCBpcyBwb3NzaWJsZTsgdGhlCiByZXN1bHQgd2lsbCBtYWtlIHRoZSBtb3N0IHNlbnNlIG9ubHkgaWYgbm8gY29tbWl0cyBhcmUgbWFkZSB0byB0aGUgZmlyc3QKIGJyYW5jaCwgYWZ0ZXIgdGhlIHNlY29uZCBicmFuY2ggaXMgY3JlYXRlZC4gIFN0aWxsLCB0aGlzIGlzIHVzZWZ1bCB0bwogY29udmVydCBBcmNoIHJlcG9zaXRvcmllcyB0aGF0IGhhZCBiZWVuIHJvdGF0ZWQgcGVyaW9kaWNhbGx5LgpAQCAtNTQsMTQgKzU0LDE0IEBACiAKIE1FUkdFUwogLS0tLS0tCi1QYXRjaCBtZXJnZSBkYXRhIGZyb20gQXJjaCBpcyB1c2VkIHRvIG1hcmsgbWVyZ2VzIGluIGdpdCBhcyB3ZWxsLiBnaXQKK1BhdGNoIG1lcmdlIGRhdGEgZnJvbSBBcmNoIGlzIHVzZWQgdG8gbWFyayBtZXJnZXMgaW4gR2l0IGFzIHdlbGwuIEdpdAogZG9lcyBub3QgY2FyZSBtdWNoIGFib3V0IHRyYWNraW5nIHBhdGNoZXMsIGFuZCBvbmx5IGNvbnNpZGVycyBhIG1lcmdlIHdoZW4gYQogYnJhbmNoIGluY29ycG9yYXRlcyBhbGwgdGhlIGNvbW1pdHMgc2luY2UgdGhlIHBvaW50IHRoZXkgZm9ya2VkLiBUaGUgZW5kIHJlc3VsdAotaXMgdGhhdCBnaXQgd2lsbCBoYXZlIGEgZ29vZCBpZGVhIG9mIGhvdyBmYXIgYnJhbmNoZXMgaGF2ZSBkaXZlcmdlZC4gU28gdGhlCitpcyB0aGF0IEdpdCB3aWxsIGhhdmUgYSBnb29kIGlkZWEgb2YgaG93IGZhciBicmFuY2hlcyBoYXZlIGRpdmVyZ2VkLiBTbyB0aGUKIGltcG9ydCBwcm9jZXNzIGRvZXMgbG9zZSBzb21lIHBhdGNoLXRyYWRpbmcgbWV0YWRhdGEuCiAKIEZvcnR1bmF0ZWx5LCB3aGVuIHlvdSB0cnkgYW5kIG1lcmdlIGJyYW5jaGVzIGltcG9ydGVkIGZyb20gQXJjaCwKLWdpdCB3aWxsIGZpbmQgYSBnb29kIG1lcmdlIGJhc2UsIGFuZCBpdCBoYXMgYSBnb29kIGNoYW5jZSBvZiBpZGVudGlmeWluZworR2l0IHdpbGwgZmluZCBhIGdvb2QgbWVyZ2UgYmFzZSwgYW5kIGl0IGhhcyBhIGdvb2QgY2hhbmNlIG9mIGlkZW50aWZ5aW5nCiBwYXRjaGVzIHRoYXQgaGF2ZSBiZWVuIHRyYWRlZCBvdXQtb2Ytc2VxdWVuY2UgYmV0d2VlbiB0aGUgYnJhbmNoZXMuCiAKIE9QVElPTlMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWFyY2hpdmUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYXJjaGl2ZS50eHQKaW5kZXggNTlkNzNlNS4uYjk3YWFhYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYXJjaGl2ZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtYXJjaGl2ZS50eHQKQEAgLTEwLDcgKzEwLDcgQEAKIC0tLS0tLS0tCiBbdmVyc2VdCiAnZ2l0IGFyY2hpdmUnIFstLWZvcm1hdD08Zm10Pl0gWy0tbGlzdF0gWy0tcHJlZml4PTxwcmVmaXg+L10gWzxleHRyYT5dCi0JICAgICAgWy1vIHwgLS1vdXRwdXQ9PGZpbGU+XSBbLS13b3JrdHJlZS1hdHRyaWJ1dGVzXQorCSAgICAgIFstbyA8ZmlsZT4gfCAtLW91dHB1dD08ZmlsZT5dIFstLXdvcmt0cmVlLWF0dHJpYnV0ZXNdCiAJICAgICAgWy0tcmVtb3RlPTxyZXBvPiBbLS1leGVjPTxnaXQtdXBsb2FkLWFyY2hpdmU+XV0gPHRyZWUtaXNoPgogCSAgICAgIFs8cGF0aD4uLi5dCiAKQEAgLTU2LDcgKzU2LDggQEAKIAlXcml0ZSB0aGUgYXJjaGl2ZSB0byA8ZmlsZT4gaW5zdGVhZCBvZiBzdGRvdXQuCiAKIC0td29ya3RyZWUtYXR0cmlidXRlczo6Ci0JTG9vayBmb3IgYXR0cmlidXRlcyBpbiAuZ2l0YXR0cmlidXRlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSB0b28uCisJTG9vayBmb3IgYXR0cmlidXRlcyBpbiAuZ2l0YXR0cmlidXRlcyBmaWxlcyBpbiB0aGUgd29ya2luZyB0cmVlCisJYXMgd2VsbCAoc2VlIDw8QVRUUklCVVRFUz4+KS4KIAogPGV4dHJhPjo6CiAJVGhpcyBjYW4gYmUgYW55IG9wdGlvbnMgdGhhdCB0aGUgYXJjaGl2ZXIgYmFja2VuZCB1bmRlcnN0YW5kcy4KQEAgLTEyMCw2ICsxMjEsNyBAQAogCXVzZXItZGVmaW5lZCBmb3JtYXRzLCBidXQgdHJ1ZSBmb3IgdGhlICJ0YXIuZ3oiIGFuZCAidGd6IgogCWZvcm1hdHMuCiAKK1tbQVRUUklCVVRFU11dCiBBVFRSSUJVVEVTCiAtLS0tLS0tLS0tCiAKQEAgLTEyOCw3ICsxMzAsNyBAQAogCWFkZGVkIHRvIGFyY2hpdmUgZmlsZXMuICBTZWUgbGlua2dpdDpnaXRhdHRyaWJ1dGVzWzVdIGZvciBkZXRhaWxzLgogCiBleHBvcnQtc3Vic3Q6OgotCUlmIHRoZSBhdHRyaWJ1dGUgZXhwb3J0LXN1YnN0IGlzIHNldCBmb3IgYSBmaWxlIHRoZW4gZ2l0IHdpbGwKKwlJZiB0aGUgYXR0cmlidXRlIGV4cG9ydC1zdWJzdCBpcyBzZXQgZm9yIGEgZmlsZSB0aGVuIEdpdCB3aWxsCiAJZXhwYW5kIHNldmVyYWwgcGxhY2Vob2xkZXJzIHdoZW4gYWRkaW5nIHRoaXMgZmlsZSB0byBhbiBhcmNoaXZlLgogCVNlZSBsaW5rZ2l0OmdpdGF0dHJpYnV0ZXNbNV0gZm9yIGRldGFpbHMuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWJpc2VjdC1sazIwMDkudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LWxrMjAwOS50eHQKaW5kZXggOGEyYmEzNy4uMGVlZDNlMyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LWxrMjAwOS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LWxrMjAwOS50eHQKQEAgLTIyNCw3ICsyMjQsNyBAQAogd2lsbCBiZSBsb29raW5nIGZvciB0aGUgZmlyc3QgY29tbWl0IHRoYXQgaGFzIGEgdmVyc2lvbiBsaWtlCiAiMi42LjI2LXNvbWV0aGluZyIsIHRoYXQgaXMgdGhlIGNvbW1pdCB0aGF0IGhhcyBhICJTVUJMRVZFTCA9IDI2IiBsaW5lCiBpbiB0aGUgdG9wIGxldmVsIE1ha2VmaWxlLiBUaGlzIGlzIGEgdG95IGV4YW1wbGUgYmVjYXVzZSB0aGVyZSBhcmUKLWJldHRlciB3YXlzIHRvIGZpbmQgdGhpcyBjb21taXQgd2l0aCBnaXQgdGhhbiB1c2luZyAiZ2l0IGJpc2VjdCIgKGZvcgorYmV0dGVyIHdheXMgdG8gZmluZCB0aGlzIGNvbW1pdCB3aXRoIEdpdCB0aGFuIHVzaW5nICJnaXQgYmlzZWN0IiAoZm9yCiBleGFtcGxlICJnaXQgYmxhbWUiIG9yICJnaXQgbG9nIC1TPHN0cmluZz4iKS4KIAogRHJpdmluZyBhIGJpc2VjdGlvbiBtYW51YWxseQpAQCAtMjU3LDcgKzI1Nyw3IEBACiAKICAgICBMaW51eCAyLjYuMjYtcmMxCiAKLToxMDA2NDQgMTAwNjQ0IDVjZjgyNTgxOTUzMzFhNGRiZGRkZmYwOGI4ZDY4NjQyNjM4ZWVhNTcgNDQ5Mjk4NGVmYzA5YWI3MmZmNjIxOWE3YmMyMWZiNmE5NTdjNGNkNSBNICAgICAgTWFrZWZpbGUKKzoxMDA2NDQgMTAwNjQ0IDVjZjgyNTgxLi4uIDQ0OTI5ODRlLi4uIE0gICAgICBNYWtlZmlsZQogLS0tLS0tLS0tLS0tLQogCiBBdCB0aGlzIHBvaW50IHdlIGNhbiBzZWUgd2hhdCB0aGUgY29tbWl0IGRvZXMsIGNoZWNrIGl0IG91dCAoaWYgaXQncwpAQCAtMzMxLDcgKzMzMSw3IEBACiAKICAgICBMaW51eCAyLjYuMjYtcmMxCiAKLToxMDA2NDQgMTAwNjQ0IDVjZjgyNTgxOTUzMzFhNGRiZGRkZmYwOGI4ZDY4NjQyNjM4ZWVhNTcgNDQ5Mjk4NGVmYzA5YWI3MmZmNjIxOWE3YmMyMWZiNmE5NTdjNGNkNSBNICAgICAgTWFrZWZpbGUKKzoxMDA2NDQgMTAwNjQ0IDVjZjgyNTgxLi4uIDQ0OTI5ODRlLi4uIE0gICAgICBNYWtlZmlsZQogYmlzZWN0IHJ1biBzdWNjZXNzCiAtLS0tLS0tLS0tLS0tCiAKQEAgLTQ1NSw3ICs0NTUsNyBAQAogaGF2ZSBiZWVuIHJlbW92ZWQgYnkgcnVsZXMgYSkgYW5kIGIpIHJlc3BlY3RpdmVseSwgYW5kIGJlY2F1c2UgY29tbWl0cwogRyBhcmUgcmVtb3ZlZCBieSBydWxlIGIpIHRvby4KIAotTm90ZSBmb3IgZ2l0IHVzZXJzLCB0aGF0IGl0IGlzIGVxdWl2YWxlbnQgYXMga2VlcGluZyBvbmx5IHRoZSBjb21taXQKK05vdGUgZm9yIEdpdCB1c2VycywgdGhhdCBpdCBpcyBlcXVpdmFsZW50IGFzIGtlZXBpbmcgb25seSB0aGUgY29tbWl0CiBnaXZlbiBieToKIAogLS0tLS0tLS0tLS0tLQpAQCAtNzEwLDggKzcxMCw4IEBACiBBZnRlciBzdGVwIDcpIChpbiB0aGUgc2tpcCBhbGdvcml0aG0pLCB3ZSBjb3VsZCBjaGVjayBpZiB0aGUgc2Vjb25kCiBjb21taXQgaGFzIGJlZW4gc2tpcHBlZCBhbmQgcmV0dXJuIGl0IGlmIGl0IGlzIG5vdCB0aGUgY2FzZS4gQW5kIGluCiBmYWN0IHRoYXQgd2FzIHRoZSBhbGdvcml0aG0gd2UgdXNlZCBmcm9tIHdoZW4gImdpdCBiaXNlY3Qgc2tpcCIgd2FzCi1kZXZlbG9wZWQgaW4gZ2l0IHZlcnNpb24gMS41LjQgKHJlbGVhc2VkIG9uIEZlYnJ1YXJ5IDFzdCAyMDA4KSB1bnRpbAotZ2l0IHZlcnNpb24gMS42LjQgKHJlbGVhc2VkIEp1bHkgMjl0aCAyMDA5KS4KK2RldmVsb3BlZCBpbiBHaXQgdmVyc2lvbiAxLjUuNCAocmVsZWFzZWQgb24gRmVicnVhcnkgMXN0IDIwMDgpIHVudGlsCitHaXQgdmVyc2lvbiAxLjYuNCAocmVsZWFzZWQgSnVseSAyOXRoIDIwMDkpLgogCiBCdXQgSW5nbyBNb2xuYXIgYW5kIEguIFBldGVyIEFudmluIChhbm90aGVyIHdlbGwga25vd24gbGludXgga2VybmVsCiBkZXZlbG9wZXIpIGJvdGggY29tcGxhaW5lZCB0aGF0IHNvbWV0aW1lcyB0aGUgYmVzdCBiaXNlY3Rpb24gcG9pbnRzCkBAIC0xMDI1LDEwICsxMDI1LDEwIEBACiBfX19fX19fX19fX19fCiBUbyBnaXZlIHNvbWUgaGFyZCBmaWd1cmVzLCB3ZSB1c2VkIHRvIGhhdmUgYW4gYXZlcmFnZSByZXBvcnQtdG8tZml4CiBjeWNsZSBvZiAxNDIuNiBob3VycyAoYWNjb3JkaW5nIHRvIG91ciBzb21ld2hhdCB3ZWlyZCBidWctdHJhY2tlcgotd2hpY2gganVzdCBtZWFzdXJlcyB3YWxsLWNsb2NrIHRpbWUpLiBTaW5jZSB3ZSBtb3ZlZCB0byBnaXQsIHdlJ3ZlCit3aGljaCBqdXN0IG1lYXN1cmVzIHdhbGwtY2xvY2sgdGltZSkuIFNpbmNlIHdlIG1vdmVkIHRvIEdpdCwgd2UndmUKIGxvd2VyZWQgdGhhdCB0byAxNi4yIGhvdXJzLiBQcmltYXJpbHkgYmVjYXVzZSB3ZSBjYW4gc3RheSBvbiB0b3Agb2YKIHRoZSBidWcgZml4aW5nIG5vdywgYW5kIGJlY2F1c2UgZXZlcnlvbmUncyBqb2NrZXlpbmcgdG8gZ2V0IHRvIGZpeAotYnVncyAod2UncmUgcXVpdGUgcHJvdWQgb2YgaG93IGxhenkgd2UgYXJlIHRvIGxldCBnaXQgZmluZCB0aGUgYnVncworYnVncyAod2UncmUgcXVpdGUgcHJvdWQgb2YgaG93IGxhenkgd2UgYXJlIHRvIGxldCBHaXQgZmluZCB0aGUgYnVncwogZm9yIHVzKS4gRWFjaCBuZXcgcmVsZWFzZSByZXN1bHRzIGluIH40MCUgZmV3ZXIgYnVncyAoYWxtb3N0IGNlcnRhaW5seQogZHVlIHRvIGhvdyB3ZSBub3cgZmVlbCBhYm91dCB3cml0aW5nIHRlc3RzKS4KIF9fX19fX19fX19fX18KQEAgLTEyMjgsOSArMTIyOCw5IEBACiBtZXNzYWdlIG9yIHRoZSBhdXRob3IuIEFuZCBpdCBjYW4gYWxzbyBiZSB1c2VkIGluc3RlYWQgb2YgZ2l0ICJncmFmdHMiCiB0byBsaW5rIGEgcmVwb3NpdG9yeSB3aXRoIGFub3RoZXIgb2xkIHJlcG9zaXRvcnkuCiAKLUluIGZhY3QgaXQncyB0aGlzIGxhc3QgZmVhdHVyZSB0aGF0ICJzb2xkIiBpdCB0byB0aGUgZ2l0IGNvbW11bml0eSwgc28KLWl0IGlzIG5vdyBpbiB0aGUgIm1hc3RlciIgYnJhbmNoIG9mIGdpdCdzIGdpdCByZXBvc2l0b3J5IGFuZCBpdCBzaG91bGQKLWJlIHJlbGVhc2VkIGluIGdpdCAxLjYuNSBpbiBPY3RvYmVyIG9yIE5vdmVtYmVyIDIwMDkuCitJbiBmYWN0IGl0J3MgdGhpcyBsYXN0IGZlYXR1cmUgdGhhdCAic29sZCIgaXQgdG8gdGhlIEdpdCBjb21tdW5pdHksIHNvCitpdCBpcyBub3cgaW4gdGhlICJtYXN0ZXIiIGJyYW5jaCBvZiBHaXQncyBHaXQgcmVwb3NpdG9yeSBhbmQgaXQgc2hvdWxkCitiZSByZWxlYXNlZCBpbiBHaXQgMS42LjUgaW4gT2N0b2JlciBvciBOb3ZlbWJlciAyMDA5LgogCiBPbmUgcHJvYmxlbSB3aXRoICJnaXQgcmVwbGFjZSIgaXMgdGhhdCBjdXJyZW50bHkgaXQgc3RvcmVzIGFsbCB0aGUKIHJlcGxhY2VtZW50cyByZWZzIGluICJyZWZzL3JlcGxhY2UvIiwgYnV0IGl0IHdvdWxkIGJlIHBlcmhhcHMgYmV0dGVyCkBAIC0xMzI0LDcgKzEzMjQsNyBAQAogLS0tLS0tLS0tLS0tLS0tLQogCiBNYW55IHRoYW5rcyB0byBKdW5pbyBIYW1hbm8gZm9yIGhpcyBoZWxwIGluIHJldmlld2luZyB0aGlzIHBhcGVyLCBmb3IKLXJldmlld2luZyB0aGUgcGF0Y2hlcyBJIHNlbnQgdG8gdGhlIGdpdCBtYWlsaW5nIGxpc3QsIGZvciBkaXNjdXNzaW5nCityZXZpZXdpbmcgdGhlIHBhdGNoZXMgSSBzZW50IHRvIHRoZSBHaXQgbWFpbGluZyBsaXN0LCBmb3IgZGlzY3Vzc2luZwogc29tZSBpZGVhcyBhbmQgaGVscGluZyBtZSBpbXByb3ZlIHRoZW0sIGZvciBpbXByb3ZpbmcgImdpdCBiaXNlY3QiIGEKIGxvdCBhbmQgZm9yIGhpcyBhd2Vzb21lIHdvcmsgaW4gbWFpbnRhaW5pbmcgYW5kIGRldmVsb3BpbmcgR2l0LgogCkBAIC0xMzM3LDcgKzEzMzcsNyBAQAogZXZhbmdlbGl6aW5nICJnaXQgYmlzZWN0IiwgR2l0IGFuZCBMaW51eC4KIAogTWFueSB0aGFua3MgdG8gdGhlIG1hbnkgb3RoZXIgZ3JlYXQgcGVvcGxlIHdobyBoZWxwZWQgb25lIHdheSBvcgotYW5vdGhlciB3aGVuIEkgd29ya2VkIG9uIGdpdCwgZXNwZWNpYWxseSB0byBBbmRyZWFzIEVyaWNzc29uLCBKb2hhbm5lcworYW5vdGhlciB3aGVuIEkgd29ya2VkIG9uIEdpdCwgZXNwZWNpYWxseSB0byBBbmRyZWFzIEVyaWNzc29uLCBKb2hhbm5lcwogU2NoaW5kZWxpbiwgSC4gUGV0ZXIgQW52aW4sIERhbmllbCBCYXJrYWxvdywgQmlsbCBMZWFyLCBKb2huIEhhd2xleSwKIFNoYXduIE8uIFBpZXJjZSwgSmVmZiBLaW5nLCBTYW0gVmlsYWluLCBKb24gU2V5bW91ci4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWJpc2VjdC50eHQKaW5kZXggZTRmNDZiYy4uZjk4NmM1YyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1iaXNlY3QudHh0CkBAIC04Myw3ICs4Myw3IEBACiB+fn5+fn5+fn5+fn4KIAogQWZ0ZXIgYSBiaXNlY3Qgc2Vzc2lvbiwgdG8gY2xlYW4gdXAgdGhlIGJpc2VjdGlvbiBzdGF0ZSBhbmQgcmV0dXJuIHRvCi10aGUgb3JpZ2luYWwgSEVBRCwgaXNzdWUgdGhlIGZvbGxvd2luZyBjb21tYW5kOgordGhlIG9yaWdpbmFsIEhFQUQgKGkuZS4sIHRvIHF1aXQgYmlzZWN0aW5nKSwgaXNzdWUgdGhlIGZvbGxvd2luZyBjb21tYW5kOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IGJpc2VjdCByZXNldApAQCAtMTY5LDE0ICsxNjksMTQgQEAKIEJpc2VjdCBza2lwCiB+fn5+fn5+fn5+fn4KIAotSW5zdGVhZCBvZiBjaG9vc2luZyBieSB5b3Vyc2VsZiBhIG5lYXJieSBjb21taXQsIHlvdSBjYW4gYXNrIGdpdAorSW5zdGVhZCBvZiBjaG9vc2luZyBieSB5b3Vyc2VsZiBhIG5lYXJieSBjb21taXQsIHlvdSBjYW4gYXNrIEdpdAogdG8gZG8gaXQgZm9yIHlvdSBieSBpc3N1aW5nIHRoZSBjb21tYW5kOgogCiAtLS0tLS0tLS0tLS0KICQgZ2l0IGJpc2VjdCBza2lwICAgICAgICAgICAgICAgICAjIEN1cnJlbnQgdmVyc2lvbiBjYW5ub3QgYmUgdGVzdGVkCiAtLS0tLS0tLS0tLS0KIAotQnV0IGdpdCBtYXkgZXZlbnR1YWxseSBiZSB1bmFibGUgdG8gdGVsbCB0aGUgZmlyc3QgYmFkIGNvbW1pdCBhbW9uZworQnV0IEdpdCBtYXkgZXZlbnR1YWxseSBiZSB1bmFibGUgdG8gdGVsbCB0aGUgZmlyc3QgYmFkIGNvbW1pdCBhbW9uZwogYSBiYWQgY29tbWl0IGFuZCBvbmUgb3IgbW9yZSBza2lwcGVkIGNvbW1pdHMuCiAKIFlvdSBjYW4gZXZlbiBza2lwIGEgcmFuZ2Ugb2YgY29tbWl0cywgaW5zdGVhZCBvZiBqdXN0IG9uZSBjb21taXQsCkBAIC0yODQsNiArMjg0LDcgQEAKIC0tLS0tLS0tLS0tLQogJCBnaXQgYmlzZWN0IHN0YXJ0IEhFQUQgdjEuMiAtLSAgICAgICMgSEVBRCBpcyBiYWQsIHYxLjIgaXMgZ29vZAogJCBnaXQgYmlzZWN0IHJ1biBtYWtlICAgICAgICAgICAgICAgICMgIm1ha2UiIGJ1aWxkcyB0aGUgYXBwCiskIGdpdCBiaXNlY3QgcmVzZXQgICAgICAgICAgICAgICAgICAgIyBxdWl0IHRoZSBiaXNlY3Qgc2Vzc2lvbgogLS0tLS0tLS0tLS0tCiAKICogQXV0b21hdGljYWxseSBiaXNlY3QgYSB0ZXN0IGZhaWx1cmUgYmV0d2VlbiBvcmlnaW4gYW5kIEhFQUQ6CkBAIC0yOTEsNiArMjkyLDcgQEAKIC0tLS0tLS0tLS0tLQogJCBnaXQgYmlzZWN0IHN0YXJ0IEhFQUQgb3JpZ2luIC0tICAgICMgSEVBRCBpcyBiYWQsIG9yaWdpbiBpcyBnb29kCiAkIGdpdCBiaXNlY3QgcnVuIG1ha2UgdGVzdCAgICAgICAgICAgIyAibWFrZSB0ZXN0IiBidWlsZHMgYW5kIHRlc3RzCiskIGdpdCBiaXNlY3QgcmVzZXQgICAgICAgICAgICAgICAgICAgIyBxdWl0IHRoZSBiaXNlY3Qgc2Vzc2lvbgogLS0tLS0tLS0tLS0tCiAKICogQXV0b21hdGljYWxseSBiaXNlY3QgYSBicm9rZW4gdGVzdCBjYXNlOgpAQCAtMzAyLDYgKzMwNCw3IEBACiB+L2NoZWNrX3Rlc3RfY2FzZS5zaCAgICAgICAgICAgICAgICAgIyBkb2VzIHRoZSB0ZXN0IGNhc2UgcGFzcz8KICQgZ2l0IGJpc2VjdCBzdGFydCBIRUFEIEhFQUR+MTAgLS0gICAjIGN1bHByaXQgaXMgYW1vbmcgdGhlIGxhc3QgMTAKICQgZ2l0IGJpc2VjdCBydW4gfi90ZXN0LnNoCiskIGdpdCBiaXNlY3QgcmVzZXQgICAgICAgICAgICAgICAgICAgIyBxdWl0IHRoZSBiaXNlY3Qgc2Vzc2lvbgogLS0tLS0tLS0tLS0tCiArCiBIZXJlIHdlIHVzZSBhICJ0ZXN0LnNoIiBjdXN0b20gc2NyaXB0LiBJbiB0aGlzIHNjcmlwdCwgaWYgIm1ha2UiCkBAIC0zNTEsNiArMzU0LDcgQEAKIC0tLS0tLS0tLS0tLQogJCBnaXQgYmlzZWN0IHN0YXJ0IEhFQUQgSEVBRH4xMCAtLSAgICMgY3VscHJpdCBpcyBhbW9uZyB0aGUgbGFzdCAxMAogJCBnaXQgYmlzZWN0IHJ1biBzaCAtYyAibWFrZSB8fCBleGl0IDEyNTsgfi9jaGVja190ZXN0X2Nhc2Uuc2giCiskIGdpdCBiaXNlY3QgcmVzZXQgICAgICAgICAgICAgICAgICAgIyBxdWl0IHRoZSBiaXNlY3Qgc2Vzc2lvbgogLS0tLS0tLS0tLS0tCiArCiBUaGlzIHNob3dzIHRoYXQgeW91IGNhbiBkbyB3aXRob3V0IGEgcnVuIHNjcmlwdCBpZiB5b3Ugd3JpdGUgdGhlIHRlc3QKQEAgLTM2OCw2ICszNzIsNyBAQAogCXJtIC1mIHRtcC4kJAogCXRlc3QgJHJjID0gMCcKIAorJCBnaXQgYmlzZWN0IHJlc2V0ICAgICAgICAgICAgICAgICAgICMgcXVpdCB0aGUgYmlzZWN0IHNlc3Npb24KIC0tLS0tLS0tLS0tLQogKwogSW4gdGhpcyBjYXNlLCB3aGVuICdnaXQgYmlzZWN0IHJ1bicgZmluaXNoZXMsIGJpc2VjdC9iYWQgd2lsbCByZWZlciB0byBhIGNvbW1pdCB0aGF0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1ibGFtZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1ibGFtZS50eHQKaW5kZXggN2VlOTIzNi4uOWEwNWMyYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYmxhbWUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWJsYW1lLnR4dApAQCAtMjAsMTEgKzIwLDE3IEBACiAKIFRoZSBjb21tYW5kIGNhbiBhbHNvIGxpbWl0IHRoZSByYW5nZSBvZiBsaW5lcyBhbm5vdGF0ZWQuCiAKK1RoZSBvcmlnaW4gb2YgbGluZXMgaXMgYXV0b21hdGljYWxseSBmb2xsb3dlZCBhY3Jvc3Mgd2hvbGUtZmlsZQorcmVuYW1lcyAoY3VycmVudGx5IHRoZXJlIGlzIG5vIG9wdGlvbiB0byB0dXJuIHRoZSByZW5hbWUtZm9sbG93aW5nCitvZmYpLiBUbyBmb2xsb3cgbGluZXMgbW92ZWQgZnJvbSBvbmUgZmlsZSB0byBhbm90aGVyLCBvciB0byBmb2xsb3cKK2xpbmVzIHRoYXQgd2VyZSBjb3BpZWQgYW5kIHBhc3RlZCBmcm9tIGFub3RoZXIgZmlsZSwgZXRjLiwgc2VlIHRoZQorYC1DYCBhbmQgYC1NYCBvcHRpb25zLgorCiBUaGUgcmVwb3J0IGRvZXMgbm90IHRlbGwgeW91IGFueXRoaW5nIGFib3V0IGxpbmVzIHdoaWNoIGhhdmUgYmVlbiBkZWxldGVkIG9yCiByZXBsYWNlZDsgeW91IG5lZWQgdG8gdXNlIGEgdG9vbCBzdWNoIGFzICdnaXQgZGlmZicgb3IgdGhlICJwaWNrYXhlIgogaW50ZXJmYWNlIGJyaWVmbHkgbWVudGlvbmVkIGluIHRoZSBmb2xsb3dpbmcgcGFyYWdyYXBoLgogCi1BcGFydCBmcm9tIHN1cHBvcnRpbmcgZmlsZSBhbm5vdGF0aW9uLCBnaXQgYWxzbyBzdXBwb3J0cyBzZWFyY2hpbmcgdGhlCitBcGFydCBmcm9tIHN1cHBvcnRpbmcgZmlsZSBhbm5vdGF0aW9uLCBHaXQgYWxzbyBzdXBwb3J0cyBzZWFyY2hpbmcgdGhlCiBkZXZlbG9wbWVudCBoaXN0b3J5IGZvciB3aGVuIGEgY29kZSBzbmlwcGV0IG9jY3VycmVkIGluIGEgY2hhbmdlLiBUaGlzIG1ha2VzIGl0CiBwb3NzaWJsZSB0byB0cmFjayB3aGVuIGEgY29kZSBzbmlwcGV0IHdhcyBhZGRlZCB0byBhIGZpbGUsIG1vdmVkIG9yIGNvcGllZAogYmV0d2VlbiBmaWxlcywgYW5kIGV2ZW50dWFsbHkgZGVsZXRlZCBvciByZXBsYWNlZC4gSXQgd29ya3MgYnkgc2VhcmNoaW5nIGZvcgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtYnJhbmNoLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWJyYW5jaC50eHQKaW5kZXggNDcyMzViZS4uYjdjYjYyNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYnJhbmNoLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1icmFuY2gudHh0CkBAIC0xMyw2ICsxMyw4IEBACiAJWy0tY29sdW1uWz08b3B0aW9ucz5dIHwgLS1uby1jb2x1bW5dCiAJWygtLW1lcmdlZCB8IC0tbm8tbWVyZ2VkIHwgLS1jb250YWlucykgWzxjb21taXQ+XV0gWzxwYXR0ZXJuPi4uLl0KICdnaXQgYnJhbmNoJyBbLS1zZXQtdXBzdHJlYW0gfCAtLXRyYWNrIHwgLS1uby10cmFja10gWy1sXSBbLWZdIDxicmFuY2huYW1lPiBbPHN0YXJ0LXBvaW50Pl0KKydnaXQgYnJhbmNoJyAoLS1zZXQtdXBzdHJlYW0tdG89PHVwc3RyZWFtPiB8IC11IDx1cHN0cmVhbT4pIFs8YnJhbmNobmFtZT5dCisnZ2l0IGJyYW5jaCcgLS11bnNldC11cHN0cmVhbSBbPGJyYW5jaG5hbWU+XQogJ2dpdCBicmFuY2gnICgtbSB8IC1NKSBbPG9sZGJyYW5jaD5dIDxuZXdicmFuY2g+CiAnZ2l0IGJyYW5jaCcgKC1kIHwgLUQpIFstcl0gPGJyYW5jaG5hbWU+Li4uCiAnZ2l0IGJyYW5jaCcgLS1lZGl0LWRlc2NyaXB0aW9uIFs8YnJhbmNobmFtZT5dCkBAIC0yMCwxMyArMjIsMTUgQEAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQogCi1XaXRoIG5vIGFyZ3VtZW50cywgZXhpc3RpbmcgYnJhbmNoZXMgYXJlIGxpc3RlZCBhbmQgdGhlIGN1cnJlbnQgYnJhbmNoIHdpbGwKLWJlIGhpZ2hsaWdodGVkIHdpdGggYW4gYXN0ZXJpc2suICBPcHRpb24gYC1yYCBjYXVzZXMgdGhlIHJlbW90ZS10cmFja2luZwotYnJhbmNoZXMgdG8gYmUgbGlzdGVkLCBhbmQgb3B0aW9uIGAtYWAgc2hvd3MgYm90aC4gVGhpcyBsaXN0IG1vZGUgaXMgYWxzbwotYWN0aXZhdGVkIGJ5IHRoZSBgLS1saXN0YCBvcHRpb24gKHNlZSBiZWxvdykuCi08cGF0dGVybj4gcmVzdHJpY3RzIHRoZSBvdXRwdXQgdG8gbWF0Y2hpbmcgYnJhbmNoZXMsIHRoZSBwYXR0ZXJuIGlzIGEgc2hlbGwKLXdpbGRjYXJkIChpLmUuLCBtYXRjaGVkIHVzaW5nIGZubWF0Y2goMykpLgotTXVsdGlwbGUgcGF0dGVybnMgbWF5IGJlIGdpdmVuOyBpZiBhbnkgb2YgdGhlbSBtYXRjaGVzLCB0aGUgYnJhbmNoIGlzIHNob3duLgorSWYgYC0tbGlzdGAgaXMgZ2l2ZW4sIG9yIGlmIHRoZXJlIGFyZSBubyBub24tb3B0aW9uIGFyZ3VtZW50cywgZXhpc3RpbmcKK2JyYW5jaGVzIGFyZSBsaXN0ZWQ7IHRoZSBjdXJyZW50IGJyYW5jaCB3aWxsIGJlIGhpZ2hsaWdodGVkIHdpdGggYW4KK2FzdGVyaXNrLiAgT3B0aW9uIGAtcmAgY2F1c2VzIHRoZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMgdG8gYmUgbGlzdGVkLAorYW5kIG9wdGlvbiBgLWFgIHNob3dzIGJvdGggbG9jYWwgYW5kIHJlbW90ZSBicmFuY2hlcy4gSWYgYSBgPHBhdHRlcm4+YAoraXMgZ2l2ZW4sIGl0IGlzIHVzZWQgYXMgYSBzaGVsbCB3aWxkY2FyZCB0byByZXN0cmljdCB0aGUgb3V0cHV0IHRvCittYXRjaGluZyBicmFuY2hlcy4gSWYgbXVsdGlwbGUgcGF0dGVybnMgYXJlIGdpdmVuLCBhIGJyYW5jaCBpcyBzaG93biBpZgoraXQgbWF0Y2hlcyBhbnkgb2YgdGhlIHBhdHRlcm5zLiAgTm90ZSB0aGF0IHdoZW4gcHJvdmlkaW5nIGEKK2A8cGF0dGVybj5gLCB5b3UgbXVzdCB1c2UgYC0tbGlzdGA7IG90aGVyd2lzZSB0aGUgY29tbWFuZCBpcyBpbnRlcnByZXRlZAorYXMgYnJhbmNoIGNyZWF0aW9uLgogCiBXaXRoIGAtLWNvbnRhaW5zYCwgc2hvd3Mgb25seSB0aGUgYnJhbmNoZXMgdGhhdCBjb250YWluIHRoZSBuYW1lZCBjb21taXQKIChpbiBvdGhlciB3b3JkcywgdGhlIGJyYW5jaGVzIHdob3NlIHRpcCBjb21taXRzIGFyZSBkZXNjZW5kYW50cyBvZiB0aGUKQEAgLTQzLDEyICs0NywxMiBAQAogd29ya2luZyB0cmVlIHRvIGl0OyB1c2UgImdpdCBjaGVja291dCA8bmV3YnJhbmNoPiIgdG8gc3dpdGNoIHRvIHRoZQogbmV3IGJyYW5jaC4KIAotV2hlbiBhIGxvY2FsIGJyYW5jaCBpcyBzdGFydGVkIG9mZiBhIHJlbW90ZS10cmFja2luZyBicmFuY2gsIGdpdCBzZXRzIHVwIHRoZQorV2hlbiBhIGxvY2FsIGJyYW5jaCBpcyBzdGFydGVkIG9mZiBhIHJlbW90ZS10cmFja2luZyBicmFuY2gsIEdpdCBzZXRzIHVwIHRoZQogYnJhbmNoIHNvIHRoYXQgJ2dpdCBwdWxsJyB3aWxsIGFwcHJvcHJpYXRlbHkgbWVyZ2UgZnJvbQogdGhlIHJlbW90ZS10cmFja2luZyBicmFuY2guIFRoaXMgYmVoYXZpb3IgbWF5IGJlIGNoYW5nZWQgdmlhIHRoZSBnbG9iYWwKIGBicmFuY2guYXV0b3NldHVwbWVyZ2VgIGNvbmZpZ3VyYXRpb24gZmxhZy4gVGhhdCBzZXR0aW5nIGNhbiBiZQogb3ZlcnJpZGRlbiBieSB1c2luZyB0aGUgYC0tdHJhY2tgIGFuZCBgLS1uby10cmFja2Agb3B0aW9ucywgYW5kCi1jaGFuZ2VkIGxhdGVyIHVzaW5nIGBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtYC4KK2NoYW5nZWQgbGF0ZXIgdXNpbmcgYGdpdCBicmFuY2ggLS1zZXQtdXBzdHJlYW0tdG9gLgogCiBXaXRoIGEgYC1tYCBvciBgLU1gIG9wdGlvbiwgPG9sZGJyYW5jaD4gd2lsbCBiZSByZW5hbWVkIHRvIDxuZXdicmFuY2g+LgogSWYgPG9sZGJyYW5jaD4gaGFkIGEgY29ycmVzcG9uZGluZyByZWZsb2csIGl0IGlzIHJlbmFtZWQgdG8gbWF0Y2gKQEAgLTEyOSwxMSArMTMzLDEzIEBACiAJdXNlIGBnaXQgYnJhbmNoIC0tbGlzdCA8cGF0dGVybj5gIHRvIGxpc3QgbWF0Y2hpbmcgYnJhbmNoZXMuCiAKIC12OjoKKy12djo6CiAtLXZlcmJvc2U6OgogCVdoZW4gaW4gbGlzdCBtb2RlLAogCXNob3cgc2hhMSBhbmQgY29tbWl0IHN1YmplY3QgbGluZSBmb3IgZWFjaCBoZWFkLCBhbG9uZyB3aXRoCiAJcmVsYXRpb25zaGlwIHRvIHVwc3RyZWFtIGJyYW5jaCAoaWYgYW55KS4gSWYgZ2l2ZW4gdHdpY2UsIHByaW50Ci0JdGhlIG5hbWUgb2YgdGhlIHVwc3RyZWFtIGJyYW5jaCwgYXMgd2VsbC4KKwl0aGUgbmFtZSBvZiB0aGUgdXBzdHJlYW0gYnJhbmNoLCBhcyB3ZWxsIChzZWUgYWxzbyBgZ2l0IHJlbW90ZQorCXNob3cgPHJlbW90ZT5gKS4KIAogLXE6OgogLS1xdWlldDo6CkBAIC0xNzMsMjEgKzE3OSwzMSBAQAogCWxpa2UgYC0tdHJhY2tgIHdvdWxkIHdoZW4gY3JlYXRpbmcgdGhlIGJyYW5jaCwgZXhjZXB0IHRoYXQgd2hlcmUKIAlicmFuY2ggcG9pbnRzIHRvIGlzIG5vdCBjaGFuZ2VkLgogCistdSA8dXBzdHJlYW0+OjoKKy0tc2V0LXVwc3RyZWFtLXRvPTx1cHN0cmVhbT46OgorCVNldCB1cCA8YnJhbmNobmFtZT4ncyB0cmFja2luZyBpbmZvcm1hdGlvbiBzbyA8dXBzdHJlYW0+IGlzCisJY29uc2lkZXJlZCA8YnJhbmNobmFtZT4ncyB1cHN0cmVhbSBicmFuY2guIElmIG5vIDxicmFuY2huYW1lPgorCWlzIHNwZWNpZmllZCwgdGhlbiBpdCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBicmFuY2guCisKKy0tdW5zZXQtdXBzdHJlYW06OgorCVJlbW92ZSB0aGUgdXBzdHJlYW0gaW5mb3JtYXRpb24gZm9yIDxicmFuY2huYW1lPi4gSWYgbm8gYnJhbmNoCisJaXMgc3BlY2lmaWVkIGl0IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGJyYW5jaC4KKwogLS1lZGl0LWRlc2NyaXB0aW9uOjoKIAlPcGVuIGFuIGVkaXRvciBhbmQgZWRpdCB0aGUgdGV4dCB0byBleHBsYWluIHdoYXQgdGhlIGJyYW5jaCBpcwogCWZvciwgdG8gYmUgdXNlZCBieSB2YXJpb3VzIG90aGVyIGNvbW1hbmRzIChlLmcuIGByZXF1ZXN0LXB1bGxgKS4KIAogLS1jb250YWlucyBbPGNvbW1pdD5dOjoKIAlPbmx5IGxpc3QgYnJhbmNoZXMgd2hpY2ggY29udGFpbiB0aGUgc3BlY2lmaWVkIGNvbW1pdCAoSEVBRAotCWlmIG5vdCBzcGVjaWZpZWQpLgorCWlmIG5vdCBzcGVjaWZpZWQpLiBJbXBsaWVzIGAtLWxpc3RgLgogCiAtLW1lcmdlZCBbPGNvbW1pdD5dOjoKIAlPbmx5IGxpc3QgYnJhbmNoZXMgd2hvc2UgdGlwcyBhcmUgcmVhY2hhYmxlIGZyb20gdGhlCi0Jc3BlY2lmaWVkIGNvbW1pdCAoSEVBRCBpZiBub3Qgc3BlY2lmaWVkKS4KKwlzcGVjaWZpZWQgY29tbWl0IChIRUFEIGlmIG5vdCBzcGVjaWZpZWQpLiBJbXBsaWVzIGAtLWxpc3RgLgogCiAtLW5vLW1lcmdlZCBbPGNvbW1pdD5dOjoKIAlPbmx5IGxpc3QgYnJhbmNoZXMgd2hvc2UgdGlwcyBhcmUgbm90IHJlYWNoYWJsZSBmcm9tIHRoZQotCXNwZWNpZmllZCBjb21taXQgKEhFQUQgaWYgbm90IHNwZWNpZmllZCkuCisJc3BlY2lmaWVkIGNvbW1pdCAoSEVBRCBpZiBub3Qgc3BlY2lmaWVkKS4gSW1wbGllcyBgLS1saXN0YC4KIAogPGJyYW5jaG5hbWU+OjoKIAlUaGUgbmFtZSBvZiB0aGUgYnJhbmNoIHRvIGNyZWF0ZSBvciBkZWxldGUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1idW5kbGUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYnVuZGxlLnR4dAppbmRleCAxNmE2YjBhLi4wNDE3NTYyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1idW5kbGUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWJ1bmRsZS50eHQKQEAgLTE5LDcgKzE5LDcgQEAKIAogU29tZSB3b3JrZmxvd3MgcmVxdWlyZSB0aGF0IG9uZSBvciBtb3JlIGJyYW5jaGVzIG9mIGRldmVsb3BtZW50IG9uIG9uZQogbWFjaGluZSBiZSByZXBsaWNhdGVkIG9uIGFub3RoZXIgbWFjaGluZSwgYnV0IHRoZSB0d28gbWFjaGluZXMgY2Fubm90Ci1iZSBkaXJlY3RseSBjb25uZWN0ZWQsIGFuZCB0aGVyZWZvcmUgdGhlIGludGVyYWN0aXZlIGdpdCBwcm90b2NvbHMgKGdpdCwKK2JlIGRpcmVjdGx5IGNvbm5lY3RlZCwgYW5kIHRoZXJlZm9yZSB0aGUgaW50ZXJhY3RpdmUgR2l0IHByb3RvY29scyAoZ2l0LAogc3NoLCByc3luYywgaHR0cCkgY2Fubm90IGJlIHVzZWQuICBUaGlzIGNvbW1hbmQgcHJvdmlkZXMgc3VwcG9ydCBmb3IKICdnaXQgZmV0Y2gnIGFuZCAnZ2l0IHB1bGwnIHRvIG9wZXJhdGUgYnkgcGFja2FnaW5nIG9iamVjdHMgYW5kIHJlZmVyZW5jZXMKIGluIGFuIGFyY2hpdmUgYXQgdGhlIG9yaWdpbmF0aW5nIG1hY2hpbmUsIHRoZW4gaW1wb3J0aW5nIHRob3NlIGludG8KQEAgLTExMiwxMyArMTEyLDEyIEBACiBtYWNoaW5lQSQgZ2l0IHRhZyAtZiBsYXN0UjJidW5kbGUgbWFzdGVyCiAtLS0tLS0tLS0tLS0tLS0tCiAKLVRoZW4geW91IHRyYW5zZmVyIGZpbGUuYnVuZGxlIHRvIHRoZSB0YXJnZXQgbWFjaGluZSBCLiBJZiB5b3UgYXJlIGNyZWF0aW5nCi10aGUgcmVwb3NpdG9yeSBvbiBtYWNoaW5lIEIsIHRoZW4geW91IGNhbiBjbG9uZSBmcm9tIHRoZSBidW5kbGUgYXMgaWYgaXQKLXdlcmUgYSByZW1vdGUgcmVwb3NpdG9yeSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGFuIGVtcHR5IHJlcG9zaXRvcnkgYW5kIHRoZW4KLXB1bGxpbmcgb3IgZmV0Y2hpbmcgb2JqZWN0cyBmcm9tIHRoZSBidW5kbGU6CitUaGVuIHlvdSB0cmFuc2ZlciBmaWxlLmJ1bmRsZSB0byB0aGUgdGFyZ2V0IG1hY2hpbmUgQi4gQmVjYXVzZSB0aGlzCitidW5kbGUgZG9lcyBub3QgcmVxdWlyZSBhbnkgZXhpc3Rpbmcgb2JqZWN0IHRvIGJlIGV4dHJhY3RlZCwgeW91IGNhbgorY3JlYXRlIGEgbmV3IHJlcG9zaXRvcnkgb24gbWFjaGluZSBCIGJ5IGNsb25pbmcgZnJvbSBpdDoKIAogLS0tLS0tLS0tLS0tLS0tLQotbWFjaGluZUIkIGdpdCBjbG9uZSAvaG9tZS9tZS90bXAvZmlsZS5idW5kbGUgUjIKK21hY2hpbmVCJCBnaXQgY2xvbmUgLWIgbWFzdGVyIC9ob21lL21lL3RtcC9maWxlLmJ1bmRsZSBSMgogLS0tLS0tLS0tLS0tLS0tLQogCiBUaGlzIHdpbGwgZGVmaW5lIGEgcmVtb3RlIGNhbGxlZCAib3JpZ2luIiBpbiB0aGUgcmVzdWx0aW5nIHJlcG9zaXRvcnkgdGhhdApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY2F0LWZpbGUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtY2F0LWZpbGUudHh0CmluZGV4IDJmYjk1YmIuLjMwZDU4NWEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNhdC1maWxlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jYXQtZmlsZS50eHQKQEAgLTIwLDcgKzIwLDcgQEAKICh3aGljaCBpbXBsaWVzIHR5cGUgImJsb2IiKS4KIAogSW4gdGhlIHNlY29uZCBmb3JtLCBhIGxpc3Qgb2Ygb2JqZWN0cyAoc2VwYXJhdGVkIGJ5IGxpbmVmZWVkcykgaXMgcHJvdmlkZWQgb24KLXN0ZGluLCBhbmQgdGhlIFNIQTEsIHR5cGUsIGFuZCBzaXplIG9mIGVhY2ggb2JqZWN0IGlzIHByaW50ZWQgb24gc3Rkb3V0Lgorc3RkaW4sIGFuZCB0aGUgU0hBLTEsIHR5cGUsIGFuZCBzaXplIG9mIGVhY2ggb2JqZWN0IGlzIHByaW50ZWQgb24gc3Rkb3V0LgogCiBPUFRJT05TCiAtLS0tLS0tCkBAIC01OCwxMSArNTgsMTEgQEAKIAl0byBhcHBseSB0aGUgZmlsdGVyIHRvIHRoZSBjb250ZW50IHJlY29yZGVkIGluIHRoZSBpbmRleCBhdCA8cGF0aD4uCiAKIC0tYmF0Y2g6OgotCVByaW50IHRoZSBTSEExLCB0eXBlLCBzaXplLCBhbmQgY29udGVudHMgb2YgZWFjaCBvYmplY3QgcHJvdmlkZWQgb24KKwlQcmludCB0aGUgU0hBLTEsIHR5cGUsIHNpemUsIGFuZCBjb250ZW50cyBvZiBlYWNoIG9iamVjdCBwcm92aWRlZCBvbgogCXN0ZGluLiBNYXkgbm90IGJlIGNvbWJpbmVkIHdpdGggYW55IG90aGVyIG9wdGlvbnMgb3IgYXJndW1lbnRzLgogCiAtLWJhdGNoLWNoZWNrOjoKLQlQcmludCB0aGUgU0hBMSwgdHlwZSwgYW5kIHNpemUgb2YgZWFjaCBvYmplY3QgcHJvdmlkZWQgb24gc3RkaW4uIE1heSBub3QKKwlQcmludCB0aGUgU0hBLTEsIHR5cGUsIGFuZCBzaXplIG9mIGVhY2ggb2JqZWN0IHByb3ZpZGVkIG9uIHN0ZGluLiBNYXkgbm90CiAJYmUgY29tYmluZWQgd2l0aCBhbnkgb3RoZXIgb3B0aW9ucyBvciBhcmd1bWVudHMuCiAKIE9VVFBVVApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2staWdub3JlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrLWlnbm9yZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y1NjAxYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrLWlnbm9yZS50eHQKQEAgLTAsMCArMSw4OSBAQAorZ2l0LWNoZWNrLWlnbm9yZSgxKQorPT09PT09PT09PT09PT09PT09PQorCitOQU1FCistLS0tCitnaXQtY2hlY2staWdub3JlIC0gRGVidWcgZ2l0aWdub3JlIC8gZXhjbHVkZSBmaWxlcworCisKK1NZTk9QU0lTCistLS0tLS0tLQorW3ZlcnNlXQorJ2dpdCBjaGVjay1pZ25vcmUnIFtvcHRpb25zXSBwYXRobmFtZS4uLgorJ2dpdCBjaGVjay1pZ25vcmUnIFtvcHRpb25zXSAtLXN0ZGluIDwgPGxpc3Qtb2YtcGF0aHM+CisKK0RFU0NSSVBUSU9OCistLS0tLS0tLS0tLQorCitGb3IgZWFjaCBwYXRobmFtZSBnaXZlbiB2aWEgdGhlIGNvbW1hbmQtbGluZSBvciBmcm9tIGEgZmlsZSB2aWEKK2AtLXN0ZGluYCwgc2hvdyB0aGUgcGF0dGVybiBmcm9tIC5naXRpZ25vcmUgKG9yIG90aGVyIGlucHV0IGZpbGVzIHRvCit0aGUgZXhjbHVkZSBtZWNoYW5pc20pIHRoYXQgZGVjaWRlcyBpZiB0aGUgcGF0aG5hbWUgaXMgZXhjbHVkZWQgb3IKK2luY2x1ZGVkLiAgTGF0ZXIgcGF0dGVybnMgd2l0aGluIGEgZmlsZSB0YWtlIHByZWNlZGVuY2Ugb3ZlciBlYXJsaWVyCitvbmVzLgorCitPUFRJT05TCistLS0tLS0tCistcSwgLS1xdWlldDo6CisJRG9uJ3Qgb3V0cHV0IGFueXRoaW5nLCBqdXN0IHNldCBleGl0IHN0YXR1cy4gIFRoaXMgaXMgb25seQorCXZhbGlkIHdpdGggYSBzaW5nbGUgcGF0aG5hbWUuCisKKy12LCAtLXZlcmJvc2U6OgorCUFsc28gb3V0cHV0IGRldGFpbHMgYWJvdXQgdGhlIG1hdGNoaW5nIHBhdHRlcm4gKGlmIGFueSkKKwlmb3IgZWFjaCBnaXZlbiBwYXRobmFtZS4KKworLS1zdGRpbjo6CisJUmVhZCBmaWxlIG5hbWVzIGZyb20gc3RkaW4gaW5zdGVhZCBvZiBmcm9tIHRoZSBjb21tYW5kLWxpbmUuCisKKy16OjoKKwlUaGUgb3V0cHV0IGZvcm1hdCBpcyBtb2RpZmllZCB0byBiZSBtYWNoaW5lLXBhcnNlYWJsZSAoc2VlCisJYmVsb3cpLiAgSWYgYC0tc3RkaW5gIGlzIGFsc28gZ2l2ZW4sIGlucHV0IHBhdGhzIGFyZSBzZXBhcmF0ZWQKKwl3aXRoIGEgTlVMIGNoYXJhY3RlciBpbnN0ZWFkIG9mIGEgbGluZWZlZWQgY2hhcmFjdGVyLgorCitPVVRQVVQKKy0tLS0tLQorCitCeSBkZWZhdWx0LCBhbnkgb2YgdGhlIGdpdmVuIHBhdGhuYW1lcyB3aGljaCBtYXRjaCBhbiBpZ25vcmUgcGF0dGVybgord2lsbCBiZSBvdXRwdXQsIG9uZSBwZXIgbGluZS4gIElmIG5vIHBhdHRlcm4gbWF0Y2hlcyBhIGdpdmVuIHBhdGgsCitub3RoaW5nIHdpbGwgYmUgb3V0cHV0IGZvciB0aGF0IHBhdGg7IHRoaXMgbWVhbnMgdGhhdCBwYXRoIHdpbGwgbm90IGJlCitpZ25vcmVkLgorCitJZiBgLS12ZXJib3NlYCBpcyBzcGVjaWZpZWQsIHRoZSBvdXRwdXQgaXMgYSBzZXJpZXMgb2YgbGluZXMgb2YgdGhlIGZvcm06CisKKzxzb3VyY2U+IDxDT0xPTj4gPGxpbmVudW0+IDxDT0xPTj4gPHBhdHRlcm4+IDxIVD4gPHBhdGhuYW1lPgorCis8cGF0aG5hbWU+IGlzIHRoZSBwYXRoIG9mIGEgZmlsZSBiZWluZyBxdWVyaWVkLCA8cGF0dGVybj4gaXMgdGhlCittYXRjaGluZyBwYXR0ZXJuLCA8c291cmNlPiBpcyB0aGUgcGF0dGVybidzIHNvdXJjZSBmaWxlLCBhbmQgPGxpbmVudW0+CitpcyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIHBhdHRlcm4gd2l0aGluIHRoYXQgc291cmNlLiAgSWYgdGhlIHBhdHRlcm4KK2NvbnRhaW5lZCBhIGAhYCBwcmVmaXggb3IgYC9gIHN1ZmZpeCwgaXQgd2lsbCBiZSBwcmVzZXJ2ZWQgaW4gdGhlCitvdXRwdXQuICA8c291cmNlPiB3aWxsIGJlIGFuIGFic29sdXRlIHBhdGggd2hlbiByZWZlcnJpbmcgdG8gdGhlIGZpbGUKK2NvbmZpZ3VyZWQgYnkgYGNvcmUuZXhjbHVkZXNmaWxlYCwgb3IgcmVsYXRpdmUgdG8gdGhlIHJlcG9zaXRvcnkgcm9vdAord2hlbiByZWZlcnJpbmcgdG8gYC5naXQvaW5mby9leGNsdWRlYCBvciBhIHBlci1kaXJlY3RvcnkgZXhjbHVkZSBmaWxlLgorCitJZiBgLXpgIGlzIHNwZWNpZmllZCwgdGhlIHBhdGhuYW1lcyBpbiB0aGUgb3V0cHV0IGFyZSBkZWxpbWl0ZWQgYnkgdGhlCitudWxsIGNoYXJhY3RlcjsgaWYgYC0tdmVyYm9zZWAgaXMgYWxzbyBzcGVjaWZpZWQgdGhlbiBudWxsIGNoYXJhY3RlcnMKK2FyZSBhbHNvIHVzZWQgaW5zdGVhZCBvZiBjb2xvbnMgYW5kIGhhcmQgdGFiczoKKworPHNvdXJjZT4gPE5VTEw+IDxsaW5lbnVtPiA8TlVMTD4gPHBhdHRlcm4+IDxOVUxMPiA8cGF0aG5hbWU+IDxOVUxMPgorCisKK0VYSVQgU1RBVFVTCistLS0tLS0tLS0tLQorCiswOjoKKwlPbmUgb3IgbW9yZSBvZiB0aGUgcHJvdmlkZWQgcGF0aHMgaXMgaWdub3JlZC4KKworMTo6CisJTm9uZSBvZiB0aGUgcHJvdmlkZWQgcGF0aHMgYXJlIGlnbm9yZWQuCisKKzEyODo6CisJQSBmYXRhbCBlcnJvciB3YXMgZW5jb3VudGVyZWQuCisKK1NFRSBBTFNPCistLS0tLS0tLQorbGlua2dpdDpnaXRpZ25vcmVbNV0KK2xpbmtnaXQ6Z2l0Y29uZmlnWzVdCitsaW5rZ2l0OmdpdC1scy1maWxlc1sxXQorCitHSVQKKy0tLQorUGFydCBvZiB0aGUgbGlua2dpdDpnaXRbMV0gc3VpdGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrLXJlZi1mb3JtYXQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2stcmVmLWZvcm1hdC50eHQKaW5kZXggOTgwMDlkMS4uYTQ5YmUxYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2stcmVmLWZvcm1hdC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2stcmVmLWZvcm1hdC50eHQKQEAgLTE4LDE0ICsxOCwxNCBAQAogQ2hlY2tzIGlmIGEgZ2l2ZW4gJ3JlZm5hbWUnIGlzIGFjY2VwdGFibGUsIGFuZCBleGl0cyB3aXRoIGEgbm9uLXplcm8KIHN0YXR1cyBpZiBpdCBpcyBub3QuCiAKLUEgcmVmZXJlbmNlIGlzIHVzZWQgaW4gZ2l0IHRvIHNwZWNpZnkgYnJhbmNoZXMgYW5kIHRhZ3MuICBBCitBIHJlZmVyZW5jZSBpcyB1c2VkIGluIEdpdCB0byBzcGVjaWZ5IGJyYW5jaGVzIGFuZCB0YWdzLiAgQQogYnJhbmNoIGhlYWQgaXMgc3RvcmVkIGluIHRoZSBgcmVmcy9oZWFkc2AgaGllcmFyY2h5LCB3aGlsZQogYSB0YWcgaXMgc3RvcmVkIGluIHRoZSBgcmVmcy90YWdzYCBoaWVyYXJjaHkgb2YgdGhlIHJlZiBuYW1lc3BhY2UKICh0eXBpY2FsbHkgaW4gYCRHSVRfRElSL3JlZnMvaGVhZHNgIGFuZCBgJEdJVF9ESVIvcmVmcy90YWdzYAogZGlyZWN0b3JpZXMgb3IsIGFzIGVudHJpZXMgaW4gZmlsZSBgJEdJVF9ESVIvcGFja2VkLXJlZnNgCiBpZiByZWZzIGFyZSBwYWNrZWQgYnkgYGdpdCBnY2ApLgogCi1naXQgaW1wb3NlcyB0aGUgZm9sbG93aW5nIHJ1bGVzIG9uIGhvdyByZWZlcmVuY2VzIGFyZSBuYW1lZDoKK0dpdCBpbXBvc2VzIHRoZSBmb2xsb3dpbmcgcnVsZXMgb24gaG93IHJlZmVyZW5jZXMgYXJlIG5hbWVkOgogCiAuIFRoZXkgY2FuIGluY2x1ZGUgc2xhc2ggYC9gIGZvciBoaWVyYXJjaGljYWwgKGRpcmVjdG9yeSkKICAgZ3JvdXBpbmcsIGJ1dCBubyBzbGFzaC1zZXBhcmF0ZWQgY29tcG9uZW50IGNhbiBiZWdpbiB3aXRoIGEKQEAgLTgzLDggKzgzLDcgQEAKIAogT1BUSU9OUwogLS0tLS0tLQotLS1hbGxvdy1vbmVsZXZlbDo6Ci0tLW5vLWFsbG93LW9uZWxldmVsOjoKKy0tW25vLV1hbGxvdy1vbmVsZXZlbDo6CiAJQ29udHJvbHMgd2hldGhlciBvbmUtbGV2ZWwgcmVmbmFtZXMgYXJlIGFjY2VwdGVkIChpLmUuLAogCXJlZm5hbWVzIHRoYXQgZG8gbm90IGNvbnRhaW4gbXVsdGlwbGUgYC9gLXNlcGFyYXRlZAogCWNvbXBvbmVudHMpLiAgVGhlIGRlZmF1bHQgaXMgYC0tbm8tYWxsb3ctb25lbGV2ZWxgLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2tvdXQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2tvdXQudHh0CmluZGV4IDYzYTI1MTYuLmNhMTE4YWMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrb3V0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jaGVja291dC50eHQKQEAgLTIxLDE4ICsyMSwzNCBAQAogYWxzbyB1cGRhdGUgYEhFQURgIHRvIHNldCB0aGUgc3BlY2lmaWVkIGJyYW5jaCBhcyB0aGUgY3VycmVudAogYnJhbmNoLgogCi0nZ2l0IGNoZWNrb3V0JyBbPGJyYW5jaD5dOjoKLSdnaXQgY2hlY2tvdXQnIC1ifC1CIDxuZXdfYnJhbmNoPiBbPHN0YXJ0IHBvaW50Pl06OgotJ2dpdCBjaGVja291dCcgWy0tZGV0YWNoXSBbPGNvbW1pdD5dOjoKLQotCVRoaXMgZm9ybSBzd2l0Y2hlcyBicmFuY2hlcyBieSB1cGRhdGluZyB0aGUgaW5kZXgsIHdvcmtpbmcKLQl0cmVlLCBhbmQgSEVBRCB0byByZWZsZWN0IHRoZSBzcGVjaWZpZWQgYnJhbmNoIG9yIGNvbW1pdC4KKydnaXQgY2hlY2tvdXQnIDxicmFuY2g+OjoKKwlUbyBwcmVwYXJlIGZvciB3b3JraW5nIG9uIDxicmFuY2g+LCBzd2l0Y2ggdG8gaXQgYnkgdXBkYXRpbmcKKwl0aGUgaW5kZXggYW5kIHRoZSBmaWxlcyBpbiB0aGUgd29ya2luZyB0cmVlLCBhbmQgYnkgcG9pbnRpbmcKKwlIRUFEIGF0IHRoZSBicmFuY2guIExvY2FsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGZpbGVzIGluIHRoZQorCXdvcmtpbmcgdHJlZSBhcmUga2VwdCwgc28gdGhhdCB0aGV5IGNhbiBiZSBjb21taXR0ZWQgdG8gdGhlCisJPGJyYW5jaD4uCiArCi1JZiBgLWJgIGlzIGdpdmVuLCBhIG5ldyBicmFuY2ggaXMgY3JlYXRlZCBhcyBpZiBsaW5rZ2l0OmdpdC1icmFuY2hbMV0KLXdlcmUgY2FsbGVkIGFuZCB0aGVuIGNoZWNrZWQgb3V0OyBpbiB0aGlzIGNhc2UgeW91IGNhbgotdXNlIHRoZSBgLS10cmFja2Agb3IgYC0tbm8tdHJhY2tgIG9wdGlvbnMsIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvCi0nZ2l0IGJyYW5jaCcuICBBcyBhIGNvbnZlbmllbmNlLCBgLS10cmFja2Agd2l0aG91dCBgLWJgIGltcGxpZXMgYnJhbmNoCi1jcmVhdGlvbjsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBgLS10cmFja2AgYmVsb3cuCitJZiA8YnJhbmNoPiBpcyBub3QgZm91bmQgYnV0IHRoZXJlIGRvZXMgZXhpc3QgYSB0cmFja2luZyBicmFuY2ggaW4KK2V4YWN0bHkgb25lIHJlbW90ZSAoY2FsbCBpdCA8cmVtb3RlPikgd2l0aCBhIG1hdGNoaW5nIG5hbWUsIHRyZWF0IGFzCitlcXVpdmFsZW50IHRvCisrCistLS0tLS0tLS0tLS0KKyQgZ2l0IGNoZWNrb3V0IC1iIDxicmFuY2g+IC0tdHJhY2sgPHJlbW90ZT4vPGJyYW5jaD4KKy0tLS0tLS0tLS0tLQorKworWW91IGNvdWxkIG9taXQgPGJyYW5jaD4sIGluIHdoaWNoIGNhc2UgdGhlIGNvbW1hbmQgZGVnZW5lcmF0ZXMgdG8KKyJjaGVjayBvdXQgdGhlIGN1cnJlbnQgYnJhbmNoIiwgd2hpY2ggaXMgYSBnbG9yaWZpZWQgbm8tb3Agd2l0aCBhCityYXRoZXIgZXhwZW5zaXZlIHNpZGUtZWZmZWN0cyB0byBzaG93IG9ubHkgdGhlIHRyYWNraW5nIGluZm9ybWF0aW9uLAoraWYgZXhpc3RzLCBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLgorCisnZ2l0IGNoZWNrb3V0JyAtYnwtQiA8bmV3X2JyYW5jaD4gWzxzdGFydCBwb2ludD5dOjoKKworCVNwZWNpZnlpbmcgYC1iYCBjYXVzZXMgYSBuZXcgYnJhbmNoIHRvIGJlIGNyZWF0ZWQgYXMgaWYKKwlsaW5rZ2l0OmdpdC1icmFuY2hbMV0gd2VyZSBjYWxsZWQgYW5kIHRoZW4gY2hlY2tlZCBvdXQuICBJbgorCXRoaXMgY2FzZSB5b3UgY2FuIHVzZSB0aGUgYC0tdHJhY2tgIG9yIGAtLW5vLXRyYWNrYCBvcHRpb25zLAorCXdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvICdnaXQgYnJhbmNoJy4gIEFzIGEgY29udmVuaWVuY2UsCisJYC0tdHJhY2tgIHdpdGhvdXQgYC1iYCBpbXBsaWVzIGJyYW5jaCBjcmVhdGlvbjsgc2VlIHRoZQorCWRlc2NyaXB0aW9uIG9mIGAtLXRyYWNrYCBiZWxvdy4KICsKIElmIGAtQmAgaXMgZ2l2ZW4sIDxuZXdfYnJhbmNoPiBpcyBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgZXhpc3Q7IG90aGVyd2lzZSwgaXQKIGlzIHJlc2V0LiBUaGlzIGlzIHRoZSB0cmFuc2FjdGlvbmFsIGVxdWl2YWxlbnQgb2YKQEAgLTQ1LDYgKzYxLDIxIEBACiB0aGF0IGlzIHRvIHNheSwgdGhlIGJyYW5jaCBpcyBub3QgcmVzZXQvY3JlYXRlZCB1bmxlc3MgImdpdCBjaGVja291dCIgaXMKIHN1Y2Nlc3NmdWwuCiAKKydnaXQgY2hlY2tvdXQnIC0tZGV0YWNoIFs8YnJhbmNoPl06OgorJ2dpdCBjaGVja291dCcgPGNvbW1pdD46OgorCisJUHJlcGFyZSB0byB3b3JrIG9uIHRvcCBvZiA8Y29tbWl0PiwgYnkgZGV0YWNoaW5nIEhFQUQgYXQgaXQKKwkoc2VlICJERVRBQ0hFRCBIRUFEIiBzZWN0aW9uKSwgYW5kIHVwZGF0aW5nIHRoZSBpbmRleCBhbmQgdGhlCisJZmlsZXMgaW4gdGhlIHdvcmtpbmcgdHJlZS4gIExvY2FsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGZpbGVzCisJaW4gdGhlIHdvcmtpbmcgdHJlZSBhcmUga2VwdCwgc28gdGhhdCB0aGUgcmVzdWx0aW5nIHdvcmtpbmcKKwl0cmVlIHdpbGwgYmUgdGhlIHN0YXRlIHJlY29yZGVkIGluIHRoZSBjb21taXQgcGx1cyB0aGUgbG9jYWwKKwltb2RpZmljYXRpb25zLgorKworUGFzc2luZyBgLS1kZXRhY2hgIGZvcmNlcyB0aGlzIGJlaGF2aW9yIGluIHRoZSBjYXNlIG9mIGEgPGJyYW5jaD4gKHdpdGhvdXQKK3RoZSBvcHRpb24sIGdpdmluZyBhIGJyYW5jaCBuYW1lIHRvIHRoZSBjb21tYW5kIHdvdWxkIGNoZWNrIG91dCB0aGUgYnJhbmNoLAoraW5zdGVhZCBvZiBkZXRhY2hpbmcgSEVBRCBhdCBpdCksIG9yIHRoZSBjdXJyZW50IGNvbW1pdCwKK2lmIG5vIDxicmFuY2g+IGlzIHNwZWNpZmllZC4KKwogJ2dpdCBjaGVja291dCcgWy1wfC0tcGF0Y2hdIFs8dHJlZS1pc2g+XSBbLS1dIDxwYXRoc3BlYz4uLi46OgogCiAJV2hlbiA8cGF0aHM+IG9yIGAtLXBhdGNoYCBhcmUgZ2l2ZW4sICdnaXQgY2hlY2tvdXQnIGRvZXMgKm5vdCoKQEAgLTg0LDExICsxMTUsMTEgQEAKIAlXaGVuIGNoZWNraW5nIG91dCBwYXRocyBmcm9tIHRoZSBpbmRleCwgY2hlY2sgb3V0IHN0YWdlICMyCiAJKCdvdXJzJykgb3IgIzMgKCd0aGVpcnMnKSBmb3IgdW5tZXJnZWQgcGF0aHMuCiAKLS1iOjoKKy1iIDxuZXdfYnJhbmNoPjo6CiAJQ3JlYXRlIGEgbmV3IGJyYW5jaCBuYW1lZCA8bmV3X2JyYW5jaD4gYW5kIHN0YXJ0IGl0IGF0CiAJPHN0YXJ0X3BvaW50Pjsgc2VlIGxpbmtnaXQ6Z2l0LWJyYW5jaFsxXSBmb3IgZGV0YWlscy4KIAotLUI6OgorLUIgPG5ld19icmFuY2g+OjoKIAlDcmVhdGVzIHRoZSBicmFuY2ggPG5ld19icmFuY2g+IGFuZCBzdGFydCBpdCBhdCA8c3RhcnRfcG9pbnQ+OwogCWlmIGl0IGFscmVhZHkgZXhpc3RzLCB0aGVuIHJlc2V0IGl0IHRvIDxzdGFydF9wb2ludD4uIFRoaXMgaXMKIAllcXVpdmFsZW50IHRvIHJ1bm5pbmcgImdpdCBicmFuY2giIHdpdGggIi1mIjsgc2VlCkBAIC0xMDAsOSArMTMxLDkgQEAKIAkiLS10cmFjayIgaW4gbGlua2dpdDpnaXQtYnJhbmNoWzFdIGZvciBkZXRhaWxzLgogKwogSWYgbm8gJy1iJyBvcHRpb24gaXMgZ2l2ZW4sIHRoZSBuYW1lIG9mIHRoZSBuZXcgYnJhbmNoIHdpbGwgYmUKLWRlcml2ZWQgZnJvbSB0aGUgcmVtb3RlLXRyYWNraW5nIGJyYW5jaC4gIElmICJyZW1vdGVzLyIgb3IgInJlZnMvcmVtb3Rlcy8iCi1pcyBwcmVmaXhlZCBpdCBpcyBzdHJpcHBlZCBhd2F5LCBhbmQgdGhlbiB0aGUgcGFydCB1cCB0byB0aGUKLW5leHQgc2xhc2ggKHdoaWNoIHdvdWxkIGJlIHRoZSBuaWNrbmFtZSBvZiB0aGUgcmVtb3RlKSBpcyByZW1vdmVkLgorZGVyaXZlZCBmcm9tIHRoZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoLCBieSBsb29raW5nIGF0IHRoZSBsb2NhbCBwYXJ0IG9mCit0aGUgcmVmc3BlYyBjb25maWd1cmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyByZW1vdGUsIGFuZCB0aGVuIHN0cmlwcGluZwordGhlIGluaXRpYWwgcGFydCB1cCB0byB0aGUgIioiLgogVGhpcyB3b3VsZCB0ZWxsIHVzIHRvIHVzZSAiaGFjayIgYXMgdGhlIGxvY2FsIGJyYW5jaCB3aGVuIGJyYW5jaGluZwogb2ZmIG9mICJvcmlnaW4vaGFjayIgKG9yICJyZW1vdGVzL29yaWdpbi9oYWNrIiwgb3IgZXZlbgogInJlZnMvcmVtb3Rlcy9vcmlnaW4vaGFjayIpLiAgSWYgdGhlIGdpdmVuIG5hbWUgaGFzIG5vIHNsYXNoLCBvciB0aGUgYWJvdmUKQEAgLTEyNCw3ICsxNTUsNyBAQAogCTxjb21taXQ+IGlzIG5vdCBhIGJyYW5jaCBuYW1lLiAgU2VlIHRoZSAiREVUQUNIRUQgSEVBRCIgc2VjdGlvbgogCWJlbG93IGZvciBkZXRhaWxzLgogCi0tLW9ycGhhbjo6CistLW9ycGhhbiA8bmV3X2JyYW5jaD46OgogCUNyZWF0ZSBhIG5ldyAnb3JwaGFuJyBicmFuY2gsIG5hbWVkIDxuZXdfYnJhbmNoPiwgc3RhcnRlZCBmcm9tCiAJPHN0YXJ0X3BvaW50PiBhbmQgc3dpdGNoIHRvIGl0LiAgVGhlIGZpcnN0IGNvbW1pdCBtYWRlIG9uIHRoaXMKIAluZXcgYnJhbmNoIHdpbGwgaGF2ZSBubyBwYXJlbnRzIGFuZCBpdCB3aWxsIGJlIHRoZSByb290IG9mIGEgbmV3CkBAIC0xNDksNiArMTgwLDEyIEBACiBBZnRlcndhcmRzIHlvdSB3aWxsIGJlIHJlYWR5IHRvIHByZXBhcmUgeW91ciBuZXcgZmlsZXMsIHJlcG9wdWxhdGluZyB0aGUKIHdvcmtpbmcgdHJlZSwgYnkgY29weWluZyB0aGVtIGZyb20gZWxzZXdoZXJlLCBleHRyYWN0aW5nIGEgdGFyYmFsbCwgZXRjLgogCistLWlnbm9yZS1za2lwLXdvcmt0cmVlLWJpdHM6OgorCUluIHNwYXJzZSBjaGVja291dCBtb2RlLCBgZ2l0IGNoZWNrb3V0IC0tIDxwYXRocz5gIHdvdWxkCisJdXBkYXRlIG9ubHkgZW50cmllcyBtYXRjaGVkIGJ5IDxwYXRocz4gYW5kIHNwYXJzZSBwYXR0ZXJucworCWluICRHSVRfRElSL2luZm8vc3BhcnNlLWNoZWNrb3V0LiBUaGlzIG9wdGlvbiBpZ25vcmVzCisJdGhlIHNwYXJzZSBwYXR0ZXJucyBhbmQgYWRkcyBiYWNrIGFueSBmaWxlcyBpbiA8cGF0aHM+LgorCiAtbTo6CiAtLW1lcmdlOjoKIAlXaGVuIHN3aXRjaGluZyBicmFuY2hlcywKQEAgLTMwMiw3ICszMzksNyBAQAogICB0YWcgJ3YyLjAnIChyZWZlcnMgdG8gY29tbWl0ICdiJykKIC0tLS0tLS0tLS0tLQogCi1JbiBmYWN0LCB3ZSBjYW4gcGVyZm9ybSBhbGwgdGhlIG5vcm1hbCBnaXQgb3BlcmF0aW9ucy4gQnV0LCBsZXQncyBsb29rCitJbiBmYWN0LCB3ZSBjYW4gcGVyZm9ybSBhbGwgdGhlIG5vcm1hbCBHaXQgb3BlcmF0aW9ucy4gQnV0LCBsZXQncyBsb29rCiBhdCB3aGF0IGhhcHBlbnMgd2hlbiB3ZSB0aGVuIGNoZWNrb3V0IG1hc3RlcjoKIAogLS0tLS0tLS0tLS0tCkBAIC0zMTksNyArMzU2LDcgQEAKIAogSXQgaXMgaW1wb3J0YW50IHRvIHJlYWxpemUgdGhhdCBhdCB0aGlzIHBvaW50IG5vdGhpbmcgcmVmZXJzIHRvIGNvbW1pdAogJ2YnLiBFdmVudHVhbGx5IGNvbW1pdCAnZicgKGFuZCBieSBleHRlbnNpb24gY29tbWl0ICdlJykgd2lsbCBiZSBkZWxldGVkCi1ieSB0aGUgcm91dGluZSBnaXQgZ2FyYmFnZSBjb2xsZWN0aW9uIHByb2Nlc3MsIHVubGVzcyB3ZSBjcmVhdGUgYSByZWZlcmVuY2UKK2J5IHRoZSByb3V0aW5lIEdpdCBnYXJiYWdlIGNvbGxlY3Rpb24gcHJvY2VzcywgdW5sZXNzIHdlIGNyZWF0ZSBhIHJlZmVyZW5jZQogYmVmb3JlIHRoYXQgaGFwcGVucy4gSWYgd2UgaGF2ZSBub3QgeWV0IG1vdmVkIGF3YXkgZnJvbSBjb21taXQgJ2YnLAogYW55IG9mIHRoZXNlIHdpbGwgY3JlYXRlIGEgcmVmZXJlbmNlIHRvIGl0OgogCkBAIC0zNjcsNiArNDA0LDE4IEBACiA8Mj4gdGFrZSBhIGZpbGUgb3V0IG9mIGFub3RoZXIgY29tbWl0CiA8Mz4gcmVzdG9yZSBoZWxsby5jIGZyb20gdGhlIGluZGV4CiArCitJZiB5b3Ugd2FudCB0byBjaGVjayBvdXQgX2FsbF8gQyBzb3VyY2UgZmlsZXMgb3V0IG9mIHRoZSBpbmRleCwKK3lvdSBjYW4gc2F5CisrCistLS0tLS0tLS0tLS0KKyQgZ2l0IGNoZWNrb3V0IC0tICcqLmMnCistLS0tLS0tLS0tLS0KKysKK05vdGUgdGhlIHF1b3RlcyBhcm91bmQgYCouY2AuICBUaGUgZmlsZSBgaGVsbG8uY2Agd2lsbCBhbHNvIGJlCitjaGVja2VkIG91dCwgZXZlbiB0aG91Z2ggaXQgaXMgbm8gbG9uZ2VyIGluIHRoZSB3b3JraW5nIHRyZWUsCitiZWNhdXNlIHRoZSBmaWxlIGdsb2JiaW5nIGlzIHVzZWQgdG8gbWF0Y2ggZW50cmllcyBpbiB0aGUgaW5kZXgKKyhub3QgaW4gdGhlIHdvcmtpbmcgdHJlZSBieSB0aGUgc2hlbGwpLgorKwogSWYgeW91IGhhdmUgYW4gdW5mb3J0dW5hdGUgYnJhbmNoIHRoYXQgaXMgbmFtZWQgYGhlbGxvLmNgLCB0aGlzCiBzdGVwIHdvdWxkIGJlIGNvbmZ1c2VkIGFzIGFuIGluc3RydWN0aW9uIHRvIHN3aXRjaCB0byB0aGF0IGJyYW5jaC4KIFlvdSBzaG91bGQgaW5zdGVhZCB3cml0ZToKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNoZXJyeS1waWNrLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNoZXJyeS1waWNrLnR4dAppbmRleCA5ZjNkYWU2Li5jMjA1ZDIzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jaGVycnktcGljay50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY2hlcnJ5LXBpY2sudHh0CkBAIC00Nyw3ICs0Nyw5IEBACiAJbGlua2dpdDpnaXRyZXZpc2lvbnNbN10uCiAJU2V0cyBvZiBjb21taXRzIGNhbiBiZSBwYXNzZWQgYnV0IG5vIHRyYXZlcnNhbCBpcyBkb25lIGJ5CiAJZGVmYXVsdCwgYXMgaWYgdGhlICctLW5vLXdhbGsnIG9wdGlvbiB3YXMgc3BlY2lmaWVkLCBzZWUKLQlsaW5rZ2l0OmdpdC1yZXYtbGlzdFsxXS4KKwlsaW5rZ2l0OmdpdC1yZXYtbGlzdFsxXS4gTm90ZSB0aGF0IHNwZWNpZnlpbmcgYSByYW5nZSB3aWxsCisJZmVlZCBhbGwgPGNvbW1pdD4uLi4gYXJndW1lbnRzIHRvIGEgc2luZ2xlIHJldmlzaW9uIHdhbGsKKwkoc2VlIGEgbGF0ZXIgZXhhbXBsZSB0aGF0IHVzZXMgJ21haW50IG1hc3Rlci4ubmV4dCcpLgogCiAtZTo6CiAtLWVkaXQ6OgpAQCAtMTE2LDYgKzExOCwxMSBAQAogCXByZXZpb3VzIGNvbW1pdCBhcmUgZHJvcHBlZC4gIFRvIGZvcmNlIHRoZSBpbmNsdXNpb24gb2YgdGhvc2UgY29tbWl0cwogCXVzZSBgLS1rZWVwLXJlZHVuZGFudC1jb21taXRzYC4KIAorLS1hbGxvdy1lbXB0eS1tZXNzYWdlOjoKKwlCeSBkZWZhdWx0LCBjaGVycnktcGlja2luZyBhIGNvbW1pdCB3aXRoIGFuIGVtcHR5IG1lc3NhZ2Ugd2lsbCBmYWlsLgorCVRoaXMgb3B0aW9uIG92ZXJyaWRlcyB0aGF0IGJlaGF2aW91ciwgYWxsb3dpbmcgY29tbWl0cyB3aXRoIGVtcHR5CisJbWVzc2FnZXMgdG8gYmUgY2hlcnJ5IHBpY2tlZC4KKwogLS1rZWVwLXJlZHVuZGFudC1jb21taXRzOjoKIAlJZiBhIGNvbW1pdCBiZWluZyBjaGVycnkgcGlja2VkIGR1cGxpY2F0ZXMgYSBjb21taXQgYWxyZWFkeSBpbiB0aGUKIAljdXJyZW50IGhpc3RvcnksIGl0IHdpbGwgYmVjb21lIGVtcHR5LiAgQnkgZGVmYXVsdCB0aGVzZQpAQCAtMTQ5LDYgKzE1NiwxNSBAQAogCUFwcGx5IHRoZSBjaGFuZ2VzIGludHJvZHVjZWQgYnkgYWxsIGNvbW1pdHMgdGhhdCBhcmUgYW5jZXN0b3JzCiAJb2YgbWFzdGVyIGJ1dCBub3Qgb2YgSEVBRCB0byBwcm9kdWNlIG5ldyBjb21taXRzLgogCitgZ2l0IGNoZXJyeS1waWNrIG1haW50IG5leHQgXm1hc3RlcmA6OgorYGdpdCBjaGVycnktcGljayBtYWludCBtYXN0ZXIuLm5leHRgOjoKKworCUFwcGx5IHRoZSBjaGFuZ2VzIGludHJvZHVjZWQgYnkgYWxsIGNvbW1pdHMgdGhhdCBhcmUKKwlhbmNlc3RvcnMgb2YgbWFpbnQgb3IgbmV4dCwgYnV0IG5vdCBtYXN0ZXIgb3IgYW55IG9mIGl0cworCWFuY2VzdG9ycy4gIE5vdGUgdGhhdCB0aGUgbGF0dGVyIGRvZXMgbm90IG1lYW4gYG1haW50YCBhbmQKKwlldmVyeXRoaW5nIGJldHdlZW4gYG1hc3RlcmAgYW5kIGBuZXh0YDsgc3BlY2lmaWNhbGx5LAorCWBtYWludGAgd2lsbCBub3QgYmUgdXNlZCBpZiBpdCBpcyBpbmNsdWRlZCBpbiBgbWFzdGVyYC4KKwogYGdpdCBjaGVycnktcGljayBtYXN0ZXJ+NCBtYXN0ZXJ+MmA6OgogCiAJQXBwbHkgdGhlIGNoYW5nZXMgaW50cm9kdWNlZCBieSB0aGUgZmlmdGggYW5kIHRoaXJkIGxhc3QKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNsZWFuLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNsZWFuLnR4dAppbmRleCA3OWZiOTg0Li5iZGMzYWI4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jbGVhbi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY2xlYW4udHh0CkBAIC0xNiw3ICsxNiw3IEBACiBDbGVhbnMgdGhlIHdvcmtpbmcgdHJlZSBieSByZWN1cnNpdmVseSByZW1vdmluZyBmaWxlcyB0aGF0IGFyZSBub3QKIHVuZGVyIHZlcnNpb24gY29udHJvbCwgc3RhcnRpbmcgZnJvbSB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAKLU5vcm1hbGx5LCBvbmx5IGZpbGVzIHVua25vd24gdG8gZ2l0IGFyZSByZW1vdmVkLCBidXQgaWYgdGhlICcteCcKK05vcm1hbGx5LCBvbmx5IGZpbGVzIHVua25vd24gdG8gR2l0IGFyZSByZW1vdmVkLCBidXQgaWYgdGhlICcteCcKIG9wdGlvbiBpcyBzcGVjaWZpZWQsIGlnbm9yZWQgZmlsZXMgYXJlIGFsc28gcmVtb3ZlZC4gVGhpcyBjYW4sIGZvcgogZXhhbXBsZSwgYmUgdXNlZnVsIHRvIHJlbW92ZSBhbGwgYnVpbGQgcHJvZHVjdHMuCiAKQEAgLTI3LDEzICsyNywxMyBAQAogLS0tLS0tLQogLWQ6OgogCVJlbW92ZSB1bnRyYWNrZWQgZGlyZWN0b3JpZXMgaW4gYWRkaXRpb24gdG8gdW50cmFja2VkIGZpbGVzLgotCUlmIGFuIHVudHJhY2tlZCBkaXJlY3RvcnkgaXMgbWFuYWdlZCBieSBhIGRpZmZlcmVudCBnaXQKKwlJZiBhbiB1bnRyYWNrZWQgZGlyZWN0b3J5IGlzIG1hbmFnZWQgYnkgYSBkaWZmZXJlbnQgR2l0CiAJcmVwb3NpdG9yeSwgaXQgaXMgbm90IHJlbW92ZWQgYnkgZGVmYXVsdC4gIFVzZSAtZiBvcHRpb24gdHdpY2UKIAlpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIHN1Y2ggYSBkaXJlY3RvcnkuCiAKIC1mOjoKIC0tZm9yY2U6OgotCUlmIHRoZSBnaXQgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBjbGVhbi5yZXF1aXJlRm9yY2UgaXMgbm90IHNldAorCUlmIHRoZSBHaXQgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBjbGVhbi5yZXF1aXJlRm9yY2UgaXMgbm90IHNldAogCXRvIGZhbHNlLCAnZ2l0IGNsZWFuJyB3aWxsIHJlZnVzZSB0byBydW4gdW5sZXNzIGdpdmVuIC1mIG9yIC1uLgogCiAtbjo6CkBAIC02MCw5ICs2MCwxMyBAQAogCXdvcmtpbmcgZGlyZWN0b3J5IHRvIHRlc3QgYSBjbGVhbiBidWlsZC4KIAogLVg6OgotCVJlbW92ZSBvbmx5IGZpbGVzIGlnbm9yZWQgYnkgZ2l0LiAgVGhpcyBtYXkgYmUgdXNlZnVsIHRvIHJlYnVpbGQKKwlSZW1vdmUgb25seSBmaWxlcyBpZ25vcmVkIGJ5IEdpdC4gIFRoaXMgbWF5IGJlIHVzZWZ1bCB0byByZWJ1aWxkCiAJZXZlcnl0aGluZyBmcm9tIHNjcmF0Y2gsIGJ1dCBrZWVwIG1hbnVhbGx5IGNyZWF0ZWQgZmlsZXMuCiAKK1NFRSBBTFNPCistLS0tLS0tLQorbGlua2dpdDpnaXRpZ25vcmVbNV0KKwogR0lUCiAtLS0KIFBhcnQgb2YgdGhlIGxpbmtnaXQ6Z2l0WzFdIHN1aXRlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1jbG9uZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jbG9uZS50eHQKaW5kZXggNmUyMjUyMi4uYTA3MjdkNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtY2xvbmUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWNsb25lLnR4dApAQCAtMTQsNyArMTQsNyBAQAogCSAgWy1vIDxuYW1lPl0gWy1iIDxuYW1lPl0gWy11IDx1cGxvYWQtcGFjaz5dIFstLXJlZmVyZW5jZSA8cmVwb3NpdG9yeT5dCiAJICBbLS1zZXBhcmF0ZS1naXQtZGlyIDxnaXQgZGlyPl0KIAkgIFstLWRlcHRoIDxkZXB0aD5dIFstLVtuby1dc2luZ2xlLWJyYW5jaF0KLQkgIFstLXJlY3Vyc2l2ZXwtLXJlY3Vyc2Utc3VibW9kdWxlc10gWy0tXSA8cmVwb3NpdG9yeT4KKwkgIFstLXJlY3Vyc2l2ZSB8IC0tcmVjdXJzZS1zdWJtb2R1bGVzXSBbLS1dIDxyZXBvc2l0b3J5PgogCSAgWzxkaXJlY3Rvcnk+XQogCiBERVNDUklQVElPTgpAQCAtMjksNyArMjksOCBAQAogQWZ0ZXIgdGhlIGNsb25lLCBhIHBsYWluIGBnaXQgZmV0Y2hgIHdpdGhvdXQgYXJndW1lbnRzIHdpbGwgdXBkYXRlCiBhbGwgdGhlIHJlbW90ZS10cmFja2luZyBicmFuY2hlcywgYW5kIGEgYGdpdCBwdWxsYCB3aXRob3V0CiBhcmd1bWVudHMgd2lsbCBpbiBhZGRpdGlvbiBtZXJnZSB0aGUgcmVtb3RlIG1hc3RlciBicmFuY2ggaW50byB0aGUKLWN1cnJlbnQgbWFzdGVyIGJyYW5jaCwgaWYgYW55LgorY3VycmVudCBtYXN0ZXIgYnJhbmNoLCBpZiBhbnkgKHRoaXMgaXMgdW50cnVlIHdoZW4gIi0tc2luZ2xlLWJyYW5jaCIKK2lzIGdpdmVuOyBzZWUgYmVsb3cpLgogCiBUaGlzIGRlZmF1bHQgY29uZmlndXJhdGlvbiBpcyBhY2hpZXZlZCBieSBjcmVhdGluZyByZWZlcmVuY2VzIHRvCiB0aGUgcmVtb3RlIGJyYW5jaCBoZWFkcyB1bmRlciBgcmVmcy9yZW1vdGVzL29yaWdpbmAgYW5kCkBAIC00MiwxNyArNDMsMjIgQEAKIC0tbG9jYWw6OgogLWw6OgogCVdoZW4gdGhlIHJlcG9zaXRvcnkgdG8gY2xvbmUgZnJvbSBpcyBvbiBhIGxvY2FsIG1hY2hpbmUsCi0JdGhpcyBmbGFnIGJ5cGFzc2VzIHRoZSBub3JtYWwgImdpdCBhd2FyZSIgdHJhbnNwb3J0CisJdGhpcyBmbGFnIGJ5cGFzc2VzIHRoZSBub3JtYWwgIkdpdCBhd2FyZSIgdHJhbnNwb3J0CiAJbWVjaGFuaXNtIGFuZCBjbG9uZXMgdGhlIHJlcG9zaXRvcnkgYnkgbWFraW5nIGEgY29weSBvZgogCUhFQUQgYW5kIGV2ZXJ5dGhpbmcgdW5kZXIgb2JqZWN0cyBhbmQgcmVmcyBkaXJlY3Rvcmllcy4KIAlUaGUgZmlsZXMgdW5kZXIgYC5naXQvb2JqZWN0cy9gIGRpcmVjdG9yeSBhcmUgaGFyZGxpbmtlZAotCXRvIHNhdmUgc3BhY2Ugd2hlbiBwb3NzaWJsZS4gIFRoaXMgaXMgbm93IHRoZSBkZWZhdWx0IHdoZW4KLQl0aGUgc291cmNlIHJlcG9zaXRvcnkgaXMgc3BlY2lmaWVkIHdpdGggYC9wYXRoL3RvL3JlcG9gCi0Jc3ludGF4LCBzbyBpdCBlc3NlbnRpYWxseSBpcyBhIG5vLW9wIG9wdGlvbi4gIFRvIGZvcmNlCi0JY29weWluZyBpbnN0ZWFkIG9mIGhhcmRsaW5raW5nICh3aGljaCBtYXkgYmUgZGVzaXJhYmxlCi0JaWYgeW91IGFyZSB0cnlpbmcgdG8gbWFrZSBhIGJhY2stdXAgb2YgeW91ciByZXBvc2l0b3J5KSwKLQlidXQgc3RpbGwgYXZvaWQgdGhlIHVzdWFsICJnaXQgYXdhcmUiIHRyYW5zcG9ydAotCW1lY2hhbmlzbSwgYC0tbm8taGFyZGxpbmtzYCBjYW4gYmUgdXNlZC4KKwl0byBzYXZlIHNwYWNlIHdoZW4gcG9zc2libGUuCisrCitJZiB0aGUgcmVwb3NpdG9yeSBpcyBzcGVjaWZpZWQgYXMgYSBsb2NhbCBwYXRoIChlLmcuLCBgL3BhdGgvdG8vcmVwb2ApLAordGhpcyBpcyB0aGUgZGVmYXVsdCwgYW5kIC0tbG9jYWwgaXMgZXNzZW50aWFsbHkgYSBuby1vcC4gIElmIHRoZQorcmVwb3NpdG9yeSBpcyBzcGVjaWZpZWQgYXMgYSBVUkwsIHRoZW4gdGhpcyBmbGFnIGlzIGlnbm9yZWQgKGFuZCB3ZQorbmV2ZXIgdXNlIHRoZSBsb2NhbCBvcHRpbWl6YXRpb25zKS4gIFNwZWNpZnlpbmcgYC0tbm8tbG9jYWxgIHdpbGwKK292ZXJyaWRlIHRoZSBkZWZhdWx0IHdoZW4gYC9wYXRoL3RvL3JlcG9gIGlzIGdpdmVuLCB1c2luZyB0aGUgcmVndWxhcgorR2l0IHRyYW5zcG9ydCBpbnN0ZWFkLgorKworVG8gZm9yY2UgY29weWluZyBpbnN0ZWFkIG9mIGhhcmRsaW5raW5nICh3aGljaCBtYXkgYmUgZGVzaXJhYmxlIGlmIHlvdQorYXJlIHRyeWluZyB0byBtYWtlIGEgYmFjay11cCBvZiB5b3VyIHJlcG9zaXRvcnkpLCBidXQgc3RpbGwgYXZvaWQgdGhlCit1c3VhbCAiR2l0IGF3YXJlIiB0cmFuc3BvcnQgbWVjaGFuaXNtLCBgLS1uby1oYXJkbGlua3NgIGNhbiBiZSB1c2VkLgogCiAtLW5vLWhhcmRsaW5rczo6CiAJT3B0aW1pemUgdGhlIGNsb25pbmcgcHJvY2VzcyBmcm9tIGEgcmVwb3NpdG9yeSBvbiBhCkBAIC03MCw5ICs3Niw5IEBACiAqTk9URSo6IHRoaXMgaXMgYSBwb3NzaWJseSBkYW5nZXJvdXMgb3BlcmF0aW9uOyBkbyAqbm90KiB1c2UKIGl0IHVubGVzcyB5b3UgdW5kZXJzdGFuZCB3aGF0IGl0IGRvZXMuIElmIHlvdSBjbG9uZSB5b3VyCiByZXBvc2l0b3J5IHVzaW5nIHRoaXMgb3B0aW9uIGFuZCB0aGVuIGRlbGV0ZSBicmFuY2hlcyAob3IgdXNlIGFueQotb3RoZXIgZ2l0IGNvbW1hbmQgdGhhdCBtYWtlcyBhbnkgZXhpc3RpbmcgY29tbWl0IHVucmVmZXJlbmNlZCkgaW4gdGhlCitvdGhlciBHaXQgY29tbWFuZCB0aGF0IG1ha2VzIGFueSBleGlzdGluZyBjb21taXQgdW5yZWZlcmVuY2VkKSBpbiB0aGUKIHNvdXJjZSByZXBvc2l0b3J5LCBzb21lIG9iamVjdHMgbWF5IGJlY29tZSB1bnJlZmVyZW5jZWQgKG9yIGRhbmdsaW5nKS4KLVRoZXNlIG9iamVjdHMgbWF5IGJlIHJlbW92ZWQgYnkgbm9ybWFsIGdpdCBvcGVyYXRpb25zIChzdWNoIGFzIGBnaXQgY29tbWl0YCkKK1RoZXNlIG9iamVjdHMgbWF5IGJlIHJlbW92ZWQgYnkgbm9ybWFsIEdpdCBvcGVyYXRpb25zIChzdWNoIGFzIGBnaXQgY29tbWl0YCkKIHdoaWNoIGF1dG9tYXRpY2FsbHkgY2FsbCBgZ2l0IGdjIC0tYXV0b2AuIChTZWUgbGlua2dpdDpnaXQtZ2NbMV0uKQogSWYgdGhlc2Ugb2JqZWN0cyBhcmUgcmVtb3ZlZCBhbmQgd2VyZSByZWZlcmVuY2VkIGJ5IHRoZSBjbG9uZWQgcmVwb3NpdG9yeSwKIHRoZW4gdGhlIGNsb25lZCByZXBvc2l0b3J5IHdpbGwgYmVjb21lIGNvcnJ1cHQuCkBAIC0xMTksNyArMTI1LDcgQEAKIAlObyBjaGVja291dCBvZiBIRUFEIGlzIHBlcmZvcm1lZCBhZnRlciB0aGUgY2xvbmUgaXMgY29tcGxldGUuCiAKIC0tYmFyZTo6Ci0JTWFrZSBhICdiYXJlJyBHSVQgcmVwb3NpdG9yeS4gIFRoYXQgaXMsIGluc3RlYWQgb2YKKwlNYWtlIGEgJ2JhcmUnIEdpdCByZXBvc2l0b3J5LiAgVGhhdCBpcywgaW5zdGVhZCBvZgogCWNyZWF0aW5nIGA8ZGlyZWN0b3J5PmAgYW5kIHBsYWNpbmcgdGhlIGFkbWluaXN0cmF0aXZlCiAJZmlsZXMgaW4gYDxkaXJlY3Rvcnk+Ly5naXRgLCBtYWtlIHRoZSBgPGRpcmVjdG9yeT5gCiAJaXRzZWxmIHRoZSBgJEdJVF9ESVJgLiBUaGlzIG9idmlvdXNseSBpbXBsaWVzIHRoZSBgLW5gCkBAIC0xNDcsOSArMTUzLDEwIEBACiAtYiA8bmFtZT46OgogCUluc3RlYWQgb2YgcG9pbnRpbmcgdGhlIG5ld2x5IGNyZWF0ZWQgSEVBRCB0byB0aGUgYnJhbmNoIHBvaW50ZWQKIAl0byBieSB0aGUgY2xvbmVkIHJlcG9zaXRvcnkncyBIRUFELCBwb2ludCB0byBgPG5hbWU+YCBicmFuY2gKLQlpbnN0ZWFkLiBgLS1icmFuY2hgIGNhbiBhbHNvIHRha2UgdGFncyBhbmQgdHJlYXQgdGhlbSBsaWtlCi0JZGV0YWNoZWQgSEVBRC4gSW4gYSBub24tYmFyZSByZXBvc2l0b3J5LCB0aGlzIGlzIHRoZSBicmFuY2gKLQl0aGF0IHdpbGwgYmUgY2hlY2tlZCBvdXQuCisJaW5zdGVhZC4gSW4gYSBub24tYmFyZSByZXBvc2l0b3J5LCB0aGlzIGlzIHRoZSBicmFuY2ggdGhhdCB3aWxsCisJYmUgY2hlY2tlZCBvdXQuCisJYC0tYnJhbmNoYCBjYW4gYWxzbyB0YWtlIHRhZ3MgYW5kIGRldGFjaGVzIHRoZSBIRUFEIGF0IHRoYXQgY29tbWl0CisJaW4gdGhlIHJlc3VsdGluZyByZXBvc2l0b3J5LgogCiAtLXVwbG9hZC1wYWNrIDx1cGxvYWQtcGFjaz46OgogLXUgPHVwbG9hZC1wYWNrPjo6CkBAIC0xODEsMTMgKzE4OCwxOCBAQAogCXdpdGggYSBsb25nIGhpc3RvcnksIGFuZCB3b3VsZCB3YW50IHRvIHNlbmQgaW4gZml4ZXMKIAlhcyBwYXRjaGVzLgogCi0tLXNpbmdsZS1icmFuY2g6OgorLS1bbm8tXXNpbmdsZS1icmFuY2g6OgogCUNsb25lIG9ubHkgdGhlIGhpc3RvcnkgbGVhZGluZyB0byB0aGUgdGlwIG9mIGEgc2luZ2xlIGJyYW5jaCwKIAllaXRoZXIgc3BlY2lmaWVkIGJ5IHRoZSBgLS1icmFuY2hgIG9wdGlvbiBvciB0aGUgcHJpbWFyeQogCWJyYW5jaCByZW1vdGUncyBgSEVBRGAgcG9pbnRzIGF0LiBXaGVuIGNyZWF0aW5nIGEgc2hhbGxvdwogCWNsb25lIHdpdGggdGhlIGAtLWRlcHRoYCBvcHRpb24sIHRoaXMgaXMgdGhlIGRlZmF1bHQsIHVubGVzcwogCWAtLW5vLXNpbmdsZS1icmFuY2hgIGlzIGdpdmVuIHRvIGZldGNoIHRoZSBoaXN0b3JpZXMgbmVhciB0aGUKIAl0aXBzIG9mIGFsbCBicmFuY2hlcy4KKwlGdXJ0aGVyIGZldGNoZXMgaW50byB0aGUgcmVzdWx0aW5nIHJlcG9zaXRvcnkgd2lsbCBvbmx5IHVwZGF0ZSB0aGUKKwlyZW1vdGUtdHJhY2tpbmcgYnJhbmNoIGZvciB0aGUgYnJhbmNoIHRoaXMgb3B0aW9uIHdhcyB1c2VkIGZvciB0aGUKKwlpbml0aWFsIGNsb25pbmcuICBJZiB0aGUgSEVBRCBhdCB0aGUgcmVtb3RlIGRpZCBub3QgcG9pbnQgYXQgYW55CisJYnJhbmNoIHdoZW4gYC0tc2luZ2xlLWJyYW5jaGAgY2xvbmUgd2FzIG1hZGUsIG5vIHJlbW90ZS10cmFja2luZworCWJyYW5jaCBpcyBjcmVhdGVkLgogCiAtLXJlY3Vyc2l2ZTo6CiAtLXJlY3Vyc2Utc3VibW9kdWxlczo6CkBAIC0yMDEsOCArMjEzLDggQEAKIC0tc2VwYXJhdGUtZ2l0LWRpcj08Z2l0IGRpcj46OgogCUluc3RlYWQgb2YgcGxhY2luZyB0aGUgY2xvbmVkIHJlcG9zaXRvcnkgd2hlcmUgaXQgaXMgc3VwcG9zZWQKIAl0byBiZSwgcGxhY2UgdGhlIGNsb25lZCByZXBvc2l0b3J5IGF0IHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5LAotCXRoZW4gbWFrZSBhIGZpbGVzeXRlbS1hZ25vc3RpYyBnaXQgc3ltYm9saWMgbGluayB0byB0aGVyZS4KLQlUaGUgcmVzdWx0IGlzIGdpdCByZXBvc2l0b3J5IGNhbiBiZSBzZXBhcmF0ZWQgZnJvbSB3b3JraW5nCisJdGhlbiBtYWtlIGEgZmlsZXN5dGVtLWFnbm9zdGljIEdpdCBzeW1ib2xpYyBsaW5rIHRvIHRoZXJlLgorCVRoZSByZXN1bHQgaXMgR2l0IHJlcG9zaXRvcnkgY2FuIGJlIHNlcGFyYXRlZCBmcm9tIHdvcmtpbmcKIAl0cmVlLgogCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNvbHVtbi50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jb2x1bW4udHh0CmluZGV4IDliZTE2ZWUuLjVkNmYxY2MgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNvbHVtbi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY29sdW1uLnR4dApAQCAtOSw3ICs5LDcgQEAKIC0tLS0tLS0tCiBbdmVyc2VdCiAnZ2l0IGNvbHVtbicgWy0tY29tbWFuZD08bmFtZT5dIFstLVtyYXctXW1vZGU9PG1vZGU+XSBbLS13aWR0aD08d2lkdGg+XQotCSAgICAgWy0taW5kZW50PTxzdHJpbmc+XSBbLS1ubD08c3RyaW5nPl0gWy0tcGFkaW5nPTxuPl0KKwkgICAgIFstLWluZGVudD08c3RyaW5nPl0gWy0tbmw9PHN0cmluZz5dIFstLXBhZGRpbmc9PG4+XQogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNvbW1pdC10cmVlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNvbW1pdC10cmVlLnR4dAppbmRleCBlYjhlZTk5Li5jYWZkYzk2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jb21taXQtdHJlZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY29tbWl0LXRyZWUudHh0CkBAIC0xMCw3ICsxMCw5IEBACiAtLS0tLS0tLQogW3ZlcnNlXQogJ2dpdCBjb21taXQtdHJlZScgPHRyZWU+IFsoLXAgPHBhcmVudD4pLi4uXSA8IGNoYW5nZWxvZwotJ2dpdCBjb21taXQtdHJlZScgWygtcCA8cGFyZW50PikuLi5dIFsoLW0gPG1lc3NhZ2U+KS4uLl0gWygtRiA8ZmlsZT4pLi4uXSA8dHJlZT4KKydnaXQgY29tbWl0LXRyZWUnIFsoLXAgPHBhcmVudD4pLi4uXSBbLVNbPGtleWlkPl1dIFsoLW0gPG1lc3NhZ2U+KS4uLl0KKwkJICBbKC1GIDxmaWxlPikuLi5dIDx0cmVlPgorCiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQpAQCAtMzAsNyArMzIsNyBAQAogZGlyZWN0b3J5LCBhIGNvbW1pdCByZXByZXNlbnRzIHRoYXQgc3RhdGUgaW4gInRpbWUiLCBhbmQgZXhwbGFpbnMgaG93CiB0byBnZXQgdGhlcmUuCiAKLU5vcm1hbGx5IGEgY29tbWl0IHdvdWxkIGlkZW50aWZ5IGEgbmV3ICJIRUFEIiBzdGF0ZSwgYW5kIHdoaWxlIGdpdAorTm9ybWFsbHkgYSBjb21taXQgd291bGQgaWRlbnRpZnkgYSBuZXcgIkhFQUQiIHN0YXRlLCBhbmQgd2hpbGUgR2l0CiBkb2Vzbid0IGNhcmUgd2hlcmUgeW91IHNhdmUgdGhlIG5vdGUgYWJvdXQgdGhhdCBzdGF0ZSwgaW4gcHJhY3RpY2Ugd2UKIHRlbmQgdG8ganVzdCB3cml0ZSB0aGUgcmVzdWx0IHRvIHRoZSBmaWxlIHRoYXQgaXMgcG9pbnRlZCBhdCBieQogYC5naXQvSEVBRGAsIHNvIHRoYXQgd2UgY2FuIGFsd2F5cyBzZWUgd2hhdCB0aGUgbGFzdCBjb21taXR0ZWQKQEAgLTQ1LDEzICs0NywxNiBAQAogCUVhY2ggJy1wJyBpbmRpY2F0ZXMgdGhlIGlkIG9mIGEgcGFyZW50IGNvbW1pdCBvYmplY3QuCiAKIC1tIDxtZXNzYWdlPjo6Ci0JQSBwYXJhZ3JhcGggaW4gdGhlIGNvbW1pZyBsb2cgbWVzc2FnZS4gVGhpcyBjYW4gYmUgZ2l2ZW4gbW9yZSB0aGFuCisJQSBwYXJhZ3JhcGggaW4gdGhlIGNvbW1pdCBsb2cgbWVzc2FnZS4gVGhpcyBjYW4gYmUgZ2l2ZW4gbW9yZSB0aGFuCiAJb25jZSBhbmQgZWFjaCA8bWVzc2FnZT4gYmVjb21lcyBpdHMgb3duIHBhcmFncmFwaC4KIAogLUYgPGZpbGU+OjoKIAlSZWFkIHRoZSBjb21taXQgbG9nIG1lc3NhZ2UgZnJvbSB0aGUgZ2l2ZW4gZmlsZS4gVXNlIGAtYCB0byByZWFkCiAJZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQuCiAKKy1TWzxrZXlpZD5dOjoKKwlHUEctc2lnbiBjb21taXQuCisKIAogQ29tbWl0IEluZm9ybWF0aW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTcyLDEzICs3NywxMyBAQAogCUdJVF9DT01NSVRURVJfTkFNRQogCUdJVF9DT01NSVRURVJfRU1BSUwKIAlHSVRfQ09NTUlUVEVSX0RBVEUKLQlFTUFJTAogCiAobmIgIjwiLCAiPiIgYW5kICJcbiJzIGFyZSBzdHJpcHBlZCkKIAogSW4gY2FzZSAoc29tZSBvZikgdGhlc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBub3Qgc2V0LCB0aGUgaW5mb3JtYXRpb24KIGlzIHRha2VuIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNlci5uYW1lIGFuZCB1c2VyLmVtYWlsLCBvciwgaWYgbm90Ci1wcmVzZW50LCBzeXN0ZW0gdXNlciBuYW1lIGFuZCB0aGUgaG9zdG5hbWUgdXNlZCBmb3Igb3V0Z29pbmcgbWFpbCAodGFrZW4KK3ByZXNlbnQsIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBFTUFJTCwgb3IsIGlmIHRoYXQgaXMgbm90IHNldCwKK3N5c3RlbSB1c2VyIG5hbWUgYW5kIHRoZSBob3N0bmFtZSB1c2VkIGZvciBvdXRnb2luZyBtYWlsICh0YWtlbgogZnJvbSBgL2V0Yy9tYWlsbmFtZWAgYW5kIGZhbGxpbmcgYmFjayB0byB0aGUgZnVsbHkgcXVhbGlmaWVkIGhvc3RuYW1lIHdoZW4KIHRoYXQgZmlsZSBkb2VzIG5vdCBleGlzdCkuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNvbW1pdC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jb21taXQudHh0CmluZGV4IDJkNjk1ZjYuLjFhNzYxNmMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNvbW1pdC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY29tbWl0LnR4dApAQCAtMTIsOCArMTIsOCBAQAogCSAgIFstLWRyeS1ydW5dIFsoLWMgfCAtQyB8IC0tZml4dXAgfCAtLXNxdWFzaCkgPGNvbW1pdD5dCiAJICAgWy1GIDxmaWxlPiB8IC1tIDxtc2c+XSBbLS1yZXNldC1hdXRob3JdIFstLWFsbG93LWVtcHR5XQogCSAgIFstLWFsbG93LWVtcHR5LW1lc3NhZ2VdIFstLW5vLXZlcmlmeV0gWy1lXSBbLS1hdXRob3I9PGF1dGhvcj5dCi0JICAgWy0tZGF0ZT08ZGF0ZT5dIFstLWNsZWFudXA9PG1vZGU+XSBbLS1zdGF0dXMgfCAtLW5vLXN0YXR1c10KLQkgICBbLWkgfCAtb10gWy0tXSBbPGZpbGU+Li4uXQorCSAgIFstLWRhdGU9PGRhdGU+XSBbLS1jbGVhbnVwPTxtb2RlPl0gWy0tW25vLV1zdGF0dXNdCisJICAgWy1pIHwgLW9dIFstU1s8a2V5aWQ+XV0gWy0tXSBbPGZpbGU+Li4uXQogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KQEAgLTMyLDcgKzMyLDcgQEAKIDMuIGJ5IGxpc3RpbmcgZmlsZXMgYXMgYXJndW1lbnRzIHRvIHRoZSAnY29tbWl0JyBjb21tYW5kLCBpbiB3aGljaAogICAgY2FzZSB0aGUgY29tbWl0IHdpbGwgaWdub3JlIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleCwgYW5kIGluc3RlYWQKICAgIHJlY29yZCB0aGUgY3VycmVudCBjb250ZW50IG9mIHRoZSBsaXN0ZWQgZmlsZXMgKHdoaWNoIG11c3QgYWxyZWFkeQotICAgYmUga25vd24gdG8gZ2l0KTsKKyAgIGJlIGtub3duIHRvIEdpdCk7CiAKIDQuIGJ5IHVzaW5nIHRoZSAtYSBzd2l0Y2ggd2l0aCB0aGUgJ2NvbW1pdCcgY29tbWFuZCB0byBhdXRvbWF0aWNhbGx5CiAgICAiYWRkIiBjaGFuZ2VzIGZyb20gYWxsIGtub3duIGZpbGVzIChpLmUuIGFsbCBmaWxlcyB0aGF0IGFyZSBhbHJlYWR5CkBAIC01OSw3ICs1OSw3IEBACiAtLWFsbDo6CiAJVGVsbCB0aGUgY29tbWFuZCB0byBhdXRvbWF0aWNhbGx5IHN0YWdlIGZpbGVzIHRoYXQgaGF2ZQogCWJlZW4gbW9kaWZpZWQgYW5kIGRlbGV0ZWQsIGJ1dCBuZXcgZmlsZXMgeW91IGhhdmUgbm90Ci0JdG9sZCBnaXQgYWJvdXQgYXJlIG5vdCBhZmZlY3RlZC4KKwl0b2xkIEdpdCBhYm91dCBhcmUgbm90IGFmZmVjdGVkLgogCiAtcDo6CiAtLXBhdGNoOjoKQEAgLTEwMSwxMiArMTAxLDIwIEBACiAJV2hlbiBkb2luZyBhIGRyeS1ydW4sIGdpdmUgdGhlIG91dHB1dCBpbiB0aGUgc2hvcnQtZm9ybWF0LiBTZWUKIAlsaW5rZ2l0OmdpdC1zdGF0dXNbMV0gZm9yIGRldGFpbHMuIEltcGxpZXMgYC0tZHJ5LXJ1bmAuCiAKKy0tYnJhbmNoOjoKKwlTaG93IHRoZSBicmFuY2ggYW5kIHRyYWNraW5nIGluZm8gZXZlbiBpbiBzaG9ydC1mb3JtYXQuCisKIC0tcG9yY2VsYWluOjoKIAlXaGVuIGRvaW5nIGEgZHJ5LXJ1biwgZ2l2ZSB0aGUgb3V0cHV0IGluIGEgcG9yY2VsYWluLXJlYWR5CiAJZm9ybWF0LiBTZWUgbGlua2dpdDpnaXQtc3RhdHVzWzFdIGZvciBkZXRhaWxzLiBJbXBsaWVzCiAJYC0tZHJ5LXJ1bmAuCiAKKy0tbG9uZzo6CisJV2hlbiBkb2luZyBhIGRyeS1ydW4sIGdpdmUgdGhlIG91dHB1dCBpbiBhIHRoZSBsb25nLWZvcm1hdC4KKwlJbXBsaWVzIGAtLWRyeS1ydW5gLgorCiAtejo6CistLW51bGw6OgogCVdoZW4gc2hvd2luZyBgc2hvcnRgIG9yIGBwb3JjZWxhaW5gIHN0YXR1cyBvdXRwdXQsIHRlcm1pbmF0ZQogCWVudHJpZXMgaW4gdGhlIHN0YXR1cyBvdXRwdXQgd2l0aCBOVUwsIGluc3RlYWQgb2YgTEYuIElmIG5vCiAJZm9ybWF0IGlzIGdpdmVuLCBpbXBsaWVzIHRoZSBgLS1wb3JjZWxhaW5gIG91dHB1dCBmb3JtYXQuCkBAIC0xMjksNiArMTM3LDggQEAKIC1tIDxtc2c+OjoKIC0tbWVzc2FnZT08bXNnPjo6CiAJVXNlIHRoZSBnaXZlbiA8bXNnPiBhcyB0aGUgY29tbWl0IG1lc3NhZ2UuCisJSWYgbXVsdGlwbGUgYC1tYCBvcHRpb25zIGFyZSBnaXZlbiwgdGhlaXIgdmFsdWVzIGFyZQorCWNvbmNhdGVuYXRlZCBhcyBzZXBhcmF0ZSBwYXJhZ3JhcGhzLgogCiAtdCA8ZmlsZT46OgogLS10ZW1wbGF0ZT08ZmlsZT46OgpAQCAtMTY0LDMxICsxNzQsNDggQEAKICAgICAgICBsaW5rZ2l0OmdpdC1jb21taXQtdHJlZVsxXS4KIAogLS1jbGVhbnVwPTxtb2RlPjo6Ci0JVGhpcyBvcHRpb24gc2V0cyBob3cgdGhlIGNvbW1pdCBtZXNzYWdlIGlzIGNsZWFuZWQgdXAuCi0JVGhlICAnPG1vZGU+JyBjYW4gYmUgb25lIG9mICd2ZXJiYXRpbScsICd3aGl0ZXNwYWNlJywgJ3N0cmlwJywKLQlhbmQgJ2RlZmF1bHQnLiBUaGUgJ2RlZmF1bHQnIG1vZGUgd2lsbCBzdHJpcCBsZWFkaW5nIGFuZAotCXRyYWlsaW5nIGVtcHR5IGxpbmVzIGFuZCAjY29tbWVudGFyeSBmcm9tIHRoZSBjb21taXQgbWVzc2FnZQotCW9ubHkgaWYgdGhlIG1lc3NhZ2UgaXMgdG8gYmUgZWRpdGVkLiBPdGhlcndpc2Ugb25seSB3aGl0ZXNwYWNlCi0JcmVtb3ZlZC4gVGhlICd2ZXJiYXRpbScgbW9kZSBkb2VzIG5vdCBjaGFuZ2UgbWVzc2FnZSBhdCBhbGwsCi0JJ3doaXRlc3BhY2UnIHJlbW92ZXMganVzdCBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UgbGluZXMKLQlhbmQgJ3N0cmlwJyByZW1vdmVzIGJvdGggd2hpdGVzcGFjZSBhbmQgY29tbWVudGFyeS4KKwlUaGlzIG9wdGlvbiBkZXRlcm1pbmVzIGhvdyB0aGUgc3VwcGxpZWQgY29tbWl0IG1lc3NhZ2Ugc2hvdWxkIGJlCisJY2xlYW5lZCB1cCBiZWZvcmUgY29tbWl0dGluZy4gIFRoZSAnPG1vZGU+JyBjYW4gYmUgYHN0cmlwYCwKKwlgd2hpdGVzcGFjZWAsIGB2ZXJiYXRpbWAsIG9yIGBkZWZhdWx0YC4KKysKKy0tCitzdHJpcDo6CisJU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgZW1wdHkgbGluZXMsIHRyYWlsaW5nIHdoaXRlc3BhY2UsIGFuZAorCSNjb21tZW50YXJ5IGFuZCBjb2xsYXBzZSBjb25zZWN1dGl2ZSBlbXB0eSBsaW5lcy4KK3doaXRlc3BhY2U6OgorCVNhbWUgYXMgYHN0cmlwYCBleGNlcHQgI2NvbW1lbnRhcnkgaXMgbm90IHJlbW92ZWQuCit2ZXJiYXRpbTo6CisJRG8gbm90IGNoYW5nZSB0aGUgbWVzc2FnZSBhdCBhbGwuCitkZWZhdWx0OjoKKwlTYW1lIGFzIGBzdHJpcGAgaWYgdGhlIG1lc3NhZ2UgaXMgdG8gYmUgZWRpdGVkLgorCU90aGVyd2lzZSBgd2hpdGVzcGFjZWAuCistLQorKworVGhlIGRlZmF1bHQgY2FuIGJlIGNoYW5nZWQgYnkgdGhlICdjb21taXQuY2xlYW51cCcgY29uZmlndXJhdGlvbgordmFyaWFibGUgKHNlZSBsaW5rZ2l0OmdpdC1jb25maWdbMV0pLgogCiAtZTo6CiAtLWVkaXQ6OgogCVRoZSBtZXNzYWdlIHRha2VuIGZyb20gZmlsZSB3aXRoIGAtRmAsIGNvbW1hbmQgbGluZSB3aXRoCi0JYC1tYCwgYW5kIGZyb20gZmlsZSB3aXRoIGAtQ2AgYXJlIHVzdWFsbHkgdXNlZCBhcyB0aGUKLQljb21taXQgbG9nIG1lc3NhZ2UgdW5tb2RpZmllZC4gIFRoaXMgb3B0aW9uIGxldHMgeW91CisJYC1tYCwgYW5kIGZyb20gY29tbWl0IG9iamVjdCB3aXRoIGAtQ2AgYXJlIHVzdWFsbHkgdXNlZCBhcworCXRoZSBjb21taXQgbG9nIG1lc3NhZ2UgdW5tb2RpZmllZC4gVGhpcyBvcHRpb24gbGV0cyB5b3UKIAlmdXJ0aGVyIGVkaXQgdGhlIG1lc3NhZ2UgdGFrZW4gZnJvbSB0aGVzZSBzb3VyY2VzLgogCistLW5vLWVkaXQ6OgorCVVzZSB0aGUgc2VsZWN0ZWQgY29tbWl0IG1lc3NhZ2Ugd2l0aG91dCBsYXVuY2hpbmcgYW4gZWRpdG9yLgorCUZvciBleGFtcGxlLCBgZ2l0IGNvbW1pdCAtLWFtZW5kIC0tbm8tZWRpdGAgYW1lbmRzIGEgY29tbWl0CisJd2l0aG91dCBjaGFuZ2luZyBpdHMgY29tbWl0IG1lc3NhZ2UuCisKIC0tYW1lbmQ6OgotCVVzZWQgdG8gYW1lbmQgdGhlIHRpcCBvZiB0aGUgY3VycmVudCBicmFuY2guIFByZXBhcmUgdGhlIHRyZWUKLQlvYmplY3QgeW91IHdvdWxkIHdhbnQgdG8gcmVwbGFjZSB0aGUgbGF0ZXN0IGNvbW1pdCBhcyB1c3VhbAotCSh0aGlzIGluY2x1ZGVzIHRoZSB1c3VhbCAtaS8tbyBhbmQgZXhwbGljaXQgcGF0aHMpLCBhbmQgdGhlCi0JY29tbWl0IGxvZyBlZGl0b3IgaXMgc2VlZGVkIHdpdGggdGhlIGNvbW1pdCBtZXNzYWdlIGZyb20gdGhlCi0JdGlwIG9mIHRoZSBjdXJyZW50IGJyYW5jaC4gVGhlIGNvbW1pdCB5b3UgY3JlYXRlIHJlcGxhY2VzIHRoZQotCWN1cnJlbnQgdGlwIC0tIGlmIGl0IHdhcyBhIG1lcmdlLCBpdCB3aWxsIGhhdmUgdGhlIHBhcmVudHMgb2YKLQl0aGUgY3VycmVudCB0aXAgYXMgcGFyZW50cyAtLSBzbyB0aGUgY3VycmVudCB0b3AgY29tbWl0IGlzCi0JZGlzY2FyZGVkLgorCVJlcGxhY2UgdGhlIHRpcCBvZiB0aGUgY3VycmVudCBicmFuY2ggYnkgY3JlYXRpbmcgYSBuZXcKKwljb21taXQuIFRoZSByZWNvcmRlZCB0cmVlIGlzIHByZXBhcmVkIGFzIHVzdWFsIChpbmNsdWRpbmcKKwl0aGUgZWZmZWN0IG9mIHRoZSBgLWlgIGFuZCBgLW9gIG9wdGlvbnMgYW5kIGV4cGxpY2l0CisJcGF0aHNwZWMpLCBhbmQgdGhlIG1lc3NhZ2UgZnJvbSB0aGUgb3JpZ2luYWwgY29tbWl0IGlzIHVzZWQKKwlhcyB0aGUgc3RhcnRpbmcgcG9pbnQsIGluc3RlYWQgb2YgYW4gZW1wdHkgbWVzc2FnZSwgd2hlbiBubworCW90aGVyIG1lc3NhZ2UgaXMgc3BlY2lmaWVkIGZyb20gdGhlIGNvbW1hbmQgbGluZSB2aWEgb3B0aW9ucworCXN1Y2ggYXMgYC1tYCwgYC1GYCwgYC1jYCwgZXRjLiAgVGhlIG5ldyBjb21taXQgaGFzIHRoZSBzYW1lCisJcGFyZW50cyBhbmQgYXV0aG9yIGFzIHRoZSBjdXJyZW50IG9uZSAodGhlIGAtLXJlc2V0LWF1dGhvcmAKKwlvcHRpb24gY2FuIGNvdW50ZXJtYW5kIHRoaXMpLgogKwogLS0KIEl0IGlzIGEgcm91Z2ggZXF1aXZhbGVudCBmb3I6CkBAIC0yMDUsNiArMjMyLDkgQEAKIGFtZW5kIGEgY29tbWl0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBwdWJsaXNoZWQuICAoU2VlIHRoZSAiUkVDT1ZFUklORwogRlJPTSBVUFNUUkVBTSBSRUJBU0UiIHNlY3Rpb24gaW4gbGlua2dpdDpnaXQtcmViYXNlWzFdLikKIAorLS1uby1wb3N0LXJld3JpdGU6OgorCUJ5cGFzcyB0aGUgcG9zdC1yZXdyaXRlIGhvb2suCisKIC1pOjoKIC0taW5jbHVkZTo6CiAJQmVmb3JlIG1ha2luZyBhIGNvbW1pdCBvdXQgb2Ygc3RhZ2VkIGNvbnRlbnRzIHNvIGZhciwKQEAgLTI2OCw2ICsyOTgsMTAgQEAKIAljb21taXQgbWVzc2FnZSB0ZW1wbGF0ZSB3aGVuIHVzaW5nIGFuIGVkaXRvciB0byBwcmVwYXJlIHRoZQogCWRlZmF1bHQgY29tbWl0IG1lc3NhZ2UuCiAKKy1TWzxrZXlpZD5dOjoKKy0tZ3BnLXNpZ25bPTxrZXlpZD5dOjoKKwlHUEctc2lnbiBjb21taXQuCisKIFwtLTo6CiAJRG8gbm90IGludGVycHJldCBhbnkgbW9yZSBhcmd1bWVudHMgYXMgb3B0aW9ucy4KIApAQCAtMzgxLDggKzQxNSwxMCBAQAogVGhvdWdoIG5vdCByZXF1aXJlZCwgaXQncyBhIGdvb2QgaWRlYSB0byBiZWdpbiB0aGUgY29tbWl0IG1lc3NhZ2UKIHdpdGggYSBzaW5nbGUgc2hvcnQgKGxlc3MgdGhhbiA1MCBjaGFyYWN0ZXIpIGxpbmUgc3VtbWFyaXppbmcgdGhlCiBjaGFuZ2UsIGZvbGxvd2VkIGJ5IGEgYmxhbmsgbGluZSBhbmQgdGhlbiBhIG1vcmUgdGhvcm91Z2ggZGVzY3JpcHRpb24uCi1Ub29scyB0aGF0IHR1cm4gY29tbWl0cyBpbnRvIGVtYWlsLCBmb3IgZXhhbXBsZSwgdXNlIHRoZSBmaXJzdCBsaW5lCi1vbiB0aGUgU3ViamVjdDogbGluZSBhbmQgdGhlIHJlc3Qgb2YgdGhlIGNvbW1pdCBpbiB0aGUgYm9keS4KK1RoZSB0ZXh0IHVwIHRvIHRoZSBmaXJzdCBibGFuayBsaW5lIGluIGEgY29tbWl0IG1lc3NhZ2UgaXMgdHJlYXRlZAorYXMgdGhlIGNvbW1pdCB0aXRsZSwgYW5kIHRoYXQgdGl0bGUgaXMgdXNlZCB0aHJvdWdob3V0IEdpdC4KK0ZvciBleGFtcGxlLCBsaW5rZ2l0OmdpdC1mb3JtYXQtcGF0Y2hbMV0gdHVybnMgYSBjb21taXQgaW50byBlbWFpbCwgYW5kIGl0IHVzZXMKK3RoZSB0aXRsZSBvbiB0aGUgU3ViamVjdCBsaW5lIGFuZCB0aGUgcmVzdCBvZiB0aGUgY29tbWl0IGluIHRoZSBib2R5LgogCiBpbmNsdWRlOjppMThuLnR4dFtdCiAKQEAgLTM5OSw2ICs0MzUsMTUgQEAKIGFuZCBgcG9zdC1jb21taXRgIGhvb2tzLiAgU2VlIGxpbmtnaXQ6Z2l0aG9va3NbNV0gZm9yIG1vcmUKIGluZm9ybWF0aW9uLgogCitGSUxFUworLS0tLS0KKworYCRHSVRfRElSL0NPTU1JVF9FRElUTVNHYDo6CisJVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBjb21taXQgbWVzc2FnZSBvZiBhIGNvbW1pdCBpbiBwcm9ncmVzcy4KKwlJZiBgZ2l0IGNvbW1pdGAgZXhpdHMgZHVlIHRvIGFuIGVycm9yIGJlZm9yZSBjcmVhdGluZyBhIGNvbW1pdCwKKwlhbnkgY29tbWl0IG1lc3NhZ2UgdGhhdCBoYXMgYmVlbiBwcm92aWRlZCBieSB0aGUgdXNlciAoZS5nLiwgaW4KKwlhbiBlZGl0b3Igc2Vzc2lvbikgd2lsbCBiZSBhdmFpbGFibGUgaW4gdGhpcyBmaWxlLCBidXQgd2lsbCBiZQorCW92ZXJ3cml0dGVuIGJ5IHRoZSBuZXh0IGludm9jYXRpb24gb2YgYGdpdCBjb21taXRgLgogCiBTRUUgQUxTTwogLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNvbmZpZy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jb25maWcudHh0CmluZGV4IGQ5NDYzY2IuLjYwNmYwMGMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNvbmZpZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY29uZmlnLnR4dApAQCAtNTQsMTYgKzU0LDE2IEBACiAnLS1maWxlIDxmaWxlbmFtZT4nIGNhbiBiZSB1c2VkIHRvIHRlbGwgdGhlIGNvbW1hbmQgdG8gd3JpdGUgdG8KIHRoYXQgbG9jYXRpb24gKHlvdSBjYW4gc2F5ICctLWxvY2FsJyBidXQgdGhhdCBpcyB0aGUgZGVmYXVsdCkuCiAKLVRoaXMgY29tbWFuZCB3aWxsIGZhaWwgKHdpdGggZXhpdCBjb2RlIHJldCkgaWY6CitUaGlzIGNvbW1hbmQgd2lsbCBmYWlsIHdpdGggbm9uLXplcm8gc3RhdHVzIHVwb24gZXJyb3IuICBTb21lIGV4aXQKK2NvZGVzIGFyZToKIAogLiBUaGUgY29uZmlnIGZpbGUgaXMgaW52YWxpZCAocmV0PTMpLAogLiBjYW4gbm90IHdyaXRlIHRvIHRoZSBjb25maWcgZmlsZSAocmV0PTQpLAogLiBubyBzZWN0aW9uIG9yIG5hbWUgd2FzIHByb3ZpZGVkIChyZXQ9MiksCiAuIHRoZSBzZWN0aW9uIG9yIGtleSBpcyBpbnZhbGlkIChyZXQ9MSksCiAuIHlvdSB0cnkgdG8gdW5zZXQgYW4gb3B0aW9uIHdoaWNoIGRvZXMgbm90IGV4aXN0IChyZXQ9NSksCi0uIHlvdSB0cnkgdG8gdW5zZXQvc2V0IGFuIG9wdGlvbiBmb3Igd2hpY2ggbXVsdGlwbGUgbGluZXMgbWF0Y2ggKHJldD01KSwKLS4geW91IHRyeSB0byB1c2UgYW4gaW52YWxpZCByZWdleHAgKHJldD02KSwgb3IKLS4geW91IHVzZSAnLS1nbG9iYWwnIG9wdGlvbiB3aXRob3V0ICRIT01FIGJlaW5nIHByb3Blcmx5IHNldCAocmV0PTEyOCkuCisuIHlvdSB0cnkgdG8gdW5zZXQvc2V0IGFuIG9wdGlvbiBmb3Igd2hpY2ggbXVsdGlwbGUgbGluZXMgbWF0Y2ggKHJldD01KSwgb3IKKy4geW91IHRyeSB0byB1c2UgYW4gaW52YWxpZCByZWdleHAgKHJldD02KS4KIAogT24gc3VjY2VzcywgdGhlIGNvbW1hbmQgcmV0dXJucyB0aGUgZXhpdCBjb2RlIDAuCiAKQEAgLTgyLDcgKzgyLDcgQEAKIC0tZ2V0OjoKIAlHZXQgdGhlIHZhbHVlIGZvciBhIGdpdmVuIGtleSAob3B0aW9uYWxseSBmaWx0ZXJlZCBieSBhIHJlZ2V4CiAJbWF0Y2hpbmcgdGhlIHZhbHVlKS4gUmV0dXJucyBlcnJvciBjb2RlIDEgaWYgdGhlIGtleSB3YXMgbm90Ci0JZm91bmQgYW5kIGVycm9yIGNvZGUgMiBpZiBtdWx0aXBsZSBrZXkgdmFsdWVzIHdlcmUgZm91bmQuCisJZm91bmQgYW5kIHRoZSBsYXN0IHZhbHVlIGlmIG11bHRpcGxlIGtleSB2YWx1ZXMgd2VyZSBmb3VuZC4KIAogLS1nZXQtYWxsOjoKIAlMaWtlIGdldCwgYnV0IGRvZXMgbm90IGZhaWwgaWYgdGhlIG51bWJlciBvZiB2YWx1ZXMgZm9yIHRoZSBrZXkKQEAgLTk3LDEwICs5NywxMSBAQAogCiAtLWdsb2JhbDo6CiAJRm9yIHdyaXRpbmcgb3B0aW9uczogd3JpdGUgdG8gZ2xvYmFsIH4vLmdpdGNvbmZpZyBmaWxlIHJhdGhlciB0aGFuCi0JdGhlIHJlcG9zaXRvcnkgLmdpdC9jb25maWcuCisJdGhlIHJlcG9zaXRvcnkgLmdpdC9jb25maWcsIHdyaXRlIHRvICRYREdfQ09ORklHX0hPTUUvZ2l0L2NvbmZpZyBmaWxlCisJaWYgdGhpcyBmaWxlIGV4aXN0cyBhbmQgdGhlIH4vLmdpdGNvbmZpZyBmaWxlIGRvZXNuJ3QuCiArCi1Gb3IgcmVhZGluZyBvcHRpb25zOiByZWFkIG9ubHkgZnJvbSBnbG9iYWwgfi8uZ2l0Y29uZmlnIHJhdGhlciB0aGFuCi1mcm9tIGFsbCBhdmFpbGFibGUgZmlsZXMuCitGb3IgcmVhZGluZyBvcHRpb25zOiByZWFkIG9ubHkgZnJvbSBnbG9iYWwgfi8uZ2l0Y29uZmlnIGFuZCBmcm9tCiskWERHX0NPTkZJR19IT01FL2dpdC9jb25maWcgcmF0aGVyIHRoYW4gZnJvbSBhbGwgYXZhaWxhYmxlIGZpbGVzLgogKwogU2VlIGFsc28gPDxGSUxFUz4+LgogCkBAIC0xODUsOCArMTg2LDcgQEAKIAlPcGVucyBhbiBlZGl0b3IgdG8gbW9kaWZ5IHRoZSBzcGVjaWZpZWQgY29uZmlnIGZpbGU7IGVpdGhlcgogCSctLXN5c3RlbScsICctLWdsb2JhbCcsIG9yIHJlcG9zaXRvcnkgKGRlZmF1bHQpLgogCi0tLWluY2x1ZGVzOjoKLS0tbm8taW5jbHVkZXM6OgorLS1bbm8tXWluY2x1ZGVzOjoKIAlSZXNwZWN0IGBpbmNsdWRlLipgIGRpcmVjdGl2ZXMgaW4gY29uZmlnIGZpbGVzIHdoZW4gbG9va2luZyB1cAogCXZhbHVlcy4gRGVmYXVsdHMgdG8gb24uCiAKQEAgLTE5NCw3ICsxOTQsNyBAQAogRklMRVMKIC0tLS0tCiAKLUlmIG5vdCBzZXQgZXhwbGljaXRseSB3aXRoICctLWZpbGUnLCB0aGVyZSBhcmUgdGhyZWUgZmlsZXMgd2hlcmUKK0lmIG5vdCBzZXQgZXhwbGljaXRseSB3aXRoICctLWZpbGUnLCB0aGVyZSBhcmUgZm91ciBmaWxlcyB3aGVyZQogJ2dpdCBjb25maWcnIHdpbGwgc2VhcmNoIGZvciBjb25maWd1cmF0aW9uIG9wdGlvbnM6CiAKICRHSVRfRElSL2NvbmZpZzo6CkBAIC0yMDQsNiArMjA0LDE0IEBACiAJVXNlci1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUuIEFsc28gY2FsbGVkICJnbG9iYWwiCiAJY29uZmlndXJhdGlvbiBmaWxlLgogCiskWERHX0NPTkZJR19IT01FL2dpdC9jb25maWc6OgorCVNlY29uZCB1c2VyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZS4gSWYgJFhER19DT05GSUdfSE9NRSBpcyBub3Qgc2V0CisJb3IgZW1wdHksICRIT01FLy5jb25maWcvZ2l0L2NvbmZpZyB3aWxsIGJlIHVzZWQuIEFueSBzaW5nbGUtdmFsdWVkCisJdmFyaWFibGUgc2V0IGluIHRoaXMgZmlsZSB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHdoYXRldmVyIGlzIGluCisJfi8uZ2l0Y29uZmlnLiAgSXQgaXMgYSBnb29kIGlkZWEgbm90IHRvIGNyZWF0ZSB0aGlzIGZpbGUgaWYKKwl5b3Ugc29tZXRpbWVzIHVzZSBvbGRlciB2ZXJzaW9ucyBvZiBHaXQsIGFzIHN1cHBvcnQgZm9yIHRoaXMKKwlmaWxlIHdhcyBhZGRlZCBmYWlybHkgcmVjZW50bHkuCisKICQocHJlZml4KS9ldGMvZ2l0Y29uZmlnOjoKIAlTeXN0ZW0td2lkZSBjb25maWd1cmF0aW9uIGZpbGUuCiAKQEAgLTIzMSw2ICsyMzksMTAgQEAKIAlVc2luZyB0aGUgIi0tZ2xvYmFsIiBvcHRpb24gZm9yY2VzIHRoaXMgdG8gfi8uZ2l0Y29uZmlnLiBVc2luZyB0aGUKIAkiLS1zeXN0ZW0iIG9wdGlvbiBmb3JjZXMgdGhpcyB0byAkKHByZWZpeCkvZXRjL2dpdGNvbmZpZy4KIAorR0lUX0NPTkZJR19OT1NZU1RFTTo6CisJV2hldGhlciB0byBza2lwIHJlYWRpbmcgc2V0dGluZ3MgZnJvbSB0aGUgc3lzdGVtLXdpZGUKKwkkKHByZWZpeCkvZXRjL2dpdGNvbmZpZyBmaWxlLiBTZWUgbGlua2dpdDpnaXRbMV0gZm9yIGRldGFpbHMuCisKIFNlZSBhbHNvIDw8RklMRVM+Pi4KIAogCkBAIC0yNTgsNyArMjcwLDcgQEAKIAogCTsgUHJveHkgc2V0dGluZ3MKIAlbY29yZV0KLQkJZ2l0cHJveHk9InByb3h5LWNvbW1hbmQiIGZvciBrZXJuZWwub3JnCisJCWdpdHByb3h5PXByb3h5LWNvbW1hbmQgZm9yIGtlcm5lbC5vcmcKIAkJZ2l0cHJveHk9ZGVmYXVsdC1wcm94eSA7IGZvciBhbGwgdGhlIHJlc3QKIAogeW91IGNhbiBzZXQgdGhlIGZpbGVtb2RlIHRvIHRydWUgd2l0aApAQCAtMzMzLDcgKzM0NSw3IEBACiBUbyBhZGQgYSBuZXcgcHJveHksIHdpdGhvdXQgYWx0ZXJpbmcgYW55IG9mIHRoZSBleGlzdGluZyBvbmVzLCB1c2UKIAogLS0tLS0tLS0tLS0tCi0lIGdpdCBjb25maWcgY29yZS5naXRwcm94eSAnInByb3h5LWNvbW1hbmQiIGZvciBleGFtcGxlLmNvbScKKyUgZ2l0IGNvbmZpZyAtLWFkZCBjb3JlLmdpdHByb3h5ICcicHJveHktY29tbWFuZCIgZm9yIGV4YW1wbGUuY29tJwogLS0tLS0tLS0tLS0tCiAKIEFuIGV4YW1wbGUgdG8gdXNlIGN1c3RvbWl6ZWQgY29sb3IgZnJvbSB0aGUgY29uZmlndXJhdGlvbiBpbiB5b3VyCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1jb3VudC1vYmplY3RzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNvdW50LW9iamVjdHMudHh0CmluZGV4IDIzYzgwY2UuLmIzMDBlODQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNvdW50LW9iamVjdHMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWNvdW50LW9iamVjdHMudHh0CkBAIC04LDcgKzgsNyBAQAogU1lOT1BTSVMKIC0tLS0tLS0tCiBbdmVyc2VdCi0nZ2l0IGNvdW50LW9iamVjdHMnIFstdl0KKydnaXQgY291bnQtb2JqZWN0cycgWy12XSBbLUggfCAtLWh1bWFuLXJlYWRhYmxlXQogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KQEAgLTIwLDExICsyMCwyOSBAQAogLS0tLS0tLQogLXY6OgogLS12ZXJib3NlOjoKLQlJbiBhZGRpdGlvbiB0byB0aGUgbnVtYmVyIG9mIGxvb3NlIG9iamVjdHMgYW5kIGRpc2sKLQlzcGFjZSBjb25zdW1lZCwgaXQgcmVwb3J0cyB0aGUgbnVtYmVyIG9mIGluLXBhY2sKLQlvYmplY3RzLCBudW1iZXIgb2YgcGFja3MsIGRpc2sgc3BhY2UgY29uc3VtZWQgYnkgdGhvc2UgcGFja3MsCi0JYW5kIG51bWJlciBvZiBvYmplY3RzIHRoYXQgY2FuIGJlIHJlbW92ZWQgYnkgcnVubmluZwotCWBnaXQgcHJ1bmUtcGFja2VkYC4KKwlSZXBvcnQgaW4gbW9yZSBkZXRhaWw6CisrCitjb3VudDogdGhlIG51bWJlciBvZiBsb29zZSBvYmplY3RzCisrCitzaXplOiBkaXNrIHNwYWNlIGNvbnN1bWVkIGJ5IGxvb3NlIG9iamVjdHMsIGluIEtpQiAodW5sZXNzIC1IIGlzIHNwZWNpZmllZCkKKysKK2luLXBhY2s6IHRoZSBudW1iZXIgb2YgaW4tcGFjayBvYmplY3RzCisrCitzaXplLXBhY2s6IGRpc2sgc3BhY2UgY29uc3VtZWQgYnkgdGhlIHBhY2tzLCBpbiBLaUIgKHVubGVzcyAtSCBpcyBzcGVjaWZpZWQpCisrCitwcnVuZS1wYWNrYWJsZTogdGhlIG51bWJlciBvZiBsb29zZSBvYmplY3RzIHRoYXQgYXJlIGFsc28gcHJlc2VudCBpbgordGhlIHBhY2tzLiBUaGVzZSBvYmplY3RzIGNvdWxkIGJlIHBydW5lZCB1c2luZyBgZ2l0IHBydW5lLXBhY2tlZGAuCisrCitnYXJiYWdlOiB0aGUgbnVtYmVyIG9mIGZpbGVzIGluIG9iamVjdCBkYXRhYmFzZSB0aGF0IGFyZSBub3QgdmFsaWQKK2xvb3NlIG9iamVjdHMgbm9yIHZhbGlkIHBhY2tzCisrCitzaXplLWdhcmJhZ2U6IGRpc2sgc3BhY2UgY29uc3VtZWQgYnkgZ2FyYmFnZSBmaWxlcywgaW4gS2lCICh1bmxlc3MgLUggaXMKK3NwZWNpZmllZCkKKworLUg6OgorLS1odW1hbi1yZWFkYWJsZTo6CisKK1ByaW50IHNpemVzIGluIGh1bWFuIHJlYWRhYmxlIGZvcm1hdAogCiBHSVQKIC0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY3JlZGVudGlhbC1jYWNoZS0tZGFlbW9uLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNyZWRlbnRpYWwtY2FjaGUtLWRhZW1vbi50eHQKaW5kZXggMTFlZGM1YS4uZDE1ZGI0MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtY3JlZGVudGlhbC1jYWNoZS0tZGFlbW9uLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jcmVkZW50aWFsLWNhY2hlLS1kYWVtb24udHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXQtY3JlZGVudGlhbC1jYWNoZS0tZGFlbW9uIC0gdGVtcG9yYXJpbHkgc3RvcmUgdXNlciBjcmVkZW50aWFscyBpbiBtZW1vcnkKK2dpdC1jcmVkZW50aWFsLWNhY2hlLS1kYWVtb24gLSBUZW1wb3JhcmlseSBzdG9yZSB1c2VyIGNyZWRlbnRpYWxzIGluIG1lbW9yeQogCiBTWU5PUFNJUwogLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNyZWRlbnRpYWwtY2FjaGUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtY3JlZGVudGlhbC1jYWNoZS50eHQKaW5kZXggZjNkMDljNS4uODliNzMwNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtY3JlZGVudGlhbC1jYWNoZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY3JlZGVudGlhbC1jYWNoZS50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdC1jcmVkZW50aWFsLWNhY2hlIC0gaGVscGVyIHRvIHRlbXBvcmFyaWx5IHN0b3JlIHBhc3N3b3JkcyBpbiBtZW1vcnkKK2dpdC1jcmVkZW50aWFsLWNhY2hlIC0gSGVscGVyIHRvIHRlbXBvcmFyaWx5IHN0b3JlIHBhc3N3b3JkcyBpbiBtZW1vcnkKIAogU1lOT1BTSVMKIC0tLS0tLS0tCkBAIC0xNCwxMyArMTQsMTMgQEAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQogCi1UaGlzIGNvbW1hbmQgY2FjaGVzIGNyZWRlbnRpYWxzIGluIG1lbW9yeSBmb3IgdXNlIGJ5IGZ1dHVyZSBnaXQKK1RoaXMgY29tbWFuZCBjYWNoZXMgY3JlZGVudGlhbHMgaW4gbWVtb3J5IGZvciB1c2UgYnkgZnV0dXJlIEdpdAogcHJvZ3JhbXMuIFRoZSBzdG9yZWQgY3JlZGVudGlhbHMgbmV2ZXIgdG91Y2ggdGhlIGRpc2ssIGFuZCBhcmUgZm9yZ290dGVuCiBhZnRlciBhIGNvbmZpZ3VyYWJsZSB0aW1lb3V0LiAgVGhlIGNhY2hlIGlzIGFjY2Vzc2libGUgb3ZlciBhIFVuaXgKIGRvbWFpbiBzb2NrZXQsIHJlc3RyaWN0ZWQgdG8gdGhlIGN1cnJlbnQgdXNlciBieSBmaWxlc3lzdGVtIHBlcm1pc3Npb25zLgogCiBZb3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBpbnZva2UgdGhpcyBjb21tYW5kIGRpcmVjdGx5OyBpdCBpcyBtZWFudCB0bwotYmUgdXNlZCBhcyBhIGNyZWRlbnRpYWwgaGVscGVyIGJ5IG90aGVyIHBhcnRzIG9mIGdpdC4gU2VlCitiZSB1c2VkIGFzIGEgY3JlZGVudGlhbCBoZWxwZXIgYnkgb3RoZXIgcGFydHMgb2YgR2l0LiBTZWUKIGxpbmtnaXQ6Z2l0Y3JlZGVudGlhbHNbN10gb3IgYEVYQU1QTEVTYCBiZWxvdy4KIAogT1BUSU9OUwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY3JlZGVudGlhbC1zdG9yZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jcmVkZW50aWFsLXN0b3JlLnR4dAppbmRleCAzMTA5MzQ2Li44NDgxY2FlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jcmVkZW50aWFsLXN0b3JlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jcmVkZW50aWFsLXN0b3JlLnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0LWNyZWRlbnRpYWwtc3RvcmUgLSBoZWxwZXIgdG8gc3RvcmUgY3JlZGVudGlhbHMgb24gZGlzaworZ2l0LWNyZWRlbnRpYWwtc3RvcmUgLSBIZWxwZXIgdG8gc3RvcmUgY3JlZGVudGlhbHMgb24gZGlzawogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTIwLDcgKzIwLDcgQEAKIHRoYXQgaW50ZWdyYXRlcyB3aXRoIHNlY3VyZSBzdG9yYWdlIHByb3ZpZGVkIGJ5IHlvdXIgb3BlcmF0aW5nIHN5c3RlbS4KIAogVGhpcyBjb21tYW5kIHN0b3JlcyBjcmVkZW50aWFscyBpbmRlZmluaXRlbHkgb24gZGlzayBmb3IgdXNlIGJ5IGZ1dHVyZQotZ2l0IHByb2dyYW1zLgorR2l0IHByb2dyYW1zLgogCiBZb3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBpbnZva2UgdGhpcyBjb21tYW5kIGRpcmVjdGx5OyBpdCBpcyBtZWFudCB0bwogYmUgdXNlZCBhcyBhIGNyZWRlbnRpYWwgaGVscGVyIGJ5IG90aGVyIHBhcnRzIG9mIGdpdC4gU2VlCkBAIC02MywxMSArNjMsMTEgQEAKIGh0dHBzOi8vdXNlcjpwYXNzQGV4YW1wbGUuY29tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2hlbiBnaXQgbmVlZHMgYXV0aGVudGljYXRpb24gZm9yIGEgcGFydGljdWxhciBVUkwgY29udGV4dCwKK1doZW4gR2l0IG5lZWRzIGF1dGhlbnRpY2F0aW9uIGZvciBhIHBhcnRpY3VsYXIgVVJMIGNvbnRleHQsCiBjcmVkZW50aWFsLXN0b3JlIHdpbGwgY29uc2lkZXIgdGhhdCBjb250ZXh0IGEgcGF0dGVybiB0byBtYXRjaCBhZ2FpbnN0CiBlYWNoIGVudHJ5IGluIHRoZSBjcmVkZW50aWFscyBmaWxlLiAgSWYgdGhlIHByb3RvY29sLCBob3N0bmFtZSwgYW5kCiB1c2VybmFtZSAoaWYgd2UgYWxyZWFkeSBoYXZlIG9uZSkgbWF0Y2gsIHRoZW4gdGhlIHBhc3N3b3JkIGlzIHJldHVybmVkCi10byBnaXQuIFNlZSB0aGUgZGlzY3Vzc2lvbiBvZiBjb25maWd1cmF0aW9uIGluIGxpbmtnaXQ6Z2l0Y3JlZGVudGlhbHNbN10KK3RvIEdpdC4gU2VlIHRoZSBkaXNjdXNzaW9uIG9mIGNvbmZpZ3VyYXRpb24gaW4gbGlua2dpdDpnaXRjcmVkZW50aWFsc1s3XQogZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIEdJVApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY3JlZGVudGlhbC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jcmVkZW50aWFsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGEwZjEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY3JlZGVudGlhbC50eHQKQEAgLTAsMCArMSwxNTQgQEAKK2dpdC1jcmVkZW50aWFsKDEpCis9PT09PT09PT09PT09PT09PQorCitOQU1FCistLS0tCitnaXQtY3JlZGVudGlhbCAtIFJldHJpZXZlIGFuZCBzdG9yZSB1c2VyIGNyZWRlbnRpYWxzCisKK1NZTk9QU0lTCistLS0tLS0tLQorLS0tLS0tLS0tLS0tLS0tLS0tCitnaXQgY3JlZGVudGlhbCA8ZmlsbHxhcHByb3ZlfHJlamVjdD4KKy0tLS0tLS0tLS0tLS0tLS0tLQorCitERVNDUklQVElPTgorLS0tLS0tLS0tLS0KKworR2l0IGhhcyBhbiBpbnRlcm5hbCBpbnRlcmZhY2UgZm9yIHN0b3JpbmcgYW5kIHJldHJpZXZpbmcgY3JlZGVudGlhbHMKK2Zyb20gc3lzdGVtLXNwZWNpZmljIGhlbHBlcnMsIGFzIHdlbGwgYXMgcHJvbXB0aW5nIHRoZSB1c2VyIGZvcgordXNlcm5hbWVzIGFuZCBwYXNzd29yZHMuIFRoZSBnaXQtY3JlZGVudGlhbCBjb21tYW5kIGV4cG9zZXMgdGhpcworaW50ZXJmYWNlIHRvIHNjcmlwdHMgd2hpY2ggbWF5IHdhbnQgdG8gcmV0cmlldmUsIHN0b3JlLCBvciBwcm9tcHQgZm9yCitjcmVkZW50aWFscyBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgR2l0LiBUaGUgZGVzaWduIG9mIHRoaXMgc2NyaXB0YWJsZQoraW50ZXJmYWNlIG1vZGVscyB0aGUgaW50ZXJuYWwgQyBBUEk7IHNlZQorbGluazp0ZWNobmljYWwvYXBpLWNyZWRlbnRpYWxzLnR4dFt0aGUgR2l0IGNyZWRlbnRpYWwgQVBJXSBmb3IgbW9yZQorYmFja2dyb3VuZCBvbiB0aGUgY29uY2VwdHMuCisKK2dpdC1jcmVkZW50aWFsIHRha2VzIGFuICJhY3Rpb24iIG9wdGlvbiBvbiB0aGUgY29tbWFuZC1saW5lIChvbmUgb2YKK2BmaWxsYCwgYGFwcHJvdmVgLCBvciBgcmVqZWN0YCkgYW5kIHJlYWRzIGEgY3JlZGVudGlhbCBkZXNjcmlwdGlvbgorb24gc3RkaW4gKHNlZSA8PElPRk1ULElOUFVUL09VVFBVVCBGT1JNQVQ+PikuCisKK0lmIHRoZSBhY3Rpb24gaXMgYGZpbGxgLCBnaXQtY3JlZGVudGlhbCB3aWxsIGF0dGVtcHQgdG8gYWRkICJ1c2VybmFtZSIKK2FuZCAicGFzc3dvcmQiIGF0dHJpYnV0ZXMgdG8gdGhlIGRlc2NyaXB0aW9uIGJ5IHJlYWRpbmcgY29uZmlnIGZpbGVzLAorYnkgY29udGFjdGluZyBhbnkgY29uZmlndXJlZCBjcmVkZW50aWFsIGhlbHBlcnMsIG9yIGJ5IHByb21wdGluZyB0aGUKK3VzZXIuIFRoZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgYXR0cmlidXRlcyBvZiB0aGUgY3JlZGVudGlhbAorZGVzY3JpcHRpb24gYXJlIHRoZW4gcHJpbnRlZCB0byBzdGRvdXQgdG9nZXRoZXIgd2l0aCB0aGUgYXR0cmlidXRlcworYWxyZWFkeSBwcm92aWRlZC4KKworSWYgdGhlIGFjdGlvbiBpcyBgYXBwcm92ZWAsIGdpdC1jcmVkZW50aWFsIHdpbGwgc2VuZCB0aGUgZGVzY3JpcHRpb24KK3RvIGFueSBjb25maWd1cmVkIGNyZWRlbnRpYWwgaGVscGVycywgd2hpY2ggbWF5IHN0b3JlIHRoZSBjcmVkZW50aWFsCitmb3IgbGF0ZXIgdXNlLgorCitJZiB0aGUgYWN0aW9uIGlzIGByZWplY3RgLCBnaXQtY3JlZGVudGlhbCB3aWxsIHNlbmQgdGhlIGRlc2NyaXB0aW9uIHRvCithbnkgY29uZmlndXJlZCBjcmVkZW50aWFsIGhlbHBlcnMsIHdoaWNoIG1heSBlcmFzZSBhbnkgc3RvcmVkCitjcmVkZW50aWFsIG1hdGNoaW5nIHRoZSBkZXNjcmlwdGlvbi4KKworSWYgdGhlIGFjdGlvbiBpcyBgYXBwcm92ZWAgb3IgYHJlamVjdGAsIG5vIG91dHB1dCBzaG91bGQgYmUgZW1pdHRlZC4KKworVFlQSUNBTCBVU0UgT0YgR0lUIENSRURFTlRJQUwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FuIGFwcGxpY2F0aW9uIHVzaW5nIGdpdC1jcmVkZW50aWFsIHdpbGwgdHlwaWNhbGx5IHVzZSBgZ2l0CitjcmVkZW50aWFsYCBmb2xsb3dpbmcgdGhlc2Ugc3RlcHM6CisKKyAgMS4gR2VuZXJhdGUgYSBjcmVkZW50aWFsIGRlc2NyaXB0aW9uIGJhc2VkIG9uIHRoZSBjb250ZXh0LgorKworRm9yIGV4YW1wbGUsIGlmIHdlIHdhbnQgYSBwYXNzd29yZCBmb3IKK2BodHRwczovL2V4YW1wbGUuY29tL2Zvby5naXRgLCB3ZSBtaWdodCBnZW5lcmF0ZSB0aGUgZm9sbG93aW5nCitjcmVkZW50aWFsIGRlc2NyaXB0aW9uIChkb24ndCBmb3JnZXQgdGhlIGJsYW5rIGxpbmUgYXQgdGhlIGVuZDsgaXQKK3RlbGxzIGBnaXQgY3JlZGVudGlhbGAgdGhhdCB0aGUgYXBwbGljYXRpb24gZmluaXNoZWQgZmVlZGluZyBhbGwgdGhlCitpbmZvcm1hdGlvbiBpdCBoYXMpOgorCisJIHByb3RvY29sPWh0dHBzCisJIGhvc3Q9ZXhhbXBsZS5jb20KKwkgcGF0aD1mb28uZ2l0CisKKyAgMi4gQXNrIGdpdC1jcmVkZW50aWFsIHRvIGdpdmUgdXMgYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZm9yIHRoaXMKKyAgICAgZGVzY3JpcHRpb24uIFRoaXMgaXMgZG9uZSBieSBydW5uaW5nIGBnaXQgY3JlZGVudGlhbCBmaWxsYCwKKyAgICAgZmVlZGluZyB0aGUgZGVzY3JpcHRpb24gZnJvbSBzdGVwICgxKSB0byBpdHMgc3RhbmRhcmQgaW5wdXQuIFRoZSBjb21wbGV0ZQorICAgICBjcmVkZW50aWFsIGRlc2NyaXB0aW9uIChpbmNsdWRpbmcgdGhlIGNyZWRlbnRpYWwgcGVyIHNlLCBpLmUuIHRoZQorICAgICBsb2dpbiBhbmQgcGFzc3dvcmQpIHdpbGwgYmUgcHJvZHVjZWQgb24gc3RhbmRhcmQgb3V0cHV0LCBsaWtlOgorCisJcHJvdG9jb2w9aHR0cHMKKwlob3N0PWV4YW1wbGUuY29tCisJdXNlcm5hbWU9Ym9iCisJcGFzc3dvcmQ9c2VjcjN0CisrCitJbiBtb3N0IGNhc2VzLCB0aGlzIG1lYW5zIHRoZSBhdHRyaWJ1dGVzIGdpdmVuIGluIHRoZSBpbnB1dCB3aWxsIGJlCityZXBlYXRlZCBpbiB0aGUgb3V0cHV0LCBidXQgR2l0IG1heSBhbHNvIG1vZGlmeSB0aGUgY3JlZGVudGlhbAorZGVzY3JpcHRpb24sIGZvciBleGFtcGxlIGJ5IHJlbW92aW5nIHRoZSBgcGF0aGAgYXR0cmlidXRlIHdoZW4gdGhlCitwcm90b2NvbCBpcyBIVFRQKHMpIGFuZCBgY3JlZGVudGlhbC51c2VIdHRwUGF0aGAgaXMgZmFsc2UuCisrCitJZiB0aGUgYGdpdCBjcmVkZW50aWFsYCBrbmV3IGFib3V0IHRoZSBwYXNzd29yZCwgdGhpcyBzdGVwIG1heQorbm90IGhhdmUgaW52b2x2ZWQgdGhlIHVzZXIgYWN0dWFsbHkgdHlwaW5nIHRoaXMgcGFzc3dvcmQgKHRoZQordXNlciBtYXkgaGF2ZSB0eXBlZCBhIHBhc3N3b3JkIHRvIHVubG9jayB0aGUga2V5Y2hhaW4gaW5zdGVhZCwKK29yIG5vIHVzZXIgaW50ZXJhY3Rpb24gd2FzIGRvbmUgaWYgdGhlIGtleWNoYWluIHdhcyBhbHJlYWR5Cit1bmxvY2tlZCkgYmVmb3JlIGl0IHJldHVybmVkIGBwYXNzd29yZD1zZWNyM3RgLgorCisgIDMuIFVzZSB0aGUgY3JlZGVudGlhbCAoZS5nLiwgYWNjZXNzIHRoZSBVUkwgd2l0aCB0aGUgdXNlcm5hbWUgYW5kCisgICAgIHBhc3N3b3JkIGZyb20gc3RlcCAoMikpLCBhbmQgc2VlIGlmIGl0J3MgYWNjZXB0ZWQuCisKKyAgNC4gUmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIHBhc3N3b3JkLiBJZiB0aGUKKyAgICAgY3JlZGVudGlhbCBhbGxvd2VkIHRoZSBvcGVyYXRpb24gdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LCB0aGVuCisgICAgIGl0IGNhbiBiZSBtYXJrZWQgd2l0aCBhbiAiYXBwcm92ZSIgYWN0aW9uIHRvIHRlbGwgYGdpdAorICAgICBjcmVkZW50aWFsYCB0byByZXVzZSBpdCBpbiBpdHMgbmV4dCBpbnZvY2F0aW9uLiBJZiB0aGUgY3JlZGVudGlhbAorICAgICB3YXMgcmVqZWN0ZWQgZHVyaW5nIHRoZSBvcGVyYXRpb24sIHVzZSB0aGUgInJlamVjdCIgYWN0aW9uIHNvCisgICAgIHRoYXQgYGdpdCBjcmVkZW50aWFsYCB3aWxsIGFzayBmb3IgYSBuZXcgcGFzc3dvcmQgaW4gaXRzIG5leHQKKyAgICAgaW52b2NhdGlvbi4gSW4gZWl0aGVyIGNhc2UsIGBnaXQgY3JlZGVudGlhbGAgc2hvdWxkIGJlIGZlZCB3aXRoCisgICAgIHRoZSBjcmVkZW50aWFsIGRlc2NyaXB0aW9uIG9idGFpbmVkIGZyb20gc3RlcCAoMikgKHdoaWNoIGFsc28KKyAgICAgY29udGFpbiB0aGUgb25lcyBwcm92aWRlZCBpbiBzdGVwICgxKSkuCisKK1tbSU9GTVRdXQorSU5QVVQvT1VUUFVUIEZPUk1BVAorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitgZ2l0IGNyZWRlbnRpYWxgIHJlYWRzIGFuZC9vciB3cml0ZXMgKGRlcGVuZGluZyBvbiB0aGUgYWN0aW9uIHVzZWQpCitjcmVkZW50aWFsIGluZm9ybWF0aW9uIGluIGl0cyBzdGFuZGFyZCBpbnB1dC9vdXRwdXQuIFRoaXMgaW5mb3JtYXRpb24KK2NhbiBjb3JyZXNwb25kIGVpdGhlciB0byBrZXlzIGZvciB3aGljaCBgZ2l0IGNyZWRlbnRpYWxgIHdpbGwgb2J0YWluCit0aGUgbG9naW4vcGFzc3dvcmQgaW5mb3JtYXRpb24gKGUuZy4gaG9zdCwgcHJvdG9jb2wsIHBhdGgpLCBvciB0byB0aGUKK2FjdHVhbCBjcmVkZW50aWFsIGRhdGEgdG8gYmUgb2J0YWluZWQgKGxvZ2luL3Bhc3N3b3JkKS4KKworVGhlIGNyZWRlbnRpYWwgaXMgc3BsaXQgaW50byBhIHNldCBvZiBuYW1lZCBhdHRyaWJ1dGVzLCB3aXRoIG9uZQorYXR0cmlidXRlIHBlciBsaW5lLiBFYWNoIGF0dHJpYnV0ZSBpcworc3BlY2lmaWVkIGJ5IGEga2V5LXZhbHVlIHBhaXIsIHNlcGFyYXRlZCBieSBhbiBgPWAgKGVxdWFscykgc2lnbiwKK2ZvbGxvd2VkIGJ5IGEgbmV3bGluZS4gVGhlIGtleSBtYXkgY29udGFpbiBhbnkgYnl0ZXMgZXhjZXB0IGA9YCwKK25ld2xpbmUsIG9yIE5VTC4gVGhlIHZhbHVlIG1heSBjb250YWluIGFueSBieXRlcyBleGNlcHQgbmV3bGluZSBvciBOVUwuCitJbiBib3RoIGNhc2VzLCBhbGwgYnl0ZXMgYXJlIHRyZWF0ZWQgYXMtaXMgKGkuZS4sIHRoZXJlIGlzIG5vIHF1b3RpbmcsCithbmQgb25lIGNhbm5vdCB0cmFuc21pdCBhIHZhbHVlIHdpdGggbmV3bGluZSBvciBOVUwgaW4gaXQpLiBUaGUgbGlzdCBvZgorYXR0cmlidXRlcyBpcyB0ZXJtaW5hdGVkIGJ5IGEgYmxhbmsgbGluZSBvciBlbmQtb2YtZmlsZS4KK0dpdCB1bmRlcnN0YW5kcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisKK2Bwcm90b2NvbGA6OgorCisJVGhlIHByb3RvY29sIG92ZXIgd2hpY2ggdGhlIGNyZWRlbnRpYWwgd2lsbCBiZSB1c2VkIChlLmcuLAorCWBodHRwc2ApLgorCitgaG9zdGA6OgorCisJVGhlIHJlbW90ZSBob3N0bmFtZSBmb3IgYSBuZXR3b3JrIGNyZWRlbnRpYWwuCisKK2BwYXRoYDo6CisKKwlUaGUgcGF0aCB3aXRoIHdoaWNoIHRoZSBjcmVkZW50aWFsIHdpbGwgYmUgdXNlZC4gRS5nLiwgZm9yCisJYWNjZXNzaW5nIGEgcmVtb3RlIGh0dHBzIHJlcG9zaXRvcnksIHRoaXMgd2lsbCBiZSB0aGUKKwlyZXBvc2l0b3J5J3MgcGF0aCBvbiB0aGUgc2VydmVyLgorCitgdXNlcm5hbWVgOjoKKworCVRoZSBjcmVkZW50aWFsJ3MgdXNlcm5hbWUsIGlmIHdlIGFscmVhZHkgaGF2ZSBvbmUgKGUuZy4sIGZyb20gYQorCVVSTCwgZnJvbSB0aGUgdXNlciwgb3IgZnJvbSBhIHByZXZpb3VzbHkgcnVuIGhlbHBlcikuCisKK2BwYXNzd29yZGA6OgorCisJVGhlIGNyZWRlbnRpYWwncyBwYXNzd29yZCwgaWYgd2UgYXJlIGFza2luZyBpdCB0byBiZSBzdG9yZWQuCisKK2B1cmxgOjoKKworCVdoZW4gdGhpcyBzcGVjaWFsIGF0dHJpYnV0ZSBpcyByZWFkIGJ5IGBnaXQgY3JlZGVudGlhbGAsIHRoZQorCXZhbHVlIGlzIHBhcnNlZCBhcyBhIFVSTCBhbmQgdHJlYXRlZCBhcyBpZiBpdHMgY29uc3RpdHVlbnQgcGFydHMKKwl3ZXJlIHJlYWQgKGUuZy4sIGB1cmw9aHR0cHM6Ly9leGFtcGxlLmNvbWAgd291bGQgYmVoYXZlIGFzIGlmCisJYHByb3RvY29sPWh0dHBzYCBhbmQgYGhvc3Q9ZXhhbXBsZS5jb21gIGhhZCBiZWVuIHByb3ZpZGVkKS4gVGhpcworCWNhbiBoZWxwIGNhbGxlcnMgYXZvaWQgcGFyc2luZyBVUkxzIHRoZW1zZWx2ZXMuICBOb3RlIHRoYXQgYW55CisJY29tcG9uZW50cyB3aGljaCBhcmUgbWlzc2luZyBmcm9tIHRoZSBVUkwgKGUuZy4sIHRoZXJlIGlzIG5vCisJdXNlcm5hbWUgaW4gdGhlIGV4YW1wbGUgYWJvdmUpIHdpbGwgYmUgc2V0IHRvIGVtcHR5OyBpZiB5b3Ugd2FudAorCXRvIHByb3ZpZGUgYSBVUkwgYW5kIG92ZXJyaWRlIHNvbWUgYXR0cmlidXRlcywgcHJvdmlkZSB0aGUgVVJMCisJYXR0cmlidXRlIGZpcnN0LCBmb2xsb3dlZCBieSBhbnkgb3ZlcnJpZGVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY3ZzZXhwb3J0Y29tbWl0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWN2c2V4cG9ydGNvbW1pdC50eHQKaW5kZXggN2Y3OWNlYy4uMDAxNTRiNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtY3ZzZXhwb3J0Y29tbWl0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jdnNleHBvcnRjb21taXQudHh0CkBAIC0xNSw4ICsxNSw4IEBACiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQotRXhwb3J0cyBhIGNvbW1pdCBmcm9tIEdJVCB0byBhIENWUyBjaGVja291dCwgbWFraW5nIGl0IGVhc2llcgotdG8gbWVyZ2UgcGF0Y2hlcyBmcm9tIGEgZ2l0IHJlcG9zaXRvcnkgaW50byBhIENWUyByZXBvc2l0b3J5LgorRXhwb3J0cyBhIGNvbW1pdCBmcm9tIEdpdCB0byBhIENWUyBjaGVja291dCwgbWFraW5nIGl0IGVhc2llcgordG8gbWVyZ2UgcGF0Y2hlcyBmcm9tIGEgR2l0IHJlcG9zaXRvcnkgaW50byBhIENWUyByZXBvc2l0b3J5LgogCiBTcGVjaWZ5IHRoZSBuYW1lIG9mIGEgQ1ZTIGNoZWNrb3V0IHVzaW5nIHRoZSAtdyBzd2l0Y2ggb3IgZXhlY3V0ZSBpdAogZnJvbSB0aGUgcm9vdCBvZiB0aGUgQ1ZTIHdvcmtpbmcgY29weS4gSW4gdGhlIGxhdHRlciBjYXNlIEdJVF9ESVIgbXVzdApAQCAtNzEsNyArNzEsNyBAQAogLXc6OgogCVNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mIHRoZSBDVlMgY2hlY2tvdXQgdG8gdXNlIGZvciB0aGUgZXhwb3J0LiBUaGlzCiAJb3B0aW9uIGRvZXMgbm90IHJlcXVpcmUgR0lUX0RJUiB0byBiZSBzZXQgYmVmb3JlIGV4ZWN1dGlvbiBpZiB0aGUKLQljdXJyZW50IGRpcmVjdG9yeSBpcyB3aXRoaW4gYSBnaXQgcmVwb3NpdG9yeS4gIFRoZSBkZWZhdWx0IGlzIHRoZQorCWN1cnJlbnQgZGlyZWN0b3J5IGlzIHdpdGhpbiBhIEdpdCByZXBvc2l0b3J5LiAgVGhlIGRlZmF1bHQgaXMgdGhlCiAJdmFsdWUgb2YgJ2N2c2V4cG9ydGNvbW1pdC5jdnNkaXInLgogCiAtVzo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1jdnNpbXBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtY3ZzaW1wb3J0LnR4dAppbmRleCA2Njk1YWIzLi5kMWJjZGEyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jdnNpbXBvcnQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWN2c2ltcG9ydC50eHQKQEAgLTE4LDcgKzE4LDEzIEBACiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQotSW1wb3J0cyBhIENWUyByZXBvc2l0b3J5IGludG8gZ2l0LiBJdCB3aWxsIGVpdGhlciBjcmVhdGUgYSBuZXcKKypXQVJOSU5HOiogYGdpdCBjdnNpbXBvcnRgIHVzZXMgY3ZzcHMgdmVyc2lvbiAyLCB3aGljaCBpcyBjb25zaWRlcmVkCitkZXByZWNhdGVkOyBpdCBkb2VzIG5vdCB3b3JrIHdpdGggY3ZzcHMgdmVyc2lvbiAzIGFuZCBsYXRlci4gIElmIHlvdSBhcmUKK3BlcmZvcm1pbmcgYSBvbmUtc2hvdCBpbXBvcnQgb2YgYSBDVlMgcmVwb3NpdG9yeSBjb25zaWRlciB1c2luZworbGluazpodHRwOi8vY3ZzMnN2bi50aWdyaXMub3JnL2N2czJnaXQuaHRtbFtjdnMyZ2l0XSBvcgorbGluazpodHRwczovL2dpdGh1Yi5jb20vQmFydE1hc3NleS9wYXJzZWN2c1twYXJzZWN2c10uCisKK0ltcG9ydHMgYSBDVlMgcmVwb3NpdG9yeSBpbnRvIEdpdC4gSXQgd2lsbCBlaXRoZXIgY3JlYXRlIGEgbmV3CiByZXBvc2l0b3J5LCBvciBpbmNyZW1lbnRhbGx5IGltcG9ydCBpbnRvIGFuIGV4aXN0aW5nIG9uZS4KIAogU3BsaXR0aW5nIHRoZSBDVlMgbG9nIGludG8gcGF0Y2ggc2V0cyBpcyBkb25lIGJ5ICdjdnNwcycuCkBAIC01OSwxOCArNjUsMTggQEAKIAlgQ1ZTL1JlcG9zaXRvcnlgLgogCiAtQyA8dGFyZ2V0LWRpcj46OgotICAgICAgICBUaGUgZ2l0IHJlcG9zaXRvcnkgdG8gaW1wb3J0IHRvLiAgSWYgdGhlIGRpcmVjdG9yeSBkb2Vzbid0CisJVGhlIEdpdCByZXBvc2l0b3J5IHRvIGltcG9ydCB0by4gIElmIHRoZSBkaXJlY3RvcnkgZG9lc24ndAogICAgICAgICBleGlzdCwgaXQgd2lsbCBiZSBjcmVhdGVkLiAgRGVmYXVsdCBpcyB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAKIC1yIDxyZW1vdGU+OjoKLQlUaGUgZ2l0IHJlbW90ZSB0byBpbXBvcnQgdGhpcyBDVlMgcmVwb3NpdG9yeSBpbnRvLgorCVRoZSBHaXQgcmVtb3RlIHRvIGltcG9ydCB0aGlzIENWUyByZXBvc2l0b3J5IGludG8uCiAJTW92ZXMgYWxsIENWUyBicmFuY2hlcyBpbnRvIHJlbW90ZXMvPHJlbW90ZT4vPGJyYW5jaD4KIAlha2luIHRvIHRoZSB3YXkgJ2dpdCBjbG9uZScgdXNlcyAnb3JpZ2luJyBieSBkZWZhdWx0LgogCiAtbyA8YnJhbmNoLWZvci1IRUFEPjo6CiAJV2hlbiBubyByZW1vdGUgaXMgc3BlY2lmaWVkICh2aWEgLXIpIHRoZSAnSEVBRCcgYnJhbmNoCi0JZnJvbSBDVlMgaXMgaW1wb3J0ZWQgdG8gdGhlICdvcmlnaW4nIGJyYW5jaCB3aXRoaW4gdGhlIGdpdAotCXJlcG9zaXRvcnksIGFzICdIRUFEJyBhbHJlYWR5IGhhcyBhIHNwZWNpYWwgbWVhbmluZyBmb3IgZ2l0LgorCWZyb20gQ1ZTIGlzIGltcG9ydGVkIHRvIHRoZSAnb3JpZ2luJyBicmFuY2ggd2l0aGluIHRoZSBHaXQKKwlyZXBvc2l0b3J5LCBhcyAnSEVBRCcgYWxyZWFkeSBoYXMgYSBzcGVjaWFsIG1lYW5pbmcgZm9yIEdpdC4KIAlXaGVuIGEgcmVtb3RlIGlzIHNwZWNpZmllZCB0aGUgJ0hFQUQnIGJyYW5jaCBpcyBuYW1lZAogCXJlbW90ZXMvPHJlbW90ZT4vbWFzdGVyIG1pcnJvcmluZyAnZ2l0IGNsb25lJyBiZWhhdmlvdXIuCiAJVXNlIHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIGltcG9ydCBpbnRvIGEgZGlmZmVyZW50CkBAIC0xMzcsMTcgKzE0MywxOSBAQAogLUEgPGF1dGhvci1jb252LWZpbGU+OjoKIAlDVlMgYnkgZGVmYXVsdCB1c2VzIHRoZSBVbml4IHVzZXJuYW1lIHdoZW4gd3JpdGluZyBpdHMKIAljb21taXQgbG9ncy4gVXNpbmcgdGhpcyBvcHRpb24gYW5kIGFuIGF1dGhvci1jb252LWZpbGUKLQlpbiB0aGlzIGZvcm1hdAorCW1hcHMgdGhlIG5hbWUgcmVjb3JkZWQgaW4gQ1ZTIHRvIGF1dGhvciBuYW1lLCBlLW1haWwgYW5kCisJb3B0aW9uYWwgdGltZXpvbmU6CiArCiAtLS0tLS0tLS0KIAlleG9uPUFuZHJlYXMgRXJpY3Nzb24gPGFlQG9wNS5zZT4KLQlzcGF3bj1TaW1vbiBQYXduIDxzcGF3bkBmcm9nLXBvbmQub3JnPgorCXNwYXduPVNpbW9uIFBhd24gPHNwYXduQGZyb2ctcG9uZC5vcmc+IEFtZXJpY2EvQ2hpY2FnbwogCiAtLS0tLS0tLS0KICsKICdnaXQgY3ZzaW1wb3J0JyB3aWxsIG1ha2UgaXQgYXBwZWFyIGFzIHRob3NlIGF1dGhvcnMgaGFkCiB0aGVpciBHSVRfQVVUSE9SX05BTUUgYW5kIEdJVF9BVVRIT1JfRU1BSUwgc2V0IHByb3Blcmx5Ci1hbGwgYWxvbmcuCithbGwgYWxvbmcuICBJZiBhIHRpbWV6b25lIGlzIHNwZWNpZmllZCwgR0lUX0FVVEhPUl9EQVRFIHdpbGwKK2hhdmUgdGhlIGNvcnJlc3BvbmRpbmcgb2Zmc2V0IGFwcGxpZWQuCiArCiBGb3IgY29udmVuaWVuY2UsIHRoaXMgZGF0YSBpcyBzYXZlZCB0byBgJEdJVF9ESVIvY3ZzLWF1dGhvcnNgCiBlYWNoIHRpbWUgdGhlICctQScgb3B0aW9uIGlzIHByb3ZpZGVkIGFuZCByZWFkIGZyb20gdGhhdCBzYW1lCkBAIC0yMTEsMTEgKzIxOSw5IEBACiAqIE11bHRpcGxlIHRhZ3Mgb24gdGhlIHNhbWUgcmV2aXNpb24gYXJlIG5vdCBpbXBvcnRlZC4KIAogSWYgeW91IHN1c3BlY3QgdGhhdCBhbnkgb2YgdGhlc2UgaXNzdWVzIG1heSBhcHBseSB0byB0aGUgcmVwb3NpdG9yeSB5b3UKLXdhbnQgdG8gaW1wb3J0IGNvbnNpZGVyIHVzaW5nIHRoZXNlIGFsdGVybmF0aXZlIHRvb2xzIHdoaWNoIHByb3ZlZCB0byBiZQotbW9yZSBzdGFibGUgaW4gcHJhY3RpY2U6Cit3YW50IHRvIGltb3J0LCBjb25zaWRlciB1c2luZyBjdnMyZ2l0OgogCi0qIGN2czJnaXQgKHBhcnQgb2YgY3ZzMnN2biksIGBodHRwOi8vY3ZzMnN2bi50aWdyaXMub3JnYAotKiBwYXJzZWN2cywgYGh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9+a2VpdGhwL3BhcnNlY3ZzYAorKiBjdnMyZ2l0IChwYXJ0IG9mIGN2czJzdm4pLCBgaHR0cDovL3N1YnZlcnNpb24uYXBhY2hlLm9yZy9gCiAKIEdJVAogLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1jdnNzZXJ2ZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtY3Zzc2VydmVyLnR4dAppbmRleCA4OGQ4MTRhLi40NzJmNWNiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jdnNzZXJ2ZXIudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWN2c3NlcnZlci50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdC1jdnNzZXJ2ZXIgLSBBIENWUyBzZXJ2ZXIgZW11bGF0b3IgZm9yIGdpdAorZ2l0LWN2c3NlcnZlciAtIEEgQ1ZTIHNlcnZlciBlbXVsYXRvciBmb3IgR2l0CiAKIFNZTk9QU0lTCiAtLS0tLS0tLQpAQCAtNjAsNyArNjAsNyBAQAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCiAKLVRoaXMgYXBwbGljYXRpb24gaXMgYSBDVlMgZW11bGF0aW9uIGxheWVyIGZvciBnaXQuCitUaGlzIGFwcGxpY2F0aW9uIGlzIGEgQ1ZTIGVtdWxhdGlvbiBsYXllciBmb3IgR2l0LgogCiBJdCBpcyBoaWdobHkgZnVuY3Rpb25hbC4gSG93ZXZlciwgbm90IGFsbCBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZCwKIGFuZCBmb3IgdGhvc2UgbWV0aG9kcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCwKQEAgLTcyLDkgKzcyLDkgQEAKIExJTUlUQVRJT05TCiAtLS0tLS0tLS0tLQogCi1DVlMgY2xpZW50cyBjYW5ub3QgdGFnLCBicmFuY2ggb3IgcGVyZm9ybSBHSVQgbWVyZ2VzLgorQ1ZTIGNsaWVudHMgY2Fubm90IHRhZywgYnJhbmNoIG9yIHBlcmZvcm0gR2l0IG1lcmdlcy4KIAotJ2dpdC1jdnNzZXJ2ZXInIG1hcHMgR0lUIGJyYW5jaGVzIHRvIENWUyBtb2R1bGVzLiBUaGlzIGlzIHZlcnkgZGlmZmVyZW50CisnZ2l0LWN2c3NlcnZlcicgbWFwcyBHaXQgYnJhbmNoZXMgdG8gQ1ZTIG1vZHVsZXMuIFRoaXMgaXMgdmVyeSBkaWZmZXJlbnQKIGZyb20gd2hhdCBtb3N0IENWUyB1c2VycyB3b3VsZCBleHBlY3Qgc2luY2UgaW4gQ1ZTIG1vZHVsZXMgdXN1YWxseSByZXByZXNlbnQKIG9uZSBvciBtb3JlIGRpcmVjdG9yaWVzLgogCkBAIC0xMzAsNyArMTMwLDcgQEAKIC0tLS0tLQogICAgY3ZzIC1kOnBzZXJ2ZXI6c29tZXVzZXI6c29tZXBhc3N3b3JkIDxhdD4gc2VydmVyL3BhdGgvcmVwby5naXQgY28gPEhFQURfbmFtZT4KIC0tLS0tLQotTm8gc3BlY2lhbCBzZXR1cCBpcyBuZWVkZWQgZm9yIFNTSCBhY2Nlc3MsIG90aGVyIHRoYW4gaGF2aW5nIEdJVCB0b29scworTm8gc3BlY2lhbCBzZXR1cCBpcyBuZWVkZWQgZm9yIFNTSCBhY2Nlc3MsIG90aGVyIHRoYW4gaGF2aW5nIEdpdCB0b29scwogaW4gdGhlIFBBVEguIElmIHlvdSBoYXZlIGNsaWVudHMgdGhhdCBkbyBub3QgYWNjZXB0IHRoZSBDVlNfU0VSVkVSCiBlbnZpcm9ubWVudCB2YXJpYWJsZSwgeW91IGNhbiByZW5hbWUgJ2dpdC1jdnNzZXJ2ZXInIHRvIGBjdnNgLgogCkBAIC0xNjAsOSArMTYwLDkgQEAKIE5vdGU6IHlvdSBuZWVkIHRvIGVuc3VyZSBlYWNoIHVzZXIgdGhhdCBpcyBnb2luZyB0byBpbnZva2UgJ2dpdC1jdnNzZXJ2ZXInIGhhcwogd3JpdGUgYWNjZXNzIHRvIHRoZSBsb2cgZmlsZSBhbmQgdG8gdGhlIGRhdGFiYXNlIChzZWUKIDw8ZGJiYWNrZW5kLERhdGFiYXNlIEJhY2tlbmQ+Pi4gSWYgeW91IHdhbnQgdG8gb2ZmZXIgd3JpdGUgYWNjZXNzIG92ZXIKLVNTSCwgdGhlIHVzZXJzIG9mIGNvdXJzZSBhbHNvIG5lZWQgd3JpdGUgYWNjZXNzIHRvIHRoZSBnaXQgcmVwb3NpdG9yeSBpdHNlbGYuCitTU0gsIHRoZSB1c2VycyBvZiBjb3Vyc2UgYWxzbyBuZWVkIHdyaXRlIGFjY2VzcyB0byB0aGUgR2l0IHJlcG9zaXRvcnkgaXRzZWxmLgogCi1Zb3UgYWxzbyBuZWVkIHRvIGVuc3VyZSB0aGF0IGVhY2ggcmVwb3NpdG9yeSBpcyAiYmFyZSIgKHdpdGhvdXQgYSBnaXQgaW5kZXgKK1lvdSBhbHNvIG5lZWQgdG8gZW5zdXJlIHRoYXQgZWFjaCByZXBvc2l0b3J5IGlzICJiYXJlIiAod2l0aG91dCBhIEdpdCBpbmRleAogZmlsZSkgZm9yIGBjdnMgY29tbWl0YCB0byB3b3JrLiBTZWUgbGlua2dpdDpnaXRjdnMtbWlncmF0aW9uWzddLgogCiBbW2NvbmZpZ2FjY2Vzc21ldGhvZF1dCkBAIC0xODEsNyArMTgxLDcgQEAKIDMuIElmIHlvdSBkaWRuJ3Qgc3BlY2lmeSB0aGUgQ1ZTUk9PVC9DVlNfU0VSVkVSIGRpcmVjdGx5IGluIHRoZSBjaGVja291dCBjb21tYW5kLAogICAgYXV0b21hdGljYWxseSBzYXZpbmcgaXQgaW4geW91ciAnQ1ZTL1Jvb3QnIGZpbGVzLCB0aGVuIHlvdSBuZWVkIHRvIHNldCB0aGVtCiAgICBleHBsaWNpdGx5IGluIHlvdXIgZW52aXJvbm1lbnQuICBDVlNST09UIHNob3VsZCBiZSBzZXQgYXMgcGVyIG5vcm1hbCwgYnV0IHRoZQotICAgZGlyZWN0b3J5IHNob3VsZCBwb2ludCBhdCB0aGUgYXBwcm9wcmlhdGUgZ2l0IHJlcG8uICBBcyBhYm92ZSwgZm9yIFNTSCBjbGllbnRzCisgICBkaXJlY3Rvcnkgc2hvdWxkIHBvaW50IGF0IHRoZSBhcHByb3ByaWF0ZSBHaXQgcmVwby4gIEFzIGFib3ZlLCBmb3IgU1NIIGNsaWVudHMKICAgIF9ub3RfIHJlc3RyaWN0ZWQgdG8gJ2dpdC1zaGVsbCcsIENWU19TRVJWRVIgc2hvdWxkIGJlIHNldCB0byAnZ2l0LWN2c3NlcnZlcicuCiArCiAtLQpAQCAtMTk3LDcgKzE5Nyw3IEBACiAgICBzaGVsbCBpcyBiYXNoLCAuYmFzaHJjIG1heSBiZSBhIHJlYXNvbmFibGUgYWx0ZXJuYXRpdmUuCiAKIDUuIENsaWVudHMgc2hvdWxkIG5vdyBiZSBhYmxlIHRvIGNoZWNrIG91dCB0aGUgcHJvamVjdC4gVXNlIHRoZSBDVlMgJ21vZHVsZScKLSAgIG5hbWUgdG8gaW5kaWNhdGUgd2hhdCBHSVQgJ2hlYWQnIHlvdSB3YW50IHRvIGNoZWNrIG91dC4gIFRoaXMgYWxzbyBzZXRzIHRoZQorICAgbmFtZSB0byBpbmRpY2F0ZSB3aGF0IEdpdCAnaGVhZCcgeW91IHdhbnQgdG8gY2hlY2sgb3V0LiAgVGhpcyBhbHNvIHNldHMgdGhlCiAgICBuYW1lIG9mIHlvdXIgbmV3bHkgY2hlY2tlZC1vdXQgZGlyZWN0b3J5LCB1bmxlc3MgeW91IHRlbGwgaXQgb3RoZXJ3aXNlIHdpdGgKICAgIGAtZCA8ZGlyX25hbWU+YC4gIEZvciBleGFtcGxlLCB0aGlzIGNoZWNrcyBvdXQgJ21hc3RlcicgYnJhbmNoIHRvIHRoZQogICAgYHByb2plY3QtbWFzdGVyYCBkaXJlY3Rvcnk6CkBAIC0yMTAsNyArMjEwLDcgQEAKIERhdGFiYXNlIEJhY2tlbmQKIC0tLS0tLS0tLS0tLS0tLS0KIAotJ2dpdC1jdnNzZXJ2ZXInIHVzZXMgb25lIGRhdGFiYXNlIHBlciBnaXQgaGVhZCAoaS5lLiBDVlMgbW9kdWxlKSB0bworJ2dpdC1jdnNzZXJ2ZXInIHVzZXMgb25lIGRhdGFiYXNlIHBlciBHaXQgaGVhZCAoaS5lLiBDVlMgbW9kdWxlKSB0bwogc3RvcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcG9zaXRvcnkgdG8gbWFpbnRhaW4gY29uc2lzdGVudAogQ1ZTIHJldmlzaW9uIG51bWJlcnMuIFRoZSBkYXRhYmFzZSBuZWVkcyB0byBiZQogdXBkYXRlZCAoaS5lLiB3cml0dGVuIHRvKSBhZnRlciBldmVyeSBjb21taXQuCkBAIC0yMjUsNyArMjI1LDcgQEAKIHRoZSBkYXRhYmFzZSB0byB3b3JrIHJlbGlhYmx5IChvdGhlcndpc2UgeW91IG5lZWQgdG8gbWFrZSBzdXJlCiB0aGF0IHRoZSBkYXRhYmFzZSBpcyB1cC10by1kYXRlIGFueSB0aW1lICdnaXQtY3Zzc2VydmVyJyBpcyBleGVjdXRlZCkuCiAKLUJ5IGRlZmF1bHQgaXQgdXNlcyBTUUxpdGUgZGF0YWJhc2VzIGluIHRoZSBnaXQgZGlyZWN0b3J5LCBuYW1lZAorQnkgZGVmYXVsdCBpdCB1c2VzIFNRTGl0ZSBkYXRhYmFzZXMgaW4gdGhlIEdpdCBkaXJlY3RvcnksIG5hbWVkCiBgZ2l0Y3ZzLjxtb2R1bGVfbmFtZT4uc3FsaXRlYC4gTm90ZSB0aGF0IHRoZSBTUUxpdGUgYmFja2VuZCBjcmVhdGVzCiB0ZW1wb3JhcnkgZmlsZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBkYXRhYmFzZSBmaWxlIG9uCiB3cml0ZSBzbyBpdCBtaWdodCBub3QgYmUgZW5vdWdoIHRvIGdyYW50IHRoZSB1c2VycyB1c2luZwpAQCAtMjkxLDE0ICsyOTEsMTQgQEAKIEluIGBkYmRyaXZlcmAgYW5kIGBkYnVzZXJgIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzOgogCiAlRzo6Ci0JZ2l0IGRpcmVjdG9yeSBuYW1lCisJR2l0IGRpcmVjdG9yeSBuYW1lCiAlZzo6Ci0JZ2l0IGRpcmVjdG9yeSBuYW1lLCB3aGVyZSBhbGwgY2hhcmFjdGVycyBleGNlcHQgZm9yCisJR2l0IGRpcmVjdG9yeSBuYW1lLCB3aGVyZSBhbGwgY2hhcmFjdGVycyBleGNlcHQgZm9yCiAJYWxwaGEtbnVtZXJpYyBvbmVzLCBgLmAsIGFuZCBgLWAgYXJlIHJlcGxhY2VkIHdpdGgKIAlgX2AgKHRoaXMgc2hvdWxkIG1ha2UgaXQgZWFzaWVyIHRvIHVzZSB0aGUgZGlyZWN0b3J5CiAJbmFtZSBpbiBhIGZpbGVuYW1lIGlmIHdhbnRlZCkKICVtOjoKLQlDVlMgbW9kdWxlL2dpdCBoZWFkIG5hbWUKKwlDVlMgbW9kdWxlL0dpdCBoZWFkIG5hbWUKICVhOjoKIAlhY2Nlc3MgbWV0aG9kIChvbmUgb2YgImV4dCIgb3IgInBzZXJ2ZXIiKQogJXU6OgpAQCAtMzU5LDYgKzM1OSw0MyBAQAogCiBBbGwgdGhlIG9wZXJhdGlvbnMgcmVxdWlyZWQgZm9yIG5vcm1hbCB1c2UgYXJlIHN1cHBvcnRlZCwgaW5jbHVkaW5nCiBjaGVja291dCwgZGlmZiwgc3RhdHVzLCB1cGRhdGUsIGxvZywgYWRkLCByZW1vdmUsIGNvbW1pdC4KKworTW9zdCBDVlMgY29tbWFuZCBhcmd1bWVudHMgdGhhdCByZWFkIENWUyB0YWdzIG9yIHJldmlzaW9uIG51bWJlcnMKKyh0eXBpY2FsbHkgLXIpIHdvcmssIGFuZCBhbHNvIHN1cHBvcnQgYW55IGdpdCByZWZzcGVjCisodGFnLCBicmFuY2gsIGNvbW1pdCBJRCwgZXRjKS4KK0hvd2V2ZXIsIENWUyByZXZpc2lvbiBudW1iZXJzIGZvciBub24tZGVmYXVsdCBicmFuY2hlcyBhcmUgbm90IHdlbGwKK2VtdWxhdGVkLCBhbmQgY3ZzIGxvZyBkb2VzIG5vdCBzaG93IHRhZ3Mgb3IgYnJhbmNoZXMgYXQKK2FsbC4gIChOb24tbWFpbi1icmFuY2ggQ1ZTIHJldmlzaW9uIG51bWJlcnMgc3VwZXJmaWNpYWxseSByZXNlbWJsZSBDVlMKK3JldmlzaW9uIG51bWJlcnMsIGJ1dCB0aGV5IGFjdHVhbGx5IGVuY29kZSBhIGdpdCBjb21taXQgSUQgZGlyZWN0bHksCityYXRoZXIgdGhhbiByZXByZXNlbnQgdGhlIG51bWJlciBvZiByZXZpc2lvbnMgc2luY2UgdGhlIGJyYW5jaCBwb2ludC4pCisKK05vdGUgdGhhdCB0aGVyZSBhcmUgdHdvIHdheXMgdG8gY2hlY2tvdXQgYSBwYXJ0aWN1bGFyIGJyYW5jaC4KK0FzIGRlc2NyaWJlZCBlbHNld2hlcmUgb24gdGhpcyBwYWdlLCB0aGUgIm1vZHVsZSIgcGFyYW1ldGVyCitvZiBjdnMgY2hlY2tvdXQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBicmFuY2ggbmFtZSwgYW5kIGl0IGJlY29tZXMKK3RoZSBtYWluIGJyYW5jaC4gIEl0IHJlbWFpbnMgdGhlIG1haW4gYnJhbmNoIGZvciBhIGdpdmVuIHNhbmRib3gKK2V2ZW4gaWYgeW91IHRlbXBvcmFyaWx5IG1ha2UgYW5vdGhlciBicmFuY2ggc3RpY2t5IHdpdGgKK2N2cyB1cGRhdGUgLXIuICBBbHRlcm5hdGl2ZWx5LCB0aGUgLXIgYXJndW1lbnQgY2FuIGluZGljYXRlCitzb21lIG90aGVyIGJyYW5jaCB0byBhY3R1YWxseSBjaGVja291dCwgZXZlbiB0aG91Z2ggdGhlIG1vZHVsZQoraXMgc3RpbGwgdGhlICJtYWluIiBicmFuY2guICBUcmFkZW9mZnMgKGFzIGN1cnJlbnRseQoraW1wbGVtZW50ZWQpOiBFYWNoIG5ldyAibW9kdWxlIiBjcmVhdGVzIGEgbmV3IGRhdGFiYXNlIG9uIGRpc2sgd2l0aAorYSBoaXN0b3J5IGZvciB0aGUgZ2l2ZW4gbW9kdWxlLCBhbmQgYWZ0ZXIgdGhlIGRhdGFiYXNlIGlzIGNyZWF0ZWQsCitvcGVyYXRpb25zIGFnYWluc3QgdGhhdCBtYWluIGJyYW5jaCBhcmUgZmFzdC4gIE9yIGFsdGVybmF0aXZlbHksCistciBkb2Vzbid0IHRha2UgYW55IGV4dHJhIGRpc2sgc3BhY2UsIGJ1dCBtYXkgYmUgc2lnbmlmaWNhbnRseSBzbG93ZXIgZm9yCittYW55IG9wZXJhdGlvbnMsIGxpa2UgY3ZzIHVwZGF0ZS4KKworSWYgeW91IHdhbnQgdG8gcmVmZXIgdG8gYSBnaXQgcmVmc3BlYyB0aGF0IGhhcyBjaGFyYWN0ZXJzIHRoYXQgYXJlCitub3QgYWxsb3dlZCBieSBDVlMsIHlvdSBoYXZlIHR3byBvcHRpb25zLiAgRmlyc3QsIGl0IG1heSBqdXN0IHdvcmsKK3RvIHN1cHBseSB0aGUgZ2l0IHJlZnNwZWMgZGlyZWN0bHkgdG8gdGhlIGFwcHJvcHJpYXRlIENWUyAtciBhcmd1bWVudDsKK3NvbWUgQ1ZTIGNsaWVudHMgZG9uJ3Qgc2VlbSB0byBkbyBtdWNoIHNhbml0eSBjaGVja2luZyBvZiB0aGUgYXJndW1lbnQuCitTZWNvbmQsIGlmIHRoYXQgZmFpbHMsIHlvdSBjYW4gdXNlIGEgc3BlY2lhbCBjaGFyYWN0ZXIgZXNjYXBlIG1lY2hhbmlzbQordGhhdCBvbmx5IHVzZXMgY2hhcmFjdGVycyB0aGF0IGFyZSB2YWxpZCBpbiBDVlMgdGFncy4gIEEgc2VxdWVuY2UKK29mIDQgb3IgNSBjaGFyYWN0ZXJzIG9mIHRoZSBmb3JtICh1bmRlcnNjb3JlIChgIl8iYCksIGRhc2ggKGAiLSJgKSwKK29uZSBvciB0d28gY2hhcmFjdGVycywgYW5kIGRhc2ggKGAiLSJgKSkgY2FuIGVuY29kZSB2YXJpb3VzIGNoYXJhY3RlcnMgYmFzZWQKK29uIHRoZSBvbmUgb3IgdHdvIGxldHRlcnM6IGAicyJgIGZvciBzbGFzaCAoYCIvImApLCBgInAiYCBmb3IKK3BlcmlvZCAoYCIuImApLCBgInUiYCBmb3IgdW5kZXJzY29yZSAoYCJfImApLCBvciB0d28gaGV4YWRlY2ltYWwgZGlnaXRzCitmb3IgYW55IGJ5dGUgdmFsdWUgYXQgYWxsICh0eXBpY2FsbHkgYW4gQVNDSUkgbnVtYmVyLCBvciBwZXJoYXBzIGEgcGFydAorb2YgYSBVVEYtOCBlbmNvZGVkIGNoYXJhY3RlcikuCisKIExlZ2FjeSBtb25pdG9yaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgKGVkaXQsIHdhdGNoIGFuZCByZWxhdGVkKS4KIEV4cG9ydHMgYW5kIHRhZ2dpbmcgKHRhZ3MgYW5kIGJyYW5jaGVzKSBhcmUgbm90IHN1cHBvcnRlZCBhdCB0aGlzIHN0YWdlLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1kYWVtb24udHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZGFlbW9uLnR4dAppbmRleCAzMWIyOGZjLi4yMjNmNzMxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1kYWVtb24udHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWRhZW1vbi50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdC1kYWVtb24gLSBBIHJlYWxseSBzaW1wbGUgc2VydmVyIGZvciBnaXQgcmVwb3NpdG9yaWVzCitnaXQtZGFlbW9uIC0gQSByZWFsbHkgc2ltcGxlIHNlcnZlciBmb3IgR2l0IHJlcG9zaXRvcmllcwogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTE2LDE3ICsxNiwyMCBAQAogCSAgICAgWy0tcmV1c2VhZGRyXSBbLS1kZXRhY2hdIFstLXBpZC1maWxlPTxmaWxlPl0KIAkgICAgIFstLWVuYWJsZT08c2VydmljZT5dIFstLWRpc2FibGU9PHNlcnZpY2U+XQogCSAgICAgWy0tYWxsb3ctb3ZlcnJpZGU9PHNlcnZpY2U+XSBbLS1mb3JiaWQtb3ZlcnJpZGU9PHNlcnZpY2U+XQotCSAgICAgWy0taW5ldGQgfCBbLS1saXN0ZW49PGhvc3Rfb3JfaXBhZGRyPl0gWy0tcG9ydD08bj5dIFstLXVzZXI9PHVzZXI+IFstLWdyb3VwPTxncm91cD5dXQorCSAgICAgWy0tYWNjZXNzLWhvb2s9PHBhdGg+XSBbLS1bbm8tXWluZm9ybWF0aXZlLWVycm9yc10KKwkgICAgIFstLWluZXRkIHwKKwkgICAgICBbLS1saXN0ZW49PGhvc3Rfb3JfaXBhZGRyPl0gWy0tcG9ydD08bj5dCisJICAgICAgWy0tdXNlcj08dXNlcj4gWy0tZ3JvdXA9PGdyb3VwPl1dXQogCSAgICAgWzxkaXJlY3Rvcnk+Li4uXQogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KLUEgcmVhbGx5IHNpbXBsZSBUQ1AgZ2l0IGRhZW1vbiB0aGF0IG5vcm1hbGx5IGxpc3RlbnMgb24gcG9ydCAiREVGQVVMVF9HSVRfUE9SVCIKK0EgcmVhbGx5IHNpbXBsZSBUQ1AgR2l0IGRhZW1vbiB0aGF0IG5vcm1hbGx5IGxpc3RlbnMgb24gcG9ydCAiREVGQVVMVF9HSVRfUE9SVCIKIGFrYSA5NDE4LiAgSXQgd2FpdHMgZm9yIGEgY29ubmVjdGlvbiBhc2tpbmcgZm9yIGEgc2VydmljZSwgYW5kIHdpbGwgc2VydmUKIHRoYXQgc2VydmljZSBpZiBpdCBpcyBlbmFibGVkLgogCiBJdCB2ZXJpZmllcyB0aGF0IHRoZSBkaXJlY3RvcnkgaGFzIHRoZSBtYWdpYyBmaWxlICJnaXQtZGFlbW9uLWV4cG9ydC1vayIsIGFuZAotaXQgd2lsbCByZWZ1c2UgdG8gZXhwb3J0IGFueSBnaXQgZGlyZWN0b3J5IHRoYXQgaGFzbid0IGV4cGxpY2l0bHkgYmVlbiBtYXJrZWQKK2l0IHdpbGwgcmVmdXNlIHRvIGV4cG9ydCBhbnkgR2l0IGRpcmVjdG9yeSB0aGF0IGhhc24ndCBleHBsaWNpdGx5IGJlZW4gbWFya2VkCiBmb3IgZXhwb3J0IHRoaXMgd2F5ICh1bmxlc3MgdGhlICctLWV4cG9ydC1hbGwnIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQpLiBJZiB5b3UKIHBhc3Mgc29tZSBkaXJlY3RvcnkgcGF0aHMgYXMgJ2dpdCBkYWVtb24nIGFyZ3VtZW50cywgeW91IGNhbiBmdXJ0aGVyIHJlc3RyaWN0CiB0aGUgb2ZmZXJzIHRvIGEgd2hpdGVsaXN0IGNvbXByaXNpbmcgb2YgdGhvc2UuCkBAIC0zNiw3ICszOSw3IEBACiBmcm9tICdnaXQgZmV0Y2gnLCAnZ2l0IHB1bGwnLCBhbmQgJ2dpdCBjbG9uZScuCiAKIFRoaXMgaXMgaWRlYWxseSBzdWl0ZWQgZm9yIHJlYWQtb25seSB1cGRhdGVzLCBpLmUuLCBwdWxsaW5nIGZyb20KLWdpdCByZXBvc2l0b3JpZXMuCitHaXQgcmVwb3NpdG9yaWVzLgogCiBBbiBgdXBsb2FkLWFyY2hpdmVgIGFsc28gZXhpc3RzIHRvIHNlcnZlICdnaXQgYXJjaGl2ZScuCiAKQEAgLTUwLDcgKzUzLDcgQEAKIAogLS1iYXNlLXBhdGg9PHBhdGg+OjoKIAlSZW1hcCBhbGwgdGhlIHBhdGggcmVxdWVzdHMgYXMgcmVsYXRpdmUgdG8gdGhlIGdpdmVuIHBhdGguCi0JVGhpcyBpcyBzb3J0IG9mICJHSVQgcm9vdCIgLSBpZiB5b3UgcnVuICdnaXQgZGFlbW9uJyB3aXRoCisJVGhpcyBpcyBzb3J0IG9mICJHaXQgcm9vdCIgLSBpZiB5b3UgcnVuICdnaXQgZGFlbW9uJyB3aXRoCiAJJy0tYmFzZS1wYXRoPS9zcnYvZ2l0JyBvbiBleGFtcGxlLmNvbSwgdGhlbiBpZiB5b3UgbGF0ZXIgdHJ5IHRvIHB1bGwKIAknZ2l0Oi8vZXhhbXBsZS5jb20vaGVsbG8uZ2l0JywgJ2dpdCBkYWVtb24nIHdpbGwgaW50ZXJwcmV0IHRoZSBwYXRoCiAJYXMgJy9zcnYvZ2l0L2hlbGxvLmdpdCcuCkBAIC03Miw3ICs3NSw3IEBACiAJd2hpdGVsaXN0LgogCiAtLWV4cG9ydC1hbGw6OgotCUFsbG93IHB1bGxpbmcgZnJvbSBhbGwgZGlyZWN0b3JpZXMgdGhhdCBsb29rIGxpa2UgR0lUIHJlcG9zaXRvcmllcworCUFsbG93IHB1bGxpbmcgZnJvbSBhbGwgZGlyZWN0b3JpZXMgdGhhdCBsb29rIGxpa2UgR2l0IHJlcG9zaXRvcmllcwogCShoYXZlIHRoZSAnb2JqZWN0cycgYW5kICdyZWZzJyBzdWJkaXJlY3RvcmllcyksIGV2ZW4gaWYgdGhleQogCWRvIG5vdCBoYXZlIHRoZSAnZ2l0LWRhZW1vbi1leHBvcnQtb2snIGZpbGUuCiAKQEAgLTE0Niw2ICsxNDksMTMgQEAKIEdpdmluZyB0aGVzZSBvcHRpb25zIGlzIGFuIGVycm9yIHdoZW4gdXNlZCB3aXRoIGAtLWluZXRkYDsgdXNlCiB0aGUgZmFjaWxpdHkgb2YgaW5ldCBkYWVtb24gdG8gYWNoaWV2ZSB0aGUgc2FtZSBiZWZvcmUgc3Bhd25pbmcKICdnaXQgZGFlbW9uJyBpZiBuZWVkZWQuCisrCitMaWtlIG1hbnkgcHJvZ3JhbXMgdGhhdCBzd2l0Y2ggdXNlciBpZCwgdGhlIGRhZW1vbiBkb2VzIG5vdCByZXNldAorZW52aXJvbm1lbnQgdmFyaWFibGVzIHN1Y2ggYXMgYCRIT01FYCB3aGVuIGl0IHJ1bnMgZ2l0IHByb2dyYW1zLAorZS5nLiBgdXBsb2FkLXBhY2tgIGFuZCBgcmVjZWl2ZS1wYWNrYC4gV2hlbiB1c2luZyB0aGlzIG9wdGlvbiwgeW91CittYXkgYWxzbyB3YW50IHRvIHNldCBhbmQgZXhwb3J0IGBIT01FYCB0byBwb2ludCBhdCB0aGUgaG9tZQorZGlyZWN0b3J5IG9mIGA8dXNlcj5gIGJlZm9yZSBzdGFydGluZyB0aGUgZGFlbW9uLCBhbmQgbWFrZSBzdXJlIGFueQorR2l0IGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gdGhhdCBkaXJlY3RvcnkgYXJlIHJlYWRhYmxlIGJ5IGA8dXNlcj5gLgogCiAtLWVuYWJsZT08c2VydmljZT46OgogLS1kaXNhYmxlPTxzZXJ2aWNlPjo6CkBAIC0xNjEsOCArMTcxLDcgQEAKIAlyZXBvc2l0b3J5IGNvbmZpZ3VyYXRpb24uICBCeSBkZWZhdWx0LCBhbGwgdGhlIHNlcnZpY2VzCiAJYXJlIG92ZXJyaWRhYmxlLgogCi0tLWluZm9ybWF0aXZlLWVycm9yczo6Ci0tLW5vLWluZm9ybWF0aXZlLWVycm9yczo6CistLVtuby1daW5mb3JtYXRpdmUtZXJyb3JzOjoKIAlXaGVuIGluZm9ybWF0aXZlIGVycm9ycyBhcmUgdHVybmVkIG9uLCBnaXQtZGFlbW9uIHdpbGwgcmVwb3J0CiAJbW9yZSB2ZXJib3NlIGVycm9ycyB0byB0aGUgY2xpZW50LCBkaWZmZXJlbnRpYXRpbmcgY29uZGl0aW9ucwogCWxpa2UgIm5vIHN1Y2ggcmVwb3NpdG9yeSIgZnJvbSAicmVwb3NpdG9yeSBub3QgZXhwb3J0ZWQiLiBUaGlzCkBAIC0xNzEsNiArMTgwLDIxIEBACiAJZXJyb3JzIGFyZSBub3QgZW5hYmxlZCwgYWxsIGVycm9ycyByZXBvcnQgImFjY2VzcyBkZW5pZWQiIHRvIHRoZQogCWNsaWVudC4gVGhlIGRlZmF1bHQgaXMgLS1uby1pbmZvcm1hdGl2ZS1lcnJvcnMuCiAKKy0tYWNjZXNzLWhvb2s9PHBhdGg+OjoKKwlFdmVyeSB0aW1lIGEgY2xpZW50IGNvbm5lY3RzLCBmaXJzdCBydW4gYW4gZXh0ZXJuYWwgY29tbWFuZAorCXNwZWNpZmllZCBieSB0aGUgPHBhdGg+IHdpdGggc2VydmljZSBuYW1lIChlLmcuICJ1cGxvYWQtcGFjayIpLAorCXBhdGggdG8gdGhlIHJlcG9zaXRvcnksIGhvc3RuYW1lICglSCksIGNhbm9uaWNhbCBob3N0bmFtZQorCSglQ0gpLCBpcCBhZGRyZXNzICglSVApLCBhbmQgdGNwIHBvcnQgKCVQKSBhcyBpdHMgY29tbWFuZCBsaW5lCisJYXJndW1lbnRzLiBUaGUgZXh0ZXJuYWwgY29tbWFuZCBjYW4gZGVjaWRlIHRvIGRlY2xpbmUgdGhlCisJc2VydmljZSBieSBleGl0aW5nIHdpdGggYSBub24temVybyBzdGF0dXMgKG9yIHRvIGFsbG93IGl0IGJ5CisJZXhpdGluZyB3aXRoIGEgemVybyBzdGF0dXMpLiAgSXQgY2FuIGFsc28gbG9vayBhdCB0aGUgJFJFTU9URV9BRERSCisJYW5kICRSRU1PVEVfUE9SVCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gbGVhcm4gYWJvdXQgdGhlCisJcmVxdWVzdG9yIHdoZW4gbWFraW5nIHRoaXMgZGVjaXNpb24uCisrCitUaGUgZXh0ZXJuYWwgY29tbWFuZCBjYW4gb3B0aW9uYWxseSB3cml0ZSBhIHNpbmdsZSBsaW5lIHRvIGl0cworc3RhbmRhcmQgb3V0cHV0IHRvIGJlIHNlbnQgdG8gdGhlIHJlcXVlc3RvciBhcyBhbiBlcnJvciBtZXNzYWdlIHdoZW4KK2l0IGRlY2xpbmVzIHRoZSBzZXJ2aWNlLgorCiA8ZGlyZWN0b3J5Pjo6CiAJQSBkaXJlY3RvcnkgdG8gYWRkIHRvIHRoZSB3aGl0ZWxpc3Qgb2YgYWxsb3dlZCBkaXJlY3Rvcmllcy4gVW5sZXNzCiAJLS1zdHJpY3QtcGF0aHMgaXMgc3BlY2lmaWVkIHRoaXMgd2lsbCBhbHNvIGluY2x1ZGUgc3ViZGlyZWN0b3JpZXMKQEAgLTIwNCw3ICsyMjgsNyBAQAogCWNhbiBwdXNoIGFueXRoaW5nIGludG8gdGhlIHJlcG9zaXRvcnksIGluY2x1ZGluZyByZW1vdmFsCiAJb2YgcmVmcykuICBUaGlzIGlzIHNvbGVseSBtZWFudCBmb3IgYSBjbG9zZWQgTEFOIHNldHRpbmcKIAl3aGVyZSBldmVyeWJvZHkgaXMgZnJpZW5kbHkuICBUaGlzIHNlcnZpY2UgY2FuIGJlCi0JZW5hYmxlZCBieSBgZGFlbW9uLnJlY2VpdmVwYWNrYCBjb25maWd1cmF0aW9uIGl0ZW0gdG8KKwllbmFibGVkIGJ5IHNldHRpbmcgYGRhZW1vbi5yZWNlaXZlcGFja2AgY29uZmlndXJhdGlvbiBpdGVtIHRvCiAJYHRydWVgLgogCiBFWEFNUExFUwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZGVzY3JpYmUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZGVzY3JpYmUudHh0CmluZGV4IDAzOWNjZTIuLjI4ZTVlYzAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWRlc2NyaWJlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1kZXNjcmliZS50eHQKQEAgLTM2LDEyICszNiwxMiBAQAogCiAtLWFsbDo6CiAJSW5zdGVhZCBvZiB1c2luZyBvbmx5IHRoZSBhbm5vdGF0ZWQgdGFncywgdXNlIGFueSByZWYKLQlmb3VuZCBpbiBgLmdpdC9yZWZzL2AuICBUaGlzIG9wdGlvbiBlbmFibGVzIG1hdGNoaW5nCisJZm91bmQgaW4gYHJlZnMvYCBuYW1lc3BhY2UuICBUaGlzIG9wdGlvbiBlbmFibGVzIG1hdGNoaW5nCiAJYW55IGtub3duIGJyYW5jaCwgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCwgb3IgbGlnaHR3ZWlnaHQgdGFnLgogCiAtLXRhZ3M6OgogCUluc3RlYWQgb2YgdXNpbmcgb25seSB0aGUgYW5ub3RhdGVkIHRhZ3MsIHVzZSBhbnkgdGFnCi0JZm91bmQgaW4gYC5naXQvcmVmcy90YWdzYC4gIFRoaXMgb3B0aW9uIGVuYWJsZXMgbWF0Y2hpbmcKKwlmb3VuZCBpbiBgcmVmcy90YWdzYCBuYW1lc3BhY2UuICBUaGlzIG9wdGlvbiBlbmFibGVzIG1hdGNoaW5nCiAJYSBsaWdodHdlaWdodCAobm9uLWFubm90YXRlZCkgdGFnLgogCiAtLWNvbnRhaW5zOjoKQEAgLTgxLDggKzgxLDkgQEAKIAl0aGF0IHBvaW50cyBhdCBvYmplY3QgZGVhZGJlZS4uLi4pLgogCiAtLW1hdGNoIDxwYXR0ZXJuPjo6Ci0JT25seSBjb25zaWRlciB0YWdzIG1hdGNoaW5nIHRoZSBnaXZlbiBwYXR0ZXJuIChjYW4gYmUgdXNlZCB0byBhdm9pZAotCWxlYWtpbmcgcHJpdmF0ZSB0YWdzIG1hZGUgZnJvbSB0aGUgcmVwb3NpdG9yeSkuCisJT25seSBjb25zaWRlciB0YWdzIG1hdGNoaW5nIHRoZSBnaXZlbiBgZ2xvYig3KWAgcGF0dGVybiwKKwlleGNsdWRpbmcgdGhlICJyZWZzL3RhZ3MvIiBwcmVmaXguICBUaGlzIGNhbiBiZSB1c2VkIHRvIGF2b2lkCisJbGVha2luZyBwcml2YXRlIHRhZ3MgZnJvbSB0aGUgcmVwb3NpdG9yeS4KIAogLS1hbHdheXM6OgogCVNob3cgdW5pcXVlbHkgYWJicmV2aWF0ZWQgY29tbWl0IG9iamVjdCBhcyBmYWxsYmFjay4KQEAgLTEzMSw3ICsxMzIsNyBAQAogCiBOb3RlIHRoYXQgdGhlIHN1ZmZpeCB5b3UgZ2V0IGlmIHlvdSB0eXBlIHRoZXNlIGNvbW1hbmRzIHRvZGF5IG1heSBiZQogbG9uZ2VyIHRoYW4gd2hhdCBMaW51cyBzYXcgYWJvdmUgd2hlbiBoZSByYW4gdGhlc2UgY29tbWFuZHMsIGFzIHlvdXIKLWdpdCByZXBvc2l0b3J5IG1heSBoYXZlIG5ldyBjb21taXRzIHdob3NlIG9iamVjdCBuYW1lcyBiZWdpbiB3aXRoCitHaXQgcmVwb3NpdG9yeSBtYXkgaGF2ZSBuZXcgY29tbWl0cyB3aG9zZSBvYmplY3QgbmFtZXMgYmVnaW4gd2l0aAogOTc1YiB0aGF0IGRpZCBub3QgZXhpc3QgYmFjayB0aGVuLCBhbmQgIi1nOTc1YiIgc3VmZml4IGFsb25lIG1heSBub3QKIGJlIHN1ZmZpY2llbnQgdG8gZGlzYW1iaWd1YXRlIHRoZXNlIGNvbW1pdHMuCiAKQEAgLTE0OCw3ICsxNDksNyBAQAogSWYgYW4gZXhhY3QgbWF0Y2ggd2FzIG5vdCBmb3VuZCwgJ2dpdCBkZXNjcmliZScgd2lsbCB3YWxrIGJhY2sKIHRocm91Z2ggdGhlIGNvbW1pdCBoaXN0b3J5IHRvIGxvY2F0ZSBhbiBhbmNlc3RvciBjb21taXQgd2hpY2gKIGhhcyBiZWVuIHRhZ2dlZC4gIFRoZSBhbmNlc3RvcidzIHRhZyB3aWxsIGJlIG91dHB1dCBhbG9uZyB3aXRoIGFuCi1hYmJyZXZpYXRpb24gb2YgdGhlIGlucHV0IGNvbW1pdHRpc2gncyBTSEExLgorYWJicmV2aWF0aW9uIG9mIHRoZSBpbnB1dCBjb21taXR0aXNoJ3MgU0hBLTEuCiAKIElmIG11bHRpcGxlIHRhZ3Mgd2VyZSBmb3VuZCBkdXJpbmcgdGhlIHdhbGsgdGhlbiB0aGUgdGFnIHdoaWNoCiBoYXMgdGhlIGZld2VzdCBjb21taXRzIGRpZmZlcmVudCBmcm9tIHRoZSBpbnB1dCBjb21taXR0aXNoIHdpbGwgYmUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWRpZmYtaW5kZXgudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi1pbmRleC50eHQKaW5kZXggYzBiN2M1OC4uYTg2Y2Y2MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi1pbmRleC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi1pbmRleC50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdC1kaWZmLWluZGV4IC0gQ29tcGFyZXMgY29udGVudCBhbmQgbW9kZSBvZiBibG9icyBiZXR3ZWVuIHRoZSBpbmRleCBhbmQgcmVwb3NpdG9yeQorZ2l0LWRpZmYtaW5kZXggLSBDb21wYXJlIGEgdHJlZSB0byB0aGUgd29ya2luZyB0cmVlIG9yIGluZGV4CiAKIAogU1lOT1BTSVMKQEAgLTEzLDExICsxMywxMSBAQAogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KLUNvbXBhcmVzIHRoZSBjb250ZW50IGFuZCBtb2RlIG9mIHRoZSBibG9icyBmb3VuZCB2aWEgYSB0cmVlCi1vYmplY3Qgd2l0aCB0aGUgY29udGVudCBvZiB0aGUgY3VycmVudCBpbmRleCBhbmQsIG9wdGlvbmFsbHkKLWlnbm9yaW5nIHRoZSBzdGF0IHN0YXRlIG9mIHRoZSBmaWxlIG9uIGRpc2suICBXaGVuIHBhdGhzIGFyZQotc3BlY2lmaWVkLCBjb21wYXJlcyBvbmx5IHRob3NlIG5hbWVkIHBhdGhzLiAgT3RoZXJ3aXNlIGFsbAotZW50cmllcyBpbiB0aGUgaW5kZXggYXJlIGNvbXBhcmVkLgorQ29tcGFyZXMgdGhlIGNvbnRlbnQgYW5kIG1vZGUgb2YgdGhlIGJsb2JzIGZvdW5kIGluIGEgdHJlZSBvYmplY3QKK3dpdGggdGhlIGNvcnJlc3BvbmRpbmcgdHJhY2tlZCBmaWxlcyBpbiB0aGUgd29ya2luZyB0cmVlLCBvciB3aXRoIHRoZQorY29ycmVzcG9uZGluZyBwYXRocyBpbiB0aGUgaW5kZXguICBXaGVuIDxwYXRoPiBhcmd1bWVudHMgYXJlIHByZXNlbnQsCitjb21wYXJlcyBvbmx5IHBhdGhzIG1hdGNoaW5nIHRob3NlIHBhdHRlcm5zLiAgT3RoZXJ3aXNlIGFsbCB0cmFja2VkCitmaWxlcyBhcmUgY29tcGFyZWQuCiAKIE9QVElPTlMKIC0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWRpZmYudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi50eHQKaW5kZXggZjhkMDgxOS4uYTdiNDYyMCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi50eHQKQEAgLTEyLDYgKzEyLDcgQEAKICdnaXQgZGlmZicgW29wdGlvbnNdIFs8Y29tbWl0Pl0gWy0tXSBbPHBhdGg+Li4uXQogJ2dpdCBkaWZmJyBbb3B0aW9uc10gLS1jYWNoZWQgWzxjb21taXQ+XSBbLS1dIFs8cGF0aD4uLi5dCiAnZ2l0IGRpZmYnIFtvcHRpb25zXSA8Y29tbWl0PiA8Y29tbWl0PiBbLS1dIFs8cGF0aD4uLi5dCisnZ2l0IGRpZmYnIFtvcHRpb25zXSA8YmxvYj4gPGJsb2I+CiAnZ2l0IGRpZmYnIFtvcHRpb25zXSBbLS1uby1pbmRleF0gWy0tXSA8cGF0aD4gPHBhdGg+CiAKIERFU0NSSVBUSU9OCkBAIC0yNCw3ICsyNSw3IEBACiAKIAlUaGlzIGZvcm0gaXMgdG8gdmlldyB0aGUgY2hhbmdlcyB5b3UgbWFkZSByZWxhdGl2ZSB0bwogCXRoZSBpbmRleCAoc3RhZ2luZyBhcmVhIGZvciB0aGUgbmV4dCBjb21taXQpLiAgSW4gb3RoZXIKLQl3b3JkcywgdGhlIGRpZmZlcmVuY2VzIGFyZSB3aGF0IHlvdSBfY291bGRfIHRlbGwgZ2l0IHRvCisJd29yZHMsIHRoZSBkaWZmZXJlbmNlcyBhcmUgd2hhdCB5b3UgX2NvdWxkXyB0ZWxsIEdpdCB0bwogCWZ1cnRoZXIgYWRkIHRvIHRoZSBpbmRleCBidXQgeW91IHN0aWxsIGhhdmVuJ3QuICBZb3UgY2FuCiAJc3RhZ2UgdGhlc2UgY2hhbmdlcyBieSB1c2luZyBsaW5rZ2l0OmdpdC1hZGRbMV0uCiArCkBAIC01NSw2ICs1NiwxMSBAQAogCVRoaXMgaXMgdG8gdmlldyB0aGUgY2hhbmdlcyBiZXR3ZWVuIHR3byBhcmJpdHJhcnkKIAk8Y29tbWl0Pi4KIAorJ2dpdCBkaWZmJyBbb3B0aW9uc10gPGJsb2I+IDxibG9iPjo6CisKKwlUaGlzIGZvcm0gaXMgdG8gdmlldyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgcmF3CisJY29udGVudHMgb2YgdHdvIGJsb2Igb2JqZWN0cy4KKwogJ2dpdCBkaWZmJyBbLS1vcHRpb25zXSA8Y29tbWl0Pi4uPGNvbW1pdD4gWy0tXSBbPHBhdGg+Li4uXTo6CiAKIAlUaGlzIGlzIHN5bm9ueW1vdXMgdG8gdGhlIHByZXZpb3VzIGZvcm0uICBJZiA8Y29tbWl0PiBvbgpAQCAtNzIsOCArNzgsNyBAQAogSnVzdCBpbiBjYXNlIGlmIHlvdSBhcmUgZG9pbmcgc29tZXRoaW5nIGV4b3RpYywgaXQgc2hvdWxkIGJlCiBub3RlZCB0aGF0IGFsbCBvZiB0aGUgPGNvbW1pdD4gaW4gdGhlIGFib3ZlIGRlc2NyaXB0aW9uLCBleGNlcHQKIGluIHRoZSBsYXN0IHR3byBmb3JtcyB0aGF0IHVzZSAiLi4iIG5vdGF0aW9ucywgY2FuIGJlIGFueQotPHRyZWU+LiAgVGhlIHRoaXJkIGZvcm0gKCdnaXQgZGlmZiA8Y29tbWl0PiA8Y29tbWl0PicpIGNhbiBhbHNvCi1iZSB1c2VkIHRvIGNvbXBhcmUgdHdvIDxibG9iPiBvYmplY3RzLgorPHRyZWU+LgogCiBGb3IgYSBtb3JlIGNvbXBsZXRlIGxpc3Qgb2Ygd2F5cyB0byBzcGVsbCA8Y29tbWl0Piwgc2VlCiAiU1BFQ0lGWUlORyBSRVZJU0lPTlMiIHNlY3Rpb24gaW4gbGlua2dpdDpnaXRyZXZpc2lvbnNbN10uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1kaWZmdG9vbC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1kaWZmdG9vbC50eHQKaW5kZXggMzFmYzJlMy4uMTE4ODdlNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZGlmZnRvb2wudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWRpZmZ0b29sLnR4dApAQCAtMTIsNyArMTIsNyBAQAogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KLSdnaXQgZGlmZnRvb2wnIGlzIGEgZ2l0IGNvbW1hbmQgdGhhdCBhbGxvd3MgeW91IHRvIGNvbXBhcmUgYW5kIGVkaXQgZmlsZXMKKydnaXQgZGlmZnRvb2wnIGlzIGEgR2l0IGNvbW1hbmQgdGhhdCBhbGxvd3MgeW91IHRvIGNvbXBhcmUgYW5kIGVkaXQgZmlsZXMKIGJldHdlZW4gcmV2aXNpb25zIHVzaW5nIGNvbW1vbiBkaWZmIHRvb2xzLiAgJ2dpdCBkaWZmdG9vbCcgaXMgYSBmcm9udGVuZAogdG8gJ2dpdCBkaWZmJyBhbmQgYWNjZXB0cyB0aGUgc2FtZSBvcHRpb25zIGFuZCBhcmd1bWVudHMuIFNlZQogbGlua2dpdDpnaXQtZGlmZlsxXS4KQEAgLTY5LDYgKzY5LDE1IEBACiAtLXRvb2wtaGVscDo6CiAJUHJpbnQgYSBsaXN0IG9mIGRpZmYgdG9vbHMgdGhhdCBtYXkgYmUgdXNlZCB3aXRoIGAtLXRvb2xgLgogCistLVtuby1dc3ltbGlua3M6OgorCSdnaXQgZGlmZnRvb2wnJ3MgZGVmYXVsdCBiZWhhdmlvciBpcyBjcmVhdGUgc3ltbGlua3MgdG8gdGhlCisJd29ya2luZyB0cmVlIHdoZW4gcnVuIGluIGAtLWRpci1kaWZmYCBtb2RlIGFuZCB0aGUgcmlnaHQtaGFuZAorCXNpZGUgb2YgdGhlIGNvbXBhcmlzb24geWllbGRzIHRoZSBzYW1lIGNvbnRlbnQgYXMgdGhlIGZpbGUgaW4KKwl0aGUgd29ya2luZyB0cmVlLgorKworU3BlY2lmeWluZyBgLS1uby1zeW1saW5rc2AgaW5zdHJ1Y3RzICdnaXQgZGlmZnRvb2wnIHRvIGNyZWF0ZSBjb3BpZXMKK2luc3RlYWQuICBgLS1uby1zeW1saW5rc2AgaXMgdGhlIGRlZmF1bHQgb24gV2luZG93cy4KKwogLXggPGNvbW1hbmQ+OjoKIC0tZXh0Y21kPTxjb21tYW5kPjo6CiAJU3BlY2lmeSBhIGN1c3RvbSBjb21tYW5kIGZvciB2aWV3aW5nIGRpZmZzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZmFzdC1leHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZmFzdC1leHBvcnQudHh0CmluZGV4IGQ2NDg3ZTEuLmVmYjAzODAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWZhc3QtZXhwb3J0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1mYXN0LWV4cG9ydC50eHQKQEAgLTI3LDE1ICsyNywxNyBAQAogCUluc2VydCAncHJvZ3Jlc3MnIHN0YXRlbWVudHMgZXZlcnkgPG4+IG9iamVjdHMsIHRvIGJlIHNob3duIGJ5CiAJJ2dpdCBmYXN0LWltcG9ydCcgZHVyaW5nIGltcG9ydC4KIAotLS1zaWduZWQtdGFncz0odmVyYmF0aW18d2FybnxzdHJpcHxhYm9ydCk6OgorLS1zaWduZWQtdGFncz0odmVyYmF0aW18d2Fybnx3YXJuLXN0cmlwfHN0cmlwfGFib3J0KTo6CiAJU3BlY2lmeSBob3cgdG8gaGFuZGxlIHNpZ25lZCB0YWdzLiAgU2luY2UgYW55IHRyYW5zZm9ybWF0aW9uCiAJYWZ0ZXIgdGhlIGV4cG9ydCBjYW4gY2hhbmdlIHRoZSB0YWcgbmFtZXMgKHdoaWNoIGNhbiBhbHNvIGhhcHBlbgogCXdoZW4gZXhjbHVkaW5nIHJldmlzaW9ucykgdGhlIHNpZ25hdHVyZXMgd2lsbCBub3QgbWF0Y2guCiArCiBXaGVuIGFza2luZyB0byAnYWJvcnQnICh3aGljaCBpcyB0aGUgZGVmYXVsdCksIHRoaXMgcHJvZ3JhbSB3aWxsIGRpZQotd2hlbiBlbmNvdW50ZXJpbmcgYSBzaWduZWQgdGFnLiAgV2l0aCAnc3RyaXAnLCB0aGUgdGFncyB3aWxsIGJlIG1hZGUKLXVuc2lnbmVkLCB3aXRoICd2ZXJiYXRpbScsIHRoZXkgd2lsbCBiZSBzaWxlbnRseSBleHBvcnRlZAotYW5kIHdpdGggJ3dhcm4nLCB0aGV5IHdpbGwgYmUgZXhwb3J0ZWQsIGJ1dCB5b3Ugd2lsbCBzZWUgYSB3YXJuaW5nLgord2hlbiBlbmNvdW50ZXJpbmcgYSBzaWduZWQgdGFnLiAgV2l0aCAnc3RyaXAnLCB0aGUgdGFncyB3aWxsIHNpbGVudGx5CitiZSBtYWRlIHVuc2lnbmVkLCB3aXRoICd3YXJuLXN0cmlwJyB0aGV5IHdpbGwgYmUgbWFkZSB1bnNpZ25lZCBidXQgYQord2FybmluZyB3aWxsIGJlIGRpc3BsYXllZCwgd2l0aCAndmVyYmF0aW0nLCB0aGV5IHdpbGwgYmUgc2lsZW50bHkKK2V4cG9ydGVkIGFuZCB3aXRoICd3YXJuJywgdGhleSB3aWxsIGJlIGV4cG9ydGVkLCBidXQgeW91IHdpbGwgc2VlIGEKK3dhcm5pbmcuCiAKIC0tdGFnLW9mLWZpbHRlcmVkLW9iamVjdD0oYWJvcnR8ZHJvcHxyZXdyaXRlKTo6CiAJU3BlY2lmeSBob3cgdG8gaGFuZGxlIHRhZ3Mgd2hvc2UgdGFnZ2VkIG9iamVjdCBpcyBmaWx0ZXJlZCBvdXQuCkBAIC02Niw2ICs2OCw4IEBACiAJaW5jcmVtZW50YWwgcnVucy4gIEFzIDxmaWxlPiBpcyBvbmx5IG9wZW5lZCBhbmQgdHJ1bmNhdGVkCiAJYXQgY29tcGxldGlvbiwgdGhlIHNhbWUgcGF0aCBjYW4gYWxzbyBiZSBzYWZlbHkgZ2l2ZW4gdG8KIAlcLS1pbXBvcnQtbWFya3MuCisJVGhlIGZpbGUgd2lsbCBub3QgYmUgd3JpdHRlbiBpZiBubyBuZXcgb2JqZWN0IGhhcyBiZWVuCisJbWFya2VkL2V4cG9ydGVkLgogCiAtLWltcG9ydC1tYXJrcz08ZmlsZT46OgogCUJlZm9yZSBwcm9jZXNzaW5nIGFueSBpbnB1dCwgbG9hZCB0aGUgbWFya3Mgc3BlY2lmaWVkIGluCkBAIC0xMDIsMTEgKzEwNiwxMSBAQAogCWRpZmZlcmVudCBmcm9tIHRoZSBjb21taXQncyBmaXJzdCBwYXJlbnQpLgogCiBbPGdpdC1yZXYtbGlzdC1hcmdzPi4uLl06OgotICAgICAgIEEgbGlzdCBvZiBhcmd1bWVudHMsIGFjY2VwdGFibGUgdG8gJ2dpdCByZXYtcGFyc2UnIGFuZAotICAgICAgICdnaXQgcmV2LWxpc3QnLCB0aGF0IHNwZWNpZmllcyB0aGUgc3BlY2lmaWMgb2JqZWN0cyBhbmQgcmVmZXJlbmNlcwotICAgICAgIHRvIGV4cG9ydC4gIEZvciBleGFtcGxlLCBgbWFzdGVyfjEwLi5tYXN0ZXJgIGNhdXNlcyB0aGUKLSAgICAgICBjdXJyZW50IG1hc3RlciByZWZlcmVuY2UgdG8gYmUgZXhwb3J0ZWQgYWxvbmcgd2l0aCBhbGwgb2JqZWN0cwotICAgICAgIGFkZGVkIHNpbmNlIGl0cyAxMHRoIGFuY2VzdG9yIGNvbW1pdC4KKwlBIGxpc3Qgb2YgYXJndW1lbnRzLCBhY2NlcHRhYmxlIHRvICdnaXQgcmV2LXBhcnNlJyBhbmQKKwknZ2l0IHJldi1saXN0JywgdGhhdCBzcGVjaWZpZXMgdGhlIHNwZWNpZmljIG9iamVjdHMgYW5kIHJlZmVyZW5jZXMKKwl0byBleHBvcnQuICBGb3IgZXhhbXBsZSwgYG1hc3Rlcn4xMC4ubWFzdGVyYCBjYXVzZXMgdGhlCisJY3VycmVudCBtYXN0ZXIgcmVmZXJlbmNlIHRvIGJlIGV4cG9ydGVkIGFsb25nIHdpdGggYWxsIG9iamVjdHMKKwlhZGRlZCBzaW5jZSBpdHMgMTB0aCBhbmNlc3RvciBjb21taXQuCiAKIEVYQU1QTEVTCiAtLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZmFzdC1pbXBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZmFzdC1pbXBvcnQudHh0CmluZGV4IDI2MjBkMjguLmJmMWEwMmEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWZhc3QtaW1wb3J0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1mYXN0LWltcG9ydC50eHQKQEAgLTMzLDM0ICszMyw0NiBAQAogCiBPUFRJT05TCiAtLS0tLS0tCi0tLWRhdGUtZm9ybWF0PTxmbXQ+OjoKLQlTcGVjaWZ5IHRoZSB0eXBlIG9mIGRhdGVzIHRoZSBmcm9udGVuZCB3aWxsIHN1cHBseSB0bwotCWZhc3QtaW1wb3J0IHdpdGhpbiBgYXV0aG9yYCwgYGNvbW1pdHRlcmAgYW5kIGB0YWdnZXJgIGNvbW1hbmRzLgotCVNlZSBgYERhdGUgRm9ybWF0cycnIGJlbG93IGZvciBkZXRhaWxzIGFib3V0IHdoaWNoIGZvcm1hdHMKLQlhcmUgc3VwcG9ydGVkLCBhbmQgdGhlaXIgc3ludGF4LgogCiAtLWZvcmNlOjoKIAlGb3JjZSB1cGRhdGluZyBtb2RpZmllZCBleGlzdGluZyBicmFuY2hlcywgZXZlbiBpZiBkb2luZwogCXNvIHdvdWxkIGNhdXNlIGNvbW1pdHMgdG8gYmUgbG9zdCAoYXMgdGhlIG5ldyBjb21taXQgZG9lcwogCW5vdCBjb250YWluIHRoZSBvbGQgY29tbWl0KS4KIAotLS1tYXgtcGFjay1zaXplPTxuPjo6Ci0JTWF4aW11bSBzaXplIG9mIGVhY2ggb3V0cHV0IHBhY2tmaWxlLgotCVRoZSBkZWZhdWx0IGlzIHVubGltaXRlZC4KKy0tcXVpZXQ6OgorCURpc2FibGUgYWxsIG5vbi1mYXRhbCBvdXRwdXQsIG1ha2luZyBmYXN0LWltcG9ydCBzaWxlbnQgd2hlbiBpdAorCWlzIHN1Y2Nlc3NmdWwuICBUaGlzIG9wdGlvbiBkaXNhYmxlcyB0aGUgb3V0cHV0IHNob3duIGJ5CisJXC0tc3RhdHMuCiAKLS0tYmlnLWZpbGUtdGhyZXNob2xkPTxuPjo6Ci0JTWF4aW11bSBzaXplIG9mIGEgYmxvYiB0aGF0IGZhc3QtaW1wb3J0IHdpbGwgYXR0ZW1wdCB0bwotCWNyZWF0ZSBhIGRlbHRhIGZvciwgZXhwcmVzc2VkIGluIGJ5dGVzLiAgVGhlIGRlZmF1bHQgaXMgNTEybQotCSg1MTIgTWlCKS4gIFNvbWUgaW1wb3J0ZXJzIG1heSB3aXNoIHRvIGxvd2VyIHRoaXMgb24gc3lzdGVtcwotCXdpdGggY29uc3RyYWluZWQgbWVtb3J5LgorLS1zdGF0czo6CisJRGlzcGxheSBzb21lIGJhc2ljIHN0YXRpc3RpY3MgYWJvdXQgdGhlIG9iamVjdHMgZmFzdC1pbXBvcnQgaGFzCisJY3JlYXRlZCwgdGhlIHBhY2tmaWxlcyB0aGV5IHdlcmUgc3RvcmVkIGludG8sIGFuZCB0aGUKKwltZW1vcnkgdXNlZCBieSBmYXN0LWltcG9ydCBkdXJpbmcgdGhpcyBydW4uICBTaG93aW5nIHRoaXMgb3V0cHV0CisJaXMgY3VycmVudGx5IHRoZSBkZWZhdWx0LCBidXQgY2FuIGJlIGRpc2FibGVkIHdpdGggXC0tcXVpZXQuCiAKLS0tZGVwdGg9PG4+OjoKLQlNYXhpbXVtIGRlbHRhIGRlcHRoLCBmb3IgYmxvYiBhbmQgdHJlZSBkZWx0aWZpY2F0aW9uLgotCURlZmF1bHQgaXMgMTAuCitPcHRpb25zIGZvciBGcm9udGVuZHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fgogCi0tLWFjdGl2ZS1icmFuY2hlcz08bj46OgotCU1heGltdW0gbnVtYmVyIG9mIGJyYW5jaGVzIHRvIG1haW50YWluIGFjdGl2ZSBhdCBvbmNlLgotCVNlZSBgYE1lbW9yeSBVdGlsaXphdGlvbicnIGJlbG93IGZvciBkZXRhaWxzLiAgRGVmYXVsdCBpcyA1LgorLS1jYXQtYmxvYi1mZD08ZmQ+OjoKKwlXcml0ZSByZXNwb25zZXMgdG8gYGNhdC1ibG9iYCBhbmQgYGxzYCBxdWVyaWVzIHRvIHRoZQorCWZpbGUgZGVzY3JpcHRvciA8ZmQ+IGluc3RlYWQgb2YgYHN0ZG91dGAuICBBbGxvd3MgYHByb2dyZXNzYAorCW91dHB1dCBpbnRlbmRlZCBmb3IgdGhlIGVuZC11c2VyIHRvIGJlIHNlcGFyYXRlZCBmcm9tIG90aGVyCisJb3V0cHV0LgorCistLWRhdGUtZm9ybWF0PTxmbXQ+OjoKKwlTcGVjaWZ5IHRoZSB0eXBlIG9mIGRhdGVzIHRoZSBmcm9udGVuZCB3aWxsIHN1cHBseSB0bworCWZhc3QtaW1wb3J0IHdpdGhpbiBgYXV0aG9yYCwgYGNvbW1pdHRlcmAgYW5kIGB0YWdnZXJgIGNvbW1hbmRzLgorCVNlZSBgYERhdGUgRm9ybWF0cycnIGJlbG93IGZvciBkZXRhaWxzIGFib3V0IHdoaWNoIGZvcm1hdHMKKwlhcmUgc3VwcG9ydGVkLCBhbmQgdGhlaXIgc3ludGF4LgorCistLWRvbmU6OgorCVRlcm1pbmF0ZSB3aXRoIGVycm9yIGlmIHRoZXJlIGlzIG5vIGBkb25lYCBjb21tYW5kIGF0IHRoZSBlbmQgb2YKKwl0aGUgc3RyZWFtLiAgVGhpcyBvcHRpb24gbWlnaHQgYmUgdXNlZnVsIGZvciBkZXRlY3RpbmcgZXJyb3JzCisJdGhhdCBjYXVzZSB0aGUgZnJvbnRlbmQgdG8gdGVybWluYXRlIGJlZm9yZSBpdCBoYXMgc3RhcnRlZCB0bworCXdyaXRlIGEgc3RyZWFtLgorCitMb2NhdGlvbnMgb2YgTWFya3MgRmlsZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCiAtLWV4cG9ydC1tYXJrcz08ZmlsZT46OgogCUR1bXBzIHRoZSBpbnRlcm5hbCBtYXJrcyB0YWJsZSB0byA8ZmlsZT4gd2hlbiBjb21wbGV0ZS4KQEAgLTgzLDMxICs5NSwzMyBAQAogCUxpa2UgLS1pbXBvcnQtbWFya3MgYnV0IGluc3RlYWQgb2YgZXJyb3Jpbmcgb3V0LCBzaWxlbnRseQogCXNraXBzIHRoZSBmaWxlIGlmIGl0IGRvZXMgbm90IGV4aXN0LgogCi0tLXJlbGF0aXZlLW1hcmtzOjoKKy0tW25vLV1yZWxhdGl2ZS1tYXJrczo6CiAJQWZ0ZXIgc3BlY2lmeWluZyAtLXJlbGF0aXZlLW1hcmtzIHRoZSBwYXRocyBzcGVjaWZpZWQKIAl3aXRoIC0taW1wb3J0LW1hcmtzPSBhbmQgLS1leHBvcnQtbWFya3M9IGFyZSByZWxhdGl2ZQogCXRvIGFuIGludGVybmFsIGRpcmVjdG9yeSBpbiB0aGUgY3VycmVudCByZXBvc2l0b3J5LgogCUluIGdpdC1mYXN0LWltcG9ydCB0aGlzIG1lYW5zIHRoYXQgdGhlIHBhdGhzIGFyZSByZWxhdGl2ZQogCXRvIHRoZSAuZ2l0L2luZm8vZmFzdC1pbXBvcnQgZGlyZWN0b3J5LiBIb3dldmVyLCBvdGhlcgogCWltcG9ydGVycyBtYXkgdXNlIGEgZGlmZmVyZW50IGxvY2F0aW9uLgorKworUmVsYXRpdmUgYW5kIG5vbi1yZWxhdGl2ZSBtYXJrcyBtYXkgYmUgY29tYmluZWQgYnkgaW50ZXJ3ZWF2aW5nCistLShuby0pLXJlbGF0aXZlLW1hcmtzIHdpdGggdGhlIC0tKGltcG9ydHxleHBvcnQpLW1hcmtzPSBvcHRpb25zLgogCi0tLW5vLXJlbGF0aXZlLW1hcmtzOjoKLQlOZWdhdGVzIGEgcHJldmlvdXMgLS1yZWxhdGl2ZS1tYXJrcy4gQWxsb3dzIGZvciBjb21iaW5pbmcKLQlyZWxhdGl2ZSBhbmQgbm9uLXJlbGF0aXZlIG1hcmtzIGJ5IGludGVyd2VhdmluZwotCS0tKG5vLSktcmVsYXRpdmUtbWFya3Mgd2l0aCB0aGUgLS0oaW1wb3J0fGV4cG9ydCktbWFya3M9Ci0Jb3B0aW9ucy4KK1BlcmZvcm1hbmNlIGFuZCBDb21wcmVzc2lvbiBUdW5pbmcKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAotLS1jYXQtYmxvYi1mZD08ZmQ+OjoKLQlXcml0ZSByZXNwb25zZXMgdG8gYGNhdC1ibG9iYCBhbmQgYGxzYCBxdWVyaWVzIHRvIHRoZQotCWZpbGUgZGVzY3JpcHRvciA8ZmQ+IGluc3RlYWQgb2YgYHN0ZG91dGAuICBBbGxvd3MgYHByb2dyZXNzYAotCW91dHB1dCBpbnRlbmRlZCBmb3IgdGhlIGVuZC11c2VyIHRvIGJlIHNlcGFyYXRlZCBmcm9tIG90aGVyCi0Jb3V0cHV0LgorLS1hY3RpdmUtYnJhbmNoZXM9PG4+OjoKKwlNYXhpbXVtIG51bWJlciBvZiBicmFuY2hlcyB0byBtYWludGFpbiBhY3RpdmUgYXQgb25jZS4KKwlTZWUgYGBNZW1vcnkgVXRpbGl6YXRpb24nJyBiZWxvdyBmb3IgZGV0YWlscy4gIERlZmF1bHQgaXMgNS4KIAotLS1kb25lOjoKLQlSZXF1aXJlIGEgYGRvbmVgIGNvbW1hbmQgYXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLgotCVRoaXMgb3B0aW9uIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZGV0ZWN0aW5nIGVycm9ycyB0aGF0Ci0JY2F1c2UgdGhlIGZyb250ZW5kIHRvIHRlcm1pbmF0ZSBiZWZvcmUgaXQgaGFzIHN0YXJ0ZWQgdG8KLQl3cml0ZSBhIHN0cmVhbS4KKy0tYmlnLWZpbGUtdGhyZXNob2xkPTxuPjo6CisJTWF4aW11bSBzaXplIG9mIGEgYmxvYiB0aGF0IGZhc3QtaW1wb3J0IHdpbGwgYXR0ZW1wdCB0bworCWNyZWF0ZSBhIGRlbHRhIGZvciwgZXhwcmVzc2VkIGluIGJ5dGVzLiAgVGhlIGRlZmF1bHQgaXMgNTEybQorCSg1MTIgTWlCKS4gIFNvbWUgaW1wb3J0ZXJzIG1heSB3aXNoIHRvIGxvd2VyIHRoaXMgb24gc3lzdGVtcworCXdpdGggY29uc3RyYWluZWQgbWVtb3J5LgorCistLWRlcHRoPTxuPjo6CisJTWF4aW11bSBkZWx0YSBkZXB0aCwgZm9yIGJsb2IgYW5kIHRyZWUgZGVsdGlmaWNhdGlvbi4KKwlEZWZhdWx0IGlzIDEwLgogCiAtLWV4cG9ydC1wYWNrLWVkZ2VzPTxmaWxlPjo6CiAJQWZ0ZXIgY3JlYXRpbmcgYSBwYWNrZmlsZSwgcHJpbnQgYSBsaW5lIG9mIGRhdGEgdG8KQEAgLTExOCwxNiArMTMyLDkgQEAKIAlhcyB0aGVzZSBjb21taXRzIGNhbiBiZSB1c2VkIGFzIGVkZ2UgcG9pbnRzIGR1cmluZyBjYWxscwogCXRvICdnaXQgcGFjay1vYmplY3RzJy4KIAotLS1xdWlldDo6Ci0JRGlzYWJsZSBhbGwgbm9uLWZhdGFsIG91dHB1dCwgbWFraW5nIGZhc3QtaW1wb3J0IHNpbGVudCB3aGVuIGl0Ci0JaXMgc3VjY2Vzc2Z1bC4gIFRoaXMgb3B0aW9uIGRpc2FibGVzIHRoZSBvdXRwdXQgc2hvd24gYnkKLQlcLS1zdGF0cy4KLQotLS1zdGF0czo6Ci0JRGlzcGxheSBzb21lIGJhc2ljIHN0YXRpc3RpY3MgYWJvdXQgdGhlIG9iamVjdHMgZmFzdC1pbXBvcnQgaGFzCi0JY3JlYXRlZCwgdGhlIHBhY2tmaWxlcyB0aGV5IHdlcmUgc3RvcmVkIGludG8sIGFuZCB0aGUKLQltZW1vcnkgdXNlZCBieSBmYXN0LWltcG9ydCBkdXJpbmcgdGhpcyBydW4uICBTaG93aW5nIHRoaXMgb3V0cHV0Ci0JaXMgY3VycmVudGx5IHRoZSBkZWZhdWx0LCBidXQgY2FuIGJlIGRpc2FibGVkIHdpdGggXC0tcXVpZXQuCistLW1heC1wYWNrLXNpemU9PG4+OjoKKwlNYXhpbXVtIHNpemUgb2YgZWFjaCBvdXRwdXQgcGFja2ZpbGUuCisJVGhlIGRlZmF1bHQgaXMgdW5saW1pdGVkLgogCiAKIFBlcmZvcm1hbmNlCkBAIC00MjMsNyArNDMwLDcgQEAKIAogSGVyZSBgPG5hbWU+YCBpcyB0aGUgcGVyc29uJ3MgZGlzcGxheSBuYW1lIChmb3IgZXhhbXBsZQogYGBDb20gTSBJdHRlcicnKSBhbmQgYDxlbWFpbD5gIGlzIHRoZSBwZXJzb24ncyBlbWFpbCBhZGRyZXNzCi0oYGBjbUBleGFtcGxlLmNvbScnKS4gIGBMVGAgYW5kIGBHVGAgYXJlIHRoZSBsaXRlcmFsIGxlc3MtdGhhbiAoXHgzYykKKyhgYFxjbUBleGFtcGxlLmNvbScnKS4gIGBMVGAgYW5kIGBHVGAgYXJlIHRoZSBsaXRlcmFsIGxlc3MtdGhhbiAoXHgzYykKIGFuZCBncmVhdGVyLXRoYW4gKFx4M2UpIHN5bWJvbHMuICBUaGVzZSBhcmUgcmVxdWlyZWQgdG8gZGVsaW1pdAogdGhlIGVtYWlsIGFkZHJlc3MgZnJvbSB0aGUgb3RoZXIgZmllbGRzIGluIHRoZSBsaW5lLiAgTm90ZSB0aGF0CiBgPG5hbWU+YCBhbmQgYDxlbWFpbD5gIGFyZSBmcmVlLWZvcm0gYW5kIG1heSBjb250YWluIGFueSBzZXF1ZW5jZQpAQCAtNDM4LDcgKzQ0NSw5IEBACiBeXl5eXl4KIFRoZSBgZnJvbWAgY29tbWFuZCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNvbW1pdCB0byBpbml0aWFsaXplCiB0aGlzIGJyYW5jaCBmcm9tLiAgVGhpcyByZXZpc2lvbiB3aWxsIGJlIHRoZSBmaXJzdCBhbmNlc3RvciBvZiB0aGUKLW5ldyBjb21taXQuCituZXcgY29tbWl0LiAgVGhlIHN0YXRlIG9mIHRoZSB0cmVlIGJ1aWx0IGF0IHRoaXMgY29tbWl0IHdpbGwgYmVnaW4KK3dpdGggdGhlIHN0YXRlIGF0IHRoZSBgZnJvbWAgY29tbWl0LCBhbmQgYmUgYWx0ZXJlZCBieSB0aGUgY29udGVudAorbW9kaWZpY2F0aW9ucyBpbiB0aGlzIGNvbW1pdC4KIAogT21pdHRpbmcgdGhlIGBmcm9tYCBjb21tYW5kIGluIHRoZSBmaXJzdCBjb21taXQgb2YgYSBuZXcgYnJhbmNoCiB3aWxsIGNhdXNlIGZhc3QtaW1wb3J0IHRvIGNyZWF0ZSB0aGF0IGNvbW1pdCB3aXRoIG5vIGFuY2VzdG9yLiBUaGlzCkBAIC00ODgsNyArNDk3LDkgQEAKIAogYG1lcmdlYAogXl5eXl5eXgotSW5jbHVkZXMgb25lIGFkZGl0aW9uYWwgYW5jZXN0b3IgY29tbWl0LiAgSWYgdGhlIGBmcm9tYCBjb21tYW5kIGlzCitJbmNsdWRlcyBvbmUgYWRkaXRpb25hbCBhbmNlc3RvciBjb21taXQuICBUaGUgYWRkaXRpb25hbCBhbmNlc3RyeQorbGluayBkb2VzIG5vdCBjaGFuZ2UgdGhlIHdheSB0aGUgdHJlZSBzdGF0ZSBpcyBidWlsdCBhdCB0aGlzIGNvbW1pdC4KK0lmIHRoZSBgZnJvbWAgY29tbWFuZCBpcwogb21pdHRlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGJyYW5jaCwgdGhlIGZpcnN0IGBtZXJnZWAgY29tbWl0IHdpbGwgYmUKIHRoZSBmaXJzdCBhbmNlc3RvciBvZiB0aGUgY3VycmVudCBjb21taXQsIGFuZCB0aGUgYnJhbmNoIHdpbGwgc3RhcnQKIG91dCB3aXRoIG5vIGZpbGVzLiAgQW4gdW5saW1pdGVkIG51bWJlciBvZiBgbWVyZ2VgIGNvbW1hbmRzIHBlcgpAQCAtNTU0LDggKzU2NSwxMiBAQAogc2xhc2ggYC9gKSwgbWF5IGNvbnRhaW4gYW55IGJ5dGUgb3RoZXIgdGhhbiBgTEZgLCBhbmQgbXVzdCBub3QKIHN0YXJ0IHdpdGggZG91YmxlIHF1b3RlIChgImApLgogCi1JZiBhbiBgTEZgIG9yIGRvdWJsZSBxdW90ZSBtdXN0IGJlIGVuY29kZWQgaW50byBgPHBhdGg+YCBzaGVsbC1zdHlsZQotcXVvdGluZyBzaG91bGQgYmUgdXNlZCwgZS5nLiBgInBhdGgvd2l0aFxuIGFuZCBcIiBpbiBpdCJgLgorQSBwYXRoIGNhbiB1c2UgQy1zdHlsZSBzdHJpbmcgcXVvdGluZzsgdGhpcyBpcyBhY2NlcHRlZCBpbiBhbGwgY2FzZXMKK2FuZCBtYW5kYXRvcnkgaWYgdGhlIGZpbGVuYW1lIHN0YXJ0cyB3aXRoIGRvdWJsZSBxdW90ZSBvciBjb250YWlucworYExGYC4gSW4gQy1zdHlsZSBxdW90aW5nLCB0aGUgY29tcGxldGUgbmFtZSBzaG91bGQgYmUgc3Vycm91bmRlZCB3aXRoCitkb3VibGUgcXVvdGVzLCBhbmQgYW55IGBMRmAsIGJhY2tzbGFzaCwgb3IgZG91YmxlIHF1b3RlIGNoYXJhY3RlcnMKK211c3QgYmUgZXNjYXBlZCBieSBwcmVjZWRpbmcgdGhlbSB3aXRoIGEgYmFja3NsYXNoIChlLmcuLAorYCJwYXRoL3dpdGhcbiwgXFwgYW5kIFwiIGluIGl0ImApLgogCiBUaGUgdmFsdWUgb2YgYDxwYXRoPmAgbXVzdCBiZSBpbiBjYW5vbmljYWwgZm9ybS4gVGhhdCBpcyBpdCBtdXN0IG5vdDoKIApAQCAtMTA0Nyw3ICsxMDYyLDkgQEAKIAlFcnJvciBvdXQgaWYgdGhlIHN0cmVhbSBlbmRzIHdpdGhvdXQgYSAnZG9uZScgY29tbWFuZC4KIAlXaXRob3V0IHRoaXMgZmVhdHVyZSwgZXJyb3JzIGNhdXNpbmcgdGhlIGZyb250ZW5kIHRvIGVuZAogCWFicnVwdGx5IGF0IGEgY29udmVuaWVudCBwb2ludCBpbiB0aGUgc3RyZWFtIGNhbiBnbwotCXVuZGV0ZWN0ZWQuCisJdW5kZXRlY3RlZC4gIFRoaXMgbWF5IG9jY3VyLCBmb3IgZXhhbXBsZSwgaWYgYW4gaW1wb3J0CisJZnJvbnQgZW5kIGRpZXMgaW4gbWlkLW9wZXJhdGlvbiB3aXRob3V0IGVtaXR0aW5nIFNJR1RFUk0KKwlvciBTSUdLSUxMIGF0IGl0cyBzdWJvcmRpbmF0ZSBnaXQgZmFzdC1pbXBvcnQgaW5zdGFuY2UuCiAKIGBvcHRpb25gCiB+fn5+fn5+fgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZmV0Y2gtcGFjay50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1mZXRjaC1wYWNrLnR4dAppbmRleCA0NzRmYTMwLi4xZTcxNzU0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1mZXRjaC1wYWNrLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1mZXRjaC1wYWNrLnR4dApAQCAtOSw3ICs5LDEwIEBACiBTWU5PUFNJUwogLS0tLS0tLS0KIFt2ZXJzZV0KLSdnaXQgZmV0Y2gtcGFjaycgWy0tYWxsXSBbLS1xdWlldHwtcV0gWy0ta2VlcHwta10gWy0tdGhpbl0gWy0taW5jbHVkZS10YWddIFstLXVwbG9hZC1wYWNrPTxnaXQtdXBsb2FkLXBhY2s+XSBbLS1kZXB0aD08bj5dIFstLW5vLXByb2dyZXNzXSBbLXZdIFs8aG9zdD46XTxkaXJlY3Rvcnk+IFs8cmVmcz4uLi5dCisnZ2l0IGZldGNoLXBhY2snIFstLWFsbF0gWy0tcXVpZXR8LXFdIFstLWtlZXB8LWtdIFstLXRoaW5dIFstLWluY2x1ZGUtdGFnXQorCVstLXVwbG9hZC1wYWNrPTxnaXQtdXBsb2FkLXBhY2s+XQorCVstLWRlcHRoPTxuPl0gWy0tbm8tcHJvZ3Jlc3NdCisJWy12XSBbPGhvc3Q+Ol08ZGlyZWN0b3J5PiBbPHJlZnM+Li4uXQogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KQEAgLTgxLDYgKzg0LDggQEAKIAogLS1kZXB0aD08bj46OgogCUxpbWl0IGZldGNoaW5nIHRvIGFuY2VzdG9yLWNoYWlucyBub3QgbG9uZ2VyIHRoYW4gbi4KKwknZ2l0LXVwbG9hZC1wYWNrJyB0cmVhdHMgdGhlIHNwZWNpYWwgZGVwdGggMjE0NzQ4MzY0NyBhcworCWluZmluaXRlIGV2ZW4gaWYgdGhlcmUgaXMgYW4gYW5jZXN0b3ItY2hhaW4gdGhhdCBsb25nLgogCiAtLW5vLXByb2dyZXNzOjoKIAlEbyBub3Qgc2hvdyB0aGUgcHJvZ3Jlc3MuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1mZXRjaC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1mZXRjaC50eHQKaW5kZXggYjQxZDdjMS4uZTA4YTAyOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZmV0Y2gudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWZldGNoLnR4dApAQCAtODAsNyArODAsNyBAQAogb3V0IHN1Ym1vZHVsZXMgcmlnaHQgbm93LiBXaGVuIGUuZy4gdXBzdHJlYW0gYWRkZWQgYSBuZXcgc3VibW9kdWxlIGluIHRoZQoganVzdCBmZXRjaGVkIGNvbW1pdHMgb2YgdGhlIHN1cGVycHJvamVjdCB0aGUgc3VibW9kdWxlIGl0c2VsZiBjYW4gbm90IGJlCiBmZXRjaGVkLCBtYWtpbmcgaXQgaW1wb3NzaWJsZSB0byBjaGVjayBvdXQgdGhhdCBzdWJtb2R1bGUgbGF0ZXIgd2l0aG91dAotaGF2aW5nIHRvIGRvIGEgZmV0Y2ggYWdhaW4uIFRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgZml4ZWQgaW4gYSBmdXR1cmUgZ2l0CitoYXZpbmcgdG8gZG8gYSBmZXRjaCBhZ2Fpbi4gVGhpcyBpcyBleHBlY3RlZCB0byBiZSBmaXhlZCBpbiBhIGZ1dHVyZSBHaXQKIHZlcnNpb24uCiAKIFNFRSBBTFNPCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1maWx0ZXItYnJhbmNoLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWZpbHRlci1icmFuY2gudHh0CmluZGV4IDgxZjU4MjMuLmU0YzhlODIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWZpbHRlci1icmFuY2gudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWZpbHRlci1icmFuY2gudHh0CkBAIC0xOCw3ICsxOCw3IEBACiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQotTGV0cyB5b3UgcmV3cml0ZSBnaXQgcmV2aXNpb24gaGlzdG9yeSBieSByZXdyaXRpbmcgdGhlIGJyYW5jaGVzIG1lbnRpb25lZAorTGV0cyB5b3UgcmV3cml0ZSBHaXQgcmV2aXNpb24gaGlzdG9yeSBieSByZXdyaXRpbmcgdGhlIGJyYW5jaGVzIG1lbnRpb25lZAogaW4gdGhlIDxyZXYtbGlzdCBvcHRpb25zPiwgYXBwbHlpbmcgY3VzdG9tIGZpbHRlcnMgb24gZWFjaCByZXZpc2lvbi4KIFRob3NlIGZpbHRlcnMgY2FuIG1vZGlmeSBlYWNoIHRyZWUgKGUuZy4gcmVtb3ZpbmcgYSBmaWxlIG9yIHJ1bm5pbmcKIGEgcGVybCByZXdyaXRlIG9uIGFsbCBmaWxlcykgb3IgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBjb21taXQuCkBAIC0yOSwxMCArMjksMTEgQEAKIGNvbW1hbmQgbGluZSAoZS5nLiBpZiB5b3UgcGFzcyAnYS4uYicsIG9ubHkgJ2InIHdpbGwgYmUgcmV3cml0dGVuKS4KIElmIHlvdSBzcGVjaWZ5IG5vIGZpbHRlcnMsIHRoZSBjb21taXRzIHdpbGwgYmUgcmVjb21taXR0ZWQgd2l0aG91dCBhbnkKIGNoYW5nZXMsIHdoaWNoIHdvdWxkIG5vcm1hbGx5IGhhdmUgbm8gZWZmZWN0LiAgTmV2ZXJ0aGVsZXNzLCB0aGlzIG1heSBiZQotdXNlZnVsIGluIHRoZSBmdXR1cmUgZm9yIGNvbXBlbnNhdGluZyBmb3Igc29tZSBnaXQgYnVncyBvciBzdWNoLAordXNlZnVsIGluIHRoZSBmdXR1cmUgZm9yIGNvbXBlbnNhdGluZyBmb3Igc29tZSBHaXQgYnVncyBvciBzdWNoLAogdGhlcmVmb3JlIHN1Y2ggYSB1c2FnZSBpcyBwZXJtaXR0ZWQuCiAKLSpOT1RFKjogVGhpcyBjb21tYW5kIGhvbm9ycyBgLmdpdC9pbmZvL2dyYWZ0c2AgYW5kIGAuZ2l0L3JlZnMvcmVwbGFjZS9gLgorKk5PVEUqOiBUaGlzIGNvbW1hbmQgaG9ub3JzIGAuZ2l0L2luZm8vZ3JhZnRzYCBmaWxlIGFuZCByZWZzIGluCit0aGUgYHJlZnMvcmVwbGFjZS9gIG5hbWVzcGFjZS4KIElmIHlvdSBoYXZlIGFueSBncmFmdHMgb3IgcmVwbGFjZW1lbnQgcmVmcyBkZWZpbmVkLCBydW5uaW5nIHRoaXMgY29tbWFuZAogd2lsbCBtYWtlIHRoZW0gcGVybWFuZW50LgogCkBAIC02Myw4ICs2NCwxMSBAQAogUHJpb3IgdG8gdGhhdCwgdGhlICRHSVRfQ09NTUlUIGVudmlyb25tZW50IHZhcmlhYmxlIHdpbGwgYmUgc2V0IHRvIGNvbnRhaW4KIHRoZSBpZCBvZiB0aGUgY29tbWl0IGJlaW5nIHJld3JpdHRlbi4gIEFsc28sIEdJVF9BVVRIT1JfTkFNRSwKIEdJVF9BVVRIT1JfRU1BSUwsIEdJVF9BVVRIT1JfREFURSwgR0lUX0NPTU1JVFRFUl9OQU1FLCBHSVRfQ09NTUlUVEVSX0VNQUlMLAotYW5kIEdJVF9DT01NSVRURVJfREFURSBhcmUgc2V0IGFjY29yZGluZyB0byB0aGUgY3VycmVudCBjb21taXQuICBUaGUgdmFsdWVzCi1vZiB0aGVzZSB2YXJpYWJsZXMgYWZ0ZXIgdGhlIGZpbHRlcnMgaGF2ZSBydW4sIGFyZSB1c2VkIGZvciB0aGUgbmV3IGNvbW1pdC4KK2FuZCBHSVRfQ09NTUlUVEVSX0RBVEUgYXJlIHRha2VuIGZyb20gdGhlIGN1cnJlbnQgY29tbWl0IGFuZCBleHBvcnRlZCB0bwordGhlIGVudmlyb25tZW50LCBpbiBvcmRlciB0byBhZmZlY3QgdGhlIGF1dGhvciBhbmQgY29tbWl0dGVyIGlkZW50aXRpZXMgb2YKK3RoZSByZXBsYWNlbWVudCBjb21taXQgY3JlYXRlZCBieSBsaW5rZ2l0OmdpdC1jb21taXQtdHJlZVsxXSBhZnRlciB0aGUKK2ZpbHRlcnMgaGF2ZSBydW4uCisKIElmIGFueSBldmFsdWF0aW9uIG9mIDxjb21tYW5kPiByZXR1cm5zIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMsIHRoZSB3aG9sZQogb3BlcmF0aW9uIHdpbGwgYmUgYWJvcnRlZC4KIApAQCAtMzAzLDYgKzMwNywxMSBAQAogYW5kIGFsbCBjaGlsZHJlbiBvZiB0aGUgbWVyZ2Ugd2lsbCBiZWNvbWUgbWVyZ2UgY29tbWl0cyB3aXRoIFAxLFAyCiBhcyB0aGVpciBwYXJlbnRzIGluc3RlYWQgb2YgdGhlIG1lcmdlIGNvbW1pdC4KIAorKk5PVEUqIHRoZSBjaGFuZ2VzIGludHJvZHVjZWQgYnkgdGhlIGNvbW1pdHMsIGFuZCB3aGljaCBhcmUgbm90IHJldmVydGVkCitieSBzdWJzZXF1ZW50IGNvbW1pdHMsIHdpbGwgc3RpbGwgYmUgaW4gdGhlIHJld3JpdHRlbiBicmFuY2guIElmIHlvdSB3YW50Cit0byB0aHJvdyBvdXQgX2NoYW5nZXNfIHRvZ2V0aGVyIHdpdGggdGhlIGNvbW1pdHMsIHlvdSBzaG91bGQgdXNlIHRoZQoraW50ZXJhY3RpdmUgbW9kZSBvZiAnZ2l0IHJlYmFzZScuCisKIFlvdSBjYW4gcmV3cml0ZSB0aGUgY29tbWl0IGxvZyBtZXNzYWdlcyB1c2luZyBgLS1tc2ctZmlsdGVyYC4gIEZvcgogZXhhbXBsZSwgJ2dpdCBzdm4taWQnIHN0cmluZ3MgaW4gYSByZXBvc2l0b3J5IGNyZWF0ZWQgYnkgJ2dpdCBzdm4nIGNhbgogYmUgcmVtb3ZlZCB0aGlzIHdheToKQEAgLTMxMywxMSArMzIyLDYgQEAKICcKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVG8gcmVzdHJpY3QgcmV3cml0aW5nIHRvIG9ubHkgcGFydCBvZiB0aGUgaGlzdG9yeSwgc3BlY2lmeSBhIHJldmlzaW9uCi1yYW5nZSBpbiBhZGRpdGlvbiB0byB0aGUgbmV3IGJyYW5jaCBuYW1lLiAgVGhlIG5ldyBicmFuY2ggbmFtZSB3aWxsCi1wb2ludCB0byB0aGUgdG9wLW1vc3QgcmV2aXNpb24gdGhhdCBhICdnaXQgcmV2LWxpc3QnIG9mIHRoaXMgcmFuZ2UKLXdpbGwgcHJpbnQuCi0KIElmIHlvdSBuZWVkIHRvIGFkZCAnQWNrZWQtYnknIGxpbmVzIHRvLCBzYXksIHRoZSBsYXN0IDEwIGNvbW1pdHMgKG5vbmUKIG9mIHdoaWNoIGlzIGEgbWVyZ2UpLCB1c2UgdGhpcyBjb21tYW5kOgogCkBAIC0zMjgsMTEgKzMzMiwzMCBAQAogJyBIRUFEfjEwLi5IRUFECiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0qTk9URSogdGhlIGNoYW5nZXMgaW50cm9kdWNlZCBieSB0aGUgY29tbWl0cywgYW5kIHdoaWNoIGFyZSBub3QgcmV2ZXJ0ZWQKLWJ5IHN1YnNlcXVlbnQgY29tbWl0cywgd2lsbCBzdGlsbCBiZSBpbiB0aGUgcmV3cml0dGVuIGJyYW5jaC4gSWYgeW91IHdhbnQKLXRvIHRocm93IG91dCBfY2hhbmdlc18gdG9nZXRoZXIgd2l0aCB0aGUgY29tbWl0cywgeW91IHNob3VsZCB1c2UgdGhlCi1pbnRlcmFjdGl2ZSBtb2RlIG9mICdnaXQgcmViYXNlJy4KK1RoZSBgLS1lbnYtZmlsdGVyYCBvcHRpb24gY2FuIGJlIHVzZWQgdG8gbW9kaWZ5IGNvbW1pdHRlciBhbmQvb3IgYXV0aG9yCitpZGVudGl0eS4gIEZvciBleGFtcGxlLCBpZiB5b3UgZm91bmQgb3V0IHRoYXQgeW91ciBjb21taXRzIGhhdmUgdGhlIHdyb25nCitpZGVudGl0eSBkdWUgdG8gYSBtaXNjb25maWd1cmVkIHVzZXIuZW1haWwsIHlvdSBjYW4gbWFrZSBhIGNvcnJlY3Rpb24sCitiZWZvcmUgcHVibGlzaGluZyB0aGUgcHJvamVjdCwgbGlrZSB0aGlzOgogCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZ2l0IGZpbHRlci1icmFuY2ggLS1lbnYtZmlsdGVyICcKKwlpZiB0ZXN0ICIkR0lUX0FVVEhPUl9FTUFJTCIgPSAicm9vdEBsb2NhbGhvc3QiCisJdGhlbgorCQlHSVRfQVVUSE9SX0VNQUlMPWpvaG5AZXhhbXBsZS5jb20KKwkJZXhwb3J0IEdJVF9BVVRIT1JfRU1BSUwKKwlmaQorCWlmIHRlc3QgIiRHSVRfQ09NTUlUVEVSX0VNQUlMIiA9ICJyb290QGxvY2FsaG9zdCIKKwl0aGVuCisJCUdJVF9DT01NSVRURVJfRU1BSUw9am9obkBleGFtcGxlLmNvbQorCQlleHBvcnQgR0lUX0NPTU1JVFRFUl9FTUFJTAorCWZpCisnIC0tIC0tYWxsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUbyByZXN0cmljdCByZXdyaXRpbmcgdG8gb25seSBwYXJ0IG9mIHRoZSBoaXN0b3J5LCBzcGVjaWZ5IGEgcmV2aXNpb24KK3JhbmdlIGluIGFkZGl0aW9uIHRvIHRoZSBuZXcgYnJhbmNoIG5hbWUuICBUaGUgbmV3IGJyYW5jaCBuYW1lIHdpbGwKK3BvaW50IHRvIHRoZSB0b3AtbW9zdCByZXZpc2lvbiB0aGF0IGEgJ2dpdCByZXYtbGlzdCcgb2YgdGhpcyByYW5nZQord2lsbCBwcmludC4KIAogQ29uc2lkZXIgdGhpcyBoaXN0b3J5OgogCkBAIC0zNzQsNyArMzk3LDcgQEAKIHVzdWFsbHkgd2l0aCBzb21lIGNvbWJpbmF0aW9uIG9mIGAtLWluZGV4LWZpbHRlcmAgYW5kCiBgLS1zdWJkaXJlY3RvcnktZmlsdGVyYC4gIFBlb3BsZSBleHBlY3QgdGhlIHJlc3VsdGluZyByZXBvc2l0b3J5IHRvCiBiZSBzbWFsbGVyIHRoYW4gdGhlIG9yaWdpbmFsLCBidXQgeW91IG5lZWQgYSBmZXcgbW9yZSBzdGVwcyB0bwotYWN0dWFsbHkgbWFrZSBpdCBzbWFsbGVyLCBiZWNhdXNlIGdpdCB0cmllcyBoYXJkIG5vdCB0byBsb3NlIHlvdXIKK2FjdHVhbGx5IG1ha2UgaXQgc21hbGxlciwgYmVjYXVzZSBHaXQgdHJpZXMgaGFyZCBub3QgdG8gbG9zZSB5b3VyCiBvYmplY3RzIHVudGlsIHlvdSB0ZWxsIGl0IHRvLiAgRmlyc3QgbWFrZSBzdXJlIHRoYXQ6CiAKICogWW91IHJlYWxseSByZW1vdmVkIGFsbCB2YXJpYW50cyBvZiBhIGZpbGVuYW1lLCBpZiBhIGJsb2Igd2FzIG1vdmVkCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1mbXQtbWVyZ2UtbXNnLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWZtdC1tZXJnZS1tc2cudHh0CmluZGV4IDNhMGY1NWUuLmJiMTIzMmEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWZtdC1tZXJnZS1tc2cudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWZtdC1tZXJnZS1tc2cudHh0CkBAIC0zNSw4ICszNSw3IEBACiAJRG8gbm90IGxpc3Qgb25lLWxpbmUgZGVzY3JpcHRpb25zIGZyb20gdGhlIGFjdHVhbCBjb21taXRzIGJlaW5nCiAJbWVyZ2VkLgogCi0tLXN1bW1hcnk6OgotLS1uby1zdW1tYXJ5OjoKKy0tW25vLV1zdW1tYXJ5OjoKIAlTeW5vbnltcyB0byAtLWxvZyBhbmQgLS1uby1sb2c7IHRoZXNlIGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlCiAJcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1mb3ItZWFjaC1yZWYudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZm9yLWVhY2gtcmVmLnR4dAppbmRleCBjODcyYjg4Li5mMmUwOGQxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1mb3ItZWFjaC1yZWYudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWZvci1lYWNoLXJlZi50eHQKQEAgLTEwMiw5ICsxMDIsMTAgQEAKIGFuZCBgZGF0ZWAgdG8gZXh0cmFjdCB0aGUgbmFtZWQgY29tcG9uZW50LgogCiBUaGUgY29tcGxldGUgbWVzc2FnZSBpbiBhIGNvbW1pdCBhbmQgdGFnIG9iamVjdCBpcyBgY29udGVudHNgLgotSXRzIGZpcnN0IGxpbmUgaXMgYGNvbnRlbnRzOnN1YmplY3RgLCB0aGUgcmVtYWluaW5nIGxpbmVzCi1hcmUgYGNvbnRlbnRzOmJvZHlgIGFuZCB0aGUgb3B0aW9uYWwgR1BHIHNpZ25hdHVyZQotaXMgYGNvbnRlbnRzOnNpZ25hdHVyZWAuCitJdHMgZmlyc3QgbGluZSBpcyBgY29udGVudHM6c3ViamVjdGAsIHdoZXJlIHN1YmplY3QgaXMgdGhlIGNvbmNhdGVuYXRpb24KK29mIGFsbCBsaW5lcyBvZiB0aGUgY29tbWl0IG1lc3NhZ2UgdXAgdG8gdGhlIGZpcnN0IGJsYW5rIGxpbmUuICBUaGUgbmV4dAorbGluZSBpcyAnY29udGVudHM6Ym9keScsIHdoZXJlIGJvZHkgaXMgYWxsIG9mIHRoZSBsaW5lcyBhZnRlciB0aGUgZmlyc3QKK2JsYW5rIGxpbmUuICBGaW5hbGx5LCB0aGUgb3B0aW9uYWwgR1BHIHNpZ25hdHVyZSBpcyBgY29udGVudHM6c2lnbmF0dXJlYC4KIAogRm9yIHNvcnRpbmcgcHVycG9zZXMsIGZpZWxkcyB3aXRoIG51bWVyaWMgdmFsdWVzIHNvcnQgaW4gbnVtZXJpYwogb3JkZXIgKGBvYmplY3RzaXplYCwgYGF1dGhvcmRhdGVgLCBgY29tbWl0dGVyZGF0ZWAsIGB0YWdnZXJkYXRlYCkuCkBAIC0xMTYsNyArMTE3LDcgQEAKIAogQXMgYSBzcGVjaWFsIGNhc2UgZm9yIHRoZSBkYXRlLXR5cGUgZmllbGRzLCB5b3UgbWF5IHNwZWNpZnkgYSBmb3JtYXQgZm9yCiB0aGUgZGF0ZSBieSBhZGRpbmcgb25lIG9mIGA6ZGVmYXVsdGAsIGA6cmVsYXRpdmVgLCBgOnNob3J0YCwgYDpsb2NhbGAsCi1gOmlzbzg2MDFgIG9yIGA6cmZjMjgyMmAgdG8gdGhlIGVuZCBvZiB0aGUgZmllbGRuYW1lOyBlLmcuCitgOmlzbzg2MDFgLCBgOnJmYzI4MjJgIG9yIGA6cmF3YCB0byB0aGUgZW5kIG9mIHRoZSBmaWVsZG5hbWU7IGUuZy4KIGAlKHRhZ2dlcmRhdGU6cmVsYXRpdmUpYC4KIAogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1mb3JtYXQtcGF0Y2gudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZm9ybWF0LXBhdGNoLnR4dAppbmRleCAwNGM3MzQ2Li4zOTExODc3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1mb3JtYXQtcGF0Y2gudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWZvcm1hdC1wYXRjaC50eHQKQEAgLTE4LDkgKzE4LDkgQEAKIAkJICAgWy0tc3RhcnQtbnVtYmVyIDxuPl0gWy0tbnVtYmVyZWQtZmlsZXNdCiAJCSAgIFstLWluLXJlcGx5LXRvPU1lc3NhZ2UtSWRdIFstLXN1ZmZpeD0uPHNmeD5dCiAJCSAgIFstLWlnbm9yZS1pZi1pbi11cHN0cmVhbV0KLQkJICAgWy0tc3ViamVjdC1wcmVmaXg9U3ViamVjdC1QcmVmaXhdCisJCSAgIFstLXN1YmplY3QtcHJlZml4PVN1YmplY3QtUHJlZml4XSBbKC0tcmVyb2xsLWNvdW50fC12KSA8bj5dCiAJCSAgIFstLXRvPTxlbWFpbD5dIFstLWNjPTxlbWFpbD5dCi0JCSAgIFstLWNvdmVyLWxldHRlcl0gWy0tcXVpZXRdCisJCSAgIFstLVtuby1dY292ZXItbGV0dGVyXSBbLS1xdWlldF0gWy0tbm90ZXNbPTxyZWY+XV0KIAkJICAgWzxjb21tb24gZGlmZiBvcHRpb25zPl0KIAkJICAgWyA8c2luY2U+IHwgPHJldmlzaW9uIHJhbmdlPiBdCiAKQEAgLTU4LDEwICs1OCwxMyBAQAogSWYgYC1vYCBpcyBzcGVjaWZpZWQsIG91dHB1dCBmaWxlcyBhcmUgY3JlYXRlZCBpbiA8ZGlyPi4gIE90aGVyd2lzZQogdGhleSBhcmUgY3JlYXRlZCBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KIAotQnkgZGVmYXVsdCwgdGhlIHN1YmplY3Qgb2YgYSBzaW5nbGUgcGF0Y2ggaXMgIltQQVRDSF0gRmlyc3QgTGluZSIgYW5kCi10aGUgc3ViamVjdCB3aGVuIG11bHRpcGxlIHBhdGNoZXMgYXJlIG91dHB1dCBpcyAiW1BBVENIIG4vbV0gRmlyc3QKLUxpbmUiLiBUbyBmb3JjZSAxLzEgdG8gYmUgYWRkZWQgZm9yIGEgc2luZ2xlIHBhdGNoLCB1c2UgYC1uYC4gIFRvIG9taXQKLXBhdGNoIG51bWJlcnMgZnJvbSB0aGUgc3ViamVjdCwgdXNlIGAtTmAuCitCeSBkZWZhdWx0LCB0aGUgc3ViamVjdCBvZiBhIHNpbmdsZSBwYXRjaCBpcyAiW1BBVENIXSAiIGZvbGxvd2VkIGJ5Cit0aGUgY29uY2F0ZW5hdGlvbiBvZiBsaW5lcyBmcm9tIHRoZSBjb21taXQgbWVzc2FnZSB1cCB0byB0aGUgZmlyc3QgYmxhbmsKK2xpbmUgKHNlZSB0aGUgRElTQ1VTU0lPTiBzZWN0aW9uIG9mIGxpbmtnaXQ6Z2l0LWNvbW1pdFsxXSkuCisKK1doZW4gbXVsdGlwbGUgcGF0Y2hlcyBhcmUgb3V0cHV0LCB0aGUgc3ViamVjdCBwcmVmaXggd2lsbCBpbnN0ZWFkIGJlCisiW1BBVENIIG4vbV0gIi4gIFRvIGZvcmNlIDEvMSB0byBiZSBhZGRlZCBmb3IgYSBzaW5nbGUgcGF0Y2gsIHVzZSBgLW5gLgorVG8gb21pdCBwYXRjaCBudW1iZXJzIGZyb20gdGhlIHN1YmplY3QsIHVzZSBgLU5gLgogCiBJZiBnaXZlbiBgLS10aHJlYWRgLCBgZ2l0LWZvcm1hdC1wYXRjaGAgd2lsbCBnZW5lcmF0ZSBgSW4tUmVwbHktVG9gIGFuZAogYFJlZmVyZW5jZXNgIGhlYWRlcnMgdG8gbWFrZSB0aGUgc2Vjb25kIGFuZCBzdWJzZXF1ZW50IHBhdGNoIG1haWxzIGFwcGVhcgpAQCAtMTYzLDYgKzE2NiwxNSBAQAogCWFsbG93cyBmb3IgdXNlZnVsIG5hbWluZyBvZiBhIHBhdGNoIHNlcmllcywgYW5kIGNhbiBiZQogCWNvbWJpbmVkIHdpdGggdGhlIGAtLW51bWJlcmVkYCBvcHRpb24uCiAKKy12IDxuPjo6CistLXJlcm9sbC1jb3VudD08bj46OgorCU1hcmsgdGhlIHNlcmllcyBhcyB0aGUgPG4+LXRoIGl0ZXJhdGlvbiBvZiB0aGUgdG9waWMuIFRoZQorCW91dHB1dCBmaWxlbmFtZXMgaGF2ZSBgdjxuPmAgcHJldGVuZGVkIHRvIHRoZW0sIGFuZCB0aGUKKwlzdWJqZWN0IHByZWZpeCAoIlBBVENIIiBieSBkZWZhdWx0LCBidXQgY29uZmlndXJhYmxlIHZpYSB0aGUKKwlgLS1zdWJqZWN0LXByZWZpeGAgb3B0aW9uKSBoYXMgYCB2PG4+YCBhcHBlbmRlZCB0byBpdC4gIEUuZy4KKwlgLS1yZXJvbGwtY291bnQ9NGAgbWF5IHByb2R1Y2UgYHY0LTAwMDEtYWRkLW1ha2VmaWxlLnBhdGNoYAorCWZpbGUgdGhhdCBoYXMgIlN1YmplY3Q6IFtQQVRDSCB2NCAxLzIwXSBBZGQgbWFrZWZpbGUiIGluIGl0LgorCiAtLXRvPTxlbWFpbD46OgogCUFkZCBhIGBUbzpgIGhlYWRlciB0byB0aGUgZW1haWwgaGVhZGVycy4gVGhpcyBpcyBpbiBhZGRpdGlvbgogCXRvIGFueSBjb25maWd1cmVkIGhlYWRlcnMsIGFuZCBtYXkgYmUgdXNlZCBtdWx0aXBsZSB0aW1lcy4KQEAgLTE4MywxNSArMTk1LDI3IEBACiAJYENjOmAsIGFuZCBjdXN0b20pIGhlYWRlcnMgYWRkZWQgc28gZmFyIGZyb20gY29uZmlnIG9yIGNvbW1hbmQKIAlsaW5lLgogCi0tLWNvdmVyLWxldHRlcjo6CistLVtuby1dY292ZXItbGV0dGVyOjoKIAlJbiBhZGRpdGlvbiB0byB0aGUgcGF0Y2hlcywgZ2VuZXJhdGUgYSBjb3ZlciBsZXR0ZXIgZmlsZQogCWNvbnRhaW5pbmcgdGhlIHNob3J0bG9nIGFuZCB0aGUgb3ZlcmFsbCBkaWZmc3RhdC4gIFlvdSBjYW4KIAlmaWxsIGluIGEgZGVzY3JpcHRpb24gaW4gdGhlIGZpbGUgYmVmb3JlIHNlbmRpbmcgaXQgb3V0LgogCistLW5vdGVzWz08cmVmPl06OgorCUFwcGVuZCB0aGUgbm90ZXMgKHNlZSBsaW5rZ2l0OmdpdC1ub3Rlc1sxXSkgZm9yIHRoZSBjb21taXQKKwlhZnRlciB0aGUgdGhyZWUtZGFzaCBsaW5lLgorKworVGhlIGV4cGVjdGVkIHVzZSBjYXNlIG9mIHRoaXMgaXMgdG8gd3JpdGUgc3VwcG9ydGluZyBleHBsYW5hdGlvbiBmb3IKK3RoZSBjb21taXQgdGhhdCBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIGNvbW1pdCBsb2cgbWVzc2FnZSBwcm9wZXIsCithbmQgaW5jbHVkZSBpdCB3aXRoIHRoZSBwYXRjaCBzdWJtaXNzaW9uLiBXaGlsZSBvbmUgY2FuIHNpbXBseSB3cml0ZQordGhlc2UgZXhwbGFuYXRpb25zIGFmdGVyIGBmb3JtYXQtcGF0Y2hgIGhhcyBydW4gYnV0IGJlZm9yZSBzZW5kaW5nLAora2VlcGluZyB0aGVtIGFzIEdpdCBub3RlcyBhbGxvd3MgdGhlbSB0byBiZSBtYWludGFpbmVkIGJldHdlZW4gdmVyc2lvbnMKK29mIHRoZSBwYXRjaCBzZXJpZXMgKGJ1dCBzZWUgdGhlIGRpc2N1c3Npb24gb2YgdGhlIGBub3Rlcy5yZXdyaXRlYAorY29uZmlndXJhdGlvbiBvcHRpb25zIGluIGxpbmtnaXQ6Z2l0LW5vdGVzWzFdIHRvIHVzZSB0aGlzIHdvcmtmbG93KS4KKwogLS1bbm9dLXNpZ25hdHVyZT08c2lnbmF0dXJlPjo6CiAJQWRkIGEgc2lnbmF0dXJlIHRvIGVhY2ggbWVzc2FnZSBwcm9kdWNlZC4gUGVyIFJGQyAzNjc2IHRoZSBzaWduYXR1cmUKIAlpcyBzZXBhcmF0ZWQgZnJvbSB0aGUgYm9keSBieSBhIGxpbmUgd2l0aCAnLS0gJyBvbiBpdC4gSWYgdGhlCi0Jc2lnbmF0dXJlIG9wdGlvbiBpcyBvbWl0dGVkIHRoZSBzaWduYXR1cmUgZGVmYXVsdHMgdG8gdGhlIGdpdCB2ZXJzaW9uCisJc2lnbmF0dXJlIG9wdGlvbiBpcyBvbWl0dGVkIHRoZSBzaWduYXR1cmUgZGVmYXVsdHMgdG8gdGhlIEdpdCB2ZXJzaW9uCiAJbnVtYmVyLgogCiAtLXN1ZmZpeD0uPHNmeD46OgpAQCAtMjM2LDYgKzI2MCw3IEBACiAJY2MgPSA8ZW1haWw+CiAJYXR0YWNoIFsgPSBtaW1lLWJvdW5kYXJ5LXN0cmluZyBdCiAJc2lnbm9mZiA9IHRydWUKKwljb3ZlcmxldHRlciA9IGF1dG8KIC0tLS0tLS0tLS0tLQogCiAKQEAgLTM2NSw3ICszOTAsNyBAQAogfn5+fn5+fn5+fn4KIEJ5IGRlZmF1bHQsIFRodW5kZXJiaXJkIHdpbGwgYm90aCB3cmFwIGVtYWlscyBhcyB3ZWxsIGFzIGZsYWcKIHRoZW0gYXMgYmVpbmcgJ2Zvcm1hdD1mbG93ZWQnLCBib3RoIG9mIHdoaWNoIHdpbGwgbWFrZSB0aGUKLXJlc3VsdGluZyBlbWFpbCB1bnVzYWJsZSBieSBnaXQuCityZXN1bHRpbmcgZW1haWwgdW51c2FibGUgYnkgR2l0LgogCiBUaGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50IGFwcHJvYWNoZXM6IHVzZSBhbiBhZGQtb24gdG8gdHVybiBvZmYgbGluZSB3cmFwcywKIGNvbmZpZ3VyZSBUaHVuZGVyYmlyZCB0byBub3QgbWFuZ2xlIHBhdGNoZXMsIG9yIHVzZQpAQCAtNTAxLDggKzUyNiw4IEBACiBBZGRpdGlvbmFsbHksIGl0IGRldGVjdHMgYW5kIGhhbmRsZXMgcmVuYW1lcyBhbmQgY29tcGxldGUgcmV3cml0ZXMKIGludGVsbGlnZW50bHkgdG8gcHJvZHVjZSBhIHJlbmFtaW5nIHBhdGNoLiAgQSByZW5hbWluZyBwYXRjaCByZWR1Y2VzCiB0aGUgYW1vdW50IG9mIHRleHQgb3V0cHV0LCBhbmQgZ2VuZXJhbGx5IG1ha2VzIGl0IGVhc2llciB0byByZXZpZXcuCi1Ob3RlIHRoYXQgbm9uLWdpdCAicGF0Y2giIHByb2dyYW1zIHdvbid0IHVuZGVyc3RhbmQgcmVuYW1pbmcgcGF0Y2hlcywgc28KLXVzZSBpdCBvbmx5IHdoZW4geW91IGtub3cgdGhlIHJlY2lwaWVudCB1c2VzIGdpdCB0byBhcHBseSB5b3VyIHBhdGNoLgorTm90ZSB0aGF0IG5vbi1HaXQgInBhdGNoIiBwcm9ncmFtcyB3b24ndCB1bmRlcnN0YW5kIHJlbmFtaW5nIHBhdGNoZXMsIHNvCit1c2UgaXQgb25seSB3aGVuIHlvdSBrbm93IHRoZSByZWNpcGllbnQgdXNlcyBHaXQgdG8gYXBwbHkgeW91ciBwYXRjaC4KIAogKiBFeHRyYWN0IHRocmVlIHRvcG1vc3QgY29tbWl0cyBmcm9tIHRoZSBjdXJyZW50IGJyYW5jaCBhbmQgZm9ybWF0IHRoZW0KIGFzIGUtbWFpbGFibGUgcGF0Y2hlczoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWZzY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZnNjay50eHQKaW5kZXggYmJiMjVkYS4uMjVjNDMxZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZnNjay50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZnNjay50eHQKQEAgLTIzLDE1ICsyMywxNCBAQAogCUFuIG9iamVjdCB0byB0cmVhdCBhcyB0aGUgaGVhZCBvZiBhbiB1bnJlYWNoYWJpbGl0eSB0cmFjZS4KICsKIElmIG5vIG9iamVjdHMgYXJlIGdpdmVuLCAnZ2l0IGZzY2snIGRlZmF1bHRzIHRvIHVzaW5nIHRoZQotaW5kZXggZmlsZSwgYWxsIFNIQTEgcmVmZXJlbmNlcyBpbiAuZ2l0L3JlZnMvKiwgYW5kIGFsbCByZWZsb2dzICh1bmxlc3MKLS0tbm8tcmVmbG9ncyBpcyBnaXZlbikgYXMgaGVhZHMuCitpbmRleCBmaWxlLCBhbGwgU0hBLTEgcmVmZXJlbmNlcyBpbiBgcmVmc2AgbmFtZXNwYWNlLCBhbmQgYWxsIHJlZmxvZ3MKKyh1bmxlc3MgLS1uby1yZWZsb2dzIGlzIGdpdmVuKSBhcyBoZWFkcy4KIAogLS11bnJlYWNoYWJsZTo6CiAJUHJpbnQgb3V0IG9iamVjdHMgdGhhdCBleGlzdCBidXQgdGhhdCBhcmVuJ3QgcmVhY2hhYmxlIGZyb20gYW55CiAJb2YgdGhlIHJlZmVyZW5jZSBub2Rlcy4KIAotLS1kYW5nbGluZzo6Ci0tLW5vLWRhbmdsaW5nOjoKKy0tW25vLV1kYW5nbGluZzo6CiAJUHJpbnQgb2JqZWN0cyB0aGF0IGV4aXN0IGJ1dCB0aGF0IGFyZSBuZXZlciAnZGlyZWN0bHknIHVzZWQgKGRlZmF1bHQpLgogCWAtLW5vLWRhbmdsaW5nYCBjYW4gYmUgdXNlZCB0byBvbWl0IHRoaXMgaW5mb3JtYXRpb24gZnJvbSB0aGUgb3V0cHV0LgogCkBAIC01Niw3ICs1NSw3IEBACiAJKCRHSVRfRElSL29iamVjdHMpLCBidXQgYWxzbyB0aGUgb25lcyBmb3VuZCBpbiBhbHRlcm5hdGUKIAlvYmplY3QgcG9vbHMgbGlzdGVkIGluIEdJVF9BTFRFUk5BVEVfT0JKRUNUX0RJUkVDVE9SSUVTCiAJb3IgJEdJVF9ESVIvb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMsCi0JYW5kIGluIHBhY2tlZCBnaXQgYXJjaGl2ZXMgZm91bmQgaW4gJEdJVF9ESVIvb2JqZWN0cy9wYWNrCisJYW5kIGluIHBhY2tlZCBHaXQgYXJjaGl2ZXMgZm91bmQgaW4gJEdJVF9ESVIvb2JqZWN0cy9wYWNrCiAJYW5kIGNvcnJlc3BvbmRpbmcgcGFjayBzdWJkaXJlY3RvcmllcyBpbiBhbHRlcm5hdGUKIAlvYmplY3QgcG9vbHMuICBUaGlzIGlzIG5vdyBkZWZhdWx0OyB5b3UgY2FuIHR1cm4gaXQgb2ZmCiAJd2l0aCAtLW5vLWZ1bGwuCkBAIC02NCw4ICs2Myw4IEBACiAtLXN0cmljdDo6CiAJRW5hYmxlIG1vcmUgc3RyaWN0IGNoZWNraW5nLCBuYW1lbHkgdG8gY2F0Y2ggYSBmaWxlIG1vZGUKIAlyZWNvcmRlZCB3aXRoIGcrdyBiaXQgc2V0LCB3aGljaCB3YXMgY3JlYXRlZCBieSBvbGRlcgotCXZlcnNpb25zIG9mIGdpdC4gIEV4aXN0aW5nIHJlcG9zaXRvcmllcywgaW5jbHVkaW5nIHRoZQotCUxpbnV4IGtlcm5lbCwgZ2l0IGl0c2VsZiwgYW5kIHNwYXJzZSByZXBvc2l0b3J5IGhhdmUgb2xkCisJdmVyc2lvbnMgb2YgR2l0LiAgRXhpc3RpbmcgcmVwb3NpdG9yaWVzLCBpbmNsdWRpbmcgdGhlCisJTGludXgga2VybmVsLCBHaXQgaXRzZWxmLCBhbmQgc3BhcnNlIHJlcG9zaXRvcnkgaGF2ZSBvbGQKIAlvYmplY3RzIHRoYXQgdHJpZ2dlcnMgdGhpcyBjaGVjaywgYnV0IGl0IGlzIHJlY29tbWVuZGVkCiAJdG8gY2hlY2sgbmV3IHByb2plY3RzIHdpdGggdGhpcyBmbGFnLgogCkBAIC03OCw4ICs3Nyw3IEBACiAJYSBibG9iLCB0aGUgY29udGVudHMgYXJlIHdyaXR0ZW4gaW50byB0aGUgZmlsZSwgcmF0aGVyIHRoYW4KIAlpdHMgb2JqZWN0IG5hbWUuCiAKLS0tcHJvZ3Jlc3M6OgotLS1uby1wcm9ncmVzczo6CistLVtuby1dcHJvZ3Jlc3M6OgogCVByb2dyZXNzIHN0YXR1cyBpcyByZXBvcnRlZCBvbiB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtIGJ5CiAJZGVmYXVsdCB3aGVuIGl0IGlzIGF0dGFjaGVkIHRvIGEgdGVybWluYWwsIHVubGVzcwogCS0tbm8tcHJvZ3Jlc3Mgb3IgLS12ZXJib3NlIGlzIHNwZWNpZmllZC4gLS1wcm9ncmVzcyBmb3JjZXMKQEAgLTg5LDcgKzg3LDcgQEAKIERJU0NVU1NJT04KIC0tLS0tLS0tLS0KIAotZ2l0LWZzY2sgdGVzdHMgU0hBMSBhbmQgZ2VuZXJhbCBvYmplY3Qgc2FuaXR5LCBhbmQgaXQgZG9lcyBmdWxsIHRyYWNraW5nCitnaXQtZnNjayB0ZXN0cyBTSEEtMSBhbmQgZ2VuZXJhbCBvYmplY3Qgc2FuaXR5LCBhbmQgaXQgZG9lcyBmdWxsIHRyYWNraW5nCiBvZiB0aGUgcmVzdWx0aW5nIHJlYWNoYWJpbGl0eSBhbmQgZXZlcnl0aGluZyBlbHNlLiBJdCBwcmludHMgb3V0IGFueQogY29ycnVwdGlvbiBpdCBmaW5kcyAobWlzc2luZyBvciBiYWQgb2JqZWN0cyksIGFuZCBpZiB5b3UgdXNlIHRoZQogJy0tdW5yZWFjaGFibGUnIGZsYWcgaXQgd2lsbCBhbHNvIHByaW50IG91dCBvYmplY3RzIHRoYXQgZXhpc3QgYnV0IHRoYXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWdyZXAudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZ3JlcC50eHQKaW5kZXggM2JlYzAzNi4uODQ5N2FhNCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZ3JlcC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZ3JlcC50eHQKQEAgLTI1LDcgKzI1LDcgQEAKIAkgICBbLVcgfCAtLWZ1bmN0aW9uLWNvbnRleHRdCiAJICAgWy1mIDxmaWxlPl0gWy1lXSA8cGF0dGVybj4KIAkgICBbLS1hbmR8LS1vcnwtLW5vdHwofCl8LWUgPHBhdHRlcm4+Li4uXQotCSAgIFsgWy0tZXhjbHVkZS1zdGFuZGFyZF0gWy0tY2FjaGVkIHwgLS1uby1pbmRleCB8IC0tdW50cmFja2VkXSB8IDx0cmVlPi4uLl0KKwkgICBbIFstLVtuby1dZXhjbHVkZS1zdGFuZGFyZF0gWy0tY2FjaGVkIHwgLS1uby1pbmRleCB8IC0tdW50cmFja2VkXSB8IDx0cmVlPi4uLl0KIAkgICBbLS1dIFs8cGF0aHNwZWM+Li4uXQogCiBERVNDUklQVElPTgpAQCAtNDIsOCArNDIsMTYgQEAKIGdyZXAubGluZU51bWJlcjo6CiAJSWYgc2V0IHRvIHRydWUsIGVuYWJsZSAnLW4nIG9wdGlvbiBieSBkZWZhdWx0LgogCitncmVwLnBhdHRlcm5UeXBlOjoKKwlTZXQgdGhlIGRlZmF1bHQgbWF0Y2hpbmcgYmVoYXZpb3IuIFVzaW5nIGEgdmFsdWUgb2YgJ2Jhc2ljJywgJ2V4dGVuZGVkJywKKwknZml4ZWQnLCBvciAncGVybCcgd2lsbCBlbmFibGUgdGhlICctLWJhc2ljLXJlZ2V4cCcsICctLWV4dGVuZGVkLXJlZ2V4cCcsCisJJy0tZml4ZWQtc3RyaW5ncycsIG9yICctLXBlcmwtcmVnZXhwJyBvcHRpb24gYWNjb3JkaW5nbHksIHdoaWxlIHRoZQorCXZhbHVlICdkZWZhdWx0JyB3aWxsIHJldHVybiB0byB0aGUgZGVmYXVsdCBtYXRjaGluZyBiZWhhdmlvci4KKwogZ3JlcC5leHRlbmRlZFJlZ2V4cDo6Ci0JSWYgc2V0IHRvIHRydWUsIGVuYWJsZSAnLS1leHRlbmRlZC1yZWdleHAnIG9wdGlvbiBieSBkZWZhdWx0LgorCUlmIHNldCB0byB0cnVlLCBlbmFibGUgJy0tZXh0ZW5kZWQtcmVnZXhwJyBvcHRpb24gYnkgZGVmYXVsdC4gVGhpcworCW9wdGlvbiBpcyBpZ25vcmVkIHdoZW4gdGhlICdncmVwLnBhdHRlcm5UeXBlJyBvcHRpb24gaXMgc2V0IHRvIGEgdmFsdWUKKwlvdGhlciB0aGFuICdkZWZhdWx0Jy4KIAogCiBPUFRJT05TCkBAIC01Myw3ICs2MSw3IEBACiAJYmxvYnMgcmVnaXN0ZXJlZCBpbiB0aGUgaW5kZXggZmlsZS4KIAogLS1uby1pbmRleDo6Ci0JU2VhcmNoIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB0aGF0IGlzIG5vdCBtYW5hZ2VkIGJ5IGdpdC4KKwlTZWFyY2ggZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHRoYXQgaXMgbm90IG1hbmFnZWQgYnkgR2l0LgogCiAtLXVudHJhY2tlZDo6CiAJSW4gYWRkaXRpb24gdG8gc2VhcmNoaW5nIGluIHRoZSB0cmFja2VkIGZpbGVzIGluIHRoZSB3b3JraW5nCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1ndWkudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZ3VpLnR4dAppbmRleCAwMDQxOTk0Li44MTQ0NTI3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1ndWkudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWd1aS50eHQKQEAgLTEwMiw3ICsxMDIsNyBAQAogU0VFIEFMU08KIC0tLS0tLS0tCiBsaW5rZ2l0OmdpdGtbMV06OgotCVRoZSBnaXQgcmVwb3NpdG9yeSBicm93c2VyLiAgU2hvd3MgYnJhbmNoZXMsIGNvbW1pdCBoaXN0b3J5CisJVGhlIEdpdCByZXBvc2l0b3J5IGJyb3dzZXIuICBTaG93cyBicmFuY2hlcywgY29tbWl0IGhpc3RvcnkKIAlhbmQgZmlsZSBkaWZmZXJlbmNlcy4gIGdpdGsgaXMgdGhlIHV0aWxpdHkgc3RhcnRlZCBieQogCSdnaXQgZ3VpJydzIFJlcG9zaXRvcnkgVmlzdWFsaXplIGFjdGlvbnMuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWhhc2gtb2JqZWN0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWhhc2gtb2JqZWN0LnR4dAppbmRleCA0YjBhNTAyLi4wMmMxZjEyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1oYXNoLW9iamVjdC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtaGFzaC1vYmplY3QudHh0CkBAIC00MCw3ICs0MCw3IEBACiAtLXBhdGg6OgogCUhhc2ggb2JqZWN0IGFzIGl0IHdlcmUgbG9jYXRlZCBhdCB0aGUgZ2l2ZW4gcGF0aC4gVGhlIGxvY2F0aW9uIG9mCiAJZmlsZSBkb2VzIG5vdCBkaXJlY3RseSBpbmZsdWVuY2Ugb24gdGhlIGhhc2ggdmFsdWUsIGJ1dCBwYXRoIGlzCi0JdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBnaXQgZmlsdGVycyBzaG91bGQgYmUgYXBwbGllZCB0byB0aGUgb2JqZWN0CisJdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBHaXQgZmlsdGVycyBzaG91bGQgYmUgYXBwbGllZCB0byB0aGUgb2JqZWN0CiAJYmVmb3JlIGl0IGNhbiBiZSBwbGFjZWQgdG8gdGhlIG9iamVjdCBkYXRhYmFzZSwgYW5kLCBhcyByZXN1bHQgb2YKIAlhcHBseWluZyBmaWx0ZXJzLCB0aGUgYWN0dWFsIGJsb2IgcHV0IGludG8gdGhlIG9iamVjdCBkYXRhYmFzZSBtYXkKIAlkaWZmZXIgZnJvbSB0aGUgZ2l2ZW4gZmlsZS4gVGhpcyBvcHRpb24gaXMgbWFpbmx5IHVzZWZ1bCBmb3IgaGFzaGluZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtaGVscC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1oZWxwLnR4dAppbmRleCA5ZTBiM2Y2Li5iMjFlOWQ3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1oZWxwLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1oZWxwLnR4dApAQCAtMywzNiArMyw1MCBAQAogCiBOQU1FCiAtLS0tCi1naXQtaGVscCAtIGRpc3BsYXkgaGVscCBpbmZvcm1hdGlvbiBhYm91dCBnaXQKK2dpdC1oZWxwIC0gRGlzcGxheSBoZWxwIGluZm9ybWF0aW9uIGFib3V0IEdpdAogCiBTWU5PUFNJUwogLS0tLS0tLS0KIFt2ZXJzZV0KLSdnaXQgaGVscCcgWy1hfC0tYWxsfC1pfC0taW5mb3wtbXwtLW1hbnwtd3wtLXdlYl0gW0NPTU1BTkRdCisnZ2l0IGhlbHAnIFstYXwtLWFsbF0gWy1nfC0tZ3VpZGVdCisJICAgWy1pfC0taW5mb3wtbXwtLW1hbnwtd3wtLXdlYl0gW0NPTU1BTkR8R1VJREVdCiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQogCi1XaXRoIG5vIG9wdGlvbnMgYW5kIG5vIENPTU1BTkQgZ2l2ZW4sIHRoZSBzeW5vcHNpcyBvZiB0aGUgJ2dpdCcKLWNvbW1hbmQgYW5kIGEgbGlzdCBvZiB0aGUgbW9zdCBjb21tb25seSB1c2VkIGdpdCBjb21tYW5kcyBhcmUgcHJpbnRlZAorV2l0aCBubyBvcHRpb25zIGFuZCBubyBDT01NQU5EIG9yIEdVSURFIGdpdmVuLCB0aGUgc3lub3BzaXMgb2YgdGhlICdnaXQnCitjb21tYW5kIGFuZCBhIGxpc3Qgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBHaXQgY29tbWFuZHMgYXJlIHByaW50ZWQKIG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQuCiAKLUlmIHRoZSBvcHRpb24gJy0tYWxsJyBvciAnLWEnIGlzIGdpdmVuLCB0aGVuIGFsbCBhdmFpbGFibGUgY29tbWFuZHMgYXJlCitJZiB0aGUgb3B0aW9uICctLWFsbCcgb3IgJy1hJyBpcyBnaXZlbiwgYWxsIGF2YWlsYWJsZSBjb21tYW5kcyBhcmUKIHByaW50ZWQgb24gdGhlIHN0YW5kYXJkIG91dHB1dC4KIAotSWYgYSBnaXQgY29tbWFuZCBpcyBuYW1lZCwgYSBtYW51YWwgcGFnZSBmb3IgdGhhdCBjb21tYW5kIGlzIGJyb3VnaHQKLXVwLiBUaGUgJ21hbicgcHJvZ3JhbSBpcyB1c2VkIGJ5IGRlZmF1bHQgZm9yIHRoaXMgcHVycG9zZSwgYnV0IHRoaXMKLWNhbiBiZSBvdmVycmlkZGVuIGJ5IG90aGVyIG9wdGlvbnMgb3IgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMuCitJZiB0aGUgb3B0aW9uICctLWd1aWRlJyBvciAnLWcnIGlzIGdpdmVuLCBhIGxpc3Qgb2YgdGhlIHVzZWZ1bAorR2l0IGd1aWRlcyBpcyBhbHNvIHByaW50ZWQgb24gdGhlIHN0YW5kYXJkIG91dHB1dC4KKworSWYgYSBjb21tYW5kLCBvciBhIGd1aWRlLCBpcyBnaXZlbiwgYSBtYW51YWwgcGFnZSBmb3IgdGhhdCBjb21tYW5kIG9yCitndWlkZSBpcyBicm91Z2h0IHVwLiBUaGUgJ21hbicgcHJvZ3JhbSBpcyB1c2VkIGJ5IGRlZmF1bHQgZm9yIHRoaXMKK3B1cnBvc2UsIGJ1dCB0aGlzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IG90aGVyIG9wdGlvbnMgb3IgY29uZmlndXJhdGlvbgordmFyaWFibGVzLgogCiBOb3RlIHRoYXQgYGdpdCAtLWhlbHAgLi4uYCBpcyBpZGVudGljYWwgdG8gYGdpdCBoZWxwIC4uLmAgYmVjYXVzZSB0aGUKIGZvcm1lciBpcyBpbnRlcm5hbGx5IGNvbnZlcnRlZCBpbnRvIHRoZSBsYXR0ZXIuCiAKK1RvIGRpc3BsYXkgdGhlIGxpbmtnaXQ6Z2l0WzFdIG1hbiBwYWdlLCB1c2UgYGdpdCBoZWxwIGdpdGAuCisKK1RoaXMgcGFnZSBjYW4gYmUgZGlzcGxheWVkIHdpdGggJ2dpdCBoZWxwIGhlbHAnIG9yIGBnaXQgaGVscCAtLWhlbHBgCisKIE9QVElPTlMKIC0tLS0tLS0KIC1hOjoKIC0tYWxsOjoKIAlQcmludHMgYWxsIHRoZSBhdmFpbGFibGUgY29tbWFuZHMgb24gdGhlIHN0YW5kYXJkIG91dHB1dC4gVGhpcwotCW9wdGlvbiBzdXBlcnNlZGVzIGFueSBvdGhlciBvcHRpb24uCisJb3B0aW9uIG92ZXJyaWRlcyBhbnkgZ2l2ZW4gY29tbWFuZCBvciBndWlkZSBuYW1lLgorCistZzo6CistLWd1aWRlczo6CisJUHJpbnRzIGEgbGlzdCBvZiB1c2VmdWwgZ3VpZGVzIG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQuIFRoaXMKKwlvcHRpb24gb3ZlcnJpZGVzIGFueSBnaXZlbiBjb21tYW5kIG9yIGd1aWRlIG5hbWUuCiAKIC1pOjoKIC0taW5mbzo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1odHRwLWJhY2tlbmQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtaHR0cC1iYWNrZW5kLnR4dAppbmRleCBmNGUwNzQxLi5lM2JjZGI1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1odHRwLWJhY2tlbmQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWh0dHAtYmFja2VuZC50eHQKQEAgLTE5LDcgKzE5LDcgQEAKIHB1c2hpbmcgdXNpbmcgdGhlIHNtYXJ0IEhUVFAgcHJvdG9jb2wuCiAKIEl0IHZlcmlmaWVzIHRoYXQgdGhlIGRpcmVjdG9yeSBoYXMgdGhlIG1hZ2ljIGZpbGUKLSJnaXQtZGFlbW9uLWV4cG9ydC1vayIsIGFuZCBpdCB3aWxsIHJlZnVzZSB0byBleHBvcnQgYW55IGdpdCBkaXJlY3RvcnkKKyJnaXQtZGFlbW9uLWV4cG9ydC1vayIsIGFuZCBpdCB3aWxsIHJlZnVzZSB0byBleHBvcnQgYW55IEdpdCBkaXJlY3RvcnkKIHRoYXQgaGFzbid0IGV4cGxpY2l0bHkgYmVlbiBtYXJrZWQgZm9yIGV4cG9ydCB0aGlzIHdheSAodW5sZXNzIHRoZQogR0lUX0hUVFBfRVhQT1JUX0FMTCBlbnZpcm9ubWVudGFsIHZhcmlhYmxlIGlzIHNldCkuCiAKQEAgLTgwLDcgKzgwLDMwIEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiArCiBUbyBlbmFibGUgYW5vbnltb3VzIHJlYWQgYWNjZXNzIGJ1dCBhdXRoZW50aWNhdGVkIHdyaXRlIGFjY2VzcywKLXJlcXVpcmUgYXV0aG9yaXphdGlvbiB3aXRoIGEgTG9jYXRpb25NYXRjaCBkaXJlY3RpdmU6CityZXF1aXJlIGF1dGhvcml6YXRpb24gZm9yIGJvdGggdGhlIGluaXRpYWwgcmVmIGFkdmVydGlzZW1lbnQgKHdoaWNoIHdlCitkZXRlY3QgYXMgYSBwdXNoIHZpYSB0aGUgc2VydmljZSBwYXJhbWV0ZXIgaW4gdGhlIHF1ZXJ5IHN0cmluZyksIGFuZCB0aGUKK3JlY2VpdmUtcGFjayBpbnZvY2F0aW9uIGl0c2VsZjoKKysKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Jld3JpdGVDb25kICV7UVVFUllfU1RSSU5HfSBzZXJ2aWNlPWdpdC1yZWNlaXZlLXBhY2sgW09SXQorUmV3cml0ZUNvbmQgJXtSRVFVRVNUX1VSSX0gL2dpdC1yZWNlaXZlLXBhY2skCitSZXdyaXRlUnVsZSBeL2dpdC8gLSBbRT1BVVRIUkVRVUlSRUQ6eWVzXQorCis8TG9jYXRpb25NYXRjaCAiXi9naXQvIj4KKwlPcmRlciBEZW55LEFsbG93CisJRGVueSBmcm9tIGVudj1BVVRIUkVRVUlSRUQKKworCUF1dGhUeXBlIEJhc2ljCisJQXV0aE5hbWUgIkdpdCBBY2Nlc3MiCisJUmVxdWlyZSBncm91cCBjb21taXR0ZXJzCisJU2F0aXNmeSBBbnkKKwkuLi4KKzwvTG9jYXRpb25NYXRjaD4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysKK0lmIHlvdSBkbyBub3QgaGF2ZSBgbW9kX3Jld3JpdGVgIGF2YWlsYWJsZSB0byBtYXRjaCBhZ2FpbnN0IHRoZSBxdWVyeQorc3RyaW5nLCBpdCBpcyBzdWZmaWNpZW50IHRvIGp1c3QgcHJvdGVjdCBgZ2l0LXJlY2VpdmUtcGFja2AgaXRzZWxmLAorbGlrZToKICsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDxMb2NhdGlvbk1hdGNoICJeL2dpdC8uKi9naXQtcmVjZWl2ZS1wYWNrJCI+CkBAIC05MSw2ICsxMTQsMTUgQEAKIDwvTG9jYXRpb25NYXRjaD4KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICsKK0luIHRoaXMgbW9kZSwgdGhlIHNlcnZlciB3aWxsIG5vdCByZXF1ZXN0IGF1dGhlbnRpY2F0aW9uIHVudGlsIHRoZQorY2xpZW50IGFjdHVhbGx5IHN0YXJ0cyB0aGUgb2JqZWN0IG5lZ290aWF0aW9uIHBoYXNlIG9mIHRoZSBwdXNoLCByYXRoZXIKK3RoYW4gZHVyaW5nIHRoZSBpbml0aWFsIGNvbnRhY3QuICBGb3IgdGhpcyByZWFzb24sIHlvdSBtdXN0IGFsc28gZW5hYmxlCit0aGUgYGh0dHAucmVjZWl2ZXBhY2tgIGNvbmZpZyBvcHRpb24gaW4gYW55IHJlcG9zaXRvcmllcyB0aGF0IHNob3VsZAorYWNjZXB0IGEgcHVzaC4gVGhlIGRlZmF1bHQgYmVoYXZpb3IsIGlmIGBodHRwLnJlY2VpdmVwYWNrYCBpcyBub3Qgc2V0LAoraXMgdG8gcmVqZWN0IGFueSBwdXNoZXMgYnkgdW5hdXRoZW50aWNhdGVkIHVzZXJzOyB0aGUgaW5pdGlhbCByZXF1ZXN0Cit3aWxsIHRoZXJlZm9yZSByZXBvcnQgYDQwMyBGb3JiaWRkZW5gIHRvIHRoZSBjbGllbnQsIHdpdGhvdXQgZXZlbiBnaXZpbmcKK2FuIG9wcG9ydHVuaXR5IGZvciBhdXRoZW50aWNhdGlvbi4KKysKIFRvIHJlcXVpcmUgYXV0aGVudGljYXRpb24gZm9yIGJvdGggcmVhZHMgYW5kIHdyaXRlcywgdXNlIGEgTG9jYXRpb24KIGRpcmVjdGl2ZSBhcm91bmQgdGhlIHJlcG9zaXRvcnksIG9yIG9uZSBvZiBpdHMgcGFyZW50IGRpcmVjdG9yaWVzOgogKwpAQCAtMTU4LDYgKzE5MCw1NCBAQAogU2NyaXB0QWxpYXMgL2dpdC8gL3Zhci93d3cvY2dpLWJpbi9naXR3ZWIuY2dpLwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitMaWdodHRwZDo6CisJRW5zdXJlIHRoYXQgYG1vZF9jZ2lgLCBgbW9kX2FsaWFzLCBgbW9kX2F1dGhgLCBgbW9kX3NldGVudmAgYXJlCisJbG9hZGVkLCB0aGVuIHNldCBgR0lUX1BST0pFQ1RfUk9PVGAgYXBwcm9wcmlhdGVseSBhbmQgcmVkaXJlY3QKKwlhbGwgcmVxdWVzdHMgdG8gdGhlIENHSToKKysKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2FsaWFzLnVybCArPSAoICIvZ2l0IiA9PiAiL3Vzci9saWIvZ2l0LWNvcmUvZ2l0LWh0dHAtYmFja2VuZCIgKQorJEhUVFBbInVybCJdID1+ICJeL2dpdCIgeworCWNnaS5hc3NpZ24gPSAoIiIgPT4gIiIpCisJc2V0ZW52LmFkZC1lbnZpcm9ubWVudCA9ICgKKwkJIkdJVF9QUk9KRUNUX1JPT1QiID0+ICIvdmFyL3d3dy9naXQiLAorCQkiR0lUX0hUVFBfRVhQT1JUX0FMTCIgPT4gIiIKKwkpCit9CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrCitUbyBlbmFibGUgYW5vbnltb3VzIHJlYWQgYWNjZXNzIGJ1dCBhdXRoZW50aWNhdGVkIHdyaXRlIGFjY2VzczoKKysKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyRIVFRQWyJxdWVyeXN0cmluZyJdID1+ICJzZXJ2aWNlPWdpdC1yZWNlaXZlLXBhY2siIHsKKwlpbmNsdWRlICJnaXQtYXV0aC5jb25mIgorfQorJEhUVFBbInVybCJdID1+ICJeL2dpdC8uKi9naXQtcmVjZWl2ZS1wYWNrJCIgeworCWluY2x1ZGUgImdpdC1hdXRoLmNvbmYiCit9CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrCit3aGVyZSBgZ2l0LWF1dGguY29uZmAgbG9va3Mgc29tZXRoaW5nIGxpa2U6CisrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCithdXRoLnJlcXVpcmUgPSAoCisJIi8iID0+ICgKKwkJIm1ldGhvZCIgPT4gImJhc2ljIiwKKwkJInJlYWxtIiA9PiAiR2l0IEFjY2VzcyIsCisJCSJyZXF1aXJlIiA9PiAidmFsaWQtdXNlciIKKwkgICAgICAgKQorKQorIyAuLi5hbmQgc2V0IHVwIGF1dGguYmFja2VuZCBoZXJlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrCitUbyByZXF1aXJlIGF1dGhlbnRpY2F0aW9uIGZvciBib3RoIHJlYWRzIGFuZCB3cml0ZXM6CisrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiskSFRUUFsidXJsIl0gPX4gIl4vZ2l0L3ByaXZhdGUiIHsKKwlpbmNsdWRlICJnaXQtYXV0aC5jb25mIgorfQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiAKIEVOVklST05NRU5UCiAtLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtaHR0cC1mZXRjaC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1odHRwLWZldGNoLnR4dAppbmRleCAwNzBjZDFlLi4yMWEzM2QyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1odHRwLWZldGNoLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1odHRwLWZldGNoLnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0LWh0dHAtZmV0Y2ggLSBEb3dubG9hZCBmcm9tIGEgcmVtb3RlIGdpdCByZXBvc2l0b3J5IHZpYSBIVFRQCitnaXQtaHR0cC1mZXRjaCAtIERvd25sb2FkIGZyb20gYSByZW1vdGUgR2l0IHJlcG9zaXRvcnkgdmlhIEhUVFAKIAogCiBTWU5PUFNJUwpAQCAtMTMsNyArMTMsNyBAQAogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KLURvd25sb2FkcyBhIHJlbW90ZSBnaXQgcmVwb3NpdG9yeSB2aWEgSFRUUC4KK0Rvd25sb2FkcyBhIHJlbW90ZSBHaXQgcmVwb3NpdG9yeSB2aWEgSFRUUC4KIAogKk5PVEUqOiB1c2Ugb2YgdGhpcyBjb21tYW5kIHdpdGhvdXQgLWEgaXMgZGVwcmVjYXRlZC4gIFRoZSAtYQogYmVoYXZpb3VyIHdpbGwgYmVjb21lIHRoZSBkZWZhdWx0IGluIGEgZnV0dXJlIHJlbGVhc2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1pbmRleC1wYWNrLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWluZGV4LXBhY2sudHh0CmluZGV4IDM5ZTZkMGQuLmJkZThlZWMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWluZGV4LXBhY2sudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWluZGV4LXBhY2sudHh0CkBAIC0xOSw3ICsxOSw3IEBACiBSZWFkcyBhIHBhY2tlZCBhcmNoaXZlICgucGFjaykgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUsIGFuZAogYnVpbGRzIGEgcGFjayBpbmRleCBmaWxlICguaWR4KSBmb3IgaXQuICBUaGUgcGFja2VkIGFyY2hpdmUKIHRvZ2V0aGVyIHdpdGggdGhlIHBhY2sgaW5kZXggY2FuIHRoZW4gYmUgcGxhY2VkIGluIHRoZQotb2JqZWN0cy9wYWNrLyBkaXJlY3Rvcnkgb2YgYSBnaXQgcmVwb3NpdG9yeS4KK29iamVjdHMvcGFjay8gZGlyZWN0b3J5IG9mIGEgR2l0IHJlcG9zaXRvcnkuCiAKIAogT1BUSU9OUwpAQCAtMzksNyArMzksNyBAQAogCVdoZW4gdGhpcyBmbGFnIGlzIHByb3ZpZGVkLCB0aGUgcGFjayBpcyByZWFkIGZyb20gc3RkaW4KIAlpbnN0ZWFkIGFuZCBhIGNvcHkgaXMgdGhlbiB3cml0dGVuIHRvIDxwYWNrLWZpbGU+LiBJZgogCTxwYWNrLWZpbGU+IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBwYWNrIGlzIHdyaXR0ZW4gdG8KLQlvYmplY3RzL3BhY2svIGRpcmVjdG9yeSBvZiB0aGUgY3VycmVudCBnaXQgcmVwb3NpdG9yeSB3aXRoCisJb2JqZWN0cy9wYWNrLyBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnQgR2l0IHJlcG9zaXRvcnkgd2l0aAogCWEgZGVmYXVsdCBuYW1lIGRldGVybWluZWQgZnJvbSB0aGUgcGFjayBjb250ZW50LiAgSWYKIAk8cGFjay1maWxlPiBpcyBub3Qgc3BlY2lmaWVkIGNvbnNpZGVyIHVzaW5nIC0ta2VlcCB0bwogCXByZXZlbnQgYSByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIHRoaXMgcHJvY2VzcyBhbmQKQEAgLTgxLDcgKzgxLDcgQEAKIAlUaGlzIGlzIG1lYW50IHRvIHJlZHVjZSBwYWNraW5nIHRpbWUgb24gbXVsdGlwcm9jZXNzb3IKIAltYWNoaW5lcy4gVGhlIHJlcXVpcmVkIGFtb3VudCBvZiBtZW1vcnkgZm9yIHRoZSBkZWx0YSBzZWFyY2gKIAl3aW5kb3cgaXMgaG93ZXZlciBtdWx0aXBsaWVkIGJ5IHRoZSBudW1iZXIgb2YgdGhyZWFkcy4KLQlTcGVjaWZ5aW5nIDAgd2lsbCBjYXVzZSBnaXQgdG8gYXV0by1kZXRlY3QgdGhlIG51bWJlciBvZiBDUFUncworCVNwZWNpZnlpbmcgMCB3aWxsIGNhdXNlIEdpdCB0byBhdXRvLWRldGVjdCB0aGUgbnVtYmVyIG9mIENQVSdzCiAJYW5kIHVzZSBtYXhpbXVtIDMgdGhyZWFkcy4KIAogCkBAIC04OSw3ICs4OSw3IEBACiAtLS0tCiAKIE9uY2UgdGhlIGluZGV4IGhhcyBiZWVuIGNyZWF0ZWQsIHRoZSBsaXN0IG9mIG9iamVjdCBuYW1lcyBpcyBzb3J0ZWQKLWFuZCB0aGUgU0hBMSBoYXNoIG9mIHRoYXQgbGlzdCBpcyBwcmludGVkIHRvIHN0ZG91dC4gSWYgLS1zdGRpbiB3YXMKK2FuZCB0aGUgU0hBLTEgaGFzaCBvZiB0aGF0IGxpc3QgaXMgcHJpbnRlZCB0byBzdGRvdXQuIElmIC0tc3RkaW4gd2FzCiBhbHNvIHVzZWQgdGhlbiB0aGlzIGlzIHByZWZpeGVkIGJ5IGVpdGhlciAicGFja1x0Iiwgb3IgImtlZXBcdCIgaWYgYQogbmV3IC5rZWVwIGZpbGUgd2FzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkLiBUaGlzIGlzIHVzZWZ1bCB0byByZW1vdmUgYQogLmtlZXAgZmlsZSB1c2VkIGFzIGEgbG9jayB0byBwcmV2ZW50IHRoZSByYWNlIHdpdGggJ2dpdCByZXBhY2snCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1pbml0LWRiLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWluaXQtZGIudHh0CmluZGV4IGEyMWUzNDYuLjY0OGE2Y2QgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWluaXQtZGIudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWluaXQtZGIudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXQtaW5pdC1kYiAtIENyZWF0ZXMgYW4gZW1wdHkgZ2l0IHJlcG9zaXRvcnkKK2dpdC1pbml0LWRiIC0gQ3JlYXRlcyBhbiBlbXB0eSBHaXQgcmVwb3NpdG9yeQogCiAKIFNZTk9QU0lTCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1pbml0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWluaXQudHh0CmluZGV4IDlhYzJiYmEuLmFmZDcyMWUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWluaXQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWluaXQudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXQtaW5pdCAtIENyZWF0ZSBhbiBlbXB0eSBnaXQgcmVwb3NpdG9yeSBvciByZWluaXRpYWxpemUgYW4gZXhpc3Rpbmcgb25lCitnaXQtaW5pdCAtIENyZWF0ZSBhbiBlbXB0eSBHaXQgcmVwb3NpdG9yeSBvciByZWluaXRpYWxpemUgYW4gZXhpc3Rpbmcgb25lCiAKIAogU1lOT1BTSVMKQEAgLTE3LDcgKzE3LDcgQEAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQogCi1UaGlzIGNvbW1hbmQgY3JlYXRlcyBhbiBlbXB0eSBnaXQgcmVwb3NpdG9yeSAtIGJhc2ljYWxseSBhIGAuZ2l0YAorVGhpcyBjb21tYW5kIGNyZWF0ZXMgYW4gZW1wdHkgR2l0IHJlcG9zaXRvcnkgLSBiYXNpY2FsbHkgYSBgLmdpdGAKIGRpcmVjdG9yeSB3aXRoIHN1YmRpcmVjdG9yaWVzIGZvciBgb2JqZWN0c2AsIGByZWZzL2hlYWRzYCwKIGByZWZzL3RhZ3NgLCBhbmQgdGVtcGxhdGUgZmlsZXMuICBBbiBpbml0aWFsIGBIRUFEYCBmaWxlIHRoYXQKIHJlZmVyZW5jZXMgdGhlIEhFQUQgb2YgdGhlIG1hc3RlciBicmFuY2ggaXMgYWxzbyBjcmVhdGVkLgpAQCAtNTgsMTkgKzU4LDE5IEBACiAtLXNlcGFyYXRlLWdpdC1kaXI9PGdpdCBkaXI+OjoKIAogSW5zdGVhZCBvZiBpbml0aWFsaXppbmcgdGhlIHJlcG9zaXRvcnkgd2hlcmUgaXQgaXMgc3VwcG9zZWQgdG8gYmUsCi1wbGFjZSBhIGZpbGVzeXRlbS1hZ25vc3RpYyBnaXQgc3ltYm9saWMgbGluayB0aGVyZSwgcG9pbnRpbmcgdG8gdGhlCi1zcGVjaWZpZWQgZ2l0IHBhdGgsIGFuZCBpbml0aWFsaXplIGEgZ2l0IHJlcG9zaXRvcnkgYXQgdGhlIHBhdGguIFRoZQotcmVzdWx0IGlzIGdpdCByZXBvc2l0b3J5IGNhbiBiZSBzZXBhcmF0ZWQgZnJvbSB3b3JraW5nIHRyZWUuIElmIHRoaXMKK3BsYWNlIGEgZmlsZXN5dGVtLWFnbm9zdGljIEdpdCBzeW1ib2xpYyBsaW5rIHRoZXJlLCBwb2ludGluZyB0byB0aGUKK3NwZWNpZmllZCBwYXRoLCBhbmQgaW5pdGlhbGl6ZSBhIEdpdCByZXBvc2l0b3J5IGF0IHRoZSBwYXRoLiBUaGUKK3Jlc3VsdCBpcyBHaXQgcmVwb3NpdG9yeSBjYW4gYmUgc2VwYXJhdGVkIGZyb20gd29ya2luZyB0cmVlLiBJZiB0aGlzCiBpcyByZWluaXRpYWxpemF0aW9uLCB0aGUgcmVwb3NpdG9yeSB3aWxsIGJlIG1vdmVkIHRvIHRoZSBzcGVjaWZpZWQKIHBhdGguCiAKIC0tc2hhcmVkWz0oZmFsc2V8dHJ1ZXx1bWFza3xncm91cHxhbGx8d29ybGR8ZXZlcnlib2R5fDB4eHgpXTo6CiAKLVNwZWNpZnkgdGhhdCB0aGUgZ2l0IHJlcG9zaXRvcnkgaXMgdG8gYmUgc2hhcmVkIGFtb25nc3Qgc2V2ZXJhbCB1c2Vycy4gIFRoaXMKK1NwZWNpZnkgdGhhdCB0aGUgR2l0IHJlcG9zaXRvcnkgaXMgdG8gYmUgc2hhcmVkIGFtb25nc3Qgc2V2ZXJhbCB1c2Vycy4gIFRoaXMKIGFsbG93cyB1c2VycyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgZ3JvdXAgdG8gcHVzaCBpbnRvIHRoYXQKIHJlcG9zaXRvcnkuICBXaGVuIHNwZWNpZmllZCwgdGhlIGNvbmZpZyB2YXJpYWJsZSAiY29yZS5zaGFyZWRSZXBvc2l0b3J5IiBpcwogc2V0IHNvIHRoYXQgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHVuZGVyIGAkR0lUX0RJUmAgYXJlIGNyZWF0ZWQgd2l0aCB0aGUKLXJlcXVlc3RlZCBwZXJtaXNzaW9ucy4gIFdoZW4gbm90IHNwZWNpZmllZCwgZ2l0IHdpbGwgdXNlIHBlcm1pc3Npb25zIHJlcG9ydGVkCityZXF1ZXN0ZWQgcGVybWlzc2lvbnMuICBXaGVuIG5vdCBzcGVjaWZpZWQsIEdpdCB3aWxsIHVzZSBwZXJtaXNzaW9ucyByZXBvcnRlZAogYnkgdW1hc2soMikuCiAKIFRoZSBvcHRpb24gY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXMsIGRlZmF1bHRpbmcgdG8gJ2dyb3VwJyBpZiBubyB2YWx1ZQpAQCAtMTMwLDcgKzEzMCw3IEBACiBFWEFNUExFUwogLS0tLS0tLS0KIAotU3RhcnQgYSBuZXcgZ2l0IHJlcG9zaXRvcnkgZm9yIGFuIGV4aXN0aW5nIGNvZGUgYmFzZTo6CitTdGFydCBhIG5ldyBHaXQgcmVwb3NpdG9yeSBmb3IgYW4gZXhpc3RpbmcgY29kZSBiYXNlOjoKICsKIC0tLS0tLS0tLS0tLS0tLS0KICQgY2QgL3BhdGgvdG8vbXkvY29kZWJhc2UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWxvZy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1sb2cudHh0CmluZGV4IDFmOTA2MjAuLmE5NzY1MzQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWxvZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtbG9nLnR4dApAQCAtOSw3ICs5LDcgQEAKIFNZTk9QU0lTCiAtLS0tLS0tLQogW3ZlcnNlXQotJ2dpdCBsb2cnIFs8b3B0aW9ucz5dIFs8c2luY2U+Li48dW50aWw+XSBbW1wtLV0gPHBhdGg+Li4uXQorJ2dpdCBsb2cnIFs8b3B0aW9ucz5dIFs8cmV2aXNpb24gcmFuZ2U+XSBbW1wtLV0gPHBhdGg+Li4uXQogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KQEAgLTI0LDE3ICsyNCw2IEBACiBPUFRJT05TCiAtLS0tLS0tCiAKLS08bj46OgotCUxpbWl0cyB0aGUgbnVtYmVyIG9mIGNvbW1pdHMgdG8gc2hvdy4KLQlOb3RlIHRoYXQgdGhpcyBpcyBhIGNvbW1pdCBsaW1pdGluZyBvcHRpb24sIHNlZSBiZWxvdy4KLQotPHNpbmNlPi4uPHVudGlsPjo6Ci0JU2hvdyBvbmx5IGNvbW1pdHMgYmV0d2VlbiB0aGUgbmFtZWQgdHdvIGNvbW1pdHMuICBXaGVuCi0JZWl0aGVyIDxzaW5jZT4gb3IgPHVudGlsPiBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0bwotCWBIRUFEYCwgaS5lLiB0aGUgdGlwIG9mIHRoZSBjdXJyZW50IGJyYW5jaC4KLQlGb3IgYSBtb3JlIGNvbXBsZXRlIGxpc3Qgb2Ygd2F5cyB0byBzcGVsbCA8c2luY2U+Ci0JYW5kIDx1bnRpbD4sIHNlZSBsaW5rZ2l0OmdpdHJldmlzaW9uc1s3XS4KLQogLS1mb2xsb3c6OgogCUNvbnRpbnVlIGxpc3RpbmcgdGhlIGhpc3Rvcnkgb2YgYSBmaWxlIGJleW9uZCByZW5hbWVzCiAJKHdvcmtzIG9ubHkgZm9yIGEgc2luZ2xlIGZpbGUpLgpAQCAtNTEsNiArNDAsMTEgQEAKIAlQcmludCBvdXQgdGhlIHJlZiBuYW1lIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgYnkgd2hpY2ggZWFjaAogCWNvbW1pdCB3YXMgcmVhY2hlZC4KIAorLS11c2UtbWFpbG1hcDo6CisJVXNlIG1haWxtYXAgZmlsZSB0byBtYXAgYXV0aG9yIGFuZCBjb21taXR0ZXIgbmFtZXMgYW5kIGVtYWlsCisJdG8gY2Fub25pY2FsIHJlYWwgbmFtZXMgYW5kIGVtYWlsIGFkZHJlc3Nlcy4gU2VlCisJbGlua2dpdDpnaXQtc2hvcnRsb2dbMV0uCisKIC0tZnVsbC1kaWZmOjoKIAlXaXRob3V0IHRoaXMgZmxhZywgImdpdCBsb2cgLXAgPHBhdGg+Li4uIiBzaG93cyBjb21taXRzIHRoYXQKIAl0b3VjaCB0aGUgc3BlY2lmaWVkIHBhdGhzLCBhbmQgZGlmZnMgYWJvdXQgdGhlIHNhbWUgc3BlY2lmaWVkCkBAIC02MywxOSArNTcsMjggQEAKIAogLS1sb2ctc2l6ZTo6CiAJQmVmb3JlIHRoZSBsb2cgbWVzc2FnZSBwcmludCBvdXQgaXRzIHNpemUgaW4gYnl0ZXMuIEludGVuZGVkCi0JbWFpbmx5IGZvciBwb3JjZWxhaW4gdG9vbHMgY29uc3VtcHRpb24uIElmIGdpdCBpcyB1bmFibGUgdG8KKwltYWlubHkgZm9yIHBvcmNlbGFpbiB0b29scyBjb25zdW1wdGlvbi4gSWYgR2l0IGlzIHVuYWJsZSB0bwogCXByb2R1Y2UgYSB2YWxpZCB2YWx1ZSBzaXplIGlzIHNldCB0byB6ZXJvLgogCU5vdGUgdGhhdCBvbmx5IG1lc3NhZ2UgaXMgY29uc2lkZXJlZCwgaWYgYWxzbyBhIGRpZmYgaXMgc2hvd24KIAlpdHMgc2l6ZSBpcyBub3QgaW5jbHVkZWQuCiAKKzxyZXZpc2lvbiByYW5nZT46OgorCVNob3cgb25seSBjb21taXRzIGluIHRoZSBzcGVjaWZpZWQgcmV2aXNpb24gcmFuZ2UuICBXaGVuIG5vCisJPHJldmlzaW9uIHJhbmdlPiBpcyBzcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvIGBIRUFEYCAoaS5lLiB0aGUKKwl3aG9sZSBoaXN0b3J5IGxlYWRpbmcgdG8gdGhlIGN1cnJlbnQgY29tbWl0KS4gIGBvcmlnaW4uLkhFQURgCisJc3BlY2lmaWVzIGFsbCB0aGUgY29tbWl0cyByZWFjaGFibGUgZnJvbSB0aGUgY3VycmVudCBjb21taXQKKwkoaS5lLiBgSEVBRGApLCBidXQgbm90IGZyb20gYG9yaWdpbmAuIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YKKwl3YXlzIHRvIHNwZWxsIDxyZXZpc2lvbiByYW5nZT4sIHNlZSB0aGUgIlNwZWNpZnlpbmcgUmFuZ2VzIgorCXNlY3Rpb24gb2YgbGlua2dpdDpnaXRyZXZpc2lvbnNbN10uCisKIFtcLS1dIDxwYXRoPi4uLjo6CiAJU2hvdyBvbmx5IGNvbW1pdHMgdGhhdCBhcmUgZW5vdWdoIHRvIGV4cGxhaW4gaG93IHRoZSBmaWxlcwogCXRoYXQgbWF0Y2ggdGhlIHNwZWNpZmllZCBwYXRocyBjYW1lIHRvIGJlLiAgU2VlICJIaXN0b3J5CiAJU2ltcGxpZmljYXRpb24iIGJlbG93IGZvciBkZXRhaWxzIGFuZCBvdGhlciBzaW1wbGlmaWNhdGlvbgogCW1vZGVzLgogKwotVG8gcHJldmVudCBjb25mdXNpb24gd2l0aCBvcHRpb25zIGFuZCBicmFuY2ggbmFtZXMsIHBhdGhzIG1heSBuZWVkIHRvCi1iZSBwcmVmaXhlZCB3aXRoICJcLS0gIiB0byBzZXBhcmF0ZSB0aGVtIGZyb20gb3B0aW9ucyBvciByZWZuYW1lcy4KK1BhdGhzIG1heSBuZWVkIHRvIGJlIHByZWZpeGVkIHdpdGggIlwtLSAiIHRvIHNlcGFyYXRlIHRoZW0gZnJvbQorb3B0aW9ucyBvciB0aGUgcmV2aXNpb24gcmFuZ2UsIHdoZW4gY29uZnVzaW9uIGFyaXNlcy4KIAogaW5jbHVkZTo6cmV2LWxpc3Qtb3B0aW9ucy50eHRbXQogCkBAIC0xMzcsNiArMTQwLDggQEAKIAlUaGlzIG1ha2VzIHNlbnNlIG9ubHkgd2hlbiBmb2xsb3dpbmcgYSBzdHJpY3QgcG9saWN5IG9mIG1lcmdpbmcgYWxsCiAJdG9waWMgYnJhbmNoZXMgd2hlbiBzdGF5aW5nIG9uIGEgc2luZ2xlIGludGVncmF0aW9uIGJyYW5jaC4KIAorYGdpdCBsb2cgLTNgOjoKKwlMaW1pdHMgdGhlIG51bWJlciBvZiBjb21taXRzIHRvIHNob3cgdG8gMy4KIAogRGlzY3Vzc2lvbgogLS0tLS0tLS0tLQpAQCAtMTY5LDcgKzE3NCw3IEBACiAJYGdpdCBsb2cgLXBgIG91dHB1dCB3b3VsZCBiZSBzaG93biB3aXRob3V0IGEgZGlmZiBhdHRhY2hlZC4KIAlUaGUgZGVmYXVsdCBpcyBgdHJ1ZWAuCiAKLW1haWxtYXAuZmlsZTo6CittYWlsbWFwLio6OgogCVNlZSBsaW5rZ2l0OmdpdC1zaG9ydGxvZ1sxXS4KIAogbm90ZXMuZGlzcGxheVJlZjo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1sb3N0LWZvdW5kLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWxvc3QtZm91bmQudHh0CmluZGV4IGM0MDZhMTEuLmQ1NDkzMjggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWxvc3QtZm91bmQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWxvc3QtZm91bmQudHh0CkBAIC00OCw3ICs0OCw4IEBACiAtLS0tLS0tLS0tLS0KIAogQWZ0ZXIgbWFraW5nIHN1cmUgeW91IGtub3cgd2hpY2ggdGhlIG9iamVjdCBpcyB0aGUgdGFnIHlvdSBhcmUgbG9va2luZwotZm9yLCB5b3UgY2FuIHJlY29ubmVjdCBpdCB0byB5b3VyIHJlZ3VsYXIgLmdpdC9yZWZzIGhpZXJhcmNoeS4KK2ZvciwgeW91IGNhbiByZWNvbm5lY3QgaXQgdG8geW91ciByZWd1bGFyIGByZWZzYCBoaWVyYXJjaHkgYnkgdXNpbmcKK3RoZSBgdXBkYXRlLXJlZmAgY29tbWFuZC4KIAogLS0tLS0tLS0tLS0tCiAkIGdpdCBjYXQtZmlsZSAtdCAxZWYyYjE5NgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtbHMtZmlsZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtbHMtZmlsZXMudHh0CmluZGV4IDRiMjgyOTIuLmMwODU2YTYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWxzLWZpbGVzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1scy1maWxlcy50eHQKQEAgLTkyLDcgKzkyLDcgQEAKIAlkaXJlY3RvcnkgYW5kIGl0cyBzdWJkaXJlY3RvcmllcyBpbiA8ZmlsZT4uCiAKIC0tZXhjbHVkZS1zdGFuZGFyZDo6Ci0JQWRkIHRoZSBzdGFuZGFyZCBnaXQgZXhjbHVzaW9uczogLmdpdC9pbmZvL2V4Y2x1ZGUsIC5naXRpZ25vcmUKKwlBZGQgdGhlIHN0YW5kYXJkIEdpdCBleGNsdXNpb25zOiAuZ2l0L2luZm8vZXhjbHVkZSwgLmdpdGlnbm9yZQogCWluIGVhY2ggZGlyZWN0b3J5LCBhbmQgdGhlIHVzZXIncyBnbG9iYWwgZXhjbHVzaW9uIGZpbGUuCiAKIC0tZXJyb3ItdW5tYXRjaDo6CkBAIC0xNjQsNyArMTY0LDcgQEAKICdnaXQgbHMtZmlsZXMgLS11bm1lcmdlZCcgYW5kICdnaXQgbHMtZmlsZXMgLS1zdGFnZScgY2FuIGJlIHVzZWQgdG8gZXhhbWluZQogZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdW5tZXJnZWQgcGF0aHMuCiAKLUZvciBhbiB1bm1lcmdlZCBwYXRoLCBpbnN0ZWFkIG9mIHJlY29yZGluZyBhIHNpbmdsZSBtb2RlL1NIQTEgcGFpciwKK0ZvciBhbiB1bm1lcmdlZCBwYXRoLCBpbnN0ZWFkIG9mIHJlY29yZGluZyBhIHNpbmdsZSBtb2RlL1NIQS0xIHBhaXIsCiB0aGUgaW5kZXggcmVjb3JkcyB1cCB0byB0aHJlZSBzdWNoIHBhaXJzOyBvbmUgZnJvbSB0cmVlIE8gaW4gc3RhZ2UKIDEsIEEgaW4gc3RhZ2UgMiwgYW5kIEIgaW4gc3RhZ2UgMy4gIFRoaXMgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWQgYnkKIHRoZSB1c2VyIChvciB0aGUgcG9yY2VsYWluKSB0byBzZWUgd2hhdCBzaG91bGQgZXZlbnR1YWxseSBiZSByZWNvcmRlZCBhdCB0aGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWxzLXJlbW90ZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1scy1yZW1vdGUudHh0CmluZGV4IDdhOWI4NmEuLjc3NGRlNWUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWxzLXJlbW90ZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtbHMtcmVtb3RlLnR4dApAQCAtNDIsNiArNDIsMTEgQEAKIAlpdCBzdWNjZXNzZnVsbHkgdGFsa2VkIHdpdGggdGhlIHJlbW90ZSByZXBvc2l0b3J5LCB3aGV0aGVyIGl0CiAJZm91bmQgYW55IG1hdGNoaW5nIHJlZnMuCiAKKy0tZ2V0LXVybDo6CisJRXhwYW5kIHRoZSBVUkwgb2YgdGhlIGdpdmVuIHJlbW90ZSByZXBvc2l0b3J5IHRha2luZyBpbnRvIGFjY291bnQgYW55CisJInVybC48YmFzZT4uaW5zdGVhZE9mIiBjb25maWcgc2V0dGluZyAoU2VlIGxpbmtnaXQ6Z2l0LWNvbmZpZ1sxXSkgYW5kCisJZXhpdCB3aXRob3V0IHRhbGtpbmcgdG8gdGhlIHJlbW90ZS4KKwogPHJlcG9zaXRvcnk+OjoKIAlMb2NhdGlvbiBvZiB0aGUgcmVwb3NpdG9yeS4gIFRoZSBzaG9ydGhhbmQgZGVmaW5lZCBpbgogCSRHSVRfRElSL2JyYW5jaGVzLyBjYW4gYmUgdXNlZC4gVXNlICIuIiAoZG90KSB0byBsaXN0IHJlZmVyZW5jZXMgaW4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LW1haWxpbmZvLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LW1haWxpbmZvLnR4dAppbmRleCA5N2U3YThlLi4xNjRhM2M2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1tYWlsaW5mby50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtbWFpbGluZm8udHh0CkBAIC05LDcgKzksNyBAQAogU1lOT1BTSVMKIC0tLS0tLS0tCiBbdmVyc2VdCi0nZ2l0IG1haWxpbmZvJyBbLWt8LWJdIFstdSB8IC0tZW5jb2Rpbmc9PGVuY29kaW5nPiB8IC1uXSBbLS1zY2lzc29yc10gPG1zZz4gPHBhdGNoPgorJ2dpdCBtYWlsaW5mbycgWy1rfC1iXSBbLXUgfCAtLWVuY29kaW5nPTxlbmNvZGluZz4gfCAtbl0gWy0tW25vLV1zY2lzc29yc10gPG1zZz4gPHBhdGNoPgogCiAKIERFU0NSSVBUSU9OCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS1iYXNlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLWJhc2UudHh0CmluZGV4IGIyOTViZjguLjg3ODQyZTMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLWJhc2UudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLWJhc2UudHh0CkBAIC0xMSw2ICsxMSw3IEBACiBbdmVyc2VdCiAnZ2l0IG1lcmdlLWJhc2UnIFstYXwtLWFsbF0gPGNvbW1pdD4gPGNvbW1pdD4uLi4KICdnaXQgbWVyZ2UtYmFzZScgWy1hfC0tYWxsXSAtLW9jdG9wdXMgPGNvbW1pdD4uLi4KKydnaXQgbWVyZ2UtYmFzZScgLS1pcy1hbmNlc3RvciA8Y29tbWl0PiA8Y29tbWl0PgogJ2dpdCBtZXJnZS1iYXNlJyAtLWluZGVwZW5kZW50IDxjb21taXQ+Li4uCiAKIERFU0NSSVBUSU9OCkBAIC01MCw2ICs1MSwxMiBAQAogCWZyb20gYW55IG90aGVyLiAgVGhpcyBtaW1pY3MgdGhlIGJlaGF2aW9yIG9mICdnaXQgc2hvdy1icmFuY2gKIAktLWluZGVwZW5kZW50Jy4KIAorLS1pcy1hbmNlc3Rvcjo6CisJQ2hlY2sgaWYgdGhlIGZpcnN0IDxjb21taXQ+IGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBzZWNvbmQgPGNvbW1pdD4sCisJYW5kIGV4aXQgd2l0aCBzdGF0dXMgMCBpZiB0cnVlLCBvciB3aXRoIHN0YXR1cyAxIGlmIG5vdC4KKwlFcnJvcnMgYXJlIHNpZ25hbGVkIGJ5IGEgbm9uLXplcm8gc3RhdHVzIHRoYXQgaXMgbm90IDEuCisKKwogT1BUSU9OUwogLS0tLS0tLQogLWE6OgpAQCAtMTEwLDYgKzExNywyNyBAQAogdGhlIG90aGVyIChib3RoIGFyZSAnYmVzdCcgbWVyZ2UgYmFzZXMpLiAgV2hlbiB0aGUgYC0tYWxsYCBvcHRpb24gaXMgbm90IGdpdmVuLAogaXQgaXMgdW5zcGVjaWZpZWQgd2hpY2ggYmVzdCBvbmUgaXMgb3V0cHV0LgogCitBIGNvbW1vbiBpZGlvbSB0byBjaGVjayAiZmFzdC1mb3J3YXJkLW5lc3MiIGJldHdlZW4gdHdvIGNvbW1pdHMgQQorYW5kIEIgaXMgKG9yIGF0IGxlYXN0IHVzZWQgdG8gYmUpIHRvIGNvbXB1dGUgdGhlIG1lcmdlIGJhc2UgYmV0d2VlbgorQSBhbmQgQiwgYW5kIGNoZWNrIGlmIGl0IGlzIHRoZSBzYW1lIGFzIEEsIGluIHdoaWNoIGNhc2UsIEEgaXMgYW4KK2FuY2VzdG9yIG9mIEIuICBZb3Ugd2lsbCBzZWUgdGhpcyBpZGlvbSB1c2VkIG9mdGVuIGluIG9sZGVyIHNjcmlwdHMuCisKKwlBPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBBKQorCWlmIHRlc3QgIiRBIiA9ICIkKGdpdCBtZXJnZS1iYXNlIEEgQikiCisJdGhlbgorCQkuLi4gQSBpcyBhbiBhbmNlc3RvciBvZiBCIC4uLgorCWZpCisKK0luIG1vZGVybiBnaXQsIHlvdSBjYW4gc2F5IHRoaXMgaW4gYSBtb3JlIGRpcmVjdCB3YXk6CisKKwlpZiBnaXQgbWVyZ2UtYmFzZSAtLWlzLWFuY2VzdG9yIEEgQgorCXRoZW4KKwkJLi4uIEEgaXMgYW4gYW5jZXN0b3Igb2YgQiAuLi4KKwlmaQorCitpbnN0ZWFkLgorCisKIFNlZSBhbHNvCiAtLS0tLS0tLQogbGlua2dpdDpnaXQtcmV2LWxpc3RbMV0sCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS1pbmRleC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS1pbmRleC50eHQKaW5kZXggZTBkZjFiMy4uMDI2NzZmYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UtaW5kZXgudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLWluZGV4LnR4dApAQCAtMTQsNyArMTQsNyBAQAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCiBUaGlzIGxvb2tzIHVwIHRoZSA8ZmlsZT4ocykgaW4gdGhlIGluZGV4IGFuZCwgaWYgdGhlcmUgYXJlIGFueSBtZXJnZQotZW50cmllcywgcGFzc2VzIHRoZSBTSEExIGhhc2ggZm9yIHRob3NlIGZpbGVzIGFzIGFyZ3VtZW50cyAxLCAyLCAzIChlbXB0eQorZW50cmllcywgcGFzc2VzIHRoZSBTSEEtMSBoYXNoIGZvciB0aG9zZSBmaWxlcyBhcyBhcmd1bWVudHMgMSwgMiwgMyAoZW1wdHkKIGFyZ3VtZW50IGlmIG5vIGZpbGUpLCBhbmQgPGZpbGU+IGFzIGFyZ3VtZW50IDQuICBGaWxlIG1vZGVzIGZvciB0aGUgdGhyZWUKIGZpbGVzIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIDUsIDYgYW5kIDcuCiAKQEAgLTQxLDEzICs0MSwxMyBAQAogcHJvY2Vzc2VzIHRoZW0gaW4gdHVybiBvbmx5IHN0b3BwaW5nIGlmIG1lcmdlIHJldHVybnMgYSBub24temVybyBleGl0CiBjb2RlLgogCi1UeXBpY2FsbHkgdGhpcyBpcyBydW4gd2l0aCBhIHNjcmlwdCBjYWxsaW5nIGdpdCdzIGltaXRhdGlvbiBvZgorVHlwaWNhbGx5IHRoaXMgaXMgcnVuIHdpdGggYSBzY3JpcHQgY2FsbGluZyBHaXQncyBpbWl0YXRpb24gb2YKIHRoZSAnbWVyZ2UnIGNvbW1hbmQgZnJvbSB0aGUgUkNTIHBhY2thZ2UuCiAKIEEgc2FtcGxlIHNjcmlwdCBjYWxsZWQgJ2dpdCBtZXJnZS1vbmUtZmlsZScgaXMgaW5jbHVkZWQgaW4gdGhlCiBkaXN0cmlidXRpb24uCiAKLUFMRVJUIEFMRVJUIEFMRVJUISBUaGUgZ2l0ICJtZXJnZSBvYmplY3Qgb3JkZXIiIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorQUxFUlQgQUxFUlQgQUxFUlQhIFRoZSBHaXQgIm1lcmdlIG9iamVjdCBvcmRlciIgaXMgZGlmZmVyZW50IGZyb20gdGhlCiBSQ1MgJ21lcmdlJyBwcm9ncmFtIG1lcmdlIG9iamVjdCBvcmRlci4gSW4gdGhlIGFib3ZlIG9yZGVyaW5nLCB0aGUKIG9yaWdpbmFsIGlzIGZpcnN0LiBCdXQgdGhlIGFyZ3VtZW50IG9yZGVyIHRvIHRoZSAzLXdheSBtZXJnZSBwcm9ncmFtCiAnbWVyZ2UnIGlzIHRvIGhhdmUgdGhlIG9yaWdpbmFsIGluIHRoZSBtaWRkbGUuIERvbid0IGFzayBtZSB3aHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS50eHQKaW5kZXggM2NlZWZiOC4uNjdjYTk5YyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLnR4dApAQCAtNzYsOCArNzYsNyBAQAogdXNlZCB0byBnaXZlIGEgZ29vZCBkZWZhdWx0IGZvciBhdXRvbWF0ZWQgJ2dpdCBtZXJnZScKIGludm9jYXRpb25zLgogCi0tLXJlcmVyZS1hdXRvdXBkYXRlOjoKLS0tbm8tcmVyZXJlLWF1dG91cGRhdGU6OgorLS1bbm8tXXJlcmVyZS1hdXRvdXBkYXRlOjoKIAlBbGxvdyB0aGUgcmVyZXJlIG1lY2hhbmlzbSB0byB1cGRhdGUgdGhlIGluZGV4IHdpdGggdGhlCiAJcmVzdWx0IG9mIGF1dG8tY29uZmxpY3QgcmVzb2x1dGlvbiBpZiBwb3NzaWJsZS4KIApAQCAtOTksNyArOTgsNyBAQAogCW1vcmUgdGhhbiB0d28gcGFyZW50cyAoYWZmZWN0aW9uYXRlbHkgY2FsbGVkIGFuIE9jdG9wdXMgbWVyZ2UpLgogKwogSWYgbm8gY29tbWl0IGlzIGdpdmVuIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYW5kIGlmIGBtZXJnZS5kZWZhdWx0VG9VcHN0cmVhbWAKLWNvbmZpZ3VyYXRpb24gdmFyaWFibGUgaXMgc2V0LCBtZXJnZSB0aGUgcmVtb3RlIHRyYWNraW5nIGJyYW5jaGVzCitjb25maWd1cmF0aW9uIHZhcmlhYmxlIGlzIHNldCwgbWVyZ2UgdGhlIHJlbW90ZS10cmFja2luZyBicmFuY2hlcwogdGhhdCB0aGUgY3VycmVudCBicmFuY2ggaXMgY29uZmlndXJlZCB0byB1c2UgYXMgaXRzIHVwc3RyZWFtLgogU2VlIGFsc28gdGhlIGNvbmZpZ3VyYXRpb24gc2VjdGlvbiBvZiB0aGlzIG1hbnVhbCBwYWdlLgogCkBAIC0xNzAsNiArMTY5LDMwIEBACiBJZiB5b3UgdHJpZWQgYSBtZXJnZSB3aGljaCByZXN1bHRlZCBpbiBjb21wbGV4IGNvbmZsaWN0cyBhbmQKIHdhbnQgdG8gc3RhcnQgb3ZlciwgeW91IGNhbiByZWNvdmVyIHdpdGggYGdpdCBtZXJnZSAtLWFib3J0YC4KIAorTUVSR0lORyBUQUcKKy0tLS0tLS0tLS0tCisKK1doZW4gbWVyZ2luZyBhbiBhbm5vdGF0ZWQgKGFuZCBwb3NzaWJseSBzaWduZWQpIHRhZywgR2l0IGFsd2F5cworY3JlYXRlcyBhIG1lcmdlIGNvbW1pdCBldmVuIGlmIGEgZmFzdC1mb3J3YXJkIG1lcmdlIGlzIHBvc3NpYmxlLCBhbmQKK3RoZSBjb21taXQgbWVzc2FnZSB0ZW1wbGF0ZSBpcyBwcmVwYXJlZCB3aXRoIHRoZSB0YWcgbWVzc2FnZS4KK0FkZGl0aW9uYWxseSwgaWYgdGhlIHRhZyBpcyBzaWduZWQsIHRoZSBzaWduYXR1cmUgY2hlY2sgaXMgcmVwb3J0ZWQKK2FzIGEgY29tbWVudCBpbiB0aGUgbWVzc2FnZSB0ZW1wbGF0ZS4gU2VlIGFsc28gbGlua2dpdDpnaXQtdGFnWzFdLgorCitXaGVuIHlvdSB3YW50IHRvIGp1c3QgaW50ZWdyYXRlIHdpdGggdGhlIHdvcmsgbGVhZGluZyB0byB0aGUgY29tbWl0Cit0aGF0IGhhcHBlbnMgdG8gYmUgdGFnZ2VkLCBlLmcuIHN5bmNocm9uaXppbmcgd2l0aCBhbiB1cHN0cmVhbQorcmVsZWFzZSBwb2ludCwgeW91IG1heSBub3Qgd2FudCB0byBtYWtlIGFuIHVubmVjZXNzYXJ5IG1lcmdlIGNvbW1pdC4KKworSW4gc3VjaCBhIGNhc2UsIHlvdSBjYW4gInVud3JhcCIgdGhlIHRhZyB5b3Vyc2VsZiBiZWZvcmUgZmVlZGluZyBpdAordG8gYGdpdCBtZXJnZWAsIG9yIHBhc3MgYC0tZmYtb25seWAgd2hlbiB5b3UgZG8gbm90IGhhdmUgYW55IHdvcmsgb24KK3lvdXIgb3duLiBlLmcuCisKKy0tLQorZ2l0IGZldGNoIG9yaWdpbgorZ2l0IG1lcmdlIHYxLjIuM14wCitnaXQgbWVyZ2UgLS1mZi1vbmx5IHYxLjIuMworLS0tCisKKwogSE9XIENPTkZMSUNUUyBBUkUgUFJFU0VOVEVECiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMTc4LDEwICsyMDEsMTAgQEAKIG5vbi1vdmVybGFwcGluZyBvbmVzICh0aGF0IGlzLCB5b3UgY2hhbmdlZCBhbiBhcmVhIG9mIHRoZSBmaWxlIHdoaWxlIHRoZQogb3RoZXIgc2lkZSBsZWZ0IHRoYXQgYXJlYSBpbnRhY3QsIG9yIHZpY2UgdmVyc2EpIGFyZSBpbmNvcnBvcmF0ZWQgaW4gdGhlCiBmaW5hbCByZXN1bHQgdmVyYmF0aW0uICBXaGVuIGJvdGggc2lkZXMgbWFkZSBjaGFuZ2VzIHRvIHRoZSBzYW1lIGFyZWEsCi1ob3dldmVyLCBnaXQgY2Fubm90IHJhbmRvbWx5IHBpY2sgb25lIHNpZGUgb3ZlciB0aGUgb3RoZXIsIGFuZCBhc2tzIHlvdSB0bworaG93ZXZlciwgR2l0IGNhbm5vdCByYW5kb21seSBwaWNrIG9uZSBzaWRlIG92ZXIgdGhlIG90aGVyLCBhbmQgYXNrcyB5b3UgdG8KIHJlc29sdmUgaXQgYnkgbGVhdmluZyB3aGF0IGJvdGggc2lkZXMgZGlkIHRvIHRoYXQgYXJlYS4KIAotQnkgZGVmYXVsdCwgZ2l0IHVzZXMgdGhlIHNhbWUgc3R5bGUgYXMgdGhhdCBpcyB1c2VkIGJ5ICJtZXJnZSIgcHJvZ3JhbQorQnkgZGVmYXVsdCwgR2l0IHVzZXMgdGhlIHNhbWUgc3R5bGUgYXMgdGhlIG9uZSB1c2VkIGJ5IHRoZSAibWVyZ2UiIHByb2dyYW0KIGZyb20gdGhlIFJDUyBzdWl0ZSB0byBwcmVzZW50IHN1Y2ggYSBjb25mbGljdGVkIGh1bmssIGxpa2UgdGhpczoKIAogLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZXRvb2wtLWxpYi50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZXRvb2wtLWxpYi50eHQKaW5kZXggZjk4YTQxYi4uMDU1NTUwYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2V0b29sLS1saWIudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdldG9vbC0tbGliLnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0LW1lcmdldG9vbC0tbGliIC0gQ29tbW9uIGdpdCBtZXJnZSB0b29sIHNoZWxsIHNjcmlwdGxldHMKK2dpdC1tZXJnZXRvb2wtLWxpYiAtIENvbW1vbiBHaXQgbWVyZ2UgdG9vbCBzaGVsbCBzY3JpcHRsZXRzCiAKIFNZTk9QU0lTCiAtLS0tLS0tLQpAQCAtMTksNyArMTksNyBAQAogCiBUaGUgJ2dpdC1tZXJnZXRvb2x7bGl0ZGR9bGliJyBzY3JpcHRsZXQgaXMgZGVzaWduZWQgdG8gYmUgc291cmNlZCAodXNpbmcKIGAuYCkgYnkgb3RoZXIgc2hlbGwgc2NyaXB0cyB0byBzZXQgdXAgZnVuY3Rpb25zIGZvciB3b3JraW5nCi13aXRoIGdpdCBtZXJnZSB0b29scy4KK3dpdGggR2l0IG1lcmdlIHRvb2xzLgogCiBCZWZvcmUgc291cmNpbmcgJ2dpdC1tZXJnZXRvb2x7bGl0ZGR9bGliJywgeW91ciBzY3JpcHQgbXVzdCBzZXQgYFRPT0xfTU9ERWAKIHRvIGRlZmluZSB0aGUgb3BlcmF0aW9uIG1vZGUgZm9yIHRoZSBmdW5jdGlvbnMgbGlzdGVkIGJlbG93LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2V0b29sLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdldG9vbC50eHQKaW5kZXggMmE0OWRlNy4uMDcxMzdmMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2V0b29sLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZXRvb2wudHh0CkBAIC04LDcgKzgsNyBAQAogU1lOT1BTSVMKIC0tLS0tLS0tCiBbdmVyc2VdCi0nZ2l0IG1lcmdldG9vbCcgWy0tdG9vbD08dG9vbD5dIFsteXwtLW5vLXByb21wdHwtLXByb21wdF0gWzxmaWxlPi4uLl0KKydnaXQgbWVyZ2V0b29sJyBbLS10b29sPTx0b29sPl0gWy15IHwgLS1bbm8tXXByb21wdF0gWzxmaWxlPi4uLl0KIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCkBAIC0yNyw5ICsyNyw5IEBACiAtdCA8dG9vbD46OgogLS10b29sPTx0b29sPjo6CiAJVXNlIHRoZSBtZXJnZSByZXNvbHV0aW9uIHByb2dyYW0gc3BlY2lmaWVkIGJ5IDx0b29sPi4KLQlWYWxpZCBtZXJnZSB0b29scyBhcmU6Ci0JYXJheGlzLCBiYzMsIGRpZmZ1c2UsIGVjbWVyZ2UsIGVtZXJnZSwgZ3ZpbWRpZmYsIGtkaWZmMywKLQltZWxkLCBvcGVuZGlmZiwgcDRtZXJnZSwgdGtkaWZmLCB0b3J0b2lzZW1lcmdlLCB2aW1kaWZmIGFuZCB4eGRpZmYuCisJVmFsaWQgdmFsdWVzIGluY2x1ZGUgZW1lcmdlLCBndmltZGlmZiwga2RpZmYzLAorCW1lbGQsIHZpbWRpZmYsIGFuZCB0b3J0b2lzZW1lcmdlLiBSdW4gYGdpdCBtZXJnZXRvb2wgLS10b29sLWhlbHBgCisJZm9yIHRoZSBsaXN0IG9mIHZhbGlkIDx0b29sPiBzZXR0aW5ncy4KICsKIElmIGEgbWVyZ2UgcmVzb2x1dGlvbiBwcm9ncmFtIGlzIG5vdCBzcGVjaWZpZWQsICdnaXQgbWVyZ2V0b29sJwogd2lsbCB1c2UgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgYG1lcmdlLnRvb2xgLiAgSWYgdGhlCkBAIC02NCw2ICs2NCw5IEBACiBPdGhlcndpc2UsICdnaXQgbWVyZ2V0b29sJyB3aWxsIHByb21wdCB0aGUgdXNlciB0byBpbmRpY2F0ZSB0aGUKIHN1Y2Nlc3Mgb2YgdGhlIHJlc29sdXRpb24gYWZ0ZXIgdGhlIGN1c3RvbSB0b29sIGhhcyBleGl0ZWQuCiAKKy0tdG9vbC1oZWxwOjoKKwlQcmludCBhIGxpc3Qgb2YgbWVyZ2UgdG9vbHMgdGhhdCBtYXkgYmUgdXNlZCB3aXRoIGAtLXRvb2xgLgorCiAteTo6CiAtLW5vLXByb21wdDo6CiAJRG9uJ3QgcHJvbXB0IGJlZm9yZSBlYWNoIGludm9jYXRpb24gb2YgdGhlIG1lcmdlIHJlc29sdXRpb24KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LW1rdGFnLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LW1rdGFnLnR4dAppbmRleCA2NWUxNjdhLi4zY2ExNThiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1ta3RhZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtbWt0YWcudHh0CkBAIC0yOCw5ICsyOCw5IEBACiAgIHRhZ2dlciA8dGFnZ2VyPgogCiBmb2xsb3dlZCBieSBzb21lICdvcHRpb25hbCcgZnJlZS1mb3JtIG1lc3NhZ2UgKHNvbWUgdGFncyBjcmVhdGVkCi1ieSBvbGRlciBnaXQgbWF5IG5vdCBoYXZlIGB0YWdnZXJgIGxpbmUpLiAgVGhlIG1lc3NhZ2UsIHdoZW4KK2J5IG9sZGVyIEdpdCBtYXkgbm90IGhhdmUgYHRhZ2dlcmAgbGluZSkuICBUaGUgbWVzc2FnZSwgd2hlbgogZXhpc3RzLCBpcyBzZXBhcmF0ZWQgYnkgYSBibGFuayBsaW5lIGZyb20gdGhlIGhlYWRlci4gIFRoZQotbWVzc2FnZSBwYXJ0IG1heSBjb250YWluIGEgc2lnbmF0dXJlIHRoYXQgZ2l0IGl0c2VsZiBkb2Vzbid0CittZXNzYWdlIHBhcnQgbWF5IGNvbnRhaW4gYSBzaWduYXR1cmUgdGhhdCBHaXQgaXRzZWxmIGRvZXNuJ3QKIGNhcmUgYWJvdXQsIGJ1dCB0aGF0IGNhbiBiZSB2ZXJpZmllZCB3aXRoIGdwZy4KIAogR0lUCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1tdi50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1tdi50eHQKaW5kZXggZTNjODQ0OC4uZTkzZmNiNCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbXYudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LW12LnR4dApAQCAtMzQsNyArMzQsNyBAQAogLWs6OgogICAgICAgICBTa2lwIG1vdmUgb3IgcmVuYW1lIGFjdGlvbnMgd2hpY2ggd291bGQgbGVhZCB0byBhbiBlcnJvcgogCWNvbmRpdGlvbi4gQW4gZXJyb3IgaGFwcGVucyB3aGVuIGEgc291cmNlIGlzIG5laXRoZXIgZXhpc3Rpbmcgbm9yCi0gICAgICAgIGNvbnRyb2xsZWQgYnkgR0lULCBvciB3aGVuIGl0IHdvdWxkIG92ZXJ3cml0ZSBhbiBleGlzdGluZworCWNvbnRyb2xsZWQgYnkgR2l0LCBvciB3aGVuIGl0IHdvdWxkIG92ZXJ3cml0ZSBhbiBleGlzdGluZwogICAgICAgICBmaWxlIHVubGVzcyAnLWYnIGlzIGdpdmVuLgogLW46OgogLS1kcnktcnVuOjoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LW5vdGVzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LW5vdGVzLnR4dAppbmRleCBiOTVhYWZhLi40NmVmMDQ2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1ub3Rlcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtbm90ZXMudHh0CkBAIC0zOSw2ICszOSwxMCBAQAogbWVzc2FnZSwgYWZ0ZXIgYW4gdW5pbmRlbnRlZCBsaW5lIHNheWluZyAiTm90ZXMgKDxyZWZuYW1lPik6IiAob3IKICJOb3RlczoiIGZvciBgcmVmcy9ub3Rlcy9jb21taXRzYCkuCiAKK05vdGVzIGNhbiBhbHNvIGJlIGFkZGVkIHRvIHBhdGNoZXMgcHJlcGFyZWQgd2l0aCBgZ2l0IGZvcm1hdC1wYXRjaGAgYnkKK3VzaW5nIHRoZSBgLS1ub3Rlc2Agb3B0aW9uLiBTdWNoIG5vdGVzIGFyZSBhZGRlZCBhcyBhIHBhdGNoIGNvbW1lbnRhcnkKK2FmdGVyIGEgdGhyZWUgZGFzaCBzZXBhcmF0b3IgbGluZS4KKwogVG8gY2hhbmdlIHdoaWNoIG5vdGVzIGFyZSBzaG93biBieSAnZ2l0IGxvZycsIHNlZSB0aGUKICJub3Rlcy5kaXNwbGF5UmVmIiBjb25maWd1cmF0aW9uIGluIGxpbmtnaXQ6Z2l0LWxvZ1sxXS4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcDQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcDQudHh0CmluZGV4IGZlMWY0OWIuLmM1NzlmYmMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXA0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1wNC50eHQKQEAgLTE4LDEzICsxOCwxMyBAQAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCiBUaGlzIGNvbW1hbmQgcHJvdmlkZXMgYSB3YXkgdG8gaW50ZXJhY3Qgd2l0aCBwNCByZXBvc2l0b3JpZXMKLXVzaW5nIGdpdC4KK3VzaW5nIEdpdC4KIAotQ3JlYXRlIGEgbmV3IGdpdCByZXBvc2l0b3J5IGZyb20gYW4gZXhpc3RpbmcgcDQgcmVwb3NpdG9yeSB1c2luZworQ3JlYXRlIGEgbmV3IEdpdCByZXBvc2l0b3J5IGZyb20gYW4gZXhpc3RpbmcgcDQgcmVwb3NpdG9yeSB1c2luZwogJ2dpdCBwNCBjbG9uZScsIGdpdmluZyBpdCBvbmUgb3IgbW9yZSBwNCBkZXBvdCBwYXRocy4gIEluY29ycG9yYXRlCiBuZXcgY29tbWl0cyBmcm9tIHA0IGNoYW5nZXMgd2l0aCAnZ2l0IHA0IHN5bmMnLiAgVGhlICdzeW5jJyBjb21tYW5kCiBpcyBhbHNvIHVzZWQgdG8gaW5jbHVkZSBuZXcgYnJhbmNoZXMgZnJvbSBvdGhlciBwNCBkZXBvdCBwYXRocy4KLVN1Ym1pdCBnaXQgY2hhbmdlcyBiYWNrIHRvIHA0IHVzaW5nICdnaXQgcDQgc3VibWl0Jy4gIFRoZSBjb21tYW5kCitTdWJtaXQgR2l0IGNoYW5nZXMgYmFjayB0byBwNCB1c2luZyAnZ2l0IHA0IHN1Ym1pdCcuICBUaGUgY29tbWFuZAogJ2dpdCBwNCByZWJhc2UnIGRvZXMgYSBzeW5jIHBsdXMgcmViYXNlcyB0aGUgY3VycmVudCBicmFuY2ggb250bwogdGhlIHVwZGF0ZWQgcDQgcmVtb3RlIGJyYW5jaC4KIApAQCAtMzcsNyArMzcsNyBAQAogJCBnaXQgcDQgY2xvbmUgLy9kZXBvdC9wYXRoL3Byb2plY3QKIC0tLS0tLS0tLS0tLQogCi0qIERvIHNvbWUgd29yayBpbiB0aGUgbmV3bHkgY3JlYXRlZCBnaXQgcmVwb3NpdG9yeToKKyogRG8gc29tZSB3b3JrIGluIHRoZSBuZXdseSBjcmVhdGVkIEdpdCByZXBvc2l0b3J5OgogKwogLS0tLS0tLS0tLS0tCiAkIGNkIHByb2plY3QKQEAgLTQ1LDcgKzQ1LDcgQEAKICQgZ2l0IGNvbW1pdCAtYSAtbSAiZWRpdGVkIGZvby5oIgogLS0tLS0tLS0tLS0tCiAKLSogVXBkYXRlIHRoZSBnaXQgcmVwb3NpdG9yeSB3aXRoIHJlY2VudCBjaGFuZ2VzIGZyb20gcDQsIHJlYmFzaW5nIHlvdXIKKyogVXBkYXRlIHRoZSBHaXQgcmVwb3NpdG9yeSB3aXRoIHJlY2VudCBjaGFuZ2VzIGZyb20gcDQsIHJlYmFzaW5nIHlvdXIKICAgd29yayBvbiB0b3A6CiArCiAtLS0tLS0tLS0tLS0KQEAgLTY0LDIxICs2NCwyMSBAQAogCiBDbG9uZQogfn5+fn4KLUdlbmVyYWxseSwgJ2dpdCBwNCBjbG9uZScgaXMgdXNlZCB0byBjcmVhdGUgYSBuZXcgZ2l0IGRpcmVjdG9yeQorR2VuZXJhbGx5LCAnZ2l0IHA0IGNsb25lJyBpcyB1c2VkIHRvIGNyZWF0ZSBhIG5ldyBHaXQgZGlyZWN0b3J5CiBmcm9tIGFuIGV4aXN0aW5nIHA0IHJlcG9zaXRvcnk6CiAtLS0tLS0tLS0tLS0KICQgZ2l0IHA0IGNsb25lIC8vZGVwb3QvcGF0aC9wcm9qZWN0CiAtLS0tLS0tLS0tLS0KIFRoaXM6CiAKLTEuICAgQ3JlYXRlcyBhbiBlbXB0eSBnaXQgcmVwb3NpdG9yeSBpbiBhIHN1YmRpcmVjdG9yeSBjYWxsZWQgJ3Byb2plY3QnLgorMS4gICBDcmVhdGVzIGFuIGVtcHR5IEdpdCByZXBvc2l0b3J5IGluIGEgc3ViZGlyZWN0b3J5IGNhbGxlZCAncHJvamVjdCcuCiArCiAyLiAgIEltcG9ydHMgdGhlIGZ1bGwgY29udGVudHMgb2YgdGhlIGhlYWQgcmV2aXNpb24gZnJvbSB0aGUgZ2l2ZW4gcDQKLWRlcG90IHBhdGggaW50byBhIHNpbmdsZSBjb21taXQgaW4gdGhlIGdpdCBicmFuY2ggJ3JlZnMvcmVtb3Rlcy9wNC9tYXN0ZXInLgorZGVwb3QgcGF0aCBpbnRvIGEgc2luZ2xlIGNvbW1pdCBpbiB0aGUgR2l0IGJyYW5jaCAncmVmcy9yZW1vdGVzL3A0L21hc3RlcicuCiArCiAzLiAgIENyZWF0ZXMgYSBsb2NhbCBicmFuY2gsICdtYXN0ZXInIGZyb20gdGhpcyByZW1vdGUgYW5kIGNoZWNrcyBpdCBvdXQuCiAKLVRvIHJlcHJvZHVjZSB0aGUgZW50aXJlIHA0IGhpc3RvcnkgaW4gZ2l0LCB1c2UgdGhlICdAYWxsJyBtb2RpZmllciBvbgorVG8gcmVwcm9kdWNlIHRoZSBlbnRpcmUgcDQgaGlzdG9yeSBpbiBHaXQsIHVzZSB0aGUgJ0BhbGwnIG1vZGlmaWVyIG9uCiB0aGUgZGVwb3QgcGF0aDoKIC0tLS0tLS0tLS0tLQogJCBnaXQgcDQgY2xvbmUgLy9kZXBvdC9wYXRoL3Byb2plY3RAYWxsCkBAIC04OCwxMyArODgsMTMgQEAKIFN5bmMKIH5+fn4KIEFzIGRldmVsb3BtZW50IGNvbnRpbnVlcyBpbiB0aGUgcDQgcmVwb3NpdG9yeSwgdGhvc2UgY2hhbmdlcyBjYW4KLWJlIGluY2x1ZGVkIGluIHRoZSBnaXQgcmVwb3NpdG9yeSB1c2luZzoKK2JlIGluY2x1ZGVkIGluIHRoZSBHaXQgcmVwb3NpdG9yeSB1c2luZzoKIC0tLS0tLS0tLS0tLQogJCBnaXQgcDQgc3luYwogLS0tLS0tLS0tLS0tCi1UaGlzIGNvbW1hbmQgZmluZHMgbmV3IGNoYW5nZXMgaW4gcDQgYW5kIGltcG9ydHMgdGhlbSBhcyBnaXQgY29tbWl0cy4KK1RoaXMgY29tbWFuZCBmaW5kcyBuZXcgY2hhbmdlcyBpbiBwNCBhbmQgaW1wb3J0cyB0aGVtIGFzIEdpdCBjb21taXRzLgogCi1QNCByZXBvc2l0b3JpZXMgY2FuIGJlIGFkZGVkIHRvIGFuIGV4aXN0aW5nIGdpdCByZXBvc2l0b3J5IHVzaW5nCitQNCByZXBvc2l0b3JpZXMgY2FuIGJlIGFkZGVkIHRvIGFuIGV4aXN0aW5nIEdpdCByZXBvc2l0b3J5IHVzaW5nCiAnZ2l0IHA0IHN5bmMnIHRvbzoKIC0tLS0tLS0tLS0tLQogJCBta2RpciByZXBvLWdpdApAQCAtMTAzLDE0ICsxMDMsMTkgQEAKICQgZ2l0IHA0IHN5bmMgLy9wYXRoL2luL3lvdXIvcGVyZm9yY2UvZGVwb3QKIC0tLS0tLS0tLS0tLQogVGhpcyBpbXBvcnRzIHRoZSBzcGVjaWZpZWQgZGVwb3QgaW50bwotJ3JlZnMvcmVtb3Rlcy9wNC9tYXN0ZXInIGluIGFuIGV4aXN0aW5nIGdpdCByZXBvc2l0b3J5LiAgVGhlCisncmVmcy9yZW1vdGVzL3A0L21hc3RlcicgaW4gYW4gZXhpc3RpbmcgR2l0IHJlcG9zaXRvcnkuICBUaGUKICctLWJyYW5jaCcgb3B0aW9uIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBkaWZmZXJlbnQgYnJhbmNoIHRvCiBiZSB1c2VkIGZvciB0aGUgcDQgY29udGVudC4KIAotSWYgYSBnaXQgcmVwb3NpdG9yeSBpbmNsdWRlcyBicmFuY2hlcyAncmVmcy9yZW1vdGVzL29yaWdpbi9wNCcsIHRoZXNlCitJZiBhIEdpdCByZXBvc2l0b3J5IGluY2x1ZGVzIGJyYW5jaGVzICdyZWZzL3JlbW90ZXMvb3JpZ2luL3A0JywgdGhlc2UKIHdpbGwgYmUgZmV0Y2hlZCBhbmQgY29uc3VsdGVkIGZpcnN0IGR1cmluZyBhICdnaXQgcDQgc3luYycuICBTaW5jZQogaW1wb3J0aW5nIGRpcmVjdGx5IGZyb20gcDQgaXMgY29uc2lkZXJhYmx5IHNsb3dlciB0aGFuIHB1bGxpbmcgY2hhbmdlcwotZnJvbSBhIGdpdCByZW1vdGUsIHRoaXMgY2FuIGJlIHVzZWZ1bCBpbiBhIG11bHRpLWRldmVsb3BlciBlbnZpcm9ubWVudC4KK2Zyb20gYSBHaXQgcmVtb3RlLCB0aGlzIGNhbiBiZSB1c2VmdWwgaW4gYSBtdWx0aS1kZXZlbG9wZXIgZW52aXJvbm1lbnQuCisKK0lmIHRoZXJlIGFyZSBtdWx0aXBsZSBicmFuY2hlcywgZG9pbmcgJ2dpdCBwNCBzeW5jJyB3aWxsIGF1dG9tYXRpY2FsbHkKK3VzZSB0aGUgIkJSQU5DSCBERVRFQ1RJT04iIGFsZ29yaXRobSB0byB0cnkgdG8gcGFydGl0aW9uIG5ldyBjaGFuZ2VzCitpbnRvIHRoZSByaWdodCBicmFuY2guICBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggdGhlICctLWJyYW5jaCcKK29wdGlvbiB0byBzcGVjaWZ5IGp1c3QgYSBzaW5nbGUgYnJhbmNoIHRvIHVwZGF0ZS4KIAogCiBSZWJhc2UKQEAgLTEyNywxMyArMTMyLDEzIEBACiAKIFN1Ym1pdAogfn5+fn5+Ci1TdWJtaXR0aW5nIGNoYW5nZXMgZnJvbSBhIGdpdCByZXBvc2l0b3J5IGJhY2sgdG8gdGhlIHA0IHJlcG9zaXRvcnkKK1N1Ym1pdHRpbmcgY2hhbmdlcyBmcm9tIGEgR2l0IHJlcG9zaXRvcnkgYmFjayB0byB0aGUgcDQgcmVwb3NpdG9yeQogcmVxdWlyZXMgYSBzZXBhcmF0ZSBwNCBjbGllbnQgd29ya3NwYWNlLiAgVGhpcyBzaG91bGQgYmUgc3BlY2lmaWVkCi11c2luZyB0aGUgJ1A0Q0xJRU5UJyBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUgZ2l0IGNvbmZpZ3VyYXRpb24KK3VzaW5nIHRoZSAnUDRDTElFTlQnIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSBHaXQgY29uZmlndXJhdGlvbgogdmFyaWFibGUgJ2dpdC1wNC5jbGllbnQnLiAgVGhlIHA0IGNsaWVudCBtdXN0IGV4aXN0LCBidXQgdGhlIGNsaWVudCByb290CiB3aWxsIGJlIGNyZWF0ZWQgYW5kIHBvcHVsYXRlZCBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LgogCi1UbyBzdWJtaXQgYWxsIGNoYW5nZXMgdGhhdCBhcmUgaW4gdGhlIGN1cnJlbnQgZ2l0IGJyYW5jaCBidXQgbm90IGluCitUbyBzdWJtaXQgYWxsIGNoYW5nZXMgdGhhdCBhcmUgaW4gdGhlIGN1cnJlbnQgR2l0IGJyYW5jaCBidXQgbm90IGluCiB0aGUgJ3A0L21hc3RlcicgYnJhbmNoLCB1c2U6CiAtLS0tLS0tLS0tLS0KICQgZ2l0IHA0IHN1Ym1pdApAQCAtMTQ5LDcgKzE1NCw3IEBACiAKIFRoZSBwNCBjaGFuZ2VzIHdpbGwgYmUgY3JlYXRlZCBhcyB0aGUgdXNlciBpbnZva2luZyAnZ2l0IHA0IHN1Ym1pdCcuIFRoZQogJy0tcHJlc2VydmUtdXNlcicgb3B0aW9uIHdpbGwgY2F1c2Ugb3duZXJzaGlwIHRvIGJlIG1vZGlmaWVkCi1hY2NvcmRpbmcgdG8gdGhlIGF1dGhvciBvZiB0aGUgZ2l0IGNvbW1pdC4gIFRoaXMgb3B0aW9uIHJlcXVpcmVzIGFkbWluCithY2NvcmRpbmcgdG8gdGhlIGF1dGhvciBvZiB0aGUgR2l0IGNvbW1pdC4gIFRoaXMgb3B0aW9uIHJlcXVpcmVzIGFkbWluCiBwcml2aWxlZ2VzIGluIHA0LCB3aGljaCBjYW4gYmUgZ3JhbnRlZCB1c2luZyAncDQgcHJvdGVjdCcuCiAKIApAQCAtMTYzLDcgKzE2OCw3IEBACiAtLWdpdC1kaXIgPGRpcj46OgogCVNldCB0aGUgJ0dJVF9ESVInIGVudmlyb25tZW50IHZhcmlhYmxlLiAgU2VlIGxpbmtnaXQ6Z2l0WzFdLgogCi0tLXZlcmJvc2U6OgorLS12ZXJib3NlLCAtdjo6CiAJUHJvdmlkZSBtb3JlIHByb2dyZXNzIGluZm9ybWF0aW9uLgogCiBTeW5jIG9wdGlvbnMKQEAgLTE3MywxMiArMTc4LDE0IEBACiAKIC0tYnJhbmNoIDxicmFuY2g+OjoKIAlJbXBvcnQgY2hhbmdlcyBpbnRvIGdpdmVuIGJyYW5jaC4gIElmIHRoZSBicmFuY2ggc3RhcnRzIHdpdGgKLQkncmVmcy8nLCBpdCB3aWxsIGJlIHVzZWQgYXMgaXMsIG90aGVyd2lzZSB0aGUgcGF0aCAncmVmcy9oZWFkcy8nCi0Jd2lsbCBiZSBwcmVwZW5kZWQuICBUaGUgZGVmYXVsdCBicmFuY2ggaXMgJ21hc3RlcicuICBJZiB1c2VkCi0Jd2l0aCBhbiBpbml0aWFsIGNsb25lLCBubyBIRUFEIHdpbGwgYmUgY2hlY2tlZCBvdXQuCisJJ3JlZnMvJywgaXQgd2lsbCBiZSB1c2VkIGFzIGlzLiAgT3RoZXJ3aXNlIGlmIGl0IGRvZXMgbm90IHN0YXJ0CisJd2l0aCAncDQvJywgdGhhdCBwcmVmaXggaXMgYWRkZWQuICBUaGUgYnJhbmNoIGlzIGFzc3VtZWQgdG8KKwluYW1lIGEgcmVtb3RlIHRyYWNraW5nLCBidXQgdGhpcyBjYW4gYmUgbW9kaWZpZWQgdXNpbmcKKwknLS1pbXBvcnQtbG9jYWwnLCBvciBieSBnaXZpbmcgYSBmdWxsIHJlZiBuYW1lLiAgVGhlIGRlZmF1bHQKKwlicmFuY2ggaXMgJ21hc3RlcicuCiArCiBUaGlzIGV4YW1wbGUgaW1wb3J0cyBhIG5ldyByZW1vdGUgInA0L3Byb2oyIiBpbnRvIGFuIGV4aXN0aW5nCi1naXQgcmVwb3NpdG9yeToKK0dpdCByZXBvc2l0b3J5OgogKwogLS0tLQogICAgICQgZ2l0IGluaXQKQEAgLTE5OSwxMSArMjA2LDExIEBACiAKIC0tZGV0ZWN0LWxhYmVsczo6CiAJUXVlcnkgcDQgZm9yIGxhYmVscyBhc3NvY2lhdGVkIHdpdGggdGhlIGRlcG90IHBhdGhzLCBhbmQgYWRkCi0JdGhlbSBhcyB0YWdzIGluIGdpdC4gTGltaXRlZCB1c2VmdWxuZXNzIGFzIG9ubHkgaW1wb3J0cyBsYWJlbHMKKwl0aGVtIGFzIHRhZ3MgaW4gR2l0LiBMaW1pdGVkIHVzZWZ1bG5lc3MgYXMgb25seSBpbXBvcnRzIGxhYmVscwogCWFzc29jaWF0ZWQgd2l0aCBuZXcgY2hhbmdlbGlzdHMuIERlcHJlY2F0ZWQuCiAKIC0taW1wb3J0LWxhYmVsczo6Ci0JSW1wb3J0IGxhYmVscyBmcm9tIHA0IGludG8gZ2l0LgorCUltcG9ydCBsYWJlbHMgZnJvbSBwNCBpbnRvIEdpdC4KIAogLS1pbXBvcnQtbG9jYWw6OgogCUJ5IGRlZmF1bHQsIHA0IGJyYW5jaGVzIGFyZSBzdG9yZWQgaW4gJ3JlZnMvcmVtb3Rlcy9wNC8nLApAQCAtMjE5LDEyICsyMjYsMTIgQEAKIAlzcGVjaWZpZXIuCiAKIC0ta2VlcC1wYXRoOjoKLQlUaGUgbWFwcGluZyBvZiBmaWxlIG5hbWVzIGZyb20gdGhlIHA0IGRlcG90IHBhdGggdG8gZ2l0LCBieQorCVRoZSBtYXBwaW5nIG9mIGZpbGUgbmFtZXMgZnJvbSB0aGUgcDQgZGVwb3QgcGF0aCB0byBHaXQsIGJ5CiAJZGVmYXVsdCwgaW52b2x2ZXMgcmVtb3ZpbmcgdGhlIGVudGlyZSBkZXBvdCBwYXRoLiAgV2l0aCB0aGlzCi0Jb3B0aW9uLCB0aGUgZnVsbCBwNCBkZXBvdCBwYXRoIGlzIHJldGFpbmVkIGluIGdpdC4gIEZvciBleGFtcGxlLAorCW9wdGlvbiwgdGhlIGZ1bGwgcDQgZGVwb3QgcGF0aCBpcyByZXRhaW5lZCBpbiBHaXQuICBGb3IgZXhhbXBsZSwKIAlwYXRoICcvL2RlcG90L21haW4vZm9vL2Jhci5jJywgd2hlbiBpbXBvcnRlZCBmcm9tCiAJJy8vZGVwb3QvbWFpbi8nLCBiZWNvbWVzICdmb28vYmFyLmMnLiAgV2l0aCAnLS1rZWVwLXBhdGgnLCB0aGUKLQlnaXQgcGF0aCBpcyBpbnN0ZWFkICdkZXBvdC9tYWluL2Zvby9iYXIuYycuCisJR2l0IHBhdGggaXMgaW5zdGVhZCAnZGVwb3QvbWFpbi9mb28vYmFyLmMnLgogCiAtLXVzZS1jbGllbnQtc3BlYzo6CiAJVXNlIGEgY2xpZW50IHNwZWMgdG8gZmluZCB0aGUgbGlzdCBvZiBpbnRlcmVzdGluZyBmaWxlcyBpbiBwNC4KQEAgLTIzNiw3ICsyNDMsNyBAQAogb3B0aW9ucyBkZXNjcmliZWQgYWJvdmUuCiAKIC0tZGVzdGluYXRpb24gPGRpcmVjdG9yeT46OgotCVdoZXJlIHRvIGNyZWF0ZSB0aGUgZ2l0IHJlcG9zaXRvcnkuICBJZiBub3QgcHJvdmlkZWQsIHRoZSBsYXN0CisJV2hlcmUgdG8gY3JlYXRlIHRoZSBHaXQgcmVwb3NpdG9yeS4gIElmIG5vdCBwcm92aWRlZCwgdGhlIGxhc3QKIAljb21wb25lbnQgaW4gdGhlIHA0IGRlcG90IHBhdGggaXMgdXNlZCB0byBjcmVhdGUgYSBuZXcKIAlkaXJlY3RvcnkuCiAKQEAgLTI1NSw3ICsyNjIsNyBAQAogCXA0LiAgQnkgZGVmYXVsdCwgdGhpcyBpcyB0aGUgbW9zdCByZWNlbnQgcDQgY29tbWl0IHJlYWNoYWJsZQogCWZyb20gJ0hFQUQnLgogCi0tTVs8bj5dOjoKKy1NOjoKIAlEZXRlY3QgcmVuYW1lcy4gIFNlZSBsaW5rZ2l0OmdpdC1kaWZmWzFdLiAgUmVuYW1lcyB3aWxsIGJlCiAJcmVwcmVzZW50ZWQgaW4gcDQgdXNpbmcgZXhwbGljaXQgJ21vdmUnIG9wZXJhdGlvbnMuICBUaGVyZQogCWlzIG5vIGNvcnJlc3BvbmRpbmcgb3B0aW9uIHRvIGRldGVjdCBjb3BpZXMsIGJ1dCB0aGVyZSBhcmUKQEAgLTI2Niw5ICsyNzMsMzIgQEAKIAlyZXF1aXJlcyBwNCBhZG1pbiBwcml2aWxlZ2VzLgogCiAtLWV4cG9ydC1sYWJlbHM6OgotCUV4cG9ydCB0YWdzIGZyb20gZ2l0IGFzIHA0IGxhYmVscy4gVGFncyBmb3VuZCBpbiBnaXQgYXJlIGFwcGxpZWQKKwlFeHBvcnQgdGFncyBmcm9tIEdpdCBhcyBwNCBsYWJlbHMuIFRhZ3MgZm91bmQgaW4gR2l0IGFyZSBhcHBsaWVkCiAJdG8gdGhlIHBlcmZvcmNlIHdvcmtpbmcgZGlyZWN0b3J5LgogCistLWRyeS1ydW4sIC1uOjoKKwlTaG93IGp1c3Qgd2hhdCBjb21taXRzIHdvdWxkIGJlIHN1Ym1pdHRlZCB0byBwNDsgZG8gbm90IGNoYW5nZQorCXN0YXRlIGluIEdpdCBvciBwNC4KKworLS1wcmVwYXJlLXA0LW9ubHk6OgorCUFwcGx5IGEgY29tbWl0IHRvIHRoZSBwNCB3b3Jrc3BhY2UsIG9wZW5pbmcsIGFkZGluZyBhbmQgZGVsZXRpbmcKKwlmaWxlcyBpbiBwNCBhcyBmb3IgYSBub3JtYWwgc3VibWl0IG9wZXJhdGlvbi4gIERvIG5vdCBpc3N1ZSB0aGUKKwlmaW5hbCAicDQgc3VibWl0IiwgYnV0IGluc3RlYWQgcHJpbnQgYSBtZXNzYWdlIGFib3V0IGhvdyB0bworCXN1Ym1pdCBtYW51YWxseSBvciByZXZlcnQuICBUaGlzIG9wdGlvbiBhbHdheXMgc3RvcHMgYWZ0ZXIgdGhlCisJZmlyc3QgKG9sZGVzdCkgY29tbWl0LiAgR2l0IHRhZ3MgYXJlIG5vdCBleHBvcnRlZCB0byBwNC4KKworLS1jb25mbGljdD0oYXNrfHNraXB8cXVpdCk6OgorCUNvbmZsaWN0cyBjYW4gb2NjdXIgd2hlbiBhcHBseWluZyBhIGNvbW1pdCB0byBwNC4gIFdoZW4gdGhpcworCWhhcHBlbnMsIHRoZSBkZWZhdWx0IGJlaGF2aW9yICgiYXNrIikgaXMgdG8gcHJvbXB0IHdoZXRoZXIgdG8KKwlza2lwIHRoaXMgY29tbWl0IGFuZCBjb250aW51ZSwgb3IgcXVpdC4gIFRoaXMgb3B0aW9uIGNhbiBiZSB1c2VkCisJdG8gYnlwYXNzIHRoZSBwcm9tcHQsIGNhdXNpbmcgY29uZmxpY3RpbmcgY29tbWl0cyB0byBiZSBhdXRvbWF0aWNhbGx5CisJc2tpcHBlZCwgb3IgdG8gcXVpdCB0cnlpbmcgdG8gYXBwbHkgY29tbWl0cywgd2l0aG91dCBwcm9tcHRpbmcuCisKKy0tYnJhbmNoIDxicmFuY2g+OjoKKwlBZnRlciBzdWJtaXR0aW5nLCBzeW5jIHRoaXMgbmFtZWQgYnJhbmNoIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQKKwlwNC9tYXN0ZXIuICBTZWUgdGhlICJTeW5jIG9wdGlvbnMiIHNlY3Rpb24gYWJvdmUgZm9yIG1vcmUKKwlpbmZvcm1hdGlvbi4KKwogUmViYXNlIG9wdGlvbnMKIH5+fn5+fn5+fn5+fn5+CiBUaGVzZSBvcHRpb25zIGNhbiBiZSB1c2VkIHRvIG1vZGlmeSAnZ2l0IHA0IHJlYmFzZScgYmVoYXZpb3IuCkBAIC0yOTQsMTIgKzMyNCwxMiBAQAogIi8vZGVwb3QvcHJvajFAYWxsIC8vZGVwb3QvcHJvajJAYWxsIjo6CiAgICAgSW1wb3J0IGFsbCBjaGFuZ2VzIGZyb20gYm90aCBuYW1lZCBkZXBvdCBwYXRocyBpbnRvIGEgc2luZ2xlCiAgICAgcmVwb3NpdG9yeS4gIE9ubHkgZmlsZXMgYmVsb3cgdGhlc2UgZGlyZWN0b3JpZXMgYXJlIGluY2x1ZGVkLgotICAgIFRoZXJlIGlzIG5vdCBhIHN1YmRpcmVjdG9yeSBpbiBnaXQgZm9yIGVhY2ggInByb2oxIiBhbmQgInByb2oyIi4KKyAgICBUaGVyZSBpcyBub3QgYSBzdWJkaXJlY3RvcnkgaW4gR2l0IGZvciBlYWNoICJwcm9qMSIgYW5kICJwcm9qMiIuCiAgICAgWW91IG11c3QgdXNlIHRoZSAnLS1kZXN0aW5hdGlvbicgb3B0aW9uIHdoZW4gc3BlY2lmeWluZyBtb3JlCiAgICAgdGhhbiBvbmUgZGVwb3QgcGF0aC4gIFRoZSByZXZpc2lvbiBzcGVjaWZpZXIgbXVzdCBiZSBzcGVjaWZpZWQKICAgICBpZGVudGljYWxseSBvbiBlYWNoIGRlcG90IHBhdGguICBJZiB0aGVyZSBhcmUgZmlsZXMgaW4gdGhlCiAgICAgZGVwb3QgcGF0aHMgd2l0aCB0aGUgc2FtZSBuYW1lLCB0aGUgcGF0aCB3aXRoIHRoZSBtb3N0IHJlY2VudGx5Ci0gICAgdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBmaWxlIGlzIHRoZSBvbmUgdGhhdCBhcHBlYXJzIGluIGdpdC4KKyAgICB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIGZpbGUgaXMgdGhlIG9uZSB0aGF0IGFwcGVhcnMgaW4gR2l0LgogCiBTZWUgJ3A0IGhlbHAgcmV2aXNpb25zJyBmb3IgdGhlIGZ1bGwgc3ludGF4IG9mIHA0IHJldmlzaW9uIHNwZWNpZmllcnMuCiAKQEAgLTMxNiwxMSArMzQ2LDExIEBACiB3b3JrIHByb3Blcmx5OyB0aGUgc3VibWl0IGNvbW1hbmQgbG9va3Mgb25seSBhdCB0aGUgdmFyaWFibGUgYW5kIGRvZXMKIG5vdCBoYXZlIGEgY29tbWFuZC1saW5lIG9wdGlvbi4KIAotVGhlIGZ1bGwgc3ludGF4IGZvciBhIHA0IHZpZXcgaXMgZG9jdW1lbnRlZCBpbiAncDQgaGVscCB2aWV3cycuICAnR2l0IHA0JworVGhlIGZ1bGwgc3ludGF4IGZvciBhIHA0IHZpZXcgaXMgZG9jdW1lbnRlZCBpbiAncDQgaGVscCB2aWV3cycuICAnZ2l0IHA0Jwoga25vd3Mgb25seSBhIHN1YnNldCBvZiB0aGUgdmlldyBzeW50YXguICBJdCB1bmRlcnN0YW5kcyBtdWx0aS1saW5lCiBtYXBwaW5ncywgb3ZlcmxheXMgd2l0aCAnKycsIGV4Y2x1c2lvbnMgd2l0aCAnLScgYW5kIGRvdWJsZS1xdW90ZXMKIGFyb3VuZCB3aGl0ZXNwYWNlLiAgT2YgdGhlIHBvc3NpYmxlIHdpbGRjYXJkcywgJ2dpdCBwNCcgb25seSBoYW5kbGVzCi0nLi4uJywgYW5kIG9ubHkgd2hlbiBpdCBpcyBhdCB0aGUgZW5kIG9mIHRoZSBwYXRoLiAgJ0dpdCBwNCcgd2lsbCBjb21wbGFpbgorJy4uLicsIGFuZCBvbmx5IHdoZW4gaXQgaXMgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aC4gICdnaXQgcDQnIHdpbGwgY29tcGxhaW4KIGlmIGl0IGVuY291bnRlcnMgYW4gdW5oYW5kbGVkIHdpbGRjYXJkLgogCiBCdWdzIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBvdmVybGFwIG1hcHBpbmdzIGV4aXN0LiAgSWYgbXVsdGlwbGUgZGVwb3QKQEAgLTMzNiw3ICszNjYsNyBAQAogCiBCUkFOQ0ggREVURUNUSU9OCiAtLS0tLS0tLS0tLS0tLS0tCi1QNCBkb2VzIG5vdCBoYXZlIHRoZSBzYW1lIGNvbmNlcHQgb2YgYSBicmFuY2ggYXMgZ2l0LiAgSW5zdGVhZCwKK1A0IGRvZXMgbm90IGhhdmUgdGhlIHNhbWUgY29uY2VwdCBvZiBhIGJyYW5jaCBhcyBHaXQuICBJbnN0ZWFkLAogcDQgb3JnYW5pemVzIGl0cyBjb250ZW50IGFzIGEgZGlyZWN0b3J5IHRyZWUsIHdoZXJlIGJ5IGNvbnZlbnRpb24KIGRpZmZlcmVudCBsb2dpY2FsIGJyYW5jaGVzIGFyZSBpbiBkaWZmZXJlbnQgbG9jYXRpb25zIGluIHRoZSB0cmVlLgogVGhlICdwNCBicmFuY2gnIGNvbW1hbmQgaXMgdXNlZCB0byBtYWludGFpbiBtYXBwaW5ncyBiZXR3ZWVuCkBAIC0zNDYsNyArMzc2LDcgQEAKIElmIHlvdSBoYXZlIGEgcmVwb3NpdG9yeSB3aGVyZSBhbGwgdGhlIGJyYW5jaGVzIG9mIGludGVyZXN0IGV4aXN0IGFzCiBzdWJkaXJlY3RvcmllcyBvZiBhIHNpbmdsZSBkZXBvdCBwYXRoLCB5b3UgY2FuIHVzZSAnLS1kZXRlY3QtYnJhbmNoZXMnCiB3aGVuIGNsb25pbmcgb3Igc3luY2luZyB0byBoYXZlICdnaXQgcDQnIGF1dG9tYXRpY2FsbHkgZmluZAotc3ViZGlyZWN0b3JpZXMgaW4gcDQsIGFuZCB0byBnZW5lcmF0ZSB0aGVzZSBhcyBicmFuY2hlcyBpbiBnaXQuCitzdWJkaXJlY3RvcmllcyBpbiBwNCwgYW5kIHRvIGdlbmVyYXRlIHRoZXNlIGFzIGJyYW5jaGVzIGluIEdpdC4KIAogRm9yIGV4YW1wbGUsIGlmIHRoZSBQNCByZXBvc2l0b3J5IHN0cnVjdHVyZSBpczoKIC0tLS0KQEAgLTM2OCw3ICszOTgsNyBAQAogCiBIb3dldmVyLCBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNyZWF0ZSBicmFuY2hlcyBpbiBwNCB0byBiZSBhYmxlIHRvIHVzZQogdGhlbSBsaWtlIGJyYW5jaGVzLiAgQmVjYXVzZSBpdCBpcyBkaWZmaWN1bHQgdG8gaW5mZXIgYnJhbmNoCi1yZWxhdGlvbnNoaXBzIGF1dG9tYXRpY2FsbHksIGEgZ2l0IGNvbmZpZ3VyYXRpb24gc2V0dGluZworcmVsYXRpb25zaGlwcyBhdXRvbWF0aWNhbGx5LCBhIEdpdCBjb25maWd1cmF0aW9uIHNldHRpbmcKICdnaXQtcDQuYnJhbmNoTGlzdCcgY2FuIGJlIHVzZWQgdG8gZXhwbGljaXRseSBpZGVudGlmeSBicmFuY2gKIHJlbGF0aW9uc2hpcHMuICBJdCBpcyBhIGxpc3Qgb2YgInNvdXJjZTpkZXN0aW5hdGlvbiIgcGFpcnMsIGxpa2UgYQogc2ltcGxlIHA0IGJyYW5jaCBzcGVjaWZpY2F0aW9uLCB3aGVyZSB0aGUgInNvdXJjZSIgYW5kICJkZXN0aW5hdGlvbiIgYXJlCkBAIC0zNzYsMTUgKzQwNiwxNyBAQAogcHJlc2VuY2Ugb2YgdGhlIHA0IGJyYW5jaC4gIFdpdGhvdXQgcDQgYnJhbmNoZXMsIHRoZSBzYW1lIHJlc3VsdCB3aWxsCiBvY2N1ciB3aXRoOgogLS0tLQorZ2l0IGluaXQgZGVwb3QKK2NkIGRlcG90CiBnaXQgY29uZmlnIGdpdC1wNC5icmFuY2hMaXN0IG1haW46YnJhbmNoMQotZ2l0IHA0IGNsb25lIC0tZGV0ZWN0LWJyYW5jaGVzIC8vZGVwb3RAYWxsCitnaXQgcDQgY2xvbmUgLS1kZXRlY3QtYnJhbmNoZXMgLy9kZXBvdEBhbGwgLgogLS0tLQogCiAKIFBFUkZPUk1BTkNFCiAtLS0tLS0tLS0tLQogVGhlIGZhc3QtaW1wb3J0IG1lY2hhbmlzbSB1c2VkIGJ5ICdnaXQgcDQnIGNyZWF0ZXMgb25lIHBhY2sgZmlsZSBmb3IKLWVhY2ggaW52b2NhdGlvbiBvZiAnZ2l0IHA0IHN5bmMnLiAgTm9ybWFsbHksIGdpdCBnYXJiYWdlIGNvbXByZXNzaW9uCitlYWNoIGludm9jYXRpb24gb2YgJ2dpdCBwNCBzeW5jJy4gIE5vcm1hbGx5LCBHaXQgZ2FyYmFnZSBjb21wcmVzc2lvbgogKGxpbmtnaXQ6Z2l0LWdjWzFdKSBhdXRvbWF0aWNhbGx5IGNvbXByZXNzZXMgdGhlc2UgdG8gZmV3ZXIgcGFjayBmaWxlcywKIGJ1dCBleHBsaWNpdCBpbnZvY2F0aW9uIG9mICdnaXQgcmVwYWNrIC1hZGYnIG1heSBpbXByb3ZlIHBlcmZvcm1hbmNlLgogCkBAIC00MjIsOSArNDU0LDkgQEAKIENsb25lIGFuZCBzeW5jIHZhcmlhYmxlcwogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiBnaXQtcDQuc3luY0Zyb21PcmlnaW46OgotCUJlY2F1c2UgaW1wb3J0aW5nIGNvbW1pdHMgZnJvbSBvdGhlciBnaXQgcmVwb3NpdG9yaWVzIGlzIG11Y2ggZmFzdGVyCisJQmVjYXVzZSBpbXBvcnRpbmcgY29tbWl0cyBmcm9tIG90aGVyIEdpdCByZXBvc2l0b3JpZXMgaXMgbXVjaCBmYXN0ZXIKIAl0aGFuIGltcG9ydGluZyB0aGVtIGZyb20gcDQsIGEgbWVjaGFuaXNtIGV4aXN0cyB0byBmaW5kIHA0IGNoYW5nZXMKLQlmaXJzdCBpbiBnaXQgcmVtb3Rlcy4gIElmIGJyYW5jaGVzIGV4aXN0IHVuZGVyICdyZWZzL3JlbW90ZS9vcmlnaW4vcDQnLAorCWZpcnN0IGluIEdpdCByZW1vdGVzLiAgSWYgYnJhbmNoZXMgZXhpc3QgdW5kZXIgJ3JlZnMvcmVtb3RlL29yaWdpbi9wNCcsCiAJdGhvc2Ugd2lsbCBiZSBmZXRjaGVkIGFuZCB1c2VkIHdoZW4gc3luY2luZyBmcm9tIHA0LiAgVGhpcwogCXZhcmlhYmxlIGNhbiBiZSBzZXQgdG8gJ2ZhbHNlJyB0byBkaXNhYmxlIHRoaXMgYmVoYXZpb3IuCiAKQEAgLTQ2NSwxNiArNDk3LDE4IEBACiBTdWJtaXQgdmFyaWFibGVzCiB+fn5+fn5+fn5+fn5+fn5+CiBnaXQtcDQuZGV0ZWN0UmVuYW1lczo6Ci0JRGV0ZWN0IHJlbmFtZXMuICBTZWUgbGlua2dpdDpnaXQtZGlmZlsxXS4KKwlEZXRlY3QgcmVuYW1lcy4gIFNlZSBsaW5rZ2l0OmdpdC1kaWZmWzFdLiAgVGhpcyBjYW4gYmUgdHJ1ZSwKKwlmYWxzZSwgb3IgYSBzY29yZSBhcyBleHBlY3RlZCBieSAnZ2l0IGRpZmYgLU0nLgogCiBnaXQtcDQuZGV0ZWN0Q29waWVzOjoKLQlEZXRlY3QgY29waWVzLiAgU2VlIGxpbmtnaXQ6Z2l0LWRpZmZbMV0uCisJRGV0ZWN0IGNvcGllcy4gIFNlZSBsaW5rZ2l0OmdpdC1kaWZmWzFdLiAgVGhpcyBjYW4gYmUgdHJ1ZSwKKwlmYWxzZSwgb3IgYSBzY29yZSBhcyBleHBlY3RlZCBieSAnZ2l0IGRpZmYgLUMnLgogCiBnaXQtcDQuZGV0ZWN0Q29waWVzSGFyZGVyOjoKLQlEZXRlY3QgY29waWVzIGhhcmRlci4gIFNlZSBsaW5rZ2l0OmdpdC1kaWZmWzFdLgorCURldGVjdCBjb3BpZXMgaGFyZGVyLiAgU2VlIGxpbmtnaXQ6Z2l0LWRpZmZbMV0uICBBIGJvb2xlYW4uCiAKIGdpdC1wNC5wcmVzZXJ2ZVVzZXI6OgotCU9uIHN1Ym1pdCwgcmUtYXV0aG9yIGNoYW5nZXMgdG8gcmVmbGVjdCB0aGUgZ2l0IGF1dGhvciwKKwlPbiBzdWJtaXQsIHJlLWF1dGhvciBjaGFuZ2VzIHRvIHJlZmxlY3QgdGhlIEdpdCBhdXRob3IsCiAJcmVnYXJkbGVzcyBvZiB3aG8gaW52b2tlcyAnZ2l0IHA0IHN1Ym1pdCcuCiAKIGdpdC1wNC5hbGxvd01pc3NpbmdQNFVzZXJzOjoKQEAgLTUxMSwxOSArNTQ1LDIzIEBACiAJcHJlc2VudC4KIAogZ2l0LXA0LmV4cG9ydExhYmVsczo6Ci0JRXhwb3J0IGdpdCB0YWdzIHRvIHA0IGxhYmVscywgYXMgcGVyIC0tZXhwb3J0LWxhYmVscy4KKwlFeHBvcnQgR2l0IHRhZ3MgdG8gcDQgbGFiZWxzLCBhcyBwZXIgLS1leHBvcnQtbGFiZWxzLgogCiBnaXQtcDQubGFiZWxFeHBvcnRSZWdleHA6OgogCU9ubHkgcDQgbGFiZWxzIG1hdGNoaW5nIHRoaXMgcmVndWxhciBleHByZXNzaW9uIHdpbGwgYmUgZXhwb3J0ZWQuIFRoZQogCWRlZmF1bHQgdmFsdWUgaXMgJ1thLXpBLVowLTlfXC0uXSskJy4KIAorZ2l0LXA0LmNvbmZsaWN0OjoKKwlTcGVjaWZ5IHN1Ym1pdCBiZWhhdmlvciB3aGVuIGEgY29uZmxpY3Qgd2l0aCBwNCBpcyBmb3VuZCwgYXMgcGVyCisJLS1jb25mbGljdC4gIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzICdhc2snLgorCiBJTVBMRU1FTlRBVElPTiBERVRBSUxTCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0qIENoYW5nZXNldHMgZnJvbSBwNCBhcmUgaW1wb3J0ZWQgdXNpbmcgZ2l0IGZhc3QtaW1wb3J0LgorKiBDaGFuZ2VzZXRzIGZyb20gcDQgYXJlIGltcG9ydGVkIHVzaW5nIEdpdCBmYXN0LWltcG9ydC4KICogQ2xvbmluZyBvciBzeW5jaW5nIGRvZXMgbm90IHJlcXVpcmUgYSBwNCBjbGllbnQ7IGZpbGUgY29udGVudHMgYXJlCiAgIGNvbGxlY3RlZCB1c2luZyAncDQgcHJpbnQnLgogKiBTdWJtaXR0aW5nIHJlcXVpcmVzIGEgcDQgY2xpZW50LCB3aGljaCBpcyBub3QgaW4gdGhlIHNhbWUgbG9jYXRpb24KLSAgYXMgdGhlIGdpdCByZXBvc2l0b3J5LiAgUGF0Y2hlcyBhcmUgYXBwbGllZCwgb25lIGF0IGEgdGltZSwgdG8KKyAgYXMgdGhlIEdpdCByZXBvc2l0b3J5LiAgUGF0Y2hlcyBhcmUgYXBwbGllZCwgb25lIGF0IGEgdGltZSwgdG8KICAgdGhpcyBwNCBjbGllbnQgYW5kIHN1Ym1pdHRlZCBmcm9tIHRoZXJlLgogKiBFYWNoIGNvbW1pdCBpbXBvcnRlZCBieSAnZ2l0IHA0JyBoYXMgYSBsaW5lIGF0IHRoZSBlbmQgb2YgdGhlIGxvZwogICBtZXNzYWdlIGluZGljYXRpbmcgdGhlIHA0IGRlcG90IGxvY2F0aW9uIGFuZCBjaGFuZ2UgbnVtYmVyLiAgVGhpcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcGFjay1vYmplY3RzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXBhY2stb2JqZWN0cy50eHQKaW5kZXggMjBjODU1MS4uZDk0ZWRjZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcGFjay1vYmplY3RzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1wYWNrLW9iamVjdHMudHh0CkBAIC0zNSw3ICszNSw3IEBACiBvYmplY3RzIGluIHRoZSBwYWNrLiBQbGFjaW5nIGJvdGggdGhlIGluZGV4IGZpbGUgKC5pZHgpIGFuZCB0aGUgcGFja2VkCiBhcmNoaXZlICgucGFjaykgaW4gdGhlIHBhY2svIHN1YmRpcmVjdG9yeSBvZiAkR0lUX09CSkVDVF9ESVJFQ1RPUlkgKG9yCiBhbnkgb2YgdGhlIGRpcmVjdG9yaWVzIG9uICRHSVRfQUxURVJOQVRFX09CSkVDVF9ESVJFQ1RPUklFUykKLWVuYWJsZXMgZ2l0IHRvIHJlYWQgZnJvbSB0aGUgcGFjayBhcmNoaXZlLgorZW5hYmxlcyBHaXQgdG8gcmVhZCBmcm9tIHRoZSBwYWNrIGFyY2hpdmUuCiAKIFRoZSAnZ2l0IHVucGFjay1vYmplY3RzJyBjb21tYW5kIGNhbiByZWFkIHRoZSBwYWNrZWQgYXJjaGl2ZSBhbmQKIGV4cGFuZCB0aGUgb2JqZWN0cyBjb250YWluZWQgaW4gdGhlIHBhY2sgaW50byAib25lLWZpbGUKQEAgLTUwLDcgKzUwLDcgQEAKIAlXcml0ZSBpbnRvIGEgcGFpciBvZiBmaWxlcyAoLnBhY2sgYW5kIC5pZHgpLCB1c2luZwogCTxiYXNlLW5hbWU+IHRvIGRldGVybWluZSB0aGUgbmFtZSBvZiB0aGUgY3JlYXRlZCBmaWxlLgogCVdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZCwgdGhlIHR3byBmaWxlcyBhcmUgd3JpdHRlbiBpbgotCTxiYXNlLW5hbWU+LTxTSEExPi57cGFjayxpZHh9IGZpbGVzLiAgPFNIQTE+IGlzIGEgaGFzaAorCTxiYXNlLW5hbWU+LTxTSEEtMT4ue3BhY2ssaWR4fSBmaWxlcy4gIDxTSEEtMT4gaXMgYSBoYXNoCiAJb2YgdGhlIHNvcnRlZCBvYmplY3QgbmFtZXMgdG8gbWFrZSB0aGUgcmVzdWx0aW5nIGZpbGVuYW1lCiAJYmFzZWQgb24gdGhlIHBhY2sgY29udGVudCwgYW5kIHdyaXR0ZW4gdG8gdGhlIHN0YW5kYXJkCiAJb3V0cHV0IG9mIHRoZSBjb21tYW5kLgpAQCAtODAsNyArODAsNyBAQAogLS1pbmNsdWRlLXRhZzo6CiAJSW5jbHVkZSB1bmFza2VkLWZvciBhbm5vdGF0ZWQgdGFncyBpZiB0aGUgb2JqZWN0IHRoZXkKIAlyZWZlcmVuY2Ugd2FzIGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgcGFja2ZpbGUuICBUaGlzCi0JY2FuIGJlIHVzZWZ1bCB0byBzZW5kIG5ldyB0YWdzIHRvIG5hdGl2ZSBnaXQgY2xpZW50cy4KKwljYW4gYmUgdXNlZnVsIHRvIHNlbmQgbmV3IHRhZ3MgdG8gbmF0aXZlIEdpdCBjbGllbnRzLgogCiAtLXdpbmRvdz08bj46OgogLS1kZXB0aD08bj46OgpAQCAtMTg1LDE0ICsxODUsMTQgQEAKIAlvcHRpb24gb25seSBtYWtlcyBzZW5zZSBpbiBjb25qdW5jdGlvbiB3aXRoIC0tc3Rkb3V0LgogKwogTm90ZTogQSB0aGluIHBhY2sgdmlvbGF0ZXMgdGhlIHBhY2tlZCBhcmNoaXZlIGZvcm1hdCBieSBvbWl0dGluZwotcmVxdWlyZWQgb2JqZWN0cyBhbmQgaXMgdGh1cyB1bnVzYWJsZSBieSBnaXQgd2l0aG91dCBtYWtpbmcgaXQKK3JlcXVpcmVkIG9iamVjdHMgYW5kIGlzIHRodXMgdW51c2FibGUgYnkgR2l0IHdpdGhvdXQgbWFraW5nIGl0CiBzZWxmLWNvbnRhaW5lZC4gVXNlIGBnaXQgaW5kZXgtcGFjayAtLWZpeC10aGluYAogKHNlZSBsaW5rZ2l0OmdpdC1pbmRleC1wYWNrWzFdKSB0byByZXN0b3JlIHRoZSBzZWxmLWNvbnRhaW5lZCBwcm9wZXJ0eS4KIAogLS1kZWx0YS1iYXNlLW9mZnNldDo6CiAJQSBwYWNrZWQgYXJjaGl2ZSBjYW4gZXhwcmVzcyB0aGUgYmFzZSBvYmplY3Qgb2YgYSBkZWx0YSBhcwogCWVpdGhlciBhIDIwLWJ5dGUgb2JqZWN0IG5hbWUgb3IgYXMgYW4gb2Zmc2V0IGluIHRoZQotCXN0cmVhbSwgYnV0IGFuY2llbnQgdmVyc2lvbnMgb2YgZ2l0IGRvbid0IHVuZGVyc3RhbmQgdGhlCisJc3RyZWFtLCBidXQgYW5jaWVudCB2ZXJzaW9ucyBvZiBHaXQgZG9uJ3QgdW5kZXJzdGFuZCB0aGUKIAlsYXR0ZXIuICBCeSBkZWZhdWx0LCAnZ2l0IHBhY2stb2JqZWN0cycgb25seSB1c2VzIHRoZQogCWZvcm1lciBmb3JtYXQgZm9yIGJldHRlciBjb21wYXRpYmlsaXR5LiAgVGhpcyBvcHRpb24KIAlhbGxvd3MgdGhlIGNvbW1hbmQgdG8gdXNlIHRoZSBsYXR0ZXIgZm9ybWF0IGZvcgpAQCAtMjAyLDcgKzIwMiw3IEBACiArCiBOb3RlOiBQb3JjZWxhaW4gY29tbWFuZHMgc3VjaCBhcyBgZ2l0IGdjYCAoc2VlIGxpbmtnaXQ6Z2l0LWdjWzFdKSwKIGBnaXQgcmVwYWNrYCAoc2VlIGxpbmtnaXQ6Z2l0LXJlcGFja1sxXSkgcGFzcyB0aGlzIG9wdGlvbiBieSBkZWZhdWx0Ci1pbiBtb2Rlcm4gZ2l0IHdoZW4gdGhleSBwdXQgb2JqZWN0cyBpbiB5b3VyIHJlcG9zaXRvcnkgaW50byBwYWNrIGZpbGVzLgoraW4gbW9kZXJuIEdpdCB3aGVuIHRoZXkgcHV0IG9iamVjdHMgaW4geW91ciByZXBvc2l0b3J5IGludG8gcGFjayBmaWxlcy4KIFNvIGRvZXMgYGdpdCBidW5kbGVgIChzZWUgbGlua2dpdDpnaXQtYnVuZGxlWzFdKSB3aGVuIGl0IGNyZWF0ZXMgYSBidW5kbGUuCiAKIC0tdGhyZWFkcz08bj46OgpAQCAtMjEyLDcgKzIxMiw3IEBACiAJVGhpcyBpcyBtZWFudCB0byByZWR1Y2UgcGFja2luZyB0aW1lIG9uIG11bHRpcHJvY2Vzc29yIG1hY2hpbmVzLgogCVRoZSByZXF1aXJlZCBhbW91bnQgb2YgbWVtb3J5IGZvciB0aGUgZGVsdGEgc2VhcmNoIHdpbmRvdyBpcwogCWhvd2V2ZXIgbXVsdGlwbGllZCBieSB0aGUgbnVtYmVyIG9mIHRocmVhZHMuCi0JU3BlY2lmeWluZyAwIHdpbGwgY2F1c2UgZ2l0IHRvIGF1dG8tZGV0ZWN0IHRoZSBudW1iZXIgb2YgQ1BVJ3MKKwlTcGVjaWZ5aW5nIDAgd2lsbCBjYXVzZSBHaXQgdG8gYXV0by1kZXRlY3QgdGhlIG51bWJlciBvZiBDUFUncwogCWFuZCBzZXQgdGhlIG51bWJlciBvZiB0aHJlYWRzIGFjY29yZGluZ2x5LgogCiAtLWluZGV4LXZlcnNpb249PHZlcnNpb24+Wyw8b2Zmc2V0Pl06OgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcGFjay1yZWZzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXBhY2stcmVmcy50eHQKaW5kZXggMTBhZmQ0ZS4uZjEzMTY3NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcGFjay1yZWZzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1wYWNrLXJlZnMudHh0CkBAIC0xNCw3ICsxNCw4IEBACiAtLS0tLS0tLS0tLQogCiBUcmFkaXRpb25hbGx5LCB0aXBzIG9mIGJyYW5jaGVzIGFuZCB0YWdzIChjb2xsZWN0aXZlbHkga25vd24gYXMKLSdyZWZzJykgd2VyZSBzdG9yZWQgb25lIGZpbGUgcGVyIHJlZiB1bmRlciBgJEdJVF9ESVIvcmVmc2AKKydyZWZzJykgd2VyZSBzdG9yZWQgb25lIGZpbGUgcGVyIHJlZiBpbiBhIChzdWIpZGlyZWN0b3J5Cit1bmRlciBgJEdJVF9ESVIvcmVmc2AKIGRpcmVjdG9yeS4gIFdoaWxlIG1hbnkgYnJhbmNoIHRpcHMgdGVuZCB0byBiZSB1cGRhdGVkIG9mdGVuLAogbW9zdCB0YWdzIGFuZCBzb21lIGJyYW5jaCB0aXBzIGFyZSBuZXZlciB1cGRhdGVkLiAgV2hlbiBhCiByZXBvc2l0b3J5IGhhcyBodW5kcmVkcyBvciB0aG91c2FuZHMgb2YgdGFncywgdGhpcwpAQCAtMjIsMTMgKzIzLDE0IEBACiBwZXJmb3JtYW5jZS4KIAogVGhpcyBjb21tYW5kIGlzIHVzZWQgdG8gc29sdmUgdGhlIHN0b3JhZ2UgYW5kIHBlcmZvcm1hbmNlCi1wcm9ibGVtIGJ5IHN0YXNoaW5nIHRoZSByZWZzIGluIGEgc2luZ2xlIGZpbGUsCitwcm9ibGVtIGJ5IHN0b3JpbmcgdGhlIHJlZnMgaW4gYSBzaW5nbGUgZmlsZSwKIGAkR0lUX0RJUi9wYWNrZWQtcmVmc2AuICBXaGVuIGEgcmVmIGlzIG1pc3NpbmcgZnJvbSB0aGUKLXRyYWRpdGlvbmFsIGAkR0lUX0RJUi9yZWZzYCBoaWVyYXJjaHksIGl0IGlzIGxvb2tlZCB1cCBpbiB0aGlzCit0cmFkaXRpb25hbCBgJEdJVF9ESVIvcmVmc2AgZGlyZWN0b3J5IGhpZXJhcmNoeSwgaXQgaXMgbG9va2VkCit1cCBpbiB0aGlzCiBmaWxlIGFuZCB1c2VkIGlmIGZvdW5kLgogCiBTdWJzZXF1ZW50IHVwZGF0ZXMgdG8gYnJhbmNoZXMgYWx3YXlzIGNyZWF0ZSBuZXcgZmlsZXMgdW5kZXIKLWAkR0lUX0RJUi9yZWZzYCBoaWVyYXJjaHkuCitgJEdJVF9ESVIvcmVmc2AgZGlyZWN0b3J5IGhpZXJhcmNoeS4KIAogQSByZWNvbW1lbmRlZCBwcmFjdGljZSB0byBkZWFsIHdpdGggYSByZXBvc2l0b3J5IHdpdGggdG9vIG1hbnkKIHJlZnMgaXMgdG8gcGFjayBpdHMgcmVmcyB3aXRoIGAtLWFsbCAtLXBydW5lYCBvbmNlLCBhbmQKQEAgLTU3LDYgKzU5LDE1IEBACiBUaGUgY29tbWFuZCB1c3VhbGx5IHJlbW92ZXMgbG9vc2UgcmVmcyB1bmRlciBgJEdJVF9ESVIvcmVmc2AKIGhpZXJhcmNoeSBhZnRlciBwYWNraW5nIHRoZW0uICBUaGlzIG9wdGlvbiB0ZWxscyBpdCBub3QgdG8uCiAKKworQlVHUworLS0tLQorCitPbGRlciBkb2N1bWVudGF0aW9uIHdyaXR0ZW4gYmVmb3JlIHRoZSBwYWNrZWQtcmVmcyBtZWNoYW5pc20gd2FzCitpbnRyb2R1Y2VkIG1heSBzdGlsbCBzYXkgdGhpbmdzIGxpa2UgIi5naXQvcmVmcy9oZWFkcy88YnJhbmNoPiBmaWxlCitleGlzdHMiIHdoZW4gaXQgbWVhbnMgImJyYW5jaCA8YnJhbmNoPiBleGlzdHMiLgorCisKIEdJVAogLS0tCiBQYXJ0IG9mIHRoZSBsaW5rZ2l0OmdpdFsxXSBzdWl0ZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcGF0Y2gtaWQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcGF0Y2gtaWQudHh0CmluZGV4IDkwMjY4ZjAuLjMxMmMzYjEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXBhdGNoLWlkLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1wYXRjaC1pZC50eHQKQEAgLTEyLDcgKzEyLDcgQEAKIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCi1BICJwYXRjaCBJRCIgaXMgbm90aGluZyBidXQgYSBTSEExIG9mIHRoZSBkaWZmIGFzc29jaWF0ZWQgd2l0aCBhIHBhdGNoLCB3aXRoCitBICJwYXRjaCBJRCIgaXMgbm90aGluZyBidXQgYSBTSEEtMSBvZiB0aGUgZGlmZiBhc3NvY2lhdGVkIHdpdGggYSBwYXRjaCwgd2l0aAogd2hpdGVzcGFjZSBhbmQgbGluZSBudW1iZXJzIGlnbm9yZWQuICBBcyBzdWNoLCBpdCdzICJyZWFzb25hYmx5IHN0YWJsZSIsIGJ1dCBhdAogdGhlIHNhbWUgdGltZSBhbHNvIHJlYXNvbmFibHkgdW5pcXVlLCBpLmUuLCB0d28gcGF0Y2hlcyB0aGF0IGhhdmUgdGhlIHNhbWUgInBhdGNoCiBJRCIgYXJlIGFsbW9zdCBndWFyYW50ZWVkIHRvIGJlIHRoZSBzYW1lIHRoaW5nLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcHVsbC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1wdWxsLnR4dAppbmRleCBkZWZiNTQ0Li4yNGFiMDdhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1wdWxsLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1wdWxsLnR4dApAQCAtNTksOCArNTksOCBAQAogU2VlIGxpbmtnaXQ6Z2l0LW1lcmdlWzFdIGZvciBkZXRhaWxzLCBpbmNsdWRpbmcgaG93IGNvbmZsaWN0cwogYXJlIHByZXNlbnRlZCBhbmQgaGFuZGxlZC4KIAotSW4gZ2l0IDEuNy4wIG9yIGxhdGVyLCB0byBjYW5jZWwgYSBjb25mbGljdGluZyBtZXJnZSwgdXNlCi1gZ2l0IHJlc2V0IC0tbWVyZ2VgLiAgKldhcm5pbmcqOiBJbiBvbGRlciB2ZXJzaW9ucyBvZiBnaXQsIHJ1bm5pbmcgJ2dpdCBwdWxsJworSW4gR2l0IDEuNy4wIG9yIGxhdGVyLCB0byBjYW5jZWwgYSBjb25mbGljdGluZyBtZXJnZSwgdXNlCitgZ2l0IHJlc2V0IC0tbWVyZ2VgLiAgKldhcm5pbmcqOiBJbiBvbGRlciB2ZXJzaW9ucyBvZiBHaXQsIHJ1bm5pbmcgJ2dpdCBwdWxsJwogd2l0aCB1bmNvbW1pdHRlZCBjaGFuZ2VzIGlzIGRpc2NvdXJhZ2VkOiB3aGlsZSBwb3NzaWJsZSwgaXQgbGVhdmVzIHlvdQogaW4gYSBzdGF0ZSB0aGF0IG1heSBiZSBoYXJkIHRvIGJhY2sgb3V0IG9mIGluIHRoZSBjYXNlIG9mIGEgY29uZmxpY3QuCiAKQEAgLTg5LDcgKzg5LDcgQEAKIAlUaGlzIG9wdGlvbiBjb250cm9scyBpZiBuZXcgY29tbWl0cyBvZiBhbGwgcG9wdWxhdGVkIHN1Ym1vZHVsZXMgc2hvdWxkCiAJYmUgZmV0Y2hlZCB0b28gKHNlZSBsaW5rZ2l0OmdpdC1jb25maWdbMV0gYW5kIGxpbmtnaXQ6Z2l0bW9kdWxlc1s1XSkuCiAJVGhhdCBtaWdodCBiZSBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBkYXRhIG5lZWRlZCBmb3IgbWVyZ2luZyBzdWJtb2R1bGUKLQljb21taXRzLCBhIGZlYXR1cmUgZ2l0IGxlYXJuZWQgaW4gMS43LjMuIE5vdGljZSB0aGF0IHRoZSByZXN1bHQgb2YgYQorCWNvbW1pdHMsIGEgZmVhdHVyZSBHaXQgbGVhcm5lZCBpbiAxLjcuMy4gTm90aWNlIHRoYXQgdGhlIHJlc3VsdCBvZiBhCiAJbWVyZ2Ugd2lsbCBub3QgYmUgY2hlY2tlZCBvdXQgaW4gdGhlIHN1Ym1vZHVsZSwgImdpdCBzdWJtb2R1bGUgdXBkYXRlIgogCWhhcyB0byBiZSBjYWxsZWQgYWZ0ZXJ3YXJkcyB0byBicmluZyB0aGUgd29yayB0cmVlIHVwIHRvIGRhdGUgd2l0aCB0aGUKIAltZXJnZSByZXN1bHQuCkBAIC0xMDEsNiArMTAxLDcgQEAKIAogOmdpdC1wdWxsOiAxCiAKKy1yOjoKIC0tcmViYXNlOjoKIAlSZWJhc2UgdGhlIGN1cnJlbnQgYnJhbmNoIG9uIHRvcCBvZiB0aGUgdXBzdHJlYW0gYnJhbmNoIGFmdGVyCiAJZmV0Y2hpbmcuICBJZiB0aGVyZSBpcyBhIHJlbW90ZS10cmFja2luZyBicmFuY2ggY29ycmVzcG9uZGluZyB0bwpAQCAtMjE3LDcgKzIxOCw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCi1JZiB5b3UgdHJpZWQgYSBwdWxsIHdoaWNoIHJlc3VsdGVkIGluIGEgY29tcGxleCBjb25mbGljdHMgYW5kCitJZiB5b3UgdHJpZWQgYSBwdWxsIHdoaWNoIHJlc3VsdGVkIGluIGNvbXBsZXggY29uZmxpY3RzIGFuZAogd291bGQgd2FudCB0byBzdGFydCBvdmVyLCB5b3UgY2FuIHJlY292ZXIgd2l0aCAnZ2l0IHJlc2V0Jy4KIAogCkBAIC0yMjcsNyArMjI4LDcgQEAKIG91dCBzdWJtb2R1bGVzIHJpZ2h0IG5vdy4gV2hlbiBlLmcuIHVwc3RyZWFtIGFkZGVkIGEgbmV3IHN1Ym1vZHVsZSBpbiB0aGUKIGp1c3QgZmV0Y2hlZCBjb21taXRzIG9mIHRoZSBzdXBlcnByb2plY3QgdGhlIHN1Ym1vZHVsZSBpdHNlbGYgY2FuIG5vdCBiZQogZmV0Y2hlZCwgbWFraW5nIGl0IGltcG9zc2libGUgdG8gY2hlY2sgb3V0IHRoYXQgc3VibW9kdWxlIGxhdGVyIHdpdGhvdXQKLWhhdmluZyB0byBkbyBhIGZldGNoIGFnYWluLiBUaGlzIGlzIGV4cGVjdGVkIHRvIGJlIGZpeGVkIGluIGEgZnV0dXJlIGdpdAoraGF2aW5nIHRvIGRvIGEgZmV0Y2ggYWdhaW4uIFRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgZml4ZWQgaW4gYSBmdXR1cmUgR2l0CiB2ZXJzaW9uLgogCiBTRUUgQUxTTwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcHVzaC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1wdXNoLnR4dAppbmRleCBjYjk3Y2MxLi5kZjViZTI2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1wdXNoLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1wdXNoLnR4dApAQCAtOSw5ICs5LDkgQEAKIFNZTk9QU0lTCiAtLS0tLS0tLQogW3ZlcnNlXQotJ2dpdCBwdXNoJyBbLS1hbGwgfCAtLW1pcnJvciB8IC0tdGFnc10gWy1uIHwgLS1kcnktcnVuXSBbLS1yZWNlaXZlLXBhY2s9PGdpdC1yZWNlaXZlLXBhY2s+XQorJ2dpdCBwdXNoJyBbLS1hbGwgfCAtLW1pcnJvciB8IC0tdGFnc10gWy0tZm9sbG93LXRhZ3NdIFstbiB8IC0tZHJ5LXJ1bl0gWy0tcmVjZWl2ZS1wYWNrPTxnaXQtcmVjZWl2ZS1wYWNrPl0KIAkgICBbLS1yZXBvPTxyZXBvc2l0b3J5Pl0gWy1mIHwgLS1mb3JjZV0gWy0tcHJ1bmVdIFstdiB8IC0tdmVyYm9zZV0gWy11IHwgLS1zZXQtdXBzdHJlYW1dCi0JICAgWzxyZXBvc2l0b3J5PiBbPHJlZnNwZWM+Li4uXV0KKwkgICBbLS1uby12ZXJpZnldIFs8cmVwb3NpdG9yeT4gWzxyZWZzcGVjPi4uLl1dCiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQpAQCAtMjMsNiArMjMsMTcgQEAKIGV2ZXJ5IHRpbWUgeW91IHB1c2ggaW50byBpdCwgYnkgc2V0dGluZyB1cCAnaG9va3MnIHRoZXJlLiAgU2VlCiBkb2N1bWVudGF0aW9uIGZvciBsaW5rZ2l0OmdpdC1yZWNlaXZlLXBhY2tbMV0uCiAKK1doZW4gdGhlIGNvbW1hbmQgbGluZSBkb2VzIG5vdCBzcGVjaWZ5IHdoZXJlIHRvIHB1c2ggd2l0aCB0aGUKK2A8cmVwb3NpdG9yeT5gIGFyZ3VtZW50LCBgYnJhbmNoLioucmVtb3RlYCBjb25maWd1cmF0aW9uIGZvciB0aGUKK2N1cnJlbnQgYnJhbmNoIGlzIGNvbnN1bHRlZCB0byBkZXRlcm1pbmUgd2hlcmUgdG8gcHVzaC4gIElmIHRoZQorY29uZmlndXJhdGlvbiBpcyBtaXNzaW5nLCBpdCBkZWZhdWx0cyB0byAnb3JpZ2luJy4KKworV2hlbiB0aGUgY29tbWFuZCBsaW5lIGRvZXMgbm90IHNwZWNpZnkgd2hhdCB0byBwdXNoIHdpdGggYDxyZWZzcGVjPi4uLmAKK2FyZ3VtZW50cyBvciBgLS1hbGxgLCBgLS1taXJyb3JgLCBgLS10YWdzYCBvcHRpb25zLCB0aGUgY29tbWFuZCBmaW5kcwordGhlIGRlZmF1bHQgYDxyZWZzcGVjPmAgYnkgY29uc3VsdGluZyBgcmVtb3RlLioucHVzaGAgY29uZmlndXJhdGlvbiwKK2FuZCBpZiBpdCBpcyBub3QgZm91bmQsIGhvbm9ycyBgcHVzaC5kZWZhdWx0YCBjb25maWd1cmF0aW9uIHRvIGRlY2lkZQord2hhdCB0byBwdXNoIChTZWUgZ2l0bGluazpnaXQtY29uZmlnWzFdIGZvciB0aGUgbWVhbmluZyBvZiBgcHVzaC5kZWZhdWx0YCkuCisKIAogT1BUSU9OU1tbT1BUSU9OU11dCiAtLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMzLDExICs0NCwxMCBAQAogCW9mIGEgcmVtb3RlIChzZWUgdGhlIHNlY3Rpb24gPDxSRU1PVEVTLFJFTU9URVM+PiBiZWxvdykuCiAKIDxyZWZzcGVjPi4uLjo6CisJU3BlY2lmeSB3aGF0IGRlc3RpbmF0aW9uIHJlZiB0byB1cGRhdGUgd2l0aCB3aGF0IHNvdXJjZSBvYmplY3QuCiAJVGhlIGZvcm1hdCBvZiBhIDxyZWZzcGVjPiBwYXJhbWV0ZXIgaXMgYW4gb3B0aW9uYWwgcGx1cwotCWArYCwgZm9sbG93ZWQgYnkgdGhlIHNvdXJjZSByZWYgPHNyYz4sIGZvbGxvd2VkCisJYCtgLCBmb2xsb3dlZCBieSB0aGUgc291cmNlIG9iamVjdCA8c3JjPiwgZm9sbG93ZWQKIAlieSBhIGNvbG9uIGA6YCwgZm9sbG93ZWQgYnkgdGhlIGRlc3RpbmF0aW9uIHJlZiA8ZHN0Pi4KLQlJdCBpcyB1c2VkIHRvIHNwZWNpZnkgd2l0aCB3aGF0IDxzcmM+IG9iamVjdCB0aGUgPGRzdD4gcmVmCi0JaW4gdGhlIHJlbW90ZSByZXBvc2l0b3J5IGlzIHRvIGJlIHVwZGF0ZWQuCiArCiBUaGUgPHNyYz4gaXMgb2Z0ZW4gdGhlIG5hbWUgb2YgdGhlIGJyYW5jaCB5b3Ugd291bGQgd2FudCB0byBwdXNoLCBidXQKIGl0IGNhbiBiZSBhbnkgYXJiaXRyYXJ5ICJTSEEtMSBleHByZXNzaW9uIiwgc3VjaCBhcyBgbWFzdGVyfjRgIG9yCkBAIC00OSwxMCArNTksMTEgQEAKIHVwZGF0ZWQuCiArCiBUaGUgb2JqZWN0IHJlZmVyZW5jZWQgYnkgPHNyYz4gaXMgdXNlZCB0byB1cGRhdGUgdGhlIDxkc3Q+IHJlZmVyZW5jZQotb24gdGhlIHJlbW90ZSBzaWRlLCBidXQgYnkgZGVmYXVsdCB0aGlzIGlzIG9ubHkgYWxsb3dlZCBpZiB0aGUKLXVwZGF0ZSBjYW4gZmFzdC1mb3J3YXJkIDxkc3Q+LiAgQnkgaGF2aW5nIHRoZSBvcHRpb25hbCBsZWFkaW5nIGArYCwKLXlvdSBjYW4gdGVsbCBnaXQgdG8gdXBkYXRlIHRoZSA8ZHN0PiByZWYgZXZlbiB3aGVuIHRoZSB1cGRhdGUgaXMgbm90IGEKLWZhc3QtZm9yd2FyZC4gIFRoaXMgZG9lcyAqbm90KiBhdHRlbXB0IHRvIG1lcmdlIDxzcmM+IGludG8gPGRzdD4uICBTZWUKK29uIHRoZSByZW1vdGUgc2lkZS4gIEJ5IGRlZmF1bHQgdGhpcyBpcyBvbmx5IGFsbG93ZWQgaWYgPGRzdD4gaXMgbm90CithIHRhZyAoYW5ub3RhdGVkIG9yIGxpZ2h0d2VpZ2h0KSwgYW5kIHRoZW4gb25seSBpZiBpdCBjYW4gZmFzdC1mb3J3YXJkCis8ZHN0Pi4gIEJ5IGhhdmluZyB0aGUgb3B0aW9uYWwgbGVhZGluZyBgK2AsIHlvdSBjYW4gdGVsbCBHaXQgdG8gdXBkYXRlCit0aGUgPGRzdD4gcmVmIGV2ZW4gaWYgaXQgaXMgbm90IGFsbG93ZWQgYnkgZGVmYXVsdCAoZS5nLiwgaXQgaXMgbm90IGEKK2Zhc3QtZm9yd2FyZC4pICBUaGlzIGRvZXMgKm5vdCogYXR0ZW1wdCB0byBtZXJnZSA8c3JjPiBpbnRvIDxkc3Q+LiAgU2VlCiBFWEFNUExFUyBiZWxvdyBmb3IgZGV0YWlscy4KICsKIGB0YWcgPHRhZz5gIG1lYW5zIHRoZSBzYW1lIGFzIGByZWZzL3RhZ3MvPHRhZz46cmVmcy90YWdzLzx0YWc+YC4KQEAgLTYxLDExICs3Miw5IEBACiB0aGUgcmVtb3RlIHJlcG9zaXRvcnkuCiArCiBUaGUgc3BlY2lhbCByZWZzcGVjIGA6YCAob3IgYCs6YCB0byBhbGxvdyBub24tZmFzdC1mb3J3YXJkIHVwZGF0ZXMpCi1kaXJlY3RzIGdpdCB0byBwdXNoICJtYXRjaGluZyIgYnJhbmNoZXM6IGZvciBldmVyeSBicmFuY2ggdGhhdCBleGlzdHMgb24KK2RpcmVjdHMgR2l0IHRvIHB1c2ggIm1hdGNoaW5nIiBicmFuY2hlczogZm9yIGV2ZXJ5IGJyYW5jaCB0aGF0IGV4aXN0cyBvbgogdGhlIGxvY2FsIHNpZGUsIHRoZSByZW1vdGUgc2lkZSBpcyB1cGRhdGVkIGlmIGEgYnJhbmNoIG9mIHRoZSBzYW1lIG5hbWUKLWFscmVhZHkgZXhpc3RzIG9uIHRoZSByZW1vdGUgc2lkZS4gIFRoaXMgaXMgdGhlIGRlZmF1bHQgb3BlcmF0aW9uIG1vZGUKLWlmIG5vIGV4cGxpY2l0IHJlZnNwZWMgaXMgZm91bmQgKHRoYXQgaXMgbmVpdGhlciBvbiB0aGUgY29tbWFuZCBsaW5lCi1ub3IgaW4gYW55IFB1c2ggbGluZSBvZiB0aGUgY29ycmVzcG9uZGluZyByZW1vdGVzIGZpbGUtLS1zZWUgYmVsb3cpLgorYWxyZWFkeSBleGlzdHMgb24gdGhlIHJlbW90ZSBzaWRlLgogCiAtLWFsbDo6CiAJSW5zdGVhZCBvZiBuYW1pbmcgZWFjaCByZWYgdG8gcHVzaCwgc3BlY2lmaWVzIHRoYXQgYWxsCkBAIC0xMDgsNiArMTE3LDEyIEBACiAJYWRkaXRpb24gdG8gcmVmc3BlY3MgZXhwbGljaXRseSBsaXN0ZWQgb24gdGhlIGNvbW1hbmQKIAlsaW5lLgogCistLWZvbGxvdy10YWdzOjoKKwlQdXNoIGFsbCB0aGUgcmVmcyB0aGF0IHdvdWxkIGJlIHB1c2hlZCB3aXRob3V0IHRoaXMgb3B0aW9uLAorCWFuZCBhbHNvIHB1c2ggYW5ub3RhdGVkIHRhZ3MgaW4gYHJlZnMvdGFnc2AgdGhhdCBhcmUgbWlzc2luZworCWZyb20gdGhlIHJlbW90ZSBidXQgYXJlIHBvaW50aW5nIGF0IGNvbW1pdHRpc2ggdGhhdCBhcmUKKwlyZWFjaGFibGUgZnJvbSB0aGUgcmVmcyBiZWluZyBwdXNoZWQuCisKIC0tcmVjZWl2ZS1wYWNrPTxnaXQtcmVjZWl2ZS1wYWNrPjo6CiAtLWV4ZWM9PGdpdC1yZWNlaXZlLXBhY2s+OjoKIAlQYXRoIHRvIHRoZSAnZ2l0LXJlY2VpdmUtcGFjaycgcHJvZ3JhbSBvbiB0aGUgcmVtb3RlCkBAIC0xNDcsOCArMTYyLDcgQEAKIAlsaW5rZ2l0OmdpdC1wdWxsWzFdIGFuZCBvdGhlciBjb21tYW5kcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sCiAJc2VlICdicmFuY2guPG5hbWU+Lm1lcmdlJyBpbiBsaW5rZ2l0OmdpdC1jb25maWdbMV0uCiAKLS0tdGhpbjo6Ci0tLW5vLXRoaW46OgorLS1bbm8tXXRoaW46OgogCVRoZXNlIG9wdGlvbnMgYXJlIHBhc3NlZCB0byBsaW5rZ2l0OmdpdC1zZW5kLXBhY2tbMV0uIEEgdGhpbiB0cmFuc2ZlcgogCXNpZ25pZmljYW50bHkgcmVkdWNlcyB0aGUgYW1vdW50IG9mIHNlbnQgZGF0YSB3aGVuIHRoZSBzZW5kZXIgYW5kCiAJcmVjZWl2ZXIgc2hhcmUgbWFueSBvZiB0aGUgc2FtZSBvYmplY3RzIGluIGNvbW1vbi4gVGhlIGRlZmF1bHQgaXMKQEAgLTE3Miw4ICsxODYsOCBAQAogCiAtLXJlY3Vyc2Utc3VibW9kdWxlcz1jaGVja3xvbi1kZW1hbmQ6OgogCU1ha2Ugc3VyZSBhbGwgc3VibW9kdWxlIGNvbW1pdHMgdXNlZCBieSB0aGUgcmV2aXNpb25zIHRvIGJlCi0JcHVzaGVkIGFyZSBhdmFpbGFibGUgb24gYSByZW1vdGUgdHJhY2tpbmcgYnJhbmNoLiBJZiAnY2hlY2snIGlzCi0JdXNlZCBnaXQgd2lsbCB2ZXJpZnkgdGhhdCBhbGwgc3VibW9kdWxlIGNvbW1pdHMgdGhhdCBjaGFuZ2VkIGluCisJcHVzaGVkIGFyZSBhdmFpbGFibGUgb24gYSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoLiBJZiAnY2hlY2snIGlzCisJdXNlZCBHaXQgd2lsbCB2ZXJpZnkgdGhhdCBhbGwgc3VibW9kdWxlIGNvbW1pdHMgdGhhdCBjaGFuZ2VkIGluCiAJdGhlIHJldmlzaW9ucyB0byBiZSBwdXNoZWQgYXJlIGF2YWlsYWJsZSBvbiBhdCBsZWFzdCBvbmUgcmVtb3RlCiAJb2YgdGhlIHN1Ym1vZHVsZS4gSWYgYW55IGNvbW1pdHMgYXJlIG1pc3NpbmcgdGhlIHB1c2ggd2lsbCBiZQogCWFib3J0ZWQgYW5kIGV4aXQgd2l0aCBub24temVybyBzdGF0dXMuIElmICdvbi1kZW1hbmQnIGlzIHVzZWQKQEAgLTE4MSw2ICsxOTUsMTEgQEAKIAliZSBwdXNoZWQuIElmIG9uLWRlbWFuZCB3YXMgbm90IGFibGUgdG8gcHVzaCBhbGwgbmVjZXNzYXJ5CiAJcmV2aXNpb25zIGl0IHdpbGwgYWxzbyBiZSBhYm9ydGVkIGFuZCBleGl0IHdpdGggbm9uLXplcm8gc3RhdHVzLgogCistLVtuby1ddmVyaWZ5OjoKKwlUb2dnbGUgdGhlIHByZS1wdXNoIGhvb2sgKHNlZSBsaW5rZ2l0OmdpdGhvb2tzWzVdKS4gIFRoZQorCWRlZmF1bHQgaXMgXC0tdmVyaWZ5LCBnaXZpbmcgdGhlIGhvb2sgYSBjaGFuY2UgdG8gcHJldmVudCB0aGUKKwlwdXNoLiAgV2l0aCBcLS1uby12ZXJpZnksIHRoZSBob29rIGlzIGJ5cGFzc2VkIGNvbXBsZXRlbHkuCisKIAogaW5jbHVkZTo6dXJscy1yZW1vdGVzLnR4dFtdCiAKQEAgLTE4OCw3ICsyMDcsNyBAQAogLS0tLS0tCiAKIFRoZSBvdXRwdXQgb2YgImdpdCBwdXNoIiBkZXBlbmRzIG9uIHRoZSB0cmFuc3BvcnQgbWV0aG9kIHVzZWQ7IHRoaXMKLXNlY3Rpb24gZGVzY3JpYmVzIHRoZSBvdXRwdXQgd2hlbiBwdXNoaW5nIG92ZXIgdGhlIGdpdCBwcm90b2NvbCAoZWl0aGVyCitzZWN0aW9uIGRlc2NyaWJlcyB0aGUgb3V0cHV0IHdoZW4gcHVzaGluZyBvdmVyIHRoZSBHaXQgcHJvdG9jb2wgKGVpdGhlcgogbG9jYWxseSBvciB2aWEgc3NoKS4KIAogVGhlIHN0YXR1cyBvZiB0aGUgcHVzaCBpcyBvdXRwdXQgaW4gdGFidWxhciBmb3JtLCB3aXRoIGVhY2ggbGluZQpAQCAtMjgzLDcgKzMwMiw4IEBACiAtLS0tLS0tLS0tLS0tLS0tCiAKIEZ1cnRoZXIgc3VwcG9zZSB0aGF0IHRoZSBvdGhlciBwZXJzb24gYWxyZWFkeSBwdXNoZWQgY2hhbmdlcyBsZWFkaW5nIHRvIEEKLWJhY2sgdG8gdGhlIG9yaWdpbmFsIHJlcG9zaXRvcnkgeW91IHR3byBvYnRhaW5lZCB0aGUgb3JpZ2luYWwgY29tbWl0IFguCitiYWNrIHRvIHRoZSBvcmlnaW5hbCByZXBvc2l0b3J5IGZyb20gd2hpY2ggeW91IHR3byBvYnRhaW5lZCB0aGUgb3JpZ2luYWwKK2NvbW1pdCBYLgogCiBUaGUgcHVzaCBkb25lIGJ5IHRoZSBvdGhlciBwZXJzb24gdXBkYXRlZCB0aGUgYnJhbmNoIHRoYXQgdXNlZCB0byBwb2ludCBhdAogY29tbWl0IFggdG8gcG9pbnQgYXQgY29tbWl0IEEuICBJdCBpcyBhIGZhc3QtZm9yd2FyZC4KQEAgLTM1Nyw3ICszNzcsOCBAQAogCWBnaXQgcHVzaCBvcmlnaW4gOmAuCiArCiBUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGlzIGNvbW1hbmQgd2hlbiBubyA8cmVmc3BlYz4gaXMgZ2l2ZW4gY2FuIGJlCi1jb25maWd1cmVkIGJ5IHNldHRpbmcgdGhlIGBwdXNoYCBvcHRpb24gb2YgdGhlIHJlbW90ZS4KK2NvbmZpZ3VyZWQgYnkgc2V0dGluZyB0aGUgYHB1c2hgIG9wdGlvbiBvZiB0aGUgcmVtb3RlLCBvciB0aGUgYHB1c2guZGVmYXVsdGAKK2NvbmZpZ3VyYXRpb24gdmFyaWFibGUuCiArCiBGb3IgZXhhbXBsZSwgdG8gZGVmYXVsdCB0byBwdXNoaW5nIG9ubHkgdGhlIGN1cnJlbnQgYnJhbmNoIHRvIGBvcmlnaW5gCiB1c2UgYGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi5wdXNoIEhFQURgLiAgQW55IHZhbGlkIDxyZWZzcGVjPiAobGlrZQpAQCAtMzgwLDExICs0MDEsMjMgQEAKIAlBIGhhbmR5IHdheSB0byBwdXNoIHRoZSBjdXJyZW50IGJyYW5jaCB0byB0aGUgc2FtZSBuYW1lIG9uIHRoZQogCXJlbW90ZS4KIAotYGdpdCBwdXNoIG9yaWdpbiBtYXN0ZXI6c2F0ZWxsaXRlL21hc3RlciBkZXY6c2F0ZWxsaXRlL2RldmA6OgorYGdpdCBwdXNoIG1vdGhlcnNoaXAgbWFzdGVyOnNhdGVsbGl0ZS9tYXN0ZXIgZGV2OnNhdGVsbGl0ZS9kZXZgOjoKIAlVc2UgdGhlIHNvdXJjZSByZWYgdGhhdCBtYXRjaGVzIGBtYXN0ZXJgIChlLmcuIGByZWZzL2hlYWRzL21hc3RlcmApCiAJdG8gdXBkYXRlIHRoZSByZWYgdGhhdCBtYXRjaGVzIGBzYXRlbGxpdGUvbWFzdGVyYCAobW9zdCBwcm9iYWJseQotCWByZWZzL3JlbW90ZXMvc2F0ZWxsaXRlL21hc3RlcmApIGluIHRoZSBgb3JpZ2luYCByZXBvc2l0b3J5LCB0aGVuCisJYHJlZnMvcmVtb3Rlcy9zYXRlbGxpdGUvbWFzdGVyYCkgaW4gdGhlIGBtb3RoZXJzaGlwYCByZXBvc2l0b3J5OwogCWRvIHRoZSBzYW1lIGZvciBgZGV2YCBhbmQgYHNhdGVsbGl0ZS9kZXZgLgorKworVGhpcyBpcyB0byBlbXVsYXRlIGBnaXQgZmV0Y2hgIHJ1biBvbiB0aGUgYG1vdGhlcnNoaXBgIHVzaW5nIGBnaXQKK3B1c2hgIHRoYXQgaXMgcnVuIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gaW4gb3JkZXIgdG8gaW50ZWdyYXRlCit0aGUgd29yayBkb25lIG9uIGBzYXRlbGxpdGVgLCBhbmQgaXMgb2Z0ZW4gbmVjZXNzYXJ5IHdoZW4geW91IGNhbgorb25seSBtYWtlIGNvbm5lY3Rpb24gaW4gb25lIHdheSAoaS5lLiBzYXRlbGxpdGUgY2FuIHNzaCBpbnRvCittb3RoZXJzaGlwIGJ1dCBtb3RoZXJzaGlwIGNhbm5vdCBpbml0aWF0ZSBjb25uZWN0aW9uIHRvIHNhdGVsbGl0ZQorYmVjYXVzZSB0aGUgbGF0dGVyIGlzIGJlaGluZCBhIGZpcmV3YWxsIG9yIGRvZXMgbm90IHJ1biBzc2hkKS4KKysKK0FmdGVyIHJ1bm5pbmcgdGhpcyBgZ2l0IHB1c2hgIG9uIHRoZSBgc2F0ZWxsaXRlYCBtYWNoaW5lLCB5b3Ugd291bGQKK3NzaCBpbnRvIHRoZSBgbW90aGVyc2hpcGAgYW5kIHJ1biBgZ2l0IG1lcmdlYCB0aGVyZSB0byBjb21wbGV0ZSB0aGUKK2VtdWxhdGlvbiBvZiBgZ2l0IHB1bGxgIHRoYXQgd2VyZSBydW4gb24gYG1vdGhlcnNoaXBgIHRvIHB1bGwgY2hhbmdlcworbWFkZSBvbiBgc2F0ZWxsaXRlYC4KIAogYGdpdCBwdXNoIG9yaWdpbiBIRUFEOm1hc3RlcmA6OgogCVB1c2ggdGhlIGN1cnJlbnQgYnJhbmNoIHRvIHRoZSByZW1vdGUgcmVmIG1hdGNoaW5nIGBtYXN0ZXJgIGluIHRoZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcXVpbHRpbXBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcXVpbHRpbXBvcnQudHh0CmluZGV4IDdmMTEyZjMuLmEzNTYxOTYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXF1aWx0aW1wb3J0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1xdWlsdGltcG9ydC50eHQKQEAgLTE0LDcgKzE0LDcgQEAKIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCi1BcHBsaWVzIGEgcXVpbHQgcGF0Y2hzZXQgb250byB0aGUgY3VycmVudCBnaXQgYnJhbmNoLCBwcmVzZXJ2aW5nCitBcHBsaWVzIGEgcXVpbHQgcGF0Y2hzZXQgb250byB0aGUgY3VycmVudCBHaXQgYnJhbmNoLCBwcmVzZXJ2aW5nCiB0aGUgcGF0Y2ggYm91bmRhcmllcywgcGF0Y2ggb3JkZXIsIGFuZCBwYXRjaCBkZXNjcmlwdGlvbnMgcHJlc2VudAogaW4gdGhlIHF1aWx0IHBhdGNoc2V0LgogCkBAIC0yNSw3ICsyNSw3IEBACiBpbnRlcmFjdGl2ZWx5IGVudGVyIHRoZSBhdXRob3Igb2YgdGhlIHBhdGNoLgogCiBJZiBhIHN1YmplY3QgaXMgbm90IGZvdW5kIGluIHRoZSBwYXRjaCBkZXNjcmlwdGlvbiB0aGUgcGF0Y2ggbmFtZSBpcwotcHJlc2VydmVkIGFzIHRoZSAxIGxpbmUgc3ViamVjdCBpbiB0aGUgZ2l0IGRlc2NyaXB0aW9uLgorcHJlc2VydmVkIGFzIHRoZSAxIGxpbmUgc3ViamVjdCBpbiB0aGUgR2l0IGRlc2NyaXB0aW9uLgogCiBPUFRJT05TCiAtLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yZWJhc2UudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmViYXNlLnR4dAppbmRleCAxNDdmYTFhLi5hY2E4NDA1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1yZWJhc2UudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJlYmFzZS50eHQKQEAgLTgsMTEgKzgsMTEgQEAKIFNZTk9QU0lTCiAtLS0tLS0tLQogW3ZlcnNlXQotJ2dpdCByZWJhc2UnIFstaSB8IC0taW50ZXJhY3RpdmVdIFtvcHRpb25zXSBbLS1vbnRvIDxuZXdiYXNlPl0KKydnaXQgcmViYXNlJyBbLWkgfCAtLWludGVyYWN0aXZlXSBbb3B0aW9uc10gWy0tZXhlYyA8Y21kPl0gWy0tb250byA8bmV3YmFzZT5dCiAJWzx1cHN0cmVhbT5dIFs8YnJhbmNoPl0KLSdnaXQgcmViYXNlJyBbLWkgfCAtLWludGVyYWN0aXZlXSBbb3B0aW9uc10gLS1vbnRvIDxuZXdiYXNlPgorJ2dpdCByZWJhc2UnIFstaSB8IC0taW50ZXJhY3RpdmVdIFtvcHRpb25zXSBbLS1leGVjIDxjbWQ+XSBbLS1vbnRvIDxuZXdiYXNlPl0KIAktLXJvb3QgWzxicmFuY2g+XQotJ2dpdCByZWJhc2UnIC0tY29udGludWUgfCAtLXNraXAgfCAtLWFib3J0CisnZ2l0IHJlYmFzZScgLS1jb250aW51ZSB8IC0tc2tpcCB8IC0tYWJvcnQgfCAtLWVkaXQtdG9kbwogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KQEAgLTE3OSw3ICsxNzksNyBAQAogSW4gY2FzZSBvZiBjb25mbGljdCwgJ2dpdCByZWJhc2UnIHdpbGwgc3RvcCBhdCB0aGUgZmlyc3QgcHJvYmxlbWF0aWMgY29tbWl0CiBhbmQgbGVhdmUgY29uZmxpY3QgbWFya2VycyBpbiB0aGUgdHJlZS4gIFlvdSBjYW4gdXNlICdnaXQgZGlmZicgdG8gbG9jYXRlCiB0aGUgbWFya2VycyAoPDw8PDw8KSBhbmQgbWFrZSBlZGl0cyB0byByZXNvbHZlIHRoZSBjb25mbGljdC4gIEZvciBlYWNoCi1maWxlIHlvdSBlZGl0LCB5b3UgbmVlZCB0byB0ZWxsIGdpdCB0aGF0IHRoZSBjb25mbGljdCBoYXMgYmVlbiByZXNvbHZlZCwKK2ZpbGUgeW91IGVkaXQsIHlvdSBuZWVkIHRvIHRlbGwgR2l0IHRoYXQgdGhlIGNvbmZsaWN0IGhhcyBiZWVuIHJlc29sdmVkLAogdHlwaWNhbGx5IHRoaXMgd291bGQgYmUgZG9uZSB3aXRoCiAKIApAQCAtMjEwLDcgKzIxMCw3IEBACiAKIE9QVElPTlMKIC0tLS0tLS0KLTxuZXdiYXNlPjo6CistLW9udG8gPG5ld2Jhc2U+OjoKIAlTdGFydGluZyBwb2ludCBhdCB3aGljaCB0byBjcmVhdGUgdGhlIG5ldyBjb21taXRzLiBJZiB0aGUKIAktLW9udG8gb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBzdGFydGluZyBwb2ludCBpcwogCTx1cHN0cmVhbT4uICBNYXkgYmUgYW55IHZhbGlkIGNvbW1pdCwgYW5kIG5vdCBqdXN0IGFuCkBAIC0yNDUsNiArMjQ1LDkgQEAKIC0tc2tpcDo6CiAJUmVzdGFydCB0aGUgcmViYXNpbmcgcHJvY2VzcyBieSBza2lwcGluZyB0aGUgY3VycmVudCBwYXRjaC4KIAorLS1lZGl0LXRvZG86OgorCUVkaXQgdGhlIHRvZG8gbGlzdCBkdXJpbmcgYW4gaW50ZXJhY3RpdmUgcmViYXNlLgorCiAtbTo6CiAtLW1lcmdlOjoKIAlVc2UgbWVyZ2luZyBzdHJhdGVnaWVzIHRvIHJlYmFzZS4gIFdoZW4gdGhlIHJlY3Vyc2l2ZSAoZGVmYXVsdCkgbWVyZ2UKQEAgLTI3Myw3ICsyNzYsNyBAQAogCVBhc3MgdGhlIDxzdHJhdGVneS1vcHRpb24+IHRocm91Z2ggdG8gdGhlIG1lcmdlIHN0cmF0ZWd5LgogCVRoaXMgaW1wbGllcyBgLS1tZXJnZWAgYW5kLCBpZiBubyBzdHJhdGVneSBoYXMgYmVlbgogCXNwZWNpZmllZCwgYC1zIHJlY3Vyc2l2ZWAuICBOb3RlIHRoZSByZXZlcnNhbCBvZiAnb3VycycgYW5kCi0JJ3RoZWlycycgYXMgbm90ZWQgaW4gYWJvdmUgZm9yIHRoZSBgLW1gIG9wdGlvbi4KKwkndGhlaXJzJyBhcyBub3RlZCBhYm92ZSBmb3IgdGhlIGAtbWAgb3B0aW9uLgogCiAtcTo6CiAtLXF1aWV0OjoKQEAgLTM0NCwxNCArMzQ3LDM2IEBACiB3aXRoIHRoZSBgLS1pbnRlcmFjdGl2ZWAgb3B0aW9uIGV4cGxpY2l0bHkgaXMgZ2VuZXJhbGx5IG5vdCBhIGdvb2QKIGlkZWEgdW5sZXNzIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZyAoc2VlIEJVR1MgYmVsb3cpLgogCisteCA8Y21kPjo6CistLWV4ZWMgPGNtZD46OgorCUFwcGVuZCAiZXhlYyA8Y21kPiIgYWZ0ZXIgZWFjaCBsaW5lIGNyZWF0aW5nIGEgY29tbWl0IGluIHRoZQorCWZpbmFsIGhpc3RvcnkuIDxjbWQ+IHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgb25lIG9yIG1vcmUgc2hlbGwKKwljb21tYW5kcy4KKysKK1RoaXMgb3B0aW9uIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCB0aGUgYC0taW50ZXJhY3RpdmVgIG9wdGlvbgorKHNlZSBJTlRFUkFDVElWRSBNT0RFIGJlbG93KS4KKysKK1lvdSBtYXkgZXhlY3V0ZSBzZXZlcmFsIGNvbW1hbmRzIGJ5IGVpdGhlciB1c2luZyBvbmUgaW5zdGFuY2Ugb2YgYC0tZXhlY2AKK3dpdGggc2V2ZXJhbCBjb21tYW5kczoKKysKKwlnaXQgcmViYXNlIC1pIC0tZXhlYyAiY21kMSAmJiBjbWQyICYmIC4uLiIKKysKK29yIGJ5IGdpdmluZyBtb3JlIHRoYW4gb25lIGAtLWV4ZWNgOgorKworCWdpdCByZWJhc2UgLWkgLS1leGVjICJjbWQxIiAtLWV4ZWMgImNtZDIiIC0tZXhlYyAuLi4KKysKK0lmIGAtLWF1dG9zcXVhc2hgIGlzIHVzZWQsICJleGVjIiBsaW5lcyB3aWxsIG5vdCBiZSBhcHBlbmRlZCBmb3IKK3RoZSBpbnRlcm1lZGlhdGUgY29tbWl0cywgYW5kIHdpbGwgb25seSBhcHBlYXIgYXQgdGhlIGVuZCBvZiBlYWNoCitzcXVhc2gvZml4dXAgc2VyaWVzLgogCiAtLXJvb3Q6OgogCVJlYmFzZSBhbGwgY29tbWl0cyByZWFjaGFibGUgZnJvbSA8YnJhbmNoPiwgaW5zdGVhZCBvZgogCWxpbWl0aW5nIHRoZW0gd2l0aCBhbiA8dXBzdHJlYW0+LiAgVGhpcyBhbGxvd3MgeW91IHRvIHJlYmFzZQotCXRoZSByb290IGNvbW1pdChzKSBvbiBhIGJyYW5jaC4gIE11c3QgYmUgdXNlZCB3aXRoIC0tb250bywgYW5kCisJdGhlIHJvb3QgY29tbWl0KHMpIG9uIGEgYnJhbmNoLiAgV2hlbiB1c2VkIHdpdGggLS1vbnRvLCBpdAogCXdpbGwgc2tpcCBjaGFuZ2VzIGFscmVhZHkgY29udGFpbmVkIGluIDxuZXdiYXNlPiAoaW5zdGVhZCBvZgotCTx1cHN0cmVhbT4pLiAgV2hlbiB1c2VkIHRvZ2V0aGVyIHdpdGggLS1wcmVzZXJ2ZS1tZXJnZXMsICdhbGwnCi0Jcm9vdCBjb21taXRzIHdpbGwgYmUgcmV3cml0dGVuIHRvIGhhdmUgPG5ld2Jhc2U+IGFzIHBhcmVudAorCTx1cHN0cmVhbT4pIHdoZXJlYXMgd2l0aG91dCAtLW9udG8gaXQgd2lsbCBvcGVyYXRlIG9uIGV2ZXJ5IGNoYW5nZS4KKwlXaGVuIHVzZWQgdG9nZXRoZXIgd2l0aCBib3RoIC0tb250byBhbmQgLS1wcmVzZXJ2ZS1tZXJnZXMsCisJJ2FsbCcgcm9vdCBjb21taXRzIHdpbGwgYmUgcmV3cml0dGVuIHRvIGhhdmUgPG5ld2Jhc2U+IGFzIHBhcmVudAogCWluc3RlYWQuCiAKIC0tYXV0b3NxdWFzaDo6CkBAIC01MjEsNiArNTQ2LDI0IEBACiB1c2Ugc2hlbGwgZmVhdHVyZXMgKGxpa2UgImNkIiwgIj4iLCAiOyIgLi4uKS4gVGhlIGNvbW1hbmQgaXMgcnVuIGZyb20KIHRoZSByb290IG9mIHRoZSB3b3JraW5nIHRyZWUuCiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyQgZ2l0IHJlYmFzZSAtaSAtLWV4ZWMgIm1ha2UgdGVzdCIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBjb21tYW5kIGxldHMgeW91IGNoZWNrIHRoYXQgaW50ZXJtZWRpYXRlIGNvbW1pdHMgYXJlIGNvbXBpbGFibGUuCitUaGUgdG9kbyBsaXN0IGJlY29tZXMgbGlrZSB0aGF0OgorCistLS0tLS0tLS0tLS0tLS0tLS0tLQorcGljayA1OTI4YWVhIG9uZQorZXhlYyBtYWtlIHRlc3QKK3BpY2sgMDRkMGZkYSB0d28KK2V4ZWMgbWFrZSB0ZXN0CitwaWNrIGJhNDYxNjkgdGhyZWUKK2V4ZWMgbWFrZSB0ZXN0CitwaWNrIGY0NTkzZjkgZm91cgorZXhlYyBtYWtlIHRlc3QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKIFNQTElUVElORyBDT01NSVRTCiAtLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yZWZsb2cudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmVmbG9nLnR4dAppbmRleCA3ZmUyZDIyLi5mYjg2OTdlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1yZWZsb2cudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJlZmxvZy50eHQKQEAgLTM4LDcgKzM4LDcgQEAKIGFzIHdlbGwpLiAgSXQgaXMgYW4gYWxpYXMgZm9yIGBnaXQgbG9nIC1nIC0tYWJicmV2LWNvbW1pdCAtLXByZXR0eT1vbmVsaW5lYDsKIHNlZSBsaW5rZ2l0OmdpdC1sb2dbMV0uCiAKLVRoZSByZWZsb2cgaXMgdXNlZnVsIGluIHZhcmlvdXMgZ2l0IGNvbW1hbmRzLCB0byBzcGVjaWZ5IHRoZSBvbGQgdmFsdWUKK1RoZSByZWZsb2cgaXMgdXNlZnVsIGluIHZhcmlvdXMgR2l0IGNvbW1hbmRzLCB0byBzcGVjaWZ5IHRoZSBvbGQgdmFsdWUKIG9mIGEgcmVmZXJlbmNlLiBGb3IgZXhhbXBsZSwgYEhFQURAezJ9YCBtZWFucyAid2hlcmUgSEVBRCB1c2VkIHRvIGJlCiB0d28gbW92ZXMgYWdvIiwgYG1hc3RlckB7b25lLndlZWsuYWdvfWAgbWVhbnMgIndoZXJlIG1hc3RlciB1c2VkIHRvCiBwb2ludCB0byBvbmUgd2VlayBhZ28iLCBhbmQgc28gb24uIFNlZSBsaW5rZ2l0OmdpdHJldmlzaW9uc1s3XSBmb3IKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS1leHQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmVtb3RlLWV4dC50eHQKaW5kZXggOGE4ZTFkNy4uOGNmYzc0OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcmVtb3RlLWV4dC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcmVtb3RlLWV4dC50eHQKQEAgLTEzLDcgKzEzLDcgQEAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQogVGhpcyByZW1vdGUgaGVscGVyIHVzZXMgdGhlIHNwZWNpZmllZCAnPGNvbW1hbmQ+JyB0byBjb25uZWN0Ci10byBhIHJlbW90ZSBnaXQgc2VydmVyLgordG8gYSByZW1vdGUgR2l0IHNlcnZlci4KIAogRGF0YSB3cml0dGVuIHRvIHN0ZGluIG9mIHRoZSBzcGVjaWZpZWQgJzxjb21tYW5kPicgaXMgYXNzdW1lZAogdG8gYmUgc2VudCB0byBhIGdpdDovLyBzZXJ2ZXIsIGdpdC11cGxvYWQtcGFjaywgZ2l0LXJlY2VpdmUtcGFjawpAQCAtMzMsMTIgKzMzLDEyIEBACiAKICclcyc6OgogCVJlcGxhY2VkIHdpdGggbmFtZSAocmVjZWl2ZS1wYWNrLCB1cGxvYWQtcGFjaywgb3IKLQl1cGxvYWQtYXJjaGl2ZSkgb2YgdGhlIHNlcnZpY2UgZ2l0IHdhbnRzIHRvIGludm9rZS4KKwl1cGxvYWQtYXJjaGl2ZSkgb2YgdGhlIHNlcnZpY2UgR2l0IHdhbnRzIHRvIGludm9rZS4KIAogJyVTJzo6CiAJUmVwbGFjZWQgd2l0aCBsb25nIG5hbWUgKGdpdC1yZWNlaXZlLXBhY2ssCiAJZ2l0LXVwbG9hZC1wYWNrLCBvciBnaXQtdXBsb2FkLWFyY2hpdmUpIG9mIHRoZSBzZXJ2aWNlCi0JZ2l0IHdhbnRzIHRvIGludm9rZS4KKwlHaXQgd2FudHMgdG8gaW52b2tlLgogCiAnJUcnIChtdXN0IGJlIHRoZSBmaXJzdCBjaGFyYWN0ZXJzIGluIGFuIGFyZ3VtZW50KTo6CiAJVGhpcyBhcmd1bWVudCB3aWxsIG5vdCBiZSBwYXNzZWQgdG8gJzxjb21tYW5kPicuIEluc3RlYWQsIGl0CkBAIC03NSw3ICs3NSw3IEBACiAKIEVYQU1QTEVTOgogLS0tLS0tLS0tCi1UaGlzIHJlbW90ZSBoZWxwZXIgaXMgdHJhbnNwYXJlbnRseSB1c2VkIGJ5IGdpdCB3aGVuCitUaGlzIHJlbW90ZSBoZWxwZXIgaXMgdHJhbnNwYXJlbnRseSB1c2VkIGJ5IEdpdCB3aGVuCiB5b3UgdXNlIGNvbW1hbmRzIHN1Y2ggYXMgImdpdCBmZXRjaCA8VVJMPiIsICJnaXQgY2xvbmUgPFVSTD4iLAogLCAiZ2l0IHB1c2ggPFVSTD4iIG9yICJnaXQgcmVtb3RlIGFkZCA8bmljaz4gPFVSTD4iLCB3aGVyZSA8VVJMPgogYmVnaW5zIHdpdGggYGV4dDo6YC4gIEV4YW1wbGVzOgpAQCAtODYsNyArODYsNyBAQAogCWVkaXQgLnNzaC9jb25maWcuCiAKICJleHQ6OnNvY2F0IC10MzYwMCAtIEFCU1RSQUNULUNPTk5FQ1Q6L2dpdC1zZXJ2ZXIgJUcvc29tZXJlcG8iOjoKLQlSZXByZXNlbnRzIHJlcG9zaXRvcnkgd2l0aCBwYXRoIC9zb21lcmVwbyBhY2Nlc3NhYmxlIG92ZXIKKwlSZXByZXNlbnRzIHJlcG9zaXRvcnkgd2l0aCBwYXRoIC9zb21lcmVwbyBhY2Nlc3NpYmxlIG92ZXIKIAlnaXQgcHJvdG9jb2wgYXQgYWJzdHJhY3QgbmFtZXNwYWNlIGFkZHJlc3MgL2dpdC1zZXJ2ZXIuCiAKICJleHQ6OmdpdC1zZXJ2ZXItYWxpYXMgZm9vICVHL3JlcG8iOjoKQEAgLTEwMCwxNCArMTAwLDE0IEBACiAJUmVwcmVzZW50cyBhIHJlcG9zaXRvcnkgd2l0aCBwYXRoIC9yZXBvIGFjY2Vzc2VkIHVzaW5nIHRoZQogCWhlbHBlciBwcm9ncmFtICJnaXQtc2VydmVyLWFsaWFzIGZvbyIuICBUaGUgaG9zdG5hbWUgZm9yIHRoZQogCXJlbW90ZSBzZXJ2ZXIgcGFzc2VkIGluIHRoZSBwcm90b2NvbCBzdHJlYW0gd2lsbCBiZSAiZm9vIgotCSh0aGlzIGFsbG93cyBtdWx0aXBsZSB2aXJ0dWFsIGdpdCBzZXJ2ZXJzIHRvIHNoYXJlIGEKKwkodGhpcyBhbGxvd3MgbXVsdGlwbGUgdmlydHVhbCBHaXQgc2VydmVycyB0byBzaGFyZSBhCiAJbGluay1sZXZlbCBhZGRyZXNzKS4KIAogImV4dDo6Z2l0LXNlcnZlci1hbGlhcyBmb28gJUcvcmVwbyUgd2l0aCUgc3BhY2VzICVWZm9vIjo6CiAJUmVwcmVzZW50cyBhIHJlcG9zaXRvcnkgd2l0aCBwYXRoICcvcmVwbyB3aXRoIHNwYWNlcycgYWNjZXNzZWQKIAl1c2luZyB0aGUgaGVscGVyIHByb2dyYW0gImdpdC1zZXJ2ZXItYWxpYXMgZm9vIi4gIFRoZSBob3N0bmFtZSBmb3IKIAl0aGUgcmVtb3RlIHNlcnZlciBwYXNzZWQgaW4gdGhlIHByb3RvY29sIHN0cmVhbSB3aWxsIGJlICJmb28iCi0JKHRoaXMgYWxsb3dzIG11bHRpcGxlIHZpcnR1YWwgZ2l0IHNlcnZlcnMgdG8gc2hhcmUgYQorCSh0aGlzIGFsbG93cyBtdWx0aXBsZSB2aXJ0dWFsIEdpdCBzZXJ2ZXJzIHRvIHNoYXJlIGEKIAlsaW5rLWxldmVsIGFkZHJlc3MpLgogCiAiZXh0OjpnaXQtc3NsIGZvby5leGFtcGxlIC9iYXIiOjoKQEAgLTExOCw3ICsxMTgsNyBAQAogCiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tLQotRG9jdW1lbnRhdGlvbiBieSBJbGFyaSBMaXVzdmFhcmEsIEpvbmF0aGFuIE5pZWRlciBhbmQgdGhlIGdpdCBsaXN0CitEb2N1bWVudGF0aW9uIGJ5IElsYXJpIExpdXN2YWFyYSwgSm9uYXRoYW4gTmllZGVyIGFuZCB0aGUgR2l0IGxpc3QKIDxnaXRAdmdlci5rZXJuZWwub3JnPgogCiBHSVQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS1mZC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZW1vdGUtZmQudHh0CmluZGV4IGYwOTVkNTcuLjkzM2MyYWQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS1mZC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcmVtb3RlLWZkLnR4dApAQCAtMTEsMTQgKzExLDE0IEBACiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQotVGhpcyBoZWxwZXIgdXNlcyBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9ycyB0byBjb25uZWN0IHRvIGEgcmVtb3RlIGdpdCBzZXJ2ZXIuCitUaGlzIGhlbHBlciB1c2VzIHNwZWNpZmllZCBmaWxlIGRlc2NyaXB0b3JzIHRvIGNvbm5lY3QgdG8gYSByZW1vdGUgR2l0IHNlcnZlci4KIFRoaXMgaXMgbm90IG1lYW50IGZvciBlbmQgdXNlcnMgYnV0IGZvciBwcm9ncmFtcyBhbmQgc2NyaXB0cyBjYWxsaW5nIGdpdAogZmV0Y2gsIHB1c2ggb3IgYXJjaGl2ZS4KIAogSWYgb25seSA8aW5mZD4gaXMgZ2l2ZW4sIGl0IGlzIGFzc3VtZWQgdG8gYmUgYSBiaWRpcmVjdGlvbmFsIHNvY2tldCBjb25uZWN0ZWQKLXRvIHJlbW90ZSBnaXQgc2VydmVyIChnaXQtdXBsb2FkLXBhY2ssIGdpdC1yZWNlaXZlLXBhY2sgb3IKK3RvIHJlbW90ZSBHaXQgc2VydmVyIChnaXQtdXBsb2FkLXBhY2ssIGdpdC1yZWNlaXZlLXBhY2sgb3IKIGdpdC11cGxvYWQtYWNoaXZlKS4gSWYgYm90aCA8aW5mZD4gYW5kIDxvdXRmZD4gYXJlIGdpdmVuLCB0aGV5IGFyZSBhc3N1bWVkCi10byBiZSBwaXBlcyBjb25uZWN0ZWQgdG8gYSByZW1vdGUgZ2l0IHNlcnZlciAoPGluZmQ+IGJlaW5nIHRoZSBpbmJvdW5kIHBpcGUKK3RvIGJlIHBpcGVzIGNvbm5lY3RlZCB0byBhIHJlbW90ZSBHaXQgc2VydmVyICg8aW5mZD4gYmVpbmcgdGhlIGluYm91bmQgcGlwZQogYW5kIDxvdXRmZD4gYmVpbmcgdGhlIG91dGJvdW5kIHBpcGUuCiAKIEl0IGlzIGFzc3VtZWQgdGhhdCBhbnkgaGFuZHNoYWtpbmcgcHJvY2VkdXJlcyBoYXZlIGFscmVhZHkgYmVlbiBjb21wbGV0ZWQKQEAgLTUyLDcgKzUyLDcgQEAKIAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLS0KLURvY3VtZW50YXRpb24gYnkgSWxhcmkgTGl1c3ZhYXJhIGFuZCB0aGUgZ2l0IGxpc3QgPGdpdEB2Z2VyLmtlcm5lbC5vcmc+CitEb2N1bWVudGF0aW9uIGJ5IElsYXJpIExpdXN2YWFyYSBhbmQgdGhlIEdpdCBsaXN0IDxnaXRAdmdlci5rZXJuZWwub3JnPgogCiBHSVQKIC0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcmVtb3RlLWhlbHBlcnMudHh0byBiL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS1oZWxwZXJzLnR4dG8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkyMzNmNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS1oZWxwZXJzLnR4dG8KQEAgLTAsMCArMSw5IEBACitnaXQtcmVtb3RlLWhlbHBlcnMKKz09PT09PT09PT09PT09PT09PQorCitUaGlzIGRvY3VtZW50IGhhcyBiZWVuIG1vdmVkIHRvIGxpbmtnaXQ6Z2l0cmVtb3RlLWhlbHBlcnNbMV0uCisKK1BsZWFzZSBsZXQgdGhlIG93bmVycyBvZiB0aGUgcmVmZXJyaW5nIHNpdGUga25vdyBzbyB0aGF0IHRoZXkgY2FuIHVwZGF0ZSB0aGUKK2xpbmsgeW91IGNsaWNrZWQgdG8gZ2V0IGhlcmUuCisKK1RoYW5rcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS10ZXN0Z2l0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS10ZXN0Z2l0LnR4dAppbmRleCAyYTY3ZDQ1Li5mNzkxZDczIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1yZW1vdGUtdGVzdGdpdC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcmVtb3RlLXRlc3RnaXQudHh0CkBAIC0xOSwxMSArMTksMTEgQEAKIHNob3cgcmVtb3RlLWhlbHBlciBhdXRob3JzIG9uZSBwb3NzaWJsZSBpbXBsZW1lbnRhdGlvbi4KIAogVGhlIGJlc3Qgd2F5IHRvIGxlYXJuIG1vcmUgaXMgdG8gcmVhZCB0aGUgY29tbWVudHMgYW5kIHNvdXJjZSBjb2RlIGluCi0nZ2l0LXJlbW90ZS10ZXN0Z2l0LnB5Jy4KKydnaXQtcmVtb3RlLXRlc3RnaXQnLgogCiBTRUUgQUxTTwogLS0tLS0tLS0KLWxpbmtnaXQ6Z2l0LXJlbW90ZS1oZWxwZXJzWzFdCitsaW5rZ2l0OmdpdHJlbW90ZS1oZWxwZXJzWzFdCiAKIEdJVAogLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yZW1vdGUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmVtb3RlLnR4dAppbmRleCBhMzA4ZjRjLi41ODFiYjRjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1yZW1vdGUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS50eHQKQEAgLTEwLDE2ICsxMCwxNiBAQAogLS0tLS0tLS0KIFt2ZXJzZV0KICdnaXQgcmVtb3RlJyBbLXYgfCAtLXZlcmJvc2VdCi0nZ2l0IHJlbW90ZSBhZGQnIFstdCA8YnJhbmNoPl0gWy1tIDxtYXN0ZXI+XSBbLWZdIFstLXRhZ3N8LS1uby10YWdzXSBbLS1taXJyb3I9PGZldGNofHB1c2g+XSA8bmFtZT4gPHVybD4KKydnaXQgcmVtb3RlIGFkZCcgWy10IDxicmFuY2g+XSBbLW0gPG1hc3Rlcj5dIFstZl0gWy0tW25vLV10YWdzXSBbLS1taXJyb3I9PGZldGNofHB1c2g+XSA8bmFtZT4gPHVybD4KICdnaXQgcmVtb3RlIHJlbmFtZScgPG9sZD4gPG5ldz4KLSdnaXQgcmVtb3RlIHJtJyA8bmFtZT4KKydnaXQgcmVtb3RlIHJlbW92ZScgPG5hbWU+CiAnZ2l0IHJlbW90ZSBzZXQtaGVhZCcgPG5hbWU+ICgtYSB8IC1kIHwgPGJyYW5jaD4pCiAnZ2l0IHJlbW90ZSBzZXQtYnJhbmNoZXMnIFstLWFkZF0gPG5hbWU+IDxicmFuY2g+Li4uCiAnZ2l0IHJlbW90ZSBzZXQtdXJsJyBbLS1wdXNoXSA8bmFtZT4gPG5ld3VybD4gWzxvbGR1cmw+XQogJ2dpdCByZW1vdGUgc2V0LXVybCAtLWFkZCcgWy0tcHVzaF0gPG5hbWU+IDxuZXd1cmw+CiAnZ2l0IHJlbW90ZSBzZXQtdXJsIC0tZGVsZXRlJyBbLS1wdXNoXSA8bmFtZT4gPHVybD4KLSdnaXQgcmVtb3RlJyBbLXYgfCAtLXZlcmJvc2VdICdzaG93JyBbLW5dIDxuYW1lPgotJ2dpdCByZW1vdGUgcHJ1bmUnIFstbiB8IC0tZHJ5LXJ1bl0gPG5hbWU+CisnZ2l0IHJlbW90ZScgWy12IHwgLS12ZXJib3NlXSAnc2hvdycgWy1uXSA8bmFtZT4uLi4KKydnaXQgcmVtb3RlIHBydW5lJyBbLW4gfCAtLWRyeS1ydW5dIDxuYW1lPi4uLgogJ2dpdCByZW1vdGUnIFstdiB8IC0tdmVyYm9zZV0gJ3VwZGF0ZScgWy1wIHwgLS1wcnVuZV0gWyg8Z3JvdXA+IHwgPHJlbW90ZT4pLi4uXQogCiBERVNDUklQVElPTgpAQCAtODUsNiArODUsNyBAQAogYCRHSVRfRElSL3JlbW90ZXNgIG9yIGAkR0lUX0RJUi9icmFuY2hlc2AsIHRoZSByZW1vdGUgaXMgY29udmVydGVkIHRvCiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGZvcm1hdC4KIAorJ3JlbW92ZSc6OgogJ3JtJzo6CiAKIFJlbW92ZSB0aGUgcmVtb3RlIG5hbWVkIDxuYW1lPi4gQWxsIHJlbW90ZS10cmFja2luZyBicmFuY2hlcyBhbmQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXJlcGxhY2UudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmVwbGFjZS50eHQKaW5kZXggMTdkZjUyNS4uZTBiNDA1NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcmVwbGFjZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcmVwbGFjZS50eHQKQEAgLTE0LDE2ICsxNCwxNSBAQAogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KLUFkZHMgYSAncmVwbGFjZScgcmVmZXJlbmNlIGluIGAuZ2l0L3JlZnMvcmVwbGFjZS9gCitBZGRzIGEgJ3JlcGxhY2UnIHJlZmVyZW5jZSBpbiBgcmVmcy9yZXBsYWNlL2AgbmFtZXNwYWNlLgogCi1UaGUgbmFtZSBvZiB0aGUgJ3JlcGxhY2UnIHJlZmVyZW5jZSBpcyB0aGUgU0hBMSBvZiB0aGUgb2JqZWN0IHRoYXQgaXMKLXJlcGxhY2VkLiBUaGUgY29udGVudCBvZiB0aGUgJ3JlcGxhY2UnIHJlZmVyZW5jZSBpcyB0aGUgU0hBMSBvZiB0aGUKK1RoZSBuYW1lIG9mIHRoZSAncmVwbGFjZScgcmVmZXJlbmNlIGlzIHRoZSBTSEEtMSBvZiB0aGUgb2JqZWN0IHRoYXQgaXMKK3JlcGxhY2VkLiBUaGUgY29udGVudCBvZiB0aGUgJ3JlcGxhY2UnIHJlZmVyZW5jZSBpcyB0aGUgU0hBLTEgb2YgdGhlCiByZXBsYWNlbWVudCBvYmplY3QuCiAKLVVubGVzcyBgLWZgIGlzIGdpdmVuLCB0aGUgJ3JlcGxhY2UnIHJlZmVyZW5jZSBtdXN0IG5vdCB5ZXQgZXhpc3QgaW4KLWAuZ2l0L3JlZnMvcmVwbGFjZS9gIGRpcmVjdG9yeS4KK1VubGVzcyBgLWZgIGlzIGdpdmVuLCB0aGUgJ3JlcGxhY2UnIHJlZmVyZW5jZSBtdXN0IG5vdCB5ZXQgZXhpc3QuCiAKLVJlcGxhY2VtZW50IHJlZmVyZW5jZXMgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQgYnkgYWxsIGdpdCBjb21tYW5kcworUmVwbGFjZW1lbnQgcmVmZXJlbmNlcyB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdCBieSBhbGwgR2l0IGNvbW1hbmRzCiBleGNlcHQgdGhvc2UgZG9pbmcgcmVhY2hhYmlsaXR5IHRyYXZlcnNhbCAocHJ1bmUsIHBhY2sgdHJhbnNmZXIgYW5kCiBmc2NrKS4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcmVzZXQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmVzZXQudHh0CmluZGV4IDExN2UzNzQuLmE0MDRiNDcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJlc2V0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZXNldC50eHQKQEAgLTgsMjAgKzgsMjAgQEAKIFNZTk9QU0lTCiAtLS0tLS0tLQogW3ZlcnNlXQotJ2dpdCByZXNldCcgWy1xXSBbPGNvbW1pdD5dIFstLV0gPHBhdGhzPi4uLgotJ2dpdCByZXNldCcgKC0tcGF0Y2ggfCAtcCkgWzxjb21taXQ+XSBbLS1dIFs8cGF0aHM+Li4uXQotJ2dpdCByZXNldCcgKC0tc29mdCB8IC0tbWl4ZWQgfCAtLWhhcmQgfCAtLW1lcmdlIHwgLS1rZWVwKSBbLXFdIFs8Y29tbWl0Pl0KKydnaXQgcmVzZXQnIFstcV0gWzx0cmVlLWlzaD5dIFstLV0gPHBhdGhzPi4uLgorJ2dpdCByZXNldCcgKC0tcGF0Y2ggfCAtcCkgWzx0cmVlLXNoPl0gWy0tXSBbPHBhdGhzPi4uLl0KKydnaXQgcmVzZXQnIFstLXNvZnQgfCAtLW1peGVkIHwgLS1oYXJkIHwgLS1tZXJnZSB8IC0ta2VlcF0gWy1xXSBbPGNvbW1pdD5dCiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQotSW4gdGhlIGZpcnN0IGFuZCBzZWNvbmQgZm9ybSwgY29weSBlbnRyaWVzIGZyb20gPGNvbW1pdD4gdG8gdGhlIGluZGV4LgorSW4gdGhlIGZpcnN0IGFuZCBzZWNvbmQgZm9ybSwgY29weSBlbnRyaWVzIGZyb20gPHRyZWUtaXNoPiB0byB0aGUgaW5kZXguCiBJbiB0aGUgdGhpcmQgZm9ybSwgc2V0IHRoZSBjdXJyZW50IGJyYW5jaCBoZWFkIChIRUFEKSB0byA8Y29tbWl0Piwgb3B0aW9uYWxseQotbW9kaWZ5aW5nIGluZGV4IGFuZCB3b3JraW5nIHRyZWUgdG8gbWF0Y2guICBUaGUgPGNvbW1pdD4gZGVmYXVsdHMgdG8gSEVBRAotaW4gYWxsIGZvcm1zLgorbW9kaWZ5aW5nIGluZGV4IGFuZCB3b3JraW5nIHRyZWUgdG8gbWF0Y2guICBUaGUgPHRyZWUtaXNoPi88Y29tbWl0PiBkZWZhdWx0cwordG8gSEVBRCBpbiBhbGwgZm9ybXMuCiAKLSdnaXQgcmVzZXQnIFstcV0gWzxjb21taXQ+XSBbLS1dIDxwYXRocz4uLi46OgorJ2dpdCByZXNldCcgWy1xXSBbPHRyZWUtaXNoPl0gWy0tXSA8cGF0aHM+Li4uOjoKIAlUaGlzIGZvcm0gcmVzZXRzIHRoZSBpbmRleCBlbnRyaWVzIGZvciBhbGwgPHBhdGhzPiB0byB0aGVpcgotCXN0YXRlIGF0IDxjb21taXQ+LiAgKEl0IGRvZXMgbm90IGFmZmVjdCB0aGUgd29ya2luZyB0cmVlLCBub3IKKwlzdGF0ZSBhdCA8dHJlZS1pc2g+LiAgKEl0IGRvZXMgbm90IGFmZmVjdCB0aGUgd29ya2luZyB0cmVlLCBub3IKIAl0aGUgY3VycmVudCBicmFuY2guKQogKwogVGhpcyBtZWFucyB0aGF0IGBnaXQgcmVzZXQgPHBhdGhzPmAgaXMgdGhlIG9wcG9zaXRlIG9mIGBnaXQgYWRkCkBAIC0zNCwyMCArMzQsMjAgQEAKIGNhbiBjb3B5IHRoZSBjb250ZW50cyBvZiBhIHBhdGggb3V0IG9mIGEgY29tbWl0IHRvIHRoZSBpbmRleCBhbmQgdG8gdGhlCiB3b3JraW5nIHRyZWUgaW4gb25lIGdvLgogCi0nZ2l0IHJlc2V0JyAoLS1wYXRjaCB8IC1wKSBbPGNvbW1pdD5dIFstLV0gWzxwYXRocz4uLi5dOjoKKydnaXQgcmVzZXQnICgtLXBhdGNoIHwgLXApIFs8dHJlZS1pc2g+XSBbLS1dIFs8cGF0aHM+Li4uXTo6CiAJSW50ZXJhY3RpdmVseSBzZWxlY3QgaHVua3MgaW4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgaW5kZXgKLQlhbmQgPGNvbW1pdD4gKGRlZmF1bHRzIHRvIEhFQUQpLiAgVGhlIGNob3NlbiBodW5rcyBhcmUgYXBwbGllZAorCWFuZCA8dHJlZS1pc2g+IChkZWZhdWx0cyB0byBIRUFEKS4gIFRoZSBjaG9zZW4gaHVua3MgYXJlIGFwcGxpZWQKIAlpbiByZXZlcnNlIHRvIHRoZSBpbmRleC4KICsKIFRoaXMgbWVhbnMgdGhhdCBgZ2l0IHJlc2V0IC1wYCBpcyB0aGUgb3Bwb3NpdGUgb2YgYGdpdCBhZGQgLXBgLCBpLmUuCiB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3RpdmVseSByZXNldCBodW5rcy4gU2VlIHRoZSBgYEludGVyYWN0aXZlIE1vZGUnJwogc2VjdGlvbiBvZiBsaW5rZ2l0OmdpdC1hZGRbMV0gdG8gbGVhcm4gaG93IHRvIG9wZXJhdGUgdGhlIGAtLXBhdGNoYCBtb2RlLgogCi0nZ2l0IHJlc2V0JyAtLTxtb2RlPiBbPGNvbW1pdD5dOjoKKydnaXQgcmVzZXQnIFs8bW9kZT5dIFs8Y29tbWl0Pl06OgogCVRoaXMgZm9ybSByZXNldHMgdGhlIGN1cnJlbnQgYnJhbmNoIGhlYWQgdG8gPGNvbW1pdD4gYW5kCiAJcG9zc2libHkgdXBkYXRlcyB0aGUgaW5kZXggKHJlc2V0dGluZyBpdCB0byB0aGUgdHJlZSBvZiA8Y29tbWl0PikgYW5kCi0JdGhlIHdvcmtpbmcgdHJlZSBkZXBlbmRpbmcgb24gPG1vZGU+LCB3aGljaAotCW11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJdGhlIHdvcmtpbmcgdHJlZSBkZXBlbmRpbmcgb24gPG1vZGU+LiBJZiA8bW9kZT4gaXMgb21pdHRlZCwKKwlkZWZhdWx0cyB0byAiLS1taXhlZCIuIFRoZSA8bW9kZT4gbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKICsKIC0tCiAtLXNvZnQ6OgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcmV2LWxpc3QudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmV2LWxpc3QudHh0CmluZGV4IDM4ZmFmY2EuLjY1YWMyN2UgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJldi1saXN0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZXYtbGlzdC50eHQKQEAgLTk5LDcgKzk5LDcgQEAKIAkkIGdpdCByZXYtbGlzdCBBLi4uQgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotJ3Jldi1saXN0JyBpcyBhIHZlcnkgZXNzZW50aWFsIGdpdCBjb21tYW5kLCBzaW5jZSBpdAorJ3Jldi1saXN0JyBpcyBhIHZlcnkgZXNzZW50aWFsIEdpdCBjb21tYW5kLCBzaW5jZSBpdAogcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gYnVpbGQgYW5kIHRyYXZlcnNlIGNvbW1pdCBhbmNlc3RyeSBncmFwaHMuIEZvcgogdGhpcyByZWFzb24sIGl0IGhhcyBhIGxvdCBvZiBkaWZmZXJlbnQgb3B0aW9ucyB0aGF0IGVuYWJsZXMgaXQgdG8gYmUKIHVzZWQgYnkgY29tbWFuZHMgYXMgZGlmZmVyZW50IGFzICdnaXQgYmlzZWN0JyBhbmQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXJldi1wYXJzZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZXYtcGFyc2UudHh0CmluZGV4IDRjYzNlOTUuLjk0N2Q2MmYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJldi1wYXJzZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcmV2LXBhcnNlLnR4dApAQCAtMTQsNyArMTQsNyBAQAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCiAKLU1hbnkgZ2l0IHBvcmNlbGFpbmlzaCBjb21tYW5kcyB0YWtlIG1peHR1cmUgb2YgZmxhZ3MKK01hbnkgR2l0IHBvcmNlbGFpbmlzaCBjb21tYW5kcyB0YWtlIG1peHR1cmUgb2YgZmxhZ3MKIChpLmUuIHBhcmFtZXRlcnMgdGhhdCBiZWdpbiB3aXRoIGEgZGFzaCAnLScpIGFuZCBwYXJhbWV0ZXJzCiBtZWFudCBmb3IgdGhlIHVuZGVybHlpbmcgJ2dpdCByZXYtbGlzdCcgY29tbWFuZCB0aGV5IHVzZSBpbnRlcm5hbGx5CiBhbmQgZmxhZ3MgYW5kIHBhcmFtZXRlcnMgZm9yIHRoZSBvdGhlciBjb21tYW5kcyB0aGV5IHVzZQpAQCAtNjAsOCArNjAsMTkgQEAKIAlpbnN0ZWFkLgogCiAtLXZlcmlmeTo6Ci0JVGhlIHBhcmFtZXRlciBnaXZlbiBtdXN0IGJlIHVzYWJsZSBhcyBhIHNpbmdsZSwgdmFsaWQKLQlvYmplY3QgbmFtZS4gIE90aGVyd2lzZSBiYXJmIGFuZCBhYm9ydC4KKwlWZXJpZnkgdGhhdCBleGFjdGx5IG9uZSBwYXJhbWV0ZXIgaXMgcHJvdmlkZWQsIGFuZCB0aGF0IGl0CisJY2FuIGJlIHR1cm5lZCBpbnRvIGEgcmF3IDIwLWJ5dGUgU0hBLTEgdGhhdCBjYW4gYmUgdXNlZCB0bworCWFjY2VzcyB0aGUgb2JqZWN0IGRhdGFiYXNlLiBJZiBzbywgZW1pdCBpdCB0byB0aGUgc3RhbmRhcmQKKwlvdXRwdXQ7IG90aGVyd2lzZSwgZXJyb3Igb3V0LgorKworSWYgeW91IHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG91dHB1dCBhY3R1YWxseSBuYW1lcyBhbiBvYmplY3QgaW4KK3lvdXIgb2JqZWN0IGRhdGFiYXNlIGFuZC9vciBjYW4gYmUgdXNlZCBhcyBhIHNwZWNpZmljIHR5cGUgb2Ygb2JqZWN0Cit5b3UgcmVxdWlyZSwgeW91IGNhbiBhZGQgIl57dHlwZX0iIHBlZWxpbmcgb3BlcmF0b3IgdG8gdGhlIHBhcm1ldGVyLgorRm9yIGV4YW1wbGUsIGBnaXQgcmV2LXBhcnNlICIkVkFSXntjb21taXR9ImAgd2lsbCBtYWtlIHN1cmUgYCRWQVJgCituYW1lcyBhbiBleGlzdGluZyBvYmplY3QgdGhhdCBpcyBhIGNvbW1pdC1pc2ggKGkuZS4gYSBjb21taXQsIG9yIGFuCithbm5vdGF0ZWQgdGFnIHRoYXQgcG9pbnRzIGF0IGEgY29tbWl0KS4gIFRvIG1ha2Ugc3VyZSB0aGF0IGAkVkFSYAorbmFtZXMgYW4gZXhpc3Rpbmcgb2JqZWN0IG9mIGFueSB0eXBlLCBgZ2l0IHJldi1wYXJzZSAiJFZBUl57b2JqZWN0fSJgCitjYW4gYmUgdXNlZC4KIAogLXE6OgogLS1xdWlldDo6CkBAIC04NCw3ICs5NSw3IEBACiAJb25lLgogCiAtLXN5bWJvbGljOjoKLQlVc3VhbGx5IHRoZSBvYmplY3QgbmFtZXMgYXJlIG91dHB1dCBpbiBTSEExIGZvcm0gKHdpdGgKKwlVc3VhbGx5IHRoZSBvYmplY3QgbmFtZXMgYXJlIG91dHB1dCBpbiBTSEEtMSBmb3JtICh3aXRoCiAJcG9zc2libGUgJ3tjYXJldH0nIHByZWZpeCk7IHRoaXMgb3B0aW9uIG1ha2VzIHRoZW0gb3V0cHV0IGluIGEKIAlmb3JtIGFzIGNsb3NlIHRvIHRoZSBvcmlnaW5hbCBpbnB1dCBhcyBwb3NzaWJsZS4KIApAQCAtMTAxLDYgKzExMiwxMiBAQAogCVRoZSBvcHRpb24gY29yZS53YXJuQW1iaWd1b3VzUmVmcyBpcyB1c2VkIHRvIHNlbGVjdCB0aGUgc3RyaWN0CiAJYWJicmV2aWF0aW9uIG1vZGUuCiAKKy0tZGlzYW1iaWd1YXRlPTxwcmVmaXg+OjoKKwlTaG93IGV2ZXJ5IG9iamVjdCB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIHRoZSBnaXZlbiBwcmVmaXguCisJVGhlIDxwcmVmaXg+IG11c3QgYmUgYXQgbGVhc3QgNCBoZXhhZGVjaW1hbCBkaWdpdHMgbG9uZyB0bworCWF2b2lkIGxpc3RpbmcgZWFjaCBhbmQgZXZlcnkgb2JqZWN0IGluIHRoZSByZXBvc2l0b3J5IGJ5CisJbWlzdGFrZS4KKwogLS1hbGw6OgogCVNob3cgYWxsIHJlZnMgZm91bmQgaW4gYHJlZnMvYC4KIApAQCAtMTQxLDcgKzE1OCw3IEBACiAJcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCiArCiBJZiBgJEdJVF9ESVJgIGlzIG5vdCBkZWZpbmVkIGFuZCB0aGUgY3VycmVudCBkaXJlY3RvcnkKLWlzIG5vdCBkZXRlY3RlZCB0byBsaWUgaW4gYSBnaXQgcmVwb3NpdG9yeSBvciB3b3JrIHRyZWUKK2lzIG5vdCBkZXRlY3RlZCB0byBsaWUgaW4gYSBHaXQgcmVwb3NpdG9yeSBvciB3b3JrIHRyZWUKIHByaW50IGEgbWVzc2FnZSB0byBzdGRlcnIgYW5kIGV4aXQgd2l0aCBub256ZXJvIHN0YXR1cy4KIAogLS1pcy1pbnNpZGUtZ2l0LWRpcjo6CkBAIC0xNjMsNyArMTgwLDcgQEAKIAogLS1zaG9ydDo6CiAtLXNob3J0PW51bWJlcjo6Ci0JSW5zdGVhZCBvZiBvdXRwdXR0aW5nIHRoZSBmdWxsIFNIQTEgdmFsdWVzIG9mIG9iamVjdCBuYW1lcyB0cnkgdG8KKwlJbnN0ZWFkIG9mIG91dHB1dHRpbmcgdGhlIGZ1bGwgU0hBLTEgdmFsdWVzIG9mIG9iamVjdCBuYW1lcyB0cnkgdG8KIAlhYmJyZXZpYXRlIHRoZW0gdG8gYSBzaG9ydGVyIHVuaXF1ZSBuYW1lLiBXaGVuIG5vIGxlbmd0aCBpcyBzcGVjaWZpZWQKIAk3IGlzIHVzZWQuIFRoZSBtaW5pbXVtIGxlbmd0aCBpcyA0LgogCkBAIC0xODEsOSArMTk4LDExIEBACiAJRmxhZ3MgYW5kIHBhcmFtZXRlcnMgdG8gYmUgcGFyc2VkLgogCiAtLXJlc29sdmUtZ2l0LWRpciA8cGF0aD46OgotCUNoZWNrIGlmIDxwYXRoPiBpcyBhIHZhbGlkIGdpdC1kaXIgb3IgYSBnaXQtZmlsZSBwb2ludGluZyB0byBhIHZhbGlkCi0JZ2l0LWRpci4gSWYgPHBhdGg+IGlzIGEgdmFsaWQgZ2l0LWRpciB0aGUgcmVzb2x2ZWQgcGF0aCB0byBnaXQtZGlyIHdpbGwKLQliZSBwcmludGVkLgorCUNoZWNrIGlmIDxwYXRoPiBpcyBhIHZhbGlkIHJlcG9zaXRvcnkgb3IgYSBnaXRmaWxlIHRoYXQKKwlwb2ludHMgYXQgYSB2YWxpZCByZXBvc2l0b3J5LCBhbmQgcHJpbnQgdGhlIGxvY2F0aW9uIG9mIHRoZQorCXJlcG9zaXRvcnkuICBJZiA8cGF0aD4gaXMgYSBnaXRmaWxlIHRoZW4gdGhlIHJlc29sdmVkIHBhdGgKKwl0byB0aGUgcmVhbCByZXBvc2l0b3J5IGlzIHByaW50ZWQuCisKIAogaW5jbHVkZTo6cmV2aXNpb25zLnR4dFtdCiAKQEAgLTMwMCwxMiArMzE5LDEyIEBACiAqIFByaW50IHRoZSBjb21taXQgb2JqZWN0IG5hbWUgZnJvbSB0aGUgcmV2aXNpb24gaW4gdGhlICRSRVYgc2hlbGwgdmFyaWFibGU6CiArCiAtLS0tLS0tLS0tLS0KLSQgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAkUkVWCiskIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgJFJFVl57Y29tbWl0fQogLS0tLS0tLS0tLS0tCiArCiBUaGlzIHdpbGwgZXJyb3Igb3V0IGlmICRSRVYgaXMgZW1wdHkgb3Igbm90IGEgdmFsaWQgcmV2aXNpb24uCiAKLSogU2FtZSBhcyBhYm92ZToKKyogU2ltaWxhciB0byBhYm92ZToKICsKIC0tLS0tLS0tLS0tLQogJCBnaXQgcmV2LXBhcnNlIC0tZGVmYXVsdCBtYXN0ZXIgLS12ZXJpZnkgJFJFVgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcmV2ZXJ0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXJldmVydC50eHQKaW5kZXggNzAxNTJlOC4uZjc5YzlkOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcmV2ZXJ0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZXZlcnQudHh0CkBAIC04LDcgKzgsNyBAQAogU1lOT1BTSVMKIC0tLS0tLS0tCiBbdmVyc2VdCi0nZ2l0IHJldmVydCcgWy0tZWRpdCB8IC0tbm8tZWRpdF0gWy1uXSBbLW0gcGFyZW50LW51bWJlcl0gWy1zXSA8Y29tbWl0Pi4uLgorJ2dpdCByZXZlcnQnIFstLVtuby1dZWRpdF0gWy1uXSBbLW0gcGFyZW50LW51bWJlcl0gWy1zXSA8Y29tbWl0Pi4uLgogJ2dpdCByZXZlcnQnIC0tY29udGludWUKICdnaXQgcmV2ZXJ0JyAtLXF1aXQKICdnaXQgcmV2ZXJ0JyAtLWFib3J0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1ybS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1ybS50eHQKaW5kZXggNWQzMTg2MC4uMWQ4NzZjMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcm0udHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJtLnR4dApAQCAtMjgsNyArMjgsNyBAQAogLS0tLS0tLQogPGZpbGU+Li4uOjoKIAlGaWxlcyB0byByZW1vdmUuICBGaWxlZ2xvYnMgKGUuZy4gYCouY2ApIGNhbiBiZSBnaXZlbiB0bwotCXJlbW92ZSBhbGwgbWF0Y2hpbmcgZmlsZXMuICBJZiB5b3Ugd2FudCBnaXQgdG8gZXhwYW5kCisJcmVtb3ZlIGFsbCBtYXRjaGluZyBmaWxlcy4gIElmIHlvdSB3YW50IEdpdCB0byBleHBhbmQKIAlmaWxlIGdsb2IgY2hhcmFjdGVycywgeW91IG1heSBuZWVkIHRvIHNoZWxsLWVzY2FwZSB0aGVtLgogCUEgbGVhZGluZyBkaXJlY3RvcnkgbmFtZQogCShlLmcuIGBkaXJgIHRvIHJlbW92ZSBgZGlyL2ZpbGUxYCBhbmQgYGRpci9maWxlMmApIGNhbiBiZQpAQCAtNzQsOCArNzQsOCBAQAogCiBUaGUgPGZpbGU+IGxpc3QgZ2l2ZW4gdG8gdGhlIGNvbW1hbmQgY2FuIGJlIGV4YWN0IHBhdGhuYW1lcywKIGZpbGUgZ2xvYiBwYXR0ZXJucywgb3IgbGVhZGluZyBkaXJlY3RvcnkgbmFtZXMuICBUaGUgY29tbWFuZAotcmVtb3ZlcyBvbmx5IHRoZSBwYXRocyB0aGF0IGFyZSBrbm93biB0byBnaXQuICBHaXZpbmcgdGhlIG5hbWUgb2YKLWEgZmlsZSB0aGF0IHlvdSBoYXZlIG5vdCB0b2xkIGdpdCBhYm91dCBkb2VzIG5vdCByZW1vdmUgdGhhdCBmaWxlLgorcmVtb3ZlcyBvbmx5IHRoZSBwYXRocyB0aGF0IGFyZSBrbm93biB0byBHaXQuICBHaXZpbmcgdGhlIG5hbWUgb2YKK2EgZmlsZSB0aGF0IHlvdSBoYXZlIG5vdCB0b2xkIEdpdCBhYm91dCBkb2VzIG5vdCByZW1vdmUgdGhhdCBmaWxlLgogCiBGaWxlIGdsb2JiaW5nIG1hdGNoZXMgYWNyb3NzIGRpcmVjdG9yeSBib3VuZGFyaWVzLiAgVGh1cywgZ2l2ZW4KIHR3byBkaXJlY3RvcmllcyBgZGAgYW5kIGBkMmAsIHRoZXJlIGlzIGEgZGlmZmVyZW5jZSBiZXR3ZWVuCkBAIC0xMzQsNiArMTM0LDI1IEBACiBnaXQgZGlmZiAtLW5hbWUtb25seSAtLWRpZmYtZmlsdGVyPUQgLXogfCB4YXJncyAtMCBnaXQgcm0gLS1jYWNoZWQKIC0tLS0tLS0tLS0tLS0tLS0KIAorU3VibW9kdWxlcworfn5+fn5+fn5+fgorT25seSBzdWJtb2R1bGVzIHVzaW5nIGEgZ2l0ZmlsZSAod2hpY2ggbWVhbnMgdGhleSB3ZXJlIGNsb25lZAord2l0aCBhIEdpdCB2ZXJzaW9uIDEuNy44IG9yIG5ld2VyKSB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgd29yawordHJlZSwgYXMgdGhlaXIgcmVwb3NpdG9yeSBsaXZlcyBpbnNpZGUgdGhlIC5naXQgZGlyZWN0b3J5IG9mIHRoZQorc3VwZXJwcm9qZWN0LiBJZiBhIHN1Ym1vZHVsZSAob3Igb25lIG9mIHRob3NlIG5lc3RlZCBpbnNpZGUgaXQpCitzdGlsbCB1c2VzIGEgLmdpdCBkaXJlY3RvcnksIGBnaXQgcm1gIHdpbGwgZmFpbCAtIG5vIG1hdHRlciBpZiBmb3JjZWQKK29yIG5vdCAtIHRvIHByb3RlY3QgdGhlIHN1Ym1vZHVsZSdzIGhpc3RvcnkuCisKK0Egc3VibW9kdWxlIGlzIGNvbnNpZGVyZWQgdXAtdG8tZGF0ZSB3aGVuIHRoZSBIRUFEIGlzIHRoZSBzYW1lIGFzCityZWNvcmRlZCBpbiB0aGUgaW5kZXgsIG5vIHRyYWNrZWQgZmlsZXMgYXJlIG1vZGlmaWVkIGFuZCBubyB1bnRyYWNrZWQKK2ZpbGVzIHRoYXQgYXJlbid0IGlnbm9yZWQgYXJlIHByZXNlbnQgaW4gdGhlIHN1Ym1vZHVsZXMgd29yayB0cmVlLgorSWdub3JlZCBmaWxlcyBhcmUgZGVlbWVkIGV4cGVuZGFibGUgYW5kIHdvbid0IHN0b3AgYSBzdWJtb2R1bGUncyB3b3JrCit0cmVlIGZyb20gYmVpbmcgcmVtb3ZlZC4KKworSWYgeW91IG9ubHkgd2FudCB0byByZW1vdmUgdGhlIGxvY2FsIGNoZWNrb3V0IG9mIGEgc3VibW9kdWxlIGZyb20geW91cgord29yayB0cmVlIHdpdGhvdXQgY29tbWl0dGluZyB0aGUgcmVtb3ZhbCwKK3VzZSBsaW5rZ2l0OmdpdC1zdWJtb2R1bGVbMV0gYGRlaW5pdGAgaW5zdGVhZC4KKwogRVhBTVBMRVMKIC0tLS0tLS0tCiBgZ2l0IHJtIERvY3VtZW50YXRpb24vXCoudHh0YDo6CkBAIC0xNDEsNyArMTYwLDcgQEAKIAlgRG9jdW1lbnRhdGlvbmAgZGlyZWN0b3J5IGFuZCBhbnkgb2YgaXRzIHN1YmRpcmVjdG9yaWVzLgogKwogTm90ZSB0aGF0IHRoZSBhc3RlcmlzayBgKmAgaXMgcXVvdGVkIGZyb20gdGhlIHNoZWxsIGluIHRoaXMKLWV4YW1wbGU7IHRoaXMgbGV0cyBnaXQsIGFuZCBub3QgdGhlIHNoZWxsLCBleHBhbmQgdGhlIHBhdGhuYW1lcworZXhhbXBsZTsgdGhpcyBsZXRzIEdpdCwgYW5kIG5vdCB0aGUgc2hlbGwsIGV4cGFuZCB0aGUgcGF0aG5hbWVzCiBvZiBmaWxlcyBhbmQgc3ViZGlyZWN0b3JpZXMgdW5kZXIgdGhlIGBEb2N1bWVudGF0aW9uL2AgZGlyZWN0b3J5LgogCiBgZ2l0IHJtIC1mIGdpdC0qLnNoYDo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zZW5kLWVtYWlsLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXNlbmQtZW1haWwudHh0CmluZGV4IDMyNDExNzAuLjQwYTlhOWEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXNlbmQtZW1haWwudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXNlbmQtZW1haWwudHh0CkBAIC00NSw4ICs0NSw5IEBACiB+fn5+fn5+fn4KIAogLS1hbm5vdGF0ZTo6Ci0JUmV2aWV3IGFuZCBlZGl0IGVhY2ggcGF0Y2ggeW91J3JlIGFib3V0IHRvIHNlbmQuIFNlZSB0aGUKLQlDT05GSUdVUkFUSU9OIHNlY3Rpb24gZm9yICdzZW5kZW1haWwubXVsdGllZGl0Jy4KKwlSZXZpZXcgYW5kIGVkaXQgZWFjaCBwYXRjaCB5b3UncmUgYWJvdXQgdG8gc2VuZC4gRGVmYXVsdCBpcyB0aGUgdmFsdWUKKwlvZiAnc2VuZGVtYWlsLmFubm90YXRlJy4gU2VlIHRoZSBDT05GSUdVUkFUSU9OIHNlY3Rpb24gZm9yCisJJ3NlbmRlbWFpbC5tdWx0aWVkaXQnLgogCiAtLWJjYz08YWRkcmVzcz46OgogCVNwZWNpZnkgYSAiQmNjOiIgdmFsdWUgZm9yIGVhY2ggZW1haWwuIERlZmF1bHQgaXMgdGhlIHZhbHVlIG9mCkBAIC02Nyw3ICs2OCw3IEBACiBXaGVuICctLWNvbXBvc2UnIGlzIHVzZWQsIGdpdCBzZW5kLWVtYWlsIHdpbGwgdXNlIHRoZSBGcm9tLCBTdWJqZWN0LCBhbmQKIEluLVJlcGx5LVRvIGhlYWRlcnMgc3BlY2lmaWVkIGluIHRoZSBtZXNzYWdlLiBJZiB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZQogKHdoYXQgeW91IHR5cGUgYWZ0ZXIgdGhlIGhlYWRlcnMgYW5kIGEgYmxhbmsgbGluZSkgb25seSBjb250YWlucyBibGFuawotKG9yIEdJVDogcHJlZml4ZWQpIGxpbmVzIHRoZSBzdW1tYXJ5IHdvbid0IGJlIHNlbnQsIGJ1dCBGcm9tLCBTdWJqZWN0LAorKG9yIEdpdDogcHJlZml4ZWQpIGxpbmVzIHRoZSBzdW1tYXJ5IHdvbid0IGJlIHNlbnQsIGJ1dCBGcm9tLCBTdWJqZWN0LAogYW5kIEluLVJlcGx5LVRvIGhlYWRlcnMgd2lsbCBiZSB1c2VkIHVubGVzcyB0aGV5IGFyZSByZW1vdmVkLgogKwogTWlzc2luZyBGcm9tIG9yIEluLVJlcGx5LVRvIGhlYWRlcnMgd2lsbCBiZSBwcm9tcHRlZCBmb3IuCkBAIC0xMjYsNiArMTI3LDEwIEBACiArCiBOb3RlIHRoYXQgbm8gYXR0ZW1wdHMgd2hhdHNvZXZlciBhcmUgbWFkZSB0byB2YWxpZGF0ZSB0aGUgZW5jb2RpbmcuCiAKKy0tY29tcG9zZS1lbmNvZGluZz08ZW5jb2Rpbmc+OjoKKwlTcGVjaWZ5IGVuY29kaW5nIG9mIGNvbXBvc2UgbWVzc2FnZS4gRGVmYXVsdCBpcyB0aGUgdmFsdWUgb2YgdGhlCisJJ3NlbmRlbWFpbC5jb21wb3NlZW5jb2RpbmcnOyBpZiB0aGF0IGlzIHVuc3BlY2lmaWVkLCBVVEYtOCBpcyBhc3N1bWVkLgorCiAKIFNlbmRpbmcKIH5+fn5+fn4KQEAgLTE2MCw4ICsxNjUsOCBAQAogRnVydGhlcm1vcmUsIHBhc3N3b3JkcyBuZWVkIG5vdCBiZSBzcGVjaWZpZWQgaW4gY29uZmlndXJhdGlvbiBmaWxlcwogb3Igb24gdGhlIGNvbW1hbmQgbGluZS4gSWYgYSB1c2VybmFtZSBoYXMgYmVlbiBzcGVjaWZpZWQgKHdpdGgKICctLXNtdHAtdXNlcicgb3IgYSAnc2VuZGVtYWlsLnNtdHB1c2VyJyksIGJ1dCBubyBwYXNzd29yZCBoYXMgYmVlbgotc3BlY2lmaWVkICh3aXRoICctLXNtdHAtcGFzcycgb3IgJ3NlbmRlbWFpbC5zbXRwcGFzcycpLCB0aGVuIHRoZQotdXNlciBpcyBwcm9tcHRlZCBmb3IgYSBwYXNzd29yZCB3aGlsZSB0aGUgaW5wdXQgaXMgbWFza2VkIGZvciBwcml2YWN5Lgorc3BlY2lmaWVkICh3aXRoICctLXNtdHAtcGFzcycgb3IgJ3NlbmRlbWFpbC5zbXRwcGFzcycpLCB0aGVuCithIHBhc3N3b3JkIGlzIG9idGFpbmVkIHVzaW5nICdnaXQtY3JlZGVudGlhbCcuCiAKIC0tc210cC1zZXJ2ZXI9PGhvc3Q+OjoKIAlJZiBzZXQsIHNwZWNpZmllcyB0aGUgb3V0Z29pbmcgU01UUCBzZXJ2ZXIgdG8gdXNlIChlLmcuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zZW5kLXBhY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc2VuZC1wYWNrLnR4dAppbmRleCBiZDNlYWE2Li5kYzNhNTY4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zZW5kLXBhY2sudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXNlbmQtcGFjay50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdC1zZW5kLXBhY2sgLSBQdXNoIG9iamVjdHMgb3ZlciBnaXQgcHJvdG9jb2wgdG8gYW5vdGhlciByZXBvc2l0b3J5CitnaXQtc2VuZC1wYWNrIC0gUHVzaCBvYmplY3RzIG92ZXIgR2l0IHByb3RvY29sIHRvIGFub3RoZXIgcmVwb3NpdG9yeQogCiAKIFNZTk9QU0lTCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zaC1zZXR1cC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaC1zZXR1cC50eHQKaW5kZXggNWU1ZjFjOC4uNWQ3MDlkMCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc2gtc2V0dXAudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXNoLXNldHVwLnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0LXNoLXNldHVwIC0gQ29tbW9uIGdpdCBzaGVsbCBzY3JpcHQgc2V0dXAgY29kZQorZ2l0LXNoLXNldHVwIC0gQ29tbW9uIEdpdCBzaGVsbCBzY3JpcHQgc2V0dXAgY29kZQogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTE5LDcgKzE5LDcgQEAKIAogVGhlICdnaXQgc2gtc2V0dXAnIHNjcmlwdGxldCBpcyBkZXNpZ25lZCB0byBiZSBzb3VyY2VkICh1c2luZwogYC5gKSBieSBvdGhlciBzaGVsbCBzY3JpcHRzIHRvIHNldCB1cCBzb21lIHZhcmlhYmxlcyBwb2ludGluZyBhdAotdGhlIG5vcm1hbCBnaXQgZGlyZWN0b3JpZXMgYW5kIGEgZmV3IGhlbHBlciBzaGVsbCBmdW5jdGlvbnMuCit0aGUgbm9ybWFsIEdpdCBkaXJlY3RvcmllcyBhbmQgYSBmZXcgaGVscGVyIHNoZWxsIGZ1bmN0aW9ucy4KIAogQmVmb3JlIHNvdXJjaW5nIGl0LCB5b3VyIHNjcmlwdCBzaG91bGQgc2V0IHVwIGEgZmV3IHZhcmlhYmxlczsKIGBVU0FHRWAgKGFuZCBgTE9OR19VU0FHRWAsIGlmIGFueSkgaXMgdXNlZCB0byBkZWZpbmUgbWVzc2FnZQpAQCAtODIsNiArODIsMTIgQEAKIAlvdXRwdXRzIGNvZGUgZm9yIHVzZSB3aXRoIGV2YWwgdG8gc2V0IHRoZSBHSVRfQVVUSE9SX05BTUUsCiAJR0lUX0FVVEhPUl9FTUFJTCBhbmQgR0lUX0FVVEhPUl9EQVRFIHZhcmlhYmxlcyBmb3IgYSBnaXZlbiBjb21taXQuCiAKK2NyZWF0ZV92aXJ0dWFsX2Jhc2U6OgorCW1vZGlmaWVzIHRoZSBmaXJzdCBmaWxlIHNvIG9ubHkgbGluZXMgaW4gY29tbW9uIHdpdGggdGhlCisJc2Vjb25kIGZpbGUgcmVtYWluLiBJZiB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgY29tbW9uIG1hdGVyaWFsLAorCXRoZW4gdGhlIGZpcnN0IGZpbGUgaXMgbGVmdCBlbXB0eS4gVGhlIHJlc3VsdCBpcyBzdWl0YWJsZQorCWFzIGEgdmlydHVhbCBiYXNlIGlucHV0IGZvciBhIDMtd2F5IG1lcmdlLgorCiBHSVQKIC0tLQogUGFydCBvZiB0aGUgbGlua2dpdDpnaXRbMV0gc3VpdGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXNoZWxsLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXNoZWxsLnR4dAppbmRleCA5YjkyNTA2Li5jMzUwNTFiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zaGVsbC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtc2hlbGwudHh0CkBAIC05LDI1ICs5LDgxIEBACiBTWU5PUFNJUwogLS0tLS0tLS0KIFt2ZXJzZV0KLSdnaXQgc2hlbGwnIFstYyA8Y29tbWFuZD4gPGFyZ3VtZW50Pl0KKydjaHNoJyAtcyAkKGNvbW1hbmQgLXYgZ2l0LXNoZWxsKSA8dXNlcj4KKydnaXQgY2xvbmUnIDx1c2VyPmBAbG9jYWxob3N0Oi9wYXRoL3RvL3JlcG8uZ2l0YAorJ3NzaCcgPHVzZXI+YEBsb2NhbGhvc3RgCiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQogCi1BIGxvZ2luIHNoZWxsIGZvciBTU0ggYWNjb3VudHMgdG8gcHJvdmlkZSByZXN0cmljdGVkIEdpdCBhY2Nlc3MuIFdoZW4KLSctYycgaXMgZ2l2ZW4sIHRoZSBwcm9ncmFtIGV4ZWN1dGVzIDxjb21tYW5kPiBub24taW50ZXJhY3RpdmVseTsKLTxjb21tYW5kPiBjYW4gYmUgb25lIG9mICdnaXQgcmVjZWl2ZS1wYWNrJywgJ2dpdCB1cGxvYWQtcGFjaycsICdnaXQKLXVwbG9hZC1hcmNoaXZlJywgJ2N2cyBzZXJ2ZXInLCBvciBhIGNvbW1hbmQgaW4gQ09NTUFORF9ESVIuIFRoZSBzaGVsbAotaXMgc3RhcnRlZCBpbiBpbnRlcmFjdGl2ZSBtb2RlIHdoZW4gbm8gYXJndW1lbnRzIGFyZSBnaXZlbjsgaW4gdGhpcwotY2FzZSwgQ09NTUFORF9ESVIgbXVzdCBleGlzdCwgYW5kIGFueSBvZiB0aGUgZXhlY3V0YWJsZXMgaW4gaXQgY2FuIGJlCi1pbnZva2VkLgorVGhpcyBpcyBhIGxvZ2luIHNoZWxsIGZvciBTU0ggYWNjb3VudHMgdG8gcHJvdmlkZSByZXN0cmljdGVkIEdpdCBhY2Nlc3MuCitJdCBwZXJtaXRzIGV4ZWN1dGlvbiBvbmx5IG9mIHNlcnZlci1zaWRlIEdpdCBjb21tYW5kcyBpbXBsZW1lbnRpbmcgdGhlCitwdWxsL3B1c2ggZnVuY3Rpb25hbGl0eSwgcGx1cyBjdXN0b20gY29tbWFuZHMgcHJlc2VudCBpbiBhIHN1YmRpcmVjdG9yeQorbmFtZWQgYGdpdC1zaGVsbC1jb21tYW5kc2AgaW4gdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeS4KIAotJ2N2cyBzZXJ2ZXInIGlzIGEgc3BlY2lhbCBjb21tYW5kIHdoaWNoIGV4ZWN1dGVzIGdpdC1jdnNzZXJ2ZXIuCitDT01NQU5EUworLS0tLS0tLS0KIAotQ09NTUFORF9ESVIgaXMgdGhlIHBhdGggIiRIT01FL2dpdC1zaGVsbC1jb21tYW5kcyIuIFRoZSB1c2VyIG11c3QgaGF2ZQotcmVhZCBhbmQgZXhlY3V0ZSBwZXJtaXNzaW9ucyB0byB0aGUgZGlyZWN0b3J5IGluIG9yZGVyIHRvIGV4ZWN1dGUgdGhlCi1wcm9ncmFtcyBpbiBpdC4gVGhlIHByb2dyYW1zIGFyZSBleGVjdXRlZCB3aXRoIGEgY3dkIG9mICRIT01FLCBhbmQKLTxhcmd1bWVudD4gaXMgcGFyc2VkIGFzIGEgY29tbWFuZC1saW5lIHN0cmluZy4KKydnaXQgc2hlbGwnIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBhZnRlciB0aGUgJy1jJyBvcHRpb246CisKKydnaXQgcmVjZWl2ZS1wYWNrIDxhcmd1bWVudD4nOjoKKydnaXQgdXBsb2FkLXBhY2sgPGFyZ3VtZW50Pic6OgorJ2dpdCB1cGxvYWQtYXJjaGl2ZSA8YXJndW1lbnQ+Jzo6CisJQ2FsbCB0aGUgY29ycmVzcG9uZGluZyBzZXJ2ZXItc2lkZSBjb21tYW5kIHRvIHN1cHBvcnQKKwl0aGUgY2xpZW50J3MgJ2dpdCBwdXNoJywgJ2dpdCBmZXRjaCcsIG9yICdnaXQgYXJjaGl2ZSAtLXJlbW90ZScKKwlyZXF1ZXN0LgorJ2N2cyBzZXJ2ZXInOjoKKwlJbWl0YXRlIGEgQ1ZTIHNlcnZlci4gIFNlZSBsaW5rZ2l0OmdpdC1jdnNzZXJ2ZXJbMV0uCisKK0lmIGEgYH4vZ2l0LXNoZWxsLWNvbW1hbmRzYCBkaXJlY3RvcnkgaXMgcHJlc2VudCwgJ2dpdCBzaGVsbCcgd2lsbAorYWxzbyBoYW5kbGUgb3RoZXIsIGN1c3RvbSBjb21tYW5kcyBieSBydW5uaW5nCisiYGdpdC1zaGVsbC1jb21tYW5kcy88Y29tbWFuZD4gPGFyZ3VtZW50cz5gIiBmcm9tIHRoZSB1c2VyJ3MgaG9tZQorZGlyZWN0b3J5LgorCitJTlRFUkFDVElWRSBVU0UKKy0tLS0tLS0tLS0tLS0tLQorCitCeSBkZWZhdWx0LCB0aGUgY29tbWFuZHMgYWJvdmUgY2FuIGJlIGV4ZWN1dGVkIG9ubHkgd2l0aCB0aGUgJy1jJworb3B0aW9uOyB0aGUgc2hlbGwgaXMgbm90IGludGVyYWN0aXZlLgorCitJZiBhIGB+L2dpdC1zaGVsbC1jb21tYW5kc2AgZGlyZWN0b3J5IGlzIHByZXNlbnQsICdnaXQgc2hlbGwnCitjYW4gYWxzbyBiZSBydW4gaW50ZXJhY3RpdmVseSAod2l0aCBubyBhcmd1bWVudHMpLiAgSWYgYSBgaGVscGAKK2NvbW1hbmQgaXMgcHJlc2VudCBpbiB0aGUgYGdpdC1zaGVsbC1jb21tYW5kc2AgZGlyZWN0b3J5LCBpdCBpcworcnVuIHRvIHByb3ZpZGUgdGhlIHVzZXIgd2l0aCBhbiBvdmVydmlldyBvZiBhbGxvd2VkIGFjdGlvbnMuICBUaGVuIGEKKyJnaXQ+ICIgcHJvbXB0IGlzIHByZXNlbnRlZCBhdCB3aGljaCBvbmUgY2FuIGVudGVyIGFueSBvZiB0aGUKK2NvbW1hbmRzIGZyb20gdGhlIGBnaXQtc2hlbGwtY29tbWFuZHNgIGRpcmVjdG9yeSwgb3IgYGV4aXRgIHRvIGNsb3NlCit0aGUgY29ubmVjdGlvbi4KKworR2VuZXJhbGx5IHRoaXMgbW9kZSBpcyB1c2VkIGFzIGFuIGFkbWluaXN0cmF0aXZlIGludGVyZmFjZSB0byBhbGxvdwordXNlcnMgdG8gbGlzdCByZXBvc2l0b3JpZXMgdGhleSBoYXZlIGFjY2VzcyB0bywgY3JlYXRlLCBkZWxldGUsIG9yCityZW5hbWUgcmVwb3NpdG9yaWVzLCBvciBjaGFuZ2UgcmVwb3NpdG9yeSBkZXNjcmlwdGlvbnMgYW5kCitwZXJtaXNzaW9ucy4KKworSWYgYSBgbm8taW50ZXJhY3RpdmUtbG9naW5gIGNvbW1hbmQgZXhpc3RzLCB0aGVuIGl0IGlzIHJ1biBhbmQgdGhlCitpbnRlcmFjdGl2ZSBzaGVsbCBpcyBhYm9ydGVkLgorCitFWEFNUExFCistLS0tLS0tCisKK1RvIGRpc2FibGUgaW50ZXJhY3RpdmUgbG9naW5zLCBkaXNwbGF5aW5nIGEgZ3JlZXRpbmcgaW5zdGVhZDoKKysKKy0tLS0tLS0tLS0tLS0tLS0KKyQgY2hzaCAtcyAvdXNyL2Jpbi9naXQtc2hlbGwKKyQgbWtkaXIgJEhPTUUvZ2l0LXNoZWxsLWNvbW1hbmRzCiskIGNhdCA+JEhPTUUvZ2l0LXNoZWxsLWNvbW1hbmRzL25vLWludGVyYWN0aXZlLWxvZ2luIDw8XEVPRgorIyEvYmluL3NoCitwcmludGYgJyVzXG4nICJIaSAkVVNFUiEgWW91J3ZlIHN1Y2Nlc3NmdWxseSBhdXRoZW50aWNhdGVkLCBidXQgSSBkbyBub3QiCitwcmludGYgJyVzXG4nICJwcm92aWRlIGludGVyYWN0aXZlIHNoZWxsIGFjY2Vzcy4iCitleGl0IDEyOAorRU9GCiskIGNobW9kICt4ICRIT01FL2dpdC1zaGVsbC1jb21tYW5kcy9uby1pbnRlcmFjdGl2ZS1sb2dpbgorLS0tLS0tLS0tLS0tLS0tLQorCitTRUUgQUxTTworLS0tLS0tLS0KK3NzaCgxKSwKK2xpbmtnaXQ6Z2l0LWRhZW1vblsxXSwKK2NvbnRyaWIvZ2l0LXNoZWxsLWNvbW1hbmRzL1JFQURNRQogCiBHSVQKIC0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtc2hvcnRsb2cudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc2hvcnRsb2cudHh0CmluZGV4IDAxZDg0MTcuLjMxYWY3ZjIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXNob3J0bG9nLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaG9ydGxvZy50eHQKQEAgLTgsMTQgKzgsMTMgQEAKIFNZTk9QU0lTCiAtLS0tLS0tLQogW3ZlcnNlXQotZ2l0IGxvZyAtLXByZXR0eT1zaG9ydCB8ICdnaXQgc2hvcnRsb2cnIFstaF0gWy1uXSBbLXNdIFstZV0gWy13XQotJ2dpdCBzaG9ydGxvZycgWy1ufC0tbnVtYmVyZWRdIFstc3wtLXN1bW1hcnldIFstZXwtLWVtYWlsXSBbLXdbPHdpZHRoPlssPGluZGVudDE+Wyw8aW5kZW50Mj5dXV1dIDxjb21taXQ+Li4uCitnaXQgbG9nIC0tcHJldHR5PXNob3J0IHwgJ2dpdCBzaG9ydGxvZycgWzxvcHRpb25zPl0KKydnaXQgc2hvcnRsb2cnIFs8b3B0aW9ucz5dIFs8cmV2aXNpb24gcmFuZ2U+XSBbW1wtLV0gPHBhdGg+Li4uXQogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KIFN1bW1hcml6ZXMgJ2dpdCBsb2cnIG91dHB1dCBpbiBhIGZvcm1hdCBzdWl0YWJsZSBmb3IgaW5jbHVzaW9uCi1pbiByZWxlYXNlIGFubm91bmNlbWVudHMuIEVhY2ggY29tbWl0IHdpbGwgYmUgZ3JvdXBlZCBieSBhdXRob3IgYW5kCi10aGUgZmlyc3QgbGluZSBvZiB0aGUgY29tbWl0IG1lc3NhZ2Ugd2lsbCBiZSBzaG93bi4KK2luIHJlbGVhc2UgYW5ub3VuY2VtZW50cy4gRWFjaCBjb21taXQgd2lsbCBiZSBncm91cGVkIGJ5IGF1dGhvciBhbmQgdGl0bGUuCiAKIEFkZGl0aW9uYWxseSwgIltQQVRDSF0iIHdpbGwgYmUgc3RyaXBwZWQgZnJvbSB0aGUgY29tbWl0IGRlc2NyaXB0aW9uLgogCkBAIC0yNywxMCArMjYsNiBAQAogT1BUSU9OUwogLS0tLS0tLQogCi0taDo6Ci0tLWhlbHA6OgotCVByaW50IGEgc2hvcnQgdXNhZ2UgbWVzc2FnZSBhbmQgZXhpdC4KLQogLW46OgogLS1udW1iZXJlZDo6CiAJU29ydCBvdXRwdXQgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgY29tbWl0cyBwZXIgYXV0aG9yIGluc3RlYWQKQEAgLTU3LDcgKzUyLDI1IEBACiAJbGluZSBvZiBlYWNoIGVudHJ5IGlzIGluZGVudGVkIGJ5IGBpbmRlbnQxYCBzcGFjZXMsIGFuZCB0aGUgc2Vjb25kCiAJYW5kIHN1YnNlcXVlbnQgbGluZXMgYXJlIGluZGVudGVkIGJ5IGBpbmRlbnQyYCBzcGFjZXMuIGB3aWR0aGAsCiAJYGluZGVudDFgLCBhbmQgYGluZGVudDJgIGRlZmF1bHQgdG8gNzYsIDYgYW5kIDkgcmVzcGVjdGl2ZWx5LgorKworSWYgd2lkdGggaXMgYDBgICh6ZXJvKSB0aGVuIGluZGVudCB0aGUgbGluZXMgb2YgdGhlIG91dHB1dCB3aXRob3V0IHdyYXBwaW5nCit0aGVtLgogCis8cmV2aXNpb24gcmFuZ2U+OjoKKwlTaG93IG9ubHkgY29tbWl0cyBpbiB0aGUgc3BlY2lmaWVkIHJldmlzaW9uIHJhbmdlLiAgV2hlbiBubworCTxyZXZpc2lvbiByYW5nZT4gaXMgc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0byBgSEVBRGAgKGkuZS4gdGhlCisJd2hvbGUgaGlzdG9yeSBsZWFkaW5nIHRvIHRoZSBjdXJyZW50IGNvbW1pdCkuICBgb3JpZ2luLi5IRUFEYAorCXNwZWNpZmllcyBhbGwgdGhlIGNvbW1pdHMgcmVhY2hhYmxlIGZyb20gdGhlIGN1cnJlbnQgY29tbWl0CisJKGkuZS4gYEhFQURgKSwgYnV0IG5vdCBmcm9tIGBvcmlnaW5gLiBGb3IgYSBjb21wbGV0ZSBsaXN0IG9mCisJd2F5cyB0byBzcGVsbCA8cmV2aXNpb24gcmFuZ2U+LCBzZWUgdGhlICJTcGVjaWZ5aW5nIFJhbmdlcyIKKwlzZWN0aW9uIG9mIGxpbmtnaXQ6Z2l0cmV2aXNpb25zWzddLgorCitbXC0tXSA8cGF0aD4uLi46OgorCUNvbnNpZGVyIG9ubHkgY29tbWl0cyB0aGF0IGFyZSBlbm91Z2ggdG8gZXhwbGFpbiBob3cgdGhlIGZpbGVzCisJdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIHBhdGhzIGNhbWUgdG8gYmUuCisrCitQYXRocyBtYXkgbmVlZCB0byBiZSBwcmVmaXhlZCB3aXRoICJcLS0gIiB0byBzZXBhcmF0ZSB0aGVtIGZyb20KK29wdGlvbnMgb3IgdGhlIHJldmlzaW9uIHJhbmdlLCB3aGVuIGNvbmZ1c2lvbiBhcmlzZXMuCiAKIE1BUFBJTkcgQVVUSE9SUwogLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LWJyYW5jaC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LWJyYW5jaC50eHQKaW5kZXggYThlNzdiNS4uYTUxNTY0OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc2hvdy1icmFuY2gudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXNob3ctYnJhbmNoLnR4dApAQCAtMzEsNyArMzEsNyBAQAogT1BUSU9OUwogLS0tLS0tLQogPHJldj46OgotCUFyYml0cmFyeSBleHRlbmRlZCBTSEExIGV4cHJlc3Npb24gKHNlZSBsaW5rZ2l0OmdpdHJldmlzaW9uc1s3XSkKKwlBcmJpdHJhcnkgZXh0ZW5kZWQgU0hBLTEgZXhwcmVzc2lvbiAoc2VlIGxpbmtnaXQ6Z2l0cmV2aXNpb25zWzddKQogCXRoYXQgdHlwaWNhbGx5IG5hbWVzIGEgYnJhbmNoIGhlYWQgb3IgYSB0YWcuCiAKIDxnbG9iPjo6CkBAIC0xNDIsNyArMTQyLDcgQEAKIGJyYW5jaCwgdGhlIEktdGggaW5kZW50YXRpb24gY2hhcmFjdGVyIHNob3dzIGEgYCtgIHNpZ247CiBvdGhlcndpc2UgaXQgc2hvd3MgYSBzcGFjZS4gIE1lcmdlIGNvbW1pdHMgYXJlIGRlbm90ZWQgYnkKIGEgYC1gIHNpZ24uICBFYWNoIGNvbW1pdCBzaG93cyBhIHNob3J0IG5hbWUgdGhhdAotY2FuIGJlIHVzZWQgYXMgYW4gZXh0ZW5kZWQgU0hBMSB0byBuYW1lIHRoYXQgY29tbWl0LgorY2FuIGJlIHVzZWQgYXMgYW4gZXh0ZW5kZWQgU0hBLTEgdG8gbmFtZSB0aGF0IGNvbW1pdC4KIAogVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRocmVlIGJyYW5jaGVzLCAibWFzdGVyIiwgImZpeGVzIgogYW5kICJtaGYiOgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtc2hvdy1pbmRleC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LWluZGV4LnR4dAppbmRleCAyZGNiYmIyLi5mYmRjOGFkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LWluZGV4LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LWluZGV4LnR4dApAQCAtMTQsMTIgKzE0LDEyIEBACiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQotUmVhZHMgZ2l2ZW4gaWR4IGZpbGUgZm9yIHBhY2tlZCBnaXQgYXJjaGl2ZSBjcmVhdGVkIHdpdGgKK1JlYWRzIGdpdmVuIGlkeCBmaWxlIGZvciBwYWNrZWQgR2l0IGFyY2hpdmUgY3JlYXRlZCB3aXRoCiAnZ2l0IHBhY2stb2JqZWN0cycgY29tbWFuZCwgYW5kIGR1bXBzIGl0cyBjb250ZW50cy4KIAogVGhlIGluZm9ybWF0aW9uIGl0IG91dHB1dHMgaXMgc3Vic2V0IG9mIHdoYXQgeW91IGNhbiBnZXQgZnJvbQogJ2dpdCB2ZXJpZnktcGFjayAtdic7IHRoaXMgY29tbWFuZCBvbmx5IHNob3dzIHRoZSBwYWNrZmlsZQotb2Zmc2V0IGFuZCBTSEExIG9mIGVhY2ggb2JqZWN0Lgorb2Zmc2V0IGFuZCBTSEEtMSBvZiBlYWNoIG9iamVjdC4KIAogR0lUCiAtLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXNob3ctcmVmLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXNob3ctcmVmLnR4dAppbmRleCA1ZGJjZDQ3Li5kZTRkMzUyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LXJlZi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtc2hvdy1yZWYudHh0CkBAIC01MCw4ICs1MCw4IEBACiAtczo6CiAtLWhhc2hbPTxuPl06OgogCi0JT25seSBzaG93IHRoZSBTSEExIGhhc2gsIG5vdCB0aGUgcmVmZXJlbmNlIG5hbWUuIFdoZW4gY29tYmluZWQgd2l0aAotCS0tZGVyZWZlcmVuY2UgdGhlIGRlcmVmZXJlbmNlZCB0YWcgd2lsbCBzdGlsbCBiZSBzaG93biBhZnRlciB0aGUgU0hBMS4KKwlPbmx5IHNob3cgdGhlIFNIQS0xIGhhc2gsIG5vdCB0aGUgcmVmZXJlbmNlIG5hbWUuIFdoZW4gY29tYmluZWQgd2l0aAorCS0tZGVyZWZlcmVuY2UgdGhlIGRlcmVmZXJlbmNlZCB0YWcgd2lsbCBzdGlsbCBiZSBzaG93biBhZnRlciB0aGUgU0hBLTEuCiAKIC0tdmVyaWZ5OjoKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtc3Rhc2gudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc3Rhc2gudHh0CmluZGV4IDBhYTRlMjAuLjcxMWZmZTEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXN0YXNoLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1zdGFzaC50eHQKQEAgLTE0NCw3ICsxNDQsNyBAQAogCiAJUmVtb3ZlIGEgc2luZ2xlIHN0YXNoZWQgc3RhdGUgZnJvbSB0aGUgc3Rhc2ggbGlzdC4gV2hlbiBubyBgPHN0YXNoPmAKIAlpcyBnaXZlbiwgaXQgcmVtb3ZlcyB0aGUgbGF0ZXN0IG9uZS4gaS5lLiBgc3Rhc2hAezB9YCwgb3RoZXJ3aXNlCi0JYDxzdGFzaD5gIG11c3QgYSB2YWxpZCBzdGFzaCBsb2cgcmVmZXJlbmNlIG9mIHRoZSBmb3JtCisJYDxzdGFzaD5gIG11c3QgYmUgYSB2YWxpZCBzdGFzaCBsb2cgcmVmZXJlbmNlIG9mIHRoZSBmb3JtCiAJYHN0YXNoQHs8cmV2aXNpb24+fWAuCiAKIGNyZWF0ZTo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zdGF0dXMudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc3RhdHVzLnR4dAppbmRleCA2N2U1ZjUzLi45MDQ2ZGY5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zdGF0dXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXN0YXR1cy50eHQKQEAgLTE2LDcgKzE2LDcgQEAKIERpc3BsYXlzIHBhdGhzIHRoYXQgaGF2ZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBpbmRleCBmaWxlIGFuZCB0aGUKIGN1cnJlbnQgSEVBRCBjb21taXQsIHBhdGhzIHRoYXQgaGF2ZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB3b3JraW5nCiB0cmVlIGFuZCB0aGUgaW5kZXggZmlsZSwgYW5kIHBhdGhzIGluIHRoZSB3b3JraW5nIHRyZWUgdGhhdCBhcmUgbm90Ci10cmFja2VkIGJ5IGdpdCAoYW5kIGFyZSBub3QgaWdub3JlZCBieSBsaW5rZ2l0OmdpdGlnbm9yZVs1XSkuIFRoZSBmaXJzdAordHJhY2tlZCBieSBHaXQgKGFuZCBhcmUgbm90IGlnbm9yZWQgYnkgbGlua2dpdDpnaXRpZ25vcmVbNV0pLiBUaGUgZmlyc3QKIGFyZSB3aGF0IHlvdSBfd291bGRfIGNvbW1pdCBieSBydW5uaW5nIGBnaXQgY29tbWl0YDsgdGhlIHNlY29uZCBhbmQKIHRoaXJkIGFyZSB3aGF0IHlvdSBfY291bGRfIGNvbW1pdCBieSBydW5uaW5nICdnaXQgYWRkJyBiZWZvcmUgcnVubmluZwogYGdpdCBjb21taXRgLgpAQCAtMzUsMjMgKzM1LDMyIEBACiAtLXBvcmNlbGFpbjo6CiAJR2l2ZSB0aGUgb3V0cHV0IGluIGFuIGVhc3ktdG8tcGFyc2UgZm9ybWF0IGZvciBzY3JpcHRzLgogCVRoaXMgaXMgc2ltaWxhciB0byB0aGUgc2hvcnQgb3V0cHV0LCBidXQgd2lsbCByZW1haW4gc3RhYmxlCi0JYWNyb3NzIGdpdCB2ZXJzaW9ucyBhbmQgcmVnYXJkbGVzcyBvZiB1c2VyIGNvbmZpZ3VyYXRpb24uIFNlZQorCWFjcm9zcyBHaXQgdmVyc2lvbnMgYW5kIHJlZ2FyZGxlc3Mgb2YgdXNlciBjb25maWd1cmF0aW9uLiBTZWUKIAliZWxvdyBmb3IgZGV0YWlscy4KIAorLS1sb25nOjoKKwlHaXZlIHRoZSBvdXRwdXQgaW4gdGhlIGxvbmctZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0LgorCiAtdVs8bW9kZT5dOjoKIC0tdW50cmFja2VkLWZpbGVzWz08bW9kZT5dOjoKIAlTaG93IHVudHJhY2tlZCBmaWxlcy4KICsKIFRoZSBtb2RlIHBhcmFtZXRlciBpcyBvcHRpb25hbCAoZGVmYXVsdHMgdG8gJ2FsbCcpLCBhbmQgaXMgdXNlZCB0bwotc3BlY2lmeSB0aGUgaGFuZGxpbmcgb2YgdW50cmFja2VkIGZpbGVzOyB3aGVuIC11IGlzIG5vdCB1c2VkLCB0aGUKLWRlZmF1bHQgaXMgJ25vcm1hbCcsIGkuZS4gc2hvdyB1bnRyYWNrZWQgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLgorc3BlY2lmeSB0aGUgaGFuZGxpbmcgb2YgdW50cmFja2VkIGZpbGVzLgogKwogVGhlIHBvc3NpYmxlIG9wdGlvbnMgYXJlOgogKwotCS0gJ25vJyAgICAgLSBTaG93IG5vIHVudHJhY2tlZCBmaWxlcwotCS0gJ25vcm1hbCcgLSBTaG93cyB1bnRyYWNrZWQgZmlsZXMgYW5kIGRpcmVjdG9yaWVzCisJLSAnbm8nICAgICAtIFNob3cgbm8gdW50cmFja2VkIGZpbGVzLgorCS0gJ25vcm1hbCcgLSBTaG93cyB1bnRyYWNrZWQgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLgogCS0gJ2FsbCcgICAgLSBBbHNvIHNob3dzIGluZGl2aWR1YWwgZmlsZXMgaW4gdW50cmFja2VkIGRpcmVjdG9yaWVzLgogKworV2hlbiBgLXVgIG9wdGlvbiBpcyBub3QgdXNlZCwgdW50cmFja2VkIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBhcmUKK3Nob3duIChpLmUuIHRoZSBzYW1lIGFzIHNwZWNpZnlpbmcgYG5vcm1hbGApLCB0byBoZWxwIHlvdSBhdm9pZAorZm9yZ2V0dGluZyB0byBhZGQgbmV3bHkgY3JlYXRlZCBmaWxlcy4gIEJlY2F1c2UgaXQgdGFrZXMgZXh0cmEgd29yawordG8gZmluZCB1bnRyYWNrZWQgZmlsZXMgaW4gdGhlIGZpbGVzeXN0ZW0sIHRoaXMgbW9kZSBtYXkgdGFrZSBzb21lCit0aW1lIGluIGEgbGFyZ2Ugd29ya2luZyB0cmVlLiAgWW91IGNhbiB1c2UgYG5vYCB0byBoYXZlIGBnaXQgc3RhdHVzYAorcmV0dXJuIG1vcmUgcXVpY2tseSB3aXRob3V0IHNob3dpbmcgdW50cmFja2VkIGZpbGVzLgorKwogVGhlIGRlZmF1bHQgY2FuIGJlIGNoYW5nZWQgdXNpbmcgdGhlIHN0YXR1cy5zaG93VW50cmFja2VkRmlsZXMKIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgZG9jdW1lbnRlZCBpbiBsaW5rZ2l0OmdpdC1jb25maWdbMV0uCiAKQEAgLTkzLDcgKzEwMiw3IEBACiB2ZXJib3NlIGFuZCBkZXNjcmlwdGl2ZS4gIEl0cyBjb250ZW50cyBhbmQgZm9ybWF0IGFyZSBzdWJqZWN0IHRvIGNoYW5nZQogYXQgYW55IHRpbWUuCiAKLVRoZSBwYXRocyBtZW50aW9uZWQgaW4gdGhlIG91dHB1dCwgdW5saWtlIG1hbnkgb3RoZXIgZ2l0IGNvbW1hbmRzLCBhcmUKK1RoZSBwYXRocyBtZW50aW9uZWQgaW4gdGhlIG91dHB1dCwgdW5saWtlIG1hbnkgb3RoZXIgR2l0IGNvbW1hbmRzLCBhcmUKIG1hZGUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlmIHlvdSBhcmUgd29ya2luZyBpbiBhCiBzdWJkaXJlY3RvcnkgKHRoaXMgaXMgb24gcHVycG9zZSwgdG8gaGVscCBjdXR0aW5nIGFuZCBwYXN0aW5nKS4gU2VlCiB0aGUgc3RhdHVzLnJlbGF0aXZlUGF0aHMgY29uZmlnIG9wdGlvbiBiZWxvdy4KQEAgLTE2NSw3ICsxNzQsNyBAQAogfn5+fn5+fn5+fn5+fn5+fgogCiBUaGUgcG9yY2VsYWluIGZvcm1hdCBpcyBzaW1pbGFyIHRvIHRoZSBzaG9ydCBmb3JtYXQsIGJ1dCBpcyBndWFyYW50ZWVkCi1ub3QgdG8gY2hhbmdlIGluIGEgYmFja3dhcmRzLWluY29tcGF0aWJsZSB3YXkgYmV0d2VlbiBnaXQgdmVyc2lvbnMgb3IKK25vdCB0byBjaGFuZ2UgaW4gYSBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIHdheSBiZXR3ZWVuIEdpdCB2ZXJzaW9ucyBvcgogYmFzZWQgb24gdXNlciBjb25maWd1cmF0aW9uLiBUaGlzIG1ha2VzIGl0IGlkZWFsIGZvciBwYXJzaW5nIGJ5IHNjcmlwdHMuCiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHNob3J0IGZvcm1hdCBhYm92ZSBhbHNvIGRlc2NyaWJlcyB0aGUgcG9yY2VsYWluCiBmb3JtYXQsIHdpdGggYSBmZXcgZXhjZXB0aW9uczoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXN0cmlwc3BhY2UudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc3RyaXBzcGFjZS50eHQKaW5kZXggYTgwZDk0Ni4uYzg3YmZjYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc3RyaXBzcGFjZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtc3RyaXBzcGFjZS50eHQKQEAgLTE0LDcgKzE0LDcgQEAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQogCi1DbGVhbiB0aGUgaW5wdXQgaW4gdGhlIG1hbm5lciB1c2VkIGJ5ICdnaXQnIGZvciB0ZXh0IHN1Y2ggYXMgY29tbWl0CitDbGVhbiB0aGUgaW5wdXQgaW4gdGhlIG1hbm5lciB1c2VkIGJ5IEdpdCBmb3IgdGV4dCBzdWNoIGFzIGNvbW1pdAogbWVzc2FnZXMsIG5vdGVzLCB0YWdzIGFuZCBicmFuY2ggZGVzY3JpcHRpb25zLgogCiBXaXRoIG5vIGFyZ3VtZW50cywgdGhpcyB3aWxsOgpAQCAtMzUsNyArMzUsMTMgQEAKIC0tLS0tLS0KIC1zOjoKIC0tc3RyaXAtY29tbWVudHM6OgotCVNraXAgYW5kIHJlbW92ZSBhbGwgbGluZXMgc3RhcnRpbmcgd2l0aCAnIycuCisJU2tpcCBhbmQgcmVtb3ZlIGFsbCBsaW5lcyBzdGFydGluZyB3aXRoIGNvbW1lbnQgY2hhcmFjdGVyIChkZWZhdWx0ICcjJykuCisKKy1jOjoKKy0tY29tbWVudC1saW5lczo6CisJUHJlcGVuZCBjb21tZW50IGNoYXJhY3RlciBhbmQgYmxhbmsgdG8gZWFjaCBsaW5lLiBMaW5lcyB3aWxsIGF1dG9tYXRpY2FsbHkKKwliZSB0ZXJtaW5hdGVkIHdpdGggYSBuZXdsaW5lLiBPbiBlbXB0eSBsaW5lcywgb25seSB0aGUgY29tbWVudCBjaGFyYWN0ZXIKKwl3aWxsIGJlIHByZXBlbmRlZC4KIAogRVhBTVBMRVMKIC0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zdWJtb2R1bGUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc3VibW9kdWxlLnR4dAppbmRleCA5ZTQ4OGMwLi5lNTc2NzEzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zdWJtb2R1bGUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXN1Ym1vZHVsZS50eHQKQEAgLTksMTIgKzksMTQgQEAKIFNZTk9QU0lTCiAtLS0tLS0tLQogW3ZlcnNlXQotJ2dpdCBzdWJtb2R1bGUnIFstLXF1aWV0XSBhZGQgWy1iIGJyYW5jaF0gWy1mfC0tZm9yY2VdCisnZ2l0IHN1Ym1vZHVsZScgWy0tcXVpZXRdIGFkZCBbLWIgPGJyYW5jaD5dIFstZnwtLWZvcmNlXSBbLS1uYW1lIDxuYW1lPl0KIAkgICAgICBbLS1yZWZlcmVuY2UgPHJlcG9zaXRvcnk+XSBbLS1dIDxyZXBvc2l0b3J5PiBbPHBhdGg+XQogJ2dpdCBzdWJtb2R1bGUnIFstLXF1aWV0XSBzdGF0dXMgWy0tY2FjaGVkXSBbLS1yZWN1cnNpdmVdIFstLV0gWzxwYXRoPi4uLl0KICdnaXQgc3VibW9kdWxlJyBbLS1xdWlldF0gaW5pdCBbLS1dIFs8cGF0aD4uLi5dCi0nZ2l0IHN1Ym1vZHVsZScgWy0tcXVpZXRdIHVwZGF0ZSBbLS1pbml0XSBbLU58LS1uby1mZXRjaF0gWy0tcmViYXNlXQotCSAgICAgIFstLXJlZmVyZW5jZSA8cmVwb3NpdG9yeT5dIFstLW1lcmdlXSBbLS1yZWN1cnNpdmVdIFstLV0gWzxwYXRoPi4uLl0KKydnaXQgc3VibW9kdWxlJyBbLS1xdWlldF0gZGVpbml0IFstZnwtLWZvcmNlXSBbLS1dIDxwYXRoPi4uLgorJ2dpdCBzdWJtb2R1bGUnIFstLXF1aWV0XSB1cGRhdGUgWy0taW5pdF0gWy0tcmVtb3RlXSBbLU58LS1uby1mZXRjaF0KKwkgICAgICBbLWZ8LS1mb3JjZV0gWy0tcmViYXNlXSBbLS1yZWZlcmVuY2UgPHJlcG9zaXRvcnk+XQorCSAgICAgIFstLW1lcmdlXSBbLS1yZWN1cnNpdmVdIFstLV0gWzxwYXRoPi4uLl0KICdnaXQgc3VibW9kdWxlJyBbLS1xdWlldF0gc3VtbWFyeSBbLS1jYWNoZWR8LS1maWxlc10gWygtbnwtLXN1bW1hcnktbGltaXQpIDxuPl0KIAkgICAgICBbY29tbWl0XSBbLS1dIFs8cGF0aD4uLi5dCiAnZ2l0IHN1Ym1vZHVsZScgWy0tcXVpZXRdIGZvcmVhY2ggWy0tcmVjdXJzaXZlXSA8Y29tbWFuZD4KQEAgLTc1LDYgKzc3LDggQEAKIHRvIGV4aXN0IGluIHRoZSBzdXBlcnByb2plY3QuIElmIDxwYXRoPiBpcyBub3QgZ2l2ZW4sIHRoZQogImh1bWFuaXNoIiBwYXJ0IG9mIHRoZSBzb3VyY2UgcmVwb3NpdG9yeSBpcyB1c2VkICgicmVwbyIgZm9yCiAiL3BhdGgvdG8vcmVwby5naXQiIGFuZCAiZm9vIiBmb3IgImhvc3QueHo6Zm9vLy5naXQiKS4KK1RoZSA8cGF0aD4gaXMgYWxzbyB1c2VkIGFzIHRoZSBzdWJtb2R1bGUncyBsb2dpY2FsIG5hbWUgaW4gaXRzCitjb25maWd1cmF0aW9uIGVudHJpZXMgdW5sZXNzIGAtLW5hbWVgIGlzIHVzZWQgdG8gc3BlY2lmeSBhIGxvZ2ljYWwgbmFtZS4KICsKIDxyZXBvc2l0b3J5PiBpcyB0aGUgVVJMIG9mIHRoZSBuZXcgc3VibW9kdWxlJ3Mgb3JpZ2luIHJlcG9zaXRvcnkuCiBUaGlzIG1heSBiZSBlaXRoZXIgYW4gYWJzb2x1dGUgVVJMLCBvciAoaWYgaXQgYmVnaW5zIHdpdGggLi8KQEAgLTkxLDcgKzk1LDcgQEAKIDxwYXRoPiBpcyB0aGUgcmVsYXRpdmUgbG9jYXRpb24gZm9yIHRoZSBjbG9uZWQgc3VibW9kdWxlIHRvCiBleGlzdCBpbiB0aGUgc3VwZXJwcm9qZWN0LiBJZiA8cGF0aD4gZG9lcyBub3QgZXhpc3QsIHRoZW4gdGhlCiBzdWJtb2R1bGUgaXMgY3JlYXRlZCBieSBjbG9uaW5nIGZyb20gdGhlIG5hbWVkIFVSTC4gSWYgPHBhdGg+IGRvZXMKLWV4aXN0IGFuZCBpcyBhbHJlYWR5IGEgdmFsaWQgZ2l0IHJlcG9zaXRvcnksIHRoZW4gdGhpcyBpcyBhZGRlZAorZXhpc3QgYW5kIGlzIGFscmVhZHkgYSB2YWxpZCBHaXQgcmVwb3NpdG9yeSwgdGhlbiB0aGlzIGlzIGFkZGVkCiB0byB0aGUgY2hhbmdlc2V0IHdpdGhvdXQgY2xvbmluZy4gVGhpcyBzZWNvbmQgZm9ybSBpcyBwcm92aWRlZAogdG8gZWFzZSBjcmVhdGluZyBhIG5ldyBzdWJtb2R1bGUgZnJvbSBzY3JhdGNoLCBhbmQgcHJlc3VtZXMKIHRoZSB1c2VyIHdpbGwgbGF0ZXIgcHVzaCB0aGUgc3VibW9kdWxlIHRvIHRoZSBnaXZlbiBVUkwuCkBAIC0xMTIsNyArMTE2LDYgQEAKIAlpbml0aWFsaXplZCwgYCtgIGlmIHRoZSBjdXJyZW50bHkgY2hlY2tlZCBvdXQgc3VibW9kdWxlIGNvbW1pdAogCWRvZXMgbm90IG1hdGNoIHRoZSBTSEEtMSBmb3VuZCBpbiB0aGUgaW5kZXggb2YgdGhlIGNvbnRhaW5pbmcKIAlyZXBvc2l0b3J5IGFuZCBgVWAgaWYgdGhlIHN1Ym1vZHVsZSBoYXMgbWVyZ2UgY29uZmxpY3RzLgotCVRoaXMgY29tbWFuZCBpcyB0aGUgZGVmYXVsdCBjb21tYW5kIGZvciAnZ2l0IHN1Ym1vZHVsZScuCiArCiBJZiBgLS1yZWN1cnNpdmVgIGlzIHNwZWNpZmllZCwgdGhpcyBjb21tYW5kIHdpbGwgcmVjdXJzZSBpbnRvIG5lc3RlZAogc3VibW9kdWxlcywgYW5kIHNob3cgdGhlaXIgc3RhdHVzIGFzIHdlbGwuCkBAIC0xMjMsOCArMTI2LDEwIEBACiB0b28gKGFuZCBjYW4gYWxzbyByZXBvcnQgY2hhbmdlcyB0byBhIHN1Ym1vZHVsZSdzIHdvcmsgdHJlZSkuCiAKIGluaXQ6OgotCUluaXRpYWxpemUgdGhlIHN1Ym1vZHVsZXMsIGkuZS4gcmVnaXN0ZXIgZWFjaCBzdWJtb2R1bGUgbmFtZQotCWFuZCB1cmwgZm91bmQgaW4gLmdpdG1vZHVsZXMgaW50byAuZ2l0L2NvbmZpZy4KKwlJbml0aWFsaXplIHRoZSBzdWJtb2R1bGVzIHJlY29yZGVkIGluIHRoZSBpbmRleCAod2hpY2ggd2VyZQorCWFkZGVkIGFuZCBjb21taXR0ZWQgZWxzZXdoZXJlKSBieSBjb3B5aW5nIHN1Ym1vZHVsZQorCW5hbWVzIGFuZCB1cmxzIGZyb20gLmdpdG1vZHVsZXMgdG8gLmdpdC9jb25maWcuCisJT3B0aW9uYWwgPHBhdGg+IGFyZ3VtZW50cyBsaW1pdCB3aGljaCBzdWJtb2R1bGVzIHdpbGwgYmUgaW5pdGlhbGl6ZWQuCiAJSXQgd2lsbCBhbHNvIGNvcHkgdGhlIHZhbHVlIG9mIGBzdWJtb2R1bGUuJG5hbWUudXBkYXRlYCBpbnRvCiAJLmdpdC9jb25maWcuCiAJVGhlIGtleSB1c2VkIGluIC5naXQvY29uZmlnIGlzIGBzdWJtb2R1bGUuJG5hbWUudXJsYC4KQEAgLTEzNSwxMiArMTQwLDI1IEBACiAJdGhlIGV4cGxpY2l0ICdpbml0JyBzdGVwIGlmIHlvdSBkbyBub3QgaW50ZW5kIHRvIGN1c3RvbWl6ZQogCWFueSBzdWJtb2R1bGUgbG9jYXRpb25zLgogCitkZWluaXQ6OgorCVVucmVnaXN0ZXIgdGhlIGdpdmVuIHN1Ym1vZHVsZXMsIGkuZS4gcmVtb3ZlIHRoZSB3aG9sZQorCWBzdWJtb2R1bGUuJG5hbWVgIHNlY3Rpb24gZnJvbSAuZ2l0L2NvbmZpZyB0b2dldGhlciB3aXRoIHRoZWlyIHdvcmsKKwl0cmVlLiBGdXJ0aGVyIGNhbGxzIHRvIGBnaXQgc3VibW9kdWxlIHVwZGF0ZWAsIGBnaXQgc3VibW9kdWxlIGZvcmVhY2hgCisJYW5kIGBnaXQgc3VibW9kdWxlIHN5bmNgIHdpbGwgc2tpcCBhbnkgdW5yZWdpc3RlcmVkIHN1Ym1vZHVsZXMgdW50aWwKKwl0aGV5IGFyZSBpbml0aWFsaXplZCBhZ2Fpbiwgc28gdXNlIHRoaXMgY29tbWFuZCBpZiB5b3UgZG9uJ3Qgd2FudCB0bworCWhhdmUgYSBsb2NhbCBjaGVja291dCBvZiB0aGUgc3VibW9kdWxlIGluIHlvdXIgd29yayB0cmVlIGFueW1vcmUuIElmCisJeW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSBhIHN1Ym1vZHVsZSBmcm9tIHRoZSByZXBvc2l0b3J5IGFuZCBjb21taXQKKwl0aGF0IHVzZSBsaW5rZ2l0OmdpdC1ybVsxXSBpbnN0ZWFkLgorKworSWYgYC0tZm9yY2VgIGlzIHNwZWNpZmllZCwgdGhlIHN1Ym1vZHVsZSdzIHdvcmsgdHJlZSB3aWxsIGJlIHJlbW92ZWQgZXZlbiBpZgoraXQgY29udGFpbnMgbG9jYWwgbW9kaWZpY2F0aW9ucy4KKwogdXBkYXRlOjoKIAlVcGRhdGUgdGhlIHJlZ2lzdGVyZWQgc3VibW9kdWxlcywgaS5lLiBjbG9uZSBtaXNzaW5nIHN1Ym1vZHVsZXMgYW5kCiAJY2hlY2tvdXQgdGhlIGNvbW1pdCBzcGVjaWZpZWQgaW4gdGhlIGluZGV4IG9mIHRoZSBjb250YWluaW5nIHJlcG9zaXRvcnkuCiAJVGhpcyB3aWxsIG1ha2UgdGhlIHN1Ym1vZHVsZXMgSEVBRCBiZSBkZXRhY2hlZCB1bmxlc3MgYC0tcmViYXNlYCBvcgogCWAtLW1lcmdlYCBpcyBzcGVjaWZpZWQgb3IgdGhlIGtleSBgc3VibW9kdWxlLiRuYW1lLnVwZGF0ZWAgaXMgc2V0IHRvCi0JYHJlYmFzZWAsIGBtZXJnZWAgb3IgYG5vbmVgLiBgbm9uZWAgY2FuIGJlIG92ZXJyaWRlbiBieSBzcGVjaWZ5aW5nCisJYHJlYmFzZWAsIGBtZXJnZWAgb3IgYG5vbmVgLiBgbm9uZWAgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc3BlY2lmeWluZwogCWAtLWNoZWNrb3V0YC4KICsKIElmIHRoZSBzdWJtb2R1bGUgaXMgbm90IHlldCBpbml0aWFsaXplZCwgYW5kIHlvdSBqdXN0IHdhbnQgdG8gdXNlIHRoZQpAQCAtMTQ5LDYgKzE2NywxMSBAQAogKwogSWYgYC0tcmVjdXJzaXZlYCBpcyBzcGVjaWZpZWQsIHRoaXMgY29tbWFuZCB3aWxsIHJlY3Vyc2UgaW50byB0aGUKIHJlZ2lzdGVyZWQgc3VibW9kdWxlcywgYW5kIHVwZGF0ZSBhbnkgbmVzdGVkIHN1Ym1vZHVsZXMgd2l0aGluLgorKworSWYgYC0tZm9yY2VgIGlzIHNwZWNpZmllZCwgdGhlIHN1Ym1vZHVsZSB3aWxsIGJlIGNoZWNrZWQgb3V0ICh1c2luZworYGdpdCBjaGVja291dCAtLWZvcmNlYCBpZiBhcHByb3ByaWF0ZSksIGV2ZW4gaWYgdGhlIGNvbW1pdCBzcGVjaWZpZWQgaW4gdGhlCitpbmRleCBvZiB0aGUgY29udGFpbmluZyByZXBvc2l0b3J5IGFscmVhZHkgbWF0Y2hlcyB0aGUgY29tbWl0IGNoZWNrZWQgb3V0IGluCit0aGUgc3VibW9kdWxlLgogCiBzdW1tYXJ5OjoKIAlTaG93IGNvbW1pdCBzdW1tYXJ5IGJldHdlZW4gdGhlIGdpdmVuIGNvbW1pdCAoZGVmYXVsdHMgdG8gSEVBRCkgYW5kCkBAIC0yMDQsMTMgKzIyNywxOSBAQAogLWI6OgogLS1icmFuY2g6OgogCUJyYW5jaCBvZiByZXBvc2l0b3J5IHRvIGFkZCBhcyBzdWJtb2R1bGUuCisJVGhlIG5hbWUgb2YgdGhlIGJyYW5jaCBpcyByZWNvcmRlZCBhcyBgc3VibW9kdWxlLjxwYXRoPi5icmFuY2hgIGluCisJYC5naXRtb2R1bGVzYCBmb3IgYHVwZGF0ZSAtLXJlbW90ZWAuCiAKIC1mOjoKIC0tZm9yY2U6OgotCVRoaXMgb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIGFkZCBhbmQgdXBkYXRlIGNvbW1hbmRzLgorCVRoaXMgb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIGFkZCwgZGVpbml0IGFuZCB1cGRhdGUgY29tbWFuZHMuCiAJV2hlbiBydW5uaW5nIGFkZCwgYWxsb3cgYWRkaW5nIGFuIG90aGVyd2lzZSBpZ25vcmVkIHN1Ym1vZHVsZSBwYXRoLgorCVdoZW4gcnVubmluZyBkZWluaXQgdGhlIHN1Ym1vZHVsZSB3b3JrIHRyZWVzIHdpbGwgYmUgcmVtb3ZlZCBldmVuIGlmCisJdGhleSBjb250YWluIGxvY2FsIGNoYW5nZXMuCiAJV2hlbiBydW5uaW5nIHVwZGF0ZSwgdGhyb3cgYXdheSBsb2NhbCBjaGFuZ2VzIGluIHN1Ym1vZHVsZXMgd2hlbgotCXN3aXRjaGluZyB0byBhIGRpZmZlcmVudCBjb21taXQuCisJc3dpdGNoaW5nIHRvIGEgZGlmZmVyZW50IGNvbW1pdDsgYW5kIGFsd2F5cyBydW4gYSBjaGVja291dCBvcGVyYXRpb24KKwlpbiB0aGUgc3VibW9kdWxlLCBldmVuIGlmIHRoZSBjb21taXQgbGlzdGVkIGluIHRoZSBpbmRleCBvZiB0aGUKKwljb250YWluaW5nIHJlcG9zaXRvcnkgbWF0Y2hlcyB0aGUgY29tbWl0IGNoZWNrZWQgb3V0IGluIHRoZSBzdWJtb2R1bGUuCiAKIC0tY2FjaGVkOjoKIAlUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBzdGF0dXMgYW5kIHN1bW1hcnkgY29tbWFuZHMuICBUaGVzZQpAQCAtMjMwLDYgKzI1OSwyNyBAQAogCSh0aGUgZGVmYXVsdCkuIFRoaXMgbGltaXQgb25seSBhcHBsaWVzIHRvIG1vZGlmaWVkIHN1Ym1vZHVsZXMuIFRoZQogCXNpemUgaXMgYWx3YXlzIGxpbWl0ZWQgdG8gMSBmb3IgYWRkZWQvZGVsZXRlZC90eXBlY2hhbmdlZCBzdWJtb2R1bGVzLgogCistLXJlbW90ZTo6CisJVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgdGhlIHVwZGF0ZSBjb21tYW5kLiAgSW5zdGVhZCBvZiB1c2luZworCXRoZSBzdXBlcnByb2plY3QncyByZWNvcmRlZCBTSEEtMSB0byB1cGRhdGUgdGhlIHN1Ym1vZHVsZSwgdXNlIHRoZQorCXN0YXR1cyBvZiB0aGUgc3VibW9kdWxlJ3MgcmVtb3RlIHRyYWNraW5nIGJyYW5jaC4gIFRoZSByZW1vdGUgdXNlZAorCWlzIGJyYW5jaCdzIHJlbW90ZSAoYGJyYW5jaC48bmFtZT4ucmVtb3RlYCksIGRlZmF1bHRpbmcgdG8gYG9yaWdpbmAuCisJVGhlIHJlbW90ZSBicmFuY2ggdXNlZCBkZWZhdWx0cyB0byBgbWFzdGVyYCwgYnV0IHRoZSBicmFuY2ggbmFtZSBtYXkKKwliZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgdGhlIGBzdWJtb2R1bGUuPG5hbWU+LmJyYW5jaGAgb3B0aW9uIGluCisJZWl0aGVyIGAuZ2l0bW9kdWxlc2Agb3IgYC5naXQvY29uZmlnYCAod2l0aCBgLmdpdC9jb25maWdgIHRha2luZworCXByZWNlZGVuY2UpLgorKworVGhpcyB3b3JrcyBmb3IgYW55IG9mIHRoZSBzdXBwb3J0ZWQgdXBkYXRlIHByb2NlZHVyZXMgKGAtLWNoZWNrb3V0YCwKK2AtLXJlYmFzZWAsIGV0Yy4pLiAgVGhlIG9ubHkgY2hhbmdlIGlzIHRoZSBzb3VyY2Ugb2YgdGhlIHRhcmdldCBTSEEtMS4KK0ZvciBleGFtcGxlLCBgc3VibW9kdWxlIHVwZGF0ZSAtLXJlbW90ZSAtLW1lcmdlYCB3aWxsIG1lcmdlIHVwc3RyZWFtCitzdWJtb2R1bGUgY2hhbmdlcyBpbnRvIHRoZSBzdWJtb2R1bGVzLCB3aGlsZSBgc3VibW9kdWxlIHVwZGF0ZQorLS1tZXJnZWAgd2lsbCBtZXJnZSBzdXBlcnByb2plY3QgZ2l0bGluayBjaGFuZ2VzIGludG8gdGhlIHN1Ym1vZHVsZXMuCisrCitJbiBvcmRlciB0byBlbnN1cmUgYSBjdXJyZW50IHRyYWNraW5nIGJyYW5jaCBzdGF0ZSwgYHVwZGF0ZSAtLXJlbW90ZWAKK2ZldGNoZXMgdGhlIHN1Ym1vZHVsZSdzIHJlbW90ZSByZXBvc2l0b3J5IGJlZm9yZSBjYWxjdWxhdGluZyB0aGUKK1NIQS0xLiAgSWYgeW91IGRvbid0IHdhbnQgdG8gZmV0Y2gsIHlvdSBzaG91bGQgdXNlIGBzdWJtb2R1bGUgdXBkYXRlCistLXJlbW90ZSAtLW5vLWZldGNoYC4KKwogLU46OgogLS1uby1mZXRjaDo6CiAJVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgdGhlIHVwZGF0ZSBjb21tYW5kLgpAQCAtMjU5LDYgKzMwOSwxMSBAQAogCUluaXRpYWxpemUgYWxsIHN1Ym1vZHVsZXMgZm9yIHdoaWNoICJnaXQgc3VibW9kdWxlIGluaXQiIGhhcyBub3QgYmVlbgogCWNhbGxlZCBzbyBmYXIgYmVmb3JlIHVwZGF0aW5nLgogCistLW5hbWU6OgorCVRoaXMgb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIHRoZSBhZGQgY29tbWFuZC4gSXQgc2V0cyB0aGUgc3VibW9kdWxlJ3MKKwluYW1lIHRvIHRoZSBnaXZlbiBzdHJpbmcgaW5zdGVhZCBvZiBkZWZhdWx0aW5nIHRvIGl0cyBwYXRoLiBUaGUgbmFtZQorCW11c3QgYmUgdmFsaWQgYXMgYSBkaXJlY3RvcnkgbmFtZSBhbmQgbWF5IG5vdCBlbmQgd2l0aCBhICcvJy4KKwogLS1yZWZlcmVuY2UgPHJlcG9zaXRvcnk+OjoKIAlUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBhZGQgYW5kIHVwZGF0ZSBjb21tYW5kcy4gIFRoZXNlCiAJY29tbWFuZHMgc29tZXRpbWVzIG5lZWQgdG8gY2xvbmUgYSByZW1vdGUgcmVwb3NpdG9yeS4gSW4gdGhpcyBjYXNlLApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtc3ZuLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXN2bi50eHQKaW5kZXggY2ZlOGQyYi4uYWFkNDUyZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc3ZuLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1zdm4udHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXQtc3ZuIC0gQmlkaXJlY3Rpb25hbCBvcGVyYXRpb24gYmV0d2VlbiBhIFN1YnZlcnNpb24gcmVwb3NpdG9yeSBhbmQgZ2l0CitnaXQtc3ZuIC0gQmlkaXJlY3Rpb25hbCBvcGVyYXRpb24gYmV0d2VlbiBhIFN1YnZlcnNpb24gcmVwb3NpdG9yeSBhbmQgR2l0CiAKIFNZTk9QU0lTCiAtLS0tLS0tLQpAQCAtMTIsOCArMTIsOCBAQAogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KLSdnaXQgc3ZuJyBpcyBhIHNpbXBsZSBjb25kdWl0IGZvciBjaGFuZ2VzZXRzIGJldHdlZW4gU3VidmVyc2lvbiBhbmQgZ2l0LgotSXQgcHJvdmlkZXMgYSBiaWRpcmVjdGlvbmFsIGZsb3cgb2YgY2hhbmdlcyBiZXR3ZWVuIGEgU3VidmVyc2lvbiBhbmQgYSBnaXQKKydnaXQgc3ZuJyBpcyBhIHNpbXBsZSBjb25kdWl0IGZvciBjaGFuZ2VzZXRzIGJldHdlZW4gU3VidmVyc2lvbiBhbmQgR2l0LgorSXQgcHJvdmlkZXMgYSBiaWRpcmVjdGlvbmFsIGZsb3cgb2YgY2hhbmdlcyBiZXR3ZWVuIGEgU3VidmVyc2lvbiBhbmQgYSBHaXQKIHJlcG9zaXRvcnkuCiAKICdnaXQgc3ZuJyBjYW4gdHJhY2sgYSBzdGFuZGFyZCBTdWJ2ZXJzaW9uIHJlcG9zaXRvcnksCkBAIC0yMSwxNSArMjEsMTUgQEAKIEl0IGNhbiBhbHNvIGZvbGxvdyBicmFuY2hlcyBhbmQgdGFncyBpbiBhbnkgbGF5b3V0IHdpdGggdGhlIC1ULy10Ly1iIG9wdGlvbnMKIChzZWUgb3B0aW9ucyB0byAnaW5pdCcgYmVsb3csIGFuZCBhbHNvIHRoZSAnY2xvbmUnIGNvbW1hbmQpLgogCi1PbmNlIHRyYWNraW5nIGEgU3VidmVyc2lvbiByZXBvc2l0b3J5ICh3aXRoIGFueSBvZiB0aGUgYWJvdmUgbWV0aG9kcyksIHRoZSBnaXQKK09uY2UgdHJhY2tpbmcgYSBTdWJ2ZXJzaW9uIHJlcG9zaXRvcnkgKHdpdGggYW55IG9mIHRoZSBhYm92ZSBtZXRob2RzKSwgdGhlIEdpdAogcmVwb3NpdG9yeSBjYW4gYmUgdXBkYXRlZCBmcm9tIFN1YnZlcnNpb24gYnkgdGhlICdmZXRjaCcgY29tbWFuZCBhbmQKLVN1YnZlcnNpb24gdXBkYXRlZCBmcm9tIGdpdCBieSB0aGUgJ2Rjb21taXQnIGNvbW1hbmQuCitTdWJ2ZXJzaW9uIHVwZGF0ZWQgZnJvbSBHaXQgYnkgdGhlICdkY29tbWl0JyBjb21tYW5kLgogCiBDT01NQU5EUwogLS0tLS0tLS0KIAogJ2luaXQnOjoKLQlJbml0aWFsaXplcyBhbiBlbXB0eSBnaXQgcmVwb3NpdG9yeSB3aXRoIGFkZGl0aW9uYWwKKwlJbml0aWFsaXplcyBhbiBlbXB0eSBHaXQgcmVwb3NpdG9yeSB3aXRoIGFkZGl0aW9uYWwKIAltZXRhZGF0YSBkaXJlY3RvcmllcyBmb3IgJ2dpdCBzdm4nLiAgVGhlIFN1YnZlcnNpb24gVVJMCiAJbWF5IGJlIHNwZWNpZmllZCBhcyBhIGNvbW1hbmQtbGluZSBhcmd1bWVudCwgb3IgYXMgZnVsbAogCVVSTCBhcmd1bWVudHMgdG8gLVQvLXQvLWIuICBPcHRpb25hbGx5LCB0aGUgdGFyZ2V0CkBAIC04NSw2ICs4NSwxMCBAQAogCVdoZW4gcGFzc2VkIHRvICdpbml0JyBvciAnY2xvbmUnIHRoaXMgcmVndWxhciBleHByZXNzaW9uIHdpbGwKIAliZSBwcmVzZXJ2ZWQgYXMgYSBjb25maWcga2V5LiAgU2VlICdmZXRjaCcgZm9yIGEgZGVzY3JpcHRpb24KIAlvZiAnLS1pZ25vcmUtcGF0aHMnLgorLS1pbmNsdWRlLXBhdGhzPTxyZWdleD47OworCVdoZW4gcGFzc2VkIHRvICdpbml0JyBvciAnY2xvbmUnIHRoaXMgcmVndWxhciBleHByZXNzaW9uIHdpbGwKKwliZSBwcmVzZXJ2ZWQgYXMgYSBjb25maWcga2V5LiAgU2VlICdmZXRjaCcgZm9yIGEgZGVzY3JpcHRpb24KKwlvZiAnLS1pbmNsdWRlLXBhdGhzJy4KIC0tbm8tbWluaW1pemUtdXJsOzsKIAlXaGVuIHRyYWNraW5nIG11bHRpcGxlIGRpcmVjdG9yaWVzICh1c2luZyAtLXN0ZGxheW91dCwKIAktLWJyYW5jaGVzLCBvciAtLXRhZ3Mgb3B0aW9ucyksIGdpdCBzdm4gd2lsbCBhdHRlbXB0IHRvIGNvbm5lY3QKQEAgLTE0Niw2ICsxNTAsMjEgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0KIAorLS1pbmNsdWRlLXBhdGhzPTxyZWdleD47OworCVRoaXMgYWxsb3dzIG9uZSB0byBzcGVjaWZ5IGEgUGVybCByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCB3aWxsCisJY2F1c2UgdGhlIGluY2x1c2lvbiBvZiBvbmx5IG1hdGNoaW5nIHBhdGhzIGZyb20gY2hlY2tvdXQgZnJvbSBTVk4uCisJVGhlICctLWluY2x1ZGUtcGF0aHMnIG9wdGlvbiBzaG91bGQgbWF0Y2ggZm9yIGV2ZXJ5ICdmZXRjaCcKKwkoaW5jbHVkaW5nIGF1dG9tYXRpYyBmZXRjaGVzIGR1ZSB0byAnY2xvbmUnLCAnZGNvbW1pdCcsCisJJ3JlYmFzZScsIGV0Yykgb24gYSBnaXZlbiByZXBvc2l0b3J5LiAnLS1pZ25vcmUtcGF0aHMnIHRha2VzCisJcHJlY2VkZW5jZSBvdmVyICctLWluY2x1ZGUtcGF0aHMnLgorCistLWxvZy13aW5kb3ctc2l6ZT08bj47OworICAgIEZldGNoIDxuPiBsb2cgZW50cmllcyBwZXIgcmVxdWVzdCB3aGVuIHNjYW5uaW5nIFN1YnZlcnNpb24gaGlzdG9yeS4KKyAgICBUaGUgZGVmYXVsdCBpcyAxMDAuIEZvciB2ZXJ5IGxhcmdlIFN1YnZlcnNpb24gcmVwb3NpdG9yaWVzLCBsYXJnZXIKKyAgICB2YWx1ZXMgbWF5IGJlIG5lZWRlZCBmb3IgJ2Nsb25lJy8nZmV0Y2gnIHRvIGNvbXBsZXRlIGluIHJlYXNvbmFibGUKKyAgICB0aW1lLiBCdXQgb3Zlcmx5IGxhcmdlIHZhbHVlcyBtYXkgbGVhZCB0byBoaWdoZXIgbWVtb3J5IHVzYWdlIGFuZAorICAgIHJlcXVlc3QgdGltZW91dHMuCisKICdjbG9uZSc6OgogCVJ1bnMgJ2luaXQnIGFuZCAnZmV0Y2gnLiAgSXQgd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhCiAJZGlyZWN0b3J5IGJhc2VkIG9uIHRoZSBiYXNlbmFtZSBvZiB0aGUgVVJMIHBhc3NlZCB0byBpdDsKQEAgLTE5Miw5ICsyMTEsOSBAQAogCUNvbW1pdCBlYWNoIGRpZmYgZnJvbSB0aGUgY3VycmVudCBicmFuY2ggZGlyZWN0bHkgdG8gdGhlIFNWTgogCXJlcG9zaXRvcnksIGFuZCB0aGVuIHJlYmFzZSBvciByZXNldCAoZGVwZW5kaW5nIG9uIHdoZXRoZXIgb3IKIAlub3QgdGhlcmUgaXMgYSBkaWZmIGJldHdlZW4gU1ZOIGFuZCBoZWFkKS4gIFRoaXMgd2lsbCBjcmVhdGUKLQlhIHJldmlzaW9uIGluIFNWTiBmb3IgZWFjaCBjb21taXQgaW4gZ2l0LgorCWEgcmV2aXNpb24gaW4gU1ZOIGZvciBlYWNoIGNvbW1pdCBpbiBHaXQuCiArCi1XaGVuIGFuIG9wdGlvbmFsIGdpdCBicmFuY2ggbmFtZSAob3IgYSBnaXQgY29tbWl0IG9iamVjdCBuYW1lKQorV2hlbiBhbiBvcHRpb25hbCBHaXQgYnJhbmNoIG5hbWUgKG9yIGEgR2l0IGNvbW1pdCBvYmplY3QgbmFtZSkKIGlzIHNwZWNpZmllZCBhcyBhbiBhcmd1bWVudCwgdGhlIHN1YmNvbW1hbmQgd29ya3Mgb24gdGhlIHNwZWNpZmllZAogYnJhbmNoLCBub3Qgb24gdGhlIGN1cnJlbnQgYnJhbmNoLgogKwpAQCAtMjM4LDcgKzI1Nyw3IEBACiAJcGF0Y2gpLCAiYWxsIiAoYWNjZXB0IGFsbCBwYXRjaGVzKSwgb3IgInF1aXQiLgogCSsKIAknZ2l0IHN2biBkY29tbWl0JyByZXR1cm5zIGltbWVkaWF0ZWx5IGlmIGFuc3dlciBpZiAibm8iIG9yICJxdWl0Iiwgd2l0aG91dAotCWNvbW1pdGluZyBhbnl0aGluZyB0byBTVk4uCisJY29tbWl0dGluZyBhbnl0aGluZyB0byBTVk4uCiAKICdicmFuY2gnOjoKIAlDcmVhdGUgYSBicmFuY2ggaW4gdGhlIFNWTiByZXBvc2l0b3J5LgpAQCAtMjUyLDEzICsyNzEsMTUgQEAKIAlDcmVhdGUgYSB0YWcgYnkgdXNpbmcgdGhlIHRhZ3Nfc3ViZGlyIGluc3RlYWQgb2YgdGhlIGJyYW5jaGVzX3N1YmRpcgogCXNwZWNpZmllZCBkdXJpbmcgZ2l0IHN2biBpbml0LgogCi0tZDs7Ci0tLWRlc3RpbmF0aW9uOzsKKy1kPHBhdGg+OzsKKy0tZGVzdGluYXRpb249PHBhdGg+OzsKKwogCUlmIG1vcmUgdGhhbiBvbmUgLS1icmFuY2hlcyAob3IgLS10YWdzKSBvcHRpb24gd2FzIGdpdmVuIHRvIHRoZSAnaW5pdCcKIAlvciAnY2xvbmUnIGNvbW1hbmQsIHlvdSBtdXN0IHByb3ZpZGUgdGhlIGxvY2F0aW9uIG9mIHRoZSBicmFuY2ggKG9yCi0JdGFnKSB5b3Ugd2lzaCB0byBjcmVhdGUgaW4gdGhlIFNWTiByZXBvc2l0b3J5LiAgVGhlIHZhbHVlIG9mIHRoaXMKLQlvcHRpb24gbXVzdCBtYXRjaCBvbmUgb2YgdGhlIHBhdGhzIHNwZWNpZmllZCBieSBhIC0tYnJhbmNoZXMgKG9yCi0JLS10YWdzKSBvcHRpb24uICBZb3UgY2FuIHNlZSB0aGVzZSBwYXRocyB3aXRoIHRoZSBjb21tYW5kcworCXRhZykgeW91IHdpc2ggdG8gY3JlYXRlIGluIHRoZSBTVk4gcmVwb3NpdG9yeS4gIDxwYXRoPiBzcGVjaWZpZXMgd2hpY2gKKwlwYXRoIHRvIHVzZSB0byBjcmVhdGUgdGhlIGJyYW5jaCBvciB0YWcgYW5kIHNob3VsZCBtYXRjaCB0aGUgcGF0dGVybgorCW9uIHRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBvbmUgb2YgdGhlIGNvbmZpZ3VyZWQgYnJhbmNoZXMgb3IgdGFncworCXJlZnNwZWNzLiAgWW91IGNhbiBzZWUgdGhlc2UgcmVmc3BlY3Mgd2l0aCB0aGUgY29tbWFuZHMKICsKIAlnaXQgY29uZmlnIC0tZ2V0LWFsbCBzdm4tcmVtb3RlLjxuYW1lPi5icmFuY2hlcwogCWdpdCBjb25maWcgLS1nZXQtYWxsIHN2bi1yZW1vdGUuPG5hbWU+LnRhZ3MKQEAgLTI3OSw2ICszMDAsMTEgQEAKIAlnaXQgY29uZmlnIC0tZ2V0LWFsbCBzdm4tcmVtb3RlLjxuYW1lPi5jb21taXR1cmwKICsKIAorLS1wYXJlbnRzOzsKKwlDcmVhdGUgcGFyZW50IGZvbGRlcnMuIFRoaXMgcGFyYW1ldGVyIGlzIGVxdWl2YWxlbnQgdG8gdGhlIHBhcmFtZXRlcgorCS0tcGFyZW50cyBvbiBzdm4gY3AgY29tbWFuZHMgYW5kIGlzIHVzZWZ1bCBmb3Igbm9uLXN0YW5kYXJkIHJlcG9zaXRvcnkKKwlsYXlvdXRzLgorCiAndGFnJzo6CiAJQ3JlYXRlIGEgdGFnIGluIHRoZSBTVk4gcmVwb3NpdG9yeS4gVGhpcyBpcyBhIHNob3J0aGFuZCBmb3IKIAknYnJhbmNoIC10Jy4KQEAgLTMwOSw3ICszMzUsNyBAQAogKwogLS0KIC0tc2hvdy1jb21taXQ7OwotCXNob3dzIHRoZSBnaXQgY29tbWl0IHNoYTEsIGFzIHdlbGwKKwlzaG93cyB0aGUgR2l0IGNvbW1pdCBzaGExLCBhcyB3ZWxsCiAtLW9uZWxpbmU7OwogCW91ciB2ZXJzaW9uIG9mIC0tcHJldHR5PW9uZWxpbmUKIC0tCkBAIC0zMzAsMTUgKzM1NiwyNSBAQAogKwogLS1naXQtZm9ybWF0OzsKIAlQcm9kdWNlIG91dHB1dCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgJ2dpdCBibGFtZScsIGJ1dCB3aXRoCi0JU1ZOIHJldmlzaW9uIG51bWJlcnMgaW5zdGVhZCBvZiBnaXQgY29tbWl0IGhhc2hlcy4gSW4gdGhpcyBtb2RlLAorCVNWTiByZXZpc2lvbiBudW1iZXJzIGluc3RlYWQgb2YgR2l0IGNvbW1pdCBoYXNoZXMuIEluIHRoaXMgbW9kZSwKIAljaGFuZ2VzIHRoYXQgaGF2ZW4ndCBiZWVuIGNvbW1pdHRlZCB0byBTVk4gKGluY2x1ZGluZyBsb2NhbAogCXdvcmtpbmctY29weSBlZGl0cykgYXJlIHNob3duIGFzIHJldmlzaW9uIDAuCiAKICdmaW5kLXJldic6OgogCVdoZW4gZ2l2ZW4gYW4gU1ZOIHJldmlzaW9uIG51bWJlciBvZiB0aGUgZm9ybSAnck4nLCByZXR1cm5zIHRoZQotCWNvcnJlc3BvbmRpbmcgZ2l0IGNvbW1pdCBoYXNoICh0aGlzIGNhbiBvcHRpb25hbGx5IGJlIGZvbGxvd2VkIGJ5IGEKKwljb3JyZXNwb25kaW5nIEdpdCBjb21taXQgaGFzaCAodGhpcyBjYW4gb3B0aW9uYWxseSBiZSBmb2xsb3dlZCBieSBhCiAJdHJlZS1pc2ggdG8gc3BlY2lmeSB3aGljaCBicmFuY2ggc2hvdWxkIGJlIHNlYXJjaGVkKS4gIFdoZW4gZ2l2ZW4gYQogCXRyZWUtaXNoLCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIFNWTiByZXZpc2lvbiBudW1iZXIuCisrCistLWJlZm9yZTs7CisJRG9uJ3QgcmVxdWlyZSBhbiBleGFjdCBtYXRjaCBpZiBnaXZlbiBhbiBTVk4gcmV2aXNpb24sIGluc3RlYWQgZmluZAorCXRoZSBjb21taXQgY29ycmVzcG9uZGluZyB0byB0aGUgc3RhdGUgb2YgdGhlIFNWTiByZXBvc2l0b3J5IChvbiB0aGUKKwljdXJyZW50IGJyYW5jaCkgYXQgdGhlIHNwZWNpZmllZCByZXZpc2lvbi4KKysKKy0tYWZ0ZXI7OworCURvbid0IHJlcXVpcmUgYW4gZXhhY3QgbWF0Y2ggaWYgZ2l2ZW4gYW4gU1ZOIHJldmlzaW9uOyBpZiB0aGVyZSBpcworCW5vdCBhbiBleGFjdCBtYXRjaCByZXR1cm4gdGhlIGNsb3Nlc3QgbWF0Y2ggc2VhcmNoaW5nIGZvcndhcmQgaW4gdGhlCisJaGlzdG9yeS4KIAogJ3NldC10cmVlJzo6CiAJWW91IHNob3VsZCBjb25zaWRlciB1c2luZyAnZGNvbW1pdCcgaW5zdGVhZCBvZiB0aGlzIGNvbW1hbmQuCkBAIC0zNjEsNyArMzk3LDcgQEAKIAl0aGUgJEdJVF9ESVIvaW5mby9leGNsdWRlIGZpbGUuCiAKICdta2RpcnMnOjoKLQlBdHRlbXB0cyB0byByZWNyZWF0ZSBlbXB0eSBkaXJlY3RvcmllcyB0aGF0IGNvcmUgZ2l0IGNhbm5vdCB0cmFjaworCUF0dGVtcHRzIHRvIHJlY3JlYXRlIGVtcHR5IGRpcmVjdG9yaWVzIHRoYXQgY29yZSBHaXQgY2Fubm90IHRyYWNrCiAJYmFzZWQgb24gaW5mb3JtYXRpb24gaW4gJEdJVF9ESVIvc3ZuLzxyZWZuYW1lPi91bmhhbmRsZWQubG9nIGZpbGVzLgogCUVtcHR5IGRpcmVjdG9yaWVzIGFyZSBhdXRvbWF0aWNhbGx5IHJlY3JlYXRlZCB3aGVuIHVzaW5nCiAJImdpdCBzdm4gY2xvbmUiIGFuZCAiZ2l0IHN2biByZWJhc2UiLCBzbyAibWtkaXJzIiBpcyBpbnRlbmRlZApAQCAtNDkzLDkgKzUyOSw5IEBACiArCiBSZW1vdmUgZGlyZWN0b3JpZXMgZnJvbSB0aGUgU1ZOIHRyZWUgaWYgdGhlcmUgYXJlIG5vIGZpbGVzIGxlZnQKIGJlaGluZC4gIFNWTiBjYW4gdmVyc2lvbiBlbXB0eSBkaXJlY3RvcmllcywgYW5kIHRoZXkgYXJlIG5vdAotcmVtb3ZlZCBieSBkZWZhdWx0IGlmIHRoZXJlIGFyZSBubyBmaWxlcyBsZWZ0IGluIHRoZW0uICBnaXQKK3JlbW92ZWQgYnkgZGVmYXVsdCBpZiB0aGVyZSBhcmUgbm8gZmlsZXMgbGVmdCBpbiB0aGVtLiAgR2l0CiBjYW5ub3QgdmVyc2lvbiBlbXB0eSBkaXJlY3Rvcmllcy4gIEVuYWJsaW5nIHRoaXMgZmxhZyB3aWxsIG1ha2UKLXRoZSBjb21taXQgdG8gU1ZOIGFjdCBsaWtlIGdpdC4KK3RoZSBjb21taXQgdG8gU1ZOIGFjdCBsaWtlIEdpdC4KICsKIFt2ZXJzZV0KIGNvbmZpZyBrZXk6IHN2bi5ybWRpcgpAQCAtNTgyLDcgKzYxOCw3IEBACiAJVGhpcyBjYW4gYmUgdXNlZCB3aXRoIHRoZSAnZGNvbW1pdCcsICdyZWJhc2UnLCAnYnJhbmNoJyBhbmQKIAkndGFnJyBjb21tYW5kcy4KICsKLUZvciAnZGNvbW1pdCcsIHByaW50IG91dCB0aGUgc2VyaWVzIG9mIGdpdCBhcmd1bWVudHMgdGhhdCB3b3VsZCBzaG93CitGb3IgJ2Rjb21taXQnLCBwcmludCBvdXQgdGhlIHNlcmllcyBvZiBHaXQgYXJndW1lbnRzIHRoYXQgd291bGQgc2hvdwogd2hpY2ggZGlmZnMgd291bGQgYmUgY29tbWl0dGVkIHRvIFNWTi4KICsKIEZvciAncmViYXNlJywgZGlzcGxheSB0aGUgbG9jYWwgYnJhbmNoIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXBzdHJlYW0gc3ZuCkBAIC01OTMsMTQgKzYyOSwxNCBAQAogY3JlYXRpbmcgdGhlIGJyYW5jaCBvciB0YWcuCiAKIC0tdXNlLWxvZy1hdXRob3I6OgotCVdoZW4gcmV0cmlldmluZyBzdm4gY29tbWl0cyBpbnRvIGdpdCAoYXMgcGFydCBvZiAnZmV0Y2gnLCAncmViYXNlJywgb3IKKwlXaGVuIHJldHJpZXZpbmcgc3ZuIGNvbW1pdHMgaW50byBHaXQgKGFzIHBhcnQgb2YgJ2ZldGNoJywgJ3JlYmFzZScsIG9yCiAJJ2Rjb21taXQnIG9wZXJhdGlvbnMpLCBsb29rIGZvciB0aGUgZmlyc3QgYEZyb206YCBvciBgU2lnbmVkLW9mZi1ieTpgIGxpbmUKIAlpbiB0aGUgbG9nIG1lc3NhZ2UgYW5kIHVzZSB0aGF0IGFzIHRoZSBhdXRob3Igc3RyaW5nLgogLS1hZGQtYXV0aG9yLWZyb206OgotCVdoZW4gY29tbWl0dGluZyB0byBzdm4gZnJvbSBnaXQgKGFzIHBhcnQgb2YgJ2NvbW1pdC1kaWZmJywgJ3NldC10cmVlJyBvciAnZGNvbW1pdCcKKwlXaGVuIGNvbW1pdHRpbmcgdG8gc3ZuIGZyb20gR2l0IChhcyBwYXJ0IG9mICdjb21taXQtZGlmZicsICdzZXQtdHJlZScgb3IgJ2Rjb21taXQnCiAJb3BlcmF0aW9ucyksIGlmIHRoZSBleGlzdGluZyBsb2cgbWVzc2FnZSBkb2Vzbid0IGFscmVhZHkgaGF2ZSBhCiAJYEZyb206YCBvciBgU2lnbmVkLW9mZi1ieTpgIGxpbmUsIGFwcGVuZCBhIGBGcm9tOmAgbGluZSBiYXNlZCBvbiB0aGUKLQlnaXQgY29tbWl0J3MgYXV0aG9yIHN0cmluZy4gIElmIHlvdSB1c2UgdGhpcywgdGhlbiBgLS11c2UtbG9nLWF1dGhvcmAKKwlHaXQgY29tbWl0J3MgYXV0aG9yIHN0cmluZy4gIElmIHlvdSB1c2UgdGhpcywgdGhlbiBgLS11c2UtbG9nLWF1dGhvcmAKIAl3aWxsIHJldHJpZXZlIGEgdmFsaWQgYXV0aG9yIHN0cmluZyBmb3IgYWxsIGNvbW1pdHMuCiAKIApAQCAtNjIxLDEwICs2NTcsMTkgQEAKIAlEZWZhdWx0OiAic3ZuIgogCiAtLWZvbGxvdy1wYXJlbnQ6OgorCVRoaXMgb3B0aW9uIGlzIG9ubHkgcmVsZXZhbnQgaWYgd2UgYXJlIHRyYWNraW5nIGJyYW5jaGVzICh1c2luZworCW9uZSBvZiB0aGUgcmVwb3NpdG9yeSBsYXlvdXQgb3B0aW9ucyAtLXRydW5rLCAtLXRhZ3MsCisJLS1icmFuY2hlcywgLS1zdGRsYXlvdXQpLiBGb3IgZWFjaCB0cmFja2VkIGJyYW5jaCwgdHJ5IHRvIGZpbmQKKwlvdXQgd2hlcmUgaXRzIHJldmlzaW9uIHdhcyBjb3BpZWQgZnJvbSwgYW5kIHNldAorCWEgc3VpdGFibGUgcGFyZW50IGluIHRoZSBmaXJzdCBHaXQgY29tbWl0IGZvciB0aGUgYnJhbmNoLgogCVRoaXMgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdoZW4gd2UncmUgdHJhY2tpbmcgYSBkaXJlY3RvcnkKLQl0aGF0IGhhcyBiZWVuIG1vdmVkIGFyb3VuZCB3aXRoaW4gdGhlIHJlcG9zaXRvcnksIG9yIGlmIHdlCi0Jc3RhcnRlZCB0cmFja2luZyBhIGJyYW5jaCBhbmQgbmV2ZXIgdHJhY2tlZCB0aGUgdHJ1bmsgaXQgd2FzCi0JZGVzY2VuZGVkIGZyb20uIFRoaXMgZmVhdHVyZSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIHVzZQorCXRoYXQgaGFzIGJlZW4gbW92ZWQgYXJvdW5kIHdpdGhpbiB0aGUgcmVwb3NpdG9yeS4gIElmIHRoaXMKKwlmZWF0dXJlIGlzIGRpc2FibGVkLCB0aGUgYnJhbmNoZXMgY3JlYXRlZCBieSAnZ2l0IHN2bicgd2lsbCBhbGwKKwliZSBsaW5lYXIgYW5kIG5vdCBzaGFyZSBhbnkgaGlzdG9yeSwgbWVhbmluZyB0aGF0IHRoZXJlIHdpbGwgYmUKKwlubyBpbmZvcm1hdGlvbiBvbiB3aGVyZSBicmFuY2hlcyB3ZXJlIGJyYW5jaGVkIG9mZiBvciBtZXJnZWQuCisJSG93ZXZlciwgZm9sbG93aW5nIGxvbmcvY29udm9sdXRlZCBoaXN0b3JpZXMgY2FuIHRha2UgYSBsb25nCisJdGltZSwgc28gZGlzYWJsaW5nIHRoaXMgZmVhdHVyZSBtYXkgc3BlZWQgdXAgdGhlIGNsb25pbmcKKwlwcm9jZXNzLiBUaGlzIGZlYXR1cmUgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCB1c2UKIAktLW5vLWZvbGxvdy1wYXJlbnQgdG8gZGlzYWJsZSBpdC4KICsKIFt2ZXJzZV0KQEAgLTY0OCw3ICs2OTMsNyBAQAogKwogVGhpcyBvcHRpb24gaXMgTk9UIHJlY29tbWVuZGVkIGFzIGl0IG1ha2VzIGl0IGRpZmZpY3VsdCB0byB0cmFjayBkb3duCiBvbGQgcmVmZXJlbmNlcyB0byBTVk4gcmV2aXNpb24gbnVtYmVycyBpbiBleGlzdGluZyBkb2N1bWVudGF0aW9uLCBidWcKLXJlcG9ydHMgYW5kIGFyY2hpdmVzLiAgSWYgeW91IHBsYW4gdG8gZXZlbnR1YWxseSBtaWdyYXRlIGZyb20gU1ZOIHRvIGdpdAorcmVwb3J0cyBhbmQgYXJjaGl2ZXMuICBJZiB5b3UgcGxhbiB0byBldmVudHVhbGx5IG1pZ3JhdGUgZnJvbSBTVk4gdG8gR2l0CiBhbmQgYXJlIGNlcnRhaW4gYWJvdXQgZHJvcHBpbmcgU1ZOIGhpc3RvcnksIGNvbnNpZGVyCiBsaW5rZ2l0OmdpdC1maWx0ZXItYnJhbmNoWzFdIGluc3RlYWQuICBmaWx0ZXItYnJhbmNoIGFsc28gYWxsb3dzCiByZWZvcm1hdHRpbmcgb2YgbWV0YWRhdGEgZm9yIGVhc2Utb2YtcmVhZGluZyBhbmQgcmV3cml0aW5nIGF1dGhvcnNoaXAKQEAgLTY4OCw3ICs3MzMsNyBAQAogCiBzdm4tcmVtb3RlLjxuYW1lPi5wdXNodXJsOjoKIAotCVNpbWlsYXIgdG8gZ2l0J3MgJ3JlbW90ZS48bmFtZT4ucHVzaHVybCcsIHRoaXMga2V5IGlzIGRlc2lnbmVkCisJU2ltaWxhciB0byBHaXQncyAncmVtb3RlLjxuYW1lPi5wdXNodXJsJywgdGhpcyBrZXkgaXMgZGVzaWduZWQKIAl0byBiZSB1c2VkIGluIGNhc2VzIHdoZXJlICd1cmwnIHBvaW50cyB0byBhbiBTVk4gcmVwb3NpdG9yeQogCXZpYSBhIHJlYWQtb25seSB0cmFuc3BvcnQsIHRvIHByb3ZpZGUgYW4gYWx0ZXJuYXRlIHJlYWQvd3JpdGUKIAl0cmFuc3BvcnQuIEl0IGlzIGFzc3VtZWQgdGhhdCBib3RoIGtleXMgcG9pbnQgdG8gdGhlIHNhbWUKQEAgLTczMiw3ICs3NzcsOCBAQAogQkFTSUMgRVhBTVBMRVMKIC0tLS0tLS0tLS0tLS0tCiAKLVRyYWNraW5nIGFuZCBjb250cmlidXRpbmcgdG8gdGhlIHRydW5rIG9mIGEgU3VidmVyc2lvbi1tYW5hZ2VkIHByb2plY3Q6CitUcmFja2luZyBhbmQgY29udHJpYnV0aW5nIHRvIHRoZSB0cnVuayBvZiBhIFN1YnZlcnNpb24tbWFuYWdlZCBwcm9qZWN0CisoaWdub3JpbmcgdGFncyBhbmQgYnJhbmNoZXMpOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgQ2xvbmUgYSByZXBvIChsaWtlIGdpdCBjbG9uZSk6CkBAIC03NDEsMTUgKzc4NywxNSBAQAogCWNkIHRydW5rCiAjIFlvdSBzaG91bGQgYmUgb24gbWFzdGVyIGJyYW5jaCwgZG91YmxlLWNoZWNrIHdpdGggJ2dpdCBicmFuY2gnCiAJZ2l0IGJyYW5jaAotIyBEbyBzb21lIHdvcmsgYW5kIGNvbW1pdCBsb2NhbGx5IHRvIGdpdDoKKyMgRG8gc29tZSB3b3JrIGFuZCBjb21taXQgbG9jYWxseSB0byBHaXQ6CiAJZ2l0IGNvbW1pdCAuLi4KICMgU29tZXRoaW5nIGlzIGNvbW1pdHRlZCB0byBTVk4sIHJlYmFzZSB5b3VyIGxvY2FsIGNoYW5nZXMgYWdhaW5zdCB0aGUKICMgbGF0ZXN0IGNoYW5nZXMgaW4gU1ZOOgogCWdpdCBzdm4gcmViYXNlCi0jIE5vdyBjb21taXQgeW91ciBjaGFuZ2VzICh0aGF0IHdlcmUgY29tbWl0dGVkIHByZXZpb3VzbHkgdXNpbmcgZ2l0KSB0byBTVk4sCisjIE5vdyBjb21taXQgeW91ciBjaGFuZ2VzICh0aGF0IHdlcmUgY29tbWl0dGVkIHByZXZpb3VzbHkgdXNpbmcgR2l0KSB0byBTVk4sCiAjIGFzIHdlbGwgYXMgYXV0b21hdGljYWxseSB1cGRhdGluZyB5b3VyIHdvcmtpbmcgSEVBRDoKIAlnaXQgc3ZuIGRjb21taXQKLSMgQXBwZW5kIHN2bjppZ25vcmUgc2V0dGluZ3MgdG8gdGhlIGRlZmF1bHQgZ2l0IGV4Y2x1ZGUgZmlsZToKKyMgQXBwZW5kIHN2bjppZ25vcmUgc2V0dGluZ3MgdG8gdGhlIGRlZmF1bHQgR2l0IGV4Y2x1ZGUgZmlsZToKIAlnaXQgc3ZuIHNob3ctaWdub3JlID4+IC5naXQvaW5mby9leGNsdWRlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtNzU3LDggKzgwMywxMCBAQAogKGNvbXBsZXRlIHdpdGggYSB0cnVuaywgdGFncyBhbmQgYnJhbmNoZXMpOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ2xvbmUgYSByZXBvIChsaWtlIGdpdCBjbG9uZSk6Ci0JZ2l0IHN2biBjbG9uZSBodHRwOi8vc3ZuLmV4YW1wbGUuY29tL3Byb2plY3QgLVQgdHJ1bmsgLWIgYnJhbmNoZXMgLXQgdGFncworIyBDbG9uZSBhIHJlcG8gd2l0aCBzdGFuZGFyZCBTVk4gZGlyZWN0b3J5IGxheW91dCAobGlrZSBnaXQgY2xvbmUpOgorCWdpdCBzdm4gY2xvbmUgaHR0cDovL3N2bi5leGFtcGxlLmNvbS9wcm9qZWN0IC0tc3RkbGF5b3V0CisjIE9yLCBpZiB0aGUgcmVwbyB1c2VzIGEgbm9uLXN0YW5kYXJkIGRpcmVjdG9yeSBsYXlvdXQ6CisJZ2l0IHN2biBjbG9uZSBodHRwOi8vc3ZuLmV4YW1wbGUuY29tL3Byb2plY3QgLVQgdHIgLWIgYnJhbmNoIC10IHRhZwogIyBWaWV3IGFsbCBicmFuY2hlcyBhbmQgdGFncyB5b3UgaGF2ZSBjbG9uZWQ6CiAJZ2l0IGJyYW5jaCAtcgogIyBDcmVhdGUgYSBuZXcgYnJhbmNoIGluIFNWTgpAQCAtNzg3LDcgKzgzNSw3IEBACiAJZ2l0IHJlbW90ZSBhZGQgb3JpZ2luIHNlcnZlcjovcHViL3Byb2plY3QKIAlnaXQgY29uZmlnIC0tcmVwbGFjZS1hbGwgcmVtb3RlLm9yaWdpbi5mZXRjaCAnK3JlZnMvcmVtb3Rlcy8qOnJlZnMvcmVtb3Rlcy8qJwogCWdpdCBmZXRjaAotIyBQcmV2ZW50IGZldGNoL3B1bGwgZnJvbSByZW1vdGUgZ2l0IHNlcnZlciBpbiB0aGUgZnV0dXJlLAorIyBQcmV2ZW50IGZldGNoL3B1bGwgZnJvbSByZW1vdGUgR2l0IHNlcnZlciBpbiB0aGUgZnV0dXJlLAogIyB3ZSBvbmx5IHdhbnQgdG8gdXNlIGdpdCBzdm4gZm9yIGZ1dHVyZSB1cGRhdGVzCiAJZ2l0IGNvbmZpZyAtLXJlbW92ZS1zZWN0aW9uIHJlbW90ZS5vcmlnaW4KICMgQ3JlYXRlIGEgbG9jYWwgYnJhbmNoIGZyb20gb25lIG9mIHRoZSBicmFuY2hlcyBqdXN0IGZldGNoZWQKQEAgLTgyMCwyMiArODY4LDY4IEBACiBjb3B5IGhpc3RvcnkgKGluY2x1ZGluZyBicmFuY2hlcyBhbmQgdGFncykgZm9yIHJlcG9zaXRvcmllcyBhZG9wdGluZyBhCiBzdGFuZGFyZCBsYXlvdXQsIGl0IGNhbm5vdCB5ZXQgcmVwcmVzZW50IG1lcmdlIGhpc3RvcnkgdGhhdCBoYXBwZW5lZAogaW5zaWRlIGdpdCBiYWNrIHVwc3RyZWFtIHRvIFNWTiB1c2Vycy4gIFRoZXJlZm9yZSBpdCBpcyBhZHZpc2VkIHRoYXQKLXVzZXJzIGtlZXAgaGlzdG9yeSBhcyBsaW5lYXIgYXMgcG9zc2libGUgaW5zaWRlIGdpdCB0byBlYXNlCit1c2VycyBrZWVwIGhpc3RvcnkgYXMgbGluZWFyIGFzIHBvc3NpYmxlIGluc2lkZSBHaXQgdG8gZWFzZQogY29tcGF0aWJpbGl0eSB3aXRoIFNWTiAoc2VlIHRoZSBDQVZFQVRTIHNlY3Rpb24gYmVsb3cpLgogCitIQU5ETElORyBPRiBTVk4gQlJBTkNIRVMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSWYgJ2dpdCBzdm4nIGlzIGNvbmZpZ3VyZWQgdG8gZmV0Y2ggYnJhbmNoZXMgKGFuZCAtLWZvbGxvdy1icmFuY2hlcworaXMgaW4gZWZmZWN0KSwgaXQgc29tZXRpbWVzIGNyZWF0ZXMgbXVsdGlwbGUgR2l0IGJyYW5jaGVzIGZvciBvbmUKK1NWTiBicmFuY2gsIHdoZXJlIHRoZSBhZGRpdGlvbmFsIGJyYW5jaGVzIGhhdmUgbmFtZXMgb2YgdGhlIGZvcm0KKydicmFuY2huYW1lQG5ubicgKHdpdGggbm5uIGFuIFNWTiByZXZpc2lvbiBudW1iZXIpLiAgVGhlc2UgYWRkaXRpb25hbAorYnJhbmNoZXMgYXJlIGNyZWF0ZWQgaWYgJ2dpdCBzdm4nIGNhbm5vdCBmaW5kIGEgcGFyZW50IGNvbW1pdCBmb3IgdGhlCitmaXJzdCBjb21taXQgaW4gYW4gU1ZOIGJyYW5jaCwgdG8gY29ubmVjdCB0aGUgYnJhbmNoIHRvIHRoZSBoaXN0b3J5IG9mCit0aGUgb3RoZXIgYnJhbmNoZXMuCisKK05vcm1hbGx5LCB0aGUgZmlyc3QgY29tbWl0IGluIGFuIFNWTiBicmFuY2ggY29uc2lzdHMKK29mIGEgY29weSBvcGVyYXRpb24uICdnaXQgc3ZuJyB3aWxsIHJlYWQgdGhpcyBjb21taXQgdG8gZ2V0IHRoZSBTVk4KK3JldmlzaW9uIHRoZSBicmFuY2ggd2FzIGNyZWF0ZWQgZnJvbS4gSXQgd2lsbCB0aGVuIHRyeSB0byBmaW5kIHRoZQorR2l0IGNvbW1pdCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoaXMgU1ZOIHJldmlzaW9uLCBhbmQgdXNlIHRoYXQgYXMgdGhlCitwYXJlbnQgb2YgdGhlIGJyYW5jaC4gSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSBpcyBubyBzdWl0YWJsZQorR2l0IGNvbW1pdCB0byBzZXJ2ZSBhcyBwYXJlbnQuICBUaGlzIHdpbGwgaGFwcGVuLCBhbW9uZyBvdGhlciByZWFzb25zLAoraWYgdGhlIFNWTiBicmFuY2ggaXMgYSBjb3B5IG9mIGEgcmV2aXNpb24gdGhhdCB3YXMgbm90IGZldGNoZWQgYnkgJ2dpdAorc3ZuJyAoZS5nLiBiZWNhdXNlIGl0IGlzIGFuIG9sZCByZXZpc2lvbiB0aGF0IHdhcyBza2lwcGVkIHdpdGgKKyctLXJldmlzaW9uJyksIG9yIGlmIGluIFNWTiBhIGRpcmVjdG9yeSB3YXMgY29waWVkIHRoYXQgaXMgbm90IHRyYWNrZWQKK2J5ICdnaXQgc3ZuJyAoc3VjaCBhcyBhIGJyYW5jaCB0aGF0IGlzIG5vdCB0cmFja2VkIGF0IGFsbCwgb3IgYQorc3ViZGlyZWN0b3J5IG9mIGEgdHJhY2tlZCBicmFuY2gpLiBJbiB0aGVzZSBjYXNlcywgJ2dpdCBzdm4nIHdpbGwgc3RpbGwKK2NyZWF0ZSBhIEdpdCBicmFuY2gsIGJ1dCBpbnN0ZWFkIG9mIHVzaW5nIGFuIGV4aXN0aW5nIEdpdCBjb21taXQgYXMgdGhlCitwYXJlbnQgb2YgdGhlIGJyYW5jaCwgaXQgd2lsbCByZWFkIHRoZSBTVk4gaGlzdG9yeSBvZiB0aGUgZGlyZWN0b3J5IHRoZQorYnJhbmNoIHdhcyBjb3BpZWQgZnJvbSBhbmQgY3JlYXRlIGFwcHJvcHJpYXRlIEdpdCBjb21taXRzLiAgVGhpcyBpcworaW5kaWNhdGVkIGJ5IHRoZSBtZXNzYWdlICJJbml0aWFsaXppbmcgcGFyZW50OiA8YnJhbmNobmFtZT4iLgorCitBZGRpdGlvbmFsbHksIGl0IHdpbGwgY3JlYXRlIGEgc3BlY2lhbCBicmFuY2ggbmFtZWQKKyc8YnJhbmNobmFtZT5APFNWTi1SZXZpc2lvbj4nLCB3aGVyZSA8U1ZOLVJldmlzaW9uPiBpcyB0aGUgU1ZOIHJldmlzaW9uCitudW1iZXIgdGhlIGJyYW5jaCB3YXMgY29waWVkIGZyb20uICBUaGlzIGJyYW5jaCB3aWxsIHBvaW50IHRvIHRoZSBuZXdseQorY3JlYXRlZCBwYXJlbnQgY29tbWl0IG9mIHRoZSBicmFuY2guICBJZiBpbiBTVk4gdGhlIGJyYW5jaCB3YXMgZGVsZXRlZAorYW5kIGxhdGVyIHJlY3JlYXRlZCBmcm9tIGEgZGlmZmVyZW50IHZlcnNpb24sIHRoZXJlIHdpbGwgYmUgbXVsdGlwbGUKK3N1Y2ggYnJhbmNoZXMgd2l0aCBhbiAnQCcuCisKK05vdGUgdGhhdCB0aGlzIG1heSBtZWFuIHRoYXQgbXVsdGlwbGUgR2l0IGNvbW1pdHMgYXJlIGNyZWF0ZWQgZm9yIGEKK3NpbmdsZSBTVk4gcmV2aXNpb24uCisKK0FuIGV4YW1wbGU6IGluIGFuIFNWTiByZXBvc2l0b3J5IHdpdGggYSBzdGFuZGFyZAordHJ1bmsvdGFncy9icmFuY2hlcyBsYXlvdXQsIGEgZGlyZWN0b3J5IHRydW5rL3N1YiBpcyBjcmVhdGVkIGluIHIuMTAwLgorSW4gci4yMDAsIHRydW5rL3N1YiBpcyBicmFuY2hlZCBieSBjb3B5aW5nIGl0IHRvIGJyYW5jaGVzLy4gJ2dpdCBzdm4KK2Nsb25lIC1zJyB3aWxsIHRoZW4gY3JlYXRlIGEgYnJhbmNoICdzdWInLiBJdCB3aWxsIGFsc28gY3JlYXRlIG5ldyBHaXQKK2NvbW1pdHMgZm9yIHIuMTAwIHRocm91Z2ggci4xOTkgYW5kIHVzZSB0aGVzZSBhcyB0aGUgaGlzdG9yeSBvZiBicmFuY2gKKydzdWInLiBUaHVzIHRoZXJlIHdpbGwgYmUgdHdvIEdpdCBjb21taXRzIGZvciBlYWNoIHJldmlzaW9uIGZyb20gci4xMDAKK3RvIHIuMTk5IChvbmUgY29udGFpbmluZyB0cnVuay8sIG9uZSBjb250YWluaW5nIHRydW5rL3N1Yi8pLiBGaW5hbGx5LAoraXQgd2lsbCBjcmVhdGUgYSBicmFuY2ggJ3N1YkAyMDAnIHBvaW50aW5nIHRvIHRoZSBuZXcgcGFyZW50IGNvbW1pdCBvZgorYnJhbmNoICdzdWInIChpLmUuIHRoZSBjb21taXQgZm9yIHIuMjAwIGFuZCB0cnVuay9zdWIvKS4KKwogQ0FWRUFUUwogLS0tLS0tLQogCiBGb3IgdGhlIHNha2Ugb2Ygc2ltcGxpY2l0eSBhbmQgaW50ZXJvcGVyYXRpbmcgd2l0aCBTdWJ2ZXJzaW9uLAogaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBhbGwgJ2dpdCBzdm4nIHVzZXJzIGNsb25lLCBmZXRjaCBhbmQgZGNvbW1pdAogZGlyZWN0bHkgZnJvbSB0aGUgU1ZOIHNlcnZlciwgYW5kIGF2b2lkIGFsbCAnZ2l0IGNsb25lJy8ncHVsbCcvJ21lcmdlJy8ncHVzaCcKLW9wZXJhdGlvbnMgYmV0d2VlbiBnaXQgcmVwb3NpdG9yaWVzIGFuZCBicmFuY2hlcy4gIFRoZSByZWNvbW1lbmRlZAotbWV0aG9kIG9mIGV4Y2hhbmdpbmcgY29kZSBiZXR3ZWVuIGdpdCBicmFuY2hlcyBhbmQgdXNlcnMgaXMKK29wZXJhdGlvbnMgYmV0d2VlbiBHaXQgcmVwb3NpdG9yaWVzIGFuZCBicmFuY2hlcy4gIFRoZSByZWNvbW1lbmRlZAorbWV0aG9kIG9mIGV4Y2hhbmdpbmcgY29kZSBiZXR3ZWVuIEdpdCBicmFuY2hlcyBhbmQgdXNlcnMgaXMKICdnaXQgZm9ybWF0LXBhdGNoJyBhbmQgJ2dpdCBhbScsIG9yIGp1c3QgJ2Rjb21taXQnaW5nIHRvIHRoZSBTVk4gcmVwb3NpdG9yeS4KIAogUnVubmluZyAnZ2l0IG1lcmdlJyBvciAnZ2l0IHB1bGwnIGlzIE5PVCByZWNvbW1lbmRlZCBvbiBhIGJyYW5jaCB5b3UKIHBsYW4gdG8gJ2Rjb21taXQnIGZyb20gYmVjYXVzZSBTdWJ2ZXJzaW9uIHVzZXJzIGNhbm5vdCBzZWUgYW55Ci1tZXJnZXMgeW91J3ZlIG1hZGUuICBGdXJ0aGVybW9yZSwgaWYgeW91IG1lcmdlIG9yIHB1bGwgZnJvbSBhIGdpdCBicmFuY2gKK21lcmdlcyB5b3UndmUgbWFkZS4gIEZ1cnRoZXJtb3JlLCBpZiB5b3UgbWVyZ2Ugb3IgcHVsbCBmcm9tIGEgR2l0IGJyYW5jaAogdGhhdCBpcyBhIG1pcnJvciBvZiBhbiBTVk4gYnJhbmNoLCAnZGNvbW1pdCcgbWF5IGNvbW1pdCB0byB0aGUgd3JvbmcKIGJyYW5jaC4KIApAQCAtODU0LDcgKzk0OCw3IEBACiB1c2luZyAnZ2l0IHN2bicgc2hvdWxkIHVzZSAncnN5bmMnIGZvciBjbG9uaW5nLCBpZiBjbG9uaW5nIGlzIHRvIGJlIGRvbmUKIGF0IGFsbC4KIAotU2luY2UgJ2Rjb21taXQnIHVzZXMgcmViYXNlIGludGVybmFsbHksIGFueSBnaXQgYnJhbmNoZXMgeW91ICdnaXQgcHVzaCcgdG8KK1NpbmNlICdkY29tbWl0JyB1c2VzIHJlYmFzZSBpbnRlcm5hbGx5LCBhbnkgR2l0IGJyYW5jaGVzIHlvdSAnZ2l0IHB1c2gnIHRvCiBiZWZvcmUgJ2Rjb21taXQnIG9uIHdpbGwgcmVxdWlyZSBmb3JjaW5nIGFuIG92ZXJ3cml0ZSBvZiB0aGUgZXhpc3RpbmcgcmVmCiBvbiB0aGUgcmVtb3RlIHJlcG9zaXRvcnkuICBUaGlzIGlzIGdlbmVyYWxseSBjb25zaWRlcmVkIGJhZCBwcmFjdGljZSwKIHNlZSB0aGUgbGlua2dpdDpnaXQtcHVzaFsxXSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgpAQCAtODY0LDEwICs5NTgsMjUgQEAKIHlvdSd2ZSBhbHJlYWR5IHB1c2hlZCB0byBhIHJlbW90ZSByZXBvc2l0b3J5IGZvciBvdGhlciB1c2VycywgYW5kCiBkY29tbWl0IHdpdGggU1ZOIGlzIGFuYWxvZ291cyB0byB0aGF0LgogCitXaGVuIGNsb25pbmcgYW4gU1ZOIHJlcG9zaXRvcnksIGlmIG5vbmUgb2YgdGhlIG9wdGlvbnMgZm9yIGRlc2NyaWJpbmcKK3RoZSByZXBvc2l0b3J5IGxheW91dCBpcyB1c2VkICgtLXRydW5rLCAtLXRhZ3MsIC0tYnJhbmNoZXMsCistLXN0ZGxheW91dCksICdnaXQgc3ZuIGNsb25lJyB3aWxsIGNyZWF0ZSBhIEdpdCByZXBvc2l0b3J5IHdpdGgKK2NvbXBsZXRlbHkgbGluZWFyIGhpc3RvcnksIHdoZXJlIGJyYW5jaGVzIGFuZCB0YWdzIGFwcGVhciBhcyBzZXBhcmF0ZQorZGlyZWN0b3JpZXMgaW4gdGhlIHdvcmtpbmcgY29weS4gIFdoaWxlIHRoaXMgaXMgdGhlIGVhc2llc3Qgd2F5IHRvIGdldCBhCitjb3B5IG9mIGEgY29tcGxldGUgcmVwb3NpdG9yeSwgZm9yIHByb2plY3RzIHdpdGggbWFueSBicmFuY2hlcyBpdCB3aWxsCitsZWFkIHRvIGEgd29ya2luZyBjb3B5IG1hbnkgdGltZXMgbGFyZ2VyIHRoYW4ganVzdCB0aGUgdHJ1bmsuIFRodXMgZm9yCitwcm9qZWN0cyB1c2luZyB0aGUgc3RhbmRhcmQgZGlyZWN0b3J5IHN0cnVjdHVyZSAodHJ1bmsvYnJhbmNoZXMvdGFncyksCitpdCBpcyByZWNvbW1lbmRlZCB0byBjbG9uZSB3aXRoIG9wdGlvbiAnLS1zdGRsYXlvdXQnLiBJZiB0aGUgcHJvamVjdAordXNlcyBhIG5vbi1zdGFuZGFyZCBzdHJ1Y3R1cmUsIGFuZC9vciBpZiBicmFuY2hlcyBhbmQgdGFncyBhcmUgbm90CityZXF1aXJlZCwgaXQgaXMgZWFzaWVzdCB0byBvbmx5IGNsb25lIG9uZSBkaXJlY3RvcnkgKHR5cGljYWxseSB0cnVuayksCit3aXRob3V0IGdpdmluZyBhbnkgcmVwb3NpdG9yeSBsYXlvdXQgb3B0aW9ucy4gIElmIHRoZSBmdWxsIGhpc3Rvcnkgd2l0aAorYnJhbmNoZXMgYW5kIHRhZ3MgaXMgcmVxdWlyZWQsIHRoZSBvcHRpb25zICctLXRydW5rJyAvICctLWJyYW5jaGVzJyAvCisnLS10YWdzJyBtdXN0IGJlIHVzZWQuCisKIFdoZW4gdXNpbmcgbXVsdGlwbGUgLS1icmFuY2hlcyBvciAtLXRhZ3MsICdnaXQgc3ZuJyBkb2VzIG5vdCBhdXRvbWF0aWNhbGx5CiBoYW5kbGUgbmFtZSBjb2xsaXNpb25zIChmb3IgZXhhbXBsZSwgaWYgdHdvIGJyYW5jaGVzIGZyb20gZGlmZmVyZW50IHBhdGhzIGhhdmUKIHRoZSBzYW1lIG5hbWUsIG9yIGlmIGEgYnJhbmNoIGFuZCBhIHRhZyBoYXZlIHRoZSBzYW1lIG5hbWUpLiAgSW4gdGhlc2UgY2FzZXMsCi11c2UgJ2luaXQnIHRvIHNldCB1cCB5b3VyIGdpdCByZXBvc2l0b3J5IHRoZW4sIGJlZm9yZSB5b3VyIGZpcnN0ICdmZXRjaCcsIGVkaXQKK3VzZSAnaW5pdCcgdG8gc2V0IHVwIHlvdXIgR2l0IHJlcG9zaXRvcnkgdGhlbiwgYmVmb3JlIHlvdXIgZmlyc3QgJ2ZldGNoJywgZWRpdAogdGhlIC5naXQvY29uZmlnIGZpbGUgc28gdGhhdCB0aGUgYnJhbmNoZXMgYW5kIHRhZ3MgYXJlIGFzc29jaWF0ZWQgd2l0aAogZGlmZmVyZW50IG5hbWUgc3BhY2VzLiAgRm9yIGV4YW1wbGU6CiAKQEAgLTg4MCwxOCArOTg5LDI0IEBACiBXZSBpZ25vcmUgYWxsIFNWTiBwcm9wZXJ0aWVzIGV4Y2VwdCBzdm46ZXhlY3V0YWJsZS4gIEFueSB1bmhhbmRsZWQKIHByb3BlcnRpZXMgYXJlIGxvZ2dlZCB0byAkR0lUX0RJUi9zdm4vPHJlZm5hbWU+L3VuaGFuZGxlZC5sb2cKIAotUmVuYW1lZCBhbmQgY29waWVkIGRpcmVjdG9yaWVzIGFyZSBub3QgZGV0ZWN0ZWQgYnkgZ2l0IGFuZCBoZW5jZSBub3QKK1JlbmFtZWQgYW5kIGNvcGllZCBkaXJlY3RvcmllcyBhcmUgbm90IGRldGVjdGVkIGJ5IEdpdCBhbmQgaGVuY2Ugbm90CiB0cmFja2VkIHdoZW4gY29tbWl0dGluZyB0byBTVk4uICBJIGRvIG5vdCBwbGFuIG9uIGFkZGluZyBzdXBwb3J0IGZvcgogdGhpcyBhcyBpdCdzIHF1aXRlIGRpZmZpY3VsdCBhbmQgdGltZS1jb25zdW1pbmcgdG8gZ2V0IHdvcmtpbmcgZm9yIGFsbAotdGhlIHBvc3NpYmxlIGNvcm5lciBjYXNlcyAoZ2l0IGRvZXNuJ3QgZG8gaXQsIGVpdGhlcikuICBDb21taXR0aW5nCit0aGUgcG9zc2libGUgY29ybmVyIGNhc2VzIChHaXQgZG9lc24ndCBkbyBpdCwgZWl0aGVyKS4gIENvbW1pdHRpbmcKIHJlbmFtZWQgYW5kIGNvcGllZCBmaWxlcyBpcyBmdWxseSBzdXBwb3J0ZWQgaWYgdGhleSdyZSBzaW1pbGFyIGVub3VnaAotZm9yIGdpdCB0byBkZXRlY3QgdGhlbS4KK2ZvciBHaXQgdG8gZGV0ZWN0IHRoZW0uCisKK0luIFNWTiwgaXQgaXMgcG9zc2libGUgKHRob3VnaCBkaXNjb3VyYWdlZCkgdG8gY29tbWl0IGNoYW5nZXMgdG8gYSB0YWcKKyhiZWNhdXNlIGEgdGFnIGlzIGp1c3QgYSBkaXJlY3RvcnkgY29weSwgdGh1cyB0ZWNobmljYWxseSB0aGUgc2FtZSBhcyBhCiticmFuY2gpLiBXaGVuIGNsb25pbmcgYW4gU1ZOIHJlcG9zaXRvcnksICdnaXQgc3ZuJyBjYW5ub3Qga25vdyBpZiBzdWNoIGEKK2NvbW1pdCB0byBhIHRhZyB3aWxsIGhhcHBlbiBpbiB0aGUgZnV0dXJlLiBUaHVzIGl0IGFjdHMgY29uc2VydmF0aXZlbHkKK2FuZCBpbXBvcnRzIGFsbCBTVk4gdGFncyBhcyBicmFuY2hlcywgcHJlZml4aW5nIHRoZSB0YWcgbmFtZSB3aXRoICd0YWdzLycuCiAKIENPTkZJR1VSQVRJT04KIC0tLS0tLS0tLS0tLS0KIAogJ2dpdCBzdm4nIHN0b3JlcyBbc3ZuLXJlbW90ZV0gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBpbiB0aGUKLXJlcG9zaXRvcnkgLmdpdC9jb25maWcgZmlsZS4gIEl0IGlzIHNpbWlsYXIgdGhlIGNvcmUgZ2l0CityZXBvc2l0b3J5IC5naXQvY29uZmlnIGZpbGUuICBJdCBpcyBzaW1pbGFyIHRoZSBjb3JlIEdpdAogW3JlbW90ZV0gc2VjdGlvbnMgZXhjZXB0ICdmZXRjaCcga2V5cyBkbyBub3QgYWNjZXB0IGdsb2IKIGFyZ3VtZW50czsgYnV0IHRoZXkgYXJlIGluc3RlYWQgaGFuZGxlZCBieSB0aGUgJ2JyYW5jaGVzJwogYW5kICd0YWdzJyBrZXlzLiAgU2luY2Ugc29tZSBTVk4gcmVwb3NpdG9yaWVzIGFyZSBvZGRseQpAQCAtOTI0LDYgKzEwMzksMjUgQEAKIAl0YWdzID0gdGFncy97MS4wLDIuMH0vc3JjOnJlZnMvcmVtb3Rlcy90YWdzLyoKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitNdWx0aXBsZSBmZXRjaCwgYnJhbmNoZXMsIGFuZCB0YWdzIGtleXMgYXJlIHN1cHBvcnRlZDoKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitbc3ZuLXJlbW90ZSAibWVzc3ktcmVwbyJdCisJdXJsID0gaHR0cDovL3NlcnZlci5vcmcvc3ZuCisJZmV0Y2ggPSB0cnVuay9wcm9qZWN0LWE6cmVmcy9yZW1vdGVzL3Byb2plY3QtYS90cnVuaworCWZldGNoID0gYnJhbmNoZXMvZGVtb3MvanVuZS1wcm9qZWN0LWEtZGVtbzpyZWZzL3JlbW90ZXMvcHJvamVjdC1hL2RlbW9zL2p1bmUtZGVtbworCWJyYW5jaGVzID0gYnJhbmNoZXMvc2VydmVyLyo6cmVmcy9yZW1vdGVzL3Byb2plY3QtYS9icmFuY2hlcy8qCisJYnJhbmNoZXMgPSBicmFuY2hlcy9kZW1vcy8yMDExLyo6cmVmcy9yZW1vdGVzL3Byb2plY3QtYS8yMDExLWRlbW9zLyoKKwl0YWdzID0gdGFncy9zZXJ2ZXIvKjpyZWZzL3JlbW90ZXMvcHJvamVjdC1hL3RhZ3MvKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NyZWF0aW5nIGEgYnJhbmNoIGluIHN1Y2ggYSBjb25maWd1cmF0aW9uIHJlcXVpcmVzIGRpc2FtYmlndWF0aW5nIHdoaWNoCitsb2NhdGlvbiB0byB1c2UgdXNpbmcgdGhlIC1kIG9yIC0tZGVzdGluYXRpb24gZmxhZzoKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiskIGdpdCBzdm4gYnJhbmNoIC1kIGJyYW5jaGVzL3NlcnZlciByZWxlYXNlLTItMy0wCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogTm90ZSB0aGF0IGdpdC1zdm4ga2VlcHMgdHJhY2sgb2YgdGhlIGhpZ2hlc3QgcmV2aXNpb24gaW4gd2hpY2ggYSBicmFuY2gKIG9yIHRhZyBoYXMgYXBwZWFyZWQuIElmIHRoZSBzdWJzZXQgb2YgYnJhbmNoZXMgb3IgdGFncyBpcyBjaGFuZ2VkIGFmdGVyCiBmZXRjaGluZywgdGhlbiAuZ2l0L3N2bi8ubWV0YWRhdGEgbXVzdCBiZSBtYW51YWxseSBlZGl0ZWQgdG8gcmVtb3ZlIChvcgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtc3ltYm9saWMtcmVmLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXN5bWJvbGljLXJlZi50eHQKaW5kZXggOTgxZDNhOC4uZWY2OGFkMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc3ltYm9saWMtcmVmLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1zeW1ib2xpYy1yZWYudHh0CkBAIC0zLDEzICszLDE0IEBACiAKIE5BTUUKIC0tLS0KLWdpdC1zeW1ib2xpYy1yZWYgLSBSZWFkIGFuZCBtb2RpZnkgc3ltYm9saWMgcmVmcworZ2l0LXN5bWJvbGljLXJlZiAtIFJlYWQsIG1vZGlmeSBhbmQgZGVsZXRlIHN5bWJvbGljIHJlZnMKIAogU1lOT1BTSVMKIC0tLS0tLS0tCiBbdmVyc2VdCiAnZ2l0IHN5bWJvbGljLXJlZicgWy1tIDxyZWFzb24+XSA8bmFtZT4gPHJlZj4KICdnaXQgc3ltYm9saWMtcmVmJyBbLXFdIFstLXNob3J0XSA8bmFtZT4KKydnaXQgc3ltYm9saWMtcmVmJyAtLWRlbGV0ZSBbLXFdIDxuYW1lPgogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KQEAgLTIxLDYgKzIyLDkgQEAKIEdpdmVuIHR3byBhcmd1bWVudHMsIGNyZWF0ZXMgb3IgdXBkYXRlcyBhIHN5bWJvbGljIHJlZiA8bmFtZT4gdG8KIHBvaW50IGF0IHRoZSBnaXZlbiBicmFuY2ggPHJlZj4uCiAKK0dpdmVuIGAtLWRlbGV0ZWAgYW5kIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQsIGRlbGV0ZXMgdGhlIGdpdmVuCitzeW1ib2xpYyByZWYuCisKIEEgc3ltYm9saWMgcmVmIGlzIGEgcmVndWxhciBmaWxlIHRoYXQgc3RvcmVzIGEgc3RyaW5nIHRoYXQKIGJlZ2lucyB3aXRoIGByZWY6IHJlZnMvYC4gIEZvciBleGFtcGxlLCB5b3VyIGAuZ2l0L0hFQURgIGlzCiBhIHJlZ3VsYXIgZmlsZSB3aG9zZSBjb250ZW50cyBpcyBgcmVmOiByZWZzL2hlYWRzL21hc3RlcmAuCkBAIC0yOCw2ICszMiwxMCBAQAogT1BUSU9OUwogLS0tLS0tLQogCistZDo6CistLWRlbGV0ZTo6CisJRGVsZXRlIHRoZSBzeW1ib2xpYyByZWYgPG5hbWU+LgorCiAtcTo6CiAtLXF1aWV0OjoKIAlEbyBub3QgaXNzdWUgYW4gZXJyb3IgbWVzc2FnZSBpZiB0aGUgPG5hbWU+IGlzIG5vdCBhCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC10YWcudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtdGFnLnR4dAppbmRleCBlMzZhN2MzLi4yMjg5NGNiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC10YWcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXRhZy50eHQKQEAgLTIwLDExICsyMCwxMCBAQAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCiAKLUFkZCBhIHRhZyByZWZlcmVuY2UgaW4gYC5naXQvcmVmcy90YWdzL2AsIHVubGVzcyBgLWQvLWwvLXZgIGlzIGdpdmVuCitBZGQgYSB0YWcgcmVmZXJlbmNlIGluIGByZWZzL3RhZ3MvYCwgdW5sZXNzIGAtZC8tbC8tdmAgaXMgZ2l2ZW4KIHRvIGRlbGV0ZSwgbGlzdCBvciB2ZXJpZnkgdGFncy4KIAotVW5sZXNzIGAtZmAgaXMgZ2l2ZW4sIHRoZSB0YWcgdG8gYmUgY3JlYXRlZCBtdXN0IG5vdCB5ZXQgZXhpc3QgaW4gdGhlCi1gLmdpdC9yZWZzL3RhZ3MvYCBkaXJlY3RvcnkuCitVbmxlc3MgYC1mYCBpcyBnaXZlbiwgdGhlIG5hbWVkIHRhZyBtdXN0IG5vdCB5ZXQgZXhpc3QuCiAKIElmIG9uZSBvZiBgLWFgLCBgLXNgLCBvciBgLXUgPGtleS1pZD5gIGlzIHBhc3NlZCwgdGhlIGNvbW1hbmQKIGNyZWF0ZXMgYSAndGFnJyBvYmplY3QsIGFuZCByZXF1aXJlcyBhIHRhZyBtZXNzYWdlLiAgVW5sZXNzCkBAIC0zNCw3ICszMyw3IEBACiBJZiBgLW0gPG1zZz5gIG9yIGAtRiA8ZmlsZT5gIGlzIGdpdmVuIGFuZCBgLWFgLCBgLXNgLCBhbmQgYC11IDxrZXktaWQ+YAogYXJlIGFic2VudCwgYC1hYCBpcyBpbXBsaWVkLgogCi1PdGhlcndpc2UganVzdCBhIHRhZyByZWZlcmVuY2UgZm9yIHRoZSBTSEExIG9iamVjdCBuYW1lIG9mIHRoZSBjb21taXQgb2JqZWN0IGlzCitPdGhlcndpc2UganVzdCBhIHRhZyByZWZlcmVuY2UgZm9yIHRoZSBTSEEtMSBvYmplY3QgbmFtZSBvZiB0aGUgY29tbWl0IG9iamVjdCBpcwogY3JlYXRlZCAoaS5lLiBhIGxpZ2h0d2VpZ2h0IHRhZykuCiAKIEEgR251UEcgc2lnbmVkIHRhZyBvYmplY3Qgd2lsbCBiZSBjcmVhdGVkIHdoZW4gYC1zYCBvciBgLXUKQEAgLTEyNywxMCArMTI2LDE2IEBACiAJbGlua2dpdDpnaXQtY2hlY2stcmVmLWZvcm1hdFsxXS4gIFNvbWUgb2YgdGhlc2UgY2hlY2tzCiAJbWF5IHJlc3RyaWN0IHRoZSBjaGFyYWN0ZXJzIGFsbG93ZWQgaW4gYSB0YWcgbmFtZS4KIAorPGNvbW1pdD46OgorPG9iamVjdD46OgorCVRoZSBvYmplY3QgdGhhdCB0aGUgbmV3IHRhZyB3aWxsIHJlZmVyIHRvLCB1c3VhbGx5IGEgY29tbWl0LgorCURlZmF1bHRzIHRvIEhFQUQuCisKKwogQ09ORklHVVJBVElPTgogLS0tLS0tLS0tLS0tLQogQnkgZGVmYXVsdCwgJ2dpdCB0YWcnIGluIHNpZ24td2l0aC1kZWZhdWx0IG1vZGUgKC1zKSB3aWxsIHVzZSB5b3VyCi1jb21taXR0ZXIgaWRlbnRpdHkgKG9mIHRoZSBmb3JtICJZb3VyIE5hbWUgPHlvdXJAZW1haWwuYWRkcmVzcz4iKSB0bworY29tbWl0dGVyIGlkZW50aXR5IChvZiB0aGUgZm9ybSAiWW91ciBOYW1lIDxceW91ckBlbWFpbC5hZGRyZXNzPiIpIHRvCiBmaW5kIGEga2V5LiAgSWYgeW91IHdhbnQgdG8gdXNlIGEgZGlmZmVyZW50IGRlZmF1bHQga2V5LCB5b3UgY2FuIHNwZWNpZnkKIGl0IGluIHRoZSByZXBvc2l0b3J5IGNvbmZpZ3VyYXRpb24gYXMgZm9sbG93czoKIApAQCAtMjQzLDcgKzI0OCw3IEBACiBJbiBzdWNoIGEgY2FzZSwgeW91IGRvIG5vdCB3YW50IHRvIGF1dG9tYXRpY2FsbHkgZm9sbG93IHRoZSBvdGhlcgogcGVyc29uJ3MgdGFncy4KIAotT25lIGltcG9ydGFudCBhc3BlY3Qgb2YgZ2l0IGlzIGl0cyBkaXN0cmlidXRlZCBuYXR1cmUsIHdoaWNoCitPbmUgaW1wb3J0YW50IGFzcGVjdCBvZiBHaXQgaXMgaXRzIGRpc3RyaWJ1dGVkIG5hdHVyZSwgd2hpY2gKIGxhcmdlbHkgbWVhbnMgdGhlcmUgaXMgbm8gaW5oZXJlbnQgInVwc3RyZWFtIiBvcgogImRvd25zdHJlYW0iIGluIHRoZSBzeXN0ZW0uICBPbiB0aGUgZmFjZSBvZiBpdCwgdGhlIGFib3ZlCiBleGFtcGxlIG1pZ2h0IHNlZW0gdG8gaW5kaWNhdGUgdGhhdCB0aGUgdGFnIG5hbWVzcGFjZSBpcyBvd25lZApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtdG9vbHMudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtdG9vbHMudHh0CmluZGV4IGE5NjQwM2MuLjc4YTBkOTUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXRvb2xzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC10b29scy50eHQKQEAgLTEsMTEgKzEsMTEgQEAKLUEgc2hvcnQgZ2l0IHRvb2xzIHN1cnZleQorQSBzaG9ydCBHaXQgdG9vbHMgc3VydmV5CiA9PT09PT09PT09PT09PT09PT09PT09PT0KIAogCiBJbnRyb2R1Y3Rpb24KIC0tLS0tLS0tLS0tLQogCi1BcGFydCBmcm9tIGdpdCBjb250cmliLyBhcmVhIHRoZXJlIGFyZSBzb21lIG90aGVycyB0aGlyZC1wYXJ0eSB0b29scworQXBhcnQgZnJvbSBHaXQgY29udHJpYi8gYXJlYSB0aGVyZSBhcmUgc29tZSBvdGhlcnMgdGhpcmQtcGFydHkgdG9vbHMKIHlvdSBtYXkgd2FudCB0byBsb29rLgogCiBUaGlzIGRvY3VtZW50IHByZXNlbnRzIGEgYnJpZWYgc3VtbWFyeSBvZiBlYWNoIHRvb2wgYW5kIHRoZSBjb3JyZXNwb25kaW5nCkBAIC0xNywyNiArMTcsMjYgQEAKIAogICAgLSAqQ29naXRvKiAoaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9zY20vY29naXRvLykKIAotICAgQ29naXRvIGlzIGEgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBsYXllcmVkIG9uIHRvcCBvZiB0aGUgZ2l0IHRyZWUgaGlzdG9yeQorICAgQ29naXRvIGlzIGEgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBsYXllcmVkIG9uIHRvcCBvZiB0aGUgR2l0IHRyZWUgaGlzdG9yeQogICAgc3RvcmFnZSBzeXN0ZW0uIEl0IGFpbXMgYXQgc2VhbWxlc3MgdXNlciBpbnRlcmZhY2UgYW5kIGVhc2Ugb2YgdXNlLAotICAgcHJvdmlkaW5nIGdlbmVyYWxseSBzbW9vdGhlciB1c2VyIGV4cGVyaWVuY2UgdGhhbiB0aGUgInJhdyIgQ29yZSBHSVQKKyAgIHByb3ZpZGluZyBnZW5lcmFsbHkgc21vb3RoZXIgdXNlciBleHBlcmllbmNlIHRoYW4gdGhlICJyYXciIENvcmUgR2l0CiAgICBpdHNlbGYgYW5kIGluZGVlZCBtYW55IG90aGVyIHZlcnNpb24gY29udHJvbCBzeXN0ZW1zLgogCiAgICBDb2dpdG8gaXMgbm8gbG9uZ2VyIG1haW50YWluZWQgYXMgbW9zdCBvZiBpdHMgZnVuY3Rpb25hbGl0eQotICAgaXMgbm93IGluIGNvcmUgR0lULgorICAgaXMgbm93IGluIGNvcmUgR2l0LgogCiAKICAgIC0gKnBnKiAoaHR0cDovL3d3dy5zcGVhcmNlLm9yZy9jYXRlZ29yeS9wcm9qZWN0cy9zY20vcGcvKQogCi0gICBwZyBpcyBhIHNoZWxsIHNjcmlwdCB3cmFwcGVyIGFyb3VuZCBHSVQgdG8gaGVscCB0aGUgdXNlciBtYW5hZ2UgYSBzZXQgb2YKLSAgIHBhdGNoZXMgdG8gZmlsZXMuIHBnIGlzIHNvbWV3aGF0IGxpa2UgcXVpbHQgb3IgU3RHSVQsIGJ1dCBpdCBkb2VzIGhhdmUgYQorICAgcGcgaXMgYSBzaGVsbCBzY3JpcHQgd3JhcHBlciBhcm91bmQgR2l0IHRvIGhlbHAgdGhlIHVzZXIgbWFuYWdlIGEgc2V0IG9mCisgICBwYXRjaGVzIHRvIGZpbGVzLiBwZyBpcyBzb21ld2hhdCBsaWtlIHF1aWx0IG9yIFN0R2l0LCBidXQgaXQgZG9lcyBoYXZlIGEKICAgIHNsaWdodGx5IGRpZmZlcmVudCBmZWF0dXJlIHNldC4KIAogCiAgICAtICpTdEdpdCogKGh0dHA6Ly93d3cucHJvY29kZS5vcmcvc3RnaXQvKQogCi0gICBTdGFja2VkIEdJVCBwcm92aWRlcyBhIHF1aWx0LWxpa2UgcGF0Y2ggbWFuYWdlbWVudCBmdW5jdGlvbmFsaXR5IGluIHRoZQotICAgR0lUIGVudmlyb25tZW50LiBZb3UgY2FuIGVhc2lseSBtYW5hZ2UgeW91ciBwYXRjaGVzIGluIHRoZSBzY29wZSBvZiBHSVQKKyAgIFN0YWNrZWQgR2l0IHByb3ZpZGVzIGEgcXVpbHQtbGlrZSBwYXRjaCBtYW5hZ2VtZW50IGZ1bmN0aW9uYWxpdHkgaW4gdGhlCisgICBHaXQgZW52aXJvbm1lbnQuIFlvdSBjYW4gZWFzaWx5IG1hbmFnZSB5b3VyIHBhdGNoZXMgaW4gdGhlIHNjb3BlIG9mIEdpdAogICAgdW50aWwgdGhleSBnZXQgbWVyZ2VkIHVwc3RyZWFtLgogCiAKQEAgLTQ1LDMzICs0NSwzMyBAQAogCiAgICAtICpnaXRrKiAoc2hpcHBlZCB3aXRoIGdpdC1jb3JlKQogCi0gICBnaXRrIGlzIGEgc2ltcGxlIFRrIEdVSSBmb3IgYnJvd3NpbmcgaGlzdG9yeSBvZiBHSVQgcmVwb3NpdG9yaWVzIGVhc2lseS4KKyAgIGdpdGsgaXMgYSBzaW1wbGUgVGsgR1VJIGZvciBicm93c2luZyBoaXN0b3J5IG9mIEdpdCByZXBvc2l0b3JpZXMgZWFzaWx5LgogCiAKICAgIC0gKmdpdHZpZXcqICAoY29udHJpYi8pCiAKLSAgIGdpdHZpZXcgaXMgYSBHVEsgYmFzZWQgcmVwb3NpdG9yeSBicm93c2VyIGZvciBnaXQKKyAgIGdpdHZpZXcgaXMgYSBHVEsgYmFzZWQgcmVwb3NpdG9yeSBicm93c2VyIGZvciBHaXQKIAogCiAgICAtICpnaXR3ZWIqIChzaGlwcGVkIHdpdGggZ2l0LWNvcmUpCiAKLSAgIEdJVHdlYiBwcm92aWRlcyBmdWxsLWZsZWRnZWQgd2ViIGludGVyZmFjZSBmb3IgR0lUIHJlcG9zaXRvcmllcy4KKyAgIEdpdHdlYiBwcm92aWRlcyBmdWxsLWZsZWRnZWQgd2ViIGludGVyZmFjZSBmb3IgR2l0IHJlcG9zaXRvcmllcy4KIAogCiAgICAtICpxZ2l0KiAoaHR0cDovL2RpZ2lsYW5kZXIubGliZXJvLml0L21jb3N0YWxiYS8pCiAKLSAgIFFHaXQgaXMgYSBnaXQvU3RHSVQgR1VJIHZpZXdlciBidWlsdCBvbiBRdC9DKysuIFFHaXQgY291bGQgYmUgdXNlZAorICAgUUdpdCBpcyBhIGdpdC9TdEdpdCBHVUkgdmlld2VyIGJ1aWx0IG9uIFF0L0MrKy4gUUdpdCBjb3VsZCBiZSB1c2VkCiAgICB0byBicm93c2UgaGlzdG9yeSBhbmQgZGlyZWN0b3J5IHRyZWUsIHZpZXcgYW5ub3RhdGVkIGZpbGVzLCBjb21taXQKICAgIGNoYW5nZXMgY2hlcnJ5IHBpY2tpbmcgc2luZ2xlIGZpbGVzIG9yIGFwcGx5aW5nIHBhdGNoZXMuCi0gICBDdXJyZW50bHkgaXQgaXMgdGhlIGZhc3Rlc3QgYW5kIG1vc3QgZmVhdHVyZSByaWNoIGFtb25nIHRoZSBnaXQKKyAgIEN1cnJlbnRseSBpdCBpcyB0aGUgZmFzdGVzdCBhbmQgbW9zdCBmZWF0dXJlIHJpY2ggYW1vbmcgdGhlIEdpdAogICAgdmlld2VycyBhbmQgY29tbWl0IHRvb2xzLgogCiAgICAtICp0aWcqIChodHRwOi8vam9uYXMubml0cm8uZGsvdGlnLykKIAotICAgdGlnIGJ5IEpvbmFzIEZvbnNlY2EgaXMgYSBzaW1wbGUgZ2l0IHJlcG9zaXRvcnkgYnJvd3NlcgorICAgdGlnIGJ5IEpvbmFzIEZvbnNlY2EgaXMgYSBzaW1wbGUgR2l0IHJlcG9zaXRvcnkgYnJvd3NlcgogICAgd3JpdHRlbiB1c2luZyBuY3Vyc2VzLiBCYXNpY2FsbHksIGl0IGp1c3QgYWN0cyBhcyBhIGZyb250LWVuZAogICAgZm9yIGdpdC1sb2cgYW5kIGdpdC1zaG93L2dpdC1kaWZmLiBBZGRpdGlvbmFsbHksIHlvdSBjYW4gYWxzbwotICAgdXNlIGl0IGFzIGEgcGFnZXIgZm9yIGdpdCBjb21tYW5kcy4KKyAgIHVzZSBpdCBhcyBhIHBhZ2VyIGZvciBHaXQgY29tbWFuZHMuCiAKIAogRm9yZWlnbiBTQ00gaW50ZXJmYWNlCkBAIC04MCwyMCArODAsMjAgQEAKICAgIC0gKmdpdC1zdm4qIChzaGlwcGVkIHdpdGggZ2l0LWNvcmUpCiAKICAgIGdpdC1zdm4gaXMgYSBzaW1wbGUgY29uZHVpdCBmb3IgY2hhbmdlc2V0cyBiZXR3ZWVuIGEgc2luZ2xlIFN1YnZlcnNpb24KLSAgIGJyYW5jaCBhbmQgZ2l0LgorICAgYnJhbmNoIGFuZCBHaXQuCiAKIAogICAgLSAqcXVpbHQyZ2l0IC8gZ2l0MnF1aWx0KiAoaHR0cDovL2hvbWUtdGoub3JnL3dpa2kvaW5kZXgucGhwL01pc2MpCiAKICAgIFRoZXNlIHV0aWxpdGllcyBjb252ZXJ0IHBhdGNoIHNlcmllcyBpbiBhIHF1aWx0IHJlcG9zaXRvcnkgYW5kIGNvbW1pdAotICAgc2VyaWVzIGluIGdpdCBiYWNrIGFuZCBmb3J0aC4KKyAgIHNlcmllcyBpbiBHaXQgYmFjayBhbmQgZm9ydGguCiAKIAogICAgLSAqaGctdG8tZ2l0KiAoY29udHJpYi8pCiAKLSAgIGhnLXRvLWdpdCBjb252ZXJ0cyBhIE1lcmN1cmlhbCByZXBvc2l0b3J5IGludG8gYSBnaXQgb25lLCBhbmQKKyAgIGhnLXRvLWdpdCBjb252ZXJ0cyBhIE1lcmN1cmlhbCByZXBvc2l0b3J5IGludG8gYSBHaXQgb25lLCBhbmQKICAgIHByZXNlcnZlcyB0aGUgZnVsbCBicmFuY2ggaGlzdG9yeSBpbiB0aGUgcHJvY2Vzcy4gaGctdG8tZ2l0IGNhbgotICAgYWxzbyBiZSB1c2VkIGluIGFuIGluY3JlbWVudGFsIHdheSB0byBrZWVwIHRoZSBnaXQgcmVwb3NpdG9yeQorICAgYWxzbyBiZSB1c2VkIGluIGFuIGluY3JlbWVudGFsIHdheSB0byBrZWVwIHRoZSBHaXQgcmVwb3NpdG9yeQogICAgaW4gc3luYyB3aXRoIHRoZSBtYXN0ZXIgTWVyY3VyaWFsIHJlcG9zaXRvcnkuCiAKIApAQCAtMTAyLDE0ICsxMDIsMTQgQEAKIAogICAgLSAqKGgpZ2N0KiAoaHR0cDovL3d3dy5jeWQubGl1LnNlL3VzZXJzL35mcmVrdTA0NS9nY3QvKQogCi0gICBDb21taXQgVG9vbCBvciAoaClnY3QgaXMgYSBHVUkgZW5hYmxlZCBjb21taXQgdG9vbCBmb3IgZ2l0IGFuZAorICAgQ29tbWl0IFRvb2wgb3IgKGgpZ2N0IGlzIGEgR1VJIGVuYWJsZWQgY29tbWl0IHRvb2wgZm9yIEdpdCBhbmQKICAgIE1lcmN1cmlhbCAoaGcpLiBJdCBhbGxvd3MgdGhlIHVzZXIgdG8gdmlldyBkaWZmcywgc2VsZWN0IHdoaWNoIGZpbGVzCiAgICB0byBjb21taXR0ZWQgKG9yIGlnbm9yZWQgLyByZXZlcnRlZCkgd3JpdGUgY29tbWl0IG1lc3NhZ2VzIGFuZAogICAgcGVyZm9ybSB0aGUgY29tbWl0IGl0c2VsZi4KIAogICAgLSAqZ2l0LmVsKiAoY29udHJpYi8pCiAKLSAgIFRoaXMgaXMgYW4gRW1hY3MgaW50ZXJmYWNlIGZvciBnaXQuIFRoZSB1c2VyIGludGVyZmFjZSBpcyBtb2RlbGVkIG9uCisgICBUaGlzIGlzIGFuIEVtYWNzIGludGVyZmFjZSBmb3IgR2l0LiBUaGUgdXNlciBpbnRlcmZhY2UgaXMgbW9kZWxsZWQgb24KICAgIHBjbC1jdnMuIEl0IGhhcyBiZWVuIGRldmVsb3BlZCBvbiBFbWFjcyAyMSBhbmQgd2lsbCBwcm9iYWJseSBuZWVkIHNvbWUKICAgIHR3ZWFraW5nIHRvIHdvcmsgb24gWEVtYWNzLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC11cGRhdGUtaW5kZXgudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtdXBkYXRlLWluZGV4LnR4dAppbmRleCA5ZDBiMTUxLi5lMGE4NzAyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC11cGRhdGUtaW5kZXgudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXVwZGF0ZS1pbmRleC50eHQKQEAgLTE0LDggKzE0LDggQEAKIAkgICAgIFstLXJlZnJlc2hdIFstcV0gWy0tdW5tZXJnZWRdIFstLWlnbm9yZS1taXNzaW5nXQogCSAgICAgWygtLWNhY2hlaW5mbyA8bW9kZT4gPG9iamVjdD4gPGZpbGU+KS4uLl0KIAkgICAgIFstLWNobW9kPSgrfC0peF0KLQkgICAgIFstLWFzc3VtZS11bmNoYW5nZWQgfCAtLW5vLWFzc3VtZS11bmNoYW5nZWRdCi0JICAgICBbLS1za2lwLXdvcmt0cmVlIHwgLS1uby1za2lwLXdvcmt0cmVlXQorCSAgICAgWy0tW25vLV1hc3N1bWUtdW5jaGFuZ2VkXQorCSAgICAgWy0tW25vLV1za2lwLXdvcmt0cmVlXQogCSAgICAgWy0taWdub3JlLXN1Ym1vZHVsZXNdCiAJICAgICBbLS1yZWFsbHktcmVmcmVzaF0gWy0tdW5yZXNvbHZlXSBbLS1hZ2FpbiB8IC1nXQogCSAgICAgWy0taW5mby1vbmx5XSBbLS1pbmRleC1pbmZvXQpAQCAtNzcsMTUgKzc3LDE0IEBACiAtLWNobW9kPSgrfC0peDo6CiAgICAgICAgIFNldCB0aGUgZXhlY3V0ZSBwZXJtaXNzaW9ucyBvbiB0aGUgdXBkYXRlZCBmaWxlcy4KIAotLS1hc3N1bWUtdW5jaGFuZ2VkOjoKLS0tbm8tYXNzdW1lLXVuY2hhbmdlZDo6CistLVtuby1dYXNzdW1lLXVuY2hhbmdlZDo6CiAJV2hlbiB0aGVzZSBmbGFncyBhcmUgc3BlY2lmaWVkLCB0aGUgb2JqZWN0IG5hbWVzIHJlY29yZGVkCiAJZm9yIHRoZSBwYXRocyBhcmUgbm90IHVwZGF0ZWQuICBJbnN0ZWFkLCB0aGVzZSBvcHRpb25zCiAJc2V0IGFuZCB1bnNldCB0aGUgImFzc3VtZSB1bmNoYW5nZWQiIGJpdCBmb3IgdGhlCi0JcGF0aHMuICBXaGVuIHRoZSAiYXNzdW1lIHVuY2hhbmdlZCIgYml0IGlzIG9uLCBnaXQgc3RvcHMKKwlwYXRocy4gIFdoZW4gdGhlICJhc3N1bWUgdW5jaGFuZ2VkIiBiaXQgaXMgb24sIEdpdCBzdG9wcwogCWNoZWNraW5nIHRoZSB3b3JraW5nIHRyZWUgZmlsZXMgZm9yIHBvc3NpYmxlCiAJbW9kaWZpY2F0aW9ucywgc28geW91IG5lZWQgdG8gbWFudWFsbHkgdW5zZXQgdGhlIGJpdCB0bwotCXRlbGwgZ2l0IHdoZW4geW91IGNoYW5nZSB0aGUgd29ya2luZyB0cmVlIGZpbGUuIFRoaXMgaXMKKwl0ZWxsIEdpdCB3aGVuIHlvdSBjaGFuZ2UgdGhlIHdvcmtpbmcgdHJlZSBmaWxlLiBUaGlzIGlzCiAJc29tZXRpbWVzIGhlbHBmdWwgd2hlbiB3b3JraW5nIHdpdGggYSBiaWcgcHJvamVjdCBvbiBhCiAJZmlsZXN5c3RlbSB0aGF0IGhhcyB2ZXJ5IHNsb3cgbHN0YXQoMikgc3lzdGVtIGNhbGwKIAkoZS5nLiBjaWZzKS4KQEAgLTEwMiw4ICsxMDEsNyBAQAogCUxpa2UgJy0tcmVmcmVzaCcsIGJ1dCBjaGVja3Mgc3RhdCBpbmZvcm1hdGlvbiB1bmNvbmRpdGlvbmFsbHksCiAJd2l0aG91dCByZWdhcmQgdG8gdGhlICJhc3N1bWUgdW5jaGFuZ2VkIiBzZXR0aW5nLgogCi0tLXNraXAtd29ya3RyZWU6OgotLS1uby1za2lwLXdvcmt0cmVlOjoKKy0tW25vLV1za2lwLXdvcmt0cmVlOjoKIAlXaGVuIG9uZSBvZiB0aGVzZSBmbGFncyBpcyBzcGVjaWZpZWQsIHRoZSBvYmplY3QgbmFtZSByZWNvcmRlZAogCWZvciB0aGUgcGF0aHMgYXJlIG5vdCB1cGRhdGVkLiBJbnN0ZWFkLCB0aGVzZSBvcHRpb25zCiAJc2V0IGFuZCB1bnNldCB0aGUgInNraXAtd29ya3RyZWUiIGJpdCBmb3IgdGhlIHBhdGhzLiBTZWUKQEAgLTE0NSw3ICsxNDMsMTUgQEAKIAogLS1pbmRleC12ZXJzaW9uIDxuPjo6CiAJV3JpdGUgdGhlIHJlc3VsdGluZyBpbmRleCBvdXQgaW4gdGhlIG5hbWVkIG9uLWRpc2sgZm9ybWF0IHZlcnNpb24uCi0JVGhlIGN1cnJlbnQgZGVmYXVsdCB2ZXJzaW9uIGlzIDIuCisJU3VwcG9ydGVkIHZlcnNpb25zIGFyZSAyLCAzIGFuZCA0LiBUaGUgY3VycmVudCBkZWZhdWx0IHZlcnNpb24gaXMgMgorCW9yIDMsIGRlcGVuZGluZyBvbiB3aGV0aGVyIGV4dHJhIGZlYXR1cmVzIGFyZSB1c2VkLCBzdWNoIGFzCisJYGdpdCBhZGQgLU5gLgorKworVmVyc2lvbiA0IHBlcmZvcm1zIGEgc2ltcGxlIHBhdGhuYW1lIGNvbXByZXNzaW9uIHRoYXQgcmVkdWNlcyBpbmRleAorc2l6ZSBieSAzMCUtNTAlIG9uIGxhcmdlIHJlcG9zaXRvcmllcywgd2hpY2ggcmVzdWx0cyBpbiBmYXN0ZXIgbG9hZAordGltZS4gVmVyc2lvbiA0IGlzIHJlbGF0aXZlbHkgeW91bmcgKGZpcnN0IHJlbGVhc2VkIGluIGluIDEuOC4wIGluCitPY3RvYmVyIDIwMTIpLiBPdGhlciBHaXQgaW1wbGVtZW50YXRpb25zIHN1Y2ggYXMgSkdpdCBhbmQgbGliZ2l0MgorbWF5IG5vdCBzdXBwb3J0IGl0IHlldC4KIAogLXo6OgogCU9ubHkgbWVhbmluZ2Z1bCB3aXRoIGAtLXN0ZGluYCBvciBgLS1pbmRleC1pbmZvYDsgcGF0aHMgYXJlCkBAIC0yMzksNyArMjQ1LDcgQEAKIC0tLS0tLS0tLS0tLQogCiBUaGUgZmlyc3QgbGluZSBvZiB0aGUgaW5wdXQgZmVlZHMgMCBhcyB0aGUgbW9kZSB0byByZW1vdmUgdGhlCi1wYXRoOyB0aGUgU0hBMSBkb2VzIG5vdCBtYXR0ZXIgYXMgbG9uZyBhcyBpdCBpcyB3ZWxsIGZvcm1hdHRlZC4KK3BhdGg7IHRoZSBTSEEtMSBkb2VzIG5vdCBtYXR0ZXIgYXMgbG9uZyBhcyBpdCBpcyB3ZWxsIGZvcm1hdHRlZC4KIFRoZW4gdGhlIHNlY29uZCBhbmQgdGhpcmQgbGluZSBmZWVkcyBzdGFnZSAxIGFuZCBzdGFnZSAyIGVudHJpZXMKIGZvciB0aGF0IHBhdGguICBBZnRlciB0aGUgYWJvdmUsIHdlIHdvdWxkIGVuZCB1cCB3aXRoIHRoaXM6CiAKQEAgLTI1MywxOCArMjU5LDE4IEBACiBVc2luZyBgYGFzc3VtZSB1bmNoYW5nZWQnJyBiaXQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NYW55IG9wZXJhdGlvbnMgaW4gZ2l0IGRlcGVuZCBvbiB5b3VyIGZpbGVzeXN0ZW0gdG8gaGF2ZSBhbgorTWFueSBvcGVyYXRpb25zIGluIEdpdCBkZXBlbmQgb24geW91ciBmaWxlc3lzdGVtIHRvIGhhdmUgYW4KIGVmZmljaWVudCBgbHN0YXQoMilgIGltcGxlbWVudGF0aW9uLCBzbyB0aGF0IGBzdF9tdGltZWAKIGluZm9ybWF0aW9uIGZvciB3b3JraW5nIHRyZWUgZmlsZXMgY2FuIGJlIGNoZWFwbHkgY2hlY2tlZCB0byBzZWUKIGlmIHRoZSBmaWxlIGNvbnRlbnRzIGhhdmUgY2hhbmdlZCBmcm9tIHRoZSB2ZXJzaW9uIHJlY29yZGVkIGluCiB0aGUgaW5kZXggZmlsZS4gIFVuZm9ydHVuYXRlbHksIHNvbWUgZmlsZXN5c3RlbXMgaGF2ZQogaW5lZmZpY2llbnQgYGxzdGF0KDIpYC4gIElmIHlvdXIgZmlsZXN5c3RlbSBpcyBvbmUgb2YgdGhlbSwgeW91CiBjYW4gc2V0ICJhc3N1bWUgdW5jaGFuZ2VkIiBiaXQgdG8gcGF0aHMgeW91IGhhdmUgbm90IGNoYW5nZWQgdG8KLWNhdXNlIGdpdCBub3QgdG8gZG8gdGhpcyBjaGVjay4gIE5vdGUgdGhhdCBzZXR0aW5nIHRoaXMgYml0IG9uIGEKLXBhdGggZG9lcyBub3QgbWVhbiBnaXQgd2lsbCBjaGVjayB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgdG8KLXNlZSBpZiBpdCBoYXMgY2hhbmdlZCAtLSBpdCBtYWtlcyBnaXQgdG8gb21pdCBhbnkgY2hlY2tpbmcgYW5kCitjYXVzZSBHaXQgbm90IHRvIGRvIHRoaXMgY2hlY2suICBOb3RlIHRoYXQgc2V0dGluZyB0aGlzIGJpdCBvbiBhCitwYXRoIGRvZXMgbm90IG1lYW4gR2l0IHdpbGwgY2hlY2sgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIHRvCitzZWUgaWYgaXQgaGFzIGNoYW5nZWQgLS0gaXQgbWFrZXMgR2l0IHRvIG9taXQgYW55IGNoZWNraW5nIGFuZAogYXNzdW1lIGl0IGhhcyAqbm90KiBjaGFuZ2VkLiAgV2hlbiB5b3UgbWFrZSBjaGFuZ2VzIHRvIHdvcmtpbmcKLXRyZWUgZmlsZXMsIHlvdSBoYXZlIHRvIGV4cGxpY2l0bHkgdGVsbCBnaXQgYWJvdXQgaXQgYnkgZHJvcHBpbmcKK3RyZWUgZmlsZXMsIHlvdSBoYXZlIHRvIGV4cGxpY2l0bHkgdGVsbCBHaXQgYWJvdXQgaXQgYnkgZHJvcHBpbmcKICJhc3N1bWUgdW5jaGFuZ2VkIiBiaXQsIGVpdGhlciBiZWZvcmUgb3IgYWZ0ZXIgeW91IG1vZGlmeSB0aGVtLgogCiBJbiBvcmRlciB0byBzZXQgImFzc3VtZSB1bmNoYW5nZWQiIGJpdCwgdXNlIGAtLWFzc3VtZS11bmNoYW5nZWRgCkBAIC0yNzQsNyArMjgwLDcgQEAKIAogVGhlIGNvbW1hbmQgbG9va3MgYXQgYGNvcmUuaWdub3Jlc3RhdGAgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gIFdoZW4KIHRoaXMgaXMgdHJ1ZSwgcGF0aHMgdXBkYXRlZCB3aXRoIGBnaXQgdXBkYXRlLWluZGV4IHBhdGhzLi4uYCBhbmQKLXBhdGhzIHVwZGF0ZWQgd2l0aCBvdGhlciBnaXQgY29tbWFuZHMgdGhhdCB1cGRhdGUgYm90aCBpbmRleCBhbmQKK3BhdGhzIHVwZGF0ZWQgd2l0aCBvdGhlciBHaXQgY29tbWFuZHMgdGhhdCB1cGRhdGUgYm90aCBpbmRleCBhbmQKIHdvcmtpbmcgdHJlZSAoZS5nLiAnZ2l0IGFwcGx5IC0taW5kZXgnLCAnZ2l0IGNoZWNrb3V0LWluZGV4IC11JywKIGFuZCAnZ2l0IHJlYWQtdHJlZSAtdScpIGFyZSBhdXRvbWF0aWNhbGx5IG1hcmtlZCBhcyAiYXNzdW1lCiB1bmNoYW5nZWQiLiAgTm90ZSB0aGF0ICJhc3N1bWUgdW5jaGFuZ2VkIiBiaXQgaXMgKm5vdCogc2V0IGlmCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC11cGRhdGUtcmVmLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXVwZGF0ZS1yZWYudHh0CmluZGV4IGQzNzdhMzUuLjBkZjEzZmYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXVwZGF0ZS1yZWYudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXVwZGF0ZS1yZWYudHh0CkBAIC03Myw3ICs3Myw3IEBACiBXaGVyZSAib2xkc2hhMSIgaXMgdGhlIDQwIGNoYXJhY3RlciBoZXhhZGVjaW1hbCB2YWx1ZSBwcmV2aW91c2x5CiBzdG9yZWQgaW4gPHJlZj4sICJuZXdzaGExIiBpcyB0aGUgNDAgY2hhcmFjdGVyIGhleGFkZWNpbWFsIHZhbHVlIG9mCiA8bmV3dmFsdWU+IGFuZCAiY29tbWl0dGVyIiBpcyB0aGUgY29tbWl0dGVyJ3MgbmFtZSwgZW1haWwgYWRkcmVzcwotYW5kIGRhdGUgaW4gdGhlIHN0YW5kYXJkIEdJVCBjb21taXR0ZXIgaWRlbnQgZm9ybWF0LgorYW5kIGRhdGUgaW4gdGhlIHN0YW5kYXJkIEdpdCBjb21taXR0ZXIgaWRlbnQgZm9ybWF0LgogCiBPcHRpb25hbGx5IHdpdGggLW06CiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXVwbG9hZC1hcmNoaXZlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXVwbG9hZC1hcmNoaXZlLnR4dAppbmRleCA0ZDUyZDM4Li5kMDliYmI1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC11cGxvYWQtYXJjaGl2ZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtdXBsb2FkLWFyY2hpdmUudHh0CkBAIC0xNCw3ICsxNCw3IEBACiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KIEludm9rZWQgYnkgJ2dpdCBhcmNoaXZlIC0tcmVtb3RlJyBhbmQgc2VuZHMgYSBnZW5lcmF0ZWQgYXJjaGl2ZSB0byB0aGUKLW90aGVyIGVuZCBvdmVyIHRoZSBnaXQgcHJvdG9jb2wuCitvdGhlciBlbmQgb3ZlciB0aGUgR2l0IHByb3RvY29sLgogCiBUaGlzIGNvbW1hbmQgaXMgdXN1YWxseSBub3QgaW52b2tlZCBkaXJlY3RseSBieSB0aGUgZW5kIHVzZXIuICBUaGUgVUkKIGZvciB0aGUgcHJvdG9jb2wgaXMgb24gdGhlICdnaXQgYXJjaGl2ZScgc2lkZSwgYW5kIHRoZSBwcm9ncmFtIHBhaXIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXVwbG9hZC1wYWNrLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXVwbG9hZC1wYWNrLnR4dAppbmRleCA3MWYxNjA4Li4wYWJjODA2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC11cGxvYWQtcGFjay50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtdXBsb2FkLXBhY2sudHh0CkBAIC0yNiw3ICsyNiw3IEBACiAtLS0tLS0tCiAKIC0tc3RyaWN0OjoKLQlEbyBub3QgdHJ5IDxkaXJlY3Rvcnk+Ly5naXQvIGlmIDxkaXJlY3Rvcnk+IGlzIG5vIGdpdCBkaXJlY3RvcnkuCisJRG8gbm90IHRyeSA8ZGlyZWN0b3J5Pi8uZ2l0LyBpZiA8ZGlyZWN0b3J5PiBpcyBubyBHaXQgZGlyZWN0b3J5LgogCiAtLXRpbWVvdXQ9PG4+OjoKIAlJbnRlcnJ1cHQgdHJhbnNmZXIgYWZ0ZXIgPG4+IHNlY29uZHMgb2YgaW5hY3Rpdml0eS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXZhci50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC12YXIudHh0CmluZGV4IDY3ZWRmNTguLjQ0ZmY5NTQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXZhci50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtdmFyLnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0LXZhciAtIFNob3cgYSBnaXQgbG9naWNhbCB2YXJpYWJsZQorZ2l0LXZhciAtIFNob3cgYSBHaXQgbG9naWNhbCB2YXJpYWJsZQogCiAKIFNZTk9QU0lTCkBAIC0xMywxMyArMTMsMTMgQEAKIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCi1QcmludHMgYSBnaXQgbG9naWNhbCB2YXJpYWJsZS4KK1ByaW50cyBhIEdpdCBsb2dpY2FsIHZhcmlhYmxlLgogCiBPUFRJT05TCiAtLS0tLS0tCiAtbDo6CiAJQ2F1c2UgdGhlIGxvZ2ljYWwgdmFyaWFibGVzIHRvIGJlIGxpc3RlZC4gSW4gYWRkaXRpb24sIGFsbCB0aGUKLQl2YXJpYWJsZXMgb2YgdGhlIGdpdCBjb25maWd1cmF0aW9uIGZpbGUgLmdpdC9jb25maWcgYXJlIGxpc3RlZAorCXZhcmlhYmxlcyBvZiB0aGUgR2l0IGNvbmZpZ3VyYXRpb24gZmlsZSAuZ2l0L2NvbmZpZyBhcmUgbGlzdGVkCiAJYXMgd2VsbC4gKEhvd2V2ZXIsIHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBsaXN0aW5nIGZ1bmN0aW9uYWxpdHkKIAlpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBnaXQgY29uZmlnIC1sYC4pCiAKQEAgLTM1LDEwICszNSwxMCBAQAogICAgIFRoZSBhdXRob3Igb2YgYSBwaWVjZSBvZiBjb2RlLgogCiBHSVRfQ09NTUlUVEVSX0lERU5UOjoKLSAgICBUaGUgcGVyc29uIHdobyBwdXQgYSBwaWVjZSBvZiBjb2RlIGludG8gZ2l0LgorICAgIFRoZSBwZXJzb24gd2hvIHB1dCBhIHBpZWNlIG9mIGNvZGUgaW50byBHaXQuCiAKIEdJVF9FRElUT1I6OgotICAgIFRleHQgZWRpdG9yIGZvciB1c2UgYnkgZ2l0IGNvbW1hbmRzLiAgVGhlIHZhbHVlIGlzIG1lYW50IHRvIGJlCisgICAgVGV4dCBlZGl0b3IgZm9yIHVzZSBieSBHaXQgY29tbWFuZHMuICBUaGUgdmFsdWUgaXMgbWVhbnQgdG8gYmUKICAgICBpbnRlcnByZXRlZCBieSB0aGUgc2hlbGwgd2hlbiBpdCBpcyB1c2VkLiAgRXhhbXBsZXM6IGB+L2Jpbi92aWAsCiAgICAgYCRTT01FX0VOVklST05NRU5UX1ZBUklBQkxFYCwgYCJDOlxQcm9ncmFtIEZpbGVzXFZpbVxndmltLmV4ZSIKICAgICAtLW5vZm9ya2AuICBUaGUgb3JkZXIgb2YgcHJlZmVyZW5jZSBpcyB0aGUgYCRHSVRfRURJVE9SYApAQCAtNTAsNyArNTAsNyBAQAogZW5kaWY6OmdpdC1kZWZhdWx0LWVkaXRvcltdCiAKIEdJVF9QQUdFUjo6Ci0gICAgVGV4dCB2aWV3ZXIgZm9yIHVzZSBieSBnaXQgY29tbWFuZHMgKGUuZy4sICdsZXNzJykuICBUaGUgdmFsdWUKKyAgICBUZXh0IHZpZXdlciBmb3IgdXNlIGJ5IEdpdCBjb21tYW5kcyAoZS5nLiwgJ2xlc3MnKS4gIFRoZSB2YWx1ZQogICAgIGlzIG1lYW50IHRvIGJlIGludGVycHJldGVkIGJ5IHRoZSBzaGVsbC4gIFRoZSBvcmRlciBvZiBwcmVmZXJlbmNlCiAgICAgaXMgdGhlIGAkR0lUX1BBR0VSYCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlbiBgY29yZS5wYWdlcmAKICAgICBjb25maWd1cmF0aW9uLCB0aGVuIGAkUEFHRVJgLCBhbmQgdGhlbiB0aGUgZGVmYXVsdCBjaG9zZW4gYXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXZlcmlmeS1wYWNrLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXZlcmlmeS1wYWNrLnR4dAppbmRleCBjZDIzMDc2Li41MjZiYTdiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC12ZXJpZnktcGFjay50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtdmVyaWZ5LXBhY2sudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXQtdmVyaWZ5LXBhY2sgLSBWYWxpZGF0ZSBwYWNrZWQgZ2l0IGFyY2hpdmUgZmlsZXMKK2dpdC12ZXJpZnktcGFjayAtIFZhbGlkYXRlIHBhY2tlZCBHaXQgYXJjaGl2ZSBmaWxlcwogCiAKIFNZTk9QU0lTCkBAIC0xNCw3ICsxNCw3IEBACiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQotUmVhZHMgZ2l2ZW4gaWR4IGZpbGUgZm9yIHBhY2tlZCBnaXQgYXJjaGl2ZSBjcmVhdGVkIHdpdGggdGhlCitSZWFkcyBnaXZlbiBpZHggZmlsZSBmb3IgcGFja2VkIEdpdCBhcmNoaXZlIGNyZWF0ZWQgd2l0aCB0aGUKICdnaXQgcGFjay1vYmplY3RzJyBjb21tYW5kIGFuZCB2ZXJpZmllcyBpZHggZmlsZSBhbmQgdGhlCiBjb3JyZXNwb25kaW5nIHBhY2sgZmlsZS4KIApAQCAtNDAsMTEgKzQwLDExIEBACiAtLS0tLS0tLS0tLS0tCiBXaGVuIHNwZWNpZnlpbmcgdGhlIC12IG9wdGlvbiB0aGUgZm9ybWF0IHVzZWQgaXM6CiAKLQlTSEExIHR5cGUgc2l6ZSBzaXplLWluLXBhY2stZmlsZSBvZmZzZXQtaW4tcGFja2ZpbGUKKwlTSEEtMSB0eXBlIHNpemUgc2l6ZS1pbi1wYWNrLWZpbGUgb2Zmc2V0LWluLXBhY2tmaWxlCiAKIGZvciBvYmplY3RzIHRoYXQgYXJlIG5vdCBkZWx0aWZpZWQgaW4gdGhlIHBhY2ssIGFuZAogCi0JU0hBMSB0eXBlIHNpemUgc2l6ZS1pbi1wYWNrZmlsZSBvZmZzZXQtaW4tcGFja2ZpbGUgZGVwdGggYmFzZS1TSEExCisJU0hBLTEgdHlwZSBzaXplIHNpemUtaW4tcGFja2ZpbGUgb2Zmc2V0LWluLXBhY2tmaWxlIGRlcHRoIGJhc2UtU0hBLTEKIAogZm9yIG9iamVjdHMgdGhhdCBhcmUgZGVsdGlmaWVkLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC12ZXJpZnktdGFnLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXZlcmlmeS10YWcudHh0CmluZGV4IDVmZjc2ZTguLmY4OGJhOTYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXZlcmlmeS10YWcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXZlcmlmeS10YWcudHh0CkBAIC0yMSw3ICsyMSw3IEBACiAJUHJpbnQgdGhlIGNvbnRlbnRzIG9mIHRoZSB0YWcgb2JqZWN0IGJlZm9yZSB2YWxpZGF0aW5nIGl0LgogCiA8dGFnPi4uLjo6Ci0JU0hBMSBpZGVudGlmaWVycyBvZiBnaXQgdGFnIG9iamVjdHMuCisJU0hBLTEgaWRlbnRpZmllcnMgb2YgR2l0IHRhZyBvYmplY3RzLgogCiBHSVQKIC0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtd2ViLS1icm93c2UudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtd2ViLS1icm93c2UudHh0CmluZGV4IGMyYmM4N2IuLmJhNzljYjQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXdlYi0tYnJvd3NlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC13ZWItLWJyb3dzZS50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdC13ZWItLWJyb3dzZSAtIGdpdCBoZWxwZXIgc2NyaXB0IHRvIGxhdW5jaCBhIHdlYiBicm93c2VyCitnaXQtd2ViLS1icm93c2UgLSBHaXQgaGVscGVyIHNjcmlwdCB0byBsYXVuY2ggYSB3ZWIgYnJvd3NlcgogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTUwLDcgKzUwLDcgQEAKIAogLWMgPGNvbmYudmFyPjo6CiAtLWNvbmZpZz08Y29uZi52YXI+OjoKLQlDT05GLlZBUiBpcyBsb29rZWQgdXAgaW4gdGhlIGdpdCBjb25maWcgZmlsZXMuIElmIGl0J3Mgc2V0LAorCUNPTkYuVkFSIGlzIGxvb2tlZCB1cCBpbiB0aGUgR2l0IGNvbmZpZyBmaWxlcy4gSWYgaXQncyBzZXQsCiAJdGhlbiBpdHMgdmFsdWUgc3BlY2lmaWVzIHRoZSBicm93c2VyIHRoYXQgc2hvdWxkIGJlIHVzZWQuCiAKIENPTkZJR1VSQVRJT04gVkFSSUFCTEVTCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC13aGF0Y2hhbmdlZC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC13aGF0Y2hhbmdlZC50eHQKaW5kZXggNmM4ZjUxMC4uYzYwMGI2MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtd2hhdGNoYW5nZWQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXdoYXRjaGFuZ2VkLnR4dApAQCAtMjQsNyArMjQsNyBAQAogT1BUSU9OUwogLS0tLS0tLQogLXA6OgotCVNob3cgdGV4dHVhbCBkaWZmcywgaW5zdGVhZCBvZiB0aGUgZ2l0IGludGVybmFsIGRpZmYKKwlTaG93IHRleHR1YWwgZGlmZnMsIGluc3RlYWQgb2YgdGhlIEdpdCBpbnRlcm5hbCBkaWZmCiAJb3V0cHV0IGZvcm1hdCB0aGF0IGlzIHVzZWZ1bCBvbmx5IHRvIHRlbGwgdGhlIGNoYW5nZWQKIAlwYXRocyBhbmQgdGhlaXIgbmF0dXJlIG9mIGNoYW5nZXMuCiAKQEAgLTM2LDcgKzM2LDcgQEAKIAlleGNsdXNpdmUsIHRvcCBpbmNsdXNpdmUpLgogCiAtcjo6Ci0JU2hvdyBnaXQgaW50ZXJuYWwgZGlmZiBvdXRwdXQsIGJ1dCBmb3IgdGhlIHdob2xlIHRyZWUsCisJU2hvdyBHaXQgaW50ZXJuYWwgZGlmZiBvdXRwdXQsIGJ1dCBmb3IgdGhlIHdob2xlIHRyZWUsCiAJbm90IGp1c3QgdGhlIHRvcCBsZXZlbC4KIAogLW06OgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQudHh0CmluZGV4IDU5Y2U2YWMuLjhjNDE4ODEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC50eHQKQEAgLTIyLDMxICsyMiw4MCBAQAogYW5kIGZ1bGwgYWNjZXNzIHRvIGludGVybmFscy4KIAogU2VlIGxpbmtnaXQ6Z2l0dHV0b3JpYWxbN10gdG8gZ2V0IHN0YXJ0ZWQsIHRoZW4gc2VlCi1saW5rOmV2ZXJ5ZGF5Lmh0bWxbRXZlcnlkYXkgR2l0XSBmb3IgYSB1c2VmdWwgbWluaW11bSBzZXQgb2YgY29tbWFuZHMsIGFuZAotIm1hbiBnaXQtY29tbWFuZG5hbWUiIGZvciBkb2N1bWVudGF0aW9uIG9mIGVhY2ggY29tbWFuZC4gIENWUyB1c2VycyBtYXkKLWFsc28gd2FudCB0byByZWFkIGxpbmtnaXQ6Z2l0Y3ZzLW1pZ3JhdGlvbls3XS4gIFNlZQotdGhlIGxpbms6dXNlci1tYW51YWwuaHRtbFtHaXQgVXNlcidzIE1hbnVhbF0gZm9yIGEgbW9yZSBpbi1kZXB0aAotaW50cm9kdWN0aW9uLgorbGluazpldmVyeWRheS5odG1sW0V2ZXJ5ZGF5IEdpdF0gZm9yIGEgdXNlZnVsIG1pbmltdW0gc2V0IG9mCitjb21tYW5kcy4gIFRoZSBsaW5rOnVzZXItbWFudWFsLmh0bWxbR2l0IFVzZXIncyBNYW51YWxdIGhhcyBhIG1vcmUKK2luLWRlcHRoIGludHJvZHVjdGlvbi4KIAotVGhlICc8Y29tbWFuZD4nIGlzIGVpdGhlciBhIG5hbWUgb2YgYSBHaXQgY29tbWFuZCAoc2VlIGJlbG93KSBvciBhbiBhbGlhcwotYXMgZGVmaW5lZCBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIChzZWUgbGlua2dpdDpnaXQtY29uZmlnWzFdKS4KK0FmdGVyIHlvdSBtYXN0ZXJlZCB0aGUgYmFzaWMgY29uY2VwdHMsIHlvdSBjYW4gY29tZSBiYWNrIHRvIHRoaXMKK3BhZ2UgdG8gbGVhcm4gd2hhdCBjb21tYW5kcyBHaXQgb2ZmZXJzLiAgWW91IGNhbiBsZWFybiBtb3JlIGFib3V0CitpbmRpdmlkdWFsIEdpdCBjb21tYW5kcyB3aXRoICJnaXQgaGVscCBjb21tYW5kIi4gIGxpbmtnaXQ6Z2l0Y2xpWzddCittYW51YWwgcGFnZSBnaXZlcyB5b3UgYW4gb3ZlcnZpZXcgb2YgdGhlIGNvbW1hbmQgbGluZSBjb21tYW5kIHN5bnRheC4KIAotRm9ybWF0dGVkIGFuZCBoeXBlcmxpbmtlZCB2ZXJzaW9uIG9mIHRoZSBsYXRlc3QgZ2l0Ci1kb2N1bWVudGF0aW9uIGNhbiBiZSB2aWV3ZWQgYXQKLWBodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL3NjbS9naXQvZG9jcy9gLgorRm9ybWF0dGVkIGFuZCBoeXBlcmxpbmtlZCB2ZXJzaW9uIG9mIHRoZSBsYXRlc3QgR2l0IGRvY3VtZW50YXRpb24KK2NhbiBiZSB2aWV3ZWQgYXQgYGh0dHA6Ly9naXQtaHRtbGRvY3MuZ29vZ2xlY29kZS5jb20vZ2l0L2dpdC5odG1sYC4KIAogaWZkZWY6OnN0YWxlbm90ZXNbXQogW05PVEVdCiA9PT09PT09PT09PT0KIAogWW91IGFyZSByZWFkaW5nIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgbGF0ZXN0IChwb3NzaWJseQotdW5yZWxlYXNlZCkgdmVyc2lvbiBvZiBnaXQsIHRoYXQgaXMgYXZhaWxhYmxlIGZyb20gJ21hc3RlcicKK3VucmVsZWFzZWQpIHZlcnNpb24gb2YgR2l0LCB0aGF0IGlzIGF2YWlsYWJsZSBmcm9tICdtYXN0ZXInCiBicmFuY2ggb2YgdGhlIGBnaXQuZ2l0YCByZXBvc2l0b3J5LgogRG9jdW1lbnRhdGlvbiBmb3Igb2xkZXIgcmVsZWFzZXMgYXJlIGF2YWlsYWJsZSBoZXJlOgogCi0qIGxpbms6djEuNy4xMS9naXQuaHRtbFtkb2N1bWVudGF0aW9uIGZvciByZWxlYXNlIDEuNy4xMV0KKyogbGluazp2MS44LjMuMi9naXQuaHRtbFtkb2N1bWVudGF0aW9uIGZvciByZWxlYXNlIDEuOC4zLjJdCiAKICogcmVsZWFzZSBub3RlcyBmb3IKKyAgbGluazpSZWxOb3Rlcy8xLjguMy4yLnR4dFsxLjguMy4yXSwKKyAgbGluazpSZWxOb3Rlcy8xLjguMy4xLnR4dFsxLjguMy4xXSwKKyAgbGluazpSZWxOb3Rlcy8xLjguMy50eHRbMS44LjNdLgorCisqIGxpbms6djEuOC4yLjMvZ2l0Lmh0bWxbZG9jdW1lbnRhdGlvbiBmb3IgcmVsZWFzZSAxLjguMi4zXQorCisqIHJlbGVhc2Ugbm90ZXMgZm9yCisgIGxpbms6UmVsTm90ZXMvMS44LjIuMy50eHRbMS44LjIuM10uCisgIGxpbms6UmVsTm90ZXMvMS44LjIuMi50eHRbMS44LjIuMl0uCisgIGxpbms6UmVsTm90ZXMvMS44LjIuMS50eHRbMS44LjIuMV0uCisgIGxpbms6UmVsTm90ZXMvMS44LjIudHh0WzEuOC4yXS4KKworKiBsaW5rOnYxLjguMS42L2dpdC5odG1sW2RvY3VtZW50YXRpb24gZm9yIHJlbGVhc2UgMS44LjEuNl0KKworKiByZWxlYXNlIG5vdGVzIGZvcgorICBsaW5rOlJlbE5vdGVzLzEuOC4xLjYudHh0WzEuOC4xLjZdLAorICBsaW5rOlJlbE5vdGVzLzEuOC4xLjUudHh0WzEuOC4xLjVdLAorICBsaW5rOlJlbE5vdGVzLzEuOC4xLjQudHh0WzEuOC4xLjRdLAorICBsaW5rOlJlbE5vdGVzLzEuOC4xLjMudHh0WzEuOC4xLjNdLAorICBsaW5rOlJlbE5vdGVzLzEuOC4xLjIudHh0WzEuOC4xLjJdLAorICBsaW5rOlJlbE5vdGVzLzEuOC4xLjEudHh0WzEuOC4xLjFdLAorICBsaW5rOlJlbE5vdGVzLzEuOC4xLnR4dFsxLjguMV0uCisKKyogbGluazp2MS44LjAuMy9naXQuaHRtbFtkb2N1bWVudGF0aW9uIGZvciByZWxlYXNlIDEuOC4wLjNdCisKKyogcmVsZWFzZSBub3RlcyBmb3IKKyAgbGluazpSZWxOb3Rlcy8xLjguMC4zLnR4dFsxLjguMC4zXSwKKyAgbGluazpSZWxOb3Rlcy8xLjguMC4yLnR4dFsxLjguMC4yXSwKKyAgbGluazpSZWxOb3Rlcy8xLjguMC4xLnR4dFsxLjguMC4xXSwKKyAgbGluazpSZWxOb3Rlcy8xLjguMC50eHRbMS44LjBdLgorCisqIGxpbms6djEuNy4xMi40L2dpdC5odG1sW2RvY3VtZW50YXRpb24gZm9yIHJlbGVhc2UgMS43LjEyLjRdCisKKyogcmVsZWFzZSBub3RlcyBmb3IKKyAgbGluazpSZWxOb3Rlcy8xLjcuMTIuNC50eHRbMS43LjEyLjRdLAorICBsaW5rOlJlbE5vdGVzLzEuNy4xMi4zLnR4dFsxLjcuMTIuM10sCisgIGxpbms6UmVsTm90ZXMvMS43LjEyLjIudHh0WzEuNy4xMi4yXSwKKyAgbGluazpSZWxOb3Rlcy8xLjcuMTIuMS50eHRbMS43LjEyLjFdLAorICBsaW5rOlJlbE5vdGVzLzEuNy4xMi50eHRbMS43LjEyXS4KKworKiBsaW5rOnYxLjcuMTEuNy9naXQuaHRtbFtkb2N1bWVudGF0aW9uIGZvciByZWxlYXNlIDEuNy4xMS43XQorCisqIHJlbGVhc2Ugbm90ZXMgZm9yCisgIGxpbms6UmVsTm90ZXMvMS43LjExLjcudHh0WzEuNy4xMS43XSwKKyAgbGluazpSZWxOb3Rlcy8xLjcuMTEuNi50eHRbMS43LjExLjZdLAorICBsaW5rOlJlbE5vdGVzLzEuNy4xMS41LnR4dFsxLjcuMTEuNV0sCisgIGxpbms6UmVsTm90ZXMvMS43LjExLjQudHh0WzEuNy4xMS40XSwKKyAgbGluazpSZWxOb3Rlcy8xLjcuMTEuMy50eHRbMS43LjExLjNdLAorICBsaW5rOlJlbE5vdGVzLzEuNy4xMS4yLnR4dFsxLjcuMTEuMl0sCisgIGxpbms6UmVsTm90ZXMvMS43LjExLjEudHh0WzEuNy4xMS4xXSwKICAgbGluazpSZWxOb3Rlcy8xLjcuMTEudHh0WzEuNy4xMV0uCiAKICogbGluazp2MS43LjEwLjUvZ2l0Lmh0bWxbZG9jdW1lbnRhdGlvbiBmb3IgcmVsZWFzZSAxLjcuMTAuNV0KQEAgLTMyNiwxMiArMzc1LDEyIEBACiBPUFRJT05TCiAtLS0tLS0tCiAtLXZlcnNpb246OgotCVByaW50cyB0aGUgZ2l0IHN1aXRlIHZlcnNpb24gdGhhdCB0aGUgJ2dpdCcgcHJvZ3JhbSBjYW1lIGZyb20uCisJUHJpbnRzIHRoZSBHaXQgc3VpdGUgdmVyc2lvbiB0aGF0IHRoZSAnZ2l0JyBwcm9ncmFtIGNhbWUgZnJvbS4KIAogLS1oZWxwOjoKIAlQcmludHMgdGhlIHN5bm9wc2lzIGFuZCBhIGxpc3Qgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZAogCWNvbW1hbmRzLiBJZiB0aGUgb3B0aW9uICctLWFsbCcgb3IgJy1hJyBpcyBnaXZlbiB0aGVuIGFsbAotCWF2YWlsYWJsZSBjb21tYW5kcyBhcmUgcHJpbnRlZC4gSWYgYSBnaXQgY29tbWFuZCBpcyBuYW1lZCB0aGlzCisJYXZhaWxhYmxlIGNvbW1hbmRzIGFyZSBwcmludGVkLiBJZiBhIEdpdCBjb21tYW5kIGlzIG5hbWVkIHRoaXMKIAlvcHRpb24gd2lsbCBicmluZyB1cCB0aGUgbWFudWFsIHBhZ2UgZm9yIHRoYXQgY29tbWFuZC4KICsKIE90aGVyIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSB0byBjb250cm9sIGhvdyB0aGUgbWFudWFsIHBhZ2UgaXMKQEAgLTM0NiwyMiArMzk1LDIyIEBACiAJJ2dpdCBjb25maWcnIChzdWJrZXlzIHNlcGFyYXRlZCBieSBkb3RzKS4KIAogLS1leGVjLXBhdGhbPTxwYXRoPl06OgotCVBhdGggdG8gd2hlcmV2ZXIgeW91ciBjb3JlIGdpdCBwcm9ncmFtcyBhcmUgaW5zdGFsbGVkLgorCVBhdGggdG8gd2hlcmV2ZXIgeW91ciBjb3JlIEdpdCBwcm9ncmFtcyBhcmUgaW5zdGFsbGVkLgogCVRoaXMgY2FuIGFsc28gYmUgY29udHJvbGxlZCBieSBzZXR0aW5nIHRoZSBHSVRfRVhFQ19QQVRICiAJZW52aXJvbm1lbnQgdmFyaWFibGUuIElmIG5vIHBhdGggaXMgZ2l2ZW4sICdnaXQnIHdpbGwgcHJpbnQKIAl0aGUgY3VycmVudCBzZXR0aW5nIGFuZCB0aGVuIGV4aXQuCiAKIC0taHRtbC1wYXRoOjoKLQlQcmludCB0aGUgcGF0aCwgd2l0aG91dCB0cmFpbGluZyBzbGFzaCwgd2hlcmUgZ2l0J3MgSFRNTAorCVByaW50IHRoZSBwYXRoLCB3aXRob3V0IHRyYWlsaW5nIHNsYXNoLCB3aGVyZSBHaXQncyBIVE1MCiAJZG9jdW1lbnRhdGlvbiBpcyBpbnN0YWxsZWQgYW5kIGV4aXQuCiAKIC0tbWFuLXBhdGg6OgogCVByaW50IHRoZSBtYW5wYXRoIChzZWUgYG1hbigxKWApIGZvciB0aGUgbWFuIHBhZ2VzIGZvcgotCXRoaXMgdmVyc2lvbiBvZiBnaXQgYW5kIGV4aXQuCisJdGhpcyB2ZXJzaW9uIG9mIEdpdCBhbmQgZXhpdC4KIAogLS1pbmZvLXBhdGg6OgogCVByaW50IHRoZSBwYXRoIHdoZXJlIHRoZSBJbmZvIGZpbGVzIGRvY3VtZW50aW5nIHRoaXMKLQl2ZXJzaW9uIG9mIGdpdCBhcmUgaW5zdGFsbGVkIGFuZCBleGl0LgorCXZlcnNpb24gb2YgR2l0IGFyZSBpbnN0YWxsZWQgYW5kIGV4aXQuCiAKIC1wOjoKIC0tcGFnaW5hdGU6OgpAQCAtMzcxLDcgKzQyMCw3IEBACiAJYmVsb3cpLgogCiAtLW5vLXBhZ2VyOjoKLQlEbyBub3QgcGlwZSBnaXQgb3V0cHV0IGludG8gYSBwYWdlci4KKwlEbyBub3QgcGlwZSBHaXQgb3V0cHV0IGludG8gYSBwYWdlci4KIAogLS1naXQtZGlyPTxwYXRoPjo6CiAJU2V0IHRoZSBwYXRoIHRvIHRoZSByZXBvc2l0b3J5LiBUaGlzIGNhbiBhbHNvIGJlIGNvbnRyb2xsZWQgYnkKQEAgLTM4Nyw3ICs0MzYsNyBAQAogCW1vcmUgZGV0YWlsZWQgZGlzY3Vzc2lvbikuCiAKIC0tbmFtZXNwYWNlPTxwYXRoPjo6Ci0JU2V0IHRoZSBnaXQgbmFtZXNwYWNlLiAgU2VlIGxpbmtnaXQ6Z2l0bmFtZXNwYWNlc1s3XSBmb3IgbW9yZQorCVNldCB0aGUgR2l0IG5hbWVzcGFjZS4gIFNlZSBsaW5rZ2l0OmdpdG5hbWVzcGFjZXNbN10gZm9yIG1vcmUKIAlkZXRhaWxzLiAgRXF1aXZhbGVudCB0byBzZXR0aW5nIHRoZSBgR0lUX05BTUVTUEFDRWAgZW52aXJvbm1lbnQKIAl2YXJpYWJsZS4KIApAQCAtMzk3LDMyICs0NDYsMTkgQEAKIAlkaXJlY3RvcnkuCiAKIC0tbm8tcmVwbGFjZS1vYmplY3RzOjoKLQlEbyBub3QgdXNlIHJlcGxhY2VtZW50IHJlZnMgdG8gcmVwbGFjZSBnaXQgb2JqZWN0cy4gU2VlCisJRG8gbm90IHVzZSByZXBsYWNlbWVudCByZWZzIHRvIHJlcGxhY2UgR2l0IG9iamVjdHMuIFNlZQogCWxpbmtnaXQ6Z2l0LXJlcGxhY2VbMV0gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKKy0tbGl0ZXJhbC1wYXRoc3BlY3M6OgorCVRyZWF0IHBhdGhzcGVjcyBsaXRlcmFsbHksIHJhdGhlciB0aGFuIGFzIGdsb2IgcGF0dGVybnMuIFRoaXMgaXMKKwllcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGBHSVRfTElURVJBTF9QQVRIU1BFQ1NgIGVudmlyb25tZW50CisJdmFyaWFibGUgdG8gYDFgLgogCi1GVVJUSEVSIERPQ1VNRU5UQVRJT04KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1TZWUgdGhlIHJlZmVyZW5jZXMgYWJvdmUgdG8gZ2V0IHN0YXJ0ZWQgdXNpbmcgZ2l0LiAgVGhlIGZvbGxvd2luZyBpcwotcHJvYmFibHkgbW9yZSBkZXRhaWwgdGhhbiBuZWNlc3NhcnkgZm9yIGEgZmlyc3QtdGltZSB1c2VyLgotCi1UaGUgbGluazp1c2VyLW1hbnVhbC5odG1sI2dpdC1jb25jZXB0c1tnaXQgY29uY2VwdHMgY2hhcHRlciBvZiB0aGUKLXVzZXItbWFudWFsXSBhbmQgbGlua2dpdDpnaXRjb3JlLXR1dG9yaWFsWzddIGJvdGggcHJvdmlkZQotaW50cm9kdWN0aW9ucyB0byB0aGUgdW5kZXJseWluZyBnaXQgYXJjaGl0ZWN0dXJlLgotCi1TZWUgbGlua2dpdDpnaXR3b3JrZmxvd3NbN10gZm9yIGFuIG92ZXJ2aWV3IG9mIHJlY29tbWVuZGVkIHdvcmtmbG93cy4KLQotU2VlIGFsc28gdGhlIGxpbms6aG93dG8taW5kZXguaHRtbFtob3d0b10gZG9jdW1lbnRzIGZvciBzb21lIHVzZWZ1bAotZXhhbXBsZXMuCi0KLVRoZSBpbnRlcm5hbHMgYXJlIGRvY3VtZW50ZWQgaW4gdGhlCi1saW5rOnRlY2huaWNhbC9hcGktaW5kZXguaHRtbFtHSVQgQVBJIGRvY3VtZW50YXRpb25dLgogCiBHSVQgQ09NTUFORFMKIC0tLS0tLS0tLS0tLQogCi1XZSBkaXZpZGUgZ2l0IGludG8gaGlnaCBsZXZlbCAoInBvcmNlbGFpbiIpIGNvbW1hbmRzIGFuZCBsb3cgbGV2ZWwKK1dlIGRpdmlkZSBHaXQgaW50byBoaWdoIGxldmVsICgicG9yY2VsYWluIikgY29tbWFuZHMgYW5kIGxvdyBsZXZlbAogKCJwbHVtYmluZyIpIGNvbW1hbmRzLgogCiBIaWdoLWxldmVsIGNvbW1hbmRzIChwb3JjZWxhaW4pCkBAIC00NTksNyArNDk1LDcgQEAKIExvdy1sZXZlbCBjb21tYW5kcyAocGx1bWJpbmcpCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1BbHRob3VnaCBnaXQgaW5jbHVkZXMgaXRzCitBbHRob3VnaCBHaXQgaW5jbHVkZXMgaXRzCiBvd24gcG9yY2VsYWluIGxheWVyLCBpdHMgbG93LWxldmVsIGNvbW1hbmRzIGFyZSBzdWZmaWNpZW50IHRvIHN1cHBvcnQKIGRldmVsb3BtZW50IG9mIGFsdGVybmF0aXZlIHBvcmNlbGFpbnMuICBEZXZlbG9wZXJzIG9mIHN1Y2ggcG9yY2VsYWlucwogbWlnaHQgc3RhcnQgYnkgcmVhZGluZyBhYm91dCBsaW5rZ2l0OmdpdC11cGRhdGUtaW5kZXhbMV0gYW5kCkBAIC01MTcsMTAgKzU1Myw5IEBACiBDb25maWd1cmF0aW9uIE1lY2hhbmlzbQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU3RhcnRpbmcgZnJvbSAwLjk5LjkgKGFjdHVhbGx5IG1pZCAwLjk5LjguR0lUKSwgYC5naXQvY29uZmlnYCBmaWxlCi1pcyB1c2VkIHRvIGhvbGQgcGVyLXJlcG9zaXRvcnkgY29uZmlndXJhdGlvbiBvcHRpb25zLiAgSXQgaXMgYQotc2ltcGxlIHRleHQgZmlsZSBtb2RlbGVkIGFmdGVyIGAuaW5pYCBmb3JtYXQgZmFtaWxpYXIgdG8gc29tZQotcGVvcGxlLiAgSGVyZSBpcyBhbiBleGFtcGxlOgorR2l0IHVzZXMgYSBzaW1wbGUgdGV4dCBmb3JtYXQgdG8gc3RvcmUgY3VzdG9taXphdGlvbnMgdGhhdCBhcmUgcGVyCityZXBvc2l0b3J5IGFuZCBhcmUgcGVyIHVzZXIuICBTdWNoIGEgY29uZmlndXJhdGlvbiBmaWxlIG1heSBsb29rCitsaWtlIHRoaXM6CiAKIC0tLS0tLS0tLS0tLQogIwpAQCAtNTM1LDEzICs1NzAsMTMgQEAKIDsgdXNlciBpZGVudGl0eQogW3VzZXJdCiAJbmFtZSA9ICJKdW5pbyBDIEhhbWFubyIKLQllbWFpbCA9ICJqdW5raW9AdHdpbnN1bi5jb20iCisJZW1haWwgPSAiZ2l0c3RlckBwb2JveC5jb20iCiAKIC0tLS0tLS0tLS0tLQogCiBWYXJpb3VzIGNvbW1hbmRzIHJlYWQgZnJvbSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGFuZCBhZGp1c3QKIHRoZWlyIG9wZXJhdGlvbiBhY2NvcmRpbmdseS4gIFNlZSBsaW5rZ2l0OmdpdC1jb25maWdbMV0gZm9yIGEKLWxpc3QuCitsaXN0IGFuZCBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24gbWVjaGFuaXNtLgogCiAKIElkZW50aWZpZXIgVGVybWlub2xvZ3kKQEAgLTU4MCw3ICs2MTUsNyBAQAogCiBTeW1ib2xpYyBJZGVudGlmaWVycwogLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFueSBnaXQgY29tbWFuZCBhY2NlcHRpbmcgYW55IDxvYmplY3Q+IGNhbiBhbHNvIHVzZSB0aGUgZm9sbG93aW5nCitBbnkgR2l0IGNvbW1hbmQgYWNjZXB0aW5nIGFueSA8b2JqZWN0PiBjYW4gYWxzbyB1c2UgdGhlIGZvbGxvd2luZwogc3ltYm9saWMgbm90YXRpb246CiAKIEhFQUQ6OgpAQCAtNjE2LDEzICs2NTEsMTMgQEAKIAogRW52aXJvbm1lbnQgVmFyaWFibGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVZhcmlvdXMgZ2l0IGNvbW1hbmRzIHVzZSB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlczoKK1ZhcmlvdXMgR2l0IGNvbW1hbmRzIHVzZSB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlczoKIAotVGhlIGdpdCBSZXBvc2l0b3J5CitUaGUgR2l0IFJlcG9zaXRvcnkKIH5+fn5+fn5+fn5+fn5+fn5+fgotVGhlc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFwcGx5IHRvICdhbGwnIGNvcmUgZ2l0IGNvbW1hbmRzLiBOYjogaXQKK1RoZXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcHBseSB0byAnYWxsJyBjb3JlIEdpdCBjb21tYW5kcy4gTmI6IGl0CiBpcyB3b3J0aCBub3RpbmcgdGhhdCB0aGV5IG1heSBiZSB1c2VkL292ZXJyaWRkZW4gYnkgU0NNUyBzaXR0aW5nIGFib3ZlCi1naXQgc28gdGFrZSBjYXJlIGlmIHVzaW5nIENvZ2l0byBldGMuCitHaXQgc28gdGFrZSBjYXJlIGlmIHVzaW5nIENvZ2l0byBldGMuCiAKICdHSVRfSU5ERVhfRklMRSc6OgogCVRoaXMgZW52aXJvbm1lbnQgYWxsb3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGFuIGFsdGVybmF0ZQpAQCAtNjM2LDQ3ICs2NzEsNTMgQEAKIAlkaXJlY3RvcnkgaXMgdXNlZC4KIAogJ0dJVF9BTFRFUk5BVEVfT0JKRUNUX0RJUkVDVE9SSUVTJzo6Ci0JRHVlIHRvIHRoZSBpbW11dGFibGUgbmF0dXJlIG9mIGdpdCBvYmplY3RzLCBvbGQgb2JqZWN0cyBjYW4gYmUKKwlEdWUgdG8gdGhlIGltbXV0YWJsZSBuYXR1cmUgb2YgR2l0IG9iamVjdHMsIG9sZCBvYmplY3RzIGNhbiBiZQogCWFyY2hpdmVkIGludG8gc2hhcmVkLCByZWFkLW9ubHkgZGlyZWN0b3JpZXMuIFRoaXMgdmFyaWFibGUKIAlzcGVjaWZpZXMgYSAiOiIgc2VwYXJhdGVkIChvbiBXaW5kb3dzICI7IiBzZXBhcmF0ZWQpIGxpc3QKLQlvZiBnaXQgb2JqZWN0IGRpcmVjdG9yaWVzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHNlYXJjaCBmb3IgZ2l0CisJb2YgR2l0IG9iamVjdCBkaXJlY3RvcmllcyB3aGljaCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIEdpdAogCW9iamVjdHMuIE5ldyBvYmplY3RzIHdpbGwgbm90IGJlIHdyaXR0ZW4gdG8gdGhlc2UgZGlyZWN0b3JpZXMuCiAKICdHSVRfRElSJzo6CiAJSWYgdGhlICdHSVRfRElSJyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgdGhlbiBpdAogCXNwZWNpZmllcyBhIHBhdGggdG8gdXNlIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgYC5naXRgCiAJZm9yIHRoZSBiYXNlIG9mIHRoZSByZXBvc2l0b3J5LgorCVRoZSAnLS1naXQtZGlyJyBjb21tYW5kLWxpbmUgb3B0aW9uIGFsc28gc2V0cyB0aGlzIHZhbHVlLgogCiAnR0lUX1dPUktfVFJFRSc6OgotCVNldCB0aGUgcGF0aCB0byB0aGUgd29ya2luZyB0cmVlLiAgVGhlIHZhbHVlIHdpbGwgbm90IGJlCi0JdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHJlcG9zaXRvcmllcyBmb3VuZCBhdXRvbWF0aWNhbGx5IGluCi0JYSAuZ2l0IGRpcmVjdG9yeSAoaS5lLiAkR0lUX0RJUiBpcyBub3Qgc2V0KS4KKwlTZXQgdGhlIHBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIHdvcmtpbmcgdHJlZS4KIAlUaGlzIGNhbiBhbHNvIGJlIGNvbnRyb2xsZWQgYnkgdGhlICctLXdvcmstdHJlZScgY29tbWFuZCBsaW5lCiAJb3B0aW9uIGFuZCB0aGUgY29yZS53b3JrdHJlZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlLgogCiAnR0lUX05BTUVTUEFDRSc6OgotCVNldCB0aGUgZ2l0IG5hbWVzcGFjZTsgc2VlIGxpbmtnaXQ6Z2l0bmFtZXNwYWNlc1s3XSBmb3IgZGV0YWlscy4KKwlTZXQgdGhlIEdpdCBuYW1lc3BhY2U7IHNlZSBsaW5rZ2l0OmdpdG5hbWVzcGFjZXNbN10gZm9yIGRldGFpbHMuCiAJVGhlICctLW5hbWVzcGFjZScgY29tbWFuZC1saW5lIG9wdGlvbiBhbHNvIHNldHMgdGhpcyB2YWx1ZS4KIAogJ0dJVF9DRUlMSU5HX0RJUkVDVE9SSUVTJzo6Ci0JVGhpcyBzaG91bGQgYmUgYSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBhYnNvbHV0ZSBwYXRocy4KLQlJZiBzZXQsIGl0IGlzIGEgbGlzdCBvZiBkaXJlY3RvcmllcyB0aGF0IGdpdCBzaG91bGQgbm90IGNoZGlyCi0JdXAgaW50byB3aGlsZSBsb29raW5nIGZvciBhIHJlcG9zaXRvcnkgZGlyZWN0b3J5LgotCUl0IHdpbGwgbm90IGV4Y2x1ZGUgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb3IKLQlhIEdJVF9ESVIgc2V0IG9uIHRoZSBjb21tYW5kIGxpbmUgb3IgaW4gdGhlIGVudmlyb25tZW50LgotCShVc2VmdWwgZm9yIGV4Y2x1ZGluZyBzbG93LWxvYWRpbmcgbmV0d29yayBkaXJlY3Rvcmllcy4pCisJVGhpcyBzaG91bGQgYmUgYSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBhYnNvbHV0ZSBwYXRocy4gIElmCisJc2V0LCBpdCBpcyBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdGhhdCBHaXQgc2hvdWxkIG5vdCBjaGRpciB1cAorCWludG8gd2hpbGUgbG9va2luZyBmb3IgYSByZXBvc2l0b3J5IGRpcmVjdG9yeSAodXNlZnVsIGZvcgorCWV4Y2x1ZGluZyBzbG93LWxvYWRpbmcgbmV0d29yayBkaXJlY3RvcmllcykuICBJdCB3aWxsIG5vdAorCWV4Y2x1ZGUgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb3IgYSBHSVRfRElSIHNldCBvbiB0aGUKKwljb21tYW5kIGxpbmUgb3IgaW4gdGhlIGVudmlyb25tZW50LiAgTm9ybWFsbHksIEdpdCBoYXMgdG8gcmVhZAorCXRoZSBlbnRyaWVzIGluIHRoaXMgbGlzdCBhbmQgcmVzb2x2ZSBhbnkgc3ltbGluayB0aGF0CisJbWlnaHQgYmUgcHJlc2VudCBpbiBvcmRlciB0byBjb21wYXJlIHRoZW0gd2l0aCB0aGUgY3VycmVudAorCWRpcmVjdG9yeS4gIEhvd2V2ZXIsIGlmIGV2ZW4gdGhpcyBhY2Nlc3MgaXMgc2xvdywgeW91CisJY2FuIGFkZCBhbiBlbXB0eSBlbnRyeSB0byB0aGUgbGlzdCB0byB0ZWxsIEdpdCB0aGF0IHRoZQorCXN1YnNlcXVlbnQgZW50cmllcyBhcmUgbm90IHN5bWxpbmtzIGFuZCBuZWVkbid0IGJlIHJlc29sdmVkOworCWUuZy4sCisJJ0dJVF9DRUlMSU5HX0RJUkVDVE9SSUVTPS9tYXliZS9zeW1saW5rOjovdmVyeS9zbG93L25vbi9zeW1saW5rJy4KIAogJ0dJVF9ESVNDT1ZFUllfQUNST1NTX0ZJTEVTWVNURU0nOjoKIAlXaGVuIHJ1biBpbiBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgbm90IGhhdmUgIi5naXQiIHJlcG9zaXRvcnkKLQlkaXJlY3RvcnksIGdpdCB0cmllcyB0byBmaW5kIHN1Y2ggYSBkaXJlY3RvcnkgaW4gdGhlIHBhcmVudAorCWRpcmVjdG9yeSwgR2l0IHRyaWVzIHRvIGZpbmQgc3VjaCBhIGRpcmVjdG9yeSBpbiB0aGUgcGFyZW50CiAJZGlyZWN0b3JpZXMgdG8gZmluZCB0aGUgdG9wIG9mIHRoZSB3b3JraW5nIHRyZWUsIGJ1dCBieSBkZWZhdWx0IGl0CiAJZG9lcyBub3QgY3Jvc3MgZmlsZXN5c3RlbSBib3VuZGFyaWVzLiAgVGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZQotCWNhbiBiZSBzZXQgdG8gdHJ1ZSB0byB0ZWxsIGdpdCBub3QgdG8gc3RvcCBhdCBmaWxlc3lzdGVtCisJY2FuIGJlIHNldCB0byB0cnVlIHRvIHRlbGwgR2l0IG5vdCB0byBzdG9wIGF0IGZpbGVzeXN0ZW0KIAlib3VuZGFyaWVzLiAgTGlrZSAnR0lUX0NFSUxJTkdfRElSRUNUT1JJRVMnLCB0aGlzIHdpbGwgbm90IGFmZmVjdAogCWFuIGV4cGxpY2l0IHJlcG9zaXRvcnkgZGlyZWN0b3J5IHNldCB2aWEgJ0dJVF9ESVInIG9yIG9uIHRoZQogCWNvbW1hbmQgbGluZS4KIAotZ2l0IENvbW1pdHMKK0dpdCBDb21taXRzCiB+fn5+fn5+fn5+fgogJ0dJVF9BVVRIT1JfTkFNRSc6OgogJ0dJVF9BVVRIT1JfRU1BSUwnOjoKQEAgLTY4NywxMyArNzI4LDEzIEBACiAnRU1BSUwnOjoKIAlzZWUgbGlua2dpdDpnaXQtY29tbWl0LXRyZWVbMV0KIAotZ2l0IERpZmZzCitHaXQgRGlmZnMKIH5+fn5+fn5+fgogJ0dJVF9ESUZGX09QVFMnOjoKIAlPbmx5IHZhbGlkIHNldHRpbmcgaXMgIi0tdW5pZmllZD0/PyIgb3IgIi11Pz8iIHRvIHNldCB0aGUKIAludW1iZXIgb2YgY29udGV4dCBsaW5lcyBzaG93biB3aGVuIGEgdW5pZmllZCBkaWZmIGlzIGNyZWF0ZWQuCiAJVGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYW55ICItVSIgb3IgIi0tdW5pZmllZCIgb3B0aW9uCi0JdmFsdWUgcGFzc2VkIG9uIHRoZSBnaXQgZGlmZiBjb21tYW5kIGxpbmUuCisJdmFsdWUgcGFzc2VkIG9uIHRoZSBHaXQgZGlmZiBjb21tYW5kIGxpbmUuCiAKICdHSVRfRVhURVJOQUxfRElGRic6OgogCVdoZW4gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICdHSVRfRVhURVJOQUxfRElGRicgaXMgc2V0LCB0aGUKQEAgLTcwNyw3ICs3NDgsNyBAQAogCiAJPG9sZHxuZXc+LWZpbGU6OiBhcmUgZmlsZXMgR0lUX0VYVEVSTkFMX0RJRkYgY2FuIHVzZSB0byByZWFkIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIG9mIDxvbGR8bmV3PiwKLQk8b2xkfG5ldz4taGV4OjogYXJlIHRoZSA0MC1oZXhkaWdpdCBTSEExIGhhc2hlcywKKwk8b2xkfG5ldz4taGV4OjogYXJlIHRoZSA0MC1oZXhkaWdpdCBTSEEtMSBoYXNoZXMsCiAJPG9sZHxuZXc+LW1vZGU6OiBhcmUgdGhlIG9jdGFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBmaWxlIG1vZGVzLgogKwogVGhlIGZpbGUgcGFyYW1ldGVycyBjYW4gcG9pbnQgYXQgdGhlIHVzZXIncyB3b3JraW5nIGZpbGUKQEAgLTcyOCwxMyArNzY5LDEzIEBACiAKICdHSVRfUEFHRVInOjoKIAlUaGlzIGVudmlyb25tZW50IHZhcmlhYmxlIG92ZXJyaWRlcyBgJFBBR0VSYC4gSWYgaXQgaXMgc2V0Ci0JdG8gYW4gZW1wdHkgc3RyaW5nIG9yIHRvIHRoZSB2YWx1ZSAiY2F0IiwgZ2l0IHdpbGwgbm90IGxhdW5jaAorCXRvIGFuIGVtcHR5IHN0cmluZyBvciB0byB0aGUgdmFsdWUgImNhdCIsIEdpdCB3aWxsIG5vdCBsYXVuY2gKIAlhIHBhZ2VyLiAgU2VlIGFsc28gdGhlIGBjb3JlLnBhZ2VyYCBvcHRpb24gaW4KIAlsaW5rZ2l0OmdpdC1jb25maWdbMV0uCiAKICdHSVRfRURJVE9SJzo6CiAJVGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBvdmVycmlkZXMgYCRFRElUT1JgIGFuZCBgJFZJU1VBTGAuCi0JSXQgaXMgdXNlZCBieSBzZXZlcmFsIGdpdCBjb21hbmRzIHdoZW4sIG9uIGludGVyYWN0aXZlIG1vZGUsCisJSXQgaXMgdXNlZCBieSBzZXZlcmFsIEdpdCBjb21tYW5kcyB3aGVuLCBvbiBpbnRlcmFjdGl2ZSBtb2RlLAogCWFuIGVkaXRvciBpcyB0byBiZSBsYXVuY2hlZC4gU2VlIGFsc28gbGlua2dpdDpnaXQtdmFyWzFdCiAJYW5kIHRoZSBgY29yZS5lZGl0b3JgIG9wdGlvbiBpbiBsaW5rZ2l0OmdpdC1jb25maWdbMV0uCiAKQEAgLTc0Miw5ICs3ODMsMTIgQEAKIAlJZiB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCB0aGVuICdnaXQgZmV0Y2gnCiAJYW5kICdnaXQgcHVzaCcgd2lsbCB1c2UgdGhpcyBjb21tYW5kIGluc3RlYWQKIAlvZiAnc3NoJyB3aGVuIHRoZXkgbmVlZCB0byBjb25uZWN0IHRvIGEgcmVtb3RlIHN5c3RlbS4KLQlUaGUgJyRHSVRfU1NIJyBjb21tYW5kIHdpbGwgYmUgZ2l2ZW4gZXhhY3RseSB0d28gYXJndW1lbnRzOgotCXRoZSAndXNlcm5hbWVAaG9zdCcgKG9yIGp1c3QgJ2hvc3QnKSBmcm9tIHRoZSBVUkwgYW5kIHRoZQotCXNoZWxsIGNvbW1hbmQgdG8gZXhlY3V0ZSBvbiB0aGF0IHJlbW90ZSBzeXN0ZW0uCisJVGhlICckR0lUX1NTSCcgY29tbWFuZCB3aWxsIGJlIGdpdmVuIGV4YWN0bHkgdHdvIG9yCisJZm91ciBhcmd1bWVudHM6IHRoZSAndXNlcm5hbWVAaG9zdCcgKG9yIGp1c3QgJ2hvc3QnKQorCWZyb20gdGhlIFVSTCBhbmQgdGhlIHNoZWxsIGNvbW1hbmQgdG8gZXhlY3V0ZSBvbiB0aGF0CisJcmVtb3RlIHN5c3RlbSwgb3B0aW9uYWxseSBwcmVjZWRlZCBieSAnLXAnIChsaXRlcmFsbHkpIGFuZAorCXRoZSAncG9ydCcgZnJvbSB0aGUgVVJMIHdoZW4gaXQgc3BlY2lmaWVzIHNvbWV0aGluZyBvdGhlcgorCXRoYW4gdGhlIGRlZmF1bHQgU1NIIHBvcnQuCiArCiBUbyBwYXNzIG9wdGlvbnMgdG8gdGhlIHByb2dyYW0gdGhhdCB5b3Ugd2FudCB0byBsaXN0IGluIEdJVF9TU0gKIHlvdSB3aWxsIG5lZWQgdG8gd3JhcCB0aGUgcHJvZ3JhbSBhbmQgb3B0aW9ucyBpbnRvIGEgc2hlbGwgc2NyaXB0LApAQCAtNzU1LDEyICs3OTksMjAgQEAKIGZvciBmdXJ0aGVyIGRldGFpbHMuCiAKICdHSVRfQVNLUEFTUyc6OgotCUlmIHRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0LCB0aGVuIGdpdCBjb21tYW5kcyB3aGljaCBuZWVkIHRvCisJSWYgdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQsIHRoZW4gR2l0IGNvbW1hbmRzIHdoaWNoIG5lZWQgdG8KIAlhY3F1aXJlIHBhc3N3b3JkcyBvciBwYXNzcGhyYXNlcyAoZS5nLiBmb3IgSFRUUCBvciBJTUFQIGF1dGhlbnRpY2F0aW9uKQogCXdpbGwgY2FsbCB0aGlzIHByb2dyYW0gd2l0aCBhIHN1aXRhYmxlIHByb21wdCBhcyBjb21tYW5kIGxpbmUgYXJndW1lbnQKIAlhbmQgcmVhZCB0aGUgcGFzc3dvcmQgZnJvbSBpdHMgU1RET1VULiBTZWUgYWxzbyB0aGUgJ2NvcmUuYXNrcGFzcycKIAlvcHRpb24gaW4gbGlua2dpdDpnaXQtY29uZmlnWzFdLgogCisnR0lUX0NPTkZJR19OT1NZU1RFTSc6OgorCVdoZXRoZXIgdG8gc2tpcCByZWFkaW5nIHNldHRpbmdzIGZyb20gdGhlIHN5c3RlbS13aWRlCisJYCQocHJlZml4KS9ldGMvZ2l0Y29uZmlnYCBmaWxlLiAgVGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYW4KKwliZSB1c2VkIGFsb25nIHdpdGggYCRIT01FYCBhbmQgYCRYREdfQ09ORklHX0hPTUVgIHRvIGNyZWF0ZSBhCisJcHJlZGljdGFibGUgZW52aXJvbm1lbnQgZm9yIGEgcGlja3kgc2NyaXB0LCBvciB5b3UgY2FuIHNldCBpdAorCXRlbXBvcmFyaWx5IHRvIGF2b2lkIHVzaW5nIGEgYnVnZ3kgYC9ldGMvZ2l0Y29uZmlnYCBmaWxlIHdoaWxlCisJd2FpdGluZyBmb3Igc29tZW9uZSB3aXRoIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gZml4IGl0LgorCiAnR0lUX0ZMVVNIJzo6CiAJSWYgdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgdG8gIjEiLCB0aGVuIGNvbW1hbmRzIHN1Y2gKIAlhcyAnZ2l0IGJsYW1lJyAoaW4gaW5jcmVtZW50YWwgbW9kZSksICdnaXQgcmV2LWxpc3QnLCAnZ2l0IGxvZycsCkBAIC03NjgsMzEgKzgyMCw0MSBAQAogCWFmdGVyIGVhY2ggY29tbWl0LW9yaWVudGVkIHJlY29yZCBoYXZlIGJlZW4gZmx1c2hlZC4gICBJZiB0aGlzCiAJdmFyaWFibGUgaXMgc2V0IHRvICIwIiwgdGhlIG91dHB1dCBvZiB0aGVzZSBjb21tYW5kcyB3aWxsIGJlIGRvbmUKIAl1c2luZyBjb21wbGV0ZWx5IGJ1ZmZlcmVkIEkvTy4gICBJZiB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlIGlzCi0Jbm90IHNldCwgZ2l0IHdpbGwgY2hvb3NlIGJ1ZmZlcmVkIG9yIHJlY29yZC1vcmllbnRlZCBmbHVzaGluZworCW5vdCBzZXQsIEdpdCB3aWxsIGNob29zZSBidWZmZXJlZCBvciByZWNvcmQtb3JpZW50ZWQgZmx1c2hpbmcKIAliYXNlZCBvbiB3aGV0aGVyIHN0ZG91dCBhcHBlYXJzIHRvIGJlIHJlZGlyZWN0ZWQgdG8gYSBmaWxlIG9yIG5vdC4KIAogJ0dJVF9UUkFDRSc6OgogCUlmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvICIxIiwgIjIiIG9yICJ0cnVlIiAoY29tcGFyaXNvbgotCWlzIGNhc2UgaW5zZW5zaXRpdmUpLCBnaXQgd2lsbCBwcmludCBgdHJhY2U6YCBtZXNzYWdlcyBvbgorCWlzIGNhc2UgaW5zZW5zaXRpdmUpLCBHaXQgd2lsbCBwcmludCBgdHJhY2U6YCBtZXNzYWdlcyBvbgogCXN0ZGVyciB0ZWxsaW5nIGFib3V0IGFsaWFzIGV4cGFuc2lvbiwgYnVpbHQtaW4gY29tbWFuZAogCWV4ZWN1dGlvbiBhbmQgZXh0ZXJuYWwgY29tbWFuZCBleGVjdXRpb24uCiAJSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gYW4gaW50ZWdlciB2YWx1ZSBncmVhdGVyIHRoYW4gMQotCWFuZCBsb3dlciB0aGFuIDEwIChzdHJpY3RseSkgdGhlbiBnaXQgd2lsbCBpbnRlcnByZXQgdGhpcworCWFuZCBsb3dlciB0aGFuIDEwIChzdHJpY3RseSkgdGhlbiBHaXQgd2lsbCBpbnRlcnByZXQgdGhpcwogCXZhbHVlIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGFuZCB3aWxsIHRyeSB0byB3cml0ZSB0aGUKIAl0cmFjZSBtZXNzYWdlcyBpbnRvIHRoaXMgZmlsZSBkZXNjcmlwdG9yLgogCUFsdGVybmF0aXZlbHksIGlmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvIGFuIGFic29sdXRlIHBhdGgKLQkoc3RhcnRpbmcgd2l0aCBhICcvJyBjaGFyYWN0ZXIpLCBnaXQgd2lsbCBpbnRlcnByZXQgdGhpcworCShzdGFydGluZyB3aXRoIGEgJy8nIGNoYXJhY3RlciksIEdpdCB3aWxsIGludGVycHJldCB0aGlzCiAJYXMgYSBmaWxlIHBhdGggYW5kIHdpbGwgdHJ5IHRvIHdyaXRlIHRoZSB0cmFjZSBtZXNzYWdlcwogCWludG8gaXQuCiAKK0dJVF9MSVRFUkFMX1BBVEhTUEVDUzo6CisJU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIGAxYCB3aWxsIGNhdXNlIEdpdCB0byB0cmVhdCBhbGwKKwlwYXRoc3BlY3MgbGl0ZXJhbGx5LCByYXRoZXIgdGhhbiBhcyBnbG9iIHBhdHRlcm5zLiBGb3IgZXhhbXBsZSwKKwlydW5uaW5nIGBHSVRfTElURVJBTF9QQVRIU1BFQ1M9MSBnaXQgbG9nIC0tICcqLmMnYCB3aWxsIHNlYXJjaAorCWZvciBjb21taXRzIHRoYXQgdG91Y2ggdGhlIHBhdGggYCouY2AsIG5vdCBhbnkgcGF0aHMgdGhhdCB0aGUKKwlnbG9iIGAqLmNgIG1hdGNoZXMuIFlvdSBtaWdodCB3YW50IHRoaXMgaWYgeW91IGFyZSBmZWVkaW5nCisJbGl0ZXJhbCBwYXRocyB0byBHaXQgKGUuZy4sIHBhdGhzIHByZXZpb3VzbHkgZ2l2ZW4gdG8geW91IGJ5CisJYGdpdCBscy10cmVlYCwgYC0tcmF3YCBkaWZmIG91dHB1dCwgZXRjKS4KKworCiBEaXNjdXNzaW9uW1tEaXNjdXNzaW9uXV0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBNb3JlIGRldGFpbCBvbiB0aGUgZm9sbG93aW5nIGlzIGF2YWlsYWJsZSBmcm9tIHRoZQotbGluazp1c2VyLW1hbnVhbC5odG1sI2dpdC1jb25jZXB0c1tnaXQgY29uY2VwdHMgY2hhcHRlciBvZiB0aGUKK2xpbms6dXNlci1tYW51YWwuaHRtbCNnaXQtY29uY2VwdHNbR2l0IGNvbmNlcHRzIGNoYXB0ZXIgb2YgdGhlCiB1c2VyLW1hbnVhbF0gYW5kIGxpbmtnaXQ6Z2l0Y29yZS10dXRvcmlhbFs3XS4KIAotQSBnaXQgcHJvamVjdCBub3JtYWxseSBjb25zaXN0cyBvZiBhIHdvcmtpbmcgZGlyZWN0b3J5IHdpdGggYSAiLmdpdCIKK0EgR2l0IHByb2plY3Qgbm9ybWFsbHkgY29uc2lzdHMgb2YgYSB3b3JraW5nIGRpcmVjdG9yeSB3aXRoIGEgIi5naXQiCiBzdWJkaXJlY3RvcnkgYXQgdGhlIHRvcCBsZXZlbC4gIFRoZSAuZ2l0IGRpcmVjdG9yeSBjb250YWlucywgYW1vbmcgb3RoZXIKIHRoaW5ncywgYSBjb21wcmVzc2VkIG9iamVjdCBkYXRhYmFzZSByZXByZXNlbnRpbmcgdGhlIGNvbXBsZXRlIGhpc3RvcnkKIG9mIHRoZSBwcm9qZWN0LCBhbiAiaW5kZXgiIGZpbGUgd2hpY2ggbGlua3MgdGhhdCBoaXN0b3J5IHRvIHRoZSBjdXJyZW50CkBAIC04MDksNyArODcxLDcgQEAKIHJlcHJlc2VudHMgYW4gaW1tZWRpYXRlbHkgcHJlY2VkaW5nIHN0ZXAuICBDb21taXRzIHdpdGggbW9yZSB0aGFuIG9uZQogcGFyZW50IHJlcHJlc2VudCBtZXJnZXMgb2YgaW5kZXBlbmRlbnQgbGluZXMgb2YgZGV2ZWxvcG1lbnQuCiAKLUFsbCBvYmplY3RzIGFyZSBuYW1lZCBieSB0aGUgU0hBMSBoYXNoIG9mIHRoZWlyIGNvbnRlbnRzLCBub3JtYWxseQorQWxsIG9iamVjdHMgYXJlIG5hbWVkIGJ5IHRoZSBTSEEtMSBoYXNoIG9mIHRoZWlyIGNvbnRlbnRzLCBub3JtYWxseQogd3JpdHRlbiBhcyBhIHN0cmluZyBvZiA0MCBoZXggZGlnaXRzLiAgU3VjaCBuYW1lcyBhcmUgZ2xvYmFsbHkgdW5pcXVlLgogVGhlIGVudGlyZSBoaXN0b3J5IGxlYWRpbmcgdXAgdG8gYSBjb21taXQgY2FuIGJlIHZvdWNoZWQgZm9yIGJ5IHNpZ25pbmcKIGp1c3QgdGhhdCBjb21taXQuICBBIGZvdXJ0aCBvYmplY3QgdHlwZSwgdGhlIHRhZywgaXMgcHJvdmlkZWQgZm9yIHRoaXMKQEAgLTgxOSw5ICs4ODEsOSBAQAogZWZmaWNpZW5jeSBtYXkgbGF0ZXIgYmUgY29tcHJlc3NlZCB0b2dldGhlciBpbnRvICJwYWNrIGZpbGVzIi4KIAogTmFtZWQgcG9pbnRlcnMgY2FsbGVkIHJlZnMgbWFyayBpbnRlcmVzdGluZyBwb2ludHMgaW4gaGlzdG9yeS4gIEEgcmVmCi1tYXkgY29udGFpbiB0aGUgU0hBMSBuYW1lIG9mIGFuIG9iamVjdCBvciB0aGUgbmFtZSBvZiBhbm90aGVyIHJlZi4gIFJlZnMKLXdpdGggbmFtZXMgYmVnaW5uaW5nIGByZWYvaGVhZC9gIGNvbnRhaW4gdGhlIFNIQTEgbmFtZSBvZiB0aGUgbW9zdAotcmVjZW50IGNvbW1pdCAob3IgImhlYWQiKSBvZiBhIGJyYW5jaCB1bmRlciBkZXZlbG9wbWVudC4gIFNIQTEgbmFtZXMgb2YKK21heSBjb250YWluIHRoZSBTSEEtMSBuYW1lIG9mIGFuIG9iamVjdCBvciB0aGUgbmFtZSBvZiBhbm90aGVyIHJlZi4gIFJlZnMKK3dpdGggbmFtZXMgYmVnaW5uaW5nIGByZWYvaGVhZC9gIGNvbnRhaW4gdGhlIFNIQS0xIG5hbWUgb2YgdGhlIG1vc3QKK3JlY2VudCBjb21taXQgKG9yICJoZWFkIikgb2YgYSBicmFuY2ggdW5kZXIgZGV2ZWxvcG1lbnQuICBTSEEtMSBuYW1lcyBvZgogdGFncyBvZiBpbnRlcmVzdCBhcmUgc3RvcmVkIHVuZGVyIGByZWYvdGFncy9gLiAgQSBzcGVjaWFsIHJlZiBuYW1lZAogYEhFQURgIGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgY2hlY2tlZC1vdXQgYnJhbmNoLgogCkBAIC04MzgsMTIgKzkwMCwzNyBAQAogZm9yIGEgZ2l2ZW4gcGF0aG5hbWUuICBUaGVzZSBzdGFnZXMgYXJlIHVzZWQgdG8gaG9sZCB0aGUgdmFyaW91cwogdW5tZXJnZWQgdmVyc2lvbiBvZiBhIGZpbGUgd2hlbiBhIG1lcmdlIGlzIGluIHByb2dyZXNzLgogCitGVVJUSEVSIERPQ1VNRU5UQVRJT04KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTZWUgdGhlIHJlZmVyZW5jZXMgaW4gdGhlICJkZXNjcmlwdGlvbiIgc2VjdGlvbiB0byBnZXQgc3RhcnRlZAordXNpbmcgR2l0LiAgVGhlIGZvbGxvd2luZyBpcyBwcm9iYWJseSBtb3JlIGRldGFpbCB0aGFuIG5lY2Vzc2FyeQorZm9yIGEgZmlyc3QtdGltZSB1c2VyLgorCitUaGUgbGluazp1c2VyLW1hbnVhbC5odG1sI2dpdC1jb25jZXB0c1tHaXQgY29uY2VwdHMgY2hhcHRlciBvZiB0aGUKK3VzZXItbWFudWFsXSBhbmQgbGlua2dpdDpnaXRjb3JlLXR1dG9yaWFsWzddIGJvdGggcHJvdmlkZQoraW50cm9kdWN0aW9ucyB0byB0aGUgdW5kZXJseWluZyBHaXQgYXJjaGl0ZWN0dXJlLgorCitTZWUgbGlua2dpdDpnaXR3b3JrZmxvd3NbN10gZm9yIGFuIG92ZXJ2aWV3IG9mIHJlY29tbWVuZGVkIHdvcmtmbG93cy4KKworU2VlIGFsc28gdGhlIGxpbms6aG93dG8taW5kZXguaHRtbFtob3d0b10gZG9jdW1lbnRzIGZvciBzb21lIHVzZWZ1bAorZXhhbXBsZXMuCisKK1RoZSBpbnRlcm5hbHMgYXJlIGRvY3VtZW50ZWQgaW4gdGhlCitsaW5rOnRlY2huaWNhbC9hcGktaW5kZXguaHRtbFtHaXQgQVBJIGRvY3VtZW50YXRpb25dLgorCitVc2VycyBtaWdyYXRpbmcgZnJvbSBDVlMgbWF5IGFsc28gd2FudCB0bworcmVhZCBsaW5rZ2l0OmdpdGN2cy1taWdyYXRpb25bN10uCisKKwogQXV0aG9ycwogLS0tLS0tLQogR2l0IHdhcyBzdGFydGVkIGJ5IExpbnVzIFRvcnZhbGRzLCBhbmQgaXMgY3VycmVudGx5IG1haW50YWluZWQgYnkgSnVuaW8KLUMgSGFtYW5vLiBOdW1lcm91cyBjb250cmlidXRpb25zIGhhdmUgY29tZSBmcm9tIHRoZSBnaXQgbWFpbGluZyBsaXN0Ci08Z2l0QHZnZXIua2VybmVsLm9yZz4uIEZvciBhIG1vcmUgY29tcGxldGUgbGlzdCBvZiBjb250cmlidXRvcnMsIHNlZQotaHR0cDovL2dpdC1zY20uY29tL2Fib3V0LiBJZiB5b3UgaGF2ZSBhIGNsb25lIG9mIGdpdC5naXQgaXRzZWxmLCB0aGUKK0MgSGFtYW5vLiBOdW1lcm91cyBjb250cmlidXRpb25zIGhhdmUgY29tZSBmcm9tIHRoZSBHaXQgbWFpbGluZyBsaXN0Cis8Z2l0QHZnZXIua2VybmVsLm9yZz4uICBodHRwOi8vd3d3Lm9obG9oLm5ldC9wL2dpdC9jb250cmlidXRvcnMvc3VtbWFyeQorZ2l2ZXMgeW91IGEgbW9yZSBjb21wbGV0ZSBsaXN0IG9mIGNvbnRyaWJ1dG9ycy4KKworSWYgeW91IGhhdmUgYSBjbG9uZSBvZiBnaXQuZ2l0IGl0c2VsZiwgdGhlCiBvdXRwdXQgb2YgbGlua2dpdDpnaXQtc2hvcnRsb2dbMV0gYW5kIGxpbmtnaXQ6Z2l0LWJsYW1lWzFdIGNhbiBzaG93IHlvdQogdGhlIGF1dGhvcnMgZm9yIHNwZWNpZmljIHBhcnRzIG9mIHRoZSBwcm9qZWN0LgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdGF0dHJpYnV0ZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9naXRhdHRyaWJ1dGVzLnR4dAppbmRleCA4MDEyMGVhLi5iMzIyYTI2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdGF0dHJpYnV0ZXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0YXR0cmlidXRlcy50eHQKQEAgLTU2LDggKzU2LDkgQEAKIG92ZXJyaWRlcyBhbiBlYXJsaWVyIGxpbmUuICBUaGlzIG92ZXJyaWRpbmcgaXMgZG9uZSBwZXIKIGF0dHJpYnV0ZS4gIFRoZSBydWxlcyBob3cgdGhlIHBhdHRlcm4gbWF0Y2hlcyBwYXRocyBhcmUgdGhlCiBzYW1lIGFzIGluIGAuZ2l0aWdub3JlYCBmaWxlczsgc2VlIGxpbmtnaXQ6Z2l0aWdub3JlWzVdLgorVW5saWtlIGAuZ2l0aWdub3JlYCwgbmVnYXRpdmUgcGF0dGVybnMgYXJlIGZvcmJpZGRlbi4KIAotV2hlbiBkZWNpZGluZyB3aGF0IGF0dHJpYnV0ZXMgYXJlIGFzc2lnbmVkIHRvIGEgcGF0aCwgZ2l0CitXaGVuIGRlY2lkaW5nIHdoYXQgYXR0cmlidXRlcyBhcmUgYXNzaWduZWQgdG8gYSBwYXRoLCBHaXQKIGNvbnN1bHRzIGAkR0lUX0RJUi9pbmZvL2F0dHJpYnV0ZXNgIGZpbGUgKHdoaWNoIGhhcyB0aGUgaGlnaGVzdAogcHJlY2VkZW5jZSksIGAuZ2l0YXR0cmlidXRlc2AgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlCiBwYXRoIGluIHF1ZXN0aW9uLCBhbmQgaXRzIHBhcmVudCBkaXJlY3RvcmllcyB1cCB0byB0aGUgdG9wbGV2ZWwgb2YgdGhlCkBAIC02Niw2ICs2NywxMSBAQAogZ2xvYmFsIGFuZCBzeXN0ZW0td2lkZSBmaWxlcyBhcmUgY29uc2lkZXJlZCAodGhleSBoYXZlIHRoZSBsb3dlc3QKIHByZWNlZGVuY2UpLgogCitXaGVuIHRoZSBgLmdpdGF0dHJpYnV0ZXNgIGZpbGUgaXMgbWlzc2luZyBmcm9tIHRoZSB3b3JrIHRyZWUsIHRoZQorcGF0aCBpbiB0aGUgaW5kZXggaXMgdXNlZCBhcyBhIGZhbGwtYmFjay4gIER1cmluZyBjaGVja291dCBwcm9jZXNzLAorYC5naXRhdHRyaWJ1dGVzYCBpbiB0aGUgaW5kZXggaXMgdXNlZCBhbmQgdGhlbiB0aGUgZmlsZSBpbiB0aGUKK3dvcmtpbmcgdHJlZSBpcyB1c2VkIGFzIGEgZmFsbC1iYWNrLgorCiBJZiB5b3Ugd2lzaCB0byBhZmZlY3Qgb25seSBhIHNpbmdsZSByZXBvc2l0b3J5IChpLmUuLCB0byBhc3NpZ24KIGF0dHJpYnV0ZXMgdG8gZmlsZXMgdGhhdCBhcmUgcGFydGljdWxhciB0bwogb25lIHVzZXIncyB3b3JrZmxvdyBmb3IgdGhhdCByZXBvc2l0b3J5KSwgdGhlbgpAQCAtNzUsNiArODEsOCBAQAogYC5naXRhdHRyaWJ1dGVzYCBmaWxlcy4gQXR0cmlidXRlcyB0aGF0IHNob3VsZCBhZmZlY3QgYWxsIHJlcG9zaXRvcmllcwogZm9yIGEgc2luZ2xlIHVzZXIgc2hvdWxkIGJlIHBsYWNlZCBpbiBhIGZpbGUgc3BlY2lmaWVkIGJ5IHRoZQogYGNvcmUuYXR0cmlidXRlc2ZpbGVgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIChzZWUgbGlua2dpdDpnaXQtY29uZmlnWzFdKS4KK0l0cyBkZWZhdWx0IHZhbHVlIGlzICRYREdfQ09ORklHX0hPTUUvZ2l0L2F0dHJpYnV0ZXMuIElmICRYREdfQ09ORklHX0hPTUUKK2lzIGVpdGhlciBub3Qgc2V0IG9yIGVtcHR5LCAkSE9NRS8uY29uZmlnL2dpdC9hdHRyaWJ1dGVzIGlzIHVzZWQgaW5zdGVhZC4KIEF0dHJpYnV0ZXMgZm9yIGFsbCB1c2VycyBvbiBhIHN5c3RlbSBzaG91bGQgYmUgcGxhY2VkIGluIHRoZQogYCQocHJlZml4KS9ldGMvZ2l0YXR0cmlidXRlc2AgZmlsZS4KIApAQCAtODYsNyArOTQsNyBAQAogRUZGRUNUUwogLS0tLS0tLQogCi1DZXJ0YWluIG9wZXJhdGlvbnMgYnkgZ2l0IGNhbiBiZSBpbmZsdWVuY2VkIGJ5IGFzc2lnbmluZworQ2VydGFpbiBvcGVyYXRpb25zIGJ5IEdpdCBjYW4gYmUgaW5mbHVlbmNlZCBieSBhc3NpZ25pbmcKIHBhcnRpY3VsYXIgYXR0cmlidXRlcyB0byBhIHBhdGguICBDdXJyZW50bHksIHRoZSBmb2xsb3dpbmcKIG9wZXJhdGlvbnMgYXJlIGF0dHJpYnV0ZXMtYXdhcmUuCiAKQEAgLTk2LDcgKzEwNCw3IEBACiBUaGVzZSBhdHRyaWJ1dGVzIGFmZmVjdCBob3cgdGhlIGNvbnRlbnRzIHN0b3JlZCBpbiB0aGUKIHJlcG9zaXRvcnkgYXJlIGNvcGllZCB0byB0aGUgd29ya2luZyB0cmVlIGZpbGVzIHdoZW4gY29tbWFuZHMKIHN1Y2ggYXMgJ2dpdCBjaGVja291dCcgYW5kICdnaXQgbWVyZ2UnIHJ1bi4gIFRoZXkgYWxzbyBhZmZlY3QgaG93Ci1naXQgc3RvcmVzIHRoZSBjb250ZW50cyB5b3UgcHJlcGFyZSBpbiB0aGUgd29ya2luZyB0cmVlIGluIHRoZQorR2l0IHN0b3JlcyB0aGUgY29udGVudHMgeW91IHByZXBhcmUgaW4gdGhlIHdvcmtpbmcgdHJlZSBpbiB0aGUKIHJlcG9zaXRvcnkgdXBvbiAnZ2l0IGFkZCcgYW5kICdnaXQgY29tbWl0Jy4KIAogYHRleHRgCkBAIC0xMTYsMjIgKzEyNCwyMiBAQAogCiBVbnNldDo6CiAKLQlVbnNldHRpbmcgdGhlIGB0ZXh0YCBhdHRyaWJ1dGUgb24gYSBwYXRoIHRlbGxzIGdpdCBub3QgdG8KKwlVbnNldHRpbmcgdGhlIGB0ZXh0YCBhdHRyaWJ1dGUgb24gYSBwYXRoIHRlbGxzIEdpdCBub3QgdG8KIAlhdHRlbXB0IGFueSBlbmQtb2YtbGluZSBjb252ZXJzaW9uIHVwb24gY2hlY2tpbiBvciBjaGVja291dC4KIAogU2V0IHRvIHN0cmluZyB2YWx1ZSAiYXV0byI6OgogCiAJV2hlbiBgdGV4dGAgaXMgc2V0IHRvICJhdXRvIiwgdGhlIHBhdGggaXMgbWFya2VkIGZvciBhdXRvbWF0aWMKLQllbmQtb2YtbGluZSBub3JtYWxpemF0aW9uLiAgSWYgZ2l0IGRlY2lkZXMgdGhhdCB0aGUgY29udGVudCBpcworCWVuZC1vZi1saW5lIG5vcm1hbGl6YXRpb24uICBJZiBHaXQgZGVjaWRlcyB0aGF0IHRoZSBjb250ZW50IGlzCiAJdGV4dCwgaXRzIGxpbmUgZW5kaW5ncyBhcmUgbm9ybWFsaXplZCB0byBMRiBvbiBjaGVja2luLgogCiBVbnNwZWNpZmllZDo6CiAKLQlJZiB0aGUgYHRleHRgIGF0dHJpYnV0ZSBpcyB1bnNwZWNpZmllZCwgZ2l0IHVzZXMgdGhlCisJSWYgdGhlIGB0ZXh0YCBhdHRyaWJ1dGUgaXMgdW5zcGVjaWZpZWQsIEdpdCB1c2VzIHRoZQogCWBjb3JlLmF1dG9jcmxmYCBjb25maWd1cmF0aW9uIHZhcmlhYmxlIHRvIGRldGVybWluZSBpZiB0aGUKIAlmaWxlIHNob3VsZCBiZSBjb252ZXJ0ZWQuCiAKLUFueSBvdGhlciB2YWx1ZSBjYXVzZXMgZ2l0IHRvIGFjdCBhcyBpZiBgdGV4dGAgaGFzIGJlZW4gbGVmdAorQW55IG90aGVyIHZhbHVlIGNhdXNlcyBHaXQgdG8gYWN0IGFzIGlmIGB0ZXh0YCBoYXMgYmVlbiBsZWZ0CiB1bnNwZWNpZmllZC4KIAogYGVvbGAKQEAgLTE0MywxMyArMTUxLDEzIEBACiAKIFNldCB0byBzdHJpbmcgdmFsdWUgImNybGYiOjoKIAotCVRoaXMgc2V0dGluZyBmb3JjZXMgZ2l0IHRvIG5vcm1hbGl6ZSBsaW5lIGVuZGluZ3MgZm9yIHRoaXMKKwlUaGlzIHNldHRpbmcgZm9yY2VzIEdpdCB0byBub3JtYWxpemUgbGluZSBlbmRpbmdzIGZvciB0aGlzCiAJZmlsZSBvbiBjaGVja2luIGFuZCBjb252ZXJ0IHRoZW0gdG8gQ1JMRiB3aGVuIHRoZSBmaWxlIGlzCiAJY2hlY2tlZCBvdXQuCiAKIFNldCB0byBzdHJpbmcgdmFsdWUgImxmIjo6CiAKLQlUaGlzIHNldHRpbmcgZm9yY2VzIGdpdCB0byBub3JtYWxpemUgbGluZSBlbmRpbmdzIHRvIExGIG9uCisJVGhpcyBzZXR0aW5nIGZvcmNlcyBHaXQgdG8gbm9ybWFsaXplIGxpbmUgZW5kaW5ncyB0byBMRiBvbgogCWNoZWNraW4gYW5kIHByZXZlbnRzIGNvbnZlcnNpb24gdG8gQ1JMRiB3aGVuIHRoZSBmaWxlIGlzCiAJY2hlY2tlZCBvdXQuCiAKQEAgLTE2OCwxMSArMTc2LDExIEBACiBFbmQtb2YtbGluZSBjb252ZXJzaW9uCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKLVdoaWxlIGdpdCBub3JtYWxseSBsZWF2ZXMgZmlsZSBjb250ZW50cyBhbG9uZSwgaXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8KK1doaWxlIEdpdCBub3JtYWxseSBsZWF2ZXMgZmlsZSBjb250ZW50cyBhbG9uZSwgaXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8KIG5vcm1hbGl6ZSBsaW5lIGVuZGluZ3MgdG8gTEYgaW4gdGhlIHJlcG9zaXRvcnkgYW5kLCBvcHRpb25hbGx5LCB0bwogY29udmVydCB0aGVtIHRvIENSTEYgd2hlbiBmaWxlcyBhcmUgY2hlY2tlZCBvdXQuCiAKLUhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IHdpbGwgbWFrZSBnaXQgbm9ybWFsaXplIC50eHQsIC52Y3Byb2ogYW5kIC5zaAorSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgd2lsbCBtYWtlIEdpdCBub3JtYWxpemUgLnR4dCwgLnZjcHJvaiBhbmQgLnNoCiBmaWxlcywgZW5zdXJlIHRoYXQgLnZjcHJvaiBmaWxlcyBoYXZlIENSTEYgYW5kIC5zaCBmaWxlcyBoYXZlIExGIGluCiB0aGUgd29ya2luZyBkaXJlY3RvcnksIGFuZCBwcmV2ZW50IC5qcGcgZmlsZXMgZnJvbSBiZWluZyBub3JtYWxpemVkCiByZWdhcmRsZXNzIG9mIHRoZWlyIGNvbnRlbnQuCkBAIC0xODYsNyArMTk0LDcgQEAKIAogT3RoZXIgc291cmNlIGNvZGUgbWFuYWdlbWVudCBzeXN0ZW1zIG5vcm1hbGl6ZSBhbGwgdGV4dCBmaWxlcyBpbiB0aGVpcgogcmVwb3NpdG9yaWVzLCBhbmQgdGhlcmUgYXJlIHR3byB3YXlzIHRvIGVuYWJsZSBzaW1pbGFyIGF1dG9tYXRpYwotbm9ybWFsaXphdGlvbiBpbiBnaXQuCitub3JtYWxpemF0aW9uIGluIEdpdC4KIAogSWYgeW91IHNpbXBseSB3YW50IHRvIGhhdmUgQ1JMRiBsaW5lIGVuZGluZ3MgaW4geW91ciB3b3JraW5nIGRpcmVjdG9yeQogcmVnYXJkbGVzcyBvZiB0aGUgcmVwb3NpdG9yeSB5b3UgYXJlIHdvcmtpbmcgd2l0aCwgeW91IGNhbiBzZXQgdGhlCkBAIC0yMTEsOSArMjE5LDkgQEAKICoJdGV4dD1hdXRvCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBlbnN1cmVzIHRoYXQgYWxsIGZpbGVzIHRoYXQgZ2l0IGNvbnNpZGVycyB0byBiZSB0ZXh0IHdpbGwgaGF2ZQorVGhpcyBlbnN1cmVzIHRoYXQgYWxsIGZpbGVzIHRoYXQgR2l0IGNvbnNpZGVycyB0byBiZSB0ZXh0IHdpbGwgaGF2ZQogbm9ybWFsaXplZCAoTEYpIGxpbmUgZW5kaW5ncyBpbiB0aGUgcmVwb3NpdG9yeS4gIFRoZSBgY29yZS5lb2xgCi1jb25maWd1cmF0aW9uIHZhcmlhYmxlIGNvbnRyb2xzIHdoaWNoIGxpbmUgZW5kaW5ncyBnaXQgd2lsbCB1c2UgZm9yCitjb25maWd1cmF0aW9uIHZhcmlhYmxlIGNvbnRyb2xzIHdoaWNoIGxpbmUgZW5kaW5ncyBHaXQgd2lsbCB1c2UgZm9yCiBub3JtYWxpemVkIGZpbGVzIGluIHlvdXIgd29ya2luZyBkaXJlY3Rvcnk7IHRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGUKIG5hdGl2ZSBsaW5lIGVuZGluZyBmb3IgeW91ciBwbGF0Zm9ybSwgb3IgQ1JMRiBpZiBgY29yZS5hdXRvY3JsZmAgaXMKIHNldC4KQEAgLTIyNiw3ICsyMzQsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGVjaG8gIiogdGV4dD1hdXRvIiA+Pi5naXRhdHRyaWJ1dGVzCi0kIHJtIC5naXQvaW5kZXggICAgICMgUmVtb3ZlIHRoZSBpbmRleCB0byBmb3JjZSBnaXQgdG8KKyQgcm0gLmdpdC9pbmRleCAgICAgIyBSZW1vdmUgdGhlIGluZGV4IHRvIGZvcmNlIEdpdCB0bwogJCBnaXQgcmVzZXQgICAgICAgICAjIHJlLXNjYW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5CiAkIGdpdCBzdGF0dXMgICAgICAgICMgU2hvdyBmaWxlcyB0aGF0IHdpbGwgYmUgbm9ybWFsaXplZAogJCBnaXQgYWRkIC11CkBAIC0yNDEsMTcgKzI0OSwxNyBAQAogbWFudWFsLnBkZgktdGV4dAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvbnZlcnNlbHksIHRleHQgZmlsZXMgdGhhdCBnaXQgZG9lcyBub3QgZGV0ZWN0IGNhbiBoYXZlIG5vcm1hbGl6YXRpb24KK0NvbnZlcnNlbHksIHRleHQgZmlsZXMgdGhhdCBHaXQgZG9lcyBub3QgZGV0ZWN0IGNhbiBoYXZlIG5vcm1hbGl6YXRpb24KIGVuYWJsZWQgbWFudWFsbHkuCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2VpcmRjaGFycy50eHQJdGV4dAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUlmIGBjb3JlLnNhZmVjcmxmYCBpcyBzZXQgdG8gInRydWUiIG9yICJ3YXJuIiwgZ2l0IHZlcmlmaWVzIGlmCitJZiBgY29yZS5zYWZlY3JsZmAgaXMgc2V0IHRvICJ0cnVlIiBvciAid2FybiIsIEdpdCB2ZXJpZmllcyBpZgogdGhlIGNvbnZlcnNpb24gaXMgcmV2ZXJzaWJsZSBmb3IgdGhlIGN1cnJlbnQgc2V0dGluZyBvZgotYGNvcmUuYXV0b2NybGZgLiAgRm9yICJ0cnVlIiwgZ2l0IHJlamVjdHMgaXJyZXZlcnNpYmxlCi1jb252ZXJzaW9uczsgZm9yICJ3YXJuIiwgZ2l0IG9ubHkgcHJpbnRzIGEgd2FybmluZyBidXQgYWNjZXB0cworYGNvcmUuYXV0b2NybGZgLiAgRm9yICJ0cnVlIiwgR2l0IHJlamVjdHMgaXJyZXZlcnNpYmxlCitjb252ZXJzaW9uczsgZm9yICJ3YXJuIiwgR2l0IG9ubHkgcHJpbnRzIGEgd2FybmluZyBidXQgYWNjZXB0cwogYW4gaXJyZXZlcnNpYmxlIGNvbnZlcnNpb24uICBUaGUgc2FmZXR5IHRyaWdnZXJzIHRvIHByZXZlbnQgc3VjaAogYSBjb252ZXJzaW9uIGRvbmUgdG8gdGhlIGZpbGVzIGluIHRoZSB3b3JrIHRyZWUsIGJ1dCB0aGVyZSBhcmUgYQogZmV3IGV4Y2VwdGlvbnMuICBFdmVuIHRob3VnaC4uLgpAQCAtMjcyLDcgKzI4MCw3IEBACiBgaWRlbnRgCiBeXl5eXl5eCiAKLVdoZW4gdGhlIGF0dHJpYnV0ZSBgaWRlbnRgIGlzIHNldCBmb3IgYSBwYXRoLCBnaXQgcmVwbGFjZXMKK1doZW4gdGhlIGF0dHJpYnV0ZSBgaWRlbnRgIGlzIHNldCBmb3IgYSBwYXRoLCBHaXQgcmVwbGFjZXMKIGAkSWQkYCBpbiB0aGUgYmxvYiBvYmplY3Qgd2l0aCBgJElkOmAsIGZvbGxvd2VkIGJ5IHRoZQogNDAtY2hhcmFjdGVyIGhleGFkZWNpbWFsIGJsb2Igb2JqZWN0IG5hbWUsIGZvbGxvd2VkIGJ5IGEgZG9sbGFyCiBzaWduIGAkYCB1cG9uIGNoZWNrb3V0LiAgQW55IGJ5dGUgc2VxdWVuY2UgdGhhdCBiZWdpbnMgd2l0aApAQCAtMzAzLDcgKzMxMSw3IEBACiAKIEFub3RoZXIgdXNlIG9mIHRoZSBjb250ZW50IGZpbHRlcmluZyBpcyB0byBzdG9yZSB0aGUgY29udGVudCB0aGF0IGNhbm5vdAogYmUgZGlyZWN0bHkgdXNlZCBpbiB0aGUgcmVwb3NpdG9yeSAoZS5nLiBhIFVVSUQgdGhhdCByZWZlcnMgdG8gdGhlIHRydWUKLWNvbnRlbnQgc3RvcmVkIG91dHNpZGUgZ2l0LCBvciBhbiBlbmNyeXB0ZWQgY29udGVudCkgYW5kIHR1cm4gaXQgaW50byBhCitjb250ZW50IHN0b3JlZCBvdXRzaWRlIEdpdCwgb3IgYW4gZW5jcnlwdGVkIGNvbnRlbnQpIGFuZCB0dXJuIGl0IGludG8gYQogdXNhYmxlIGZvcm0gdXBvbiBjaGVja291dCAoZS5nLiBkb3dubG9hZCB0aGUgZXh0ZXJuYWwgY29udGVudCwgb3IgZGVjcnlwdAogdGhlIGVuY3J5cHRlZCBjb250ZW50KS4KIApAQCAtMzg5LDcgKzM5Nyw3IEBACiB3aGVyZSB0aGUgYXR0cmlidXRlIGlzIG5vdCBpbiBwbGFjZSB3b3VsZCBub3JtYWxseSBjYXVzZSBtZXJnZQogY29uZmxpY3RzLgogCi1UbyBwcmV2ZW50IHRoZXNlIHVubmVjZXNzYXJ5IG1lcmdlIGNvbmZsaWN0cywgZ2l0IGNhbiBiZSB0b2xkIHRvIHJ1biBhCitUbyBwcmV2ZW50IHRoZXNlIHVubmVjZXNzYXJ5IG1lcmdlIGNvbmZsaWN0cywgR2l0IGNhbiBiZSB0b2xkIHRvIHJ1biBhCiB2aXJ0dWFsIGNoZWNrLW91dCBhbmQgY2hlY2staW4gb2YgYWxsIHRocmVlIHN0YWdlcyBvZiBhIGZpbGUgd2hlbgogcmVzb2x2aW5nIGEgdGhyZWUtd2F5IG1lcmdlIGJ5IHNldHRpbmcgdGhlIGBtZXJnZS5yZW5vcm1hbGl6ZWAKIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICBUaGlzIHByZXZlbnRzIGNoYW5nZXMgY2F1c2VkIGJ5IGNoZWNrLWluCkBAIC00MDksMTEgKzQxNywxMSBAQAogYGRpZmZgCiBeXl5eXl4KIAotVGhlIGF0dHJpYnV0ZSBgZGlmZmAgYWZmZWN0cyBob3cgJ2dpdCcgZ2VuZXJhdGVzIGRpZmZzIGZvciBwYXJ0aWN1bGFyCi1maWxlcy4gSXQgY2FuIHRlbGwgZ2l0IHdoZXRoZXIgdG8gZ2VuZXJhdGUgYSB0ZXh0dWFsIHBhdGNoIGZvciB0aGUgcGF0aAorVGhlIGF0dHJpYnV0ZSBgZGlmZmAgYWZmZWN0cyBob3cgR2l0IGdlbmVyYXRlcyBkaWZmcyBmb3IgcGFydGljdWxhcgorZmlsZXMuIEl0IGNhbiB0ZWxsIEdpdCB3aGV0aGVyIHRvIGdlbmVyYXRlIGEgdGV4dHVhbCBwYXRjaCBmb3IgdGhlIHBhdGgKIG9yIHRvIHRyZWF0IHRoZSBwYXRoIGFzIGEgYmluYXJ5IGZpbGUuICBJdCBjYW4gYWxzbyBhZmZlY3Qgd2hhdCBsaW5lIGlzCi1zaG93biBvbiB0aGUgaHVuayBoZWFkZXIgYEBAIC1rLGwgK24sbSBAQGAgbGluZSwgdGVsbCBnaXQgdG8gdXNlIGFuCi1leHRlcm5hbCBjb21tYW5kIHRvIGdlbmVyYXRlIHRoZSBkaWZmLCBvciBhc2sgZ2l0IHRvIGNvbnZlcnQgYmluYXJ5CitzaG93biBvbiB0aGUgaHVuayBoZWFkZXIgYEBAIC1rLGwgK24sbSBAQGAgbGluZSwgdGVsbCBHaXQgdG8gdXNlIGFuCitleHRlcm5hbCBjb21tYW5kIHRvIGdlbmVyYXRlIHRoZSBkaWZmLCBvciBhc2sgR2l0IHRvIGNvbnZlcnQgYmluYXJ5CiBmaWxlcyB0byBhIHRleHQgZm9ybWF0IGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBkaWZmLgogCiBTZXQ6OgpAQCAtNDQxLDcgKzQ0OSw3IEBACiAJc3BlY2lmeSBvbmUgb3IgbW9yZSBvcHRpb25zLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZvbGxvd2luZwogCXNlY3Rpb24uIFRoZSBvcHRpb25zIGZvciB0aGUgZGlmZiBkcml2ZXIgImZvbyIgYXJlIGRlZmluZWQKIAlieSB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgaW4gdGhlICJkaWZmLmZvbyIgc2VjdGlvbiBvZiB0aGUKLQlnaXQgY29uZmlnIGZpbGUuCisJR2l0IGNvbmZpZyBmaWxlLgogCiAKIERlZmluaW5nIGFuIGV4dGVybmFsIGRpZmYgZHJpdmVyCkBAIC00NTksNyArNDY3LDcgQEAKIAljb21tYW5kID0gai1jLWRpZmYKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2hlbiBnaXQgbmVlZHMgdG8gc2hvdyB5b3UgYSBkaWZmIGZvciB0aGUgcGF0aCB3aXRoIGBkaWZmYAorV2hlbiBHaXQgbmVlZHMgdG8gc2hvdyB5b3UgYSBkaWZmIGZvciB0aGUgcGF0aCB3aXRoIGBkaWZmYAogYXR0cmlidXRlIHNldCB0byBgamNkaWZmYCwgaXQgY2FsbHMgdGhlIGNvbW1hbmQgeW91IHNwZWNpZmllZAogd2l0aCB0aGUgYWJvdmUgY29uZmlndXJhdGlvbiwgaS5lLiBgai1jLWRpZmZgLCB3aXRoIDcKIHBhcmFtZXRlcnMsIGp1c3QgbGlrZSBgR0lUX0VYVEVSTkFMX0RJRkZgIHByb2dyYW0gaXMgY2FsbGVkLgpAQCAtNTA5LDYgKzUxNyw4IEBACiBhdHRyaWJ1dGUgbWVjaGFuaXNtLCB2aWEgYC5naXRhdHRyaWJ1dGVzYCkuICBUaGUgZm9sbG93aW5nIGJ1aWx0IGluCiBwYXR0ZXJucyBhcmUgYXZhaWxhYmxlOgogCistIGBhZGFgIHN1aXRhYmxlIGZvciBzb3VyY2UgY29kZSBpbiB0aGUgQWRhIGxhbmd1YWdlLgorCiAtIGBiaWJ0ZXhgIHN1aXRhYmxlIGZvciBmaWxlcyB3aXRoIEJpYlRlWCBjb2RlZCByZWZlcmVuY2VzLgogCiAtIGBjcHBgIHN1aXRhYmxlIGZvciBzb3VyY2UgY29kZSBpbiB0aGUgQyBhbmQgQysrIGxhbmd1YWdlcy4KQEAgLTU5Niw3ICs2MDYsNyBAQAogYWRkaXRpb24gdG9fIHRoZSB1c3VhbCBiaW5hcnkgZGlmZiB0aGF0IHlvdSBtaWdodCBzZW5kLgogCiBCZWNhdXNlIHRleHQgY29udmVyc2lvbiBjYW4gYmUgc2xvdywgZXNwZWNpYWxseSB3aGVuIGRvaW5nIGEKLWxhcmdlIG51bWJlciBvZiB0aGVtIHdpdGggYGdpdCBsb2cgLXBgLCBnaXQgcHJvdmlkZXMgYSBtZWNoYW5pc20KK2xhcmdlIG51bWJlciBvZiB0aGVtIHdpdGggYGdpdCBsb2cgLXBgLCBHaXQgcHJvdmlkZXMgYSBtZWNoYW5pc20KIHRvIGNhY2hlIHRoZSBvdXRwdXQgYW5kIHVzZSBpdCBpbiBmdXR1cmUgZGlmZnMuICBUbyBlbmFibGUKIGNhY2hpbmcsIHNldCB0aGUgImNhY2hldGV4dGNvbnYiIHZhcmlhYmxlIGluIHlvdXIgZGlmZiBkcml2ZXIncwogY29uZmlnLiBGb3IgZXhhbXBsZToKQEAgLTYwOSw3ICs2MTksNyBAQAogCiBUaGlzIHdpbGwgY2FjaGUgdGhlIHJlc3VsdCBvZiBydW5uaW5nICJleGlmIiBvbiBlYWNoIGJsb2IKIGluZGVmaW5pdGVseS4gSWYgeW91IGNoYW5nZSB0aGUgdGV4dGNvbnYgY29uZmlnIHZhcmlhYmxlIGZvciBhCi1kaWZmIGRyaXZlciwgZ2l0IHdpbGwgYXV0b21hdGljYWxseSBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlbnRyaWVzCitkaWZmIGRyaXZlciwgR2l0IHdpbGwgYXV0b21hdGljYWxseSBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlbnRyaWVzCiBhbmQgcmUtcnVuIHRoZSB0ZXh0Y29udiBmaWx0ZXIuIElmIHlvdSB3YW50IHRvIGludmFsaWRhdGUgdGhlCiBjYWNoZSBtYW51YWxseSAoZS5nLiwgYmVjYXVzZSB5b3VyIHZlcnNpb24gb2YgImV4aWYiIHdhcyB1cGRhdGVkCiBhbmQgbm93IHByb2R1Y2VzIGJldHRlciBvdXRwdXQpLCB5b3UgY2FuIHJlbW92ZSB0aGUgY2FjaGUKQEAgLTYzMCw3ICs2NDAsNyBAQAogY2hhbmdlcyBpbiB0aGUgbW9zdCBhcHByb3ByaWF0ZSB3YXkgZm9yIHlvdXIgZGF0YSBmb3JtYXQuCiAKIEEgdGV4dGNvbnYsIGJ5IGNvbXBhcmlzb24sIGlzIG11Y2ggbW9yZSBsaW1pdGluZy4gWW91IHByb3ZpZGUgYQotdHJhbnNmb3JtYXRpb24gb2YgdGhlIGRhdGEgaW50byBhIGxpbmUtb3JpZW50ZWQgdGV4dCBmb3JtYXQsIGFuZCBnaXQKK3RyYW5zZm9ybWF0aW9uIG9mIHRoZSBkYXRhIGludG8gYSBsaW5lLW9yaWVudGVkIHRleHQgZm9ybWF0LCBhbmQgR2l0CiB1c2VzIGl0cyByZWd1bGFyIGRpZmYgdG9vbHMgdG8gZ2VuZXJhdGUgdGhlIG91dHB1dC4gVGhlcmUgYXJlIHNldmVyYWwKIGFkdmFudGFnZXMgdG8gY2hvb3NpbmcgdGhpcyBtZXRob2Q6CiAKQEAgLTY0MCw3ICs2NTAsNyBAQAogICAgb2R0MnR4dCkuCiAKIDIuIEdpdCBkaWZmIGZlYXR1cmVzLiBCeSBwZXJmb3JtaW5nIG9ubHkgdGhlIHRyYW5zZm9ybWF0aW9uIHN0ZXAKLSAgIHlvdXJzZWxmLCB5b3UgY2FuIHN0aWxsIHV0aWxpemUgbWFueSBvZiBnaXQncyBkaWZmIGZlYXR1cmVzLAorICAgeW91cnNlbGYsIHlvdSBjYW4gc3RpbGwgdXRpbGl6ZSBtYW55IG9mIEdpdCdzIGRpZmYgZmVhdHVyZXMsCiAgICBpbmNsdWRpbmcgY29sb3JpemF0aW9uLCB3b3JkLWRpZmYsIGFuZCBjb21iaW5lZCBkaWZmcyBmb3IgbWVyZ2VzLgogCiAzLiBDYWNoaW5nLiBUZXh0Y29udiBjYWNoaW5nIGNhbiBzcGVlZCB1cCByZXBlYXRlZCBkaWZmcywgc3VjaCBhcyB0aG9zZQpAQCAtNjY1LDcgKzY3NSw3IEBACiAqLnBzIC1kaWZmCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhpcyB3aWxsIGNhdXNlIGdpdCB0byBnZW5lcmF0ZSBgQmluYXJ5IGZpbGVzIGRpZmZlcmAgKG9yIGEgYmluYXJ5CitUaGlzIHdpbGwgY2F1c2UgR2l0IHRvIGdlbmVyYXRlIGBCaW5hcnkgZmlsZXMgZGlmZmVyYCAob3IgYSBiaW5hcnkKIHBhdGNoLCBpZiBiaW5hcnkgcGF0Y2hlcyBhcmUgZW5hYmxlZCkgaW5zdGVhZCBvZiBhIHJlZ3VsYXIgZGlmZi4KIAogSG93ZXZlciwgb25lIG1heSBhbHNvIHdhbnQgdG8gc3BlY2lmeSBvdGhlciBkaWZmIGRyaXZlciBhdHRyaWJ1dGVzLiBGb3IKQEAgLTgyMSw3ICs4MzEsNyBAQAogCiBTZXQ6OgogCi0JTm90aWNlIGFsbCB0eXBlcyBvZiBwb3RlbnRpYWwgd2hpdGVzcGFjZSBlcnJvcnMga25vd24gdG8gZ2l0LgorCU5vdGljZSBhbGwgdHlwZXMgb2YgcG90ZW50aWFsIHdoaXRlc3BhY2UgZXJyb3JzIGtub3duIHRvIEdpdC4KIAlUaGUgdGFiIHdpZHRoIGlzIHRha2VuIGZyb20gdGhlIHZhbHVlIG9mIHRoZSBgY29yZS53aGl0ZXNwYWNlYAogCWNvbmZpZ3VyYXRpb24gdmFyaWFibGUuCiAKQEAgLTg1Myw3ICs4NjMsNyBAQAogYGV4cG9ydC1zdWJzdGAKIF5eXl5eXl5eXl5eXl5eCiAKLUlmIHRoZSBhdHRyaWJ1dGUgYGV4cG9ydC1zdWJzdGAgaXMgc2V0IGZvciBhIGZpbGUgdGhlbiBnaXQgd2lsbCBleHBhbmQKK0lmIHRoZSBhdHRyaWJ1dGUgYGV4cG9ydC1zdWJzdGAgaXMgc2V0IGZvciBhIGZpbGUgdGhlbiBHaXQgd2lsbCBleHBhbmQKIHNldmVyYWwgcGxhY2Vob2xkZXJzIHdoZW4gYWRkaW5nIHRoaXMgZmlsZSB0byBhbiBhcmNoaXZlLiAgVGhlCiBleHBhbnNpb24gZGVwZW5kcyBvbiB0aGUgYXZhaWxhYmlsaXR5IG9mIGEgY29tbWl0IElELCBpLmUuLCBpZgogbGlua2dpdDpnaXQtYXJjaGl2ZVsxXSBoYXMgYmVlbiBnaXZlbiBhIHRyZWUgaW5zdGVhZCBvZiBhIGNvbW1pdCBvciBhCkBAIC05MjUsNyArOTM1LDcgQEAKIG1hY3JvIGF0dHJpYnV0ZSAiYmluYXJ5IiBpcyBlcXVpdmFsZW50IHRvOgogCiAtLS0tLS0tLS0tLS0KLVthdHRyXWJpbmFyeSAtZGlmZiAtdGV4dAorW2F0dHJdYmluYXJ5IC1kaWZmIC1tZXJnZSAtdGV4dAogLS0tLS0tLS0tLS0tCiAKIApAQCAtOTUxLDcgKzk2MSw3IEBACiB0aGUgYXR0cmlidXRlcyBnaXZlbiB0byBwYXRoIGB0L2FiY2AgYXJlIGNvbXB1dGVkIGFzIGZvbGxvd3M6CiAKIDEuIEJ5IGV4YW1pbmluZyBgdC8uZ2l0YXR0cmlidXRlc2AgKHdoaWNoIGlzIGluIHRoZSBzYW1lCi0gICBkaXJlY3RvcnkgYXMgdGhlIHBhdGggaW4gcXVlc3Rpb24pLCBnaXQgZmluZHMgdGhhdCB0aGUgZmlyc3QKKyAgIGRpcmVjdG9yeSBhcyB0aGUgcGF0aCBpbiBxdWVzdGlvbiksIEdpdCBmaW5kcyB0aGF0IHRoZSBmaXJzdAogICAgbGluZSBtYXRjaGVzLiAgYG1lcmdlYCBhdHRyaWJ1dGUgaXMgc2V0LiAgSXQgYWxzbyBmaW5kcyB0aGF0CiAgICB0aGUgc2Vjb25kIGxpbmUgbWF0Y2hlcywgYW5kIGF0dHJpYnV0ZXMgYGZvb2AgYW5kIGBiYXJgCiAgICBhcmUgdW5zZXQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdGNsaS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdGNsaS50eHQKaW5kZXggZWExN2Y3YS4uOWFjNTA4OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXRjbGkudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0Y2xpLnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0Y2xpIC0gZ2l0IGNvbW1hbmQgbGluZSBpbnRlcmZhY2UgYW5kIGNvbnZlbnRpb25zCitnaXRjbGkgLSBHaXQgY29tbWFuZCBsaW5lIGludGVyZmFjZSBhbmQgY29udmVudGlvbnMKIAogU1lOT1BTSVMKIC0tLS0tLS0tCkBAIC0xMyw3ICsxMyw3IEBACiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KIAotVGhpcyBtYW51YWwgZGVzY3JpYmVzIHRoZSBjb252ZW50aW9uIHVzZWQgdGhyb3VnaG91dCBnaXQgQ0xJLgorVGhpcyBtYW51YWwgZGVzY3JpYmVzIHRoZSBjb252ZW50aW9uIHVzZWQgdGhyb3VnaG91dCBHaXQgQ0xJLgogCiBNYW55IGNvbW1hbmRzIHRha2UgcmV2aXNpb25zIChtb3N0IG9mdGVuICJjb21taXRzIiwgYnV0IHNvbWV0aW1lcwogInRyZWUtaXNoIiwgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0IGFuZCBjb21tYW5kKSBhbmQgcGF0aHMgYXMgdGhlaXIKQEAgLTMyLDIwICszMiwzNyBAQAogICAgYmV0d2VlbiB0aGUgSEVBRCBjb21taXQgYW5kIHRoZSB3b3JrIHRyZWUgYXMgYSB3aG9sZSIuICBZb3UgY2FuIHNheQogICAgYGdpdCBkaWZmIEhFQUQgLS1gIHRvIGFzayBmb3IgdGhlIGxhdHRlci4KIAotICogV2l0aG91dCBkaXNhbWJpZ3VhdGluZyBgLS1gLCBnaXQgbWFrZXMgYSByZWFzb25hYmxlIGd1ZXNzLCBidXQgZXJyb3JzCisgKiBXaXRob3V0IGRpc2FtYmlndWF0aW5nIGAtLWAsIEdpdCBtYWtlcyBhIHJlYXNvbmFibGUgZ3Vlc3MsIGJ1dCBlcnJvcnMKICAgIG91dCBhbmQgYXNraW5nIHlvdSB0byBkaXNhbWJpZ3VhdGUgd2hlbiBhbWJpZ3VvdXMuICBFLmcuIGlmIHlvdSBoYXZlIGEKICAgIGZpbGUgY2FsbGVkIEhFQUQgaW4geW91ciB3b3JrIHRyZWUsIGBnaXQgZGlmZiBIRUFEYCBpcyBhbWJpZ3VvdXMsIGFuZAogICAgeW91IGhhdmUgdG8gc2F5IGVpdGhlciBgZ2l0IGRpZmYgSEVBRCAtLWAgb3IgYGdpdCBkaWZmIC0tIEhFQURgIHRvCiAgICBkaXNhbWJpZ3VhdGUuCi0KKysKIFdoZW4gd3JpdGluZyBhIHNjcmlwdCB0aGF0IGlzIGV4cGVjdGVkIHRvIGhhbmRsZSByYW5kb20gdXNlci1pbnB1dCwgaXQgaXMKIGEgZ29vZCBwcmFjdGljZSB0byBtYWtlIGl0IGV4cGxpY2l0IHdoaWNoIGFyZ3VtZW50cyBhcmUgd2hpY2ggYnkgcGxhY2luZwogZGlzYW1iaWd1YXRpbmcgYC0tYCBhdCBhcHByb3ByaWF0ZSBwbGFjZXMuCiAKLUhlcmUgYXJlIHRoZSBydWxlcyByZWdhcmRpbmcgdGhlICJmbGFncyIgdGhhdCB5b3Ugc2hvdWxkIGZvbGxvdyB3aGVuIHlvdSBhcmUKLXNjcmlwdGluZyBnaXQ6CisgKiBNYW55IGNvbW1hbmRzIGFsbG93IHdpbGRjYXJkcyBpbiBwYXRocywgYnV0IHlvdSBuZWVkIHRvIHByb3RlY3QKKyAgIHRoZW0gZnJvbSBnZXR0aW5nIGdsb2JiZWQgYnkgdGhlIHNoZWxsLiAgVGhlc2UgdHdvIG1lYW4gZGlmZmVyZW50CisgICB0aGluZ3M6CisrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorJCBnaXQgY2hlY2tvdXQgLS0gKi5jCiskIGdpdCBjaGVja291dCAtLSBcKi5jCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKworVGhlIGZvcm1lciBsZXRzIHlvdXIgc2hlbGwgZXhwYW5kIHRoZSBmaWxlZ2xvYiwgYW5kIHlvdSBhcmUgYXNraW5nCit0aGUgZG90LUMgZmlsZXMgaW4geW91ciB3b3JraW5nIHRyZWUgdG8gYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgdmVyc2lvbgoraW4gdGhlIGluZGV4LiAgVGhlIGxhdHRlciBwYXNzZXMgdGhlIGAqLmNgIHRvIEdpdCwgYW5kIHlvdSBhcmUgYXNraW5nCit0aGUgcGF0aHMgaW4gdGhlIGluZGV4IHRoYXQgbWF0Y2ggdGhlIHBhdHRlcm4gdG8gYmUgY2hlY2tlZCBvdXQgdG8geW91cgord29ya2luZyB0cmVlLiAgQWZ0ZXIgcnVubmluZyBgZ2l0IGFkZCBoZWxsby5jOyBybSBoZWxsby5jYCwgeW91IHdpbGwgX25vdF8KK3NlZSBgaGVsbG8uY2AgaW4geW91ciB3b3JraW5nIHRyZWUgd2l0aCB0aGUgZm9ybWVyLCBidXQgd2l0aCB0aGUgbGF0dGVyCit5b3Ugd2lsbC4KIAotICogaXQncyBwcmVmZXJyZWQgdG8gdXNlIHRoZSBub24gZGFzaGVkIGZvcm0gb2YgZ2l0IGNvbW1hbmRzLCB3aGljaCBtZWFucyB0aGF0CitIZXJlIGFyZSB0aGUgcnVsZXMgcmVnYXJkaW5nIHRoZSAiZmxhZ3MiIHRoYXQgeW91IHNob3VsZCBmb2xsb3cgd2hlbiB5b3UgYXJlCitzY3JpcHRpbmcgR2l0OgorCisgKiBpdCdzIHByZWZlcnJlZCB0byB1c2UgdGhlIG5vbiBkYXNoZWQgZm9ybSBvZiBHaXQgY29tbWFuZHMsIHdoaWNoIG1lYW5zIHRoYXQKICAgIHlvdSBzaG91bGQgcHJlZmVyIGBnaXQgZm9vYCB0byBgZ2l0LWZvb2AuCiAKICAqIHNwbGl0dGluZyBzaG9ydCBvcHRpb25zIHRvIHNlcGFyYXRlIHdvcmRzIChwcmVmZXIgYGdpdCBmb28gLWEgLWJgCkBAIC02MiwxMyArNzksMjEgQEAKICAgIGBnaXQgbG9nIC0xIEhFQURgIGJ1dCB3cml0ZSBgZ2l0IGxvZyAtMSBIRUFEIC0tYDsgdGhlIGZvcm1lciB3aWxsIG5vdCB3b3JrCiAgICBpZiB5b3UgaGFwcGVuIHRvIGhhdmUgYSBmaWxlIGNhbGxlZCBgSEVBRGAgaW4gdGhlIHdvcmsgdHJlZS4KIAorICogbWFueSBjb21tYW5kcyBhbGxvdyBhIGxvbmcgb3B0aW9uICItLW9wdGlvbiIgdG8gYmUgYWJicmV2aWF0ZWQKKyAgIG9ubHkgdG8gdGhlaXIgdW5pcXVlIHByZWZpeCAoZS5nLiBpZiB0aGVyZSBpcyBubyBvdGhlciBvcHRpb24KKyAgIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggIm9wdCIsIHlvdSBtYXkgYmUgYWJsZSB0byBzcGVsbCAiLS1vcHQiIHRvCisgICBpbnZva2UgdGhlICItLW9wdGlvbiIgZmxhZyksIGJ1dCB5b3Ugc2hvdWxkIGZ1bGx5IHNwZWxsIHRoZW0gb3V0CisgICB3aGVuIHdyaXRpbmcgeW91ciBzY3JpcHRzOyBsYXRlciB2ZXJzaW9ucyBvZiBHaXQgbWF5IGludHJvZHVjZSBhCisgICBuZXcgb3B0aW9uIHdob3NlIG5hbWUgc2hhcmVzIHRoZSBzYW1lIHByZWZpeCwgZS5nLiAiLS1vcHRpbWl6ZSIsCisgICB0byBtYWtlIGEgc2hvcnQgcHJlZml4IHRoYXQgdXNlZCB0byBiZSB1bmlxdWUgbm8gbG9uZ2VyIHVuaXF1ZS4KKwogCiBFTkhBTkNFRCBPUFRJT04gUEFSU0VSCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Gcm9tIHRoZSBnaXQgMS41LjQgc2VyaWVzIGFuZCBmdXJ0aGVyLCBtYW55IGdpdCBjb21tYW5kcyAobm90IGFsbCBvZiB0aGVtIGF0IHRoZQorRnJvbSB0aGUgR2l0IDEuNS40IHNlcmllcyBhbmQgZnVydGhlciwgbWFueSBHaXQgY29tbWFuZHMgKG5vdCBhbGwgb2YgdGhlbSBhdCB0aGUKIHRpbWUgb2YgdGhlIHdyaXRpbmcgdGhvdWdoKSBjb21lIHdpdGggYW4gZW5oYW5jZWQgb3B0aW9uIHBhcnNlci4KIAotSGVyZSBpcyBhbiBleGhhdXN0aXZlIGxpc3Qgb2YgdGhlIGZhY2lsaXRpZXMgcHJvdmlkZWQgYnkgdGhpcyBvcHRpb24gcGFyc2VyLgorSGVyZSBpcyBhIGxpc3Qgb2YgdGhlIGZhY2lsaXRpZXMgcHJvdmlkZWQgYnkgdGhpcyBvcHRpb24gcGFyc2VyLgogCiAKIE1hZ2ljIE9wdGlvbnMKQEAgLTgyLDE3ICsxMDcsMTggQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCBnaXQgZGVzY3JpYmUgLWgKIHVzYWdlOiBnaXQgZGVzY3JpYmUgW29wdGlvbnNdIDxjb21taXR0aXNoPioKKyAgIG9yOiBnaXQgZGVzY3JpYmUgW29wdGlvbnNdIC0tZGlydHkKIAogICAgIC0tY29udGFpbnMgICAgICAgICAgICBmaW5kIHRoZSB0YWcgdGhhdCBjb21lcyBhZnRlciB0aGUgY29tbWl0CiAgICAgLS1kZWJ1ZyAgICAgICAgICAgICAgIGRlYnVnIHNlYXJjaCBzdHJhdGVneSBvbiBzdGRlcnIKLSAgICAtLWFsbCAgICAgICAgICAgICAgICAgdXNlIGFueSByZWYgaW4gLmdpdC9yZWZzCi0gICAgLS10YWdzICAgICAgICAgICAgICAgIHVzZSBhbnkgdGFnIGluIC5naXQvcmVmcy90YWdzCi0gICAgLS1hYmJyZXYgWzxuPl0gICAgICAgIHVzZSA8bj4gZGlnaXRzIHRvIGRpc3BsYXkgU0hBLTFzCi0gICAgLS1jYW5kaWRhdGVzIDxuPiAgICAgIGNvbnNpZGVyIDxuPiBtb3N0IHJlY2VudCB0YWdzIChkZWZhdWx0OiAxMCkKKyAgICAtLWFsbCAgICAgICAgICAgICAgICAgdXNlIGFueSByZWYKKyAgICAtLXRhZ3MgICAgICAgICAgICAgICAgdXNlIGFueSB0YWcsIGV2ZW4gdW5hbm5vdGF0ZWQKKyAgICAtLWxvbmcgICAgICAgICAgICAgICAgYWx3YXlzIHVzZSBsb25nIGZvcm1hdAorICAgIC0tYWJicmV2Wz08bj5dICAgICAgICB1c2UgPG4+IGRpZ2l0cyB0byBkaXNwbGF5IFNIQS0xcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC0taGVscC1hbGw6OgotCVNvbWUgZ2l0IGNvbW1hbmRzIHRha2Ugb3B0aW9ucyB0aGF0IGFyZSBvbmx5IHVzZWQgZm9yIHBsdW1iaW5nIG9yIHRoYXQKKwlTb21lIEdpdCBjb21tYW5kcyB0YWtlIG9wdGlvbnMgdGhhdCBhcmUgb25seSB1c2VkIGZvciBwbHVtYmluZyBvciB0aGF0CiAJYXJlIGRlcHJlY2F0ZWQsIGFuZCBzdWNoIG9wdGlvbnMgYXJlIGhpZGRlbiBmcm9tIHRoZSBkZWZhdWx0IHVzYWdlLiBUaGlzCiAJb3B0aW9uIGdpdmVzIHRoZSBmdWxsIGxpc3Qgb2Ygb3B0aW9ucy4KIApAQCAtMTEyLDYgKzEzOCwxNiBAQAogYGdpdCBjbGVhbiAtZmR4YC4KIAogCitBYmJyZXZpYXRpbmcgbG9uZyBvcHRpb25zCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitDb21tYW5kcyB0aGF0IHN1cHBvcnQgdGhlIGVuaGFuY2VkIG9wdGlvbiBwYXJzZXIgYWNjZXB0cyB1bmlxdWUKK3ByZWZpeCBvZiBhIGxvbmcgb3B0aW9uIGFzIGlmIGl0IGlzIGZ1bGx5IHNwZWxsZWQgb3V0LCBidXQgdXNlIHRoaXMKK3dpdGggYSBjYXV0aW9uLiAgRm9yIGV4YW1wbGUsIGBnaXQgY29tbWl0IC0tYW1lbmAgYmVoYXZlcyBhcyBpZiB5b3UKK3R5cGVkIGBnaXQgY29tbWl0IC0tYW1lbmRgLCBidXQgdGhhdCBpcyB0cnVlIG9ubHkgdW50aWwgYSBsYXRlciB2ZXJzaW9uCitvZiBHaXQgaW50cm9kdWNlcyBhbm90aGVyIG9wdGlvbiB0aGF0IHNoYXJlcyB0aGUgc2FtZSBwcmVmaXgsCitlLmcgYGdpdCBjb21taXQgLS1hbWVuaXR5IiBvcHRpb24uCisKKwogU2VwYXJhdGluZyBhcmd1bWVudCBmcm9tIHRoZSBvcHRpb24KIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiBZb3UgY2FuIHdyaXRlIHRoZSBtYW5kYXRvcnkgb3B0aW9uIHBhcmFtZXRlciB0byBhbiBvcHRpb24gYXMgYSBzZXBhcmF0ZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRjb3JlLXR1dG9yaWFsLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0Y29yZS10dXRvcmlhbC50eHQKaW5kZXggOWQ4OTMzNi4uZjUzOGE4NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXRjb3JlLXR1dG9yaWFsLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdGNvcmUtdHV0b3JpYWwudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXRjb3JlLXR1dG9yaWFsIC0gQSBnaXQgY29yZSB0dXRvcmlhbCBmb3IgZGV2ZWxvcGVycworZ2l0Y29yZS10dXRvcmlhbCAtIEEgR2l0IGNvcmUgdHV0b3JpYWwgZm9yIGRldmVsb3BlcnMKIAogU1lOT1BTSVMKIC0tLS0tLS0tCkBAIC0xMiwxNyArMTIsMTcgQEAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQogCi1UaGlzIHR1dG9yaWFsIGV4cGxhaW5zIGhvdyB0byB1c2UgdGhlICJjb3JlIiBnaXQgY29tbWFuZHMgdG8gc2V0IHVwIGFuZAotd29yayB3aXRoIGEgZ2l0IHJlcG9zaXRvcnkuCitUaGlzIHR1dG9yaWFsIGV4cGxhaW5zIGhvdyB0byB1c2UgdGhlICJjb3JlIiBHaXQgY29tbWFuZHMgdG8gc2V0IHVwIGFuZAord29yayB3aXRoIGEgR2l0IHJlcG9zaXRvcnkuCiAKLUlmIHlvdSBqdXN0IG5lZWQgdG8gdXNlIGdpdCBhcyBhIHJldmlzaW9uIGNvbnRyb2wgc3lzdGVtIHlvdSBtYXkgcHJlZmVyCi10byBzdGFydCB3aXRoICJBIFR1dG9yaWFsIEludHJvZHVjdGlvbiB0byBHSVQiIChsaW5rZ2l0OmdpdHR1dG9yaWFsWzddKSBvcgotbGluazp1c2VyLW1hbnVhbC5odG1sW3RoZSBHSVQgVXNlciBNYW51YWxdLgorSWYgeW91IGp1c3QgbmVlZCB0byB1c2UgR2l0IGFzIGEgcmV2aXNpb24gY29udHJvbCBzeXN0ZW0geW91IG1heSBwcmVmZXIKK3RvIHN0YXJ0IHdpdGggIkEgVHV0b3JpYWwgSW50cm9kdWN0aW9uIHRvIEdpdCIgKGxpbmtnaXQ6Z2l0dHV0b3JpYWxbN10pIG9yCitsaW5rOnVzZXItbWFudWFsLmh0bWxbdGhlIEdpdCBVc2VyIE1hbnVhbF0uCiAKIEhvd2V2ZXIsIGFuIHVuZGVyc3RhbmRpbmcgb2YgdGhlc2UgbG93LWxldmVsIHRvb2xzIGNhbiBiZSBoZWxwZnVsIGlmCi15b3Ugd2FudCB0byB1bmRlcnN0YW5kIGdpdCdzIGludGVybmFscy4KK3lvdSB3YW50IHRvIHVuZGVyc3RhbmQgR2l0J3MgaW50ZXJuYWxzLgogCi1UaGUgY29yZSBnaXQgaXMgb2Z0ZW4gY2FsbGVkICJwbHVtYmluZyIsIHdpdGggdGhlIHByZXR0aWVyIHVzZXIKK1RoZSBjb3JlIEdpdCBpcyBvZnRlbiBjYWxsZWQgInBsdW1iaW5nIiwgd2l0aCB0aGUgcHJldHRpZXIgdXNlcgogaW50ZXJmYWNlcyBvbiB0b3Agb2YgaXQgY2FsbGVkICJwb3JjZWxhaW4iLiBZb3UgbWF5IG5vdCB3YW50IHRvIHVzZSB0aGUKIHBsdW1iaW5nIGRpcmVjdGx5IHZlcnkgb2Z0ZW4sIGJ1dCBpdCBjYW4gYmUgZ29vZCB0byBrbm93IHdoYXQgdGhlCiBwbHVtYmluZyBkb2VzIGZvciB3aGVuIHRoZSBwb3JjZWxhaW4gaXNuJ3QgZmx1c2hpbmcuCkBAIC00MCwxOSArNDAsMTkgQEAKIHNraXAgb24geW91ciBmaXJzdCByZWFkaW5nLgogCiAKLUNyZWF0aW5nIGEgZ2l0IHJlcG9zaXRvcnkKK0NyZWF0aW5nIGEgR2l0IHJlcG9zaXRvcnkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ3JlYXRpbmcgYSBuZXcgZ2l0IHJlcG9zaXRvcnkgY291bGRuJ3QgYmUgZWFzaWVyOiBhbGwgZ2l0IHJlcG9zaXRvcmllcyBzdGFydAorQ3JlYXRpbmcgYSBuZXcgR2l0IHJlcG9zaXRvcnkgY291bGRuJ3QgYmUgZWFzaWVyOiBhbGwgR2l0IHJlcG9zaXRvcmllcyBzdGFydAogb3V0IGVtcHR5LCBhbmQgdGhlIG9ubHkgdGhpbmcgeW91IG5lZWQgdG8gZG8gaXMgZmluZCB5b3Vyc2VsZiBhCiBzdWJkaXJlY3RvcnkgdGhhdCB5b3Ugd2FudCB0byB1c2UgYXMgYSB3b3JraW5nIHRyZWUgLSBlaXRoZXIgYW4gZW1wdHkKIG9uZSBmb3IgYSB0b3RhbGx5IG5ldyBwcm9qZWN0LCBvciBhbiBleGlzdGluZyB3b3JraW5nIHRyZWUgdGhhdCB5b3Ugd2FudAotdG8gaW1wb3J0IGludG8gZ2l0LgordG8gaW1wb3J0IGludG8gR2l0LgogCiBGb3Igb3VyIGZpcnN0IGV4YW1wbGUsIHdlJ3JlIGdvaW5nIHRvIHN0YXJ0IGEgdG90YWxseSBuZXcgcmVwb3NpdG9yeSBmcm9tCiBzY3JhdGNoLCB3aXRoIG5vIHByZS1leGlzdGluZyBmaWxlcywgYW5kIHdlJ2xsIGNhbGwgaXQgJ2dpdC10dXRvcmlhbCcuCiBUbyBzdGFydCB1cCwgY3JlYXRlIGEgc3ViZGlyZWN0b3J5IGZvciBpdCwgY2hhbmdlIGludG8gdGhhdAotc3ViZGlyZWN0b3J5LCBhbmQgaW5pdGlhbGl6ZSB0aGUgZ2l0IGluZnJhc3RydWN0dXJlIHdpdGggJ2dpdCBpbml0JzoKK3N1YmRpcmVjdG9yeSwgYW5kIGluaXRpYWxpemUgdGhlIEdpdCBpbmZyYXN0cnVjdHVyZSB3aXRoICdnaXQgaW5pdCc6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCBta2RpciBnaXQtdHV0b3JpYWwKQEAgLTYwLDEzICs2MCwxMyBAQAogJCBnaXQgaW5pdAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXRvIHdoaWNoIGdpdCB3aWxsIHJlcGx5Cit0byB3aGljaCBHaXQgd2lsbCByZXBseQogCiAtLS0tLS0tLS0tLS0tLS0tCiBJbml0aWFsaXplZCBlbXB0eSBHaXQgcmVwb3NpdG9yeSBpbiAuZ2l0LwogLS0tLS0tLS0tLS0tLS0tLQogCi13aGljaCBpcyBqdXN0IGdpdCdzIHdheSBvZiBzYXlpbmcgdGhhdCB5b3UgaGF2ZW4ndCBiZWVuIGRvaW5nIGFueXRoaW5nCit3aGljaCBpcyBqdXN0IEdpdCdzIHdheSBvZiBzYXlpbmcgdGhhdCB5b3UgaGF2ZW4ndCBiZWVuIGRvaW5nIGFueXRoaW5nCiBzdHJhbmdlLCBhbmQgdGhhdCBpdCB3aWxsIGhhdmUgY3JlYXRlZCBhIGxvY2FsIGAuZ2l0YCBkaXJlY3Rvcnkgc2V0dXAgZm9yCiB5b3VyIG5ldyBwcm9qZWN0LiBZb3Ugd2lsbCBub3cgaGF2ZSBhIGAuZ2l0YCBkaXJlY3RvcnksIGFuZCB5b3UgY2FuCiBpbnNwZWN0IHRoYXQgd2l0aCAnbHMnLiBGb3IgeW91ciBuZXcgZW1wdHkgcHJvamVjdCwgaXQgc2hvdWxkIHNob3cgeW91CkBAIC0xMDIsMTMgKzEwMiwxMyBAQAogCiBIb3dldmVyLCB0aGlzIGlzIG9ubHkgYSBjb252ZW50aW9uLCBhbmQgeW91IGNhbiBuYW1lIHlvdXIgYnJhbmNoZXMKIGFueXRoaW5nIHlvdSB3YW50LCBhbmQgZG9uJ3QgaGF2ZSB0byBldmVyIGV2ZW4gJ2hhdmUnIGEgYG1hc3RlcmAKLWJyYW5jaC4gQSBudW1iZXIgb2YgdGhlIGdpdCB0b29scyB3aWxsIGFzc3VtZSB0aGF0IGAuZ2l0L0hFQURgIGlzCiticmFuY2guIEEgbnVtYmVyIG9mIHRoZSBHaXQgdG9vbHMgd2lsbCBhc3N1bWUgdGhhdCBgLmdpdC9IRUFEYCBpcwogdmFsaWQsIHRob3VnaC4KIAogW05PVEVdCi1BbiAnb2JqZWN0JyBpcyBpZGVudGlmaWVkIGJ5IGl0cyAxNjAtYml0IFNIQTEgaGFzaCwgYWthICdvYmplY3QgbmFtZScsCitBbiAnb2JqZWN0JyBpcyBpZGVudGlmaWVkIGJ5IGl0cyAxNjAtYml0IFNIQS0xIGhhc2gsIGFrYSAnb2JqZWN0IG5hbWUnLAogYW5kIGEgcmVmZXJlbmNlIHRvIGFuIG9iamVjdCBpcyBhbHdheXMgdGhlIDQwLWJ5dGUgaGV4Ci1yZXByZXNlbnRhdGlvbiBvZiB0aGF0IFNIQTEgbmFtZS4gVGhlIGZpbGVzIGluIHRoZSBgcmVmc2AKK3JlcHJlc2VudGF0aW9uIG9mIHRoYXQgU0hBLTEgbmFtZS4gVGhlIGZpbGVzIGluIHRoZSBgcmVmc2AKIHN1YmRpcmVjdG9yeSBhcmUgZXhwZWN0ZWQgdG8gY29udGFpbiB0aGVzZSBoZXggcmVmZXJlbmNlcwogKHVzdWFsbHkgd2l0aCBhIGZpbmFsIGBcbmAgYXQgdGhlIGVuZCksIGFuZCB5b3Ugc2hvdWxkIHRodXMKIGV4cGVjdCB0byBzZWUgYSBudW1iZXIgb2YgNDEtYnl0ZSBmaWxlcyBjb250YWluaW5nIHRoZXNlCkBAIC0xMTksMTggKzExOSwxOCBAQAogQW4gYWR2YW5jZWQgdXNlciBtYXkgd2FudCB0byB0YWtlIGEgbG9vayBhdCBsaW5rZ2l0OmdpdHJlcG9zaXRvcnktbGF5b3V0WzVdCiBhZnRlciBmaW5pc2hpbmcgdGhpcyB0dXRvcmlhbC4KIAotWW91IGhhdmUgbm93IGNyZWF0ZWQgeW91ciBmaXJzdCBnaXQgcmVwb3NpdG9yeS4gT2YgY291cnNlLCBzaW5jZSBpdCdzCitZb3UgaGF2ZSBub3cgY3JlYXRlZCB5b3VyIGZpcnN0IEdpdCByZXBvc2l0b3J5LiBPZiBjb3Vyc2UsIHNpbmNlIGl0J3MKIGVtcHR5LCB0aGF0J3Mgbm90IHZlcnkgdXNlZnVsLCBzbyBsZXQncyBzdGFydCBwb3B1bGF0aW5nIGl0IHdpdGggZGF0YS4KIAogCi1Qb3B1bGF0aW5nIGEgZ2l0IHJlcG9zaXRvcnkKK1BvcHVsYXRpbmcgYSBHaXQgcmVwb3NpdG9yeQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFdlJ2xsIGtlZXAgdGhpcyBzaW1wbGUgYW5kIHN0dXBpZCwgc28gd2UnbGwgc3RhcnQgb2ZmIHdpdGggcG9wdWxhdGluZyBhCiBmZXcgdHJpdmlhbCBmaWxlcyBqdXN0IHRvIGdldCBhIGZlZWwgZm9yIGl0LgogCiBTdGFydCBvZmYgd2l0aCBqdXN0IGNyZWF0aW5nIGFueSByYW5kb20gZmlsZXMgdGhhdCB5b3Ugd2FudCB0byBtYWludGFpbgotaW4geW91ciBnaXQgcmVwb3NpdG9yeS4gV2UnbGwgc3RhcnQgb2ZmIHdpdGggYSBmZXcgYmFkIGV4YW1wbGVzLCBqdXN0IHRvCitpbiB5b3VyIEdpdCByZXBvc2l0b3J5LiBXZSdsbCBzdGFydCBvZmYgd2l0aCBhIGZldyBiYWQgZXhhbXBsZXMsIGp1c3QgdG8KIGdldCBhIGZlZWwgZm9yIGhvdyB0aGlzIHdvcmtzOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE0Niw3ICsxNDYsNyBAQAogCiAgLSBjb21taXQgdGhhdCBpbmRleCBmaWxlIGFzIGFuIG9iamVjdC4KIAotVGhlIGZpcnN0IHN0ZXAgaXMgdHJpdmlhbDogd2hlbiB5b3Ugd2FudCB0byB0ZWxsIGdpdCBhYm91dCBhbnkgY2hhbmdlcworVGhlIGZpcnN0IHN0ZXAgaXMgdHJpdmlhbDogd2hlbiB5b3Ugd2FudCB0byB0ZWxsIEdpdCBhYm91dCBhbnkgY2hhbmdlcwogdG8geW91ciB3b3JraW5nIHRyZWUsIHlvdSB1c2UgdGhlICdnaXQgdXBkYXRlLWluZGV4JyBwcm9ncmFtLiBUaGF0CiBwcm9ncmFtIG5vcm1hbGx5IGp1c3QgdGFrZXMgYSBsaXN0IG9mIGZpbGVuYW1lcyB5b3Ugd2FudCB0byB1cGRhdGUsIGJ1dAogdG8gYXZvaWQgdHJpdmlhbCBtaXN0YWtlcywgaXQgcmVmdXNlcyB0byBhZGQgbmV3IGVudHJpZXMgdG8gdGhlIGluZGV4CkBAIC0xNjAsMTAgKzE2MCwxMCBAQAogJCBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIGhlbGxvIGV4YW1wbGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1hbmQgeW91IGhhdmUgbm93IHRvbGQgZ2l0IHRvIHRyYWNrIHRob3NlIHR3byBmaWxlcy4KK2FuZCB5b3UgaGF2ZSBub3cgdG9sZCBHaXQgdG8gdHJhY2sgdGhvc2UgdHdvIGZpbGVzLgogCiBJbiBmYWN0LCBhcyB5b3UgZGlkIHRoYXQsIGlmIHlvdSBub3cgbG9vayBpbnRvIHlvdXIgb2JqZWN0IGRpcmVjdG9yeSwKLXlvdSdsbCBub3RpY2UgdGhhdCBnaXQgd2lsbCBoYXZlIGFkZGVkIHR3byBuZXcgb2JqZWN0cyB0byB0aGUgb2JqZWN0Cit5b3UnbGwgbm90aWNlIHRoYXQgR2l0IHdpbGwgaGF2ZSBhZGRlZCB0d28gbmV3IG9iamVjdHMgdG8gdGhlIG9iamVjdAogZGF0YWJhc2UuIElmIHlvdSBkaWQgZXhhY3RseSB0aGUgc3RlcHMgYWJvdmUsIHlvdSBzaG91bGQgbm93IGJlIGFibGUgdG8gZG8KIAogCkBAIC0xODksNyArMTg5LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0KIAogd2hlcmUgdGhlIGAtdGAgdGVsbHMgJ2dpdCBjYXQtZmlsZScgdG8gdGVsbCB5b3Ugd2hhdCB0aGUgInR5cGUiIG9mIHRoZQotb2JqZWN0IGlzLiBnaXQgd2lsbCB0ZWxsIHlvdSB0aGF0IHlvdSBoYXZlIGEgImJsb2IiIG9iamVjdCAoaS5lLiwganVzdCBhCitvYmplY3QgaXMuIEdpdCB3aWxsIHRlbGwgeW91IHRoYXQgeW91IGhhdmUgYSAiYmxvYiIgb2JqZWN0IChpLmUuLCBqdXN0IGEKIHJlZ3VsYXIgZmlsZSksIGFuZCB5b3UgY2FuIHNlZSB0aGUgY29udGVudHMgd2l0aAogCiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0yMTQsMjggKzIxNCwyOCBAQAogbG9vayBhdCB0aGUgb2JqZWN0cyB0aGVtc2VsdmVzLCBhbmQgdHlwaW5nIGxvbmcgNDAtY2hhcmFjdGVyIGhleAogbmFtZXMgaXMgbm90IHNvbWV0aGluZyB5b3UnZCBub3JtYWxseSB3YW50IHRvIGRvLiBUaGUgYWJvdmUgZGlncmVzc2lvbgogd2FzIGp1c3QgdG8gc2hvdyB0aGF0ICdnaXQgdXBkYXRlLWluZGV4JyBkaWQgc29tZXRoaW5nIG1hZ2ljYWwsIGFuZAotYWN0dWFsbHkgc2F2ZWQgYXdheSB0aGUgY29udGVudHMgb2YgeW91ciBmaWxlcyBpbnRvIHRoZSBnaXQgb2JqZWN0CithY3R1YWxseSBzYXZlZCBhd2F5IHRoZSBjb250ZW50cyBvZiB5b3VyIGZpbGVzIGludG8gdGhlIEdpdCBvYmplY3QKIGRhdGFiYXNlLgogCiBVcGRhdGluZyB0aGUgaW5kZXggZGlkIHNvbWV0aGluZyBlbHNlIHRvbzogaXQgY3JlYXRlZCBhIGAuZ2l0L2luZGV4YAogZmlsZS4gVGhpcyBpcyB0aGUgaW5kZXggdGhhdCBkZXNjcmliZXMgeW91ciBjdXJyZW50IHdvcmtpbmcgdHJlZSwgYW5kCiBzb21ldGhpbmcgeW91IHNob3VsZCBiZSB2ZXJ5IGF3YXJlIG9mLiBBZ2FpbiwgeW91IG5vcm1hbGx5IG5ldmVyIHdvcnJ5CiBhYm91dCB0aGUgaW5kZXggZmlsZSBpdHNlbGYsIGJ1dCB5b3Ugc2hvdWxkIGJlIGF3YXJlIG9mIHRoZSBmYWN0IHRoYXQKLXlvdSBoYXZlIG5vdCBhY3R1YWxseSByZWFsbHkgImNoZWNrZWQgaW4iIHlvdXIgZmlsZXMgaW50byBnaXQgc28gZmFyLAoteW91J3ZlIG9ubHkgKnRvbGQqIGdpdCBhYm91dCB0aGVtLgoreW91IGhhdmUgbm90IGFjdHVhbGx5IHJlYWxseSAiY2hlY2tlZCBpbiIgeW91ciBmaWxlcyBpbnRvIEdpdCBzbyBmYXIsCit5b3UndmUgb25seSAqdG9sZCogR2l0IGFib3V0IHRoZW0uCiAKLUhvd2V2ZXIsIHNpbmNlIGdpdCBrbm93cyBhYm91dCB0aGVtLCB5b3UgY2FuIG5vdyBzdGFydCB1c2luZyBzb21lIG9mIHRoZQotbW9zdCBiYXNpYyBnaXQgY29tbWFuZHMgdG8gbWFuaXB1bGF0ZSB0aGUgZmlsZXMgb3IgbG9vayBhdCB0aGVpciBzdGF0dXMuCitIb3dldmVyLCBzaW5jZSBHaXQga25vd3MgYWJvdXQgdGhlbSwgeW91IGNhbiBub3cgc3RhcnQgdXNpbmcgc29tZSBvZiB0aGUKK21vc3QgYmFzaWMgR2l0IGNvbW1hbmRzIHRvIG1hbmlwdWxhdGUgdGhlIGZpbGVzIG9yIGxvb2sgYXQgdGhlaXIgc3RhdHVzLgogCi1JbiBwYXJ0aWN1bGFyLCBsZXQncyBub3QgZXZlbiBjaGVjayBpbiB0aGUgdHdvIGZpbGVzIGludG8gZ2l0IHlldCwgd2UnbGwKK0luIHBhcnRpY3VsYXIsIGxldCdzIG5vdCBldmVuIGNoZWNrIGluIHRoZSB0d28gZmlsZXMgaW50byBHaXQgeWV0LCB3ZSdsbAogc3RhcnQgb2ZmIGJ5IGFkZGluZyBhbm90aGVyIGxpbmUgdG8gYGhlbGxvYCBmaXJzdDoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGVjaG8gIkl0J3MgYSBuZXcgZGF5IGZvciBnaXQiID4+aGVsbG8KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1hbmQgeW91IGNhbiBub3csIHNpbmNlIHlvdSB0b2xkIGdpdCBhYm91dCB0aGUgcHJldmlvdXMgc3RhdGUgb2YgYGhlbGxvYCwgYXNrCi1naXQgd2hhdCBoYXMgY2hhbmdlZCBpbiB0aGUgdHJlZSBjb21wYXJlZCB0byB5b3VyIG9sZCBpbmRleCwgdXNpbmcgdGhlCithbmQgeW91IGNhbiBub3csIHNpbmNlIHlvdSB0b2xkIEdpdCBhYm91dCB0aGUgcHJldmlvdXMgc3RhdGUgb2YgYGhlbGxvYCwgYXNrCitHaXQgd2hhdCBoYXMgY2hhbmdlZCBpbiB0aGUgdHJlZSBjb21wYXJlZCB0byB5b3VyIG9sZCBpbmRleCwgdXNpbmcgdGhlCiAnZ2l0IGRpZmYtZmlsZXMnIGNvbW1hbmQ6CiAKIC0tLS0tLS0tLS0tLQpAQCAtMjgyLDExICsyODIsMTEgQEAKIC0tLS0tLS0tLS0tLQogCiAKLUNvbW1pdHRpbmcgZ2l0IHN0YXRlCitDb21taXR0aW5nIEdpdCBzdGF0ZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTm93LCB3ZSB3YW50IHRvIGdvIHRvIHRoZSBuZXh0IHN0YWdlIGluIGdpdCwgd2hpY2ggaXMgdG8gdGFrZSB0aGUgZmlsZXMKLXRoYXQgZ2l0IGtub3dzIGFib3V0IGluIHRoZSBpbmRleCwgYW5kIGNvbW1pdCB0aGVtIGFzIGEgcmVhbCB0cmVlLiBXZSBkbworTm93LCB3ZSB3YW50IHRvIGdvIHRvIHRoZSBuZXh0IHN0YWdlIGluIEdpdCwgd2hpY2ggaXMgdG8gdGFrZSB0aGUgZmlsZXMKK3RoYXQgR2l0IGtub3dzIGFib3V0IGluIHRoZSBpbmRleCwgYW5kIGNvbW1pdCB0aGVtIGFzIGEgcmVhbCB0cmVlLiBXZSBkbwogdGhhdCBpbiB0d28gcGhhc2VzOiBjcmVhdGluZyBhICd0cmVlJyBvYmplY3QsIGFuZCBjb21taXR0aW5nIHRoYXQgJ3RyZWUnCiBvYmplY3QgYXMgYSAnY29tbWl0JyBvYmplY3QgdG9nZXRoZXIgd2l0aCBhbiBleHBsYW5hdGlvbiBvZiB3aGF0IHRoZQogdHJlZSB3YXMgYWxsIGFib3V0LCBhbG9uZyB3aXRoIGluZm9ybWF0aW9uIG9mIGhvdyB3ZSBjYW1lIHRvIHRoYXQgc3RhdGUuCkBAIC0yOTYsNyArMjk2LDcgQEAKIGN1cnJlbnQgaW5kZXggc3RhdGUsIGFuZCB3cml0ZSBhbiBvYmplY3QgdGhhdCBkZXNjcmliZXMgdGhhdCB3aG9sZQogaW5kZXguIEluIG90aGVyIHdvcmRzLCB3ZSdyZSBub3cgdHlpbmcgdG9nZXRoZXIgYWxsIHRoZSBkaWZmZXJlbnQKIGZpbGVuYW1lcyB3aXRoIHRoZWlyIGNvbnRlbnRzIChhbmQgdGhlaXIgcGVybWlzc2lvbnMpLCBhbmQgd2UncmUKLWNyZWF0aW5nIHRoZSBlcXVpdmFsZW50IG9mIGEgZ2l0ICJkaXJlY3RvcnkiIG9iamVjdDoKK2NyZWF0aW5nIHRoZSBlcXVpdmFsZW50IG9mIGEgR2l0ICJkaXJlY3RvcnkiIG9iamVjdDoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCB3cml0ZS10cmVlCkBAIC00MTUsOSArNDE1LDkgQEAKIGZsYWcgcmVhbGx5IG9ubHkgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBmaWxlICpjb250ZW50cyogdG8gYmUgY29tcGFyZWQKIGNvbWUgZnJvbSB0aGUgd29ya2luZyB0cmVlIG9yIG5vdC4KIAotVGhpcyBpcyBub3QgaGFyZCB0byB1bmRlcnN0YW5kLCBhcyBzb29uIGFzIHlvdSByZWFsaXplIHRoYXQgZ2l0IHNpbXBseQorVGhpcyBpcyBub3QgaGFyZCB0byB1bmRlcnN0YW5kLCBhcyBzb29uIGFzIHlvdSByZWFsaXplIHRoYXQgR2l0IHNpbXBseQogbmV2ZXIga25vd3MgKG9yIGNhcmVzKSBhYm91dCBmaWxlcyB0aGF0IGl0IGlzIG5vdCB0b2xkIGFib3V0Ci1leHBsaWNpdGx5LiBnaXQgd2lsbCBuZXZlciBnbyAqbG9va2luZyogZm9yIGZpbGVzIHRvIGNvbXBhcmUsIGl0CitleHBsaWNpdGx5LiBHaXQgd2lsbCBuZXZlciBnbyAqbG9va2luZyogZm9yIGZpbGVzIHRvIGNvbXBhcmUsIGl0CiBleHBlY3RzIHlvdSB0byB0ZWxsIGl0IHdoYXQgdGhlIGZpbGVzIGFyZSwgYW5kIHRoYXQncyB3aGF0IHRoZSBpbmRleAogaXMgdGhlcmUgZm9yLgogPT09PT09PT09PT09PT09PQpAQCAtNDMzLDcgKzQzMyw3IEBACiAkIGdpdCB1cGRhdGUtaW5kZXggaGVsbG8KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0obm90ZSBob3cgd2UgZGlkbid0IG5lZWQgdGhlIGAtLWFkZGAgZmxhZyB0aGlzIHRpbWUsIHNpbmNlIGdpdCBrbmV3Cisobm90ZSBob3cgd2UgZGlkbid0IG5lZWQgdGhlIGAtLWFkZGAgZmxhZyB0aGlzIHRpbWUsIHNpbmNlIEdpdCBrbmV3CiBhYm91dCB0aGUgZmlsZSBhbHJlYWR5KS4KIAogTm90ZSB3aGF0IGhhcHBlbnMgdG8gdGhlIGRpZmZlcmVudCAnZ2l0IGRpZmYte2FzdGVyaXNrfScgdmVyc2lvbnMgaGVyZS4KQEAgLTQ2NCw3ICs0NjQsNyBAQAogY2FuIGp1c3QgbGVhdmUgYW4gZW1wdHkgbWVzc2FnZS4gT3RoZXJ3aXNlIGBnaXQgY29tbWl0YCB3aWxsIGNvbW1pdAogdGhlIGNoYW5nZSBmb3IgeW91LgogCi1Zb3UndmUgbm93IG1hZGUgeW91ciBmaXJzdCByZWFsIGdpdCBjb21taXQuIEFuZCBpZiB5b3UncmUgaW50ZXJlc3RlZCBpbgorWW91J3ZlIG5vdyBtYWRlIHlvdXIgZmlyc3QgcmVhbCBHaXQgY29tbWl0LiBBbmQgaWYgeW91J3JlIGludGVyZXN0ZWQgaW4KIGxvb2tpbmcgYXQgd2hhdCBgZ2l0IGNvbW1pdGAgcmVhbGx5IGRvZXMsIGZlZWwgZnJlZSB0byBpbnZlc3RpZ2F0ZToKIGl0J3MgYSBmZXcgdmVyeSBzaW1wbGUgc2hlbGwgc2NyaXB0cyB0byBnZW5lcmF0ZSB0aGUgaGVscGZ1bCAoPykgY29tbWl0CiBtZXNzYWdlIGhlYWRlcnMsIGFuZCBhIGZldyBvbmUtbGluZXJzIHRoYXQgYWN0dWFsbHkgZG8gdGhlCkBAIC01MzUsNyArNTM1LDcgQEAKIEluIGZhY3QsIHRvZ2V0aGVyIHdpdGggdGhlICdnaXQgcmV2LWxpc3QnIHByb2dyYW0gKHdoaWNoIGdlbmVyYXRlcyBhCiBsaXN0IG9mIHJldmlzaW9ucyksICdnaXQgZGlmZi10cmVlJyBlbmRzIHVwIGJlaW5nIGEgdmVyaXRhYmxlIGZvdW50IG9mCiBjaGFuZ2VzLiBBIHRyaXZpYWwgKGJ1dCB2ZXJ5IHVzZWZ1bCkgc2NyaXB0IGNhbGxlZCAnZ2l0IHdoYXRjaGFuZ2VkJyBpcwotaW5jbHVkZWQgd2l0aCBnaXQgd2hpY2ggZG9lcyBleGFjdGx5IHRoaXMsIGFuZCBzaG93cyBhIGxvZyBvZiByZWNlbnQKK2luY2x1ZGVkIHdpdGggR2l0IHdoaWNoIGRvZXMgZXhhY3RseSB0aGlzLCBhbmQgc2hvd3MgYSBsb2cgb2YgcmVjZW50CiBhY3Rpdml0aWVzLgogCiBUbyBzZWUgdGhlIHdob2xlIGhpc3Rvcnkgb2Ygb3VyIHBpdGlmdWwgbGl0dGxlIGdpdC10dXRvcmlhbCBwcm9qZWN0LCB5b3UKQEAgLTU2MywxOSArNTYzLDE5IEBACiBjYW4gc3RpbGwgc2hvdyBpdCBmb3IgZWFjaCBjb21tYW5kIGp1c3QgYWRkaW5nIHRoZSBgLS1yb290YCBvcHRpb24sCiB3aGljaCBpcyBhIGZsYWcgZm9yICdnaXQgZGlmZi10cmVlJyBhY2NlcHRlZCBieSBib3RoIGNvbW1hbmRzLgogCi1XaXRoIHRoYXQsIHlvdSBzaG91bGQgbm93IGJlIGhhdmluZyBzb21lIGlua2xpbmcgb2Ygd2hhdCBnaXQgZG9lcywgYW5kCitXaXRoIHRoYXQsIHlvdSBzaG91bGQgbm93IGJlIGhhdmluZyBzb21lIGlua2xpbmcgb2Ygd2hhdCBHaXQgZG9lcywgYW5kCiBjYW4gZXhwbG9yZSBvbiB5b3VyIG93bi4KIAogW05PVEVdCiBNb3N0IGxpa2VseSwgeW91IGFyZSBub3QgZGlyZWN0bHkgdXNpbmcgdGhlIGNvcmUKLWdpdCBQbHVtYmluZyBjb21tYW5kcywgYnV0IHVzaW5nIFBvcmNlbGFpbiBzdWNoIGFzICdnaXQgYWRkJywgYGdpdC1ybScKK0dpdCBQbHVtYmluZyBjb21tYW5kcywgYnV0IHVzaW5nIFBvcmNlbGFpbiBzdWNoIGFzICdnaXQgYWRkJywgYGdpdC1ybScKIGFuZCBgZ2l0LWNvbW1pdCcuCiAKIAogVGFnZ2luZyBhIHZlcnNpb24KIC0tLS0tLS0tLS0tLS0tLS0tCiAKLUluIGdpdCwgdGhlcmUgYXJlIHR3byBraW5kcyBvZiB0YWdzLCBhICJsaWdodCIgb25lLCBhbmQgYW4gImFubm90YXRlZCB0YWciLgorSW4gR2l0LCB0aGVyZSBhcmUgdHdvIGtpbmRzIG9mIHRhZ3MsIGEgImxpZ2h0IiBvbmUsIGFuZCBhbiAiYW5ub3RhdGVkIHRhZyIuCiAKIEEgImxpZ2h0IiB0YWcgaXMgdGVjaG5pY2FsbHkgbm90aGluZyBtb3JlIHRoYW4gYSBicmFuY2gsIGV4Y2VwdCB3ZSBwdXQKIGl0IGluIHRoZSBgLmdpdC9yZWZzL3RhZ3MvYCBzdWJkaXJlY3RvcnkgaW5zdGVhZCBvZiBjYWxsaW5nIGl0IGEgYGhlYWRgLgpAQCAtNTk4LDcgKzU5OCw3IEBACiBzdHVmZiwgeW91IGNhbiB1c2UgeW91ciB0YWcgYXMgYW4gImFuY2hvci1wb2ludCIgdG8gc2VlIHdoYXQgaGFzIGNoYW5nZWQKIHNpbmNlIHlvdSB0YWdnZWQgaXQuCiAKLUFuICJhbm5vdGF0ZWQgdGFnIiBpcyBhY3R1YWxseSBhIHJlYWwgZ2l0IG9iamVjdCwgYW5kIGNvbnRhaW5zIG5vdCBvbmx5IGEKK0FuICJhbm5vdGF0ZWQgdGFnIiBpcyBhY3R1YWxseSBhIHJlYWwgR2l0IG9iamVjdCwgYW5kIGNvbnRhaW5zIG5vdCBvbmx5IGEKIHBvaW50ZXIgdG8gdGhlIHN0YXRlIHlvdSB3YW50IHRvIHRhZywgYnV0IGFsc28gYSBzbWFsbCB0YWcgbmFtZSBhbmQKIG1lc3NhZ2UsIGFsb25nIHdpdGggb3B0aW9uYWxseSBhIFBHUCBzaWduYXR1cmUgdGhhdCBzYXlzIHRoYXQgeWVzLAogeW91IHJlYWxseSBkaWQKQEAgLTYyMywxNyArNjIzLDE3IEBACiBDb3B5aW5nIHJlcG9zaXRvcmllcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotZ2l0IHJlcG9zaXRvcmllcyBhcmUgbm9ybWFsbHkgdG90YWxseSBzZWxmLXN1ZmZpY2llbnQgYW5kIHJlbG9jYXRhYmxlLgorR2l0IHJlcG9zaXRvcmllcyBhcmUgbm9ybWFsbHkgdG90YWxseSBzZWxmLXN1ZmZpY2llbnQgYW5kIHJlbG9jYXRhYmxlLgogVW5saWtlIENWUywgZm9yIGV4YW1wbGUsIHRoZXJlIGlzIG5vIHNlcGFyYXRlIG5vdGlvbiBvZgotInJlcG9zaXRvcnkiIGFuZCAid29ya2luZyB0cmVlIi4gQSBnaXQgcmVwb3NpdG9yeSBub3JtYWxseSAqaXMqIHRoZQotd29ya2luZyB0cmVlLCB3aXRoIHRoZSBsb2NhbCBnaXQgaW5mb3JtYXRpb24gaGlkZGVuIGluIHRoZSBgLmdpdGAKKyJyZXBvc2l0b3J5IiBhbmQgIndvcmtpbmcgdHJlZSIuIEEgR2l0IHJlcG9zaXRvcnkgbm9ybWFsbHkgKmlzKiB0aGUKK3dvcmtpbmcgdHJlZSwgd2l0aCB0aGUgbG9jYWwgR2l0IGluZm9ybWF0aW9uIGhpZGRlbiBpbiB0aGUgYC5naXRgCiBzdWJkaXJlY3RvcnkuIFRoZXJlIGlzIG5vdGhpbmcgZWxzZS4gV2hhdCB5b3Ugc2VlIGlzIHdoYXQgeW91IGdvdC4KIAogW05PVEVdCi1Zb3UgY2FuIHRlbGwgZ2l0IHRvIHNwbGl0IHRoZSBnaXQgaW50ZXJuYWwgaW5mb3JtYXRpb24gZnJvbQorWW91IGNhbiB0ZWxsIEdpdCB0byBzcGxpdCB0aGUgR2l0IGludGVybmFsIGluZm9ybWF0aW9uIGZyb20KIHRoZSBkaXJlY3RvcnkgdGhhdCBpdCB0cmFja3MsIGJ1dCB3ZSdsbCBpZ25vcmUgdGhhdCBmb3Igbm93OiBpdCdzIG5vdAogaG93IG5vcm1hbCBwcm9qZWN0cyB3b3JrLCBhbmQgaXQncyByZWFsbHkgb25seSBtZWFudCBmb3Igc3BlY2lhbCB1c2VzLgotU28gdGhlIG1lbnRhbCBtb2RlbCBvZiAidGhlIGdpdCBpbmZvcm1hdGlvbiBpcyBhbHdheXMgdGllZCBkaXJlY3RseSB0bworU28gdGhlIG1lbnRhbCBtb2RlbCBvZiAidGhlIEdpdCBpbmZvcm1hdGlvbiBpcyBhbHdheXMgdGllZCBkaXJlY3RseSB0bwogdGhlIHdvcmtpbmcgdHJlZSB0aGF0IGl0IGRlc2NyaWJlcyIgbWF5IG5vdCBiZSB0ZWNobmljYWxseSAxMDAlCiBhY2N1cmF0ZSwgYnV0IGl0J3MgYSBnb29kIG1vZGVsIGZvciBhbGwgbm9ybWFsIHVzZS4KIApAQCAtNjQ5LDEzICs2NDksMTMgQEAKIGFuZCBpdCB3aWxsIGJlIGdvbmUuIFRoZXJlJ3Mgbm8gZXh0ZXJuYWwgcmVwb3NpdG9yeSwgYW5kIHRoZXJlJ3Mgbm8KIGhpc3Rvcnkgb3V0c2lkZSB0aGUgcHJvamVjdCB5b3UgY3JlYXRlZC4KIAotIC0gaWYgeW91IHdhbnQgdG8gbW92ZSBvciBkdXBsaWNhdGUgYSBnaXQgcmVwb3NpdG9yeSwgeW91IGNhbiBkbyBzby4gVGhlcmUKKyAtIGlmIHlvdSB3YW50IHRvIG1vdmUgb3IgZHVwbGljYXRlIGEgR2l0IHJlcG9zaXRvcnksIHlvdSBjYW4gZG8gc28uIFRoZXJlCiAgICBpcyAnZ2l0IGNsb25lJyBjb21tYW5kLCBidXQgaWYgYWxsIHlvdSB3YW50IHRvIGRvIGlzIGp1c3QgdG8KICAgIGNyZWF0ZSBhIGNvcHkgb2YgeW91ciByZXBvc2l0b3J5ICh3aXRoIGFsbCB0aGUgZnVsbCBoaXN0b3J5IHRoYXQKICAgIHdlbnQgYWxvbmcgd2l0aCBpdCksIHlvdSBjYW4gZG8gc28gd2l0aCBhIHJlZ3VsYXIKICAgIGBjcCAtYSBnaXQtdHV0b3JpYWwgbmV3LWdpdC10dXRvcmlhbGAuCiArCi1Ob3RlIHRoYXQgd2hlbiB5b3UndmUgbW92ZWQgb3IgY29waWVkIGEgZ2l0IHJlcG9zaXRvcnksIHlvdXIgZ2l0IGluZGV4CitOb3RlIHRoYXQgd2hlbiB5b3UndmUgbW92ZWQgb3IgY29waWVkIGEgR2l0IHJlcG9zaXRvcnksIHlvdXIgR2l0IGluZGV4CiBmaWxlICh3aGljaCBjYWNoZXMgdmFyaW91cyBpbmZvcm1hdGlvbiwgbm90YWJseSBzb21lIG9mIHRoZSAic3RhdCIKIGluZm9ybWF0aW9uIGZvciB0aGUgZmlsZXMgaW52b2x2ZWQpIHdpbGwgbGlrZWx5IG5lZWQgdG8gYmUgcmVmcmVzaGVkLgogU28gYWZ0ZXIgeW91IGRvIGEgYGNwIC1hYCB0byBjcmVhdGUgYSBuZXcgY29weSwgeW91J2xsIHdhbnQgdG8gZG8KQEAgLTY2Nyw3ICs2NjcsNyBAQAogaW4gdGhlIG5ldyByZXBvc2l0b3J5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBmaWxlIGlzIHVwLXRvLWRhdGUuCiAKIE5vdGUgdGhhdCB0aGUgc2Vjb25kIHBvaW50IGlzIHRydWUgZXZlbiBhY3Jvc3MgbWFjaGluZXMuIFlvdSBjYW4KLWR1cGxpY2F0ZSBhIHJlbW90ZSBnaXQgcmVwb3NpdG9yeSB3aXRoICphbnkqIHJlZ3VsYXIgY29weSBtZWNoYW5pc20sIGJlIGl0CitkdXBsaWNhdGUgYSByZW1vdGUgR2l0IHJlcG9zaXRvcnkgd2l0aCAqYW55KiByZWd1bGFyIGNvcHkgbWVjaGFuaXNtLCBiZSBpdAogJ3NjcCcsICdyc3luYycgb3IgJ3dnZXQnLgogCiBXaGVuIGNvcHlpbmcgYSByZW1vdGUgcmVwb3NpdG9yeSwgeW91J2xsIHdhbnQgdG8gYXQgYSBtaW5pbXVtIHVwZGF0ZSB0aGUKQEAgLTY5NCwyMyArNjk0LDIzIEBACiAkIGdpdCByZXNldAogLS0tLS0tLS0tLS0tLS0tLQogCi1hbmQgaW4gZmFjdCBhIGxvdCBvZiB0aGUgY29tbW9uIGdpdCBjb21tYW5kIGNvbWJpbmF0aW9ucyBjYW4gYmUgc2NyaXB0ZWQKK2FuZCBpbiBmYWN0IGEgbG90IG9mIHRoZSBjb21tb24gR2l0IGNvbW1hbmQgY29tYmluYXRpb25zIGNhbiBiZSBzY3JpcHRlZAogd2l0aCB0aGUgYGdpdCB4eXpgIGludGVyZmFjZXMuICBZb3UgY2FuIGxlYXJuIHRoaW5ncyBieSBqdXN0IGxvb2tpbmcKIGF0IHdoYXQgdGhlIHZhcmlvdXMgZ2l0IHNjcmlwdHMgZG8uICBGb3IgZXhhbXBsZSwgYGdpdCByZXNldGAgdXNlZCB0byBiZQogdGhlIGFib3ZlIHR3byBsaW5lcyBpbXBsZW1lbnRlZCBpbiAnZ2l0IHJlc2V0JywgYnV0IHNvbWUgdGhpbmdzIGxpa2UKICdnaXQgc3RhdHVzJyBhbmQgJ2dpdCBjb21taXQnIGFyZSBzbGlnaHRseSBtb3JlIGNvbXBsZXggc2NyaXB0cyBhcm91bmQKLXRoZSBiYXNpYyBnaXQgY29tbWFuZHMuCit0aGUgYmFzaWMgR2l0IGNvbW1hbmRzLgogCiBNYW55IChtb3N0PykgcHVibGljIHJlbW90ZSByZXBvc2l0b3JpZXMgd2lsbCBub3QgY29udGFpbiBhbnkgb2YKIHRoZSBjaGVja2VkIG91dCBmaWxlcyBvciBldmVuIGFuIGluZGV4IGZpbGUsIGFuZCB3aWxsICpvbmx5KiBjb250YWluIHRoZQotYWN0dWFsIGNvcmUgZ2l0IGZpbGVzLiBTdWNoIGEgcmVwb3NpdG9yeSB1c3VhbGx5IGRvZXNuJ3QgZXZlbiBoYXZlIHRoZQotYC5naXRgIHN1YmRpcmVjdG9yeSwgYnV0IGhhcyBhbGwgdGhlIGdpdCBmaWxlcyBkaXJlY3RseSBpbiB0aGUKK2FjdHVhbCBjb3JlIEdpdCBmaWxlcy4gU3VjaCBhIHJlcG9zaXRvcnkgdXN1YWxseSBkb2Vzbid0IGV2ZW4gaGF2ZSB0aGUKK2AuZ2l0YCBzdWJkaXJlY3RvcnksIGJ1dCBoYXMgYWxsIHRoZSBHaXQgZmlsZXMgZGlyZWN0bHkgaW4gdGhlCiByZXBvc2l0b3J5LgogCi1UbyBjcmVhdGUgeW91ciBvd24gbG9jYWwgbGl2ZSBjb3B5IG9mIHN1Y2ggYSAicmF3IiBnaXQgcmVwb3NpdG9yeSwgeW91J2QKK1RvIGNyZWF0ZSB5b3VyIG93biBsb2NhbCBsaXZlIGNvcHkgb2Ygc3VjaCBhICJyYXciIEdpdCByZXBvc2l0b3J5LCB5b3UnZAogZmlyc3QgY3JlYXRlIHlvdXIgb3duIHN1YmRpcmVjdG9yeSBmb3IgdGhlIHByb2plY3QsIGFuZCB0aGVuIGNvcHkgdGhlCiByYXcgcmVwb3NpdG9yeSBjb250ZW50cyBpbnRvIHRoZSBgLmdpdGAgZGlyZWN0b3J5LiBGb3IgZXhhbXBsZSwgdG8KLWNyZWF0ZSB5b3VyIG93biBjb3B5IG9mIHRoZSBnaXQgcmVwb3NpdG9yeSwgeW91J2QgZG8gdGhlIGZvbGxvd2luZworY3JlYXRlIHlvdXIgb3duIGNvcHkgb2YgdGhlIEdpdCByZXBvc2l0b3J5LCB5b3UnZCBkbyB0aGUgZm9sbG93aW5nCiAKIC0tLS0tLS0tLS0tLS0tLS0KICQgbWtkaXIgbXktZ2l0CkBAIC03MjUsNyArNzI1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0KIAogdG8gcG9wdWxhdGUgdGhlIGluZGV4LiBIb3dldmVyLCBub3cgeW91IGhhdmUgcG9wdWxhdGVkIHRoZSBpbmRleCwgYW5kCi15b3UgaGF2ZSBhbGwgdGhlIGdpdCBpbnRlcm5hbCBmaWxlcywgYnV0IHlvdSB3aWxsIG5vdGljZSB0aGF0IHlvdSBkb24ndAoreW91IGhhdmUgYWxsIHRoZSBHaXQgaW50ZXJuYWwgZmlsZXMsIGJ1dCB5b3Ugd2lsbCBub3RpY2UgdGhhdCB5b3UgZG9uJ3QKIGFjdHVhbGx5IGhhdmUgYW55IG9mIHRoZSB3b3JraW5nIHRyZWUgZmlsZXMgdG8gd29yayBvbi4gVG8gZ2V0CiB0aG9zZSwgeW91J2QgY2hlY2sgdGhlbSBvdXQgd2l0aAogCkBAIC03NTcsMTMgKzc1NywxMyBAQAogQ3JlYXRpbmcgYSBuZXcgYnJhbmNoCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQnJhbmNoZXMgaW4gZ2l0IGFyZSByZWFsbHkgbm90aGluZyBtb3JlIHRoYW4gcG9pbnRlcnMgaW50byB0aGUgZ2l0CitCcmFuY2hlcyBpbiBHaXQgYXJlIHJlYWxseSBub3RoaW5nIG1vcmUgdGhhbiBwb2ludGVycyBpbnRvIHRoZSBHaXQKIG9iamVjdCBkYXRhYmFzZSBmcm9tIHdpdGhpbiB0aGUgYC5naXQvcmVmcy9gIHN1YmRpcmVjdG9yeSwgYW5kIGFzIHdlCiBhbHJlYWR5IGRpc2N1c3NlZCwgdGhlIGBIRUFEYCBicmFuY2ggaXMgbm90aGluZyBidXQgYSBzeW1saW5rIHRvIG9uZSBvZgogdGhlc2Ugb2JqZWN0IHBvaW50ZXJzLgogCiBZb3UgY2FuIGF0IGFueSB0aW1lIGNyZWF0ZSBhIG5ldyBicmFuY2ggYnkganVzdCBwaWNraW5nIGFuIGFyYml0cmFyeQotcG9pbnQgaW4gdGhlIHByb2plY3QgaGlzdG9yeSwgYW5kIGp1c3Qgd3JpdGluZyB0aGUgU0hBMSBuYW1lIG9mIHRoYXQKK3BvaW50IGluIHRoZSBwcm9qZWN0IGhpc3RvcnksIGFuZCBqdXN0IHdyaXRpbmcgdGhlIFNIQS0xIG5hbWUgb2YgdGhhdAogb2JqZWN0IGludG8gYSBmaWxlIHVuZGVyIGAuZ2l0L3JlZnMvaGVhZHMvYC4gWW91IGNhbiB1c2UgYW55IGZpbGVuYW1lIHlvdQogd2FudCAoYW5kIGluZGVlZCwgc3ViZGlyZWN0b3JpZXMpLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCB0aGUKICJub3JtYWwiIGJyYW5jaCBpcyBjYWxsZWQgYG1hc3RlcmAuIFRoYXQncyBqdXN0IGEgY29udmVudGlvbiwgdGhvdWdoLApAQCAtODQ5LDcgKzg0OSw3IEBACiBIZXJlLCB3ZSBqdXN0IGFkZGVkIGFub3RoZXIgbGluZSB0byBgaGVsbG9gLCBhbmQgd2UgdXNlZCBhIHNob3J0aGFuZCBmb3IKIGRvaW5nIGJvdGggYGdpdCB1cGRhdGUtaW5kZXggaGVsbG9gIGFuZCBgZ2l0IGNvbW1pdGAgYnkganVzdCBnaXZpbmcgdGhlCiBmaWxlbmFtZSBkaXJlY3RseSB0byBgZ2l0IGNvbW1pdGAsIHdpdGggYW4gYC1pYCBmbGFnIChpdCB0ZWxscwotZ2l0IHRvICdpbmNsdWRlJyB0aGF0IGZpbGUgaW4gYWRkaXRpb24gdG8gd2hhdCB5b3UgaGF2ZSBkb25lIHRvCitHaXQgdG8gJ2luY2x1ZGUnIHRoYXQgZmlsZSBpbiBhZGRpdGlvbiB0byB3aGF0IHlvdSBoYXZlIGRvbmUgdG8KIHRoZSBpbmRleCBmaWxlIHNvIGZhciB3aGVuIG1ha2luZyB0aGUgY29tbWl0KS4gIFRoZSBgLW1gIGZsYWcgaXMgdG8gZ2l2ZSB0aGUKIGNvbW1pdCBsb2cgbWVzc2FnZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCiAKQEAgLTkwMCw3ICs5MDAsNyBAQAogdGhlIG1lcmdlIGNhbiBiZSByZXNvbHZlZCBhdXRvbWF0aWNhbGx5LgogCiBOb3csIGluIHRoaXMgY2FzZSB3ZSd2ZSBpbnRlbnRpb25hbGx5IGNyZWF0ZWQgYSBzaXR1YXRpb24gd2hlcmUgdGhlCi1tZXJnZSB3aWxsIG5lZWQgdG8gYmUgZml4ZWQgdXAgYnkgaGFuZCwgdGhvdWdoLCBzbyBnaXQgd2lsbCBkbyBhcyBtdWNoCittZXJnZSB3aWxsIG5lZWQgdG8gYmUgZml4ZWQgdXAgYnkgaGFuZCwgdGhvdWdoLCBzbyBHaXQgd2lsbCBkbyBhcyBtdWNoCiBvZiBpdCBhcyBpdCBjYW4gYXV0b21hdGljYWxseSAod2hpY2ggaW4gdGhpcyBjYXNlIGlzIGp1c3QgbWVyZ2UgdGhlIGBleGFtcGxlYAogZmlsZSwgd2hpY2ggaGFkIG5vIGRpZmZlcmVuY2VzIGluIHRoZSBgbXlicmFuY2hgIGJyYW5jaCksIGFuZCBzYXk6CiAKQEAgLTkzOSw3ICs5MzksNyBAQAogaGlzdG9yeSBsb29rcyBsaWtlLiBOb3RpY2UgdGhhdCBgbXlicmFuY2hgIHN0aWxsIGV4aXN0cywgYW5kIHlvdSBjYW4KIHN3aXRjaCB0byBpdCwgYW5kIGNvbnRpbnVlIHRvIHdvcmsgd2l0aCBpdCBpZiB5b3Ugd2FudCB0by4gVGhlCiBgbXlicmFuY2hgIGJyYW5jaCB3aWxsIG5vdCBjb250YWluIHRoZSBtZXJnZSwgYnV0IG5leHQgdGltZSB5b3UgbWVyZ2UgaXQKLWZyb20gdGhlIGBtYXN0ZXJgIGJyYW5jaCwgZ2l0IHdpbGwga25vdyBob3cgeW91IG1lcmdlZCBpdCwgc28geW91J2xsIG5vdAorZnJvbSB0aGUgYG1hc3RlcmAgYnJhbmNoLCBHaXQgd2lsbCBrbm93IGhvdyB5b3UgbWVyZ2VkIGl0LCBzbyB5b3UnbGwgbm90CiBoYXZlIHRvIGRvIF90aGF0XyBtZXJnZSBhZ2Fpbi4KIAogQW5vdGhlciB1c2VmdWwgdG9vbCwgZXNwZWNpYWxseSBpZiB5b3UgZG8gbm90IGFsd2F5cyB3b3JrIGluIFgtV2luZG93CkBAIC05NTYsMTIgKzk1NiwxMSBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFRoZSBmaXJzdCB0d28gbGluZXMgaW5kaWNhdGUgdGhhdCBpdCBpcyBzaG93aW5nIHRoZSB0d28gYnJhbmNoZXMKLWFuZCB0aGUgZmlyc3QgbGluZSBvZiB0aGUgY29tbWl0IGxvZyBtZXNzYWdlIGZyb20gdGhlaXIKLXRvcC1vZi10aGUtdHJlZSBjb21taXRzLCB5b3UgYXJlIGN1cnJlbnRseSBvbiBgbWFzdGVyYCBicmFuY2gKLShub3RpY2UgdGhlIGFzdGVyaXNrIGAqYCBjaGFyYWN0ZXIpLCBhbmQgdGhlIGZpcnN0IGNvbHVtbiBmb3IKLXRoZSBsYXRlciBvdXRwdXQgbGluZXMgaXMgdXNlZCB0byBzaG93IGNvbW1pdHMgY29udGFpbmVkIGluIHRoZQord2l0aCB0aGUgdGl0bGVzIG9mIHRoZWlyIHRvcC1vZi10aGUtdHJlZSBjb21taXRzLCB5b3UgYXJlIGN1cnJlbnRseSBvbgorYG1hc3RlcmAgYnJhbmNoIChub3RpY2UgdGhlIGFzdGVyaXNrIGAqYCBjaGFyYWN0ZXIpLCBhbmQgdGhlIGZpcnN0Citjb2x1bW4gZm9yIHRoZSBsYXRlciBvdXRwdXQgbGluZXMgaXMgdXNlZCB0byBzaG93IGNvbW1pdHMgY29udGFpbmVkIGluIHRoZQogYG1hc3RlcmAgYnJhbmNoLCBhbmQgdGhlIHNlY29uZCBjb2x1bW4gZm9yIHRoZSBgbXlicmFuY2hgCi1icmFuY2guIFRocmVlIGNvbW1pdHMgYXJlIHNob3duIGFsb25nIHdpdGggdGhlaXIgbG9nIG1lc3NhZ2VzLgorYnJhbmNoLiBUaHJlZSBjb21taXRzIGFyZSBzaG93biBhbG9uZyB3aXRoIHRoZWlyIHRpdGxlcy4KIEFsbCBvZiB0aGVtIGhhdmUgbm9uIGJsYW5rIGNoYXJhY3RlcnMgaW4gdGhlIGZpcnN0IGNvbHVtbiAoYCpgCiBzaG93cyBhbiBvcmRpbmFyeSBjb21taXQgb24gdGhlIGN1cnJlbnQgYnJhbmNoLCBgLWAgaXMgYSBtZXJnZSBjb21taXQpLCB3aGljaAogbWVhbnMgdGhleSBhcmUgbm93IHBhcnQgb2YgdGhlIGBtYXN0ZXJgIGJyYW5jaC4gT25seSB0aGUgIlNvbWUKQEAgLTEwMjksNyArMTAyOCw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSXQncyB1c3VhbGx5IG11Y2ggbW9yZSBjb21tb24gdGhhdCB5b3UgbWVyZ2Ugd2l0aCBzb21lYm9keSBlbHNlIHRoYW4KLW1lcmdpbmcgd2l0aCB5b3VyIG93biBicmFuY2hlcywgc28gaXQncyB3b3J0aCBwb2ludGluZyBvdXQgdGhhdCBnaXQKK21lcmdpbmcgd2l0aCB5b3VyIG93biBicmFuY2hlcywgc28gaXQncyB3b3J0aCBwb2ludGluZyBvdXQgdGhhdCBHaXQKIG1ha2VzIHRoYXQgdmVyeSBlYXN5IHRvbywgYW5kIGluIGZhY3QsIGl0J3Mgbm90IHRoYXQgZGlmZmVyZW50IGZyb20KIGRvaW5nIGEgJ2dpdCBtZXJnZScuIEluIGZhY3QsIGEgcmVtb3RlIG1lcmdlIGVuZHMgdXAgYmVpbmcgbm90aGluZwogbW9yZSB0aGFuICJmZXRjaCB0aGUgd29yayBmcm9tIGEgcmVtb3RlIHJlcG9zaXRvcnkgaW50byBhIHRlbXBvcmFyeSB0YWciCkBAIC0xMDY5LDcgKzEwNjgsNyBAQAogcmVtb3RlIG1hY2hpbmUuICBJdCBmaW5kcyBvdXQgdGhlIHNldCBvZiBvYmplY3RzIHRoZSBvdGhlciBzaWRlCiBsYWNrcyBieSBleGNoYW5naW5nIHRoZSBoZWFkIGNvbW1pdHMgYm90aCBlbmRzIGhhdmUgYW5kCiB0cmFuc2ZlcnMgKGNsb3NlIHRvKSBtaW5pbXVtIHNldCBvZiBvYmplY3RzLiAgSXQgaXMgYnkgZmFyIHRoZQotbW9zdCBlZmZpY2llbnQgd2F5IHRvIGV4Y2hhbmdlIGdpdCBvYmplY3RzIGJldHdlZW4gcmVwb3NpdG9yaWVzLgorbW9zdCBlZmZpY2llbnQgd2F5IHRvIGV4Y2hhbmdlIEdpdCBvYmplY3RzIGJldHdlZW4gcmVwb3NpdG9yaWVzLgogCiBMb2NhbCBkaXJlY3Rvcnk6OgogCWAvcGF0aC90by9yZXBvLmdpdC9gCkBAIC0xMDc4LDcgKzEwNzcsNyBAQAogYm90aCBlbmRzIG9uIHRoZSBsb2NhbCBtYWNoaW5lIGluc3RlYWQgb2YgcnVubmluZyBvdGhlciBlbmQgb24KIHRoZSByZW1vdGUgbWFjaGluZSB2aWEgJ3NzaCcuCiAKLWdpdCBOYXRpdmU6OgorR2l0IE5hdGl2ZTo6CiAJYGdpdDovL3JlbW90ZS5tYWNoaW5lL3BhdGgvdG8vcmVwby5naXQvYAogKwogVGhpcyB0cmFuc3BvcnQgd2FzIGRlc2lnbmVkIGZvciBhbm9ueW1vdXMgZG93bmxvYWRpbmcuICBMaWtlIFNTSApAQCAtMTEwMCw4ICsxMDk5LDggQEAKIHNvbWV0aW1lcyBhbHNvIGNhbGxlZCAnY29tbWl0IHdhbGtlcnMnLgogKwogVGhlICdjb21taXQgd2Fsa2VycycgYXJlIHNvbWV0aW1lcyBhbHNvIGNhbGxlZCAnZHVtYgotdHJhbnNwb3J0cycsIGJlY2F1c2UgdGhleSBkbyBub3QgcmVxdWlyZSBhbnkgZ2l0IGF3YXJlIHNtYXJ0Ci1zZXJ2ZXIgbGlrZSBnaXQgTmF0aXZlIHRyYW5zcG9ydCBkb2VzLiAgQW55IHN0b2NrIEhUVFAgc2VydmVyCit0cmFuc3BvcnRzJywgYmVjYXVzZSB0aGV5IGRvIG5vdCByZXF1aXJlIGFueSBHaXQgYXdhcmUgc21hcnQKK3NlcnZlciBsaWtlIEdpdCBOYXRpdmUgdHJhbnNwb3J0IGRvZXMuICBBbnkgc3RvY2sgSFRUUCBzZXJ2ZXIKIHRoYXQgZG9lcyBub3QgZXZlbiBzdXBwb3J0IGRpcmVjdG9yeSBpbmRleCB3b3VsZCBzdWZmaWNlLiAgQnV0CiB5b3UgbXVzdCBwcmVwYXJlIHlvdXIgcmVwb3NpdG9yeSB3aXRoICdnaXQgdXBkYXRlLXNlcnZlci1pbmZvJwogdG8gaGVscCBkdW1iIHRyYW5zcG9ydCBkb3dubG9hZGVycy4KQEAgLTEyMzQsNyArMTIzMyw3IEBACiBldGMuKS4gIEFmdGVyIHJlYWRpbmcgdGhyZWUgdHJlZXMgaW50byB0aHJlZSBzdGFnZXMsIHRoZSBwYXRocwogdGhhdCBhcmUgdGhlIHNhbWUgaW4gYWxsIHRocmVlIHN0YWdlcyBhcmUgJ2NvbGxhcHNlZCcgaW50byBzdGFnZQogMC4gIEFsc28gcGF0aHMgdGhhdCBhcmUgdGhlIHNhbWUgaW4gdHdvIG9mIHRocmVlIHN0YWdlcyBhcmUKLWNvbGxhcHNlZCBpbnRvIHN0YWdlIDAsIHRha2luZyB0aGUgU0hBMSBmcm9tIGVpdGhlciBzdGFnZSAyIG9yCitjb2xsYXBzZWQgaW50byBzdGFnZSAwLCB0YWtpbmcgdGhlIFNIQS0xIGZyb20gZWl0aGVyIHN0YWdlIDIgb3IKIHN0YWdlIDMsIHdoaWNoZXZlciBpcyBkaWZmZXJlbnQgZnJvbSBzdGFnZSAxIChpLmUuIG9ubHkgb25lIHNpZGUKIGNoYW5nZWQgZnJvbSB0aGUgY29tbW9uIGFuY2VzdG9yKS4KIApAQCAtMTMyMiw3ICsxMzIxLDcgQEAKIAogW05PVEVdCiBUaGlzIHB1YmxpYyByZXBvc2l0b3J5IGNvdWxkIGZ1cnRoZXIgYmUgbWlycm9yZWQsIGFuZCB0aGF0IGlzCi1ob3cgZ2l0IHJlcG9zaXRvcmllcyBhdCBga2VybmVsLm9yZ2AgYXJlIG1hbmFnZWQuCitob3cgR2l0IHJlcG9zaXRvcmllcyBhdCBga2VybmVsLm9yZ2AgYXJlIG1hbmFnZWQuCiAKIFB1Ymxpc2hpbmcgdGhlIGNoYW5nZXMgZnJvbSB5b3VyIGxvY2FsIChwcml2YXRlKSByZXBvc2l0b3J5IHRvCiB5b3VyIHJlbW90ZSAocHVibGljKSByZXBvc2l0b3J5IHJlcXVpcmVzIGEgd3JpdGUgcHJpdmlsZWdlIG9uCkBAIC0xMzQxLDcgKzEzNDAsNyBAQAogb24gdGhlIHJlbW90ZSBtYWNoaW5lLiBUaGUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSB0d28gb3ZlcgogdGhlIG5ldHdvcmsgaW50ZXJuYWxseSB1c2VzIGFuIFNTSCBjb25uZWN0aW9uLgogCi1Zb3VyIHByaXZhdGUgcmVwb3NpdG9yeSdzIGdpdCBkaXJlY3RvcnkgaXMgdXN1YWxseSBgLmdpdGAsIGJ1dAorWW91ciBwcml2YXRlIHJlcG9zaXRvcnkncyBHaXQgZGlyZWN0b3J5IGlzIHVzdWFsbHkgYC5naXRgLCBidXQKIHlvdXIgcHVibGljIHJlcG9zaXRvcnkgaXMgb2Z0ZW4gbmFtZWQgYWZ0ZXIgdGhlIHByb2plY3QgbmFtZSwKIGkuZS4gYDxwcm9qZWN0Pi5naXRgLiBMZXQncyBjcmVhdGUgc3VjaCBhIHB1YmxpYyByZXBvc2l0b3J5IGZvcgogcHJvamVjdCBgbXktZ2l0YC4gQWZ0ZXIgbG9nZ2luZyBpbnRvIHRoZSByZW1vdGUgbWFjaGluZSwgY3JlYXRlCkBAIC0xMzUxLDcgKzEzNTAsNyBAQAogJCBta2RpciBteS1naXQuZ2l0CiAtLS0tLS0tLS0tLS0KIAotVGhlbiwgbWFrZSB0aGF0IGRpcmVjdG9yeSBpbnRvIGEgZ2l0IHJlcG9zaXRvcnkgYnkgcnVubmluZworVGhlbiwgbWFrZSB0aGF0IGRpcmVjdG9yeSBpbnRvIGEgR2l0IHJlcG9zaXRvcnkgYnkgcnVubmluZwogJ2dpdCBpbml0JywgYnV0IHRoaXMgdGltZSwgc2luY2UgaXRzIG5hbWUgaXMgbm90IHRoZSB1c3VhbAogYC5naXRgLCB3ZSBkbyB0aGluZ3Mgc2xpZ2h0bHkgZGlmZmVyZW50bHk6CiAKQEAgLTEzOTAsNyArMTM4OSw3IEBACiBicmFuY2ggaGVhZCAoaS5lLiBgbWFzdGVyYCBpbiB0aGlzIGNhc2UpIGFuZCBvYmplY3RzIHJlYWNoYWJsZQogZnJvbSB0aGVtIGluIHlvdXIgY3VycmVudCByZXBvc2l0b3J5LgogCi1BcyBhIHJlYWwgZXhhbXBsZSwgdGhpcyBpcyBob3cgSSB1cGRhdGUgbXkgcHVibGljIGdpdAorQXMgYSByZWFsIGV4YW1wbGUsIHRoaXMgaXMgaG93IEkgdXBkYXRlIG15IHB1YmxpYyBHaXQKIHJlcG9zaXRvcnkuIEtlcm5lbC5vcmcgbWlycm9yIG5ldHdvcmsgdGFrZXMgY2FyZSBvZiB0aGUKIHByb3BhZ2F0aW9uIHRvIG90aGVyIHB1YmxpY2x5IHZpc2libGUgbWFjaGluZXM6CiAKQEAgLTE0MDMsOSArMTQwMiw5IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBFYXJsaWVyLCB3ZSBzYXcgdGhhdCBvbmUgZmlsZSB1bmRlciBgLmdpdC9vYmplY3RzLz8/L2AgZGlyZWN0b3J5Ci1pcyBzdG9yZWQgZm9yIGVhY2ggZ2l0IG9iamVjdCB5b3UgY3JlYXRlLiBUaGlzIHJlcHJlc2VudGF0aW9uCitpcyBzdG9yZWQgZm9yIGVhY2ggR2l0IG9iamVjdCB5b3UgY3JlYXRlLiBUaGlzIHJlcHJlc2VudGF0aW9uCiBpcyBlZmZpY2llbnQgdG8gY3JlYXRlIGF0b21pY2FsbHkgYW5kIHNhZmVseSwgYnV0Ci1ub3Qgc28gY29udmVuaWVudCB0byB0cmFuc3BvcnQgb3ZlciB0aGUgbmV0d29yay4gU2luY2UgZ2l0IG9iamVjdHMgYXJlCitub3Qgc28gY29udmVuaWVudCB0byB0cmFuc3BvcnQgb3ZlciB0aGUgbmV0d29yay4gU2luY2UgR2l0IG9iamVjdHMgYXJlCiBpbW11dGFibGUgb25jZSB0aGV5IGFyZSBjcmVhdGVkLCB0aGVyZSBpcyBhIHdheSB0byBvcHRpbWl6ZSB0aGUKIHN0b3JhZ2UgYnkgInBhY2tpbmcgdGhlbSB0b2dldGhlciIuIFRoZSBjb21tYW5kCiAKQEAgLTE0NzMsMTQgKzE0NzIsMTQgQEAKIFdvcmtpbmcgd2l0aCBPdGhlcnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQWx0aG91Z2ggZ2l0IGlzIGEgdHJ1bHkgZGlzdHJpYnV0ZWQgc3lzdGVtLCBpdCBpcyBvZnRlbgorQWx0aG91Z2ggR2l0IGlzIGEgdHJ1bHkgZGlzdHJpYnV0ZWQgc3lzdGVtLCBpdCBpcyBvZnRlbgogY29udmVuaWVudCB0byBvcmdhbml6ZSB5b3VyIHByb2plY3Qgd2l0aCBhbiBpbmZvcm1hbCBoaWVyYXJjaHkKIG9mIGRldmVsb3BlcnMuIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudCBpcyBydW4gdGhpcyB3YXkuIFRoZXJlCiBpcyBhIG5pY2UgaWxsdXN0cmF0aW9uIChwYWdlIDE3LCAiTWVyZ2VzIHRvIE1haW5saW5lIikgaW4KIGxpbms6aHR0cDovL3d3dy54ZW5vdGltZS5uZXQvbGludXgvbWVudG9yL2xpbnV4LW1lbnRvcmluZy0yMDA2LnBkZltSYW5keSBEdW5sYXAncyBwcmVzZW50YXRpb25dLgogCiBJdCBzaG91bGQgYmUgc3RyZXNzZWQgdGhhdCB0aGlzIGhpZXJhcmNoeSBpcyBwdXJlbHkgKmluZm9ybWFsKi4KLVRoZXJlIGlzIG5vdGhpbmcgZnVuZGFtZW50YWwgaW4gZ2l0IHRoYXQgZW5mb3JjZXMgdGhlICJjaGFpbiBvZgorVGhlcmUgaXMgbm90aGluZyBmdW5kYW1lbnRhbCBpbiBHaXQgdGhhdCBlbmZvcmNlcyB0aGUgImNoYWluIG9mCiBwYXRjaCBmbG93IiB0aGlzIGhpZXJhcmNoeSBpbXBsaWVzLiBZb3UgZG8gbm90IGhhdmUgdG8gcHVsbAogZnJvbSBvbmx5IG9uZSByZW1vdGUgcmVwb3NpdG9yeS4KIApAQCAtMTU5Myw3ICsxNTkyLDcgQEAKIAogSWYgeW91IGFyZSBjb21pbmcgZnJvbSBDVlMgYmFja2dyb3VuZCwgdGhlIHN0eWxlIG9mIGNvb3BlcmF0aW9uCiBzdWdnZXN0ZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24gbWF5IGJlIG5ldyB0byB5b3UuIFlvdSBkbyBub3QKLWhhdmUgdG8gd29ycnkuIGdpdCBzdXBwb3J0cyAic2hhcmVkIHB1YmxpYyByZXBvc2l0b3J5IiBzdHlsZSBvZgoraGF2ZSB0byB3b3JyeS4gR2l0IHN1cHBvcnRzICJzaGFyZWQgcHVibGljIHJlcG9zaXRvcnkiIHN0eWxlIG9mCiBjb29wZXJhdGlvbiB5b3UgYXJlIHByb2JhYmx5IG1vcmUgZmFtaWxpYXIgd2l0aCBhcyB3ZWxsLgogCiBTZWUgbGlua2dpdDpnaXRjdnMtbWlncmF0aW9uWzddIGZvciB0aGUgZGV0YWlscy4KQEAgLTE2MDMsNyArMTYwMiw3IEBACiAKIEl0IGlzIGxpa2VseSB0aGF0IHlvdSB3aWxsIGJlIHdvcmtpbmcgb24gbW9yZSB0aGFuIG9uZSB0aGluZyBhdAogYSB0aW1lLiAgSXQgaXMgZWFzeSB0byBtYW5hZ2UgdGhvc2UgbW9yZS1vci1sZXNzIGluZGVwZW5kZW50IHRhc2tzCi11c2luZyBicmFuY2hlcyB3aXRoIGdpdC4KK3VzaW5nIGJyYW5jaGVzIHdpdGggR2l0LgogCiBXZSBoYXZlIGFscmVhZHkgc2VlbiBob3cgYnJhbmNoZXMgd29yayBwcmV2aW91c2x5LAogd2l0aCAiZnVuIGFuZCB3b3JrIiBleGFtcGxlIHVzaW5nIHR3byBicmFuY2hlcy4gIFRoZSBpZGVhIGlzIHRoZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRjcmVkZW50aWFscy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdGNyZWRlbnRpYWxzLnR4dAppbmRleCA3ZGZmZmMwLi40NzU3NmJlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdGNyZWRlbnRpYWxzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdGNyZWRlbnRpYWxzLnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0Y3JlZGVudGlhbHMgLSBwcm92aWRpbmcgdXNlcm5hbWVzIGFuZCBwYXNzd29yZHMgdG8gZ2l0CitnaXRjcmVkZW50aWFscyAtIHByb3ZpZGluZyB1c2VybmFtZXMgYW5kIHBhc3N3b3JkcyB0byBHaXQKIAogU1lOT1BTSVMKIC0tLS0tLS0tCkBAIC0xOCwxMyArMTgsMTMgQEAKIEdpdCB3aWxsIHNvbWV0aW1lcyBuZWVkIGNyZWRlbnRpYWxzIGZyb20gdGhlIHVzZXIgaW4gb3JkZXIgdG8gcGVyZm9ybQogb3BlcmF0aW9uczsgZm9yIGV4YW1wbGUsIGl0IG1heSBuZWVkIHRvIGFzayBmb3IgYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQKIGluIG9yZGVyIHRvIGFjY2VzcyBhIHJlbW90ZSByZXBvc2l0b3J5IG92ZXIgSFRUUC4gVGhpcyBtYW51YWwgZGVzY3JpYmVzCi10aGUgbWVjaGFuaXNtcyBnaXQgdXNlcyB0byByZXF1ZXN0IHRoZXNlIGNyZWRlbnRpYWxzLCBhcyB3ZWxsIGFzIHNvbWUKK3RoZSBtZWNoYW5pc21zIEdpdCB1c2VzIHRvIHJlcXVlc3QgdGhlc2UgY3JlZGVudGlhbHMsIGFzIHdlbGwgYXMgc29tZQogZmVhdHVyZXMgdG8gYXZvaWQgaW5wdXR0aW5nIHRoZXNlIGNyZWRlbnRpYWxzIHJlcGVhdGVkbHkuCiAKIFJFUVVFU1RJTkcgQ1JFREVOVElBTFMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2l0aG91dCBhbnkgY3JlZGVudGlhbCBoZWxwZXJzIGRlZmluZWQsIGdpdCB3aWxsIHRyeSB0aGUgZm9sbG93aW5nCitXaXRob3V0IGFueSBjcmVkZW50aWFsIGhlbHBlcnMgZGVmaW5lZCwgR2l0IHdpbGwgdHJ5IHRoZSBmb2xsb3dpbmcKIHN0cmF0ZWdpZXMgdG8gYXNrIHRoZSB1c2VyIGZvciB1c2VybmFtZXMgYW5kIHBhc3N3b3JkczoKIAogMS4gSWYgdGhlIGBHSVRfQVNLUEFTU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0LCB0aGUgcHJvZ3JhbQpAQCAtNTksNyArNTksNyBAQAogCXVzZXJuYW1lID0gbWUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1DcmVkZW50aWFsIGhlbHBlcnMsIG9uIHRoZSBvdGhlciBoYW5kLCBhcmUgZXh0ZXJuYWwgcHJvZ3JhbXMgZnJvbSB3aGljaCBnaXQgY2FuCitDcmVkZW50aWFsIGhlbHBlcnMsIG9uIHRoZSBvdGhlciBoYW5kLCBhcmUgZXh0ZXJuYWwgcHJvZ3JhbXMgZnJvbSB3aGljaCBHaXQgY2FuCiByZXF1ZXN0IGJvdGggdXNlcm5hbWVzIGFuZCBwYXNzd29yZHM7IHRoZXkgdHlwaWNhbGx5IGludGVyZmFjZSB3aXRoIHNlY3VyZQogc3RvcmFnZSBwcm92aWRlZCBieSB0aGUgT1Mgb3Igb3RoZXIgcHJvZ3JhbXMuCiAKQEAgLTc5LDcgKzc5LDcgQEAKIFlvdSBtYXkgYWxzbyBoYXZlIHRoaXJkLXBhcnR5IGhlbHBlcnMgaW5zdGFsbGVkOyBzZWFyY2ggZm9yCiBgY3JlZGVudGlhbC0qYCBpbiB0aGUgb3V0cHV0IG9mIGBnaXQgaGVscCAtYWAsIGFuZCBjb25zdWx0IHRoZQogZG9jdW1lbnRhdGlvbiBvZiBpbmRpdmlkdWFsIGhlbHBlcnMuICBPbmNlIHlvdSBoYXZlIHNlbGVjdGVkIGEgaGVscGVyLAoteW91IGNhbiB0ZWxsIGdpdCB0byB1c2UgaXQgYnkgcHV0dGluZyBpdHMgbmFtZSBpbnRvIHRoZQoreW91IGNhbiB0ZWxsIEdpdCB0byB1c2UgaXQgYnkgcHV0dGluZyBpdHMgbmFtZSBpbnRvIHRoZQogY3JlZGVudGlhbC5oZWxwZXIgdmFyaWFibGUuCiAKIDEuIEZpbmQgYSBoZWxwZXIuCkBAIC05NSw3ICs5NSw3IEBACiAkIGdpdCBoZWxwIGNyZWRlbnRpYWwtZm9vCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLTMuIFRlbGwgZ2l0IHRvIHVzZSBpdC4KKzMuIFRlbGwgR2l0IHRvIHVzZSBpdC4KICsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IGNvbmZpZyAtLWdsb2JhbCBjcmVkZW50aWFsLmhlbHBlciBmb28KQEAgLTEwMyw3ICsxMDMsNyBAQAogCiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBgY3JlZGVudGlhbC5oZWxwZXJgIGNvbmZpZ3VyYXRpb24KIHZhcmlhYmxlLCBlYWNoIGhlbHBlciB3aWxsIGJlIHRyaWVkIGluIHR1cm4sIGFuZCBtYXkgcHJvdmlkZSBhIHVzZXJuYW1lLAotcGFzc3dvcmQsIG9yIG5vdGhpbmcuIE9uY2UgZ2l0IGhhcyBhY3F1aXJlZCBib3RoIGEgdXNlcm5hbWUgYW5kIGEKK3Bhc3N3b3JkLCBvciBub3RoaW5nLiBPbmNlIEdpdCBoYXMgYWNxdWlyZWQgYm90aCBhIHVzZXJuYW1lIGFuZCBhCiBwYXNzd29yZCwgbm8gbW9yZSBoZWxwZXJzIHdpbGwgYmUgdHJpZWQuCiAKIApAQCAtMTE0LDcgKzExNCw3IEBACiBpcyB1c2VkIHRvIGxvb2sgdXAgY29udGV4dC1zcGVjaWZpYyBjb25maWd1cmF0aW9uLCBhbmQgaXMgcGFzc2VkIHRvIGFueQogaGVscGVycywgd2hpY2ggbWF5IHVzZSBpdCBhcyBhbiBpbmRleCBpbnRvIHNlY3VyZSBzdG9yYWdlLgogCi1Gb3IgaW5zdGFuY2UsIGltYWdpbmUgd2UgYXJlIGFjY2Vzc2luZyBgaHR0cHM6Ly9leGFtcGxlLmNvbS9mb28uZ2l0YC4gV2hlbiBnaXQKK0ZvciBpbnN0YW5jZSwgaW1hZ2luZSB3ZSBhcmUgYWNjZXNzaW5nIGBodHRwczovL2V4YW1wbGUuY29tL2Zvby5naXRgLiBXaGVuIEdpdAogbG9va3MgaW50byBhIGNvbmZpZyBmaWxlIHRvIHNlZSBpZiBhIHNlY3Rpb24gbWF0Y2hlcyB0aGlzIGNvbnRleHQsIGl0IHdpbGwKIGNvbnNpZGVyIHRoZSB0d28gYSBtYXRjaCBpZiB0aGUgY29udGV4dCBpcyBhIG1vcmUtc3BlY2lmaWMgc3Vic2V0IG9mIHRoZQogcGF0dGVybiBpbiB0aGUgY29uZmlnIGZpbGUuIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSB0aGlzIGluIHlvdXIgY29uZmlnIGZpbGU6CkBAIC0xMzMsMTAgKzEzMywxMCBAQAogCXVzZXJuYW1lID0gZm9vCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1iZWNhdXNlIHRoZSBob3N0bmFtZXMgZGlmZmVyLiBOb3Igd291bGQgaXQgbWF0Y2ggYGZvby5leGFtcGxlLmNvbWA7IGdpdAorYmVjYXVzZSB0aGUgaG9zdG5hbWVzIGRpZmZlci4gTm9yIHdvdWxkIGl0IG1hdGNoIGBmb28uZXhhbXBsZS5jb21gOyBHaXQKIGNvbXBhcmVzIGhvc3RuYW1lcyBleGFjdGx5LCB3aXRob3V0IGNvbnNpZGVyaW5nIHdoZXRoZXIgdHdvIGhvc3RzIGFyZSBwYXJ0IG9mCiB0aGUgc2FtZSBkb21haW4uIExpa2V3aXNlLCBhIGNvbmZpZyBlbnRyeSBmb3IgYGh0dHA6Ly9leGFtcGxlLmNvbWAgd291bGQgbm90Ci1tYXRjaDogZ2l0IGNvbXBhcmVzIHRoZSBwcm90b2NvbHMgZXhhY3RseS4KK21hdGNoOiBHaXQgY29tcGFyZXMgdGhlIHByb3RvY29scyBleGFjdGx5LgogCiAKIENPTkZJR1VSQVRJT04gT1BUSU9OUwpAQCAtMTY0LDcgKzE2NCw3IEBACiAKIHVzZUh0dHBQYXRoOjoKIAotCUJ5IGRlZmF1bHQsIGdpdCBkb2VzIG5vdCBjb25zaWRlciB0aGUgInBhdGgiIGNvbXBvbmVudCBvZiBhbiBodHRwIFVSTAorCUJ5IGRlZmF1bHQsIEdpdCBkb2VzIG5vdCBjb25zaWRlciB0aGUgInBhdGgiIGNvbXBvbmVudCBvZiBhbiBodHRwIFVSTAogCXRvIGJlIHdvcnRoIG1hdGNoaW5nIHZpYSBleHRlcm5hbCBoZWxwZXJzLiBUaGlzIG1lYW5zIHRoYXQgYSBjcmVkZW50aWFsCiAJc3RvcmVkIGZvciBgaHR0cHM6Ly9leGFtcGxlLmNvbS9mb28uZ2l0YCB3aWxsIGFsc28gYmUgdXNlZCBmb3IKIAlgaHR0cHM6Ly9leGFtcGxlLmNvbS9iYXIuZ2l0YC4gSWYgeW91IGRvIHdhbnQgdG8gZGlzdGluZ3Vpc2ggdGhlc2UKQEAgLTE3NSw3ICsxNzUsNyBAQAogLS0tLS0tLS0tLS0tLS0KIAogWW91IGNhbiB3cml0ZSB5b3VyIG93biBjdXN0b20gaGVscGVycyB0byBpbnRlcmZhY2Ugd2l0aCBhbnkgc3lzdGVtIGluCi13aGljaCB5b3Uga2VlcCBjcmVkZW50aWFscy4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBnaXQncword2hpY2ggeW91IGtlZXAgY3JlZGVudGlhbHMuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgR2l0J3MKIGxpbms6dGVjaG5pY2FsL2FwaS1jcmVkZW50aWFscy5odG1sW2NyZWRlbnRpYWxzIEFQSV0gZm9yIGRldGFpbHMuCiAKIEdJVApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRjdnMtbWlncmF0aW9uLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0Y3ZzLW1pZ3JhdGlvbi50eHQKaW5kZXggYWViMGNkYy4uNWFiNWIwNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXRjdnMtbWlncmF0aW9uLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdGN2cy1taWdyYXRpb24udHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXRjdnMtbWlncmF0aW9uIC0gZ2l0IGZvciBDVlMgdXNlcnMKK2dpdGN2cy1taWdyYXRpb24gLSBHaXQgZm9yIENWUyB1c2VycwogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTE5LDcgKzE5LDcgQEAKIGRlc2lnbmF0aW5nIGEgc2luZ2xlIHNoYXJlZCByZXBvc2l0b3J5IHdoaWNoIHBlb3BsZSBjYW4gc3luY2hyb25pemUgd2l0aDsKIHRoaXMgZG9jdW1lbnQgZXhwbGFpbnMgaG93IHRvIGRvIHRoYXQuCiAKLVNvbWUgYmFzaWMgZmFtaWxpYXJpdHkgd2l0aCBnaXQgaXMgcmVxdWlyZWQuIEhhdmluZyBnb25lIHRocm91Z2gKK1NvbWUgYmFzaWMgZmFtaWxpYXJpdHkgd2l0aCBHaXQgaXMgcmVxdWlyZWQuIEhhdmluZyBnb25lIHRocm91Z2gKIGxpbmtnaXQ6Z2l0dHV0b3JpYWxbN10gYW5kCiBsaW5rZ2l0OmdpdGdsb3NzYXJ5WzddIHNob3VsZCBiZSBzdWZmaWNpZW50LgogCkBAIC04MSw3ICs4MSw3IEBACiBTZXR0aW5nIFVwIGEgU2hhcmVkIFJlcG9zaXRvcnkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XZSBhc3N1bWUgeW91IGhhdmUgYWxyZWFkeSBjcmVhdGVkIGEgZ2l0IHJlcG9zaXRvcnkgZm9yIHlvdXIgcHJvamVjdCwKK1dlIGFzc3VtZSB5b3UgaGF2ZSBhbHJlYWR5IGNyZWF0ZWQgYSBHaXQgcmVwb3NpdG9yeSBmb3IgeW91ciBwcm9qZWN0LAogcG9zc2libHkgY3JlYXRlZCBmcm9tIHNjcmF0Y2ggb3IgZnJvbSBhIHRhcmJhbGwgKHNlZQogbGlua2dpdDpnaXR0dXRvcmlhbFs3XSksIG9yIGltcG9ydGVkIGZyb20gYW4gYWxyZWFkeSBleGlzdGluZyBDVlMKIHJlcG9zaXRvcnkgKHNlZSB0aGUgbmV4dCBzZWN0aW9uKS4KQEAgLTEwMSw3ICsxMDEsNyBAQAogZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB0byBnaXZlIGFsbCB0aGUgdGVhbSBtZW1iZXJzIHNzaCBhY2Nlc3MgdG8gdGhlCiBtYWNoaW5lIHdoZXJlIHRoZSByZXBvc2l0b3J5IGlzIGhvc3RlZC4gIElmIHlvdSBkb24ndCB3YW50IHRvIGdpdmUgdGhlbSBhCiBmdWxsIHNoZWxsIG9uIHRoZSBtYWNoaW5lLCB0aGVyZSBpcyBhIHJlc3RyaWN0ZWQgc2hlbGwgd2hpY2ggb25seSBhbGxvd3MKLXVzZXJzIHRvIGRvIGdpdCBwdXNoZXMgYW5kIHB1bGxzOyBzZWUgbGlua2dpdDpnaXQtc2hlbGxbMV0uCit1c2VycyB0byBkbyBHaXQgcHVzaGVzIGFuZCBwdWxsczsgc2VlIGxpbmtnaXQ6Z2l0LXNoZWxsWzFdLgogCiBQdXQgYWxsIHRoZSBjb21taXR0ZXJzIGluIHRoZSBzYW1lIGdyb3VwLCBhbmQgbWFrZSB0aGUgcmVwb3NpdG9yeQogd3JpdGFibGUgYnkgdGhhdCBncm91cDoKQEAgLTEyNSw3ICsxMjUsNyBAQAogJCBnaXQgY3ZzaW1wb3J0IC1DIDxkZXN0aW5hdGlvbj4gPG1vZHVsZT4KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBwdXRzIGEgZ2l0IGFyY2hpdmUgb2YgdGhlIG5hbWVkIENWUyBtb2R1bGUgaW4gdGhlIGRpcmVjdG9yeQorVGhpcyBwdXRzIGEgR2l0IGFyY2hpdmUgb2YgdGhlIG5hbWVkIENWUyBtb2R1bGUgaW4gdGhlIGRpcmVjdG9yeQogPGRlc3RpbmF0aW9uPiwgd2hpY2ggd2lsbCBiZSBjcmVhdGVkIGlmIG5lY2Vzc2FyeS4KIAogVGhlIGltcG9ydCBjaGVja3Mgb3V0IGZyb20gQ1ZTIGV2ZXJ5IHJldmlzaW9uIG9mIGV2ZXJ5IGZpbGUuICBSZXBvcnRlZGx5CkBAIC0xMzMsOCArMTMzLDggQEAKIG1lZGl1bS1zaXplZCBwcm9qZWN0IHRoaXMgc2hvdWxkIG5vdCB0YWtlIG1vcmUgdGhhbiBhIGNvdXBsZSBvZiBtaW51dGVzLgogTGFyZ2VyIHByb2plY3RzIG9yIHJlbW90ZSByZXBvc2l0b3JpZXMgbWF5IHRha2UgbG9uZ2VyLgogCi1UaGUgbWFpbiB0cnVuayBpcyBzdG9yZWQgaW4gdGhlIGdpdCBicmFuY2ggbmFtZWQgYG9yaWdpbmAsIGFuZCBhZGRpdGlvbmFsCi1DVlMgYnJhbmNoZXMgYXJlIHN0b3JlZCBpbiBnaXQgYnJhbmNoZXMgd2l0aCB0aGUgc2FtZSBuYW1lcy4gIFRoZSBtb3N0CitUaGUgbWFpbiB0cnVuayBpcyBzdG9yZWQgaW4gdGhlIEdpdCBicmFuY2ggbmFtZWQgYG9yaWdpbmAsIGFuZCBhZGRpdGlvbmFsCitDVlMgYnJhbmNoZXMgYXJlIHN0b3JlZCBpbiBHaXQgYnJhbmNoZXMgd2l0aCB0aGUgc2FtZSBuYW1lcy4gIFRoZSBtb3N0CiByZWNlbnQgdmVyc2lvbiBvZiB0aGUgbWFpbiB0cnVuayBpcyBhbHNvIGxlZnQgY2hlY2tlZCBvdXQgb24gdGhlIGBtYXN0ZXJgCiBicmFuY2gsIHNvIHlvdSBjYW4gc3RhcnQgYWRkaW5nIHlvdXIgb3duIGNoYW5nZXMgcmlnaHQgYXdheS4KIApAQCAtMTYwLDEwICsxNjAsMTAgQEAKIGxpbms6aG93dG8vdXBkYXRlLWhvb2stZXhhbXBsZS50eHRbQ29udHJvbGxpbmcgYWNjZXNzIHRvIGJyYW5jaGVzIHVzaW5nCiB1cGRhdGUgaG9va3NdLgogCi1Qcm92aWRpbmcgQ1ZTIEFjY2VzcyB0byBhIGdpdCBSZXBvc2l0b3J5CitQcm92aWRpbmcgQ1ZTIEFjY2VzcyB0byBhIEdpdCBSZXBvc2l0b3J5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUl0IGlzIGFsc28gcG9zc2libGUgdG8gcHJvdmlkZSB0cnVlIENWUyBhY2Nlc3MgdG8gYSBnaXQgcmVwb3NpdG9yeSwgc28KK0l0IGlzIGFsc28gcG9zc2libGUgdG8gcHJvdmlkZSB0cnVlIENWUyBhY2Nlc3MgdG8gYSBHaXQgcmVwb3NpdG9yeSwgc28KIHRoYXQgZGV2ZWxvcGVycyBjYW4gc3RpbGwgdXNlIENWUzsgc2VlIGxpbmtnaXQ6Z2l0LWN2c3NlcnZlclsxXSBmb3IKIGRldGFpbHMuCiAKQEAgLTE3MSw4ICsxNzEsOCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIENWUyB1c2VycyBhcmUgYWNjdXN0b21lZCB0byBnaXZpbmcgYSBncm91cCBvZiBkZXZlbG9wZXJzIGNvbW1pdCBhY2Nlc3MgdG8KLWEgY29tbW9uIHJlcG9zaXRvcnkuICBBcyB3ZSd2ZSBzZWVuLCB0aGlzIGlzIGFsc28gcG9zc2libGUgd2l0aCBnaXQuCi1Ib3dldmVyLCB0aGUgZGlzdHJpYnV0ZWQgbmF0dXJlIG9mIGdpdCBhbGxvd3Mgb3RoZXIgZGV2ZWxvcG1lbnQgbW9kZWxzLAorYSBjb21tb24gcmVwb3NpdG9yeS4gIEFzIHdlJ3ZlIHNlZW4sIHRoaXMgaXMgYWxzbyBwb3NzaWJsZSB3aXRoIEdpdC4KK0hvd2V2ZXIsIHRoZSBkaXN0cmlidXRlZCBuYXR1cmUgb2YgR2l0IGFsbG93cyBvdGhlciBkZXZlbG9wbWVudCBtb2RlbHMsCiBhbmQgeW91IG1heSB3YW50IHRvIGZpcnN0IGNvbnNpZGVyIHdoZXRoZXIgb25lIG9mIHRoZW0gbWlnaHQgYmUgYSBiZXR0ZXIKIGZpdCBmb3IgeW91ciBwcm9qZWN0LgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdGRpZmZjb3JlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0ZGlmZmNvcmUudHh0CmluZGV4IGRhZjE3ODIuLmM4YjNlNTEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0ZGlmZmNvcmUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0ZGlmZmNvcmUudHh0CkBAIC0xMDgsNyArMTA4LDcgQEAKIEZvciB0aGUgcHVycG9zZSBvZiBicmVha2luZyBhIGZpbGVwYWlyLCBkaWZmY29yZS1icmVhayBleGFtaW5lcwogdGhlIGV4dGVudCBvZiBjaGFuZ2VzIGJldHdlZW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlcyBiZWZvcmUKIGFuZCBhZnRlciBtb2RpZmljYXRpb24gKGkuZS4gdGhlIGNvbnRlbnRzIHRoYXQgaGF2ZSAiYmNkMTIzNC4uLiIKLWFuZCAiMDEyMzQ1Ni4uLiIgYXMgdGhlaXIgU0hBMSBjb250ZW50IElELCBpbiB0aGUgYWJvdmUKK2FuZCAiMDEyMzQ1Ni4uLiIgYXMgdGhlaXIgU0hBLTEgY29udGVudCBJRCwgaW4gdGhlIGFib3ZlCiBleGFtcGxlKS4gIFRoZSBhbW91bnQgb2YgZGVsZXRpb24gb2Ygb3JpZ2luYWwgY29udGVudHMgYW5kCiBpbnNlcnRpb24gb2YgbmV3IG1hdGVyaWFsIGFyZSBhZGRlZCB0b2dldGhlciwgYW5kIGlmIGl0IGV4Y2VlZHMKIHRoZSAiYnJlYWsgc2NvcmUiLCB0aGUgZmlsZXBhaXIgaXMgYnJva2VuIGludG8gdHdvLiAgVGhlIGJyZWFrCkBAIC0yMjIsMjYgKzIyMiwzNSBAQAogZGlmZmNvcmUtcGlja2F4ZTogRm9yIERldGVjdGluZyBBZGRpdGlvbi9EZWxldGlvbiBvZiBTcGVjaWZpZWQgU3RyaW5nCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyB1c2VkIHRvIGZpbmQgZmlsZXBhaXJzIHRoYXQgcmVwcmVzZW50Ci1jaGFuZ2VzIHRoYXQgdG91Y2ggYSBzcGVjaWZpZWQgc3RyaW5nLCBhbmQgaXMgY29udHJvbGxlZCBieSB0aGUKLS1TIG9wdGlvbiBhbmQgdGhlIGAtLXBpY2theGUtYWxsYCBvcHRpb24gdG8gdGhlICdnaXQgZGlmZi0qJwotY29tbWFuZHMuCitUaGlzIHRyYW5zZm9ybWF0aW9uIGxpbWl0cyB0aGUgc2V0IG9mIGZpbGVwYWlycyB0byB0aG9zZSB0aGF0IGNoYW5nZQorc3BlY2lmaWVkIHN0cmluZ3MgYmV0d2VlbiB0aGUgcHJlaW1hZ2UgYW5kIHRoZSBwb3N0aW1hZ2UgaW4gYSBjZXJ0YWluCit3YXkuICAtUzxibG9jayBvZiB0ZXh0PiBhbmQgLUc8cmVndWxhciBleHByZXNzaW9uPiBvcHRpb25zIGFyZSB1c2VkIHRvCitzcGVjaWZ5IGRpZmZlcmVudCB3YXlzIHRoZXNlIHN0cmluZ3MgYXJlIHNvdWdodC4KIAotV2hlbiBkaWZmY29yZS1waWNrYXhlIGlzIGluIHVzZSwgaXQgY2hlY2tzIGlmIHRoZXJlIGFyZQotZmlsZXBhaXJzIHdob3NlICJyZXN1bHQiIHNpZGUgYW5kIHdob3NlICJvcmlnaW4iIHNpZGUgaGF2ZQotZGlmZmVyZW50IG51bWJlciBvZiBzcGVjaWZpZWQgc3RyaW5nLiAgU3VjaCBhIGZpbGVwYWlyIHJlcHJlc2VudHMKLSJ0aGUgc3RyaW5nIGFwcGVhcmVkIGluIHRoaXMgY2hhbmdlc2V0Ii4gIEl0IGFsc28gY2hlY2tzIGZvciB0aGUKLW9wcG9zaXRlIGNhc2UgdGhhdCBsb3NlcyB0aGUgc3BlY2lmaWVkIHN0cmluZy4KKyItUzxibG9jayBvZiB0ZXh0PiIgZGV0ZWN0cyBmaWxlcGFpcnMgd2hvc2UgcHJlaW1hZ2UgYW5kIHBvc3RpbWFnZQoraGF2ZSBkaWZmZXJlbnQgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIHRoZSBzcGVjaWZpZWQgYmxvY2sgb2YgdGV4dC4KK0J5IGRlZmluaXRpb24sIGl0IHdpbGwgbm90IGRldGVjdCBpbi1maWxlIG1vdmVzLiAgQWxzbywgd2hlbiBhCitjaGFuZ2VzZXQgbW92ZXMgYSBmaWxlIHdob2xlc2FsZSB3aXRob3V0IGFmZmVjdGluZyB0aGUgaW50ZXJlc3RpbmcKK3N0cmluZywgZGlmZmNvcmUtcmVuYW1lIGtpY2tzIGluIGFzIHVzdWFsLCBhbmQgYC1TYCBvbWl0cyB0aGUgZmlsZXBhaXIKKyhzaW5jZSB0aGUgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIHRoYXQgc3RyaW5nIGRpZG4ndCBjaGFuZ2UgaW4gdGhhdAorcmVuYW1lLWRldGVjdGVkIGZpbGVwYWlyKS4gIFdoZW4gdXNlZCB3aXRoIGAtLXBpY2theGUtcmVnZXhgLCB0cmVhdAordGhlIDxibG9jayBvZiB0ZXh0PiBhcyBhbiBleHRlbmRlZCBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb24gdG8gbWF0Y2gsCitpbnN0ZWFkIG9mIGEgbGl0ZXJhbCBzdHJpbmcuCiAKLVdoZW4gYC0tcGlja2F4ZS1hbGxgIGlzIG5vdCBpbiBlZmZlY3QsIGRpZmZjb3JlLXBpY2theGUgbGVhdmVzCi1vbmx5IHN1Y2ggZmlsZXBhaXJzIHRoYXQgdG91Y2ggdGhlIHNwZWNpZmllZCBzdHJpbmcgaW4gaXRzCi1vdXRwdXQuICBXaGVuIGAtLXBpY2theGUtYWxsYCBpcyB1c2VkLCBkaWZmY29yZS1waWNrYXhlIGxlYXZlcyBhbGwKLWZpbGVwYWlycyBpbnRhY3QgaWYgdGhlcmUgaXMgc3VjaCBhIGZpbGVwYWlyLCBvciBtYWtlcyB0aGUKLW91dHB1dCBlbXB0eSBvdGhlcndpc2UuICBUaGUgbGF0dGVyIGJlaGF2aW91ciBpcyBkZXNpZ25lZCB0bwotbWFrZSByZXZpZXdpbmcgb2YgdGhlIGNoYW5nZXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHdob2xlCisiLUc8cmVndWxhciBleHByZXNzaW9uPiIgKG1uZW1vbmljOiBncmVwKSBkZXRlY3RzIGZpbGVwYWlycyB3aG9zZQordGV4dHVhbCBkaWZmIGhhcyBhbiBhZGRlZCBvciBhIGRlbGV0ZWQgbGluZSB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuCityZWd1bGFyIGV4cHJlc3Npb24uICBUaGlzIG1lYW5zIHRoYXQgaXQgd2lsbCBkZXRlY3QgaW4tZmlsZSAob3Igd2hhdAorcmVuYW1lLWRldGVjdGlvbiBjb25zaWRlcnMgdGhlIHNhbWUgZmlsZSkgbW92ZXMsIHdoaWNoIGlzIG5vaXNlLiAgVGhlCitpbXBsZW1lbnRhdGlvbiBydW5zIGRpZmYgdHdpY2UgYW5kIGdyZXBzLCBhbmQgdGhpcyBjYW4gYmUgcXVpdGUKK2V4cGVuc2l2ZS4KKworV2hlbiBgLVNgIG9yIGAtR2AgYXJlIHVzZWQgd2l0aG91dCBgLS1waWNrYXhlLWFsbGAsIG9ubHkgZmlsZXBhaXJzCit0aGF0IG1hdGNoIHRoZWlyIHJlc3BlY3RpdmUgY3JpdGVyaW9uIGFyZSBrZXB0IGluIHRoZSBvdXRwdXQuICBXaGVuCitgLS1waWNrYXhlLWFsbGAgaXMgdXNlZCwgaWYgZXZlbiBvbmUgZmlsZXBhaXIgbWF0Y2hlcyB0aGVpciByZXNwZWN0aXZlCitjcml0ZXJpb24gaW4gYSBjaGFuZ2VzZXQsIHRoZSBlbnRpcmUgY2hhbmdlc2V0IGlzIGtlcHQuICBUaGlzIGJlaGF2aW9yCitpcyBkZXNpZ25lZCB0byBtYWtlIHJldmlld2luZyBjaGFuZ2VzIGluIHRoZSBjb250ZXh0IG9mIHRoZSB3aG9sZQogY2hhbmdlc2V0IGVhc2llci4KIAotCiBkaWZmY29yZS1vcmRlcjogRm9yIFNvcnRpbmcgdGhlIE91dHB1dCBCYXNlZCBvbiBGaWxlbmFtZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0yNTQsNyArMjYzLDcgQEAKIGluIHRoZSBmaWxlIGFyZSBvdXRwdXQgYmVmb3JlIG9uZXMgdGhhdCBtYXRjaCBhIGxhdGVyIGxpbmUsIGFuZAogZmlsZXBhaXJzIHRoYXQgZG8gbm90IG1hdGNoIGFueSBnbG9iIHBhdHRlcm4gYXJlIG91dHB1dCBsYXN0LgogCi1BcyBhbiBleGFtcGxlLCBhIHR5cGljYWwgb3JkZXJmaWxlIGZvciB0aGUgY29yZSBnaXQgcHJvYmFibHkKK0FzIGFuIGV4YW1wbGUsIGEgdHlwaWNhbCBvcmRlcmZpbGUgZm9yIHRoZSBjb3JlIEdpdCBwcm9iYWJseQogd291bGQgbG9vayBsaWtlIHRoaXM6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRnbG9zc2FyeS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdGdsb3NzYXJ5LnR4dAppbmRleCBkNzdhNDVhLi5lNTJkZTdkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdGdsb3NzYXJ5LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdGdsb3NzYXJ5LnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0Z2xvc3NhcnkgLSBBIEdJVCBHbG9zc2FyeQorZ2l0Z2xvc3NhcnkgLSBBIEdpdCBHbG9zc2FyeQogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTE5LDcgKzE5LDcgQEAKIGxpbmtnaXQ6Z2l0dHV0b3JpYWxbN10sCiBsaW5rZ2l0OmdpdHR1dG9yaWFsLTJbN10sCiBsaW5rZ2l0OmdpdGN2cy1taWdyYXRpb25bN10sCi1saW5rOmV2ZXJ5ZGF5Lmh0bWxbRXZlcnlkYXkgZ2l0XSwKK2xpbms6ZXZlcnlkYXkuaHRtbFtFdmVyeWRheSBHaXRdLAogbGluazp1c2VyLW1hbnVhbC5odG1sW1RoZSBHaXQgVXNlcidzIE1hbnVhbF0KIAogR0lUCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdGhvb2tzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0aG9va3MudHh0CmluZGV4IGI5MDAzZmUuLmQ0OGJmNGQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0aG9va3MudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0aG9va3MudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXRob29rcyAtIEhvb2tzIHVzZWQgYnkgZ2l0CitnaXRob29rcyAtIEhvb2tzIHVzZWQgYnkgR2l0CiAKIFNZTk9QU0lTCiAtLS0tLS0tLQpAQCAtOTksNyArOTksNyBAQAogY29uZmlndXJhdGlvbiBvcHRpb24gYGNvbW1pdC50ZW1wbGF0ZWAgaXMgc2V0KTsgYG1lcmdlYCAoaWYgdGhlCiBjb21taXQgaXMgYSBtZXJnZSBvciBhIGAuZ2l0L01FUkdFX01TR2AgZmlsZSBleGlzdHMpOyBgc3F1YXNoYAogKGlmIGEgYC5naXQvU1FVQVNIX01TR2AgZmlsZSBleGlzdHMpOyBvciBgY29tbWl0YCwgZm9sbG93ZWQgYnkKLWEgY29tbWl0IFNIQTEgKGlmIGEgYC1jYCwgYC1DYCBvciBgLS1hbWVuZGAgb3B0aW9uIHdhcyBnaXZlbikuCithIGNvbW1pdCBTSEEtMSAoaWYgYSBgLWNgLCBgLUNgIG9yIGAtLWFtZW5kYCBvcHRpb24gd2FzIGdpdmVuKS4KIAogSWYgdGhlIGV4aXQgc3RhdHVzIGlzIG5vbi16ZXJvLCAnZ2l0IGNvbW1pdCcgd2lsbCBhYm9ydC4KIApAQCAtMTA4LDcgKzEwOCw3IEBACiBtZWFucyBhIGZhaWx1cmUgb2YgdGhlIGhvb2sgYW5kIGFib3J0cyB0aGUgY29tbWl0LiAgSXQgc2hvdWxkIG5vdAogYmUgdXNlZCBhcyByZXBsYWNlbWVudCBmb3IgcHJlLWNvbW1pdCBob29rLgogCi1UaGUgc2FtcGxlIGBwcmVwYXJlLWNvbW1pdC1tc2dgIGhvb2sgdGhhdCBjb21lcyB3aXRoIGdpdCBjb21tZW50cworVGhlIHNhbXBsZSBgcHJlcGFyZS1jb21taXQtbXNnYCBob29rIHRoYXQgY29tZXMgd2l0aCBHaXQgY29tbWVudHMKIG91dCB0aGUgYENvbmZsaWN0czpgIHBhcnQgb2YgYSBtZXJnZSdzIGNvbW1pdCBtZXNzYWdlLgogCiBjb21taXQtbXNnCkBAIC0xNDAsOSArMTQwLDExIEBACiBwcmUtcmViYXNlCiB+fn5+fn5+fn5+CiAKLVRoaXMgaG9vayBpcyBjYWxsZWQgYnkgJ2dpdCByZWJhc2UnIGFuZCBjYW4gYmUgdXNlZCB0byBwcmV2ZW50IGEgYnJhbmNoCi1mcm9tIGdldHRpbmcgcmViYXNlZC4KLQorVGhpcyBob29rIGlzIGNhbGxlZCBieSAnZ2l0IHJlYmFzZScgYW5kIGNhbiBiZSB1c2VkIHRvIHByZXZlbnQgYQorYnJhbmNoIGZyb20gZ2V0dGluZyByZWJhc2VkLiAgVGhlIGhvb2sgbWF5IGJlIGNhbGxlZCB3aXRoIG9uZSBvcgordHdvIHBhcmFtZXRlcnMuICBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIHRoZSB1cHN0cmVhbSBmcm9tIHdoaWNoCit0aGUgc2VyaWVzIHdhcyBmb3JrZWQuICBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgYnJhbmNoIGJlaW5nCityZWJhc2VkLCBhbmQgaXMgbm90IHNldCB3aGVuIHJlYmFzaW5nIHRoZSBjdXJyZW50IGJyYW5jaC4KIAogcG9zdC1jaGVja291dAogfn5+fn5+fn5+fn5+fgpAQCAtMTc2LDYgKzE3OCwzNSBAQAogKGVnOiBwZXJtaXNzaW9ucy9vd25lcnNoaXAsIEFDTFMsIGV0YykuICBTZWUgY29udHJpYi9ob29rcy9zZXRnaXRwZXJtcy5wZXJsCiBmb3IgYW4gZXhhbXBsZSBvZiBob3cgdG8gZG8gdGhpcy4KIAorcHJlLXB1c2gKK35+fn5+fn5+CisKK1RoaXMgaG9vayBpcyBjYWxsZWQgYnkgJ2dpdCBwdXNoJyBhbmQgY2FuIGJlIHVzZWQgdG8gcHJldmVudCBhIHB1c2ggZnJvbSB0YWtpbmcKK3BsYWNlLiAgVGhlIGhvb2sgaXMgY2FsbGVkIHdpdGggdHdvIHBhcmFtZXRlcnMgd2hpY2ggcHJvdmlkZSB0aGUgbmFtZSBhbmQKK2xvY2F0aW9uIG9mIHRoZSBkZXN0aW5hdGlvbiByZW1vdGUsIGlmIGEgbmFtZWQgcmVtb3RlIGlzIG5vdCBiZWluZyB1c2VkIGJvdGgKK3ZhbHVlcyB3aWxsIGJlIHRoZSBzYW1lLgorCitJbmZvcm1hdGlvbiBhYm91dCB3aGF0IGlzIHRvIGJlIHB1c2hlZCBpcyBwcm92aWRlZCBvbiB0aGUgaG9vaydzIHN0YW5kYXJkCitpbnB1dCB3aXRoIGxpbmVzIG9mIHRoZSBmb3JtOgorCisgIDxsb2NhbCByZWY+IFNQIDxsb2NhbCBzaGExPiBTUCA8cmVtb3RlIHJlZj4gU1AgPHJlbW90ZSBzaGExPiBMRgorCitGb3IgaW5zdGFuY2UsIGlmIHRoZSBjb21tYW5kICtnaXQgcHVzaCBvcmlnaW4gbWFzdGVyOmZvcmVpZ24rIHdlcmUgcnVuIHRoZQoraG9vayB3b3VsZCByZWNlaXZlIGEgbGluZSBsaWtlIHRoZSBmb2xsb3dpbmc6CisKKyAgcmVmcy9oZWFkcy9tYXN0ZXIgNjc4OTAgcmVmcy9oZWFkcy9mb3JlaWduIDEyMzQ1CisKK2FsdGhvdWdoIHRoZSBmdWxsLCA0MC1jaGFyYWN0ZXIgU0hBLTFzIHdvdWxkIGJlIHN1cHBsaWVkLiAgSWYgdGhlIGZvcmVpZ24gcmVmCitkb2VzIG5vdCB5ZXQgZXhpc3QgdGhlIGA8cmVtb3RlIFNIQS0xPmAgd2lsbCBiZSA0MCBgMGAuICBJZiBhIHJlZiBpcyB0byBiZQorZGVsZXRlZCwgdGhlIGA8bG9jYWwgcmVmPmAgd2lsbCBiZSBzdXBwbGllZCBhcyBgKGRlbGV0ZSlgIGFuZCB0aGUgYDxsb2NhbAorU0hBLTE+YCB3aWxsIGJlIDQwIGAwYC4gIElmIHRoZSBsb2NhbCBjb21taXQgd2FzIHNwZWNpZmllZCBieSBzb21ldGhpbmcgb3RoZXIKK3RoYW4gYSBuYW1lIHdoaWNoIGNvdWxkIGJlIGV4cGFuZGVkIChzdWNoIGFzIGBIRUFEfmAsIG9yIGEgU0hBLTEpIGl0IHdpbGwgYmUKK3N1cHBsaWVkIGFzIGl0IHdhcyBvcmlnaW5hbGx5IGdpdmVuLgorCitJZiB0aGlzIGhvb2sgZXhpdHMgd2l0aCBhIG5vbi16ZXJvIHN0YXR1cywgJ2dpdCBwdXNoJyB3aWxsIGFib3J0IHdpdGhvdXQKK3B1c2hpbmcgYW55dGhpbmcuICBJbmZvcm1hdGlvbiBhYm91dCB3aHkgdGhlIHB1c2ggaXMgcmVqZWN0ZWQgbWF5IGJlIHNlbnQKK3RvIHRoZSB1c2VyIGJ5IHdyaXRpbmcgdG8gc3RhbmRhcmQgZXJyb3IuCisKIFtbcHJlLXJlY2VpdmVdXQogcHJlLXJlY2VpdmUKIH5+fn5+fn5+fn5+CkBAIC0yNzUsNyArMzA2LDcgQEAKIAogVGhlIGRlZmF1bHQgJ3Bvc3QtcmVjZWl2ZScgaG9vayBpcyBlbXB0eSwgYnV0IHRoZXJlIGlzCiBhIHNhbXBsZSBzY3JpcHQgYHBvc3QtcmVjZWl2ZS1lbWFpbGAgcHJvdmlkZWQgaW4gdGhlIGBjb250cmliL2hvb2tzYAotZGlyZWN0b3J5IGluIGdpdCBkaXN0cmlidXRpb24sIHdoaWNoIGltcGxlbWVudHMgc2VuZGluZyBjb21taXQKK2RpcmVjdG9yeSBpbiBHaXQgZGlzdHJpYnV0aW9uLCB3aGljaCBpbXBsZW1lbnRzIHNlbmRpbmcgY29tbWl0CiBlbWFpbHMuCiAKIFtbcG9zdC11cGRhdGVdXQpAQCAtMzAzLDcgKzMzNCw3IEBACiBXaGVuIGVuYWJsZWQsIHRoZSBkZWZhdWx0ICdwb3N0LXVwZGF0ZScgaG9vayBydW5zCiAnZ2l0IHVwZGF0ZS1zZXJ2ZXItaW5mbycgdG8ga2VlcCB0aGUgaW5mb3JtYXRpb24gdXNlZCBieSBkdW1iCiB0cmFuc3BvcnRzIChlLmcuLCBIVFRQKSB1cC10by1kYXRlLiAgSWYgeW91IGFyZSBwdWJsaXNoaW5nCi1hIGdpdCByZXBvc2l0b3J5IHRoYXQgaXMgYWNjZXNzaWJsZSB2aWEgSFRUUCwgeW91IHNob3VsZAorYSBHaXQgcmVwb3NpdG9yeSB0aGF0IGlzIGFjY2Vzc2libGUgdmlhIEhUVFAsIHlvdSBzaG91bGQKIHByb2JhYmx5IGVuYWJsZSB0aGlzIGhvb2suCiAKIEJvdGggc3RhbmRhcmQgb3V0cHV0IGFuZCBzdGFuZGFyZCBlcnJvciBvdXRwdXQgYXJlIGZvcndhcmRlZCB0bwpAQCAtMzM2LDcgKzM2Nyw3IEBACiAnZXh0cmEtaW5mbycuCiAKIFRoZSBob29rIGFsd2F5cyBydW5zIGFmdGVyIHRoZSBhdXRvbWF0aWMgbm90ZSBjb3B5aW5nIChzZWUKLSJub3Rlcy5yZXdyaXRlLjxjb21tYW5kPiIgaW4gbGlua2dpdDpnaXQtY29uZmlnLnR4dCkgaGFzIGhhcHBlbmVkLCBhbmQKKyJub3Rlcy5yZXdyaXRlLjxjb21tYW5kPiIgaW4gbGlua2dpdDpnaXQtY29uZmlnLnR4dFsxXSkgaGFzIGhhcHBlbmVkLCBhbmQKIHRodXMgaGFzIGFjY2VzcyB0byB0aGVzZSBub3Rlcy4KIAogVGhlIGZvbGxvd2luZyBjb21tYW5kLXNwZWNpZmljIGNvbW1lbnRzIGFwcGx5OgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRpZ25vcmUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXRpZ25vcmUudHh0CmluZGV4IDJlNzMyOGIuLjU0ZTMzNGUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0aWdub3JlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdGlnbm9yZS50eHQKQEAgLTEzLDEyICsxMywxMiBAQAogLS0tLS0tLS0tLS0KIAogQSBgZ2l0aWdub3JlYCBmaWxlIHNwZWNpZmllcyBpbnRlbnRpb25hbGx5IHVudHJhY2tlZCBmaWxlcyB0aGF0Ci1naXQgc2hvdWxkIGlnbm9yZS4KLUZpbGVzIGFscmVhZHkgdHJhY2tlZCBieSBnaXQgYXJlIG5vdCBhZmZlY3RlZDsgc2VlIHRoZSBOT1RFUworR2l0IHNob3VsZCBpZ25vcmUuCitGaWxlcyBhbHJlYWR5IHRyYWNrZWQgYnkgR2l0IGFyZSBub3QgYWZmZWN0ZWQ7IHNlZSB0aGUgTk9URVMKIGJlbG93IGZvciBkZXRhaWxzLgogCiBFYWNoIGxpbmUgaW4gYSBgZ2l0aWdub3JlYCBmaWxlIHNwZWNpZmllcyBhIHBhdHRlcm4uCi1XaGVuIGRlY2lkaW5nIHdoZXRoZXIgdG8gaWdub3JlIGEgcGF0aCwgZ2l0IG5vcm1hbGx5IGNoZWNrcworV2hlbiBkZWNpZGluZyB3aGV0aGVyIHRvIGlnbm9yZSBhIHBhdGgsIEdpdCBub3JtYWxseSBjaGVja3MKIGBnaXRpZ25vcmVgIHBhdHRlcm5zIGZyb20gbXVsdGlwbGUgc291cmNlcywgd2l0aCB0aGUgZm9sbG93aW5nCiBvcmRlciBvZiBwcmVjZWRlbmNlLCBmcm9tIGhpZ2hlc3QgdG8gbG93ZXN0ICh3aXRoaW4gb25lIGxldmVsIG9mCiBwcmVjZWRlbmNlLCB0aGUgbGFzdCBtYXRjaGluZyBwYXR0ZXJuIGRlY2lkZXMgdGhlIG91dGNvbWUpOgpAQCAtNDEsMjEgKzQxLDI5IEBACiAgICB2YXJpYWJsZSAnY29yZS5leGNsdWRlc2ZpbGUnLgogCiBXaGljaCBmaWxlIHRvIHBsYWNlIGEgcGF0dGVybiBpbiBkZXBlbmRzIG9uIGhvdyB0aGUgcGF0dGVybiBpcyBtZWFudCB0bwotYmUgdXNlZC4gUGF0dGVybnMgd2hpY2ggc2hvdWxkIGJlIHZlcnNpb24tY29udHJvbGxlZCBhbmQgZGlzdHJpYnV0ZWQgdG8KLW90aGVyIHJlcG9zaXRvcmllcyB2aWEgY2xvbmUgKGkuZS4sIGZpbGVzIHRoYXQgYWxsIGRldmVsb3BlcnMgd2lsbCB3YW50Ci10byBpZ25vcmUpIHNob3VsZCBnbyBpbnRvIGEgYC5naXRpZ25vcmVgIGZpbGUuIFBhdHRlcm5zIHdoaWNoIGFyZQotc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIHJlcG9zaXRvcnkgYnV0IHdoaWNoIGRvIG5vdCBuZWVkIHRvIGJlIHNoYXJlZAotd2l0aCBvdGhlciByZWxhdGVkIHJlcG9zaXRvcmllcyAoZS5nLiwgYXV4aWxpYXJ5IGZpbGVzIHRoYXQgbGl2ZSBpbnNpZGUKLXRoZSByZXBvc2l0b3J5IGJ1dCBhcmUgc3BlY2lmaWMgdG8gb25lIHVzZXIncyB3b3JrZmxvdykgc2hvdWxkIGdvIGludG8KLXRoZSBgJEdJVF9ESVIvaW5mby9leGNsdWRlYCBmaWxlLiAgUGF0dGVybnMgd2hpY2ggYSB1c2VyIHdhbnRzIGdpdCB0bwotaWdub3JlIGluIGFsbCBzaXR1YXRpb25zIChlLmcuLCBiYWNrdXAgb3IgdGVtcG9yYXJ5IGZpbGVzIGdlbmVyYXRlZCBieQotdGhlIHVzZXIncyBlZGl0b3Igb2YgY2hvaWNlKSBnZW5lcmFsbHkgZ28gaW50byBhIGZpbGUgc3BlY2lmaWVkIGJ5Ci1gY29yZS5leGNsdWRlc2ZpbGVgIGluIHRoZSB1c2VyJ3MgYH4vLmdpdGNvbmZpZ2AuCitiZSB1c2VkLgogCi1UaGUgdW5kZXJseWluZyBnaXQgcGx1bWJpbmcgdG9vbHMsIHN1Y2ggYXMKKyAqIFBhdHRlcm5zIHdoaWNoIHNob3VsZCBiZSB2ZXJzaW9uLWNvbnRyb2xsZWQgYW5kIGRpc3RyaWJ1dGVkIHRvCisgICBvdGhlciByZXBvc2l0b3JpZXMgdmlhIGNsb25lIChpLmUuLCBmaWxlcyB0aGF0IGFsbCBkZXZlbG9wZXJzIHdpbGwgd2FudAorICAgdG8gaWdub3JlKSBzaG91bGQgZ28gaW50byBhIGAuZ2l0aWdub3JlYCBmaWxlLgorCisgKiBQYXR0ZXJucyB3aGljaCBhcmUKKyAgIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciByZXBvc2l0b3J5IGJ1dCB3aGljaCBkbyBub3QgbmVlZCB0byBiZSBzaGFyZWQKKyAgIHdpdGggb3RoZXIgcmVsYXRlZCByZXBvc2l0b3JpZXMgKGUuZy4sIGF1eGlsaWFyeSBmaWxlcyB0aGF0IGxpdmUgaW5zaWRlCisgICB0aGUgcmVwb3NpdG9yeSBidXQgYXJlIHNwZWNpZmljIHRvIG9uZSB1c2VyJ3Mgd29ya2Zsb3cpIHNob3VsZCBnbyBpbnRvCisgICB0aGUgYCRHSVRfRElSL2luZm8vZXhjbHVkZWAgZmlsZS4KKworICogUGF0dGVybnMgd2hpY2ggYSB1c2VyIHdhbnRzIEdpdCB0bworICAgaWdub3JlIGluIGFsbCBzaXR1YXRpb25zIChlLmcuLCBiYWNrdXAgb3IgdGVtcG9yYXJ5IGZpbGVzIGdlbmVyYXRlZCBieQorICAgdGhlIHVzZXIncyBlZGl0b3Igb2YgY2hvaWNlKSBnZW5lcmFsbHkgZ28gaW50byBhIGZpbGUgc3BlY2lmaWVkIGJ5CisgICBgY29yZS5leGNsdWRlc2ZpbGVgIGluIHRoZSB1c2VyJ3MgYH4vLmdpdGNvbmZpZ2AuIEl0cyBkZWZhdWx0IHZhbHVlIGlzCisgICAkWERHX0NPTkZJR19IT01FL2dpdC9pZ25vcmUuIElmICRYREdfQ09ORklHX0hPTUUgaXMgZWl0aGVyIG5vdCBzZXQgb3IKKyAgIGVtcHR5LCAkSE9NRS8uY29uZmlnL2dpdC9pZ25vcmUgaXMgdXNlZCBpbnN0ZWFkLgorCitUaGUgdW5kZXJseWluZyBHaXQgcGx1bWJpbmcgdG9vbHMsIHN1Y2ggYXMKICdnaXQgbHMtZmlsZXMnIGFuZCAnZ2l0IHJlYWQtdHJlZScsIHJlYWQKIGBnaXRpZ25vcmVgIHBhdHRlcm5zIHNwZWNpZmllZCBieSBjb21tYW5kLWxpbmUgb3B0aW9ucywgb3IgZnJvbQotZmlsZXMgc3BlY2lmaWVkIGJ5IGNvbW1hbmQtbGluZSBvcHRpb25zLiAgSGlnaGVyLWxldmVsIGdpdAorZmlsZXMgc3BlY2lmaWVkIGJ5IGNvbW1hbmQtbGluZSBvcHRpb25zLiAgSGlnaGVyLWxldmVsIEdpdAogdG9vbHMsIHN1Y2ggYXMgJ2dpdCBzdGF0dXMnIGFuZCAnZ2l0IGFkZCcsCiB1c2UgcGF0dGVybnMgZnJvbSB0aGUgc291cmNlcyBzcGVjaWZpZWQgYWJvdmUuCiAKQEAgLTY2LDI2ICs3NCwzMCBAQAogICAgZm9yIHJlYWRhYmlsaXR5LgogCiAgLSBBIGxpbmUgc3RhcnRpbmcgd2l0aCAjIHNlcnZlcyBhcyBhIGNvbW1lbnQuCisgICBQdXQgYSBiYWNrc2xhc2ggKCJgXGAiKSBpbiBmcm9udCBvZiB0aGUgZmlyc3QgaGFzaCBmb3IgcGF0dGVybnMKKyAgIHRoYXQgYmVnaW4gd2l0aCBhIGhhc2guCiAKLSAtIEFuIG9wdGlvbmFsIHByZWZpeCAnIScgd2hpY2ggbmVnYXRlcyB0aGUgcGF0dGVybjsgYW55CisgLSBBbiBvcHRpb25hbCBwcmVmaXggImAhYCIgd2hpY2ggbmVnYXRlcyB0aGUgcGF0dGVybjsgYW55CiAgICBtYXRjaGluZyBmaWxlIGV4Y2x1ZGVkIGJ5IGEgcHJldmlvdXMgcGF0dGVybiB3aWxsIGJlY29tZQogICAgaW5jbHVkZWQgYWdhaW4uICBJZiBhIG5lZ2F0ZWQgcGF0dGVybiBtYXRjaGVzLCB0aGlzIHdpbGwKICAgIG92ZXJyaWRlIGxvd2VyIHByZWNlZGVuY2UgcGF0dGVybnMgc291cmNlcy4KKyAgIFB1dCBhIGJhY2tzbGFzaCAoImBcYCIpIGluIGZyb250IG9mIHRoZSBmaXJzdCAiYCFgIiBmb3IgcGF0dGVybnMKKyAgIHRoYXQgYmVnaW4gd2l0aCBhIGxpdGVyYWwgImAhYCIsIGZvciBleGFtcGxlLCAiYFwhaW1wb3J0YW50IS50eHRgIi4KIAogIC0gSWYgdGhlIHBhdHRlcm4gZW5kcyB3aXRoIGEgc2xhc2gsIGl0IGlzIHJlbW92ZWQgZm9yIHRoZQogICAgcHVycG9zZSBvZiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uLCBidXQgaXQgd291bGQgb25seSBmaW5kCiAgICBhIG1hdGNoIHdpdGggYSBkaXJlY3RvcnkuICBJbiBvdGhlciB3b3JkcywgYGZvby9gIHdpbGwgbWF0Y2ggYQogICAgZGlyZWN0b3J5IGBmb29gIGFuZCBwYXRocyB1bmRlcm5lYXRoIGl0LCBidXQgd2lsbCBub3QgbWF0Y2ggYQogICAgcmVndWxhciBmaWxlIG9yIGEgc3ltYm9saWMgbGluayBgZm9vYCAodGhpcyBpcyBjb25zaXN0ZW50Ci0gICB3aXRoIHRoZSB3YXkgaG93IHBhdGhzcGVjIHdvcmtzIGluIGdlbmVyYWwgaW4gZ2l0KS4KKyAgIHdpdGggdGhlIHdheSBob3cgcGF0aHNwZWMgd29ya3MgaW4gZ2VuZXJhbCBpbiBHaXQpLgogCi0gLSBJZiB0aGUgcGF0dGVybiBkb2VzIG5vdCBjb250YWluIGEgc2xhc2ggJy8nLCBnaXQgdHJlYXRzIGl0IGFzCisgLSBJZiB0aGUgcGF0dGVybiBkb2VzIG5vdCBjb250YWluIGEgc2xhc2ggJy8nLCBHaXQgdHJlYXRzIGl0IGFzCiAgICBhIHNoZWxsIGdsb2IgcGF0dGVybiBhbmQgY2hlY2tzIGZvciBhIG1hdGNoIGFnYWluc3QgdGhlCiAgICBwYXRobmFtZSByZWxhdGl2ZSB0byB0aGUgbG9jYXRpb24gb2YgdGhlIGAuZ2l0aWdub3JlYCBmaWxlCiAgICAocmVsYXRpdmUgdG8gdGhlIHRvcGxldmVsIG9mIHRoZSB3b3JrIHRyZWUgaWYgbm90IGZyb20gYQogICAgYC5naXRpZ25vcmVgIGZpbGUpLgogCi0gLSBPdGhlcndpc2UsIGdpdCB0cmVhdHMgdGhlIHBhdHRlcm4gYXMgYSBzaGVsbCBnbG9iIHN1aXRhYmxlCisgLSBPdGhlcndpc2UsIEdpdCB0cmVhdHMgdGhlIHBhdHRlcm4gYXMgYSBzaGVsbCBnbG9iIHN1aXRhYmxlCiAgICBmb3IgY29uc3VtcHRpb24gYnkgZm5tYXRjaCgzKSB3aXRoIHRoZSBGTk1fUEFUSE5BTUUgZmxhZzoKICAgIHdpbGRjYXJkcyBpbiB0aGUgcGF0dGVybiB3aWxsIG5vdCBtYXRjaCBhIC8gaW4gdGhlIHBhdGhuYW1lLgogICAgRm9yIGV4YW1wbGUsICJEb2N1bWVudGF0aW9uL3thc3Rlcmlza30uaHRtbCIgbWF0Y2hlcwpAQCAtOTYsMTEgKzEwOCwzMCBAQAogICAgRm9yIGV4YW1wbGUsICIve2FzdGVyaXNrfS5jIiBtYXRjaGVzICJjYXQtZmlsZS5jIiBidXQgbm90CiAgICAibW96aWxsYS1zaGExL3NoYTEuYyIuCiAKK1R3byBjb25zZWN1dGl2ZSBhc3Rlcmlza3MgKCJgKipgIikgaW4gcGF0dGVybnMgbWF0Y2hlZCBhZ2FpbnN0CitmdWxsIHBhdGhuYW1lIG1heSBoYXZlIHNwZWNpYWwgbWVhbmluZzoKKworIC0gQSBsZWFkaW5nICJgKipgIiBmb2xsb3dlZCBieSBhIHNsYXNoIG1lYW5zIG1hdGNoIGluIGFsbAorICAgZGlyZWN0b3JpZXMuIEZvciBleGFtcGxlLCAiYCoqL2Zvb2AiIG1hdGNoZXMgZmlsZSBvciBkaXJlY3RvcnkKKyAgICJgZm9vYCIgYW55d2hlcmUsIHRoZSBzYW1lIGFzIHBhdHRlcm4gImBmb29gIi4gIioqL2Zvby9iYXIiCisgICBtYXRjaGVzIGZpbGUgb3IgZGlyZWN0b3J5ICJgYmFyYCIgYW55d2hlcmUgdGhhdCBpcyBkaXJlY3RseQorICAgdW5kZXIgZGlyZWN0b3J5ICJgZm9vYCIuCisKKyAtIEEgdHJhaWxpbmcgIi8qKiIgbWF0Y2hlcyBldmVyeXRoaW5nIGluc2lkZS4gRm9yIGV4YW1wbGUsCisgICAiYWJjLyoqIiBtYXRjaGVzIGFsbCBmaWxlcyBpbnNpZGUgZGlyZWN0b3J5ICJhYmMiLCByZWxhdGl2ZQorICAgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZSBgLmdpdGlnbm9yZWAgZmlsZSwgd2l0aCBpbmZpbml0ZSBkZXB0aC4KKworIC0gQSBzbGFzaCBmb2xsb3dlZCBieSB0d28gY29uc2VjdXRpdmUgYXN0ZXJpc2tzIHRoZW4gYSBzbGFzaAorICAgbWF0Y2hlcyB6ZXJvIG9yIG1vcmUgZGlyZWN0b3JpZXMuIEZvciBleGFtcGxlLCAiYGEvKiovYmAiCisgICBtYXRjaGVzICJgYS9iYCIsICJgYS94L2JgIiwgImBhL3gveS9iYCIgYW5kIHNvIG9uLgorCisgLSBPdGhlciBjb25zZWN1dGl2ZSBhc3Rlcmlza3MgYXJlIGNvbnNpZGVyZWQgaW52YWxpZC4KKwogTk9URVMKIC0tLS0tCiAKIFRoZSBwdXJwb3NlIG9mIGdpdGlnbm9yZSBmaWxlcyBpcyB0byBlbnN1cmUgdGhhdCBjZXJ0YWluIGZpbGVzCi1ub3QgdHJhY2tlZCBieSBnaXQgcmVtYWluIHVudHJhY2tlZC4KK25vdCB0cmFja2VkIGJ5IEdpdCByZW1haW4gdW50cmFja2VkLgogCiBUbyBpZ25vcmUgdW5jb21taXR0ZWQgY2hhbmdlcyBpbiBhIGZpbGUgdGhhdCBpcyBhbHJlYWR5IHRyYWNrZWQsCiB1c2UgJ2dpdCB1cGRhdGUtaW5kZXgge2xpdGRkfWFzc3VtZS11bmNoYW5nZWQnLgpAQCAtMTQ4LDEzICsxNzksMTUgQEAKICAgICAkIGVjaG8gJyEvdm1saW51eConID5hcmNoL2Zvby9rZXJuZWwvLmdpdGlnbm9yZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhlIHNlY29uZCAuZ2l0aWdub3JlIHByZXZlbnRzIGdpdCBmcm9tIGlnbm9yaW5nCitUaGUgc2Vjb25kIC5naXRpZ25vcmUgcHJldmVudHMgR2l0IGZyb20gaWdub3JpbmcKIGBhcmNoL2Zvby9rZXJuZWwvdm1saW51eC5sZHMuU2AuCiAKIFNFRSBBTFNPCiAtLS0tLS0tLQotbGlua2dpdDpnaXQtcm1bMV0sIGxpbmtnaXQ6Z2l0LXVwZGF0ZS1pbmRleFsxXSwKLWxpbmtnaXQ6Z2l0cmVwb3NpdG9yeS1sYXlvdXRbNV0KK2xpbmtnaXQ6Z2l0LXJtWzFdLAorbGlua2dpdDpnaXQtdXBkYXRlLWluZGV4WzFdLAorbGlua2dpdDpnaXRyZXBvc2l0b3J5LWxheW91dFs1XSwKK2xpbmtnaXQ6Z2l0LWNoZWNrLWlnbm9yZVsxXQogCiBHSVQKIC0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRrLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0ay50eHQKaW5kZXggYTE3YTM1NC4uYzE3ZTc2MCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXRrLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdGsudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXRrIC0gVGhlIGdpdCByZXBvc2l0b3J5IGJyb3dzZXIKK2dpdGsgLSBUaGUgR2l0IHJlcG9zaXRvcnkgYnJvd3NlcgogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTE4LDcgKzE4LDcgQEAKIAogSGlzdG9yaWNhbGx5LCBnaXRrIHdhcyB0aGUgZmlyc3QgcmVwb3NpdG9yeSBicm93c2VyLiBJdCdzIHdyaXR0ZW4gaW4gdGNsL3RrCiBhbmQgc3RhcnRlZCBvZmYgaW4gYSBzZXBhcmF0ZSByZXBvc2l0b3J5IGJ1dCB3YXMgbGF0ZXIgbWVyZ2VkIGludG8gdGhlIG1haW4KLWdpdCByZXBvc2l0b3J5LgorR2l0IHJlcG9zaXRvcnkuCiAKIE9QVElPTlMKIC0tLS0tLS0KQEAgLTEwOCwxMCArMTA4LDEwIEBACiAKICdnaXR2aWV3KDEpJzo6CiAJQSByZXBvc2l0b3J5IGJyb3dzZXIgd3JpdHRlbiBpbiBQeXRob24gdXNpbmcgR3RrLiBJdCdzIGJhc2VkIG9uCi0JJ2J6cmsoMSknIGFuZCBkaXN0cmlidXRlZCBpbiB0aGUgY29udHJpYiBhcmVhIG9mIHRoZSBnaXQgcmVwb3NpdG9yeS4KKwknYnpyaygxKScgYW5kIGRpc3RyaWJ1dGVkIGluIHRoZSBjb250cmliIGFyZWEgb2YgdGhlIEdpdCByZXBvc2l0b3J5LgogCiAndGlnKDEpJzo6Ci0JQSBtaW5pbWFsIHJlcG9zaXRvcnkgYnJvd3NlciBhbmQgZ2l0IHRvb2wgb3V0cHV0IGhpZ2hsaWdodGVyIHdyaXR0ZW4KKwlBIG1pbmltYWwgcmVwb3NpdG9yeSBicm93c2VyIGFuZCBHaXQgdG9vbCBvdXRwdXQgaGlnaGxpZ2h0ZXIgd3JpdHRlbgogCWluIEMgdXNpbmcgTmN1cnNlcy4KIAogR0lUCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdG1vZHVsZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9naXRtb2R1bGVzLnR4dAppbmRleCA0ZWZmZDc4Li42YTFjYTRhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdG1vZHVsZXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0bW9kdWxlcy50eHQKQEAgLTEzLDE2ICsxMywxOCBAQAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCiAKLVRoZSBgLmdpdG1vZHVsZXNgIGZpbGUsIGxvY2F0ZWQgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgYSBnaXQKK1RoZSBgLmdpdG1vZHVsZXNgIGZpbGUsIGxvY2F0ZWQgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgYSBHaXQKIHdvcmtpbmcgdHJlZSwgaXMgYSB0ZXh0IGZpbGUgd2l0aCBhIHN5bnRheCBtYXRjaGluZyB0aGUgcmVxdWlyZW1lbnRzCiBvZiBsaW5rZ2l0OmdpdC1jb25maWdbMV0uCiAKIFRoZSBmaWxlIGNvbnRhaW5zIG9uZSBzdWJzZWN0aW9uIHBlciBzdWJtb2R1bGUsIGFuZCB0aGUgc3Vic2VjdGlvbiB2YWx1ZQotaXMgdGhlIG5hbWUgb2YgdGhlIHN1Ym1vZHVsZS4gRWFjaCBzdWJtb2R1bGUgc2VjdGlvbiBhbHNvIGNvbnRhaW5zIHRoZQoraXMgdGhlIG5hbWUgb2YgdGhlIHN1Ym1vZHVsZS4gVGhlIG5hbWUgaXMgc2V0IHRvIHRoZSBwYXRoIHdoZXJlIHRoZQorc3VibW9kdWxlIGhhcyBiZWVuIGFkZGVkIHVubGVzcyBpdCB3YXMgY3VzdG9taXplZCB3aXRoIHRoZSAnLS1uYW1lJworb3B0aW9uIG9mICdnaXQgc3VibW9kdWxlIGFkZCcuIEVhY2ggc3VibW9kdWxlIHNlY3Rpb24gYWxzbyBjb250YWlucyB0aGUKIGZvbGxvd2luZyByZXF1aXJlZCBrZXlzOgogCiBzdWJtb2R1bGUuPG5hbWU+LnBhdGg6OgotCURlZmluZXMgdGhlIHBhdGgsIHJlbGF0aXZlIHRvIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IG9mIHRoZSBnaXQKKwlEZWZpbmVzIHRoZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBvZiB0aGUgR2l0CiAJd29ya2luZyB0cmVlLCB3aGVyZSB0aGUgc3VibW9kdWxlIGlzIGV4cGVjdGVkIHRvIGJlIGNoZWNrZWQgb3V0LgogCVRoZSBwYXRoIG5hbWUgbXVzdCBub3QgZW5kIHdpdGggYSBgL2AuIEFsbCBzdWJtb2R1bGUgcGF0aHMgbXVzdAogCWJlIHVuaXF1ZSB3aXRoaW4gdGhlIC5naXRtb2R1bGVzIGZpbGUuCkBAIC00Nyw2ICs0OSwxMSBAQAogCVRoaXMgY29uZmlnIG9wdGlvbiBpcyBvdmVycmlkZGVuIGlmICdnaXQgc3VibW9kdWxlIHVwZGF0ZScgaXMgZ2l2ZW4KIAl0aGUgJy0tbWVyZ2UnLCAnLS1yZWJhc2UnIG9yICctLWNoZWNrb3V0JyBvcHRpb25zLgogCitzdWJtb2R1bGUuPG5hbWU+LmJyYW5jaDo6CisJQSByZW1vdGUgYnJhbmNoIG5hbWUgZm9yIHRyYWNraW5nIHVwZGF0ZXMgaW4gdGhlIHVwc3RyZWFtIHN1Ym1vZHVsZS4KKwlJZiB0aGUgb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvICdtYXN0ZXInLiAgU2VlIHRoZQorCWAtLXJlbW90ZWAgZG9jdW1lbnRhdGlvbiBpbiBsaW5rZ2l0OmdpdC1zdWJtb2R1bGVbMV0gZm9yIGRldGFpbHMuCisKIHN1Ym1vZHVsZS48bmFtZT4uZmV0Y2hSZWN1cnNlU3VibW9kdWxlczo6CiAJVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgdG8gY29udHJvbCByZWN1cnNpdmUgZmV0Y2hpbmcgb2YgdGhpcwogCXN1Ym1vZHVsZS4gSWYgdGhpcyBvcHRpb24gaXMgYWxzbyBwcmVzZW50IGluIHRoZSBzdWJtb2R1bGVzIGVudHJ5IGluCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdG5hbWVzcGFjZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9naXRuYW1lc3BhY2VzLnR4dAppbmRleCBjNjcxM2NmLi43Njg1ZTM2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdG5hbWVzcGFjZXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0bmFtZXNwYWNlcy50eHQKQEAgLTI5LDcgKzI5LDcgQEAKIHdpdGhvdXQgb25nb2luZyBtYWludGVuYW5jZSwgd2hpbGUgbmFtZXNwYWNlcyBkby4KIAogVG8gc3BlY2lmeSBhIG5hbWVzcGFjZSwgc2V0IHRoZSBgR0lUX05BTUVTUEFDRWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8KLXRoZSBuYW1lc3BhY2UuICBGb3IgZWFjaCByZWYgbmFtZXNwYWNlLCBnaXQgc3RvcmVzIHRoZSBjb3JyZXNwb25kaW5nCit0aGUgbmFtZXNwYWNlLiAgRm9yIGVhY2ggcmVmIG5hbWVzcGFjZSwgR2l0IHN0b3JlcyB0aGUgY29ycmVzcG9uZGluZwogcmVmcyBpbiBhIGRpcmVjdG9yeSB1bmRlciBgcmVmcy9uYW1lc3BhY2VzL2AuICBGb3IgZXhhbXBsZSwKIGBHSVRfTkFNRVNQQUNFPWZvb2Agd2lsbCBzdG9yZSByZWZzIHVuZGVyIGByZWZzL25hbWVzcGFjZXMvZm9vL2AuICBZb3UKIGNhbiBhbHNvIHNwZWNpZnkgbmFtZXNwYWNlcyB2aWEgdGhlIGAtLW5hbWVzcGFjZWAgb3B0aW9uIHRvCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yZW1vdGUtaGVscGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdHJlbW90ZS1oZWxwZXJzLnR4dApzaW1pbGFyaXR5IGluZGV4IDY4JQpyZW5hbWUgZnJvbSBEb2N1bWVudGF0aW9uL2dpdC1yZW1vdGUtaGVscGVycy50eHQKcmVuYW1lIHRvIERvY3VtZW50YXRpb24vZ2l0cmVtb3RlLWhlbHBlcnMudHh0CmluZGV4IGY1ODM2ZTQuLmRhNzQ2NDEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS1oZWxwZXJzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHJlbW90ZS1oZWxwZXJzLnR4dApAQCAtMSw5ICsxLDkgQEAKLWdpdC1yZW1vdGUtaGVscGVycygxKQotPT09PT09PT09PT09PT09PT09PT09CitnaXRyZW1vdGUtaGVscGVycygxKQorPT09PT09PT09PT09PT09PT09PT0KIAogTkFNRQogLS0tLQotZ2l0LXJlbW90ZS1oZWxwZXJzIC0gSGVscGVyIHByb2dyYW1zIHRvIGludGVyYWN0IHdpdGggcmVtb3RlIHJlcG9zaXRvcmllcworZ2l0cmVtb3RlLWhlbHBlcnMgLSBIZWxwZXIgcHJvZ3JhbXMgdG8gaW50ZXJhY3Qgd2l0aCByZW1vdGUgcmVwb3NpdG9yaWVzCiAKIFNZTk9QU0lTCiAtLS0tLS0tLQpAQCAtMTQsMTcgKzE0LDE3IEBACiAtLS0tLS0tLS0tLQogCiBSZW1vdGUgaGVscGVyIHByb2dyYW1zIGFyZSBub3JtYWxseSBub3QgdXNlZCBkaXJlY3RseSBieSBlbmQgdXNlcnMsCi1idXQgdGhleSBhcmUgaW52b2tlZCBieSBnaXQgd2hlbiBpdCBuZWVkcyB0byBpbnRlcmFjdCB3aXRoIHJlbW90ZQotcmVwb3NpdG9yaWVzIGdpdCBkb2VzIG5vdCBzdXBwb3J0IG5hdGl2ZWx5LiAgQSBnaXZlbiBoZWxwZXIgd2lsbAotaW1wbGVtZW50IGEgc3Vic2V0IG9mIHRoZSBjYXBhYmlsaXRpZXMgZG9jdW1lbnRlZCBoZXJlLiBXaGVuIGdpdAorYnV0IHRoZXkgYXJlIGludm9rZWQgYnkgR2l0IHdoZW4gaXQgbmVlZHMgdG8gaW50ZXJhY3Qgd2l0aCByZW1vdGUKK3JlcG9zaXRvcmllcyBHaXQgZG9lcyBub3Qgc3VwcG9ydCBuYXRpdmVseS4gIEEgZ2l2ZW4gaGVscGVyIHdpbGwKK2ltcGxlbWVudCBhIHN1YnNldCBvZiB0aGUgY2FwYWJpbGl0aWVzIGRvY3VtZW50ZWQgaGVyZS4gV2hlbiBHaXQKIG5lZWRzIHRvIGludGVyYWN0IHdpdGggYSByZXBvc2l0b3J5IHVzaW5nIGEgcmVtb3RlIGhlbHBlciwgaXQgc3Bhd25zCiB0aGUgaGVscGVyIGFzIGFuIGluZGVwZW5kZW50IHByb2Nlc3MsIHNlbmRzIGNvbW1hbmRzIHRvIHRoZSBoZWxwZXIncwogc3RhbmRhcmQgaW5wdXQsIGFuZCBleHBlY3RzIHJlc3VsdHMgZnJvbSB0aGUgaGVscGVyJ3Mgc3RhbmRhcmQKIG91dHB1dC4gQmVjYXVzZSBhIHJlbW90ZSBoZWxwZXIgcnVucyBhcyBhbiBpbmRlcGVuZGVudCBwcm9jZXNzIGZyb20KLWdpdCwgdGhlcmUgaXMgbm8gbmVlZCB0byByZS1saW5rIGdpdCB0byBhZGQgYSBuZXcgaGVscGVyLCBub3IgYW55Ci1uZWVkIHRvIGxpbmsgdGhlIGhlbHBlciB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBnaXQuCitHaXQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gcmUtbGluayBHaXQgdG8gYWRkIGEgbmV3IGhlbHBlciwgbm9yIGFueQorbmVlZCB0byBsaW5rIHRoZSBoZWxwZXIgd2l0aCB0aGUgaW1wbGVtZW50YXRpb24gb2YgR2l0LgogCi1FdmVyeSBoZWxwZXIgbXVzdCBzdXBwb3J0IHRoZSAiY2FwYWJpbGl0aWVzIiBjb21tYW5kLCB3aGljaCBnaXQKK0V2ZXJ5IGhlbHBlciBtdXN0IHN1cHBvcnQgdGhlICJjYXBhYmlsaXRpZXMiIGNvbW1hbmQsIHdoaWNoIEdpdAogdXNlcyB0byBkZXRlcm1pbmUgd2hhdCBvdGhlciBjb21tYW5kcyB0aGUgaGVscGVyIHdpbGwgYWNjZXB0LiAgVGhvc2UKIG90aGVyIGNvbW1hbmRzIGNhbiBiZSB1c2VkIHRvIGRpc2NvdmVyIGFuZCB1cGRhdGUgcmVtb3RlIHJlZnMsCiB0cmFuc3BvcnQgb2JqZWN0cyBiZXR3ZWVuIHRoZSBvYmplY3QgZGF0YWJhc2UgYW5kIHRoZSByZW1vdGUgcmVwb3NpdG9yeSwKQEAgLTM1LDYgKzM1LDM3IEBACiAnZ2l0LXJlbW90ZS1mdHAnIGFuZCAnZ2l0LXJlbW90ZS1mdHBzJy4gVGhleSBpbXBsZW1lbnQgdGhlIGNhcGFiaWxpdGllcwogJ2ZldGNoJywgJ29wdGlvbicsIGFuZCAncHVzaCcuCiAKK0lOVk9DQVRJT04KKy0tLS0tLS0tLS0KKworUmVtb3RlIGhlbHBlciBwcm9ncmFtcyBhcmUgaW52b2tlZCB3aXRoIG9uZSBvciAob3B0aW9uYWxseSkgdHdvCithcmd1bWVudHMuIFRoZSBmaXJzdCBhcmd1bWVudCBzcGVjaWZpZXMgYSByZW1vdGUgcmVwb3NpdG9yeSBhcyBpbiBHaXQ7CitpdCBpcyBlaXRoZXIgdGhlIG5hbWUgb2YgYSBjb25maWd1cmVkIHJlbW90ZSBvciBhIFVSTC4gVGhlIHNlY29uZAorYXJndW1lbnQgc3BlY2lmaWVzIGEgVVJMOyBpdCBpcyB1c3VhbGx5IG9mIHRoZSBmb3JtCisnPHRyYW5zcG9ydD46Ly88YWRkcmVzcz4nLCBidXQgYW55IGFyYml0cmFyeSBzdHJpbmcgaXMgcG9zc2libGUuCitUaGUgJ0dJVF9ESVInIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCB1cCBmb3IgdGhlIHJlbW90ZSBoZWxwZXIKK2FuZCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hlcmUgdG8gc3RvcmUgYWRkaXRpb25hbCBkYXRhIG9yIGZyb20KK3doaWNoIGRpcmVjdG9yeSB0byBpbnZva2UgYXV4aWxpYXJ5IEdpdCBjb21tYW5kcy4KKworV2hlbiBHaXQgZW5jb3VudGVycyBhIFVSTCBvZiB0aGUgZm9ybSAnPHRyYW5zcG9ydD46Ly88YWRkcmVzcz4nLCB3aGVyZQorJzx0cmFuc3BvcnQ+JyBpcyBhIHByb3RvY29sIHRoYXQgaXQgY2Fubm90IGhhbmRsZSBuYXRpdmVseSwgaXQKK2F1dG9tYXRpY2FsbHkgaW52b2tlcyAnZ2l0IHJlbW90ZS08dHJhbnNwb3J0Picgd2l0aCB0aGUgZnVsbCBVUkwgYXMKK3RoZSBzZWNvbmQgYXJndW1lbnQuIElmIHN1Y2ggYSBVUkwgaXMgZW5jb3VudGVyZWQgZGlyZWN0bHkgb24gdGhlCitjb21tYW5kIGxpbmUsIHRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgc2Vjb25kLCBhbmQgaWYgaXQKK2lzIGVuY291bnRlcmVkIGluIGEgY29uZmlndXJlZCByZW1vdGUsIHRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgbmFtZQorb2YgdGhhdCByZW1vdGUuCisKK0EgVVJMIG9mIHRoZSBmb3JtICc8dHJhbnNwb3J0Pjo6PGFkZHJlc3M+JyBleHBsaWNpdGx5IGluc3RydWN0cyBHaXQgdG8KK2ludm9rZSAnZ2l0IHJlbW90ZS08dHJhbnNwb3J0Picgd2l0aCAnPGFkZHJlc3M+JyBhcyB0aGUgc2Vjb25kCithcmd1bWVudC4gSWYgc3VjaCBhIFVSTCBpcyBlbmNvdW50ZXJlZCBkaXJlY3RseSBvbiB0aGUgY29tbWFuZCBsaW5lLAordGhlIGZpcnN0IGFyZ3VtZW50IGlzICc8YWRkcmVzcz4nLCBhbmQgaWYgaXQgaXMgZW5jb3VudGVyZWQgaW4gYQorY29uZmlndXJlZCByZW1vdGUsIHRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgbmFtZSBvZiB0aGF0IHJlbW90ZS4KKworQWRkaXRpb25hbGx5LCB3aGVuIGEgY29uZmlndXJlZCByZW1vdGUgaGFzICdyZW1vdGUuPG5hbWU+LnZjcycgc2V0IHRvCisnPHRyYW5zcG9ydD4nLCBHaXQgZXhwbGljaXRseSBpbnZva2VzICdnaXQgcmVtb3RlLTx0cmFuc3BvcnQ+JyB3aXRoCisnPG5hbWU+JyBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIElmIHNldCwgdGhlIHNlY29uZCBhcmd1bWVudCBpcworJ3JlbW90ZS48bmFtZT4udXJsJzsgb3RoZXJ3aXNlLCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG9taXR0ZWQuCisKIElOUFVUIEZPUk1BVAogLS0tLS0tLS0tLS0tCiAKQEAgLTU0LDMxICs4NSw3OSBAQAogfn5+fn5+fn5+fn5+CiAKIEVhY2ggcmVtb3RlIGhlbHBlciBpcyBleHBlY3RlZCB0byBzdXBwb3J0IG9ubHkgYSBzdWJzZXQgb2YgY29tbWFuZHMuCi1UaGUgb3BlcmF0aW9ucyBhIGhlbHBlciBzdXBwb3J0cyBhcmUgZGVjbGFyZWQgdG8gZ2l0IGluIHRoZSByZXNwb25zZQorVGhlIG9wZXJhdGlvbnMgYSBoZWxwZXIgc3VwcG9ydHMgYXJlIGRlY2xhcmVkIHRvIEdpdCBpbiB0aGUgcmVzcG9uc2UKIHRvIHRoZSBgY2FwYWJpbGl0aWVzYCBjb21tYW5kIChzZWUgQ09NTUFORFMsIGJlbG93KS4KIAorSW4gdGhlIGZvbGxvd2luZywgd2UgbGlzdCBhbGwgZGVmaW5lZCBjYXBhYmlsaXRpZXMgYW5kIGZvcgorZWFjaCB3ZSBsaXN0IHdoaWNoIGNvbW1hbmRzIGEgaGVscGVyIHdpdGggdGhhdCBjYXBhYmlsaXR5CittdXN0IHByb3ZpZGUuCisKK0NhcGFiaWxpdGllcyBmb3IgUHVzaGluZworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisnY29ubmVjdCc6OgorCUNhbiBhdHRlbXB0IHRvIGNvbm5lY3QgdG8gJ2dpdCByZWNlaXZlLXBhY2snIChmb3IgcHVzaGluZyksCisJJ2dpdCB1cGxvYWQtcGFjaycsIGV0YyBmb3IgY29tbXVuaWNhdGlvbiB1c2luZworCWdpdCdzIG5hdGl2ZSBwYWNrZmlsZSBwcm90b2NvbC4gVGhpcworCXJlcXVpcmVzIGEgYmlkaXJlY3Rpb25hbCwgZnVsbC1kdXBsZXggY29ubmVjdGlvbi4KKysKK1N1cHBvcnRlZCBjb21tYW5kczogJ2Nvbm5lY3QnLgorCisncHVzaCc6OgorCUNhbiBkaXNjb3ZlciByZW1vdGUgcmVmcyBhbmQgcHVzaCBsb2NhbCBjb21taXRzIGFuZCB0aGUKKwloaXN0b3J5IGxlYWRpbmcgdXAgdG8gdGhlbSB0byBuZXcgb3IgZXhpc3RpbmcgcmVtb3RlIHJlZnMuCisrCitTdXBwb3J0ZWQgY29tbWFuZHM6ICdsaXN0IGZvci1wdXNoJywgJ3B1c2gnLgorCisnZXhwb3J0Jzo6CisJQ2FuIGRpc2NvdmVyIHJlbW90ZSByZWZzIGFuZCBwdXNoIHNwZWNpZmllZCBvYmplY3RzIGZyb20gYQorCWZhc3QtaW1wb3J0IHN0cmVhbSB0byByZW1vdGUgcmVmcy4KKysKK1N1cHBvcnRlZCBjb21tYW5kczogJ2xpc3QgZm9yLXB1c2gnLCAnZXhwb3J0Jy4KKworSWYgYSBoZWxwZXIgYWR2ZXJ0aXNlcyAnY29ubmVjdCcsIEdpdCB3aWxsIHVzZSBpdCBpZiBwb3NzaWJsZSBhbmQKK2ZhbGwgYmFjayB0byBhbm90aGVyIGNhcGFiaWxpdHkgaWYgdGhlIGhlbHBlciByZXF1ZXN0cyBzbyB3aGVuCitjb25uZWN0aW5nIChzZWUgdGhlICdjb25uZWN0JyBjb21tYW5kIHVuZGVyIENPTU1BTkRTKS4KK1doZW4gY2hvb3NpbmcgYmV0d2VlbiAncHVzaCcgYW5kICdleHBvcnQnLCBHaXQgcHJlZmVycyAncHVzaCcuCitPdGhlciBmcm9udGVuZHMgbWF5IGhhdmUgc29tZSBvdGhlciBvcmRlciBvZiBwcmVmZXJlbmNlLgorCisKK0NhcGFiaWxpdGllcyBmb3IgRmV0Y2hpbmcKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKydjb25uZWN0Jzo6CisJQ2FuIHRyeSB0byBjb25uZWN0IHRvICdnaXQgdXBsb2FkLXBhY2snIChmb3IgZmV0Y2hpbmcpLAorCSdnaXQgcmVjZWl2ZS1wYWNrJywgZXRjIGZvciBjb21tdW5pY2F0aW9uIHVzaW5nIHRoZQorCUdpdCdzIG5hdGl2ZSBwYWNrZmlsZSBwcm90b2NvbC4gVGhpcworCXJlcXVpcmVzIGEgYmlkaXJlY3Rpb25hbCwgZnVsbC1kdXBsZXggY29ubmVjdGlvbi4KKysKK1N1cHBvcnRlZCBjb21tYW5kczogJ2Nvbm5lY3QnLgorCisnZmV0Y2gnOjoKKwlDYW4gZGlzY292ZXIgcmVtb3RlIHJlZnMgYW5kIHRyYW5zZmVyIG9iamVjdHMgcmVhY2hhYmxlIGZyb20KKwl0aGVtIHRvIHRoZSBsb2NhbCBvYmplY3Qgc3RvcmUuCisrCitTdXBwb3J0ZWQgY29tbWFuZHM6ICdsaXN0JywgJ2ZldGNoJy4KKworJ2ltcG9ydCc6OgorCUNhbiBkaXNjb3ZlciByZW1vdGUgcmVmcyBhbmQgb3V0cHV0IG9iamVjdHMgcmVhY2hhYmxlIGZyb20KKwl0aGVtIGFzIGEgc3RyZWFtIGluIGZhc3QtaW1wb3J0IGZvcm1hdC4KKysKK1N1cHBvcnRlZCBjb21tYW5kczogJ2xpc3QnLCAnaW1wb3J0Jy4KKworSWYgYSBoZWxwZXIgYWR2ZXJ0aXNlcyAnY29ubmVjdCcsIEdpdCB3aWxsIHVzZSBpdCBpZiBwb3NzaWJsZSBhbmQKK2ZhbGwgYmFjayB0byBhbm90aGVyIGNhcGFiaWxpdHkgaWYgdGhlIGhlbHBlciByZXF1ZXN0cyBzbyB3aGVuCitjb25uZWN0aW5nIChzZWUgdGhlICdjb25uZWN0JyBjb21tYW5kIHVuZGVyIENPTU1BTkRTKS4KK1doZW4gY2hvb3NpbmcgYmV0d2VlbiAnZmV0Y2gnIGFuZCAnaW1wb3J0JywgR2l0IHByZWZlcnMgJ2ZldGNoJy4KK090aGVyIGZyb250ZW5kcyBtYXkgaGF2ZSBzb21lIG90aGVyIG9yZGVyIG9mIHByZWZlcmVuY2UuCisKK01pc2NlbGxhbmVvdXMgY2FwYWJpbGl0aWVzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCiAnb3B0aW9uJzo6CiAJRm9yIHNwZWNpZnlpbmcgc2V0dGluZ3MgbGlrZSBgdmVyYm9zaXR5YCAoaG93IG11Y2ggb3V0cHV0IHRvCiAJd3JpdGUgdG8gc3RkZXJyKSBhbmQgYGRlcHRoYCAoaG93IG11Y2ggaGlzdG9yeSBpcyB3YW50ZWQgaW4gdGhlCiAJY2FzZSBvZiBhIHNoYWxsb3cgY2xvbmUpIHRoYXQgYWZmZWN0IGhvdyBvdGhlciBjb21tYW5kcyBhcmUKIAljYXJyaWVkIG91dC4KIAotJ2Nvbm5lY3QnOjoKLQlGb3IgZmV0Y2hpbmcgYW5kIHB1c2hpbmcgdXNpbmcgZ2l0J3MgbmF0aXZlIHBhY2tmaWxlIHByb3RvY29sCi0JdGhhdCByZXF1aXJlcyBhIGJpZGlyZWN0aW9uYWwsIGZ1bGwtZHVwbGV4IGNvbm5lY3Rpb24uCi0KLSdwdXNoJzo6Ci0JRm9yIGxpc3RpbmcgcmVtb3RlIHJlZnMgYW5kIHB1c2hpbmcgc3BlY2lmaWVkIG9iamVjdHMgZnJvbSB0aGUKLQlsb2NhbCBvYmplY3Qgc3RvcmUgdG8gcmVtb3RlIHJlZnMuCi0KLSdmZXRjaCc6OgotCUZvciBsaXN0aW5nIHJlbW90ZSByZWZzIGFuZCBmZXRjaGluZyB0aGUgYXNzb2NpYXRlZCBoaXN0b3J5IHRvCi0JdGhlIGxvY2FsIG9iamVjdCBzdG9yZS4KLQotJ2ltcG9ydCc6OgotCUZvciBsaXN0aW5nIHJlbW90ZSByZWZzIGFuZCBmZXRjaGluZyB0aGUgYXNzb2NpYXRlZCBoaXN0b3J5IGFzCi0JYSBmYXN0LWltcG9ydCBzdHJlYW0uCi0KICdyZWZzcGVjJyA8cmVmc3BlYz46OgogCVRoaXMgbW9kaWZpZXMgdGhlICdpbXBvcnQnIGNhcGFiaWxpdHksIGFsbG93aW5nIHRoZSBwcm9kdWNlZAogCWZhc3QtaW1wb3J0IHN0cmVhbSB0byBtb2RpZnkgcmVmcyBpbiBhIHByaXZhdGUgbmFtZXNwYWNlCkBAIC05NSwxMDAgKzE3NCw0MCBAQAogVGhpcyBjYXBhYmlsaXR5IGNhbiBiZSBhZHZlcnRpc2VkIG11bHRpcGxlIHRpbWVzLiAgVGhlIGZpcnN0CiBhcHBsaWNhYmxlIHJlZnNwZWMgdGFrZXMgcHJlY2VkZW5jZS4gIFRoZSBsZWZ0LWhhbmQgb2YgcmVmc3BlY3MKIGFkdmVydGlzZWQgd2l0aCB0aGlzIGNhcGFiaWxpdHkgbXVzdCBjb3ZlciBhbGwgcmVmcyByZXBvcnRlZCBieQotdGhlIGxpc3QgY29tbWFuZC4gIElmIG5vICdyZWZzcGVjJyBjYXBhYmlsaXR5IGlzIGFkdmVydGlzZWQsCi10aGVyZSBpcyBhbiBpbXBsaWVkIGByZWZzcGVjICo6KmAuCit0aGUgbGlzdCBjb21tYW5kLiAgSWYgYSBoZWxwZXIgZG9lcyBub3QgbmVlZCBhIHNwZWNpZmljICdyZWZzcGVjJworY2FwYWJpbGl0eSB0aGVuIGl0IHNob3VsZCBhZHZlcnRpc2UgYHJlZnNwZWMgKjoqYC4KIAotQ2FwYWJpbGl0aWVzIGZvciBQdXNoaW5nCi1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLSdjb25uZWN0Jzo6Ci0JQ2FuIGF0dGVtcHQgdG8gY29ubmVjdCB0byAnZ2l0IHJlY2VpdmUtcGFjaycgKGZvciBwdXNoaW5nKSwKLQknZ2l0IHVwbG9hZC1wYWNrJywgZXRjIGZvciBjb21tdW5pY2F0aW9uIHVzaW5nIHRoZQotCXBhY2tmaWxlIHByb3RvY29sLgotKwotU3VwcG9ydGVkIGNvbW1hbmRzOiAnY29ubmVjdCcuCi0KLSdwdXNoJzo6Ci0JQ2FuIGRpc2NvdmVyIHJlbW90ZSByZWZzIGFuZCBwdXNoIGxvY2FsIGNvbW1pdHMgYW5kIHRoZQotCWhpc3RvcnkgbGVhZGluZyB1cCB0byB0aGVtIHRvIG5ldyBvciBleGlzdGluZyByZW1vdGUgcmVmcy4KLSsKLVN1cHBvcnRlZCBjb21tYW5kczogJ2xpc3QgZm9yLXB1c2gnLCAncHVzaCcuCi0KLUlmIGEgaGVscGVyIGFkdmVydGlzZXMgYm90aCAnY29ubmVjdCcgYW5kICdwdXNoJywgZ2l0IHdpbGwgdXNlCi0nY29ubmVjdCcgaWYgcG9zc2libGUgYW5kIGZhbGwgYmFjayB0byAncHVzaCcgaWYgdGhlIGhlbHBlciByZXF1ZXN0cwotc28gd2hlbiBjb25uZWN0aW5nIChzZWUgdGhlICdjb25uZWN0JyBjb21tYW5kIHVuZGVyIENPTU1BTkRTKS4KLQotQ2FwYWJpbGl0aWVzIGZvciBGZXRjaGluZwotfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotJ2Nvbm5lY3QnOjoKLQlDYW4gdHJ5IHRvIGNvbm5lY3QgdG8gJ2dpdCB1cGxvYWQtcGFjaycgKGZvciBmZXRjaGluZyksCi0JJ2dpdCByZWNlaXZlLXBhY2snLCBldGMgZm9yIGNvbW11bmljYXRpb24gdXNpbmcgdGhlCi0JcGFja2ZpbGUgcHJvdG9jb2wuCi0rCi1TdXBwb3J0ZWQgY29tbWFuZHM6ICdjb25uZWN0Jy4KLQotJ2ZldGNoJzo6Ci0JQ2FuIGRpc2NvdmVyIHJlbW90ZSByZWZzIGFuZCB0cmFuc2ZlciBvYmplY3RzIHJlYWNoYWJsZSBmcm9tCi0JdGhlbSB0byB0aGUgbG9jYWwgb2JqZWN0IHN0b3JlLgotKwotU3VwcG9ydGVkIGNvbW1hbmRzOiAnbGlzdCcsICdmZXRjaCcuCi0KLSdpbXBvcnQnOjoKLQlDYW4gZGlzY292ZXIgcmVtb3RlIHJlZnMgYW5kIG91dHB1dCBvYmplY3RzIHJlYWNoYWJsZSBmcm9tCi0JdGhlbSBhcyBhIHN0cmVhbSBpbiBmYXN0LWltcG9ydCBmb3JtYXQuCi0rCi1TdXBwb3J0ZWQgY29tbWFuZHM6ICdsaXN0JywgJ2ltcG9ydCcuCi0KLUlmIGEgaGVscGVyIGFkdmVydGlzZXMgJ2Nvbm5lY3QnLCBnaXQgd2lsbCB1c2UgaXQgaWYgcG9zc2libGUgYW5kCi1mYWxsIGJhY2sgdG8gYW5vdGhlciBjYXBhYmlsaXR5IGlmIHRoZSBoZWxwZXIgcmVxdWVzdHMgc28gd2hlbgotY29ubmVjdGluZyAoc2VlIHRoZSAnY29ubmVjdCcgY29tbWFuZCB1bmRlciBDT01NQU5EUykuCi1XaGVuIGNob29zaW5nIGJldHdlZW4gJ2ZldGNoJyBhbmQgJ2ltcG9ydCcsIGdpdCBwcmVmZXJzICdmZXRjaCcuCi1PdGhlciBmcm9udGVuZHMgbWF5IGhhdmUgc29tZSBvdGhlciBvcmRlciBvZiBwcmVmZXJlbmNlLgotCi0ncmVmc3BlYycgPHJlZnNwZWM+OjoKKydiaWRpLWltcG9ydCc6OgogCVRoaXMgbW9kaWZpZXMgdGhlICdpbXBvcnQnIGNhcGFiaWxpdHkuCi0rCi1BIGhlbHBlciBhZHZlcnRpc2luZwotYHJlZnNwZWMgcmVmcy9oZWFkcy8qOnJlZnMvc3ZuL29yaWdpbi9icmFuY2hlcy8qYAotaW4gaXRzIGNhcGFiaWxpdGllcyBpcyBzYXlpbmcgdGhhdCwgd2hlbiBpdCBoYW5kbGVzCi1gaW1wb3J0IHJlZnMvaGVhZHMvdG9waWNgLCB0aGUgc3RyZWFtIGl0IG91dHB1dHMgd2lsbCB1cGRhdGUgdGhlCi1gcmVmcy9zdm4vb3JpZ2luL2JyYW5jaGVzL3RvcGljYCByZWYuCi0rCi1UaGlzIGNhcGFiaWxpdHkgY2FuIGJlIGFkdmVydGlzZWQgbXVsdGlwbGUgdGltZXMuICBUaGUgZmlyc3QKLWFwcGxpY2FibGUgcmVmc3BlYyB0YWtlcyBwcmVjZWRlbmNlLiAgVGhlIGxlZnQtaGFuZCBvZiByZWZzcGVjcwotYWR2ZXJ0aXNlZCB3aXRoIHRoaXMgY2FwYWJpbGl0eSBtdXN0IGNvdmVyIGFsbCByZWZzIHJlcG9ydGVkIGJ5Ci10aGUgbGlzdCBjb21tYW5kLiAgSWYgbm8gJ3JlZnNwZWMnIGNhcGFiaWxpdHkgaXMgYWR2ZXJ0aXNlZCwKLXRoZXJlIGlzIGFuIGltcGxpZWQgYHJlZnNwZWMgKjoqYC4KKwlUaGUgZmFzdC1pbXBvcnQgY29tbWFuZHMgJ2NhdC1ibG9iJyBhbmQgJ2xzJyBjYW4gYmUgdXNlZCBieSByZW1vdGUtaGVscGVycworCXRvIHJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IGJsb2JzIGFuZCB0cmVlcyB0aGF0IGFscmVhZHkgZXhpc3QgaW4KKwlmYXN0LWltcG9ydCdzIG1lbW9yeS4gVGhpcyByZXF1aXJlcyBhIGNoYW5uZWwgZnJvbSBmYXN0LWltcG9ydCB0byB0aGUKKwlyZW1vdGUtaGVscGVyLgorCUlmIGl0IGlzIGFkdmVydGlzZWQgaW4gYWRkaXRpb24gdG8gImltcG9ydCIsIEdpdCBlc3RhYmxpc2hlcyBhIHBpcGUgZnJvbQorCWZhc3QtaW1wb3J0IHRvIHRoZSByZW1vdGUtaGVscGVyJ3Mgc3RkaW4uCisJSXQgZm9sbG93cyB0aGF0IEdpdCBhbmQgZmFzdC1pbXBvcnQgYXJlIGJvdGggY29ubmVjdGVkIHRvIHRoZQorCXJlbW90ZS1oZWxwZXIncyBzdGRpbi4gQmVjYXVzZSBHaXQgY2FuIHNlbmQgbXVsdGlwbGUgY29tbWFuZHMgdG8KKwl0aGUgcmVtb3RlLWhlbHBlciBpdCBpcyByZXF1aXJlZCB0aGF0IGhlbHBlcnMgdGhhdCB1c2UgJ2JpZGktaW1wb3J0JworCWJ1ZmZlciBhbGwgJ2ltcG9ydCcgY29tbWFuZHMgb2YgYSBiYXRjaCBiZWZvcmUgc2VuZGluZyBkYXRhIHRvIGZhc3QtaW1wb3J0LgorCVRoaXMgaXMgdG8gcHJldmVudCBtaXhpbmcgY29tbWFuZHMgYW5kIGZhc3QtaW1wb3J0IHJlc3BvbnNlcyBvbiB0aGUKKwloZWxwZXIncyBzdGRpbi4KIAotSU5WT0NBVElPTgotLS0tLS0tLS0tLQorJ2V4cG9ydC1tYXJrcycgPGZpbGU+OjoKKwlUaGlzIG1vZGlmaWVzIHRoZSAnZXhwb3J0JyBjYXBhYmlsaXR5LCBpbnN0cnVjdGluZyBHaXQgdG8gZHVtcCB0aGUKKwlpbnRlcm5hbCBtYXJrcyB0YWJsZSB0byA8ZmlsZT4gd2hlbiBjb21wbGV0ZS4gRm9yIGRldGFpbHMsCisJcmVhZCB1cCBvbiAnLS1leHBvcnQtbWFya3M9PGZpbGU+JyBpbiBsaW5rZ2l0OmdpdC1mYXN0LWV4cG9ydFsxXS4KIAotUmVtb3RlIGhlbHBlciBwcm9ncmFtcyBhcmUgaW52b2tlZCB3aXRoIG9uZSBvciAob3B0aW9uYWxseSkgdHdvCi1hcmd1bWVudHMuIFRoZSBmaXJzdCBhcmd1bWVudCBzcGVjaWZpZXMgYSByZW1vdGUgcmVwb3NpdG9yeSBhcyBpbiBnaXQ7Ci1pdCBpcyBlaXRoZXIgdGhlIG5hbWUgb2YgYSBjb25maWd1cmVkIHJlbW90ZSBvciBhIFVSTC4gVGhlIHNlY29uZAotYXJndW1lbnQgc3BlY2lmaWVzIGEgVVJMOyBpdCBpcyB1c3VhbGx5IG9mIHRoZSBmb3JtCi0nPHRyYW5zcG9ydD46Ly88YWRkcmVzcz4nLCBidXQgYW55IGFyYml0cmFyeSBzdHJpbmcgaXMgcG9zc2libGUuCi1UaGUgJ0dJVF9ESVInIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCB1cCBmb3IgdGhlIHJlbW90ZSBoZWxwZXIKLWFuZCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hlcmUgdG8gc3RvcmUgYWRkaXRpb25hbCBkYXRhIG9yIGZyb20KLXdoaWNoIGRpcmVjdG9yeSB0byBpbnZva2UgYXV4aWxpYXJ5IGdpdCBjb21tYW5kcy4KKydpbXBvcnQtbWFya3MnIDxmaWxlPjo6CisJVGhpcyBtb2RpZmllcyB0aGUgJ2V4cG9ydCcgY2FwYWJpbGl0eSwgaW5zdHJ1Y3RpbmcgR2l0IHRvIGxvYWQgdGhlCisJbWFya3Mgc3BlY2lmaWVkIGluIDxmaWxlPiBiZWZvcmUgcHJvY2Vzc2luZyBhbnkgaW5wdXQuIEZvciBkZXRhaWxzLAorCXJlYWQgdXAgb24gJy0taW1wb3J0LW1hcmtzPTxmaWxlPicgaW4gbGlua2dpdDpnaXQtZmFzdC1leHBvcnRbMV0uCiAKLVdoZW4gZ2l0IGVuY291bnRlcnMgYSBVUkwgb2YgdGhlIGZvcm0gJzx0cmFuc3BvcnQ+Oi8vPGFkZHJlc3M+Jywgd2hlcmUKLSc8dHJhbnNwb3J0PicgaXMgYSBwcm90b2NvbCB0aGF0IGl0IGNhbm5vdCBoYW5kbGUgbmF0aXZlbHksIGl0Ci1hdXRvbWF0aWNhbGx5IGludm9rZXMgJ2dpdCByZW1vdGUtPHRyYW5zcG9ydD4nIHdpdGggdGhlIGZ1bGwgVVJMIGFzCi10aGUgc2Vjb25kIGFyZ3VtZW50LiBJZiBzdWNoIGEgVVJMIGlzIGVuY291bnRlcmVkIGRpcmVjdGx5IG9uIHRoZQotY29tbWFuZCBsaW5lLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIHNlY29uZCwgYW5kIGlmIGl0Ci1pcyBlbmNvdW50ZXJlZCBpbiBhIGNvbmZpZ3VyZWQgcmVtb3RlLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIG5hbWUKLW9mIHRoYXQgcmVtb3RlLgorJ3NpZ25lZC10YWdzJzo6CisJVGhpcyBtb2RpZmllcyB0aGUgJ2V4cG9ydCcgY2FwYWJpbGl0eSwgaW5zdHJ1Y3RpbmcgR2l0IHRvIHBhc3MKKwknLS1zaWduZWQtdGFncz12ZXJiYXRpbScgdG8gbGlua2dpdDpnaXQtZmFzdC1leHBvcnRbMV0uICBJbiB0aGUKKwlhYnNlbmNlIG9mIHRoaXMgY2FwYWJpbGl0eSwgR2l0IHdpbGwgdXNlICctLXNpZ25lZC10YWdzPXdhcm4tc3RyaXAnLgogCi1BIFVSTCBvZiB0aGUgZm9ybSAnPHRyYW5zcG9ydD46OjxhZGRyZXNzPicgZXhwbGljaXRseSBpbnN0cnVjdHMgZ2l0IHRvCi1pbnZva2UgJ2dpdCByZW1vdGUtPHRyYW5zcG9ydD4nIHdpdGggJzxhZGRyZXNzPicgYXMgdGhlIHNlY29uZAotYXJndW1lbnQuIElmIHN1Y2ggYSBVUkwgaXMgZW5jb3VudGVyZWQgZGlyZWN0bHkgb24gdGhlIGNvbW1hbmQgbGluZSwKLXRoZSBmaXJzdCBhcmd1bWVudCBpcyAnPGFkZHJlc3M+JywgYW5kIGlmIGl0IGlzIGVuY291bnRlcmVkIGluIGEKLWNvbmZpZ3VyZWQgcmVtb3RlLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIG5hbWUgb2YgdGhhdCByZW1vdGUuCiAKLUFkZGl0aW9uYWxseSwgd2hlbiBhIGNvbmZpZ3VyZWQgcmVtb3RlIGhhcyAncmVtb3RlLjxuYW1lPi52Y3MnIHNldCB0bwotJzx0cmFuc3BvcnQ+JywgZ2l0IGV4cGxpY2l0bHkgaW52b2tlcyAnZ2l0IHJlbW90ZS08dHJhbnNwb3J0Picgd2l0aAotJzxuYW1lPicgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiBJZiBzZXQsIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMKLSdyZW1vdGUuPG5hbWU+LnVybCc7IG90aGVyd2lzZSwgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBvbWl0dGVkLgogCiBDT01NQU5EUwogLS0tLS0tLS0KQEAgLTE5OCw5ICsyMTcsMTEgQEAKICdjYXBhYmlsaXRpZXMnOjoKIAlMaXN0cyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBoZWxwZXIsIG9uZSBwZXIgbGluZSwgZW5kaW5nCiAJd2l0aCBhIGJsYW5rIGxpbmUuIEVhY2ggY2FwYWJpbGl0eSBtYXkgYmUgcHJlY2VkZWQgd2l0aCAnKicsCi0Jd2hpY2ggbWFya3MgdGhlbSBtYW5kYXRvcnkgZm9yIGdpdCB2ZXJzaW9uIHVzaW5nIHRoZSByZW1vdGUKLQloZWxwZXIgdG8gdW5kZXJzdGFuZCAodW5rbm93biBtYW5kYXRvcnkgY2FwYWJpbGl0eSBpcyBmYXRhbAotCWVycm9yKS4KKwl3aGljaCBtYXJrcyB0aGVtIG1hbmRhdG9yeSBmb3IgR2l0IHZlcnNpb25zIHVzaW5nIHRoZSByZW1vdGUKKwloZWxwZXIgdG8gdW5kZXJzdGFuZC4gQW55IHVua25vd24gbWFuZGF0b3J5IGNhcGFiaWxpdHkgaXMgYQorCWZhdGFsIGVycm9yLgorKworU3VwcG9ydCBmb3IgdGhpcyBjb21tYW5kIGlzIG1hbmRhdG9yeS4KIAogJ2xpc3QnOjoKIAlMaXN0cyB0aGUgcmVmcywgb25lIHBlciBsaW5lLCBpbiB0aGUgZm9ybWF0ICI8dmFsdWU+IDxuYW1lPgpAQCAtMjEwLDkgKzIzMSwyMCBAQAogCXRoZSBuYW1lOyB1bnJlY29nbml6ZWQgYXR0cmlidXRlcyBhcmUgaWdub3JlZC4gVGhlIGxpc3QgZW5kcwogCXdpdGggYSBibGFuayBsaW5lLgogKwotSWYgJ3B1c2gnIGlzIHN1cHBvcnRlZCB0aGlzIG1heSBiZSBjYWxsZWQgYXMgJ2xpc3QgZm9yLXB1c2gnCi10byBvYnRhaW4gdGhlIGN1cnJlbnQgcmVmcyBwcmlvciB0byBzZW5kaW5nIG9uZSBvciBtb3JlICdwdXNoJwotY29tbWFuZHMgdG8gdGhlIGhlbHBlci4KK1NlZSBSRUYgTElTVCBBVFRSSUJVVEVTIGZvciBhIGxpc3Qgb2YgY3VycmVudGx5IGRlZmluZWQgYXR0cmlidXRlcy4KKysKK1N1cHBvcnRlZCBpZiB0aGUgaGVscGVyIGhhcyB0aGUgImZldGNoIiBvciAiaW1wb3J0IiBjYXBhYmlsaXR5LgorCisnbGlzdCBmb3ItcHVzaCc6OgorCVNpbWlsYXIgdG8gJ2xpc3QnLCBleGNlcHQgdGhhdCBpdCBpcyB1c2VkIGlmIGFuZCBvbmx5IGlmCisJdGhlIGNhbGxlciB3YW50cyB0byB0aGUgcmVzdWx0aW5nIHJlZiBsaXN0IHRvIHByZXBhcmUKKwlwdXNoIGNvbW1hbmRzLgorCUEgaGVscGVyIHN1cHBvcnRpbmcgYm90aCBwdXNoIGFuZCBmZXRjaCBjYW4gdXNlIHRoaXMKKwl0byBkaXN0aW5ndWlzaCBmb3Igd2hpY2ggb3BlcmF0aW9uIHRoZSBvdXRwdXQgb2YgJ2xpc3QnCisJaXMgZ29pbmcgdG8gYmUgdXNlZCwgcG9zc2libHkgcmVkdWNpbmcgdGhlIGFtb3VudAorCW9mIHdvcmsgdGhhdCBuZWVkcyB0byBiZSBwZXJmb3JtZWQuCisrCitTdXBwb3J0ZWQgaWYgdGhlIGhlbHBlciBoYXMgdGhlICJwdXNoIiBvciAiZXhwb3J0IiBjYXBhYmlsaXR5LgogCiAnb3B0aW9uJyA8bmFtZT4gPHZhbHVlPjo6CiAJU2V0cyB0aGUgdHJhbnNwb3J0IGhlbHBlciBvcHRpb24gPG5hbWU+IHRvIDx2YWx1ZT4uICBPdXRwdXRzIGEKQEAgLTIyMiw2ICsyNTQsOCBAQAogCWZvciBpdCkuICBPcHRpb25zIHNob3VsZCBiZSBzZXQgYmVmb3JlIG90aGVyIGNvbW1hbmRzLAogCWFuZCBtYXkgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvZiB0aG9zZSBjb21tYW5kcy4KICsKK1NlZSBPUFRJT05TIGZvciBhIGxpc3Qgb2YgY3VycmVudGx5IGRlZmluZWQgb3B0aW9ucy4KKysKIFN1cHBvcnRlZCBpZiB0aGUgaGVscGVyIGhhcyB0aGUgIm9wdGlvbiIgY2FwYWJpbGl0eS4KIAogJ2ZldGNoJyA8c2hhMT4gPG5hbWU+OjoKQEAgLTIzMCw3ICsyNjQsNyBAQAogCXBlciBsaW5lLCB0ZXJtaW5hdGVkIHdpdGggYSBibGFuayBsaW5lLgogCU91dHB1dHMgYSBzaW5nbGUgYmxhbmsgbGluZSB3aGVuIGFsbCBmZXRjaCBjb21tYW5kcyBpbiB0aGUKIAlzYW1lIGJhdGNoIGFyZSBjb21wbGV0ZS4gT25seSBvYmplY3RzIHdoaWNoIHdlcmUgcmVwb3J0ZWQKLQlpbiB0aGUgcmVmIGxpc3Qgd2l0aCBhIHNoYTEgbWF5IGJlIGZldGNoZWQgdGhpcyB3YXkuCisJaW4gdGhlIG91dHB1dCBvZiAnbGlzdCcgd2l0aCBhIHNoYTEgbWF5IGJlIGZldGNoZWQgdGhpcyB3YXkuCiArCiBPcHRpb25hbGx5IG1heSBvdXRwdXQgYSAnbG9jayA8ZmlsZT4nIGxpbmUgaW5kaWNhdGluZyBhIGZpbGUgdW5kZXIKIEdJVF9ESVIvb2JqZWN0cy9wYWNrIHdoaWNoIGlzIGtlZXBpbmcgYSBwYWNrIHVudGlsIHJlZnMgY2FuIGJlCkBAIC0yODYsOCArMzIwLDI5IEBACiBoZWxwZXIgc2hvdWxkIHByb2R1Y2UgYSBmYXN0LWltcG9ydCBzdHJlYW0gdGVybWluYXRlZCBieSBhICdkb25lJwogY29tbWFuZC4KICsKK05vdGUgdGhhdCBpZiB0aGUgJ2JpZGktaW1wb3J0JyBjYXBhYmlsaXR5IGlzIHVzZWQgdGhlIGNvbXBsZXRlIGJhdGNoCitzZXF1ZW5jZSBoYXMgdG8gYmUgYnVmZmVyZWQgYmVmb3JlIHN0YXJ0aW5nIHRvIHNlbmQgZGF0YSB0byBmYXN0LWltcG9ydAordG8gcHJldmVudCBtaXhpbmcgb2YgY29tbWFuZHMgYW5kIGZhc3QtaW1wb3J0IHJlc3BvbnNlcyBvbiB0aGUgaGVscGVyJ3MKK3N0ZGluLgorKwogU3VwcG9ydGVkIGlmIHRoZSBoZWxwZXIgaGFzIHRoZSAiaW1wb3J0IiBjYXBhYmlsaXR5LgogCisnZXhwb3J0Jzo6CisJSW5zdHJ1Y3RzIHRoZSByZW1vdGUgaGVscGVyIHRoYXQgYW55IHN1YnNlcXVlbnQgaW5wdXQgaXMKKwlwYXJ0IG9mIGEgZmFzdC1pbXBvcnQgc3RyZWFtIChnZW5lcmF0ZWQgYnkgJ2dpdCBmYXN0LWV4cG9ydCcpCisJY29udGFpbmluZyBvYmplY3RzIHdoaWNoIHNob3VsZCBiZSBwdXNoZWQgdG8gdGhlIHJlbW90ZS4KKysKK0VzcGVjaWFsbHkgdXNlZnVsIGZvciBpbnRlcm9wZXJhYmlsaXR5IHdpdGggYSBmb3JlaWduIHZlcnNpb25pbmcKK3N5c3RlbS4KKysKK1RoZSAnZXhwb3J0LW1hcmtzJyBhbmQgJ2ltcG9ydC1tYXJrcycgY2FwYWJpbGl0aWVzLCBpZiBzcGVjaWZpZWQsCithZmZlY3QgdGhpcyBjb21tYW5kIGluIHNvIGZhciBhcyB0aGV5IGFyZSBwYXNzZWQgb24gdG8gJ2dpdAorZmFzdC1leHBvcnQnLCB3aGljaCB0aGVuIHdpbGwgbG9hZC9zdG9yZSBhIHRhYmxlIG9mIG1hcmtzIGZvcgorbG9jYWwgb2JqZWN0cy4gVGhpcyBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgZm9yIGluY3JlbWVudGFsCitvcGVyYXRpb25zLgorKworU3VwcG9ydGVkIGlmIHRoZSBoZWxwZXIgaGFzIHRoZSAiZXhwb3J0IiBjYXBhYmlsaXR5LgorCiAnY29ubmVjdCcgPHNlcnZpY2U+OjoKIAlDb25uZWN0cyB0byBnaXZlbiBzZXJ2aWNlLiBTdGFuZGFyZCBpbnB1dCBhbmQgc3RhbmRhcmQgb3V0cHV0CiAJb2YgaGVscGVyIGFyZSBjb25uZWN0ZWQgdG8gc3BlY2lmaWVkIHNlcnZpY2UgKGdpdCBwcmVmaXggaXMKQEAgLTMxMywxMCArMzY4LDkgQEAKIFJFRiBMSVNUIEFUVFJJQlVURVMKIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAotJ2Zvci1wdXNoJzo6Ci0JVGhlIGNhbGxlciB3YW50cyB0byB1c2UgdGhlIHJlZiBsaXN0IHRvIHByZXBhcmUgcHVzaAotCWNvbW1hbmRzLiAgQSBoZWxwZXIgbWlnaHQgY2hvc2UgdG8gYWNxdWlyZSB0aGUgcmVmIGxpc3QgYnkKLQlvcGVuaW5nIGEgZGlmZmVyZW50IHR5cGUgb2YgY29ubmVjdGlvbiB0byB0aGUgZGVzdGluYXRpb24uCitUaGUgJ2xpc3QnIGNvbW1hbmQgcHJvZHVjZXMgYSBsaXN0IG9mIHJlZnMgaW4gd2hpY2ggZWFjaCByZWYKK21heSBiZSBmb2xsb3dlZCBieSBhIGxpc3Qgb2YgYXR0cmlidXRlcy4gVGhlIGZvbGxvd2luZyByZWYgbGlzdAorYXR0cmlidXRlcyBhcmUgZGVmaW5lZC4KIAogJ3VuY2hhbmdlZCc6OgogCVRoaXMgcmVmIGlzIHVuY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCBpbXBvcnQgb3IgZmV0Y2gsIGFsdGhvdWdoCkBAIC0zMjQsNiArMzc4LDEwIEBACiAKIE9QVElPTlMKIC0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBkZWZpbmVkIGFuZCAodW5kZXIgc3VpdGFibGUgY2lyY3Vtc3RhbmNlcykKK3NldCBieSBHaXQgaWYgdGhlIHJlbW90ZSBoZWxwZXIgaGFzIHRoZSAnb3B0aW9uJyBjYXBhYmlsaXR5LgorCiAnb3B0aW9uIHZlcmJvc2l0eScgPG4+OjoKIAlDaGFuZ2VzIHRoZSB2ZXJib3NpdHkgb2YgbWVzc2FnZXMgZGlzcGxheWVkIGJ5IHRoZSBoZWxwZXIuCiAJQSB2YWx1ZSBvZiAwIGZvciA8bj4gbWVhbnMgdGhhdCBwcm9jZXNzZXMgb3BlcmF0ZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRyZXBvc2l0b3J5LWxheW91dC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdHJlcG9zaXRvcnktbGF5b3V0LnR4dAppbmRleCA1Yzg5MWYxLi5hYTAzODgyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdHJlcG9zaXRvcnktbGF5b3V0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHJlcG9zaXRvcnktbGF5b3V0LnR4dApAQCAtMTIsMTIgKzEyLDI0IEBACiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KIAotWW91IG1heSBmaW5kIHRoZXNlIHRoaW5ncyBpbiB5b3VyIGdpdCByZXBvc2l0b3J5IChgLmdpdGAKLWRpcmVjdG9yeSBmb3IgYSByZXBvc2l0b3J5IGFzc29jaWF0ZWQgd2l0aCB5b3VyIHdvcmtpbmcgdHJlZSwgb3IKLWA8cHJvamVjdD4uZ2l0YCBkaXJlY3RvcnkgZm9yIGEgcHVibGljICdiYXJlJyByZXBvc2l0b3J5LiBJdCBpcwotYWxzbyBwb3NzaWJsZSB0byBoYXZlIGEgd29ya2luZyB0cmVlIHdoZXJlIGAuZ2l0YCBpcyBhIHBsYWluCi1BU0NJSSBmaWxlIGNvbnRhaW5pbmcgYGdpdGRpcjogPHBhdGg+YCwgaS5lLiB0aGUgcGF0aCB0byB0aGUKLXJlYWwgZ2l0IHJlcG9zaXRvcnkpLgorQSBHaXQgcmVwb3NpdG9yeSBjb21lcyBpbiB0d28gZGlmZmVyZW50IGZsYXZvdXJzOgorCisgKiBhIGAuZ2l0YCBkaXJlY3RvcnkgYXQgdGhlIHJvb3Qgb2YgdGhlIHdvcmtpbmcgdHJlZTsKKworICogYSBgPHByb2plY3Q+LmdpdGAgZGlyZWN0b3J5IHRoYXQgaXMgYSAnYmFyZScgcmVwb3NpdG9yeQorICAgKGkuZS4gd2l0aG91dCBpdHMgb3duIHdvcmtpbmcgdHJlZSksIHRoYXQgaXMgdHlwaWNhbGx5IHVzZWQgZm9yCisgICBleGNoYW5naW5nIGhpc3RvcmllcyB3aXRoIG90aGVycyBieSBwdXNoaW5nIGludG8gaXQgYW5kIGZldGNoaW5nCisgICBmcm9tIGl0LgorCisqTm90ZSo6IEFsc28geW91IGNhbiBoYXZlIGEgcGxhaW4gdGV4dCBmaWxlIGAuZ2l0YCBhdCB0aGUgcm9vdCBvZgoreW91ciB3b3JraW5nIHRyZWUsIGNvbnRhaW5pbmcgYGdpdGRpcjogPHBhdGg+YCB0byBwb2ludCBhdCB0aGUgcmVhbAorZGlyZWN0b3J5IHRoYXQgaGFzIHRoZSByZXBvc2l0b3J5LiAgVGhpcyBtZWNoYW5pc20gaXMgb2Z0ZW4gdXNlZCBmb3IKK2Egd29ya2luZyB0cmVlIG9mIGEgc3VibW9kdWxlIGNoZWNrb3V0LCB0byBhbGxvdyB5b3UgaW4gdGhlCitjb250YWluaW5nIHN1cGVycHJvamVjdCB0byBgZ2l0IGNoZWNrb3V0YCBhIGJyYW5jaCB0aGF0IGRvZXMgbm90CitoYXZlIHRoZSBzdWJtb2R1bGUuICBUaGUgYGNoZWNrb3V0YCBoYXMgdG8gcmVtb3ZlIHRoZSBlbnRpcmUKK3N1Ym1vZHVsZSB3b3JraW5nIHRyZWUsIHdpdGhvdXQgbG9zaW5nIHRoZSBzdWJtb2R1bGUgcmVwb3NpdG9yeS4KKworVGhlc2UgdGhpbmdzIG1heSBleGlzdCBpbiBhIEdpdCByZXBvc2l0b3J5LgogCiBvYmplY3RzOjoKIAlPYmplY3Qgc3RvcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVwb3NpdG9yeS4gIFVzdWFsbHkKQEAgLTkzLDYgKzEwNSwxMiBAQAogCXJlY29yZHMgdGlwLW9mLXRoZS10cmVlIGNvbW1pdCBvYmplY3RzIG9mIGJyYW5jaGVzIGNvcGllZAogCWZyb20gYSByZW1vdGUgcmVwb3NpdG9yeS4KIAorcmVmcy9yZXBsYWNlL2A8b2JqLXNoYTE+YDo6CisJcmVjb3JkcyB0aGUgU0hBLTEgb2YgdGhlIG9iamVjdCB0aGF0IHJlcGxhY2VzIGA8b2JqLXNoYTE+YC4KKwlUaGlzIGlzIHNpbWlsYXIgdG8gaW5mby9ncmFmdHMgYW5kIGlzIGludGVybmFsbHkgdXNlZCBhbmQKKwltYWludGFpbmVkIGJ5IGxpbmtnaXQ6Z2l0LXJlcGxhY2VbMV0uIFN1Y2ggcmVmcyBjYW4gYmUgZXhjaGFuZ2VkCisJYmV0d2VlbiByZXBvc2l0b3JpZXMgd2hpbGUgZ3JhZnRzIGFyZSBub3QuCisKIHBhY2tlZC1yZWZzOjoKIAlyZWNvcmRzIHRoZSBzYW1lIGluZm9ybWF0aW9uIGFzIHJlZnMvaGVhZHMvLCByZWZzL3RhZ3MvLAogCWFuZCBmcmllbmRzIHJlY29yZCBpbiBhIG1vcmUgZWZmaWNpZW50IHdheS4gIFNlZQpAQCAtMTAyLDcgKzEyMCw3IEBACiAJQSBzeW1yZWYgKHNlZSBnbG9zc2FyeSkgdG8gdGhlIGByZWZzL2hlYWRzL2AgbmFtZXNwYWNlCiAJZGVzY3JpYmluZyB0aGUgY3VycmVudGx5IGFjdGl2ZSBicmFuY2guICBJdCBkb2VzIG5vdCBtZWFuCiAJbXVjaCBpZiB0aGUgcmVwb3NpdG9yeSBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSB3b3JraW5nIHRyZWUKLQkoaS5lLiBhICdiYXJlJyByZXBvc2l0b3J5KSwgYnV0IGEgdmFsaWQgZ2l0IHJlcG9zaXRvcnkKKwkoaS5lLiBhICdiYXJlJyByZXBvc2l0b3J5KSwgYnV0IGEgdmFsaWQgR2l0IHJlcG9zaXRvcnkKIAkqbXVzdCogaGF2ZSB0aGUgSEVBRCBmaWxlOyBzb21lIHBvcmNlbGFpbnMgbWF5IHVzZSBpdCB0bwogCWd1ZXNzIHRoZSBkZXNpZ25hdGVkICJkZWZhdWx0IiBicmFuY2ggb2YgdGhlIHJlcG9zaXRvcnkKIAkodXN1YWxseSAnbWFzdGVyJykuICBJdCBpcyBsZWdhbCBpZiB0aGUgbmFtZWQgYnJhbmNoCkBAIC0xMjUsNyArMTQzLDcgQEAKIAlhbmQgbm90IGxpa2VseSB0byBiZSBmb3VuZCBpbiBtb2Rlcm4gcmVwb3NpdG9yaWVzLgogCiBob29rczo6Ci0JSG9va3MgYXJlIGN1c3RvbWl6YXRpb24gc2NyaXB0cyB1c2VkIGJ5IHZhcmlvdXMgZ2l0CisJSG9va3MgYXJlIGN1c3RvbWl6YXRpb24gc2NyaXB0cyB1c2VkIGJ5IHZhcmlvdXMgR2l0CiAJY29tbWFuZHMuICBBIGhhbmRmdWwgb2Ygc2FtcGxlIGhvb2tzIGFyZSBpbnN0YWxsZWQgd2hlbgogCSdnaXQgaW5pdCcgaXMgcnVuLCBidXQgYWxsIG9mIHRoZW0gYXJlIGRpc2FibGVkIGJ5CiAJZGVmYXVsdC4gIFRvIGVuYWJsZSwgdGhlIGAuc2FtcGxlYCBzdWZmaXggaGFzIHRvIGJlCkBAIC0xNjMsOSArMTgxLDEzIEBACiAJVGhpcyBmaWxlLCBieSBjb252ZW50aW9uIGFtb25nIFBvcmNlbGFpbnMsIHN0b3JlcyB0aGUKIAlleGNsdWRlIHBhdHRlcm4gbGlzdC4gYC5naXRpZ25vcmVgIGlzIHRoZSBwZXItZGlyZWN0b3J5CiAJaWdub3JlIGZpbGUuICAnZ2l0IHN0YXR1cycsICdnaXQgYWRkJywgJ2dpdCBybScgYW5kCi0JJ2dpdCBjbGVhbicgbG9vayBhdCBpdCBidXQgdGhlIGNvcmUgZ2l0IGNvbW1hbmRzIGRvIG5vdCBsb29rCisJJ2dpdCBjbGVhbicgbG9vayBhdCBpdCBidXQgdGhlIGNvcmUgR2l0IGNvbW1hbmRzIGRvIG5vdCBsb29rCiAJYXQgaXQuICBTZWUgYWxzbzogbGlua2dpdDpnaXRpZ25vcmVbNV0uCiAKK2luZm8vc3BhcnNlLWNoZWNrb3V0OjoKKwlUaGlzIGZpbGUgc3RvcmVzIHNwYXJzZSBjaGVja291dCBwYXR0ZXJucy4KKwlTZWUgYWxzbzogbGlua2dpdDpnaXQtcmVhZC10cmVlWzFdLgorCiByZW1vdGVzOjoKIAlTdG9yZXMgc2hvcnRoYW5kcyBmb3IgVVJMIGFuZCBkZWZhdWx0IHJlZm5hbWVzIGZvciB1c2UKIAl3aGVuIGludGVyYWN0aW5nIHdpdGggcmVtb3RlIHJlcG9zaXRvcmllcyB2aWEgJ2dpdCBmZXRjaCcsCkBAIC0xODksNiArMjExLDkgQEAKIAlhbmQgbWFpbnRhaW5lZCBieSBzaGFsbG93IGNsb25lIG1lY2hhbmlzbS4gIFNlZSBgLS1kZXB0aGAKIAlvcHRpb24gdG8gbGlua2dpdDpnaXQtY2xvbmVbMV0gYW5kIGxpbmtnaXQ6Z2l0LWZldGNoWzFdLgogCittb2R1bGVzOjoKKwlDb250YWlucyB0aGUgZ2l0LXJlcG9zaXRvcmllcyBvZiB0aGUgc3VibW9kdWxlcy4KKwogU0VFIEFMU08KIC0tLS0tLS0tCiBsaW5rZ2l0OmdpdC1pbml0WzFdLApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRyZXZpc2lvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9naXRyZXZpc2lvbnMudHh0CmluZGV4IGZjNDc4OWYuLmMwZWQ2ZDEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0cmV2aXNpb25zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHJldmlzaW9ucy50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdHJldmlzaW9ucyAtIHNwZWNpZnlpbmcgcmV2aXNpb25zIGFuZCByYW5nZXMgZm9yIGdpdAorZ2l0cmV2aXNpb25zIC0gc3BlY2lmeWluZyByZXZpc2lvbnMgYW5kIHJhbmdlcyBmb3IgR2l0CiAKIFNZTk9QU0lTCiAtLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXR0dXRvcmlhbC0yLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0dHV0b3JpYWwtMi50eHQKaW5kZXggZTAwYTRkMi4uMzEwOWVhOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXR0dXRvcmlhbC0yLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHR1dG9yaWFsLTIudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXR0dXRvcmlhbC0yIC0gQSB0dXRvcmlhbCBpbnRyb2R1Y3Rpb24gdG8gZ2l0OiBwYXJ0IHR3bworZ2l0dHV0b3JpYWwtMiAtIEEgdHV0b3JpYWwgaW50cm9kdWN0aW9uIHRvIEdpdDogcGFydCB0d28KIAogU1lOT1BTSVMKIC0tLS0tLS0tCkBAIC0xNiwxMSArMTYsMTEgQEAKIFlvdSBzaG91bGQgd29yayB0aHJvdWdoIGxpbmtnaXQ6Z2l0dHV0b3JpYWxbN10gYmVmb3JlIHJlYWRpbmcgdGhpcyB0dXRvcmlhbC4KIAogVGhlIGdvYWwgb2YgdGhpcyB0dXRvcmlhbCBpcyB0byBpbnRyb2R1Y2UgdHdvIGZ1bmRhbWVudGFsIHBpZWNlcyBvZgotZ2l0J3MgYXJjaGl0ZWN0dXJlLS10aGUgb2JqZWN0IGRhdGFiYXNlIGFuZCB0aGUgaW5kZXggZmlsZS0tYW5kIHRvCitHaXQncyBhcmNoaXRlY3R1cmUtLXRoZSBvYmplY3QgZGF0YWJhc2UgYW5kIHRoZSBpbmRleCBmaWxlLS1hbmQgdG8KIHByb3ZpZGUgdGhlIHJlYWRlciB3aXRoIGV2ZXJ5dGhpbmcgbmVjZXNzYXJ5IHRvIHVuZGVyc3RhbmQgdGhlIHJlc3QKLW9mIHRoZSBnaXQgZG9jdW1lbnRhdGlvbi4KK29mIHRoZSBHaXQgZG9jdW1lbnRhdGlvbi4KIAotVGhlIGdpdCBvYmplY3QgZGF0YWJhc2UKK1RoZSBHaXQgb2JqZWN0IGRhdGFiYXNlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBMZXQncyBzdGFydCBhIG5ldyBwcm9qZWN0IGFuZCBjcmVhdGUgYSBzbWFsbCBhbW91bnQgb2YgaGlzdG9yeToKQEAgLTQyLDI1ICs0MiwyNSBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdoYXQgYXJlIHRoZSA3IGRpZ2l0cyBvZiBoZXggdGhhdCBnaXQgcmVzcG9uZGVkIHRvIHRoZSBjb21taXQgd2l0aD8KK1doYXQgYXJlIHRoZSA3IGRpZ2l0cyBvZiBoZXggdGhhdCBHaXQgcmVzcG9uZGVkIHRvIHRoZSBjb21taXQgd2l0aD8KIAogV2Ugc2F3IGluIHBhcnQgb25lIG9mIHRoZSB0dXRvcmlhbCB0aGF0IGNvbW1pdHMgaGF2ZSBuYW1lcyBsaWtlIHRoaXMuCi1JdCB0dXJucyBvdXQgdGhhdCBldmVyeSBvYmplY3QgaW4gdGhlIGdpdCBoaXN0b3J5IGlzIHN0b3JlZCB1bmRlcgotYSA0MC1kaWdpdCBoZXggbmFtZS4gIFRoYXQgbmFtZSBpcyB0aGUgU0hBMSBoYXNoIG9mIHRoZSBvYmplY3QncwotY29udGVudHM7IGFtb25nIG90aGVyIHRoaW5ncywgdGhpcyBlbnN1cmVzIHRoYXQgZ2l0IHdpbGwgbmV2ZXIgc3RvcmUKLXRoZSBzYW1lIGRhdGEgdHdpY2UgKHNpbmNlIGlkZW50aWNhbCBkYXRhIGlzIGdpdmVuIGFuIGlkZW50aWNhbCBTSEExCi1uYW1lKSwgYW5kIHRoYXQgdGhlIGNvbnRlbnRzIG9mIGEgZ2l0IG9iamVjdCB3aWxsIG5ldmVyIGNoYW5nZSAoc2luY2UKK0l0IHR1cm5zIG91dCB0aGF0IGV2ZXJ5IG9iamVjdCBpbiB0aGUgR2l0IGhpc3RvcnkgaXMgc3RvcmVkIHVuZGVyCithIDQwLWRpZ2l0IGhleCBuYW1lLiAgVGhhdCBuYW1lIGlzIHRoZSBTSEEtMSBoYXNoIG9mIHRoZSBvYmplY3QncworY29udGVudHM7IGFtb25nIG90aGVyIHRoaW5ncywgdGhpcyBlbnN1cmVzIHRoYXQgR2l0IHdpbGwgbmV2ZXIgc3RvcmUKK3RoZSBzYW1lIGRhdGEgdHdpY2UgKHNpbmNlIGlkZW50aWNhbCBkYXRhIGlzIGdpdmVuIGFuIGlkZW50aWNhbCBTSEEtMQorbmFtZSksIGFuZCB0aGF0IHRoZSBjb250ZW50cyBvZiBhIEdpdCBvYmplY3Qgd2lsbCBuZXZlciBjaGFuZ2UgKHNpbmNlCiB0aGF0IHdvdWxkIGNoYW5nZSB0aGUgb2JqZWN0J3MgbmFtZSBhcyB3ZWxsKS4gVGhlIDcgY2hhciBoZXggc3RyaW5ncwogaGVyZSBhcmUgc2ltcGx5IHRoZSBhYmJyZXZpYXRpb24gb2Ygc3VjaCA0MCBjaGFyYWN0ZXIgbG9uZyBzdHJpbmdzLgogQWJicmV2aWF0aW9ucyBjYW4gYmUgdXNlZCBldmVyeXdoZXJlIHdoZXJlIHRoZSA0MCBjaGFyYWN0ZXIgc3RyaW5ncwogY2FuIGJlIHVzZWQsIHNvIGxvbmcgYXMgdGhleSBhcmUgdW5hbWJpZ3VvdXMuCiAKIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIGNvbnRlbnQgb2YgdGhlIGNvbW1pdCBvYmplY3QgeW91IGNyZWF0ZWQgd2hpbGUKLWZvbGxvd2luZyB0aGUgZXhhbXBsZSBhYm92ZSBnZW5lcmF0ZXMgYSBkaWZmZXJlbnQgU0hBMSBoYXNoIHRoYW4KK2ZvbGxvd2luZyB0aGUgZXhhbXBsZSBhYm92ZSBnZW5lcmF0ZXMgYSBkaWZmZXJlbnQgU0hBLTEgaGFzaCB0aGFuCiB0aGUgb25lIHNob3duIGFib3ZlIGJlY2F1c2UgdGhlIGNvbW1pdCBvYmplY3QgcmVjb3JkcyB0aGUgdGltZSB3aGVuCiBpdCB3YXMgY3JlYXRlZCBhbmQgdGhlIG5hbWUgb2YgdGhlIHBlcnNvbiBwZXJmb3JtaW5nIHRoZSBjb21taXQuCiAKLVdlIGNhbiBhc2sgZ2l0IGFib3V0IHRoaXMgcGFydGljdWxhciBvYmplY3Qgd2l0aCB0aGUgYGNhdC1maWxlYAorV2UgY2FuIGFzayBHaXQgYWJvdXQgdGhpcyBwYXJ0aWN1bGFyIG9iamVjdCB3aXRoIHRoZSBgY2F0LWZpbGVgCiBjb21tYW5kLiBEb24ndCBjb3B5IHRoZSA0MCBoZXggZGlnaXRzIGZyb20gdGhpcyBleGFtcGxlIGJ1dCB1c2UgdGhvc2UKIGZyb20geW91ciBvd24gdmVyc2lvbi4gTm90ZSB0aGF0IHlvdSBjYW4gc2hvcnRlbiBpdCB0byBvbmx5IGEgZmV3CiBjaGFyYWN0ZXJzIHRvIHNhdmUgeW91cnNlbGYgdHlwaW5nIGFsbCA0MCBoZXggZGlnaXRzOgpAQCAtODAsMTQgKzgwLDE0IEBACiBhIGZpbGUuICBJbiBhZGRpdGlvbiwgYSB0cmVlIGNhbiBhbHNvIHJlZmVyIHRvIG90aGVyIHRyZWUgb2JqZWN0cywKIHRodXMgY3JlYXRpbmcgYSBkaXJlY3RvcnkgaGllcmFyY2h5LiAgWW91IGNhbiBleGFtaW5lIHRoZSBjb250ZW50cyBvZgogYW55IHRyZWUgdXNpbmcgbHMtdHJlZSAocmVtZW1iZXIgdGhhdCBhIGxvbmcgZW5vdWdoIGluaXRpYWwgcG9ydGlvbgotb2YgdGhlIFNIQTEgd2lsbCBhbHNvIHdvcmspOgorb2YgdGhlIFNIQS0xIHdpbGwgYWxzbyB3b3JrKToKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBscy10cmVlIDkyYjhiNjk0CiAxMDA2NDQgYmxvYiAzYjE4ZTUxMmRiYTc5ZTRjODMwMGRkMDhhZWIzN2Y4ZTcyOGI4ZGFkICAgIGZpbGUudHh0CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGh1cyB3ZSBzZWUgdGhhdCB0aGlzIHRyZWUgaGFzIG9uZSBmaWxlIGluIGl0LiAgVGhlIFNIQTEgaGFzaCBpcyBhCitUaHVzIHdlIHNlZSB0aGF0IHRoaXMgdHJlZSBoYXMgb25lIGZpbGUgaW4gaXQuICBUaGUgU0hBLTEgaGFzaCBpcyBhCiByZWZlcmVuY2UgdG8gdGhhdCBmaWxlJ3MgZGF0YToKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDIsMTEgKzEwMiwxMSBAQAogaGVsbG8gd29ybGQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Ob3RlIHRoYXQgdGhpcyBpcyB0aGUgb2xkIGZpbGUgZGF0YTsgc28gdGhlIG9iamVjdCB0aGF0IGdpdCBuYW1lZCBpbgorTm90ZSB0aGF0IHRoaXMgaXMgdGhlIG9sZCBmaWxlIGRhdGE7IHNvIHRoZSBvYmplY3QgdGhhdCBHaXQgbmFtZWQgaW4KIGl0cyByZXNwb25zZSB0byB0aGUgaW5pdGlhbCB0cmVlIHdhcyBhIHRyZWUgd2l0aCBhIHNuYXBzaG90IG9mIHRoZQogZGlyZWN0b3J5IHN0YXRlIHRoYXQgd2FzIHJlY29yZGVkIGJ5IHRoZSBmaXJzdCBjb21taXQuCiAKLUFsbCBvZiB0aGVzZSBvYmplY3RzIGFyZSBzdG9yZWQgdW5kZXIgdGhlaXIgU0hBMSBuYW1lcyBpbnNpZGUgdGhlIGdpdAorQWxsIG9mIHRoZXNlIG9iamVjdHMgYXJlIHN0b3JlZCB1bmRlciB0aGVpciBTSEEtMSBuYW1lcyBpbnNpZGUgdGhlIEdpdAogZGlyZWN0b3J5OgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE0Miw3ICsxNDIsNyBAQAogCiBBcyB5b3UgY2FuIHNlZSwgdGhpcyB0ZWxscyB1cyB3aGljaCBicmFuY2ggd2UncmUgY3VycmVudGx5IG9uLCBhbmQgaXQKIHRlbGxzIHVzIHRoaXMgYnkgbmFtaW5nIGEgZmlsZSB1bmRlciB0aGUgLmdpdCBkaXJlY3RvcnksIHdoaWNoIGl0c2VsZgotY29udGFpbnMgYSBTSEExIG5hbWUgcmVmZXJyaW5nIHRvIGEgY29tbWl0IG9iamVjdCwgd2hpY2ggd2UgY2FuCitjb250YWlucyBhIFNIQS0xIG5hbWUgcmVmZXJyaW5nIHRvIGEgY29tbWl0IG9iamVjdCwgd2hpY2ggd2UgY2FuCiBleGFtaW5lIHdpdGggY2F0LWZpbGU6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTkxLDcgKzE5MSw3IEBACiBpcyBhICJ0YWciLCB3aGljaCB3ZSB3b24ndCBkaXNjdXNzIGhlcmU7IHJlZmVyIHRvIGxpbmtnaXQ6Z2l0LXRhZ1sxXQogZm9yIGRldGFpbHMuCiAKLVNvIG5vdyB3ZSBrbm93IGhvdyBnaXQgdXNlcyB0aGUgb2JqZWN0IGRhdGFiYXNlIHRvIHJlcHJlc2VudCBhCitTbyBub3cgd2Uga25vdyBob3cgR2l0IHVzZXMgdGhlIG9iamVjdCBkYXRhYmFzZSB0byByZXByZXNlbnQgYQogcHJvamVjdCdzIGhpc3Rvcnk6CiAKICAgKiAiY29tbWl0IiBvYmplY3RzIHJlZmVyIHRvICJ0cmVlIiBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUKQEAgLTIwOCw3ICsyMDgsNyBAQAogCiBOb3RlLCBieSB0aGUgd2F5LCB0aGF0IGxvdHMgb2YgY29tbWFuZHMgdGFrZSBhIHRyZWUgYXMgYW4gYXJndW1lbnQuCiBCdXQgYXMgd2UgY2FuIHNlZSBhYm92ZSwgYSB0cmVlIGNhbiBiZSByZWZlcnJlZCB0byBpbiBtYW55IGRpZmZlcmVudAotd2F5cy0tYnkgdGhlIFNIQTEgbmFtZSBmb3IgdGhhdCB0cmVlLCBieSB0aGUgbmFtZSBvZiBhIGNvbW1pdCB0aGF0Cit3YXlzLS1ieSB0aGUgU0hBLTEgbmFtZSBmb3IgdGhhdCB0cmVlLCBieSB0aGUgbmFtZSBvZiBhIGNvbW1pdCB0aGF0CiByZWZlcnMgdG8gdGhlIHRyZWUsIGJ5IHRoZSBuYW1lIG9mIGEgYnJhbmNoIHdob3NlIGhlYWQgcmVmZXJzIHRvIHRoYXQKIHRyZWUsIGV0Yy4tLWFuZCBtb3N0IHN1Y2ggY29tbWFuZHMgY2FuIGFjY2VwdCBhbnkgb2YgdGhlc2UgbmFtZXMuCiAKQEAgLTQwMywyMSArNDAzLDIxIEBACiAKIEF0IHRoaXMgcG9pbnQgeW91IHNob3VsZCBrbm93IGV2ZXJ5dGhpbmcgbmVjZXNzYXJ5IHRvIHJlYWQgdGhlIG1hbgogcGFnZXMgZm9yIGFueSBvZiB0aGUgZ2l0IGNvbW1hbmRzOyBvbmUgZ29vZCBwbGFjZSB0byBzdGFydCB3b3VsZCBiZQotd2l0aCB0aGUgY29tbWFuZHMgbWVudGlvbmVkIGluIGxpbms6ZXZlcnlkYXkuaHRtbFtFdmVyeWRheSBnaXRdLiAgWW91Cit3aXRoIHRoZSBjb21tYW5kcyBtZW50aW9uZWQgaW4gbGluazpldmVyeWRheS5odG1sW0V2ZXJ5ZGF5IEdpdF0uICBZb3UKIHNob3VsZCBiZSBhYmxlIHRvIGZpbmQgYW55IHVua25vd24gamFyZ29uIGluIGxpbmtnaXQ6Z2l0Z2xvc3NhcnlbN10uCiAKIFRoZSBsaW5rOnVzZXItbWFudWFsLmh0bWxbR2l0IFVzZXIncyBNYW51YWxdIHByb3ZpZGVzIGEgbW9yZQotY29tcHJlaGVuc2l2ZSBpbnRyb2R1Y3Rpb24gdG8gZ2l0LgorY29tcHJlaGVuc2l2ZSBpbnRyb2R1Y3Rpb24gdG8gR2l0LgogCiBsaW5rZ2l0OmdpdGN2cy1taWdyYXRpb25bN10gZXhwbGFpbnMgaG93IHRvCi1pbXBvcnQgYSBDVlMgcmVwb3NpdG9yeSBpbnRvIGdpdCwgYW5kIHNob3dzIGhvdyB0byB1c2UgZ2l0IGluIGEKK2ltcG9ydCBhIENWUyByZXBvc2l0b3J5IGludG8gR2l0LCBhbmQgc2hvd3MgaG93IHRvIHVzZSBHaXQgaW4gYQogQ1ZTLWxpa2Ugd2F5LgogCi1Gb3Igc29tZSBpbnRlcmVzdGluZyBleGFtcGxlcyBvZiBnaXQgdXNlLCBzZWUgdGhlCitGb3Igc29tZSBpbnRlcmVzdGluZyBleGFtcGxlcyBvZiBHaXQgdXNlLCBzZWUgdGhlCiBsaW5rOmhvd3RvLWluZGV4Lmh0bWxbaG93dG9zXS4KIAotRm9yIGdpdCBkZXZlbG9wZXJzLCBsaW5rZ2l0OmdpdGNvcmUtdHV0b3JpYWxbN10gZ29lcwotaW50byBkZXRhaWwgb24gdGhlIGxvd2VyLWxldmVsIGdpdCBtZWNoYW5pc21zIGludm9sdmVkIGluLCBmb3IKK0ZvciBHaXQgZGV2ZWxvcGVycywgbGlua2dpdDpnaXRjb3JlLXR1dG9yaWFsWzddIGdvZXMKK2ludG8gZGV0YWlsIG9uIHRoZSBsb3dlci1sZXZlbCBHaXQgbWVjaGFuaXNtcyBpbnZvbHZlZCBpbiwgZm9yCiBleGFtcGxlLCBjcmVhdGluZyBhIG5ldyBjb21taXQuCiAKIFNFRSBBTFNPCkBAIC00MjcsNyArNDI3LDcgQEAKIGxpbmtnaXQ6Z2l0Y29yZS10dXRvcmlhbFs3XSwKIGxpbmtnaXQ6Z2l0Z2xvc3NhcnlbN10sCiBsaW5rZ2l0OmdpdC1oZWxwWzFdLAotbGluazpldmVyeWRheS5odG1sW0V2ZXJ5ZGF5IGdpdF0sCitsaW5rOmV2ZXJ5ZGF5Lmh0bWxbRXZlcnlkYXkgR2l0XSwKIGxpbms6dXNlci1tYW51YWwuaHRtbFtUaGUgR2l0IFVzZXIncyBNYW51YWxdCiAKIEdJVApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXR0dXRvcmlhbC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdHR1dG9yaWFsLnR4dAppbmRleCBkZWUwNTA1Li44MjYyMTk2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdHR1dG9yaWFsLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHR1dG9yaWFsLnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0dHV0b3JpYWwgLSBBIHR1dG9yaWFsIGludHJvZHVjdGlvbiB0byBnaXQgKGZvciB2ZXJzaW9uIDEuNS4xIG9yIG5ld2VyKQorZ2l0dHV0b3JpYWwgLSBBIHR1dG9yaWFsIGludHJvZHVjdGlvbiB0byBHaXQgKGZvciB2ZXJzaW9uIDEuNS4xIG9yIG5ld2VyKQogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTEzLDEwICsxMywxMCBAQAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCiAKLVRoaXMgdHV0b3JpYWwgZXhwbGFpbnMgaG93IHRvIGltcG9ydCBhIG5ldyBwcm9qZWN0IGludG8gZ2l0LCBtYWtlCitUaGlzIHR1dG9yaWFsIGV4cGxhaW5zIGhvdyB0byBpbXBvcnQgYSBuZXcgcHJvamVjdCBpbnRvIEdpdCwgbWFrZQogY2hhbmdlcyB0byBpdCwgYW5kIHNoYXJlIGNoYW5nZXMgd2l0aCBvdGhlciBkZXZlbG9wZXJzLgogCi1JZiB5b3UgYXJlIGluc3RlYWQgcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gdXNpbmcgZ2l0IHRvIGZldGNoIGEgcHJvamVjdCwKK0lmIHlvdSBhcmUgaW5zdGVhZCBwcmltYXJpbHkgaW50ZXJlc3RlZCBpbiB1c2luZyBHaXQgdG8gZmV0Y2ggYSBwcm9qZWN0LAogZm9yIGV4YW1wbGUsIHRvIHRlc3QgdGhlIGxhdGVzdCB2ZXJzaW9uLCB5b3UgbWF5IHByZWZlciB0byBzdGFydCB3aXRoCiB0aGUgZmlyc3QgdHdvIGNoYXB0ZXJzIG9mIGxpbms6dXNlci1tYW51YWwuaHRtbFtUaGUgR2l0IFVzZXIncyBNYW51YWxdLgogCkBAIC0zNiw3ICszNiw3IEBACiBXaXRoIHRoZSBsYXR0ZXIsIHlvdSBjYW4gdXNlIHRoZSBtYW51YWwgdmlld2VyIG9mIHlvdXIgY2hvaWNlOyBzZWUKIGxpbmtnaXQ6Z2l0LWhlbHBbMV0gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKLUl0IGlzIGEgZ29vZCBpZGVhIHRvIGludHJvZHVjZSB5b3Vyc2VsZiB0byBnaXQgd2l0aCB5b3VyIG5hbWUgYW5kCitJdCBpcyBhIGdvb2QgaWRlYSB0byBpbnRyb2R1Y2UgeW91cnNlbGYgdG8gR2l0IHdpdGggeW91ciBuYW1lIGFuZAogcHVibGljIGVtYWlsIGFkZHJlc3MgYmVmb3JlIGRvaW5nIGFueSBvcGVyYXRpb24uICBUaGUgZWFzaWVzdAogd2F5IHRvIGRvIHNvIGlzOgogCkBAIC01MCw3ICs1MCw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBBc3N1bWUgeW91IGhhdmUgYSB0YXJiYWxsIHByb2plY3QudGFyLmd6IHdpdGggeW91ciBpbml0aWFsIHdvcmsuICBZb3UKLWNhbiBwbGFjZSBpdCB1bmRlciBnaXQgcmV2aXNpb24gY29udHJvbCBhcyBmb2xsb3dzLgorY2FuIHBsYWNlIGl0IHVuZGVyIEdpdCByZXZpc2lvbiBjb250cm9sIGFzIGZvbGxvd3MuCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCB0YXIgeHpmIHByb2plY3QudGFyLmd6CkBAIC02NywxNCArNjcsMTQgQEAKIFlvdSd2ZSBub3cgaW5pdGlhbGl6ZWQgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LS15b3UgbWF5IG5vdGljZSBhIG5ldwogZGlyZWN0b3J5IGNyZWF0ZWQsIG5hbWVkICIuZ2l0Ii4KIAotTmV4dCwgdGVsbCBnaXQgdG8gdGFrZSBhIHNuYXBzaG90IG9mIHRoZSBjb250ZW50cyBvZiBhbGwgZmlsZXMgdW5kZXIgdGhlCitOZXh0LCB0ZWxsIEdpdCB0byB0YWtlIGEgc25hcHNob3Qgb2YgdGhlIGNvbnRlbnRzIG9mIGFsbCBmaWxlcyB1bmRlciB0aGUKIGN1cnJlbnQgZGlyZWN0b3J5IChub3RlIHRoZSAnLicpLCB3aXRoICdnaXQgYWRkJzoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBhZGQgLgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgc25hcHNob3QgaXMgbm93IHN0b3JlZCBpbiBhIHRlbXBvcmFyeSBzdGFnaW5nIGFyZWEgd2hpY2ggZ2l0IGNhbGxzCitUaGlzIHNuYXBzaG90IGlzIG5vdyBzdG9yZWQgaW4gYSB0ZW1wb3Jhcnkgc3RhZ2luZyBhcmVhIHdoaWNoIEdpdCBjYWxscwogdGhlICJpbmRleCIuICBZb3UgY2FuIHBlcm1hbmVudGx5IHN0b3JlIHRoZSBjb250ZW50cyBvZiB0aGUgaW5kZXggaW4gdGhlCiByZXBvc2l0b3J5IHdpdGggJ2dpdCBjb21taXQnOgogCkBAIC04Myw3ICs4Myw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhpcyB3aWxsIHByb21wdCB5b3UgZm9yIGEgY29tbWl0IG1lc3NhZ2UuICBZb3UndmUgbm93IHN0b3JlZCB0aGUgZmlyc3QKLXZlcnNpb24gb2YgeW91ciBwcm9qZWN0IGluIGdpdC4KK3ZlcnNpb24gb2YgeW91ciBwcm9qZWN0IGluIEdpdC4KIAogTWFraW5nIGNoYW5nZXMKIC0tLS0tLS0tLS0tLS0tCkBAIC0xMzksOSArMTM5LDExIEBACiBBIG5vdGUgb24gY29tbWl0IG1lc3NhZ2VzOiBUaG91Z2ggbm90IHJlcXVpcmVkLCBpdCdzIGEgZ29vZCBpZGVhIHRvCiBiZWdpbiB0aGUgY29tbWl0IG1lc3NhZ2Ugd2l0aCBhIHNpbmdsZSBzaG9ydCAobGVzcyB0aGFuIDUwIGNoYXJhY3RlcikKIGxpbmUgc3VtbWFyaXppbmcgdGhlIGNoYW5nZSwgZm9sbG93ZWQgYnkgYSBibGFuayBsaW5lIGFuZCB0aGVuIGEgbW9yZQotdGhvcm91Z2ggZGVzY3JpcHRpb24uICBUb29scyB0aGF0IHR1cm4gY29tbWl0cyBpbnRvIGVtYWlsLCBmb3IKLWV4YW1wbGUsIHVzZSB0aGUgZmlyc3QgbGluZSBvbiB0aGUgU3ViamVjdDogbGluZSBhbmQgdGhlIHJlc3Qgb2YgdGhlCi1jb21taXQgaW4gdGhlIGJvZHkuCit0aG9yb3VnaCBkZXNjcmlwdGlvbi4gVGhlIHRleHQgdXAgdG8gdGhlIGZpcnN0IGJsYW5rIGxpbmUgaW4gYSBjb21taXQKK21lc3NhZ2UgaXMgdHJlYXRlZCBhcyB0aGUgY29tbWl0IHRpdGxlLCBhbmQgdGhhdCB0aXRsZSBpcyB1c2VkCit0aHJvdWdob3V0IEdpdC4gIEZvciBleGFtcGxlLCBsaW5rZ2l0OmdpdC1mb3JtYXQtcGF0Y2hbMV0gdHVybnMgYQorY29tbWl0IGludG8gZW1haWwsIGFuZCBpdCB1c2VzIHRoZSB0aXRsZSBvbiB0aGUgU3ViamVjdCBsaW5lIGFuZCB0aGUKK3Jlc3Qgb2YgdGhlIGNvbW1pdCBpbiB0aGUgYm9keS4KIAogR2l0IHRyYWNrcyBjb250ZW50IG5vdCBmaWxlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTc4LDcgKzE4MCw3IEBACiBNYW5hZ2luZyBicmFuY2hlcwogLS0tLS0tLS0tLS0tLS0tLS0KIAotQSBzaW5nbGUgZ2l0IHJlcG9zaXRvcnkgY2FuIG1haW50YWluIG11bHRpcGxlIGJyYW5jaGVzIG9mCitBIHNpbmdsZSBHaXQgcmVwb3NpdG9yeSBjYW4gbWFpbnRhaW4gbXVsdGlwbGUgYnJhbmNoZXMgb2YKIGRldmVsb3BtZW50LiAgVG8gY3JlYXRlIGEgbmV3IGJyYW5jaCBuYW1lZCAiZXhwZXJpbWVudGFsIiwgdXNlCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjc0LDEwICsyNzYsMTAgQEAKIEJyYW5jaGVzIGFyZSBjaGVhcCBhbmQgZWFzeSwgc28gdGhpcyBpcyBhIGdvb2Qgd2F5IHRvIHRyeSBzb21ldGhpbmcKIG91dC4KIAotVXNpbmcgZ2l0IGZvciBjb2xsYWJvcmF0aW9uCitVc2luZyBHaXQgZm9yIGNvbGxhYm9yYXRpb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1TdXBwb3NlIHRoYXQgQWxpY2UgaGFzIHN0YXJ0ZWQgYSBuZXcgcHJvamVjdCB3aXRoIGEgZ2l0IHJlcG9zaXRvcnkgaW4KK1N1cHBvc2UgdGhhdCBBbGljZSBoYXMgc3RhcnRlZCBhIG5ldyBwcm9qZWN0IHdpdGggYSBHaXQgcmVwb3NpdG9yeSBpbgogL2hvbWUvYWxpY2UvcHJvamVjdCwgYW5kIHRoYXQgQm9iLCB3aG8gaGFzIGEgaG9tZSBkaXJlY3Rvcnkgb24gdGhlCiBzYW1lIG1hY2hpbmUsIHdhbnRzIHRvIGNvbnRyaWJ1dGUuCiAKQEAgLTMxOCw3ICszMjAsNyBAQAogaW5pdGlhdGluZyB0aGlzICJwdWxsIi4gIElmIEJvYidzIHdvcmsgY29uZmxpY3RzIHdpdGggd2hhdCBBbGljZSBkaWQgc2luY2UKIHRoZWlyIGhpc3RvcmllcyBmb3JrZWQsIEFsaWNlIHdpbGwgdXNlIGhlciB3b3JraW5nIHRyZWUgYW5kIHRoZSBpbmRleCB0bwogcmVzb2x2ZSBjb25mbGljdHMsIGFuZCBleGlzdGluZyBsb2NhbCBjaGFuZ2VzIHdpbGwgaW50ZXJmZXJlIHdpdGggdGhlCi1jb25mbGljdCByZXNvbHV0aW9uIHByb2Nlc3MgKGdpdCB3aWxsIHN0aWxsIHBlcmZvcm0gdGhlIGZldGNoIGJ1dCB3aWxsCitjb25mbGljdCByZXNvbHV0aW9uIHByb2Nlc3MgKEdpdCB3aWxsIHN0aWxsIHBlcmZvcm0gdGhlIGZldGNoIGJ1dCB3aWxsCiByZWZ1c2UgdG8gbWVyZ2UgLS0tIEFsaWNlIHdpbGwgaGF2ZSB0byBnZXQgcmlkIG9mIGhlciBsb2NhbCBjaGFuZ2VzIGluCiBzb21lIHdheSBhbmQgcHVsbCBhZ2FpbiB3aGVuIHRoaXMgaGFwcGVucykuCiAKQEAgLTQyMCw3ICs0MjIsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBOb3RlIHRoYXQgaGUgZG9lc24ndCBuZWVkIHRvIGdpdmUgdGhlIHBhdGggdG8gQWxpY2UncyByZXBvc2l0b3J5Owotd2hlbiBCb2IgY2xvbmVkIEFsaWNlJ3MgcmVwb3NpdG9yeSwgZ2l0IHN0b3JlZCB0aGUgbG9jYXRpb24gb2YgaGVyCit3aGVuIEJvYiBjbG9uZWQgQWxpY2UncyByZXBvc2l0b3J5LCBHaXQgc3RvcmVkIHRoZSBsb2NhdGlvbiBvZiBoZXIKIHJlcG9zaXRvcnkgaW4gdGhlIHJlcG9zaXRvcnkgY29uZmlndXJhdGlvbiwgYW5kIHRoYXQgbG9jYXRpb24gaXMKIHVzZWQgZm9yIHB1bGxzOgogCkBAIC00NDgsNyArNDUwLDcgQEAKIGJvYiQgZ2l0IGNsb25lIGFsaWNlLm9yZzovaG9tZS9hbGljZS9wcm9qZWN0IG15cmVwbwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1BbHRlcm5hdGl2ZWx5LCBnaXQgaGFzIGEgbmF0aXZlIHByb3RvY29sLCBvciBjYW4gdXNlIHJzeW5jIG9yIGh0dHA7CitBbHRlcm5hdGl2ZWx5LCBHaXQgaGFzIGEgbmF0aXZlIHByb3RvY29sLCBvciBjYW4gdXNlIHJzeW5jIG9yIGh0dHA7CiBzZWUgbGlua2dpdDpnaXQtcHVsbFsxXSBmb3IgZGV0YWlscy4KIAogR2l0IGNhbiBhbHNvIGJlIHVzZWQgaW4gYSBDVlMtbGlrZSBtb2RlLCB3aXRoIGEgY2VudHJhbCByZXBvc2l0b3J5CkBAIC01MTYsNyArNTE4LDcgQEAKIHZlcnNpb24pLCB5b3Ugc2hvdWxkIGNyZWF0ZSBhICJ0YWciIG9iamVjdCwgYW5kIHBlcmhhcHMgc2lnbiBpdDsgc2VlCiBsaW5rZ2l0OmdpdC10YWdbMV0gZm9yIGRldGFpbHMuCiAKLUFueSBnaXQgY29tbWFuZCB0aGF0IG5lZWRzIHRvIGtub3cgYSBjb21taXQgY2FuIHRha2UgYW55IG9mIHRoZXNlCitBbnkgR2l0IGNvbW1hbmQgdGhhdCBuZWVkcyB0byBrbm93IGEgY29tbWl0IGNhbiB0YWtlIGFueSBvZiB0aGVzZQogbmFtZXMuICBGb3IgZXhhbXBsZToKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTUyLDkgKzU1NCw5IEBACiAkIGdpdCBncmVwICJoZWxsbyIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaXMgYSBxdWljayB3YXkgdG8gc2VhcmNoIGp1c3QgdGhlIGZpbGVzIHRoYXQgYXJlIHRyYWNrZWQgYnkgZ2l0LgoraXMgYSBxdWljayB3YXkgdG8gc2VhcmNoIGp1c3QgdGhlIGZpbGVzIHRoYXQgYXJlIHRyYWNrZWQgYnkgR2l0LgogCi1NYW55IGdpdCBjb21tYW5kcyBhbHNvIHRha2Ugc2V0cyBvZiBjb21taXRzLCB3aGljaCBjYW4gYmUgc3BlY2lmaWVkCitNYW55IEdpdCBjb21tYW5kcyBhbHNvIHRha2Ugc2V0cyBvZiBjb21taXRzLCB3aGljaCBjYW4gYmUgc3BlY2lmaWVkCiBpbiBhIG51bWJlciBvZiB3YXlzLiAgSGVyZSBhcmUgc29tZSBleGFtcGxlcyB3aXRoICdnaXQgbG9nJzoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTkwLDcgKzU5Miw3IEBACiB0aG9zZSBjb21taXRzIGlzIG1lYW5pbmdsZXNzLgogCiBNb3N0IHByb2plY3RzIHdpdGggbXVsdGlwbGUgY29udHJpYnV0b3JzIChzdWNoIGFzIHRoZSBMaW51eCBrZXJuZWwsCi1vciBnaXQgaXRzZWxmKSBoYXZlIGZyZXF1ZW50IG1lcmdlcywgYW5kICdnaXRrJyBkb2VzIGEgYmV0dGVyIGpvYiBvZgorb3IgR2l0IGl0c2VsZikgaGF2ZSBmcmVxdWVudCBtZXJnZXMsIGFuZCAnZ2l0aycgZG9lcyBhIGJldHRlciBqb2Igb2YKIHZpc3VhbGl6aW5nIHRoZWlyIGhpc3RvcnkuICBGb3IgZXhhbXBsZSwKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjIxLDcgKzYyMyw3IEBACiAKIFRoaXMgdHV0b3JpYWwgc2hvdWxkIGJlIGVub3VnaCB0byBwZXJmb3JtIGJhc2ljIGRpc3RyaWJ1dGVkIHJldmlzaW9uCiBjb250cm9sIGZvciB5b3VyIHByb2plY3RzLiAgSG93ZXZlciwgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZGVwdGgKLWFuZCBwb3dlciBvZiBnaXQgeW91IG5lZWQgdG8gdW5kZXJzdGFuZCB0d28gc2ltcGxlIGlkZWFzIG9uIHdoaWNoIGl0CithbmQgcG93ZXIgb2YgR2l0IHlvdSBuZWVkIHRvIHVuZGVyc3RhbmQgdHdvIHNpbXBsZSBpZGVhcyBvbiB3aGljaCBpdAogaXMgYmFzZWQ6CiAKICAgKiBUaGUgb2JqZWN0IGRhdGFiYXNlIGlzIHRoZSByYXRoZXIgZWxlZ2FudCBzeXN0ZW0gdXNlZCB0bwpAQCAtNjM0LDcgKzYzNiw3IEBACiAKIFBhcnQgdHdvIG9mIHRoaXMgdHV0b3JpYWwgZXhwbGFpbnMgdGhlIG9iamVjdAogZGF0YWJhc2UsIHRoZSBpbmRleCBmaWxlLCBhbmQgYSBmZXcgb3RoZXIgb2RkcyBhbmQgZW5kcyB0aGF0IHlvdSdsbAotbmVlZCB0byBtYWtlIHRoZSBtb3N0IG9mIGdpdC4gWW91IGNhbiBmaW5kIGl0IGF0IGxpbmtnaXQ6Z2l0dHV0b3JpYWwtMls3XS4KK25lZWQgdG8gbWFrZSB0aGUgbW9zdCBvZiBHaXQuIFlvdSBjYW4gZmluZCBpdCBhdCBsaW5rZ2l0OmdpdHR1dG9yaWFsLTJbN10uCiAKIElmIHlvdSBkb24ndCB3YW50IHRvIGNvbnRpbnVlIHdpdGggdGhhdCByaWdodCBhd2F5LCBhIGZldyBvdGhlcgogZGlncmVzc2lvbnMgdGhhdCBtYXkgYmUgaW50ZXJlc3RpbmcgYXQgdGhpcyBwb2ludCBhcmU6CkBAIC02NTQsNyArNjU2LDcgQEAKICAgKiBsaW5rZ2l0OmdpdHdvcmtmbG93c1s3XTogR2l2ZXMgYW4gb3ZlcnZpZXcgb2YgcmVjb21tZW5kZWQKICAgICB3b3JrZmxvd3MuCiAKLSAgKiBsaW5rOmV2ZXJ5ZGF5Lmh0bWxbRXZlcnlkYXkgR0lUIHdpdGggMjAgQ29tbWFuZHMgT3IgU29dCisgICogbGluazpldmVyeWRheS5odG1sW0V2ZXJ5ZGF5IEdpdCB3aXRoIDIwIENvbW1hbmRzIE9yIFNvXQogCiAgICogbGlua2dpdDpnaXRjdnMtbWlncmF0aW9uWzddOiBHaXQgZm9yIENWUyB1c2Vycy4KIApAQCAtNjY2LDcgKzY2OCw3IEBACiBsaW5rZ2l0OmdpdGdsb3NzYXJ5WzddLAogbGlua2dpdDpnaXQtaGVscFsxXSwKIGxpbmtnaXQ6Z2l0d29ya2Zsb3dzWzddLAotbGluazpldmVyeWRheS5odG1sW0V2ZXJ5ZGF5IGdpdF0sCitsaW5rOmV2ZXJ5ZGF5Lmh0bWxbRXZlcnlkYXkgR2l0XSwKIGxpbms6dXNlci1tYW51YWwuaHRtbFtUaGUgR2l0IFVzZXIncyBNYW51YWxdCiAKIEdJVApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXR3ZWIuY29uZi50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdHdlYi5jb25mLnR4dAppbmRleCBiOWRkNTY3Li5lYTA1MjZlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdHdlYi5jb25mLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHdlYi5jb25mLnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0d2ViLmNvbmYgLSBHaXR3ZWIgKGdpdCB3ZWIgaW50ZXJmYWNlKSBjb25maWd1cmF0aW9uIGZpbGUKK2dpdHdlYi5jb25mIC0gR2l0d2ViIChHaXQgd2ViIGludGVyZmFjZSkgY29uZmlndXJhdGlvbiBmaWxlCiAKIFNZTk9QU0lTCiAtLS0tLS0tLQpAQCAtNzksNyArNzksNyBAQAogWW91IGNhbiBpbmNsdWRlIG90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2luZyByZWFkX2NvbmZpZ19maWxlKCkKIHN1YnJvdXRpbmUuICBGb3IgZXhhbXBsZSwgb25lIG1pZ2h0IHdhbnQgdG8gcHV0IGdpdHdlYiBjb25maWd1cmF0aW9uCiByZWxhdGVkIHRvIGFjY2VzcyBjb250cm9sIGZvciB2aWV3aW5nIHJlcG9zaXRvcmllcyB2aWEgR2l0b2xpdGUgKG9uZQotb2YgZ2l0IHJlcG9zaXRvcnkgbWFuYWdlbWVudCB0b29scykgaW4gYSBzZXBhcmF0ZSBmaWxlLCBlLmcuIGluCitvZiBHaXQgcmVwb3NpdG9yeSBtYW5hZ2VtZW50IHRvb2xzKSBpbiBhIHNlcGFyYXRlIGZpbGUsIGUuZy4gaW4KICcvZXRjL2dpdHdlYi1naXRvbGl0ZS5jb25mJy4gIFRvIGluY2x1ZGUgaXQsIHB1dAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTExLDcgKzExMSw3IEBACiBMb2NhdGlvbiBvZiByZXBvc2l0b3JpZXMKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogVGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGRlc2NyaWJlZCBiZWxvdyBjb250cm9sIGhvdyBnaXR3ZWIgZmluZHMKLWdpdCByZXBvc2l0b3JpZXMsIGFuZCBob3cgcmVwb3NpdG9yaWVzIGFyZSBkaXNwbGF5ZWQgYW5kIGFjY2Vzc2VkLgorR2l0IHJlcG9zaXRvcmllcywgYW5kIGhvdyByZXBvc2l0b3JpZXMgYXJlIGRpc3BsYXllZCBhbmQgYWNjZXNzZWQuCiAKIFNlZSBhbHNvICJSZXBvc2l0b3JpZXMiIGFuZCBsYXRlciBzdWJzZWN0aW9ucyBpbiBsaW5rZ2l0OmdpdHdlYlsxXSBtYW5wYWdlLgogCkBAIC0xNTksNyArMTU5LDcgQEAKIAogJHByb2plY3RfbWF4ZGVwdGg6OgogCUlmIGAkcHJvamVjdHNfbGlzdGAgdmFyaWFibGUgaXMgdW5zZXQsIGdpdHdlYiB3aWxsIHJlY3Vyc2l2ZWx5Ci0Jc2NhbiBmaWxlc3lzdGVtIGZvciBnaXQgcmVwb3NpdG9yaWVzLiAgVGhlIGAkcHJvamVjdF9tYXhkZXB0aGAKKwlzY2FuIGZpbGVzeXN0ZW0gZm9yIEdpdCByZXBvc2l0b3JpZXMuICBUaGUgYCRwcm9qZWN0X21heGRlcHRoYAogCWlzIHVzZWQgdG8gbGltaXQgdHJhdmVyc2luZyBkZXB0aCwgcmVsYXRpdmUgdG8gYCRwcm9qZWN0cm9vdGAKIAkoc3RhcnRpbmcgcG9pbnQpOyBpdCBtZWFucyB0aGF0IGRpcmVjdG9yaWVzIHdoaWNoIGFyZSBmdXJ0aGVyCiAJZnJvbSBgJHByb2plY3Ryb290YCB0aGFuIGAkcHJvamVjdF9tYXhkZXB0aGAgd2lsbCBiZSBza2lwcGVkLgpAQCAtMjAwLDcgKzIwMCw3IEBACiArCiBJZiBub3Qgc2V0IChkZWZhdWx0KSwgaXQgbWVhbnMgdGhhdCB0aGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQuCiArCi1TZWUgYWxzbyBtb3JlIGludm9sdmVkIGV4YW1wbGUgaW4gIkNvbnRyb2xsaW5nIGFjY2VzcyB0byBnaXQgcmVwb3NpdG9yaWVzIgorU2VlIGFsc28gbW9yZSBpbnZvbHZlZCBleGFtcGxlIGluICJDb250cm9sbGluZyBhY2Nlc3MgdG8gR2l0IHJlcG9zaXRvcmllcyIKIHN1YnNlY3Rpb24gb24gbGlua2dpdDpnaXR3ZWJbMV0gbWFucGFnZS4KIAogJHN0cmljdF9leHBvcnQ6OgpAQCAtMjIyLDE4ICsyMjIsMTggQEAKIAogJEdJVDo6CiAJQ29yZSBnaXQgZXhlY3V0YWJsZSB0byB1c2UuICBCeSBkZWZhdWx0IHNldCB0byBgJEdJVF9CSU5ESVIvZ2l0YCwgd2hpY2gKLQlpbiB0dXJuIGlzIGJ5IGRlZmF1bHQgc2V0IHRvIGAkKGJpbmRpcikvZ2l0YC4gIElmIHlvdSB1c2UgZ2l0IGluc3RhbGxlZAorCWluIHR1cm4gaXMgYnkgZGVmYXVsdCBzZXQgdG8gYCQoYmluZGlyKS9naXRgLiAgSWYgeW91IHVzZSBHaXQgaW5zdGFsbGVkCiAJZnJvbSBhIGJpbmFyeSBwYWNrYWdlLCB5b3Ugc2hvdWxkIHVzdWFsbHkgc2V0IHRoaXMgdG8gIi91c3IvYmluL2dpdCIuCiAJVGhpcyBjYW4ganVzdCBiZSAiZ2l0IiBpZiB5b3VyIHdlYiBzZXJ2ZXIgaGFzIGEgc2Vuc2libGUgUEFUSDsgZnJvbQogCXNlY3VyaXR5IHBvaW50IG9mIHZpZXcgaXQgaXMgYmV0dGVyIHRvIHVzZSBhYnNvbHV0ZSBwYXRoIHRvIGdpdCBiaW5hcnkuCi0JSWYgeW91IGhhdmUgbXVsdGlwbGUgZ2l0IHZlcnNpb25zIGluc3RhbGxlZCBpdCBjYW4gYmUgdXNlZCB0byBjaG9vc2UKKwlJZiB5b3UgaGF2ZSBtdWx0aXBsZSBHaXQgdmVyc2lvbnMgaW5zdGFsbGVkIGl0IGNhbiBiZSB1c2VkIHRvIGNob29zZQogCXdoaWNoIG9uZSB0byB1c2UuICBNdXN0IGJlIChjb3JyZWN0bHkpIHNldCBmb3IgZ2l0d2ViIHRvIGJlIGFibGUgdG8KIAl3b3JrLgogCiAkbWltZXR5cGVzX2ZpbGU6OgogCUZpbGUgdG8gdXNlIGZvciAoZmlsZW5hbWUgZXh0ZW5zaW9uIGJhc2VkKSBndWVzc2luZyBvZiBNSU1FIHR5cGVzIGJlZm9yZQogCXRyeWluZyAnL2V0Yy9taW1lLnR5cGVzJy4gICpOT1RFKiB0aGF0IHRoaXMgcGF0aCwgaWYgcmVsYXRpdmUsIGlzIHRha2VuCi0JYXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgZ2l0IHJlcG9zaXRvcnksIG5vdCB0byBDR0kgc2NyaXB0LiAgSWYgdW5zZXQsCisJYXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgR2l0IHJlcG9zaXRvcnksIG5vdCB0byBDR0kgc2NyaXB0LiAgSWYgdW5zZXQsCiAJb25seSAnL2V0Yy9taW1lLnR5cGVzJyBpcyB1c2VkIChpZiBwcmVzZW50IG9uIGZpbGVzeXN0ZW0pLiAgSWYgbm8gbWltZXR5cGVzCiAJZmlsZSBpcyBmb3VuZCwgbWltZXR5cGUgZ3Vlc3NpbmcgYmFzZWQgb24gZXh0ZW5zaW9uIG9mIGZpbGUgaXMgZGlzYWJsZWQuCiAJVW5zZXQgYnkgZGVmYXVsdC4KQEAgLTI0NCw3ICsyNDQsNyBAQAogCUJ5IGRlZmF1bHQgc2V0IHRvICdoaWdobGlnaHQnOyBzZXQgaXQgdG8gZnVsbCBwYXRoIHRvIGhpZ2hsaWdodAogCWV4ZWN1dGFibGUgaWYgaXQgaXMgbm90IGluc3RhbGxlZCBvbiB5b3VyIHdlYiBzZXJ2ZXIncyBQQVRILgogCU5vdGUgdGhhdCAnaGlnaGxpZ2h0JyBmZWF0dXJlIG11c3QgYmUgc2V0IGZvciBnaXR3ZWIgdG8gYWN0dWFsbHkKLQl1c2Ugc3ludGF4IGhpZ2h0bGlnaHRpbmcuCisJdXNlIHN5bnRheCBoaWdobGlnaHRpbmcuCiArCiAqTk9URSo6IGlmIHlvdSB3YW50IHRvIGFkZCBzdXBwb3J0IGZvciBuZXcgZmlsZSB0eXBlIChzdXBwb3J0ZWQgYnkKICJoaWdobGlnaHQiIGJ1dCBub3QgdXNlZCBieSBnaXR3ZWIpLCB5b3UgbmVlZCB0byBtb2RpZnkgYCVoaWdobGlnaHRfZXh0YApAQCAtMzQzLDggKzM0Myw4IEBACiAkbG9nb19sYWJlbDo6CiAJVVJJIGFuZCBsYWJlbCAodGl0bGUpIGZvciB0aGUgR2l0IGxvZ28gbGluayAob3IgeW91ciBzaXRlIGxvZ28sCiAJaWYgeW91IGNob3NlIHRvIHVzZSBkaWZmZXJlbnQgbG9nbyBpbWFnZSkuIEJ5IGRlZmF1bHQsIHRoZXNlIGJvdGgKLQlyZWZlciB0byBnaXQgaG9tZXBhZ2UsIGh0dHA6Ly9naXQtc2NtLmNvbVtdOyBpbiB0aGUgcGFzdCwgdGhleSBwb2ludGVkCi0JdG8gZ2l0IGRvY3VtZW50YXRpb24gYXQgaHR0cDovL3d3dy5rZXJuZWwub3JnW10uCisJcmVmZXIgdG8gR2l0IGhvbWVwYWdlLCBodHRwOi8vZ2l0LXNjbS5jb21bXTsgaW4gdGhlIHBhc3QsIHRoZXkgcG9pbnRlZAorCXRvIEdpdCBkb2N1bWVudGF0aW9uIGF0IGh0dHA6Ly93d3cua2VybmVsLm9yZ1tdLgogCiAKIENoYW5naW5nIGdpdHdlYidzIGxvb2sKQEAgLTQzNiw3ICs0MzYsNyBAQAogCWRldGVjdGlvbi4KICsKICpOb3RlKiB0aGF0IHJlbmFtZSBhbmQgZXNwZWNpYWxseSBjb3B5IGRldGVjdGlvbiBjYW4gYmUgcXVpdGUKLUNQVS1pbnRlbnNpdmUuICBOb3RlIGFsc28gdGhhdCBub24gZ2l0IHRvb2xzIGNhbiBoYXZlIHByb2JsZW1zIHdpdGgKK0NQVS1pbnRlbnNpdmUuICBOb3RlIGFsc28gdGhhdCBub24gR2l0IHRvb2xzIGNhbiBoYXZlIHByb2JsZW1zIHdpdGgKIHBhdGNoZXMgZ2VuZXJhdGVkIHdpdGggb3B0aW9ucyBtZW50aW9uZWQgYWJvdmUsIGVzcGVjaWFsbHkgd2hlbiB0aGV5CiBpbnZvbHZlIGZpbGUgY29waWVzIChcJy1DJykgb3IgY3Jpc3MtY3Jvc3MgcmVuYW1lcyAoXCctQicpLgogCkBAIC00NTEsNyArNDUxLDcgQEAKIGFmZmVjdHMgaG93ICJzdW1tYXJ5IiBwYWdlcyBsb29rIGxpa2UsIG9yIGxvYWQgbGltaXRpbmcpLgogCiBAZ2l0X2Jhc2VfdXJsX2xpc3Q6OgotCUxpc3Qgb2YgZ2l0IGJhc2UgVVJMcy4gIFRoZXNlIFVSTHMgYXJlIHVzZWQgdG8gZ2VuZXJhdGUgVVJMcworCUxpc3Qgb2YgR2l0IGJhc2UgVVJMcy4gIFRoZXNlIFVSTHMgYXJlIHVzZWQgdG8gZ2VuZXJhdGUgVVJMcwogCWRlc2NyaWJpbmcgZnJvbSB3aGVyZSB0byBmZXRjaCBhIHByb2plY3QsIHdoaWNoIGFyZSBzaG93biBvbgogCXByb2plY3Qgc3VtbWFyeSBwYWdlLiAgVGhlIGZ1bGwgZmV0Y2ggVVJMIGlzICJgJGdpdF9iYXNlX3VybC8kcHJvamVjdGAiLAogCWZvciBlYWNoIGVsZW1lbnQgb2YgdGhpcyBsaXN0LiBZb3UgY2FuIHNldCB1cCBtdWx0aXBsZSBiYXNlIFVSTHMKQEAgLTYxNiw3ICs2MTYsNyBAQAogCShvciBlbmFibGVkL2Rpc2FibGVkKSBvbiBhIHBlci1yZXBvc2l0b3J5IGJhc2lzLgogKwogVXN1YWxseSBnaXZlbiAiPGZlYXR1cmU+IiBpcyBjb25maWd1cmFibGUgdmlhIHRoZSBgZ2l0d2ViLjxmZWF0dXJlPmAKLWNvbmZpZyB2YXJpYWJsZSBpbiB0aGUgcGVyLXJlcG9zaXRvcnkgZ2l0IGNvbmZpZ3VyYXRpb24gZmlsZS4KK2NvbmZpZyB2YXJpYWJsZSBpbiB0aGUgcGVyLXJlcG9zaXRvcnkgR2l0IGNvbmZpZ3VyYXRpb24gZmlsZS4KICsKICpOb3RlKiB0aGF0IG5vIGZlYXR1cmUgaXMgb3ZlcnJpZGRhYmxlIGJ5IGRlZmF1bHQuCiAKQEAgLTc4Miw3ICs3ODIsNyBAQAogKFwnaGInIGdpdHdlYiBwYXJhbWV0ZXIpOyBgJSVgIGV4cGFuZHMgdG8gXCclJy4KICsKIEZvciBleGFtcGxlLCBhdCB0aGUgdGltZSB0aGlzIHBhZ2Ugd2FzIHdyaXR0ZW4sIHRoZSBodHRwOi8vcmVwby5vci5jeltdCi1naXQgaG9zdGluZyBzaXRlIHNldCBpdCB0byB0aGUgZm9sbG93aW5nIHRvIGVuYWJsZSBncmFwaGljYWwgbG9nCitHaXQgaG9zdGluZyBzaXRlIHNldCBpdCB0byB0aGUgZm9sbG93aW5nIHRvIGVuYWJsZSBncmFwaGljYWwgbG9nCiAodXNpbmcgdGhlIHRoaXJkIHBhcnR5IHRvb2wgKmdpdC1icm93c2VyKik6CiArCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03OTYsMTAgKzc5NiwxMCBAQAogUHJvamVjdCBzcGVjaWZpYyBvdmVycmlkZSBpcyBub3Qgc3VwcG9ydGVkLgogCiB0aW1lZDo6Ci0JRW5hYmxlIGRpc3BsYXlpbmcgaG93IG11Y2ggdGltZSBhbmQgaG93IG1hbnkgZ2l0IGNvbW1hbmRzIGl0IHRvb2sgdG8KKwlFbmFibGUgZGlzcGxheWluZyBob3cgbXVjaCB0aW1lIGFuZCBob3cgbWFueSBHaXQgY29tbWFuZHMgaXQgdG9vayB0bwogCWdlbmVyYXRlIGFuZCBkaXNwbGF5IGVhY2ggcGFnZSBpbiB0aGUgcGFnZSBmb290ZXIgKGF0IHRoZSBib3R0b20gb2YKIAlwYWdlKS4gIEZvciBleGFtcGxlIHRoZSBmb290ZXIgbWlnaHQgY29udGFpbjogIlRoaXMgcGFnZSB0b29rIDYuNTMzMjUKLQlzZWNvbmRzIGFuZCAxMyBnaXQgY29tbWFuZHMgdG8gZ2VuZXJhdGUuIiAgRGlzYWJsZWQgYnkgZGVmYXVsdC4KKwlzZWNvbmRzIGFuZCAxMyBHaXQgY29tbWFuZHMgdG8gZ2VuZXJhdGUuIiAgRGlzYWJsZWQgYnkgZGVmYXVsdC4KICsKIFByb2plY3Qgc3BlY2lmaWMgb3ZlcnJpZGUgaXMgbm90IHN1cHBvcnRlZC4KIApAQCAtODU3LDYgKzg1NywxMyBAQAogCSRrbm93bl9zbmFwc2hvdF9mb3JtYXRzeyd6aXAnfXsnZGlzYWJsZWQnfSA9IDE7CiAJJGtub3duX3NuYXBzaG90X2Zvcm1hdHN7J3Rneid9eydjb21wcmVzc29yJ30gPSBbJ2d6aXAnLCctNiddOwogCitCVUdTCistLS0tCitEZWJ1Z2dpbmcgd291bGQgYmUgZWFzaWVyIGlmIHRoZSBmYWxsYmFjayBjb25maWd1cmF0aW9uIGZpbGUKKyhgL2V0Yy9naXR3ZWIuY29uZmApIGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBvdmVycmlkZSBpdHMgbG9jYXRpb24KKygnR0lUV0VCX0NPTkZJR19TWVNURU0nKSBoYWQgbmFtZXMgcmVmbGVjdGluZyB0aGVpciAiZmFsbGJhY2siIHJvbGUuCitUaGUgY3VycmVudCBuYW1lcyBhcmUga2VwdCB0byBhdm9pZCBicmVha2luZyB3b3JraW5nIHNldHVwcy4KKwogRU5WSVJPTk1FTlQKIC0tLS0tLS0tLS0tCiBUaGUgbG9jYXRpb24gb2YgcGVyLWluc3RhbmNlIGFuZCBzeXN0ZW0td2lkZSBjb25maWd1cmF0aW9uIGZpbGVzIGNhbiBiZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXR3ZWIudHh0IGIvRG9jdW1lbnRhdGlvbi9naXR3ZWIudHh0CmluZGV4IDE2OGU4YmYuLjQwOTY5ZjEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0d2ViLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHdlYi50eHQKQEAgLTcsMTQgKzcsMTQgQEAKIAogU1lOT1BTSVMKIC0tLS0tLS0tCi1UbyBnZXQgc3RhcnRlZCB3aXRoIGdpdHdlYiwgcnVuIGxpbmtnaXQ6Z2l0LWluc3Rhd2ViWzFdIGZyb20gYSBnaXQgcmVwb3NpdG9yeS4KK1RvIGdldCBzdGFydGVkIHdpdGggZ2l0d2ViLCBydW4gbGlua2dpdDpnaXQtaW5zdGF3ZWJbMV0gZnJvbSBhIEdpdCByZXBvc2l0b3J5LgogVGhpcyB3b3VsZCBjb25maWd1cmUgYW5kIHN0YXJ0IHlvdXIgd2ViIHNlcnZlciwgYW5kIHJ1biB3ZWIgYnJvd3NlciBwb2ludGluZyB0bwogZ2l0d2ViLgogCiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQotR2l0d2ViIHByb3ZpZGVzIGEgd2ViIGludGVyZmFjZSB0byBnaXQgcmVwb3NpdG9yaWVzLiAgSXRzIGZlYXR1cmVzIGluY2x1ZGU6CitHaXR3ZWIgcHJvdmlkZXMgYSB3ZWIgaW50ZXJmYWNlIHRvIEdpdCByZXBvc2l0b3JpZXMuICBJdHMgZmVhdHVyZXMgaW5jbHVkZToKIAogKiBWaWV3aW5nIG11bHRpcGxlIEdpdCByZXBvc2l0b3JpZXMgd2l0aCBjb21tb24gcm9vdC4KICogQnJvd3NpbmcgZXZlcnkgcmV2aXNpb24gb2YgdGhlIHJlcG9zaXRvcnkuCkBAIC01NCw5ICs1NCw5IEBACiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgYCRwcm9qZWN0cm9vdGAgaXMgJy9wdWIvZ2l0Jy4gIFlvdSBjYW4gY2hhbmdlIGl0IGR1cmluZwogYnVpbGRpbmcgZ2l0d2ViIHZpYSBgR0lUV0VCX1BST0pFQ1RST09UYCBidWlsZCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLgogCi1CeSBkZWZhdWx0IGFsbCBnaXQgcmVwb3NpdG9yaWVzIHVuZGVyIGAkcHJvamVjdHJvb3RgIGFyZSB2aXNpYmxlIGFuZCBhdmFpbGFibGUKK0J5IGRlZmF1bHQgYWxsIEdpdCByZXBvc2l0b3JpZXMgdW5kZXIgYCRwcm9qZWN0cm9vdGAgYXJlIHZpc2libGUgYW5kIGF2YWlsYWJsZQogdG8gZ2l0d2ViLiAgVGhlIGxpc3Qgb2YgcHJvamVjdHMgaXMgZ2VuZXJhdGVkIGJ5IGRlZmF1bHQgYnkgc2Nhbm5pbmcgdGhlCi1gJHByb2plY3Ryb290YCBkaXJlY3RvcnkgZm9yIGdpdCByZXBvc2l0b3JpZXMgKGZvciBvYmplY3QgZGF0YWJhc2VzIHRvIGJlCitgJHByb2plY3Ryb290YCBkaXJlY3RvcnkgZm9yIEdpdCByZXBvc2l0b3JpZXMgKGZvciBvYmplY3QgZGF0YWJhc2VzIHRvIGJlCiBtb3JlIGV4YWN0OyBnaXR3ZWIgaXMgbm90IGludGVyZXN0ZWQgaW4gYSB3b3JraW5nIGFyZWEsIGFuZCBpcyBiZXN0IHN1aXRlZAogdG8gc2hvd2luZyAiYmFyZSIgcmVwb3NpdG9yaWVzKS4KIApAQCAtMTExLDcgKzExMSw3IEBACiAKIAogQnkgZGVmYXVsdCB0aGlzIGZpbGUgY29udHJvbHMgb25seSB3aGljaCBwcm9qZWN0cyBhcmUgKnZpc2libGUqIG9uIHByb2plY3RzCi1saXN0IHBhZ2UgKG5vdGUgdGhhdCBlbnRyaWVzIHRoYXQgZG8gbm90IHBvaW50IHRvIGNvcnJlY3RseSByZWNvZ25pemVkIGdpdAorbGlzdCBwYWdlIChub3RlIHRoYXQgZW50cmllcyB0aGF0IGRvIG5vdCBwb2ludCB0byBjb3JyZWN0bHkgcmVjb2duaXplZCBHaXQKIHJlcG9zaXRvcmllcyB3b24ndCBiZSBkaXNwbGF5ZWQgYnkgZ2l0d2ViKS4gIEV2ZW4gaWYgYSBwcm9qZWN0IGlzIG5vdAogdmlzaWJsZSBvbiBwcm9qZWN0cyBsaXN0IHBhZ2UsIHlvdSBjYW4gdmlldyBpdCBuZXZlcnRoZWxlc3MgYnkgaGFuZC1jcmFmdGluZwogYSBnaXR3ZWIgVVJMLiAgQnkgc2V0dGluZyBgJHN0cmljdF9leHBvcnRgIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgKHNlZQpAQCAtMTUxLDkgKzE1MSw5IEBACiBmaWxlbmFtZS4KIAogCi1Db250cm9sbGluZyBhY2Nlc3MgdG8gZ2l0IHJlcG9zaXRvcmllcworQ29udHJvbGxpbmcgYWNjZXNzIHRvIEdpdCByZXBvc2l0b3JpZXMKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci1CeSBkZWZhdWx0IGFsbCBnaXQgcmVwb3NpdG9yaWVzIHVuZGVyIGAkcHJvamVjdHJvb3RgIGFyZSB2aXNpYmxlIGFuZAorQnkgZGVmYXVsdCBhbGwgR2l0IHJlcG9zaXRvcmllcyB1bmRlciBgJHByb2plY3Ryb290YCBhcmUgdmlzaWJsZSBhbmQKIGF2YWlsYWJsZSB0byBnaXR3ZWIuICBZb3UgY2FuIGhvd2V2ZXIgY29uZmlndXJlIGhvdyBnaXR3ZWIgY29udHJvbHMgYWNjZXNzCiB0byByZXBvc2l0b3JpZXMuCiAKQEAgLTIwNiw3ICsyMDYsNyBAQAogUGVyLXJlcG9zaXRvcnkgZ2l0d2ViIGNvbmZpZ3VyYXRpb24KIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiBZb3UgY2FuIGNvbmZpZ3VyZSBpbmRpdmlkdWFsIHJlcG9zaXRvcmllcyBzaG93biBpbiBnaXR3ZWIgYnkgY3JlYXRpbmcgZmlsZQotaW4gdGhlICdHSVRfRElSJyBvZiBnaXQgcmVwb3NpdG9yeSwgb3IgYnkgc2V0dGluZyBzb21lIHJlcG8gY29uZmlndXJhdGlvbgoraW4gdGhlICdHSVRfRElSJyBvZiBHaXQgcmVwb3NpdG9yeSwgb3IgYnkgc2V0dGluZyBzb21lIHJlcG8gY29uZmlndXJhdGlvbgogdmFyaWFibGUgKGluICdHSVRfRElSL2NvbmZpZycsIHNlZSBsaW5rZ2l0OmdpdC1jb25maWdbMV0pLgogCiBZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGZpbGVzIGluIHJlcG9zaXRvcnk6CkBAIC01MDQsNyArNTA0LDcgQEAKIAogVGhlIGFib3ZlIGNvbmZpZ3VyYXRpb24gZXhwZWN0cyB5b3VyIHB1YmxpYyByZXBvc2l0b3JpZXMgdG8gbGl2ZSB1bmRlcgogJy9wdWIvZ2l0JyBhbmQgd2lsbCBzZXJ2ZSB0aGVtIGFzIGBodHRwOi8vZ2l0LmRvbWFpbi5vcmcvZGlyLXVuZGVyLXB1Yi1naXRgLAotYm90aCBhcyBjbG9uZWFibGUgR0lUIFVSTCBhbmQgYXMgYnJvd3NlYWJsZSBnaXR3ZWIgaW50ZXJmYWNlLiAgSWYgeW91IHRoZW4KK2JvdGggYXMgY2xvbmVhYmxlIEdpdCBVUkwgYW5kIGFzIGJyb3dzZWFibGUgZ2l0d2ViIGludGVyZmFjZS4gIElmIHlvdSB0aGVuCiBzdGFydCB5b3VyIGxpbmtnaXQ6Z2l0LWRhZW1vblsxXSB3aXRoIGAtLWJhc2UtcGF0aD0vcHViL2dpdCAtLWV4cG9ydC1hbGxgCiB0aGVuIHlvdSBjYW4gZXZlbiB1c2UgdGhlIGBnaXQ6Ly9gIFVSTCB3aXRoIGV4YWN0bHkgdGhlIHNhbWUgcGF0aC4KIApAQCAtNTg0LDcgKzU4NCw3IEBACiByZWZlcmVuY2VkIGJ5IGAkcGVyX3JlcXVlc3RfY29uZmlnYDsKIAogVGhlc2UgY29uZmlndXJhdGlvbnMgZW5hYmxlIHR3byB0aGluZ3MuIEZpcnN0LCBlYWNoIHVuaXggdXNlciAoYDx1c2VyPmApIG9mCi10aGUgc2VydmVyIHdpbGwgYmUgYWJsZSB0byBicm93c2UgdGhyb3VnaCBnaXR3ZWIgZ2l0IHJlcG9zaXRvcmllcyBmb3VuZCBpbgordGhlIHNlcnZlciB3aWxsIGJlIGFibGUgdG8gYnJvd3NlIHRocm91Z2ggZ2l0d2ViIEdpdCByZXBvc2l0b3JpZXMgZm91bmQgaW4KICd+L3B1YmxpY19naXQvJyB3aXRoIHRoZSBmb2xsb3dpbmcgdXJsOgogCiAgIGh0dHA6Ly9naXQuZXhhbXBsZS5vcmcvfjx1c2VyPi8KQEAgLTY3Myw3ICs2NzMsNyBAQAogCiAgIGh0dHA6Ly9naXQuZXhhbXBsZS5jb20vcHJvamVjdC5naXQKIAotd2lsbCBnaXZlIHJhdyBhY2Nlc3MgdG8gdGhlIHByb2plY3QncyBnaXQgZGlyIChzbyB0aGF0IHRoZSBwcm9qZWN0IGNhbiBiZQord2lsbCBnaXZlIHJhdyBhY2Nlc3MgdG8gdGhlIHByb2plY3QncyBHaXQgZGlyIChzbyB0aGF0IHRoZSBwcm9qZWN0IGNhbiBiZQogY2xvbmVkKSwgd2hpbGUKIAogICBodHRwOi8vZ2l0LmV4YW1wbGUuY29tL3Byb2plY3QKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0d29ya2Zsb3dzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0d29ya2Zsb3dzLnR4dAppbmRleCA4YjhjNmFlLi5mMTZjNDE0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdHdvcmtmbG93cy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXR3b3JrZmxvd3MudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXR3b3JrZmxvd3MgLSBBbiBvdmVydmlldyBvZiByZWNvbW1lbmRlZCB3b3JrZmxvd3Mgd2l0aCBnaXQKK2dpdHdvcmtmbG93cyAtIEFuIG92ZXJ2aWV3IG9mIHJlY29tbWVuZGVkIHdvcmtmbG93cyB3aXRoIEdpdAogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTI0MiwxMCArMjQyLDEwIEBACiAuUmVsZWFzZSB0YWdnaW5nCiBbY2FwdGlvbj0iUmVjaXBlOiAiXQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotYGdpdCB0YWcgLXMgLW0gIkdJVCBYLlkuWiIgdlguWS5aIG1hc3RlcmAKK2BnaXQgdGFnIC1zIC1tICJHaXQgWC5ZLloiIHZYLlkuWiBtYXN0ZXJgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVlvdSBuZWVkIHRvIHB1c2ggdGhlIG5ldyB0YWcgdG8gYSBwdWJsaWMgZ2l0IHNlcnZlciAoc2VlCitZb3UgbmVlZCB0byBwdXNoIHRoZSBuZXcgdGFnIHRvIGEgcHVibGljIEdpdCBzZXJ2ZXIgKHNlZQogIkRJU1RSSUJVVEVEIFdPUktGTE9XUyIgYmVsb3cpLiBUaGlzIG1ha2VzIHRoZSB0YWcgYXZhaWxhYmxlIHRvCiBvdGhlcnMgdHJhY2tpbmcgeW91ciBwcm9qZWN0LiBUaGUgcHVzaCBjb3VsZCBhbHNvIHRyaWdnZXIgYQogcG9zdC11cGRhdGUgaG9vayB0byBwZXJmb3JtIHJlbGVhc2UtcmVsYXRlZCBpdGVtcyBzdWNoIGFzIGJ1aWxkaW5nCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dsb3NzYXJ5LWNvbnRlbnQudHh0IGIvRG9jdW1lbnRhdGlvbi9nbG9zc2FyeS1jb250ZW50LnR4dAppbmRleCAzNTk1YjU4Li5kYjJhNzRkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dsb3NzYXJ5LWNvbnRlbnQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2xvc3NhcnktY29udGVudC50eHQKQEAgLTcsNyArNyw3IEBACiAJQSBiYXJlIHJlcG9zaXRvcnkgaXMgbm9ybWFsbHkgYW4gYXBwcm9wcmlhdGVseQogCW5hbWVkIDw8ZGVmX2RpcmVjdG9yeSxkaXJlY3Rvcnk+PiB3aXRoIGEgYC5naXRgIHN1ZmZpeCB0aGF0IGRvZXMgbm90CiAJaGF2ZSBhIGxvY2FsbHkgY2hlY2tlZC1vdXQgY29weSBvZiBhbnkgb2YgdGhlIGZpbGVzIHVuZGVyCi0JcmV2aXNpb24gY29udHJvbC4gVGhhdCBpcywgYWxsIG9mIHRoZSBgZ2l0YAorCXJldmlzaW9uIGNvbnRyb2wuIFRoYXQgaXMsIGFsbCBvZiB0aGUgR2l0CiAJYWRtaW5pc3RyYXRpdmUgYW5kIGNvbnRyb2wgZmlsZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBwcmVzZW50IGluIHRoZQogCWhpZGRlbiBgLmdpdGAgc3ViLWRpcmVjdG9yeSBhcmUgZGlyZWN0bHkgcHJlc2VudCBpbiB0aGUKIAlgcmVwb3NpdG9yeS5naXRgIGRpcmVjdG9yeSBpbnN0ZWFkLApAQCAtMjIsNyArMjIsNyBAQAogCTw8ZGVmX2NvbW1pdCxjb21taXQ+PiBvbiBhIGJyYW5jaCBpcyByZWZlcnJlZCB0byBhcyB0aGUgdGlwIG9mCiAJdGhhdCBicmFuY2guICBUaGUgdGlwIG9mIHRoZSBicmFuY2ggaXMgcmVmZXJlbmNlZCBieSBhIGJyYW5jaAogCTw8ZGVmX2hlYWQsaGVhZD4+LCB3aGljaCBtb3ZlcyBmb3J3YXJkIGFzIGFkZGl0aW9uYWwgZGV2ZWxvcG1lbnQKLQlpcyBkb25lIG9uIHRoZSBicmFuY2guICBBIHNpbmdsZSBnaXQKKwlpcyBkb25lIG9uIHRoZSBicmFuY2guICBBIHNpbmdsZSBHaXQKIAk8PGRlZl9yZXBvc2l0b3J5LHJlcG9zaXRvcnk+PiBjYW4gdHJhY2sgYW4gYXJiaXRyYXJ5IG51bWJlciBvZgogCWJyYW5jaGVzLCBidXQgeW91ciA8PGRlZl93b3JraW5nX3RyZWUsd29ya2luZyB0cmVlPj4gaXMKIAlhc3NvY2lhdGVkIHdpdGgganVzdCBvbmUgb2YgdGhlbSAodGhlICJjdXJyZW50IiBvciAiY2hlY2tlZCBvdXQiCkBAIC0zNyw5ICszNyw5IEBACiAJPDxkZWZfY29tbWl0LGNvbW1pdD4+IGNvdWxkIGJlIG9uZSBvZiBpdHMgPDxkZWZfcGFyZW50LHBhcmVudHM+PikuCiAKIFtbZGVmX2NoYW5nZXNldF1dY2hhbmdlc2V0OjoKLQlCaXRLZWVwZXIvY3ZzcHMgc3BlYWsgZm9yICI8PGRlZl9jb21taXQsY29tbWl0Pj4iLiBTaW5jZSBnaXQgZG9lcyBub3QKKwlCaXRLZWVwZXIvY3ZzcHMgc3BlYWsgZm9yICI8PGRlZl9jb21taXQsY29tbWl0Pj4iLiBTaW5jZSBHaXQgZG9lcyBub3QKIAlzdG9yZSBjaGFuZ2VzLCBidXQgc3RhdGVzLCBpdCByZWFsbHkgZG9lcyBub3QgbWFrZSBzZW5zZSB0byB1c2UgdGhlIHRlcm0KLQkiY2hhbmdlc2V0cyIgd2l0aCBnaXQuCisJImNoYW5nZXNldHMiIHdpdGggR2l0LgogCiBbW2RlZl9jaGVja291dF1dY2hlY2tvdXQ6OgogCVRoZSBhY3Rpb24gb2YgdXBkYXRpbmcgYWxsIG9yIHBhcnQgb2YgdGhlCkBAIC01Miw3ICs1Miw3IEBACiBbW2RlZl9jaGVycnktcGlja2luZ11dY2hlcnJ5LXBpY2tpbmc6OgogCUluIDw8ZGVmX1NDTSxTQ00+PiBqYXJnb24sICJjaGVycnkgcGljayIgbWVhbnMgdG8gY2hvb3NlIGEgc3Vic2V0IG9mCiAJY2hhbmdlcyBvdXQgb2YgYSBzZXJpZXMgb2YgY2hhbmdlcyAodHlwaWNhbGx5IGNvbW1pdHMpIGFuZCByZWNvcmQgdGhlbQotCWFzIGEgbmV3IHNlcmllcyBvZiBjaGFuZ2VzIG9uIHRvcCBvZiBhIGRpZmZlcmVudCBjb2RlYmFzZS4gSW4gR0lULCB0aGlzIGlzCisJYXMgYSBuZXcgc2VyaWVzIG9mIGNoYW5nZXMgb24gdG9wIG9mIGEgZGlmZmVyZW50IGNvZGViYXNlLiBJbiBHaXQsIHRoaXMgaXMKIAlwZXJmb3JtZWQgYnkgdGhlICJnaXQgY2hlcnJ5LXBpY2siIGNvbW1hbmQgdG8gZXh0cmFjdCB0aGUgY2hhbmdlIGludHJvZHVjZWQKIAlieSBhbiBleGlzdGluZyA8PGRlZl9jb21taXQsY29tbWl0Pj4gYW5kIHRvIHJlY29yZCBpdCBiYXNlZCBvbiB0aGUgdGlwCiAJb2YgdGhlIGN1cnJlbnQgPDxkZWZfYnJhbmNoLGJyYW5jaD4+IGFzIGEgbmV3IGNvbW1pdC4KQEAgLTY0LDE0ICs2NCwxNCBAQAogCiBbW2RlZl9jb21taXRdXWNvbW1pdDo6CiAJQXMgYSBub3VuOiBBIHNpbmdsZSBwb2ludCBpbiB0aGUKLQlnaXQgaGlzdG9yeTsgdGhlIGVudGlyZSBoaXN0b3J5IG9mIGEgcHJvamVjdCBpcyByZXByZXNlbnRlZCBhcyBhCisJR2l0IGhpc3Rvcnk7IHRoZSBlbnRpcmUgaGlzdG9yeSBvZiBhIHByb2plY3QgaXMgcmVwcmVzZW50ZWQgYXMgYQogCXNldCBvZiBpbnRlcnJlbGF0ZWQgY29tbWl0cy4gIFRoZSB3b3JkICJjb21taXQiIGlzIG9mdGVuCi0JdXNlZCBieSBnaXQgaW4gdGhlIHNhbWUgcGxhY2VzIG90aGVyIHJldmlzaW9uIGNvbnRyb2wgc3lzdGVtcworCXVzZWQgYnkgR2l0IGluIHRoZSBzYW1lIHBsYWNlcyBvdGhlciByZXZpc2lvbiBjb250cm9sIHN5c3RlbXMKIAl1c2UgdGhlIHdvcmRzICJyZXZpc2lvbiIgb3IgInZlcnNpb24iLiAgQWxzbyB1c2VkIGFzIGEgc2hvcnQKIAloYW5kIGZvciA8PGRlZl9jb21taXRfb2JqZWN0LGNvbW1pdCBvYmplY3Q+Pi4KICsKIEFzIGEgdmVyYjogVGhlIGFjdGlvbiBvZiBzdG9yaW5nIGEgbmV3IHNuYXBzaG90IG9mIHRoZSBwcm9qZWN0J3MKLXN0YXRlIGluIHRoZSBnaXQgaGlzdG9yeSwgYnkgY3JlYXRpbmcgYSBuZXcgY29tbWl0IHJlcHJlc2VudGluZyB0aGUgY3VycmVudAorc3RhdGUgaW4gdGhlIEdpdCBoaXN0b3J5LCBieSBjcmVhdGluZyBhIG5ldyBjb21taXQgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50CiBzdGF0ZSBvZiB0aGUgPDxkZWZfaW5kZXgsaW5kZXg+PiBhbmQgYWR2YW5jaW5nIDw8ZGVmX0hFQUQsSEVBRD4+CiB0byBwb2ludCBhdCB0aGUgbmV3IGNvbW1pdC4KIApAQCAtODIsOCArODIsOCBAQAogCXRvIHRoZSB0b3AgPDxkZWZfZGlyZWN0b3J5LGRpcmVjdG9yeT4+IG9mIHRoZSBzdG9yZWQKIAlyZXZpc2lvbi4KIAotW1tkZWZfY29yZV9naXRdXWNvcmUgZ2l0OjoKLQlGdW5kYW1lbnRhbCBkYXRhIHN0cnVjdHVyZXMgYW5kIHV0aWxpdGllcyBvZiBnaXQuIEV4cG9zZXMgb25seSBsaW1pdGVkCitbW2RlZl9jb3JlX2dpdF1dY29yZSBHaXQ6OgorCUZ1bmRhbWVudGFsIGRhdGEgc3RydWN0dXJlcyBhbmQgdXRpbGl0aWVzIG9mIEdpdC4gRXhwb3NlcyBvbmx5IGxpbWl0ZWQKIAlzb3VyY2UgY29kZSBtYW5hZ2VtZW50IHRvb2xzLgogCiBbW2RlZl9EQUddXURBRzo6CkBAIC0xMDAsMTIgKzEwMCwyMiBAQAogCiBbW2RlZl9kZXRhY2hlZF9IRUFEXV1kZXRhY2hlZCBIRUFEOjoKIAlOb3JtYWxseSB0aGUgPDxkZWZfSEVBRCxIRUFEPj4gc3RvcmVzIHRoZSBuYW1lIG9mIGEKLQk8PGRlZl9icmFuY2gsYnJhbmNoPj4uICBIb3dldmVyLCBnaXQgYWxzbyBhbGxvd3MgeW91IHRvIDw8ZGVmX2NoZWNrb3V0LGNoZWNrIG91dD4+Ci0JYW4gYXJiaXRyYXJ5IDw8ZGVmX2NvbW1pdCxjb21taXQ+PiB0aGF0IGlzbid0IG5lY2Vzc2FyaWx5IHRoZSB0aXAgb2YgYW55Ci0JcGFydGljdWxhciBicmFuY2guICBJbiB0aGlzIGNhc2UgSEVBRCBpcyBzYWlkIHRvIGJlICJkZXRhY2hlZCIuCi0KLVtbZGVmX2RpcmNhY2hlXV1kaXJjYWNoZTo6Ci0JWW91IGFyZSAqd2FhYWFheSogYmVoaW5kLiBTZWUgPDxkZWZfaW5kZXgsaW5kZXg+Pi4KKwk8PGRlZl9icmFuY2gsYnJhbmNoPj4sIGFuZCBjb21tYW5kcyB0aGF0IG9wZXJhdGUgb24gdGhlCisJaGlzdG9yeSBIRUFEIHJlcHJlc2VudHMgb3BlcmF0ZSBvbiB0aGUgaGlzdG9yeSBsZWFkaW5nIHRvIHRoZQorCXRpcCBvZiB0aGUgYnJhbmNoIHRoZSBIRUFEIHBvaW50cyBhdC4gIEhvd2V2ZXIsIEdpdCBhbHNvCisJYWxsb3dzIHlvdSB0byA8PGRlZl9jaGVja291dCxjaGVjayBvdXQ+PiBhbiBhcmJpdHJhcnkKKwk8PGRlZl9jb21taXQsY29tbWl0Pj4gdGhhdCBpc24ndCBuZWNlc3NhcmlseSB0aGUgdGlwIG9mIGFueQorCXBhcnRpY3VsYXIgYnJhbmNoLiAgVGhlIEhFQUQgaW4gc3VjaCBhIHN0YXRlIGlzIGNhbGxlZAorCSJkZXRhY2hlZCIuCisrCitOb3RlIHRoYXQgY29tbWFuZHMgdGhhdCBvcGVyYXRlIG9uIHRoZSBoaXN0b3J5IG9mIHRoZSBjdXJyZW50IGJyYW5jaAorKGUuZy4gYGdpdCBjb21taXRgIHRvIGJ1aWxkIGEgbmV3IGhpc3Rvcnkgb24gdG9wIG9mIGl0KSBzdGlsbCB3b3JrCit3aGlsZSB0aGUgSEVBRCBpcyBkZXRhY2hlZC4gVGhleSB1cGRhdGUgdGhlIEhFQUQgdG8gcG9pbnQgYXQgdGhlIHRpcAorb2YgdGhlIHVwZGF0ZWQgaGlzdG9yeSB3aXRob3V0IGFmZmVjdGluZyBhbnkgYnJhbmNoLiAgQ29tbWFuZHMgdGhhdAordXBkYXRlIG9yIGlucXVpcmUgaW5mb3JtYXRpb24gX2Fib3V0XyB0aGUgY3VycmVudCBicmFuY2ggKGUuZy4gYGdpdAorYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvYCB0aGF0IHNldHMgd2hhdCByZW1vdGUgdHJhY2tpbmcgYnJhbmNoIHRoZQorY3VycmVudCBicmFuY2ggaW50ZWdyYXRlcyB3aXRoKSBvYnZpb3VzbHkgZG8gbm90IHdvcmssIGFzIHRoZXJlIGlzIG5vCisocmVhbCkgY3VycmVudCBicmFuY2ggdG8gYXNrIGFib3V0IGluIHRoaXMgc3RhdGUuCiAKIFtbZGVmX2RpcmVjdG9yeV1dZGlyZWN0b3J5OjoKIAlUaGUgbGlzdCB5b3UgZ2V0IHdpdGggImxzIiA6LSkKQEAgLTExNSwxMSArMTI1LDYgQEAKIAlpdCBjb250YWlucyBtb2RpZmljYXRpb25zIHdoaWNoIGhhdmUgbm90IGJlZW4gPDxkZWZfY29tbWl0LGNvbW1pdHRlZD4+IHRvIHRoZSBjdXJyZW50CiAJPDxkZWZfYnJhbmNoLGJyYW5jaD4+LgogCi1bW2RlZl9lbnRdXWVudDo6Ci0JRmF2b3JpdGUgc3lub255bSB0byAiPDxkZWZfdHJlZS1pc2gsdHJlZS1pc2g+PiIgYnkgc29tZSB0b3RhbCBnZWVrcy4gU2VlCi0JYGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW50XyhNaWRkbGUtZWFydGgpYCBmb3IgYW4gaW4tZGVwdGgKLQlleHBsYW5hdGlvbi4gQXZvaWQgdGhpcyB0ZXJtLCBub3QgdG8gY29uZnVzZSBwZW9wbGUuCi0KIFtbZGVmX2V2aWxfbWVyZ2VdXWV2aWwgbWVyZ2U6OgogCUFuIGV2aWwgbWVyZ2UgaXMgYSA8PGRlZl9tZXJnZSxtZXJnZT4+IHRoYXQgaW50cm9kdWNlcyBjaGFuZ2VzIHRoYXQKIAlkbyBub3QgYXBwZWFyIGluIGFueSA8PGRlZl9wYXJlbnQscGFyZW50Pj4uCkBAIC0xNDIsMjIgKzE0NywyNiBAQAogCWFuZCB0byBnZXQgdGhlbSwgdG9vLiAgU2VlIGFsc28gbGlua2dpdDpnaXQtZmV0Y2hbMV0uCiAKIFtbZGVmX2ZpbGVfc3lzdGVtXV1maWxlIHN5c3RlbTo6Ci0JTGludXMgVG9ydmFsZHMgb3JpZ2luYWxseSBkZXNpZ25lZCBnaXQgdG8gYmUgYSB1c2VyIHNwYWNlIGZpbGUgc3lzdGVtLAorCUxpbnVzIFRvcnZhbGRzIG9yaWdpbmFsbHkgZGVzaWduZWQgR2l0IHRvIGJlIGEgdXNlciBzcGFjZSBmaWxlIHN5c3RlbSwKIAlpLmUuIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBob2xkIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4gVGhhdCBlbnN1cmVkIHRoZQotCWVmZmljaWVuY3kgYW5kIHNwZWVkIG9mIGdpdC4KKwllZmZpY2llbmN5IGFuZCBzcGVlZCBvZiBHaXQuCiAKLVtbZGVmX2dpdF9hcmNoaXZlXV1naXQgYXJjaGl2ZTo6CitbW2RlZl9naXRfYXJjaGl2ZV1dR2l0IGFyY2hpdmU6OgogCVN5bm9ueW0gZm9yIDw8ZGVmX3JlcG9zaXRvcnkscmVwb3NpdG9yeT4+IChmb3IgYXJjaCBwZW9wbGUpLgogCitbW2RlZl9naXRmaWxlXV1naXRmaWxlOjoKKwlBIHBsYWluIGZpbGUgYC5naXRgIGF0IHRoZSByb290IG9mIGEgd29ya2luZyB0cmVlIHRoYXQKKwlwb2ludHMgYXQgdGhlIGRpcmVjdG9yeSB0aGF0IGlzIHRoZSByZWFsIHJlcG9zaXRvcnkuCisKIFtbZGVmX2dyYWZ0c11dZ3JhZnRzOjoKIAlHcmFmdHMgZW5hYmxlcyB0d28gb3RoZXJ3aXNlIGRpZmZlcmVudCBsaW5lcyBvZiBkZXZlbG9wbWVudCB0byBiZSBqb2luZWQKIAl0b2dldGhlciBieSByZWNvcmRpbmcgZmFrZSBhbmNlc3RyeSBpbmZvcm1hdGlvbiBmb3IgY29tbWl0cy4gVGhpcyB3YXkKLQl5b3UgY2FuIG1ha2UgZ2l0IHByZXRlbmQgdGhlIHNldCBvZiA8PGRlZl9wYXJlbnQscGFyZW50cz4+IGEgPDxkZWZfY29tbWl0LGNvbW1pdD4+IGhhcworCXlvdSBjYW4gbWFrZSBHaXQgcHJldGVuZCB0aGUgc2V0IG9mIDw8ZGVmX3BhcmVudCxwYXJlbnRzPj4gYSA8PGRlZl9jb21taXQsY29tbWl0Pj4gaGFzCiAJaXMgZGlmZmVyZW50IGZyb20gd2hhdCB3YXMgcmVjb3JkZWQgd2hlbiB0aGUgY29tbWl0IHdhcwogCWNyZWF0ZWQuIENvbmZpZ3VyZWQgdmlhIHRoZSBgLmdpdC9pbmZvL2dyYWZ0c2AgZmlsZS4KIAogW1tkZWZfaGFzaF1daGFzaDo6Ci0JSW4gZ2l0J3MgY29udGV4dCwgc3lub255bSB0byA8PGRlZl9vYmplY3RfbmFtZSxvYmplY3QgbmFtZT4+LgorCUluIEdpdCdzIGNvbnRleHQsIHN5bm9ueW0gZm9yIDw8ZGVmX29iamVjdF9uYW1lLG9iamVjdCBuYW1lPj4uCiAKIFtbZGVmX2hlYWRdXWhlYWQ6OgogCUEgPDxkZWZfcmVmLG5hbWVkIHJlZmVyZW5jZT4+IHRvIHRoZSA8PGRlZl9jb21taXQsY29tbWl0Pj4gYXQgdGhlIHRpcCBvZiBhCkBAIC0xNzcsMTQgKzE4NiwxNCBAQAogCUEgc3lub255bSBmb3IgPDxkZWZfaGVhZCxoZWFkPj4uCiAKIFtbZGVmX2hvb2tdXWhvb2s6OgotCUR1cmluZyB0aGUgbm9ybWFsIGV4ZWN1dGlvbiBvZiBzZXZlcmFsIGdpdCBjb21tYW5kcywgY2FsbC1vdXRzIGFyZSBtYWRlCisJRHVyaW5nIHRoZSBub3JtYWwgZXhlY3V0aW9uIG9mIHNldmVyYWwgR2l0IGNvbW1hbmRzLCBjYWxsLW91dHMgYXJlIG1hZGUKIAl0byBvcHRpb25hbCBzY3JpcHRzIHRoYXQgYWxsb3cgYSBkZXZlbG9wZXIgdG8gYWRkIGZ1bmN0aW9uYWxpdHkgb3IKIAljaGVja2luZy4gVHlwaWNhbGx5LCB0aGUgaG9va3MgYWxsb3cgZm9yIGEgY29tbWFuZCB0byBiZSBwcmUtdmVyaWZpZWQKIAlhbmQgcG90ZW50aWFsbHkgYWJvcnRlZCwgYW5kIGFsbG93IGZvciBhIHBvc3Qtbm90aWZpY2F0aW9uIGFmdGVyIHRoZQogCW9wZXJhdGlvbiBpcyBkb25lLiBUaGUgaG9vayBzY3JpcHRzIGFyZSBmb3VuZCBpbiB0aGUKIAlgJEdJVF9ESVIvaG9va3MvYCBkaXJlY3RvcnksIGFuZCBhcmUgZW5hYmxlZCBieSBzaW1wbHkKIAlyZW1vdmluZyB0aGUgYC5zYW1wbGVgIHN1ZmZpeCBmcm9tIHRoZSBmaWxlbmFtZS4gSW4gZWFybGllciB2ZXJzaW9ucwotCW9mIGdpdCB5b3UgaGFkIHRvIG1ha2UgdGhlbSBleGVjdXRhYmxlLgorCW9mIEdpdCB5b3UgaGFkIHRvIG1ha2UgdGhlbSBleGVjdXRhYmxlLgogCiBbW2RlZl9pbmRleF1daW5kZXg6OgogCUEgY29sbGVjdGlvbiBvZiBmaWxlcyB3aXRoIHN0YXQgaW5mb3JtYXRpb24sIHdob3NlIGNvbnRlbnRzIGFyZSBzdG9yZWQKQEAgLTIwMSw3ICsyMTAsNyBAQAogCiBbW2RlZl9tYXN0ZXJdXW1hc3Rlcjo6CiAJVGhlIGRlZmF1bHQgZGV2ZWxvcG1lbnQgPDxkZWZfYnJhbmNoLGJyYW5jaD4+LiBXaGVuZXZlciB5b3UKLQljcmVhdGUgYSBnaXQgPDxkZWZfcmVwb3NpdG9yeSxyZXBvc2l0b3J5Pj4sIGEgYnJhbmNoIG5hbWVkCisJY3JlYXRlIGEgR2l0IDw8ZGVmX3JlcG9zaXRvcnkscmVwb3NpdG9yeT4+LCBhIGJyYW5jaCBuYW1lZAogCSJtYXN0ZXIiIGlzIGNyZWF0ZWQsIGFuZCBiZWNvbWVzIHRoZSBhY3RpdmUgYnJhbmNoLiBJbiBtb3N0CiAJY2FzZXMsIHRoaXMgY29udGFpbnMgdGhlIGxvY2FsIGRldmVsb3BtZW50LCB0aG91Z2ggdGhhdCBpcwogCXB1cmVseSBieSBjb252ZW50aW9uIGFuZCBpcyBub3QgcmVxdWlyZWQuCkBAIC0yMjgsOCArMjM3LDggQEAKICJtZXJnZSIuCiAKIFtbZGVmX29iamVjdF1db2JqZWN0OjoKLQlUaGUgdW5pdCBvZiBzdG9yYWdlIGluIGdpdC4gSXQgaXMgdW5pcXVlbHkgaWRlbnRpZmllZCBieSB0aGUKLQk8PGRlZl9TSEExLFNIQTE+PiBvZiBpdHMgY29udGVudHMuIENvbnNlcXVlbnRseSwgYW4KKwlUaGUgdW5pdCBvZiBzdG9yYWdlIGluIEdpdC4gSXQgaXMgdW5pcXVlbHkgaWRlbnRpZmllZCBieSB0aGUKKwk8PGRlZl9TSEExLFNIQS0xPj4gb2YgaXRzIGNvbnRlbnRzLiBDb25zZXF1ZW50bHksIGFuCiAJb2JqZWN0IGNhbiBub3QgYmUgY2hhbmdlZC4KIAogW1tkZWZfb2JqZWN0X2RhdGFiYXNlXV1vYmplY3QgZGF0YWJhc2U6OgpAQCAtMjQxLDEwICsyNTAsOSBAQAogCVN5bm9ueW0gZm9yIDw8ZGVmX29iamVjdF9uYW1lLG9iamVjdCBuYW1lPj4uCiAKIFtbZGVmX29iamVjdF9uYW1lXV1vYmplY3QgbmFtZTo6Ci0JVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIGFuIDw8ZGVmX29iamVjdCxvYmplY3Q+Pi4gVGhlIDw8ZGVmX2hhc2gsaGFzaD4+Ci0Jb2YgdGhlIG9iamVjdCdzIGNvbnRlbnRzIHVzaW5nIHRoZSBTZWN1cmUgSGFzaCBBbGdvcml0aG0KLQkxIGFuZCB1c3VhbGx5IHJlcHJlc2VudGVkIGJ5IHRoZSA0MCBjaGFyYWN0ZXIgaGV4YWRlY2ltYWwgZW5jb2Rpbmcgb2YKLQl0aGUgPDxkZWZfaGFzaCxoYXNoPj4gb2YgdGhlIG9iamVjdC4KKwlUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgYW4gPDxkZWZfb2JqZWN0LG9iamVjdD4+LiAgVGhlCisJb2JqZWN0IG5hbWUgaXMgdXN1YWxseSByZXByZXNlbnRlZCBieSBhIDQwIGNoYXJhY3RlcgorCWhleGFkZWNpbWFsIHN0cmluZy4gIEFsc28gY29sbG9xdWlhbGx5IGNhbGxlZCA8PGRlZl9TSEExLFNIQS0xPj4uCiAKIFtbZGVmX29iamVjdF90eXBlXV1vYmplY3QgdHlwZTo6CiAJT25lIG9mIHRoZSBpZGVudGlmaWVycyAiPDxkZWZfY29tbWl0X29iamVjdCxjb21taXQ+PiIsCkBAIC0yNTMsOCArMjYxLDcgQEAKIAk8PGRlZl9vYmplY3Qsb2JqZWN0Pj4uCiAKIFtbZGVmX29jdG9wdXNdXW9jdG9wdXM6OgotCVRvIDw8ZGVmX21lcmdlLG1lcmdlPj4gbW9yZSB0aGFuIHR3byA8PGRlZl9icmFuY2gsYnJhbmNoZXM+Pi4gQWxzbyBkZW5vdGVzIGFuCi0JaW50ZWxsaWdlbnQgcHJlZGF0b3IuCisJVG8gPDxkZWZfbWVyZ2UsbWVyZ2U+PiBtb3JlIHRoYW4gdHdvIDw8ZGVmX2JyYW5jaCxicmFuY2hlcz4+LgogCiBbW2RlZl9vcmlnaW5dXW9yaWdpbjo6CiAJVGhlIGRlZmF1bHQgdXBzdHJlYW0gPDxkZWZfcmVwb3NpdG9yeSxyZXBvc2l0b3J5Pj4uIE1vc3QgcHJvamVjdHMgaGF2ZQpAQCAtMjc0LDcgKzI4MSw3IEBACiAJcGFjay4KIAogW1tkZWZfcGF0aHNwZWNdXXBhdGhzcGVjOjoKLSAgICAgICBQYXR0ZXJuIHVzZWQgdG8gc3BlY2lmeSBwYXRocy4KKwlQYXR0ZXJuIHVzZWQgdG8gbGltaXQgcGF0aHMgaW4gR2l0IGNvbW1hbmRzLgogKwogUGF0aHNwZWNzIGFyZSB1c2VkIG9uIHRoZSBjb21tYW5kIGxpbmUgb2YgImdpdCBscy1maWxlcyIsICJnaXQKIGxzLXRyZWUiLCAiZ2l0IGFkZCIsICJnaXQgZ3JlcCIsICJnaXQgZGlmZiIsICJnaXQgY2hlY2tvdXQiLApAQCAtMjgzLDYgKzI5MCw4IEBACiB3b3JrdHJlZS4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBlYWNoIGNvbW1hbmQgZm9yIHdoZXRoZXIKIHBhdGhzIGFyZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3Rvcnkgb3IgdG9wbGV2ZWwuICBUaGUKIHBhdGhzcGVjIHN5bnRheCBpcyBhcyBmb2xsb3dzOgorKworLS0KIAogKiBhbnkgcGF0aCBtYXRjaGVzIGl0c2VsZgogKiB0aGUgcGF0aHNwZWMgdXAgdG8gdGhlIGxhc3Qgc2xhc2ggcmVwcmVzZW50cyBhCkBAIC0yOTIsMTEgKzMwMSwxMiBAQAogICBvZiB0aGUgcGF0aG5hbWUuICBQYXRocyByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5CiAgIHByZWZpeCB3aWxsIGJlIG1hdGNoZWQgYWdhaW5zdCB0aGF0IHBhdHRlcm4gdXNpbmcgZm5tYXRjaCgzKTsKICAgaW4gcGFydGljdWxhciwgJyonIGFuZCAnPycgX2Nhbl8gbWF0Y2ggZGlyZWN0b3J5IHNlcGFyYXRvcnMuCisKKy0tCiArCiBGb3IgZXhhbXBsZSwgRG9jdW1lbnRhdGlvbi8qLmpwZyB3aWxsIG1hdGNoIGFsbCAuanBnIGZpbGVzCiBpbiB0aGUgRG9jdW1lbnRhdGlvbiBzdWJ0cmVlLAogaW5jbHVkaW5nIERvY3VtZW50YXRpb24vY2hhcHRlcl8xL2ZpZ3VyZV8xLmpwZy4KLQogKwogQSBwYXRoc3BlYyB0aGF0IGJlZ2lucyB3aXRoIGEgY29sb24gYDpgIGhhcyBzcGVjaWFsIG1lYW5pbmcuICBJbiB0aGUKIHNob3J0IGZvcm0sIHRoZSBsZWFkaW5nIGNvbG9uIGA6YCBpcyBmb2xsb3dlZCBieSB6ZXJvIG9yIG1vcmUgIm1hZ2ljCkBAIC0zMTIsMTggKzMyMiwxMCBAQAogYWdhaW5zdCB0aGUgcGF0aC4KICsKIFRoZSAibWFnaWMgc2lnbmF0dXJlIiBjb25zaXN0cyBvZiBhbiBBU0NJSSBzeW1ib2wgdGhhdCBpcyBub3QKLWFscGhhbnVtZXJpYy4KLSsKLS0tCi10b3AgYC9gOzsKLQlUaGUgbWFnaWMgd29yZCBgdG9wYCAobW5lbW9uaWM6IGAvYCkgbWFrZXMgdGhlIHBhdHRlcm4gbWF0Y2gKLQlmcm9tIHRoZSByb290IG9mIHRoZSB3b3JraW5nIHRyZWUsIGV2ZW4gd2hlbiB5b3UgYXJlIHJ1bm5pbmcKLQl0aGUgY29tbWFuZCBmcm9tIGluc2lkZSBhIHN1YmRpcmVjdG9yeS4KLS0tCi0rCi1DdXJyZW50bHkgb25seSB0aGUgc2xhc2ggYC9gIGlzIHJlY29nbml6ZWQgYXMgdGhlICJtYWdpYyBzaWduYXR1cmUiLAotYnV0IGl0IGlzIGVudmlzaW9uZWQgdGhhdCB3ZSB3aWxsIHN1cHBvcnQgbW9yZSB0eXBlcyBvZiBtYWdpYyBpbiBsYXRlcgotdmVyc2lvbnMgb2YgZ2l0LgorYWxwaGFudW1lcmljLiBDdXJyZW50bHkgb25seSB0aGUgc2xhc2ggYC9gIGlzIHJlY29nbml6ZWQgYXMgYQorIm1hZ2ljIHNpZ25hdHVyZSI6IGl0IG1ha2VzIHRoZSBwYXR0ZXJuIG1hdGNoIGZyb20gdGhlIHJvb3Qgb2YKK3RoZSB3b3JraW5nIHRyZWUsIGV2ZW4gd2hlbiB5b3UgYXJlIHJ1bm5pbmcgdGhlIGNvbW1hbmQgZnJvbQoraW5zaWRlIGEgc3ViZGlyZWN0b3J5LgogKwogQSBwYXRoc3BlYyB3aXRoIG9ubHkgYSBjb2xvbiBtZWFucyAidGhlcmUgaXMgbm8gcGF0aHNwZWMiLiBUaGlzIGZvcm0KIHNob3VsZCBub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciBwYXRoc3BlYy4KQEAgLTM0MSwxMiArMzQzLDEyIEBACiAJcGFydGljdWxhciBsaW5lIG9mIHRleHQuIFNlZSBsaW5rZ2l0OmdpdC1kaWZmWzFdLgogCiBbW2RlZl9wbHVtYmluZ11dcGx1bWJpbmc6OgotCUN1dGUgbmFtZSBmb3IgPDxkZWZfY29yZV9naXQsY29yZSBnaXQ+Pi4KKwlDdXRlIG5hbWUgZm9yIDw8ZGVmX2NvcmVfZ2l0LGNvcmUgR2l0Pj4uCiAKIFtbZGVmX3BvcmNlbGFpbl1dcG9yY2VsYWluOjoKIAlDdXRlIG5hbWUgZm9yIHByb2dyYW1zIGFuZCBwcm9ncmFtIHN1aXRlcyBkZXBlbmRpbmcgb24KLQk8PGRlZl9jb3JlX2dpdCxjb3JlIGdpdD4+LCBwcmVzZW50aW5nIGEgaGlnaCBsZXZlbCBhY2Nlc3MgdG8KLQljb3JlIGdpdC4gUG9yY2VsYWlucyBleHBvc2UgbW9yZSBvZiBhIDw8ZGVmX1NDTSxTQ00+PgorCTw8ZGVmX2NvcmVfZ2l0LGNvcmUgR2l0Pj4sIHByZXNlbnRpbmcgYSBoaWdoIGxldmVsIGFjY2VzcyB0bworCWNvcmUgR2l0LiBQb3JjZWxhaW5zIGV4cG9zZSBtb3JlIG9mIGEgPDxkZWZfU0NNLFNDTT4+CiAJaW50ZXJmYWNlIHRoYW4gdGhlIDw8ZGVmX3BsdW1iaW5nLHBsdW1iaW5nPj4uCiAKIFtbZGVmX3B1bGxdXXB1bGw6OgpAQCAtMzgxLDcgKzM4Myw3IEBACiAJdG8gdGhlIHJlc3VsdC4KIAogW1tkZWZfcmVmXV1yZWY6OgotCUEgNDAtYnl0ZSBoZXggcmVwcmVzZW50YXRpb24gb2YgYSA8PGRlZl9TSEExLFNIQTE+PiBvciBhIG5hbWUgdGhhdAorCUEgNDAtYnl0ZSBoZXggcmVwcmVzZW50YXRpb24gb2YgYSA8PGRlZl9TSEExLFNIQS0xPj4gb3IgYSBuYW1lIHRoYXQKIAlkZW5vdGVzIGEgcGFydGljdWxhciA8PGRlZl9vYmplY3Qsb2JqZWN0Pj4uIFRoZXkgbWF5IGJlIHN0b3JlZCBpbgogCWEgZmlsZSB1bmRlciBgJEdJVF9ESVIvcmVmcy9gIGRpcmVjdG9yeSwgb3IKIAlpbiB0aGUgYCRHSVRfRElSL3BhY2tlZC1yZWZzYCBmaWxlLgpAQCAtMzk1LDIzICszOTcsMTYgQEAKIFtbZGVmX3JlZnNwZWNdXXJlZnNwZWM6OgogCUEgInJlZnNwZWMiIGlzIHVzZWQgYnkgPDxkZWZfZmV0Y2gsZmV0Y2g+PiBhbmQKIAk8PGRlZl9wdXNoLHB1c2g+PiB0byBkZXNjcmliZSB0aGUgbWFwcGluZyBiZXR3ZWVuIHJlbW90ZQotCTw8ZGVmX3JlZixyZWY+PiBhbmQgbG9jYWwgcmVmLiBUaGV5IGFyZSBjb21iaW5lZCB3aXRoIGEgY29sb24gaW4KLQl0aGUgZm9ybWF0IDxzcmM+Ojxkc3Q+LCBwcmVjZWRlZCBieSBhbiBvcHRpb25hbCBwbHVzIHNpZ24sICsuCi0JRm9yIGV4YW1wbGU6IGBnaXQgZmV0Y2ggJFVSTAotCXJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvaGVhZHMvb3JpZ2luYCBtZWFucyAiZ3JhYiB0aGUgbWFzdGVyCi0JPDxkZWZfYnJhbmNoLGJyYW5jaD4+IDw8ZGVmX2hlYWQsaGVhZD4+IGZyb20gdGhlICRVUkwgYW5kIHN0b3JlCi0JaXQgYXMgbXkgb3JpZ2luIGJyYW5jaCBoZWFkIi4gQW5kIGBnaXQgcHVzaAotCSRVUkwgcmVmcy9oZWFkcy9tYXN0ZXI6cmVmcy9oZWFkcy90by11cHN0cmVhbWAgbWVhbnMgInB1Ymxpc2ggbXkKLQltYXN0ZXIgYnJhbmNoIGhlYWQgYXMgdG8tdXBzdHJlYW0gYnJhbmNoIGF0ICRVUkwiLiBTZWUgYWxzbwotCWxpbmtnaXQ6Z2l0LXB1c2hbMV0uCisJPDxkZWZfcmVmLHJlZj4+IGFuZCBsb2NhbCByZWYuCiAKIFtbZGVmX3JlbW90ZV90cmFja2luZ19icmFuY2hdXXJlbW90ZS10cmFja2luZyBicmFuY2g6OgotCUEgcmVndWxhciBnaXQgPDxkZWZfYnJhbmNoLGJyYW5jaD4+IHRoYXQgaXMgdXNlZCB0byBmb2xsb3cgY2hhbmdlcyBmcm9tCi0JYW5vdGhlciA8PGRlZl9yZXBvc2l0b3J5LHJlcG9zaXRvcnk+Pi4gQSByZW1vdGUtdHJhY2tpbmcKLQlicmFuY2ggc2hvdWxkIG5vdCBjb250YWluIGRpcmVjdCBtb2RpZmljYXRpb25zIG9yIGhhdmUgbG9jYWwgY29tbWl0cwotCW1hZGUgdG8gaXQuIEEgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCBjYW4gdXN1YWxseSBiZQotCWlkZW50aWZpZWQgYXMgdGhlIHJpZ2h0LWhhbmQtc2lkZSA8PGRlZl9yZWYscmVmPj4gaW4gYSBQdWxsOgotCTw8ZGVmX3JlZnNwZWMscmVmc3BlYz4+LgorCUEgPDxkZWZfcmVmLHJlZj4+IHRoYXQgaXMgdXNlZCB0byBmb2xsb3cgY2hhbmdlcyBmcm9tIGFub3RoZXIKKwk8PGRlZl9yZXBvc2l0b3J5LHJlcG9zaXRvcnk+Pi4gSXQgdHlwaWNhbGx5IGxvb2tzIGxpa2UKKwkncmVmcy9yZW1vdGVzL2Zvby9iYXInIChpbmRpY2F0aW5nIHRoYXQgaXQgdHJhY2tzIGEgYnJhbmNoIG5hbWVkCisJJ2JhcicgaW4gYSByZW1vdGUgbmFtZWQgJ2ZvbycpLCBhbmQgbWF0Y2hlcyB0aGUgcmlnaHQtaGFuZC1zaWRlIG9mCisJYSBjb25maWd1cmVkIGZldGNoIDw8ZGVmX3JlZnNwZWMscmVmc3BlYz4+LiBBIHJlbW90ZS10cmFja2luZworCWJyYW5jaCBzaG91bGQgbm90IGNvbnRhaW4gZGlyZWN0IG1vZGlmaWNhdGlvbnMgb3IgaGF2ZSBsb2NhbAorCWNvbW1pdHMgbWFkZSB0byBpdC4KIAogW1tkZWZfcmVwb3NpdG9yeV1dcmVwb3NpdG9yeTo6CiAJQSBjb2xsZWN0aW9uIG9mIDw8ZGVmX3JlZixyZWZzPj4gdG9nZXRoZXIgd2l0aCBhbgpAQCAtNDI2LDkgKzQyMSw3IEBACiAJPDxkZWZfbWVyZ2UsbWVyZ2U+PiBsZWZ0IGJlaGluZC4KIAogW1tkZWZfcmV2aXNpb25dXXJldmlzaW9uOjoKLQlBIHBhcnRpY3VsYXIgc3RhdGUgb2YgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHdoaWNoIHdhcyBzdG9yZWQgaW4gdGhlCi0JPDxkZWZfb2JqZWN0X2RhdGFiYXNlLG9iamVjdCBkYXRhYmFzZT4+LiBJdCBpcyByZWZlcmVuY2VkIGJ5IGEKLQk8PGRlZl9jb21taXRfb2JqZWN0LGNvbW1pdCBvYmplY3Q+Pi4KKwlTeW5vbnltIGZvciA8PGRlZl9jb21taXQsY29tbWl0Pj4gKHRoZSBub3VuKS4KIAogW1tkZWZfcmV3aW5kXV1yZXdpbmQ6OgogCVRvIHRocm93IGF3YXkgcGFydCBvZiB0aGUgZGV2ZWxvcG1lbnQsIGkuZS4gdG8gYXNzaWduIHRoZQpAQCAtNDM3LDEzICs0MzAsMTQgQEAKIFtbZGVmX1NDTV1dU0NNOjoKIAlTb3VyY2UgY29kZSBtYW5hZ2VtZW50ICh0b29sKS4KIAotW1tkZWZfU0hBMV1dU0hBMTo6Ci0JU3lub255bSBmb3IgPDxkZWZfb2JqZWN0X25hbWUsb2JqZWN0IG5hbWU+Pi4KK1tbZGVmX1NIQTFdXVNIQS0xOjoKKwkiU2VjdXJlIEhhc2ggQWxnb3JpdGhtIDEiOyBhIGNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbi4KKwlJbiB0aGUgY29udGV4dCBvZiBHaXQgdXNlZCBhcyBhIHN5bm9ueW0gZm9yIDw8ZGVmX29iamVjdF9uYW1lLG9iamVjdCBuYW1lPj4uCiAKIFtbZGVmX3NoYWxsb3dfcmVwb3NpdG9yeV1dc2hhbGxvdyByZXBvc2l0b3J5OjoKIAlBIHNoYWxsb3cgPDxkZWZfcmVwb3NpdG9yeSxyZXBvc2l0b3J5Pj4gaGFzIGFuIGluY29tcGxldGUKIAloaXN0b3J5IHNvbWUgb2Ygd2hvc2UgPDxkZWZfY29tbWl0LGNvbW1pdHM+PiBoYXZlIDw8ZGVmX3BhcmVudCxwYXJlbnRzPj4gY2F1dGVyaXplZCBhd2F5IChpbiBvdGhlcgotCXdvcmRzLCBnaXQgaXMgdG9sZCB0byBwcmV0ZW5kIHRoYXQgdGhlc2UgY29tbWl0cyBkbyBub3QgaGF2ZSB0aGUKKwl3b3JkcywgR2l0IGlzIHRvbGQgdG8gcHJldGVuZCB0aGF0IHRoZXNlIGNvbW1pdHMgZG8gbm90IGhhdmUgdGhlCiAJcGFyZW50cywgZXZlbiB0aG91Z2ggdGhleSBhcmUgcmVjb3JkZWQgaW4gdGhlIDw8ZGVmX2NvbW1pdF9vYmplY3QsY29tbWl0CiAJb2JqZWN0Pj4pLiBUaGlzIGlzIHNvbWV0aW1lcyB1c2VmdWwgd2hlbiB5b3UgYXJlIGludGVyZXN0ZWQgb25seSBpbiB0aGUKIAlyZWNlbnQgaGlzdG9yeSBvZiBhIHByb2plY3QgZXZlbiB0aG91Z2ggdGhlIHJlYWwgaGlzdG9yeSByZWNvcmRlZCBpbiB0aGUKQEAgLTQ1Miw3ICs0NDYsNyBAQAogCWl0cyBoaXN0b3J5IGNhbiBiZSBsYXRlciBkZWVwZW5lZCB3aXRoIGxpbmtnaXQ6Z2l0LWZldGNoWzFdLgogCiBbW2RlZl9zeW1yZWZdXXN5bXJlZjo6Ci0JU3ltYm9saWMgcmVmZXJlbmNlOiBpbnN0ZWFkIG9mIGNvbnRhaW5pbmcgdGhlIDw8ZGVmX1NIQTEsU0hBMT4+CisJU3ltYm9saWMgcmVmZXJlbmNlOiBpbnN0ZWFkIG9mIGNvbnRhaW5pbmcgdGhlIDw8ZGVmX1NIQTEsU0hBLTE+PgogCWlkIGl0c2VsZiwgaXQgaXMgb2YgdGhlIGZvcm1hdCAncmVmOiByZWZzL3NvbWUvdGhpbmcnIGFuZCB3aGVuCiAJcmVmZXJlbmNlZCwgaXQgcmVjdXJzaXZlbHkgZGVyZWZlcmVuY2VzIHRvIHRoaXMgcmVmZXJlbmNlLgogCSc8PGRlZl9IRUFELEhFQUQ+PicgaXMgYSBwcmltZSBleGFtcGxlIG9mIGEgc3ltcmVmLiBTeW1ib2xpYwpAQCAtNDY0LDkgKzQ1OCw5IEBACiAJb2JqZWN0IG9mIGFuIGFyYml0cmFyeSB0eXBlICh0eXBpY2FsbHkgYSB0YWcgcG9pbnRzIHRvIGVpdGhlciBhCiAJPDxkZWZfdGFnX29iamVjdCx0YWc+PiBvciBhIDw8ZGVmX2NvbW1pdF9vYmplY3QsY29tbWl0IG9iamVjdD4+KS4KIAlJbiBjb250cmFzdCB0byBhIDw8ZGVmX2hlYWQsaGVhZD4+LCBhIHRhZyBpcyBub3QgdXBkYXRlZCBieQotCXRoZSBgY29tbWl0YCBjb21tYW5kLiBBIGdpdCB0YWcgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBhIExpc3AKKwl0aGUgYGNvbW1pdGAgY29tbWFuZC4gQSBHaXQgdGFnIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggYSBMaXNwCiAJdGFnICh3aGljaCB3b3VsZCBiZSBjYWxsZWQgYW4gPDxkZWZfb2JqZWN0X3R5cGUsb2JqZWN0IHR5cGU+PgotCWluIGdpdCdzIGNvbnRleHQpLiBBIHRhZyBpcyBtb3N0IHR5cGljYWxseSB1c2VkIHRvIG1hcmsgYSBwYXJ0aWN1bGFyCisJaW4gR2l0J3MgY29udGV4dCkuIEEgdGFnIGlzIG1vc3QgdHlwaWNhbGx5IHVzZWQgdG8gbWFyayBhIHBhcnRpY3VsYXIKIAlwb2ludCBpbiB0aGUgY29tbWl0IGFuY2VzdHJ5IDw8ZGVmX2NoYWluLGNoYWluPj4uCiAKIFtbZGVmX3RhZ19vYmplY3RdXXRhZyBvYmplY3Q6OgpAQCAtNDc2LDcgKzQ3MCw3IEBACiAJc2lnbmF0dXJlLCBpbiB3aGljaCBjYXNlIGl0IGlzIGNhbGxlZCBhICJzaWduZWQgdGFnIG9iamVjdCIuCiAKIFtbZGVmX3RvcGljX2JyYW5jaF1ddG9waWMgYnJhbmNoOjoKLQlBIHJlZ3VsYXIgZ2l0IDw8ZGVmX2JyYW5jaCxicmFuY2g+PiB0aGF0IGlzIHVzZWQgYnkgYSBkZXZlbG9wZXIgdG8KKwlBIHJlZ3VsYXIgR2l0IDw8ZGVmX2JyYW5jaCxicmFuY2g+PiB0aGF0IGlzIHVzZWQgYnkgYSBkZXZlbG9wZXIgdG8KIAlpZGVudGlmeSBhIGNvbmNlcHR1YWwgbGluZSBvZiBkZXZlbG9wbWVudC4gU2luY2UgYnJhbmNoZXMgYXJlIHZlcnkgZWFzeQogCWFuZCBpbmV4cGVuc2l2ZSwgaXQgaXMgb2Z0ZW4gZGVzaXJhYmxlIHRvIGhhdmUgc2V2ZXJhbCBzbWFsbCBicmFuY2hlcwogCXRoYXQgZWFjaCBjb250YWluIHZlcnkgd2VsbCBkZWZpbmVkIGNvbmNlcHRzIG9yIHNtYWxsIGluY3JlbWVudGFsIHlldApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ob3d0by1pbmRleC5zaCBiL0RvY3VtZW50YXRpb24vaG93dG8taW5kZXguc2gKaW5kZXggMzRhYTMwYy4uYTIzNDA4NiAxMDA3NTUKLS0tIGEvRG9jdW1lbnRhdGlvbi9ob3d0by1pbmRleC5zaAorKysgYi9Eb2N1bWVudGF0aW9uL2hvd3RvLWluZGV4LnNoCkBAIC0xLDExICsxLDExIEBACiAjIS9iaW4vc2gKIAogY2F0IDw8XEVPRgotR0lUIEhvd3RvIEluZGV4CitHaXQgSG93dG8gSW5kZXgKID09PT09PT09PT09PT09PQogCiBIZXJlIGlzIGEgY29sbGVjdGlvbiBvZiBtYWlsaW5nIGxpc3QgcG9zdGluZ3MgbWFkZSBieSB2YXJpb3VzCi1wZW9wbGUgZGVzY3JpYmluZyBob3cgdGhleSB1c2UgZ2l0IGluIHRoZWlyIHdvcmtmbG93LgorcGVvcGxlIGRlc2NyaWJpbmcgaG93IHRoZXkgdXNlIEdpdCBpbiB0aGVpciB3b3JrZmxvdy4KIAogRU9GCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaG93dG8vbWFpbnRhaW4tZ2l0LnR4dCBiL0RvY3VtZW50YXRpb24vaG93dG8vbWFpbnRhaW4tZ2l0LnR4dAppbmRleCA4ODIzYTM3Li4zM2FlNjljIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2hvd3RvL21haW50YWluLWdpdC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9ob3d0by9tYWludGFpbi1naXQudHh0CkBAIC0xLDQwICsxLDUxIEBACiBGcm9tOiBKdW5pbyBDIEhhbWFubyA8Z2l0c3RlckBwb2JveC5jb20+CiBEYXRlOiBXZWQsIDIxIE5vdiAyMDA3IDE2OjMyOjU1IC0wODAwCiBTdWJqZWN0OiBBZGRlbmR1bSB0byAiTWFpbnROb3RlcyIKLUFic3RyYWN0OiBJbWFnaW5lIHRoYXQgZ2l0IGRldmVsb3BtZW50IGlzIHJhY2luZyBhbG9uZyBhcyB1c3VhbCwgd2hlbiBvdXIgZnJpZW5kbHkKK0Fic3RyYWN0OiBJbWFnaW5lIHRoYXQgR2l0IGRldmVsb3BtZW50IGlzIHJhY2luZyBhbG9uZyBhcyB1c3VhbCwgd2hlbiBvdXIgZnJpZW5kbHkKICBuZWlnaGJvcmhvb2QgbWFpbnRhaW5lciBpcyBzdHJ1Y2sgZG93biBieSBhIHdheXdhcmQgYnVzLiBPdXQgb2YgdGhlCiAgaG9yZGVzIG9mIHN1Y2tlcnMgKGxveWFsIGRldmVsb3BlcnMpLCB5b3UgaGF2ZSBiZWVuIHRyaWNrZWQgKGNob3NlbikgdG8KICBzdGVwIHVwIGFzIHRoZSBuZXcgbWFpbnRhaW5lci4gVGhpcyBob3d0byB3aWxsIHNob3cgeW91ICJob3cgdG8iIGRvIGl0LgorQ29udGVudC10eXBlOiB0ZXh0L2FzY2lpZG9jCiAKLVRoZSBtYWludGFpbmVyJ3MgZ2l0IHRpbWUgaXMgc3BlbnQgb24gdGhyZWUgYWN0aXZpdGllcy4KK0hvdyB0byBtYWludGFpbiBHaXQKKz09PT09PT09PT09PT09PT09PT0KIAotIC0gQ29tbXVuaWNhdGlvbiAoNjAlKQorQWN0aXZpdGllcworLS0tLS0tLS0tLQorCitUaGUgbWFpbnRhaW5lcidzIEdpdCB0aW1lIGlzIHNwZW50IG9uIHRocmVlIGFjdGl2aXRpZXMuCisKKyAtIENvbW11bmljYXRpb24gKDQ1JSkKIAogICAgTWFpbGluZyBsaXN0IGRpc2N1c3Npb25zIG9uIGdlbmVyYWwgZGVzaWduLCBmaWVsZGluZyB1c2VyCiAgICBxdWVzdGlvbnMsIGRpYWdub3NpbmcgYnVnIHJlcG9ydHM7IHJldmlld2luZywgY29tbWVudGluZyBvbiwKICAgIHN1Z2dlc3RpbmcgYWx0ZXJuYXRpdmVzIHRvLCBhbmQgcmVqZWN0aW5nIHBhdGNoZXMuCiAKLSAtIEludGVncmF0aW9uICgzMCUpCisgLSBJbnRlZ3JhdGlvbiAoNTAlKQogCiAgICBBcHBseWluZyBuZXcgcGF0Y2hlcyBmcm9tIHRoZSBjb250cmlidXRvcnMgd2hpbGUgc3BvdHRpbmcgYW5kCiAgICBjb3JyZWN0aW5nIG1pbm9yIG1pc3Rha2VzLCBzaHVmZmxpbmcgdGhlIGludGVncmF0aW9uIGFuZAogICAgdGVzdGluZyBicmFuY2hlcywgcHVzaGluZyB0aGUgcmVzdWx0cyBvdXQsIGN1dHRpbmcgdGhlCiAgICByZWxlYXNlcywgYW5kIG1ha2luZyBhbm5vdW5jZW1lbnRzLgogCi0gLSBPd24gZGV2ZWxvcG1lbnQgKDEwJSkKKyAtIE93biBkZXZlbG9wbWVudCAoNSUpCiAKICAgIFNjcmF0Y2hpbmcgbXkgb3duIGl0Y2ggYW5kIHNlbmRpbmcgcHJvcG9zZWQgcGF0Y2ggc2VyaWVzIG91dC4KIAorVGhlIFBvbGljeQorLS0tLS0tLS0tLQorCiBUaGUgcG9saWN5IG9uIEludGVncmF0aW9uIGlzIGluZm9ybWFsbHkgbWVudGlvbmVkIGluICJBIE5vdGUKIGZyb20gdGhlIG1haW50YWluZXIiIG1lc3NhZ2UsIHdoaWNoIGlzIHBlcmlvZGljYWxseSBwb3N0ZWQgdG8KIHRoaXMgbWFpbGluZyBsaXN0IGFmdGVyIGVhY2ggZmVhdHVyZSByZWxlYXNlIGlzIG1hZGUuCiAKLVRoZSBwb2xpY3kuCi0KICAtIEZlYXR1cmUgcmVsZWFzZXMgYXJlIG51bWJlcmVkIGFzIHZYLlkuWiBhbmQgYXJlIG1lYW50IHRvCiAgICBjb250YWluIGJ1Z2ZpeGVzIGFuZCBlbmhhbmNlbWVudHMgaW4gYW55IGFyZWEsIGluY2x1ZGluZwogICAgZnVuY3Rpb25hbGl0eSwgcGVyZm9ybWFuY2UgYW5kIHVzYWJpbGl0eSwgd2l0aG91dCByZWdyZXNzaW9uLgogCisgLSBPbmUgcmVsZWFzZSBjeWNsZSBmb3IgYSBmZWF0dXJlIHJlbGVhc2UgaXMgZXhwZWN0ZWQgdG8gbGFzdCBmb3IKKyAgIGVpZ2h0IHRvIHRlbiB3ZWVrcy4KKwogIC0gTWFpbnRlbmFuY2UgcmVsZWFzZXMgYXJlIG51bWJlcmVkIGFzIHZYLlkuWi5XIGFuZCBhcmUgbWVhbnQKICAgIHRvIGNvbnRhaW4gb25seSBidWdmaXhlcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgdlguWS5aIGZlYXR1cmUKICAgIHJlbGVhc2UgYW5kIGVhcmxpZXIgbWFpbnRlbmFuY2UgcmVsZWFzZXMgdlguWS5aLlYgKFYgPCBXKS4KQEAgLTU4LDEyICs2OSwxNSBAQAogIC0gJ3B1JyBicmFuY2ggaXMgdXNlZCB0byBwdWJsaXNoIG90aGVyIHByb3Bvc2VkIGNoYW5nZXMgdGhhdCBkbwogICAgbm90IHlldCBwYXNzIHRoZSBjcml0ZXJpYSBzZXQgZm9yICduZXh0Jy4KIAotIC0gVGhlIHRpcHMgb2YgJ21hc3RlcicsICdtYWludCcgYW5kICduZXh0JyBicmFuY2hlcyB3aWxsIGFsd2F5cwotICAgZmFzdC1mb3J3YXJkLCB0byBhbGxvdyBwZW9wbGUgdG8gYnVpbGQgdGhlaXIgb3duCi0gICBjdXN0b21pemF0aW9uIG9uIHRvcCBvZiB0aGVtLgorIC0gVGhlIHRpcHMgb2YgJ21hc3RlcicgYW5kICdtYWludCcgYnJhbmNoZXMgd2lsbCBub3QgYmUgcmV3b3VuZCB0bworICAgYWxsb3cgcGVvcGxlIHRvIGJ1aWxkIHRoZWlyIG93biBjdXN0b21pemF0aW9uIG9uIHRvcCBvZiB0aGVtLgorICAgRWFybHkgaW4gYSBuZXcgZGV2ZWxvcG1lbnQgY3ljbGUsICduZXh0JyBpcyByZXdvdW5kIHRvIHRoZSB0aXAgb2YKKyAgICdtYXN0ZXInIG9uY2UsIGJ1dCBvdGhlcndpc2UgaXQgd2lsbCBub3QgYmUgcmV3b3VuZCB1bnRpbCB0aGUgZW5kCisgICBvZiB0aGUgY3ljbGUuCiAKLSAtIFVzdWFsbHkgJ21hc3RlcicgY29udGFpbnMgYWxsIG9mICdtYWludCcsICduZXh0JyBjb250YWlucyBhbGwKLSAgIG9mICdtYXN0ZXInIGFuZCAncHUnIGNvbnRhaW5zIGFsbCBvZiAnbmV4dCcuCisgLSBVc3VhbGx5ICdtYXN0ZXInIGNvbnRhaW5zIGFsbCBvZiAnbWFpbnQnIGFuZCAnbmV4dCcgY29udGFpbnMgYWxsCisgICBvZiAnbWFzdGVyJy4gICdwdScgY29udGFpbnMgYWxsIHRoZSB0b3BpY3MgbWVyZ2VkIHRvICduZXh0JywgYnV0CisgICBpcyByZWJ1aWx0IGRpcmVjdGx5IG9uICdtYXN0ZXInLgogCiAgLSBUaGUgdGlwIG9mICdtYXN0ZXInIGlzIG1lYW50IHRvIGJlIG1vcmUgc3RhYmxlIHRoYW4gYW55CiAgICB0YWdnZWQgcmVsZWFzZXMsIGFuZCB0aGUgdXNlcnMgYXJlIGVuY291cmFnZWQgdG8gZm9sbG93IGl0LgpAQCAtNzMsMTQgKzg3LDIyIEBACiAgICBhcmUgZm91bmQgYmVmb3JlIG5ldyB0b3BpY3MgYXJlIG1lcmdlZCB0byAnbWFzdGVyJy4KIAogCi1BIHR5cGljYWwgZ2l0IGRheSBmb3IgdGhlIG1haW50YWluZXIgaW1wbGVtZW50cyB0aGUgYWJvdmUgcG9saWN5CitBIFR5cGljYWwgR2l0IERheQorLS0tLS0tLS0tLS0tLS0tLS0KKworQSB0eXBpY2FsIEdpdCBkYXkgZm9yIHRoZSBtYWludGFpbmVyIGltcGxlbWVudHMgdGhlIGFib3ZlIHBvbGljeQogYnkgZG9pbmcgdGhlIGZvbGxvd2luZzoKIAotIC0gU2NhbiBtYWlsaW5nIGxpc3QgYW5kICNnaXQgY2hhbm5lbCBsb2cuICBSZXNwb25kIHdpdGggcmV2aWV3Ci0gICBjb21tZW50cywgc3VnZ2VzdGlvbnMgZXRjLiAgS2liaXR6LiAgQ29sbGVjdCBwb3RlbnRpYWxseQotICAgdXNhYmxlIHBhdGNoZXMgZnJvbSB0aGUgbWFpbGluZyBsaXN0LiAgUGF0Y2hlcyBhYm91dCBhIHNpbmdsZQotICAgdG9waWMgZ28gdG8gb25lIG1haWxib3ggKEkgcmVhZCBteSBtYWlsIGluIEdudXMsIGFuZCB0eXBlCi0gICBcQy1vIHRvIHNhdmUvYXBwZW5kIG1lc3NhZ2VzIGluIGZpbGVzIGluIG1ib3ggZm9ybWF0KS4KKyAtIFNjYW4gbWFpbGluZyBsaXN0LiAgUmVzcG9uZCB3aXRoIHJldmlldyBjb21tZW50cywgc3VnZ2VzdGlvbnMKKyAgIGV0Yy4gIEtpYml0ei4gIENvbGxlY3QgcG90ZW50aWFsbHkgdXNhYmxlIHBhdGNoZXMgZnJvbSB0aGUKKyAgIG1haWxpbmcgbGlzdC4gIFBhdGNoZXMgYWJvdXQgYSBzaW5nbGUgdG9waWMgZ28gdG8gb25lIG1haWxib3ggKEkKKyAgIHJlYWQgbXkgbWFpbCBpbiBHbnVzLCBhbmQgdHlwZSBcQy1vIHRvIHNhdmUvYXBwZW5kIG1lc3NhZ2VzIGluCisgICBmaWxlcyBpbiBtYm94IGZvcm1hdCkuCisKKyAtIFdyaXRlIGhpcyBvd24gcGF0Y2hlcyB0byBhZGRyZXNzIGlzc3VlcyByYWlzZWQgb24gdGhlIGxpc3QgYnV0CisgICBub2JvZHkgaGFzIHN0ZXBwZWQgdXAgc29sdmluZy4gIFNlbmQgaXQgb3V0IGp1c3QgbGlrZSBvdGhlcgorICAgY29udHJpYnV0b3JzIGRvLCBhbmQgcGljayB0aGVtIHVwIGp1c3QgbGlrZSBwYXRjaGVzIGZyb20gb3RoZXIKKyAgIGNvbnRyaWJ1dG9ycyAoc2VlIGFib3ZlKS4KIAogIC0gUmV2aWV3IHRoZSBwYXRjaGVzIGluIHRoZSBzYXZlZCBtYWlsYm94ZXMuICBFZGl0IHByb3Bvc2VkIGxvZwogICAgbWVzc2FnZSBmb3IgdHlwb2ZpeGVzIGFuZCBjbGFyaWZpY2F0aW9ucywgYW5kIGFkZCBBY2tzCkBAIC05Niw0MCArMTE4LDMyIEBACiAgICAtIE9idmlvdXNseSBjb3JyZWN0IGZpeGVzIHRoYXQgcGVydGFpbiB0byB0aGUgdGlwIG9mICdtYXN0ZXInCiAgICAgIGFyZSBkaXJlY3RseSBhcHBsaWVkIHRvICdtYXN0ZXInLgogCisgICAtIE90aGVyIHRvcGljcyBhcmUgbm90IGhhbmRsZWQgaW4gdGhpcyBzdGVwLgorCiAgICBUaGlzIHN0ZXAgaXMgZG9uZSB3aXRoICJnaXQgYW0iLgogCiAgICAgICQgZ2l0IGNoZWNrb3V0IG1hc3RlciAgICA7IyBvciAiZ2l0IGNoZWNrb3V0IG1haW50IgotICAgICAkIGdpdCBhbSAtMyAtcyBtYWlsYm94CisgICAgICQgZ2l0IGFtIC1zYzMgbWFpbGJveAogICAgICAkIG1ha2UgdGVzdAogCi0gLSBNZXJnZSBkb3dud2FyZHMgKG1haW50LT5tYXN0ZXIpOgotCi0gICAgICQgZ2l0IGNoZWNrb3V0IG1hc3RlcgotICAgICAkIGdpdCBtZXJnZSBtYWludAotICAgICAkIG1ha2UgdGVzdAorICAgSW4gcHJhY3RpY2UsIGFsbW9zdCBubyBwYXRjaCBkaXJlY3RseSBnb2VzIHRvICdtYXN0ZXInIG9yCisgICAnbWFpbnQnLgogCiAgLSBSZXZpZXcgdGhlIGxhc3QgaXNzdWUgb2YgIldoYXQncyBjb29raW5nIiBtZXNzYWdlLCByZXZpZXcgdGhlCi0gICB0b3BpY3Mgc2NoZWR1bGVkIGZvciBtZXJnaW5nIHVwd2FyZHMgKHRvcGljLT5tYXN0ZXIgYW5kCi0gICB0b3BpYy0+bWFpbnQpLCBhbmQgbWVyZ2UuCisgICB0b3BpY3MgcmVhZHkgZm9yIG1lcmdpbmcgKHRvcGljLT5tYXN0ZXIgYW5kIHRvcGljLT5tYWludCkuICBVc2UKKyAgICJNZXRhL2Nvb2sgLXciIHNjcmlwdCAod2hlcmUgTWV0YS8gY29udGFpbnMgYSBjaGVja291dCBvZiB0aGUKKyAgICd0b2RvJyBicmFuY2gpIHRvIGFpZCB0aGlzIHN0ZXAuCisKKyAgIEFuZCBwZXJmb3JtIHRoZSBtZXJnZS4gIFVzZSAiTWV0YS9SZWludGVncmF0ZSAtZSIgc2NyaXB0IChzZWUKKyAgIGxhdGVyKSB0byBhaWQgdGhpcyBzdGVwLgorCisgICAgICQgTWV0YS9jb29rIC13IGxhc3QtaXNzdWUtb2Ytd2hhdHMtY29va2luZy5tYm94CiAKICAgICAgJCBnaXQgY2hlY2tvdXQgbWFzdGVyICAgIDsjIG9yICJnaXQgY2hlY2tvdXQgbWFpbnQiCi0gICAgICQgZ2l0IG1lcmdlIGFpL3RvcGljICAgICA7IyBvciAiZ2l0IG1lcmdlIGFpL21haW50LXRvcGljIgorICAgICAkIGVjaG8gYWkvdG9waWMgfCBNZXRhL1JlaW50ZWdyYXRlIC1lIDsjICJnaXQgbWVyZ2UgYWkvdG9waWMiCiAgICAgICQgZ2l0IGxvZyAtcCBPUklHX0hFQUQuLiA7IyBmaW5hbCByZXZpZXcKICAgICAgJCBnaXQgZGlmZiBPUklHX0hFQUQuLiAgIDsjIGZpbmFsIHJldmlldwogICAgICAkIG1ha2UgdGVzdCAgICAgICAgICAgICAgOyMgZmluYWwgcmV2aWV3Ci0gICAgICQgZ2l0IGJyYW5jaCAtZCBhaS90b3BpYyA7IyBvciAiZ2l0IGJyYW5jaCAtZCBhaS9tYWludC10b3BpYyIKLQotIC0gTWVyZ2UgZG93bndhcmRzIChtYWludC0+bWFzdGVyKSBpZiBuZWVkZWQ6Ci0KLSAgICAgJCBnaXQgY2hlY2tvdXQgbWFzdGVyCi0gICAgICQgZ2l0IG1lcmdlIG1haW50Ci0gICAgICQgbWFrZSB0ZXN0Ci0KLSAtIE1lcmdlIGRvd253YXJkcyAobWFzdGVyLT5uZXh0KSBpZiBuZWVkZWQ6Ci0KLSAgICAgJCBnaXQgY2hlY2tvdXQgbmV4dAotICAgICAkIGdpdCBtZXJnZSBtYXN0ZXIKLSAgICAgJCBtYWtlIHRlc3QKIAogIC0gSGFuZGxlIHRoZSByZW1haW5pbmcgcGF0Y2hlczoKIApAQCAtMTM4LDkgKzE1Miw5IEBACiAgICAgIGFuZCBub3QgaW4gJ21hc3RlcicpIGlzIGFwcGxpZWQgdG8gYSBuZXcgdG9waWMgYnJhbmNoIHRoYXQKICAgICAgaXMgZm9ya2VkIGZyb20gdGhlIHRpcCBvZiAnbWFzdGVyJy4gIFRoaXMgaW5jbHVkZXMgYm90aAogICAgICBlbmhhbmNlbWVudHMgYW5kIHVub2J2aW91cyBmaXhlcyB0byAnbWFzdGVyJy4gIEEgdG9waWMKLSAgICAgYnJhbmNoIGlzIG5hbWVkIGFzIGFpL3RvcGljIHdoZXJlICJhaSIgaXMgdHlwaWNhbGx5Ci0gICAgIGF1dGhvcidzIGluaXRpYWwgYW5kICJ0b3BpYyIgaXMgYSBkZXNjcmlwdGl2ZSBuYW1lIG9mIHRoZQotICAgICB0b3BpYyAoaW4gb3RoZXIgd29yZHMsICJ3aGF0J3MgdGhlIHNlcmllcyBpcyBhYm91dCIpLgorICAgICBicmFuY2ggaXMgbmFtZWQgYXMgYWkvdG9waWMgd2hlcmUgImFpIiBpcyB0d28tbGV0dGVyIHN0cmluZworICAgICBuYW1lZCBhZnRlciBhdXRob3IncyBpbml0aWFsIGFuZCAidG9waWMiIGlzIGEgZGVzY3JpcHRpdmUgbmFtZQorICAgICBvZiB0aGUgdG9waWMgKGluIG90aGVyIHdvcmRzLCAid2hhdCdzIHRoZSBzZXJpZXMgaXMgYWJvdXQiKS4KIAogICAgLSBBbiB1bm9idmlvdXMgZml4IG1lYW50IGZvciAnbWFpbnQnIGlzIGFwcGxpZWQgdG8gYSBuZXcKICAgICAgdG9waWMgYnJhbmNoIHRoYXQgaXMgZm9ya2VkIGZyb20gdGhlIHRpcCBvZiAnbWFpbnQnLiAgVGhlCkBAIC0xNTgsNyArMTcyLDggQEAKIAogICAgVGhlIGFib3ZlIGV4Y2VwdCB0aGUgInJlcGxhY2VtZW50IiBhcmUgYWxsIGRvbmUgd2l0aDoKIAotICAgICAkIGdpdCBhbSAtMyAtcyBtYWlsYm94CisgICAgICQgZ2l0IGNoZWNrb3V0IGFpL3RvcGljIDsjIG9yICJnaXQgY2hlY2tvdXQgLWIgYWkvdG9waWMgbWFzdGVyIgorICAgICAkIGdpdCBhbSAtc2MzIG1haWxib3gKIAogICAgd2hpbGUgcGF0Y2ggcmVwbGFjZW1lbnQgaXMgb2Z0ZW4gZG9uZSBieToKIApAQCAtMTY2LDkzICsxODEsMTcwIEBACiAKICAgIHRoZW4gcmVwbGFjZSBzb21lIHBhcnRzIHdpdGggdGhlIG5ldyBwYXRjaCwgYW5kIHJlYXBwbHlpbmc6CiAKKyAgICAgJCBnaXQgY2hlY2tvdXQgYWkvdG9waWMKICAgICAgJCBnaXQgcmVzZXQgLS1oYXJkIGFpL3RvcGljfiRuCi0gICAgICQgZ2l0IGFtIC0zIC1zIDAwMCoudHh0CisgICAgICQgZ2l0IGFtIC1zYzMgLXMgMDAwKi50eHQKIAogICAgVGhlIGZ1bGwgdGVzdCBzdWl0ZSBpcyBhbHdheXMgcnVuIGZvciAnbWFpbnQnIGFuZCAnbWFzdGVyJwogICAgYWZ0ZXIgcGF0Y2ggYXBwbGljYXRpb247IGZvciB0b3BpYyBicmFuY2hlcyB0aGUgdGVzdHMgYXJlIHJ1bgogICAgYXMgdGltZSBwZXJtaXRzLgogCisgLSBNZXJnZSBtYWludCB0byBtYXN0ZXIgYXMgbmVlZGVkOgorCisgICAgICQgZ2l0IGNoZWNrb3V0IG1hc3RlcgorICAgICAkIGdpdCBtZXJnZSBtYWludAorICAgICAkIG1ha2UgdGVzdAorCisgLSBNZXJnZSBtYXN0ZXIgdG8gbmV4dCBhcyBuZWVkZWQ6CisKKyAgICAgJCBnaXQgY2hlY2tvdXQgbmV4dAorICAgICAkIGdpdCBtZXJnZSBtYXN0ZXIKKyAgICAgJCBtYWtlIHRlc3QKKworIC0gUmV2aWV3IHRoZSBsYXN0IGlzc3VlIG9mICJXaGF0J3MgY29va2luZyIgYWdhaW4gYW5kIHNlZSBpZiB0b3BpY3MKKyAgIHRoYXQgYXJlIHJlYWR5IHRvIGJlIG1lcmdlZCB0byAnbmV4dCcgYXJlIHN0aWxsIGluIGdvb2Qgc2hhcGUKKyAgIChlLmcuIGhhcyB0aGVyZSBhbnkgbmV3IGlzc3VlIGlkZW50aWZpZWQgb24gdGhlIGxpc3Qgd2l0aCB0aGUKKyAgIHNlcmllcz8pCisKKyAtIFByZXBhcmUgJ2pjaCcgYnJhbmNoLCB3aGljaCBpcyB1c2VkIHRvIHJlcHJlc2VudCBzb21ld2hlcmUKKyAgIGJldHdlZW4gJ21hc3RlcicgYW5kICdwdScgYW5kIG9mdGVuIGlzIHNsaWdodGx5IGFoZWFkIG9mICduZXh0Jy4KKworICAgICAkIE1ldGEvUmVpbnRlZ3JhdGUgbWFzdGVyLi5wdSA+TWV0YS9yZWRvLWpjaC5zaAorCisgICBUaGUgcmVzdWx0IGlzIGEgc2NyaXB0IHRoYXQgbGlzdHMgdG9waWNzIHRvIGJlIG1lcmdlZCBpbiBvcmRlciB0bworICAgcmVidWlsZCAncHUnIGFzIHRoZSBpbnB1dCB0byBNZXRhL1JlaW50ZWdyYXRlIHNjcmlwdC4gIFJlbW92ZQorICAgbGF0ZXIgdG9waWNzIHRoYXQgc2hvdWxkIG5vdCBiZSBpbiAnamNoJyB5ZXQuICBBZGQgYSBsaW5lIHRoYXQKKyAgIGNvbnNpc3RzIG9mICcjIyMgbWF0Y2ggbmV4dCcgYmVmb3JlIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCB0b3BpYworICAgaW4gdGhlIG91dHB1dCB0aGF0IHNob3VsZCBiZSBpbiAnamNoJyBidXQgbm90IGluICduZXh0JyB5ZXQuCisKKyAtIE5vdyB3ZSBhcmUgcmVhZHkgdG8gc3RhcnQgbWVyZ2luZyB0b3BpY3MgdG8gJ25leHQnLiAgRm9yIGVhY2gKKyAgIGJyYW5jaCB3aG9zZSB0aXAgaXMgbm90IG1lcmdlZCB0byAnbmV4dCcsIG9uZSBvZiB0aHJlZSB0aGluZ3MgY2FuCisgICBoYXBwZW46CisKKyAgIC0gVGhlIGNvbW1pdHMgYXJlIGFsbCBuZXh0LXdvcnRoeTsgbWVyZ2UgdGhlIHRvcGljIHRvIG5leHQ7CisgICAtIFRoZSBuZXcgcGFydHMgYXJlIG9mIG1peGVkIHF1YWxpdHksIGJ1dCBlYXJsaWVyIG9uZXMgYXJlCisgICAgIG5leHQtd29ydGh5OyBtZXJnZSB0aGUgZWFybHkgcGFydHMgdG8gbmV4dDsKKyAgIC0gTm90aGluZyBpcyBuZXh0LXdvcnRoeTsgZG8gbm90IGRvIGFueXRoaW5nLgorCisgICBUaGlzIHN0ZXAgaXMgYWlkZWQgd2l0aCBNZXRhL3JlZG8tamNoLnNoIHNjcmlwdCBjcmVhdGVkIGVhcmxpZXIuCisgICBJZiBhIHRvcGljIHRoYXQgd2FzIGFscmVhZHkgaW4gJ25leHQnIGdhaW5lZCBhIHBhdGNoLCB0aGUgc2NyaXB0CisgICB3b3VsZCBsaXN0IGl0IGFzICJhaS90b3BpY34xIi4gIFRvIGluY2x1ZGUgdGhlIG5ldyBwYXRjaCB0byB0aGUKKyAgIHVwZGF0ZWQgJ25leHQnLCBkcm9wIHRoZSAifjEiIHBhcnQ7IHRvIGtlZXAgaXQgZXhjbHVkZWQsIGRvIG5vdAorICAgdG91Y2ggdGhlIGxpbmUuICBJZiBhIHRvcGljIHRoYXQgd2FzIG5vdCBpbiAnbmV4dCcgc2hvdWxkIGJlCisgICBtZXJnZWQgdG8gJ25leHQnLCBhZGQgaXQgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdC4gIFRoZW46CisKKyAgICAgJCBnaXQgY2hlY2tvdXQgLUIgamNoIG1hc3RlcgorICAgICAkIE1ldGEvcmVkby1qY2guc2ggLWMxCisKKyAgIHRvIHJlYnVpbGQgdGhlICdqY2gnIGJyYW5jaCBmcm9tIHNjcmF0Y2guICAiLWMxIiB0ZWxscyB0aGUgc2NyaXB0CisgICB0byBzdG9wIG1lcmdpbmcgYXQgdGhlIGZpcnN0IGxpbmUgdGhhdCBiZWdpbnMgd2l0aCAnIyMjJworICAgKGkuZS4gdGhlICIjIyMgbWF0Y2ggbmV4dCIgbGluZSB5b3UgYWRkZWQgZWFybGllcikuCisKKyAgIEF0IHRoaXMgcG9pbnQsIGJ1aWxkLXRlc3QgdGhlIHJlc3VsdC4gIEl0IG1heSByZXZlYWwgc2VtYW50aWMKKyAgIGNvbmZsaWN0cyAoZS5nLiBhIHRvcGljIHJlbmFtZWQgYSB2YXJpYWJsZSwgYW5vdGhlciBhZGRlZCBhIG5ldworICAgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSB1bmRlciBpdHMgb2xkIG5hbWUpLCBpbiB3aGljaCBjYXNlCisgICBwcmVwYXJlIGFuIGFwcHJvcHJpYXRlIG1lcmdlLWZpeCBmaXJzdCAoc2VlIGFwcGVuZGl4KSwgYW5kCisgICByZWJ1aWxkIHRoZSAnamNoJyBicmFuY2ggZnJvbSBzY3JhdGNoLCBzdGFydGluZyBhdCB0aGUgdGlwIG9mCisgICAnbWFzdGVyJy4KKworICAgVGhlbiBkbyB0aGUgc2FtZSB0byAnbmV4dCcKKworICAgICAkIGdpdCBjaGVja291dCBuZXh0CisgICAgICQgc2ggTWV0YS9yZWRvLWpjaC5zaCAtYzEgLWUKKworICAgVGhlICItZSIgb3B0aW9uIGFsbG93cyB0aGUgbWVyZ2UgbWVzc2FnZSB0aGF0IGNvbWVzIGZyb20gdGhlCisgICBoaXN0b3J5IG9mIHRoZSB0b3BpYyBhbmQgdGhlIGNvbW1lbnRzIGluIHRoZSAiV2hhdCdzIGNvb2tpbmciIHRvCisgICBiZSBlZGl0ZWQuICBUaGUgcmVzdWx0aW5nIHRyZWUgc2hvdWxkIG1hdGNoICdqY2gnIGFzIHRoZSBzYW1lIHNldAorICAgb2YgdG9waWNzIGFyZSBtZXJnZWQgb24gJ21hc3Rlcic7IG90aGVyd2lzZSB0aGVyZSBpcyBhIG1pc21lcmdlLgorICAgSW52ZXN0aWdhdGUgd2h5IGFuZCBkbyBub3QgcHJvY2VlZCB1bnRpbCB0aGUgbWlzbWVyZ2UgaXMgZm91bmQKKyAgIGFuZCByZWN0aWZpZWQuCisKKyAgICAgJCBnaXQgZGlmZiBqY2ggbmV4dAorCisgICBXaGVuIGFsbCBpcyB3ZWxsLCBjbGVhbiB1cCB0aGUgcmVkby1qY2guc2ggc2NyaXB0IHdpdGgKKworICAgICAkIHNoIE1ldGEvcmVkby1qY2guc2ggLXUKKworICAgVGhpcyByZW1vdmVzIHRvcGljcyBsaXN0ZWQgaW4gdGhlIHNjcmlwdCB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuCisgICBtZXJnZWQgdG8gJ21hc3RlcicuICBUaGlzIG1heSBsb3NlICcjIyMgbWF0Y2ggbmV4dCcgbWFya2VyOworICAgYWRkIGl0IGFnYWluIHRvIHRoZSBhcHByb3ByaWF0ZSBwbGFjZSB3aGVuIGl0IGhhcHBlbnMuCisKKyAtIFJlYnVpbGQgJ3B1Jy4KKworICAgICAkIE1ldGEvUmVpbnRlZ3JhdGUgbWFzdGVyLi5wdSA+TWV0YS9yZWRvLXB1LnNoCisKKyAgIEVkaXQgdGhlIHJlc3VsdCBieSBhZGRpbmcgbmV3IHRvcGljcyB0aGF0IGFyZSBub3Qgc3RpbGwgaW4gJ3B1JworICAgaW4gdGhlIHNjcmlwdC4gIFRoZW4KKworICAgICAkIGdpdCBjaGVja291dCAtQiBwdSBqY2gKKyAgICAgJCBzaCBNZXRhL3JlZG8tcHUuc2gKKworICAgV2hlbiBhbGwgaXMgd2VsbCwgY2xlYW4gdXAgdGhlIHJlZG8tcHUuc2ggc2NyaXB0IHdpdGgKKworICAgICAkIHNoIE1ldGEvcmVkby1wdS5zaCAtdQorCisgICBEb3VibGUgY2hlY2sgYnkgcnVubmluZworCisgICAgICQgZ2l0IGJyYW5jaCAtLW5vLW1lcmdlZCBwdQorCisgICB0byBzZWUgdGhlcmUgaXMgbm8gdW5leHBlY3RlZCBsZWZ0b3ZlciB0b3BpY3MuCisKKyAgIEF0IHRoaXMgcG9pbnQsIGJ1aWxkLXRlc3QgdGhlIHJlc3VsdCBmb3Igc2VtYW50aWMgY29uZmxpY3RzLCBhbmQKKyAgIGlmIHRoZXJlIGFyZSwgcHJlcGFyZSBhbiBhcHByb3ByaWF0ZSBtZXJnZS1maXggZmlyc3QgKHNlZQorICAgYXBwZW5kaXgpLCBhbmQgcmVidWlsZCB0aGUgJ3B1JyBicmFuY2ggZnJvbSBzY3JhdGNoLCBzdGFydGluZyBhdAorICAgdGhlIHRpcCBvZiAnamNoJy4KKwogIC0gVXBkYXRlICJXaGF0J3MgY29va2luZyIgbWVzc2FnZSB0byByZXZpZXcgdGhlIHVwZGF0ZXMgdG8KICAgIGV4aXN0aW5nIHRvcGljcywgbmV3bHkgYWRkZWQgdG9waWNzIGFuZCBncmFkdWF0ZWQgdG9waWNzLgogCi0gICBUaGlzIHN0ZXAgaXMgaGVscGVkIHdpdGggTWV0YS9jb29rIHNjcmlwdCAod2hlcmUgTWV0YS8gY29udGFpbnMKLSAgIGEgY2hlY2tvdXQgb2YgdGhlICd0b2RvJyBicmFuY2gpLgorICAgVGhpcyBzdGVwIGlzIGhlbHBlZCB3aXRoIE1ldGEvY29vayBzY3JpcHQuCiAKLSAtIE1lcmdlIHRvcGljcyB0byAnbmV4dCcuICBGb3IgZWFjaCBicmFuY2ggd2hvc2UgdGlwIGlzIG5vdAotICAgbWVyZ2VkIHRvICduZXh0Jywgb25lIG9mIHRocmVlIHRoaW5ncyBjYW4gaGFwcGVuOgorICAgICAkIE1ldGEvY29vawogCi0gICAtIFRoZSBjb21taXRzIGFyZSBhbGwgbmV4dC13b3J0aHk7IG1lcmdlIHRoZSB0b3BpYyB0byBuZXh0OgorICAgVGhpcyBzY3JpcHQgaW5zcGVjdHMgdGhlIGhpc3RvcnkgYmV0d2VlbiBtYXN0ZXIuLnB1LCBmaW5kcyB0aXBzCisgICBvZiB0b3BpYyBicmFuY2hlcywgY29tcGFyZXMgd2hhdCBpdCBmb3VuZCB3aXRoIHRoZSBjdXJyZW50CisgICBjb250ZW50cyBpbiBNZXRhL3doYXRzLWNvb2tpbmcudHh0LCBhbmQgdXBkYXRlcyB0aGF0IGZpbGUuCisgICBUb3BpY3Mgbm90IGxpc3RlZCBpbiB0aGUgZmlsZSBidXQgYXJlIGZvdW5kIGluIG1hc3Rlci4ucHUgYXJlCisgICBhZGRlZCB0byB0aGUgIk5ldyB0b3BpY3MiIHNlY3Rpb24sIHRvcGljcyBsaXN0ZWQgaW4gdGhlIGZpbGUgdGhhdAorICAgYXJlIG5vIGxvbmdlciBmb3VuZCBpbiBtYXN0ZXIuLnB1IGFyZSBtb3ZlZCB0byB0aGUgIkdyYWR1YXRlZCB0bworICAgbWFzdGVyIiBzZWN0aW9uLCBhbmQgdG9waWNzIHdob3NlIGNvbW1pdHMgY2hhbmdlZCB0aGVpciBzdGF0ZXMKKyAgIChlLmcuIHVzZWQgdG8gYmUgb25seSBpbiAncHUnLCBub3cgbWVyZ2VkIHRvICduZXh0JykgYXJlIHVwZGF0ZWQKKyAgIHdpdGggY2hhbmdlIG1hcmtlcnMgIjw8IiBhbmQgIj4+Ii4KIAotICAgICAkIGdpdCBjaGVja291dCBuZXh0Ci0gICAgICQgZ2l0IG1lcmdlIGFpL3RvcGljICAgICA7IyBvciAiZ2l0IG1lcmdlIGFpL21haW50LXRvcGljIgotICAgICAkIG1ha2UgdGVzdAorICAgTG9vayBmb3IgbGluZXMgZW5jbG9zZWQgaW4gIjw8IiBhbmQgIj4+IjsgdGhleSBob2xkIGNvbnRlbnRzIGZyb20KKyAgIG9sZCBmaWxlIHRoYXQgYXJlIHJlcGxhY2VkIGJ5IHRoaXMgaW50ZWdyYXRpb24gcm91bmQuICBBZnRlcgorICAgdmVyaWZ5aW5nIHRoZW0sIHJlbW92ZSB0aGUgb2xkIHBhcnQuICBSZXZpZXcgdGhlIGRlc2NyaXB0aW9uIGZvcgorICAgZWFjaCB0b3BpYyBhbmQgdXBkYXRlIGl0cyBkb25lbmVzcyBhbmQgcGxhbiBhcyBuZWVkZWQuICBUbyByZXZpZXcKKyAgIHRoZSB1cGRhdGVkIHBsYW4sIHJ1bgogCi0gICAtIFRoZSBuZXcgcGFydHMgYXJlIG9mIG1peGVkIHF1YWxpdHksIGJ1dCBlYXJsaWVyIG9uZXMgYXJlCi0gICAgIG5leHQtd29ydGh5OyBtZXJnZSB0aGUgZWFybHkgcGFydHMgdG8gbmV4dDoKKyAgICAgJCBNZXRhL2Nvb2sgLXcKIAotICAgICAkIGdpdCBjaGVja291dCBuZXh0Ci0gICAgICQgZ2l0IG1lcmdlIGFpL3RvcGljfjIgICA7IyB0aGUgdGlwIHR3byBhcmUgZHViaW91cwotICAgICAkIG1ha2UgdGVzdAorICAgd2hpY2ggd2lsbCBwaWNrIHVwIGNvbW1lbnRzIGdpdmVuIHRvIHRoZSB0b3BpY3MsIHN1Y2ggYXMgIldpbGwKKyAgIG1lcmdlIHRvICduZXh0JyIsIGV0Yy4gKHNlZSBNZXRhL2Nvb2sgc2NyaXB0IHRvIGxlYXJuIHdoYXQga2luZAorICAgb2YgcGhyYXNlcyBhcmUgc3VwcG9ydGVkKS4KIAotICAgLSBOb3RoaW5nIGlzIG5leHQtd29ydGh5OyBkbyBub3QgZG8gYW55dGhpbmcuCisgLSBDb21waWxlLCB0ZXN0IGFuZCBpbnN0YWxsIGFsbCBmb3VyIChmaXZlKSBpbnRlZ3JhdGlvbiBicmFuY2hlczsKKyAgIE1ldGEvRG90aGVtIHNjcmlwdCBtYXkgYWlkIHRoaXMgc3RlcC4KIAotIC0gWyoqIE9CU09MRVRFICoqXSBPcHRpb25hbGx5IHJlYmFzZSB0b3BpY3MgdGhhdCBkbyBub3QgaGF2ZSBhbnkgY29tbWl0Ci0gICBpbiBuZXh0IHlldCwgd2hlbiB0aGV5IGNhbiB0YWtlIGFkdmFudGFnZSBvZiBsb3ctbGV2ZWwgZnJhbWV3b3JrCi0gICBjaGFuZ2UgdGhhdCBpcyBtZXJnZWQgdG8gJ21hc3RlcicgYWxyZWFkeS4KKyAtIEZvcm1hdCBkb2N1bWVudGF0aW9uIGlmIHRoZSAnbWFzdGVyJyBicmFuY2ggd2FzIHVwZGF0ZWQ7CisgICBNZXRhL2RvZG9jLnNoIHNjcmlwdCBtYXkgYWlkIHRoaXMgc3RlcC4KIAotICAgICAkIGdpdCByZWJhc2UgbWFzdGVyIGFpL3RvcGljCisgLSBQdXNoIHRoZSBpbnRlZ3JhdGlvbiBicmFuY2hlcyBvdXQgdG8gcHVibGljIHBsYWNlczsgTWV0YS9wdXNoYWxsCisgICBzY3JpcHQgbWF5IGFpZCB0aGlzIHN0ZXAuCiAKLSAgIFRoaXMgc3RlcCBpcyBoZWxwZWQgd2l0aCBNZXRhL2dpdC10b3BpYy5wZXJsIHNjcmlwdCB0bwotICAgaWRlbnRpZnkgd2hpY2ggdG9waWMgaXMgcmViYXNlYWJsZS4gIFRoZXJlIGFsc28gaXMgYQotICAgcHJlLXJlYmFzZSBob29rIHRvIG1ha2Ugc3VyZSB0aGF0IHRvcGljcyB0aGF0IGFyZSBhbHJlYWR5IGluCi0gICAnbmV4dCcgYXJlIG5vdCByZWJhc2VkIGJleW9uZCB0aGUgbWVyZ2VkIGNvbW1pdC4KLQotIC0gWyoqIE9CU09MRVRFICoqXSBSZWJ1aWxkICJwdSIgdG8gbWVyZ2UgdGhlIHRpcHMgb2YgdG9waWNzIG5vdCBpbiAnbmV4dCcuCi0KLSAgICAgJCBnaXQgY2hlY2tvdXQgcHUKLSAgICAgJCBnaXQgcmVzZXQgLS1oYXJkIG5leHQKLSAgICAgJCBnaXQgbWVyZ2UgYWkvdG9waWMgICAgIDsjIHJlcGVhdCBmb3IgYWxsIHJlbWFpbmluZyB0b3BpY3MKLSAgICAgJCBtYWtlIHRlc3QKLQotICAgVGhpcyBzdGVwIGlzIGhlbHBlZCB3aXRoIE1ldGEvUFUgc2NyaXB0Ci0KLSAtIFB1c2ggZm91ciBpbnRlZ3JhdGlvbiBicmFuY2hlcyB0byBhIHByaXZhdGUgcmVwb3NpdG9yeSBhdAotICAgay5vcmcgYW5kIHJ1biAibWFrZSB0ZXN0IiBvbiBhbGwgb2YgdGhlbS4KLQotIC0gUHVzaCBmb3VyIGludGVncmF0aW9uIGJyYW5jaGVzIHRvIC9wdWIvc2NtL2dpdC9naXQuZ2l0IGF0Ci0gICBrLm9yZy4gIFRoaXMgdHJpZ2dlcnMgaXRzIHBvc3QtdXBkYXRlIGhvb2sgd2hpY2g6Ci0KLSAgICAoMSkgcnVucyAiZ2l0IHB1bGwiIGluICRIT01FL2dpdC1kb2MvIHJlcG9zaXRvcnkgdG8gcHVsbAotICAgICAgICAnbWFzdGVyJyBqdXN0IHB1c2hlZCBvdXQ7Ci0KLSAgICAoMikgcnVucyAibWFrZSBkb2MiIGluICRIT01FL2dpdC1kb2MvLCBpbnN0YWxsIHRoZSBnZW5lcmF0ZWQKLSAgICAgICAgZG9jdW1lbnRhdGlvbiBpbiBzdGFnaW5nIGFyZWFzLCB3aGljaCBhcmUgc2VwYXJhdGUKLSAgICAgICAgcmVwb3NpdG9yaWVzIHRoYXQgaGF2ZSBodG1sIGFuZCBtYW4gYnJhbmNoZXMgY2hlY2tlZAotICAgICAgICBvdXQuCi0KLSAgICAoMykgcnVucyAiZ2l0IGNvbW1pdCIgaW4gdGhlIHN0YWdpbmcgYXJlYXMsIGFuZCBydW4gImdpdAotICAgICAgICBwdXNoIiBiYWNrIHRvIC9wdWIvc2NtL2dpdC9naXQuZ2l0LyB0byB1cGRhdGUgdGhlIGh0bWwKLSAgICAgICAgYW5kIG1hbiBicmFuY2hlcy4KLQotICAgICg0KSBpbnN0YWxscyBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiB0byAvcHViL3NvZnR3YXJlL3NjbS9naXQvZG9jcy8KLSAgICAgICAgdG8gYmUgdmlld2VkIGZyb20gaHR0cDovL3d3dy5rZXJuZWwub3JnLwotCi0gLSBGZXRjaCBodG1sIGFuZCBtYW4gYnJhbmNoZXMgYmFjayBmcm9tIGsub3JnLCBhbmQgcHVzaCBmb3VyCi0gICBpbnRlZ3JhdGlvbiBicmFuY2hlcyBhbmQgdGhlIHR3byBkb2N1bWVudGF0aW9uIGJyYW5jaGVzIHRvCi0gICByZXBvLm9yLmN6IGFuZCBvdGhlciBtaXJyb3JzLgotCitPYnNlcnZhdGlvbnMKKy0tLS0tLS0tLS0tLQogCiBTb21lIG9ic2VydmF0aW9ucyB0byBiZSBtYWRlLgogCi0gKiBFYWNoIHRvcGljIGlzIHRlc3RlZCBpbmRpdmlkdWFsbHksIGFuZCBhbHNvIHRvZ2V0aGVyIHdpdGgKLSAgIG90aGVyIHRvcGljcyBjb29raW5nIGluICduZXh0Jy4gIFVudGlsIGl0IG1hdHVyZXMsIG5vbmUgcGFydAotICAgb2YgaXQgaXMgbWVyZ2VkIHRvICdtYXN0ZXInLgorICogRWFjaCB0b3BpYyBpcyB0ZXN0ZWQgaW5kaXZpZHVhbGx5LCBhbmQgYWxzbyB0b2dldGhlciB3aXRoIG90aGVyCisgICB0b3BpY3MgY29va2luZyBmaXJzdCBpbiAncHUnLCB0aGVuIGluICdqY2gnIGFuZCB0aGVuIGluICduZXh0Jy4KKyAgIFVudGlsIGl0IG1hdHVyZXMsIG5vIHBhcnQgb2YgaXQgaXMgbWVyZ2VkIHRvICdtYXN0ZXInLgogCiAgKiBBIHRvcGljIGFscmVhZHkgaW4gJ25leHQnIGNhbiBnZXQgZml4ZXMgd2hpbGUgc3RpbGwgaW4KICAgICduZXh0Jy4gIFN1Y2ggYSB0b3BpYyB3aWxsIGhhdmUgbWFueSBtZXJnZXMgdG8gJ25leHQnIChpbgogICAgb3RoZXIgd29yZHMsICJnaXQgbG9nIC0tZmlyc3QtcGFyZW50IG5leHQiIHdpbGwgc2hvdyBtYW55Ci0gICAiTWVyZ2UgYWkvdG9waWMgdG8gbmV4dCIgZm9yIHRoZSBzYW1lIHRvcGljLgorICAgIk1lcmdlIGJyYW5jaCAnYWkvdG9waWMnIHRvIG5leHQiIGZvciB0aGUgc2FtZSB0b3BpYy4KIAogICogQW4gdW5vYnZpb3VzIGZpeCBmb3IgJ21haW50JyBpcyBjb29rZWQgaW4gJ25leHQnIGFuZCB0aGVuCiAgICBtZXJnZWQgdG8gJ21hc3RlcicgdG8gbWFrZSBleHRyYSBzdXJlIGl0IGlzIE9rIGFuZCB0aGVuCkBAIC0yNzQsMyArMzY2LDgwIEBACiAgKiBCZWluZyBpbiB0aGUgJ25leHQnIGJyYW5jaCBpcyBub3QgYSBndWFyYW50ZWUgZm9yIGEgdG9waWMgdG8KICAgIGJlIGluY2x1ZGVkIGluIHRoZSBuZXh0IGZlYXR1cmUgcmVsZWFzZS4gIEJlaW5nIGluIHRoZQogICAgJ21hc3RlcicgYnJhbmNoIHR5cGljYWxseSBpcy4KKworCitBcHBlbmRpeAorLS0tLS0tLS0KKworUHJlcGFyaW5nIGEgIm1lcmdlLWZpeCIKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0EgbWVyZ2Ugb2YgdHdvIHRvcGljcyBtYXkgbm90IHRleHR1YWxseSBjb25mbGljdCBidXQgc3RpbGwgaGF2ZQorY29uZmxpY3QgYXQgdGhlIHNlbWFudGljIGxldmVsLiBBIGNsYXNzaWMgZXhhbXBsZSBpcyBmb3Igb25lIHRvcGljCit0byByZW5hbWUgYW4gdmFyaWFibGUgYW5kIGFsbCBpdHMgdXNlcywgd2hpbGUgYW5vdGhlciB0b3BpYyBhZGRzIGEKK25ldyB1c2Ugb2YgdGhlIHZhcmlhYmxlIHVuZGVyIGl0cyBvbGQgbmFtZS4gV2hlbiB0aGVzZSB0d28gdG9waWNzCithcmUgbWVyZ2VkIHRvZ2V0aGVyLCB0aGUgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBuZXdseSBhZGRlZCBieQordGhlIGxhdHRlciB0b3BpYyB3aWxsIHN0aWxsIHVzZSB0aGUgb2xkIG5hbWUgaW4gdGhlIHJlc3VsdC4KKworVGhlIE1ldGEvUmVpbnRlZ3JhdGUgc2NyaXB0IHRoYXQgaXMgdXNlZCBieSByZWRvLWpjaCBhbmQgcmVkby1wdQorc2NyaXB0cyBpbXBsZW1lbnRzIGEgY3J1ZGUgYnV0IHVzYWJsZSB3YXkgdG8gd29yayB0aGlzIGlzc3VlIGFyb3VuZC4KK1doZW4gdGhlIHNjcmlwdCBtZXJnZXMgYnJhbmNoICRYLCBpdCBjaGVja3MgaWYgInJlZnMvbWVyZ2UtZml4LyRYIgorZXhpc3RzLCBhbmQgaWYgc28sIHRoZSBlZmZlY3Qgb2YgaXQgaXMgc3F1YXNoZWQgaW50byB0aGUgcmVzdWx0IG9mCit0aGUgbWVjaGFuaWNhbCBtZXJnZS4gIEluIG90aGVyIHdvcmRzLAorCisgICAgICQgZWNobyAkWCB8IE1ldGEvUmVpbnRlZ3JhdGUKKworaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHRoaXMgc2VxdWVuY2U6CisKKyAgICAgJCBnaXQgbWVyZ2UgLS1yZXJlcmUtYXV0b3VwZGF0ZSAkWAorICAgICAkIGdpdCBjb21taXQKKyAgICAgJCBnaXQgY2hlcnJ5LXBpY2sgLW4gcmVmcy9tZXJnZS1maXgvJFgKKyAgICAgJCBnaXQgY29tbWl0IC0tYW1lbmQKKworVGhlIGdvYWwgb2YgdGhpcyAicHJlcGFyZSBhIG1lcmdlLWZpeCIgc3RlcCBpcyB0byBjb21lIHVwIHdpdGggYQorY29tbWl0IHRoYXQgY2FuIGJlIHNxdWFzaGVkIGludG8gYSByZXN1bHQgb2YgbWVjaGFuaWNhbCBtZXJnZSB0bworY29ycmVjdCBzZW1hbnRpYyBjb25mbGljdHMuCisKK0FmdGVyIGZpbmRpbmcgdGhhdCB0aGUgcmVzdWx0IG9mIG1lcmdpbmcgYnJhbmNoICJhaS90b3BpYyIgdG8gYW4KK2ludGVncmF0aW9uIGJyYW5jaCBoYWQgc3VjaCBhIHNlbWFudGljIGNvbmZsaWN0LCBzYXkgcHV+NCwgY2hlY2sgdGhlCitwcm9ibGVtYXRpYyBtZXJnZSBvdXQgb24gYSBkZXRhY2hlZCBIRUFELCBlZGl0IHRoZSB3b3JraW5nIHRyZWUgdG8KK2ZpeCB0aGUgc2VtYW50aWMgY29uZmxpY3QsIGFuZCBtYWtlIGEgc2VwYXJhdGUgY29tbWl0IHRvIHJlY29yZCB0aGUKK2ZpeC11cDoKKworICAgICAkIGdpdCBjaGVja291dCBwdX40CisgICAgICQgZ2l0IHNob3cgLXMgLS1wcmV0dHk9JXMgOyMgZG91YmxlIGNoZWNrCisgICAgIE1lcmdlIGJyYW5jaCAnYWkvdG9waWMnIHRvIHB1CisgICAgICQgZWRpdAorICAgICAkIGdpdCBjb21taXQgLW0gJ21lcmdlLWZpeC9haS90b3BpYycgLWEKKworVGhlbiBtYWtlIGEgcmVmZXJlbmNlICJyZWZzL21lcmdlLWZpeC9haS90b3BpYyIgdG8gcG9pbnQgYXQgdGhpcworcmVzdWx0OgorCisgICAgICQgZ2l0IHVwZGF0ZS1yZWYgcmVmcy9tZXJnZS1maXgvYWkvdG9waWMgSEVBRAorCitUaGVuIGRvdWJsZSBjaGVjayB0aGUgcmVzdWx0IGJ5IGFza2luZyBNZXRhL1JlaW50ZWdyYXRlIHRvIHJlZG8gdGhlCittZXJnZToKKworICAgICAkIGdpdCBjaGVja291dCBwdX41IDsjIHRoZSBwYXJlbnQgb2YgdGhlIHByb2JsZW0gbWVyZ2UKKyAgICAgJCBlY2hvIGFpL3RvcGljIHwgTWV0YS9SZWludGVncmF0ZQorICAgICAkIGdpdCBkaWZmIHB1fjQKKworVGhpcyB0aW1lLCBiZWNhdXNlIHlvdSBwcmVwYXJlZCByZWZzL21lcmdlLWZpeC9haS90b3BpYywgdGhlCityZXN1bHRpbmcgbWVyZ2Ugc2hvdWxkIGhhdmUgYmVlbiB0d2Vha2VkIHRvIGluY2x1ZGUgdGhlIGZpeCBmb3IgdGhlCitzZW1hbnRpYyBjb25mbGljdC4KKworTm90ZSB0aGF0IHRoaXMgYXNzdW1lcyB0aGF0IHRoZSBvcmRlciBpbiB3aGljaCBjb25mbGljdGluZyBicmFuY2hlcworYXJlIG1lcmdlZCBkb2VzIG5vdCBjaGFuZ2UuICBJZiB0aGUgcmVhc29uIHdoeSBtZXJnaW5nIGFpL3RvcGljCiticmFuY2ggbmVlZHMgdGhpcyBtZXJnZS1maXggaXMgYmVjYXVzZSBhbm90aGVyIGJyYW5jaCBtZXJnZWQgZWFybGllcgordG8gdGhlIGludGVncmF0aW9uIGJyYW5jaCBjaGFuZ2VkIHRoZSB1bmRlcmx5aW5nIGFzc3VtcHRpb24gYWkvdG9waWMKK2JyYW5jaCBtYWRlIChlLmcuIGFpL3RvcGljIGJyYW5jaCBhZGRlZCBhIHNpdGUgdG8gcmVmZXIgdG8gYQordmFyaWFibGUsIHdoaWxlIHRoZSBvdGhlciBicmFuY2ggcmVuYW1lZCB0aGF0IHZhcmlhYmxlIGFuZCBhZGp1c3RlZAorZXhpc3RpbmcgdXNlIHNpdGVzKSwgYW5kIGlmIHlvdSBjaGFuZ2VkIHJlZG8tamNoIChvciByZWRvLXB1KSBzY3JpcHQKK3RvIG1lcmdlIGFpL3RvcGljIGJyYW5jaCBiZWZvcmUgdGhlIG90aGVyIGJyYW5jaCwgdGhlbiB0aGUgYWJvdmUKK21lcmdlLWZpeCBzaG91bGQgbm90IGJlIGFwcGxpZWQgd2hpbGUgbWVyZ2luZyBhaS90b3BpYywgYnV0IHNob3VsZAoraW5zdGVhZCBiZSBhcHBsaWVkIHdoaWxlIG1lcmdpbmcgdGhlIG90aGVyIGJyYW5jaC4gIFlvdSB3b3VsZCBuZWVkCit0byBtb3ZlIHRoZSBmaXggdG8gYXBwbHkgdG8gdGhlIG90aGVyIGJyYW5jaCwgcGVyaGFwcyBsaWtlIHRoaXM6CisKKyAgICAgICQgbWY9cmVmcy9tZXJnZS1maXgKKyAgICAgICQgZ2l0IHVwZGF0ZS1yZWYgJG1mLyR0aGVfb3RoZXJfYnJhbmNoICRtZi9haS90b3BpYworICAgICAgJCBnaXQgdXBkYXRlLXJlZiAtZCAkbWYvYWkvdG9waWMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaG93dG8vbmV3LWNvbW1hbmQudHh0IGIvRG9jdW1lbnRhdGlvbi9ob3d0by9uZXctY29tbWFuZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFiYzNhMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaG93dG8vbmV3LWNvbW1hbmQudHh0CkBAIC0wLDAgKzEsMTA0IEBACitGcm9tOiBFcmljIFMuIFJheW1vbmQgPGVzckB0aHlyc3VzLmNvbT4KK0Fic3RyYWN0OiBUaGlzIGlzIGhvdy10byBkb2N1bWVudGF0aW9uIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gYWRkIGV4dGVuc2lvbgorIGNvbW1hbmRzIHRvIEdpdC4gIEl0IHNob3VsZCBiZSByZWFkIGFsb25nc2lkZSBhcGktYnVpbHRpbi50eHQuCitDb250ZW50LXR5cGU6IHRleHQvYXNjaWlkb2MKKworSG93IHRvIGludGVncmF0ZSBuZXcgc3ViY29tbWFuZHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgaXMgaG93LXRvIGRvY3VtZW50YXRpb24gZm9yIHBlb3BsZSB3aG8gd2FudCB0byBhZGQgZXh0ZW5zaW9uCitjb21tYW5kcyB0byBHaXQuICBJdCBzaG91bGQgYmUgcmVhZCBhbG9uZ3NpZGUgYXBpLWJ1aWx0aW4udHh0LgorCitSdW50aW1lIGVudmlyb25tZW50CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0dpdCBzdWJjb21tYW5kcyBhcmUgc3RhbmRhbG9uZSBleGVjdXRhYmxlcyB0aGF0IGxpdmUgaW4gdGhlIEdpdCBleGVjCitwYXRoLCBub3JtYWxseSAvdXNyL2xpYi9naXQtY29yZS4gIFRoZSBnaXQgZXhlY3V0YWJsZSBpdHNlbGYgaXMgYQordGhpbiB3cmFwcGVyIHRoYXQga25vd3Mgd2hlcmUgdGhlIHN1YmNvbW1hbmRzIGxpdmUsIGFuZCBydW5zIHRoZW0gYnkKK3Bhc3NpbmcgY29tbWFuZC1saW5lIGFyZ3VtZW50cyB0byB0aGVtLgorCisoSWYgImdpdCBmb28iIGlzIG5vdCBmb3VuZCBpbiB0aGUgR2l0IGV4ZWMgcGF0aCwgdGhlIHdyYXBwZXIKK3dpbGwgbG9vayBpbiB0aGUgcmVzdCBvZiB5b3VyICRQQVRIIGZvciBpdC4gIFRodXMsIGl0J3MgcG9zc2libGUKK3RvIHdyaXRlIGxvY2FsIEdpdCBleHRlbnNpb25zIHRoYXQgZG9uJ3QgbGl2ZSBpbiBzeXN0ZW0gc3BhY2UuKQorCitJbXBsZW1lbnRhdGlvbiBsYW5ndWFnZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNb3N0IHN1YmNvbW1hbmRzIGFyZSB3cml0dGVuIGluIEMgb3Igc2hlbGwuICBBIGZldyBhcmUgd3JpdHRlbiBpbgorUGVybC4KKworV2hpbGUgd2Ugc3Ryb25nbHkgZW5jb3VyYWdlIGNvZGluZyBpbiBwb3J0YWJsZSBDIGZvciBwb3J0YWJpbGl0eSwKK3RoZXNlIHNwZWNpZmljIHNjcmlwdGluZyBsYW5ndWFnZXMgYXJlIGFsc28gYWNjZXB0YWJsZS4gIFdlIHdvbid0CithY2NlcHQgbW9yZSB3aXRob3V0IGEgdmVyeSBzdHJvbmcgdGVjaG5pY2FsIGNhc2UsIGFzIHdlIGRvbid0IHdhbnQKK3RvIGJyb2FkZW4gdGhlIEdpdCBzdWl0ZSdzIHJlcXVpcmVkIGRlcGVuZGVuY2llcy4gIEltcG9ydCB1dGlsaXRpZXMsCitzdXJnaWNhbCB0b29scywgcmVtb3RlIGhlbHBlcnMgYW5kIG90aGVyIGNvZGUgYXQgdGhlIGVkZ2VzIG9mIHRoZQorR2l0IHN1aXRlIGFyZSBtb3JlIGxlbmllbnQgYW5kIHdlIGFsbG93IFB5dGhvbiAoYW5kIGV2ZW4gVGNsL3RrKSwKK2J1dCB0aGV5IHNob3VsZCBub3QgYmUgdXNlZCBmb3IgY29yZSBmdW5jdGlvbnMuCisKK1RoaXMgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiAgRXNwZWNpYWxseSBQeXRob24gaXMgbm90IGFsbG93ZWQgaW4KK2NvcmUgYmVjYXVzZSB3ZSBuZWVkIGJldHRlciBQeXRob24gaW50ZWdyYXRpb24gaW4gdGhlIEdpdCBXaW5kb3dzCitpbnN0YWxsZXIgYmVmb3JlIHdlIGNhbiBiZSBjb25maWRlbnQgcGVvcGxlIGluIHRoYXQgZW52aXJvbm1lbnQKK3dvbid0IGV4cGVyaWVuY2UgYW4gdW5hY2NlcHRhYmx5IGxhcmdlIGxvc3Mgb2YgY2FwYWJpbGl0eS4KKworQyBjb21tYW5kcyBhcmUgbm9ybWFsbHkgd3JpdHRlbiBhcyBzaW5nbGUgbW9kdWxlcywgbmFtZWQgYWZ0ZXIgdGhlCitjb21tYW5kLCB0aGF0IGxpbmsgYSBjb2xsZWN0aW9uIG9mIGZ1bmN0aW9ucyBjYWxsZWQgbGliZ2l0LiAgVGh1cywKK3lvdXIgY29tbWFuZCAnZ2l0LWZvbycgd291bGQgbm9ybWFsbHkgYmUgaW1wbGVtZW50ZWQgYXMgYSBzaW5nbGUKKyJnaXQtZm9vLmMiIChvciAiYnVpbHRpbi9mb28uYyIgaWYgaXQgaXMgdG8gYmUgbGlua2VkIHRvIHRoZSBtYWluCitiaW5hcnkpOyB0aGlzIG9yZ2FuaXphdGlvbiBtYWtlcyBpdCBlYXN5IGZvciBwZW9wbGUgcmVhZGluZyB0aGUgY29kZQordG8gZmluZCB0aGluZ3MuCisKK1NlZSB0aGUgQ29kaW5nR3VpZGVsaW5lcyBkb2N1bWVudCBmb3Igb3RoZXIgZ3VpZGFuY2Ugb24gd2hhdCB3ZSBjb25zaWRlcgorZ29vZCBwcmFjdGljZSBpbiBDIGFuZCBzaGVsbCwgYW5kIGFwaS1idWlsdGluLnR4dCBmb3IgdGhlIHN1cHBvcnQKK2Z1bmN0aW9ucyBhdmFpbGFibGUgdG8gYnVpbHQtaW4gY29tbWFuZHMgd3JpdHRlbiBpbiBDLgorCitXaGF0IGV2ZXJ5IGV4dGVuc2lvbiBjb21tYW5kIG5lZWRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1lvdSBtdXN0IGhhdmUgYSBtYW4gcGFnZSwgd3JpdHRlbiBpbiBhc2NpaWRvYyAodGhpcyBpcyB3aGF0IEdpdCBoZWxwCitmb2xsb3dlZCBieSB5b3VyIHN1YmNvbW1hbmQgbmFtZSB3aWxsIGRpc3BsYXkpLiAgQmUgYXdhcmUgdGhhdCB0aGVyZSBpcworYSBsb2NhbCBhc2NpaWRvYyBjb25maWd1cmF0aW9uIGFuZCBtYWNyb3Mgd2hpY2ggeW91IHNob3VsZCB1c2UuICBJdCdzCitvZnRlbiBoZWxwZnVsIHRvIHN0YXJ0IGJ5IGNsb25pbmcgYW4gZXhpc3RpbmcgcGFnZSBhbmQgcmVwbGFjaW5nIHRoZQordGV4dCBjb250ZW50LgorCitZb3UgbXVzdCBoYXZlIGEgdGVzdCwgd3JpdHRlbiB0byByZXBvcnQgaW4gVEFQIChUZXN0IEFueXRoaW5nIFByb3RvY29sKS4KK1Rlc3RzIGFyZSBleGVjdXRhYmxlcyAodXN1YWxseSBzaGVsbCBzY3JpcHRzKSB0aGF0IGxpdmUgaW4gdGhlICd0Jworc3ViZGlyZWN0b3J5IG9mIHRoZSB0cmVlLiAgRWFjaCB0ZXN0IG5hbWUgYmVnaW5zIHdpdGggJ3QnIGFuZCBhIHNlcXVlbmNlCitudW1iZXIgdGhhdCBjb250cm9scyB3aGVyZSBpbiB0aGUgdGVzdCBzZXF1ZW5jZSBpdCB3aWxsIGJlIGV4ZWN1dGVkOworY29udmVudGlvbmFsbHkgdGhlIHJlc3Qgb2YgdGhlIG5hbWUgc3RlbSBpcyB0aGF0IG9mIHRoZSBjb21tYW5kCitiZWluZyB0ZXN0ZWQuCisKK1JlYWQgdGhlIGZpbGUgdC9SRUFETUUgdG8gbGVhcm4gbW9yZSBhYm91dCB0aGUgY29udmVudGlvbnMgdG8gYmUgdXNlZAoraW4gd3JpdGluZyB0ZXN0cywgYW5kIHRoZSB0ZXN0IHN1cHBvcnQgbGlicmFyeS4KKworSW50ZWdyYXRpbmcgYSBjb21tYW5kCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSGVyZSBhcmUgdGhlIHRoaW5ncyB5b3UgbmVlZCB0byBkbyB3aGVuIHlvdSB3YW50IHRvIG1lcmdlIGEgbmV3CitzdWJjb21tYW5kIGludG8gdGhlIEdpdCB0cmVlLgorCisxLiBEb24ndCBmb3JnZXQgdG8gc2lnbiBvZmYgeW91ciBwYXRjaCEKKworMi4gQXBwZW5kIHlvdXIgY29tbWFuZCBuYW1lIHRvIG9uZSBvZiB0aGUgdmFyaWFibGVzIEJVSUxUSU5fT0JKUywKK0VYVFJBX1BST0dSQU1TLCBTQ1JJUFRfU0gsIFNDUklQVF9QRVJMIG9yIFNDUklQVF9QWVRIT04uCisKKzMuIERyb3AgaXRzIHRlc3QgaW4gdGhlIHQgZGlyZWN0b3J5LgorCis0LiBJZiB5b3VyIGNvbW1hbmQgaXMgaW1wbGVtZW50ZWQgaW4gYW4gaW50ZXJwcmV0ZWQgbGFuZ3VhZ2Ugd2l0aCBhCitwLWNvZGUgaW50ZXJtZWRpYXRlIGZvcm0sIG1ha2Ugc3VyZSAuZ2l0aWdub3JlIGluIHRoZSBtYWluIGRpcmVjdG9yeQoraW5jbHVkZXMgYSBwYXR0ZXJuIGVudHJ5IHRoYXQgaWdub3JlcyBzdWNoIGZpbGVzLiAgUHl0aG9uIC5weWMgYW5kCisucHlvIGZpbGVzIHdpbGwgYWxyZWFkeSBiZSBjb3ZlcmVkLgorCis1LiBJZiB5b3VyIGNvbW1hbmQgaGFzIGFueSBkZXBlbmRlbmN5IG9uIGEgcGFydGljdWxhciB2ZXJzaW9uIG9mCit5b3VyIGxhbmd1YWdlLCBkb2N1bWVudCBpdCBpbiB0aGUgSU5TVEFMTCBmaWxlLgorCis2LiBUaGVyZSBpcyBhIGZpbGUgY29tbWFuZC1saXN0LnR4dCBpbiB0aGUgZGlzdHJpYnV0aW9uIG1haW4gZGlyZWN0b3J5Cit0aGF0IGNhdGVnb3JpemVzIGNvbW1hbmRzIGJ5IHR5cGUsIHNvIHRoZXkgY2FuIGJlIGxpc3RlZCBpbiBhcHByb3ByaWF0ZQorc3Vic2VjdGlvbnMgaW4gdGhlIGRvY3VtZW50YXRpb24ncyBzdW1tYXJ5IGNvbW1hbmQgbGlzdC4gIEFkZCBhbiBlbnRyeQorZm9yIHlvdXJzLiAgVG8gdW5kZXJzdGFuZCB0aGUgY2F0ZWdvcmllcywgbG9vayBhdCBnaXQtY21tYW5kcy50eHQKK2luIHRoZSBtYWluIGRpcmVjdG9yeS4KKworNy4gR2l2ZSB0aGUgbWFpbnRhaW5lciBvbmUgcGFyYWdyYXBoIHRvIGluY2x1ZGUgaW4gdGhlIFJlbE5vdGVzIGZpbGUKK3RvIGRlc2NyaWJlIHRoZSBuZXcgZmVhdHVyZTsgYSBnb29kIHBsYWNlIHRvIGRvIHNvIGlzIGluIHRoZSBjb3ZlcgorbGV0dGVyIFtQQVRDSCAwL25dLgorCitUaGF0J3MgYWxsIHRoZXJlIGlzIHRvIGl0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ob3d0by9yZWJhc2UtZnJvbS1pbnRlcm5hbC1icmFuY2gudHh0IGIvRG9jdW1lbnRhdGlvbi9ob3d0by9yZWJhc2UtZnJvbS1pbnRlcm5hbC1icmFuY2gudHh0CmluZGV4IDc0YTFjMGMuLjE5YWI2MDQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaG93dG8vcmViYXNlLWZyb20taW50ZXJuYWwtYnJhbmNoLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3JlYmFzZS1mcm9tLWludGVybmFsLWJyYW5jaC50eHQKQEAgLTQsMTEgKzQsMTYgQEAKIFN1YmplY3Q6IFJlOiBzZW5kaW5nIGNoYW5nZXNldHMgZnJvbSB0aGUgbWlkZGxlIG9mIGEgZ2l0IHRyZWUKIERhdGU6CVN1biwgMTQgQXVnIDIwMDUgMTg6Mzc6MzkgLTA3MDAKIEFic3RyYWN0OiBJbiB0aGlzIGFydGljbGUsIEpDIHRhbGtzIGFib3V0IGhvdyBoZSByZWJhc2VzIHRoZQotIHB1YmxpYyAicHUiIGJyYW5jaCB1c2luZyB0aGUgY29yZSBHSVQgdG9vbHMgd2hlbiBoZSB1cGRhdGVzCisgcHVibGljICJwdSIgYnJhbmNoIHVzaW5nIHRoZSBjb3JlIEdpdCB0b29scyB3aGVuIGhlIHVwZGF0ZXMKICB0aGUgIm1hc3RlciIgYnJhbmNoLCBhbmQgaG93ICJyZWJhc2UiIHdvcmtzLiAgQWxzbyBkaXNjdXNzZWQKICBpcyBob3cgdGhpcyBhcHBsaWVzIHRvIGluZGl2aWR1YWwgZGV2ZWxvcGVycyB3aG8gc2VuZHMgcGF0Y2hlcwogIHVwc3RyZWFtLgorQ29udGVudC10eXBlOiB0ZXh0L2FzY2lpZG9jCiAKK0hvdyB0byByZWJhc2UgZnJvbSBhbiBpbnRlcm5hbCBicmFuY2gKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFBldHIgQmF1ZGlzIDxwYXNreUBzdXNlLmN6PiB3cml0ZXM6CiAKID4gRGVhciBkaWFyeSwgb24gU3VuLCBBdWcgMTQsIDIwMDUgYXQgMDk6NTc6MTNBTSBDRVNULCBJIGdvdCBhIGxldHRlcgpAQCAtMTksMTMgKzI0LDE0IEBACiA+PiA+IGJyYW5jaCB0byB0aGUgcmVhbCBicmFuY2hlcy4KID4+CiA+IEFjdHVhbGx5LCB3b3VsZG4ndCB0aGlzIGJlIGFsc28gcHJlY2lzZWx5IGZvciB3aGF0IFN0R0lUIGlzIGludGVuZGVkIHRvPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogRXhhY3RseSBteSBmZWVsaW5nLiAgSSB3YXMgc29ydCBvZiB3YWl0aW5nIGZvciBDYXRhbGluIHRvIHNwZWFrCiB1cC4gIFdpdGggaXRzIGJhc2luZyBwaGlsb3NvcGhpY2FsIGFuY2VzdHJ5IG9uIHF1aWx0LCB0aGlzIGlzCiB0aGUga2luZCBvZiB0YXNrIFN0R0lUIGlzIGRlc2lnbmVkIHRvIGRvLgogCiBJIGp1c3QgaGF2ZSBkb25lIGEgc2ltcGxlciBvbmUsIHRoaXMgdGltZSB1c2luZyBvbmx5IHRoZSBjb3JlCi1HSVQgdG9vbHMuCitHaXQgdG9vbHMuCiAKIEkgaGFkIGEgaGFuZGZ1bCBvZiBjb21taXRzIHRoYXQgd2VyZSBhaGVhZCBvZiBtYXN0ZXIgaW4gcHUsIGFuZCBJCiB3YW50ZWQgdG8gYWRkIHNvbWUgZG9jdW1lbnRhdGlvbiBieXBhc3NpbmcgbXkgdXN1YWwgaGFiaXQgb2YKQEAgLTkwLDcgKzk2LDcgQEAKIGNhbiBydW4gImdpdCBwcnVuZSIgdG8gZ2V0IHJpZCBvZiB0aG9zZSBvcmlnaW5hbCB0aHJlZSBjb21taXRzLgogCiBXaGlsZSBJIGFtIHRhbGtpbmcgYWJvdXQgImdpdCByZWJhc2UiLCBJIHNob3VsZCB0YWxrIGFib3V0IGhvdwotdG8gZG8gY2hlcnJ5cGlja2luZyB1c2luZyBvbmx5IHRoZSBjb3JlIEdJVCB0b29scy4KK3RvIGRvIGNoZXJyeXBpY2tpbmcgdXNpbmcgb25seSB0aGUgY29yZSBHaXQgdG9vbHMuCiAKIExldCdzIGdvIGJhY2sgdG8gdGhlIGVhcmxpZXIgcGljdHVyZSwgd2l0aCBkaWZmZXJlbnQgbGFiZWxzLgogCkBAIC0xNTYsOCArMTYyLDMgQEAKIHRoZSAjMScgY29tbWl0LgogCiAtamMKLQotLQotVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGdpdCIgaW4KLXRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCi1Nb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaG93dG8vcmVidWlsZC1mcm9tLXVwZGF0ZS1ob29rLnR4dCBiL0RvY3VtZW50YXRpb24vaG93dG8vcmVidWlsZC1mcm9tLXVwZGF0ZS1ob29rLnR4dAppbmRleCA0OGM2NzU2Li4yNTM3OGY2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3JlYnVpbGQtZnJvbS11cGRhdGUtaG9vay50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9ob3d0by9yZWJ1aWxkLWZyb20tdXBkYXRlLWhvb2sudHh0CkBAIC0zLDE5ICszLDIzIEBACiBGcm9tOiBKdW5pbyBDIEhhbWFubyA8Z2l0c3RlckBwb2JveC5jb20+CiBEYXRlOiBGcmksIDI2IEF1ZyAyMDA1IDE4OjE5OjEwIC0wNzAwCiBBYnN0cmFjdDogSW4gdGhpcyBob3ctdG8gYXJ0aWNsZSwgSkMgdGFsa3MgYWJvdXQgaG93IGhlCi0gdXNlcyB0aGUgcG9zdC11cGRhdGUgaG9vayB0byBhdXRvbWF0ZSBnaXQgZG9jdW1lbnRhdGlvbiBwYWdlCisgdXNlcyB0aGUgcG9zdC11cGRhdGUgaG9vayB0byBhdXRvbWF0ZSBHaXQgZG9jdW1lbnRhdGlvbiBwYWdlCiAgc2hvd24gYXQgaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9zY20vZ2l0L2RvY3MvLgorQ29udGVudC10eXBlOiB0ZXh0L2FzY2lpZG9jCisKK0hvdyB0byByZWJ1aWxkIGZyb20gdXBkYXRlIGhvb2sKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogVGhlIHBhZ2VzIHVuZGVyIGh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvc2NtL2dpdC9kb2NzLwogYXJlIGJ1aWx0IGZyb20gRG9jdW1lbnRhdGlvbi8gZGlyZWN0b3J5IG9mIHRoZSBnaXQuZ2l0IHByb2plY3QKIGFuZCBuZWVkZWQgdG8gYmUga2VwdCB1cC10by1kYXRlLiAgVGhlIHd3dy5rZXJuZWwub3JnLyBzZXJ2ZXJzCiBhcmUgbWlycm9yZWQgYW5kIEkgd2FzIHRvbGQgdGhhdCB0aGUgb3JpZ2luIG9mIHRoZSBtaXJyb3IgaXMgb24KIHRoZSBtYWNoaW5lICRzb21lLmtlcm5lbC5vcmcsIG9uIHdoaWNoIEkgd2FzIGdpdmVuIGFuIGFjY291bnQKLXdoZW4gSSB0b29rIG92ZXIgZ2l0IG1haW50YWluZXJzaGlwIGZyb20gTGludXMuCit3aGVuIEkgdG9vayBvdmVyIEdpdCBtYWludGFpbmVyc2hpcCBmcm9tIExpbnVzLgogCiBUaGUgZGlyZWN0b3JpZXMgcmVsZXZhbnQgdG8gdGhpcyBob3ctdG8gYXJlIHRoZXNlIHR3bzoKIAotICAgIC9wdWIvc2NtL2dpdC9naXQuZ2l0LwlUaGUgcHVibGljIGdpdCByZXBvc2l0b3J5LgorICAgIC9wdWIvc2NtL2dpdC9naXQuZ2l0LwlUaGUgcHVibGljIEdpdCByZXBvc2l0b3J5LgogICAgIC9wdWIvc29mdHdhcmUvc2NtL2dpdC9kb2NzLwlUaGUgSFRNTCBkb2N1bWVudGF0aW9uIHBhZ2UuCiAKIFNvIEkgbWFkZSBhIHJlcG9zaXRvcnkgdG8gZ2VuZXJhdGUgdGhlIGRvY3VtZW50YXRpb24gdW5kZXIgbXkKQEAgLTQyLDcgKzQ2LDcgQEAKICAgICBFT0YKIAogSW5pdGlhbGx5IEkgdXNlZCB0byBydW4gdGhpcyBieSBoYW5kIHdoZW5ldmVyIEkgcHVzaCBpbnRvIHRoZQotcHVibGljIGdpdCByZXBvc2l0b3J5LiAgVGhlbiBJIGRpZCBhIGNyb24gam9iIHRoYXQgcmFuIHR3aWNlIGEKK3B1YmxpYyBHaXQgcmVwb3NpdG9yeS4gIFRoZW4gSSBkaWQgYSBjcm9uIGpvYiB0aGF0IHJhbiB0d2ljZSBhCiBkYXkuICBUaGUgY3VycmVudCByb3VuZCB1c2VzIHRoZSBwb3N0LXVwZGF0ZSBob29rIG1lY2hhbmlzbSwKIGxpa2UgdGhpczoKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ob3d0by9yZWNvdmVyLWNvcnJ1cHRlZC1ibG9iLW9iamVjdC50eHQgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3JlY292ZXItY29ycnVwdGVkLWJsb2Itb2JqZWN0LnR4dAppbmRleCAzMjNiNTEzLi4xYjNiMTg4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3JlY292ZXItY29ycnVwdGVkLWJsb2Itb2JqZWN0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3JlY292ZXItY29ycnVwdGVkLWJsb2Itb2JqZWN0LnR4dApAQCAtMywxOCArMywyNCBAQAogU3ViamVjdDogY29ycnVwdCBvYmplY3Qgb24gZ2l0LWdjCiBBYnN0cmFjdDogU29tZSB0cmlja3MgdG8gcmVjb25zdHJ1Y3QgYmxvYiBvYmplY3RzIGluIG9yZGVyIHRvIGZpeAogIGEgY29ycnVwdGVkIHJlcG9zaXRvcnkuCitDb250ZW50LXR5cGU6IHRleHQvYXNjaWlkb2MKIAorSG93IHRvIHJlY292ZXIgYSBjb3JydXB0ZWQgYmxvYiBvYmplY3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBPbiBGcmksIDkgTm92IDIwMDcsIFlvc3NpIExleWJvdmljaCB3cm90ZToKID4KID4gRGlkIG5vdCBoZWxwIHN0aWxsIHRoZSByZXBvc2l0b3J5IGxvb2sgZm9yIHRoaXMgb2JqZWN0PwogPiBBbnkgb25lIGtub3cgaG93IGNhbiBJIHRyYWNrIHRoaXMgb2JqZWN0IGFuZCB1bmRlcnN0YW5kIHdoaWNoIGZpbGUgaXMgaXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVNvIGV4YWN0bHkgKmJlY2F1c2UqIHRoZSBTSEExIGhhc2ggaXMgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlLCB0aGUgaGFzaAorU28gZXhhY3RseSAqYmVjYXVzZSogdGhlIFNIQS0xIGhhc2ggaXMgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlLCB0aGUgaGFzaAogaXRzZWxmIGRvZXNuJ3QgYWN0dWFsbHkgdGVsbCB5b3UgYW55dGhpbmcsIGluIG9yZGVyIHRvIGZpeCBhIGNvcnJ1cHQKIG9iamVjdCB5b3UgYmFzaWNhbGx5IGhhdmUgdG8gZmluZCB0aGUgIm9yaWdpbmFsIHNvdXJjZSIgZm9yIGl0LgogCiBUaGUgZWFzaWVzdCB3YXkgdG8gZG8gdGhhdCBpcyBhbG1vc3QgYWx3YXlzIHRvIGhhdmUgYmFja3VwcywgYW5kIGZpbmQgdGhlCi1zYW1lIG9iamVjdCBzb21ld2hlcmUgZWxzZS4gQmFja3VwcyByZWFsbHkgYXJlIGEgZ29vZCBpZGVhLCBhbmQgZ2l0IG1ha2VzCitzYW1lIG9iamVjdCBzb21ld2hlcmUgZWxzZS4gQmFja3VwcyByZWFsbHkgYXJlIGEgZ29vZCBpZGVhLCBhbmQgR2l0IG1ha2VzCiBpdCBwcmV0dHkgZWFzeSAoaWYgbm90aGluZyBlbHNlLCBqdXN0IGNsb25lIHRoZSByZXBvc2l0b3J5IHNvbWV3aGVyZSBlbHNlLAogYW5kIG1ha2Ugc3VyZSB0aGF0IHlvdSBkbyAqbm90KiB1c2UgYSBoYXJkLWxpbmtlZCBjbG9uZSwgYW5kIHByZWZlcmFibHkKIG5vdCB0aGUgc2FtZSBkaXNrL21hY2hpbmUpLgpAQCAtMzEsMTkgKzM3LDIzIEBACiBpbnRlcmVzdGluZyBmb3IgdGhlIGZ1dHVyZSwgaW4gdGhlIGhvcGUgdGhhdCB5b3UgY2FuIHJlLWNyZWF0ZSBhCiBub24tY29ycnVwdCB2ZXJzaW9uLgogCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogU286CiAKID4gaWJdJCBtdiAuZ2l0L29iamVjdHMvNGIvOTQ1OGIzNzg2MjI4MzY5YzYzOTM2ZGI2NTgyN2RlM2NjMDYyMDAgLi4vCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGlzIGlzIHRoZSByaWdodCB0aGluZyB0byBkbywgYWx0aG91Z2ggaXQncyB1c3VhbGx5IGJlc3QgdG8gc2F2ZSBpdCB1bmRlcgotaXQncyBmdWxsIFNIQTEgbmFtZSAoeW91IGp1c3QgZHJvcHBlZCB0aGUgIjRiIiBmcm9tIHRoZSByZXN1bHQgOykuCitpdCdzIGZ1bGwgU0hBLTEgbmFtZSAoeW91IGp1c3QgZHJvcHBlZCB0aGUgIjRiIiBmcm9tIHRoZSByZXN1bHQgOykuCiAKIExldCdzIHNlZSB3aGF0IHRoYXQgdGVsbHMgdXM6CiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA+IGliXSQgZ2l0LWZzY2sgLS1mdWxsCiA+IGJyb2tlbiBsaW5rIGZyb20gICAgdHJlZSAyZDkyNjNjNmQyMzU5NWU3Y2IyYTIxZTVlYmJiNTM2NTUyNzhkZmY4CiA+ICAgICAgICAgICAgICB0byAgICBibG9iIDRiOTQ1OGIzNzg2MjI4MzY5YzYzOTM2ZGI2NTgyN2RlM2NjMDYyMDAKID4gbWlzc2luZyBibG9iIDRiOTQ1OGIzNzg2MjI4MzY5YzYzOTM2ZGI2NTgyN2RlM2NjMDYyMDAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIE9rLCBJIHJlbW92ZWQgdGhlICJkYW5nbGluZyBjb21taXQiIG1lc3NhZ2VzLCBiZWNhdXNlIHRoZXkgYXJlIGp1c3QKIG1lc3NhZ2VzIGFib3V0IHRoZSBmYWN0IHRoYXQgeW91IHByb2JhYmx5IGhhdmUgcmViYXNlZCBldGMsIHNvIHRoZXkncmUgbm90CkBAIC03OSw3ICs4OSw3IEBACiAKIAlnaXQgaGFzaC1vYmplY3QgLXcgbXktbWFnaWMtZmlsZQogCi1hZ2FpbiwgYW5kIGlmIGl0IG91dHB1dHMgdGhlIG1pc3NpbmcgU0hBMSAoNGI5NDUuLikgeW91J3JlIG5vdyBhbGwgZG9uZSEKK2FnYWluLCBhbmQgaWYgaXQgb3V0cHV0cyB0aGUgbWlzc2luZyBTSEEtMSAoNGI5NDUuLikgeW91J3JlIG5vdyBhbGwgZG9uZSEKIAogQnV0IHRoYXQncyB0aGUgcmVhbGx5IGx1Y2t5IGNhc2UsIHNvIGxldCdzIGFzc3VtZSB0aGF0IGl0IHdhcyBzb21lIG9sZGVyCiB2ZXJzaW9uIHRoYXQgd2FzIGJyb2tlbi4gSG93IGRvIHlvdSB0ZWxsIHdoaWNoIHZlcnNpb24gaXQgd2FzPwpAQCAtMTI0LDcgKzEzNCw3IEBACiAJZ2l0IGxvZyAtLXJhdyAtLWFsbAogCiBhbmQganVzdCBsb29rZWQgZm9yIHRoZSBzaGEgb2YgdGhlIG1pc3Npbmcgb2JqZWN0ICg0Yjk0NThiLi4pIGluIHRoYXQKLXdob2xlIHRoaW5nLiBJdCdzIHVwIHRvIHlvdSAtIGdpdCBkb2VzICpoYXZlKiBhIGxvdCBvZiBpbmZvcm1hdGlvbiwgaXQgaXMKK3dob2xlIHRoaW5nLiBJdCdzIHVwIHRvIHlvdSAtIEdpdCBkb2VzICpoYXZlKiBhIGxvdCBvZiBpbmZvcm1hdGlvbiwgaXQgaXMKIGp1c3QgbWlzc2luZyBvbmUgcGFydGljdWxhciBibG9iIHZlcnNpb24uCiAKIFRyeWluZyB0byByZWNyZWF0ZSB0cmVlcyBhbmQgZXNwZWNpYWxseSBjb21taXRzIGlzICptdWNoKiBoYXJkZXIuIFNvIHlvdQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ob3d0by9yZXZlcnQtYS1mYXVsdHktbWVyZ2UudHh0IGIvRG9jdW1lbnRhdGlvbi9ob3d0by9yZXZlcnQtYS1mYXVsdHktbWVyZ2UudHh0CmluZGV4IDZmZDcxMTkuLjA3NTQxOGUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaG93dG8vcmV2ZXJ0LWEtZmF1bHR5LW1lcmdlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3JldmVydC1hLWZhdWx0eS1tZXJnZS50eHQKQEAgLTcsNiArNywxMCBAQAogIGFmdGVyIHRoZSBvZmZlbmRpbmcgYnJhbmNoIGlzIGZpeGVkLgogTWVzc2FnZS1JRDogPDd2b2N6OGE2emsuZnNmQGdpdHN0ZXIuc2lhbWVzZS5keW5kbnMub3JnPgogUmVmZXJlbmNlczogPGFscGluZS5MRkQuMi4wMC4wODEyMTgxOTQ5NDUwLjE0MDE0QGxvY2FsaG9zdC5sb2NhbGRvbWFpbj4KK0NvbnRlbnQtdHlwZTogdGV4dC9hc2NpaWRvYworCitIb3cgdG8gcmV2ZXJ0IGEgZmF1bHR5IG1lcmdlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIEFsYW4gPGFsYW5AY2x1ZXNlcnZlci5vcmc+IHNhaWQ6CiAKQEAgLTE2MCw3ICsxNjQsNyBAQAogY2hhbmdlcyB0aGF0IHlvdSBjYW4gdHJ5IHRvIHBpbnBvaW50IHdoaWNoIF9wYXJ0XyBvZiBpdCBjaGFuZ2VzLgogCiBCdXQgZG9lcyBpdCBhbGwgd29yaz8gU3VyZSBpdCBkb2VzLiBZb3UgY2FuIHJldmVydCBhIG1lcmdlLCBhbmQgZnJvbSBhCi1wdXJlbHkgdGVjaG5pY2FsIGFuZ2xlLCBnaXQgZGlkIGl0IHZlcnkgbmF0dXJhbGx5IGFuZCBoYWQgbm8gcmVhbAorcHVyZWx5IHRlY2huaWNhbCBhbmdsZSwgR2l0IGRpZCBpdCB2ZXJ5IG5hdHVyYWxseSBhbmQgaGFkIG5vIHJlYWwKIHRyb3VibGVzLiBJdCBqdXN0IGNvbnNpZGVyZWQgaXQgYSBjaGFuZ2UgZnJvbSAic3RhdGUgYmVmb3JlIG1lcmdlIiB0bwogInN0YXRlIGFmdGVyIG1lcmdlIiwgYW5kIHRoYXQgd2FzIGl0LiBOb3RoaW5nIGNvbXBsaWNhdGVkLCBub3RoaW5nIG9kZCwKIG5vdGhpbmcgcmVhbGx5IGRhbmdlcm91cy4gR2l0IHdpbGwgZG8gaXQgd2l0aG91dCBldmVuIHRoaW5raW5nIGFib3V0IGl0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ob3d0by9yZXZlcnQtYnJhbmNoLXJlYmFzZS50eHQgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3JldmVydC1icmFuY2gtcmViYXNlLnR4dAppbmRleCAwOTNjNjU2Li44NGRkODM5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3JldmVydC1icmFuY2gtcmViYXNlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3JldmVydC1icmFuY2gtcmViYXNlLnR4dApAQCAtOCwxNCArOCwxNCBAQAogQ29udGVudC10eXBlOiB0ZXh0L2FzY2lpZG9jCiBNZXNzYWdlLUlEOiA8N3ZvZTdnM3VvcC5mc2ZAYXNzaWduZWQtYnktZGhjcC5jb3gubmV0PgogCi1SZXZlcnRpbmcgYW4gZXhpc3RpbmcgY29tbWl0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitIb3cgdG8gcmV2ZXJ0IGFuIGV4aXN0aW5nIGNvbW1pdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogT25lIG9mIHRoZSBjaGFuZ2VzIEkgcHVsbGVkIGludG8gdGhlICdtYXN0ZXInIGJyYW5jaCB0dXJucyBvdXQgdG8KLWJyZWFrIGJ1aWxkaW5nIEdJVCB3aXRoIEdDQyAyLjk1LiAgV2hpbGUgdGhleSB3ZXJlIHdlbGwgaW50ZW50aW9uZWQKK2JyZWFrIGJ1aWxkaW5nIEdpdCB3aXRoIEdDQyAyLjk1LiAgV2hpbGUgdGhleSB3ZXJlIHdlbGwgaW50ZW50aW9uZWQKIHBvcnRhYmlsaXR5IGZpeGVzLCBrZWVwaW5nIHRoaW5ncyB3b3JraW5nIHdpdGggZ2NjLTIuOTUgd2FzIGFsc28KIGltcG9ydGFudC4gIEhlcmUgaXMgd2hhdCBJIGRpZCB0byByZXZlcnQgdGhlIGNoYW5nZSBpbiB0aGUgJ21hc3RlcicKLWJyYW5jaCBhbmQgdG8gYWRqdXN0IHRoZSAncHUnIGJyYW5jaCwgdXNpbmcgY29yZSBHSVQgdG9vbHMgYW5kCiticmFuY2ggYW5kIHRvIGFkanVzdCB0aGUgJ3B1JyBicmFuY2gsIHVzaW5nIGNvcmUgR2l0IHRvb2xzIGFuZAogYmFyZWJvbmUgUG9yY2VsYWluLgogCiBGaXJzdCwgcHJlcGFyZSBhIHRocm93LWF3YXkgYnJhbmNoIGluIGNhc2UgSSBzY3JldyB0aGluZ3MgdXAuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3NlcGFyYXRpbmctdG9waWMtYnJhbmNoZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9ob3d0by9zZXBhcmF0aW5nLXRvcGljLWJyYW5jaGVzLnR4dAppbmRleCA2ZDNlYjhlLi5iZDEwMjc0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3NlcGFyYXRpbmctdG9waWMtYnJhbmNoZXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vaG93dG8vc2VwYXJhdGluZy10b3BpYy1icmFuY2hlcy50eHQKQEAgLTEsNiArMSwxMCBAQAogRnJvbTogSnVuaW8gQyBIYW1hbm8gPGdpdHN0ZXJAcG9ib3guY29tPgogU3ViamVjdDogU2VwYXJhdGluZyB0b3BpYyBicmFuY2hlcwogQWJzdHJhY3Q6IEluIHRoaXMgYXJ0aWNsZSwgSkMgZGVzY3JpYmVzIGhvdyB0byBzZXBhcmF0ZSB0b3BpYyBicmFuY2hlcy4KK0NvbnRlbnQtdHlwZTogdGV4dC9hc2NpaWRvYworCitIb3cgdG8gc2VwYXJhdGUgdG9waWMgYnJhbmNoZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBUaGlzIHRleHQgd2FzIG9yaWdpbmFsbHkgYSBmb290bm90ZSB0byBhIGRpc2N1c3Npb24gYWJvdXQgdGhlCiBiZWhhdmlvdXIgb2YgdGhlIGdpdCBkaWZmIGNvbW1hbmRzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ob3d0by9zZXR1cC1naXQtc2VydmVyLW92ZXItaHR0cC50eHQgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3NldHVwLWdpdC1zZXJ2ZXItb3Zlci1odHRwLnR4dAppbmRleCA2MjJlZTVjLi43ZjQ5NDNlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3NldHVwLWdpdC1zZXJ2ZXItb3Zlci1odHRwLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3NldHVwLWdpdC1zZXJ2ZXItb3Zlci1odHRwLnR4dApAQCAtMSw2ICsxLDEwIEBACiBGcm9tOiBSdXRnZXIgTmlqbHVuc2luZyA8cnV0Z2VyQG5vc3BhbS5jb20+Ci1TdWJqZWN0OiBTZXR0aW5nIHVwIGEgZ2l0IHJlcG9zaXRvcnkgd2hpY2ggY2FuIGJlIHB1c2hlZCBpbnRvIGFuZCBwdWxsZWQgZnJvbSBvdmVyIEhUVFAoUykuCitTdWJqZWN0OiBTZXR0aW5nIHVwIGEgR2l0IHJlcG9zaXRvcnkgd2hpY2ggY2FuIGJlIHB1c2hlZCBpbnRvIGFuZCBwdWxsZWQgZnJvbSBvdmVyIEhUVFAoUykuCiBEYXRlOiBUaHUsIDEwIEF1ZyAyMDA2IDIyOjAwOjI2ICswMjAwCitDb250ZW50LXR5cGU6IHRleHQvYXNjaWlkb2MKKworSG93IHRvIHNldHVwIEdpdCBzZXJ2ZXIgb3ZlciBodHRwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogU2luY2UgQXBhY2hlIGlzIG9uZSBvZiB0aG9zZSBwYWNrYWdlcyBwZW9wbGUgbGlrZSB0byBjb21waWxlCiB0aGVtc2VsdmVzIHdoaWxlIG90aGVycyBwcmVmZXIgdGhlIGJ1cmVhdWNyYXQncyBkcmVhbSBEZWJpYW4sIGl0IGlzCkBAIC00MCwyMCArNDQsMjAgQEAKIAogLSBoYXZlIHBlcm1pc3Npb25zIHRvIGNob3duIGEgZGlyZWN0b3J5CiAKLS0gaGF2ZSBnaXQgaW5zdGFsbGVkIG9uIHRoZSBjbGllbnQsIGFuZAorLSBoYXZlIEdpdCBpbnN0YWxsZWQgb24gdGhlIGNsaWVudCwgYW5kCiAKLS0gZWl0aGVyIGhhdmUgZ2l0IGluc3RhbGxlZCBvbiB0aGUgc2VydmVyIG9yIGhhdmUgYSB3ZWJkYXYgY2xpZW50IG9uCistIGVpdGhlciBoYXZlIEdpdCBpbnN0YWxsZWQgb24gdGhlIHNlcnZlciBvciBoYXZlIGEgd2ViZGF2IGNsaWVudCBvbgogICB0aGUgY2xpZW50LgogCiBJbiBlZmZlY3QsIHRoaXMgbWVhbnMgeW91J3JlIGdvaW5nIHRvIGJlIHJvb3QsIG9yIHRoYXQgeW91J3JlIHVzaW5nIGEKIHByZWNvbmZpZ3VyZWQgV2ViREFWIHNlcnZlci4KIAogCi1TdGVwIDE6IHNldHVwIGEgYmFyZSBHSVQgcmVwb3NpdG9yeQorU3RlcCAxOiBzZXR1cCBhIGJhcmUgR2l0IHJlcG9zaXRvcnkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIGdpdC1odHRwLXB1c2ggY2Fubm90IHJlbW90ZWx5IGNyZWF0ZSBhIEdJVAotcmVwb3NpdG9yeS4gU28gd2UgaGF2ZSB0byBkbyB0aGF0IGF0IHRoZSBzZXJ2ZXIgc2lkZSB3aXRoIGdpdC4gQW5vdGhlcgorQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywgZ2l0LWh0dHAtcHVzaCBjYW5ub3QgcmVtb3RlbHkgY3JlYXRlIGEgR2l0CityZXBvc2l0b3J5LiBTbyB3ZSBoYXZlIHRvIGRvIHRoYXQgYXQgdGhlIHNlcnZlciBzaWRlIHdpdGggR2l0LiBBbm90aGVyCiBvcHRpb24gaXMgdG8gZ2VuZXJhdGUgYW4gZW1wdHkgYmFyZSByZXBvc2l0b3J5IGF0IHRoZSBjbGllbnQgYW5kIGNvcHkKIGl0IHRvIHRoZSBzZXJ2ZXIgd2l0aCBhIFdlYkRBViBjbGllbnQgKHdoaWNoIGlzIHRoZSBvbmx5IG9wdGlvbiBpZiBHaXQKIGlzIG5vdCBpbnN0YWxsZWQgb24gdGhlIHNlcnZlcikuCkBAIC0xODUsNyArMTg5LDcgQEAKIFN0ZXAgMzogc2V0dXAgdGhlIGNsaWVudAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIEhUVFAgc3VwcG9ydCwgaS5lLiB5b3VyIGdpdCB3YXMgYnVpbHQgd2l0aAorTWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgSFRUUCBzdXBwb3J0LCBpLmUuIHlvdXIgR2l0IHdhcyBidWlsdCB3aXRoCiBsaWJjdXJsICh2ZXJzaW9uIG1vcmUgcmVjZW50IHRoYW4gNy4xMCkuIFRoZSBjb21tYW5kICdnaXQgaHR0cC1wdXNoJyB3aXRoCiBubyBhcmd1bWVudCBzaG91bGQgZGlzcGxheSBhIHVzYWdlIG1lc3NhZ2UuCiAKQEAgLTI2NCw3ICsyNjgsNyBAQAogCiAgIE9uIERlYmlhbjogUmVhZCAvdmFyL2xvZy9hcGFjaGUyL2Vycm9yLmxvZyBpbnN0ZWFkLgogCi1JZiB5b3UgYWNjZXNzIEhUVFBTIGxvY2F0aW9ucywgZ2l0IG1heSBmYWlsIHZlcmlmeWluZyB0aGUgU1NMCitJZiB5b3UgYWNjZXNzIEhUVFBTIGxvY2F0aW9ucywgR2l0IG1heSBmYWlsIHZlcmlmeWluZyB0aGUgU1NMCiBjZXJ0aWZpY2F0ZSAodGhpcyBpcyByZXR1cm4gY29kZSA2MCkuIFNldHRpbmcgaHR0cC5zc2xWZXJpZnk9ZmFsc2UgY2FuCiBoZWxwIGRpYWdub3NpbmcgdGhlIHByb2JsZW0sIGJ1dCByZW1vdmVzIHNlY3VyaXR5IGNoZWNrcy4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ob3d0by91cGRhdGUtaG9vay1leGFtcGxlLnR4dCBiL0RvY3VtZW50YXRpb24vaG93dG8vdXBkYXRlLWhvb2stZXhhbXBsZS50eHQKaW5kZXggYjdmOGQ0MS4uYTUxOTNiMSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ob3d0by91cGRhdGUtaG9vay1leGFtcGxlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3VwZGF0ZS1ob29rLWV4YW1wbGUudHh0CkBAIC01LDYgKzUsMTAgQEAKIEFic3RyYWN0OiBBbiBleGFtcGxlIGhvb2tzL3VwZGF0ZSBzY3JpcHQgaXMgcHJlc2VudGVkIHRvCiAgaW1wbGVtZW50IHJlcG9zaXRvcnkgbWFpbnRlbmFuY2UgcG9saWNpZXMsIHN1Y2ggYXMgd2hvIGNhbiBwdXNoCiAgaW50byB3aGljaCBicmFuY2ggYW5kIHdobyBjYW4gbWFrZSBhIHRhZy4KK0NvbnRlbnQtdHlwZTogdGV4dC9hc2NpaWRvYworCitIb3cgdG8gdXNlIHRoZSB1cGRhdGUgaG9vaworPT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogV2hlbiB5b3VyIGRldmVsb3BlciBydW5zIGdpdC1wdXNoIGludG8gdGhlIHJlcG9zaXRvcnksCiBnaXQtcmVjZWl2ZS1wYWNrIGlzIHJ1biAoZWl0aGVyIGxvY2FsbHkgb3Igb3ZlciBzc2gpIGFzIHRoYXQKQEAgLTMyLDggKzM2LDcgQEAKIFtqYzogZWRpdG9yaWFsIG5vdGUuICBUaGlzIGlzIGEgbXVjaCBpbXByb3ZlZCB2ZXJzaW9uIGJ5IENhcmwKIHNpbmNlIEkgcG9zdGVkIHRoZSBvcmlnaW5hbCBvdXRsaW5lXQogCi0tLSA+OCAtLSBiZWdpbm5pbmcgb2Ygc2NyaXB0IC0tID44IC0tCi0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMhL2Jpbi9iYXNoCiAKIHVtYXNrIDAwMgpAQCAtMTExLDEyICsxMTQsMTIgQEAKIAogICAgICAgaW5mbyAiRm91bmQgbWF0Y2hpbmcgaGVhZCBwYXR0ZXJuOiAnJGhlYWRfcGF0dGVybiciCiAgICAgICBmb3IgdXNlcl9wYXR0ZXJuIGluICR1c2VyX3BhdHRlcm5zOyBkbwotCWluZm8gIkNoZWNraW5nIHVzZXI6ICckdXNlcm5hbWUnIGFnYWluc3QgcGF0dGVybjogJyR1c2VyX3BhdHRlcm4nIgotCW1hdGNobGVuPSQoZXhwciAiJHVzZXJuYW1lIiA6ICIkdXNlcl9wYXR0ZXJuIikKLQlpZiB0ZXN0ICIkbWF0Y2hsZW4iID0gIiR7I3VzZXJuYW1lfSIKLQl0aGVuCi0JICBncmFudCAiQWxsb3dpbmcgdXNlcjogJyR1c2VybmFtZScgd2l0aCBwYXR0ZXJuOiAnJHVzZXJfcGF0dGVybiciCi0JZmkKKyAgICAgICAgaW5mbyAiQ2hlY2tpbmcgdXNlcjogJyR1c2VybmFtZScgYWdhaW5zdCBwYXR0ZXJuOiAnJHVzZXJfcGF0dGVybiciCisgICAgICAgIG1hdGNobGVuPSQoZXhwciAiJHVzZXJuYW1lIiA6ICIkdXNlcl9wYXR0ZXJuIikKKyAgICAgICAgaWYgdGVzdCAiJG1hdGNobGVuIiA9ICIkeyN1c2VybmFtZX0iCisgICAgICAgIHRoZW4KKyAgICAgICAgICBncmFudCAiQWxsb3dpbmcgdXNlcjogJyR1c2VybmFtZScgd2l0aCBwYXR0ZXJuOiAnJHVzZXJfcGF0dGVybiciCisgICAgICAgIGZpCiAgICAgICBkb25lCiAgICAgICBkZW55ICJUaGUgdXNlciBpcyBub3QgaW4gdGhlIGFjY2VzcyBsaXN0IGZvciB0aGlzIGJyYW5jaCIKICAgICBkb25lCkBAIC0xNDksMTMgKzE1MiwxMyBAQAogCiAgICAgICBpbmZvICJGb3VuZCBtYXRjaGluZyBoZWFkIHBhdHRlcm46ICckaGVhZF9wYXR0ZXJuJyIKICAgICAgIGZvciBncm91cF9wYXR0ZXJuIGluICRncm91cF9wYXR0ZXJuczsgZG8KLQlmb3IgZ3JvdXBuYW1lIGluICRncm91cHM7IGRvCi0JICBpbmZvICJDaGVja2luZyBncm91cDogJyRncm91cG5hbWUnIGFnYWluc3QgcGF0dGVybjogJyRncm91cF9wYXR0ZXJuJyIKLQkgIG1hdGNobGVuPSQoZXhwciAiJGdyb3VwbmFtZSIgOiAiJGdyb3VwX3BhdHRlcm4iKQotCSAgaWYgdGVzdCAiJG1hdGNobGVuIiA9ICIkeyNncm91cG5hbWV9IgotCSAgdGhlbgotCSAgICBncmFudCAiQWxsb3dpbmcgZ3JvdXA6ICckZ3JvdXBuYW1lJyB3aXRoIHBhdHRlcm46ICckZ3JvdXBfcGF0dGVybiciCi0JICBmaQorICAgICAgICBmb3IgZ3JvdXBuYW1lIGluICRncm91cHM7IGRvCisgICAgICAgICAgaW5mbyAiQ2hlY2tpbmcgZ3JvdXA6ICckZ3JvdXBuYW1lJyBhZ2FpbnN0IHBhdHRlcm46ICckZ3JvdXBfcGF0dGVybiciCisgICAgICAgICAgbWF0Y2hsZW49JChleHByICIkZ3JvdXBuYW1lIiA6ICIkZ3JvdXBfcGF0dGVybiIpCisgICAgICAgICAgaWYgdGVzdCAiJG1hdGNobGVuIiA9ICIkeyNncm91cG5hbWV9IgorICAgICAgICAgIHRoZW4KKyAgICAgICAgICAgIGdyYW50ICJBbGxvd2luZyBncm91cDogJyRncm91cG5hbWUnIHdpdGggcGF0dGVybjogJyRncm91cF9wYXR0ZXJuJyIKKyAgICAgICAgICBmaQogICAgICAgICBkb25lCiAgICAgICBkb25lCiAgICAgICBkZW55ICJOb25lIG9mIHRoZSB1c2VyJ3MgZ3JvdXBzIGFyZSBpbiB0aGUgYWNjZXNzIGxpc3QgZm9yIHRoaXMgYnJhbmNoIgpAQCAtMTY5LDI0ICsxNzIsMjEgQEAKIGZpCiAKIGRlbnkgPi9kZXYvbnVsbCAiVGhlcmUgYXJlIG5vIG1vcmUgcnVsZXMgdG8gY2hlY2suICBEZW55aW5nIGFjY2VzcyIKLQotLS0gPjggLS0gZW5kIG9mIHNjcmlwdCAtLSA+OCAtLQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGlzIHVzZXMgdHdvIGZpbGVzLCAkR0lUX0RJUi9pbmZvL2FsbG93ZWQtdXNlcnMgYW5kCiBhbGxvd2VkLWdyb3VwcywgdG8gZGVzY3JpYmUgd2hpY2ggaGVhZHMgY2FuIGJlIHB1c2hlZCBpbnRvIGJ5CiB3aG9tLiAgVGhlIGZvcm1hdCBvZiBlYWNoIGZpbGUgd291bGQgbG9vayBsaWtlIHRoaXM6CiAKLSAgICAgICAgcmVmcy9oZWFkcy9tYXN0ZXIJanVuaW8KLQkrcmVmcy9oZWFkcy9wdQkJanVuaW8KLSAgICAgICAgcmVmcy9oZWFkcy9jb2dpdG8kCXBhc2t5Ci0gICAgICAgIHJlZnMvaGVhZHMvYncvLioJbGludXMKLSAgICAgICAgcmVmcy9oZWFkcy90bXAvLioJLioKLSAgICAgICAgcmVmcy90YWdzL3ZbMC05XS4qCWp1bmlvCisgICAgcmVmcy9oZWFkcy9tYXN0ZXIgICBqdW5pbworICAgICtyZWZzL2hlYWRzL3B1ICAgICAganVuaW8KKyAgICByZWZzL2hlYWRzL2NvZ2l0byQgIHBhc2t5CisgICAgcmVmcy9oZWFkcy9idy8uKiAgICBsaW51cworICAgIHJlZnMvaGVhZHMvdG1wLy4qICAgLioKKyAgICByZWZzL3RhZ3MvdlswLTldLiogIGp1bmlvCiAKIFdpdGggdGhpcywgTGludXMgY2FuIHB1c2ggb3IgY3JlYXRlICJidy9wZW5ndWluIiBvciAiYncvemVicmEiCiBvciAiYncvcGFuZGEiIGJyYW5jaGVzLCBQYXNreSBjYW4gZG8gb25seSAiY29naXRvIiwgYW5kIEpDIGNhbgogZG8gbWFzdGVyIGFuZCBwdSBicmFuY2hlcyBhbmQgbWFrZSB2ZXJzaW9uZWQgdGFncy4gIEFuZCBhbnlib2R5CiBjYW4gZG8gdG1wL2JsYWggYnJhbmNoZXMuIFRoZSAnKycgc2lnbiBhdCB0aGUgcHUgcmVjb3JkIG1lYW5zCiB0aGF0IEpDIGNhbiBtYWtlIG5vbi1mYXN0LWZvcndhcmQgcHVzaGVzIG9uIGl0LgotCi0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaG93dG8vdXNlLWdpdC1kYWVtb24udHh0IGIvRG9jdW1lbnRhdGlvbi9ob3d0by91c2UtZ2l0LWRhZW1vbi50eHQKaW5kZXggNGUyZjc1Yy4uN2FmMmU1MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ob3d0by91c2UtZ2l0LWRhZW1vbi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9ob3d0by91c2UtZ2l0LWRhZW1vbi50eHQKQEAgLTEsNyArMSwxMCBAQAorQ29udGVudC10eXBlOiB0ZXh0L2FzY2lpZG9jCisKIEhvdyB0byB1c2UgZ2l0LWRhZW1vbgorPT09PT09PT09PT09PT09PT09PT09CiAKIEdpdCBjYW4gYmUgcnVuIGluIGluZXRkIG1vZGUgYW5kIGluIHN0YW5kIGFsb25lIG1vZGUuIEJ1dCBhbGwgeW91IHdhbnQgaXMKLWxldCBhIGNvd29ya2VyIHB1bGwgZnJvbSB5b3UsIGFuZCB0aGVyZWZvcmUgbmVlZCB0byBzZXQgdXAgYSBnaXQgc2VydmVyCitsZXQgYSBjb3dvcmtlciBwdWxsIGZyb20geW91LCBhbmQgdGhlcmVmb3JlIG5lZWQgdG8gc2V0IHVwIGEgR2l0IHNlcnZlcgogcmVhbCBxdWljaywgcmlnaHQ/CiAKIE5vdGUgdGhhdCBnaXQtZGFlbW9uIGlzIG5vdCByZWFsbHkgY2hhdHR5IGF0IHRoZSBtb21lbnQsIGVzcGVjaWFsbHkgd2hlbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ob3d0by91c2luZy1zaWduZWQtdGFnLWluLXB1bGwtcmVxdWVzdC50eHQgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3VzaW5nLXNpZ25lZC10YWctaW4tcHVsbC1yZXF1ZXN0LnR4dAppbmRleCA5OGMwMDMzLi5iYmYwNDBlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3VzaW5nLXNpZ25lZC10YWctaW4tcHVsbC1yZXF1ZXN0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3VzaW5nLXNpZ25lZC10YWctaW4tcHVsbC1yZXF1ZXN0LnR4dApAQCAtNyw4ICs3LDggQEAKICBsYXRlciB2YWxpZGF0ZSBpdC4KIENvbnRlbnQtdHlwZTogdGV4dC9hc2NpaWRvYwogCi1Vc2luZyBzaWduZWQgdGFnIGluIHB1bGwgcmVxdWVzdHMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorSG93IHRvIHVzZSBhIHNpZ25lZCB0YWcgaW4gcHVsbCByZXF1ZXN0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBBIHR5cGljYWwgZGlzdHJpYnV0ZWQgd29ya2Zsb3cgdXNpbmcgR2l0IGlzIGZvciBhIGNvbnRyaWJ1dG9yIHRvIGZvcmsgYQogcHJvamVjdCwgYnVpbGQgb24gaXQsIHB1Ymxpc2ggdGhlIHJlc3VsdCB0byBoZXIgcHVibGljIHJlcG9zaXRvcnksIGFuZCBhc2sKQEAgLTIzLDcgKzIzLDcgQEAKIAogICAgRnJvYm96IDMuMiAoMjAxMS0wOS0zMCAxNDoyMDo1NyAtMDcwMCkKIAotIGFyZSBhdmFpbGFibGUgaW4gdGhlIGdpdCByZXBvc2l0b3J5IGF0OgorIGFyZSBhdmFpbGFibGUgaW4gdGhlIEdpdCByZXBvc2l0b3J5IGF0OgogCiAgICBleGFtcGxlLmNvbTovZ2l0L2Zyb2Jvei5naXQgZm9yLXh5enp5CiAtLS0tLS0tLS0tLS0KQEAgLTEwNyw3ICsxMDcsNyBAQAogCiAgICBGcm9ib3ogMy4yICgyMDExLTA5LTMwIDE0OjIwOjU3IC0wNzAwKQogCi0gYXJlIGF2YWlsYWJsZSBpbiB0aGUgZ2l0IHJlcG9zaXRvcnkgYXQ6CisgYXJlIGF2YWlsYWJsZSBpbiB0aGUgR2l0IHJlcG9zaXRvcnkgYXQ6CiAKICAgIGV4YW1wbGUuY29tOi9naXQvZnJvYm96LmdpdCB0YWdzL2Zyb3R6LWZvci14eXp6eQogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kxOG4udHh0IGIvRG9jdW1lbnRhdGlvbi9pMThuLnR4dAppbmRleCA2MjVkMzE1Li5lOWExZDVkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2kxOG4udHh0CisrKyBiL0RvY3VtZW50YXRpb24vaTE4bi50eHQKQEAgLTEsOSArMSw5IEBACi1BdCB0aGUgY29yZSBsZXZlbCwgZ2l0IGlzIGNoYXJhY3RlciBlbmNvZGluZyBhZ25vc3RpYy4KK0F0IHRoZSBjb3JlIGxldmVsLCBHaXQgaXMgY2hhcmFjdGVyIGVuY29kaW5nIGFnbm9zdGljLgogCiAgLSBUaGUgcGF0aG5hbWVzIHJlY29yZGVkIGluIHRoZSBpbmRleCBhbmQgaW4gdGhlIHRyZWUgb2JqZWN0cwogICAgYXJlIHRyZWF0ZWQgYXMgdW5pbnRlcnByZXRlZCBzZXF1ZW5jZXMgb2Ygbm9uLU5VTCBieXRlcy4KICAgIFdoYXQgcmVhZGRpcigyKSByZXR1cm5zIGFyZSB3aGF0IGFyZSByZWNvcmRlZCBhbmQgY29tcGFyZWQKLSAgIHdpdGggdGhlIGRhdGEgZ2l0IGtlZXBzIHRyYWNrIG9mLCB3aGljaCBpbiB0dXJuIGFyZSBleHBlY3RlZAorICAgd2l0aCB0aGUgZGF0YSBHaXQga2VlcHMgdHJhY2sgb2YsIHdoaWNoIGluIHR1cm4gYXJlIGV4cGVjdGVkCiAgICB0byBiZSB3aGF0IGxzdGF0KDIpIGFuZCBjcmVhdCgyKSBhY2NlcHRzLiAgVGhlcmUgaXMgbm8gc3VjaAogICAgdGhpbmcgYXMgcGF0aG5hbWUgZW5jb2RpbmcgdHJhbnNsYXRpb24uCiAKQEAgLTE1LDkgKzE1LDkgQEAKICAgIGJ5dGVzLgogCiBBbHRob3VnaCB3ZSBlbmNvdXJhZ2UgdGhhdCB0aGUgY29tbWl0IGxvZyBtZXNzYWdlcyBhcmUgZW5jb2RlZAotaW4gVVRGLTgsIGJvdGggdGhlIGNvcmUgYW5kIGdpdCBQb3JjZWxhaW4gYXJlIGRlc2lnbmVkIG5vdCB0bworaW4gVVRGLTgsIGJvdGggdGhlIGNvcmUgYW5kIEdpdCBQb3JjZWxhaW4gYXJlIGRlc2lnbmVkIG5vdCB0bwogZm9yY2UgVVRGLTggb24gcHJvamVjdHMuICBJZiBhbGwgcGFydGljaXBhbnRzIG9mIGEgcGFydGljdWxhcgotcHJvamVjdCBmaW5kIGl0IG1vcmUgY29udmVuaWVudCB0byB1c2UgbGVnYWN5IGVuY29kaW5ncywgZ2l0Citwcm9qZWN0IGZpbmQgaXQgbW9yZSBjb252ZW5pZW50IHRvIHVzZSBsZWdhY3kgZW5jb2RpbmdzLCBHaXQKIGRvZXMgbm90IGZvcmJpZCBpdC4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIGZldyB0aGluZ3MgdG8ga2VlcCBpbgogbWluZC4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tYWlsbWFwLnR4dCBiL0RvY3VtZW50YXRpb24vbWFpbG1hcC50eHQKaW5kZXggMjg4ZjA0ZS4uNGE4YzI3NiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9tYWlsbWFwLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL21haWxtYXAudHh0CkBAIC0xLDUgKzEsNiBAQAogSWYgdGhlIGZpbGUgYC5tYWlsbWFwYCBleGlzdHMgYXQgdGhlIHRvcGxldmVsIG9mIHRoZSByZXBvc2l0b3J5LCBvciBhdAotdGhlIGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgdGhlIG1haWxtYXAuZmlsZSBjb25maWd1cmF0aW9uIG9wdGlvbiwgaXQKK3RoZSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IHRoZSBtYWlsbWFwLmZpbGUgb3IgbWFpbG1hcC5ibG9iCitjb25maWd1cmF0aW9uIG9wdGlvbnMsIGl0CiBpcyB1c2VkIHRvIG1hcCBhdXRob3IgYW5kIGNvbW1pdHRlciBuYW1lcyBhbmQgZW1haWwgYWRkcmVzc2VzIHRvCiBjYW5vbmljYWwgcmVhbCBuYW1lcyBhbmQgZW1haWwgYWRkcmVzc2VzLgogCkBAIC00Niw3ICs0Nyw3IEBACiBKb2UgUi4gRGV2ZWxvcGVyIDxqb2VAZXhhbXBsZS5jb20+CiAtLS0tLS0tLS0tLS0KIAotTm90ZSBob3cgdGhlcmUgaXMgbm8gbmVlZCBmb3IgYW4gZW50cnkgZm9yIDxqYW5lQGxhcHRvcC4obm9uZSk+LCBiZWNhdXNlIHRoZQorTm90ZSBob3cgdGhlcmUgaXMgbm8gbmVlZCBmb3IgYW4gZW50cnkgZm9yIGA8amFuZUBsYXB0b3AuKG5vbmUpPmAsIGJlY2F1c2UgdGhlCiByZWFsIG5hbWUgb2YgdGhhdCBhdXRob3IgaXMgYWxyZWFkeSBjb3JyZWN0LgogCiBFeGFtcGxlIDI6IFlvdXIgcmVwb3NpdG9yeSBjb250YWlucyBjb21taXRzIGZyb20gdGhlIGZvbGxvd2luZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tZXJnZS1jb25maWcudHh0IGIvRG9jdW1lbnRhdGlvbi9tZXJnZS1jb25maWcudHh0CmluZGV4IDg2MWJkNmYuLmQ3OGQ2ZDggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbWVyZ2UtY29uZmlnLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL21lcmdlLWNvbmZpZy50eHQKQEAgLTksMTggKzksMTggQEAKIG1lcmdlLmRlZmF1bHRUb1Vwc3RyZWFtOjoKIAlJZiBtZXJnZSBpcyBjYWxsZWQgd2l0aG91dCBhbnkgY29tbWl0IGFyZ3VtZW50LCBtZXJnZSB0aGUgdXBzdHJlYW0KIAlicmFuY2hlcyBjb25maWd1cmVkIGZvciB0aGUgY3VycmVudCBicmFuY2ggYnkgdXNpbmcgdGhlaXIgbGFzdAotCW9ic2VydmVkIHZhbHVlcyBzdG9yZWQgaW4gdGhlaXIgcmVtb3RlIHRyYWNraW5nIGJyYW5jaGVzLgorCW9ic2VydmVkIHZhbHVlcyBzdG9yZWQgaW4gdGhlaXIgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzLgogCVRoZSB2YWx1ZXMgb2YgdGhlIGBicmFuY2guPGN1cnJlbnQgYnJhbmNoPi5tZXJnZWAgdGhhdCBuYW1lIHRoZQogCWJyYW5jaGVzIGF0IHRoZSByZW1vdGUgbmFtZWQgYnkgYGJyYW5jaC48Y3VycmVudCBicmFuY2g+LnJlbW90ZWAKIAlhcmUgY29uc3VsdGVkLCBhbmQgdGhlbiB0aGV5IGFyZSBtYXBwZWQgdmlhIGByZW1vdGUuPHJlbW90ZT4uZmV0Y2hgCi0JdG8gdGhlaXIgY29ycmVzcG9uZGluZyByZW1vdGUgdHJhY2tpbmcgYnJhbmNoZXMsIGFuZCB0aGUgdGlwcyBvZgorCXRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzLCBhbmQgdGhlIHRpcHMgb2YKIAl0aGVzZSB0cmFja2luZyBicmFuY2hlcyBhcmUgbWVyZ2VkLgogCiBtZXJnZS5mZjo6Ci0JQnkgZGVmYXVsdCwgZ2l0IGRvZXMgbm90IGNyZWF0ZSBhbiBleHRyYSBtZXJnZSBjb21taXQgd2hlbiBtZXJnaW5nCisJQnkgZGVmYXVsdCwgR2l0IGRvZXMgbm90IGNyZWF0ZSBhbiBleHRyYSBtZXJnZSBjb21taXQgd2hlbiBtZXJnaW5nCiAJYSBjb21taXQgdGhhdCBpcyBhIGRlc2NlbmRhbnQgb2YgdGhlIGN1cnJlbnQgY29tbWl0LiBJbnN0ZWFkLCB0aGUKIAl0aXAgb2YgdGhlIGN1cnJlbnQgYnJhbmNoIGlzIGZhc3QtZm9yd2FyZGVkLiBXaGVuIHNldCB0byBgZmFsc2VgLAotCXRoaXMgdmFyaWFibGUgdGVsbHMgZ2l0IHRvIGNyZWF0ZSBhbiBleHRyYSBtZXJnZSBjb21taXQgaW4gc3VjaAorCXRoaXMgdmFyaWFibGUgdGVsbHMgR2l0IHRvIGNyZWF0ZSBhbiBleHRyYSBtZXJnZSBjb21taXQgaW4gc3VjaAogCWEgY2FzZSAoZXF1aXZhbGVudCB0byBnaXZpbmcgdGhlIGAtLW5vLWZmYCBvcHRpb24gZnJvbSB0aGUgY29tbWFuZAogCWxpbmUpLiBXaGVuIHNldCB0byBgb25seWAsIG9ubHkgc3VjaCBmYXN0LWZvcndhcmQgbWVyZ2VzIGFyZQogCWFsbG93ZWQgKGVxdWl2YWxlbnQgdG8gZ2l2aW5nIHRoZSBgLS1mZi1vbmx5YCBvcHRpb24gZnJvbSB0aGUKQEAgLTM4LDEwICszOCwxMCBAQAogCWRpZmYucmVuYW1lTGltaXQuCiAKIG1lcmdlLnJlbm9ybWFsaXplOjoKLQlUZWxsIGdpdCB0aGF0IGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBvZiBmaWxlcyBpbiB0aGUKKwlUZWxsIEdpdCB0aGF0IGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBvZiBmaWxlcyBpbiB0aGUKIAlyZXBvc2l0b3J5IGhhcyBjaGFuZ2VkIG92ZXIgdGltZSAoZS5nLiBlYXJsaWVyIGNvbW1pdHMgcmVjb3JkCiAJdGV4dCBmaWxlcyB3aXRoIENSTEYgbGluZSBlbmRpbmdzLCBidXQgcmVjZW50IG9uZXMgdXNlIExGIGxpbmUKLQllbmRpbmdzKS4gIEluIHN1Y2ggYSByZXBvc2l0b3J5LCBnaXQgY2FuIGNvbnZlcnQgdGhlIGRhdGEKKwllbmRpbmdzKS4gIEluIHN1Y2ggYSByZXBvc2l0b3J5LCBHaXQgY2FuIGNvbnZlcnQgdGhlIGRhdGEKIAlyZWNvcmRlZCBpbiBjb21taXRzIHRvIGEgY2Fub25pY2FsIGZvcm0gYmVmb3JlIHBlcmZvcm1pbmcgYQogCW1lcmdlIHRvIHJlZHVjZSB1bm5lY2Vzc2FyeSBjb25mbGljdHMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwKIAlzZWUgc2VjdGlvbiAiTWVyZ2luZyBicmFuY2hlcyB3aXRoIGRpZmZlcmluZyBjaGVja2luL2NoZWNrb3V0CkBAIC01MiwxMiArNTIsMTIgQEAKIAlhdCB0aGUgZW5kIG9mIHRoZSBtZXJnZS4gIFRydWUgYnkgZGVmYXVsdC4KIAogbWVyZ2UudG9vbDo6Ci0JQ29udHJvbHMgd2hpY2ggbWVyZ2UgcmVzb2x1dGlvbiBwcm9ncmFtIGlzIHVzZWQgYnkKLQlsaW5rZ2l0OmdpdC1tZXJnZXRvb2xbMV0uICBWYWxpZCBidWlsdC1pbiB2YWx1ZXMgYXJlOiAiYXJheGlzIiwKLQkiYmMzIiwgImRpZmZ1c2UiLCAiZWNtZXJnZSIsICJlbWVyZ2UiLCAiZ3ZpbWRpZmYiLCAia2RpZmYzIiwgIm1lbGQiLAotCSJvcGVuZGlmZiIsICJwNG1lcmdlIiwgInRrZGlmZiIsICJ0b3J0b2lzZW1lcmdlIiwgInZpbWRpZmYiCi0JYW5kICJ4eGRpZmYiLiAgQW55IG90aGVyIHZhbHVlIGlzIHRyZWF0ZWQgaXMgY3VzdG9tIG1lcmdlIHRvb2wKLQlhbmQgdGhlcmUgbXVzdCBiZSBhIGNvcnJlc3BvbmRpbmcgbWVyZ2V0b29sLjx0b29sPi5jbWQgb3B0aW9uLgorCUNvbnRyb2xzIHdoaWNoIG1lcmdlIHRvb2wgaXMgdXNlZCBieSBsaW5rZ2l0OmdpdC1tZXJnZXRvb2xbMV0uCisJVGhlIGxpc3QgYmVsb3cgc2hvd3MgdGhlIHZhbGlkIGJ1aWx0LWluIHZhbHVlcy4KKwlBbnkgb3RoZXIgdmFsdWUgaXMgdHJlYXRlZCBhcyBhIGN1c3RvbSBtZXJnZSB0b29sIGFuZCByZXF1aXJlcworCXRoYXQgYSBjb3JyZXNwb25kaW5nIG1lcmdldG9vbC48dG9vbD4uY21kIHZhcmlhYmxlIGlzIGRlZmluZWQuCisKK2luY2x1ZGU6Om1lcmdldG9vbHMtbWVyZ2UudHh0W10KIAogbWVyZ2UudmVyYm9zaXR5OjoKIAlDb250cm9scyB0aGUgYW1vdW50IG9mIG91dHB1dCBzaG93biBieSB0aGUgcmVjdXJzaXZlIG1lcmdlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21lcmdlLW9wdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9tZXJnZS1vcHRpb25zLnR4dAppbmRleCAwYmNiZTBhLi5hZmJhOGQ0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL21lcmdlLW9wdGlvbnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vbWVyZ2Utb3B0aW9ucy50eHQKQEAgLTgsMTIgKzgsMTMgQEAKIGluc3BlY3QgYW5kIGZ1cnRoZXIgdHdlYWsgdGhlIG1lcmdlIHJlc3VsdCBiZWZvcmUgY29tbWl0dGluZy4KIAogLS1lZGl0OjoKKy1lOjoKIC0tbm8tZWRpdDo6CiAJSW52b2tlIGFuIGVkaXRvciBiZWZvcmUgY29tbWl0dGluZyBzdWNjZXNzZnVsIG1lY2hhbmljYWwgbWVyZ2UgdG8KIAlmdXJ0aGVyIGVkaXQgdGhlIGF1dG8tZ2VuZXJhdGVkIG1lcmdlIG1lc3NhZ2UsIHNvIHRoYXQgdGhlIHVzZXIKIAljYW4gZXhwbGFpbiBhbmQganVzdGlmeSB0aGUgbWVyZ2UuIFRoZSBgLS1uby1lZGl0YCBvcHRpb24gY2FuIGJlCiAJdXNlZCB0byBhY2NlcHQgdGhlIGF1dG8tZ2VuZXJhdGVkIG1lc3NhZ2UgKHRoaXMgaXMgZ2VuZXJhbGx5Ci0JZGlzY291cmFnZWQpLiBUaGUgYC0tZWRpdGAgb3B0aW9uIGlzIHN0aWxsIHVzZWZ1bCBpZiB5b3UgYXJlCisJZGlzY291cmFnZWQpLiBUaGUgYC0tZWRpdGAgKG9yIGAtZWApIG9wdGlvbiBpcyBzdGlsbCB1c2VmdWwgaWYgeW91IGFyZQogCWdpdmluZyBhIGRyYWZ0IG1lc3NhZ2Ugd2l0aCB0aGUgYC1tYCBvcHRpb24gZnJvbSB0aGUgY29tbWFuZCBsaW5lCiAJYW5kIHdhbnQgdG8gZWRpdCBpdCBpbiB0aGUgZWRpdG9yLgogKwpAQCAtMzAsNyArMzEsOCBAQAogCiAtLW5vLWZmOjoKIAlDcmVhdGUgYSBtZXJnZSBjb21taXQgZXZlbiB3aGVuIHRoZSBtZXJnZSByZXNvbHZlcyBhcyBhCi0JZmFzdC1mb3J3YXJkLgorCWZhc3QtZm9yd2FyZC4gIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIHdoZW4gbWVyZ2luZyBhbgorCWFubm90YXRlZCAoYW5kIHBvc3NpYmx5IHNpZ25lZCkgdGFnLgogCiAtLWZmLW9ubHk6OgogCVJlZnVzZSB0byBtZXJnZSBhbmQgZXhpdCB3aXRoIGEgbm9uLXplcm8gc3RhdHVzIHVubGVzcyB0aGUKQEAgLTgzLDYgKzg1LDExIEBACiAJUGFzcyBtZXJnZSBzdHJhdGVneSBzcGVjaWZpYyBvcHRpb24gdGhyb3VnaCB0byB0aGUgbWVyZ2UKIAlzdHJhdGVneS4KIAorLS12ZXJpZnktc2lnbmF0dXJlczo6CistLW5vLXZlcmlmeS1zaWduYXR1cmVzOjoKKwlWZXJpZnkgdGhhdCB0aGUgY29tbWl0cyBiZWluZyBtZXJnZWQgaGF2ZSBnb29kIGFuZCB0cnVzdGVkIEdQRyBzaWduYXR1cmVzCisJYW5kIGFib3J0IHRoZSBtZXJnZSBpbiBjYXNlIHRoZXkgZG8gbm90LgorCiAtLXN1bW1hcnk6OgogLS1uby1zdW1tYXJ5OjoKIAlTeW5vbnltcyB0byAtLXN0YXQgYW5kIC0tbm8tc3RhdDsgdGhlc2UgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWVyZ2Utc3RyYXRlZ2llcy50eHQgYi9Eb2N1bWVudGF0aW9uL21lcmdlLXN0cmF0ZWdpZXMudHh0CmluZGV4IDU5NWEzY2YuLjQ5YTlhN2QgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbWVyZ2Utc3RyYXRlZ2llcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9tZXJnZS1zdHJhdGVnaWVzLnR4dApAQCAtMzIsMTMgKzMyLDE0IEBACiAJVGhpcyBvcHRpb24gZm9yY2VzIGNvbmZsaWN0aW5nIGh1bmtzIHRvIGJlIGF1dG8tcmVzb2x2ZWQgY2xlYW5seSBieQogCWZhdm9yaW5nICdvdXInIHZlcnNpb24uICBDaGFuZ2VzIGZyb20gdGhlIG90aGVyIHRyZWUgdGhhdCBkbyBub3QKIAljb25mbGljdCB3aXRoIG91ciBzaWRlIGFyZSByZWZsZWN0ZWQgdG8gdGhlIG1lcmdlIHJlc3VsdC4KKwlGb3IgYSBiaW5hcnkgZmlsZSwgdGhlIGVudGlyZSBjb250ZW50cyBhcmUgdGFrZW4gZnJvbSBvdXIgc2lkZS4KICsKIFRoaXMgc2hvdWxkIG5vdCBiZSBjb25mdXNlZCB3aXRoIHRoZSAnb3VycycgbWVyZ2Ugc3RyYXRlZ3ksIHdoaWNoIGRvZXMgbm90CiBldmVuIGxvb2sgYXQgd2hhdCB0aGUgb3RoZXIgdHJlZSBjb250YWlucyBhdCBhbGwuICBJdCBkaXNjYXJkcyBldmVyeXRoaW5nCiB0aGUgb3RoZXIgdHJlZSBkaWQsIGRlY2xhcmluZyAnb3VyJyBoaXN0b3J5IGNvbnRhaW5zIGFsbCB0aGF0IGhhcHBlbmVkIGluIGl0LgogCiB0aGVpcnM7OwotCVRoaXMgaXMgb3Bwb3NpdGUgb2YgJ291cnMnLgorCVRoaXMgaXMgdGhlIG9wcG9zaXRlIG9mICdvdXJzJy4KIAogcGF0aWVuY2U7OwogCVdpdGggdGhpcyBvcHRpb24sICdtZXJnZS1yZWN1cnNpdmUnIHNwZW5kcyBhIGxpdHRsZSBleHRyYSB0aW1lCkBAIC00Nyw2ICs0OCwxMiBAQAogCXRoaXMgd2hlbiB0aGUgYnJhbmNoZXMgdG8gYmUgbWVyZ2VkIGhhdmUgZGl2ZXJnZWQgd2lsZGx5LgogCVNlZSBhbHNvIGxpbmtnaXQ6Z2l0LWRpZmZbMV0gYC0tcGF0aWVuY2VgLgogCitkaWZmLWFsZ29yaXRobT1bcGF0aWVuY2V8bWluaW1hbHxoaXN0b2dyYW18bXllcnNdOzsKKwlUZWxscyAnbWVyZ2UtcmVjdXJzaXZlJyB0byB1c2UgYSBkaWZmZXJlbnQgZGlmZiBhbGdvcml0aG0sIHdoaWNoCisJY2FuIGhlbHAgYXZvaWQgbWlzbWVyZ2VzIHRoYXQgb2NjdXIgZHVlIHRvIHVuaW1wb3J0YW50IG1hdGNoaW5nCisJbGluZXMgKHN1Y2ggYXMgYnJhY2VzIGZyb20gZGlzdGluY3QgZnVuY3Rpb25zKS4gIFNlZSBhbHNvCisJbGlua2dpdDpnaXQtZGlmZlsxXSBgLS1kaWZmLWFsZ29yaXRobWAuCisKIGlnbm9yZS1zcGFjZS1jaGFuZ2U7OwogaWdub3JlLWFsbC1zcGFjZTs7CiBpZ25vcmUtc3BhY2UtYXQtZW9sOzsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcHJldHR5LWZvcm1hdHMudHh0IGIvRG9jdW1lbnRhdGlvbi9wcmV0dHktZm9ybWF0cy50eHQKaW5kZXggZTNkOGE4My4uMWQxNzRmZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9wcmV0dHktZm9ybWF0cy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9wcmV0dHktZm9ybWF0cy50eHQKQEAgLTc1LDcgKzc1LDcgQEAKICogJ3JhdycKICsKIFRoZSAncmF3JyBmb3JtYXQgc2hvd3MgdGhlIGVudGlyZSBjb21taXQgZXhhY3RseSBhcwotc3RvcmVkIGluIHRoZSBjb21taXQgb2JqZWN0LiAgTm90YWJseSwgdGhlIFNIQTFzIGFyZQorc3RvcmVkIGluIHRoZSBjb21taXQgb2JqZWN0LiAgTm90YWJseSwgdGhlIFNIQS0xcyBhcmUKIGRpc3BsYXllZCBpbiBmdWxsLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgLS1hYmJyZXYgb3IKIC0tbm8tYWJicmV2IGFyZSB1c2VkLCBhbmQgJ3BhcmVudHMnIGluZm9ybWF0aW9uIHNob3cgdGhlCiB0cnVlIHBhcmVudCBjb21taXRzLCB3aXRob3V0IHRha2luZyBncmFmdHMgbm9yIGhpc3RvcnkKQEAgLTEwNiwxOCArMTA2LDIyIEBACiAtICclUCc6IHBhcmVudCBoYXNoZXMKIC0gJyVwJzogYWJicmV2aWF0ZWQgcGFyZW50IGhhc2hlcwogLSAnJWFuJzogYXV0aG9yIG5hbWUKLS0gJyVhTic6IGF1dGhvciBuYW1lIChyZXNwZWN0aW5nIC5tYWlsbWFwLCBzZWUgbGlua2dpdDpnaXQtc2hvcnRsb2dbMV0gb3IgbGlua2dpdDpnaXQtYmxhbWVbMV0pCistICclYU4nOiBhdXRob3IgbmFtZSAocmVzcGVjdGluZyAubWFpbG1hcCwgc2VlIGxpbmtnaXQ6Z2l0LXNob3J0bG9nWzFdCisgIG9yIGxpbmtnaXQ6Z2l0LWJsYW1lWzFdKQogLSAnJWFlJzogYXV0aG9yIGVtYWlsCi0tICclYUUnOiBhdXRob3IgZW1haWwgKHJlc3BlY3RpbmcgLm1haWxtYXAsIHNlZSBsaW5rZ2l0OmdpdC1zaG9ydGxvZ1sxXSBvciBsaW5rZ2l0OmdpdC1ibGFtZVsxXSkKKy0gJyVhRSc6IGF1dGhvciBlbWFpbCAocmVzcGVjdGluZyAubWFpbG1hcCwgc2VlCisgIGxpbmtnaXQ6Z2l0LXNob3J0bG9nWzFdIG9yIGxpbmtnaXQ6Z2l0LWJsYW1lWzFdKQogLSAnJWFkJzogYXV0aG9yIGRhdGUgKGZvcm1hdCByZXNwZWN0cyAtLWRhdGU9IG9wdGlvbikKIC0gJyVhRCc6IGF1dGhvciBkYXRlLCBSRkMyODIyIHN0eWxlCiAtICclYXInOiBhdXRob3IgZGF0ZSwgcmVsYXRpdmUKIC0gJyVhdCc6IGF1dGhvciBkYXRlLCBVTklYIHRpbWVzdGFtcAogLSAnJWFpJzogYXV0aG9yIGRhdGUsIElTTyA4NjAxIGZvcm1hdAogLSAnJWNuJzogY29tbWl0dGVyIG5hbWUKLS0gJyVjTic6IGNvbW1pdHRlciBuYW1lIChyZXNwZWN0aW5nIC5tYWlsbWFwLCBzZWUgbGlua2dpdDpnaXQtc2hvcnRsb2dbMV0gb3IgbGlua2dpdDpnaXQtYmxhbWVbMV0pCistICclY04nOiBjb21taXR0ZXIgbmFtZSAocmVzcGVjdGluZyAubWFpbG1hcCwgc2VlCisgIGxpbmtnaXQ6Z2l0LXNob3J0bG9nWzFdIG9yIGxpbmtnaXQ6Z2l0LWJsYW1lWzFdKQogLSAnJWNlJzogY29tbWl0dGVyIGVtYWlsCi0tICclY0UnOiBjb21taXR0ZXIgZW1haWwgKHJlc3BlY3RpbmcgLm1haWxtYXAsIHNlZSBsaW5rZ2l0OmdpdC1zaG9ydGxvZ1sxXSBvciBsaW5rZ2l0OmdpdC1ibGFtZVsxXSkKKy0gJyVjRSc6IGNvbW1pdHRlciBlbWFpbCAocmVzcGVjdGluZyAubWFpbG1hcCwgc2VlCisgIGxpbmtnaXQ6Z2l0LXNob3J0bG9nWzFdIG9yIGxpbmtnaXQ6Z2l0LWJsYW1lWzFdKQogLSAnJWNkJzogY29tbWl0dGVyIGRhdGUKIC0gJyVjRCc6IGNvbW1pdHRlciBkYXRlLCBSRkMyODIyIHN0eWxlCiAtICclY3InOiBjb21taXR0ZXIgZGF0ZSwgcmVsYXRpdmUKQEAgLTEzMCwyNCArMTM0LDUwIEBACiAtICclYic6IGJvZHkKIC0gJyVCJzogcmF3IGJvZHkgKHVud3JhcHBlZCBzdWJqZWN0IGFuZCBib2R5KQogLSAnJU4nOiBjb21taXQgbm90ZXMKKy0gJyVHRyc6IHJhdyB2ZXJpZmljYXRpb24gbWVzc2FnZSBmcm9tIEdQRyBmb3IgYSBzaWduZWQgY29tbWl0CistICclRz8nOiBzaG93ICJHIiBmb3IgYSBHb29kIHNpZ25hdHVyZSwgIkIiIGZvciBhIEJhZCBzaWduYXR1cmUsICJVIiBmb3IgYSBnb29kLAorICB1bnRydXN0ZWQgc2lnbmF0dXJlIGFuZCAiTiIgZm9yIG5vIHNpZ25hdHVyZQorLSAnJUdTJzogc2hvdyB0aGUgbmFtZSBvZiB0aGUgc2lnbmVyIGZvciBhIHNpZ25lZCBjb21taXQKKy0gJyVHSyc6IHNob3cgdGhlIGtleSB1c2VkIHRvIHNpZ24gYSBzaWduZWQgY29tbWl0CiAtICclZ0QnOiByZWZsb2cgc2VsZWN0b3IsIGUuZy4sIGByZWZzL3N0YXNoQHsxfWAKIC0gJyVnZCc6IHNob3J0ZW5lZCByZWZsb2cgc2VsZWN0b3IsIGUuZy4sIGBzdGFzaEB7MX1gCiAtICclZ24nOiByZWZsb2cgaWRlbnRpdHkgbmFtZQotLSAnJWdOJzogcmVmbG9nIGlkZW50aXR5IG5hbWUgKHJlc3BlY3RpbmcgLm1haWxtYXAsIHNlZSBsaW5rZ2l0OmdpdC1zaG9ydGxvZ1sxXSBvciBsaW5rZ2l0OmdpdC1ibGFtZVsxXSkKKy0gJyVnTic6IHJlZmxvZyBpZGVudGl0eSBuYW1lIChyZXNwZWN0aW5nIC5tYWlsbWFwLCBzZWUKKyAgbGlua2dpdDpnaXQtc2hvcnRsb2dbMV0gb3IgbGlua2dpdDpnaXQtYmxhbWVbMV0pCiAtICclZ2UnOiByZWZsb2cgaWRlbnRpdHkgZW1haWwKLS0gJyVnRSc6IHJlZmxvZyBpZGVudGl0eSBlbWFpbCAocmVzcGVjdGluZyAubWFpbG1hcCwgc2VlIGxpbmtnaXQ6Z2l0LXNob3J0bG9nWzFdIG9yIGxpbmtnaXQ6Z2l0LWJsYW1lWzFdKQorLSAnJWdFJzogcmVmbG9nIGlkZW50aXR5IGVtYWlsIChyZXNwZWN0aW5nIC5tYWlsbWFwLCBzZWUKKyAgbGlua2dpdDpnaXQtc2hvcnRsb2dbMV0gb3IgbGlua2dpdDpnaXQtYmxhbWVbMV0pCiAtICclZ3MnOiByZWZsb2cgc3ViamVjdAogLSAnJUNyZWQnOiBzd2l0Y2ggY29sb3IgdG8gcmVkCiAtICclQ2dyZWVuJzogc3dpdGNoIGNvbG9yIHRvIGdyZWVuCiAtICclQ2JsdWUnOiBzd2l0Y2ggY29sb3IgdG8gYmx1ZQogLSAnJUNyZXNldCc6IHJlc2V0IGNvbG9yCi0tICclQyguLi4pJzogY29sb3Igc3BlY2lmaWNhdGlvbiwgYXMgZGVzY3JpYmVkIGluIGNvbG9yLmJyYW5jaC4qIGNvbmZpZyBvcHRpb24KKy0gJyVDKC4uLiknOiBjb2xvciBzcGVjaWZpY2F0aW9uLCBhcyBkZXNjcmliZWQgaW4gY29sb3IuYnJhbmNoLiogY29uZmlnIG9wdGlvbjsKKyAgYWRkaW5nIGBhdXRvLGAgYXQgdGhlIGJlZ2lubmluZyB3aWxsIGVtaXQgY29sb3Igb25seSB3aGVuIGNvbG9ycyBhcmUKKyAgZW5hYmxlZCBmb3IgbG9nIG91dHB1dCAoYnkgYGNvbG9yLmRpZmZgLCBgY29sb3IudWlgLCBvciBgLS1jb2xvcmAsIGFuZAorICByZXNwZWN0aW5nIHRoZSBgYXV0b2Agc2V0dGluZ3Mgb2YgdGhlIGZvcm1lciBpZiB3ZSBhcmUgZ29pbmcgdG8gYQorICB0ZXJtaW5hbCkuIGBhdXRvYCBhbG9uZSAoaS5lLiBgJUMoYXV0bylgKSB3aWxsIHR1cm4gb24gYXV0byBjb2xvcmluZworICBvbiB0aGUgbmV4dCBwbGFjZWhvbGRlcnMgdW50aWwgdGhlIGNvbG9yIGlzIHN3aXRjaGVkIGFnYWluLgogLSAnJW0nOiBsZWZ0LCByaWdodCBvciBib3VuZGFyeSBtYXJrCiAtICclbic6IG5ld2xpbmUKIC0gJyUlJzogYSByYXcgJyUnCiAtICcleDAwJzogcHJpbnQgYSBieXRlIGZyb20gYSBoZXggY29kZQogLSAnJXcoWzx3PlssPGkxPlssPGkyPl1dXSknOiBzd2l0Y2ggbGluZSB3cmFwcGluZywgbGlrZSB0aGUgLXcgb3B0aW9uIG9mCiAgIGxpbmtnaXQ6Z2l0LXNob3J0bG9nWzFdLgorLSAnJTwoPE4+Wyx0cnVuY3xsdHJ1bmN8bXRydW5jXSknOiBtYWtlIHRoZSBuZXh0IHBsYWNlaG9sZGVyIHRha2UgYXQKKyAgbGVhc3QgTiBjb2x1bW5zLCBwYWRkaW5nIHNwYWNlcyBvbiB0aGUgcmlnaHQgaWYgbmVjZXNzYXJ5LgorICBPcHRpb25hbGx5IHRydW5jYXRlIGF0IHRoZSBiZWdpbm5pbmcgKGx0cnVuYyksIHRoZSBtaWRkbGUgKG10cnVuYykKKyAgb3IgdGhlIGVuZCAodHJ1bmMpIGlmIHRoZSBvdXRwdXQgaXMgbG9uZ2VyIHRoYW4gTiBjb2x1bW5zLgorICBOb3RlIHRoYXQgdHJ1bmNhdGluZyBvbmx5IHdvcmtzIGNvcnJlY3RseSB3aXRoIE4gPj0gMi4KKy0gJyU8fCg8Tj4pJzogbWFrZSB0aGUgbmV4dCBwbGFjZWhvbGRlciB0YWtlIGF0IGxlYXN0IHVudGlsIE50aAorICBjb2x1bW5zLCBwYWRkaW5nIHNwYWNlcyBvbiB0aGUgcmlnaHQgaWYgbmVjZXNzYXJ5CistICclPig8Tj4pJywgJyU+fCg8Tj4pJzogc2ltaWxhciB0byAnJTwoPE4+KScsICclPHwoPE4+KScKKyAgcmVzcGVjdGl2ZWx5LCBidXQgcGFkZGluZyBzcGFjZXMgb24gdGhlIGxlZnQKKy0gJyU+Pig8Tj4pJywgJyU+PnwoPE4+KSc6IHNpbWlsYXIgdG8gJyU+KDxOPiknLCAnJT58KDxOPiknCisgIHJlc3BlY3RpdmVseSwgZXhjZXB0IHRoYXQgaWYgdGhlIG5leHQgcGxhY2Vob2xkZXIgdGFrZXMgbW9yZSBzcGFjZXMKKyAgdGhhbiBnaXZlbiBhbmQgdGhlcmUgYXJlIHNwYWNlcyBvbiBpdHMgbGVmdCwgdXNlIHRob3NlIHNwYWNlcworLSAnJT48KDxOPiknLCAnJT48fCg8Tj4pJzogc2ltaWxhciB0byAnJSA8KDxOPiknLCAnJTx8KDxOPiknCisgIHJlc3BlY3RpdmVseSwgYnV0IHBhZGRpbmcgYm90aCBzaWRlcyAoaS5lLiB0aGUgdGV4dCBpcyBjZW50ZXJlZCkKIAogTk9URTogU29tZSBwbGFjZWhvbGRlcnMgbWF5IGRlcGVuZCBvbiBvdGhlciBvcHRpb25zIGdpdmVuIHRvIHRoZQogcmV2aXNpb24gdHJhdmVyc2FsIGVuZ2luZS4gRm9yIGV4YW1wbGUsIHRoZSBgJWcqYCByZWZsb2cgb3B0aW9ucyB3aWxsCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ByZXR0eS1vcHRpb25zLnR4dCBiL0RvY3VtZW50YXRpb24vcHJldHR5LW9wdGlvbnMudHh0CmluZGV4IDJhM2RjODYuLjVlNDk5NDIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vcHJldHR5LW9wdGlvbnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vcHJldHR5LW9wdGlvbnMudHh0CkBAIC02NiwzICs2Niw3IEBACiAtLVtuby1dc3RhbmRhcmQtbm90ZXM6OgogCVRoZXNlIG9wdGlvbnMgYXJlIGRlcHJlY2F0ZWQuIFVzZSB0aGUgYWJvdmUgLS1ub3Rlcy8tLW5vLW5vdGVzCiAJb3B0aW9ucyBpbnN0ZWFkLgorCistLXNob3ctc2lnbmF0dXJlOjoKKwlDaGVjayB0aGUgdmFsaWRpdHkgb2YgYSBzaWduZWQgY29tbWl0IG9iamVjdCBieSBwYXNzaW5nIHRoZSBzaWduYXR1cmUKKwl0byBgZ3BnIC0tdmVyaWZ5YCBhbmQgc2hvdyB0aGUgb3V0cHV0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wdF9CUi9naXR0dXRvcmlhbC50eHQgYi9Eb2N1bWVudGF0aW9uL3B0X0JSL2dpdHR1dG9yaWFsLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmViYTA2NS4uMDAwMDAwMAotLS0gYS9Eb2N1bWVudGF0aW9uL3B0X0JSL2dpdHR1dG9yaWFsLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDY3NSArMCwwIEBACi1naXR0dXRvcmlhbCg3KQotPT09PT09PT09PT09PT0KLQotTk9NRQotLS0tLQotZ2l0dHV0b3JpYWwgLSBVbSB0dXRvcmlhbCBkZSBpbnRyb2R1w6fDo28gYW8gZ2l0IChwYXJhIHZlcnPDo28gMS41LjEgb3UgbWFpcyBub3ZhKQotCi1TSU5PUFNFCi0tLS0tLS0tLQotZ2l0ICoKLQotREVTQ1JJw4fDg08KLS0tLS0tLS0tLS0tCi0KLUVzdGUgdHV0b3JpYWwgZXhwbGljYSBjb21vIGltcG9ydGFyIHVtIG5vdm8gcHJvamV0byBwYXJhIG8gZ2l0LAotYWRpY2lvbmFyIG11ZGFuw6dhcyBhIGVsZSwgZSBjb21wYXJ0aWxoYXIgbXVkYW7Dp2FzIGNvbSBvdXRyb3MKLWRlc2Vudm9sdmVkb3Jlcy4KLQotU2UsIGFvIGludsOpcyBkaXNzbywgdm9jw6ogZXN0w6EgaW50ZXJlc3NhZG8gcHJpbWFyaWFtZW50ZSBlbSB1c2FyIGdpdCBwYXJhCi1vYnRlciB1bSBwcm9qZXRvLCBwb3IgZXhlbXBsbywgcGFyYSB0ZXN0YXIgYSDDumx0aW1hIHZlcnPDo28sIHZvY8OqIHBvZGUKLXByZWZlcmlyIGNvbWXDp2FyIGNvbSBvcyBwcmltZWlyb3MgZG9pcyBjYXDDrXR1bG9zIGRlCi1saW5rOnVzZXItbWFudWFsLmh0bWxbTyBNYW51YWwgZG8gVXN1w6FyaW8gR2l0XS4KLQotUHJpbWVpcm8sIG5vdGUgcXVlIHZvY8OqIHBvZGUgb2J0ZXIgZG9jdW1lbnRhw6fDo28gcGFyYSB1bSBjb21hbmRvIGNvbW8KLWBnaXQgbG9nIC0tZ3JhcGhgIGNvbToKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIG1hbiBnaXQtbG9nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotb3U6Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgaGVscCBsb2cKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Db20gYSDDumx0aW1hIGZvcm1hLCB2b2PDqiBwb2RlIHVzYXIgbyB2aXN1YWxpemFkb3IgZGUgbWFudWFsIGRlIHN1YQotZXNjb2xoYTsgdmVqYSBsaW5rZ2l0OmdpdC1oZWxwWzFdIHBhcmEgbWFpb3IgaW5mb3JtYcOnw6NvLgotCi3DiSB1bWEgYm9hIGlkw6lpYSBpbmZvcm1hciBhbyBnaXQgc2V1IG5vbWUgZSBlbmRlcmXDp28gcMO6YmxpY28gZGUgZW1haWwKLWFudGVzIGRlIGZhemVyIHF1YWxxdWVyIG9wZXJhw6fDo28uIEEgbWFuZWlyYSBtYWlzIGbDoWNpbCBkZSBmYXrDqi1sbyDDqToKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5uYW1lICJTZXUgTm9tZSBWZW0gQXF1aSIKLSQgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLmVtYWlsIHZvY2VAc2V1ZG9taW5pby5leGVtcGxvLmNvbQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotSW1wb3J0YW5kbyB1bSBub3ZvIHByb2pldG8KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUFzc3VtYSBxdWUgdm9jw6ogdGVtIHVtIHRhcmJhbGwgcHJvamVjdC50YXIuZ3ogY29tIHNldSB0cmFiYWxobyBpbmljaWFsLgotVm9jw6ogcG9kZSBjb2xvY8OhLWxvIHNvYiBjb250cm9sZSBkZSByZXZpc8OjbyBnaXQgZGEgc2VndWludGUgZm9ybWE6Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCB0YXIgeHpmIHByb2plY3QudGFyLmd6Ci0kIGNkIHByb2plY3QKLSQgZ2l0IGluaXQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1HaXQgaXLDoSByZXNwb25kZXIKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Jbml0aWFsaXplZCBlbXB0eSBHaXQgcmVwb3NpdG9yeSBpbiAuZ2l0LwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUFnb3JhIHF1ZSB2b2PDqiBpbmljaW91IHNldSBkaXJldMOzcmlvIGRlIHRyYWJhbGhvLCB2b2PDqiBkZXZlIHRlciBub3RhZG8gcXVlIHVtCi1ub3ZvIGRpcmV0w7NyaW8gZm9pIGNyaWFkbyBjb20gbyBub21lIGRlICIuZ2l0Ii4KLQotQSBzZWd1aXIsIGRpZ2EgYW8gZ2l0IHBhcmEgZ3JhdmFyIHVtIGluc3RhbnTDom5lbyBkbyBjb250ZcO6ZG8gZGUgdG9kb3Mgb3MKLWFycXVpdm9zIHNvYiBvIGRpcmV0w7NyaW8gYXR1YWwgKG5vdGUgbyAnLicpLCBjb20gJ2dpdC1hZGQnOgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgZ2l0IGFkZCAuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotRXN0ZSBpbnN0YW50w6JuZW8gZXN0w6EgYWdvcmEgYXJtYXplbmFkbyBlbSB1bWEgw6FyZWEgdGVtcG9yw6FyaWEgcXVlIG8gZ2l0Ci1jaGFtYSBkZSAiaW5kZXgiIG91IMOtbmRpY2UuIFZvY8OqIHBvZGUgYXJtYXplbmFyIHBlcm1hbmVudGVtZW50ZSBvCi1jb250ZcO6ZG8gZG8gw61uZGljZSBubyByZXBvc2l0w7NyaW8gY29tICdnaXQtY29tbWl0JzoKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBjb21taXQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Jc3RvIHZhaSB0ZSBwZWRpciBwb3IgdW1hIG1lbnNhZ2VtIGRlIGNvbW1pdC4gVm9jw6ogYWdvcmEgZ3Jhdm91IHN1YQotcHJpbWVpcmEgdmVyc8OjbyBkZSBzZXUgcHJvamV0byBubyBnaXQuCi0KLUZhemVuZG8gbXVkYW7Dp2FzCi0tLS0tLS0tLS0tLS0tLQotCi1Nb2RpZmlxdWUgYWxndW5zIGFycXVpdm9zLCBlLCBlbnTDo28sIGFkaWNpb25lIHNldSBjb250ZcO6ZG8gYXR1YWxpemFkbyBhbwotw61uZGljZToKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBhZGQgZmlsZTEgZmlsZTIgZmlsZTMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Wb2PDqiBlc3TDoSBhZ29yYSBwcm9udG8gcGFyYSBmYXplciBvIGNvbW1pdC4gVm9jw6ogcG9kZSB2ZXIgbyBxdWUgZXN0w6EKLXBhcmEgc2VyIGdyYXZhZG8gdXNhbmRvICdnaXQtZGlmZicgY29tIGEgb3DDp8OjbyAtLWNhY2hlZDoKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBkaWZmIC0tY2FjaGVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotKFNlbSAtLWNhY2hlZCwgbyBjb21hbmRvICdnaXQtZGlmZicgaXLDoSB0ZSBtb3N0cmFyIHF1YWlzcXVlciBtdWRhbsOnYXMKLXF1ZSB2b2PDqiB0ZW5oYSBmZWl0byBtYXMgYWluZGEgbsOjbyBhZGljaW9ub3UgYW8gw61uZGljZS4pIFZvY8OqIHRhbWLDqW0KLXBvZGUgb2J0ZXIgdW0gYnJldmUgc3Vtw6FyaW8gZGEgc2l0dWHDp8OjbyBjb20gJ2dpdC1zdGF0dXMnOgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgZ2l0IHN0YXR1cwotIyBPbiBicmFuY2ggbWFzdGVyCi0jIENoYW5nZXMgdG8gYmUgY29tbWl0dGVkOgotIyAgICh1c2UgImdpdCByZXNldCBIRUFEIDxmaWxlPi4uLiIgdG8gdW5zdGFnZSkKLSMKLSMJbW9kaWZpZWQ6ICAgZmlsZTEKLSMJbW9kaWZpZWQ6ICAgZmlsZTIKLSMJbW9kaWZpZWQ6ICAgZmlsZTMKLSMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1TZSB2b2PDqiBwcmVjaXNhciBmYXplciBxdWFscXVlciBvdXRybyBhanVzdGUsIGZhw6dhLW8gYWdvcmEsIGUsIGVudMOjbywKLWFkaWNpb25lIHF1YWxxdWVyIGNvbnRlw7pkbyBtb2RpZmljYWRvIGFvIMOtbmRpY2UuIEZpbmFsbWVudGUsIGdyYXZlIHN1YXMKLW11ZGFuw6dhcyBjb206Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgY29tbWl0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotQW8gZXhlY3V0YXIgZXNzZSBjb21hbmRvLCBlbGUgaXLDoSB0ZSBwZWRpciB1bWEgbWVuc2FnZW0gZGVzY3JldmVuZG8gYSBtdWRhbsOnYSwKLWUsIGVudMOjbywgaXLDoSBncmF2YXIgYSBub3ZhIHZlcnPDo28gZG8gcHJvamV0by4KLQotQWx0ZXJuYXRpdmFtZW50ZSwgYW8gaW52w6lzIGRlIGV4ZWN1dGFyICdnaXQtYWRkJyBhbnRlcywgdm9jw6ogcG9kZSB1c2FyCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgY29tbWl0IC1hCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbyBxdWUgaXLDoSBhdXRvbWF0aWNhbWVudGUgbm90YXIgcXVhaXNxdWVyIGFycXVpdm9zIG1vZGlmaWNhZG9zIChtYXMgbsOjbwotbm92b3MpLCBhZGljaW9uw6EtbG9zIGFvIMOtbmRpY2VzLCBlIGdyYXZhciwgdHVkbyBlbSB1bSDDum5pY28gcGFzc28uCi0KLVVtYSBub3RhIGVtIG1lbnNhZ2VucyBkZSBjb21taXQ6IEFwZXNhciBkZSBuw6NvIHNlciBleGlnaWRvLCDDqSB1bWEgYm9hCi1pZMOpaWEgY29tZcOnYXIgYSBtZW5zYWdlbSBjb20gdW1hIHNpbXBsZXMgZSBjdXJ0YSAobWVub3MgZGUgNTAKLWNhcmFjdGVyZXMpIGxpbmhhIHN1bWFyaXphbmRvIGEgbXVkYW7Dp2EsIHNlZ3VpZGEgZGUgdW1hIGxpbmhhIGVtIGJyYW5jbwotZSwgZW50w6NvLCB1bWEgZGVzY3Jpw6fDo28gbWFpcyBkZXRhbGhhZGEuIEZlcnJhbWVudGFzIHF1ZSB0cmFuc2Zvcm1hbQotY29tbWl0cyBlbSBlbWFpbCwgcG9yIGV4ZW1wbG8sIHVzYW0gYSBwcmltZWlyYSBsaW5oYSBubyBjYW1wbyBkZQotY2FiZcOnYWxobyAiU3ViamVjdDoiIGUgbyByZXN0byBubyBjb3Jwby4KLQotR2l0IHJhc3RyZWlhIGNvbnRlw7pkbywgbsOjbyBhcnF1aXZvcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1NdWl0b3Mgc2lzdGVtYXMgZGUgY29udHJvbGUgZGUgcmV2aXPDo28gcHJvdsOqZW0gdW0gY29tYW5kbyBgYWRkYCBxdWUgZGl6Ci1hbyBzaXN0ZW1hIHBhcmEgY29tZcOnYXIgYSByYXN0cmVhciBtdWRhbsOnYXMgZW0gdW0gbm92byBhcnF1aXZvLiBPCi1jb21hbmRvIGBhZGRgIGRvIGdpdCBmYXogYWxnbyBtYWlzIHNpbXBsZXMgZSBtYWlzIHBvZGVyb3NvOiAnZ2l0LWFkZCcgw6kKLXVzYWRvIHRhbnRvIHBhcmEgYXJxdWl2b3Mgbm92b3MgZSBhcnF1aXZvcyByZWNlbnRlbWVudGUgbW9kaWZpY2Fkb3MsIGUKLWVtIGFtYm9zIG9zIGNhc29zLCBlbGUgdGlyYSBvIGluc3RhbnTDom5lbyBkb3MgYXJxdWl2b3MgZGFkb3MgZSBhcm1hemVuYQotbyBjb250ZcO6ZG8gbm8gw61uZGljZSwgcHJvbnRvIHBhcmEgaW5jbHVzw6NvIGRvIHByw7N4aW1vIGNvbW1pdC4KLQotVmlzdWFsaXphbmRvIGEgaGlzdMOzcmlhIGRvIHByb2pldG8KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUVtIHF1YWxxdWVyIHBvbnRvIHZvY8OqIHBvZGUgdmlzdWFsaXphciBhIGhpc3TDs3JpYSBkYXMgc3VhcyBtdWRhbsOnYXMKLXVzYW5kbwotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgZ2l0IGxvZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVNlIHZvY8OqIHRhbWLDqW0gcXVpc2VyIHZlciBhIGRpZmVyZW7Dp2EgY29tcGxldGEgYSBjYWRhIHBhc3NvLCB1c2UKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBsb2cgLXAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1HZXJhbG1lbnRlLCB1bWEgdmlzw6NvIGdlcmFsIGRhIG11ZGFuw6dhIMOpIMO6dGlsIHBhcmEgdGVyIGEgc2Vuc2HDp8OjbyBkZQotY2FkYSBwYXNzbwotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgZ2l0IGxvZyAtLXN0YXQgLS1zdW1tYXJ5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotR2VyZW5jaWFuZG8gImJyYW5jaGVzIi9yYW1vcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotVW0gc2ltcGxlcyByZXBvc2l0w7NyaW8gZ2l0IHBvZGUgbWFudGVyIG3Dumx0aXBsb3MgcmFtb3MgZGUKLWRlc2Vudm9sdmltZW50by4gUGFyYSBjcmlhciB1bSBub3ZvIHJhbW8gY2hhbWFkbyAiZXhwZXJpbWVudGFsIiwgdXNlCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgYnJhbmNoIGV4cGVyaW1lbnRhbAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVNlIHZvY8OqIGV4ZWN1dGFyIGFnb3JhCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgYnJhbmNoCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdm9jw6ogdmFpIG9idGVyIHVtYSBsaXN0YSBkZSB0b2RvcyBvcyByYW1vcyBleGlzdGVudGVzOgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgZXhwZXJpbWVudGFsCi0qIG1hc3RlcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLU8gcmFtbyAiZXhwZXJpbWVudGFsIiDDqSBvIHF1ZSB2b2PDqiBhY2FiYSBkZSBjcmlhciwgZSBvIHJhbW8gIm1hc3RlciIgw6kgbwotcmFtbyBwYWRyw6NvIHF1ZSBmb2kgY3JpYWRvIHByYSB2b2PDqiBhdXRvbWF0aWNhbWVudGUuIE8gYXN0ZXJpc2NvIG1hcmNhCi1vIHJhbW8gZW0gcXVlIHZvY8OqIGVzdMOhIGF0dWFsbWVudGU7IGRpZ2l0ZQotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgZ2l0IGNoZWNrb3V0IGV4cGVyaW1lbnRhbAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXBhcmEgbXVkYXIgcGFyYSBvIHJhbW8gZXhwZXJpbWVudGFsLiBBZ29yYSBlZGl0ZSB1bSBhcnF1aXZvLCBncmF2ZSBhCi1tdWRhbsOnYSwgZSBtdWRlIGRlIHZvbHRhIHBhcmEgbyByYW1vIG1hc3RlcjoKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0oZWRpdGEgYXJxdWl2bykKLSQgZ2l0IGNvbW1pdCAtYQotJCBnaXQgY2hlY2tvdXQgbWFzdGVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotVmVyaWZpcXVlIHF1ZSBhIG11ZGFuw6dhIHF1ZSB2b2PDqiBmZXogbsOjbyBlc3TDoSBtYWlzIHZpc8OtdmVsLCBqw6EgcXVlIGVsYQotZm9pIGZlaXRhIG5vIHJhbW8gZXhwZXJpbWVudGFsIGUgdm9jw6ogZXN0w6EgZGUgdm9sdGEgYW8gcmFtbyBtYXN0ZXIuCi0KLVZvY8OqIHBvZGUgZmF6ZXIgdW1hIG11ZGFuw6dhIGRpZmVyZW50ZSBubyByYW1vIG1hc3RlcjoKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0oZWRpdCBmaWxlKQotJCBnaXQgY29tbWl0IC1hCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbmVzdGUgcG9udG8sIG9zIGRvaXMgcmFtb3MgZGl2ZXJnaXJhbSwgY29tIGRpZmVyZW50ZXMgbXVkYW7Dp2FzIGZlaXRhcyBlbQotY2FkYSB1bS4gUGFyYSB1bmlmaWNhciBhcyBtdWRhbsOnYXMgZmVpdGFzIG5vIGV4cGVyaW1lbnRhbCBwYXJhIG8KLW1hc3RlciwgZXhlY3V0ZQotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgZ2l0IG1lcmdlIGV4cGVyaW1lbnRhbAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVNlIGFzIG11ZGFuw6dhcyBuw6NvIGNvbmZsaXRhcmVtLCBlc3RhcsOhIHByb250by4gU2UgZXhpc3RpcmVtIGNvbmZsaXRvcywKLW1hcmNhZG9yZXMgc2Vyw6NvIGRlaXhhZG9zIG5vcyBhcnF1aXZvcyBwcm9ibGVtw6F0aWNvcyBleGliaW5kbyBvCi1jb25mbGl0bzsKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBkaWZmCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdmFpIGV4aWJpciBpc3RvLiBBcMOzcyB2b2PDqiBlZGl0YXIgb3MgYXJxdWl2b3MgcGFyYSByZXNvbHZlciBvcwotY29uZmxpdG9zLAotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgZ2l0IGNvbW1pdCAtYQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWlyw6EgZ3JhdmFyIG8gcmVzdWx0YWRvIGRhIHVuaWZpY2HDp8Ojby4gRmluYWxtZW50ZSwKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdGsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi12YWkgbW9zdHJhciB1bWEgYmVsYSByZXByZXNlbnRhw6fDo28gZ3LDoWZpY2EgZGEgaGlzdMOzcmlhIHJlc3VsdGFudGUuCi0KLU5lc3RlIHBvbnRvIHZvY8OqIHBvZGUgcmVtb3ZlciBzZXUgcmFtbyBleHBlcmltZW50YWwgY29tCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgYnJhbmNoIC1kIGV4cGVyaW1lbnRhbAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUVzdGUgY29tYW5kbyBnYXJhbnRlIHF1ZSBhcyBtdWRhbsOnYXMgbm8gcmFtbyBleHBlcmltZW50YWwgasOhIGVzdMOjbyBubwotcmFtbyBhdHVhbC4KLQotU2Ugdm9jw6ogZGVzZW52b2x2ZSBlbSB1bSByYW1vIGlkZWlhLWxvdWNhLCBlIHNlIGFycmVwZW5kZSwgdm9jw6ogcG9kZQotc2VtcHJlIHJlbW92ZXIgbyByYW1vIGNvbQotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBicmFuY2ggLUQgaWRlaWEtbG91Y2EKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotUmFtb3Mgc8OjbyBiYXJhdG9zIGUgZsOhY2VpcywgZW50w6NvIGlzdG8gw6kgdW1hIGJvYSBtYW5laXJhIGRlIGV4cGVyaW1lbnRhcgotYWxndW1hIGNvaXNhLgotCi1Vc2FuZG8gZ2l0IHBhcmEgY29sYWJvcmHDp8OjbwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVN1cG9uaGEgcXVlIEFsaWNlIGNvbWXDp291IHVtIG5vdm8gcHJvamV0byBjb20gdW0gcmVwb3NpdMOzcmlvIGdpdCBlbQotL2hvbWUvYWxpY2UvcHJvamVjdCwgZSBxdWUgQm9iLCBxdWUgdGVtIHVtIGRpcmV0w7NyaW8gaG9tZSBuYSBtZXNtYQotbcOhcXVpbmEsIHF1ZXIgY29udHJpYnVpci4KLQotQm9iIGNvbWXDp2EgY29tOgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWJvYiQgZ2l0IGNsb25lIC9ob21lL2FsaWNlL3Byb2plY3QgbXlyZXBvCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSXNzbyBjcmlhIHVtIG5vdm8gZGlyZXTDs3JpbyAibXlyZXBvIiBjb250ZW5kbyB1bSBjbG9uZSBkbyByZXBvc2l0w7NyaW8gZGUKLUFsaWNlLiBPIGNsb25lIGVzdMOhIG5vIG1lc21vIHDDqSBxdWUgbyBwcm9qZXRvIG9yaWdpbmFsLCBwb3NzdWluZG8gc3VhCi1wcsOzcHJpYSBjw7NwaWEgZGEgaGlzdMOzcmlhIGRvIHByb2pldG8gb3JpZ2luYWwuCi0KLUJvYiBlbnTDo28gZmF6IGFsZ3VtYXMgbXVkYW7Dp2FzIGUgYXMgZ3JhdmE6Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKGVkaXRhciBhcnF1aXZvcykKLWJvYiQgZ2l0IGNvbW1pdCAtYQotKHJlcGV0aXIgY29uZm9ybWUgbmVjZXNzw6FyaW8pCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotUXVhbnRvIGVzdMOhIHByb250bywgZWxlIGRpeiBhIEFsaWNlIHBhcmEgcHV4YXIgYXMgbXVkYW7Dp2FzIGRvCi1yZXBvc2l0w7NyaW8gZW0gL2hvbWUvYm9iL215cmVwby4gRWxhIG8gZmF6IGNvbToKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1hbGljZSQgY2QgL2hvbWUvYWxpY2UvcHJvamVjdAotYWxpY2UkIGdpdCBwdWxsIC9ob21lL2JvYi9teXJlcG8gbWFzdGVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSXN0byB1bmlmaWNhIGFzIG11ZGFuw6dhcyBkbyByYW1vICJtYXN0ZXIiIGRvIEJvYiBhbyByYW1vIGF0dWFsIGRlIEFsaWNlLgotU2UgQWxpY2UgZmV6IHN1YXMgcHLDs3ByaWFzIG11ZGFuw6dhcyBubyBpbnRlcnZhbG8sIGVsYSwgZW50w6NvLCBwb2RlCi1wcmVjaXNhciBjb3JyaWdpciBtYW51YWxtZW50ZSBxdWFpc3F1ZXIgY29uZmxpdG9zLiAoTm90ZSBxdWUgbyBhcmd1bWVudG8KLSJtYXN0ZXIiIG5vIGNvbWFuZG8gYWNpbWEgw6ksIGRlIGZhdG8sIGRlc25lY2Vzc8OhcmlvLCBqw6EgcXVlIMOpIG8gcGFkcsOjby4pCi0KLU8gY29tYW5kbyAicHVsbCIgZXhlY3V0YSwgZW50w6NvLCBkdWFzIG9wZXJhw6fDtWVzOiBlbGUgb2J0w6ltIG11ZGFuw6dhcyBkZQotdW0gcmFtbyByZW1vdG8sIGUsIGVudMOjbywgYXMgdW5pZmljYSBubyByYW1vIGF0dWFsLgotCi1Ob3RlIHF1ZSwgZW0gZ2VyYWwsIEFsaWNlIGdvc3RhcmlhIHF1ZSBzdWFzIG11ZGFuw6dhcyBsb2NhaXMgZm9zc2VtCi1ncmF2YWRhcyBhbnRlcyBkZSBpbmljaWFyIGVzdGUgInB1bGwiLiBTZSBvIHRyYWJhbGhvIGRlIEJvYiBjb25mbGl0YQotY29tIG8gcXVlIEFsaWNlIGZleiBkZXNkZSBxdWUgc3VhcyBoaXN0w7NyaWFzIHNlIHJhbWlmaWNhcmFtLCBBbGljZSBpcsOhCi11c2FyIHNldSBkaXJldMOzcmlvIGRlIHRyYWJhbGhvIGUgbyDDrW5kaWNlIHBhcmEgcmVzb2x2ZXIgY29uZmxpdG9zLCBlCi1tdWRhbsOnYXMgbG9jYWlzIGV4aXN0ZW50ZXMgaXLDo28gaW50ZXJmZXJpciBjb20gbyBwcm9jZXNzbyBkZSByZXNvbHXDp8OjbwotZGUgY29uZmxpdG9zIChnaXQgYWluZGEgaXLDoSByZWFsaXphciBhIG9idGVuw6fDo28gbWFzIGlyw6Egc2UgcmVjdXNhciBhCi11bmlmaWNhciAtLS0gQWxpY2UgdGVyw6EgcXVlIHNlIGxpdnJhciBkZSBzdWFzIG11ZGFuw6dhcyBsb2NhaXMgZGUgYWxndW1hCi1mb3JtYSBlIHB1eGFyIGRlIG5vdm8gcXVhbmRvIGlzc28gYWNvbnRlY2VyKS4KLQotQWxpY2UgcG9kZSBlc3BpYXIgbyBxdWUgQm9iIGZleiBzZW0gdW5pZmljYXIgcHJpbWVpcm8sIHVzYW5kbyBvIGNvbWFuZG8KLSJmZXRjaCI7IGlzdG8gcGVybWl0ZSBBbGljZSBpbnNwZWNpb25hciBvIHF1ZSBCb2IgZmV6LCB1c2FuZG8gdW0gc8OtbWJvbG8KLWVzcGVjaWFsICJGRVRDSF9IRUFEIiwgY29tIG8gZmltIGRlIGRldGVybWluYXIgc2UgZWxlIHRlbSBhbGd1bWEgY29pc2EKLXF1ZSB2YWxlIHB1eGFyLCBhc3NpbToKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1hbGljZSQgZ2l0IGZldGNoIC9ob21lL2JvYi9teXJlcG8gbWFzdGVyCi1hbGljZSQgZ2l0IGxvZyAtcCBIRUFELi5GRVRDSF9IRUFECi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotRXN0YSBvcGVyYcOnw6NvIMOpIHNlZ3VyYSBtZXNtbyBzZSBBbGljZSB0ZW0gbXVkYW7Dp2FzIGxvY2FpcyBuw6NvIGdyYXZhZGFzLgotQSBub3Rhw6fDo28gZGUgaW50ZXJ2YWxvICJIRUFELi5GRVRDSF9IRUFEIiBzaWduaWZpY2EgbW9zdHJhciB0dWRvIHF1ZSDDqQotYWxjYW7Dp8OhdmVsIGRlIEZFVENIX0hFQUQgbWFzIGV4Y2x1YSB0dWRvIG8gcXVlIMOpIGFsY2Fuw6fDoXZlbCBkZSBIRUFELgotQWxpY2UgasOhIHNhYmUgdHVkbyBxdWUgbGV2YSBhIHNldSBlc3RhZG8gYXR1YWwgKEhFQUQpLCBlIHJldmlzYSBvIHF1ZSBCb2IKLXRlbSBlbSBzZXUgZXN0YWRvIChGRVRDSF9IRUFEKSBxdWUgZWxhIGFpbmRhIG7Do28gdml1IGNvbSBlc3NlIGNvbWFuZG8uCi0KLVNlIEFsaWNlIHF1ZXIgdmlzdWFsaXphciBvIHF1ZSBCb2IgZmV6IGRlc2RlIHF1ZSBzdWFzIGhpc3TDs3JpYXMgc2UKLXJhbWlmaWNhcmFtLCBlbGEgcG9kZSBkaXNwYXJhciBvIHNlZ3VpbnRlIGNvbWFuZG86Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXRrIEhFQUQuLkZFVENIX0hFQUQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Jc3RvIHVzYSBhIG1lc21hIG5vdGHDp8OjbyBkZSBpbnRlcnZhbG8gcXVlIHZpbW9zIGFudGVzIGNvbSAnZ2l0IGxvZycuCi0KLUFsaWNlIHBvZGUgcXVlcmVyIHZlciBvIHF1ZSBhbWJvcyBmaXplcmFtIGRlc2RlIHF1ZSByYW1pZmljYXJhbS4gRWxhCi1wb2RlIHVzYXIgYSBmb3JtYSBjb20gdHLDqnMgcG9udG9zIGFvIGludsOpcyBkYSBmb3JtYSBjb20gZG9pcyBwb250b3M6Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXRrIEhFQUQuLi5GRVRDSF9IRUFECi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSXN0byBzaWduaWZpY2EgIm1vc3RyZSB0dWRvIHF1ZSDDqSBhbGNhbsOnw6F2ZWwgZGUgcXVhbHF1ZXIgdW0gZGVsZXMsIG1hcwotZXhjbHVhIHR1ZG8gcXVlIMOpIGFsY2Fuw6fDoXZlbCBhIHBhcnRpciBkZSBhbWJvcyIuCi0KLVBvciBmYXZvciwgbm90ZSBxdWUgZXNzYXMgbm90YcOnw7VlcyBkZSBpbnRlcnZhbG8gcG9kZW0gc2VyIHVzYWRhcyB0YW50bwotY29tIGdpdGsgcXVhbnRvIGNvbSAiZ2l0IGxvZyIuCi0KLUFww7NzIGluc3BlY2lvbmFyIG8gcXVlIEJvYiBmZXosIHNlIG7Do28gaMOhIG5hZGEgdXJnZW50ZSwgQWxpY2UgcG9kZQotZGVjaWRpciBjb250aW51YXIgdHJhYmFsaGFuZG8gc2VtIHB1eGFyIGRlIEJvYi4gU2UgYSBoaXN0w7NyaWEgZGUgQm9iCi10ZW0gYWxndW1hIGNvaXNhIHF1ZSBBbGljZSBwcmVjaXNhIGltZWRpYXRhbWVudGUsIEFsaWNlIHBvZGUgb3B0YXIgcG9yCi1zZXBhcmFyIHNldSB0cmFiYWxobyBlbSBwcm9ncmVzc28gcHJpbWVpcm8sIGZhemVyIHVtICJwdWxsIiwgZSwgZW50w6NvLAotZmluYWxtZW50ZSwgcmV0b21hciBzZXUgdHJhYmFsaG8gZW0gcHJvZ3Jlc3NvIGVtIGNpbWEgZGEgaGlzdMOzcmlhCi1yZXN1bHRhbnRlLgotCi1RdWFuZG8gdm9jw6ogZXN0w6EgdHJhYmFsaGFuZG8gZW0gdW0gcGVxdWVubyBncnVwbyB1bmlkbywgbsOjbyDDqSBpbmNvbXVtCi1pbnRlcmFnaXIgY29tIG8gbWVzbW8gcmVwb3NpdMOzcmlvIHbDoXJpYXMgZSB2w6FyaWFzIHZlemVzLiBEZWZpbmluZG8gdW0KLXJlcG9zaXTDs3JpbyByZW1vdG8gYW50ZXMgZGUgdHVkbywgdm9jw6ogcG9kZSBmYXrDqi1sbyBtYWlzIGZhY2lsbWVudGU6Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotYWxpY2UkIGdpdCByZW1vdGUgYWRkIGJvYiAvaG9tZS9ib2IvbXlyZXBvCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotQ29tIGlzc28sIEFsaWNlIHBvZGUgZXhlY3V0YXIgYSBwcmltZWlyYSBwYXJ0ZSBkYSBvcGVyYcOnw6NvICJwdWxsIiB1c2FuZG8KLW8gY29tYW5kbyAnZ2l0LWZldGNoJyBzZW0gdW5pZmljYXIgc3VhcyBtdWRhbsOnYXMgY29tIHNldSBwcsOzcHJpbyByYW1vLAotdXNhbmRvOgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1hbGljZSQgZ2l0IGZldGNoIGJvYgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1EaWZlcmVudGUgZGEgZm9ybWEgbG9uZ2EsIHF1YW5kbyBBbGljZSBvYnRldmUgZGUgQm9iIHVzYW5kbyB1bQotcmVwb3NpdMOzcmlvIHJlbW90byBhbnRlcyBkZWZpbmlkbyBjb20gJ2dpdC1yZW1vdGUnLCBvIHF1ZSBmb2kgb2J0aWRvIMOpCi1hcm1hemVuYWRvIGVtIHVtIHJhbW8gcmVtb3RvLCBuZXN0ZSBjYXNvIGBib2IvbWFzdGVyYC4gRW50w6NvLCBhcMOzcyBpc3NvOgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1hbGljZSQgZ2l0IGxvZyAtcCBtYXN0ZXIuLmJvYi9tYXN0ZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbW9zdHJhIHVtYSBsaXN0YSBkZSB0b2RhcyBhcyBtdWRhbsOnYXMgcXVlIEJvYiBmZXogZGVzZGUgcXVlIHJhbWlmaWNvdSBkbwotcmFtbyBtYXN0ZXIgZGUgQWxpY2UuCi0KLUFww7NzIGV4YW1pbmFyIGVzc2FzIG11ZGFuw6dhcywgQWxpY2UgcG9kZSB1bmlmaWPDoS1sYXMgZW0gc2V1IHJhbW8gbWFzdGVyOgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1hbGljZSQgZ2l0IG1lcmdlIGJvYi9tYXN0ZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotRXNzZSBgbWVyZ2VgIHBvZGUgdGFtYsOpbSBzZXIgZmVpdG8gcHV4YW5kbyBkZSBzZXUgcHLDs3ByaW8gcmFtbyByZW1vdG8sCi1hc3NpbToKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotYWxpY2UkIGdpdCBwdWxsIC4gcmVtb3Rlcy9ib2IvbWFzdGVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLU5vdGUgcXVlICdnaXQgcHVsbCcgc2VtcHJlIHVuaWZpY2EgYW8gcmFtbyBhdHVhbCwgaW5kZXBlbmRlbnRlIGRvIHF1ZQotbWFpcyBmb2kgcGFzc2FkbyBuYSBsaW5oYSBkZSBjb21hbmRvLgotCi1EZXBvaXMsIEJvYiBwb2RlIGF0dWFsaXphciBzZXUgcmVwb3NpdMOzcmlvIGNvbSBhcyDDumx0aW1hcyBtdWRhbsOnYXMgZGUKLUFsaWNlLCB1c2FuZG8KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotYm9iJCBnaXQgcHVsbAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Ob3RlIHF1ZSBlbGUgbsOjbyBwcmVjaXNhIGRhciBvIGNhbWluaG8gZG8gcmVwb3NpdMOzcmlvIGRlIEFsaWNlOyBxdWFuZG8KLUJvYiBjbG9ub3Ugc2V1IHJlcG9zaXTDs3JpbywgbyBnaXQgYXJtYXplbm91IGEgbG9jYWxpemHDp8OjbyBkZSBzZXUKLXJlcG9zaXTDs3JpbyBuYSBjb25maWd1cmHDp8OjbyBkbyBtZXNtbywgZSBlc3NhIGxvY2FsaXphw6fDo28gw6kgdXNhZGEKLXBhcmEgcHV4YXI6Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWJvYiQgZ2l0IGNvbmZpZyAtLWdldCByZW1vdGUub3JpZ2luLnVybAotL2hvbWUvYWxpY2UvcHJvamVjdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0oQSBjb25maWd1cmHDp8OjbyBjb21wbGV0YSBjcmlhZGEgcG9yICdnaXQtY2xvbmUnIMOpIHZpc8OtdmVsIHVzYW5kbyBgZ2l0Ci1jb25maWcgLWxgLCBlIGEgcMOhZ2luYSBkZSBtYW51YWwgbGlua2dpdDpnaXQtY29uZmlnWzFdIGV4cGxpY2Egbwotc2lnbmlmaWNhZG8gZGUgY2FkYSBvcMOnw6NvLikKLQotR2l0IHRhbWLDqW0gbWFudMOpbSB1bWEgY8OzcGlhIGxpbXBhIGRvIHJhbW8gbWFzdGVyIGRlIEFsaWNlIHNvYiBvIG5vbWUKLSJvcmlnaW4vbWFzdGVyIjoKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotYm9iJCBnaXQgYnJhbmNoIC1yCi0gIG9yaWdpbi9tYXN0ZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotU2UgQm9iIGRlY2lkaXIgZGVwb2lzIGVtIHRyYWJhbGhhciBlbSB1bSBob3N0IGRpZmVyZW50ZSwgZWxlIGFpbmRhIHBvZGUKLWV4ZWN1dGFyIGNsb25lcyBlIHB1eGFyIHVzYW5kbyBvIHByb3RvY29sbyBzc2g6Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWJvYiQgZ2l0IGNsb25lIGFsaWNlLm9yZzovaG9tZS9hbGljZS9wcm9qZWN0IG15cmVwbwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1BbHRlcm5hdGl2YW1lbnRlLCBvIGdpdCB0ZW0gdW0gcHJvdG9jb2xvIG5hdGl2bywgb3UgcG9kZSB1c2FyIHJzeW5jIG91Ci1odHRwOyB2ZWphIGxpbmtnaXQ6Z2l0LXB1bGxbMV0gcGFyYSBkZXRhbGhlcy4KLQotR2l0IHBvZGUgdGFtYsOpbSBzZXIgdXNhZG8gZW0gdW0gbW9kbyBwYXJlY2lkbyBjb20gQ1ZTLCBjb20gdW0KLXJlcG9zaXTDs3JpbyBjZW50cmFsIHBhcmEgbyBxdWFsIHbDoXJpb3MgdXN1w6FyaW9zIGVtcHVycmFtIG1vZGlmaWNhw6fDtWVzOwotdmVqYSBsaW5rZ2l0OmdpdC1wdXNoWzFdIGUgbGlua2dpdDpnaXRjdnMtbWlncmF0aW9uWzddLgotCi1FeHBsb3JhbmRvIGhpc3TDs3JpYQotLS0tLS0tLS0tLS0tLS0tLS0KLQotQSBoaXN0w7NyaWEgbm8gZ2l0IMOpIHJlcHJlc2VudGFkYSBjb21vIHVtYSBzw6lyaWUgZGUgY29tbWl0cwotaW50ZXJyZWxhY2lvbmFkb3MuIE7Ds3MgasOhIHZpbW9zIHF1ZSBvIGNvbWFuZG8gJ2dpdC1sb2cnIHBvZGUgbGlzdGFyCi1lc3NlcyBjb21taXRzLiBOb3RlIHF1ZSBhIHByaW1laXJhIGxpbmhhIGRlIGNhZGEgZW50cmFkYSBubyBsb2cgdGFtYsOpbQotZMOhIG8gbm9tZSBwYXJhIG8gY29tbWl0OgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBsb2cKLWNvbW1pdCBjODJhMjJjMzljYmMzMjU3NmY2NGY1YzZiM2YyNGI5OWVhODE0OWM3Ci1BdXRob3I6IEp1bmlvIEMgSGFtYW5vIDxqdW5raW9AY294Lm5ldD4KLURhdGU6ICAgVHVlIE1heSAxNiAxNzoxODoyMiAyMDA2IC0wNzAwCi0KLSAgICBtZXJnZS1iYXNlOiBDbGFyaWZ5IHRoZSBjb21tZW50cyBvbiBwb3N0IHByb2Nlc3NpbmcuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLU7Ds3MgcG9kZW1vcyBkYXIgZXN0ZSBub21lIGFvICdnaXQtc2hvdycgcGFyYSB2ZXIgb3MgZGV0YWxoZXMgc29icmUgZXN0ZQotY29tbWl0LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBzaG93IGM4MmEyMmMzOWNiYzMyNTc2ZjY0ZjVjNmIzZjI0Yjk5ZWE4MTQ5YzcKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotTWFzIGjDoSBvdXRyYXMgZm9ybWFzIGRlIHNlIHJlZmVyaXIgYW9zIGNvbW1pdHMuIFZvY8OqIHBvZGUgdXNhciBxdWFscXVlcgotcGFydGUgaW5pY2lhbCBkbyBub21lIHF1ZSBzZWphIGxvbmdvIG8gYmFzdGFudGUgcGFyYSBpZGVudGlmaWNhcgotdW5pY2FtZW50ZSBvIGNvbW1pdDoKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgc2hvdyBjODJhMjJjMzljCSMgb3MgcHJpbWVpcm9zIGNhcmFjdGVyZXMgZG8gbm9tZSBzw6NvIG8gYmFzdGFudGUKLQkJCSMgdXN1YWxtZW50ZQotJCBnaXQgc2hvdyBIRUFECQkjIGEgcG9udGEgZG8gcmFtbyBhdHVhbAotJCBnaXQgc2hvdyBleHBlcmltZW50YWwJIyBhIHBvbnRhIGRvIHJhbW8gImV4cGVyaW1lbnRhbCIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotVG9kbyBjb21taXQgbm9ybWFsbWVudGUgdGVtIHVtIGNvbW1pdCAicGFpIiBxdWUgYXBvbnRhIHBhcmEgbyBlc3RhZG8KLWFudGVyaW9yIGRvIHByb2pldG86Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgZ2l0IHNob3cgSEVBRF4gICMgcGFyYSB2ZXIgbyBwYWkgZGUgSEVBRAotJCBnaXQgc2hvdyBIRUFEXl4gIyBwYXJhIHZlciBvIGF2w7QgZGUgSEVBRAotJCBnaXQgc2hvdyBIRUFEfjQgIyBwYXJhIHZlciBvIHRyaXNhdsO0IGRlIEhFQUQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotTm90ZSBxdWUgY29tbWl0cyBkZSB1bmlmaWNhw6fDo28gcG9kZW0gdGVyIG1haXMgZGUgdW0gcGFpOgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBzaG93IEhFQUReMSAjIG1vc3RyYSBvIHByaW1laXJvIHBhaSBkZSBIRUFEIChvIG1lc21vIHF1ZSBIRUFEXikKLSQgZ2l0IHNob3cgSEVBRF4yICMgbW9zdHJhIG8gc2VndW5kbyBwYWkgZGUgSEVBRAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Wb2PDqiB0YW1iw6ltIHBvZGUgZGFyIGFvcyBjb21taXRzIG5vbWVzIMOgIHN1YSBlc2NvbGhhOyBhcMOzcyBleGVjdXRhcgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCB0YWcgdjIuNSAxYjJlMWQ2M2ZmCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXZvY8OqIHBvZGUgc2UgcmVmZXJpciBhIDFiMmUxZDYzZmYgcGVsbyBub21lICJ2Mi41Ii4gU2Ugdm9jw6ogcHJldGVuZGUKLWNvbXBhcnRpbGhhciBlc3NlIG5vbWUgY29tIG91dHJhcyBwZXNzb2FzIChwb3IgZXhlbXBsbywgcGFyYSBpZGVudGlmaWNhcgotdW1hIHZlcnPDo28gZGUgbGFuw6dhbWVudG8pLCB2b2PDqiBkZXZlcmlhIGNyaWFyIHVtIG9iamV0byAidGFnIiwgZSB0YWx2ZXoKLWFzc2luw6EtbG87IHZlamEgbGlua2dpdDpnaXQtdGFnWzFdIHBhcmEgZGV0YWxoZXMuCi0KLVF1YWxxdWVyIGNvbWFuZG8gZ2l0IHF1ZSBwcmVjaXNlIGNvbmhlY2VyIHVtIGNvbW1pdCBwb2RlIHJlY2ViZXIKLXF1YWlzcXVlciBkZXNzZXMgbm9tZXMuIFBvciBleGVtcGxvOgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBkaWZmIHYyLjUgSEVBRAkgIyBjb21wYXJhIG8gSEVBRCBhdHVhbCBjb20gdjIuNQotJCBnaXQgYnJhbmNoIHN0YWJsZSB2Mi41ICMgaW5pY2lhIHVtIG5vdm8gcmFtbyBjaGFtYWRvICJzdGFibGUiIGJhc2VhZG8KLQkJCSAjIGVtIHYyLjUKLSQgZ2l0IHJlc2V0IC0taGFyZCBIRUFEXiAjIHJlc2V0YSBzZXUgcmFtbyBhdHVhbCBlIHNldSBkaXJldMOzcmlvIGRlCi0JCQkgIyB0cmFiYWxobyBhIHNldSBlc3RhZG8gZW0gSEVBRF4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotU2VqYSBjdWlkYWRvc28gY29tIG8gw7psdGltbyBjb21hbmRvOiBhbMOpbSBkZSBwZXJkZXIgcXVhaXNxdWVyIG11ZGFuw6dhcwotZW0gc2V1IGRpcmV0w7NyaW8gZGUgdHJhYmFsaG8sIGVsZSB0YW1iw6ltIHJlbW92ZSB0b2RvcyBvcyBjb21taXRzCi1wb3N0ZXJpb3JlcyBkZXNzZSByYW1vLiBTZSBlc3NlIHJhbW8gw6kgbyDDum5pY28gcmFtbyBjb250ZW5kbyBlc3NlcwotY29tbWl0cywgZWxlcyBzZXLDo28gcGVyZGlkb3MuIFRhbWLDqW0sIG7Do28gdXNlICdnaXQtcmVzZXQnIG51bSByYW1vCi1wdWJsaWNhbWVudGUgdmlzw612ZWwgZGUgb25kZSBvdXRyb3MgZGVzZW52b2x2ZWRvcmVzIHB1eGFtLCBqw6EgcXVlIHZhaQotZm9yw6dhciB1bmlmaWNhw6fDtWVzIGRlc25lY2Vzc8OhcmlhcyBwYXJhIHF1ZSBvdXRyb3MgZGVzZW52b2x2ZWRvcmVzIGxpbXBlbQotYSBoaXN0w7NyaWEuIFNlIHZvY8OqIHByZWNpc2EgZGVzZmF6ZXIgbXVkYW7Dp2FzIHF1ZSB2b2PDqiBlbXB1cnJvdSwgdXNlCi0nZ2l0LXJldmVydCcgbm8gbHVnYXIuCi0KLU8gY29tYW5kbyAnZ2l0LWdyZXAnIHBvZGUgYnVzY2FyIHN0cmluZ3MgZW0gcXVhbHF1ZXIgdmVyc8OjbyBkZSBzZXUKLXByb2pldG8sIGVudMOjbwotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBncmVwICJoZWxsbyIgdjIuNQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1wcm9jdXJhIHBvciB0b2RhcyBhcyBvY29ycsOqbmNpYXMgZGUgImhlbGxvIiBlbSB2Mi41LgotCi1TZSB2b2PDqiBkZWl4YXIgZGUgZm9yYSBvIG5vbWUgZG8gY29tbWl0LCAnZ2l0LWdyZXAnIGlyw6EgcHJvY3VyYXIKLXF1YWlzcXVlciBkb3MgYXJxdWl2b3MgcXVlIGVsZSBnZXJlbmNpYSBubyBkaXJldMOzcmlvIGNvcnJlbnRlLiBFbnTDo28KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgZ3JlcCAiaGVsbG8iCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLcOpIHVtYSBmb3JtYSByw6FwaWRhIGRlIGJ1c2NhciBzb21lbnRlIG9zIGFycXVpdm9zIHF1ZSBzw6NvIHJhc3RyZWFkb3MgcGVsbwotZ2l0LgotCi1NdWl0b3MgY29tYW5kb3MgZ2l0IHRhbWLDqW0gcmVjZWJlbSB1bSBjb25qdW50byBkZSBjb21taXRzLCBvIHF1ZSBwb2RlCi1zZXIgZXNwZWNpZmljYWRvIGRlIHbDoXJpYXMgZm9ybWFzLiBBcXVpIGVzdMOjbyBhbGd1bnMgZXhlbXBsb3MgY29tICdnaXQtbG9nJzoKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgbG9nIHYyLjUuLnYyLjYgICAgICAgICAgICAjIGNvbW1pdHMgZW50cmUgdjIuNSBlIHYyLjYKLSQgZ2l0IGxvZyB2Mi41Li4gICAgICAgICAgICAgICAgIyBjb21taXRzIGRlc2RlIHYyLjUKLSQgZ2l0IGxvZyAtLXNpbmNlPSIyIHdlZWtzIGFnbyIgIyBjb21taXRzIGRhcyDDumx0aW1hcyAyIHNlbWFuYXMKLSQgZ2l0IGxvZyB2Mi41Li4gTWFrZWZpbGUgICAgICAgIyBjb21taXRzIGRlc2RlIHYyLjUgcXVlIG1vZGlmaWNhbQotCQkJCSMgTWFrZWZpbGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotVm9jw6ogdGFtYsOpbSBwb2RlIGRhciBhbyAnZ2l0LWxvZycgdW0gImludGVydmFsbyIgZGUgY29tbWl0cyBvbmRlIG8KLXByaW1laXJvIG7Do28gw6kgbmVjZXNzYXJpYW1lbnRlIHVtIGFuY2VzdHJhbCBkbyBzZWd1bmRvOyBwb3IgZXhlbXBsbywgc2UKLWFzIHBvbnRhcyBkb3MgcmFtb3MgInN0YWJsZSIgZSAibWFzdGVyIiBkaXZlcmdpcmFtIGRlIHVtIGNvbW1pdAotY29tdW0gYWxndW0gdGVtcG8gYXRyw6FzLCBlbnTDo28KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgbG9nIHN0YWJsZS4ubWFzdGVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWlyw6EgbGlzdGFyIG9zIGNvbW1pdHMgZmVpdG9zIG5vIHJhbW8gIm1hc3RlciIgbWFzIG7Do28gbm8gcmFtbwotInN0YWJsZSIsIGVucXVhbnRvCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgZ2l0IGxvZyBtYXN0ZXIuLnN0YWJsZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1pcsOhIGxpc3RhciBhIGxpc3RhIGRlIGNvbW1pdHMgZmVpdG9zIG5vIHJhbW8gInN0YWJsZSIgbWFzIG7Do28gbm8gcmFtbwotIm1hc3RlciIuCi0KLU8gY29tYW5kbyAnZ2l0LWxvZycgdGVtIHVtYSBmcmFxdWV6YTogZWxlIHByZWNpc2EgbW9zdHJhciBvcyBjb21taXRzIGVtCi11bWEgbGlzdGEuIFF1YW5kbyBhIGhpc3TDs3JpYSB0ZW0gbGluaGFzIGRlIGRlc2Vudm9sdmltZW50byBxdWUKLWRpdmVyZ2lyYW0gZSBlbnTDo28gZm9yYW0gdW5pZmljYWRhcyBub3ZhbWVudGUsIGEgb3JkZW0gZW0gcXVlICdnaXQtbG9nJwotYXByZXNlbnRhIGVzc2FzIG11ZGFuw6dhcyDDqSBpcnJlbGV2YW50ZS4KLQotQSBtYWlvcmlhIGRvcyBwcm9qZXRvcyBjb20gbcO6bHRpcGxvcyBjb250cmlidWlkb3JlcyAoY29tbyBvIGtlcm5lbAotTGludXgsIG91IG8gcHLDs3ByaW8gZ2l0KSB0ZW0gdW5pZmljYcOnw7VlcyBmcmVxdWVudGVzLCBlICdnaXRrJyBmYXogdW0KLXRyYWJhbGhvIG1lbGhvciBkZSB2aXN1YWxpemFyIHN1YSBoaXN0w7NyaWEuIFBvciBleGVtcGxvLAotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdGsgLS1zaW5jZT0iMiB3ZWVrcyBhZ28iIGRyaXZlcnMvCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXBlcm1pdGUgYSB2b2PDqiBuYXZlZ2FyIGVtIHF1YWlzcXVlciBjb21taXRzIGRlc2RlIGFzIMO6bHRpbWFzIGR1YXMgc2VtYW5hcwotZGUgY29tbWl0cyBxdWUgbW9kaWZpY2FyYW0gYXJxdWl2b3Mgc29iIG8gZGlyZXTDs3JpbyAiZHJpdmVycyIuIChOb3RhOgotdm9jw6ogcG9kZSBhanVzdGFyIGFzIGZvbnRlcyBkbyBnaXRrIHNlZ3VyYW5kbyBhIHRlY2xhIGNvbnRyb2wgZW5xdWFudG8KLXByZXNzaW9uYSAiLSIgb3UgIisiLikKLQotRmluYWxtZW50ZSwgYSBtYWlvcmlhIGRvcyBjb21hbmRvcyBxdWUgcmVjZWJlbSBub21lcyBkZSBhcnF1aXZvIHBlcm1pdGlyw6NvCi10YW1iw6ltLCBvcGNpb25hbG1lbnRlLCBwcmVjZWRlciBxdWFscXVlciBub21lIGRlIGFycXVpdm8gcG9yIHVtCi1jb21taXQsIHBhcmEgZXNwZWNpZmljYXIgdW1hIHZlcnPDo28gcGFydGljdWxhciBkbyBhcnF1aXZvOgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBkaWZmIHYyLjU6TWFrZWZpbGUgSEVBRDpNYWtlZmlsZS5pbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Wb2PDqiBwb2RlIHVzYXIgJ2dpdC1zaG93JyBwYXJhIHZlciB0YWwgYXJxdWl2bzoKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgc2hvdyB2Mi41Ok1ha2VmaWxlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVByw7N4aW1vcyBwYXNzb3MKLS0tLS0tLS0tLS0KLQotRXN0ZSB0dXRvcmlhbCBkZXZlIHNlciBvIGJhc3RhbnRlIHBhcmEgb3BlcmFyIGNvbnRyb2xlIGRlIHJldmlzw6NvCi1kaXN0cmlidcOtZG8gYsOhc2ljbyBwYXJhIHNldXMgcHJvamV0b3MuIE5vIGVudGFudG8sIHBhcmEgZW50ZW5kZXIKLXBsZW5hbWVudGUgYSBwcm9mdW5kaWRhZGUgZSBvIHBvZGVyIGRvIGdpdCB2b2PDqiBwcmVjaXNhIGVudGVuZGVyIGR1YXMKLWlkw6lpYXMgc2ltcGxlcyBuYXMgcXVhaXMgZWxlIHNlIGJhc2VpYToKLQotICAqIEEgYmFzZSBkZSBvYmpldG9zIMOpIHVtIHNpc3RlbWEgYmVtIGVsZWdhbnRlIHVzYWRvIHBhcmEgYXJtYXplbmFyIGEKLSAgICBoaXN0w7NyaWEgZGUgc2V1IHByb2pldG8tLWFycXVpdm9zLCBkaXJldMOzcmlvcywgZSBjb21taXRzLgotCi0gICogTyBhcnF1aXZvIGRlIMOtbmRpY2Ugw6kgdW0gY2FjaGUgZG8gZXN0YWRvIGRlIHVtYSDDoXJ2b3JlIGRlIGRpcmV0w7NyaW8sCi0gICAgdXNhZG8gcGFyYSBjcmlhciBjb21taXRzLCByZXN0YXVyYXIgZGlyZXTDs3Jpb3MgZGUgdHJhYmFsaG8sIGUKLSAgICBhcm1hemVuYXIgYXMgdsOhcmlhcyDDoXJ2b3JlcyBlbnZvbHZpZGFzIGVtIHVtYSB1bmlmaWNhw6fDo28uCi0KLUEgcGFydGUgZG9pcyBkZXN0ZSB0dXRvcmlhbCBleHBsaWNhIGEgYmFzZSBkZSBvYmpldG9zLCBvIGFycXVpdm8gZGUKLcOtbmRpY2UsIGUgYWxndW1hcyBvdXRyYXMgY29pc2luaGFzIHF1ZSB2b2PDqiB2YWkgcHJlY2lzYXIgcHJhIHVzYXIgbwotbcOheGltbyBkbyBnaXQuIFZvY8OqIHBvZGUgZW5jb250csOhLWxhIGVtIGxpbmtnaXQ6Z2l0dHV0b3JpYWwtMls3XS4KLQotU2Ugdm9jw6ogbsOjbyBxdWlzZXIgY29udGludWFyIGNvbSBvIHR1dG9yaWFsIGFnb3JhIG5lc3NlIG1vbWVudG8sIGFsZ3VtYXMKLW91dHJhcyBkaWdyZXNzw7VlcyBxdWUgcG9kZW0gc2VyIGludGVyZXNzYW50ZXMgbmVzdGUgcG9udG8gc8OjbzoKLQotICAqIGxpbmtnaXQ6Z2l0LWZvcm1hdC1wYXRjaFsxXSwgbGlua2dpdDpnaXQtYW1bMV06IEVzdGVzIGNvbnZlcnRlbQotICAgIHPDqXJpZXMgZGUgY29tbWl0cyBlbSBwYXRjaGVzIHBhcmEgZW1haWwsIGUgdmljZS12ZXJzYSwgw7p0ZWlzIHBhcmEKLSAgICBwcm9qZXRvcyBjb21vIG8ga2VybmVsIExpbnV4IHF1ZSBkZXBlbmRlbSBmb3J0ZW1lbnRlIGRlIHBhdGNoZXMKLSAgICBlbnZpYWRvcyBwb3IgZW1haWwuCi0KLSAgKiBsaW5rZ2l0OmdpdC1iaXNlY3RbMV06IFF1YW5kbyBow6EgdW1hIHJlZ3Jlc3PDo28gZW0gc2V1IHByb2pldG8sIHVtYQotICAgIGZvcm1hIGRlIHJhc3RyZWFyIHVtIGJ1ZyDDqSBwcm9jdXJhbmRvIHBlbGEgaGlzdMOzcmlhIHBhcmEgZW5jb250cmFyIG8KLSAgICBjb21taXQgY3VscGFkby4gR2l0IGJpc2VjdCBwb2RlIGFqdWRhciBhIGV4ZWN1dGFyIHVtYSBidXNjYSBiaW7DoXJpYQotICAgIHBvciBlc3NlIGNvbW1pdC4gRWxlIMOpIGludGVsaWdlbnRlIG8gYmFzdGFudGUgcGFyYSBleGVjdXRhciB1bWEKLSAgICBidXNjYSBwcsOzeGltYSBkYSDDs3RpbWEgbWVzbW8gbm8gY2FzbyBkZSB1bWEgaGlzdMOzcmlhIGNvbXBsZXhhCi0gICAgbsOjby1saW5lYXIgY29tIG11aXRvcyByYW1vcyB1bmlmaWNhZG9zLgotCi0gICogbGluazpldmVyeWRheS5odG1sW0dJVCBkaWFyaWFtZW50ZSBjb20gMjAgZSB0YW50b3MgY29tYW5kb3NdCi0KLSAgKiBsaW5rZ2l0OmdpdGN2cy1taWdyYXRpb25bN106IEdpdCBwYXJhIHVzdcOhcmlvcyBkZSBDVlMuCi0KLVZFSkEgVEFNQsOJTQotLS0tLS0tLS0KLWxpbmtnaXQ6Z2l0dHV0b3JpYWwtMls3XSwKLWxpbmtnaXQ6Z2l0Y3ZzLW1pZ3JhdGlvbls3XSwKLWxpbmtnaXQ6Z2l0Y29yZS10dXRvcmlhbFs3XSwKLWxpbmtnaXQ6Z2l0Z2xvc3NhcnlbN10sCi1saW5rZ2l0OmdpdC1oZWxwWzFdLAotbGluazpldmVyeWRheS5odG1sW2dpdCBkaWFyaWFtZW50ZV0sCi1saW5rOnVzZXItbWFudWFsLmh0bWxbTyBNYW51YWwgZG8gVXN1w6FyaW8gZ2l0XQotCi1HSVQKLS0tLQotUGFydGUgZGEgc3VpdGUgbGlua2dpdDpnaXRbMV0uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Jldi1saXN0LW9wdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9yZXYtbGlzdC1vcHRpb25zLnR4dAppbmRleCAxYWUzYzg5Li4zYmRiZjVlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Jldi1saXN0LW9wdGlvbnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vcmV2LWxpc3Qtb3B0aW9ucy50eHQKQEAgLTMsMTIgKzMsMjAgQEAKIAogQmVzaWRlcyBzcGVjaWZ5aW5nIGEgcmFuZ2Ugb2YgY29tbWl0cyB0aGF0IHNob3VsZCBiZSBsaXN0ZWQgdXNpbmcgdGhlCiBzcGVjaWFsIG5vdGF0aW9ucyBleHBsYWluZWQgaW4gdGhlIGRlc2NyaXB0aW9uLCBhZGRpdGlvbmFsIGNvbW1pdAotbGltaXRpbmcgbWF5IGJlIGFwcGxpZWQuIE5vdGUgdGhhdCB0aGV5IGFyZSBhcHBsaWVkIGJlZm9yZSBjb21taXQKLW9yZGVyaW5nIGFuZCBmb3JtYXR0aW5nIG9wdGlvbnMsIHN1Y2ggYXMgJy0tcmV2ZXJzZScuCitsaW1pdGluZyBtYXkgYmUgYXBwbGllZC4KKworVXNpbmcgbW9yZSBvcHRpb25zIGdlbmVyYWxseSBmdXJ0aGVyIGxpbWl0cyB0aGUgb3V0cHV0IChlLmcuCitgLS1zaW5jZT08ZGF0ZTE+YCBsaW1pdHMgdG8gY29tbWl0cyBuZXdlciB0aGFuIGA8ZGF0ZTE+YCwgYW5kIHVzaW5nIGl0Cit3aXRoIGAtLWdyZXA9PHBhdHRlcm4+YCBmdXJ0aGVyIGxpbWl0cyB0byBjb21taXRzIHdob3NlIGxvZyBtZXNzYWdlCitoYXMgYSBsaW5lIHRoYXQgbWF0Y2hlcyBgPHBhdHRlcm4+YCksIHVubGVzcyBvdGhlcndpc2Ugbm90ZWQuCisKK05vdGUgdGhhdCB0aGVzZSBhcmUgYXBwbGllZCBiZWZvcmUgY29tbWl0CitvcmRlcmluZyBhbmQgZm9ybWF0dGluZyBvcHRpb25zLCBzdWNoIGFzIGAtLXJldmVyc2VgLgogCiAtLQogCi0tbiAnbnVtYmVyJzo6CistPG51bWJlcj46OgorLW4gPG51bWJlcj46OgogLS1tYXgtY291bnQ9PG51bWJlcj46OgogCiAJTGltaXQgdGhlIG51bWJlciBvZiBjb21taXRzIHRvIG91dHB1dC4KQEAgLTM4LDIyICs0Niw0NCBAQAogLS1jb21taXR0ZXI9PHBhdHRlcm4+OjoKIAogCUxpbWl0IHRoZSBjb21taXRzIG91dHB1dCB0byBvbmVzIHdpdGggYXV0aG9yL2NvbW1pdHRlcgotCWhlYWRlciBsaW5lcyB0aGF0IG1hdGNoIHRoZSBzcGVjaWZpZWQgcGF0dGVybiAocmVndWxhciBleHByZXNzaW9uKS4KKwloZWFkZXIgbGluZXMgdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIHBhdHRlcm4gKHJlZ3VsYXIKKwlleHByZXNzaW9uKS4gIFdpdGggbW9yZSB0aGFuIG9uZSBgLS1hdXRob3I9PHBhdHRlcm4+YCwKKwljb21taXRzIHdob3NlIGF1dGhvciBtYXRjaGVzIGFueSBvZiB0aGUgZ2l2ZW4gcGF0dGVybnMgYXJlCisJY2hvc2VuIChzaW1pbGFybHkgZm9yIG11bHRpcGxlIGAtLWNvbW1pdHRlcj08cGF0dGVybj5gKS4KKworLS1ncmVwLXJlZmxvZz08cGF0dGVybj46OgorCisJTGltaXQgdGhlIGNvbW1pdHMgb3V0cHV0IHRvIG9uZXMgd2l0aCByZWZsb2cgZW50cmllcyB0aGF0CisJbWF0Y2ggdGhlIHNwZWNpZmllZCBwYXR0ZXJuIChyZWd1bGFyIGV4cHJlc3Npb24pLiBXaXRoCisJbW9yZSB0aGFuIG9uZSBgLS1ncmVwLXJlZmxvZ2AsIGNvbW1pdHMgd2hvc2UgcmVmbG9nIG1lc3NhZ2UKKwltYXRjaGVzIGFueSBvZiB0aGUgZ2l2ZW4gcGF0dGVybnMgYXJlIGNob3Nlbi4gIEl0IGlzIGFuCisJZXJyb3IgdG8gdXNlIHRoaXMgb3B0aW9uIHVubGVzcyBgLS13YWxrLXJlZmxvZ3NgIGlzIGluIHVzZS4KIAogLS1ncmVwPTxwYXR0ZXJuPjo6CiAKIAlMaW1pdCB0aGUgY29tbWl0cyBvdXRwdXQgdG8gb25lcyB3aXRoIGxvZyBtZXNzYWdlIHRoYXQKLQltYXRjaGVzIHRoZSBzcGVjaWZpZWQgcGF0dGVybiAocmVndWxhciBleHByZXNzaW9uKS4KKwltYXRjaGVzIHRoZSBzcGVjaWZpZWQgcGF0dGVybiAocmVndWxhciBleHByZXNzaW9uKS4gIFdpdGgKKwltb3JlIHRoYW4gb25lIGAtLWdyZXA9PHBhdHRlcm4+YCwgY29tbWl0cyB3aG9zZSBtZXNzYWdlCisJbWF0Y2hlcyBhbnkgb2YgdGhlIGdpdmVuIHBhdHRlcm5zIGFyZSBjaG9zZW4gKGJ1dCBzZWUKKwlgLS1hbGwtbWF0Y2hgKS4KKysKK1doZW4gYC0tc2hvdy1ub3Rlc2AgaXMgaW4gZWZmZWN0LCB0aGUgbWVzc2FnZSBmcm9tIHRoZSBub3RlcyBhcworaWYgaXQgaXMgcGFydCBvZiB0aGUgbG9nIG1lc3NhZ2UuCiAKIC0tYWxsLW1hdGNoOjoKIAlMaW1pdCB0aGUgY29tbWl0cyBvdXRwdXQgdG8gb25lcyB0aGF0IG1hdGNoIGFsbCBnaXZlbiAtLWdyZXAsCi0JLS1hdXRob3IgYW5kIC0tY29tbWl0dGVyIGluc3RlYWQgb2Ygb25lcyB0aGF0IG1hdGNoIGF0IGxlYXN0IG9uZS4KKwlpbnN0ZWFkIG9mIG9uZXMgdGhhdCBtYXRjaCBhdCBsZWFzdCBvbmUuCiAKIC1pOjoKIC0tcmVnZXhwLWlnbm9yZS1jYXNlOjoKIAogCU1hdGNoIHRoZSByZWdleHAgbGltaXRpbmcgcGF0dGVybnMgd2l0aG91dCByZWdhcmQgdG8gbGV0dGVycyBjYXNlLgogCistLWJhc2ljLXJlZ2V4cDo6CisKKwlDb25zaWRlciB0aGUgbGltaXRpbmcgcGF0dGVybnMgdG8gYmUgYmFzaWMgcmVndWxhciBleHByZXNzaW9uczsKKwl0aGlzIGlzIHRoZSBkZWZhdWx0LgorCiAtRTo6CiAtLWV4dGVuZGVkLXJlZ2V4cDo6CiAKQEAgLTY2LDYgKzk2LDExIEBACiAJQ29uc2lkZXIgdGhlIGxpbWl0aW5nIHBhdHRlcm5zIHRvIGJlIGZpeGVkIHN0cmluZ3MgKGRvbid0IGludGVycHJldAogCXBhdHRlcm4gYXMgYSByZWd1bGFyIGV4cHJlc3Npb24pLgogCistLXBlcmwtcmVnZXhwOjoKKworCUNvbnNpZGVyIHRoZSBsaW1pdGluZyBwYXR0ZXJucyB0byBiZSBQZXJsLWNvbXBhdGlibGUgcmVnZXhwLgorCVJlcXVpcmVzIGxpYnBjcmUgdG8gYmUgY29tcGlsZWQgaW4uCisKIC0tcmVtb3ZlLWVtcHR5OjoKIAogCVN0b3Agd2hlbiBhIGdpdmVuIHBhdGggZGlzYXBwZWFycyBmcm9tIHRoZSB0cmVlLgpAQCAtNTc4LDE2ICs2MTMsMzMgQEAKIAogQnkgZGVmYXVsdCwgdGhlIGNvbW1pdHMgYXJlIHNob3duIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlci4KIAotLS10b3BvLW9yZGVyOjoKLQotCVRoaXMgb3B0aW9uIG1ha2VzIHRoZW0gYXBwZWFyIGluIHRvcG9sb2dpY2FsIG9yZGVyIChpLmUuCi0JZGVzY2VuZGFudCBjb21taXRzIGFyZSBzaG93biBiZWZvcmUgdGhlaXIgcGFyZW50cykuCi0KIC0tZGF0ZS1vcmRlcjo6CisJU2hvdyBubyBwYXJlbnRzIGJlZm9yZSBhbGwgb2YgaXRzIGNoaWxkcmVuIGFyZSBzaG93biwgYnV0CisJb3RoZXJ3aXNlIHNob3cgY29tbWl0cyBpbiB0aGUgY29tbWl0IHRpbWVzdGFtcCBvcmRlci4KIAotCVRoaXMgb3B0aW9uIGlzIHNpbWlsYXIgdG8gJy0tdG9wby1vcmRlcicgaW4gdGhlIHNlbnNlIHRoYXQgbm8KLQlwYXJlbnQgY29tZXMgYmVmb3JlIGFsbCBvZiBpdHMgY2hpbGRyZW4sIGJ1dCBvdGhlcndpc2UgdGhpbmdzCi0JYXJlIHN0aWxsIG9yZGVyZWQgaW4gdGhlIGNvbW1pdCB0aW1lc3RhbXAgb3JkZXIuCistLXRvcG8tb3JkZXI6OgorCVNob3cgbm8gcGFyZW50cyBiZWZvcmUgYWxsIG9mIGl0cyBjaGlsZHJlbiBhcmUgc2hvd24sIGFuZAorCWF2b2lkIHNob3dpbmcgY29tbWl0cyBvbiBtdWx0aXBsZSBsaW5lcyBvZiBoaXN0b3J5CisJaW50ZXJtaXhlZC4KKysKK0ZvciBleGFtcGxlLCBpbiBhIGNvbW1pdCBoaXN0b3J5IGxpa2UgdGhpczoKKysKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC0tLTEtLS0tMi0tLS00LS0tLTcKKwlcCSAgICAgICBcCisJIDMtLS0tNS0tLS02LS0tLTgtLS0KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKword2hlcmUgdGhlIG51bWJlcnMgZGVub3RlIHRoZSBvcmRlciBvZiBjb21taXQgdGltZXN0YW1wcywgYGdpdAorcmV2LWxpc3RgIGFuZCBmcmllbmRzIHdpdGggYC0tZGF0ZS1vcmRlcmAgc2hvdyB0aGUgY29tbWl0cyBpbiB0aGUKK3RpbWVzdGFtcCBvcmRlcjogOCA3IDYgNSA0IDMgMiAxLgorKworV2l0aCBgLS10b3BvLW9yZGVyYCwgdGhleSB3b3VsZCBzaG93IDggNiA1IDMgNyA0IDIgMSAob3IgOCA3IDQgMiA2IDUKKzMgMSk7IHNvbWUgb2xkZXIgY29tbWl0cyBhcmUgc2hvd24gYmVmb3JlIG5ld2VyIG9uZXMgaW4gb3JkZXIgdG8KK2F2b2lkIHNob3dpbmcgdGhlIGNvbW1pdHMgZnJvbSB0d28gcGFyYWxsZWwgZGV2ZWxvcG1lbnQgdHJhY2sgbWl4ZWQKK3RvZ2V0aGVyLgogCiAtLXJldmVyc2U6OgogCkBAIC01OTcsNyArNjQ5LDcgQEAKIE9iamVjdCBUcmF2ZXJzYWwKIH5+fn5+fn5+fn5+fn5+fn4KIAotVGhlc2Ugb3B0aW9ucyBhcmUgbW9zdGx5IHRhcmdldGVkIGZvciBwYWNraW5nIG9mIGdpdCByZXBvc2l0b3JpZXMuCitUaGVzZSBvcHRpb25zIGFyZSBtb3N0bHkgdGFyZ2V0ZWQgZm9yIHBhY2tpbmcgb2YgR2l0IHJlcG9zaXRvcmllcy4KIAogLS1vYmplY3RzOjoKIApAQCAtNjE5LDkgKzY3MSwxNCBAQAogCU9ubHkgdXNlZnVsIHdpdGggJy0tb2JqZWN0cyc7IHByaW50IHRoZSBvYmplY3QgSURzIHRoYXQgYXJlIG5vdAogCWluIHBhY2tzLgogCi0tLW5vLXdhbGs6OgorLS1uby13YWxrWz0oc29ydGVkfHVuc29ydGVkKV06OgogCi0JT25seSBzaG93IHRoZSBnaXZlbiByZXZzLCBidXQgZG8gbm90IHRyYXZlcnNlIHRoZWlyIGFuY2VzdG9ycy4KKwlPbmx5IHNob3cgdGhlIGdpdmVuIGNvbW1pdHMsIGJ1dCBkbyBub3QgdHJhdmVyc2UgdGhlaXIgYW5jZXN0b3JzLgorCVRoaXMgaGFzIG5vIGVmZmVjdCBpZiBhIHJhbmdlIGlzIHNwZWNpZmllZC4gSWYgdGhlIGFyZ3VtZW50CisJInVuc29ydGVkIiBpcyBnaXZlbiwgdGhlIGNvbW1pdHMgYXJlIHNob3cgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZQorCWdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUuIE90aGVyd2lzZSAoaWYgInNvcnRlZCIgb3Igbm8gYXJndW1lbnQKKwl3YXMgZ2l2ZW4pLCB0aGUgY29tbWl0cyBhcmUgc2hvdyBpbiByZXZlcnNlIGNocm9ub2xvZ2ljYWwgb3JkZXIKKwlieSBjb21taXQgdGltZS4KIAogLS1kby13YWxrOjoKIApAQCAtNjYwLDcgKzcxNyw3IEBACiArCiBgLS1kYXRlPXNob3J0YCBzaG93cyBvbmx5IGRhdGUgYnV0IG5vdCB0aW1lLCBpbiBgWVlZWS1NTS1ERGAgZm9ybWF0LgogKwotYC0tZGF0ZT1yYXdgIHNob3dzIHRoZSBkYXRlIGluIHRoZSBpbnRlcm5hbCByYXcgZ2l0IGZvcm1hdCBgJXMgJXpgIGZvcm1hdC4KK2AtLWRhdGU9cmF3YCBzaG93cyB0aGUgZGF0ZSBpbiB0aGUgaW50ZXJuYWwgcmF3IEdpdCBmb3JtYXQgYCVzICV6YCBmb3JtYXQuCiArCiBgLS1kYXRlPWRlZmF1bHRgIHNob3dzIHRpbWVzdGFtcHMgaW4gdGhlIG9yaWdpbmFsIHRpbWV6b25lCiAoZWl0aGVyIGNvbW1pdHRlcidzIG9yIGF1dGhvcidzKS4KQEAgLTc1OSw3ICs4MTYsNyBAQAogCiAtLWNjOjoKIAotCVRoaXMgZmxhZyBpbXBsaWVzIHRoZSAnLWMnIG9wdGlvbnMgYW5kIGZ1cnRoZXIgY29tcHJlc3NlcyB0aGUKKwlUaGlzIGZsYWcgaW1wbGllcyB0aGUgJy1jJyBvcHRpb24gYW5kIGZ1cnRoZXIgY29tcHJlc3NlcyB0aGUKIAlwYXRjaCBvdXRwdXQgYnkgb21pdHRpbmcgdW5pbnRlcmVzdGluZyBodW5rcyB3aG9zZSBjb250ZW50cyBpbgogCXRoZSBwYXJlbnRzIGhhdmUgb25seSB0d28gdmFyaWFudHMgYW5kIHRoZSBtZXJnZSByZXN1bHQgcGlja3MKIAlvbmUgb2YgdGhlbSB3aXRob3V0IG1vZGlmaWNhdGlvbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcmV2aXNpb25zLnR4dCBiL0RvY3VtZW50YXRpb24vcmV2aXNpb25zLnR4dAppbmRleCAxNzI1NjYxLi5kNDc3YjNmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3JldmlzaW9ucy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9yZXZpc2lvbnMudHh0CkBAIC0yLDEzICsyLDEzIEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBBIHJldmlzaW9uIHBhcmFtZXRlciAnPHJldj4nIHR5cGljYWxseSwgYnV0IG5vdCBuZWNlc3NhcmlseSwgbmFtZXMgYQotY29tbWl0IG9iamVjdC4gIEl0IHVzZXMgd2hhdCBpcyBjYWxsZWQgYW4gJ2V4dGVuZGVkIFNIQTEnCitjb21taXQgb2JqZWN0LiAgSXQgdXNlcyB3aGF0IGlzIGNhbGxlZCBhbiAnZXh0ZW5kZWQgU0hBLTEnCiBzeW50YXguICBIZXJlIGFyZSB2YXJpb3VzIHdheXMgdG8gc3BlbGwgb2JqZWN0IG5hbWVzLiAgVGhlCiBvbmVzIGxpc3RlZCBuZWFyIHRoZSBlbmQgb2YgdGhpcyBsaXN0IG5hbWUgdHJlZXMgYW5kCiBibG9icyBjb250YWluZWQgaW4gYSBjb21taXQuCiAKICc8c2hhMT4nLCBlLmcuICdkYWU4NmUxOTUwYjEyNzdlNTQ1Y2VlMTgwNTUxNzUwMDI5Y2ZlNzM1JywgJ2RhZTg2ZSc6OgotICBUaGUgZnVsbCBTSEExIG9iamVjdCBuYW1lICg0MC1ieXRlIGhleGFkZWNpbWFsIHN0cmluZyksIG9yCisgIFRoZSBmdWxsIFNIQS0xIG9iamVjdCBuYW1lICg0MC1ieXRlIGhleGFkZWNpbWFsIHN0cmluZyksIG9yCiAgIGEgbGVhZGluZyBzdWJzdHJpbmcgdGhhdCBpcyB1bmlxdWUgd2l0aGluIHRoZSByZXBvc2l0b3J5LgogICBFLmcuIGRhZTg2ZTE5NTBiMTI3N2U1NDVjZWUxODA1NTE3NTAwMjljZmU3MzUgYW5kIGRhZTg2ZSBib3RoCiAgIG5hbWUgdGhlIHNhbWUgY29tbWl0IG9iamVjdCBpZiB0aGVyZSBpcyBubyBvdGhlciBvYmplY3QgaW4KQEAgLTIzLDIzICsyMywyMyBAQAogICBBIHN5bWJvbGljIHJlZiBuYW1lLiAgRS5nLiAnbWFzdGVyJyB0eXBpY2FsbHkgbWVhbnMgdGhlIGNvbW1pdAogICBvYmplY3QgcmVmZXJlbmNlZCBieSAncmVmcy9oZWFkcy9tYXN0ZXInLiAgSWYgeW91CiAgIGhhcHBlbiB0byBoYXZlIGJvdGggJ2hlYWRzL21hc3RlcicgYW5kICd0YWdzL21hc3RlcicsIHlvdSBjYW4KLSAgZXhwbGljaXRseSBzYXkgJ2hlYWRzL21hc3RlcicgdG8gdGVsbCBnaXQgd2hpY2ggb25lIHlvdSBtZWFuLgotICBXaGVuIGFtYmlndW91cywgYSAnPG5hbWU+JyBpcyBkaXNhbWJpZ3VhdGVkIGJ5IHRha2luZyB0aGUKKyAgZXhwbGljaXRseSBzYXkgJ2hlYWRzL21hc3RlcicgdG8gdGVsbCBHaXQgd2hpY2ggb25lIHlvdSBtZWFuLgorICBXaGVuIGFtYmlndW91cywgYSAnPHJlZm5hbWU+JyBpcyBkaXNhbWJpZ3VhdGVkIGJ5IHRha2luZyB0aGUKICAgZmlyc3QgbWF0Y2ggaW4gdGhlIGZvbGxvd2luZyBydWxlczoKIAotICAuIElmICckR0lUX0RJUi88bmFtZT4nIGV4aXN0cywgdGhhdCBpcyB3aGF0IHlvdSBtZWFuICh0aGlzIGlzIHVzdWFsbHkKKyAgLiBJZiAnJEdJVF9ESVIvPHJlZm5hbWU+JyBleGlzdHMsIHRoYXQgaXMgd2hhdCB5b3UgbWVhbiAodGhpcyBpcyB1c3VhbGx5CiAgICAgdXNlZnVsIG9ubHkgZm9yICdIRUFEJywgJ0ZFVENIX0hFQUQnLCAnT1JJR19IRUFEJywgJ01FUkdFX0hFQUQnCiAgICAgYW5kICdDSEVSUllfUElDS19IRUFEJyk7CiAKLSAgLiBvdGhlcndpc2UsICdyZWZzLzxuYW1lPicgaWYgaXQgZXhpc3RzOworICAuIG90aGVyd2lzZSwgJ3JlZnMvPHJlZm5hbWU+JyBpZiBpdCBleGlzdHM7CiAKICAgLiBvdGhlcndpc2UsICdyZWZzL3RhZ3MvPHJlZm5hbWU+JyBpZiBpdCBleGlzdHM7CiAKLSAgLiBvdGhlcndpc2UsICdyZWZzL2hlYWRzLzxuYW1lPicgaWYgaXQgZXhpc3RzOworICAuIG90aGVyd2lzZSwgJ3JlZnMvaGVhZHMvPHJlZm5hbWU+JyBpZiBpdCBleGlzdHM7CiAKLSAgLiBvdGhlcndpc2UsICdyZWZzL3JlbW90ZXMvPG5hbWU+JyBpZiBpdCBleGlzdHM7CisgIC4gb3RoZXJ3aXNlLCAncmVmcy9yZW1vdGVzLzxyZWZuYW1lPicgaWYgaXQgZXhpc3RzOwogCi0gIC4gb3RoZXJ3aXNlLCAncmVmcy9yZW1vdGVzLzxuYW1lPi9IRUFEJyBpZiBpdCBleGlzdHMuCisgIC4gb3RoZXJ3aXNlLCAncmVmcy9yZW1vdGVzLzxyZWZuYW1lPi9IRUFEJyBpZiBpdCBleGlzdHMuCiArCiAnSEVBRCcgbmFtZXMgdGhlIGNvbW1pdCBvbiB3aGljaCB5b3UgYmFzZWQgdGhlIGNoYW5nZXMgaW4gdGhlIHdvcmtpbmcgdHJlZS4KICdGRVRDSF9IRUFEJyByZWNvcmRzIHRoZSBicmFuY2ggd2hpY2ggeW91IGZldGNoZWQgZnJvbSBhIHJlbW90ZSByZXBvc2l0b3J5CkBAIC01NSw2ICs1NSw4IEBACiArCiBOb3RlIHRoYXQgYW55IG9mIHRoZSAncmVmcy8qJyBjYXNlcyBhYm92ZSBtYXkgY29tZSBlaXRoZXIgZnJvbQogdGhlICckR0lUX0RJUi9yZWZzJyBkaXJlY3Rvcnkgb3IgZnJvbSB0aGUgJyRHSVRfRElSL3BhY2tlZC1yZWZzJyBmaWxlLgorV2hpbGUgdGhlIHJlZiBuYW1lIGVuY29kaW5nIGlzIHVuc3BlY2lmaWVkLCBVVEYtOCBpcyBwcmVmZXJyZWQgYXMKK3NvbWUgb3V0cHV0IHByb2Nlc3NpbmcgbWF5IGFzc3VtZSByZWYgbmFtZXMgaW4gVVRGLTguCiAKICc8cmVmbmFtZT5AXHs8ZGF0ZT5cfScsIGUuZy4gJ21hc3RlckBce3llc3RlcmRheVx9JywgJ0hFQURAXHs1IG1pbnV0ZXMgYWdvXH0nOjoKICAgQSByZWYgZm9sbG93ZWQgYnkgdGhlIHN1ZmZpeCAnQCcgd2l0aCBhIGRhdGUgc3BlY2lmaWNhdGlvbgpAQCAtODYsMTAgKzg4LDEwIEBACiAgIFRoZSBjb25zdHJ1Y3QgJ0Bcey08bj5cfScgbWVhbnMgdGhlIDxuPnRoIGJyYW5jaCBjaGVja2VkIG91dAogICBiZWZvcmUgdGhlIGN1cnJlbnQgb25lLgogCi0nPHJlZm5hbWU+QFx7dXBzdHJlYW1cfScsIGUuZy4gJ21hc3RlckBce3Vwc3RyZWFtXH0nLCAnQFx7dVx9Jzo6Ci0gIFRoZSBzdWZmaXggJ0Bce3Vwc3RyZWFtXH0nIHRvIGEgcmVmIChzaG9ydCBmb3JtICc8cmVmbmFtZT5AXHt1XH0nKSByZWZlcnMgdG8KLSAgdGhlIGJyYW5jaCB0aGUgcmVmIGlzIHNldCB0byBidWlsZCBvbiB0b3Agb2YuICBBIG1pc3NpbmcgcmVmIGRlZmF1bHRzCi0gIHRvIHRoZSBjdXJyZW50IGJyYW5jaC4KKyc8YnJhbmNobmFtZT5AXHt1cHN0cmVhbVx9JywgZS5nLiAnbWFzdGVyQFx7dXBzdHJlYW1cfScsICdAXHt1XH0nOjoKKyAgVGhlIHN1ZmZpeCAnQFx7dXBzdHJlYW1cfScgdG8gYSBicmFuY2huYW1lIChzaG9ydCBmb3JtICc8YnJhbmNobmFtZT5AXHt1XH0nKQorICByZWZlcnMgdG8gdGhlIGJyYW5jaCB0aGF0IHRoZSBicmFuY2ggc3BlY2lmaWVkIGJ5IGJyYW5jaG5hbWUgaXMgc2V0IHRvIGJ1aWxkIG9uCisgIHRvcCBvZi4gIEEgbWlzc2luZyBicmFuY2huYW1lIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IG9uZS4KIAogJzxyZXY+e2NhcmV0fScsIGUuZy4gJ0hFQUR7Y2FyZXR9LCB2MS41LjF7Y2FyZXR9MCc6OgogICBBIHN1ZmZpeCAne2NhcmV0fScgdG8gYSByZXZpc2lvbiBwYXJhbWV0ZXIgbWVhbnMgdGhlIGZpcnN0IHBhcmVudCBvZgpAQCAtMTE0LDYgKzExNiwxMSBAQAogICBvYmplY3Qgb2YgdGhhdCB0eXBlIGlzIGZvdW5kIG9yIHRoZSBvYmplY3QgY2Fubm90IGJlCiAgIGRlcmVmZXJlbmNlZCBhbnltb3JlIChpbiB3aGljaCBjYXNlLCBiYXJmKS4gICc8cmV2PntjYXJldH0wJwogICBpcyBhIHNob3J0LWhhbmQgZm9yICc8cmV2PntjYXJldH1ce2NvbW1pdFx9Jy4KKysKKydyZXZ7Y2FyZXR9XHtvYmplY3RcfScgY2FuIGJlIHVzZWQgdG8gbWFrZSBzdXJlICdyZXYnIG5hbWVzIGFuCitvYmplY3QgdGhhdCBleGlzdHMsIHdpdGhvdXQgcmVxdWlyaW5nICdyZXYnIHRvIGJlIGEgdGFnLCBhbmQKK3dpdGhvdXQgZGVyZWZlcmVuY2luZyAncmV2JzsgYmVjYXVzZSBhIHRhZyBpcyBhbHJlYWR5IGFuIG9iamVjdCwKK2l0IGRvZXMgbm90IGhhdmUgdG8gYmUgZGVyZWZlcmVuY2VkIGV2ZW4gb25jZSB0byBnZXQgdG8gYW4gb2JqZWN0LgogCiAnPHJldj57Y2FyZXR9XHtcfScsIGUuZy4gJ3YwLjk5Ljh7Y2FyZXR9XHtcfSc6OgogICBBIHN1ZmZpeCAne2NhcmV0fScgZm9sbG93ZWQgYnkgYW4gZW1wdHkgYnJhY2UgcGFpcgpAQCAtMjEzLDE4ICsyMjAsNTggQEAKIEl0IGlzIHRoZSBzZXQgb2YgY29tbWl0cyB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSBlaXRoZXIgb25lIG9mCiAncjEnIG9yICdyMicgYnV0IG5vdCBmcm9tIGJvdGguCiAKK0luIHRoZXNlIHR3byBzaG9ydGhhbmRzLCB5b3UgY2FuIG9taXQgb25lIGVuZCBhbmQgbGV0IGl0IGRlZmF1bHQgdG8gSEVBRC4KK0ZvciBleGFtcGxlLCAnb3JpZ2luLi4nIGlzIGEgc2hvcnRoYW5kIGZvciAnb3JpZ2luLi5IRUFEJyBhbmQgYXNrcyAiV2hhdAorZGlkIEkgZG8gc2luY2UgSSBmb3JrZWQgZnJvbSB0aGUgb3JpZ2luIGJyYW5jaD8iICBTaW1pbGFybHksICcuLm9yaWdpbicKK2lzIGEgc2hvcnRoYW5kIGZvciAnSEVBRC4ub3JpZ2luJyBhbmQgYXNrcyAiV2hhdCBkaWQgdGhlIG9yaWdpbiBkbyBzaW5jZQorSSBmb3JrZWQgZnJvbSB0aGVtPyIgIE5vdGUgdGhhdCAnLi4nIHdvdWxkIG1lYW4gJ0hFQUQuLkhFQUQnIHdoaWNoIGlzIGFuCitlbXB0eSByYW5nZSB0aGF0IGlzIGJvdGggcmVhY2hhYmxlIGFuZCB1bnJlYWNoYWJsZSBmcm9tIEhFQUQuCisKIFR3byBvdGhlciBzaG9ydGhhbmRzIGZvciBuYW1pbmcgYSBzZXQgdGhhdCBpcyBmb3JtZWQgYnkgYSBjb21taXQKIGFuZCBpdHMgcGFyZW50IGNvbW1pdHMgZXhpc3QuICBUaGUgJ3Ixe2NhcmV0fUAnIG5vdGF0aW9uIG1lYW5zIGFsbAogcGFyZW50cyBvZiAncjEnLiAgJ3Ixe2NhcmV0fSEnIGluY2x1ZGVzIGNvbW1pdCAncjEnIGJ1dCBleGNsdWRlcwogYWxsIG9mIGl0cyBwYXJlbnRzLgogCitUbyBzdW1tYXJpemU6CisKKyc8cmV2Pic6OgorCUluY2x1ZGUgY29tbWl0cyB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSAoaS5lLiBhbmNlc3RvcnMgb2YpCisJPHJldj4uCisKKyd7Y2FyZXR9PHJldj4nOjoKKwlFeGNsdWRlIGNvbW1pdHMgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gKGkuZS4gYW5jZXN0b3JzIG9mKQorCTxyZXY+LgorCisnPHJldjE+Li48cmV2Mj4nOjoKKwlJbmNsdWRlIGNvbW1pdHMgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gPHJldjI+IGJ1dCBleGNsdWRlCisJdGhvc2UgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gPHJldjE+LiAgV2hlbiBlaXRoZXIgPHJldjE+IG9yCisJPHJldjI+IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvICdIRUFEJy4KKworJzxyZXYxPlwuLi48cmV2Mj4nOjoKKwlJbmNsdWRlIGNvbW1pdHMgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gZWl0aGVyIDxyZXYxPiBvcgorCTxyZXYyPiBidXQgZXhjbHVkZSB0aG9zZSB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSBib3RoLiAgV2hlbgorCWVpdGhlciA8cmV2MT4gb3IgPHJldjI+IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvICdIRUFEJy4KKworJzxyZXY+e2NhcmV0fUAnLCBlLmcuICdIRUFEe2NhcmV0fUAnOjoKKyAgQSBzdWZmaXggJ3tjYXJldH0nIGZvbGxvd2VkIGJ5IGFuIGF0IHNpZ24gaXMgdGhlIHNhbWUgYXMgbGlzdGluZworICBhbGwgcGFyZW50cyBvZiAnPHJldj4nIChtZWFuaW5nLCBpbmNsdWRlIGFueXRoaW5nIHJlYWNoYWJsZSBmcm9tCisgIGl0cyBwYXJlbnRzLCBidXQgbm90IHRoZSBjb21taXQgaXRzZWxmKS4KKworJzxyZXY+e2NhcmV0fSEnLCBlLmcuICdIRUFEe2NhcmV0fSEnOjoKKyAgQSBzdWZmaXggJ3tjYXJldH0nIGZvbGxvd2VkIGJ5IGFuIGV4Y2xhbWF0aW9uIG1hcmsgaXMgdGhlIHNhbWUKKyAgYXMgZ2l2aW5nIGNvbW1pdCAnPHJldj4nIGFuZCB0aGVuIGFsbCBpdHMgcGFyZW50cyBwcmVmaXhlZCB3aXRoCisgICd7Y2FyZXR9JyB0byBleGNsdWRlIHRoZW0gKGFuZCB0aGVpciBhbmNlc3RvcnMpLgorCiBIZXJlIGFyZSBhIGhhbmRmdWwgb2YgZXhhbXBsZXM6CiAKICAgIEQgICAgICAgICAgICAgICAgRyBIIEQKICAgIEQgRiAgICAgICAgICAgICAgRyBIIEkgSiBEIEYKICAgIF5HIEQgICAgICAgICAgICAgSCBECiAgICBeRCBCICAgICAgICAgICAgIEUgSSBKIEYgQgorICAgQi4uQyAgICAgICAgICAgICBDCiAgICBCLi4uQyAgICAgICAgICAgIEcgSCBEIEUgQiBDCiAgICBeRCBCIEMgICAgICAgICAgIEUgSSBKIEYgQiBDCisgICBDICAgICAgICAgICAgICAgIEkgSiBGIEMKICAgIENeQCAgICAgICAgICAgICAgSSBKIEYKKyAgIENeISAgICAgICAgICAgICAgQwogICAgRl4hIEQgICAgICAgICAgICBHIEggRCBGCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktYWxsb2NhdGlvbi1ncm93aW5nLnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1hbGxvY2F0aW9uLWdyb3dpbmcudHh0CmluZGV4IDQzZGJlMDkuLjU0Mjk0NmIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1hbGxvY2F0aW9uLWdyb3dpbmcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1hbGxvY2F0aW9uLWdyb3dpbmcudHh0CkBAIC01LDcgKzUsOSBAQAogCiBEZWZpbmUgeW91ciBhcnJheSB3aXRoOgogCi0qIGEgcG9pbnRlciAoYGFyeWApIHRoYXQgcG9pbnRzIGF0IHRoZSBhcnJheSwgaW5pdGlhbGl6ZWQgdG8gYE5VTExgOworKiBhIHBvaW50ZXIgKGBpdGVtYCkgdGhhdCBwb2ludHMgYXQgdGhlIGFycmF5LCBpbml0aWFsaXplZCB0byBgTlVMTGAKKyAgKGFsdGhvdWdoIHBsZWFzZSBuYW1lIHRoZSB2YXJpYWJsZSBiYXNlZCBvbiBpdHMgY29udGVudHMsIG5vdCBvbiBpdHMKKyAgdHlwZSk7CiAKICogYW4gaW50ZWdlciB2YXJpYWJsZSAoYGFsbG9jYCkgdGhhdCBrZWVwcyB0cmFjayBvZiBob3cgYmlnIHRoZSBjdXJyZW50CiAgIGFsbG9jYXRpb24gaXMsIGluaXRpYWxpemVkIHRvIGAwYDsKQEAgLTEzLDIyICsxNSwyMiBAQAogKiBhbm90aGVyIGludGVnZXIgdmFyaWFibGUgKGBucmApIHRvIGtlZXAgdHJhY2sgb2YgaG93IG1hbnkgZWxlbWVudHMgdGhlCiAgIGFycmF5IGN1cnJlbnRseSBoYXMsIGluaXRpYWxpemVkIHRvIGAwYC4KIAotVGhlbiBiZWZvcmUgYWRkaW5nIGBuYHRoIGVsZW1lbnQgdG8gdGhlIGFycmF5LCBjYWxsIGBBTExPQ19HUk9XKGFyeSwgbiwKK1RoZW4gYmVmb3JlIGFkZGluZyBgbmB0aCBlbGVtZW50IHRvIHRoZSBpdGVtLCBjYWxsIGBBTExPQ19HUk9XKGl0ZW0sIG4sCiBhbGxvYylgLiAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGFycmF5IGNhbiBob2xkIGF0IGxlYXN0IGBuYCBlbGVtZW50cyBieQogY2FsbGluZyBgcmVhbGxvYygzKWAgYW5kIGFkanVzdGluZyBgYWxsb2NgIHZhcmlhYmxlLgogCiAtLS0tLS0tLS0tLS0KLXNvbWV0eXBlICphcnk7Citzb21ldHlwZSAqaXRlbTsKIHNpemVfdCBucjsKIHNpemVfdCBhbGxvYwogCiBmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKykKLQlpZiAod2UgbGlrZSBhcnlbaV0gYWxyZWFkeSkKKwlpZiAod2UgbGlrZSBpdGVtW2ldIGFscmVhZHkpCiAJCXJldHVybjsKIAogLyogd2UgZGlkIG5vdCBsaWtlIGFueSBleGlzdGluZyBvbmUsIHNvIGFkZCBvbmUgKi8KLUFMTE9DX0dST1coYXJ5LCBuciArIDEsIGFsbG9jKTsKLWFyeVtucisrXSA9IHZhbHVlIHlvdSBsaWtlOworQUxMT0NfR1JPVyhpdGVtLCBuciArIDEsIGFsbG9jKTsKK2l0ZW1bbnIrK10gPSB2YWx1ZSB5b3UgbGlrZTsKIC0tLS0tLS0tLS0tLQogCiBZb3UgYXJlIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyB0aGUgYG5yYCB2YXJpYWJsZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1hcmd2LWFycmF5LnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1hcmd2LWFycmF5LnR4dAppbmRleCAxYjdkOGYxLi5hNmI3ZDgzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktYXJndi1hcnJheS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWFyZ3YtYXJyYXkudHh0CkBAIC00Niw2ICs0NiwxOCBAQAogCUZvcm1hdCBhIHN0cmluZyBhbmQgcHVzaCBpdCBvbnRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LiBUaGlzIGlzIGEKIAljb252ZW5pZW5jZSB3cmFwcGVyIGNvbWJpbmluZyBgc3RyYnVmX2FkZGZgIGFuZCBgYXJndl9hcnJheV9wdXNoYC4KIAorYGFyZ3ZfYXJyYXlfcG9wYDo6CisJUmVtb3ZlIHRoZSBmaW5hbCBlbGVtZW50IGZyb20gdGhlIGFycmF5LiBJZiB0aGVyZSBhcmUgbm8KKwllbGVtZW50cyBpbiB0aGUgYXJyYXksIGRvIG5vdGhpbmcuCisKIGBhcmd2X2FycmF5X2NsZWFyYDo6CiAJRnJlZSBhbGwgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUgYXJyYXkgYW5kIHJldHVybiBpdCB0byB0aGUKIAlpbml0aWFsLCBlbXB0eSBzdGF0ZS4KKworYGFyZ3ZfYXJyYXlfZGV0YWNoYDo6CisJRGV0YWNoIHRoZSBhcmd2IGFycmF5IGZyb20gdGhlIGBzdHJ1Y3QgYXJndl9hcnJheWAsIHRyYW5zZmVycmluZworCW93bmVyc2hpcCBvZiB0aGUgYWxsb2NhdGVkIGFycmF5IGFuZCBzdHJpbmdzLgorCitgYXJndl9hcnJheV9mcmVlX2RldGFjaGVkYDo6CisJRnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZCBieSBhIGBzdHJ1Y3QgYXJndl9hcnJheWAgdGhhdCB3YXMgbGF0ZXIKKwlkZXRhY2hlZCBhbmQgaXMgbm93IG5vIGxvbmdlciBuZWVkZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktYnVpbHRpbi50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktYnVpbHRpbi50eHQKaW5kZXggYjBjYWZlOC4uNGE0MjI4YiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWJ1aWx0aW4udHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1idWlsdGluLnR4dApAQCAtNSw3ICs1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGVyZSBhcmUgNCB0aGluZ3MgdG8gZG8gdG8gYWRkIGEgYnVpbHQtaW4gY29tbWFuZCBpbXBsZW1lbnRhdGlvbiB0bwotZ2l0OgorR2l0OgogCiAuIERlZmluZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIGNvbW1hbmQgYGZvb2Agd2l0aAogICBzaWduYXR1cmU6CkBAIC0yMyw3ICsyMyw3IEBACiAKIGBSVU5fU0VUVVBgOjoKIAotCU1ha2Ugc3VyZSB0aGVyZSBpcyBhIGdpdCBkaXJlY3RvcnkgdG8gd29yayBvbiwgYW5kIGlmIHRoZXJlIGlzIGEKKwlNYWtlIHN1cmUgdGhlcmUgaXMgYSBHaXQgZGlyZWN0b3J5IHRvIHdvcmsgb24sIGFuZCBpZiB0aGVyZSBpcyBhCiAJd29yayB0cmVlLCBjaGRpciB0byB0aGUgdG9wIG9mIGl0IGlmIHRoZSBjb21tYW5kIHdhcyBpbnZva2VkCiAJaW4gYSBzdWJkaXJlY3RvcnkuICBJZiB0aGVyZSBpcyBubyB3b3JrIHRyZWUsIG5vIGNoZGlyKCkgaXMKIAlkb25lLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWNvbmZpZy50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktY29uZmlnLnR4dAppbmRleCBlZGY4ZGZiLi4yMzBiM2EwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktY29uZmlnLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktY29uZmlnLnR4dApAQCAtMSw3ICsxLDcgQEAKIGNvbmZpZyBBUEkKID09PT09PT09PT0KIAotVGhlIGNvbmZpZyBBUEkgZ2l2ZXMgY2FsbGVycyBhIHdheSB0byBhY2Nlc3MgZ2l0IGNvbmZpZ3VyYXRpb24gZmlsZXMKK1RoZSBjb25maWcgQVBJIGdpdmVzIGNhbGxlcnMgYSB3YXkgdG8gYWNjZXNzIEdpdCBjb25maWd1cmF0aW9uIGZpbGVzCiAoYW5kIGZpbGVzIHdoaWNoIGhhdmUgdGhlIHNhbWUgc3ludGF4KS4gU2VlIGxpbmtnaXQ6Z2l0LWNvbmZpZ1sxXSBmb3IgYQogZGlzY3Vzc2lvbiBvZiB0aGUgY29uZmlnIGZpbGUgc3ludGF4LgogCkBAIC0xMiw3ICsxMiw3IEBACiBjYWxsZXItcHJvdmlkZWQgY2FsbGJhY2sgZnVuY3Rpb24uIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBpcyByZXNwb25zaWJsZQogZm9yIGFueSBhY3Rpb25zIHRvIGJlIHRha2VuIG9uIHRoZSBjb25maWcgb3B0aW9uLCBhbmQgaXMgZnJlZSB0byBpZ25vcmUKIHNvbWUgb3B0aW9ucy4gSXQgaXMgbm90IHVuY29tbW9uIGZvciB0aGUgY29uZmlndXJhdGlvbiB0byBiZSBwYXJzZWQKLXNldmVyYWwgdGltZXMgZHVyaW5nIHRoZSBydW4gb2YgYSBnaXQgcHJvZ3JhbSwgd2l0aCBkaWZmZXJlbnQgY2FsbGJhY2tzCitzZXZlcmFsIHRpbWVzIGR1cmluZyB0aGUgcnVuIG9mIGEgR2l0IHByb2dyYW0sIHdpdGggZGlmZmVyZW50IGNhbGxiYWNrcwogcGlja2luZyBvdXQgZGlmZmVyZW50IHZhcmlhYmxlcyB1c2VmdWwgdG8gdGhlbXNlbHZlcy4KIAogQSBjb25maWcgY2FsbGJhY2sgZnVuY3Rpb24gdGFrZXMgdGhyZWUgcGFyYW1ldGVyczoKQEAgLTM2LDcgKzM2LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBNb3N0IHByb2dyYW1zIHdpbGwgc2ltcGx5IHdhbnQgdG8gbG9vayB1cCB2YXJpYWJsZXMgaW4gYWxsIGNvbmZpZyBmaWxlcwotdGhhdCBnaXQga25vd3MgYWJvdXQsIHVzaW5nIHRoZSBub3JtYWwgcHJlY2VkZW5jZSBydWxlcy4gVG8gZG8gdGhpcywKK3RoYXQgR2l0IGtub3dzIGFib3V0LCB1c2luZyB0aGUgbm9ybWFsIHByZWNlZGVuY2UgcnVsZXMuIFRvIGRvIHRoaXMsCiBjYWxsIGBnaXRfY29uZmlnYCB3aXRoIGEgY2FsbGJhY2sgZnVuY3Rpb24gYW5kIHZvaWQgZGF0YSBwb2ludGVyLgogCiBgZ2l0X2NvbmZpZ2Agd2lsbCByZWFkIGFsbCBjb25maWcgc291cmNlcyBpbiBvcmRlciBvZiBpbmNyZWFzaW5nCkBAIC00OSw3ICs0OSw3IEBACiAKIFRoZSBgZ2l0X2NvbmZpZ193aXRoX29wdGlvbnNgIGZ1bmN0aW9uIGxldHMgdGhlIGNhbGxlciBleGFtaW5lIGNvbmZpZwogd2hpbGUgYWRqdXN0aW5nIHNvbWUgb2YgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgYGdpdF9jb25maWdgLiBJdCBzaG91bGQKLWFsbW9zdCBuZXZlciBiZSB1c2VkIGJ5ICJyZWd1bGFyIiBnaXQgY29kZSB0aGF0IGlzIGxvb2tpbmcgdXAKK2FsbW9zdCBuZXZlciBiZSB1c2VkIGJ5ICJyZWd1bGFyIiBHaXQgY29kZSB0aGF0IGlzIGxvb2tpbmcgdXAKIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLiBJdCBpcyBpbnRlbmRlZCBmb3IgYWR2YW5jZWQgY2FsbGVycyBsaWtlCiBgZ2l0LWNvbmZpZ2AsIHdoaWNoIGFyZSBpbnRlbnRpb25hbGx5IHR3ZWFraW5nIHRoZSBub3JtYWwgY29uZmlnLWxvb2t1cAogcHJvY2Vzcy4gSXQgdGFrZXMgdHdvIGV4dHJhIHBhcmFtZXRlcnM6CkBAIC02Niw3ICs2Niw3IEBACiBUaGVyZSBpcyBhIHNwZWNpYWwgdmVyc2lvbiBvZiBgZ2l0X2NvbmZpZ2AgY2FsbGVkIGBnaXRfY29uZmlnX2Vhcmx5YC4KIFRoaXMgdmVyc2lvbiB0YWtlcyBhbiBhZGRpdGlvbmFsIHBhcmFtZXRlciB0byBzcGVjaWZ5IHRoZSByZXBvc2l0b3J5CiBjb25maWcsIGluc3RlYWQgb2YgaGF2aW5nIGl0IGxvb2tlZCB1cCB2aWEgYGdpdF9wYXRoYC4gVGhpcyBpcyB1c2VmdWwKLWVhcmx5IGluIGEgZ2l0IHByb2dyYW0gYmVmb3JlIHRoZSByZXBvc2l0b3J5IGhhcyBiZWVuIGZvdW5kLiBVbmxlc3MKK2Vhcmx5IGluIGEgR2l0IHByb2dyYW0gYmVmb3JlIHRoZSByZXBvc2l0b3J5IGhhcyBiZWVuIGZvdW5kLiBVbmxlc3MKIHlvdSdyZSB3b3JraW5nIHdpdGggZWFybHkgc2V0dXAgY29kZSwgeW91IHByb2JhYmx5IGRvbid0IHdhbnQgdG8gdXNlCiB0aGlzLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktY3JlZGVudGlhbHMudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWNyZWRlbnRpYWxzLnR4dAppbmRleCBhZGI2ZjBjLi5jMWI0MmE0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktY3JlZGVudGlhbHMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1jcmVkZW50aWFscy50eHQKQEAgLTcsOSArNyw5IEBACiByZWZlcnMgdG8gYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgcGFpcikuCiAKIFRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHR3byBpbnRlcmZhY2VzOiB0aGUgQyBBUEkgdGhhdCB0aGUgY3JlZGVudGlhbAotc3Vic3lzdGVtIHByb3ZpZGVzIHRvIHRoZSByZXN0IG9mIGdpdCwgYW5kIHRoZSBwcm90b2NvbCB0aGF0IGdpdCB1c2VzIHRvCitzdWJzeXN0ZW0gcHJvdmlkZXMgdG8gdGhlIHJlc3Qgb2YgR2l0LCBhbmQgdGhlIHByb3RvY29sIHRoYXQgR2l0IHVzZXMgdG8KIGNvbW11bmljYXRlIHdpdGggc3lzdGVtLXNwZWNpZmljICJjcmVkZW50aWFsIGhlbHBlcnMiLiBJZiB5b3UgYXJlCi13cml0aW5nIGdpdCBjb2RlIHRoYXQgd2FudHMgdG8gbG9vayB1cCBvciBwcm9tcHQgZm9yIGNyZWRlbnRpYWxzLCBzZWUKK3dyaXRpbmcgR2l0IGNvZGUgdGhhdCB3YW50cyB0byBsb29rIHVwIG9yIHByb21wdCBmb3IgY3JlZGVudGlhbHMsIHNlZQogdGhlIHNlY3Rpb24gIkMgQVBJIiBiZWxvdy4gSWYgeW91IHdhbnQgdG8gd3JpdGUgeW91ciBvd24gaGVscGVyLCBzZWUKIHRoZSBzZWN0aW9uIG9uICJDcmVkZW50aWFsIEhlbHBlcnMiIGJlbG93LgogCkBAIC0xOCw3ICsxOCw3IEBACiAKIC0tLS0tLS0tLS0tLQogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBnaXQgY29kZSAoQykgICAgICAgICAgfC0tLSB0byBzZXJ2ZXIgcmVxdWlyaW5nIC0tLT4KK3wgR2l0IGNvZGUgKEMpICAgICAgICAgIHwtLS0gdG8gc2VydmVyIHJlcXVpcmluZyAtLS0+CiB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICBhdXRoZW50aWNhdGlvbgogfC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufAogfCBDIGNyZWRlbnRpYWwgQVBJICAgICAgfC0tLSBwcm9tcHQgLS0tPiBVc2VyCkBAIC0yNywxMSArMjcsMTEgQEAKIAl8IHBpcGUgfAogCXwgICAgICB2CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGdpdCBjcmVkZW50aWFsIGhlbHBlciB8Cit8IEdpdCBjcmVkZW50aWFsIGhlbHBlciB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAtLS0tLS0tLS0tLS0KIAotVGhlIGdpdCBjb2RlICh0eXBpY2FsbHkgYSByZW1vdGUtaGVscGVyKSB3aWxsIGNhbGwgdGhlIEMgQVBJIHRvIG9idGFpbgorVGhlIEdpdCBjb2RlICh0eXBpY2FsbHkgYSByZW1vdGUtaGVscGVyKSB3aWxsIGNhbGwgdGhlIEMgQVBJIHRvIG9idGFpbgogY3JlZGVudGlhbCBkYXRhIGxpa2UgYSBsb2dpbi9wYXNzd29yZCBwYWlyIChjcmVkZW50aWFsX2ZpbGwpLiBUaGUKIEFQSSB3aWxsIGl0c2VsZiBjYWxsIGEgcmVtb3RlIGhlbHBlciAoZS5nLiAiZ2l0IGNyZWRlbnRpYWwtY2FjaGUiIG9yCiAiZ2l0IGNyZWRlbnRpYWwtc3RvcmUiKSB0aGF0IG1heSByZXRyaWV2ZSBjcmVkZW50aWFsIGRhdGEgZnJvbSBhCkBAIC00Miw3ICs0Miw3IEBACiBDIEFQSQogLS0tLS0KIAotVGhlIGNyZWRlbnRpYWwgQyBBUEkgaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IGdpdCBjb2RlIHdoaWNoIG5lZWRzIHRvCitUaGUgY3JlZGVudGlhbCBDIEFQSSBpcyBtZWFudCB0byBiZSBjYWxsZWQgYnkgR2l0IGNvZGUgd2hpY2ggbmVlZHMgdG8KIGFjcXVpcmUgb3Igc3RvcmUgYSBjcmVkZW50aWFsLiBJdCBpcyBjZW50ZXJlZCBhcm91bmQgYW4gb2JqZWN0CiByZXByZXNlbnRpbmcgYSBzaW5nbGUgY3JlZGVudGlhbCBhbmQgcHJvdmlkZXMgdGhyZWUgYmFzaWMgb3BlcmF0aW9uczoKIGZpbGwgKGFjcXVpcmUgY3JlZGVudGlhbHMgYnkgY2FsbGluZyBoZWxwZXJzIGFuZC9vciBwcm9tcHRpbmcgdGhlIHVzZXIpLApAQCAtMTYwLDcgKzE2MCw3IEBACiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCS8qCi0JCSAqIFNvbWUgb3RoZXIgZXJyb3Igb2NjdXJlZC4gV2UgZG9uJ3Qga25vdyBpZiB0aGUKKwkJICogU29tZSBvdGhlciBlcnJvciBvY2N1cnJlZC4gV2UgZG9uJ3Qga25vdyBpZiB0aGUKIAkJICogY3JlZGVudGlhbCBpcyBnb29kIG9yIGJhZCwgc28gcmVwb3J0IG5vdGhpbmcgdG8gdGhlCiAJCSAqIGNyZWRlbnRpYWwgc3Vic3lzdGVtLgogCQkgKi8KQEAgLTE3NywxNCArMTc3LDE0IEBACiBDcmVkZW50aWFsIEhlbHBlcnMKIC0tLS0tLS0tLS0tLS0tLS0tLQogCi1DcmVkZW50aWFsIGhlbHBlcnMgYXJlIHByb2dyYW1zIGV4ZWN1dGVkIGJ5IGdpdCB0byBmZXRjaCBvciBzYXZlCitDcmVkZW50aWFsIGhlbHBlcnMgYXJlIHByb2dyYW1zIGV4ZWN1dGVkIGJ5IEdpdCB0byBmZXRjaCBvciBzYXZlCiBjcmVkZW50aWFscyBmcm9tIGFuZCB0byBsb25nLXRlcm0gc3RvcmFnZSAod2hlcmUgImxvbmctdGVybSIgaXMgc2ltcGx5Ci1sb25nZXIgdGhhbiBhIHNpbmdsZSBnaXQgcHJvY2VzczsgZS5nLiwgY3JlZGVudGlhbHMgbWF5IGJlIHN0b3JlZAorbG9uZ2VyIHRoYW4gYSBzaW5nbGUgR2l0IHByb2Nlc3M7IGUuZy4sIGNyZWRlbnRpYWxzIG1heSBiZSBzdG9yZWQKIGluLW1lbW9yeSBmb3IgYSBmZXcgbWludXRlcywgb3IgaW5kZWZpbml0ZWx5IG9uIGRpc2spLgogCiBFYWNoIGhlbHBlciBpcyBzcGVjaWZpZWQgYnkgYSBzaW5nbGUgc3RyaW5nIGluIHRoZSBjb25maWd1cmF0aW9uCiB2YXJpYWJsZSBgY3JlZGVudGlhbC5oZWxwZXJgIChhbmQgb3RoZXJzLCBzZWUgbGlua2dpdDpnaXQtY29uZmlnWzFdKS4KLVRoZSBzdHJpbmcgaXMgdHJhbnNmb3JtZWQgYnkgZ2l0IGludG8gYSBjb21tYW5kIHRvIGJlIGV4ZWN1dGVkIHVzaW5nCitUaGUgc3RyaW5nIGlzIHRyYW5zZm9ybWVkIGJ5IEdpdCBpbnRvIGEgY29tbWFuZCB0byBiZSBleGVjdXRlZCB1c2luZwogdGhlc2UgcnVsZXM6CiAKICAgMS4gSWYgdGhlIGhlbHBlciBzdHJpbmcgYmVnaW5zIHdpdGggIiEiLCBpdCBpcyBjb25zaWRlcmVkIGEgc2hlbGwKQEAgLTI0MSw0NyArMjQxLDE0IEBACiAJUmVtb3ZlIGEgbWF0Y2hpbmcgY3JlZGVudGlhbCwgaWYgYW55LCBmcm9tIHRoZSBoZWxwZXIncyBzdG9yYWdlLgogCiBUaGUgZGV0YWlscyBvZiB0aGUgY3JlZGVudGlhbCB3aWxsIGJlIHByb3ZpZGVkIG9uIHRoZSBoZWxwZXIncyBzdGRpbgotc3RyZWFtLiBUaGUgY3JlZGVudGlhbCBpcyBzcGxpdCBpbnRvIGEgc2V0IG9mIG5hbWVkIGF0dHJpYnV0ZXMuCi1BdHRyaWJ1dGVzIGFyZSBwcm92aWRlZCB0byB0aGUgaGVscGVyLCBvbmUgcGVyIGxpbmUuIEVhY2ggYXR0cmlidXRlIGlzCi1zcGVjaWZpZWQgYnkgYSBrZXktdmFsdWUgcGFpciwgc2VwYXJhdGVkIGJ5IGFuIGA9YCAoZXF1YWxzKSBzaWduLAotZm9sbG93ZWQgYnkgYSBuZXdsaW5lLiBUaGUga2V5IG1heSBjb250YWluIGFueSBieXRlcyBleGNlcHQgYD1gLAotbmV3bGluZSwgb3IgTlVMLiBUaGUgdmFsdWUgbWF5IGNvbnRhaW4gYW55IGJ5dGVzIGV4Y2VwdCBuZXdsaW5lIG9yIE5VTC4KLUluIGJvdGggY2FzZXMsIGFsbCBieXRlcyBhcmUgdHJlYXRlZCBhcy1pcyAoaS5lLiwgdGhlcmUgaXMgbm8gcXVvdGluZywKLWFuZCBvbmUgY2Fubm90IHRyYW5zbWl0IGEgdmFsdWUgd2l0aCBuZXdsaW5lIG9yIE5VTCBpbiBpdCkuIFRoZSBsaXN0IG9mCi1hdHRyaWJ1dGVzIGlzIHRlcm1pbmF0ZWQgYnkgYSBibGFuayBsaW5lIG9yIGVuZC1vZi1maWxlLgotCi1HaXQgd2lsbCBzZW5kIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyAoYnV0IG1heSBub3Qgc2VuZCBhbGwgb2YKLXRoZW0gZm9yIGEgZ2l2ZW4gY3JlZGVudGlhbDsgZm9yIGV4YW1wbGUsIGEgYGhvc3RgIGF0dHJpYnV0ZSBtYWtlcyBubwotc2Vuc2Ugd2hlbiBkZWFsaW5nIHdpdGggYSBub24tbmV0d29yayBwcm90b2NvbCk6Ci0KLWBwcm90b2NvbGA6OgotCi0JVGhlIHByb3RvY29sIG92ZXIgd2hpY2ggdGhlIGNyZWRlbnRpYWwgd2lsbCBiZSB1c2VkIChlLmcuLAotCWBodHRwc2ApLgotCi1gaG9zdGA6OgotCi0JVGhlIHJlbW90ZSBob3N0bmFtZSBmb3IgYSBuZXR3b3JrIGNyZWRlbnRpYWwuCi0KLWBwYXRoYDo6Ci0KLQlUaGUgcGF0aCB3aXRoIHdoaWNoIHRoZSBjcmVkZW50aWFsIHdpbGwgYmUgdXNlZC4gRS5nLiwgZm9yCi0JYWNjZXNzaW5nIGEgcmVtb3RlIGh0dHBzIHJlcG9zaXRvcnksIHRoaXMgd2lsbCBiZSB0aGUKLQlyZXBvc2l0b3J5J3MgcGF0aCBvbiB0aGUgc2VydmVyLgotCi1gdXNlcm5hbWVgOjoKLQotCVRoZSBjcmVkZW50aWFsJ3MgdXNlcm5hbWUsIGlmIHdlIGFscmVhZHkgaGF2ZSBvbmUgKGUuZy4sIGZyb20gYQotCVVSTCwgZnJvbSB0aGUgdXNlciwgb3IgZnJvbSBhIHByZXZpb3VzbHkgcnVuIGhlbHBlcikuCi0KLWBwYXNzd29yZGA6OgotCi0JVGhlIGNyZWRlbnRpYWwncyBwYXNzd29yZCwgaWYgd2UgYXJlIGFza2luZyBpdCB0byBiZSBzdG9yZWQuCitzdHJlYW0uIFRoZSBleGFjdCBmb3JtYXQgaXMgdGhlIHNhbWUgYXMgdGhlIGlucHV0L291dHB1dCBmb3JtYXQgb2YgdGhlCitgZ2l0IGNyZWRlbnRpYWxgIHBsdW1iaW5nIGNvbW1hbmQgKHNlZSB0aGUgc2VjdGlvbiBgSU5QVVQvT1VUUFVUCitGT1JNQVRgIGluIGxpbmtnaXQ6Z2l0LWNyZWRlbnRpYWxbN10gZm9yIGEgZGV0YWlsZWQgc3BlY2lmaWNhdGlvbikuCiAKIEZvciBhIGBnZXRgIG9wZXJhdGlvbiwgdGhlIGhlbHBlciBzaG91bGQgcHJvZHVjZSBhIGxpc3Qgb2YgYXR0cmlidXRlcwogb24gc3Rkb3V0IGluIHRoZSBzYW1lIGZvcm1hdC4gQSBoZWxwZXIgaXMgZnJlZSB0byBwcm9kdWNlIGEgc3Vic2V0LCBvcgogZXZlbiBubyB2YWx1ZXMgYXQgYWxsIGlmIGl0IGhhcyBub3RoaW5nIHVzZWZ1bCB0byBwcm92aWRlLiBBbnkgcHJvdmlkZWQKLWF0dHJpYnV0ZXMgd2lsbCBvdmVyd3JpdGUgdGhvc2UgYWxyZWFkeSBrbm93biBhYm91dCBieSBnaXQuCithdHRyaWJ1dGVzIHdpbGwgb3ZlcndyaXRlIHRob3NlIGFscmVhZHkga25vd24gYWJvdXQgYnkgR2l0LgogCiBGb3IgYSBgc3RvcmVgIG9yIGBlcmFzZWAgb3BlcmF0aW9uLCB0aGUgaGVscGVyJ3Mgb3V0cHV0IGlzIGlnbm9yZWQuCiBJZiBpdCBmYWlscyB0byBwZXJmb3JtIHRoZSByZXF1ZXN0ZWQgb3BlcmF0aW9uLCBpdCBtYXkgY29tcGxhaW4gdG8KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1kaXJlY3RvcnktbGlzdGluZy50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktZGlyZWN0b3J5LWxpc3RpbmcudHh0CmluZGV4IGFkZDZmNDMuLjdmOGU3OGQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1kaXJlY3RvcnktbGlzdGluZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWRpcmVjdG9yeS1saXN0aW5nLnR4dApAQCAtOSwzNyArOSw1MSBAQAogLS0tLS0tLS0tLS0tLS0KIAogYHN0cnVjdCBkaXJfc3RydWN0YCBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBwYXNzIGRpcmVjdG9yeSB0cmF2ZXJzYWwKLW9wdGlvbnMgdG8gdGhlIGxpYnJhcnkgYW5kIHRvIHJlY29yZCB0aGUgcGF0aHMgZGlzY292ZXJlZC4gIFRoZSBub3RhYmxlCi1vcHRpb25zIGFyZToKK29wdGlvbnMgdG8gdGhlIGxpYnJhcnkgYW5kIHRvIHJlY29yZCB0aGUgcGF0aHMgZGlzY292ZXJlZC4gIEEgc2luZ2xlCitgc3RydWN0IGRpcl9zdHJ1Y3RgIGlzIHVzZWQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgdHJhdmVyc2FsCityZWN1cnNpdmVseSBkZXNjZW5kcyBpbnRvIHN1YmRpcmVjdG9yaWVzLgorCitUaGUgbm90YWJsZSBvcHRpb25zIGFyZToKIAogYGV4Y2x1ZGVfcGVyX2RpcmA6OgogCiAJVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgcmVhZCBpbiBlYWNoIGRpcmVjdG9yeSBmb3IgZXhjbHVkZWQKIAlmaWxlcyAodHlwaWNhbGx5IGAuZ2l0aWdub3JlYCkuCiAKLWBjb2xsZWN0X2lnbm9yZWRgOjoKK2BmbGFnc2A6OgogCi0JSW5jbHVkZSBwYXRocyB0aGF0IGFyZSB0byBiZSBleGNsdWRlZCBpbiB0aGUgcmVzdWx0LgorCUEgYml0LWZpZWxkIG9mIG9wdGlvbnMgKHRoZSBgKklHTk9SRUQqYCBmbGFncyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlKToKIAotYHNob3dfaWdub3JlZGA6OgorYERJUl9TSE9XX0lHTk9SRURgOjo6CiAKLQlUaGUgdHJhdmVyc2FsIGlzIGZvciBmaW5kaW5nIGp1c3QgaWdub3JlZCBmaWxlcywgbm90IHVuaWdub3JlZAotCWZpbGVzLgorCVJldHVybiBqdXN0IGlnbm9yZWQgZmlsZXMgaW4gYGVudHJpZXNbXWAsIG5vdCB1bnRyYWNrZWQgZmlsZXMuCiAKLWBzaG93X290aGVyX2RpcmVjdG9yaWVzYDo6CitgRElSX1NIT1dfSUdOT1JFRF9UT09gOjo6CisKKwlTaW1pbGFyIHRvIGBESVJfU0hPV19JR05PUkVEYCwgYnV0IHJldHVybiBpZ25vcmVkIGZpbGVzIGluIGBpZ25vcmVkW11gCisJaW4gYWRkaXRpb24gdG8gdW50cmFja2VkIGZpbGVzIGluIGBlbnRyaWVzW11gLgorCitgRElSX0NPTExFQ1RfSUdOT1JFRGA6OjoKKworCVNwZWNpYWwgbW9kZSBmb3IgZ2l0LWFkZC4gUmV0dXJuIGlnbm9yZWQgZmlsZXMgaW4gYGlnbm9yZWRbXWAgYW5kCisJdW50cmFja2VkIGZpbGVzIGluIGBlbnRyaWVzW11gLiBPbmx5IHJldHVybnMgaWdub3JlZCBmaWxlcyB0aGF0IG1hdGNoCisJcGF0aHNwZWMgZXhhY3RseSAobm8gd2lsZGNhcmRzKS4gRG9lcyBub3QgcmVjdXJzZSBpbnRvIGlnbm9yZWQKKwlkaXJlY3Rvcmllcy4KKworYERJUl9TSE9XX09USEVSX0RJUkVDVE9SSUVTYDo6OgogCiAJSW5jbHVkZSBhIGRpcmVjdG9yeSB0aGF0IGlzIG5vdCB0cmFja2VkLgogCi1gaGlkZV9lbXB0eV9kaXJlY3Rvcmllc2A6OgorYERJUl9ISURFX0VNUFRZX0RJUkVDVE9SSUVTYDo6OgogCiAJRG8gbm90IGluY2x1ZGUgYSBkaXJlY3RvcnkgdGhhdCBpcyBub3QgdHJhY2tlZCBhbmQgaXMgZW1wdHkuCiAKLWBub19naXRsaW5rc2A6OgorYERJUl9OT19HSVRMSU5LU2A6OjoKIAotCUlmIHNldCwgcmVjdXJzZSBpbnRvIGEgZGlyZWN0b3J5IHRoYXQgbG9va3MgbGlrZSBhIGdpdAorCUlmIHNldCwgcmVjdXJzZSBpbnRvIGEgZGlyZWN0b3J5IHRoYXQgbG9va3MgbGlrZSBhIEdpdAogCWRpcmVjdG9yeS4gIE90aGVyd2lzZSBpdCBpcyBzaG93biBhcyBhIGRpcmVjdG9yeS4KIAotVGhlIHJlc3VsdCBvZiB0aGUgZW51bWVyYXRpb24gaXMgbGVmdCBpbiB0aGVzZSBmaWVsZHM6OgorVGhlIHJlc3VsdCBvZiB0aGUgZW51bWVyYXRpb24gaXMgbGVmdCBpbiB0aGVzZSBmaWVsZHM6CiAKIGBlbnRyaWVzW11gOjoKIApAQCAtNTQsNiArNjgsMTQgQEAKIAogCUludGVybmFsIHVzZTsga2VlcHMgdHJhY2sgb2YgYWxsb2NhdGlvbiBvZiBgZW50cmllc1tdYCBhcnJheS4KIAorYGlnbm9yZWRbXWA6OgorCisJQW4gYXJyYXkgb2YgYHN0cnVjdCBkaXJfZW50cnlgLCB1c2VkIGZvciBpZ25vcmVkIHBhdGhzIHdpdGggdGhlCisJYERJUl9TSE9XX0lHTk9SRURfVE9PYCBhbmQgYERJUl9DT0xMRUNUX0lHTk9SRURgIGZsYWdzLgorCitgaWdub3JlZF9ucmA6OgorCisJVGhlIG51bWJlciBvZiBtZW1iZXJzIGluIGBpZ25vcmVkW11gIGFycmF5LgogCiBDYWxsaW5nIHNlcXVlbmNlCiAtLS0tLS0tLS0tLS0tLS0tCkBAIC02NCwxMSArODYsMTMgQEAKICogUHJlcGFyZSBgc3RydWN0IGRpcl9zdHJ1Y3QgZGlyYCBhbmQgY2xlYXIgaXQgd2l0aCBgbWVtc2V0KCZkaXIsIDAsCiAgIHNpemVvZihkaXIpKWAuCiAKLSogQ2FsbCBgYWRkX2V4Y2x1ZGUoKWAgdG8gYWRkIHNpbmdsZSBleGNsdWRlIHBhdHRlcm4sCi0gIGBhZGRfZXhjbHVkZXNfZnJvbV9maWxlKClgIHRvIGFkZCBwYXR0ZXJucyBmcm9tIGEgZmlsZQotICAoZS5nLiBgLmdpdC9pbmZvL2V4Y2x1ZGVgKSwgYW5kL29yIHNldCBgZGlyLmV4Y2x1ZGVfcGVyX2RpcmAuICBBCi0gIHNob3J0LWhhbmQgZnVuY3Rpb24gYHNldHVwX3N0YW5kYXJkX2V4Y2x1ZGVzKClgIGNhbiBiZSB1c2VkIHRvIHNldCB1cAotICB0aGUgc3RhbmRhcmQgc2V0IG9mIGV4Y2x1ZGUgc2V0dGluZ3MuCisqIFRvIGFkZCBzaW5nbGUgZXhjbHVkZSBwYXR0ZXJuLCBjYWxsIGBhZGRfZXhjbHVkZV9saXN0KClgIGFuZCB0aGVuCisgIGBhZGRfZXhjbHVkZSgpYC4KKworKiBUbyBhZGQgcGF0dGVybnMgZnJvbSBhIGZpbGUgKGUuZy4gYC5naXQvaW5mby9leGNsdWRlYCksIGNhbGwKKyAgYGFkZF9leGNsdWRlc19mcm9tX2ZpbGUoKWAgLCBhbmQvb3Igc2V0IGBkaXIuZXhjbHVkZV9wZXJfZGlyYC4gIEEKKyAgc2hvcnQtaGFuZCBmdW5jdGlvbiBgc2V0dXBfc3RhbmRhcmRfZXhjbHVkZXMoKWAgY2FuIGJlIHVzZWQgdG8gc2V0CisgIHVwIHRoZSBzdGFuZGFyZCBzZXQgb2YgZXhjbHVkZSBzZXR0aW5ncy4KIAogKiBTZXQgb3B0aW9ucyBkZXNjcmliZWQgaW4gdGhlIERhdGEgU3RydWN0dXJlIHNlY3Rpb24gYWJvdmUuCiAKQEAgLTc2LDQgKzEwMCw2IEBACiAKICogVXNlIGBkaXIuZW50cmllc1tdYC4KIAorKiBDYWxsIGBjbGVhcl9kaXJlY3RvcnkoKWAgd2hlbiBub25lIG9mIHRoZSBjb250YWluZWQgZWxlbWVudHMgYXJlIG5vIGxvbmdlciBpbiB1c2UuCisKIChKQykKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1oaXN0b3J5LWdyYXBoLnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1oaXN0b3J5LWdyYXBoLnR4dAppbmRleCBkNmZjOTBhLi4xODE0MmI2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktaGlzdG9yeS1ncmFwaC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWhpc3RvcnktZ3JhcGgudHh0CkBAIC0zMywxMSArMzMsMTEgQEAKIFRoZXkgY2FuIGFsbCBiZSBjYWxsZWQgd2l0aCBhIE5VTEwgZ3JhcGggYXJndW1lbnQsIGluIHdoaWNoIGNhc2Ugbm8gZ3JhcGgKIG91dHB1dCB3aWxsIGJlIHByaW50ZWQuCiAKLSogYGdyYXBoX3Nob3dfY29tbWl0KClgIGNhbGxzIGBncmFwaF9uZXh0X2xpbmUoKWAgdW50aWwgaXQgcmV0dXJucyBub24temVyby4KLSAgVGhpcyBwcmludHMgYWxsIGdyYXBoIGxpbmVzIHVwIHRvLCBhbmQgaW5jbHVkaW5nLCB0aGUgbGluZSBjb250YWluaW5nIHRoaXMKLSAgY29tbWl0LiAgT3V0cHV0IGlzIHByaW50ZWQgdG8gc3Rkb3V0LiAgVGhlIGxhc3QgbGluZSBwcmludGVkIGRvZXMgbm90IGNvbnRhaW4KLSAgYSB0ZXJtaW5hdGluZyBuZXdsaW5lLiAgVGhpcyBzaG91bGQgbm90IGJlIGNhbGxlZCBpZiB0aGUgY29tbWl0IGxpbmUgaGFzCi0gIGFscmVhZHkgYmVlbiBwcmludGVkLCBvciBpdCB3aWxsIGxvb3AgZm9yZXZlci4KKyogYGdyYXBoX3Nob3dfY29tbWl0KClgIGNhbGxzIGBncmFwaF9uZXh0X2xpbmUoKWAgYW5kCisgIGBncmFwaF9pc19jb21taXRfZmluaXNoZWQoKWAgdW50aWwgb25lIG9mIHRoZW0gcmV0dXJuIG5vbi16ZXJvLiAgVGhpcyBwcmludHMKKyAgYWxsIGdyYXBoIGxpbmVzIHVwIHRvLCBhbmQgaW5jbHVkaW5nLCB0aGUgbGluZSBjb250YWluaW5nIHRoaXMgY29tbWl0LgorICBPdXRwdXQgaXMgcHJpbnRlZCB0byBzdGRvdXQuICBUaGUgbGFzdCBsaW5lIHByaW50ZWQgZG9lcyBub3QgY29udGFpbiBhCisgIHRlcm1pbmF0aW5nIG5ld2xpbmUuCiAKICogYGdyYXBoX3Nob3dfb25lbGluZSgpYCBjYWxscyBgZ3JhcGhfbmV4dF9saW5lKClgIGFuZCBwcmludHMgdGhlIHJlc3VsdCB0bwogICBzdGRvdXQuICBUaGUgbGluZSBwcmludGVkIGRvZXMgbm90IGNvbnRhaW4gYSB0ZXJtaW5hdGluZyBuZXdsaW5lLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWluZGV4LXNrZWwudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWluZGV4LXNrZWwudHh0CmluZGV4IGFmN2NjMmUuLmVkYThjMTkgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1pbmRleC1za2VsLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktaW5kZXgtc2tlbC50eHQKQEAgLTEsNyArMSw3IEBACi1HSVQgQVBJIERvY3VtZW50cworR2l0IEFQSSBEb2N1bWVudHMKID09PT09PT09PT09PT09PT09CiAKLUdJVCBoYXMgZ3Jvd24gYSBzZXQgb2YgaW50ZXJuYWwgQVBJIG92ZXIgdGltZS4gIFRoaXMgY29sbGVjdGlvbgorR2l0IGhhcyBncm93biBhIHNldCBvZiBpbnRlcm5hbCBBUEkgb3ZlciB0aW1lLiAgVGhpcyBjb2xsZWN0aW9uCiBkb2N1bWVudHMgdGhlbS4KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMTEsNSArMTEsMyBAQAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gdGFibGUgb2YgY29udGVudHMgZW5kCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLTIwMDctMTEtMjQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1wYXJzZS1vcHRpb25zLnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1wYXJzZS1vcHRpb25zLnR4dAppbmRleCAzMDYyMzg5Li4zMmRkYzFjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktcGFyc2Utb3B0aW9ucy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXBhcnNlLW9wdGlvbnMudHh0CkBAIC0xLDcgKzEsNyBAQAogcGFyc2Utb3B0aW9ucyBBUEkKID09PT09PT09PT09PT09PT09CiAKLVRoZSBwYXJzZS1vcHRpb25zIEFQSSBpcyB1c2VkIHRvIHBhcnNlIGFuZCBtYXNzYWdlIG9wdGlvbnMgaW4gZ2l0CitUaGUgcGFyc2Utb3B0aW9ucyBBUEkgaXMgdXNlZCB0byBwYXJzZSBhbmQgbWFzc2FnZSBvcHRpb25zIGluIEdpdAogYW5kIHRvIHByb3ZpZGUgYSB1c2FnZSBoZWxwIHdpdGggY29uc2lzdGVudCBsb29rLgogCiBCYXNpY3MKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1yZWYtaXRlcmF0aW9uLnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1yZWYtaXRlcmF0aW9uLnR4dAppbmRleCBkYmJlYTk1Li5hYTFjNTBmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktcmVmLWl0ZXJhdGlvbi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXJlZi1pdGVyYXRpb24udHh0CkBAIC0zNSw3ICszNSw3IEBACiAqIGBoZWFkX3JlZl9zdWJtb2R1bGUoKWAsIGBmb3JfZWFjaF9yZWZfc3VibW9kdWxlKClgLAogICBgZm9yX2VhY2hfcmVmX2luX3N1Ym1vZHVsZSgpYCwgYGZvcl9lYWNoX3RhZ19yZWZfc3VibW9kdWxlKClgLAogICBgZm9yX2VhY2hfYnJhbmNoX3JlZl9zdWJtb2R1bGUoKWAsIGBmb3JfZWFjaF9yZW1vdGVfcmVmX3N1Ym1vZHVsZSgpYAotICBkbyB0aGUgc2FtZSBhcyB0aGUgZnVuY3Rpb25zIGRlc2NpYmVkIGFib3ZlIGJ1dCBmb3IgYSBzcGVjaWZpZWQKKyAgZG8gdGhlIHNhbWUgYXMgdGhlIGZ1bmN0aW9ucyBkZXNjcmliZWQgYWJvdmUgYnV0IGZvciBhIHNwZWNpZmllZAogICBzdWJtb2R1bGUuCiAKICogYGZvcl9lYWNoX3Jhd3JlZigpYCBjYW4gYmUgdXNlZCB0byBsZWFybiBhYm91dCBicm9rZW4gcmVmIGFuZCBzeW1yZWYuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktcmVtb3RlLnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1yZW1vdGUudHh0CmluZGV4IGM1NGIxN2QuLjRiZTg3NzYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1yZW1vdGUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1yZW1vdGUudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBUaGUgQVBJIGluIHJlbW90ZS5oIGdpdmVzIGFjY2VzcyB0byB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvCiByZW1vdGVzLiBJdCBoYW5kbGVzIGFsbCB0aHJlZSBjb25maWd1cmF0aW9uIG1lY2hhbmlzbXMgaGlzdG9yaWNhbGx5Ci1hbmQgY3VycmVudGx5IHVzZWQgYnkgZ2l0LCBhbmQgcHJlc2VudHMgdGhlIGluZm9ybWF0aW9uIGluIGEgdW5pZm9ybQorYW5kIGN1cnJlbnRseSB1c2VkIGJ5IEdpdCwgYW5kIHByZXNlbnRzIHRoZSBpbmZvcm1hdGlvbiBpbiBhIHVuaWZvcm0KIGZhc2hpb24uIE5vdGUgdGhhdCB0aGUgY29kZSBhbHNvIGhhbmRsZXMgcGxhaW4gVVJMcyB3aXRob3V0IGFueQogY29uZmlndXJhdGlvbiwgZ2l2aW5nIHRoZW0ganVzdCB0aGUgZGVmYXVsdCBpbmZvcm1hdGlvbi4KIApAQCAtNDUsNyArNDUsNyBAQAogYHJlY2VpdmVwYWNrYCwgYHVwbG9hZHBhY2tgOjoKIAogCVRoZSBjb25maWd1cmVkIGhlbHBlciBwcm9ncmFtcyB0byBydW4gb24gdGhlIHJlbW90ZSBzaWRlLCBmb3IKLQlnaXQtbmF0aXZlIHByb3RvY29scy4KKwlHaXQtbmF0aXZlIHByb3RvY29scy4KIAogYGh0dHBfcHJveHlgOjoKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXJ1bi1jb21tYW5kLnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1ydW4tY29tbWFuZC50eHQKaW5kZXggZjE4YjRmNC4uNWQ3ZDdmMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXJ1bi1jb21tYW5kLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktcnVuLWNvbW1hbmQudHh0CkBAIC01NSwxMCArNTUsOCBAQAogICBub24temVyby4KIAogLiBJZiB0aGUgcHJvZ3JhbSB0ZXJtaW5hdGVkIGR1ZSB0byBhIHNpZ25hbCwgdGhlbiB0aGUgcmV0dXJuIHZhbHVlIGlzIHRoZQotICBzaWduYWwgbnVtYmVyIC0gMTI4LCBpZS4gaXQgaXMgbmVnYXRpdmUgYW5kIHNvIGluZGljYXRlcyBhbiB1bnVzdWFsCi0gIGNvbmRpdGlvbjsgYSBkaWFnbm9zdGljIGlzIHByaW50ZWQuIFRoaXMgcmV0dXJuIHZhbHVlIGNhbiBiZSBwYXNzZWQgdG8KLSAgZXhpdCgyKSwgd2hpY2ggd2lsbCByZXBvcnQgdGhlIHNhbWUgY29kZSB0byB0aGUgcGFyZW50IHByb2Nlc3MgdGhhdCBhCi0gIFBPU0lYIHNoZWxsJ3MgJD8gd291bGQgcmVwb3J0IGZvciBhIHByb2dyYW0gdGhhdCBkaWVkIGZyb20gdGhlIHNpZ25hbC4KKyAgc2lnbmFsIG51bWJlciArIDEyOCwgaWUuIHRoZSBzYW1lIHZhbHVlIHRoYXQgYSBQT1NJWCBzaGVsbCdzICQ/IHdvdWxkCisgIHJlcG9ydC4gIEEgZGlhZ25vc3RpYyBpcyBwcmludGVkLgogCiAKIGBzdGFydF9hc3luY2A6OgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXNoYTEtYXJyYXkudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXNoYTEtYXJyYXkudHh0CmluZGV4IDRhNGJhZTguLjNlNzU0OTcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1zaGExLWFycmF5LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktc2hhMS1hcnJheS50eHQKQEAgLTEsNyArMSw3IEBACiBzaGExLWFycmF5IEFQSQogPT09PT09PT09PT09PT0KIAotVGhlIHNoYTEtYXJyYXkgQVBJIHByb3ZpZGVzIHN0b3JhZ2UgYW5kIG1hbmlwdWxhdGlvbiBvZiBzZXRzIG9mIFNIQTEKK1RoZSBzaGExLWFycmF5IEFQSSBwcm92aWRlcyBzdG9yYWdlIGFuZCBtYW5pcHVsYXRpb24gb2Ygc2V0cyBvZiBTSEEtMQogaWRlbnRpZmllcnMuIFRoZSBlbXBoYXNpcyBpcyBvbiBzdG9yYWdlIGFuZCBwcm9jZXNzaW5nIGVmZmljaWVuY3ksCiBtYWtpbmcgdGhlbSBzdWl0YWJsZSBmb3IgbGFyZ2UgbGlzdHMuIE5vdGUgdGhhdCB0aGUgb3JkZXJpbmcgb2YgaXRlbXMgaXMKIG5vdCBwcmVzZXJ2ZWQgb3ZlciBzb21lIG9wZXJhdGlvbnMuCkBAIC0xMSw3ICsxMSw3IEBACiAKIGBzdHJ1Y3Qgc2hhMV9hcnJheWA6OgogCi0JQSBzaW5nbGUgYXJyYXkgb2YgU0hBMSBoYXNoZXMuIFRoaXMgc2hvdWxkIGJlIGluaXRpYWxpemVkIGJ5CisJQSBzaW5nbGUgYXJyYXkgb2YgU0hBLTEgaGFzaGVzLiBUaGlzIHNob3VsZCBiZSBpbml0aWFsaXplZCBieQogCWFzc2lnbm1lbnQgZnJvbSBgU0hBMV9BUlJBWV9JTklUYC4gIFRoZSBgc2hhMWAgbWVtYmVyIGNvbnRhaW5zCiAJdGhlIGFjdHVhbCBkYXRhLiBUaGUgYG5yYCBtZW1iZXIgY29udGFpbnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbgogCXRoZSBzZXQuICBUaGUgYGFsbG9jYCBhbmQgYHNvcnRlZGAgbWVtYmVycyBhcmUgdXNlZCBpbnRlcm5hbGx5LApAQCAtMjUsOSArMjUsNiBAQAogCXRoZSBhcnJheSAoYnV0IG5vdGUgdGhhdCBzb21lIG9wZXJhdGlvbnMgYmVsb3cgbWF5IGxvc2UgdGhpcwogCW9yZGVyaW5nKS4KIAotYHNoYTFfYXJyYXlfc29ydGA6OgotCVNvcnQgdGhlIGVsZW1lbnRzIGluIHRoZSBhcnJheS4KLQogYHNoYTFfYXJyYXlfbG9va3VwYDo6CiAJUGVyZm9ybSBhIGJpbmFyeSBzZWFyY2ggb2YgdGhlIGFycmF5IGZvciBhIHNwZWNpZmljIHNoYTEuCiAJSWYgZm91bmQsIHJldHVybnMgdGhlIG9mZnNldCAoaW4gbnVtYmVyIG9mIGVsZW1lbnRzKSBvZiB0aGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1zdHJidWYudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXN0cmJ1Zi50eHQKaW5kZXggOTVhOGJmMy4uMzM1MGQ5NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXN0cmJ1Zi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXN0cmJ1Zi50eHQKQEAgLTE1Niw2ICsxNTYsMTEgQEAKIAlSZW1vdmUgdGhlIGJ5dGVzIGJldHdlZW4gYHBvcy4ucG9zK2xlbmAgYW5kIHJlcGxhY2UgaXQgd2l0aCB0aGUgZ2l2ZW4KIAlkYXRhLgogCitgc3RyYnVmX2FkZF9jb21tZW50ZWRfbGluZXNgOjoKKworCUFkZCBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZyB0byB0aGUgYnVmZmVyLiBFYWNoIGxpbmUgd2lsbCBiZSBwcmVwZW5kZWQKKwlieSBhIGNvbW1lbnQgY2hhcmFjdGVyIGFuZCBhIGJsYW5rLgorCiBgc3RyYnVmX2FkZGA6OgogCiAJQWRkIGRhdGEgb2YgZ2l2ZW4gbGVuZ3RoIHRvIHRoZSBidWZmZXIuCkBAIC0yMjUsMTAgKzIzMCwyMCBAQAogCWRlc3RpbmF0aW9uLiBUaGlzIGlzIHVzZWZ1bCBmb3IgbGl0ZXJhbCBkYXRhIHRvIGJlIGZlZCB0byBlaXRoZXIKIAlzdHJidWZfZXhwYW5kIG9yIHRvIHRoZSAqcHJpbnRmIGZhbWlseSBvZiBmdW5jdGlvbnMuCiAKK2BzdHJidWZfaHVtYW5pc2VfYnl0ZXNgOjoKKworCUFwcGVuZCB0aGUgZ2l2ZW4gYnl0ZSBzaXplIGFzIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nIChpLmUuIDEyLjIzIEtpQiwKKwkzLjUwIE1pQikuCisKIGBzdHJidWZfYWRkZmA6OgogCiAJQWRkIGEgZm9ybWF0dGVkIHN0cmluZyB0byB0aGUgYnVmZmVyLgogCitgc3RyYnVmX2NvbW1lbnRlZF9hZGRmYDo6CisKKwlBZGQgYSBmb3JtYXR0ZWQgc3RyaW5nIHByZXBlbmRlZCBieSBhIGNvbW1lbnQgY2hhcmFjdGVyIGFuZCBhCisJYmxhbmsgdG8gdGhlIGJ1ZmZlci4KKwogYHN0cmJ1Zl9mcmVhZGA6OgogCiAJUmVhZCBhIGdpdmVuIHNpemUgb2YgZGF0YSBmcm9tIGEgRklMRSogcG9pbnRlciB0byB0aGUgYnVmZmVyLgpAQCAtMjc5LDYgKzI5NCwyMiBAQAogCVN0cmlwIHdoaXRlc3BhY2UgZnJvbSBhIGJ1ZmZlci4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgY29udHJvbHMgaWYKIAljb21tZW50cyBhcmUgY29uc2lkZXJlZCBjb250ZW50cyB0byBiZSByZW1vdmVkIG9yIG5vdC4KIAorYHN0cmJ1Zl9zcGxpdF9idWZgOjoKK2BzdHJidWZfc3BsaXRfc3RyYDo6Citgc3RyYnVmX3NwbGl0X21heGA6OgorYHN0cmJ1Zl9zcGxpdGA6OgorCisJU3BsaXQgYSBzdHJpbmcgb3Igc3RyYnVmIGludG8gYSBsaXN0IG9mIHN0cmJ1ZnMgYXQgYSBzcGVjaWZpZWQKKwl0ZXJtaW5hdG9yIGNoYXJhY3Rlci4gIFRoZSByZXR1cm5lZCBzdWJzdHJpbmdzIGluY2x1ZGUgdGhlCisJdGVybWluYXRvciBjaGFyYWN0ZXJzLiAgU29tZSBvZiB0aGVzZSBmdW5jdGlvbnMgdGFrZSBhIGBtYXhgCisJcGFyYW1ldGVyLCB3aGljaCwgaWYgcG9zaXRpdmUsIGxpbWl0cyB0aGUgb3V0cHV0IHRvIHRoYXQKKwludW1iZXIgb2Ygc3Vic3RyaW5ncy4KKworYHN0cmJ1Zl9saXN0X2ZyZWVgOjoKKworCUZyZWUgYSBsaXN0IG9mIHN0cmJ1ZnMgKGZvciBleGFtcGxlLCB0aGUgcmV0dXJuIHZhbHVlcyBvZiB0aGUKKwlgc3RyYnVmX3NwbGl0KClgIGZ1bmN0aW9ucykuCisKIGBsYXVuY2hfZWRpdG9yYDo6CiAKIAlMYXVuY2ggdGhlIHVzZXIgcHJlZmVycmVkIGVkaXRvciB0byBlZGl0IGEgZmlsZSBhbmQgZmlsbCB0aGUgYnVmZmVyCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktc3RyaW5nLWxpc3QudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXN0cmluZy1saXN0LnR4dAppbmRleCA1YTBjMTRmLi4yMGJlMzQ4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktc3RyaW5nLWxpc3QudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1zdHJpbmctbGlzdC50eHQKQEAgLTEsOCArMSw5IEBACiBzdHJpbmctbGlzdCBBUEkKID09PT09PT09PT09PT09PQogCi1UaGUgc3RyaW5nX2xpc3QgQVBJIG9mZmVycyBhIGRhdGEgc3RydWN0dXJlIGFuZCBmdW5jdGlvbnMgdG8gaGFuZGxlIHNvcnRlZAotYW5kIHVuc29ydGVkIHN0cmluZyBsaXN0cy4KK1RoZSBzdHJpbmdfbGlzdCBBUEkgb2ZmZXJzIGEgZGF0YSBzdHJ1Y3R1cmUgYW5kIGZ1bmN0aW9ucyB0byBoYW5kbGUKK3NvcnRlZCBhbmQgdW5zb3J0ZWQgc3RyaW5nIGxpc3RzLiAgQSAic29ydGVkIiBsaXN0IGlzIG9uZSB3aG9zZQorZW50cmllcyBhcmUgc29ydGVkIGJ5IHN0cmluZyB2YWx1ZSBpbiBgc3RyY21wKClgIG9yZGVyLgogCiBUaGUgJ3N0cmluZ19saXN0JyBzdHJ1Y3QgdXNlZCB0byBiZSBjYWxsZWQgJ3BhdGhfbGlzdCcsIGJ1dCB3YXMgcmVuYW1lZAogYmVjYXVzZSBpdCBpcyBub3Qgc3BlY2lmaWMgdG8gcGF0aHMuCkBAIC0yMCw4ICsyMSw5IEBACiBtZW1iZXIgKHlvdSBuZWVkIHRoaXMgaWYgeW91IGFkZCB0aGluZ3MgbGF0ZXIpIGFuZCB5b3Ugc2hvdWxkIHNldCB0aGUKIGBucmAgYW5kIGBhbGxvY2AgbWVtYmVycyBpbiB0aGF0IGNhc2UsIHRvby4KIAotLiBBZGRzIG5ldyBpdGVtcyB0byB0aGUgbGlzdCwgdXNpbmcgYHN0cmluZ19saXN0X2FwcGVuZGAgb3IKLSAgYHN0cmluZ19saXN0X2luc2VydGAuCisuIEFkZHMgbmV3IGl0ZW1zIHRvIHRoZSBsaXN0LCB1c2luZyBgc3RyaW5nX2xpc3RfYXBwZW5kYCwKKyAgYHN0cmluZ19saXN0X2FwcGVuZF9ub2R1cGAsIGBzdHJpbmdfbGlzdF9pbnNlcnRgLAorICBgc3RyaW5nX2xpc3Rfc3BsaXRgLCBhbmQvb3IgYHN0cmluZ19saXN0X3NwbGl0X2luX3BsYWNlYC4KIAogLiBDYW4gY2hlY2sgaWYgYSBzdHJpbmcgaXMgaW4gdGhlIGxpc3QgdXNpbmcgYHN0cmluZ19saXN0X2hhc19zdHJpbmdgIG9yCiAgIGB1bnNvcnRlZF9zdHJpbmdfbGlzdF9oYXNfc3RyaW5nYCBhbmQgZ2V0IGl0IGZyb20gdGhlIGxpc3QgdXNpbmcKQEAgLTI5LDE4ICszMSwyNCBAQAogCiAuIENhbiBzb3J0IGFuIHVuc29ydGVkIGxpc3QgdXNpbmcgYHNvcnRfc3RyaW5nX2xpc3RgLgogCisuIENhbiByZW1vdmUgZHVwbGljYXRlIGl0ZW1zIGZyb20gYSBzb3J0ZWQgbGlzdCB1c2luZworICBgc3RyaW5nX2xpc3RfcmVtb3ZlX2R1cGxpY2F0ZXNgLgorCiAuIENhbiByZW1vdmUgaW5kaXZpZHVhbCBpdGVtcyBvZiBhbiB1bnNvcnRlZCBsaXN0IHVzaW5nCiAgIGB1bnNvcnRlZF9zdHJpbmdfbGlzdF9kZWxldGVfaXRlbWAuCiAKKy4gQ2FuIHJlbW92ZSBpdGVtcyBub3QgbWF0Y2hpbmcgYSBjcml0ZXJpb24gZnJvbSBhIHNvcnRlZCBvciB1bnNvcnRlZAorICBsaXN0IHVzaW5nIGBmaWx0ZXJfc3RyaW5nX2xpc3RgLCBvciByZW1vdmUgZW1wdHkgc3RyaW5ncyB1c2luZworICBgc3RyaW5nX2xpc3RfcmVtb3ZlX2VtcHR5X2l0ZW1zYC4KKwogLiBGaW5hbGx5IGl0IHNob3VsZCBmcmVlIHRoZSBsaXN0IHVzaW5nIGBzdHJpbmdfbGlzdF9jbGVhcmAuCiAKIEV4YW1wbGU6CiAKIC0tLS0KLXN0cnVjdCBzdHJpbmdfbGlzdCBsaXN0Oworc3RydWN0IHN0cmluZ19saXN0IGxpc3QgPSBTVFJJTkdfTElTVF9JTklUX05PRFVQOwogaW50IGk7CiAKLW1lbXNldCgmbGlzdCwgMCwgc2l6ZW9mKHN0cnVjdCBzdHJpbmdfbGlzdCkpOwogc3RyaW5nX2xpc3RfYXBwZW5kKCZsaXN0LCAiZm9vIik7CiBzdHJpbmdfbGlzdF9hcHBlbmQoJmxpc3QsICJiYXIiKTsKIGZvciAoaSA9IDA7IGkgPCBsaXN0Lm5yOyBpKyspCkBAIC02MCw2ICs2OCwyMCBAQAogCiAqIEdlbmVyYWwgb25lcyAod29ya3Mgd2l0aCBzb3J0ZWQgYW5kIHVuc29ydGVkIGxpc3RzIGFzIHdlbGwpCiAKK2BmaWx0ZXJfc3RyaW5nX2xpc3RgOjoKKworCUFwcGx5IGEgZnVuY3Rpb24gdG8gZWFjaCBpdGVtIGluIGEgbGlzdCwgcmV0YWluaW5nIG9ubHkgdGhlCisJaXRlbXMgZm9yIHdoaWNoIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUuICBJZiBmcmVlX3V0aWwgaXMKKwl0cnVlLCBjYWxsIGZyZWUoKSBvbiB0aGUgdXRpbCBtZW1iZXJzIG9mIGFueSBpdGVtcyB0aGF0IGhhdmUKKwl0byBiZSBkZWxldGVkLiAgUHJlc2VydmUgdGhlIG9yZGVyIG9mIHRoZSBpdGVtcyB0aGF0IGFyZQorCXJldGFpbmVkLgorCitgc3RyaW5nX2xpc3RfcmVtb3ZlX2VtcHR5X2l0ZW1zYDo6CisKKwlSZW1vdmUgYW55IGVtcHR5IHN0cmluZ3MgZnJvbSB0aGUgbGlzdC4gIElmIGZyZWVfdXRpbCBpcyB0cnVlLAorCWNhbGwgZnJlZSgpIG9uIHRoZSB1dGlsIG1lbWJlcnMgb2YgYW55IGl0ZW1zIHRoYXQgaGF2ZSB0byBiZQorCWRlbGV0ZWQuICBQcmVzZXJ2ZSB0aGUgb3JkZXIgb2YgdGhlIGl0ZW1zIHRoYXQgYXJlIHJldGFpbmVkLgorCiBgcHJpbnRfc3RyaW5nX2xpc3RgOjoKIAogCUR1bXAgYSBzdHJpbmdfbGlzdCB0byBzdGRvdXQsIHVzZWZ1bCBtYWlubHkgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gSXQKQEAgLTk2LDE1ICsxMTgsMzIgQEAKIAlMb29rIHVwIGEgZ2l2ZW4gc3RyaW5nIGluIHRoZSBzdHJpbmdfbGlzdCwgcmV0dXJuaW5nIHRoZSBjb250YWluaW5nCiAJc3RyaW5nX2xpc3RfaXRlbS4gSWYgdGhlIHN0cmluZyBpcyBub3QgZm91bmQsIE5VTEwgaXMgcmV0dXJuZWQuCiAKK2BzdHJpbmdfbGlzdF9yZW1vdmVfZHVwbGljYXRlc2A6OgorCisJUmVtb3ZlIGFsbCBidXQgdGhlIGZpcnN0IG9mIGNvbnNlY3V0aXZlIGVudHJpZXMgdGhhdCBoYXZlIHRoZQorCXNhbWUgc3RyaW5nIHZhbHVlLiAgSWYgZnJlZV91dGlsIGlzIHRydWUsIGNhbGwgZnJlZSgpIG9uIHRoZQorCXV0aWwgbWVtYmVycyBvZiBhbnkgaXRlbXMgdGhhdCBoYXZlIHRvIGJlIGRlbGV0ZWQuCisKICogRnVuY3Rpb25zIGZvciB1bnNvcnRlZCBsaXN0cyBvbmx5CiAKIGBzdHJpbmdfbGlzdF9hcHBlbmRgOjoKIAotCUFwcGVuZCBhIG5ldyBzdHJpbmcgdG8gdGhlIGVuZCBvZiB0aGUgc3RyaW5nX2xpc3QuCisJQXBwZW5kIGEgbmV3IHN0cmluZyB0byB0aGUgZW5kIG9mIHRoZSBzdHJpbmdfbGlzdC4gIElmCisJYHN0cmR1cF9zdHJpbmdgIGlzIHNldCwgdGhlbiB0aGUgc3RyaW5nIGFyZ3VtZW50IGlzIGNvcGllZDsKKwlvdGhlcndpc2UgdGhlIG5ldyBgc3RyaW5nX2xpc3RfZW50cnlgIHJlZmVycyB0byB0aGUgaW5wdXQKKwlzdHJpbmcuCisKK2BzdHJpbmdfbGlzdF9hcHBlbmRfbm9kdXBgOjoKKworCUFwcGVuZCBhIG5ldyBzdHJpbmcgdG8gdGhlIGVuZCBvZiB0aGUgc3RyaW5nX2xpc3QuICBUaGUgbmV3CisJYHN0cmluZ19saXN0X2VudHJ5YCBhbHdheXMgcmVmZXJzIHRvIHRoZSBpbnB1dCBzdHJpbmcsIGV2ZW4gaWYKKwlgc3RyZHVwX3N0cmluZ2AgaXMgc2V0LiAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBoYW5kCisJb3duZXJzaGlwIG9mIGEgbWFsbG9jKCllZCBzdHJpbmcgdG8gYSBgc3RyaW5nX2xpc3RgIHRoYXQgaGFzCisJYHN0cmR1cF9zdHJpbmdgIHNldC4KIAogYHNvcnRfc3RyaW5nX2xpc3RgOjoKIAotCU1ha2UgYW4gdW5zb3J0ZWQgbGlzdCBzb3J0ZWQuCisJU29ydCB0aGUgbGlzdCdzIGVudHJpZXMgYnkgc3RyaW5nIHZhbHVlIGluIGBzdHJjbXAoKWAgb3JkZXIuCiAKIGB1bnNvcnRlZF9zdHJpbmdfbGlzdF9oYXNfc3RyaW5nYDo6CiAKQEAgLTEyNCw2ICsxNjMsMjUgQEAKIAlpcyBzZXQuIFRoZSB0aGlyZCBwYXJhbWV0ZXIgY29udHJvbHMgaWYgdGhlIGB1dGlsYCBwb2ludGVyIG9mIHRoZQogCWl0ZW1zIHNob3VsZCBiZSBmcmVlZCBvciBub3QuCiAKK2BzdHJpbmdfbGlzdF9zcGxpdGA6OgorYHN0cmluZ19saXN0X3NwbGl0X2luX3BsYWNlYDo6CisKKwlTcGxpdCBhIHN0cmluZyBpbnRvIHN1YnN0cmluZ3Mgb24gYSBkZWxpbWl0ZXIgY2hhcmFjdGVyIGFuZAorCWFwcGVuZCB0aGUgc3Vic3RyaW5ncyB0byBhIGBzdHJpbmdfbGlzdGAuICBJZiBgbWF4c3BsaXRgIGlzCisJbm9uLW5lZ2F0aXZlLCB0aGVuIHNwbGl0IGF0IG1vc3QgYG1heHNwbGl0YCB0aW1lcy4gIFJldHVybiB0aGUKKwludW1iZXIgb2Ygc3Vic3RyaW5ncyBhcHBlbmRlZCB0byB0aGUgbGlzdC4KKysKK2BzdHJpbmdfbGlzdF9zcGxpdGAgcmVxdWlyZXMgYSBgc3RyaW5nX2xpc3RgIHRoYXQgaGFzIGBzdHJkdXBfc3RyaW5nc2AKK3NldCB0byB0cnVlOyBpdCBsZWF2ZXMgdGhlIGlucHV0IHN0cmluZyB1bnRvdWNoZWQgYW5kIG1ha2VzIGNvcGllcyBvZgordGhlIHN1YnN0cmluZ3MgaW4gbmV3bHktYWxsb2NhdGVkIG1lbW9yeS4KK2BzdHJpbmdfbGlzdF9zcGxpdF9pbl9wbGFjZWAgcmVxdWlyZXMgYSBgc3RyaW5nX2xpc3RgIHRoYXQgaGFzCitgc3RyZHVwX3N0cmluZ3NgIHNldCB0byBmYWxzZTsgaXQgc3BsaXRzIHRoZSBpbnB1dCBzdHJpbmcgaW4gcGxhY2UsCitvdmVyd3JpdGluZyB0aGUgZGVsaW1pdGVyIGNoYXJhY3RlcnMgd2l0aCBOVUxzIGFuZCBjcmVhdGluZyBuZXcKK3N0cmluZ19saXN0X2l0ZW1zIHRoYXQgcG9pbnQgaW50byB0aGUgb3JpZ2luYWwgc3RyaW5nICh0aGUgb3JpZ2luYWwKK3N0cmluZyBtdXN0IHRoZXJlZm9yZSBub3QgYmUgbW9kaWZpZWQgb3IgZnJlZWQgd2hpbGUgdGhlIGBzdHJpbmdfbGlzdGAKK2lzIGluIHVzZSkuCisKKwogRGF0YSBzdHJ1Y3R1cmVzCiAtLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvaW5kZXgtZm9ybWF0LnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2luZGV4LWZvcm1hdC50eHQKaW5kZXggOWQyNWIzMC4uMDgxMDI1MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvaW5kZXgtZm9ybWF0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9pbmRleC1mb3JtYXQudHh0CkBAIC0xLDcgKzEsNyBAQAotR0lUIGluZGV4IGZvcm1hdAorR2l0IGluZGV4IGZvcm1hdAogPT09PT09PT09PT09PT09PQogCi09IFRoZSBnaXQgaW5kZXggZmlsZSBoYXMgdGhlIGZvbGxvd2luZyBmb3JtYXQKKz09IFRoZSBHaXQgaW5kZXggZmlsZSBoYXMgdGhlIGZvbGxvd2luZyBmb3JtYXQKIAogICBBbGwgYmluYXJ5IG51bWJlcnMgYXJlIGluIG5ldHdvcmsgYnl0ZSBvcmRlci4gVmVyc2lvbiAyIGlzIGRlc2NyaWJlZAogICBoZXJlIHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLgpAQCAtMTIsNyArMTIsNyBAQAogICAgICAgIFRoZSBzaWduYXR1cmUgaXMgeyAnRCcsICdJJywgJ1InLCAnQycgfSAoc3RhbmRzIGZvciAiZGlyY2FjaGUiKQogCiAgICAgIDQtYnl0ZSB2ZXJzaW9uIG51bWJlcjoKLSAgICAgICBUaGUgY3VycmVudCBzdXBwb3J0ZWQgdmVyc2lvbnMgYXJlIDIgYW5kIDMuCisgICAgICAgVGhlIGN1cnJlbnQgc3VwcG9ydGVkIHZlcnNpb25zIGFyZSAyLCAzIGFuZCA0LgogCiAgICAgIDMyLWJpdCBudW1iZXIgb2YgaW5kZXggZW50cmllcy4KIApAQCAtMjEsOSArMjEsOSBAQAogICAgLSBFeHRlbnNpb25zCiAKICAgICAgRXh0ZW5zaW9ucyBhcmUgaWRlbnRpZmllZCBieSBzaWduYXR1cmUuIE9wdGlvbmFsIGV4dGVuc2lvbnMgY2FuCi0gICAgIGJlIGlnbm9yZWQgaWYgR0lUIGRvZXMgbm90IHVuZGVyc3RhbmQgdGhlbS4KKyAgICAgYmUgaWdub3JlZCBpZiBHaXQgZG9lcyBub3QgdW5kZXJzdGFuZCB0aGVtLgogCi0gICAgIEdJVCBjdXJyZW50bHkgc3VwcG9ydHMgY2FjaGVkIHRyZWUgYW5kIHJlc29sdmUgdW5kbyBleHRlbnNpb25zLgorICAgICBHaXQgY3VycmVudGx5IHN1cHBvcnRzIGNhY2hlZCB0cmVlIGFuZCByZXNvbHZlIHVuZG8gZXh0ZW5zaW9ucy4KIAogICAgICA0LWJ5dGUgZXh0ZW5zaW9uIHNpZ25hdHVyZS4gSWYgdGhlIGZpcnN0IGJ5dGUgaXMgJ0EnLi4nWicgdGhlCiAgICAgIGV4dGVuc2lvbiBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIGlnbm9yZWQuCkBAIC05Myw4ICs5Myw4IEBACiAgICAgMTItYml0IG5hbWUgbGVuZ3RoIGlmIHRoZSBsZW5ndGggaXMgbGVzcyB0aGFuIDB4RkZGOyBvdGhlcndpc2UgMHhGRkYKICAgICBpcyBzdG9yZWQgaW4gdGhpcyBmaWVsZC4KIAotICAoVmVyc2lvbiAzKSBBIDE2LWJpdCBmaWVsZCwgb25seSBhcHBsaWNhYmxlIGlmIHRoZSAiZXh0ZW5kZWQgZmxhZyIKLSAgYWJvdmUgaXMgMSwgc3BsaXQgaW50byAoaGlnaCB0byBsb3cgYml0cykuCisgIChWZXJzaW9uIDMgb3IgbGF0ZXIpIEEgMTYtYml0IGZpZWxkLCBvbmx5IGFwcGxpY2FibGUgaWYgdGhlCisgICJleHRlbmRlZCBmbGFnIiBhYm92ZSBpcyAxLCBzcGxpdCBpbnRvIChoaWdoIHRvIGxvdyBiaXRzKS4KIAogICAgIDEtYml0IHJlc2VydmVkIGZvciBmdXR1cmUKIApAQCAtMTYxLDggKzE2MSw5IEBACiAgICAgdGhpcyBzcGFuIG9mIGluZGV4IGFzIGEgdHJlZS4KIAogICBBbiBlbnRyeSBjYW4gYmUgaW4gYW4gaW52YWxpZGF0ZWQgc3RhdGUgYW5kIGlzIHJlcHJlc2VudGVkIGJ5IGhhdmluZwotICAtMSBpbiB0aGUgZW50cnlfY291bnQgZmllbGQuIEluIHRoaXMgY2FzZSwgdGhlcmUgaXMgbm8gb2JqZWN0IG5hbWUKLSAgYW5kIHRoZSBuZXh0IGVudHJ5IHN0YXJ0cyBpbW1lZGlhdGVseSBhZnRlciB0aGUgbmV3bGluZS4KKyAgYSBuZWdhdGl2ZSBudW1iZXIgaW4gdGhlIGVudHJ5X2NvdW50IGZpZWxkLiBJbiB0aGlzIGNhc2UsIHRoZXJlIGlzIG5vCisgIG9iamVjdCBuYW1lIGFuZCB0aGUgbmV4dCBlbnRyeSBzdGFydHMgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIG5ld2xpbmUuCisgIFdoZW4gd3JpdGluZyBhbiBpbnZhbGlkIGVudHJ5LCAtMSBzaG91bGQgYWx3YXlzIGJlIHVzZWQgYXMgZW50cnlfY291bnQuCiAKICAgVGhlIGVudHJpZXMgYXJlIHdyaXR0ZW4gb3V0IGluIHRoZSB0b3AtZG93biwgZGVwdGgtZmlyc3Qgb3JkZXIuICBUaGUKICAgZmlyc3QgZW50cnkgcmVwcmVzZW50cyB0aGUgcm9vdCBsZXZlbCBvZiB0aGUgcmVwb3NpdG9yeSwgZm9sbG93ZWQgYnkgdGhlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9wYWNrLWZvcm1hdC50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9wYWNrLWZvcm1hdC50eHQKaW5kZXggMTgwM2U2NC4uOGU1YmY2MCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcGFjay1mb3JtYXQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3BhY2stZm9ybWF0LnR4dApAQCAtMSw3ICsxLDcgQEAKLUdJVCBwYWNrIGZvcm1hdAorR2l0IHBhY2sgZm9ybWF0CiA9PT09PT09PT09PT09PT0KIAotPSBwYWNrLSoucGFjayBmaWxlcyBoYXZlIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgorPT0gcGFjay0qLnBhY2sgZmlsZXMgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1hdDoKIAogICAgLSBBIGhlYWRlciBhcHBlYXJzIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmc6CiAKQEAgLTksNyArOSw3IEBACiAgICAgICAgICBUaGUgc2lnbmF0dXJlIGlzOiB7J1AnLCAnQScsICdDJywgJ0snfQogCiAgICAgIDQtYnl0ZSB2ZXJzaW9uIG51bWJlciAobmV0d29yayBieXRlIG9yZGVyKToKLSAgICAgICAgIEdJVCBjdXJyZW50bHkgYWNjZXB0cyB2ZXJzaW9uIG51bWJlciAyIG9yIDMgYnV0CisJIEdpdCBjdXJyZW50bHkgYWNjZXB0cyB2ZXJzaW9uIG51bWJlciAyIG9yIDMgYnV0CiAgICAgICAgICBnZW5lcmF0ZXMgdmVyc2lvbiAyIG9ubHkuCiAKICAgICAgNC1ieXRlIG51bWJlciBvZiBvYmplY3RzIGNvbnRhaW5lZCBpbiB0aGUgcGFjayAobmV0d29yayBieXRlIG9yZGVyKQpAQCAtMjYsMTUgKzI2LDE3IEBACiAKICAgICAgKGRlbHRpZmllZCByZXByZXNlbnRhdGlvbikKICAgICAgbi1ieXRlIHR5cGUgYW5kIGxlbmd0aCAoMy1iaXQgdHlwZSwgKG4tMSkqNys0LWJpdCBsZW5ndGgpCi0gICAgIDIwLWJ5dGUgYmFzZSBvYmplY3QgbmFtZQorICAgICAyMC1ieXRlIGJhc2Ugb2JqZWN0IG5hbWUgaWYgT0JKX1JFRl9ERUxUQSBvciBhIG5lZ2F0aXZlIHJlbGF0aXZlCisJIG9mZnNldCBmcm9tIHRoZSBkZWx0YSBvYmplY3QncyBwb3NpdGlvbiBpbiB0aGUgcGFjayBpZiB0aGlzCisJIGlzIGFuIE9CSl9PRlNfREVMVEEgb2JqZWN0CiAgICAgIGNvbXByZXNzZWQgZGVsdGEgZGF0YQogCiAgICAgIE9ic2VydmF0aW9uOiBsZW5ndGggb2YgZWFjaCBvYmplY3QgaXMgZW5jb2RlZCBpbiBhIHZhcmlhYmxlCiAgICAgIGxlbmd0aCBmb3JtYXQgYW5kIGlzIG5vdCBjb25zdHJhaW5lZCB0byAzMi1iaXQgb3IgYW55dGhpbmcuCiAKLSAgLSBUaGUgdHJhaWxlciByZWNvcmRzIDIwLWJ5dGUgU0hBMSBjaGVja3N1bSBvZiBhbGwgb2YgdGhlIGFib3ZlLgorICAtIFRoZSB0cmFpbGVyIHJlY29yZHMgMjAtYnl0ZSBTSEEtMSBjaGVja3N1bSBvZiBhbGwgb2YgdGhlIGFib3ZlLgogCi09IE9yaWdpbmFsICh2ZXJzaW9uIDEpIHBhY2stKi5pZHggZmlsZXMgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1hdDoKKz09IE9yaWdpbmFsICh2ZXJzaW9uIDEpIHBhY2stKi5pZHggZmlsZXMgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1hdDoKIAogICAtIFRoZSBoZWFkZXIgY29uc2lzdHMgb2YgMjU2IDQtYnl0ZSBuZXR3b3JrIGJ5dGUgb3JkZXIKICAgICBpbnRlZ2Vycy4gIE4tdGggZW50cnkgb2YgdGhpcyB0YWJsZSByZWNvcmRzIHRoZSBudW1iZXIgb2YKQEAgLTUzLDEwICs1NSwxMCBAQAogCiAgIC0gVGhlIGZpbGUgaXMgY29uY2x1ZGVkIHdpdGggYSB0cmFpbGVyOgogCi0gICAgQSBjb3B5IG9mIHRoZSAyMC1ieXRlIFNIQTEgY2hlY2tzdW0gYXQgdGhlIGVuZCBvZgorICAgIEEgY29weSBvZiB0aGUgMjAtYnl0ZSBTSEEtMSBjaGVja3N1bSBhdCB0aGUgZW5kIG9mCiAgICAgY29ycmVzcG9uZGluZyBwYWNrZmlsZS4KIAotICAgIDIwLWJ5dGUgU0hBMS1jaGVja3N1bSBvZiBhbGwgb2YgdGhlIGFib3ZlLgorICAgIDIwLWJ5dGUgU0hBLTEtY2hlY2tzdW0gb2YgYWxsIG9mIHRoZSBhYm92ZS4KIAogUGFjayBJZHggZmlsZToKIApAQCAtMTA0LDcgKzEwNiw3IEBACiAgICAgICAgIElmIGl0IGlzIG5vdCBERUxUQSwgdGhlbiBkZWZsYXRlZCBieXRlcyAodGhlIHNpemUgYWJvdmUKIAkJaXMgdGhlIHNpemUgYmVmb3JlIGNvbXByZXNzaW9uKS4KIAlJZiBpdCBpcyBSRUZfREVMVEEsIHRoZW4KLQkgIDIwLWJ5dGUgYmFzZSBvYmplY3QgbmFtZSBTSEExICh0aGUgc2l6ZSBhYm92ZSBpcyB0aGUKKwkgIDIwLWJ5dGUgYmFzZSBvYmplY3QgbmFtZSBTSEEtMSAodGhlIHNpemUgYWJvdmUgaXMgdGhlCiAJCXNpemUgb2YgdGhlIGRlbHRhIGRhdGEgdGhhdCBmb2xsb3dzKS4KICAgICAgICAgICBkZWx0YSBkYXRhLCBkZWZsYXRlZC4KIAlJZiBpdCBpcyBPRlNfREVMVEEsIHRoZW4KQEAgLTEyMyw4ICsxMjUsOCBAQAogCiAKIAotPSBWZXJzaW9uIDIgcGFjay0qLmlkeCBmaWxlcyBzdXBwb3J0IHBhY2tzIGxhcmdlciB0aGFuIDQgR2lCLCBhbmQKLSAgaGF2ZSBzb21lIG90aGVyIHJlb3JnYW5pemF0aW9ucy4gIFRoZXkgaGF2ZSB0aGUgZm9ybWF0OgorPT0gVmVyc2lvbiAyIHBhY2stKi5pZHggZmlsZXMgc3VwcG9ydCBwYWNrcyBsYXJnZXIgdGhhbiA0IEdpQiwgYW5kCisgICBoYXZlIHNvbWUgb3RoZXIgcmVvcmdhbml6YXRpb25zLiAgVGhleSBoYXZlIHRoZSBmb3JtYXQ6CiAKICAgLSBBIDQtYnl0ZSBtYWdpYyBudW1iZXIgJ1wzNzd0T2MnIHdoaWNoIGlzIGFuIHVucmVhc29uYWJsZQogICAgIGZhbm91dFswXSB2YWx1ZS4KQEAgLTEzMyw3ICsxMzUsNyBAQAogCiAgIC0gQSAyNTYtZW50cnkgZmFuLW91dCB0YWJsZSBqdXN0IGxpa2UgdjEuCiAKLSAgLSBBIHRhYmxlIG9mIHNvcnRlZCAyMC1ieXRlIFNIQTEgb2JqZWN0IG5hbWVzLiAgVGhlc2UgYXJlCisgIC0gQSB0YWJsZSBvZiBzb3J0ZWQgMjAtYnl0ZSBTSEEtMSBvYmplY3QgbmFtZXMuICBUaGVzZSBhcmUKICAgICBwYWNrZWQgdG9nZXRoZXIgd2l0aG91dCBvZmZzZXQgdmFsdWVzIHRvIHJlZHVjZSB0aGUgY2FjaGUKICAgICBmb290cHJpbnQgb2YgdGhlIGJpbmFyeSBzZWFyY2ggZm9yIGEgc3BlY2lmaWMgb2JqZWN0IG5hbWUuCiAKQEAgLTE1NCw3ICsxNTYsNyBAQAogCiAgIC0gVGhlIHNhbWUgdHJhaWxlciBhcyBhIHYxIHBhY2sgZmlsZToKIAotICAgIEEgY29weSBvZiB0aGUgMjAtYnl0ZSBTSEExIGNoZWNrc3VtIGF0IHRoZSBlbmQgb2YKKyAgICBBIGNvcHkgb2YgdGhlIDIwLWJ5dGUgU0hBLTEgY2hlY2tzdW0gYXQgdGhlIGVuZCBvZgogICAgIGNvcnJlc3BvbmRpbmcgcGFja2ZpbGUuCiAKLSAgICAyMC1ieXRlIFNIQTEtY2hlY2tzdW0gb2YgYWxsIG9mIHRoZSBhYm92ZS4KKyAgICAyMC1ieXRlIFNIQS0xLWNoZWNrc3VtIG9mIGFsbCBvZiB0aGUgYWJvdmUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9wYWNrLWhldXJpc3RpY3MudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcGFjay1oZXVyaXN0aWNzLnR4dAppbmRleCAxMDNlYjVkLi44YjdhZTFjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9wYWNrLWhldXJpc3RpY3MudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3BhY2staGV1cmlzdGljcy50eHQKQEAgLTUsMTEgKzUsMTEgQEAKIAogICAgICAgICAgICAgICAgICAgV2hlcmUgZG8gSSBnbwogICAgICAgICAgICAgICAgdG8gbGVhcm4gdGhlIGRldGFpbHMKLQkgICAgb2YgZ2l0J3MgcGFja2luZyBoZXVyaXN0aWNzPworCSAgICBvZiBHaXQncyBwYWNraW5nIGhldXJpc3RpY3M/CiAKIEJlIGNhcmVmdWwgd2hhdCB5b3UgYXNrIQogCi1Gb2xsb3dlcnMgb2YgdGhlIGdpdCwgcGxlYXNlIG9wZW4gdGhlIGdpdCBJUkMgTG9nIGFuZCB0dXJuIHRvCitGb2xsb3dlcnMgb2YgdGhlIEdpdCwgcGxlYXNlIG9wZW4gdGhlIEdpdCBJUkMgTG9nIGFuZCB0dXJuIHRvCiBGZWJydWFyeSAxMCwgMjAwNi4KIAogSXQncyBhIHJhcmUgb2NjYXNpb24sIGFuZCB3ZSBhcmUgam9pbmVkIGJ5IHRoZSBLaW5nIEdpdCBIaW1zZWxmLApAQCAtMTksNyArMTksNyBAQAogTGV0J3MgbGlzdGVuIGluIQogCiAgICAgPG5qc2A+IE9oLCBoZXJlJ3MgYSByZWFsbHkgc3R1cGlkIHF1ZXN0aW9uIC0tIHdoZXJlIGRvIEkgZ28gdG8KLSAgICAgICAgbGVhcm4gdGhlIGRldGFpbHMgb2YgZ2l0J3MgcGFja2luZyBoZXVyaXN0aWNzPyAgZ29vZ2xlIGF2YWlscworCWxlYXJuIHRoZSBkZXRhaWxzIG9mIEdpdCdzIHBhY2tpbmcgaGV1cmlzdGljcz8gIGdvb2dsZSBhdmFpbHMKICAgICAgICAgbWUgbm90LCByZWFkaW5nIHRoZSBzb3VyY2UgZGlkbid0IGhlbHAgYSBsb3QsIGFuZCB3YWRpbmcKICAgICAgICAgdGhyb3VnaCB0aGUgd2hvbGUgbWFpbGluZyBsaXN0IHNlZW1zIGxlc3MgZWZmaWNpZW50IHRoYW4gYW55CiAgICAgICAgIG9mIHRoYXQuCkBAIC0zNyw3ICszNyw3IEBACiAKICAgICA8bGludXM+IG5qcywgSSBkb24ndCB0aGluayB0aGUgZG9jcyBleGlzdC4gVGhhdCdzIHNvbWV0aGluZyB3aGVyZQogCSBJIGRvbid0IHRoaW5rIGFueWJvZHkgZWxzZSB0aGFuIG1lIGV2ZW4gcmVhbGx5IGdvdCBpbnZvbHZlZC4KLQkgTW9zdCBvZiB0aGUgcmVzdCBvZiBnaXQgb3RoZXJzIGhhdmUgYmVlbiBidXN5IHdpdGggKGVzcGVjaWFsbHkKKwkgTW9zdCBvZiB0aGUgcmVzdCBvZiBHaXQgb3RoZXJzIGhhdmUgYmVlbiBidXN5IHdpdGggKGVzcGVjaWFsbHkKIAkgSnVuaW8pLCBidXQgcGFja2luZyBub2JvZHkgdG91Y2hlZCBhZnRlciBJIGRpZCBpdC4KIAogSXQncyBjcnlwdGljLCB5ZXQgdmFndWUuICBMaW51cyBpbiBzdHlsZSBmb3Igc3VyZS4gIFdpc2UgbWVuCkBAIC01Nyw3ICs1Nyw3IEBACiAKIEFuZCBzd2l0Y2guICBUaGF0IG91Z2h0IHRvIGRvIGl0IQogCi0gICAgPGxpbnVzPiBSZW1lbWJlcjogZ2l0IHJlYWxseSBkb2Vzbid0IGZvbGxvdyBmaWxlcy4gU28gd2hhdCBpdCBkb2VzIGlzCisgICAgPGxpbnVzPiBSZW1lbWJlcjogR2l0IHJlYWxseSBkb2Vzbid0IGZvbGxvdyBmaWxlcy4gU28gd2hhdCBpdCBkb2VzIGlzCiAgICAgICAgIC0gZ2VuZXJhdGUgYSBsaXN0IG9mIGFsbCBvYmplY3RzCiAgICAgICAgIC0gc29ydCB0aGUgbGlzdCBhY2NvcmRpbmcgdG8gbWFnaWMgaGV1cmlzdGljcwogICAgICAgICAtIHdhbGsgdGhlIGxpc3QsIHVzaW5nIGEgc2xpZGluZyB3aW5kb3csIHNlZWluZyBpZiBhbiBvYmplY3QKQEAgLTg5LDcgKzg5LDcgQEAKIAogICAgIDxsaW51cz4gVGhlICJtYWdpYyIgaXMgYWN0dWFsbHkgaW4gdGhlb3J5IHRvdGFsbHkgYXJiaXRyYXJ5LgogICAgICAgICBBTlkgb3JkZXIgd2lsbCBnaXZlIHlvdSBhIHdvcmtpbmcgcGFjaywgYnV0IG5vLCBpdCdzIG5vdAotICAgICAgICBvcmRlcmVkIGJ5IFNIQTEuCisJb3JkZXJlZCBieSBTSEEtMS4KIAogICAgICAgICBCZWZvcmUgdGFsa2luZyBhYm91dCB0aGUgb3JkZXJpbmcgZm9yIHRoZSBzbGlkaW5nIGRlbHRhCiAgICAgICAgIHdpbmRvdywgbGV0J3MgdGFsayBhYm91dCB0aGUgcmVjZW5jeSBvcmRlci4gVGhhdCdzIG1vcmUKQEAgLTM4Miw3ICszODIsNyBAQAogICAgIDxuanNgPiAoaWYgb25seSBpdCBoYXBwZW5lZCBtb3JlLi4uKQogCiAgICAgPGxpbnVzPiBBbnl3YXksIHRoZSBwYWNrLWZpbGUgY291bGQgZWFzaWx5IGJlIGRlbnNlciBzdGlsbCwgYnV0Ci0gICAgICAgIGJlY2F1c2UgaXQncyB1c2VkIGJvdGggZm9yIHN0cmVhbWluZyAodGhlIGdpdCBwcm90b2NvbCkgYW5kCisJYmVjYXVzZSBpdCdzIHVzZWQgYm90aCBmb3Igc3RyZWFtaW5nICh0aGUgR2l0IHByb3RvY29sKSBhbmQKICAgICAgICAgZm9yIG9uLWRpc2ssIGl0IGhhcyBhIGZldyBwZXNzaW1pemF0aW9ucy4KIAogQWN0dWFsbHksIGl0IGlzIGEgbWFkZS11cCB3b3JkLiBCdXQgaXQgaXMgYSBtYWRlLXVwIHdvcmQgYmVpbmcKQEAgLTQzMiwxMiArNDMyLDEyIEBACiBJbiBmYWN0LCBMaW51cyByZWZsZWN0cyBvbiBzb21lIEJhc2ljIEVuZ2luZWVyaW5nIEZ1bmRhbWVudGFscywKIGRlc2lnbiBvcHRpb25zLCBldGMuCiAKLSAgICA8bGludXM+IE1vcmUgaW1wb3J0YW50bHksIHRoZXkgYWxsb3cgZ2l0IHRvIHN0aWxsIF9jb25jZXB0dWFsbHlfCisgICAgPGxpbnVzPiBNb3JlIGltcG9ydGFudGx5LCB0aGV5IGFsbG93IEdpdCB0byBzdGlsbCBfY29uY2VwdHVhbGx5XwogICAgICAgICBuZXZlciBkZWFsIHdpdGggZGVsdGFzIGF0IGFsbCwgYW5kIGJlIGEgIndob2xlIG9iamVjdCIgc3RvcmUuCiAKICAgICAgICAgV2hpY2ggaGFzIHNvbWUgcHJvYmxlbXMgKHdlIGRpc2N1c3NlZCBiYWQgaHVnZS1maWxlCi0gICAgICAgIGJlaGF2aW91ciBvbiB0aGUgZ2l0IGxpc3RzIHRoZSBvdGhlciBkYXkpLCBidXQgaXQgZG9lcyBtZWFuCi0gICAgICAgIHRoYXQgdGhlIGJhc2ljIGdpdCBjb25jZXB0cyBhcmUgcmVhbGx5IHJlYWxseSBzaW1wbGUgYW5kCisJYmVoYXZpb3VyIG9uIHRoZSBHaXQgbGlzdHMgdGhlIG90aGVyIGRheSksIGJ1dCBpdCBkb2VzIG1lYW4KKwl0aGF0IHRoZSBiYXNpYyBHaXQgY29uY2VwdHMgYXJlIHJlYWxseSByZWFsbHkgc2ltcGxlIGFuZAogICAgICAgICBzdHJhaWdodGZvcndhcmQuCiAKICAgICAgICAgSXQncyBhbGwgYmVlbiBxdWl0ZSBzdGFibGUuCkBAIC00NjEsNiArNDYxLDYgQEAKICAgICA8bmpzYD4gOi0pCiAKICAgICA8bmpzYD4gYXBwcmVjaWF0ZSB0aGUgaW5mb2R1bXAsIEkgcmVhbGx5IHdhcyBmYWlsaW5nIHRvIGZpbmQgdGhlCi0gICAgICAgIGRldGFpbHMgb24gZ2l0IHBhY2tzIDotKQorCWRldGFpbHMgb24gR2l0IHBhY2tzIDotKQogCiBBbmQgbm93IHlvdSBrbm93IHRoZSByZXN0IG9mIHRoZSBzdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3BhY2stcHJvdG9jb2wudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcGFjay1wcm90b2NvbC50eHQKaW5kZXggNDljZGM1Ny4uYjg5OGU5NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcGFjay1wcm90b2NvbC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcGFjay1wcm90b2NvbC50eHQKQEAgLTExNyw3ICsxMTcsNyBAQAogLSBUaGUgcmVwb3NpdG9yeSBwYXRoIGlzIGFsd2F5cyBxdW90ZWQgd2l0aCBzaW5nbGUgcXVvdGVzLgogCiBGZXRjaGluZyBEYXRhIEZyb20gYSBTZXJ2ZXIKLT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFdoZW4gb25lIEdpdCByZXBvc2l0b3J5IHdhbnRzIHRvIGdldCBkYXRhIHRoYXQgYSBzZWNvbmQgcmVwb3NpdG9yeQogaGFzLCB0aGUgZmlyc3QgY2FuICdmZXRjaCcgZnJvbSB0aGUgc2Vjb25kLiAgVGhpcyBvcGVyYXRpb24gZGV0ZXJtaW5lcwpAQCAtMTM0LDcgKzEzNCw4IEBACiAKICAgICQgZWNobyAtZSAtbiAiMDAzOWdpdC11cGxvYWQtcGFjayAvc2NoYWNvbi9naXRib29rLmdpdFwwaG9zdD1leGFtcGxlLmNvbVwwIiB8CiAgICAgICBuYyAtdiBleGFtcGxlLmNvbSA5NDE4Ci0gICAwMDg4NzIxN2E3YzdlNTgyYzQ2Y2VjMjJhMTMwYWRmNGI5ZDdkOTUwZmJhMCBIRUFEXDBtdWx0aV9hY2sgdGhpbi1wYWNrIHNpZGUtYmFuZCBzaWRlLWJhbmQtNjRrIG9mcy1kZWx0YSBzaGFsbG93IG5vLXByb2dyZXNzIGluY2x1ZGUtdGFnCisgICAwMDg4NzIxN2E3YzdlNTgyYzQ2Y2VjMjJhMTMwYWRmNGI5ZDdkOTUwZmJhMCBIRUFEXDBtdWx0aV9hY2sgdGhpbi1wYWNrCisJCXNpZGUtYmFuZCBzaWRlLWJhbmQtNjRrIG9mcy1kZWx0YSBzaGFsbG93IG5vLXByb2dyZXNzIGluY2x1ZGUtdGFnCiAgICAwMDQ0MWQzZmNkNWNlZDQ0NWQxYWJjNDAyMjI1YzBiOGExMjk5NjQxZjQ5NyByZWZzL2hlYWRzL2ludGVncmF0aW9uCiAgICAwMDNmNzIxN2E3YzdlNTgyYzQ2Y2VjMjJhMTMwYWRmNGI5ZDdkOTUwZmJhMCByZWZzL2hlYWRzL21hc3RlcgogICAgMDAzY2I4OGQyNDQxY2FjMDk3N2ZhZjk4ZWZjODAzMDUwMTIxMTIyMzhkOWQgcmVmcy90YWdzL3YwLjkKQEAgLTIyNyw4ICsyMjgsNyBAQAogVGhlIGNsaWVudCBNVVNUIHdyaXRlIGFsbCBvYmotaWRzIHdoaWNoIGl0IG9ubHkgaGFzIHNoYWxsb3cgY29waWVzCiBvZiAobWVhbmluZyB0aGF0IGl0IGRvZXMgbm90IGhhdmUgdGhlIHBhcmVudHMgb2YgYSBjb21taXQpIGFzCiAnc2hhbGxvdycgbGluZXMgc28gdGhhdCB0aGUgc2VydmVyIGlzIGF3YXJlIG9mIHRoZSBsaW1pdGF0aW9ucyBvZgotdGhlIGNsaWVudCdzIGhpc3RvcnkuIENsaWVudHMgTVVTVCBOT1QgbWVudGlvbiBhbiBvYmotaWQgd2hpY2gKLWl0IGRvZXMgbm90IGtub3cgZXhpc3RzIG9uIHRoZSBzZXJ2ZXIuCit0aGUgY2xpZW50J3MgaGlzdG9yeS4KIAogVGhlIGNsaWVudCBub3cgc2VuZHMgdGhlIG1heGltdW0gY29tbWl0IGhpc3RvcnkgZGVwdGggaXQgd2FudHMgZm9yCiB0aGlzIHRyYW5zYWN0aW9uLCB3aGljaCBpcyB0aGUgbnVtYmVyIG9mIGNvbW1pdHMgaXQgd2FudHMgZnJvbSB0aGUKQEAgLTI1OSw4ICsyNTksMTAgQEAKIC0tLS0KIAogSWYgdGhlIGNsaWVudCBoYXMgcmVxdWVzdGVkIGEgcG9zaXRpdmUgZGVwdGgsIHRoZSBzZXJ2ZXIgd2lsbCBjb21wdXRlCi10aGUgc2V0IG9mIGNvbW1pdHMgd2hpY2ggYXJlIG5vIGRlZXBlciB0aGFuIHRoZSBkZXNpcmVkIGRlcHRoLCBzdGFydGluZwotYXQgdGhlIGNsaWVudCdzIHdhbnRzLiBUaGUgc2VydmVyIHdyaXRlcyAnc2hhbGxvdycgbGluZXMgZm9yIGVhY2gKK3RoZSBzZXQgb2YgY29tbWl0cyB3aGljaCBhcmUgbm8gZGVlcGVyIHRoYW4gdGhlIGRlc2lyZWQgZGVwdGguIFRoZSBzZXQKK29mIGNvbW1pdHMgc3RhcnQgYXQgdGhlIGNsaWVudCdzIHdhbnRzLgorCitUaGUgc2VydmVyIHdyaXRlcyAnc2hhbGxvdycgbGluZXMgZm9yIGVhY2gKIGNvbW1pdCB3aG9zZSBwYXJlbnRzIHdpbGwgbm90IGJlIHNlbnQgYXMgYSByZXN1bHQuIFRoZSBzZXJ2ZXIgd3JpdGVzCiBhbiAndW5zaGFsbG93JyBsaW5lIGZvciBlYWNoIGNvbW1pdCB3aGljaCB0aGUgY2xpZW50IGhhcyBpbmRpY2F0ZWQgaXMKIHNoYWxsb3csIGJ1dCBpcyBubyBsb25nZXIgc2hhbGxvdyBhdCB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBkZXB0aApAQCAtNDE5LDcgKzQyMSw3IEBACiAKIAogUHVzaGluZyBEYXRhIFRvIGEgU2VydmVyCi09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBQdXNoaW5nIGRhdGEgdG8gYSBzZXJ2ZXIgd2lsbCBpbnZva2UgdGhlICdyZWNlaXZlLXBhY2snIHByb2Nlc3Mgb24gdGhlCiBzZXJ2ZXIsIHdoaWNoIHdpbGwgYWxsb3cgdGhlIGNsaWVudCB0byB0ZWxsIGl0IHdoaWNoIHJlZmVyZW5jZXMgaXQgc2hvdWxkCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9yYWN5LWdpdC50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9yYWN5LWdpdC50eHQKaW5kZXggNTNhYTBjOC4uNmRjODJjYSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcmFjeS1naXQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3JhY3ktZ2l0LnR4dApAQCAtMSwyMSArMSwyMSBAQAotVXNlIG9mIGluZGV4IGFuZCBSYWN5IGdpdCBwcm9ibGVtCitVc2Ugb2YgaW5kZXggYW5kIFJhY3kgR2l0IHByb2JsZW0KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBCYWNrZ3JvdW5kCiAtLS0tLS0tLS0tCiAKLVRoZSBpbmRleCBpcyBvbmUgb2YgdGhlIG1vc3QgaW1wb3J0YW50IGRhdGEgc3RydWN0dXJlcyBpbiBnaXQuCitUaGUgaW5kZXggaXMgb25lIG9mIHRoZSBtb3N0IGltcG9ydGFudCBkYXRhIHN0cnVjdHVyZXMgaW4gR2l0LgogSXQgcmVwcmVzZW50cyBhIHZpcnR1YWwgd29ya2luZyB0cmVlIHN0YXRlIGJ5IHJlY29yZGluZyBsaXN0IG9mCiBwYXRocyBhbmQgdGhlaXIgb2JqZWN0IG5hbWVzIGFuZCBzZXJ2ZXMgYXMgYSBzdGFnaW5nIGFyZWEgdG8KIHdyaXRlIG91dCB0aGUgbmV4dCB0cmVlIG9iamVjdCB0byBiZSBjb21taXR0ZWQuICBUaGUgc3RhdGUgaXMKICJ2aXJ0dWFsIiBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBoYXZlIHRvLCBhbmQKIG9mdGVuIGRvZXMgbm90LCBtYXRjaCB0aGUgZmlsZXMgaW4gdGhlIHdvcmtpbmcgdHJlZS4KIAotVGhlcmUgYXJlIGNhc2VzIGdpdCBuZWVkcyB0byBleGFtaW5lIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZQorVGhlcmUgYXJlIGNhc2VzIEdpdCBuZWVkcyB0byBleGFtaW5lIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZQogdmlydHVhbCB3b3JraW5nIHRyZWUgc3RhdGUgaW4gdGhlIGluZGV4IGFuZCB0aGUgZmlsZXMgaW4gdGhlCiB3b3JraW5nIHRyZWUuICBUaGUgbW9zdCBvYnZpb3VzIGNhc2UgaXMgd2hlbiB0aGUgdXNlciBhc2tzIGBnaXQKIGRpZmZgIChvciBpdHMgbG93IGxldmVsIGltcGxlbWVudGF0aW9uLCBgZ2l0IGRpZmYtZmlsZXNgKSBvcgotYGdpdC1scy1maWxlcyAtLW1vZGlmaWVkYC4gIEluIGFkZGl0aW9uLCBnaXQgaW50ZXJuYWxseSBjaGVja3MKK2BnaXQtbHMtZmlsZXMgLS1tb2RpZmllZGAuICBJbiBhZGRpdGlvbiwgR2l0IGludGVybmFsbHkgY2hlY2tzCiBpZiB0aGUgZmlsZXMgaW4gdGhlIHdvcmtpbmcgdHJlZSBhcmUgZGlmZmVyZW50IGZyb20gd2hhdCBhcmUKIHJlY29yZGVkIGluIHRoZSBpbmRleCB0byBhdm9pZCBzdG9tcGluZyBvbiBsb2NhbCBjaGFuZ2VzIGluIHRoZW0KIGR1cmluZyBwYXRjaCBhcHBsaWNhdGlvbiwgc3dpdGNoaW5nIGJyYW5jaGVzLCBhbmQgbWVyZ2luZy4KQEAgLTI0LDE2ICsyNCwxNiBAQAogd29ya2luZyB0cmVlIGFuZCB0aGUgaW5kZXggZW50cmllcywgdGhlIGluZGV4IGVudHJpZXMgcmVjb3JkIHRoZQogaW5mb3JtYXRpb24gb2J0YWluZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSB2aWEgYGxzdGF0KDIpYCBzeXN0ZW0KIGNhbGwgd2hlbiB0aGV5IHdlcmUgbGFzdCB1cGRhdGVkLiAgV2hlbiBjaGVja2luZyBpZiB0aGV5IGRpZmZlciwKLWdpdCBmaXJzdCBydW5zIGBsc3RhdCgyKWAgb24gdGhlIGZpbGVzIGFuZCBjb21wYXJlcyB0aGUgcmVzdWx0CitHaXQgZmlyc3QgcnVucyBgbHN0YXQoMilgIG9uIHRoZSBmaWxlcyBhbmQgY29tcGFyZXMgdGhlIHJlc3VsdAogd2l0aCB0aGlzIGluZm9ybWF0aW9uICh0aGlzIGlzIHdoYXQgd2FzIG9yaWdpbmFsbHkgZG9uZSBieSB0aGUKIGBjZV9tYXRjaF9zdGF0KClgIGZ1bmN0aW9uLCBidXQgdGhlIGN1cnJlbnQgY29kZSBkb2VzIGl0IGluCiBgY2VfbWF0Y2hfc3RhdF9iYXNpYygpYCBmdW5jdGlvbikuICBJZiBzb21lIG9mIHRoZXNlICJjYWNoZWQKLXN0YXQgaW5mb3JtYXRpb24iIGZpZWxkcyBkbyBub3QgbWF0Y2gsIGdpdCBjYW4gdGVsbCB0aGF0IHRoZQorc3RhdCBpbmZvcm1hdGlvbiIgZmllbGRzIGRvIG5vdCBtYXRjaCwgR2l0IGNhbiB0ZWxsIHRoYXQgdGhlCiBmaWxlcyBhcmUgbW9kaWZpZWQgd2l0aG91dCBldmVuIGxvb2tpbmcgYXQgdGhlaXIgY29udGVudHMuCiAKIE5vdGU6IG5vdCBhbGwgbWVtYmVycyBpbiBgc3RydWN0IHN0YXRgIG9idGFpbmVkIHZpYSBgbHN0YXQoMilgCiBhcmUgdXNlZCBmb3IgdGhpcyBjb21wYXJpc29uLiAgRm9yIGV4YW1wbGUsIGBzdF9hdGltZWAgb2J2aW91c2x5Ci1pcyBub3QgdXNlZnVsLiAgQ3VycmVudGx5LCBnaXQgY29tcGFyZXMgdGhlIGZpbGUgdHlwZSAocmVndWxhcgoraXMgbm90IHVzZWZ1bC4gIEN1cnJlbnRseSwgR2l0IGNvbXBhcmVzIHRoZSBmaWxlIHR5cGUgKHJlZ3VsYXIKIGZpbGVzIHZzIHN5bWJvbGljIGxpbmtzKSBhbmQgZXhlY3V0YWJsZSBiaXRzIChvbmx5IGZvciByZWd1bGFyCiBmaWxlcykgZnJvbSBgc3RfbW9kZWAgbWVtYmVyLCBgc3RfbXRpbWVgIGFuZCBgc3RfY3RpbWVgCiB0aW1lc3RhbXBzLCBgc3RfdWlkYCwgYHN0X2dpZGAsIGBzdF9pbm9gLCBhbmQgYHN0X3NpemVgIG1lbWJlcnMuCkBAIC00OSw3ICs0OSw3IEBACiAoW1BBVENIXSBTeW5jIGluIGNvcmUgdGltZSBncmFudWFsaXR5IHdpdGggZmlsZXN5c3RlbXMsCiAyMDA1LTAxLTA0KS4KIAotUmFjeSBnaXQKK1JhY3kgR2l0CiAtLS0tLS0tLQogCiBUaGVyZSBpcyBvbmUgc2xpZ2h0IHByb2JsZW0gd2l0aCB0aGUgb3B0aW1pemF0aW9uIGJhc2VkIG9uIHRoZQpAQCAtNjcsMTMgKzY3LDEzIEBACiBpbmZvcm1hdGlvbiB0aGUgaW5kZXggZW50cnkgcmVjb3JkcyBzdGlsbCBleGFjdGx5IG1hdGNoIHdoYXQgeW91CiB3b3VsZCBzZWUgaW4gdGhlIGZpbGVzeXN0ZW0sIGV2ZW4gdGhvdWdoIHRoZSBmaWxlIGBmb29gIGlzIG5vdwogZGlmZmVyZW50LgotVGhpcyB3YXksIGdpdCBjYW4gaW5jb3JyZWN0bHkgdGhpbmsgZmlsZXMgaW4gdGhlIHdvcmtpbmcgdHJlZQorVGhpcyB3YXksIEdpdCBjYW4gaW5jb3JyZWN0bHkgdGhpbmsgZmlsZXMgaW4gdGhlIHdvcmtpbmcgdHJlZQogYXJlIHVubW9kaWZpZWQgZXZlbiB0aG91Z2ggdGhleSBhY3R1YWxseSBhcmUuICBUaGlzIGlzIGNhbGxlZAotdGhlICJyYWN5IGdpdCIgcHJvYmxlbSAoZGlzY292ZXJlZCBieSBQYXNreSksIGFuZCB0aGUgZW50cmllcwordGhlICJyYWN5IEdpdCIgcHJvYmxlbSAoZGlzY292ZXJlZCBieSBQYXNreSksIGFuZCB0aGUgZW50cmllcwogdGhhdCBhcHBlYXIgY2xlYW4gd2hlbiB0aGV5IG1heSBub3QgYmUgYmVjYXVzZSBvZiB0aGlzIHByb2JsZW0KIGFyZSBjYWxsZWQgInJhY2lseSBjbGVhbiIuCiAKLVRvIGF2b2lkIHRoaXMgcHJvYmxlbSwgZ2l0IGRvZXMgdHdvIHRoaW5nczoKK1RvIGF2b2lkIHRoaXMgcHJvYmxlbSwgR2l0IGRvZXMgdHdvIHRoaW5nczoKIAogLiBXaGVuIHRoZSBjYWNoZWQgc3RhdCBpbmZvcm1hdGlvbiBzYXlzIHRoZSBmaWxlIGhhcyBub3QgYmVlbgogICBtb2RpZmllZCwgYW5kIHRoZSBgc3RfbXRpbWVgIGlzIHRoZSBzYW1lIGFzIChvciBuZXdlciB0aGFuKQpAQCAtMTE2LDcgKzExNiw3IEBACiBUaGUgbGF0dGVyIG1ha2VzIHN1cmUgdGhhdCB0aGUgY2FjaGVkIHN0YXQgaW5mb3JtYXRpb24gZm9yIGBmb29gCiB3b3VsZCBuZXZlciBtYXRjaCB3aXRoIHRoZSBmaWxlIGluIHRoZSB3b3JraW5nIHRyZWUsIHNvIGxhdGVyCiBjaGVja3MgYnkgYGNlX21hdGNoX3N0YXRfYmFzaWMoKWAgd291bGQgcmVwb3J0IHRoYXQgdGhlIGluZGV4IGVudHJ5Ci1kb2VzIG5vdCBtYXRjaCB0aGUgZmlsZSBhbmQgZ2l0IGRvZXMgbm90IGhhdmUgdG8gZmFsbCBiYWNrIG9uIG1vcmUKK2RvZXMgbm90IG1hdGNoIHRoZSBmaWxlIGFuZCBHaXQgZG9lcyBub3QgaGF2ZSB0byBmYWxsIGJhY2sgb24gbW9yZQogZXhwZW5zaXZlIGBjZV9tb2RpZmllZF9jaGVja19mcygpYC4KIAogCkBAIC0xNTksNyArMTU5LDcgQEAKIEF2b2lkaW5nIHJ1bnRpbWUgcGVuYWx0eQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUluIG9yZGVyIHRvIGF2b2lkIHRoZSBhYm92ZSBydW50aW1lIHBlbmFsdHksIHBvc3QgMS40LjIgZ2l0IHVzZWQKK0luIG9yZGVyIHRvIGF2b2lkIHRoZSBhYm92ZSBydW50aW1lIHBlbmFsdHksIHBvc3QgMS40LjIgR2l0IHVzZWQKIHRvIGhhdmUgYSBjb2RlIHRoYXQgbWFkZSBzdXJlIHRoZSBpbmRleCBmaWxlCiBnb3QgdGltZXN0YW1wIG5ld2VyIHRoYW4gdGhlIHlvdW5nZXN0IGZpbGVzIGluIHRoZSBpbmRleCB3aGVuCiB0aGVyZSBhcmUgbWFueSB5b3VuZyBmaWxlcyB3aXRoIHRoZSBzYW1lIHRpbWVzdGFtcCBhcyB0aGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3NlbmQtcGFjay1waXBlbGluZS50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9zZW5kLXBhY2stcGlwZWxpbmUudHh0CmluZGV4IDY4MWVmZTQuLjliNWEwYmMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3NlbmQtcGFjay1waXBlbGluZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvc2VuZC1wYWNrLXBpcGVsaW5lLnR4dApAQCAtMSw1ICsxLDUgQEAKLWdpdC1zZW5kLXBhY2sKLT09PT09PT09PT09PT0KK0dpdC1zZW5kLXBhY2sgaW50ZXJuYWxzCis9PT09PT09PT09PT09PT09PT09PT09PQogCiBPdmVyYWxsIG9wZXJhdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3NoYWxsb3cudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvc2hhbGxvdy50eHQKaW5kZXggNTU5MjYzYS4uNTE4M2IxNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvc2hhbGxvdy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvc2hhbGxvdy50eHQKQEAgLTEsOCArMSwxNCBAQAotRGVmLjogU2hhbGxvdyBjb21taXRzIGRvIGhhdmUgcGFyZW50cywgYnV0IG5vdCBpbiB0aGUgc2hhbGxvdworU2hhbGxvdyBjb21taXRzCis9PT09PT09PT09PT09PT0KKworLkRlZmluaXRpb24KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorU2hhbGxvdyBjb21taXRzIGRvIGhhdmUgcGFyZW50cywgYnV0IG5vdCBpbiB0aGUgc2hhbGxvdwogcmVwbywgYW5kIHRoZXJlZm9yZSBncmFmdHMgYXJlIGludHJvZHVjZWQgcHJldGVuZGluZyB0aGF0CiB0aGVzZSBjb21taXRzIGhhdmUgbm8gcGFyZW50cy4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1UaGUgYmFzaWMgaWRlYSBpcyB0byB3cml0ZSB0aGUgU0hBMXMgb2Ygc2hhbGxvdyBjb21taXRzIGludG8KK1RoZSBiYXNpYyBpZGVhIGlzIHRvIHdyaXRlIHRoZSBTSEEtMXMgb2Ygc2hhbGxvdyBjb21taXRzIGludG8KICRHSVRfRElSL3NoYWxsb3csIGFuZCBoYW5kbGUgaXRzIGNvbnRlbnRzIGxpa2UgdGhlIGNvbnRlbnRzCiBvZiAkR0lUX0RJUi9pbmZvL2dyYWZ0cyAod2l0aCB0aGUgZGlmZmVyZW5jZSB0aGF0IHNoYWxsb3cKIGNhbm5vdCBjb250YWluIHBhcmVudCBpbmZvcm1hdGlvbikuCkBAIC0xMiw3ICsxOCw3IEBACiBhdCBhbGwgKGV2ZW4gdGhyb3VnaG91dCBkZXZlbG9wbWVudCBvZiB0aGUgc2hhbGxvdyBjbG9uZSwgaXQKIHdhcyBuZXZlciBtYW51YWxseSBlZGl0ZWQhKS4KIAotRWFjaCBsaW5lIGNvbnRhaW5zIGV4YWN0bHkgb25lIFNIQTEuIFdoZW4gcmVhZCwgYSBjb21taXRfZ3JhZnQKK0VhY2ggbGluZSBjb250YWlucyBleGFjdGx5IG9uZSBTSEEtMS4gV2hlbiByZWFkLCBhIGNvbW1pdF9ncmFmdAogd2lsbCBiZSBjb25zdHJ1Y3RlZCwgd2hpY2ggaGFzIG5yX3BhcmVudCA8IDAgdG8gbWFrZSBpdCBlYXNpZXIKIHRvIGRpc2Nlcm4gZnJvbSB1c2VyIHByb3ZpZGVkIGdyYWZ0cy4KIApAQCAtNDcsMyArNTMsNiBAQAogWW91IGNhbiBkZWVwZW4gYSBzaGFsbG93IHJlcG9zaXRvcnkgd2l0aCAiZ2l0LWZldGNoIC0tZGVwdGggMjAKIHJlcG8gYnJhbmNoIiwgd2hpY2ggd2lsbCBmZXRjaCBicmFuY2ggZnJvbSByZXBvLCBidXQgc3RvcCBhdCBkZXB0aAogMjAsIHVwZGF0aW5nICRHSVRfRElSL3NoYWxsb3cuCisKK1RoZSBzcGVjaWFsIGRlcHRoIDIxNDc0ODM2NDcgKG9yIDB4N2ZmZmZmZmYsIHRoZSBsYXJnZXN0IHBvc2l0aXZlCitudW1iZXIgYSBzaWduZWQgMzItYml0IGludGVnZXIgY2FuIGNvbnRhaW4pIG1lYW5zIGluZmluaXRlIGRlcHRoLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvdHJpdmlhbC1tZXJnZS50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC90cml2aWFsLW1lcmdlLnR4dAppbmRleCAyNGM4NDEwLi5jNzlkNGE3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC90cml2aWFsLW1lcmdlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC90cml2aWFsLW1lcmdlLnR4dApAQCAtNzQsMjQgKzc0LDI0IEBACiBvbmx5IG9uZSBhbmNlc3RvciBvciByZW1vdGUgZml0czsgYSAnXicgbWVhbnMgYWxsIG9mIHRoZSBhbmNlc3RvcnMKIG11c3QgYmUgdGhlIHNhbWUuCiAKLWNhc2UgIGFuY2VzdCAgICBoZWFkICAgIHJlbW90ZSAgICByZXN1bHQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLTEgICAgIChlbXB0eSkrICAoZW1wdHkpIChlbXB0eSkgICAoZW1wdHkpCi0yQUxUICAoZW1wdHkpKyAgKmVtcHR5KiByZW1vdGUgICAgcmVtb3RlCi0yICAgICAoZW1wdHkpXiAgKGVtcHR5KSByZW1vdGUgICAgbm8gbWVyZ2UKLTNBTFQgIChlbXB0eSkrICBoZWFkICAgICplbXB0eSogICBoZWFkCi0zICAgICAoZW1wdHkpXiAgaGVhZCAgICAoZW1wdHkpICAgbm8gbWVyZ2UKLTQgICAgIChlbXB0eSleICBoZWFkICAgIHJlbW90ZSAgICBubyBtZXJnZQotNUFMVCAgKiAgICAgICAgIGhlYWQgICAgaGVhZCAgICAgIGhlYWQKLTYgICAgIGFuY2VzdCsgICAoZW1wdHkpIChlbXB0eSkgICBubyBtZXJnZQotOCAgICAgYW5jZXN0XiAgIChlbXB0eSkgYW5jZXN0ICAgIG5vIG1lcmdlCi03ICAgICBhbmNlc3QrICAgKGVtcHR5KSByZW1vdGUgICAgbm8gbWVyZ2UKLTEwICAgIGFuY2VzdF4gICBhbmNlc3QgIChlbXB0eSkgICBubyBtZXJnZQotOSAgICAgYW5jZXN0KyAgIGhlYWQgICAgKGVtcHR5KSAgIG5vIG1lcmdlCi0xNiAgICBhbmMxL2FuYzIgYW5jMSAgICBhbmMyICAgICAgbm8gbWVyZ2UKLTEzICAgIGFuY2VzdCsgICBoZWFkICAgIGFuY2VzdCAgICBoZWFkCi0xNCAgICBhbmNlc3QrICAgYW5jZXN0ICByZW1vdGUgICAgcmVtb3RlCi0xMSAgICBhbmNlc3QrICAgaGVhZCAgICByZW1vdGUgICAgbm8gbWVyZ2UKKyBjYXNlICBhbmNlc3QgICAgaGVhZCAgICByZW1vdGUgICAgcmVzdWx0CisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgICAgIChlbXB0eSkrICAoZW1wdHkpIChlbXB0eSkgICAoZW1wdHkpCisgMkFMVCAgKGVtcHR5KSsgICplbXB0eSogcmVtb3RlICAgIHJlbW90ZQorIDIgICAgIChlbXB0eSleICAoZW1wdHkpIHJlbW90ZSAgICBubyBtZXJnZQorIDNBTFQgIChlbXB0eSkrICBoZWFkICAgICplbXB0eSogICBoZWFkCisgMyAgICAgKGVtcHR5KV4gIGhlYWQgICAgKGVtcHR5KSAgIG5vIG1lcmdlCisgNCAgICAgKGVtcHR5KV4gIGhlYWQgICAgcmVtb3RlICAgIG5vIG1lcmdlCisgNUFMVCAgKiAgICAgICAgIGhlYWQgICAgaGVhZCAgICAgIGhlYWQKKyA2ICAgICBhbmNlc3QrICAgKGVtcHR5KSAoZW1wdHkpICAgbm8gbWVyZ2UKKyA4ICAgICBhbmNlc3ReICAgKGVtcHR5KSBhbmNlc3QgICAgbm8gbWVyZ2UKKyA3ICAgICBhbmNlc3QrICAgKGVtcHR5KSByZW1vdGUgICAgbm8gbWVyZ2UKKyAxMCAgICBhbmNlc3ReICAgYW5jZXN0ICAoZW1wdHkpICAgbm8gbWVyZ2UKKyA5ICAgICBhbmNlc3QrICAgaGVhZCAgICAoZW1wdHkpICAgbm8gbWVyZ2UKKyAxNiAgICBhbmMxL2FuYzIgYW5jMSAgICBhbmMyICAgICAgbm8gbWVyZ2UKKyAxMyAgICBhbmNlc3QrICAgaGVhZCAgICBhbmNlc3QgICAgaGVhZAorIDE0ICAgIGFuY2VzdCsgICBhbmNlc3QgIHJlbW90ZSAgICByZW1vdGUKKyAxMSAgICBhbmNlc3QrICAgaGVhZCAgICByZW1vdGUgICAgbm8gbWVyZ2UKIAogT25seSAjMkFMVCBhbmQgIzNBTFQgdXNlICplbXB0eSosIGJlY2F1c2UgdGhlc2UgYXJlIHRoZSBvbmx5IGNhc2VzCiB3aGVyZSB0aGVyZSBjYW4gYmUgY29uZmxpY3RzIHRoYXQgZGlkbid0IGV4aXN0IGJlZm9yZS4gTm90ZSB0aGF0IHdlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VybHMtcmVtb3Rlcy50eHQgYi9Eb2N1bWVudGF0aW9uL3VybHMtcmVtb3Rlcy50eHQKaW5kZXggMDBmN2U3OS4uMjgyNzU4ZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi91cmxzLXJlbW90ZXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdXJscy1yZW1vdGVzLnR4dApAQCAtNiw3ICs2LDcgQEAKIFRoZSBuYW1lIG9mIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNhbiBiZSB1c2VkIGluc3RlYWQKIG9mIGEgVVJMIGFzIGA8cmVwb3NpdG9yeT5gIGFyZ3VtZW50OgogCi0qIGEgcmVtb3RlIGluIHRoZSBnaXQgY29uZmlndXJhdGlvbiBmaWxlOiBgJEdJVF9ESVIvY29uZmlnYCwKKyogYSByZW1vdGUgaW4gdGhlIEdpdCBjb25maWd1cmF0aW9uIGZpbGU6IGAkR0lUX0RJUi9jb25maWdgLAogKiBhIGZpbGUgaW4gdGhlIGAkR0lUX0RJUi9yZW1vdGVzYCBkaXJlY3RvcnksIG9yCiAqIGEgZmlsZSBpbiB0aGUgYCRHSVRfRElSL2JyYW5jaGVzYCBkaXJlY3RvcnkuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXJscy50eHQgYi9Eb2N1bWVudGF0aW9uL3VybHMudHh0CmluZGV4IDI4OTAxOTQuLjYwYmEzMDAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdXJscy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi91cmxzLnR4dApAQCAtNiw4ICs2LDEyIEBACiBEZXBlbmRpbmcgb24gdGhlIHRyYW5zcG9ydCBwcm90b2NvbCwgc29tZSBvZiB0aGlzIGluZm9ybWF0aW9uIG1heSBiZQogYWJzZW50LgogCi1HaXQgbmF0aXZlbHkgc3VwcG9ydHMgc3NoLCBnaXQsIGh0dHAsIGh0dHBzLCBmdHAsIGZ0cHMsIGFuZCByc3luYwotcHJvdG9jb2xzLiBUaGUgZm9sbG93aW5nIHN5bnRheGVzIG1heSBiZSB1c2VkIHdpdGggdGhlbToKK0dpdCBzdXBwb3J0cyBzc2gsIGdpdCwgaHR0cCwgYW5kIGh0dHBzIHByb3RvY29scyAoaW4gYWRkaXRpb24sIGZ0cCwKK2FuZCBmdHBzIGNhbiBiZSB1c2VkIGZvciBmZXRjaGluZyBhbmQgcnN5bmMgY2FuIGJlIHVzZWQgZm9yIGZldGNoaW5nCithbmQgcHVzaGluZywgYnV0IHRoZXNlIGFyZSBpbmVmZmljaWVudCBhbmQgZGVwcmVjYXRlZDsgZG8gbm90IHVzZQordGhlbSkuCisKK1RoZSBmb2xsb3dpbmcgc3ludGF4ZXMgbWF5IGJlIHVzZWQgd2l0aCB0aGVtOgogCiAtIHNzaDovL3tzdGFydHNifXVzZXJAe2VuZHNifWhvc3QueHp7c3RhcnRzYn06cG9ydHtlbmRzYn0vcGF0aC90by9yZXBvLmdpdC8KIC0gZ2l0Oi8vaG9zdC54entzdGFydHNifTpwb3J0e2VuZHNifS9wYXRoL3RvL3JlcG8uZ2l0LwpAQCAtMjUsMTEgKzI5LDExIEBACiAtIGdpdDovL2hvc3QueHp7c3RhcnRzYn06cG9ydHtlbmRzYn0vfntzdGFydHNifXVzZXJ7ZW5kc2J9L3BhdGgvdG8vcmVwby5naXQvCiAtIHtzdGFydHNifXVzZXJAe2VuZHNifWhvc3QueHo6L357c3RhcnRzYn11c2Vye2VuZHNifS9wYXRoL3RvL3JlcG8uZ2l0LwogCi1Gb3IgbG9jYWwgcmVwb3NpdG9yaWVzLCBhbHNvIHN1cHBvcnRlZCBieSBnaXQgbmF0aXZlbHksIHRoZSBmb2xsb3dpbmcKK0ZvciBsb2NhbCByZXBvc2l0b3JpZXMsIGFsc28gc3VwcG9ydGVkIGJ5IEdpdCBuYXRpdmVseSwgdGhlIGZvbGxvd2luZwogc3ludGF4ZXMgbWF5IGJlIHVzZWQ6CiAKIC0gL3BhdGgvdG8vcmVwby5naXQvCi0tIGZpbGU6Ly8vcGF0aC90by9yZXBvLmdpdC8KKy0gXGZpbGU6Ly8vcGF0aC90by9yZXBvLmdpdC8KIAogaWZuZGVmOjpnaXQtY2xvbmVbXQogVGhlc2UgdHdvIHN5bnRheGVzIGFyZSBtb3N0bHkgZXF1aXZhbGVudCwgZXhjZXB0IHdoZW4gY2xvbmluZywgd2hlbgpAQCAtNDIsNyArNDYsNyBAQAogLS1sb2NhbCBvcHRpb24uCiBlbmRpZjo6Z2l0LWNsb25lW10KIAotV2hlbiBnaXQgZG9lc24ndCBrbm93IGhvdyB0byBoYW5kbGUgYSBjZXJ0YWluIHRyYW5zcG9ydCBwcm90b2NvbCwgaXQKK1doZW4gR2l0IGRvZXNuJ3Qga25vdyBob3cgdG8gaGFuZGxlIGEgY2VydGFpbiB0cmFuc3BvcnQgcHJvdG9jb2wsIGl0CiBhdHRlbXB0cyB0byB1c2UgdGhlICdyZW1vdGUtPHRyYW5zcG9ydD4nIHJlbW90ZSBoZWxwZXIsIGlmIG9uZQogZXhpc3RzLiBUbyBleHBsaWNpdGx5IHJlcXVlc3QgYSByZW1vdGUgaGVscGVyLCB0aGUgZm9sbG93aW5nIHN5bnRheAogbWF5IGJlIHVzZWQ6CkBAIC01MSw3ICs1NSw3IEBACiAKIHdoZXJlIDxhZGRyZXNzPiBtYXkgYmUgYSBwYXRoLCBhIHNlcnZlciBhbmQgcGF0aCwgb3IgYW4gYXJiaXRyYXJ5CiBVUkwtbGlrZSBzdHJpbmcgcmVjb2duaXplZCBieSB0aGUgc3BlY2lmaWMgcmVtb3RlIGhlbHBlciBiZWluZwotaW52b2tlZC4gU2VlIGxpbmtnaXQ6Z2l0LXJlbW90ZS1oZWxwZXJzWzFdIGZvciBkZXRhaWxzLgoraW52b2tlZC4gU2VlIGxpbmtnaXQ6Z2l0cmVtb3RlLWhlbHBlcnNbMV0gZm9yIGRldGFpbHMuCiAKIElmIHRoZXJlIGFyZSBhIGxhcmdlIG51bWJlciBvZiBzaW1pbGFybHktbmFtZWQgcmVtb3RlIHJlcG9zaXRvcmllcyBhbmQKIHlvdSB3YW50IHRvIHVzZSBhIGRpZmZlcmVudCBmb3JtYXQgZm9yIHRoZW0gKHN1Y2ggdGhhdCB0aGUgVVJMcyB5b3UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNlci1tYW51YWwuY29uZiBiL0RvY3VtZW50YXRpb24vdXNlci1tYW51YWwuY29uZgppbmRleCAzMzliMzA5Li5kODcyOTRkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3VzZXItbWFudWFsLmNvbmYKKysrIGIvRG9jdW1lbnRhdGlvbi91c2VyLW1hbnVhbC5jb25mCkBAIC0xNCw3ICsxNCw3IEBACiAjICJ1bmJyZWFrIiBkb2Nib29rLXhzbCB2MS42OCBmb3IgbWFucGFnZXMuIHYxLjY5IHdvcmtzIHdpdGggb3Igd2l0aG91dCB0aGlzLgogW2xpc3RpbmdibG9ja10KIDxleGFtcGxlPjx0aXRsZT57dGl0bGV9PC90aXRsZT4KLTxsaXRlcmFsbGF5b3V0PgorPGxpdGVyYWxsYXlvdXQgY2xhc3M9Im1vbm9zcGFjZWQiPgogfAogPC9saXRlcmFsbGF5b3V0Pgoge3RpdGxlI308L2V4YW1wbGU+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzZXItbWFudWFsLnR4dCBiL0RvY3VtZW50YXRpb24vdXNlci1tYW51YWwudHh0CmluZGV4IDFiOTQyMDcuLmU4MzFjYzIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdXNlci1tYW51YWwudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdXNlci1tYW51YWwudHh0CkBAIC01LDcgKzUsNyBAQAogR2l0IGlzIGEgZmFzdCBkaXN0cmlidXRlZCByZXZpc2lvbiBjb250cm9sIHN5c3RlbS4KIAogVGhpcyBtYW51YWwgaXMgZGVzaWduZWQgdG8gYmUgcmVhZGFibGUgYnkgc29tZW9uZSB3aXRoIGJhc2ljIFVOSVgKLWNvbW1hbmQtbGluZSBza2lsbHMsIGJ1dCBubyBwcmV2aW91cyBrbm93bGVkZ2Ugb2YgZ2l0LgorY29tbWFuZC1saW5lIHNraWxscywgYnV0IG5vIHByZXZpb3VzIGtub3dsZWRnZSBvZiBHaXQuCiAKIDw8cmVwb3NpdG9yaWVzLWFuZC1icmFuY2hlcz4+IGFuZCA8PGV4cGxvcmluZy1naXQtaGlzdG9yeT4+IGV4cGxhaW4gaG93CiB0byBmZXRjaCBhbmQgc3R1ZHkgYSBwcm9qZWN0IHVzaW5nIGdpdC0tcmVhZCB0aGVzZSBjaGFwdGVycyB0byBsZWFybiBob3cKQEAgLTE5LDcgKzE5LDcgQEAKIAogQ29tcHJlaGVuc2l2ZSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgbWFuCiBwYWdlcywgb3IgbGlua2dpdDpnaXQtaGVscFsxXSBjb21tYW5kLiAgRm9yIGV4YW1wbGUsIGZvciB0aGUgY29tbWFuZAotImdpdCBjbG9uZSA8cmVwbz4iLCB5b3UgY2FuIGVpdGhlciB1c2U6CitgZ2l0IGNsb25lIDxyZXBvPmAsIHlvdSBjYW4gZWl0aGVyIHVzZToKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIG1hbiBnaXQtY2xvbmUKQEAgLTM0LDcgKzM0LDcgQEAKIFdpdGggdGhlIGxhdHRlciwgeW91IGNhbiB1c2UgdGhlIG1hbnVhbCB2aWV3ZXIgb2YgeW91ciBjaG9pY2U7IHNlZQogbGlua2dpdDpnaXQtaGVscFsxXSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAotU2VlIGFsc28gPDxnaXQtcXVpY2stc3RhcnQ+PiBmb3IgYSBicmllZiBvdmVydmlldyBvZiBnaXQgY29tbWFuZHMsCitTZWUgYWxzbyA8PGdpdC1xdWljay1zdGFydD4+IGZvciBhIGJyaWVmIG92ZXJ2aWV3IG9mIEdpdCBjb21tYW5kcywKIHdpdGhvdXQgYW55IGV4cGxhbmF0aW9uLgogCiBGaW5hbGx5LCBzZWUgPDx0b2RvPj4gZm9yIHdheXMgdGhhdCB5b3UgY2FuIGhlbHAgbWFrZSB0aGlzIG1hbnVhbCBtb3JlCkBAIC00NiwxMCArNDYsMTAgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT0KIAogW1tob3ctdG8tZ2V0LWEtZ2l0LXJlcG9zaXRvcnldXQotSG93IHRvIGdldCBhIGdpdCByZXBvc2l0b3J5CitIb3cgdG8gZ2V0IGEgR2l0IHJlcG9zaXRvcnkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1JdCB3aWxsIGJlIHVzZWZ1bCB0byBoYXZlIGEgZ2l0IHJlcG9zaXRvcnkgdG8gZXhwZXJpbWVudCB3aXRoIGFzIHlvdQorSXQgd2lsbCBiZSB1c2VmdWwgdG8gaGF2ZSBhIEdpdCByZXBvc2l0b3J5IHRvIGV4cGVyaW1lbnQgd2l0aCBhcyB5b3UKIHJlYWQgdGhpcyBtYW51YWwuCiAKIFRoZSBiZXN0IHdheSB0byBnZXQgb25lIGlzIGJ5IHVzaW5nIHRoZSBsaW5rZ2l0OmdpdC1jbG9uZVsxXSBjb21tYW5kIHRvCkBAIC01Nyw3ICs1Nyw3IEBACiBwcm9qZWN0IGluIG1pbmQsIGhlcmUgYXJlIHNvbWUgaW50ZXJlc3RpbmcgZXhhbXBsZXM6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCSMgZ2l0IGl0c2VsZiAoYXBwcm94LiAxME1CIGRvd25sb2FkKToKKwkjIEdpdCBpdHNlbGYgKGFwcHJveC4gMTBNQiBkb3dubG9hZCk6CiAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2dpdC9naXQuZ2l0CiAJIyB0aGUgTGludXgga2VybmVsIChhcHByb3guIDE1ME1CIGRvd25sb2FkKToKICQgZ2l0IGNsb25lIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC0yLjYuZ2l0CkBAIC02NiwxMSArNjYsMTEgQEAKIFRoZSBpbml0aWFsIGNsb25lIG1heSBiZSB0aW1lLWNvbnN1bWluZyBmb3IgYSBsYXJnZSBwcm9qZWN0LCBidXQgeW91CiB3aWxsIG9ubHkgbmVlZCB0byBjbG9uZSBvbmNlLgogCi1UaGUgY2xvbmUgY29tbWFuZCBjcmVhdGVzIGEgbmV3IGRpcmVjdG9yeSBuYW1lZCBhZnRlciB0aGUgcHJvamVjdCAoImdpdCIKLW9yICJsaW51eC0yLjYiIGluIHRoZSBleGFtcGxlcyBhYm92ZSkuICBBZnRlciB5b3UgY2QgaW50byB0aGlzCitUaGUgY2xvbmUgY29tbWFuZCBjcmVhdGVzIGEgbmV3IGRpcmVjdG9yeSBuYW1lZCBhZnRlciB0aGUgcHJvamVjdCAoYGdpdGAKK29yIGBsaW51eC0yLjZgIGluIHRoZSBleGFtcGxlcyBhYm92ZSkuICBBZnRlciB5b3UgY2QgaW50byB0aGlzCiBkaXJlY3RvcnksIHlvdSB3aWxsIHNlZSB0aGF0IGl0IGNvbnRhaW5zIGEgY29weSBvZiB0aGUgcHJvamVjdCBmaWxlcywKIGNhbGxlZCB0aGUgPDxkZWZfd29ya2luZ190cmVlLHdvcmtpbmcgdHJlZT4+LCB0b2dldGhlciB3aXRoIGEgc3BlY2lhbAotdG9wLWxldmVsIGRpcmVjdG9yeSBuYW1lZCAiLmdpdCIsIHdoaWNoIGNvbnRhaW5zIGFsbCB0aGUgaW5mb3JtYXRpb24KK3RvcC1sZXZlbCBkaXJlY3RvcnkgbmFtZWQgYC5naXRgLCB3aGljaCBjb250YWlucyBhbGwgdGhlIGluZm9ybWF0aW9uCiBhYm91dCB0aGUgaGlzdG9yeSBvZiB0aGUgcHJvamVjdC4KIAogW1tob3ctdG8tY2hlY2stb3V0XV0KQEAgLTc5LDcgKzc5LDcgQEAKIAogR2l0IGlzIGJlc3QgdGhvdWdodCBvZiBhcyBhIHRvb2wgZm9yIHN0b3JpbmcgdGhlIGhpc3Rvcnkgb2YgYSBjb2xsZWN0aW9uCiBvZiBmaWxlcy4gIEl0IHN0b3JlcyB0aGUgaGlzdG9yeSBhcyBhIGNvbXByZXNzZWQgY29sbGVjdGlvbiBvZgotaW50ZXJyZWxhdGVkIHNuYXBzaG90cyBvZiB0aGUgcHJvamVjdCdzIGNvbnRlbnRzLiAgSW4gZ2l0IGVhY2ggc3VjaAoraW50ZXJyZWxhdGVkIHNuYXBzaG90cyBvZiB0aGUgcHJvamVjdCdzIGNvbnRlbnRzLiAgSW4gR2l0IGVhY2ggc3VjaAogdmVyc2lvbiBpcyBjYWxsZWQgYSA8PGRlZl9jb21taXQsY29tbWl0Pj4uCiAKIFRob3NlIHNuYXBzaG90cyBhcmVuJ3QgbmVjZXNzYXJpbHkgYWxsIGFycmFuZ2VkIGluIGEgc2luZ2xlIGxpbmUgZnJvbQpAQCAtODcsNyArODcsNyBAQAogcGFyYWxsZWwgbGluZXMgb2YgZGV2ZWxvcG1lbnQsIGNhbGxlZCA8PGRlZl9icmFuY2gsYnJhbmNoZXM+Piwgd2hpY2ggbWF5CiBtZXJnZSBhbmQgZGl2ZXJnZS4KIAotQSBzaW5nbGUgZ2l0IHJlcG9zaXRvcnkgY2FuIHRyYWNrIGRldmVsb3BtZW50IG9uIG11bHRpcGxlIGJyYW5jaGVzLiAgSXQKK0Egc2luZ2xlIEdpdCByZXBvc2l0b3J5IGNhbiB0cmFjayBkZXZlbG9wbWVudCBvbiBtdWx0aXBsZSBicmFuY2hlcy4gIEl0CiBkb2VzIHRoaXMgYnkga2VlcGluZyBhIGxpc3Qgb2YgPDxkZWZfaGVhZCxoZWFkcz4+IHdoaWNoIHJlZmVyZW5jZSB0aGUKIGxhdGVzdCBjb21taXQgb24gZWFjaCBicmFuY2g7IHRoZSBsaW5rZ2l0OmdpdC1icmFuY2hbMV0gY29tbWFuZCBzaG93cwogeW91IHRoZSBsaXN0IG9mIGJyYW5jaCBoZWFkczoKQEAgLTE4OCw3ICsxODgsNyBAQAogZGlkLCBhbmQgd2h5LgogCiBFdmVyeSBjb21taXQgaGFzIGEgNDAtaGV4ZGlnaXQgaWQsIHNvbWV0aW1lcyBjYWxsZWQgdGhlICJvYmplY3QgbmFtZSIgb3IgdGhlCi0iU0hBLTEgaWQiLCBzaG93biBvbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgImdpdCBzaG93IiBvdXRwdXQuICBZb3UgY2FuIHVzdWFsbHkKKyJTSEEtMSBpZCIsIHNob3duIG9uIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBgZ2l0IHNob3dgIG91dHB1dC4gIFlvdSBjYW4gdXN1YWxseQogcmVmZXIgdG8gYSBjb21taXQgYnkgYSBzaG9ydGVyIG5hbWUsIHN1Y2ggYXMgYSB0YWcgb3IgYSBicmFuY2ggbmFtZSwgYnV0IHRoaXMKIGxvbmdlciBuYW1lIGNhbiBhbHNvIGJlIHVzZWZ1bC4gIE1vc3QgaW1wb3J0YW50bHksIGl0IGlzIGEgZ2xvYmFsbHkgdW5pcXVlCiBuYW1lIGZvciB0aGlzIGNvbW1pdDogc28gaWYgeW91IHRlbGwgc29tZWJvZHkgZWxzZSB0aGUgb2JqZWN0IG5hbWUgKGZvcgpAQCAtMTk4LDcgKzE5OCw3IEBACiBjb250ZW50cyBvZiB0aGUgY29tbWl0LCB5b3UgYXJlIGd1YXJhbnRlZWQgdGhhdCB0aGUgY29tbWl0IGNhbiBuZXZlciBjaGFuZ2UKIHdpdGhvdXQgaXRzIG5hbWUgYWxzbyBjaGFuZ2luZy4KIAotSW4gZmFjdCwgaW4gPDxnaXQtY29uY2VwdHM+PiB3ZSBzaGFsbCBzZWUgdGhhdCBldmVyeXRoaW5nIHN0b3JlZCBpbiBnaXQKK0luIGZhY3QsIGluIDw8Z2l0LWNvbmNlcHRzPj4gd2Ugc2hhbGwgc2VlIHRoYXQgZXZlcnl0aGluZyBzdG9yZWQgaW4gR2l0CiBoaXN0b3J5LCBpbmNsdWRpbmcgZmlsZSBkYXRhIGFuZCBkaXJlY3RvcnkgY29udGVudHMsIGlzIHN0b3JlZCBpbiBhbiBvYmplY3QKIHdpdGggYSBuYW1lIHRoYXQgaXMgYSBoYXNoIG9mIGl0cyBjb250ZW50cy4KIApAQCAtMjExLDcgKzIxMSw3IEBACiBGb2xsb3dpbmcgdGhlIGNoYWluIG9mIHBhcmVudHMgd2lsbCBldmVudHVhbGx5IHRha2UgeW91IGJhY2sgdG8gdGhlCiBiZWdpbm5pbmcgb2YgdGhlIHByb2plY3QuCiAKLUhvd2V2ZXIsIHRoZSBjb21taXRzIGRvIG5vdCBmb3JtIGEgc2ltcGxlIGxpc3Q7IGdpdCBhbGxvd3MgbGluZXMgb2YKK0hvd2V2ZXIsIHRoZSBjb21taXRzIGRvIG5vdCBmb3JtIGEgc2ltcGxlIGxpc3Q7IEdpdCBhbGxvd3MgbGluZXMgb2YKIGRldmVsb3BtZW50IHRvIGRpdmVyZ2UgYW5kIHRoZW4gcmVjb252ZXJnZSwgYW5kIHRoZSBwb2ludCB3aGVyZSB0d28KIGxpbmVzIG9mIGRldmVsb3BtZW50IHJlY29udmVyZ2UgaXMgY2FsbGVkIGEgIm1lcmdlIi4gIFRoZSBjb21taXQKIHJlcHJlc2VudGluZyBhIG1lcmdlIGNhbiB0aGVyZWZvcmUgaGF2ZSBtb3JlIHRoYW4gb25lIHBhcmVudCwgd2l0aApAQCAtMjE5LDggKzIxOSw4IEBACiBvZiBkZXZlbG9wbWVudCBsZWFkaW5nIHRvIHRoYXQgcG9pbnQuCiAKIFRoZSBiZXN0IHdheSB0byBzZWUgaG93IHRoaXMgd29ya3MgaXMgdXNpbmcgdGhlIGxpbmtnaXQ6Z2l0a1sxXQotY29tbWFuZDsgcnVubmluZyBnaXRrIG5vdyBvbiBhIGdpdCByZXBvc2l0b3J5IGFuZCBsb29raW5nIGZvciBtZXJnZQotY29tbWl0cyB3aWxsIGhlbHAgdW5kZXJzdGFuZCBob3cgdGhlIGdpdCBvcmdhbml6ZXMgaGlzdG9yeS4KK2NvbW1hbmQ7IHJ1bm5pbmcgZ2l0ayBub3cgb24gYSBHaXQgcmVwb3NpdG9yeSBhbmQgbG9va2luZyBmb3IgbWVyZ2UKK2NvbW1pdHMgd2lsbCBoZWxwIHVuZGVyc3RhbmQgaG93IHRoZSBHaXQgb3JnYW5pemVzIGhpc3RvcnkuCiAKIEluIHRoZSBmb2xsb3dpbmcsIHdlIHNheSB0aGF0IGNvbW1pdCBYIGlzICJyZWFjaGFibGUiIGZyb20gY29tbWl0IFkKIGlmIGNvbW1pdCBYIGlzIGFuIGFuY2VzdG9yIG9mIGNvbW1pdCBZLiAgRXF1aXZhbGVudGx5LCB5b3UgY291bGQgc2F5CkBAIC0yMzEsNyArMjMxLDcgQEAKIFVuZGVyc3RhbmRpbmcgaGlzdG9yeTogSGlzdG9yeSBkaWFncmFtcwogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLVdlIHdpbGwgc29tZXRpbWVzIHJlcHJlc2VudCBnaXQgaGlzdG9yeSB1c2luZyBkaWFncmFtcyBsaWtlIHRoZSBvbmUKK1dlIHdpbGwgc29tZXRpbWVzIHJlcHJlc2VudCBHaXQgaGlzdG9yeSB1c2luZyBkaWFncmFtcyBsaWtlIHRoZSBvbmUKIGJlbG93LiAgQ29tbWl0cyBhcmUgc2hvd24gYXMgIm8iLCBhbmQgdGhlIGxpbmtzIGJldHdlZW4gdGhlbSB3aXRoCiBsaW5lcyBkcmF3biB3aXRoIC0gLyBhbmQgXC4gIFRpbWUgZ29lcyBsZWZ0IHRvIHJpZ2h0OgogCkBAIC0yNjgsMzUgKzI2OCwzNSBAQAogQ3JlYXRpbmcsIGRlbGV0aW5nLCBhbmQgbW9kaWZ5aW5nIGJyYW5jaGVzIGlzIHF1aWNrIGFuZCBlYXN5OyBoZXJlJ3MKIGEgc3VtbWFyeSBvZiB0aGUgY29tbWFuZHM6CiAKLWdpdCBicmFuY2g6OgorYGdpdCBicmFuY2hgOjoKIAlsaXN0IGFsbCBicmFuY2hlcwotZ2l0IGJyYW5jaCA8YnJhbmNoPjo6Ci0JY3JlYXRlIGEgbmV3IGJyYW5jaCBuYW1lZCA8YnJhbmNoPiwgcmVmZXJlbmNpbmcgdGhlIHNhbWUKK2BnaXQgYnJhbmNoIDxicmFuY2g+YDo6CisJY3JlYXRlIGEgbmV3IGJyYW5jaCBuYW1lZCBgPGJyYW5jaD5gLCByZWZlcmVuY2luZyB0aGUgc2FtZQogCXBvaW50IGluIGhpc3RvcnkgYXMgdGhlIGN1cnJlbnQgYnJhbmNoCi1naXQgYnJhbmNoIDxicmFuY2g+IDxzdGFydC1wb2ludD46OgotCWNyZWF0ZSBhIG5ldyBicmFuY2ggbmFtZWQgPGJyYW5jaD4sIHJlZmVyZW5jaW5nCi0JPHN0YXJ0LXBvaW50Piwgd2hpY2ggbWF5IGJlIHNwZWNpZmllZCBhbnkgd2F5IHlvdSBsaWtlLAorYGdpdCBicmFuY2ggPGJyYW5jaD4gPHN0YXJ0LXBvaW50PmA6OgorCWNyZWF0ZSBhIG5ldyBicmFuY2ggbmFtZWQgYDxicmFuY2g+YCwgcmVmZXJlbmNpbmcKKwlgPHN0YXJ0LXBvaW50PmAsIHdoaWNoIG1heSBiZSBzcGVjaWZpZWQgYW55IHdheSB5b3UgbGlrZSwKIAlpbmNsdWRpbmcgdXNpbmcgYSBicmFuY2ggbmFtZSBvciBhIHRhZyBuYW1lCi1naXQgYnJhbmNoIC1kIDxicmFuY2g+OjoKLQlkZWxldGUgdGhlIGJyYW5jaCA8YnJhbmNoPjsgaWYgdGhlIGJyYW5jaCB5b3UgYXJlIGRlbGV0aW5nCitgZ2l0IGJyYW5jaCAtZCA8YnJhbmNoPmA6OgorCWRlbGV0ZSB0aGUgYnJhbmNoIGA8YnJhbmNoPmA7IGlmIHRoZSBicmFuY2ggeW91IGFyZSBkZWxldGluZwogCXBvaW50cyB0byBhIGNvbW1pdCB3aGljaCBpcyBub3QgcmVhY2hhYmxlIGZyb20gdGhlIGN1cnJlbnQKIAlicmFuY2gsIHRoaXMgY29tbWFuZCB3aWxsIGZhaWwgd2l0aCBhIHdhcm5pbmcuCi1naXQgYnJhbmNoIC1EIDxicmFuY2g+OjoKK2BnaXQgYnJhbmNoIC1EIDxicmFuY2g+YDo6CiAJZXZlbiBpZiB0aGUgYnJhbmNoIHBvaW50cyB0byBhIGNvbW1pdCBub3QgcmVhY2hhYmxlCiAJZnJvbSB0aGUgY3VycmVudCBicmFuY2gsIHlvdSBtYXkga25vdyB0aGF0IHRoYXQgY29tbWl0CiAJaXMgc3RpbGwgcmVhY2hhYmxlIGZyb20gc29tZSBvdGhlciBicmFuY2ggb3IgdGFnLiAgSW4gdGhhdAotCWNhc2UgaXQgaXMgc2FmZSB0byB1c2UgdGhpcyBjb21tYW5kIHRvIGZvcmNlIGdpdCB0byBkZWxldGUKKwljYXNlIGl0IGlzIHNhZmUgdG8gdXNlIHRoaXMgY29tbWFuZCB0byBmb3JjZSBHaXQgdG8gZGVsZXRlCiAJdGhlIGJyYW5jaC4KLWdpdCBjaGVja291dCA8YnJhbmNoPjo6Ci0JbWFrZSB0aGUgY3VycmVudCBicmFuY2ggPGJyYW5jaD4sIHVwZGF0aW5nIHRoZSB3b3JraW5nCi0JZGlyZWN0b3J5IHRvIHJlZmxlY3QgdGhlIHZlcnNpb24gcmVmZXJlbmNlZCBieSA8YnJhbmNoPgotZ2l0IGNoZWNrb3V0IC1iIDxuZXc+IDxzdGFydC1wb2ludD46OgotCWNyZWF0ZSBhIG5ldyBicmFuY2ggPG5ldz4gcmVmZXJlbmNpbmcgPHN0YXJ0LXBvaW50PiwgYW5kCitgZ2l0IGNoZWNrb3V0IDxicmFuY2g+YDo6CisJbWFrZSB0aGUgY3VycmVudCBicmFuY2ggYDxicmFuY2g+YCwgdXBkYXRpbmcgdGhlIHdvcmtpbmcKKwlkaXJlY3RvcnkgdG8gcmVmbGVjdCB0aGUgdmVyc2lvbiByZWZlcmVuY2VkIGJ5IGA8YnJhbmNoPmAKK2BnaXQgY2hlY2tvdXQgLWIgPG5ldz4gPHN0YXJ0LXBvaW50PmA6OgorCWNyZWF0ZSBhIG5ldyBicmFuY2ggYDxuZXc+YCByZWZlcmVuY2luZyBgPHN0YXJ0LXBvaW50PmAsIGFuZAogCWNoZWNrIGl0IG91dC4KIAogVGhlIHNwZWNpYWwgc3ltYm9sICJIRUFEIiBjYW4gYWx3YXlzIGJlIHVzZWQgdG8gcmVmZXIgdG8gdGhlIGN1cnJlbnQKLWJyYW5jaC4gIEluIGZhY3QsIGdpdCB1c2VzIGEgZmlsZSBuYW1lZCAiSEVBRCIgaW4gdGhlIC5naXQgZGlyZWN0b3J5IHRvCi1yZW1lbWJlciB3aGljaCBicmFuY2ggaXMgY3VycmVudDoKK2JyYW5jaC4gIEluIGZhY3QsIEdpdCB1c2VzIGEgZmlsZSBuYW1lZCBgSEVBRGAgaW4gdGhlIGAuZ2l0YCBkaXJlY3RvcnkKK3RvIHJlbWVtYmVyIHdoaWNoIGJyYW5jaCBpcyBjdXJyZW50OgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgY2F0IC5naXQvSEVBRApAQCAtMzQ2LDcgKzM0Niw3IEBACiBtYXkgYWxzbyBoYXZlIGhhZCBvdGhlciBicmFuY2hlcywgdGhvdWdoLCBhbmQgeW91ciBsb2NhbCByZXBvc2l0b3J5CiBrZWVwcyBicmFuY2hlcyB3aGljaCB0cmFjayBlYWNoIG9mIHRob3NlIHJlbW90ZSBicmFuY2hlcywgY2FsbGVkCiByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMsIHdoaWNoIHlvdQotY2FuIHZpZXcgdXNpbmcgdGhlICItciIgb3B0aW9uIHRvIGxpbmtnaXQ6Z2l0LWJyYW5jaFsxXToKK2NhbiB2aWV3IHVzaW5nIHRoZSBgLXJgIG9wdGlvbiB0byBsaW5rZ2l0OmdpdC1icmFuY2hbMV06CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCBnaXQgYnJhbmNoIC1yCkBAIC0zNjQsNyArMzY0LDcgQEAKIGZvciBzaG9ydC4gVGhlIGJyYW5jaGVzIG9mIHRoaXMgcmVwb3NpdG9yeSBhcmUgY2FsbGVkICJyZW1vdGUKIGJyYW5jaGVzIiBmcm9tIG91ciBwb2ludCBvZiB2aWV3LiBUaGUgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzIGxpc3RlZAogYWJvdmUgd2VyZSBjcmVhdGVkIGJhc2VkIG9uIHRoZSByZW1vdGUgYnJhbmNoZXMgYXQgY2xvbmUgdGltZSBhbmQgd2lsbAotYmUgdXBkYXRlZCBieSAiZ2l0IGZldGNoIiAoaGVuY2UgImdpdCBwdWxsIikgYW5kICJnaXQgcHVzaCIuIFNlZQorYmUgdXBkYXRlZCBieSBgZ2l0IGZldGNoYCAoaGVuY2UgYGdpdCBwdWxsYCkgYW5kIGBnaXQgcHVzaGAuIFNlZQogPDxVcGRhdGluZy1hLXJlcG9zaXRvcnktV2l0aC1naXQtZmV0Y2g+PiBmb3IgZGV0YWlscy4KIAogWW91IG1pZ2h0IHdhbnQgdG8gYnVpbGQgb24gb25lIG9mIHRoZXNlIHJlbW90ZS10cmFja2luZyBicmFuY2hlcwpAQCAtMzc0LDEwICszNzQsMTAgQEAKICQgZ2l0IGNoZWNrb3V0IC1iIG15LXRvZG8tY29weSBvcmlnaW4vdG9kbwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVlvdSBjYW4gYWxzbyBjaGVjayBvdXQgIm9yaWdpbi90b2RvIiBkaXJlY3RseSB0byBleGFtaW5lIGl0IG9yCitZb3UgY2FuIGFsc28gY2hlY2sgb3V0IGBvcmlnaW4vdG9kb2AgZGlyZWN0bHkgdG8gZXhhbWluZSBpdCBvcgogd3JpdGUgYSBvbmUtb2ZmIHBhdGNoLiAgU2VlIDw8ZGV0YWNoZWQtaGVhZCxkZXRhY2hlZCBoZWFkPj4uCiAKLU5vdGUgdGhhdCB0aGUgbmFtZSAib3JpZ2luIiBpcyBqdXN0IHRoZSBuYW1lIHRoYXQgZ2l0IHVzZXMgYnkgZGVmYXVsdAorTm90ZSB0aGF0IHRoZSBuYW1lICJvcmlnaW4iIGlzIGp1c3QgdGhlIG5hbWUgdGhhdCBHaXQgdXNlcyBieSBkZWZhdWx0CiB0byByZWZlciB0byB0aGUgcmVwb3NpdG9yeSB0aGF0IHlvdSBjbG9uZWQgZnJvbS4KIAogW1tob3ctZ2l0LXN0b3Jlcy1yZWZlcmVuY2VzXV0KQEAgLTM4NiwxNyArMzg2LDE3IEBACiAKIEJyYW5jaGVzLCByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMsIGFuZCB0YWdzIGFyZSBhbGwgcmVmZXJlbmNlcyB0bwogY29tbWl0cy4gIEFsbCByZWZlcmVuY2VzIGFyZSBuYW1lZCB3aXRoIGEgc2xhc2gtc2VwYXJhdGVkIHBhdGggbmFtZQotc3RhcnRpbmcgd2l0aCAicmVmcyI7IHRoZSBuYW1lcyB3ZSd2ZSBiZWVuIHVzaW5nIHNvIGZhciBhcmUgYWN0dWFsbHkKK3N0YXJ0aW5nIHdpdGggYHJlZnNgOyB0aGUgbmFtZXMgd2UndmUgYmVlbiB1c2luZyBzbyBmYXIgYXJlIGFjdHVhbGx5CiBzaG9ydGhhbmQ6CiAKLQktIFRoZSBicmFuY2ggInRlc3QiIGlzIHNob3J0IGZvciAicmVmcy9oZWFkcy90ZXN0Ii4KLQktIFRoZSB0YWcgInYyLjYuMTgiIGlzIHNob3J0IGZvciAicmVmcy90YWdzL3YyLjYuMTgiLgotCS0gIm9yaWdpbi9tYXN0ZXIiIGlzIHNob3J0IGZvciAicmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIiLgorCS0gVGhlIGJyYW5jaCBgdGVzdGAgaXMgc2hvcnQgZm9yIGByZWZzL2hlYWRzL3Rlc3RgLgorCS0gVGhlIHRhZyBgdjIuNi4xOGAgaXMgc2hvcnQgZm9yIGByZWZzL3RhZ3MvdjIuNi4xOGAuCisJLSBgb3JpZ2luL21hc3RlcmAgaXMgc2hvcnQgZm9yIGByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlcmAuCiAKIFRoZSBmdWxsIG5hbWUgaXMgb2NjYXNpb25hbGx5IHVzZWZ1bCBpZiwgZm9yIGV4YW1wbGUsIHRoZXJlIGV2ZXIKIGV4aXN0cyBhIHRhZyBhbmQgYSBicmFuY2ggd2l0aCB0aGUgc2FtZSBuYW1lLgogCi0oTmV3bHkgY3JlYXRlZCByZWZzIGFyZSBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIC5naXQvcmVmcyBkaXJlY3RvcnksCisoTmV3bHkgY3JlYXRlZCByZWZzIGFyZSBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIGAuZ2l0L3JlZnNgIGRpcmVjdG9yeSwKIHVuZGVyIHRoZSBwYXRoIGdpdmVuIGJ5IHRoZWlyIG5hbWUuICBIb3dldmVyLCBmb3IgZWZmaWNpZW5jeSByZWFzb25zCiB0aGV5IG1heSBhbHNvIGJlIHBhY2tlZCB0b2dldGhlciBpbiBhIHNpbmdsZSBmaWxlOyBzZWUKIGxpbmtnaXQ6Z2l0LXBhY2stcmVmc1sxXSkuCkBAIC00MDUsNyArNDA1LDcgQEAKIHRvIGp1c3QgdXNpbmcgdGhlIG5hbWUgb2YgdGhhdCByZXBvc2l0b3J5LiAgU28sIGZvciBleGFtcGxlLCAib3JpZ2luIgogaXMgdXN1YWxseSBhIHNob3J0Y3V0IGZvciB0aGUgSEVBRCBicmFuY2ggaW4gdGhlIHJlcG9zaXRvcnkgIm9yaWdpbiIuCiAKLUZvciB0aGUgY29tcGxldGUgbGlzdCBvZiBwYXRocyB3aGljaCBnaXQgY2hlY2tzIGZvciByZWZlcmVuY2VzLCBhbmQKK0ZvciB0aGUgY29tcGxldGUgbGlzdCBvZiBwYXRocyB3aGljaCBHaXQgY2hlY2tzIGZvciByZWZlcmVuY2VzLCBhbmQKIHRoZSBvcmRlciBpdCB1c2VzIHRvIGRlY2lkZSB3aGljaCB0byBjaG9vc2Ugd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUKIHJlZmVyZW5jZXMgd2l0aCB0aGUgc2FtZSBzaG9ydGhhbmQgbmFtZSwgc2VlIHRoZSAiU1BFQ0lGWUlORwogUkVWSVNJT05TIiBzZWN0aW9uIG9mIGxpbmtnaXQ6Z2l0cmV2aXNpb25zWzddLgpAQCAtNDE4LDcgKzQxOCw3IEBACiByZXBvc2l0b3J5LCBjcmVhdGluZyBuZXcgY29tbWl0cyBhbmQgYWR2YW5jaW5nIHRoZSBicmFuY2hlcyB0byBwb2ludAogYXQgdGhlIG5ldyBjb21taXRzLgogCi1UaGUgY29tbWFuZCAiZ2l0IGZldGNoIiwgd2l0aCBubyBhcmd1bWVudHMsIHdpbGwgdXBkYXRlIGFsbCBvZiB0aGUKK1RoZSBjb21tYW5kIGBnaXQgZmV0Y2hgLCB3aXRoIG5vIGFyZ3VtZW50cywgd2lsbCB1cGRhdGUgYWxsIG9mIHRoZQogcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBmb3VuZCBpbiBoZXIKIHJlcG9zaXRvcnkuICBJdCB3aWxsIG5vdCB0b3VjaCBhbnkgb2YgeW91ciBvd24gYnJhbmNoZXMtLW5vdCBldmVuIHRoZQogIm1hc3RlciIgYnJhbmNoIHRoYXQgd2FzIGNyZWF0ZWQgZm9yIHlvdSBvbiBjbG9uZS4KQEAgLTQzOCw3ICs0MzgsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBOZXcgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzIHdpbGwgYmUgc3RvcmVkIHVuZGVyIHRoZSBzaG9ydGhhbmQgbmFtZQotdGhhdCB5b3UgZ2F2ZSAiZ2l0IHJlbW90ZSBhZGQiLCBpbiB0aGlzIGNhc2UgbGludXgtbmZzOgordGhhdCB5b3UgZ2F2ZSBgZ2l0IHJlbW90ZSBhZGRgLCBpbiB0aGlzIGNhc2UgYGxpbnV4LW5mc2A6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IGJyYW5jaCAtcgpAQCAtNDQ2LDEwICs0NDYsMTAgQEAKIG9yaWdpbi9tYXN0ZXIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSWYgeW91IHJ1biAiZ2l0IGZldGNoIDxyZW1vdGU+IiBsYXRlciwgdGhlIHJlbW90ZS10cmFja2luZyBicmFuY2hlcyBmb3IgdGhlCi1uYW1lZCA8cmVtb3RlPiB3aWxsIGJlIHVwZGF0ZWQuCitJZiB5b3UgcnVuIGBnaXQgZmV0Y2ggPHJlbW90ZT5gIGxhdGVyLCB0aGUgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzCitmb3IgdGhlIG5hbWVkIGA8cmVtb3RlPmAgd2lsbCBiZSB1cGRhdGVkLgogCi1JZiB5b3UgZXhhbWluZSB0aGUgZmlsZSAuZ2l0L2NvbmZpZywgeW91IHdpbGwgc2VlIHRoYXQgZ2l0IGhhcyBhZGRlZAorSWYgeW91IGV4YW1pbmUgdGhlIGZpbGUgYC5naXQvY29uZmlnYCwgeW91IHdpbGwgc2VlIHRoYXQgR2l0IGhhcyBhZGRlZAogYSBuZXcgc3RhbnphOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00NjEsMTMgKzQ2MSwxMyBAQAogLi4uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgaXMgd2hhdCBjYXVzZXMgZ2l0IHRvIHRyYWNrIHRoZSByZW1vdGUncyBicmFuY2hlczsgeW91IG1heSBtb2RpZnkKLW9yIGRlbGV0ZSB0aGVzZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYnkgZWRpdGluZyAuZ2l0L2NvbmZpZyB3aXRoIGEKK1RoaXMgaXMgd2hhdCBjYXVzZXMgR2l0IHRvIHRyYWNrIHRoZSByZW1vdGUncyBicmFuY2hlczsgeW91IG1heSBtb2RpZnkKK29yIGRlbGV0ZSB0aGVzZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYnkgZWRpdGluZyBgLmdpdC9jb25maWdgIHdpdGggYQogdGV4dCBlZGl0b3IuICAoU2VlIHRoZSAiQ09ORklHVVJBVElPTiBGSUxFIiBzZWN0aW9uIG9mCiBsaW5rZ2l0OmdpdC1jb25maWdbMV0gZm9yIGRldGFpbHMuKQogCiBbW2V4cGxvcmluZy1naXQtaGlzdG9yeV1dCi1FeHBsb3JpbmcgZ2l0IGhpc3RvcnkKK0V4cGxvcmluZyBHaXQgaGlzdG9yeQogPT09PT09PT09PT09PT09PT09PT09CiAKIEdpdCBpcyBiZXN0IHRob3VnaHQgb2YgYXMgYSB0b29sIGZvciBzdG9yaW5nIHRoZSBoaXN0b3J5IG9mIGEKQEAgLTQ5OSw3ICs0OTksNyBAQAogWzY1OTM0YTlhMDI4Yjg4ZTgzZTJiMGY4YjM2NjE4ZmU1MDMzNDlmOGVdIEJMT0NLOiBNYWtlIFVTQiBzdG9yYWdlIGRlcGVuZCBvbiBTQ1NJIHJhdGhlciB0aGFuIHNlbGVjdGluZyBpdCBbdHJ5ICM2XQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1JZiB5b3UgcnVuICJnaXQgYnJhbmNoIiBhdCB0aGlzIHBvaW50LCB5b3UnbGwgc2VlIHRoYXQgZ2l0IGhhcworSWYgeW91IHJ1biBgZ2l0IGJyYW5jaGAgYXQgdGhpcyBwb2ludCwgeW91J2xsIHNlZSB0aGF0IEdpdCBoYXMKIHRlbXBvcmFyaWx5IG1vdmVkIHlvdSBpbiAiKG5vIGJyYW5jaCkiLiBIRUFEIGlzIG5vdyBkZXRhY2hlZCBmcm9tIGFueQogYnJhbmNoIGFuZCBwb2ludHMgZGlyZWN0bHkgdG8gYSBjb21taXQgKHdpdGggY29tbWl0IGlkIDY1OTM0Li4uKSB0aGF0CiBpcyByZWFjaGFibGUgZnJvbSAibWFzdGVyIiBidXQgbm90IGZyb20gdjIuNi4xOC4gQ29tcGlsZSBhbmQgdGVzdCBpdCwKQEAgLTUxMSw3ICs1MTEsNyBAQAogWzdlZmY4MmM4YjE1MTEwMTdhZTYwNWYwYzk5YWMyNzVhN2UyMWI4NjddIGkyYy1jb3JlOiBEcm9wIHVzZWxlc3MgYml0bWFza2luZ3MKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY2hlY2tzIG91dCBhbiBvbGRlciB2ZXJzaW9uLiAgQ29udGludWUgbGlrZSB0aGlzLCB0ZWxsaW5nIGdpdCBhdCBlYWNoCitjaGVja3Mgb3V0IGFuIG9sZGVyIHZlcnNpb24uICBDb250aW51ZSBsaWtlIHRoaXMsIHRlbGxpbmcgR2l0IGF0IGVhY2gKIHN0YWdlIHdoZXRoZXIgdGhlIHZlcnNpb24gaXQgZ2l2ZXMgeW91IGlzIGdvb2Qgb3IgYmFkLCBhbmQgbm90aWNlCiB0aGF0IHRoZSBudW1iZXIgb2YgcmV2aXNpb25zIGxlZnQgdG8gdGVzdCBpcyBjdXQgYXBwcm94aW1hdGVseSBpbgogaGFsZiBlYWNoIHRpbWUuCkBAIC01NDUsMjQgKzU0NSwyNCBAQAogJCBnaXQgcmVzZXQgLS1oYXJkIGZiNDdkZGIyZGIuLi4KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdGhlbiB0ZXN0LCBydW4gImJpc2VjdCBnb29kIiBvciAiYmlzZWN0IGJhZCIgYXMgYXBwcm9wcmlhdGUsIGFuZAordGhlbiB0ZXN0LCBydW4gYGJpc2VjdCBnb29kYCBvciBgYmlzZWN0IGJhZGAgYXMgYXBwcm9wcmlhdGUsIGFuZAogY29udGludWUuCiAKLUluc3RlYWQgb2YgImdpdCBiaXNlY3QgdmlzdWFsaXplIiBhbmQgdGhlbiAiZ2l0IHJlc2V0IC0taGFyZAotZmI0N2RkYjJkYi4uLiIsIHlvdSBtaWdodCBqdXN0IHdhbnQgdG8gdGVsbCBnaXQgdGhhdCB5b3Ugd2FudCB0byBza2lwCitJbnN0ZWFkIG9mIGBnaXQgYmlzZWN0IHZpc3VhbGl6ZWAgYW5kIHRoZW4gYGdpdCByZXNldCAtLWhhcmQKK2ZiNDdkZGIyZGIuLi5gLCB5b3UgbWlnaHQganVzdCB3YW50IHRvIHRlbGwgR2l0IHRoYXQgeW91IHdhbnQgdG8gc2tpcAogdGhlIGN1cnJlbnQgY29tbWl0OgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBiaXNlY3Qgc2tpcAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1JbiB0aGlzIGNhc2UsIHRob3VnaCwgZ2l0IG1heSBub3QgZXZlbnR1YWxseSBiZSBhYmxlIHRvIHRlbGwgdGhlIGZpcnN0CitJbiB0aGlzIGNhc2UsIHRob3VnaCwgR2l0IG1heSBub3QgZXZlbnR1YWxseSBiZSBhYmxlIHRvIHRlbGwgdGhlIGZpcnN0CiBiYWQgb25lIGJldHdlZW4gc29tZSBmaXJzdCBza2lwcGVkIGNvbW1pdHMgYW5kIGEgbGF0ZXIgYmFkIGNvbW1pdC4KIAogVGhlcmUgYXJlIGFsc28gd2F5cyB0byBhdXRvbWF0ZSB0aGUgYmlzZWN0aW5nIHByb2Nlc3MgaWYgeW91IGhhdmUgYQogdGVzdCBzY3JpcHQgdGhhdCBjYW4gdGVsbCBhIGdvb2QgZnJvbSBhIGJhZCBjb21taXQuIFNlZQotbGlua2dpdDpnaXQtYmlzZWN0WzFdIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgYW5kIG90aGVyICJnaXQKLWJpc2VjdCIgZmVhdHVyZXMuCitsaW5rZ2l0OmdpdC1iaXNlY3RbMV0gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBhbmQgb3RoZXIgYGdpdAorYmlzZWN0YCBmZWF0dXJlcy4KIAogW1tuYW1pbmctY29tbWl0c11dCiBOYW1pbmcgY29tbWl0cwpAQCAtNTkxLDcgKzU5MSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlY2FsbCB0aGF0IG1lcmdlIGNvbW1pdHMgbWF5IGhhdmUgbW9yZSB0aGFuIG9uZSBwYXJlbnQ7IGJ5IGRlZmF1bHQsCi1eIGFuZCB+IGZvbGxvdyB0aGUgZmlyc3QgcGFyZW50IGxpc3RlZCBpbiB0aGUgY29tbWl0LCBidXQgeW91IGNhbgorYF5gIGFuZCBgfmAgZm9sbG93IHRoZSBmaXJzdCBwYXJlbnQgbGlzdGVkIGluIHRoZSBjb21taXQsIGJ1dCB5b3UgY2FuCiBhbHNvIGNob29zZToKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjQwLDcgKzY0MCw3IEBACiAkIGdpdCB0YWcgc3RhYmxlLTEgMWIyZTFkNjNmZgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Zb3UgY2FuIHVzZSBzdGFibGUtMSB0byByZWZlciB0byB0aGUgY29tbWl0IDFiMmUxZDYzZmYuCitZb3UgY2FuIHVzZSBgc3RhYmxlLTFgIHRvIHJlZmVyIHRvIHRoZSBjb21taXQgMWIyZTFkNjNmZi4KIAogVGhpcyBjcmVhdGVzIGEgImxpZ2h0d2VpZ2h0IiB0YWcuICBJZiB5b3Ugd291bGQgYWxzbyBsaWtlIHRvIGluY2x1ZGUgYQogY29tbWVudCB3aXRoIHRoZSB0YWcsIGFuZCBwb3NzaWJseSBzaWduIGl0IGNyeXB0b2dyYXBoaWNhbGx5LCB0aGVuIHlvdQpAQCAtNjY5LDcgKzY2OSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEFuZCBvZiBjb3Vyc2UgeW91IGNhbiBjb21iaW5lIGFsbCBvZiB0aGVzZTsgdGhlIGZvbGxvd2luZyBmaW5kcwotY29tbWl0cyBzaW5jZSB2Mi41IHdoaWNoIHRvdWNoIHRoZSBNYWtlZmlsZSBvciBhbnkgZmlsZSB1bmRlciBmczoKK2NvbW1pdHMgc2luY2UgdjIuNSB3aGljaCB0b3VjaCB0aGUgYE1ha2VmaWxlYCBvciBhbnkgZmlsZSB1bmRlciBgZnNgOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBsb2cgdjIuNS4uIE1ha2VmaWxlIGZzLwpAQCAtNjgxLDExICs2ODEsMTEgQEAKICQgZ2l0IGxvZyAtcAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1TZWUgdGhlICItLXByZXR0eSIgb3B0aW9uIGluIHRoZSBsaW5rZ2l0OmdpdC1sb2dbMV0gbWFuIHBhZ2UgZm9yIG1vcmUKK1NlZSB0aGUgYC0tcHJldHR5YCBvcHRpb24gaW4gdGhlIGxpbmtnaXQ6Z2l0LWxvZ1sxXSBtYW4gcGFnZSBmb3IgbW9yZQogZGlzcGxheSBvcHRpb25zLgogCiBOb3RlIHRoYXQgZ2l0IGxvZyBzdGFydHMgd2l0aCB0aGUgbW9zdCByZWNlbnQgY29tbWl0IGFuZCB3b3JrcwotYmFja3dhcmRzIHRocm91Z2ggdGhlIHBhcmVudHM7IGhvd2V2ZXIsIHNpbmNlIGdpdCBoaXN0b3J5IGNhbiBjb250YWluCitiYWNrd2FyZHMgdGhyb3VnaCB0aGUgcGFyZW50czsgaG93ZXZlciwgc2luY2UgR2l0IGhpc3RvcnkgY2FuIGNvbnRhaW4KIG11bHRpcGxlIGluZGVwZW5kZW50IGxpbmVzIG9mIGRldmVsb3BtZW50LCB0aGUgcGFydGljdWxhciBvcmRlciB0aGF0CiBjb21taXRzIGFyZSBsaXN0ZWQgaW4gbWF5IGJlIHNvbWV3aGF0IGFyYml0cmFyeS4KIApAQCAtNzMyLDcgKzczMiw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEJlZm9yZSB0aGUgY29sb24gbWF5IGJlIGFueXRoaW5nIHRoYXQgbmFtZXMgYSBjb21taXQsIGFuZCBhZnRlciBpdAotbWF5IGJlIGFueSBwYXRoIHRvIGEgZmlsZSB0cmFja2VkIGJ5IGdpdC4KK21heSBiZSBhbnkgcGF0aCB0byBhIGZpbGUgdHJhY2tlZCBieSBHaXQuCiAKIFtbaGlzdG9yeS1leGFtcGxlc11dCiBFeGFtcGxlcwpAQCAtNzQyLDggKzc0Miw4IEBACiBDb3VudGluZyB0aGUgbnVtYmVyIG9mIGNvbW1pdHMgb24gYSBicmFuY2gKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCi1TdXBwb3NlIHlvdSB3YW50IHRvIGtub3cgaG93IG1hbnkgY29tbWl0cyB5b3UndmUgbWFkZSBvbiAibXlicmFuY2giCi1zaW5jZSBpdCBkaXZlcmdlZCBmcm9tICJvcmlnaW4iOgorU3VwcG9zZSB5b3Ugd2FudCB0byBrbm93IGhvdyBtYW55IGNvbW1pdHMgeW91J3ZlIG1hZGUgb24gYG15YnJhbmNoYAorc2luY2UgaXQgZGl2ZXJnZWQgZnJvbSBgb3JpZ2luYDoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCBnaXQgbG9nIC0tcHJldHR5PW9uZWxpbmUgb3JpZ2luLi5teWJyYW5jaCB8IHdjIC1sCkBAIC03ODAsOSArNzgwLDkgQEAKIGUwNWRiMGZkNGYzMWRkZTcwMDVmMDc1YTg0Zjk2YjM2MGQwNTk4NGIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotT3IgeW91IGNvdWxkIHJlY2FsbCB0aGF0IHRoZSAuLi4gb3BlcmF0b3Igc2VsZWN0cyBhbGwgY29tbWl0cworT3IgeW91IGNvdWxkIHJlY2FsbCB0aGF0IHRoZSBgLi4uYCBvcGVyYXRvciBzZWxlY3RzIGFsbCBjb21taXRzCiBjb250YWluZWQgcmVhY2hhYmxlIGZyb20gZWl0aGVyIG9uZSByZWZlcmVuY2Ugb3IgdGhlIG90aGVyIGJ1dCBub3QKLWJvdGg6IHNvCitib3RoOyBzbwogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBsb2cgb3JpZ2luLi4ubWFzdGVyCkBAIC04ODAsNyArODgwLDcgQEAKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAogU3VwcG9zZSB5b3Ugd291bGQgbGlrZSB0byBzZWUgYWxsIHRoZSBjb21taXRzIHJlYWNoYWJsZSBmcm9tIHRoZSBicmFuY2gKLWhlYWQgbmFtZWQgIm1hc3RlciIgYnV0IG5vdCBmcm9tIGFueSBvdGhlciBoZWFkIGluIHlvdXIgcmVwb3NpdG9yeS4KK2hlYWQgbmFtZWQgYG1hc3RlcmAgYnV0IG5vdCBmcm9tIGFueSBvdGhlciBoZWFkIGluIHlvdXIgcmVwb3NpdG9yeS4KIAogV2UgY2FuIGxpc3QgYWxsIHRoZSBoZWFkcyBpbiB0aGlzIHJlcG9zaXRvcnkgd2l0aAogbGlua2dpdDpnaXQtc2hvdy1yZWZbMV06CkBAIC04OTQsNyArODk0LDcgQEAKIDFlODc0ODZhZTA2NjI2YzJmMzFlYWE2M2QyNmZjMGZkNjQ2YzhhZjIgcmVmcy9oZWFkcy90dXRvcmlhbC1maXhlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XZSBjYW4gZ2V0IGp1c3QgdGhlIGJyYW5jaC1oZWFkIG5hbWVzLCBhbmQgcmVtb3ZlICJtYXN0ZXIiLCB3aXRoCitXZSBjYW4gZ2V0IGp1c3QgdGhlIGJyYW5jaC1oZWFkIG5hbWVzLCBhbmQgcmVtb3ZlIGBtYXN0ZXJgLCB3aXRoCiB0aGUgaGVscCBvZiB0aGUgc3RhbmRhcmQgdXRpbGl0aWVzIGN1dCBhbmQgZ3JlcDoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTMxLDExICs5MzEsMjAgQEAKIGFueSB2ZXJzaW9uIG9mIGEgcHJvamVjdDsgZm9yIGV4YW1wbGU6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9dGFyIC0tcHJlZml4PXByb2plY3QvIEhFQUQgfCBnemlwID5sYXRlc3QudGFyLmd6CiskIGdpdCBhcmNoaXZlIC1vIGxhdGVzdC50YXIuZ3ogLS1wcmVmaXg9cHJvamVjdC8gSEVBRAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi13aWxsIHVzZSBIRUFEIHRvIHByb2R1Y2UgYSB0YXIgYXJjaGl2ZSBpbiB3aGljaCBlYWNoIGZpbGVuYW1lIGlzCi1wcmVjZWRlZCBieSAicHJvamVjdC8iLgord2lsbCB1c2UgSEVBRCB0byBwcm9kdWNlIGEgZ3ppcHBlZCB0YXIgYXJjaGl2ZSBpbiB3aGljaCBlYWNoIGZpbGVuYW1lCitpcyBwcmVjZWRlZCBieSBgcHJvamVjdC9gLiAgVGhlIG91dHB1dCBmaWxlIGZvcm1hdCBpcyBpbmZlcnJlZCBmcm9tCit0aGUgb3V0cHV0IGZpbGUgZXh0ZW5zaW9uIGlmIHBvc3NpYmxlLCBzZWUgbGlua2dpdDpnaXQtYXJjaGl2ZVsxXSBmb3IKK2RldGFpbHMuCisKK1ZlcnNpb25zIG9mIEdpdCBvbGRlciB0aGFuIDEuNy43IGRvbid0IGtub3cgYWJvdXQgdGhlIGB0YXIuZ3pgIGZvcm1hdCwKK3lvdSdsbCBuZWVkIHRvIHVzZSBnemlwIGV4cGxpY2l0bHk6CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyQgZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9dGFyIC0tcHJlZml4PXByb2plY3QvIEhFQUQgfCBnemlwID5sYXRlc3QudGFyLmd6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIElmIHlvdSdyZSByZWxlYXNpbmcgYSBuZXcgdmVyc2lvbiBvZiBhIHNvZnR3YXJlIHByb2plY3QsIHlvdSBtYXkgd2FudAogdG8gc2ltdWx0YW5lb3VzbHkgbWFrZSBhIGNoYW5nZWxvZyB0byBpbmNsdWRlIGluIHRoZSByZWxlYXNlCkBAIC05ODQsMTYgKzk5MywyMyBAQAogbGlua2dpdDpnaXQtaGFzaC1vYmplY3RbMV0gbWFuIHBhZ2VzIG1heSBwcm92ZSBoZWxwZnVsLgogCiBbW0RldmVsb3BpbmctV2l0aC1naXRdXQotRGV2ZWxvcGluZyB3aXRoIGdpdAorRGV2ZWxvcGluZyB3aXRoIEdpdAogPT09PT09PT09PT09PT09PT09PQogCiBbW3RlbGxpbmctZ2l0LXlvdXItbmFtZV1dCi1UZWxsaW5nIGdpdCB5b3VyIG5hbWUKK1RlbGxpbmcgR2l0IHlvdXIgbmFtZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUJlZm9yZSBjcmVhdGluZyBhbnkgY29tbWl0cywgeW91IHNob3VsZCBpbnRyb2R1Y2UgeW91cnNlbGYgdG8gZ2l0LiAgVGhlCi1lYXNpZXN0IHdheSB0byBkbyBzbyBpcyB0byBtYWtlIHN1cmUgdGhlIGZvbGxvd2luZyBsaW5lcyBhcHBlYXIgaW4gYQotZmlsZSBuYW1lZCAuZ2l0Y29uZmlnIGluIHlvdXIgaG9tZSBkaXJlY3Rvcnk6CitCZWZvcmUgY3JlYXRpbmcgYW55IGNvbW1pdHMsIHlvdSBzaG91bGQgaW50cm9kdWNlIHlvdXJzZWxmIHRvIEdpdC4KK1RoZSBlYXNpZXN0IHdheSB0byBkbyBzbyBpcyB0byB1c2UgbGlua2dpdDpnaXQtY29uZmlnWzFdOgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyQgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUgJ1lvdXIgTmFtZSBDb21lcyBIZXJlJworJCBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIuZW1haWwgJ3lvdUB5b3VyZG9tYWluLmV4YW1wbGUuY29tJworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doaWNoIHdpbGwgYWRkIHRoZSBmb2xsb3dpbmcgdG8gYSBmaWxlIG5hbWVkIGAuZ2l0Y29uZmlnYCBpbiB5b3VyCitob21lIGRpcmVjdG9yeToKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBbdXNlcl0KQEAgLTEwMDEsOCArMTAxNyw5IEBACiAJZW1haWwgPSB5b3VAeW91cmRvbWFpbi5leGFtcGxlLmNvbQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLShTZWUgdGhlICJDT05GSUdVUkFUSU9OIEZJTEUiIHNlY3Rpb24gb2YgbGlua2dpdDpnaXQtY29uZmlnWzFdIGZvcgotZGV0YWlscyBvbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLikKK1NlZSB0aGUgIkNPTkZJR1VSQVRJT04gRklMRSIgc2VjdGlvbiBvZiBsaW5rZ2l0OmdpdC1jb25maWdbMV0gZm9yCitkZXRhaWxzIG9uIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuICBUaGUgZmlsZSBpcyBwbGFpbiB0ZXh0LCBzbyB5b3UgY2FuCithbHNvIGVkaXQgaXQgd2l0aCB5b3VyIGZhdm9yaXRlIGVkaXRvci4KIAogCiBbW2NyZWF0aW5nLWEtbmV3LXJlcG9zaXRvcnldXQpAQCAtMTAzNSwxNyArMTA1MiwxNyBAQAogCiAJMS4gTWFraW5nIHNvbWUgY2hhbmdlcyB0byB0aGUgd29ya2luZyBkaXJlY3RvcnkgdXNpbmcgeW91cgogCSAgIGZhdm9yaXRlIGVkaXRvci4KLQkyLiBUZWxsaW5nIGdpdCBhYm91dCB5b3VyIGNoYW5nZXMuCi0JMy4gQ3JlYXRpbmcgdGhlIGNvbW1pdCB1c2luZyB0aGUgY29udGVudCB5b3UgdG9sZCBnaXQgYWJvdXQKKwkyLiBUZWxsaW5nIEdpdCBhYm91dCB5b3VyIGNoYW5nZXMuCisJMy4gQ3JlYXRpbmcgdGhlIGNvbW1pdCB1c2luZyB0aGUgY29udGVudCB5b3UgdG9sZCBHaXQgYWJvdXQKIAkgICBpbiBzdGVwIDIuCiAKIEluIHByYWN0aWNlLCB5b3UgY2FuIGludGVybGVhdmUgYW5kIHJlcGVhdCBzdGVwcyAxIGFuZCAyIGFzIG1hbnkKIHRpbWVzIGFzIHlvdSB3YW50OiBpbiBvcmRlciB0byBrZWVwIHRyYWNrIG9mIHdoYXQgeW91IHdhbnQgY29tbWl0dGVkCi1hdCBzdGVwIDMsIGdpdCBtYWludGFpbnMgYSBzbmFwc2hvdCBvZiB0aGUgdHJlZSdzIGNvbnRlbnRzIGluIGEKK2F0IHN0ZXAgMywgR2l0IG1haW50YWlucyBhIHNuYXBzaG90IG9mIHRoZSB0cmVlJ3MgY29udGVudHMgaW4gYQogc3BlY2lhbCBzdGFnaW5nIGFyZWEgY2FsbGVkICJ0aGUgaW5kZXguIgogCiBBdCB0aGUgYmVnaW5uaW5nLCB0aGUgY29udGVudCBvZiB0aGUgaW5kZXggd2lsbCBiZSBpZGVudGljYWwgdG8KLXRoYXQgb2YgdGhlIEhFQUQuICBUaGUgY29tbWFuZCAiZ2l0IGRpZmYgLS1jYWNoZWQiLCB3aGljaCBzaG93cwordGhhdCBvZiB0aGUgSEVBRC4gIFRoZSBjb21tYW5kIGBnaXQgZGlmZiAtLWNhY2hlZGAsIHdoaWNoIHNob3dzCiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBIRUFEIGFuZCB0aGUgaW5kZXgsIHNob3VsZCB0aGVyZWZvcmUKIHByb2R1Y2Ugbm8gb3V0cHV0IGF0IHRoYXQgcG9pbnQuCiAKQEAgLTEwODQsNyArMTEwMSw3IEBACiAKIHNob3dzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHdvcmtpbmcgdHJlZSBhbmQgdGhlIGluZGV4IGZpbGUuCiAKLU5vdGUgdGhhdCAiZ2l0IGFkZCIgYWx3YXlzIGFkZHMganVzdCB0aGUgY3VycmVudCBjb250ZW50cyBvZiBhIGZpbGUKK05vdGUgdGhhdCBgZ2l0IGFkZGAgYWx3YXlzIGFkZHMganVzdCB0aGUgY3VycmVudCBjb250ZW50cyBvZiBhIGZpbGUKIHRvIHRoZSBpbmRleDsgZnVydGhlciBjaGFuZ2VzIHRvIHRoZSBzYW1lIGZpbGUgd2lsbCBiZSBpZ25vcmVkIHVubGVzcwogeW91IHJ1biBgZ2l0IGFkZGAgb24gdGhlIGZpbGUgYWdhaW4uCiAKQEAgLTEwOTQsNyArMTExMSw3IEBACiAkIGdpdCBjb21taXQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotYW5kIGdpdCB3aWxsIHByb21wdCB5b3UgZm9yIGEgY29tbWl0IG1lc3NhZ2UgYW5kIHRoZW4gY3JlYXRlIHRoZSBuZXcKK2FuZCBHaXQgd2lsbCBwcm9tcHQgeW91IGZvciBhIGNvbW1pdCBtZXNzYWdlIGFuZCB0aGVuIGNyZWF0ZSB0aGUgbmV3CiBjb21taXQuICBDaGVjayB0byBtYWtlIHN1cmUgaXQgbG9va3MgbGlrZSB3aGF0IHlvdSBleHBlY3RlZCB3aXRoCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTExMzYsMjQgKzExNTMsMjggQEAKIFRob3VnaCBub3QgcmVxdWlyZWQsIGl0J3MgYSBnb29kIGlkZWEgdG8gYmVnaW4gdGhlIGNvbW1pdCBtZXNzYWdlCiB3aXRoIGEgc2luZ2xlIHNob3J0IChsZXNzIHRoYW4gNTAgY2hhcmFjdGVyKSBsaW5lIHN1bW1hcml6aW5nIHRoZQogY2hhbmdlLCBmb2xsb3dlZCBieSBhIGJsYW5rIGxpbmUgYW5kIHRoZW4gYSBtb3JlIHRob3JvdWdoCi1kZXNjcmlwdGlvbi4gIFRvb2xzIHRoYXQgdHVybiBjb21taXRzIGludG8gZW1haWwsIGZvciBleGFtcGxlLCB1c2UKLXRoZSBmaXJzdCBsaW5lIG9uIHRoZSBTdWJqZWN0IGxpbmUgYW5kIHRoZSByZXN0IG9mIHRoZSBjb21taXQgaW4gdGhlCi1ib2R5LgorZGVzY3JpcHRpb24uICBUaGUgdGV4dCB1cCB0byB0aGUgZmlyc3QgYmxhbmsgbGluZSBpbiBhIGNvbW1pdAorbWVzc2FnZSBpcyB0cmVhdGVkIGFzIHRoZSBjb21taXQgdGl0bGUsIGFuZCB0aGF0IHRpdGxlIGlzIHVzZWQKK3Rocm91Z2hvdXQgR2l0LiAgRm9yIGV4YW1wbGUsIGxpbmtnaXQ6Z2l0LWZvcm1hdC1wYXRjaFsxXSB0dXJucyBhCitjb21taXQgaW50byBlbWFpbCwgYW5kIGl0IHVzZXMgdGhlIHRpdGxlIG9uIHRoZSBTdWJqZWN0IGxpbmUgYW5kIHRoZQorcmVzdCBvZiB0aGUgY29tbWl0IGluIHRoZSBib2R5LgorCiAKIFtbaWdub3JpbmctZmlsZXNdXQogSWdub3JpbmcgZmlsZXMKIC0tLS0tLS0tLS0tLS0tCiAKLUEgcHJvamVjdCB3aWxsIG9mdGVuIGdlbmVyYXRlIGZpbGVzIHRoYXQgeW91IGRvICdub3QnIHdhbnQgdG8gdHJhY2sgd2l0aCBnaXQuCitBIHByb2plY3Qgd2lsbCBvZnRlbiBnZW5lcmF0ZSBmaWxlcyB0aGF0IHlvdSBkbyAnbm90JyB3YW50IHRvIHRyYWNrIHdpdGggR2l0LgogVGhpcyB0eXBpY2FsbHkgaW5jbHVkZXMgZmlsZXMgZ2VuZXJhdGVkIGJ5IGEgYnVpbGQgcHJvY2VzcyBvciB0ZW1wb3JhcnkKLWJhY2t1cCBmaWxlcyBtYWRlIGJ5IHlvdXIgZWRpdG9yLiBPZiBjb3Vyc2UsICdub3QnIHRyYWNraW5nIGZpbGVzIHdpdGggZ2l0CitiYWNrdXAgZmlsZXMgbWFkZSBieSB5b3VyIGVkaXRvci4gT2YgY291cnNlLCAnbm90JyB0cmFja2luZyBmaWxlcyB3aXRoIEdpdAogaXMganVzdCBhIG1hdHRlciBvZiAnbm90JyBjYWxsaW5nIGBnaXQgYWRkYCBvbiB0aGVtLiBCdXQgaXQgcXVpY2tseSBiZWNvbWVzCiBhbm5veWluZyB0byBoYXZlIHRoZXNlIHVudHJhY2tlZCBmaWxlcyBseWluZyBhcm91bmQ7IGUuZy4gdGhleSBtYWtlCiBgZ2l0IGFkZCAuYCBwcmFjdGljYWxseSB1c2VsZXNzLCBhbmQgdGhleSBrZWVwIHNob3dpbmcgdXAgaW4gdGhlIG91dHB1dCBvZgogYGdpdCBzdGF0dXNgLgogCi1Zb3UgY2FuIHRlbGwgZ2l0IHRvIGlnbm9yZSBjZXJ0YWluIGZpbGVzIGJ5IGNyZWF0aW5nIGEgZmlsZSBjYWxsZWQgLmdpdGlnbm9yZQotaW4gdGhlIHRvcCBsZXZlbCBvZiB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5LCB3aXRoIGNvbnRlbnRzIHN1Y2ggYXM6CitZb3UgY2FuIHRlbGwgR2l0IHRvIGlnbm9yZSBjZXJ0YWluIGZpbGVzIGJ5IGNyZWF0aW5nIGEgZmlsZSBjYWxsZWQKK2AuZ2l0aWdub3JlYCBpbiB0aGUgdG9wIGxldmVsIG9mIHlvdXIgd29ya2luZyBkaXJlY3RvcnksIHdpdGggY29udGVudHMKK3N1Y2ggYXM6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgTGluZXMgc3RhcnRpbmcgd2l0aCAnIycgYXJlIGNvbnNpZGVyZWQgY29tbWVudHMuCkBAIC0xMTc3LDEwICsxMTk4LDEwIEBACiAKIElmIHlvdSB3aXNoIHRoZSBleGNsdWRlIHBhdHRlcm5zIHRvIGFmZmVjdCBvbmx5IGNlcnRhaW4gcmVwb3NpdG9yaWVzCiAoaW5zdGVhZCBvZiBldmVyeSByZXBvc2l0b3J5IGZvciBhIGdpdmVuIHByb2plY3QpLCB5b3UgbWF5IGluc3RlYWQgcHV0Ci10aGVtIGluIGEgZmlsZSBpbiB5b3VyIHJlcG9zaXRvcnkgbmFtZWQgLmdpdC9pbmZvL2V4Y2x1ZGUsIG9yIGluIGFueSBmaWxlCi1zcGVjaWZpZWQgYnkgdGhlIGBjb3JlLmV4Y2x1ZGVzZmlsZWAgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gIFNvbWUgZ2l0Ci1jb21tYW5kcyBjYW4gYWxzbyB0YWtlIGV4Y2x1ZGUgcGF0dGVybnMgZGlyZWN0bHkgb24gdGhlIGNvbW1hbmQgbGluZS4KLVNlZSBsaW5rZ2l0OmdpdGlnbm9yZVs1XSBmb3IgdGhlIGRldGFpbHMuCit0aGVtIGluIGEgZmlsZSBpbiB5b3VyIHJlcG9zaXRvcnkgbmFtZWQgYC5naXQvaW5mby9leGNsdWRlYCwgb3IgaW4gYW55CitmaWxlIHNwZWNpZmllZCBieSB0aGUgYGNvcmUuZXhjbHVkZXNmaWxlYCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLgorU29tZSBHaXQgY29tbWFuZHMgY2FuIGFsc28gdGFrZSBleGNsdWRlIHBhdHRlcm5zIGRpcmVjdGx5IG9uIHRoZQorY29tbWFuZCBsaW5lLiAgU2VlIGxpbmtnaXQ6Z2l0aWdub3JlWzVdIGZvciB0aGUgZGV0YWlscy4KIAogW1tob3ctdG8tbWVyZ2VdXQogSG93IHRvIG1lcmdlCkBAIC0xMTkzLDEwICsxMjE0LDEwIEBACiAkIGdpdCBtZXJnZSBicmFuY2huYW1lCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLW1lcmdlcyB0aGUgZGV2ZWxvcG1lbnQgaW4gdGhlIGJyYW5jaCAiYnJhbmNobmFtZSIgaW50byB0aGUgY3VycmVudAorbWVyZ2VzIHRoZSBkZXZlbG9wbWVudCBpbiB0aGUgYnJhbmNoIGBicmFuY2huYW1lYCBpbnRvIHRoZSBjdXJyZW50CiBicmFuY2guCiAKLUEgbWVyZ2UgaXMgbWFkZSBieSBjb21iaW5pbmcgdGhlIGNoYW5nZXMgbWFkZSBpbiAiYnJhbmNobmFtZSIgYW5kIHRoZQorQSBtZXJnZSBpcyBtYWRlIGJ5IGNvbWJpbmluZyB0aGUgY2hhbmdlcyBtYWRlIGluIGBicmFuY2huYW1lYCBhbmQgdGhlCiBjaGFuZ2VzIG1hZGUgdXAgdG8gdGhlIGxhdGVzdCBjb21taXQgaW4geW91ciBjdXJyZW50IGJyYW5jaCBzaW5jZQogdGhlaXIgaGlzdG9yaWVzIGZvcmtlZC4gVGhlIHdvcmsgdHJlZSBpcyBvdmVyd3JpdHRlbiBieSB0aGUgcmVzdWx0IG9mCiB0aGUgbWVyZ2Ugd2hlbiB0aGlzIGNvbWJpbmluZyBpcyBkb25lIGNsZWFubHksIG9yIG92ZXJ3cml0dGVuIGJ5IGEKQEAgLTEyMjQsNyArMTI0NSw3IEBACiAKIENvbmZsaWN0IG1hcmtlcnMgYXJlIGxlZnQgaW4gdGhlIHByb2JsZW1hdGljIGZpbGVzLCBhbmQgYWZ0ZXIKIHlvdSByZXNvbHZlIHRoZSBjb25mbGljdHMgbWFudWFsbHksIHlvdSBjYW4gdXBkYXRlIHRoZSBpbmRleAotd2l0aCB0aGUgY29udGVudHMgYW5kIHJ1biBnaXQgY29tbWl0LCBhcyB5b3Ugbm9ybWFsbHkgd291bGQgd2hlbgord2l0aCB0aGUgY29udGVudHMgYW5kIHJ1biBHaXQgY29tbWl0LCBhcyB5b3Ugbm9ybWFsbHkgd291bGQgd2hlbgogY3JlYXRpbmcgYSBuZXcgZmlsZS4KIAogSWYgeW91IGV4YW1pbmUgdGhlIHJlc3VsdGluZyBjb21taXQgdXNpbmcgZ2l0aywgeW91IHdpbGwgc2VlIHRoYXQgaXQKQEAgLTEyMzUsNyArMTI1Niw3IEBACiBSZXNvbHZpbmcgYSBtZXJnZQogLS0tLS0tLS0tLS0tLS0tLS0KIAotV2hlbiBhIG1lcmdlIGlzbid0IHJlc29sdmVkIGF1dG9tYXRpY2FsbHksIGdpdCBsZWF2ZXMgdGhlIGluZGV4IGFuZAorV2hlbiBhIG1lcmdlIGlzbid0IHJlc29sdmVkIGF1dG9tYXRpY2FsbHksIEdpdCBsZWF2ZXMgdGhlIGluZGV4IGFuZAogdGhlIHdvcmtpbmcgdHJlZSBpbiBhIHNwZWNpYWwgc3RhdGUgdGhhdCBnaXZlcyB5b3UgYWxsIHRoZQogaW5mb3JtYXRpb24geW91IG5lZWQgdG8gaGVscCByZXNvbHZlIHRoZSBtZXJnZS4KIApAQCAtMTI3MSwxNCArMTI5MiwxNCBAQAogZGVmYXVsdCBtZXNzYWdlIHVuY2hhbmdlZCwgYnV0IHlvdSBtYXkgYWRkIGFkZGl0aW9uYWwgY29tbWVudGFyeSBvZgogeW91ciBvd24gaWYgZGVzaXJlZC4KIAotVGhlIGFib3ZlIGlzIGFsbCB5b3UgbmVlZCB0byBrbm93IHRvIHJlc29sdmUgYSBzaW1wbGUgbWVyZ2UuICBCdXQgZ2l0CitUaGUgYWJvdmUgaXMgYWxsIHlvdSBuZWVkIHRvIGtub3cgdG8gcmVzb2x2ZSBhIHNpbXBsZSBtZXJnZS4gIEJ1dCBHaXQKIGFsc28gcHJvdmlkZXMgbW9yZSBpbmZvcm1hdGlvbiB0byBoZWxwIHJlc29sdmUgY29uZmxpY3RzOgogCiBbW2NvbmZsaWN0LXJlc29sdXRpb25dXQogR2V0dGluZyBjb25mbGljdC1yZXNvbHV0aW9uIGhlbHAgZHVyaW5nIGEgbWVyZ2UKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLUFsbCBvZiB0aGUgY2hhbmdlcyB0aGF0IGdpdCB3YXMgYWJsZSB0byBtZXJnZSBhdXRvbWF0aWNhbGx5IGFyZQorQWxsIG9mIHRoZSBjaGFuZ2VzIHRoYXQgR2l0IHdhcyBhYmxlIHRvIG1lcmdlIGF1dG9tYXRpY2FsbHkgYXJlCiBhbHJlYWR5IGFkZGVkIHRvIHRoZSBpbmRleCBmaWxlLCBzbyBsaW5rZ2l0OmdpdC1kaWZmWzFdIHNob3dzIG9ubHkKIHRoZSBjb25mbGljdHMuICBJdCB1c2VzIGFuIHVudXN1YWwgc3ludGF4OgogCkBAIC0xMzE4LDcgKzEzMzksNyBAQAogCiBUaGUgZGlmZiBhYm92ZSBzaG93cyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgd29ya2luZy10cmVlIHZlcnNpb24gb2YKIGZpbGUudHh0IGFuZCB0aGUgc3RhZ2UgMiBhbmQgc3RhZ2UgMyB2ZXJzaW9ucy4gIFNvIGluc3RlYWQgb2YgcHJlY2VkaW5nCi1lYWNoIGxpbmUgYnkgYSBzaW5nbGUgIisiIG9yICItIiwgaXQgbm93IHVzZXMgdHdvIGNvbHVtbnM6IHRoZSBmaXJzdAorZWFjaCBsaW5lIGJ5IGEgc2luZ2xlIGArYCBvciBgLWAsIGl0IG5vdyB1c2VzIHR3byBjb2x1bW5zOiB0aGUgZmlyc3QKIGNvbHVtbiBpcyB1c2VkIGZvciBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBmaXJzdCBwYXJlbnQgYW5kIHRoZSB3b3JraW5nCiBkaXJlY3RvcnkgY29weSwgYW5kIHRoZSBzZWNvbmQgZm9yIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHNlY29uZCBwYXJlbnQKIGFuZCB0aGUgd29ya2luZyBkaXJlY3RvcnkgY29weS4gIChTZWUgdGhlICJDT01CSU5FRCBESUZGIEZPUk1BVCIgc2VjdGlvbgpAQCAtMTQxMCw3ICsxNDMxLDcgQEAKIHdlcmUgbWVyZ2VkLgogCiBIb3dldmVyLCBpZiB0aGUgY3VycmVudCBicmFuY2ggaXMgYSBkZXNjZW5kYW50IG9mIHRoZSBvdGhlci0tc28gZXZlcnkKLWNvbW1pdCBwcmVzZW50IGluIHRoZSBvbmUgaXMgYWxyZWFkeSBjb250YWluZWQgaW4gdGhlIG90aGVyLS10aGVuIGdpdAorY29tbWl0IHByZXNlbnQgaW4gdGhlIG9uZSBpcyBhbHJlYWR5IGNvbnRhaW5lZCBpbiB0aGUgb3RoZXItLXRoZW4gR2l0CiBqdXN0IHBlcmZvcm1zIGEgImZhc3QtZm9yd2FyZCI7IHRoZSBoZWFkIG9mIHRoZSBjdXJyZW50IGJyYW5jaCBpcyBtb3ZlZAogZm9yd2FyZCB0byBwb2ludCBhdCB0aGUgaGVhZCBvZiB0aGUgbWVyZ2VkLWluIGJyYW5jaCwgd2l0aG91dCBhbnkgbmV3CiBjb21taXRzIGJlaW5nIGNyZWF0ZWQuCkBAIC0xNDM2LDcgKzE0NTcsNyBAQAogCiAJMi4gWW91IGNhbiBnbyBiYWNrIGFuZCBtb2RpZnkgdGhlIG9sZCBjb21taXQuICBZb3Ugc2hvdWxkCiAJbmV2ZXIgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhbHJlYWR5IG1hZGUgdGhlIGhpc3RvcnkgcHVibGljOwotCWdpdCBkb2VzIG5vdCBub3JtYWxseSBleHBlY3QgdGhlICJoaXN0b3J5IiBvZiBhIHByb2plY3QgdG8KKwlHaXQgZG9lcyBub3Qgbm9ybWFsbHkgZXhwZWN0IHRoZSAiaGlzdG9yeSIgb2YgYSBwcm9qZWN0IHRvCiAJY2hhbmdlLCBhbmQgY2Fubm90IGNvcnJlY3RseSBwZXJmb3JtIHJlcGVhdGVkIG1lcmdlcyBmcm9tCiAJYSBicmFuY2ggdGhhdCBoYXMgaGFkIGl0cyBoaXN0b3J5IGNoYW5nZWQuCiAKQEAgLTE0NjEsNyArMTQ4Miw3IEBACiAkIGdpdCByZXZlcnQgSEVBRF4KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSW4gdGhpcyBjYXNlIGdpdCB3aWxsIGF0dGVtcHQgdG8gdW5kbyB0aGUgb2xkIGNoYW5nZSB3aGlsZSBsZWF2aW5nCitJbiB0aGlzIGNhc2UgR2l0IHdpbGwgYXR0ZW1wdCB0byB1bmRvIHRoZSBvbGQgY2hhbmdlIHdoaWxlIGxlYXZpbmcKIGludGFjdCBhbnkgY2hhbmdlcyBtYWRlIHNpbmNlIHRoZW4uICBJZiBtb3JlIHJlY2VudCBjaGFuZ2VzIG92ZXJsYXAKIHdpdGggdGhlIGNoYW5nZXMgdG8gYmUgcmV2ZXJ0ZWQsIHRoZW4geW91IHdpbGwgYmUgYXNrZWQgdG8gZml4CiBjb25mbGljdHMgbWFudWFsbHksIGp1c3QgYXMgaW4gdGhlIGNhc2Ugb2YgPDxyZXNvbHZpbmctYS1tZXJnZSwKQEAgLTE1NTgsMTggKzE1NzksMTIgQEAKIEVuc3VyaW5nIGdvb2QgcGVyZm9ybWFuY2UKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotT24gbGFyZ2UgcmVwb3NpdG9yaWVzLCBnaXQgZGVwZW5kcyBvbiBjb21wcmVzc2lvbiB0byBrZWVwIHRoZSBoaXN0b3J5Ci1pbmZvcm1hdGlvbiBmcm9tIHRha2luZyB1cCB0b28gbXVjaCBzcGFjZSBvbiBkaXNrIG9yIGluIG1lbW9yeS4KLQotVGhpcyBjb21wcmVzc2lvbiBpcyBub3QgcGVyZm9ybWVkIGF1dG9tYXRpY2FsbHkuICBUaGVyZWZvcmUgeW91Ci1zaG91bGQgb2NjYXNpb25hbGx5IHJ1biBsaW5rZ2l0OmdpdC1nY1sxXToKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgZ2MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdG8gcmVjb21wcmVzcyB0aGUgYXJjaGl2ZS4gIFRoaXMgY2FuIGJlIHZlcnkgdGltZS1jb25zdW1pbmcsIHNvCi15b3UgbWF5IHByZWZlciB0byBydW4gYGdpdCBnY2Agd2hlbiB5b3UgYXJlIG5vdCBkb2luZyBvdGhlciB3b3JrLgorT24gbGFyZ2UgcmVwb3NpdG9yaWVzLCBHaXQgZGVwZW5kcyBvbiBjb21wcmVzc2lvbiB0byBrZWVwIHRoZSBoaXN0b3J5CitpbmZvcm1hdGlvbiBmcm9tIHRha2luZyB1cCB0b28gbXVjaCBzcGFjZSBvbiBkaXNrIG9yIGluIG1lbW9yeS4gIFNvbWUKK0dpdCBjb21tYW5kcyBtYXkgYXV0b21hdGljYWxseSBydW4gbGlua2dpdDpnaXQtZ2NbMV0sIHNvIHlvdSBkb24ndAoraGF2ZSB0byB3b3JyeSBhYm91dCBydW5uaW5nIGl0IG1hbnVhbGx5LiAgSG93ZXZlciwgY29tcHJlc3NpbmcgYSBsYXJnZQorcmVwb3NpdG9yeSBtYXkgdGFrZSBhIHdoaWxlLCBzbyB5b3UgbWF5IHdhbnQgdG8gY2FsbCBgZ2NgIGV4cGxpY2l0bHkKK3RvIGF2b2lkIGF1dG9tYXRpYyBjb21wcmVzc2lvbiBraWNraW5nIGluIHdoZW4gaXQgaXMgbm90IGNvbnZlbmllbnQuCiAKIAogW1tlbnN1cmluZy1yZWxpYWJpbGl0eV1dCkBAIC0xNTk5LDggKzE2MTQsOCBAQAogCiBZb3Ugd2lsbCBzZWUgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyBvbiBkYW5nbGluZyBvYmplY3RzLiBUaGV5IGFyZSBvYmplY3RzCiB0aGF0IHN0aWxsIGV4aXN0IGluIHRoZSByZXBvc2l0b3J5IGJ1dCBhcmUgbm8gbG9uZ2VyIHJlZmVyZW5jZWQgYnkgYW55IG9mCi15b3VyIGJyYW5jaGVzLCBhbmQgY2FuIChhbmQgd2lsbCkgYmUgcmVtb3ZlZCBhZnRlciBhIHdoaWxlIHdpdGggImdjIi4KLVlvdSBjYW4gcnVuIGBnaXQgZnNjayAtLW5vLWRhbmdsaW5nYCB0byBzdXByZXNzIHRoZXNlIG1lc3NhZ2VzLCBhbmQgc3RpbGwKK3lvdXIgYnJhbmNoZXMsIGFuZCBjYW4gKGFuZCB3aWxsKSBiZSByZW1vdmVkIGFmdGVyIGEgd2hpbGUgd2l0aCBgZ2NgLgorWW91IGNhbiBydW4gYGdpdCBmc2NrIC0tbm8tZGFuZ2xpbmdgIHRvIHN1cHByZXNzIHRoZXNlIG1lc3NhZ2VzLCBhbmQgc3RpbGwKIHZpZXcgcmVhbCBlcnJvcnMuCiAKIFtbcmVjb3ZlcmluZy1sb3N0LWNoYW5nZXNdXQpAQCAtMTYxMSwxMSArMTYyNiwxMSBAQAogUmVmbG9ncwogXl5eXl5eXgogCi1TYXkgeW91IG1vZGlmeSBhIGJyYW5jaCB3aXRoICtsaW5rZ2l0OmdpdC1yZXNldFsxXSBcLS1oYXJkKywgYW5kIHRoZW4KLXJlYWxpemUgdGhhdCB0aGUgYnJhbmNoIHdhcyB0aGUgb25seSByZWZlcmVuY2UgeW91IGhhZCB0byB0aGF0IHBvaW50IGluCi1oaXN0b3J5LgorU2F5IHlvdSBtb2RpZnkgYSBicmFuY2ggd2l0aCA8PGZpeGluZy1taXN0YWtlcyxgZ2l0IHJlc2V0IC0taGFyZGA+PiwKK2FuZCB0aGVuIHJlYWxpemUgdGhhdCB0aGUgYnJhbmNoIHdhcyB0aGUgb25seSByZWZlcmVuY2UgeW91IGhhZCB0bwordGhhdCBwb2ludCBpbiBoaXN0b3J5LgogCi1Gb3J0dW5hdGVseSwgZ2l0IGFsc28ga2VlcHMgYSBsb2csIGNhbGxlZCBhICJyZWZsb2ciLCBvZiBhbGwgdGhlCitGb3J0dW5hdGVseSwgR2l0IGFsc28ga2VlcHMgYSBsb2csIGNhbGxlZCBhICJyZWZsb2ciLCBvZiBhbGwgdGhlCiBwcmV2aW91cyB2YWx1ZXMgb2YgZWFjaCBicmFuY2guICBTbyBpbiB0aGlzIGNhc2UgeW91IGNhbiBzdGlsbCBmaW5kIHRoZQogb2xkIGhpc3RvcnkgdXNpbmcsIGZvciBleGFtcGxlLAogCkBAIC0xNjI0LDggKzE2MzksOCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGlzIGxpc3RzIHRoZSBjb21taXRzIHJlYWNoYWJsZSBmcm9tIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZQotIm1hc3RlciIgYnJhbmNoIGhlYWQuICBUaGlzIHN5bnRheCBjYW4gYmUgdXNlZCB3aXRoIGFueSBnaXQgY29tbWFuZAotdGhhdCBhY2NlcHRzIGEgY29tbWl0LCBub3QganVzdCB3aXRoIGdpdCBsb2cuICBTb21lIG90aGVyIGV4YW1wbGVzOgorYG1hc3RlcmAgYnJhbmNoIGhlYWQuICBUaGlzIHN5bnRheCBjYW4gYmUgdXNlZCB3aXRoIGFueSBHaXQgY29tbWFuZAordGhhdCBhY2NlcHRzIGEgY29tbWl0LCBub3QganVzdCB3aXRoIGBnaXQgbG9nYC4gIFNvbWUgb3RoZXIgZXhhbXBsZXM6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IHNob3cgbWFzdGVyQHsyfQkJIyBTZWUgd2hlcmUgdGhlIGJyYW5jaCBwb2ludGVkIDIsCkBAIC0xNjUwLDcgKzE2NjUsNyBAQAogaG93IHRvIGNvbnRyb2wgdGhpcyBwcnVuaW5nLCBhbmQgc2VlIHRoZSAiU1BFQ0lGWUlORyBSRVZJU0lPTlMiCiBzZWN0aW9uIG9mIGxpbmtnaXQ6Z2l0cmV2aXNpb25zWzddIGZvciBkZXRhaWxzLgogCi1Ob3RlIHRoYXQgdGhlIHJlZmxvZyBoaXN0b3J5IGlzIHZlcnkgZGlmZmVyZW50IGZyb20gbm9ybWFsIGdpdCBoaXN0b3J5LgorTm90ZSB0aGF0IHRoZSByZWZsb2cgaGlzdG9yeSBpcyB2ZXJ5IGRpZmZlcmVudCBmcm9tIG5vcm1hbCBHaXQgaGlzdG9yeS4KIFdoaWxlIG5vcm1hbCBoaXN0b3J5IGlzIHNoYXJlZCBieSBldmVyeSByZXBvc2l0b3J5IHRoYXQgd29ya3Mgb24gdGhlCiBzYW1lIHByb2plY3QsIHRoZSByZWZsb2cgaGlzdG9yeSBpcyBub3Qgc2hhcmVkOiBpdCB0ZWxscyB5b3Ugb25seSBhYm91dAogaG93IHRoZSBicmFuY2hlcyBpbiB5b3VyIGxvY2FsIHJlcG9zaXRvcnkgaGF2ZSBjaGFuZ2VkIG92ZXIgdGltZS4KQEAgLTE3MjksOCArMTc0NCw4IEBACiAkIGdpdCBwdWxsIG9yaWdpbiBtYXN0ZXIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSW4gZmFjdCwgaWYgeW91IGhhdmUgIm1hc3RlciIgY2hlY2tlZCBvdXQsIHRoZW4gdGhpcyBicmFuY2ggaGFzIGJlZW4KLWNvbmZpZ3VyZWQgYnkgImdpdCBjbG9uZSIgdG8gZ2V0IGNoYW5nZXMgZnJvbSB0aGUgSEVBRCBicmFuY2ggb2YgdGhlCitJbiBmYWN0LCBpZiB5b3UgaGF2ZSBgbWFzdGVyYCBjaGVja2VkIG91dCwgdGhlbiB0aGlzIGJyYW5jaCBoYXMgYmVlbgorY29uZmlndXJlZCBieSBgZ2l0IGNsb25lYCB0byBnZXQgY2hhbmdlcyBmcm9tIHRoZSBIRUFEIGJyYW5jaCBvZiB0aGUKIG9yaWdpbiByZXBvc2l0b3J5LiAgU28gb2Z0ZW4geW91IGNhbgogYWNjb21wbGlzaCB0aGUgYWJvdmUgd2l0aCBqdXN0IGEgc2ltcGxlCiAKQEAgLTE3NDUsMTEgKzE3NjAsMTEgQEAKIE1vcmUgZ2VuZXJhbGx5LCBhIGJyYW5jaCB0aGF0IGlzIGNyZWF0ZWQgZnJvbSBhIHJlbW90ZS10cmFja2luZyBicmFuY2gKIHdpbGwgcHVsbAogYnkgZGVmYXVsdCBmcm9tIHRoYXQgYnJhbmNoLiAgU2VlIHRoZSBkZXNjcmlwdGlvbnMgb2YgdGhlCi1icmFuY2guPG5hbWU+LnJlbW90ZSBhbmQgYnJhbmNoLjxuYW1lPi5tZXJnZSBvcHRpb25zIGluCitgYnJhbmNoLjxuYW1lPi5yZW1vdGVgIGFuZCBgYnJhbmNoLjxuYW1lPi5tZXJnZWAgb3B0aW9ucyBpbgogbGlua2dpdDpnaXQtY29uZmlnWzFdLCBhbmQgdGhlIGRpc2N1c3Npb24gb2YgdGhlIGAtLXRyYWNrYCBvcHRpb24gaW4KIGxpbmtnaXQ6Z2l0LWNoZWNrb3V0WzFdLCB0byBsZWFybiBob3cgdG8gY29udHJvbCB0aGVzZSBkZWZhdWx0cy4KIAotSW4gYWRkaXRpb24gdG8gc2F2aW5nIHlvdSBrZXlzdHJva2VzLCAiZ2l0IHB1bGwiIGFsc28gaGVscHMgeW91IGJ5CitJbiBhZGRpdGlvbiB0byBzYXZpbmcgeW91IGtleXN0cm9rZXMsIGBnaXQgcHVsbGAgYWxzbyBoZWxwcyB5b3UgYnkKIHByb2R1Y2luZyBhIGRlZmF1bHQgY29tbWl0IG1lc3NhZ2UgZG9jdW1lbnRpbmcgdGhlIGJyYW5jaCBhbmQKIHJlcG9zaXRvcnkgdGhhdCB5b3UgcHVsbGVkIGZyb20uCiAKQEAgLTE3NTcsNyArMTc3Miw3IEBACiA8PGZhc3QtZm9yd2FyZHMsZmFzdC1mb3J3YXJkPj47IGluc3RlYWQsIHlvdXIgYnJhbmNoIHdpbGwganVzdCBiZQogdXBkYXRlZCB0byBwb2ludCB0byB0aGUgbGF0ZXN0IGNvbW1pdCBmcm9tIHRoZSB1cHN0cmVhbSBicmFuY2guKQogCi1UaGUgYGdpdCBwdWxsYCBjb21tYW5kIGNhbiBhbHNvIGJlIGdpdmVuICIuIiBhcyB0aGUgInJlbW90ZSIgcmVwb3NpdG9yeSwKK1RoZSBgZ2l0IHB1bGxgIGNvbW1hbmQgY2FuIGFsc28gYmUgZ2l2ZW4gYC5gIGFzIHRoZSAicmVtb3RlIiByZXBvc2l0b3J5LAogaW4gd2hpY2ggY2FzZSBpdCBqdXN0IG1lcmdlcyBpbiBhIGJyYW5jaCBmcm9tIHRoZSBjdXJyZW50IHJlcG9zaXRvcnk7IHNvCiB0aGUgY29tbWFuZHMKIApAQCAtMTc4Miw3ICsxNzk3LDE0IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHdpbGwgcHJvZHVjZSBhIG51bWJlcmVkIHNlcmllcyBvZiBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnksIG9uZQotZm9yIGVhY2ggcGF0Y2ggaW4gdGhlIGN1cnJlbnQgYnJhbmNoIGJ1dCBub3QgaW4gb3JpZ2luL0hFQUQuCitmb3IgZWFjaCBwYXRjaCBpbiB0aGUgY3VycmVudCBicmFuY2ggYnV0IG5vdCBpbiBgb3JpZ2luL0hFQURgLgorCitgZ2l0IGZvcm1hdC1wYXRjaGAgY2FuIGluY2x1ZGUgYW4gaW5pdGlhbCAiY292ZXIgbGV0dGVyIi4gWW91IGNhbiBpbnNlcnQKK2NvbW1lbnRhcnkgb24gaW5kaXZpZHVhbCBwYXRjaGVzIGFmdGVyIHRoZSB0aHJlZSBkYXNoIGxpbmUgd2hpY2gKK2Bmb3JtYXQtcGF0Y2hgIHBsYWNlcyBhZnRlciB0aGUgY29tbWl0IG1lc3NhZ2UgYnV0IGJlZm9yZSB0aGUgcGF0Y2gKK2l0c2VsZi4gIElmIHlvdSB1c2UgYGdpdCBub3Rlc2AgdG8gdHJhY2sgeW91ciBjb3ZlciBsZXR0ZXIgbWF0ZXJpYWwsCitgZ2l0IGZvcm1hdC1wYXRjaCAtLW5vdGVzYCB3aWxsIGluY2x1ZGUgdGhlIGNvbW1pdCdzIG5vdGVzIGluIGEgc2ltaWxhcgorbWFubmVyLgogCiBZb3UgY2FuIHRoZW4gaW1wb3J0IHRoZXNlIGludG8geW91ciBtYWlsIGNsaWVudCBhbmQgc2VuZCB0aGVtIGJ5CiBoYW5kLiAgSG93ZXZlciwgaWYgeW91IGhhdmUgYSBsb3QgdG8gc2VuZCBhdCBvbmNlLCB5b3UgbWF5IHByZWZlciB0bwpAQCAtMTc5Nyw3ICsxODE5LDcgQEAKIEdpdCBhbHNvIHByb3ZpZGVzIGEgdG9vbCBjYWxsZWQgbGlua2dpdDpnaXQtYW1bMV0gKGFtIHN0YW5kcyBmb3IKICJhcHBseSBtYWlsYm94IiksIGZvciBpbXBvcnRpbmcgc3VjaCBhbiBlbWFpbGVkIHNlcmllcyBvZiBwYXRjaGVzLgogSnVzdCBzYXZlIGFsbCBvZiB0aGUgcGF0Y2gtY29udGFpbmluZyBtZXNzYWdlcywgaW4gb3JkZXIsIGludG8gYQotc2luZ2xlIG1haWxib3ggZmlsZSwgc2F5ICJwYXRjaGVzLm1ib3giLCB0aGVuIHJ1bgorc2luZ2xlIG1haWxib3ggZmlsZSwgc2F5IGBwYXRjaGVzLm1ib3hgLCB0aGVuIHJ1bgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBhbSAtMyBwYXRjaGVzLm1ib3gKQEAgLTE4MDUsOCArMTgyNyw4IEBACiAKIEdpdCB3aWxsIGFwcGx5IGVhY2ggcGF0Y2ggaW4gb3JkZXI7IGlmIGFueSBjb25mbGljdHMgYXJlIGZvdW5kLCBpdAogd2lsbCBzdG9wLCBhbmQgeW91IGNhbiBmaXggdGhlIGNvbmZsaWN0cyBhcyBkZXNjcmliZWQgaW4KLSI8PHJlc29sdmluZy1hLW1lcmdlLFJlc29sdmluZyBhIG1lcmdlPj4iLiAgKFRoZSAiLTMiIG9wdGlvbiB0ZWxscwotZ2l0IHRvIHBlcmZvcm0gYSBtZXJnZTsgaWYgeW91IHdvdWxkIHByZWZlciBpdCBqdXN0IHRvIGFib3J0IGFuZAorIjw8cmVzb2x2aW5nLWEtbWVyZ2UsUmVzb2x2aW5nIGEgbWVyZ2U+PiIuICAoVGhlIGAtM2Agb3B0aW9uIHRlbGxzCitHaXQgdG8gcGVyZm9ybSBhIG1lcmdlOyBpZiB5b3Ugd291bGQgcHJlZmVyIGl0IGp1c3QgdG8gYWJvcnQgYW5kCiBsZWF2ZSB5b3VyIHRyZWUgYW5kIGluZGV4IHVudG91Y2hlZCwgeW91IG1heSBvbWl0IHRoYXQgb3B0aW9uLikKIAogT25jZSB0aGUgaW5kZXggaXMgdXBkYXRlZCB3aXRoIHRoZSByZXN1bHRzIG9mIHRoZSBjb25mbGljdApAQCAtMTgxNiw3ICsxODM4LDcgQEAKICQgZ2l0IGFtIC0tcmVzb2x2ZWQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotYW5kIGdpdCB3aWxsIGNyZWF0ZSB0aGUgY29tbWl0IGZvciB5b3UgYW5kIGNvbnRpbnVlIGFwcGx5aW5nIHRoZQorYW5kIEdpdCB3aWxsIGNyZWF0ZSB0aGUgY29tbWl0IGZvciB5b3UgYW5kIGNvbnRpbnVlIGFwcGx5aW5nIHRoZQogcmVtYWluaW5nIHBhdGNoZXMgZnJvbSB0aGUgbWFpbGJveC4KIAogVGhlIGZpbmFsIHJlc3VsdCB3aWxsIGJlIGEgc2VyaWVzIG9mIGNvbW1pdHMsIG9uZSBmb3IgZWFjaCBwYXRjaCBpbgpAQCAtMTgyNCw3ICsxODQ2LDcgQEAKIHRha2VuIGZyb20gdGhlIG1lc3NhZ2UgY29udGFpbmluZyBlYWNoIHBhdGNoLgogCiBbW3B1YmxpYy1yZXBvc2l0b3JpZXNdXQotUHVibGljIGdpdCByZXBvc2l0b3JpZXMKK1B1YmxpYyBHaXQgcmVwb3NpdG9yaWVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBBbm90aGVyIHdheSB0byBzdWJtaXQgY2hhbmdlcyB0byBhIHByb2plY3QgaXMgdG8gdGVsbCB0aGUgbWFpbnRhaW5lcgpAQCAtMTg4MSw3ICsxOTAzLDcgQEAKIFNldHRpbmcgdXAgYSBwdWJsaWMgcmVwb3NpdG9yeQogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLUFzc3VtZSB5b3VyIHBlcnNvbmFsIHJlcG9zaXRvcnkgaXMgaW4gdGhlIGRpcmVjdG9yeSB+L3Byb2ouICBXZQorQXNzdW1lIHlvdXIgcGVyc29uYWwgcmVwb3NpdG9yeSBpcyBpbiB0aGUgZGlyZWN0b3J5IGB+L3Byb2pgLiAgV2UKIGZpcnN0IGNyZWF0ZSBhIG5ldyBjbG9uZSBvZiB0aGUgcmVwb3NpdG9yeSBhbmQgdGVsbCBgZ2l0IGRhZW1vbmAgdGhhdCBpdAogaXMgbWVhbnQgdG8gYmUgcHVibGljOgogCkBAIC0xODkxLDI4ICsxOTEzLDI4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFRoZSByZXN1bHRpbmcgZGlyZWN0b3J5IHByb2ouZ2l0IGNvbnRhaW5zIGEgImJhcmUiIGdpdCByZXBvc2l0b3J5LS1pdCBpcwotanVzdCB0aGUgY29udGVudHMgb2YgdGhlICIuZ2l0IiBkaXJlY3RvcnksIHdpdGhvdXQgYW55IGZpbGVzIGNoZWNrZWQgb3V0CitqdXN0IHRoZSBjb250ZW50cyBvZiB0aGUgYC5naXRgIGRpcmVjdG9yeSwgd2l0aG91dCBhbnkgZmlsZXMgY2hlY2tlZCBvdXQKIGFyb3VuZCBpdC4KIAotTmV4dCwgY29weSBwcm9qLmdpdCB0byB0aGUgc2VydmVyIHdoZXJlIHlvdSBwbGFuIHRvIGhvc3QgdGhlCitOZXh0LCBjb3B5IGBwcm9qLmdpdGAgdG8gdGhlIHNlcnZlciB3aGVyZSB5b3UgcGxhbiB0byBob3N0IHRoZQogcHVibGljIHJlcG9zaXRvcnkuICBZb3UgY2FuIHVzZSBzY3AsIHJzeW5jLCBvciB3aGF0ZXZlciBpcyBtb3N0CiBjb252ZW5pZW50LgogCiBbW2V4cG9ydGluZy12aWEtZ2l0XV0KLUV4cG9ydGluZyBhIGdpdCByZXBvc2l0b3J5IHZpYSB0aGUgZ2l0IHByb3RvY29sCitFeHBvcnRpbmcgYSBHaXQgcmVwb3NpdG9yeSB2aWEgdGhlIEdpdCBwcm90b2NvbAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAogVGhpcyBpcyB0aGUgcHJlZmVycmVkIG1ldGhvZC4KIAogSWYgc29tZW9uZSBlbHNlIGFkbWluaXN0ZXJzIHRoZSBzZXJ2ZXIsIHRoZXkgc2hvdWxkIHRlbGwgeW91IHdoYXQKLWRpcmVjdG9yeSB0byBwdXQgdGhlIHJlcG9zaXRvcnkgaW4sIGFuZCB3aGF0IGdpdDovLyBVUkwgaXQgd2lsbCBhcHBlYXIKLWF0LiAgWW91IGNhbiB0aGVuIHNraXAgdG8gdGhlIHNlY3Rpb24KK2RpcmVjdG9yeSB0byBwdXQgdGhlIHJlcG9zaXRvcnkgaW4sIGFuZCB3aGF0IGBnaXQ6Ly9gIFVSTCBpdCB3aWxsCithcHBlYXIgYXQuICBZb3UgY2FuIHRoZW4gc2tpcCB0byB0aGUgc2VjdGlvbgogIjw8cHVzaGluZy1jaGFuZ2VzLXRvLWEtcHVibGljLXJlcG9zaXRvcnksUHVzaGluZyBjaGFuZ2VzIHRvIGEgcHVibGljCiByZXBvc2l0b3J5Pj4iLCBiZWxvdy4KIAogT3RoZXJ3aXNlLCBhbGwgeW91IG5lZWQgdG8gZG8gaXMgc3RhcnQgbGlua2dpdDpnaXQtZGFlbW9uWzFdOyBpdCB3aWxsCiBsaXN0ZW4gb24gcG9ydCA5NDE4LiAgQnkgZGVmYXVsdCwgaXQgd2lsbCBhbGxvdyBhY2Nlc3MgdG8gYW55IGRpcmVjdG9yeQotdGhhdCBsb29rcyBsaWtlIGEgZ2l0IGRpcmVjdG9yeSBhbmQgY29udGFpbnMgdGhlIG1hZ2ljIGZpbGUKK3RoYXQgbG9va3MgbGlrZSBhIEdpdCBkaXJlY3RvcnkgYW5kIGNvbnRhaW5zIHRoZSBtYWdpYyBmaWxlCiBnaXQtZGFlbW9uLWV4cG9ydC1vay4gIFBhc3Npbmcgc29tZSBkaXJlY3RvcnkgcGF0aHMgYXMgYGdpdCBkYWVtb25gCiBhcmd1bWVudHMgd2lsbCBmdXJ0aGVyIHJlc3RyaWN0IHRoZSBleHBvcnRzIHRvIHRob3NlIHBhdGhzLgogCkBAIC0xOTIxLDEzICsxOTQzLDEzIEBACiBleGFtcGxlcyBzZWN0aW9uLikKIAogW1tleHBvcnRpbmctdmlhLWh0dHBdXQotRXhwb3J0aW5nIGEgZ2l0IHJlcG9zaXRvcnkgdmlhIGh0dHAKK0V4cG9ydGluZyBhIGdpdCByZXBvc2l0b3J5IHZpYSBIVFRQCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCi1UaGUgZ2l0IHByb3RvY29sIGdpdmVzIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgcmVsaWFiaWxpdHksIGJ1dCBvbiBhCi1ob3N0IHdpdGggYSB3ZWIgc2VydmVyIHNldCB1cCwgaHR0cCBleHBvcnRzIG1heSBiZSBzaW1wbGVyIHRvIHNldCB1cC4KK1RoZSBHaXQgcHJvdG9jb2wgZ2l2ZXMgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCByZWxpYWJpbGl0eSwgYnV0IG9uIGEKK2hvc3Qgd2l0aCBhIHdlYiBzZXJ2ZXIgc2V0IHVwLCBIVFRQIGV4cG9ydHMgbWF5IGJlIHNpbXBsZXIgdG8gc2V0IHVwLgogCi1BbGwgeW91IG5lZWQgdG8gZG8gaXMgcGxhY2UgdGhlIG5ld2x5IGNyZWF0ZWQgYmFyZSBnaXQgcmVwb3NpdG9yeSBpbgorQWxsIHlvdSBuZWVkIHRvIGRvIGlzIHBsYWNlIHRoZSBuZXdseSBjcmVhdGVkIGJhcmUgR2l0IHJlcG9zaXRvcnkgaW4KIGEgZGlyZWN0b3J5IHRoYXQgaXMgZXhwb3J0ZWQgYnkgdGhlIHdlYiBzZXJ2ZXIsIGFuZCBtYWtlIHNvbWUKIGFkanVzdG1lbnRzIHRvIGdpdmUgd2ViIGNsaWVudHMgc29tZSBleHRyYSBpbmZvcm1hdGlvbiB0aGV5IG5lZWQ6CiAKQEAgLTE5NDEsNyArMTk2Myw3IEBACiAoRm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBsYXN0IHR3byBsaW5lcywgc2VlCiBsaW5rZ2l0OmdpdC11cGRhdGUtc2VydmVyLWluZm9bMV0gYW5kIGxpbmtnaXQ6Z2l0aG9va3NbNV0uKQogCi1BZHZlcnRpc2UgdGhlIFVSTCBvZiBwcm9qLmdpdC4gIEFueWJvZHkgZWxzZSBzaG91bGQgdGhlbiBiZSBhYmxlIHRvCitBZHZlcnRpc2UgdGhlIFVSTCBvZiBgcHJvai5naXRgLiAgQW55Ym9keSBlbHNlIHNob3VsZCB0aGVuIGJlIGFibGUgdG8KIGNsb25lIG9yIHB1bGwgZnJvbSB0aGF0IFVSTCwgZm9yIGV4YW1wbGUgd2l0aCBhIGNvbW1hbmQgbGluZSBsaWtlOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xOTUxLDcgKzE5NzMsNyBAQAogKFNlZSBhbHNvCiBsaW5rOmhvd3RvL3NldHVwLWdpdC1zZXJ2ZXItb3Zlci1odHRwLnR4dFtzZXR1cC1naXQtc2VydmVyLW92ZXItaHR0cF0KIGZvciBhIHNsaWdodGx5IG1vcmUgc29waGlzdGljYXRlZCBzZXR1cCB1c2luZyBXZWJEQVYgd2hpY2ggYWxzbwotYWxsb3dzIHB1c2hpbmcgb3ZlciBodHRwLikKK2FsbG93cyBwdXNoaW5nIG92ZXIgSFRUUC4pCiAKIFtbcHVzaGluZy1jaGFuZ2VzLXRvLWEtcHVibGljLXJlcG9zaXRvcnldXQogUHVzaGluZyBjaGFuZ2VzIHRvIGEgcHVibGljIHJlcG9zaXRvcnkKQEAgLTE5NjQsOCArMTk4Niw4IEBACiBsYXRlc3QgY2hhbmdlcyBjcmVhdGVkIGluIHlvdXIgcHJpdmF0ZSByZXBvc2l0b3J5LgogCiBUaGUgc2ltcGxlc3Qgd2F5IHRvIGRvIHRoaXMgaXMgdXNpbmcgbGlua2dpdDpnaXQtcHVzaFsxXSBhbmQgc3NoOyB0bwotdXBkYXRlIHRoZSByZW1vdGUgYnJhbmNoIG5hbWVkICJtYXN0ZXIiIHdpdGggdGhlIGxhdGVzdCBzdGF0ZSBvZiB5b3VyCi1icmFuY2ggbmFtZWQgIm1hc3RlciIsIHJ1bgordXBkYXRlIHRoZSByZW1vdGUgYnJhbmNoIG5hbWVkIGBtYXN0ZXJgIHdpdGggdGhlIGxhdGVzdCBzdGF0ZSBvZiB5b3VyCiticmFuY2ggbmFtZWQgYG1hc3RlcmAsIHJ1bgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBwdXNoIHNzaDovL3lvdXJzZXJ2ZXIuY29tL355b3UvcHJvai5naXQgbWFzdGVyOm1hc3RlcgpAQCAtMTk4MSwzMSArMjAwMywzNyBAQAogPDxmYXN0LWZvcndhcmRzLGZhc3QtZm9yd2FyZD4+OyBzZWUgdGhlIGZvbGxvd2luZyBzZWN0aW9uIGZvciBkZXRhaWxzIG9uCiBoYW5kbGluZyB0aGlzIGNhc2UuCiAKLU5vdGUgdGhhdCB0aGUgdGFyZ2V0IG9mIGEgInB1c2giIGlzIG5vcm1hbGx5IGEKK05vdGUgdGhhdCB0aGUgdGFyZ2V0IG9mIGEgYHB1c2hgIGlzIG5vcm1hbGx5IGEKIDw8ZGVmX2JhcmVfcmVwb3NpdG9yeSxiYXJlPj4gcmVwb3NpdG9yeS4gIFlvdSBjYW4gYWxzbyBwdXNoIHRvIGEKLXJlcG9zaXRvcnkgdGhhdCBoYXMgYSBjaGVja2VkLW91dCB3b3JraW5nIHRyZWUsIGJ1dCB0aGUgd29ya2luZyB0cmVlCi13aWxsIG5vdCBiZSB1cGRhdGVkIGJ5IHRoZSBwdXNoLiAgVGhpcyBtYXkgbGVhZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMgaWYKLXRoZSBicmFuY2ggeW91IHB1c2ggdG8gaXMgdGhlIGN1cnJlbnRseSBjaGVja2VkLW91dCBicmFuY2ghCityZXBvc2l0b3J5IHRoYXQgaGFzIGEgY2hlY2tlZC1vdXQgd29ya2luZyB0cmVlLCBidXQgYSBwdXNoIHRvIHVwZGF0ZSB0aGUKK2N1cnJlbnRseSBjaGVja2VkLW91dCBicmFuY2ggaXMgZGVuaWVkIGJ5IGRlZmF1bHQgdG8gcHJldmVudCBjb25mdXNpb24uCitTZWUgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSByZWNlaXZlLmRlbnlDdXJyZW50QnJhbmNoIG9wdGlvbgoraW4gbGlua2dpdDpnaXQtY29uZmlnWzFdIGZvciBkZXRhaWxzLgogCiBBcyB3aXRoIGBnaXQgZmV0Y2hgLCB5b3UgbWF5IGFsc28gc2V0IHVwIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0bwotc2F2ZSB0eXBpbmc7IHNvLCBmb3IgZXhhbXBsZSwgYWZ0ZXIKK3NhdmUgdHlwaW5nOyBzbywgZm9yIGV4YW1wbGU6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgY2F0ID4+LmdpdC9jb25maWcgPDxFT0YKKyQgZ2l0IHJlbW90ZSBhZGQgcHVibGljLXJlcG8gc3NoOi8veW91cnNlcnZlci5jb20vfnlvdS9wcm9qLmdpdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCithZGRzIHRoZSBmb2xsb3dpbmcgdG8gYC5naXQvY29uZmlnYDoKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogW3JlbW90ZSAicHVibGljLXJlcG8iXQotCXVybCA9IHNzaDovL3lvdXJzZXJ2ZXIuY29tL355b3UvcHJvai5naXQKLUVPRgorCXVybCA9IHlvdXJzZXJ2ZXIuY29tOnByb2ouZ2l0CisJZmV0Y2ggPSArcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy9leGFtcGxlLyoKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAoteW91IHNob3VsZCBiZSBhYmxlIHRvIHBlcmZvcm0gdGhlIGFib3ZlIHB1c2ggd2l0aCBqdXN0Cit3aGljaCBsZXRzIHlvdSBkbyB0aGUgc2FtZSBwdXNoIHdpdGgganVzdAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBwdXNoIHB1YmxpYy1yZXBvIG1hc3RlcgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1TZWUgdGhlIGV4cGxhbmF0aW9ucyBvZiB0aGUgcmVtb3RlLjxuYW1lPi51cmwsIGJyYW5jaC48bmFtZT4ucmVtb3RlLAotYW5kIHJlbW90ZS48bmFtZT4ucHVzaCBvcHRpb25zIGluIGxpbmtnaXQ6Z2l0LWNvbmZpZ1sxXSBmb3IKLWRldGFpbHMuCitTZWUgdGhlIGV4cGxhbmF0aW9ucyBvZiB0aGUgYHJlbW90ZS48bmFtZT4udXJsYCwKK2BicmFuY2guPG5hbWU+LnJlbW90ZWAsIGFuZCBgcmVtb3RlLjxuYW1lPi5wdXNoYCBvcHRpb25zIGluCitsaW5rZ2l0OmdpdC1jb25maWdbMV0gZm9yIGRldGFpbHMuCiAKIFtbZm9yY2luZy1wdXNoXV0KIFdoYXQgdG8gZG8gd2hlbiBhIHB1c2ggZmFpbHMKQEAgLTIwMzYsNiArMjA2NCwxMyBAQAogJCBnaXQgcHVzaCBzc2g6Ly95b3Vyc2VydmVyLmNvbS9+eW91L3Byb2ouZ2l0ICttYXN0ZXIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorTm90ZSB0aGUgYWRkaXRpb24gb2YgdGhlIGArYCBzaWduLiAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlCitgLWZgIGZsYWcgdG8gZm9yY2UgdGhlIHJlbW90ZSB1cGRhdGUsIGFzIGluOgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiskIGdpdCBwdXNoIC1mIHNzaDovL3lvdXJzZXJ2ZXIuY29tL355b3UvcHJvai5naXQgbWFzdGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKIE5vcm1hbGx5IHdoZW5ldmVyIGEgYnJhbmNoIGhlYWQgaW4gYSBwdWJsaWMgcmVwb3NpdG9yeSBpcyBtb2RpZmllZCwgaXQKIGlzIG1vZGlmaWVkIHRvIHBvaW50IHRvIGEgZGVzY2VuZGFudCBvZiB0aGUgY29tbWl0IHRoYXQgaXQgcG9pbnRlZCB0bwogYmVmb3JlLiAgQnkgZm9yY2luZyBhIHB1c2ggaW4gdGhpcyBzaXR1YXRpb24sIHlvdSBicmVhayB0aGF0IGNvbnZlbnRpb24uCkBAIC0yMDYzLDkgKzIwOTgsOSBAQAogbGlua2dpdDpnaXRjdnMtbWlncmF0aW9uWzddIGZvciBpbnN0cnVjdGlvbnMgb24gaG93IHRvCiBzZXQgdGhpcyB1cC4KIAotSG93ZXZlciwgd2hpbGUgdGhlcmUgaXMgbm90aGluZyB3cm9uZyB3aXRoIGdpdCdzIHN1cHBvcnQgZm9yIHNoYXJlZAorSG93ZXZlciwgd2hpbGUgdGhlcmUgaXMgbm90aGluZyB3cm9uZyB3aXRoIEdpdCdzIHN1cHBvcnQgZm9yIHNoYXJlZAogcmVwb3NpdG9yaWVzLCB0aGlzIG1vZGUgb2Ygb3BlcmF0aW9uIGlzIG5vdCBnZW5lcmFsbHkgcmVjb21tZW5kZWQsCi1zaW1wbHkgYmVjYXVzZSB0aGUgbW9kZSBvZiBjb2xsYWJvcmF0aW9uIHRoYXQgZ2l0IHN1cHBvcnRzLS1ieQorc2ltcGx5IGJlY2F1c2UgdGhlIG1vZGUgb2YgY29sbGFib3JhdGlvbiB0aGF0IEdpdCBzdXBwb3J0cy0tYnkKIGV4Y2hhbmdpbmcgcGF0Y2hlcyBhbmQgcHVsbGluZyBmcm9tIHB1YmxpYyByZXBvc2l0b3JpZXMtLWhhcyBzbyBtYW55CiBhZHZhbnRhZ2VzIG92ZXIgdGhlIGNlbnRyYWwgc2hhcmVkIHJlcG9zaXRvcnk6CiAKQEAgLTIwODksOCArMjEyNCw4IEBACiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKIFRoZSBnaXR3ZWIgY2dpIHNjcmlwdCBwcm92aWRlcyB1c2VycyBhbiBlYXN5IHdheSB0byBicm93c2UgeW91cgotcHJvamVjdCdzIGZpbGVzIGFuZCBoaXN0b3J5IHdpdGhvdXQgaGF2aW5nIHRvIGluc3RhbGwgZ2l0OyBzZWUgdGhlIGZpbGUKLWdpdHdlYi9JTlNUQUxMIGluIHRoZSBnaXQgc291cmNlIHRyZWUgZm9yIGluc3RydWN0aW9ucyBvbiBzZXR0aW5nIGl0IHVwLgorcHJvamVjdCdzIGZpbGVzIGFuZCBoaXN0b3J5IHdpdGhvdXQgaGF2aW5nIHRvIGluc3RhbGwgR2l0OyBzZWUgdGhlIGZpbGUKK2dpdHdlYi9JTlNUQUxMIGluIHRoZSBHaXQgc291cmNlIHRyZWUgZm9yIGluc3RydWN0aW9ucyBvbiBzZXR0aW5nIGl0IHVwLgogCiBbW3NoYXJpbmctZGV2ZWxvcG1lbnQtZXhhbXBsZXNdXQogRXhhbXBsZXMKQEAgLTIxMDAsNyArMjEzNSw3IEBACiBNYWludGFpbmluZyB0b3BpYyBicmFuY2hlcyBmb3IgYSBMaW51eCBzdWJzeXN0ZW0gbWFpbnRhaW5lcgogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAotVGhpcyBkZXNjcmliZXMgaG93IFRvbnkgTHVjayB1c2VzIGdpdCBpbiBoaXMgcm9sZSBhcyBtYWludGFpbmVyIG9mIHRoZQorVGhpcyBkZXNjcmliZXMgaG93IFRvbnkgTHVjayB1c2VzIEdpdCBpbiBoaXMgcm9sZSBhcyBtYWludGFpbmVyIG9mIHRoZQogSUE2NCBhcmNoaXRlY3R1cmUgZm9yIHRoZSBMaW51eCBrZXJuZWwuCiAKIEhlIHVzZXMgdHdvIHB1YmxpYyBicmFuY2hlczoKQEAgLTIxMzMsNyArMjE2OCw3IEBACiAKIE5vdyBjcmVhdGUgdGhlIGJyYW5jaGVzIGluIHdoaWNoIHlvdSBhcmUgZ29pbmcgdG8gd29yazsgdGhlc2Ugc3RhcnQgb3V0CiBhdCB0aGUgY3VycmVudCB0aXAgb2Ygb3JpZ2luL21hc3RlciBicmFuY2gsIGFuZCBzaG91bGQgYmUgc2V0IHVwICh1c2luZwotdGhlIC0tdHJhY2sgb3B0aW9uIHRvIGxpbmtnaXQ6Z2l0LWJyYW5jaFsxXSkgdG8gbWVyZ2UgY2hhbmdlcyBpbiBmcm9tCit0aGUgYC0tdHJhY2tgIG9wdGlvbiB0byBsaW5rZ2l0OmdpdC1icmFuY2hbMV0pIHRvIG1lcmdlIGNoYW5nZXMgaW4gZnJvbQogTGludXMgYnkgZGVmYXVsdC4KIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjE1MCw5ICsyMTg1LDkgQEAKIAogSW1wb3J0YW50IG5vdGUhICBJZiB5b3UgaGF2ZSBhbnkgbG9jYWwgY2hhbmdlcyBpbiB0aGVzZSBicmFuY2hlcywgdGhlbgogdGhpcyBtZXJnZSB3aWxsIGNyZWF0ZSBhIGNvbW1pdCBvYmplY3QgaW4gdGhlIGhpc3RvcnkgKHdpdGggbm8gbG9jYWwKLWNoYW5nZXMgZ2l0IHdpbGwgc2ltcGx5IGRvIGEgImZhc3QtZm9yd2FyZCIgbWVyZ2UpLiAgTWFueSBwZW9wbGUgZGlzbGlrZQorY2hhbmdlcyBHaXQgd2lsbCBzaW1wbHkgZG8gYSAiZmFzdC1mb3J3YXJkIiBtZXJnZSkuICBNYW55IHBlb3BsZSBkaXNsaWtlCiB0aGUgIm5vaXNlIiB0aGF0IHRoaXMgY3JlYXRlcyBpbiB0aGUgTGludXggaGlzdG9yeSwgc28geW91IHNob3VsZCBhdm9pZAotZG9pbmcgdGhpcyBjYXByaWNpb3VzbHkgaW4gdGhlICJyZWxlYXNlIiBicmFuY2gsIGFzIHRoZXNlIG5vaXN5IGNvbW1pdHMKK2RvaW5nIHRoaXMgY2FwcmljaW91c2x5IGluIHRoZSBgcmVsZWFzZWAgYnJhbmNoLCBhcyB0aGVzZSBub2lzeSBjb21taXRzCiB3aWxsIGJlY29tZSBwYXJ0IG9mIHRoZSBwZXJtYW5lbnQgaGlzdG9yeSB3aGVuIHlvdSBhc2sgTGludXMgdG8gcHVsbAogZnJvbSB0aGUgcmVsZWFzZSBicmFuY2guCiAKQEAgLTIxOTQsNyArMjIyOSw3IEBACiBMaW51cydzIGJyYW5jaC4gUGlja2luZyBhIHN0YWJsZSBiYXNlIGZvciB5b3VyIGJyYW5jaCB3aWxsOgogMSkgaGVscCB5b3U6IGJ5IGF2b2lkaW5nIGluY2x1c2lvbiBvZiB1bnJlbGF0ZWQgYW5kIHBlcmhhcHMgbGlnaHRseQogdGVzdGVkIGNoYW5nZXMKLTIpIGhlbHAgZnV0dXJlIGJ1ZyBodW50ZXJzIHRoYXQgdXNlICJnaXQgYmlzZWN0IiB0byBmaW5kIHByb2JsZW1zCisyKSBoZWxwIGZ1dHVyZSBidWcgaHVudGVycyB0aGF0IHVzZSBgZ2l0IGJpc2VjdGAgdG8gZmluZCBwcm9ibGVtcwogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBjaGVja291dCAtYiBzcGVlZC11cC1zcGlubG9ja3MgdjIuNi4zNQpAQCAtMjIxOSw5ICsyMjU0LDkgQEAKIHNwZW50IGEgd2hpbGUgb24gdGhpcyBzdGVwIGFuZCBoYWQgYWxzbyBwdWxsZWQgbmV3IHZlcnNpb25zIGZyb20gdXBzdHJlYW0uCiAKIFNvbWUgdGltZSBsYXRlciB3aGVuIGVub3VnaCB0aW1lIGhhcyBwYXNzZWQgYW5kIHRlc3RpbmcgZG9uZSwgeW91IGNhbiBwdWxsIHRoZQotc2FtZSBicmFuY2ggaW50byB0aGUgInJlbGVhc2UiIHRyZWUgcmVhZHkgdG8gZ28gdXBzdHJlYW0uICBUaGlzIGlzIHdoZXJlIHlvdQorc2FtZSBicmFuY2ggaW50byB0aGUgYHJlbGVhc2VgIHRyZWUgcmVhZHkgdG8gZ28gdXBzdHJlYW0uICBUaGlzIGlzIHdoZXJlIHlvdQogc2VlIHRoZSB2YWx1ZSBvZiBrZWVwaW5nIGVhY2ggcGF0Y2ggKG9yIHBhdGNoIHNlcmllcykgaW4gaXRzIG93biBicmFuY2guICBJdAotbWVhbnMgdGhhdCB0aGUgcGF0Y2hlcyBjYW4gYmUgbW92ZWQgaW50byB0aGUgInJlbGVhc2UiIHRyZWUgaW4gYW55IG9yZGVyLgorbWVhbnMgdGhhdCB0aGUgcGF0Y2hlcyBjYW4gYmUgbW92ZWQgaW50byB0aGUgYHJlbGVhc2VgIHRyZWUgaW4gYW55IG9yZGVyLgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBjaGVja291dCByZWxlYXNlICYmIGdpdCBwdWxsIC4gc3BlZWQtdXAtc3BpbmxvY2tzCkBAIC0yMjU0LDcgKzIyODksNyBAQAogCiBPbmNlIGEgcGF0Y2ggY29tcGxldGVzIHRoZSBncmVhdCBjeWNsZSAobW92aW5nIGZyb20gdGVzdCB0byByZWxlYXNlLAogdGhlbiBwdWxsZWQgYnkgTGludXMsIGFuZCBmaW5hbGx5IGNvbWluZyBiYWNrIGludG8geW91ciBsb2NhbAotIm9yaWdpbi9tYXN0ZXIiIGJyYW5jaCksIHRoZSBicmFuY2ggZm9yIHRoaXMgY2hhbmdlIGlzIG5vIGxvbmdlciBuZWVkZWQuCitgb3JpZ2luL21hc3RlcmAgYnJhbmNoKSwgdGhlIGJyYW5jaCBmb3IgdGhpcyBjaGFuZ2UgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KIFlvdSBkZXRlY3QgdGhpcyB3aGVuIHRoZSBvdXRwdXQgZnJvbToKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjI2OSwyNyArMjMwNCwyMyBAQAogCiBTb21lIGNoYW5nZXMgYXJlIHNvIHRyaXZpYWwgdGhhdCBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNyZWF0ZSBhIHNlcGFyYXRlCiBicmFuY2ggYW5kIHRoZW4gbWVyZ2UgaW50byBlYWNoIG9mIHRoZSB0ZXN0IGFuZCByZWxlYXNlIGJyYW5jaGVzLiAgRm9yCi10aGVzZSBjaGFuZ2VzLCBqdXN0IGFwcGx5IGRpcmVjdGx5IHRvIHRoZSAicmVsZWFzZSIgYnJhbmNoLCBhbmQgdGhlbgotbWVyZ2UgdGhhdCBpbnRvIHRoZSAidGVzdCIgYnJhbmNoLgordGhlc2UgY2hhbmdlcywganVzdCBhcHBseSBkaXJlY3RseSB0byB0aGUgYHJlbGVhc2VgIGJyYW5jaCwgYW5kIHRoZW4KK21lcmdlIHRoYXQgaW50byB0aGUgYHRlc3RgIGJyYW5jaC4KIAotVG8gY3JlYXRlIGRpZmZzdGF0IGFuZCBzaG9ydGxvZyBzdW1tYXJpZXMgb2YgY2hhbmdlcyB0byBpbmNsdWRlIGluIGEgInBsZWFzZQotcHVsbCIgcmVxdWVzdCB0byBMaW51cyB5b3UgY2FuIHVzZToKK0FmdGVyIHB1c2hpbmcgeW91ciB3b3JrIHRvIGBteXRyZWVgLCB5b3UgY2FuIHVzZQorbGlua2dpdDpnaXQtcmVxdWVzdC1wdWxsWzFdIHRvIHByZXBhcmUgYSAicGxlYXNlIHB1bGwiIHJlcXVlc3QgbWVzc2FnZQordG8gc2VuZCB0byBMaW51czoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgZGlmZiAtLXN0YXQgb3JpZ2luLi5yZWxlYXNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWFuZAotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBsb2cgLXAgb3JpZ2luLi5yZWxlYXNlIHwgZ2l0IHNob3J0bG9nCiskIGdpdCBwdXNoIG15dHJlZQorJCBnaXQgcmVxdWVzdC1wdWxsIG9yaWdpbiBteXRyZWUgcmVsZWFzZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBIZXJlIGFyZSBzb21lIG9mIHRoZSBzY3JpcHRzIHRoYXQgc2ltcGxpZnkgYWxsIHRoaXMgZXZlbiBmdXJ0aGVyLgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA9PT09IHVwZGF0ZSBzY3JpcHQgPT09PQotIyBVcGRhdGUgYSBicmFuY2ggaW4gbXkgR0lUIHRyZWUuICBJZiB0aGUgYnJhbmNoIHRvIGJlIHVwZGF0ZWQKKyMgVXBkYXRlIGEgYnJhbmNoIGluIG15IEdpdCB0cmVlLiAgSWYgdGhlIGJyYW5jaCB0byBiZSB1cGRhdGVkCiAjIGlzIG9yaWdpbiwgdGhlbiBwdWxsIGZyb20ga2VybmVsLm9yZy4gIE90aGVyd2lzZSBtZXJnZQogIyBvcmlnaW4vbWFzdGVyIGJyYW5jaCBpbnRvIHRlc3R8cmVsZWFzZSBicmFuY2gKIApAQCAtMjMwNyw3ICsyMzM4LDcgQEAKIAlmaQogCTs7CiAqKQotCWVjaG8gIlVzYWdlOiAkMCBvcmlnaW58dGVzdHxyZWxlYXNlIiAxPiYyCisJZWNobyAidXNhZ2U6ICQwIG9yaWdpbnx0ZXN0fHJlbGVhc2UiIDE+JjIKIAlleGl0IDEKIAk7OwogZXNhYwpAQCAtMjMyMSw3ICsyMzUyLDcgQEAKIAogdXNhZ2UoKQogewotCWVjaG8gIlVzYWdlOiAkcG5hbWUgYnJhbmNoIHRlc3R8cmVsZWFzZSIgMT4mMgorCWVjaG8gInVzYWdlOiAkcG5hbWUgYnJhbmNoIHRlc3R8cmVsZWFzZSIgMT4mMgogCWV4aXQgMQogfQogCkBAIC0yMzQ3LDcgKzIzNzgsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA9PT09IHN0YXR1cyBzY3JpcHQgPT09PQotIyByZXBvcnQgb24gc3RhdHVzIG9mIG15IGlhNjQgR0lUIHRyZWUKKyMgcmVwb3J0IG9uIHN0YXR1cyBvZiBteSBpYTY0IEdpdCB0cmVlCiAKIGdiPSQodHB1dCBzZXRhYiAyKQogcmI9JCh0cHV0IHNldGFiIDEpCkBAIC0yNDAzLDcgKzI0MzQsNyBAQAogCiBOb3JtYWxseSBjb21taXRzIGFyZSBvbmx5IGFkZGVkIHRvIGEgcHJvamVjdCwgbmV2ZXIgdGFrZW4gYXdheSBvcgogcmVwbGFjZWQuICBHaXQgaXMgZGVzaWduZWQgd2l0aCB0aGlzIGFzc3VtcHRpb24sIGFuZCB2aW9sYXRpbmcgaXQgd2lsbAotY2F1c2UgZ2l0J3MgbWVyZ2UgbWFjaGluZXJ5IChmb3IgZXhhbXBsZSkgdG8gZG8gdGhlIHdyb25nIHRoaW5nLgorY2F1c2UgR2l0J3MgbWVyZ2UgbWFjaGluZXJ5IChmb3IgZXhhbXBsZSkgdG8gZG8gdGhlIHdyb25nIHRoaW5nLgogCiBIb3dldmVyLCB0aGVyZSBpcyBhIHNpdHVhdGlvbiBpbiB3aGljaCBpdCBjYW4gYmUgdXNlZnVsIHRvIHZpb2xhdGUgdGhpcwogYXNzdW1wdGlvbi4KQEAgLTI0NDUsOCArMjQ3Niw4IEBACiBLZWVwaW5nIGEgcGF0Y2ggc2VyaWVzIHVwIHRvIGRhdGUgdXNpbmcgZ2l0IHJlYmFzZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU3VwcG9zZSB0aGF0IHlvdSBjcmVhdGUgYSBicmFuY2ggIm15d29yayIgb24gYSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoCi0ib3JpZ2luIiwgYW5kIGNyZWF0ZSBzb21lIGNvbW1pdHMgb24gdG9wIG9mIGl0OgorU3VwcG9zZSB0aGF0IHlvdSBjcmVhdGUgYSBicmFuY2ggYG15d29ya2Agb24gYSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoCitgb3JpZ2luYCwgYW5kIGNyZWF0ZSBzb21lIGNvbW1pdHMgb24gdG9wIG9mIGl0OgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBjaGVja291dCAtYiBteXdvcmsgb3JpZ2luCkBAIC0yNDU4LDcgKzI0ODksNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBZb3UgaGF2ZSBwZXJmb3JtZWQgbm8gbWVyZ2VzIGludG8gbXl3b3JrLCBzbyBpdCBpcyBqdXN0IGEgc2ltcGxlIGxpbmVhcgotc2VxdWVuY2Ugb2YgcGF0Y2hlcyBvbiB0b3Agb2YgIm9yaWdpbiI6CitzZXF1ZW5jZSBvZiBwYXRjaGVzIG9uIHRvcCBvZiBgb3JpZ2luYDoKIAogLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAgby0tby0tTyA8LS0gb3JpZ2luCkBAIC0yNDY3LDcgKzI0OTgsNyBAQAogLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAKIFNvbWUgbW9yZSBpbnRlcmVzdGluZyB3b3JrIGhhcyBiZWVuIGRvbmUgaW4gdGhlIHVwc3RyZWFtIHByb2plY3QsIGFuZAotIm9yaWdpbiIgaGFzIGFkdmFuY2VkOgorYG9yaWdpbmAgaGFzIGFkdmFuY2VkOgogCiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KICBvLS1vLS1PLS1vLS1vLS1vIDwtLSBvcmlnaW4KQEAgLTI0NzUsNyArMjUwNiw3IEBACiAgICAgICAgICBhLS1iLS1jIDwtLSBteXdvcmsKIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogCi1BdCB0aGlzIHBvaW50LCB5b3UgY291bGQgdXNlICJwdWxsIiB0byBtZXJnZSB5b3VyIGNoYW5nZXMgYmFjayBpbjsKK0F0IHRoaXMgcG9pbnQsIHlvdSBjb3VsZCB1c2UgYHB1bGxgIHRvIG1lcmdlIHlvdXIgY2hhbmdlcyBiYWNrIGluOwogdGhlIHJlc3VsdCB3b3VsZCBjcmVhdGUgYSBuZXcgbWVyZ2UgY29tbWl0LCBsaWtlIHRoaXM6CiAKIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgpAQCAtMjQ5NCw3ICsyNTI1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhpcyB3aWxsIHJlbW92ZSBlYWNoIG9mIHlvdXIgY29tbWl0cyBmcm9tIG15d29yaywgdGVtcG9yYXJpbHkgc2F2aW5nCi10aGVtIGFzIHBhdGNoZXMgKGluIGEgZGlyZWN0b3J5IG5hbWVkICIuZ2l0L3JlYmFzZS1hcHBseSIpLCB1cGRhdGUgbXl3b3JrIHRvCit0aGVtIGFzIHBhdGNoZXMgKGluIGEgZGlyZWN0b3J5IG5hbWVkIGAuZ2l0L3JlYmFzZS1hcHBseWApLCB1cGRhdGUgbXl3b3JrIHRvCiBwb2ludCBhdCB0aGUgbGF0ZXN0IHZlcnNpb24gb2Ygb3JpZ2luLCB0aGVuIGFwcGx5IGVhY2ggb2YgdGhlIHNhdmVkCiBwYXRjaGVzIHRvIHRoZSBuZXcgbXl3b3JrLiAgVGhlIHJlc3VsdCB3aWxsIGxvb2sgbGlrZToKIApAQCAtMjUxNCw3ICsyNTQ1LDcgQEAKICQgZ2l0IHJlYmFzZSAtLWNvbnRpbnVlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWFuZCBnaXQgd2lsbCBjb250aW51ZSBhcHBseWluZyB0aGUgcmVzdCBvZiB0aGUgcGF0Y2hlcy4KK2FuZCBHaXQgd2lsbCBjb250aW51ZSBhcHBseWluZyB0aGUgcmVzdCBvZiB0aGUgcGF0Y2hlcy4KIAogQXQgYW55IHBvaW50IHlvdSBtYXkgdXNlIHRoZSBgLS1hYm9ydGAgb3B0aW9uIHRvIGFib3J0IHRoaXMgcHJvY2VzcyBhbmQKIHJldHVybiBteXdvcmsgdG8gdGhlIHN0YXRlIGl0IGhhZCBiZWZvcmUgeW91IHN0YXJ0ZWQgdGhlIHJlYmFzZToKQEAgLTI1MjMsNiArMjU1NCwxMiBAQAogJCBnaXQgcmViYXNlIC0tYWJvcnQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorSWYgeW91IG5lZWQgdG8gcmVvcmRlciBvciBlZGl0IGEgbnVtYmVyIG9mIGNvbW1pdHMgaW4gYSBicmFuY2gsIGl0IG1heQorYmUgZWFzaWVyIHRvIHVzZSBgZ2l0IHJlYmFzZSAtaWAsIHdoaWNoIGFsbG93cyB5b3UgdG8gcmVvcmRlciBhbmQKK3NxdWFzaCBjb21taXRzLCBhcyB3ZWxsIGFzIG1hcmtpbmcgdGhlbSBmb3IgaW5kaXZpZHVhbCBlZGl0aW5nIGR1cmluZwordGhlIHJlYmFzZS4gIFNlZSA8PGludGVyYWN0aXZlLXJlYmFzZT4+IGZvciBkZXRhaWxzLCBhbmQKKzw8cmVvcmRlcmluZy1wYXRjaC1zZXJpZXM+PiBmb3IgYWx0ZXJuYXRpdmVzLgorCiBbW3Jld3JpdGluZy1vbmUtY29tbWl0XV0KIFJld3JpdGluZyBhIHNpbmdsZSBjb21taXQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI1MzYsNzIgKzI1NzMsODkgQEAKIAogd2hpY2ggd2lsbCByZXBsYWNlIHRoZSBvbGQgY29tbWl0IGJ5IGEgbmV3IGNvbW1pdCBpbmNvcnBvcmF0aW5nIHlvdXIKIGNoYW5nZXMsIGdpdmluZyB5b3UgYSBjaGFuY2UgdG8gZWRpdCB0aGUgb2xkIGNvbW1pdCBtZXNzYWdlIGZpcnN0LgorVGhpcyBpcyB1c2VmdWwgZm9yIGZpeGluZyB0eXBvcyBpbiB5b3VyIGxhc3QgY29tbWl0LCBvciBmb3IgYWRqdXN0aW5nCit0aGUgcGF0Y2ggY29udGVudHMgb2YgYSBwb29ybHkgc3RhZ2VkIGNvbW1pdC4KIAotWW91IGNhbiBhbHNvIHVzZSBhIGNvbWJpbmF0aW9uIG9mIHRoaXMgYW5kIGxpbmtnaXQ6Z2l0LXJlYmFzZVsxXSB0bwotcmVwbGFjZSBhIGNvbW1pdCBmdXJ0aGVyIGJhY2sgaW4geW91ciBoaXN0b3J5IGFuZCByZWNyZWF0ZSB0aGUKLWludGVydmVuaW5nIGNoYW5nZXMgb24gdG9wIG9mIGl0LiAgRmlyc3QsIHRhZyB0aGUgcHJvYmxlbWF0aWMgY29tbWl0Ci13aXRoCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgZ2l0IHRhZyBiYWQgbXl3b3JrfjUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotKEVpdGhlciBnaXRrIG9yIGBnaXQgbG9nYCBtYXkgYmUgdXNlZnVsIGZvciBmaW5kaW5nIHRoZSBjb21taXQuKQotCi1UaGVuIGNoZWNrIG91dCB0aGF0IGNvbW1pdCwgZWRpdCBpdCwgYW5kIHJlYmFzZSB0aGUgcmVzdCBvZiB0aGUgc2VyaWVzCi1vbiB0b3Agb2YgaXQgKG5vdGUgdGhhdCB3ZSBjb3VsZCBjaGVjayBvdXQgdGhlIGNvbW1pdCBvbiBhIHRlbXBvcmFyeQotYnJhbmNoLCBidXQgaW5zdGVhZCB3ZSdyZSB1c2luZyBhIDw8ZGV0YWNoZWQtaGVhZCxkZXRhY2hlZCBoZWFkPj4pOgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBjaGVja291dCBiYWQKLSQgIyBtYWtlIGNoYW5nZXMgaGVyZSBhbmQgdXBkYXRlIHRoZSBpbmRleAotJCBnaXQgY29tbWl0IC0tYW1lbmQKLSQgZ2l0IHJlYmFzZSAtLW9udG8gSEVBRCBiYWQgbXl3b3JrCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVdoZW4geW91J3JlIGRvbmUsIHlvdSdsbCBiZSBsZWZ0IHdpdGggbXl3b3JrIGNoZWNrZWQgb3V0LCB3aXRoIHRoZSB0b3AKLXBhdGNoZXMgb24gbXl3b3JrIHJlYXBwbGllZCBvbiB0b3Agb2YgeW91ciBtb2RpZmllZCBjb21taXQuICBZb3UgY2FuCi10aGVuIGNsZWFuIHVwIHdpdGgKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgdGFnIC1kIGJhZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Ob3RlIHRoYXQgdGhlIGltbXV0YWJsZSBuYXR1cmUgb2YgZ2l0IGhpc3RvcnkgbWVhbnMgdGhhdCB5b3UgaGF2ZW4ndCByZWFsbHkKLSJtb2RpZmllZCIgZXhpc3RpbmcgY29tbWl0czsgaW5zdGVhZCwgeW91IGhhdmUgcmVwbGFjZWQgdGhlIG9sZCBjb21taXRzIHdpdGgKLW5ldyBjb21taXRzIGhhdmluZyBuZXcgb2JqZWN0IG5hbWVzLgorSWYgeW91IG5lZWQgdG8gYW1lbmQgY29tbWl0cyBmcm9tIGRlZXBlciBpbiB5b3VyIGhpc3RvcnksIHlvdSBjYW4KK3VzZSA8PGludGVyYWN0aXZlLXJlYmFzZSxpbnRlcmFjdGl2ZSByZWJhc2UncyBgZWRpdGAgaW5zdHJ1Y3Rpb24+Pi4KIAogW1tyZW9yZGVyaW5nLXBhdGNoLXNlcmllc11dCiBSZW9yZGVyaW5nIG9yIHNlbGVjdGluZyBmcm9tIGEgcGF0Y2ggc2VyaWVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUdpdmVuIG9uZSBleGlzdGluZyBjb21taXQsIHRoZSBsaW5rZ2l0OmdpdC1jaGVycnktcGlja1sxXSBjb21tYW5kCi1hbGxvd3MgeW91IHRvIGFwcGx5IHRoZSBjaGFuZ2UgaW50cm9kdWNlZCBieSB0aGF0IGNvbW1pdCBhbmQgY3JlYXRlIGEKLW5ldyBjb21taXQgdGhhdCByZWNvcmRzIGl0LiAgU28sIGZvciBleGFtcGxlLCBpZiAibXl3b3JrIiBwb2ludHMgdG8gYQotc2VyaWVzIG9mIHBhdGNoZXMgb24gdG9wIG9mICJvcmlnaW4iLCB5b3UgbWlnaHQgZG8gc29tZXRoaW5nIGxpa2U6Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgZ2l0IGNoZWNrb3V0IC1iIG15d29yay1uZXcgb3JpZ2luCi0kIGdpdGsgb3JpZ2luLi5teXdvcmsgJgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1hbmQgYnJvd3NlIHRocm91Z2ggdGhlIGxpc3Qgb2YgcGF0Y2hlcyBpbiB0aGUgbXl3b3JrIGJyYW5jaCB1c2luZyBnaXRrLAotYXBwbHlpbmcgdGhlbSAocG9zc2libHkgaW4gYSBkaWZmZXJlbnQgb3JkZXIpIHRvIG15d29yay1uZXcgdXNpbmcKLWNoZXJyeS1waWNrLCBhbmQgcG9zc2libHkgbW9kaWZ5aW5nIHRoZW0gYXMgeW91IGdvIHVzaW5nIGBnaXQgY29tbWl0IC0tYW1lbmRgLgotVGhlIGxpbmtnaXQ6Z2l0LWd1aVsxXSBjb21tYW5kIG1heSBhbHNvIGhlbHAgYXMgaXQgYWxsb3dzIHlvdSB0bwotaW5kaXZpZHVhbGx5IHNlbGVjdCBkaWZmIGh1bmtzIGZvciBpbmNsdXNpb24gaW4gdGhlIGluZGV4IChieQotcmlnaHQtY2xpY2tpbmcgb24gdGhlIGRpZmYgaHVuayBhbmQgY2hvb3NpbmcgIlN0YWdlIEh1bmsgZm9yIENvbW1pdCIpLgotCi1Bbm90aGVyIHRlY2huaXF1ZSBpcyB0byB1c2UgYGdpdCBmb3JtYXQtcGF0Y2hgIHRvIGNyZWF0ZSBhIHNlcmllcyBvZgotcGF0Y2hlcywgdGhlbiByZXNldCB0aGUgc3RhdGUgdG8gYmVmb3JlIHRoZSBwYXRjaGVzOgorU29tZXRpbWVzIHlvdSB3YW50IHRvIGVkaXQgYSBjb21taXQgZGVlcGVyIGluIHlvdXIgaGlzdG9yeS4gIE9uZQorYXBwcm9hY2ggaXMgdG8gdXNlIGBnaXQgZm9ybWF0LXBhdGNoYCB0byBjcmVhdGUgYSBzZXJpZXMgb2YgcGF0Y2hlcworYW5kIHRoZW4gcmVzZXQgdGhlIHN0YXRlIHRvIGJlZm9yZSB0aGUgcGF0Y2hlczoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCBnaXQgZm9ybWF0LXBhdGNoIG9yaWdpbgogJCBnaXQgcmVzZXQgLS1oYXJkIG9yaWdpbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1UaGVuIG1vZGlmeSwgcmVvcmRlciwgb3IgZWxpbWluYXRlIHBhdGNoZXMgYXMgcHJlZmVycmVkIGJlZm9yZSBhcHBseWluZwotdGhlbSBhZ2FpbiB3aXRoIGxpbmtnaXQ6Z2l0LWFtWzFdLgorVGhlbiBtb2RpZnksIHJlb3JkZXIsIG9yIGVsaW1pbmF0ZSBwYXRjaGVzIGFzIG5lZWRlZCBiZWZvcmUgYXBwbHlpbmcKK3RoZW0gYWdhaW4gd2l0aCBsaW5rZ2l0OmdpdC1hbVsxXToKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorJCBnaXQgYW0gKi5wYXRjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitbW2ludGVyYWN0aXZlLXJlYmFzZV1dCitVc2luZyBpbnRlcmFjdGl2ZSByZWJhc2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1lvdSBjYW4gYWxzbyBlZGl0IGEgcGF0Y2ggc2VyaWVzIHdpdGggYW4gaW50ZXJhY3RpdmUgcmViYXNlLiAgVGhpcyBpcwordGhlIHNhbWUgYXMgPDxyZW9yZGVyaW5nLXBhdGNoLXNlcmllcyxyZW9yZGVyaW5nIGEgcGF0Y2ggc2VyaWVzIHVzaW5nCitgZm9ybWF0LXBhdGNoYD4+LCBzbyB1c2Ugd2hpY2hldmVyIGludGVyZmFjZSB5b3UgbGlrZSBiZXN0LgorCitSZWJhc2UgeW91ciBjdXJyZW50IEhFQUQgb24gdGhlIGxhc3QgY29tbWl0IHlvdSB3YW50IHRvIHJldGFpbiBhcy1pcy4KK0ZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byByZW9yZGVyIHRoZSBsYXN0IDUgY29tbWl0cywgdXNlOgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiskIGdpdCByZWJhc2UgLWkgSEVBRH41CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgd2lsbCBvcGVuIHlvdXIgZWRpdG9yIHdpdGggYSBsaXN0IG9mIHN0ZXBzIHRvIGJlIHRha2VuIHRvIHBlcmZvcm0KK3lvdXIgcmViYXNlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitwaWNrIGRlYWRiZWUgVGhlIG9uZWxpbmUgb2YgdGhpcyBjb21taXQKK3BpY2sgZmExYWZlMSBUaGUgb25lbGluZSBvZiB0aGUgbmV4dCBjb21taXQKKy4uLgorCisjIFJlYmFzZSBjMGZmZWVlLi5kZWFkYmVlIG9udG8gYzBmZmVlZQorIworIyBDb21tYW5kczoKKyMgIHAsIHBpY2sgPSB1c2UgY29tbWl0CisjICByLCByZXdvcmQgPSB1c2UgY29tbWl0LCBidXQgZWRpdCB0aGUgY29tbWl0IG1lc3NhZ2UKKyMgIGUsIGVkaXQgPSB1c2UgY29tbWl0LCBidXQgc3RvcCBmb3IgYW1lbmRpbmcKKyMgIHMsIHNxdWFzaCA9IHVzZSBjb21taXQsIGJ1dCBtZWxkIGludG8gcHJldmlvdXMgY29tbWl0CisjICBmLCBmaXh1cCA9IGxpa2UgInNxdWFzaCIsIGJ1dCBkaXNjYXJkIHRoaXMgY29tbWl0J3MgbG9nIG1lc3NhZ2UKKyMgIHgsIGV4ZWMgPSBydW4gY29tbWFuZCAodGhlIHJlc3Qgb2YgdGhlIGxpbmUpIHVzaW5nIHNoZWxsCisjCisjIFRoZXNlIGxpbmVzIGNhbiBiZSByZS1vcmRlcmVkOyB0aGV5IGFyZSBleGVjdXRlZCBmcm9tIHRvcCB0byBib3R0b20uCisjCisjIElmIHlvdSByZW1vdmUgYSBsaW5lIGhlcmUgVEhBVCBDT01NSVQgV0lMTCBCRSBMT1NULgorIworIyBIb3dldmVyLCBpZiB5b3UgcmVtb3ZlIGV2ZXJ5dGhpbmcsIHRoZSByZWJhc2Ugd2lsbCBiZSBhYm9ydGVkLgorIworIyBOb3RlIHRoYXQgZW1wdHkgY29tbWl0cyBhcmUgY29tbWVudGVkIG91dAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBcyBleHBsYWluZWQgaW4gdGhlIGNvbW1lbnRzLCB5b3UgY2FuIHJlb3JkZXIgY29tbWl0cywgc3F1YXNoIHRoZW0KK3RvZ2V0aGVyLCBlZGl0IGNvbW1pdCBtZXNzYWdlcywgZXRjLiBieSBlZGl0aW5nIHRoZSBsaXN0LiAgT25jZSB5b3UKK2FyZSBzYXRpc2ZpZWQsIHNhdmUgdGhlIGxpc3QgYW5kIGNsb3NlIHlvdXIgZWRpdG9yLCBhbmQgdGhlIHJlYmFzZQord2lsbCBiZWdpbi4KKworVGhlIHJlYmFzZSB3aWxsIHN0b3Agd2hlcmUgYHBpY2tgIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggYGVkaXRgIG9yCit3aGVuIGEgc3RlcCBpbiB0aGUgbGlzdCBmYWlscyB0byBtZWNoYW5pY2FsbHkgcmVzb2x2ZSBjb25mbGljdHMgYW5kCituZWVkcyB5b3VyIGhlbHAuICBXaGVuIHlvdSBhcmUgZG9uZSBlZGl0aW5nIGFuZC9vciByZXNvbHZpbmcgY29uZmxpY3RzCit5b3UgY2FuIGNvbnRpbnVlIHdpdGggYGdpdCByZWJhc2UgLS1jb250aW51ZWAuICBJZiB5b3UgZGVjaWRlIHRoYXQKK3RoaW5ncyBhcmUgZ2V0dGluZyB0b28gaGFpcnksIHlvdSBjYW4gYWx3YXlzIGJhaWwgb3V0IHdpdGggYGdpdCByZWJhc2UKKy0tYWJvcnRgLiAgRXZlbiBhZnRlciB0aGUgcmViYXNlIGlzIGNvbXBsZXRlLCB5b3UgY2FuIHN0aWxsIHJlY292ZXIKK3RoZSBvcmlnaW5hbCBicmFuY2ggYnkgdXNpbmcgdGhlIDw8cmVmbG9ncyxyZWZsb2c+Pi4KKworRm9yIGEgbW9yZSBkZXRhaWxlZCBkaXNjdXNzaW9uIG9mIHRoZSBwcm9jZWR1cmUgYW5kIGFkZGl0aW9uYWwgdGlwcywKK3NlZSB0aGUgIklOVEVSQUNUSVZFIE1PREUiIHNlY3Rpb24gb2YgbGlua2dpdDpnaXQtcmViYXNlWzFdLgogCiBbW3BhdGNoLXNlcmllcy10b29sc11dCiBPdGhlciB0b29scwpAQCAtMjY0OCw3ICsyNzAyLDcgQEAKIHRoZSBvbGQgaGVhZDsgaXQgdHJlYXRzIHRoaXMgc2l0dWF0aW9uIGV4YWN0bHkgdGhlIHNhbWUgYXMgaXQgd291bGQgaWYKIHR3byBkZXZlbG9wZXJzIGhhZCBpbmRlcGVuZGVudGx5IGRvbmUgdGhlIHdvcmsgb24gdGhlIG9sZCBhbmQgbmV3IGhlYWRzCiBpbiBwYXJhbGxlbC4gIEF0IHRoaXMgcG9pbnQsIGlmIHNvbWVvbmUgYXR0ZW1wdHMgdG8gbWVyZ2UgdGhlIG5ldyBoZWFkCi1pbiB0byB0aGVpciBicmFuY2gsIGdpdCB3aWxsIGF0dGVtcHQgdG8gbWVyZ2UgdG9nZXRoZXIgdGhlIHR3byAob2xkIGFuZAoraW4gdG8gdGhlaXIgYnJhbmNoLCBHaXQgd2lsbCBhdHRlbXB0IHRvIG1lcmdlIHRvZ2V0aGVyIHRoZSB0d28gKG9sZCBhbmQKIG5ldykgbGluZXMgb2YgZGV2ZWxvcG1lbnQsIGluc3RlYWQgb2YgdHJ5aW5nIHRvIHJlcGxhY2UgdGhlIG9sZCBieSB0aGUKIG5ldy4gIFRoZSByZXN1bHRzIGFyZSBsaWtlbHkgdG8gYmUgdW5leHBlY3RlZC4KIApAQCAtMjcyMSw3ICsyNzc1LDcgQEAKIEJpc2VjdGluZyBiZXR3ZWVuIFogYW5kIEQqIHdvdWxkIGhpdCBhIHNpbmdsZSBjdWxwcml0IGNvbW1pdCBZKiwKIGFuZCB1bmRlcnN0YW5kaW5nIHdoeSBZKiB3YXMgYnJva2VuIHdvdWxkIHByb2JhYmx5IGJlIGVhc2llci4KIAotUGFydGx5IGZvciB0aGlzIHJlYXNvbiwgbWFueSBleHBlcmllbmNlZCBnaXQgdXNlcnMsIGV2ZW4gd2hlbgorUGFydGx5IGZvciB0aGlzIHJlYXNvbiwgbWFueSBleHBlcmllbmNlZCBHaXQgdXNlcnMsIGV2ZW4gd2hlbgogd29ya2luZyBvbiBhbiBvdGhlcndpc2UgbWVyZ2UtaGVhdnkgcHJvamVjdCwga2VlcCB0aGUgaGlzdG9yeQogbGluZWFyIGJ5IHJlYmFzaW5nIGFnYWluc3QgdGhlIGxhdGVzdCB1cHN0cmVhbSB2ZXJzaW9uIGJlZm9yZQogcHVibGlzaGluZy4KQEAgLTI3NDIsMTAgKzI3OTYsMTAgQEAKICQgZ2l0IGZldGNoIG9yaWdpbiB0b2RvOm15LXRvZG8td29yawogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1UaGUgZmlyc3QgYXJndW1lbnQsICJvcmlnaW4iLCBqdXN0IHRlbGxzIGdpdCB0byBmZXRjaCBmcm9tIHRoZQotcmVwb3NpdG9yeSB5b3Ugb3JpZ2luYWxseSBjbG9uZWQgZnJvbS4gIFRoZSBzZWNvbmQgYXJndW1lbnQgdGVsbHMgZ2l0Ci10byBmZXRjaCB0aGUgYnJhbmNoIG5hbWVkICJ0b2RvIiBmcm9tIHRoZSByZW1vdGUgcmVwb3NpdG9yeSwgYW5kIHRvCi1zdG9yZSBpdCBsb2NhbGx5IHVuZGVyIHRoZSBuYW1lIHJlZnMvaGVhZHMvbXktdG9kby13b3JrLgorVGhlIGZpcnN0IGFyZ3VtZW50LCBgb3JpZ2luYCwganVzdCB0ZWxscyBHaXQgdG8gZmV0Y2ggZnJvbSB0aGUKK3JlcG9zaXRvcnkgeW91IG9yaWdpbmFsbHkgY2xvbmVkIGZyb20uICBUaGUgc2Vjb25kIGFyZ3VtZW50IHRlbGxzIEdpdAordG8gZmV0Y2ggdGhlIGJyYW5jaCBuYW1lZCBgdG9kb2AgZnJvbSB0aGUgcmVtb3RlIHJlcG9zaXRvcnksIGFuZCB0bworc3RvcmUgaXQgbG9jYWxseSB1bmRlciB0aGUgbmFtZSBgcmVmcy9oZWFkcy9teS10b2RvLXdvcmtgLgogCiBZb3UgY2FuIGFsc28gZmV0Y2ggYnJhbmNoZXMgZnJvbSBvdGhlciByZXBvc2l0b3JpZXM7IHNvCiAKQEAgLTI3NTMsOCArMjgwNyw4IEBACiAkIGdpdCBmZXRjaCBnaXQ6Ly9leGFtcGxlLmNvbS9wcm9qLmdpdCBtYXN0ZXI6ZXhhbXBsZS1tYXN0ZXIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotd2lsbCBjcmVhdGUgYSBuZXcgYnJhbmNoIG5hbWVkICJleGFtcGxlLW1hc3RlciIgYW5kIHN0b3JlIGluIGl0IHRoZQotYnJhbmNoIG5hbWVkICJtYXN0ZXIiIGZyb20gdGhlIHJlcG9zaXRvcnkgYXQgdGhlIGdpdmVuIFVSTC4gIElmIHlvdQord2lsbCBjcmVhdGUgYSBuZXcgYnJhbmNoIG5hbWVkIGBleGFtcGxlLW1hc3RlcmAgYW5kIHN0b3JlIGluIGl0IHRoZQorYnJhbmNoIG5hbWVkIGBtYXN0ZXJgIGZyb20gdGhlIHJlcG9zaXRvcnkgYXQgdGhlIGdpdmVuIFVSTC4gIElmIHlvdQogYWxyZWFkeSBoYXZlIGEgYnJhbmNoIG5hbWVkIGV4YW1wbGUtbWFzdGVyLCBpdCB3aWxsIGF0dGVtcHQgdG8KIDw8ZmFzdC1mb3J3YXJkcyxmYXN0LWZvcndhcmQ+PiB0byB0aGUgY29tbWl0IGdpdmVuIGJ5IGV4YW1wbGUuY29tJ3MKIG1hc3RlciBicmFuY2guICBJbiBtb3JlIGRldGFpbDoKQEAgLTI3NjMsNyArMjgxNyw3IEBACiBnaXQgZmV0Y2ggYW5kIGZhc3QtZm9yd2FyZHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1JbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgd2hlbiB1cGRhdGluZyBhbiBleGlzdGluZyBicmFuY2gsICJnaXQgZmV0Y2giCitJbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgd2hlbiB1cGRhdGluZyBhbiBleGlzdGluZyBicmFuY2gsIGBnaXQgZmV0Y2hgCiBjaGVja3MgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG1vc3QgcmVjZW50IGNvbW1pdCBvbiB0aGUgcmVtb3RlCiBicmFuY2ggaXMgYSBkZXNjZW5kYW50IG9mIHRoZSBtb3N0IHJlY2VudCBjb21taXQgb24geW91ciBjb3B5IG9mIHRoZQogYnJhbmNoIGJlZm9yZSB1cGRhdGluZyB5b3VyIGNvcHkgb2YgdGhlIGJyYW5jaCB0byBwb2ludCBhdCB0aGUgbmV3CkBAIC0yNzg5LDExICsyODQzLDExIEBACiAgICAgICAgICAgICBvLS1vLS1vIDwtLSBuZXcgaGVhZCBvZiB0aGUgYnJhbmNoCiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KIAotSW4gdGhpcyBjYXNlLCAiZ2l0IGZldGNoIiB3aWxsIGZhaWwsIGFuZCBwcmludCBvdXQgYSB3YXJuaW5nLgorSW4gdGhpcyBjYXNlLCBgZ2l0IGZldGNoYCB3aWxsIGZhaWwsIGFuZCBwcmludCBvdXQgYSB3YXJuaW5nLgogCi1JbiB0aGF0IGNhc2UsIHlvdSBjYW4gc3RpbGwgZm9yY2UgZ2l0IHRvIHVwZGF0ZSB0byB0aGUgbmV3IGhlYWQsIGFzCitJbiB0aGF0IGNhc2UsIHlvdSBjYW4gc3RpbGwgZm9yY2UgR2l0IHRvIHVwZGF0ZSB0byB0aGUgbmV3IGhlYWQsIGFzCiBkZXNjcmliZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uLiAgSG93ZXZlciwgbm90ZSB0aGF0IGluIHRoZQotc2l0dWF0aW9uIGFib3ZlIHRoaXMgbWF5IG1lYW4gbG9zaW5nIHRoZSBjb21taXRzIGxhYmVsZWQgImEiIGFuZCAiYiIsCitzaXR1YXRpb24gYWJvdmUgdGhpcyBtYXkgbWVhbiBsb3NpbmcgdGhlIGNvbW1pdHMgbGFiZWxlZCBgYWAgYW5kIGBiYCwKIHVubGVzcyB5b3UndmUgYWxyZWFkeSBjcmVhdGVkIGEgcmVmZXJlbmNlIG9mIHlvdXIgb3duIHBvaW50aW5nIHRvCiB0aGVtLgogCkBAIC0yODA4LDcgKzI4NjIsNyBAQAogJCBnaXQgZmV0Y2ggZ2l0Oi8vZXhhbXBsZS5jb20vcHJvai5naXQgK21hc3RlcjpyZWZzL3JlbW90ZXMvZXhhbXBsZS9tYXN0ZXIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTm90ZSB0aGUgYWRkaXRpb24gb2YgdGhlICIrIiBzaWduLiAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlICItZiIKK05vdGUgdGhlIGFkZGl0aW9uIG9mIHRoZSBgK2Agc2lnbi4gIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBgLWZgCiBmbGFnIHRvIGZvcmNlIHVwZGF0ZXMgb2YgYWxsIHRoZSBmZXRjaGVkIGJyYW5jaGVzLCBhcyBpbjoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjgyMiw5ICsyODc2LDkgQEAKIENvbmZpZ3VyaW5nIHJlbW90ZS10cmFja2luZyBicmFuY2hlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdlIHNhdyBhYm92ZSB0aGF0ICJvcmlnaW4iIGlzIGp1c3QgYSBzaG9ydGN1dCB0byByZWZlciB0byB0aGUKK1dlIHNhdyBhYm92ZSB0aGF0IGBvcmlnaW5gIGlzIGp1c3QgYSBzaG9ydGN1dCB0byByZWZlciB0byB0aGUKIHJlcG9zaXRvcnkgdGhhdCB5b3Ugb3JpZ2luYWxseSBjbG9uZWQgZnJvbS4gIFRoaXMgaW5mb3JtYXRpb24gaXMKLXN0b3JlZCBpbiBnaXQgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMsIHdoaWNoIHlvdSBjYW4gc2VlIHVzaW5nCitzdG9yZWQgaW4gR2l0IGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLCB3aGljaCB5b3UgY2FuIHNlZSB1c2luZwogbGlua2dpdDpnaXQtY29uZmlnWzFdOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yODQwLDQ4ICsyODk0LDM0IEBACiAKIElmIHRoZXJlIGFyZSBvdGhlciByZXBvc2l0b3JpZXMgdGhhdCB5b3UgYWxzbyB1c2UgZnJlcXVlbnRseSwgeW91IGNhbgogY3JlYXRlIHNpbWlsYXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHNhdmUgdHlwaW5nOyBmb3IgZXhhbXBsZSwKLWFmdGVyCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgZ2l0IGNvbmZpZyByZW1vdGUuZXhhbXBsZS51cmwgZ2l0Oi8vZXhhbXBsZS5jb20vcHJvai5naXQKKyQgZ2l0IHJlbW90ZSBhZGQgZXhhbXBsZSBnaXQ6Ly9leGFtcGxlLmNvbS9wcm9qLmdpdAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi10aGVuIHRoZSBmb2xsb3dpbmcgdHdvIGNvbW1hbmRzIHdpbGwgZG8gdGhlIHNhbWUgdGhpbmc6CithZGRzIHRoZSBmb2xsb3dpbmcgdG8gYC5naXQvY29uZmlnYDoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgZmV0Y2ggZ2l0Oi8vZXhhbXBsZS5jb20vcHJvai5naXQgbWFzdGVyOnJlZnMvcmVtb3Rlcy9leGFtcGxlL21hc3RlcgotJCBnaXQgZmV0Y2ggZXhhbXBsZSBtYXN0ZXI6cmVmcy9yZW1vdGVzL2V4YW1wbGUvbWFzdGVyCitbcmVtb3RlICJleGFtcGxlIl0KKwl1cmwgPSBnaXQ6Ly9leGFtcGxlLmNvbS9wcm9qLmdpdAorCWZldGNoID0gK3JlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvZXhhbXBsZS8qCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUV2ZW4gYmV0dGVyLCBpZiB5b3UgYWRkIG9uZSBtb3JlIG9wdGlvbjoKK0Fsc28gbm90ZSB0aGF0IHRoZSBhYm92ZSBjb25maWd1cmF0aW9uIGNhbiBiZSBwZXJmb3JtZWQgYnkgZGlyZWN0bHkKK2VkaXRpbmcgdGhlIGZpbGUgYC5naXQvY29uZmlnYCBpbnN0ZWFkIG9mIHVzaW5nIGxpbmtnaXQ6Z2l0LXJlbW90ZVsxXS4KKworQWZ0ZXIgY29uZmlndXJpbmcgdGhlIHJlbW90ZSwgdGhlIGZvbGxvd2luZyB0aHJlZSBjb21tYW5kcyB3aWxsIGRvIHRoZQorc2FtZSB0aGluZzoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgY29uZmlnIHJlbW90ZS5leGFtcGxlLmZldGNoIG1hc3RlcjpyZWZzL3JlbW90ZXMvZXhhbXBsZS9tYXN0ZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdGhlbiB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHdpbGwgYWxsIGRvIHRoZSBzYW1lIHRoaW5nOgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBmZXRjaCBnaXQ6Ly9leGFtcGxlLmNvbS9wcm9qLmdpdCBtYXN0ZXI6cmVmcy9yZW1vdGVzL2V4YW1wbGUvbWFzdGVyCi0kIGdpdCBmZXRjaCBleGFtcGxlIG1hc3RlcjpyZWZzL3JlbW90ZXMvZXhhbXBsZS9tYXN0ZXIKKyQgZ2l0IGZldGNoIGdpdDovL2V4YW1wbGUuY29tL3Byb2ouZ2l0ICtyZWZzL2hlYWRzLyo6cmVmcy9yZW1vdGVzL2V4YW1wbGUvKgorJCBnaXQgZmV0Y2ggZXhhbXBsZSArcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy9leGFtcGxlLyoKICQgZ2l0IGZldGNoIGV4YW1wbGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotWW91IGNhbiBhbHNvIGFkZCBhICIrIiB0byBmb3JjZSB0aGUgdXBkYXRlIGVhY2ggdGltZToKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgY29uZmlnIHJlbW90ZS5leGFtcGxlLmZldGNoICttYXN0ZXI6cmVmL3JlbW90ZXMvZXhhbXBsZS9tYXN0ZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotRG9uJ3QgZG8gdGhpcyB1bmxlc3MgeW91J3JlIHN1cmUgeW91IHdvbid0IG1pbmQgImdpdCBmZXRjaCIgcG9zc2libHkKLXRocm93aW5nIGF3YXkgY29tbWl0cyBvbiAnZXhhbXBsZS9tYXN0ZXInLgotCi1BbHNvIG5vdGUgdGhhdCBhbGwgb2YgdGhlIGFib3ZlIGNvbmZpZ3VyYXRpb24gY2FuIGJlIHBlcmZvcm1lZCBieQotZGlyZWN0bHkgZWRpdGluZyB0aGUgZmlsZSAuZ2l0L2NvbmZpZyBpbnN0ZWFkIG9mIHVzaW5nCi1saW5rZ2l0OmdpdC1jb25maWdbMV0uCi0KIFNlZSBsaW5rZ2l0OmdpdC1jb25maWdbMV0gZm9yIG1vcmUgZGV0YWlscyBvbiB0aGUgY29uZmlndXJhdGlvbgotb3B0aW9ucyBtZW50aW9uZWQgYWJvdmUuCitvcHRpb25zIG1lbnRpb25lZCBhYm92ZSBhbmQgbGlua2dpdDpnaXQtZmV0Y2hbMV0gZm9yIG1vcmUgZGV0YWlscyBvbgordGhlIHJlZnNwZWMgc3ludGF4LgogCiAKIFtbZ2l0LWNvbmNlcHRzXV0KQEAgLTI4OTAsNyArMjkzMCw3IEBACiAKIEdpdCBpcyBidWlsdCBvbiBhIHNtYWxsIG51bWJlciBvZiBzaW1wbGUgYnV0IHBvd2VyZnVsIGlkZWFzLiAgV2hpbGUgaXQKIGlzIHBvc3NpYmxlIHRvIGdldCB0aGluZ3MgZG9uZSB3aXRob3V0IHVuZGVyc3RhbmRpbmcgdGhlbSwgeW91IHdpbGwgZmluZAotZ2l0IG11Y2ggbW9yZSBpbnR1aXRpdmUgaWYgeW91IGRvLgorR2l0IG11Y2ggbW9yZSBpbnR1aXRpdmUgaWYgeW91IGRvLgogCiBXZSBzdGFydCB3aXRoIHRoZSBtb3N0IGltcG9ydGFudCwgdGhlICA8PGRlZl9vYmplY3RfZGF0YWJhc2Usb2JqZWN0CiBkYXRhYmFzZT4+IGFuZCB0aGUgPDxkZWZfaW5kZXgsaW5kZXg+Pi4KQEAgLTI5NDUsNyArMjk4NSw3IEBACiB+fn5+fn5+fn5+fn5+CiAKIFRoZSAiY29tbWl0IiBvYmplY3QgbGlua3MgYSBwaHlzaWNhbCBzdGF0ZSBvZiBhIHRyZWUgd2l0aCBhIGRlc2NyaXB0aW9uCi1vZiBob3cgd2UgZ290IHRoZXJlIGFuZCB3aHkuICBVc2UgdGhlIC0tcHJldHR5PXJhdyBvcHRpb24gdG8KK29mIGhvdyB3ZSBnb3QgdGhlcmUgYW5kIHdoeS4gIFVzZSB0aGUgYC0tcHJldHR5PXJhd2Agb3B0aW9uIHRvCiBsaW5rZ2l0OmdpdC1zaG93WzFdIG9yIGxpbmtnaXQ6Z2l0LWxvZ1sxXSB0byBleGFtaW5lIHlvdXIgZmF2b3JpdGUKIGNvbW1pdDoKIApAQCAtMjk2Niw3ICszMDA2LDcgQEAKIAogLSBhIHRyZWU6IFRoZSBTSEEtMSBuYW1lIG9mIGEgdHJlZSBvYmplY3QgKGFzIGRlZmluZWQgYmVsb3cpLCByZXByZXNlbnRpbmcKICAgdGhlIGNvbnRlbnRzIG9mIGEgZGlyZWN0b3J5IGF0IGEgY2VydGFpbiBwb2ludCBpbiB0aW1lLgotLSBwYXJlbnQocyk6IFRoZSBTSEEtMSBuYW1lIG9mIHNvbWUgbnVtYmVyIG9mIGNvbW1pdHMgd2hpY2ggcmVwcmVzZW50IHRoZQorLSBwYXJlbnQocyk6IFRoZSBTSEEtMSBuYW1lKHMpIG9mIHNvbWUgbnVtYmVyIG9mIGNvbW1pdHMgd2hpY2ggcmVwcmVzZW50IHRoZQogICBpbW1lZGlhdGVseSBwcmV2aW91cyBzdGVwKHMpIGluIHRoZSBoaXN0b3J5IG9mIHRoZSBwcm9qZWN0LiAgVGhlCiAgIGV4YW1wbGUgYWJvdmUgaGFzIG9uZSBwYXJlbnQ7IG1lcmdlIGNvbW1pdHMgbWF5IGhhdmUgbW9yZSB0aGFuCiAgIG9uZS4gIEEgY29tbWl0IHdpdGggbm8gcGFyZW50cyBpcyBjYWxsZWQgYSAicm9vdCIgY29tbWl0LCBhbmQKQEAgLTI5ODQsMTAgKzMwMjQsMTAgQEAKIE5vdGUgdGhhdCBhIGNvbW1pdCBkb2VzIG5vdCBpdHNlbGYgY29udGFpbiBhbnkgaW5mb3JtYXRpb24gYWJvdXQgd2hhdAogYWN0dWFsbHkgY2hhbmdlZDsgYWxsIGNoYW5nZXMgYXJlIGNhbGN1bGF0ZWQgYnkgY29tcGFyaW5nIHRoZSBjb250ZW50cwogb2YgdGhlIHRyZWUgcmVmZXJyZWQgdG8gYnkgdGhpcyBjb21taXQgd2l0aCB0aGUgdHJlZXMgYXNzb2NpYXRlZCB3aXRoCi1pdHMgcGFyZW50cy4gIEluIHBhcnRpY3VsYXIsIGdpdCBkb2VzIG5vdCBhdHRlbXB0IHRvIHJlY29yZCBmaWxlIHJlbmFtZXMKK2l0cyBwYXJlbnRzLiAgSW4gcGFydGljdWxhciwgR2l0IGRvZXMgbm90IGF0dGVtcHQgdG8gcmVjb3JkIGZpbGUgcmVuYW1lcwogZXhwbGljaXRseSwgdGhvdWdoIGl0IGNhbiBpZGVudGlmeSBjYXNlcyB3aGVyZSB0aGUgZXhpc3RlbmNlIG9mIHRoZSBzYW1lCiBmaWxlIGRhdGEgYXQgY2hhbmdpbmcgcGF0aHMgc3VnZ2VzdHMgYSByZW5hbWUuICAoU2VlLCBmb3IgZXhhbXBsZSwgdGhlCi0tTSBvcHRpb24gdG8gbGlua2dpdDpnaXQtZGlmZlsxXSkuCitgLU1gIG9wdGlvbiB0byBsaW5rZ2l0OmdpdC1kaWZmWzFdKS4KIAogQSBjb21taXQgaXMgdXN1YWxseSBjcmVhdGVkIGJ5IGxpbmtnaXQ6Z2l0LWNvbW1pdFsxXSwgd2hpY2ggY3JlYXRlcyBhCiBjb21taXQgd2hvc2UgcGFyZW50IGlzIG5vcm1hbGx5IHRoZSBjdXJyZW50IEhFQUQsIGFuZCB3aG9zZSB0cmVlIGlzCkBAIC0zMDIzLDE0ICszMDYzLDE0IEBACiBhbmQgYmxvYnMsIGxpa2UgYWxsIG90aGVyIG9iamVjdHMsIGFyZSBuYW1lZCBieSB0aGUgU0hBLTEgaGFzaCBvZiB0aGVpcgogY29udGVudHMsIHR3byB0cmVlcyBoYXZlIHRoZSBzYW1lIFNIQS0xIG5hbWUgaWYgYW5kIG9ubHkgaWYgdGhlaXIKIGNvbnRlbnRzIChpbmNsdWRpbmcsIHJlY3Vyc2l2ZWx5LCB0aGUgY29udGVudHMgb2YgYWxsIHN1YmRpcmVjdG9yaWVzKQotYXJlIGlkZW50aWNhbC4gIFRoaXMgYWxsb3dzIGdpdCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgZGlmZmVyZW5jZXMKK2FyZSBpZGVudGljYWwuICBUaGlzIGFsbG93cyBHaXQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGRpZmZlcmVuY2VzCiBiZXR3ZWVuIHR3byByZWxhdGVkIHRyZWUgb2JqZWN0cywgc2luY2UgaXQgY2FuIGlnbm9yZSBhbnkgZW50cmllcyB3aXRoCiBpZGVudGljYWwgb2JqZWN0IG5hbWVzLgogCiAoTm90ZTogaW4gdGhlIHByZXNlbmNlIG9mIHN1Ym1vZHVsZXMsIHRyZWVzIG1heSBhbHNvIGhhdmUgY29tbWl0cyBhcwogZW50cmllcy4gIFNlZSA8PHN1Ym1vZHVsZXM+PiBmb3IgZG9jdW1lbnRhdGlvbi4pCiAKLU5vdGUgdGhhdCB0aGUgZmlsZXMgYWxsIGhhdmUgbW9kZSA2NDQgb3IgNzU1OiBnaXQgYWN0dWFsbHkgb25seSBwYXlzCitOb3RlIHRoYXQgdGhlIGZpbGVzIGFsbCBoYXZlIG1vZGUgNjQ0IG9yIDc1NTogR2l0IGFjdHVhbGx5IG9ubHkgcGF5cwogYXR0ZW50aW9uIHRvIHRoZSBleGVjdXRhYmxlIGJpdC4KIAogW1tibG9iLW9iamVjdF1dCkBAIC0zMDM4LDcgKzMwNzgsNyBAQAogfn5+fn5+fn5+fn4KIAogWW91IGNhbiB1c2UgbGlua2dpdDpnaXQtc2hvd1sxXSB0byBleGFtaW5lIHRoZSBjb250ZW50cyBvZiBhIGJsb2I7IHRha2UsCi1mb3IgZXhhbXBsZSwgdGhlIGJsb2IgaW4gdGhlIGVudHJ5IGZvciAiQ09QWUlORyIgZnJvbSB0aGUgdHJlZSBhYm92ZToKK2ZvciBleGFtcGxlLCB0aGUgYmxvYiBpbiB0aGUgZW50cnkgZm9yIGBDT1BZSU5HYCBmcm9tIHRoZSB0cmVlIGFib3ZlOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IHNob3cgNmZmODdjNDY2NApAQCAtMzA5MSw3ICszMTMxLDcgQEAKIG9mIHRoZSB0b3AgY29tbWl0LCBhbmQgZGlnaXRhbGx5IHNpZ24gdGhhdCBlbWFpbCB1c2luZyBzb21ldGhpbmcKIGxpa2UgR1BHL1BHUC4KIAotVG8gYXNzaXN0IGluIHRoaXMsIGdpdCBhbHNvIHByb3ZpZGVzIHRoZSB0YWcgb2JqZWN0Li4uCitUbyBhc3Npc3QgaW4gdGhpcywgR2l0IGFsc28gcHJvdmlkZXMgdGhlIHRhZyBvYmplY3QuLi4KIAogW1t0YWctb2JqZWN0XV0KIFRhZyBPYmplY3QKQEAgLTMxMjEsMTQgKzMxNjEsMTQgQEAKIFNlZSB0aGUgbGlua2dpdDpnaXQtdGFnWzFdIGNvbW1hbmQgdG8gbGVhcm4gaG93IHRvIGNyZWF0ZSBhbmQgdmVyaWZ5IHRhZwogb2JqZWN0cy4gIChOb3RlIHRoYXQgbGlua2dpdDpnaXQtdGFnWzFdIGNhbiBhbHNvIGJlIHVzZWQgdG8gY3JlYXRlCiAibGlnaHR3ZWlnaHQgdGFncyIsIHdoaWNoIGFyZSBub3QgdGFnIG9iamVjdHMgYXQgYWxsLCBidXQganVzdCBzaW1wbGUKLXJlZmVyZW5jZXMgd2hvc2UgbmFtZXMgYmVnaW4gd2l0aCAicmVmcy90YWdzLyIpLgorcmVmZXJlbmNlcyB3aG9zZSBuYW1lcyBiZWdpbiB3aXRoIGByZWZzL3RhZ3MvYCkuCiAKIFtbcGFjay1maWxlc11dCi1Ib3cgZ2l0IHN0b3JlcyBvYmplY3RzIGVmZmljaWVudGx5OiBwYWNrIGZpbGVzCitIb3cgR2l0IHN0b3JlcyBvYmplY3RzIGVmZmljaWVudGx5OiBwYWNrIGZpbGVzCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKIE5ld2x5IGNyZWF0ZWQgb2JqZWN0cyBhcmUgaW5pdGlhbGx5IGNyZWF0ZWQgaW4gYSBmaWxlIG5hbWVkIGFmdGVyIHRoZQotb2JqZWN0J3MgU0hBLTEgaGFzaCAoc3RvcmVkIGluIC5naXQvb2JqZWN0cykuCitvYmplY3QncyBTSEEtMSBoYXNoIChzdG9yZWQgaW4gYC5naXQvb2JqZWN0c2ApLgogCiBVbmZvcnR1bmF0ZWx5IHRoaXMgc3lzdGVtIGJlY29tZXMgaW5lZmZpY2llbnQgb25jZSBhIHByb2plY3QgaGFzIGEKIGxvdCBvZiBvYmplY3RzLiAgVHJ5IHRoaXMgb24gYW4gb2xkIHByb2plY3Q6CkBAIC0zMTQyLDcgKzMxODIsNyBAQAogaW5kaXZpZHVhbCBmaWxlcy4gIFRoZSBzZWNvbmQgaXMgdGhlIGFtb3VudCBvZiBzcGFjZSB0YWtlbiB1cCBieQogdGhvc2UgImxvb3NlIiBvYmplY3RzLgogCi1Zb3UgY2FuIHNhdmUgc3BhY2UgYW5kIG1ha2UgZ2l0IGZhc3RlciBieSBtb3ZpbmcgdGhlc2UgbG9vc2Ugb2JqZWN0cyBpbgorWW91IGNhbiBzYXZlIHNwYWNlIGFuZCBtYWtlIEdpdCBmYXN0ZXIgYnkgbW92aW5nIHRoZXNlIGxvb3NlIG9iamVjdHMgaW4KIHRvIGEgInBhY2sgZmlsZSIsIHdoaWNoIHN0b3JlcyBhIGdyb3VwIG9mIG9iamVjdHMgaW4gYW4gZWZmaWNpZW50CiBjb21wcmVzc2VkIGZvcm1hdDsgdGhlIGRldGFpbHMgb2YgaG93IHBhY2sgZmlsZXMgYXJlIGZvcm1hdHRlZCBjYW4gYmUKIGZvdW5kIGluIGxpbms6dGVjaG5pY2FsL3BhY2stZm9ybWF0LnR4dFt0ZWNobmljYWwvcGFjay1mb3JtYXQudHh0XS4KQEAgLTMxNjksOSArMzIwOSw5IEBACiAKIHRvIHJlbW92ZSBhbnkgb2YgdGhlICJsb29zZSIgb2JqZWN0cyB0aGF0IGFyZSBub3cgY29udGFpbmVkIGluIHRoZQogcGFjay4gIFRoaXMgd2lsbCBhbHNvIHJlbW92ZSBhbnkgdW5yZWZlcmVuY2VkIG9iamVjdHMgKHdoaWNoIG1heSBiZQotY3JlYXRlZCB3aGVuLCBmb3IgZXhhbXBsZSwgeW91IHVzZSAiZ2l0IHJlc2V0IiB0byByZW1vdmUgYSBjb21taXQpLgorY3JlYXRlZCB3aGVuLCBmb3IgZXhhbXBsZSwgeW91IHVzZSBgZ2l0IHJlc2V0YCB0byByZW1vdmUgYSBjb21taXQpLgogWW91IGNhbiB2ZXJpZnkgdGhhdCB0aGUgbG9vc2Ugb2JqZWN0cyBhcmUgZ29uZSBieSBsb29raW5nIGF0IHRoZQotLmdpdC9vYmplY3RzIGRpcmVjdG9yeSBvciBieSBydW5uaW5nCitgLmdpdC9vYmplY3RzYCBkaXJlY3Rvcnkgb3IgYnkgcnVubmluZwogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IGNvdW50LW9iamVjdHMKQEAgLTMxOTgsNyArMzIzOCw3IEBACiBwb2ludGVyIGl0c2VsZiBqdXN0IGRvZXNuJ3QsIHNpbmNlIHlvdSByZXBsYWNlZCBpdCB3aXRoIGFub3RoZXIgb25lLgogCiBUaGVyZSBhcmUgYWxzbyBvdGhlciBzaXR1YXRpb25zIHRoYXQgY2F1c2UgZGFuZ2xpbmcgb2JqZWN0cy4gRm9yCi1leGFtcGxlLCBhICJkYW5nbGluZyBibG9iIiBtYXkgYXJpc2UgYmVjYXVzZSB5b3UgZGlkIGEgImdpdCBhZGQiIG9mIGEKK2V4YW1wbGUsIGEgImRhbmdsaW5nIGJsb2IiIG1heSBhcmlzZSBiZWNhdXNlIHlvdSBkaWQgYSBgZ2l0IGFkZGAgb2YgYQogZmlsZSwgYnV0IHRoZW4sIGJlZm9yZSB5b3UgYWN0dWFsbHkgY29tbWl0dGVkIGl0IGFuZCBtYWRlIGl0IHBhcnQgb2YgdGhlCiBiaWdnZXIgcGljdHVyZSwgeW91IGNoYW5nZWQgc29tZXRoaW5nIGVsc2UgaW4gdGhhdCBmaWxlIGFuZCBjb21taXR0ZWQKIHRoYXQgKnVwZGF0ZWQqIHRoaW5nLS10aGUgb2xkIHN0YXRlIHRoYXQgeW91IGFkZGVkIG9yaWdpbmFsbHkgZW5kcyB1cApAQCAtMzI0MSwxNCArMzI4MSwxNCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHRvIHNob3cgd2hhdCB0aGUgY29udGVudHMgb2YgdGhlIGJsb2Igd2VyZSAob3IsIGZvciBhIHRyZWUsIGJhc2ljYWxseQotd2hhdCB0aGUgImxzIiBmb3IgdGhhdCBkaXJlY3Rvcnkgd2FzKSwgYW5kIHRoYXQgbWF5IGdpdmUgeW91IHNvbWUgaWRlYQord2hhdCB0aGUgYGxzYCBmb3IgdGhhdCBkaXJlY3Rvcnkgd2FzKSwgYW5kIHRoYXQgbWF5IGdpdmUgeW91IHNvbWUgaWRlYQogb2Ygd2hhdCB0aGUgb3BlcmF0aW9uIHdhcyB0aGF0IGxlZnQgdGhhdCBkYW5nbGluZyBvYmplY3QuCiAKIFVzdWFsbHksIGRhbmdsaW5nIGJsb2JzIGFuZCB0cmVlcyBhcmVuJ3QgdmVyeSBpbnRlcmVzdGluZy4gVGhleSdyZQogYWxtb3N0IGFsd2F5cyB0aGUgcmVzdWx0IG9mIGVpdGhlciBiZWluZyBhIGhhbGYtd2F5IG1lcmdlYmFzZSAodGhlIGJsb2IKIHdpbGwgb2Z0ZW4gZXZlbiBoYXZlIHRoZSBjb25mbGljdCBtYXJrZXJzIGZyb20gYSBtZXJnZSBpbiBpdCwgaWYgeW91CiBoYXZlIGhhZCBjb25mbGljdGluZyBtZXJnZXMgdGhhdCB5b3UgZml4ZWQgdXAgYnkgaGFuZCksIG9yIHNpbXBseQotYmVjYXVzZSB5b3UgaW50ZXJydXB0ZWQgYSAiZ2l0IGZldGNoIiB3aXRoIF5DIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQsCitiZWNhdXNlIHlvdSBpbnRlcnJ1cHRlZCBhIGBnaXQgZmV0Y2hgIHdpdGggXkMgb3Igc29tZXRoaW5nIGxpa2UgdGhhdCwKIGxlYXZpbmcgX3NvbWVfIG9mIHRoZSBuZXcgb2JqZWN0cyBpbiB0aGUgb2JqZWN0IGRhdGFiYXNlLCBidXQganVzdAogZGFuZ2xpbmcgYW5kIHVzZWxlc3MuCiAKQEAgLTMyNTksMjggKzMyOTksMjggQEAKICQgZ2l0IHBydW5lCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotYW5kIHRoZXknbGwgYmUgZ29uZS4gQnV0IHlvdSBzaG91bGQgb25seSBydW4gImdpdCBwcnVuZSIgb24gYSBxdWllc2NlbnQKK2FuZCB0aGV5J2xsIGJlIGdvbmUuIEJ1dCB5b3Ugc2hvdWxkIG9ubHkgcnVuIGBnaXQgcHJ1bmVgIG9uIGEgcXVpZXNjZW50CiByZXBvc2l0b3J5LS1pdCdzIGtpbmQgb2YgbGlrZSBkb2luZyBhIGZpbGVzeXN0ZW0gZnNjayByZWNvdmVyeTogeW91CiBkb24ndCB3YW50IHRvIGRvIHRoYXQgd2hpbGUgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4KIAotKFRoZSBzYW1lIGlzIHRydWUgb2YgImdpdCBmc2NrIiBpdHNlbGYsIGJ0dywgYnV0IHNpbmNlCisoVGhlIHNhbWUgaXMgdHJ1ZSBvZiBgZ2l0IGZzY2tgIGl0c2VsZiwgYnR3LCBidXQgc2luY2UKIGBnaXQgZnNja2AgbmV2ZXIgYWN0dWFsbHkgKmNoYW5nZXMqIHRoZSByZXBvc2l0b3J5LCBpdCBqdXN0IHJlcG9ydHMKIG9uIHdoYXQgaXQgZm91bmQsIGBnaXQgZnNja2AgaXRzZWxmIGlzIG5ldmVyICdkYW5nZXJvdXMnIHRvIHJ1bi4KIFJ1bm5pbmcgaXQgd2hpbGUgc29tZWJvZHkgaXMgYWN0dWFsbHkgY2hhbmdpbmcgdGhlIHJlcG9zaXRvcnkgY2FuIGNhdXNlCiBjb25mdXNpbmcgYW5kIHNjYXJ5IG1lc3NhZ2VzLCBidXQgaXQgd29uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcgYmFkLiBJbgotY29udHJhc3QsIHJ1bm5pbmcgImdpdCBwcnVuZSIgd2hpbGUgc29tZWJvZHkgaXMgYWN0aXZlbHkgY2hhbmdpbmcgdGhlCitjb250cmFzdCwgcnVubmluZyBgZ2l0IHBydW5lYCB3aGlsZSBzb21lYm9keSBpcyBhY3RpdmVseSBjaGFuZ2luZyB0aGUKIHJlcG9zaXRvcnkgaXMgYSAqQkFEKiBpZGVhKS4KIAogW1tyZWNvdmVyaW5nLWZyb20tcmVwb3NpdG9yeS1jb3JydXB0aW9uXV0KIFJlY292ZXJpbmcgZnJvbSByZXBvc2l0b3J5IGNvcnJ1cHRpb24KIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAotQnkgZGVzaWduLCBnaXQgdHJlYXRzIGRhdGEgdHJ1c3RlZCB0byBpdCB3aXRoIGNhdXRpb24uICBIb3dldmVyLCBldmVuIGluCi10aGUgYWJzZW5jZSBvZiBidWdzIGluIGdpdCBpdHNlbGYsIGl0IGlzIHN0aWxsIHBvc3NpYmxlIHRoYXQgaGFyZHdhcmUgb3IKK0J5IGRlc2lnbiwgR2l0IHRyZWF0cyBkYXRhIHRydXN0ZWQgdG8gaXQgd2l0aCBjYXV0aW9uLiAgSG93ZXZlciwgZXZlbiBpbgordGhlIGFic2VuY2Ugb2YgYnVncyBpbiBHaXQgaXRzZWxmLCBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0aGF0IGhhcmR3YXJlIG9yCiBvcGVyYXRpbmcgc3lzdGVtIGVycm9ycyBjb3VsZCBjb3JydXB0IGRhdGEuCiAKIFRoZSBmaXJzdCBkZWZlbnNlIGFnYWluc3Qgc3VjaCBwcm9ibGVtcyBpcyBiYWNrdXBzLiAgWW91IGNhbiBiYWNrIHVwIGEKLWdpdCBkaXJlY3RvcnkgdXNpbmcgY2xvbmUsIG9yIGp1c3QgdXNpbmcgY3AsIHRhciwgb3IgYW55IG90aGVyIGJhY2t1cAorR2l0IGRpcmVjdG9yeSB1c2luZyBjbG9uZSwgb3IganVzdCB1c2luZyBjcCwgdGFyLCBvciBhbnkgb3RoZXIgYmFja3VwCiBtZWNoYW5pc20uCiAKIEFzIGEgbGFzdCByZXNvcnQsIHlvdSBjYW4gc2VhcmNoIGZvciB0aGUgY29ycnVwdGVkIG9iamVjdHMgYW5kIGF0dGVtcHQKQEAgLTMzMDYsNyArMzM0Niw3IEBACiBOb3cgeW91IGtub3cgdGhhdCBibG9iIDRiOTQ1OGIzIGlzIG1pc3NpbmcsIGFuZCB0aGF0IHRoZSB0cmVlIDJkOTI2M2M2CiBwb2ludHMgdG8gaXQuICBJZiB5b3UgY291bGQgZmluZCBqdXN0IG9uZSBjb3B5IG9mIHRoYXQgbWlzc2luZyBibG9iCiBvYmplY3QsIHBvc3NpYmx5IGluIHNvbWUgb3RoZXIgcmVwb3NpdG9yeSwgeW91IGNvdWxkIG1vdmUgaXQgaW50bwotLmdpdC9vYmplY3RzLzRiLzk0NThiMy4uLiBhbmQgYmUgZG9uZS4gIFN1cHBvc2UgeW91IGNhbid0LiAgWW91IGNhbgorYC5naXQvb2JqZWN0cy80Yi85NDU4YjMuLi5gIGFuZCBiZSBkb25lLiAgU3VwcG9zZSB5b3UgY2FuJ3QuICBZb3UgY2FuCiBzdGlsbCBleGFtaW5lIHRoZSB0cmVlIHRoYXQgcG9pbnRlZCB0byBpdCB3aXRoIGxpbmtnaXQ6Z2l0LWxzLXRyZWVbMV0sCiB3aGljaCBtaWdodCBvdXRwdXQgc29tZXRoaW5nIGxpa2U6CiAKQEAgLTMzMjEsMTAgKzMzNjEsMTAgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBTbyBub3cgeW91IGtub3cgdGhhdCB0aGUgbWlzc2luZyBibG9iIHdhcyB0aGUgZGF0YSBmb3IgYSBmaWxlIG5hbWVkCi0ibXlmaWxlIi4gIEFuZCBjaGFuY2VzIGFyZSB5b3UgY2FuIGFsc28gaWRlbnRpZnkgdGhlIGRpcmVjdG9yeS0tbGV0J3MKLXNheSBpdCdzIGluICJzb21lZGlyZWN0b3J5Ii4gIElmIHlvdSdyZSBsdWNreSB0aGUgbWlzc2luZyBjb3B5IG1pZ2h0IGJlCitgbXlmaWxlYC4gIEFuZCBjaGFuY2VzIGFyZSB5b3UgY2FuIGFsc28gaWRlbnRpZnkgdGhlIGRpcmVjdG9yeS0tbGV0J3MKK3NheSBpdCdzIGluIGBzb21lZGlyZWN0b3J5YC4gIElmIHlvdSdyZSBsdWNreSB0aGUgbWlzc2luZyBjb3B5IG1pZ2h0IGJlCiB0aGUgc2FtZSBhcyB0aGUgY29weSB5b3UgaGF2ZSBjaGVja2VkIG91dCBpbiB5b3VyIHdvcmtpbmcgdHJlZSBhdAotInNvbWVkaXJlY3RvcnkvbXlmaWxlIjsgeW91IGNhbiB0ZXN0IHdoZXRoZXIgdGhhdCdzIHJpZ2h0IHdpdGgKK2Bzb21lZGlyZWN0b3J5L215ZmlsZWA7IHlvdSBjYW4gdGVzdCB3aGV0aGVyIHRoYXQncyByaWdodCB3aXRoCiBsaW5rZ2l0OmdpdC1oYXNoLW9iamVjdFsxXToKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMzYzLDggKzM0MDMsOCBAQAogOjEwMDY0NCAxMDA2NDQgb2xkc2hhLi4uIDRiOTQ1OGIuLi4gTSBzb21lZGlyZWN0b3J5L215ZmlsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgdGVsbHMgeW91IHRoYXQgdGhlIGltbWVkaWF0ZWx5IHByZWNlZGluZyB2ZXJzaW9uIG9mIHRoZSBmaWxlIHdhcwotIm5ld3NoYSIsIGFuZCB0aGF0IHRoZSBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdmVyc2lvbiB3YXMgIm9sZHNoYSIuCitUaGlzIHRlbGxzIHlvdSB0aGF0IHRoZSBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdmVyc2lvbiBvZiB0aGUgZmlsZSB3YXMKKyJuZXdzaGEiLCBhbmQgdGhhdCB0aGUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIHZlcnNpb24gd2FzICJvbGRzaGEiLgogWW91IGFsc28ga25vdyB0aGUgY29tbWl0IG1lc3NhZ2VzIHRoYXQgd2VudCB3aXRoIHRoZSBjaGFuZ2UgZnJvbSBvbGRzaGEKIHRvIDRiOTQ1OGIgYW5kIHdpdGggdGhlIGNoYW5nZSBmcm9tIDRiOTQ1OGIgdG8gbmV3c2hhLgogCkBAIC0zMzc5LDIxICszNDE5LDIxIEBACiAKIGFuZCB5b3VyIHJlcG9zaXRvcnkgaXMgZ29vZCBhZ2FpbiEKIAotKEJ0dywgeW91IGNvdWxkIGhhdmUgaWdub3JlZCB0aGUgZnNjaywgYW5kIHN0YXJ0ZWQgd2l0aCBkb2luZyBhCisoQnR3LCB5b3UgY291bGQgaGF2ZSBpZ25vcmVkIHRoZSBgZnNja2AsIGFuZCBzdGFydGVkIHdpdGggZG9pbmcgYQogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IGxvZyAtLXJhdyAtLWFsbAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGFuZCBqdXN0IGxvb2tlZCBmb3IgdGhlIHNoYSBvZiB0aGUgbWlzc2luZyBvYmplY3QgKDRiOTQ1OGIuLikgaW4gdGhhdAotd2hvbGUgdGhpbmcuIEl0J3MgdXAgdG8geW91IC0gZ2l0IGRvZXMgKmhhdmUqIGEgbG90IG9mIGluZm9ybWF0aW9uLCBpdCBpcword2hvbGUgdGhpbmcuIEl0J3MgdXAgdG8geW91LS1HaXQgZG9lcyAqaGF2ZSogYSBsb3Qgb2YgaW5mb3JtYXRpb24sIGl0IGlzCiBqdXN0IG1pc3Npbmcgb25lIHBhcnRpY3VsYXIgYmxvYiB2ZXJzaW9uLgogCiBbW3RoZS1pbmRleF1dCiBUaGUgaW5kZXgKIC0tLS0tLS0tLS0tCiAKLVRoZSBpbmRleCBpcyBhIGJpbmFyeSBmaWxlIChnZW5lcmFsbHkga2VwdCBpbiAuZ2l0L2luZGV4KSBjb250YWluaW5nIGEKK1RoZSBpbmRleCBpcyBhIGJpbmFyeSBmaWxlIChnZW5lcmFsbHkga2VwdCBpbiBgLmdpdC9pbmRleGApIGNvbnRhaW5pbmcgYQogc29ydGVkIGxpc3Qgb2YgcGF0aCBuYW1lcywgZWFjaCB3aXRoIHBlcm1pc3Npb25zIGFuZCB0aGUgU0hBLTEgb2YgYSBibG9iCiBvYmplY3Q7IGxpbmtnaXQ6Z2l0LWxzLWZpbGVzWzFdIGNhbiBzaG93IHlvdSB0aGUgY29udGVudHMgb2YgdGhlIGluZGV4OgogCkBAIC0zNDI4LDcgKzM0NjgsNyBAQAogdGhlIGxhc3QgbW9kaWZpZWQgdGltZSkuICBUaGlzIGRhdGEgaXMgbm90IGRpc3BsYXllZCBhYm92ZSwgYW5kIGlzIG5vdAogc3RvcmVkIGluIHRoZSBjcmVhdGVkIHRyZWUgb2JqZWN0LCBidXQgaXQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lCiBxdWlja2x5IHdoaWNoIGZpbGVzIGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBkaWZmZXIgZnJvbSB3aGF0IHdhcwotc3RvcmVkIGluIHRoZSBpbmRleCwgYW5kIHRodXMgc2F2ZSBnaXQgZnJvbSBoYXZpbmcgdG8gcmVhZCBhbGwgb2YgdGhlCitzdG9yZWQgaW4gdGhlIGluZGV4LCBhbmQgdGh1cyBzYXZlIEdpdCBmcm9tIGhhdmluZyB0byByZWFkIGFsbCBvZiB0aGUKIGRhdGEgZnJvbSBzdWNoIGZpbGVzIHRvIGxvb2sgZm9yIGNoYW5nZXMuCiAKIDMuIEl0IGNhbiBlZmZpY2llbnRseSByZXByZXNlbnQgaW5mb3JtYXRpb24gYWJvdXQgbWVyZ2UgY29uZmxpY3RzCkBAIC0zNTMzLDcgKzM1NzMsNyBAQAogCiBUaGUgYGdpdCBzdWJtb2R1bGUgYWRkIDxyZXBvPiA8cGF0aD5gIGNvbW1hbmQgZG9lcyBhIGNvdXBsZSBvZiB0aGluZ3M6CiAKLS0gSXQgY2xvbmVzIHRoZSBzdWJtb2R1bGUgZnJvbSA8cmVwbz4gdG8gdGhlIGdpdmVuIDxwYXRoPiB1bmRlciB0aGUKKy0gSXQgY2xvbmVzIHRoZSBzdWJtb2R1bGUgZnJvbSBgPHJlcG8+YCB0byB0aGUgZ2l2ZW4gYDxwYXRoPmAgdW5kZXIgdGhlCiAgIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCBieSBkZWZhdWx0IGNoZWNrcyBvdXQgdGhlIG1hc3RlciBicmFuY2guCiAtIEl0IGFkZHMgdGhlIHN1Ym1vZHVsZSdzIGNsb25lIHBhdGggdG8gdGhlIGxpbmtnaXQ6Z2l0bW9kdWxlc1s1XSBmaWxlIGFuZAogICBhZGRzIHRoaXMgZmlsZSB0byB0aGUgaW5kZXgsIHJlYWR5IHRvIGJlIGNvbW1pdHRlZC4KQEAgLTM2NTksMTMgKzM2OTksMTMgQEAKIFVuYWJsZSB0byBjaGVja291dCAnMjYxZGZhYzM1Y2I5OWQzODBlYjk2NmUxMDJjMTE5NzEzOWY3ZmEyNCcgaW4gc3VibW9kdWxlIHBhdGggJ2EnCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUluIG9sZGVyIGdpdCB2ZXJzaW9ucyBpdCBjb3VsZCBiZSBlYXNpbHkgZm9yZ290dGVuIHRvIGNvbW1pdCBuZXcgb3IgbW9kaWZpZWQKK0luIG9sZGVyIEdpdCB2ZXJzaW9ucyBpdCBjb3VsZCBiZSBlYXNpbHkgZm9yZ290dGVuIHRvIGNvbW1pdCBuZXcgb3IgbW9kaWZpZWQKIGZpbGVzIGluIGEgc3VibW9kdWxlLCB3aGljaCBzaWxlbnRseSBsZWFkcyB0byBzaW1pbGFyIHByb2JsZW1zIGFzIG5vdCBwdXNoaW5nCi10aGUgc3VibW9kdWxlIGNoYW5nZXMuIFN0YXJ0aW5nIHdpdGggZ2l0IDEuNy4wIGJvdGggImdpdCBzdGF0dXMiIGFuZCAiZ2l0IGRpZmYiCit0aGUgc3VibW9kdWxlIGNoYW5nZXMuIFN0YXJ0aW5nIHdpdGggR2l0IDEuNy4wIGJvdGggYGdpdCBzdGF0dXNgIGFuZCBgZ2l0IGRpZmZgCiBpbiB0aGUgc3VwZXJwcm9qZWN0IHNob3cgc3VibW9kdWxlcyBhcyBtb2RpZmllZCB3aGVuIHRoZXkgY29udGFpbiBuZXcgb3IKLW1vZGlmaWVkIGZpbGVzIHRvIHByb3RlY3QgYWdhaW5zdCBhY2NpZGVudGFsbHkgY29tbWl0dGluZyBzdWNoIGEgc3RhdGUuICJnaXQKLWRpZmYiIHdpbGwgYWxzbyBhZGQgYSAiLWRpcnR5IiB0byB0aGUgd29yayB0cmVlIHNpZGUgd2hlbiBnZW5lcmF0aW5nIHBhdGNoCi1vdXRwdXQgb3IgdXNlZCB3aXRoIHRoZSAtLXN1Ym1vZHVsZSBvcHRpb246Cittb2RpZmllZCBmaWxlcyB0byBwcm90ZWN0IGFnYWluc3QgYWNjaWRlbnRhbGx5IGNvbW1pdHRpbmcgc3VjaCBhIHN0YXRlLiBgZ2l0CitkaWZmYCB3aWxsIGFsc28gYWRkIGEgYC1kaXJ0eWAgdG8gdGhlIHdvcmsgdHJlZSBzaWRlIHdoZW4gZ2VuZXJhdGluZyBwYXRjaAorb3V0cHV0IG9yIHVzZWQgd2l0aCB0aGUgYC0tc3VibW9kdWxlYCBvcHRpb246CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IGRpZmYKQEAgLTM3MDEsMTUgKzM3NDEsMTcgQEAKIAogTk9URTogVGhlIGNoYW5nZXMgYXJlIHN0aWxsIHZpc2libGUgaW4gdGhlIHN1Ym1vZHVsZSdzIHJlZmxvZy4KIAotVGhpcyBpcyBub3QgdGhlIGNhc2UgaWYgeW91IGRpZCBub3QgY29tbWl0IHlvdXIgY2hhbmdlcy4KK0lmIHlvdSBoYXZlIHVuY29tbWl0dGVkIGNoYW5nZXMgaW4geW91ciBzdWJtb2R1bGUgd29ya2luZyB0cmVlLCBgZ2l0CitzdWJtb2R1bGUgdXBkYXRlYCB3aWxsIG5vdCBvdmVyd3JpdGUgdGhlbS4gIEluc3RlYWQsIHlvdSBnZXQgdGhlIHVzdWFsCit3YXJuaW5nIGFib3V0IG5vdCBiZWluZyBhYmxlIHN3aXRjaCBmcm9tIGEgZGlydHkgYnJhbmNoLgogCiBbW2xvdy1sZXZlbC1vcGVyYXRpb25zXV0KLUxvdy1sZXZlbCBnaXQgb3BlcmF0aW9ucworTG93LWxldmVsIEdpdCBvcGVyYXRpb25zCiA9PT09PT09PT09PT09PT09PT09PT09PT0KIAogTWFueSBvZiB0aGUgaGlnaGVyLWxldmVsIGNvbW1hbmRzIHdlcmUgb3JpZ2luYWxseSBpbXBsZW1lbnRlZCBhcyBzaGVsbAotc2NyaXB0cyB1c2luZyBhIHNtYWxsZXIgY29yZSBvZiBsb3ctbGV2ZWwgZ2l0IGNvbW1hbmRzLiAgVGhlc2UgY2FuIHN0aWxsCi1iZSB1c2VmdWwgd2hlbiBkb2luZyB1bnVzdWFsIHRoaW5ncyB3aXRoIGdpdCwgb3IganVzdCBhcyBhIHdheSB0bworc2NyaXB0cyB1c2luZyBhIHNtYWxsZXIgY29yZSBvZiBsb3ctbGV2ZWwgR2l0IGNvbW1hbmRzLiAgVGhlc2UgY2FuIHN0aWxsCitiZSB1c2VmdWwgd2hlbiBkb2luZyB1bnVzdWFsIHRoaW5ncyB3aXRoIEdpdCwgb3IganVzdCBhcyBhIHdheSB0bwogdW5kZXJzdGFuZCBpdHMgaW5uZXIgd29ya2luZ3MuCiAKIFtbb2JqZWN0LW1hbmlwdWxhdGlvbl1dCkBAIC0zNzQwLDcgKzM3ODIsNyBAQAogcHJvdmlkZXMgbG93LWxldmVsIG9wZXJhdGlvbnMgd2hpY2ggcGVyZm9ybSBlYWNoIG9mIHRoZXNlIHN0ZXBzCiBpbmRpdmlkdWFsbHkuCiAKLUdlbmVyYWxseSwgYWxsICJnaXQiIG9wZXJhdGlvbnMgd29yayBvbiB0aGUgaW5kZXggZmlsZS4gU29tZSBvcGVyYXRpb25zCitHZW5lcmFsbHksIGFsbCBHaXQgb3BlcmF0aW9ucyB3b3JrIG9uIHRoZSBpbmRleCBmaWxlLiBTb21lIG9wZXJhdGlvbnMKIHdvcmsgKnB1cmVseSogb24gdGhlIGluZGV4IGZpbGUgKHNob3dpbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlCiBpbmRleCksIGJ1dCBtb3N0IG9wZXJhdGlvbnMgbW92ZSBkYXRhIGJldHdlZW4gdGhlIGluZGV4IGZpbGUgYW5kIGVpdGhlcgogdGhlIGRhdGFiYXNlIG9yIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4gVGh1cyB0aGVyZSBhcmUgZm91ciBtYWluCkBAIC0zNzYzLDcgKzM4MDUsNyBAQAogd2lsbCBub3Qgbm9ybWFsbHkgYWRkIHRvdGFsbHkgbmV3IGVudHJpZXMgb3IgcmVtb3ZlIG9sZCBlbnRyaWVzLAogaS5lLiBpdCB3aWxsIG5vcm1hbGx5IGp1c3QgdXBkYXRlIGV4aXN0aW5nIGNhY2hlIGVudHJpZXMuCiAKLVRvIHRlbGwgZ2l0IHRoYXQgeWVzLCB5b3UgcmVhbGx5IGRvIHJlYWxpemUgdGhhdCBjZXJ0YWluIGZpbGVzIG5vCitUbyB0ZWxsIEdpdCB0aGF0IHllcywgeW91IHJlYWxseSBkbyByZWFsaXplIHRoYXQgY2VydGFpbiBmaWxlcyBubwogbG9uZ2VyIGV4aXN0LCBvciB0aGF0IG5ldyBmaWxlcyBzaG91bGQgYmUgYWRkZWQsIHlvdQogc2hvdWxkIHVzZSB0aGUgYC0tcmVtb3ZlYCBhbmQgYC0tYWRkYCBmbGFncyByZXNwZWN0aXZlbHkuCiAKQEAgLTM4MzksNyArMzg4MSw3IEBACiAKIE5PVEUhIGBnaXQgY2hlY2tvdXQtaW5kZXhgIG5vcm1hbGx5IHJlZnVzZXMgdG8gb3ZlcndyaXRlIG9sZCBmaWxlcywgc28KIGlmIHlvdSBoYXZlIGFuIG9sZCB2ZXJzaW9uIG9mIHRoZSB0cmVlIGFscmVhZHkgY2hlY2tlZCBvdXQsIHlvdSB3aWxsCi1uZWVkIHRvIHVzZSB0aGUgIi1mIiBmbGFnICgnYmVmb3JlJyB0aGUgIi1hIiBmbGFnIG9yIHRoZSBmaWxlbmFtZSkgdG8KK25lZWQgdG8gdXNlIHRoZSBgLWZgIGZsYWcgKCdiZWZvcmUnIHRoZSBgLWFgIGZsYWcgb3IgdGhlIGZpbGVuYW1lKSB0bwogJ2ZvcmNlJyB0aGUgY2hlY2tvdXQuCiAKIApAQCAtMzg1MCw3ICszODkyLDcgQEAKIFR5aW5nIGl0IGFsbCB0b2dldGhlcgogfn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLVRvIGNvbW1pdCBhIHRyZWUgeW91IGhhdmUgaW5zdGFudGlhdGVkIHdpdGggImdpdCB3cml0ZS10cmVlIiwgeW91J2QKK1RvIGNvbW1pdCBhIHRyZWUgeW91IGhhdmUgaW5zdGFudGlhdGVkIHdpdGggYGdpdCB3cml0ZS10cmVlYCwgeW91J2QKIGNyZWF0ZSBhICJjb21taXQiIG9iamVjdCB0aGF0IHJlZmVycyB0byB0aGF0IHRyZWUgYW5kIHRoZSBoaXN0b3J5CiBiZWhpbmQgaXQtLW1vc3Qgbm90YWJseSB0aGUgInBhcmVudCIgY29tbWl0cyB0aGF0IHByZWNlZGVkIGl0IGluCiBoaXN0b3J5LgpAQCAtMzg3Nyw3ICszOTE5LDcgQEAKIAogYGdpdCBjb21taXQtdHJlZWAgd2lsbCByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMKIHRoYXQgY29tbWl0LCBhbmQgeW91IHNob3VsZCBzYXZlIGl0IGF3YXkgZm9yIGxhdGVyIHVzZS4gTm9ybWFsbHksCi15b3UnZCBjb21taXQgYSBuZXcgYEhFQURgIHN0YXRlLCBhbmQgd2hpbGUgZ2l0IGRvZXNuJ3QgY2FyZSB3aGVyZSB5b3UKK3lvdSdkIGNvbW1pdCBhIG5ldyBgSEVBRGAgc3RhdGUsIGFuZCB3aGlsZSBHaXQgZG9lc24ndCBjYXJlIHdoZXJlIHlvdQogc2F2ZSB0aGUgbm90ZSBhYm91dCB0aGF0IHN0YXRlLCBpbiBwcmFjdGljZSB3ZSB0ZW5kIHRvIGp1c3Qgd3JpdGUgdGhlCiByZXN1bHQgdG8gdGhlIGZpbGUgcG9pbnRlZCBhdCBieSBgLmdpdC9IRUFEYCwgc28gdGhhdCB3ZSBjYW4gYWx3YXlzIHNlZQogd2hhdCB0aGUgbGFzdCBjb21taXR0ZWQgc3RhdGUgd2FzLgpAQCAtNDAzNCw5ICs0MDc2LDkgQEAKIAogRWFjaCBsaW5lIG9mIHRoZSBgZ2l0IGxzLWZpbGVzIC0tdW5tZXJnZWRgIG91dHB1dCBiZWdpbnMgd2l0aAogdGhlIGJsb2IgbW9kZSBiaXRzLCBibG9iIFNIQS0xLCAnc3RhZ2UgbnVtYmVyJywgYW5kIHRoZQotZmlsZW5hbWUuICBUaGUgJ3N0YWdlIG51bWJlcicgaXMgZ2l0J3Mgd2F5IHRvIHNheSB3aGljaCB0cmVlIGl0Ci1jYW1lIGZyb206IHN0YWdlIDEgY29ycmVzcG9uZHMgdG8gYCRvcmlnYCB0cmVlLCBzdGFnZSAyIGBIRUFEYAotdHJlZSwgYW5kIHN0YWdlMyBgJHRhcmdldGAgdHJlZS4KK2ZpbGVuYW1lLiAgVGhlICdzdGFnZSBudW1iZXInIGlzIEdpdCdzIHdheSB0byBzYXkgd2hpY2ggdHJlZSBpdAorY2FtZSBmcm9tOiBzdGFnZSAxIGNvcnJlc3BvbmRzIHRvIHRoZSBgJG9yaWdgIHRyZWUsIHN0YWdlIDIgdG8KK3RoZSBgSEVBRGAgdHJlZSwgYW5kIHN0YWdlIDMgdG8gdGhlIGAkdGFyZ2V0YCB0cmVlLgogCiBFYXJsaWVyIHdlIHNhaWQgdGhhdCB0cml2aWFsIG1lcmdlcyBhcmUgZG9uZSBpbnNpZGUKIGBnaXQgcmVhZC10cmVlIC1tYC4gIEZvciBleGFtcGxlLCBpZiB0aGUgZmlsZSBkaWQgbm90IGNoYW5nZQpAQCAtNDA0Niw3ICs0MDg4LDcgQEAKIGFib3ZlIGV4YW1wbGUgc2hvd3MgaXMgdGhhdCBmaWxlIGBoZWxsby5jYCB3YXMgY2hhbmdlZCBmcm9tCiBgJG9yaWdgIHRvIGBIRUFEYCBhbmQgYCRvcmlnYCB0byBgJHRhcmdldGAgaW4gYSBkaWZmZXJlbnQgd2F5LgogWW91IGNvdWxkIHJlc29sdmUgdGhpcyBieSBydW5uaW5nIHlvdXIgZmF2b3JpdGUgMy13YXkgbWVyZ2UKLXByb2dyYW0sIGUuZy4gIGBkaWZmM2AsIGBtZXJnZWAsIG9yIGdpdCdzIG93biBtZXJnZS1maWxlLCBvbgorcHJvZ3JhbSwgZS5nLiAgYGRpZmYzYCwgYG1lcmdlYCwgb3IgR2l0J3Mgb3duIG1lcmdlLWZpbGUsIG9uCiB0aGUgYmxvYiBvYmplY3RzIGZyb20gdGhlc2UgdGhyZWUgc3RhZ2VzIHlvdXJzZWxmLCBsaWtlIHRoaXM6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDA1OCw3ICs0MTAwLDcgQEAKIAogVGhpcyB3b3VsZCBsZWF2ZSB0aGUgbWVyZ2UgcmVzdWx0IGluIGBoZWxsby5jfjJgIGZpbGUsIGFsb25nCiB3aXRoIGNvbmZsaWN0IG1hcmtlcnMgaWYgdGhlcmUgYXJlIGNvbmZsaWN0cy4gIEFmdGVyIHZlcmlmeWluZwotdGhlIG1lcmdlIHJlc3VsdCBtYWtlcyBzZW5zZSwgeW91IGNhbiB0ZWxsIGdpdCB3aGF0IHRoZSBmaW5hbAordGhlIG1lcmdlIHJlc3VsdCBtYWtlcyBzZW5zZSwgeW91IGNhbiB0ZWxsIEdpdCB3aGF0IHRoZSBmaW5hbAogbWVyZ2UgcmVzdWx0IGZvciB0aGlzIGZpbGUgaXMgYnk6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQwNjcsMTEgKzQxMDksMTEgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2hlbiBhIHBhdGggaXMgaW4gdGhlICJ1bm1lcmdlZCIgc3RhdGUsIHJ1bm5pbmcgYGdpdCB1cGRhdGUtaW5kZXhgIGZvcgotdGhhdCBwYXRoIHRlbGxzIGdpdCB0byBtYXJrIHRoZSBwYXRoIHJlc29sdmVkLgordGhhdCBwYXRoIHRlbGxzIEdpdCB0byBtYXJrIHRoZSBwYXRoIHJlc29sdmVkLgogCi1UaGUgYWJvdmUgaXMgdGhlIGRlc2NyaXB0aW9uIG9mIGEgZ2l0IG1lcmdlIGF0IHRoZSBsb3dlc3QgbGV2ZWwsCitUaGUgYWJvdmUgaXMgdGhlIGRlc2NyaXB0aW9uIG9mIGEgR2l0IG1lcmdlIGF0IHRoZSBsb3dlc3QgbGV2ZWwsCiB0byBoZWxwIHlvdSB1bmRlcnN0YW5kIHdoYXQgY29uY2VwdHVhbGx5IGhhcHBlbnMgdW5kZXIgdGhlIGhvb2QuCi1JbiBwcmFjdGljZSwgbm9ib2R5LCBub3QgZXZlbiBnaXQgaXRzZWxmLCBydW5zIGBnaXQgY2F0LWZpbGVgIHRocmVlIHRpbWVzCitJbiBwcmFjdGljZSwgbm9ib2R5LCBub3QgZXZlbiBHaXQgaXRzZWxmLCBydW5zIGBnaXQgY2F0LWZpbGVgIHRocmVlIHRpbWVzCiBmb3IgdGhpcy4gIFRoZXJlIGlzIGEgYGdpdCBtZXJnZS1pbmRleGAgcHJvZ3JhbSB0aGF0IGV4dHJhY3RzIHRoZQogc3RhZ2VzIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgY2FsbHMgYSAibWVyZ2UiIHNjcmlwdCBvbiBpdDoKIApAQCAtNDA4MiwxMSArNDEyNCwxMSBAQAogYW5kIHRoYXQgaXMgd2hhdCBoaWdoZXIgbGV2ZWwgYGdpdCBtZXJnZSAtcyByZXNvbHZlYCBpcyBpbXBsZW1lbnRlZCB3aXRoLgogCiBbW2hhY2tpbmctZ2l0XV0KLUhhY2tpbmcgZ2l0CitIYWNraW5nIEdpdAogPT09PT09PT09PT0KIAotVGhpcyBjaGFwdGVyIGNvdmVycyBpbnRlcm5hbCBkZXRhaWxzIG9mIHRoZSBnaXQgaW1wbGVtZW50YXRpb24gd2hpY2gKLXByb2JhYmx5IG9ubHkgZ2l0IGRldmVsb3BlcnMgbmVlZCB0byB1bmRlcnN0YW5kLgorVGhpcyBjaGFwdGVyIGNvdmVycyBpbnRlcm5hbCBkZXRhaWxzIG9mIHRoZSBHaXQgaW1wbGVtZW50YXRpb24gd2hpY2gKK3Byb2JhYmx5IG9ubHkgR2l0IGRldmVsb3BlcnMgbmVlZCB0byB1bmRlcnN0YW5kLgogCiBbW29iamVjdC1kZXRhaWxzXV0KIE9iamVjdCBzdG9yYWdlIGZvcm1hdApAQCAtNDEwNCwxNSArNDE0NiwxNiBAQAogdGhhdCBpcyB1c2VkIHRvIG5hbWUgdGhlIG9iamVjdCBpcyB0aGUgaGFzaCBvZiB0aGUgb3JpZ2luYWwgZGF0YQogcGx1cyB0aGlzIGhlYWRlciwgc28gYHNoYTFzdW1gICdmaWxlJyBkb2VzIG5vdCBtYXRjaCB0aGUgb2JqZWN0IG5hbWUKIGZvciAnZmlsZScuCi0oSGlzdG9yaWNhbCBub3RlOiBpbiB0aGUgZGF3biBvZiB0aGUgYWdlIG9mIGdpdCB0aGUgaGFzaAorKEhpc3RvcmljYWwgbm90ZTogaW4gdGhlIGRhd24gb2YgdGhlIGFnZSBvZiBHaXQgdGhlIGhhc2gKIHdhcyB0aGUgU0hBLTEgb2YgdGhlICdjb21wcmVzc2VkJyBvYmplY3QuKQogCiBBcyBhIHJlc3VsdCwgdGhlIGdlbmVyYWwgY29uc2lzdGVuY3kgb2YgYW4gb2JqZWN0IGNhbiBhbHdheXMgYmUgdGVzdGVkCiBpbmRlcGVuZGVudGx5IG9mIHRoZSBjb250ZW50cyBvciB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0OiBhbGwgb2JqZWN0cyBjYW4KIGJlIHZhbGlkYXRlZCBieSB2ZXJpZnlpbmcgdGhhdCAoYSkgdGhlaXIgaGFzaGVzIG1hdGNoIHRoZSBjb250ZW50IG9mIHRoZQogZmlsZSBhbmQgKGIpIHRoZSBvYmplY3Qgc3VjY2Vzc2Z1bGx5IGluZmxhdGVzIHRvIGEgc3RyZWFtIG9mIGJ5dGVzIHRoYXQKLWZvcm1zIGEgc2VxdWVuY2Ugb2YgPGFzY2lpIHR5cGUgd2l0aG91dCBzcGFjZT4ge3BsdXN9IDxzcGFjZT4ge3BsdXN9IDxhc2NpaSBkZWNpbWFsCi1zaXplPiB7cGx1c30gPGJ5dGVcMD4ge3BsdXN9IDxiaW5hcnkgb2JqZWN0IGRhdGE+LgorZm9ybXMgYSBzZXF1ZW5jZSBvZgorYDxhc2NpaSB0eXBlIHdpdGhvdXQgc3BhY2U+ICsgPHNwYWNlPiArIDxhc2NpaSBkZWNpbWFsIHNpemU+ICsKKzxieXRlXDA+ICsgPGJpbmFyeSBvYmplY3QgZGF0YT5gLgogCiBUaGUgc3RydWN0dXJlZCBvYmplY3RzIGNhbiBmdXJ0aGVyIGhhdmUgdGhlaXIgc3RydWN0dXJlIGFuZAogY29ubmVjdGl2aXR5IHRvIG90aGVyIG9iamVjdHMgdmVyaWZpZWQuIFRoaXMgaXMgZ2VuZXJhbGx5IGRvbmUgd2l0aApAQCAtNDEzNCw3ICs0MTc3LDcgQEAKICQgZ2l0IGNoZWNrb3V0IGU4M2M1MTYzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVRoZSBpbml0aWFsIHJldmlzaW9uIGxheXMgdGhlIGZvdW5kYXRpb24gZm9yIGFsbW9zdCBldmVyeXRoaW5nIGdpdCBoYXMKK1RoZSBpbml0aWFsIHJldmlzaW9uIGxheXMgdGhlIGZvdW5kYXRpb24gZm9yIGFsbW9zdCBldmVyeXRoaW5nIEdpdCBoYXMKIHRvZGF5LCBidXQgaXMgc21hbGwgZW5vdWdoIHRvIHJlYWQgaW4gb25lIHNpdHRpbmcuCiAKIE5vdGUgdGhhdCB0ZXJtaW5vbG9neSBoYXMgY2hhbmdlZCBzaW5jZSB0aGF0IHJldmlzaW9uLiAgRm9yIGV4YW1wbGUsIHRoZQpAQCAtNDI4OCw3ICs0MzMxLDcgQEAKIFRoaXMgaXMgaG93IHlvdSByZWFkIGEgYmxvYiAoYWN0dWFsbHksIG5vdCBvbmx5IGEgYmxvYiwgYnV0IGFueSB0eXBlIG9mCiBvYmplY3QpLiAgVG8ga25vdyBob3cgdGhlIGZ1bmN0aW9uIGByZWFkX29iamVjdF93aXRoX3JlZmVyZW5jZSgpYCBhY3R1YWxseQogd29ya3MsIGZpbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBpdCAoc29tZXRoaW5nIGxpa2UgYGdpdCBncmVwCi1yZWFkX29iamVjdF93aXRoIHwgZ3JlcCAiOlthLXpdImAgaW4gdGhlIGdpdCByZXBvc2l0b3J5KSwgYW5kIHJlYWQKK3JlYWRfb2JqZWN0X3dpdGggfCBncmVwICI6W2Etel0iYCBpbiB0aGUgR2l0IHJlcG9zaXRvcnkpLCBhbmQgcmVhZAogdGhlIHNvdXJjZS4KIAogVG8gZmluZCBvdXQgaG93IHRoZSByZXN1bHQgY2FuIGJlIHVzZWQsIGp1c3QgcmVhZCBvbiBpbiBgY21kX2NhdF9maWxlKClgOgpAQCAtNDQ2OSw3ICs0NTEyLDcgQEAKIE1ha2luZyBjaGFuZ2VzCiAtLS0tLS0tLS0tLS0tLQogCi1NYWtlIHN1cmUgZ2l0IGtub3dzIHdobyB0byBibGFtZToKK01ha2Ugc3VyZSBHaXQga25vd3Mgd2hvIHRvIGJsYW1lOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgY2F0ID4+fi8uZ2l0Y29uZmlnIDw8XEVPRgpAQCAtNDUxOSw3ICs0NTYyLDcgQEAKICQgZ2l0IGFtIG1ib3ggIyBpbXBvcnQgcGF0Y2hlcyBmcm9tIHRoZSBtYWlsYm94ICJtYm94IgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRmV0Y2ggYSBicmFuY2ggaW4gYSBkaWZmZXJlbnQgZ2l0IHJlcG9zaXRvcnksIHRoZW4gbWVyZ2UgaW50byB0aGUKK0ZldGNoIGEgYnJhbmNoIGluIGEgZGlmZmVyZW50IEdpdCByZXBvc2l0b3J5LCB0aGVuIG1lcmdlIGludG8gdGhlCiBjdXJyZW50IGJyYW5jaDoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ1ODAsNyArNDYyMyw3IEBACiAKIC0gSXQgbXVzdCBiZSByZWFkYWJsZSBpbiBvcmRlciwgZnJvbSBiZWdpbm5pbmcgdG8gZW5kLCBieSBzb21lb25lCiAgIGludGVsbGlnZW50IHdpdGggYSBiYXNpYyBncmFzcCBvZiB0aGUgVU5JWCBjb21tYW5kIGxpbmUsIGJ1dCB3aXRob3V0Ci0gIGFueSBzcGVjaWFsIGtub3dsZWRnZSBvZiBnaXQuICBJZiBuZWNlc3NhcnksIGFueSBvdGhlciBwcmVyZXF1aXNpdGVzCisgIGFueSBzcGVjaWFsIGtub3dsZWRnZSBvZiBHaXQuICBJZiBuZWNlc3NhcnksIGFueSBvdGhlciBwcmVyZXF1aXNpdGVzCiAgIHNob3VsZCBiZSBzcGVjaWZpY2FsbHkgbWVudGlvbmVkIGFzIHRoZXkgYXJpc2UuCiAtIFdoZW5ldmVyIHBvc3NpYmxlLCBzZWN0aW9uIGhlYWRpbmdzIHNob3VsZCBjbGVhcmx5IGRlc2NyaWJlIHRoZSB0YXNrCiAgIHRoZXkgZXhwbGFpbiBob3cgdG8gZG8sIGluIGxhbmd1YWdlIHRoYXQgcmVxdWlyZXMgbm8gbW9yZSBrbm93bGVkZ2UKQEAgLTQ1OTEsMTAgKzQ2MzQsMTAgQEAKIGFsbG93IHBlb3BsZSB0byBnZXQgdG8gaW1wb3J0YW50IHRvcGljcyB3aXRob3V0IG5lY2Vzc2FyaWx5IHJlYWRpbmcKIGV2ZXJ5dGhpbmcgaW4gYmV0d2Vlbi4KIAotU2NhbiBEb2N1bWVudGF0aW9uLyBmb3Igb3RoZXIgc3R1ZmYgbGVmdCBvdXQ7IGluIHBhcnRpY3VsYXI6CitTY2FuIGBEb2N1bWVudGF0aW9uL2AgZm9yIG90aGVyIHN0dWZmIGxlZnQgb3V0OyBpbiBwYXJ0aWN1bGFyOgogCiAtIGhvd3RvJ3MKLS0gc29tZSBvZiB0ZWNobmljYWwvPworLSBzb21lIG9mIGB0ZWNobmljYWwvYD8KIC0gaG9va3MKIC0gbGlzdCBvZiBjb21tYW5kcyBpbiBsaW5rZ2l0OmdpdFsxXQogCmRpZmYgLS1naXQgYS9HSVQtVkVSU0lPTi1HRU4gYi9HSVQtVkVSU0lPTi1HRU4KaW5kZXggNDNkNTY0OS4uNDVlYWQ3NiAxMDA3NTUKLS0tIGEvR0lULVZFUlNJT04tR0VOCisrKyBiL0dJVC1WRVJTSU9OLUdFTgpAQCAtMSw3ICsxLDcgQEAKICMhL2Jpbi9zaAogCiBHVkY9R0lULVZFUlNJT04tRklMRQotREVGX1ZFUj12MS43LjExCitERUZfVkVSPXYxLjguMy4yCiAKIExGPScKICcKZGlmZiAtLWdpdCBhL0lOU1RBTEwgYi9JTlNUQUxMCmluZGV4IDI4ZjM0YmQuLmJhMDFlNzQgMTAwNjQ0Ci0tLSBhL0lOU1RBTEwKKysrIGIvSU5TVEFMTApAQCAtMTAxLDcgKzEwMSw3IEBACiAJLSAib3BlbnNzbCIgbGlicmFyeSBpcyB1c2VkIGJ5IGdpdC1pbWFwLXNlbmQgdG8gdXNlIElNQVAgb3ZlciBTU0wuCiAJICBJZiB5b3UgZG9uJ3QgbmVlZCBpdCwgdXNlIE5PX09QRU5TU0wuCiAKLQkgIEJ5IGRlZmF1bHQsIGdpdCB1c2VzIE9wZW5TU0wgZm9yIFNIQTEgYnV0IGl0IHdpbGwgdXNlIGl0J3Mgb3duCisJICBCeSBkZWZhdWx0LCBnaXQgdXNlcyBPcGVuU1NMIGZvciBTSEExIGJ1dCBpdCB3aWxsIHVzZSBpdHMgb3duCiAJICBsaWJyYXJ5IChpbnNwaXJlZCBieSBNb3ppbGxhJ3MpIHdpdGggZWl0aGVyIE5PX09QRU5TU0wgb3IKIAkgIEJMS19TSEExLiAgQWxzbyBpbmNsdWRlZCBpcyBhIHZlcnNpb24gb3B0aW1pemVkIGZvciBQb3dlclBDCiAJICAoUFBDX1NIQTEpLgpAQCAtMTMxLDggKzEzMSw5IEBACiAJICB1c2UgRW5nbGlzaC4gVW5kZXIgYXV0b2NvbmYgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgd2lsbCBkbyB0aGlzCiAJICBhdXRvbWF0aWNhbGx5IGlmIGl0IGNhbid0IGZpbmQgbGliaW50bCBvbiB0aGUgc3lzdGVtLgogCi0JLSBQeXRob24gdmVyc2lvbiAyLjYgb3IgbGF0ZXIgaXMgbmVlZGVkIHRvIHVzZSB0aGUgZ2l0LXA0Ci0JICBpbnRlcmZhY2UgdG8gUGVyZm9yY2UuCisJLSBQeXRob24gdmVyc2lvbiAyLjQgb3IgbGF0ZXIgKGJ1dCBub3QgMy54LCB3aGljaCBpcyBub3QKKwkgIHN1cHBvcnRlZCBieSBQZXJmb3JjZSkgaXMgbmVlZGVkIHRvIHVzZSB0aGUgZ2l0LXA0IGludGVyZmFjZQorCSAgdG8gUGVyZm9yY2UuCiAKICAtIFNvbWUgcGxhdGZvcm0gc3BlY2lmaWMgaXNzdWVzIGFyZSBkZWFsdCB3aXRoIE1ha2VmaWxlIHJ1bGVzLAogICAgYnV0IGRlcGVuZGluZyBvbiB5b3VyIHNwZWNpZmljIGluc3RhbGxhdGlvbiwgeW91IG1heSBub3QKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggNDU5MmYxZi4uNmI5MTYxMiAxMDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTQzLDYgKzQzLDkgQEAKICMgRGVmaW5lIEVYUEFURElSPS9mb28vYmFyIGlmIHlvdXIgZXhwYXQgaGVhZGVyIGFuZCBsaWJyYXJ5IGZpbGVzIGFyZSBpbgogIyAvZm9vL2Jhci9pbmNsdWRlIGFuZCAvZm9vL2Jhci9saWIgZGlyZWN0b3JpZXMuCiAjCisjIERlZmluZSBFWFBBVF9ORUVEU19YTUxQQVJTRV9IIGlmIHlvdSBoYXZlIGFuIG9sZCB2ZXJzaW9uIG9mIGV4cGF0IChlLmcuLAorIyAxLjEgb3IgMS4yKSB0aGF0IHByb3ZpZGVzIHhtbHBhcnNlLmggaW5zdGVhZCBvZiBleHBhdC5oLgorIwogIyBEZWZpbmUgTk9fR0VUVEVYVCBpZiB5b3UgZG9uJ3Qgd2FudCBHaXQgb3V0cHV0IHRvIGJlIHRyYW5zbGF0ZWQuCiAjIEEgdHJhbnNsYXRlZCBHaXQgcmVxdWlyZXMgR05VIGxpYmludGwgb3IgYW5vdGhlciBnZXR0ZXh0IGltcGxlbWVudGF0aW9uLAogIyBwbHVzIGxpYmludGwtcGVybCBhdCBydW50aW1lLgpAQCAtNjYsNiArNjksOSBAQAogIyBEZWZpbmUgTk9fTVNHRk1UX0VYVEVOREVEX09QVElPTlMgaWYgeW91ciBpbXBsZW1lbnRhdGlvbiBvZiBtc2dmbXQKICMgZG9lc24ndCBzdXBwb3J0IEdOVSBleHRlbnNpb25zIGxpa2UgLS1jaGVjayBhbmQgLS1zdGF0aXN0aWNzCiAjCisjIERlZmluZSBORUVEU19DTElQUEVEX1dSSVRFIGlmIHlvdXIgd3JpdGUoMikgY2Fubm90IHdyaXRlIG1vcmUgdGhhbgorIyBJTlRfTUFYIGJ5dGVzIGF0IG9uY2UgKGUuZy4gTWFjT1MgWCkuCisjCiAjIERlZmluZSBIQVZFX1BBVEhTX0ggaWYgeW91IGhhdmUgcGF0aHMuaCBhbmQgd2FudCB0byB1c2UgdGhlIGRlZmF1bHQgUEFUSAogIyBpdCBzcGVjaWZpZXMuCiAjCkBAIC03NCwxMCArODAsMTQgQEAKICMgRGVmaW5lIE5PX0RfVFlQRV9JTl9ESVJFTlQgaWYgeW91ciBwbGF0Zm9ybSBkZWZpbmVzIERUX1VOS05PV04gYnV0IGxhY2tzCiAjIGRfdHlwZSBpbiBzdHJ1Y3QgZGlyZW50IChDeWd3aW4gMS41LCBmaXhlZCBpbiBDeWd3aW4gMS43KS4KICMKKyMgRGVmaW5lIEhBVkVfU1RSSU5HU19IIGlmIHlvdSBoYXZlIHN0cmluZ3MuaCBhbmQgbmVlZCBpdCBmb3Igc3RyY2FzZWNtcC4KKyMKICMgRGVmaW5lIE5PX1NUUkNBU0VTVFIgaWYgeW91IGRvbid0IGhhdmUgc3RyY2FzZXN0ci4KICMKICMgRGVmaW5lIE5PX01FTU1FTSBpZiB5b3UgZG9uJ3QgaGF2ZSBtZW1tZW0uCiAjCisjIERlZmluZSBOT19HRVRQQUdFU0laRSBpZiB5b3UgZG9uJ3QgaGF2ZSBnZXRwYWdlc2l6ZS4KKyMKICMgRGVmaW5lIE5PX1NUUkxDUFkgaWYgeW91IGRvbid0IGhhdmUgc3RybGNweS4KICMKICMgRGVmaW5lIE5PX1NUUlRPVU1BWCBpZiB5b3UgZG9uJ3QgaGF2ZSBib3RoIHN0cnRvaW1heCBhbmQgc3RydG91bWF4IGluIHRoZQpAQCAtOTAsMTUgKzEwMCwxOCBAQAogIwogIyBEZWZpbmUgTk9fTUtEVEVNUCBpZiB5b3UgZG9uJ3QgaGF2ZSBta2R0ZW1wIGluIHRoZSBDIGxpYnJhcnkuCiAjCi0jIERlZmluZSBOT19NS1NURU1QUyBpZiB5b3UgZG9uJ3QgaGF2ZSBta3N0ZW1wcyBpbiB0aGUgQyBsaWJyYXJ5LgorIyBEZWZpbmUgTUtESVJfV09fVFJBSUxJTkdfU0xBU0ggaWYgeW91ciBta2RpcigpIGNhbid0IGRlYWwgd2l0aCB0cmFpbGluZyBzbGFzaC4KICMKLSMgRGVmaW5lIE5PX1NUUlRPS19SIGlmIHlvdSBkb24ndCBoYXZlIHN0cnRva19yIGluIHRoZSBDIGxpYnJhcnkuCisjIERlZmluZSBOT19NS1NURU1QUyBpZiB5b3UgZG9uJ3QgaGF2ZSBta3N0ZW1wcyBpbiB0aGUgQyBsaWJyYXJ5LgogIwogIyBEZWZpbmUgTk9fRk5NQVRDSCBpZiB5b3UgZG9uJ3QgaGF2ZSBmbm1hdGNoIGluIHRoZSBDIGxpYnJhcnkuCiAjCiAjIERlZmluZSBOT19GTk1BVENIX0NBU0VGT0xEIGlmIHlvdXIgZm5tYXRjaCBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdGhlCiAjIEZOTV9DQVNFRk9MRCBHTlUgZXh0ZW5zaW9uLgogIworIyBEZWZpbmUgVVNFX1dJTERNQVRDSCBpZiB5b3Ugd2FudCB0byB1c2UgR2l0J3Mgd2lsZG1hdGNoCisjIGltcGxlbWVudGF0aW9uIGFzIGZubWF0Y2gKKyMKICMgRGVmaW5lIE5PX0dFQ09TX0lOX1BXRU5UIGlmIHlvdSBkb24ndCBoYXZlIHB3X2dlY29zIGluIHN0cnVjdCBwYXNzd2QKICMgaW4gdGhlIEMgbGlicmFyeS4KICMKQEAgLTEyNyw5ICsxNDAsMTIgQEAKICMgc3BlY2lmeSB5b3VyIG93biAob3IgRGFyd2luUG9ydCdzKSBpbmNsdWRlIGRpcmVjdG9yaWVzIGFuZAogIyBsaWJyYXJ5IGRpcmVjdG9yaWVzIGJ5IGRlZmluaW5nIENGTEFHUyBhbmQgTERGTEFHUyBhcHByb3ByaWF0ZWx5LgogIwotIyBEZWZpbmUgQkxLX1NIQTEgZW52aXJvbm1lbnQgdmFyaWFibGUgaWYgeW91IHdhbnQgdGhlIEMgdmVyc2lvbgotIyBvZiB0aGUgU0hBMSB0aGF0IGFzc3VtZXMgeW91IGNhbiBkbyB1bmFsaWduZWQgMzItYml0IGxvYWRzIGFuZAotIyBoYXZlIGEgZmFzdCBodG9ubCgpIGZ1bmN0aW9uLgorIyBEZWZpbmUgTk9fQVBQTEVfQ09NTU9OX0NSWVBUTyBpZiB5b3UgYXJlIGJ1aWxkaW5nIG9uIERhcndpbi9NYWMgT1MgWAorIyBhbmQgZG8gbm90IHdhbnQgdG8gdXNlIEFwcGxlJ3MgQ29tbW9uQ3J5cHRvIGxpYnJhcnkuICBUaGlzIGFsbG93cyB5b3UKKyMgdG8gcHJvdmlkZSB5b3VyIG93biBPcGVuU1NMIGxpYnJhcnksIGZvciBleGFtcGxlIGZyb20gTWFjUG9ydHMuCisjCisjIERlZmluZSBCTEtfU0hBMSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBtYWtlIHVzZSBvZiB0aGUgYnVuZGxlZAorIyBvcHRpbWl6ZWQgQyBTSEExIHJvdXRpbmUuCiAjCiAjIERlZmluZSBQUENfU0hBMSBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGVuIHJ1bm5pbmcgbWFrZSB0byBtYWtlIHVzZSBvZgogIyBhIGJ1bmRsZWQgU0hBMSByb3V0aW5lIG9wdGltaXplZCBmb3IgUG93ZXJQQy4KQEAgLTE0NCw2ICsxNjAsMTIgQEAKICMKICMgRGVmaW5lIE5FRURTX0xJQklDT05WIGlmIGxpbmtpbmcgd2l0aCBsaWJjIGlzIG5vdCBlbm91Z2ggKERhcndpbikuCiAjCisjIERlZmluZSBORUVEU19MSUJJTlRMX0JFRk9SRV9MSUJJQ09OViBpZiB5b3UgbmVlZCBsaWJpbnRsIGJlZm9yZSBsaWJpY29udi4KKyMKKyMgRGVmaW5lIE5PX0lOVFBUUl9UIGlmIHlvdSBkb24ndCBoYXZlIGludHB0cl90IG5vciB1aW50cHRyX3QuCisjCisjIERlZmluZSBOT19VSU5UTUFYX1QgaWYgeW91IGRvbid0IGhhdmUgdWludG1heF90LgorIwogIyBEZWZpbmUgTkVFRFNfU09DS0VUIGlmIGxpbmtpbmcgd2l0aCBsaWJjIGlzIG5vdCBlbm91Z2ggKFN1bk9TLAogIyBQYXRyaWNrIE1hdXJpdHopLgogIwpAQCAtMTUzLDExICsxNzUsMjggQEAKICMKICMgRGVmaW5lIE5PX01NQVAgaWYgeW91IHdhbnQgdG8gYXZvaWQgbW1hcC4KICMKKyMgRGVmaW5lIE5PX1NZU19QT0xMX0ggaWYgeW91IGRvbid0IGhhdmUgc3lzL3BvbGwuaC4KKyMKKyMgRGVmaW5lIE5PX1BPTEwgaWYgeW91IGRvIG5vdCBoYXZlIG9yIGRvbid0IHdhbnQgdG8gdXNlIHBvbGwoKS4KKyMgVGhpcyBhbHNvIGltcGxpZXMgTk9fU1lTX1BPTExfSC4KKyMKKyMgRGVmaW5lIE5FRURTX1NZU19QQVJBTV9IIGlmIHlvdSBuZWVkIHRvIGluY2x1ZGUgc3lzL3BhcmFtLmggdG8gY29tcGlsZSwKKyMgKlBMRUFTRSogUkVQT1JUIHRvIGdpdEB2Z2VyLmtlcm5lbC5vcmcgaWYgeW91ciBwbGF0Zm9ybSBuZWVkcyB0aGlzOworIyB3ZSB3YW50IHRvIGtub3cgbW9yZSBhYm91dCB0aGUgaXNzdWUuCisjCiAjIERlZmluZSBOT19QVEhSRUFEUyBpZiB5b3UgZG8gbm90IGhhdmUgb3IgZG8gbm90IHdhbnQgdG8gdXNlIFB0aHJlYWRzLgogIwogIyBEZWZpbmUgTk9fUFJFQUQgaWYgeW91IGhhdmUgYSBwcm9ibGVtIHdpdGggcHJlYWQoKSBzeXN0ZW0gY2FsbCAoZS5nLgogIyBjeWd3aW4xLmRsbCBiZWZvcmUgdjEuNS4yMikuCiAjCisjIERlZmluZSBOT19TRVRJVElNRVIgaWYgeW91IGRvbid0IGhhdmUgc2V0aXRpbWVyKCkKKyMKKyMgRGVmaW5lIE5PX1NUUlVDVF9JVElNRVJWQUwgaWYgeW91IGRvbid0IGhhdmUgc3RydWN0IGl0aW1lcnZhbAorIyBUaGlzIGFsc28gaW1wbGllcyBOT19TRVRJVElNRVIKKyMKKyMgRGVmaW5lIE5PX1RIUkVBRF9TQUZFX1BSRUFEIGlmIHlvdXIgcHJlYWQoKSBpbXBsZW1lbnRhdGlvbiBpcyBub3QKKyMgdGhyZWFkLXNhZmUuIChlLmcuIGNvbXBhdC9wcmVhZC5jIG9yIGN5Z3dpbikKKyMKICMgRGVmaW5lIE5PX0ZBU1RfV09SS0lOR19ESVJFQ1RPUlkgaWYgYWNjZXNzaW5nIG9iamVjdHMgaW4gcGFjayBmaWxlcyBpcwogIyBnZW5lcmFsbHkgZmFzdGVyIG9uIHlvdXIgcGxhdGZvcm0gdGhhbiBhY2Nlc3NpbmcgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgogIwpAQCAtMjAzLDggKzI0Miw2IEBACiAjIERlZmluZSBOT19TVF9CTE9DS1NfSU5fU1RSVUNUX1NUQVQgaWYgeW91ciBwbGF0Zm9ybSBkb2VzIG5vdCBoYXZlIHN0X2Jsb2NrcwogIyBmaWVsZCB0aGF0IGNvdW50cyB0aGUgb24tZGlzayBmb290cHJpbnQgaW4gNTEyLWJ5dGUgYmxvY2tzLgogIwotIyBEZWZpbmUgQVNDSUlET0M3IGlmIHlvdSB3YW50IHRvIGZvcm1hdCBkb2N1bWVudGF0aW9uIHdpdGggQXNjaWlEb2MgNwotIwogIyBEZWZpbmUgRE9DQk9PS19YU0xfMTcyIGlmIHlvdSB3YW50IHRvIGZvcm1hdCBtYW4gcGFnZXMgd2l0aCBEb2NCb29rIFhTTCB2MS43MgogIyAobm90IHYxLjczIG9yIHYxLjcxKS4KICMKQEAgLTIxNSwxMSArMjUyLDE2IEBACiAjIGFwb3N0cm9waGVzIHRvIGJlIEFTQ0lJIHNvIHRoYXQgY3V0JnBhc3RpbmcgZXhhbXBsZXMgdG8gdGhlIHNoZWxsCiAjIHdpbGwgd29yay4KICMKKyMgRGVmaW5lIFBFUkxfUEFUSCB0byB0aGUgcGF0aCBvZiB5b3VyIFBlcmwgYmluYXJ5ICh1c3VhbGx5IC91c3IvYmluL3BlcmwpLgorIwogIyBEZWZpbmUgTk9fUEVSTF9NQUtFTUFLRVIgaWYgeW91IGNhbm5vdCB1c2UgTWFrZWZpbGVzIGdlbmVyYXRlZCBieSBwZXJsJ3MKICMgTWFrZU1ha2VyIChlLmcuIHVzaW5nIEFjdGl2ZVN0YXRlIHVuZGVyIEN5Z3dpbikuCiAjCiAjIERlZmluZSBOT19QRVJMIGlmIHlvdSBkbyBub3Qgd2FudCBQZXJsIHNjcmlwdHMgb3IgbGlicmFyaWVzIGF0IGFsbC4KICMKKyMgRGVmaW5lIFBZVEhPTl9QQVRIIHRvIHRoZSBwYXRoIG9mIHlvdXIgUHl0aG9uIGJpbmFyeSAob2Z0ZW4gL3Vzci9iaW4vcHl0aG9uCisjIGJ1dCAvdXNyL2Jpbi9weXRob24yLjcgb24gc29tZSBwbGF0Zm9ybXMpLgorIwogIyBEZWZpbmUgTk9fUFlUSE9OIGlmIHlvdSBkbyBub3Qgd2FudCBQeXRob24gc2NyaXB0cyBvciBsaWJyYXJpZXMgYXQgYWxsLgogIwogIyBEZWZpbmUgTk9fVENMVEsgaWYgeW91IGRvIG5vdCB3YW50IFRjbC9UayBHVUkuCkBAIC0yNTUsNiArMjk3LDEwIEBACiAjCiAjIERlZmluZSBOT19SRUdFWCBpZiB5b3UgaGF2ZSBubyBvciBpbmZlcmlvciByZWdleCBzdXBwb3J0IGluIHlvdXIgQyBsaWJyYXJ5LgogIworIyBEZWZpbmUgQ1lHV0lOX1YxNV9XSU4zMkFQSSBpZiB5b3UgYXJlIHVzaW5nIEN5Z3dpbiB2MS43LnggYnV0IGFyZSBub3QKKyMgdXNpbmcgdGhlIGN1cnJlbnQgdzMyYXBpIHBhY2thZ2VzLiBUaGUgcmVjb21tZW5kZWQgYXBwcm9hY2gsIGhvd2V2ZXIsCisjIGlzIHRvIHVwZGF0ZSB5b3VyIGluc3RhbGxhdGlvbiBpZiBjb21waWxhdGlvbiBlcnJvcnMgb2NjdXIuCisjCiAjIERlZmluZSBIQVZFX0RFVl9UVFkgaWYgeW91ciBzeXN0ZW0gY2FuIG9wZW4gL2Rldi90dHkgdG8gaW50ZXJhY3Qgd2l0aCB0aGUKICMgdXNlci4KICMKQEAgLTI5NiwyNCArMzQyLDE4IEBACiAjIHRoZSBkaWZmIGFsZ29yaXRobS4gIEl0IGdpdmVzIGEgbmljZSBzcGVlZHVwIGlmIHlvdXIgcHJvY2Vzc29yIGhhcwogIyBmYXN0IHVuYWxpZ25lZCB3b3JkIGxvYWRzLiAgRG9lcyBOT1Qgd29yayBvbiBiaWctZW5kaWFuIHN5c3RlbXMhCiAjIEVuYWJsZWQgYnkgZGVmYXVsdCBvbiB4ODZfNjQuCisjCisjIERlZmluZSBHSVRfVVNFUl9BR0VOVCBpZiB5b3Ugd2FudCB0byBjaGFuZ2UgaG93IGdpdCBpZGVudGlmaWVzIGl0c2VsZiBkdXJpbmcKKyMgbmV0d29yayBpbnRlcmFjdGlvbnMuICBUaGUgZGVmYXVsdCBpcyAiZ2l0LyQoR0lUX1ZFUlNJT04pIi4KKyMKKyMgRGVmaW5lIERFRkFVTFRfSEVMUF9GT1JNQVQgdG8gIm1hbiIsICJpbmZvIiBvciAiaHRtbCIKKyMgKGRlZmF1bHRzIHRvICJtYW4iKSBpZiB5b3Ugd2FudCB0byBoYXZlIGEgZGlmZmVyZW50IGRlZmF1bHQgd2hlbgorIyAiZ2l0IGhlbHAiIGlzIGNhbGxlZCB3aXRob3V0IGEgcGFyYW1ldGVyIHNwZWNpZnlpbmcgdGhlIGZvcm1hdC4KIAogR0lULVZFUlNJT04tRklMRTogRk9SQ0UKIAlAJChTSEVMTF9QQVRIKSAuL0dJVC1WRVJTSU9OLUdFTgogLWluY2x1ZGUgR0lULVZFUlNJT04tRklMRQogCi11bmFtZV9TIDo9ICQoc2hlbGwgc2ggLWMgJ3VuYW1lIC1zIDI+L2Rldi9udWxsIHx8IGVjaG8gbm90JykKLXVuYW1lX00gOj0gJChzaGVsbCBzaCAtYyAndW5hbWUgLW0gMj4vZGV2L251bGwgfHwgZWNobyBub3QnKQotdW5hbWVfTyA6PSAkKHNoZWxsIHNoIC1jICd1bmFtZSAtbyAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vdCcpCi11bmFtZV9SIDo9ICQoc2hlbGwgc2ggLWMgJ3VuYW1lIC1yIDI+L2Rldi9udWxsIHx8IGVjaG8gbm90JykKLXVuYW1lX1AgOj0gJChzaGVsbCBzaCAtYyAndW5hbWUgLXAgMj4vZGV2L251bGwgfHwgZWNobyBub3QnKQotdW5hbWVfViA6PSAkKHNoZWxsIHNoIC1jICd1bmFtZSAtdiAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vdCcpCi0KLWlmZGVmIE1TVkMKLQkjIGF2b2lkIHRoZSBNaW5nVyBhbmQgQ3lnd2luIGNvbmZpZ3VyYXRpb24gc2VjdGlvbnMKLQl1bmFtZV9TIDo9IFdpbmRvd3MKLQl1bmFtZV9PIDo9IFdpbmRvd3MKLWVuZGlmCi0KICMgQ0ZMQUdTIGFuZCBMREZMQUdTIGFyZSBmb3IgdGhlIHVzZXJzIHRvIG92ZXJyaWRlIGZyb20gdGhlIGNvbW1hbmQgbGluZS4KIAogQ0ZMQUdTID0gLWcgLU8yIC1XYWxsCkBAIC0zMjUsMzMgKzM2NSwzOSBAQAogIyBBbW9uZyB0aGUgdmFyaWFibGVzIGJlbG93LCB0aGVzZToKICMgICBnaXRleGVjZGlyCiAjICAgdGVtcGxhdGVfZGlyCi0jICAgbWFuZGlyCi0jICAgaW5mb2RpcgotIyAgIGh0bWxkaXIKICMgICBzeXNjb25mZGlyCiAjIGNhbiBiZSBzcGVjaWZpZWQgYXMgYSByZWxhdGl2ZSBwYXRoIHNvbWUvd2hlcmUvZWxzZTsKICMgdGhpcyBpcyBpbnRlcnByZXRlZCBhcyByZWxhdGl2ZSB0byAkKHByZWZpeCkgYW5kICJnaXQiIGF0CiAjIHJ1bnRpbWUgZmlndXJlcyBvdXQgd2hlcmUgdGhleSBhcmUgYmFzZWQgb24gdGhlIHBhdGggdG8gdGhlIGV4ZWN1dGFibGUuCisjIEFkZGl0aW9uYWxseSwgdGhlIGZvbGxvd2luZyB3aWxsIGJlIHRyZWF0ZWQgYXMgcmVsYXRpdmUgYnkgImdpdCIgaWYgdGhleQorIyBiZWdpbiB3aXRoICIkKHByZWZpeCkvIjoKKyMgICBtYW5kaXIKKyMgICBpbmZvZGlyCisjICAgaHRtbGRpcgogIyBUaGlzIGNhbiBoZWxwIGluc3RhbGxpbmcgdGhlIHN1aXRlIGluIGEgcmVsb2NhdGFibGUgd2F5LgogCiBwcmVmaXggPSAkKEhPTUUpCiBiaW5kaXJfcmVsYXRpdmUgPSBiaW4KIGJpbmRpciA9ICQocHJlZml4KS8kKGJpbmRpcl9yZWxhdGl2ZSkKLW1hbmRpciA9IHNoYXJlL21hbgotaW5mb2RpciA9IHNoYXJlL2luZm8KK21hbmRpciA9ICQocHJlZml4KS9zaGFyZS9tYW4KK2luZm9kaXIgPSAkKHByZWZpeCkvc2hhcmUvaW5mbwogZ2l0ZXhlY2RpciA9IGxpYmV4ZWMvZ2l0LWNvcmUKIG1lcmdldG9vbHNkaXIgPSAkKGdpdGV4ZWNkaXIpL21lcmdldG9vbHMKIHNoYXJlZGlyID0gJChwcmVmaXgpL3NoYXJlCiBnaXR3ZWJkaXIgPSAkKHNoYXJlZGlyKS9naXR3ZWIKIGxvY2FsZWRpciA9ICQoc2hhcmVkaXIpL2xvY2FsZQogdGVtcGxhdGVfZGlyID0gc2hhcmUvZ2l0LWNvcmUvdGVtcGxhdGVzCi1odG1sZGlyID0gc2hhcmUvZG9jL2dpdC1kb2MKK2h0bWxkaXIgPSAkKHByZWZpeCkvc2hhcmUvZG9jL2dpdC1kb2MKIEVUQ19HSVRDT05GSUcgPSAkKHN5c2NvbmZkaXIpL2dpdGNvbmZpZwogRVRDX0dJVEFUVFJJQlVURVMgPSAkKHN5c2NvbmZkaXIpL2dpdGF0dHJpYnV0ZXMKIGxpYiA9IGxpYgotIyBERVNURElSPQorIyBERVNURElSID0KIHBhdGhzZXAgPSA6CiAKK21hbmRpcl9yZWxhdGl2ZSA9ICQocGF0c3Vic3QgJChwcmVmaXgpLyUsJSwkKG1hbmRpcikpCitpbmZvZGlyX3JlbGF0aXZlID0gJChwYXRzdWJzdCAkKHByZWZpeCkvJSwlLCQoaW5mb2RpcikpCitodG1sZGlyX3JlbGF0aXZlID0gJChwYXRzdWJzdCAkKHByZWZpeCkvJSwlLCQoaHRtbGRpcikpCisKIGV4cG9ydCBwcmVmaXggYmluZGlyIHNoYXJlZGlyIHN5c2NvbmZkaXIgZ2l0d2ViZGlyIGxvY2FsZWRpcgogCiBDQyA9IGNjCkBAIC0zODksMTIgKzQzNSw5IEBACiBCVUlMVF9JTlMgPQogQ09NUEFUX0NGTEFHUyA9CiBDT01QQVRfT0JKUyA9Ci1YRElGRl9IID0KIFhESUZGX09CSlMgPQotVkNTU1ZOX0ggPQogVkNTU1ZOX09CSlMgPQotVkNTU1ZOX1RFU1RfT0JKUyA9Ci1NSVNDX0ggPQorR0VORVJBVEVEX0ggPQogRVhUUkFfQ1BQRkxBR1MgPQogTElCX0ggPQogTElCX09CSlMgPQpAQCAtNDQ4LDEyICs0OTEsNDEgQEAKIFNDUklQVF9QRVJMICs9IGdpdC1zZW5kLWVtYWlsLnBlcmwKIFNDUklQVF9QRVJMICs9IGdpdC1zdm4ucGVybAogCi1TQ1JJUFRfUFlUSE9OICs9IGdpdC1yZW1vdGUtdGVzdGdpdC5weQorU0NSSVBUX1BZVEhPTiArPSBnaXQtcmVtb3RlLXRlc3RweS5weQogU0NSSVBUX1BZVEhPTiArPSBnaXQtcDQucHkKIAotU0NSSVBUUyA9ICQocGF0c3Vic3QgJS5zaCwlLCQoU0NSSVBUX1NIKSkgXAotCSAgJChwYXRzdWJzdCAlLnBlcmwsJSwkKFNDUklQVF9QRVJMKSkgXAotCSAgJChwYXRzdWJzdCAlLnB5LCUsJChTQ1JJUFRfUFlUSE9OKSkgXAorIyBHZW5lcmF0ZWQgZmlsZXMgZm9yIHNjcmlwdHMKK1NDUklQVF9TSF9HRU4gPSAkKHBhdHN1YnN0ICUuc2gsJSwkKFNDUklQVF9TSCkpCitTQ1JJUFRfUEVSTF9HRU4gPSAkKHBhdHN1YnN0ICUucGVybCwlLCQoU0NSSVBUX1BFUkwpKQorU0NSSVBUX1BZVEhPTl9HRU4gPSAkKHBhdHN1YnN0ICUucHksJSwkKFNDUklQVF9QWVRIT04pKQorCisjIEluZGl2aWR1YWwgcnVsZXMgdG8gYWxsb3cgZS5nLgorIyAibWFrZSAtQyAuLi8uLiBTQ1JJUFRfUEVSTD1jb250cmliL2Zvby9iYXIucGVybCBidWlsZC1wZXJsLXNjcmlwdCIKKyMgZnJvbSBzdWJkaXJlY3RvcmllcyBsaWtlIGNvbnRyaWIvKi8KKy5QSE9OWTogYnVpbGQtcGVybC1zY3JpcHQgYnVpbGQtc2gtc2NyaXB0IGJ1aWxkLXB5dGhvbi1zY3JpcHQKK2J1aWxkLXBlcmwtc2NyaXB0OiAkKFNDUklQVF9QRVJMX0dFTikKK2J1aWxkLXNoLXNjcmlwdDogJChTQ1JJUFRfU0hfR0VOKQorYnVpbGQtcHl0aG9uLXNjcmlwdDogJChTQ1JJUFRfUFlUSE9OX0dFTikKKworLlBIT05ZOiBpbnN0YWxsLXBlcmwtc2NyaXB0IGluc3RhbGwtc2gtc2NyaXB0IGluc3RhbGwtcHl0aG9uLXNjcmlwdAoraW5zdGFsbC1zaC1zY3JpcHQ6ICQoU0NSSVBUX1NIX0dFTikKKwkkKElOU1RBTEwpICQoU0NSSVBUX1NIX0dFTikgJyQoREVTVERJUl9TUSkkKGdpdGV4ZWNfaW5zdGRpcl9TUSknCitpbnN0YWxsLXBlcmwtc2NyaXB0OiAkKFNDUklQVF9QRVJMX0dFTikKKwkkKElOU1RBTEwpICQoU0NSSVBUX1BFUkxfR0VOKSAnJChERVNURElSX1NRKSQoZ2l0ZXhlY19pbnN0ZGlyX1NRKScKK2luc3RhbGwtcHl0aG9uLXNjcmlwdDogJChTQ1JJUFRfUFlUSE9OX0dFTikKKwkkKElOU1RBTEwpICQoU0NSSVBUX1BZVEhPTl9HRU4pICckKERFU1RESVJfU1EpJChnaXRleGVjX2luc3RkaXJfU1EpJworCisuUEhPTlk6IGNsZWFuLXBlcmwtc2NyaXB0IGNsZWFuLXNoLXNjcmlwdCBjbGVhbi1weXRob24tc2NyaXB0CitjbGVhbi1zaC1zY3JpcHQ6CisJJChSTSkgJChTQ1JJUFRfU0hfR0VOKQorY2xlYW4tcGVybC1zY3JpcHQ6CisJJChSTSkgJChTQ1JJUFRfUEVSTF9HRU4pCitjbGVhbi1weXRob24tc2NyaXB0OgorCSQoUk0pICQoU0NSSVBUX1BZVEhPTl9HRU4pCisKK1NDUklQVFMgPSAkKFNDUklQVF9TSF9HRU4pIFwKKwkgICQoU0NSSVBUX1BFUkxfR0VOKSBcCisJICAkKFNDUklQVF9QWVRIT05fR0VOKSBcCiAJICBnaXQtaW5zdGF3ZWIKIAogRVRBR1NfVEFSR0VUID0gVEFHUwpAQCAtNDczLDYgKzU0NSw3IEBACiBQUk9HUkFNX09CSlMgKz0gc2hlbGwubwogUFJPR1JBTV9PQkpTICs9IHNob3ctaW5kZXgubwogUFJPR1JBTV9PQkpTICs9IHVwbG9hZC1wYWNrLm8KK1BST0dSQU1fT0JKUyArPSByZW1vdGUtdGVzdHN2bi5vCiAKICMgQmluYXJ5IHN1ZmZpeCwgc2V0IHRvIC5leGUgZm9yIFdpbmRvd3MgYnVpbGRzCiBYID0KQEAgLTQ4MCw3ICs1NTMsNiBAQAogUFJPR1JBTVMgKz0gJChwYXRzdWJzdCAlLm8sZ2l0LSUkWCwkKFBST0dSQU1fT0JKUykpCiAKIFRFU1RfUFJPR1JBTVNfTkVFRF9YICs9IHRlc3QtY2htdGltZQotVEVTVF9QUk9HUkFNU19ORUVEX1ggKz0gdGVzdC1jcmVkZW50aWFsCiBURVNUX1BST0dSQU1TX05FRURfWCArPSB0ZXN0LWN0eXBlCiBURVNUX1BST0dSQU1TX05FRURfWCArPSB0ZXN0LWRhdGUKIFRFU1RfUFJPR1JBTVNfTkVFRF9YICs9IHRlc3QtZGVsdGEKQEAgLTQ5MywxMyArNTY1LDE2IEBACiBURVNUX1BST0dSQU1TX05FRURfWCArPSB0ZXN0LW1rdGVtcAogVEVTVF9QUk9HUkFNU19ORUVEX1ggKz0gdGVzdC1wYXJzZS1vcHRpb25zCiBURVNUX1BST0dSQU1TX05FRURfWCArPSB0ZXN0LXBhdGgtdXRpbHMKK1RFU1RfUFJPR1JBTVNfTkVFRF9YICs9IHRlc3QtcmVnZXgKIFRFU1RfUFJPR1JBTVNfTkVFRF9YICs9IHRlc3QtcmV2aXNpb24td2Fsa2luZwogVEVTVF9QUk9HUkFNU19ORUVEX1ggKz0gdGVzdC1ydW4tY29tbWFuZAogVEVTVF9QUk9HUkFNU19ORUVEX1ggKz0gdGVzdC1zY3JhcC1jYWNoZS10cmVlCiBURVNUX1BST0dSQU1TX05FRURfWCArPSB0ZXN0LXNoYTEKIFRFU1RfUFJPR1JBTVNfTkVFRF9YICs9IHRlc3Qtc2lnY2hhaW4KK1RFU1RfUFJPR1JBTVNfTkVFRF9YICs9IHRlc3Qtc3RyaW5nLWxpc3QKIFRFU1RfUFJPR1JBTVNfTkVFRF9YICs9IHRlc3Qtc3VicHJvY2VzcwogVEVTVF9QUk9HUkFNU19ORUVEX1ggKz0gdGVzdC1zdm4tZmUKK1RFU1RfUFJPR1JBTVNfTkVFRF9YICs9IHRlc3Qtd2lsZG1hdGNoCiAKIFRFU1RfUFJPR1JBTVMgPSAkKHBhdHN1YnN0ICUsJSRYLCQoVEVTVF9QUk9HUkFNU19ORUVEX1gpKQogCkBAIC01NTEsNTggKzYyNiwzNSBAQAogZXhwb3J0IFBFUkxfUEFUSAogZXhwb3J0IFBZVEhPTl9QQVRICiAKLUxJQl9GSUxFPWxpYmdpdC5hCi1YRElGRl9MSUI9eGRpZmYvbGliLmEKLVZDU1NWTl9MSUI9dmNzLXN2bi9saWIuYQorTElCX0ZJTEUgPSBsaWJnaXQuYQorWERJRkZfTElCID0geGRpZmYvbGliLmEKK1ZDU1NWTl9MSUIgPSB2Y3Mtc3ZuL2xpYi5hCiAKLVhESUZGX0ggKz0geGRpZmYveGluY2x1ZGUuaAotWERJRkZfSCArPSB4ZGlmZi94bWFjcm9zLmgKLVhESUZGX0ggKz0geGRpZmYveGRpZmYuaAotWERJRkZfSCArPSB4ZGlmZi94dHlwZXMuaAotWERJRkZfSCArPSB4ZGlmZi94dXRpbHMuaAotWERJRkZfSCArPSB4ZGlmZi94cHJlcGFyZS5oCi1YRElGRl9IICs9IHhkaWZmL3hkaWZmaS5oCi1YRElGRl9IICs9IHhkaWZmL3hlbWl0LmgKLQotVkNTU1ZOX0ggKz0gdmNzLXN2bi9saW5lX2J1ZmZlci5oCi1WQ1NTVk5fSCArPSB2Y3Mtc3ZuL3NsaWRpbmdfd2luZG93LmgKLVZDU1NWTl9IICs9IHZjcy1zdm4vcmVwb190cmVlLmgKLVZDU1NWTl9IICs9IHZjcy1zdm4vZmFzdF9leHBvcnQuaAotVkNTU1ZOX0ggKz0gdmNzLXN2bi9zdm5kaWZmLmgKLVZDU1NWTl9IICs9IHZjcy1zdm4vc3ZuZHVtcC5oCi0KLU1JU0NfSCArPSBiaXNlY3QuaAotTUlTQ19IICs9IGJyYW5jaC5oCi1NSVNDX0ggKz0gYnVuZGxlLmgKLU1JU0NfSCArPSBjb21tb24tY21kcy5oCi1NSVNDX0ggKz0gZmV0Y2gtcGFjay5oCi1NSVNDX0ggKz0gcmVhY2hhYmxlLmgKLU1JU0NfSCArPSBzZW5kLXBhY2suaAotTUlTQ19IICs9IHNob3J0bG9nLmgKLU1JU0NfSCArPSB0YXIuaAotTUlTQ19IICs9IHRocmVhZC11dGlscy5oCi1NSVNDX0ggKz0gdXJsLmgKLU1JU0NfSCArPSB3YWxrZXIuaAotTUlTQ19IICs9IHd0LXN0YXR1cy5oCitHRU5FUkFURURfSCArPSBjb21tb24tY21kcy5oCiAKIExJQl9IICs9IGFkdmljZS5oCiBMSUJfSCArPSBhcmNoaXZlLmgKIExJQl9IICs9IGFyZ3YtYXJyYXkuaAogTElCX0ggKz0gYXR0ci5oCitMSUJfSCArPSBiaXNlY3QuaAogTElCX0ggKz0gYmxvYi5oCitMSUJfSCArPSBicmFuY2guaAogTElCX0ggKz0gYnVpbHRpbi5oCiBMSUJfSCArPSBidWxrLWNoZWNraW4uaAotTElCX0ggKz0gY2FjaGUuaAorTElCX0ggKz0gYnVuZGxlLmgKIExJQl9IICs9IGNhY2hlLXRyZWUuaAorTElCX0ggKz0gY2FjaGUuaAogTElCX0ggKz0gY29sb3IuaAorTElCX0ggKz0gY29sdW1uLmgKIExJQl9IICs9IGNvbW1pdC5oCiBMSUJfSCArPSBjb21wYXQvYnN3YXAuaAogTElCX0ggKz0gY29tcGF0L2N5Z3dpbi5oCiBMSUJfSCArPSBjb21wYXQvbWluZ3cuaAogTElCX0ggKz0gY29tcGF0L29ic3RhY2suaAorTElCX0ggKz0gY29tcGF0L3BvbGwvcG9sbC5oCitMSUJfSCArPSBjb21wYXQvcHJlY29tcG9zZV91dGY4LmgKIExJQl9IICs9IGNvbXBhdC90ZXJtaW5hbC5oCiBMSUJfSCArPSBjb21wYXQvd2luMzIvZGlyZW50LmgKLUxJQl9IICs9IGNvbXBhdC93aW4zMi9wb2xsLmgKIExJQl9IICs9IGNvbXBhdC93aW4zMi9wdGhyZWFkLmgKIExJQl9IICs9IGNvbXBhdC93aW4zMi9zeXNsb2cuaAogTElCX0ggKz0gY29ubmVjdGVkLmgKQEAgLTYxNSw2ICs2NjcsNyBAQAogTElCX0ggKz0gZGlmZmNvcmUuaAogTElCX0ggKz0gZGlyLmgKIExJQl9IICs9IGV4ZWNfY21kLmgKK0xJQl9IICs9IGZldGNoLXBhY2suaAogTElCX0ggKz0gZm10LW1lcmdlLW1zZy5oCiBMSUJfSCArPSBmc2NrLmgKIExJQl9IICs9IGdldHRleHQuaApAQCAtNjI0LDI4ICs2NzcsMzEgQEAKIExJQl9IICs9IGdyZXAuaAogTElCX0ggKz0gaGFzaC5oCiBMSUJfSCArPSBoZWxwLmgKK0xJQl9IICs9IGh0dHAuaAogTElCX0ggKz0ga3dzZXQuaAogTElCX0ggKz0gbGV2ZW5zaHRlaW4uaAogTElCX0ggKz0gbGlzdC1vYmplY3RzLmgKIExJQl9IICs9IGxsLW1lcmdlLmgKIExJQl9IICs9IGxvZy10cmVlLmgKIExJQl9IICs9IG1haWxtYXAuaAotTElCX0ggKz0gbWVyZ2UtZmlsZS5oCitMSUJfSCArPSBtZXJnZS1ibG9icy5oCiBMSUJfSCArPSBtZXJnZS1yZWN1cnNpdmUuaAogTElCX0ggKz0gbWVyZ2Vzb3J0LmgKLUxJQl9IICs9IG5vdGVzLmgKIExJQl9IICs9IG5vdGVzLWNhY2hlLmgKIExJQl9IICs9IG5vdGVzLW1lcmdlLmgKK0xJQl9IICs9IG5vdGVzLmgKIExJQl9IICs9IG9iamVjdC5oCi1MSUJfSCArPSBwYWNrLmgKIExJQl9IICs9IHBhY2stcmVmcy5oCiBMSUJfSCArPSBwYWNrLXJldmluZGV4LmgKK0xJQl9IICs9IHBhY2suaAogTElCX0ggKz0gcGFyc2Utb3B0aW9ucy5oCiBMSUJfSCArPSBwYXRjaC1pZHMuaAorTElCX0ggKz0gcGF0aHNwZWMuaAogTElCX0ggKz0gcGt0LWxpbmUuaAogTElCX0ggKz0gcHJvZ3Jlc3MuaAogTElCX0ggKz0gcHJvbXB0LmgKIExJQl9IICs9IHF1b3RlLmgKK0xJQl9IICs9IHJlYWNoYWJsZS5oCiBMSUJfSCArPSByZWZsb2ctd2Fsay5oCiBMSUJfSCArPSByZWZzLmgKIExJQl9IICs9IHJlbW90ZS5oCkBAIC02NTMsOSArNzA5LDExIEBACiBMSUJfSCArPSByZXNvbHZlLXVuZG8uaAogTElCX0ggKz0gcmV2aXNpb24uaAogTElCX0ggKz0gcnVuLWNvbW1hbmQuaAorTElCX0ggKz0gc2VuZC1wYWNrLmgKIExJQl9IICs9IHNlcXVlbmNlci5oCiBMSUJfSCArPSBzaGExLWFycmF5LmgKIExJQl9IICs9IHNoYTEtbG9va3VwLmgKK0xJQl9IICs9IHNob3J0bG9nLmgKIExJQl9IICs9IHNpZGViYW5kLmgKIExJQl9IICs9IHNpZ2NoYWluLmgKIExJQl9IICs9IHN0cmJ1Zi5oCkBAIC02NjMsMTYgKzcyMSwzNCBAQAogTElCX0ggKz0gc3RyaW5nLWxpc3QuaAogTElCX0ggKz0gc3VibW9kdWxlLmgKIExJQl9IICs9IHRhZy5oCitMSUJfSCArPSB0YXIuaAogTElCX0ggKz0gdGhyZWFkLXV0aWxzLmgKIExJQl9IICs9IHRyYW5zcG9ydC5oCi1MSUJfSCArPSB0cmVlLmgKIExJQl9IICs9IHRyZWUtd2Fsay5oCitMSUJfSCArPSB0cmVlLmgKIExJQl9IICs9IHVucGFjay10cmVlcy5oCitMSUJfSCArPSB1cmwuaAogTElCX0ggKz0gdXNlcmRpZmYuaAogTElCX0ggKz0gdXRmOC5oCiBMSUJfSCArPSB2YXJpbnQuaAorTElCX0ggKz0gdmNzLXN2bi9mYXN0X2V4cG9ydC5oCitMSUJfSCArPSB2Y3Mtc3ZuL2xpbmVfYnVmZmVyLmgKK0xJQl9IICs9IHZjcy1zdm4vcmVwb190cmVlLmgKK0xJQl9IICs9IHZjcy1zdm4vc2xpZGluZ193aW5kb3cuaAorTElCX0ggKz0gdmNzLXN2bi9zdm5kaWZmLmgKK0xJQl9IICs9IHZjcy1zdm4vc3ZuZHVtcC5oCitMSUJfSCArPSB3YWxrZXIuaAorTElCX0ggKz0gd2lsZG1hdGNoLmgKK0xJQl9IICs9IHd0LXN0YXR1cy5oCiBMSUJfSCArPSB4ZGlmZi1pbnRlcmZhY2UuaAogTElCX0ggKz0geGRpZmYveGRpZmYuaAorTElCX0ggKz0geGRpZmYveGRpZmZpLmgKK0xJQl9IICs9IHhkaWZmL3hlbWl0LmgKK0xJQl9IICs9IHhkaWZmL3hpbmNsdWRlLmgKK0xJQl9IICs9IHhkaWZmL3htYWNyb3MuaAorTElCX0ggKz0geGRpZmYveHByZXBhcmUuaAorTElCX0ggKz0geGRpZmYveHR5cGVzLmgKK0xJQl9IICs9IHhkaWZmL3h1dGlscy5oCiAKIExJQl9PQkpTICs9IGFic3BhdGgubwogTElCX09CSlMgKz0gYWR2aWNlLm8KQEAgLTcyMCw2ICs3OTYsNyBAQAogTElCX09CSlMgKz0gZW50cnkubwogTElCX09CSlMgKz0gZW52aXJvbm1lbnQubwogTElCX09CSlMgKz0gZXhlY19jbWQubworTElCX09CSlMgKz0gZmV0Y2gtcGFjay5vCiBMSUJfT0JKUyArPSBmc2NrLm8KIExJQl9PQkpTICs9IGdldHRleHQubwogTElCX09CSlMgKz0gZ3BnLWludGVyZmFjZS5vCkBAIC03MzcsNyArODE0LDggQEAKIExJQl9PQkpTICs9IGxvZy10cmVlLm8KIExJQl9PQkpTICs9IG1haWxtYXAubwogTElCX09CSlMgKz0gbWF0Y2gtdHJlZXMubwotTElCX09CSlMgKz0gbWVyZ2UtZmlsZS5vCitMSUJfT0JKUyArPSBtZXJnZS5vCitMSUJfT0JKUyArPSBtZXJnZS1ibG9icy5vCiBMSUJfT0JKUyArPSBtZXJnZS1yZWN1cnNpdmUubwogTElCX09CSlMgKz0gbWVyZ2Vzb3J0Lm8KIExJQl9PQkpTICs9IG5hbWUtaGFzaC5vCkBAIC03NTUsNiArODMzLDcgQEAKIExJQl9PQkpTICs9IHBhdGNoLWRlbHRhLm8KIExJQl9PQkpTICs9IHBhdGNoLWlkcy5vCiBMSUJfT0JKUyArPSBwYXRoLm8KK0xJQl9PQkpTICs9IHBhdGhzcGVjLm8KIExJQl9PQkpTICs9IHBrdC1saW5lLm8KIExJQl9PQkpTICs9IHByZWxvYWQtaW5kZXgubwogTElCX09CSlMgKz0gcHJldHR5Lm8KQEAgLTc3MSw2ICs4NTAsNyBAQAogTElCX09CSlMgKz0gcmVzb2x2ZS11bmRvLm8KIExJQl9PQkpTICs9IHJldmlzaW9uLm8KIExJQl9PQkpTICs9IHJ1bi1jb21tYW5kLm8KK0xJQl9PQkpTICs9IHNlbmQtcGFjay5vCiBMSUJfT0JKUyArPSBzZXF1ZW5jZXIubwogTElCX09CSlMgKz0gc2VydmVyLWluZm8ubwogTElCX09CSlMgKz0gc2V0dXAubwpAQCAtNzk5LDcgKzg3OSw5IEBACiBMSUJfT0JKUyArPSB1c2VyZGlmZi5vCiBMSUJfT0JKUyArPSB1dGY4Lm8KIExJQl9PQkpTICs9IHZhcmludC5vCitMSUJfT0JKUyArPSB2ZXJzaW9uLm8KIExJQl9PQkpTICs9IHdhbGtlci5vCitMSUJfT0JKUyArPSB3aWxkbWF0Y2gubwogTElCX09CSlMgKz0gd3JhcHBlci5vCiBMSUJfT0JKUyArPSB3cml0ZV9vcl9kaWUubwogTElCX09CSlMgKz0gd3MubwpAQCAtODE3LDYgKzg5OSw3IEBACiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi9idW5kbGUubwogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4vY2F0LWZpbGUubwogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4vY2hlY2stYXR0ci5vCitCVUlMVElOX09CSlMgKz0gYnVpbHRpbi9jaGVjay1pZ25vcmUubwogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4vY2hlY2stcmVmLWZvcm1hdC5vCiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi9jaGVja291dC1pbmRleC5vCiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi9jaGVja291dC5vCkBAIC04MjcsNiArOTEwLDcgQEAKIEJVSUxUSU5fT0JKUyArPSBidWlsdGluL2NvbW1pdC5vCiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi9jb25maWcubwogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4vY291bnQtb2JqZWN0cy5vCitCVUlMVElOX09CSlMgKz0gYnVpbHRpbi9jcmVkZW50aWFsLm8KIEJVSUxUSU5fT0JKUyArPSBidWlsdGluL2Rlc2NyaWJlLm8KIEJVSUxUSU5fT0JKUyArPSBidWlsdGluL2RpZmYtZmlsZXMubwogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4vZGlmZi1pbmRleC5vCkBAIC05MDQsNDUzICs5ODgsOSBAQAogR0lUTElCUyA9ICQoTElCX0ZJTEUpICQoWERJRkZfTElCKQogRVhUTElCUyA9CiAKLSMKLSMgUGxhdGZvcm0gc3BlY2lmaWMgdHdlYWtzCi0jCitHSVRfVVNFUl9BR0VOVCA9IGdpdC8kKEdJVF9WRVJTSU9OKQogCi0jIFdlIGNob29zZSB0byBhdm9pZCAiaWYgLi4gZWxzZSBpZiAuLiBlbHNlIC4uIGVuZGlmIGVuZGlmIgotIyBiZWNhdXNlIG1haW50YWluaW5nIHRoZSBuZXN0aW5nIHRvIG1hdGNoIGlzIGEgcGFpbi4gIElmCi0jIHdlIGhhZCAiZWxpZiIgdGhpbmdzIHdvdWxkIGhhdmUgYmVlbiBtdWNoIG5pY2VyLi4uCi0KLWlmZXEgKCQodW5hbWVfTSkseDg2XzY0KQotCVhETF9GQVNUX0hBU0ggPSBZZXNQbGVhc2UKLWVuZGlmCi1pZmVxICgkKHVuYW1lX1MpLE9TRjEpCi0JIyBOZWVkIHRoaXMgZm9yIHVfc2hvcnQgZGVmaW5pdGlvbnMgZXQgYWwKLQlCQVNJQ19DRkxBR1MgKz0gLURfT1NGX1NPVVJDRQotCVNPQ0tMRU5fVCA9IGludAotCU5PX1NUUlRPVUxMID0gWWVzUGxlYXNlCi0JTk9fTlNFQyA9IFllc1BsZWFzZQotZW5kaWYKLWlmZXEgKCQodW5hbWVfUyksTGludXgpCi0JTk9fU1RSTENQWSA9IFllc1BsZWFzZQotCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCi0JSEFWRV9QQVRIU19IID0gWWVzUGxlYXNlCi0JTElCQ19DT05UQUlOU19MSUJJTlRMID0gWWVzUGxlYXNlCi0JSEFWRV9ERVZfVFRZID0gWWVzUGxlYXNlCi1lbmRpZgotaWZlcSAoJCh1bmFtZV9TKSxHTlUva0ZyZWVCU0QpCi0JTk9fU1RSTENQWSA9IFllc1BsZWFzZQotCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCi0JSEFWRV9QQVRIU19IID0gWWVzUGxlYXNlCi0JRElSX0hBU19CU0RfR1JPVVBfU0VNQU5USUNTID0gWWVzUGxlYXNlCi0JTElCQ19DT05UQUlOU19MSUJJTlRMID0gWWVzUGxlYXNlCi1lbmRpZgotaWZlcSAoJCh1bmFtZV9TKSxVbml4V2FyZSkKLQlDQyA9IGNjCi0JTkVFRFNfU09DS0VUID0gWWVzUGxlYXNlCi0JTkVFRFNfTlNMID0gWWVzUGxlYXNlCi0JTkVFRFNfU1NMX1dJVEhfQ1JZUFRPID0gWWVzUGxlYXNlCi0JTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKLQlTSEVMTF9QQVRIID0gL3Vzci9sb2NhbC9iaW4vYmFzaAotCU5PX0lQVjYgPSBZZXNQbGVhc2UKLQlOT19IU1RSRVJST1IgPSBZZXNQbGVhc2UKLQlOT19NS1NURU1QUyA9IFllc1BsZWFzZQotCUJBU0lDX0NGTEFHUyArPSAtS3RocmVhZAotCUJBU0lDX0NGTEFHUyArPSAtSS91c3IvbG9jYWwvaW5jbHVkZQotCUJBU0lDX0xERkxBR1MgKz0gLUwvdXNyL2xvY2FsL2xpYgotCUlOU1RBTEwgPSBnaW5zdGFsbAotCVRBUiA9IGd0YXIKLQlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCi0JTk9fTUVNTUVNID0gWWVzUGxlYXNlCi1lbmRpZgotaWZlcSAoJCh1bmFtZV9TKSxTQ09fU1YpCi0JaWZlcSAoJCh1bmFtZV9SKSwzLjIpCi0JCUNGTEFHUyA9IC1PMgotCWVuZGlmCi0JaWZlcSAoJCh1bmFtZV9SKSw1KQotCQlDQyA9IGNjCi0JCUJBU0lDX0NGTEFHUyArPSAtS3RocmVhZAotCWVuZGlmCi0JTkVFRFNfU09DS0VUID0gWWVzUGxlYXNlCi0JTkVFRFNfTlNMID0gWWVzUGxlYXNlCi0JTkVFRFNfU1NMX1dJVEhfQ1JZUFRPID0gWWVzUGxlYXNlCi0JTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKLQlTSEVMTF9QQVRIID0gL3Vzci9iaW4vYmFzaAotCU5PX0lQVjYgPSBZZXNQbGVhc2UKLQlOT19IU1RSRVJST1IgPSBZZXNQbGVhc2UKLQlOT19NS1NURU1QUyA9IFllc1BsZWFzZQotCUJBU0lDX0NGTEFHUyArPSAtSS91c3IvbG9jYWwvaW5jbHVkZQotCUJBU0lDX0xERkxBR1MgKz0gLUwvdXNyL2xvY2FsL2xpYgotCU5PX1NUUkNBU0VTVFIgPSBZZXNQbGVhc2UKLQlOT19NRU1NRU0gPSBZZXNQbGVhc2UKLQlJTlNUQUxMID0gZ2luc3RhbGwKLQlUQVIgPSBndGFyCi1lbmRpZgotaWZlcSAoJCh1bmFtZV9TKSxEYXJ3aW4pCi0JTkVFRFNfQ1JZUFRPX1dJVEhfU1NMID0gWWVzUGxlYXNlCi0JTkVFRFNfU1NMX1dJVEhfQ1JZUFRPID0gWWVzUGxlYXNlCi0JTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKLQlpZmVxICgkKHNoZWxsIGV4cHIgIiQodW5hbWVfUikiIDogJ1sxNTY3OF1cLicpLDIpCi0JCU9MRF9JQ09OViA9IFVuZm9ydHVuYXRlbHlZZXMKLQllbmRpZgotCWlmZXEgKCQoc2hlbGwgZXhwciAiJCh1bmFtZV9SKSIgOiAnWzE1XVwuJyksMikKLQkJTk9fU1RSTENQWSA9IFllc1BsZWFzZQotCWVuZGlmCi0JTk9fTUVNTUVNID0gWWVzUGxlYXNlCi0JVVNFX1NUX1RJTUVTUEVDID0gWWVzUGxlYXNlCi0JSEFWRV9ERVZfVFRZID0gWWVzUGxlYXNlCi1lbmRpZgotaWZlcSAoJCh1bmFtZV9TKSxTdW5PUykKLQlORUVEU19TT0NLRVQgPSBZZXNQbGVhc2UKLQlORUVEU19OU0wgPSBZZXNQbGVhc2UKLQlTSEVMTF9QQVRIID0gL2Jpbi9iYXNoCi0JU0FORV9UT09MX1BBVEggPSAvdXNyL3hwZzYvYmluOi91c3IveHBnNC9iaW4KLQlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCi0JTk9fTUVNTUVNID0gWWVzUGxlYXNlCi0JTk9fTUtEVEVNUCA9IFllc1BsZWFzZQotCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCi0JTk9fUkVHRVggPSBZZXNQbGVhc2UKLQlOT19GTk1BVENIX0NBU0VGT0xEID0gWWVzUGxlYXNlCi0JTk9fTVNHRk1UX0VYVEVOREVEX09QVElPTlMgPSBZZXNQbGVhc2UKLQlpZmVxICgkKHVuYW1lX1IpLDUuNikKLQkJU09DS0xFTl9UID0gaW50Ci0JCU5PX0hTVFJFUlJPUiA9IFllc1BsZWFzZQotCQlOT19JUFY2ID0gWWVzUGxlYXNlCi0JCU5PX1NPQ0tBRERSX1NUT1JBR0UgPSBZZXNQbGVhc2UKLQkJTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKLQkJTk9fU0VURU5WID0gWWVzUGxlYXNlCi0JCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKLQkJTk9fU1RSVE9VTUFYID0gWWVzUGxlYXNlCi0JCUdJVF9URVNUX0NNUCA9IGNtcAotCWVuZGlmCi0JaWZlcSAoJCh1bmFtZV9SKSw1LjcpCi0JCU5FRURTX1JFU09MViA9IFllc1BsZWFzZQotCQlOT19JUFY2ID0gWWVzUGxlYXNlCi0JCU5PX1NPQ0tBRERSX1NUT1JBR0UgPSBZZXNQbGVhc2UKLQkJTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKLQkJTk9fU0VURU5WID0gWWVzUGxlYXNlCi0JCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKLQkJTk9fU1RSVE9VTUFYID0gWWVzUGxlYXNlCi0JCUdJVF9URVNUX0NNUCA9IGNtcAotCWVuZGlmCi0JaWZlcSAoJCh1bmFtZV9SKSw1LjgpCi0JCU5PX1VOU0VURU5WID0gWWVzUGxlYXNlCi0JCU5PX1NFVEVOViA9IFllc1BsZWFzZQotCQlOT19TVFJUT1VNQVggPSBZZXNQbGVhc2UKLQkJR0lUX1RFU1RfQ01QID0gY21wCi0JZW5kaWYKLQlpZmVxICgkKHVuYW1lX1IpLDUuOSkKLQkJTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKLQkJTk9fU0VURU5WID0gWWVzUGxlYXNlCi0JCU5PX1NUUlRPVU1BWCA9IFllc1BsZWFzZQotCQlHSVRfVEVTVF9DTVAgPSBjbXAKLQllbmRpZgotCUlOU1RBTEwgPSAvdXNyL3VjYi9pbnN0YWxsCi0JVEFSID0gZ3RhcgotCUJBU0lDX0NGTEFHUyArPSAtRF9fRVhURU5TSU9OU19fIC1EX19zdW5fXyAtREhBVkVfQUxMT0NBX0gKLWVuZGlmCi1pZmVxICgkKHVuYW1lX08pLEN5Z3dpbikKLQlpZmVxICgkKHNoZWxsIGV4cHIgIiQodW5hbWVfUikiIDogJzFcLlsxLTZdXC4nKSw0KQotCQlOT19EX1RZUEVfSU5fRElSRU5UID0gWWVzUGxlYXNlCi0JCU5PX0RfSU5PX0lOX0RJUkVOVCA9IFllc1BsZWFzZQotCQlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCi0JCU5PX01FTU1FTSA9IFllc1BsZWFzZQotCQlOT19NS1NURU1QUyA9IFllc1BsZWFzZQotCQlOT19TWU1MSU5LX0hFQUQgPSBZZXNQbGVhc2UKLQkJTk9fSVBWNiA9IFllc1BsZWFzZQotCQlPTERfSUNPTlYgPSBVbmZvcnR1bmF0ZWx5WWVzCi0JZW5kaWYKLQlORUVEU19MSUJJQ09OViA9IFllc1BsZWFzZQotCU5PX0ZBU1RfV09SS0lOR19ESVJFQ1RPUlkgPSBVbmZvcnR1bmF0ZWx5WWVzCi0JTk9fVFJVU1RBQkxFX0ZJTEVNT0RFID0gVW5mb3J0dW5hdGVseVllcwotCU5PX1NUX0JMT0NLU19JTl9TVFJVQ1RfU1RBVCA9IFllc1BsZWFzZQotCSMgVGhlcmUgYXJlIGNvbmZsaWN0aW5nIHJlcG9ydHMgYWJvdXQgdGhpcy4KLQkjIE9uIHNvbWUgYm94ZXMgTk9fTU1BUCBpcyBuZWVkZWQsIGFuZCBub3Qgc28gZWxzZXdoZXJlLgotCSMgVHJ5IGNvbW1lbnRpbmcgdGhpcyBvdXQgaWYgeW91IHN1c3BlY3QgTU1BUCBpcyBtb3JlIGVmZmljaWVudAotCU5PX01NQVAgPSBZZXNQbGVhc2UKLQlYID0gLmV4ZQotCUNPTVBBVF9PQkpTICs9IGNvbXBhdC9jeWd3aW4ubwotCVVOUkVMSUFCTEVfRlNUQVQgPSBVbmZvcnR1bmF0ZWx5WWVzCi0JU1BBUlNFX0ZMQUdTID0gLWlzeXN0ZW0gL3Vzci9pbmNsdWRlL3czMmFwaSAtV25vLW9uZS1iaXQtc2lnbmVkLWJpdGZpZWxkCi1lbmRpZgotaWZlcSAoJCh1bmFtZV9TKSxGcmVlQlNEKQotCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCi0JT0xEX0lDT05WID0gWWVzUGxlYXNlCi0JTk9fTUVNTUVNID0gWWVzUGxlYXNlCi0JQkFTSUNfQ0ZMQUdTICs9IC1JL3Vzci9sb2NhbC9pbmNsdWRlCi0JQkFTSUNfTERGTEFHUyArPSAtTC91c3IvbG9jYWwvbGliCi0JRElSX0hBU19CU0RfR1JPVVBfU0VNQU5USUNTID0gWWVzUGxlYXNlCi0JVVNFX1NUX1RJTUVTUEVDID0gWWVzUGxlYXNlCi0JaWZlcSAoJChzaGVsbCBleHByICIkKHVuYW1lX1IpIiA6ICc0XC4nKSwyKQotCQlQVEhSRUFEX0xJQlMgPSAtcHRocmVhZAotCQlOT19VSU5UTUFYX1QgPSBZZXNQbGVhc2UKLQkJTk9fU1RSVE9VTUFYID0gWWVzUGxlYXNlCi0JZW5kaWYKLQlQWVRIT05fUEFUSCA9IC91c3IvbG9jYWwvYmluL3B5dGhvbgotCUhBVkVfUEFUSFNfSCA9IFllc1BsZWFzZQotZW5kaWYKLWlmZXEgKCQodW5hbWVfUyksT3BlbkJTRCkKLQlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCi0JTk9fTUVNTUVNID0gWWVzUGxlYXNlCi0JVVNFX1NUX1RJTUVTUEVDID0gWWVzUGxlYXNlCi0JTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKLQlCQVNJQ19DRkxBR1MgKz0gLUkvdXNyL2xvY2FsL2luY2x1ZGUKLQlCQVNJQ19MREZMQUdTICs9IC1ML3Vzci9sb2NhbC9saWIKLQlIQVZFX1BBVEhTX0ggPSBZZXNQbGVhc2UKLWVuZGlmCi1pZmVxICgkKHVuYW1lX1MpLE5ldEJTRCkKLQlpZmVxICgkKHNoZWxsIGV4cHIgIiQodW5hbWVfUikiIDogJ1swMV1cLicpLDIpCi0JCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCi0JZW5kaWYKLQlCQVNJQ19DRkxBR1MgKz0gLUkvdXNyL3BrZy9pbmNsdWRlCi0JQkFTSUNfTERGTEFHUyArPSAtTC91c3IvcGtnL2xpYiAkKENDX0xEX0RZTlBBVEgpL3Vzci9wa2cvbGliCi0JVVNFX1NUX1RJTUVTUEVDID0gWWVzUGxlYXNlCi0JTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKLQlIQVZFX1BBVEhTX0ggPSBZZXNQbGVhc2UKLWVuZGlmCi1pZmVxICgkKHVuYW1lX1MpLEFJWCkKLQlERUZBVUxUX1BBR0VSID0gbW9yZQotCU5PX1NUUkNBU0VTVFI9WWVzUGxlYXNlCi0JTk9fTUVNTUVNID0gWWVzUGxlYXNlCi0JTk9fTUtEVEVNUCA9IFllc1BsZWFzZQotCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCi0JTk9fU1RSTENQWSA9IFllc1BsZWFzZQotCU5PX05TRUMgPSBZZXNQbGVhc2UKLQlGUkVBRF9SRUFEU19ESVJFQ1RPUklFUyA9IFVuZm9ydHVuYXRlbHlZZXMKLQlJTlRFUk5BTF9RU09SVCA9IFVuZm9ydHVuYXRlbHlZZXMKLQlORUVEU19MSUJJQ09OVj1ZZXNQbGVhc2UKLQlCQVNJQ19DRkxBR1MgKz0gLURfTEFSR0VfRklMRVMKLQlpZmVxICgkKHNoZWxsIGV4cHIgIiQodW5hbWVfVikiIDogJ1sxMjM0XScpLDEpCi0JCU5PX1BUSFJFQURTID0gWWVzUGxlYXNlCi0JZWxzZQotCQlQVEhSRUFEX0xJQlMgPSAtbHB0aHJlYWQKLQllbmRpZgotCWlmZXEgKCQoc2hlbGwgZXhwciAiJCh1bmFtZV9WKS4kKHVuYW1lX1IpIiA6ICc1XC4xJyksMykKLQkJSU5MSU5FPScnCi0JZW5kaWYKLQlHSVRfVEVTVF9DTVAgPSBjbXAKLWVuZGlmCi1pZmVxICgkKHVuYW1lX1MpLEdOVSkKLQkjIEdOVS9IdXJkCi0JTk9fU1RSTENQWT1ZZXNQbGVhc2UKLQlOT19NS1NURU1QUyA9IFllc1BsZWFzZQotCUhBVkVfUEFUSFNfSCA9IFllc1BsZWFzZQotCUxJQkNfQ09OVEFJTlNfTElCSU5UTCA9IFllc1BsZWFzZQotZW5kaWYKLWlmZXEgKCQodW5hbWVfUyksSVJJWCkKLQlOT19TRVRFTlYgPSBZZXNQbGVhc2UKLQlOT19VTlNFVEVOViA9IFllc1BsZWFzZQotCU5PX1NUUkNBU0VTVFIgPSBZZXNQbGVhc2UKLQlOT19NRU1NRU0gPSBZZXNQbGVhc2UKLQlOT19NS1NURU1QUyA9IFllc1BsZWFzZQotCU5PX01LRFRFTVAgPSBZZXNQbGVhc2UKLQkjIFdoZW4gY29tcGlsZWQgd2l0aCB0aGUgTUlQU3BybyA3LjQuNG0gY29tcGlsZXIsIGFuZCB3aXRob3V0IHB0aHJlYWRzCi0JIyAoaS5lLiBOT19QVEhSRUFEUyBpcyBzZXQpLCBhbmQgX3dpdGhfIE1NQVAgKGkuZS4gTk9fTU1BUCBpcyBub3Qgc2V0KSwKLQkjIGdpdCBkaWVzIHdpdGggYSBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiB0cnlpbmcgdG8gYWNjZXNzIHRoZSBmaXJzdAotCSMgZW50cnkgb2YgYSByZWZsb2cuICBUaGUgY29uc2VydmF0aXZlIGNob2ljZSBpcyBtYWRlIHRvIGFsd2F5cyBzZXQKLQkjIE5PX01NQVAuICBJZiB5b3Ugc3VzcGVjdCB0aGF0IHlvdXIgY29tcGlsZXIgaXMgbm90IGFmZmVjdGVkIGJ5IHRoaXMKLQkjIGlzc3VlLCBjb21tZW50IG91dCB0aGUgTk9fTU1BUCBzdGF0ZW1lbnQuCi0JTk9fTU1BUCA9IFllc1BsZWFzZQotCU5PX1JFR0VYID0gWWVzUGxlYXNlCi0JTk9fRk5NQVRDSF9DQVNFRk9MRCA9IFllc1BsZWFzZQotCVNOUFJJTlRGX1JFVFVSTlNfQk9HVVMgPSBZZXNQbGVhc2UKLQlTSEVMTF9QQVRIID0gL3Vzci9nbnUvYmluL2Jhc2gKLQlORUVEU19MSUJHRU4gPSBZZXNQbGVhc2UKLWVuZGlmCi1pZmVxICgkKHVuYW1lX1MpLElSSVg2NCkKLQlOT19TRVRFTlY9WWVzUGxlYXNlCi0JTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKLQlOT19TVFJDQVNFU1RSPVllc1BsZWFzZQotCU5PX01FTU1FTSA9IFllc1BsZWFzZQotCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCi0JTk9fTUtEVEVNUCA9IFllc1BsZWFzZQotCSMgV2hlbiBjb21waWxlZCB3aXRoIHRoZSBNSVBTcHJvIDcuNC40bSBjb21waWxlciwgYW5kIHdpdGhvdXQgcHRocmVhZHMKLQkjIChpLmUuIE5PX1BUSFJFQURTIGlzIHNldCksIGFuZCBfd2l0aF8gTU1BUCAoaS5lLiBOT19NTUFQIGlzIG5vdCBzZXQpLAotCSMgZ2l0IGRpZXMgd2l0aCBhIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIHRyeWluZyB0byBhY2Nlc3MgdGhlIGZpcnN0Ci0JIyBlbnRyeSBvZiBhIHJlZmxvZy4gIFRoZSBjb25zZXJ2YXRpdmUgY2hvaWNlIGlzIG1hZGUgdG8gYWx3YXlzIHNldAotCSMgTk9fTU1BUC4gIElmIHlvdSBzdXNwZWN0IHRoYXQgeW91ciBjb21waWxlciBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcwotCSMgaXNzdWUsIGNvbW1lbnQgb3V0IHRoZSBOT19NTUFQIHN0YXRlbWVudC4KLQlOT19NTUFQID0gWWVzUGxlYXNlCi0JTk9fUkVHRVggPSBZZXNQbGVhc2UKLQlOT19GTk1BVENIX0NBU0VGT0xEID0gWWVzUGxlYXNlCi0JU05QUklOVEZfUkVUVVJOU19CT0dVUyA9IFllc1BsZWFzZQotCVNIRUxMX1BBVEg9L3Vzci9nbnUvYmluL2Jhc2gKLQlORUVEU19MSUJHRU4gPSBZZXNQbGVhc2UKLWVuZGlmCi1pZmVxICgkKHVuYW1lX1MpLEhQLVVYKQotCUlOTElORSA9IF9faW5saW5lCi0JTk9fSVBWNj1ZZXNQbGVhc2UKLQlOT19TRVRFTlY9WWVzUGxlYXNlCi0JTk9fU1RSQ0FTRVNUUj1ZZXNQbGVhc2UKLQlOT19NRU1NRU0gPSBZZXNQbGVhc2UKLQlOT19NS1NURU1QUyA9IFllc1BsZWFzZQotCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKLQlOT19NS0RURU1QID0gWWVzUGxlYXNlCi0JTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKLQlOT19IU1RSRVJST1IgPSBZZXNQbGVhc2UKLQlOT19TWVNfU0VMRUNUX0ggPSBZZXNQbGVhc2UKLQlOT19GTk1BVENIX0NBU0VGT0xEID0gWWVzUGxlYXNlCi0JU05QUklOVEZfUkVUVVJOU19CT0dVUyA9IFllc1BsZWFzZQotCU5PX05TRUMgPSBZZXNQbGVhc2UKLQlpZmVxICgkKHVuYW1lX1IpLEIuMTEuMDApCi0JCU5PX0lORVRfTlRPUCA9IFllc1BsZWFzZQotCQlOT19JTkVUX1BUT04gPSBZZXNQbGVhc2UKLQllbmRpZgotCWlmZXEgKCQodW5hbWVfUiksQi4xMC4yMCkKLQkJIyBPdmVycmlkZSBIUC1VWCAxMS54IHNldHRpbmc6Ci0JCUlOTElORSA9Ci0JCVNPQ0tMRU5fVCA9IHNpemVfdAotCQlOT19QUkVBRCA9IFllc1BsZWFzZQotCQlOT19JTkVUX05UT1AgPSBZZXNQbGVhc2UKLQkJTk9fSU5FVF9QVE9OID0gWWVzUGxlYXNlCi0JZW5kaWYKLQlHSVRfVEVTVF9DTVAgPSBjbXAKLWVuZGlmCi1pZmVxICgkKHVuYW1lX1MpLFdpbmRvd3MpCi0JR0lUX1ZFUlNJT04gOj0gJChHSVRfVkVSU0lPTikuTVNWQwotCXBhdGhzZXAgPSA7Ci0JTk9fUFJFQUQgPSBZZXNQbGVhc2UKLQlORUVEU19DUllQVE9fV0lUSF9TU0wgPSBZZXNQbGVhc2UKLQlOT19MSUJHRU5fSCA9IFllc1BsZWFzZQotCU5PX1NZU19QT0xMX0ggPSBZZXNQbGVhc2UKLQlOT19TWU1MSU5LX0hFQUQgPSBZZXNQbGVhc2UKLQlOT19JUFY2ID0gWWVzUGxlYXNlCi0JTk9fVU5JWF9TT0NLRVRTID0gWWVzUGxlYXNlCi0JTk9fU0VURU5WID0gWWVzUGxlYXNlCi0JTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKLQlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCi0JTk9fU1RSTENQWSA9IFllc1BsZWFzZQotCU5PX1NUUlRPS19SID0gWWVzUGxlYXNlCi0JTk9fRk5NQVRDSCA9IFllc1BsZWFzZQotCU5PX01FTU1FTSA9IFllc1BsZWFzZQotCSMgTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKLQlOT19JQ09OViA9IFllc1BsZWFzZQotCU5PX1NUUlRPVU1BWCA9IFllc1BsZWFzZQotCU5PX1NUUlRPVUxMID0gWWVzUGxlYXNlCi0JTk9fTUtEVEVNUCA9IFllc1BsZWFzZQotCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCi0JU05QUklOVEZfUkVUVVJOU19CT0dVUyA9IFllc1BsZWFzZQotCU5PX1NWTl9URVNUUyA9IFllc1BsZWFzZQotCU5PX1BFUkxfTUFLRU1BS0VSID0gWWVzUGxlYXNlCi0JUlVOVElNRV9QUkVGSVggPSBZZXNQbGVhc2UKLQlOT19TVF9CTE9DS1NfSU5fU1RSVUNUX1NUQVQgPSBZZXNQbGVhc2UKLQlOT19OU0VDID0gWWVzUGxlYXNlCi0JVVNFX1dJTjMyX01NQVAgPSBZZXNQbGVhc2UKLQkjIFVTRV9ORURfQUxMT0NBVE9SID0gWWVzUGxlYXNlCi0JVU5SRUxJQUJMRV9GU1RBVCA9IFVuZm9ydHVuYXRlbHlZZXMKLQlPQkpFQ1RfQ1JFQVRJT05fVVNFU19SRU5BTUVTID0gVW5mb3J0dW5hdGVseU5lZWRzVG8KLQlOT19SRUdFWCA9IFllc1BsZWFzZQotCU5PX0NVUkwgPSBZZXNQbGVhc2UKLQlOT19QWVRIT04gPSBZZXNQbGVhc2UKLQlCTEtfU0hBMSA9IFllc1BsZWFzZQotCU5PX1BPU0lYX0dPT0RJRVMgPSBVbmZvcnR1bmF0ZWx5WWVzCi0JTkFUSVZFX0NSTEYgPSBZZXNQbGVhc2UKLQotCUNDID0gY29tcGF0L3ZjYnVpbGQvc2NyaXB0cy9jbGluay5wbAotCUFSID0gY29tcGF0L3ZjYnVpbGQvc2NyaXB0cy9saWIucGwKLQlDRkxBR1MgPQotCUJBU0lDX0NGTEFHUyA9IC1ub2xvZ28gLUkuIC1JLi4vemxpYiAtSWNvbXBhdC92Y2J1aWxkIC1JY29tcGF0L3ZjYnVpbGQvaW5jbHVkZSAtRFdJTjMyIC1EX0NPTlNPTEUgLURIQVZFX1NUUklOR19IIC1EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgLURfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFCi0JQ09NUEFUX09CSlMgPSBjb21wYXQvbXN2Yy5vIGNvbXBhdC93aW5hbnNpLm8gXAotCQljb21wYXQvd2luMzIvcHRocmVhZC5vIGNvbXBhdC93aW4zMi9zeXNsb2cubyBcCi0JCWNvbXBhdC93aW4zMi9wb2xsLm8gY29tcGF0L3dpbjMyL2RpcmVudC5vCi0JQ09NUEFUX0NGTEFHUyA9IC1EX19VU0VfTUlOR1dfQUNDRVNTIC1ETk9HREkgLURIQVZFX1NUUklOR19IIC1ESEFWRV9BTExPQ0FfSCAtSWNvbXBhdCAtSWNvbXBhdC9yZWdleCAtSWNvbXBhdC93aW4zMiAtRFNUUklQX0VYVEVOU0lPTj1cIi5leGVcIgotCUJBU0lDX0xERkxBR1MgPSAtSUdOT1JFOjQyMTcgLUlHTk9SRTo0MDQ5IC1OT0xPR08gLVNVQlNZU1RFTTpDT05TT0xFIC1OT0RFRkFVTFRMSUI6TVNWQ1JULmxpYgotCUVYVExJQlMgPSB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiB3aW5pbmV0LmxpYiB3czJfMzIubGliCi0JUFRIUkVBRF9MSUJTID0KLQlsaWIgPQotaWZuZGVmIERFQlVHCi0JQkFTSUNfQ0ZMQUdTICs9IC1HTCAtT3MgLU1UCi0JQkFTSUNfTERGTEFHUyArPSAtTFRDRwotCUFSICs9IC1MVENHCi1lbHNlCi0JQkFTSUNfQ0ZMQUdTICs9IC1aaSAtTVRkCi1lbmRpZgotCVggPSAuZXhlCi1lbmRpZgotaWZlcSAoJCh1bmFtZV9TKSxJbnRlcml4KQotCU5PX0lOSVRHUk9VUFMgPSBZZXNQbGVhc2UKLQlOT19JUFY2ID0gWWVzUGxlYXNlCi0JTk9fTUVNTUVNID0gWWVzUGxlYXNlCi0JTk9fTUtEVEVNUCA9IFllc1BsZWFzZQotCU5PX1NUUlRPVU1BWCA9IFllc1BsZWFzZQotCU5PX05TRUMgPSBZZXNQbGVhc2UKLQlOT19NS1NURU1QUyA9IFllc1BsZWFzZQotCWlmZXEgKCQodW5hbWVfUiksMy41KQotCQlOT19JTkVUX05UT1AgPSBZZXNQbGVhc2UKLQkJTk9fSU5FVF9QVE9OID0gWWVzUGxlYXNlCi0JCU5PX1NPQ0tBRERSX1NUT1JBR0UgPSBZZXNQbGVhc2UKLQkJTk9fRk5NQVRDSF9DQVNFRk9MRCA9IFllc1BsZWFzZQotCWVuZGlmCi0JaWZlcSAoJCh1bmFtZV9SKSw1LjIpCi0JCU5PX0lORVRfTlRPUCA9IFllc1BsZWFzZQotCQlOT19JTkVUX1BUT04gPSBZZXNQbGVhc2UKLQkJTk9fU09DS0FERFJfU1RPUkFHRSA9IFllc1BsZWFzZQotCQlOT19GTk1BVENIX0NBU0VGT0xEID0gWWVzUGxlYXNlCi0JZW5kaWYKLWVuZGlmCi1pZmVxICgkKHVuYW1lX1MpLE1pbml4KQotCU5PX0lQVjYgPSBZZXNQbGVhc2UKLQlOT19TVF9CTE9DS1NfSU5fU1RSVUNUX1NUQVQgPSBZZXNQbGVhc2UKLQlOT19OU0VDID0gWWVzUGxlYXNlCi0JTkVFRFNfTElCR0VOID0KLQlORUVEU19DUllQVE9fV0lUSF9TU0wgPSBZZXNQbGVhc2UKLQlORUVEU19JRE5fV0lUSF9DVVJMID0gWWVzUGxlYXNlCi0JTkVFRFNfU1NMX1dJVEhfQ1VSTCA9IFllc1BsZWFzZQotCU5FRURTX1JFU09MViA9Ci0JTk9fSFNUUkVSUk9SID0gWWVzUGxlYXNlCi0JTk9fTU1BUCA9IFllc1BsZWFzZQotCU5PX0NVUkwgPQotCU5PX0VYUEFUID0KLWVuZGlmCi1pZm5lcSAoLCQoZmluZHN0cmluZyBNSU5HVywkKHVuYW1lX1MpKSkKLQlwYXRoc2VwID0gOwotCU5PX1BSRUFEID0gWWVzUGxlYXNlCi0JTkVFRFNfQ1JZUFRPX1dJVEhfU1NMID0gWWVzUGxlYXNlCi0JTk9fTElCR0VOX0ggPSBZZXNQbGVhc2UKLQlOT19TWVNfUE9MTF9IID0gWWVzUGxlYXNlCi0JTk9fU1lNTElOS19IRUFEID0gWWVzUGxlYXNlCi0JTk9fVU5JWF9TT0NLRVRTID0gWWVzUGxlYXNlCi0JTk9fU0VURU5WID0gWWVzUGxlYXNlCi0JTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKLQlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCi0JTk9fU1RSTENQWSA9IFllc1BsZWFzZQotCU5PX1NUUlRPS19SID0gWWVzUGxlYXNlCi0JTk9fRk5NQVRDSCA9IFllc1BsZWFzZQotCU5PX01FTU1FTSA9IFllc1BsZWFzZQotCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCi0JT0xEX0lDT05WID0gWWVzUGxlYXNlCi0JTk9fU1RSVE9VTUFYID0gWWVzUGxlYXNlCi0JTk9fTUtEVEVNUCA9IFllc1BsZWFzZQotCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCi0JTk9fU1ZOX1RFU1RTID0gWWVzUGxlYXNlCi0JTk9fUEVSTF9NQUtFTUFLRVIgPSBZZXNQbGVhc2UKLQlSVU5USU1FX1BSRUZJWCA9IFllc1BsZWFzZQotCU5PX1NUX0JMT0NLU19JTl9TVFJVQ1RfU1RBVCA9IFllc1BsZWFzZQotCU5PX05TRUMgPSBZZXNQbGVhc2UKLQlVU0VfV0lOMzJfTU1BUCA9IFllc1BsZWFzZQotCVVTRV9ORURfQUxMT0NBVE9SID0gWWVzUGxlYXNlCi0JVU5SRUxJQUJMRV9GU1RBVCA9IFVuZm9ydHVuYXRlbHlZZXMKLQlPQkpFQ1RfQ1JFQVRJT05fVVNFU19SRU5BTUVTID0gVW5mb3J0dW5hdGVseU5lZWRzVG8KLQlOT19SRUdFWCA9IFllc1BsZWFzZQotCU5PX1BZVEhPTiA9IFllc1BsZWFzZQotCUJMS19TSEExID0gWWVzUGxlYXNlCi0JRVRBR1NfVEFSR0VUID0gRVRBR1MKLQlOT19JTkVUX1BUT04gPSBZZXNQbGVhc2UKLQlOT19JTkVUX05UT1AgPSBZZXNQbGVhc2UKLQlOT19QT1NJWF9HT09ESUVTID0gVW5mb3J0dW5hdGVseVllcwotCUNPTVBBVF9DRkxBR1MgKz0gLURfX1VTRV9NSU5HV19BQ0NFU1MgLUROT0dESSAtSWNvbXBhdCAtSWNvbXBhdC93aW4zMgotCUNPTVBBVF9DRkxBR1MgKz0gLURTVFJJUF9FWFRFTlNJT049XCIuZXhlXCIKLQlDT01QQVRfT0JKUyArPSBjb21wYXQvbWluZ3cubyBjb21wYXQvd2luYW5zaS5vIFwKLQkJY29tcGF0L3dpbjMyL3B0aHJlYWQubyBjb21wYXQvd2luMzIvc3lzbG9nLm8gXAotCQljb21wYXQvd2luMzIvcG9sbC5vIGNvbXBhdC93aW4zMi9kaXJlbnQubwotCUVYVExJQlMgKz0gLWx3czJfMzIKLQlQVEhSRUFEX0xJQlMgPQotCVggPSAuZXhlCi0JU1BBUlNFX0ZMQUdTID0gLVduby1vbmUtYml0LXNpZ25lZC1iaXRmaWVsZAotaWZuZXEgKCwkKHdpbGRjYXJkIC4uL1RISVNfSVNfTVNZU0dJVCkpCi0JaHRtbGRpcj1kb2MvZ2l0L2h0bWwvCi0JcHJlZml4ID0KLQlJTlNUQUxMID0gL2Jpbi9pbnN0YWxsCi0JRVhUTElCUyArPSAvbWluZ3cvbGliL2xpYnouYQotCU5PX1JfVE9fR0NDX0xJTktFUiA9IFllc1BsZWFzZQotCUlOVEVSTkFMX1FTT1JUID0gWWVzUGxlYXNlCi0JSEFWRV9MSUJDSEFSU0VUX0ggPSBZZXNQbGVhc2UKLWVsc2UKLQlOT19DVVJMID0gWWVzUGxlYXNlCi1lbmRpZgotZW5kaWYKLQoraW5jbHVkZSBjb25maWcubWFrLnVuYW1lCiAtaW5jbHVkZSBjb25maWcubWFrLmF1dG9nZW4KIC1pbmNsdWRlIGNvbmZpZy5tYWsKIApAQCAtMTM3Myw3ICsxMDEzLDggQEAKIAogaWZlcSAoJChDT01QVVRFX0hFQURFUl9ERVBFTkRFTkNJRVMpLGF1dG8pCiBkZXBfY2hlY2sgPSAkKHNoZWxsICQoQ0MpICQoQUxMX0NGTEFHUykgXAotCS1jIC1NRiAvZGV2L251bGwgLU1NRCAtTVAgLXggYyAvZGV2L251bGwgLW8gL2Rldi9udWxsIDI+JjE7IFwKKwktYyAtTUYgL2Rldi9udWxsIC1NUSAvZGV2L251bGwgLU1NRCAtTVAgXAorCS14IGMgL2Rldi9udWxsIC1vIC9kZXYvbnVsbCAyPiYxOyBcCiAJZWNobyAkJD8pCiBpZmVxICgkKGRlcF9jaGVjayksMCkKIG92ZXJyaWRlIENPTVBVVEVfSEVBREVSX0RFUEVOREVOQ0lFUyA9IHllcwpAQCAtMTQyMCw2ICsxMDYxLDExIEBACiAJCQlCQVNJQ19MREZMQUdTICs9IC1ML29wdC9sb2NhbC9saWIKIAkJZW5kaWYKIAllbmRpZgorCWlmbmRlZiBOT19BUFBMRV9DT01NT05fQ1JZUFRPCisJCUFQUExFX0NPTU1PTl9DUllQVE8gPSBZZXNQbGVhc2UKKwkJQ09NUEFUX0NGTEFHUyArPSAtREFQUExFX0NPTU1PTl9DUllQVE8KKwllbmRpZgorCU5PX1JFR0VYID0gWWVzUGxlYXNlCiAJUFRIUkVBRF9MSUJTID0KIGVuZGlmCiAKQEAgLTE0NjEsNyArMTEwNyw3IEBACiAJCUNVUkxfTElCQ1VSTCA9IC1sY3VybAogCWVuZGlmCiAJaWZkZWYgTkVFRFNfU1NMX1dJVEhfQ1VSTAotCQlDVVJMX0xJQkNVUkwgKz0JLWxzc2wKKwkJQ1VSTF9MSUJDVVJMICs9IC1sc3NsCiAJCWlmZGVmIE5FRURTX0NSWVBUT19XSVRIX1NTTAogCQkJQ1VSTF9MSUJDVVJMICs9IC1sY3J5cHRvCiAJCWVuZGlmCkBAIC0xNDc1LDcgKzExMjEsNyBAQAogCVJFTU9URV9DVVJMX05BTUVTID0gJChSRU1PVEVfQ1VSTF9QUklNQVJZKSAkKFJFTU9URV9DVVJMX0FMSUFTRVMpCiAJUFJPR1JBTV9PQkpTICs9IGh0dHAtZmV0Y2gubwogCVBST0dSQU1TICs9ICQoUkVNT1RFX0NVUkxfTkFNRVMpCi0JY3VybF9jaGVjayA6PSAkKHNoZWxsIChlY2hvIDA3MDkwODsgY3VybC1jb25maWcgLS12ZXJudW0pIHwgc29ydCAtciB8IHNlZCAtbmUgMnApCisJY3VybF9jaGVjayA6PSAkKHNoZWxsIChlY2hvIDA3MDkwODsgY3VybC1jb25maWcgLS12ZXJudW0pIDI+L2Rldi9udWxsIHwgc29ydCAtciB8IHNlZCAtbmUgMnApCiAJaWZlcSAiJChjdXJsX2NoZWNrKSIgIjA3MDkwOCIKIAkJaWZuZGVmIE5PX0VYUEFUCiAJCQlQUk9HUkFNX09CSlMgKz0gaHR0cC1wdXNoLm8KQEAgLTE0ODgsNiArMTEzNCw5IEBACiAJCWVsc2UKIAkJCUVYUEFUX0xJQkVYUEFUID0gLWxleHBhdAogCQllbmRpZgorCQlpZmRlZiBFWFBBVF9ORUVEU19YTUxQQVJTRV9ICisJCQlCQVNJQ19DRkxBR1MgKz0gLURFWFBBVF9ORUVEU19YTUxQQVJTRV9ICisJCWVuZGlmCiAJZW5kaWYKIGVuZGlmCiAKQEAgLTE1MjksNiArMTE3OCw5IEBACiAJZWxzZQogCQlJQ09OVl9MSU5LID0KIAllbmRpZgorCWlmZGVmIE5FRURTX0xJQklOVExfQkVGT1JFX0xJQklDT05WCisJCUlDT05WX0xJTksgKz0gLWxpbnRsCisJZW5kaWYKIAlFWFRMSUJTICs9ICQoSUNPTlZfTElOSykgLWxpY29udgogZW5kaWYKIGlmZGVmIE5FRURTX0xJQkdFTgpAQCAtMTU1NCw2ICsxMjA2LDkgQEAKIGlmZGVmIE5PX0RfSU5PX0lOX0RJUkVOVAogCUJBU0lDX0NGTEFHUyArPSAtRE5PX0RfSU5PX0lOX0RJUkVOVAogZW5kaWYKK2lmZGVmIE5PX0dFQ09TX0lOX1BXRU5UCisJQkFTSUNfQ0ZMQUdTICs9IC1ETk9fR0VDT1NfSU5fUFdFTlQKK2VuZGlmCiBpZmRlZiBOT19TVF9CTE9DS1NfSU5fU1RSVUNUX1NUQVQKIAlCQVNJQ19DRkxBR1MgKz0gLUROT19TVF9CTE9DS1NfSU5fU1RSVUNUX1NUQVQKIGVuZGlmCkBAIC0xNTg3LDYgKzEyNDIsMTEgQEAKIAlCQVNJQ19DRkxBR1MgKz0gLUROT19HRVRURVhUCiAJVVNFX0dFVFRFWFRfU0NIRU1FID89IGZhbGx0aHJvdWdoCiBlbmRpZgoraWZkZWYgTk9fUE9MTAorCU5PX1NZU19QT0xMX0ggPSBZZXNQbGVhc2UKKwlDT01QQVRfQ0ZMQUdTICs9IC1ETk9fUE9MTCAtSWNvbXBhdC9wb2xsCisJQ09NUEFUX09CSlMgKz0gY29tcGF0L3BvbGwvcG9sbC5vCitlbmRpZgogaWZkZWYgTk9fU1RSQ0FTRVNUUgogCUNPTVBBVF9DRkxBR1MgKz0gLUROT19TVFJDQVNFU1RSCiAJQ09NUEFUX09CSlMgKz0gY29tcGF0L3N0cmNhc2VzdHIubwpAQCAtMTYwMiwxMCArMTI2Miw2IEBACiBpZmRlZiBOT19TVFJUT1VMTAogCUNPTVBBVF9DRkxBR1MgKz0gLUROT19TVFJUT1VMTAogZW5kaWYKLWlmZGVmIE5PX1NUUlRPS19SCi0JQ09NUEFUX0NGTEFHUyArPSAtRE5PX1NUUlRPS19SCi0JQ09NUEFUX09CSlMgKz0gY29tcGF0L3N0cnRva19yLm8KLWVuZGlmCiBpZmRlZiBOT19GTk1BVENICiAJQ09NUEFUX0NGTEFHUyArPSAtSWNvbXBhdC9mbm1hdGNoCiAJQ09NUEFUX0NGTEFHUyArPSAtRE5PX0ZOTUFUQ0gKQEAgLTE2MTcsNiArMTI3Myw5IEBACiAJQ09NUEFUX09CSlMgKz0gY29tcGF0L2ZubWF0Y2gvZm5tYXRjaC5vCiBlbmRpZgogZW5kaWYKK2lmZGVmIFVTRV9XSUxETUFUQ0gKKwlDT01QQVRfQ0ZMQUdTICs9IC1EVVNFX1dJTERNQVRDSAorZW5kaWYKIGlmZGVmIE5PX1NFVEVOVgogCUNPTVBBVF9DRkxBR1MgKz0gLUROT19TRVRFTlYKIAlDT01QQVRfT0JKUyArPSBjb21wYXQvc2V0ZW52Lm8KQEAgLTE2MjUsNiArMTI4NCwxMCBAQAogCUNPTVBBVF9DRkxBR1MgKz0gLUROT19NS0RURU1QCiAJQ09NUEFUX09CSlMgKz0gY29tcGF0L21rZHRlbXAubwogZW5kaWYKK2lmZGVmIE1LRElSX1dPX1RSQUlMSU5HX1NMQVNICisJQ09NUEFUX0NGTEFHUyArPSAtRE1LRElSX1dPX1RSQUlMSU5HX1NMQVNICisJQ09NUEFUX09CSlMgKz0gY29tcGF0L21rZGlyLm8KK2VuZGlmCiBpZmRlZiBOT19NS1NURU1QUwogCUNPTVBBVF9DRkxBR1MgKz0gLUROT19NS1NURU1QUwogZW5kaWYKQEAgLTE2MzgsNiArMTMwMSw5IEBACiBpZmRlZiBOT19TWVNfUE9MTF9ICiAJQkFTSUNfQ0ZMQUdTICs9IC1ETk9fU1lTX1BPTExfSAogZW5kaWYKK2lmZGVmIE5FRURTX1NZU19QQVJBTV9ICisJQkFTSUNfQ0ZMQUdTICs9IC1ETkVFRFNfU1lTX1BBUkFNX0gKK2VuZGlmCiBpZmRlZiBOT19JTlRUWVBFU19ICiAJQkFTSUNfQ0ZMQUdTICs9IC1ETk9fSU5UVFlQRVNfSAogZW5kaWYKQEAgLTE2NTYsOSArMTMyMiwyMCBAQAogaWZkZWYgT0JKRUNUX0NSRUFUSU9OX1VTRVNfUkVOQU1FUwogCUNPTVBBVF9DRkxBR1MgKz0gLURPQkpFQ1RfQ1JFQVRJT05fTU9ERT0xCiBlbmRpZgoraWZkZWYgTk9fU1RSVUNUX0lUSU1FUlZBTAorCUNPTVBBVF9DRkxBR1MgKz0gLUROT19TVFJVQ1RfSVRJTUVSVkFMCisJTk9fU0VUSVRJTUVSID0gWWVzUGxlYXNlCitlbmRpZgoraWZkZWYgTk9fU0VUSVRJTUVSCisJQ09NUEFUX0NGTEFHUyArPSAtRE5PX1NFVElUSU1FUgorZW5kaWYKIGlmZGVmIE5PX1BSRUFECiAJQ09NUEFUX0NGTEFHUyArPSAtRE5PX1BSRUFECiAJQ09NUEFUX09CSlMgKz0gY29tcGF0L3ByZWFkLm8KKwlOT19USFJFQURfU0FGRV9QUkVBRCA9IFllc1BsZWFzZQorZW5kaWYKK2lmZGVmIE5PX1RIUkVBRF9TQUZFX1BSRUFECisJQkFTSUNfQ0ZMQUdTICs9IC1ETk9fVEhSRUFEX1NBRkVfUFJFQUQKIGVuZGlmCiBpZmRlZiBOT19GQVNUX1dPUktJTkdfRElSRUNUT1JZCiAJQkFTSUNfQ0ZMQUdTICs9IC1ETk9fRkFTVF9XT1JLSU5HX0RJUkVDVE9SWQpAQCAtMTY2OSw2ICsxMzQ2LDkgQEAKIGlmZGVmIE5PX0lQVjYKIAlCQVNJQ19DRkxBR1MgKz0gLUROT19JUFY2CiBlbmRpZgoraWZkZWYgTk9fSU5UUFRSX1QKKwlDT01QQVRfQ0ZMQUdTICs9IC1ETk9fSU5UUFRSX1QKK2VuZGlmCiBpZmRlZiBOT19VSU5UTUFYX1QKIAlCQVNJQ19DRkxBR1MgKz0gLUR1aW50bWF4X3Q9dWludDMyX3QKIGVuZGlmCkBAIC0xNzIwLDEwICsxNDAwLDE2IEBACiAJTElCX09CSlMgKz0gcHBjL3NoYTEubyBwcGMvc2hhMXBwYy5vCiAJTElCX0ggKz0gcHBjL3NoYTEuaAogZWxzZQoraWZkZWYgQVBQTEVfQ09NTU9OX0NSWVBUTworCUNPTVBBVF9DRkxBR1MgKz0gLURDT01NT05fRElHRVNUX0ZPUl9PUEVOU1NMCisJU0hBMV9IRUFERVIgPSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkRpZ2VzdC5oPgorZWxzZQogCVNIQTFfSEVBREVSID0gPG9wZW5zc2wvc2hhLmg+CiAJRVhUTElCUyArPSAkKExJQl80X0NSWVBUTykKIGVuZGlmCiBlbmRpZgorZW5kaWYKKwogaWZkZWYgTk9fUEVSTF9NQUtFTUFLRVIKIAlleHBvcnQgTk9fUEVSTF9NQUtFTUFLRVIKIGVuZGlmCkBAIC0xNzM1LDYgKzE0MjEsOSBAQAogCUNPTVBBVF9DRkxBR1MgKz0gLUROT19NRU1NRU0KIAlDT01QQVRfT0JKUyArPSBjb21wYXQvbWVtbWVtLm8KIGVuZGlmCitpZmRlZiBOT19HRVRQQUdFU0laRQorCUNPTVBBVF9DRkxBR1MgKz0gLUROT19HRVRQQUdFU0laRQorZW5kaWYKIGlmZGVmIElOVEVSTkFMX1FTT1JUCiAJQ09NUEFUX0NGTEFHUyArPSAtRElOVEVSTkFMX1FTT1JUCiAJQ09NUEFUX09CSlMgKz0gY29tcGF0L3Fzb3J0Lm8KQEAgLTE3NjAsNiArMTQ0OSwxMCBAQAogCUVYVExJQlMgKz0gJChDSEFSU0VUX0xJQikKIGVuZGlmCiAKK2lmZGVmIEhBVkVfU1RSSU5HU19ICisJQkFTSUNfQ0ZMQUdTICs9IC1ESEFWRV9TVFJJTkdTX0gKK2VuZGlmCisKIGlmZGVmIEhBVkVfREVWX1RUWQogCUJBU0lDX0NGTEFHUyArPSAtREhBVkVfREVWX1RUWQogZW5kaWYKQEAgLTE3NzQsNiArMTQ2Nyw5IEBACiAJQ09NUEFUX0NGTEFHUyArPSAtSWNvbXBhdC9yZWdleAogCUNPTVBBVF9PQkpTICs9IGNvbXBhdC9yZWdleC9yZWdleC5vCiBlbmRpZgoraWZkZWYgQ1lHV0lOX1YxNV9XSU4zMkFQSQorCUNPTVBBVF9DRkxBR1MgKz0gLURDWUdXSU5fVjE1X1dJTjMyQVBJCitlbmRpZgogCiBpZmRlZiBVU0VfTkVEX0FMTE9DQVRPUgogICAgICAgIENPTVBBVF9DRkxBR1MgKz0gLUljb21wYXQvbmVkbWFsbG9jCkBAIC0xNzg4LDIwICsxNDg0LDI1IEBACiAJTVNHRk1UICs9IC0tY2hlY2sgLS1zdGF0aXN0aWNzCiBlbmRpZgogCitpZmRlZiBORUVEU19DTElQUEVEX1dSSVRFCisJQkFTSUNfQ0ZMQUdTICs9IC1ETkVFRFNfQ0xJUFBFRF9XUklURQorCUNPTVBBVF9PQkpTICs9IGNvbXBhdC9jbGlwcGVkLXdyaXRlLm8KK2VuZGlmCisKIGlmbmVxICgsJChYRExfRkFTVF9IQVNIKSkKIAlCQVNJQ19DRkxBR1MgKz0gLURYRExfRkFTVF9IQVNICiBlbmRpZgogCiBpZmVxICgkKFRDTFRLX1BBVEgpLCkKLU5PX1RDTFRLPU5vVGhhbmtzCitOT19UQ0xUSyA9IE5vVGhhbmtzCiBlbmRpZgogCiBpZmVxICgkKFBFUkxfUEFUSCksKQotTk9fUEVSTD1Ob1RoYW5rcworTk9fUEVSTCA9IE5vVGhhbmtzCiBlbmRpZgogCiBpZmVxICgkKFBZVEhPTl9QQVRIKSwpCi1OT19QWVRIT049Tm9UaGFua3MKK05PX1BZVEhPTiA9IE5vVGhhbmtzCiBlbmRpZgogCiBRVUlFVF9TVUJESVIwICA9ICskKE1BS0UpIC1DICMgc3BhY2UgdG8gc2VwYXJhdGUgLUMgYW5kIHN1YmRpcgpAQCAtMTgzNCwxMCArMTUzNSw2IEBACiBlbmRpZgogZW5kaWYKIAotaWZkZWYgQVNDSUlET0M3Ci0JZXhwb3J0IEFTQ0lJRE9DNwotZW5kaWYKLQogaWZkZWYgTk9fSU5TVEFMTF9IQVJETElOS1MKIAlleHBvcnQgTk9fSU5TVEFMTF9IQVJETElOS1MKIGVuZGlmCkBAIC0xODUyLDEzICsxNTQ5LDEzIEBACiBpZmVxICgiJChQUk9GSUxFKSIsIkdFTiIpCiAJQ0ZMQUdTICs9IC1mcHJvZmlsZS1nZW5lcmF0ZT0kKFBST0ZJTEVfRElSKSAtRE5PX05PUkVUVVJOPTEKIAlFWFRMSUJTICs9IC1sZ2NvdgotCWV4cG9ydCBDQ0FDSEVfRElTQUJMRT10Ci0JVj0xCisJZXhwb3J0IENDQUNIRV9ESVNBQkxFID0gdAorCVYgPSAxCiBlbHNlCiBpZm5lcSAoIiQoUFJPRklMRSkiLCIiKQogCUNGTEFHUyArPSAtZnByb2ZpbGUtdXNlPSQoUFJPRklMRV9ESVIpIC1mcHJvZmlsZS1jb3JyZWN0aW9uIC1ETk9fTk9SRVRVUk49MQotCWV4cG9ydCBDQ0FDSEVfRElTQUJMRT10Ci0JVj0xCisJZXhwb3J0IENDQUNIRV9ESVNBQkxFID0gdAorCVYgPSAxCiBlbmRpZgogZW5kaWYKIApAQCAtMTg3MSwxMiArMTU2OCwxMiBAQAogREVTVERJUl9TUSA9ICQoc3Vic3QgJywnXCcnLCQoREVTVERJUikpCiBiaW5kaXJfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKGJpbmRpcikpCiBiaW5kaXJfcmVsYXRpdmVfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKGJpbmRpcl9yZWxhdGl2ZSkpCi1tYW5kaXJfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKG1hbmRpcikpCi1pbmZvZGlyX1NRID0gJChzdWJzdCAnLCdcJycsJChpbmZvZGlyKSkKK21hbmRpcl9yZWxhdGl2ZV9TUSA9ICQoc3Vic3QgJywnXCcnLCQobWFuZGlyX3JlbGF0aXZlKSkKK2luZm9kaXJfcmVsYXRpdmVfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKGluZm9kaXJfcmVsYXRpdmUpKQogbG9jYWxlZGlyX1NRID0gJChzdWJzdCAnLCdcJycsJChsb2NhbGVkaXIpKQogZ2l0ZXhlY2Rpcl9TUSA9ICQoc3Vic3QgJywnXCcnLCQoZ2l0ZXhlY2RpcikpCiB0ZW1wbGF0ZV9kaXJfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKHRlbXBsYXRlX2RpcikpCi1odG1sZGlyX1NRID0gJChzdWJzdCAnLCdcJycsJChodG1sZGlyKSkKK2h0bWxkaXJfcmVsYXRpdmVfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKGh0bWxkaXJfcmVsYXRpdmUpKQogcHJlZml4X1NRID0gJChzdWJzdCAnLCdcJycsJChwcmVmaXgpKQogZ2l0d2ViZGlyX1NRID0gJChzdWJzdCAnLCdcJycsJChnaXR3ZWJkaXIpKQogCkBAIC0xOTE1LDYgKzE2MTIsMTggQEAKIEJBU0lDX0NGTEFHUyArPSAtRFNIRUxMX1BBVEg9JyQoU0hFTExfUEFUSF9DUV9TUSknCiBlbmRpZgogCitHSVRfVVNFUl9BR0VOVF9TUSA9ICQoc3Vic3QgJywnXCcnLCQoR0lUX1VTRVJfQUdFTlQpKQorR0lUX1VTRVJfQUdFTlRfQ1EgPSAiJChzdWJzdCAiLFwiLCQoc3Vic3QgXCxcXCwkKEdJVF9VU0VSX0FHRU5UKSkpIgorR0lUX1VTRVJfQUdFTlRfQ1FfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKEdJVF9VU0VSX0FHRU5UX0NRKSkKK0dJVC1VU0VSLUFHRU5UOiBGT1JDRQorCUBpZiB0ZXN0IHgnJChHSVRfVVNFUl9BR0VOVF9TUSknICE9IHgiYGNhdCBHSVQtVVNFUi1BR0VOVCAyPi9kZXYvbnVsbGAiOyB0aGVuIFwKKwkJZWNobyAnJChHSVRfVVNFUl9BR0VOVF9TUSknID5HSVQtVVNFUi1BR0VOVDsgXAorCWZpCisKK2lmZGVmIERFRkFVTFRfSEVMUF9GT1JNQVQKK0JBU0lDX0NGTEFHUyArPSAtRERFRkFVTFRfSEVMUF9GT1JNQVQ9JyIkKERFRkFVTFRfSEVMUF9GT1JNQVQpIicKK2VuZGlmCisKIEFMTF9DRkxBR1MgKz0gJChCQVNJQ19DRkxBR1MpCiBBTExfTERGTEFHUyArPSAkKEJBU0lDX0xERkxBR1MpCiAKQEAgLTE5NjEsMjMgKzE2NzAsNjEgQEAKIHN0cmlwOiAkKFBST0dSQU1TKSBnaXQkWAogCSQoU1RSSVApICQoU1RSSVBfT1BUUykgJChQUk9HUkFNUykgZ2l0JFgKIAotZ2l0Lm86IGNvbW1vbi1jbWRzLmgKLWdpdC5zcCBnaXQucyBnaXQubzogRVhUUkFfQ1BQRkxBR1MgPSAtREdJVF9WRVJTSU9OPSciJChHSVRfVkVSU0lPTikiJyBcCi0JJy1ER0lUX0hUTUxfUEFUSD0iJChodG1sZGlyX1NRKSInIFwKLQknLURHSVRfTUFOX1BBVEg9IiQobWFuZGlyX1NRKSInIFwKLQknLURHSVRfSU5GT19QQVRIPSIkKGluZm9kaXJfU1EpIicKKyMjIyBUYXJnZXQtc3BlY2lmaWMgZmxhZ3MgYW5kIGRlcGVuZGVuY2llcworCisjIFRoZSBnZW5lcmljIGNvbXBpbGF0aW9uIHBhdHRlcm4gcnVsZSBhbmQgYXV0b21hdGljYWxseQorIyBjb21wdXRlZCBoZWFkZXIgZGVwZW5kZW5jaWVzIChmYWxsaW5nIGJhY2sgdG8gYSBkZXBlbmRlbmN5IG9uCisjIExJQl9IKSBhcmUgZW5vdWdoIHRvIGRlc2NyaWJlIGhvdyBtb3N0IHRhcmdldHMgc2hvdWxkIGJlIGJ1aWx0LAorIyBidXQgc29tZSB0YXJnZXRzIGFyZSBzcGVjaWFsIGVub3VnaCB0byBuZWVkIHNvbWV0aGluZyBhIGxpdHRsZQorIyBkaWZmZXJlbnQuCisjCisjIC0gV2hlbiBhIHNvdXJjZSBmaWxlICJmb28uYyIgI2luY2x1ZGVzIGEgZ2VuZXJhdGVkIGhlYWRlciBmaWxlLAorIyAgIHdlIG5lZWQgdG8gbGlzdCB0aGF0IGRlcGVuZGVuY3kgZm9yIHRoZSAiZm9vLm8iIHRhcmdldC4KKyMKKyMgICBXZSBhbHNvIGxpc3QgaXQgZnJvbSBvdGhlciB0YXJnZXRzIHRoYXQgYXJlIGJ1aWx0IGZyb20gZm9vLmMKKyMgICBsaWtlICJmb28uc3AiIGFuZCAiZm9vLnMiLCBldmVuIHRob3VnaCB0aGF0IGlzIGVhc3kgdG8gZm9yZ2V0CisjICAgdG8gZG8gYmVjYXVzZSB0aGUgZ2VuZXJhdGVkIGhlYWRlciBpcyBhbHJlYWR5IHByZXNlbnQgYXJvdW5kCisjICAgYWZ0ZXIgYSByZWd1bGFyIGJ1aWxkIGF0dGVtcHQuCisjCisjIC0gU29tZSBjb2RlIGRlcGVuZHMgb24gY29uZmlndXJhdGlvbiBrZXB0IGluIG1ha2VmaWxlCisjICAgdmFyaWFibGVzLiBUaGUgdGFyZ2V0LXNwZWNpZmljIHZhcmlhYmxlIEVYVFJBX0NQUEZMQUdTIGNhbgorIyAgIGJlIHVzZWQgdG8gY29udmV5IHRoYXQgaW5mb3JtYXRpb24gdG8gdGhlIEMgcHJlcHJvY2Vzc29yCisjICAgdXNpbmcgLUQgb3B0aW9ucy4KKyMKKyMgICBUaGUgImZvby5vIiB0YXJnZXQgc2hvdWxkIGhhdmUgYSBjb3JyZXNwb25kaW5nIGRlcGVuZGVuY3kgb24KKyMgICBhIGZpbGUgdGhhdCBjaGFuZ2VzIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBtYWtlZmlsZSB2YXJpYWJsZQorIyAgIGNoYW5nZXMuICBGb3IgZXhhbXBsZSwgdGFyZ2V0cyBtYWtpbmcgdXNlIG9mIHRoZQorIyAgICQoR0lUX1ZFUlNJT04pIHZhcmlhYmxlIGRlcGVuZCBvbiBHSVQtVkVSU0lPTi1GSUxFLgorIworIyAgIFRlY2huaWNhbGx5IHRoZSAiLnNwIiBhbmQgIi5zIiB0YXJnZXRzIGRvIG5vdCBuZWVkIHRoaXMKKyMgICBkZXBlbmRlbmN5IGJlY2F1c2UgdGhleSBhcmUgZm9yY2UtYnVpbHQsIGJ1dCB0aGV5IGdldCB0aGUKKyMgICBzYW1lIGRlcGVuZGVuY3kgZm9yIGNvbnNpc3RlbmN5LiBUaGlzIHdheSwgeW91IGRvIG5vdCBoYXZlIHRvCisjICAga25vdyBob3cgZWFjaCB0YXJnZXQgaXMgaW1wbGVtZW50ZWQuIEFuZCBpdCBtZWFucyB0aGUKKyMgICBkZXBlbmRlbmNpZXMgaGVyZSB3aWxsIG5vdCBuZWVkIHRvIGNoYW5nZSBpZiB0aGUgZm9yY2UtYnVpbGQKKyMgICBkZXRhaWxzIGNoYW5nZSBzb21lIGRheS4KKworZ2l0LnNwIGdpdC5zIGdpdC5vOiBHSVQtUFJFRklYCitnaXQuc3AgZ2l0LnMgZ2l0Lm86IEVYVFJBX0NQUEZMQUdTID0gXAorCSctREdJVF9IVE1MX1BBVEg9IiQoaHRtbGRpcl9yZWxhdGl2ZV9TUSkiJyBcCisJJy1ER0lUX01BTl9QQVRIPSIkKG1hbmRpcl9yZWxhdGl2ZV9TUSkiJyBcCisJJy1ER0lUX0lORk9fUEFUSD0iJChpbmZvZGlyX3JlbGF0aXZlX1NRKSInCiAKIGdpdCRYOiBnaXQubyBHSVQtTERGTEFHUyAkKEJVSUxUSU5fT0JKUykgJChHSVRMSUJTKQogCSQoUVVJRVRfTElOSykkKENDKSAkKEFMTF9DRkxBR1MpIC1vICRAIGdpdC5vIFwKIAkJJChCVUlMVElOX09CSlMpICQoQUxMX0xERkxBR1MpICQoTElCUykKIAotaGVscC5zcCBoZWxwLm86IGNvbW1vbi1jbWRzLmgKK2hlbHAuc3AgaGVscC5zIGhlbHAubzogY29tbW9uLWNtZHMuaAogCi1idWlsdGluL2hlbHAuc3AgYnVpbHRpbi9oZWxwLm86IGNvbW1vbi1jbWRzLmgKK2J1aWx0aW4vaGVscC5zcCBidWlsdGluL2hlbHAucyBidWlsdGluL2hlbHAubzogY29tbW9uLWNtZHMuaCBHSVQtUFJFRklYCiBidWlsdGluL2hlbHAuc3AgYnVpbHRpbi9oZWxwLnMgYnVpbHRpbi9oZWxwLm86IEVYVFJBX0NQUEZMQUdTID0gXAotCSctREdJVF9IVE1MX1BBVEg9IiQoaHRtbGRpcl9TUSkiJyBcCi0JJy1ER0lUX01BTl9QQVRIPSIkKG1hbmRpcl9TUSkiJyBcCi0JJy1ER0lUX0lORk9fUEFUSD0iJChpbmZvZGlyX1NRKSInCisJJy1ER0lUX0hUTUxfUEFUSD0iJChodG1sZGlyX3JlbGF0aXZlX1NRKSInIFwKKwknLURHSVRfTUFOX1BBVEg9IiQobWFuZGlyX3JlbGF0aXZlX1NRKSInIFwKKwknLURHSVRfSU5GT19QQVRIPSIkKGluZm9kaXJfcmVsYXRpdmVfU1EpIicKKwordmVyc2lvbi5zcCB2ZXJzaW9uLnMgdmVyc2lvbi5vOiBHSVQtVkVSU0lPTi1GSUxFIEdJVC1VU0VSLUFHRU5UCit2ZXJzaW9uLnNwIHZlcnNpb24ucyB2ZXJzaW9uLm86IEVYVFJBX0NQUEZMQUdTID0gXAorCSctREdJVF9WRVJTSU9OPSIkKEdJVF9WRVJTSU9OKSInIFwKKwknLURHSVRfVVNFUl9BR0VOVD0kKEdJVF9VU0VSX0FHRU5UX0NRX1NRKScKIAogJChCVUlMVF9JTlMpOiBnaXQkWAogCSQoUVVJRVRfQlVJTFRfSU4pJChSTSkgJEAgJiYgXApAQCAtMTk5MCwzNSArMTczNyw1NCBAQAogY29tbW9uLWNtZHMuaDogJCh3aWxkY2FyZCBEb2N1bWVudGF0aW9uL2dpdC0qLnR4dCkKIAkkKFFVSUVUX0dFTikuL2dlbmVyYXRlLWNtZGxpc3Quc2ggPiAkQCsgJiYgbXYgJEArICRACiAKK1NDUklQVF9ERUZJTkVTID0gJChTSEVMTF9QQVRIX1NRKTokKERJRkZfU1EpOiQoR0lUX1ZFUlNJT04pOlwKKwkkKGxvY2FsZWRpcl9TUSk6JChOT19DVVJMKTokKFVTRV9HRVRURVhUX1NDSEVNRSk6JChTQU5FX1RPT0xfUEFUSF9TUSk6XAorCSQoZ2l0d2ViZGlyX1NRKTokKFBFUkxfUEFUSF9TUSkKIGRlZmluZSBjbWRfbXVuZ2Vfc2NyaXB0CiAkKFJNKSAkQCAkQCsgJiYgXAogc2VkIC1lICcxc3wjIS4qL3NofCMhJChTSEVMTF9QQVRIX1NRKXwnIFwKICAgICAtZSAnc3xAU0hFTExfUEFUSEB8JChTSEVMTF9QQVRIX1NRKXwnIFwKICAgICAtZSAnc3xAQERJRkZAQHwkKERJRkZfU1EpfCcgXAotICAgIC1lICdzL0BAR0lUX1ZFUlNJT05AQC8kKEdJVF9WRVJTSU9OKS9nJyBcCiAgICAgLWUgJ3N8QEBMT0NBTEVESVJAQHwkKGxvY2FsZWRpcl9TUSl8ZycgXAogICAgIC1lICdzL0BATk9fQ1VSTEBALyQoTk9fQ1VSTCkvZycgXAogICAgIC1lICdzL0BAVVNFX0dFVFRFWFRfU0NIRU1FQEAvJChVU0VfR0VUVEVYVF9TQ0hFTUUpL2cnIFwKICAgICAtZSAkKEJST0tFTl9QQVRIX0ZJWCkgXAorICAgIC1lICdzfEBAR0lUV0VCRElSQEB8JChnaXR3ZWJkaXJfU1EpfGcnIFwKKyAgICAtZSAnc3xAQFBFUkxAQHwkKFBFUkxfUEFUSF9TUSl8ZycgXAogICAgICRALnNoID4kQCsKIGVuZGVmCiAKLSQocGF0c3Vic3QgJS5zaCwlLCQoU0NSSVBUX1NIKSkgOiAlIDogJS5zaAorR0lULVNDUklQVC1ERUZJTkVTOiBGT1JDRQorCUBGTEFHUz0nJChTQ1JJUFRfREVGSU5FUyknOyBcCisJICAgIGlmIHRlc3QgeCIkJEZMQUdTIiAhPSB4ImBjYXQgJEAgMj4vZGV2L251bGxgIiA7IHRoZW4gXAorCQllY2hvID4mMiAiICAgICogbmV3IHNjcmlwdCBwYXJhbWV0ZXJzIjsgXAorCQllY2hvICIkJEZMQUdTIiA+JEA7IFwKKyAgICAgICAgICAgIGZpCisKKworJChwYXRzdWJzdCAlLnNoLCUsJChTQ1JJUFRfU0gpKSA6ICUgOiAlLnNoIEdJVC1TQ1JJUFQtREVGSU5FUwogCSQoUVVJRVRfR0VOKSQoY21kX211bmdlX3NjcmlwdCkgJiYgXAogCWNobW9kICt4ICRAKyAmJiBcCiAJbXYgJEArICRACiAKLSQoU0NSSVBUX0xJQikgOiAlIDogJS5zaAorJChTQ1JJUFRfTElCKSA6ICUgOiAlLnNoIEdJVC1TQ1JJUFQtREVGSU5FUwogCSQoUVVJRVRfR0VOKSQoY21kX211bmdlX3NjcmlwdCkgJiYgXAogCW12ICRAKyAkQAogCiBpZm5kZWYgTk9fUEVSTAogJChwYXRzdWJzdCAlLnBlcmwsJSwkKFNDUklQVF9QRVJMKSk6IHBlcmwvcGVybC5tYWsKIAotcGVybC9wZXJsLm1hazogR0lULUNGTEFHUyBwZXJsL01ha2VmaWxlIHBlcmwvTWFrZWZpbGUuUEwKK3BlcmwvcGVybC5tYWs6IHBlcmwvUE0uc3RhbXAKKworcGVybC9QTS5zdGFtcDogRk9SQ0UKKwkkKFFVSUVUX0dFTikkKEZJTkQpIHBlcmwgLXR5cGUgZiAtbmFtZSAnKi5wbScgfCBzb3J0ID4kQCsgJiYgXAorCXsgY21wICRAKyAkQCA+L2Rldi9udWxsIDI+L2Rldi9udWxsIHx8IG12ICRAKyAkQDsgfSAmJiBcCisJJChSTSkgJEArCisKK3BlcmwvcGVybC5tYWs6IEdJVC1DRkxBR1MgR0lULVBSRUZJWCBwZXJsL01ha2VmaWxlIHBlcmwvTWFrZWZpbGUuUEwKIAkkKFFVSUVUX1NVQkRJUjApcGVybCAkKFFVSUVUX1NVQkRJUjEpIFBFUkxfUEFUSD0nJChQRVJMX1BBVEhfU1EpJyBwcmVmaXg9JyQocHJlZml4X1NRKScgJChARikKIAotJChwYXRzdWJzdCAlLnBlcmwsJSwkKFNDUklQVF9QRVJMKSk6ICUgOiAlLnBlcmwKKyQocGF0c3Vic3QgJS5wZXJsLCUsJChTQ1JJUFRfUEVSTCkpOiAlIDogJS5wZXJsIEdJVC1WRVJTSU9OLUZJTEUKIAkkKFFVSUVUX0dFTikkKFJNKSAkQCAkQCsgJiYgXAogCUlOU1RMSUJESVI9YE1BS0VGTEFHUz0gJChNQUtFKSAtQyBwZXJsIC1zIC0tbm8tcHJpbnQtZGlyZWN0b3J5IGluc3RsaWJkaXJgICYmIFwKIAlzZWQgLWUgJzF7JyBcCkBAIC0yMDM4LDE0ICsxODA0LDggQEAKIGdpdHdlYjoKIAkkKFFVSUVUX1NVQkRJUjApZ2l0d2ViICQoUVVJRVRfU1VCRElSMSkgYWxsCiAKLWdpdC1pbnN0YXdlYjogZ2l0LWluc3Rhd2ViLnNoIGdpdHdlYgotCSQoUVVJRVRfR0VOKSQoUk0pICRAICRAKyAmJiBcCi0Jc2VkIC1lICcxc3wjIS4qL3NofCMhJChTSEVMTF9QQVRIX1NRKXwnIFwKLQkgICAgLWUgJ3MvQEBHSVRfVkVSU0lPTkBALyQoR0lUX1ZFUlNJT04pL2cnIFwKLQkgICAgLWUgJ3MvQEBOT19DVVJMQEAvJChOT19DVVJMKS9nJyBcCi0JICAgIC1lICdzfEBAR0lUV0VCRElSQEB8JChnaXR3ZWJkaXJfU1EpfGcnIFwKLQkgICAgLWUgJ3N8QEBQRVJMQEB8JChQRVJMX1BBVEhfU1EpfGcnIFwKLQkgICAgJEAuc2ggPiAkQCsgJiYgXAorZ2l0LWluc3Rhd2ViOiBnaXQtaW5zdGF3ZWIuc2ggZ2l0d2ViIEdJVC1TQ1JJUFQtREVGSU5FUworCSQoUVVJRVRfR0VOKSQoY21kX211bmdlX3NjcmlwdCkgJiYgXAogCWNobW9kICt4ICRAKyAmJiBcCiAJbXYgJEArICRACiBlbHNlICMgTk9fUEVSTApAQCAtMjA1OSw3ICsxODE5LDcgQEAKIGVuZGlmICMgTk9fUEVSTAogCiBpZm5kZWYgTk9fUFlUSE9OCi0kKHBhdHN1YnN0ICUucHksJSwkKFNDUklQVF9QWVRIT04pKTogR0lULUNGTEFHUworJChwYXRzdWJzdCAlLnB5LCUsJChTQ1JJUFRfUFlUSE9OKSk6IEdJVC1DRkxBR1MgR0lULVBSRUZJWCBHSVQtUFlUSE9OLVZBUlMKICQocGF0c3Vic3QgJS5weSwlLCQoU0NSSVBUX1BZVEhPTikpOiAlIDogJS5weQogCSQoUVVJRVRfR0VOKSQoUk0pICRAICRAKyAmJiBcCiAJSU5TVExJQkRJUj1gTUFLRUZMQUdTPSAkKE1BS0UpIC1DIGdpdF9yZW1vdGVfaGVscGVycyAtcyBcCkBAIC0yMDgxLDI0ICsxODQxLDMxIEBACiAJbXYgJEArICRACiBlbmRpZiAjIE5PX1BZVEhPTgogCi1jb25maWd1cmU6IGNvbmZpZ3VyZS5hYwotCSQoUVVJRVRfR0VOKSQoUk0pICRAICQ8KyAmJiBcCi0Jc2VkIC1lICdzL0BAR0lUX1ZFUlNJT05AQC8kKEdJVF9WRVJTSU9OKS9nJyBcCi0JICAgICQ8ID4gJDwrICYmIFwKLQlhdXRvY29uZiAtbyAkQCAkPCsgJiYgXAotCSQoUk0pICQ8KworQ09ORklHVVJFX1JFQ0lQRSA9ICQoUk0pIGNvbmZpZ3VyZSBjb25maWd1cmUuYWMrICYmIFwKKwkJICAgc2VkIC1lICdzL0BAR0lUX1ZFUlNJT05AQC8kKEdJVF9WRVJTSU9OKS9nJyBcCisJCQljb25maWd1cmUuYWMgPmNvbmZpZ3VyZS5hYysgJiYgXAorCQkgICBhdXRvY29uZiAtbyBjb25maWd1cmUgY29uZmlndXJlLmFjKyAmJiBcCisJCSAgICQoUk0pIGNvbmZpZ3VyZS5hYysKIAotIyBUaGVzZSBjYW4gcmVjb3JkIEdJVF9WRVJTSU9OCi1naXQubyBnaXQuc3BlYyBodHRwLm8gXAotCSQocGF0c3Vic3QgJS5zaCwlLCQoU0NSSVBUX1NIKSkgXAotCSQocGF0c3Vic3QgJS5wZXJsLCUsJChTQ1JJUFRfUEVSTCkpIFwKLQk6IEdJVC1WRVJTSU9OLUZJTEUKK2NvbmZpZ3VyZTogY29uZmlndXJlLmFjIEdJVC1WRVJTSU9OLUZJTEUKKwkkKFFVSUVUX0dFTikkKENPTkZJR1VSRV9SRUNJUEUpCiAKLVRFU1RfT0JKUyA6PSAkKHBhdHN1YnN0IHRlc3QtJSRYLHRlc3QtJS5vLCQoVEVTVF9QUk9HUkFNUykpCi1HSVRfT0JKUyA6PSAkKExJQl9PQkpTKSAkKEJVSUxUSU5fT0JKUykgJChQUk9HUkFNX09CSlMpICQoVEVTVF9PQkpTKSBcCi0JZ2l0Lm8KLWlmbmRlZiBOT19DVVJMCi0JR0lUX09CSlMgKz0gaHR0cC5vIGh0dHAtd2Fsa2VyLm8gcmVtb3RlLWN1cmwubworaWZkZWYgQVVUT0NPTkZJR1VSRUQKKyMgV2UgYXZvaWQgZGVwZW5kaW5nIG9uICdjb25maWd1cmUnIGhlcmUsIGJlY2F1c2UgaXQgZ2V0cyByZWJ1aWx0CisjIGV2ZXJ5IHRpbWUgR0lULVZFUlNJT04tRklMRSBpcyBtb2RpZmllZCwgb25seSB0byB1cGRhdGUgdGhlIGVtYmVkZGVkCisjIHZlcnNpb24gbnVtYmVyIHN0cmluZywgd2hpY2ggY29uZmlnLnN0YXR1cyBkb2VzIG5vdCBjYXJlIGFib3V0LiAgV2UKKyMgZG8gd2FudCB0byByZWNoZWNrIHdoZW4gdGhlIHBsYXRmb3JtL2Vudmlyb25tZW50IGRldGVjdGlvbiBsb2dpYworIyBjaGFuZ2VzLCBoZW5jZSB0aGlzIGRlcGVuZHMgb24gY29uZmlndXJlLmFjLgorY29uZmlnLnN0YXR1czogY29uZmlndXJlLmFjCisJJChRVUlFVF9HRU4pJChDT05GSUdVUkVfUkVDSVBFKSAmJiBcCisJaWYgdGVzdCAtZiBjb25maWcuc3RhdHVzOyB0aGVuIFwKKwkgIC4vY29uZmlnLnN0YXR1cyAtLXJlY2hlY2s7IFwKKwllbHNlIFwKKwkgIC4vY29uZmlndXJlOyBcCisJZmkKK3JlY29uZmlndXJlIGNvbmZpZy5tYWsuYXV0b2dlbjogY29uZmlnLnN0YXR1cworCSQoUVVJRVRfR0VOKS4vY29uZmlnLnN0YXR1cworLlBIT05ZOiByZWNvbmZpZ3VyZSAjIFRoaXMgaXMgYSBjb252ZW5pZW5jZSB0YXJnZXQuCiBlbmRpZgogCiBYRElGRl9PQkpTICs9IHhkaWZmL3hkaWZmaS5vCkBAIC0yMTE2LDkgKzE4ODMsMTQgQEAKIFZDU1NWTl9PQkpTICs9IHZjcy1zdm4vc3ZuZGlmZi5vCiBWQ1NTVk5fT0JKUyArPSB2Y3Mtc3ZuL3N2bmR1bXAubwogCi1WQ1NTVk5fVEVTVF9PQkpTICs9IHRlc3QtbGluZS1idWZmZXIubwotCi1PQkpFQ1RTIDo9ICQoR0lUX09CSlMpICQoWERJRkZfT0JKUykgJChWQ1NTVk5fT0JKUykKK1RFU1RfT0JKUyA6PSAkKHBhdHN1YnN0IHRlc3QtJSRYLHRlc3QtJS5vLCQoVEVTVF9QUk9HUkFNUykpCitPQkpFQ1RTIDo9ICQoTElCX09CSlMpICQoQlVJTFRJTl9PQkpTKSAkKFBST0dSQU1fT0JKUykgJChURVNUX09CSlMpIFwKKwkkKFhESUZGX09CSlMpIFwKKwkkKFZDU1NWTl9PQkpTKSBcCisJZ2l0Lm8KK2lmbmRlZiBOT19DVVJMCisJT0JKRUNUUyArPSBodHRwLm8gaHR0cC13YWxrZXIubyByZW1vdGUtY3VybC5vCitlbmRpZgogCiBkZXBfZmlsZXMgOj0gJChmb3JlYWNoIGYsJChPQkpFQ1RTKSwkKGRpciAkZikuZGVwZW5kLyQobm90ZGlyICRmKS5kKQogZGVwX2RpcnMgOj0gJChhZGRzdWZmaXggLmRlcGVuZCwkKHNvcnQgJChkaXIgJChPQkpFQ1RTKSkpKQpAQCAtMjEyOSw3ICsxOTAxLDcgQEAKIAogbWlzc2luZ19kZXBfZGlycyA6PSAkKGZpbHRlci1vdXQgJCh3aWxkY2FyZCAkKGRlcF9kaXJzKSksJChkZXBfZGlycykpCiBkZXBfZmlsZSA9ICQoZGlyICRAKS5kZXBlbmQvJChub3RkaXIgJEApLmQKLWRlcF9hcmdzID0gLU1GICQoZGVwX2ZpbGUpIC1NTUQgLU1QCitkZXBfYXJncyA9IC1NRiAkKGRlcF9maWxlKSAtTVEgJEAgLU1NRCAtTVAKIGlmZGVmIENIRUNLX0hFQURFUl9ERVBFTkRFTkNJRVMKICQoZXJyb3IgY2Fubm90IGNvbXB1dGUgaGVhZGVyIGRlcGVuZGVuY2llcyBvdXRzaWRlIGEgbm9ybWFsIGJ1aWxkLiBcCiBQbGVhc2UgdW5zZXQgQ0hFQ0tfSEVBREVSX0RFUEVOREVOQ0lFUyBhbmQgdHJ5IGFnYWluKQpAQCAtMjIwMSw3ICsxOTczLDcgQEAKIGVuZGlmCiAKICUuczogJS5jIEdJVC1DRkxBR1MgRk9SQ0UKLQkkKFFVSUVUX0NDKSQoQ0MpIC1TICQoQUxMX0NGTEFHUykgJChFWFRSQV9DUFBGTEFHUykgJDwKKwkkKFFVSUVUX0NDKSQoQ0MpIC1vICRAIC1TICQoQUxMX0NGTEFHUykgJChFWFRSQV9DUFBGTEFHUykgJDwKIAogaWZkZWYgVVNFX0NPTVBVVEVEX0hFQURFUl9ERVBFTkRFTkNJRVMKICMgVGFrZSBhZHZhbnRhZ2Ugb2YgZ2NjJ3Mgb24tdGhlLWZseSBkZXBlbmRlbmN5IGdlbmVyYXRpb24KQEAgLTIyMTcsNTEgKzE5ODksMzIgQEAKICMgRGVwZW5kZW5jaWVzIG9uIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGhlYWRlcnMgc3VjaCBhcyBjb21tb24tY21kcy5oCiAjIHNob3VsZCBfbm90XyBiZSBpbmNsdWRlZCBoZXJlLCBzaW5jZSB0aGV5IGFyZSBuZWNlc3NhcnkgZXZlbiB3aGVuCiAjIGJ1aWxkaW5nIGFuIG9iamVjdCBmb3IgdGhlIGZpcnN0IHRpbWUuCi0jCi0jIFhYWC4gUGxlYXNlIGNoZWNrIG9jY2FzaW9uYWxseSB0aGF0IHRoZXNlIGluY2x1ZGUgYWxsIGRlcGVuZGVuY2llcwotIyBnY2MgZGV0ZWN0cyEKIAotJChHSVRfT0JKUyk6ICQoTElCX0gpCi1idWlsdGluL2JyYW5jaC5vIGJ1aWx0aW4vY2hlY2tvdXQubyBidWlsdGluL2Nsb25lLm8gYnVpbHRpbi9yZXNldC5vIGJyYW5jaC5vIHRyYW5zcG9ydC5vOiBicmFuY2guaAotYnVpbHRpbi9idW5kbGUubyBidW5kbGUubyB0cmFuc3BvcnQubzogYnVuZGxlLmgKLWJ1aWx0aW4vYmlzZWN0LS1oZWxwZXIubyBidWlsdGluL3Jldi1saXN0Lm8gYmlzZWN0Lm86IGJpc2VjdC5oCi1idWlsdGluL2Nsb25lLm8gYnVpbHRpbi9mZXRjaC1wYWNrLm8gdHJhbnNwb3J0Lm86IGZldGNoLXBhY2suaAotYnVpbHRpbi9pbmRleC1wYWNrLm8gYnVpbHRpbi9ncmVwLm8gYnVpbHRpbi9wYWNrLW9iamVjdHMubyB0cmFuc3BvcnQtaGVscGVyLm8gdGhyZWFkLXV0aWxzLm86IHRocmVhZC11dGlscy5oCi1idWlsdGluL3NlbmQtcGFjay5vIHRyYW5zcG9ydC5vOiBzZW5kLXBhY2suaAotYnVpbHRpbi9sb2cubyBidWlsdGluL3Nob3J0bG9nLm86IHNob3J0bG9nLmgKLWJ1aWx0aW4vcHJ1bmUubyBidWlsdGluL3JlZmxvZy5vIHJlYWNoYWJsZS5vOiByZWFjaGFibGUuaAotYnVpbHRpbi9jb21taXQubyBidWlsdGluL3JldmVydC5vIHd0LXN0YXR1cy5vOiB3dC1zdGF0dXMuaAotYnVpbHRpbi90YXItdHJlZS5vIGFyY2hpdmUtdGFyLm86IHRhci5oCi1jb25uZWN0Lm8gdHJhbnNwb3J0Lm8gdXJsLm8gaHR0cC1iYWNrZW5kLm86IHVybC5oCi1idWlsdGluL2JyYW5jaC5vIGJ1aWx0aW4vY29tbWl0Lm8gYnVpbHRpbi90YWcubyBjb2x1bW4ubyBoZWxwLm8gcGFnZXIubzogY29sdW1uLmgKLWh0dHAtZmV0Y2gubyBodHRwLXdhbGtlci5vIHJlbW90ZS1jdXJsLm8gdHJhbnNwb3J0Lm8gd2Fsa2VyLm86IHdhbGtlci5oCi1odHRwLm8gaHR0cC13YWxrZXIubyBodHRwLXB1c2gubyBodHRwLWZldGNoLm8gcmVtb3RlLWN1cmwubzogaHR0cC5oIHVybC5oCi0KLXhkaWZmLWludGVyZmFjZS5vICQoWERJRkZfT0JKUyk6ICQoWERJRkZfSCkKLQotJChWQ1NTVk5fT0JKUykgJChWQ1NTVk5fVEVTVF9PQkpTKTogJChMSUJfSCkgJChWQ1NTVk5fSCkKKyQoT0JKRUNUUyk6ICQoTElCX0gpCiBlbmRpZgogCitleGVjX2NtZC5zcCBleGVjX2NtZC5zIGV4ZWNfY21kLm86IEdJVC1QUkVGSVgKIGV4ZWNfY21kLnNwIGV4ZWNfY21kLnMgZXhlY19jbWQubzogRVhUUkFfQ1BQRkxBR1MgPSBcCiAJJy1ER0lUX0VYRUNfUEFUSD0iJChnaXRleGVjZGlyX1NRKSInIFwKIAknLURCSU5ESVI9IiQoYmluZGlyX3JlbGF0aXZlX1NRKSInIFwKIAknLURQUkVGSVg9IiQocHJlZml4X1NRKSInCiAKK2J1aWx0aW4vaW5pdC1kYi5zcCBidWlsdGluL2luaXQtZGIucyBidWlsdGluL2luaXQtZGIubzogR0lULVBSRUZJWAogYnVpbHRpbi9pbml0LWRiLnNwIGJ1aWx0aW4vaW5pdC1kYi5zIGJ1aWx0aW4vaW5pdC1kYi5vOiBFWFRSQV9DUFBGTEFHUyA9IFwKIAktRERFRkFVTFRfR0lUX1RFTVBMQVRFX0RJUj0nIiQodGVtcGxhdGVfZGlyX1NRKSInCiAKK2NvbmZpZy5zcCBjb25maWcucyBjb25maWcubzogR0lULVBSRUZJWAogY29uZmlnLnNwIGNvbmZpZy5zIGNvbmZpZy5vOiBFWFRSQV9DUFBGTEFHUyA9IFwKIAktREVUQ19HSVRDT05GSUc9JyIkKEVUQ19HSVRDT05GSUdfU1EpIicKIAorYXR0ci5zcCBhdHRyLnMgYXR0ci5vOiBHSVQtUFJFRklYCiBhdHRyLnNwIGF0dHIucyBhdHRyLm86IEVYVFJBX0NQUEZMQUdTID0gXAogCS1ERVRDX0dJVEFUVFJJQlVURVM9JyIkKEVUQ19HSVRBVFRSSUJVVEVTX1NRKSInCiAKK2dldHRleHQuc3AgZ2V0dGV4dC5zIGdldHRleHQubzogR0lULVBSRUZJWAogZ2V0dGV4dC5zcCBnZXR0ZXh0LnMgZ2V0dGV4dC5vOiBFWFRSQV9DUFBGTEFHUyA9IFwKIAktREdJVF9MT0NBTEVfUEFUSD0nIiQobG9jYWxlZGlyX1NRKSInCiAKLWh0dHAuc3AgaHR0cC5zIGh0dHAubzogRVhUUkFfQ1BQRkxBR1MgPSBcCi0JLURHSVRfSFRUUF9VU0VSX0FHRU5UPSciZ2l0LyQoR0lUX1ZFUlNJT04pIicKLQogaWZkZWYgTk9fRVhQQVQKIGh0dHAtd2Fsa2VyLnNwIGh0dHAtd2Fsa2VyLnMgaHR0cC13YWxrZXIubzogRVhUUkFfQ1BQRkxBR1MgPSAtRE5PX0VYUEFUCiBlbmRpZgpAQCAtMjI5MCw2ICsyMDQzLDEwIEBACiAJJChRVUlFVF9MSU5LKSQoQ0MpICQoQUxMX0NGTEFHUykgLW8gJEAgJChBTExfTERGTEFHUykgJChmaWx0ZXIgJS5vLCReKSBcCiAJCSQoTElCUykgJChDVVJMX0xJQkNVUkwpICQoRVhQQVRfTElCRVhQQVQpCiAKK2dpdC1yZW1vdGUtdGVzdHN2biRYOiByZW1vdGUtdGVzdHN2bi5vIEdJVC1MREZMQUdTICQoR0lUTElCUykgJChWQ1NTVk5fTElCKQorCSQoUVVJRVRfTElOSykkKENDKSAkKEFMTF9DRkxBR1MpIC1vICRAICQoQUxMX0xERkxBR1MpICQoZmlsdGVyICUubywkXikgJChMSUJTKSBcCisJJChWQ1NTVk5fTElCKQorCiAkKFJFTU9URV9DVVJMX0FMSUFTRVMpOiAkKFJFTU9URV9DVVJMX1BSSU1BUlkpCiAJJChRVUlFVF9MTkNQKSQoUk0pICRAICYmIFwKIAlsbiAkPCAkQCAyPi9kZXYvbnVsbCB8fCBcCkBAIC0yMzMzLDkgKzIwOTAsMTAgQEAKIAktLWZyb20tY29kZT1VVEYtOAogWEdFVFRFWFRfRkxBR1NfQyA9ICQoWEdFVFRFWFRfRkxBR1MpIC0tbGFuZ3VhZ2U9QyBcCiAJLS1rZXl3b3JkPV8gLS1rZXl3b3JkPU5fIC0ta2V5d29yZD0iUV86MSwyIgotWEdFVFRFWFRfRkxBR1NfU0ggPSAkKFhHRVRURVhUX0ZMQUdTKSAtLWxhbmd1YWdlPVNoZWxsCitYR0VUVEVYVF9GTEFHU19TSCA9ICQoWEdFVFRFWFRfRkxBR1MpIC0tbGFuZ3VhZ2U9U2hlbGwgXAorCS0ta2V5d29yZD1nZXR0ZXh0bG4gLS1rZXl3b3JkPWV2YWxfZ2V0dGV4dGxuCiBYR0VUVEVYVF9GTEFHU19QRVJMID0gJChYR0VUVEVYVF9GTEFHUykgLS1rZXl3b3JkPV9fIC0tbGFuZ3VhZ2U9UGVybAotTE9DQUxJWkVEX0MgOj0gJChDX09CSjpvPWMpICQoTElCX0gpICQoWERJRkZfSCkgJChWQ1NTVk5fSCkgJChNSVNDX0gpCitMT0NBTElaRURfQyA6PSAkKENfT0JKOm89YykgJChMSUJfSCkgJChHRU5FUkFURURfSCkKIExPQ0FMSVpFRF9TSCA6PSAkKFNDUklQVF9TSCkKIExPQ0FMSVpFRF9QRVJMIDo9ICQoU0NSSVBUX1BFUkwpCiAKQEAgLTIzODIsMTQgKzIxNDAsMjIgQEAKIAkkKEZJTkRfU09VUkNFX0ZJTEVTKSB8IHhhcmdzIGNzY29wZSAtYgogCiAjIyMgRGV0ZWN0IHByZWZpeCBjaGFuZ2VzCi1UUkFDS19DRkxBR1MgPSAkKENDKTokKHN1YnN0ICcsJ1wnJywkKEFMTF9DRkxBR1MpKTpcCi0gICAgICAgICAgICAgJChiaW5kaXJfU1EpOiQoZ2l0ZXhlY2Rpcl9TUSk6JCh0ZW1wbGF0ZV9kaXJfU1EpOiQocHJlZml4X1NRKTpcCi0gICAgICAgICAgICAgJChsb2NhbGVkaXJfU1EpOiQoVVNFX0dFVFRFWFRfU0NIRU1FKQorVFJBQ0tfUFJFRklYID0gJChiaW5kaXJfU1EpOiQoZ2l0ZXhlY2Rpcl9TUSk6JCh0ZW1wbGF0ZV9kaXJfU1EpOiQocHJlZml4X1NRKTpcCisJCSQobG9jYWxlZGlyX1NRKQorCitHSVQtUFJFRklYOiBGT1JDRQorCUBGTEFHUz0nJChUUkFDS19QUkVGSVgpJzsgXAorCWlmIHRlc3QgeCIkJEZMQUdTIiAhPSB4ImBjYXQgR0lULVBSRUZJWCAyPi9kZXYvbnVsbGAiIDsgdGhlbiBcCisJCWVjaG8gPiYyICIgICAgKiBuZXcgcHJlZml4IGZsYWdzIjsgXAorCQllY2hvICIkJEZMQUdTIiA+R0lULVBSRUZJWDsgXAorCWZpCisKK1RSQUNLX0NGTEFHUyA9ICQoQ0MpOiQoc3Vic3QgJywnXCcnLCQoQUxMX0NGTEFHUykpOiQoVVNFX0dFVFRFWFRfU0NIRU1FKQogCiBHSVQtQ0ZMQUdTOiBGT1JDRQogCUBGTEFHUz0nJChUUkFDS19DRkxBR1MpJzsgXAogCSAgICBpZiB0ZXN0IHgiJCRGTEFHUyIgIT0geCJgY2F0IEdJVC1DRkxBR1MgMj4vZGV2L251bGxgIiA7IHRoZW4gXAotCQllY2hvIDE+JjIgIiAgICAqIG5ldyBidWlsZCBmbGFncyBvciBwcmVmaXgiOyBcCisJCWVjaG8gPiYyICIgICAgKiBuZXcgYnVpbGQgZmxhZ3MiOyBcCiAJCWVjaG8gIiQkRkxBR1MiID5HSVQtQ0ZMQUdTOyBcCiAgICAgICAgICAgICBmaQogCkBAIC0yMzk4LDcgKzIxNjQsNyBAQAogR0lULUxERkxBR1M6IEZPUkNFCiAJQEZMQUdTPSckKFRSQUNLX0xERkxBR1MpJzsgXAogCSAgICBpZiB0ZXN0IHgiJCRGTEFHUyIgIT0geCJgY2F0IEdJVC1MREZMQUdTIDI+L2Rldi9udWxsYCIgOyB0aGVuIFwKLQkJZWNobyAxPiYyICIgICAgKiBuZXcgbGluayBmbGFncyI7IFwKKwkJZWNobyA+JjIgIiAgICAqIG5ldyBsaW5rIGZsYWdzIjsgXAogCQllY2hvICIkJEZMQUdTIiA+R0lULUxERkxBR1M7IFwKICAgICAgICAgICAgIGZpCiAKQEAgLTI0NDAsMTQgKzIyMDYsMTQgQEAKIAlAZWNobyBHSVRfUEVSRl9NQUtFX09QVFM9XCcnJChzdWJzdCAnLCdcJycsJChzdWJzdCAnLCdcJycsJChHSVRfUEVSRl9NQUtFX09QVFMpKSknXCcgPj4kQAogZW5kaWYKIAotIyMjIERldGVjdCBUY2svVGsgaW50ZXJwcmV0ZXIgcGF0aCBjaGFuZ2VzCi1pZm5kZWYgTk9fVENMVEsKLVRSQUNLX1ZBUlMgPSAkKHN1YnN0ICcsJ1wnJywtRFRDTFRLX1BBVEg9JyQoVENMVEtfUEFUSF9TUSknKQorIyMjIERldGVjdCBQeXRob24gaW50ZXJwcmV0ZXIgcGF0aCBjaGFuZ2VzCitpZm5kZWYgTk9fUFlUSE9OCitUUkFDS19QWVRIT04gPSAkKHN1YnN0ICcsJ1wnJywtRFBZVEhPTl9QQVRIPSckKFBZVEhPTl9QQVRIX1NRKScpCiAKLUdJVC1HVUktVkFSUzogRk9SQ0UKLQlAVkFSUz0nJChUUkFDS19WQVJTKSc7IFwKK0dJVC1QWVRIT04tVkFSUzogRk9SQ0UKKwlAVkFSUz0nJChUUkFDS19QWVRIT04pJzsgXAogCSAgICBpZiB0ZXN0IHgiJCRWQVJTIiAhPSB4ImBjYXQgJEAgMj4vZGV2L251bGxgIiA7IHRoZW4gXAotCQllY2hvIDE+JjIgIiAgICAqIG5ldyBUY2wvVGsgaW50ZXJwcmV0ZXIgbG9jYXRpb24iOyBcCisJCWVjaG8gPiYyICIgICAgKiBuZXcgUHl0aG9uIGludGVycHJldGVyIGxvY2F0aW9uIjsgXAogCQllY2hvICIkJFZBUlMiID4kQDsgXAogICAgICAgICAgICAgZmkKIGVuZGlmCkBAIC0yNDY4LDYgKzIyMzQsNyBAQAogIyB3aXRoIHRoYXQuCiAKIGV4cG9ydCBOT19TVk5fVEVTVFMKK2V4cG9ydCBURVNUX05PX01BTExPQ19DSEVDSwogCiAjIyMgVGVzdGluZyBydWxlcwogCkBAIC0yNTE4LDkgKzIyODUsNiBAQAogCQlleGl0IDE7IFwKIAlmaQogCi1yZW1vdmUtZGFzaGVzOgotCS4vZml4dXAtYnVpbHRpbnMgJChCVUlMVF9JTlMpICQoUFJPR1JBTVMpICQoU0NSSVBUUykKLQogIyMjIEluc3RhbGxhdGlvbiBydWxlcwogCiBpZm5lcSAoJChmaWx0ZXIgLyUsJChmaXJzdHdvcmQgJCh0ZW1wbGF0ZV9kaXIpKSksKQpAQCAtMjY0MSwxMSArMjQwNSwxMSBAQAogCiAjIyMgTWFpbnRhaW5lcidzIGRpc3QgcnVsZXMKIAotZ2l0LnNwZWM6IGdpdC5zcGVjLmluCitnaXQuc3BlYzogZ2l0LnNwZWMuaW4gR0lULVZFUlNJT04tRklMRQogCXNlZCAtZSAncy9AQFZFUlNJT05AQC8kKEdJVF9WRVJTSU9OKS9nJyA8ICQ8ID4gJEArCiAJbXYgJEArICRACiAKLUdJVF9UQVJOQU1FPWdpdC0kKEdJVF9WRVJTSU9OKQorR0lUX1RBUk5BTUUgPSBnaXQtJChHSVRfVkVSU0lPTikKIGRpc3Q6IGdpdC5zcGVjIGdpdC1hcmNoaXZlJChYKSBjb25maWd1cmUKIAkuL2dpdC1hcmNoaXZlIC0tZm9ybWF0PXRhciBcCiAJCS0tcHJlZml4PSQoR0lUX1RBUk5BTUUpLyBIRUFEXnt0cmVlfSA+ICQoR0lUX1RBUk5BTUUpLnRhcgpAQCAtMjY5MSw2ICsyNDU1LDkgQEAKIAogZGlzdGNsZWFuOiBjbGVhbgogCSQoUk0pIGNvbmZpZ3VyZQorCSQoUk0pIGNvbmZpZy5sb2cgY29uZmlnLnN0YXR1cyBjb25maWcuY2FjaGUKKwkkKFJNKSBjb25maWcubWFrLmF1dG9nZW4gY29uZmlnLm1hay5hcHBlbmQKKwkkKFJNKSAtciBhdXRvbTR0ZS5jYWNoZQogCiBwcm9maWxlLWNsZWFuOgogCSQoUk0pICQoYWRkc3VmZml4ICouZ2NkYSwkKGFkZHByZWZpeCAkKFBST0ZJTEVfRElSKS8sICQob2JqZWN0X2RpcnMpKSkKQEAgLTI3MDEsMTIgKzI0NjgsOSBAQAogCQlidWlsdGluLyoubyAkKExJQl9GSUxFKSAkKFhESUZGX0xJQikgJChWQ1NTVk5fTElCKQogCSQoUk0pICQoQUxMX1BST0dSQU1TKSAkKFNDUklQVF9MSUIpICQoQlVJTFRfSU5TKSBnaXQkWAogCSQoUk0pICQoVEVTVF9QUk9HUkFNUykKLQkkKFJNKSAtciBiaW4td3JhcHBlcnMKLQkkKFJNKSAtciAkKGRlcF9kaXJzKQorCSQoUk0pIC1yIGJpbi13cmFwcGVycyAkKGRlcF9kaXJzKQogCSQoUk0pIC1yIHBvL2J1aWxkLwogCSQoUk0pICouc3BlYyAqLnB5YyAqLnB5byAqLyoucHljICovKi5weW8gY29tbW9uLWNtZHMuaCAkKEVUQUdTX1RBUkdFVCkgdGFncyBjc2NvcGUqCi0JJChSTSkgLXIgYXV0b200dGUuY2FjaGUKLQkkKFJNKSBjb25maWcubG9nIGNvbmZpZy5tYWsuYXV0b2dlbiBjb25maWcubWFrLmFwcGVuZCBjb25maWcuc3RhdHVzIGNvbmZpZy5jYWNoZQogCSQoUk0pIC1yICQoR0lUX1RBUk5BTUUpIC5kb2MtdG1wLWRpcgogCSQoUk0pICQoR0lUX1RBUk5BTUUpLnRhci5neiBnaXQtY29yZV8kKEdJVF9WRVJTSU9OKS0qLnRhci5negogCSQoUk0pICQoaHRtbGRvY3MpLnRhci5neiAkKG1hbnBhZ2VzKS50YXIuZ3oKQEAgLTI3MjQsNyArMjQ4OCw4IEBACiAJJChNQUtFKSAtQyBnaXRrLWdpdCBjbGVhbgogCSQoTUFLRSkgLUMgZ2l0LWd1aSBjbGVhbgogZW5kaWYKLQkkKFJNKSBHSVQtVkVSU0lPTi1GSUxFIEdJVC1DRkxBR1MgR0lULUxERkxBR1MgR0lULUdVSS1WQVJTIEdJVC1CVUlMRC1PUFRJT05TCisJJChSTSkgR0lULVZFUlNJT04tRklMRSBHSVQtQ0ZMQUdTIEdJVC1MREZMQUdTIEdJVC1CVUlMRC1PUFRJT05TCisJJChSTSkgR0lULVVTRVItQUdFTlQgR0lULVBSRUZJWCBHSVQtU0NSSVBULURFRklORVMgR0lULVBZVEhPTi1WQVJTCiAKIC5QSE9OWTogYWxsIGluc3RhbGwgcHJvZmlsZS1jbGVhbiBjbGVhbiBzdHJpcAogLlBIT05ZOiBzaGVsbF9jb21wYXRpYmlsaXR5X3Rlc3QgcGxlYXNlX3NldF9TSEVMTF9QQVRIX3RvX2FfbW9yZV9tb2Rlcm5fc2hlbGwKQEAgLTI3MzIsOCArMjQ5NywxMyBAQAogCiAjIyMgQ2hlY2sgZG9jdW1lbnRhdGlvbgogIworQUxMX0NPTU1BTkRTID0gJChBTExfUFJPR1JBTVMpICQoU0NSSVBUX0xJQikgJChCVUlMVF9JTlMpCitBTExfQ09NTUFORFMgKz0gZ2l0CitBTExfQ09NTUFORFMgKz0gZ2l0aworQUxMX0NPTU1BTkRTICs9IGdpdHdlYgorQUxMX0NPTU1BTkRTICs9IGdpdC1ndWkgZ2l0LWNpdG9vbAogY2hlY2stZG9jczo6Ci0JQChmb3IgdiBpbiAkKEFMTF9QUk9HUkFNUykgJChTQ1JJUFRfTElCKSAkKEJVSUxUX0lOUykgZ2l0IGdpdGs7IFwKKwlAKGZvciB2IGluICQoQUxMX0NPTU1BTkRTKTsgXAogCWRvIFwKIAkJY2FzZSAiJCR2IiBpbiBcCiAJCWdpdC1tZXJnZS1vY3RvcHVzIHwgZ2l0LW1lcmdlLW91cnMgfCBnaXQtbWVyZ2UtcmVjdXJzaXZlIHwgXApAQCAtMjc1NSwzNSArMjUyNSwxMyBAQAogCQlzZWQgLWUgJy9eIy9kJyBcCiAJCSAgICAtZSAncy9bIAldLiovLycgXAogCQkgICAgLWUgJ3MvXi9saXN0ZWQgLycgY29tbWFuZC1saXN0LnR4dDsgXAotCQlscyAtMSBEb2N1bWVudGF0aW9uL2dpdCp0eHQgfCBcCisJCSQoTUFLRSkgLUMgRG9jdW1lbnRhdGlvbiBwcmludC1tYW4xIHwgXAorCQlncmVwICdcLnR4dCQkJyB8IFwKIAkJc2VkIC1lICdzfERvY3VtZW50YXRpb24vfGRvY3VtZW50ZWQgfCcgXAogCQkgICAgLWUgJ3MvXC50eHQvLyc7IFwKIAkpIHwgd2hpbGUgcmVhZCBob3cgY21kOyBcCiAJZG8gXAotCQljYXNlICIkJGhvdywkJGNtZCIgaW4gXAotCQkqLGdpdC1jaXRvb2wgfCBcCi0JCSosZ2l0LWd1aSB8IFwKLQkJKixnaXQtaGVscCB8IFwKLQkJZG9jdW1lbnRlZCxnaXRhdHRyaWJ1dGVzIHwgXAotCQlkb2N1bWVudGVkLGdpdGlnbm9yZSB8IFwKLQkJZG9jdW1lbnRlZCxnaXRtb2R1bGVzIHwgXAotCQlkb2N1bWVudGVkLGdpdGNsaSB8IFwKLQkJZG9jdW1lbnRlZCxnaXQtdG9vbHMgfCBcCi0JCWRvY3VtZW50ZWQsZ2l0Y29yZS10dXRvcmlhbCB8IFwKLQkJZG9jdW1lbnRlZCxnaXRjdnMtbWlncmF0aW9uIHwgXAotCQlkb2N1bWVudGVkLGdpdGRpZmZjb3JlIHwgXAotCQlkb2N1bWVudGVkLGdpdGdsb3NzYXJ5IHwgXAotCQlkb2N1bWVudGVkLGdpdGhvb2tzIHwgXAotCQlkb2N1bWVudGVkLGdpdHJlcG9zaXRvcnktbGF5b3V0IHwgXAotCQlkb2N1bWVudGVkLGdpdHJldmlzaW9ucyB8IFwKLQkJZG9jdW1lbnRlZCxnaXR0dXRvcmlhbCB8IFwKLQkJZG9jdW1lbnRlZCxnaXR0dXRvcmlhbC0yIHwgXAotCQlkb2N1bWVudGVkLGdpdC1iaXNlY3QtbGsyMDA5IHwgXAotCQlkb2N1bWVudGVkLGdpdC1yZW1vdGUtaGVscGVycyB8IFwKLQkJZG9jdW1lbnRlZCxnaXR3b3JrZmxvd3MgfCBcCi0JCXNlbnRpbmVsLG5vdCxtYXRjaGluZyxpcyxvayApIGNvbnRpbnVlIDs7IFwKLQkJZXNhYzsgXAotCQljYXNlICIgJChBTExfUFJPR1JBTVMpICQoU0NSSVBUX0xJQikgJChCVUlMVF9JTlMpIGdpdCBnaXRrICIgaW4gXAorCQljYXNlICIgJChBTExfQ09NTUFORFMpICIgaW4gXAogCQkqIiAkJGNtZCAiKikJOzsgXAogCQkqKSBlY2hvICJyZW1vdmVkIGJ1dCAkJGhvdzogJCRjbWQiIDs7IFwKIAkJZXNhYzsgXApkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IGQyNjkwZWMuLjE1YThlMjMgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsNiArMSw2IEBACiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLQlHSVQgLSB0aGUgc3R1cGlkIGNvbnRlbnQgdHJhY2tlcgorCUdpdCAtIHRoZSBzdHVwaWQgY29udGVudCB0cmFja2VyCiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIApAQCAtMTksOSArMTksMTAgQEAKIHVudXN1YWxseSByaWNoIGNvbW1hbmQgc2V0IHRoYXQgcHJvdmlkZXMgYm90aCBoaWdoLWxldmVsIG9wZXJhdGlvbnMKIGFuZCBmdWxsIGFjY2VzcyB0byBpbnRlcm5hbHMuCiAKLUdpdCBpcyBhbiBPcGVuIFNvdXJjZSBwcm9qZWN0IGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotSXQgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBMaW51cyBUb3J2YWxkcyB3aXRoIGhlbHAgb2YgYSBncm91cCBvZgotaGFja2VycyBhcm91bmQgdGhlIG5ldC4gSXQgaXMgY3VycmVudGx5IG1haW50YWluZWQgYnkgSnVuaW8gQyBIYW1hbm8uCitHaXQgaXMgYW4gT3BlbiBTb3VyY2UgcHJvamVjdCBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKK0xpY2Vuc2UgdmVyc2lvbiAyIChzb21lIHBhcnRzIG9mIGl0IGFyZSB1bmRlciBkaWZmZXJlbnQgbGljZW5zZXMsCitjb21wYXRpYmxlIHdpdGggdGhlIEdQTHYyKS4gSXQgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBMaW51cworVG9ydmFsZHMgd2l0aCBoZWxwIG9mIGEgZ3JvdXAgb2YgaGFja2VycyBhcm91bmQgdGhlIG5ldC4KIAogUGxlYXNlIHJlYWQgdGhlIGZpbGUgSU5TVEFMTCBmb3IgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucy4KIApAQCAtNDYsMTEgKzQ3LDEwIEBACiBEb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzIGZvciBpbnN0cnVjdGlvbnMgb24gcGF0Y2ggc3VibWlzc2lvbikuCiBUbyBzdWJzY3JpYmUgdG8gdGhlIGxpc3QsIHNlbmQgYW4gZW1haWwgd2l0aCBqdXN0ICJzdWJzY3JpYmUgZ2l0IiBpbgogdGhlIGJvZHkgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZy4gVGhlIG1haWxpbmcgbGlzdCBhcmNoaXZlcyBhcmUKLWF2YWlsYWJsZSBhdCBodHRwOi8vbWFyYy50aGVhaW1zZ3JvdXAuY29tLz9sPWdpdCBhbmQgb3RoZXIgYXJjaGl2YWwKLXNpdGVzLgorYXZhaWxhYmxlIGF0IGh0dHA6Ly9uZXdzLmdtYW5lLm9yZy9nbWFuZS5jb21wLnZlcnNpb24tY29udHJvbC5naXQvLAoraHR0cDovL21hcmMuaW5mby8/bD1naXQgYW5kIG90aGVyIGFyY2hpdmFsIHNpdGVzLgogCi1UaGUgbWVzc2FnZXMgdGl0bGVkICJBIG5vdGUgZnJvbSB0aGUgbWFpbnRhaW5lciIsICJXaGF0J3MgaW4KLWdpdC5naXQgKHN0YWJsZSkiIGFuZCAiV2hhdCdzIGNvb2tpbmcgaW4gZ2l0LmdpdCAodG9waWNzKSIgYW5kCi10aGUgZGlzY3Vzc2lvbiBmb2xsb3dpbmcgdGhlbSBvbiB0aGUgbWFpbGluZyBsaXN0IGdpdmUgYSBnb29kCi1yZWZlcmVuY2UgZm9yIHByb2plY3Qgc3RhdHVzLCBkZXZlbG9wbWVudCBkaXJlY3Rpb24gYW5kCi1yZW1haW5pbmcgdGFza3MuCitUaGUgbWFpbnRhaW5lciBmcmVxdWVudGx5IHNlbmRzIHRoZSAiV2hhdCdzIGNvb2tpbmciIHJlcG9ydHMgdGhhdAorbGlzdCB0aGUgY3VycmVudCBzdGF0dXMgb2YgdmFyaW91cyBkZXZlbG9wbWVudCB0b3BpY3MgdG8gdGhlIG1haWxpbmcKK2xpc3QuICBUaGUgZGlzY3Vzc2lvbiBmb2xsb3dpbmcgdGhlbSBnaXZlIGEgZ29vZCByZWZlcmVuY2UgZm9yCitwcm9qZWN0IHN0YXR1cywgZGV2ZWxvcG1lbnQgZGlyZWN0aW9uIGFuZCByZW1haW5pbmcgdGFza3MuCmRpZmYgLS1naXQgYS9SZWxOb3RlcyBiL1JlbE5vdGVzCmluZGV4IGJjYjRmYjkuLmE1MjAxMjEgMTIwMDAwCi0tLSBhL1JlbE5vdGVzCisrKyBiL1JlbE5vdGVzCkBAIC0xICsxIEBACi1Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4xMS50eHQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitEb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4zLjMudHh0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYWJzcGF0aC5jIGIvYWJzcGF0aC5jCmluZGV4IGYwNGFjMTguLjQwY2RjNDYgMTAwNjQ0Ci0tLSBhL2Fic3BhdGguYworKysgYi9hYnNwYXRoLmMKQEAgLTE1LDE2ICsxNSwzNCBAQAogI2RlZmluZSBNQVhERVBUSCA1CiAKIC8qCi0gKiBVc2UgdGhpcyB0byBnZXQgdGhlIHJlYWwgcGF0aCwgaS5lLiByZXNvbHZlIGxpbmtzLiBJZiB5b3Ugd2FudCBhbgotICogYWJzb2x1dGUgcGF0aCBidXQgZG9uJ3QgbWluZCBsaW5rcywgdXNlIGFic29sdXRlX3BhdGguCisgKiBSZXR1cm4gdGhlIHJlYWwgcGF0aCAoaS5lLiwgYWJzb2x1dGUgcGF0aCwgd2l0aCBzeW1saW5rcyByZXNvbHZlZAorICogYW5kIGV4dHJhIHNsYXNoZXMgcmVtb3ZlZCkgZXF1aXZhbGVudCB0byB0aGUgc3BlY2lmaWVkIHBhdGguICAoSWYKKyAqIHlvdSB3YW50IGFuIGFic29sdXRlIHBhdGggYnV0IGRvbid0IG1pbmQgbGlua3MsIHVzZQorICogYWJzb2x1dGVfcGF0aCgpLikgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBwb2ludGVyIHRvIGEgc3RhdGljCisgKiBidWZmZXIuCisgKgorICogVGhlIGlucHV0IGFuZCBhbGwgaW50ZXJtZWRpYXRlIHBhdGhzIG11c3QgYmUgc2hvcnRlciB0aGFuIE1BWF9QQVRILgorICogVGhlIGRpcmVjdG9yeSBwYXJ0IG9mIHBhdGggKGkuZS4sIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGxhc3QKKyAqIGRpcl9zZXApIG11c3QgZGVub3RlIGEgdmFsaWQsIGV4aXN0aW5nIGRpcmVjdG9yeSwgYnV0IHRoZSBsYXN0CisgKiBjb21wb25lbnQgbmVlZCBub3QgZXhpc3QuICBJZiBkaWVfb25fZXJyb3IgaXMgc2V0LCB0aGVuIGRpZSB3aXRoIGFuCisgKiBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlIGlmIHRoZXJlIGlzIGEgcHJvYmxlbS4gIE90aGVyd2lzZSwgcmV0dXJuCisgKiBOVUxMIG9uIGVycm9ycyAod2l0aG91dCBnZW5lcmF0aW5nIGFueSBvdXRwdXQpLgogICoKICAqIElmIHBhdGggaXMgb3VyIGJ1ZmZlciwgdGhlbiByZXR1cm4gcGF0aCwgYXMgaXQncyBhbHJlYWR5IHdoYXQgdGhlCiAgKiB1c2VyIHdhbnRzLgogICovCi1jb25zdCBjaGFyICpyZWFsX3BhdGgoY29uc3QgY2hhciAqcGF0aCkKK3N0YXRpYyBjb25zdCBjaGFyICpyZWFsX3BhdGhfaW50ZXJuYWwoY29uc3QgY2hhciAqcGF0aCwgaW50IGRpZV9vbl9lcnJvcikKIHsKIAlzdGF0aWMgY2hhciBidWZzWzJdW1BBVEhfTUFYICsgMV0sICpidWYgPSBidWZzWzBdLCAqbmV4dF9idWYgPSBidWZzWzFdOworCWNoYXIgKnJldHZhbCA9IE5VTEw7CisKKwkvKgorCSAqIElmIHdlIGhhdmUgdG8gdGVtcG9yYXJpbHkgY2hkaXIoKSwgc3RvcmUgdGhlIG9yaWdpbmFsIENXRAorCSAqIGhlcmUgc28gdGhhdCB3ZSBjYW4gY2hkaXIoKSBiYWNrIHRvIGl0IGF0IHRoZSBlbmQgb2YgdGhlCisJICogZnVuY3Rpb246CisJICovCiAJY2hhciBjd2RbMTAyNF0gPSAiIjsKKwogCWludCBidWZfaW5kZXggPSAxOwogCiAJaW50IGRlcHRoID0gTUFYREVQVEg7CkBAIC0zNSwxNSArNTMsMjYgQEAKIAlpZiAocGF0aCA9PSBidWYgfHwgcGF0aCA9PSBuZXh0X2J1ZikKIAkJcmV0dXJuIHBhdGg7CiAKLQlpZiAoc3RybGNweShidWYsIHBhdGgsIFBBVEhfTUFYKSA+PSBQQVRIX01BWCkKLQkJZGllICgiVG9vIGxvbmcgcGF0aDogJS4qcyIsIDYwLCBwYXRoKTsKKwlpZiAoISpwYXRoKSB7CisJCWlmIChkaWVfb25fZXJyb3IpCisJCQlkaWUoIlRoZSBlbXB0eSBzdHJpbmcgaXMgbm90IGEgdmFsaWQgcGF0aCIpOworCQllbHNlCisJCQlnb3RvIGVycm9yX291dDsKKwl9CisKKwlpZiAoc3RybGNweShidWYsIHBhdGgsIFBBVEhfTUFYKSA+PSBQQVRIX01BWCkgeworCQlpZiAoZGllX29uX2Vycm9yKQorCQkJZGllKCJUb28gbG9uZyBwYXRoOiAlLipzIiwgNjAsIHBhdGgpOworCQllbHNlCisJCQlnb3RvIGVycm9yX291dDsKKwl9CiAKIAl3aGlsZSAoZGVwdGgtLSkgewogCQlpZiAoIWlzX2RpcmVjdG9yeShidWYpKSB7CiAJCQljaGFyICpsYXN0X3NsYXNoID0gZmluZF9sYXN0X2Rpcl9zZXAoYnVmKTsKIAkJCWlmIChsYXN0X3NsYXNoKSB7Ci0JCQkJKmxhc3Rfc2xhc2ggPSAnXDAnOwogCQkJCWxhc3RfZWxlbSA9IHhzdHJkdXAobGFzdF9zbGFzaCArIDEpOworCQkJCWxhc3Rfc2xhc2hbMV0gPSAnXDAnOwogCQkJfSBlbHNlIHsKIAkJCQlsYXN0X2VsZW0gPSB4c3RyZHVwKGJ1Zik7CiAJCQkJKmJ1ZiA9ICdcMCc7CkBAIC01MSwyMCArODAsMzYgQEAKIAkJfQogCiAJCWlmICgqYnVmKSB7Ci0JCQlpZiAoISpjd2QgJiYgIWdldGN3ZChjd2QsIHNpemVvZihjd2QpKSkKLQkJCQlkaWVfZXJybm8gKCJDb3VsZCBub3QgZ2V0IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkiKTsKKwkJCWlmICghKmN3ZCAmJiAhZ2V0Y3dkKGN3ZCwgc2l6ZW9mKGN3ZCkpKSB7CisJCQkJaWYgKGRpZV9vbl9lcnJvcikKKwkJCQkJZGllX2Vycm5vKCJDb3VsZCBub3QgZ2V0IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkiKTsKKwkJCQllbHNlCisJCQkJCWdvdG8gZXJyb3Jfb3V0OworCQkJfQogCi0JCQlpZiAoY2hkaXIoYnVmKSkKLQkJCQlkaWVfZXJybm8gKCJDb3VsZCBub3Qgc3dpdGNoIHRvICclcyciLCBidWYpOworCQkJaWYgKGNoZGlyKGJ1ZikpIHsKKwkJCQlpZiAoZGllX29uX2Vycm9yKQorCQkJCQlkaWVfZXJybm8oIkNvdWxkIG5vdCBzd2l0Y2ggdG8gJyVzJyIsIGJ1Zik7CisJCQkJZWxzZQorCQkJCQlnb3RvIGVycm9yX291dDsKKwkJCX0KIAkJfQotCQlpZiAoIWdldGN3ZChidWYsIFBBVEhfTUFYKSkKLQkJCWRpZV9lcnJubyAoIkNvdWxkIG5vdCBnZXQgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSIpOworCQlpZiAoIWdldGN3ZChidWYsIFBBVEhfTUFYKSkgeworCQkJaWYgKGRpZV9vbl9lcnJvcikKKwkJCQlkaWVfZXJybm8oIkNvdWxkIG5vdCBnZXQgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSIpOworCQkJZWxzZQorCQkJCWdvdG8gZXJyb3Jfb3V0OworCQl9CiAKIAkJaWYgKGxhc3RfZWxlbSkgewogCQkJc2l6ZV90IGxlbiA9IHN0cmxlbihidWYpOwotCQkJaWYgKGxlbiArIHN0cmxlbihsYXN0X2VsZW0pICsgMiA+IFBBVEhfTUFYKQotCQkJCWRpZSAoIlRvbyBsb25nIHBhdGggbmFtZTogJyVzLyVzJyIsCi0JCQkJCQlidWYsIGxhc3RfZWxlbSk7CisJCQlpZiAobGVuICsgc3RybGVuKGxhc3RfZWxlbSkgKyAyID4gUEFUSF9NQVgpIHsKKwkJCQlpZiAoZGllX29uX2Vycm9yKQorCQkJCQlkaWUoIlRvbyBsb25nIHBhdGggbmFtZTogJyVzLyVzJyIsCisJCQkJCSAgICBidWYsIGxhc3RfZWxlbSk7CisJCQkJZWxzZQorCQkJCQlnb3RvIGVycm9yX291dDsKKwkJCX0KIAkJCWlmIChsZW4gJiYgIWlzX2Rpcl9zZXAoYnVmW2xlbi0xXSkpCiAJCQkJYnVmW2xlbisrXSA9ICcvJzsKIAkJCXN0cmNweShidWYgKyBsZW4sIGxhc3RfZWxlbSk7CkBAIC03NCwxMCArMTE5LDE4IEBACiAKIAkJaWYgKCFsc3RhdChidWYsICZzdCkgJiYgU19JU0xOSyhzdC5zdF9tb2RlKSkgewogCQkJc3NpemVfdCBsZW4gPSByZWFkbGluayhidWYsIG5leHRfYnVmLCBQQVRIX01BWCk7Ci0JCQlpZiAobGVuIDwgMCkKLQkJCQlkaWVfZXJybm8gKCJJbnZhbGlkIHN5bWxpbmsgJyVzJyIsIGJ1Zik7Ci0JCQlpZiAoUEFUSF9NQVggPD0gbGVuKQotCQkJCWRpZSgic3ltYm9saWMgbGluayB0b28gbG9uZzogJXMiLCBidWYpOworCQkJaWYgKGxlbiA8IDApIHsKKwkJCQlpZiAoZGllX29uX2Vycm9yKQorCQkJCQlkaWVfZXJybm8oIkludmFsaWQgc3ltbGluayAnJXMnIiwgYnVmKTsKKwkJCQllbHNlCisJCQkJCWdvdG8gZXJyb3Jfb3V0OworCQkJfQorCQkJaWYgKFBBVEhfTUFYIDw9IGxlbikgeworCQkJCWlmIChkaWVfb25fZXJyb3IpCisJCQkJCWRpZSgic3ltYm9saWMgbGluayB0b28gbG9uZzogJXMiLCBidWYpOworCQkJCWVsc2UKKwkJCQkJZ290byBlcnJvcl9vdXQ7CisJCQl9CiAJCQluZXh0X2J1ZltsZW5dID0gJ1wwJzsKIAkJCWJ1ZiA9IG5leHRfYnVmOwogCQkJYnVmX2luZGV4ID0gMSAtIGJ1Zl9pbmRleDsKQEAgLTg2LDEwICsxMzksMjMgQEAKIAkJCWJyZWFrOwogCX0KIAorCXJldHZhbCA9IGJ1ZjsKK2Vycm9yX291dDoKKwlmcmVlKGxhc3RfZWxlbSk7CiAJaWYgKCpjd2QgJiYgY2hkaXIoY3dkKSkKIAkJZGllX2Vycm5vICgiQ291bGQgbm90IGNoYW5nZSBiYWNrIHRvICclcyciLCBjd2QpOwogCi0JcmV0dXJuIGJ1ZjsKKwlyZXR1cm4gcmV0dmFsOworfQorCitjb25zdCBjaGFyICpyZWFsX3BhdGgoY29uc3QgY2hhciAqcGF0aCkKK3sKKwlyZXR1cm4gcmVhbF9wYXRoX2ludGVybmFsKHBhdGgsIDEpOworfQorCitjb25zdCBjaGFyICpyZWFsX3BhdGhfaWZfdmFsaWQoY29uc3QgY2hhciAqcGF0aCkKK3sKKwlyZXR1cm4gcmVhbF9wYXRoX2ludGVybmFsKHBhdGgsIDApOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciAqZ2V0X3B3ZF9jd2Qodm9pZCkKQEAgLTEyMyw3ICsxODksOSBAQAogewogCXN0YXRpYyBjaGFyIGJ1ZltQQVRIX01BWCArIDFdOwogCi0JaWYgKGlzX2Fic29sdXRlX3BhdGgocGF0aCkpIHsKKwlpZiAoISpwYXRoKSB7CisJCWRpZSgiVGhlIGVtcHR5IHN0cmluZyBpcyBub3QgYSB2YWxpZCBwYXRoIik7CisJfSBlbHNlIGlmIChpc19hYnNvbHV0ZV9wYXRoKHBhdGgpKSB7CiAJCWlmIChzdHJsY3B5KGJ1ZiwgcGF0aCwgUEFUSF9NQVgpID49IFBBVEhfTUFYKQogCQkJZGllKCJUb28gbG9uZyBwYXRoOiAlLipzIiwgNjAsIHBhdGgpOwogCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9hZHZpY2UuYyBiL2FkdmljZS5jCmluZGV4IGE0OTJlZWEuLmE4ZGVlZTYgMTAwNjQ0Ci0tLSBhL2FkdmljZS5jCisrKyBiL2FkdmljZS5jCkBAIC0xLDI4ICsxLDQxIEBACiAjaW5jbHVkZSAiY2FjaGUuaCIKIAotaW50IGFkdmljZV9wdXNoX25vbmZhc3Rmb3J3YXJkID0gMTsKK2ludCBhZHZpY2VfcHVzaF91cGRhdGVfcmVqZWN0ZWQgPSAxOwogaW50IGFkdmljZV9wdXNoX25vbl9mZl9jdXJyZW50ID0gMTsKIGludCBhZHZpY2VfcHVzaF9ub25fZmZfZGVmYXVsdCA9IDE7CiBpbnQgYWR2aWNlX3B1c2hfbm9uX2ZmX21hdGNoaW5nID0gMTsKK2ludCBhZHZpY2VfcHVzaF9hbHJlYWR5X2V4aXN0cyA9IDE7CitpbnQgYWR2aWNlX3B1c2hfZmV0Y2hfZmlyc3QgPSAxOworaW50IGFkdmljZV9wdXNoX25lZWRzX2ZvcmNlID0gMTsKIGludCBhZHZpY2Vfc3RhdHVzX2hpbnRzID0gMTsKK2ludCBhZHZpY2Vfc3RhdHVzX3Vfb3B0aW9uID0gMTsKIGludCBhZHZpY2VfY29tbWl0X2JlZm9yZV9tZXJnZSA9IDE7CiBpbnQgYWR2aWNlX3Jlc29sdmVfY29uZmxpY3QgPSAxOwogaW50IGFkdmljZV9pbXBsaWNpdF9pZGVudGl0eSA9IDE7CiBpbnQgYWR2aWNlX2RldGFjaGVkX2hlYWQgPSAxOworaW50IGFkdmljZV9zZXRfdXBzdHJlYW1fZmFpbHVyZSA9IDE7CiAKIHN0YXRpYyBzdHJ1Y3QgewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJaW50ICpwcmVmZXJlbmNlOwogfSBhZHZpY2VfY29uZmlnW10gPSB7Ci0JeyAicHVzaG5vbmZhc3Rmb3J3YXJkIiwgJmFkdmljZV9wdXNoX25vbmZhc3Rmb3J3YXJkIH0sCisJeyAicHVzaHVwZGF0ZXJlamVjdGVkIiwgJmFkdmljZV9wdXNoX3VwZGF0ZV9yZWplY3RlZCB9LAogCXsgInB1c2hub25mZmN1cnJlbnQiLCAmYWR2aWNlX3B1c2hfbm9uX2ZmX2N1cnJlbnQgfSwKIAl7ICJwdXNobm9uZmZkZWZhdWx0IiwgJmFkdmljZV9wdXNoX25vbl9mZl9kZWZhdWx0IH0sCiAJeyAicHVzaG5vbmZmbWF0Y2hpbmciLCAmYWR2aWNlX3B1c2hfbm9uX2ZmX21hdGNoaW5nIH0sCisJeyAicHVzaGFscmVhZHlleGlzdHMiLCAmYWR2aWNlX3B1c2hfYWxyZWFkeV9leGlzdHMgfSwKKwl7ICJwdXNoZmV0Y2hmaXJzdCIsICZhZHZpY2VfcHVzaF9mZXRjaF9maXJzdCB9LAorCXsgInB1c2huZWVkc2ZvcmNlIiwgJmFkdmljZV9wdXNoX25lZWRzX2ZvcmNlIH0sCiAJeyAic3RhdHVzaGludHMiLCAmYWR2aWNlX3N0YXR1c19oaW50cyB9LAorCXsgInN0YXR1c3VvcHRpb24iLCAmYWR2aWNlX3N0YXR1c191X29wdGlvbiB9LAogCXsgImNvbW1pdGJlZm9yZW1lcmdlIiwgJmFkdmljZV9jb21taXRfYmVmb3JlX21lcmdlIH0sCiAJeyAicmVzb2x2ZWNvbmZsaWN0IiwgJmFkdmljZV9yZXNvbHZlX2NvbmZsaWN0IH0sCiAJeyAiaW1wbGljaXRpZGVudGl0eSIsICZhZHZpY2VfaW1wbGljaXRfaWRlbnRpdHkgfSwKIAl7ICJkZXRhY2hlZGhlYWQiLCAmYWR2aWNlX2RldGFjaGVkX2hlYWQgfSwKKwl7ICJzZXR1cHN0cmVhbWZhaWx1cmUiLCAmYWR2aWNlX3NldF91cHN0cmVhbV9mYWlsdXJlIH0sCisKKwkvKiBtYWtlIHRoaXMgYW4gYWxpYXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKi8KKwl7ICJwdXNobm9uZmFzdGZvcndhcmQiLCAmYWR2aWNlX3B1c2hfdXBkYXRlX3JlamVjdGVkIH0KIH07CiAKIHZvaWQgYWR2aXNlKGNvbnN0IGNoYXIgKmFkdmljZSwgLi4uKQpAQCAtMzIsNyArNDUsNyBAQAogCWNvbnN0IGNoYXIgKmNwLCAqbnA7CiAKIAl2YV9zdGFydChwYXJhbXMsIGFkdmljZSk7Ci0Jc3RyYnVmX2FkZGYoJmJ1ZiwgYWR2aWNlLCBwYXJhbXMpOworCXN0cmJ1Zl92YWRkZigmYnVmLCBhZHZpY2UsIHBhcmFtcyk7CiAJdmFfZW5kKHBhcmFtcyk7CiAKIAlmb3IgKGNwID0gYnVmLmJ1ZjsgKmNwOyBjcCA9IG5wKSB7CmRpZmYgLS1naXQgYS9hZHZpY2UuaCBiL2FkdmljZS5oCmluZGV4IGYzY2RiYmYuLjk0Y2FhMzIgMTAwNjQ0Ci0tLSBhL2FkdmljZS5oCisrKyBiL2FkdmljZS5oCkBAIC0zLDE1ICszLDIwIEBACiAKICNpbmNsdWRlICJnaXQtY29tcGF0LXV0aWwuaCIKIAotZXh0ZXJuIGludCBhZHZpY2VfcHVzaF9ub25mYXN0Zm9yd2FyZDsKK2V4dGVybiBpbnQgYWR2aWNlX3B1c2hfdXBkYXRlX3JlamVjdGVkOwogZXh0ZXJuIGludCBhZHZpY2VfcHVzaF9ub25fZmZfY3VycmVudDsKIGV4dGVybiBpbnQgYWR2aWNlX3B1c2hfbm9uX2ZmX2RlZmF1bHQ7CiBleHRlcm4gaW50IGFkdmljZV9wdXNoX25vbl9mZl9tYXRjaGluZzsKK2V4dGVybiBpbnQgYWR2aWNlX3B1c2hfYWxyZWFkeV9leGlzdHM7CitleHRlcm4gaW50IGFkdmljZV9wdXNoX2ZldGNoX2ZpcnN0OworZXh0ZXJuIGludCBhZHZpY2VfcHVzaF9uZWVkc19mb3JjZTsKIGV4dGVybiBpbnQgYWR2aWNlX3N0YXR1c19oaW50czsKK2V4dGVybiBpbnQgYWR2aWNlX3N0YXR1c191X29wdGlvbjsKIGV4dGVybiBpbnQgYWR2aWNlX2NvbW1pdF9iZWZvcmVfbWVyZ2U7CiBleHRlcm4gaW50IGFkdmljZV9yZXNvbHZlX2NvbmZsaWN0OwogZXh0ZXJuIGludCBhZHZpY2VfaW1wbGljaXRfaWRlbnRpdHk7CiBleHRlcm4gaW50IGFkdmljZV9kZXRhY2hlZF9oZWFkOworZXh0ZXJuIGludCBhZHZpY2Vfc2V0X3Vwc3RyZWFtX2ZhaWx1cmU7CiAKIGludCBnaXRfZGVmYXVsdF9hZHZpY2VfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUpOwogdm9pZCBhZHZpc2UoY29uc3QgY2hhciAqYWR2aWNlLCAuLi4pOwpkaWZmIC0tZ2l0IGEvYXJjaGl2ZS10YXIuYyBiL2FyY2hpdmUtdGFyLmMKaW5kZXggZGM5MWM2Yi4uNzE5YjYyOSAxMDA2NDQKLS0tIGEvYXJjaGl2ZS10YXIuYworKysgYi9hcmNoaXZlLXRhci5jCkBAIC0xMzksMTMgKzEzOSwxMyBAQAogCiBzdGF0aWMgdW5zaWduZWQgaW50IHVzdGFyX2hlYWRlcl9jaGtzdW0oY29uc3Qgc3RydWN0IHVzdGFyX2hlYWRlciAqaGVhZGVyKQogewotCWNvbnN0IGNoYXIgKnAgPSAoY29uc3QgY2hhciAqKWhlYWRlcjsKKwljb25zdCB1bnNpZ25lZCBjaGFyICpwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiloZWFkZXI7CiAJdW5zaWduZWQgaW50IGNoa3N1bSA9IDA7Ci0Jd2hpbGUgKHAgPCBoZWFkZXItPmNoa3N1bSkKKwl3aGlsZSAocCA8IChjb25zdCB1bnNpZ25lZCBjaGFyICopaGVhZGVyLT5jaGtzdW0pCiAJCWNoa3N1bSArPSAqcCsrOwogCWNoa3N1bSArPSBzaXplb2YoaGVhZGVyLT5jaGtzdW0pICogJyAnOwogCXAgKz0gc2l6ZW9mKGhlYWRlci0+Y2hrc3VtKTsKLQl3aGlsZSAocCA8IChjb25zdCBjaGFyICopaGVhZGVyICsgc2l6ZW9mKHN0cnVjdCB1c3Rhcl9oZWFkZXIpKQorCXdoaWxlIChwIDwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiloZWFkZXIgKyBzaXplb2Yoc3RydWN0IHVzdGFyX2hlYWRlcikpCiAJCWNoa3N1bSArPSAqcCsrOwogCXJldHVybiBjaGtzdW07CiB9CkBAIC0xNTMsNiArMTUzLDggQEAKIHN0YXRpYyBzaXplX3QgZ2V0X3BhdGhfcHJlZml4KGNvbnN0IGNoYXIgKnBhdGgsIHNpemVfdCBwYXRobGVuLCBzaXplX3QgbWF4bGVuKQogewogCXNpemVfdCBpID0gcGF0aGxlbjsKKwlpZiAoaSA+IDEgJiYgcGF0aFtpIC0gMV0gPT0gJy8nKQorCQlpLS07CiAJaWYgKGkgPiBtYXhsZW4pCiAJCWkgPSBtYXhsZW47CiAJZG8gewpAQCAtMzI1LDIwICszMjcsMTIgQEAKIHN0YXRpYyBpbnQgdGFyX2ZpbHRlcl9jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgYXJjaGl2ZXIgKmFyOwotCWNvbnN0IGNoYXIgKmRvdDsKIAljb25zdCBjaGFyICpuYW1lOwogCWNvbnN0IGNoYXIgKnR5cGU7CiAJaW50IG5hbWVsZW47CiAKLQlpZiAocHJlZml4Y21wKHZhciwgInRhci4iKSkKKwlpZiAocGFyc2VfY29uZmlnX2tleSh2YXIsICJ0YXIiLCAmbmFtZSwgJm5hbWVsZW4sICZ0eXBlKSA8IDAgfHwgIW5hbWUpCiAJCXJldHVybiAwOwotCWRvdCA9IHN0cnJjaHIodmFyLCAnLicpOwotCWlmIChkb3QgPT0gdmFyICsgOSkKLQkJcmV0dXJuIDA7Ci0KLQluYW1lID0gdmFyICsgNDsKLQluYW1lbGVuID0gZG90IC0gbmFtZTsKLQl0eXBlID0gZG90ICsgMTsKIAogCWFyID0gZmluZF90YXJfZmlsdGVyKG5hbWUsIG5hbWVsZW4pOwogCWlmICghYXIpIHsKZGlmZiAtLWdpdCBhL2FyY2hpdmUtemlwLmMgYi9hcmNoaXZlLXppcC5jCmluZGV4IGY1YWY4MWYuLmIyYzRmZTAgMTAwNjQ0Ci0tLSBhL2FyY2hpdmUtemlwLmMKKysrIGIvYXJjaGl2ZS16aXAuYwpAQCAtNCw2ICs0LDcgQEAKICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgImFyY2hpdmUuaCIKICNpbmNsdWRlICJzdHJlYW1pbmcuaCIKKyNpbmNsdWRlICJ1dGY4LmgiCiAKIHN0YXRpYyBpbnQgemlwX2RhdGU7CiBzdGF0aWMgaW50IHppcF90aW1lOwpAQCAtMTYsNyArMTcsOCBAQAogc3RhdGljIHVuc2lnbmVkIGludCB6aXBfZGlyX2VudHJpZXM7CiAKICNkZWZpbmUgWklQX0RJUkVDVE9SWV9NSU5fU0laRQkoMTAyNCAqIDEwMjQpCi0jZGVmaW5lIFpJUF9TVFJFQU0gKDgpCisjZGVmaW5lIFpJUF9TVFJFQU0JKDEgPDwgIDMpCisjZGVmaW5lIFpJUF9VVEY4CSgxIDw8IDExKQogCiBzdHJ1Y3QgemlwX2xvY2FsX2hlYWRlciB7CiAJdW5zaWduZWQgY2hhciBtYWdpY1s0XTsKQEAgLTc0LDYgKzc2LDE0IEBACiAJdW5zaWduZWQgY2hhciBfZW5kWzFdOwogfTsKIAorc3RydWN0IHppcF9leHRyYV9tdGltZSB7CisJdW5zaWduZWQgY2hhciBtYWdpY1syXTsKKwl1bnNpZ25lZCBjaGFyIGV4dHJhX3NpemVbMl07CisJdW5zaWduZWQgY2hhciBmbGFnc1sxXTsKKwl1bnNpZ25lZCBjaGFyIG10aW1lWzRdOworCXVuc2lnbmVkIGNoYXIgX2VuZFsxXTsKK307CisKIC8qCiAgKiBPbiBBUk0sIHBhZGRpbmcgaXMgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgc3RydWN0LCBzbyBhIHNpbXBsZQogICogc2l6ZW9mKHN0cnVjdCAuLi4pIHJlcG9ydHMgdHdvIGJ5dGVzIG1vcmUgdGhhbiB0aGUgcGF5bG9hZCBzaXplCkBAIC04Myw2ICs5Myw5IEBACiAjZGVmaW5lIFpJUF9EQVRBX0RFU0NfU0laRQlvZmZzZXRvZihzdHJ1Y3QgemlwX2RhdGFfZGVzYywgX2VuZCkKICNkZWZpbmUgWklQX0RJUl9IRUFERVJfU0laRQlvZmZzZXRvZihzdHJ1Y3QgemlwX2Rpcl9oZWFkZXIsIF9lbmQpCiAjZGVmaW5lIFpJUF9ESVJfVFJBSUxFUl9TSVpFCW9mZnNldG9mKHN0cnVjdCB6aXBfZGlyX3RyYWlsZXIsIF9lbmQpCisjZGVmaW5lIFpJUF9FWFRSQV9NVElNRV9TSVpFCW9mZnNldG9mKHN0cnVjdCB6aXBfZXh0cmFfbXRpbWUsIF9lbmQpCisjZGVmaW5lIFpJUF9FWFRSQV9NVElNRV9QQVlMT0FEX1NJWkUgXAorCShaSVBfRVhUUkFfTVRJTUVfU0laRSAtIG9mZnNldG9mKHN0cnVjdCB6aXBfZXh0cmFfbXRpbWUsIGZsYWdzKSkKIAogc3RhdGljIHZvaWQgY29weV9sZTE2KHVuc2lnbmVkIGNoYXIgKmRlc3QsIHVuc2lnbmVkIGludCBuKQogewpAQCAtOTgsOCArMTExLDkgQEAKIAlkZXN0WzNdID0gMHhmZiAmIChuID4+IDAzMCk7CiB9CiAKLXN0YXRpYyB2b2lkICp6bGliX2RlZmxhdGUodm9pZCAqZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLAotCQlpbnQgY29tcHJlc3Npb25fbGV2ZWwsIHVuc2lnbmVkIGxvbmcgKmNvbXByZXNzZWRfc2l6ZSkKK3N0YXRpYyB2b2lkICp6bGliX2RlZmxhdGVfcmF3KHZvaWQgKmRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwKKwkJCSAgICAgIGludCBjb21wcmVzc2lvbl9sZXZlbCwKKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgKmNvbXByZXNzZWRfc2l6ZSkKIHsKIAlnaXRfenN0cmVhbSBzdHJlYW07CiAJdW5zaWduZWQgbG9uZyBtYXhzaXplOwpAQCAtMTA3LDcgKzEyMSw3IEBACiAJaW50IHJlc3VsdDsKIAogCW1lbXNldCgmc3RyZWFtLCAwLCBzaXplb2Yoc3RyZWFtKSk7Ci0JZ2l0X2RlZmxhdGVfaW5pdCgmc3RyZWFtLCBjb21wcmVzc2lvbl9sZXZlbCk7CisJZ2l0X2RlZmxhdGVfaW5pdF9yYXcoJnN0cmVhbSwgY29tcHJlc3Npb25fbGV2ZWwpOwogCW1heHNpemUgPSBnaXRfZGVmbGF0ZV9ib3VuZCgmc3RyZWFtLCBzaXplKTsKIAlidWZmZXIgPSB4bWFsbG9jKG1heHNpemUpOwogCkBAIC0xNjQsNiArMTc4LDE3IEBACiAJY29weV9sZTMyKGhlYWRlci0+c2l6ZSwgc2l6ZSk7CiB9CiAKK3N0YXRpYyBpbnQgaGFzX29ubHlfYXNjaWkoY29uc3QgY2hhciAqcykKK3sKKwlmb3IgKDs7KSB7CisJCWludCBjID0gKnMrKzsKKwkJaWYgKGMgPT0gJ1wwJykKKwkJCXJldHVybiAxOworCQlpZiAoIWlzYXNjaWkoYykpCisJCQlyZXR1cm4gMDsKKwl9Cit9CisKICNkZWZpbmUgU1RSRUFNX0JVRkZFUl9TSVpFICgxMDI0ICogMTYpCiAKIHN0YXRpYyBpbnQgd3JpdGVfemlwX2VudHJ5KHN0cnVjdCBhcmNoaXZlcl9hcmdzICphcmdzLApAQCAtMTczLDYgKzE5OCw3IEBACiB7CiAJc3RydWN0IHppcF9sb2NhbF9oZWFkZXIgaGVhZGVyOwogCXN0cnVjdCB6aXBfZGlyX2hlYWRlciBkaXJlbnQ7CisJc3RydWN0IHppcF9leHRyYV9tdGltZSBleHRyYTsKIAl1bnNpZ25lZCBsb25nIGF0dHIyOwogCXVuc2lnbmVkIGxvbmcgY29tcHJlc3NlZF9zaXplOwogCXVuc2lnbmVkIGxvbmcgY3JjOwpAQCAtMTg3LDYgKzIxMywxMyBAQAogCiAJY3JjID0gY3JjMzIoMCwgTlVMTCwgMCk7CiAKKwlpZiAoIWhhc19vbmx5X2FzY2lpKHBhdGgpKSB7CisJCWlmIChpc191dGY4KHBhdGgpKQorCQkJZmxhZ3MgfD0gWklQX1VURjg7CisJCWVsc2UKKwkJCXdhcm5pbmcoIlBhdGggaXMgbm90IHZhbGlkIFVURi04OiAlcyIsIHBhdGgpOworCX0KKwogCWlmIChwYXRobGVuID4gMHhmZmZmKSB7CiAJCXJldHVybiBlcnJvcigicGF0aCB0b28gbG9uZyAoJWQgY2hhcnMsIFNIQTE6ICVzKTogJXMiLAogCQkJCShpbnQpcGF0aGxlbiwgc2hhMV90b19oZXgoc2hhMSksIHBhdGgpOwpAQCAtMjA4LDcgKzI0MSw2IEBACiAJCQkobW9kZSAmIDAxMTEpID8gKChtb2RlKSA8PCAxNikgOiAwOwogCQlpZiAoU19JU1JFRyhtb2RlKSAmJiBhcmdzLT5jb21wcmVzc2lvbl9sZXZlbCAhPSAwICYmIHNpemUgPiAwKQogCQkJbWV0aG9kID0gODsKLQkJY29tcHJlc3NlZF9zaXplID0gc2l6ZTsKIAogCQlpZiAoU19JU1JFRyhtb2RlKSAmJiB0eXBlID09IE9CSl9CTE9CICYmICFhcmdzLT5jb252ZXJ0ICYmCiAJCSAgICBzaXplID4gYmlnX2ZpbGVfdGhyZXNob2xkKSB7CkBAIC0yMjcsMjcgKzI1OSwzMCBAQAogCQkJY3JjID0gY3JjMzIoY3JjLCBidWZmZXIsIHNpemUpOwogCQkJb3V0ID0gYnVmZmVyOwogCQl9CisJCWNvbXByZXNzZWRfc2l6ZSA9IChtZXRob2QgPT0gMCkgPyBzaXplIDogMDsKIAl9IGVsc2UgewogCQlyZXR1cm4gZXJyb3IoInVuc3VwcG9ydGVkIGZpbGUgbW9kZTogMCVvIChTSEExOiAlcykiLCBtb2RlLAogCQkJCXNoYTFfdG9faGV4KHNoYTEpKTsKIAl9CiAKIAlpZiAoYnVmZmVyICYmIG1ldGhvZCA9PSA4KSB7Ci0JCWRlZmxhdGVkID0gemxpYl9kZWZsYXRlKGJ1ZmZlciwgc2l6ZSwgYXJncy0+Y29tcHJlc3Npb25fbGV2ZWwsCi0JCQkJJmNvbXByZXNzZWRfc2l6ZSk7Ci0JCWlmIChkZWZsYXRlZCAmJiBjb21wcmVzc2VkX3NpemUgLSA2IDwgc2l6ZSkgewotCQkJLyogWkxJQiAtLT4gcmF3IGNvbXByZXNzZWQgZGF0YSAoc2VlIFJGQyAxOTUwKSAqLwotCQkJLyogQ01GIGFuZCBGTEcgLi4uICovCi0JCQlvdXQgPSAodW5zaWduZWQgY2hhciAqKWRlZmxhdGVkICsgMjsKLQkJCWNvbXByZXNzZWRfc2l6ZSAtPSA2OwkvKiAuLi4gYW5kIEFETEVSMzIgKi8KLQkJfSBlbHNlIHsKKwkJb3V0ID0gZGVmbGF0ZWQgPSB6bGliX2RlZmxhdGVfcmF3KGJ1ZmZlciwgc2l6ZSwKKwkJCQkJCSAgYXJncy0+Y29tcHJlc3Npb25fbGV2ZWwsCisJCQkJCQkgICZjb21wcmVzc2VkX3NpemUpOworCQlpZiAoIW91dCB8fCBjb21wcmVzc2VkX3NpemUgPj0gc2l6ZSkgeworCQkJb3V0ID0gYnVmZmVyOwogCQkJbWV0aG9kID0gMDsKIAkJCWNvbXByZXNzZWRfc2l6ZSA9IHNpemU7CiAJCX0KIAl9CiAKKwljb3B5X2xlMTYoZXh0cmEubWFnaWMsIDB4NTQ1NSk7CisJY29weV9sZTE2KGV4dHJhLmV4dHJhX3NpemUsIFpJUF9FWFRSQV9NVElNRV9QQVlMT0FEX1NJWkUpOworCWV4dHJhLmZsYWdzWzBdID0gMTsJLyoganVzdCBtdGltZSAqLworCWNvcHlfbGUzMihleHRyYS5tdGltZSwgYXJncy0+dGltZSk7CisKIAkvKiBtYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggZnJlZSBzcGFjZSBpbiB0aGUgZGljdGlvbmFyeSAqLwotCWRpcmVudHNpemUgPSBaSVBfRElSX0hFQURFUl9TSVpFICsgcGF0aGxlbjsKKwlkaXJlbnRzaXplID0gWklQX0RJUl9IRUFERVJfU0laRSArIHBhdGhsZW4gKyBaSVBfRVhUUkFfTVRJTUVfU0laRTsKIAl3aGlsZSAoemlwX2Rpcl9zaXplIDwgemlwX2Rpcl9vZmZzZXQgKyBkaXJlbnRzaXplKSB7CiAJCXppcF9kaXJfc2l6ZSArPSBaSVBfRElSRUNUT1JZX01JTl9TSVpFOwogCQl6aXBfZGlyID0geHJlYWxsb2MoemlwX2RpciwgemlwX2Rpcl9zaXplKTsKQEAgLTI2Myw3ICsyOTgsNyBAQAogCWNvcHlfbGUxNihkaXJlbnQubWRhdGUsIHppcF9kYXRlKTsKIAlzZXRfemlwX2Rpcl9kYXRhX2Rlc2MoJmRpcmVudCwgc2l6ZSwgY29tcHJlc3NlZF9zaXplLCBjcmMpOwogCWNvcHlfbGUxNihkaXJlbnQuZmlsZW5hbWVfbGVuZ3RoLCBwYXRobGVuKTsKLQljb3B5X2xlMTYoZGlyZW50LmV4dHJhX2xlbmd0aCwgMCk7CisJY29weV9sZTE2KGRpcmVudC5leHRyYV9sZW5ndGgsIFpJUF9FWFRSQV9NVElNRV9TSVpFKTsKIAljb3B5X2xlMTYoZGlyZW50LmNvbW1lbnRfbGVuZ3RoLCAwKTsKIAljb3B5X2xlMTYoZGlyZW50LmRpc2ssIDApOwogCWNvcHlfbGUxNihkaXJlbnQuYXR0cjEsIDApOwpAQCAtMjc2LDE2ICszMTEsMTUgQEAKIAljb3B5X2xlMTYoaGVhZGVyLmNvbXByZXNzaW9uX21ldGhvZCwgbWV0aG9kKTsKIAljb3B5X2xlMTYoaGVhZGVyLm10aW1lLCB6aXBfdGltZSk7CiAJY29weV9sZTE2KGhlYWRlci5tZGF0ZSwgemlwX2RhdGUpOwotCWlmIChmbGFncyAmIFpJUF9TVFJFQU0pCi0JCXNldF96aXBfaGVhZGVyX2RhdGFfZGVzYygmaGVhZGVyLCAwLCAwLCAwKTsKLQllbHNlCi0JCXNldF96aXBfaGVhZGVyX2RhdGFfZGVzYygmaGVhZGVyLCBzaXplLCBjb21wcmVzc2VkX3NpemUsIGNyYyk7CisJc2V0X3ppcF9oZWFkZXJfZGF0YV9kZXNjKCZoZWFkZXIsIHNpemUsIGNvbXByZXNzZWRfc2l6ZSwgY3JjKTsKIAljb3B5X2xlMTYoaGVhZGVyLmZpbGVuYW1lX2xlbmd0aCwgcGF0aGxlbik7Ci0JY29weV9sZTE2KGhlYWRlci5leHRyYV9sZW5ndGgsIDApOworCWNvcHlfbGUxNihoZWFkZXIuZXh0cmFfbGVuZ3RoLCBaSVBfRVhUUkFfTVRJTUVfU0laRSk7CiAJd3JpdGVfb3JfZGllKDEsICZoZWFkZXIsIFpJUF9MT0NBTF9IRUFERVJfU0laRSk7CiAJemlwX29mZnNldCArPSBaSVBfTE9DQUxfSEVBREVSX1NJWkU7CiAJd3JpdGVfb3JfZGllKDEsIHBhdGgsIHBhdGhsZW4pOwogCXppcF9vZmZzZXQgKz0gcGF0aGxlbjsKKwl3cml0ZV9vcl9kaWUoMSwgJmV4dHJhLCBaSVBfRVhUUkFfTVRJTUVfU0laRSk7CisJemlwX29mZnNldCArPSBaSVBfRVhUUkFfTVRJTUVfU0laRTsKIAlpZiAoc3RyZWFtICYmIG1ldGhvZCA9PSAwKSB7CiAJCXVuc2lnbmVkIGNoYXIgYnVmW1NUUkVBTV9CVUZGRVJfU0laRV07CiAJCXNzaXplX3QgcmVhZGxlbjsKQEAgLTMxNyw3ICszNTEsNyBAQAogCQl1bnNpZ25lZCBjaGFyIGNvbXByZXNzZWRbU1RSRUFNX0JVRkZFUl9TSVpFICogMl07CiAKIAkJbWVtc2V0KCZ6c3RyZWFtLCAwLCBzaXplb2YoenN0cmVhbSkpOwotCQlnaXRfZGVmbGF0ZV9pbml0KCZ6c3RyZWFtLCBhcmdzLT5jb21wcmVzc2lvbl9sZXZlbCk7CisJCWdpdF9kZWZsYXRlX2luaXRfcmF3KCZ6c3RyZWFtLCBhcmdzLT5jb21wcmVzc2lvbl9sZXZlbCk7CiAKIAkJY29tcHJlc3NlZF9zaXplID0gMDsKIAkJenN0cmVhbS5uZXh0X291dCA9IGNvbXByZXNzZWQ7CkBAIC0zMzQsMTMgKzM2OCwxMCBAQAogCQkJcmVzdWx0ID0gZ2l0X2RlZmxhdGUoJnpzdHJlYW0sIDApOwogCQkJaWYgKHJlc3VsdCAhPSBaX09LKQogCQkJCWRpZSgiZGVmbGF0ZSBlcnJvciAoJWQpIiwgcmVzdWx0KTsKLQkJCW91dCA9IGNvbXByZXNzZWQ7Ci0JCQlpZiAoIWNvbXByZXNzZWRfc2l6ZSkKLQkJCQlvdXQgKz0gMjsKLQkJCW91dF9sZW4gPSB6c3RyZWFtLm5leHRfb3V0IC0gb3V0OworCQkJb3V0X2xlbiA9IHpzdHJlYW0ubmV4dF9vdXQgLSBjb21wcmVzc2VkOwogCiAJCQlpZiAob3V0X2xlbiA+IDApIHsKLQkJCQl3cml0ZV9vcl9kaWUoMSwgb3V0LCBvdXRfbGVuKTsKKwkJCQl3cml0ZV9vcl9kaWUoMSwgY29tcHJlc3NlZCwgb3V0X2xlbik7CiAJCQkJY29tcHJlc3NlZF9zaXplICs9IG91dF9sZW47CiAJCQkJenN0cmVhbS5uZXh0X291dCA9IGNvbXByZXNzZWQ7CiAJCQkJenN0cmVhbS5hdmFpbF9vdXQgPSBzaXplb2YoY29tcHJlc3NlZCk7CkBAIC0zNTgsMTEgKzM4OSw4IEBACiAJCQlkaWUoImRlZmxhdGUgZXJyb3IgKCVkKSIsIHJlc3VsdCk7CiAKIAkJZ2l0X2RlZmxhdGVfZW5kKCZ6c3RyZWFtKTsKLQkJb3V0ID0gY29tcHJlc3NlZDsKLQkJaWYgKCFjb21wcmVzc2VkX3NpemUpCi0JCQlvdXQgKz0gMjsKLQkJb3V0X2xlbiA9IHpzdHJlYW0ubmV4dF9vdXQgLSBvdXQgLSA0OwotCQl3cml0ZV9vcl9kaWUoMSwgb3V0LCBvdXRfbGVuKTsKKwkJb3V0X2xlbiA9IHpzdHJlYW0ubmV4dF9vdXQgLSBjb21wcmVzc2VkOworCQl3cml0ZV9vcl9kaWUoMSwgY29tcHJlc3NlZCwgb3V0X2xlbik7CiAJCWNvbXByZXNzZWRfc2l6ZSArPSBvdXRfbGVuOwogCQl6aXBfb2Zmc2V0ICs9IGNvbXByZXNzZWRfc2l6ZTsKIApAQCAtMzgyLDYgKzQxMCw4IEBACiAJemlwX2Rpcl9vZmZzZXQgKz0gWklQX0RJUl9IRUFERVJfU0laRTsKIAltZW1jcHkoemlwX2RpciArIHppcF9kaXJfb2Zmc2V0LCBwYXRoLCBwYXRobGVuKTsKIAl6aXBfZGlyX29mZnNldCArPSBwYXRobGVuOworCW1lbWNweSh6aXBfZGlyICsgemlwX2Rpcl9vZmZzZXQsICZleHRyYSwgWklQX0VYVFJBX01USU1FX1NJWkUpOworCXppcF9kaXJfb2Zmc2V0ICs9IFpJUF9FWFRSQV9NVElNRV9TSVpFOwogCXppcF9kaXJfZW50cmllcysrOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9hcmNoaXZlLmMgYi9hcmNoaXZlLmMKaW5kZXggYTQ4NDQzMy4uZDI1NGZhNSAxMDA2NDQKLS0tIGEvYXJjaGl2ZS5jCisrKyBiL2FyY2hpdmUuYwpAQCAtNywxMCArNywxMCBAQAogI2luY2x1ZGUgInVucGFjay10cmVlcy5oIgogCiBzdGF0aWMgY2hhciBjb25zdCAqIGNvbnN0IGFyY2hpdmVfdXNhZ2VbXSA9IHsKLQkiZ2l0IGFyY2hpdmUgW29wdGlvbnNdIDx0cmVlLWlzaD4gWzxwYXRoPi4uLl0iLAotCSJnaXQgYXJjaGl2ZSAtLWxpc3QiLAotCSJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA8cmVwbz4gWy0tZXhlYyA8Y21kPl0gW29wdGlvbnNdIDx0cmVlLWlzaD4gWzxwYXRoPi4uLl0iLAotCSJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA8cmVwbz4gWy0tZXhlYyA8Y21kPl0gLS1saXN0IiwKKwlOXygiZ2l0IGFyY2hpdmUgW29wdGlvbnNdIDx0cmVlLWlzaD4gWzxwYXRoPi4uLl0iKSwKKwlOXygiZ2l0IGFyY2hpdmUgLS1saXN0IiksCisJTl8oImdpdCBhcmNoaXZlIC0tcmVtb3RlIDxyZXBvPiBbLS1leGVjIDxjbWQ+XSBbb3B0aW9uc10gPHRyZWUtaXNoPiBbPHBhdGg+Li4uXSIpLAorCU5fKCJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA8cmVwbz4gWy0tZXhlYyA8Y21kPl0gLS1saXN0IiksCiAJTlVMTAogfTsKIApAQCAtMTIwLDYgKzEyMCw4IEBACiAJc3RyYnVmX2FkZCgmcGF0aCwgYXJncy0+YmFzZSwgYXJncy0+YmFzZWxlbik7CiAJc3RyYnVmX2FkZCgmcGF0aCwgYmFzZSwgYmFzZWxlbik7CiAJc3RyYnVmX2FkZHN0cigmcGF0aCwgZmlsZW5hbWUpOworCWlmIChTX0lTRElSKG1vZGUpIHx8IFNfSVNHSVRMSU5LKG1vZGUpKQorCQlzdHJidWZfYWRkY2goJnBhdGgsICcvJyk7CiAJcGF0aF93aXRob3V0X3ByZWZpeCA9IHBhdGguYnVmICsgYXJncy0+YmFzZWxlbjsKIAogCXNldHVwX2FyY2hpdmVfY2hlY2soY2hlY2spOwpAQCAtMTMwLDcgKzEzMiw2IEBACiAJfQogCiAJaWYgKFNfSVNESVIobW9kZSkgfHwgU19JU0dJVExJTksobW9kZSkpIHsKLQkJc3RyYnVmX2FkZGNoKCZwYXRoLCAnLycpOwogCQlpZiAoYXJncy0+dmVyYm9zZSkKIAkJCWZwcmludGYoc3RkZXJyLCAiJS4qc1xuIiwgKGludClwYXRoLmxlbiwgcGF0aC5idWYpOwogCQllcnIgPSB3cml0ZV9lbnRyeShhcmdzLCBzaGExLCBwYXRoLmJ1ZiwgcGF0aC5sZW4sIG1vZGUpOwpAQCAtMjMzLDcgKzIzNCw3IEBACiAJYXJfYXJncy0+cGF0aHNwZWMgPSBwYXRoc3BlYyA9IGdldF9wYXRoc3BlYygiIiwgcGF0aHNwZWMpOwogCWlmIChwYXRoc3BlYykgewogCQl3aGlsZSAoKnBhdGhzcGVjKSB7Ci0JCQlpZiAoIXBhdGhfZXhpc3RzKGFyX2FyZ3MtPnRyZWUsICpwYXRoc3BlYykpCisJCQlpZiAoKipwYXRoc3BlYyAmJiAhcGF0aF9leGlzdHMoYXJfYXJncy0+dHJlZSwgKnBhdGhzcGVjKSkKIAkJCQlkaWUoInBhdGggbm90IGZvdW5kOiAlcyIsICpwYXRoc3BlYyk7CiAJCQlwYXRoc3BlYysrOwogCQl9CkBAIC0zMTksMTYgKzMyMCwxNiBAQAogCWludCB3b3JrdHJlZV9hdHRyaWJ1dGVzID0gMDsKIAlzdHJ1Y3Qgb3B0aW9uIG9wdHNbXSA9IHsKIAkJT1BUX0dST1VQKCIiKSwKLQkJT1BUX1NUUklORygwLCAiZm9ybWF0IiwgJmZvcm1hdCwgImZtdCIsICJhcmNoaXZlIGZvcm1hdCIpLAotCQlPUFRfU1RSSU5HKDAsICJwcmVmaXgiLCAmYmFzZSwgInByZWZpeCIsCi0JCQkicHJlcGVuZCBwcmVmaXggdG8gZWFjaCBwYXRobmFtZSBpbiB0aGUgYXJjaGl2ZSIpLAotCQlPUFRfU1RSSU5HKCdvJywgIm91dHB1dCIsICZvdXRwdXQsICJmaWxlIiwKLQkJCSJ3cml0ZSB0aGUgYXJjaGl2ZSB0byB0aGlzIGZpbGUiKSwKKwkJT1BUX1NUUklORygwLCAiZm9ybWF0IiwgJmZvcm1hdCwgTl8oImZtdCIpLCBOXygiYXJjaGl2ZSBmb3JtYXQiKSksCisJCU9QVF9TVFJJTkcoMCwgInByZWZpeCIsICZiYXNlLCBOXygicHJlZml4IiksCisJCQlOXygicHJlcGVuZCBwcmVmaXggdG8gZWFjaCBwYXRobmFtZSBpbiB0aGUgYXJjaGl2ZSIpKSwKKwkJT1BUX1NUUklORygnbycsICJvdXRwdXQiLCAmb3V0cHV0LCBOXygiZmlsZSIpLAorCQkJTl8oIndyaXRlIHRoZSBhcmNoaXZlIHRvIHRoaXMgZmlsZSIpKSwKIAkJT1BUX0JPT0woMCwgIndvcmt0cmVlLWF0dHJpYnV0ZXMiLCAmd29ya3RyZWVfYXR0cmlidXRlcywKLQkJCSJyZWFkIC5naXRhdHRyaWJ1dGVzIGluIHdvcmtpbmcgZGlyZWN0b3J5IiksCi0JCU9QVF9fVkVSQk9TRSgmdmVyYm9zZSwgInJlcG9ydCBhcmNoaXZlZCBmaWxlcyBvbiBzdGRlcnIiKSwKLQkJT1BUX19DT01QUignMCcsICZjb21wcmVzc2lvbl9sZXZlbCwgInN0b3JlIG9ubHkiLCAwKSwKLQkJT1BUX19DT01QUignMScsICZjb21wcmVzc2lvbl9sZXZlbCwgImNvbXByZXNzIGZhc3RlciIsIDEpLAorCQkJTl8oInJlYWQgLmdpdGF0dHJpYnV0ZXMgaW4gd29ya2luZyBkaXJlY3RvcnkiKSksCisJCU9QVF9fVkVSQk9TRSgmdmVyYm9zZSwgTl8oInJlcG9ydCBhcmNoaXZlZCBmaWxlcyBvbiBzdGRlcnIiKSksCisJCU9QVF9fQ09NUFIoJzAnLCAmY29tcHJlc3Npb25fbGV2ZWwsIE5fKCJzdG9yZSBvbmx5IiksIDApLAorCQlPUFRfX0NPTVBSKCcxJywgJmNvbXByZXNzaW9uX2xldmVsLCBOXygiY29tcHJlc3MgZmFzdGVyIiksIDEpLAogCQlPUFRfX0NPTVBSX0hJRERFTignMicsICZjb21wcmVzc2lvbl9sZXZlbCwgMiksCiAJCU9QVF9fQ09NUFJfSElEREVOKCczJywgJmNvbXByZXNzaW9uX2xldmVsLCAzKSwKIAkJT1BUX19DT01QUl9ISURERU4oJzQnLCAmY29tcHJlc3Npb25fbGV2ZWwsIDQpLApAQCAtMzM2LDE1ICszMzcsMTUgQEAKIAkJT1BUX19DT01QUl9ISURERU4oJzYnLCAmY29tcHJlc3Npb25fbGV2ZWwsIDYpLAogCQlPUFRfX0NPTVBSX0hJRERFTignNycsICZjb21wcmVzc2lvbl9sZXZlbCwgNyksCiAJCU9QVF9fQ09NUFJfSElEREVOKCc4JywgJmNvbXByZXNzaW9uX2xldmVsLCA4KSwKLQkJT1BUX19DT01QUignOScsICZjb21wcmVzc2lvbl9sZXZlbCwgImNvbXByZXNzIGJldHRlciIsIDkpLAorCQlPUFRfX0NPTVBSKCc5JywgJmNvbXByZXNzaW9uX2xldmVsLCBOXygiY29tcHJlc3MgYmV0dGVyIiksIDkpLAogCQlPUFRfR1JPVVAoIiIpLAogCQlPUFRfQk9PTCgnbCcsICJsaXN0IiwgJmxpc3QsCi0JCQkibGlzdCBzdXBwb3J0ZWQgYXJjaGl2ZSBmb3JtYXRzIiksCisJCQlOXygibGlzdCBzdXBwb3J0ZWQgYXJjaGl2ZSBmb3JtYXRzIikpLAogCQlPUFRfR1JPVVAoIiIpLAotCQlPUFRfU1RSSU5HKDAsICJyZW1vdGUiLCAmcmVtb3RlLCAicmVwbyIsCi0JCQkicmV0cmlldmUgdGhlIGFyY2hpdmUgZnJvbSByZW1vdGUgcmVwb3NpdG9yeSA8cmVwbz4iKSwKLQkJT1BUX1NUUklORygwLCAiZXhlYyIsICZleGVjLCAiY21kIiwKLQkJCSJwYXRoIHRvIHRoZSByZW1vdGUgZ2l0LXVwbG9hZC1hcmNoaXZlIGNvbW1hbmQiKSwKKwkJT1BUX1NUUklORygwLCAicmVtb3RlIiwgJnJlbW90ZSwgTl8oInJlcG8iKSwKKwkJCU5fKCJyZXRyaWV2ZSB0aGUgYXJjaGl2ZSBmcm9tIHJlbW90ZSByZXBvc2l0b3J5IDxyZXBvPiIpKSwKKwkJT1BUX1NUUklORygwLCAiZXhlYyIsICZleGVjLCBOXygiY29tbWFuZCIpLAorCQkJTl8oInBhdGggdG8gdGhlIHJlbW90ZSBnaXQtdXBsb2FkLWFyY2hpdmUgY29tbWFuZCIpKSwKIAkJT1BUX0VORCgpCiAJfTsKIApkaWZmIC0tZ2l0IGEvYXJndi1hcnJheS5jIGIvYXJndi1hcnJheS5jCmluZGV4IDBiNWY4ODkuLjllOTYwZDUgMTAwNjQ0Ci0tLSBhL2FyZ3YtYXJyYXkuYworKysgYi9hcmd2LWFycmF5LmMKQEAgLTQ5LDEzICs0OSw0MiBAQAogCXZhX2VuZChhcCk7CiB9CiAKK3ZvaWQgYXJndl9hcnJheV9wb3Aoc3RydWN0IGFyZ3ZfYXJyYXkgKmFycmF5KQoreworCWlmICghYXJyYXktPmFyZ2MpCisJCXJldHVybjsKKwlmcmVlKChjaGFyICopYXJyYXktPmFyZ3ZbYXJyYXktPmFyZ2MgLSAxXSk7CisJYXJyYXktPmFyZ3ZbYXJyYXktPmFyZ2MgLSAxXSA9IE5VTEw7CisJYXJyYXktPmFyZ2MtLTsKK30KKwogdm9pZCBhcmd2X2FycmF5X2NsZWFyKHN0cnVjdCBhcmd2X2FycmF5ICphcnJheSkKIHsKIAlpZiAoYXJyYXktPmFyZ3YgIT0gZW1wdHlfYXJndikgewogCQlpbnQgaTsKIAkJZm9yIChpID0gMDsgaSA8IGFycmF5LT5hcmdjOyBpKyspCi0JCQlmcmVlKChjaGFyICoqKWFycmF5LT5hcmd2W2ldKTsKKwkJCWZyZWUoKGNoYXIgKilhcnJheS0+YXJndltpXSk7CiAJCWZyZWUoYXJyYXktPmFyZ3YpOwogCX0KIAlhcmd2X2FycmF5X2luaXQoYXJyYXkpOwogfQorCitjb25zdCBjaGFyICoqYXJndl9hcnJheV9kZXRhY2goc3RydWN0IGFyZ3ZfYXJyYXkgKmFycmF5LCBpbnQgKmFyZ2MpCit7CisJY29uc3QgY2hhciAqKmFyZ3YgPQorCQlhcnJheS0+YXJndiA9PSBlbXB0eV9hcmd2IHx8IGFycmF5LT5hcmdjID09IDAgPyBOVUxMIDogYXJyYXktPmFyZ3Y7CisJaWYgKGFyZ2MpCisJCSphcmdjID0gYXJyYXktPmFyZ2M7CisJYXJndl9hcnJheV9pbml0KGFycmF5KTsKKwlyZXR1cm4gYXJndjsKK30KKwordm9pZCBhcmd2X2FycmF5X2ZyZWVfZGV0YWNoZWQoY29uc3QgY2hhciAqKmFyZ3YpCit7CisJaWYgKGFyZ3YpIHsKKwkJaW50IGk7CisJCWZvciAoaSA9IDA7IGFyZ3ZbaV07IGkrKykKKwkJCWZyZWUoKGNoYXIgKiopYXJndltpXSk7CisJCWZyZWUoYXJndik7CisJfQorfQpkaWZmIC0tZ2l0IGEvYXJndi1hcnJheS5oIGIvYXJndi1hcnJheS5oCmluZGV4IGI5M2E2OWMuLjQwMjQ4ZDQgMTAwNjQ0Ci0tLSBhL2FyZ3YtYXJyYXkuaAorKysgYi9hcmd2LWFycmF5LmgKQEAgLTE2LDYgKzE2LDkgQEAKIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLDIsMykpKQogdm9pZCBhcmd2X2FycmF5X3B1c2hmKHN0cnVjdCBhcmd2X2FycmF5ICosIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKIHZvaWQgYXJndl9hcnJheV9wdXNobChzdHJ1Y3QgYXJndl9hcnJheSAqLCAuLi4pOwordm9pZCBhcmd2X2FycmF5X3BvcChzdHJ1Y3QgYXJndl9hcnJheSAqKTsKIHZvaWQgYXJndl9hcnJheV9jbGVhcihzdHJ1Y3QgYXJndl9hcnJheSAqKTsKK2NvbnN0IGNoYXIgKiphcmd2X2FycmF5X2RldGFjaChzdHJ1Y3QgYXJndl9hcnJheSAqYXJyYXksIGludCAqYXJnYyk7Cit2b2lkIGFyZ3ZfYXJyYXlfZnJlZV9kZXRhY2hlZChjb25zdCBjaGFyICoqYXJndik7CiAKICNlbmRpZiAvKiBBUkdWX0FSUkFZX0ggKi8KZGlmZiAtLWdpdCBhL2F0dHIuYyBiL2F0dHIuYwppbmRleCAzMDM3NTFmLi4wZTc3NGM2IDEwMDY0NAotLS0gYS9hdHRyLmMKKysrIGIvYXR0ci5jCkBAIC0xMTUsNiArMTE1LDEzIEBACiAJY29uc3QgY2hhciAqc2V0dG87CiB9OwogCitzdHJ1Y3QgcGF0dGVybiB7CisJY29uc3QgY2hhciAqcGF0dGVybjsKKwlpbnQgcGF0dGVybmxlbjsKKwlpbnQgbm93aWxkY2FyZGxlbjsKKwlpbnQgZmxhZ3M7CQkvKiBFWENfRkxBR18qICovCit9OworCiAvKgogICogT25lIHJ1bGUsIGFzIGZyb20gYSAuZ2l0YXR0cmlidXRlcyBmaWxlLgogICoKQEAgLTEzMSw3ICsxMzgsNyBAQAogICovCiBzdHJ1Y3QgbWF0Y2hfYXR0ciB7CiAJdW5pb24gewotCQljaGFyICpwYXR0ZXJuOworCQlzdHJ1Y3QgcGF0dGVybiBwYXQ7CiAJCXN0cnVjdCBnaXRfYXR0ciAqYXR0cjsKIAl9IHU7CiAJY2hhciBpc19tYWNybzsKQEAgLTI0MSw5ICsyNDgsMTggQEAKIAlpZiAoaXNfbWFjcm8pCiAJCXJlcy0+dS5hdHRyID0gZ2l0X2F0dHJfaW50ZXJuYWwobmFtZSwgbmFtZWxlbik7CiAJZWxzZSB7Ci0JCXJlcy0+dS5wYXR0ZXJuID0gKGNoYXIgKikmKHJlcy0+c3RhdGVbbnVtX2F0dHJdKTsKLQkJbWVtY3B5KHJlcy0+dS5wYXR0ZXJuLCBuYW1lLCBuYW1lbGVuKTsKLQkJcmVzLT51LnBhdHRlcm5bbmFtZWxlbl0gPSAwOworCQljaGFyICpwID0gKGNoYXIgKikmKHJlcy0+c3RhdGVbbnVtX2F0dHJdKTsKKwkJbWVtY3B5KHAsIG5hbWUsIG5hbWVsZW4pOworCQlyZXMtPnUucGF0LnBhdHRlcm4gPSBwOworCQlwYXJzZV9leGNsdWRlX3BhdHRlcm4oJnJlcy0+dS5wYXQucGF0dGVybiwKKwkJCQkgICAgICAmcmVzLT51LnBhdC5wYXR0ZXJubGVuLAorCQkJCSAgICAgICZyZXMtPnUucGF0LmZsYWdzLAorCQkJCSAgICAgICZyZXMtPnUucGF0Lm5vd2lsZGNhcmRsZW4pOworCQlpZiAocmVzLT51LnBhdC5mbGFncyAmIEVYQ19GTEFHX05FR0FUSVZFKSB7CisJCQl3YXJuaW5nKF8oIk5lZ2F0aXZlIHBhdHRlcm5zIGFyZSBpZ25vcmVkIGluIGdpdCBhdHRyaWJ1dGVzXG4iCisJCQkJICAiVXNlICdcXCEnIGZvciBsaXRlcmFsIGxlYWRpbmcgZXhjbGFtYXRpb24uIikpOworCQkJcmV0dXJuIE5VTEw7CisJCX0KIAl9CiAJcmVzLT5pc19tYWNybyA9IGlzX21hY3JvOwogCXJlcy0+bnVtX2F0dHIgPSBudW1fYXR0cjsKQEAgLTI3MCwxMyArMjg2LDE0IEBACiAgKiAocmVhZGluZyB0aGUgZmlsZSBmcm9tIHRvcCB0byBib3R0b20pLCAuZ2l0YXR0cmlidXRlIG9mIHRoZSByb290CiAgKiBkaXJlY3RvcnkgKGFnYWluLCByZWFkaW5nIHRoZSBmaWxlIGZyb20gdG9wIHRvIGJvdHRvbSkgZG93biB0byB0aGUKICAqIGN1cnJlbnQgZGlyZWN0b3J5LCBhbmQgdGhlbiBzY2FuIHRoZSBsaXN0IGJhY2t3YXJkcyB0byBmaW5kIHRoZSBmaXJzdCBtYXRjaC4KLSAqIFRoaXMgaXMgZXhhY3RseSB0aGUgc2FtZSBhcyB3aGF0IGV4Y2x1ZGVkKCkgZG9lcyBpbiBkaXIuYyB0byBkZWFsIHdpdGgKKyAqIFRoaXMgaXMgZXhhY3RseSB0aGUgc2FtZSBhcyB3aGF0IGlzX2V4Y2x1ZGVkKCkgZG9lcyBpbiBkaXIuYyB0byBkZWFsIHdpdGgKICAqIC5naXRpZ25vcmUKICAqLwogCiBzdGF0aWMgc3RydWN0IGF0dHJfc3RhY2sgewogCXN0cnVjdCBhdHRyX3N0YWNrICpwcmV2OwogCWNoYXIgKm9yaWdpbjsKKwlzaXplX3Qgb3JpZ2lubGVuOwogCXVuc2lnbmVkIG51bV9tYXRjaGVzOwogCXVuc2lnbmVkIGFsbG9jOwogCXN0cnVjdCBtYXRjaF9hdHRyICoqYXR0cnM7CkBAIC0zMDYsNyArMzIzLDcgQEAKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIgKmJ1aWx0aW5fYXR0cltdID0gewotCSJbYXR0cl1iaW5hcnkgLWRpZmYgLXRleHQiLAorCSJbYXR0cl1iaW5hcnkgLWRpZmYgLW1lcmdlIC10ZXh0IiwKIAlOVUxMLAogfTsKIApAQCAtMzUyLDggKzM2OSwxMSBAQAogCWNoYXIgYnVmWzIwNDhdOwogCWludCBsaW5lbm8gPSAwOwogCi0JaWYgKCFmcCkKKwlpZiAoIWZwKSB7CisJCWlmIChlcnJubyAhPSBFTk9FTlQgJiYgZXJybm8gIT0gRU5PVERJUikKKwkJCXdhcm5fb25faW5hY2Nlc3NpYmxlKHBhdGgpOwogCQlyZXR1cm4gTlVMTDsKKwl9CiAJcmVzID0geGNhbGxvYygxLCBzaXplb2YoKnJlcykpOwogCXdoaWxlIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmcCkpCiAJCWhhbmRsZV9hdHRyX2xpbmUocmVzLCBidWYsIHBhdGgsICsrbGluZW5vLCBtYWNyb19vayk7CkBAIC0zNjEsNDYgKzM4MSwxMyBAQAogCXJldHVybiByZXM7CiB9CiAKLXN0YXRpYyB2b2lkICpyZWFkX2luZGV4X2RhdGEoY29uc3QgY2hhciAqcGF0aCkKLXsKLQlpbnQgcG9zLCBsZW47Ci0JdW5zaWduZWQgbG9uZyBzejsKLQllbnVtIG9iamVjdF90eXBlIHR5cGU7Ci0Jdm9pZCAqZGF0YTsKLQlzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSA9IHVzZV9pbmRleCA/IHVzZV9pbmRleCA6ICZ0aGVfaW5kZXg7Ci0KLQlsZW4gPSBzdHJsZW4ocGF0aCk7Ci0JcG9zID0gaW5kZXhfbmFtZV9wb3MoaXN0YXRlLCBwYXRoLCBsZW4pOwotCWlmIChwb3MgPCAwKSB7Ci0JCS8qCi0JCSAqIFdlIG1pZ2h0IGJlIGluIHRoZSBtaWRkbGUgb2YgYSBtZXJnZSwgaW4gd2hpY2gKLQkJICogY2FzZSB3ZSB3b3VsZCByZWFkIHN0YWdlICMyIChvdXJzKS4KLQkJICovCi0JCWludCBpOwotCQlmb3IgKGkgPSAtcG9zIC0gMTsKLQkJICAgICAocG9zIDwgMCAmJiBpIDwgaXN0YXRlLT5jYWNoZV9uciAmJgotCQkgICAgICAhc3RyY21wKGlzdGF0ZS0+Y2FjaGVbaV0tPm5hbWUsIHBhdGgpKTsKLQkJICAgICBpKyspCi0JCQlpZiAoY2Vfc3RhZ2UoaXN0YXRlLT5jYWNoZVtpXSkgPT0gMikKLQkJCQlwb3MgPSBpOwotCX0KLQlpZiAocG9zIDwgMCkKLQkJcmV0dXJuIE5VTEw7Ci0JZGF0YSA9IHJlYWRfc2hhMV9maWxlKGlzdGF0ZS0+Y2FjaGVbcG9zXS0+c2hhMSwgJnR5cGUsICZzeik7Ci0JaWYgKCFkYXRhIHx8IHR5cGUgIT0gT0JKX0JMT0IpIHsKLQkJZnJlZShkYXRhKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCXJldHVybiBkYXRhOwotfQotCiBzdGF0aWMgc3RydWN0IGF0dHJfc3RhY2sgKnJlYWRfYXR0cl9mcm9tX2luZGV4KGNvbnN0IGNoYXIgKnBhdGgsIGludCBtYWNyb19vaykKIHsKIAlzdHJ1Y3QgYXR0cl9zdGFjayAqcmVzOwogCWNoYXIgKmJ1ZiwgKnNwOwogCWludCBsaW5lbm8gPSAwOwogCi0JYnVmID0gcmVhZF9pbmRleF9kYXRhKHBhdGgpOworCWJ1ZiA9IHJlYWRfYmxvYl9kYXRhX2Zyb21faW5kZXgodXNlX2luZGV4ID8gdXNlX2luZGV4IDogJnRoZV9pbmRleCwgcGF0aCwgTlVMTCk7CiAJaWYgKCFidWYpCiAJCXJldHVybiBOVUxMOwogCkBAIC00OTcsNiArNDg0LDcgQEAKIHN0YXRpYyB2b2lkIGJvb3RzdHJhcF9hdHRyX3N0YWNrKHZvaWQpCiB7CiAJc3RydWN0IGF0dHJfc3RhY2sgKmVsZW07CisJY2hhciAqeGRnX2F0dHJpYnV0ZXNfZmlsZTsKIAogCWlmIChhdHRyX3N0YWNrKQogCQlyZXR1cm47CkBAIC01MTUsNiArNTAzLDEwIEBACiAJCX0KIAl9CiAKKwlpZiAoIWdpdF9hdHRyaWJ1dGVzX2ZpbGUpIHsKKwkJaG9tZV9jb25maWdfcGF0aHMoTlVMTCwgJnhkZ19hdHRyaWJ1dGVzX2ZpbGUsICJhdHRyaWJ1dGVzIik7CisJCWdpdF9hdHRyaWJ1dGVzX2ZpbGUgPSB4ZGdfYXR0cmlidXRlc19maWxlOworCX0KIAlpZiAoZ2l0X2F0dHJpYnV0ZXNfZmlsZSkgewogCQllbGVtID0gcmVhZF9hdHRyX2Zyb21fZmlsZShnaXRfYXR0cmlidXRlc19maWxlLCAxKTsKIAkJaWYgKGVsZW0pIHsKQEAgLTUyNyw2ICs1MTksNyBAQAogCWlmICghaXNfYmFyZV9yZXBvc2l0b3J5KCkgfHwgZGlyZWN0aW9uID09IEdJVF9BVFRSX0lOREVYKSB7CiAJCWVsZW0gPSByZWFkX2F0dHIoR0lUQVRUUklCVVRFU19GSUxFLCAxKTsKIAkJZWxlbS0+b3JpZ2luID0geHN0cmR1cCgiIik7CisJCWVsZW0tPm9yaWdpbmxlbiA9IDA7CiAJCWVsZW0tPnByZXYgPSBhdHRyX3N0YWNrOwogCQlhdHRyX3N0YWNrID0gZWxlbTsKIAkJZGVidWdfcHVzaChlbGVtKTsKQEAgLTU0MCwxOCArNTMzLDEyIEBACiAJYXR0cl9zdGFjayA9IGVsZW07CiB9CiAKLXN0YXRpYyB2b2lkIHByZXBhcmVfYXR0cl9zdGFjayhjb25zdCBjaGFyICpwYXRoKQorc3RhdGljIHZvaWQgcHJlcGFyZV9hdHRyX3N0YWNrKGNvbnN0IGNoYXIgKnBhdGgsIGludCBkaXJsZW4pCiB7CiAJc3RydWN0IGF0dHJfc3RhY2sgKmVsZW0sICppbmZvOwotCWludCBkaXJsZW4sIGxlbjsKKwlpbnQgbGVuOwogCWNvbnN0IGNoYXIgKmNwOwogCi0JY3AgPSBzdHJyY2hyKHBhdGgsICcvJyk7Ci0JaWYgKCFjcCkKLQkJZGlybGVuID0gMDsKLQllbHNlCi0JCWRpcmxlbiA9IGNwIC0gcGF0aDsKLQogCS8qCiAJICogQXQgdGhlIGJvdHRvbSBvZiB0aGUgYXR0cmlidXRlIHN0YWNrIGlzIHRoZSBidWlsdC1pbgogCSAqIHNldCBvZiBhdHRyaWJ1dGUgZGVmaW5pdGlvbnMsIGZvbGxvd2VkIGJ5IHRoZSBjb250ZW50cwpAQCAtNjIwLDcgKzYwNyw3IEBACiAJCQlzdHJidWZfYWRkc3RyKCZwYXRoYnVmLCBHSVRBVFRSSUJVVEVTX0ZJTEUpOwogCQkJZWxlbSA9IHJlYWRfYXR0cihwYXRoYnVmLmJ1ZiwgMCk7CiAJCQlzdHJidWZfc2V0bGVuKCZwYXRoYnVmLCBjcCAtIHBhdGgpOwotCQkJZWxlbS0+b3JpZ2luID0gc3RyYnVmX2RldGFjaCgmcGF0aGJ1ZiwgTlVMTCk7CisJCQllbGVtLT5vcmlnaW4gPSBzdHJidWZfZGV0YWNoKCZwYXRoYnVmLCAmZWxlbS0+b3JpZ2lubGVuKTsKIAkJCWVsZW0tPnByZXYgPSBhdHRyX3N0YWNrOwogCQkJYXR0cl9zdGFjayA9IGVsZW07CiAJCQlkZWJ1Z19wdXNoKGVsZW0pOwpAQCAtNjM3LDI4ICs2MjQsMjYgQEAKIH0KIAogc3RhdGljIGludCBwYXRoX21hdGNoZXMoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBwYXRobGVuLAotCQkJY29uc3QgY2hhciAqcGF0dGVybiwKKwkJCWludCBiYXNlbmFtZV9vZmZzZXQsCisJCQljb25zdCBzdHJ1Y3QgcGF0dGVybiAqcGF0LAogCQkJY29uc3QgY2hhciAqYmFzZSwgaW50IGJhc2VsZW4pCiB7Ci0JaWYgKCFzdHJjaHIocGF0dGVybiwgJy8nKSkgewotCQkvKiBtYXRjaCBiYXNlbmFtZSAqLwotCQljb25zdCBjaGFyICpiYXNlbmFtZSA9IHN0cnJjaHIocGF0aG5hbWUsICcvJyk7Ci0JCWJhc2VuYW1lID0gYmFzZW5hbWUgPyBiYXNlbmFtZSArIDEgOiBwYXRobmFtZTsKLQkJcmV0dXJuIChmbm1hdGNoX2ljYXNlKHBhdHRlcm4sIGJhc2VuYW1lLCAwKSA9PSAwKTsKLQl9Ci0JLyoKLQkgKiBtYXRjaCB3aXRoIEZOTV9QQVRITkFNRTsgdGhlIHBhdHRlcm4gaGFzIGJhc2UgaW1wbGljaXRseQotCSAqIGluIGZyb250IG9mIGl0LgotCSAqLwotCWlmICgqcGF0dGVybiA9PSAnLycpCi0JCXBhdHRlcm4rKzsKLQlpZiAocGF0aGxlbiA8IGJhc2VsZW4gfHwKLQkgICAgKGJhc2VsZW4gJiYgcGF0aG5hbWVbYmFzZWxlbl0gIT0gJy8nKSB8fAotCSAgICBzdHJuY21wKHBhdGhuYW1lLCBiYXNlLCBiYXNlbGVuKSkKKwljb25zdCBjaGFyICpwYXR0ZXJuID0gcGF0LT5wYXR0ZXJuOworCWludCBwcmVmaXggPSBwYXQtPm5vd2lsZGNhcmRsZW47CisJaW50IGlzZGlyID0gKHBhdGhsZW4gJiYgcGF0aG5hbWVbcGF0aGxlbiAtIDFdID09ICcvJyk7CisKKwlpZiAoKHBhdC0+ZmxhZ3MgJiBFWENfRkxBR19NVVNUQkVESVIpICYmICFpc2RpcikKIAkJcmV0dXJuIDA7Ci0JaWYgKGJhc2VsZW4gIT0gMCkKLQkJYmFzZWxlbisrOwotCXJldHVybiBmbm1hdGNoX2ljYXNlKHBhdHRlcm4sIHBhdGhuYW1lICsgYmFzZWxlbiwgRk5NX1BBVEhOQU1FKSA9PSAwOworCisJaWYgKHBhdC0+ZmxhZ3MgJiBFWENfRkxBR19OT0RJUikgeworCQlyZXR1cm4gbWF0Y2hfYmFzZW5hbWUocGF0aG5hbWUgKyBiYXNlbmFtZV9vZmZzZXQsCisJCQkJICAgICAgcGF0aGxlbiAtIGJhc2VuYW1lX29mZnNldCAtIGlzZGlyLAorCQkJCSAgICAgIHBhdHRlcm4sIHByZWZpeCwKKwkJCQkgICAgICBwYXQtPnBhdHRlcm5sZW4sIHBhdC0+ZmxhZ3MpOworCX0KKwlyZXR1cm4gbWF0Y2hfcGF0aG5hbWUocGF0aG5hbWUsIHBhdGhsZW4gLSBpc2RpciwKKwkJCSAgICAgIGJhc2UsIGJhc2VsZW4sCisJCQkgICAgICBwYXR0ZXJuLCBwcmVmaXgsIHBhdC0+cGF0dGVybmxlbiwgcGF0LT5mbGFncyk7CiB9CiAKIHN0YXRpYyBpbnQgbWFjcm9leHBhbmRfb25lKGludCBhdHRyX25yLCBpbnQgcmVtKTsKQEAgLTY3NSw3ICs2NjAsNyBAQAogCiAJCWlmICgqbiA9PSBBVFRSX19VTktOT1dOKSB7CiAJCQlkZWJ1Z19zZXQod2hhdCwKLQkJCQkgIGEtPmlzX21hY3JvID8gYS0+dS5hdHRyLT5uYW1lIDogYS0+dS5wYXR0ZXJuLAorCQkJCSAgYS0+aXNfbWFjcm8gPyBhLT51LmF0dHItPm5hbWUgOiBhLT51LnBhdC5wYXR0ZXJuLAogCQkJCSAgYXR0ciwgdik7CiAJCQkqbiA9IHY7CiAJCQlyZW0tLTsKQEAgLTY4NSw3ICs2NzAsOCBAQAogCXJldHVybiByZW07CiB9CiAKLXN0YXRpYyBpbnQgZmlsbChjb25zdCBjaGFyICpwYXRoLCBpbnQgcGF0aGxlbiwgc3RydWN0IGF0dHJfc3RhY2sgKnN0aywgaW50IHJlbSkKK3N0YXRpYyBpbnQgZmlsbChjb25zdCBjaGFyICpwYXRoLCBpbnQgcGF0aGxlbiwgaW50IGJhc2VuYW1lX29mZnNldCwKKwkJc3RydWN0IGF0dHJfc3RhY2sgKnN0aywgaW50IHJlbSkKIHsKIAlpbnQgaTsKIAljb25zdCBjaGFyICpiYXNlID0gc3RrLT5vcmlnaW4gPyBzdGstPm9yaWdpbiA6ICIiOwpAQCAtNjk0LDggKzY4MCw4IEBACiAJCXN0cnVjdCBtYXRjaF9hdHRyICphID0gc3RrLT5hdHRyc1tpXTsKIAkJaWYgKGEtPmlzX21hY3JvKQogCQkJY29udGludWU7Ci0JCWlmIChwYXRoX21hdGNoZXMocGF0aCwgcGF0aGxlbiwKLQkJCQkgYS0+dS5wYXR0ZXJuLCBiYXNlLCBzdHJsZW4oYmFzZSkpKQorCQlpZiAocGF0aF9tYXRjaGVzKHBhdGgsIHBhdGhsZW4sIGJhc2VuYW1lX29mZnNldCwKKwkJCQkgJmEtPnUucGF0LCBiYXNlLCBzdGstPm9yaWdpbmxlbikpCiAJCQlyZW0gPSBmaWxsX29uZSgiZmlsbCIsIGEsIHJlbSk7CiAJfQogCXJldHVybiByZW07CkBAIC03MzIsMTYgKzcxOCwzMCBAQAogc3RhdGljIHZvaWQgY29sbGVjdF9hbGxfYXR0cnMoY29uc3QgY2hhciAqcGF0aCkKIHsKIAlzdHJ1Y3QgYXR0cl9zdGFjayAqc3RrOwotCWludCBpLCBwYXRobGVuLCByZW07CisJaW50IGksIHBhdGhsZW4sIHJlbSwgZGlybGVuOworCWNvbnN0IGNoYXIgKmNwLCAqbGFzdF9zbGFzaCA9IE5VTEw7CisJaW50IGJhc2VuYW1lX29mZnNldDsKIAotCXByZXBhcmVfYXR0cl9zdGFjayhwYXRoKTsKKwlmb3IgKGNwID0gcGF0aDsgKmNwOyBjcCsrKSB7CisJCWlmICgqY3AgPT0gJy8nICYmIGNwWzFdKQorCQkJbGFzdF9zbGFzaCA9IGNwOworCX0KKwlwYXRobGVuID0gY3AgLSBwYXRoOworCWlmIChsYXN0X3NsYXNoKSB7CisJCWJhc2VuYW1lX29mZnNldCA9IGxhc3Rfc2xhc2ggKyAxIC0gcGF0aDsKKwkJZGlybGVuID0gbGFzdF9zbGFzaCAtIHBhdGg7CisJfSBlbHNlIHsKKwkJYmFzZW5hbWVfb2Zmc2V0ID0gMDsKKwkJZGlybGVuID0gMDsKKwl9CisKKwlwcmVwYXJlX2F0dHJfc3RhY2socGF0aCwgZGlybGVuKTsKIAlmb3IgKGkgPSAwOyBpIDwgYXR0cl9ucjsgaSsrKQogCQljaGVja19hbGxfYXR0cltpXS52YWx1ZSA9IEFUVFJfX1VOS05PV047CiAKLQlwYXRobGVuID0gc3RybGVuKHBhdGgpOwogCXJlbSA9IGF0dHJfbnI7CiAJZm9yIChzdGsgPSBhdHRyX3N0YWNrOyAwIDwgcmVtICYmIHN0azsgc3RrID0gc3RrLT5wcmV2KQotCQlyZW0gPSBmaWxsKHBhdGgsIHBhdGhsZW4sIHN0aywgcmVtKTsKKwkJcmVtID0gZmlsbChwYXRoLCBwYXRobGVuLCBiYXNlbmFtZV9vZmZzZXQsIHN0aywgcmVtKTsKIH0KIAogaW50IGdpdF9jaGVja19hdHRyKGNvbnN0IGNoYXIgKnBhdGgsIGludCBudW0sIHN0cnVjdCBnaXRfYXR0cl9jaGVjayAqY2hlY2spCmRpZmYgLS1naXQgYS9iaXNlY3QuYyBiL2Jpc2VjdC5jCmluZGV4IDQ4YWNmNzMuLjM3NGQ5ZTIgMTAwNjQ0Ci0tLSBhL2Jpc2VjdC5jCisrKyBiL2Jpc2VjdC5jCkBAIC01MjUsOSArNTI1LDkgQEAKICAqIGlzIGluY3JlYXNlZCBieSBvbmUgYmV0d2VlbiBlYWNoIGNhbGwsIGJ1dCB0aGF0IHNob3VsZCBub3QgbWF0dGVyCiAgKiBmb3IgdGhpcyBhcHBsaWNhdGlvbi4KICAqLwotc3RhdGljIGludCBnZXRfcHJuKGludCBjb3VudCkgeworc3RhdGljIHVuc2lnbmVkIGdldF9wcm4odW5zaWduZWQgY291bnQpIHsKIAljb3VudCA9IGNvdW50ICogMTEwMzUxNTI0NSArIDEyMzQ1OwotCXJldHVybiAoKHVuc2lnbmVkKShjb3VudC82NTUzNikgJSBQUk5fTU9EVUxPKTsKKwlyZXR1cm4gKGNvdW50LzY1NTM2KSAlIFBSTl9NT0RVTE87CiB9CiAKIC8qCkBAIC04MzMsNyArODMzLDcgQEAKICAqLwogc3RhdGljIHZvaWQgY2hlY2tfZ29vZF9hcmVfYW5jZXN0b3JzX29mX2JhZChjb25zdCBjaGFyICpwcmVmaXgsIGludCBub19jaGVja291dCkKIHsKLQljaGFyICpmaWxlbmFtZSA9IHhzdHJkdXAoZ2l0X3BhdGgoIkJJU0VDVF9BTkNFU1RPUlNfT0siKSk7CisJY2hhciAqZmlsZW5hbWUgPSBnaXRfcGF0aGR1cCgiQklTRUNUX0FOQ0VTVE9SU19PSyIpOwogCXN0cnVjdCBzdGF0IHN0OwogCWludCBmZDsKIApAQCAtOTU2LDMgKzk1Niw0MSBAQAogCXJldHVybiBiaXNlY3RfY2hlY2tvdXQoYmlzZWN0X3Jldl9oZXgsIG5vX2NoZWNrb3V0KTsKIH0KIAorc3RhdGljIGlubGluZSBpbnQgbG9nMmkoaW50IG4pCit7CisJaW50IGxvZzIgPSAwOworCisJZm9yICg7IG4gPiAxOyBuID4+PSAxKQorCQlsb2cyKys7CisKKwlyZXR1cm4gbG9nMjsKK30KKworc3RhdGljIGlubGluZSBpbnQgZXhwMmkoaW50IG4pCit7CisJcmV0dXJuIDEgPDwgbjsKK30KKworLyoKKyAqIEVzdGltYXRlIHRoZSBudW1iZXIgb2YgYmlzZWN0IHN0ZXBzIGxlZnQgKGFmdGVyIHRoZSBjdXJyZW50IHN0ZXApCisgKgorICogRm9yIGFueSB4IGJldHdlZW4gMCBpbmNsdWRlZCBhbmQgMl5uIGV4Y2x1ZGVkLCB0aGUgcHJvYmFiaWxpdHkgZm9yCisgKiBuIC0gMSBzdGVwcyBsZWZ0IGxvb2tzIGxpa2U6CisgKgorICogUCgyXm4gKyB4KSA9PSAoMl5uIC0geCkgLyAoMl5uICsgeCkKKyAqCisgKiBhbmQgUCgyXm4gKyB4KSA8IDAuNSBtZWFucyAyXm4gPCAzeAorICovCitpbnQgZXN0aW1hdGVfYmlzZWN0X3N0ZXBzKGludCBhbGwpCit7CisJaW50IG4sIHgsIGU7CisKKwlpZiAoYWxsIDwgMykKKwkJcmV0dXJuIDA7CisKKwluID0gbG9nMmkoYWxsKTsKKwllID0gZXhwMmkobik7CisJeCA9IGFsbCAtIGU7CisKKwlyZXR1cm4gKGUgPCAzICogeCkgPyBuIDogbiAtIDE7Cit9CmRpZmYgLS1naXQgYS9iaXNlY3QuaCBiL2Jpc2VjdC5oCmluZGV4IGVjM2MzZmYuLjJhNmM4MzEgMTAwNjQ0Ci0tLSBhL2Jpc2VjdC5oCisrKyBiL2Jpc2VjdC5oCkBAIC0xMSwxMCArMTEsNiBAQAogCQkJCQkgIGludCAqY291bnQsCiAJCQkJCSAgaW50ICpza2lwcGVkX2ZpcnN0KTsKIAotZXh0ZXJuIHZvaWQgcHJpbnRfY29tbWl0X2xpc3Qoc3RydWN0IGNvbW1pdF9saXN0ICpsaXN0LAotCQkJICAgICAgY29uc3QgY2hhciAqZm9ybWF0X2N1ciwKLQkJCSAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdF9sYXN0KTsKLQogI2RlZmluZSBCSVNFQ1RfU0hPV19BTEwJCSgxPDwwKQogI2RlZmluZSBSRVZfTElTVF9RVUlFVAkJKDE8PDEpCiAKZGlmZiAtLWdpdCBhL2Jsb2NrLXNoYTEvc2hhMS5jIGIvYmxvY2stc2hhMS9zaGExLmMKaW5kZXggYzAwNTRhMC4uYThkNGJmOSAxMDA2NDQKLS0tIGEvYmxvY2stc2hhMS9zaGExLmMKKysrIGIvYmxvY2stc2hhMS9zaGExLmMKQEAgLTEwMSw4ICsxMDEsOCBAQAogICogV2hlcmUgZG8gd2UgZ2V0IHRoZSBzb3VyY2UgZnJvbT8gVGhlIGZpcnN0IDE2IGl0ZXJhdGlvbnMgZ2V0IGl0IGZyb20KICAqIHRoZSBpbnB1dCBkYXRhLCB0aGUgbmV4dCBtaXggaXQgZnJvbSB0aGUgNTEyLWJpdCBhcnJheS4KICAqLwotI2RlZmluZSBTSEFfU1JDKHQpIGdldF9iZTMyKGRhdGEgKyB0KQotI2RlZmluZSBTSEFfTUlYKHQpIFNIQV9ST0woVyh0KzEzKSBeIFcodCs4KSBeIFcodCsyKSBeIFcodCksIDEpCisjZGVmaW5lIFNIQV9TUkModCkgZ2V0X2JlMzIoKHVuc2lnbmVkIGNoYXIgKikgYmxvY2sgKyAodCkqNCkKKyNkZWZpbmUgU0hBX01JWCh0KSBTSEFfUk9MKFcoKHQpKzEzKSBeIFcoKHQpKzgpIF4gVygodCkrMikgXiBXKHQpLCAxKTsKIAogI2RlZmluZSBTSEFfUk9VTkQodCwgaW5wdXQsIGZuLCBjb25zdGFudCwgQSwgQiwgQywgRCwgRSkgZG8geyBcCiAJdW5zaWduZWQgaW50IFRFTVAgPSBpbnB1dCh0KTsgc2V0Vyh0LCBURU1QKTsgXApAQCAtMTE1LDcgKzExNSw3IEBACiAjZGVmaW5lIFRfNDBfNTkodCwgQSwgQiwgQywgRCwgRSkgU0hBX1JPVU5EKHQsIFNIQV9NSVgsICgoQiZDKSsoRCYoQl5DKSkpICwgMHg4ZjFiYmNkYywgQSwgQiwgQywgRCwgRSApCiAjZGVmaW5lIFRfNjBfNzkodCwgQSwgQiwgQywgRCwgRSkgU0hBX1JPVU5EKHQsIFNIQV9NSVgsIChCXkNeRCkgLCAgMHhjYTYyYzFkNiwgQSwgQiwgQywgRCwgRSApCiAKLXN0YXRpYyB2b2lkIGJsa19TSEExX0Jsb2NrKGJsa19TSEFfQ1RYICpjdHgsIGNvbnN0IHVuc2lnbmVkIGludCAqZGF0YSkKK3N0YXRpYyB2b2lkIGJsa19TSEExX0Jsb2NrKGJsa19TSEFfQ1RYICpjdHgsIGNvbnN0IHZvaWQgKmJsb2NrKQogewogCXVuc2lnbmVkIGludCBBLEIsQyxELEU7CiAJdW5zaWduZWQgaW50IGFycmF5WzE2XTsKQEAgLTEyNiw3ICsxMjYsNyBAQAogCUQgPSBjdHgtPkhbM107CiAJRSA9IGN0eC0+SFs0XTsKIAotCS8qIFJvdW5kIDEgLSBpdGVyYXRpb25zIDAtMTYgdGFrZSB0aGVpciBpbnB1dCBmcm9tICdkYXRhJyAqLworCS8qIFJvdW5kIDEgLSBpdGVyYXRpb25zIDAtMTYgdGFrZSB0aGVpciBpbnB1dCBmcm9tICdibG9jaycgKi8KIAlUXzBfMTUoIDAsIEEsIEIsIEMsIEQsIEUpOwogCVRfMF8xNSggMSwgRSwgQSwgQiwgQywgRCk7CiAJVF8wXzE1KCAyLCBELCBFLCBBLCBCLCBDKTsKZGlmZiAtLWdpdCBhL2JyYW5jaC5jIGIvYnJhbmNoLmMKaW5kZXggZWNjZGFmOS4uYzVjNjk4NCAxMDA2NDQKLS0tIGEvYnJhbmNoLmMKKysrIGIvYnJhbmNoLmMKQEAgLTU3LDcgKzU3LDcgQEAKIAlpZiAocmVtb3RlX2lzX2JyYW5jaAogCSAgICAmJiAhc3RyY21wKGxvY2FsLCBzaG9ydG5hbWUpCiAJICAgICYmICFvcmlnaW4pIHsKLQkJd2FybmluZygiTm90IHNldHRpbmcgYnJhbmNoICVzIGFzIGl0cyBvd24gdXBzdHJlYW0uIiwKKwkJd2FybmluZyhfKCJOb3Qgc2V0dGluZyBicmFuY2ggJXMgYXMgaXRzIG93biB1cHN0cmVhbS4iKSwKIAkJCWxvY2FsKTsKIAkJcmV0dXJuOwogCX0KQEAgLTc0LDI1ICs3NCwzMyBAQAogCQlzdHJidWZfYWRkZigma2V5LCAiYnJhbmNoLiVzLnJlYmFzZSIsIGxvY2FsKTsKIAkJZ2l0X2NvbmZpZ19zZXQoa2V5LmJ1ZiwgInRydWUiKTsKIAl9CisJc3RyYnVmX3JlbGVhc2UoJmtleSk7CiAKIAlpZiAoZmxhZyAmIEJSQU5DSF9DT05GSUdfVkVSQk9TRSkgewotCQlzdHJidWZfcmVzZXQoJmtleSk7Ci0KLQkJc3RyYnVmX2FkZHN0cigma2V5LCBvcmlnaW4gPyAicmVtb3RlIiA6ICJsb2NhbCIpOwotCi0JCS8qIEFyZSB3ZSB0cmFja2luZyBhIHByb3BlciAiYnJhbmNoIj8gKi8KLQkJaWYgKHJlbW90ZV9pc19icmFuY2gpIHsKLQkJCXN0cmJ1Zl9hZGRmKCZrZXksICIgYnJhbmNoICVzIiwgc2hvcnRuYW1lKTsKLQkJCWlmIChvcmlnaW4pCi0JCQkJc3RyYnVmX2FkZGYoJmtleSwgIiBmcm9tICVzIiwgb3JpZ2luKTsKLQkJfQorCQlpZiAocmVtb3RlX2lzX2JyYW5jaCAmJiBvcmlnaW4pCisJCQlwcmludGZfbG4ocmViYXNpbmcgPworCQkJCSAgXygiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgYnJhbmNoICVzIGZyb20gJXMgYnkgcmViYXNpbmcuIikgOgorCQkJCSAgXygiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgYnJhbmNoICVzIGZyb20gJXMuIiksCisJCQkJICBsb2NhbCwgc2hvcnRuYW1lLCBvcmlnaW4pOworCQllbHNlIGlmIChyZW1vdGVfaXNfYnJhbmNoICYmICFvcmlnaW4pCisJCQlwcmludGZfbG4ocmViYXNpbmcgPworCQkJCSAgXygiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCBicmFuY2ggJXMgYnkgcmViYXNpbmcuIikgOgorCQkJCSAgXygiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCBicmFuY2ggJXMuIiksCisJCQkJICBsb2NhbCwgc2hvcnRuYW1lKTsKKwkJZWxzZSBpZiAoIXJlbW90ZV9pc19icmFuY2ggJiYgb3JpZ2luKQorCQkJcHJpbnRmX2xuKHJlYmFzaW5nID8KKwkJCQkgIF8oIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgcmVtb3RlIHJlZiAlcyBieSByZWJhc2luZy4iKSA6CisJCQkJICBfKCJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSByZWYgJXMuIiksCisJCQkJICBsb2NhbCwgcmVtb3RlKTsKKwkJZWxzZSBpZiAoIXJlbW90ZV9pc19icmFuY2ggJiYgIW9yaWdpbikKKwkJCXByaW50Zl9sbihyZWJhc2luZyA/CisJCQkJICBfKCJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIGxvY2FsIHJlZiAlcyBieSByZWJhc2luZy4iKSA6CisJCQkJICBfKCJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIGxvY2FsIHJlZiAlcy4iKSwKKwkJCQkgIGxvY2FsLCByZW1vdGUpOwogCQllbHNlCi0JCQlzdHJidWZfYWRkZigma2V5LCAiIHJlZiAlcyIsIHJlbW90ZSk7Ci0JCXByaW50ZigiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayAlcyVzLlxuIiwKLQkJICAgICAgIGxvY2FsLCBrZXkuYnVmLAotCQkgICAgICAgcmViYXNpbmcgPyAiIGJ5IHJlYmFzaW5nIiA6ICIiKTsKKwkJCWRpZSgiQlVHOiBpbXBvc3NpYmxlIGNvbWJpbmF0aW9uIG9mICVkIGFuZCAlcCIsCisJCQkgICAgcmVtb3RlX2lzX2JyYW5jaCwgb3JpZ2luKTsKIAl9Ci0Jc3RyYnVmX3JlbGVhc2UoJmtleSk7CiB9CiAKIC8qCkBAIC0xMDcsNyArMTE1LDcgQEAKIAlpbnQgY29uZmlnX2ZsYWdzID0gcXVpZXQgPyAwIDogQlJBTkNIX0NPTkZJR19WRVJCT1NFOwogCiAJaWYgKHN0cmxlbihuZXdfcmVmKSA+IDEwMjQgLSA3IC0gNyAtIDEpCi0JCXJldHVybiBlcnJvcigiVHJhY2tpbmcgbm90IHNldCB1cDogbmFtZSB0b28gbG9uZzogJXMiLAorCQlyZXR1cm4gZXJyb3IoXygiVHJhY2tpbmcgbm90IHNldCB1cDogbmFtZSB0b28gbG9uZzogJXMiKSwKIAkJCQluZXdfcmVmKTsKIAogCW1lbXNldCgmdHJhY2tpbmcsIDAsIHNpemVvZih0cmFja2luZykpOwpAQCAtMTI2LDcgKzEzNCw3IEBACiAJCX0KIAogCWlmICh0cmFja2luZy5tYXRjaGVzID4gMSkKLQkJcmV0dXJuIGVycm9yKCJOb3QgdHJhY2tpbmc6IGFtYmlndW91cyBpbmZvcm1hdGlvbiBmb3IgcmVmICVzIiwKKwkJcmV0dXJuIGVycm9yKF8oIk5vdCB0cmFja2luZzogYW1iaWd1b3VzIGluZm9ybWF0aW9uIGZvciByZWYgJXMiKSwKIAkJCQlvcmlnX3JlZik7CiAKIAlpbnN0YWxsX2JyYW5jaF9jb25maWcoY29uZmlnX2ZsYWdzLCBuZXdfcmVmLCB0cmFja2luZy5yZW1vdGUsCkBAIC0xNzEsMTIgKzE3OSwxMiBAQAogCQkJICAgIGludCBmb3JjZSwgaW50IGF0dHJfb25seSkKIHsKIAlpZiAoc3RyYnVmX2NoZWNrX2JyYW5jaF9yZWYocmVmLCBuYW1lKSkKLQkJZGllKCInJXMnIGlzIG5vdCBhIHZhbGlkIGJyYW5jaCBuYW1lLiIsIG5hbWUpOworCQlkaWUoXygiJyVzJyBpcyBub3QgYSB2YWxpZCBicmFuY2ggbmFtZS4iKSwgbmFtZSk7CiAKIAlpZiAoIXJlZl9leGlzdHMocmVmLT5idWYpKQogCQlyZXR1cm4gMDsKIAllbHNlIGlmICghZm9yY2UgJiYgIWF0dHJfb25seSkKLQkJZGllKCJBIGJyYW5jaCBuYW1lZCAnJXMnIGFscmVhZHkgZXhpc3RzLiIsIHJlZi0+YnVmICsgc3RybGVuKCJyZWZzL2hlYWRzLyIpKTsKKwkJZGllKF8oIkEgYnJhbmNoIG5hbWVkICclcycgYWxyZWFkeSBleGlzdHMuIiksIHJlZi0+YnVmICsgc3RybGVuKCJyZWZzL2hlYWRzLyIpKTsKIAogCWlmICghYXR0cl9vbmx5KSB7CiAJCWNvbnN0IGNoYXIgKmhlYWQ7CkBAIC0xODQsMTEgKzE5Miw0MCBAQAogCiAJCWhlYWQgPSByZXNvbHZlX3JlZl91bnNhZmUoIkhFQUQiLCBzaGExLCAwLCBOVUxMKTsKIAkJaWYgKCFpc19iYXJlX3JlcG9zaXRvcnkoKSAmJiBoZWFkICYmICFzdHJjbXAoaGVhZCwgcmVmLT5idWYpKQotCQkJZGllKCJDYW5ub3QgZm9yY2UgdXBkYXRlIHRoZSBjdXJyZW50IGJyYW5jaC4iKTsKKwkJCWRpZShfKCJDYW5ub3QgZm9yY2UgdXBkYXRlIHRoZSBjdXJyZW50IGJyYW5jaC4iKSk7CiAJfQogCXJldHVybiAxOwogfQogCitzdGF0aWMgaW50IGNoZWNrX3RyYWNraW5nX2JyYW5jaChzdHJ1Y3QgcmVtb3RlICpyZW1vdGUsIHZvaWQgKmNiX2RhdGEpCit7CisJY2hhciAqdHJhY2tpbmdfYnJhbmNoID0gY2JfZGF0YTsKKwlzdHJ1Y3QgcmVmc3BlYyBxdWVyeTsKKwltZW1zZXQoJnF1ZXJ5LCAwLCBzaXplb2Yoc3RydWN0IHJlZnNwZWMpKTsKKwlxdWVyeS5kc3QgPSB0cmFja2luZ19icmFuY2g7CisJcmV0dXJuICEocmVtb3RlX2ZpbmRfdHJhY2tpbmcocmVtb3RlLCAmcXVlcnkpIHx8CisJCSBwcmVmaXhjbXAocXVlcnkuc3JjLCAicmVmcy9oZWFkcy8iKSk7Cit9CisKK3N0YXRpYyBpbnQgdmFsaWRhdGVfcmVtb3RlX3RyYWNraW5nX2JyYW5jaChjaGFyICpyZWYpCit7CisJcmV0dXJuICFmb3JfZWFjaF9yZW1vdGUoY2hlY2tfdHJhY2tpbmdfYnJhbmNoLCByZWYpOworfQorCitzdGF0aWMgY29uc3QgY2hhciB1cHN0cmVhbV9ub3RfYnJhbmNoW10gPQorTl8oIkNhbm5vdCBzZXR1cCB0cmFja2luZyBpbmZvcm1hdGlvbjsgc3RhcnRpbmcgcG9pbnQgJyVzJyBpcyBub3QgYSBicmFuY2guIik7CitzdGF0aWMgY29uc3QgY2hhciB1cHN0cmVhbV9taXNzaW5nW10gPQorTl8oInRoZSByZXF1ZXN0ZWQgdXBzdHJlYW0gYnJhbmNoICclcycgZG9lcyBub3QgZXhpc3QiKTsKK3N0YXRpYyBjb25zdCBjaGFyIHVwc3RyZWFtX2FkdmljZVtdID0KK05fKCJcbiIKKyJJZiB5b3UgYXJlIHBsYW5uaW5nIG9uIGJhc2luZyB5b3VyIHdvcmsgb24gYW4gdXBzdHJlYW1cbiIKKyJicmFuY2ggdGhhdCBhbHJlYWR5IGV4aXN0cyBhdCB0aGUgcmVtb3RlLCB5b3UgbWF5IG5lZWQgdG9cbiIKKyJydW4gXCJnaXQgZmV0Y2hcIiB0byByZXRyaWV2ZSBpdC5cbiIKKyJcbiIKKyJJZiB5b3UgYXJlIHBsYW5uaW5nIHRvIHB1c2ggb3V0IGEgbmV3IGxvY2FsIGJyYW5jaCB0aGF0XG4iCisid2lsbCB0cmFjayBpdHMgcmVtb3RlIGNvdW50ZXJwYXJ0LCB5b3UgbWF5IHdhbnQgdG8gdXNlXG4iCisiXCJnaXQgcHVzaCAtdVwiIHRvIHNldCB0aGUgdXBzdHJlYW0gY29uZmlnIGFzIHlvdSBwdXNoLiIpOworCiB2b2lkIGNyZWF0ZV9icmFuY2goY29uc3QgY2hhciAqaGVhZCwKIAkJICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqc3RhcnRfbmFtZSwKIAkJICAgaW50IGZvcmNlLCBpbnQgcmVmbG9nLCBpbnQgY2xvYmJlcl9oZWFkLApAQCAtMjE2LDM4ICsyNTMsNDcgQEAKIAl9CiAKIAlyZWFsX3JlZiA9IE5VTEw7Ci0JaWYgKGdldF9zaGExKHN0YXJ0X25hbWUsIHNoYTEpKQotCQlkaWUoIk5vdCBhIHZhbGlkIG9iamVjdCBuYW1lOiAnJXMnLiIsIHN0YXJ0X25hbWUpOworCWlmIChnZXRfc2hhMShzdGFydF9uYW1lLCBzaGExKSkgeworCQlpZiAoZXhwbGljaXRfdHJhY2tpbmcpIHsKKwkJCWlmIChhZHZpY2Vfc2V0X3Vwc3RyZWFtX2ZhaWx1cmUpIHsKKwkJCQllcnJvcihfKHVwc3RyZWFtX21pc3NpbmcpLCBzdGFydF9uYW1lKTsKKwkJCQlhZHZpc2UoXyh1cHN0cmVhbV9hZHZpY2UpKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQkJZGllKF8odXBzdHJlYW1fbWlzc2luZyksIHN0YXJ0X25hbWUpOworCQl9CisJCWRpZShfKCJOb3QgYSB2YWxpZCBvYmplY3QgbmFtZTogJyVzJy4iKSwgc3RhcnRfbmFtZSk7CisJfQogCiAJc3dpdGNoIChkd2ltX3JlZihzdGFydF9uYW1lLCBzdHJsZW4oc3RhcnRfbmFtZSksIHNoYTEsICZyZWFsX3JlZikpIHsKIAljYXNlIDA6CiAJCS8qIE5vdCBicmFuY2hpbmcgZnJvbSBhbnkgZXhpc3RpbmcgYnJhbmNoICovCiAJCWlmIChleHBsaWNpdF90cmFja2luZykKLQkJCWRpZSgiQ2Fubm90IHNldHVwIHRyYWNraW5nIGluZm9ybWF0aW9uOyBzdGFydGluZyBwb2ludCBpcyBub3QgYSBicmFuY2guIik7CisJCQlkaWUoXyh1cHN0cmVhbV9ub3RfYnJhbmNoKSwgc3RhcnRfbmFtZSk7CiAJCWJyZWFrOwogCWNhc2UgMToKIAkJLyogVW5pcXVlIGNvbXBsZXRpb24gLS0gZ29vZCwgb25seSBpZiBpdCBpcyBhIHJlYWwgYnJhbmNoICovCiAJCWlmIChwcmVmaXhjbXAocmVhbF9yZWYsICJyZWZzL2hlYWRzLyIpICYmCi0JCSAgICBwcmVmaXhjbXAocmVhbF9yZWYsICJyZWZzL3JlbW90ZXMvIikpIHsKKwkJICAgIHZhbGlkYXRlX3JlbW90ZV90cmFja2luZ19icmFuY2gocmVhbF9yZWYpKSB7CiAJCQlpZiAoZXhwbGljaXRfdHJhY2tpbmcpCi0JCQkJZGllKCJDYW5ub3Qgc2V0dXAgdHJhY2tpbmcgaW5mb3JtYXRpb247IHN0YXJ0aW5nIHBvaW50IGlzIG5vdCBhIGJyYW5jaC4iKTsKKwkJCQlkaWUoXyh1cHN0cmVhbV9ub3RfYnJhbmNoKSwgc3RhcnRfbmFtZSk7CiAJCQllbHNlCiAJCQkJcmVhbF9yZWYgPSBOVUxMOwogCQl9CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWRpZSgiQW1iaWd1b3VzIG9iamVjdCBuYW1lOiAnJXMnLiIsIHN0YXJ0X25hbWUpOworCQlkaWUoXygiQW1iaWd1b3VzIG9iamVjdCBuYW1lOiAnJXMnLiIpLCBzdGFydF9uYW1lKTsKIAkJYnJlYWs7CiAJfQogCiAJaWYgKChjb21taXQgPSBsb29rdXBfY29tbWl0X3JlZmVyZW5jZShzaGExKSkgPT0gTlVMTCkKLQkJZGllKCJOb3QgYSB2YWxpZCBicmFuY2ggcG9pbnQ6ICclcycuIiwgc3RhcnRfbmFtZSk7CisJCWRpZShfKCJOb3QgYSB2YWxpZCBicmFuY2ggcG9pbnQ6ICclcycuIiksIHN0YXJ0X25hbWUpOwogCWhhc2hjcHkoc2hhMSwgY29tbWl0LT5vYmplY3Quc2hhMSk7CiAKIAlpZiAoIWRvbnRfY2hhbmdlX3JlZikgewogCQlsb2NrID0gbG9ja19hbnlfcmVmX2Zvcl91cGRhdGUocmVmLmJ1ZiwgTlVMTCwgMCk7CiAJCWlmICghbG9jaykKLQkJCWRpZV9lcnJubygiRmFpbGVkIHRvIGxvY2sgcmVmIGZvciB1cGRhdGUiKTsKKwkJCWRpZV9lcnJubyhfKCJGYWlsZWQgdG8gbG9jayByZWYgZm9yIHVwZGF0ZSIpKTsKIAl9CiAKIAlpZiAocmVmbG9nKQpAQCAtMjY1LDcgKzMxMSw3IEBACiAKIAlpZiAoIWRvbnRfY2hhbmdlX3JlZikKIAkJaWYgKHdyaXRlX3JlZl9zaGExKGxvY2ssIHNoYTEsIG1zZykgPCAwKQotCQkJZGllX2Vycm5vKCJGYWlsZWQgdG8gd3JpdGUgcmVmIik7CisJCQlkaWVfZXJybm8oXygiRmFpbGVkIHRvIHdyaXRlIHJlZiIpKTsKIAogCXN0cmJ1Zl9yZWxlYXNlKCZyZWYpOwogCWZyZWUocmVhbF9yZWYpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi5oIGIvYnVpbHRpbi5oCmluZGV4IDMzOGY1NDAuLmZhZWY1NTkgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4uaAorKysgYi9idWlsdGluLmgKQEAgLTksMjAgKzksMTkgQEAKIAogI2RlZmluZSBERUZBVUxUX01FUkdFX0xPR19MRU4gMjAKIAotZXh0ZXJuIGNvbnN0IGNoYXIgZ2l0X3ZlcnNpb25fc3RyaW5nW107CiBleHRlcm4gY29uc3QgY2hhciBnaXRfdXNhZ2Vfc3RyaW5nW107CiBleHRlcm4gY29uc3QgY2hhciBnaXRfbW9yZV9pbmZvX3N0cmluZ1tdOwogCiBleHRlcm4gdm9pZCBwcnVuZV9wYWNrZWRfb2JqZWN0cyhpbnQpOwogCiBzdHJ1Y3QgZm10X21lcmdlX21zZ19vcHRzIHsKLQl1bnNpZ25lZCBhZGRfdGl0bGU6MTsKKwl1bnNpZ25lZCBhZGRfdGl0bGU6MSwKKwkJY3JlZGl0X3Blb3BsZToxOwogCWludCBzaG9ydGxvZ19sZW47CiB9OwogCiBleHRlcm4gaW50IGZtdF9tZXJnZV9tc2coc3RydWN0IHN0cmJ1ZiAqaW4sIHN0cnVjdCBzdHJidWYgKm91dCwKIAkJCSBzdHJ1Y3QgZm10X21lcmdlX21zZ19vcHRzICopOwotZXh0ZXJuIHZvaWQgY29tbWl0X25vdGVzKHN0cnVjdCBub3Rlc190cmVlICp0LCBjb25zdCBjaGFyICptc2cpOwogCiBzdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcgewogCXN0cnVjdCBub3Rlc190cmVlICoqdHJlZXM7CkBAIC0zNCwxNSArMzMsMTIgQEAKIAlpbnQgbW9kZV9mcm9tX2VudjsKIH07CiAKLWNvbWJpbmVfbm90ZXNfZm4gcGFyc2VfY29tYmluZV9ub3Rlc19mbihjb25zdCBjaGFyICp2KTsKIHN0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyAqaW5pdF9jb3B5X25vdGVzX2Zvcl9yZXdyaXRlKGNvbnN0IGNoYXIgKmNtZCk7CiBpbnQgY29weV9ub3RlX2Zvcl9yZXdyaXRlKHN0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyAqYywKIAkJCSAgY29uc3QgdW5zaWduZWQgY2hhciAqZnJvbV9vYmosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRvX29iaik7CiB2b2lkIGZpbmlzaF9jb3B5X25vdGVzX2Zvcl9yZXdyaXRlKHN0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyAqYyk7CiAKLWV4dGVybiBpbnQgY2hlY2tfcGFnZXJfY29uZmlnKGNvbnN0IGNoYXIgKmNtZCk7Ci0KLWV4dGVybiBpbnQgdGV4dGNvbnZfb2JqZWN0KGNvbnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIG1vZGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGNoYXIgKipidWYsIHVuc2lnbmVkIGxvbmcgKmJ1Zl9zaXplKTsKK2V4dGVybiBpbnQgdGV4dGNvbnZfb2JqZWN0KGNvbnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIG1vZGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBzaGExX3ZhbGlkLCBjaGFyICoqYnVmLCB1bnNpZ25lZCBsb25nICpidWZfc2l6ZSk7CiAKIGV4dGVybiBpbnQgY21kX2FkZChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gaW50IGNtZF9hbm5vdGF0ZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CkBAIC01Niw2ICs1Miw3IEBACiBleHRlcm4gaW50IGNtZF9jaGVja291dChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gaW50IGNtZF9jaGVja291dF9pbmRleChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gaW50IGNtZF9jaGVja19hdHRyKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKK2V4dGVybiBpbnQgY21kX2NoZWNrX2lnbm9yZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gaW50IGNtZF9jaGVja19yZWZfZm9ybWF0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiBpbnQgY21kX2NoZXJyeShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gaW50IGNtZF9jaGVycnlfcGljayhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CkBAIC02Niw2ICs2Myw3IEBACiBleHRlcm4gaW50IGNtZF9jb21taXRfdHJlZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gaW50IGNtZF9jb25maWcoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfY291bnRfb2JqZWN0cyhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CitleHRlcm4gaW50IGNtZF9jcmVkZW50aWFsKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiBpbnQgY21kX2Rlc2NyaWJlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiBpbnQgY21kX2RpZmZfZmlsZXMoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfZGlmZl9pbmRleChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CkBAIC04Myw3ICs4MSw2IEBACiBleHRlcm4gaW50IGNtZF9ncmVwKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiBpbnQgY21kX2hhc2hfb2JqZWN0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiBpbnQgY21kX2hlbHAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwotZXh0ZXJuIGludCBjbWRfaHR0cF9mZXRjaChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gaW50IGNtZF9pbmRleF9wYWNrKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiBpbnQgY21kX2luaXRfZGIoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfbG9nKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKQEAgLTEwOCw3ICsxMDUsNiBAQAogZXh0ZXJuIGludCBjbWRfcGFja19vYmplY3RzKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiBpbnQgY21kX3BhY2tfcmVkdW5kYW50KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiBpbnQgY21kX3BhdGNoX2lkKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKLWV4dGVybiBpbnQgY21kX3BpY2theGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfcHJ1bmUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfcHJ1bmVfcGFja2VkKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiBpbnQgY21kX3B1c2goaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwpAQCAtMTQxLDcgKzEzNyw2IEBACiBleHRlcm4gaW50IGNtZF91cGRhdGVfc2VydmVyX2luZm8oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfdXBsb2FkX2FyY2hpdmUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfdXBsb2FkX2FyY2hpdmVfd3JpdGVyKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKLWV4dGVybiBpbnQgY21kX3VwbG9hZF90YXIoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfdmFyKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiBpbnQgY21kX3ZlcmlmeV90YWcoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfdmVyc2lvbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CmRpZmYgLS1naXQgYS9idWlsdGluL2FkZC5jIGIvYnVpbHRpbi9hZGQuYwppbmRleCBiNzkzMzZkLi5mNDVkOWQ0IDEwMDY0NAotLS0gYS9idWlsdGluL2FkZC5jCisrKyBiL2J1aWx0aW4vYWRkLmMKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSAiY2FjaGUuaCIKICNpbmNsdWRlICJidWlsdGluLmgiCiAjaW5jbHVkZSAiZGlyLmgiCisjaW5jbHVkZSAicGF0aHNwZWMuaCIKICNpbmNsdWRlICJleGVjX2NtZC5oIgogI2luY2x1ZGUgImNhY2hlLXRyZWUuaCIKICNpbmNsdWRlICJydW4tY29tbWFuZC5oIgpAQCAtMTYsNyArMTcsNyBAQAogI2luY2x1ZGUgImJ1bGstY2hlY2tpbi5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGJ1aWx0aW5fYWRkX3VzYWdlW10gPSB7Ci0JImdpdCBhZGQgW29wdGlvbnNdIFstLV0gPGZpbGVwYXR0ZXJuPi4uLiIsCisJTl8oImdpdCBhZGQgW29wdGlvbnNdIFstLV0gPHBhdGhzcGVjPi4uLiIpLAogCU5VTEwKIH07CiBzdGF0aWMgaW50IHBhdGNoX2ludGVyYWN0aXZlLCBhZGRfaW50ZXJhY3RpdmUsIGVkaXRfaW50ZXJhY3RpdmU7CkBAIC0yNSw4ICsyNiw1NSBAQAogc3RydWN0IHVwZGF0ZV9jYWxsYmFja19kYXRhIHsKIAlpbnQgZmxhZ3M7CiAJaW50IGFkZF9lcnJvcnM7CisJY29uc3QgY2hhciAqaW1wbGljaXRfZG90OworCXNpemVfdCBpbXBsaWNpdF9kb3RfbGVuOworCisJLyogb25seSBuZWVkZWQgZm9yIDIuMCB0cmFuc2l0aW9uIHByZXBhcmF0aW9uICovCisJaW50IHdhcm5fYWRkX3dvdWxkX3JlbW92ZTsKIH07CiAKK3N0YXRpYyBjb25zdCBjaGFyICpvcHRpb25fd2l0aF9pbXBsaWNpdF9kb3Q7CitzdGF0aWMgY29uc3QgY2hhciAqc2hvcnRfb3B0aW9uX3dpdGhfaW1wbGljaXRfZG90OworCitzdGF0aWMgdm9pZCB3YXJuX3BhdGhsZXNzX2FkZCh2b2lkKQoreworCXN0YXRpYyBpbnQgc2hvd247CisJYXNzZXJ0KG9wdGlvbl93aXRoX2ltcGxpY2l0X2RvdCAmJiBzaG9ydF9vcHRpb25fd2l0aF9pbXBsaWNpdF9kb3QpOworCisJaWYgKHNob3duKQorCQlyZXR1cm47CisJc2hvd24gPSAxOworCisJLyoKKwkgKiBUbyBiZSBjb25zaXN0ZW50IHdpdGggImdpdCBhZGQgLXAiIGFuZCBtb3N0IEdpdAorCSAqIGNvbW1hbmRzLCB3ZSBzaG91bGQgZGVmYXVsdCB0byBiZWluZyB0cmVlLXdpZGUsIGJ1dAorCSAqIHRoaXMgaXMgbm90IHRoZSBvcmlnaW5hbCBiZWhhdmlvciBhbmQgY2FuJ3QgYmUKKwkgKiBjaGFuZ2VkIHVudGlsIHVzZXJzIHRyYWluZWQgdGhlbXNlbHZlcyBub3QgdG8gdHlwZQorCSAqICJnaXQgYWRkIC11IiBvciAiZ2l0IGFkZCAtQSIuIEZvciBub3csIHdlIHdhcm4gYW5kCisJICoga2VlcCB0aGUgb2xkIGJlaGF2aW9yLiBMYXRlciwgdGhlIGJlaGF2aW9yIGNhbiBiZSBjaGFuZ2VkCisJICogdG8gdHJlZS13aWRlLCBrZWVwaW5nIHRoZSB3YXJuaW5nIGZvciBhIHdoaWxlLCBhbmQKKwkgKiBldmVudHVhbGx5IHdlIGNhbiBkcm9wIHRoZSB3YXJuaW5nLgorCSAqLworCXdhcm5pbmcoXygiVGhlIGJlaGF2aW9yIG9mICdnaXQgYWRkICVzIChvciAlcyknIHdpdGggbm8gcGF0aCBhcmd1bWVudCBmcm9tIGFcbiIKKwkJICAic3ViZGlyZWN0b3J5IG9mIHRoZSB0cmVlIHdpbGwgY2hhbmdlIGluIEdpdCAyLjAgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBhbnltb3JlLlxuIgorCQkgICJUbyBhZGQgY29udGVudCBmb3IgdGhlIHdob2xlIHRyZWUsIHJ1bjpcbiIKKwkJICAiXG4iCisJCSAgIiAgZ2l0IGFkZCAlcyA6L1xuIgorCQkgICIgIChvciBnaXQgYWRkICVzIDovKVxuIgorCQkgICJcbiIKKwkJICAiVG8gcmVzdHJpY3QgdGhlIGNvbW1hbmQgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBydW46XG4iCisJCSAgIlxuIgorCQkgICIgIGdpdCBhZGQgJXMgLlxuIgorCQkgICIgIChvciBnaXQgYWRkICVzIC4pXG4iCisJCSAgIlxuIgorCQkgICJXaXRoIHRoZSBjdXJyZW50IEdpdCB2ZXJzaW9uLCB0aGUgY29tbWFuZCBpcyByZXN0cmljdGVkIHRvICIKKwkJICAidGhlIGN1cnJlbnQgZGlyZWN0b3J5LlxuIgorCQkgICIiKSwKKwkJb3B0aW9uX3dpdGhfaW1wbGljaXRfZG90LCBzaG9ydF9vcHRpb25fd2l0aF9pbXBsaWNpdF9kb3QsCisJCW9wdGlvbl93aXRoX2ltcGxpY2l0X2RvdCwgc2hvcnRfb3B0aW9uX3dpdGhfaW1wbGljaXRfZG90LAorCQlvcHRpb25fd2l0aF9pbXBsaWNpdF9kb3QsIHNob3J0X29wdGlvbl93aXRoX2ltcGxpY2l0X2RvdCk7Cit9CisKIHN0YXRpYyBpbnQgZml4X3VubWVyZ2VkX3N0YXR1cyhzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcCwKIAkJCSAgICAgICBzdHJ1Y3QgdXBkYXRlX2NhbGxiYWNrX2RhdGEgKmRhdGEpCiB7CkBAIC00OCwxNSArOTYsNDkgQEAKIAkJcmV0dXJuIERJRkZfU1RBVFVTX01PRElGSUVEOwogfQogCitzdGF0aWMgY29uc3QgY2hhciAqYWRkX3dvdWxkX3JlbW92ZV93YXJuaW5nID0gTl8oCisJIllvdSByYW4gJ2dpdCBhZGQnIHdpdGggbmVpdGhlciAnLUEgKC0tYWxsKScgb3IgJy0taWdub3JlLXJlbW92YWwnLFxuIgorIndob3NlIGJlaGF2aW91ciB3aWxsIGNoYW5nZSBpbiBHaXQgMi4wIHdpdGggcmVzcGVjdCB0byBwYXRocyB5b3UgcmVtb3ZlZC5cbiIKKyJQYXRocyBsaWtlICclcycgdGhhdCBhcmVcbiIKKyJyZW1vdmVkIGZyb20geW91ciB3b3JraW5nIHRyZWUgYXJlIGlnbm9yZWQgd2l0aCB0aGlzIHZlcnNpb24gb2YgR2l0LlxuIgorIlxuIgorIiogJ2dpdCBhZGQgLS1pZ25vcmUtcmVtb3ZhbCA8cGF0aHNwZWM+Jywgd2hpY2ggaXMgdGhlIGN1cnJlbnQgZGVmYXVsdCxcbiIKKyIgIGlnbm9yZXMgcGF0aHMgeW91IHJlbW92ZWQgZnJvbSB5b3VyIHdvcmtpbmcgdHJlZS5cbiIKKyJcbiIKKyIqICdnaXQgYWRkIC0tYWxsIDxwYXRoc3BlYz4nIHdpbGwgbGV0IHlvdSBhbHNvIHJlY29yZCB0aGUgcmVtb3ZhbHMuXG4iCisiXG4iCisiUnVuICdnaXQgc3RhdHVzJyB0byBjaGVjayB0aGUgcGF0aHMgeW91IHJlbW92ZWQgZnJvbSB5b3VyIHdvcmtpbmcgdHJlZS5cbiIpOworCitzdGF0aWMgdm9pZCB3YXJuX2FkZF93b3VsZF9yZW1vdmUoY29uc3QgY2hhciAqcGF0aCkKK3sKKwl3YXJuaW5nKF8oYWRkX3dvdWxkX3JlbW92ZV93YXJuaW5nKSwgcGF0aCk7Cit9CisKIHN0YXRpYyB2b2lkIHVwZGF0ZV9jYWxsYmFjayhzdHJ1Y3QgZGlmZl9xdWV1ZV9zdHJ1Y3QgKnEsCiAJCQkgICAgc3RydWN0IGRpZmZfb3B0aW9ucyAqb3B0LCB2b2lkICpjYmRhdGEpCiB7CiAJaW50IGk7CiAJc3RydWN0IHVwZGF0ZV9jYWxsYmFja19kYXRhICpkYXRhID0gY2JkYXRhOworCWNvbnN0IGNoYXIgKmltcGxpY2l0X2RvdCA9IGRhdGEtPmltcGxpY2l0X2RvdDsKKwlzaXplX3QgaW1wbGljaXRfZG90X2xlbiA9IGRhdGEtPmltcGxpY2l0X2RvdF9sZW47CiAKIAlmb3IgKGkgPSAwOyBpIDwgcS0+bnI7IGkrKykgewogCQlzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcCA9IHEtPnF1ZXVlW2ldOwogCQljb25zdCBjaGFyICpwYXRoID0gcC0+b25lLT5wYXRoOworCQkvKgorCQkgKiBDaGVjayBpZiAiZ2l0IGFkZCAtQSIgb3IgImdpdCBhZGQgLXUiIHdhcyBydW4gZnJvbSBhCisJCSAqIHN1YmRpcmVjdG9yeSB3aXRoIGEgbW9kaWZpZWQgZmlsZSBvdXRzaWRlIHRoYXQgZGlyZWN0b3J5LAorCQkgKiBhbmQgd2FybiBpZiBzby4KKwkJICoKKwkJICogImdpdCBhZGQgLXUiIHdpbGwgYmVoYXZlIGxpa2UgImdpdCBhZGQgLXUgOi8iIGluc3RlYWQgb2YKKwkJICogImdpdCBhZGQgLXUgLiIgaW4gdGhlIGZ1dHVyZS4gIFRoaXMgd2FybmluZyBwcmVwYXJlcyBmb3IKKwkJICogdGhhdCBjaGFuZ2UuCisJCSAqLworCQlpZiAoaW1wbGljaXRfZG90ICYmCisJCSAgICBzdHJuY21wX2ljYXNlKHBhdGgsIGltcGxpY2l0X2RvdCwgaW1wbGljaXRfZG90X2xlbikpIHsKKwkJCXdhcm5fcGF0aGxlc3NfYWRkKCk7CisJCQljb250aW51ZTsKKwkJfQogCQlzd2l0Y2ggKGZpeF91bm1lcmdlZF9zdGF0dXMocCwgZGF0YSkpIHsKIAkJZGVmYXVsdDoKIAkJCWRpZShfKCJ1bmV4cGVjdGVkIGRpZmYgc3RhdHVzICVjIiksIHAtPnN0YXR1cyk7CkBAIC02OSw2ICsxNTEsMTAgQEAKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIERJRkZfU1RBVFVTX0RFTEVURUQ6CisJCQlpZiAoZGF0YS0+d2Fybl9hZGRfd291bGRfcmVtb3ZlKSB7CisJCQkJd2Fybl9hZGRfd291bGRfcmVtb3ZlKHBhdGgpOworCQkJCWRhdGEtPndhcm5fYWRkX3dvdWxkX3JlbW92ZSA9IDA7CisJCQl9CiAJCQlpZiAoZGF0YS0+ZmxhZ3MgJiBBRERfQ0FDSEVfSUdOT1JFX1JFTU9WQUwpCiAJCQkJYnJlYWs7CiAJCQlpZiAoIShkYXRhLT5mbGFncyAmIEFERF9DQUNIRV9QUkVURU5EKSkKQEAgLTgwLDU3ICsxNjYsMzQgQEAKIAl9CiB9CiAKLWludCBhZGRfZmlsZXNfdG9fY2FjaGUoY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICoqcGF0aHNwZWMsIGludCBmbGFncykKK3N0YXRpYyB2b2lkIHVwZGF0ZV9maWxlc19pbl9jYWNoZShjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKipwYXRoc3BlYywKKwkJCQkgIHN0cnVjdCB1cGRhdGVfY2FsbGJhY2tfZGF0YSAqZGF0YSkKIHsKLQlzdHJ1Y3QgdXBkYXRlX2NhbGxiYWNrX2RhdGEgZGF0YTsKIAlzdHJ1Y3QgcmV2X2luZm8gcmV2OworCiAJaW5pdF9yZXZpc2lvbnMoJnJldiwgcHJlZml4KTsKIAlzZXR1cF9yZXZpc2lvbnMoMCwgTlVMTCwgJnJldiwgTlVMTCk7CiAJaW5pdF9wYXRoc3BlYygmcmV2LnBydW5lX2RhdGEsIHBhdGhzcGVjKTsKIAlyZXYuZGlmZm9wdC5vdXRwdXRfZm9ybWF0ID0gRElGRl9GT1JNQVRfQ0FMTEJBQ0s7CiAJcmV2LmRpZmZvcHQuZm9ybWF0X2NhbGxiYWNrID0gdXBkYXRlX2NhbGxiYWNrOwotCWRhdGEuZmxhZ3MgPSBmbGFnczsKLQlkYXRhLmFkZF9lcnJvcnMgPSAwOwotCXJldi5kaWZmb3B0LmZvcm1hdF9jYWxsYmFja19kYXRhID0gJmRhdGE7CisJcmV2LmRpZmZvcHQuZm9ybWF0X2NhbGxiYWNrX2RhdGEgPSBkYXRhOwogCXJldi5tYXhfY291bnQgPSAwOyAvKiBkbyBub3QgY29tcGFyZSB1bm1lcmdlZCBwYXRocyB3aXRoIHN0YWdlICMyICovCiAJcnVuX2RpZmZfZmlsZXMoJnJldiwgRElGRl9SQUNZX0lTX01PRElGSUVEKTsKK30KKworaW50IGFkZF9maWxlc190b19jYWNoZShjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKipwYXRoc3BlYywgaW50IGZsYWdzKQoreworCXN0cnVjdCB1cGRhdGVfY2FsbGJhY2tfZGF0YSBkYXRhOworCisJbWVtc2V0KCZkYXRhLCAwLCBzaXplb2YoZGF0YSkpOworCWRhdGEuZmxhZ3MgPSBmbGFnczsKKwl1cGRhdGVfZmlsZXNfaW5fY2FjaGUocHJlZml4LCBwYXRoc3BlYywgJmRhdGEpOwogCXJldHVybiAhIWRhdGEuYWRkX2Vycm9yczsKIH0KIAotc3RhdGljIHZvaWQgZmlsbF9wYXRoc3BlY19tYXRjaGVzKGNvbnN0IGNoYXIgKipwYXRoc3BlYywgY2hhciAqc2VlbiwgaW50IHNwZWNzKQotewotCWludCBudW1fdW5tYXRjaGVkID0gMCwgaTsKLQotCS8qCi0JICogU2luY2Ugd2UgYXJlIHdhbGtpbmcgdGhlIGluZGV4IGFzIGlmIHdlIHdlcmUgd2Fsa2luZyB0aGUgZGlyZWN0b3J5LAotCSAqIHdlIGhhdmUgdG8gbWFyayB0aGUgbWF0Y2hlZCBwYXRoc3BlYyBhcyBzZWVuOyBvdGhlcndpc2Ugd2Ugd2lsbAotCSAqIG1pc3Rha2VubHkgdGhpbmsgdGhhdCB0aGUgdXNlciBnYXZlIGEgcGF0aHNwZWMgdGhhdCBkaWQgbm90IG1hdGNoCi0JICogYW55dGhpbmcuCi0JICovCi0JZm9yIChpID0gMDsgaSA8IHNwZWNzOyBpKyspCi0JCWlmICghc2VlbltpXSkKLQkJCW51bV91bm1hdGNoZWQrKzsKLQlpZiAoIW51bV91bm1hdGNoZWQpCi0JCXJldHVybjsKLQlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOyBpKyspIHsKLQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpXTsKLQkJbWF0Y2hfcGF0aHNwZWMocGF0aHNwZWMsIGNlLT5uYW1lLCBjZV9uYW1lbGVuKGNlKSwgMCwgc2Vlbik7Ci0JfQotfQotCi1zdGF0aWMgY2hhciAqZmluZF91c2VkX3BhdGhzcGVjKGNvbnN0IGNoYXIgKipwYXRoc3BlYykKLXsKLQljaGFyICpzZWVuOwotCWludCBpOwotCi0JZm9yIChpID0gMDsgcGF0aHNwZWNbaV07ICBpKyspCi0JCTsgLyoganVzdCBjb3VudGluZyAqLwotCXNlZW4gPSB4Y2FsbG9jKGksIDEpOwotCWZpbGxfcGF0aHNwZWNfbWF0Y2hlcyhwYXRoc3BlYywgc2VlbiwgaSk7Ci0JcmV0dXJuIHNlZW47Ci19Ci0KLXN0YXRpYyBjaGFyICpwcnVuZV9kaXJlY3Rvcnkoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgY29uc3QgY2hhciAqKnBhdGhzcGVjLCBpbnQgcHJlZml4KQorI2RlZmluZSBXQVJOX0lNUExJQ0lUX0RPVCAoMXUgPDwgMCkKK3N0YXRpYyBjaGFyICpwcnVuZV9kaXJlY3Rvcnkoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgY29uc3QgY2hhciAqKnBhdGhzcGVjLAorCQkJICAgICBpbnQgcHJlZml4LCB1bnNpZ25lZCBmbGFnKQogewogCWNoYXIgKnNlZW47CiAJaW50IGksIHNwZWNzOwpAQCAtMTQ3LDEyICsyMTAsMjYgQEAKIAkJaWYgKG1hdGNoX3BhdGhzcGVjKHBhdGhzcGVjLCBlbnRyeS0+bmFtZSwgZW50cnktPmxlbiwKIAkJCQkgICBwcmVmaXgsIHNlZW4pKQogCQkJKmRzdCsrID0gZW50cnk7CisJCWVsc2UgaWYgKGZsYWcgJiBXQVJOX0lNUExJQ0lUX0RPVCkKKwkJCS8qCisJCQkgKiAiZ2l0IGFkZCAtQSIgd2FzIHJ1biBmcm9tIGEgc3ViZGlyZWN0b3J5IHdpdGggYQorCQkJICogbmV3IGZpbGUgb3V0c2lkZSB0aGF0IGRpcmVjdG9yeS4KKwkJCSAqCisJCQkgKiAiZ2l0IGFkZCAtQSIgd2lsbCBiZWhhdmUgbGlrZSAiZ2l0IGFkZCAtQSA6LyIKKwkJCSAqIGluc3RlYWQgb2YgImdpdCBhZGQgLUEgLiIgaW4gdGhlIGZ1dHVyZS4KKwkJCSAqIFdhcm4gYWJvdXQgdGhlIGNvbWluZyBiZWhhdmlvciBjaGFuZ2UuCisJCQkgKi8KKwkJCXdhcm5fcGF0aGxlc3NfYWRkKCk7CiAJfQogCWRpci0+bnIgPSBkc3QgLSBkaXItPmVudHJpZXM7Ci0JZmlsbF9wYXRoc3BlY19tYXRjaGVzKHBhdGhzcGVjLCBzZWVuLCBzcGVjcyk7CisJYWRkX3BhdGhzcGVjX21hdGNoZXNfYWdhaW5zdF9pbmRleChwYXRoc3BlYywgc2Vlbiwgc3BlY3MpOwogCXJldHVybiBzZWVuOwogfQogCisvKgorICogQ2hlY2tzIHRoZSBpbmRleCB0byBzZWUgd2hldGhlciBhbnkgcGF0aCBpbiBwYXRoc3BlYyByZWZlcnMgdG8KKyAqIHNvbWV0aGluZyBpbnNpZGUgYSBzdWJtb2R1bGUuICBJZiBzbywgZGllcyB3aXRoIGFuIGVycm9yIG1lc3NhZ2UuCisgKi8KIHN0YXRpYyB2b2lkIHRyZWF0X2dpdGxpbmtzKGNvbnN0IGNoYXIgKipwYXRoc3BlYykKIHsKIAlpbnQgaTsKQEAgLTE2MCwyNCArMjM3LDggQEAKIAlpZiAoIXBhdGhzcGVjIHx8ICEqcGF0aHNwZWMpCiAJCXJldHVybjsKIAotCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7IGkrKykgewotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOwotCQlpZiAoU19JU0dJVExJTksoY2UtPmNlX21vZGUpKSB7Ci0JCQlpbnQgbGVuID0gY2VfbmFtZWxlbihjZSksIGo7Ci0JCQlmb3IgKGogPSAwOyBwYXRoc3BlY1tqXTsgaisrKSB7Ci0JCQkJaW50IGxlbjIgPSBzdHJsZW4ocGF0aHNwZWNbal0pOwotCQkJCWlmIChsZW4yIDw9IGxlbiB8fCBwYXRoc3BlY1tqXVtsZW5dICE9ICcvJyB8fAotCQkJCSAgICBtZW1jbXAoY2UtPm5hbWUsIHBhdGhzcGVjW2pdLCBsZW4pKQotCQkJCQljb250aW51ZTsKLQkJCQlpZiAobGVuMiA9PSBsZW4gKyAxKQotCQkJCQkvKiBzdHJpcCB0cmFpbGluZyBzbGFzaCAqLwotCQkJCQlwYXRoc3BlY1tqXSA9IHhzdHJuZHVwKGNlLT5uYW1lLCBsZW4pOwotCQkJCWVsc2UKLQkJCQkJZGllIChfKCJQYXRoICclcycgaXMgaW4gc3VibW9kdWxlICclLipzJyIpLAotCQkJCQkJcGF0aHNwZWNbal0sIGxlbiwgY2UtPm5hbWUpOwotCQkJfQotCQl9Ci0JfQorCWZvciAoaSA9IDA7IHBhdGhzcGVjW2ldOyBpKyspCisJCXBhdGhzcGVjW2ldID0gY2hlY2tfcGF0aF9mb3JfZ2l0bGluayhwYXRoc3BlY1tpXSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlZnJlc2goaW50IHZlcmJvc2UsIGNvbnN0IGNoYXIgKipwYXRoc3BlYykKQEAgLTE5NywxNyArMjU4LDE5IEBACiAgICAgICAgIGZyZWUoc2Vlbik7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyICoqdmFsaWRhdGVfcGF0aHNwZWMoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCisvKgorICogTm9ybWFsaXplcyBhcmd2IHJlbGF0aXZlIHRvIHByZWZpeCwgdmlhIGdldF9wYXRoc3BlYygpLCBhbmQgdGhlbgorICogcnVucyBkaWVfaWZfcGF0aF9iZXlvbmRfc3ltbGluaygpIG9uIGVhY2ggcGF0aCBpbiB0aGUgbm9ybWFsaXplZAorICogbGlzdC4KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgKip2YWxpZGF0ZV9wYXRoc3BlYyhjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewogCWNvbnN0IGNoYXIgKipwYXRoc3BlYyA9IGdldF9wYXRoc3BlYyhwcmVmaXgsIGFyZ3YpOwogCiAJaWYgKHBhdGhzcGVjKSB7CiAJCWNvbnN0IGNoYXIgKipwOwogCQlmb3IgKHAgPSBwYXRoc3BlYzsgKnA7IHArKykgewotCQkJaWYgKGhhc19zeW1saW5rX2xlYWRpbmdfcGF0aCgqcCwgc3RybGVuKCpwKSkpIHsKLQkJCQlpbnQgbGVuID0gcHJlZml4ID8gc3RybGVuKHByZWZpeCkgOiAwOwotCQkJCWRpZShfKCInJXMnIGlzIGJleW9uZCBhIHN5bWJvbGljIGxpbmsiKSwgKnAgKyBsZW4pOwotCQkJfQorCQkJZGllX2lmX3BhdGhfYmV5b25kX3N5bWxpbmsoKnAsIHByZWZpeCk7CiAJCX0KIAl9CiAKQEAgLTI0OCw3ICszMTEsNyBAQAogCWNvbnN0IGNoYXIgKipwYXRoc3BlYyA9IE5VTEw7CiAKIAlpZiAoYXJnYykgewotCQlwYXRoc3BlYyA9IHZhbGlkYXRlX3BhdGhzcGVjKGFyZ2MsIGFyZ3YsIHByZWZpeCk7CisJCXBhdGhzcGVjID0gdmFsaWRhdGVfcGF0aHNwZWMoYXJndiwgcHJlZml4KTsKIAkJaWYgKCFwYXRoc3BlYykKIAkJCXJldHVybiAtMTsKIAl9CkBAIC0yNjAsNyArMzIzLDcgQEAKIAogc3RhdGljIGludCBlZGl0X3BhdGNoKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewotCWNoYXIgKmZpbGUgPSB4c3RyZHVwKGdpdF9wYXRoKCJBRERfRURJVC5wYXRjaCIpKTsKKwljaGFyICpmaWxlID0gZ2l0X3BhdGhkdXAoIkFERF9FRElULnBhdGNoIik7CiAJY29uc3QgY2hhciAqYXBwbHlfYXJndltdID0geyAiYXBwbHkiLCAiLS1yZWNvdW50IiwgIi0tY2FjaGVkIiwKIAkJTlVMTCwgTlVMTCB9OwogCXN0cnVjdCBjaGlsZF9wcm9jZXNzIGNoaWxkOwpAQCAtMjgxLDcgKzM0NCw3IEBACiAJYXJnYyA9IHNldHVwX3JldmlzaW9ucyhhcmdjLCBhcmd2LCAmcmV2LCBOVUxMKTsKIAlyZXYuZGlmZm9wdC5vdXRwdXRfZm9ybWF0ID0gRElGRl9GT1JNQVRfUEFUQ0g7CiAJRElGRl9PUFRfU0VUKCZyZXYuZGlmZm9wdCwgSUdOT1JFX0RJUlRZX1NVQk1PRFVMRVMpOwotCW91dCA9IG9wZW4oZmlsZSwgT19DUkVBVCB8IE9fV1JPTkxZLCAwNjQ0KTsKKwlvdXQgPSBvcGVuKGZpbGUsIE9fQ1JFQVQgfCBPX1dST05MWSwgMDY2Nik7CiAJaWYgKG91dCA8IDApCiAJCWRpZSAoXygiQ291bGQgbm90IG9wZW4gJyVzJyBmb3Igd3JpdGluZy4iKSwgZmlsZSk7CiAJcmV2LmRpZmZvcHQuZmlsZSA9IHhmZG9wZW4ob3V0LCAidyIpOwpAQCAtMzAzLDYgKzM2Niw3IEBACiAJCWRpZSAoXygiQ291bGQgbm90IGFwcGx5ICclcyciKSwgZmlsZSk7CiAKIAl1bmxpbmsoZmlsZSk7CisJZnJlZShmaWxlKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMzExLDIzICszNzUsMzggQEAKIHN0YXRpYyBjb25zdCBjaGFyIGlnbm9yZV9lcnJvcltdID0KIE5fKCJUaGUgZm9sbG93aW5nIHBhdGhzIGFyZSBpZ25vcmVkIGJ5IG9uZSBvZiB5b3VyIC5naXRpZ25vcmUgZmlsZXM6XG4iKTsKIAotc3RhdGljIGludCB2ZXJib3NlID0gMCwgc2hvd19vbmx5ID0gMCwgaWdub3JlZF90b28gPSAwLCByZWZyZXNoX29ubHkgPSAwOwotc3RhdGljIGludCBpZ25vcmVfYWRkX2Vycm9ycywgYWRkcmVtb3ZlLCBpbnRlbnRfdG9fYWRkLCBpZ25vcmVfbWlzc2luZyA9IDA7CitzdGF0aWMgaW50IHZlcmJvc2UsIHNob3dfb25seSwgaWdub3JlZF90b28sIHJlZnJlc2hfb25seTsKK3N0YXRpYyBpbnQgaWdub3JlX2FkZF9lcnJvcnMsIGludGVudF90b19hZGQsIGlnbm9yZV9taXNzaW5nOworCisjZGVmaW5lIEFERFJFTU9WRV9ERUZBVUxUIDAgLyogQ2hhbmdlIHRvIDEgaW4gR2l0IDIuMCAqLworc3RhdGljIGludCBhZGRyZW1vdmUgPSBBRERSRU1PVkVfREVGQVVMVDsKK3N0YXRpYyBpbnQgYWRkcmVtb3ZlX2V4cGxpY2l0ID0gLTE7IC8qIHVuc3BlY2lmaWVkICovCisKK3N0YXRpYyBpbnQgaWdub3JlX3JlbW92YWxfY2IoY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0LCBjb25zdCBjaGFyICphcmcsIGludCB1bnNldCkKK3sKKwkvKiBpZiB3ZSBhcmUgdG9sZCB0byBpZ25vcmUsIHdlIGFyZSBub3QgYWRkaW5nIHJlbW92YWxzICovCisJKihpbnQgKilvcHQtPnZhbHVlID0gIXVuc2V0ID8gMCA6IDE7CisJcmV0dXJuIDA7Cit9CiAKIHN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5fYWRkX29wdGlvbnNbXSA9IHsKLQlPUFRfX0RSWV9SVU4oJnNob3dfb25seSwgImRyeSBydW4iKSwKLQlPUFRfX1ZFUkJPU0UoJnZlcmJvc2UsICJiZSB2ZXJib3NlIiksCisJT1BUX19EUllfUlVOKCZzaG93X29ubHksIE5fKCJkcnkgcnVuIikpLAorCU9QVF9fVkVSQk9TRSgmdmVyYm9zZSwgTl8oImJlIHZlcmJvc2UiKSksCiAJT1BUX0dST1VQKCIiKSwKLQlPUFRfQk9PTEVBTignaScsICJpbnRlcmFjdGl2ZSIsICZhZGRfaW50ZXJhY3RpdmUsICJpbnRlcmFjdGl2ZSBwaWNraW5nIiksCi0JT1BUX0JPT0xFQU4oJ3AnLCAicGF0Y2giLCAmcGF0Y2hfaW50ZXJhY3RpdmUsICJzZWxlY3QgaHVua3MgaW50ZXJhY3RpdmVseSIpLAotCU9QVF9CT09MRUFOKCdlJywgImVkaXQiLCAmZWRpdF9pbnRlcmFjdGl2ZSwgImVkaXQgY3VycmVudCBkaWZmIGFuZCBhcHBseSIpLAotCU9QVF9fRk9SQ0UoJmlnbm9yZWRfdG9vLCAiYWxsb3cgYWRkaW5nIG90aGVyd2lzZSBpZ25vcmVkIGZpbGVzIiksCi0JT1BUX0JPT0xFQU4oJ3UnLCAidXBkYXRlIiwgJnRha2Vfd29ya3RyZWVfY2hhbmdlcywgInVwZGF0ZSB0cmFja2VkIGZpbGVzIiksCi0JT1BUX0JPT0xFQU4oJ04nLCAiaW50ZW50LXRvLWFkZCIsICZpbnRlbnRfdG9fYWRkLCAicmVjb3JkIG9ubHkgdGhlIGZhY3QgdGhhdCB0aGUgcGF0aCB3aWxsIGJlIGFkZGVkIGxhdGVyIiksCi0JT1BUX0JPT0xFQU4oJ0EnLCAiYWxsIiwgJmFkZHJlbW92ZSwgImFkZCBjaGFuZ2VzIGZyb20gYWxsIHRyYWNrZWQgYW5kIHVudHJhY2tlZCBmaWxlcyIpLAotCU9QVF9CT09MRUFOKCAwICwgInJlZnJlc2giLCAmcmVmcmVzaF9vbmx5LCAiZG9uJ3QgYWRkLCBvbmx5IHJlZnJlc2ggdGhlIGluZGV4IiksCi0JT1BUX0JPT0xFQU4oIDAgLCAiaWdub3JlLWVycm9ycyIsICZpZ25vcmVfYWRkX2Vycm9ycywgImp1c3Qgc2tpcCBmaWxlcyB3aGljaCBjYW5ub3QgYmUgYWRkZWQgYmVjYXVzZSBvZiBlcnJvcnMiKSwKLQlPUFRfQk9PTEVBTiggMCAsICJpZ25vcmUtbWlzc2luZyIsICZpZ25vcmVfbWlzc2luZywgImNoZWNrIGlmIC0gZXZlbiBtaXNzaW5nIC0gZmlsZXMgYXJlIGlnbm9yZWQgaW4gZHJ5IHJ1biIpLAorCU9QVF9CT09MKCdpJywgImludGVyYWN0aXZlIiwgJmFkZF9pbnRlcmFjdGl2ZSwgTl8oImludGVyYWN0aXZlIHBpY2tpbmciKSksCisJT1BUX0JPT0woJ3AnLCAicGF0Y2giLCAmcGF0Y2hfaW50ZXJhY3RpdmUsIE5fKCJzZWxlY3QgaHVua3MgaW50ZXJhY3RpdmVseSIpKSwKKwlPUFRfQk9PTCgnZScsICJlZGl0IiwgJmVkaXRfaW50ZXJhY3RpdmUsIE5fKCJlZGl0IGN1cnJlbnQgZGlmZiBhbmQgYXBwbHkiKSksCisJT1BUX19GT1JDRSgmaWdub3JlZF90b28sIE5fKCJhbGxvdyBhZGRpbmcgb3RoZXJ3aXNlIGlnbm9yZWQgZmlsZXMiKSksCisJT1BUX0JPT0woJ3UnLCAidXBkYXRlIiwgJnRha2Vfd29ya3RyZWVfY2hhbmdlcywgTl8oInVwZGF0ZSB0cmFja2VkIGZpbGVzIikpLAorCU9QVF9CT09MKCdOJywgImludGVudC10by1hZGQiLCAmaW50ZW50X3RvX2FkZCwgTl8oInJlY29yZCBvbmx5IHRoZSBmYWN0IHRoYXQgdGhlIHBhdGggd2lsbCBiZSBhZGRlZCBsYXRlciIpKSwKKwlPUFRfQk9PTCgnQScsICJhbGwiLCAmYWRkcmVtb3ZlX2V4cGxpY2l0LCBOXygiYWRkIGNoYW5nZXMgZnJvbSBhbGwgdHJhY2tlZCBhbmQgdW50cmFja2VkIGZpbGVzIikpLAorCXsgT1BUSU9OX0NBTExCQUNLLCAwLCAiaWdub3JlLXJlbW92YWwiLCAmYWRkcmVtb3ZlX2V4cGxpY2l0LAorCSAgTlVMTCAvKiB0YWtlcyBubyBhcmd1bWVudHMgKi8sCisJICBOXygiaWdub3JlIHBhdGhzIHJlbW92ZWQgaW4gdGhlIHdvcmtpbmcgdHJlZSAoc2FtZSBhcyAtLW5vLWFsbCkiKSwKKwkgIFBBUlNFX09QVF9OT0FSRywgaWdub3JlX3JlbW92YWxfY2IgfSwKKwlPUFRfQk9PTCggMCAsICJyZWZyZXNoIiwgJnJlZnJlc2hfb25seSwgTl8oImRvbid0IGFkZCwgb25seSByZWZyZXNoIHRoZSBpbmRleCIpKSwKKwlPUFRfQk9PTCggMCAsICJpZ25vcmUtZXJyb3JzIiwgJmlnbm9yZV9hZGRfZXJyb3JzLCBOXygianVzdCBza2lwIGZpbGVzIHdoaWNoIGNhbm5vdCBiZSBhZGRlZCBiZWNhdXNlIG9mIGVycm9ycyIpKSwKKwlPUFRfQk9PTCggMCAsICJpZ25vcmUtbWlzc2luZyIsICZpZ25vcmVfbWlzc2luZywgTl8oImNoZWNrIGlmIC0gZXZlbiBtaXNzaW5nIC0gZmlsZXMgYXJlIGlnbm9yZWQgaW4gZHJ5IHJ1biIpKSwKIAlPUFRfRU5EKCksCiB9OwogCkBAIC0zNzIsNiArNDUxLDggQEAKIAlpbnQgYWRkX25ld19maWxlczsKIAlpbnQgcmVxdWlyZV9wYXRoc3BlYzsKIAljaGFyICpzZWVuID0gTlVMTDsKKwlpbnQgaW1wbGljaXRfZG90ID0gMDsKKwlzdHJ1Y3QgdXBkYXRlX2NhbGxiYWNrX2RhdGEgdXBkYXRlX2RhdGE7CiAKIAlnaXRfY29uZmlnKGFkZF9jb25maWcsIE5VTEwpOwogCkBAIC0zODcsMTQgKzQ2OCw0NCBAQAogCWFyZ2MtLTsKIAlhcmd2Kys7CiAKKwlpZiAoMCA8PSBhZGRyZW1vdmVfZXhwbGljaXQpCisJCWFkZHJlbW92ZSA9IGFkZHJlbW92ZV9leHBsaWNpdDsKKwllbHNlIGlmICh0YWtlX3dvcmt0cmVlX2NoYW5nZXMgJiYgQUREUkVNT1ZFX0RFRkFVTFQpCisJCWFkZHJlbW92ZSA9IDA7IC8qICItdSIgd2FzIGdpdmVuIGJ1dCBub3QgIi1BIiAqLworCiAJaWYgKGFkZHJlbW92ZSAmJiB0YWtlX3dvcmt0cmVlX2NoYW5nZXMpCiAJCWRpZShfKCItQSBhbmQgLXUgYXJlIG11dHVhbGx5IGluY29tcGF0aWJsZSIpKTsKKworCS8qCisJICogV2FybiB3aGVuICJnaXQgYWRkIHBhdGhzcGVjLi4uIiB3YXMgZ2l2ZW4gd2l0aG91dCAiLXUiIG9yICItQSIKKwkgKiBhbmQgcGF0aHNwZWMuLi4gY292ZXJzIGEgcmVtb3ZlZCBwYXRoLgorCSAqLworCW1lbXNldCgmdXBkYXRlX2RhdGEsIDAsIHNpemVvZih1cGRhdGVfZGF0YSkpOworCWlmICghdGFrZV93b3JrdHJlZV9jaGFuZ2VzICYmIGFkZHJlbW92ZV9leHBsaWNpdCA8IDApCisJCXVwZGF0ZV9kYXRhLndhcm5fYWRkX3dvdWxkX3JlbW92ZSA9IDE7CisKKwlpZiAoIXRha2Vfd29ya3RyZWVfY2hhbmdlcyAmJiBhZGRyZW1vdmVfZXhwbGljaXQgPCAwICYmIGFyZ2MpCisJCS8qCisJCSAqIFR1cm4gImdpdCBhZGQgcGF0aHNwZWMuLi4iIHRvICJnaXQgYWRkIC1BIHBhdGhzcGVjLi4uIgorCQkgKiBpbiBHaXQgMi4wIGJ1dCBub3QgeWV0CisJCSAqLworCQk7IC8qIGFkZHJlbW92ZSA9IDE7ICovCisKIAlpZiAoIXNob3dfb25seSAmJiBpZ25vcmVfbWlzc2luZykKIAkJZGllKF8oIk9wdGlvbiAtLWlnbm9yZS1taXNzaW5nIGNhbiBvbmx5IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCAtLWRyeS1ydW4iKSk7Ci0JaWYgKChhZGRyZW1vdmUgfHwgdGFrZV93b3JrdHJlZV9jaGFuZ2VzKSAmJiAhYXJnYykgeworCWlmIChhZGRyZW1vdmUpIHsKKwkJb3B0aW9uX3dpdGhfaW1wbGljaXRfZG90ID0gIi0tYWxsIjsKKwkJc2hvcnRfb3B0aW9uX3dpdGhfaW1wbGljaXRfZG90ID0gIi1BIjsKKwl9CisJaWYgKHRha2Vfd29ya3RyZWVfY2hhbmdlcykgeworCQlvcHRpb25fd2l0aF9pbXBsaWNpdF9kb3QgPSAiLS11cGRhdGUiOworCQlzaG9ydF9vcHRpb25fd2l0aF9pbXBsaWNpdF9kb3QgPSAiLXUiOworCX0KKwlpZiAob3B0aW9uX3dpdGhfaW1wbGljaXRfZG90ICYmICFhcmdjKSB7CiAJCXN0YXRpYyBjb25zdCBjaGFyICpoZXJlWzJdID0geyAiLiIsIE5VTEwgfTsKIAkJYXJnYyA9IDE7CiAJCWFyZ3YgPSBoZXJlOworCQlpbXBsaWNpdF9kb3QgPSAxOwogCX0KIAogCWFkZF9uZXdfZmlsZXMgPSAhdGFrZV93b3JrdHJlZV9jaGFuZ2VzICYmICFyZWZyZXNoX29ubHk7CkBAIC00MDcsMTQgKzUxOCwxNSBAQAogCQkgKGludGVudF90b19hZGQgPyBBRERfQ0FDSEVfSU5URU5UIDogMCkgfAogCQkgKGlnbm9yZV9hZGRfZXJyb3JzID8gQUREX0NBQ0hFX0lHTk9SRV9FUlJPUlMgOiAwKSB8CiAJCSAoIShhZGRyZW1vdmUgfHwgdGFrZV93b3JrdHJlZV9jaGFuZ2VzKQotCQkgID8gQUREX0NBQ0hFX0lHTk9SRV9SRU1PVkFMIDogMCkpOworCQkgID8gQUREX0NBQ0hFX0lHTk9SRV9SRU1PVkFMIDogMCkpIHwKKwkJIChpbXBsaWNpdF9kb3QgPyBBRERfQ0FDSEVfSU1QTElDSVRfRE9UIDogMCk7CiAKIAlpZiAocmVxdWlyZV9wYXRoc3BlYyAmJiBhcmdjID09IDApIHsKIAkJZnByaW50ZihzdGRlcnIsIF8oIk5vdGhpbmcgc3BlY2lmaWVkLCBub3RoaW5nIGFkZGVkLlxuIikpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiTWF5YmUgeW91IHdhbnRlZCB0byBzYXkgJ2dpdCBhZGQgLic/XG4iKSk7CiAJCXJldHVybiAwOwogCX0KLQlwYXRoc3BlYyA9IHZhbGlkYXRlX3BhdGhzcGVjKGFyZ2MsIGFyZ3YsIHByZWZpeCk7CisJcGF0aHNwZWMgPSB2YWxpZGF0ZV9wYXRoc3BlYyhhcmd2LCBwcmVmaXgpOwogCiAJaWYgKHJlYWRfY2FjaGUoKSA8IDApCiAJCWRpZShfKCJpbmRleCBmaWxlIGNvcnJ1cHQiKSk7CkBAIC00MzEsMjYgKzU0MywzMCBAQAogCQl9CiAKIAkJLyogVGhpcyBwaWNrcyB1cCB0aGUgcGF0aHMgdGhhdCBhcmUgbm90IHRyYWNrZWQgKi8KLQkJYmFzZWxlbiA9IGZpbGxfZGlyZWN0b3J5KCZkaXIsIHBhdGhzcGVjKTsKKwkJYmFzZWxlbiA9IGZpbGxfZGlyZWN0b3J5KCZkaXIsIGltcGxpY2l0X2RvdCA/IE5VTEwgOiBwYXRoc3BlYyk7CiAJCWlmIChwYXRoc3BlYykKLQkJCXNlZW4gPSBwcnVuZV9kaXJlY3RvcnkoJmRpciwgcGF0aHNwZWMsIGJhc2VsZW4pOworCQkJc2VlbiA9IHBydW5lX2RpcmVjdG9yeSgmZGlyLCBwYXRoc3BlYywgYmFzZWxlbiwKKwkJCQkJaW1wbGljaXRfZG90ID8gV0FSTl9JTVBMSUNJVF9ET1QgOiAwKTsKIAl9CiAKIAlpZiAocmVmcmVzaF9vbmx5KSB7CiAJCXJlZnJlc2godmVyYm9zZSwgcGF0aHNwZWMpOwogCQlnb3RvIGZpbmlzaDsKIAl9CisJaWYgKGltcGxpY2l0X2RvdCAmJiBwcmVmaXgpCisJCXJlZnJlc2hfY2FjaGUoUkVGUkVTSF9RVUlFVCk7CiAKIAlpZiAocGF0aHNwZWMpIHsKIAkJaW50IGk7CisKIAkJaWYgKCFzZWVuKQotCQkJc2VlbiA9IGZpbmRfdXNlZF9wYXRoc3BlYyhwYXRoc3BlYyk7CisJCQlzZWVuID0gZmluZF9wYXRoc3BlY3NfbWF0Y2hpbmdfYWdhaW5zdF9pbmRleChwYXRoc3BlYyk7CiAJCWZvciAoaSA9IDA7IHBhdGhzcGVjW2ldOyBpKyspIHsKIAkJCWlmICghc2VlbltpXSAmJiBwYXRoc3BlY1tpXVswXQogCQkJICAgICYmICFmaWxlX2V4aXN0cyhwYXRoc3BlY1tpXSkpIHsKIAkJCQlpZiAoaWdub3JlX21pc3NpbmcpIHsKIAkJCQkJaW50IGR0eXBlID0gRFRfVU5LTk9XTjsKLQkJCQkJaWYgKGV4Y2x1ZGVkKCZkaXIsIHBhdGhzcGVjW2ldLCAmZHR5cGUpKQorCQkJCQlpZiAoaXNfZXhjbHVkZWQoJmRpciwgcGF0aHNwZWNbaV0sICZkdHlwZSkpCiAJCQkJCQlkaXJfYWRkX2lnbm9yZWQoJmRpciwgcGF0aHNwZWNbaV0sIHN0cmxlbihwYXRoc3BlY1tpXSkpOwogCQkJCX0gZWxzZQogCQkJCQlkaWUoXygicGF0aHNwZWMgJyVzJyBkaWQgbm90IG1hdGNoIGFueSBmaWxlcyIpLApAQCAtNDYyLDggKzU3OCwyMCBAQAogCiAJcGx1Z19idWxrX2NoZWNraW4oKTsKIAotCWV4aXRfc3RhdHVzIHw9IGFkZF9maWxlc190b19jYWNoZShwcmVmaXgsIHBhdGhzcGVjLCBmbGFncyk7CisJaWYgKChmbGFncyAmIEFERF9DQUNIRV9JTVBMSUNJVF9ET1QpICYmIHByZWZpeCkgeworCQkvKgorCQkgKiBDaGVjayBmb3IgbW9kaWZpZWQgZmlsZXMgdGhyb3VnaG91dCB0aGUgd29ya3RyZWUgc28KKwkJICogdXBkYXRlX2NhbGxiYWNrIGhhcyBhIGNoYW5jZSB0byB3YXJuIGFib3V0IGNoYW5nZXMKKwkJICogb3V0c2lkZSB0aGUgY3dkLgorCQkgKi8KKwkJdXBkYXRlX2RhdGEuaW1wbGljaXRfZG90ID0gcHJlZml4OworCQl1cGRhdGVfZGF0YS5pbXBsaWNpdF9kb3RfbGVuID0gc3RybGVuKHByZWZpeCk7CisJCXBhdGhzcGVjID0gTlVMTDsKKwl9CisJdXBkYXRlX2RhdGEuZmxhZ3MgPSBmbGFncyAmIH5BRERfQ0FDSEVfSU1QTElDSVRfRE9UOworCXVwZGF0ZV9maWxlc19pbl9jYWNoZShwcmVmaXgsIHBhdGhzcGVjLCAmdXBkYXRlX2RhdGEpOwogCisJZXhpdF9zdGF0dXMgfD0gISF1cGRhdGVfZGF0YS5hZGRfZXJyb3JzOwogCWlmIChhZGRfbmV3X2ZpbGVzKQogCQlleGl0X3N0YXR1cyB8PSBhZGRfZmlsZXMoJmRpciwgZmxhZ3MpOwogCmRpZmYgLS1naXQgYS9idWlsdGluL2FwcGx5LmMgYi9idWlsdGluL2FwcGx5LmMKaW5kZXggZjY5YTg2NC4uMzk3OWY4YiAxMDA2NDQKLS0tIGEvYnVpbHRpbi9hcHBseS5jCisrKyBiL2J1aWx0aW4vYXBwbHkuYwpAQCAtMTYsNiArMTYsOSBAQAogI2luY2x1ZGUgImRpci5oIgogI2luY2x1ZGUgImRpZmYuaCIKICNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCisjaW5jbHVkZSAieGRpZmYtaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAibGwtbWVyZ2UuaCIKKyNpbmNsdWRlICJyZXJlcmUuaCIKIAogLyoKICAqICAtLWNoZWNrIHR1cm5zIG9uIGNoZWNraW5nIHRoYXQgdGhlIHdvcmtpbmcgdHJlZSBtYXRjaGVzIHRoZQpAQCAtNDYsNiArNDksNyBAQAogc3RhdGljIGludCBhcHBseV92ZXJib3NlbHk7CiBzdGF0aWMgaW50IGFsbG93X292ZXJsYXA7CiBzdGF0aWMgaW50IG5vX2FkZDsKK3N0YXRpYyBpbnQgdGhyZWV3YXk7CiBzdGF0aWMgY29uc3QgY2hhciAqZmFrZV9hbmNlc3RvcjsKIHN0YXRpYyBpbnQgbGluZV90ZXJtaW5hdGlvbiA9ICdcbic7CiBzdGF0aWMgdW5zaWduZWQgaW50IHBfY29udGV4dCA9IFVJTlRfTUFYOwpAQCAtMTg0LDcgKzE4OCw2IEBACiAJaW50IGlzX25ldywgaXNfZGVsZXRlOwkvKiAtMSA9IHVua25vd24sIDAgPSBmYWxzZSwgMSA9IHRydWUgKi8KIAlpbnQgcmVqZWN0ZWQ7CiAJdW5zaWduZWQgd3NfcnVsZTsKLQl1bnNpZ25lZCBsb25nIGRlZmxhdGVfb3JpZ2xlbjsKIAlpbnQgbGluZXNfYWRkZWQsIGxpbmVzX2RlbGV0ZWQ7CiAJaW50IHNjb3JlOwogCXVuc2lnbmVkIGludCBpc190b3BsZXZlbF9yZWxhdGl2ZToxOwpAQCAtMTkzLDEyICsxOTYsMTcgQEAKIAl1bnNpZ25lZCBpbnQgaXNfY29weToxOwogCXVuc2lnbmVkIGludCBpc19yZW5hbWU6MTsKIAl1bnNpZ25lZCBpbnQgcmVjb3VudDoxOworCXVuc2lnbmVkIGludCBjb25mbGljdGVkX3RocmVld2F5OjE7CisJdW5zaWduZWQgaW50IGRpcmVjdF90b190aHJlZXdheToxOwogCXN0cnVjdCBmcmFnbWVudCAqZnJhZ21lbnRzOwogCWNoYXIgKnJlc3VsdDsKIAlzaXplX3QgcmVzdWx0c2l6ZTsKIAljaGFyIG9sZF9zaGExX3ByZWZpeFs0MV07CiAJY2hhciBuZXdfc2hhMV9wcmVmaXhbNDFdOwogCXN0cnVjdCBwYXRjaCAqbmV4dDsKKworCS8qIHRocmVlLXdheSBmYWxsYmFjayByZXN1bHQgKi8KKwl1bnNpZ25lZCBjaGFyIHRocmVld2F5X3N0YWdlWzNdWzIwXTsKIH07CiAKIHN0YXRpYyB2b2lkIGZyZWVfZnJhZ21lbnRfbGlzdChzdHJ1Y3QgZnJhZ21lbnQgKmxpc3QpCkBAIC0zNzEsOCArMzc5LDggQEAKIHN0YXRpYyB2b2lkIGNsZWFyX2ltYWdlKHN0cnVjdCBpbWFnZSAqaW1hZ2UpCiB7CiAJZnJlZShpbWFnZS0+YnVmKTsKLQlpbWFnZS0+YnVmID0gTlVMTDsKLQlpbWFnZS0+bGVuID0gMDsKKwlmcmVlKGltYWdlLT5saW5lX2FsbG9jYXRlZCk7CisJbWVtc2V0KGltYWdlLCAwLCBzaXplb2YoKmltYWdlKSk7CiB9CiAKIC8qIGZtdCBtdXN0IGNvbnRhaW4gX29uZV8gJXMgYW5kIG5vIG90aGVyIHN1YnN0aXR1dGlvbiAqLwpAQCAtMTAzMywxNSArMTA0MSwxNyBAQAogCiBzdGF0aWMgaW50IGdpdGRpZmZfc2ltaWxhcml0eShjb25zdCBjaGFyICpsaW5lLCBzdHJ1Y3QgcGF0Y2ggKnBhdGNoKQogewotCWlmICgocGF0Y2gtPnNjb3JlID0gc3RydG91bChsaW5lLCBOVUxMLCAxMCkpID09IFVMT05HX01BWCkKLQkJcGF0Y2gtPnNjb3JlID0gMDsKKwl1bnNpZ25lZCBsb25nIHZhbCA9IHN0cnRvdWwobGluZSwgTlVMTCwgMTApOworCWlmICh2YWwgPD0gMTAwKQorCQlwYXRjaC0+c2NvcmUgPSB2YWw7CiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgZ2l0ZGlmZl9kaXNzaW1pbGFyaXR5KGNvbnN0IGNoYXIgKmxpbmUsIHN0cnVjdCBwYXRjaCAqcGF0Y2gpCiB7Ci0JaWYgKChwYXRjaC0+c2NvcmUgPSBzdHJ0b3VsKGxpbmUsIE5VTEwsIDEwKSkgPT0gVUxPTkdfTUFYKQotCQlwYXRjaC0+c2NvcmUgPSAwOworCXVuc2lnbmVkIGxvbmcgdmFsID0gc3RydG91bChsaW5lLCBOVUxMLCAxMCk7CisJaWYgKHZhbCA8PSAxMDApCisJCXBhdGNoLT5zY29yZSA9IHZhbDsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTA4NywxNSArMTA5NywyMyBAQAogCXJldHVybiAtMTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgKnN0b3BfYXRfc2xhc2goY29uc3QgY2hhciAqbGluZSwgaW50IGxsZW4pCisvKgorICogU2tpcCBwX3ZhbHVlIGxlYWRpbmcgY29tcG9uZW50cyBmcm9tICJsaW5lIjsgYXMgd2UgZG8gbm90IGFjY2VwdAorICogYWJzb2x1dGUgcGF0aHMsIHJldHVybiBOVUxMIGluIHRoYXQgY2FzZS4KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgKnNraXBfdHJlZV9wcmVmaXgoY29uc3QgY2hhciAqbGluZSwgaW50IGxsZW4pCiB7Ci0JaW50IG5zbGFzaCA9IHBfdmFsdWU7CisJaW50IG5zbGFzaDsKIAlpbnQgaTsKIAorCWlmICghcF92YWx1ZSkKKwkJcmV0dXJuIChsbGVuICYmIGxpbmVbMF0gPT0gJy8nKSA/IE5VTEwgOiBsaW5lOworCisJbnNsYXNoID0gcF92YWx1ZTsKIAlmb3IgKGkgPSAwOyBpIDwgbGxlbjsgaSsrKSB7CiAJCWludCBjaCA9IGxpbmVbaV07CiAJCWlmIChjaCA9PSAnLycgJiYgLS1uc2xhc2ggPD0gMCkKLQkJCXJldHVybiAmbGluZVtpXTsKKwkJCXJldHVybiAoaSA9PSAwKSA/IE5VTEwgOiAmbGluZVtpICsgMV07CiAJfQogCXJldHVybiBOVUxMOwogfQpAQCAtMTEyNSwxMiArMTE0MywxMSBAQAogCQlpZiAodW5xdW90ZV9jX3N0eWxlKCZmaXJzdCwgbGluZSwgJnNlY29uZCkpCiAJCQlnb3RvIGZyZWVfYW5kX2ZhaWwxOwogCi0JCS8qIGFkdmFuY2UgdG8gdGhlIGZpcnN0IHNsYXNoICovCi0JCWNwID0gc3RvcF9hdF9zbGFzaChmaXJzdC5idWYsIGZpcnN0Lmxlbik7Ci0JCS8qIHdlIGRvIG5vdCBhY2NlcHQgYWJzb2x1dGUgcGF0aHMgKi8KLQkJaWYgKCFjcCB8fCBjcCA9PSBmaXJzdC5idWYpCisJCS8qIHN0cmlwIHRoZSBhL2IgcHJlZml4IGluY2x1ZGluZyB0cmFpbGluZyBzbGFzaCAqLworCQljcCA9IHNraXBfdHJlZV9wcmVmaXgoZmlyc3QuYnVmLCBmaXJzdC5sZW4pOworCQlpZiAoIWNwKQogCQkJZ290byBmcmVlX2FuZF9mYWlsMTsKLQkJc3RyYnVmX3JlbW92ZSgmZmlyc3QsIDAsIGNwICsgMSAtIGZpcnN0LmJ1Zik7CisJCXN0cmJ1Zl9yZW1vdmUoJmZpcnN0LCAwLCBjcCAtIGZpcnN0LmJ1Zik7CiAKIAkJLyoKIAkJICogc2Vjb25kIHBvaW50cyBhdCBvbmUgcGFzdCBjbG9zaW5nIGRxIG9mIG5hbWUuCkBAIC0xMTQ0LDIyICsxMTYxLDIxIEBACiAJCWlmICgqc2Vjb25kID09ICciJykgewogCQkJaWYgKHVucXVvdGVfY19zdHlsZSgmc3AsIHNlY29uZCwgTlVMTCkpCiAJCQkJZ290byBmcmVlX2FuZF9mYWlsMTsKLQkJCWNwID0gc3RvcF9hdF9zbGFzaChzcC5idWYsIHNwLmxlbik7Ci0JCQlpZiAoIWNwIHx8IGNwID09IHNwLmJ1ZikKKwkJCWNwID0gc2tpcF90cmVlX3ByZWZpeChzcC5idWYsIHNwLmxlbik7CisJCQlpZiAoIWNwKQogCQkJCWdvdG8gZnJlZV9hbmRfZmFpbDE7CiAJCQkvKiBUaGV5IG11c3QgbWF0Y2gsIG90aGVyd2lzZSBpZ25vcmUgKi8KLQkJCWlmIChzdHJjbXAoY3AgKyAxLCBmaXJzdC5idWYpKQorCQkJaWYgKHN0cmNtcChjcCwgZmlyc3QuYnVmKSkKIAkJCQlnb3RvIGZyZWVfYW5kX2ZhaWwxOwogCQkJc3RyYnVmX3JlbGVhc2UoJnNwKTsKIAkJCXJldHVybiBzdHJidWZfZGV0YWNoKCZmaXJzdCwgTlVMTCk7CiAJCX0KIAogCQkvKiB1bnF1b3RlZCBzZWNvbmQgKi8KLQkJY3AgPSBzdG9wX2F0X3NsYXNoKHNlY29uZCwgbGluZSArIGxsZW4gLSBzZWNvbmQpOwotCQlpZiAoIWNwIHx8IGNwID09IHNlY29uZCkKKwkJY3AgPSBza2lwX3RyZWVfcHJlZml4KHNlY29uZCwgbGluZSArIGxsZW4gLSBzZWNvbmQpOworCQlpZiAoIWNwKQogCQkJZ290byBmcmVlX2FuZF9mYWlsMTsKLQkJY3ArKzsKLQkJaWYgKGxpbmUgKyBsbGVuIC0gY3AgIT0gZmlyc3QubGVuICsgMSB8fAorCQlpZiAobGluZSArIGxsZW4gLSBjcCAhPSBmaXJzdC5sZW4gfHwKIAkJICAgIG1lbWNtcChmaXJzdC5idWYsIGNwLCBmaXJzdC5sZW4pKQogCQkJZ290byBmcmVlX2FuZF9mYWlsMTsKIAkJcmV0dXJuIHN0cmJ1Zl9kZXRhY2goJmZpcnN0LCBOVUxMKTsKQEAgLTExNzEsMTAgKzExODcsOSBAQAogCX0KIAogCS8qIHVucXVvdGVkIGZpcnN0IG5hbWUgKi8KLQluYW1lID0gc3RvcF9hdF9zbGFzaChsaW5lLCBsbGVuKTsKLQlpZiAoIW5hbWUgfHwgbmFtZSA9PSBsaW5lKQorCW5hbWUgPSBza2lwX3RyZWVfcHJlZml4KGxpbmUsIGxsZW4pOworCWlmICghbmFtZSkKIAkJcmV0dXJuIE5VTEw7Ci0JbmFtZSsrOwogCiAJLyoKIAkgKiBzaW5jZSB0aGUgZmlyc3QgbmFtZSBpcyB1bnF1b3RlZCwgYSBkcSBpZiBleGlzdHMgbXVzdCBiZQpAQCAtMTE4OCwxMCArMTIwMyw5IEBACiAJCQlpZiAodW5xdW90ZV9jX3N0eWxlKCZzcCwgc2Vjb25kLCBOVUxMKSkKIAkJCQlnb3RvIGZyZWVfYW5kX2ZhaWwyOwogCi0JCQlucCA9IHN0b3BfYXRfc2xhc2goc3AuYnVmLCBzcC5sZW4pOwotCQkJaWYgKCFucCB8fCBucCA9PSBzcC5idWYpCisJCQlucCA9IHNraXBfdHJlZV9wcmVmaXgoc3AuYnVmLCBzcC5sZW4pOworCQkJaWYgKCFucCkKIAkJCQlnb3RvIGZyZWVfYW5kX2ZhaWwyOwotCQkJbnArKzsKIAogCQkJbGVuID0gc3AuYnVmICsgc3AubGVuIC0gbnA7CiAJCQlpZiAobGVuIDwgc2Vjb25kIC0gbmFtZSAmJgpAQCAtMTIyMywxMyArMTIzNywyNyBAQAogCQljYXNlICdcbic6CiAJCQlyZXR1cm4gTlVMTDsKIAkJY2FzZSAnXHQnOiBjYXNlICcgJzoKLQkJCXNlY29uZCA9IHN0b3BfYXRfc2xhc2gobmFtZSArIGxlbiwgbGluZV9sZW4gLSBsZW4pOworCQkJLyoKKwkJCSAqIElzIHRoaXMgdGhlIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBwcmVpbWFnZQorCQkJICogYW5kIHRoZSBwb3N0aW1hZ2UgcGF0aG5hbWU/ICBBZ2Fpbiwgd2UgYXJlCisJCQkgKiBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMKKwkJCSAqIG5vIHJlbmFtZSwgYXMgdGhpcyBpcyBvbmx5IHRvIHNldCBkZWZfbmFtZQorCQkJICogYW5kIGEgcmVuYW1lIHBhdGNoIGhhcyB0aGUgbmFtZXMgZWxzZXdoZXJlCisJCQkgKiBpbiBhbiB1bmFtYmlndW91cyBmb3JtLgorCQkJICovCisJCQlpZiAoIW5hbWVbbGVuICsgMV0pCisJCQkJcmV0dXJuIE5VTEw7IC8qIG5vIHBvc3RpbWFnZSBuYW1lICovCisJCQlzZWNvbmQgPSBza2lwX3RyZWVfcHJlZml4KG5hbWUgKyBsZW4gKyAxLAorCQkJCQkJICBsaW5lX2xlbiAtIChsZW4gKyAxKSk7CiAJCQlpZiAoIXNlY29uZCkKIAkJCQlyZXR1cm4gTlVMTDsKLQkJCXNlY29uZCsrOwotCQkJaWYgKHNlY29uZFtsZW5dID09ICdcbicgJiYgIXN0cm5jbXAobmFtZSwgc2Vjb25kLCBsZW4pKSB7CisJCQkvKgorCQkJICogRG9lcyBsZW4gYnl0ZXMgc3RhcnRpbmcgYXQgIm5hbWUiIGFuZCAic2Vjb25kIgorCQkJICogKHRoYXQgYXJlIHNlcGFyYXRlZCBieSBvbmUgSFQgb3IgU1Agd2UganVzdAorCQkJICogZm91bmQpIGV4YWN0bHkgbWF0Y2g/CisJCQkgKi8KKwkJCWlmIChzZWNvbmRbbGVuXSA9PSAnXG4nICYmICFzdHJuY21wKG5hbWUsIHNlY29uZCwgbGVuKSkKIAkJCQlyZXR1cm4geG1lbWR1cHoobmFtZSwgbGVuKTsKLQkJCX0KIAkJfQogCX0KIH0KQEAgLTE4OTMsNyArMTkyMSw3IEBACiB9CiAKIC8qCi0gKiBSZWFkIHRoZSBwYXRjaCB0ZXh0IGluICJidWZmZXIiIHRhaHQgZXh0ZW5kcyBmb3IgInNpemUiIGJ5dGVzOyBzdG9wCisgKiBSZWFkIHRoZSBwYXRjaCB0ZXh0IGluICJidWZmZXIiIHRoYXQgZXh0ZW5kcyBmb3IgInNpemUiIGJ5dGVzOyBzdG9wCiAgKiByZWFkaW5nIGFmdGVyIHNlZWluZyBhIHNpbmdsZSBwYXRjaCAoaS5lLiBjaGFuZ2VzIHRvIGEgc2luZ2xlIGZpbGUpLgogICogQ3JlYXRlIGZyYWdtZW50cyAoaS5lLiBwYXRjaCBodW5rcykgYW5kIGhhbmcgdGhlbSB0byB0aGUgZ2l2ZW4gcGF0Y2guCiAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBjb25zdW1lZCwgc28gdGhhdCB0aGUgY2FsbGVyIGNhbiBjYWxsIHVzCkBAIC0yMDY5LDcgKzIwOTcsNyBAQAogCQkJCSAgIGNoYXIgKmJ1ZiwKIAkJCQkgICBzaXplX3QgbGVuLCBzaXplX3QgcG9zdGxlbikKIHsKLQlpbnQgaSwgY3R4OworCWludCBpLCBjdHgsIHJlZHVjZWQ7CiAJY2hhciAqbmV3LCAqb2xkLCAqZml4ZWQ7CiAJc3RydWN0IGltYWdlIGZpeGVkX3ByZWltYWdlOwogCkBAIC0yMDc5LDE4ICsyMTA3LDIwIEBACiAJICogZnJlZSAib2xkbGluZXMiLgogCSAqLwogCXByZXBhcmVfaW1hZ2UoJmZpeGVkX3ByZWltYWdlLCBidWYsIGxlbiwgMSk7Ci0JYXNzZXJ0KGZpeGVkX3ByZWltYWdlLm5yID09IHByZWltYWdlLT5ucik7Ci0JZm9yIChpID0gMDsgaSA8IHByZWltYWdlLT5ucjsgaSsrKQorCWFzc2VydChwb3N0bGVuCisJICAgICAgID8gZml4ZWRfcHJlaW1hZ2UubnIgPT0gcHJlaW1hZ2UtPm5yCisJICAgICAgIDogZml4ZWRfcHJlaW1hZ2UubnIgPD0gcHJlaW1hZ2UtPm5yKTsKKwlmb3IgKGkgPSAwOyBpIDwgZml4ZWRfcHJlaW1hZ2UubnI7IGkrKykKIAkJZml4ZWRfcHJlaW1hZ2UubGluZVtpXS5mbGFnID0gcHJlaW1hZ2UtPmxpbmVbaV0uZmxhZzsKIAlmcmVlKHByZWltYWdlLT5saW5lX2FsbG9jYXRlZCk7CiAJKnByZWltYWdlID0gZml4ZWRfcHJlaW1hZ2U7CiAKIAkvKgogCSAqIEFkanVzdCB0aGUgY29tbW9uIGNvbnRleHQgbGluZXMgaW4gcG9zdGltYWdlLiBUaGlzIGNhbiBiZQotCSAqIGRvbmUgaW4tcGxhY2Ugd2hlbiB3ZSBhcmUganVzdCBkb2luZyB3aGl0ZXNwYWNlIGZpeGluZywKLQkgKiB3aGljaCBkb2VzIG5vdCBtYWtlIHRoZSBzdHJpbmcgZ3JvdywgYnV0IG5lZWRzIGEgbmV3IGJ1ZmZlcgotCSAqIHdoZW4gaWdub3Jpbmcgd2hpdGVzcGFjZSBjYXVzZXMgdGhlIHVwZGF0ZSwgc2luY2UgaW4gdGhpcyBjYXNlCi0JICogd2UgY291bGQgaGF2ZSBlLmcuIHRhYnMgY29udmVydGVkIHRvIG11bHRpcGxlIHNwYWNlcy4KKwkgKiBkb25lIGluLXBsYWNlIHdoZW4gd2UgYXJlIHNocmlua2luZyBpdCB3aXRoIHdoaXRlc3BhY2UKKwkgKiBmaXhpbmcsIGJ1dCBuZWVkcyBhIG5ldyBidWZmZXIgd2hlbiBpZ25vcmluZyB3aGl0ZXNwYWNlIG9yCisJICogZXhwYW5kaW5nIGxlYWRpbmcgdGFicyB0byBzcGFjZXMuCisJICoKIAkgKiBXZSB0cnVzdCB0aGUgY2FsbGVyIHRvIHRlbGwgdXMgaWYgdGhlIHVwZGF0ZSBjYW4gYmUgZG9uZQogCSAqIGluIHBsYWNlIChwb3N0bGVuPT0wKSBvciBub3QuCiAJICovCkBAIC0yMTAwLDcgKzIxMzAsOCBAQAogCWVsc2UKIAkJbmV3ID0gb2xkOwogCWZpeGVkID0gcHJlaW1hZ2UtPmJ1ZjsKLQlmb3IgKGkgPSBjdHggPSAwOyBpIDwgcG9zdGltYWdlLT5ucjsgaSsrKSB7CisKKwlmb3IgKGkgPSByZWR1Y2VkID0gY3R4ID0gMDsgaSA8IHBvc3RpbWFnZS0+bnI7IGkrKykgewogCQlzaXplX3QgbGVuID0gcG9zdGltYWdlLT5saW5lW2ldLmxlbjsKIAkJaWYgKCEocG9zdGltYWdlLT5saW5lW2ldLmZsYWcgJiBMSU5FX0NPTU1PTikpIHsKIAkJCS8qIGFuIGFkZGVkIGxpbmUgLS0gbm8gY291bnRlcnBhcnRzIGluIHByZWltYWdlICovCkBAIC0yMTE5LDggKzIxNTAsMTUgQEAKIAkJCWZpeGVkICs9IHByZWltYWdlLT5saW5lW2N0eF0ubGVuOwogCQkJY3R4Kys7CiAJCX0KLQkJaWYgKHByZWltYWdlLT5uciA8PSBjdHgpCi0JCQlkaWUoXygib29wcyIpKTsKKworCQkvKgorCQkgKiBwcmVpbWFnZSBpcyBleHBlY3RlZCB0byBydW4gb3V0LCBpZiB0aGUgY2FsbGVyCisJCSAqIGZpeGVkIGFkZGl0aW9uIG9mIHRyYWlsaW5nIGJsYW5rIGxpbmVzLgorCQkgKi8KKwkJaWYgKHByZWltYWdlLT5uciA8PSBjdHgpIHsKKwkJCXJlZHVjZWQrKzsKKwkJCWNvbnRpbnVlOworCQl9CiAKIAkJLyogYW5kIGNvcHkgaXQgaW4sIHdoaWxlIGZpeGluZyB0aGUgbGluZSBsZW5ndGggKi8KIAkJbGVuID0gcHJlaW1hZ2UtPmxpbmVbY3R4XS5sZW47CkBAIC0yMTMzLDYgKzIxNzEsNyBAQAogCiAJLyogRml4IHRoZSBsZW5ndGggb2YgdGhlIHdob2xlIHRoaW5nICovCiAJcG9zdGltYWdlLT5sZW4gPSBuZXcgLSBwb3N0aW1hZ2UtPmJ1ZjsKKwlwb3N0aW1hZ2UtPm5yIC09IHJlZHVjZWQ7CiB9CiAKIHN0YXRpYyBpbnQgbWF0Y2hfZnJhZ21lbnQoc3RydWN0IGltYWdlICppbWcsCkBAIC0yMTQ2LDcgKzIxODUsNyBAQAogCWludCBpOwogCWNoYXIgKmZpeGVkX2J1ZiwgKmJ1ZiwgKm9yaWcsICp0YXJnZXQ7CiAJc3RydWN0IHN0cmJ1ZiBmaXhlZDsKLQlzaXplX3QgZml4ZWRfbGVuOworCXNpemVfdCBmaXhlZF9sZW4sIHBvc3RsZW47CiAJaW50IHByZWltYWdlX2xpbWl0OwogCiAJaWYgKHByZWltYWdlLT5uciArIHRyeV9sbm8gPD0gaW1nLT5ucikgewpAQCAtMjI5Niw2ICsyMzM1LDcgQEAKIAlzdHJidWZfaW5pdCgmZml4ZWQsIHByZWltYWdlLT5sZW4gKyAxKTsKIAlvcmlnID0gcHJlaW1hZ2UtPmJ1ZjsKIAl0YXJnZXQgPSBpbWctPmJ1ZiArIHRyeTsKKwlwb3N0bGVuID0gMDsKIAlmb3IgKGkgPSAwOyBpIDwgcHJlaW1hZ2VfbGltaXQ7IGkrKykgewogCQlzaXplX3Qgb2xkbGVuID0gcHJlaW1hZ2UtPmxpbmVbaV0ubGVuOwogCQlzaXplX3QgdGd0bGVuID0gaW1nLT5saW5lW3RyeV9sbm8gKyBpXS5sZW47CkBAIC0yMzIzLDYgKzIzNjMsNyBAQAogCQltYXRjaCA9ICh0Z3RmaXgubGVuID09IGZpeGVkLmxlbiAtIGZpeHN0YXJ0ICYmCiAJCQkgIW1lbWNtcCh0Z3RmaXguYnVmLCBmaXhlZC5idWYgKyBmaXhzdGFydCwKIAkJCQkJICAgICBmaXhlZC5sZW4gLSBmaXhzdGFydCkpOworCQlwb3N0bGVuICs9IHRndGZpeC5sZW47CiAKIAkJc3RyYnVmX3JlbGVhc2UoJnRndGZpeCk7CiAJCWlmICghbWF0Y2gpCkBAIC0yMzYwLDggKzI0MDEsMTAgQEAKIAkgKiBodW5rIG1hdGNoLiAgVXBkYXRlIHRoZSBjb250ZXh0IGxpbmVzIGluIHRoZSBwb3N0aW1hZ2UuCiAJICovCiAJZml4ZWRfYnVmID0gc3RyYnVmX2RldGFjaCgmZml4ZWQsICZmaXhlZF9sZW4pOworCWlmIChwb3N0bGVuIDwgcG9zdGltYWdlLT5sZW4pCisJCXBvc3RsZW4gPSAwOwogCXVwZGF0ZV9wcmVfcG9zdF9pbWFnZXMocHJlaW1hZ2UsIHBvc3RpbWFnZSwKLQkJCSAgICAgICBmaXhlZF9idWYsIGZpeGVkX2xlbiwgMCk7CisJCQkgICAgICAgZml4ZWRfYnVmLCBmaXhlZF9sZW4sIHBvc3RsZW4pOwogCXJldHVybiAxOwogCiAgdW5tYXRjaF9leGl0OgpAQCAtMjkzNywyMCArMjk4MCwxNyBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHJlYWRfZmlsZV9vcl9naXRsaW5rKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCBzdHJidWYgKmJ1ZikKK3N0YXRpYyBpbnQgcmVhZF9ibG9iX29iamVjdChzdHJ1Y3Qgc3RyYnVmICpidWYsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIHVuc2lnbmVkIG1vZGUpCiB7Ci0JaWYgKCFjZSkKLQkJcmV0dXJuIDA7Ci0KLQlpZiAoU19JU0dJVExJTksoY2UtPmNlX21vZGUpKSB7CisJaWYgKFNfSVNHSVRMSU5LKG1vZGUpKSB7CiAJCXN0cmJ1Zl9ncm93KGJ1ZiwgMTAwKTsKLQkJc3RyYnVmX2FkZGYoYnVmLCAiU3VicHJvamVjdCBjb21taXQgJXNcbiIsIHNoYTFfdG9faGV4KGNlLT5zaGExKSk7CisJCXN0cmJ1Zl9hZGRmKGJ1ZiwgIlN1YnByb2plY3QgY29tbWl0ICVzXG4iLCBzaGExX3RvX2hleChzaGExKSk7CiAJfSBlbHNlIHsKIAkJZW51bSBvYmplY3RfdHlwZSB0eXBlOwogCQl1bnNpZ25lZCBsb25nIHN6OwogCQljaGFyICpyZXN1bHQ7CiAKLQkJcmVzdWx0ID0gcmVhZF9zaGExX2ZpbGUoY2UtPnNoYTEsICZ0eXBlLCAmc3opOworCQlyZXN1bHQgPSByZWFkX3NoYTFfZmlsZShzaGExLCAmdHlwZSwgJnN6KTsKIAkJaWYgKCFyZXN1bHQpCiAJCQlyZXR1cm4gLTE7CiAJCS8qIFhYWCByZWFkX3NoYTFfZmlsZSBOVUwtdGVybWluYXRlcyAqLwpAQCAtMjk1OSw2ICsyOTk5LDEzIEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgcmVhZF9maWxlX29yX2dpdGxpbmsoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IHN0cmJ1ZiAqYnVmKQoreworCWlmICghY2UpCisJCXJldHVybiAwOworCXJldHVybiByZWFkX2Jsb2Jfb2JqZWN0KGJ1ZiwgY2UtPnNoYTEsIGNlLT5jZV9tb2RlKTsKK30KKwogc3RhdGljIHN0cnVjdCBwYXRjaCAqaW5fZm5fdGFibGUoY29uc3QgY2hhciAqbmFtZSkKIHsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKQEAgLTI5NzcsOSArMzAyNCwxNSBAQAogICogaXRlbS0+dXRpbCBpbiB0aGUgZmlsZW5hbWUgdGFibGUgcmVjb3JkcyB0aGUgc3RhdHVzIG9mIHRoZSBwYXRoLgogICogVXN1YWxseSBpdCBwb2ludHMgYXQgYSBwYXRjaCAod2hvc2UgcmVzdWx0IHJlY29yZHMgdGhlIGNvbnRlbnRzCiAgKiBvZiBpdCBhZnRlciBhcHBseWluZyBpdCksIGJ1dCBpdCBjb3VsZCBiZSBQQVRIX1dBU19ERUxFVEVEIGZvciBhCi0gKiBwYXRoIHRoYXQgYSBwcmV2aW91c2x5IGFwcGxpZWQgcGF0Y2ggaGFzIGFscmVhZHkgcmVtb3ZlZC4KKyAqIHBhdGggdGhhdCBhIHByZXZpb3VzbHkgYXBwbGllZCBwYXRjaCBoYXMgYWxyZWFkeSByZW1vdmVkLCBvcgorICogUEFUSF9UT19CRV9ERUxFVEVEIGZvciBhIHBhdGggdGhhdCBhIGxhdGVyIHBhdGNoIHdvdWxkIHJlbW92ZS4KKyAqCisgKiBUaGUgbGF0dGVyIGlzIG5lZWRlZCB0byBkZWFsIHdpdGggYSBjYXNlIHdoZXJlIHR3byBwYXRocyBBIGFuZCBCCisgKiBhcmUgc3dhcHBlZCBieSBmaXJzdCByZW5hbWluZyBBIHRvIEIgYW5kIHRoZW4gcmVuYW1pbmcgQiB0byBBOworICogbW92aW5nIEEgdG8gQiBzaG91bGQgbm90IGJlIHByZXZlbnRlZCBkdWUgdG8gcHJlc2VuY2Ugb2YgQiBhcyB3ZQorICogd2lsbCByZW1vdmUgaXQgaW4gYSBsYXRlciBwYXRjaC4KICAqLwotICNkZWZpbmUgUEFUSF9UT19CRV9ERUxFVEVEICgoc3RydWN0IHBhdGNoICopIC0yKQorI2RlZmluZSBQQVRIX1RPX0JFX0RFTEVURUQgKChzdHJ1Y3QgcGF0Y2ggKikgLTIpCiAjZGVmaW5lIFBBVEhfV0FTX0RFTEVURUQgKChzdHJ1Y3QgcGF0Y2ggKikgLTEpCiAKIHN0YXRpYyBpbnQgdG9fYmVfZGVsZXRlZChzdHJ1Y3QgcGF0Y2ggKnBhdGNoKQpAQCAtMzAzMSw4MiArMzA4NCwzNyBAQAogCX0KIH0KIAotc3RhdGljIGludCBhcHBseV9kYXRhKHN0cnVjdCBwYXRjaCAqcGF0Y2gsIHN0cnVjdCBzdGF0ICpzdCwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKK3N0YXRpYyBpbnQgY2hlY2tvdXRfdGFyZ2V0KHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCBzdGF0ICpzdCkKIHsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwotCXN0cnVjdCBpbWFnZSBpbWFnZTsKLQlzaXplX3QgbGVuOwotCWNoYXIgKmltZzsKLQlzdHJ1Y3QgcGF0Y2ggKnRwYXRjaDsKKwlzdHJ1Y3QgY2hlY2tvdXQgY29zdGF0ZTsKIAotCWlmICghKHBhdGNoLT5pc19jb3B5IHx8IHBhdGNoLT5pc19yZW5hbWUpICYmCi0JICAgICh0cGF0Y2ggPSBpbl9mbl90YWJsZShwYXRjaC0+b2xkX25hbWUpKSAhPSBOVUxMICYmICF0b19iZV9kZWxldGVkKHRwYXRjaCkpIHsKLQkJaWYgKHdhc19kZWxldGVkKHRwYXRjaCkpIHsKLQkJCXJldHVybiBlcnJvcihfKCJwYXRjaCAlcyBoYXMgYmVlbiByZW5hbWVkL2RlbGV0ZWQiKSwKLQkJCQlwYXRjaC0+b2xkX25hbWUpOwotCQl9Ci0JCS8qIFdlIGhhdmUgYSBwYXRjaGVkIGNvcHkgaW4gbWVtb3J5OyB1c2UgdGhhdC4gKi8KLQkJc3RyYnVmX2FkZCgmYnVmLCB0cGF0Y2gtPnJlc3VsdCwgdHBhdGNoLT5yZXN1bHRzaXplKTsKLQl9IGVsc2UgaWYgKGNhY2hlZCkgewotCQlpZiAocmVhZF9maWxlX29yX2dpdGxpbmsoY2UsICZidWYpKQotCQkJcmV0dXJuIGVycm9yKF8oInJlYWQgb2YgJXMgZmFpbGVkIiksIHBhdGNoLT5vbGRfbmFtZSk7Ci0JfSBlbHNlIGlmIChwYXRjaC0+b2xkX25hbWUpIHsKLQkJaWYgKFNfSVNHSVRMSU5LKHBhdGNoLT5vbGRfbW9kZSkpIHsKLQkJCWlmIChjZSkgewotCQkJCXJlYWRfZmlsZV9vcl9naXRsaW5rKGNlLCAmYnVmKTsKLQkJCX0gZWxzZSB7Ci0JCQkJLyoKLQkJCQkgKiBUaGVyZSBpcyBubyB3YXkgdG8gYXBwbHkgc3VicHJvamVjdAotCQkJCSAqIHBhdGNoIHdpdGhvdXQgbG9va2luZyBhdCB0aGUgaW5kZXguCi0JCQkJICogTkVFRFNXT1JLOiBzaG91bGRuJ3QgdGhpcyBiZSBmbGFnZ2VkCi0JCQkJICogYXMgYW4gZXJyb3I/Pz8KLQkJCQkgKi8KLQkJCQlmcmVlX2ZyYWdtZW50X2xpc3QocGF0Y2gtPmZyYWdtZW50cyk7Ci0JCQkJcGF0Y2gtPmZyYWdtZW50cyA9IE5VTEw7Ci0JCQl9Ci0JCX0gZWxzZSB7Ci0JCQlpZiAocmVhZF9vbGRfZGF0YShzdCwgcGF0Y2gtPm9sZF9uYW1lLCAmYnVmKSkKLQkJCQlyZXR1cm4gZXJyb3IoXygicmVhZCBvZiAlcyBmYWlsZWQiKSwgcGF0Y2gtPm9sZF9uYW1lKTsKLQkJfQotCX0KLQotCWltZyA9IHN0cmJ1Zl9kZXRhY2goJmJ1ZiwgJmxlbik7Ci0JcHJlcGFyZV9pbWFnZSgmaW1hZ2UsIGltZywgbGVuLCAhcGF0Y2gtPmlzX2JpbmFyeSk7Ci0KLQlpZiAoYXBwbHlfZnJhZ21lbnRzKCZpbWFnZSwgcGF0Y2gpIDwgMCkKLQkJcmV0dXJuIC0xOyAvKiBub3RlIHdpdGggLS1yZWplY3QgdGhpcyBzdWNjZWVkcy4gKi8KLQlwYXRjaC0+cmVzdWx0ID0gaW1hZ2UuYnVmOwotCXBhdGNoLT5yZXN1bHRzaXplID0gaW1hZ2UubGVuOwotCWFkZF90b19mbl90YWJsZShwYXRjaCk7Ci0JZnJlZShpbWFnZS5saW5lX2FsbG9jYXRlZCk7Ci0KLQlpZiAoMCA8IHBhdGNoLT5pc19kZWxldGUgJiYgcGF0Y2gtPnJlc3VsdHNpemUpCi0JCXJldHVybiBlcnJvcihfKCJyZW1vdmFsIHBhdGNoIGxlYXZlcyBmaWxlIGNvbnRlbnRzIikpOwotCisJbWVtc2V0KCZjb3N0YXRlLCAwLCBzaXplb2YoY29zdGF0ZSkpOworCWNvc3RhdGUuYmFzZV9kaXIgPSAiIjsKKwljb3N0YXRlLnJlZnJlc2hfY2FjaGUgPSAxOworCWlmIChjaGVja291dF9lbnRyeShjZSwgJmNvc3RhdGUsIE5VTEwpIHx8IGxzdGF0KGNlLT5uYW1lLCBzdCkpCisJCXJldHVybiBlcnJvcihfKCJjYW5ub3QgY2hlY2tvdXQgJXMiKSwgY2UtPm5hbWUpOwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGNoZWNrX3RvX2NyZWF0ZV9ibG9iKGNvbnN0IGNoYXIgKm5ld19uYW1lLCBpbnQgb2tfaWZfZXhpc3RzKQorc3RhdGljIHN0cnVjdCBwYXRjaCAqcHJldmlvdXNfcGF0Y2goc3RydWN0IHBhdGNoICpwYXRjaCwgaW50ICpnb25lKQogewotCXN0cnVjdCBzdGF0IG5zdDsKLQlpZiAoIWxzdGF0KG5ld19uYW1lLCAmbnN0KSkgewotCQlpZiAoU19JU0RJUihuc3Quc3RfbW9kZSkgfHwgb2tfaWZfZXhpc3RzKQotCQkJcmV0dXJuIDA7Ci0JCS8qCi0JCSAqIEEgbGVhZGluZyBjb21wb25lbnQgb2YgbmV3X25hbWUgbWlnaHQgYmUgYSBzeW1saW5rCi0JCSAqIHRoYXQgaXMgZ29pbmcgdG8gYmUgcmVtb3ZlZCB3aXRoIHRoaXMgcGF0Y2gsIGJ1dAotCQkgKiBzdGlsbCBwb2ludGluZyBhdCBzb21ld2hlcmUgdGhhdCBoYXMgdGhlIHBhdGguCi0JCSAqIEluIHN1Y2ggYSBjYXNlLCBwYXRoICJuZXdfbmFtZSIgZG9lcyBub3QgZXhpc3QgYXMKLQkJICogZmFyIGFzIGdpdCBpcyBjb25jZXJuZWQuCi0JCSAqLwotCQlpZiAoaGFzX3N5bWxpbmtfbGVhZGluZ19wYXRoKG5ld19uYW1lLCBzdHJsZW4obmV3X25hbWUpKSkKLQkJCXJldHVybiAwOworCXN0cnVjdCBwYXRjaCAqcHJldmlvdXM7CiAKLQkJcmV0dXJuIGVycm9yKF8oIiVzOiBhbHJlYWR5IGV4aXN0cyBpbiB3b3JraW5nIGRpcmVjdG9yeSIpLCBuZXdfbmFtZSk7Ci0JfQotCWVsc2UgaWYgKChlcnJubyAhPSBFTk9FTlQpICYmIChlcnJubyAhPSBFTk9URElSKSkKLQkJcmV0dXJuIGVycm9yKCIlczogJXMiLCBuZXdfbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKLQlyZXR1cm4gMDsKKwkqZ29uZSA9IDA7CisJaWYgKHBhdGNoLT5pc19jb3B5IHx8IHBhdGNoLT5pc19yZW5hbWUpCisJCXJldHVybiBOVUxMOyAvKiAiZ2l0IiBwYXRjaGVzIGRvIG5vdCBkZXBlbmQgb24gdGhlIG9yZGVyICovCisKKwlwcmV2aW91cyA9IGluX2ZuX3RhYmxlKHBhdGNoLT5vbGRfbmFtZSk7CisJaWYgKCFwcmV2aW91cykKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAodG9fYmVfZGVsZXRlZChwcmV2aW91cykpCisJCXJldHVybiBOVUxMOyAvKiB0aGUgZGVsZXRpb24gaGFzbid0IGhhcHBlbmVkIHlldCAqLworCisJaWYgKHdhc19kZWxldGVkKHByZXZpb3VzKSkKKwkJKmdvbmUgPSAxOworCisJcmV0dXJuIHByZXZpb3VzOwogfQogCiBzdGF0aWMgaW50IHZlcmlmeV9pbmRleF9tYXRjaChzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3Qgc3RhdCAqc3QpCkBAIC0zMTE5LDM5ICszMTI3LDI4MSBAQAogCXJldHVybiBjZV9tYXRjaF9zdGF0KGNlLCBzdCwgQ0VfTUFUQ0hfSUdOT1JFX1ZBTElEfENFX01BVENIX0lHTk9SRV9TS0lQX1dPUktUUkVFKTsKIH0KIAorI2RlZmluZSBTVUJNT0RVTEVfUEFUQ0hfV0lUSE9VVF9JTkRFWCAxCisKK3N0YXRpYyBpbnQgbG9hZF9wYXRjaF90YXJnZXQoc3RydWN0IHN0cmJ1ZiAqYnVmLAorCQkJICAgICBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkJICAgICBzdHJ1Y3Qgc3RhdCAqc3QsCisJCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkgICAgIHVuc2lnbmVkIGV4cGVjdGVkX21vZGUpCit7CisJaWYgKGNhY2hlZCkgeworCQlpZiAocmVhZF9maWxlX29yX2dpdGxpbmsoY2UsIGJ1ZikpCisJCQlyZXR1cm4gZXJyb3IoXygicmVhZCBvZiAlcyBmYWlsZWQiKSwgbmFtZSk7CisJfSBlbHNlIGlmIChuYW1lKSB7CisJCWlmIChTX0lTR0lUTElOSyhleHBlY3RlZF9tb2RlKSkgeworCQkJaWYgKGNlKQorCQkJCXJldHVybiByZWFkX2ZpbGVfb3JfZ2l0bGluayhjZSwgYnVmKTsKKwkJCWVsc2UKKwkJCQlyZXR1cm4gU1VCTU9EVUxFX1BBVENIX1dJVEhPVVRfSU5ERVg7CisJCX0gZWxzZSB7CisJCQlpZiAocmVhZF9vbGRfZGF0YShzdCwgbmFtZSwgYnVmKSkKKwkJCQlyZXR1cm4gZXJyb3IoXygicmVhZCBvZiAlcyBmYWlsZWQiKSwgbmFtZSk7CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBXZSBhcmUgYWJvdXQgdG8gYXBwbHkgInBhdGNoIjsgcG9wdWxhdGUgdGhlICJpbWFnZSIgd2l0aCB0aGUKKyAqIGN1cnJlbnQgdmVyc2lvbiB3ZSBoYXZlLCBmcm9tIHRoZSB3b3JraW5nIHRyZWUgb3IgZnJvbSB0aGUgaW5kZXgsCisgKiBkZXBlbmRpbmcgb24gdGhlIHNpdHVhdGlvbiBlLmcuIC0tY2FjaGVkLy0taW5kZXguICBJZiB3ZSBhcmUKKyAqIGFwcGx5aW5nIGEgbm9uLWdpdCBwYXRjaCB0aGF0IGluY3JlbWVudGFsbHkgdXBkYXRlcyB0aGUgdHJlZSwKKyAqIHdlIHJlYWQgZnJvbSB0aGUgcmVzdWx0IG9mIGEgcHJldmlvdXMgZGlmZi4KKyAqLworc3RhdGljIGludCBsb2FkX3ByZWltYWdlKHN0cnVjdCBpbWFnZSAqaW1hZ2UsCisJCQkgc3RydWN0IHBhdGNoICpwYXRjaCwgc3RydWN0IHN0YXQgKnN0LCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlKQoreworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisJc2l6ZV90IGxlbjsKKwljaGFyICppbWc7CisJc3RydWN0IHBhdGNoICpwcmV2aW91czsKKwlpbnQgc3RhdHVzOworCisJcHJldmlvdXMgPSBwcmV2aW91c19wYXRjaChwYXRjaCwgJnN0YXR1cyk7CisJaWYgKHN0YXR1cykKKwkJcmV0dXJuIGVycm9yKF8oInBhdGggJXMgaGFzIGJlZW4gcmVuYW1lZC9kZWxldGVkIiksCisJCQkgICAgIHBhdGNoLT5vbGRfbmFtZSk7CisJaWYgKHByZXZpb3VzKSB7CisJCS8qIFdlIGhhdmUgYSBwYXRjaGVkIGNvcHkgaW4gbWVtb3J5OyB1c2UgdGhhdC4gKi8KKwkJc3RyYnVmX2FkZCgmYnVmLCBwcmV2aW91cy0+cmVzdWx0LCBwcmV2aW91cy0+cmVzdWx0c2l6ZSk7CisJfSBlbHNlIHsKKwkJc3RhdHVzID0gbG9hZF9wYXRjaF90YXJnZXQoJmJ1ZiwgY2UsIHN0LAorCQkJCQkgICBwYXRjaC0+b2xkX25hbWUsIHBhdGNoLT5vbGRfbW9kZSk7CisJCWlmIChzdGF0dXMgPCAwKQorCQkJcmV0dXJuIHN0YXR1czsKKwkJZWxzZSBpZiAoc3RhdHVzID09IFNVQk1PRFVMRV9QQVRDSF9XSVRIT1VUX0lOREVYKSB7CisJCQkvKgorCQkJICogVGhlcmUgaXMgbm8gd2F5IHRvIGFwcGx5IHN1YnByb2plY3QKKwkJCSAqIHBhdGNoIHdpdGhvdXQgbG9va2luZyBhdCB0aGUgaW5kZXguCisJCQkgKiBORUVEU1dPUks6IHNob3VsZG4ndCB0aGlzIGJlIGZsYWdnZWQKKwkJCSAqIGFzIGFuIGVycm9yPz8/CisJCQkgKi8KKwkJCWZyZWVfZnJhZ21lbnRfbGlzdChwYXRjaC0+ZnJhZ21lbnRzKTsKKwkJCXBhdGNoLT5mcmFnbWVudHMgPSBOVUxMOworCQl9IGVsc2UgaWYgKHN0YXR1cykgeworCQkJcmV0dXJuIGVycm9yKF8oInJlYWQgb2YgJXMgZmFpbGVkIiksIHBhdGNoLT5vbGRfbmFtZSk7CisJCX0KKwl9CisKKwlpbWcgPSBzdHJidWZfZGV0YWNoKCZidWYsICZsZW4pOworCXByZXBhcmVfaW1hZ2UoaW1hZ2UsIGltZywgbGVuLCAhcGF0Y2gtPmlzX2JpbmFyeSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdGhyZWVfd2F5X21lcmdlKHN0cnVjdCBpbWFnZSAqaW1hZ2UsCisJCQkgICBjaGFyICpwYXRoLAorCQkJICAgY29uc3QgdW5zaWduZWQgY2hhciAqYmFzZSwKKwkJCSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm91cnMsCisJCQkgICBjb25zdCB1bnNpZ25lZCBjaGFyICp0aGVpcnMpCit7CisJbW1maWxlX3QgYmFzZV9maWxlLCBvdXJfZmlsZSwgdGhlaXJfZmlsZTsKKwltbWJ1ZmZlcl90IHJlc3VsdCA9IHsgTlVMTCB9OworCWludCBzdGF0dXM7CisKKwlyZWFkX21tYmxvYigmYmFzZV9maWxlLCBiYXNlKTsKKwlyZWFkX21tYmxvYigmb3VyX2ZpbGUsIG91cnMpOworCXJlYWRfbW1ibG9iKCZ0aGVpcl9maWxlLCB0aGVpcnMpOworCXN0YXR1cyA9IGxsX21lcmdlKCZyZXN1bHQsIHBhdGgsCisJCQkgICZiYXNlX2ZpbGUsICJiYXNlIiwKKwkJCSAgJm91cl9maWxlLCAib3VycyIsCisJCQkgICZ0aGVpcl9maWxlLCAidGhlaXJzIiwgTlVMTCk7CisJZnJlZShiYXNlX2ZpbGUucHRyKTsKKwlmcmVlKG91cl9maWxlLnB0cik7CisJZnJlZSh0aGVpcl9maWxlLnB0cik7CisJaWYgKHN0YXR1cyA8IDAgfHwgIXJlc3VsdC5wdHIpIHsKKwkJZnJlZShyZXN1bHQucHRyKTsKKwkJcmV0dXJuIC0xOworCX0KKwljbGVhcl9pbWFnZShpbWFnZSk7CisJaW1hZ2UtPmJ1ZiA9IHJlc3VsdC5wdHI7CisJaW1hZ2UtPmxlbiA9IHJlc3VsdC5zaXplOworCisJcmV0dXJuIHN0YXR1czsKK30KKworLyoKKyAqIFdoZW4gZGlyZWN0bHkgZmFsbGluZyBiYWNrIHRvIGFkZC9hZGQgdGhyZWUtd2F5IG1lcmdlLCB3ZSByZWFkIGZyb20KKyAqIHRoZSBjdXJyZW50IGNvbnRlbnRzIG9mIHRoZSBuZXdfbmFtZS4gIEluIG5vIGNhc2VzIG90aGVyIHRoYW4gdGhhdAorICogdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZC4KKyAqLworc3RhdGljIGludCBsb2FkX2N1cnJlbnQoc3RydWN0IGltYWdlICppbWFnZSwgc3RydWN0IHBhdGNoICpwYXRjaCkKK3sKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCWludCBzdGF0dXMsIHBvczsKKwlzaXplX3QgbGVuOworCWNoYXIgKmltZzsKKwlzdHJ1Y3Qgc3RhdCBzdDsKKwlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOworCWNoYXIgKm5hbWUgPSBwYXRjaC0+bmV3X25hbWU7CisJdW5zaWduZWQgbW9kZSA9IHBhdGNoLT5uZXdfbW9kZTsKKworCWlmICghcGF0Y2gtPmlzX25ldykKKwkJZGllKCJCVUc6IHBhdGNoIHRvICVzIGlzIG5vdCBhIGNyZWF0aW9uIiwgcGF0Y2gtPm9sZF9uYW1lKTsKKworCXBvcyA9IGNhY2hlX25hbWVfcG9zKG5hbWUsIHN0cmxlbihuYW1lKSk7CisJaWYgKHBvcyA8IDApCisJCXJldHVybiBlcnJvcihfKCIlczogZG9lcyBub3QgZXhpc3QgaW4gaW5kZXgiKSwgbmFtZSk7CisJY2UgPSBhY3RpdmVfY2FjaGVbcG9zXTsKKwlpZiAobHN0YXQobmFtZSwgJnN0KSkgeworCQlpZiAoZXJybm8gIT0gRU5PRU5UKQorCQkJcmV0dXJuIGVycm9yKF8oIiVzOiAlcyIpLCBuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlpZiAoY2hlY2tvdXRfdGFyZ2V0KGNlLCAmc3QpKQorCQkJcmV0dXJuIC0xOworCX0KKwlpZiAodmVyaWZ5X2luZGV4X21hdGNoKGNlLCAmc3QpKQorCQlyZXR1cm4gZXJyb3IoXygiJXM6IGRvZXMgbm90IG1hdGNoIGluZGV4IiksIG5hbWUpOworCisJc3RhdHVzID0gbG9hZF9wYXRjaF90YXJnZXQoJmJ1ZiwgY2UsICZzdCwgbmFtZSwgbW9kZSk7CisJaWYgKHN0YXR1cyA8IDApCisJCXJldHVybiBzdGF0dXM7CisJZWxzZSBpZiAoc3RhdHVzKQorCQlyZXR1cm4gLTE7CisJaW1nID0gc3RyYnVmX2RldGFjaCgmYnVmLCAmbGVuKTsKKwlwcmVwYXJlX2ltYWdlKGltYWdlLCBpbWcsIGxlbiwgIXBhdGNoLT5pc19iaW5hcnkpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHRyeV90aHJlZXdheShzdHJ1Y3QgaW1hZ2UgKmltYWdlLCBzdHJ1Y3QgcGF0Y2ggKnBhdGNoLAorCQkJc3RydWN0IHN0YXQgKnN0LCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlKQoreworCXVuc2lnbmVkIGNoYXIgcHJlX3NoYTFbMjBdLCBwb3N0X3NoYTFbMjBdLCBvdXJfc2hhMVsyMF07CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKKwlzaXplX3QgbGVuOworCWludCBzdGF0dXM7CisJY2hhciAqaW1nOworCXN0cnVjdCBpbWFnZSB0bXBfaW1hZ2U7CisKKwkvKiBObyBwb2ludCBmYWxsaW5nIGJhY2sgdG8gMy13YXkgbWVyZ2UgaW4gdGhlc2UgY2FzZXMgKi8KKwlpZiAocGF0Y2gtPmlzX2RlbGV0ZSB8fAorCSAgICBTX0lTR0lUTElOSyhwYXRjaC0+b2xkX21vZGUpIHx8IFNfSVNHSVRMSU5LKHBhdGNoLT5uZXdfbW9kZSkpCisJCXJldHVybiAtMTsKKworCS8qIFByZWltYWdlIHRoZSBwYXRjaCB3YXMgcHJlcGFyZWQgZm9yICovCisJaWYgKHBhdGNoLT5pc19uZXcpCisJCXdyaXRlX3NoYTFfZmlsZSgiIiwgMCwgYmxvYl90eXBlLCBwcmVfc2hhMSk7CisJZWxzZSBpZiAoZ2V0X3NoYTEocGF0Y2gtPm9sZF9zaGExX3ByZWZpeCwgcHJlX3NoYTEpIHx8CisJCSByZWFkX2Jsb2Jfb2JqZWN0KCZidWYsIHByZV9zaGExLCBwYXRjaC0+b2xkX21vZGUpKQorCQlyZXR1cm4gZXJyb3IoInJlcG9zaXRvcnkgbGFja3MgdGhlIG5lY2Vzc2FyeSBibG9iIHRvIGZhbGwgYmFjayBvbiAzLXdheSBtZXJnZS4iKTsKKworCWZwcmludGYoc3RkZXJyLCAiRmFsbGluZyBiYWNrIHRvIHRocmVlLXdheSBtZXJnZS4uLlxuIik7CisKKwlpbWcgPSBzdHJidWZfZGV0YWNoKCZidWYsICZsZW4pOworCXByZXBhcmVfaW1hZ2UoJnRtcF9pbWFnZSwgaW1nLCBsZW4sIDEpOworCS8qIEFwcGx5IHRoZSBwYXRjaCB0byBnZXQgdGhlIHBvc3QgaW1hZ2UgKi8KKwlpZiAoYXBwbHlfZnJhZ21lbnRzKCZ0bXBfaW1hZ2UsIHBhdGNoKSA8IDApIHsKKwkJY2xlYXJfaW1hZ2UoJnRtcF9pbWFnZSk7CisJCXJldHVybiAtMTsKKwl9CisJLyogcG9zdF9zaGExW10gaXMgdGhlaXJzICovCisJd3JpdGVfc2hhMV9maWxlKHRtcF9pbWFnZS5idWYsIHRtcF9pbWFnZS5sZW4sIGJsb2JfdHlwZSwgcG9zdF9zaGExKTsKKwljbGVhcl9pbWFnZSgmdG1wX2ltYWdlKTsKKworCS8qIG91cl9zaGExW10gaXMgb3VycyAqLworCWlmIChwYXRjaC0+aXNfbmV3KSB7CisJCWlmIChsb2FkX2N1cnJlbnQoJnRtcF9pbWFnZSwgcGF0Y2gpKQorCQkJcmV0dXJuIGVycm9yKCJjYW5ub3QgcmVhZCB0aGUgY3VycmVudCBjb250ZW50cyBvZiAnJXMnIiwKKwkJCQkgICAgIHBhdGNoLT5uZXdfbmFtZSk7CisJfSBlbHNlIHsKKwkJaWYgKGxvYWRfcHJlaW1hZ2UoJnRtcF9pbWFnZSwgcGF0Y2gsIHN0LCBjZSkpCisJCQlyZXR1cm4gZXJyb3IoImNhbm5vdCByZWFkIHRoZSBjdXJyZW50IGNvbnRlbnRzIG9mICclcyciLAorCQkJCSAgICAgcGF0Y2gtPm9sZF9uYW1lKTsKKwl9CisJd3JpdGVfc2hhMV9maWxlKHRtcF9pbWFnZS5idWYsIHRtcF9pbWFnZS5sZW4sIGJsb2JfdHlwZSwgb3VyX3NoYTEpOworCWNsZWFyX2ltYWdlKCZ0bXBfaW1hZ2UpOworCisJLyogaW4tY29yZSB0aHJlZS13YXkgbWVyZ2UgYmV0d2VlbiBwb3N0IGFuZCBvdXIgdXNpbmcgcHJlIGFzIGJhc2UgKi8KKwlzdGF0dXMgPSB0aHJlZV93YXlfbWVyZ2UoaW1hZ2UsIHBhdGNoLT5uZXdfbmFtZSwKKwkJCQkgcHJlX3NoYTEsIG91cl9zaGExLCBwb3N0X3NoYTEpOworCWlmIChzdGF0dXMgPCAwKSB7CisJCWZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGZhbGwgYmFjayBvbiB0aHJlZS13YXkgbWVyZ2UuLi5cbiIpOworCQlyZXR1cm4gc3RhdHVzOworCX0KKworCWlmIChzdGF0dXMpIHsKKwkJcGF0Y2gtPmNvbmZsaWN0ZWRfdGhyZWV3YXkgPSAxOworCQlpZiAocGF0Y2gtPmlzX25ldykKKwkJCWhhc2hjbHIocGF0Y2gtPnRocmVld2F5X3N0YWdlWzBdKTsKKwkJZWxzZQorCQkJaGFzaGNweShwYXRjaC0+dGhyZWV3YXlfc3RhZ2VbMF0sIHByZV9zaGExKTsKKwkJaGFzaGNweShwYXRjaC0+dGhyZWV3YXlfc3RhZ2VbMV0sIG91cl9zaGExKTsKKwkJaGFzaGNweShwYXRjaC0+dGhyZWV3YXlfc3RhZ2VbMl0sIHBvc3Rfc2hhMSk7CisJCWZwcmludGYoc3RkZXJyLCAiQXBwbGllZCBwYXRjaCB0byAnJXMnIHdpdGggY29uZmxpY3RzLlxuIiwgcGF0Y2gtPm5ld19uYW1lKTsKKwl9IGVsc2UgeworCQlmcHJpbnRmKHN0ZGVyciwgIkFwcGxpZWQgcGF0Y2ggdG8gJyVzJyBjbGVhbmx5LlxuIiwgcGF0Y2gtPm5ld19uYW1lKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYXBwbHlfZGF0YShzdHJ1Y3QgcGF0Y2ggKnBhdGNoLCBzdHJ1Y3Qgc3RhdCAqc3QsIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpCit7CisJc3RydWN0IGltYWdlIGltYWdlOworCisJaWYgKGxvYWRfcHJlaW1hZ2UoJmltYWdlLCBwYXRjaCwgc3QsIGNlKSA8IDApCisJCXJldHVybiAtMTsKKworCWlmIChwYXRjaC0+ZGlyZWN0X3RvX3RocmVld2F5IHx8CisJICAgIGFwcGx5X2ZyYWdtZW50cygmaW1hZ2UsIHBhdGNoKSA8IDApIHsKKwkJLyogTm90ZTogd2l0aCAtLXJlamVjdCwgYXBwbHlfZnJhZ21lbnRzKCkgcmV0dXJucyAwICovCisJCWlmICghdGhyZWV3YXkgfHwgdHJ5X3RocmVld2F5KCZpbWFnZSwgcGF0Y2gsIHN0LCBjZSkgPCAwKQorCQkJcmV0dXJuIC0xOworCX0KKwlwYXRjaC0+cmVzdWx0ID0gaW1hZ2UuYnVmOworCXBhdGNoLT5yZXN1bHRzaXplID0gaW1hZ2UubGVuOworCWFkZF90b19mbl90YWJsZShwYXRjaCk7CisJZnJlZShpbWFnZS5saW5lX2FsbG9jYXRlZCk7CisKKwlpZiAoMCA8IHBhdGNoLT5pc19kZWxldGUgJiYgcGF0Y2gtPnJlc3VsdHNpemUpCisJCXJldHVybiBlcnJvcihfKCJyZW1vdmFsIHBhdGNoIGxlYXZlcyBmaWxlIGNvbnRlbnRzIikpOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBJZiAicGF0Y2giIHRoYXQgd2UgYXJlIGxvb2tpbmcgYXQgbW9kaWZpZXMgb3IgZGVsZXRlcyB3aGF0IHdlIGhhdmUsCisgKiB3ZSB3b3VsZCB3YW50IGl0IG5vdCB0byBsb3NlIGFueSBsb2NhbCBtb2RpZmljYXRpb24gd2UgaGF2ZSwgZWl0aGVyCisgKiBpbiB0aGUgd29ya2luZyB0cmVlIG9yIGluIHRoZSBpbmRleC4KKyAqCisgKiBUaGlzIGFsc28gZGVjaWRlcyBpZiBhIG5vbi1naXQgcGF0Y2ggaXMgYSBjcmVhdGlvbiBwYXRjaCBvciBhCisgKiBtb2RpZmljYXRpb24gdG8gYW4gZXhpc3RpbmcgZW1wdHkgZmlsZS4gIFdlIGRvIG5vdCBjaGVjayB0aGUgc3RhdGUKKyAqIG9mIHRoZSBjdXJyZW50IHRyZWUgZm9yIGEgY3JlYXRpb24gcGF0Y2ggaW4gdGhpcyBmdW5jdGlvbjsgdGhlIGNhbGxlcgorICogY2hlY2tfcGF0Y2goKSBzZXBhcmF0ZWx5IG1ha2VzIHN1cmUgKGFuZCBlcnJvcnMgb3V0IG90aGVyd2lzZSkgdGhhdAorICogdGhlIHBhdGggdGhlIHBhdGNoIGNyZWF0ZXMgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGN1cnJlbnQgdHJlZS4KKyAqLwogc3RhdGljIGludCBjaGVja19wcmVpbWFnZShzdHJ1Y3QgcGF0Y2ggKnBhdGNoLCBzdHJ1Y3QgY2FjaGVfZW50cnkgKipjZSwgc3RydWN0IHN0YXQgKnN0KQogewogCWNvbnN0IGNoYXIgKm9sZF9uYW1lID0gcGF0Y2gtPm9sZF9uYW1lOwotCXN0cnVjdCBwYXRjaCAqdHBhdGNoID0gTlVMTDsKLQlpbnQgc3RhdF9yZXQgPSAwOworCXN0cnVjdCBwYXRjaCAqcHJldmlvdXMgPSBOVUxMOworCWludCBzdGF0X3JldCA9IDAsIHN0YXR1czsKIAl1bnNpZ25lZCBzdF9tb2RlID0gMDsKIAotCS8qCi0JICogTWFrZSBzdXJlIHRoYXQgd2UgZG8gbm90IGhhdmUgbG9jYWwgbW9kaWZpY2F0aW9ucyBmcm9tIHRoZQotCSAqIGluZGV4IHdoZW4gd2UgYXJlIGxvb2tpbmcgYXQgdGhlIGluZGV4LiAgQWxzbyBtYWtlIHN1cmUKLQkgKiB3ZSBoYXZlIHRoZSBwcmVpbWFnZSBmaWxlIHRvIGJlIHBhdGNoZWQgaW4gdGhlIHdvcmsgdHJlZSwKLQkgKiB1bmxlc3MgLS1jYWNoZWQsIHdoaWNoIHRlbGxzIGdpdCB0byBhcHBseSBvbmx5IGluIHRoZSBpbmRleC4KLQkgKi8KIAlpZiAoIW9sZF9uYW1lKQogCQlyZXR1cm4gMDsKIAogCWFzc2VydChwYXRjaC0+aXNfbmV3IDw9IDApOworCXByZXZpb3VzID0gcHJldmlvdXNfcGF0Y2gocGF0Y2gsICZzdGF0dXMpOwogCi0JaWYgKCEocGF0Y2gtPmlzX2NvcHkgfHwgcGF0Y2gtPmlzX3JlbmFtZSkgJiYKLQkgICAgKHRwYXRjaCA9IGluX2ZuX3RhYmxlKG9sZF9uYW1lKSkgIT0gTlVMTCAmJiAhdG9fYmVfZGVsZXRlZCh0cGF0Y2gpKSB7Ci0JCWlmICh3YXNfZGVsZXRlZCh0cGF0Y2gpKQotCQkJcmV0dXJuIGVycm9yKF8oIiVzOiBoYXMgYmVlbiBkZWxldGVkL3JlbmFtZWQiKSwgb2xkX25hbWUpOwotCQlzdF9tb2RlID0gdHBhdGNoLT5uZXdfbW9kZTsKKwlpZiAoc3RhdHVzKQorCQlyZXR1cm4gZXJyb3IoXygicGF0aCAlcyBoYXMgYmVlbiByZW5hbWVkL2RlbGV0ZWQiKSwgb2xkX25hbWUpOworCWlmIChwcmV2aW91cykgeworCQlzdF9tb2RlID0gcHJldmlvdXMtPm5ld19tb2RlOwogCX0gZWxzZSBpZiAoIWNhY2hlZCkgewogCQlzdGF0X3JldCA9IGxzdGF0KG9sZF9uYW1lLCBzdCk7CiAJCWlmIChzdGF0X3JldCAmJiBlcnJubyAhPSBFTk9FTlQpCiAJCQlyZXR1cm4gZXJyb3IoXygiJXM6ICVzIiksIG9sZF9uYW1lLCBzdHJlcnJvcihlcnJubykpOwogCX0KIAotCWlmICh0b19iZV9kZWxldGVkKHRwYXRjaCkpCi0JCXRwYXRjaCA9IE5VTEw7Ci0KLQlpZiAoY2hlY2tfaW5kZXggJiYgIXRwYXRjaCkgeworCWlmIChjaGVja19pbmRleCAmJiAhcHJldmlvdXMpIHsKIAkJaW50IHBvcyA9IGNhY2hlX25hbWVfcG9zKG9sZF9uYW1lLCBzdHJsZW4ob2xkX25hbWUpKTsKIAkJaWYgKHBvcyA8IDApIHsKIAkJCWlmIChwYXRjaC0+aXNfbmV3IDwgMCkKQEAgLTMxNjAsMTMgKzM0MTAsNyBAQAogCQl9CiAJCSpjZSA9IGFjdGl2ZV9jYWNoZVtwb3NdOwogCQlpZiAoc3RhdF9yZXQgPCAwKSB7Ci0JCQlzdHJ1Y3QgY2hlY2tvdXQgY29zdGF0ZTsKLQkJCS8qIGNoZWNrb3V0ICovCi0JCQltZW1zZXQoJmNvc3RhdGUsIDAsIHNpemVvZihjb3N0YXRlKSk7Ci0JCQljb3N0YXRlLmJhc2VfZGlyID0gIiI7Ci0JCQljb3N0YXRlLnJlZnJlc2hfY2FjaGUgPSAxOwotCQkJaWYgKGNoZWNrb3V0X2VudHJ5KCpjZSwgJmNvc3RhdGUsIE5VTEwpIHx8Ci0JCQkgICAgbHN0YXQob2xkX25hbWUsIHN0KSkKKwkJCWlmIChjaGVja291dF90YXJnZXQoKmNlLCBzdCkpCiAJCQkJcmV0dXJuIC0xOwogCQl9CiAJCWlmICghY2FjaGVkICYmIHZlcmlmeV9pbmRleF9tYXRjaCgqY2UsIHN0KSkKQEAgLTMxNzksNyArMzQyMyw3IEBACiAJCXJldHVybiBlcnJvcihfKCIlczogJXMiKSwgb2xkX25hbWUsIHN0cmVycm9yKGVycm5vKSk7CiAJfQogCi0JaWYgKCFjYWNoZWQgJiYgIXRwYXRjaCkKKwlpZiAoIWNhY2hlZCAmJiAhcHJldmlvdXMpCiAJCXN0X21vZGUgPSBjZV9tb2RlX2Zyb21fc3RhdCgqY2UsIHN0LT5zdF9tb2RlKTsKIAogCWlmIChwYXRjaC0+aXNfbmV3IDwgMCkKQEAgLTMyMDMsNiArMzQ0Nyw0MSBAQAogCXJldHVybiAwOwogfQogCisKKyNkZWZpbmUgRVhJU1RTX0lOX0lOREVYIDEKKyNkZWZpbmUgRVhJU1RTX0lOX1dPUktUUkVFIDIKKworc3RhdGljIGludCBjaGVja190b19jcmVhdGUoY29uc3QgY2hhciAqbmV3X25hbWUsIGludCBva19pZl9leGlzdHMpCit7CisJc3RydWN0IHN0YXQgbnN0OworCisJaWYgKGNoZWNrX2luZGV4ICYmCisJICAgIGNhY2hlX25hbWVfcG9zKG5ld19uYW1lLCBzdHJsZW4obmV3X25hbWUpKSA+PSAwICYmCisJICAgICFva19pZl9leGlzdHMpCisJCXJldHVybiBFWElTVFNfSU5fSU5ERVg7CisJaWYgKGNhY2hlZCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoIWxzdGF0KG5ld19uYW1lLCAmbnN0KSkgeworCQlpZiAoU19JU0RJUihuc3Quc3RfbW9kZSkgfHwgb2tfaWZfZXhpc3RzKQorCQkJcmV0dXJuIDA7CisJCS8qCisJCSAqIEEgbGVhZGluZyBjb21wb25lbnQgb2YgbmV3X25hbWUgbWlnaHQgYmUgYSBzeW1saW5rCisJCSAqIHRoYXQgaXMgZ29pbmcgdG8gYmUgcmVtb3ZlZCB3aXRoIHRoaXMgcGF0Y2gsIGJ1dAorCQkgKiBzdGlsbCBwb2ludGluZyBhdCBzb21ld2hlcmUgdGhhdCBoYXMgdGhlIHBhdGguCisJCSAqIEluIHN1Y2ggYSBjYXNlLCBwYXRoICJuZXdfbmFtZSIgZG9lcyBub3QgZXhpc3QgYXMKKwkJICogZmFyIGFzIGdpdCBpcyBjb25jZXJuZWQuCisJCSAqLworCQlpZiAoaGFzX3N5bWxpbmtfbGVhZGluZ19wYXRoKG5ld19uYW1lLCBzdHJsZW4obmV3X25hbWUpKSkKKwkJCXJldHVybiAwOworCisJCXJldHVybiBFWElTVFNfSU5fV09SS1RSRUU7CisJfSBlbHNlIGlmICgoZXJybm8gIT0gRU5PRU5UKSAmJiAoZXJybm8gIT0gRU5PVERJUikpIHsKKwkJcmV0dXJuIGVycm9yKCIlczogJXMiLCBuZXdfbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKIC8qCiAgKiBDaGVjayBhbmQgYXBwbHkgdGhlIHBhdGNoIGluLWNvcmU7IGxlYXZlIHRoZSByZXN1bHQgaW4gcGF0Y2gtPnJlc3VsdAogICogZm9yIHRoZSBjYWxsZXIgdG8gd3JpdGUgaXQgb3V0IHRvIHRoZSBmaW5hbCBkZXN0aW5hdGlvbi4KQEAgLTMyMjUsMzEgKzM1MDQsNDUgQEAKIAkJcmV0dXJuIHN0YXR1czsKIAlvbGRfbmFtZSA9IHBhdGNoLT5vbGRfbmFtZTsKIAorCS8qCisJICogQSB0eXBlLWNoYW5nZSBkaWZmIGlzIGFsd2F5cyBzcGxpdCBpbnRvIGEgcGF0Y2ggdG8gZGVsZXRlCisJICogb2xkLCBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhIHBhdGNoIHRvIGNyZWF0ZSBuZXcgKHNlZQorCSAqIGRpZmYuYzo6cnVuX2RpZmYoKSk7IGluIHN1Y2ggYSBjYXNlIGl0IGlzIE9rIHRoYXQgdGhlIGVudHJ5CisJICogdG8gYmUgZGVsZXRlZCBieSB0aGUgcHJldmlvdXMgcGF0Y2ggaXMgc3RpbGwgaW4gdGhlIHdvcmtpbmcKKwkgKiB0cmVlIGFuZCBpbiB0aGUgaW5kZXguCisJICoKKwkgKiBBIHBhdGNoIHRvIHN3YXAtcmVuYW1lIGJldHdlZW4gQSBhbmQgQiB3b3VsZCBmaXJzdCByZW5hbWUgQQorCSAqIHRvIEIgYW5kIHRoZW4gcmVuYW1lIEIgdG8gQS4gIFdoaWxlIGFwcGx5aW5nIHRoZSBmaXJzdCBvbmUsCisJICogdGhlIHByZXNlbmNlIG9mIEIgc2hvdWxkIG5vdCBzdG9wIEEgZnJvbSBnZXR0aW5nIHJlbmFtZWQgdG8KKwkgKiBCOyBhc2sgdG9fYmVfZGVsZXRlZCgpIGFib3V0IHRoZSBsYXRlciByZW5hbWUuICBSZW1vdmFsIG9mCisJICogQiBhbmQgcmVuYW1lIGZyb20gQSB0byBCIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGJ5IGFza2luZworCSAqIHdhc19kZWxldGVkKCkuCisJICovCiAJaWYgKCh0cGF0Y2ggPSBpbl9mbl90YWJsZShuZXdfbmFtZSkpICYmCi0JCQkod2FzX2RlbGV0ZWQodHBhdGNoKSB8fCB0b19iZV9kZWxldGVkKHRwYXRjaCkpKQotCQkvKgotCQkgKiBBIHR5cGUtY2hhbmdlIGRpZmYgaXMgYWx3YXlzIHNwbGl0IGludG8gYSBwYXRjaCB0bwotCQkgKiBkZWxldGUgb2xkLCBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhIHBhdGNoIHRvCi0JCSAqIGNyZWF0ZSBuZXcgKHNlZSBkaWZmLmM6OnJ1bl9kaWZmKCkpOyBpbiBzdWNoIGEgY2FzZQotCQkgKiBpdCBpcyBPayB0aGF0IHRoZSBlbnRyeSB0byBiZSBkZWxldGVkIGJ5IHRoZQotCQkgKiBwcmV2aW91cyBwYXRjaCBpcyBzdGlsbCBpbiB0aGUgd29ya2luZyB0cmVlIGFuZCBpbgotCQkgKiB0aGUgaW5kZXguCi0JCSAqLworCSAgICAod2FzX2RlbGV0ZWQodHBhdGNoKSB8fCB0b19iZV9kZWxldGVkKHRwYXRjaCkpKQogCQlva19pZl9leGlzdHMgPSAxOwogCWVsc2UKIAkJb2tfaWZfZXhpc3RzID0gMDsKIAogCWlmIChuZXdfbmFtZSAmJgogCSAgICAoKDAgPCBwYXRjaC0+aXNfbmV3KSB8ICgwIDwgcGF0Y2gtPmlzX3JlbmFtZSkgfCBwYXRjaC0+aXNfY29weSkpIHsKLQkJaWYgKGNoZWNrX2luZGV4ICYmCi0JCSAgICBjYWNoZV9uYW1lX3BvcyhuZXdfbmFtZSwgc3RybGVuKG5ld19uYW1lKSkgPj0gMCAmJgotCQkgICAgIW9rX2lmX2V4aXN0cykKKwkJaW50IGVyciA9IGNoZWNrX3RvX2NyZWF0ZShuZXdfbmFtZSwgb2tfaWZfZXhpc3RzKTsKKworCQlpZiAoZXJyICYmIHRocmVld2F5KSB7CisJCQlwYXRjaC0+ZGlyZWN0X3RvX3RocmVld2F5ID0gMTsKKwkJfSBlbHNlIHN3aXRjaCAoZXJyKSB7CisJCWNhc2UgMDoKKwkJCWJyZWFrOyAvKiBoYXBweSAqLworCQljYXNlIEVYSVNUU19JTl9JTkRFWDoKIAkJCXJldHVybiBlcnJvcihfKCIlczogYWxyZWFkeSBleGlzdHMgaW4gaW5kZXgiKSwgbmV3X25hbWUpOwotCQlpZiAoIWNhY2hlZCkgewotCQkJaW50IGVyciA9IGNoZWNrX3RvX2NyZWF0ZV9ibG9iKG5ld19uYW1lLCBva19pZl9leGlzdHMpOwotCQkJaWYgKGVycikKLQkJCQlyZXR1cm4gZXJyOworCQkJYnJlYWs7CisJCWNhc2UgRVhJU1RTX0lOX1dPUktUUkVFOgorCQkJcmV0dXJuIGVycm9yKF8oIiVzOiBhbHJlYWR5IGV4aXN0cyBpbiB3b3JraW5nIGRpcmVjdG9yeSIpLAorCQkJCSAgICAgbmV3X25hbWUpOworCQlkZWZhdWx0OgorCQkJcmV0dXJuIGVycjsKIAkJfQorCiAJCWlmICghcGF0Y2gtPm5ld19tb2RlKSB7CiAJCQlpZiAoMCA8IHBhdGNoLT5pc19uZXcpCiAJCQkJcGF0Y2gtPm5ld19tb2RlID0gU19JRlJFRyB8IDA2NDQ7CkBAIC0zMzExLDYgKzM2MDQsNDAgQEAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBwcmVpbWFnZV9zaGExX2luX2dpdGxpbmtfcGF0Y2goc3RydWN0IHBhdGNoICpwLCB1bnNpZ25lZCBjaGFyIHNoYTFbMjBdKQoreworCS8qCisJICogQSB1c2FibGUgZ2l0bGluayBwYXRjaCBoYXMgb25seSBvbmUgZnJhZ21lbnQgKGh1bmspIHRoYXQgbG9va3MgbGlrZToKKwkgKiBAQCAtMSArMSBAQAorCSAqIC1TdWJwcm9qZWN0IGNvbW1pdCA8b2xkIHNoYTE+CisJICogK1N1YnByb2plY3QgY29tbWl0IDxuZXcgc2hhMT4KKwkgKiBvcgorCSAqIEBAIC0xICswLDAgQEAKKwkgKiAtU3VicHJvamVjdCBjb21taXQgPG9sZCBzaGExPgorCSAqIGZvciBhIHJlbW92YWwgcGF0Y2guCisJICovCisJc3RydWN0IGZyYWdtZW50ICpodW5rID0gcC0+ZnJhZ21lbnRzOworCXN0YXRpYyBjb25zdCBjaGFyIGhlYWRpbmdbXSA9ICItU3VicHJvamVjdCBjb21taXQgIjsKKwljaGFyICpwcmVpbWFnZTsKKworCWlmICgvKiBkb2VzIHRoZSBwYXRjaCBoYXZlIG9ubHkgb25lIGh1bms/ICovCisJICAgIGh1bmsgJiYgIWh1bmstPm5leHQgJiYKKwkgICAgLyogaXMgaXRzIHByZWltYWdlIG9uZSBsaW5lPyAqLworCSAgICBodW5rLT5vbGRwb3MgPT0gMSAmJiBodW5rLT5vbGRsaW5lcyA9PSAxICYmCisJICAgIC8qIGRvZXMgcHJlaW1hZ2UgYmVnaW4gd2l0aCB0aGUgaGVhZGluZz8gKi8KKwkgICAgKHByZWltYWdlID0gbWVtY2hyKGh1bmstPnBhdGNoLCAnXG4nLCBodW5rLT5zaXplKSkgIT0gTlVMTCAmJgorCSAgICAhcHJlZml4Y21wKCsrcHJlaW1hZ2UsIGhlYWRpbmcpICYmCisJICAgIC8qIGRvZXMgaXQgcmVjb3JkIGZ1bGwgU0hBLTE/ICovCisJICAgICFnZXRfc2hhMV9oZXgocHJlaW1hZ2UgKyBzaXplb2YoaGVhZGluZykgLSAxLCBzaGExKSAmJgorCSAgICBwcmVpbWFnZVtzaXplb2YoaGVhZGluZykgKyA0MCAtIDFdID09ICdcbicgJiYKKwkgICAgLyogZG9lcyB0aGUgYWJicmV2aWF0ZWQgbmFtZSBvbiB0aGUgaW5kZXggbGluZSBhZ3JlZSB3aXRoIGl0PyAqLworCSAgICAhcHJlZml4Y21wKHByZWltYWdlICsgc2l6ZW9mKGhlYWRpbmcpIC0gMSwgcC0+b2xkX3NoYTFfcHJlZml4KSkKKwkJcmV0dXJuIDA7IC8qIGl0IGFsbCBsb29rcyBmaW5lICovCisKKwkvKiB3ZSBtYXkgaGF2ZSBmdWxsIG9iamVjdCBuYW1lIG9uIHRoZSBpbmRleCBsaW5lICovCisJcmV0dXJuIGdldF9zaGExX2hleChwLT5vbGRfc2hhMV9wcmVmaXgsIHNoYTEpOworfQorCiAvKiBCdWlsZCBhbiBpbmRleCB0aGF0IGNvbnRhaW5zIHRoZSBqdXN0IHRoZSBmaWxlcyBuZWVkZWQgZm9yIGEgM3dheSBtZXJnZSAqLwogc3RhdGljIHZvaWQgYnVpbGRfZmFrZV9hbmNlc3RvcihzdHJ1Y3QgcGF0Y2ggKmxpc3QsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewpAQCAtMzMyMiw3ICszNjQ5LDYgQEAKIAkgKiB3b3J0aCBzaG93aW5nIHRoZSBuZXcgc2hhMSBwcmVmaXgsIGJ1dCB1bnRpbCB0aGVuLi4uCiAJICovCiAJZm9yIChwYXRjaCA9IGxpc3Q7IHBhdGNoOyBwYXRjaCA9IHBhdGNoLT5uZXh0KSB7Ci0JCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTFfcHRyOwogCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOwogCQljb25zdCBjaGFyICpuYW1lOwpAQCAtMzMzMCwyMCArMzY1NiwyNSBAQAogCQluYW1lID0gcGF0Y2gtPm9sZF9uYW1lID8gcGF0Y2gtPm9sZF9uYW1lIDogcGF0Y2gtPm5ld19uYW1lOwogCQlpZiAoMCA8IHBhdGNoLT5pc19uZXcpCiAJCQljb250aW51ZTsKLQkJZWxzZSBpZiAoZ2V0X3NoYTEocGF0Y2gtPm9sZF9zaGExX3ByZWZpeCwgc2hhMSkpCi0JCQkvKiBnaXQgZGlmZiBoYXMgbm8gaW5kZXggbGluZSBmb3IgbW9kZS90eXBlIGNoYW5nZXMgKi8KLQkJCWlmICghcGF0Y2gtPmxpbmVzX2FkZGVkICYmICFwYXRjaC0+bGluZXNfZGVsZXRlZCkgewotCQkJCWlmIChnZXRfY3VycmVudF9zaGExKHBhdGNoLT5vbGRfbmFtZSwgc2hhMSkpCi0JCQkJCWRpZSgibW9kZSBjaGFuZ2UgZm9yICVzLCB3aGljaCBpcyBub3QgIgotCQkJCQkJImluIGN1cnJlbnQgSEVBRCIsIG5hbWUpOwotCQkJCXNoYTFfcHRyID0gc2hhMTsKLQkJCX0gZWxzZQotCQkJCWRpZSgic2hhMSBpbmZvcm1hdGlvbiBpcyBsYWNraW5nIG9yIHVzZWxlc3MgIgotCQkJCQkiKCVzKS4iLCBuYW1lKTsKLQkJZWxzZQotCQkJc2hhMV9wdHIgPSBzaGExOwogCi0JCWNlID0gbWFrZV9jYWNoZV9lbnRyeShwYXRjaC0+b2xkX21vZGUsIHNoYTFfcHRyLCBuYW1lLCAwLCAwKTsKKwkJaWYgKFNfSVNHSVRMSU5LKHBhdGNoLT5vbGRfbW9kZSkpIHsKKwkJCWlmICghcHJlaW1hZ2Vfc2hhMV9pbl9naXRsaW5rX3BhdGNoKHBhdGNoLCBzaGExKSkKKwkJCQk7IC8qIG9rLCB0aGUgdGV4dHVhbCBwYXJ0IGxvb2tzIHNhbmUgKi8KKwkJCWVsc2UKKwkJCQlkaWUoInNoYTEgaW5mb3JtYXRpb24gaXMgbGFja2luZyBvciB1c2VsZXNzIGZvciBzdWJtb3VsZSAlcyIsCisJCQkJICAgIG5hbWUpOworCQl9IGVsc2UgaWYgKCFnZXRfc2hhMV9ibG9iKHBhdGNoLT5vbGRfc2hhMV9wcmVmaXgsIHNoYTEpKSB7CisJCQk7IC8qIG9rICovCisJCX0gZWxzZSBpZiAoIXBhdGNoLT5saW5lc19hZGRlZCAmJiAhcGF0Y2gtPmxpbmVzX2RlbGV0ZWQpIHsKKwkJCS8qIG1vZGUtb25seSBjaGFuZ2U6IHVwZGF0ZSB0aGUgY3VycmVudCAqLworCQkJaWYgKGdldF9jdXJyZW50X3NoYTEocGF0Y2gtPm9sZF9uYW1lLCBzaGExKSkKKwkJCQlkaWUoIm1vZGUgY2hhbmdlIGZvciAlcywgd2hpY2ggaXMgbm90ICIKKwkJCQkgICAgImluIGN1cnJlbnQgSEVBRCIsIG5hbWUpOworCQl9IGVsc2UKKwkJCWRpZSgic2hhMSBpbmZvcm1hdGlvbiBpcyBsYWNraW5nIG9yIHVzZWxlc3MgIgorCQkJICAgICIoJXMpLiIsIG5hbWUpOworCisJCWNlID0gbWFrZV9jYWNoZV9lbnRyeShwYXRjaC0+b2xkX21vZGUsIHNoYTEsIG5hbWUsIDAsIDApOwogCQlpZiAoIWNlKQogCQkJZGllKF8oIm1ha2VfY2FjaGVfZW50cnkgZmFpbGVkIGZvciBwYXRoICclcyciKSwgbmFtZSk7CiAJCWlmIChhZGRfaW5kZXhfZW50cnkoJnJlc3VsdCwgY2UsIEFERF9DQUNIRV9PS19UT19BREQpKQpAQCAtMzUxMCw3ICszODQxLDggQEAKIAljZSA9IHhjYWxsb2MoMSwgY2Vfc2l6ZSk7CiAJbWVtY3B5KGNlLT5uYW1lLCBwYXRoLCBuYW1lbGVuKTsKIAljZS0+Y2VfbW9kZSA9IGNyZWF0ZV9jZV9tb2RlKG1vZGUpOwotCWNlLT5jZV9mbGFncyA9IG5hbWVsZW47CisJY2UtPmNlX2ZsYWdzID0gY3JlYXRlX2NlX2ZsYWdzKDApOworCWNlLT5jZV9uYW1lbGVuID0gbmFtZWxlbjsKIAlpZiAoU19JU0dJVExJTksobW9kZSkpIHsKIAkJY29uc3QgY2hhciAqcyA9IGJ1ZjsKIApAQCAtMzYxMiw2ICszOTQ0LDMzIEBACiAJZGllX2Vycm5vKF8oInVuYWJsZSB0byB3cml0ZSBmaWxlICclcycgbW9kZSAlbyIpLCBwYXRoLCBtb2RlKTsKIH0KIAorc3RhdGljIHZvaWQgYWRkX2NvbmZsaWN0ZWRfc3RhZ2VzX2ZpbGUoc3RydWN0IHBhdGNoICpwYXRjaCkKK3sKKwlpbnQgc3RhZ2UsIG5hbWVsZW47CisJdW5zaWduZWQgY2Vfc2l6ZSwgbW9kZTsKKwlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOworCisJaWYgKCF1cGRhdGVfaW5kZXgpCisJCXJldHVybjsKKwluYW1lbGVuID0gc3RybGVuKHBhdGNoLT5uZXdfbmFtZSk7CisJY2Vfc2l6ZSA9IGNhY2hlX2VudHJ5X3NpemUobmFtZWxlbik7CisJbW9kZSA9IHBhdGNoLT5uZXdfbW9kZSA/IHBhdGNoLT5uZXdfbW9kZSA6IChTX0lGUkVHIHwgMDY0NCk7CisKKwlyZW1vdmVfZmlsZV9mcm9tX2NhY2hlKHBhdGNoLT5uZXdfbmFtZSk7CisJZm9yIChzdGFnZSA9IDE7IHN0YWdlIDwgNDsgc3RhZ2UrKykgeworCQlpZiAoaXNfbnVsbF9zaGExKHBhdGNoLT50aHJlZXdheV9zdGFnZVtzdGFnZSAtIDFdKSkKKwkJCWNvbnRpbnVlOworCQljZSA9IHhjYWxsb2MoMSwgY2Vfc2l6ZSk7CisJCW1lbWNweShjZS0+bmFtZSwgcGF0Y2gtPm5ld19uYW1lLCBuYW1lbGVuKTsKKwkJY2UtPmNlX21vZGUgPSBjcmVhdGVfY2VfbW9kZShtb2RlKTsKKwkJY2UtPmNlX2ZsYWdzID0gY3JlYXRlX2NlX2ZsYWdzKHN0YWdlKTsKKwkJY2UtPmNlX25hbWVsZW4gPSBuYW1lbGVuOworCQloYXNoY3B5KGNlLT5zaGExLCBwYXRjaC0+dGhyZWV3YXlfc3RhZ2Vbc3RhZ2UgLSAxXSk7CisJCWlmIChhZGRfY2FjaGVfZW50cnkoY2UsIEFERF9DQUNIRV9PS19UT19BREQpIDwgMCkKKwkJCWRpZShfKCJ1bmFibGUgdG8gYWRkIGNhY2hlIGVudHJ5IGZvciAlcyIpLCBwYXRjaC0+bmV3X25hbWUpOworCX0KK30KKwogc3RhdGljIHZvaWQgY3JlYXRlX2ZpbGUoc3RydWN0IHBhdGNoICpwYXRjaCkKIHsKIAljaGFyICpwYXRoID0gcGF0Y2gtPm5ld19uYW1lOwpAQCAtMzYyMiw3ICszOTgxLDExIEBACiAJaWYgKCFtb2RlKQogCQltb2RlID0gU19JRlJFRyB8IDA2NDQ7CiAJY3JlYXRlX29uZV9maWxlKHBhdGgsIG1vZGUsIGJ1Ziwgc2l6ZSk7Ci0JYWRkX2luZGV4X2ZpbGUocGF0aCwgbW9kZSwgYnVmLCBzaXplKTsKKworCWlmIChwYXRjaC0+Y29uZmxpY3RlZF90aHJlZXdheSkKKwkJYWRkX2NvbmZsaWN0ZWRfc3RhZ2VzX2ZpbGUocGF0Y2gpOworCWVsc2UKKwkJYWRkX2luZGV4X2ZpbGUocGF0aCwgbW9kZSwgYnVmLCBzaXplKTsKIH0KIAogLyogcGhhc2UgemVybyBpcyB0byByZW1vdmUsIHBoYXNlIG9uZSBpcyB0byBjcmVhdGUgKi8KQEAgLTM3MjQsNiArNDA4Nyw3IEBACiAJaW50IHBoYXNlOwogCWludCBlcnJzID0gMDsKIAlzdHJ1Y3QgcGF0Y2ggKmw7CisJc3RydWN0IHN0cmluZ19saXN0IGNwYXRoID0gU1RSSU5HX0xJU1RfSU5JVF9EVVA7CiAKIAlmb3IgKHBoYXNlID0gMDsgcGhhc2UgPCAyOyBwaGFzZSsrKSB7CiAJCWwgPSBsaXN0OwpAQCAtMzczMiwxMiArNDA5NiwzMCBAQAogCQkJCWVycnMgPSAxOwogCQkJZWxzZSB7CiAJCQkJd3JpdGVfb3V0X29uZV9yZXN1bHQobCwgcGhhc2UpOwotCQkJCWlmIChwaGFzZSA9PSAxICYmIHdyaXRlX291dF9vbmVfcmVqZWN0KGwpKQotCQkJCQllcnJzID0gMTsKKwkJCQlpZiAocGhhc2UgPT0gMSkgeworCQkJCQlpZiAod3JpdGVfb3V0X29uZV9yZWplY3QobCkpCisJCQkJCQllcnJzID0gMTsKKwkJCQkJaWYgKGwtPmNvbmZsaWN0ZWRfdGhyZWV3YXkpIHsKKwkJCQkJCXN0cmluZ19saXN0X2FwcGVuZCgmY3BhdGgsIGwtPm5ld19uYW1lKTsKKwkJCQkJCWVycnMgPSAxOworCQkJCQl9CisJCQkJfQogCQkJfQogCQkJbCA9IGwtPm5leHQ7CiAJCX0KIAl9CisKKwlpZiAoY3BhdGgubnIpIHsKKwkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW07CisKKwkJc29ydF9zdHJpbmdfbGlzdCgmY3BhdGgpOworCQlmb3JfZWFjaF9zdHJpbmdfbGlzdF9pdGVtKGl0ZW0sICZjcGF0aCkKKwkJCWZwcmludGYoc3RkZXJyLCAiVSAlc1xuIiwgaXRlbS0+c3RyaW5nKTsKKwkJc3RyaW5nX2xpc3RfY2xlYXIoJmNwYXRoLCAwKTsKKworCQlyZXJlcmUoMCk7CisJfQorCiAJcmV0dXJuIGVycnM7CiB9CiAKQEAgLTM4NjAsOCArNDI0MiwxMiBAQAogCSAgICAhYXBwbHlfd2l0aF9yZWplY3QpCiAJCWV4aXQoMSk7CiAKLQlpZiAoYXBwbHkgJiYgd3JpdGVfb3V0X3Jlc3VsdHMobGlzdCkpCi0JCWV4aXQoMSk7CisJaWYgKGFwcGx5ICYmIHdyaXRlX291dF9yZXN1bHRzKGxpc3QpKSB7CisJCWlmIChhcHBseV93aXRoX3JlamVjdCkKKwkJCWV4aXQoMSk7CisJCS8qIHdpdGggLS0zd2F5LCB3ZSBzdGlsbCBuZWVkIHRvIHdyaXRlIHRoZSBpbmRleCBvdXQgKi8KKwkJcmV0dXJuIDE7CisJfQogCiAJaWYgKGZha2VfYW5jZXN0b3IpCiAJCWJ1aWxkX2Zha2VfYW5jZXN0b3IobGlzdCwgZmFrZV9hbmNlc3Rvcik7CkBAIC0zOTgzLDcgKzQzNjksNyBAQAogCQlPUFRfTk9PUF9OT0FSRygwLCAiYWxsb3ctYmluYXJ5LXJlcGxhY2VtZW50IiksCiAJCU9QVF9OT09QX05PQVJHKDAsICJiaW5hcnkiKSwKIAkJT1BUX0JPT0xFQU4oMCwgIm51bXN0YXQiLCAmbnVtc3RhdCwKLQkJCU5fKCJzaG93cyBudW1iZXIgb2YgYWRkZWQgYW5kIGRlbGV0ZWQgbGluZXMgaW4gZGVjaW1hbCBub3RhdGlvbiIpKSwKKwkJCU5fKCJzaG93IG51bWJlciBvZiBhZGRlZCBhbmQgZGVsZXRlZCBsaW5lcyBpbiBkZWNpbWFsIG5vdGF0aW9uIikpLAogCQlPUFRfQk9PTEVBTigwLCAic3VtbWFyeSIsICZzdW1tYXJ5LAogCQkJTl8oImluc3RlYWQgb2YgYXBwbHlpbmcgdGhlIHBhdGNoLCBvdXRwdXQgYSBzdW1tYXJ5IGZvciB0aGUgaW5wdXQiKSksCiAJCU9QVF9CT09MRUFOKDAsICJjaGVjayIsICZjaGVjaywKQEAgLTM5OTQsNiArNDM4MCw4IEBACiAJCQlOXygiYXBwbHkgYSBwYXRjaCB3aXRob3V0IHRvdWNoaW5nIHRoZSB3b3JraW5nIHRyZWUiKSksCiAJCU9QVF9CT09MRUFOKDAsICJhcHBseSIsICZmb3JjZV9hcHBseSwKIAkJCU5fKCJhbHNvIGFwcGx5IHRoZSBwYXRjaCAodXNlIHdpdGggLS1zdGF0Ly0tc3VtbWFyeS8tLWNoZWNrKSIpKSwKKwkJT1BUX0JPT0woJzMnLCAiM3dheSIsICZ0aHJlZXdheSwKKwkJCSBOXyggImF0dGVtcHQgdGhyZWUtd2F5IG1lcmdlIGlmIGEgcGF0Y2ggZG9lcyBub3QgYXBwbHkiKSksCiAJCU9QVF9GSUxFTkFNRSgwLCAiYnVpbGQtZmFrZS1hbmNlc3RvciIsICZmYWtlX2FuY2VzdG9yLAogCQkJTl8oImJ1aWxkIGEgdGVtcG9yYXJ5IGluZGV4IGJhc2VkIG9uIGVtYmVkZGVkIGluZGV4IGluZm9ybWF0aW9uIikpLAogCQl7IE9QVElPTl9DQUxMQkFDSywgJ3onLCBOVUxMLCBOVUxMLCBOVUxMLApAQCAtNDA0Miw2ICs0NDMwLDE1IEBACiAJYXJnYyA9IHBhcnNlX29wdGlvbnMoYXJnYywgYXJndiwgcHJlZml4LCBidWlsdGluX2FwcGx5X29wdGlvbnMsCiAJCQlhcHBseV91c2FnZSwgMCk7CiAKKwlpZiAoYXBwbHlfd2l0aF9yZWplY3QgJiYgdGhyZWV3YXkpCisJCWRpZSgiLS1yZWplY3QgYW5kIC0tM3dheSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci4iKTsKKwlpZiAoY2FjaGVkICYmIHRocmVld2F5KQorCQlkaWUoIi0tY2FjaGVkIGFuZCAtLTN3YXkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIuIik7CisJaWYgKHRocmVld2F5KSB7CisJCWlmIChpc19ub3RfZ2l0ZGlyKQorCQkJZGllKF8oIi0tM3dheSBvdXRzaWRlIGEgcmVwb3NpdG9yeSIpKTsKKwkJY2hlY2tfaW5kZXggPSAxOworCX0KIAlpZiAoYXBwbHlfd2l0aF9yZWplY3QpCiAJCWFwcGx5ID0gYXBwbHlfdmVyYm9zZWx5ID0gMTsKIAlpZiAoIWZvcmNlX2FwcGx5ICYmIChkaWZmc3RhdCB8fCBudW1zdGF0IHx8IHN1bW1hcnkgfHwgY2hlY2sgfHwgZmFrZV9hbmNlc3RvcikpCmRpZmYgLS1naXQgYS9idWlsdGluL2FyY2hpdmUuYyBiL2J1aWx0aW4vYXJjaGl2ZS5jCmluZGV4IDkzMTk1NmQuLjQ5MTc4ZjEgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vYXJjaGl2ZS5jCisrKyBiL2J1aWx0aW4vYXJjaGl2ZS5jCkBAIC0yNyw4ICsyNyw4IEBACiAJCQkgICAgICAgY29uc3QgY2hhciAqcmVtb3RlLCBjb25zdCBjaGFyICpleGVjLAogCQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWVfaGludCkKIHsKLQljaGFyIGJ1ZltMQVJHRV9QQUNLRVRfTUFYXTsKLQlpbnQgZmRbMl0sIGksIGxlbiwgcnY7CisJY2hhciAqYnVmOworCWludCBmZFsyXSwgaSwgcnY7CiAJc3RydWN0IHRyYW5zcG9ydCAqdHJhbnNwb3J0OwogCXN0cnVjdCByZW1vdGUgKl9yZW1vdGU7CiAKQEAgLTUzLDIxICs1MywxOCBAQAogCQlwYWNrZXRfd3JpdGUoZmRbMV0sICJhcmd1bWVudCAlc1xuIiwgYXJndltpXSk7CiAJcGFja2V0X2ZsdXNoKGZkWzFdKTsKIAotCWxlbiA9IHBhY2tldF9yZWFkX2xpbmUoZmRbMF0sIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotCWlmICghbGVuKQorCWJ1ZiA9IHBhY2tldF9yZWFkX2xpbmUoZmRbMF0sIE5VTEwpOworCWlmICghYnVmKQogCQlkaWUoXygiZ2l0IGFyY2hpdmU6IGV4cGVjdGVkIEFDSy9OQUssIGdvdCBFT0YiKSk7Ci0JaWYgKGJ1ZltsZW4tMV0gPT0gJ1xuJykKLQkJYnVmWy0tbGVuXSA9IDA7CiAJaWYgKHN0cmNtcChidWYsICJBQ0siKSkgewotCQlpZiAobGVuID4gNSAmJiAhcHJlZml4Y21wKGJ1ZiwgIk5BQ0sgIikpCisJCWlmICghcHJlZml4Y21wKGJ1ZiwgIk5BQ0sgIikpCiAJCQlkaWUoXygiZ2l0IGFyY2hpdmU6IE5BQ0sgJXMiKSwgYnVmICsgNSk7Ci0JCWlmIChsZW4gPiA0ICYmICFwcmVmaXhjbXAoYnVmLCAiRVJSICIpKQorCQlpZiAoIXByZWZpeGNtcChidWYsICJFUlIgIikpCiAJCQlkaWUoXygicmVtb3RlIGVycm9yOiAlcyIpLCBidWYgKyA0KTsKIAkJZGllKF8oImdpdCBhcmNoaXZlOiBwcm90b2NvbCBlcnJvciIpKTsKIAl9CiAKLQlsZW4gPSBwYWNrZXRfcmVhZF9saW5lKGZkWzBdLCBidWYsIHNpemVvZihidWYpKTsKLQlpZiAobGVuKQorCWlmIChwYWNrZXRfcmVhZF9saW5lKGZkWzBdLCBOVUxMKSkKIAkJZGllKF8oImdpdCBhcmNoaXZlOiBleHBlY3RlZCBhIGZsdXNoIikpOwogCiAJLyogTm93LCBzdGFydCByZWFkaW5nIGZyb20gZmRbMF0gYW5kIHNwaXQgaXQgb3V0IHRvIHN0ZG91dCAqLwpAQCAtODgsMTIgKzg1LDEyIEBACiAJY29uc3QgY2hhciAqb3V0cHV0ID0gTlVMTDsKIAljb25zdCBjaGFyICpyZW1vdGUgPSBOVUxMOwogCXN0cnVjdCBvcHRpb24gbG9jYWxfb3B0c1tdID0gewotCQlPUFRfU1RSSU5HKCdvJywgIm91dHB1dCIsICZvdXRwdXQsICJmaWxlIiwKLQkJCSJ3cml0ZSB0aGUgYXJjaGl2ZSB0byB0aGlzIGZpbGUiKSwKLQkJT1BUX1NUUklORygwLCAicmVtb3RlIiwgJnJlbW90ZSwgInJlcG8iLAotCQkJInJldHJpZXZlIHRoZSBhcmNoaXZlIGZyb20gcmVtb3RlIHJlcG9zaXRvcnkgPHJlcG8+IiksCi0JCU9QVF9TVFJJTkcoMCwgImV4ZWMiLCAmZXhlYywgImNtZCIsCi0JCQkicGF0aCB0byB0aGUgcmVtb3RlIGdpdC11cGxvYWQtYXJjaGl2ZSBjb21tYW5kIiksCisJCU9QVF9TVFJJTkcoJ28nLCAib3V0cHV0IiwgJm91dHB1dCwgTl8oImZpbGUiKSwKKwkJCU5fKCJ3cml0ZSB0aGUgYXJjaGl2ZSB0byB0aGlzIGZpbGUiKSksCisJCU9QVF9TVFJJTkcoMCwgInJlbW90ZSIsICZyZW1vdGUsIE5fKCJyZXBvIiksCisJCQlOXygicmV0cmlldmUgdGhlIGFyY2hpdmUgZnJvbSByZW1vdGUgcmVwb3NpdG9yeSA8cmVwbz4iKSksCisJCU9QVF9TVFJJTkcoMCwgImV4ZWMiLCAmZXhlYywgTl8oImNvbW1hbmQiKSwKKwkJCU5fKCJwYXRoIHRvIHRoZSByZW1vdGUgZ2l0LXVwbG9hZC1hcmNoaXZlIGNvbW1hbmQiKSksCiAJCU9QVF9FTkQoKQogCX07CiAKZGlmZiAtLWdpdCBhL2J1aWx0aW4vYmlzZWN0LS1oZWxwZXIuYyBiL2J1aWx0aW4vYmlzZWN0LS1oZWxwZXIuYwppbmRleCA4ZDMyNWE1Li5lMzg4NGUzIDEwMDY0NAotLS0gYS9idWlsdGluL2Jpc2VjdC0taGVscGVyLmMKKysrIGIvYnVpbHRpbi9iaXNlY3QtLWhlbHBlci5jCkBAIC00LDcgKzQsNyBAQAogI2luY2x1ZGUgImJpc2VjdC5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGdpdF9iaXNlY3RfaGVscGVyX3VzYWdlW10gPSB7Ci0JImdpdCBiaXNlY3QtLWhlbHBlciAtLW5leHQtYWxsIFstLW5vLWNoZWNrb3V0XSIsCisJTl8oImdpdCBiaXNlY3QtLWhlbHBlciAtLW5leHQtYWxsIFstLW5vLWNoZWNrb3V0XSIpLAogCU5VTEwKIH07CiAKQEAgLTE0LDkgKzE0LDkgQEAKIAlpbnQgbm9fY2hlY2tvdXQgPSAwOwogCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewogCQlPUFRfQk9PTEVBTigwLCAibmV4dC1hbGwiLCAmbmV4dF9hbGwsCi0JCQkgICAgInBlcmZvcm0gJ2dpdCBiaXNlY3QgbmV4dCciKSwKKwkJCSAgICBOXygicGVyZm9ybSAnZ2l0IGJpc2VjdCBuZXh0JyIpKSwKIAkJT1BUX0JPT0xFQU4oMCwgIm5vLWNoZWNrb3V0IiwgJm5vX2NoZWNrb3V0LAotCQkJICAgICJ1cGRhdGUgQklTRUNUX0hFQUQgaW5zdGVhZCBvZiBjaGVja2luZyBvdXQgdGhlIGN1cnJlbnQgY29tbWl0IiksCisJCQkgICAgTl8oInVwZGF0ZSBCSVNFQ1RfSEVBRCBpbnN0ZWFkIG9mIGNoZWNraW5nIG91dCB0aGUgY3VycmVudCBjb21taXQiKSksCiAJCU9QVF9FTkQoKQogCX07CiAKZGlmZiAtLWdpdCBhL2J1aWx0aW4vYmxhbWUuYyBiL2J1aWx0aW4vYmxhbWUuYwppbmRleCAyNGQzZGQ1Li41N2E0ODdlIDEwMDY0NAotLS0gYS9idWlsdGluL2JsYW1lLmMKKysrIGIvYnVpbHRpbi9ibGFtZS5jCkBAIC0yMiwxMiArMjIsMTIgQEAKICNpbmNsdWRlICJ1dGY4LmgiCiAjaW5jbHVkZSAidXNlcmRpZmYuaCIKIAotc3RhdGljIGNoYXIgYmxhbWVfdXNhZ2VbXSA9ICJnaXQgYmxhbWUgW29wdGlvbnNdIFtyZXYtb3B0c10gW3Jldl0gWy0tXSBmaWxlIjsKK3N0YXRpYyBjaGFyIGJsYW1lX3VzYWdlW10gPSBOXygiZ2l0IGJsYW1lIFtvcHRpb25zXSBbcmV2LW9wdHNdIFtyZXZdIFstLV0gZmlsZSIpOwogCiBzdGF0aWMgY29uc3QgY2hhciAqYmxhbWVfb3B0X3VzYWdlW10gPSB7CiAJYmxhbWVfdXNhZ2UsCiAJIiIsCi0JIltyZXYtb3B0c10gYXJlIGRvY3VtZW50ZWQgaW4gZ2l0LXJldi1saXN0KDEpIiwKKwlOXygiW3Jldi1vcHRzXSBhcmUgZG9jdW1lbnRlZCBpbiBnaXQtcmV2LWxpc3QoMSkiKSwKIAlOVUxMCiB9OwogCkBAIC00Miw2ICs0Miw3IEBACiBzdGF0aWMgaW50IGluY3JlbWVudGFsOwogc3RhdGljIGludCB4ZGxfb3B0czsKIHN0YXRpYyBpbnQgYWJicmV2ID0gLTE7CitzdGF0aWMgaW50IG5vX3dob2xlX2ZpbGVfcmVuYW1lOwogCiBzdGF0aWMgZW51bSBkYXRlX21vZGUgYmxhbWVfZGF0ZV9tb2RlID0gREFURV9JU084NjAxOwogc3RhdGljIHNpemVfdCBibGFtZV9kYXRlX3dpZHRoOwpAQCAtMTEwLDYgKzExMSw3IEBACiBpbnQgdGV4dGNvbnZfb2JqZWN0KGNvbnN0IGNoYXIgKnBhdGgsCiAJCSAgICB1bnNpZ25lZCBtb2RlLAogCQkgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKKwkJICAgIGludCBzaGExX3ZhbGlkLAogCQkgICAgY2hhciAqKmJ1ZiwKIAkJICAgIHVuc2lnbmVkIGxvbmcgKmJ1Zl9zaXplKQogewpAQCAtMTE3LDcgKzExOSw3IEBACiAJc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqdGV4dGNvbnY7CiAKIAlkZiA9IGFsbG9jX2ZpbGVzcGVjKHBhdGgpOwotCWZpbGxfZmlsZXNwZWMoZGYsIHNoYTEsIG1vZGUpOworCWZpbGxfZmlsZXNwZWMoZGYsIHNoYTEsIHNoYTFfdmFsaWQsIG1vZGUpOwogCXRleHRjb252ID0gZ2V0X3RleHRjb252KGRmKTsKIAlpZiAoIXRleHRjb252KSB7CiAJCWZyZWVfZmlsZXNwZWMoZGYpOwpAQCAtMTQyLDcgKzE0NCw3IEBACiAKIAkJbnVtX3JlYWRfYmxvYisrOwogCQlpZiAoRElGRl9PUFRfVFNUKG9wdCwgQUxMT1dfVEVYVENPTlYpICYmCi0JCSAgICB0ZXh0Y29udl9vYmplY3Qoby0+cGF0aCwgby0+bW9kZSwgby0+YmxvYl9zaGExLCAmZmlsZS0+cHRyLCAmZmlsZV9zaXplKSkKKwkJICAgIHRleHRjb252X29iamVjdChvLT5wYXRoLCBvLT5tb2RlLCBvLT5ibG9iX3NoYTEsIDEsICZmaWxlLT5wdHIsICZmaWxlX3NpemUpKQogCQkJOwogCQllbHNlCiAJCQlmaWxlLT5wdHIgPSByZWFkX3NoYTFfZmlsZShvLT5ibG9iX3NoYTEsICZ0eXBlLCAmZmlsZV9zaXplKTsKQEAgLTQwNiw4ICs0MDgsNyBAQAogCXBhdGhzWzFdID0gTlVMTDsKIAogCWRpZmZfdHJlZV9zZXR1cF9wYXRocyhwYXRocywgJmRpZmZfb3B0cyk7Ci0JaWYgKGRpZmZfc2V0dXBfZG9uZSgmZGlmZl9vcHRzKSA8IDApCi0JCWRpZSgiZGlmZi1zZXR1cCIpOworCWRpZmZfc2V0dXBfZG9uZSgmZGlmZl9vcHRzKTsKIAogCWlmIChpc19udWxsX3NoYTEob3JpZ2luLT5jb21taXQtPm9iamVjdC5zaGExKSkKIAkJZG9fZGlmZl9jYWNoZShwYXJlbnQtPnRyZWUtPm9iamVjdC5zaGExLCAmZGlmZl9vcHRzKTsKQEAgLTQ5Myw4ICs0OTQsNyBAQAogCWRpZmZfb3B0cy5zaW5nbGVfZm9sbG93ID0gb3JpZ2luLT5wYXRoOwogCXBhdGhzWzBdID0gTlVMTDsKIAlkaWZmX3RyZWVfc2V0dXBfcGF0aHMocGF0aHMsICZkaWZmX29wdHMpOwotCWlmIChkaWZmX3NldHVwX2RvbmUoJmRpZmZfb3B0cykgPCAwKQotCQlkaWUoImRpZmYtc2V0dXAiKTsKKwlkaWZmX3NldHVwX2RvbmUoJmRpZmZfb3B0cyk7CiAKIAlpZiAoaXNfbnVsbF9zaGExKG9yaWdpbi0+Y29tbWl0LT5vYmplY3Quc2hhMSkpCiAJCWRvX2RpZmZfY2FjaGUocGFyZW50LT50cmVlLT5vYmplY3Quc2hhMSwgJmRpZmZfb3B0cyk7CkBAIC0xMDc0LDggKzEwNzQsNyBAQAogCiAJcGF0aHNbMF0gPSBOVUxMOwogCWRpZmZfdHJlZV9zZXR1cF9wYXRocyhwYXRocywgJmRpZmZfb3B0cyk7Ci0JaWYgKGRpZmZfc2V0dXBfZG9uZSgmZGlmZl9vcHRzKSA8IDApCi0JCWRpZSgiZGlmZi1zZXR1cCIpOworCWRpZmZfc2V0dXBfZG9uZSgmZGlmZl9vcHRzKTsKIAogCS8qIFRyeSAiZmluZCBjb3BpZXMgaGFyZGVyIiBvbiBuZXcgcGF0aCBpZiByZXF1ZXN0ZWQ7CiAJICogd2UgZG8gbm90IHdhbnQgdG8gdXNlIGRpZmZjb3JlX3JlbmFtZSgpIGFjdHVhbGx5IHRvCkBAIC0xMjI4LDcgKzEyMjcsNyBAQAogCSAqIFRoZSBmaXJzdCBwYXNzIGxvb2tzIGZvciB1bnJlbmFtZWQgcGF0aCB0byBvcHRpbWl6ZSBmb3IKIAkgKiBjb21tb24gY2FzZXMsIHRoZW4gd2UgbG9vayBmb3IgcmVuYW1lcyBpbiB0aGUgc2Vjb25kIHBhc3MuCiAJICovCi0JZm9yIChwYXNzID0gMDsgcGFzcyA8IDI7IHBhc3MrKykgeworCWZvciAocGFzcyA9IDA7IHBhc3MgPCAyIC0gbm9fd2hvbGVfZmlsZV9yZW5hbWU7IHBhc3MrKykgewogCQlzdHJ1Y3Qgb3JpZ2luICooKmZpbmQpKHN0cnVjdCBzY29yZWJvYXJkICosCiAJCQkJICAgICAgIHN0cnVjdCBjb21taXQgKiwgc3RydWN0IG9yaWdpbiAqKTsKIAkJZmluZCA9IHBhc3MgPyBmaW5kX3JlbmFtZSA6IGZpbmRfb3JpZ2luOwpAQCAtMTMyMywzMCArMTMyMiwzMSBAQAogICogSW5mb3JtYXRpb24gb24gY29tbWl0cywgdXNlZCBmb3Igb3V0cHV0LgogICovCiBzdHJ1Y3QgY29tbWl0X2luZm8gewotCWNvbnN0IGNoYXIgKmF1dGhvcjsKLQljb25zdCBjaGFyICphdXRob3JfbWFpbDsKKwlzdHJ1Y3Qgc3RyYnVmIGF1dGhvcjsKKwlzdHJ1Y3Qgc3RyYnVmIGF1dGhvcl9tYWlsOwogCXVuc2lnbmVkIGxvbmcgYXV0aG9yX3RpbWU7Ci0JY29uc3QgY2hhciAqYXV0aG9yX3R6OworCXN0cnVjdCBzdHJidWYgYXV0aG9yX3R6OwogCiAJLyogZmlsbGVkIG9ubHkgd2hlbiBhc2tlZCBmb3IgZGV0YWlscyAqLwotCWNvbnN0IGNoYXIgKmNvbW1pdHRlcjsKLQljb25zdCBjaGFyICpjb21taXR0ZXJfbWFpbDsKKwlzdHJ1Y3Qgc3RyYnVmIGNvbW1pdHRlcjsKKwlzdHJ1Y3Qgc3RyYnVmIGNvbW1pdHRlcl9tYWlsOwogCXVuc2lnbmVkIGxvbmcgY29tbWl0dGVyX3RpbWU7Ci0JY29uc3QgY2hhciAqY29tbWl0dGVyX3R6OworCXN0cnVjdCBzdHJidWYgY29tbWl0dGVyX3R6OwogCi0JY29uc3QgY2hhciAqc3VtbWFyeTsKKwlzdHJ1Y3Qgc3RyYnVmIHN1bW1hcnk7CiB9OwogCiAvKgogICogUGFyc2UgYXV0aG9yL2NvbW1pdHRlciBsaW5lIGluIHRoZSBjb21taXQgb2JqZWN0IGJ1ZmZlcgogICovCiBzdGF0aWMgdm9pZCBnZXRfYWNfbGluZShjb25zdCBjaGFyICppbmJ1ZiwgY29uc3QgY2hhciAqd2hhdCwKLQkJCWludCBwZXJzb25fbGVuLCBjaGFyICpwZXJzb24sCi0JCQlpbnQgbWFpbF9sZW4sIGNoYXIgKm1haWwsCi0JCQl1bnNpZ25lZCBsb25nICp0aW1lLCBjb25zdCBjaGFyICoqdHopCisJc3RydWN0IHN0cmJ1ZiAqbmFtZSwgc3RydWN0IHN0cmJ1ZiAqbWFpbCwKKwl1bnNpZ25lZCBsb25nICp0aW1lLCBzdHJ1Y3Qgc3RyYnVmICp0eikKIHsKLQlpbnQgbGVuLCB0emxlbiwgbWFpbGxlbjsKLQljaGFyICp0bXAsICplbmRwLCAqdGltZXBvcywgKm1haWxwb3M7CisJc3RydWN0IGlkZW50X3NwbGl0IGlkZW50OworCXNpemVfdCBsZW4sIG1haWxsZW4sIG5hbWVsZW47CisJY2hhciAqdG1wLCAqZW5kcDsKKwljb25zdCBjaGFyICpuYW1lYnVmLCAqbWFpbGJ1ZjsKIAogCXRtcCA9IHN0cnN0cihpbmJ1Ziwgd2hhdCk7CiAJaWYgKCF0bXApCkBAIC0xMzU3LDY5ICsxMzU3LDY2IEBACiAJCWxlbiA9IHN0cmxlbih0bXApOwogCWVsc2UKIAkJbGVuID0gZW5kcCAtIHRtcDsKLQlpZiAocGVyc29uX2xlbiA8PSBsZW4pIHsKKworCWlmIChzcGxpdF9pZGVudF9saW5lKCZpZGVudCwgdG1wLCBsZW4pKSB7CiAJZXJyb3Jfb3V0OgogCQkvKiBVZ2ggKi8KLQkJKnR6ID0gIih1bmtub3duKSI7Ci0JCXN0cmNweShwZXJzb24sICp0eik7Ci0JCXN0cmNweShtYWlsLCAqdHopOworCQl0bXAgPSAiKHVua25vd24pIjsKKwkJc3RyYnVmX2FkZHN0cihuYW1lLCB0bXApOworCQlzdHJidWZfYWRkc3RyKG1haWwsIHRtcCk7CisJCXN0cmJ1Zl9hZGRzdHIodHosIHRtcCk7CiAJCSp0aW1lID0gMDsKIAkJcmV0dXJuOwogCX0KLQltZW1jcHkocGVyc29uLCB0bXAsIGxlbik7CiAKLQl0bXAgPSBwZXJzb247Ci0JdG1wICs9IGxlbjsKLQkqdG1wID0gMDsKLQl3aGlsZSAocGVyc29uIDwgdG1wICYmICp0bXAgIT0gJyAnKQotCQl0bXAtLTsKLQlpZiAodG1wIDw9IHBlcnNvbikKLQkJZ290byBlcnJvcl9vdXQ7Ci0JKnR6ID0gdG1wKzE7Ci0JdHpsZW4gPSAocGVyc29uK2xlbiktKHRtcCsxKTsKKwluYW1lbGVuID0gaWRlbnQubmFtZV9lbmQgLSBpZGVudC5uYW1lX2JlZ2luOworCW5hbWVidWYgPSBpZGVudC5uYW1lX2JlZ2luOwogCi0JKnRtcCA9IDA7Ci0Jd2hpbGUgKHBlcnNvbiA8IHRtcCAmJiAqdG1wICE9ICcgJykKLQkJdG1wLS07Ci0JaWYgKHRtcCA8PSBwZXJzb24pCi0JCWdvdG8gZXJyb3Jfb3V0OwotCSp0aW1lID0gc3RydG91bCh0bXAsIE5VTEwsIDEwKTsKLQl0aW1lcG9zID0gdG1wOworCW1haWxsZW4gPSBpZGVudC5tYWlsX2VuZCAtIGlkZW50Lm1haWxfYmVnaW47CisJbWFpbGJ1ZiA9IGlkZW50Lm1haWxfYmVnaW47CiAKLQkqdG1wID0gMDsKLQl3aGlsZSAocGVyc29uIDwgdG1wICYmICEoKnRtcCA9PSAnICcgJiYgdG1wWzFdID09ICc8JykpCi0JCXRtcC0tOwotCWlmICh0bXAgPD0gcGVyc29uKQotCQlyZXR1cm47Ci0JbWFpbHBvcyA9IHRtcCArIDE7Ci0JKnRtcCA9IDA7Ci0JbWFpbGxlbiA9IHRpbWVwb3MgLSB0bXA7Ci0JbWVtY3B5KG1haWwsIG1haWxwb3MsIG1haWxsZW4pOworCWlmIChpZGVudC5kYXRlX2JlZ2luICYmIGlkZW50LmRhdGVfZW5kKQorCQkqdGltZSA9IHN0cnRvdWwoaWRlbnQuZGF0ZV9iZWdpbiwgTlVMTCwgMTApOworCWVsc2UKKwkJKnRpbWUgPSAwOwogCi0JaWYgKCFtYWlsbWFwLm5yKQotCQlyZXR1cm47Ci0KLQkvKgotCSAqIG1haWxtYXAgZXhwYW5zaW9uIG1heSBtYWtlIHRoZSBuYW1lIGxvbmdlci4KLQkgKiBtYWtlIHJvb20gYnkgcHVzaGluZyBzdHVmZiBkb3duLgotCSAqLwotCXRtcCA9IHBlcnNvbiArIHBlcnNvbl9sZW4gLSAodHpsZW4gKyAxKTsKLQltZW1tb3ZlKHRtcCwgKnR6LCB0emxlbik7Ci0JdG1wW3R6bGVuXSA9IDA7Ci0JKnR6ID0gdG1wOworCWlmIChpZGVudC50el9iZWdpbiAmJiBpZGVudC50el9lbmQpCisJCXN0cmJ1Zl9hZGQodHosIGlkZW50LnR6X2JlZ2luLCBpZGVudC50el9lbmQgLSBpZGVudC50el9iZWdpbik7CisJZWxzZQorCQlzdHJidWZfYWRkc3RyKHR6LCAiKHVua25vd24pIik7CiAKIAkvKgogCSAqIE5vdywgY29udmVydCBib3RoIG5hbWUgYW5kIGUtbWFpbCB1c2luZyBtYWlsbWFwCiAJICovCi0JaWYgKG1hcF91c2VyKCZtYWlsbWFwLCBtYWlsKzEsIG1haWxfbGVuLTEsIHBlcnNvbiwgdG1wLXBlcnNvbi0xKSkgewotCQkvKiBBZGQgYSB0cmFpbGluZyAnPicgdG8gZW1haWwsIHNpbmNlIG1hcF91c2VyIHJldHVybnMgcGxhaW4gZW1haWxzCi0JCSAgIE5vdGU6IEl0IGFscmVhZHkgaGFzICc8Jywgc2luY2Ugd2UgcmVwbGFjZSBmcm9tIG1haWwrMSAqLwotCQltYWlscG9zID0gbWVtY2hyKG1haWwsICdcMCcsIG1haWxfbGVuKTsKLQkJaWYgKG1haWxwb3MgJiYgbWFpbHBvcy1tYWlsIDwgbWFpbF9sZW4gLSAxKSB7Ci0JCQkqbWFpbHBvcyA9ICc+JzsKLQkJCSoobWFpbHBvcysxKSA9ICdcMCc7Ci0JCX0KLQl9CisJbWFwX3VzZXIoJm1haWxtYXAsICZtYWlsYnVmLCAmbWFpbGxlbiwKKwkJICZuYW1lYnVmLCAmbmFtZWxlbik7CisKKwlzdHJidWZfYWRkZihtYWlsLCAiPCUuKnM+IiwgKGludCltYWlsbGVuLCBtYWlsYnVmKTsKKwlzdHJidWZfYWRkKG5hbWUsIG5hbWVidWYsIG5hbWVsZW4pOworfQorCitzdGF0aWMgdm9pZCBjb21taXRfaW5mb19pbml0KHN0cnVjdCBjb21taXRfaW5mbyAqY2kpCit7CisKKwlzdHJidWZfaW5pdCgmY2ktPmF1dGhvciwgMCk7CisJc3RyYnVmX2luaXQoJmNpLT5hdXRob3JfbWFpbCwgMCk7CisJc3RyYnVmX2luaXQoJmNpLT5hdXRob3JfdHosIDApOworCXN0cmJ1Zl9pbml0KCZjaS0+Y29tbWl0dGVyLCAwKTsKKwlzdHJidWZfaW5pdCgmY2ktPmNvbW1pdHRlcl9tYWlsLCAwKTsKKwlzdHJidWZfaW5pdCgmY2ktPmNvbW1pdHRlcl90eiwgMCk7CisJc3RyYnVmX2luaXQoJmNpLT5zdW1tYXJ5LCAwKTsKK30KKworc3RhdGljIHZvaWQgY29tbWl0X2luZm9fZGVzdHJveShzdHJ1Y3QgY29tbWl0X2luZm8gKmNpKQoreworCisJc3RyYnVmX3JlbGVhc2UoJmNpLT5hdXRob3IpOworCXN0cmJ1Zl9yZWxlYXNlKCZjaS0+YXV0aG9yX21haWwpOworCXN0cmJ1Zl9yZWxlYXNlKCZjaS0+YXV0aG9yX3R6KTsKKwlzdHJidWZfcmVsZWFzZSgmY2ktPmNvbW1pdHRlcik7CisJc3RyYnVmX3JlbGVhc2UoJmNpLT5jb21taXR0ZXJfbWFpbCk7CisJc3RyYnVmX3JlbGVhc2UoJmNpLT5jb21taXR0ZXJfdHopOworCXN0cmJ1Zl9yZWxlYXNlKCZjaS0+c3VtbWFyeSk7CiB9CiAKIHN0YXRpYyB2b2lkIGdldF9jb21taXRfaW5mbyhzdHJ1Y3QgY29tbWl0ICpjb21taXQsCkBAIC0xNDI3LDU3ICsxNDI0LDMzIEBACiAJCQkgICAgaW50IGRldGFpbGVkKQogewogCWludCBsZW47Ci0JY29uc3QgY2hhciAqc3ViamVjdDsKLQljaGFyICpyZWVuY29kZWQsICptZXNzYWdlOwotCXN0YXRpYyBjaGFyIGF1dGhvcl9uYW1lWzEwMjRdOwotCXN0YXRpYyBjaGFyIGF1dGhvcl9tYWlsWzEwMjRdOwotCXN0YXRpYyBjaGFyIGNvbW1pdHRlcl9uYW1lWzEwMjRdOwotCXN0YXRpYyBjaGFyIGNvbW1pdHRlcl9tYWlsWzEwMjRdOwotCXN0YXRpYyBjaGFyIHN1bW1hcnlfYnVmWzEwMjRdOworCWNvbnN0IGNoYXIgKnN1YmplY3QsICplbmNvZGluZzsKKwljaGFyICptZXNzYWdlOwogCi0JLyoKLQkgKiBXZSd2ZSBvcGVyYXRlZCB3aXRob3V0IHNhdmVfY29tbWl0X2J1ZmZlciwgc28KLQkgKiB3ZSBub3cgbmVlZCB0byBwb3B1bGF0ZSB0aGVtIGZvciBvdXRwdXQuCi0JICovCi0JaWYgKCFjb21taXQtPmJ1ZmZlcikgewotCQllbnVtIG9iamVjdF90eXBlIHR5cGU7Ci0JCXVuc2lnbmVkIGxvbmcgc2l6ZTsKLQkJY29tbWl0LT5idWZmZXIgPQotCQkJcmVhZF9zaGExX2ZpbGUoY29tbWl0LT5vYmplY3Quc2hhMSwgJnR5cGUsICZzaXplKTsKLQkJaWYgKCFjb21taXQtPmJ1ZmZlcikKLQkJCWRpZSgiQ2Fubm90IHJlYWQgY29tbWl0ICVzIiwKLQkJCSAgICBzaGExX3RvX2hleChjb21taXQtPm9iamVjdC5zaGExKSk7Ci0JfQotCXJlZW5jb2RlZCA9IHJlZW5jb2RlX2NvbW1pdF9tZXNzYWdlKGNvbW1pdCwgTlVMTCk7Ci0JbWVzc2FnZSAgID0gcmVlbmNvZGVkID8gcmVlbmNvZGVkIDogY29tbWl0LT5idWZmZXI7Ci0JcmV0LT5hdXRob3IgPSBhdXRob3JfbmFtZTsKLQlyZXQtPmF1dGhvcl9tYWlsID0gYXV0aG9yX21haWw7CisJY29tbWl0X2luZm9faW5pdChyZXQpOworCisJZW5jb2RpbmcgPSBnZXRfbG9nX291dHB1dF9lbmNvZGluZygpOworCW1lc3NhZ2UgPSBsb2dtc2dfcmVlbmNvZGUoY29tbWl0LCBOVUxMLCBlbmNvZGluZyk7CiAJZ2V0X2FjX2xpbmUobWVzc2FnZSwgIlxuYXV0aG9yICIsCi0JCSAgICBzaXplb2YoYXV0aG9yX25hbWUpLCBhdXRob3JfbmFtZSwKLQkJICAgIHNpemVvZihhdXRob3JfbWFpbCksIGF1dGhvcl9tYWlsLAorCQkgICAgJnJldC0+YXV0aG9yLCAmcmV0LT5hdXRob3JfbWFpbCwKIAkJICAgICZyZXQtPmF1dGhvcl90aW1lLCAmcmV0LT5hdXRob3JfdHopOwogCiAJaWYgKCFkZXRhaWxlZCkgewotCQlmcmVlKHJlZW5jb2RlZCk7CisJCWxvZ21zZ19mcmVlKG1lc3NhZ2UsIGNvbW1pdCk7CiAJCXJldHVybjsKIAl9CiAKLQlyZXQtPmNvbW1pdHRlciA9IGNvbW1pdHRlcl9uYW1lOwotCXJldC0+Y29tbWl0dGVyX21haWwgPSBjb21taXR0ZXJfbWFpbDsKIAlnZXRfYWNfbGluZShtZXNzYWdlLCAiXG5jb21taXR0ZXIgIiwKLQkJICAgIHNpemVvZihjb21taXR0ZXJfbmFtZSksIGNvbW1pdHRlcl9uYW1lLAotCQkgICAgc2l6ZW9mKGNvbW1pdHRlcl9tYWlsKSwgY29tbWl0dGVyX21haWwsCisJCSAgICAmcmV0LT5jb21taXR0ZXIsICZyZXQtPmNvbW1pdHRlcl9tYWlsLAogCQkgICAgJnJldC0+Y29tbWl0dGVyX3RpbWUsICZyZXQtPmNvbW1pdHRlcl90eik7CiAKLQlyZXQtPnN1bW1hcnkgPSBzdW1tYXJ5X2J1ZjsKIAlsZW4gPSBmaW5kX2NvbW1pdF9zdWJqZWN0KG1lc3NhZ2UsICZzdWJqZWN0KTsKLQlpZiAobGVuICYmIGxlbiA8IHNpemVvZihzdW1tYXJ5X2J1ZikpIHsKLQkJbWVtY3B5KHN1bW1hcnlfYnVmLCBzdWJqZWN0LCBsZW4pOwotCQlzdW1tYXJ5X2J1ZltsZW5dID0gMDsKLQl9IGVsc2UgewotCQlzcHJpbnRmKHN1bW1hcnlfYnVmLCAiKCVzKSIsIHNoYTFfdG9faGV4KGNvbW1pdC0+b2JqZWN0LnNoYTEpKTsKLQl9Ci0JZnJlZShyZWVuY29kZWQpOworCWlmIChsZW4pCisJCXN0cmJ1Zl9hZGQoJnJldC0+c3VtbWFyeSwgc3ViamVjdCwgbGVuKTsKKwllbHNlCisJCXN0cmJ1Zl9hZGRmKCZyZXQtPnN1bW1hcnksICIoJXMpIiwgc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSkpOworCisJbG9nbXNnX2ZyZWUobWVzc2FnZSwgY29tbWl0KTsKIH0KIAogLyoKQEAgLTE1MDUsMTUgKzE0NzgsMTUgQEAKIAogCXN1c3BlY3QtPmNvbW1pdC0+b2JqZWN0LmZsYWdzIHw9IE1FVEFJTkZPX1NIT1dOOwogCWdldF9jb21taXRfaW5mbyhzdXNwZWN0LT5jb21taXQsICZjaSwgMSk7Ci0JcHJpbnRmKCJhdXRob3IgJXNcbiIsIGNpLmF1dGhvcik7Ci0JcHJpbnRmKCJhdXRob3ItbWFpbCAlc1xuIiwgY2kuYXV0aG9yX21haWwpOworCXByaW50ZigiYXV0aG9yICVzXG4iLCBjaS5hdXRob3IuYnVmKTsKKwlwcmludGYoImF1dGhvci1tYWlsICVzXG4iLCBjaS5hdXRob3JfbWFpbC5idWYpOwogCXByaW50ZigiYXV0aG9yLXRpbWUgJWx1XG4iLCBjaS5hdXRob3JfdGltZSk7Ci0JcHJpbnRmKCJhdXRob3ItdHogJXNcbiIsIGNpLmF1dGhvcl90eik7Ci0JcHJpbnRmKCJjb21taXR0ZXIgJXNcbiIsIGNpLmNvbW1pdHRlcik7Ci0JcHJpbnRmKCJjb21taXR0ZXItbWFpbCAlc1xuIiwgY2kuY29tbWl0dGVyX21haWwpOworCXByaW50ZigiYXV0aG9yLXR6ICVzXG4iLCBjaS5hdXRob3JfdHouYnVmKTsKKwlwcmludGYoImNvbW1pdHRlciAlc1xuIiwgY2kuY29tbWl0dGVyLmJ1Zik7CisJcHJpbnRmKCJjb21taXR0ZXItbWFpbCAlc1xuIiwgY2kuY29tbWl0dGVyX21haWwuYnVmKTsKIAlwcmludGYoImNvbW1pdHRlci10aW1lICVsdVxuIiwgY2kuY29tbWl0dGVyX3RpbWUpOwotCXByaW50ZigiY29tbWl0dGVyLXR6ICVzXG4iLCBjaS5jb21taXR0ZXJfdHopOwotCXByaW50Zigic3VtbWFyeSAlc1xuIiwgY2kuc3VtbWFyeSk7CisJcHJpbnRmKCJjb21taXR0ZXItdHogJXNcbiIsIGNpLmNvbW1pdHRlcl90ei5idWYpOworCXByaW50Zigic3VtbWFyeSAlc1xuIiwgY2kuc3VtbWFyeS5idWYpOwogCWlmIChzdXNwZWN0LT5jb21taXQtPm9iamVjdC5mbGFncyAmIFVOSU5URVJFU1RJTkcpCiAJCXByaW50ZigiYm91bmRhcnlcbiIpOwogCWlmIChzdXNwZWN0LT5wcmV2aW91cykgewpAQCAtMTUyMSw2ICsxNDk0LDkgQEAKIAkJcHJpbnRmKCJwcmV2aW91cyAlcyAiLCBzaGExX3RvX2hleChwcmV2LT5jb21taXQtPm9iamVjdC5zaGExKSk7CiAJCXdyaXRlX25hbWVfcXVvdGVkKHByZXYtPnBhdGgsIHN0ZG91dCwgJ1xuJyk7CiAJfQorCisJY29tbWl0X2luZm9fZGVzdHJveSgmY2kpOworCiAJcmV0dXJuIDE7CiB9CiAKQEAgLTE3MDcsMTEgKzE2ODMsMTEgQEAKIAkJaWYgKG9wdCAmIE9VVFBVVF9BTk5PVEFURV9DT01QQVQpIHsKIAkJCWNvbnN0IGNoYXIgKm5hbWU7CiAJCQlpZiAob3B0ICYgT1VUUFVUX1NIT1dfRU1BSUwpCi0JCQkJbmFtZSA9IGNpLmF1dGhvcl9tYWlsOworCQkJCW5hbWUgPSBjaS5hdXRob3JfbWFpbC5idWY7CiAJCQllbHNlCi0JCQkJbmFtZSA9IGNpLmF1dGhvcjsKKwkJCQluYW1lID0gY2kuYXV0aG9yLmJ1ZjsKIAkJCXByaW50ZigiXHQoJTEwc1x0JTEwc1x0JWQpIiwgbmFtZSwKLQkJCSAgICAgICBmb3JtYXRfdGltZShjaS5hdXRob3JfdGltZSwgY2kuYXV0aG9yX3R6LAorCQkJICAgICAgIGZvcm1hdF90aW1lKGNpLmF1dGhvcl90aW1lLCBjaS5hdXRob3JfdHouYnVmLAogCQkJCQkgICBzaG93X3Jhd190aW1lKSwKIAkJCSAgICAgICBlbnQtPmxubyArIDEgKyBjbnQpOwogCQl9IGVsc2UgewpAQCAtMTczMCwxNCArMTcwNiwxNCBAQAogCQkJCWNvbnN0IGNoYXIgKm5hbWU7CiAJCQkJaW50IHBhZDsKIAkJCQlpZiAob3B0ICYgT1VUUFVUX1NIT1dfRU1BSUwpCi0JCQkJCW5hbWUgPSBjaS5hdXRob3JfbWFpbDsKKwkJCQkJbmFtZSA9IGNpLmF1dGhvcl9tYWlsLmJ1ZjsKIAkJCQllbHNlCi0JCQkJCW5hbWUgPSBjaS5hdXRob3I7CisJCQkJCW5hbWUgPSBjaS5hdXRob3IuYnVmOwogCQkJCXBhZCA9IGxvbmdlc3RfYXV0aG9yIC0gdXRmOF9zdHJ3aWR0aChuYW1lKTsKIAkJCQlwcmludGYoIiAoJXMlKnMgJTEwcyIsCiAJCQkJICAgICAgIG5hbWUsIHBhZCwgIiIsCiAJCQkJICAgICAgIGZvcm1hdF90aW1lKGNpLmF1dGhvcl90aW1lLAotCQkJCQkJICAgY2kuYXV0aG9yX3R6LAorCQkJCQkJICAgY2kuYXV0aG9yX3R6LmJ1ZiwKIAkJCQkJCSAgIHNob3dfcmF3X3RpbWUpKTsKIAkJCX0KIAkJCXByaW50ZigiICUqZCkgIiwKQEAgLTE3NTIsNiArMTcyOCw4IEBACiAKIAlpZiAoc2ItPmZpbmFsX2J1Zl9zaXplICYmIGNwWy0xXSAhPSAnXG4nKQogCQlwdXRjaGFyKCdcbicpOworCisJY29tbWl0X2luZm9fZGVzdHJveSgmY2kpOwogfQogCiBzdGF0aWMgdm9pZCBvdXRwdXQoc3RydWN0IHNjb3JlYm9hcmQgKnNiLCBpbnQgb3B0aW9uKQpAQCAtMTgzNyw2ICsxODE1LDE2IEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgdXBkYXRlX2F1dG9fYWJicmV2KGludCBhdXRvX2FiYnJldiwgc3RydWN0IG9yaWdpbiAqc3VzcGVjdCkKK3sKKwljb25zdCBjaGFyICp1bmlxID0gZmluZF91bmlxdWVfYWJicmV2KHN1c3BlY3QtPmNvbW1pdC0+b2JqZWN0LnNoYTEsCisJCQkJCSAgICAgIGF1dG9fYWJicmV2KTsKKwlpbnQgbGVuID0gc3RybGVuKHVuaXEpOworCWlmIChhdXRvX2FiYnJldiA8IGxlbikKKwkJcmV0dXJuIGxlbjsKKwlyZXR1cm4gYXV0b19hYmJyZXY7Cit9CisKIC8qCiAgKiBIb3cgbWFueSBjb2x1bW5zIGRvIHdlIG5lZWQgdG8gc2hvdyBsaW5lIG51bWJlcnMsIGF1dGhvcnMsCiAgKiBhbmQgZmlsZW5hbWVzPwpAQCAtMTg0NywxMiArMTgzNSwxNiBAQAogCWludCBsb25nZXN0X2RzdF9saW5lcyA9IDA7CiAJdW5zaWduZWQgbGFyZ2VzdF9zY29yZSA9IDA7CiAJc3RydWN0IGJsYW1lX2VudHJ5ICplOworCWludCBjb21wdXRlX2F1dG9fYWJicmV2ID0gKGFiYnJldiA8IDApOworCWludCBhdXRvX2FiYnJldiA9IGRlZmF1bHRfYWJicmV2OwogCiAJZm9yIChlID0gc2ItPmVudDsgZTsgZSA9IGUtPm5leHQpIHsKIAkJc3RydWN0IG9yaWdpbiAqc3VzcGVjdCA9IGUtPnN1c3BlY3Q7CiAJCXN0cnVjdCBjb21taXRfaW5mbyBjaTsKIAkJaW50IG51bTsKIAorCQlpZiAoY29tcHV0ZV9hdXRvX2FiYnJldikKKwkJCWF1dG9fYWJicmV2ID0gdXBkYXRlX2F1dG9fYWJicmV2KGF1dG9fYWJicmV2LCBzdXNwZWN0KTsKIAkJaWYgKHN0cmNtcChzdXNwZWN0LT5wYXRoLCBzYi0+cGF0aCkpCiAJCQkqb3B0aW9uIHw9IE9VVFBVVF9TSE9XX05BTUU7CiAJCW51bSA9IHN0cmxlbihzdXNwZWN0LT5wYXRoKTsKQEAgLTE4NjIsOSArMTg1NCw5IEBACiAJCQlzdXNwZWN0LT5jb21taXQtPm9iamVjdC5mbGFncyB8PSBNRVRBSU5GT19TSE9XTjsKIAkJCWdldF9jb21taXRfaW5mbyhzdXNwZWN0LT5jb21taXQsICZjaSwgMSk7CiAJCQlpZiAoKm9wdGlvbiAmIE9VVFBVVF9TSE9XX0VNQUlMKQotCQkJCW51bSA9IHV0Zjhfc3Ryd2lkdGgoY2kuYXV0aG9yX21haWwpOworCQkJCW51bSA9IHV0Zjhfc3Ryd2lkdGgoY2kuYXV0aG9yX21haWwuYnVmKTsKIAkJCWVsc2UKLQkJCQludW0gPSB1dGY4X3N0cndpZHRoKGNpLmF1dGhvcik7CisJCQkJbnVtID0gdXRmOF9zdHJ3aWR0aChjaS5hdXRob3IuYnVmKTsKIAkJCWlmIChsb25nZXN0X2F1dGhvciA8IG51bSkKIAkJCQlsb25nZXN0X2F1dGhvciA9IG51bTsKIAkJfQpAQCAtMTg3NiwxMCArMTg2OCwxNiBAQAogCQkJbG9uZ2VzdF9kc3RfbGluZXMgPSBudW07CiAJCWlmIChsYXJnZXN0X3Njb3JlIDwgZW50X3Njb3JlKHNiLCBlKSkKIAkJCWxhcmdlc3Rfc2NvcmUgPSBlbnRfc2NvcmUoc2IsIGUpOworCisJCWNvbW1pdF9pbmZvX2Rlc3Ryb3koJmNpKTsKIAl9CiAJbWF4X29yaWdfZGlnaXRzID0gZGVjaW1hbF93aWR0aChsb25nZXN0X3NyY19saW5lcyk7CiAJbWF4X2RpZ2l0cyA9IGRlY2ltYWxfd2lkdGgobG9uZ2VzdF9kc3RfbGluZXMpOwogCW1heF9zY29yZV9kaWdpdHMgPSBkZWNpbWFsX3dpZHRoKGxhcmdlc3Rfc2NvcmUpOworCisJaWYgKGNvbXB1dGVfYXV0b19hYmJyZXYpCisJCS8qIG9uZSBtb3JlIGFiYnJldiBsZW5ndGggaXMgbmVlZGVkIGZvciB0aGUgYm91bmRhcnkgY29tbWl0ICovCisJCWFiYnJldiA9IGF1dG9fYWJicmV2ICsgMTsKIH0KIAogLyoKQEAgLTIwNTMsNiArMjA1MSw1NSBAQAogCXJldHVybiBnaXRfZGVmYXVsdF9jb25maWcodmFyLCB2YWx1ZSwgY2IpOwogfQogCitzdGF0aWMgdm9pZCB2ZXJpZnlfd29ya2luZ190cmVlX3BhdGgoc3RydWN0IGNvbW1pdCAqd29ya190cmVlLCBjb25zdCBjaGFyICpwYXRoKQoreworCXN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50czsKKworCWZvciAocGFyZW50cyA9IHdvcmtfdHJlZS0+cGFyZW50czsgcGFyZW50czsgcGFyZW50cyA9IHBhcmVudHMtPm5leHQpIHsKKwkJY29uc3QgdW5zaWduZWQgY2hhciAqY29tbWl0X3NoYTEgPSBwYXJlbnRzLT5pdGVtLT5vYmplY3Quc2hhMTsKKwkJdW5zaWduZWQgY2hhciBibG9iX3NoYTFbMjBdOworCQl1bnNpZ25lZCBtb2RlOworCisJCWlmICghZ2V0X3RyZWVfZW50cnkoY29tbWl0X3NoYTEsIHBhdGgsIGJsb2Jfc2hhMSwgJm1vZGUpICYmCisJCSAgICBzaGExX29iamVjdF9pbmZvKGJsb2Jfc2hhMSwgTlVMTCkgPT0gT0JKX0JMT0IpCisJCQlyZXR1cm47CisJfQorCWRpZSgibm8gc3VjaCBwYXRoICclcycgaW4gSEVBRCIsIHBhdGgpOworfQorCitzdGF0aWMgc3RydWN0IGNvbW1pdF9saXN0ICoqYXBwZW5kX3BhcmVudChzdHJ1Y3QgY29tbWl0X2xpc3QgKip0YWlsLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKQoreworCXN0cnVjdCBjb21taXQgKnBhcmVudDsKKworCXBhcmVudCA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlKHNoYTEpOworCWlmICghcGFyZW50KQorCQlkaWUoIm5vIHN1Y2ggY29tbWl0ICVzIiwgc2hhMV90b19oZXgoc2hhMSkpOworCXJldHVybiAmY29tbWl0X2xpc3RfaW5zZXJ0KHBhcmVudCwgdGFpbCktPm5leHQ7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZF9tZXJnZV9wYXJlbnRzKHN0cnVjdCBjb21taXRfbGlzdCAqKnRhaWwpCit7CisJaW50IG1lcmdlX2hlYWQ7CisJY29uc3QgY2hhciAqbWVyZ2VfaGVhZF9maWxlID0gZ2l0X3BhdGgoIk1FUkdFX0hFQUQiKTsKKwlzdHJ1Y3Qgc3RyYnVmIGxpbmUgPSBTVFJCVUZfSU5JVDsKKworCW1lcmdlX2hlYWQgPSBvcGVuKG1lcmdlX2hlYWRfZmlsZSwgT19SRE9OTFkpOworCWlmIChtZXJnZV9oZWFkIDwgMCkgeworCQlpZiAoZXJybm8gPT0gRU5PRU5UKQorCQkJcmV0dXJuOworCQlkaWUoImNhbm5vdCBvcGVuICclcycgZm9yIHJlYWRpbmciLCBtZXJnZV9oZWFkX2ZpbGUpOworCX0KKworCXdoaWxlICghc3RyYnVmX2dldHdob2xlbGluZV9mZCgmbGluZSwgbWVyZ2VfaGVhZCwgJ1xuJykpIHsKKwkJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKKwkJaWYgKGxpbmUubGVuIDwgNDAgfHwgZ2V0X3NoYTFfaGV4KGxpbmUuYnVmLCBzaGExKSkKKwkJCWRpZSgidW5rbm93biBsaW5lIGluICclcyc6ICVzIiwgbWVyZ2VfaGVhZF9maWxlLCBsaW5lLmJ1Zik7CisJCXRhaWwgPSBhcHBlbmRfcGFyZW50KHRhaWwsIHNoYTEpOworCX0KKwljbG9zZShtZXJnZV9oZWFkKTsKKwlzdHJidWZfcmVsZWFzZSgmbGluZSk7Cit9CisKIC8qCiAgKiBQcmVwYXJlIGEgZHVtbXkgY29tbWl0IHRoYXQgcmVwcmVzZW50cyB0aGUgd29yayB0cmVlIChvciBzdGFnZWQpIGl0ZW0uCiAgKiBOb3RlIHRoYXQgYW5ub3RhdGluZyB3b3JrIHRyZWUgaXRlbSBuZXZlciB3b3JrcyBpbiB0aGUgcmV2ZXJzZS4KQEAgLTIwNjMsNiArMjExMCw3IEBACiB7CiAJc3RydWN0IGNvbW1pdCAqY29tbWl0OwogCXN0cnVjdCBvcmlnaW4gKm9yaWdpbjsKKwlzdHJ1Y3QgY29tbWl0X2xpc3QgKipwYXJlbnRfdGFpbCwgKnBhcmVudDsKIAl1bnNpZ25lZCBjaGFyIGhlYWRfc2hhMVsyMF07CiAJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAljb25zdCBjaGFyICppZGVudDsKQEAgLTIwNzAsMjAgKzIxMTgsMzggQEAKIAlpbnQgc2l6ZSwgbGVuOwogCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2U7CiAJdW5zaWduZWQgbW9kZTsKLQotCWlmIChnZXRfc2hhMSgiSEVBRCIsIGhlYWRfc2hhMSkpCi0JCWRpZSgiTm8gc3VjaCByZWY6IEhFQUQiKTsKKwlzdHJ1Y3Qgc3RyYnVmIG1zZyA9IFNUUkJVRl9JTklUOwogCiAJdGltZSgmbm93KTsKIAljb21taXQgPSB4Y2FsbG9jKDEsIHNpemVvZigqY29tbWl0KSk7Ci0JY29tbWl0LT5wYXJlbnRzID0geGNhbGxvYygxLCBzaXplb2YoKmNvbW1pdC0+cGFyZW50cykpOwotCWNvbW1pdC0+cGFyZW50cy0+aXRlbSA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlKGhlYWRfc2hhMSk7CiAJY29tbWl0LT5vYmplY3QucGFyc2VkID0gMTsKIAljb21taXQtPmRhdGUgPSBub3c7CiAJY29tbWl0LT5vYmplY3QudHlwZSA9IE9CSl9DT01NSVQ7CisJcGFyZW50X3RhaWwgPSAmY29tbWl0LT5wYXJlbnRzOworCisJaWYgKCFyZXNvbHZlX3JlZl91bnNhZmUoIkhFQUQiLCBoZWFkX3NoYTEsIDEsIE5VTEwpKQorCQlkaWUoIm5vIHN1Y2ggcmVmOiBIRUFEIik7CisKKwlwYXJlbnRfdGFpbCA9IGFwcGVuZF9wYXJlbnQocGFyZW50X3RhaWwsIGhlYWRfc2hhMSk7CisJYXBwZW5kX21lcmdlX3BhcmVudHMocGFyZW50X3RhaWwpOworCXZlcmlmeV93b3JraW5nX3RyZWVfcGF0aChjb21taXQsIHBhdGgpOwogCiAJb3JpZ2luID0gbWFrZV9vcmlnaW4oY29tbWl0LCBwYXRoKTsKIAorCWlkZW50ID0gZm10X2lkZW50KCJOb3QgQ29tbWl0dGVkIFlldCIsICJub3QuY29tbWl0dGVkLnlldCIsIE5VTEwsIDApOworCXN0cmJ1Zl9hZGRzdHIoJm1zZywgInRyZWUgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFxuIik7CisJZm9yIChwYXJlbnQgPSBjb21taXQtPnBhcmVudHM7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5uZXh0KQorCQlzdHJidWZfYWRkZigmbXNnLCAicGFyZW50ICVzXG4iLAorCQkJICAgIHNoYTFfdG9faGV4KHBhcmVudC0+aXRlbS0+b2JqZWN0LnNoYTEpKTsKKwlzdHJidWZfYWRkZigmbXNnLAorCQkgICAgImF1dGhvciAlc1xuIgorCQkgICAgImNvbW1pdHRlciAlc1xuXG4iCisJCSAgICAiVmVyc2lvbiBvZiAlcyBmcm9tICVzXG4iLAorCQkgICAgaWRlbnQsIGlkZW50LCBwYXRoLAorCQkgICAgKCFjb250ZW50c19mcm9tID8gcGF0aCA6CisJCSAgICAgKCFzdHJjbXAoY29udGVudHNfZnJvbSwgIi0iKSA/ICJzdGFuZGFyZCBpbnB1dCIgOiBjb250ZW50c19mcm9tKSkpOworCWNvbW1pdC0+YnVmZmVyID0gc3RyYnVmX2RldGFjaCgmbXNnLCBOVUxMKTsKKwogCWlmICghY29udGVudHNfZnJvbSB8fCBzdHJjbXAoIi0iLCBjb250ZW50c19mcm9tKSkgewogCQlzdHJ1Y3Qgc3RhdCBzdDsKIAkJY29uc3QgY2hhciAqcmVhZF9mcm9tOwpAQCAtMjEwNSw3ICsyMTcxLDcgQEAKIAkJc3dpdGNoIChzdC5zdF9tb2RlICYgU19JRk1UKSB7CiAJCWNhc2UgU19JRlJFRzoKIAkJCWlmIChESUZGX09QVF9UU1Qob3B0LCBBTExPV19URVhUQ09OVikgJiYKLQkJCSAgICB0ZXh0Y29udl9vYmplY3QocmVhZF9mcm9tLCBtb2RlLCBudWxsX3NoYTEsICZidWZfcHRyLCAmYnVmX2xlbikpCisJCQkgICAgdGV4dGNvbnZfb2JqZWN0KHJlYWRfZnJvbSwgbW9kZSwgbnVsbF9zaGExLCAwLCAmYnVmX3B0ciwgJmJ1Zl9sZW4pKQogCQkJCXN0cmJ1Zl9hdHRhY2goJmJ1ZiwgYnVmX3B0ciwgYnVmX2xlbiwgYnVmX2xlbiArIDEpOwogCQkJZWxzZSBpZiAoc3RyYnVmX3JlYWRfZmlsZSgmYnVmLCByZWFkX2Zyb20sIHN0LnN0X3NpemUpICE9IHN0LnN0X3NpemUpCiAJCQkJZGllX2Vycm5vKCJjYW5ub3Qgb3BlbiBvciByZWFkICclcyciLCByZWFkX2Zyb20pOwpAQCAtMjEyMCw3ICsyMTg2LDYgQEAKIAl9CiAJZWxzZSB7CiAJCS8qIFJlYWRpbmcgZnJvbSBzdGRpbiAqLwotCQljb250ZW50c19mcm9tID0gInN0YW5kYXJkIGlucHV0IjsKIAkJbW9kZSA9IDA7CiAJCWlmIChzdHJidWZfcmVhZCgmYnVmLCAwLCAwKSA8IDApCiAJCQlkaWVfZXJybm8oImZhaWxlZCB0byByZWFkIGZyb20gc3RkaW4iKTsKQEAgLTIxNTMsNyArMjIxOCw4IEBACiAJY2UgPSB4Y2FsbG9jKDEsIHNpemUpOwogCWhhc2hjcHkoY2UtPnNoYTEsIG9yaWdpbi0+YmxvYl9zaGExKTsKIAltZW1jcHkoY2UtPm5hbWUsIHBhdGgsIGxlbik7Ci0JY2UtPmNlX2ZsYWdzID0gY3JlYXRlX2NlX2ZsYWdzKGxlbiwgMCk7CisJY2UtPmNlX2ZsYWdzID0gY3JlYXRlX2NlX2ZsYWdzKDApOworCWNlLT5jZV9uYW1lbGVuID0gbGVuOwogCWNlLT5jZV9tb2RlID0gY3JlYXRlX2NlX21vZGUobW9kZSk7CiAJYWRkX2NhY2hlX2VudHJ5KGNlLCBBRERfQ0FDSEVfT0tfVE9fQUREfEFERF9DQUNIRV9PS19UT19SRVBMQUNFKTsKIApAQCAtMjE2NCwxNiArMjIzMCw2IEBACiAJICovCiAJY2FjaGVfdHJlZV9pbnZhbGlkYXRlX3BhdGgoYWN0aXZlX2NhY2hlX3RyZWUsIHBhdGgpOwogCi0JY29tbWl0LT5idWZmZXIgPSB4bWFsbG9jKDQwMCk7Ci0JaWRlbnQgPSBmbXRfaWRlbnQoIk5vdCBDb21taXR0ZWQgWWV0IiwgIm5vdC5jb21taXR0ZWQueWV0IiwgTlVMTCwgMCk7Ci0Jc25wcmludGYoY29tbWl0LT5idWZmZXIsIDQwMCwKLQkJInRyZWUgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFxuIgotCQkicGFyZW50ICVzXG4iCi0JCSJhdXRob3IgJXNcbiIKLQkJImNvbW1pdHRlciAlc1xuXG4iCi0JCSJWZXJzaW9uIG9mICVzIGZyb20gJXNcbiIsCi0JCXNoYTFfdG9faGV4KGhlYWRfc2hhMSksCi0JCWlkZW50LCBpZGVudCwgcGF0aCwgY29udGVudHNfZnJvbSA/IGNvbnRlbnRzX2Zyb20gOiBwYXRoKTsKIAlyZXR1cm4gY29tbWl0OwogfQogCkBAIC0yMjk2LDI3ICsyMzUyLDI3IEBACiAJc3RhdGljIGNvbnN0IGNoYXIgKnJldnNfZmlsZSA9IE5VTEw7CiAJc3RhdGljIGNvbnN0IGNoYXIgKmNvbnRlbnRzX2Zyb20gPSBOVUxMOwogCXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKLQkJT1BUX0JPT0xFQU4oMCwgImluY3JlbWVudGFsIiwgJmluY3JlbWVudGFsLCAiU2hvdyBibGFtZSBlbnRyaWVzIGFzIHdlIGZpbmQgdGhlbSwgaW5jcmVtZW50YWxseSIpLAotCQlPUFRfQk9PTEVBTignYicsIE5VTEwsICZibGFua19ib3VuZGFyeSwgIlNob3cgYmxhbmsgU0hBLTEgZm9yIGJvdW5kYXJ5IGNvbW1pdHMgKERlZmF1bHQ6IG9mZikiKSwKLQkJT1BUX0JPT0xFQU4oMCwgInJvb3QiLCAmc2hvd19yb290LCAiRG8gbm90IHRyZWF0IHJvb3QgY29tbWl0cyBhcyBib3VuZGFyaWVzIChEZWZhdWx0OiBvZmYpIiksCi0JCU9QVF9CT09MRUFOKDAsICJzaG93LXN0YXRzIiwgJnNob3dfc3RhdHMsICJTaG93IHdvcmsgY29zdCBzdGF0aXN0aWNzIiksCi0JCU9QVF9CSVQoMCwgInNjb3JlLWRlYnVnIiwgJm91dHB1dF9vcHRpb24sICJTaG93IG91dHB1dCBzY29yZSBmb3IgYmxhbWUgZW50cmllcyIsIE9VVFBVVF9TSE9XX1NDT1JFKSwKLQkJT1BUX0JJVCgnZicsICJzaG93LW5hbWUiLCAmb3V0cHV0X29wdGlvbiwgIlNob3cgb3JpZ2luYWwgZmlsZW5hbWUgKERlZmF1bHQ6IGF1dG8pIiwgT1VUUFVUX1NIT1dfTkFNRSksCi0JCU9QVF9CSVQoJ24nLCAic2hvdy1udW1iZXIiLCAmb3V0cHV0X29wdGlvbiwgIlNob3cgb3JpZ2luYWwgbGluZW51bWJlciAoRGVmYXVsdDogb2ZmKSIsIE9VVFBVVF9TSE9XX05VTUJFUiksCi0JCU9QVF9CSVQoJ3AnLCAicG9yY2VsYWluIiwgJm91dHB1dF9vcHRpb24sICJTaG93IGluIGEgZm9ybWF0IGRlc2lnbmVkIGZvciBtYWNoaW5lIGNvbnN1bXB0aW9uIiwgT1VUUFVUX1BPUkNFTEFJTiksCi0JCU9QVF9CSVQoMCwgImxpbmUtcG9yY2VsYWluIiwgJm91dHB1dF9vcHRpb24sICJTaG93IHBvcmNlbGFpbiBmb3JtYXQgd2l0aCBwZXItbGluZSBjb21taXQgaW5mb3JtYXRpb24iLCBPVVRQVVRfUE9SQ0VMQUlOfE9VVFBVVF9MSU5FX1BPUkNFTEFJTiksCi0JCU9QVF9CSVQoJ2MnLCBOVUxMLCAmb3V0cHV0X29wdGlvbiwgIlVzZSB0aGUgc2FtZSBvdXRwdXQgbW9kZSBhcyBnaXQtYW5ub3RhdGUgKERlZmF1bHQ6IG9mZikiLCBPVVRQVVRfQU5OT1RBVEVfQ09NUEFUKSwKLQkJT1BUX0JJVCgndCcsIE5VTEwsICZvdXRwdXRfb3B0aW9uLCAiU2hvdyByYXcgdGltZXN0YW1wIChEZWZhdWx0OiBvZmYpIiwgT1VUUFVUX1JBV19USU1FU1RBTVApLAotCQlPUFRfQklUKCdsJywgTlVMTCwgJm91dHB1dF9vcHRpb24sICJTaG93IGxvbmcgY29tbWl0IFNIQTEgKERlZmF1bHQ6IG9mZikiLCBPVVRQVVRfTE9OR19PQkpFQ1RfTkFNRSksCi0JCU9QVF9CSVQoJ3MnLCBOVUxMLCAmb3V0cHV0X29wdGlvbiwgIlN1cHByZXNzIGF1dGhvciBuYW1lIGFuZCB0aW1lc3RhbXAgKERlZmF1bHQ6IG9mZikiLCBPVVRQVVRfTk9fQVVUSE9SKSwKLQkJT1BUX0JJVCgnZScsICJzaG93LWVtYWlsIiwgJm91dHB1dF9vcHRpb24sICJTaG93IGF1dGhvciBlbWFpbCBpbnN0ZWFkIG9mIG5hbWUgKERlZmF1bHQ6IG9mZikiLCBPVVRQVVRfU0hPV19FTUFJTCksCi0JCU9QVF9CSVQoJ3cnLCBOVUxMLCAmeGRsX29wdHMsICJJZ25vcmUgd2hpdGVzcGFjZSBkaWZmZXJlbmNlcyIsIFhERl9JR05PUkVfV0hJVEVTUEFDRSksCi0JCU9QVF9CSVQoMCwgIm1pbmltYWwiLCAmeGRsX29wdHMsICJTcGVuZCBleHRyYSBjeWNsZXMgdG8gZmluZCBiZXR0ZXIgbWF0Y2giLCBYREZfTkVFRF9NSU5JTUFMKSwKLQkJT1BUX1NUUklORygnUycsIE5VTEwsICZyZXZzX2ZpbGUsICJmaWxlIiwgIlVzZSByZXZpc2lvbnMgZnJvbSA8ZmlsZT4gaW5zdGVhZCBvZiBjYWxsaW5nIGdpdC1yZXYtbGlzdCIpLAotCQlPUFRfU1RSSU5HKDAsICJjb250ZW50cyIsICZjb250ZW50c19mcm9tLCAiZmlsZSIsICJVc2UgPGZpbGU+J3MgY29udGVudHMgYXMgdGhlIGZpbmFsIGltYWdlIiksCi0JCXsgT1BUSU9OX0NBTExCQUNLLCAnQycsIE5VTEwsICZvcHQsICJzY29yZSIsICJGaW5kIGxpbmUgY29waWVzIHdpdGhpbiBhbmQgYWNyb3NzIGZpbGVzIiwgUEFSU0VfT1BUX09QVEFSRywgYmxhbWVfY29weV9jYWxsYmFjayB9LAotCQl7IE9QVElPTl9DQUxMQkFDSywgJ00nLCBOVUxMLCAmb3B0LCAic2NvcmUiLCAiRmluZCBsaW5lIG1vdmVtZW50cyB3aXRoaW4gYW5kIGFjcm9zcyBmaWxlcyIsIFBBUlNFX09QVF9PUFRBUkcsIGJsYW1lX21vdmVfY2FsbGJhY2sgfSwKLQkJT1BUX0NBTExCQUNLKCdMJywgTlVMTCwgJmJvdHRvbXRvcCwgIm4sbSIsICJQcm9jZXNzIG9ubHkgbGluZSByYW5nZSBuLG0sIGNvdW50aW5nIGZyb20gMSIsIGJsYW1lX2JvdHRvbXRvcF9jYWxsYmFjayksCisJCU9QVF9CT09MRUFOKDAsICJpbmNyZW1lbnRhbCIsICZpbmNyZW1lbnRhbCwgTl8oIlNob3cgYmxhbWUgZW50cmllcyBhcyB3ZSBmaW5kIHRoZW0sIGluY3JlbWVudGFsbHkiKSksCisJCU9QVF9CT09MRUFOKCdiJywgTlVMTCwgJmJsYW5rX2JvdW5kYXJ5LCBOXygiU2hvdyBibGFuayBTSEEtMSBmb3IgYm91bmRhcnkgY29tbWl0cyAoRGVmYXVsdDogb2ZmKSIpKSwKKwkJT1BUX0JPT0xFQU4oMCwgInJvb3QiLCAmc2hvd19yb290LCBOXygiRG8gbm90IHRyZWF0IHJvb3QgY29tbWl0cyBhcyBib3VuZGFyaWVzIChEZWZhdWx0OiBvZmYpIikpLAorCQlPUFRfQk9PTEVBTigwLCAic2hvdy1zdGF0cyIsICZzaG93X3N0YXRzLCBOXygiU2hvdyB3b3JrIGNvc3Qgc3RhdGlzdGljcyIpKSwKKwkJT1BUX0JJVCgwLCAic2NvcmUtZGVidWciLCAmb3V0cHV0X29wdGlvbiwgTl8oIlNob3cgb3V0cHV0IHNjb3JlIGZvciBibGFtZSBlbnRyaWVzIiksIE9VVFBVVF9TSE9XX1NDT1JFKSwKKwkJT1BUX0JJVCgnZicsICJzaG93LW5hbWUiLCAmb3V0cHV0X29wdGlvbiwgTl8oIlNob3cgb3JpZ2luYWwgZmlsZW5hbWUgKERlZmF1bHQ6IGF1dG8pIiksIE9VVFBVVF9TSE9XX05BTUUpLAorCQlPUFRfQklUKCduJywgInNob3ctbnVtYmVyIiwgJm91dHB1dF9vcHRpb24sIE5fKCJTaG93IG9yaWdpbmFsIGxpbmVudW1iZXIgKERlZmF1bHQ6IG9mZikiKSwgT1VUUFVUX1NIT1dfTlVNQkVSKSwKKwkJT1BUX0JJVCgncCcsICJwb3JjZWxhaW4iLCAmb3V0cHV0X29wdGlvbiwgTl8oIlNob3cgaW4gYSBmb3JtYXQgZGVzaWduZWQgZm9yIG1hY2hpbmUgY29uc3VtcHRpb24iKSwgT1VUUFVUX1BPUkNFTEFJTiksCisJCU9QVF9CSVQoMCwgImxpbmUtcG9yY2VsYWluIiwgJm91dHB1dF9vcHRpb24sIE5fKCJTaG93IHBvcmNlbGFpbiBmb3JtYXQgd2l0aCBwZXItbGluZSBjb21taXQgaW5mb3JtYXRpb24iKSwgT1VUUFVUX1BPUkNFTEFJTnxPVVRQVVRfTElORV9QT1JDRUxBSU4pLAorCQlPUFRfQklUKCdjJywgTlVMTCwgJm91dHB1dF9vcHRpb24sIE5fKCJVc2UgdGhlIHNhbWUgb3V0cHV0IG1vZGUgYXMgZ2l0LWFubm90YXRlIChEZWZhdWx0OiBvZmYpIiksIE9VVFBVVF9BTk5PVEFURV9DT01QQVQpLAorCQlPUFRfQklUKCd0JywgTlVMTCwgJm91dHB1dF9vcHRpb24sIE5fKCJTaG93IHJhdyB0aW1lc3RhbXAgKERlZmF1bHQ6IG9mZikiKSwgT1VUUFVUX1JBV19USU1FU1RBTVApLAorCQlPUFRfQklUKCdsJywgTlVMTCwgJm91dHB1dF9vcHRpb24sIE5fKCJTaG93IGxvbmcgY29tbWl0IFNIQTEgKERlZmF1bHQ6IG9mZikiKSwgT1VUUFVUX0xPTkdfT0JKRUNUX05BTUUpLAorCQlPUFRfQklUKCdzJywgTlVMTCwgJm91dHB1dF9vcHRpb24sIE5fKCJTdXBwcmVzcyBhdXRob3IgbmFtZSBhbmQgdGltZXN0YW1wIChEZWZhdWx0OiBvZmYpIiksIE9VVFBVVF9OT19BVVRIT1IpLAorCQlPUFRfQklUKCdlJywgInNob3ctZW1haWwiLCAmb3V0cHV0X29wdGlvbiwgTl8oIlNob3cgYXV0aG9yIGVtYWlsIGluc3RlYWQgb2YgbmFtZSAoRGVmYXVsdDogb2ZmKSIpLCBPVVRQVVRfU0hPV19FTUFJTCksCisJCU9QVF9CSVQoJ3cnLCBOVUxMLCAmeGRsX29wdHMsIE5fKCJJZ25vcmUgd2hpdGVzcGFjZSBkaWZmZXJlbmNlcyIpLCBYREZfSUdOT1JFX1dISVRFU1BBQ0UpLAorCQlPUFRfQklUKDAsICJtaW5pbWFsIiwgJnhkbF9vcHRzLCBOXygiU3BlbmQgZXh0cmEgY3ljbGVzIHRvIGZpbmQgYmV0dGVyIG1hdGNoIiksIFhERl9ORUVEX01JTklNQUwpLAorCQlPUFRfU1RSSU5HKCdTJywgTlVMTCwgJnJldnNfZmlsZSwgTl8oImZpbGUiKSwgTl8oIlVzZSByZXZpc2lvbnMgZnJvbSA8ZmlsZT4gaW5zdGVhZCBvZiBjYWxsaW5nIGdpdC1yZXYtbGlzdCIpKSwKKwkJT1BUX1NUUklORygwLCAiY29udGVudHMiLCAmY29udGVudHNfZnJvbSwgTl8oImZpbGUiKSwgTl8oIlVzZSA8ZmlsZT4ncyBjb250ZW50cyBhcyB0aGUgZmluYWwgaW1hZ2UiKSksCisJCXsgT1BUSU9OX0NBTExCQUNLLCAnQycsIE5VTEwsICZvcHQsIE5fKCJzY29yZSIpLCBOXygiRmluZCBsaW5lIGNvcGllcyB3aXRoaW4gYW5kIGFjcm9zcyBmaWxlcyIpLCBQQVJTRV9PUFRfT1BUQVJHLCBibGFtZV9jb3B5X2NhbGxiYWNrIH0sCisJCXsgT1BUSU9OX0NBTExCQUNLLCAnTScsIE5VTEwsICZvcHQsIE5fKCJzY29yZSIpLCBOXygiRmluZCBsaW5lIG1vdmVtZW50cyB3aXRoaW4gYW5kIGFjcm9zcyBmaWxlcyIpLCBQQVJTRV9PUFRfT1BUQVJHLCBibGFtZV9tb3ZlX2NhbGxiYWNrIH0sCisJCU9QVF9DQUxMQkFDSygnTCcsIE5VTEwsICZib3R0b210b3AsIE5fKCJuLG0iKSwgTl8oIlByb2Nlc3Mgb25seSBsaW5lIHJhbmdlIG4sbSwgY291bnRpbmcgZnJvbSAxIiksIGJsYW1lX2JvdHRvbXRvcF9jYWxsYmFjayksCiAJCU9QVF9fQUJCUkVWKCZhYmJyZXYpLAogCQlPUFRfRU5EKCkKIAl9OwpAQCAtMjMyOCw2ICsyMzg0LDcgQEAKIAlpbml0X3JldmlzaW9ucygmcmV2cywgTlVMTCk7CiAJcmV2cy5kYXRlX21vZGUgPSBibGFtZV9kYXRlX21vZGU7CiAJRElGRl9PUFRfU0VUKCZyZXZzLmRpZmZvcHQsIEFMTE9XX1RFWFRDT05WKTsKKwlESUZGX09QVF9TRVQoJnJldnMuZGlmZm9wdCwgRk9MTE9XX1JFTkFNRVMpOwogCiAJc2F2ZV9jb21taXRfYnVmZmVyID0gMDsKIAlkYXNoZGFzaF9wb3MgPSAwOwpAQCAtMjM1MSwxMiArMjQwOCwxMyBAQAogCQlwYXJzZV9yZXZpc2lvbl9vcHQoJnJldnMsICZjdHgsIG9wdGlvbnMsIGJsYW1lX29wdF91c2FnZSk7CiAJfQogcGFyc2VfZG9uZToKKwlub193aG9sZV9maWxlX3JlbmFtZSA9ICFESUZGX09QVF9UU1QoJnJldnMuZGlmZm9wdCwgRk9MTE9XX1JFTkFNRVMpOworCURJRkZfT1BUX0NMUigmcmV2cy5kaWZmb3B0LCBGT0xMT1dfUkVOQU1FUyk7CiAJYXJnYyA9IHBhcnNlX29wdGlvbnNfZW5kKCZjdHgpOwogCi0JaWYgKGFiYnJldiA9PSAtMSkKLQkJYWJicmV2ID0gZGVmYXVsdF9hYmJyZXY7Ci0JLyogb25lIG1vcmUgYWJicmV2IGxlbmd0aCBpcyBuZWVkZWQgZm9yIHRoZSBib3VuZGFyeSBjb21taXQgKi8KLQlhYmJyZXYrKzsKKwlpZiAoMCA8IGFiYnJldikKKwkJLyogb25lIG1vcmUgYWJicmV2IGxlbmd0aCBpcyBuZWVkZWQgZm9yIHRoZSBib3VuZGFyeSBjb21taXQgKi8KKwkJYWJicmV2Kys7CiAKIAlpZiAocmV2c19maWxlICYmIHJlYWRfYW5jZXN0cnkocmV2c19maWxlKSkKIAkJZGllX2Vycm5vKCJyZWFkaW5nIGdyYWZ0IGZpbGUgJyVzJyBmYWlsZWQiLCByZXZzX2ZpbGUpOwpAQCAtMjQ5OCw3ICsyNTU2LDcgQEAKIAkJCWRpZSgibm8gc3VjaCBwYXRoICVzIGluICVzIiwgcGF0aCwgZmluYWxfY29tbWl0X25hbWUpOwogCiAJCWlmIChESUZGX09QVF9UU1QoJnNiLnJldnMtPmRpZmZvcHQsIEFMTE9XX1RFWFRDT05WKSAmJgotCQkgICAgdGV4dGNvbnZfb2JqZWN0KHBhdGgsIG8tPm1vZGUsIG8tPmJsb2Jfc2hhMSwgKGNoYXIgKiopICZzYi5maW5hbF9idWYsCisJCSAgICB0ZXh0Y29udl9vYmplY3QocGF0aCwgby0+bW9kZSwgby0+YmxvYl9zaGExLCAxLCAoY2hhciAqKikgJnNiLmZpbmFsX2J1ZiwKIAkJCQkgICAgJnNiLmZpbmFsX2J1Zl9zaXplKSkKIAkJCTsKIAkJZWxzZQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9icmFuY2guYyBiL2J1aWx0aW4vYnJhbmNoLmMKaW5kZXggMGUwNjBmMi4uMDgzNjg5MCAxMDA2NDQKLS0tIGEvYnVpbHRpbi9icmFuY2guYworKysgYi9idWlsdGluL2JyYW5jaC5jCkBAIC0xNywxMiArMTcsMTQgQEAKICNpbmNsdWRlICJyZXZpc2lvbi5oIgogI2luY2x1ZGUgInN0cmluZy1saXN0LmgiCiAjaW5jbHVkZSAiY29sdW1uLmgiCisjaW5jbHVkZSAidXRmOC5oIgorI2luY2x1ZGUgInd0LXN0YXR1cy5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGJ1aWx0aW5fYnJhbmNoX3VzYWdlW10gPSB7Ci0JImdpdCBicmFuY2ggW29wdGlvbnNdIFstciB8IC1hXSBbLS1tZXJnZWQgfCAtLW5vLW1lcmdlZF0iLAotCSJnaXQgYnJhbmNoIFtvcHRpb25zXSBbLWxdIFstZl0gPGJyYW5jaG5hbWU+IFs8c3RhcnQtcG9pbnQ+XSIsCi0JImdpdCBicmFuY2ggW29wdGlvbnNdIFstcl0gKC1kIHwgLUQpIDxicmFuY2huYW1lPi4uLiIsCi0JImdpdCBicmFuY2ggW29wdGlvbnNdICgtbSB8IC1NKSBbPG9sZGJyYW5jaD5dIDxuZXdicmFuY2g+IiwKKwlOXygiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1yIHwgLWFdIFstLW1lcmdlZCB8IC0tbm8tbWVyZ2VkXSIpLAorCU5fKCJnaXQgYnJhbmNoIFtvcHRpb25zXSBbLWxdIFstZl0gPGJyYW5jaG5hbWU+IFs8c3RhcnQtcG9pbnQ+XSIpLAorCU5fKCJnaXQgYnJhbmNoIFtvcHRpb25zXSBbLXJdICgtZCB8IC1EKSA8YnJhbmNobmFtZT4uLi4iKSwKKwlOXygiZ2l0IGJyYW5jaCBbb3B0aW9uc10gKC1tIHwgLU0pIFs8b2xkYnJhbmNoPl0gPG5ld2JyYW5jaD4iKSwKIAlOVUxMCiB9OwogCkBAIC0zOSwxMyArNDEsMTUgQEAKIAlHSVRfQ09MT1JfUkVELAkJLyogUkVNT1RFICovCiAJR0lUX0NPTE9SX05PUk1BTCwJLyogTE9DQUwgKi8KIAlHSVRfQ09MT1JfR1JFRU4sCS8qIENVUlJFTlQgKi8KKwlHSVRfQ09MT1JfQkxVRSwJCS8qIFVQU1RSRUFNICovCiB9OwogZW51bSBjb2xvcl9icmFuY2ggewogCUJSQU5DSF9DT0xPUl9SRVNFVCA9IDAsCiAJQlJBTkNIX0NPTE9SX1BMQUlOID0gMSwKIAlCUkFOQ0hfQ09MT1JfUkVNT1RFID0gMiwKIAlCUkFOQ0hfQ09MT1JfTE9DQUwgPSAzLAotCUJSQU5DSF9DT0xPUl9DVVJSRU5UID0gNAorCUJSQU5DSF9DT0xPUl9DVVJSRU5UID0gNCwKKwlCUkFOQ0hfQ09MT1JfVVBTVFJFQU0gPSA1CiB9OwogCiBzdGF0aWMgZW51bSBtZXJnZV9maWx0ZXIgewpAQCAtNzAsNiArNzQsOCBAQAogCQlyZXR1cm4gQlJBTkNIX0NPTE9SX0xPQ0FMOwogCWlmICghc3RyY2FzZWNtcCh2YXIrb2ZzLCAiY3VycmVudCIpKQogCQlyZXR1cm4gQlJBTkNIX0NPTE9SX0NVUlJFTlQ7CisJaWYgKCFzdHJjYXNlY21wKHZhcitvZnMsICJ1cHN0cmVhbSIpKQorCQlyZXR1cm4gQlJBTkNIX0NPTE9SX1VQU1RSRUFNOwogCXJldHVybiAtMTsKIH0KIApAQCAtMTI5LDcgKzEzNSw3IEBACiAJaWYgKCFyZWZlcmVuY2VfcmV2KQogCQlyZWZlcmVuY2VfcmV2ID0gaGVhZF9yZXY7CiAKLQltZXJnZWQgPSBpbl9tZXJnZV9iYXNlcyhyZXYsICZyZWZlcmVuY2VfcmV2LCAxKTsKKwltZXJnZWQgPSBpbl9tZXJnZV9iYXNlcyhyZXYsIHJlZmVyZW5jZV9yZXYpOwogCiAJLyoKIAkgKiBBZnRlciB0aGUgc2FmZXR5IHZhbHZlIGlzIGZ1bGx5IHJlZGVmaW5lZCB0byAiY2hlY2sgd2l0aApAQCAtMTM5LDcgKzE0NSw3IEBACiAJICogYSBnZW50bGUgcmVtaW5kZXIgaXMgaW4gb3JkZXIuCiAJICovCiAJaWYgKChoZWFkX3JldiAhPSByZWZlcmVuY2VfcmV2KSAmJgotCSAgICBpbl9tZXJnZV9iYXNlcyhyZXYsICZoZWFkX3JldiwgMSkgIT0gbWVyZ2VkKSB7CisJICAgIGluX21lcmdlX2Jhc2VzKHJldiwgaGVhZF9yZXYpICE9IG1lcmdlZCkgewogCQlpZiAobWVyZ2VkKQogCQkJd2FybmluZyhfKCJkZWxldGluZyBicmFuY2ggJyVzJyB0aGF0IGhhcyBiZWVuIG1lcmdlZCB0b1xuIgogCQkJCSIgICAgICAgICAnJXMnLCBidXQgbm90IHlldCBtZXJnZWQgdG8gSEVBRC4iKSwKQEAgLTE1MywxMCArMTU5LDM3IEBACiAJcmV0dXJuIG1lcmdlZDsKIH0KIAorc3RhdGljIGludCBjaGVja19icmFuY2hfY29tbWl0KGNvbnN0IGNoYXIgKmJyYW5jaG5hbWUsIGNvbnN0IGNoYXIgKnJlZm5hbWUsCisJCQkgICAgICAgdW5zaWduZWQgY2hhciAqc2hhMSwgc3RydWN0IGNvbW1pdCAqaGVhZF9yZXYsCisJCQkgICAgICAgaW50IGtpbmRzLCBpbnQgZm9yY2UpCit7CisJc3RydWN0IGNvbW1pdCAqcmV2ID0gbG9va3VwX2NvbW1pdF9yZWZlcmVuY2Uoc2hhMSk7CisJaWYgKCFyZXYpIHsKKwkJZXJyb3IoXygiQ291bGRuJ3QgbG9vayB1cCBjb21taXQgb2JqZWN0IGZvciAnJXMnIiksIHJlZm5hbWUpOworCQlyZXR1cm4gLTE7CisJfQorCWlmICghZm9yY2UgJiYgIWJyYW5jaF9tZXJnZWQoa2luZHMsIGJyYW5jaG5hbWUsIHJldiwgaGVhZF9yZXYpKSB7CisJCWVycm9yKF8oIlRoZSBicmFuY2ggJyVzJyBpcyBub3QgZnVsbHkgbWVyZ2VkLlxuIgorCQkgICAgICAiSWYgeW91IGFyZSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBpdCwgIgorCQkgICAgICAicnVuICdnaXQgYnJhbmNoIC1EICVzJy4iKSwgYnJhbmNobmFtZSwgYnJhbmNobmFtZSk7CisJCXJldHVybiAtMTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGRlbGV0ZV9icmFuY2hfY29uZmlnKGNvbnN0IGNoYXIgKmJyYW5jaG5hbWUpCit7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKKwlzdHJidWZfYWRkZigmYnVmLCAiYnJhbmNoLiVzIiwgYnJhbmNobmFtZSk7CisJaWYgKGdpdF9jb25maWdfcmVuYW1lX3NlY3Rpb24oYnVmLmJ1ZiwgTlVMTCkgPCAwKQorCQl3YXJuaW5nKF8oIlVwZGF0ZSBvZiBjb25maWctZmlsZSBmYWlsZWQiKSk7CisJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7Cit9CisKIHN0YXRpYyBpbnQgZGVsZXRlX2JyYW5jaGVzKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgaW50IGZvcmNlLCBpbnQga2luZHMsCiAJCQkgICBpbnQgcXVpZXQpCiB7Ci0Jc3RydWN0IGNvbW1pdCAqcmV2LCAqaGVhZF9yZXYgPSBOVUxMOworCXN0cnVjdCBjb21taXQgKmhlYWRfcmV2ID0gTlVMTDsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCWNoYXIgKm5hbWUgPSBOVUxMOwogCWNvbnN0IGNoYXIgKmZtdDsKQEAgLTE4Niw2ICsyMTksOSBAQAogCQkJZGllKF8oIkNvdWxkbid0IGxvb2sgdXAgY29tbWl0IG9iamVjdCBmb3IgSEVBRCIpKTsKIAl9CiAJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKywgc3RyYnVmX3JlbGVhc2UoJmJuYW1lKSkgeworCQljb25zdCBjaGFyICp0YXJnZXQ7CisJCWludCBmbGFncyA9IDA7CisKIAkJc3RyYnVmX2JyYW5jaG5hbWUoJmJuYW1lLCBhcmd2W2ldKTsKIAkJaWYgKGtpbmRzID09IFJFRl9MT0NBTF9CUkFOQ0ggJiYgIXN0cmNtcChoZWFkLCBibmFtZS5idWYpKSB7CiAJCQllcnJvcihfKCJDYW5ub3QgZGVsZXRlIHRoZSBicmFuY2ggJyVzJyAiCkBAIC0xOTYsOCArMjMyLDEwIEBACiAKIAkJZnJlZShuYW1lKTsKIAotCQluYW1lID0geHN0cmR1cChta3BhdGgoZm10LCBibmFtZS5idWYpKTsKLQkJaWYgKHJlYWRfcmVmKG5hbWUsIHNoYTEpKSB7CisJCW5hbWUgPSBta3BhdGhkdXAoZm10LCBibmFtZS5idWYpOworCQl0YXJnZXQgPSByZXNvbHZlX3JlZl91bnNhZmUobmFtZSwgc2hhMSwgMCwgJmZsYWdzKTsKKwkJaWYgKCF0YXJnZXQgfHwKKwkJICAgICghKGZsYWdzICYgUkVGX0lTU1lNUkVGKSAmJiBpc19udWxsX3NoYTEoc2hhMSkpKSB7CiAJCQllcnJvcihyZW1vdGVfYnJhbmNoCiAJCQkgICAgICA/IF8oInJlbW90ZSBicmFuY2ggJyVzJyBub3QgZm91bmQuIikKIAkJCSAgICAgIDogXygiYnJhbmNoICclcycgbm90IGZvdW5kLiIpLCBibmFtZS5idWYpOwpAQCAtMjA1LDQwICsyNDMsMzEgQEAKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJcmV2ID0gbG9va3VwX2NvbW1pdF9yZWZlcmVuY2Uoc2hhMSk7Ci0JCWlmICghcmV2KSB7Ci0JCQllcnJvcihfKCJDb3VsZG4ndCBsb29rIHVwIGNvbW1pdCBvYmplY3QgZm9yICclcyciKSwgbmFtZSk7CisJCWlmICghKGZsYWdzICYgUkVGX0lTU1lNUkVGKSAmJgorCQkgICAgY2hlY2tfYnJhbmNoX2NvbW1pdChibmFtZS5idWYsIG5hbWUsIHNoYTEsIGhlYWRfcmV2LCBraW5kcywKKwkJCQkJZm9yY2UpKSB7CiAJCQlyZXQgPSAxOwogCQkJY29udGludWU7CiAJCX0KIAotCQlpZiAoIWZvcmNlICYmICFicmFuY2hfbWVyZ2VkKGtpbmRzLCBibmFtZS5idWYsIHJldiwgaGVhZF9yZXYpKSB7Ci0JCQllcnJvcihfKCJUaGUgYnJhbmNoICclcycgaXMgbm90IGZ1bGx5IG1lcmdlZC5cbiIKLQkJCSAgICAgICJJZiB5b3UgYXJlIHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGl0LCAiCi0JCQkgICAgICAicnVuICdnaXQgYnJhbmNoIC1EICVzJy4iKSwgYm5hbWUuYnVmLCBibmFtZS5idWYpOwotCQkJcmV0ID0gMTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KLQkJaWYgKGRlbGV0ZV9yZWYobmFtZSwgc2hhMSwgMCkpIHsKKwkJaWYgKGRlbGV0ZV9yZWYobmFtZSwgc2hhMSwgUkVGX05PREVSRUYpKSB7CiAJCQllcnJvcihyZW1vdGVfYnJhbmNoCiAJCQkgICAgICA/IF8oIkVycm9yIGRlbGV0aW5nIHJlbW90ZSBicmFuY2ggJyVzJyIpCiAJCQkgICAgICA6IF8oIkVycm9yIGRlbGV0aW5nIGJyYW5jaCAnJXMnIiksCiAJCQkgICAgICBibmFtZS5idWYpOwogCQkJcmV0ID0gMTsKLQkJfSBlbHNlIHsKLQkJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7Ci0JCQlpZiAoIXF1aWV0KQotCQkJCXByaW50ZihyZW1vdGVfYnJhbmNoCi0JCQkJICAgICAgID8gXygiRGVsZXRlZCByZW1vdGUgYnJhbmNoICVzICh3YXMgJXMpLlxuIikKLQkJCQkgICAgICAgOiBfKCJEZWxldGVkIGJyYW5jaCAlcyAod2FzICVzKS5cbiIpLAotCQkJCSAgICAgICBibmFtZS5idWYsCi0JCQkJICAgICAgIGZpbmRfdW5pcXVlX2FiYnJldihzaGExLCBERUZBVUxUX0FCQlJFVikpOwotCQkJc3RyYnVmX2FkZGYoJmJ1ZiwgImJyYW5jaC4lcyIsIGJuYW1lLmJ1Zik7Ci0JCQlpZiAoZ2l0X2NvbmZpZ19yZW5hbWVfc2VjdGlvbihidWYuYnVmLCBOVUxMKSA8IDApCi0JCQkJd2FybmluZyhfKCJVcGRhdGUgb2YgY29uZmlnLWZpbGUgZmFpbGVkIikpOwotCQkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CisJCQljb250aW51ZTsKIAkJfQorCQlpZiAoIXF1aWV0KSB7CisJCQlwcmludGYocmVtb3RlX2JyYW5jaAorCQkJICAgICAgID8gXygiRGVsZXRlZCByZW1vdGUgYnJhbmNoICVzICh3YXMgJXMpLlxuIikKKwkJCSAgICAgICA6IF8oIkRlbGV0ZWQgYnJhbmNoICVzICh3YXMgJXMpLlxuIiksCisJCQkgICAgICAgYm5hbWUuYnVmLAorCQkJICAgICAgIChmbGFncyAmIFJFRl9JU1NZTVJFRikKKwkJCSAgICAgICA/IHRhcmdldAorCQkJICAgICAgIDogZmluZF91bmlxdWVfYWJicmV2KHNoYTEsIERFRkFVTFRfQUJCUkVWKSk7CisJCX0KKwkJZGVsZXRlX2JyYW5jaF9jb25maWcoYm5hbWUuYnVmKTsKIAl9CiAKIAlmcmVlKG5hbWUpOwpAQCAtMjQ5LDcgKzI3OCw3IEBACiBzdHJ1Y3QgcmVmX2l0ZW0gewogCWNoYXIgKm5hbWU7CiAJY2hhciAqZGVzdDsKLQl1bnNpZ25lZCBpbnQga2luZCwgbGVuOworCXVuc2lnbmVkIGludCBraW5kLCB3aWR0aDsKIAlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CiB9OwogCkBAIC0zNTQsMTQgKzM4MywxNCBAQAogCW5ld2l0ZW0tPm5hbWUgPSB4c3RyZHVwKHJlZm5hbWUpOwogCW5ld2l0ZW0tPmtpbmQgPSBraW5kOwogCW5ld2l0ZW0tPmNvbW1pdCA9IGNvbW1pdDsKLQluZXdpdGVtLT5sZW4gPSBzdHJsZW4ocmVmbmFtZSk7CisJbmV3aXRlbS0+d2lkdGggPSB1dGY4X3N0cndpZHRoKHJlZm5hbWUpOwogCW5ld2l0ZW0tPmRlc3QgPSByZXNvbHZlX3N5bXJlZihvcmlnX3JlZm5hbWUsIHByZWZpeCk7CiAJLyogYWRqdXN0IGZvciAicmVtb3Rlcy8iICovCiAJaWYgKG5ld2l0ZW0tPmtpbmQgPT0gUkVGX1JFTU9URV9CUkFOQ0ggJiYKIAkgICAgcmVmX2xpc3QtPmtpbmRzICE9IFJFRl9SRU1PVEVfQlJBTkNIKQotCQluZXdpdGVtLT5sZW4gKz0gODsKLQlpZiAobmV3aXRlbS0+bGVuID4gcmVmX2xpc3QtPm1heHdpZHRoKQotCQlyZWZfbGlzdC0+bWF4d2lkdGggPSBuZXdpdGVtLT5sZW47CisJCW5ld2l0ZW0tPndpZHRoICs9IDg7CisJaWYgKG5ld2l0ZW0tPndpZHRoID4gcmVmX2xpc3QtPm1heHdpZHRoKQorCQlyZWZfbGlzdC0+bWF4d2lkdGggPSBuZXdpdGVtLT53aWR0aDsKIAogCXJldHVybiAwOwogfQpAQCAtMzkzLDM2ICs0MjIsNTIgQEAKIAlpbnQgb3VycywgdGhlaXJzOwogCWNoYXIgKnJlZiA9IE5VTEw7CiAJc3RydWN0IGJyYW5jaCAqYnJhbmNoID0gYnJhbmNoX2dldChicmFuY2hfbmFtZSk7CisJc3RydWN0IHN0cmJ1ZiBmYW5jeSA9IFNUUkJVRl9JTklUOwogCiAJaWYgKCFzdGF0X3RyYWNraW5nX2luZm8oYnJhbmNoLCAmb3VycywgJnRoZWlycykpIHsKIAkJaWYgKGJyYW5jaCAmJiBicmFuY2gtPm1lcmdlICYmIGJyYW5jaC0+bWVyZ2VbMF0tPmRzdCAmJgotCQkgICAgc2hvd191cHN0cmVhbV9yZWYpCi0JCQlzdHJidWZfYWRkZihzdGF0LCAiWyVzXSAiLAotCQkJICAgIHNob3J0ZW5fdW5hbWJpZ3VvdXNfcmVmKGJyYW5jaC0+bWVyZ2VbMF0tPmRzdCwgMCkpOworCQkgICAgc2hvd191cHN0cmVhbV9yZWYpIHsKKwkJCXJlZiA9IHNob3J0ZW5fdW5hbWJpZ3VvdXNfcmVmKGJyYW5jaC0+bWVyZ2VbMF0tPmRzdCwgMCk7CisJCQlpZiAod2FudF9jb2xvcihicmFuY2hfdXNlX2NvbG9yKSkKKwkJCQlzdHJidWZfYWRkZihzdGF0LCAiWyVzJXMlc10gIiwKKwkJCQkJCWJyYW5jaF9nZXRfY29sb3IoQlJBTkNIX0NPTE9SX1VQU1RSRUFNKSwKKwkJCQkJCXJlZiwgYnJhbmNoX2dldF9jb2xvcihCUkFOQ0hfQ09MT1JfUkVTRVQpKTsKKwkJCWVsc2UKKwkJCQlzdHJidWZfYWRkZihzdGF0LCAiWyVzXSAiLCByZWYpOworCQl9CiAJCXJldHVybjsKIAl9CiAKLQlpZiAoc2hvd191cHN0cmVhbV9yZWYpCisJaWYgKHNob3dfdXBzdHJlYW1fcmVmKSB7CiAJCXJlZiA9IHNob3J0ZW5fdW5hbWJpZ3VvdXNfcmVmKGJyYW5jaC0+bWVyZ2VbMF0tPmRzdCwgMCk7CisJCWlmICh3YW50X2NvbG9yKGJyYW5jaF91c2VfY29sb3IpKQorCQkJc3RyYnVmX2FkZGYoJmZhbmN5LCAiJXMlcyVzIiwKKwkJCQkJYnJhbmNoX2dldF9jb2xvcihCUkFOQ0hfQ09MT1JfVVBTVFJFQU0pLAorCQkJCQlyZWYsIGJyYW5jaF9nZXRfY29sb3IoQlJBTkNIX0NPTE9SX1JFU0VUKSk7CisJCWVsc2UKKwkJCXN0cmJ1Zl9hZGRzdHIoJmZhbmN5LCByZWYpOworCX0KKwogCWlmICghb3VycykgewogCQlpZiAocmVmKQotCQkJc3RyYnVmX2FkZGYoc3RhdCwgXygiWyVzOiBiZWhpbmQgJWRdIiksIHJlZiwgdGhlaXJzKTsKKwkJCXN0cmJ1Zl9hZGRmKHN0YXQsIF8oIlslczogYmVoaW5kICVkXSIpLCBmYW5jeS5idWYsIHRoZWlycyk7CiAJCWVsc2UKIAkJCXN0cmJ1Zl9hZGRmKHN0YXQsIF8oIltiZWhpbmQgJWRdIiksIHRoZWlycyk7CiAKIAl9IGVsc2UgaWYgKCF0aGVpcnMpIHsKIAkJaWYgKHJlZikKLQkJCXN0cmJ1Zl9hZGRmKHN0YXQsIF8oIlslczogYWhlYWQgJWRdIiksIHJlZiwgb3Vycyk7CisJCQlzdHJidWZfYWRkZihzdGF0LCBfKCJbJXM6IGFoZWFkICVkXSIpLCBmYW5jeS5idWYsIG91cnMpOwogCQllbHNlCiAJCQlzdHJidWZfYWRkZihzdGF0LCBfKCJbYWhlYWQgJWRdIiksIG91cnMpOwogCX0gZWxzZSB7CiAJCWlmIChyZWYpCiAJCQlzdHJidWZfYWRkZihzdGF0LCBfKCJbJXM6IGFoZWFkICVkLCBiZWhpbmQgJWRdIiksCi0JCQkJICAgIHJlZiwgb3VycywgdGhlaXJzKTsKKwkJCQkgICAgZmFuY3kuYnVmLCBvdXJzLCB0aGVpcnMpOwogCQllbHNlCiAJCQlzdHJidWZfYWRkZihzdGF0LCBfKCJbYWhlYWQgJWQsIGJlaGluZCAlZF0iKSwKIAkJCQkgICAgb3VycywgdGhlaXJzKTsKIAl9CisJc3RyYnVmX3JlbGVhc2UoJmZhbmN5KTsKIAlzdHJidWZfYWRkY2goc3RhdCwgJyAnKTsKIAlmcmVlKHJlZik7CiB9CkBAIC00NDIsNyArNDg3LDcgQEAKIAkJCSAgICAgaW50IHZlcmJvc2UsIGludCBhYmJyZXYpCiB7CiAJc3RydWN0IHN0cmJ1ZiBzdWJqZWN0ID0gU1RSQlVGX0lOSVQsIHN0YXQgPSBTVFJCVUZfSU5JVDsKLQljb25zdCBjaGFyICpzdWIgPSAiICoqKiogaW52YWxpZCByZWYgKioqKiI7CisJY29uc3QgY2hhciAqc3ViID0gXygiICoqKiogaW52YWxpZCByZWYgKioqKiIpOwogCXN0cnVjdCBjb21taXQgKmNvbW1pdCA9IGl0ZW0tPmNvbW1pdDsKIAogCWlmIChjb21taXQgJiYgIXBhcnNlX2NvbW1pdChjb21taXQpKSB7CkBAIC00OTAsMTEgKzUzNSwxMiBAQAogCX0KIAogCXN0cmJ1Zl9hZGRmKCZuYW1lLCAiJXMlcyIsIHByZWZpeCwgaXRlbS0+bmFtZSk7Ci0JaWYgKHZlcmJvc2UpCisJaWYgKHZlcmJvc2UpIHsKKwkJaW50IHV0ZjhfY29tcGVuc2F0aW9uID0gc3RybGVuKG5hbWUuYnVmKSAtIHV0Zjhfc3Ryd2lkdGgobmFtZS5idWYpOwogCQlzdHJidWZfYWRkZigmb3V0LCAiJWMgJXMlLSpzJXMiLCBjLCBicmFuY2hfZ2V0X2NvbG9yKGNvbG9yKSwKLQkJCSAgICBtYXh3aWR0aCwgbmFtZS5idWYsCisJCQkgICAgbWF4d2lkdGggKyB1dGY4X2NvbXBlbnNhdGlvbiwgbmFtZS5idWYsCiAJCQkgICAgYnJhbmNoX2dldF9jb2xvcihCUkFOQ0hfQ09MT1JfUkVTRVQpKTsKLQllbHNlCisJfSBlbHNlCiAJCXN0cmJ1Zl9hZGRmKCZvdXQsICIlYyAlcyVzJXMiLCBjLCBicmFuY2hfZ2V0X2NvbG9yKGNvbG9yKSwKIAkJCSAgICBuYW1lLmJ1ZiwgYnJhbmNoX2dldF9jb2xvcihCUkFOQ0hfQ09MT1JfUkVTRVQpKTsKIApAQCAtNTE5LDEyICs1NjUsMzUgQEAKIAlmb3IgKGkgPSAwOyBpIDwgcmVmcy0+aW5kZXg7IGkrKykgewogCQlpZiAoIW1hdGNoZXNfbWVyZ2VfZmlsdGVyKHJlZnMtPmxpc3RbaV0uY29tbWl0KSkKIAkJCWNvbnRpbnVlOwotCQlpZiAocmVmcy0+bGlzdFtpXS5sZW4gPiB3KQotCQkJdyA9IHJlZnMtPmxpc3RbaV0ubGVuOworCQlpZiAocmVmcy0+bGlzdFtpXS53aWR0aCA+IHcpCisJCQl3ID0gcmVmcy0+bGlzdFtpXS53aWR0aDsKIAl9CiAJcmV0dXJuIHc7CiB9CiAKK3N0YXRpYyBjaGFyICpnZXRfaGVhZF9kZXNjcmlwdGlvbih2b2lkKQoreworCXN0cnVjdCBzdHJidWYgZGVzYyA9IFNUUkJVRl9JTklUOworCXN0cnVjdCB3dF9zdGF0dXNfc3RhdGUgc3RhdGU7CisJbWVtc2V0KCZzdGF0ZSwgMCwgc2l6ZW9mKHN0YXRlKSk7CisJd3Rfc3RhdHVzX2dldF9zdGF0ZSgmc3RhdGUsIDEpOworCWlmIChzdGF0ZS5yZWJhc2VfaW5fcHJvZ3Jlc3MgfHwKKwkgICAgc3RhdGUucmViYXNlX2ludGVyYWN0aXZlX2luX3Byb2dyZXNzKQorCQlzdHJidWZfYWRkZigmZGVzYywgXygiKG5vIGJyYW5jaCwgcmViYXNpbmcgJXMpIiksCisJCQkgICAgc3RhdGUuYnJhbmNoKTsKKwllbHNlIGlmIChzdGF0ZS5iaXNlY3RfaW5fcHJvZ3Jlc3MpCisJCXN0cmJ1Zl9hZGRmKCZkZXNjLCBfKCIobm8gYnJhbmNoLCBiaXNlY3Qgc3RhcnRlZCBvbiAlcykiKSwKKwkJCSAgICBzdGF0ZS5icmFuY2gpOworCWVsc2UgaWYgKHN0YXRlLmRldGFjaGVkX2Zyb20pCisJCXN0cmJ1Zl9hZGRmKCZkZXNjLCBfKCIoZGV0YWNoZWQgZnJvbSAlcykiKSwKKwkJCSAgICBzdGF0ZS5kZXRhY2hlZF9mcm9tKTsKKwllbHNlCisJCXN0cmJ1Zl9hZGRzdHIoJmRlc2MsIF8oIihubyBicmFuY2gpIikpOworCWZyZWUoc3RhdGUuYnJhbmNoKTsKKwlmcmVlKHN0YXRlLm9udG8pOworCWZyZWUoc3RhdGUuZGV0YWNoZWRfZnJvbSk7CisJcmV0dXJuIHN0cmJ1Zl9kZXRhY2goJmRlc2MsIE5VTEwpOworfQogCiBzdGF0aWMgdm9pZCBzaG93X2RldGFjaGVkKHN0cnVjdCByZWZfbGlzdCAqcmVmX2xpc3QpCiB7CkBAIC01MzIsMTMgKzYwMSwxMyBAQAogCiAJaWYgKGhlYWRfY29tbWl0ICYmIGlzX2Rlc2NlbmRhbnRfb2YoaGVhZF9jb21taXQsIHJlZl9saXN0LT53aXRoX2NvbW1pdCkpIHsKIAkJc3RydWN0IHJlZl9pdGVtIGl0ZW07Ci0JCWl0ZW0ubmFtZSA9IHhzdHJkdXAoXygiKG5vIGJyYW5jaCkiKSk7Ci0JCWl0ZW0ubGVuID0gc3RybGVuKGl0ZW0ubmFtZSk7CisJCWl0ZW0ubmFtZSA9IGdldF9oZWFkX2Rlc2NyaXB0aW9uKCk7CisJCWl0ZW0ud2lkdGggPSB1dGY4X3N0cndpZHRoKGl0ZW0ubmFtZSk7CiAJCWl0ZW0ua2luZCA9IFJFRl9MT0NBTF9CUkFOQ0g7CiAJCWl0ZW0uZGVzdCA9IE5VTEw7CiAJCWl0ZW0uY29tbWl0ID0gaGVhZF9jb21taXQ7Ci0JCWlmIChpdGVtLmxlbiA+IHJlZl9saXN0LT5tYXh3aWR0aCkKLQkJCXJlZl9saXN0LT5tYXh3aWR0aCA9IGl0ZW0ubGVuOworCQlpZiAoaXRlbS53aWR0aCA+IHJlZl9saXN0LT5tYXh3aWR0aCkKKwkJCXJlZl9saXN0LT5tYXh3aWR0aCA9IGl0ZW0ud2lkdGg7CiAJCXByaW50X3JlZl9pdGVtKCZpdGVtLCByZWZfbGlzdC0+bWF4d2lkdGgsIHJlZl9saXN0LT52ZXJib3NlLCByZWZfbGlzdC0+YWJicmV2LCAxLCAiIik7CiAJCWZyZWUoaXRlbS5uYW1lKTsKIAl9CkBAIC01NjUsNyArNjM0LDcgQEAKIAkJc3RydWN0IGNvbW1pdCAqZmlsdGVyOwogCQlmaWx0ZXIgPSBsb29rdXBfY29tbWl0X3JlZmVyZW5jZV9nZW50bHkobWVyZ2VfZmlsdGVyX3JlZiwgMCk7CiAJCWlmICghZmlsdGVyKQotCQkJZGllKCJvYmplY3QgJyVzJyBkb2VzIG5vdCBwb2ludCB0byBhIGNvbW1pdCIsCisJCQlkaWUoXygib2JqZWN0ICclcycgZG9lcyBub3QgcG9pbnQgdG8gYSBjb21taXQiKSwKIAkJCSAgICBzaGExX3RvX2hleChtZXJnZV9maWx0ZXJfcmVmKSk7CiAKIAkJZmlsdGVyLT5vYmplY3QuZmxhZ3MgfD0gVU5JTlRFUkVTVElORzsKQEAgLTY4MSwxMSArNzUwLDExIEBACiAJcmVhZF9icmFuY2hfZGVzYygmYnVmLCBicmFuY2hfbmFtZSk7CiAJaWYgKCFidWYubGVuIHx8IGJ1Zi5idWZbYnVmLmxlbi0xXSAhPSAnXG4nKQogCQlzdHJidWZfYWRkY2goJmJ1ZiwgJ1xuJyk7Ci0Jc3RyYnVmX2FkZGYoJmJ1ZiwKLQkJICAgICIjIFBsZWFzZSBlZGl0IHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIGJyYW5jaFxuIgotCQkgICAgIiMgICAlc1xuIgotCQkgICAgIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAnIycgd2lsbCBiZSBzdHJpcHBlZC5cbiIsCi0JCSAgICBicmFuY2hfbmFtZSk7CisJc3RyYnVmX2NvbW1lbnRlZF9hZGRmKCZidWYsCisJCSAgICAiUGxlYXNlIGVkaXQgdGhlIGRlc2NyaXB0aW9uIGZvciB0aGUgYnJhbmNoXG4iCisJCSAgICAiICAlc1xuIgorCQkgICAgIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIHN0cmlwcGVkLlxuIiwKKwkJICAgIGJyYW5jaF9uYW1lLCBjb21tZW50X2xpbmVfY2hhcik7CiAJZnAgPSBmb3BlbihnaXRfcGF0aChlZGl0X2Rlc2NyaXB0aW9uKSwgInciKTsKIAlpZiAoKGZ3cml0ZShidWYuYnVmLCAxLCBidWYubGVuLCBmcCkgPCBidWYubGVuKSB8fCBmY2xvc2UoZnApKSB7CiAJCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwpAQCAtNzAwLDcgKzc2OSw3IEBACiAJc3RyaXBzcGFjZSgmYnVmLCAxKTsKIAogCXN0cmJ1Zl9hZGRmKCZuYW1lLCAiYnJhbmNoLiVzLmRlc2NyaXB0aW9uIiwgYnJhbmNoX25hbWUpOwotCXN0YXR1cyA9IGdpdF9jb25maWdfc2V0KG5hbWUuYnVmLCBidWYuYnVmKTsKKwlzdGF0dXMgPSBnaXRfY29uZmlnX3NldChuYW1lLmJ1ZiwgYnVmLmxlbiA/IGJ1Zi5idWYgOiBOVUxMKTsKIAlzdHJidWZfcmVsZWFzZSgmbmFtZSk7CiAJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CiAKQEAgLTcxMiw2MiArNzgxLDY1IEBACiAJaW50IGRlbGV0ZSA9IDAsIHJlbmFtZSA9IDAsIGZvcmNlX2NyZWF0ZSA9IDAsIGxpc3QgPSAwOwogCWludCB2ZXJib3NlID0gMCwgYWJicmV2ID0gLTEsIGRldGFjaGVkID0gMDsKIAlpbnQgcmVmbG9nID0gMCwgZWRpdF9kZXNjcmlwdGlvbiA9IDA7Ci0JaW50IHF1aWV0ID0gMDsKKwlpbnQgcXVpZXQgPSAwLCB1bnNldF91cHN0cmVhbSA9IDA7CisJY29uc3QgY2hhciAqbmV3X3Vwc3RyZWFtID0gTlVMTDsKIAllbnVtIGJyYW5jaF90cmFjayB0cmFjazsKIAlpbnQga2luZHMgPSBSRUZfTE9DQUxfQlJBTkNIOwogCXN0cnVjdCBjb21taXRfbGlzdCAqd2l0aF9jb21taXQgPSBOVUxMOwogCiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCU9QVF9HUk9VUCgiR2VuZXJpYyBvcHRpb25zIiksCisJCU9QVF9HUk9VUChOXygiR2VuZXJpYyBvcHRpb25zIikpLAogCQlPUFRfX1ZFUkJPU0UoJnZlcmJvc2UsCi0JCQkic2hvdyBoYXNoIGFuZCBzdWJqZWN0LCBnaXZlIHR3aWNlIGZvciB1cHN0cmVhbSBicmFuY2giKSwKLQkJT1BUX19RVUlFVCgmcXVpZXQsICJzdXBwcmVzcyBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIiksCi0JCU9QVF9TRVRfSU5UKCd0JywgInRyYWNrIiwgICZ0cmFjaywgInNldCB1cCB0cmFja2luZyBtb2RlIChzZWUgZ2l0LXB1bGwoMSkpIiwKKwkJCU5fKCJzaG93IGhhc2ggYW5kIHN1YmplY3QsIGdpdmUgdHdpY2UgZm9yIHVwc3RyZWFtIGJyYW5jaCIpKSwKKwkJT1BUX19RVUlFVCgmcXVpZXQsIE5fKCJzdXBwcmVzcyBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIikpLAorCQlPUFRfU0VUX0lOVCgndCcsICJ0cmFjayIsICAmdHJhY2ssIE5fKCJzZXQgdXAgdHJhY2tpbmcgbW9kZSAoc2VlIGdpdC1wdWxsKDEpKSIpLAogCQkJQlJBTkNIX1RSQUNLX0VYUExJQ0lUKSwKLQkJT1BUX1NFVF9JTlQoIDAsICJzZXQtdXBzdHJlYW0iLCAgJnRyYWNrLCAiY2hhbmdlIHVwc3RyZWFtIGluZm8iLAorCQlPUFRfU0VUX0lOVCggMCwgInNldC11cHN0cmVhbSIsICAmdHJhY2ssIE5fKCJjaGFuZ2UgdXBzdHJlYW0gaW5mbyIpLAogCQkJQlJBTkNIX1RSQUNLX09WRVJSSURFKSwKLQkJT1BUX19DT0xPUigmYnJhbmNoX3VzZV9jb2xvciwgInVzZSBjb2xvcmVkIG91dHB1dCIpLAotCQlPUFRfU0VUX0lOVCgncicsICJyZW1vdGVzIiwgICAgICZraW5kcywgImFjdCBvbiByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMiLAorCQlPUFRfU1RSSU5HKCd1JywgInNldC11cHN0cmVhbS10byIsICZuZXdfdXBzdHJlYW0sICJ1cHN0cmVhbSIsICJjaGFuZ2UgdGhlIHVwc3RyZWFtIGluZm8iKSwKKwkJT1BUX0JPT0xFQU4oMCwgInVuc2V0LXVwc3RyZWFtIiwgJnVuc2V0X3Vwc3RyZWFtLCAiVW5zZXQgdGhlIHVwc3RyZWFtIGluZm8iKSwKKwkJT1BUX19DT0xPUigmYnJhbmNoX3VzZV9jb2xvciwgTl8oInVzZSBjb2xvcmVkIG91dHB1dCIpKSwKKwkJT1BUX1NFVF9JTlQoJ3InLCAicmVtb3RlcyIsICAgICAma2luZHMsIE5fKCJhY3Qgb24gcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzIiksCiAJCQlSRUZfUkVNT1RFX0JSQU5DSCksCiAJCXsKLQkJCU9QVElPTl9DQUxMQkFDSywgMCwgImNvbnRhaW5zIiwgJndpdGhfY29tbWl0LCAiY29tbWl0IiwKLQkJCSJwcmludCBvbmx5IGJyYW5jaGVzIHRoYXQgY29udGFpbiB0aGUgY29tbWl0IiwKKwkJCU9QVElPTl9DQUxMQkFDSywgMCwgImNvbnRhaW5zIiwgJndpdGhfY29tbWl0LCBOXygiY29tbWl0IiksCisJCQlOXygicHJpbnQgb25seSBicmFuY2hlcyB0aGF0IGNvbnRhaW4gdGhlIGNvbW1pdCIpLAogCQkJUEFSU0VfT1BUX0xBU1RBUkdfREVGQVVMVCwKIAkJCXBhcnNlX29wdF93aXRoX2NvbW1pdCwgKGludHB0cl90KSJIRUFEIiwKIAkJfSwKIAkJewotCQkJT1BUSU9OX0NBTExCQUNLLCAwLCAid2l0aCIsICZ3aXRoX2NvbW1pdCwgImNvbW1pdCIsCi0JCQkicHJpbnQgb25seSBicmFuY2hlcyB0aGF0IGNvbnRhaW4gdGhlIGNvbW1pdCIsCisJCQlPUFRJT05fQ0FMTEJBQ0ssIDAsICJ3aXRoIiwgJndpdGhfY29tbWl0LCBOXygiY29tbWl0IiksCisJCQlOXygicHJpbnQgb25seSBicmFuY2hlcyB0aGF0IGNvbnRhaW4gdGhlIGNvbW1pdCIpLAogCQkJUEFSU0VfT1BUX0hJRERFTiB8IFBBUlNFX09QVF9MQVNUQVJHX0RFRkFVTFQsCiAJCQlwYXJzZV9vcHRfd2l0aF9jb21taXQsIChpbnRwdHJfdCkgIkhFQUQiLAogCQl9LAogCQlPUFRfX0FCQlJFVigmYWJicmV2KSwKIAotCQlPUFRfR1JPVVAoIlNwZWNpZmljIGdpdC1icmFuY2ggYWN0aW9uczoiKSwKLQkJT1BUX1NFVF9JTlQoJ2EnLCAiYWxsIiwgJmtpbmRzLCAibGlzdCBib3RoIHJlbW90ZS10cmFja2luZyBhbmQgbG9jYWwgYnJhbmNoZXMiLAorCQlPUFRfR1JPVVAoTl8oIlNwZWNpZmljIGdpdC1icmFuY2ggYWN0aW9uczoiKSksCisJCU9QVF9TRVRfSU5UKCdhJywgImFsbCIsICZraW5kcywgTl8oImxpc3QgYm90aCByZW1vdGUtdHJhY2tpbmcgYW5kIGxvY2FsIGJyYW5jaGVzIiksCiAJCQlSRUZfUkVNT1RFX0JSQU5DSCB8IFJFRl9MT0NBTF9CUkFOQ0gpLAotCQlPUFRfQklUKCdkJywgImRlbGV0ZSIsICZkZWxldGUsICJkZWxldGUgZnVsbHkgbWVyZ2VkIGJyYW5jaCIsIDEpLAotCQlPUFRfQklUKCdEJywgTlVMTCwgJmRlbGV0ZSwgImRlbGV0ZSBicmFuY2ggKGV2ZW4gaWYgbm90IG1lcmdlZCkiLCAyKSwKLQkJT1BUX0JJVCgnbScsICJtb3ZlIiwgJnJlbmFtZSwgIm1vdmUvcmVuYW1lIGEgYnJhbmNoIGFuZCBpdHMgcmVmbG9nIiwgMSksCi0JCU9QVF9CSVQoJ00nLCBOVUxMLCAmcmVuYW1lLCAibW92ZS9yZW5hbWUgYSBicmFuY2gsIGV2ZW4gaWYgdGFyZ2V0IGV4aXN0cyIsIDIpLAotCQlPUFRfQk9PTEVBTigwLCAibGlzdCIsICZsaXN0LCAibGlzdCBicmFuY2ggbmFtZXMiKSwKLQkJT1BUX0JPT0xFQU4oJ2wnLCAiY3JlYXRlLXJlZmxvZyIsICZyZWZsb2csICJjcmVhdGUgdGhlIGJyYW5jaCdzIHJlZmxvZyIpLAorCQlPUFRfQklUKCdkJywgImRlbGV0ZSIsICZkZWxldGUsIE5fKCJkZWxldGUgZnVsbHkgbWVyZ2VkIGJyYW5jaCIpLCAxKSwKKwkJT1BUX0JJVCgnRCcsIE5VTEwsICZkZWxldGUsIE5fKCJkZWxldGUgYnJhbmNoIChldmVuIGlmIG5vdCBtZXJnZWQpIiksIDIpLAorCQlPUFRfQklUKCdtJywgIm1vdmUiLCAmcmVuYW1lLCBOXygibW92ZS9yZW5hbWUgYSBicmFuY2ggYW5kIGl0cyByZWZsb2ciKSwgMSksCisJCU9QVF9CSVQoJ00nLCBOVUxMLCAmcmVuYW1lLCBOXygibW92ZS9yZW5hbWUgYSBicmFuY2gsIGV2ZW4gaWYgdGFyZ2V0IGV4aXN0cyIpLCAyKSwKKwkJT1BUX0JPT0xFQU4oMCwgImxpc3QiLCAmbGlzdCwgTl8oImxpc3QgYnJhbmNoIG5hbWVzIikpLAorCQlPUFRfQk9PTEVBTignbCcsICJjcmVhdGUtcmVmbG9nIiwgJnJlZmxvZywgTl8oImNyZWF0ZSB0aGUgYnJhbmNoJ3MgcmVmbG9nIikpLAogCQlPUFRfQk9PTEVBTigwLCAiZWRpdC1kZXNjcmlwdGlvbiIsICZlZGl0X2Rlc2NyaXB0aW9uLAotCQkJICAgICJlZGl0IHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIGJyYW5jaCIpLAotCQlPUFRfX0ZPUkNFKCZmb3JjZV9jcmVhdGUsICJmb3JjZSBjcmVhdGlvbiAod2hlbiBhbHJlYWR5IGV4aXN0cykiKSwKKwkJCSAgICBOXygiZWRpdCB0aGUgZGVzY3JpcHRpb24gZm9yIHRoZSBicmFuY2giKSksCisJCU9QVF9fRk9SQ0UoJmZvcmNlX2NyZWF0ZSwgTl8oImZvcmNlIGNyZWF0aW9uICh3aGVuIGFscmVhZHkgZXhpc3RzKSIpKSwKIAkJewogCQkJT1BUSU9OX0NBTExCQUNLLCAwLCAibm8tbWVyZ2VkIiwgJm1lcmdlX2ZpbHRlcl9yZWYsCi0JCQkiY29tbWl0IiwgInByaW50IG9ubHkgbm90IG1lcmdlZCBicmFuY2hlcyIsCisJCQlOXygiY29tbWl0IiksIE5fKCJwcmludCBvbmx5IG5vdCBtZXJnZWQgYnJhbmNoZXMiKSwKIAkJCVBBUlNFX09QVF9MQVNUQVJHX0RFRkFVTFQgfCBQQVJTRV9PUFRfTk9ORUcsCiAJCQlvcHRfcGFyc2VfbWVyZ2VfZmlsdGVyLCAoaW50cHRyX3QpICJIRUFEIiwKIAkJfSwKIAkJewogCQkJT1BUSU9OX0NBTExCQUNLLCAwLCAibWVyZ2VkIiwgJm1lcmdlX2ZpbHRlcl9yZWYsCi0JCQkiY29tbWl0IiwgInByaW50IG9ubHkgbWVyZ2VkIGJyYW5jaGVzIiwKKwkJCU5fKCJjb21taXQiKSwgTl8oInByaW50IG9ubHkgbWVyZ2VkIGJyYW5jaGVzIiksCiAJCQlQQVJTRV9PUFRfTEFTVEFSR19ERUZBVUxUIHwgUEFSU0VfT1BUX05PTkVHLAogCQkJb3B0X3BhcnNlX21lcmdlX2ZpbHRlciwgKGludHB0cl90KSAiSEVBRCIsCiAJCX0sCi0JCU9QVF9DT0xVTU4oMCwgImNvbHVtbiIsICZjb2xvcHRzLCAibGlzdCBicmFuY2hlcyBpbiBjb2x1bW5zIiksCisJCU9QVF9DT0xVTU4oMCwgImNvbHVtbiIsICZjb2xvcHRzLCBOXygibGlzdCBicmFuY2hlcyBpbiBjb2x1bW5zIikpLAogCQlPUFRfRU5EKCksCiAJfTsKIApAQCAtNzk0LDEwICs4NjYsMTMgQEAKIAlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBwcmVmaXgsIG9wdGlvbnMsIGJ1aWx0aW5fYnJhbmNoX3VzYWdlLAogCQkJICAgICAwKTsKIAotCWlmICghZGVsZXRlICYmICFyZW5hbWUgJiYgIWVkaXRfZGVzY3JpcHRpb24gJiYgYXJnYyA9PSAwKQorCWlmICghZGVsZXRlICYmICFyZW5hbWUgJiYgIWVkaXRfZGVzY3JpcHRpb24gJiYgIW5ld191cHN0cmVhbSAmJiAhdW5zZXRfdXBzdHJlYW0gJiYgYXJnYyA9PSAwKQogCQlsaXN0ID0gMTsKIAotCWlmICghIWRlbGV0ZSArICEhcmVuYW1lICsgISFmb3JjZV9jcmVhdGUgKyAhIWxpc3QgPiAxKQorCWlmICh3aXRoX2NvbW1pdCB8fCBtZXJnZV9maWx0ZXIgIT0gTk9fRklMVEVSKQorCQlsaXN0ID0gMTsKKworCWlmICghIWRlbGV0ZSArICEhcmVuYW1lICsgISFmb3JjZV9jcmVhdGUgKyAhIWxpc3QgKyAhIW5ld191cHN0cmVhbSArICEhdW5zZXRfdXBzdHJlYW0gPiAxKQogCQl1c2FnZV93aXRoX29wdGlvbnMoYnVpbHRpbl9icmFuY2hfdXNhZ2UsIG9wdGlvbnMpOwogCiAJaWYgKGFiYnJldiA9PSAtMSkKQEAgLTgwOSw5ICs4ODQsMTEgQEAKIAkJY29sb3B0cyA9IDA7CiAJfQogCi0JaWYgKGRlbGV0ZSkKKwlpZiAoZGVsZXRlKSB7CisJCWlmICghYXJnYykKKwkJCWRpZShfKCJicmFuY2ggbmFtZSByZXF1aXJlZCIpKTsKIAkJcmV0dXJuIGRlbGV0ZV9icmFuY2hlcyhhcmdjLCBhcmd2LCBkZWxldGUgPiAxLCBraW5kcywgcXVpZXQpOwotCWVsc2UgaWYgKGxpc3QpIHsKKwl9IGVsc2UgaWYgKGxpc3QpIHsKIAkJaW50IHJldCA9IHByaW50X3JlZl9saXN0KGtpbmRzLCBkZXRhY2hlZCwgdmVyYm9zZSwgYWJicmV2LAogCQkJCQkgd2l0aF9jb21taXQsIGFyZ3YpOwogCQlwcmludF9jb2x1bW5zKCZvdXRwdXQsIGNvbG9wdHMsIE5VTEwpOwpAQCAtODIyLDQxICs4OTksMTIyIEBACiAJCWNvbnN0IGNoYXIgKmJyYW5jaF9uYW1lOwogCQlzdHJ1Y3Qgc3RyYnVmIGJyYW5jaF9yZWYgPSBTVFJCVUZfSU5JVDsKIAotCQlpZiAoZGV0YWNoZWQpCi0JCQlkaWUoIkNhbm5vdCBnaXZlIGRlc2NyaXB0aW9uIHRvIGRldGFjaGVkIEhFQUQiKTsKLQkJaWYgKCFhcmdjKQorCQlpZiAoIWFyZ2MpIHsKKwkJCWlmIChkZXRhY2hlZCkKKwkJCQlkaWUoXygiQ2Fubm90IGdpdmUgZGVzY3JpcHRpb24gdG8gZGV0YWNoZWQgSEVBRCIpKTsKIAkJCWJyYW5jaF9uYW1lID0gaGVhZDsKLQkJZWxzZSBpZiAoYXJnYyA9PSAxKQorCQl9IGVsc2UgaWYgKGFyZ2MgPT0gMSkKIAkJCWJyYW5jaF9uYW1lID0gYXJndlswXTsKIAkJZWxzZQotCQkJdXNhZ2Vfd2l0aF9vcHRpb25zKGJ1aWx0aW5fYnJhbmNoX3VzYWdlLCBvcHRpb25zKTsKKwkJCWRpZShfKCJjYW5ub3QgZWRpdCBkZXNjcmlwdGlvbiBvZiBtb3JlIHRoYW4gb25lIGJyYW5jaCIpKTsKIAogCQlzdHJidWZfYWRkZigmYnJhbmNoX3JlZiwgInJlZnMvaGVhZHMvJXMiLCBicmFuY2hfbmFtZSk7CiAJCWlmICghcmVmX2V4aXN0cyhicmFuY2hfcmVmLmJ1ZikpIHsKIAkJCXN0cmJ1Zl9yZWxlYXNlKCZicmFuY2hfcmVmKTsKIAogCQkJaWYgKCFhcmdjKQotCQkJCXJldHVybiBlcnJvcigiTm8gY29tbWl0IG9uIGJyYW5jaCAnJXMnIHlldC4iLAorCQkJCXJldHVybiBlcnJvcihfKCJObyBjb21taXQgb24gYnJhbmNoICclcycgeWV0LiIpLAogCQkJCQkgICAgIGJyYW5jaF9uYW1lKTsKIAkJCWVsc2UKLQkJCQlyZXR1cm4gZXJyb3IoIk5vIHN1Y2ggYnJhbmNoICclcycuIiwgYnJhbmNoX25hbWUpOworCQkJCXJldHVybiBlcnJvcihfKCJObyBicmFuY2ggbmFtZWQgJyVzJy4iKSwKKwkJCQkJICAgICBicmFuY2hfbmFtZSk7CiAJCX0KIAkJc3RyYnVmX3JlbGVhc2UoJmJyYW5jaF9yZWYpOwogCiAJCWlmIChlZGl0X2JyYW5jaF9kZXNjcmlwdGlvbihicmFuY2hfbmFtZSkpCiAJCQlyZXR1cm4gMTsKIAl9IGVsc2UgaWYgKHJlbmFtZSkgewotCQlpZiAoYXJnYyA9PSAxKQorCQlpZiAoIWFyZ2MpCisJCQlkaWUoXygiYnJhbmNoIG5hbWUgcmVxdWlyZWQiKSk7CisJCWVsc2UgaWYgKGFyZ2MgPT0gMSkKIAkJCXJlbmFtZV9icmFuY2goaGVhZCwgYXJndlswXSwgcmVuYW1lID4gMSk7CiAJCWVsc2UgaWYgKGFyZ2MgPT0gMikKIAkJCXJlbmFtZV9icmFuY2goYXJndlswXSwgYXJndlsxXSwgcmVuYW1lID4gMSk7CiAJCWVsc2UKLQkJCXVzYWdlX3dpdGhfb3B0aW9ucyhidWlsdGluX2JyYW5jaF91c2FnZSwgb3B0aW9ucyk7CisJCQlkaWUoXygidG9vIG1hbnkgYnJhbmNoZXMgZm9yIGEgcmVuYW1lIG9wZXJhdGlvbiIpKTsKKwl9IGVsc2UgaWYgKG5ld191cHN0cmVhbSkgeworCQlzdHJ1Y3QgYnJhbmNoICpicmFuY2ggPSBicmFuY2hfZ2V0KGFyZ3ZbMF0pOworCisJCWlmIChhcmdjID4gMSkKKwkJCWRpZShfKCJ0b28gbWFueSBicmFuY2hlcyB0byBzZXQgbmV3IHVwc3RyZWFtIikpOworCisJCWlmICghYnJhbmNoKSB7CisJCQlpZiAoIWFyZ2MgfHwgIXN0cmNtcChhcmd2WzBdLCAiSEVBRCIpKQorCQkJCWRpZShfKCJjb3VsZCBub3Qgc2V0IHVwc3RyZWFtIG9mIEhFQUQgdG8gJXMgd2hlbiAiCisJCQkJICAgICAgIml0IGRvZXMgbm90IHBvaW50IHRvIGFueSBicmFuY2guIiksCisJCQkJICAgIG5ld191cHN0cmVhbSk7CisJCQlkaWUoXygibm8gc3VjaCBicmFuY2ggJyVzJyIpLCBhcmd2WzBdKTsKKwkJfQorCisJCWlmICghcmVmX2V4aXN0cyhicmFuY2gtPnJlZm5hbWUpKQorCQkJZGllKF8oImJyYW5jaCAnJXMnIGRvZXMgbm90IGV4aXN0IiksIGJyYW5jaC0+bmFtZSk7CisKKwkJLyoKKwkJICogY3JlYXRlX2JyYW5jaCB0YWtlcyBjYXJlIG9mIHNldHRpbmcgdXAgdGhlIHRyYWNraW5nCisJCSAqIGluZm8gYW5kIG1ha2luZyBzdXJlIG5ld191cHN0cmVhbSBpcyBjb3JyZWN0CisJCSAqLworCQljcmVhdGVfYnJhbmNoKGhlYWQsIGJyYW5jaC0+bmFtZSwgbmV3X3Vwc3RyZWFtLCAwLCAwLCAwLCBxdWlldCwgQlJBTkNIX1RSQUNLX09WRVJSSURFKTsKKwl9IGVsc2UgaWYgKHVuc2V0X3Vwc3RyZWFtKSB7CisJCXN0cnVjdCBicmFuY2ggKmJyYW5jaCA9IGJyYW5jaF9nZXQoYXJndlswXSk7CisJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisKKwkJaWYgKGFyZ2MgPiAxKQorCQkJZGllKF8oInRvbyBtYW55IGJyYW5jaGVzIHRvIHVuc2V0IHVwc3RyZWFtIikpOworCisJCWlmICghYnJhbmNoKSB7CisJCQlpZiAoIWFyZ2MgfHwgIXN0cmNtcChhcmd2WzBdLCAiSEVBRCIpKQorCQkJCWRpZShfKCJjb3VsZCBub3QgdW5zZXQgdXBzdHJlYW0gb2YgSEVBRCB3aGVuICIKKwkJCQkgICAgICAiaXQgZG9lcyBub3QgcG9pbnQgdG8gYW55IGJyYW5jaC4iKSk7CisJCQlkaWUoXygibm8gc3VjaCBicmFuY2ggJyVzJyIpLCBhcmd2WzBdKTsKKwkJfQorCisJCWlmICghYnJhbmNoX2hhc19tZXJnZV9jb25maWcoYnJhbmNoKSkgeworCQkJZGllKF8oIkJyYW5jaCAnJXMnIGhhcyBubyB1cHN0cmVhbSBpbmZvcm1hdGlvbiIpLCBicmFuY2gtPm5hbWUpOworCQl9CisKKwkJc3RyYnVmX2FkZGYoJmJ1ZiwgImJyYW5jaC4lcy5yZW1vdGUiLCBicmFuY2gtPm5hbWUpOworCQlnaXRfY29uZmlnX3NldF9tdWx0aXZhcihidWYuYnVmLCBOVUxMLCBOVUxMLCAxKTsKKwkJc3RyYnVmX3Jlc2V0KCZidWYpOworCQlzdHJidWZfYWRkZigmYnVmLCAiYnJhbmNoLiVzLm1lcmdlIiwgYnJhbmNoLT5uYW1lKTsKKwkJZ2l0X2NvbmZpZ19zZXRfbXVsdGl2YXIoYnVmLmJ1ZiwgTlVMTCwgTlVMTCwgMSk7CisJCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogCX0gZWxzZSBpZiAoYXJnYyA+IDAgJiYgYXJnYyA8PSAyKSB7CisJCXN0cnVjdCBicmFuY2ggKmJyYW5jaCA9IGJyYW5jaF9nZXQoYXJndlswXSk7CisJCWludCBicmFuY2hfZXhpc3RlZCA9IDAsIHJlbW90ZV90cmFja2luZyA9IDA7CisJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisKKwkJaWYgKCFzdHJjbXAoYXJndlswXSwgIkhFQUQiKSkKKwkJCWRpZShfKCJpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGNyZWF0ZSAnSEVBRCcgbWFudWFsbHkiKSk7CisKKwkJaWYgKCFicmFuY2gpCisJCQlkaWUoXygibm8gc3VjaCBicmFuY2ggJyVzJyIpLCBhcmd2WzBdKTsKKwogCQlpZiAoa2luZHMgIT0gUkVGX0xPQ0FMX0JSQU5DSCkKIAkJCWRpZShfKCItYSBhbmQgLXIgb3B0aW9ucyB0byAnZ2l0IGJyYW5jaCcgZG8gbm90IG1ha2Ugc2Vuc2Ugd2l0aCBhIGJyYW5jaCBuYW1lIikpOworCisJCWlmICh0cmFjayA9PSBCUkFOQ0hfVFJBQ0tfT1ZFUlJJREUpCisJCQlmcHJpbnRmKHN0ZGVyciwgXygiVGhlIC0tc2V0LXVwc3RyZWFtIGZsYWcgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBDb25zaWRlciB1c2luZyAtLXRyYWNrIG9yIC0tc2V0LXVwc3RyZWFtLXRvXG4iKSk7CisKKwkJc3RyYnVmX2FkZGYoJmJ1ZiwgInJlZnMvcmVtb3Rlcy8lcyIsIGJyYW5jaC0+bmFtZSk7CisJCXJlbW90ZV90cmFja2luZyA9IHJlZl9leGlzdHMoYnVmLmJ1Zik7CisJCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOworCisJCWJyYW5jaF9leGlzdGVkID0gcmVmX2V4aXN0cyhicmFuY2gtPnJlZm5hbWUpOwogCQljcmVhdGVfYnJhbmNoKGhlYWQsIGFyZ3ZbMF0sIChhcmdjID09IDIpID8gYXJndlsxXSA6IGhlYWQsCiAJCQkgICAgICBmb3JjZV9jcmVhdGUsIHJlZmxvZywgMCwgcXVpZXQsIHRyYWNrKTsKKworCQkvKgorCQkgKiBXZSBvbmx5IHNob3cgdGhlIGluc3RydWN0aW9ucyBpZiB0aGUgdXNlciBnYXZlIHVzCisJCSAqIG9uZSBicmFuY2ggd2hpY2ggZG9lc24ndCBleGlzdCBsb2NhbGx5LCBidXQgaXMgdGhlCisJCSAqIG5hbWUgb2YgYSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoLgorCQkgKi8KKwkJaWYgKGFyZ2MgPT0gMSAmJiB0cmFjayA9PSBCUkFOQ0hfVFJBQ0tfT1ZFUlJJREUgJiYKKwkJICAgICFicmFuY2hfZXhpc3RlZCAmJiByZW1vdGVfdHJhY2tpbmcpIHsKKwkJCWZwcmludGYoc3RkZXJyLCBfKCJcbklmIHlvdSB3YW50ZWQgdG8gbWFrZSAnJXMnIHRyYWNrICclcycsIGRvIHRoaXM6XG5cbiIpLCBoZWFkLCBicmFuY2gtPm5hbWUpOworCQkJZnByaW50ZihzdGRlcnIsIF8oIiAgICBnaXQgYnJhbmNoIC1kICVzXG4iKSwgYnJhbmNoLT5uYW1lKTsKKwkJCWZwcmludGYoc3RkZXJyLCBfKCIgICAgZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byAlc1xuIiksIGJyYW5jaC0+bmFtZSk7CisJCX0KKwogCX0gZWxzZQogCQl1c2FnZV93aXRoX29wdGlvbnMoYnVpbHRpbl9icmFuY2hfdXNhZ2UsIG9wdGlvbnMpOwogCmRpZmYgLS1naXQgYS9idWlsdGluL2NhdC1maWxlLmMgYi9idWlsdGluL2NhdC1maWxlLmMKaW5kZXggMzZhOTEwNC4uMDQ1Y2VlNyAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jYXQtZmlsZS5jCisrKyBiL2J1aWx0aW4vY2F0LWZpbGUuYwpAQCAtMTYsNzMgKzE2LDYgQEAKICNkZWZpbmUgQkFUQ0ggMQogI2RlZmluZSBCQVRDSF9DSEVDSyAyCiAKLXN0YXRpYyB2b2lkIHBwcmludF90YWcoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nIHNpemUpCi17Ci0JLyogdGhlIHBhcnNlciBpbiB0YWcuYyBpcyB1c2VsZXNzIGhlcmUuICovCi0JY29uc3QgY2hhciAqZW5kcCA9IGJ1ZiArIHNpemU7Ci0JY29uc3QgY2hhciAqY3AgPSBidWY7Ci0KLQl3aGlsZSAoY3AgPCBlbmRwKSB7Ci0JCWNoYXIgYyA9ICpjcCsrOwotCQlpZiAoYyAhPSAnXG4nKQotCQkJY29udGludWU7Ci0JCWlmICg3IDw9IGVuZHAgLSBjcCAmJiAhbWVtY21wKCJ0YWdnZXIgIiwgY3AsIDcpKSB7Ci0JCQljb25zdCBjaGFyICp0YWdnZXIgPSBjcDsKLQotCQkJLyogRm91bmQgdGhlIHRhZ2dlciBsaW5lLiAgQ29weSBvdXQgdGhlIGNvbnRlbnRzCi0JCQkgKiBvZiB0aGUgYnVmZmVyIHNvIGZhci4KLQkJCSAqLwotCQkJd3JpdGVfb3JfZGllKDEsIGJ1ZiwgY3AgLSBidWYpOwotCi0JCQkvKgotCQkJICogRG8gc29tZXRoaW5nIGludGVsbGlnZW50LCBsaWtlIHByZXR0eS1wcmludGluZwotCQkJICogdGhlIGRhdGUuCi0JCQkgKi8KLQkJCXdoaWxlIChjcCA8IGVuZHApIHsKLQkJCQlpZiAoKmNwKysgPT0gJ1xuJykgewotCQkJCQkvKiB0YWdnZXIgdG8gY3AgaXMgYSBsaW5lCi0JCQkJCSAqIHRoYXQgaGFzIGlkZW50IGFuZCB0aW1lLgotCQkJCQkgKi8KLQkJCQkJY29uc3QgY2hhciAqc3AgPSB0YWdnZXI7Ci0JCQkJCWNoYXIgKmVwOwotCQkJCQl1bnNpZ25lZCBsb25nIGRhdGU7Ci0JCQkJCWxvbmcgdHo7Ci0JCQkJCXdoaWxlIChzcCA8IGNwICYmICpzcCAhPSAnPicpCi0JCQkJCQlzcCsrOwotCQkJCQlpZiAoc3AgPT0gY3ApIHsKLQkJCQkJCS8qIGdpdmUgdXAgKi8KLQkJCQkJCXdyaXRlX29yX2RpZSgxLCB0YWdnZXIsCi0JCQkJCQkJICAgICBjcCAtIHRhZ2dlcik7Ci0JCQkJCQlicmVhazsKLQkJCQkJfQotCQkJCQl3aGlsZSAoc3AgPCBjcCAmJgotCQkJCQkgICAgICAgISgnMCcgPD0gKnNwICYmICpzcCA8PSAnOScpKQotCQkJCQkJc3ArKzsKLQkJCQkJd3JpdGVfb3JfZGllKDEsIHRhZ2dlciwgc3AgLSB0YWdnZXIpOwotCQkJCQlkYXRlID0gc3RydG91bChzcCwgJmVwLCAxMCk7Ci0JCQkJCXR6ID0gc3RydG9sKGVwLCBOVUxMLCAxMCk7Ci0JCQkJCXNwID0gc2hvd19kYXRlKGRhdGUsIHR6LCAwKTsKLQkJCQkJd3JpdGVfb3JfZGllKDEsIHNwLCBzdHJsZW4oc3ApKTsKLQkJCQkJeHdyaXRlKDEsICJcbiIsIDEpOwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0JCQlicmVhazsKLQkJfQotCQlpZiAoY3AgPCBlbmRwICYmICpjcCA9PSAnXG4nKQotCQkJLyogZW5kIG9mIGhlYWRlciAqLwotCQkJYnJlYWs7Ci0JfQotCS8qIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgY29waWVkIG91dCB0aGUgaGVhZGVyIHVwIHRvIHRoZSBlbmQgb2YKLQkgKiB0aGUgdGFnZ2VyIGxpbmUgYW5kIGNwIHBvaW50cyBhdCBvbmUgcGFzdCBcbi4gIEl0IGNvdWxkIGJlIHRoZQotCSAqIG5leHQgaGVhZGVyIGxpbmUgYWZ0ZXIgdGhlIHRhZ2dlciBsaW5lLCBvciBpdCBjb3VsZCBiZSBhbm90aGVyCi0JICogXG4gdGhhdCBtYXJrcyB0aGUgZW5kIG9mIHRoZSBoZWFkZXJzLiAgV2UgbmVlZCB0byBjb3B5IG91dCB0aGUKLQkgKiByZW1haW5kZXIgYXMgaXMuCi0JICovCi0JaWYgKGNwIDwgZW5kcCkKLQkJd3JpdGVfb3JfZGllKDEsIGNwLCBlbmRwIC0gY3ApOwotfQotCiBzdGF0aWMgaW50IGNhdF9vbmVfZmlsZShpbnQgb3B0LCBjb25zdCBjaGFyICpleHBfdHlwZSwgY29uc3QgY2hhciAqb2JqX25hbWUpCiB7CiAJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKQEAgLTkxLDcgKzI0LDcgQEAKIAl1bnNpZ25lZCBsb25nIHNpemU7CiAJc3RydWN0IG9iamVjdF9jb250ZXh0IG9ial9jb250ZXh0OwogCi0JaWYgKGdldF9zaGExX3dpdGhfY29udGV4dChvYmpfbmFtZSwgc2hhMSwgJm9ial9jb250ZXh0KSkKKwlpZiAoZ2V0X3NoYTFfd2l0aF9jb250ZXh0KG9ial9uYW1lLCAwLCBzaGExLCAmb2JqX2NvbnRleHQpKQogCQlkaWUoIk5vdCBhIHZhbGlkIG9iamVjdCBuYW1lICVzIiwgb2JqX25hbWUpOwogCiAJYnVmID0gTlVMTDsKQEAgLTEzMywxMCArNjYsNiBAQAogCQlidWYgPSByZWFkX3NoYTFfZmlsZShzaGExLCAmdHlwZSwgJnNpemUpOwogCQlpZiAoIWJ1ZikKIAkJCWRpZSgiQ2Fubm90IHJlYWQgb2JqZWN0ICVzIiwgb2JqX25hbWUpOwotCQlpZiAodHlwZSA9PSBPQkpfVEFHKSB7Ci0JCQlwcHJpbnRfdGFnKHNoYTEsIGJ1Ziwgc2l6ZSk7Ci0JCQlyZXR1cm4gMDsKLQkJfQogCiAJCS8qIG90aGVyd2lzZSBqdXN0IHNwaXQgb3V0IHRoZSBkYXRhICovCiAJCWJyZWFrOwpAQCAtMTQ2LDcgKzc1LDcgQEAKIAkJCWRpZSgiZ2l0IGNhdC1maWxlIC0tdGV4dGNvbnYgJXM6IDxvYmplY3Q+IG11c3QgYmUgPHNoYTE6cGF0aD4iLAogCQkJICAgIG9ial9uYW1lKTsKIAotCQlpZiAoIXRleHRjb252X29iamVjdChvYmpfY29udGV4dC5wYXRoLCBvYmpfY29udGV4dC5tb2RlLCBzaGExLCAmYnVmLCAmc2l6ZSkpCisJCWlmICghdGV4dGNvbnZfb2JqZWN0KG9ial9jb250ZXh0LnBhdGgsIG9ial9jb250ZXh0Lm1vZGUsIHNoYTEsIDEsICZidWYsICZzaXplKSkKIAkJCWRpZSgiZ2l0IGNhdC1maWxlIC0tdGV4dGNvbnY6IHVuYWJsZSB0byBydW4gdGV4dGNvbnYgb24gJXMiLAogCQkJICAgIG9ial9uYW1lKTsKIAkJYnJlYWs7CkBAIC0xOTMsNyArMTIyLDcgQEAKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCWVudW0gb2JqZWN0X3R5cGUgdHlwZSA9IDA7CiAJdW5zaWduZWQgbG9uZyBzaXplOwotCXZvaWQgKmNvbnRlbnRzID0gY29udGVudHM7CisJdm9pZCAqY29udGVudHMgPSBOVUxMOwogCiAJaWYgKCFvYmpfbmFtZSkKIAkgICByZXR1cm4gMTsKQEAgLTI0NCw4ICsxNzMsOCBAQAogfQogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGNhdF9maWxlX3VzYWdlW10gPSB7Ci0JImdpdCBjYXQtZmlsZSAoLXR8LXN8LWV8LXB8PHR5cGU+fC0tdGV4dGNvbnYpIDxvYmplY3Q+IiwKLQkiZ2l0IGNhdC1maWxlICgtLWJhdGNofC0tYmF0Y2gtY2hlY2spIDwgPGxpc3Rfb2Zfb2JqZWN0cz4iLAorCU5fKCJnaXQgY2F0LWZpbGUgKC10fC1zfC1lfC1wfDx0eXBlPnwtLXRleHRjb252KSA8b2JqZWN0PiIpLAorCU5fKCJnaXQgY2F0LWZpbGUgKC0tYmF0Y2h8LS1iYXRjaC1jaGVjaykgPCA8bGlzdF9vZl9vYmplY3RzPiIpLAogCU5VTEwKIH07CiAKQEAgLTI2MywxOSArMTkyLDE5IEBACiAJY29uc3QgY2hhciAqZXhwX3R5cGUgPSBOVUxMLCAqb2JqX25hbWUgPSBOVUxMOwogCiAJY29uc3Qgc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCU9QVF9HUk9VUCgiPHR5cGU+IGNhbiBiZSBvbmUgb2Y6IGJsb2IsIHRyZWUsIGNvbW1pdCwgdGFnIiksCi0JCU9QVF9TRVRfSU5UKCd0JywgTlVMTCwgJm9wdCwgInNob3cgb2JqZWN0IHR5cGUiLCAndCcpLAotCQlPUFRfU0VUX0lOVCgncycsIE5VTEwsICZvcHQsICJzaG93IG9iamVjdCBzaXplIiwgJ3MnKSwKKwkJT1BUX0dST1VQKE5fKCI8dHlwZT4gY2FuIGJlIG9uZSBvZjogYmxvYiwgdHJlZSwgY29tbWl0LCB0YWciKSksCisJCU9QVF9TRVRfSU5UKCd0JywgTlVMTCwgJm9wdCwgTl8oInNob3cgb2JqZWN0IHR5cGUiKSwgJ3QnKSwKKwkJT1BUX1NFVF9JTlQoJ3MnLCBOVUxMLCAmb3B0LCBOXygic2hvdyBvYmplY3Qgc2l6ZSIpLCAncycpLAogCQlPUFRfU0VUX0lOVCgnZScsIE5VTEwsICZvcHQsCi0JCQkgICAgImV4aXQgd2l0aCB6ZXJvIHdoZW4gdGhlcmUncyBubyBlcnJvciIsICdlJyksCi0JCU9QVF9TRVRfSU5UKCdwJywgTlVMTCwgJm9wdCwgInByZXR0eS1wcmludCBvYmplY3QncyBjb250ZW50IiwgJ3AnKSwKKwkJCSAgICBOXygiZXhpdCB3aXRoIHplcm8gd2hlbiB0aGVyZSdzIG5vIGVycm9yIiksICdlJyksCisJCU9QVF9TRVRfSU5UKCdwJywgTlVMTCwgJm9wdCwgTl8oInByZXR0eS1wcmludCBvYmplY3QncyBjb250ZW50IiksICdwJyksCiAJCU9QVF9TRVRfSU5UKDAsICJ0ZXh0Y29udiIsICZvcHQsCi0JCQkgICAgImZvciBibG9iIG9iamVjdHMsIHJ1biB0ZXh0Y29udiBvbiBvYmplY3QncyBjb250ZW50IiwgJ2MnKSwKKwkJCSAgICBOXygiZm9yIGJsb2Igb2JqZWN0cywgcnVuIHRleHRjb252IG9uIG9iamVjdCdzIGNvbnRlbnQiKSwgJ2MnKSwKIAkJT1BUX1NFVF9JTlQoMCwgImJhdGNoIiwgJmJhdGNoLAotCQkJICAgICJzaG93IGluZm8gYW5kIGNvbnRlbnQgb2Ygb2JqZWN0cyBmZWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiLAorCQkJICAgIE5fKCJzaG93IGluZm8gYW5kIGNvbnRlbnQgb2Ygb2JqZWN0cyBmZWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiKSwKIAkJCSAgICBCQVRDSCksCiAJCU9QVF9TRVRfSU5UKDAsICJiYXRjaC1jaGVjayIsICZiYXRjaCwKLQkJCSAgICAic2hvdyBpbmZvIGFib3V0IG9iamVjdHMgZmVkIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IiwKKwkJCSAgICBOXygic2hvdyBpbmZvIGFib3V0IG9iamVjdHMgZmVkIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IiksCiAJCQkgICAgQkFUQ0hfQ0hFQ0spLAogCQlPUFRfRU5EKCkKIAl9OwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9jaGVjay1hdHRyLmMgYi9idWlsdGluL2NoZWNrLWF0dHIuYwppbmRleCA0NGM0MjFlLi4wNzVkMDFkIDEwMDY0NAotLS0gYS9idWlsdGluL2NoZWNrLWF0dHIuYworKysgYi9idWlsdGluL2NoZWNrLWF0dHIuYwpAQCAtOCwxOSArOCwxOSBAQAogc3RhdGljIGludCBjYWNoZWRfYXR0cnM7CiBzdGF0aWMgaW50IHN0ZGluX3BhdGhzOwogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjaGVja19hdHRyX3VzYWdlW10gPSB7Ci0iZ2l0IGNoZWNrLWF0dHIgWy1hIHwgLS1hbGwgfCBhdHRyLi4uXSBbLS1dIHBhdGhuYW1lLi4uIiwKLSJnaXQgY2hlY2stYXR0ciAtLXN0ZGluIFstYSB8IC0tYWxsIHwgYXR0ci4uLl0gPCA8bGlzdC1vZi1wYXRocz4iLAorTl8oImdpdCBjaGVjay1hdHRyIFstYSB8IC0tYWxsIHwgYXR0ci4uLl0gWy0tXSBwYXRobmFtZS4uLiIpLAorTl8oImdpdCBjaGVjay1hdHRyIC0tc3RkaW4gWy16XSBbLWEgfCAtLWFsbCB8IGF0dHIuLi5dIDwgPGxpc3Qtb2YtcGF0aHM+IiksCiBOVUxMCiB9OwogCiBzdGF0aWMgaW50IG51bGxfdGVybV9saW5lOwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBjaGVja19hdHRyX29wdGlvbnNbXSA9IHsKLQlPUFRfQk9PTEVBTignYScsICJhbGwiLCAmYWxsX2F0dHJzLCAicmVwb3J0IGFsbCBhdHRyaWJ1dGVzIHNldCBvbiBmaWxlIiksCi0JT1BUX0JPT0xFQU4oMCwgICJjYWNoZWQiLCAmY2FjaGVkX2F0dHJzLCAidXNlIC5naXRhdHRyaWJ1dGVzIG9ubHkgZnJvbSB0aGUgaW5kZXgiKSwKLQlPUFRfQk9PTEVBTigwICwgInN0ZGluIiwgJnN0ZGluX3BhdGhzLCAicmVhZCBmaWxlIG5hbWVzIGZyb20gc3RkaW4iKSwKKwlPUFRfQk9PTEVBTignYScsICJhbGwiLCAmYWxsX2F0dHJzLCBOXygicmVwb3J0IGFsbCBhdHRyaWJ1dGVzIHNldCBvbiBmaWxlIikpLAorCU9QVF9CT09MRUFOKDAsICAiY2FjaGVkIiwgJmNhY2hlZF9hdHRycywgTl8oInVzZSAuZ2l0YXR0cmlidXRlcyBvbmx5IGZyb20gdGhlIGluZGV4IikpLAorCU9QVF9CT09MRUFOKDAgLCAic3RkaW4iLCAmc3RkaW5fcGF0aHMsIE5fKCJyZWFkIGZpbGUgbmFtZXMgZnJvbSBzdGRpbiIpKSwKIAlPUFRfQk9PTEVBTigneicsIE5VTEwsICZudWxsX3Rlcm1fbGluZSwKLQkJImlucHV0IHBhdGhzIGFyZSB0ZXJtaW5hdGVkIGJ5IGEgbnVsbCBjaGFyYWN0ZXIiKSwKKwkJTl8oImlucHV0IHBhdGhzIGFyZSB0ZXJtaW5hdGVkIGJ5IGEgbnVsbCBjaGFyYWN0ZXIiKSksCiAJT1BUX0VORCgpCiB9OwogCmRpZmYgLS1naXQgYS9idWlsdGluL2NoZWNrLWlnbm9yZS5jIGIvYnVpbHRpbi9jaGVjay1pZ25vcmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTRhODhhCi0tLSAvZGV2L251bGwKKysrIGIvYnVpbHRpbi9jaGVjay1pZ25vcmUuYwpAQCAtMCwwICsxLDE2OCBAQAorI2luY2x1ZGUgImJ1aWx0aW4uaCIKKyNpbmNsdWRlICJjYWNoZS5oIgorI2luY2x1ZGUgImRpci5oIgorI2luY2x1ZGUgInF1b3RlLmgiCisjaW5jbHVkZSAicGF0aHNwZWMuaCIKKyNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCisKK3N0YXRpYyBpbnQgcXVpZXQsIHZlcmJvc2UsIHN0ZGluX3BhdGhzOworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjaGVja19pZ25vcmVfdXNhZ2VbXSA9IHsKKyJnaXQgY2hlY2staWdub3JlIFtvcHRpb25zXSBwYXRobmFtZS4uLiIsCisiZ2l0IGNoZWNrLWlnbm9yZSBbb3B0aW9uc10gLS1zdGRpbiA8IDxsaXN0LW9mLXBhdGhzPiIsCitOVUxMCit9OworCitzdGF0aWMgaW50IG51bGxfdGVybV9saW5lOworCitzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBjaGVja19pZ25vcmVfb3B0aW9uc1tdID0geworCU9QVF9fUVVJRVQoJnF1aWV0LCBOXygic3VwcHJlc3MgcHJvZ3Jlc3MgcmVwb3J0aW5nIikpLAorCU9QVF9fVkVSQk9TRSgmdmVyYm9zZSwgTl8oImJlIHZlcmJvc2UiKSksCisJT1BUX0dST1VQKCIiKSwKKwlPUFRfQk9PTEVBTigwLCAic3RkaW4iLCAmc3RkaW5fcGF0aHMsCisJCSAgICBOXygicmVhZCBmaWxlIG5hbWVzIGZyb20gc3RkaW4iKSksCisJT1BUX0JPT0xFQU4oJ3onLCBOVUxMLCAmbnVsbF90ZXJtX2xpbmUsCisJCSAgICBOXygiaW5wdXQgcGF0aHMgYXJlIHRlcm1pbmF0ZWQgYnkgYSBudWxsIGNoYXJhY3RlciIpKSwKKwlPUFRfRU5EKCkKK307CisKK3N0YXRpYyB2b2lkIG91dHB1dF9leGNsdWRlKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBleGNsdWRlICpleGNsdWRlKQoreworCWNoYXIgKmJhbmcgID0gZXhjbHVkZS0+ZmxhZ3MgJiBFWENfRkxBR19ORUdBVElWRSAgPyAiISIgOiAiIjsKKwljaGFyICpzbGFzaCA9IGV4Y2x1ZGUtPmZsYWdzICYgRVhDX0ZMQUdfTVVTVEJFRElSID8gIi8iIDogIiI7CisJaWYgKCFudWxsX3Rlcm1fbGluZSkgeworCQlpZiAoIXZlcmJvc2UpIHsKKwkJCXdyaXRlX25hbWVfcXVvdGVkKHBhdGgsIHN0ZG91dCwgJ1xuJyk7CisJCX0gZWxzZSB7CisJCQlxdW90ZV9jX3N0eWxlKGV4Y2x1ZGUtPmVsLT5zcmMsIE5VTEwsIHN0ZG91dCwgMCk7CisJCQlwcmludGYoIjolZDolcyVzJXNcdCIsCisJCQkgICAgICAgZXhjbHVkZS0+c3JjcG9zLAorCQkJICAgICAgIGJhbmcsIGV4Y2x1ZGUtPnBhdHRlcm4sIHNsYXNoKTsKKwkJCXF1b3RlX2Nfc3R5bGUocGF0aCwgTlVMTCwgc3Rkb3V0LCAwKTsKKwkJCWZwdXRjKCdcbicsIHN0ZG91dCk7CisJCX0KKwl9IGVsc2UgeworCQlpZiAoIXZlcmJvc2UpIHsKKwkJCXByaW50ZigiJXMlYyIsIHBhdGgsICdcMCcpOworCQl9IGVsc2UgeworCQkJcHJpbnRmKCIlcyVjJWQlYyVzJXMlcyVjJXMlYyIsCisJCQkgICAgICAgZXhjbHVkZS0+ZWwtPnNyYywgJ1wwJywKKwkJCSAgICAgICBleGNsdWRlLT5zcmNwb3MsICdcMCcsCisJCQkgICAgICAgYmFuZywgZXhjbHVkZS0+cGF0dGVybiwgc2xhc2gsICdcMCcsCisJCQkgICAgICAgcGF0aCwgJ1wwJyk7CisJCX0KKwl9Cit9CisKK3N0YXRpYyBpbnQgY2hlY2tfaWdub3JlKGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3QgY2hhciAqKnBhdGhzcGVjKQoreworCXN0cnVjdCBkaXJfc3RydWN0IGRpcjsKKwljb25zdCBjaGFyICpwYXRoLCAqZnVsbF9wYXRoOworCWNoYXIgKnNlZW47CisJaW50IG51bV9pZ25vcmVkID0gMCwgZHR5cGUgPSBEVF9VTktOT1dOLCBpOworCXN0cnVjdCBleGNsdWRlICpleGNsdWRlOworCisJLyogcmVhZF9jYWNoZSgpIGlzIG9ubHkgbmVjZXNzYXJ5IHNvIHdlIGNhbiB3YXRjaCBvdXQgZm9yIHN1Ym1vZHVsZXMuICovCisJaWYgKHJlYWRfY2FjaGUoKSA8IDApCisJCWRpZShfKCJpbmRleCBmaWxlIGNvcnJ1cHQiKSk7CisKKwltZW1zZXQoJmRpciwgMCwgc2l6ZW9mKGRpcikpOworCXNldHVwX3N0YW5kYXJkX2V4Y2x1ZGVzKCZkaXIpOworCisJaWYgKCFwYXRoc3BlYyB8fCAhKnBhdGhzcGVjKSB7CisJCWlmICghcXVpZXQpCisJCQlmcHJpbnRmKHN0ZGVyciwgIm5vIHBhdGhzcGVjIGdpdmVuLlxuIik7CisJCXJldHVybiAwOworCX0KKworCS8qCisJICogbG9vayBmb3IgcGF0aHNwZWNzIG1hdGNoaW5nIGVudHJpZXMgaW4gdGhlIGluZGV4LCBzaW5jZSB0aGVzZQorCSAqIHNob3VsZCBub3QgYmUgaWdub3JlZCwgaW4gb3JkZXIgdG8gYmUgY29uc2lzdGVudCB3aXRoCisJICogJ2dpdCBzdGF0dXMnLCAnZ2l0IGFkZCcgZXRjLgorCSAqLworCXNlZW4gPSBmaW5kX3BhdGhzcGVjc19tYXRjaGluZ19hZ2FpbnN0X2luZGV4KHBhdGhzcGVjKTsKKwlmb3IgKGkgPSAwOyBwYXRoc3BlY1tpXTsgaSsrKSB7CisJCXBhdGggPSBwYXRoc3BlY1tpXTsKKwkJZnVsbF9wYXRoID0gcHJlZml4X3BhdGgocHJlZml4LCBwcmVmaXgKKwkJCQkJPyBzdHJsZW4ocHJlZml4KSA6IDAsIHBhdGgpOworCQlmdWxsX3BhdGggPSBjaGVja19wYXRoX2Zvcl9naXRsaW5rKGZ1bGxfcGF0aCk7CisJCWRpZV9pZl9wYXRoX2JleW9uZF9zeW1saW5rKGZ1bGxfcGF0aCwgcHJlZml4KTsKKwkJaWYgKCFzZWVuW2ldKSB7CisJCQlleGNsdWRlID0gbGFzdF9leGNsdWRlX21hdGNoaW5nKCZkaXIsIGZ1bGxfcGF0aCwgJmR0eXBlKTsKKwkJCWlmIChleGNsdWRlKSB7CisJCQkJaWYgKCFxdWlldCkKKwkJCQkJb3V0cHV0X2V4Y2x1ZGUocGF0aCwgZXhjbHVkZSk7CisJCQkJbnVtX2lnbm9yZWQrKzsKKwkJCX0KKwkJfQorCX0KKwlmcmVlKHNlZW4pOworCWNsZWFyX2RpcmVjdG9yeSgmZGlyKTsKKworCXJldHVybiBudW1faWdub3JlZDsKK30KKworc3RhdGljIGludCBjaGVja19pZ25vcmVfc3RkaW5fcGF0aHMoY29uc3QgY2hhciAqcHJlZml4KQoreworCXN0cnVjdCBzdHJidWYgYnVmLCBuYnVmOworCWNoYXIgKipwYXRoc3BlYyA9IE5VTEw7CisJc2l6ZV90IG5yID0gMCwgYWxsb2MgPSAwOworCWludCBsaW5lX3Rlcm1pbmF0aW9uID0gbnVsbF90ZXJtX2xpbmUgPyAwIDogJ1xuJzsKKwlpbnQgbnVtX2lnbm9yZWQ7CisKKwlzdHJidWZfaW5pdCgmYnVmLCAwKTsKKwlzdHJidWZfaW5pdCgmbmJ1ZiwgMCk7CisJd2hpbGUgKHN0cmJ1Zl9nZXRsaW5lKCZidWYsIHN0ZGluLCBsaW5lX3Rlcm1pbmF0aW9uKSAhPSBFT0YpIHsKKwkJaWYgKGxpbmVfdGVybWluYXRpb24gJiYgYnVmLmJ1ZlswXSA9PSAnIicpIHsKKwkJCXN0cmJ1Zl9yZXNldCgmbmJ1Zik7CisJCQlpZiAodW5xdW90ZV9jX3N0eWxlKCZuYnVmLCBidWYuYnVmLCBOVUxMKSkKKwkJCQlkaWUoImxpbmUgaXMgYmFkbHkgcXVvdGVkIik7CisJCQlzdHJidWZfc3dhcCgmYnVmLCAmbmJ1Zik7CisJCX0KKwkJQUxMT0NfR1JPVyhwYXRoc3BlYywgbnIgKyAxLCBhbGxvYyk7CisJCXBhdGhzcGVjW25yXSA9IHhjYWxsb2Moc3RybGVuKGJ1Zi5idWYpICsgMSwgc2l6ZW9mKCpidWYuYnVmKSk7CisJCXN0cmNweShwYXRoc3BlY1tucisrXSwgYnVmLmJ1Zik7CisJfQorCUFMTE9DX0dST1cocGF0aHNwZWMsIG5yICsgMSwgYWxsb2MpOworCXBhdGhzcGVjW25yXSA9IE5VTEw7CisJbnVtX2lnbm9yZWQgPSBjaGVja19pZ25vcmUocHJlZml4LCAoY29uc3QgY2hhciAqKilwYXRoc3BlYyk7CisJbWF5YmVfZmx1c2hfb3JfZGllKHN0ZG91dCwgImF0dHJpYnV0ZSB0byBzdGRvdXQiKTsKKwlzdHJidWZfcmVsZWFzZSgmYnVmKTsKKwlzdHJidWZfcmVsZWFzZSgmbmJ1Zik7CisJZnJlZShwYXRoc3BlYyk7CisJcmV0dXJuIG51bV9pZ25vcmVkOworfQorCitpbnQgY21kX2NoZWNrX2lnbm9yZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKK3sKKwlpbnQgbnVtX2lnbm9yZWQ7CisKKwlnaXRfY29uZmlnKGdpdF9kZWZhdWx0X2NvbmZpZywgTlVMTCk7CisKKwlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBwcmVmaXgsIGNoZWNrX2lnbm9yZV9vcHRpb25zLAorCQkJICAgICBjaGVja19pZ25vcmVfdXNhZ2UsIDApOworCisJaWYgKHN0ZGluX3BhdGhzKSB7CisJCWlmIChhcmdjID4gMCkKKwkJCWRpZShfKCJjYW5ub3Qgc3BlY2lmeSBwYXRobmFtZXMgd2l0aCAtLXN0ZGluIikpOworCX0gZWxzZSB7CisJCWlmIChudWxsX3Rlcm1fbGluZSkKKwkJCWRpZShfKCIteiBvbmx5IG1ha2VzIHNlbnNlIHdpdGggLS1zdGRpbiIpKTsKKwkJaWYgKGFyZ2MgPT0gMCkKKwkJCWRpZShfKCJubyBwYXRoIHNwZWNpZmllZCIpKTsKKwl9CisJaWYgKHF1aWV0KSB7CisJCWlmIChhcmdjID4gMSkKKwkJCWRpZShfKCItLXF1aWV0IGlzIG9ubHkgdmFsaWQgd2l0aCBhIHNpbmdsZSBwYXRobmFtZSIpKTsKKwkJaWYgKHZlcmJvc2UpCisJCQlkaWUoXygiY2Fubm90IGhhdmUgYm90aCAtLXF1aWV0IGFuZCAtLXZlcmJvc2UiKSk7CisJfQorCisJaWYgKHN0ZGluX3BhdGhzKSB7CisJCW51bV9pZ25vcmVkID0gY2hlY2tfaWdub3JlX3N0ZGluX3BhdGhzKHByZWZpeCk7CisJfSBlbHNlIHsKKwkJbnVtX2lnbm9yZWQgPSBjaGVja19pZ25vcmUocHJlZml4LCBhcmd2KTsKKwkJbWF5YmVfZmx1c2hfb3JfZGllKHN0ZG91dCwgImlnbm9yZSB0byBzdGRvdXQiKTsKKwl9CisKKwlyZXR1cm4gIW51bV9pZ25vcmVkOworfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9jaGVja291dC1pbmRleC5jIGIvYnVpbHRpbi9jaGVja291dC1pbmRleC5jCmluZGV4IGMxNmQ4MmIuLmIxZmVkYTcgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vY2hlY2tvdXQtaW5kZXguYworKysgYi9idWlsdGluL2NoZWNrb3V0LWluZGV4LmMKQEAgLTEyMyw3ICsxMjMsNyBAQAogfQogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGJ1aWx0aW5fY2hlY2tvdXRfaW5kZXhfdXNhZ2VbXSA9IHsKLQkiZ2l0IGNoZWNrb3V0LWluZGV4IFtvcHRpb25zXSBbLS1dIFs8ZmlsZT4uLi5dIiwKKwlOXygiZ2l0IGNoZWNrb3V0LWluZGV4IFtvcHRpb25zXSBbLS1dIFs8ZmlsZT4uLi5dIiksCiAJTlVMTAogfTsKIApAQCAtMTg0LDI3ICsxODQsMjcgQEAKIAlpbnQgZm9yY2UgPSAwLCBxdWlldCA9IDAsIG5vdF9uZXcgPSAwOwogCXN0cnVjdCBvcHRpb24gYnVpbHRpbl9jaGVja291dF9pbmRleF9vcHRpb25zW10gPSB7CiAJCU9QVF9CT09MRUFOKCdhJywgImFsbCIsICZhbGwsCi0JCQkiY2hlY2tzIG91dCBhbGwgZmlsZXMgaW4gdGhlIGluZGV4IiksCi0JCU9QVF9fRk9SQ0UoJmZvcmNlLCAiZm9yY2VzIG92ZXJ3cml0ZSBvZiBleGlzdGluZyBmaWxlcyIpLAorCQkJTl8oImNoZWNrIG91dCBhbGwgZmlsZXMgaW4gdGhlIGluZGV4IikpLAorCQlPUFRfX0ZPUkNFKCZmb3JjZSwgTl8oImZvcmNlIG92ZXJ3cml0ZSBvZiBleGlzdGluZyBmaWxlcyIpKSwKIAkJT1BUX19RVUlFVCgmcXVpZXQsCi0JCQkibm8gd2FybmluZyBmb3IgZXhpc3RpbmcgZmlsZXMgYW5kIGZpbGVzIG5vdCBpbiBpbmRleCIpLAorCQkJTl8oIm5vIHdhcm5pbmcgZm9yIGV4aXN0aW5nIGZpbGVzIGFuZCBmaWxlcyBub3QgaW4gaW5kZXgiKSksCiAJCU9QVF9CT09MRUFOKCduJywgIm5vLWNyZWF0ZSIsICZub3RfbmV3LAotCQkJImRvbid0IGNoZWNrb3V0IG5ldyBmaWxlcyIpLAorCQkJTl8oImRvbid0IGNoZWNrb3V0IG5ldyBmaWxlcyIpKSwKIAkJeyBPUFRJT05fQ0FMTEJBQ0ssICd1JywgImluZGV4IiwgJm5ld2ZkLCBOVUxMLAotCQkJInVwZGF0ZSBzdGF0IGluZm9ybWF0aW9uIGluIHRoZSBpbmRleCBmaWxlIiwKKwkJCU5fKCJ1cGRhdGUgc3RhdCBpbmZvcm1hdGlvbiBpbiB0aGUgaW5kZXggZmlsZSIpLAogCQkJUEFSU0VfT1BUX05PQVJHLCBvcHRpb25fcGFyc2VfdSB9LAogCQl7IE9QVElPTl9DQUxMQkFDSywgJ3onLCBOVUxMLCBOVUxMLCBOVUxMLAotCQkJInBhdGhzIGFyZSBzZXBhcmF0ZWQgd2l0aCBOVUwgY2hhcmFjdGVyIiwKKwkJCU5fKCJwYXRocyBhcmUgc2VwYXJhdGVkIHdpdGggTlVMIGNoYXJhY3RlciIpLAogCQkJUEFSU0VfT1BUX05PQVJHLCBvcHRpb25fcGFyc2VfeiB9LAogCQlPUFRfQk9PTEVBTigwLCAic3RkaW4iLCAmcmVhZF9mcm9tX3N0ZGluLAotCQkJInJlYWQgbGlzdCBvZiBwYXRocyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIpLAorCQkJTl8oInJlYWQgbGlzdCBvZiBwYXRocyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIpKSwKIAkJT1BUX0JPT0xFQU4oMCwgInRlbXAiLCAmdG9fdGVtcGZpbGUsCi0JCQkid3JpdGUgdGhlIGNvbnRlbnQgdG8gdGVtcG9yYXJ5IGZpbGVzIiksCi0JCU9QVF9DQUxMQkFDSygwLCAicHJlZml4IiwgTlVMTCwgInN0cmluZyIsCi0JCQkid2hlbiBjcmVhdGluZyBmaWxlcywgcHJlcGVuZCA8c3RyaW5nPiIsCisJCQlOXygid3JpdGUgdGhlIGNvbnRlbnQgdG8gdGVtcG9yYXJ5IGZpbGVzIikpLAorCQlPUFRfQ0FMTEJBQ0soMCwgInByZWZpeCIsIE5VTEwsIE5fKCJzdHJpbmciKSwKKwkJCU5fKCJ3aGVuIGNyZWF0aW5nIGZpbGVzLCBwcmVwZW5kIDxzdHJpbmc+IiksCiAJCQlvcHRpb25fcGFyc2VfcHJlZml4KSwKIAkJT1BUX0NBTExCQUNLKDAsICJzdGFnZSIsIE5VTEwsIE5VTEwsCi0JCQkiY29weSBvdXQgdGhlIGZpbGVzIGZyb20gbmFtZWQgc3RhZ2UiLAorCQkJTl8oImNvcHkgb3V0IHRoZSBmaWxlcyBmcm9tIG5hbWVkIHN0YWdlIiksCiAJCQlvcHRpb25fcGFyc2Vfc3RhZ2UpLAogCQlPUFRfRU5EKCkKIAl9OwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9jaGVja291dC5jIGIvYnVpbHRpbi9jaGVja291dC5jCmluZGV4IGU4YzFiMWYuLmY1YjUwZTUgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vY2hlY2tvdXQuYworKysgYi9idWlsdGluL2NoZWNrb3V0LmMKQEAgLTIyLDIyICsyMiwyMCBAQAogI2luY2x1ZGUgImFyZ3YtYXJyYXkuaCIKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjaGVja291dF91c2FnZVtdID0gewotCSJnaXQgY2hlY2tvdXQgW29wdGlvbnNdIDxicmFuY2g+IiwKLQkiZ2l0IGNoZWNrb3V0IFtvcHRpb25zXSBbPGJyYW5jaD5dIC0tIDxmaWxlPi4uLiIsCisJTl8oImdpdCBjaGVja291dCBbb3B0aW9uc10gPGJyYW5jaD4iKSwKKwlOXygiZ2l0IGNoZWNrb3V0IFtvcHRpb25zXSBbPGJyYW5jaD5dIC0tIDxmaWxlPi4uLiIpLAogCU5VTEwsCiB9OwogCiBzdHJ1Y3QgY2hlY2tvdXRfb3B0cyB7CisJaW50IHBhdGNoX21vZGU7CiAJaW50IHF1aWV0OwogCWludCBtZXJnZTsKIAlpbnQgZm9yY2U7CiAJaW50IGZvcmNlX2RldGFjaDsKIAlpbnQgd3JpdGVvdXRfc3RhZ2U7Ci0JaW50IHdyaXRlb3V0X2Vycm9yOwogCWludCBvdmVyd3JpdGVfaWdub3JlOwotCi0JLyogbm90IHNldCBieSBwYXJzZV9vcHRpb25zICovCi0JaW50IGJyYW5jaF9leGlzdHM7CisJaW50IGlnbm9yZV9za2lwd29ya3RyZWU7CiAKIAljb25zdCBjaGFyICpuZXdfYnJhbmNoOwogCWNvbnN0IGNoYXIgKm5ld19icmFuY2hfZm9yY2U7CkBAIC00NSw2ICs0MywxMSBAQAogCWludCBuZXdfYnJhbmNoX2xvZzsKIAllbnVtIGJyYW5jaF90cmFjayB0cmFjazsKIAlzdHJ1Y3QgZGlmZl9vcHRpb25zIGRpZmZfb3B0aW9uczsKKworCWludCBicmFuY2hfZXhpc3RzOworCWNvbnN0IGNoYXIgKnByZWZpeDsKKwljb25zdCBjaGFyICoqcGF0aHNwZWM7CisJc3RydWN0IHRyZWUgKnNvdXJjZV90cmVlOwogfTsKIAogc3RhdGljIGludCBwb3N0X2NoZWNrb3V0X2hvb2soc3RydWN0IGNvbW1pdCAqb2xkLCBzdHJ1Y3QgY29tbWl0ICpuZXcsCkBAIC03Myw3ICs3Niw4IEBACiAJaGFzaGNweShjZS0+c2hhMSwgc2hhMSk7CiAJbWVtY3B5KGNlLT5uYW1lLCBiYXNlLCBiYXNlbGVuKTsKIAltZW1jcHkoY2UtPm5hbWUgKyBiYXNlbGVuLCBwYXRobmFtZSwgbGVuIC0gYmFzZWxlbik7Ci0JY2UtPmNlX2ZsYWdzID0gY3JlYXRlX2NlX2ZsYWdzKGxlbiwgMCkgfCBDRV9VUERBVEU7CisJY2UtPmNlX2ZsYWdzID0gY3JlYXRlX2NlX2ZsYWdzKDApIHwgQ0VfVVBEQVRFOworCWNlLT5jZV9uYW1lbGVuID0gbGVuOwogCWNlLT5jZV9tb2RlID0gY3JlYXRlX2NlX21vZGUobW9kZSk7CiAJYWRkX2NhY2hlX2VudHJ5KGNlLCBBRERfQ0FDSEVfT0tfVE9fQUREIHwgQUREX0NBQ0hFX09LX1RPX1JFUExBQ0UpOwogCXJldHVybiAwOwpAQCAtMjE0LDggKzIxOCw4IEBACiAJcmV0dXJuIHN0YXR1czsKIH0KIAotc3RhdGljIGludCBjaGVja291dF9wYXRocyhzdHJ1Y3QgdHJlZSAqc291cmNlX3RyZWUsIGNvbnN0IGNoYXIgKipwYXRoc3BlYywKLQkJCSAgY29uc3QgY2hhciAqcHJlZml4LCBzdHJ1Y3QgY2hlY2tvdXRfb3B0cyAqb3B0cykKK3N0YXRpYyBpbnQgY2hlY2tvdXRfcGF0aHMoY29uc3Qgc3RydWN0IGNoZWNrb3V0X29wdHMgKm9wdHMsCisJCQkgIGNvbnN0IGNoYXIgKnJldmlzaW9uKQogewogCWludCBwb3M7CiAJc3RydWN0IGNoZWNrb3V0IHN0YXRlOwpAQCAtMjI3LDM3ICsyMzEsOTggQEAKIAlpbnQgc3RhZ2UgPSBvcHRzLT53cml0ZW91dF9zdGFnZTsKIAlpbnQgbWVyZ2UgPSBvcHRzLT5tZXJnZTsKIAlpbnQgbmV3ZmQ7Ci0Jc3RydWN0IGxvY2tfZmlsZSAqbG9ja19maWxlID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGxvY2tfZmlsZSkpOworCXN0cnVjdCBsb2NrX2ZpbGUgKmxvY2tfZmlsZTsKKworCWlmIChvcHRzLT50cmFjayAhPSBCUkFOQ0hfVFJBQ0tfVU5TUEVDSUZJRUQpCisJCWRpZShfKCInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggdXBkYXRpbmcgcGF0aHMiKSwgIi0tdHJhY2siKTsKKworCWlmIChvcHRzLT5uZXdfYnJhbmNoX2xvZykKKwkJZGllKF8oIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCB1cGRhdGluZyBwYXRocyIpLCAiLWwiKTsKKworCWlmIChvcHRzLT5mb3JjZSAmJiBvcHRzLT5wYXRjaF9tb2RlKQorCQlkaWUoXygiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoIHVwZGF0aW5nIHBhdGhzIiksICItZiIpOworCisJaWYgKG9wdHMtPmZvcmNlX2RldGFjaCkKKwkJZGllKF8oIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCB1cGRhdGluZyBwYXRocyIpLCAiLS1kZXRhY2giKTsKKworCWlmIChvcHRzLT5tZXJnZSAmJiBvcHRzLT5wYXRjaF9tb2RlKQorCQlkaWUoXygiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoICVzIiksICItLW1lcmdlIiwgIi0tcGF0Y2giKTsKKworCWlmIChvcHRzLT5mb3JjZSAmJiBvcHRzLT5tZXJnZSkKKwkJZGllKF8oIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIpLCAiLWYiLCAiLW0iKTsKKworCWlmIChvcHRzLT5uZXdfYnJhbmNoKQorCQlkaWUoXygiQ2Fubm90IHVwZGF0ZSBwYXRocyBhbmQgc3dpdGNoIHRvIGJyYW5jaCAnJXMnIGF0IHRoZSBzYW1lIHRpbWUuIiksCisJCSAgICBvcHRzLT5uZXdfYnJhbmNoKTsKKworCWlmIChvcHRzLT5wYXRjaF9tb2RlKQorCQlyZXR1cm4gcnVuX2FkZF9pbnRlcmFjdGl2ZShyZXZpc2lvbiwgIi0tcGF0Y2g9Y2hlY2tvdXQiLAorCQkJCQkgICBvcHRzLT5wYXRoc3BlYyk7CisKKwlsb2NrX2ZpbGUgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgbG9ja19maWxlKSk7CiAKIAluZXdmZCA9IGhvbGRfbG9ja2VkX2luZGV4KGxvY2tfZmlsZSwgMSk7Ci0JaWYgKHJlYWRfY2FjaGVfcHJlbG9hZChwYXRoc3BlYykgPCAwKQorCWlmIChyZWFkX2NhY2hlX3ByZWxvYWQob3B0cy0+cGF0aHNwZWMpIDwgMCkKIAkJcmV0dXJuIGVycm9yKF8oImNvcnJ1cHQgaW5kZXggZmlsZSIpKTsKIAotCWlmIChzb3VyY2VfdHJlZSkKLQkJcmVhZF90cmVlX3NvbWUoc291cmNlX3RyZWUsIHBhdGhzcGVjKTsKKwlpZiAob3B0cy0+c291cmNlX3RyZWUpCisJCXJlYWRfdHJlZV9zb21lKG9wdHMtPnNvdXJjZV90cmVlLCBvcHRzLT5wYXRoc3BlYyk7CiAKLQlmb3IgKHBvcyA9IDA7IHBhdGhzcGVjW3Bvc107IHBvcysrKQorCWZvciAocG9zID0gMDsgb3B0cy0+cGF0aHNwZWNbcG9zXTsgcG9zKyspCiAJCTsKIAlwc19tYXRjaGVkID0geGNhbGxvYygxLCBwb3MpOwogCisJLyoKKwkgKiBNYWtlIHN1cmUgYWxsIHBhdGhzcGVjcyBwYXJ0aWNpcGF0ZWQgaW4gbG9jYXRpbmcgdGhlIHBhdGhzCisJICogdG8gYmUgY2hlY2tlZCBvdXQuCisJICovCiAJZm9yIChwb3MgPSAwOyBwb3MgPCBhY3RpdmVfbnI7IHBvcysrKSB7CiAJCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbcG9zXTsKLQkJaWYgKHNvdXJjZV90cmVlICYmICEoY2UtPmNlX2ZsYWdzICYgQ0VfVVBEQVRFKSkKKwkJY2UtPmNlX2ZsYWdzICY9IH5DRV9NQVRDSEVEOworCQlpZiAoIW9wdHMtPmlnbm9yZV9za2lwd29ya3RyZWUgJiYgY2Vfc2tpcF93b3JrdHJlZShjZSkpCiAJCQljb250aW51ZTsKLQkJbWF0Y2hfcGF0aHNwZWMocGF0aHNwZWMsIGNlLT5uYW1lLCBjZV9uYW1lbGVuKGNlKSwgMCwgcHNfbWF0Y2hlZCk7CisJCWlmIChvcHRzLT5zb3VyY2VfdHJlZSAmJiAhKGNlLT5jZV9mbGFncyAmIENFX1VQREFURSkpCisJCQkvKgorCQkJICogImdpdCBjaGVja291dCB0cmVlLWlzaCAtLSBwYXRoIiwgYnV0IHRoaXMgZW50cnkKKwkJCSAqIGlzIGluIHRoZSBvcmlnaW5hbCBpbmRleDsgaXQgd2lsbCBub3QgYmUgY2hlY2tlZAorCQkJICogb3V0IHRvIHRoZSB3b3JraW5nIHRyZWUgYW5kIGl0IGRvZXMgbm90IG1hdHRlcgorCQkJICogaWYgcGF0aHNwZWMgbWF0Y2hlZCB0aGlzIGVudHJ5LiAgV2Ugd2lsbCBub3QgZG8KKwkJCSAqIGFueXRoaW5nIHRvIHRoaXMgZW50cnkgYXQgYWxsLgorCQkJICovCisJCQljb250aW51ZTsKKwkJLyoKKwkJICogRWl0aGVyIHRoaXMgZW50cnkgY2FtZSBmcm9tIHRoZSB0cmVlLWlzaCB3ZSBhcmUKKwkJICogY2hlY2tpbmcgdGhlIHBhdGhzIG91dCBvZiwgb3Igd2UgYXJlIGNoZWNraW5nIG91dAorCQkgKiBvZiB0aGUgaW5kZXguCisJCSAqCisJCSAqIElmIGl0IGNvbWVzIGZyb20gdGhlIHRyZWUtaXNoLCB3ZSBhbHJlYWR5IGtub3cgaXQKKwkJICogbWF0Y2hlcyB0aGUgcGF0aHNwZWMgYW5kIGNvdWxkIGp1c3Qgc3RhbXAKKwkJICogQ0VfTUFUQ0hFRCB0byBpdCBmcm9tIHVwZGF0ZV9zb21lKCkuIEJ1dCB3ZSBzdGlsbAorCQkgKiBuZWVkIHBzX21hdGNoZWQgYW5kIHJlYWRfdHJlZV9yZWN1cnNpdmUgKGFuZAorCQkgKiBldmVudHVhbGx5IHRyZWVfZW50cnlfaW50ZXJlc3RpbmcpIGNhbm5vdCBmaWxsCisJCSAqIHBzX21hdGNoZWQgeWV0LiBPbmNlIGl0IGNhbiwgd2UgY2FuIGF2b2lkIGNhbGxpbmcKKwkJICogbWF0Y2hfcGF0aHNwZWMoKSBmb3IgX2FsbF8gZW50cmllcyB3aGVuCisJCSAqIG9wdHMtPnNvdXJjZV90cmVlICE9IE5VTEwuCisJCSAqLworCQlpZiAobWF0Y2hfcGF0aHNwZWMob3B0cy0+cGF0aHNwZWMsIGNlLT5uYW1lLCBjZV9uYW1lbGVuKGNlKSwKKwkJCQkgICAwLCBwc19tYXRjaGVkKSkKKwkJCWNlLT5jZV9mbGFncyB8PSBDRV9NQVRDSEVEOwogCX0KIAotCWlmIChyZXBvcnRfcGF0aF9lcnJvcihwc19tYXRjaGVkLCBwYXRoc3BlYywgcHJlZml4KSkKKwlpZiAocmVwb3J0X3BhdGhfZXJyb3IocHNfbWF0Y2hlZCwgb3B0cy0+cGF0aHNwZWMsIG9wdHMtPnByZWZpeCkpIHsKKwkJZnJlZShwc19tYXRjaGVkKTsKIAkJcmV0dXJuIDE7CisJfQorCWZyZWUocHNfbWF0Y2hlZCk7CiAKIAkvKiAiY2hlY2tvdXQgLW0gcGF0aCIgdG8gcmVjcmVhdGUgY29uZmxpY3RlZCBzdGF0ZSAqLwogCWlmIChvcHRzLT5tZXJnZSkKLQkJdW5tZXJnZV9jYWNoZShwYXRoc3BlYyk7CisJCXVubWVyZ2VfbWFya2VkX2luZGV4KCZ0aGVfaW5kZXgpOwogCiAJLyogQW55IHVubWVyZ2VkIHBhdGhzPyAqLwogCWZvciAocG9zID0gMDsgcG9zIDwgYWN0aXZlX25yOyBwb3MrKykgewogCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW3Bvc107Ci0JCWlmIChtYXRjaF9wYXRoc3BlYyhwYXRoc3BlYywgY2UtPm5hbWUsIGNlX25hbWVsZW4oY2UpLCAwLCBOVUxMKSkgeworCQlpZiAoY2UtPmNlX2ZsYWdzICYgQ0VfTUFUQ0hFRCkgewogCQkJaWYgKCFjZV9zdGFnZShjZSkpCiAJCQkJY29udGludWU7CiAJCQlpZiAob3B0cy0+Zm9yY2UpIHsKQEAgLTI4Miw5ICszNDcsNyBAQAogCXN0YXRlLnJlZnJlc2hfY2FjaGUgPSAxOwogCWZvciAocG9zID0gMDsgcG9zIDwgYWN0aXZlX25yOyBwb3MrKykgewogCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW3Bvc107Ci0JCWlmIChzb3VyY2VfdHJlZSAmJiAhKGNlLT5jZV9mbGFncyAmIENFX1VQREFURSkpCi0JCQljb250aW51ZTsKLQkJaWYgKG1hdGNoX3BhdGhzcGVjKHBhdGhzcGVjLCBjZS0+bmFtZSwgY2VfbmFtZWxlbihjZSksIDAsIE5VTEwpKSB7CisJCWlmIChjZS0+Y2VfZmxhZ3MgJiBDRV9NQVRDSEVEKSB7CiAJCQlpZiAoIWNlX3N0YWdlKGNlKSkgewogCQkJCWVycnMgfD0gY2hlY2tvdXRfZW50cnkoY2UsICZzdGF0ZSwgTlVMTCk7CiAJCQkJY29udGludWU7CkBAIC0zMDgsMTUgKzM3MSwxNSBAQAogCXJldHVybiBlcnJzOwogfQogCi1zdGF0aWMgdm9pZCBzaG93X2xvY2FsX2NoYW5nZXMoc3RydWN0IG9iamVjdCAqaGVhZCwgc3RydWN0IGRpZmZfb3B0aW9ucyAqb3B0cykKK3N0YXRpYyB2b2lkIHNob3dfbG9jYWxfY2hhbmdlcyhzdHJ1Y3Qgb2JqZWN0ICpoZWFkLAorCQkJICAgICAgIGNvbnN0IHN0cnVjdCBkaWZmX29wdGlvbnMgKm9wdHMpCiB7CiAJc3RydWN0IHJldl9pbmZvIHJldjsKIAkvKiBJIHRoaW5rIHdlIHdhbnQgZnVsbCBwYXRocywgZXZlbiBpZiB3ZSdyZSBpbiBhIHN1YmRpcmVjdG9yeS4gKi8KIAlpbml0X3JldmlzaW9ucygmcmV2LCBOVUxMKTsKIAlyZXYuZGlmZm9wdC5mbGFncyA9IG9wdHMtPmZsYWdzOwogCXJldi5kaWZmb3B0Lm91dHB1dF9mb3JtYXQgfD0gRElGRl9GT1JNQVRfTkFNRV9TVEFUVVM7Ci0JaWYgKGRpZmZfc2V0dXBfZG9uZSgmcmV2LmRpZmZvcHQpIDwgMCkKLQkJZGllKF8oImRpZmZfc2V0dXBfZG9uZSBmYWlsZWQiKSk7CisJZGlmZl9zZXR1cF9kb25lKCZyZXYuZGlmZm9wdCk7CiAJYWRkX3BlbmRpbmdfb2JqZWN0KCZyZXYsIGhlYWQsIE5VTEwpOwogCXJ1bl9kaWZmX2luZGV4KCZyZXYsIDApOwogfQpAQCAtMzMxLDcgKzM5NCw4IEBACiAJc3RyYnVmX3JlbGVhc2UoJnNiKTsKIH0KIAotc3RhdGljIGludCByZXNldF90cmVlKHN0cnVjdCB0cmVlICp0cmVlLCBzdHJ1Y3QgY2hlY2tvdXRfb3B0cyAqbywgaW50IHdvcmt0cmVlKQorc3RhdGljIGludCByZXNldF90cmVlKHN0cnVjdCB0cmVlICp0cmVlLCBjb25zdCBzdHJ1Y3QgY2hlY2tvdXRfb3B0cyAqbywKKwkJICAgICAgaW50IHdvcmt0cmVlLCBpbnQgKndyaXRlb3V0X2Vycm9yKQogewogCXN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyBvcHRzOwogCXN0cnVjdCB0cmVlX2Rlc2MgdHJlZV9kZXNjOwpAQCAtMzUwLDcgKzQxNCw3IEBACiAJaW5pdF90cmVlX2Rlc2MoJnRyZWVfZGVzYywgdHJlZS0+YnVmZmVyLCB0cmVlLT5zaXplKTsKIAlzd2l0Y2ggKHVucGFja190cmVlcygxLCAmdHJlZV9kZXNjLCAmb3B0cykpIHsKIAljYXNlIC0yOgotCQlvLT53cml0ZW91dF9lcnJvciA9IDE7CisJCSp3cml0ZW91dF9lcnJvciA9IDE7CiAJCS8qCiAJCSAqIFdlIHJldHVybiAwIG5ldmVydGhlbGVzcywgYXMgdGhlIGluZGV4IGlzIGFsbCByaWdodAogCQkgKiBhbmQgbW9yZSBpbXBvcnRhbnRseSB3ZSBoYXZlIG1hZGUgYmVzdCBlZmZvcnRzIHRvCkBAIC0zODEsOCArNDQ1LDEwIEBACiAJYnJhbmNoLT5wYXRoID0gc3RyYnVmX2RldGFjaCgmYnVmLCBOVUxMKTsKIH0KIAotc3RhdGljIGludCBtZXJnZV93b3JraW5nX3RyZWUoc3RydWN0IGNoZWNrb3V0X29wdHMgKm9wdHMsCi0JCQkgICAgICBzdHJ1Y3QgYnJhbmNoX2luZm8gKm9sZCwgc3RydWN0IGJyYW5jaF9pbmZvICpuZXcpCitzdGF0aWMgaW50IG1lcmdlX3dvcmtpbmdfdHJlZShjb25zdCBzdHJ1Y3QgY2hlY2tvdXRfb3B0cyAqb3B0cywKKwkJCSAgICAgIHN0cnVjdCBicmFuY2hfaW5mbyAqb2xkLAorCQkJICAgICAgc3RydWN0IGJyYW5jaF9pbmZvICpuZXcsCisJCQkgICAgICBpbnQgKndyaXRlb3V0X2Vycm9yKQogewogCWludCByZXQ7CiAJc3RydWN0IGxvY2tfZmlsZSAqbG9ja19maWxlID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGxvY2tfZmlsZSkpOwpAQCAtMzkzLDcgKzQ1OSw3IEBACiAKIAlyZXNvbHZlX3VuZG9fY2xlYXIoKTsKIAlpZiAob3B0cy0+Zm9yY2UpIHsKLQkJcmV0ID0gcmVzZXRfdHJlZShuZXctPmNvbW1pdC0+dHJlZSwgb3B0cywgMSk7CisJCXJldCA9IHJlc2V0X3RyZWUobmV3LT5jb21taXQtPnRyZWUsIG9wdHMsIDEsIHdyaXRlb3V0X2Vycm9yKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfSBlbHNlIHsKQEAgLTQ3OSw3ICs1NDUsOCBAQAogCQkJby52ZXJib3NpdHkgPSAwOwogCQkJd29yayA9IHdyaXRlX3RyZWVfZnJvbV9tZW1vcnkoJm8pOwogCi0JCQlyZXQgPSByZXNldF90cmVlKG5ldy0+Y29tbWl0LT50cmVlLCBvcHRzLCAxKTsKKwkJCXJldCA9IHJlc2V0X3RyZWUobmV3LT5jb21taXQtPnRyZWUsIG9wdHMsIDEsCisJCQkJCSB3cml0ZW91dF9lcnJvcik7CiAJCQlpZiAocmV0KQogCQkJCXJldHVybiByZXQ7CiAJCQlvLmFuY2VzdG9yID0gb2xkLT5uYW1lOwpAQCAtNDg3LDcgKzU1NCw4IEBACiAJCQlvLmJyYW5jaDIgPSAibG9jYWwiOwogCQkJbWVyZ2VfdHJlZXMoJm8sIG5ldy0+Y29tbWl0LT50cmVlLCB3b3JrLAogCQkJCW9sZC0+Y29tbWl0LT50cmVlLCAmcmVzdWx0KTsKLQkJCXJldCA9IHJlc2V0X3RyZWUobmV3LT5jb21taXQtPnRyZWUsIG9wdHMsIDApOworCQkJcmV0ID0gcmVzZXRfdHJlZShuZXctPmNvbW1pdC0+dHJlZSwgb3B0cywgMCwKKwkJCQkJIHdyaXRlb3V0X2Vycm9yKTsKIAkJCWlmIChyZXQpCiAJCQkJcmV0dXJuIHJldDsKIAkJfQpAQCAtNTE0LDcgKzU4Miw3IEBACiAJc3RyYnVmX3JlbGVhc2UoJnNiKTsKIH0KIAotc3RhdGljIHZvaWQgdXBkYXRlX3JlZnNfZm9yX3N3aXRjaChzdHJ1Y3QgY2hlY2tvdXRfb3B0cyAqb3B0cywKK3N0YXRpYyB2b2lkIHVwZGF0ZV9yZWZzX2Zvcl9zd2l0Y2goY29uc3Qgc3RydWN0IGNoZWNrb3V0X29wdHMgKm9wdHMsCiAJCQkJICAgc3RydWN0IGJyYW5jaF9pbmZvICpvbGQsCiAJCQkJICAgc3RydWN0IGJyYW5jaF9pbmZvICpuZXcpCiB7CkBAIC02MDUsNyArNjczLDcgQEAKIAkJCQkJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsCiAJCQkJCSBpbnQgZmxhZ3MsIHZvaWQgKmNiX2RhdGEpCiB7Ci0JYWRkX3BlbmRpbmdfc2hhMShjYl9kYXRhLCByZWZuYW1lLCBzaGExLCBmbGFncyB8IFVOSU5URVJFU1RJTkcpOworCWFkZF9wZW5kaW5nX3NoYTEoY2JfZGF0YSwgcmVmbmFtZSwgc2hhMSwgVU5JTlRFUkVTVElORyk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTY2NCw3ICs3MzIsNyBAQAogCQkJIklmIHlvdSB3YW50IHRvIGtlZXAgdGhlbSBieSBjcmVhdGluZyBhIG5ldyBicmFuY2gsICIKIAkJCSJ0aGlzIG1heSBiZSBhIGdvb2QgdGltZVxudG8gZG8gc28gd2l0aDpcblxuIgogCQkJIiBnaXQgYnJhbmNoIG5ld19icmFuY2hfbmFtZSAlc1xuXG4iKSwKLQkJCXNoYTFfdG9faGV4KGNvbW1pdC0+b2JqZWN0LnNoYTEpKTsKKwkJCWZpbmRfdW5pcXVlX2FiYnJldihjb21taXQtPm9iamVjdC5zaGExLCBERUZBVUxUX0FCQlJFVikpOwogfQogCiAvKgpAQCAtNzAxLDEzICs3NjksMTQgQEAKIAlmcmVlKHJlZnMub2JqZWN0cyk7CiB9CiAKLXN0YXRpYyBpbnQgc3dpdGNoX2JyYW5jaGVzKHN0cnVjdCBjaGVja291dF9vcHRzICpvcHRzLCBzdHJ1Y3QgYnJhbmNoX2luZm8gKm5ldykKK3N0YXRpYyBpbnQgc3dpdGNoX2JyYW5jaGVzKGNvbnN0IHN0cnVjdCBjaGVja291dF9vcHRzICpvcHRzLAorCQkJICAgc3RydWN0IGJyYW5jaF9pbmZvICpuZXcpCiB7CiAJaW50IHJldCA9IDA7CiAJc3RydWN0IGJyYW5jaF9pbmZvIG9sZDsKIAl2b2lkICpwYXRoX3RvX2ZyZWU7CiAJdW5zaWduZWQgY2hhciByZXZbMjBdOwotCWludCBmbGFnOworCWludCBmbGFnLCB3cml0ZW91dF9lcnJvciA9IDA7CiAJbWVtc2V0KCZvbGQsIDAsIHNpemVvZihvbGQpKTsKIAlvbGQucGF0aCA9IHBhdGhfdG9fZnJlZSA9IHJlc29sdmVfcmVmZHVwKCJIRUFEIiwgcmV2LCAwLCAmZmxhZyk7CiAJb2xkLmNvbW1pdCA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlX2dlbnRseShyZXYsIDEpOwpAQCAtNzI1LDcgKzc5NCw3IEBACiAJCXBhcnNlX2NvbW1pdChuZXctPmNvbW1pdCk7CiAJfQogCi0JcmV0ID0gbWVyZ2Vfd29ya2luZ190cmVlKG9wdHMsICZvbGQsIG5ldyk7CisJcmV0ID0gbWVyZ2Vfd29ya2luZ190cmVlKG9wdHMsICZvbGQsIG5ldywgJndyaXRlb3V0X2Vycm9yKTsKIAlpZiAocmV0KSB7CiAJCWZyZWUocGF0aF90b19mcmVlKTsKIAkJcmV0dXJuIHJldDsKQEAgLTczOCw3ICs4MDcsNyBAQAogCiAJcmV0ID0gcG9zdF9jaGVja291dF9ob29rKG9sZC5jb21taXQsIG5ldy0+Y29tbWl0LCAxKTsKIAlmcmVlKHBhdGhfdG9fZnJlZSk7Ci0JcmV0dXJuIHJldCB8fCBvcHRzLT53cml0ZW91dF9lcnJvcjsKKwlyZXR1cm4gcmV0IHx8IHdyaXRlb3V0X2Vycm9yOwogfQogCiBzdGF0aWMgaW50IGdpdF9jaGVja291dF9jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqY2IpCkBAIC03NTUsNDUgKzgyNCw0MSBAQAogCXJldHVybiBnaXRfeG1lcmdlX2NvbmZpZyh2YXIsIHZhbHVlLCBOVUxMKTsKIH0KIAotc3RhdGljIGludCBpbnRlcmFjdGl2ZV9jaGVja291dChjb25zdCBjaGFyICpyZXZpc2lvbiwgY29uc3QgY2hhciAqKnBhdGhzcGVjLAotCQkJCXN0cnVjdCBjaGVja291dF9vcHRzICpvcHRzKQotewotCXJldHVybiBydW5fYWRkX2ludGVyYWN0aXZlKHJldmlzaW9uLCAiLS1wYXRjaD1jaGVja291dCIsIHBhdGhzcGVjKTsKLX0KLQogc3RydWN0IHRyYWNraW5nX25hbWVfZGF0YSB7Ci0JY29uc3QgY2hhciAqbmFtZTsKLQljaGFyICpyZW1vdGU7CisJLyogY29uc3QgKi8gY2hhciAqc3JjX3JlZjsKKwljaGFyICpkc3RfcmVmOworCXVuc2lnbmVkIGNoYXIgKmRzdF9zaGExOwogCWludCB1bmlxdWU7CiB9OwogCi1zdGF0aWMgaW50IGNoZWNrX3RyYWNraW5nX25hbWUoY29uc3QgY2hhciAqcmVmbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKLQkJCSAgICAgICBpbnQgZmxhZ3MsIHZvaWQgKmNiX2RhdGEpCitzdGF0aWMgaW50IGNoZWNrX3RyYWNraW5nX25hbWUoc3RydWN0IHJlbW90ZSAqcmVtb3RlLCB2b2lkICpjYl9kYXRhKQogewogCXN0cnVjdCB0cmFja2luZ19uYW1lX2RhdGEgKmNiID0gY2JfZGF0YTsKLQljb25zdCBjaGFyICpzbGFzaDsKLQotCWlmIChwcmVmaXhjbXAocmVmbmFtZSwgInJlZnMvcmVtb3Rlcy8iKSkKKwlzdHJ1Y3QgcmVmc3BlYyBxdWVyeTsKKwltZW1zZXQoJnF1ZXJ5LCAwLCBzaXplb2Yoc3RydWN0IHJlZnNwZWMpKTsKKwlxdWVyeS5zcmMgPSBjYi0+c3JjX3JlZjsKKwlpZiAocmVtb3RlX2ZpbmRfdHJhY2tpbmcocmVtb3RlLCAmcXVlcnkpIHx8CisJICAgIGdldF9zaGExKHF1ZXJ5LmRzdCwgY2ItPmRzdF9zaGExKSkKIAkJcmV0dXJuIDA7Ci0Jc2xhc2ggPSBzdHJjaHIocmVmbmFtZSArIDEzLCAnLycpOwotCWlmICghc2xhc2ggfHwgc3RyY21wKHNsYXNoICsgMSwgY2ItPm5hbWUpKQotCQlyZXR1cm4gMDsKLQlpZiAoY2ItPnJlbW90ZSkgeworCWlmIChjYi0+ZHN0X3JlZikgewogCQljYi0+dW5pcXVlID0gMDsKIAkJcmV0dXJuIDA7CiAJfQotCWNiLT5yZW1vdGUgPSB4c3RyZHVwKHJlZm5hbWUpOworCWNiLT5kc3RfcmVmID0geHN0cmR1cChxdWVyeS5kc3QpOwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciAqdW5pcXVlX3RyYWNraW5nX25hbWUoY29uc3QgY2hhciAqbmFtZSkKK3N0YXRpYyBjb25zdCBjaGFyICp1bmlxdWVfdHJhY2tpbmdfbmFtZShjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBjaGFyICpzaGExKQogewotCXN0cnVjdCB0cmFja2luZ19uYW1lX2RhdGEgY2JfZGF0YSA9IHsgTlVMTCwgTlVMTCwgMSB9OwotCWNiX2RhdGEubmFtZSA9IG5hbWU7Ci0JZm9yX2VhY2hfcmVmKGNoZWNrX3RyYWNraW5nX25hbWUsICZjYl9kYXRhKTsKKwlzdHJ1Y3QgdHJhY2tpbmdfbmFtZV9kYXRhIGNiX2RhdGEgPSB7IE5VTEwsIE5VTEwsIE5VTEwsIDEgfTsKKwljaGFyIHNyY19yZWZbUEFUSF9NQVhdOworCXNucHJpbnRmKHNyY19yZWYsIFBBVEhfTUFYLCAicmVmcy9oZWFkcy8lcyIsIG5hbWUpOworCWNiX2RhdGEuc3JjX3JlZiA9IHNyY19yZWY7CisJY2JfZGF0YS5kc3Rfc2hhMSA9IHNoYTE7CisJZm9yX2VhY2hfcmVtb3RlKGNoZWNrX3RyYWNraW5nX25hbWUsICZjYl9kYXRhKTsKIAlpZiAoY2JfZGF0YS51bmlxdWUpCi0JCXJldHVybiBjYl9kYXRhLnJlbW90ZTsKLQlmcmVlKGNiX2RhdGEucmVtb3RlKTsKKwkJcmV0dXJuIGNiX2RhdGEuZHN0X3JlZjsKKwlmcmVlKGNiX2RhdGEuZHN0X3JlZik7CiAJcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTg1Niw4ICs5MjEsOCBAQAogCQlpZiAoZHdpbV9uZXdfbG9jYWxfYnJhbmNoX29rICYmCiAJCSAgICAhY2hlY2tfZmlsZW5hbWUoTlVMTCwgYXJnKSAmJgogCQkgICAgYXJnYyA9PSAxKSB7Ci0JCQljb25zdCBjaGFyICpyZW1vdGUgPSB1bmlxdWVfdHJhY2tpbmdfbmFtZShhcmcpOwotCQkJaWYgKCFyZW1vdGUgfHwgZ2V0X3NoYTEocmVtb3RlLCByZXYpKQorCQkJY29uc3QgY2hhciAqcmVtb3RlID0gdW5pcXVlX3RyYWNraW5nX25hbWUoYXJnLCByZXYpOworCQkJaWYgKCFyZW1vdGUpCiAJCQkJcmV0dXJuIGFyZ2NvdW50OwogCQkJKm5ld19icmFuY2ggPSBhcmc7CiAJCQlhcmcgPSByZW1vdGU7CkBAIC05MTAsNDkgKzk3NSw5OCBAQAogCXJldHVybiBhcmdjb3VudDsKIH0KIAotc3RhdGljIGludCBzd2l0Y2hfdW5ib3JuX3RvX25ld19icmFuY2goc3RydWN0IGNoZWNrb3V0X29wdHMgKm9wdHMpCitzdGF0aWMgaW50IHN3aXRjaF91bmJvcm5fdG9fbmV3X2JyYW5jaChjb25zdCBzdHJ1Y3QgY2hlY2tvdXRfb3B0cyAqb3B0cykKIHsKIAlpbnQgc3RhdHVzOwogCXN0cnVjdCBzdHJidWYgYnJhbmNoX3JlZiA9IFNUUkJVRl9JTklUOwogCisJaWYgKCFvcHRzLT5uZXdfYnJhbmNoKQorCQlkaWUoXygiWW91IGFyZSBvbiBhIGJyYW5jaCB5ZXQgdG8gYmUgYm9ybiIpKTsKIAlzdHJidWZfYWRkZigmYnJhbmNoX3JlZiwgInJlZnMvaGVhZHMvJXMiLCBvcHRzLT5uZXdfYnJhbmNoKTsKIAlzdGF0dXMgPSBjcmVhdGVfc3ltcmVmKCJIRUFEIiwgYnJhbmNoX3JlZi5idWYsICJjaGVja291dCAtYiIpOwogCXN0cmJ1Zl9yZWxlYXNlKCZicmFuY2hfcmVmKTsKKwlpZiAoIW9wdHMtPnF1aWV0KQorCQlmcHJpbnRmKHN0ZGVyciwgXygiU3dpdGNoZWQgdG8gYSBuZXcgYnJhbmNoICclcydcbiIpLAorCQkJb3B0cy0+bmV3X2JyYW5jaCk7CiAJcmV0dXJuIHN0YXR1czsKIH0KIAorc3RhdGljIGludCBjaGVja291dF9icmFuY2goc3RydWN0IGNoZWNrb3V0X29wdHMgKm9wdHMsCisJCQkgICBzdHJ1Y3QgYnJhbmNoX2luZm8gKm5ldykKK3sKKwlpZiAob3B0cy0+cGF0aHNwZWMpCisJCWRpZShfKCJwYXRocyBjYW5ub3QgYmUgdXNlZCB3aXRoIHN3aXRjaGluZyBicmFuY2hlcyIpKTsKKworCWlmIChvcHRzLT5wYXRjaF9tb2RlKQorCQlkaWUoXygiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoIHN3aXRjaGluZyBicmFuY2hlcyIpLAorCQkgICAgIi0tcGF0Y2giKTsKKworCWlmIChvcHRzLT53cml0ZW91dF9zdGFnZSkKKwkJZGllKF8oIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMiKSwKKwkJICAgICItLW91cnMvLS10aGVpcnMiKTsKKworCWlmIChvcHRzLT5mb3JjZSAmJiBvcHRzLT5tZXJnZSkKKwkJZGllKF8oIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCAnJXMnIiksICItZiIsICItbSIpOworCisJaWYgKG9wdHMtPmZvcmNlX2RldGFjaCAmJiBvcHRzLT5uZXdfYnJhbmNoKQorCQlkaWUoXygiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoICclcyciKSwKKwkJICAgICItLWRldGFjaCIsICItYi8tQi8tLW9ycGhhbiIpOworCisJaWYgKG9wdHMtPm5ld19vcnBoYW5fYnJhbmNoKSB7CisJCWlmIChvcHRzLT50cmFjayAhPSBCUkFOQ0hfVFJBQ0tfVU5TUEVDSUZJRUQpCisJCQlkaWUoXygiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoICclcyciKSwgIi0tb3JwaGFuIiwgIi10Iik7CisJfSBlbHNlIGlmIChvcHRzLT5mb3JjZV9kZXRhY2gpIHsKKwkJaWYgKG9wdHMtPnRyYWNrICE9IEJSQU5DSF9UUkFDS19VTlNQRUNJRklFRCkKKwkJCWRpZShfKCInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggJyVzJyIpLCAiLS1kZXRhY2giLCAiLXQiKTsKKwl9IGVsc2UgaWYgKG9wdHMtPnRyYWNrID09IEJSQU5DSF9UUkFDS19VTlNQRUNJRklFRCkKKwkJb3B0cy0+dHJhY2sgPSBnaXRfYnJhbmNoX3RyYWNrOworCisJaWYgKG5ldy0+bmFtZSAmJiAhbmV3LT5jb21taXQpCisJCWRpZShfKCJDYW5ub3Qgc3dpdGNoIGJyYW5jaCB0byBhIG5vbi1jb21taXQgJyVzJyIpLAorCQkgICAgbmV3LT5uYW1lKTsKKworCWlmICghbmV3LT5jb21taXQgJiYgb3B0cy0+bmV3X2JyYW5jaCkgeworCQl1bnNpZ25lZCBjaGFyIHJldlsyMF07CisJCWludCBmbGFnOworCisJCWlmICghcmVhZF9yZWZfZnVsbCgiSEVBRCIsIHJldiwgMCwgJmZsYWcpICYmCisJCSAgICAoZmxhZyAmIFJFRl9JU1NZTVJFRikgJiYgaXNfbnVsbF9zaGExKHJldikpCisJCQlyZXR1cm4gc3dpdGNoX3VuYm9ybl90b19uZXdfYnJhbmNoKG9wdHMpOworCX0KKwlyZXR1cm4gc3dpdGNoX2JyYW5jaGVzKG9wdHMsIG5ldyk7Cit9CisKIGludCBjbWRfY2hlY2tvdXQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7CiAJc3RydWN0IGNoZWNrb3V0X29wdHMgb3B0czsKLQl1bnNpZ25lZCBjaGFyIHJldlsyMF07CiAJc3RydWN0IGJyYW5jaF9pbmZvIG5ldzsKLQlzdHJ1Y3QgdHJlZSAqc291cmNlX3RyZWUgPSBOVUxMOwogCWNoYXIgKmNvbmZsaWN0X3N0eWxlID0gTlVMTDsKLQlpbnQgcGF0Y2hfbW9kZSA9IDA7CiAJaW50IGR3aW1fbmV3X2xvY2FsX2JyYW5jaCA9IDE7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCU9QVF9fUVVJRVQoJm9wdHMucXVpZXQsICJzdXBwcmVzcyBwcm9ncmVzcyByZXBvcnRpbmciKSwKLQkJT1BUX1NUUklORygnYicsIE5VTEwsICZvcHRzLm5ld19icmFuY2gsICJicmFuY2giLAotCQkJICAgImNyZWF0ZSBhbmQgY2hlY2tvdXQgYSBuZXcgYnJhbmNoIiksCi0JCU9QVF9TVFJJTkcoJ0InLCBOVUxMLCAmb3B0cy5uZXdfYnJhbmNoX2ZvcmNlLCAiYnJhbmNoIiwKLQkJCSAgICJjcmVhdGUvcmVzZXQgYW5kIGNoZWNrb3V0IGEgYnJhbmNoIiksCi0JCU9QVF9CT09MRUFOKCdsJywgTlVMTCwgJm9wdHMubmV3X2JyYW5jaF9sb2csICJjcmVhdGUgcmVmbG9nIGZvciBuZXcgYnJhbmNoIiksCi0JCU9QVF9CT09MRUFOKDAsICJkZXRhY2giLCAmb3B0cy5mb3JjZV9kZXRhY2gsICJkZXRhY2ggdGhlIEhFQUQgYXQgbmFtZWQgY29tbWl0IiksCi0JCU9QVF9TRVRfSU5UKCd0JywgInRyYWNrIiwgICZvcHRzLnRyYWNrLCAic2V0IHVwc3RyZWFtIGluZm8gZm9yIG5ldyBicmFuY2giLAorCQlPUFRfX1FVSUVUKCZvcHRzLnF1aWV0LCBOXygic3VwcHJlc3MgcHJvZ3Jlc3MgcmVwb3J0aW5nIikpLAorCQlPUFRfU1RSSU5HKCdiJywgTlVMTCwgJm9wdHMubmV3X2JyYW5jaCwgTl8oImJyYW5jaCIpLAorCQkJICAgTl8oImNyZWF0ZSBhbmQgY2hlY2tvdXQgYSBuZXcgYnJhbmNoIikpLAorCQlPUFRfU1RSSU5HKCdCJywgTlVMTCwgJm9wdHMubmV3X2JyYW5jaF9mb3JjZSwgTl8oImJyYW5jaCIpLAorCQkJICAgTl8oImNyZWF0ZS9yZXNldCBhbmQgY2hlY2tvdXQgYSBicmFuY2giKSksCisJCU9QVF9CT09MRUFOKCdsJywgTlVMTCwgJm9wdHMubmV3X2JyYW5jaF9sb2csIE5fKCJjcmVhdGUgcmVmbG9nIGZvciBuZXcgYnJhbmNoIikpLAorCQlPUFRfQk9PTEVBTigwLCAiZGV0YWNoIiwgJm9wdHMuZm9yY2VfZGV0YWNoLCBOXygiZGV0YWNoIHRoZSBIRUFEIGF0IG5hbWVkIGNvbW1pdCIpKSwKKwkJT1BUX1NFVF9JTlQoJ3QnLCAidHJhY2siLCAgJm9wdHMudHJhY2ssIE5fKCJzZXQgdXBzdHJlYW0gaW5mbyBmb3IgbmV3IGJyYW5jaCIpLAogCQkJQlJBTkNIX1RSQUNLX0VYUExJQ0lUKSwKLQkJT1BUX1NUUklORygwLCAib3JwaGFuIiwgJm9wdHMubmV3X29ycGhhbl9icmFuY2gsICJuZXcgYnJhbmNoIiwgIm5ldyB1bnBhcmVudGVkIGJyYW5jaCIpLAotCQlPUFRfU0VUX0lOVCgnMicsICJvdXJzIiwgJm9wdHMud3JpdGVvdXRfc3RhZ2UsICJjaGVja291dCBvdXIgdmVyc2lvbiBmb3IgdW5tZXJnZWQgZmlsZXMiLAorCQlPUFRfU1RSSU5HKDAsICJvcnBoYW4iLCAmb3B0cy5uZXdfb3JwaGFuX2JyYW5jaCwgTl8oIm5ldyBicmFuY2giKSwgTl8oIm5ldyB1bnBhcmVudGVkIGJyYW5jaCIpKSwKKwkJT1BUX1NFVF9JTlQoJzInLCAib3VycyIsICZvcHRzLndyaXRlb3V0X3N0YWdlLCBOXygiY2hlY2tvdXQgb3VyIHZlcnNpb24gZm9yIHVubWVyZ2VkIGZpbGVzIiksCiAJCQkgICAgMiksCi0JCU9QVF9TRVRfSU5UKCczJywgInRoZWlycyIsICZvcHRzLndyaXRlb3V0X3N0YWdlLCAiY2hlY2tvdXQgdGhlaXIgdmVyc2lvbiBmb3IgdW5tZXJnZWQgZmlsZXMiLAorCQlPUFRfU0VUX0lOVCgnMycsICJ0aGVpcnMiLCAmb3B0cy53cml0ZW91dF9zdGFnZSwgTl8oImNoZWNrb3V0IHRoZWlyIHZlcnNpb24gZm9yIHVubWVyZ2VkIGZpbGVzIiksCiAJCQkgICAgMyksCi0JCU9QVF9fRk9SQ0UoJm9wdHMuZm9yY2UsICJmb3JjZSBjaGVja291dCAodGhyb3cgYXdheSBsb2NhbCBtb2RpZmljYXRpb25zKSIpLAotCQlPUFRfQk9PTEVBTignbScsICJtZXJnZSIsICZvcHRzLm1lcmdlLCAicGVyZm9ybSBhIDMtd2F5IG1lcmdlIHdpdGggdGhlIG5ldyBicmFuY2giKSwKLQkJT1BUX0JPT0xFQU4oMCwgIm92ZXJ3cml0ZS1pZ25vcmUiLCAmb3B0cy5vdmVyd3JpdGVfaWdub3JlLCAidXBkYXRlIGlnbm9yZWQgZmlsZXMgKGRlZmF1bHQpIiksCi0JCU9QVF9TVFJJTkcoMCwgImNvbmZsaWN0IiwgJmNvbmZsaWN0X3N0eWxlLCAic3R5bGUiLAotCQkJICAgImNvbmZsaWN0IHN0eWxlIChtZXJnZSBvciBkaWZmMykiKSwKLQkJT1BUX0JPT0xFQU4oJ3AnLCAicGF0Y2giLCAmcGF0Y2hfbW9kZSwgInNlbGVjdCBodW5rcyBpbnRlcmFjdGl2ZWx5IiksCisJCU9QVF9fRk9SQ0UoJm9wdHMuZm9yY2UsIE5fKCJmb3JjZSBjaGVja291dCAodGhyb3cgYXdheSBsb2NhbCBtb2RpZmljYXRpb25zKSIpKSwKKwkJT1BUX0JPT0xFQU4oJ20nLCAibWVyZ2UiLCAmb3B0cy5tZXJnZSwgTl8oInBlcmZvcm0gYSAzLXdheSBtZXJnZSB3aXRoIHRoZSBuZXcgYnJhbmNoIikpLAorCQlPUFRfQk9PTEVBTigwLCAib3ZlcndyaXRlLWlnbm9yZSIsICZvcHRzLm92ZXJ3cml0ZV9pZ25vcmUsIE5fKCJ1cGRhdGUgaWdub3JlZCBmaWxlcyAoZGVmYXVsdCkiKSksCisJCU9QVF9TVFJJTkcoMCwgImNvbmZsaWN0IiwgJmNvbmZsaWN0X3N0eWxlLCBOXygic3R5bGUiKSwKKwkJCSAgIE5fKCJjb25mbGljdCBzdHlsZSAobWVyZ2Ugb3IgZGlmZjMpIikpLAorCQlPUFRfQk9PTEVBTigncCcsICJwYXRjaCIsICZvcHRzLnBhdGNoX21vZGUsIE5fKCJzZWxlY3QgaHVua3MgaW50ZXJhY3RpdmVseSIpKSwKKwkJT1BUX0JPT0woMCwgImlnbm9yZS1za2lwLXdvcmt0cmVlLWJpdHMiLCAmb3B0cy5pZ25vcmVfc2tpcHdvcmt0cmVlLAorCQkJIE5fKCJkbyBub3QgbGltaXQgcGF0aHNwZWNzIHRvIHNwYXJzZSBlbnRyaWVzIG9ubHkiKSksCiAJCXsgT1BUSU9OX0JPT0xFQU4sIDAsICJndWVzcyIsICZkd2ltX25ld19sb2NhbF9icmFuY2gsIE5VTEwsCi0JCSAgInNlY29uZCBndWVzcyAnZ2l0IGNoZWNrb3V0IG5vLXN1Y2gtYnJhbmNoJyIsCisJCSAgTl8oInNlY29uZCBndWVzcyAnZ2l0IGNoZWNrb3V0IG5vLXN1Y2gtYnJhbmNoJyIpLAogCQkgIFBBUlNFX09QVF9OT0FSRyB8IFBBUlNFX09QVF9ISURERU4gfSwKIAkJT1BUX0VORCgpLAogCX07CkBAIC05NjAsNiArMTA3NCw3IEBACiAJbWVtc2V0KCZvcHRzLCAwLCBzaXplb2Yob3B0cykpOwogCW1lbXNldCgmbmV3LCAwLCBzaXplb2YobmV3KSk7CiAJb3B0cy5vdmVyd3JpdGVfaWdub3JlID0gMTsKKwlvcHRzLnByZWZpeCA9IHByZWZpeDsKIAogCWdpdG1vZHVsZXNfY29uZmlnKCk7CiAJZ2l0X2NvbmZpZyhnaXRfY2hlY2tvdXRfY29uZmlnLCAmb3B0cyk7CkBAIC05NjksMjYgKzEwODQsMjcgQEAKIAlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBwcmVmaXgsIG9wdGlvbnMsIGNoZWNrb3V0X3VzYWdlLAogCQkJICAgICBQQVJTRV9PUFRfS0VFUF9EQVNIREFTSCk7CiAKLQkvKiB3ZSBjYW4gYXNzdW1lIGZyb20gbm93IG9uIG5ld19icmFuY2ggPSAhbmV3X2JyYW5jaF9mb3JjZSAqLwotCWlmIChvcHRzLm5ld19icmFuY2ggJiYgb3B0cy5uZXdfYnJhbmNoX2ZvcmNlKQotCQlkaWUoXygiLUIgY2Fubm90IGJlIHVzZWQgd2l0aCAtYiIpKTsKKwlpZiAoY29uZmxpY3Rfc3R5bGUpIHsKKwkJb3B0cy5tZXJnZSA9IDE7IC8qIGltcGxpZWQgKi8KKwkJZ2l0X3htZXJnZV9jb25maWcoIm1lcmdlLmNvbmZsaWN0c3R5bGUiLCBjb25mbGljdF9zdHlsZSwgTlVMTCk7CisJfQogCi0JLyogY29weSAtQiBvdmVyIHRvIC1iLCBzbyB0aGF0IHdlIGNhbiBqdXN0IGNoZWNrIHRoZSBsYXR0ZXIgKi8KKwlpZiAoKCEhb3B0cy5uZXdfYnJhbmNoICsgISFvcHRzLm5ld19icmFuY2hfZm9yY2UgKyAhIW9wdHMubmV3X29ycGhhbl9icmFuY2gpID4gMSkKKwkJZGllKF8oIi1iLCAtQiBhbmQgLS1vcnBoYW4gYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSIpKTsKKworCS8qCisJICogRnJvbSBoZXJlIG9uLCBuZXdfYnJhbmNoIHdpbGwgY29udGFpbiB0aGUgYnJhbmNoIHRvIGJlIGNoZWNrZWQgb3V0LAorCSAqIGFuZCBuZXdfYnJhbmNoX2ZvcmNlIGFuZCBuZXdfb3JwaGFuX2JyYW5jaCB3aWxsIHRlbGwgdXMgd2hpY2ggb25lIG9mCisJICogLWIvLUIvLS1vcnBoYW4gaXMgYmVpbmcgdXNlZC4KKwkgKi8KIAlpZiAob3B0cy5uZXdfYnJhbmNoX2ZvcmNlKQogCQlvcHRzLm5ld19icmFuY2ggPSBvcHRzLm5ld19icmFuY2hfZm9yY2U7CiAKLQlpZiAocGF0Y2hfbW9kZSAmJiAob3B0cy50cmFjayA+IDAgfHwgb3B0cy5uZXdfYnJhbmNoCi0JCQkgICB8fCBvcHRzLm5ld19icmFuY2hfbG9nIHx8IG9wdHMubWVyZ2UgfHwgb3B0cy5mb3JjZQotCQkJICAgfHwgb3B0cy5mb3JjZV9kZXRhY2gpKQotCQlkaWUgKF8oIi0tcGF0Y2ggaXMgaW5jb21wYXRpYmxlIHdpdGggYWxsIG90aGVyIG9wdGlvbnMiKSk7CisJaWYgKG9wdHMubmV3X29ycGhhbl9icmFuY2gpCisJCW9wdHMubmV3X2JyYW5jaCA9IG9wdHMubmV3X29ycGhhbl9icmFuY2g7CiAKLQlpZiAob3B0cy5mb3JjZV9kZXRhY2ggJiYgKG9wdHMubmV3X2JyYW5jaCB8fCBvcHRzLm5ld19vcnBoYW5fYnJhbmNoKSkKLQkJZGllKF8oIi0tZGV0YWNoIGNhbm5vdCBiZSB1c2VkIHdpdGggLWIvLUIvLS1vcnBoYW4iKSk7Ci0JaWYgKG9wdHMuZm9yY2VfZGV0YWNoICYmIDAgPCBvcHRzLnRyYWNrKQotCQlkaWUoXygiLS1kZXRhY2ggY2Fubm90IGJlIHVzZWQgd2l0aCAtdCIpKTsKLQotCS8qIC0tdHJhY2sgd2l0aG91dCAtYiBzaG91bGQgRFdJTSAqLwotCWlmICgwIDwgb3B0cy50cmFjayAmJiAhb3B0cy5uZXdfYnJhbmNoKSB7CisJLyogLS10cmFjayB3aXRob3V0IC1iLy1CLy0tb3JwaGFuIHNob3VsZCBEV0lNICovCisJaWYgKG9wdHMudHJhY2sgIT0gQlJBTkNIX1RSQUNLX1VOU1BFQ0lGSUVEICYmICFvcHRzLm5ld19icmFuY2gpIHsKIAkJY29uc3QgY2hhciAqYXJndjAgPSBhcmd2WzBdOwogCQlpZiAoIWFyZ2MgfHwgIXN0cmNtcChhcmd2MCwgIi0tIikpCiAJCQlkaWUgKF8oIi0tdHJhY2sgbmVlZHMgYSBicmFuY2ggbmFtZSIpKTsKQEAgLTEwMDIsMjIgKzExMTgsNiBAQAogCQlvcHRzLm5ld19icmFuY2ggPSBhcmd2MCArIDE7CiAJfQogCi0JaWYgKG9wdHMubmV3X29ycGhhbl9icmFuY2gpIHsKLQkJaWYgKG9wdHMubmV3X2JyYW5jaCkKLQkJCWRpZShfKCItLW9ycGhhbiBhbmQgLWJ8LUIgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSIpKTsKLQkJaWYgKG9wdHMudHJhY2sgPiAwKQotCQkJZGllKF8oIi0tb3JwaGFuIGNhbm5vdCBiZSB1c2VkIHdpdGggLXQiKSk7Ci0JCW9wdHMubmV3X2JyYW5jaCA9IG9wdHMubmV3X29ycGhhbl9icmFuY2g7Ci0JfQotCi0JaWYgKGNvbmZsaWN0X3N0eWxlKSB7Ci0JCW9wdHMubWVyZ2UgPSAxOyAvKiBpbXBsaWVkICovCi0JCWdpdF94bWVyZ2VfY29uZmlnKCJtZXJnZS5jb25mbGljdHN0eWxlIiwgY29uZmxpY3Rfc3R5bGUsIE5VTEwpOwotCX0KLQotCWlmIChvcHRzLmZvcmNlICYmIG9wdHMubWVyZ2UpCi0JCWRpZShfKCJnaXQgY2hlY2tvdXQ6IC1mIGFuZCAtbSBhcmUgaW5jb21wYXRpYmxlIikpOwotCiAJLyoKIAkgKiBFeHRyYWN0IGJyYW5jaCBuYW1lIGZyb20gY29tbWFuZCBsaW5lIGFyZ3VtZW50cywgc28KIAkgKiBhbGwgdGhhdCBpcyBsZWZ0IGlzIHBhdGhzcGVjcy4KQEAgLTEwMzIsNzMgKzExMzIsNTYgQEAKIAkgKiByZW1vdGUgYnJhbmNoZXMsIGVycm9yaW5nIG91dCBmb3IgaW52YWxpZCBvciBhbWJpZ3VvdXMgY2FzZXMuCiAJICovCiAJaWYgKGFyZ2MpIHsKKwkJdW5zaWduZWQgY2hhciByZXZbMjBdOwogCQlpbnQgZHdpbV9vayA9Ci0JCQkhcGF0Y2hfbW9kZSAmJgorCQkJIW9wdHMucGF0Y2hfbW9kZSAmJgogCQkJZHdpbV9uZXdfbG9jYWxfYnJhbmNoICYmCiAJCQlvcHRzLnRyYWNrID09IEJSQU5DSF9UUkFDS19VTlNQRUNJRklFRCAmJgogCQkJIW9wdHMubmV3X2JyYW5jaDsKIAkJaW50IG4gPSBwYXJzZV9icmFuY2huYW1lX2FyZyhhcmdjLCBhcmd2LCBkd2ltX29rLAotCQkJCSZuZXcsICZzb3VyY2VfdHJlZSwgcmV2LCAmb3B0cy5uZXdfYnJhbmNoKTsKKwkJCQkJICAgICAmbmV3LCAmb3B0cy5zb3VyY2VfdHJlZSwKKwkJCQkJICAgICByZXYsICZvcHRzLm5ld19icmFuY2gpOwogCQlhcmd2ICs9IG47CiAJCWFyZ2MgLT0gbjsKIAl9CiAKLQlpZiAob3B0cy50cmFjayA9PSBCUkFOQ0hfVFJBQ0tfVU5TUEVDSUZJRUQpCi0JCW9wdHMudHJhY2sgPSBnaXRfYnJhbmNoX3RyYWNrOwotCiAJaWYgKGFyZ2MpIHsKLQkJY29uc3QgY2hhciAqKnBhdGhzcGVjID0gZ2V0X3BhdGhzcGVjKHByZWZpeCwgYXJndik7CisJCW9wdHMucGF0aHNwZWMgPSBnZXRfcGF0aHNwZWMocHJlZml4LCBhcmd2KTsKIAotCQlpZiAoIXBhdGhzcGVjKQorCQlpZiAoIW9wdHMucGF0aHNwZWMpCiAJCQlkaWUoXygiaW52YWxpZCBwYXRoIHNwZWNpZmljYXRpb24iKSk7CiAKLQkJaWYgKHBhdGNoX21vZGUpCi0JCQlyZXR1cm4gaW50ZXJhY3RpdmVfY2hlY2tvdXQobmV3Lm5hbWUsIHBhdGhzcGVjLCAmb3B0cyk7Ci0KLQkJLyogQ2hlY2tvdXQgcGF0aHMgKi8KLQkJaWYgKG9wdHMubmV3X2JyYW5jaCkgewotCQkJaWYgKGFyZ2MgPT0gMSkgewotCQkJCWRpZShfKCJnaXQgY2hlY2tvdXQ6IHVwZGF0aW5nIHBhdGhzIGlzIGluY29tcGF0aWJsZSB3aXRoIHN3aXRjaGluZyBicmFuY2hlcy5cbkRpZCB5b3UgaW50ZW5kIHRvIGNoZWNrb3V0ICclcycgd2hpY2ggY2FuIG5vdCBiZSByZXNvbHZlZCBhcyBjb21taXQ/IiksIGFyZ3ZbMF0pOwotCQkJfSBlbHNlIHsKLQkJCQlkaWUoXygiZ2l0IGNoZWNrb3V0OiB1cGRhdGluZyBwYXRocyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMuIikpOwotCQkJfQotCQl9CisJCS8qCisJCSAqIFRyeSB0byBnaXZlIG1vcmUgaGVscGZ1bCBzdWdnZXN0aW9uLgorCQkgKiBuZXdfYnJhbmNoICYmIGFyZ2MgPiAxIHdpbGwgYmUgY2F1Z2h0IGxhdGVyLgorCQkgKi8KKwkJaWYgKG9wdHMubmV3X2JyYW5jaCAmJiBhcmdjID09IDEpCisJCQlkaWUoXygiQ2Fubm90IHVwZGF0ZSBwYXRocyBhbmQgc3dpdGNoIHRvIGJyYW5jaCAnJXMnIGF0IHRoZSBzYW1lIHRpbWUuXG4iCisJCQkgICAgICAiRGlkIHlvdSBpbnRlbmQgdG8gY2hlY2tvdXQgJyVzJyB3aGljaCBjYW4gbm90IGJlIHJlc29sdmVkIGFzIGNvbW1pdD8iKSwKKwkJCSAgICBvcHRzLm5ld19icmFuY2gsIGFyZ3ZbMF0pOwogCiAJCWlmIChvcHRzLmZvcmNlX2RldGFjaCkKLQkJCWRpZShfKCJnaXQgY2hlY2tvdXQ6IC0tZGV0YWNoIGRvZXMgbm90IHRha2UgYSBwYXRoIGFyZ3VtZW50IikpOworCQkJZGllKF8oImdpdCBjaGVja291dDogLS1kZXRhY2ggZG9lcyBub3QgdGFrZSBhIHBhdGggYXJndW1lbnQgJyVzJyIpLAorCQkJICAgIGFyZ3ZbMF0pOwogCiAJCWlmICgxIDwgISFvcHRzLndyaXRlb3V0X3N0YWdlICsgISFvcHRzLmZvcmNlICsgISFvcHRzLm1lcmdlKQotCQkJZGllKF8oImdpdCBjaGVja291dDogLS1vdXJzLy0tdGhlaXJzLCAtLWZvcmNlIGFuZCAtLW1lcmdlIGFyZSBpbmNvbXBhdGlibGUgd2hlblxuY2hlY2tpbmcgb3V0IG9mIHRoZSBpbmRleC4iKSk7Ci0KLQkJcmV0dXJuIGNoZWNrb3V0X3BhdGhzKHNvdXJjZV90cmVlLCBwYXRoc3BlYywgcHJlZml4LCAmb3B0cyk7CisJCQlkaWUoXygiZ2l0IGNoZWNrb3V0OiAtLW91cnMvLS10aGVpcnMsIC0tZm9yY2UgYW5kIC0tbWVyZ2UgYXJlIGluY29tcGF0aWJsZSB3aGVuXG4iCisJCQkgICAgICAiY2hlY2tpbmcgb3V0IG9mIHRoZSBpbmRleC4iKSk7CiAJfQogCi0JaWYgKHBhdGNoX21vZGUpCi0JCXJldHVybiBpbnRlcmFjdGl2ZV9jaGVja291dChuZXcubmFtZSwgTlVMTCwgJm9wdHMpOwotCiAJaWYgKG9wdHMubmV3X2JyYW5jaCkgewogCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCi0JCW9wdHMuYnJhbmNoX2V4aXN0cyA9IHZhbGlkYXRlX25ld19icmFuY2huYW1lKG9wdHMubmV3X2JyYW5jaCwgJmJ1ZiwKLQkJCQkJCQkgICAgICEhb3B0cy5uZXdfYnJhbmNoX2ZvcmNlLAotCQkJCQkJCSAgICAgISFvcHRzLm5ld19icmFuY2hfZm9yY2UpOworCQlvcHRzLmJyYW5jaF9leGlzdHMgPQorCQkJdmFsaWRhdGVfbmV3X2JyYW5jaG5hbWUob3B0cy5uZXdfYnJhbmNoLCAmYnVmLAorCQkJCQkJISFvcHRzLm5ld19icmFuY2hfZm9yY2UsCisJCQkJCQkhIW9wdHMubmV3X2JyYW5jaF9mb3JjZSk7CiAKIAkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CiAJfQogCi0JaWYgKG5ldy5uYW1lICYmICFuZXcuY29tbWl0KSB7Ci0JCWRpZShfKCJDYW5ub3Qgc3dpdGNoIGJyYW5jaCB0byBhIG5vbi1jb21taXQuIikpOwotCX0KLQlpZiAob3B0cy53cml0ZW91dF9zdGFnZSkKLQkJZGllKF8oIi0tb3Vycy8tLXRoZWlycyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMuIikpOwotCi0JaWYgKCFuZXcuY29tbWl0ICYmIG9wdHMubmV3X2JyYW5jaCkgewotCQl1bnNpZ25lZCBjaGFyIHJldlsyMF07Ci0JCWludCBmbGFnOwotCi0JCWlmICghcmVhZF9yZWZfZnVsbCgiSEVBRCIsIHJldiwgMCwgJmZsYWcpICYmCi0JCSAgICAoZmxhZyAmIFJFRl9JU1NZTVJFRikgJiYgaXNfbnVsbF9zaGExKHJldikpCi0JCQlyZXR1cm4gc3dpdGNoX3VuYm9ybl90b19uZXdfYnJhbmNoKCZvcHRzKTsKLQl9Ci0JcmV0dXJuIHN3aXRjaF9icmFuY2hlcygmb3B0cywgJm5ldyk7CisJaWYgKG9wdHMucGF0Y2hfbW9kZSB8fCBvcHRzLnBhdGhzcGVjKQorCQlyZXR1cm4gY2hlY2tvdXRfcGF0aHMoJm9wdHMsIG5ldy5uYW1lKTsKKwllbHNlCisJCXJldHVybiBjaGVja291dF9icmFuY2goJm9wdHMsICZuZXcpOwogfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9jbGVhbi5jIGIvYnVpbHRpbi9jbGVhbi5jCmluZGV4IDBjN2IzZDAuLjA0ZTM5NmIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vY2xlYW4uYworKysgYi9idWlsdGluL2NsZWFuLmMKQEAgLTEwLDE2ICsxMCwyMyBAQAogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAiZGlyLmgiCiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgorI2luY2x1ZGUgInJlZnMuaCIKICNpbmNsdWRlICJzdHJpbmctbGlzdC5oIgogI2luY2x1ZGUgInF1b3RlLmgiCiAKIHN0YXRpYyBpbnQgZm9yY2UgPSAtMTsgLyogdW5zZXQgKi8KIAogc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGJ1aWx0aW5fY2xlYW5fdXNhZ2VbXSA9IHsKLQkiZ2l0IGNsZWFuIFstZF0gWy1mXSBbLW5dIFstcV0gWy1lIDxwYXR0ZXJuPl0gWy14IHwgLVhdIFstLV0gPHBhdGhzPi4uLiIsCisJTl8oImdpdCBjbGVhbiBbLWRdIFstZl0gWy1uXSBbLXFdIFstZSA8cGF0dGVybj5dIFsteCB8IC1YXSBbLS1dIDxwYXRocz4uLi4iKSwKIAlOVUxMCiB9OwogCitzdGF0aWMgY29uc3QgY2hhciAqbXNnX3JlbW92ZSA9IE5fKCJSZW1vdmluZyAlc1xuIik7CitzdGF0aWMgY29uc3QgY2hhciAqbXNnX3dvdWxkX3JlbW92ZSA9IE5fKCJXb3VsZCByZW1vdmUgJXNcbiIpOworc3RhdGljIGNvbnN0IGNoYXIgKm1zZ19za2lwX2dpdF9kaXIgPSBOXygiU2tpcHBpbmcgcmVwb3NpdG9yeSAlc1xuIik7CitzdGF0aWMgY29uc3QgY2hhciAqbXNnX3dvdWxkX3NraXBfZ2l0X2RpciA9IE5fKCJXb3VsZCBza2lwIHJlcG9zaXRvcnkgJXNcbiIpOworc3RhdGljIGNvbnN0IGNoYXIgKm1zZ193YXJuX3JlbW92ZV9mYWlsZWQgPSBOXygiZmFpbGVkIHRvIHJlbW92ZSAlcyIpOworCiBzdGF0aWMgaW50IGdpdF9jbGVhbl9jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqY2IpCiB7CiAJaWYgKCFzdHJjbXAodmFyLCAiY2xlYW4ucmVxdWlyZWZvcmNlIikpCkBAIC0zNCwzMCArNDEsMTMyIEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgcmVtb3ZlX2RpcnMoc3RydWN0IHN0cmJ1ZiAqcGF0aCwgY29uc3QgY2hhciAqcHJlZml4LCBpbnQgZm9yY2VfZmxhZywKKwkJaW50IGRyeV9ydW4sIGludCBxdWlldCwgaW50ICpkaXJfZ29uZSkKK3sKKwlESVIgKmRpcjsKKwlzdHJ1Y3Qgc3RyYnVmIHF1b3RlZCA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBkaXJlbnQgKmU7CisJaW50IHJlcyA9IDAsIHJldCA9IDAsIGdvbmUgPSAxLCBvcmlnaW5hbF9sZW4gPSBwYXRoLT5sZW4sIGxlbiwgaTsKKwl1bnNpZ25lZCBjaGFyIHN1Ym1vZHVsZV9oZWFkWzIwXTsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgZGVscyA9IFNUUklOR19MSVNUX0lOSVRfRFVQOworCisJKmRpcl9nb25lID0gMTsKKworCWlmICgoZm9yY2VfZmxhZyAmIFJFTU9WRV9ESVJfS0VFUF9ORVNURURfR0lUKSAmJgorCQkJIXJlc29sdmVfZ2l0bGlua19yZWYocGF0aC0+YnVmLCAiSEVBRCIsIHN1Ym1vZHVsZV9oZWFkKSkgeworCQlpZiAoIXF1aWV0KSB7CisJCQlxdW90ZV9wYXRoX3JlbGF0aXZlKHBhdGgtPmJ1Ziwgc3RybGVuKHBhdGgtPmJ1ZiksICZxdW90ZWQsIHByZWZpeCk7CisJCQlwcmludGYoZHJ5X3J1biA/ICBfKG1zZ193b3VsZF9za2lwX2dpdF9kaXIpIDogXyhtc2dfc2tpcF9naXRfZGlyKSwKKwkJCQkJcXVvdGVkLmJ1Zik7CisJCX0KKworCQkqZGlyX2dvbmUgPSAwOworCQlyZXR1cm4gMDsKKwl9CisKKwlkaXIgPSBvcGVuZGlyKHBhdGgtPmJ1Zik7CisJaWYgKCFkaXIpIHsKKwkJLyogYW4gZW1wdHkgZGlyIGNvdWxkIGJlIHJlbW92ZWQgZXZlbiBpZiBpdCBpcyB1bnJlYWRibGUgKi8KKwkJcmVzID0gZHJ5X3J1biA/IDAgOiBybWRpcihwYXRoLT5idWYpOworCQlpZiAocmVzKSB7CisJCQlxdW90ZV9wYXRoX3JlbGF0aXZlKHBhdGgtPmJ1Ziwgc3RybGVuKHBhdGgtPmJ1ZiksICZxdW90ZWQsIHByZWZpeCk7CisJCQl3YXJuaW5nKF8obXNnX3dhcm5fcmVtb3ZlX2ZhaWxlZCksIHF1b3RlZC5idWYpOworCQkJKmRpcl9nb25lID0gMDsKKwkJfQorCQlyZXR1cm4gcmVzOworCX0KKworCWlmIChwYXRoLT5idWZbb3JpZ2luYWxfbGVuIC0gMV0gIT0gJy8nKQorCQlzdHJidWZfYWRkY2gocGF0aCwgJy8nKTsKKworCWxlbiA9IHBhdGgtPmxlbjsKKwl3aGlsZSAoKGUgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpIHsKKwkJc3RydWN0IHN0YXQgc3Q7CisJCWlmIChpc19kb3Rfb3JfZG90ZG90KGUtPmRfbmFtZSkpCisJCQljb250aW51ZTsKKworCQlzdHJidWZfc2V0bGVuKHBhdGgsIGxlbik7CisJCXN0cmJ1Zl9hZGRzdHIocGF0aCwgZS0+ZF9uYW1lKTsKKwkJaWYgKGxzdGF0KHBhdGgtPmJ1ZiwgJnN0KSkKKwkJCTsgLyogZmFsbCB0aHJ1ICovCisJCWVsc2UgaWYgKFNfSVNESVIoc3Quc3RfbW9kZSkpIHsKKwkJCWlmIChyZW1vdmVfZGlycyhwYXRoLCBwcmVmaXgsIGZvcmNlX2ZsYWcsIGRyeV9ydW4sIHF1aWV0LCAmZ29uZSkpCisJCQkJcmV0ID0gMTsKKwkJCWlmIChnb25lKSB7CisJCQkJcXVvdGVfcGF0aF9yZWxhdGl2ZShwYXRoLT5idWYsIHN0cmxlbihwYXRoLT5idWYpLCAmcXVvdGVkLCBwcmVmaXgpOworCQkJCXN0cmluZ19saXN0X2FwcGVuZCgmZGVscywgcXVvdGVkLmJ1Zik7CisJCQl9IGVsc2UKKwkJCQkqZGlyX2dvbmUgPSAwOworCQkJY29udGludWU7CisJCX0gZWxzZSB7CisJCQlyZXMgPSBkcnlfcnVuID8gMCA6IHVubGluayhwYXRoLT5idWYpOworCQkJaWYgKCFyZXMpIHsKKwkJCQlxdW90ZV9wYXRoX3JlbGF0aXZlKHBhdGgtPmJ1Ziwgc3RybGVuKHBhdGgtPmJ1ZiksICZxdW90ZWQsIHByZWZpeCk7CisJCQkJc3RyaW5nX2xpc3RfYXBwZW5kKCZkZWxzLCBxdW90ZWQuYnVmKTsKKwkJCX0gZWxzZSB7CisJCQkJcXVvdGVfcGF0aF9yZWxhdGl2ZShwYXRoLT5idWYsIHN0cmxlbihwYXRoLT5idWYpLCAmcXVvdGVkLCBwcmVmaXgpOworCQkJCXdhcm5pbmcoXyhtc2dfd2Fybl9yZW1vdmVfZmFpbGVkKSwgcXVvdGVkLmJ1Zik7CisJCQkJKmRpcl9nb25lID0gMDsKKwkJCQlyZXQgPSAxOworCQkJfQorCQkJY29udGludWU7CisJCX0KKworCQkvKiBwYXRoIHRvbyBsb25nLCBzdGF0IGZhaWxzLCBvciBub24tZGlyZWN0b3J5IHN0aWxsIGV4aXN0cyAqLworCQkqZGlyX2dvbmUgPSAwOworCQlyZXQgPSAxOworCQlicmVhazsKKwl9CisJY2xvc2VkaXIoZGlyKTsKKworCXN0cmJ1Zl9zZXRsZW4ocGF0aCwgb3JpZ2luYWxfbGVuKTsKKworCWlmICgqZGlyX2dvbmUpIHsKKwkJcmVzID0gZHJ5X3J1biA/IDAgOiBybWRpcihwYXRoLT5idWYpOworCQlpZiAoIXJlcykKKwkJCSpkaXJfZ29uZSA9IDE7CisJCWVsc2UgeworCQkJcXVvdGVfcGF0aF9yZWxhdGl2ZShwYXRoLT5idWYsIHN0cmxlbihwYXRoLT5idWYpLCAmcXVvdGVkLCBwcmVmaXgpOworCQkJd2FybmluZyhfKG1zZ193YXJuX3JlbW92ZV9mYWlsZWQpLCBxdW90ZWQuYnVmKTsKKwkJCSpkaXJfZ29uZSA9IDA7CisJCQlyZXQgPSAxOworCQl9CisJfQorCisJaWYgKCEqZGlyX2dvbmUgJiYgIXF1aWV0KSB7CisJCWZvciAoaSA9IDA7IGkgPCBkZWxzLm5yOyBpKyspCisJCQlwcmludGYoZHJ5X3J1biA/ICBfKG1zZ193b3VsZF9yZW1vdmUpIDogXyhtc2dfcmVtb3ZlKSwgZGVscy5pdGVtc1tpXS5zdHJpbmcpOworCX0KKwlzdHJpbmdfbGlzdF9jbGVhcigmZGVscywgMCk7CisJcmV0dXJuIHJldDsKK30KKwogaW50IGNtZF9jbGVhbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQlpbnQgaTsKLQlpbnQgc2hvd19vbmx5ID0gMCwgcmVtb3ZlX2RpcmVjdG9yaWVzID0gMCwgcXVpZXQgPSAwLCBpZ25vcmVkID0gMDsKLQlpbnQgaWdub3JlZF9vbmx5ID0gMCwgY29uZmlnX3NldCA9IDAsIGVycm9ycyA9IDA7CisJaW50IGksIHJlczsKKwlpbnQgZHJ5X3J1biA9IDAsIHJlbW92ZV9kaXJlY3RvcmllcyA9IDAsIHF1aWV0ID0gMCwgaWdub3JlZCA9IDA7CisJaW50IGlnbm9yZWRfb25seSA9IDAsIGNvbmZpZ19zZXQgPSAwLCBlcnJvcnMgPSAwLCBnb25lID0gMTsKIAlpbnQgcm1fZmxhZ3MgPSBSRU1PVkVfRElSX0tFRVBfTkVTVEVEX0dJVDsKIAlzdHJ1Y3Qgc3RyYnVmIGRpcmVjdG9yeSA9IFNUUkJVRl9JTklUOwogCXN0cnVjdCBkaXJfc3RydWN0IGRpcjsKIAlzdGF0aWMgY29uc3QgY2hhciAqKnBhdGhzcGVjOwogCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJc3RydWN0IHN0cmluZ19saXN0IGV4Y2x1ZGVfbGlzdCA9IFNUUklOR19MSVNUX0lOSVRfTk9EVVA7CisJc3RydWN0IGV4Y2x1ZGVfbGlzdCAqZWw7CiAJY29uc3QgY2hhciAqcW5hbWU7CiAJY2hhciAqc2VlbiA9IE5VTEw7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCU9QVF9fUVVJRVQoJnF1aWV0LCAiZG8gbm90IHByaW50IG5hbWVzIG9mIGZpbGVzIHJlbW92ZWQiKSwKLQkJT1BUX19EUllfUlVOKCZzaG93X29ubHksICJkcnkgcnVuIiksCi0JCU9QVF9fRk9SQ0UoJmZvcmNlLCAiZm9yY2UiKSwKKwkJT1BUX19RVUlFVCgmcXVpZXQsIE5fKCJkbyBub3QgcHJpbnQgbmFtZXMgb2YgZmlsZXMgcmVtb3ZlZCIpKSwKKwkJT1BUX19EUllfUlVOKCZkcnlfcnVuLCBOXygiZHJ5IHJ1biIpKSwKKwkJT1BUX19GT1JDRSgmZm9yY2UsIE5fKCJmb3JjZSIpKSwKIAkJT1BUX0JPT0xFQU4oJ2QnLCBOVUxMLCAmcmVtb3ZlX2RpcmVjdG9yaWVzLAotCQkJCSJyZW1vdmUgd2hvbGUgZGlyZWN0b3JpZXMiKSwKLQkJeyBPUFRJT05fQ0FMTEJBQ0ssICdlJywgImV4Y2x1ZGUiLCAmZXhjbHVkZV9saXN0LCAicGF0dGVybiIsCi0JCSAgImFkZCA8cGF0dGVybj4gdG8gaWdub3JlIHJ1bGVzIiwgUEFSU0VfT1BUX05PTkVHLCBleGNsdWRlX2NiIH0sCi0JCU9QVF9CT09MRUFOKCd4JywgTlVMTCwgJmlnbm9yZWQsICJyZW1vdmUgaWdub3JlZCBmaWxlcywgdG9vIiksCisJCQkJTl8oInJlbW92ZSB3aG9sZSBkaXJlY3RvcmllcyIpKSwKKwkJeyBPUFRJT05fQ0FMTEJBQ0ssICdlJywgImV4Y2x1ZGUiLCAmZXhjbHVkZV9saXN0LCBOXygicGF0dGVybiIpLAorCQkgIE5fKCJhZGQgPHBhdHRlcm4+IHRvIGlnbm9yZSBydWxlcyIpLCBQQVJTRV9PUFRfTk9ORUcsIGV4Y2x1ZGVfY2IgfSwKKwkJT1BUX0JPT0xFQU4oJ3gnLCBOVUxMLCAmaWdub3JlZCwgTl8oInJlbW92ZSBpZ25vcmVkIGZpbGVzLCB0b28iKSksCiAJCU9QVF9CT09MRUFOKCdYJywgTlVMTCwgJmlnbm9yZWRfb25seSwKLQkJCQkicmVtb3ZlIG9ubHkgaWdub3JlZCBmaWxlcyIpLAorCQkJCU5fKCJyZW1vdmUgb25seSBpZ25vcmVkIGZpbGVzIikpLAogCQlPUFRfRU5EKCkKIAl9OwogCkBAIC03Nyw3ICsxODYsNyBAQAogCWlmIChpZ25vcmVkICYmIGlnbm9yZWRfb25seSkKIAkJZGllKF8oIi14IGFuZCAtWCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIpKTsKIAotCWlmICghc2hvd19vbmx5ICYmICFmb3JjZSkgeworCWlmICghZHJ5X3J1biAmJiAhZm9yY2UpIHsKIAkJaWYgKGNvbmZpZ19zZXQpCiAJCQlkaWUoXygiY2xlYW4ucmVxdWlyZUZvcmNlIHNldCB0byB0cnVlIGFuZCBuZWl0aGVyIC1uIG5vciAtZiBnaXZlbjsgIgogCQkJCSAgInJlZnVzaW5nIHRvIGNsZWFuIikpOwpAQCAtOTcsOSArMjA2LDkgQEAKIAlpZiAoIWlnbm9yZWQpCiAJCXNldHVwX3N0YW5kYXJkX2V4Y2x1ZGVzKCZkaXIpOwogCisJZWwgPSBhZGRfZXhjbHVkZV9saXN0KCZkaXIsIEVYQ19DTURMLCAiLS1leGNsdWRlIG9wdGlvbiIpOwogCWZvciAoaSA9IDA7IGkgPCBleGNsdWRlX2xpc3QubnI7IGkrKykKLQkJYWRkX2V4Y2x1ZGUoZXhjbHVkZV9saXN0Lml0ZW1zW2ldLnN0cmluZywgIiIsIDAsCi0JCQkgICAgJmRpci5leGNsdWRlX2xpc3RbRVhDX0NNRExdKTsKKwkJYWRkX2V4Y2x1ZGUoZXhjbHVkZV9saXN0Lml0ZW1zW2ldLnN0cmluZywgIiIsIDAsIGVsLCAtKGkrMSkpOwogCiAJcGF0aHNwZWMgPSBnZXRfcGF0aHNwZWMocHJlZml4LCBhcmd2KTsKIApAQCAtMTQ5LDM4ICsyNTgsMjYgQEAKIAogCQlpZiAoU19JU0RJUihzdC5zdF9tb2RlKSkgewogCQkJc3RyYnVmX2FkZHN0cigmZGlyZWN0b3J5LCBlbnQtPm5hbWUpOwotCQkJcW5hbWUgPSBxdW90ZV9wYXRoX3JlbGF0aXZlKGRpcmVjdG9yeS5idWYsIGRpcmVjdG9yeS5sZW4sICZidWYsIHByZWZpeCk7Ci0JCQlpZiAoc2hvd19vbmx5ICYmIChyZW1vdmVfZGlyZWN0b3JpZXMgfHwKLQkJCSAgICAobWF0Y2hlcyA9PSBNQVRDSEVEX0VYQUNUTFkpKSkgewotCQkJCXByaW50ZihfKCJXb3VsZCByZW1vdmUgJXNcbiIpLCBxbmFtZSk7Ci0JCQl9IGVsc2UgaWYgKHJlbW92ZV9kaXJlY3RvcmllcyB8fAotCQkJCSAgIChtYXRjaGVzID09IE1BVENIRURfRVhBQ1RMWSkpIHsKLQkJCQlpZiAoIXF1aWV0KQotCQkJCQlwcmludGYoXygiUmVtb3ZpbmcgJXNcbiIpLCBxbmFtZSk7Ci0JCQkJaWYgKHJlbW92ZV9kaXJfcmVjdXJzaXZlbHkoJmRpcmVjdG9yeSwKLQkJCQkJCQkgICBybV9mbGFncykgIT0gMCkgewotCQkJCQl3YXJuaW5nKF8oImZhaWxlZCB0byByZW1vdmUgJXMiKSwgcW5hbWUpOworCQkJaWYgKHJlbW92ZV9kaXJlY3RvcmllcyB8fCAobWF0Y2hlcyA9PSBNQVRDSEVEX0VYQUNUTFkpKSB7CisJCQkJaWYgKHJlbW92ZV9kaXJzKCZkaXJlY3RvcnksIHByZWZpeCwgcm1fZmxhZ3MsIGRyeV9ydW4sIHF1aWV0LCAmZ29uZSkpCiAJCQkJCWVycm9ycysrOworCQkJCWlmIChnb25lICYmICFxdWlldCkgeworCQkJCQlxbmFtZSA9IHF1b3RlX3BhdGhfcmVsYXRpdmUoZGlyZWN0b3J5LmJ1ZiwgZGlyZWN0b3J5LmxlbiwgJmJ1ZiwgcHJlZml4KTsKKwkJCQkJcHJpbnRmKGRyeV9ydW4gPyBfKG1zZ193b3VsZF9yZW1vdmUpIDogXyhtc2dfcmVtb3ZlKSwgcW5hbWUpOwogCQkJCX0KLQkJCX0gZWxzZSBpZiAoc2hvd19vbmx5KSB7Ci0JCQkJcHJpbnRmKF8oIldvdWxkIG5vdCByZW1vdmUgJXNcbiIpLCBxbmFtZSk7Ci0JCQl9IGVsc2UgewotCQkJCXByaW50ZihfKCJOb3QgcmVtb3ZpbmcgJXNcbiIpLCBxbmFtZSk7CiAJCQl9CiAJCQlzdHJidWZfcmVzZXQoJmRpcmVjdG9yeSk7CiAJCX0gZWxzZSB7CiAJCQlpZiAocGF0aHNwZWMgJiYgIW1hdGNoZXMpCiAJCQkJY29udGludWU7Ci0JCQlxbmFtZSA9IHF1b3RlX3BhdGhfcmVsYXRpdmUoZW50LT5uYW1lLCAtMSwgJmJ1ZiwgcHJlZml4KTsKLQkJCWlmIChzaG93X29ubHkpIHsKLQkJCQlwcmludGYoXygiV291bGQgcmVtb3ZlICVzXG4iKSwgcW5hbWUpOwotCQkJCWNvbnRpbnVlOwotCQkJfSBlbHNlIGlmICghcXVpZXQpIHsKLQkJCQlwcmludGYoXygiUmVtb3ZpbmcgJXNcbiIpLCBxbmFtZSk7Ci0JCQl9Ci0JCQlpZiAodW5saW5rKGVudC0+bmFtZSkgIT0gMCkgewotCQkJCXdhcm5pbmcoXygiZmFpbGVkIHRvIHJlbW92ZSAlcyIpLCBxbmFtZSk7CisJCQlyZXMgPSBkcnlfcnVuID8gMCA6IHVubGluayhlbnQtPm5hbWUpOworCQkJaWYgKHJlcykgeworCQkJCXFuYW1lID0gcXVvdGVfcGF0aF9yZWxhdGl2ZShlbnQtPm5hbWUsIC0xLCAmYnVmLCBwcmVmaXgpOworCQkJCXdhcm5pbmcoXyhtc2dfd2Fybl9yZW1vdmVfZmFpbGVkKSwgcW5hbWUpOwogCQkJCWVycm9ycysrOworCQkJfSBlbHNlIGlmICghcXVpZXQpIHsKKwkJCQlxbmFtZSA9IHF1b3RlX3BhdGhfcmVsYXRpdmUoZW50LT5uYW1lLCAtMSwgJmJ1ZiwgcHJlZml4KTsKKwkJCQlwcmludGYoZHJ5X3J1biA/IF8obXNnX3dvdWxkX3JlbW92ZSkgOiBfKG1zZ19yZW1vdmUpLCBxbmFtZSk7CiAJCQl9CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9idWlsdGluL2Nsb25lLmMgYi9idWlsdGluL2Nsb25lLmMKaW5kZXggYTRkOGQyNS4uZGFkNDI2NSAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jbG9uZS5jCisrKyBiL2J1aWx0aW4vY2xvbmUuYwpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImJyYW5jaC5oIgogI2luY2x1ZGUgInJlbW90ZS5oIgogI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCisjaW5jbHVkZSAiY29ubmVjdGVkLmgiCiAKIC8qCiAgKiBPdmVyYWxsIEZJWE1FczoKQEAgLTMzLDEyICszNCwxMiBAQAogICoKICAqLwogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBidWlsdGluX2Nsb25lX3VzYWdlW10gPSB7Ci0JImdpdCBjbG9uZSBbb3B0aW9uc10gWy0tXSA8cmVwbz4gWzxkaXI+XSIsCisJTl8oImdpdCBjbG9uZSBbb3B0aW9uc10gWy0tXSA8cmVwbz4gWzxkaXI+XSIpLAogCU5VTEwKIH07CiAKIHN0YXRpYyBpbnQgb3B0aW9uX25vX2NoZWNrb3V0LCBvcHRpb25fYmFyZSwgb3B0aW9uX21pcnJvciwgb3B0aW9uX3NpbmdsZV9icmFuY2ggPSAtMTsKLXN0YXRpYyBpbnQgb3B0aW9uX2xvY2FsLCBvcHRpb25fbm9faGFyZGxpbmtzLCBvcHRpb25fc2hhcmVkLCBvcHRpb25fcmVjdXJzaXZlOworc3RhdGljIGludCBvcHRpb25fbG9jYWwgPSAtMSwgb3B0aW9uX25vX2hhcmRsaW5rcywgb3B0aW9uX3NoYXJlZCwgb3B0aW9uX3JlY3Vyc2l2ZTsKIHN0YXRpYyBjaGFyICpvcHRpb25fdGVtcGxhdGUsICpvcHRpb25fZGVwdGg7CiBzdGF0aWMgY2hhciAqb3B0aW9uX29yaWdpbiA9IE5VTEw7CiBzdGF0aWMgY2hhciAqb3B0aW9uX2JyYW5jaCA9IE5VTEw7CkBAIC02MSw0MyArNjIsNDMgQEAKIHN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5fY2xvbmVfb3B0aW9uc1tdID0gewogCU9QVF9fVkVSQk9TSVRZKCZvcHRpb25fdmVyYm9zaXR5KSwKIAlPUFRfQk9PTCgwLCAicHJvZ3Jlc3MiLCAmb3B0aW9uX3Byb2dyZXNzLAotCQkgImZvcmNlIHByb2dyZXNzIHJlcG9ydGluZyIpLAorCQkgTl8oImZvcmNlIHByb2dyZXNzIHJlcG9ydGluZyIpKSwKIAlPUFRfQk9PTEVBTignbicsICJuby1jaGVja291dCIsICZvcHRpb25fbm9fY2hlY2tvdXQsCi0JCSAgICAiZG9uJ3QgY3JlYXRlIGEgY2hlY2tvdXQiKSwKLQlPUFRfQk9PTEVBTigwLCAiYmFyZSIsICZvcHRpb25fYmFyZSwgImNyZWF0ZSBhIGJhcmUgcmVwb3NpdG9yeSIpLAorCQkgICAgTl8oImRvbid0IGNyZWF0ZSBhIGNoZWNrb3V0IikpLAorCU9QVF9CT09MRUFOKDAsICJiYXJlIiwgJm9wdGlvbl9iYXJlLCBOXygiY3JlYXRlIGEgYmFyZSByZXBvc2l0b3J5IikpLAogCXsgT1BUSU9OX0JPT0xFQU4sIDAsICJuYWtlZCIsICZvcHRpb25fYmFyZSwgTlVMTCwKLQkJImNyZWF0ZSBhIGJhcmUgcmVwb3NpdG9yeSIsCisJCU5fKCJjcmVhdGUgYSBiYXJlIHJlcG9zaXRvcnkiKSwKIAkJUEFSU0VfT1BUX05PQVJHIHwgUEFSU0VfT1BUX0hJRERFTiB9LAogCU9QVF9CT09MRUFOKDAsICJtaXJyb3IiLCAmb3B0aW9uX21pcnJvciwKLQkJICAgICJjcmVhdGUgYSBtaXJyb3IgcmVwb3NpdG9yeSAoaW1wbGllcyBiYXJlKSIpLAotCU9QVF9CT09MRUFOKCdsJywgImxvY2FsIiwgJm9wdGlvbl9sb2NhbCwKLQkJICAgICJ0byBjbG9uZSBmcm9tIGEgbG9jYWwgcmVwb3NpdG9yeSIpLAorCQkgICAgTl8oImNyZWF0ZSBhIG1pcnJvciByZXBvc2l0b3J5IChpbXBsaWVzIGJhcmUpIikpLAorCU9QVF9CT09MKCdsJywgImxvY2FsIiwgJm9wdGlvbl9sb2NhbCwKKwkJTl8oInRvIGNsb25lIGZyb20gYSBsb2NhbCByZXBvc2l0b3J5IikpLAogCU9QVF9CT09MRUFOKDAsICJuby1oYXJkbGlua3MiLCAmb3B0aW9uX25vX2hhcmRsaW5rcywKLQkJICAgICJkb24ndCB1c2UgbG9jYWwgaGFyZGxpbmtzLCBhbHdheXMgY29weSIpLAorCQkgICAgTl8oImRvbid0IHVzZSBsb2NhbCBoYXJkbGlua3MsIGFsd2F5cyBjb3B5IikpLAogCU9QVF9CT09MRUFOKCdzJywgInNoYXJlZCIsICZvcHRpb25fc2hhcmVkLAotCQkgICAgInNldHVwIGFzIHNoYXJlZCByZXBvc2l0b3J5IiksCisJCSAgICBOXygic2V0dXAgYXMgc2hhcmVkIHJlcG9zaXRvcnkiKSksCiAJT1BUX0JPT0xFQU4oMCwgInJlY3Vyc2l2ZSIsICZvcHRpb25fcmVjdXJzaXZlLAotCQkgICAgImluaXRpYWxpemUgc3VibW9kdWxlcyBpbiB0aGUgY2xvbmUiKSwKKwkJICAgIE5fKCJpbml0aWFsaXplIHN1Ym1vZHVsZXMgaW4gdGhlIGNsb25lIikpLAogCU9QVF9CT09MRUFOKDAsICJyZWN1cnNlLXN1Ym1vZHVsZXMiLCAmb3B0aW9uX3JlY3Vyc2l2ZSwKLQkJICAgICJpbml0aWFsaXplIHN1Ym1vZHVsZXMgaW4gdGhlIGNsb25lIiksCi0JT1BUX1NUUklORygwLCAidGVtcGxhdGUiLCAmb3B0aW9uX3RlbXBsYXRlLCAidGVtcGxhdGUtZGlyZWN0b3J5IiwKLQkJICAgImRpcmVjdG9yeSBmcm9tIHdoaWNoIHRlbXBsYXRlcyB3aWxsIGJlIHVzZWQiKSwKLQlPUFRfQ0FMTEJBQ0soMCAsICJyZWZlcmVuY2UiLCAmb3B0aW9uX3JlZmVyZW5jZSwgInJlcG8iLAotCQkgICAgICJyZWZlcmVuY2UgcmVwb3NpdG9yeSIsICZvcHRfcGFyc2VfcmVmZXJlbmNlKSwKLQlPUFRfU1RSSU5HKCdvJywgIm9yaWdpbiIsICZvcHRpb25fb3JpZ2luLCAibmFtZSIsCi0JCSAgICJ1c2UgPG5hbWU+IGluc3RlYWQgb2YgJ29yaWdpbicgdG8gdHJhY2sgdXBzdHJlYW0iKSwKLQlPUFRfU1RSSU5HKCdiJywgImJyYW5jaCIsICZvcHRpb25fYnJhbmNoLCAiYnJhbmNoIiwKLQkJICAgImNoZWNrb3V0IDxicmFuY2g+IGluc3RlYWQgb2YgdGhlIHJlbW90ZSdzIEhFQUQiKSwKLQlPUFRfU1RSSU5HKCd1JywgInVwbG9hZC1wYWNrIiwgJm9wdGlvbl91cGxvYWRfcGFjaywgInBhdGgiLAotCQkgICAicGF0aCB0byBnaXQtdXBsb2FkLXBhY2sgb24gdGhlIHJlbW90ZSIpLAotCU9QVF9TVFJJTkcoMCwgImRlcHRoIiwgJm9wdGlvbl9kZXB0aCwgImRlcHRoIiwKLQkJICAgICJjcmVhdGUgYSBzaGFsbG93IGNsb25lIG9mIHRoYXQgZGVwdGgiKSwKKwkJICAgIE5fKCJpbml0aWFsaXplIHN1Ym1vZHVsZXMgaW4gdGhlIGNsb25lIikpLAorCU9QVF9TVFJJTkcoMCwgInRlbXBsYXRlIiwgJm9wdGlvbl90ZW1wbGF0ZSwgTl8oInRlbXBsYXRlLWRpcmVjdG9yeSIpLAorCQkgICBOXygiZGlyZWN0b3J5IGZyb20gd2hpY2ggdGVtcGxhdGVzIHdpbGwgYmUgdXNlZCIpKSwKKwlPUFRfQ0FMTEJBQ0soMCAsICJyZWZlcmVuY2UiLCAmb3B0aW9uX3JlZmVyZW5jZSwgTl8oInJlcG8iKSwKKwkJICAgICBOXygicmVmZXJlbmNlIHJlcG9zaXRvcnkiKSwgJm9wdF9wYXJzZV9yZWZlcmVuY2UpLAorCU9QVF9TVFJJTkcoJ28nLCAib3JpZ2luIiwgJm9wdGlvbl9vcmlnaW4sIE5fKCJuYW1lIiksCisJCSAgIE5fKCJ1c2UgPG5hbWU+IGluc3RlYWQgb2YgJ29yaWdpbicgdG8gdHJhY2sgdXBzdHJlYW0iKSksCisJT1BUX1NUUklORygnYicsICJicmFuY2giLCAmb3B0aW9uX2JyYW5jaCwgTl8oImJyYW5jaCIpLAorCQkgICBOXygiY2hlY2tvdXQgPGJyYW5jaD4gaW5zdGVhZCBvZiB0aGUgcmVtb3RlJ3MgSEVBRCIpKSwKKwlPUFRfU1RSSU5HKCd1JywgInVwbG9hZC1wYWNrIiwgJm9wdGlvbl91cGxvYWRfcGFjaywgTl8oInBhdGgiKSwKKwkJICAgTl8oInBhdGggdG8gZ2l0LXVwbG9hZC1wYWNrIG9uIHRoZSByZW1vdGUiKSksCisJT1BUX1NUUklORygwLCAiZGVwdGgiLCAmb3B0aW9uX2RlcHRoLCBOXygiZGVwdGgiKSwKKwkJICAgIE5fKCJjcmVhdGUgYSBzaGFsbG93IGNsb25lIG9mIHRoYXQgZGVwdGgiKSksCiAJT1BUX0JPT0woMCwgInNpbmdsZS1icmFuY2giLCAmb3B0aW9uX3NpbmdsZV9icmFuY2gsCi0JCSAgICAiY2xvbmUgb25seSBvbmUgYnJhbmNoLCBIRUFEIG9yIC0tYnJhbmNoIiksCi0JT1BUX1NUUklORygwLCAic2VwYXJhdGUtZ2l0LWRpciIsICZyZWFsX2dpdF9kaXIsICJnaXRkaXIiLAotCQkgICAic2VwYXJhdGUgZ2l0IGRpciBmcm9tIHdvcmtpbmcgdHJlZSIpLAotCU9QVF9TVFJJTkdfTElTVCgnYycsICJjb25maWciLCAmb3B0aW9uX2NvbmZpZywgImtleT12YWx1ZSIsCi0JCQkic2V0IGNvbmZpZyBpbnNpZGUgdGhlIG5ldyByZXBvc2l0b3J5IiksCisJCSAgICBOXygiY2xvbmUgb25seSBvbmUgYnJhbmNoLCBIRUFEIG9yIC0tYnJhbmNoIikpLAorCU9QVF9TVFJJTkcoMCwgInNlcGFyYXRlLWdpdC1kaXIiLCAmcmVhbF9naXRfZGlyLCBOXygiZ2l0ZGlyIiksCisJCSAgIE5fKCJzZXBhcmF0ZSBnaXQgZGlyIGZyb20gd29ya2luZyB0cmVlIikpLAorCU9QVF9TVFJJTkdfTElTVCgnYycsICJjb25maWciLCAmb3B0aW9uX2NvbmZpZywgTl8oImtleT12YWx1ZSIpLAorCQkJTl8oInNldCBjb25maWcgaW5zaWRlIHRoZSBuZXcgcmVwb3NpdG9yeSIpKSwKIAlPUFRfRU5EKCkKIH07CiAKQEAgLTIzMSwxNiArMjMyLDI2IEBACiBzdGF0aWMgaW50IGFkZF9vbmVfcmVmZXJlbmNlKHN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtLCB2b2lkICpjYl9kYXRhKQogewogCWNoYXIgKnJlZl9naXQ7CisJY29uc3QgY2hhciAqcmVwbzsKIAlzdHJ1Y3Qgc3RyYnVmIGFsdGVybmF0ZSA9IFNUUkJVRl9JTklUOwogCi0JLyogQmV3YXJlOiByZWFsX3BhdGgoKSBhbmQgbWtwYXRoKCkgcmV0dXJuIHN0YXRpYyBidWZmZXIgKi8KKwkvKiBCZXdhcmU6IHJlYWRfZ2l0ZmlsZSgpLCByZWFsX3BhdGgoKSBhbmQgbWtwYXRoKCkgcmV0dXJuIHN0YXRpYyBidWZmZXIgKi8KIAlyZWZfZ2l0ID0geHN0cmR1cChyZWFsX3BhdGgoaXRlbS0+c3RyaW5nKSk7Ci0JaWYgKGlzX2RpcmVjdG9yeShta3BhdGgoIiVzLy5naXQvb2JqZWN0cyIsIHJlZl9naXQpKSkgewotCQljaGFyICpyZWZfZ2l0X2dpdCA9IHhzdHJkdXAobWtwYXRoKCIlcy8uZ2l0IiwgcmVmX2dpdCkpOworCisJcmVwbyA9IHJlYWRfZ2l0ZmlsZShyZWZfZ2l0KTsKKwlpZiAoIXJlcG8pCisJCXJlcG8gPSByZWFkX2dpdGZpbGUobWtwYXRoKCIlcy8uZ2l0IiwgcmVmX2dpdCkpOworCWlmIChyZXBvKSB7CisJCWZyZWUocmVmX2dpdCk7CisJCXJlZl9naXQgPSB4c3RyZHVwKHJlcG8pOworCX0KKworCWlmICghcmVwbyAmJiBpc19kaXJlY3RvcnkobWtwYXRoKCIlcy8uZ2l0L29iamVjdHMiLCByZWZfZ2l0KSkpIHsKKwkJY2hhciAqcmVmX2dpdF9naXQgPSBta3BhdGhkdXAoIiVzLy5naXQiLCByZWZfZ2l0KTsKIAkJZnJlZShyZWZfZ2l0KTsKIAkJcmVmX2dpdCA9IHJlZl9naXRfZ2l0OwogCX0gZWxzZSBpZiAoIWlzX2RpcmVjdG9yeShta3BhdGgoIiVzL29iamVjdHMiLCByZWZfZ2l0KSkpCi0JCWRpZShfKCJyZWZlcmVuY2UgcmVwb3NpdG9yeSAnJXMnIGlzIG5vdCBhIGxvY2FsIGRpcmVjdG9yeS4iKSwKKwkJZGllKF8oInJlZmVyZW5jZSByZXBvc2l0b3J5ICclcycgaXMgbm90IGEgbG9jYWwgcmVwb3NpdG9yeS4iKSwKIAkJICAgIGl0ZW0tPnN0cmluZyk7CiAKIAlzdHJidWZfYWRkZigmYWx0ZXJuYXRlLCAiJXMvb2JqZWN0cyIsIHJlZl9naXQpOwpAQCAtMzQyLDcgKzM1Myw3IEBACiAJCWlmICghb3B0aW9uX25vX2hhcmRsaW5rcykgewogCQkJaWYgKCFsaW5rKHNyYy0+YnVmLCBkZXN0LT5idWYpKQogCQkJCWNvbnRpbnVlOwotCQkJaWYgKG9wdGlvbl9sb2NhbCkKKwkJCWlmIChvcHRpb25fbG9jYWwgPiAwKQogCQkJCWRpZV9lcnJubyhfKCJmYWlsZWQgdG8gY3JlYXRlIGxpbmsgJyVzJyIpLCBkZXN0LT5idWYpOwogCQkJb3B0aW9uX25vX2hhcmRsaW5rcyA9IDE7CiAJCX0KQEAgLTM3NiwxMCArMzg3LDMyIEBACiBzdGF0aWMgY29uc3QgY2hhciAqanVua193b3JrX3RyZWU7CiBzdGF0aWMgY29uc3QgY2hhciAqanVua19naXRfZGlyOwogc3RhdGljIHBpZF90IGp1bmtfcGlkOworc3RhdGljIGVudW0geworCUpVTktfTEVBVkVfTk9ORSwKKwlKVU5LX0xFQVZFX1JFUE8sCisJSlVOS19MRUFWRV9BTEwKK30ganVua19tb2RlID0gSlVOS19MRUFWRV9OT05FOworCitzdGF0aWMgY29uc3QgY2hhciBqdW5rX2xlYXZlX3JlcG9fbXNnW10gPQorTl8oIkNsb25lIHN1Y2NlZWRlZCwgYnV0IGNoZWNrb3V0IGZhaWxlZC5cbiIKKyAgICJZb3UgY2FuIGluc3BlY3Qgd2hhdCB3YXMgY2hlY2tlZCBvdXQgd2l0aCAnZ2l0IHN0YXR1cydcbiIKKyAgICJhbmQgcmV0cnkgdGhlIGNoZWNrb3V0IHdpdGggJ2dpdCBjaGVja291dCAtZiBIRUFEJ1xuIik7CiAKIHN0YXRpYyB2b2lkIHJlbW92ZV9qdW5rKHZvaWQpCiB7CiAJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOworCisJc3dpdGNoIChqdW5rX21vZGUpIHsKKwljYXNlIEpVTktfTEVBVkVfUkVQTzoKKwkJd2FybmluZygiJXMiLCBfKGp1bmtfbGVhdmVfcmVwb19tc2cpKTsKKwkJLyogZmFsbC10aHJvdWdoICovCisJY2FzZSBKVU5LX0xFQVZFX0FMTDoKKwkJcmV0dXJuOworCWRlZmF1bHQ6CisJCS8qIHByb2NlZWQgdG8gcmVtb3ZhbCAqLworCQlicmVhazsKKwl9CisKIAlpZiAoZ2V0cGlkKCkgIT0ganVua19waWQpCiAJCXJldHVybjsKIAlpZiAoanVua19naXRfZGlyKSB7CkBAIC00MzMsOCArNDY2LDExIEBACiAKIAkJaWYgKCFvcHRpb25fYnJhbmNoKQogCQkJcmVtb3RlX2hlYWQgPSBndWVzc19yZW1vdGVfaGVhZChoZWFkLCByZWZzLCAwKTsKLQkJZWxzZQotCQkJcmVtb3RlX2hlYWQgPSBmaW5kX3JlbW90ZV9icmFuY2gocmVmcywgb3B0aW9uX2JyYW5jaCk7CisJCWVsc2UgeworCQkJbG9jYWxfcmVmcyA9IE5VTEw7CisJCQl0YWlsID0gJmxvY2FsX3JlZnM7CisJCQlyZW1vdGVfaGVhZCA9IGNvcHlfcmVmKGZpbmRfcmVtb3RlX2JyYW5jaChyZWZzLCBvcHRpb25fYnJhbmNoKSk7CisJCX0KIAogCQlpZiAoIXJlbW90ZV9oZWFkICYmIG9wdGlvbl9icmFuY2gpCiAJCQl3YXJuaW5nKF8oIkNvdWxkIG5vdCBmaW5kIHJlbW90ZSBicmFuY2ggJXMgdG8gY2xvbmUuIiksCkBAIC00ODIsMTIgKzUxOCw0MSBAQAogCX0KIH0KIAorc3RhdGljIGludCBpdGVyYXRlX3JlZl9tYXAodm9pZCAqY2JfZGF0YSwgdW5zaWduZWQgY2hhciBzaGExWzIwXSkKK3sKKwlzdHJ1Y3QgcmVmICoqcm0gPSBjYl9kYXRhOworCXN0cnVjdCByZWYgKnJlZiA9ICpybTsKKworCS8qCisJICogU2tpcCBhbnl0aGluZyBtaXNzaW5nIGEgcGVlcl9yZWYsIHdoaWNoIHdlIGFyZSBub3QKKwkgKiBhY3R1YWxseSBnb2luZyB0byB3cml0ZSBhIHJlZiBmb3IuCisJICovCisJd2hpbGUgKHJlZiAmJiAhcmVmLT5wZWVyX3JlZikKKwkJcmVmID0gcmVmLT5uZXh0OworCS8qIFJldHVybmluZyAtMSBub3RlcyAiZW5kIG9mIGxpc3QiIHRvIHRoZSBjYWxsZXIuICovCisJaWYgKCFyZWYpCisJCXJldHVybiAtMTsKKworCWhhc2hjcHkoc2hhMSwgcmVmLT5vbGRfc2hhMSk7CisJKnJtID0gcmVmLT5uZXh0OworCXJldHVybiAwOworfQorCiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVtb3RlX3JlZnMoY29uc3Qgc3RydWN0IHJlZiAqcmVmcywKIAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgcmVmICptYXBwZWRfcmVmcywKIAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgcmVmICpyZW1vdGVfaGVhZF9wb2ludHNfYXQsCiAJCQkgICAgICAgY29uc3QgY2hhciAqYnJhbmNoX3RvcCwKIAkJCSAgICAgICBjb25zdCBjaGFyICptc2cpCiB7CisJY29uc3Qgc3RydWN0IHJlZiAqcm0gPSBtYXBwZWRfcmVmczsKKworCWlmICgwIDw9IG9wdGlvbl92ZXJib3NpdHkpCisJCXByaW50ZihfKCJDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gIikpOworCWlmIChjaGVja19ldmVyeXRoaW5nX2Nvbm5lY3RlZChpdGVyYXRlX3JlZl9tYXAsIDAsICZybSkpCisJCWRpZShfKCJyZW1vdGUgZGlkIG5vdCBzZW5kIGFsbCBuZWNlc3Nhcnkgb2JqZWN0cyIpKTsKKwlpZiAoMCA8PSBvcHRpb25fdmVyYm9zaXR5KQorCQlwcmludGYoXygiZG9uZVxuIikpOworCiAJaWYgKHJlZnMpIHsKIAkJd3JpdGVfcmVtb3RlX3JlZnMobWFwcGVkX3JlZnMpOwogCQlpZiAob3B0aW9uX3NpbmdsZV9icmFuY2gpCkBAIC01NzYsNyArNjQxLDggQEAKIAl0cmVlID0gcGFyc2VfdHJlZV9pbmRpcmVjdChzaGExKTsKIAlwYXJzZV90cmVlKHRyZWUpOwogCWluaXRfdHJlZV9kZXNjKCZ0LCB0cmVlLT5idWZmZXIsIHRyZWUtPnNpemUpOwotCXVucGFja190cmVlcygxLCAmdCwgJm9wdHMpOworCWlmICh1bnBhY2tfdHJlZXMoMSwgJnQsICZvcHRzKSA8IDApCisJCWRpZShfKCJ1bmFibGUgdG8gY2hlY2tvdXQgd29ya2luZyB0cmVlIikpOwogCiAJaWYgKHdyaXRlX2NhY2hlKGZkLCBhY3RpdmVfY2FjaGUsIGFjdGl2ZV9ucikgfHwKIAkgICAgY29tbWl0X2xvY2tlZF9pbmRleChsb2NrX2ZpbGUpKQpAQCAtNjA3LDYgKzY3Myw1NCBAQAogCX0KIH0KIAorc3RhdGljIHZvaWQgd3JpdGVfcmVmc3BlY19jb25maWcoY29uc3QgY2hhciogc3JjX3JlZl9wcmVmaXgsCisJCWNvbnN0IHN0cnVjdCByZWYqIG91cl9oZWFkX3BvaW50c19hdCwKKwkJY29uc3Qgc3RydWN0IHJlZiogcmVtb3RlX2hlYWRfcG9pbnRzX2F0LCBzdHJ1Y3Qgc3RyYnVmKiBicmFuY2hfdG9wKQoreworCXN0cnVjdCBzdHJidWYga2V5ID0gU1RSQlVGX0lOSVQ7CisJc3RydWN0IHN0cmJ1ZiB2YWx1ZSA9IFNUUkJVRl9JTklUOworCisJaWYgKG9wdGlvbl9taXJyb3IgfHwgIW9wdGlvbl9iYXJlKSB7CisJCWlmIChvcHRpb25fc2luZ2xlX2JyYW5jaCAmJiAhb3B0aW9uX21pcnJvcikgeworCQkJaWYgKG9wdGlvbl9icmFuY2gpIHsKKwkJCQlpZiAoc3Ryc3RyKG91cl9oZWFkX3BvaW50c19hdC0+bmFtZSwgInJlZnMvdGFncy8iKSkKKwkJCQkJc3RyYnVmX2FkZGYoJnZhbHVlLCAiKyVzOiVzIiwgb3VyX2hlYWRfcG9pbnRzX2F0LT5uYW1lLAorCQkJCQkJb3VyX2hlYWRfcG9pbnRzX2F0LT5uYW1lKTsKKwkJCQllbHNlCisJCQkJCXN0cmJ1Zl9hZGRmKCZ2YWx1ZSwgIislczolcyVzIiwgb3VyX2hlYWRfcG9pbnRzX2F0LT5uYW1lLAorCQkJCQkJYnJhbmNoX3RvcC0+YnVmLCBvcHRpb25fYnJhbmNoKTsKKwkJCX0gZWxzZSBpZiAocmVtb3RlX2hlYWRfcG9pbnRzX2F0KSB7CisJCQkJc3RyYnVmX2FkZGYoJnZhbHVlLCAiKyVzOiVzJXMiLCByZW1vdGVfaGVhZF9wb2ludHNfYXQtPm5hbWUsCisJCQkJCQlicmFuY2hfdG9wLT5idWYsCisJCQkJCQlza2lwX3ByZWZpeChyZW1vdGVfaGVhZF9wb2ludHNfYXQtPm5hbWUsICJyZWZzL2hlYWRzLyIpKTsKKwkJCX0KKwkJCS8qCisJCQkgKiBvdGhlcndpc2UsIHRoZSBuZXh0ICJnaXQgZmV0Y2giIHdpbGwKKwkJCSAqIHNpbXBseSBmZXRjaCBmcm9tIEhFQUQgd2l0aG91dCB1cGRhdGluZworCQkJICogYW55IHJlbW90ZSB0cmFja2luZyBicmFuY2gsIHdoaWNoIGlzIHdoYXQKKwkJCSAqIHdlIHdhbnQuCisJCQkgKi8KKwkJfSBlbHNlIHsKKwkJCXN0cmJ1Zl9hZGRmKCZ2YWx1ZSwgIislcyo6JXMqIiwgc3JjX3JlZl9wcmVmaXgsIGJyYW5jaF90b3AtPmJ1Zik7CisJCX0KKwkJLyogQ29uZmlndXJlIHRoZSByZW1vdGUgKi8KKwkJaWYgKHZhbHVlLmxlbikgeworCQkJc3RyYnVmX2FkZGYoJmtleSwgInJlbW90ZS4lcy5mZXRjaCIsIG9wdGlvbl9vcmlnaW4pOworCQkJZ2l0X2NvbmZpZ19zZXRfbXVsdGl2YXIoa2V5LmJ1ZiwgdmFsdWUuYnVmLCAiXiQiLCAwKTsKKwkJCXN0cmJ1Zl9yZXNldCgma2V5KTsKKworCQkJaWYgKG9wdGlvbl9taXJyb3IpIHsKKwkJCQlzdHJidWZfYWRkZigma2V5LCAicmVtb3RlLiVzLm1pcnJvciIsIG9wdGlvbl9vcmlnaW4pOworCQkJCWdpdF9jb25maWdfc2V0KGtleS5idWYsICJ0cnVlIik7CisJCQkJc3RyYnVmX3Jlc2V0KCZrZXkpOworCQkJfQorCQl9CisJfQorCisJc3RyYnVmX3JlbGVhc2UoJmtleSk7CisJc3RyYnVmX3JlbGVhc2UoJnZhbHVlKTsKK30KKwogaW50IGNtZF9jbG9uZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKIAlpbnQgaXNfYnVuZGxlID0gMCwgaXNfbG9jYWw7CkBAIC02NTMsNiArNzY3LDggQEAKIAkJaWYgKG9wdGlvbl9vcmlnaW4pCiAJCQlkaWUoXygiLS1iYXJlIGFuZCAtLW9yaWdpbiAlcyBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIiksCiAJCQkgICAgb3B0aW9uX29yaWdpbik7CisJCWlmIChyZWFsX2dpdF9kaXIpCisJCQlkaWUoXygiLS1iYXJlIGFuZCAtLXNlcGFyYXRlLWdpdC1kaXIgYXJlIGluY29tcGF0aWJsZS4iKSk7CiAJCW9wdGlvbl9ub19jaGVja291dCA9IDE7CiAJfQogCkBAIC02NjgsNyArNzg0LDcgQEAKIAkJZGllKF8oInJlcG9zaXRvcnkgJyVzJyBkb2VzIG5vdCBleGlzdCIpLCByZXBvX25hbWUpOwogCWVsc2UKIAkJcmVwbyA9IHJlcG9fbmFtZTsKLQlpc19sb2NhbCA9IHBhdGggJiYgIWlzX2J1bmRsZTsKKwlpc19sb2NhbCA9IG9wdGlvbl9sb2NhbCAhPSAwICYmIHBhdGggJiYgIWlzX2J1bmRsZTsKIAlpZiAoaXNfbG9jYWwgJiYgb3B0aW9uX2RlcHRoKQogCQl3YXJuaW5nKF8oIi0tZGVwdGggaXMgaWdub3JlZCBpbiBsb2NhbCBjbG9uZXM7IHVzZSBmaWxlOi8vIGluc3RlYWQuIikpOwogCkBAIC02OTcsNyArODEzLDcgQEAKIAkJZ2l0X2RpciA9IHhzdHJkdXAoZGlyKTsKIAllbHNlIHsKIAkJd29ya190cmVlID0gZGlyOwotCQlnaXRfZGlyID0geHN0cmR1cChta3BhdGgoIiVzLy5naXQiLCBkaXIpKTsKKwkJZ2l0X2RpciA9IG1rcGF0aGR1cCgiJXMvLmdpdCIsIGRpcik7CiAJfQogCiAJaWYgKCFvcHRpb25fYmFyZSkgewpAQCAtNzA1LDcgKzgyMSw3IEBACiAJCWlmIChzYWZlX2NyZWF0ZV9sZWFkaW5nX2RpcmVjdG9yaWVzX2NvbnN0KHdvcmtfdHJlZSkgPCAwKQogCQkJZGllX2Vycm5vKF8oImNvdWxkIG5vdCBjcmVhdGUgbGVhZGluZyBkaXJlY3RvcmllcyBvZiAnJXMnIiksCiAJCQkJICB3b3JrX3RyZWUpOwotCQlpZiAoIWRlc3RfZXhpc3RzICYmIG1rZGlyKHdvcmtfdHJlZSwgMDc1NSkpCisJCWlmICghZGVzdF9leGlzdHMgJiYgbWtkaXIod29ya190cmVlLCAwNzc3KSkKIAkJCWRpZV9lcnJubyhfKCJjb3VsZCBub3QgY3JlYXRlIHdvcmsgdHJlZSBkaXIgJyVzJy4iKSwKIAkJCQkgIHdvcmtfdHJlZSk7CiAJCXNldF9naXRfd29ya190cmVlKHdvcmtfdHJlZSk7CkBAIC03MTQsMTQgKzgzMCwxNCBAQAogCWF0ZXhpdChyZW1vdmVfanVuayk7CiAJc2lnY2hhaW5fcHVzaF9jb21tb24ocmVtb3ZlX2p1bmtfb25fc2lnbmFsKTsKIAotCXNldGVudihDT05GSUdfRU5WSVJPTk1FTlQsIG1rcGF0aCgiJXMvY29uZmlnIiwgZ2l0X2RpciksIDEpOwotCiAJaWYgKHNhZmVfY3JlYXRlX2xlYWRpbmdfZGlyZWN0b3JpZXNfY29uc3QoZ2l0X2RpcikgPCAwKQogCQlkaWUoXygiY291bGQgbm90IGNyZWF0ZSBsZWFkaW5nIGRpcmVjdG9yaWVzIG9mICclcyciKSwgZ2l0X2Rpcik7CiAKIAlzZXRfZ2l0X2Rpcl9pbml0KGdpdF9kaXIsIHJlYWxfZ2l0X2RpciwgMCk7Ci0JaWYgKHJlYWxfZ2l0X2RpcikKKwlpZiAocmVhbF9naXRfZGlyKSB7CiAJCWdpdF9kaXIgPSByZWFsX2dpdF9kaXI7CisJCWp1bmtfZ2l0X2RpciA9IHJlYWxfZ2l0X2RpcjsKKwl9CiAKIAlpZiAoMCA8PSBvcHRpb25fdmVyYm9zaXR5KSB7CiAJCWlmIChvcHRpb25fYmFyZSkKQEAgLTczMiwxMyArODQ4LDYgQEAKIAlpbml0X2RiKG9wdGlvbl90ZW1wbGF0ZSwgSU5JVF9EQl9RVUlFVCk7CiAJd3JpdGVfY29uZmlnKCZvcHRpb25fY29uZmlnKTsKIAotCS8qCi0JICogQXQgdGhpcyBwb2ludCwgdGhlIGNvbmZpZyBleGlzdHMsIHNvIHdlIGRvIG5vdCBuZWVkIHRoZQotCSAqIGVudmlyb25tZW50IHZhcmlhYmxlLiAgV2UgYWN0dWFsbHkgbmVlZCB0byB1bnNldCBpdCwgdG9vLCB0bwotCSAqIHJlLWVuYWJsZSBwYXJzaW5nIG9mIHRoZSBnbG9iYWwgY29uZmlncy4KLQkgKi8KLQl1bnNldGVudihDT05GSUdfRU5WSVJPTk1FTlQpOwotCiAJZ2l0X2NvbmZpZyhnaXRfZGVmYXVsdF9jb25maWcsIE5VTEwpOwogCiAJaWYgKG9wdGlvbl9iYXJlKSB7CkBAIC03NTIsMjAgKzg2MSw2IEBACiAJfQogCiAJc3RyYnVmX2FkZGYoJnZhbHVlLCAiKyVzKjolcyoiLCBzcmNfcmVmX3ByZWZpeCwgYnJhbmNoX3RvcC5idWYpOwotCi0JaWYgKG9wdGlvbl9taXJyb3IgfHwgIW9wdGlvbl9iYXJlKSB7Ci0JCS8qIENvbmZpZ3VyZSB0aGUgcmVtb3RlICovCi0JCXN0cmJ1Zl9hZGRmKCZrZXksICJyZW1vdGUuJXMuZmV0Y2giLCBvcHRpb25fb3JpZ2luKTsKLQkJZ2l0X2NvbmZpZ19zZXRfbXVsdGl2YXIoa2V5LmJ1ZiwgdmFsdWUuYnVmLCAiXiQiLCAwKTsKLQkJc3RyYnVmX3Jlc2V0KCZrZXkpOwotCi0JCWlmIChvcHRpb25fbWlycm9yKSB7Ci0JCQlzdHJidWZfYWRkZigma2V5LCAicmVtb3RlLiVzLm1pcnJvciIsIG9wdGlvbl9vcmlnaW4pOwotCQkJZ2l0X2NvbmZpZ19zZXQoa2V5LmJ1ZiwgInRydWUiKTsKLQkJCXN0cmJ1Zl9yZXNldCgma2V5KTsKLQkJfQotCX0KLQogCXN0cmJ1Zl9hZGRmKCZrZXksICJyZW1vdGUuJXMudXJsIiwgb3B0aW9uX29yaWdpbik7CiAJZ2l0X2NvbmZpZ19zZXQoa2V5LmJ1ZiwgcmVwbyk7CiAJc3RyYnVmX3Jlc2V0KCZrZXkpOwpAQCAtODUwLDYgKzk0NSw5IEBACiAJCQkJCSAgICAgICJyZWZzL2hlYWRzL21hc3RlciIpOwogCX0KIAorCXdyaXRlX3JlZnNwZWNfY29uZmlnKHNyY19yZWZfcHJlZml4LCBvdXJfaGVhZF9wb2ludHNfYXQsCisJCQlyZW1vdGVfaGVhZF9wb2ludHNfYXQsICZicmFuY2hfdG9wKTsKKwogCWlmIChpc19sb2NhbCkKIAkJY2xvbmVfbG9jYWwocGF0aCwgZ2l0X2Rpcik7CiAJZWxzZSBpZiAocmVmcyAmJiBjb21wbGV0ZV9yZWZzX2JlZm9yZV9mZXRjaCkKQEAgLTg2MywxMiArOTYxLDEzIEBACiAJdHJhbnNwb3J0X3VubG9ja19wYWNrKHRyYW5zcG9ydCk7CiAJdHJhbnNwb3J0X2Rpc2Nvbm5lY3QodHJhbnNwb3J0KTsKIAorCWp1bmtfbW9kZSA9IEpVTktfTEVBVkVfUkVQTzsKIAllcnIgPSBjaGVja291dCgpOwogCiAJc3RyYnVmX3JlbGVhc2UoJnJlZmxvZ19tc2cpOwogCXN0cmJ1Zl9yZWxlYXNlKCZicmFuY2hfdG9wKTsKIAlzdHJidWZfcmVsZWFzZSgma2V5KTsKIAlzdHJidWZfcmVsZWFzZSgmdmFsdWUpOwotCWp1bmtfcGlkID0gMDsKKwlqdW5rX21vZGUgPSBKVU5LX0xFQVZFX0FMTDsKIAlyZXR1cm4gZXJyOwogfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9jb2x1bW4uYyBiL2J1aWx0aW4vY29sdW1uLmMKaW5kZXggNWVhNzk4YS4uZTEyNWE1NSAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jb2x1bW4uYworKysgYi9idWlsdGluL2NvbHVtbi5jCkBAIC02LDcgKzYsNyBAQAogI2luY2x1ZGUgImNvbHVtbi5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGJ1aWx0aW5fY29sdW1uX3VzYWdlW10gPSB7Ci0JImdpdCBjb2x1bW4gW29wdGlvbnNdIiwKKwlOXygiZ2l0IGNvbHVtbiBbb3B0aW9uc10iKSwKIAlOVUxMCiB9Owogc3RhdGljIHVuc2lnbmVkIGludCBjb2xvcHRzOwpAQCAtMjMsMTMgKzIzLDEzIEBACiAJc3RydWN0IGNvbHVtbl9vcHRpb25zIGNvcHRzOwogCWNvbnN0IGNoYXIgKmNvbW1hbmQgPSBOVUxMLCAqcmVhbF9jb21tYW5kID0gTlVMTDsKIAlzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKLQkJT1BUX1NUUklORygwLCAiY29tbWFuZCIsICZyZWFsX2NvbW1hbmQsICJuYW1lIiwgImxvb2t1cCBjb25maWcgdmFycyIpLAotCQlPUFRfQ09MVU1OKDAsICJtb2RlIiwgJmNvbG9wdHMsICJsYXlvdXQgdG8gdXNlIiksCi0JCU9QVF9JTlRFR0VSKDAsICJyYXctbW9kZSIsICZjb2xvcHRzLCAibGF5b3V0IHRvIHVzZSIpLAotCQlPUFRfSU5URUdFUigwLCAid2lkdGgiLCAmY29wdHMud2lkdGgsICJNYXhpbXVtIHdpZHRoIiksCi0JCU9QVF9TVFJJTkcoMCwgImluZGVudCIsICZjb3B0cy5pbmRlbnQsICJzdHJpbmciLCAiUGFkZGluZyBzcGFjZSBvbiBsZWZ0IGJvcmRlciIpLAotCQlPUFRfSU5URUdFUigwLCAibmwiLCAmY29wdHMubmwsICJQYWRkaW5nIHNwYWNlIG9uIHJpZ2h0IGJvcmRlciIpLAotCQlPUFRfSU5URUdFUigwLCAicGFkZGluZyIsICZjb3B0cy5wYWRkaW5nLCAiUGFkZGluZyBzcGFjZSBiZXR3ZWVuIGNvbHVtbnMiKSwKKwkJT1BUX1NUUklORygwLCAiY29tbWFuZCIsICZyZWFsX2NvbW1hbmQsIE5fKCJuYW1lIiksIE5fKCJsb29rdXAgY29uZmlnIHZhcnMiKSksCisJCU9QVF9DT0xVTU4oMCwgIm1vZGUiLCAmY29sb3B0cywgTl8oImxheW91dCB0byB1c2UiKSksCisJCU9QVF9JTlRFR0VSKDAsICJyYXctbW9kZSIsICZjb2xvcHRzLCBOXygibGF5b3V0IHRvIHVzZSIpKSwKKwkJT1BUX0lOVEVHRVIoMCwgIndpZHRoIiwgJmNvcHRzLndpZHRoLCBOXygiTWF4aW11bSB3aWR0aCIpKSwKKwkJT1BUX1NUUklORygwLCAiaW5kZW50IiwgJmNvcHRzLmluZGVudCwgTl8oInN0cmluZyIpLCBOXygiUGFkZGluZyBzcGFjZSBvbiBsZWZ0IGJvcmRlciIpKSwKKwkJT1BUX0lOVEVHRVIoMCwgIm5sIiwgJmNvcHRzLm5sLCBOXygiUGFkZGluZyBzcGFjZSBvbiByaWdodCBib3JkZXIiKSksCisJCU9QVF9JTlRFR0VSKDAsICJwYWRkaW5nIiwgJmNvcHRzLnBhZGRpbmcsIE5fKCJQYWRkaW5nIHNwYWNlIGJldHdlZW4gY29sdW1ucyIpKSwKIAkJT1BUX0VORCgpCiAJfTsKIApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9jb21taXQtdHJlZS5jIGIvYnVpbHRpbi9jb21taXQtdHJlZS5jCmluZGV4IDE2NGI2NTUuLmY2NDFmZjIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vY29tbWl0LXRyZWUuYworKysgYi9idWlsdGluL2NvbW1pdC10cmVlLmMKQEAgLTEwLDcgKzEwLDcgQEAKICNpbmNsdWRlICJ1dGY4LmgiCiAjaW5jbHVkZSAiZ3BnLWludGVyZmFjZS5oIgogCi1zdGF0aWMgY29uc3QgY2hhciBjb21taXRfdHJlZV91c2FnZVtdID0gImdpdCBjb21taXQtdHJlZSBbKC1wIDxzaGExPikuLi5dIFstUzxzaWduZXI+XSBbLW0gPG1lc3NhZ2U+XSBbLUYgPGZpbGU+XSA8c2hhMT4gPGNoYW5nZWxvZyI7CitzdGF0aWMgY29uc3QgY2hhciBjb21taXRfdHJlZV91c2FnZVtdID0gImdpdCBjb21taXQtdHJlZSBbKC1wIDxzaGExPikuLi5dIFstU1s8a2V5aWQ+XV0gWy1tIDxtZXNzYWdlPl0gWy1GIDxmaWxlPl0gPHNoYTE+IDxjaGFuZ2Vsb2ciOwogCiBzdGF0aWMgdm9pZCBuZXdfcGFyZW50KHN0cnVjdCBjb21taXQgKnBhcmVudCwgc3RydWN0IGNvbW1pdF9saXN0ICoqcGFyZW50c19wKQogewpAQCAtNDgsMTYgKzQ4LDEzIEBACiAJaWYgKGFyZ2MgPCAyIHx8ICFzdHJjbXAoYXJndlsxXSwgIi1oIikpCiAJCXVzYWdlKGNvbW1pdF90cmVlX3VzYWdlKTsKIAotCWlmIChnZXRfc2hhMShhcmd2WzFdLCB0cmVlX3NoYTEpKQotCQlkaWUoIk5vdCBhIHZhbGlkIG9iamVjdCBuYW1lICVzIiwgYXJndlsxXSk7Ci0KIAlmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7CiAJCWNvbnN0IGNoYXIgKmFyZyA9IGFyZ3ZbaV07CiAJCWlmICghc3RyY21wKGFyZywgIi1wIikpIHsKIAkJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAJCQlpZiAoYXJnYyA8PSArK2kpCiAJCQkJdXNhZ2UoY29tbWl0X3RyZWVfdXNhZ2UpOwotCQkJaWYgKGdldF9zaGExKGFyZ3ZbaV0sIHNoYTEpKQorCQkJaWYgKGdldF9zaGExX2NvbW1pdChhcmd2W2ldLCBzaGExKSkKIAkJCQlkaWUoIk5vdCBhIHZhbGlkIG9iamVjdCBuYW1lICVzIiwgYXJndltpXSk7CiAJCQlhc3NlcnRfc2hhMV90eXBlKHNoYTEsIE9CSl9DT01NSVQpOwogCQkJbmV3X3BhcmVudChsb29rdXBfY29tbWl0KHNoYTEpLCAmcGFyZW50cyk7CkBAIC0xMDQsNyArMTAxLDcgQEAKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJaWYgKGdldF9zaGExKGFyZywgdHJlZV9zaGExKSkKKwkJaWYgKGdldF9zaGExX3RyZWUoYXJnLCB0cmVlX3NoYTEpKQogCQkJZGllKCJOb3QgYSB2YWxpZCBvYmplY3QgbmFtZSAlcyIsIGFyZyk7CiAJCWlmIChnb3RfdHJlZSkKIAkJCWRpZSgiQ2Fubm90IGdpdmUgbW9yZSB0aGFuIG9uZSB0cmVlcyIpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9jb21taXQuYyBiL2J1aWx0aW4vY29tbWl0LmMKaW5kZXggZjQzZWFhZi4uMTYyMWRmYyAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jb21taXQuYworKysgYi9idWlsdGluL2NvbW1pdC5jCkBAIC0yOCwxNCArMjgsMTUgQEAKICNpbmNsdWRlICJzdWJtb2R1bGUuaCIKICNpbmNsdWRlICJncGctaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY29sdW1uLmgiCisjaW5jbHVkZSAic2VxdWVuY2VyLmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9jb21taXRfdXNhZ2VbXSA9IHsKLQkiZ2l0IGNvbW1pdCBbb3B0aW9uc10gWy0tXSA8ZmlsZXBhdHRlcm4+Li4uIiwKKwlOXygiZ2l0IGNvbW1pdCBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIiksCiAJTlVMTAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBidWlsdGluX3N0YXR1c191c2FnZVtdID0gewotCSJnaXQgc3RhdHVzIFtvcHRpb25zXSBbLS1dIDxmaWxlcGF0dGVybj4uLi4iLAorCU5fKCJnaXQgc3RhdHVzIFtvcHRpb25zXSBbLS1dIDxwYXRoc3BlYz4uLi4iKSwKIAlOVUxMCiB9OwogCkBAIC0xMDIsMjggKzEwMywzMyBAQAogCUNMRUFOVVBfTk9ORSwKIAlDTEVBTlVQX0FMTAogfSBjbGVhbnVwX21vZGU7Ci1zdGF0aWMgY2hhciAqY2xlYW51cF9hcmc7CitzdGF0aWMgY29uc3QgY2hhciAqY2xlYW51cF9hcmc7CiAKIHN0YXRpYyBlbnVtIGNvbW1pdF93aGVuY2Ugd2hlbmNlOwogc3RhdGljIGludCB1c2VfZWRpdG9yID0gMSwgaW5jbHVkZV9zdGF0dXMgPSAxOwotc3RhdGljIGludCBzaG93X2lnbm9yZWRfaW5fc3RhdHVzOworc3RhdGljIGludCBzaG93X2lnbm9yZWRfaW5fc3RhdHVzLCBoYXZlX29wdGlvbl9tOwogc3RhdGljIGNvbnN0IGNoYXIgKm9ubHlfaW5jbHVkZV9hc3N1bWVkOwogc3RhdGljIHN0cnVjdCBzdHJidWYgbWVzc2FnZSA9IFNUUkJVRl9JTklUOwogCiBzdGF0aWMgZW51bSB7CisJU1RBVFVTX0ZPUk1BVF9OT05FID0gMCwKIAlTVEFUVVNfRk9STUFUX0xPTkcsCiAJU1RBVFVTX0ZPUk1BVF9TSE9SVCwKIAlTVEFUVVNfRk9STUFUX1BPUkNFTEFJTgotfSBzdGF0dXNfZm9ybWF0ID0gU1RBVFVTX0ZPUk1BVF9MT05HOworfSBzdGF0dXNfZm9ybWF0OwogCiBzdGF0aWMgaW50IG9wdF9wYXJzZV9tKGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdCwgY29uc3QgY2hhciAqYXJnLCBpbnQgdW5zZXQpCiB7CiAJc3RydWN0IHN0cmJ1ZiAqYnVmID0gb3B0LT52YWx1ZTsKLQlpZiAodW5zZXQpCisJaWYgKHVuc2V0KSB7CisJCWhhdmVfb3B0aW9uX20gPSAwOwogCQlzdHJidWZfc2V0bGVuKGJ1ZiwgMCk7Ci0JZWxzZSB7CisJfSBlbHNlIHsKKwkJaGF2ZV9vcHRpb25fbSA9IDE7CisJCWlmIChidWYtPmxlbikKKwkJCXN0cmJ1Zl9hZGRjaChidWYsICdcbicpOwogCQlzdHJidWZfYWRkc3RyKGJ1ZiwgYXJnKTsKLQkJc3RyYnVmX2FkZHN0cihidWYsICJcblxuIik7CisJCXN0cmJ1Zl9jb21wbGV0ZV9saW5lKGJ1Zik7CiAJfQogCXJldHVybiAwOwogfQpAQCAtMTg0LDYgKzE5MCw5IEBACiAJaW50IGk7CiAJY2hhciAqbTsKIAorCWlmICghcGF0dGVybikKKwkJcmV0dXJuIDA7CisKIAlmb3IgKGkgPSAwOyBwYXR0ZXJuW2ldOyBpKyspCiAJCTsKIAltID0geGNhbGxvYygxLCBpKTsKQEAgLTM0NSw3ICszNTQsNyBAQAogCSAqIGFuZCBjcmVhdGUgY29tbWl0IGZyb20gdGhlX2luZGV4LgogCSAqIFdlIHN0aWxsIG5lZWQgdG8gcmVmcmVzaCB0aGUgaW5kZXggaGVyZS4KIAkgKi8KLQlpZiAoIXBhdGhzcGVjIHx8ICEqcGF0aHNwZWMpIHsKKwlpZiAoIW9ubHkgJiYgKCFwYXRoc3BlYyB8fCAhKnBhdGhzcGVjKSkgewogCQlmZCA9IGhvbGRfbG9ja2VkX2luZGV4KCZpbmRleF9sb2NrLCAxKTsKIAkJcmVmcmVzaF9jYWNoZV9vcl9kaWUocmVmcmVzaF9mbGFncyk7CiAJCWlmIChhY3RpdmVfY2FjaGVfY2hhbmdlZCkgewpAQCAtNDUwLDYgKzQ1OSw3IEBACiAJY2FzZSBTVEFUVVNfRk9STUFUX1BPUkNFTEFJTjoKIAkJd3RfcG9yY2VsYWluX3ByaW50KHMpOwogCQlicmVhazsKKwljYXNlIFNUQVRVU19GT1JNQVRfTk9ORToKIAljYXNlIFNUQVRVU19GT1JNQVRfTE9ORzoKIAkJd3Rfc3RhdHVzX3ByaW50KHMpOwogCQlicmVhazsKQEAgLTQ2Myw4ICs0NzMsNiBAQAogCXJldHVybiAhIShjdXJyZW50X2hlYWQtPnBhcmVudHMgJiYgY3VycmVudF9oZWFkLT5wYXJlbnRzLT5uZXh0KTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgc2lnbl9vZmZfaGVhZGVyW10gPSAiU2lnbmVkLW9mZi1ieTogIjsKLQogc3RhdGljIHZvaWQgZXhwb3J0X29uZShjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmUsIGludCBoYWNrKQogewogCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CkBAIC00NzUsNiArNDgzLDIwIEBACiAJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CiB9CiAKK3N0YXRpYyBpbnQgc2FuZV9pZGVudF9zcGxpdChzdHJ1Y3QgaWRlbnRfc3BsaXQgKnBlcnNvbikKK3sKKwlpZiAoIXBlcnNvbi0+bmFtZV9iZWdpbiB8fCAhcGVyc29uLT5uYW1lX2VuZCB8fAorCSAgICBwZXJzb24tPm5hbWVfYmVnaW4gPT0gcGVyc29uLT5uYW1lX2VuZCkKKwkJcmV0dXJuIDA7IC8qIG5vIGh1bWFuIHJlYWRhYmxlIG5hbWUgKi8KKwlpZiAoIXBlcnNvbi0+bWFpbF9iZWdpbiB8fCAhcGVyc29uLT5tYWlsX2VuZCB8fAorCSAgICBwZXJzb24tPm1haWxfYmVnaW4gPT0gcGVyc29uLT5tYWlsX2VuZCkKKwkJcmV0dXJuIDA7IC8qIG5vIHVzYWJsZSBtYWlsICovCisJaWYgKCFwZXJzb24tPmRhdGVfYmVnaW4gfHwgIXBlcnNvbi0+ZGF0ZV9lbmQgfHwKKwkgICAgIXBlcnNvbi0+dHpfYmVnaW4gfHwgIXBlcnNvbi0+dHpfZW5kKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gMTsKK30KKwogc3RhdGljIHZvaWQgZGV0ZXJtaW5lX2F1dGhvcl9pbmZvKHN0cnVjdCBzdHJidWYgKmF1dGhvcl9pZGVudCkKIHsKIAljaGFyICpuYW1lLCAqZW1haWwsICpkYXRlOwpAQCAtNTI3LDU0ICs1NDksMTQgQEAKIAlpZiAoZm9yY2VfZGF0ZSkKIAkJZGF0ZSA9IGZvcmNlX2RhdGU7CiAJc3RyYnVmX2FkZHN0cihhdXRob3JfaWRlbnQsIGZtdF9pZGVudChuYW1lLCBlbWFpbCwgZGF0ZSwgSURFTlRfU1RSSUNUKSk7Ci0JaWYgKCFzcGxpdF9pZGVudF9saW5lKCZhdXRob3IsIGF1dGhvcl9pZGVudC0+YnVmLCBhdXRob3JfaWRlbnQtPmxlbikpIHsKKwlpZiAoIXNwbGl0X2lkZW50X2xpbmUoJmF1dGhvciwgYXV0aG9yX2lkZW50LT5idWYsIGF1dGhvcl9pZGVudC0+bGVuKSAmJgorCSAgICBzYW5lX2lkZW50X3NwbGl0KCZhdXRob3IpKSB7CiAJCWV4cG9ydF9vbmUoIkdJVF9BVVRIT1JfTkFNRSIsIGF1dGhvci5uYW1lX2JlZ2luLCBhdXRob3IubmFtZV9lbmQsIDApOwogCQlleHBvcnRfb25lKCJHSVRfQVVUSE9SX0VNQUlMIiwgYXV0aG9yLm1haWxfYmVnaW4sIGF1dGhvci5tYWlsX2VuZCwgMCk7CiAJCWV4cG9ydF9vbmUoIkdJVF9BVVRIT1JfREFURSIsIGF1dGhvci5kYXRlX2JlZ2luLCBhdXRob3IudHpfZW5kLCAnQCcpOwogCX0KIH0KIAotc3RhdGljIGludCBlbmRzX3JmYzI4MjJfZm9vdGVyKHN0cnVjdCBzdHJidWYgKnNiKQotewotCWludCBjaDsKLQlpbnQgaGl0ID0gMDsKLQlpbnQgaSwgaiwgazsKLQlpbnQgbGVuID0gc2ItPmxlbjsKLQlpbnQgZmlyc3QgPSAxOwotCWNvbnN0IGNoYXIgKmJ1ZiA9IHNiLT5idWY7Ci0KLQlmb3IgKGkgPSBsZW4gLSAxOyBpID4gMDsgaS0tKSB7Ci0JCWlmIChoaXQgJiYgYnVmW2ldID09ICdcbicpCi0JCQlicmVhazsKLQkJaGl0ID0gKGJ1ZltpXSA9PSAnXG4nKTsKLQl9Ci0KLQl3aGlsZSAoaSA8IGxlbiAtIDEgJiYgYnVmW2ldID09ICdcbicpCi0JCWkrKzsKLQotCWZvciAoOyBpIDwgbGVuOyBpID0gaykgewotCQlmb3IgKGsgPSBpOyBrIDwgbGVuICYmIGJ1ZltrXSAhPSAnXG4nOyBrKyspCi0JCQk7IC8qIGRvIG5vdGhpbmcgKi8KLQkJaysrOwotCi0JCWlmICgoYnVmW2tdID09ICcgJyB8fCBidWZba10gPT0gJ1x0JykgJiYgIWZpcnN0KQotCQkJY29udGludWU7Ci0KLQkJZmlyc3QgPSAwOwotCi0JCWZvciAoaiA9IDA7IGkgKyBqIDwgbGVuOyBqKyspIHsKLQkJCWNoID0gYnVmW2kgKyBqXTsKLQkJCWlmIChjaCA9PSAnOicpCi0JCQkJYnJlYWs7Ci0JCQlpZiAoaXNhbG51bShjaCkgfHwKLQkJCSAgICAoY2ggPT0gJy0nKSkKLQkJCQljb250aW51ZTsKLQkJCXJldHVybiAwOwotCQl9Ci0JfQotCXJldHVybiAxOwotfQotCiBzdGF0aWMgY2hhciAqY3V0X2lkZW50X3RpbWVzdGFtcF9wYXJ0KGNoYXIgKnN0cmluZykKIHsKIAljaGFyICprZXQgPSBzdHJyY2hyKHN0cmluZywgJz4nKTsKQEAgLTY0MCw3ICs2MjIsNyBAQAogCQlob29rX2FyZzEgPSAibWVzc2FnZSI7CiAJfSBlbHNlIGlmICh1c2VfbWVzc2FnZSkgewogCQlidWZmZXIgPSBzdHJzdHIodXNlX21lc3NhZ2VfYnVmZmVyLCAiXG5cbiIpOwotCQlpZiAoIWJ1ZmZlciB8fCBidWZmZXJbMl0gPT0gJ1wwJykKKwkJaWYgKCF1c2VfZWRpdG9yICYmICghYnVmZmVyIHx8IGJ1ZmZlclsyXSA9PSAnXDAnKSkKIAkJCWRpZShfKCJjb21taXQgaGFzIGVtcHR5IG1lc3NhZ2UiKSk7CiAJCXN0cmJ1Zl9hZGQoJnNiLCBidWZmZXIgKyAyLCBzdHJsZW4oYnVmZmVyICsgMikpOwogCQlob29rX2FyZzEgPSAiY29tbWl0IjsKQEAgLTY5OSwyMSArNjgxLDMwIEBACiAJCXN0cmlwc3BhY2UoJnNiLCAwKTsKIAogCWlmIChzaWdub2ZmKSB7Ci0JCXN0cnVjdCBzdHJidWYgc29iID0gU1RSQlVGX0lOSVQ7Ci0JCWludCBpOworCQkvKgorCQkgKiBTZWUgaWYgd2UgaGF2ZSBhIENvbmZsaWN0czogYmxvY2sgYXQgdGhlIGVuZC4gSWYgeWVzLCBjb3VudAorCQkgKiBpdHMgc2l6ZSwgc28gd2UgY2FuIGlnbm9yZSBpdC4KKwkJICovCisJCWludCBpZ25vcmVfZm9vdGVyID0gMDsKKwkJaW50IGksIGVvbCwgcHJldmlvdXMgPSAwOworCQljb25zdCBjaGFyICpubDsKIAotCQlzdHJidWZfYWRkc3RyKCZzb2IsIHNpZ25fb2ZmX2hlYWRlcik7Ci0JCXN0cmJ1Zl9hZGRzdHIoJnNvYiwgZm10X25hbWUoZ2V0ZW52KCJHSVRfQ09NTUlUVEVSX05BTUUiKSwKLQkJCQkJICAgICBnZXRlbnYoIkdJVF9DT01NSVRURVJfRU1BSUwiKSkpOwotCQlzdHJidWZfYWRkY2goJnNvYiwgJ1xuJyk7Ci0JCWZvciAoaSA9IHNiLmxlbiAtIDE7IGkgPiAwICYmIHNiLmJ1ZltpIC0gMV0gIT0gJ1xuJzsgaS0tKQotCQkJOyAvKiBkbyBub3RoaW5nICovCi0JCWlmIChwcmVmaXhjbXAoc2IuYnVmICsgaSwgc29iLmJ1ZikpIHsKLQkJCWlmICghaSB8fCAhZW5kc19yZmMyODIyX2Zvb3Rlcigmc2IpKQotCQkJCXN0cmJ1Zl9hZGRjaCgmc2IsICdcbicpOwotCQkJc3RyYnVmX2FkZGJ1Zigmc2IsICZzb2IpOworCQlmb3IgKGkgPSAwOyBpIDwgc2IubGVuOyBpKyspIHsKKwkJCW5sID0gbWVtY2hyKHNiLmJ1ZiArIGksICdcbicsIHNiLmxlbiAtIGkpOworCQkJaWYgKG5sKQorCQkJCWVvbCA9IG5sIC0gc2IuYnVmOworCQkJZWxzZQorCQkJCWVvbCA9IHNiLmxlbjsKKwkJCWlmICghcHJlZml4Y21wKHNiLmJ1ZiArIHByZXZpb3VzLCAiXG5Db25mbGljdHM6XG4iKSkgeworCQkJCWlnbm9yZV9mb290ZXIgPSBzYi5sZW4gLSBwcmV2aW91czsKKwkJCQlicmVhazsKKwkJCX0KKwkJCXdoaWxlIChpIDwgZW9sKQorCQkJCWkrKzsKKwkJCXByZXZpb3VzID0gZW9sOwogCQl9Ci0JCXN0cmJ1Zl9yZWxlYXNlKCZzb2IpOworCisJCWFwcGVuZF9zaWdub2ZmKCZzYiwgaWdub3JlX2Zvb3RlciwgMCk7CiAJfQogCiAJaWYgKGZ3cml0ZShzYi5idWYsIDEsIHNiLmxlbiwgcy0+ZnApIDwgc2IubGVuKQpAQCAtNzIyLDcgKzcxMyw3IEBACiAJc3RyYnVmX3JlbGVhc2UoJnNiKTsKIAogCS8qIFRoaXMgY2hlY2tzIGlmIGNvbW1pdHRlciBpZGVudCBpcyBleHBsaWNpdGx5IGdpdmVuICovCi0Jc3RyYnVmX2FkZHN0cigmY29tbWl0dGVyX2lkZW50LCBnaXRfY29tbWl0dGVyX2luZm8oMCkpOworCXN0cmJ1Zl9hZGRzdHIoJmNvbW1pdHRlcl9pZGVudCwgZ2l0X2NvbW1pdHRlcl9pbmZvKElERU5UX1NUUklDVCkpOwogCWlmICh1c2VfZWRpdG9yICYmIGluY2x1ZGVfc3RhdHVzKSB7CiAJCWNoYXIgKmFpX3RtcCwgKmNpX3RtcDsKIAkJaWYgKHdoZW5jZSAhPSBGUk9NX0NPTU1JVCkKQEAgLTc0NiwxNSArNzM3LDE1IEBACiAJCWlmIChjbGVhbnVwX21vZGUgPT0gQ0xFQU5VUF9BTEwpCiAJCQlzdGF0dXNfcHJpbnRmKHMsIEdJVF9DT0xPUl9OT1JNQUwsCiAJCQkJXygiUGxlYXNlIGVudGVyIHRoZSBjb21taXQgbWVzc2FnZSBmb3IgeW91ciBjaGFuZ2VzLiIKLQkJCQkiIExpbmVzIHN0YXJ0aW5nXG53aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSIKLQkJCQkiIG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iKSk7CisJCQkJICAiIExpbmVzIHN0YXJ0aW5nXG53aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkiCisJCQkJICAiIG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iKSwgY29tbWVudF9saW5lX2NoYXIpOwogCQllbHNlIC8qIENMRUFOVVBfU1BBQ0UsIHRoYXQgaXMuICovCiAJCQlzdGF0dXNfcHJpbnRmKHMsIEdJVF9DT0xPUl9OT1JNQUwsCiAJCQkJXygiUGxlYXNlIGVudGVyIHRoZSBjb21taXQgbWVzc2FnZSBmb3IgeW91ciBjaGFuZ2VzLiIKLQkJCQkiIExpbmVzIHN0YXJ0aW5nXG4iCi0JCQkJIndpdGggJyMnIHdpbGwgYmUga2VwdDsgeW91IG1heSByZW1vdmUgdGhlbSIKLQkJCQkiIHlvdXJzZWxmIGlmIHlvdSB3YW50IHRvLlxuIgotCQkJCSJBbiBlbXB0eSBtZXNzYWdlIGFib3J0cyB0aGUgY29tbWl0LlxuIikpOworCQkJCSAgIiBMaW5lcyBzdGFydGluZ1xuIgorCQkJCSAgIndpdGggJyVjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0iCisJCQkJICAiIHlvdXJzZWxmIGlmIHlvdSB3YW50IHRvLlxuIgorCQkJCSAgIkFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iKSwgY29tbWVudF9saW5lX2NoYXIpOwogCQlpZiAob25seV9pbmNsdWRlX2Fzc3VtZWQpCiAJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIEdJVF9DT0xPUl9OT1JNQUwsCiAJCQkJCSIlcyIsIG9ubHlfaW5jbHVkZV9hc3N1bWVkKTsKQEAgLTc2OCw3ICs3NTksNyBAQAogCQkJCWlkZW50X3Nob3duKysgPyAiIiA6ICJcbiIsCiAJCQkJYXV0aG9yX2lkZW50LT5idWYpOwogCi0JCWlmICghdXNlcl9pZGVudF9zdWZmaWNpZW50bHlfZ2l2ZW4oKSkKKwkJaWYgKCFjb21taXR0ZXJfaWRlbnRfc3VmZmljaWVudGx5X2dpdmVuKCkpCiAJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIEdJVF9DT0xPUl9OT1JNQUwsCiAJCQkJXygiJXMiCiAJCQkJIkNvbW1pdHRlcjogJXMiKSwKQEAgLTk1OSwyNCArOTUwLDE0IEBACiAKIHN0YXRpYyBjb25zdCBjaGFyICpyZWFkX2NvbW1pdF9tZXNzYWdlKGNvbnN0IGNoYXIgKm5hbWUpCiB7Ci0JY29uc3QgY2hhciAqb3V0X2VuYywgKm91dDsKKwljb25zdCBjaGFyICpvdXRfZW5jOwogCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKIAogCWNvbW1pdCA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlX2J5X25hbWUobmFtZSk7CiAJaWYgKCFjb21taXQpCiAJCWRpZShfKCJjb3VsZCBub3QgbG9va3VwIGNvbW1pdCAlcyIpLCBuYW1lKTsKIAlvdXRfZW5jID0gZ2V0X2NvbW1pdF9vdXRwdXRfZW5jb2RpbmcoKTsKLQlvdXQgPSBsb2dtc2dfcmVlbmNvZGUoY29tbWl0LCBvdXRfZW5jKTsKLQotCS8qCi0JICogSWYgd2UgZmFpbGVkIHRvIHJlZW5jb2RlIHRoZSBidWZmZXIsIGp1c3QgY29weSBpdAotCSAqIGJ5dGUgZm9yIGJ5dGUgc28gdGhlIHVzZXIgY2FuIHRyeSB0byBmaXggaXQgdXAuCi0JICogVGhpcyBhbHNvIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgaW5wdXQgYW5kIG91dHB1dAotCSAqIGVuY29kaW5ncyBhcmUgaWRlbnRpY2FsLgotCSAqLwotCWlmIChvdXQgPT0gTlVMTCkKLQkJb3V0ID0geHN0cmR1cChjb21taXQtPmJ1ZmZlcik7Ci0JcmV0dXJuIG91dDsKKwlyZXR1cm4gbG9nbXNnX3JlZW5jb2RlKGNvbW1pdCwgTlVMTCwgb3V0X2VuYyk7CiB9CiAKIHN0YXRpYyBpbnQgcGFyc2VfYW5kX3ZhbGlkYXRlX29wdGlvbnMoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSwKQEAgLTk5Niw3ICs5NzcsNyBAQAogCWlmIChmb3JjZV9hdXRob3IgJiYgcmVuZXdfYXV0aG9yc2hpcCkKIAkJZGllKF8oIlVzaW5nIGJvdGggLS1yZXNldC1hdXRob3IgYW5kIC0tYXV0aG9yIGRvZXMgbm90IG1ha2Ugc2Vuc2UiKSk7CiAKLQlpZiAobG9nZmlsZSB8fCBtZXNzYWdlLmxlbiB8fCB1c2VfbWVzc2FnZSB8fCBmaXh1cF9tZXNzYWdlKQorCWlmIChsb2dmaWxlIHx8IGhhdmVfb3B0aW9uX20gfHwgdXNlX21lc3NhZ2UgfHwgZml4dXBfbWVzc2FnZSkKIAkJdXNlX2VkaXRvciA9IDA7CiAJaWYgKDAgPD0gZWRpdF9mbGFnKQogCQl1c2VfZWRpdG9yID0gZWRpdF9mbGFnOwpAQCAtMTA3Myw5ICsxMDU0LDEzIEBACiAJaWYgKGFsbCAmJiBhcmdjID4gMCkKIAkJZGllKF8oIlBhdGhzIHdpdGggLWEgZG9lcyBub3QgbWFrZSBzZW5zZS4iKSk7CiAKLQlpZiAocy0+bnVsbF90ZXJtaW5hdGlvbiAmJiBzdGF0dXNfZm9ybWF0ID09IFNUQVRVU19GT1JNQVRfTE9ORykKLQkJc3RhdHVzX2Zvcm1hdCA9IFNUQVRVU19GT1JNQVRfUE9SQ0VMQUlOOwotCWlmIChzdGF0dXNfZm9ybWF0ICE9IFNUQVRVU19GT1JNQVRfTE9ORykKKwlpZiAocy0+bnVsbF90ZXJtaW5hdGlvbikgeworCQlpZiAoc3RhdHVzX2Zvcm1hdCA9PSBTVEFUVVNfRk9STUFUX05PTkUpCisJCQlzdGF0dXNfZm9ybWF0ID0gU1RBVFVTX0ZPUk1BVF9QT1JDRUxBSU47CisJCWVsc2UgaWYgKHN0YXR1c19mb3JtYXQgPT0gU1RBVFVTX0ZPUk1BVF9MT05HKQorCQkJZGllKF8oIi0tbG9uZyBhbmQgLXogYXJlIGluY29tcGF0aWJsZSIpKTsKKwl9CisJaWYgKHN0YXR1c19mb3JtYXQgIT0gU1RBVFVTX0ZPUk1BVF9OT05FKQogCQlkcnlfcnVuID0gMTsKIAogCXJldHVybiBhcmdjOwpAQCAtMTE2NiwyNiArMTE1MSwyOSBAQAogCWludCBmZDsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCXN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5fc3RhdHVzX29wdGlvbnNbXSA9IHsKLQkJT1BUX19WRVJCT1NFKCZ2ZXJib3NlLCAiYmUgdmVyYm9zZSIpLAorCQlPUFRfX1ZFUkJPU0UoJnZlcmJvc2UsIE5fKCJiZSB2ZXJib3NlIikpLAogCQlPUFRfU0VUX0lOVCgncycsICJzaG9ydCIsICZzdGF0dXNfZm9ybWF0LAotCQkJICAgICJzaG93IHN0YXR1cyBjb25jaXNlbHkiLCBTVEFUVVNfRk9STUFUX1NIT1JUKSwKKwkJCSAgICBOXygic2hvdyBzdGF0dXMgY29uY2lzZWx5IiksIFNUQVRVU19GT1JNQVRfU0hPUlQpLAogCQlPUFRfQk9PTEVBTignYicsICJicmFuY2giLCAmcy5zaG93X2JyYW5jaCwKLQkJCSAgICAic2hvdyBicmFuY2ggaW5mb3JtYXRpb24iKSwKKwkJCSAgICBOXygic2hvdyBicmFuY2ggaW5mb3JtYXRpb24iKSksCiAJCU9QVF9TRVRfSU5UKDAsICJwb3JjZWxhaW4iLCAmc3RhdHVzX2Zvcm1hdCwKLQkJCSAgICAibWFjaGluZS1yZWFkYWJsZSBvdXRwdXQiLAorCQkJICAgIE5fKCJtYWNoaW5lLXJlYWRhYmxlIG91dHB1dCIpLAogCQkJICAgIFNUQVRVU19GT1JNQVRfUE9SQ0VMQUlOKSwKKwkJT1BUX1NFVF9JTlQoMCwgImxvbmciLCAmc3RhdHVzX2Zvcm1hdCwKKwkJCSAgICBOXygic2hvdyBzdGF0dXMgaW4gbG9uZyBmb3JtYXQgKGRlZmF1bHQpIiksCisJCQkgICAgU1RBVFVTX0ZPUk1BVF9MT05HKSwKIAkJT1BUX0JPT0xFQU4oJ3onLCAibnVsbCIsICZzLm51bGxfdGVybWluYXRpb24sCi0JCQkgICAgInRlcm1pbmF0ZSBlbnRyaWVzIHdpdGggTlVMIiksCisJCQkgICAgTl8oInRlcm1pbmF0ZSBlbnRyaWVzIHdpdGggTlVMIikpLAogCQl7IE9QVElPTl9TVFJJTkcsICd1JywgInVudHJhY2tlZC1maWxlcyIsICZ1bnRyYWNrZWRfZmlsZXNfYXJnLAotCQkgICJtb2RlIiwKLQkJICAic2hvdyB1bnRyYWNrZWQgZmlsZXMsIG9wdGlvbmFsIG1vZGVzOiBhbGwsIG5vcm1hbCwgbm8uIChEZWZhdWx0OiBhbGwpIiwKKwkJICBOXygibW9kZSIpLAorCQkgIE5fKCJzaG93IHVudHJhY2tlZCBmaWxlcywgb3B0aW9uYWwgbW9kZXM6IGFsbCwgbm9ybWFsLCBuby4gKERlZmF1bHQ6IGFsbCkiKSwKIAkJICBQQVJTRV9PUFRfT1BUQVJHLCBOVUxMLCAoaW50cHRyX3QpImFsbCIgfSwKIAkJT1BUX0JPT0xFQU4oMCwgImlnbm9yZWQiLCAmc2hvd19pZ25vcmVkX2luX3N0YXR1cywKLQkJCSAgICAic2hvdyBpZ25vcmVkIGZpbGVzIiksCi0JCXsgT1BUSU9OX1NUUklORywgMCwgImlnbm9yZS1zdWJtb2R1bGVzIiwgJmlnbm9yZV9zdWJtb2R1bGVfYXJnLCAid2hlbiIsCi0JCSAgImlnbm9yZSBjaGFuZ2VzIHRvIHN1Ym1vZHVsZXMsIG9wdGlvbmFsIHdoZW46IGFsbCwgZGlydHksIHVudHJhY2tlZC4gKERlZmF1bHQ6IGFsbCkiLAorCQkJICAgIE5fKCJzaG93IGlnbm9yZWQgZmlsZXMiKSksCisJCXsgT1BUSU9OX1NUUklORywgMCwgImlnbm9yZS1zdWJtb2R1bGVzIiwgJmlnbm9yZV9zdWJtb2R1bGVfYXJnLCBOXygid2hlbiIpLAorCQkgIE5fKCJpZ25vcmUgY2hhbmdlcyB0byBzdWJtb2R1bGVzLCBvcHRpb25hbCB3aGVuOiBhbGwsIGRpcnR5LCB1bnRyYWNrZWQuIChEZWZhdWx0OiBhbGwpIiksCiAJCSAgUEFSU0VfT1BUX09QVEFSRywgTlVMTCwgKGludHB0cl90KSJhbGwiIH0sCi0JCU9QVF9DT0xVTU4oMCwgImNvbHVtbiIsICZzLmNvbG9wdHMsICJsaXN0IHVudHJhY2tlZCBmaWxlcyBpbiBjb2x1bW5zIiksCisJCU9QVF9DT0xVTU4oMCwgImNvbHVtbiIsICZzLmNvbG9wdHMsIE5fKCJsaXN0IHVudHJhY2tlZCBmaWxlcyBpbiBjb2x1bW5zIikpLAogCQlPUFRfRU5EKCksCiAJfTsKIApAQCAtMTIwMSw4ICsxMTg5LDEyIEBACiAJCQkgICAgIGJ1aWx0aW5fc3RhdHVzX3VzYWdlLCAwKTsKIAlmaW5hbGl6ZV9jb2xvcHRzKCZzLmNvbG9wdHMsIC0xKTsKIAotCWlmIChzLm51bGxfdGVybWluYXRpb24gJiYgc3RhdHVzX2Zvcm1hdCA9PSBTVEFUVVNfRk9STUFUX0xPTkcpCi0JCXN0YXR1c19mb3JtYXQgPSBTVEFUVVNfRk9STUFUX1BPUkNFTEFJTjsKKwlpZiAocy5udWxsX3Rlcm1pbmF0aW9uKSB7CisJCWlmIChzdGF0dXNfZm9ybWF0ID09IFNUQVRVU19GT1JNQVRfTk9ORSkKKwkJCXN0YXR1c19mb3JtYXQgPSBTVEFUVVNfRk9STUFUX1BPUkNFTEFJTjsKKwkJZWxzZSBpZiAoc3RhdHVzX2Zvcm1hdCA9PSBTVEFUVVNfRk9STUFUX0xPTkcpCisJCQlkaWUoXygiLS1sb25nIGFuZCAteiBhcmUgaW5jb21wYXRpYmxlIikpOworCX0KIAogCWhhbmRsZV91bnRyYWNrZWRfZmlsZXNfYXJnKCZzKTsKIAlpZiAoc2hvd19pZ25vcmVkX2luX3N0YXR1cykKQEAgLTEyMzEsNiArMTIyMyw3IEBACiAJY2FzZSBTVEFUVVNfRk9STUFUX1BPUkNFTEFJTjoKIAkJd3RfcG9yY2VsYWluX3ByaW50KCZzKTsKIAkJYnJlYWs7CisJY2FzZSBTVEFUVVNfRk9STUFUX05PTkU6CiAJY2FzZSBTVEFUVVNfRk9STUFUX0xPTkc6CiAJCXMudmVyYm9zZSA9IHZlcmJvc2U7CiAJCXMuaWdub3JlX3N1Ym1vZHVsZV9hcmcgPSBpZ25vcmVfc3VibW9kdWxlX2FyZzsKQEAgLTEyNjYsNyArMTI1OSw3IEBACiAJCXN0cmJ1Zl9hZGRzdHIoJmZvcm1hdCwgIlxuIEF1dGhvcjogIik7CiAJCXN0cmJ1Zl9hZGRidWZfcGVyY2VudHF1b3RlKCZmb3JtYXQsICZhdXRob3JfaWRlbnQpOwogCX0KLQlpZiAoIXVzZXJfaWRlbnRfc3VmZmljaWVudGx5X2dpdmVuKCkpIHsKKwlpZiAoIWNvbW1pdHRlcl9pZGVudF9zdWZmaWNpZW50bHlfZ2l2ZW4oKSkgewogCQlzdHJidWZfYWRkc3RyKCZmb3JtYXQsICJcbiBDb21taXR0ZXI6ICIpOwogCQlzdHJidWZfYWRkYnVmX3BlcmNlbnRxdW90ZSgmZm9ybWF0LCAmY29tbWl0dGVyX2lkZW50KTsKIAkJaWYgKGFkdmljZV9pbXBsaWNpdF9pZGVudGl0eSkgewpAQCAtMTMyMSw2ICsxMzE0LDggQEAKIAkJaW5jbHVkZV9zdGF0dXMgPSBnaXRfY29uZmlnX2Jvb2woaywgdik7CiAJCXJldHVybiAwOwogCX0KKwlpZiAoIXN0cmNtcChrLCAiY29tbWl0LmNsZWFudXAiKSkKKwkJcmV0dXJuIGdpdF9jb25maWdfc3RyaW5nKCZjbGVhbnVwX2FyZywgaywgdik7CiAKIAlzdGF0dXMgPSBnaXRfZ3BnX2NvbmZpZyhrLCB2LCBOVUxMKTsKIAlpZiAoc3RhdHVzKQpAQCAtMTMyOCw4ICsxMzIzLDYgQEAKIAlyZXR1cm4gZ2l0X3N0YXR1c19jb25maWcoaywgdiwgcyk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyIHBvc3RfcmV3cml0ZV9ob29rW10gPSAiaG9va3MvcG9zdC1yZXdyaXRlIjsKLQogc3RhdGljIGludCBydW5fcmV3cml0ZV9ob29rKGNvbnN0IHVuc2lnbmVkIGNoYXIgKm9sZHNoYTEsCiAJCQkgICAgY29uc3QgdW5zaWduZWQgY2hhciAqbmV3c2hhMSkKIHsKQEAgLTEzNDAsMTAgKzEzMzMsMTAgQEAKIAlpbnQgY29kZTsKIAlzaXplX3QgbjsKIAotCWlmIChhY2Nlc3MoZ2l0X3BhdGgocG9zdF9yZXdyaXRlX2hvb2spLCBYX09LKSA8IDApCisJYXJndlswXSA9IGZpbmRfaG9vaygicG9zdC1yZXdyaXRlIik7CisJaWYgKCFhcmd2WzBdKQogCQlyZXR1cm4gMDsKIAotCWFyZ3ZbMF0gPSBnaXRfcGF0aChwb3N0X3Jld3JpdGVfaG9vayk7CiAJYXJndlsxXSA9ICJhbWVuZCI7CiAJYXJndlsyXSA9IE5VTEw7CiAKQEAgLTEzNjYsNTMgKzEzNTksNTYgQEAKIHsKIAlzdGF0aWMgc3RydWN0IHd0X3N0YXR1cyBzOwogCXN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5fY29tbWl0X29wdGlvbnNbXSA9IHsKLQkJT1BUX19RVUlFVCgmcXVpZXQsICJzdXBwcmVzcyBzdW1tYXJ5IGFmdGVyIHN1Y2Nlc3NmdWwgY29tbWl0IiksCi0JCU9QVF9fVkVSQk9TRSgmdmVyYm9zZSwgInNob3cgZGlmZiBpbiBjb21taXQgbWVzc2FnZSB0ZW1wbGF0ZSIpLAorCQlPUFRfX1FVSUVUKCZxdWlldCwgTl8oInN1cHByZXNzIHN1bW1hcnkgYWZ0ZXIgc3VjY2Vzc2Z1bCBjb21taXQiKSksCisJCU9QVF9fVkVSQk9TRSgmdmVyYm9zZSwgTl8oInNob3cgZGlmZiBpbiBjb21taXQgbWVzc2FnZSB0ZW1wbGF0ZSIpKSwKIAotCQlPUFRfR1JPVVAoIkNvbW1pdCBtZXNzYWdlIG9wdGlvbnMiKSwKLQkJT1BUX0ZJTEVOQU1FKCdGJywgImZpbGUiLCAmbG9nZmlsZSwgInJlYWQgbWVzc2FnZSBmcm9tIGZpbGUiKSwKLQkJT1BUX1NUUklORygwLCAiYXV0aG9yIiwgJmZvcmNlX2F1dGhvciwgImF1dGhvciIsICJvdmVycmlkZSBhdXRob3IgZm9yIGNvbW1pdCIpLAotCQlPUFRfU1RSSU5HKDAsICJkYXRlIiwgJmZvcmNlX2RhdGUsICJkYXRlIiwgIm92ZXJyaWRlIGRhdGUgZm9yIGNvbW1pdCIpLAotCQlPUFRfQ0FMTEJBQ0soJ20nLCAibWVzc2FnZSIsICZtZXNzYWdlLCAibWVzc2FnZSIsICJjb21taXQgbWVzc2FnZSIsIG9wdF9wYXJzZV9tKSwKLQkJT1BUX1NUUklORygnYycsICJyZWVkaXQtbWVzc2FnZSIsICZlZGl0X21lc3NhZ2UsICJjb21taXQiLCAicmV1c2UgYW5kIGVkaXQgbWVzc2FnZSBmcm9tIHNwZWNpZmllZCBjb21taXQiKSwKLQkJT1BUX1NUUklORygnQycsICJyZXVzZS1tZXNzYWdlIiwgJnVzZV9tZXNzYWdlLCAiY29tbWl0IiwgInJldXNlIG1lc3NhZ2UgZnJvbSBzcGVjaWZpZWQgY29tbWl0IiksCi0JCU9QVF9TVFJJTkcoMCwgImZpeHVwIiwgJmZpeHVwX21lc3NhZ2UsICJjb21taXQiLCAidXNlIGF1dG9zcXVhc2ggZm9ybWF0dGVkIG1lc3NhZ2UgdG8gZml4dXAgc3BlY2lmaWVkIGNvbW1pdCIpLAotCQlPUFRfU1RSSU5HKDAsICJzcXVhc2giLCAmc3F1YXNoX21lc3NhZ2UsICJjb21taXQiLCAidXNlIGF1dG9zcXVhc2ggZm9ybWF0dGVkIG1lc3NhZ2UgdG8gc3F1YXNoIHNwZWNpZmllZCBjb21taXQiKSwKLQkJT1BUX0JPT0xFQU4oMCwgInJlc2V0LWF1dGhvciIsICZyZW5ld19hdXRob3JzaGlwLCAidGhlIGNvbW1pdCBpcyBhdXRob3JlZCBieSBtZSBub3cgKHVzZWQgd2l0aCAtQy8tYy8tLWFtZW5kKSIpLAotCQlPUFRfQk9PTEVBTigncycsICJzaWdub2ZmIiwgJnNpZ25vZmYsICJhZGQgU2lnbmVkLW9mZi1ieToiKSwKLQkJT1BUX0ZJTEVOQU1FKCd0JywgInRlbXBsYXRlIiwgJnRlbXBsYXRlX2ZpbGUsICJ1c2Ugc3BlY2lmaWVkIHRlbXBsYXRlIGZpbGUiKSwKLQkJT1BUX0JPT0woJ2UnLCAiZWRpdCIsICZlZGl0X2ZsYWcsICJmb3JjZSBlZGl0IG9mIGNvbW1pdCIpLAotCQlPUFRfU1RSSU5HKDAsICJjbGVhbnVwIiwgJmNsZWFudXBfYXJnLCAiZGVmYXVsdCIsICJob3cgdG8gc3RyaXAgc3BhY2VzIGFuZCAjY29tbWVudHMgZnJvbSBtZXNzYWdlIiksCi0JCU9QVF9CT09MRUFOKDAsICJzdGF0dXMiLCAmaW5jbHVkZV9zdGF0dXMsICJpbmNsdWRlIHN0YXR1cyBpbiBjb21taXQgbWVzc2FnZSB0ZW1wbGF0ZSIpLAotCQl7IE9QVElPTl9TVFJJTkcsICdTJywgImdwZy1zaWduIiwgJnNpZ25fY29tbWl0LCAia2V5IGlkIiwKLQkJICAiR1BHIHNpZ24gY29tbWl0IiwgUEFSU0VfT1BUX09QVEFSRywgTlVMTCwgKGludHB0cl90KSAiIiB9LAorCQlPUFRfR1JPVVAoTl8oIkNvbW1pdCBtZXNzYWdlIG9wdGlvbnMiKSksCisJCU9QVF9GSUxFTkFNRSgnRicsICJmaWxlIiwgJmxvZ2ZpbGUsIE5fKCJyZWFkIG1lc3NhZ2UgZnJvbSBmaWxlIikpLAorCQlPUFRfU1RSSU5HKDAsICJhdXRob3IiLCAmZm9yY2VfYXV0aG9yLCBOXygiYXV0aG9yIiksIE5fKCJvdmVycmlkZSBhdXRob3IgZm9yIGNvbW1pdCIpKSwKKwkJT1BUX1NUUklORygwLCAiZGF0ZSIsICZmb3JjZV9kYXRlLCBOXygiZGF0ZSIpLCBOXygib3ZlcnJpZGUgZGF0ZSBmb3IgY29tbWl0IikpLAorCQlPUFRfQ0FMTEJBQ0soJ20nLCAibWVzc2FnZSIsICZtZXNzYWdlLCBOXygibWVzc2FnZSIpLCBOXygiY29tbWl0IG1lc3NhZ2UiKSwgb3B0X3BhcnNlX20pLAorCQlPUFRfU1RSSU5HKCdjJywgInJlZWRpdC1tZXNzYWdlIiwgJmVkaXRfbWVzc2FnZSwgTl8oImNvbW1pdCIpLCBOXygicmV1c2UgYW5kIGVkaXQgbWVzc2FnZSBmcm9tIHNwZWNpZmllZCBjb21taXQiKSksCisJCU9QVF9TVFJJTkcoJ0MnLCAicmV1c2UtbWVzc2FnZSIsICZ1c2VfbWVzc2FnZSwgTl8oImNvbW1pdCIpLCBOXygicmV1c2UgbWVzc2FnZSBmcm9tIHNwZWNpZmllZCBjb21taXQiKSksCisJCU9QVF9TVFJJTkcoMCwgImZpeHVwIiwgJmZpeHVwX21lc3NhZ2UsIE5fKCJjb21taXQiKSwgTl8oInVzZSBhdXRvc3F1YXNoIGZvcm1hdHRlZCBtZXNzYWdlIHRvIGZpeHVwIHNwZWNpZmllZCBjb21taXQiKSksCisJCU9QVF9TVFJJTkcoMCwgInNxdWFzaCIsICZzcXVhc2hfbWVzc2FnZSwgTl8oImNvbW1pdCIpLCBOXygidXNlIGF1dG9zcXVhc2ggZm9ybWF0dGVkIG1lc3NhZ2UgdG8gc3F1YXNoIHNwZWNpZmllZCBjb21taXQiKSksCisJCU9QVF9CT09MRUFOKDAsICJyZXNldC1hdXRob3IiLCAmcmVuZXdfYXV0aG9yc2hpcCwgTl8oInRoZSBjb21taXQgaXMgYXV0aG9yZWQgYnkgbWUgbm93ICh1c2VkIHdpdGggLUMvLWMvLS1hbWVuZCkiKSksCisJCU9QVF9CT09MRUFOKCdzJywgInNpZ25vZmYiLCAmc2lnbm9mZiwgTl8oImFkZCBTaWduZWQtb2ZmLWJ5OiIpKSwKKwkJT1BUX0ZJTEVOQU1FKCd0JywgInRlbXBsYXRlIiwgJnRlbXBsYXRlX2ZpbGUsIE5fKCJ1c2Ugc3BlY2lmaWVkIHRlbXBsYXRlIGZpbGUiKSksCisJCU9QVF9CT09MKCdlJywgImVkaXQiLCAmZWRpdF9mbGFnLCBOXygiZm9yY2UgZWRpdCBvZiBjb21taXQiKSksCisJCU9QVF9TVFJJTkcoMCwgImNsZWFudXAiLCAmY2xlYW51cF9hcmcsIE5fKCJkZWZhdWx0IiksIE5fKCJob3cgdG8gc3RyaXAgc3BhY2VzIGFuZCAjY29tbWVudHMgZnJvbSBtZXNzYWdlIikpLAorCQlPUFRfQk9PTEVBTigwLCAic3RhdHVzIiwgJmluY2x1ZGVfc3RhdHVzLCBOXygiaW5jbHVkZSBzdGF0dXMgaW4gY29tbWl0IG1lc3NhZ2UgdGVtcGxhdGUiKSksCisJCXsgT1BUSU9OX1NUUklORywgJ1MnLCAiZ3BnLXNpZ24iLCAmc2lnbl9jb21taXQsIE5fKCJrZXkgaWQiKSwKKwkJICBOXygiR1BHIHNpZ24gY29tbWl0IiksIFBBUlNFX09QVF9PUFRBUkcsIE5VTEwsIChpbnRwdHJfdCkgIiIgfSwKIAkJLyogZW5kIGNvbW1pdCBtZXNzYWdlIG9wdGlvbnMgKi8KIAotCQlPUFRfR1JPVVAoIkNvbW1pdCBjb250ZW50cyBvcHRpb25zIiksCi0JCU9QVF9CT09MRUFOKCdhJywgImFsbCIsICZhbGwsICJjb21taXQgYWxsIGNoYW5nZWQgZmlsZXMiKSwKLQkJT1BUX0JPT0xFQU4oJ2knLCAiaW5jbHVkZSIsICZhbHNvLCAiYWRkIHNwZWNpZmllZCBmaWxlcyB0byBpbmRleCBmb3IgY29tbWl0IiksCi0JCU9QVF9CT09MRUFOKDAsICJpbnRlcmFjdGl2ZSIsICZpbnRlcmFjdGl2ZSwgImludGVyYWN0aXZlbHkgYWRkIGZpbGVzIiksCi0JCU9QVF9CT09MRUFOKCdwJywgInBhdGNoIiwgJnBhdGNoX2ludGVyYWN0aXZlLCAiaW50ZXJhY3RpdmVseSBhZGQgY2hhbmdlcyIpLAotCQlPUFRfQk9PTEVBTignbycsICJvbmx5IiwgJm9ubHksICJjb21taXQgb25seSBzcGVjaWZpZWQgZmlsZXMiKSwKLQkJT1BUX0JPT0xFQU4oJ24nLCAibm8tdmVyaWZ5IiwgJm5vX3ZlcmlmeSwgImJ5cGFzcyBwcmUtY29tbWl0IGhvb2siKSwKLQkJT1BUX0JPT0xFQU4oMCwgImRyeS1ydW4iLCAmZHJ5X3J1biwgInNob3cgd2hhdCB3b3VsZCBiZSBjb21taXR0ZWQiKSwKLQkJT1BUX1NFVF9JTlQoMCwgInNob3J0IiwgJnN0YXR1c19mb3JtYXQsICJzaG93IHN0YXR1cyBjb25jaXNlbHkiLAorCQlPUFRfR1JPVVAoTl8oIkNvbW1pdCBjb250ZW50cyBvcHRpb25zIikpLAorCQlPUFRfQk9PTEVBTignYScsICJhbGwiLCAmYWxsLCBOXygiY29tbWl0IGFsbCBjaGFuZ2VkIGZpbGVzIikpLAorCQlPUFRfQk9PTEVBTignaScsICJpbmNsdWRlIiwgJmFsc28sIE5fKCJhZGQgc3BlY2lmaWVkIGZpbGVzIHRvIGluZGV4IGZvciBjb21taXQiKSksCisJCU9QVF9CT09MRUFOKDAsICJpbnRlcmFjdGl2ZSIsICZpbnRlcmFjdGl2ZSwgTl8oImludGVyYWN0aXZlbHkgYWRkIGZpbGVzIikpLAorCQlPUFRfQk9PTEVBTigncCcsICJwYXRjaCIsICZwYXRjaF9pbnRlcmFjdGl2ZSwgTl8oImludGVyYWN0aXZlbHkgYWRkIGNoYW5nZXMiKSksCisJCU9QVF9CT09MRUFOKCdvJywgIm9ubHkiLCAmb25seSwgTl8oImNvbW1pdCBvbmx5IHNwZWNpZmllZCBmaWxlcyIpKSwKKwkJT1BUX0JPT0xFQU4oJ24nLCAibm8tdmVyaWZ5IiwgJm5vX3ZlcmlmeSwgTl8oImJ5cGFzcyBwcmUtY29tbWl0IGhvb2siKSksCisJCU9QVF9CT09MRUFOKDAsICJkcnktcnVuIiwgJmRyeV9ydW4sIE5fKCJzaG93IHdoYXQgd291bGQgYmUgY29tbWl0dGVkIikpLAorCQlPUFRfU0VUX0lOVCgwLCAic2hvcnQiLCAmc3RhdHVzX2Zvcm1hdCwgTl8oInNob3cgc3RhdHVzIGNvbmNpc2VseSIpLAogCQkJICAgIFNUQVRVU19GT1JNQVRfU0hPUlQpLAotCQlPUFRfQk9PTEVBTigwLCAiYnJhbmNoIiwgJnMuc2hvd19icmFuY2gsICJzaG93IGJyYW5jaCBpbmZvcm1hdGlvbiIpLAorCQlPUFRfQk9PTEVBTigwLCAiYnJhbmNoIiwgJnMuc2hvd19icmFuY2gsIE5fKCJzaG93IGJyYW5jaCBpbmZvcm1hdGlvbiIpKSwKIAkJT1BUX1NFVF9JTlQoMCwgInBvcmNlbGFpbiIsICZzdGF0dXNfZm9ybWF0LAotCQkJICAgICJtYWNoaW5lLXJlYWRhYmxlIG91dHB1dCIsIFNUQVRVU19GT1JNQVRfUE9SQ0VMQUlOKSwKKwkJCSAgICBOXygibWFjaGluZS1yZWFkYWJsZSBvdXRwdXQiKSwgU1RBVFVTX0ZPUk1BVF9QT1JDRUxBSU4pLAorCQlPUFRfU0VUX0lOVCgwLCAibG9uZyIsICZzdGF0dXNfZm9ybWF0LAorCQkJICAgIE5fKCJzaG93IHN0YXR1cyBpbiBsb25nIGZvcm1hdCAoZGVmYXVsdCkiKSwKKwkJCSAgICBTVEFUVVNfRk9STUFUX0xPTkcpLAogCQlPUFRfQk9PTEVBTigneicsICJudWxsIiwgJnMubnVsbF90ZXJtaW5hdGlvbiwKLQkJCSAgICAidGVybWluYXRlIGVudHJpZXMgd2l0aCBOVUwiKSwKLQkJT1BUX0JPT0xFQU4oMCwgImFtZW5kIiwgJmFtZW5kLCAiYW1lbmQgcHJldmlvdXMgY29tbWl0IiksCi0JCU9QVF9CT09MRUFOKDAsICJuby1wb3N0LXJld3JpdGUiLCAmbm9fcG9zdF9yZXdyaXRlLCAiYnlwYXNzIHBvc3QtcmV3cml0ZSBob29rIiksCi0JCXsgT1BUSU9OX1NUUklORywgJ3UnLCAidW50cmFja2VkLWZpbGVzIiwgJnVudHJhY2tlZF9maWxlc19hcmcsICJtb2RlIiwgInNob3cgdW50cmFja2VkIGZpbGVzLCBvcHRpb25hbCBtb2RlczogYWxsLCBub3JtYWwsIG5vLiAoRGVmYXVsdDogYWxsKSIsIFBBUlNFX09QVF9PUFRBUkcsIE5VTEwsIChpbnRwdHJfdCkiYWxsIiB9LAorCQkJICAgIE5fKCJ0ZXJtaW5hdGUgZW50cmllcyB3aXRoIE5VTCIpKSwKKwkJT1BUX0JPT0xFQU4oMCwgImFtZW5kIiwgJmFtZW5kLCBOXygiYW1lbmQgcHJldmlvdXMgY29tbWl0IikpLAorCQlPUFRfQk9PTEVBTigwLCAibm8tcG9zdC1yZXdyaXRlIiwgJm5vX3Bvc3RfcmV3cml0ZSwgTl8oImJ5cGFzcyBwb3N0LXJld3JpdGUgaG9vayIpKSwKKwkJeyBPUFRJT05fU1RSSU5HLCAndScsICJ1bnRyYWNrZWQtZmlsZXMiLCAmdW50cmFja2VkX2ZpbGVzX2FyZywgTl8oIm1vZGUiKSwgTl8oInNob3cgdW50cmFja2VkIGZpbGVzLCBvcHRpb25hbCBtb2RlczogYWxsLCBub3JtYWwsIG5vLiAoRGVmYXVsdDogYWxsKSIpLCBQQVJTRV9PUFRfT1BUQVJHLCBOVUxMLCAoaW50cHRyX3QpImFsbCIgfSwKIAkJLyogZW5kIGNvbW1pdCBjb250ZW50cyBvcHRpb25zICovCiAKIAkJeyBPUFRJT05fQk9PTEVBTiwgMCwgImFsbG93LWVtcHR5IiwgJmFsbG93X2VtcHR5LCBOVUxMLAotCQkgICJvayB0byByZWNvcmQgYW4gZW1wdHkgY2hhbmdlIiwKKwkJICBOXygib2sgdG8gcmVjb3JkIGFuIGVtcHR5IGNoYW5nZSIpLAogCQkgIFBBUlNFX09QVF9OT0FSRyB8IFBBUlNFX09QVF9ISURERU4gfSwKIAkJeyBPUFRJT05fQk9PTEVBTiwgMCwgImFsbG93LWVtcHR5LW1lc3NhZ2UiLCAmYWxsb3dfZW1wdHlfbWVzc2FnZSwgTlVMTCwKLQkJICAib2sgdG8gcmVjb3JkIGEgY2hhbmdlIHdpdGggYW4gZW1wdHkgbWVzc2FnZSIsCisJCSAgTl8oIm9rIHRvIHJlY29yZCBhIGNoYW5nZSB3aXRoIGFuIGVtcHR5IG1lc3NhZ2UiKSwKIAkJICBQQVJTRV9PUFRfTk9BUkcgfCBQQVJTRV9PUFRfSElEREVOIH0sCiAKIAkJT1BUX0VORCgpCkBAIC0xNDM0LDYgKzE0MzAsNyBAQAogCQl1c2FnZV93aXRoX29wdGlvbnMoYnVpbHRpbl9jb21taXRfdXNhZ2UsIGJ1aWx0aW5fY29tbWl0X29wdGlvbnMpOwogCiAJd3Rfc3RhdHVzX3ByZXBhcmUoJnMpOworCWdpdG1vZHVsZXNfY29uZmlnKCk7CiAJZ2l0X2NvbmZpZyhnaXRfY29tbWl0X2NvbmZpZywgJnMpOwogCWRldGVybWluZV93aGVuY2UoJnMpOwogCXMuY29sb3B0cyA9IDA7CmRpZmYgLS1naXQgYS9idWlsdGluL2NvbmZpZy5jIGIvYnVpbHRpbi9jb25maWcuYwppbmRleCAzM2M4ODIwLi4xOWZmY2FmIDEwMDY0NAotLS0gYS9idWlsdGluL2NvbmZpZy5jCisrKyBiL2J1aWx0aW4vY29uZmlnLmMKQEAgLTQsNyArNCw3IEBACiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgYnVpbHRpbl9jb25maWdfdXNhZ2VbXSA9IHsKLQkiZ2l0IGNvbmZpZyBbb3B0aW9uc10iLAorCU5fKCJnaXQgY29uZmlnIFtvcHRpb25zXSIpLAogCU5VTEwKIH07CiAKQEAgLTE1LDcgKzE1LDYgQEAKIHN0YXRpYyBpbnQgdXNlX2tleV9yZWdleHA7CiBzdGF0aWMgaW50IGRvX2FsbDsKIHN0YXRpYyBpbnQgZG9fbm90X21hdGNoOwotc3RhdGljIGludCBzZWVuOwogc3RhdGljIGNoYXIgZGVsaW0gPSAnPSc7CiBzdGF0aWMgY2hhciBrZXlfZGVsaW0gPSAnICc7CiBzdGF0aWMgY2hhciB0ZXJtID0gJ1xuJzsKQEAgLTQ5LDMzICs0OCwzMyBAQAogI2RlZmluZSBUWVBFX1BBVEggKDE8PDMpCiAKIHN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5fY29uZmlnX29wdGlvbnNbXSA9IHsKLQlPUFRfR1JPVVAoIkNvbmZpZyBmaWxlIGxvY2F0aW9uIiksCi0JT1BUX0JPT0xFQU4oMCwgImdsb2JhbCIsICZ1c2VfZ2xvYmFsX2NvbmZpZywgInVzZSBnbG9iYWwgY29uZmlnIGZpbGUiKSwKLQlPUFRfQk9PTEVBTigwLCAic3lzdGVtIiwgJnVzZV9zeXN0ZW1fY29uZmlnLCAidXNlIHN5c3RlbSBjb25maWcgZmlsZSIpLAotCU9QVF9CT09MRUFOKDAsICJsb2NhbCIsICZ1c2VfbG9jYWxfY29uZmlnLCAidXNlIHJlcG9zaXRvcnkgY29uZmlnIGZpbGUiKSwKLQlPUFRfU1RSSU5HKCdmJywgImZpbGUiLCAmZ2l2ZW5fY29uZmlnX2ZpbGUsICJmaWxlIiwgInVzZSBnaXZlbiBjb25maWcgZmlsZSIpLAotCU9QVF9HUk9VUCgiQWN0aW9uIiksCi0JT1BUX0JJVCgwLCAiZ2V0IiwgJmFjdGlvbnMsICJnZXQgdmFsdWU6IG5hbWUgW3ZhbHVlLXJlZ2V4XSIsIEFDVElPTl9HRVQpLAotCU9QVF9CSVQoMCwgImdldC1hbGwiLCAmYWN0aW9ucywgImdldCBhbGwgdmFsdWVzOiBrZXkgW3ZhbHVlLXJlZ2V4XSIsIEFDVElPTl9HRVRfQUxMKSwKLQlPUFRfQklUKDAsICJnZXQtcmVnZXhwIiwgJmFjdGlvbnMsICJnZXQgdmFsdWVzIGZvciByZWdleHA6IG5hbWUtcmVnZXggW3ZhbHVlLXJlZ2V4XSIsIEFDVElPTl9HRVRfUkVHRVhQKSwKLQlPUFRfQklUKDAsICJyZXBsYWNlLWFsbCIsICZhY3Rpb25zLCAicmVwbGFjZSBhbGwgbWF0Y2hpbmcgdmFyaWFibGVzOiBuYW1lIHZhbHVlIFt2YWx1ZV9yZWdleF0iLCBBQ1RJT05fUkVQTEFDRV9BTEwpLAotCU9QVF9CSVQoMCwgImFkZCIsICZhY3Rpb25zLCAiYWRkcyBhIG5ldyB2YXJpYWJsZTogbmFtZSB2YWx1ZSIsIEFDVElPTl9BREQpLAotCU9QVF9CSVQoMCwgInVuc2V0IiwgJmFjdGlvbnMsICJyZW1vdmVzIGEgdmFyaWFibGU6IG5hbWUgW3ZhbHVlLXJlZ2V4XSIsIEFDVElPTl9VTlNFVCksCi0JT1BUX0JJVCgwLCAidW5zZXQtYWxsIiwgJmFjdGlvbnMsICJyZW1vdmVzIGFsbCBtYXRjaGVzOiBuYW1lIFt2YWx1ZS1yZWdleF0iLCBBQ1RJT05fVU5TRVRfQUxMKSwKLQlPUFRfQklUKDAsICJyZW5hbWUtc2VjdGlvbiIsICZhY3Rpb25zLCAicmVuYW1lIHNlY3Rpb246IG9sZC1uYW1lIG5ldy1uYW1lIiwgQUNUSU9OX1JFTkFNRV9TRUNUSU9OKSwKLQlPUFRfQklUKDAsICJyZW1vdmUtc2VjdGlvbiIsICZhY3Rpb25zLCAicmVtb3ZlIGEgc2VjdGlvbjogbmFtZSIsIEFDVElPTl9SRU1PVkVfU0VDVElPTiksCi0JT1BUX0JJVCgnbCcsICJsaXN0IiwgJmFjdGlvbnMsICJsaXN0IGFsbCIsIEFDVElPTl9MSVNUKSwKLQlPUFRfQklUKCdlJywgImVkaXQiLCAmYWN0aW9ucywgIm9wZW5zIGFuIGVkaXRvciIsIEFDVElPTl9FRElUKSwKLQlPUFRfU1RSSU5HKDAsICJnZXQtY29sb3IiLCAmZ2V0X2NvbG9yX3Nsb3QsICJzbG90IiwgImZpbmQgdGhlIGNvbG9yIGNvbmZpZ3VyZWQ6IFtkZWZhdWx0XSIpLAotCU9QVF9TVFJJTkcoMCwgImdldC1jb2xvcmJvb2wiLCAmZ2V0X2NvbG9yYm9vbF9zbG90LCAic2xvdCIsICJmaW5kIHRoZSBjb2xvciBzZXR0aW5nOiBbc3Rkb3V0LWlzLXR0eV0iKSwKLQlPUFRfR1JPVVAoIlR5cGUiKSwKLQlPUFRfQklUKDAsICJib29sIiwgJnR5cGVzLCAidmFsdWUgaXMgXCJ0cnVlXCIgb3IgXCJmYWxzZVwiIiwgVFlQRV9CT09MKSwKLQlPUFRfQklUKDAsICJpbnQiLCAmdHlwZXMsICJ2YWx1ZSBpcyBkZWNpbWFsIG51bWJlciIsIFRZUEVfSU5UKSwKLQlPUFRfQklUKDAsICJib29sLW9yLWludCIsICZ0eXBlcywgInZhbHVlIGlzIC0tYm9vbCBvciAtLWludCIsIFRZUEVfQk9PTF9PUl9JTlQpLAotCU9QVF9CSVQoMCwgInBhdGgiLCAmdHlwZXMsICJ2YWx1ZSBpcyBhIHBhdGggKGZpbGUgb3IgZGlyZWN0b3J5IG5hbWUpIiwgVFlQRV9QQVRIKSwKLQlPUFRfR1JPVVAoIk90aGVyIiksCi0JT1BUX0JPT0xFQU4oJ3onLCAibnVsbCIsICZlbmRfbnVsbCwgInRlcm1pbmF0ZSB2YWx1ZXMgd2l0aCBOVUwgYnl0ZSIpLAotCU9QVF9CT09MKDAsICJpbmNsdWRlcyIsICZyZXNwZWN0X2luY2x1ZGVzLCAicmVzcGVjdCBpbmNsdWRlIGRpcmVjdGl2ZXMgb24gbG9va3VwIiksCisJT1BUX0dST1VQKE5fKCJDb25maWcgZmlsZSBsb2NhdGlvbiIpKSwKKwlPUFRfQk9PTEVBTigwLCAiZ2xvYmFsIiwgJnVzZV9nbG9iYWxfY29uZmlnLCBOXygidXNlIGdsb2JhbCBjb25maWcgZmlsZSIpKSwKKwlPUFRfQk9PTEVBTigwLCAic3lzdGVtIiwgJnVzZV9zeXN0ZW1fY29uZmlnLCBOXygidXNlIHN5c3RlbSBjb25maWcgZmlsZSIpKSwKKwlPUFRfQk9PTEVBTigwLCAibG9jYWwiLCAmdXNlX2xvY2FsX2NvbmZpZywgTl8oInVzZSByZXBvc2l0b3J5IGNvbmZpZyBmaWxlIikpLAorCU9QVF9TVFJJTkcoJ2YnLCAiZmlsZSIsICZnaXZlbl9jb25maWdfZmlsZSwgTl8oImZpbGUiKSwgTl8oInVzZSBnaXZlbiBjb25maWcgZmlsZSIpKSwKKwlPUFRfR1JPVVAoTl8oIkFjdGlvbiIpKSwKKwlPUFRfQklUKDAsICJnZXQiLCAmYWN0aW9ucywgTl8oImdldCB2YWx1ZTogbmFtZSBbdmFsdWUtcmVnZXhdIiksIEFDVElPTl9HRVQpLAorCU9QVF9CSVQoMCwgImdldC1hbGwiLCAmYWN0aW9ucywgTl8oImdldCBhbGwgdmFsdWVzOiBrZXkgW3ZhbHVlLXJlZ2V4XSIpLCBBQ1RJT05fR0VUX0FMTCksCisJT1BUX0JJVCgwLCAiZ2V0LXJlZ2V4cCIsICZhY3Rpb25zLCBOXygiZ2V0IHZhbHVlcyBmb3IgcmVnZXhwOiBuYW1lLXJlZ2V4IFt2YWx1ZS1yZWdleF0iKSwgQUNUSU9OX0dFVF9SRUdFWFApLAorCU9QVF9CSVQoMCwgInJlcGxhY2UtYWxsIiwgJmFjdGlvbnMsIE5fKCJyZXBsYWNlIGFsbCBtYXRjaGluZyB2YXJpYWJsZXM6IG5hbWUgdmFsdWUgW3ZhbHVlX3JlZ2V4XSIpLCBBQ1RJT05fUkVQTEFDRV9BTEwpLAorCU9QVF9CSVQoMCwgImFkZCIsICZhY3Rpb25zLCBOXygiYWRkIGEgbmV3IHZhcmlhYmxlOiBuYW1lIHZhbHVlIiksIEFDVElPTl9BREQpLAorCU9QVF9CSVQoMCwgInVuc2V0IiwgJmFjdGlvbnMsIE5fKCJyZW1vdmUgYSB2YXJpYWJsZTogbmFtZSBbdmFsdWUtcmVnZXhdIiksIEFDVElPTl9VTlNFVCksCisJT1BUX0JJVCgwLCAidW5zZXQtYWxsIiwgJmFjdGlvbnMsIE5fKCJyZW1vdmUgYWxsIG1hdGNoZXM6IG5hbWUgW3ZhbHVlLXJlZ2V4XSIpLCBBQ1RJT05fVU5TRVRfQUxMKSwKKwlPUFRfQklUKDAsICJyZW5hbWUtc2VjdGlvbiIsICZhY3Rpb25zLCBOXygicmVuYW1lIHNlY3Rpb246IG9sZC1uYW1lIG5ldy1uYW1lIiksIEFDVElPTl9SRU5BTUVfU0VDVElPTiksCisJT1BUX0JJVCgwLCAicmVtb3ZlLXNlY3Rpb24iLCAmYWN0aW9ucywgTl8oInJlbW92ZSBhIHNlY3Rpb246IG5hbWUiKSwgQUNUSU9OX1JFTU9WRV9TRUNUSU9OKSwKKwlPUFRfQklUKCdsJywgImxpc3QiLCAmYWN0aW9ucywgTl8oImxpc3QgYWxsIiksIEFDVElPTl9MSVNUKSwKKwlPUFRfQklUKCdlJywgImVkaXQiLCAmYWN0aW9ucywgTl8oIm9wZW4gYW4gZWRpdG9yIiksIEFDVElPTl9FRElUKSwKKwlPUFRfU1RSSU5HKDAsICJnZXQtY29sb3IiLCAmZ2V0X2NvbG9yX3Nsb3QsIE5fKCJzbG90IiksIE5fKCJmaW5kIHRoZSBjb2xvciBjb25maWd1cmVkOiBbZGVmYXVsdF0iKSksCisJT1BUX1NUUklORygwLCAiZ2V0LWNvbG9yYm9vbCIsICZnZXRfY29sb3Jib29sX3Nsb3QsIE5fKCJzbG90IiksIE5fKCJmaW5kIHRoZSBjb2xvciBzZXR0aW5nOiBbc3Rkb3V0LWlzLXR0eV0iKSksCisJT1BUX0dST1VQKE5fKCJUeXBlIikpLAorCU9QVF9CSVQoMCwgImJvb2wiLCAmdHlwZXMsIE5fKCJ2YWx1ZSBpcyBcInRydWVcIiBvciBcImZhbHNlXCIiKSwgVFlQRV9CT09MKSwKKwlPUFRfQklUKDAsICJpbnQiLCAmdHlwZXMsIE5fKCJ2YWx1ZSBpcyBkZWNpbWFsIG51bWJlciIpLCBUWVBFX0lOVCksCisJT1BUX0JJVCgwLCAiYm9vbC1vci1pbnQiLCAmdHlwZXMsIE5fKCJ2YWx1ZSBpcyAtLWJvb2wgb3IgLS1pbnQiKSwgVFlQRV9CT09MX09SX0lOVCksCisJT1BUX0JJVCgwLCAicGF0aCIsICZ0eXBlcywgTl8oInZhbHVlIGlzIGEgcGF0aCAoZmlsZSBvciBkaXJlY3RvcnkgbmFtZSkiKSwgVFlQRV9QQVRIKSwKKwlPUFRfR1JPVVAoTl8oIk90aGVyIikpLAorCU9QVF9CT09MRUFOKCd6JywgIm51bGwiLCAmZW5kX251bGwsIE5fKCJ0ZXJtaW5hdGUgdmFsdWVzIHdpdGggTlVMIGJ5dGUiKSksCisJT1BUX0JPT0woMCwgImluY2x1ZGVzIiwgJnJlc3BlY3RfaW5jbHVkZXMsIE5fKCJyZXNwZWN0IGluY2x1ZGUgZGlyZWN0aXZlcyBvbiBsb29rdXAiKSksCiAJT1BUX0VORCgpLAogfTsKIApAQCAtOTUsMTIgKzk0LDE5IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgc2hvd19jb25maWcoY29uc3QgY2hhciAqa2V5XywgY29uc3QgY2hhciAqdmFsdWVfLCB2b2lkICpjYikKK3N0cnVjdCBzdHJidWZfbGlzdCB7CisJc3RydWN0IHN0cmJ1ZiAqaXRlbXM7CisJaW50IG5yOworCWludCBhbGxvYzsKK307CisKK3N0YXRpYyBpbnQgY29sbGVjdF9jb25maWcoY29uc3QgY2hhciAqa2V5XywgY29uc3QgY2hhciAqdmFsdWVfLCB2b2lkICpjYikKIHsKKwlzdHJ1Y3Qgc3RyYnVmX2xpc3QgKnZhbHVlcyA9IGNiOworCXN0cnVjdCBzdHJidWYgKmJ1ZjsKIAljaGFyIHZhbHVlWzI1Nl07CiAJY29uc3QgY2hhciAqdnB0ciA9IHZhbHVlOwogCWludCBtdXN0X2ZyZWVfdnB0ciA9IDA7Ci0JaW50IGR1cF9lcnJvciA9IDA7CiAJaW50IG11c3RfcHJpbnRfZGVsaW0gPSAwOwogCiAJaWYgKCF1c2Vfa2V5X3JlZ2V4cCAmJiBzdHJjbXAoa2V5Xywga2V5KSkKQEAgLTExMSwxMiArMTE3LDE0IEBACiAJICAgIChkb19ub3RfbWF0Y2ggXiAhIXJlZ2V4ZWMocmVnZXhwLCAodmFsdWVfP3ZhbHVlXzoiIiksIDAsIE5VTEwsIDApKSkKIAkJcmV0dXJuIDA7CiAKKwlBTExPQ19HUk9XKHZhbHVlcy0+aXRlbXMsIHZhbHVlcy0+bnIgKyAxLCB2YWx1ZXMtPmFsbG9jKTsKKwlidWYgPSAmdmFsdWVzLT5pdGVtc1t2YWx1ZXMtPm5yKytdOworCXN0cmJ1Zl9pbml0KGJ1ZiwgMCk7CisKIAlpZiAoc2hvd19rZXlzKSB7Ci0JCXByaW50ZigiJXMiLCBrZXlfKTsKKwkJc3RyYnVmX2FkZHN0cihidWYsIGtleV8pOwogCQltdXN0X3ByaW50X2RlbGltID0gMTsKIAl9Ci0JaWYgKHNlZW4gJiYgIWRvX2FsbCkKLQkJZHVwX2Vycm9yID0gMTsKIAlpZiAodHlwZXMgPT0gVFlQRV9JTlQpCiAJCXNwcmludGYodmFsdWUsICIlZCIsIGdpdF9jb25maWdfaW50KGtleV8sIHZhbHVlXz92YWx1ZV86IiIpKTsKIAllbHNlIGlmICh0eXBlcyA9PSBUWVBFX0JPT0wpCkBAIC0xMjksNyArMTM3LDggQEAKIAkJZWxzZQogCQkJc3ByaW50Zih2YWx1ZSwgIiVkIiwgdik7CiAJfSBlbHNlIGlmICh0eXBlcyA9PSBUWVBFX1BBVEgpIHsKLQkJZ2l0X2NvbmZpZ19wYXRobmFtZSgmdnB0ciwga2V5XywgdmFsdWVfKTsKKwkJaWYgKGdpdF9jb25maWdfcGF0aG5hbWUoJnZwdHIsIGtleV8sIHZhbHVlXykgPCAwKQorCQkJcmV0dXJuIC0xOwogCQltdXN0X2ZyZWVfdnB0ciA9IDE7CiAJfSBlbHNlIGlmICh2YWx1ZV8pIHsKIAkJdnB0ciA9IHZhbHVlXzsKQEAgLTEzOCwxNiArMTQ3LDEyIEBACiAJCXZwdHIgPSAiIjsKIAkJbXVzdF9wcmludF9kZWxpbSA9IDA7CiAJfQotCXNlZW4rKzsKLQlpZiAoZHVwX2Vycm9yKSB7Ci0JCWVycm9yKCJNb3JlIHRoYW4gb25lIHZhbHVlIGZvciB0aGUga2V5ICVzOiAlcyIsCi0JCQkJa2V5XywgdnB0cik7Ci0JfQotCWVsc2UgewotCQlpZiAobXVzdF9wcmludF9kZWxpbSkKLQkJCXByaW50ZigiJWMiLCBrZXlfZGVsaW0pOwotCQlwcmludGYoIiVzJWMiLCB2cHRyLCB0ZXJtKTsKLQl9CisKKwlpZiAobXVzdF9wcmludF9kZWxpbSkKKwkJc3RyYnVmX2FkZGNoKGJ1Ziwga2V5X2RlbGltKTsKKwlzdHJidWZfYWRkc3RyKGJ1ZiwgdnB0cik7CisJc3RyYnVmX2FkZGNoKGJ1ZiwgdGVybSk7CisKIAlpZiAobXVzdF9mcmVlX3ZwdHIpCiAJCS8qIElmIHZwdHIgbXVzdCBiZSBmcmVlZCwgaXQncyBhIHBvaW50ZXIgdG8gYQogCQkgKiBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYnVmZmVyLCBpdCdzIHNhZmUgdG8gY2FzdCB0bwpAQCAtMTYwLDIyICsxNjUsOSBAQAogCiBzdGF0aWMgaW50IGdldF92YWx1ZShjb25zdCBjaGFyICprZXlfLCBjb25zdCBjaGFyICpyZWdleF8pCiB7Ci0JaW50IHJldCA9IC0xOwotCWNoYXIgKmdsb2JhbCA9IE5VTEwsICpyZXBvX2NvbmZpZyA9IE5VTEw7Ci0JY29uc3QgY2hhciAqc3lzdGVtX3dpZGUgPSBOVUxMLCAqbG9jYWw7Ci0Jc3RydWN0IGNvbmZpZ19pbmNsdWRlX2RhdGEgaW5jID0gQ09ORklHX0lOQ0xVREVfSU5JVDsKLQljb25maWdfZm5fdCBmbjsKLQl2b2lkICpkYXRhOwotCi0JbG9jYWwgPSBnaXZlbl9jb25maWdfZmlsZTsKLQlpZiAoIWxvY2FsKSB7Ci0JCWNvbnN0IGNoYXIgKmhvbWUgPSBnZXRlbnYoIkhPTUUiKTsKLQkJbG9jYWwgPSByZXBvX2NvbmZpZyA9IGdpdF9wYXRoZHVwKCJjb25maWciKTsKLQkJaWYgKGhvbWUpCi0JCQlnbG9iYWwgPSB4c3RyZHVwKG1rcGF0aCgiJXMvLmdpdGNvbmZpZyIsIGhvbWUpKTsKLQkJaWYgKGdpdF9jb25maWdfc3lzdGVtKCkpCi0JCQlzeXN0ZW1fd2lkZSA9IGdpdF9ldGNfZ2l0Y29uZmlnKCk7Ci0JfQorCWludCByZXQgPSBDT05GSUdfR0VORVJJQ19FUlJPUjsKKwlzdHJ1Y3Qgc3RyYnVmX2xpc3QgdmFsdWVzID0ge05VTEx9OworCWludCBpOwogCiAJaWYgKHVzZV9rZXlfcmVnZXhwKSB7CiAJCWNoYXIgKnRsOwpAQCAtMTk3LDEyICsxODksMTYgQEAKIAkJa2V5X3JlZ2V4cCA9IChyZWdleF90Kil4bWFsbG9jKHNpemVvZihyZWdleF90KSk7CiAJCWlmIChyZWdjb21wKGtleV9yZWdleHAsIGtleSwgUkVHX0VYVEVOREVEKSkgewogCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIGtleSBwYXR0ZXJuOiAlc1xuIiwga2V5Xyk7Ci0JCQlmcmVlKGtleSk7CisJCQlmcmVlKGtleV9yZWdleHApOworCQkJa2V5X3JlZ2V4cCA9IE5VTEw7CisJCQlyZXQgPSBDT05GSUdfSU5WQUxJRF9QQVRURVJOOwogCQkJZ290byBmcmVlX3N0cmluZ3M7CiAJCX0KIAl9IGVsc2UgewotCQlpZiAoZ2l0X2NvbmZpZ19wYXJzZV9rZXkoa2V5XywgJmtleSwgTlVMTCkpCisJCWlmIChnaXRfY29uZmlnX3BhcnNlX2tleShrZXlfLCAma2V5LCBOVUxMKSkgeworCQkJcmV0ID0gQ09ORklHX0lOVkFMSURfS0VZOwogCQkJZ290byBmcmVlX3N0cmluZ3M7CisJCX0KIAl9CiAKIAlpZiAocmVnZXhfKSB7CkBAIC0yMTQsNDcgKzIxMCwzNyBAQAogCQlyZWdleHAgPSAocmVnZXhfdCopeG1hbGxvYyhzaXplb2YocmVnZXhfdCkpOwogCQlpZiAocmVnY29tcChyZWdleHAsIHJlZ2V4XywgUkVHX0VYVEVOREVEKSkgewogCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIHBhdHRlcm46ICVzXG4iLCByZWdleF8pOworCQkJZnJlZShyZWdleHApOworCQkJcmVnZXhwID0gTlVMTDsKKwkJCXJldCA9IENPTkZJR19JTlZBTElEX1BBVFRFUk47CiAJCQlnb3RvIGZyZWVfc3RyaW5nczsKIAkJfQogCX0KIAotCWZuID0gc2hvd19jb25maWc7Ci0JZGF0YSA9IE5VTEw7Ci0JaWYgKHJlc3BlY3RfaW5jbHVkZXMpIHsKLQkJaW5jLmZuID0gZm47Ci0JCWluYy5kYXRhID0gZGF0YTsKLQkJZm4gPSBnaXRfY29uZmlnX2luY2x1ZGU7Ci0JCWRhdGEgPSAmaW5jOworCWdpdF9jb25maWdfd2l0aF9vcHRpb25zKGNvbGxlY3RfY29uZmlnLCAmdmFsdWVzLAorCQkJCWdpdmVuX2NvbmZpZ19maWxlLCByZXNwZWN0X2luY2x1ZGVzKTsKKworCXJldCA9ICF2YWx1ZXMubnI7CisKKwlmb3IgKGkgPSAwOyBpIDwgdmFsdWVzLm5yOyBpKyspIHsKKwkJc3RydWN0IHN0cmJ1ZiAqYnVmID0gdmFsdWVzLml0ZW1zICsgaTsKKwkJaWYgKGRvX2FsbCB8fCBpID09IHZhbHVlcy5uciAtIDEpCisJCQlmd3JpdGUoYnVmLT5idWYsIDEsIGJ1Zi0+bGVuLCBzdGRvdXQpOworCQlzdHJidWZfcmVsZWFzZShidWYpOwogCX0KKwlmcmVlKHZhbHVlcy5pdGVtcyk7CiAKLQlpZiAoZG9fYWxsICYmIHN5c3RlbV93aWRlKQotCQlnaXRfY29uZmlnX2Zyb21fZmlsZShmbiwgc3lzdGVtX3dpZGUsIGRhdGEpOwotCWlmIChkb19hbGwgJiYgZ2xvYmFsKQotCQlnaXRfY29uZmlnX2Zyb21fZmlsZShmbiwgZ2xvYmFsLCBkYXRhKTsKLQlpZiAoZG9fYWxsKQotCQlnaXRfY29uZmlnX2Zyb21fZmlsZShmbiwgbG9jYWwsIGRhdGEpOwotCWdpdF9jb25maWdfZnJvbV9wYXJhbWV0ZXJzKGZuLCBkYXRhKTsKLQlpZiAoIWRvX2FsbCAmJiAhc2VlbikKLQkJZ2l0X2NvbmZpZ19mcm9tX2ZpbGUoZm4sIGxvY2FsLCBkYXRhKTsKLQlpZiAoIWRvX2FsbCAmJiAhc2VlbiAmJiBnbG9iYWwpCi0JCWdpdF9jb25maWdfZnJvbV9maWxlKGZuLCBnbG9iYWwsIGRhdGEpOwotCWlmICghZG9fYWxsICYmICFzZWVuICYmIHN5c3RlbV93aWRlKQotCQlnaXRfY29uZmlnX2Zyb21fZmlsZShmbiwgc3lzdGVtX3dpZGUsIGRhdGEpOwotCitmcmVlX3N0cmluZ3M6CiAJZnJlZShrZXkpOworCWlmIChrZXlfcmVnZXhwKSB7CisJCXJlZ2ZyZWUoa2V5X3JlZ2V4cCk7CisJCWZyZWUoa2V5X3JlZ2V4cCk7CisJfQogCWlmIChyZWdleHApIHsKIAkJcmVnZnJlZShyZWdleHApOwogCQlmcmVlKHJlZ2V4cCk7CiAJfQogCi0JaWYgKGRvX2FsbCkKLQkJcmV0ID0gIXNlZW47Ci0JZWxzZQotCQlyZXQgPSAoc2VlbiA9PSAxKSA/IDAgOiBzZWVuID4gMSA/IDIgOiAxOwotCi1mcmVlX3N0cmluZ3M6Ci0JZnJlZShyZXBvX2NvbmZpZyk7Ci0JZnJlZShnbG9iYWwpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTM3OSwxMyArMzY1LDI1IEBACiAJfQogCiAJaWYgKHVzZV9nbG9iYWxfY29uZmlnKSB7Ci0JCWNoYXIgKmhvbWUgPSBnZXRlbnYoIkhPTUUiKTsKLQkJaWYgKGhvbWUpIHsKLQkJCWNoYXIgKnVzZXJfY29uZmlnID0geHN0cmR1cChta3BhdGgoIiVzLy5naXRjb25maWciLCBob21lKSk7Ci0JCQlnaXZlbl9jb25maWdfZmlsZSA9IHVzZXJfY29uZmlnOwotCQl9IGVsc2UgeworCQljaGFyICp1c2VyX2NvbmZpZyA9IE5VTEw7CisJCWNoYXIgKnhkZ19jb25maWcgPSBOVUxMOworCisJCWhvbWVfY29uZmlnX3BhdGhzKCZ1c2VyX2NvbmZpZywgJnhkZ19jb25maWcsICJjb25maWciKTsKKworCQlpZiAoIXVzZXJfY29uZmlnKQorCQkJLyoKKwkJCSAqIEl0IGlzIHVua25vd24gaWYgSE9NRS8uZ2l0Y29uZmlnIGV4aXN0cywgc28KKwkJCSAqIHdlIGRvIG5vdCBrbm93IGlmIHdlIHNob3VsZCB3cml0ZSB0byBYREcKKwkJCSAqIGxvY2F0aW9uOyBlcnJvciBvdXQgZXZlbiBpZiBYREdfQ09ORklHX0hPTUUKKwkJCSAqIGlzIHNldCBhbmQgcG9pbnRzIGF0IGEgc2FuZSBsb2NhdGlvbi4KKwkJCSAqLwogCQkJZGllKCIkSE9NRSBub3Qgc2V0Iik7Ci0JCX0KKworCQlpZiAoYWNjZXNzX29yX3dhcm4odXNlcl9jb25maWcsIFJfT0ssIDApICYmCisJCSAgICB4ZGdfY29uZmlnICYmICFhY2Nlc3Nfb3Jfd2Fybih4ZGdfY29uZmlnLCBSX09LLCAwKSkKKwkJCWdpdmVuX2NvbmZpZ19maWxlID0geGRnX2NvbmZpZzsKKwkJZWxzZQorCQkJZ2l2ZW5fY29uZmlnX2ZpbGUgPSB1c2VyX2NvbmZpZzsKIAl9CiAJZWxzZSBpZiAodXNlX3N5c3RlbV9jb25maWcpCiAJCWdpdmVuX2NvbmZpZ19maWxlID0gZ2l0X2V0Y19naXRjb25maWcoKTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4vY291bnQtb2JqZWN0cy5jIGIvYnVpbHRpbi9jb3VudC1vYmplY3RzLmMKaW5kZXggYzM3Y2I5OC4uYTdmNzBjYiAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jb3VudC1vYmplY3RzLmMKKysrIGIvYnVpbHRpbi9jb3VudC1vYmplY3RzLmMKQEAgLTksMTEgKzksMjIgQEAKICNpbmNsdWRlICJidWlsdGluLmgiCiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgogCitzdGF0aWMgdW5zaWduZWQgbG9uZyBnYXJiYWdlOworc3RhdGljIG9mZl90IHNpemVfZ2FyYmFnZTsKKworc3RhdGljIHZvaWQgcmVhbF9yZXBvcnRfZ2FyYmFnZShjb25zdCBjaGFyICpkZXNjLCBjb25zdCBjaGFyICpwYXRoKQoreworCXN0cnVjdCBzdGF0IHN0OworCWlmICghc3RhdChwYXRoLCAmc3QpKQorCQlzaXplX2dhcmJhZ2UgKz0gc3Quc3Rfc2l6ZTsKKwl3YXJuaW5nKCIlczogJXMiLCBkZXNjLCBwYXRoKTsKKwlnYXJiYWdlKys7Cit9CisKIHN0YXRpYyB2b2lkIGNvdW50X29iamVjdHMoRElSICpkLCBjaGFyICpwYXRoLCBpbnQgbGVuLCBpbnQgdmVyYm9zZSwKIAkJCSAgdW5zaWduZWQgbG9uZyAqbG9vc2UsCiAJCQkgIG9mZl90ICpsb29zZV9zaXplLAotCQkJICB1bnNpZ25lZCBsb25nICpwYWNrZWRfbG9vc2UsCi0JCQkgIHVuc2lnbmVkIGxvbmcgKmdhcmJhZ2UpCisJCQkgIHVuc2lnbmVkIGxvbmcgKnBhY2tlZF9sb29zZSkKIHsKIAlzdHJ1Y3QgZGlyZW50ICplbnQ7CiAJd2hpbGUgKChlbnQgPSByZWFkZGlyKGQpKSAhPSBOVUxMKSB7CkBAIC00Niw5ICs1NywxMSBAQAogCQl9CiAJCWlmIChiYWQpIHsKIAkJCWlmICh2ZXJib3NlKSB7Ci0JCQkJZXJyb3IoImdhcmJhZ2UgZm91bmQ6ICUuKnMvJXMiLAotCQkJCSAgICAgIGxlbiArIDIsIHBhdGgsIGVudC0+ZF9uYW1lKTsKLQkJCQkoKmdhcmJhZ2UpKys7CisJCQkJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOworCQkJCXN0cmJ1Zl9hZGRmKCZzYiwgIiUuKnMvJXMiLAorCQkJCQkgICAgbGVuICsgMiwgcGF0aCwgZW50LT5kX25hbWUpOworCQkJCXJlcG9ydF9nYXJiYWdlKCJnYXJiYWdlIGZvdW5kIiwgc2IuYnVmKTsKKwkJCQlzdHJidWZfcmVsZWFzZSgmc2IpOwogCQkJfQogCQkJY29udGludWU7CiAJCX0KQEAgLTY2LDIwICs3OSwyMiBAQAogfQogCiBzdGF0aWMgY2hhciBjb25zdCAqIGNvbnN0IGNvdW50X29iamVjdHNfdXNhZ2VbXSA9IHsKLQkiZ2l0IGNvdW50LW9iamVjdHMgWy12XSIsCisJTl8oImdpdCBjb3VudC1vYmplY3RzIFstdl0gWy1IIHwgLS1odW1hbi1yZWFkYWJsZV0iKSwKIAlOVUxMCiB9OwogCiBpbnQgY21kX2NvdW50X29iamVjdHMoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7Ci0JaW50IGksIHZlcmJvc2UgPSAwOworCWludCBpLCB2ZXJib3NlID0gMCwgaHVtYW5fcmVhZGFibGUgPSAwOwogCWNvbnN0IGNoYXIgKm9iamRpciA9IGdldF9vYmplY3RfZGlyZWN0b3J5KCk7CiAJaW50IGxlbiA9IHN0cmxlbihvYmpkaXIpOwogCWNoYXIgKnBhdGggPSB4bWFsbG9jKGxlbiArIDUwKTsKLQl1bnNpZ25lZCBsb25nIGxvb3NlID0gMCwgcGFja2VkID0gMCwgcGFja2VkX2xvb3NlID0gMCwgZ2FyYmFnZSA9IDA7CisJdW5zaWduZWQgbG9uZyBsb29zZSA9IDAsIHBhY2tlZCA9IDAsIHBhY2tlZF9sb29zZSA9IDA7CiAJb2ZmX3QgbG9vc2Vfc2l6ZSA9IDA7CiAJc3RydWN0IG9wdGlvbiBvcHRzW10gPSB7Ci0JCU9QVF9fVkVSQk9TRSgmdmVyYm9zZSwgImJlIHZlcmJvc2UiKSwKKwkJT1BUX19WRVJCT1NFKCZ2ZXJib3NlLCBOXygiYmUgdmVyYm9zZSIpKSwKKwkJT1BUX0JPT0woJ0gnLCAiaHVtYW4tcmVhZGFibGUiLCAmaHVtYW5fcmVhZGFibGUsCisJCQkgTl8oInByaW50IHNpemVzIGluIGh1bWFuIHJlYWRhYmxlIGZvcm1hdCIpKSwKIAkJT1BUX0VORCgpLAogCX07CiAKQEAgLTg3LDYgKzEwMiw4IEBACiAJLyogd2UgZG8gbm90IHRha2UgYXJndW1lbnRzIG90aGVyIHRoYW4gZmxhZ3MgZm9yIG5vdyAqLwogCWlmIChhcmdjKQogCQl1c2FnZV93aXRoX29wdGlvbnMoY291bnRfb2JqZWN0c191c2FnZSwgb3B0cyk7CisJaWYgKHZlcmJvc2UpCisJCXJlcG9ydF9nYXJiYWdlID0gcmVhbF9yZXBvcnRfZ2FyYmFnZTsKIAltZW1jcHkocGF0aCwgb2JqZGlyLCBsZW4pOwogCWlmIChsZW4gJiYgb2JqZGlyW2xlbi0xXSAhPSAnLycpCiAJCXBhdGhbbGVuKytdID0gJy8nOwpAQCAtOTcsMTMgKzExNCwxNiBAQAogCQlpZiAoIWQpCiAJCQljb250aW51ZTsKIAkJY291bnRfb2JqZWN0cyhkLCBwYXRoLCBsZW4sIHZlcmJvc2UsCi0JCQkgICAgICAmbG9vc2UsICZsb29zZV9zaXplLCAmcGFja2VkX2xvb3NlLCAmZ2FyYmFnZSk7CisJCQkgICAgICAmbG9vc2UsICZsb29zZV9zaXplLCAmcGFja2VkX2xvb3NlKTsKIAkJY2xvc2VkaXIoZCk7CiAJfQogCWlmICh2ZXJib3NlKSB7CiAJCXN0cnVjdCBwYWNrZWRfZ2l0ICpwOwogCQl1bnNpZ25lZCBsb25nIG51bV9wYWNrID0gMDsKIAkJb2ZmX3Qgc2l6ZV9wYWNrID0gMDsKKwkJc3RydWN0IHN0cmJ1ZiBsb29zZV9idWYgPSBTVFJCVUZfSU5JVDsKKwkJc3RydWN0IHN0cmJ1ZiBwYWNrX2J1ZiA9IFNUUkJVRl9JTklUOworCQlzdHJ1Y3Qgc3RyYnVmIGdhcmJhZ2VfYnVmID0gU1RSQlVGX0lOSVQ7CiAJCWlmICghcGFja2VkX2dpdCkKIAkJCXByZXBhcmVfcGFja2VkX2dpdCgpOwogCQlmb3IgKHAgPSBwYWNrZWRfZ2l0OyBwOyBwID0gcC0+bmV4dCkgewpAQCAtMTE1LDE2ICsxMzUsNDAgQEAKIAkJCXNpemVfcGFjayArPSBwLT5wYWNrX3NpemUgKyBwLT5pbmRleF9zaXplOwogCQkJbnVtX3BhY2srKzsKIAkJfQorCisJCWlmIChodW1hbl9yZWFkYWJsZSkgeworCQkJc3RyYnVmX2h1bWFuaXNlX2J5dGVzKCZsb29zZV9idWYsIGxvb3NlX3NpemUpOworCQkJc3RyYnVmX2h1bWFuaXNlX2J5dGVzKCZwYWNrX2J1Ziwgc2l6ZV9wYWNrKTsKKwkJCXN0cmJ1Zl9odW1hbmlzZV9ieXRlcygmZ2FyYmFnZV9idWYsIHNpemVfZ2FyYmFnZSk7CisJCX0gZWxzZSB7CisJCQlzdHJidWZfYWRkZigmbG9vc2VfYnVmLCAiJWx1IiwKKwkJCQkgICAgKHVuc2lnbmVkIGxvbmcpKGxvb3NlX3NpemUgLyAxMDI0KSk7CisJCQlzdHJidWZfYWRkZigmcGFja19idWYsICIlbHUiLAorCQkJCSAgICAodW5zaWduZWQgbG9uZykoc2l6ZV9wYWNrIC8gMTAyNCkpOworCQkJc3RyYnVmX2FkZGYoJmdhcmJhZ2VfYnVmLCAiJWx1IiwKKwkJCQkgICAgKHVuc2lnbmVkIGxvbmcpKHNpemVfZ2FyYmFnZSAvIDEwMjQpKTsKKwkJfQorCiAJCXByaW50ZigiY291bnQ6ICVsdVxuIiwgbG9vc2UpOwotCQlwcmludGYoInNpemU6ICVsdVxuIiwgKHVuc2lnbmVkIGxvbmcpIChsb29zZV9zaXplIC8gMTAyNCkpOworCQlwcmludGYoInNpemU6ICVzXG4iLCBsb29zZV9idWYuYnVmKTsKIAkJcHJpbnRmKCJpbi1wYWNrOiAlbHVcbiIsIHBhY2tlZCk7CiAJCXByaW50ZigicGFja3M6ICVsdVxuIiwgbnVtX3BhY2spOwotCQlwcmludGYoInNpemUtcGFjazogJWx1XG4iLCAodW5zaWduZWQgbG9uZykgKHNpemVfcGFjayAvIDEwMjQpKTsKKwkJcHJpbnRmKCJzaXplLXBhY2s6ICVzXG4iLCBwYWNrX2J1Zi5idWYpOwogCQlwcmludGYoInBydW5lLXBhY2thYmxlOiAlbHVcbiIsIHBhY2tlZF9sb29zZSk7CiAJCXByaW50ZigiZ2FyYmFnZTogJWx1XG4iLCBnYXJiYWdlKTsKKwkJcHJpbnRmKCJzaXplLWdhcmJhZ2U6ICVzXG4iLCBnYXJiYWdlX2J1Zi5idWYpOworCQlzdHJidWZfcmVsZWFzZSgmbG9vc2VfYnVmKTsKKwkJc3RyYnVmX3JlbGVhc2UoJnBhY2tfYnVmKTsKKwkJc3RyYnVmX3JlbGVhc2UoJmdhcmJhZ2VfYnVmKTsKKwl9IGVsc2UgeworCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCQlpZiAoaHVtYW5fcmVhZGFibGUpCisJCQlzdHJidWZfaHVtYW5pc2VfYnl0ZXMoJmJ1ZiwgbG9vc2Vfc2l6ZSk7CisJCWVsc2UKKwkJCXN0cmJ1Zl9hZGRmKCZidWYsICIlbHUga2lsb2J5dGVzIiwKKwkJCQkgICAgKHVuc2lnbmVkIGxvbmcpKGxvb3NlX3NpemUgLyAxMDI0KSk7CisJCXByaW50ZigiJWx1IG9iamVjdHMsICVzXG4iLCBsb29zZSwgYnVmLmJ1Zik7CisJCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogCX0KLQllbHNlCi0JCXByaW50ZigiJWx1IG9iamVjdHMsICVsdSBraWxvYnl0ZXNcbiIsCi0JCSAgICAgICBsb29zZSwgKHVuc2lnbmVkIGxvbmcpIChsb29zZV9zaXplIC8gMTAyNCkpOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9jcmVkZW50aWFsLmMgYi9idWlsdGluL2NyZWRlbnRpYWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDEyZmEwCi0tLSAvZGV2L251bGwKKysrIGIvYnVpbHRpbi9jcmVkZW50aWFsLmMKQEAgLTAsMCArMSwzMSBAQAorI2luY2x1ZGUgImdpdC1jb21wYXQtdXRpbC5oIgorI2luY2x1ZGUgImNyZWRlbnRpYWwuaCIKKyNpbmNsdWRlICJidWlsdGluLmgiCisKK3N0YXRpYyBjb25zdCBjaGFyIHVzYWdlX21zZ1tdID0KKwkiZ2l0IGNyZWRlbnRpYWwgW2ZpbGx8YXBwcm92ZXxyZWplY3RdIjsKKworaW50IGNtZF9jcmVkZW50aWFsKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQoreworCWNvbnN0IGNoYXIgKm9wOworCXN0cnVjdCBjcmVkZW50aWFsIGMgPSBDUkVERU5USUFMX0lOSVQ7CisKKwlvcCA9IGFyZ3ZbMV07CisJaWYgKCFvcCkKKwkJdXNhZ2UodXNhZ2VfbXNnKTsKKworCWlmIChjcmVkZW50aWFsX3JlYWQoJmMsIHN0ZGluKSA8IDApCisJCWRpZSgidW5hYmxlIHRvIHJlYWQgY3JlZGVudGlhbCBmcm9tIHN0ZGluIik7CisKKwlpZiAoIXN0cmNtcChvcCwgImZpbGwiKSkgeworCQljcmVkZW50aWFsX2ZpbGwoJmMpOworCQljcmVkZW50aWFsX3dyaXRlKCZjLCBzdGRvdXQpOworCX0gZWxzZSBpZiAoIXN0cmNtcChvcCwgImFwcHJvdmUiKSkgeworCQljcmVkZW50aWFsX2FwcHJvdmUoJmMpOworCX0gZWxzZSBpZiAoIXN0cmNtcChvcCwgInJlamVjdCIpKSB7CisJCWNyZWRlbnRpYWxfcmVqZWN0KCZjKTsKKwl9IGVsc2UgeworCQl1c2FnZSh1c2FnZV9tc2cpOworCX0KKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2J1aWx0aW4vZGVzY3JpYmUuYyBiL2J1aWx0aW4vZGVzY3JpYmUuYwppbmRleCA5ZjYzMDY3Li42NjM2YTY4IDEwMDY0NAotLS0gYS9idWlsdGluL2Rlc2NyaWJlLmMKKysrIGIvYnVpbHRpbi9kZXNjcmliZS5jCkBAIC0xMiw4ICsxMiw4IEBACiAjZGVmaW5lIE1BWF9UQUdTCShGTEFHX0JJVFMgLSAxKQogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRlc2NyaWJlX3VzYWdlW10gPSB7Ci0JImdpdCBkZXNjcmliZSBbb3B0aW9uc10gPGNvbW1pdHRpc2g+KiIsCi0JImdpdCBkZXNjcmliZSBbb3B0aW9uc10gLS1kaXJ0eSIsCisJTl8oImdpdCBkZXNjcmliZSBbb3B0aW9uc10gPGNvbW1pdHRpc2g+KiIpLAorCU5fKCJnaXQgZGVzY3JpYmUgW29wdGlvbnNdIC0tZGlydHkiKSwKIAlOVUxMCiB9OwogCkBAIC0xMzcsNDAgKzEzNywzOSBAQAogCiBzdGF0aWMgaW50IGdldF9uYW1lKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmbGFnLCB2b2lkICpjYl9kYXRhKQogewotCWludCBtaWdodF9iZV90YWcgPSAhcHJlZml4Y21wKHBhdGgsICJyZWZzL3RhZ3MvIik7CisJaW50IGlzX3RhZyA9ICFwcmVmaXhjbXAocGF0aCwgInJlZnMvdGFncy8iKTsKIAl1bnNpZ25lZCBjaGFyIHBlZWxlZFsyMF07Ci0JaW50IGlzX3RhZywgcHJpbzsKKwlpbnQgaXNfYW5ub3RhdGVkLCBwcmlvOwogCi0JaWYgKCFhbGwgJiYgIW1pZ2h0X2JlX3RhZykKKwkvKiBSZWplY3QgYW55dGhpbmcgb3V0c2lkZSByZWZzL3RhZ3MvIHVubGVzcyAtLWFsbCAqLworCWlmICghYWxsICYmICFpc190YWcpCiAJCXJldHVybiAwOwogCi0JaWYgKCFwZWVsX3JlZihwYXRoLCBwZWVsZWQpICYmICFpc19udWxsX3NoYTEocGVlbGVkKSkgewotCQlpc190YWcgPSAhIWhhc2hjbXAoc2hhMSwgcGVlbGVkKTsKKwkvKiBBY2NlcHQgb25seSB0YWdzIHRoYXQgbWF0Y2ggdGhlIHBhdHRlcm4sIGlmIGdpdmVuICovCisJaWYgKHBhdHRlcm4gJiYgKCFpc190YWcgfHwgZm5tYXRjaChwYXR0ZXJuLCBwYXRoICsgMTAsIDApKSkKKwkJcmV0dXJuIDA7CisKKwkvKiBJcyBpdCBhbm5vdGF0ZWQ/ICovCisJaWYgKCFwZWVsX3JlZihwYXRoLCBwZWVsZWQpKSB7CisJCWlzX2Fubm90YXRlZCA9ICEhaGFzaGNtcChzaGExLCBwZWVsZWQpOwogCX0gZWxzZSB7CiAJCWhhc2hjcHkocGVlbGVkLCBzaGExKTsKLQkJaXNfdGFnID0gMDsKKwkJaXNfYW5ub3RhdGVkID0gMDsKIAl9CiAKLQkvKiBJZiAtLWFsbCwgdGhlbiBhbnkgcmVmcyBhcmUgdXNlZC4KLQkgKiBJZiAtLXRhZ3MsIHRoZW4gYW55IHRhZ3MgYXJlIHVzZWQuCi0JICogT3RoZXJ3aXNlIG9ubHkgYW5ub3RhdGVkIHRhZ3MgYXJlIHVzZWQuCisJLyoKKwkgKiBCeSBkZWZhdWx0LCB3ZSBvbmx5IHVzZSBhbm5vdGF0ZWQgdGFncywgYnV0IHdpdGggLS10YWdzCisJICogd2UgZmFsbCBiYWNrIHRvIGxpZ2h0d2VpZ2h0IG9uZXMgKGV2ZW4gd2l0aG91dCAtLXRhZ3MsCisJICogd2Ugc3RpbGwgcmVtZW1iZXIgbGlnaHR3ZWlnaHQgb25lcywgb25seSB0byBnaXZlIGhpbnRzCisJICogaW4gYW4gZXJyb3IgbWVzc2FnZSkuICAtLWFsbCBhbGxvd3MgYW55IHJlZnMgdG8gYmUgdXNlZC4KIAkgKi8KLQlpZiAobWlnaHRfYmVfdGFnKSB7Ci0JCWlmIChpc190YWcpCi0JCQlwcmlvID0gMjsKLQkJZWxzZQotCQkJcHJpbyA9IDE7Ci0KLQkJaWYgKHBhdHRlcm4gJiYgZm5tYXRjaChwYXR0ZXJuLCBwYXRoICsgMTAsIDApKQotCQkJcHJpbyA9IDA7Ci0JfQorCWlmIChpc19hbm5vdGF0ZWQpCisJCXByaW8gPSAyOworCWVsc2UgaWYgKGlzX3RhZykKKwkJcHJpbyA9IDE7CiAJZWxzZQogCQlwcmlvID0gMDsKIAotCWlmICghYWxsKSB7Ci0JCWlmICghcHJpbykKLQkJCXJldHVybiAwOwotCX0KIAlhZGRfdG9fa25vd25fbmFtZXMoYWxsID8gcGF0aCArIDUgOiBwYXRoICsgMTAsIHBlZWxlZCwgcHJpbywgc2hhMSk7CiAJcmV0dXJuIDA7CiB9CkBAIC00MDAsMjIgKzM5OSwyMiBAQAogewogCWludCBjb250YWlucyA9IDA7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCU9QVF9CT09MRUFOKDAsICJjb250YWlucyIsICAgJmNvbnRhaW5zLCAiZmluZCB0aGUgdGFnIHRoYXQgY29tZXMgYWZ0ZXIgdGhlIGNvbW1pdCIpLAotCQlPUFRfQk9PTEVBTigwLCAiZGVidWciLCAgICAgICZkZWJ1ZywgImRlYnVnIHNlYXJjaCBzdHJhdGVneSBvbiBzdGRlcnIiKSwKLQkJT1BUX0JPT0xFQU4oMCwgImFsbCIsICAgICAgICAmYWxsLCAidXNlIGFueSByZWYgaW4gLmdpdC9yZWZzIiksCi0JCU9QVF9CT09MRUFOKDAsICJ0YWdzIiwgICAgICAgJnRhZ3MsICJ1c2UgYW55IHRhZyBpbiAuZ2l0L3JlZnMvdGFncyIpLAotCQlPUFRfQk9PTEVBTigwLCAibG9uZyIsICAgICAgICZsb25nZm9ybWF0LCAiYWx3YXlzIHVzZSBsb25nIGZvcm1hdCIpLAorCQlPUFRfQk9PTEVBTigwLCAiY29udGFpbnMiLCAgICZjb250YWlucywgTl8oImZpbmQgdGhlIHRhZyB0aGF0IGNvbWVzIGFmdGVyIHRoZSBjb21taXQiKSksCisJCU9QVF9CT09MRUFOKDAsICJkZWJ1ZyIsICAgICAgJmRlYnVnLCBOXygiZGVidWcgc2VhcmNoIHN0cmF0ZWd5IG9uIHN0ZGVyciIpKSwKKwkJT1BUX0JPT0xFQU4oMCwgImFsbCIsICAgICAgICAmYWxsLCBOXygidXNlIGFueSByZWYiKSksCisJCU9QVF9CT09MRUFOKDAsICJ0YWdzIiwgICAgICAgJnRhZ3MsIE5fKCJ1c2UgYW55IHRhZywgZXZlbiB1bmFubm90YXRlZCIpKSwKKwkJT1BUX0JPT0xFQU4oMCwgImxvbmciLCAgICAgICAmbG9uZ2Zvcm1hdCwgTl8oImFsd2F5cyB1c2UgbG9uZyBmb3JtYXQiKSksCiAJCU9QVF9fQUJCUkVWKCZhYmJyZXYpLAogCQlPUFRfU0VUX0lOVCgwLCAiZXhhY3QtbWF0Y2giLCAmbWF4X2NhbmRpZGF0ZXMsCi0JCQkgICAgIm9ubHkgb3V0cHV0IGV4YWN0IG1hdGNoZXMiLCAwKSwKKwkJCSAgICBOXygib25seSBvdXRwdXQgZXhhY3QgbWF0Y2hlcyIpLCAwKSwKIAkJT1BUX0lOVEVHRVIoMCwgImNhbmRpZGF0ZXMiLCAmbWF4X2NhbmRpZGF0ZXMsCi0JCQkgICAgImNvbnNpZGVyIDxuPiBtb3N0IHJlY2VudCB0YWdzIChkZWZhdWx0OiAxMCkiKSwKLQkJT1BUX1NUUklORygwLCAibWF0Y2giLCAgICAgICAmcGF0dGVybiwgInBhdHRlcm4iLAotCQkJICAgIm9ubHkgY29uc2lkZXIgdGFncyBtYXRjaGluZyA8cGF0dGVybj4iKSwKKwkJCSAgICBOXygiY29uc2lkZXIgPG4+IG1vc3QgcmVjZW50IHRhZ3MgKGRlZmF1bHQ6IDEwKSIpKSwKKwkJT1BUX1NUUklORygwLCAibWF0Y2giLCAgICAgICAmcGF0dGVybiwgTl8oInBhdHRlcm4iKSwKKwkJCSAgIE5fKCJvbmx5IGNvbnNpZGVyIHRhZ3MgbWF0Y2hpbmcgPHBhdHRlcm4+IikpLAogCQlPUFRfQk9PTEVBTigwLCAiYWx3YXlzIiwgICAgICZhbHdheXMsCi0JCQkgICAic2hvdyBhYmJyZXZpYXRlZCBjb21taXQgb2JqZWN0IGFzIGZhbGxiYWNrIiksCi0JCXtPUFRJT05fU1RSSU5HLCAwLCAiZGlydHkiLCAgJmRpcnR5LCAibWFyayIsCi0JCQkgICAiYXBwZW5kIDxtYXJrPiBvbiBkaXJ0eSB3b3JraW5nIHRyZWUgKGRlZmF1bHQ6IFwiLWRpcnR5XCIpIiwKKwkJCSAgIE5fKCJzaG93IGFiYnJldmlhdGVkIGNvbW1pdCBvYmplY3QgYXMgZmFsbGJhY2siKSksCisJCXtPUFRJT05fU1RSSU5HLCAwLCAiZGlydHkiLCAgJmRpcnR5LCBOXygibWFyayIpLAorCQkJICAgTl8oImFwcGVuZCA8bWFyaz4gb24gZGlydHkgd29ya2luZyB0cmVlIChkZWZhdWx0OiBcIi1kaXJ0eVwiKSIpLAogCQkgUEFSU0VfT1BUX09QVEFSRywgTlVMTCwgKGludHB0cl90KSAiLWRpcnR5In0sCiAJCU9QVF9FTkQoKSwKIAl9OwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9kaWZmLWluZGV4LmMgYi9idWlsdGluL2RpZmYtaW5kZXguYwppbmRleCAyZWIzMmJkLi4xYzczN2Y3IDEwMDY0NAotLS0gYS9idWlsdGluL2RpZmYtaW5kZXguYworKysgYi9idWlsdGluL2RpZmYtaW5kZXguYwpAQCAtNDEsOSArNDEsMTMgQEAKIAlpZiAocmV2LnBlbmRpbmcubnIgIT0gMSB8fAogCSAgICByZXYubWF4X2NvdW50ICE9IC0xIHx8IHJldi5taW5fYWdlICE9IC0xIHx8IHJldi5tYXhfYWdlICE9IC0xKQogCQl1c2FnZShkaWZmX2NhY2hlX3VzYWdlKTsKLQlpZiAoIWNhY2hlZCkKKwlpZiAoIWNhY2hlZCkgewogCQlzZXR1cF93b3JrX3RyZWUoKTsKLQlpZiAocmVhZF9jYWNoZSgpIDwgMCkgeworCQlpZiAocmVhZF9jYWNoZV9wcmVsb2FkKHJldi5kaWZmb3B0LnBhdGhzcGVjLnJhdykgPCAwKSB7CisJCQlwZXJyb3IoInJlYWRfY2FjaGVfcHJlbG9hZCIpOworCQkJcmV0dXJuIC0xOworCQl9CisJfSBlbHNlIGlmIChyZWFkX2NhY2hlKCkgPCAwKSB7CiAJCXBlcnJvcigicmVhZF9jYWNoZSIpOwogCQlyZXR1cm4gLTE7CiAJfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9kaWZmLmMgYi9idWlsdGluL2RpZmYuYwppbmRleCA5MDY5ZGM0Li44YzJhZjZjIDEwMDY0NAotLS0gYS9idWlsdGluL2RpZmYuYworKysgYi9idWlsdGluL2RpZmYuYwpAQCAtMjksNiArMjksOCBAQAogCQkJIHVuc2lnbmVkIG9sZF9tb2RlLCB1bnNpZ25lZCBuZXdfbW9kZSwKIAkJCSBjb25zdCB1bnNpZ25lZCBjaGFyICpvbGRfc2hhMSwKIAkJCSBjb25zdCB1bnNpZ25lZCBjaGFyICpuZXdfc2hhMSwKKwkJCSBpbnQgb2xkX3NoYTFfdmFsaWQsCisJCQkgaW50IG5ld19zaGExX3ZhbGlkLAogCQkJIGNvbnN0IGNoYXIgKm9sZF9uYW1lLAogCQkJIGNvbnN0IGNoYXIgKm5ld19uYW1lKQogewpAQCAtNTQsOCArNTYsOCBAQAogCiAJb25lID0gYWxsb2NfZmlsZXNwZWMob2xkX25hbWUpOwogCXR3byA9IGFsbG9jX2ZpbGVzcGVjKG5ld19uYW1lKTsKLQlmaWxsX2ZpbGVzcGVjKG9uZSwgb2xkX3NoYTEsIG9sZF9tb2RlKTsKLQlmaWxsX2ZpbGVzcGVjKHR3bywgbmV3X3NoYTEsIG5ld19tb2RlKTsKKwlmaWxsX2ZpbGVzcGVjKG9uZSwgb2xkX3NoYTEsIG9sZF9zaGExX3ZhbGlkLCBvbGRfbW9kZSk7CisJZmlsbF9maWxlc3BlYyh0d28sIG5ld19zaGExLCBuZXdfc2hhMV92YWxpZCwgbmV3X21vZGUpOwogCiAJZGlmZl9xdWV1ZSgmZGlmZl9xdWV1ZWRfZGlmZiwgb25lLCB0d28pOwogfQpAQCAtODQsNiArODYsNyBAQAogCXN0dWZmX2NoYW5nZSgmcmV2cy0+ZGlmZm9wdCwKIAkJICAgICBibG9iWzBdLm1vZGUsIGNhbm9uX21vZGUoc3Quc3RfbW9kZSksCiAJCSAgICAgYmxvYlswXS5zaGExLCBudWxsX3NoYTEsCisJCSAgICAgMSwgMCwKIAkJICAgICBwYXRoLCBwYXRoKTsKIAlkaWZmY29yZV9zdGQoJnJldnMtPmRpZmZvcHQpOwogCWRpZmZfZmx1c2goJnJldnMtPmRpZmZvcHQpOwpAQCAtMTA4LDYgKzExMSw3IEBACiAJc3R1ZmZfY2hhbmdlKCZyZXZzLT5kaWZmb3B0LAogCQkgICAgIGJsb2JbMF0ubW9kZSwgYmxvYlsxXS5tb2RlLAogCQkgICAgIGJsb2JbMF0uc2hhMSwgYmxvYlsxXS5zaGExLAorCQkgICAgIDEsIDEsCiAJCSAgICAgYmxvYlswXS5uYW1lLCBibG9iWzFdLm5hbWUpOwogCWRpZmZjb3JlX3N0ZCgmcmV2cy0+ZGlmZm9wdCk7CiAJZGlmZl9mbHVzaCgmcmV2cy0+ZGlmZm9wdCk7CkBAIC0xMjYsOCArMTMwLDYgQEAKIAkJCXVzYWdlKGJ1aWx0aW5fZGlmZl91c2FnZSk7CiAJCWFyZ3YrKzsgYXJnYy0tOwogCX0KLQlpZiAoIWNhY2hlZCkKLQkJc2V0dXBfd29ya190cmVlKCk7CiAJLyoKIAkgKiBNYWtlIHN1cmUgdGhlcmUgaXMgb25lIHJldmlzaW9uIChpLmUuIHBlbmRpbmcgb2JqZWN0KSwKIAkgKiBhbmQgdGhlcmUgaXMgbm8gcmV2aXNpb24gZmlsdGVyaW5nIHBhcmFtZXRlcnMuCkBAIC0xMzYsOCArMTM4LDE0IEBACiAJICAgIHJldnMtPm1heF9jb3VudCAhPSAtMSB8fCByZXZzLT5taW5fYWdlICE9IC0xIHx8CiAJICAgIHJldnMtPm1heF9hZ2UgIT0gLTEpCiAJCXVzYWdlKGJ1aWx0aW5fZGlmZl91c2FnZSk7Ci0JaWYgKHJlYWRfY2FjaGVfcHJlbG9hZChyZXZzLT5kaWZmb3B0LnBhdGhzcGVjLnJhdykgPCAwKSB7Ci0JCXBlcnJvcigicmVhZF9jYWNoZV9wcmVsb2FkIik7CisJaWYgKCFjYWNoZWQpIHsKKwkJc2V0dXBfd29ya190cmVlKCk7CisJCWlmIChyZWFkX2NhY2hlX3ByZWxvYWQocmV2cy0+ZGlmZm9wdC5wYXRoc3BlYy5yYXcpIDwgMCkgeworCQkJcGVycm9yKCJyZWFkX2NhY2hlX3ByZWxvYWQiKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0gZWxzZSBpZiAocmVhZF9jYWNoZSgpIDwgMCkgeworCQlwZXJyb3IoInJlYWRfY2FjaGUiKTsKIAkJcmV0dXJuIC0xOwogCX0KIAlyZXR1cm4gcnVuX2RpZmZfaW5kZXgocmV2cywgY2FjaGVkKTsKQEAgLTI5OCwxOSArMzA2LDEyIEBACiAJYXJnYyA9IHNldHVwX3JldmlzaW9ucyhhcmdjLCBhcmd2LCAmcmV2LCBOVUxMKTsKIAlpZiAoIXJldi5kaWZmb3B0Lm91dHB1dF9mb3JtYXQpIHsKIAkJcmV2LmRpZmZvcHQub3V0cHV0X2Zvcm1hdCA9IERJRkZfRk9STUFUX1BBVENIOwotCQlpZiAoZGlmZl9zZXR1cF9kb25lKCZyZXYuZGlmZm9wdCkgPCAwKQotCQkJZGllKF8oImRpZmZfc2V0dXBfZG9uZSBmYWlsZWQiKSk7CisJCWRpZmZfc2V0dXBfZG9uZSgmcmV2LmRpZmZvcHQpOwogCX0KIAogCURJRkZfT1BUX1NFVCgmcmV2LmRpZmZvcHQsIFJFQ1VSU0lWRSk7CiAKLQkvKgotCSAqIElmIHRoZSB1c2VyIGFza2VkIGZvciBvdXIgZXhpdCBjb2RlIHRoZW4gZG9uJ3Qgc3RhcnQgYQotCSAqIHBhZ2VyIG9yIHdlIHdvdWxkIGVuZCB1cCByZXBvcnRpbmcgaXRzIGV4aXQgY29kZSBpbnN0ZWFkLgotCSAqLwotCWlmICghRElGRl9PUFRfVFNUKCZyZXYuZGlmZm9wdCwgRVhJVF9XSVRIX1NUQVRVUykgJiYKLQkgICAgY2hlY2tfcGFnZXJfY29uZmlnKCJkaWZmIikgIT0gMCkKLQkJc2V0dXBfcGFnZXIoKTsKKwlzZXR1cF9kaWZmX3BhZ2VyKCZyZXYuZGlmZm9wdCk7CiAKIAkvKgogCSAqIERvIHdlIGhhdmUgLS1jYWNoZWQgYW5kIG5vdCBoYXZlIGEgcGVuZGluZyBvYmplY3QsIHRoZW4KZGlmZiAtLWdpdCBhL2J1aWx0aW4vZmFzdC1leHBvcnQuYyBiL2J1aWx0aW4vZmFzdC1leHBvcnQuYwppbmRleCBlZjdjMDEyLi5kNjBkNjc1IDEwMDY0NAotLS0gYS9idWlsdGluL2Zhc3QtZXhwb3J0LmMKKysrIGIvYnVpbHRpbi9mYXN0LWV4cG9ydC5jCkBAIC0xOSwxMiArMTksMTIgQEAKICNpbmNsdWRlICJxdW90ZS5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqZmFzdF9leHBvcnRfdXNhZ2VbXSA9IHsKLQkiZ2l0IGZhc3QtZXhwb3J0IFtyZXYtbGlzdC1vcHRzXSIsCisJTl8oImdpdCBmYXN0LWV4cG9ydCBbcmV2LWxpc3Qtb3B0c10iKSwKIAlOVUxMCiB9OwogCiBzdGF0aWMgaW50IHByb2dyZXNzOwotc3RhdGljIGVudW0geyBBQk9SVCwgVkVSQkFUSU0sIFdBUk4sIFNUUklQIH0gc2lnbmVkX3RhZ19tb2RlID0gQUJPUlQ7CitzdGF0aWMgZW51bSB7IEFCT1JULCBWRVJCQVRJTSwgV0FSTiwgV0FSTl9TVFJJUCwgU1RSSVAgfSBzaWduZWRfdGFnX21vZGUgPSBBQk9SVDsKIHN0YXRpYyBlbnVtIHsgRVJST1IsIERST1AsIFJFV1JJVEUgfSB0YWdfb2ZfZmlsdGVyZWRfbW9kZSA9IEVSUk9SOwogc3RhdGljIGludCBmYWtlX21pc3NpbmdfdGFnZ2VyOwogc3RhdGljIGludCB1c2VfZG9uZV9mZWF0dXJlOwpAQCAtNDAsMTAgKzQwLDEyIEBACiAJCXNpZ25lZF90YWdfbW9kZSA9IFZFUkJBVElNOwogCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAid2FybiIpKQogCQlzaWduZWRfdGFnX21vZGUgPSBXQVJOOworCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAid2Fybi1zdHJpcCIpKQorCQlzaWduZWRfdGFnX21vZGUgPSBXQVJOX1NUUklQOwogCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAic3RyaXAiKSkKIAkJc2lnbmVkX3RhZ19tb2RlID0gU1RSSVA7CiAJZWxzZQotCQlyZXR1cm4gZXJyb3IoIlVua25vd24gc2lnbmVkLXRhZyBtb2RlOiAlcyIsIGFyZyk7CisJCXJldHVybiBlcnJvcigiVW5rbm93biBzaWduZWQtdGFncyBtb2RlOiAlcyIsIGFyZyk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTExMywxMiArMTE1LDEzIEBACiAJCXByaW50ZigicHJvZ3Jlc3MgJWQgb2JqZWN0c1xuIiwgY291bnRlcik7CiB9CiAKLXN0YXRpYyB2b2lkIGhhbmRsZV9vYmplY3QoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSkKK3N0YXRpYyB2b2lkIGV4cG9ydF9ibG9iKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7CiAJdW5zaWduZWQgbG9uZyBzaXplOwogCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKIAljaGFyICpidWY7CiAJc3RydWN0IG9iamVjdCAqb2JqZWN0OworCWludCBlYXRlbjsKIAogCWlmIChub19kYXRhKQogCQlyZXR1cm47CkBAIC0xMjYsMTYgKzEyOSwxOCBAQAogCWlmIChpc19udWxsX3NoYTEoc2hhMSkpCiAJCXJldHVybjsKIAotCW9iamVjdCA9IHBhcnNlX29iamVjdChzaGExKTsKLQlpZiAoIW9iamVjdCkKLQkJZGllICgiQ291bGQgbm90IHJlYWQgYmxvYiAlcyIsIHNoYTFfdG9faGV4KHNoYTEpKTsKLQotCWlmIChvYmplY3QtPmZsYWdzICYgU0hPV04pCisJb2JqZWN0ID0gbG9va3VwX29iamVjdChzaGExKTsKKwlpZiAob2JqZWN0ICYmIG9iamVjdC0+ZmxhZ3MgJiBTSE9XTikKIAkJcmV0dXJuOwogCiAJYnVmID0gcmVhZF9zaGExX2ZpbGUoc2hhMSwgJnR5cGUsICZzaXplKTsKIAlpZiAoIWJ1ZikKIAkJZGllICgiQ291bGQgbm90IHJlYWQgYmxvYiAlcyIsIHNoYTFfdG9faGV4KHNoYTEpKTsKKwlpZiAoY2hlY2tfc2hhMV9zaWduYXR1cmUoc2hhMSwgYnVmLCBzaXplLCB0eXBlbmFtZSh0eXBlKSkgPCAwKQorCQlkaWUoInNoYTEgbWlzbWF0Y2ggaW4gYmxvYiAlcyIsIHNoYTFfdG9faGV4KHNoYTEpKTsKKwlvYmplY3QgPSBwYXJzZV9vYmplY3RfYnVmZmVyKHNoYTEsIHR5cGUsIHNpemUsIGJ1ZiwgJmVhdGVuKTsKKwlpZiAoIW9iamVjdCkKKwkJZGllKCJDb3VsZCBub3QgcmVhZCBibG9iICVzIiwgc2hhMV90b19oZXgoc2hhMSkpOwogCiAJbWFya19uZXh0X29iamVjdChvYmplY3QpOwogCkBAIC0xNDcsNyArMTUyLDggQEAKIAlzaG93X3Byb2dyZXNzKCk7CiAKIAlvYmplY3QtPmZsYWdzIHw9IFNIT1dOOwotCWZyZWUoYnVmKTsKKwlpZiAoIWVhdGVuKQorCQlmcmVlKGJ1Zik7CiB9CiAKIHN0YXRpYyBpbnQgZGVwdGhfZmlyc3QoY29uc3Qgdm9pZCAqYV8sIGNvbnN0IHZvaWQgKmJfKQpAQCAtMTg1LDYgKzE5MSw4IEBACiAJaW50IG5lZWRfcXVvdGUgPSBxdW90ZV9jX3N0eWxlKHBhdGgsIE5VTEwsIE5VTEwsIDApOwogCWlmIChuZWVkX3F1b3RlKQogCQlxdW90ZV9jX3N0eWxlKHBhdGgsIE5VTEwsIHN0ZG91dCwgMCk7CisJZWxzZSBpZiAoc3RyY2hyKHBhdGgsICcgJykpCisJCXByaW50ZigiXCIlc1wiIiwgcGF0aCk7CiAJZWxzZQogCQlwcmludGYoIiVzIiwgcGF0aCk7CiB9CkBAIC0zMTAsNyArMzE4LDcgQEAKIAkvKiBFeHBvcnQgdGhlIHJlZmVyZW5jZWQgYmxvYnMsIGFuZCByZW1lbWJlciB0aGUgbWFya3MuICovCiAJZm9yIChpID0gMDsgaSA8IGRpZmZfcXVldWVkX2RpZmYubnI7IGkrKykKIAkJaWYgKCFTX0lTR0lUTElOSyhkaWZmX3F1ZXVlZF9kaWZmLnF1ZXVlW2ldLT50d28tPm1vZGUpKQotCQkJaGFuZGxlX29iamVjdChkaWZmX3F1ZXVlZF9kaWZmLnF1ZXVlW2ldLT50d28tPnNoYTEpOworCQkJZXhwb3J0X2Jsb2IoZGlmZl9xdWV1ZWRfZGlmZi5xdWV1ZVtpXS0+dHdvLT5zaGExKTsKIAogCW1hcmtfbmV4dF9vYmplY3QoJmNvbW1pdC0+b2JqZWN0KTsKIAlpZiAoIWlzX2VuY29kaW5nX3V0ZjgoZW5jb2RpbmcpKQpAQCAtNDE0LDcgKzQyMiw3IEBACiAJCQlzd2l0Y2goc2lnbmVkX3RhZ19tb2RlKSB7CiAJCQljYXNlIEFCT1JUOgogCQkJCWRpZSAoIkVuY291bnRlcmVkIHNpZ25lZCB0YWcgJXM7IHVzZSAiCi0JCQkJICAgICAiLS1zaWduZWQtdGFnPTxtb2RlPiB0byBoYW5kbGUgaXQuIiwKKwkJCQkgICAgICItLXNpZ25lZC10YWdzPTxtb2RlPiB0byBoYW5kbGUgaXQuIiwKIAkJCQkgICAgIHNoYTFfdG9faGV4KHRhZy0+b2JqZWN0LnNoYTEpKTsKIAkJCWNhc2UgV0FSTjoKIAkJCQl3YXJuaW5nICgiRXhwb3J0aW5nIHNpZ25lZCB0YWcgJXMiLApAQCAtNDIyLDYgKzQzMCwxMCBAQAogCQkJCS8qIGZhbGx0aHJ1ICovCiAJCQljYXNlIFZFUkJBVElNOgogCQkJCWJyZWFrOworCQkJY2FzZSBXQVJOX1NUUklQOgorCQkJCXdhcm5pbmcgKCJTdHJpcHBpbmcgc2lnbmF0dXJlIGZyb20gdGFnICVzIiwKKwkJCQkJIHNoYTFfdG9faGV4KHRhZy0+b2JqZWN0LnNoYTEpKTsKKwkJCQkvKiBmYWxsdGhydSAqLwogCQkJY2FzZSBTVFJJUDoKIAkJCQltZXNzYWdlX3NpemUgPSBzaWduYXR1cmUgKyAxIC0gbWVzc2FnZTsKIAkJCQlicmVhazsKQEAgLTQ3MiwxOCArNDg0LDIxIEBACiAJICAgICAgIChpbnQpbWVzc2FnZV9zaXplLCAoaW50KW1lc3NhZ2Vfc2l6ZSwgbWVzc2FnZSA/IG1lc3NhZ2UgOiAiIik7CiB9CiAKLXN0YXRpYyB2b2lkIGdldF90YWdzX2FuZF9kdXBsaWNhdGVzKHN0cnVjdCBvYmplY3RfYXJyYXkgKnBlbmRpbmcsCitzdGF0aWMgdm9pZCBnZXRfdGFnc19hbmRfZHVwbGljYXRlcyhzdHJ1Y3QgcmV2X2NtZGxpbmVfaW5mbyAqaW5mbywKIAkJCQkgICAgc3RydWN0IHN0cmluZ19saXN0ICpleHRyYV9yZWZzKQogewogCXN0cnVjdCB0YWcgKnRhZzsKIAlpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgPCBwZW5kaW5nLT5ucjsgaSsrKSB7Ci0JCXN0cnVjdCBvYmplY3RfYXJyYXlfZW50cnkgKmUgPSBwZW5kaW5nLT5vYmplY3RzICsgaTsKKwlmb3IgKGkgPSAwOyBpIDwgaW5mby0+bnI7IGkrKykgeworCQlzdHJ1Y3QgcmV2X2NtZGxpbmVfZW50cnkgKmUgPSBpbmZvLT5yZXYgKyBpOwogCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwotCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQgPSBjb21taXQ7CisJCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKIAkJY2hhciAqZnVsbF9uYW1lOwogCisJCWlmIChlLT5mbGFncyAmIFVOSU5URVJFU1RJTkcpCisJCQljb250aW51ZTsKKwogCQlpZiAoZHdpbV9yZWYoZS0+bmFtZSwgc3RybGVuKGUtPm5hbWUpLCBzaGExLCAmZnVsbF9uYW1lKSAhPSAxKQogCQkJY29udGludWU7CiAKQEAgLTUwNyw3ICs1MjIsNyBAQAogCQkJCWNvbW1pdCA9IChzdHJ1Y3QgY29tbWl0ICopdGFnOwogCQkJCWJyZWFrOwogCQkJY2FzZSBPQkpfQkxPQjoKLQkJCQloYW5kbGVfb2JqZWN0KHRhZy0+b2JqZWN0LnNoYTEpOworCQkJCWV4cG9ydF9ibG9iKHRhZy0+b2JqZWN0LnNoYTEpOwogCQkJCWNvbnRpbnVlOwogCQkJZGVmYXVsdDogLyogT0JKX1RBRyAobmVzdGVkIHRhZ3MpIGlzIGFscmVhZHkgaGFuZGxlZCAqLwogCQkJCXdhcm5pbmcoIlRhZyBwb2ludHMgdG8gb2JqZWN0IG9mIHVuZXhwZWN0ZWQgdHlwZSAlcywgc2tpcHBpbmcuIiwKQEAgLTUyMSwxMCArNTM2LDE0IEBACiAJCQkJdHlwZW5hbWUoZS0+aXRlbS0+dHlwZSkpOwogCQkJY29udGludWU7CiAJCX0KLQkJaWYgKGNvbW1pdC0+dXRpbCkKLQkJCS8qIG1vcmUgdGhhbiBvbmUgbmFtZSBmb3IgdGhlIHNhbWUgb2JqZWN0ICovCisKKwkJLyoKKwkJICogVGhpcyByZWYgd2lsbCBub3QgYmUgdXBkYXRlZCB0aHJvdWdoIGEgY29tbWl0LCBsZXRzIG1ha2UKKwkJICogc3VyZSBpdCBnZXRzIHByb3Blcmx5IHVwZGF0ZWQgZXZlbnR1YWxseS4KKwkJICovCisJCWlmIChjb21taXQtPnV0aWwgfHwgY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBTSE9XTikKIAkJCXN0cmluZ19saXN0X2FwcGVuZChleHRyYV9yZWZzLCBmdWxsX25hbWUpLT51dGlsID0gY29tbWl0OwotCQllbHNlCisJCWlmICghY29tbWl0LT51dGlsKQogCQkJY29tbWl0LT51dGlsID0gZnVsbF9uYW1lOwogCX0KIH0KQEAgLTYwNSwxNiArNjI0LDIxIEBACiAJCQl8fCAqbWFya19lbmQgIT0gJyAnIHx8IGdldF9zaGExKG1hcmtfZW5kICsgMSwgc2hhMSkpCiAJCQlkaWUoImNvcnJ1cHQgbWFyayBsaW5lOiAlcyIsIGxpbmUpOwogCisJCWlmIChsYXN0X2lkbnVtIDwgbWFyaykKKwkJCWxhc3RfaWRudW0gPSBtYXJrOworCiAJCW9iamVjdCA9IHBhcnNlX29iamVjdChzaGExKTsKIAkJaWYgKCFvYmplY3QpCi0JCQlkaWUgKCJDb3VsZCBub3QgcmVhZCBibG9iICVzIiwgc2hhMV90b19oZXgoc2hhMSkpOworCQkJY29udGludWU7CiAKIAkJaWYgKG9iamVjdC0+ZmxhZ3MgJiBTSE9XTikKIAkJCWVycm9yKCJPYmplY3QgJXMgYWxyZWFkeSBoYXMgYSBtYXJrIiwgc2hhMV90b19oZXgoc2hhMSkpOwogCisJCWlmIChvYmplY3QtPnR5cGUgIT0gT0JKX0NPTU1JVCkKKwkJCS8qIG9ubHkgY29tbWl0cyAqLworCQkJY29udGludWU7CisKIAkJbWFya19vYmplY3Qob2JqZWN0LCBtYXJrKTsKLQkJaWYgKGxhc3RfaWRudW0gPCBtYXJrKQotCQkJbGFzdF9pZG51bSA9IG1hcms7CiAKIAkJb2JqZWN0LT5mbGFncyB8PSBTSE9XTjsKIAl9CkBAIC02MjgsMjYgKzY1MiwyNyBAQAogCXN0cnVjdCBzdHJpbmdfbGlzdCBleHRyYV9yZWZzID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKIAlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CiAJY2hhciAqZXhwb3J0X2ZpbGVuYW1lID0gTlVMTCwgKmltcG9ydF9maWxlbmFtZSA9IE5VTEw7CisJdWludDMyX3QgbGFzdGltcG9ydGlkOwogCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewogCQlPUFRfSU5URUdFUigwLCAicHJvZ3Jlc3MiLCAmcHJvZ3Jlc3MsCi0JCQkgICAgInNob3cgcHJvZ3Jlc3MgYWZ0ZXIgPG4+IG9iamVjdHMiKSwKLQkJT1BUX0NBTExCQUNLKDAsICJzaWduZWQtdGFncyIsICZzaWduZWRfdGFnX21vZGUsICJtb2RlIiwKLQkJCSAgICAgInNlbGVjdCBoYW5kbGluZyBvZiBzaWduZWQgdGFncyIsCisJCQkgICAgTl8oInNob3cgcHJvZ3Jlc3MgYWZ0ZXIgPG4+IG9iamVjdHMiKSksCisJCU9QVF9DQUxMQkFDSygwLCAic2lnbmVkLXRhZ3MiLCAmc2lnbmVkX3RhZ19tb2RlLCBOXygibW9kZSIpLAorCQkJICAgICBOXygic2VsZWN0IGhhbmRsaW5nIG9mIHNpZ25lZCB0YWdzIiksCiAJCQkgICAgIHBhcnNlX29wdF9zaWduZWRfdGFnX21vZGUpLAotCQlPUFRfQ0FMTEJBQ0soMCwgInRhZy1vZi1maWx0ZXJlZC1vYmplY3QiLCAmdGFnX29mX2ZpbHRlcmVkX21vZGUsICJtb2RlIiwKLQkJCSAgICAgInNlbGVjdCBoYW5kbGluZyBvZiB0YWdzIHRoYXQgdGFnIGZpbHRlcmVkIG9iamVjdHMiLAorCQlPUFRfQ0FMTEJBQ0soMCwgInRhZy1vZi1maWx0ZXJlZC1vYmplY3QiLCAmdGFnX29mX2ZpbHRlcmVkX21vZGUsIE5fKCJtb2RlIiksCisJCQkgICAgIE5fKCJzZWxlY3QgaGFuZGxpbmcgb2YgdGFncyB0aGF0IHRhZyBmaWx0ZXJlZCBvYmplY3RzIiksCiAJCQkgICAgIHBhcnNlX29wdF90YWdfb2ZfZmlsdGVyZWRfbW9kZSksCi0JCU9QVF9TVFJJTkcoMCwgImV4cG9ydC1tYXJrcyIsICZleHBvcnRfZmlsZW5hbWUsICJmaWxlIiwKLQkJCSAgICAgIkR1bXAgbWFya3MgdG8gdGhpcyBmaWxlIiksCi0JCU9QVF9TVFJJTkcoMCwgImltcG9ydC1tYXJrcyIsICZpbXBvcnRfZmlsZW5hbWUsICJmaWxlIiwKLQkJCSAgICAgIkltcG9ydCBtYXJrcyBmcm9tIHRoaXMgZmlsZSIpLAorCQlPUFRfU1RSSU5HKDAsICJleHBvcnQtbWFya3MiLCAmZXhwb3J0X2ZpbGVuYW1lLCBOXygiZmlsZSIpLAorCQkJICAgICBOXygiRHVtcCBtYXJrcyB0byB0aGlzIGZpbGUiKSksCisJCU9QVF9TVFJJTkcoMCwgImltcG9ydC1tYXJrcyIsICZpbXBvcnRfZmlsZW5hbWUsIE5fKCJmaWxlIiksCisJCQkgICAgIE5fKCJJbXBvcnQgbWFya3MgZnJvbSB0aGlzIGZpbGUiKSksCiAJCU9QVF9CT09MRUFOKDAsICJmYWtlLW1pc3NpbmctdGFnZ2VyIiwgJmZha2VfbWlzc2luZ190YWdnZXIsCi0JCQkgICAgICJGYWtlIGEgdGFnZ2VyIHdoZW4gdGFncyBsYWNrIG9uZSIpLAorCQkJICAgICBOXygiRmFrZSBhIHRhZ2dlciB3aGVuIHRhZ3MgbGFjayBvbmUiKSksCiAJCU9QVF9CT09MRUFOKDAsICJmdWxsLXRyZWUiLCAmZnVsbF90cmVlLAotCQkJICAgICAiT3V0cHV0IGZ1bGwgdHJlZSBmb3IgZWFjaCBjb21taXQiKSwKKwkJCSAgICAgTl8oIk91dHB1dCBmdWxsIHRyZWUgZm9yIGVhY2ggY29tbWl0IikpLAogCQlPUFRfQk9PTEVBTigwLCAidXNlLWRvbmUtZmVhdHVyZSIsICZ1c2VfZG9uZV9mZWF0dXJlLAotCQkJICAgICAiVXNlIHRoZSBkb25lIGZlYXR1cmUgdG8gdGVybWluYXRlIHRoZSBzdHJlYW0iKSwKLQkJT1BUX0JPT0woMCwgIm5vLWRhdGEiLCAmbm9fZGF0YSwgIlNraXAgb3V0cHV0IG9mIGJsb2IgZGF0YSIpLAorCQkJICAgICBOXygiVXNlIHRoZSBkb25lIGZlYXR1cmUgdG8gdGVybWluYXRlIHRoZSBzdHJlYW0iKSksCisJCU9QVF9CT09MKDAsICJuby1kYXRhIiwgJm5vX2RhdGEsIE5fKCJTa2lwIG91dHB1dCBvZiBibG9iIGRhdGEiKSksCiAJCU9QVF9FTkQoKQogCX07CiAKQEAgLTY3MSwxMSArNjk2LDEyIEBACiAKIAlpZiAoaW1wb3J0X2ZpbGVuYW1lKQogCQlpbXBvcnRfbWFya3MoaW1wb3J0X2ZpbGVuYW1lKTsKKwlsYXN0aW1wb3J0aWQgPSBsYXN0X2lkbnVtOwogCiAJaWYgKGltcG9ydF9maWxlbmFtZSAmJiByZXZzLnBydW5lX2RhdGEubnIpCiAJCWZ1bGxfdHJlZSA9IDE7CiAKLQlnZXRfdGFnc19hbmRfZHVwbGljYXRlcygmcmV2cy5wZW5kaW5nLCAmZXh0cmFfcmVmcyk7CisJZ2V0X3RhZ3NfYW5kX2R1cGxpY2F0ZXMoJnJldnMuY21kbGluZSwgJmV4dHJhX3JlZnMpOwogCiAJaWYgKHByZXBhcmVfcmV2aXNpb25fd2FsaygmcmV2cykpCiAJCWRpZSgicmV2aXNpb24gd2FsayBzZXR1cCBmYWlsZWQiKTsKQEAgLTY5Myw3ICs3MTksNyBAQAogCiAJaGFuZGxlX3RhZ3NfYW5kX2R1cGxpY2F0ZXMoJmV4dHJhX3JlZnMpOwogCi0JaWYgKGV4cG9ydF9maWxlbmFtZSkKKwlpZiAoZXhwb3J0X2ZpbGVuYW1lICYmIGxhc3RpbXBvcnRpZCAhPSBsYXN0X2lkbnVtKQogCQlleHBvcnRfbWFya3MoZXhwb3J0X2ZpbGVuYW1lKTsKIAogCWlmICh1c2VfZG9uZV9mZWF0dXJlKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9mZXRjaC1wYWNrLmMgYi9idWlsdGluL2ZldGNoLXBhY2suYwppbmRleCAxNDlkYjg4Li5hYmE0NDY1IDEwMDY0NAotLS0gYS9idWlsdGluL2ZldGNoLXBhY2suYworKysgYi9idWlsdGluL2ZldGNoLXBhY2suYwpAQCAtMSw5MDAgKzEsMjggQEAKICNpbmNsdWRlICJidWlsdGluLmgiCi0jaW5jbHVkZSAicmVmcy5oIgogI2luY2x1ZGUgInBrdC1saW5lLmgiCi0jaW5jbHVkZSAiY29tbWl0LmgiCi0jaW5jbHVkZSAidGFnLmgiCi0jaW5jbHVkZSAiZXhlY19jbWQuaCIKLSNpbmNsdWRlICJwYWNrLmgiCi0jaW5jbHVkZSAic2lkZWJhbmQuaCIKICNpbmNsdWRlICJmZXRjaC1wYWNrLmgiCi0jaW5jbHVkZSAicmVtb3RlLmgiCi0jaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKLSNpbmNsdWRlICJ0cmFuc3BvcnQuaCIKLQotc3RhdGljIGludCB0cmFuc2Zlcl91bnBhY2tfbGltaXQgPSAtMTsKLXN0YXRpYyBpbnQgZmV0Y2hfdW5wYWNrX2xpbWl0ID0gLTE7Ci1zdGF0aWMgaW50IHVucGFja19saW1pdCA9IDEwMDsKLXN0YXRpYyBpbnQgcHJlZmVyX29mc19kZWx0YSA9IDE7Ci1zdGF0aWMgaW50IG5vX2RvbmU7Ci1zdGF0aWMgaW50IGZldGNoX2ZzY2tfb2JqZWN0cyA9IC0xOwotc3RhdGljIGludCB0cmFuc2Zlcl9mc2NrX29iamVjdHMgPSAtMTsKLXN0YXRpYyBzdHJ1Y3QgZmV0Y2hfcGFja19hcmdzIGFyZ3MgPSB7Ci0JLyogLnVwbG9hZHBhY2sgPSAqLyAiZ2l0LXVwbG9hZC1wYWNrIiwKLX07CiAKIHN0YXRpYyBjb25zdCBjaGFyIGZldGNoX3BhY2tfdXNhZ2VbXSA9CiAiZ2l0IGZldGNoLXBhY2sgWy0tYWxsXSBbLS1zdGRpbl0gWy0tcXVpZXR8LXFdIFstLWtlZXB8LWtdIFstLXRoaW5dICIKICJbLS1pbmNsdWRlLXRhZ10gWy0tdXBsb2FkLXBhY2s9PGdpdC11cGxvYWQtcGFjaz5dIFstLWRlcHRoPTxuPl0gIgogIlstLW5vLXByb2dyZXNzXSBbLXZdIFs8aG9zdD46XTxkaXJlY3Rvcnk+IFs8cmVmcz4uLi5dIjsKIAotI2RlZmluZSBDT01QTEVURQkoMVUgPDwgMCkKLSNkZWZpbmUgQ09NTU9OCQkoMVUgPDwgMSkKLSNkZWZpbmUgQ09NTU9OX1JFRgkoMVUgPDwgMikKLSNkZWZpbmUgU0VFTgkJKDFVIDw8IDMpCi0jZGVmaW5lIFBPUFBFRAkJKDFVIDw8IDQpCi0KLXN0YXRpYyBpbnQgbWFya2VkOwotCi0vKgotICogQWZ0ZXIgc2VuZGluZyB0aGlzIG1hbnkgImhhdmUicyBpZiB3ZSBkbyBub3QgZ2V0IGFueSBuZXcgQUNLICwgd2UKLSAqIGdpdmUgdXAgdHJhdmVyc2luZyBvdXIgaGlzdG9yeS4KLSAqLwotI2RlZmluZSBNQVhfSU5fVkFJTiAyNTYKLQotc3RhdGljIHN0cnVjdCBjb21taXRfbGlzdCAqcmV2X2xpc3Q7Ci1zdGF0aWMgaW50IG5vbl9jb21tb25fcmV2cywgbXVsdGlfYWNrLCB1c2Vfc2lkZWJhbmQ7Ci0KLXN0YXRpYyB2b2lkIHJldl9saXN0X3B1c2goc3RydWN0IGNvbW1pdCAqY29tbWl0LCBpbnQgbWFyaykKK3N0YXRpYyB2b2lkIGFkZF9zb3VnaHRfZW50cnlfbWVtKHN0cnVjdCByZWYgKioqc291Z2h0LCBpbnQgKm5yLCBpbnQgKmFsbG9jLAorCQkJCSBjb25zdCBjaGFyICpuYW1lLCBpbnQgbmFtZWxlbikKIHsKLQlpZiAoIShjb21taXQtPm9iamVjdC5mbGFncyAmIG1hcmspKSB7Ci0JCWNvbW1pdC0+b2JqZWN0LmZsYWdzIHw9IG1hcms7CisJc3RydWN0IHJlZiAqcmVmID0geGNhbGxvYygxLCBzaXplb2YoKnJlZikgKyBuYW1lbGVuICsgMSk7CiAKLQkJaWYgKCEoY29tbWl0LT5vYmplY3QucGFyc2VkKSkKLQkJCWlmIChwYXJzZV9jb21taXQoY29tbWl0KSkKLQkJCQlyZXR1cm47Ci0KLQkJY29tbWl0X2xpc3RfaW5zZXJ0X2J5X2RhdGUoY29tbWl0LCAmcmV2X2xpc3QpOwotCi0JCWlmICghKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgQ09NTU9OKSkKLQkJCW5vbl9jb21tb25fcmV2cysrOwotCX0KKwltZW1jcHkocmVmLT5uYW1lLCBuYW1lLCBuYW1lbGVuKTsKKwlyZWYtPm5hbWVbbmFtZWxlbl0gPSAnXDAnOworCSgqbnIpKys7CisJQUxMT0NfR1JPVygqc291Z2h0LCAqbnIsICphbGxvYyk7CisJKCpzb3VnaHQpWypuciAtIDFdID0gcmVmOwogfQogCi1zdGF0aWMgaW50IHJldl9saXN0X2luc2VydF9yZWYoY29uc3QgY2hhciAqcmVmbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgaW50IGZsYWcsIHZvaWQgKmNiX2RhdGEpCitzdGF0aWMgdm9pZCBhZGRfc291Z2h0X2VudHJ5KHN0cnVjdCByZWYgKioqc291Z2h0LCBpbnQgKm5yLCBpbnQgKmFsbG9jLAorCQkJICAgICBjb25zdCBjaGFyICpzdHJpbmcpCiB7Ci0Jc3RydWN0IG9iamVjdCAqbyA9IGRlcmVmX3RhZyhwYXJzZV9vYmplY3Qoc2hhMSksIHJlZm5hbWUsIDApOwotCi0JaWYgKG8gJiYgby0+dHlwZSA9PSBPQkpfQ09NTUlUKQotCQlyZXZfbGlzdF9wdXNoKChzdHJ1Y3QgY29tbWl0ICopbywgU0VFTik7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBjbGVhcl9tYXJrcyhjb25zdCBjaGFyICpyZWZuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgZmxhZywgdm9pZCAqY2JfZGF0YSkKLXsKLQlzdHJ1Y3Qgb2JqZWN0ICpvID0gZGVyZWZfdGFnKHBhcnNlX29iamVjdChzaGExKSwgcmVmbmFtZSwgMCk7Ci0KLQlpZiAobyAmJiBvLT50eXBlID09IE9CSl9DT01NSVQpCi0JCWNsZWFyX2NvbW1pdF9tYXJrcygoc3RydWN0IGNvbW1pdCAqKW8sCi0JCQkJICAgQ09NTU9OIHwgQ09NTU9OX1JFRiB8IFNFRU4gfCBQT1BQRUQpOwotCXJldHVybiAwOwotfQotCi0vKgotICAgVGhpcyBmdW5jdGlvbiBtYXJrcyBhIHJldiBhbmQgaXRzIGFuY2VzdG9ycyBhcyBjb21tb24uCi0gICBJbiBzb21lIGNhc2VzLCBpdCBpcyBkZXNpcmFibGUgdG8gbWFyayBvbmx5IHRoZSBhbmNlc3RvcnMgKGZvciBleGFtcGxlCi0gICB3aGVuIG9ubHkgdGhlIHNlcnZlciBkb2VzIG5vdCB5ZXQga25vdyB0aGF0IHRoZXkgYXJlIGNvbW1vbikuCi0qLwotCi1zdGF0aWMgdm9pZCBtYXJrX2NvbW1vbihzdHJ1Y3QgY29tbWl0ICpjb21taXQsCi0JCWludCBhbmNlc3RvcnNfb25seSwgaW50IGRvbnRfcGFyc2UpCi17Ci0JaWYgKGNvbW1pdCAhPSBOVUxMICYmICEoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBDT01NT04pKSB7Ci0JCXN0cnVjdCBvYmplY3QgKm8gPSAoc3RydWN0IG9iamVjdCAqKWNvbW1pdDsKLQotCQlpZiAoIWFuY2VzdG9yc19vbmx5KQotCQkJby0+ZmxhZ3MgfD0gQ09NTU9OOwotCi0JCWlmICghKG8tPmZsYWdzICYgU0VFTikpCi0JCQlyZXZfbGlzdF9wdXNoKGNvbW1pdCwgU0VFTik7Ci0JCWVsc2UgewotCQkJc3RydWN0IGNvbW1pdF9saXN0ICpwYXJlbnRzOwotCi0JCQlpZiAoIWFuY2VzdG9yc19vbmx5ICYmICEoby0+ZmxhZ3MgJiBQT1BQRUQpKQotCQkJCW5vbl9jb21tb25fcmV2cy0tOwotCQkJaWYgKCFvLT5wYXJzZWQgJiYgIWRvbnRfcGFyc2UpCi0JCQkJaWYgKHBhcnNlX2NvbW1pdChjb21taXQpKQotCQkJCQlyZXR1cm47Ci0KLQkJCWZvciAocGFyZW50cyA9IGNvbW1pdC0+cGFyZW50czsKLQkJCQkJcGFyZW50czsKLQkJCQkJcGFyZW50cyA9IHBhcmVudHMtPm5leHQpCi0JCQkJbWFya19jb21tb24ocGFyZW50cy0+aXRlbSwgMCwgZG9udF9wYXJzZSk7Ci0JCX0KLQl9Ci19Ci0KLS8qCi0gIEdldCB0aGUgbmV4dCByZXYgdG8gc2VuZCwgaWdub3JpbmcgdGhlIGNvbW1vbi4KLSovCi0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyICpnZXRfcmV2KHZvaWQpCi17Ci0Jc3RydWN0IGNvbW1pdCAqY29tbWl0ID0gTlVMTDsKLQotCXdoaWxlIChjb21taXQgPT0gTlVMTCkgewotCQl1bnNpZ25lZCBpbnQgbWFyazsKLQkJc3RydWN0IGNvbW1pdF9saXN0ICpwYXJlbnRzOwotCi0JCWlmIChyZXZfbGlzdCA9PSBOVUxMIHx8IG5vbl9jb21tb25fcmV2cyA9PSAwKQotCQkJcmV0dXJuIE5VTEw7Ci0KLQkJY29tbWl0ID0gcmV2X2xpc3QtPml0ZW07Ci0JCWlmICghY29tbWl0LT5vYmplY3QucGFyc2VkKQotCQkJcGFyc2VfY29tbWl0KGNvbW1pdCk7Ci0JCXBhcmVudHMgPSBjb21taXQtPnBhcmVudHM7Ci0KLQkJY29tbWl0LT5vYmplY3QuZmxhZ3MgfD0gUE9QUEVEOwotCQlpZiAoIShjb21taXQtPm9iamVjdC5mbGFncyAmIENPTU1PTikpCi0JCQlub25fY29tbW9uX3JldnMtLTsKLQotCQlpZiAoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBDT01NT04pIHsKLQkJCS8qIGRvIG5vdCBzZW5kICJoYXZlIiwgYW5kIGlnbm9yZSBhbmNlc3RvcnMgKi8KLQkJCWNvbW1pdCA9IE5VTEw7Ci0JCQltYXJrID0gQ09NTU9OIHwgU0VFTjsKLQkJfSBlbHNlIGlmIChjb21taXQtPm9iamVjdC5mbGFncyAmIENPTU1PTl9SRUYpCi0JCQkvKiBzZW5kICJoYXZlIiwgYW5kIGlnbm9yZSBhbmNlc3RvcnMgKi8KLQkJCW1hcmsgPSBDT01NT04gfCBTRUVOOwotCQllbHNlCi0JCQkvKiBzZW5kICJoYXZlIiwgYWxzbyBmb3IgaXRzIGFuY2VzdG9ycyAqLwotCQkJbWFyayA9IFNFRU47Ci0KLQkJd2hpbGUgKHBhcmVudHMpIHsKLQkJCWlmICghKHBhcmVudHMtPml0ZW0tPm9iamVjdC5mbGFncyAmIFNFRU4pKQotCQkJCXJldl9saXN0X3B1c2gocGFyZW50cy0+aXRlbSwgbWFyayk7Ci0JCQlpZiAobWFyayAmIENPTU1PTikKLQkJCQltYXJrX2NvbW1vbihwYXJlbnRzLT5pdGVtLCAxLCAwKTsKLQkJCXBhcmVudHMgPSBwYXJlbnRzLT5uZXh0OwotCQl9Ci0KLQkJcmV2X2xpc3QgPSByZXZfbGlzdC0+bmV4dDsKLQl9Ci0KLQlyZXR1cm4gY29tbWl0LT5vYmplY3Quc2hhMTsKLX0KLQotZW51bSBhY2tfdHlwZSB7Ci0JTkFLID0gMCwKLQlBQ0ssCi0JQUNLX2NvbnRpbnVlLAotCUFDS19jb21tb24sCi0JQUNLX3JlYWR5Ci19OwotCi1zdGF0aWMgdm9pZCBjb25zdW1lX3NoYWxsb3dfbGlzdChpbnQgZmQpCi17Ci0JaWYgKGFyZ3Muc3RhdGVsZXNzX3JwYyAmJiBhcmdzLmRlcHRoID4gMCkgewotCQkvKiBJZiB3ZSBzZW50IGEgZGVwdGggd2Ugd2lsbCBnZXQgYmFjayAiZHVwbGljYXRlIgotCQkgKiBzaGFsbG93IGFuZCB1bnNoYWxsb3cgY29tbWFuZHMgZXZlcnkgdGltZSB0aGVyZQotCQkgKiBpcyBhIGJsb2NrIG9mIGhhdmUgbGluZXMgZXhjaGFuZ2VkLgotCQkgKi8KLQkJY2hhciBsaW5lWzEwMDBdOwotCQl3aGlsZSAocGFja2V0X3JlYWRfbGluZShmZCwgbGluZSwgc2l6ZW9mKGxpbmUpKSkgewotCQkJaWYgKCFwcmVmaXhjbXAobGluZSwgInNoYWxsb3cgIikpCi0JCQkJY29udGludWU7Ci0JCQlpZiAoIXByZWZpeGNtcChsaW5lLCAidW5zaGFsbG93ICIpKQotCQkJCWNvbnRpbnVlOwotCQkJZGllKCJnaXQgZmV0Y2gtcGFjazogZXhwZWN0ZWQgc2hhbGxvdyBsaXN0Iik7Ci0JCX0KLQl9Ci19Ci0KLXN0cnVjdCB3cml0ZV9zaGFsbG93X2RhdGEgewotCXN0cnVjdCBzdHJidWYgKm91dDsKLQlpbnQgdXNlX3BhY2tfcHJvdG9jb2w7Ci0JaW50IGNvdW50OwotfTsKLQotc3RhdGljIGludCB3cml0ZV9vbmVfc2hhbGxvdyhjb25zdCBzdHJ1Y3QgY29tbWl0X2dyYWZ0ICpncmFmdCwgdm9pZCAqY2JfZGF0YSkKLXsKLQlzdHJ1Y3Qgd3JpdGVfc2hhbGxvd19kYXRhICpkYXRhID0gY2JfZGF0YTsKLQljb25zdCBjaGFyICpoZXggPSBzaGExX3RvX2hleChncmFmdC0+c2hhMSk7Ci0JZGF0YS0+Y291bnQrKzsKLQlpZiAoZGF0YS0+dXNlX3BhY2tfcHJvdG9jb2wpCi0JCXBhY2tldF9idWZfd3JpdGUoZGF0YS0+b3V0LCAic2hhbGxvdyAlcyIsIGhleCk7Ci0JZWxzZSB7Ci0JCXN0cmJ1Zl9hZGRzdHIoZGF0YS0+b3V0LCBoZXgpOwotCQlzdHJidWZfYWRkY2goZGF0YS0+b3V0LCAnXG4nKTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgd3JpdGVfc2hhbGxvd19jb21taXRzKHN0cnVjdCBzdHJidWYgKm91dCwgaW50IHVzZV9wYWNrX3Byb3RvY29sKQotewotCXN0cnVjdCB3cml0ZV9zaGFsbG93X2RhdGEgZGF0YTsKLQlkYXRhLm91dCA9IG91dDsKLQlkYXRhLnVzZV9wYWNrX3Byb3RvY29sID0gdXNlX3BhY2tfcHJvdG9jb2w7Ci0JZGF0YS5jb3VudCA9IDA7Ci0JZm9yX2VhY2hfY29tbWl0X2dyYWZ0KHdyaXRlX29uZV9zaGFsbG93LCAmZGF0YSk7Ci0JcmV0dXJuIGRhdGEuY291bnQ7Ci19Ci0KLXN0YXRpYyBlbnVtIGFja190eXBlIGdldF9hY2soaW50IGZkLCB1bnNpZ25lZCBjaGFyICpyZXN1bHRfc2hhMSkKLXsKLQlzdGF0aWMgY2hhciBsaW5lWzEwMDBdOwotCWludCBsZW4gPSBwYWNrZXRfcmVhZF9saW5lKGZkLCBsaW5lLCBzaXplb2YobGluZSkpOwotCi0JaWYgKCFsZW4pCi0JCWRpZSgiZ2l0IGZldGNoLXBhY2s6IGV4cGVjdGVkIEFDSy9OQUssIGdvdCBFT0YiKTsKLQlpZiAobGluZVtsZW4tMV0gPT0gJ1xuJykKLQkJbGluZVstLWxlbl0gPSAwOwotCWlmICghc3RyY21wKGxpbmUsICJOQUsiKSkKLQkJcmV0dXJuIE5BSzsKLQlpZiAoIXByZWZpeGNtcChsaW5lLCAiQUNLICIpKSB7Ci0JCWlmICghZ2V0X3NoYTFfaGV4KGxpbmUrNCwgcmVzdWx0X3NoYTEpKSB7Ci0JCQlpZiAoc3Ryc3RyKGxpbmUrNDUsICJjb250aW51ZSIpKQotCQkJCXJldHVybiBBQ0tfY29udGludWU7Ci0JCQlpZiAoc3Ryc3RyKGxpbmUrNDUsICJjb21tb24iKSkKLQkJCQlyZXR1cm4gQUNLX2NvbW1vbjsKLQkJCWlmIChzdHJzdHIobGluZSs0NSwgInJlYWR5IikpCi0JCQkJcmV0dXJuIEFDS19yZWFkeTsKLQkJCXJldHVybiBBQ0s7Ci0JCX0KLQl9Ci0JZGllKCJnaXQgZmV0Y2hfcGFjazogZXhwZWN0ZWQgQUNLL05BSywgZ290ICclcyciLCBsaW5lKTsKLX0KLQotc3RhdGljIHZvaWQgc2VuZF9yZXF1ZXN0KGludCBmZCwgc3RydWN0IHN0cmJ1ZiAqYnVmKQotewotCWlmIChhcmdzLnN0YXRlbGVzc19ycGMpIHsKLQkJc2VuZF9zaWRlYmFuZChmZCwgLTEsIGJ1Zi0+YnVmLCBidWYtPmxlbiwgTEFSR0VfUEFDS0VUX01BWCk7Ci0JCXBhY2tldF9mbHVzaChmZCk7Ci0JfSBlbHNlCi0JCXNhZmVfd3JpdGUoZmQsIGJ1Zi0+YnVmLCBidWYtPmxlbik7Ci19Ci0KLXN0YXRpYyB2b2lkIGluc2VydF9vbmVfYWx0ZXJuYXRlX3JlZihjb25zdCBzdHJ1Y3QgcmVmICpyZWYsIHZvaWQgKnVudXNlZCkKLXsKLQlyZXZfbGlzdF9pbnNlcnRfcmVmKE5VTEwsIHJlZi0+b2xkX3NoYTEsIDAsIE5VTEwpOwotfQotCi0jZGVmaW5lIElOSVRJQUxfRkxVU0ggMTYKLSNkZWZpbmUgUElQRVNBRkVfRkxVU0ggMzIKLSNkZWZpbmUgTEFSR0VfRkxVU0ggMTAyNAotCi1zdGF0aWMgaW50IG5leHRfZmx1c2goaW50IGNvdW50KQotewotCWludCBmbHVzaF9saW1pdCA9IGFyZ3Muc3RhdGVsZXNzX3JwYyA/IExBUkdFX0ZMVVNIIDogUElQRVNBRkVfRkxVU0g7Ci0KLQlpZiAoY291bnQgPCBmbHVzaF9saW1pdCkKLQkJY291bnQgPDw9IDE7Ci0JZWxzZQotCQljb3VudCArPSBmbHVzaF9saW1pdDsKLQlyZXR1cm4gY291bnQ7Ci19Ci0KLXN0YXRpYyBpbnQgZmluZF9jb21tb24oaW50IGZkWzJdLCB1bnNpZ25lZCBjaGFyICpyZXN1bHRfc2hhMSwKLQkJICAgICAgIHN0cnVjdCByZWYgKnJlZnMpCi17Ci0JaW50IGZldGNoaW5nOwotCWludCBjb3VudCA9IDAsIGZsdXNoZXMgPSAwLCBmbHVzaF9hdCA9IElOSVRJQUxfRkxVU0gsIHJldHZhbDsKLQljb25zdCB1bnNpZ25lZCBjaGFyICpzaGExOwotCXVuc2lnbmVkIGluX3ZhaW4gPSAwOwotCWludCBnb3RfY29udGludWUgPSAwOwotCWludCBnb3RfcmVhZHkgPSAwOwotCXN0cnVjdCBzdHJidWYgcmVxX2J1ZiA9IFNUUkJVRl9JTklUOwotCXNpemVfdCBzdGF0ZV9sZW4gPSAwOwotCi0JaWYgKGFyZ3Muc3RhdGVsZXNzX3JwYyAmJiBtdWx0aV9hY2sgPT0gMSkKLQkJZGllKCItLXN0YXRlbGVzcy1ycGMgcmVxdWlyZXMgbXVsdGlfYWNrX2RldGFpbGVkIik7Ci0JaWYgKG1hcmtlZCkKLQkJZm9yX2VhY2hfcmVmKGNsZWFyX21hcmtzLCBOVUxMKTsKLQltYXJrZWQgPSAxOwotCi0JZm9yX2VhY2hfcmVmKHJldl9saXN0X2luc2VydF9yZWYsIE5VTEwpOwotCWZvcl9lYWNoX2FsdGVybmF0ZV9yZWYoaW5zZXJ0X29uZV9hbHRlcm5hdGVfcmVmLCBOVUxMKTsKLQotCWZldGNoaW5nID0gMDsKLQlmb3IgKCA7IHJlZnMgOyByZWZzID0gcmVmcy0+bmV4dCkgewotCQl1bnNpZ25lZCBjaGFyICpyZW1vdGUgPSByZWZzLT5vbGRfc2hhMTsKLQkJY29uc3QgY2hhciAqcmVtb3RlX2hleDsKLQkJc3RydWN0IG9iamVjdCAqbzsKLQotCQkvKgotCQkgKiBJZiB0aGF0IG9iamVjdCBpcyBjb21wbGV0ZSAoaS5lLiBpdCBpcyBhbiBhbmNlc3RvciBvZiBhCi0JCSAqIGxvY2FsIHJlZiksIHdlIHRlbGwgdGhlbSB3ZSBoYXZlIGl0IGJ1dCBkbyBub3QgaGF2ZSB0bwotCQkgKiB0ZWxsIHRoZW0gYWJvdXQgaXRzIGFuY2VzdG9ycywgd2hpY2ggdGhleSBhbHJlYWR5IGtub3cKLQkJICogYWJvdXQuCi0JCSAqCi0JCSAqIFdlIHVzZSBsb29rdXBfb2JqZWN0IGhlcmUgYmVjYXVzZSB3ZSBhcmUgb25seQotCQkgKiBpbnRlcmVzdGVkIGluIHRoZSBjYXNlIHdlICprbm93KiB0aGUgb2JqZWN0IGlzCi0JCSAqIHJlYWNoYWJsZSBhbmQgd2UgaGF2ZSBhbHJlYWR5IHNjYW5uZWQgaXQuCi0JCSAqLwotCQlpZiAoKChvID0gbG9va3VwX29iamVjdChyZW1vdGUpKSAhPSBOVUxMKSAmJgotCQkJCShvLT5mbGFncyAmIENPTVBMRVRFKSkgewotCQkJY29udGludWU7Ci0JCX0KLQotCQlyZW1vdGVfaGV4ID0gc2hhMV90b19oZXgocmVtb3RlKTsKLQkJaWYgKCFmZXRjaGluZykgewotCQkJc3RydWN0IHN0cmJ1ZiBjID0gU1RSQlVGX0lOSVQ7Ci0JCQlpZiAobXVsdGlfYWNrID09IDIpICAgICBzdHJidWZfYWRkc3RyKCZjLCAiIG11bHRpX2Fja19kZXRhaWxlZCIpOwotCQkJaWYgKG11bHRpX2FjayA9PSAxKSAgICAgc3RyYnVmX2FkZHN0cigmYywgIiBtdWx0aV9hY2siKTsKLQkJCWlmIChub19kb25lKSAgICAgICAgICAgIHN0cmJ1Zl9hZGRzdHIoJmMsICIgbm8tZG9uZSIpOwotCQkJaWYgKHVzZV9zaWRlYmFuZCA9PSAyKSAgc3RyYnVmX2FkZHN0cigmYywgIiBzaWRlLWJhbmQtNjRrIik7Ci0JCQlpZiAodXNlX3NpZGViYW5kID09IDEpICBzdHJidWZfYWRkc3RyKCZjLCAiIHNpZGUtYmFuZCIpOwotCQkJaWYgKGFyZ3MudXNlX3RoaW5fcGFjaykgc3RyYnVmX2FkZHN0cigmYywgIiB0aGluLXBhY2siKTsKLQkJCWlmIChhcmdzLm5vX3Byb2dyZXNzKSAgIHN0cmJ1Zl9hZGRzdHIoJmMsICIgbm8tcHJvZ3Jlc3MiKTsKLQkJCWlmIChhcmdzLmluY2x1ZGVfdGFnKSAgIHN0cmJ1Zl9hZGRzdHIoJmMsICIgaW5jbHVkZS10YWciKTsKLQkJCWlmIChwcmVmZXJfb2ZzX2RlbHRhKSAgIHN0cmJ1Zl9hZGRzdHIoJmMsICIgb2ZzLWRlbHRhIik7Ci0JCQlwYWNrZXRfYnVmX3dyaXRlKCZyZXFfYnVmLCAid2FudCAlcyVzXG4iLCByZW1vdGVfaGV4LCBjLmJ1Zik7Ci0JCQlzdHJidWZfcmVsZWFzZSgmYyk7Ci0JCX0gZWxzZQotCQkJcGFja2V0X2J1Zl93cml0ZSgmcmVxX2J1ZiwgIndhbnQgJXNcbiIsIHJlbW90ZV9oZXgpOwotCQlmZXRjaGluZysrOwotCX0KLQotCWlmICghZmV0Y2hpbmcpIHsKLQkJc3RyYnVmX3JlbGVhc2UoJnJlcV9idWYpOwotCQlwYWNrZXRfZmx1c2goZmRbMV0pOwotCQlyZXR1cm4gMTsKLQl9Ci0KLQlpZiAoaXNfcmVwb3NpdG9yeV9zaGFsbG93KCkpCi0JCXdyaXRlX3NoYWxsb3dfY29tbWl0cygmcmVxX2J1ZiwgMSk7Ci0JaWYgKGFyZ3MuZGVwdGggPiAwKQotCQlwYWNrZXRfYnVmX3dyaXRlKCZyZXFfYnVmLCAiZGVlcGVuICVkIiwgYXJncy5kZXB0aCk7Ci0JcGFja2V0X2J1Zl9mbHVzaCgmcmVxX2J1Zik7Ci0Jc3RhdGVfbGVuID0gcmVxX2J1Zi5sZW47Ci0KLQlpZiAoYXJncy5kZXB0aCA+IDApIHsKLQkJY2hhciBsaW5lWzEwMjRdOwotCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwotCi0JCXNlbmRfcmVxdWVzdChmZFsxXSwgJnJlcV9idWYpOwotCQl3aGlsZSAocGFja2V0X3JlYWRfbGluZShmZFswXSwgbGluZSwgc2l6ZW9mKGxpbmUpKSkgewotCQkJaWYgKCFwcmVmaXhjbXAobGluZSwgInNoYWxsb3cgIikpIHsKLQkJCQlpZiAoZ2V0X3NoYTFfaGV4KGxpbmUgKyA4LCBzaGExKSkKLQkJCQkJZGllKCJpbnZhbGlkIHNoYWxsb3cgbGluZTogJXMiLCBsaW5lKTsKLQkJCQlyZWdpc3Rlcl9zaGFsbG93KHNoYTEpOwotCQkJCWNvbnRpbnVlOwotCQkJfQotCQkJaWYgKCFwcmVmaXhjbXAobGluZSwgInVuc2hhbGxvdyAiKSkgewotCQkJCWlmIChnZXRfc2hhMV9oZXgobGluZSArIDEwLCBzaGExKSkKLQkJCQkJZGllKCJpbnZhbGlkIHVuc2hhbGxvdyBsaW5lOiAlcyIsIGxpbmUpOwotCQkJCWlmICghbG9va3VwX29iamVjdChzaGExKSkKLQkJCQkJZGllKCJvYmplY3Qgbm90IGZvdW5kOiAlcyIsIGxpbmUpOwotCQkJCS8qIG1ha2Ugc3VyZSB0aGF0IGl0IGlzIHBhcnNlZCBhcyBzaGFsbG93ICovCi0JCQkJaWYgKCFwYXJzZV9vYmplY3Qoc2hhMSkpCi0JCQkJCWRpZSgiZXJyb3IgaW4gb2JqZWN0OiAlcyIsIGxpbmUpOwotCQkJCWlmICh1bnJlZ2lzdGVyX3NoYWxsb3coc2hhMSkpCi0JCQkJCWRpZSgibm8gc2hhbGxvdyBmb3VuZDogJXMiLCBsaW5lKTsKLQkJCQljb250aW51ZTsKLQkJCX0KLQkJCWRpZSgiZXhwZWN0ZWQgc2hhbGxvdy91bnNoYWxsb3csIGdvdCAlcyIsIGxpbmUpOwotCQl9Ci0JfSBlbHNlIGlmICghYXJncy5zdGF0ZWxlc3NfcnBjKQotCQlzZW5kX3JlcXVlc3QoZmRbMV0sICZyZXFfYnVmKTsKLQotCWlmICghYXJncy5zdGF0ZWxlc3NfcnBjKSB7Ci0JCS8qIElmIHdlIGFyZW4ndCB1c2luZyB0aGUgc3RhdGVsZXNzLXJwYyBpbnRlcmZhY2UKLQkJICogd2UgZG9uJ3QgbmVlZCB0byByZXRhaW4gdGhlIGhlYWRlcnMuCi0JCSAqLwotCQlzdHJidWZfc2V0bGVuKCZyZXFfYnVmLCAwKTsKLQkJc3RhdGVfbGVuID0gMDsKLQl9Ci0KLQlmbHVzaGVzID0gMDsKLQlyZXR2YWwgPSAtMTsKLQl3aGlsZSAoKHNoYTEgPSBnZXRfcmV2KCkpKSB7Ci0JCXBhY2tldF9idWZfd3JpdGUoJnJlcV9idWYsICJoYXZlICVzXG4iLCBzaGExX3RvX2hleChzaGExKSk7Ci0JCWlmIChhcmdzLnZlcmJvc2UpCi0JCQlmcHJpbnRmKHN0ZGVyciwgImhhdmUgJXNcbiIsIHNoYTFfdG9faGV4KHNoYTEpKTsKLQkJaW5fdmFpbisrOwotCQlpZiAoZmx1c2hfYXQgPD0gKytjb3VudCkgewotCQkJaW50IGFjazsKLQotCQkJcGFja2V0X2J1Zl9mbHVzaCgmcmVxX2J1Zik7Ci0JCQlzZW5kX3JlcXVlc3QoZmRbMV0sICZyZXFfYnVmKTsKLQkJCXN0cmJ1Zl9zZXRsZW4oJnJlcV9idWYsIHN0YXRlX2xlbik7Ci0JCQlmbHVzaGVzKys7Ci0JCQlmbHVzaF9hdCA9IG5leHRfZmx1c2goY291bnQpOwotCi0JCQkvKgotCQkJICogV2Uga2VlcCBvbmUgd2luZG93ICJhaGVhZCIgb2YgdGhlIG90aGVyIHNpZGUsIGFuZAotCQkJICogd2lsbCB3YWl0IGZvciBhbiBBQ0sgb25seSBvbiB0aGUgbmV4dCBvbmUKLQkJCSAqLwotCQkJaWYgKCFhcmdzLnN0YXRlbGVzc19ycGMgJiYgY291bnQgPT0gSU5JVElBTF9GTFVTSCkKLQkJCQljb250aW51ZTsKLQotCQkJY29uc3VtZV9zaGFsbG93X2xpc3QoZmRbMF0pOwotCQkJZG8gewotCQkJCWFjayA9IGdldF9hY2soZmRbMF0sIHJlc3VsdF9zaGExKTsKLQkJCQlpZiAoYXJncy52ZXJib3NlICYmIGFjaykKLQkJCQkJZnByaW50ZihzdGRlcnIsICJnb3QgYWNrICVkICVzXG4iLCBhY2ssCi0JCQkJCQkJc2hhMV90b19oZXgocmVzdWx0X3NoYTEpKTsKLQkJCQlzd2l0Y2ggKGFjaykgewotCQkJCWNhc2UgQUNLOgotCQkJCQlmbHVzaGVzID0gMDsKLQkJCQkJbXVsdGlfYWNrID0gMDsKLQkJCQkJcmV0dmFsID0gMDsKLQkJCQkJZ290byBkb25lOwotCQkJCWNhc2UgQUNLX2NvbW1vbjoKLQkJCQljYXNlIEFDS19yZWFkeToKLQkJCQljYXNlIEFDS19jb250aW51ZTogewotCQkJCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQgPQotCQkJCQkJbG9va3VwX2NvbW1pdChyZXN1bHRfc2hhMSk7Ci0JCQkJCWlmICghY29tbWl0KQotCQkJCQkJZGllKCJpbnZhbGlkIGNvbW1pdCAlcyIsIHNoYTFfdG9faGV4KHJlc3VsdF9zaGExKSk7Ci0JCQkJCWlmIChhcmdzLnN0YXRlbGVzc19ycGMKLQkJCQkJICYmIGFjayA9PSBBQ0tfY29tbW9uCi0JCQkJCSAmJiAhKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgQ09NTU9OKSkgewotCQkJCQkJLyogV2UgbmVlZCB0byByZXBsYXkgdGhlIGhhdmUgZm9yIHRoaXMgb2JqZWN0Ci0JCQkJCQkgKiBvbiB0aGUgbmV4dCBSUEMgcmVxdWVzdCBzbyB0aGUgcGVlciBrbm93cwotCQkJCQkJICogaXQgaXMgaW4gY29tbW9uIHdpdGggdXMuCi0JCQkJCQkgKi8KLQkJCQkJCWNvbnN0IGNoYXIgKmhleCA9IHNoYTFfdG9faGV4KHJlc3VsdF9zaGExKTsKLQkJCQkJCXBhY2tldF9idWZfd3JpdGUoJnJlcV9idWYsICJoYXZlICVzXG4iLCBoZXgpOwotCQkJCQkJc3RhdGVfbGVuID0gcmVxX2J1Zi5sZW47Ci0JCQkJCX0KLQkJCQkJbWFya19jb21tb24oY29tbWl0LCAwLCAxKTsKLQkJCQkJcmV0dmFsID0gMDsKLQkJCQkJaW5fdmFpbiA9IDA7Ci0JCQkJCWdvdF9jb250aW51ZSA9IDE7Ci0JCQkJCWlmIChhY2sgPT0gQUNLX3JlYWR5KSB7Ci0JCQkJCQlyZXZfbGlzdCA9IE5VTEw7Ci0JCQkJCQlnb3RfcmVhZHkgPSAxOwotCQkJCQl9Ci0JCQkJCWJyZWFrOwotCQkJCQl9Ci0JCQkJfQotCQkJfSB3aGlsZSAoYWNrKTsKLQkJCWZsdXNoZXMtLTsKLQkJCWlmIChnb3RfY29udGludWUgJiYgTUFYX0lOX1ZBSU4gPCBpbl92YWluKSB7Ci0JCQkJaWYgKGFyZ3MudmVyYm9zZSkKLQkJCQkJZnByaW50ZihzdGRlcnIsICJnaXZpbmcgdXBcbiIpOwotCQkJCWJyZWFrOyAvKiBnaXZlIHVwICovCi0JCQl9Ci0JCX0KLQl9Ci1kb25lOgotCWlmICghZ290X3JlYWR5IHx8ICFub19kb25lKSB7Ci0JCXBhY2tldF9idWZfd3JpdGUoJnJlcV9idWYsICJkb25lXG4iKTsKLQkJc2VuZF9yZXF1ZXN0KGZkWzFdLCAmcmVxX2J1Zik7Ci0JfQotCWlmIChhcmdzLnZlcmJvc2UpCi0JCWZwcmludGYoc3RkZXJyLCAiZG9uZVxuIik7Ci0JaWYgKHJldHZhbCAhPSAwKSB7Ci0JCW11bHRpX2FjayA9IDA7Ci0JCWZsdXNoZXMrKzsKLQl9Ci0Jc3RyYnVmX3JlbGVhc2UoJnJlcV9idWYpOwotCi0JY29uc3VtZV9zaGFsbG93X2xpc3QoZmRbMF0pOwotCXdoaWxlIChmbHVzaGVzIHx8IG11bHRpX2FjaykgewotCQlpbnQgYWNrID0gZ2V0X2FjayhmZFswXSwgcmVzdWx0X3NoYTEpOwotCQlpZiAoYWNrKSB7Ci0JCQlpZiAoYXJncy52ZXJib3NlKQotCQkJCWZwcmludGYoc3RkZXJyLCAiZ290IGFjayAoJWQpICVzXG4iLCBhY2ssCi0JCQkJCXNoYTFfdG9faGV4KHJlc3VsdF9zaGExKSk7Ci0JCQlpZiAoYWNrID09IEFDSykKLQkJCQlyZXR1cm4gMDsKLQkJCW11bHRpX2FjayA9IDE7Ci0JCQljb250aW51ZTsKLQkJfQotCQlmbHVzaGVzLS07Ci0JfQotCS8qIGl0IGlzIG5vIGVycm9yIHRvIGZldGNoIGludG8gYSBjb21wbGV0ZWx5IGVtcHR5IHJlcG8gKi8KLQlyZXR1cm4gY291bnQgPyByZXR2YWwgOiAwOwotfQotCi1zdGF0aWMgc3RydWN0IGNvbW1pdF9saXN0ICpjb21wbGV0ZTsKLQotc3RhdGljIGludCBtYXJrX2NvbXBsZXRlKGNvbnN0IGNoYXIgKnJlZm5hbWUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmbGFnLCB2b2lkICpjYl9kYXRhKQotewotCXN0cnVjdCBvYmplY3QgKm8gPSBwYXJzZV9vYmplY3Qoc2hhMSk7Ci0KLQl3aGlsZSAobyAmJiBvLT50eXBlID09IE9CSl9UQUcpIHsKLQkJc3RydWN0IHRhZyAqdCA9IChzdHJ1Y3QgdGFnICopIG87Ci0JCWlmICghdC0+dGFnZ2VkKQotCQkJYnJlYWs7IC8qIGJyb2tlbiByZXBvc2l0b3J5ICovCi0JCW8tPmZsYWdzIHw9IENPTVBMRVRFOwotCQlvID0gcGFyc2Vfb2JqZWN0KHQtPnRhZ2dlZC0+c2hhMSk7Ci0JfQotCWlmIChvICYmIG8tPnR5cGUgPT0gT0JKX0NPTU1JVCkgewotCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQgPSAoc3RydWN0IGNvbW1pdCAqKW87Ci0JCWlmICghKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgQ09NUExFVEUpKSB7Ci0JCQljb21taXQtPm9iamVjdC5mbGFncyB8PSBDT01QTEVURTsKLQkJCWNvbW1pdF9saXN0X2luc2VydF9ieV9kYXRlKGNvbW1pdCwgJmNvbXBsZXRlKTsKLQkJfQotCX0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgbWFya19yZWNlbnRfY29tcGxldGVfY29tbWl0cyh1bnNpZ25lZCBsb25nIGN1dG9mZikKLXsKLQl3aGlsZSAoY29tcGxldGUgJiYgY3V0b2ZmIDw9IGNvbXBsZXRlLT5pdGVtLT5kYXRlKSB7Ci0JCWlmIChhcmdzLnZlcmJvc2UpCi0JCQlmcHJpbnRmKHN0ZGVyciwgIk1hcmtpbmcgJXMgYXMgY29tcGxldGVcbiIsCi0JCQkJc2hhMV90b19oZXgoY29tcGxldGUtPml0ZW0tPm9iamVjdC5zaGExKSk7Ci0JCXBvcF9tb3N0X3JlY2VudF9jb21taXQoJmNvbXBsZXRlLCBDT01QTEVURSk7Ci0JfQotfQotCi1zdGF0aWMgdm9pZCBmaWx0ZXJfcmVmcyhzdHJ1Y3QgcmVmICoqcmVmcywgaW50IG5yX21hdGNoLCBjaGFyICoqbWF0Y2gpCi17Ci0Jc3RydWN0IHJlZiAqKnJldHVybl9yZWZzOwotCXN0cnVjdCByZWYgKm5ld2xpc3QgPSBOVUxMOwotCXN0cnVjdCByZWYgKipuZXd0YWlsID0gJm5ld2xpc3Q7Ci0Jc3RydWN0IHJlZiAqcmVmLCAqbmV4dDsKLQlzdHJ1Y3QgcmVmICpmYXN0YXJyYXlbMzJdOwotCWludCBtYXRjaF9wb3M7Ci0KLQlpZiAobnJfbWF0Y2ggJiYgIWFyZ3MuZmV0Y2hfYWxsKSB7Ci0JCWlmIChBUlJBWV9TSVpFKGZhc3RhcnJheSkgPCBucl9tYXRjaCkKLQkJCXJldHVybl9yZWZzID0geGNhbGxvYyhucl9tYXRjaCwgc2l6ZW9mKHN0cnVjdCByZWYgKikpOwotCQllbHNlIHsKLQkJCXJldHVybl9yZWZzID0gZmFzdGFycmF5OwotCQkJbWVtc2V0KHJldHVybl9yZWZzLCAwLCBzaXplb2Yoc3RydWN0IHJlZiAqKSAqIG5yX21hdGNoKTsKLQkJfQotCX0KLQllbHNlCi0JCXJldHVybl9yZWZzID0gTlVMTDsKLQotCW1hdGNoX3BvcyA9IDA7Ci0JZm9yIChyZWYgPSAqcmVmczsgcmVmOyByZWYgPSBuZXh0KSB7Ci0JCW5leHQgPSByZWYtPm5leHQ7Ci0JCWlmICghbWVtY21wKHJlZi0+bmFtZSwgInJlZnMvIiwgNSkgJiYKLQkJICAgIGNoZWNrX3JlZm5hbWVfZm9ybWF0KHJlZi0+bmFtZSArIDUsIDApKQotCQkJOyAvKiB0cmFzaCAqLwotCQllbHNlIGlmIChhcmdzLmZldGNoX2FsbCAmJgotCQkJICghYXJncy5kZXB0aCB8fCBwcmVmaXhjbXAocmVmLT5uYW1lLCAicmVmcy90YWdzLyIpICkpIHsKLQkJCSpuZXd0YWlsID0gcmVmOwotCQkJcmVmLT5uZXh0ID0gTlVMTDsKLQkJCW5ld3RhaWwgPSAmcmVmLT5uZXh0OwotCQkJY29udGludWU7Ci0JCX0KLQkJZWxzZSB7Ci0JCQlpbnQgY21wID0gLTE7Ci0JCQl3aGlsZSAobWF0Y2hfcG9zIDwgbnJfbWF0Y2gpIHsKLQkJCQljbXAgPSBzdHJjbXAocmVmLT5uYW1lLCBtYXRjaFttYXRjaF9wb3NdKTsKLQkJCQlpZiAoY21wIDwgMCkgLyogZGVmaW5pdGVseSBkbyBub3QgaGF2ZSBpdCAqLwotCQkJCQlicmVhazsKLQkJCQllbHNlIGlmIChjbXAgPT0gMCkgeyAvKiBkZWZpbml0ZWx5IGhhdmUgaXQgKi8KLQkJCQkJbWF0Y2hbbWF0Y2hfcG9zXVswXSA9ICdcMCc7Ci0JCQkJCXJldHVybl9yZWZzW21hdGNoX3Bvc10gPSByZWY7Ci0JCQkJCWJyZWFrOwotCQkJCX0KLQkJCQllbHNlIC8qIG1pZ2h0IGhhdmUgaXQ7IGtlZXAgbG9va2luZyAqLwotCQkJCQltYXRjaF9wb3MrKzsKLQkJCX0KLQkJCWlmICghY21wKQotCQkJCWNvbnRpbnVlOyAvKiB3ZSB3aWxsIGxpbmsgaXQgbGF0ZXIgKi8KLQkJfQotCQlmcmVlKHJlZik7Ci0JfQotCi0JaWYgKCFhcmdzLmZldGNoX2FsbCkgewotCQlpbnQgaTsKLQkJZm9yIChpID0gMDsgaSA8IG5yX21hdGNoOyBpKyspIHsKLQkJCXJlZiA9IHJldHVybl9yZWZzW2ldOwotCQkJaWYgKHJlZikgewotCQkJCSpuZXd0YWlsID0gcmVmOwotCQkJCXJlZi0+bmV4dCA9IE5VTEw7Ci0JCQkJbmV3dGFpbCA9ICZyZWYtPm5leHQ7Ci0JCQl9Ci0JCX0KLQkJaWYgKHJldHVybl9yZWZzICE9IGZhc3RhcnJheSkKLQkJCWZyZWUocmV0dXJuX3JlZnMpOwotCX0KLQkqcmVmcyA9IG5ld2xpc3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIG1hcmtfYWx0ZXJuYXRlX2NvbXBsZXRlKGNvbnN0IHN0cnVjdCByZWYgKnJlZiwgdm9pZCAqdW51c2VkKQotewotCW1hcmtfY29tcGxldGUoTlVMTCwgcmVmLT5vbGRfc2hhMSwgMCwgTlVMTCk7Ci19Ci0KLXN0YXRpYyBpbnQgZXZlcnl0aGluZ19sb2NhbChzdHJ1Y3QgcmVmICoqcmVmcywgaW50IG5yX21hdGNoLCBjaGFyICoqbWF0Y2gpCi17Ci0Jc3RydWN0IHJlZiAqcmVmOwotCWludCByZXR2YWw7Ci0JdW5zaWduZWQgbG9uZyBjdXRvZmYgPSAwOwotCi0Jc2F2ZV9jb21taXRfYnVmZmVyID0gMDsKLQotCWZvciAocmVmID0gKnJlZnM7IHJlZjsgcmVmID0gcmVmLT5uZXh0KSB7Ci0JCXN0cnVjdCBvYmplY3QgKm87Ci0KLQkJbyA9IHBhcnNlX29iamVjdChyZWYtPm9sZF9zaGExKTsKLQkJaWYgKCFvKQotCQkJY29udGludWU7Ci0KLQkJLyogV2UgYWxyZWFkeSBoYXZlIGl0IC0tIHdoaWNoIG1heSBtZWFuIHRoYXQgd2Ugd2VyZQotCQkgKiBpbiBzeW5jIHdpdGggdGhlIG90aGVyIHNpZGUgYXQgc29tZSB0aW1lIGFmdGVyCi0JCSAqIHRoYXQgKGl0IGlzIE9LIGlmIHdlIGd1ZXNzIHdyb25nIGhlcmUpLgotCQkgKi8KLQkJaWYgKG8tPnR5cGUgPT0gT0JKX0NPTU1JVCkgewotCQkJc3RydWN0IGNvbW1pdCAqY29tbWl0ID0gKHN0cnVjdCBjb21taXQgKilvOwotCQkJaWYgKCFjdXRvZmYgfHwgY3V0b2ZmIDwgY29tbWl0LT5kYXRlKQotCQkJCWN1dG9mZiA9IGNvbW1pdC0+ZGF0ZTsKLQkJfQotCX0KLQotCWlmICghYXJncy5kZXB0aCkgewotCQlmb3JfZWFjaF9yZWYobWFya19jb21wbGV0ZSwgTlVMTCk7Ci0JCWZvcl9lYWNoX2FsdGVybmF0ZV9yZWYobWFya19hbHRlcm5hdGVfY29tcGxldGUsIE5VTEwpOwotCQlpZiAoY3V0b2ZmKQotCQkJbWFya19yZWNlbnRfY29tcGxldGVfY29tbWl0cyhjdXRvZmYpOwotCX0KLQotCS8qCi0JICogTWFyayBhbGwgY29tcGxldGUgcmVtb3RlIHJlZnMgYXMgY29tbW9uIHJlZnMuCi0JICogRG9uJ3QgbWFyayB0aGVtIGNvbW1vbiB5ZXQ7IHRoZSBzZXJ2ZXIgaGFzIHRvIGJlIHRvbGQgc28gZmlyc3QuCi0JICovCi0JZm9yIChyZWYgPSAqcmVmczsgcmVmOyByZWYgPSByZWYtPm5leHQpIHsKLQkJc3RydWN0IG9iamVjdCAqbyA9IGRlcmVmX3RhZyhsb29rdXBfb2JqZWN0KHJlZi0+b2xkX3NoYTEpLAotCQkJCQkgICAgIE5VTEwsIDApOwotCi0JCWlmICghbyB8fCBvLT50eXBlICE9IE9CSl9DT01NSVQgfHwgIShvLT5mbGFncyAmIENPTVBMRVRFKSkKLQkJCWNvbnRpbnVlOwotCi0JCWlmICghKG8tPmZsYWdzICYgU0VFTikpIHsKLQkJCXJldl9saXN0X3B1c2goKHN0cnVjdCBjb21taXQgKilvLCBDT01NT05fUkVGIHwgU0VFTik7Ci0KLQkJCW1hcmtfY29tbW9uKChzdHJ1Y3QgY29tbWl0ICopbywgMSwgMSk7Ci0JCX0KLQl9Ci0KLQlmaWx0ZXJfcmVmcyhyZWZzLCBucl9tYXRjaCwgbWF0Y2gpOwotCi0JZm9yIChyZXR2YWwgPSAxLCByZWYgPSAqcmVmczsgcmVmIDsgcmVmID0gcmVmLT5uZXh0KSB7Ci0JCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnJlbW90ZSA9IHJlZi0+b2xkX3NoYTE7Ci0JCXVuc2lnbmVkIGNoYXIgbG9jYWxbMjBdOwotCQlzdHJ1Y3Qgb2JqZWN0ICpvOwotCi0JCW8gPSBsb29rdXBfb2JqZWN0KHJlbW90ZSk7Ci0JCWlmICghbyB8fCAhKG8tPmZsYWdzICYgQ09NUExFVEUpKSB7Ci0JCQlyZXR2YWwgPSAwOwotCQkJaWYgKCFhcmdzLnZlcmJvc2UpCi0JCQkJY29udGludWU7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkid2FudCAlcyAoJXMpXG4iLCBzaGExX3RvX2hleChyZW1vdGUpLAotCQkJCXJlZi0+bmFtZSk7Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCWhhc2hjcHkocmVmLT5uZXdfc2hhMSwgbG9jYWwpOwotCQlpZiAoIWFyZ3MudmVyYm9zZSkKLQkJCWNvbnRpbnVlOwotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCSJhbHJlYWR5IGhhdmUgJXMgKCVzKVxuIiwgc2hhMV90b19oZXgocmVtb3RlKSwKLQkJCXJlZi0+bmFtZSk7Ci0JfQotCXJldHVybiByZXR2YWw7Ci19Ci0KLXN0YXRpYyBpbnQgc2lkZWJhbmRfZGVtdXgoaW50IGluLCBpbnQgb3V0LCB2b2lkICpkYXRhKQotewotCWludCAqeGQgPSBkYXRhOwotCi0JaW50IHJldCA9IHJlY3Zfc2lkZWJhbmQoImZldGNoLXBhY2siLCB4ZFswXSwgb3V0KTsKLQljbG9zZShvdXQpOwotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQgZ2V0X3BhY2soaW50IHhkWzJdLCBjaGFyICoqcGFja19sb2NrZmlsZSkKLXsKLQlzdHJ1Y3QgYXN5bmMgZGVtdXg7Ci0JY29uc3QgY2hhciAqYXJndlsyMF07Ci0JY2hhciBrZWVwX2FyZ1syNTZdOwotCWNoYXIgaGRyX2FyZ1syNTZdOwotCWNvbnN0IGNoYXIgKiphdjsKLQlpbnQgZG9fa2VlcCA9IGFyZ3Mua2VlcF9wYWNrOwotCXN0cnVjdCBjaGlsZF9wcm9jZXNzIGNtZDsKLQotCW1lbXNldCgmZGVtdXgsIDAsIHNpemVvZihkZW11eCkpOwotCWlmICh1c2Vfc2lkZWJhbmQpIHsKLQkJLyogeGRbXSBpcyB0YWxraW5nIHdpdGggdXBsb2FkLXBhY2s7IHN1YnByb2Nlc3MgcmVhZHMgZnJvbQotCQkgKiB4ZFswXSwgc3BpdHMgb3V0IGJhbmQjMiB0byBzdGRlcnIsIGFuZCBmZWVkcyB1cyBiYW5kIzEKLQkJICogdGhyb3VnaCBkZW11eC0+b3V0LgotCQkgKi8KLQkJZGVtdXgucHJvYyA9IHNpZGViYW5kX2RlbXV4OwotCQlkZW11eC5kYXRhID0geGQ7Ci0JCWRlbXV4Lm91dCA9IC0xOwotCQlpZiAoc3RhcnRfYXN5bmMoJmRlbXV4KSkKLQkJCWRpZSgiZmV0Y2gtcGFjazogdW5hYmxlIHRvIGZvcmsgb2ZmIHNpZGViYW5kIgotCQkJICAgICIgZGVtdWx0aXBsZXhlciIpOwotCX0KLQllbHNlCi0JCWRlbXV4Lm91dCA9IHhkWzBdOwotCi0JbWVtc2V0KCZjbWQsIDAsIHNpemVvZihjbWQpKTsKLQljbWQuYXJndiA9IGFyZ3Y7Ci0JYXYgPSBhcmd2OwotCSpoZHJfYXJnID0gMDsKLQlpZiAoIWFyZ3Mua2VlcF9wYWNrICYmIHVucGFja19saW1pdCkgewotCQlzdHJ1Y3QgcGFja19oZWFkZXIgaGVhZGVyOwotCi0JCWlmIChyZWFkX3BhY2tfaGVhZGVyKGRlbXV4Lm91dCwgJmhlYWRlcikpCi0JCQlkaWUoInByb3RvY29sIGVycm9yOiBiYWQgcGFjayBoZWFkZXIiKTsKLQkJc25wcmludGYoaGRyX2FyZywgc2l6ZW9mKGhkcl9hcmcpLAotCQkJICItLXBhY2tfaGVhZGVyPSUiUFJJdTMyIiwlIlBSSXUzMiwKLQkJCSBudG9obChoZWFkZXIuaGRyX3ZlcnNpb24pLCBudG9obChoZWFkZXIuaGRyX2VudHJpZXMpKTsKLQkJaWYgKG50b2hsKGhlYWRlci5oZHJfZW50cmllcykgPCB1bnBhY2tfbGltaXQpCi0JCQlkb19rZWVwID0gMDsKLQkJZWxzZQotCQkJZG9fa2VlcCA9IDE7Ci0JfQotCi0JaWYgKGRvX2tlZXApIHsKLQkJaWYgKHBhY2tfbG9ja2ZpbGUpCi0JCQljbWQub3V0ID0gLTE7Ci0JCSphdisrID0gImluZGV4LXBhY2siOwotCQkqYXYrKyA9ICItLXN0ZGluIjsKLQkJaWYgKCFhcmdzLnF1aWV0ICYmICFhcmdzLm5vX3Byb2dyZXNzKQotCQkJKmF2KysgPSAiLXYiOwotCQlpZiAoYXJncy51c2VfdGhpbl9wYWNrKQotCQkJKmF2KysgPSAiLS1maXgtdGhpbiI7Ci0JCWlmIChhcmdzLmxvY2tfcGFjayB8fCB1bnBhY2tfbGltaXQpIHsKLQkJCWludCBzID0gc3ByaW50ZihrZWVwX2FyZywKLQkJCQkJIi0ta2VlcD1mZXRjaC1wYWNrICUiUFJJdU1BWCAiIG9uICIsICh1aW50bWF4X3QpIGdldHBpZCgpKTsKLQkJCWlmIChnZXRob3N0bmFtZShrZWVwX2FyZyArIHMsIHNpemVvZihrZWVwX2FyZykgLSBzKSkKLQkJCQlzdHJjcHkoa2VlcF9hcmcgKyBzLCAibG9jYWxob3N0Iik7Ci0JCQkqYXYrKyA9IGtlZXBfYXJnOwotCQl9Ci0JfQotCWVsc2UgewotCQkqYXYrKyA9ICJ1bnBhY2stb2JqZWN0cyI7Ci0JCWlmIChhcmdzLnF1aWV0IHx8IGFyZ3Mubm9fcHJvZ3Jlc3MpCi0JCQkqYXYrKyA9ICItcSI7Ci0JfQotCWlmICgqaGRyX2FyZykKLQkJKmF2KysgPSBoZHJfYXJnOwotCWlmIChmZXRjaF9mc2NrX29iamVjdHMgPj0gMAotCSAgICA/IGZldGNoX2ZzY2tfb2JqZWN0cwotCSAgICA6IHRyYW5zZmVyX2ZzY2tfb2JqZWN0cyA+PSAwCi0JICAgID8gdHJhbnNmZXJfZnNja19vYmplY3RzCi0JICAgIDogMCkKLQkJKmF2KysgPSAiLS1zdHJpY3QiOwotCSphdisrID0gTlVMTDsKLQotCWNtZC5pbiA9IGRlbXV4Lm91dDsKLQljbWQuZ2l0X2NtZCA9IDE7Ci0JaWYgKHN0YXJ0X2NvbW1hbmQoJmNtZCkpCi0JCWRpZSgiZmV0Y2gtcGFjazogdW5hYmxlIHRvIGZvcmsgb2ZmICVzIiwgYXJndlswXSk7Ci0JaWYgKGRvX2tlZXAgJiYgcGFja19sb2NrZmlsZSkgewotCQkqcGFja19sb2NrZmlsZSA9IGluZGV4X3BhY2tfbG9ja2ZpbGUoY21kLm91dCk7Ci0JCWNsb3NlKGNtZC5vdXQpOwotCX0KLQotCWlmIChmaW5pc2hfY29tbWFuZCgmY21kKSkKLQkJZGllKCIlcyBmYWlsZWQiLCBhcmd2WzBdKTsKLQlpZiAodXNlX3NpZGViYW5kICYmIGZpbmlzaF9hc3luYygmZGVtdXgpKQotCQlkaWUoImVycm9yIGluIHNpZGViYW5kIGRlbXVsdGlwbGV4ZXIiKTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHN0cnVjdCByZWYgKmRvX2ZldGNoX3BhY2soaW50IGZkWzJdLAotCQljb25zdCBzdHJ1Y3QgcmVmICpvcmlnX3JlZiwKLQkJaW50IG5yX21hdGNoLAotCQljaGFyICoqbWF0Y2gsCi0JCWNoYXIgKipwYWNrX2xvY2tmaWxlKQotewotCXN0cnVjdCByZWYgKnJlZiA9IGNvcHlfcmVmX2xpc3Qob3JpZ19yZWYpOwotCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07Ci0KLQlzb3J0X3JlZl9saXN0KCZyZWYsIHJlZl9jb21wYXJlX25hbWUpOwotCi0JaWYgKGlzX3JlcG9zaXRvcnlfc2hhbGxvdygpICYmICFzZXJ2ZXJfc3VwcG9ydHMoInNoYWxsb3ciKSkKLQkJZGllKCJTZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBzaGFsbG93IGNsaWVudHMiKTsKLQlpZiAoc2VydmVyX3N1cHBvcnRzKCJtdWx0aV9hY2tfZGV0YWlsZWQiKSkgewotCQlpZiAoYXJncy52ZXJib3NlKQotCQkJZnByaW50ZihzdGRlcnIsICJTZXJ2ZXIgc3VwcG9ydHMgbXVsdGlfYWNrX2RldGFpbGVkXG4iKTsKLQkJbXVsdGlfYWNrID0gMjsKLQkJaWYgKHNlcnZlcl9zdXBwb3J0cygibm8tZG9uZSIpKSB7Ci0JCQlpZiAoYXJncy52ZXJib3NlKQotCQkJCWZwcmludGYoc3RkZXJyLCAiU2VydmVyIHN1cHBvcnRzIG5vLWRvbmVcbiIpOwotCQkJaWYgKGFyZ3Muc3RhdGVsZXNzX3JwYykKLQkJCQlub19kb25lID0gMTsKLQkJfQotCX0KLQllbHNlIGlmIChzZXJ2ZXJfc3VwcG9ydHMoIm11bHRpX2FjayIpKSB7Ci0JCWlmIChhcmdzLnZlcmJvc2UpCi0JCQlmcHJpbnRmKHN0ZGVyciwgIlNlcnZlciBzdXBwb3J0cyBtdWx0aV9hY2tcbiIpOwotCQltdWx0aV9hY2sgPSAxOwotCX0KLQlpZiAoc2VydmVyX3N1cHBvcnRzKCJzaWRlLWJhbmQtNjRrIikpIHsKLQkJaWYgKGFyZ3MudmVyYm9zZSkKLQkJCWZwcmludGYoc3RkZXJyLCAiU2VydmVyIHN1cHBvcnRzIHNpZGUtYmFuZC02NGtcbiIpOwotCQl1c2Vfc2lkZWJhbmQgPSAyOwotCX0KLQllbHNlIGlmIChzZXJ2ZXJfc3VwcG9ydHMoInNpZGUtYmFuZCIpKSB7Ci0JCWlmIChhcmdzLnZlcmJvc2UpCi0JCQlmcHJpbnRmKHN0ZGVyciwgIlNlcnZlciBzdXBwb3J0cyBzaWRlLWJhbmRcbiIpOwotCQl1c2Vfc2lkZWJhbmQgPSAxOwotCX0KLQlpZiAoc2VydmVyX3N1cHBvcnRzKCJvZnMtZGVsdGEiKSkgewotCQlpZiAoYXJncy52ZXJib3NlKQotCQkJZnByaW50ZihzdGRlcnIsICJTZXJ2ZXIgc3VwcG9ydHMgb2ZzLWRlbHRhXG4iKTsKLQl9IGVsc2UKLQkJcHJlZmVyX29mc19kZWx0YSA9IDA7Ci0JaWYgKGV2ZXJ5dGhpbmdfbG9jYWwoJnJlZiwgbnJfbWF0Y2gsIG1hdGNoKSkgewotCQlwYWNrZXRfZmx1c2goZmRbMV0pOwotCQlnb3RvIGFsbF9kb25lOwotCX0KLQlpZiAoZmluZF9jb21tb24oZmQsIHNoYTEsIHJlZikgPCAwKQotCQlpZiAoIWFyZ3Mua2VlcF9wYWNrKQotCQkJLyogV2hlbiBjbG9uaW5nLCBpdCBpcyBub3QgdW51c3VhbCB0byBoYXZlCi0JCQkgKiBubyBjb21tb24gY29tbWl0LgotCQkJICovCi0JCQl3YXJuaW5nKCJubyBjb21tb24gY29tbWl0cyIpOwotCi0JaWYgKGFyZ3Muc3RhdGVsZXNzX3JwYykKLQkJcGFja2V0X2ZsdXNoKGZkWzFdKTsKLQlpZiAoZ2V0X3BhY2soZmQsIHBhY2tfbG9ja2ZpbGUpKQotCQlkaWUoImdpdCBmZXRjaC1wYWNrOiBmZXRjaCBmYWlsZWQuIik7Ci0KLSBhbGxfZG9uZToKLQlyZXR1cm4gcmVmOwotfQotCi1zdGF0aWMgaW50IHJlbW92ZV9kdXBsaWNhdGVzKGludCBucl9oZWFkcywgY2hhciAqKmhlYWRzKQotewotCWludCBzcmMsIGRzdDsKLQotCWlmICghbnJfaGVhZHMpCi0JCXJldHVybiAwOwotCi0JZm9yIChzcmMgPSBkc3QgPSAxOyBzcmMgPCBucl9oZWFkczsgc3JjKyspCi0JCWlmIChzdHJjbXAoaGVhZHNbc3JjXSwgaGVhZHNbZHN0LTFdKSkKLQkJCWhlYWRzW2RzdCsrXSA9IGhlYWRzW3NyY107Ci0JcmV0dXJuIGRzdDsKLX0KLQotc3RhdGljIGludCBmZXRjaF9wYWNrX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKLXsKLQlpZiAoc3RyY21wKHZhciwgImZldGNoLnVucGFja2xpbWl0IikgPT0gMCkgewotCQlmZXRjaF91bnBhY2tfbGltaXQgPSBnaXRfY29uZmlnX2ludCh2YXIsIHZhbHVlKTsKLQkJcmV0dXJuIDA7Ci0JfQotCi0JaWYgKHN0cmNtcCh2YXIsICJ0cmFuc2Zlci51bnBhY2tsaW1pdCIpID09IDApIHsKLQkJdHJhbnNmZXJfdW5wYWNrX2xpbWl0ID0gZ2l0X2NvbmZpZ19pbnQodmFyLCB2YWx1ZSk7Ci0JCXJldHVybiAwOwotCX0KLQotCWlmIChzdHJjbXAodmFyLCAicmVwYWNrLnVzZWRlbHRhYmFzZW9mZnNldCIpID09IDApIHsKLQkJcHJlZmVyX29mc19kZWx0YSA9IGdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKTsKLQkJcmV0dXJuIDA7Ci0JfQotCi0JaWYgKCFzdHJjbXAodmFyLCAiZmV0Y2guZnNja29iamVjdHMiKSkgewotCQlmZXRjaF9mc2NrX29iamVjdHMgPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7Ci0JCXJldHVybiAwOwotCX0KLQotCWlmICghc3RyY21wKHZhciwgInRyYW5zZmVyLmZzY2tvYmplY3RzIikpIHsKLQkJdHJhbnNmZXJfZnNja19vYmplY3RzID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOwotCQlyZXR1cm4gMDsKLQl9Ci0KLQlyZXR1cm4gZ2l0X2RlZmF1bHRfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKLX0KLQotc3RhdGljIHN0cnVjdCBsb2NrX2ZpbGUgbG9jazsKLQotc3RhdGljIHZvaWQgZmV0Y2hfcGFja19zZXR1cCh2b2lkKQotewotCXN0YXRpYyBpbnQgZGlkX3NldHVwOwotCWlmIChkaWRfc2V0dXApCi0JCXJldHVybjsKLQlnaXRfY29uZmlnKGZldGNoX3BhY2tfY29uZmlnLCBOVUxMKTsKLQlpZiAoMCA8PSB0cmFuc2Zlcl91bnBhY2tfbGltaXQpCi0JCXVucGFja19saW1pdCA9IHRyYW5zZmVyX3VucGFja19saW1pdDsKLQllbHNlIGlmICgwIDw9IGZldGNoX3VucGFja19saW1pdCkKLQkJdW5wYWNrX2xpbWl0ID0gZmV0Y2hfdW5wYWNrX2xpbWl0OwotCWRpZF9zZXR1cCA9IDE7CisJYWRkX3NvdWdodF9lbnRyeV9tZW0oc291Z2h0LCBuciwgYWxsb2MsIHN0cmluZywgc3RybGVuKHN0cmluZykpOwogfQogCiBpbnQgY21kX2ZldGNoX3BhY2soaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCkBAIC05MDIsMTUgKzMwLDE5IEBACiAJaW50IGksIHJldDsKIAlzdHJ1Y3QgcmVmICpyZWYgPSBOVUxMOwogCWNvbnN0IGNoYXIgKmRlc3QgPSBOVUxMOwotCWludCBhbGxvY19oZWFkcyA9IDAsIG5yX2hlYWRzID0gMDsKLQljaGFyICoqaGVhZHMgPSBOVUxMOworCXN0cnVjdCByZWYgKipzb3VnaHQgPSBOVUxMOworCWludCBucl9zb3VnaHQgPSAwLCBhbGxvY19zb3VnaHQgPSAwOwogCWludCBmZFsyXTsKIAljaGFyICpwYWNrX2xvY2tmaWxlID0gTlVMTDsKIAljaGFyICoqcGFja19sb2NrZmlsZV9wdHIgPSBOVUxMOwogCXN0cnVjdCBjaGlsZF9wcm9jZXNzICpjb25uOworCXN0cnVjdCBmZXRjaF9wYWNrX2FyZ3MgYXJnczsKIAogCXBhY2tldF90cmFjZV9pZGVudGl0eSgiZmV0Y2gtcGFjayIpOwogCisJbWVtc2V0KCZhcmdzLCAwLCBzaXplb2YoYXJncykpOworCWFyZ3MudXBsb2FkcGFjayA9ICJnaXQtdXBsb2FkLXBhY2siOworCiAJZm9yIChpID0gMTsgaSA8IGFyZ2MgJiYgKmFyZ3ZbaV0gPT0gJy0nOyBpKyspIHsKIAkJY29uc3QgY2hhciAqYXJnID0gYXJndltpXTsKIApAQCAtOTgwLDMyICsxMTIsMjUgQEAKIAkgKiBDb3B5IHJlZnMgZnJvbSBjbWRsaW5lIHRvIGdyb3dhYmxlIGxpc3QsIHRoZW4gYXBwZW5kIGFueQogCSAqIHJlZnMgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQ6CiAJICovCi0JQUxMT0NfR1JPVyhoZWFkcywgYXJnYyAtIGksIGFsbG9jX2hlYWRzKTsKIAlmb3IgKDsgaSA8IGFyZ2M7IGkrKykKLQkJaGVhZHNbbnJfaGVhZHMrK10gPSB4c3RyZHVwKGFyZ3ZbaV0pOworCQlhZGRfc291Z2h0X2VudHJ5KCZzb3VnaHQsICZucl9zb3VnaHQsICZhbGxvY19zb3VnaHQsIGFyZ3ZbaV0pOwogCWlmIChhcmdzLnN0ZGluX3JlZnMpIHsKIAkJaWYgKGFyZ3Muc3RhdGVsZXNzX3JwYykgewogCQkJLyogaW4gc3RhdGVsZXNzIFJQQyBtb2RlIHdlIHVzZSBwa3QtbGluZSB0byByZWFkCiAJCQkgKiBmcm9tIHN0ZGluLCB1bnRpbCB3ZSBnZXQgYSBmbHVzaCBwYWNrZXQKIAkJCSAqLwotCQkJc3RhdGljIGNoYXIgbGluZVsxMDAwXTsKIAkJCWZvciAoOzspIHsKLQkJCQlpbnQgbiA9IHBhY2tldF9yZWFkX2xpbmUoMCwgbGluZSwgc2l6ZW9mKGxpbmUpKTsKLQkJCQlpZiAoIW4pCisJCQkJY2hhciAqbGluZSA9IHBhY2tldF9yZWFkX2xpbmUoMCwgTlVMTCk7CisJCQkJaWYgKCFsaW5lKQogCQkJCQlicmVhazsKLQkJCQlpZiAobGluZVtuLTFdID09ICdcbicpCi0JCQkJCW4tLTsKLQkJCQlBTExPQ19HUk9XKGhlYWRzLCBucl9oZWFkcyArIDEsIGFsbG9jX2hlYWRzKTsKLQkJCQloZWFkc1tucl9oZWFkcysrXSA9IHhtZW1kdXB6KGxpbmUsIG4pOworCQkJCWFkZF9zb3VnaHRfZW50cnkoJnNvdWdodCwgJm5yX3NvdWdodCwgICZhbGxvY19zb3VnaHQsIGxpbmUpOwogCQkJfQogCQl9CiAJCWVsc2UgewogCQkJLyogcmVhZCBmcm9tIHN0ZGluIG9uZSByZWYgcGVyIGxpbmUsIHVudGlsIEVPRiAqLwogCQkJc3RydWN0IHN0cmJ1ZiBsaW5lID0gU1RSQlVGX0lOSVQ7Ci0JCQl3aGlsZSAoc3RyYnVmX2dldGxpbmUoJmxpbmUsIHN0ZGluLCAnXG4nKSAhPSBFT0YpIHsKLQkJCQlBTExPQ19HUk9XKGhlYWRzLCBucl9oZWFkcyArIDEsIGFsbG9jX2hlYWRzKTsKLQkJCQloZWFkc1tucl9oZWFkcysrXSA9IHN0cmJ1Zl9kZXRhY2goJmxpbmUsIE5VTEwpOwotCQkJfQorCQkJd2hpbGUgKHN0cmJ1Zl9nZXRsaW5lKCZsaW5lLCBzdGRpbiwgJ1xuJykgIT0gRU9GKQorCQkJCWFkZF9zb3VnaHRfZW50cnkoJnNvdWdodCwgJm5yX3NvdWdodCwgJmFsbG9jX3NvdWdodCwgbGluZS5idWYpOwogCQkJc3RyYnVmX3JlbGVhc2UoJmxpbmUpOwogCQl9CiAJfQpAQCAtMTAxOSwxMCArMTQ0LDEwIEBACiAJCQkJICAgYXJncy52ZXJib3NlID8gQ09OTkVDVF9WRVJCT1NFIDogMCk7CiAJfQogCi0JZ2V0X3JlbW90ZV9oZWFkcyhmZFswXSwgJnJlZiwgMCwgTlVMTCk7CisJZ2V0X3JlbW90ZV9oZWFkcyhmZFswXSwgTlVMTCwgMCwgJnJlZiwgMCwgTlVMTCk7CiAKIAlyZWYgPSBmZXRjaF9wYWNrKCZhcmdzLCBmZCwgY29ubiwgcmVmLCBkZXN0LAotCQlucl9oZWFkcywgaGVhZHMsIHBhY2tfbG9ja2ZpbGVfcHRyKTsKKwkJCSBzb3VnaHQsIG5yX3NvdWdodCwgcGFja19sb2NrZmlsZV9wdHIpOwogCWlmIChwYWNrX2xvY2tmaWxlKSB7CiAJCXByaW50ZigibG9jayAlc1xuIiwgcGFja19sb2NrZmlsZSk7CiAJCWZmbHVzaChzdGRvdXQpOwpAQCAtMTAzMCwyMSArMTU1LDIzIEBACiAJY2xvc2UoZmRbMF0pOwogCWNsb3NlKGZkWzFdKTsKIAlpZiAoZmluaXNoX2Nvbm5lY3QoY29ubikpCi0JCXJlZiA9IE5VTEw7CisJCXJldHVybiAxOworCiAJcmV0ID0gIXJlZjsKIAotCWlmICghcmV0ICYmIG5yX2hlYWRzKSB7Ci0JCS8qIElmIHRoZSBoZWFkcyB0byBwdWxsIHdlcmUgZ2l2ZW4sIHdlIHNob3VsZCBoYXZlCi0JCSAqIGNvbnN1bWVkIGFsbCBvZiB0aGVtIGJ5IG1hdGNoaW5nIHRoZSByZW1vdGUuCi0JCSAqIE90aGVyd2lzZSwgJ2dpdCBmZXRjaCByZW1vdGUgbm8tc3VjaC1yZWYnIHdvdWxkCi0JCSAqIHNpbGVudGx5IHN1Y2NlZWQgd2l0aG91dCBpc3N1aW5nIGFuIGVycm9yLgotCQkgKi8KLQkJZm9yIChpID0gMDsgaSA8IG5yX2hlYWRzOyBpKyspCi0JCQlpZiAoaGVhZHNbaV0gJiYgaGVhZHNbaV1bMF0pIHsKLQkJCQllcnJvcigibm8gc3VjaCByZW1vdGUgcmVmICVzIiwgaGVhZHNbaV0pOwotCQkJCXJldCA9IDE7Ci0JCQl9CisJLyoKKwkgKiBJZiB0aGUgaGVhZHMgdG8gcHVsbCB3ZXJlIGdpdmVuLCB3ZSBzaG91bGQgaGF2ZSBjb25zdW1lZAorCSAqIGFsbCBvZiB0aGVtIGJ5IG1hdGNoaW5nIHRoZSByZW1vdGUuICBPdGhlcndpc2UsICdnaXQgZmV0Y2gKKwkgKiByZW1vdGUgbm8tc3VjaC1yZWYnIHdvdWxkIHNpbGVudGx5IHN1Y2NlZWQgd2l0aG91dCBpc3N1aW5nCisJICogYW4gZXJyb3IuCisJICovCisJZm9yIChpID0gMDsgaSA8IG5yX3NvdWdodDsgaSsrKSB7CisJCWlmICghc291Z2h0W2ldIHx8IHNvdWdodFtpXS0+bWF0Y2hlZCkKKwkJCWNvbnRpbnVlOworCQllcnJvcigibm8gc3VjaCByZW1vdGUgcmVmICVzIiwgc291Z2h0W2ldLT5uYW1lKTsKKwkJcmV0ID0gMTsKIAl9CisKIAl3aGlsZSAocmVmKSB7CiAJCXByaW50ZigiJXMgJXNcbiIsCiAJCSAgICAgICBzaGExX3RvX2hleChyZWYtPm9sZF9zaGExKSwgcmVmLT5uYW1lKTsKQEAgLTEwNTMsNzIgKzE4MCwzIEBACiAKIAlyZXR1cm4gcmV0OwogfQotCi1zdGF0aWMgaW50IGNvbXBhcmVfaGVhZHMoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLXsKLQlyZXR1cm4gc3RyY21wKCooY29uc3QgY2hhciAqKilhLCAqKGNvbnN0IGNoYXIgKiopYik7Ci19Ci0KLXN0cnVjdCByZWYgKmZldGNoX3BhY2soc3RydWN0IGZldGNoX3BhY2tfYXJncyAqbXlfYXJncywKLQkJICAgICAgIGludCBmZFtdLCBzdHJ1Y3QgY2hpbGRfcHJvY2VzcyAqY29ubiwKLQkJICAgICAgIGNvbnN0IHN0cnVjdCByZWYgKnJlZiwKLQkJY29uc3QgY2hhciAqZGVzdCwKLQkJaW50IG5yX2hlYWRzLAotCQljaGFyICoqaGVhZHMsCi0JCWNoYXIgKipwYWNrX2xvY2tmaWxlKQotewotCXN0cnVjdCBzdGF0IHN0OwotCXN0cnVjdCByZWYgKnJlZl9jcHk7Ci0KLQlmZXRjaF9wYWNrX3NldHVwKCk7Ci0JaWYgKCZhcmdzICE9IG15X2FyZ3MpCi0JCW1lbWNweSgmYXJncywgbXlfYXJncywgc2l6ZW9mKGFyZ3MpKTsKLQlpZiAoYXJncy5kZXB0aCA+IDApIHsKLQkJaWYgKHN0YXQoZ2l0X3BhdGgoInNoYWxsb3ciKSwgJnN0KSkKLQkJCXN0LnN0X210aW1lID0gMDsKLQl9Ci0KLQlpZiAoaGVhZHMgJiYgbnJfaGVhZHMpIHsKLQkJcXNvcnQoaGVhZHMsIG5yX2hlYWRzLCBzaXplb2YoKmhlYWRzKSwgY29tcGFyZV9oZWFkcyk7Ci0JCW5yX2hlYWRzID0gcmVtb3ZlX2R1cGxpY2F0ZXMobnJfaGVhZHMsIGhlYWRzKTsKLQl9Ci0KLQlpZiAoIXJlZikgewotCQlwYWNrZXRfZmx1c2goZmRbMV0pOwotCQlkaWUoIm5vIG1hdGNoaW5nIHJlbW90ZSBoZWFkIik7Ci0JfQotCXJlZl9jcHkgPSBkb19mZXRjaF9wYWNrKGZkLCByZWYsIG5yX2hlYWRzLCBoZWFkcywgcGFja19sb2NrZmlsZSk7Ci0KLQlpZiAoYXJncy5kZXB0aCA+IDApIHsKLQkJc3RydWN0IGNhY2hlX3RpbWUgbXRpbWU7Ci0JCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKLQkJY2hhciAqc2hhbGxvdyA9IGdpdF9wYXRoKCJzaGFsbG93Iik7Ci0JCWludCBmZDsKLQotCQltdGltZS5zZWMgPSBzdC5zdF9tdGltZTsKLQkJbXRpbWUubnNlYyA9IFNUX01USU1FX05TRUMoc3QpOwotCQlpZiAoc3RhdChzaGFsbG93LCAmc3QpKSB7Ci0JCQlpZiAobXRpbWUuc2VjKQotCQkJCWRpZSgic2hhbGxvdyBmaWxlIHdhcyByZW1vdmVkIGR1cmluZyBmZXRjaCIpOwotCQl9IGVsc2UgaWYgKHN0LnN0X210aW1lICE9IG10aW1lLnNlYwotI2lmZGVmIFVTRV9OU0VDCi0JCQkJfHwgU1RfTVRJTUVfTlNFQyhzdCkgIT0gbXRpbWUubnNlYwotI2VuZGlmCi0JCQkgICkKLQkJCWRpZSgic2hhbGxvdyBmaWxlIHdhcyBjaGFuZ2VkIGR1cmluZyBmZXRjaCIpOwotCi0JCWZkID0gaG9sZF9sb2NrX2ZpbGVfZm9yX3VwZGF0ZSgmbG9jaywgc2hhbGxvdywKLQkJCQkJICAgICAgIExPQ0tfRElFX09OX0VSUk9SKTsKLQkJaWYgKCF3cml0ZV9zaGFsbG93X2NvbW1pdHMoJnNiLCAwKQotCQkgfHwgd3JpdGVfaW5fZnVsbChmZCwgc2IuYnVmLCBzYi5sZW4pICE9IHNiLmxlbikgewotCQkJdW5saW5rX29yX3dhcm4oc2hhbGxvdyk7Ci0JCQlyb2xsYmFja19sb2NrX2ZpbGUoJmxvY2spOwotCQl9IGVsc2UgewotCQkJY29tbWl0X2xvY2tfZmlsZSgmbG9jayk7Ci0JCX0KLQkJc3RyYnVmX3JlbGVhc2UoJnNiKTsKLQl9Ci0KLQlyZXByZXBhcmVfcGFja2VkX2dpdCgpOwotCXJldHVybiByZWZfY3B5OwotfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9mZXRjaC5jIGIvYnVpbHRpbi9mZXRjaC5jCmluZGV4IGJiOWEwNzQuLjRiNmIxZGYgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vZmV0Y2guYworKysgYi9idWlsdGluL2ZldGNoLmMKQEAgLTE0LDEyICsxNCwxMyBAQAogI2luY2x1ZGUgInRyYW5zcG9ydC5oIgogI2luY2x1ZGUgInN1Ym1vZHVsZS5oIgogI2luY2x1ZGUgImNvbm5lY3RlZC5oIgorI2luY2x1ZGUgImFyZ3YtYXJyYXkuaCIKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBidWlsdGluX2ZldGNoX3VzYWdlW10gPSB7Ci0JImdpdCBmZXRjaCBbPG9wdGlvbnM+XSBbPHJlcG9zaXRvcnk+IFs8cmVmc3BlYz4uLi5dXSIsCi0JImdpdCBmZXRjaCBbPG9wdGlvbnM+XSA8Z3JvdXA+IiwKLQkiZ2l0IGZldGNoIC0tbXVsdGlwbGUgWzxvcHRpb25zPl0gWyg8cmVwb3NpdG9yeT4gfCA8Z3JvdXA+KS4uLl0iLAotCSJnaXQgZmV0Y2ggLS1hbGwgWzxvcHRpb25zPl0iLAorCU5fKCJnaXQgZmV0Y2ggWzxvcHRpb25zPl0gWzxyZXBvc2l0b3J5PiBbPHJlZnNwZWM+Li4uXV0iKSwKKwlOXygiZ2l0IGZldGNoIFs8b3B0aW9ucz5dIDxncm91cD4iKSwKKwlOXygiZ2l0IGZldGNoIC0tbXVsdGlwbGUgWzxvcHRpb25zPl0gWyg8cmVwb3NpdG9yeT4gfCA8Z3JvdXA+KS4uLl0iKSwKKwlOXygiZ2l0IGZldGNoIC0tYWxsIFs8b3B0aW9ucz5dIiksCiAJTlVMTAogfTsKIApAQCAtMzEsNyArMzIsNyBAQAogCiBzdGF0aWMgaW50IGFsbCwgYXBwZW5kLCBkcnlfcnVuLCBmb3JjZSwga2VlcCwgbXVsdGlwbGUsIHBydW5lLCB1cGRhdGVfaGVhZF9vaywgdmVyYm9zaXR5Owogc3RhdGljIGludCBwcm9ncmVzcyA9IC0xLCByZWN1cnNlX3N1Ym1vZHVsZXMgPSBSRUNVUlNFX1NVQk1PRFVMRVNfREVGQVVMVDsKLXN0YXRpYyBpbnQgdGFncyA9IFRBR1NfREVGQVVMVDsKK3N0YXRpYyBpbnQgdGFncyA9IFRBR1NfREVGQVVMVCwgdW5zaGFsbG93Owogc3RhdGljIGNvbnN0IGNoYXIgKmRlcHRoOwogc3RhdGljIGNvbnN0IGNoYXIgKnVwbG9hZF9wYWNrOwogc3RhdGljIHN0cnVjdCBzdHJidWYgZGVmYXVsdF9ybGEgPSBTVFJCVUZfSU5JVDsKQEAgLTU2LDM2ICs1NywzOSBAQAogc3RhdGljIHN0cnVjdCBvcHRpb24gYnVpbHRpbl9mZXRjaF9vcHRpb25zW10gPSB7CiAJT1BUX19WRVJCT1NJVFkoJnZlcmJvc2l0eSksCiAJT1BUX0JPT0xFQU4oMCwgImFsbCIsICZhbGwsCi0JCSAgICAiZmV0Y2ggZnJvbSBhbGwgcmVtb3RlcyIpLAorCQkgICAgTl8oImZldGNoIGZyb20gYWxsIHJlbW90ZXMiKSksCiAJT1BUX0JPT0xFQU4oJ2EnLCAiYXBwZW5kIiwgJmFwcGVuZCwKLQkJICAgICJhcHBlbmQgdG8gLmdpdC9GRVRDSF9IRUFEIGluc3RlYWQgb2Ygb3ZlcndyaXRpbmciKSwKLQlPUFRfU1RSSU5HKDAsICJ1cGxvYWQtcGFjayIsICZ1cGxvYWRfcGFjaywgInBhdGgiLAotCQkgICAicGF0aCB0byB1cGxvYWQgcGFjayBvbiByZW1vdGUgZW5kIiksCi0JT1BUX19GT1JDRSgmZm9yY2UsICJmb3JjZSBvdmVyd3JpdGUgb2YgbG9jYWwgYnJhbmNoIiksCisJCSAgICBOXygiYXBwZW5kIHRvIC5naXQvRkVUQ0hfSEVBRCBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIikpLAorCU9QVF9TVFJJTkcoMCwgInVwbG9hZC1wYWNrIiwgJnVwbG9hZF9wYWNrLCBOXygicGF0aCIpLAorCQkgICBOXygicGF0aCB0byB1cGxvYWQgcGFjayBvbiByZW1vdGUgZW5kIikpLAorCU9QVF9fRk9SQ0UoJmZvcmNlLCBOXygiZm9yY2Ugb3ZlcndyaXRlIG9mIGxvY2FsIGJyYW5jaCIpKSwKIAlPUFRfQk9PTEVBTignbScsICJtdWx0aXBsZSIsICZtdWx0aXBsZSwKLQkJICAgICJmZXRjaCBmcm9tIG11bHRpcGxlIHJlbW90ZXMiKSwKKwkJICAgIE5fKCJmZXRjaCBmcm9tIG11bHRpcGxlIHJlbW90ZXMiKSksCiAJT1BUX1NFVF9JTlQoJ3QnLCAidGFncyIsICZ0YWdzLAotCQkgICAgImZldGNoIGFsbCB0YWdzIGFuZCBhc3NvY2lhdGVkIG9iamVjdHMiLCBUQUdTX1NFVCksCisJCSAgICBOXygiZmV0Y2ggYWxsIHRhZ3MgYW5kIGFzc29jaWF0ZWQgb2JqZWN0cyIpLCBUQUdTX1NFVCksCiAJT1BUX1NFVF9JTlQoJ24nLCBOVUxMLCAmdGFncywKLQkJICAgICJkbyBub3QgZmV0Y2ggYWxsIHRhZ3MgKC0tbm8tdGFncykiLCBUQUdTX1VOU0VUKSwKKwkJICAgIE5fKCJkbyBub3QgZmV0Y2ggYWxsIHRhZ3MgKC0tbm8tdGFncykiKSwgVEFHU19VTlNFVCksCiAJT1BUX0JPT0xFQU4oJ3AnLCAicHJ1bmUiLCAmcHJ1bmUsCi0JCSAgICAicHJ1bmUgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzIG5vIGxvbmdlciBvbiByZW1vdGUiKSwKLQl7IE9QVElPTl9DQUxMQkFDSywgMCwgInJlY3Vyc2Utc3VibW9kdWxlcyIsIE5VTEwsICJvbi1kZW1hbmQiLAotCQkgICAgImNvbnRyb2wgcmVjdXJzaXZlIGZldGNoaW5nIG9mIHN1Ym1vZHVsZXMiLAorCQkgICAgTl8oInBydW5lIHJlbW90ZS10cmFja2luZyBicmFuY2hlcyBubyBsb25nZXIgb24gcmVtb3RlIikpLAorCXsgT1BUSU9OX0NBTExCQUNLLCAwLCAicmVjdXJzZS1zdWJtb2R1bGVzIiwgTlVMTCwgTl8oIm9uLWRlbWFuZCIpLAorCQkgICAgTl8oImNvbnRyb2wgcmVjdXJzaXZlIGZldGNoaW5nIG9mIHN1Ym1vZHVsZXMiKSwKIAkJICAgIFBBUlNFX09QVF9PUFRBUkcsIG9wdGlvbl9wYXJzZV9yZWN1cnNlX3N1Ym1vZHVsZXMgfSwKIAlPUFRfQk9PTEVBTigwLCAiZHJ5LXJ1biIsICZkcnlfcnVuLAotCQkgICAgImRyeSBydW4iKSwKLQlPUFRfQk9PTEVBTignaycsICJrZWVwIiwgJmtlZXAsICJrZWVwIGRvd25sb2FkZWQgcGFjayIpLAorCQkgICAgTl8oImRyeSBydW4iKSksCisJT1BUX0JPT0xFQU4oJ2snLCAia2VlcCIsICZrZWVwLCBOXygia2VlcCBkb3dubG9hZGVkIHBhY2siKSksCiAJT1BUX0JPT0xFQU4oJ3UnLCAidXBkYXRlLWhlYWQtb2siLCAmdXBkYXRlX2hlYWRfb2ssCi0JCSAgICAiYWxsb3cgdXBkYXRpbmcgb2YgSEVBRCByZWYiKSwKLQlPUFRfQk9PTCgwLCAicHJvZ3Jlc3MiLCAmcHJvZ3Jlc3MsICJmb3JjZSBwcm9ncmVzcyByZXBvcnRpbmciKSwKLQlPUFRfU1RSSU5HKDAsICJkZXB0aCIsICZkZXB0aCwgImRlcHRoIiwKLQkJICAgImRlZXBlbiBoaXN0b3J5IG9mIHNoYWxsb3cgY2xvbmUiKSwKLQl7IE9QVElPTl9TVFJJTkcsIDAsICJzdWJtb2R1bGUtcHJlZml4IiwgJnN1Ym1vZHVsZV9wcmVmaXgsICJkaXIiLAotCQkgICAicHJlcGVuZCB0aGlzIHRvIHN1Ym1vZHVsZSBwYXRoIG91dHB1dCIsIFBBUlNFX09QVF9ISURERU4gfSwKKwkJICAgIE5fKCJhbGxvdyB1cGRhdGluZyBvZiBIRUFEIHJlZiIpKSwKKwlPUFRfQk9PTCgwLCAicHJvZ3Jlc3MiLCAmcHJvZ3Jlc3MsIE5fKCJmb3JjZSBwcm9ncmVzcyByZXBvcnRpbmciKSksCisJT1BUX1NUUklORygwLCAiZGVwdGgiLCAmZGVwdGgsIE5fKCJkZXB0aCIpLAorCQkgICBOXygiZGVlcGVuIGhpc3Rvcnkgb2Ygc2hhbGxvdyBjbG9uZSIpKSwKKwl7IE9QVElPTl9TRVRfSU5ULCAwLCAidW5zaGFsbG93IiwgJnVuc2hhbGxvdywgTlVMTCwKKwkJICAgTl8oImNvbnZlcnQgdG8gYSBjb21wbGV0ZSByZXBvc2l0b3J5IiksCisJCSAgIFBBUlNFX09QVF9OT05FRyB8IFBBUlNFX09QVF9OT0FSRywgTlVMTCwgMSB9LAorCXsgT1BUSU9OX1NUUklORywgMCwgInN1Ym1vZHVsZS1wcmVmaXgiLCAmc3VibW9kdWxlX3ByZWZpeCwgTl8oImRpciIpLAorCQkgICBOXygicHJlcGVuZCB0aGlzIHRvIHN1Ym1vZHVsZSBwYXRoIG91dHB1dCIpLCBQQVJTRV9PUFRfSElEREVOIH0sCiAJeyBPUFRJT05fU1RSSU5HLCAwLCAicmVjdXJzZS1zdWJtb2R1bGVzLWRlZmF1bHQiLAogCQkgICAmcmVjdXJzZV9zdWJtb2R1bGVzX2RlZmF1bHQsIE5VTEwsCi0JCSAgICJkZWZhdWx0IG1vZGUgZm9yIHJlY3Vyc2lvbiIsIFBBUlNFX09QVF9ISURERU4gfSwKKwkJICAgTl8oImRlZmF1bHQgbW9kZSBmb3IgcmVjdXJzaW9uIiksIFBBUlNFX09QVF9ISURERU4gfSwKIAlPUFRfRU5EKCkKIH07CiAKQEAgLTI1NSw5ICsyNTksOCBAQAogCWlmICghaGFzaGNtcChyZWYtPm9sZF9zaGExLCByZWYtPm5ld19zaGExKSkgewogCQlpZiAodmVyYm9zaXR5ID4gMCkKIAkJCXN0cmJ1Zl9hZGRmKGRpc3BsYXksICI9ICUtKnMgJS0qcyAtPiAlcyIsCi0JCQkJICAgIFRSQU5TUE9SVF9TVU1NQVJZX1dJRFRILAotCQkJCSAgICBfKCJbdXAgdG8gZGF0ZV0iKSwgUkVGQ09MX1dJRFRILAotCQkJCSAgICByZW1vdGUsIHByZXR0eV9yZWYpOworCQkJCSAgICBUUkFOU1BPUlRfU1VNTUFSWShfKCJbdXAgdG8gZGF0ZV0iKSksCisJCQkJICAgIFJFRkNPTF9XSURUSCwgcmVtb3RlLCBwcmV0dHlfcmVmKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0yNzEsNyArMjc0LDcgQEAKIAkJICovCiAJCXN0cmJ1Zl9hZGRmKGRpc3BsYXksCiAJCQkgICAgXygiISAlLSpzICUtKnMgLT4gJXMgIChjYW4ndCBmZXRjaCBpbiBjdXJyZW50IGJyYW5jaCkiKSwKLQkJCSAgICBUUkFOU1BPUlRfU1VNTUFSWV9XSURUSCwgXygiW3JlamVjdGVkXSIpLAorCQkJICAgIFRSQU5TUE9SVF9TVU1NQVJZKF8oIltyZWplY3RlZF0iKSksCiAJCQkgICAgUkVGQ09MX1dJRFRILCByZW1vdGUsIHByZXR0eV9yZWYpOwogCQlyZXR1cm4gMTsKIAl9CkBAIC0yODIsNyArMjg1LDcgQEAKIAkJciA9IHNfdXBkYXRlX3JlZigidXBkYXRpbmcgdGFnIiwgcmVmLCAwKTsKIAkJc3RyYnVmX2FkZGYoZGlzcGxheSwgIiVjICUtKnMgJS0qcyAtPiAlcyVzIiwKIAkJCSAgICByID8gJyEnIDogJy0nLAotCQkJICAgIFRSQU5TUE9SVF9TVU1NQVJZX1dJRFRILCBfKCJbdGFnIHVwZGF0ZV0iKSwKKwkJCSAgICBUUkFOU1BPUlRfU1VNTUFSWShfKCJbdGFnIHVwZGF0ZV0iKSksCiAJCQkgICAgUkVGQ09MX1dJRFRILCByZW1vdGUsIHByZXR0eV9yZWYsCiAJCQkgICAgciA/IF8oIiAgKHVuYWJsZSB0byB1cGRhdGUgbG9jYWwgcmVmKSIpIDogIiIpOwogCQlyZXR1cm4gcjsKQEAgLTMxNywxMyArMzIwLDEzIEBACiAJCXIgPSBzX3VwZGF0ZV9yZWYobXNnLCByZWYsIDApOwogCQlzdHJidWZfYWRkZihkaXNwbGF5LCAiJWMgJS0qcyAlLSpzIC0+ICVzJXMiLAogCQkJICAgIHIgPyAnIScgOiAnKicsCi0JCQkgICAgVFJBTlNQT1JUX1NVTU1BUllfV0lEVEgsIHdoYXQsCisJCQkgICAgVFJBTlNQT1JUX1NVTU1BUlkod2hhdCksCiAJCQkgICAgUkVGQ09MX1dJRFRILCByZW1vdGUsIHByZXR0eV9yZWYsCiAJCQkgICAgciA/IF8oIiAgKHVuYWJsZSB0byB1cGRhdGUgbG9jYWwgcmVmKSIpIDogIiIpOwogCQlyZXR1cm4gcjsKIAl9CiAKLQlpZiAoaW5fbWVyZ2VfYmFzZXMoY3VycmVudCwgJnVwZGF0ZWQsIDEpKSB7CisJaWYgKGluX21lcmdlX2Jhc2VzKGN1cnJlbnQsIHVwZGF0ZWQpKSB7CiAJCWNoYXIgcXVpY2tyZWZbODNdOwogCQlpbnQgcjsKIAkJc3RyY3B5KHF1aWNrcmVmLCBmaW5kX3VuaXF1ZV9hYmJyZXYoY3VycmVudC0+b2JqZWN0LnNoYTEsIERFRkFVTFRfQUJCUkVWKSk7CkBAIC0zNTcsNyArMzYwLDcgQEAKIAkJcmV0dXJuIHI7CiAJfSBlbHNlIHsKIAkJc3RyYnVmX2FkZGYoZGlzcGxheSwgIiEgJS0qcyAlLSpzIC0+ICVzICAlcyIsCi0JCQkgICAgVFJBTlNQT1JUX1NVTU1BUllfV0lEVEgsIF8oIltyZWplY3RlZF0iKSwKKwkJCSAgICBUUkFOU1BPUlRfU1VNTUFSWShfKCJbcmVqZWN0ZWRdIikpLAogCQkJICAgIFJFRkNPTF9XSURUSCwgcmVtb3RlLCBwcmV0dHlfcmVmLAogCQkJICAgIF8oIihub24tZmFzdC1mb3J3YXJkKSIpKTsKIAkJcmV0dXJuIDE7CkBAIC01NTQsNyArNTU3LDcgQEAKIAkJCXJlc3VsdCB8PSBkZWxldGVfcmVmKHJlZi0+bmFtZSwgTlVMTCwgMCk7CiAJCWlmICh2ZXJib3NpdHkgPj0gMCkgewogCQkJZnByaW50ZihzdGRlcnIsICIgeCAlLSpzICUtKnMgLT4gJXNcbiIsCi0JCQkJVFJBTlNQT1JUX1NVTU1BUllfV0lEVEgsIF8oIltkZWxldGVkXSIpLAorCQkJCVRSQU5TUE9SVF9TVU1NQVJZKF8oIltkZWxldGVkXSIpKSwKIAkJCQlSRUZDT0xfV0lEVEgsIF8oIihub25lKSIpLCBwcmV0dGlmeV9yZWZuYW1lKHJlZi0+bmFtZSkpOwogCQkJd2Fybl9kYW5nbGluZ19zeW1yZWYoc3RkZXJyLCBkYW5nbGluZ19tc2csIHJlZi0+bmFtZSk7CiAJCX0KQEAgLTg0MSwzOCArODQ0LDM5IEBACiAJcmV0dXJuIDE7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZF9vcHRpb25zX3RvX2FyZ3YoaW50ICphcmdjLCBjb25zdCBjaGFyICoqYXJndikKK3N0YXRpYyB2b2lkIGFkZF9vcHRpb25zX3RvX2FyZ3Yoc3RydWN0IGFyZ3ZfYXJyYXkgKmFyZ3YpCiB7CiAJaWYgKGRyeV9ydW4pCi0JCWFyZ3ZbKCphcmdjKSsrXSA9ICItLWRyeS1ydW4iOworCQlhcmd2X2FycmF5X3B1c2goYXJndiwgIi0tZHJ5LXJ1biIpOwogCWlmIChwcnVuZSkKLQkJYXJndlsoKmFyZ2MpKytdID0gIi0tcHJ1bmUiOworCQlhcmd2X2FycmF5X3B1c2goYXJndiwgIi0tcHJ1bmUiKTsKIAlpZiAodXBkYXRlX2hlYWRfb2spCi0JCWFyZ3ZbKCphcmdjKSsrXSA9ICItLXVwZGF0ZS1oZWFkLW9rIjsKKwkJYXJndl9hcnJheV9wdXNoKGFyZ3YsICItLXVwZGF0ZS1oZWFkLW9rIik7CiAJaWYgKGZvcmNlKQotCQlhcmd2WygqYXJnYykrK10gPSAiLS1mb3JjZSI7CisJCWFyZ3ZfYXJyYXlfcHVzaChhcmd2LCAiLS1mb3JjZSIpOwogCWlmIChrZWVwKQotCQlhcmd2WygqYXJnYykrK10gPSAiLS1rZWVwIjsKKwkJYXJndl9hcnJheV9wdXNoKGFyZ3YsICItLWtlZXAiKTsKIAlpZiAocmVjdXJzZV9zdWJtb2R1bGVzID09IFJFQ1VSU0VfU1VCTU9EVUxFU19PTikKLQkJYXJndlsoKmFyZ2MpKytdID0gIi0tcmVjdXJzZS1zdWJtb2R1bGVzIjsKKwkJYXJndl9hcnJheV9wdXNoKGFyZ3YsICItLXJlY3Vyc2Utc3VibW9kdWxlcyIpOwogCWVsc2UgaWYgKHJlY3Vyc2Vfc3VibW9kdWxlcyA9PSBSRUNVUlNFX1NVQk1PRFVMRVNfT05fREVNQU5EKQotCQlhcmd2WygqYXJnYykrK10gPSAiLS1yZWN1cnNlLXN1Ym1vZHVsZXM9b24tZGVtYW5kIjsKKwkJYXJndl9hcnJheV9wdXNoKGFyZ3YsICItLXJlY3Vyc2Utc3VibW9kdWxlcz1vbi1kZW1hbmQiKTsKKwlpZiAodGFncyA9PSBUQUdTX1NFVCkKKwkJYXJndl9hcnJheV9wdXNoKGFyZ3YsICItLXRhZ3MiKTsKKwllbHNlIGlmICh0YWdzID09IFRBR1NfVU5TRVQpCisJCWFyZ3ZfYXJyYXlfcHVzaChhcmd2LCAiLS1uby10YWdzIik7CiAJaWYgKHZlcmJvc2l0eSA+PSAyKQotCQlhcmd2WygqYXJnYykrK10gPSAiLXYiOworCQlhcmd2X2FycmF5X3B1c2goYXJndiwgIi12Iik7CiAJaWYgKHZlcmJvc2l0eSA+PSAxKQotCQlhcmd2WygqYXJnYykrK10gPSAiLXYiOworCQlhcmd2X2FycmF5X3B1c2goYXJndiwgIi12Iik7CiAJZWxzZSBpZiAodmVyYm9zaXR5IDwgMCkKLQkJYXJndlsoKmFyZ2MpKytdID0gIi1xIjsKKwkJYXJndl9hcnJheV9wdXNoKGFyZ3YsICItcSIpOwogCiB9CiAKIHN0YXRpYyBpbnQgZmV0Y2hfbXVsdGlwbGUoc3RydWN0IHN0cmluZ19saXN0ICpsaXN0KQogewogCWludCBpLCByZXN1bHQgPSAwOwotCWNvbnN0IGNoYXIgKmFyZ3ZbMTJdID0geyAiZmV0Y2giLCAiLS1hcHBlbmQiIH07Ci0JaW50IGFyZ2MgPSAyOwotCi0JYWRkX29wdGlvbnNfdG9fYXJndigmYXJnYywgYXJndik7CisJc3RydWN0IGFyZ3ZfYXJyYXkgYXJndiA9IEFSR1ZfQVJSQVlfSU5JVDsKIAogCWlmICghYXBwZW5kICYmICFkcnlfcnVuKSB7CiAJCWludCBlcnJjb2RlID0gdHJ1bmNhdGVfZmV0Y2hfaGVhZCgpOwpAQCAtODgwLDE4ICs4ODQsMjIgQEAKIAkJCXJldHVybiBlcnJjb2RlOwogCX0KIAorCWFyZ3ZfYXJyYXlfcHVzaGwoJmFyZ3YsICJmZXRjaCIsICItLWFwcGVuZCIsIE5VTEwpOworCWFkZF9vcHRpb25zX3RvX2FyZ3YoJmFyZ3YpOworCiAJZm9yIChpID0gMDsgaSA8IGxpc3QtPm5yOyBpKyspIHsKIAkJY29uc3QgY2hhciAqbmFtZSA9IGxpc3QtPml0ZW1zW2ldLnN0cmluZzsKLQkJYXJndlthcmdjXSA9IG5hbWU7Ci0JCWFyZ3ZbYXJnYyArIDFdID0gTlVMTDsKKwkJYXJndl9hcnJheV9wdXNoKCZhcmd2LCBuYW1lKTsKIAkJaWYgKHZlcmJvc2l0eSA+PSAwKQogCQkJcHJpbnRmKF8oIkZldGNoaW5nICVzXG4iKSwgbmFtZSk7Ci0JCWlmIChydW5fY29tbWFuZF92X29wdChhcmd2LCBSVU5fR0lUX0NNRCkpIHsKKwkJaWYgKHJ1bl9jb21tYW5kX3Zfb3B0KGFyZ3YuYXJndiwgUlVOX0dJVF9DTUQpKSB7CiAJCQllcnJvcihfKCJDb3VsZCBub3QgZmV0Y2ggJXMiKSwgbmFtZSk7CiAJCQlyZXN1bHQgPSAxOwogCQl9CisJCWFyZ3ZfYXJyYXlfcG9wKCZhcmd2KTsKIAl9CiAKKwlhcmd2X2FycmF5X2NsZWFyKCZhcmd2KTsKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC05NTQsNiArOTYyLDkgQEAKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3QgbGlzdCA9IFNUUklOR19MSVNUX0lOSVRfTk9EVVA7CiAJc3RydWN0IHJlbW90ZSAqcmVtb3RlOwogCWludCByZXN1bHQgPSAwOworCXN0YXRpYyBjb25zdCBjaGFyICphcmd2X2djX2F1dG9bXSA9IHsKKwkJImdjIiwgIi0tYXV0byIsIE5VTEwsCisJfTsKIAogCXBhY2tldF90cmFjZV9pZGVudGl0eSgiZmV0Y2giKTsKIApAQCAtOTY1LDYgKzk3NiwxOCBAQAogCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIHByZWZpeCwKIAkJCSAgICAgYnVpbHRpbl9mZXRjaF9vcHRpb25zLCBidWlsdGluX2ZldGNoX3VzYWdlLCAwKTsKIAorCWlmICh1bnNoYWxsb3cpIHsKKwkJaWYgKGRlcHRoKQorCQkJZGllKF8oIi0tZGVwdGggYW5kIC0tdW5zaGFsbG93IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIikpOworCQllbHNlIGlmICghaXNfcmVwb3NpdG9yeV9zaGFsbG93KCkpCisJCQlkaWUoXygiLS11bnNoYWxsb3cgb24gYSBjb21wbGV0ZSByZXBvc2l0b3J5IGRvZXMgbm90IG1ha2Ugc2Vuc2UiKSk7CisJCWVsc2UgeworCQkJc3RhdGljIGNoYXIgaW5mX2RlcHRoWzEyXTsKKwkJCXNwcmludGYoaW5mX2RlcHRoLCAiJWQiLCBJTkZJTklURV9ERVBUSCk7CisJCQlkZXB0aCA9IGluZl9kZXB0aDsKKwkJfQorCX0KKwogCWlmIChyZWN1cnNlX3N1Ym1vZHVsZXMgIT0gUkVDVVJTRV9TVUJNT0RVTEVTX09GRikgewogCQlpZiAocmVjdXJzZV9zdWJtb2R1bGVzX2RlZmF1bHQpIHsKIAkJCWludCBhcmcgPSBwYXJzZV9mZXRjaF9yZWN1cnNlX3N1Ym1vZHVsZXNfYXJnKCItLXJlY3Vyc2Utc3VibW9kdWxlcy1kZWZhdWx0IiwgcmVjdXJzZV9zdWJtb2R1bGVzX2RlZmF1bHQpOwpAQCAtMTAwNywxOCArMTAzMCwyMSBAQAogCX0KIAogCWlmICghcmVzdWx0ICYmIChyZWN1cnNlX3N1Ym1vZHVsZXMgIT0gUkVDVVJTRV9TVUJNT0RVTEVTX09GRikpIHsKLQkJY29uc3QgY2hhciAqb3B0aW9uc1sxMF07Ci0JCWludCBudW1fb3B0aW9ucyA9IDA7Ci0JCWFkZF9vcHRpb25zX3RvX2FyZ3YoJm51bV9vcHRpb25zLCBvcHRpb25zKTsKLQkJcmVzdWx0ID0gZmV0Y2hfcG9wdWxhdGVkX3N1Ym1vZHVsZXMobnVtX29wdGlvbnMsIG9wdGlvbnMsCisJCXN0cnVjdCBhcmd2X2FycmF5IG9wdGlvbnMgPSBBUkdWX0FSUkFZX0lOSVQ7CisKKwkJYWRkX29wdGlvbnNfdG9fYXJndigmb3B0aW9ucyk7CisJCXJlc3VsdCA9IGZldGNoX3BvcHVsYXRlZF9zdWJtb2R1bGVzKCZvcHRpb25zLAogCQkJCQkJICAgIHN1Ym1vZHVsZV9wcmVmaXgsCiAJCQkJCQkgICAgcmVjdXJzZV9zdWJtb2R1bGVzLAogCQkJCQkJICAgIHZlcmJvc2l0eSA8IDApOworCQlhcmd2X2FycmF5X2NsZWFyKCZvcHRpb25zKTsKIAl9CiAKIAkvKiBBbGwgbmFtZXMgd2VyZSBzdHJkdXAoKWVkIG9yIHN0cm5kdXAoKWVkICovCiAJbGlzdC5zdHJkdXBfc3RyaW5ncyA9IDE7CiAJc3RyaW5nX2xpc3RfY2xlYXIoJmxpc3QsIDApOwogCisJcnVuX2NvbW1hbmRfdl9vcHQoYXJndl9nY19hdXRvLCBSVU5fR0lUX0NNRCk7CisKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmMgYi9idWlsdGluL2ZtdC1tZXJnZS1tc2cuYwppbmRleCAyYzRkNDM1Li4xYzA0MDcwIDEwMDY0NAotLS0gYS9idWlsdGluL2ZtdC1tZXJnZS1tc2cuYworKysgYi9idWlsdGluL2ZtdC1tZXJnZS1tc2cuYwpAQCAtMTAsNyArMTAsNyBAQAogI2luY2x1ZGUgImdwZy1pbnRlcmZhY2UuaCIKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBmbXRfbWVyZ2VfbXNnX3VzYWdlW10gPSB7Ci0JImdpdCBmbXQtbWVyZ2UtbXNnIFstbSA8bWVzc2FnZT5dIFstLWxvZ1s9PG4+XXwtLW5vLWxvZ10gWy0tZmlsZSA8ZmlsZT5dIiwKKwlOXygiZ2l0IGZtdC1tZXJnZS1tc2cgWy1tIDxtZXNzYWdlPl0gWy0tbG9nWz08bj5dfC0tbm8tbG9nXSBbLS1maWxlIDxmaWxlPl0iKSwKIAlOVUxMCiB9OwogCkBAIC0yMzIsOCArMjMyLDkgQEAKIHsKIAljaGFyICpuYW1lX2J1ZiwgKm5hbWUsICpuYW1lX2VuZDsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqZWxlbTsKLQljb25zdCBjaGFyICpmaWVsZCA9ICh3aGljaCA9PSAnYScpID8gIlxuYXV0aG9yICIgOiAiXG5jb21taXR0ZXIgIjsKKwljb25zdCBjaGFyICpmaWVsZDsKIAorCWZpZWxkID0gKHdoaWNoID09ICdhJykgPyAiXG5hdXRob3IgIiA6ICJcbmNvbW1pdHRlciAiOwogCW5hbWUgPSBzdHJzdHIoY29tbWl0LT5idWZmZXIsIGZpZWxkKTsKIAlpZiAoIW5hbWUpCiAJCXJldHVybjsKQEAgLTI4NiwxMCArMjg3LDEwIEBACiAJY29uc3QgY2hhciAqbWU7CiAKIAlpZiAoa2luZCA9PSAnYScpIHsKLQkJbGFiZWwgPSAiXG4jIEJ5ICI7CisJCWxhYmVsID0gIkJ5IjsKIAkJbWUgPSBnaXRfYXV0aG9yX2luZm8oSURFTlRfTk9fREFURSk7CiAJfSBlbHNlIHsKLQkJbGFiZWwgPSAiXG4jIFZpYSAiOworCQlsYWJlbCA9ICJWaWEiOwogCQltZSA9IGdpdF9jb21taXR0ZXJfaW5mbyhJREVOVF9OT19EQVRFKTsKIAl9CiAKQEAgLTI5OSw3ICszMDAsNyBAQAogCSAgICAgKG1lID0gc2tpcF9wcmVmaXgobWUsIHRoZW0tPml0ZW1zLT5zdHJpbmcpKSAhPSBOVUxMICYmCiAJICAgICBza2lwX3ByZWZpeChtZSwgIiA8IikpKQogCQlyZXR1cm47Ci0Jc3RyYnVmX2FkZHN0cihvdXQsIGxhYmVsKTsKKwlzdHJidWZfYWRkZihvdXQsICJcbiVjICVzICIsIGNvbW1lbnRfbGluZV9jaGFyLCBsYWJlbCk7CiAJYWRkX3Blb3BsZV9jb3VudChvdXQsIHRoZW0pOwogfQogCkBAIC0zMjMsNyArMzI0LDggQEAKIHN0YXRpYyB2b2lkIHNob3J0bG9nKGNvbnN0IGNoYXIgKm5hbWUsCiAJCSAgICAgc3RydWN0IG9yaWdpbl9kYXRhICpvcmlnaW5fZGF0YSwKIAkJICAgICBzdHJ1Y3QgY29tbWl0ICpoZWFkLAotCQkgICAgIHN0cnVjdCByZXZfaW5mbyAqcmV2LCBpbnQgbGltaXQsCisJCSAgICAgc3RydWN0IHJldl9pbmZvICpyZXYsCisJCSAgICAgc3RydWN0IGZtdF9tZXJnZV9tc2dfb3B0cyAqb3B0cywKIAkJICAgICBzdHJ1Y3Qgc3RyYnVmICpvdXQpCiB7CiAJaW50IGksIGNvdW50ID0gMDsKQEAgLTMzNSw2ICszMzcsNyBAQAogCWludCBmbGFncyA9IFVOSU5URVJFU1RJTkcgfCBUUkVFU0FNRSB8IFNFRU4gfCBTSE9XTiB8IEFEREVEOwogCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKIAljb25zdCB1bnNpZ25lZCBjaGFyICpzaGExID0gb3JpZ2luX2RhdGEtPnNoYTE7CisJaW50IGxpbWl0ID0gb3B0cy0+c2hvcnRsb2dfbGVuOwogCiAJYnJhbmNoID0gZGVyZWZfdGFnKHBhcnNlX29iamVjdChzaGExKSwgc2hhMV90b19oZXgoc2hhMSksIDQwKTsKIAlpZiAoIWJyYW5jaCB8fCBicmFuY2gtPnR5cGUgIT0gT0JKX0NPTU1JVCkKQEAgLTM1MSwxMyArMzU0LDE1IEBACiAKIAkJaWYgKGNvbW1pdC0+cGFyZW50cyAmJiBjb21taXQtPnBhcmVudHMtPm5leHQpIHsKIAkJCS8qIGRvIG5vdCBsaXN0IGEgbWVyZ2UgYnV0IGNvdW50IGNvbW1pdHRlciAqLwotCQkJcmVjb3JkX3BlcnNvbignYycsICZjb21taXR0ZXJzLCBjb21taXQpOworCQkJaWYgKG9wdHMtPmNyZWRpdF9wZW9wbGUpCisJCQkJcmVjb3JkX3BlcnNvbignYycsICZjb21taXR0ZXJzLCBjb21taXQpOwogCQkJY29udGludWU7CiAJCX0KLQkJaWYgKCFjb3VudCkKKwkJaWYgKCFjb3VudCAmJiBvcHRzLT5jcmVkaXRfcGVvcGxlKQogCQkJLyogdGhlICd0aXAnIGNvbW1pdHRlciAqLwogCQkJcmVjb3JkX3BlcnNvbignYycsICZjb21taXR0ZXJzLCBjb21taXQpOwotCQlyZWNvcmRfcGVyc29uKCdhJywgJmF1dGhvcnMsIGNvbW1pdCk7CisJCWlmIChvcHRzLT5jcmVkaXRfcGVvcGxlKQorCQkJcmVjb3JkX3BlcnNvbignYScsICZhdXRob3JzLCBjb21taXQpOwogCQljb3VudCsrOwogCQlpZiAoc3ViamVjdHMubnIgPiBsaW1pdCkKIAkJCWNvbnRpbnVlOwpAQCAtMzcyLDcgKzM3Nyw4IEBACiAJCQlzdHJpbmdfbGlzdF9hcHBlbmQoJnN1YmplY3RzLCBzdHJidWZfZGV0YWNoKCZzYiwgTlVMTCkpOwogCX0KIAotCWFkZF9wZW9wbGVfaW5mbyhvdXQsICZhdXRob3JzLCAmY29tbWl0dGVycyk7CisJaWYgKG9wdHMtPmNyZWRpdF9wZW9wbGUpCisJCWFkZF9wZW9wbGVfaW5mbyhvdXQsICZhdXRob3JzLCAmY29tbWl0dGVycyk7CiAJaWYgKGNvdW50ID4gbGltaXQpCiAJCXN0cmJ1Zl9hZGRmKG91dCwgIlxuKiAlczogKCVkIGNvbW1pdHMpXG4iLCBuYW1lLCBjb3VudCk7CiAJZWxzZQpAQCAtNDY0LDcgKzQ3MCw3IEBACiAJc3RyYnVmX2NvbXBsZXRlX2xpbmUodGFnYnVmKTsKIAlpZiAoc2lnLT5sZW4pIHsKIAkJc3RyYnVmX2FkZGNoKHRhZ2J1ZiwgJ1xuJyk7Ci0JCXN0cmJ1Zl9hZGRfbGluZXModGFnYnVmLCAiIyAiLCBzaWctPmJ1Ziwgc2lnLT5sZW4pOworCQlzdHJidWZfYWRkX2NvbW1lbnRlZF9saW5lcyh0YWdidWYsIHNpZy0+YnVmLCBzaWctPmxlbik7CiAJfQogfQogCkBAIC00ODYsNyArNDkyLDcgQEAKIAogCQlpZiAoc2l6ZSA9PSBsZW4pCiAJCQk7IC8qIG1lcmVseSBhbm5vdGF0ZWQgKi8KLQkJZWxzZSBpZiAodmVyaWZ5X3NpZ25lZF9idWZmZXIoYnVmLCBsZW4sIGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgJnNpZykpIHsKKwkJZWxzZSBpZiAodmVyaWZ5X3NpZ25lZF9idWZmZXIoYnVmLCBsZW4sIGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgJnNpZywgTlVMTCkpIHsKIAkJCWlmICghc2lnLmxlbikKIAkJCQlzdHJidWZfYWRkc3RyKCZzaWcsICJncGcgdmVyaWZpY2F0aW9uIGZhaWxlZC5cbiIpOwogCQl9CkBAIC00OTcsMTQgKzUwMywxOCBAQAogCQl9IGVsc2UgewogCQkJaWYgKHRhZ19udW1iZXIgPT0gMikgewogCQkJCXN0cnVjdCBzdHJidWYgdGFnbGluZSA9IFNUUkJVRl9JTklUOwotCQkJCXN0cmJ1Zl9hZGRmKCZ0YWdsaW5lLCAiXG4jICVzXG4iLAotCQkJCQkgICAgb3JpZ2lucy5pdGVtc1tmaXJzdF90YWddLnN0cmluZyk7CisJCQkJc3RyYnVmX2FkZGNoKCZ0YWdsaW5lLCAnXG4nKTsKKwkJCQlzdHJidWZfYWRkX2NvbW1lbnRlZF9saW5lcygmdGFnbGluZSwKKwkJCQkJCW9yaWdpbnMuaXRlbXNbZmlyc3RfdGFnXS5zdHJpbmcsCisJCQkJCQlzdHJsZW4ob3JpZ2lucy5pdGVtc1tmaXJzdF90YWddLnN0cmluZykpOwogCQkJCXN0cmJ1Zl9pbnNlcnQoJnRhZ2J1ZiwgMCwgdGFnbGluZS5idWYsCiAJCQkJCSAgICAgIHRhZ2xpbmUubGVuKTsKIAkJCQlzdHJidWZfcmVsZWFzZSgmdGFnbGluZSk7CiAJCQl9Ci0JCQlzdHJidWZfYWRkZigmdGFnYnVmLCAiXG4jICVzXG4iLAotCQkJCSAgICBvcmlnaW5zLml0ZW1zW2ldLnN0cmluZyk7CisJCQlzdHJidWZfYWRkY2goJnRhZ2J1ZiwgJ1xuJyk7CisJCQlzdHJidWZfYWRkX2NvbW1lbnRlZF9saW5lcygmdGFnYnVmLAorCQkJCQlvcmlnaW5zLml0ZW1zW2ldLnN0cmluZywKKwkJCQkJc3RybGVuKG9yaWdpbnMuaXRlbXNbaV0uc3RyaW5nKSk7CiAJCQlmbXRfdGFnX3NpZ25hdHVyZSgmdGFnYnVmLCAmc2lnLCBidWYsIGxlbik7CiAJCX0KIAkJc3RyYnVmX3JlbGVhc2UoJnNpZyk7CkBAIC02MzUsNyArNjQ1LDcgQEAKIAkJZm9yIChpID0gMDsgaSA8IG9yaWdpbnMubnI7IGkrKykKIAkJCXNob3J0bG9nKG9yaWdpbnMuaXRlbXNbaV0uc3RyaW5nLAogCQkJCSBvcmlnaW5zLml0ZW1zW2ldLnV0aWwsCi0JCQkJIGhlYWQsICZyZXYsIG9wdHMtPnNob3J0bG9nX2xlbiwgb3V0KTsKKwkJCQkgaGVhZCwgJnJldiwgb3B0cywgb3V0KTsKIAl9CiAKIAlzdHJidWZfY29tcGxldGVfbGluZShvdXQpOwpAQCAtNjUwLDE2ICs2NjAsMTYgQEAKIAljb25zdCBjaGFyICptZXNzYWdlID0gTlVMTDsKIAlpbnQgc2hvcnRsb2dfbGVuID0gLTE7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCXsgT1BUSU9OX0lOVEVHRVIsIDAsICJsb2ciLCAmc2hvcnRsb2dfbGVuLCAibiIsCi0JCSAgInBvcHVsYXRlIGxvZyB3aXRoIGF0IG1vc3QgPG4+IGVudHJpZXMgZnJvbSBzaG9ydGxvZyIsCisJCXsgT1BUSU9OX0lOVEVHRVIsIDAsICJsb2ciLCAmc2hvcnRsb2dfbGVuLCBOXygibiIpLAorCQkgIE5fKCJwb3B1bGF0ZSBsb2cgd2l0aCBhdCBtb3N0IDxuPiBlbnRyaWVzIGZyb20gc2hvcnRsb2ciKSwKIAkJICBQQVJTRV9PUFRfT1BUQVJHLCBOVUxMLCBERUZBVUxUX01FUkdFX0xPR19MRU4gfSwKLQkJeyBPUFRJT05fSU5URUdFUiwgMCwgInN1bW1hcnkiLCAmc2hvcnRsb2dfbGVuLCAibiIsCi0JCSAgImFsaWFzIGZvciAtLWxvZyAoZGVwcmVjYXRlZCkiLAorCQl7IE9QVElPTl9JTlRFR0VSLCAwLCAic3VtbWFyeSIsICZzaG9ydGxvZ19sZW4sIE5fKCJuIiksCisJCSAgTl8oImFsaWFzIGZvciAtLWxvZyAoZGVwcmVjYXRlZCkiKSwKIAkJICBQQVJTRV9PUFRfT1BUQVJHIHwgUEFSU0VfT1BUX0hJRERFTiwgTlVMTCwKIAkJICBERUZBVUxUX01FUkdFX0xPR19MRU4gfSwKLQkJT1BUX1NUUklORygnbScsICJtZXNzYWdlIiwgJm1lc3NhZ2UsICJ0ZXh0IiwKLQkJCSJ1c2UgPHRleHQ+IGFzIHN0YXJ0IG9mIG1lc3NhZ2UiKSwKLQkJT1BUX0ZJTEVOQU1FKCdGJywgImZpbGUiLCAmaW5wYXRoLCAiZmlsZSB0byByZWFkIGZyb20iKSwKKwkJT1BUX1NUUklORygnbScsICJtZXNzYWdlIiwgJm1lc3NhZ2UsIE5fKCJ0ZXh0IiksCisJCQlOXygidXNlIDx0ZXh0PiBhcyBzdGFydCBvZiBtZXNzYWdlIikpLAorCQlPUFRfRklMRU5BTUUoJ0YnLCAiZmlsZSIsICZpbnBhdGgsIE5fKCJmaWxlIHRvIHJlYWQgZnJvbSIpKSwKIAkJT1BUX0VORCgpCiAJfTsKIApAQCAtNjkwLDYgKzcwMCw3IEBACiAKIAltZW1zZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CiAJb3B0cy5hZGRfdGl0bGUgPSAhbWVzc2FnZTsKKwlvcHRzLmNyZWRpdF9wZW9wbGUgPSAxOwogCW9wdHMuc2hvcnRsb2dfbGVuID0gc2hvcnRsb2dfbGVuOwogCiAJcmV0ID0gZm10X21lcmdlX21zZygmaW5wdXQsICZvdXRwdXQsICZvcHRzKTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4vZm9yLWVhY2gtcmVmLmMgYi9idWlsdGluL2Zvci1lYWNoLXJlZi5jCmluZGV4IGIwMWQ3NmEuLjdmMDU5YzMgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vZm9yLWVhY2gtcmVmLmMKKysrIGIvYnVpbHRpbi9mb3ItZWFjaC1yZWYuYwpAQCAtOTYyLDcgKzk2Miw5IEBACiAJaWYgKCFhcmcpIC8qIHNob3VsZCAtLW5vLXNvcnQgdm9pZCB0aGUgbGlzdCA/ICovCiAJCXJldHVybiAtMTsKIAotCSpzb3J0X3RhaWwgPSBzID0geGNhbGxvYygxLCBzaXplb2YoKnMpKTsKKwlzID0geGNhbGxvYygxLCBzaXplb2YoKnMpKTsKKwlzLT5uZXh0ID0gKnNvcnRfdGFpbDsKKwkqc29ydF90YWlsID0gczsKIAogCWlmICgqYXJnID09ICctJykgewogCQlzLT5yZXZlcnNlID0gMTsKQEAgLTk3NCw3ICs5NzYsNyBAQAogfQogCiBzdGF0aWMgY2hhciBjb25zdCAqIGNvbnN0IGZvcl9lYWNoX3JlZl91c2FnZVtdID0gewotCSJnaXQgZm9yLWVhY2gtcmVmIFtvcHRpb25zXSBbPHBhdHRlcm4+XSIsCisJTl8oImdpdCBmb3ItZWFjaC1yZWYgW29wdGlvbnNdIFs8cGF0dGVybj5dIiksCiAJTlVMTAogfTsKIApAQCAtOTg5LDE5ICs5OTEsMTkgQEAKIAogCXN0cnVjdCBvcHRpb24gb3B0c1tdID0gewogCQlPUFRfQklUKCdzJywgInNoZWxsIiwgJnF1b3RlX3N0eWxlLAotCQkgICAgICAgICJxdW90ZSBwbGFjZWhvbGRlcnMgc3VpdGFibHkgZm9yIHNoZWxscyIsIFFVT1RFX1NIRUxMKSwKKwkJCU5fKCJxdW90ZSBwbGFjZWhvbGRlcnMgc3VpdGFibHkgZm9yIHNoZWxscyIpLCBRVU9URV9TSEVMTCksCiAJCU9QVF9CSVQoJ3AnLCAicGVybCIsICAmcXVvdGVfc3R5bGUsCi0JCSAgICAgICAgInF1b3RlIHBsYWNlaG9sZGVycyBzdWl0YWJseSBmb3IgcGVybCIsIFFVT1RFX1BFUkwpLAorCQkJTl8oInF1b3RlIHBsYWNlaG9sZGVycyBzdWl0YWJseSBmb3IgcGVybCIpLCBRVU9URV9QRVJMKSwKIAkJT1BUX0JJVCgwICwgInB5dGhvbiIsICZxdW90ZV9zdHlsZSwKLQkJICAgICAgICAicXVvdGUgcGxhY2Vob2xkZXJzIHN1aXRhYmx5IGZvciBweXRob24iLCBRVU9URV9QWVRIT04pLAorCQkJTl8oInF1b3RlIHBsYWNlaG9sZGVycyBzdWl0YWJseSBmb3IgcHl0aG9uIiksIFFVT1RFX1BZVEhPTiksCiAJCU9QVF9CSVQoMCAsICJ0Y2wiLCAgJnF1b3RlX3N0eWxlLAotCQkgICAgICAgICJxdW90ZSBwbGFjZWhvbGRlcnMgc3VpdGFibHkgZm9yIHRjbCIsIFFVT1RFX1RDTCksCisJCQlOXygicXVvdGUgcGxhY2Vob2xkZXJzIHN1aXRhYmx5IGZvciB0Y2wiKSwgUVVPVEVfVENMKSwKIAogCQlPUFRfR1JPVVAoIiIpLAotCQlPUFRfSU5URUdFUiggMCAsICJjb3VudCIsICZtYXhjb3VudCwgInNob3cgb25seSA8bj4gbWF0Y2hlZCByZWZzIiksCi0JCU9QVF9TVFJJTkcoICAwICwgImZvcm1hdCIsICZmb3JtYXQsICJmb3JtYXQiLCAiZm9ybWF0IHRvIHVzZSBmb3IgdGhlIG91dHB1dCIpLAotCQlPUFRfQ0FMTEJBQ0soMCAsICJzb3J0Iiwgc29ydF90YWlsLCAia2V5IiwKLQkJICAgICAgICAgICAgImZpZWxkIG5hbWUgdG8gc29ydCBvbiIsICZvcHRfcGFyc2Vfc29ydCksCisJCU9QVF9JTlRFR0VSKCAwICwgImNvdW50IiwgJm1heGNvdW50LCBOXygic2hvdyBvbmx5IDxuPiBtYXRjaGVkIHJlZnMiKSksCisJCU9QVF9TVFJJTkcoICAwICwgImZvcm1hdCIsICZmb3JtYXQsIE5fKCJmb3JtYXQiKSwgTl8oImZvcm1hdCB0byB1c2UgZm9yIHRoZSBvdXRwdXQiKSksCisJCU9QVF9DQUxMQkFDSygwICwgInNvcnQiLCBzb3J0X3RhaWwsIE5fKCJrZXkiKSwKKwkJCSAgICBOXygiZmllbGQgbmFtZSB0byBzb3J0IG9uIiksICZvcHRfcGFyc2Vfc29ydCksCiAJCU9QVF9FTkQoKSwKIAl9OwogCmRpZmYgLS1naXQgYS9idWlsdGluL2ZzY2suYyBiL2J1aWx0aW4vZnNjay5jCmluZGV4IGE3MTAyMjcuLmJiOWEyY2QgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vZnNjay5jCisrKyBiL2J1aWx0aW4vZnNjay5jCkBAIC02MDUsMjMgKzYwNSwyMyBAQAogfQogCiBzdGF0aWMgY2hhciBjb25zdCAqIGNvbnN0IGZzY2tfdXNhZ2VbXSA9IHsKLQkiZ2l0IGZzY2sgW29wdGlvbnNdIFs8b2JqZWN0Pi4uLl0iLAorCU5fKCJnaXQgZnNjayBbb3B0aW9uc10gWzxvYmplY3Q+Li4uXSIpLAogCU5VTEwKIH07CiAKIHN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGZzY2tfb3B0c1tdID0gewotCU9QVF9fVkVSQk9TRSgmdmVyYm9zZSwgImJlIHZlcmJvc2UiKSwKLQlPUFRfQk9PTEVBTigwLCAidW5yZWFjaGFibGUiLCAmc2hvd191bnJlYWNoYWJsZSwgInNob3cgdW5yZWFjaGFibGUgb2JqZWN0cyIpLAotCU9QVF9CT09MKDAsICJkYW5nbGluZyIsICZzaG93X2RhbmdsaW5nLCAic2hvdyBkYW5nbGluZyBvYmplY3RzIiksCi0JT1BUX0JPT0xFQU4oMCwgInRhZ3MiLCAmc2hvd190YWdzLCAicmVwb3J0IHRhZ3MiKSwKLQlPUFRfQk9PTEVBTigwLCAicm9vdCIsICZzaG93X3Jvb3QsICJyZXBvcnQgcm9vdCBub2RlcyIpLAotCU9QVF9CT09MRUFOKDAsICJjYWNoZSIsICZrZWVwX2NhY2hlX29iamVjdHMsICJtYWtlIGluZGV4IG9iamVjdHMgaGVhZCBub2RlcyIpLAotCU9QVF9CT09MRUFOKDAsICJyZWZsb2dzIiwgJmluY2x1ZGVfcmVmbG9ncywgIm1ha2UgcmVmbG9ncyBoZWFkIG5vZGVzIChkZWZhdWx0KSIpLAotCU9QVF9CT09MRUFOKDAsICJmdWxsIiwgJmNoZWNrX2Z1bGwsICJhbHNvIGNvbnNpZGVyIHBhY2tzIGFuZCBhbHRlcm5hdGUgb2JqZWN0cyIpLAotCU9QVF9CT09MRUFOKDAsICJzdHJpY3QiLCAmY2hlY2tfc3RyaWN0LCAiZW5hYmxlIG1vcmUgc3RyaWN0IGNoZWNraW5nIiksCisJT1BUX19WRVJCT1NFKCZ2ZXJib3NlLCBOXygiYmUgdmVyYm9zZSIpKSwKKwlPUFRfQk9PTEVBTigwLCAidW5yZWFjaGFibGUiLCAmc2hvd191bnJlYWNoYWJsZSwgTl8oInNob3cgdW5yZWFjaGFibGUgb2JqZWN0cyIpKSwKKwlPUFRfQk9PTCgwLCAiZGFuZ2xpbmciLCAmc2hvd19kYW5nbGluZywgTl8oInNob3cgZGFuZ2xpbmcgb2JqZWN0cyIpKSwKKwlPUFRfQk9PTEVBTigwLCAidGFncyIsICZzaG93X3RhZ3MsIE5fKCJyZXBvcnQgdGFncyIpKSwKKwlPUFRfQk9PTEVBTigwLCAicm9vdCIsICZzaG93X3Jvb3QsIE5fKCJyZXBvcnQgcm9vdCBub2RlcyIpKSwKKwlPUFRfQk9PTEVBTigwLCAiY2FjaGUiLCAma2VlcF9jYWNoZV9vYmplY3RzLCBOXygibWFrZSBpbmRleCBvYmplY3RzIGhlYWQgbm9kZXMiKSksCisJT1BUX0JPT0xFQU4oMCwgInJlZmxvZ3MiLCAmaW5jbHVkZV9yZWZsb2dzLCBOXygibWFrZSByZWZsb2dzIGhlYWQgbm9kZXMgKGRlZmF1bHQpIikpLAorCU9QVF9CT09MRUFOKDAsICJmdWxsIiwgJmNoZWNrX2Z1bGwsIE5fKCJhbHNvIGNvbnNpZGVyIHBhY2tzIGFuZCBhbHRlcm5hdGUgb2JqZWN0cyIpKSwKKwlPUFRfQk9PTEVBTigwLCAic3RyaWN0IiwgJmNoZWNrX3N0cmljdCwgTl8oImVuYWJsZSBtb3JlIHN0cmljdCBjaGVja2luZyIpKSwKIAlPUFRfQk9PTEVBTigwLCAibG9zdC1mb3VuZCIsICZ3cml0ZV9sb3N0X2FuZF9mb3VuZCwKLQkJCQkid3JpdGUgZGFuZ2xpbmcgb2JqZWN0cyBpbiAuZ2l0L2xvc3QtZm91bmQiKSwKLQlPUFRfQk9PTCgwLCAicHJvZ3Jlc3MiLCAmc2hvd19wcm9ncmVzcywgInNob3cgcHJvZ3Jlc3MiKSwKKwkJCQlOXygid3JpdGUgZGFuZ2xpbmcgb2JqZWN0cyBpbiAuZ2l0L2xvc3QtZm91bmQiKSksCisJT1BUX0JPT0woMCwgInByb2dyZXNzIiwgJnNob3dfcHJvZ3Jlc3MsIE5fKCJzaG93IHByb2dyZXNzIikpLAogCU9QVF9FTkQoKSwKIH07CiAKZGlmZiAtLWdpdCBhL2J1aWx0aW4vZ2MuYyBiL2J1aWx0aW4vZ2MuYwppbmRleCA5YjQyMzJjLi42YmU2YzhkIDEwMDY0NAotLS0gYS9idWlsdGluL2djLmMKKysrIGIvYnVpbHRpbi9nYy5jCkBAIC0xOSw3ICsxOSw3IEBACiAjZGVmaW5lIEZBSUxFRF9SVU4gImZhaWxlZCB0byBydW4gJXMiCiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9nY191c2FnZVtdID0gewotCSJnaXQgZ2MgW29wdGlvbnNdIiwKKwlOXygiZ2l0IGdjIFtvcHRpb25zXSIpLAogCU5VTEwKIH07CiAKQEAgLTE3NCwxMiArMTc0LDEyIEBACiAJaW50IHF1aWV0ID0gMDsKIAogCXN0cnVjdCBvcHRpb24gYnVpbHRpbl9nY19vcHRpb25zW10gPSB7Ci0JCU9QVF9fUVVJRVQoJnF1aWV0LCAic3VwcHJlc3MgcHJvZ3Jlc3MgcmVwb3J0aW5nIiksCi0JCXsgT1BUSU9OX1NUUklORywgMCwgInBydW5lIiwgJnBydW5lX2V4cGlyZSwgImRhdGUiLAotCQkJInBydW5lIHVucmVmZXJlbmNlZCBvYmplY3RzIiwKKwkJT1BUX19RVUlFVCgmcXVpZXQsIE5fKCJzdXBwcmVzcyBwcm9ncmVzcyByZXBvcnRpbmciKSksCisJCXsgT1BUSU9OX1NUUklORywgMCwgInBydW5lIiwgJnBydW5lX2V4cGlyZSwgTl8oImRhdGUiKSwKKwkJCU5fKCJwcnVuZSB1bnJlZmVyZW5jZWQgb2JqZWN0cyIpLAogCQkJUEFSU0VfT1BUX09QVEFSRywgTlVMTCwgKGludHB0cl90KXBydW5lX2V4cGlyZSB9LAotCQlPUFRfQk9PTEVBTigwLCAiYWdncmVzc2l2ZSIsICZhZ2dyZXNzaXZlLCAiYmUgbW9yZSB0aG9yb3VnaCAoaW5jcmVhc2VkIHJ1bnRpbWUpIiksCi0JCU9QVF9CT09MRUFOKDAsICJhdXRvIiwgJmF1dG9fZ2MsICJlbmFibGUgYXV0by1nYyBtb2RlIiksCisJCU9QVF9CT09MRUFOKDAsICJhZ2dyZXNzaXZlIiwgJmFnZ3Jlc3NpdmUsIE5fKCJiZSBtb3JlIHRob3JvdWdoIChpbmNyZWFzZWQgcnVudGltZSkiKSksCisJCU9QVF9CT09MRUFOKDAsICJhdXRvIiwgJmF1dG9fZ2MsIE5fKCJlbmFibGUgYXV0by1nYyBtb2RlIikpLAogCQlPUFRfRU5EKCkKIAl9OwogCkBAIC0yMTcsOSArMjE3LDcgQEAKIAkJICovCiAJCWlmICghbmVlZF90b19nYygpKQogCQkJcmV0dXJuIDA7Ci0JCWlmIChxdWlldCkKLQkJCWZwcmludGYoc3RkZXJyLCBfKCJBdXRvIHBhY2tpbmcgdGhlIHJlcG9zaXRvcnkgZm9yIG9wdGltdW0gcGVyZm9ybWFuY2UuXG4iKSk7Ci0JCWVsc2UKKwkJaWYgKCFxdWlldCkKIAkJCWZwcmludGYoc3RkZXJyLAogCQkJCQlfKCJBdXRvIHBhY2tpbmcgdGhlIHJlcG9zaXRvcnkgZm9yIG9wdGltdW0gcGVyZm9ybWFuY2UuIFlvdSBtYXkgYWxzb1xuIgogCQkJCQkicnVuIFwiZ2l0IGdjXCIgbWFudWFsbHkuIFNlZSAiCmRpZmYgLS1naXQgYS9idWlsdGluL2dyZXAuYyBiL2J1aWx0aW4vZ3JlcC5jCmluZGV4IGZlMTcyNmYuLjE1OWU2NWQgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vZ3JlcC5jCisrKyBiL2J1aWx0aW4vZ3JlcC5jCkBAIC0xOSw3ICsxOSw3IEBACiAjaW5jbHVkZSAiZGlyLmgiCiAKIHN0YXRpYyBjaGFyIGNvbnN0ICogY29uc3QgZ3JlcF91c2FnZVtdID0gewotCSJnaXQgZ3JlcCBbb3B0aW9uc10gWy1lXSA8cGF0dGVybj4gWzxyZXY+Li4uXSBbWy0tXSA8cGF0aD4uLi5dIiwKKwlOXygiZ2l0IGdyZXAgW29wdGlvbnNdIFstZV0gPHBhdHRlcm4+IFs8cmV2Pi4uLl0gW1stLV0gPHBhdGg+Li4uXSIpLAogCU5VTEwKIH07CiAKQEAgLTg2LDcgKzg2LDcgQEAKIHN0YXRpYyBpbnQgc2tpcF9maXJzdF9saW5lOwogCiBzdGF0aWMgdm9pZCBhZGRfd29yayhzdHJ1Y3QgZ3JlcF9vcHQgKm9wdCwgZW51bSBncmVwX3NvdXJjZV90eXBlIHR5cGUsCi0JCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqaWQpCisJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqcGF0aCwgY29uc3Qgdm9pZCAqaWQpCiB7CiAJZ3JlcF9sb2NrKCk7CiAKQEAgLTk0LDcgKzk0LDcgQEAKIAkJcHRocmVhZF9jb25kX3dhaXQoJmNvbmRfd3JpdGUsICZncmVwX211dGV4KTsKIAl9CiAKLQlncmVwX3NvdXJjZV9pbml0KCZ0b2RvW3RvZG9fZW5kXS5zb3VyY2UsIHR5cGUsIG5hbWUsIGlkKTsKKwlncmVwX3NvdXJjZV9pbml0KCZ0b2RvW3RvZG9fZW5kXS5zb3VyY2UsIHR5cGUsIG5hbWUsIHBhdGgsIGlkKTsKIAlpZiAob3B0LT5iaW5hcnkgIT0gR1JFUF9CSU5BUllfVEVYVCkKIAkJZ3JlcF9zb3VyY2VfbG9hZF9kcml2ZXIoJnRvZG9bdG9kb19lbmRdLnNvdXJjZSk7CiAJdG9kb1t0b2RvX2VuZF0uZG9uZSA9IDA7CkBAIC0yMDksNiArMjA5LDcgQEAKIAkJaW50IGVycjsKIAkJc3RydWN0IGdyZXBfb3B0ICpvID0gZ3JlcF9vcHRfZHVwKG9wdCk7CiAJCW8tPm91dHB1dCA9IHN0cmJ1Zl9vdXQ7CisJCW8tPmRlYnVnID0gMDsKIAkJY29tcGlsZV9ncmVwX3BhdHRlcm5zKG8pOwogCQllcnIgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkc1tpXSwgTlVMTCwgcnVuLCBvKTsKIApAQCAtMjYwLDUxICsyNjEsMTIgQEAKIH0KICNlbmRpZgogCi1zdGF0aWMgaW50IGdyZXBfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQorc3RhdGljIGludCBncmVwX2NtZF9jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqY2IpCiB7Ci0Jc3RydWN0IGdyZXBfb3B0ICpvcHQgPSBjYjsKLQljaGFyICpjb2xvciA9IE5VTEw7Ci0KLQlpZiAodXNlcmRpZmZfY29uZmlnKHZhciwgdmFsdWUpIDwgMCkKLQkJcmV0dXJuIC0xOwotCi0JaWYgKCFzdHJjbXAodmFyLCAiZ3JlcC5leHRlbmRlZHJlZ2V4cCIpKSB7Ci0JCWlmIChnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSkpCi0JCQlvcHQtPnJlZ2ZsYWdzIHw9IFJFR19FWFRFTkRFRDsKLQkJZWxzZQotCQkJb3B0LT5yZWdmbGFncyAmPSB+UkVHX0VYVEVOREVEOwotCQlyZXR1cm4gMDsKLQl9Ci0KLQlpZiAoIXN0cmNtcCh2YXIsICJncmVwLmxpbmVudW1iZXIiKSkgewotCQlvcHQtPmxpbmVudW0gPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7Ci0JCXJldHVybiAwOwotCX0KLQotCWlmICghc3RyY21wKHZhciwgImNvbG9yLmdyZXAiKSkKLQkJb3B0LT5jb2xvciA9IGdpdF9jb25maWdfY29sb3Jib29sKHZhciwgdmFsdWUpOwotCWVsc2UgaWYgKCFzdHJjbXAodmFyLCAiY29sb3IuZ3JlcC5jb250ZXh0IikpCi0JCWNvbG9yID0gb3B0LT5jb2xvcl9jb250ZXh0OwotCWVsc2UgaWYgKCFzdHJjbXAodmFyLCAiY29sb3IuZ3JlcC5maWxlbmFtZSIpKQotCQljb2xvciA9IG9wdC0+Y29sb3JfZmlsZW5hbWU7Ci0JZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJjb2xvci5ncmVwLmZ1bmN0aW9uIikpCi0JCWNvbG9yID0gb3B0LT5jb2xvcl9mdW5jdGlvbjsKLQllbHNlIGlmICghc3RyY21wKHZhciwgImNvbG9yLmdyZXAubGluZW51bWJlciIpKQotCQljb2xvciA9IG9wdC0+Y29sb3JfbGluZW5vOwotCWVsc2UgaWYgKCFzdHJjbXAodmFyLCAiY29sb3IuZ3JlcC5tYXRjaCIpKQotCQljb2xvciA9IG9wdC0+Y29sb3JfbWF0Y2g7Ci0JZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJjb2xvci5ncmVwLnNlbGVjdGVkIikpCi0JCWNvbG9yID0gb3B0LT5jb2xvcl9zZWxlY3RlZDsKLQllbHNlIGlmICghc3RyY21wKHZhciwgImNvbG9yLmdyZXAuc2VwYXJhdG9yIikpCi0JCWNvbG9yID0gb3B0LT5jb2xvcl9zZXA7Ci0JZWxzZQotCQlyZXR1cm4gZ2l0X2NvbG9yX2RlZmF1bHRfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKLQlpZiAoY29sb3IpIHsKLQkJaWYgKCF2YWx1ZSkKLQkJCXJldHVybiBjb25maWdfZXJyb3Jfbm9uYm9vbCh2YXIpOwotCQljb2xvcl9wYXJzZSh2YWx1ZSwgdmFyLCBjb2xvcik7Ci0JfQotCXJldHVybiAwOworCWludCBzdCA9IGdyZXBfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKKwlpZiAoZ2l0X2NvbG9yX2RlZmF1bHRfY29uZmlnKHZhciwgdmFsdWUsIGNiKSA8IDApCisJCXN0ID0gLTE7CisJcmV0dXJuIHN0OwogfQogCiBzdGF0aWMgdm9pZCAqbG9ja19hbmRfcmVhZF9zaGExX2ZpbGUoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgZW51bSBvYmplY3RfdHlwZSAqdHlwZSwgdW5zaWduZWQgbG9uZyAqc2l6ZSkKQEAgLTMxOCw3ICsyODAsOCBAQAogfQogCiBzdGF0aWMgaW50IGdyZXBfc2hhMShzdHJ1Y3QgZ3JlcF9vcHQgKm9wdCwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKLQkJICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IHRyZWVfbmFtZV9sZW4pCisJCSAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCB0cmVlX25hbWVfbGVuLAorCQkgICAgIGNvbnN0IGNoYXIgKnBhdGgpCiB7CiAJc3RydWN0IHN0cmJ1ZiBwYXRoYnVmID0gU1RSQlVGX0lOSVQ7CiAKQEAgLTMzMiw3ICsyOTUsNyBAQAogCiAjaWZuZGVmIE5PX1BUSFJFQURTCiAJaWYgKHVzZV90aHJlYWRzKSB7Ci0JCWFkZF93b3JrKG9wdCwgR1JFUF9TT1VSQ0VfU0hBMSwgcGF0aGJ1Zi5idWYsIHNoYTEpOworCQlhZGRfd29yayhvcHQsIEdSRVBfU09VUkNFX1NIQTEsIHBhdGhidWYuYnVmLCBwYXRoLCBzaGExKTsKIAkJc3RyYnVmX3JlbGVhc2UoJnBhdGhidWYpOwogCQlyZXR1cm4gMDsKIAl9IGVsc2UKQEAgLTM0MSw3ICszMDQsNyBAQAogCQlzdHJ1Y3QgZ3JlcF9zb3VyY2UgZ3M7CiAJCWludCBoaXQ7CiAKLQkJZ3JlcF9zb3VyY2VfaW5pdCgmZ3MsIEdSRVBfU09VUkNFX1NIQTEsIHBhdGhidWYuYnVmLCBzaGExKTsKKwkJZ3JlcF9zb3VyY2VfaW5pdCgmZ3MsIEdSRVBfU09VUkNFX1NIQTEsIHBhdGhidWYuYnVmLCBwYXRoLCBzaGExKTsKIAkJc3RyYnVmX3JlbGVhc2UoJnBhdGhidWYpOwogCQloaXQgPSBncmVwX3NvdXJjZShvcHQsICZncyk7CiAKQEAgLTM2MSw3ICszMjQsNyBAQAogCiAjaWZuZGVmIE5PX1BUSFJFQURTCiAJaWYgKHVzZV90aHJlYWRzKSB7Ci0JCWFkZF93b3JrKG9wdCwgR1JFUF9TT1VSQ0VfRklMRSwgYnVmLmJ1ZiwgZmlsZW5hbWUpOworCQlhZGRfd29yayhvcHQsIEdSRVBfU09VUkNFX0ZJTEUsIGJ1Zi5idWYsIGZpbGVuYW1lLCBmaWxlbmFtZSk7CiAJCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogCQlyZXR1cm4gMDsKIAl9IGVsc2UKQEAgLTM3MCw3ICszMzMsNyBAQAogCQlzdHJ1Y3QgZ3JlcF9zb3VyY2UgZ3M7CiAJCWludCBoaXQ7CiAKLQkJZ3JlcF9zb3VyY2VfaW5pdCgmZ3MsIEdSRVBfU09VUkNFX0ZJTEUsIGJ1Zi5idWYsIGZpbGVuYW1lKTsKKwkJZ3JlcF9zb3VyY2VfaW5pdCgmZ3MsIEdSRVBfU09VUkNFX0ZJTEUsIGJ1Zi5idWYsIGZpbGVuYW1lLCBmaWxlbmFtZSk7CiAJCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogCQloaXQgPSBncmVwX3NvdXJjZShvcHQsICZncyk7CiAKQEAgLTQyNiw3ICszODksNyBAQAogCQlpZiAoY2FjaGVkIHx8IChjZS0+Y2VfZmxhZ3MgJiBDRV9WQUxJRCkgfHwgY2Vfc2tpcF93b3JrdHJlZShjZSkpIHsKIAkJCWlmIChjZV9zdGFnZShjZSkpCiAJCQkJY29udGludWU7Ci0JCQloaXQgfD0gZ3JlcF9zaGExKG9wdCwgY2UtPnNoYTEsIGNlLT5uYW1lLCAwKTsKKwkJCWhpdCB8PSBncmVwX3NoYTEob3B0LCBjZS0+c2hhMSwgY2UtPm5hbWUsIDAsIGNlLT5uYW1lKTsKIAkJfQogCQllbHNlCiAJCQloaXQgfD0gZ3JlcF9maWxlKG9wdCwgY2UtPm5hbWUpOwpAQCAtNDQ0LDcgKzQwNyw4IEBACiB9CiAKIHN0YXRpYyBpbnQgZ3JlcF90cmVlKHN0cnVjdCBncmVwX29wdCAqb3B0LCBjb25zdCBzdHJ1Y3QgcGF0aHNwZWMgKnBhdGhzcGVjLAotCQkgICAgIHN0cnVjdCB0cmVlX2Rlc2MgKnRyZWUsIHN0cnVjdCBzdHJidWYgKmJhc2UsIGludCB0bl9sZW4pCisJCSAgICAgc3RydWN0IHRyZWVfZGVzYyAqdHJlZSwgc3RydWN0IHN0cmJ1ZiAqYmFzZSwgaW50IHRuX2xlbiwKKwkJICAgICBpbnQgY2hlY2tfYXR0cikKIHsKIAlpbnQgaGl0ID0gMDsKIAllbnVtIGludGVyZXN0aW5nIG1hdGNoID0gZW50cnlfbm90X2ludGVyZXN0aW5nOwpAQCAtNDY1LDcgKzQyOSw4IEBACiAJCXN0cmJ1Zl9hZGQoYmFzZSwgZW50cnkucGF0aCwgdGVfbGVuKTsKIAogCQlpZiAoU19JU1JFRyhlbnRyeS5tb2RlKSkgewotCQkJaGl0IHw9IGdyZXBfc2hhMShvcHQsIGVudHJ5LnNoYTEsIGJhc2UtPmJ1ZiwgdG5fbGVuKTsKKwkJCWhpdCB8PSBncmVwX3NoYTEob3B0LCBlbnRyeS5zaGExLCBiYXNlLT5idWYsIHRuX2xlbiwKKwkJCQkJIGNoZWNrX2F0dHIgPyBiYXNlLT5idWYgKyB0bl9sZW4gOiBOVUxMKTsKIAkJfQogCQllbHNlIGlmIChTX0lTRElSKGVudHJ5Lm1vZGUpKSB7CiAJCQllbnVtIG9iamVjdF90eXBlIHR5cGU7CkBAIC00ODAsNyArNDQ1LDggQEAKIAogCQkJc3RyYnVmX2FkZGNoKGJhc2UsICcvJyk7CiAJCQlpbml0X3RyZWVfZGVzYygmc3ViLCBkYXRhLCBzaXplKTsKLQkJCWhpdCB8PSBncmVwX3RyZWUob3B0LCBwYXRoc3BlYywgJnN1YiwgYmFzZSwgdG5fbGVuKTsKKwkJCWhpdCB8PSBncmVwX3RyZWUob3B0LCBwYXRoc3BlYywgJnN1YiwgYmFzZSwgdG5fbGVuLAorCQkJCQkgY2hlY2tfYXR0cik7CiAJCQlmcmVlKGRhdGEpOwogCQl9CiAJCXN0cmJ1Zl9zZXRsZW4oYmFzZSwgb2xkX2Jhc2VsZW4pOwpAQCAtNDk1LDcgKzQ2MSw3IEBACiAJCSAgICAgICBzdHJ1Y3Qgb2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAJaWYgKG9iai0+dHlwZSA9PSBPQkpfQkxPQikKLQkJcmV0dXJuIGdyZXBfc2hhMShvcHQsIG9iai0+c2hhMSwgbmFtZSwgMCk7CisJCXJldHVybiBncmVwX3NoYTEob3B0LCBvYmotPnNoYTEsIG5hbWUsIDAsIE5VTEwpOwogCWlmIChvYmotPnR5cGUgPT0gT0JKX0NPTU1JVCB8fCBvYmotPnR5cGUgPT0gT0JKX1RSRUUpIHsKIAkJc3RydWN0IHRyZWVfZGVzYyB0cmVlOwogCQl2b2lkICpkYXRhOwpAQCAtNTE4LDcgKzQ4NCw4IEBACiAJCQlzdHJidWZfYWRkY2goJmJhc2UsICc6Jyk7CiAJCX0KIAkJaW5pdF90cmVlX2Rlc2MoJnRyZWUsIGRhdGEsIHNpemUpOwotCQloaXQgPSBncmVwX3RyZWUob3B0LCBwYXRoc3BlYywgJnRyZWUsICZiYXNlLCBiYXNlLmxlbik7CisJCWhpdCA9IGdyZXBfdHJlZShvcHQsIHBhdGhzcGVjLCAmdHJlZSwgJmJhc2UsIGJhc2UubGVuLAorCQkJCW9iai0+dHlwZSA9PSBPQkpfQ09NTUlUKTsKIAkJc3RyYnVmX3JlbGVhc2UoJmJhc2UpOwogCQlmcmVlKGRhdGEpOwogCQlyZXR1cm4gaGl0OwpAQCAtNjY5LDk1ICs2MzYsODggQEAKIAlpbnQgaTsKIAlpbnQgZHVtbXk7CiAJaW50IHVzZV9pbmRleCA9IDE7Ci0JZW51bSB7Ci0JCXBhdHRlcm5fdHlwZV91bnNwZWNpZmllZCA9IDAsCi0JCXBhdHRlcm5fdHlwZV9icmUsCi0JCXBhdHRlcm5fdHlwZV9lcmUsCi0JCXBhdHRlcm5fdHlwZV9maXhlZCwKLQkJcGF0dGVybl90eXBlX3BjcmUsCi0JfTsKLQlpbnQgcGF0dGVybl90eXBlID0gcGF0dGVybl90eXBlX3Vuc3BlY2lmaWVkOworCWludCBwYXR0ZXJuX3R5cGVfYXJnID0gR1JFUF9QQVRURVJOX1RZUEVfVU5TUEVDSUZJRUQ7CiAKIAlzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKIAkJT1BUX0JPT0xFQU4oMCwgImNhY2hlZCIsICZjYWNoZWQsCi0JCQkic2VhcmNoIGluIGluZGV4IGluc3RlYWQgb2YgaW4gdGhlIHdvcmsgdHJlZSIpLAorCQkJTl8oInNlYXJjaCBpbiBpbmRleCBpbnN0ZWFkIG9mIGluIHRoZSB3b3JrIHRyZWUiKSksCiAJCU9QVF9ORUdCSVQoMCwgIm5vLWluZGV4IiwgJnVzZV9pbmRleCwKLQkJCSAiZmluZHMgaW4gY29udGVudHMgbm90IG1hbmFnZWQgYnkgZ2l0IiwgMSksCisJCQkgTl8oImZpbmQgaW4gY29udGVudHMgbm90IG1hbmFnZWQgYnkgZ2l0IiksIDEpLAogCQlPUFRfQk9PTEVBTigwLCAidW50cmFja2VkIiwgJnVudHJhY2tlZCwKLQkJCSJzZWFyY2ggaW4gYm90aCB0cmFja2VkIGFuZCB1bnRyYWNrZWQgZmlsZXMiKSwKKwkJCU5fKCJzZWFyY2ggaW4gYm90aCB0cmFja2VkIGFuZCB1bnRyYWNrZWQgZmlsZXMiKSksCiAJCU9QVF9TRVRfSU5UKDAsICJleGNsdWRlLXN0YW5kYXJkIiwgJm9wdF9leGNsdWRlLAotCQkJICAgICJzZWFyY2ggYWxzbyBpbiBpZ25vcmVkIGZpbGVzIiwgMSksCisJCQkgICAgTl8oInNlYXJjaCBhbHNvIGluIGlnbm9yZWQgZmlsZXMiKSwgMSksCiAJCU9QVF9HUk9VUCgiIiksCiAJCU9QVF9CT09MRUFOKCd2JywgImludmVydC1tYXRjaCIsICZvcHQuaW52ZXJ0LAotCQkJInNob3cgbm9uLW1hdGNoaW5nIGxpbmVzIiksCisJCQlOXygic2hvdyBub24tbWF0Y2hpbmcgbGluZXMiKSksCiAJCU9QVF9CT09MRUFOKCdpJywgImlnbm9yZS1jYXNlIiwgJm9wdC5pZ25vcmVfY2FzZSwKLQkJCSJjYXNlIGluc2Vuc2l0aXZlIG1hdGNoaW5nIiksCisJCQlOXygiY2FzZSBpbnNlbnNpdGl2ZSBtYXRjaGluZyIpKSwKIAkJT1BUX0JPT0xFQU4oJ3cnLCAid29yZC1yZWdleHAiLCAmb3B0LndvcmRfcmVnZXhwLAotCQkJIm1hdGNoIHBhdHRlcm5zIG9ubHkgYXQgd29yZCBib3VuZGFyaWVzIiksCisJCQlOXygibWF0Y2ggcGF0dGVybnMgb25seSBhdCB3b3JkIGJvdW5kYXJpZXMiKSksCiAJCU9QVF9TRVRfSU5UKCdhJywgInRleHQiLCAmb3B0LmJpbmFyeSwKLQkJCSJwcm9jZXNzIGJpbmFyeSBmaWxlcyBhcyB0ZXh0IiwgR1JFUF9CSU5BUllfVEVYVCksCisJCQlOXygicHJvY2VzcyBiaW5hcnkgZmlsZXMgYXMgdGV4dCIpLCBHUkVQX0JJTkFSWV9URVhUKSwKIAkJT1BUX1NFVF9JTlQoJ0knLCBOVUxMLCAmb3B0LmJpbmFyeSwKLQkJCSJkb24ndCBtYXRjaCBwYXR0ZXJucyBpbiBiaW5hcnkgZmlsZXMiLAorCQkJTl8oImRvbid0IG1hdGNoIHBhdHRlcm5zIGluIGJpbmFyeSBmaWxlcyIpLAogCQkJR1JFUF9CSU5BUllfTk9NQVRDSCksCi0JCXsgT1BUSU9OX0lOVEVHRVIsIDAsICJtYXgtZGVwdGgiLCAmb3B0Lm1heF9kZXB0aCwgImRlcHRoIiwKLQkJCSJkZXNjZW5kIGF0IG1vc3QgPGRlcHRoPiBsZXZlbHMiLCBQQVJTRV9PUFRfTk9ORUcsCisJCXsgT1BUSU9OX0lOVEVHRVIsIDAsICJtYXgtZGVwdGgiLCAmb3B0Lm1heF9kZXB0aCwgTl8oImRlcHRoIiksCisJCQlOXygiZGVzY2VuZCBhdCBtb3N0IDxkZXB0aD4gbGV2ZWxzIiksIFBBUlNFX09QVF9OT05FRywKIAkJCU5VTEwsIDEgfSwKIAkJT1BUX0dST1VQKCIiKSwKLQkJT1BUX1NFVF9JTlQoJ0UnLCAiZXh0ZW5kZWQtcmVnZXhwIiwgJnBhdHRlcm5fdHlwZSwKLQkJCSAgICAidXNlIGV4dGVuZGVkIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbnMiLAotCQkJICAgIHBhdHRlcm5fdHlwZV9lcmUpLAotCQlPUFRfU0VUX0lOVCgnRycsICJiYXNpYy1yZWdleHAiLCAmcGF0dGVybl90eXBlLAotCQkJICAgICJ1c2UgYmFzaWMgUE9TSVggcmVndWxhciBleHByZXNzaW9ucyAoZGVmYXVsdCkiLAotCQkJICAgIHBhdHRlcm5fdHlwZV9icmUpLAotCQlPUFRfU0VUX0lOVCgnRicsICJmaXhlZC1zdHJpbmdzIiwgJnBhdHRlcm5fdHlwZSwKLQkJCSAgICAiaW50ZXJwcmV0IHBhdHRlcm5zIGFzIGZpeGVkIHN0cmluZ3MiLAotCQkJICAgIHBhdHRlcm5fdHlwZV9maXhlZCksCi0JCU9QVF9TRVRfSU5UKCdQJywgInBlcmwtcmVnZXhwIiwgJnBhdHRlcm5fdHlwZSwKLQkJCSAgICAidXNlIFBlcmwtY29tcGF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIiwKLQkJCSAgICBwYXR0ZXJuX3R5cGVfcGNyZSksCisJCU9QVF9TRVRfSU5UKCdFJywgImV4dGVuZGVkLXJlZ2V4cCIsICZwYXR0ZXJuX3R5cGVfYXJnLAorCQkJICAgIE5fKCJ1c2UgZXh0ZW5kZWQgUE9TSVggcmVndWxhciBleHByZXNzaW9ucyIpLAorCQkJICAgIEdSRVBfUEFUVEVSTl9UWVBFX0VSRSksCisJCU9QVF9TRVRfSU5UKCdHJywgImJhc2ljLXJlZ2V4cCIsICZwYXR0ZXJuX3R5cGVfYXJnLAorCQkJICAgIE5fKCJ1c2UgYmFzaWMgUE9TSVggcmVndWxhciBleHByZXNzaW9ucyAoZGVmYXVsdCkiKSwKKwkJCSAgICBHUkVQX1BBVFRFUk5fVFlQRV9CUkUpLAorCQlPUFRfU0VUX0lOVCgnRicsICJmaXhlZC1zdHJpbmdzIiwgJnBhdHRlcm5fdHlwZV9hcmcsCisJCQkgICAgTl8oImludGVycHJldCBwYXR0ZXJucyBhcyBmaXhlZCBzdHJpbmdzIiksCisJCQkgICAgR1JFUF9QQVRURVJOX1RZUEVfRklYRUQpLAorCQlPUFRfU0VUX0lOVCgnUCcsICJwZXJsLXJlZ2V4cCIsICZwYXR0ZXJuX3R5cGVfYXJnLAorCQkJICAgIE5fKCJ1c2UgUGVybC1jb21wYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiKSwKKwkJCSAgICBHUkVQX1BBVFRFUk5fVFlQRV9QQ1JFKSwKIAkJT1BUX0dST1VQKCIiKSwKLQkJT1BUX0JPT0xFQU4oJ24nLCAibGluZS1udW1iZXIiLCAmb3B0LmxpbmVudW0sICJzaG93IGxpbmUgbnVtYmVycyIpLAotCQlPUFRfTkVHQklUKCdoJywgTlVMTCwgJm9wdC5wYXRobmFtZSwgImRvbid0IHNob3cgZmlsZW5hbWVzIiwgMSksCi0JCU9QVF9CSVQoJ0gnLCBOVUxMLCAmb3B0LnBhdGhuYW1lLCAic2hvdyBmaWxlbmFtZXMiLCAxKSwKKwkJT1BUX0JPT0xFQU4oJ24nLCAibGluZS1udW1iZXIiLCAmb3B0LmxpbmVudW0sIE5fKCJzaG93IGxpbmUgbnVtYmVycyIpKSwKKwkJT1BUX05FR0JJVCgnaCcsIE5VTEwsICZvcHQucGF0aG5hbWUsIE5fKCJkb24ndCBzaG93IGZpbGVuYW1lcyIpLCAxKSwKKwkJT1BUX0JJVCgnSCcsIE5VTEwsICZvcHQucGF0aG5hbWUsIE5fKCJzaG93IGZpbGVuYW1lcyIpLCAxKSwKIAkJT1BUX05FR0JJVCgwLCAiZnVsbC1uYW1lIiwgJm9wdC5yZWxhdGl2ZSwKLQkJCSJzaG93IGZpbGVuYW1lcyByZWxhdGl2ZSB0byB0b3AgZGlyZWN0b3J5IiwgMSksCisJCQlOXygic2hvdyBmaWxlbmFtZXMgcmVsYXRpdmUgdG8gdG9wIGRpcmVjdG9yeSIpLCAxKSwKIAkJT1BUX0JPT0xFQU4oJ2wnLCAiZmlsZXMtd2l0aC1tYXRjaGVzIiwgJm9wdC5uYW1lX29ubHksCi0JCQkic2hvdyBvbmx5IGZpbGVuYW1lcyBpbnN0ZWFkIG9mIG1hdGNoaW5nIGxpbmVzIiksCisJCQlOXygic2hvdyBvbmx5IGZpbGVuYW1lcyBpbnN0ZWFkIG9mIG1hdGNoaW5nIGxpbmVzIikpLAogCQlPUFRfQk9PTEVBTigwLCAibmFtZS1vbmx5IiwgJm9wdC5uYW1lX29ubHksCi0JCQkic3lub255bSBmb3IgLS1maWxlcy13aXRoLW1hdGNoZXMiKSwKKwkJCU5fKCJzeW5vbnltIGZvciAtLWZpbGVzLXdpdGgtbWF0Y2hlcyIpKSwKIAkJT1BUX0JPT0xFQU4oJ0wnLCAiZmlsZXMtd2l0aG91dC1tYXRjaCIsCiAJCQkmb3B0LnVubWF0Y2hfbmFtZV9vbmx5LAotCQkJInNob3cgb25seSB0aGUgbmFtZXMgb2YgZmlsZXMgd2l0aG91dCBtYXRjaCIpLAorCQkJTl8oInNob3cgb25seSB0aGUgbmFtZXMgb2YgZmlsZXMgd2l0aG91dCBtYXRjaCIpKSwKIAkJT1BUX0JPT0xFQU4oJ3onLCAibnVsbCIsICZvcHQubnVsbF9mb2xsb3dpbmdfbmFtZSwKLQkJCSJwcmludCBOVUwgYWZ0ZXIgZmlsZW5hbWVzIiksCisJCQlOXygicHJpbnQgTlVMIGFmdGVyIGZpbGVuYW1lcyIpKSwKIAkJT1BUX0JPT0xFQU4oJ2MnLCAiY291bnQiLCAmb3B0LmNvdW50LAotCQkJInNob3cgdGhlIG51bWJlciBvZiBtYXRjaGVzIGluc3RlYWQgb2YgbWF0Y2hpbmcgbGluZXMiKSwKLQkJT1BUX19DT0xPUigmb3B0LmNvbG9yLCAiaGlnaGxpZ2h0IG1hdGNoZXMiKSwKKwkJCU5fKCJzaG93IHRoZSBudW1iZXIgb2YgbWF0Y2hlcyBpbnN0ZWFkIG9mIG1hdGNoaW5nIGxpbmVzIikpLAorCQlPUFRfX0NPTE9SKCZvcHQuY29sb3IsIE5fKCJoaWdobGlnaHQgbWF0Y2hlcyIpKSwKIAkJT1BUX0JPT0xFQU4oMCwgImJyZWFrIiwgJm9wdC5maWxlX2JyZWFrLAotCQkJInByaW50IGVtcHR5IGxpbmUgYmV0d2VlbiBtYXRjaGVzIGZyb20gZGlmZmVyZW50IGZpbGVzIiksCisJCQlOXygicHJpbnQgZW1wdHkgbGluZSBiZXR3ZWVuIG1hdGNoZXMgZnJvbSBkaWZmZXJlbnQgZmlsZXMiKSksCiAJCU9QVF9CT09MRUFOKDAsICJoZWFkaW5nIiwgJm9wdC5oZWFkaW5nLAotCQkJInNob3cgZmlsZW5hbWUgb25seSBvbmNlIGFib3ZlIG1hdGNoZXMgZnJvbSBzYW1lIGZpbGUiKSwKKwkJCU5fKCJzaG93IGZpbGVuYW1lIG9ubHkgb25jZSBhYm92ZSBtYXRjaGVzIGZyb20gc2FtZSBmaWxlIikpLAogCQlPUFRfR1JPVVAoIiIpLAotCQlPUFRfQ0FMTEJBQ0soJ0MnLCAiY29udGV4dCIsICZvcHQsICJuIiwKLQkJCSJzaG93IDxuPiBjb250ZXh0IGxpbmVzIGJlZm9yZSBhbmQgYWZ0ZXIgbWF0Y2hlcyIsCisJCU9QVF9DQUxMQkFDSygnQycsICJjb250ZXh0IiwgJm9wdCwgTl8oIm4iKSwKKwkJCU5fKCJzaG93IDxuPiBjb250ZXh0IGxpbmVzIGJlZm9yZSBhbmQgYWZ0ZXIgbWF0Y2hlcyIpLAogCQkJY29udGV4dF9jYWxsYmFjayksCiAJCU9QVF9JTlRFR0VSKCdCJywgImJlZm9yZS1jb250ZXh0IiwgJm9wdC5wcmVfY29udGV4dCwKLQkJCSJzaG93IDxuPiBjb250ZXh0IGxpbmVzIGJlZm9yZSBtYXRjaGVzIiksCisJCQlOXygic2hvdyA8bj4gY29udGV4dCBsaW5lcyBiZWZvcmUgbWF0Y2hlcyIpKSwKIAkJT1BUX0lOVEVHRVIoJ0EnLCAiYWZ0ZXItY29udGV4dCIsICZvcHQucG9zdF9jb250ZXh0LAotCQkJInNob3cgPG4+IGNvbnRleHQgbGluZXMgYWZ0ZXIgbWF0Y2hlcyIpLAotCQlPUFRfTlVNQkVSX0NBTExCQUNLKCZvcHQsICJzaG9ydGN1dCBmb3IgLUMgTlVNIiwKKwkJCU5fKCJzaG93IDxuPiBjb250ZXh0IGxpbmVzIGFmdGVyIG1hdGNoZXMiKSksCisJCU9QVF9OVU1CRVJfQ0FMTEJBQ0soJm9wdCwgTl8oInNob3J0Y3V0IGZvciAtQyBOVU0iKSwKIAkJCWNvbnRleHRfY2FsbGJhY2spLAogCQlPUFRfQk9PTEVBTigncCcsICJzaG93LWZ1bmN0aW9uIiwgJm9wdC5mdW5jbmFtZSwKLQkJCSJzaG93IGEgbGluZSB3aXRoIHRoZSBmdW5jdGlvbiBuYW1lIGJlZm9yZSBtYXRjaGVzIiksCisJCQlOXygic2hvdyBhIGxpbmUgd2l0aCB0aGUgZnVuY3Rpb24gbmFtZSBiZWZvcmUgbWF0Y2hlcyIpKSwKIAkJT1BUX0JPT0xFQU4oJ1cnLCAiZnVuY3Rpb24tY29udGV4dCIsICZvcHQuZnVuY2JvZHksCi0JCQkic2hvdyB0aGUgc3Vycm91bmRpbmcgZnVuY3Rpb24iKSwKKwkJCU5fKCJzaG93IHRoZSBzdXJyb3VuZGluZyBmdW5jdGlvbiIpKSwKIAkJT1BUX0dST1VQKCIiKSwKLQkJT1BUX0NBTExCQUNLKCdmJywgTlVMTCwgJm9wdCwgImZpbGUiLAotCQkJInJlYWQgcGF0dGVybnMgZnJvbSBmaWxlIiwgZmlsZV9jYWxsYmFjayksCi0JCXsgT1BUSU9OX0NBTExCQUNLLCAnZScsIE5VTEwsICZvcHQsICJwYXR0ZXJuIiwKLQkJCSJtYXRjaCA8cGF0dGVybj4iLCBQQVJTRV9PUFRfTk9ORUcsIHBhdHRlcm5fY2FsbGJhY2sgfSwKKwkJT1BUX0NBTExCQUNLKCdmJywgTlVMTCwgJm9wdCwgTl8oImZpbGUiKSwKKwkJCU5fKCJyZWFkIHBhdHRlcm5zIGZyb20gZmlsZSIpLCBmaWxlX2NhbGxiYWNrKSwKKwkJeyBPUFRJT05fQ0FMTEJBQ0ssICdlJywgTlVMTCwgJm9wdCwgTl8oInBhdHRlcm4iKSwKKwkJCU5fKCJtYXRjaCA8cGF0dGVybj4iKSwgUEFSU0VfT1BUX05PTkVHLCBwYXR0ZXJuX2NhbGxiYWNrIH0sCiAJCXsgT1BUSU9OX0NBTExCQUNLLCAwLCAiYW5kIiwgJm9wdCwgTlVMTCwKLQkJICAiY29tYmluZSBwYXR0ZXJucyBzcGVjaWZpZWQgd2l0aCAtZSIsCisJCSAgTl8oImNvbWJpbmUgcGF0dGVybnMgc3BlY2lmaWVkIHdpdGggLWUiKSwKIAkJICBQQVJTRV9PUFRfTk9BUkcgfCBQQVJTRV9PUFRfTk9ORUcsIGFuZF9jYWxsYmFjayB9LAogCQlPUFRfQk9PTEVBTigwLCAib3IiLCAmZHVtbXksICIiKSwKIAkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJub3QiLCAmb3B0LCBOVUxMLCAiIiwKQEAgLTc2OSwxNiArNzI5LDE5IEBACiAJCSAgUEFSU0VfT1BUX05PQVJHIHwgUEFSU0VfT1BUX05PTkVHIHwgUEFSU0VfT1BUX05PREFTSCwKIAkJICBjbG9zZV9jYWxsYmFjayB9LAogCQlPUFRfX1FVSUVUKCZvcHQuc3RhdHVzX29ubHksCi0JCQkgICAiaW5kaWNhdGUgaGl0IHdpdGggZXhpdCBzdGF0dXMgd2l0aG91dCBvdXRwdXQiKSwKKwkJCSAgIE5fKCJpbmRpY2F0ZSBoaXQgd2l0aCBleGl0IHN0YXR1cyB3aXRob3V0IG91dHB1dCIpKSwKIAkJT1BUX0JPT0xFQU4oMCwgImFsbC1tYXRjaCIsICZvcHQuYWxsX21hdGNoLAotCQkJInNob3cgb25seSBtYXRjaGVzIGZyb20gZmlsZXMgdGhhdCBtYXRjaCBhbGwgcGF0dGVybnMiKSwKKwkJCU5fKCJzaG93IG9ubHkgbWF0Y2hlcyBmcm9tIGZpbGVzIHRoYXQgbWF0Y2ggYWxsIHBhdHRlcm5zIikpLAorCQl7IE9QVElPTl9TRVRfSU5ULCAwLCAiZGVidWciLCAmb3B0LmRlYnVnLCBOVUxMLAorCQkgIE5fKCJzaG93IHBhcnNlIHRyZWUgZm9yIGdyZXAgZXhwcmVzc2lvbiIpLAorCQkgIFBBUlNFX09QVF9OT0FSRyB8IFBBUlNFX09QVF9ISURERU4sIE5VTEwsIDEgfSwKIAkJT1BUX0dST1VQKCIiKSwKIAkJeyBPUFRJT05fU1RSSU5HLCAnTycsICJvcGVuLWZpbGVzLWluLXBhZ2VyIiwgJnNob3dfaW5fcGFnZXIsCi0JCQkicGFnZXIiLCAic2hvdyBtYXRjaGluZyBmaWxlcyBpbiB0aGUgcGFnZXIiLAorCQkJTl8oInBhZ2VyIiksIE5fKCJzaG93IG1hdGNoaW5nIGZpbGVzIGluIHRoZSBwYWdlciIpLAogCQkJUEFSU0VfT1BUX09QVEFSRywgTlVMTCwgKGludHB0cl90KWRlZmF1bHRfcGFnZXIgfSwKIAkJT1BUX0JPT0xFQU4oMCwgImV4dC1ncmVwIiwgJmV4dGVybmFsX2dyZXBfYWxsb3dlZF9faWdub3JlZCwKLQkJCSAgICAiYWxsb3cgY2FsbGluZyBvZiBncmVwKDEpIChpZ25vcmVkIGJ5IHRoaXMgYnVpbGQpIiksCi0JCXsgT1BUSU9OX0NBTExCQUNLLCAwLCAiaGVscC1hbGwiLCAmb3B0aW9ucywgTlVMTCwgInNob3cgdXNhZ2UiLAorCQkJICAgIE5fKCJhbGxvdyBjYWxsaW5nIG9mIGdyZXAoMSkgKGlnbm9yZWQgYnkgdGhpcyBidWlsZCkiKSksCisJCXsgT1BUSU9OX0NBTExCQUNLLCAwLCAiaGVscC1hbGwiLCAmb3B0aW9ucywgTlVMTCwgTl8oInNob3cgdXNhZ2UiKSwKIAkJICBQQVJTRV9PUFRfSElEREVOIHwgUEFSU0VfT1BUX05PQVJHLCBoZWxwX2NhbGxiYWNrIH0sCiAJCU9QVF9FTkQoKQogCX07CkBAIC03OTAsMjUgKzc1Myw5IEBACiAJaWYgKGFyZ2MgPT0gMiAmJiAhc3RyY21wKGFyZ3ZbMV0sICItaCIpKQogCQl1c2FnZV93aXRoX29wdGlvbnMoZ3JlcF91c2FnZSwgb3B0aW9ucyk7CiAKLQltZW1zZXQoJm9wdCwgMCwgc2l6ZW9mKG9wdCkpOwotCW9wdC5wcmVmaXggPSBwcmVmaXg7Ci0Jb3B0LnByZWZpeF9sZW5ndGggPSAocHJlZml4ICYmICpwcmVmaXgpID8gc3RybGVuKHByZWZpeCkgOiAwOwotCW9wdC5yZWxhdGl2ZSA9IDE7Ci0Jb3B0LnBhdGhuYW1lID0gMTsKLQlvcHQucGF0dGVybl90YWlsID0gJm9wdC5wYXR0ZXJuX2xpc3Q7Ci0Jb3B0LmhlYWRlcl90YWlsID0gJm9wdC5oZWFkZXJfbGlzdDsKLQlvcHQucmVnZmxhZ3MgPSBSRUdfTkVXTElORTsKLQlvcHQubWF4X2RlcHRoID0gLTE7Ci0KLQlzdHJjcHkob3B0LmNvbG9yX2NvbnRleHQsICIiKTsKLQlzdHJjcHkob3B0LmNvbG9yX2ZpbGVuYW1lLCAiIik7Ci0Jc3RyY3B5KG9wdC5jb2xvcl9mdW5jdGlvbiwgIiIpOwotCXN0cmNweShvcHQuY29sb3JfbGluZW5vLCAiIik7Ci0Jc3RyY3B5KG9wdC5jb2xvcl9tYXRjaCwgR0lUX0NPTE9SX0JPTERfUkVEKTsKLQlzdHJjcHkob3B0LmNvbG9yX3NlbGVjdGVkLCAiIik7Ci0Jc3RyY3B5KG9wdC5jb2xvcl9zZXAsIEdJVF9DT0xPUl9DWUFOKTsKLQlvcHQuY29sb3IgPSAtMTsKLQlnaXRfY29uZmlnKGdyZXBfY29uZmlnLCAmb3B0KTsKKwlpbml0X2dyZXBfZGVmYXVsdHMoKTsKKwlnaXRfY29uZmlnKGdyZXBfY21kX2NvbmZpZywgTlVMTCk7CisJZ3JlcF9pbml0KCZvcHQsIHByZWZpeCk7CiAKIAkvKgogCSAqIElmIHRoZXJlIGlzIG5vIC0tIHRoZW4gdGhlIHBhdGhzIG11c3QgZXhpc3QgaW4gdGhlIHdvcmtpbmcKQEAgLTgyNCwyOCArNzcxLDcgQEAKIAkJCSAgICAgUEFSU0VfT1BUX0tFRVBfREFTSERBU0ggfAogCQkJICAgICBQQVJTRV9PUFRfU1RPUF9BVF9OT05fT1BUSU9OIHwKIAkJCSAgICAgUEFSU0VfT1BUX05PX0lOVEVSTkFMX0hFTFApOwotCXN3aXRjaCAocGF0dGVybl90eXBlKSB7Ci0JY2FzZSBwYXR0ZXJuX3R5cGVfZml4ZWQ6Ci0JCW9wdC5maXhlZCA9IDE7Ci0JCW9wdC5wY3JlID0gMDsKLQkJYnJlYWs7Ci0JY2FzZSBwYXR0ZXJuX3R5cGVfYnJlOgotCQlvcHQuZml4ZWQgPSAwOwotCQlvcHQucGNyZSA9IDA7Ci0JCW9wdC5yZWdmbGFncyAmPSB+UkVHX0VYVEVOREVEOwotCQlicmVhazsKLQljYXNlIHBhdHRlcm5fdHlwZV9lcmU6Ci0JCW9wdC5maXhlZCA9IDA7Ci0JCW9wdC5wY3JlID0gMDsKLQkJb3B0LnJlZ2ZsYWdzIHw9IFJFR19FWFRFTkRFRDsKLQkJYnJlYWs7Ci0JY2FzZSBwYXR0ZXJuX3R5cGVfcGNyZToKLQkJb3B0LmZpeGVkID0gMDsKLQkJb3B0LnBjcmUgPSAxOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlicmVhazsgLyogbm90aGluZyAqLwotCX0KKwlncmVwX2NvbW1pdF9wYXR0ZXJuX3R5cGUocGF0dGVybl90eXBlX2FyZywgJm9wdCk7CiAKIAlpZiAodXNlX2luZGV4ICYmICFzdGFydHVwX2luZm8tPmhhdmVfcmVwb3NpdG9yeSkKIAkJLyogZGllIHRoZSBzYW1lIHdheSBhcyBpZiB3ZSBkaWQgaXQgYXQgdGhlIGJlZ2lubmluZyAqLwpAQCAtODk0LDkgKzgyMCw5IEBACiAJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAJCS8qIElzIGl0IGEgcmV2PyAqLwogCQlpZiAoIWdldF9zaGExKGFyZywgc2hhMSkpIHsKLQkJCXN0cnVjdCBvYmplY3QgKm9iamVjdCA9IHBhcnNlX29iamVjdChzaGExKTsKLQkJCWlmICghb2JqZWN0KQotCQkJCWRpZShfKCJiYWQgb2JqZWN0ICVzIiksIGFyZyk7CisJCQlzdHJ1Y3Qgb2JqZWN0ICpvYmplY3QgPSBwYXJzZV9vYmplY3Rfb3JfZGllKHNoYTEsIGFyZyk7CisJCQlpZiAoIXNlZW5fZGFzaGRhc2gpCisJCQkJdmVyaWZ5X25vbl9maWxlbmFtZShwcmVmaXgsIGFyZyk7CiAJCQlhZGRfb2JqZWN0X2FycmF5KG9iamVjdCwgYXJnLCAmbGlzdCk7CiAJCQljb250aW51ZTsKIAkJfQpAQCAtOTI4LDcgKzg1NCw3IEBACiAJaWYgKCFzZWVuX2Rhc2hkYXNoKSB7CiAJCWludCBqOwogCQlmb3IgKGogPSBpOyBqIDwgYXJnYzsgaisrKQotCQkJdmVyaWZ5X2ZpbGVuYW1lKHByZWZpeCwgYXJndltqXSk7CisJCQl2ZXJpZnlfZmlsZW5hbWUocHJlZml4LCBhcmd2W2pdLCBqID09IGkpOwogCX0KIAogCXBhdGhzID0gZ2V0X3BhdGhzcGVjKHByZWZpeCwgYXJndiArIGkpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9oYXNoLW9iamVjdC5jIGIvYnVpbHRpbi9oYXNoLW9iamVjdC5jCmluZGV4IDMzOTExZmQuLjhkMTg0ZjEgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vaGFzaC1vYmplY3QuYworKysgYi9idWlsdGluL2hhc2gtb2JqZWN0LmMKQEAgLTU3LDggKzU3LDggQEAKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBoYXNoX29iamVjdF91c2FnZVtdID0gewotCSJnaXQgaGFzaC1vYmplY3QgWy10IDx0eXBlPl0gWy13XSBbLS1wYXRoPTxmaWxlPnwtLW5vLWZpbHRlcnNdIFstLXN0ZGluXSBbLS1dIDxmaWxlPi4uLiIsCi0JImdpdCBoYXNoLW9iamVjdCAgLS1zdGRpbi1wYXRocyA8IDxsaXN0LW9mLXBhdGhzPiIsCisJTl8oImdpdCBoYXNoLW9iamVjdCBbLXQgPHR5cGU+XSBbLXddIFstLXBhdGg9PGZpbGU+fC0tbm8tZmlsdGVyc10gWy0tc3RkaW5dIFstLV0gPGZpbGU+Li4uIiksCisJTl8oImdpdCBoYXNoLW9iamVjdCAgLS1zdGRpbi1wYXRocyA8IDxsaXN0LW9mLXBhdGhzPiIpLAogCU5VTEwKIH07CiAKQEAgLTY5LDEyICs2OSwxMiBAQAogc3RhdGljIGNvbnN0IGNoYXIgKnZwYXRoOwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBoYXNoX29iamVjdF9vcHRpb25zW10gPSB7Ci0JT1BUX1NUUklORygndCcsIE5VTEwsICZ0eXBlLCAidHlwZSIsICJvYmplY3QgdHlwZSIpLAotCU9QVF9CT09MRUFOKCd3JywgTlVMTCwgJndyaXRlX29iamVjdCwgIndyaXRlIHRoZSBvYmplY3QgaW50byB0aGUgb2JqZWN0IGRhdGFiYXNlIiksCi0JT1BUX0JPT0xFQU4oIDAgLCAic3RkaW4iLCAmaGFzaHN0ZGluLCAicmVhZCB0aGUgb2JqZWN0IGZyb20gc3RkaW4iKSwKLQlPUFRfQk9PTEVBTiggMCAsICJzdGRpbi1wYXRocyIsICZzdGRpbl9wYXRocywgInJlYWQgZmlsZSBuYW1lcyBmcm9tIHN0ZGluIiksCi0JT1BUX0JPT0xFQU4oIDAgLCAibm8tZmlsdGVycyIsICZub19maWx0ZXJzLCAic3RvcmUgZmlsZSBhcyBpcyB3aXRob3V0IGZpbHRlcnMiKSwKLQlPUFRfU1RSSU5HKCAwICwgInBhdGgiLCAmdnBhdGgsICJmaWxlIiwgInByb2Nlc3MgZmlsZSBhcyBpdCB3ZXJlIGZyb20gdGhpcyBwYXRoIiksCisJT1BUX1NUUklORygndCcsIE5VTEwsICZ0eXBlLCBOXygidHlwZSIpLCBOXygib2JqZWN0IHR5cGUiKSksCisJT1BUX0JPT0xFQU4oJ3cnLCBOVUxMLCAmd3JpdGVfb2JqZWN0LCBOXygid3JpdGUgdGhlIG9iamVjdCBpbnRvIHRoZSBvYmplY3QgZGF0YWJhc2UiKSksCisJT1BUX0JPT0xFQU4oIDAgLCAic3RkaW4iLCAmaGFzaHN0ZGluLCBOXygicmVhZCB0aGUgb2JqZWN0IGZyb20gc3RkaW4iKSksCisJT1BUX0JPT0xFQU4oIDAgLCAic3RkaW4tcGF0aHMiLCAmc3RkaW5fcGF0aHMsIE5fKCJyZWFkIGZpbGUgbmFtZXMgZnJvbSBzdGRpbiIpKSwKKwlPUFRfQk9PTEVBTiggMCAsICJuby1maWx0ZXJzIiwgJm5vX2ZpbHRlcnMsIE5fKCJzdG9yZSBmaWxlIGFzIGlzIHdpdGhvdXQgZmlsdGVycyIpKSwKKwlPUFRfU1RSSU5HKCAwICwgInBhdGgiLCAmdnBhdGgsIE5fKCJmaWxlIiksIE5fKCJwcm9jZXNzIGZpbGUgYXMgaXQgd2VyZSBmcm9tIHRoaXMgcGF0aCIpKSwKIAlPUFRfRU5EKCkKIH07CiAKZGlmZiAtLWdpdCBhL2J1aWx0aW4vaGVscC5jIGIvYnVpbHRpbi9oZWxwLmMKaW5kZXggNDNkM2M4NC4uMDYyOTU3ZiAxMDA2NDQKLS0tIGEvYnVpbHRpbi9oZWxwLmMKKysrIGIvYnVpbHRpbi9oZWxwLmMKQEAgLTYsMTIgKzYsMTUgQEAKICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgImJ1aWx0aW4uaCIKICNpbmNsdWRlICJleGVjX2NtZC5oIgotI2luY2x1ZGUgImNvbW1vbi1jbWRzLmgiCiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgogI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCiAjaW5jbHVkZSAiY29sdW1uLmgiCiAjaW5jbHVkZSAiaGVscC5oIgogCisjaWZuZGVmIERFRkFVTFRfSEVMUF9GT1JNQVQKKyNkZWZpbmUgREVGQVVMVF9IRUxQX0ZPUk1BVCAibWFuIgorI2VuZGlmCisKIHN0YXRpYyBzdHJ1Y3QgbWFuX3ZpZXdlcl9saXN0IHsKIAlzdHJ1Y3QgbWFuX3ZpZXdlcl9saXN0ICpuZXh0OwogCWNoYXIgbmFtZVtGTEVYX0FSUkFZXTsKQEAgLTMwLDIxICszMywyNSBAQAogCUhFTFBfRk9STUFUX1dFQgogfTsKIAorc3RhdGljIGNvbnN0IGNoYXIgKmh0bWxfcGF0aDsKKwogc3RhdGljIGludCBzaG93X2FsbCA9IDA7CitzdGF0aWMgaW50IHNob3dfZ3VpZGVzID0gMDsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgY29sb3B0czsKIHN0YXRpYyBlbnVtIGhlbHBfZm9ybWF0IGhlbHBfZm9ybWF0ID0gSEVMUF9GT1JNQVRfTk9ORTsKIHN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5faGVscF9vcHRpb25zW10gPSB7Ci0JT1BUX0JPT0xFQU4oJ2EnLCAiYWxsIiwgJnNob3dfYWxsLCAicHJpbnQgYWxsIGF2YWlsYWJsZSBjb21tYW5kcyIpLAotCU9QVF9TRVRfSU5UKCdtJywgIm1hbiIsICZoZWxwX2Zvcm1hdCwgInNob3cgbWFuIHBhZ2UiLCBIRUxQX0ZPUk1BVF9NQU4pLAotCU9QVF9TRVRfSU5UKCd3JywgIndlYiIsICZoZWxwX2Zvcm1hdCwgInNob3cgbWFudWFsIGluIHdlYiBicm93c2VyIiwKKwlPUFRfQk9PTCgnYScsICJhbGwiLCAmc2hvd19hbGwsIE5fKCJwcmludCBhbGwgYXZhaWxhYmxlIGNvbW1hbmRzIikpLAorCU9QVF9CT09MKCdnJywgImd1aWRlcyIsICZzaG93X2d1aWRlcywgTl8oInByaW50IGxpc3Qgb2YgdXNlZnVsIGd1aWRlcyIpKSwKKwlPUFRfU0VUX0lOVCgnbScsICJtYW4iLCAmaGVscF9mb3JtYXQsIE5fKCJzaG93IG1hbiBwYWdlIiksIEhFTFBfRk9STUFUX01BTiksCisJT1BUX1NFVF9JTlQoJ3cnLCAid2ViIiwgJmhlbHBfZm9ybWF0LCBOXygic2hvdyBtYW51YWwgaW4gd2ViIGJyb3dzZXIiKSwKIAkJCUhFTFBfRk9STUFUX1dFQiksCi0JT1BUX1NFVF9JTlQoJ2knLCAiaW5mbyIsICZoZWxwX2Zvcm1hdCwgInNob3cgaW5mbyBwYWdlIiwKKwlPUFRfU0VUX0lOVCgnaScsICJpbmZvIiwgJmhlbHBfZm9ybWF0LCBOXygic2hvdyBpbmZvIHBhZ2UiKSwKIAkJCUhFTFBfRk9STUFUX0lORk8pLAogCU9QVF9FTkQoKSwKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9oZWxwX3VzYWdlW10gPSB7Ci0JImdpdCBoZWxwIFstLWFsbF0gWy0tbWFufC0td2VifC0taW5mb10gW2NvbW1hbmRdIiwKKwlOXygiZ2l0IGhlbHAgWy0tYWxsXSBbLS1ndWlkZXNdIFstLW1hbnwtLXdlYnwtLWluZm9dIFtjb21tYW5kXSIpLAogCU5VTEwKIH07CiAKQEAgLTIzMSwyMSArMjM4LDIxIEBACiAKIHN0YXRpYyBpbnQgYWRkX21hbl92aWV3ZXJfaW5mbyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlKQogewotCWNvbnN0IGNoYXIgKm5hbWUgPSB2YXIgKyA0OwotCWNvbnN0IGNoYXIgKnN1YmtleSA9IHN0cnJjaHIobmFtZSwgJy4nKTsKKwljb25zdCBjaGFyICpuYW1lLCAqc3Via2V5OworCWludCBuYW1lbGVuOwogCi0JaWYgKCFzdWJrZXkpCisJaWYgKHBhcnNlX2NvbmZpZ19rZXkodmFyLCAibWFuIiwgJm5hbWUsICZuYW1lbGVuLCAmc3Via2V5KSA8IDAgfHwgIW5hbWUpCiAJCXJldHVybiAwOwogCi0JaWYgKCFzdHJjbXAoc3Via2V5LCAiLnBhdGgiKSkgeworCWlmICghc3RyY21wKHN1YmtleSwgInBhdGgiKSkgewogCQlpZiAoIXZhbHVlKQogCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKHZhcik7Ci0JCXJldHVybiBhZGRfbWFuX3ZpZXdlcl9wYXRoKG5hbWUsIHN1YmtleSAtIG5hbWUsIHZhbHVlKTsKKwkJcmV0dXJuIGFkZF9tYW5fdmlld2VyX3BhdGgobmFtZSwgbmFtZWxlbiwgdmFsdWUpOwogCX0KLQlpZiAoIXN0cmNtcChzdWJrZXksICIuY21kIikpIHsKKwlpZiAoIXN0cmNtcChzdWJrZXksICJjbWQiKSkgewogCQlpZiAoIXZhbHVlKQogCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKHZhcik7Ci0JCXJldHVybiBhZGRfbWFuX3ZpZXdlcl9jbWQobmFtZSwgc3Via2V5IC0gbmFtZSwgdmFsdWUpOworCQlyZXR1cm4gYWRkX21hbl92aWV3ZXJfY21kKG5hbWUsIG5hbWVsZW4sIHZhbHVlKTsKIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTI2MSw2ICsyNjgsMTIgQEAKIAkJaGVscF9mb3JtYXQgPSBwYXJzZV9oZWxwX2Zvcm1hdCh2YWx1ZSk7CiAJCXJldHVybiAwOwogCX0KKwlpZiAoIXN0cmNtcCh2YXIsICJoZWxwLmh0bWxwYXRoIikpIHsKKwkJaWYgKCF2YWx1ZSkKKwkJCXJldHVybiBjb25maWdfZXJyb3Jfbm9uYm9vbCh2YXIpOworCQlodG1sX3BhdGggPSB4c3RyZHVwKHZhbHVlKTsKKwkJcmV0dXJuIDA7CisJfQogCWlmICghc3RyY21wKHZhciwgIm1hbi52aWV3ZXIiKSkgewogCQlpZiAoIXZhbHVlKQogCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKHZhcik7CkBAIC0yNzUsMjMgKzI4OCw2IEBACiAKIHN0YXRpYyBzdHJ1Y3QgY21kbmFtZXMgbWFpbl9jbWRzLCBvdGhlcl9jbWRzOwogCi12b2lkIGxpc3RfY29tbW9uX2NtZHNfaGVscCh2b2lkKQotewotCWludCBpLCBsb25nZXN0ID0gMDsKLQotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNvbW1vbl9jbWRzKTsgaSsrKSB7Ci0JCWlmIChsb25nZXN0IDwgc3RybGVuKGNvbW1vbl9jbWRzW2ldLm5hbWUpKQotCQkJbG9uZ2VzdCA9IHN0cmxlbihjb21tb25fY21kc1tpXS5uYW1lKTsKLQl9Ci0KLQlwdXRzKF8oIlRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZ2l0IGNvbW1hbmRzIGFyZToiKSk7Ci0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29tbW9uX2NtZHMpOyBpKyspIHsKLQkJcHJpbnRmKCIgICAlcyAgICIsIGNvbW1vbl9jbWRzW2ldLm5hbWUpOwotCQltcHV0X2NoYXIoJyAnLCBsb25nZXN0IC0gc3RybGVuKGNvbW1vbl9jbWRzW2ldLm5hbWUpKTsKLQkJcHV0cyhfKGNvbW1vbl9jbWRzW2ldLmhlbHApKTsKLQl9Ci19Ci0KIHN0YXRpYyBpbnQgaXNfZ2l0X2NvbW1hbmQoY29uc3QgY2hhciAqcykKIHsKIAlyZXR1cm4gaXNfaW5fY21kbGlzdCgmbWFpbl9jbWRzLCBzKSB8fApAQCAtMzgzLDEyICszNzksMTUgQEAKIHN0YXRpYyB2b2lkIGdldF9odG1sX3BhZ2VfcGF0aChzdHJ1Y3Qgc3RyYnVmICpwYWdlX3BhdGgsIGNvbnN0IGNoYXIgKnBhZ2UpCiB7CiAJc3RydWN0IHN0YXQgc3Q7Ci0JY29uc3QgY2hhciAqaHRtbF9wYXRoID0gc3lzdGVtX3BhdGgoR0lUX0hUTUxfUEFUSCk7CisJaWYgKCFodG1sX3BhdGgpCisJCWh0bWxfcGF0aCA9IHN5c3RlbV9wYXRoKEdJVF9IVE1MX1BBVEgpOwogCiAJLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIGEgZ2l0IGRvY3VtZW50YXRpb24gZGlyZWN0b3J5LiAqLwotCWlmIChzdGF0KG1rcGF0aCgiJXMvZ2l0Lmh0bWwiLCBodG1sX3BhdGgpLCAmc3QpCi0JICAgIHx8ICFTX0lTUkVHKHN0LnN0X21vZGUpKQotCQlkaWUoXygiJyVzJzogbm90IGEgZG9jdW1lbnRhdGlvbiBkaXJlY3RvcnkuIiksIGh0bWxfcGF0aCk7CisJaWYgKCFzdHJzdHIoaHRtbF9wYXRoLCAiOi8vIikpIHsKKwkJaWYgKHN0YXQobWtwYXRoKCIlcy9naXQuaHRtbCIsIGh0bWxfcGF0aCksICZzdCkKKwkJICAgIHx8ICFTX0lTUkVHKHN0LnN0X21vZGUpKQorCQkJZGllKCInJXMnOiBub3QgYSBkb2N1bWVudGF0aW9uIGRpcmVjdG9yeS4iLCBodG1sX3BhdGgpOworCX0KIAogCXN0cmJ1Zl9pbml0KHBhZ2VfcGF0aCwgMCk7CiAJc3RyYnVmX2FkZGYocGFnZV9wYXRoLCAiJXMvJXMuaHRtbCIsIGh0bWxfcGF0aCwgcGFnZSk7CkBAIC00MTYsNiArNDE1LDM3IEBACiAJb3Blbl9odG1sKHBhZ2VfcGF0aC5idWYpOwogfQogCitzdGF0aWMgc3RydWN0IHsKKwljb25zdCBjaGFyICpuYW1lOworCWNvbnN0IGNoYXIgKmhlbHA7Cit9IGNvbW1vbl9ndWlkZXNbXSA9IHsKKwl7ICJhdHRyaWJ1dGVzIiwgTl8oIkRlZmluaW5nIGF0dHJpYnV0ZXMgcGVyIHBhdGgiKSB9LAorCXsgImdsb3NzYXJ5IiwgTl8oIkEgR2l0IGdsb3NzYXJ5IikgfSwKKwl7ICJpZ25vcmUiLCBOXygiU3BlY2lmaWVzIGludGVudGlvbmFsbHkgdW50cmFja2VkIGZpbGVzIHRvIGlnbm9yZSIpIH0sCisJeyAibW9kdWxlcyIsIE5fKCJEZWZpbmluZyBzdWJtb2R1bGUgcHJvcGVydGllcyIpIH0sCisJeyAicmV2aXNpb25zIiwgTl8oIlNwZWNpZnlpbmcgcmV2aXNpb25zIGFuZCByYW5nZXMgZm9yIEdpdCIpIH0sCisJeyAidHV0b3JpYWwiLCBOXygiQSB0dXRvcmlhbCBpbnRyb2R1Y3Rpb24gdG8gR2l0IChmb3IgdmVyc2lvbiAxLjUuMSBvciBuZXdlcikiKSB9LAorCXsgIndvcmtmbG93cyIsIE5fKCJBbiBvdmVydmlldyBvZiByZWNvbW1lbmRlZCB3b3JrZmxvd3Mgd2l0aCBHaXQiKSB9LAorfTsKKworc3RhdGljIHZvaWQgbGlzdF9jb21tb25fZ3VpZGVzX2hlbHAodm9pZCkKK3sKKwlpbnQgaSwgbG9uZ2VzdCA9IDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb21tb25fZ3VpZGVzKTsgaSsrKSB7CisJCWlmIChsb25nZXN0IDwgc3RybGVuKGNvbW1vbl9ndWlkZXNbaV0ubmFtZSkpCisJCQlsb25nZXN0ID0gc3RybGVuKGNvbW1vbl9ndWlkZXNbaV0ubmFtZSk7CisJfQorCisJcHV0cyhfKCJUaGUgY29tbW9uIEdpdCBndWlkZXMgYXJlOlxuIikpOworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNvbW1vbl9ndWlkZXMpOyBpKyspIHsKKwkJcHJpbnRmKCIgICAlcyAgICIsIGNvbW1vbl9ndWlkZXNbaV0ubmFtZSk7CisJCW1wdXRfY2hhcignICcsIGxvbmdlc3QgLSBzdHJsZW4oY29tbW9uX2d1aWRlc1tpXS5uYW1lKSk7CisJCXB1dHMoXyhjb21tb25fZ3VpZGVzW2ldLmhlbHApKTsKKwl9CisJcHV0Y2hhcignXG4nKTsKK30KKwogaW50IGNtZF9oZWxwKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewogCWludCBub25naXQ7CkBAIC00MzEsNyArNDYxLDE2IEBACiAJCWdpdF9jb25maWcoZ2l0X2hlbHBfY29uZmlnLCBOVUxMKTsKIAkJcHJpbnRmKF8oInVzYWdlOiAlcyVzIiksIF8oZ2l0X3VzYWdlX3N0cmluZyksICJcblxuIik7CiAJCWxpc3RfY29tbWFuZHMoY29sb3B0cywgJm1haW5fY21kcywgJm90aGVyX2NtZHMpOworCX0KKworCWlmIChzaG93X2d1aWRlcykKKwkJbGlzdF9jb21tb25fZ3VpZGVzX2hlbHAoKTsKKworCWlmIChzaG93X2FsbCB8fCBzaG93X2d1aWRlcykgewogCQlwcmludGYoIiVzXG4iLCBfKGdpdF9tb3JlX2luZm9fc3RyaW5nKSk7CisJCS8qCisJCSogV2UncmUgZG9uZS4gSWdub3JlIGFueSByZW1haW5pbmcgYXJncworCQkqLwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTQ0Nyw2ICs0ODYsOCBAQAogCiAJaWYgKHBhcnNlZF9oZWxwX2Zvcm1hdCAhPSBIRUxQX0ZPUk1BVF9OT05FKQogCQloZWxwX2Zvcm1hdCA9IHBhcnNlZF9oZWxwX2Zvcm1hdDsKKwlpZiAoaGVscF9mb3JtYXQgPT0gSEVMUF9GT1JNQVRfTk9ORSkKKwkJaGVscF9mb3JtYXQgPSBwYXJzZV9oZWxwX2Zvcm1hdChERUZBVUxUX0hFTFBfRk9STUFUKTsKIAogCWFsaWFzID0gYWxpYXNfbG9va3VwKGFyZ3ZbMF0pOwogCWlmIChhbGlhcyAmJiAhaXNfZ2l0X2NvbW1hbmQoYXJndlswXSkpIHsKZGlmZiAtLWdpdCBhL2J1aWx0aW4vaW5kZXgtcGFjay5jIGIvYnVpbHRpbi9pbmRleC1wYWNrLmMKaW5kZXggZGMyY2ZlNi4uNzlkZmU0NyAxMDA2NDQKLS0tIGEvYnVpbHRpbi9pbmRleC1wYWNrLmMKKysrIGIvYnVpbHRpbi9pbmRleC1wYWNrLmMKQEAgLTksNiArOSw3IEBACiAjaW5jbHVkZSAicHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJmc2NrLmgiCiAjaW5jbHVkZSAiZXhlY19jbWQuaCIKKyNpbmNsdWRlICJzdHJlYW1pbmcuaCIKICNpbmNsdWRlICJ0aHJlYWQtdXRpbHMuaCIKIAogc3RhdGljIGNvbnN0IGNoYXIgaW5kZXhfcGFja191c2FnZVtdID0KQEAgLTM5LDggKzQwLDggQEAKIAlpbnQgb2ZzX2ZpcnN0LCBvZnNfbGFzdDsKIH07CiAKLSNpZiAhZGVmaW5lZChOT19QVEhSRUFEUykgJiYgZGVmaW5lZChOT19QUkVBRCkKLS8qIE5PX1BSRUFEIHVzZXMgY29tcGF0L3ByZWFkLmMsIHdoaWNoIGlzIG5vdCB0aHJlYWQtc2FmZS4gRGlzYWJsZSB0aHJlYWRpbmcuICovCisjaWYgIWRlZmluZWQoTk9fUFRIUkVBRFMpICYmIGRlZmluZWQoTk9fVEhSRUFEX1NBRkVfUFJFQUQpCisvKiBwcmVhZCgpIGVtdWxhdGlvbiBpcyBub3QgdGhyZWFkLXNhZmUuIERpc2FibGUgdGhyZWFkaW5nLiAqLwogI2RlZmluZSBOT19QVEhSRUFEUwogI2VuZGlmCiAKQEAgLTc3LDYgKzc4LDcgQEAKIHN0YXRpYyBpbnQgZnJvbV9zdGRpbjsKIHN0YXRpYyBpbnQgc3RyaWN0Owogc3RhdGljIGludCB2ZXJib3NlOworc3RhdGljIGludCBzaG93X3N0YXQ7CiAKIHN0YXRpYyBzdHJ1Y3QgcHJvZ3Jlc3MgKnByb2dyZXNzOwogCkBAIC0xMDcsNiArMTA5LDEwIEBACiAjZGVmaW5lIHdvcmtfbG9jaygpCQlsb2NrX211dGV4KCZ3b3JrX211dGV4KQogI2RlZmluZSB3b3JrX3VubG9jaygpCQl1bmxvY2tfbXV0ZXgoJndvcmtfbXV0ZXgpCiAKK3N0YXRpYyBwdGhyZWFkX211dGV4X3QgZGVlcGVzdF9kZWx0YV9tdXRleDsKKyNkZWZpbmUgZGVlcGVzdF9kZWx0YV9sb2NrKCkJbG9ja19tdXRleCgmZGVlcGVzdF9kZWx0YV9tdXRleCkKKyNkZWZpbmUgZGVlcGVzdF9kZWx0YV91bmxvY2soKQl1bmxvY2tfbXV0ZXgoJmRlZXBlc3RfZGVsdGFfbXV0ZXgpCisKIHN0YXRpYyBwdGhyZWFkX2tleV90IGtleTsKIAogc3RhdGljIGlubGluZSB2b2lkIGxvY2tfbXV0ZXgocHRocmVhZF9tdXRleF90ICptdXRleCkKQEAgLTEyOSw2ICsxMzUsOCBAQAogCWluaXRfcmVjdXJzaXZlX211dGV4KCZyZWFkX211dGV4KTsKIAlwdGhyZWFkX211dGV4X2luaXQoJmNvdW50ZXJfbXV0ZXgsIE5VTEwpOwogCXB0aHJlYWRfbXV0ZXhfaW5pdCgmd29ya19tdXRleCwgTlVMTCk7CisJaWYgKHNob3dfc3RhdCkKKwkJcHRocmVhZF9tdXRleF9pbml0KCZkZWVwZXN0X2RlbHRhX211dGV4LCBOVUxMKTsKIAlwdGhyZWFkX2tleV9jcmVhdGUoJmtleSwgTlVMTCk7CiAJdGhyZWFkX2RhdGEgPSB4Y2FsbG9jKG5yX3RocmVhZHMsIHNpemVvZigqdGhyZWFkX2RhdGEpKTsKIAl0aHJlYWRzX2FjdGl2ZSA9IDE7CkBAIC0xNDIsNiArMTUwLDggQEAKIAlwdGhyZWFkX211dGV4X2Rlc3Ryb3koJnJlYWRfbXV0ZXgpOwogCXB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmY291bnRlcl9tdXRleCk7CiAJcHRocmVhZF9tdXRleF9kZXN0cm95KCZ3b3JrX211dGV4KTsKKwlpZiAoc2hvd19zdGF0KQorCQlwdGhyZWFkX211dGV4X2Rlc3Ryb3koJmRlZXBlc3RfZGVsdGFfbXV0ZXgpOwogCXB0aHJlYWRfa2V5X2RlbGV0ZShrZXkpOwogCWZyZWUodGhyZWFkX2RhdGEpOwogfQpAQCAtMTU3LDYgKzE2Nyw5IEBACiAjZGVmaW5lIHdvcmtfbG9jaygpCiAjZGVmaW5lIHdvcmtfdW5sb2NrKCkKIAorI2RlZmluZSBkZWVwZXN0X2RlbHRhX2xvY2soKQorI2RlZmluZSBkZWVwZXN0X2RlbHRhX3VubG9jaygpCisKICNlbmRpZgogCiAKQEAgLTI5MCw3ICszMDMsNyBAQAogCWlmIChoZHItPmhkcl9zaWduYXR1cmUgIT0gaHRvbmwoUEFDS19TSUdOQVRVUkUpKQogCQlkaWUoXygicGFjayBzaWduYXR1cmUgbWlzbWF0Y2giKSk7CiAJaWYgKCFwYWNrX3ZlcnNpb25fb2soaGRyLT5oZHJfdmVyc2lvbikpCi0JCWRpZSgicGFjayB2ZXJzaW9uICUiUFJJdTMyIiB1bnN1cHBvcnRlZCIsCisJCWRpZShfKCJwYWNrIHZlcnNpb24gJSJQUkl1MzIiIHVuc3VwcG9ydGVkIiksCiAJCQludG9obChoZHItPmhkcl92ZXJzaW9uKSk7CiAKIAlucl9vYmplY3RzID0gbnRvaGwoaGRyLT5oZHJfZW50cmllcyk7CkBAIC0zODQsMzAgKzM5Nyw2MiBAQAogCWZyZWVfYmFzZV9kYXRhKGMpOwogfQogCi1zdGF0aWMgdm9pZCAqdW5wYWNrX2VudHJ5X2RhdGEodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKK3N0YXRpYyBpbnQgaXNfZGVsdGFfdHlwZShlbnVtIG9iamVjdF90eXBlIHR5cGUpCiB7CisJcmV0dXJuICh0eXBlID09IE9CSl9SRUZfREVMVEEgfHwgdHlwZSA9PSBPQkpfT0ZTX0RFTFRBKTsKK30KKworc3RhdGljIHZvaWQgKnVucGFja19lbnRyeV9kYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUsCisJCQkgICAgICAgZW51bSBvYmplY3RfdHlwZSB0eXBlLCB1bnNpZ25lZCBjaGFyICpzaGExKQoreworCXN0YXRpYyBjaGFyIGZpeGVkX2J1Zls4MTkyXTsKIAlpbnQgc3RhdHVzOwogCWdpdF96c3RyZWFtIHN0cmVhbTsKLQl2b2lkICpidWYgPSB4bWFsbG9jKHNpemUpOworCXZvaWQgKmJ1ZjsKKwlnaXRfU0hBX0NUWCBjOworCWNoYXIgaGRyWzMyXTsKKwlpbnQgaGRybGVuOworCisJaWYgKCFpc19kZWx0YV90eXBlKHR5cGUpKSB7CisJCWhkcmxlbiA9IHNwcmludGYoaGRyLCAiJXMgJWx1IiwgdHlwZW5hbWUodHlwZSksIHNpemUpICsgMTsKKwkJZ2l0X1NIQTFfSW5pdCgmYyk7CisJCWdpdF9TSEExX1VwZGF0ZSgmYywgaGRyLCBoZHJsZW4pOworCX0gZWxzZQorCQlzaGExID0gTlVMTDsKKwlpZiAodHlwZSA9PSBPQkpfQkxPQiAmJiBzaXplID4gYmlnX2ZpbGVfdGhyZXNob2xkKQorCQlidWYgPSBmaXhlZF9idWY7CisJZWxzZQorCQlidWYgPSB4bWFsbG9jKHNpemUpOwogCiAJbWVtc2V0KCZzdHJlYW0sIDAsIHNpemVvZihzdHJlYW0pKTsKIAlnaXRfaW5mbGF0ZV9pbml0KCZzdHJlYW0pOwogCXN0cmVhbS5uZXh0X291dCA9IGJ1ZjsKLQlzdHJlYW0uYXZhaWxfb3V0ID0gc2l6ZTsKKwlzdHJlYW0uYXZhaWxfb3V0ID0gYnVmID09IGZpeGVkX2J1ZiA/IHNpemVvZihmaXhlZF9idWYpIDogc2l6ZTsKIAogCWRvIHsKKwkJdW5zaWduZWQgY2hhciAqbGFzdF9vdXQgPSBzdHJlYW0ubmV4dF9vdXQ7CiAJCXN0cmVhbS5uZXh0X2luID0gZmlsbCgxKTsKIAkJc3RyZWFtLmF2YWlsX2luID0gaW5wdXRfbGVuOwogCQlzdGF0dXMgPSBnaXRfaW5mbGF0ZSgmc3RyZWFtLCAwKTsKIAkJdXNlKGlucHV0X2xlbiAtIHN0cmVhbS5hdmFpbF9pbik7CisJCWlmIChzaGExKQorCQkJZ2l0X1NIQTFfVXBkYXRlKCZjLCBsYXN0X291dCwgc3RyZWFtLm5leHRfb3V0IC0gbGFzdF9vdXQpOworCQlpZiAoYnVmID09IGZpeGVkX2J1ZikgeworCQkJc3RyZWFtLm5leHRfb3V0ID0gYnVmOworCQkJc3RyZWFtLmF2YWlsX291dCA9IHNpemVvZihmaXhlZF9idWYpOworCQl9CiAJfSB3aGlsZSAoc3RhdHVzID09IFpfT0spOwogCWlmIChzdHJlYW0udG90YWxfb3V0ICE9IHNpemUgfHwgc3RhdHVzICE9IFpfU1RSRUFNX0VORCkKIAkJYmFkX29iamVjdChvZmZzZXQsIF8oImluZmxhdGUgcmV0dXJuZWQgJWQiKSwgc3RhdHVzKTsKIAlnaXRfaW5mbGF0ZV9lbmQoJnN0cmVhbSk7Ci0JcmV0dXJuIGJ1ZjsKKwlpZiAoc2hhMSkKKwkJZ2l0X1NIQTFfRmluYWwoc2hhMSwgJmMpOworCXJldHVybiBidWYgPT0gZml4ZWRfYnVmID8gTlVMTCA6IGJ1ZjsKIH0KIAotc3RhdGljIHZvaWQgKnVucGFja19yYXdfZW50cnkoc3RydWN0IG9iamVjdF9lbnRyeSAqb2JqLCB1bmlvbiBkZWx0YV9iYXNlICpkZWx0YV9iYXNlKQorc3RhdGljIHZvaWQgKnVucGFja19yYXdfZW50cnkoc3RydWN0IG9iamVjdF9lbnRyeSAqb2JqLAorCQkJICAgICAgdW5pb24gZGVsdGFfYmFzZSAqZGVsdGFfYmFzZSwKKwkJCSAgICAgIHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7CiAJdW5zaWduZWQgY2hhciAqcDsKIAl1bnNpZ25lZCBsb25nIHNpemUsIGM7CkBAIC00NjcsMTIgKzUxMiwxNCBAQAogCX0KIAlvYmotPmhkcl9zaXplID0gY29uc3VtZWRfYnl0ZXMgLSBvYmotPmlkeC5vZmZzZXQ7CiAKLQlkYXRhID0gdW5wYWNrX2VudHJ5X2RhdGEob2JqLT5pZHgub2Zmc2V0LCBvYmotPnNpemUpOworCWRhdGEgPSB1bnBhY2tfZW50cnlfZGF0YShvYmotPmlkeC5vZmZzZXQsIG9iai0+c2l6ZSwgb2JqLT50eXBlLCBzaGExKTsKIAlvYmotPmlkeC5jcmMzMiA9IGlucHV0X2NyYzMyOwogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgdm9pZCAqZ2V0X2RhdGFfZnJvbV9wYWNrKHN0cnVjdCBvYmplY3RfZW50cnkgKm9iaikKK3N0YXRpYyB2b2lkICp1bnBhY2tfZGF0YShzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICpvYmosCisJCQkgaW50ICgqY29uc3VtZSkoY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopLAorCQkJIHZvaWQgKmNiX2RhdGEpCiB7CiAJb2ZmX3QgZnJvbSA9IG9ialswXS5pZHgub2Zmc2V0ICsgb2JqWzBdLmhkcl9zaXplOwogCXVuc2lnbmVkIGxvbmcgbGVuID0gb2JqWzFdLmlkeC5vZmZzZXQgLSBmcm9tOwpAQCAtNDgwLDEzICs1MjcsMTMgQEAKIAlnaXRfenN0cmVhbSBzdHJlYW07CiAJaW50IHN0YXR1czsKIAotCWRhdGEgPSB4bWFsbG9jKG9iai0+c2l6ZSk7CisJZGF0YSA9IHhtYWxsb2MoY29uc3VtZSA/IDY0KjEwMjQgOiBvYmotPnNpemUpOwogCWluYnVmID0geG1hbGxvYygobGVuIDwgNjQqMTAyNCkgPyBsZW4gOiA2NCoxMDI0KTsKIAogCW1lbXNldCgmc3RyZWFtLCAwLCBzaXplb2Yoc3RyZWFtKSk7CiAJZ2l0X2luZmxhdGVfaW5pdCgmc3RyZWFtKTsKIAlzdHJlYW0ubmV4dF9vdXQgPSBkYXRhOwotCXN0cmVhbS5hdmFpbF9vdXQgPSBvYmotPnNpemU7CisJc3RyZWFtLmF2YWlsX291dCA9IGNvbnN1bWUgPyA2NCoxMDI0IDogb2JqLT5zaXplOwogCiAJZG8gewogCQlzc2l6ZV90IG4gPSAobGVuIDwgNjQqMTAyNCkgPyBsZW4gOiA2NCoxMDI0OwpAQCAtNTAyLDcgKzU0OSwyMCBAQAogCQlsZW4gLT0gbjsKIAkJc3RyZWFtLm5leHRfaW4gPSBpbmJ1ZjsKIAkJc3RyZWFtLmF2YWlsX2luID0gbjsKLQkJc3RhdHVzID0gZ2l0X2luZmxhdGUoJnN0cmVhbSwgMCk7CisJCWlmICghY29uc3VtZSkKKwkJCXN0YXR1cyA9IGdpdF9pbmZsYXRlKCZzdHJlYW0sIDApOworCQllbHNlIHsKKwkJCWRvIHsKKwkJCQlzdGF0dXMgPSBnaXRfaW5mbGF0ZSgmc3RyZWFtLCAwKTsKKwkJCQlpZiAoY29uc3VtZShkYXRhLCBzdHJlYW0ubmV4dF9vdXQgLSBkYXRhLCBjYl9kYXRhKSkgeworCQkJCQlmcmVlKGluYnVmKTsKKwkJCQkJZnJlZShkYXRhKTsKKwkJCQkJcmV0dXJuIE5VTEw7CisJCQkJfQorCQkJCXN0cmVhbS5uZXh0X291dCA9IGRhdGE7CisJCQkJc3RyZWFtLmF2YWlsX291dCA9IDY0KjEwMjQ7CisJCQl9IHdoaWxlIChzdGF0dXMgPT0gWl9PSyAmJiBzdHJlYW0uYXZhaWxfaW4pOworCQl9CiAJfSB3aGlsZSAobGVuICYmIHN0YXR1cyA9PSBaX09LICYmICFzdHJlYW0uYXZhaWxfaW4pOwogCiAJLyogVGhpcyBoYXMgYmVlbiBpbmZsYXRlZCBPSyB3aGVuIGZpcnN0IGVuY291bnRlcmVkLCBzby4uLiAqLwpAQCAtNTExLDkgKzU3MSwxOCBAQAogCiAJZ2l0X2luZmxhdGVfZW5kKCZzdHJlYW0pOwogCWZyZWUoaW5idWYpOworCWlmIChjb25zdW1lKSB7CisJCWZyZWUoZGF0YSk7CisJCWRhdGEgPSBOVUxMOworCX0KIAlyZXR1cm4gZGF0YTsKIH0KIAorc3RhdGljIHZvaWQgKmdldF9kYXRhX2Zyb21fcGFjayhzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICpvYmopCit7CisJcmV0dXJuIHVucGFja19kYXRhKG9iaiwgTlVMTCwgTlVMTCk7Cit9CisKIHN0YXRpYyBpbnQgY29tcGFyZV9kZWx0YV9iYXNlcyhjb25zdCB1bmlvbiBkZWx0YV9iYXNlICpiYXNlMSwKIAkJCSAgICAgICBjb25zdCB1bmlvbiBkZWx0YV9iYXNlICpiYXNlMiwKIAkJCSAgICAgICBlbnVtIG9iamVjdF90eXBlIHR5cGUxLApAQCAtNTY4LDI1ICs2MzcsMTAyIEBACiAJKmxhc3RfaW5kZXggPSBsYXN0OwogfQogCi1zdGF0aWMgdm9pZCBzaGExX29iamVjdChjb25zdCB2b2lkICpkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUsCi0JCQllbnVtIG9iamVjdF90eXBlIHR5cGUsIHVuc2lnbmVkIGNoYXIgKnNoYTEpCitzdHJ1Y3QgY29tcGFyZV9kYXRhIHsKKwlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICplbnRyeTsKKwlzdHJ1Y3QgZ2l0X2lzdHJlYW0gKnN0OworCXVuc2lnbmVkIGNoYXIgKmJ1ZjsKKwl1bnNpZ25lZCBsb25nIGJ1Zl9zaXplOworfTsKKworc3RhdGljIGludCBjb21wYXJlX29iamVjdHMoY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nIHNpemUsCisJCQkgICB2b2lkICpjYl9kYXRhKQogewotCWhhc2hfc2hhMV9maWxlKGRhdGEsIHNpemUsIHR5cGVuYW1lKHR5cGUpLCBzaGExKTsKKwlzdHJ1Y3QgY29tcGFyZV9kYXRhICpkYXRhID0gY2JfZGF0YTsKKworCWlmIChkYXRhLT5idWZfc2l6ZSA8IHNpemUpIHsKKwkJZnJlZShkYXRhLT5idWYpOworCQlkYXRhLT5idWYgPSB4bWFsbG9jKHNpemUpOworCQlkYXRhLT5idWZfc2l6ZSA9IHNpemU7CisJfQorCisJd2hpbGUgKHNpemUpIHsKKwkJc3NpemVfdCBsZW4gPSByZWFkX2lzdHJlYW0oZGF0YS0+c3QsIGRhdGEtPmJ1Ziwgc2l6ZSk7CisJCWlmIChsZW4gPT0gMCkKKwkJCWRpZShfKCJTSEExIENPTExJU0lPTiBGT1VORCBXSVRIICVzICEiKSwKKwkJCSAgICBzaGExX3RvX2hleChkYXRhLT5lbnRyeS0+aWR4LnNoYTEpKTsKKwkJaWYgKGxlbiA8IDApCisJCQlkaWUoXygidW5hYmxlIHRvIHJlYWQgJXMiKSwKKwkJCSAgICBzaGExX3RvX2hleChkYXRhLT5lbnRyeS0+aWR4LnNoYTEpKTsKKwkJaWYgKG1lbWNtcChidWYsIGRhdGEtPmJ1ZiwgbGVuKSkKKwkJCWRpZShfKCJTSEExIENPTExJU0lPTiBGT1VORCBXSVRIICVzICEiKSwKKwkJCSAgICBzaGExX3RvX2hleChkYXRhLT5lbnRyeS0+aWR4LnNoYTEpKTsKKwkJc2l6ZSAtPSBsZW47CisJCWJ1ZiArPSBsZW47CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNoZWNrX2NvbGxpc29uKHN0cnVjdCBvYmplY3RfZW50cnkgKmVudHJ5KQoreworCXN0cnVjdCBjb21wYXJlX2RhdGEgZGF0YTsKKwllbnVtIG9iamVjdF90eXBlIHR5cGU7CisJdW5zaWduZWQgbG9uZyBzaXplOworCisJaWYgKGVudHJ5LT5zaXplIDw9IGJpZ19maWxlX3RocmVzaG9sZCB8fCBlbnRyeS0+dHlwZSAhPSBPQkpfQkxPQikKKwkJcmV0dXJuIC0xOworCisJbWVtc2V0KCZkYXRhLCAwLCBzaXplb2YoZGF0YSkpOworCWRhdGEuZW50cnkgPSBlbnRyeTsKKwlkYXRhLnN0ID0gb3Blbl9pc3RyZWFtKGVudHJ5LT5pZHguc2hhMSwgJnR5cGUsICZzaXplLCBOVUxMKTsKKwlpZiAoIWRhdGEuc3QpCisJCXJldHVybiAtMTsKKwlpZiAoc2l6ZSAhPSBlbnRyeS0+c2l6ZSB8fCB0eXBlICE9IGVudHJ5LT50eXBlKQorCQlkaWUoXygiU0hBMSBDT0xMSVNJT04gRk9VTkQgV0lUSCAlcyAhIiksCisJCSAgICBzaGExX3RvX2hleChlbnRyeS0+aWR4LnNoYTEpKTsKKwl1bnBhY2tfZGF0YShlbnRyeSwgY29tcGFyZV9vYmplY3RzLCAmZGF0YSk7CisJY2xvc2VfaXN0cmVhbShkYXRhLnN0KTsKKwlmcmVlKGRhdGEuYnVmKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgc2hhMV9vYmplY3QoY29uc3Qgdm9pZCAqZGF0YSwgc3RydWN0IG9iamVjdF9lbnRyeSAqb2JqX2VudHJ5LAorCQkJdW5zaWduZWQgbG9uZyBzaXplLCBlbnVtIG9iamVjdF90eXBlIHR5cGUsCisJCQljb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKQoreworCXZvaWQgKm5ld19kYXRhID0gTlVMTDsKKwlpbnQgY29sbGlzaW9uX3Rlc3RfbmVlZGVkOworCisJYXNzZXJ0KGRhdGEgfHwgb2JqX2VudHJ5KTsKKwogCXJlYWRfbG9jaygpOwotCWlmIChoYXNfc2hhMV9maWxlKHNoYTEpKSB7CisJY29sbGlzaW9uX3Rlc3RfbmVlZGVkID0gaGFzX3NoYTFfZmlsZShzaGExKTsKKwlyZWFkX3VubG9jaygpOworCisJaWYgKGNvbGxpc2lvbl90ZXN0X25lZWRlZCAmJiAhZGF0YSkgeworCQlyZWFkX2xvY2soKTsKKwkJaWYgKCFjaGVja19jb2xsaXNvbihvYmpfZW50cnkpKQorCQkJY29sbGlzaW9uX3Rlc3RfbmVlZGVkID0gMDsKKwkJcmVhZF91bmxvY2soKTsKKwl9CisJaWYgKGNvbGxpc2lvbl90ZXN0X25lZWRlZCkgewogCQl2b2lkICpoYXNfZGF0YTsKIAkJZW51bSBvYmplY3RfdHlwZSBoYXNfdHlwZTsKIAkJdW5zaWduZWQgbG9uZyBoYXNfc2l6ZTsKKwkJcmVhZF9sb2NrKCk7CisJCWhhc190eXBlID0gc2hhMV9vYmplY3RfaW5mbyhzaGExLCAmaGFzX3NpemUpOworCQlpZiAoaGFzX3R5cGUgIT0gdHlwZSB8fCBoYXNfc2l6ZSAhPSBzaXplKQorCQkJZGllKF8oIlNIQTEgQ09MTElTSU9OIEZPVU5EIFdJVEggJXMgISIpLCBzaGExX3RvX2hleChzaGExKSk7CiAJCWhhc19kYXRhID0gcmVhZF9zaGExX2ZpbGUoc2hhMSwgJmhhc190eXBlLCAmaGFzX3NpemUpOwogCQlyZWFkX3VubG9jaygpOworCQlpZiAoIWRhdGEpCisJCQlkYXRhID0gbmV3X2RhdGEgPSBnZXRfZGF0YV9mcm9tX3BhY2sob2JqX2VudHJ5KTsKIAkJaWYgKCFoYXNfZGF0YSkKIAkJCWRpZShfKCJjYW5ub3QgcmVhZCBleGlzdGluZyBvYmplY3QgJXMiKSwgc2hhMV90b19oZXgoc2hhMSkpOwogCQlpZiAoc2l6ZSAhPSBoYXNfc2l6ZSB8fCB0eXBlICE9IGhhc190eXBlIHx8CiAJCSAgICBtZW1jbXAoZGF0YSwgaGFzX2RhdGEsIHNpemUpICE9IDApCiAJCQlkaWUoXygiU0hBMSBDT0xMSVNJT04gRk9VTkQgV0lUSCAlcyAhIiksIHNoYTFfdG9faGV4KHNoYTEpKTsKIAkJZnJlZShoYXNfZGF0YSk7Ci0JfSBlbHNlCi0JCXJlYWRfdW5sb2NrKCk7CisJfQogCiAJaWYgKHN0cmljdCkgewogCQlyZWFkX2xvY2soKTsKQEAgLTYwMSw2ICs3NDcsOSBAQAogCQkJaW50IGVhdGVuOwogCQkJdm9pZCAqYnVmID0gKHZvaWQgKikgZGF0YTsKIAorCQkJaWYgKCFidWYpCisJCQkJYnVmID0gbmV3X2RhdGEgPSBnZXRfZGF0YV9mcm9tX3BhY2sob2JqX2VudHJ5KTsKKwogCQkJLyoKIAkJCSAqIHdlIGRvIG5vdCBuZWVkIHRvIGZyZWUgdGhlIG1lbW9yeSBoZXJlLCBhcyB0aGUKIAkJCSAqIGJ1ZiBpcyBkZWxldGVkIGJ5IHRoZSBjYWxsZXIuCkBAIC02MjUsMTEgKzc3NCw4IEBACiAJCX0KIAkJcmVhZF91bmxvY2soKTsKIAl9Ci19CiAKLXN0YXRpYyBpbnQgaXNfZGVsdGFfdHlwZShlbnVtIG9iamVjdF90eXBlIHR5cGUpCi17Ci0JcmV0dXJuICh0eXBlID09IE9CSl9SRUZfREVMVEEgfHwgdHlwZSA9PSBPQkpfT0ZTX0RFTFRBKTsKKwlmcmVlKG5ld19kYXRhKTsKIH0KIAogLyoKQEAgLTY5OSw5ICs4NDUsMTMgQEAKIAl2b2lkICpiYXNlX2RhdGEsICpkZWx0YV9kYXRhOwogCiAJZGVsdGFfb2JqLT5yZWFsX3R5cGUgPSBiYXNlLT5vYmotPnJlYWxfdHlwZTsKLQlkZWx0YV9vYmotPmRlbHRhX2RlcHRoID0gYmFzZS0+b2JqLT5kZWx0YV9kZXB0aCArIDE7Ci0JaWYgKGRlZXBlc3RfZGVsdGEgPCBkZWx0YV9vYmotPmRlbHRhX2RlcHRoKQotCQlkZWVwZXN0X2RlbHRhID0gZGVsdGFfb2JqLT5kZWx0YV9kZXB0aDsKKwlpZiAoc2hvd19zdGF0KSB7CisJCWRlbHRhX29iai0+ZGVsdGFfZGVwdGggPSBiYXNlLT5vYmotPmRlbHRhX2RlcHRoICsgMTsKKwkJZGVlcGVzdF9kZWx0YV9sb2NrKCk7CisJCWlmIChkZWVwZXN0X2RlbHRhIDwgZGVsdGFfb2JqLT5kZWx0YV9kZXB0aCkKKwkJCWRlZXBlc3RfZGVsdGEgPSBkZWx0YV9vYmotPmRlbHRhX2RlcHRoOworCQlkZWVwZXN0X2RlbHRhX3VubG9jaygpOworCX0KIAlkZWx0YV9vYmotPmJhc2Vfb2JqZWN0X25vID0gYmFzZS0+b2JqIC0gb2JqZWN0czsKIAlkZWx0YV9kYXRhID0gZ2V0X2RhdGFfZnJvbV9wYWNrKGRlbHRhX29iaik7CiAJYmFzZV9kYXRhID0gZ2V0X2Jhc2VfZGF0YShiYXNlKTsKQEAgLTcxMSw3ICs4NjEsOSBAQAogCWZyZWUoZGVsdGFfZGF0YSk7CiAJaWYgKCFyZXN1bHQtPmRhdGEpCiAJCWJhZF9vYmplY3QoZGVsdGFfb2JqLT5pZHgub2Zmc2V0LCBfKCJmYWlsZWQgdG8gYXBwbHkgZGVsdGEiKSk7Ci0Jc2hhMV9vYmplY3QocmVzdWx0LT5kYXRhLCByZXN1bHQtPnNpemUsIGRlbHRhX29iai0+cmVhbF90eXBlLAorCWhhc2hfc2hhMV9maWxlKHJlc3VsdC0+ZGF0YSwgcmVzdWx0LT5zaXplLAorCQkgICAgICAgdHlwZW5hbWUoZGVsdGFfb2JqLT5yZWFsX3R5cGUpLCBkZWx0YV9vYmotPmlkeC5zaGExKTsKKwlzaGExX29iamVjdChyZXN1bHQtPmRhdGEsIE5VTEwsIHJlc3VsdC0+c2l6ZSwgZGVsdGFfb2JqLT5yZWFsX3R5cGUsCiAJCSAgICBkZWx0YV9vYmotPmlkeC5zaGExKTsKIAljb3VudGVyX2xvY2soKTsKIAlucl9yZXNvbHZlZF9kZWx0YXMrKzsKQEAgLTgxNSw4ICs5NjcsMTAgQEAKIAlzZXRfdGhyZWFkX2RhdGEoZGF0YSk7CiAJZm9yICg7OykgewogCQlpbnQgaTsKLQkJd29ya19sb2NrKCk7CisJCWNvdW50ZXJfbG9jaygpOwogCQlkaXNwbGF5X3Byb2dyZXNzKHByb2dyZXNzLCBucl9yZXNvbHZlZF9kZWx0YXMpOworCQljb3VudGVyX3VubG9jaygpOworCQl3b3JrX2xvY2soKTsKIAkJd2hpbGUgKG5yX2Rpc3BhdGNoZWQgPCBucl9vYmplY3RzICYmCiAJCSAgICAgICBpc19kZWx0YV90eXBlKG9iamVjdHNbbnJfZGlzcGF0Y2hlZF0udHlwZSkpCiAJCQlucl9kaXNwYXRjaGVkKys7CkBAIC04NDEsNyArOTk1LDcgQEAKICAqLwogc3RhdGljIHZvaWQgcGFyc2VfcGFja19vYmplY3RzKHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7Ci0JaW50IGk7CisJaW50IGksIG5yX2RlbGF5cyA9IDA7CiAJc3RydWN0IGRlbHRhX2VudHJ5ICpkZWx0YSA9IGRlbHRhczsKIAlzdHJ1Y3Qgc3RhdCBzdDsKIApAQCAtODUxLDE0ICsxMDA1LDE4IEBACiAJCQkJbnJfb2JqZWN0cyk7CiAJZm9yIChpID0gMDsgaSA8IG5yX29iamVjdHM7IGkrKykgewogCQlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICpvYmogPSAmb2JqZWN0c1tpXTsKLQkJdm9pZCAqZGF0YSA9IHVucGFja19yYXdfZW50cnkob2JqLCAmZGVsdGEtPmJhc2UpOworCQl2b2lkICpkYXRhID0gdW5wYWNrX3Jhd19lbnRyeShvYmosICZkZWx0YS0+YmFzZSwgb2JqLT5pZHguc2hhMSk7CiAJCW9iai0+cmVhbF90eXBlID0gb2JqLT50eXBlOwogCQlpZiAoaXNfZGVsdGFfdHlwZShvYmotPnR5cGUpKSB7CiAJCQlucl9kZWx0YXMrKzsKIAkJCWRlbHRhLT5vYmpfbm8gPSBpOwogCQkJZGVsdGErKzsKKwkJfSBlbHNlIGlmICghZGF0YSkgeworCQkJLyogbGFyZ2UgYmxvYnMsIGNoZWNrIGxhdGVyICovCisJCQlvYmotPnJlYWxfdHlwZSA9IE9CSl9CQUQ7CisJCQlucl9kZWxheXMrKzsKIAkJfSBlbHNlCi0JCQlzaGExX29iamVjdChkYXRhLCBvYmotPnNpemUsIG9iai0+dHlwZSwgb2JqLT5pZHguc2hhMSk7CisJCQlzaGExX29iamVjdChkYXRhLCBOVUxMLCBvYmotPnNpemUsIG9iai0+dHlwZSwgb2JqLT5pZHguc2hhMSk7CiAJCWZyZWUoZGF0YSk7CiAJCWRpc3BsYXlfcHJvZ3Jlc3MocHJvZ3Jlc3MsIGkrMSk7CiAJfQpAQCAtODc4LDYgKzEwMzYsMTcgQEAKIAlpZiAoU19JU1JFRyhzdC5zdF9tb2RlKSAmJgogCQkJbHNlZWsoaW5wdXRfZmQsIDAsIFNFRUtfQ1VSKSAtIGlucHV0X2xlbiAhPSBzdC5zdF9zaXplKQogCQlkaWUoXygicGFjayBoYXMganVuayBhdCB0aGUgZW5kIikpOworCisJZm9yIChpID0gMDsgaSA8IG5yX29iamVjdHM7IGkrKykgeworCQlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICpvYmogPSAmb2JqZWN0c1tpXTsKKwkJaWYgKG9iai0+cmVhbF90eXBlICE9IE9CSl9CQUQpCisJCQljb250aW51ZTsKKwkJb2JqLT5yZWFsX3R5cGUgPSBvYmotPnR5cGU7CisJCXNoYTFfb2JqZWN0KE5VTEwsIG9iaiwgb2JqLT5zaXplLCBvYmotPnR5cGUsIG9iai0+aWR4LnNoYTEpOworCQlucl9kZWxheXMtLTsKKwl9CisJaWYgKG5yX2RlbGF5cykKKwkJZGllKF8oImNvbmZ1c2lvbiBiZXlvbmQgaW5zYW5pdHkgaW4gcGFyc2VfcGFja19vYmplY3RzKCkiKSk7CiB9CiAKIC8qCkBAIC05MTAsNyArMTA3OSw4IEBACiAJCQlpbnQgcmV0ID0gcHRocmVhZF9jcmVhdGUoJnRocmVhZF9kYXRhW2ldLnRocmVhZCwgTlVMTCwKIAkJCQkJCSB0aHJlYWRlZF9zZWNvbmRfcGFzcywgdGhyZWFkX2RhdGEgKyBpKTsKIAkJCWlmIChyZXQpCi0JCQkJZGllKCJ1bmFibGUgdG8gY3JlYXRlIHRocmVhZDogJXMiLCBzdHJlcnJvcihyZXQpKTsKKwkJCQlkaWUoXygidW5hYmxlIHRvIGNyZWF0ZSB0aHJlYWQ6ICVzIiksCisJCQkJICAgIHN0cmVycm9yKHJldCkpOwogCQl9CiAJCWZvciAoaSA9IDA7IGkgPCBucl90aHJlYWRzOyBpKyspCiAJCQlwdGhyZWFkX2pvaW4odGhyZWFkX2RhdGFbaV0udGhyZWFkLCBOVUxMKTsKQEAgLTk0Nyw3ICsxMTE3LDcgQEAKIAlpZiAoZml4X3RoaW5fcGFjaykgewogCQlzdHJ1Y3Qgc2hhMWZpbGUgKmY7CiAJCXVuc2lnbmVkIGNoYXIgcmVhZF9zaGExWzIwXSwgdGFpbF9zaGExWzIwXTsKLQkJY2hhciBtc2dbNDhdOworCQlzdHJ1Y3Qgc3RyYnVmIG1zZyA9IFNUUkJVRl9JTklUOwogCQlpbnQgbnJfdW5yZXNvbHZlZCA9IG5yX2RlbHRhcyAtIG5yX3Jlc29sdmVkX2RlbHRhczsKIAkJaW50IG5yX29iamVjdHNfaW5pdGlhbCA9IG5yX29iamVjdHM7CiAJCWlmIChucl91bnJlc29sdmVkIDw9IDApCkBAIC05NTUsMTkgKzExMjUsMjIgQEAKIAkJb2JqZWN0cyA9IHhyZWFsbG9jKG9iamVjdHMsCiAJCQkJICAgKG5yX29iamVjdHMgKyBucl91bnJlc29sdmVkICsgMSkKIAkJCQkgICAqIHNpemVvZigqb2JqZWN0cykpOworCQltZW1zZXQob2JqZWN0cyArIG5yX29iamVjdHMgKyAxLCAwLAorCQkgICAgICAgbnJfdW5yZXNvbHZlZCAqIHNpemVvZigqb2JqZWN0cykpOwogCQlmID0gc2hhMWZkKG91dHB1dF9mZCwgY3Vycl9wYWNrKTsKIAkJZml4X3VucmVzb2x2ZWRfZGVsdGFzKGYsIG5yX3VucmVzb2x2ZWQpOwotCQlzcHJpbnRmKG1zZywgImNvbXBsZXRlZCB3aXRoICVkIGxvY2FsIG9iamVjdHMiLAotCQkJbnJfb2JqZWN0cyAtIG5yX29iamVjdHNfaW5pdGlhbCk7Ci0JCXN0b3BfcHJvZ3Jlc3NfbXNnKCZwcm9ncmVzcywgbXNnKTsKKwkJc3RyYnVmX2FkZGYoJm1zZywgXygiY29tcGxldGVkIHdpdGggJWQgbG9jYWwgb2JqZWN0cyIpLAorCQkJICAgIG5yX29iamVjdHMgLSBucl9vYmplY3RzX2luaXRpYWwpOworCQlzdG9wX3Byb2dyZXNzX21zZygmcHJvZ3Jlc3MsIG1zZy5idWYpOworCQlzdHJidWZfcmVsZWFzZSgmbXNnKTsKIAkJc2hhMWNsb3NlKGYsIHRhaWxfc2hhMSwgMCk7CiAJCWhhc2hjcHkocmVhZF9zaGExLCBwYWNrX3NoYTEpOwogCQlmaXh1cF9wYWNrX2hlYWRlcl9mb290ZXIob3V0cHV0X2ZkLCBwYWNrX3NoYTEsCiAJCQkJCSBjdXJyX3BhY2ssIG5yX29iamVjdHMsCiAJCQkJCSByZWFkX3NoYTEsIGNvbnN1bWVkX2J5dGVzLTIwKTsKIAkJaWYgKGhhc2hjbXAocmVhZF9zaGExLCB0YWlsX3NoYTEpICE9IDApCi0JCQlkaWUoIlVuZXhwZWN0ZWQgdGFpbCBjaGVja3N1bSBmb3IgJXMgIgotCQkJICAgICIoZGlzayBjb3JydXB0aW9uPykiLCBjdXJyX3BhY2spOworCQkJZGllKF8oIlVuZXhwZWN0ZWQgdGFpbCBjaGVja3N1bSBmb3IgJXMgIgorCQkJICAgICAgIihkaXNrIGNvcnJ1cHRpb24/KSIpLCBjdXJyX3BhY2spOwogCX0KIAlpZiAobnJfZGVsdGFzICE9IG5yX3Jlc29sdmVkX2RlbHRhcykKIAkJZGllKFFfKCJwYWNrIGhhcyAlZCB1bnJlc29sdmVkIGRlbHRhIiwKQEAgLTExNzYsMTcgKzEzNDksMTcgQEAKIAlpZiAoIXN0cmNtcChrLCAicGFjay5pbmRleHZlcnNpb24iKSkgewogCQlvcHRzLT52ZXJzaW9uID0gZ2l0X2NvbmZpZ19pbnQoaywgdik7CiAJCWlmIChvcHRzLT52ZXJzaW9uID4gMikKLQkJCWRpZSgiYmFkIHBhY2suaW5kZXh2ZXJzaW9uPSUiUFJJdTMyLCBvcHRzLT52ZXJzaW9uKTsKKwkJCWRpZShfKCJiYWQgcGFjay5pbmRleHZlcnNpb249JSJQUkl1MzIpLCBvcHRzLT52ZXJzaW9uKTsKIAkJcmV0dXJuIDA7CiAJfQogCWlmICghc3RyY21wKGssICJwYWNrLnRocmVhZHMiKSkgewogCQlucl90aHJlYWRzID0gZ2l0X2NvbmZpZ19pbnQoaywgdik7CiAJCWlmIChucl90aHJlYWRzIDwgMCkKLQkJCWRpZSgiaW52YWxpZCBudW1iZXIgb2YgdGhyZWFkcyBzcGVjaWZpZWQgKCVkKSIsCisJCQlkaWUoXygiaW52YWxpZCBudW1iZXIgb2YgdGhyZWFkcyBzcGVjaWZpZWQgKCVkKSIpLAogCQkJICAgIG5yX3RocmVhZHMpOwogI2lmZGVmIE5PX1BUSFJFQURTCiAJCWlmIChucl90aHJlYWRzICE9IDEpCi0JCQl3YXJuaW5nKCJubyB0aHJlYWRzIHN1cHBvcnQsIGlnbm9yaW5nICVzIiwgayk7CisJCQl3YXJuaW5nKF8oIm5vIHRocmVhZHMgc3VwcG9ydCwgaWdub3JpbmcgJXMiKSwgayk7CiAJCW5yX3RocmVhZHMgPSAxOwogI2VuZGlmCiAJCXJldHVybiAwOwpAQCAtMTMxMCw3ICsxNDgzLDcgQEAKIAogaW50IGNtZF9pbmRleF9wYWNrKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewotCWludCBpLCBmaXhfdGhpbl9wYWNrID0gMCwgdmVyaWZ5ID0gMCwgc3RhdF9vbmx5ID0gMCwgc3RhdCA9IDA7CisJaW50IGksIGZpeF90aGluX3BhY2sgPSAwLCB2ZXJpZnkgPSAwLCBzdGF0X29ubHkgPSAwOwogCWNvbnN0IGNoYXIgKmN1cnJfcGFjaywgKmN1cnJfaW5kZXg7CiAJY29uc3QgY2hhciAqaW5kZXhfbmFtZSA9IE5VTEwsICpwYWNrX25hbWUgPSBOVUxMOwogCWNvbnN0IGNoYXIgKmtlZXBfbmFtZSA9IE5VTEwsICprZWVwX21zZyA9IE5VTEw7CkBAIC0xMzQzLDEwICsxNTE2LDEwIEBACiAJCQkJdmVyaWZ5ID0gMTsKIAkJCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLXZlcmlmeS1zdGF0IikpIHsKIAkJCQl2ZXJpZnkgPSAxOwotCQkJCXN0YXQgPSAxOworCQkJCXNob3dfc3RhdCA9IDE7CiAJCQl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS12ZXJpZnktc3RhdC1vbmx5IikpIHsKIAkJCQl2ZXJpZnkgPSAxOwotCQkJCXN0YXQgPSAxOworCQkJCXNob3dfc3RhdCA9IDE7CiAJCQkJc3RhdF9vbmx5ID0gMTsKIAkJCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLWtlZXAiKSkgewogCQkJCWtlZXBfbXNnID0gIiI7CkBAIC0xMzU5LDggKzE1MzIsOCBAQAogCQkJCQl1c2FnZShpbmRleF9wYWNrX3VzYWdlKTsKICNpZmRlZiBOT19QVEhSRUFEUwogCQkJCWlmIChucl90aHJlYWRzICE9IDEpCi0JCQkJCXdhcm5pbmcoIm5vIHRocmVhZHMgc3VwcG9ydCwgIgotCQkJCQkJImlnbm9yaW5nICVzIiwgYXJnKTsKKwkJCQkJd2FybmluZyhfKCJubyB0aHJlYWRzIHN1cHBvcnQsICIKKwkJCQkJCSAgImlnbm9yaW5nICVzIiksIGFyZyk7CiAJCQkJbnJfdGhyZWFkcyA9IDE7CiAjZW5kaWYKIAkJCX0gZWxzZSBpZiAoIXByZWZpeGNtcChhcmcsICItLXBhY2tfaGVhZGVyPSIpKSB7CkBAIC0xNDU0LDcgKzE2MjcsNyBAQAogCWlmIChzdHJpY3QpCiAJCWNoZWNrX29iamVjdHMoKTsKIAotCWlmIChzdGF0KQorCWlmIChzaG93X3N0YXQpCiAJCXNob3dfcGFja19pbmZvKHN0YXRfb25seSk7CiAKIAlpZHhfb2JqZWN0cyA9IHhtYWxsb2MoKG5yX29iamVjdHMpICogc2l6ZW9mKHN0cnVjdCBwYWNrX2lkeF9lbnRyeSAqKSk7CmRpZmYgLS1naXQgYS9idWlsdGluL2luaXQtZGIuYyBiL2J1aWx0aW4vaW5pdC1kYi5jCmluZGV4IDBkYWNiOGIuLjc4YWEzODcgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vaW5pdC1kYi5jCisrKyBiL2J1aWx0aW4vaW5pdC1kYi5jCkBAIC0yOTAsNiArMjkwLDcgQEAKIAkJc3RyY3B5KHBhdGggKyBsZW4sICJDb05mSWciKTsKIAkJaWYgKCFhY2Nlc3MocGF0aCwgRl9PSykpCiAJCQlnaXRfY29uZmlnX3NldCgiY29yZS5pZ25vcmVjYXNlIiwgInRydWUiKTsKKwkJcHJvYmVfdXRmOF9wYXRobmFtZV9jb21wb3NpdGlvbihwYXRoLCBsZW4pOwogCX0KIAogCXJldHVybiByZWluaXQ7CkBAIC00NjMsNyArNDY0LDcgQEAKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGluaXRfZGJfdXNhZ2VbXSA9IHsKLQkiZ2l0IGluaXQgWy1xIHwgLS1xdWlldF0gWy0tYmFyZV0gWy0tdGVtcGxhdGU9PHRlbXBsYXRlLWRpcmVjdG9yeT5dIFstLXNoYXJlZFs9PHBlcm1pc3Npb25zPl1dIFtkaXJlY3RvcnldIiwKKwlOXygiZ2l0IGluaXQgWy1xIHwgLS1xdWlldF0gWy0tYmFyZV0gWy0tdGVtcGxhdGU9PHRlbXBsYXRlLWRpcmVjdG9yeT5dIFstLXNoYXJlZFs9PHBlcm1pc3Npb25zPl1dIFtkaXJlY3RvcnldIiksCiAJTlVMTAogfTsKIApAQCAtNDgxLDE3ICs0ODIsMTcgQEAKIAljb25zdCBjaGFyICp0ZW1wbGF0ZV9kaXIgPSBOVUxMOwogCXVuc2lnbmVkIGludCBmbGFncyA9IDA7CiAJY29uc3Qgc3RydWN0IG9wdGlvbiBpbml0X2RiX29wdGlvbnNbXSA9IHsKLQkJT1BUX1NUUklORygwLCAidGVtcGxhdGUiLCAmdGVtcGxhdGVfZGlyLCAidGVtcGxhdGUtZGlyZWN0b3J5IiwKLQkJCQkiZGlyZWN0b3J5IGZyb20gd2hpY2ggdGVtcGxhdGVzIHdpbGwgYmUgdXNlZCIpLAorCQlPUFRfU1RSSU5HKDAsICJ0ZW1wbGF0ZSIsICZ0ZW1wbGF0ZV9kaXIsIE5fKCJ0ZW1wbGF0ZS1kaXJlY3RvcnkiKSwKKwkJCQlOXygiZGlyZWN0b3J5IGZyb20gd2hpY2ggdGVtcGxhdGVzIHdpbGwgYmUgdXNlZCIpKSwKIAkJT1BUX1NFVF9JTlQoMCwgImJhcmUiLCAmaXNfYmFyZV9yZXBvc2l0b3J5X2NmZywKLQkJCQkiY3JlYXRlIGEgYmFyZSByZXBvc2l0b3J5IiwgMSksCisJCQkJTl8oImNyZWF0ZSBhIGJhcmUgcmVwb3NpdG9yeSIpLCAxKSwKIAkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJzaGFyZWQiLCAmaW5pdF9zaGFyZWRfcmVwb3NpdG9yeSwKLQkJCSJwZXJtaXNzaW9ucyIsCi0JCQkic3BlY2lmeSB0aGF0IHRoZSBnaXQgcmVwb3NpdG9yeSBpcyB0byBiZSBzaGFyZWQgYW1vbmdzdCBzZXZlcmFsIHVzZXJzIiwKKwkJCU5fKCJwZXJtaXNzaW9ucyIpLAorCQkJTl8oInNwZWNpZnkgdGhhdCB0aGUgZ2l0IHJlcG9zaXRvcnkgaXMgdG8gYmUgc2hhcmVkIGFtb25nc3Qgc2V2ZXJhbCB1c2VycyIpLAogCQkJUEFSU0VfT1BUX09QVEFSRyB8IFBBUlNFX09QVF9OT05FRywgc2hhcmVkX2NhbGxiYWNrLCAwfSwKLQkJT1BUX0JJVCgncScsICJxdWlldCIsICZmbGFncywgImJlIHF1aWV0IiwgSU5JVF9EQl9RVUlFVCksCi0JCU9QVF9TVFJJTkcoMCwgInNlcGFyYXRlLWdpdC1kaXIiLCAmcmVhbF9naXRfZGlyLCAiZ2l0ZGlyIiwKLQkJCSAgICJzZXBhcmF0ZSBnaXQgZGlyIGZyb20gd29ya2luZyB0cmVlIiksCisJCU9QVF9CSVQoJ3EnLCAicXVpZXQiLCAmZmxhZ3MsIE5fKCJiZSBxdWlldCIpLCBJTklUX0RCX1FVSUVUKSwKKwkJT1BUX1NUUklORygwLCAic2VwYXJhdGUtZ2l0LWRpciIsICZyZWFsX2dpdF9kaXIsIE5fKCJnaXRkaXIiKSwKKwkJCSAgIE5fKCJzZXBhcmF0ZSBnaXQgZGlyIGZyb20gd29ya2luZyB0cmVlIikpLAogCQlPUFRfRU5EKCkKIAl9OwogCmRpZmYgLS1naXQgYS9idWlsdGluL2xvZy5jIGIvYnVpbHRpbi9sb2cuYwppbmRleCA5MDZkY2E0Li42ZTU2YTUwIDEwMDY0NAotLS0gYS9idWlsdGluL2xvZy5jCisrKyBiL2J1aWx0aW4vbG9nLmMKQEAgLTIxLDYgKzIxLDkgQEAKICNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCiAjaW5jbHVkZSAiYnJhbmNoLmgiCiAjaW5jbHVkZSAic3RyZWFtaW5nLmgiCisjaW5jbHVkZSAidmVyc2lvbi5oIgorI2luY2x1ZGUgIm1haWxtYXAuaCIKKyNpbmNsdWRlICJncGctaW50ZXJmYWNlLmgiCiAKIC8qIFNldCBhIGRlZmF1bHQgZGF0ZS10aW1lIGZvcm1hdCBmb3IgZ2l0IGxvZyAoImxvZy5kYXRlIiBjb25maWcgdmFyaWFibGUpICovCiBzdGF0aWMgY29uc3QgY2hhciAqZGVmYXVsdF9kYXRlX21vZGUgPSBOVUxMOwpAQCAtMjksMTIgKzMyLDEzIEBACiBzdGF0aWMgaW50IGRlZmF1bHRfc2hvd19yb290ID0gMTsKIHN0YXRpYyBpbnQgZGVjb3JhdGlvbl9zdHlsZTsKIHN0YXRpYyBpbnQgZGVjb3JhdGlvbl9naXZlbjsKK3N0YXRpYyBpbnQgdXNlX21haWxtYXBfY29uZmlnOwogc3RhdGljIGNvbnN0IGNoYXIgKmZtdF9wYXRjaF9zdWJqZWN0X3ByZWZpeCA9ICJQQVRDSCI7CiBzdGF0aWMgY29uc3QgY2hhciAqZm10X3ByZXR0eTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBidWlsdGluX2xvZ191c2FnZVtdID0gewotCSJnaXQgbG9nIFs8b3B0aW9ucz5dIFs8c2luY2U+Li48dW50aWw+XSBbWy0tXSA8cGF0aD4uLi5dXG4iCi0JIiAgIG9yOiBnaXQgc2hvdyBbb3B0aW9uc10gPG9iamVjdD4uLi4iLAorCU5fKCJnaXQgbG9nIFs8b3B0aW9ucz5dIFs8cmV2aXNpb24gcmFuZ2U+XSBbWy0tXSA8cGF0aD4uLi5dXG4iKQorCU5fKCIgICBvcjogZ2l0IHNob3cgW29wdGlvbnNdIDxvYmplY3Q+Li4uIiksCiAJTlVMTAogfTsKIApAQCAtOTMsMjQgKzk3LDI2IEBACiAJCQkgc3RydWN0IHJldl9pbmZvICpyZXYsIHN0cnVjdCBzZXR1cF9yZXZpc2lvbl9vcHQgKm9wdCkKIHsKIAlzdHJ1Y3QgdXNlcmZvcm1hdF93YW50IHc7Ci0JaW50IHF1aWV0ID0gMCwgc291cmNlID0gMDsKKwlpbnQgcXVpZXQgPSAwLCBzb3VyY2UgPSAwLCBtYWlsbWFwID0gMDsKIAogCWNvbnN0IHN0cnVjdCBvcHRpb24gYnVpbHRpbl9sb2dfb3B0aW9uc1tdID0gewotCQlPUFRfQk9PTEVBTigwLCAicXVpZXQiLCAmcXVpZXQsICJzdXBwcmVzcyBkaWZmIG91dHB1dCIpLAotCQlPUFRfQk9PTEVBTigwLCAic291cmNlIiwgJnNvdXJjZSwgInNob3cgc291cmNlIiksCi0JCXsgT1BUSU9OX0NBTExCQUNLLCAwLCAiZGVjb3JhdGUiLCBOVUxMLCBOVUxMLCAiZGVjb3JhdGUgb3B0aW9ucyIsCisJCU9QVF9CT09MKDAsICJxdWlldCIsICZxdWlldCwgTl8oInN1cHByZXNzIGRpZmYgb3V0cHV0IikpLAorCQlPUFRfQk9PTCgwLCAic291cmNlIiwgJnNvdXJjZSwgTl8oInNob3cgc291cmNlIikpLAorCQlPUFRfQk9PTCgwLCAidXNlLW1haWxtYXAiLCAmbWFpbG1hcCwgTl8oIlVzZSBtYWlsIG1hcCBmaWxlIikpLAorCQl7IE9QVElPTl9DQUxMQkFDSywgMCwgImRlY29yYXRlIiwgTlVMTCwgTlVMTCwgTl8oImRlY29yYXRlIG9wdGlvbnMiKSwKIAkJICBQQVJTRV9PUFRfT1BUQVJHLCBkZWNvcmF0ZV9jYWxsYmFja30sCiAJCU9QVF9FTkQoKQogCX07CiAKKwltYWlsbWFwID0gdXNlX21haWxtYXBfY29uZmlnOwogCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIHByZWZpeCwKIAkJCSAgICAgYnVpbHRpbl9sb2dfb3B0aW9ucywgYnVpbHRpbl9sb2dfdXNhZ2UsCiAJCQkgICAgIFBBUlNFX09QVF9LRUVQX0FSR1YwIHwgUEFSU0VfT1BUX0tFRVBfVU5LTk9XTiB8CiAJCQkgICAgIFBBUlNFX09QVF9LRUVQX0RBU0hEQVNIKTsKIAotCWFyZ2MgPSBzZXR1cF9yZXZpc2lvbnMoYXJnYywgYXJndiwgcmV2LCBvcHQpOwogCWlmIChxdWlldCkKIAkJcmV2LT5kaWZmb3B0Lm91dHB1dF9mb3JtYXQgfD0gRElGRl9GT1JNQVRfTk9fT1VUUFVUOworCWFyZ2MgPSBzZXR1cF9yZXZpc2lvbnMoYXJnYywgYXJndiwgcmV2LCBvcHQpOwogCiAJLyogQW55IGFyZ3VtZW50cyBhdCB0aGlzIHBvaW50IGFyZSBub3QgcmVjb2duaXplZCAqLwogCWlmIChhcmdjID4gMSkKQEAgLTEzNSw2ICsxNDEsMTEgQEAKIAlpZiAoc291cmNlKQogCQlyZXYtPnNob3dfc291cmNlID0gMTsKIAorCWlmIChtYWlsbWFwKSB7CisJCXJldi0+bWFpbG1hcCA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzdHJpbmdfbGlzdCkpOworCQlyZWFkX21haWxtYXAocmV2LT5tYWlsbWFwLCBOVUxMKTsKKwl9CisKIAlpZiAocmV2LT5wcmV0dHlfZ2l2ZW4gJiYgcmV2LT5jb21taXRfZm9ybWF0ID09IENNSVRfRk1UX1JBVykgewogCQkvKgogCQkgKiAibG9nIC0tcHJldHR5PXJhdyIgaXMgc3BlY2lhbDsgaWdub3JlIFVJIG9yaWVudGVkCkBAIC0zNTAsNyArMzYxLDE1IEBACiAJfQogCWlmICghcHJlZml4Y21wKHZhciwgImNvbG9yLmRlY29yYXRlLiIpKQogCQlyZXR1cm4gcGFyc2VfZGVjb3JhdGVfY29sb3JfY29uZmlnKHZhciwgMTUsIHZhbHVlKTsKKwlpZiAoIXN0cmNtcCh2YXIsICJsb2cubWFpbG1hcCIpKSB7CisJCXVzZV9tYWlsbWFwX2NvbmZpZyA9IGdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKTsKKwkJcmV0dXJuIDA7CisJfQogCisJaWYgKGdyZXBfY29uZmlnKHZhciwgdmFsdWUsIGNiKSA8IDApCisJCXJldHVybiAtMTsKKwlpZiAoZ2l0X2dwZ19jb25maWcodmFyLCB2YWx1ZSwgY2IpIDwgMCkKKwkJcmV0dXJuIC0xOwogCXJldHVybiBnaXRfZGlmZl91aV9jb25maWcodmFyLCB2YWx1ZSwgY2IpOwogfQogCkBAIC0zNTksNiArMzc4LDcgQEAKIAlzdHJ1Y3QgcmV2X2luZm8gcmV2OwogCXN0cnVjdCBzZXR1cF9yZXZpc2lvbl9vcHQgb3B0OwogCisJaW5pdF9ncmVwX2RlZmF1bHRzKCk7CiAJZ2l0X2NvbmZpZyhnaXRfbG9nX2NvbmZpZywgTlVMTCk7CiAKIAlpbml0X3JldmlzaW9ucygmcmV2LCBwcmVmaXgpOwpAQCAtMzY2LDYgKzM4Niw3IEBACiAJcmV2LnNpbXBsaWZ5X2hpc3RvcnkgPSAwOwogCW1lbXNldCgmb3B0LCAwLCBzaXplb2Yob3B0KSk7CiAJb3B0LmRlZiA9ICJIRUFEIjsKKwlvcHQucmV2YXJnX29wdCA9IFJFVkFSR19DT01NSVRUSVNIOwogCWNtZF9sb2dfaW5pdChhcmdjLCBhcmd2LCBwcmVmaXgsICZyZXYsICZvcHQpOwogCWlmICghcmV2LmRpZmZvcHQub3V0cHV0X2Zvcm1hdCkKIAkJcmV2LmRpZmZvcHQub3V0cHV0X2Zvcm1hdCA9IERJRkZfRk9STUFUX1JBVzsKQEAgLTQ0OCwxMyArNDY5LDE0IEBACiAJc3RydWN0IHBhdGhzcGVjIG1hdGNoX2FsbDsKIAlpbnQgaSwgY291bnQsIHJldCA9IDA7CiAKKwlpbml0X2dyZXBfZGVmYXVsdHMoKTsKIAlnaXRfY29uZmlnKGdpdF9sb2dfY29uZmlnLCBOVUxMKTsKIAogCWluaXRfcGF0aHNwZWMoJm1hdGNoX2FsbCwgTlVMTCk7CiAJaW5pdF9yZXZpc2lvbnMoJnJldiwgcHJlZml4KTsKIAlyZXYuZGlmZiA9IDE7CiAJcmV2LmFsd2F5c19zaG93X2hlYWRlciA9IDE7Ci0JcmV2Lm5vX3dhbGsgPSAxOworCXJldi5ub193YWxrID0gUkVWSVNJT05fV0FMS19OT19XQUxLX1NPUlRFRDsKIAlyZXYuZGlmZm9wdC5zdGF0X3dpZHRoID0gLTE7IAkvKiBTY2FsZSB0byByZWFsIHRlcm1pbmFsIHNpemUgKi8KIAogCW1lbXNldCgmb3B0LCAwLCBzaXplb2Yob3B0KSk7CkBAIC00NjIsNiArNDg0LDkgQEAKIAlvcHQudHdlYWsgPSBzaG93X3Jldl90d2Vha19yZXY7CiAJY21kX2xvZ19pbml0KGFyZ2MsIGFyZ3YsIHByZWZpeCwgJnJldiwgJm9wdCk7CiAKKwlpZiAoIXJldi5ub193YWxrKQorCQlyZXR1cm4gY21kX2xvZ193YWxrKCZyZXYpOworCiAJY291bnQgPSByZXYucGVuZGluZy5ucjsKIAlvYmplY3RzID0gcmV2LnBlbmRpbmcub2JqZWN0czsKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQgJiYgIXJldDsgaSsrKSB7CkBAIC01MjUsNiArNTUwLDcgQEAKIAlzdHJ1Y3QgcmV2X2luZm8gcmV2OwogCXN0cnVjdCBzZXR1cF9yZXZpc2lvbl9vcHQgb3B0OwogCisJaW5pdF9ncmVwX2RlZmF1bHRzKCk7CiAJZ2l0X2NvbmZpZyhnaXRfbG9nX2NvbmZpZywgTlVMTCk7CiAKIAlpbml0X3JldmlzaW9ucygmcmV2LCBwcmVmaXgpOwpAQCAtNTQ3LDEyICs1NzMsMTQgQEAKIAlzdHJ1Y3QgcmV2X2luZm8gcmV2OwogCXN0cnVjdCBzZXR1cF9yZXZpc2lvbl9vcHQgb3B0OwogCisJaW5pdF9ncmVwX2RlZmF1bHRzKCk7CiAJZ2l0X2NvbmZpZyhnaXRfbG9nX2NvbmZpZywgTlVMTCk7CiAKIAlpbml0X3JldmlzaW9ucygmcmV2LCBwcmVmaXgpOwogCXJldi5hbHdheXNfc2hvd19oZWFkZXIgPSAxOwogCW1lbXNldCgmb3B0LCAwLCBzaXplb2Yob3B0KSk7CiAJb3B0LmRlZiA9ICJIRUFEIjsKKwlvcHQucmV2YXJnX29wdCA9IFJFVkFSR19DT01NSVRUSVNIOwogCWNtZF9sb2dfaW5pdChhcmdjLCBhcmd2LCBwcmVmaXgsICZyZXYsICZvcHQpOwogCXJldHVybiBjbWRfbG9nX3dhbGsoJnJldik7CiB9CkBAIC01OTQsNiArNjIyLDE0IEBACiBzdGF0aWMgaW50IHRocmVhZDsKIHN0YXRpYyBpbnQgZG9fc2lnbm9mZjsKIHN0YXRpYyBjb25zdCBjaGFyICpzaWduYXR1cmUgPSBnaXRfdmVyc2lvbl9zdHJpbmc7CitzdGF0aWMgaW50IGNvbmZpZ19jb3Zlcl9sZXR0ZXI7CisKK2VudW0geworCUNPVkVSX1VOU0VULAorCUNPVkVSX09GRiwKKwlDT1ZFUl9PTiwKKwlDT1ZFUl9BVVRPCit9OwogCiBzdGF0aWMgaW50IGdpdF9mb3JtYXRfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQogewpAQCAtNjU1LDYgKzY5MSwxNCBAQAogCX0KIAlpZiAoIXN0cmNtcCh2YXIsICJmb3JtYXQuc2lnbmF0dXJlIikpCiAJCXJldHVybiBnaXRfY29uZmlnX3N0cmluZygmc2lnbmF0dXJlLCB2YXIsIHZhbHVlKTsKKwlpZiAoIXN0cmNtcCh2YXIsICJmb3JtYXQuY292ZXJsZXR0ZXIiKSkgeworCQlpZiAodmFsdWUgJiYgIXN0cmNhc2VjbXAodmFsdWUsICJhdXRvIikpIHsKKwkJCWNvbmZpZ19jb3Zlcl9sZXR0ZXIgPSBDT1ZFUl9BVVRPOworCQkJcmV0dXJuIDA7CisJCX0KKwkJY29uZmlnX2NvdmVyX2xldHRlciA9IGdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKSA/IENPVkVSX09OIDogQ09WRVJfT0ZGOworCQlyZXR1cm4gMDsKKwl9CiAKIAlyZXR1cm4gZ2l0X2xvZ19jb25maWcodmFyLCB2YWx1ZSwgY2IpOwogfQpAQCAtNjY3LDcgKzcxMSw3IEBACiAJCQkgc3RydWN0IHJldl9pbmZvICpyZXYsIGludCBxdWlldCkKIHsKIAlzdHJ1Y3Qgc3RyYnVmIGZpbGVuYW1lID0gU1RSQlVGX0lOSVQ7Ci0JaW50IHN1ZmZpeF9sZW4gPSBzdHJsZW4oZm10X3BhdGNoX3N1ZmZpeCkgKyAxOworCWludCBzdWZmaXhfbGVuID0gc3RybGVuKHJldi0+cGF0Y2hfc3VmZml4KSArIDE7CiAKIAlpZiAob3V0cHV0X2RpcmVjdG9yeSkgewogCQlzdHJidWZfYWRkc3RyKCZmaWxlbmFtZSwgb3V0cHV0X2RpcmVjdG9yeSk7CkBAIC02NzgsNyArNzIyLDEyIEBACiAJCQlzdHJidWZfYWRkY2goJmZpbGVuYW1lLCAnLycpOwogCX0KIAotCWdldF9wYXRjaF9maWxlbmFtZShjb21taXQsIHN1YmplY3QsIHJldi0+bnIsIGZtdF9wYXRjaF9zdWZmaXgsICZmaWxlbmFtZSk7CisJaWYgKHJldi0+bnVtYmVyZWRfZmlsZXMpCisJCXN0cmJ1Zl9hZGRmKCZmaWxlbmFtZSwgIiVkIiwgcmV2LT5ucik7CisJZWxzZSBpZiAoY29tbWl0KQorCQlmbXRfb3V0cHV0X2NvbW1pdCgmZmlsZW5hbWUsIGNvbW1pdCwgcmV2KTsKKwllbHNlCisJCWZtdF9vdXRwdXRfc3ViamVjdCgmZmlsZW5hbWUsIHN1YmplY3QsIHJldik7CiAKIAlpZiAoIXF1aWV0KQogCQlmcHJpbnRmKHJlYWxzdGRvdXQsICIlc1xuIiwgZmlsZW5hbWUuYnVmICsgb3V0ZGlyX29mZnNldCk7CkBAIC02OTAsNyArNzM5LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgZ2V0X3BhdGNoX2lkcyhzdHJ1Y3QgcmV2X2luZm8gKnJldiwgc3RydWN0IHBhdGNoX2lkcyAqaWRzLCBjb25zdCBjaGFyICpwcmVmaXgpCitzdGF0aWMgdm9pZCBnZXRfcGF0Y2hfaWRzKHN0cnVjdCByZXZfaW5mbyAqcmV2LCBzdHJ1Y3QgcGF0Y2hfaWRzICppZHMpCiB7CiAJc3RydWN0IHJldl9pbmZvIGNoZWNrX3JldjsKIAlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CkBAIC03MTEsNyArNzYwLDggQEAKIAlpbml0X3BhdGNoX2lkcyhpZHMpOwogCiAJLyogZ2l2ZW4gYSByYW5nZSBhLi5iIGdldCBhbGwgcGF0Y2ggaWRzIGZvciBiLi5hICovCi0JaW5pdF9yZXZpc2lvbnMoJmNoZWNrX3JldiwgcHJlZml4KTsKKwlpbml0X3JldmlzaW9ucygmY2hlY2tfcmV2LCByZXYtPnByZWZpeCk7CisJY2hlY2tfcmV2Lm1heF9wYXJlbnRzID0gMTsKIAlvMS0+ZmxhZ3MgXj0gVU5JTlRFUkVTVElORzsKIAlvMi0+ZmxhZ3MgXj0gVU5JTlRFUkVTVElORzsKIAlhZGRfcGVuZGluZ19vYmplY3QoJmNoZWNrX3JldiwgbzEsICJvMSIpOwpAQCAtNzIwLDEwICs3NzAsNiBAQAogCQlkaWUoXygicmV2aXNpb24gd2FsayBzZXR1cCBmYWlsZWQiKSk7CiAKIAl3aGlsZSAoKGNvbW1pdCA9IGdldF9yZXZpc2lvbigmY2hlY2tfcmV2KSkgIT0gTlVMTCkgewotCQkvKiBpZ25vcmUgbWVyZ2VzICovCi0JCWlmIChjb21taXQtPnBhcmVudHMgJiYgY29tbWl0LT5wYXJlbnRzLT5uZXh0KQotCQkJY29udGludWU7Ci0KIAkJYWRkX2NvbW1pdF9wYXRjaF9pZChjb21taXQsIGlkcyk7CiAJfQogCkBAIC03NjQsMTAgKzgxMCwzNyBAQAogCX0KIH0KIAorc3RhdGljIGNoYXIgKmZpbmRfYnJhbmNoX25hbWUoc3RydWN0IHJldl9pbmZvICpyZXYpCit7CisJaW50IGksIHBvc2l0aXZlID0gLTE7CisJdW5zaWduZWQgY2hhciBicmFuY2hfc2hhMVsyMF07CisJY29uc3QgdW5zaWduZWQgY2hhciAqdGlwX3NoYTE7CisJY29uc3QgY2hhciAqcmVmOworCWNoYXIgKmZ1bGxfcmVmLCAqYnJhbmNoID0gTlVMTDsKKworCWZvciAoaSA9IDA7IGkgPCByZXYtPmNtZGxpbmUubnI7IGkrKykgeworCQlpZiAocmV2LT5jbWRsaW5lLnJldltpXS5mbGFncyAmIFVOSU5URVJFU1RJTkcpCisJCQljb250aW51ZTsKKwkJaWYgKHBvc2l0aXZlIDwgMCkKKwkJCXBvc2l0aXZlID0gaTsKKwkJZWxzZQorCQkJcmV0dXJuIE5VTEw7CisJfQorCWlmIChwb3NpdGl2ZSA8IDApCisJCXJldHVybiBOVUxMOworCXJlZiA9IHJldi0+Y21kbGluZS5yZXZbcG9zaXRpdmVdLm5hbWU7CisJdGlwX3NoYTEgPSByZXYtPmNtZGxpbmUucmV2W3Bvc2l0aXZlXS5pdGVtLT5zaGExOworCWlmIChkd2ltX3JlZihyZWYsIHN0cmxlbihyZWYpLCBicmFuY2hfc2hhMSwgJmZ1bGxfcmVmKSAmJgorCSAgICAhcHJlZml4Y21wKGZ1bGxfcmVmLCAicmVmcy9oZWFkcy8iKSAmJgorCSAgICAhaGFzaGNtcCh0aXBfc2hhMSwgYnJhbmNoX3NoYTEpKQorCQlicmFuY2ggPSB4c3RyZHVwKGZ1bGxfcmVmICsgc3RybGVuKCJyZWZzL2hlYWRzLyIpKTsKKwlmcmVlKGZ1bGxfcmVmKTsKKwlyZXR1cm4gYnJhbmNoOworfQorCiBzdGF0aWMgdm9pZCBtYWtlX2NvdmVyX2xldHRlcihzdHJ1Y3QgcmV2X2luZm8gKnJldiwgaW50IHVzZV9zdGRvdXQsCi0JCQkgICAgICBpbnQgbnVtYmVyZWQsIGludCBudW1iZXJlZF9maWxlcywKIAkJCSAgICAgIHN0cnVjdCBjb21taXQgKm9yaWdpbiwKLQkJCSAgICAgIGludCBuciwgc3RydWN0IGNvbW1pdCAqKmxpc3QsIHN0cnVjdCBjb21taXQgKmhlYWQsCisJCQkgICAgICBpbnQgbnIsIHN0cnVjdCBjb21taXQgKipsaXN0LAogCQkJICAgICAgY29uc3QgY2hhciAqYnJhbmNoX25hbWUsCiAJCQkgICAgICBpbnQgcXVpZXQpCiB7CkBAIC03ODEsNiArODU0LDcgQEAKIAlzdHJ1Y3QgZGlmZl9vcHRpb25zIG9wdHM7CiAJaW50IG5lZWRfOGJpdF9jdGUgPSAwOwogCXN0cnVjdCBwcmV0dHlfcHJpbnRfY29udGV4dCBwcCA9IHswfTsKKwlzdHJ1Y3QgY29tbWl0ICpoZWFkID0gbGlzdFswXTsKIAogCWlmIChyZXYtPmNvbW1pdF9mb3JtYXQgIT0gQ01JVF9GTVRfRU1BSUwpCiAJCWRpZShfKCJDb3ZlciBsZXR0ZXIgbmVlZHMgZW1haWwgZm9ybWF0IikpOwpAQCAtNzg4LDcgKzg2Miw3IEBACiAJY29tbWl0dGVyID0gZ2l0X2NvbW1pdHRlcl9pbmZvKDApOwogCiAJaWYgKCF1c2Vfc3Rkb3V0ICYmCi0JICAgIHJlb3Blbl9zdGRvdXQoTlVMTCwgbnVtYmVyZWRfZmlsZXMgPyBOVUxMIDogImNvdmVyLWxldHRlciIsIHJldiwgcXVpZXQpKQorCSAgICByZW9wZW5fc3Rkb3V0KE5VTEwsIHJldi0+bnVtYmVyZWRfZmlsZXMgPyBOVUxMIDogImNvdmVyLWxldHRlciIsIHJldiwgcXVpZXQpKQogCQlyZXR1cm47CiAKIAlsb2dfd3JpdGVfZW1haWxfaGVhZGVycyhyZXYsIGhlYWQsICZwcC5zdWJqZWN0LCAmcHAuYWZ0ZXJfc3ViamVjdCwKQEAgLTc5OCw2ICs4NzIsOSBAQAogCQlpZiAoaGFzX25vbl9hc2NpaShsaXN0W2ldLT5idWZmZXIpKQogCQkJbmVlZF84Yml0X2N0ZSA9IDE7CiAKKwlpZiAoIWJyYW5jaF9uYW1lKQorCQlicmFuY2hfbmFtZSA9IGZpbmRfYnJhbmNoX25hbWUocmV2KTsKKwogCW1zZyA9IGJvZHk7CiAJcHAuZm10ID0gQ01JVF9GTVRfRU1BSUw7CiAJcHAuZGF0ZV9tb2RlID0gREFURV9SRkMyODIyOwpAQCAtODg0LDcgKzk2MSw3IEBACiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9mb3JtYXRfcGF0Y2hfdXNhZ2VbXSA9IHsKLQkiZ2l0IGZvcm1hdC1wYXRjaCBbb3B0aW9uc10gWzxzaW5jZT4gfCA8cmV2aXNpb24gcmFuZ2U+XSIsCisJTl8oImdpdCBmb3JtYXQtcGF0Y2ggW29wdGlvbnNdIFs8c2luY2U+IHwgPHJldmlzaW9uIHJhbmdlPl0iKSwKIAlOVUxMCiB9OwogCkBAIC0xMDA0LDM1ICsxMDgxLDYgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGNoYXIgKmZpbmRfYnJhbmNoX25hbWUoc3RydWN0IHJldl9pbmZvICpyZXYpCi17Ci0JaW50IGksIHBvc2l0aXZlID0gLTE7Ci0JdW5zaWduZWQgY2hhciBicmFuY2hfc2hhMVsyMF07Ci0Jc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKLQljb25zdCBjaGFyICpicmFuY2g7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgcmV2LT5jbWRsaW5lLm5yOyBpKyspIHsKLQkJaWYgKHJldi0+Y21kbGluZS5yZXZbaV0uZmxhZ3MgJiBVTklOVEVSRVNUSU5HKQotCQkJY29udGludWU7Ci0JCWlmIChwb3NpdGl2ZSA8IDApCi0JCQlwb3NpdGl2ZSA9IGk7Ci0JCWVsc2UKLQkJCXJldHVybiBOVUxMOwotCX0KLQlpZiAocG9zaXRpdmUgPCAwKQotCQlyZXR1cm4gTlVMTDsKLQlzdHJidWZfYWRkZigmYnVmLCAicmVmcy9oZWFkcy8lcyIsIHJldi0+Y21kbGluZS5yZXZbcG9zaXRpdmVdLm5hbWUpOwotCWJyYW5jaCA9IHJlc29sdmVfcmVmX3Vuc2FmZShidWYuYnVmLCBicmFuY2hfc2hhMSwgMSwgTlVMTCk7Ci0JaWYgKCFicmFuY2ggfHwKLQkgICAgcHJlZml4Y21wKGJyYW5jaCwgInJlZnMvaGVhZHMvIikgfHwKLQkgICAgaGFzaGNtcChyZXYtPmNtZGxpbmUucmV2W3Bvc2l0aXZlXS5pdGVtLT5zaGExLCBicmFuY2hfc2hhMSkpCi0JCWJyYW5jaCA9IE5VTEw7Ci0Jc3RyYnVmX3JlbGVhc2UoJmJ1Zik7Ci0JaWYgKGJyYW5jaCkKLQkJcmV0dXJuIHhzdHJkdXAocmV2LT5jbWRsaW5lLnJldltwb3NpdGl2ZV0ubmFtZSk7Ci0JcmV0dXJuIE5VTEw7Ci19Ci0KIGludCBjbWRfZm9ybWF0X3BhdGNoKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewogCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKQEAgLTEwNDIsODIgKzEwOTAsODUgQEAKIAlpbnQgbnIgPSAwLCB0b3RhbCwgaTsKIAlpbnQgdXNlX3N0ZG91dCA9IDA7CiAJaW50IHN0YXJ0X251bWJlciA9IC0xOwotCWludCBudW1iZXJlZF9maWxlcyA9IDA7CQkvKiBfanVzdF8gbnVtYmVycyAqLworCWludCBqdXN0X251bWJlcnMgPSAwOwogCWludCBpZ25vcmVfaWZfaW5fdXBzdHJlYW0gPSAwOwotCWludCBjb3Zlcl9sZXR0ZXIgPSAwOworCWludCBjb3Zlcl9sZXR0ZXIgPSAtMTsKIAlpbnQgYm91bmRhcnlfY291bnQgPSAwOwogCWludCBub19iaW5hcnlfZGlmZiA9IDA7Ci0Jc3RydWN0IGNvbW1pdCAqb3JpZ2luID0gTlVMTCwgKmhlYWQgPSBOVUxMOworCXN0cnVjdCBjb21taXQgKm9yaWdpbiA9IE5VTEw7CiAJY29uc3QgY2hhciAqaW5fcmVwbHlfdG8gPSBOVUxMOwogCXN0cnVjdCBwYXRjaF9pZHMgaWRzOwotCWNoYXIgKmFkZF9zaWdub2ZmID0gTlVMTDsKIAlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCWludCB1c2VfcGF0Y2hfZm9ybWF0ID0gMDsKIAlpbnQgcXVpZXQgPSAwOworCWludCByZXJvbGxfY291bnQgPSAtMTsKIAljaGFyICpicmFuY2hfbmFtZSA9IE5VTEw7CiAJY29uc3Qgc3RydWN0IG9wdGlvbiBidWlsdGluX2Zvcm1hdF9wYXRjaF9vcHRpb25zW10gPSB7CiAJCXsgT1BUSU9OX0NBTExCQUNLLCAnbicsICJudW1iZXJlZCIsICZudW1iZXJlZCwgTlVMTCwKLQkJCSAgICAidXNlIFtQQVRDSCBuL21dIGV2ZW4gd2l0aCBhIHNpbmdsZSBwYXRjaCIsCisJCQkgICAgTl8oInVzZSBbUEFUQ0ggbi9tXSBldmVuIHdpdGggYSBzaW5nbGUgcGF0Y2giKSwKIAkJCSAgICBQQVJTRV9PUFRfTk9BUkcsIG51bWJlcmVkX2NhbGxiYWNrIH0sCiAJCXsgT1BUSU9OX0NBTExCQUNLLCAnTicsICJuby1udW1iZXJlZCIsICZudW1iZXJlZCwgTlVMTCwKLQkJCSAgICAidXNlIFtQQVRDSF0gZXZlbiB3aXRoIG11bHRpcGxlIHBhdGNoZXMiLAorCQkJICAgIE5fKCJ1c2UgW1BBVENIXSBldmVuIHdpdGggbXVsdGlwbGUgcGF0Y2hlcyIpLAogCQkJICAgIFBBUlNFX09QVF9OT0FSRywgbm9fbnVtYmVyZWRfY2FsbGJhY2sgfSwKLQkJT1BUX0JPT0xFQU4oJ3MnLCAic2lnbm9mZiIsICZkb19zaWdub2ZmLCAiYWRkIFNpZ25lZC1vZmYtYnk6IiksCi0JCU9QVF9CT09MRUFOKDAsICJzdGRvdXQiLCAmdXNlX3N0ZG91dCwKLQkJCSAgICAicHJpbnQgcGF0Y2hlcyB0byBzdGFuZGFyZCBvdXQiKSwKLQkJT1BUX0JPT0xFQU4oMCwgImNvdmVyLWxldHRlciIsICZjb3Zlcl9sZXR0ZXIsCi0JCQkgICAgImdlbmVyYXRlIGEgY292ZXIgbGV0dGVyIiksCi0JCU9QVF9CT09MRUFOKDAsICJudW1iZXJlZC1maWxlcyIsICZudW1iZXJlZF9maWxlcywKLQkJCSAgICAidXNlIHNpbXBsZSBudW1iZXIgc2VxdWVuY2UgZm9yIG91dHB1dCBmaWxlIG5hbWVzIiksCi0JCU9QVF9TVFJJTkcoMCwgInN1ZmZpeCIsICZmbXRfcGF0Y2hfc3VmZml4LCAic2Z4IiwKLQkJCSAgICAidXNlIDxzZng+IGluc3RlYWQgb2YgJy5wYXRjaCciKSwKKwkJT1BUX0JPT0woJ3MnLCAic2lnbm9mZiIsICZkb19zaWdub2ZmLCBOXygiYWRkIFNpZ25lZC1vZmYtYnk6IikpLAorCQlPUFRfQk9PTCgwLCAic3Rkb3V0IiwgJnVzZV9zdGRvdXQsCisJCQkgICAgTl8oInByaW50IHBhdGNoZXMgdG8gc3RhbmRhcmQgb3V0IikpLAorCQlPUFRfQk9PTCgwLCAiY292ZXItbGV0dGVyIiwgJmNvdmVyX2xldHRlciwKKwkJCSAgICBOXygiZ2VuZXJhdGUgYSBjb3ZlciBsZXR0ZXIiKSksCisJCU9QVF9CT09MKDAsICJudW1iZXJlZC1maWxlcyIsICZqdXN0X251bWJlcnMsCisJCQkgICAgTl8oInVzZSBzaW1wbGUgbnVtYmVyIHNlcXVlbmNlIGZvciBvdXRwdXQgZmlsZSBuYW1lcyIpKSwKKwkJT1BUX1NUUklORygwLCAic3VmZml4IiwgJmZtdF9wYXRjaF9zdWZmaXgsIE5fKCJzZngiKSwKKwkJCSAgICBOXygidXNlIDxzZng+IGluc3RlYWQgb2YgJy5wYXRjaCciKSksCiAJCU9QVF9JTlRFR0VSKDAsICJzdGFydC1udW1iZXIiLCAmc3RhcnRfbnVtYmVyLAotCQkJICAgICJzdGFydCBudW1iZXJpbmcgcGF0Y2hlcyBhdCA8bj4gaW5zdGVhZCBvZiAxIiksCi0JCXsgT1BUSU9OX0NBTExCQUNLLCAwLCAic3ViamVjdC1wcmVmaXgiLCAmcmV2LCAicHJlZml4IiwKLQkJCSAgICAiVXNlIFs8cHJlZml4Pl0gaW5zdGVhZCBvZiBbUEFUQ0hdIiwKKwkJCSAgICBOXygic3RhcnQgbnVtYmVyaW5nIHBhdGNoZXMgYXQgPG4+IGluc3RlYWQgb2YgMSIpKSwKKwkJT1BUX0lOVEVHRVIoJ3YnLCAicmVyb2xsLWNvdW50IiwgJnJlcm9sbF9jb3VudCwKKwkJCSAgICBOXygibWFyayB0aGUgc2VyaWVzIGFzIE50aCByZS1yb2xsIikpLAorCQl7IE9QVElPTl9DQUxMQkFDSywgMCwgInN1YmplY3QtcHJlZml4IiwgJnJldiwgTl8oInByZWZpeCIpLAorCQkJICAgIE5fKCJVc2UgWzxwcmVmaXg+XSBpbnN0ZWFkIG9mIFtQQVRDSF0iKSwKIAkJCSAgICBQQVJTRV9PUFRfTk9ORUcsIHN1YmplY3RfcHJlZml4X2NhbGxiYWNrIH0sCiAJCXsgT1BUSU9OX0NBTExCQUNLLCAnbycsICJvdXRwdXQtZGlyZWN0b3J5IiwgJm91dHB1dF9kaXJlY3RvcnksCi0JCQkgICAgImRpciIsICJzdG9yZSByZXN1bHRpbmcgZmlsZXMgaW4gPGRpcj4iLAorCQkJICAgIE5fKCJkaXIiKSwgTl8oInN0b3JlIHJlc3VsdGluZyBmaWxlcyBpbiA8ZGlyPiIpLAogCQkJICAgIFBBUlNFX09QVF9OT05FRywgb3V0cHV0X2RpcmVjdG9yeV9jYWxsYmFjayB9LAogCQl7IE9QVElPTl9DQUxMQkFDSywgJ2snLCAia2VlcC1zdWJqZWN0IiwgJnJldiwgTlVMTCwKLQkJCSAgICAiZG9uJ3Qgc3RyaXAvYWRkIFtQQVRDSF0iLAorCQkJICAgIE5fKCJkb24ndCBzdHJpcC9hZGQgW1BBVENIXSIpLAogCQkJICAgIFBBUlNFX09QVF9OT0FSRyB8IFBBUlNFX09QVF9OT05FRywga2VlcF9jYWxsYmFjayB9LAogCQlPUFRfQk9PTEVBTigwLCAibm8tYmluYXJ5IiwgJm5vX2JpbmFyeV9kaWZmLAotCQkJICAgICJkb24ndCBvdXRwdXQgYmluYXJ5IGRpZmZzIiksCisJCQkgICAgTl8oImRvbid0IG91dHB1dCBiaW5hcnkgZGlmZnMiKSksCiAJCU9QVF9CT09MRUFOKDAsICJpZ25vcmUtaWYtaW4tdXBzdHJlYW0iLCAmaWdub3JlX2lmX2luX3Vwc3RyZWFtLAotCQkJICAgICJkb24ndCBpbmNsdWRlIGEgcGF0Y2ggbWF0Y2hpbmcgYSBjb21taXQgdXBzdHJlYW0iKSwKKwkJCSAgICBOXygiZG9uJ3QgaW5jbHVkZSBhIHBhdGNoIG1hdGNoaW5nIGEgY29tbWl0IHVwc3RyZWFtIikpLAogCQl7IE9QVElPTl9CT09MRUFOLCAncCcsICJuby1zdGF0IiwgJnVzZV9wYXRjaF9mb3JtYXQsIE5VTEwsCi0JCSAgInNob3cgcGF0Y2ggZm9ybWF0IGluc3RlYWQgb2YgZGVmYXVsdCAocGF0Y2ggKyBzdGF0KSIsCisJCSAgTl8oInNob3cgcGF0Y2ggZm9ybWF0IGluc3RlYWQgb2YgZGVmYXVsdCAocGF0Y2ggKyBzdGF0KSIpLAogCQkgIFBBUlNFX09QVF9OT05FRyB8IFBBUlNFX09QVF9OT0FSRyB9LAotCQlPUFRfR1JPVVAoIk1lc3NhZ2luZyIpLAotCQl7IE9QVElPTl9DQUxMQkFDSywgMCwgImFkZC1oZWFkZXIiLCBOVUxMLCAiaGVhZGVyIiwKLQkJCSAgICAiYWRkIGVtYWlsIGhlYWRlciIsIDAsIGhlYWRlcl9jYWxsYmFjayB9LAotCQl7IE9QVElPTl9DQUxMQkFDSywgMCwgInRvIiwgTlVMTCwgImVtYWlsIiwgImFkZCBUbzogaGVhZGVyIiwKKwkJT1BUX0dST1VQKE5fKCJNZXNzYWdpbmciKSksCisJCXsgT1BUSU9OX0NBTExCQUNLLCAwLCAiYWRkLWhlYWRlciIsIE5VTEwsIE5fKCJoZWFkZXIiKSwKKwkJCSAgICBOXygiYWRkIGVtYWlsIGhlYWRlciIpLCAwLCBoZWFkZXJfY2FsbGJhY2sgfSwKKwkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJ0byIsIE5VTEwsIE5fKCJlbWFpbCIpLCBOXygiYWRkIFRvOiBoZWFkZXIiKSwKIAkJCSAgICAwLCB0b19jYWxsYmFjayB9LAotCQl7IE9QVElPTl9DQUxMQkFDSywgMCwgImNjIiwgTlVMTCwgImVtYWlsIiwgImFkZCBDYzogaGVhZGVyIiwKKwkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJjYyIsIE5VTEwsIE5fKCJlbWFpbCIpLCBOXygiYWRkIENjOiBoZWFkZXIiKSwKIAkJCSAgICAwLCBjY19jYWxsYmFjayB9LAotCQlPUFRfU1RSSU5HKDAsICJpbi1yZXBseS10byIsICZpbl9yZXBseV90bywgIm1lc3NhZ2UtaWQiLAotCQkJICAgICJtYWtlIGZpcnN0IG1haWwgYSByZXBseSB0byA8bWVzc2FnZS1pZD4iKSwKLQkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJhdHRhY2giLCAmcmV2LCAiYm91bmRhcnkiLAotCQkJICAgICJhdHRhY2ggdGhlIHBhdGNoIiwgUEFSU0VfT1BUX09QVEFSRywKKwkJT1BUX1NUUklORygwLCAiaW4tcmVwbHktdG8iLCAmaW5fcmVwbHlfdG8sIE5fKCJtZXNzYWdlLWlkIiksCisJCQkgICAgTl8oIm1ha2UgZmlyc3QgbWFpbCBhIHJlcGx5IHRvIDxtZXNzYWdlLWlkPiIpKSwKKwkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJhdHRhY2giLCAmcmV2LCBOXygiYm91bmRhcnkiKSwKKwkJCSAgICBOXygiYXR0YWNoIHRoZSBwYXRjaCIpLCBQQVJTRV9PUFRfT1BUQVJHLAogCQkJICAgIGF0dGFjaF9jYWxsYmFjayB9LAotCQl7IE9QVElPTl9DQUxMQkFDSywgMCwgImlubGluZSIsICZyZXYsICJib3VuZGFyeSIsCi0JCQkgICAgImlubGluZSB0aGUgcGF0Y2giLAorCQl7IE9QVElPTl9DQUxMQkFDSywgMCwgImlubGluZSIsICZyZXYsIE5fKCJib3VuZGFyeSIpLAorCQkJICAgIE5fKCJpbmxpbmUgdGhlIHBhdGNoIiksCiAJCQkgICAgUEFSU0VfT1BUX09QVEFSRyB8IFBBUlNFX09QVF9OT05FRywKIAkJCSAgICBpbmxpbmVfY2FsbGJhY2sgfSwKLQkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJ0aHJlYWQiLCAmdGhyZWFkLCAic3R5bGUiLAotCQkJICAgICJlbmFibGUgbWVzc2FnZSB0aHJlYWRpbmcsIHN0eWxlczogc2hhbGxvdywgZGVlcCIsCisJCXsgT1BUSU9OX0NBTExCQUNLLCAwLCAidGhyZWFkIiwgJnRocmVhZCwgTl8oInN0eWxlIiksCisJCQkgICAgTl8oImVuYWJsZSBtZXNzYWdlIHRocmVhZGluZywgc3R5bGVzOiBzaGFsbG93LCBkZWVwIiksCiAJCQkgICAgUEFSU0VfT1BUX09QVEFSRywgdGhyZWFkX2NhbGxiYWNrIH0sCi0JCU9QVF9TVFJJTkcoMCwgInNpZ25hdHVyZSIsICZzaWduYXR1cmUsICJzaWduYXR1cmUiLAotCQkJICAgICJhZGQgYSBzaWduYXR1cmUiKSwKKwkJT1BUX1NUUklORygwLCAic2lnbmF0dXJlIiwgJnNpZ25hdHVyZSwgTl8oInNpZ25hdHVyZSIpLAorCQkJICAgIE5fKCJhZGQgYSBzaWduYXR1cmUiKSksCiAJCU9QVF9CT09MRUFOKDAsICJxdWlldCIsICZxdWlldCwKLQkJCSAgICAiZG9uJ3QgcHJpbnQgdGhlIHBhdGNoIGZpbGVuYW1lcyIpLAorCQkJICAgIE5fKCJkb24ndCBwcmludCB0aGUgcGF0Y2ggZmlsZW5hbWVzIikpLAogCQlPUFRfRU5EKCkKIAl9OwogCiAJZXh0cmFfaGRyLnN0cmR1cF9zdHJpbmdzID0gMTsKIAlleHRyYV90by5zdHJkdXBfc3RyaW5ncyA9IDE7CiAJZXh0cmFfY2Muc3RyZHVwX3N0cmluZ3MgPSAxOworCWluaXRfZ3JlcF9kZWZhdWx0cygpOwogCWdpdF9jb25maWcoZ2l0X2Zvcm1hdF9jb25maWcsIE5VTEwpOwogCWluaXRfcmV2aXNpb25zKCZyZXYsIHByZWZpeCk7CiAJcmV2LmNvbW1pdF9mb3JtYXQgPSBDTUlUX0ZNVF9FTUFJTDsKQEAgLTExMjgsNiArMTE3OSw3IEBACiAJcmV2LnN1YmplY3RfcHJlZml4ID0gZm10X3BhdGNoX3N1YmplY3RfcHJlZml4OwogCW1lbXNldCgmc19yX29wdCwgMCwgc2l6ZW9mKHNfcl9vcHQpKTsKIAlzX3Jfb3B0LmRlZiA9ICJIRUFEIjsKKwlzX3Jfb3B0LnJldmFyZ19vcHQgPSBSRVZBUkdfQ09NTUlUVElTSDsKIAogCWlmIChkZWZhdWx0X2F0dGFjaCkgewogCQlyZXYubWltZV9ib3VuZGFyeSA9IGRlZmF1bHRfYXR0YWNoOwpAQCAtMTE0NCwxNCArMTE5NiwxMiBAQAogCQkJICAgICBQQVJTRV9PUFRfS0VFUF9BUkdWMCB8IFBBUlNFX09QVF9LRUVQX1VOS05PV04gfAogCQkJICAgICBQQVJTRV9PUFRfS0VFUF9EQVNIREFTSCk7CiAKLQlpZiAoZG9fc2lnbm9mZikgewotCQljb25zdCBjaGFyICpjb21taXR0ZXI7Ci0JCWNvbnN0IGNoYXIgKmVuZHBvczsKLQkJY29tbWl0dGVyID0gZ2l0X2NvbW1pdHRlcl9pbmZvKElERU5UX1NUUklDVCk7Ci0JCWVuZHBvcyA9IHN0cmNocihjb21taXR0ZXIsICc+Jyk7Ci0JCWlmICghZW5kcG9zKQotCQkJZGllKF8oImJvZ3VzIGNvbW1pdHRlciBpbmZvICVzIiksIGNvbW1pdHRlcik7Ci0JCWFkZF9zaWdub2ZmID0geG1lbWR1cHooY29tbWl0dGVyLCBlbmRwb3MgLSBjb21taXR0ZXIgKyAxKTsKKwlpZiAoMCA8IHJlcm9sbF9jb3VudCkgeworCQlzdHJ1Y3Qgc3RyYnVmIHNwcmVmaXggPSBTVFJCVUZfSU5JVDsKKwkJc3RyYnVmX2FkZGYoJnNwcmVmaXgsICIlcyB2JWQiLAorCQkJICAgIHJldi5zdWJqZWN0X3ByZWZpeCwgcmVyb2xsX2NvdW50KTsKKwkJcmV2LnJlcm9sbF9jb3VudCA9IHJlcm9sbF9jb3VudDsKKwkJcmV2LnN1YmplY3RfcHJlZml4ID0gc3RyYnVmX2RldGFjaCgmc3ByZWZpeCwgTlVMTCk7CiAJfQogCiAJZm9yIChpID0gMDsgaSA8IGV4dHJhX2hkci5ucjsgaSsrKSB7CkBAIC0xMjM5LDI4ICsxMjg5LDM2IEBACiAJfQogCiAJaWYgKHJldi5wZW5kaW5nLm5yID09IDEpIHsKKwkJaW50IGNoZWNrX2hlYWQgPSAwOworCiAJCWlmIChyZXYubWF4X2NvdW50IDwgMCAmJiAhcmV2LnNob3dfcm9vdF9kaWZmKSB7CiAJCQkvKgogCQkJICogVGhpcyBpcyB0cmFkaXRpb25hbCBiZWhhdmlvdXIgb2YgImdpdCBmb3JtYXQtcGF0Y2gKIAkJCSAqIG9yaWdpbiIgdGhhdCBwcmVwYXJlcyB3aGF0IHRoZSBvcmlnaW4gc2lkZSBzdGlsbAogCQkJICogZG9lcyBub3QgaGF2ZS4KIAkJCSAqLwotCQkJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKLQkJCWNvbnN0IGNoYXIgKnJlZjsKLQogCQkJcmV2LnBlbmRpbmcub2JqZWN0c1swXS5pdGVtLT5mbGFncyB8PSBVTklOVEVSRVNUSU5HOwogCQkJYWRkX2hlYWRfdG9fcGVuZGluZygmcmV2KTsKLQkJCXJlZiA9IHJlc29sdmVfcmVmX3Vuc2FmZSgiSEVBRCIsIHNoYTEsIDEsIE5VTEwpOwotCQkJaWYgKHJlZiAmJiAhcHJlZml4Y21wKHJlZiwgInJlZnMvaGVhZHMvIikpCi0JCQkJYnJhbmNoX25hbWUgPSB4c3RyZHVwKHJlZiArIHN0cmxlbigicmVmcy9oZWFkcy8iKSk7Ci0JCQllbHNlCi0JCQkJYnJhbmNoX25hbWUgPSB4c3RyZHVwKCIiKTsgLyogbm8gYnJhbmNoICovCisJCQljaGVja19oZWFkID0gMTsKIAkJfQogCQkvKgogCQkgKiBPdGhlcndpc2UsIGl0IGlzICJmb3JtYXQtcGF0Y2ggLTIyIEhFQUQiLCBhbmQvb3IKIAkJICogImZvcm1hdC1wYXRjaCAtLXJvb3QgSEVBRCIuICBUaGUgdXNlciB3YW50cwogCQkgKiBnZXRfcmV2aXNpb24oKSB0byBkbyB0aGUgdXN1YWwgdHJhdmVyc2FsLgogCQkgKi8KKworCQlpZiAoIXN0cmNtcChyZXYucGVuZGluZy5vYmplY3RzWzBdLm5hbWUsICJIRUFEIikpCisJCQljaGVja19oZWFkID0gMTsKKworCQlpZiAoY2hlY2tfaGVhZCkgeworCQkJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKKwkJCWNvbnN0IGNoYXIgKnJlZjsKKwkJCXJlZiA9IHJlc29sdmVfcmVmX3Vuc2FmZSgiSEVBRCIsIHNoYTEsIDEsIE5VTEwpOworCQkJaWYgKHJlZiAmJiAhcHJlZml4Y21wKHJlZiwgInJlZnMvaGVhZHMvIikpCisJCQkJYnJhbmNoX25hbWUgPSB4c3RyZHVwKHJlZiArIHN0cmxlbigicmVmcy9oZWFkcy8iKSk7CisJCQllbHNlCisJCQkJYnJhbmNoX25hbWUgPSB4c3RyZHVwKCIiKTsgLyogbm8gYnJhbmNoICovCisJCX0KIAl9CiAKIAkvKgpAQCAtMTI2OSwyOSArMTMyNyw2IEBACiAJICovCiAJcmV2LnNob3dfcm9vdF9kaWZmID0gMTsKIAotCWlmIChjb3Zlcl9sZXR0ZXIpIHsKLQkJLyoKLQkJICogTkVFRFNXT1JLOnJhbmRvbWx5IHBpY2sgb25lIHBvc2l0aXZlIGNvbW1pdCB0byBzaG93Ci0JCSAqIGRpZmZzdGF0OyB0aGlzIGlzIG9mdGVuIHRoZSB0aXAgYW5kIHRoZSBjb21tYW5kCi0JCSAqIGhhcHBlbnMgdG8gZG8gdGhlIHJpZ2h0IHRoaW5nIGluIG1vc3QgY2FzZXMsIGJ1dCBhCi0JCSAqIGNvbXBsZXggY29tbWFuZCBsaWtlICItLWNvdmVyLWxldHRlciBhIGIgYyBeYm90dG9tIgotCQkgKiBwaWNrcyAiYyIgYW5kIHNob3dzIGRpZmZzdGF0IGJldHdlZW4gYm90dG9tLi5jCi0JCSAqIHdoaWNoIG1heSBub3QgbWF0Y2ggd2hhdCB0aGUgc2VyaWVzIHJlcHJlc2VudHMgYXQKLQkJICogYWxsIGFuZCB0b3RhbGx5IGJyb2tlbi4KLQkJICovCi0JCWludCBpOwotCQlmb3IgKGkgPSAwOyBpIDwgcmV2LnBlbmRpbmcubnI7IGkrKykgewotCQkJc3RydWN0IG9iamVjdCAqbyA9IHJldi5wZW5kaW5nLm9iamVjdHNbaV0uaXRlbTsKLQkJCWlmICghKG8tPmZsYWdzICYgVU5JTlRFUkVTVElORykpCi0JCQkJaGVhZCA9IChzdHJ1Y3QgY29tbWl0ICopbzsKLQkJfQotCQkvKiBUaGVyZSBpcyBub3RoaW5nIHRvIHNob3c7IGl0IGlzIG5vdCBhbiBlcnJvciwgdGhvdWdoLiAqLwotCQlpZiAoIWhlYWQpCi0JCQlyZXR1cm4gMDsKLQkJaWYgKCFicmFuY2hfbmFtZSkKLQkJCWJyYW5jaF9uYW1lID0gZmluZF9icmFuY2hfbmFtZSgmcmV2KTsKLQl9Ci0KIAlpZiAoaWdub3JlX2lmX2luX3Vwc3RyZWFtKSB7CiAJCS8qIERvbid0IHNheSBhbnl0aGluZyBpZiBoZWFkIGFuZCB1cHN0cmVhbSBhcmUgdGhlIHNhbWUuICovCiAJCWlmIChyZXYucGVuZGluZy5uciA9PSAyKSB7CkBAIC0xMjk5LDcgKzEzMzQsNyBAQAogCQkJaWYgKGhhc2hjbXAob1swXS5pdGVtLT5zaGExLCBvWzFdLml0ZW0tPnNoYTEpID09IDApCiAJCQkJcmV0dXJuIDA7CiAJCX0KLQkJZ2V0X3BhdGNoX2lkcygmcmV2LCAmaWRzLCBwcmVmaXgpOworCQlnZXRfcGF0Y2hfaWRzKCZyZXYsICZpZHMpOwogCX0KIAogCWlmICghdXNlX3N0ZG91dCkKQEAgLTEzMjMsMjggKzEzNTgsMzggQEAKIAkJbGlzdCA9IHhyZWFsbG9jKGxpc3QsIG5yICogc2l6ZW9mKGxpc3RbMF0pKTsKIAkJbGlzdFtuciAtIDFdID0gY29tbWl0OwogCX0KKwlpZiAobnIgPT0gMCkKKwkJLyogbm90aGluZyB0byBkbyAqLworCQlyZXR1cm4gMDsKIAl0b3RhbCA9IG5yOwogCWlmICgha2VlcF9zdWJqZWN0ICYmIGF1dG9fbnVtYmVyICYmIHRvdGFsID4gMSkKIAkJbnVtYmVyZWQgPSAxOwogCWlmIChudW1iZXJlZCkKIAkJcmV2LnRvdGFsID0gdG90YWwgKyBzdGFydF9udW1iZXIgLSAxOworCWlmIChjb3Zlcl9sZXR0ZXIgPT0gLTEpIHsKKwkJaWYgKGNvbmZpZ19jb3Zlcl9sZXR0ZXIgPT0gQ09WRVJfQVVUTykKKwkJCWNvdmVyX2xldHRlciA9ICh0b3RhbCA+IDEpOworCQllbHNlCisJCQljb3Zlcl9sZXR0ZXIgPSAoY29uZmlnX2NvdmVyX2xldHRlciA9PSBDT1ZFUl9PTik7CisJfQorCiAJaWYgKGluX3JlcGx5X3RvIHx8IHRocmVhZCB8fCBjb3Zlcl9sZXR0ZXIpCiAJCXJldi5yZWZfbWVzc2FnZV9pZHMgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3Qgc3RyaW5nX2xpc3QpKTsKIAlpZiAoaW5fcmVwbHlfdG8pIHsKIAkJY29uc3QgY2hhciAqbXNnaWQgPSBjbGVhbl9tZXNzYWdlX2lkKGluX3JlcGx5X3RvKTsKIAkJc3RyaW5nX2xpc3RfYXBwZW5kKHJldi5yZWZfbWVzc2FnZV9pZHMsIG1zZ2lkKTsKIAl9Ci0JcmV2Lm51bWJlcmVkX2ZpbGVzID0gbnVtYmVyZWRfZmlsZXM7CisJcmV2Lm51bWJlcmVkX2ZpbGVzID0ganVzdF9udW1iZXJzOwogCXJldi5wYXRjaF9zdWZmaXggPSBmbXRfcGF0Y2hfc3VmZml4OwogCWlmIChjb3Zlcl9sZXR0ZXIpIHsKIAkJaWYgKHRocmVhZCkKIAkJCWdlbl9tZXNzYWdlX2lkKCZyZXYsICJjb3ZlciIpOwotCQltYWtlX2NvdmVyX2xldHRlcigmcmV2LCB1c2Vfc3Rkb3V0LCBudW1iZXJlZCwgbnVtYmVyZWRfZmlsZXMsCi0JCQkJICBvcmlnaW4sIG5yLCBsaXN0LCBoZWFkLCBicmFuY2hfbmFtZSwgcXVpZXQpOworCQltYWtlX2NvdmVyX2xldHRlcigmcmV2LCB1c2Vfc3Rkb3V0LAorCQkJCSAgb3JpZ2luLCBuciwgbGlzdCwgYnJhbmNoX25hbWUsIHF1aWV0KTsKIAkJdG90YWwrKzsKIAkJc3RhcnRfbnVtYmVyLS07CiAJfQotCXJldi5hZGRfc2lnbm9mZiA9IGFkZF9zaWdub2ZmOworCXJldi5hZGRfc2lnbm9mZiA9IGRvX3NpZ25vZmY7CiAJd2hpbGUgKDAgPD0gLS1ucikgewogCQlpbnQgc2hvd247CiAJCWNvbW1pdCA9IGxpc3RbbnJdOwpAQCAtMTM4Niw3ICsxNDMxLDcgQEAKIAkJfQogCiAJCWlmICghdXNlX3N0ZG91dCAmJgotCQkgICAgcmVvcGVuX3N0ZG91dChudW1iZXJlZF9maWxlcyA/IE5VTEwgOiBjb21taXQsIE5VTEwsICZyZXYsIHF1aWV0KSkKKwkJICAgIHJlb3Blbl9zdGRvdXQocmV2Lm51bWJlcmVkX2ZpbGVzID8gTlVMTCA6IGNvbW1pdCwgTlVMTCwgJnJldiwgcXVpZXQpKQogCQkJZGllKF8oIkZhaWxlZCB0byBjcmVhdGUgb3V0cHV0IGZpbGVzIikpOwogCQlzaG93biA9IGxvZ190cmVlX2NvbW1pdCgmcmV2LCBjb21taXQpOwogCQlmcmVlKGNvbW1pdC0+YnVmZmVyKTsKQEAgLTE0MzYsNyArMTQ4MSw3IEBACiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY2hlcnJ5X3VzYWdlW10gPSB7Ci0JImdpdCBjaGVycnkgWy12XSBbPHVwc3RyZWFtPiBbPGhlYWQ+IFs8bGltaXQ+XV1dIiwKKwlOXygiZ2l0IGNoZXJyeSBbLXZdIFs8dXBzdHJlYW0+IFs8aGVhZD4gWzxsaW1pdD5dXV0iKSwKIAlOVUxMCiB9OwogCkBAIC0xNDcwLDcgKzE1MTUsNyBAQAogCiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7CiAJCU9QVF9fQUJCUkVWKCZhYmJyZXYpLAotCQlPUFRfX1ZFUkJPU0UoJnZlcmJvc2UsICJiZSB2ZXJib3NlIiksCisJCU9QVF9fVkVSQk9TRSgmdmVyYm9zZSwgTl8oImJlIHZlcmJvc2UiKSksCiAJCU9QVF9FTkQoKQogCX07CiAKQEAgLTE1MDEsMTAgKzE1NDYsNyBAQAogCX0KIAogCWluaXRfcmV2aXNpb25zKCZyZXZzLCBwcmVmaXgpOwotCXJldnMuZGlmZiA9IDE7Ci0JcmV2cy5jb21iaW5lX21lcmdlcyA9IDA7Ci0JcmV2cy5pZ25vcmVfbWVyZ2VzID0gMTsKLQlESUZGX09QVF9TRVQoJnJldnMuZGlmZm9wdCwgUkVDVVJTSVZFKTsKKwlyZXZzLm1heF9wYXJlbnRzID0gMTsKIAogCWlmIChhZGRfcGVuZGluZ19jb21taXQoaGVhZCwgJnJldnMsIDApKQogCQlkaWUoXygiVW5rbm93biBjb21taXQgJXMiKSwgaGVhZCk7CkBAIC0xNTE4LDcgKzE1NjAsNyBAQAogCQkJcmV0dXJuIDA7CiAJfQogCi0JZ2V0X3BhdGNoX2lkcygmcmV2cywgJmlkcywgcHJlZml4KTsKKwlnZXRfcGF0Y2hfaWRzKCZyZXZzLCAmaWRzKTsKIAogCWlmIChsaW1pdCAmJiBhZGRfcGVuZGluZ19jb21taXQobGltaXQsICZyZXZzLCBVTklOVEVSRVNUSU5HKSkKIAkJZGllKF8oIlVua25vd24gY29tbWl0ICVzIiksIGxpbWl0KTsKQEAgLTE1MjcsMTAgKzE1NjksNiBAQAogCWlmIChwcmVwYXJlX3JldmlzaW9uX3dhbGsoJnJldnMpKQogCQlkaWUoXygicmV2aXNpb24gd2FsayBzZXR1cCBmYWlsZWQiKSk7CiAJd2hpbGUgKChjb21taXQgPSBnZXRfcmV2aXNpb24oJnJldnMpKSAhPSBOVUxMKSB7Ci0JCS8qIGlnbm9yZSBtZXJnZXMgKi8KLQkJaWYgKGNvbW1pdC0+cGFyZW50cyAmJiBjb21taXQtPnBhcmVudHMtPm5leHQpCi0JCQljb250aW51ZTsKLQogCQljb21taXRfbGlzdF9pbnNlcnQoY29tbWl0LCAmbGlzdCk7CiAJfQogCmRpZmYgLS1naXQgYS9idWlsdGluL2xzLWZpbGVzLmMgYi9idWlsdGluL2xzLWZpbGVzLmMKaW5kZXggN2NmZjE3NS4uMjIwMjA3MiAxMDA2NDQKLS0tIGEvYnVpbHRpbi9scy1maWxlcy5jCisrKyBiL2J1aWx0aW4vbHMtZmlsZXMuYwpAQCAtMzUsNiArMzUsNyBAQAogc3RhdGljIGNoYXIgKnBzX21hdGNoZWQ7CiBzdGF0aWMgY29uc3QgY2hhciAqd2l0aF90cmVlOwogc3RhdGljIGludCBleGNfZ2l2ZW47CitzdGF0aWMgaW50IGV4Y2x1ZGVfYXJnczsKIAogc3RhdGljIGNvbnN0IGNoYXIgKnRhZ19jYWNoZWQgPSAiIjsKIHN0YXRpYyBjb25zdCBjaGFyICp0YWdfdW5tZXJnZWQgPSAiIjsKQEAgLTIwMCw2ICsyMDEsMTIgQEAKIAl9CiB9CiAKK3N0YXRpYyBpbnQgY2VfZXhjbHVkZWQoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKK3sKKwlpbnQgZHR5cGUgPSBjZV90b19kdHlwZShjZSk7CisJcmV0dXJuIGlzX2V4Y2x1ZGVkKGRpciwgY2UtPm5hbWUsICZkdHlwZSk7Cit9CisKIHN0YXRpYyB2b2lkIHNob3dfZmlsZXMoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpcikKIHsKIAlpbnQgaTsKQEAgLTIxNSw5ICsyMjIsOCBAQAogCWlmIChzaG93X2NhY2hlZCB8IHNob3dfc3RhZ2UpIHsKIAkJZm9yIChpID0gMDsgaSA8IGFjdGl2ZV9ucjsgaSsrKSB7CiAJCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOwotCQkJaW50IGR0eXBlID0gY2VfdG9fZHR5cGUoY2UpOwotCQkJaWYgKGRpci0+ZmxhZ3MgJiBESVJfU0hPV19JR05PUkVEICYmCi0JCQkgICAgIWV4Y2x1ZGVkKGRpciwgY2UtPm5hbWUsICZkdHlwZSkpCisJCQlpZiAoKGRpci0+ZmxhZ3MgJiBESVJfU0hPV19JR05PUkVEKSAmJgorCQkJICAgICFjZV9leGNsdWRlZChkaXIsIGNlKSkKIAkJCQljb250aW51ZTsKIAkJCWlmIChzaG93X3VubWVyZ2VkICYmICFjZV9zdGFnZShjZSkpCiAJCQkJY29udGludWU7CkBAIC0yMzIsOSArMjM4LDggQEAKIAkJCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbaV07CiAJCQlzdHJ1Y3Qgc3RhdCBzdDsKIAkJCWludCBlcnI7Ci0JCQlpbnQgZHR5cGUgPSBjZV90b19kdHlwZShjZSk7Ci0JCQlpZiAoZGlyLT5mbGFncyAmIERJUl9TSE9XX0lHTk9SRUQgJiYKLQkJCSAgICAhZXhjbHVkZWQoZGlyLCBjZS0+bmFtZSwgJmR0eXBlKSkKKwkJCWlmICgoZGlyLT5mbGFncyAmIERJUl9TSE9XX0lHTk9SRUQpICYmCisJCQkgICAgIWNlX2V4Y2x1ZGVkKGRpciwgY2UpKQogCQkJCWNvbnRpbnVlOwogCQkJaWYgKGNlLT5jZV9mbGFncyAmIENFX1VQREFURSkKIAkJCQljb250aW51ZTsKQEAgLTMyNiw3ICszMzEsNyBAQAogCQltYXRjaGJ1ZlswXSA9IHByZWZpeDsKIAkJbWF0Y2hidWZbMV0gPSBOVUxMOwogCQlpbml0X3BhdGhzcGVjKCZwYXRoc3BlYywgbWF0Y2hidWYpOwotCQlwYXRoc3BlYy5pdGVtc1swXS51c2Vfd2lsZGNhcmQgPSAwOworCQlwYXRoc3BlYy5pdGVtc1swXS5ub3dpbGRjYXJkX2xlbiA9IHBhdGhzcGVjLml0ZW1zWzBdLmxlbjsKIAl9IGVsc2UKIAkJaW5pdF9wYXRoc3BlYygmcGF0aHNwZWMsIE5VTEwpOwogCWlmIChyZWFkX3RyZWUodHJlZSwgMSwgJnBhdGhzcGVjKSkKQEAgLTM5NCw3ICszOTksNyBAQAogfQogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGxzX2ZpbGVzX3VzYWdlW10gPSB7Ci0JImdpdCBscy1maWxlcyBbb3B0aW9uc10gWzxmaWxlPi4uLl0iLAorCU5fKCJnaXQgbHMtZmlsZXMgW29wdGlvbnNdIFs8ZmlsZT4uLi5dIiksCiAJTlVMTAogfTsKIApAQCAtNDA5LDEwICs0MTQsMTAgQEAKIHN0YXRpYyBpbnQgb3B0aW9uX3BhcnNlX2V4Y2x1ZGUoY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0LAogCQkJCWNvbnN0IGNoYXIgKmFyZywgaW50IHVuc2V0KQogewotCXN0cnVjdCBleGNsdWRlX2xpc3QgKmxpc3QgPSBvcHQtPnZhbHVlOworCXN0cnVjdCBzdHJpbmdfbGlzdCAqZXhjbHVkZV9saXN0ID0gb3B0LT52YWx1ZTsKIAogCWV4Y19naXZlbiA9IDE7Ci0JYWRkX2V4Y2x1ZGUoYXJnLCAiIiwgMCwgbGlzdCk7CisJc3RyaW5nX2xpc3RfYXBwZW5kKGV4Y2x1ZGVfbGlzdCwgYXJnKTsKIAogCXJldHVybiAwOwogfQpAQCAtNDQxLDYyICs0NDYsNjQgQEAKIAogaW50IGNtZF9sc19maWxlcyhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmNtZF9wcmVmaXgpCiB7Ci0JaW50IHJlcXVpcmVfd29ya190cmVlID0gMCwgc2hvd190YWcgPSAwOworCWludCByZXF1aXJlX3dvcmtfdHJlZSA9IDAsIHNob3dfdGFnID0gMCwgaTsKIAljb25zdCBjaGFyICptYXhfcHJlZml4OwogCXN0cnVjdCBkaXJfc3RydWN0IGRpcjsKKwlzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgZXhjbHVkZV9saXN0ID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKIAlzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5fbHNfZmlsZXNfb3B0aW9uc1tdID0gewogCQl7IE9QVElPTl9DQUxMQkFDSywgJ3onLCBOVUxMLCBOVUxMLCBOVUxMLAotCQkJInBhdGhzIGFyZSBzZXBhcmF0ZWQgd2l0aCBOVUwgY2hhcmFjdGVyIiwKKwkJCU5fKCJwYXRocyBhcmUgc2VwYXJhdGVkIHdpdGggTlVMIGNoYXJhY3RlciIpLAogCQkJUEFSU0VfT1BUX05PQVJHLCBvcHRpb25fcGFyc2VfeiB9LAogCQlPUFRfQk9PTEVBTigndCcsIE5VTEwsICZzaG93X3RhZywKLQkJCSJpZGVudGlmeSB0aGUgZmlsZSBzdGF0dXMgd2l0aCB0YWdzIiksCisJCQlOXygiaWRlbnRpZnkgdGhlIGZpbGUgc3RhdHVzIHdpdGggdGFncyIpKSwKIAkJT1BUX0JPT0xFQU4oJ3YnLCBOVUxMLCAmc2hvd192YWxpZF9iaXQsCi0JCQkidXNlIGxvd2VyY2FzZSBsZXR0ZXJzIGZvciAnYXNzdW1lIHVuY2hhbmdlZCcgZmlsZXMiKSwKKwkJCU5fKCJ1c2UgbG93ZXJjYXNlIGxldHRlcnMgZm9yICdhc3N1bWUgdW5jaGFuZ2VkJyBmaWxlcyIpKSwKIAkJT1BUX0JPT0xFQU4oJ2MnLCAiY2FjaGVkIiwgJnNob3dfY2FjaGVkLAotCQkJInNob3cgY2FjaGVkIGZpbGVzIGluIHRoZSBvdXRwdXQgKGRlZmF1bHQpIiksCisJCQlOXygic2hvdyBjYWNoZWQgZmlsZXMgaW4gdGhlIG91dHB1dCAoZGVmYXVsdCkiKSksCiAJCU9QVF9CT09MRUFOKCdkJywgImRlbGV0ZWQiLCAmc2hvd19kZWxldGVkLAotCQkJInNob3cgZGVsZXRlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IiksCisJCQlOXygic2hvdyBkZWxldGVkIGZpbGVzIGluIHRoZSBvdXRwdXQiKSksCiAJCU9QVF9CT09MRUFOKCdtJywgIm1vZGlmaWVkIiwgJnNob3dfbW9kaWZpZWQsCi0JCQkic2hvdyBtb2RpZmllZCBmaWxlcyBpbiB0aGUgb3V0cHV0IiksCisJCQlOXygic2hvdyBtb2RpZmllZCBmaWxlcyBpbiB0aGUgb3V0cHV0IikpLAogCQlPUFRfQk9PTEVBTignbycsICJvdGhlcnMiLCAmc2hvd19vdGhlcnMsCi0JCQkic2hvdyBvdGhlciBmaWxlcyBpbiB0aGUgb3V0cHV0IiksCisJCQlOXygic2hvdyBvdGhlciBmaWxlcyBpbiB0aGUgb3V0cHV0IikpLAogCQlPUFRfQklUKCdpJywgImlnbm9yZWQiLCAmZGlyLmZsYWdzLAotCQkJInNob3cgaWdub3JlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IiwKKwkJCU5fKCJzaG93IGlnbm9yZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIpLAogCQkJRElSX1NIT1dfSUdOT1JFRCksCiAJCU9QVF9CT09MRUFOKCdzJywgInN0YWdlIiwgJnNob3dfc3RhZ2UsCi0JCQkic2hvdyBzdGFnZWQgY29udGVudHMnIG9iamVjdCBuYW1lIGluIHRoZSBvdXRwdXQiKSwKKwkJCU5fKCJzaG93IHN0YWdlZCBjb250ZW50cycgb2JqZWN0IG5hbWUgaW4gdGhlIG91dHB1dCIpKSwKIAkJT1BUX0JPT0xFQU4oJ2snLCAia2lsbGVkIiwgJnNob3dfa2lsbGVkLAotCQkJInNob3cgZmlsZXMgb24gdGhlIGZpbGVzeXN0ZW0gdGhhdCBuZWVkIHRvIGJlIHJlbW92ZWQiKSwKKwkJCU5fKCJzaG93IGZpbGVzIG9uIHRoZSBmaWxlc3lzdGVtIHRoYXQgbmVlZCB0byBiZSByZW1vdmVkIikpLAogCQlPUFRfQklUKDAsICJkaXJlY3RvcnkiLCAmZGlyLmZsYWdzLAotCQkJInNob3cgJ290aGVyJyBkaXJlY3RvcmllcycgbmFtZSBvbmx5IiwKKwkJCU5fKCJzaG93ICdvdGhlcicgZGlyZWN0b3JpZXMnIG5hbWUgb25seSIpLAogCQkJRElSX1NIT1dfT1RIRVJfRElSRUNUT1JJRVMpLAogCQlPUFRfTkVHQklUKDAsICJlbXB0eS1kaXJlY3RvcnkiLCAmZGlyLmZsYWdzLAotCQkJImRvbid0IHNob3cgZW1wdHkgZGlyZWN0b3JpZXMiLAorCQkJTl8oImRvbid0IHNob3cgZW1wdHkgZGlyZWN0b3JpZXMiKSwKIAkJCURJUl9ISURFX0VNUFRZX0RJUkVDVE9SSUVTKSwKIAkJT1BUX0JPT0xFQU4oJ3UnLCAidW5tZXJnZWQiLCAmc2hvd191bm1lcmdlZCwKLQkJCSJzaG93IHVubWVyZ2VkIGZpbGVzIGluIHRoZSBvdXRwdXQiKSwKKwkJCU5fKCJzaG93IHVubWVyZ2VkIGZpbGVzIGluIHRoZSBvdXRwdXQiKSksCiAJCU9QVF9CT09MRUFOKDAsICJyZXNvbHZlLXVuZG8iLCAmc2hvd19yZXNvbHZlX3VuZG8sCi0JCQkgICAgInNob3cgcmVzb2x2ZS11bmRvIGluZm9ybWF0aW9uIiksCi0JCXsgT1BUSU9OX0NBTExCQUNLLCAneCcsICJleGNsdWRlIiwgJmRpci5leGNsdWRlX2xpc3RbRVhDX0NNRExdLCAicGF0dGVybiIsCi0JCQkic2tpcCBmaWxlcyBtYXRjaGluZyBwYXR0ZXJuIiwKKwkJCSAgICBOXygic2hvdyByZXNvbHZlLXVuZG8gaW5mb3JtYXRpb24iKSksCisJCXsgT1BUSU9OX0NBTExCQUNLLCAneCcsICJleGNsdWRlIiwgJmV4Y2x1ZGVfbGlzdCwgTl8oInBhdHRlcm4iKSwKKwkJCU5fKCJza2lwIGZpbGVzIG1hdGNoaW5nIHBhdHRlcm4iKSwKIAkJCTAsIG9wdGlvbl9wYXJzZV9leGNsdWRlIH0sCi0JCXsgT1BUSU9OX0NBTExCQUNLLCAnWCcsICJleGNsdWRlLWZyb20iLCAmZGlyLCAiZmlsZSIsCi0JCQkiZXhjbHVkZSBwYXR0ZXJucyBhcmUgcmVhZCBmcm9tIDxmaWxlPiIsCisJCXsgT1BUSU9OX0NBTExCQUNLLCAnWCcsICJleGNsdWRlLWZyb20iLCAmZGlyLCBOXygiZmlsZSIpLAorCQkJTl8oImV4Y2x1ZGUgcGF0dGVybnMgYXJlIHJlYWQgZnJvbSA8ZmlsZT4iKSwKIAkJCTAsIG9wdGlvbl9wYXJzZV9leGNsdWRlX2Zyb20gfSwKLQkJT1BUX1NUUklORygwLCAiZXhjbHVkZS1wZXItZGlyZWN0b3J5IiwgJmRpci5leGNsdWRlX3Blcl9kaXIsICJmaWxlIiwKLQkJCSJyZWFkIGFkZGl0aW9uYWwgcGVyLWRpcmVjdG9yeSBleGNsdWRlIHBhdHRlcm5zIGluIDxmaWxlPiIpLAorCQlPUFRfU1RSSU5HKDAsICJleGNsdWRlLXBlci1kaXJlY3RvcnkiLCAmZGlyLmV4Y2x1ZGVfcGVyX2RpciwgTl8oImZpbGUiKSwKKwkJCU5fKCJyZWFkIGFkZGl0aW9uYWwgcGVyLWRpcmVjdG9yeSBleGNsdWRlIHBhdHRlcm5zIGluIDxmaWxlPiIpKSwKIAkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJleGNsdWRlLXN0YW5kYXJkIiwgJmRpciwgTlVMTCwKLQkJCSJhZGQgdGhlIHN0YW5kYXJkIGdpdCBleGNsdXNpb25zIiwKKwkJCU5fKCJhZGQgdGhlIHN0YW5kYXJkIGdpdCBleGNsdXNpb25zIiksCiAJCQlQQVJTRV9PUFRfTk9BUkcsIG9wdGlvbl9wYXJzZV9leGNsdWRlX3N0YW5kYXJkIH0sCiAJCXsgT1BUSU9OX1NFVF9JTlQsIDAsICJmdWxsLW5hbWUiLCAmcHJlZml4X2xlbiwgTlVMTCwKLQkJCSJtYWtlIHRoZSBvdXRwdXQgcmVsYXRpdmUgdG8gdGhlIHByb2plY3QgdG9wIGRpcmVjdG9yeSIsCisJCQlOXygibWFrZSB0aGUgb3V0cHV0IHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHRvcCBkaXJlY3RvcnkiKSwKIAkJCVBBUlNFX09QVF9OT0FSRyB8IFBBUlNFX09QVF9OT05FRywgTlVMTCB9LAogCQlPUFRfQk9PTEVBTigwLCAiZXJyb3ItdW5tYXRjaCIsICZlcnJvcl91bm1hdGNoLAotCQkJImlmIGFueSA8ZmlsZT4gaXMgbm90IGluIHRoZSBpbmRleCwgdHJlYXQgdGhpcyBhcyBhbiBlcnJvciIpLAotCQlPUFRfU1RSSU5HKDAsICJ3aXRoLXRyZWUiLCAmd2l0aF90cmVlLCAidHJlZS1pc2giLAotCQkJInByZXRlbmQgdGhhdCBwYXRocyByZW1vdmVkIHNpbmNlIDx0cmVlLWlzaD4gYXJlIHN0aWxsIHByZXNlbnQiKSwKKwkJCU5fKCJpZiBhbnkgPGZpbGU+IGlzIG5vdCBpbiB0aGUgaW5kZXgsIHRyZWF0IHRoaXMgYXMgYW4gZXJyb3IiKSksCisJCU9QVF9TVFJJTkcoMCwgIndpdGgtdHJlZSIsICZ3aXRoX3RyZWUsIE5fKCJ0cmVlLWlzaCIpLAorCQkJTl8oInByZXRlbmQgdGhhdCBwYXRocyByZW1vdmVkIHNpbmNlIDx0cmVlLWlzaD4gYXJlIHN0aWxsIHByZXNlbnQiKSksCiAJCU9QVF9fQUJCUkVWKCZhYmJyZXYpLAotCQlPUFRfQk9PTEVBTigwLCAiZGVidWciLCAmZGVidWdfbW9kZSwgInNob3cgZGVidWdnaW5nIGRhdGEiKSwKKwkJT1BUX0JPT0xFQU4oMCwgImRlYnVnIiwgJmRlYnVnX21vZGUsIE5fKCJzaG93IGRlYnVnZ2luZyBkYXRhIikpLAogCQlPUFRfRU5EKCkKIAl9OwogCkBAIC01MTQsNiArNTIxLDEwIEBACiAKIAlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBwcmVmaXgsIGJ1aWx0aW5fbHNfZmlsZXNfb3B0aW9ucywKIAkJCWxzX2ZpbGVzX3VzYWdlLCAwKTsKKwllbCA9IGFkZF9leGNsdWRlX2xpc3QoJmRpciwgRVhDX0NNREwsICItLWV4Y2x1ZGUgb3B0aW9uIik7CisJZm9yIChpID0gMDsgaSA8IGV4Y2x1ZGVfbGlzdC5ucjsgaSsrKSB7CisJCWFkZF9leGNsdWRlKGV4Y2x1ZGVfbGlzdC5pdGVtc1tpXS5zdHJpbmcsICIiLCAwLCBlbCwgLS1leGNsdWRlX2FyZ3MpOworCX0KIAlpZiAoc2hvd190YWcgfHwgc2hvd192YWxpZF9iaXQpIHsKIAkJdGFnX2NhY2hlZCA9ICJIICI7CiAJCXRhZ191bm1lcmdlZCA9ICJNICI7CmRpZmYgLS1naXQgYS9idWlsdGluL2xzLXJlbW90ZS5jIGIvYnVpbHRpbi9scy1yZW1vdGUuYwppbmRleCA0MWM4OGE5Li4yNWU4M2NmIDEwMDY0NAotLS0gYS9idWlsdGluL2xzLXJlbW90ZS5jCisrKyBiL2J1aWx0aW4vbHMtcmVtb3RlLmMKQEAgLTUsNyArNSw3IEBACiAKIHN0YXRpYyBjb25zdCBjaGFyIGxzX3JlbW90ZV91c2FnZVtdID0KICJnaXQgbHMtcmVtb3RlIFstLWhlYWRzXSBbLS10YWdzXSAgWy11IDxleGVjPiB8IC0tdXBsb2FkLXBhY2sgPGV4ZWM+XVxuIgotIiAgICAgICAgICAgICAgICAgICAgIFstcXwtLXF1aWV0XSBbLS1leGl0LWNvZGVdIFs8cmVwb3NpdG9yeT4gWzxyZWZzPi4uLl1dIjsKKyIgICAgICAgICAgICAgICAgICAgICBbLXF8LS1xdWlldF0gWy0tZXhpdC1jb2RlXSBbLS1nZXQtdXJsXSBbPHJlcG9zaXRvcnk+IFs8cmVmcz4uLi5dXSI7CiAKIC8qCiAgKiBJcyB0aGVyZSBvbmUgYW1vbmcgdGhlIGxpc3Qgb2YgcGF0dGVybnMgdGhhdCBtYXRjaCB0aGUgdGFpbCBwYXJ0CmRpZmYgLS1naXQgYS9idWlsdGluL2xzLXRyZWUuYyBiL2J1aWx0aW4vbHMtdHJlZS5jCmluZGV4IDZiNjY2ZTEuLmZiNzZlMzggMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbHMtdHJlZS5jCisrKyBiL2J1aWx0aW4vbHMtdHJlZS5jCkBAIC0yNCw3ICsyNCw3IEBACiBzdGF0aWMgY29uc3QgY2hhciAqbHNfdHJlZV9wcmVmaXg7CiAKIHN0YXRpYyBjb25zdCAgY2hhciAqIGNvbnN0IGxzX3RyZWVfdXNhZ2VbXSA9IHsKLQkiZ2l0IGxzLXRyZWUgWzxvcHRpb25zPl0gPHRyZWUtaXNoPiBbPHBhdGg+Li4uXSIsCisJTl8oImdpdCBscy10cmVlIFs8b3B0aW9ucz5dIDx0cmVlLWlzaD4gWzxwYXRoPi4uLl0iKSwKIAlOVUxMCiB9OwogCkBAIC0xMjIsMjUgKzEyMiwyNSBAQAogCXN0cnVjdCB0cmVlICp0cmVlOwogCWludCBpLCBmdWxsX3RyZWUgPSAwOwogCWNvbnN0IHN0cnVjdCBvcHRpb24gbHNfdHJlZV9vcHRpb25zW10gPSB7Ci0JCU9QVF9CSVQoJ2QnLCBOVUxMLCAmbHNfb3B0aW9ucywgIm9ubHkgc2hvdyB0cmVlcyIsCisJCU9QVF9CSVQoJ2QnLCBOVUxMLCAmbHNfb3B0aW9ucywgTl8oIm9ubHkgc2hvdyB0cmVlcyIpLAogCQkJTFNfVFJFRV9PTkxZKSwKLQkJT1BUX0JJVCgncicsIE5VTEwsICZsc19vcHRpb25zLCAicmVjdXJzZSBpbnRvIHN1YnRyZWVzIiwKKwkJT1BUX0JJVCgncicsIE5VTEwsICZsc19vcHRpb25zLCBOXygicmVjdXJzZSBpbnRvIHN1YnRyZWVzIiksCiAJCQlMU19SRUNVUlNJVkUpLAotCQlPUFRfQklUKCd0JywgTlVMTCwgJmxzX29wdGlvbnMsICJzaG93IHRyZWVzIHdoZW4gcmVjdXJzaW5nIiwKKwkJT1BUX0JJVCgndCcsIE5VTEwsICZsc19vcHRpb25zLCBOXygic2hvdyB0cmVlcyB3aGVuIHJlY3Vyc2luZyIpLAogCQkJTFNfU0hPV19UUkVFUyksCiAJCU9QVF9TRVRfSU5UKCd6JywgTlVMTCwgJmxpbmVfdGVybWluYXRpb24sCi0JCQkgICAgInRlcm1pbmF0ZSBlbnRyaWVzIHdpdGggTlVMIGJ5dGUiLCAwKSwKLQkJT1BUX0JJVCgnbCcsICJsb25nIiwgJmxzX29wdGlvbnMsICJpbmNsdWRlIG9iamVjdCBzaXplIiwKKwkJCSAgICBOXygidGVybWluYXRlIGVudHJpZXMgd2l0aCBOVUwgYnl0ZSIpLCAwKSwKKwkJT1BUX0JJVCgnbCcsICJsb25nIiwgJmxzX29wdGlvbnMsIE5fKCJpbmNsdWRlIG9iamVjdCBzaXplIiksCiAJCQlMU19TSE9XX1NJWkUpLAotCQlPUFRfQklUKDAsICJuYW1lLW9ubHkiLCAmbHNfb3B0aW9ucywgImxpc3Qgb25seSBmaWxlbmFtZXMiLAorCQlPUFRfQklUKDAsICJuYW1lLW9ubHkiLCAmbHNfb3B0aW9ucywgTl8oImxpc3Qgb25seSBmaWxlbmFtZXMiKSwKIAkJCUxTX05BTUVfT05MWSksCi0JCU9QVF9CSVQoMCwgIm5hbWUtc3RhdHVzIiwgJmxzX29wdGlvbnMsICJsaXN0IG9ubHkgZmlsZW5hbWVzIiwKKwkJT1BUX0JJVCgwLCAibmFtZS1zdGF0dXMiLCAmbHNfb3B0aW9ucywgTl8oImxpc3Qgb25seSBmaWxlbmFtZXMiKSwKIAkJCUxTX05BTUVfT05MWSksCiAJCU9QVF9TRVRfSU5UKDAsICJmdWxsLW5hbWUiLCAmY2hvbXBfcHJlZml4LAotCQkJICAgICJ1c2UgZnVsbCBwYXRoIG5hbWVzIiwgMCksCisJCQkgICAgTl8oInVzZSBmdWxsIHBhdGggbmFtZXMiKSwgMCksCiAJCU9QVF9CT09MRUFOKDAsICJmdWxsLXRyZWUiLCAmZnVsbF90cmVlLAotCQkJICAgICJsaXN0IGVudGlyZSB0cmVlOyBub3QganVzdCBjdXJyZW50IGRpcmVjdG9yeSAiCi0JCQkgICAgIihpbXBsaWVzIC0tZnVsbC1uYW1lKSIpLAorCQkJICAgIE5fKCJsaXN0IGVudGlyZSB0cmVlOyBub3QganVzdCBjdXJyZW50IGRpcmVjdG9yeSAiCisJCQkgICAgICAgIihpbXBsaWVzIC0tZnVsbC1uYW1lKSIpKSwKIAkJT1BUX19BQkJSRVYoJmFiYnJldiksCiAJCU9QVF9FTkQoKQogCX07CkBAIC0xNjgsNyArMTY4LDcgQEAKIAogCWluaXRfcGF0aHNwZWMoJnBhdGhzcGVjLCBnZXRfcGF0aHNwZWMocHJlZml4LCBhcmd2ICsgMSkpOwogCWZvciAoaSA9IDA7IGkgPCBwYXRoc3BlYy5ucjsgaSsrKQotCQlwYXRoc3BlYy5pdGVtc1tpXS51c2Vfd2lsZGNhcmQgPSAwOworCQlwYXRoc3BlYy5pdGVtc1tpXS5ub3dpbGRjYXJkX2xlbiA9IHBhdGhzcGVjLml0ZW1zW2ldLmxlbjsKIAlwYXRoc3BlYy5oYXNfd2lsZGNhcmQgPSAwOwogCXRyZWUgPSBwYXJzZV90cmVlX2luZGlyZWN0KHNoYTEpOwogCWlmICghdHJlZSkKZGlmZiAtLWdpdCBhL2J1aWx0aW4vbWFpbGluZm8uYyBiL2J1aWx0aW4vbWFpbGluZm8uYwppbmRleCBlYWY5ZTE1Li4yNGE3NzJkIDEwMDY0NAotLS0gYS9idWlsdGluL21haWxpbmZvLmMKKysrIGIvYnVpbHRpbi9tYWlsaW5mby5jCkBAIC0xOSw5ICsxOSw2IEBACiBzdGF0aWMgZW51bSAgewogCVRFX0RPTlRDQVJFLCBURV9RUCwgVEVfQkFTRTY0CiB9IHRyYW5zZmVyX2VuY29kaW5nOwotc3RhdGljIGVudW0gIHsKLQlUWVBFX1RFWFQsIFRZUEVfT1RIRVIKLX0gbWVzc2FnZV90eXBlOwogCiBzdGF0aWMgc3RydWN0IHN0cmJ1ZiBjaGFyc2V0ID0gU1RSQlVGX0lOSVQ7CiBzdGF0aWMgaW50IHBhdGNoX2xpbmVzOwpAQCAtMTYwLDEwICsxNTcsOSBAQAogCWNvbnN0IGNoYXIgKmVuZHMsICphcCA9IHN0cmNhc2VzdHIobGluZSwgbmFtZSk7CiAJc2l6ZV90IHN6OwogCi0JaWYgKCFhcCkgewotCQlzdHJidWZfc2V0bGVuKGF0dHIsIDApOworCXN0cmJ1Zl9zZXRsZW4oYXR0ciwgMCk7CisJaWYgKCFhcCkKIAkJcmV0dXJuIDA7Ci0JfQogCWFwICs9IHN0cmxlbihuYW1lKTsKIAlpZiAoKmFwID09ICciJykgewogCQlhcCsrOwpAQCAtMTg1LDggKzE4MSw2IEBACiAJc3RydWN0IHN0cmJ1ZiAqYm91bmRhcnkgPSB4bWFsbG9jKHNpemVvZihzdHJ1Y3Qgc3RyYnVmKSk7CiAJc3RyYnVmX2luaXQoYm91bmRhcnksIGxpbmUtPmxlbik7CiAKLQlpZiAoIXN0cmNhc2VzdHIobGluZS0+YnVmLCAidGV4dC8iKSkKLQkJIG1lc3NhZ2VfdHlwZSA9IFRZUEVfT1RIRVI7CiAJaWYgKHNsdXJwX2F0dHIobGluZS0+YnVmLCAiYm91bmRhcnk9IiwgYm91bmRhcnkpKSB7CiAJCXN0cmJ1Zl9pbnNlcnQoYm91bmRhcnksIDAsICItLSIsIDIpOwogCQlpZiAoKytjb250ZW50X3RvcCA+ICZjb250ZW50W01BWF9CT1VOREFSSUVTXSkgewpAQCAtMjMyLDcgKzIyNiw5IEBACiAJCWNhc2UgJ3InOiBjYXNlICdSJzoKIAkJCWlmIChzdWJqZWN0LT5sZW4gPD0gYXQgKyAzKQogCQkJCWJyZWFrOwotCQkJaWYgKCFtZW1jbXAoc3ViamVjdC0+YnVmICsgYXQgKyAxLCAiZToiLCAyKSkgeworCQkJaWYgKChzdWJqZWN0LT5idWZbYXQgKyAxXSA9PSAnZScgfHwKKwkJCSAgICAgc3ViamVjdC0+YnVmW2F0ICsgMV0gPT0gJ0UnKSAmJgorCQkJICAgIHN1YmplY3QtPmJ1ZlthdCArIDJdID09ICc6JykgewogCQkJCXN0cmJ1Zl9yZW1vdmUoc3ViamVjdCwgYXQsIDMpOwogCQkJCWNvbnRpbnVlOwogCQkJfQpAQCAtNDgxLDM3ICs0NzcsMTQgQEAKIAlyZXR1cm4gb3V0OwogfQogCi0vKgotICogV2hlbiB0aGVyZSBpcyBubyBrbm93biBjaGFyc2V0LCBndWVzcy4KLSAqCi0gKiBSaWdodCBub3cgd2UgYXNzdW1lIHRoYXQgaWYgdGhlIHRhcmdldCBpcyBVVEYtOCAodGhlIGRlZmF1bHQpLAotICogYW5kIGl0IGFscmVhZHkgbG9va3MgbGlrZSBVVEYtOCAod2hpY2ggaW5jbHVkZXMgVVMtQVNDSUkgYXMgaXRzCi0gKiBzdWJzZXQsIG9mIGNvdXJzZSkgdGhlbiB0aGF0IGlzIHdoYXQgaXQgaXMgYW5kIHRoZXJlIGlzIG5vdGhpbmcKLSAqIHRvIGRvLgotICoKLSAqIE90aGVyd2lzZSwgd2UgZGVmYXVsdCB0byBhc3N1bWluZyBpdCBpcyBMYXRpbjEgZm9yIGhpc3RvcmljYWwKLSAqIHJlYXNvbnMuCi0gKi8KLXN0YXRpYyBjb25zdCBjaGFyICpndWVzc19jaGFyc2V0KGNvbnN0IHN0cnVjdCBzdHJidWYgKmxpbmUsIGNvbnN0IGNoYXIgKnRhcmdldF9jaGFyc2V0KQotewotCWlmIChpc19lbmNvZGluZ191dGY4KHRhcmdldF9jaGFyc2V0KSkgewotCQlpZiAoaXNfdXRmOChsaW5lLT5idWYpKQotCQkJcmV0dXJuIE5VTEw7Ci0JfQotCXJldHVybiAiSVNPODg1OS0xIjsKLX0KLQogc3RhdGljIHZvaWQgY29udmVydF90b191dGY4KHN0cnVjdCBzdHJidWYgKmxpbmUsIGNvbnN0IGNoYXIgKmNoYXJzZXQpCiB7CiAJY2hhciAqb3V0OwogCi0JaWYgKCFjaGFyc2V0IHx8ICEqY2hhcnNldCkgewotCQljaGFyc2V0ID0gZ3Vlc3NfY2hhcnNldChsaW5lLCBtZXRhaW5mb19jaGFyc2V0KTsKLQkJaWYgKCFjaGFyc2V0KQotCQkJcmV0dXJuOwotCX0KKwlpZiAoIWNoYXJzZXQgfHwgISpjaGFyc2V0KQorCQlyZXR1cm47CiAKLQlpZiAoIXN0cmNhc2VjbXAobWV0YWluZm9fY2hhcnNldCwgY2hhcnNldCkpCisJaWYgKHNhbWVfZW5jb2RpbmcobWV0YWluZm9fY2hhcnNldCwgY2hhcnNldCkpCiAJCXJldHVybjsKIAlvdXQgPSByZWVuY29kZV9zdHJpbmcobGluZS0+YnVmLCBtZXRhaW5mb19jaGFyc2V0LCBjaGFyc2V0KTsKIAlpZiAoIW91dCkKQEAgLTY4MCw3ICs2NTMsNiBAQAogCS8qIHNldCBzb21lIGRlZmF1bHRzICovCiAJdHJhbnNmZXJfZW5jb2RpbmcgPSBURV9ET05UQ0FSRTsKIAlzdHJidWZfcmVzZXQoJmNoYXJzZXQpOwotCW1lc3NhZ2VfdHlwZSA9IFRZUEVfVEVYVDsKIAogCS8qIHNsdXJwIGluIHRoaXMgc2VjdGlvbidzIGluZm8gKi8KIAl3aGlsZSAocmVhZF9vbmVfaGVhZGVyX2xpbmUoJmxpbmUsIGZpbikpCkBAIC04OTQsMTEgKzg2Niw2IEBACiAJCQlzdHJidWZfaW5zZXJ0KCZsaW5lLCAwLCBwcmV2LmJ1ZiwgcHJldi5sZW4pOwogCQkJc3RyYnVmX3Jlc2V0KCZwcmV2KTsKIAotCQkJLyogYmluYXJ5IGRhdGEgbW9zdCBsaWtlbHkgZG9lc24ndCBoYXZlIG5ld2xpbmVzICovCi0JCQlpZiAobWVzc2FnZV90eXBlICE9IFRZUEVfVEVYVCkgewotCQkJCWhhbmRsZV9maWx0ZXIoJmxpbmUpOwotCQkJCWJyZWFrOwotCQkJfQogCQkJLyoKIAkJCSAqIFRoaXMgaXMgYSBkZWNvZGVkIGxpbmUgdGhhdCBtYXkgY29udGFpbgogCQkJICogbXVsdGlwbGUgbmV3IGxpbmVzLiAgUGFzcyBvbmx5IG9uZSBjaHVuawpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9tYWlsc3BsaXQuYyBiL2J1aWx0aW4vbWFpbHNwbGl0LmMKaW5kZXggMmQ0MzI3OC4uMDYyOTZkNCAxMDA2NDQKLS0tIGEvYnVpbHRpbi9tYWlsc3BsaXQuYworKysgYi9idWlsdGluL21haWxzcGxpdC5jCkBAIC0xMzAsNiArMTMwLDI3IEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgbWFpbGRpcl9maWxlbmFtZV9jbXAoY29uc3QgY2hhciAqYSwgY29uc3QgY2hhciAqYikKK3sKKwl3aGlsZSAoKmEgJiYgKmIpIHsKKwkJaWYgKGlzZGlnaXQoKmEpICYmIGlzZGlnaXQoKmIpKSB7CisJCQlsb25nIGludCBuYSwgbmI7CisJCQluYSA9IHN0cnRvbChhLCAoY2hhciAqKikmYSwgMTApOworCQkJbmIgPSBzdHJ0b2woYiwgKGNoYXIgKiopJmIsIDEwKTsKKwkJCWlmIChuYSAhPSBuYikKKwkJCQlyZXR1cm4gbmEgLSBuYjsKKwkJCS8qIHN0cnRvbCBhZHZhbmNlZCBvdXIgcG9pbnRlcnMgKi8KKwkJfQorCQllbHNlIHsKKwkJCWlmICgqYSAhPSAqYikKKwkJCQlyZXR1cm4gKHVuc2lnbmVkIGNoYXIpKmEgLSAodW5zaWduZWQgY2hhcikqYjsKKwkJCWErKzsKKwkJCWIrKzsKKwkJfQorCX0KKwlyZXR1cm4gKHVuc2lnbmVkIGNoYXIpKmEgLSAodW5zaWduZWQgY2hhcikqYjsKK30KKwogc3RhdGljIGludCBzcGxpdF9tYWlsZGlyKGNvbnN0IGNoYXIgKm1haWxkaXIsIGNvbnN0IGNoYXIgKmRpciwKIAlpbnQgbnJfcHJlYywgaW50IHNraXApCiB7CkBAIC0xMzksNiArMTYwLDggQEAKIAlpbnQgaTsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3QgbGlzdCA9IFNUUklOR19MSVNUX0lOSVRfRFVQOwogCisJbGlzdC5jbXAgPSBtYWlsZGlyX2ZpbGVuYW1lX2NtcDsKKwogCWlmIChwb3B1bGF0ZV9tYWlsZGlyX2xpc3QoJmxpc3QsIG1haWxkaXIpIDwgMCkKIAkJZ290byBvdXQ7CiAKZGlmZiAtLWdpdCBhL2J1aWx0aW4vbWVyZ2UtYmFzZS5jIGIvYnVpbHRpbi9tZXJnZS1iYXNlLmMKaW5kZXggNGYzMGYxYi4uMWJjNzk5MSAxMDA2NDQKLS0tIGEvYnVpbHRpbi9tZXJnZS1iYXNlLmMKKysrIGIvYnVpbHRpbi9tZXJnZS1iYXNlLmMKQEAgLTIzLDkgKzIzLDEwIEBACiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbWVyZ2VfYmFzZV91c2FnZVtdID0gewotCSJnaXQgbWVyZ2UtYmFzZSBbLWF8LS1hbGxdIDxjb21taXQ+IDxjb21taXQ+Li4uIiwKLQkiZ2l0IG1lcmdlLWJhc2UgWy1hfC0tYWxsXSAtLW9jdG9wdXMgPGNvbW1pdD4uLi4iLAotCSJnaXQgbWVyZ2UtYmFzZSAtLWluZGVwZW5kZW50IDxjb21taXQ+Li4uIiwKKwlOXygiZ2l0IG1lcmdlLWJhc2UgWy1hfC0tYWxsXSA8Y29tbWl0PiA8Y29tbWl0Pi4uLiIpLAorCU5fKCJnaXQgbWVyZ2UtYmFzZSBbLWF8LS1hbGxdIC0tb2N0b3B1cyA8Y29tbWl0Pi4uLiIpLAorCU5fKCJnaXQgbWVyZ2UtYmFzZSAtLWluZGVwZW5kZW50IDxjb21taXQ+Li4uIiksCisJTl8oImdpdCBtZXJnZS1iYXNlIC0taXMtYW5jZXN0b3IgPGNvbW1pdD4gPGNvbW1pdD4iKSwKIAlOVUxMCiB9OwogCkBAIC03MCw2ICs3MSwyMCBAQAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGhhbmRsZV9pc19hbmNlc3RvcihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCit7CisJc3RydWN0IGNvbW1pdCAqb25lLCAqdHdvOworCisJaWYgKGFyZ2MgIT0gMikKKwkJZGllKCItLWlzLWFuY2VzdG9yIHRha2VzIGV4YWN0bHkgdHdvIGNvbW1pdHMiKTsKKwlvbmUgPSBnZXRfY29tbWl0X3JlZmVyZW5jZShhcmd2WzBdKTsKKwl0d28gPSBnZXRfY29tbWl0X3JlZmVyZW5jZShhcmd2WzFdKTsKKwlpZiAoaW5fbWVyZ2VfYmFzZXMob25lLCB0d28pKQorCQlyZXR1cm4gMDsKKwllbHNlCisJCXJldHVybiAxOworfQorCiBpbnQgY21kX21lcmdlX2Jhc2UoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7CiAJc3RydWN0IGNvbW1pdCAqKnJldjsKQEAgLTc3LDExICs5MiwxNCBAQAogCWludCBzaG93X2FsbCA9IDA7CiAJaW50IG9jdG9wdXMgPSAwOwogCWludCByZWR1Y2UgPSAwOworCWludCBpc19hbmNlc3RvciA9IDA7CiAKIAlzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKLQkJT1BUX0JPT0xFQU4oJ2EnLCAiYWxsIiwgJnNob3dfYWxsLCAib3V0cHV0IGFsbCBjb21tb24gYW5jZXN0b3JzIiksCi0JCU9QVF9CT09MRUFOKDAsICJvY3RvcHVzIiwgJm9jdG9wdXMsICJmaW5kIGFuY2VzdG9ycyBmb3IgYSBzaW5nbGUgbi13YXkgbWVyZ2UiKSwKLQkJT1BUX0JPT0xFQU4oMCwgImluZGVwZW5kZW50IiwgJnJlZHVjZSwgImxpc3QgcmV2cyBub3QgcmVhY2hhYmxlIGZyb20gb3RoZXJzIiksCisJCU9QVF9CT09MRUFOKCdhJywgImFsbCIsICZzaG93X2FsbCwgTl8oIm91dHB1dCBhbGwgY29tbW9uIGFuY2VzdG9ycyIpKSwKKwkJT1BUX0JPT0xFQU4oMCwgIm9jdG9wdXMiLCAmb2N0b3B1cywgTl8oImZpbmQgYW5jZXN0b3JzIGZvciBhIHNpbmdsZSBuLXdheSBtZXJnZSIpKSwKKwkJT1BUX0JPT0xFQU4oMCwgImluZGVwZW5kZW50IiwgJnJlZHVjZSwgTl8oImxpc3QgcmV2cyBub3QgcmVhY2hhYmxlIGZyb20gb3RoZXJzIikpLAorCQlPUFRfQk9PTEVBTigwLCAiaXMtYW5jZXN0b3IiLCAmaXNfYW5jZXN0b3IsCisJCQkgICAgTl8oImlzIHRoZSBmaXJzdCBvbmUgYW5jZXN0b3Igb2YgdGhlIG90aGVyPyIpKSwKIAkJT1BUX0VORCgpCiAJfTsKIApAQCAtODksNiArMTA3LDEwIEBACiAJYXJnYyA9IHBhcnNlX29wdGlvbnMoYXJnYywgYXJndiwgcHJlZml4LCBvcHRpb25zLCBtZXJnZV9iYXNlX3VzYWdlLCAwKTsKIAlpZiAoIW9jdG9wdXMgJiYgIXJlZHVjZSAmJiBhcmdjIDwgMikKIAkJdXNhZ2Vfd2l0aF9vcHRpb25zKG1lcmdlX2Jhc2VfdXNhZ2UsIG9wdGlvbnMpOworCWlmIChpc19hbmNlc3RvciAmJiAoc2hvd19hbGwgfCBvY3RvcHVzIHwgcmVkdWNlKSkKKwkJZGllKCItLWlzLWFuY2VzdG9yIGNhbm5vdCBiZSB1c2VkIHdpdGggb3RoZXIgb3B0aW9ucyIpOworCWlmIChpc19hbmNlc3RvcikKKwkJcmV0dXJuIGhhbmRsZV9pc19hbmNlc3RvcihhcmdjLCBhcmd2KTsKIAlpZiAocmVkdWNlICYmIChzaG93X2FsbCB8fCBvY3RvcHVzKSkKIAkJZGllKCItLWluZGVwZW5kZW50IGNhbm5vdCBiZSB1c2VkIHdpdGggb3RoZXIgb3B0aW9ucyIpOwogCmRpZmYgLS1naXQgYS9idWlsdGluL21lcmdlLWZpbGUuYyBiL2J1aWx0aW4vbWVyZ2UtZmlsZS5jCmluZGV4IDZmMGVmZWYuLmMwNTcwZjIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbWVyZ2UtZmlsZS5jCisrKyBiL2J1aWx0aW4vbWVyZ2UtZmlsZS5jCkBAIC01LDcgKzUsNyBAQAogI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKIAogc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IG1lcmdlX2ZpbGVfdXNhZ2VbXSA9IHsKLQkiZ2l0IG1lcmdlLWZpbGUgW29wdGlvbnNdIFstTCBuYW1lMSBbLUwgb3JpZyBbLUwgbmFtZTJdXV0gZmlsZTEgb3JpZ19maWxlIGZpbGUyIiwKKwlOXygiZ2l0IG1lcmdlLWZpbGUgW29wdGlvbnNdIFstTCBuYW1lMSBbLUwgb3JpZyBbLUwgbmFtZTJdXV0gZmlsZTEgb3JpZ19maWxlIGZpbGUyIiksCiAJTlVMTAogfTsKIApAQCAtMzAsMTkgKzMwLDE5IEBACiAJaW50IHF1aWV0ID0gMDsKIAlpbnQgcHJlZml4bGVuID0gMDsKIAlzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKLQkJT1BUX0JPT0xFQU4oJ3AnLCAic3Rkb3V0IiwgJnRvX3N0ZG91dCwgInNlbmQgcmVzdWx0cyB0byBzdGFuZGFyZCBvdXRwdXQiKSwKLQkJT1BUX1NFVF9JTlQoMCwgImRpZmYzIiwgJnhtcC5zdHlsZSwgInVzZSBhIGRpZmYzIGJhc2VkIG1lcmdlIiwgWERMX01FUkdFX0RJRkYzKSwKLQkJT1BUX1NFVF9JTlQoMCwgIm91cnMiLCAmeG1wLmZhdm9yLCAiZm9yIGNvbmZsaWN0cywgdXNlIG91ciB2ZXJzaW9uIiwKKwkJT1BUX0JPT0xFQU4oJ3AnLCAic3Rkb3V0IiwgJnRvX3N0ZG91dCwgTl8oInNlbmQgcmVzdWx0cyB0byBzdGFuZGFyZCBvdXRwdXQiKSksCisJCU9QVF9TRVRfSU5UKDAsICJkaWZmMyIsICZ4bXAuc3R5bGUsIE5fKCJ1c2UgYSBkaWZmMyBiYXNlZCBtZXJnZSIpLCBYRExfTUVSR0VfRElGRjMpLAorCQlPUFRfU0VUX0lOVCgwLCAib3VycyIsICZ4bXAuZmF2b3IsIE5fKCJmb3IgY29uZmxpY3RzLCB1c2Ugb3VyIHZlcnNpb24iKSwKIAkJCSAgICBYRExfTUVSR0VfRkFWT1JfT1VSUyksCi0JCU9QVF9TRVRfSU5UKDAsICJ0aGVpcnMiLCAmeG1wLmZhdm9yLCAiZm9yIGNvbmZsaWN0cywgdXNlIHRoZWlyIHZlcnNpb24iLAorCQlPUFRfU0VUX0lOVCgwLCAidGhlaXJzIiwgJnhtcC5mYXZvciwgTl8oImZvciBjb25mbGljdHMsIHVzZSB0aGVpciB2ZXJzaW9uIiksCiAJCQkgICAgWERMX01FUkdFX0ZBVk9SX1RIRUlSUyksCi0JCU9QVF9TRVRfSU5UKDAsICJ1bmlvbiIsICZ4bXAuZmF2b3IsICJmb3IgY29uZmxpY3RzLCB1c2UgYSB1bmlvbiB2ZXJzaW9uIiwKKwkJT1BUX1NFVF9JTlQoMCwgInVuaW9uIiwgJnhtcC5mYXZvciwgTl8oImZvciBjb25mbGljdHMsIHVzZSBhIHVuaW9uIHZlcnNpb24iKSwKIAkJCSAgICBYRExfTUVSR0VfRkFWT1JfVU5JT04pLAogCQlPUFRfSU5URUdFUigwLCAibWFya2VyLXNpemUiLCAmeG1wLm1hcmtlcl9zaXplLAotCQkJICAgICJmb3IgY29uZmxpY3RzLCB1c2UgdGhpcyBtYXJrZXIgc2l6ZSIpLAotCQlPUFRfX1FVSUVUKCZxdWlldCwgImRvIG5vdCB3YXJuIGFib3V0IGNvbmZsaWN0cyIpLAotCQlPUFRfQ0FMTEJBQ0soJ0wnLCBOVUxMLCBuYW1lcywgIm5hbWUiLAotCQkJICAgICAic2V0IGxhYmVscyBmb3IgZmlsZTEvb3JpZ19maWxlL2ZpbGUyIiwgJmxhYmVsX2NiKSwKKwkJCSAgICBOXygiZm9yIGNvbmZsaWN0cywgdXNlIHRoaXMgbWFya2VyIHNpemUiKSksCisJCU9QVF9fUVVJRVQoJnF1aWV0LCBOXygiZG8gbm90IHdhcm4gYWJvdXQgY29uZmxpY3RzIikpLAorCQlPUFRfQ0FMTEJBQ0soJ0wnLCBOVUxMLCBuYW1lcywgTl8oIm5hbWUiKSwKKwkJCSAgICAgTl8oInNldCBsYWJlbHMgZm9yIGZpbGUxL29yaWdfZmlsZS9maWxlMiIpLCAmbGFiZWxfY2IpLAogCQlPUFRfRU5EKCksCiAJfTsKIApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9tZXJnZS1pbmRleC5jIGIvYnVpbHRpbi9tZXJnZS1pbmRleC5jCmluZGV4IDIzMzg4MzIuLmJlNWU1MTQgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbWVyZ2UtaW5kZXguYworKysgYi9idWlsdGluL21lcmdlLWluZGV4LmMKQEAgLTQyLDcgKzQyLDcgQEAKIAlyZXR1cm4gZm91bmQ7CiB9CiAKLXN0YXRpYyB2b2lkIG1lcmdlX2ZpbGUoY29uc3QgY2hhciAqcGF0aCkKK3N0YXRpYyB2b2lkIG1lcmdlX29uZV9wYXRoKGNvbnN0IGNoYXIgKnBhdGgpCiB7CiAJaW50IHBvcyA9IGNhY2hlX25hbWVfcG9zKHBhdGgsIHN0cmxlbihwYXRoKSk7CiAKQEAgLTEwMiw3ICsxMDIsNyBAQAogCQkJfQogCQkJZGllKCJnaXQgbWVyZ2UtaW5kZXg6IHVua25vd24gb3B0aW9uICVzIiwgYXJnKTsKIAkJfQotCQltZXJnZV9maWxlKGFyZyk7CisJCW1lcmdlX29uZV9wYXRoKGFyZyk7CiAJfQogCWlmIChlcnIgJiYgIXF1aWV0KQogCQlkaWUoIm1lcmdlIHByb2dyYW0gZmFpbGVkIik7CmRpZmYgLS1naXQgYS9idWlsdGluL21lcmdlLXRyZWUuYyBiL2J1aWx0aW4vbWVyZ2UtdHJlZS5jCmluZGV4IDg5N2E1NjMuLjYxY2JkZTQgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbWVyZ2UtdHJlZS5jCisrKyBiL2J1aWx0aW4vbWVyZ2UtdHJlZS5jCkBAIC0zLDE3ICszLDE1IEBACiAjaW5jbHVkZSAieGRpZmYtaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiYmxvYi5oIgogI2luY2x1ZGUgImV4ZWNfY21kLmgiCi0jaW5jbHVkZSAibWVyZ2UtZmlsZS5oIgorI2luY2x1ZGUgIm1lcmdlLWJsb2JzLmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyIG1lcmdlX3RyZWVfdXNhZ2VbXSA9ICJnaXQgbWVyZ2UtdHJlZSA8YmFzZS10cmVlPiA8YnJhbmNoMT4gPGJyYW5jaDI+IjsKLXN0YXRpYyBpbnQgcmVzb2x2ZV9kaXJlY3RvcmllcyA9IDE7CiAKIHN0cnVjdCBtZXJnZV9saXN0IHsKIAlzdHJ1Y3QgbWVyZ2VfbGlzdCAqbmV4dDsKIAlzdHJ1Y3QgbWVyZ2VfbGlzdCAqbGluazsJLyogb3RoZXIgc3RhZ2VzIGZvciB0aGlzIG9iamVjdCAqLwogCi0JdW5zaWduZWQgaW50IHN0YWdlIDogMiwKLQkJICAgICBmbGFncyA6IDMwOworCXVuc2lnbmVkIGludCBzdGFnZSA6IDI7CiAJdW5zaWduZWQgaW50IG1vZGU7CiAJY29uc3QgY2hhciAqcGF0aDsKIAlzdHJ1Y3QgYmxvYiAqYmxvYjsKQEAgLTI3LDcgKzI1LDcgQEAKIAltZXJnZV9yZXN1bHRfZW5kID0gJmVudHJ5LT5uZXh0OwogfQogCi1zdGF0aWMgdm9pZCBtZXJnZV90cmVlcyhzdHJ1Y3QgdHJlZV9kZXNjIHRbM10sIGNvbnN0IGNoYXIgKmJhc2UpOworc3RhdGljIHZvaWQgbWVyZ2VfdHJlZXNfcmVjdXJzaXZlKHN0cnVjdCB0cmVlX2Rlc2MgdFszXSwgY29uc3QgY2hhciAqYmFzZSwgaW50IGRmX2NvbmZsaWN0KTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKmV4cGxhbmF0aW9uKHN0cnVjdCBtZXJnZV9saXN0ICplbnRyeSkKIHsKQEAgLTc2LDcgKzc0LDcgQEAKIAl0aGVpciA9IE5VTEw7CiAJaWYgKGVudHJ5KQogCQl0aGVpciA9IGVudHJ5LT5ibG9iOwotCXJldHVybiBtZXJnZV9maWxlKHBhdGgsIGJhc2UsIG91ciwgdGhlaXIsIHNpemUpOworCXJldHVybiBtZXJnZV9ibG9icyhwYXRoLCBiYXNlLCBvdXIsIHRoZWlyLCBzaXplKTsKIH0KIAogc3RhdGljIHZvaWQgKm9yaWdpbihzdHJ1Y3QgbWVyZ2VfbGlzdCAqZW50cnksIHVuc2lnbmVkIGxvbmcgKnNpemUpCkBAIC0xNTcsNiArMTU1LDExIEBACiAJCWEtPm1vZGUgPT0gYi0+bW9kZTsKIH0KIAorc3RhdGljIGludCBib3RoX2VtcHR5KHN0cnVjdCBuYW1lX2VudHJ5ICphLCBzdHJ1Y3QgbmFtZV9lbnRyeSAqYikKK3sKKwlyZXR1cm4gIShhLT5zaGExIHx8IGItPnNoYTEpOworfQorCiBzdGF0aWMgc3RydWN0IG1lcmdlX2xpc3QgKmNyZWF0ZV9lbnRyeSh1bnNpZ25lZCBzdGFnZSwgdW5zaWduZWQgbW9kZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqcGF0aCkKIHsKIAlzdHJ1Y3QgbWVyZ2VfbGlzdCAqcmVzID0geGNhbGxvYygxLCBzaXplb2YoKnJlcykpOwpAQCAtMTc0LDE3ICsxNzcsMTcgQEAKIAlyZXR1cm4gbWFrZV90cmF2ZXJzZV9wYXRoKHBhdGgsIGluZm8sIG4pOwogfQogCi1zdGF0aWMgdm9pZCByZXNvbHZlKGNvbnN0IHN0cnVjdCB0cmF2ZXJzZV9pbmZvICppbmZvLCBzdHJ1Y3QgbmFtZV9lbnRyeSAqYnJhbmNoMSwgc3RydWN0IG5hbWVfZW50cnkgKnJlc3VsdCkKK3N0YXRpYyB2b2lkIHJlc29sdmUoY29uc3Qgc3RydWN0IHRyYXZlcnNlX2luZm8gKmluZm8sIHN0cnVjdCBuYW1lX2VudHJ5ICpvdXJzLCBzdHJ1Y3QgbmFtZV9lbnRyeSAqcmVzdWx0KQogewogCXN0cnVjdCBtZXJnZV9saXN0ICpvcmlnLCAqZmluYWw7CiAJY29uc3QgY2hhciAqcGF0aDsKIAotCS8qIElmIGl0J3MgYWxyZWFkeSBicmFuY2gxLCBkb24ndCBib3RoZXIgc2hvd2luZyBpdCAqLwotCWlmICghYnJhbmNoMSkKKwkvKiBJZiBpdCdzIGFscmVhZHkgb3VycywgZG9uJ3QgYm90aGVyIHNob3dpbmcgaXQgKi8KKwlpZiAoIW91cnMpCiAJCXJldHVybjsKIAogCXBhdGggPSB0cmF2ZXJzZV9wYXRoKGluZm8sIHJlc3VsdCk7Ci0Jb3JpZyA9IGNyZWF0ZV9lbnRyeSgyLCBicmFuY2gxLT5tb2RlLCBicmFuY2gxLT5zaGExLCBwYXRoKTsKKwlvcmlnID0gY3JlYXRlX2VudHJ5KDIsIG91cnMtPm1vZGUsIG91cnMtPnNoYTEsIHBhdGgpOwogCWZpbmFsID0gY3JlYXRlX2VudHJ5KDAsIHJlc3VsdC0+bW9kZSwgcmVzdWx0LT5zaGExLCBwYXRoKTsKIAogCWZpbmFsLT5saW5rID0gb3JpZzsKQEAgLTE5MiwzNCArMTk1LDM1IEBACiAJYWRkX21lcmdlX2VudHJ5KGZpbmFsKTsKIH0KIAotc3RhdGljIGludCB1bnJlc29sdmVkX2RpcmVjdG9yeShjb25zdCBzdHJ1Y3QgdHJhdmVyc2VfaW5mbyAqaW5mbywgc3RydWN0IG5hbWVfZW50cnkgblszXSkKK3N0YXRpYyB2b2lkIHVucmVzb2x2ZWRfZGlyZWN0b3J5KGNvbnN0IHN0cnVjdCB0cmF2ZXJzZV9pbmZvICppbmZvLCBzdHJ1Y3QgbmFtZV9lbnRyeSBuWzNdLAorCQkJCSBpbnQgZGZfY29uZmxpY3QpCiB7CiAJY2hhciAqbmV3YmFzZTsKIAlzdHJ1Y3QgbmFtZV9lbnRyeSAqcDsKIAlzdHJ1Y3QgdHJlZV9kZXNjIHRbM107CiAJdm9pZCAqYnVmMCwgKmJ1ZjEsICpidWYyOwogCi0JaWYgKCFyZXNvbHZlX2RpcmVjdG9yaWVzKQotCQlyZXR1cm4gMDsKLQlwID0gbjsKLQlpZiAoIXAtPm1vZGUpIHsKLQkJcCsrOwotCQlpZiAoIXAtPm1vZGUpCi0JCQlwKys7CisJZm9yIChwID0gbjsgcCA8IG4gKyAzOyBwKyspIHsKKwkJaWYgKHAtPm1vZGUgJiYgU19JU0RJUihwLT5tb2RlKSkKKwkJCWJyZWFrOwogCX0KLQlpZiAoIVNfSVNESVIocC0+bW9kZSkpCi0JCXJldHVybiAwOworCWlmIChuICsgMyA8PSBwKQorCQlyZXR1cm47IC8qIHRoZXJlIGlzIG5vIHRyZWUgaGVyZSAqLworCiAJbmV3YmFzZSA9IHRyYXZlcnNlX3BhdGgoaW5mbywgcCk7Ci0JYnVmMCA9IGZpbGxfdHJlZV9kZXNjcmlwdG9yKHQrMCwgblswXS5zaGExKTsKLQlidWYxID0gZmlsbF90cmVlX2Rlc2NyaXB0b3IodCsxLCBuWzFdLnNoYTEpOwotCWJ1ZjIgPSBmaWxsX3RyZWVfZGVzY3JpcHRvcih0KzIsIG5bMl0uc2hhMSk7Ci0JbWVyZ2VfdHJlZXModCwgbmV3YmFzZSk7CisKKyNkZWZpbmUgRU5UUllfU0hBMShlKSAoKChlKS0+bW9kZSAmJiBTX0lTRElSKChlKS0+bW9kZSkpID8gKGUpLT5zaGExIDogTlVMTCkKKwlidWYwID0gZmlsbF90cmVlX2Rlc2NyaXB0b3IodCswLCBFTlRSWV9TSEExKG4gKyAwKSk7CisJYnVmMSA9IGZpbGxfdHJlZV9kZXNjcmlwdG9yKHQrMSwgRU5UUllfU0hBMShuICsgMSkpOworCWJ1ZjIgPSBmaWxsX3RyZWVfZGVzY3JpcHRvcih0KzIsIEVOVFJZX1NIQTEobiArIDIpKTsKKyN1bmRlZiBFTlRSWV9TSEExCisKKwltZXJnZV90cmVlc19yZWN1cnNpdmUodCwgbmV3YmFzZSwgZGZfY29uZmxpY3QpOwogCiAJZnJlZShidWYwKTsKIAlmcmVlKGJ1ZjEpOwogCWZyZWUoYnVmMik7CiAJZnJlZShuZXdiYXNlKTsKLQlyZXR1cm4gMTsKIH0KIAogCkBAIC0yNDIsMTggKzI0NiwzMCBAQAogc3RhdGljIHZvaWQgdW5yZXNvbHZlZChjb25zdCBzdHJ1Y3QgdHJhdmVyc2VfaW5mbyAqaW5mbywgc3RydWN0IG5hbWVfZW50cnkgblszXSkKIHsKIAlzdHJ1Y3QgbWVyZ2VfbGlzdCAqZW50cnkgPSBOVUxMOworCWludCBpOworCXVuc2lnbmVkIGRpcm1hc2sgPSAwLCBtYXNrID0gMDsKIAotCWlmICh1bnJlc29sdmVkX2RpcmVjdG9yeShpbmZvLCBuKSkKKwlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7CisJCW1hc2sgfD0gKDEgPDwgaSk7CisJCS8qCisJCSAqIFRyZWF0IG1pc3NpbmcgZW50cmllcyBhcyBkaXJlY3RvcmllcyBzbyB0aGF0IHdlIHJldHVybgorCQkgKiBhZnRlciB1bnJlc29sdmVkX2RpcmVjdG9yeSBoYXMgaGFuZGxlZCB0aGlzLgorCQkgKi8KKwkJaWYgKCFuW2ldLm1vZGUgfHwgU19JU0RJUihuW2ldLm1vZGUpKQorCQkJZGlybWFzayB8PSAoMSA8PCBpKTsKKwl9CisKKwl1bnJlc29sdmVkX2RpcmVjdG9yeShpbmZvLCBuLCBkaXJtYXNrICYmIChkaXJtYXNrICE9IG1hc2spKTsKKworCWlmIChkaXJtYXNrID09IG1hc2spCiAJCXJldHVybjsKIAotCS8qCi0JICogRG8gdGhlbSBpbiByZXZlcnNlIG9yZGVyIHNvIHRoYXQgdGhlIHJlc3VsdGluZyBsaW5rCi0JICogbGlzdCBoYXMgdGhlIHN0YWdlcyBpbiBvcmRlciAtIGxpbmtfZW50cnkgYWRkcyBuZXcKLQkgKiBsaW5rcyBhdCB0aGUgZnJvbnQuCi0JICovCi0JZW50cnkgPSBsaW5rX2VudHJ5KDMsIGluZm8sIG4gKyAyLCBlbnRyeSk7Ci0JZW50cnkgPSBsaW5rX2VudHJ5KDIsIGluZm8sIG4gKyAxLCBlbnRyeSk7Ci0JZW50cnkgPSBsaW5rX2VudHJ5KDEsIGluZm8sIG4gKyAwLCBlbnRyeSk7CisJaWYgKG5bMl0ubW9kZSAmJiAhU19JU0RJUihuWzJdLm1vZGUpKQorCQllbnRyeSA9IGxpbmtfZW50cnkoMywgaW5mbywgbiArIDIsIGVudHJ5KTsKKwlpZiAoblsxXS5tb2RlICYmICFTX0lTRElSKG5bMV0ubW9kZSkpCisJCWVudHJ5ID0gbGlua19lbnRyeSgyLCBpbmZvLCBuICsgMSwgZW50cnkpOworCWlmIChuWzBdLm1vZGUgJiYgIVNfSVNESVIoblswXS5tb2RlKSkKKwkJZW50cnkgPSBsaW5rX2VudHJ5KDEsIGluZm8sIG4gKyAwLCBlbnRyeSk7CiAKIAlhZGRfbWVyZ2VfZW50cnkoZW50cnkpOwogfQpAQCAtMjkwLDQwICszMDYsNTAgQEAKIHN0YXRpYyBpbnQgdGhyZWV3YXlfY2FsbGJhY2soaW50IG4sIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBkaXJtYXNrLCBzdHJ1Y3QgbmFtZV9lbnRyeSAqZW50cnksIHN0cnVjdCB0cmF2ZXJzZV9pbmZvICppbmZvKQogewogCS8qIFNhbWUgaW4gYm90aD8gKi8KLQlpZiAoc2FtZV9lbnRyeShlbnRyeSsxLCBlbnRyeSsyKSkgewotCQlpZiAoZW50cnlbMF0uc2hhMSkgewotCQkJcmVzb2x2ZShpbmZvLCBOVUxMLCBlbnRyeSsxKTsKLQkJCXJldHVybiBtYXNrOwotCQl9CisJaWYgKHNhbWVfZW50cnkoZW50cnkrMSwgZW50cnkrMikgfHwgYm90aF9lbXB0eShlbnRyeSsxLCBlbnRyeSsyKSkgeworCQkvKiBNb2RpZmllZCwgYWRkZWQgb3IgcmVtb3ZlZCBpZGVudGljYWxseSAqLworCQlyZXNvbHZlKGluZm8sIE5VTEwsIGVudHJ5KzEpOworCQlyZXR1cm4gbWFzazsKIAl9CiAKIAlpZiAoc2FtZV9lbnRyeShlbnRyeSswLCBlbnRyeSsxKSkgewogCQlpZiAoZW50cnlbMl0uc2hhMSAmJiAhU19JU0RJUihlbnRyeVsyXS5tb2RlKSkgeworCQkJLyogV2UgZGlkIG5vdCB0b3VjaCwgdGhleSBtb2RpZmllZCAtLSB0YWtlIHRoZWlycyAqLwogCQkJcmVzb2x2ZShpbmZvLCBlbnRyeSsxLCBlbnRyeSsyKTsKIAkJCXJldHVybiBtYXNrOwogCQl9CisJCS8qCisJCSAqIElmIHdlIGRpZCBub3QgdG91Y2ggYSBkaXJlY3RvcnkgYnV0IHRoZXkgbWFkZSBpdAorCQkgKiBpbnRvIGEgZmlsZSwgd2UgZmFsbCB0aHJvdWdoIGFuZCB1bnJlc29sdmVkKCkKKwkJICogcmVjdXJzZXMgZG93bi4gIExpa2V3aXNlIGZvciB0aGUgb3Bwb3NpdGUgY2FzZS4KKwkJICovCiAJfQogCi0JaWYgKHNhbWVfZW50cnkoZW50cnkrMCwgZW50cnkrMikpIHsKLQkJaWYgKGVudHJ5WzFdLnNoYTEgJiYgIVNfSVNESVIoZW50cnlbMV0ubW9kZSkpIHsKLQkJCXJlc29sdmUoaW5mbywgTlVMTCwgZW50cnkrMSk7Ci0JCQlyZXR1cm4gbWFzazsKLQkJfQorCWlmIChzYW1lX2VudHJ5KGVudHJ5KzAsIGVudHJ5KzIpIHx8IGJvdGhfZW1wdHkoZW50cnkrMCwgZW50cnkrMikpIHsKKwkJLyogV2UgYWRkZWQsIG1vZGlmaWVkIG9yIHJlbW92ZWQsIHRoZXkgZGlkIG5vdCB0b3VjaCAtLSB0YWtlIG91cnMgKi8KKwkJcmVzb2x2ZShpbmZvLCBOVUxMLCBlbnRyeSsxKTsKKwkJcmV0dXJuIG1hc2s7CiAJfQogCiAJdW5yZXNvbHZlZChpbmZvLCBlbnRyeSk7CiAJcmV0dXJuIG1hc2s7CiB9CiAKLXN0YXRpYyB2b2lkIG1lcmdlX3RyZWVzKHN0cnVjdCB0cmVlX2Rlc2MgdFszXSwgY29uc3QgY2hhciAqYmFzZSkKK3N0YXRpYyB2b2lkIG1lcmdlX3RyZWVzX3JlY3Vyc2l2ZShzdHJ1Y3QgdHJlZV9kZXNjIHRbM10sIGNvbnN0IGNoYXIgKmJhc2UsIGludCBkZl9jb25mbGljdCkKIHsKIAlzdHJ1Y3QgdHJhdmVyc2VfaW5mbyBpbmZvOwogCiAJc2V0dXBfdHJhdmVyc2VfaW5mbygmaW5mbywgYmFzZSk7CisJaW5mby5kYXRhID0gJmRmX2NvbmZsaWN0OwogCWluZm8uZm4gPSB0aHJlZXdheV9jYWxsYmFjazsKIAl0cmF2ZXJzZV90cmVlcygzLCB0LCAmaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIG1lcmdlX3RyZWVzKHN0cnVjdCB0cmVlX2Rlc2MgdFszXSwgY29uc3QgY2hhciAqYmFzZSkKK3sKKwltZXJnZV90cmVlc19yZWN1cnNpdmUodCwgYmFzZSwgMCk7Cit9CisKIHN0YXRpYyB2b2lkICpnZXRfdHJlZV9kZXNjcmlwdG9yKHN0cnVjdCB0cmVlX2Rlc2MgKmRlc2MsIGNvbnN0IGNoYXIgKnJldikKIHsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9tZXJnZS5jIGIvYnVpbHRpbi9tZXJnZS5jCmluZGV4IGRkNTBhMGMuLjJlYmU3MzIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbWVyZ2UuYworKysgYi9idWlsdGluL21lcmdlLmMKQEAgLTQwLDE2ICs0MCwxNiBAQAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBidWlsdGluX21lcmdlX3VzYWdlW10gPSB7Ci0JImdpdCBtZXJnZSBbb3B0aW9uc10gWzxjb21taXQ+Li4uXSIsCi0JImdpdCBtZXJnZSBbb3B0aW9uc10gPG1zZz4gSEVBRCA8Y29tbWl0PiIsCi0JImdpdCBtZXJnZSAtLWFib3J0IiwKKwlOXygiZ2l0IG1lcmdlIFtvcHRpb25zXSBbPGNvbW1pdD4uLi5dIiksCisJTl8oImdpdCBtZXJnZSBbb3B0aW9uc10gPG1zZz4gSEVBRCA8Y29tbWl0PiIpLAorCU5fKCJnaXQgbWVyZ2UgLS1hYm9ydCIpLAogCU5VTEwKIH07CiAKIHN0YXRpYyBpbnQgc2hvd19kaWZmc3RhdCA9IDEsIHNob3J0bG9nX2xlbiA9IC0xLCBzcXVhc2g7CiBzdGF0aWMgaW50IG9wdGlvbl9jb21taXQgPSAxLCBhbGxvd19mYXN0X2ZvcndhcmQgPSAxOwogc3RhdGljIGludCBmYXN0X2ZvcndhcmRfb25seSwgb3B0aW9uX2VkaXQgPSAtMTsKLXN0YXRpYyBpbnQgYWxsb3dfdHJpdmlhbCA9IDEsIGhhdmVfbWVzc2FnZTsKK3N0YXRpYyBpbnQgYWxsb3dfdHJpdmlhbCA9IDEsIGhhdmVfbWVzc2FnZSwgdmVyaWZ5X3NpZ25hdHVyZXM7CiBzdGF0aWMgaW50IG92ZXJ3cml0ZV9pZ25vcmUgPSAxOwogc3RhdGljIHN0cnVjdCBzdHJidWYgbWVyZ2VfbXNnID0gU1RSQlVGX0lOSVQ7CiBzdGF0aWMgc3RydWN0IHN0cmF0ZWd5ICoqdXNlX3N0cmF0ZWdpZXM7CkBAIC0xODAsMzkgKzE4MCw0MSBAQAogCiBzdGF0aWMgc3RydWN0IG9wdGlvbiBidWlsdGluX21lcmdlX29wdGlvbnNbXSA9IHsKIAl7IE9QVElPTl9DQUxMQkFDSywgJ24nLCBOVUxMLCBOVUxMLCBOVUxMLAotCQkiZG8gbm90IHNob3cgYSBkaWZmc3RhdCBhdCB0aGUgZW5kIG9mIHRoZSBtZXJnZSIsCisJCU5fKCJkbyBub3Qgc2hvdyBhIGRpZmZzdGF0IGF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlIiksCiAJCVBBUlNFX09QVF9OT0FSRywgb3B0aW9uX3BhcnNlX24gfSwKIAlPUFRfQk9PTEVBTigwLCAic3RhdCIsICZzaG93X2RpZmZzdGF0LAotCQkic2hvdyBhIGRpZmZzdGF0IGF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlIiksCi0JT1BUX0JPT0xFQU4oMCwgInN1bW1hcnkiLCAmc2hvd19kaWZmc3RhdCwgIihzeW5vbnltIHRvIC0tc3RhdCkiKSwKLQl7IE9QVElPTl9JTlRFR0VSLCAwLCAibG9nIiwgJnNob3J0bG9nX2xlbiwgIm4iLAotCSAgImFkZCAoYXQgbW9zdCA8bj4pIGVudHJpZXMgZnJvbSBzaG9ydGxvZyB0byBtZXJnZSBjb21taXQgbWVzc2FnZSIsCisJCU5fKCJzaG93IGEgZGlmZnN0YXQgYXQgdGhlIGVuZCBvZiB0aGUgbWVyZ2UiKSksCisJT1BUX0JPT0xFQU4oMCwgInN1bW1hcnkiLCAmc2hvd19kaWZmc3RhdCwgTl8oIihzeW5vbnltIHRvIC0tc3RhdCkiKSksCisJeyBPUFRJT05fSU5URUdFUiwgMCwgImxvZyIsICZzaG9ydGxvZ19sZW4sIE5fKCJuIiksCisJICBOXygiYWRkIChhdCBtb3N0IDxuPikgZW50cmllcyBmcm9tIHNob3J0bG9nIHRvIG1lcmdlIGNvbW1pdCBtZXNzYWdlIiksCiAJICBQQVJTRV9PUFRfT1BUQVJHLCBOVUxMLCBERUZBVUxUX01FUkdFX0xPR19MRU4gfSwKIAlPUFRfQk9PTEVBTigwLCAic3F1YXNoIiwgJnNxdWFzaCwKLQkJImNyZWF0ZSBhIHNpbmdsZSBjb21taXQgaW5zdGVhZCBvZiBkb2luZyBhIG1lcmdlIiksCisJCU5fKCJjcmVhdGUgYSBzaW5nbGUgY29tbWl0IGluc3RlYWQgb2YgZG9pbmcgYSBtZXJnZSIpKSwKIAlPUFRfQk9PTEVBTigwLCAiY29tbWl0IiwgJm9wdGlvbl9jb21taXQsCi0JCSJwZXJmb3JtIGEgY29tbWl0IGlmIHRoZSBtZXJnZSBzdWNjZWVkcyAoZGVmYXVsdCkiKSwKKwkJTl8oInBlcmZvcm0gYSBjb21taXQgaWYgdGhlIG1lcmdlIHN1Y2NlZWRzIChkZWZhdWx0KSIpKSwKIAlPUFRfQk9PTCgnZScsICJlZGl0IiwgJm9wdGlvbl9lZGl0LAotCQkiZWRpdCBtZXNzYWdlIGJlZm9yZSBjb21taXR0aW5nIiksCisJCU5fKCJlZGl0IG1lc3NhZ2UgYmVmb3JlIGNvbW1pdHRpbmciKSksCiAJT1BUX0JPT0xFQU4oMCwgImZmIiwgJmFsbG93X2Zhc3RfZm9yd2FyZCwKLQkJImFsbG93IGZhc3QtZm9yd2FyZCAoZGVmYXVsdCkiKSwKKwkJTl8oImFsbG93IGZhc3QtZm9yd2FyZCAoZGVmYXVsdCkiKSksCiAJT1BUX0JPT0xFQU4oMCwgImZmLW9ubHkiLCAmZmFzdF9mb3J3YXJkX29ubHksCi0JCSJhYm9ydCBpZiBmYXN0LWZvcndhcmQgaXMgbm90IHBvc3NpYmxlIiksCisJCU5fKCJhYm9ydCBpZiBmYXN0LWZvcndhcmQgaXMgbm90IHBvc3NpYmxlIikpLAogCU9QVF9SRVJFUkVfQVVUT1VQREFURSgmYWxsb3dfcmVyZXJlX2F1dG8pLAotCU9QVF9DQUxMQkFDSygncycsICJzdHJhdGVneSIsICZ1c2Vfc3RyYXRlZ2llcywgInN0cmF0ZWd5IiwKLQkJIm1lcmdlIHN0cmF0ZWd5IHRvIHVzZSIsIG9wdGlvbl9wYXJzZV9zdHJhdGVneSksCi0JT1BUX0NBTExCQUNLKCdYJywgInN0cmF0ZWd5LW9wdGlvbiIsICZ4b3B0cywgIm9wdGlvbj12YWx1ZSIsCi0JCSJvcHRpb24gZm9yIHNlbGVjdGVkIG1lcmdlIHN0cmF0ZWd5Iiwgb3B0aW9uX3BhcnNlX3gpLAotCU9QVF9DQUxMQkFDSygnbScsICJtZXNzYWdlIiwgJm1lcmdlX21zZywgIm1lc3NhZ2UiLAotCQkibWVyZ2UgY29tbWl0IG1lc3NhZ2UgKGZvciBhIG5vbi1mYXN0LWZvcndhcmQgbWVyZ2UpIiwKKwlPUFRfQk9PTCgwLCAidmVyaWZ5LXNpZ25hdHVyZXMiLCAmdmVyaWZ5X3NpZ25hdHVyZXMsCisJCU5fKCJWZXJpZnkgdGhhdCB0aGUgbmFtZWQgY29tbWl0IGhhcyBhIHZhbGlkIEdQRyBzaWduYXR1cmUiKSksCisJT1BUX0NBTExCQUNLKCdzJywgInN0cmF0ZWd5IiwgJnVzZV9zdHJhdGVnaWVzLCBOXygic3RyYXRlZ3kiKSwKKwkJTl8oIm1lcmdlIHN0cmF0ZWd5IHRvIHVzZSIpLCBvcHRpb25fcGFyc2Vfc3RyYXRlZ3kpLAorCU9QVF9DQUxMQkFDSygnWCcsICJzdHJhdGVneS1vcHRpb24iLCAmeG9wdHMsIE5fKCJvcHRpb249dmFsdWUiKSwKKwkJTl8oIm9wdGlvbiBmb3Igc2VsZWN0ZWQgbWVyZ2Ugc3RyYXRlZ3kiKSwgb3B0aW9uX3BhcnNlX3gpLAorCU9QVF9DQUxMQkFDSygnbScsICJtZXNzYWdlIiwgJm1lcmdlX21zZywgTl8oIm1lc3NhZ2UiKSwKKwkJTl8oIm1lcmdlIGNvbW1pdCBtZXNzYWdlIChmb3IgYSBub24tZmFzdC1mb3J3YXJkIG1lcmdlKSIpLAogCQlvcHRpb25fcGFyc2VfbWVzc2FnZSksCiAJT1BUX19WRVJCT1NJVFkoJnZlcmJvc2l0eSksCiAJT1BUX0JPT0xFQU4oMCwgImFib3J0IiwgJmFib3J0X2N1cnJlbnRfbWVyZ2UsCi0JCSJhYm9ydCB0aGUgY3VycmVudCBpbi1wcm9ncmVzcyBtZXJnZSIpLAotCU9QVF9TRVRfSU5UKDAsICJwcm9ncmVzcyIsICZzaG93X3Byb2dyZXNzLCAiZm9yY2UgcHJvZ3Jlc3MgcmVwb3J0aW5nIiwgMSksCi0JeyBPUFRJT05fU1RSSU5HLCAnUycsICJncGctc2lnbiIsICZzaWduX2NvbW1pdCwgImtleSBpZCIsCi0JICAiR1BHIHNpZ24gY29tbWl0IiwgUEFSU0VfT1BUX09QVEFSRywgTlVMTCwgKGludHB0cl90KSAiIiB9LAotCU9QVF9CT09MRUFOKDAsICJvdmVyd3JpdGUtaWdub3JlIiwgJm92ZXJ3cml0ZV9pZ25vcmUsICJ1cGRhdGUgaWdub3JlZCBmaWxlcyAoZGVmYXVsdCkiKSwKKwkJTl8oImFib3J0IHRoZSBjdXJyZW50IGluLXByb2dyZXNzIG1lcmdlIikpLAorCU9QVF9TRVRfSU5UKDAsICJwcm9ncmVzcyIsICZzaG93X3Byb2dyZXNzLCBOXygiZm9yY2UgcHJvZ3Jlc3MgcmVwb3J0aW5nIiksIDEpLAorCXsgT1BUSU9OX1NUUklORywgJ1MnLCAiZ3BnLXNpZ24iLCAmc2lnbl9jb21taXQsIE5fKCJrZXkgaWQiKSwKKwkgIE5fKCJHUEcgc2lnbiBjb21taXQiKSwgUEFSU0VfT1BUX09QVEFSRywgTlVMTCwgKGludHB0cl90KSAiIiB9LAorCU9QVF9CT09MRUFOKDAsICJvdmVyd3JpdGUtaWdub3JlIiwgJm92ZXJ3cml0ZV9pZ25vcmUsIE5fKCJ1cGRhdGUgaWdub3JlZCBmaWxlcyAoZGVmYXVsdCkiKSksCiAJT1BUX0VORCgpCiB9OwogCkBAIC00MDQsOCArNDA2LDcgQEAKIAkJb3B0cy5vdXRwdXRfZm9ybWF0IHw9CiAJCQlESUZGX0ZPUk1BVF9TVU1NQVJZIHwgRElGRl9GT1JNQVRfRElGRlNUQVQ7CiAJCW9wdHMuZGV0ZWN0X3JlbmFtZSA9IERJRkZfREVURUNUX1JFTkFNRTsKLQkJaWYgKGRpZmZfc2V0dXBfZG9uZSgmb3B0cykgPCAwKQotCQkJZGllKF8oImRpZmZfc2V0dXBfZG9uZSBmYWlsZWQiKSk7CisJCWRpZmZfc2V0dXBfZG9uZSgmb3B0cyk7CiAJCWRpZmZfdHJlZV9zaGExKGhlYWQsIG5ld19oZWFkLCAiIiwgJm9wdHMpOwogCQlkaWZmY29yZV9zdGQoJm9wdHMpOwogCQlkaWZmX2ZsdXNoKCZvcHRzKTsKQEAgLTUxNyw2ICs1MTgsMTkgQEAKIAkJc3RyYnVmX3JlbGVhc2UoJmxpbmUpOwogCQlnb3RvIGNsZWFudXA7CiAJfQorCisJaWYgKHJlbW90ZV9oZWFkLT51dGlsKSB7CisJCXN0cnVjdCBtZXJnZV9yZW1vdGVfZGVzYyAqZGVzYzsKKwkJZGVzYyA9IG1lcmdlX3JlbW90ZV91dGlsKHJlbW90ZV9oZWFkKTsKKwkJaWYgKGRlc2MgJiYgZGVzYy0+b2JqICYmIGRlc2MtPm9iai0+dHlwZSA9PSBPQkpfVEFHKSB7CisJCQlzdHJidWZfYWRkZihtc2csICIlc1x0XHQlcyAnJXMnXG4iLAorCQkJCSAgICBzaGExX3RvX2hleChkZXNjLT5vYmotPnNoYTEpLAorCQkJCSAgICB0eXBlbmFtZShkZXNjLT5vYmotPnR5cGUpLAorCQkJCSAgICByZW1vdGUpOworCQkJZ290byBjbGVhbnVwOworCQl9CisJfQorCiAJc3RyYnVmX2FkZGYobXNnLCAiJXNcdFx0Y29tbWl0ICclcydcbiIsCiAJCXNoYTFfdG9faGV4KHJlbW90ZV9oZWFkLT5vYmplY3Quc2hhMSksIHJlbW90ZSk7CiBjbGVhbnVwOgpAQCAtNjI5LDU5ICs2NDMsNiBAQAogCQlkaWUoXygiZ2l0IHdyaXRlLXRyZWUgZmFpbGVkIHRvIHdyaXRlIGEgdHJlZSIpKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgKm1lcmdlX2FyZ3VtZW50KHN0cnVjdCBjb21taXQgKmNvbW1pdCkKLXsKLQlpZiAoY29tbWl0KQotCQlyZXR1cm4gc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSk7Ci0JZWxzZQotCQlyZXR1cm4gRU1QVFlfVFJFRV9TSEExX0hFWDsKLX0KLQotaW50IHRyeV9tZXJnZV9jb21tYW5kKGNvbnN0IGNoYXIgKnN0cmF0ZWd5LCBzaXplX3QgeG9wdHNfbnIsCi0JCSAgICAgIGNvbnN0IGNoYXIgKip4b3B0cywgc3RydWN0IGNvbW1pdF9saXN0ICpjb21tb24sCi0JCSAgICAgIGNvbnN0IGNoYXIgKmhlYWRfYXJnLCBzdHJ1Y3QgY29tbWl0X2xpc3QgKnJlbW90ZXMpCi17Ci0JY29uc3QgY2hhciAqKmFyZ3M7Ci0JaW50IGkgPSAwLCB4ID0gMCwgcmV0OwotCXN0cnVjdCBjb21taXRfbGlzdCAqajsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwotCi0JYXJncyA9IHhtYWxsb2MoKDQgKyB4b3B0c19uciArIGNvbW1pdF9saXN0X2NvdW50KGNvbW1vbikgKwotCQkJY29tbWl0X2xpc3RfY291bnQocmVtb3RlcykpICogc2l6ZW9mKGNoYXIgKikpOwotCXN0cmJ1Zl9hZGRmKCZidWYsICJtZXJnZS0lcyIsIHN0cmF0ZWd5KTsKLQlhcmdzW2krK10gPSBidWYuYnVmOwotCWZvciAoeCA9IDA7IHggPCB4b3B0c19ucjsgeCsrKSB7Ci0JCWNoYXIgKnMgPSB4bWFsbG9jKHN0cmxlbih4b3B0c1t4XSkrMisxKTsKLQkJc3RyY3B5KHMsICItLSIpOwotCQlzdHJjcHkocysyLCB4b3B0c1t4XSk7Ci0JCWFyZ3NbaSsrXSA9IHM7Ci0JfQotCWZvciAoaiA9IGNvbW1vbjsgajsgaiA9IGotPm5leHQpCi0JCWFyZ3NbaSsrXSA9IHhzdHJkdXAobWVyZ2VfYXJndW1lbnQoai0+aXRlbSkpOwotCWFyZ3NbaSsrXSA9ICItLSI7Ci0JYXJnc1tpKytdID0gaGVhZF9hcmc7Ci0JZm9yIChqID0gcmVtb3RlczsgajsgaiA9IGotPm5leHQpCi0JCWFyZ3NbaSsrXSA9IHhzdHJkdXAobWVyZ2VfYXJndW1lbnQoai0+aXRlbSkpOwotCWFyZ3NbaV0gPSBOVUxMOwotCXJldCA9IHJ1bl9jb21tYW5kX3Zfb3B0KGFyZ3MsIFJVTl9HSVRfQ01EKTsKLQlzdHJidWZfcmVsZWFzZSgmYnVmKTsKLQlpID0gMTsKLQlmb3IgKHggPSAwOyB4IDwgeG9wdHNfbnI7IHgrKykKLQkJZnJlZSgodm9pZCAqKWFyZ3NbaSsrXSk7Ci0JZm9yIChqID0gY29tbW9uOyBqOyBqID0gai0+bmV4dCkKLQkJZnJlZSgodm9pZCAqKWFyZ3NbaSsrXSk7Ci0JaSArPSAyOwotCWZvciAoaiA9IHJlbW90ZXM7IGo7IGogPSBqLT5uZXh0KQotCQlmcmVlKCh2b2lkICopYXJnc1tpKytdKTsKLQlmcmVlKGFyZ3MpOwotCWRpc2NhcmRfY2FjaGUoKTsKLQlpZiAocmVhZF9jYWNoZSgpIDwgMCkKLQkJZGllKF8oImZhaWxlZCB0byByZWFkIHRoZSBjYWNoZSIpKTsKLQlyZXNvbHZlX3VuZG9fY2xlYXIoKTsKLQotCXJldHVybiByZXQ7Ci19Ci0KIHN0YXRpYyBpbnQgdHJ5X21lcmdlX3N0cmF0ZWd5KGNvbnN0IGNoYXIgKnN0cmF0ZWd5LCBzdHJ1Y3QgY29tbWl0X2xpc3QgKmNvbW1vbiwKIAkJCSAgICAgIHN0cnVjdCBjb21taXRfbGlzdCAqcmVtb3RlaGVhZHMsCiAJCQkgICAgICBzdHJ1Y3QgY29tbWl0ICpoZWFkLCBjb25zdCBjaGFyICpoZWFkX2FyZykKQEAgLTc2Myw1NiArNzI0LDYgQEAKIAlyZXR1cm4gcmV0OwogfQogCi1pbnQgY2hlY2tvdXRfZmFzdF9mb3J3YXJkKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmhlYWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnJlbW90ZSkKLXsKLQlzdHJ1Y3QgdHJlZSAqdHJlZXNbTUFYX1VOUEFDS19UUkVFU107Ci0Jc3RydWN0IHVucGFja190cmVlc19vcHRpb25zIG9wdHM7Ci0Jc3RydWN0IHRyZWVfZGVzYyB0W01BWF9VTlBBQ0tfVFJFRVNdOwotCWludCBpLCBmZCwgbnJfdHJlZXMgPSAwOwotCXN0cnVjdCBkaXJfc3RydWN0IGRpcjsKLQlzdHJ1Y3QgbG9ja19maWxlICpsb2NrX2ZpbGUgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgbG9ja19maWxlKSk7Ci0KLQlyZWZyZXNoX2NhY2hlKFJFRlJFU0hfUVVJRVQpOwotCi0JZmQgPSBob2xkX2xvY2tlZF9pbmRleChsb2NrX2ZpbGUsIDEpOwotCi0JbWVtc2V0KCZ0cmVlcywgMCwgc2l6ZW9mKHRyZWVzKSk7Ci0JbWVtc2V0KCZvcHRzLCAwLCBzaXplb2Yob3B0cykpOwotCW1lbXNldCgmdCwgMCwgc2l6ZW9mKHQpKTsKLQlpZiAob3ZlcndyaXRlX2lnbm9yZSkgewotCQltZW1zZXQoJmRpciwgMCwgc2l6ZW9mKGRpcikpOwotCQlkaXIuZmxhZ3MgfD0gRElSX1NIT1dfSUdOT1JFRDsKLQkJc2V0dXBfc3RhbmRhcmRfZXhjbHVkZXMoJmRpcik7Ci0JCW9wdHMuZGlyID0gJmRpcjsKLQl9Ci0KLQlvcHRzLmhlYWRfaWR4ID0gMTsKLQlvcHRzLnNyY19pbmRleCA9ICZ0aGVfaW5kZXg7Ci0Jb3B0cy5kc3RfaW5kZXggPSAmdGhlX2luZGV4OwotCW9wdHMudXBkYXRlID0gMTsKLQlvcHRzLnZlcmJvc2VfdXBkYXRlID0gMTsKLQlvcHRzLm1lcmdlID0gMTsKLQlvcHRzLmZuID0gdHdvd2F5X21lcmdlOwotCXNldHVwX3VucGFja190cmVlc19wb3JjZWxhaW4oJm9wdHMsICJtZXJnZSIpOwotCi0JdHJlZXNbbnJfdHJlZXNdID0gcGFyc2VfdHJlZV9pbmRpcmVjdChoZWFkKTsKLQlpZiAoIXRyZWVzW25yX3RyZWVzKytdKQotCQlyZXR1cm4gLTE7Ci0JdHJlZXNbbnJfdHJlZXNdID0gcGFyc2VfdHJlZV9pbmRpcmVjdChyZW1vdGUpOwotCWlmICghdHJlZXNbbnJfdHJlZXMrK10pCi0JCXJldHVybiAtMTsKLQlmb3IgKGkgPSAwOyBpIDwgbnJfdHJlZXM7IGkrKykgewotCQlwYXJzZV90cmVlKHRyZWVzW2ldKTsKLQkJaW5pdF90cmVlX2Rlc2ModCtpLCB0cmVlc1tpXS0+YnVmZmVyLCB0cmVlc1tpXS0+c2l6ZSk7Ci0JfQotCWlmICh1bnBhY2tfdHJlZXMobnJfdHJlZXMsIHQsICZvcHRzKSkKLQkJcmV0dXJuIC0xOwotCWlmICh3cml0ZV9jYWNoZShmZCwgYWN0aXZlX2NhY2hlLCBhY3RpdmVfbnIpIHx8Ci0JCWNvbW1pdF9sb2NrZWRfaW5kZXgobG9ja19maWxlKSkKLQkJZGllKF8oInVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIpKTsKLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHZvaWQgc3BsaXRfbWVyZ2Vfc3RyYXRlZ2llcyhjb25zdCBjaGFyICpzdHJpbmcsIHN0cnVjdCBzdHJhdGVneSAqKmxpc3QsCiAJCQkJICAgaW50ICpuciwgaW50ICphbGxvYykKIHsKQEAgLTg5MiwyMCArODAzLDIwIEBACiBOXygiUGxlYXNlIGVudGVyIGEgY29tbWl0IG1lc3NhZ2UgdG8gZXhwbGFpbiB3aHkgdGhpcyBtZXJnZSBpcyBuZWNlc3NhcnksXG4iCiAgICAiZXNwZWNpYWxseSBpZiBpdCBtZXJnZXMgYW4gdXBkYXRlZCB1cHN0cmVhbSBpbnRvIGEgdG9waWMgYnJhbmNoLlxuIgogICAgIlxuIgotICAgIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzXG4iCisgICAiTGluZXMgc3RhcnRpbmcgd2l0aCAnJWMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzXG4iCiAgICAidGhlIGNvbW1pdC5cbiIpOwogCiBzdGF0aWMgdm9pZCBwcmVwYXJlX3RvX2NvbW1pdChzdHJ1Y3QgY29tbWl0X2xpc3QgKnJlbW90ZWhlYWRzKQogewogCXN0cnVjdCBzdHJidWYgbXNnID0gU1RSQlVGX0lOSVQ7Ci0JY29uc3QgY2hhciAqY29tbWVudCA9IF8obWVyZ2VfZWRpdG9yX2NvbW1lbnQpOwogCXN0cmJ1Zl9hZGRidWYoJm1zZywgJm1lcmdlX21zZyk7CiAJc3RyYnVmX2FkZGNoKCZtc2csICdcbicpOwogCWlmICgwIDwgb3B0aW9uX2VkaXQpCi0JCXN0cmJ1Zl9hZGRfbGluZXMoJm1zZywgIiMgIiwgY29tbWVudCwgc3RybGVuKGNvbW1lbnQpKTsKKwkJc3RyYnVmX2NvbW1lbnRlZF9hZGRmKCZtc2csIF8obWVyZ2VfZWRpdG9yX2NvbW1lbnQpLCBjb21tZW50X2xpbmVfY2hhcik7CiAJd3JpdGVfbWVyZ2VfbXNnKCZtc2cpOwotCXJ1bl9ob29rKGdldF9pbmRleF9maWxlKCksICJwcmVwYXJlLWNvbW1pdC1tc2ciLAotCQkgZ2l0X3BhdGgoIk1FUkdFX01TRyIpLCAibWVyZ2UiLCBOVUxMLCBOVUxMKTsKKwlpZiAocnVuX2hvb2soZ2V0X2luZGV4X2ZpbGUoKSwgInByZXBhcmUtY29tbWl0LW1zZyIsCisJCSAgICAgZ2l0X3BhdGgoIk1FUkdFX01TRyIpLCAibWVyZ2UiLCBOVUxMLCBOVUxMKSkKKwkJYWJvcnRfY29tbWl0KHJlbW90ZWhlYWRzLCBOVUxMKTsKIAlpZiAoMCA8IG9wdGlvbl9lZGl0KSB7CiAJCWlmIChsYXVuY2hfZWRpdG9yKGdpdF9wYXRoKCJNRVJHRV9NU0ciKSwgTlVMTCwgTlVMTCkpCiAJCQlhYm9ydF9jb21taXQocmVtb3RlaGVhZHMsIE5VTEwpOwpAQCAtMTE0Myw3ICsxMDU0LDggQEAKIAlmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CiAJCXN0cnVjdCBjb21taXQgKmNvbW1pdCA9IGdldF9tZXJnZV9wYXJlbnQoYXJndltpXSk7CiAJCWlmICghY29tbWl0KQotCQkJZGllKF8oIiVzIC0gbm90IHNvbWV0aGluZyB3ZSBjYW4gbWVyZ2UiKSwgYXJndltpXSk7CisJCQloZWxwX3Vua25vd25fcmVmKGFyZ3ZbaV0sICJtZXJnZSIsCisJCQkJCSAibm90IHNvbWV0aGluZyB3ZSBjYW4gbWVyZ2UiKTsKIAkJcmVtb3RlcyA9ICZjb21taXRfbGlzdF9pbnNlcnQoY29tbWl0LCByZW1vdGVzKS0+bmV4dDsKIAl9CiAJKnJlbW90ZXMgPSBOVUxMOwpAQCAtMTMyNSw2ICsxMjM3LDcgQEAKIAkJCW1lbXNldCgmb3B0cywgMCwgc2l6ZW9mKG9wdHMpKTsKIAkJCW9wdHMuYWRkX3RpdGxlID0gIWhhdmVfbWVzc2FnZTsKIAkJCW9wdHMuc2hvcnRsb2dfbGVuID0gc2hvcnRsb2dfbGVuOworCQkJb3B0cy5jcmVkaXRfcGVvcGxlID0gKDAgPCBvcHRpb25fZWRpdCk7CiAKIAkJCWZtdF9tZXJnZV9tc2coJm1lcmdlX25hbWVzLCAmbWVyZ2VfbXNnLCAmb3B0cyk7CiAJCQlpZiAobWVyZ2VfbXNnLmxlbikKQEAgLTEzMzYsNiArMTI0OSwzOSBAQAogCQl1c2FnZV93aXRoX29wdGlvbnMoYnVpbHRpbl9tZXJnZV91c2FnZSwKIAkJCWJ1aWx0aW5fbWVyZ2Vfb3B0aW9ucyk7CiAKKwlpZiAodmVyaWZ5X3NpZ25hdHVyZXMpIHsKKwkJZm9yIChwID0gcmVtb3RlaGVhZHM7IHA7IHAgPSBwLT5uZXh0KSB7CisJCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQgPSBwLT5pdGVtOworCQkJY2hhciBoZXhbNDFdOworCQkJc3RydWN0IHNpZ25hdHVyZV9jaGVjayBzaWduYXR1cmVfY2hlY2s7CisJCQltZW1zZXQoJnNpZ25hdHVyZV9jaGVjaywgMCwgc2l6ZW9mKHNpZ25hdHVyZV9jaGVjaykpOworCisJCQljaGVja19jb21taXRfc2lnbmF0dXJlKGNvbW1pdCwgJnNpZ25hdHVyZV9jaGVjayk7CisKKwkJCXN0cmNweShoZXgsIGZpbmRfdW5pcXVlX2FiYnJldihjb21taXQtPm9iamVjdC5zaGExLCBERUZBVUxUX0FCQlJFVikpOworCQkJc3dpdGNoIChzaWduYXR1cmVfY2hlY2sucmVzdWx0KSB7CisJCQljYXNlICdHJzoKKwkJCQlicmVhazsKKwkJCWNhc2UgJ1UnOgorCQkJCWRpZShfKCJDb21taXQgJXMgaGFzIGFuIHVudHJ1c3RlZCBHUEcgc2lnbmF0dXJlLCAiCisJCQkJICAgICAgImFsbGVnZWRseSBieSAlcy4iKSwgaGV4LCBzaWduYXR1cmVfY2hlY2suc2lnbmVyKTsKKwkJCWNhc2UgJ0InOgorCQkJCWRpZShfKCJDb21taXQgJXMgaGFzIGEgYmFkIEdQRyBzaWduYXR1cmUgIgorCQkJCSAgICAgICJhbGxlZ2VkbHkgYnkgJXMuIiksIGhleCwgc2lnbmF0dXJlX2NoZWNrLnNpZ25lcik7CisJCQlkZWZhdWx0OiAvKiAnTicgKi8KKwkJCQlkaWUoXygiQ29tbWl0ICVzIGRvZXMgbm90IGhhdmUgYSBHUEcgc2lnbmF0dXJlLiIpLCBoZXgpOworCQkJfQorCQkJaWYgKHZlcmJvc2l0eSA+PSAwICYmIHNpZ25hdHVyZV9jaGVjay5yZXN1bHQgPT0gJ0cnKQorCQkJCXByaW50ZihfKCJDb21taXQgJXMgaGFzIGEgZ29vZCBHUEcgc2lnbmF0dXJlIGJ5ICVzXG4iKSwKKwkJCQkgICAgICAgaGV4LCBzaWduYXR1cmVfY2hlY2suc2lnbmVyKTsKKworCQkJZnJlZShzaWduYXR1cmVfY2hlY2suZ3BnX291dHB1dCk7CisJCQlmcmVlKHNpZ25hdHVyZV9jaGVjay5ncGdfc3RhdHVzKTsKKwkJCWZyZWUoc2lnbmF0dXJlX2NoZWNrLnNpZ25lcik7CisJCQlmcmVlKHNpZ25hdHVyZV9jaGVjay5rZXkpOworCQl9CisJfQorCiAJc3RyYnVmX2FkZHN0cigmYnVmLCAibWVyZ2UiKTsKIAlmb3IgKHAgPSByZW1vdGVoZWFkczsgcDsgcCA9IHAtPm5leHQpCiAJCXN0cmJ1Zl9hZGRmKCZidWYsICIgJXMiLCBtZXJnZV9yZW1vdGVfdXRpbChwLT5pdGVtKS0+bmFtZSk7CkBAIC0xNDI1LDcgKzEzNzEsOCBAQAogCQl9CiAKIAkJaWYgKGNoZWNrb3V0X2Zhc3RfZm9yd2FyZChoZWFkX2NvbW1pdC0+b2JqZWN0LnNoYTEsCi0JCQkJCSAgY29tbWl0LT5vYmplY3Quc2hhMSkpIHsKKwkJCQkJICBjb21taXQtPm9iamVjdC5zaGExLAorCQkJCQkgIG92ZXJ3cml0ZV9pZ25vcmUpKSB7CiAJCQlyZXQgPSAxOwogCQkJZ290byBkb25lOwogCQl9CmRpZmYgLS1naXQgYS9idWlsdGluL21rdHJlZS5jIGIvYnVpbHRpbi9ta3RyZWUuYwppbmRleCA0YWUxYzQxLi5mOTJiYTQwIDEwMDY0NAotLS0gYS9idWlsdGluL21rdHJlZS5jCisrKyBiL2J1aWx0aW4vbWt0cmVlLmMKQEAgLTY0LDcgKzY0LDcgQEAKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIgKm1rdHJlZV91c2FnZVtdID0gewotCSJnaXQgbWt0cmVlIFstel0gWy0tbWlzc2luZ10gWy0tYmF0Y2hdIiwKKwlOXygiZ2l0IG1rdHJlZSBbLXpdIFstLW1pc3NpbmddIFstLWJhdGNoXSIpLAogCU5VTEwKIH07CiAKQEAgLTE1MCw5ICsxNTAsOSBAQAogCWludCBnb3RfZW9mID0gMDsKIAogCWNvbnN0IHN0cnVjdCBvcHRpb24gb3B0aW9uW10gPSB7Ci0JCU9QVF9TRVRfSU5UKCd6JywgTlVMTCwgJmxpbmVfdGVybWluYXRpb24sICJpbnB1dCBpcyBOVUwgdGVybWluYXRlZCIsICdcMCcpLAotCQlPUFRfU0VUX0lOVCggMCAsICJtaXNzaW5nIiwgJmFsbG93X21pc3NpbmcsICJhbGxvdyBtaXNzaW5nIG9iamVjdHMiLCAxKSwKLQkJT1BUX1NFVF9JTlQoIDAgLCAiYmF0Y2giLCAmaXNfYmF0Y2hfbW9kZSwgImFsbG93IGNyZWF0aW9uIG9mIG1vcmUgdGhhbiBvbmUgdHJlZSIsIDEpLAorCQlPUFRfU0VUX0lOVCgneicsIE5VTEwsICZsaW5lX3Rlcm1pbmF0aW9uLCBOXygiaW5wdXQgaXMgTlVMIHRlcm1pbmF0ZWQiKSwgJ1wwJyksCisJCU9QVF9TRVRfSU5UKCAwICwgIm1pc3NpbmciLCAmYWxsb3dfbWlzc2luZywgTl8oImFsbG93IG1pc3Npbmcgb2JqZWN0cyIpLCAxKSwKKwkJT1BUX1NFVF9JTlQoIDAgLCAiYmF0Y2giLCAmaXNfYmF0Y2hfbW9kZSwgTl8oImFsbG93IGNyZWF0aW9uIG9mIG1vcmUgdGhhbiBvbmUgdHJlZSIpLCAxKSwKIAkJT1BUX0VORCgpCiAJfTsKIApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9tdi5jIGIvYnVpbHRpbi9tdi5jCmluZGV4IDJhMTQ0YjAuLjAzNGZlYzkgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbXYuYworKysgYi9idWlsdGluL212LmMKQEAgLTExLDcgKzExLDcgQEAKICNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9tdl91c2FnZVtdID0gewotCSJnaXQgbXYgW29wdGlvbnNdIDxzb3VyY2U+Li4uIDxkZXN0aW5hdGlvbj4iLAorCU5fKCJnaXQgbXYgW29wdGlvbnNdIDxzb3VyY2U+Li4uIDxkZXN0aW5hdGlvbj4iKSwKIAlOVUxMCiB9OwogCkBAIC01OSwxMCArNTksMTAgQEAKIAlpbnQgaSwgbmV3ZmQ7CiAJaW50IHZlcmJvc2UgPSAwLCBzaG93X29ubHkgPSAwLCBmb3JjZSA9IDAsIGlnbm9yZV9lcnJvcnMgPSAwOwogCXN0cnVjdCBvcHRpb24gYnVpbHRpbl9tdl9vcHRpb25zW10gPSB7Ci0JCU9QVF9fVkVSQk9TRSgmdmVyYm9zZSwgImJlIHZlcmJvc2UiKSwKLQkJT1BUX19EUllfUlVOKCZzaG93X29ubHksICJkcnkgcnVuIiksCi0JCU9QVF9fRk9SQ0UoJmZvcmNlLCAiZm9yY2UgbW92ZS9yZW5hbWUgZXZlbiBpZiB0YXJnZXQgZXhpc3RzIiksCi0JCU9QVF9CT09MRUFOKCdrJywgTlVMTCwgJmlnbm9yZV9lcnJvcnMsICJza2lwIG1vdmUvcmVuYW1lIGVycm9ycyIpLAorCQlPUFRfX1ZFUkJPU0UoJnZlcmJvc2UsIE5fKCJiZSB2ZXJib3NlIikpLAorCQlPUFRfX0RSWV9SVU4oJnNob3dfb25seSwgTl8oImRyeSBydW4iKSksCisJCU9QVF9fRk9SQ0UoJmZvcmNlLCBOXygiZm9yY2UgbW92ZS9yZW5hbWUgZXZlbiBpZiB0YXJnZXQgZXhpc3RzIikpLAorCQlPUFRfQk9PTEVBTignaycsIE5VTEwsICZpZ25vcmVfZXJyb3JzLCBOXygic2tpcCBtb3ZlL3JlbmFtZSBlcnJvcnMiKSksCiAJCU9QVF9FTkQoKSwKIAl9OwogCWNvbnN0IGNoYXIgKipzb3VyY2UsICoqZGVzdGluYXRpb24sICoqZGVzdF9wYXRoOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9uYW1lLXJldi5jIGIvYnVpbHRpbi9uYW1lLXJldi5jCmluZGV4IDFiMzc0NTguLjYyMzgyNDcgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbmFtZS1yZXYuYworKysgYi9idWlsdGluL25hbWUtcmV2LmMKQEAgLTE3Miw5ICsxNzIsOSBAQAogfQogCiBzdGF0aWMgY2hhciBjb25zdCAqIGNvbnN0IG5hbWVfcmV2X3VzYWdlW10gPSB7Ci0JImdpdCBuYW1lLXJldiBbb3B0aW9uc10gPGNvbW1pdD4uLi4iLAotCSJnaXQgbmFtZS1yZXYgW29wdGlvbnNdIC0tYWxsIiwKLQkiZ2l0IG5hbWUtcmV2IFtvcHRpb25zXSAtLXN0ZGluIiwKKwlOXygiZ2l0IG5hbWUtcmV2IFtvcHRpb25zXSA8Y29tbWl0Pi4uLiIpLAorCU5fKCJnaXQgbmFtZS1yZXYgW29wdGlvbnNdIC0tYWxsIiksCisJTl8oImdpdCBuYW1lLXJldiBbb3B0aW9uc10gLS1zdGRpbiIpLAogCU5VTEwKIH07CiAKQEAgLTIyNiwxNiArMjI2LDE2IEBACiAJaW50IGFsbCA9IDAsIHRyYW5zZm9ybV9zdGRpbiA9IDAsIGFsbG93X3VuZGVmaW5lZCA9IDEsIGFsd2F5cyA9IDA7CiAJc3RydWN0IG5hbWVfcmVmX2RhdGEgZGF0YSA9IHsgMCwgMCwgTlVMTCB9OwogCXN0cnVjdCBvcHRpb24gb3B0c1tdID0gewotCQlPUFRfQk9PTEVBTigwLCAibmFtZS1vbmx5IiwgJmRhdGEubmFtZV9vbmx5LCAicHJpbnQgb25seSBuYW1lcyAobm8gU0hBLTEpIiksCi0JCU9QVF9CT09MRUFOKDAsICJ0YWdzIiwgJmRhdGEudGFnc19vbmx5LCAib25seSB1c2UgdGFncyB0byBuYW1lIHRoZSBjb21taXRzIiksCi0JCU9QVF9TVFJJTkcoMCwgInJlZnMiLCAmZGF0YS5yZWZfZmlsdGVyLCAicGF0dGVybiIsCi0JCQkJICAgIm9ubHkgdXNlIHJlZnMgbWF0Y2hpbmcgPHBhdHRlcm4+IiksCisJCU9QVF9CT09MRUFOKDAsICJuYW1lLW9ubHkiLCAmZGF0YS5uYW1lX29ubHksIE5fKCJwcmludCBvbmx5IG5hbWVzIChubyBTSEEtMSkiKSksCisJCU9QVF9CT09MRUFOKDAsICJ0YWdzIiwgJmRhdGEudGFnc19vbmx5LCBOXygib25seSB1c2UgdGFncyB0byBuYW1lIHRoZSBjb21taXRzIikpLAorCQlPUFRfU1RSSU5HKDAsICJyZWZzIiwgJmRhdGEucmVmX2ZpbHRlciwgTl8oInBhdHRlcm4iKSwKKwkJCQkgICBOXygib25seSB1c2UgcmVmcyBtYXRjaGluZyA8cGF0dGVybj4iKSksCiAJCU9QVF9HUk9VUCgiIiksCi0JCU9QVF9CT09MRUFOKDAsICJhbGwiLCAmYWxsLCAibGlzdCBhbGwgY29tbWl0cyByZWFjaGFibGUgZnJvbSBhbGwgcmVmcyIpLAotCQlPUFRfQk9PTEVBTigwLCAic3RkaW4iLCAmdHJhbnNmb3JtX3N0ZGluLCAicmVhZCBmcm9tIHN0ZGluIiksCi0JCU9QVF9CT09MRUFOKDAsICJ1bmRlZmluZWQiLCAmYWxsb3dfdW5kZWZpbmVkLCAiYWxsb3cgdG8gcHJpbnQgYHVuZGVmaW5lZGAgbmFtZXMiKSwKKwkJT1BUX0JPT0xFQU4oMCwgImFsbCIsICZhbGwsIE5fKCJsaXN0IGFsbCBjb21taXRzIHJlYWNoYWJsZSBmcm9tIGFsbCByZWZzIikpLAorCQlPUFRfQk9PTEVBTigwLCAic3RkaW4iLCAmdHJhbnNmb3JtX3N0ZGluLCBOXygicmVhZCBmcm9tIHN0ZGluIikpLAorCQlPUFRfQk9PTEVBTigwLCAidW5kZWZpbmVkIiwgJmFsbG93X3VuZGVmaW5lZCwgTl8oImFsbG93IHRvIHByaW50IGB1bmRlZmluZWRgIG5hbWVzIikpLAogCQlPUFRfQk9PTEVBTigwLCAiYWx3YXlzIiwgICAgICZhbHdheXMsCi0JCQkgICAic2hvdyBhYmJyZXZpYXRlZCBjb21taXQgb2JqZWN0IGFzIGZhbGxiYWNrIiksCisJCQkgICBOXygic2hvdyBhYmJyZXZpYXRlZCBjb21taXQgb2JqZWN0IGFzIGZhbGxiYWNrIikpLAogCQlPUFRfRU5EKCksCiAJfTsKIApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9ub3Rlcy5jIGIvYnVpbHRpbi9ub3Rlcy5jCmluZGV4IDM2NDRkMTQuLjU3NzQ4YTYgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbm90ZXMuYworKysgYi9idWlsdGluL25vdGVzLmMKQEAgLTE5LDgwICsxOSw4MCBAQAogI2luY2x1ZGUgInN0cmluZy1saXN0LmgiCiAjaW5jbHVkZSAibm90ZXMtbWVyZ2UuaCIKIAorc3RhdGljIHZvaWQgY29tbWl0X25vdGVzKHN0cnVjdCBub3Rlc190cmVlICp0LCBjb25zdCBjaGFyICptc2cpOworc3RhdGljIGNvbWJpbmVfbm90ZXNfZm4gcGFyc2VfY29tYmluZV9ub3Rlc19mbihjb25zdCBjaGFyICp2KTsKKwogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBnaXRfbm90ZXNfdXNhZ2VbXSA9IHsKLQkiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gW2xpc3QgWzxvYmplY3Q+XV0iLAotCSJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBhZGQgWy1mXSBbLW0gPG1zZz4gfCAtRiA8ZmlsZT4gfCAoLWMgfCAtQykgPG9iamVjdD5dIFs8b2JqZWN0Pl0iLAotCSJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBjb3B5IFstZl0gPGZyb20tb2JqZWN0PiA8dG8tb2JqZWN0PiIsCi0JImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGFwcGVuZCBbLW0gPG1zZz4gfCAtRiA8ZmlsZT4gfCAoLWMgfCAtQykgPG9iamVjdD5dIFs8b2JqZWN0Pl0iLAotCSJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBlZGl0IFs8b2JqZWN0Pl0iLAotCSJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBzaG93IFs8b2JqZWN0Pl0iLAotCSJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBtZXJnZSBbLXYgfCAtcV0gWy1zIDxzdHJhdGVneT4gXSA8bm90ZXNfcmVmPiIsCi0JImdpdCBub3RlcyBtZXJnZSAtLWNvbW1pdCBbLXYgfCAtcV0iLAotCSJnaXQgbm90ZXMgbWVyZ2UgLS1hYm9ydCBbLXYgfCAtcV0iLAotCSJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSByZW1vdmUgWzxvYmplY3Q+Li4uXSIsCi0JImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHBydW5lIFstbiB8IC12XSIsCi0JImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGdldC1yZWYiLAorCU5fKCJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBbbGlzdCBbPG9iamVjdD5dXSIpLAorCU5fKCJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBhZGQgWy1mXSBbLW0gPG1zZz4gfCAtRiA8ZmlsZT4gfCAoLWMgfCAtQykgPG9iamVjdD5dIFs8b2JqZWN0Pl0iKSwKKwlOXygiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gY29weSBbLWZdIDxmcm9tLW9iamVjdD4gPHRvLW9iamVjdD4iKSwKKwlOXygiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gYXBwZW5kIFstbSA8bXNnPiB8IC1GIDxmaWxlPiB8ICgtYyB8IC1DKSA8b2JqZWN0Pl0gWzxvYmplY3Q+XSIpLAorCU5fKCJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBlZGl0IFs8b2JqZWN0Pl0iKSwKKwlOXygiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gc2hvdyBbPG9iamVjdD5dIiksCisJTl8oImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIG1lcmdlIFstdiB8IC1xXSBbLXMgPHN0cmF0ZWd5PiBdIDxub3Rlc19yZWY+IiksCisJTl8oImdpdCBub3RlcyBtZXJnZSAtLWNvbW1pdCBbLXYgfCAtcV0iKSwKKwlOXygiZ2l0IG5vdGVzIG1lcmdlIC0tYWJvcnQgWy12IHwgLXFdIiksCisJTl8oImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHJlbW92ZSBbPG9iamVjdD4uLi5dIiksCisJTl8oImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHBydW5lIFstbiB8IC12XSIpLAorCU5fKCJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBnZXQtcmVmIiksCiAJTlVMTAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBnaXRfbm90ZXNfbGlzdF91c2FnZVtdID0gewotCSJnaXQgbm90ZXMgW2xpc3QgWzxvYmplY3Q+XV0iLAorCU5fKCJnaXQgbm90ZXMgW2xpc3QgWzxvYmplY3Q+XV0iKSwKIAlOVUxMCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGdpdF9ub3Rlc19hZGRfdXNhZ2VbXSA9IHsKLQkiZ2l0IG5vdGVzIGFkZCBbPG9wdGlvbnM+XSBbPG9iamVjdD5dIiwKKwlOXygiZ2l0IG5vdGVzIGFkZCBbPG9wdGlvbnM+XSBbPG9iamVjdD5dIiksCiAJTlVMTAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBnaXRfbm90ZXNfY29weV91c2FnZVtdID0gewotCSJnaXQgbm90ZXMgY29weSBbPG9wdGlvbnM+XSA8ZnJvbS1vYmplY3Q+IDx0by1vYmplY3Q+IiwKLQkiZ2l0IG5vdGVzIGNvcHkgLS1zdGRpbiBbPGZyb20tb2JqZWN0PiA8dG8tb2JqZWN0Pl0uLi4iLAorCU5fKCJnaXQgbm90ZXMgY29weSBbPG9wdGlvbnM+XSA8ZnJvbS1vYmplY3Q+IDx0by1vYmplY3Q+IiksCisJTl8oImdpdCBub3RlcyBjb3B5IC0tc3RkaW4gWzxmcm9tLW9iamVjdD4gPHRvLW9iamVjdD5dLi4uIiksCiAJTlVMTAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBnaXRfbm90ZXNfYXBwZW5kX3VzYWdlW10gPSB7Ci0JImdpdCBub3RlcyBhcHBlbmQgWzxvcHRpb25zPl0gWzxvYmplY3Q+XSIsCisJTl8oImdpdCBub3RlcyBhcHBlbmQgWzxvcHRpb25zPl0gWzxvYmplY3Q+XSIpLAogCU5VTEwKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZ2l0X25vdGVzX2VkaXRfdXNhZ2VbXSA9IHsKLQkiZ2l0IG5vdGVzIGVkaXQgWzxvYmplY3Q+XSIsCisJTl8oImdpdCBub3RlcyBlZGl0IFs8b2JqZWN0Pl0iKSwKIAlOVUxMCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGdpdF9ub3Rlc19zaG93X3VzYWdlW10gPSB7Ci0JImdpdCBub3RlcyBzaG93IFs8b2JqZWN0Pl0iLAorCU5fKCJnaXQgbm90ZXMgc2hvdyBbPG9iamVjdD5dIiksCiAJTlVMTAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBnaXRfbm90ZXNfbWVyZ2VfdXNhZ2VbXSA9IHsKLQkiZ2l0IG5vdGVzIG1lcmdlIFs8b3B0aW9ucz5dIDxub3Rlc19yZWY+IiwKLQkiZ2l0IG5vdGVzIG1lcmdlIC0tY29tbWl0IFs8b3B0aW9ucz5dIiwKLQkiZ2l0IG5vdGVzIG1lcmdlIC0tYWJvcnQgWzxvcHRpb25zPl0iLAorCU5fKCJnaXQgbm90ZXMgbWVyZ2UgWzxvcHRpb25zPl0gPG5vdGVzX3JlZj4iKSwKKwlOXygiZ2l0IG5vdGVzIG1lcmdlIC0tY29tbWl0IFs8b3B0aW9ucz5dIiksCisJTl8oImdpdCBub3RlcyBtZXJnZSAtLWFib3J0IFs8b3B0aW9ucz5dIiksCiAJTlVMTAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBnaXRfbm90ZXNfcmVtb3ZlX3VzYWdlW10gPSB7Ci0JImdpdCBub3RlcyByZW1vdmUgWzxvYmplY3Q+XSIsCisJTl8oImdpdCBub3RlcyByZW1vdmUgWzxvYmplY3Q+XSIpLAogCU5VTEwKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZ2l0X25vdGVzX3BydW5lX3VzYWdlW10gPSB7Ci0JImdpdCBub3RlcyBwcnVuZSBbPG9wdGlvbnM+XSIsCisJTl8oImdpdCBub3RlcyBwcnVuZSBbPG9wdGlvbnM+XSIpLAogCU5VTEwKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZ2l0X25vdGVzX2dldF9yZWZfdXNhZ2VbXSA9IHsKLQkiZ2l0IG5vdGVzIGdldC1yZWYiLAorCU5fKCJnaXQgbm90ZXMgZ2V0LXJlZiIpLAogCU5VTEwKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyIG5vdGVfdGVtcGxhdGVbXSA9Ci0JIlxuIgotCSIjXG4iCi0JIiMgV3JpdGUvZWRpdCB0aGUgbm90ZXMgZm9yIHRoZSBmb2xsb3dpbmcgb2JqZWN0OlxuIgotCSIjXG4iOworCSJcbldyaXRlL2VkaXQgdGhlIG5vdGVzIGZvciB0aGUgZm9sbG93aW5nIG9iamVjdDpcbiI7CiAKIHN0cnVjdCBtc2dfYXJnIHsKIAlpbnQgZ2l2ZW47CkBAIC0xMjYsNyArMTI2LDcgQEAKIAkJeyJzaG93IiwgIi0tc3RhdCIsICItLW5vLW5vdGVzIiwgc2hhMV90b19oZXgob2JqZWN0KSwgTlVMTH07CiAJc3RydWN0IGNoaWxkX3Byb2Nlc3Mgc2hvdzsKIAlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwotCUZJTEUgKnNob3dfb3V0OworCXN0cnVjdCBzdHJidWYgY2J1ZiA9IFNUUkJVRl9JTklUOwogCiAJLyogSW52b2tlICJnaXQgc2hvdyAtLXN0YXQgLS1uby1ub3RlcyAkb2JqZWN0IiAqLwogCW1lbXNldCgmc2hvdywgMCwgc2l6ZW9mKHNob3cpKTsKQEAgLTEzOSwyMSArMTM5LDE0IEBACiAJCWRpZShfKCJ1bmFibGUgdG8gc3RhcnQgJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIpLAogCQkgICAgc2hhMV90b19oZXgob2JqZWN0KSk7CiAKLQkvKiBPcGVuIHRoZSBvdXRwdXQgYXMgRklMRSogc28gc3RyYnVmX2dldGxpbmUoKSBjYW4gYmUgdXNlZC4gKi8KLQlzaG93X291dCA9IHhmZG9wZW4oc2hvdy5vdXQsICJyIik7Ci0JaWYgKHNob3dfb3V0ID09IE5VTEwpCi0JCWRpZV9lcnJubyhfKCJjYW4ndCBmZG9wZW4gJ3Nob3cnIG91dHB1dCBmZCIpKTsKKwlpZiAoc3RyYnVmX3JlYWQoJmJ1Ziwgc2hvdy5vdXQsIDApIDwgMCkKKwkJZGllX2Vycm5vKF8oImNvdWxkIG5vdCByZWFkICdzaG93JyBvdXRwdXQiKSk7CisJc3RyYnVmX2FkZF9jb21tZW50ZWRfbGluZXMoJmNidWYsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworCXdyaXRlX29yX2RpZShmZCwgY2J1Zi5idWYsIGNidWYubGVuKTsKIAotCS8qIFByZXBlbmQgIiMgIiB0byBlYWNoIG91dHB1dCBsaW5lIGFuZCB3cml0ZSByZXN1bHQgdG8gJ2ZkJyAqLwotCXdoaWxlIChzdHJidWZfZ2V0bGluZSgmYnVmLCBzaG93X291dCwgJ1xuJykgIT0gRU9GKSB7Ci0JCXdyaXRlX29yX2RpZShmZCwgIiMgIiwgMik7Ci0JCXdyaXRlX29yX2RpZShmZCwgYnVmLmJ1ZiwgYnVmLmxlbik7Ci0JCXdyaXRlX29yX2RpZShmZCwgIlxuIiwgMSk7Ci0JfQorCXN0cmJ1Zl9yZWxlYXNlKCZjYnVmKTsKIAlzdHJidWZfcmVsZWFzZSgmYnVmKTsKLQlpZiAoZmNsb3NlKHNob3dfb3V0KSkKLQkJZGllX2Vycm5vKF8oImZhaWxlZCB0byBjbG9zZSBwaXBlIHRvICdzaG93JyBmb3Igb2JqZWN0ICclcyciKSwKLQkJCSAgc2hhMV90b19oZXgob2JqZWN0KSk7CisKIAlpZiAoZmluaXNoX2NvbW1hbmQoJnNob3cpKQogCQlkaWUoXygiZmFpbGVkIHRvIGZpbmlzaCAnc2hvdycgZm9yIG9iamVjdCAnJXMnIiksCiAJCSAgICBzaGExX3RvX2hleChvYmplY3QpKTsKQEAgLTE2Nyw2ICsxNjAsNyBAQAogCiAJaWYgKG1zZy0+dXNlX2VkaXRvciB8fCAhbXNnLT5naXZlbikgewogCQlpbnQgZmQ7CisJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAKIAkJLyogd3JpdGUgdGhlIHRlbXBsYXRlIG1lc3NhZ2UgYmVmb3JlIGVkaXRpbmc6ICovCiAJCXBhdGggPSBnaXRfcGF0aGR1cCgiTk9URVNfRURJVE1TRyIpOwpAQCAtMTc4LDExICsxNzIsMTYgQEAKIAkJCXdyaXRlX29yX2RpZShmZCwgbXNnLT5idWYuYnVmLCBtc2ctPmJ1Zi5sZW4pOwogCQllbHNlIGlmIChwcmV2ICYmICFhcHBlbmRfb25seSkKIAkJCXdyaXRlX25vdGVfZGF0YShmZCwgcHJldik7Ci0JCXdyaXRlX29yX2RpZShmZCwgbm90ZV90ZW1wbGF0ZSwgc3RybGVuKG5vdGVfdGVtcGxhdGUpKTsKKworCQlzdHJidWZfYWRkY2goJmJ1ZiwgJ1xuJyk7CisJCXN0cmJ1Zl9hZGRfY29tbWVudGVkX2xpbmVzKCZidWYsIG5vdGVfdGVtcGxhdGUsIHN0cmxlbihub3RlX3RlbXBsYXRlKSk7CisJCXN0cmJ1Zl9hZGRjaCgmYnVmLCAnXG4nKTsKKwkJd3JpdGVfb3JfZGllKGZkLCBidWYuYnVmLCBidWYubGVuKTsKIAogCQl3cml0ZV9jb21tZW50ZWRfb2JqZWN0KGZkLCBvYmplY3QpOwogCiAJCWNsb3NlKGZkKTsKKwkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CiAJCXN0cmJ1Zl9yZXNldCgmKG1zZy0+YnVmKSk7CiAKIAkJaWYgKGxhdW5jaF9lZGl0b3IocGF0aCwgJihtc2ctPmJ1ZiksIE5VTEwpKSB7CkBAIC0yODgsNyArMjg3LDcgQEAKIAlyZXR1cm4gcGFyc2VfcmV1c2VfYXJnKG9wdCwgYXJnLCB1bnNldCk7CiB9CiAKLXZvaWQgY29tbWl0X25vdGVzKHN0cnVjdCBub3Rlc190cmVlICp0LCBjb25zdCBjaGFyICptc2cpCitzdGF0aWMgdm9pZCBjb21taXRfbm90ZXMoc3RydWN0IG5vdGVzX3RyZWUgKnQsIGNvbnN0IGNoYXIgKm1zZykKIHsKIAlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCXVuc2lnbmVkIGNoYXIgY29tbWl0X3NoYTFbMjBdOwpAQCAtMzEyLDcgKzMxMSw3IEBACiAJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CiB9CiAKLWNvbWJpbmVfbm90ZXNfZm4gcGFyc2VfY29tYmluZV9ub3Rlc19mbihjb25zdCBjaGFyICp2KQorc3RhdGljIGNvbWJpbmVfbm90ZXNfZm4gcGFyc2VfY29tYmluZV9ub3Rlc19mbihjb25zdCBjaGFyICp2KQogewogCWlmICghc3RyY2FzZWNtcCh2LCAib3ZlcndyaXRlIikpCiAJCXJldHVybiBjb21iaW5lX25vdGVzX292ZXJ3cml0ZTsKQEAgLTUzMSwxOSArNTMwLDE5IEBACiAJY29uc3QgdW5zaWduZWQgY2hhciAqbm90ZTsKIAlzdHJ1Y3QgbXNnX2FyZyBtc2cgPSB7IDAsIDAsIFNUUkJVRl9JTklUIH07CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCXsgT1BUSU9OX0NBTExCQUNLLCAnbScsICJtZXNzYWdlIiwgJm1zZywgIm1zZyIsCi0JCQkibm90ZSBjb250ZW50cyBhcyBhIHN0cmluZyIsIFBBUlNFX09QVF9OT05FRywKKwkJeyBPUFRJT05fQ0FMTEJBQ0ssICdtJywgIm1lc3NhZ2UiLCAmbXNnLCBOXygibWVzc2FnZSIpLAorCQkJTl8oIm5vdGUgY29udGVudHMgYXMgYSBzdHJpbmciKSwgUEFSU0VfT1BUX05PTkVHLAogCQkJcGFyc2VfbXNnX2FyZ30sCi0JCXsgT1BUSU9OX0NBTExCQUNLLCAnRicsICJmaWxlIiwgJm1zZywgImZpbGUiLAotCQkJIm5vdGUgY29udGVudHMgaW4gYSBmaWxlIiwgUEFSU0VfT1BUX05PTkVHLAorCQl7IE9QVElPTl9DQUxMQkFDSywgJ0YnLCAiZmlsZSIsICZtc2csIE5fKCJmaWxlIiksCisJCQlOXygibm90ZSBjb250ZW50cyBpbiBhIGZpbGUiKSwgUEFSU0VfT1BUX05PTkVHLAogCQkJcGFyc2VfZmlsZV9hcmd9LAotCQl7IE9QVElPTl9DQUxMQkFDSywgJ2MnLCAicmVlZGl0LW1lc3NhZ2UiLCAmbXNnLCAib2JqZWN0IiwKLQkJCSJyZXVzZSBhbmQgZWRpdCBzcGVjaWZpZWQgbm90ZSBvYmplY3QiLCBQQVJTRV9PUFRfTk9ORUcsCisJCXsgT1BUSU9OX0NBTExCQUNLLCAnYycsICJyZWVkaXQtbWVzc2FnZSIsICZtc2csIE5fKCJvYmplY3QiKSwKKwkJCU5fKCJyZXVzZSBhbmQgZWRpdCBzcGVjaWZpZWQgbm90ZSBvYmplY3QiKSwgUEFSU0VfT1BUX05PTkVHLAogCQkJcGFyc2VfcmVlZGl0X2FyZ30sCi0JCXsgT1BUSU9OX0NBTExCQUNLLCAnQycsICJyZXVzZS1tZXNzYWdlIiwgJm1zZywgIm9iamVjdCIsCi0JCQkicmV1c2Ugc3BlY2lmaWVkIG5vdGUgb2JqZWN0IiwgUEFSU0VfT1BUX05PTkVHLAorCQl7IE9QVElPTl9DQUxMQkFDSywgJ0MnLCAicmV1c2UtbWVzc2FnZSIsICZtc2csIE5fKCJvYmplY3QiKSwKKwkJCU5fKCJyZXVzZSBzcGVjaWZpZWQgbm90ZSBvYmplY3QiKSwgUEFSU0VfT1BUX05PTkVHLAogCQkJcGFyc2VfcmV1c2VfYXJnfSwKLQkJT1BUX19GT1JDRSgmZm9yY2UsICJyZXBsYWNlIGV4aXN0aW5nIG5vdGVzIiksCisJCU9QVF9fRk9SQ0UoJmZvcmNlLCBOXygicmVwbGFjZSBleGlzdGluZyBub3RlcyIpKSwKIAkJT1BUX0VORCgpCiAJfTsKIApAQCAtNjExLDExICs2MTAsMTEgQEAKIAlzdHJ1Y3Qgbm90ZXNfdHJlZSAqdDsKIAljb25zdCBjaGFyICpyZXdyaXRlX2NtZCA9IE5VTEw7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCU9QVF9fRk9SQ0UoJmZvcmNlLCAicmVwbGFjZSBleGlzdGluZyBub3RlcyIpLAotCQlPUFRfQk9PTEVBTigwLCAic3RkaW4iLCAmZnJvbV9zdGRpbiwgInJlYWQgb2JqZWN0cyBmcm9tIHN0ZGluIiksCi0JCU9QVF9TVFJJTkcoMCwgImZvci1yZXdyaXRlIiwgJnJld3JpdGVfY21kLCAiY29tbWFuZCIsCi0JCQkgICAibG9hZCByZXdyaXRpbmcgY29uZmlnIGZvciA8Y29tbWFuZD4gKGltcGxpZXMgIgotCQkJICAgIi0tc3RkaW4pIiksCisJCU9QVF9fRk9SQ0UoJmZvcmNlLCBOXygicmVwbGFjZSBleGlzdGluZyBub3RlcyIpKSwKKwkJT1BUX0JPT0xFQU4oMCwgInN0ZGluIiwgJmZyb21fc3RkaW4sIE5fKCJyZWFkIG9iamVjdHMgZnJvbSBzdGRpbiIpKSwKKwkJT1BUX1NUUklORygwLCAiZm9yLXJld3JpdGUiLCAmcmV3cml0ZV9jbWQsIE5fKCJjb21tYW5kIiksCisJCQkgICBOXygibG9hZCByZXdyaXRpbmcgY29uZmlnIGZvciA8Y29tbWFuZD4gKGltcGxpZXMgIgorCQkJICAgICAgIi0tc3RkaW4pIikpLAogCQlPUFRfRU5EKCkKIAl9OwogCkBAIC02ODgsMTcgKzY4NywxNyBAQAogCWNvbnN0IGNoYXIgKiBjb25zdCAqdXNhZ2U7CiAJc3RydWN0IG1zZ19hcmcgbXNnID0geyAwLCAwLCBTVFJCVUZfSU5JVCB9OwogCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewotCQl7IE9QVElPTl9DQUxMQkFDSywgJ20nLCAibWVzc2FnZSIsICZtc2csICJtc2ciLAotCQkJIm5vdGUgY29udGVudHMgYXMgYSBzdHJpbmciLCBQQVJTRV9PUFRfTk9ORUcsCisJCXsgT1BUSU9OX0NBTExCQUNLLCAnbScsICJtZXNzYWdlIiwgJm1zZywgTl8oIm1lc3NhZ2UiKSwKKwkJCU5fKCJub3RlIGNvbnRlbnRzIGFzIGEgc3RyaW5nIiksIFBBUlNFX09QVF9OT05FRywKIAkJCXBhcnNlX21zZ19hcmd9LAotCQl7IE9QVElPTl9DQUxMQkFDSywgJ0YnLCAiZmlsZSIsICZtc2csICJmaWxlIiwKLQkJCSJub3RlIGNvbnRlbnRzIGluIGEgZmlsZSIsIFBBUlNFX09QVF9OT05FRywKKwkJeyBPUFRJT05fQ0FMTEJBQ0ssICdGJywgImZpbGUiLCAmbXNnLCBOXygiZmlsZSIpLAorCQkJTl8oIm5vdGUgY29udGVudHMgaW4gYSBmaWxlIiksIFBBUlNFX09QVF9OT05FRywKIAkJCXBhcnNlX2ZpbGVfYXJnfSwKLQkJeyBPUFRJT05fQ0FMTEJBQ0ssICdjJywgInJlZWRpdC1tZXNzYWdlIiwgJm1zZywgIm9iamVjdCIsCi0JCQkicmV1c2UgYW5kIGVkaXQgc3BlY2lmaWVkIG5vdGUgb2JqZWN0IiwgUEFSU0VfT1BUX05PTkVHLAorCQl7IE9QVElPTl9DQUxMQkFDSywgJ2MnLCAicmVlZGl0LW1lc3NhZ2UiLCAmbXNnLCBOXygib2JqZWN0IiksCisJCQlOXygicmV1c2UgYW5kIGVkaXQgc3BlY2lmaWVkIG5vdGUgb2JqZWN0IiksIFBBUlNFX09QVF9OT05FRywKIAkJCXBhcnNlX3JlZWRpdF9hcmd9LAotCQl7IE9QVElPTl9DQUxMQkFDSywgJ0MnLCAicmV1c2UtbWVzc2FnZSIsICZtc2csICJvYmplY3QiLAotCQkJInJldXNlIHNwZWNpZmllZCBub3RlIG9iamVjdCIsIFBBUlNFX09QVF9OT05FRywKKwkJeyBPUFRJT05fQ0FMTEJBQ0ssICdDJywgInJldXNlLW1lc3NhZ2UiLCAmbXNnLCBOXygib2JqZWN0IiksCisJCQlOXygicmV1c2Ugc3BlY2lmaWVkIG5vdGUgb2JqZWN0IiksIFBBUlNFX09QVF9OT05FRywKIAkJCXBhcnNlX3JldXNlX2FyZ30sCiAJCU9QVF9FTkQoKQogCX07CkBAIC04NjEsMTkgKzg2MCwxOSBAQAogCWludCB2ZXJib3NpdHkgPSAwLCByZXN1bHQ7CiAJY29uc3QgY2hhciAqc3RyYXRlZ3kgPSBOVUxMOwogCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewotCQlPUFRfR1JPVVAoIkdlbmVyYWwgb3B0aW9ucyIpLAorCQlPUFRfR1JPVVAoTl8oIkdlbmVyYWwgb3B0aW9ucyIpKSwKIAkJT1BUX19WRVJCT1NJVFkoJnZlcmJvc2l0eSksCi0JCU9QVF9HUk9VUCgiTWVyZ2Ugb3B0aW9ucyIpLAotCQlPUFRfU1RSSU5HKCdzJywgInN0cmF0ZWd5IiwgJnN0cmF0ZWd5LCAic3RyYXRlZ3kiLAotCQkJICAgInJlc29sdmUgbm90ZXMgY29uZmxpY3RzIHVzaW5nIHRoZSBnaXZlbiBzdHJhdGVneSAiCi0JCQkgICAiKG1hbnVhbC9vdXJzL3RoZWlycy91bmlvbi9jYXRfc29ydF91bmlxKSIpLAotCQlPUFRfR1JPVVAoIkNvbW1pdHRpbmcgdW5tZXJnZWQgbm90ZXMiKSwKKwkJT1BUX0dST1VQKE5fKCJNZXJnZSBvcHRpb25zIikpLAorCQlPUFRfU1RSSU5HKCdzJywgInN0cmF0ZWd5IiwgJnN0cmF0ZWd5LCBOXygic3RyYXRlZ3kiKSwKKwkJCSAgIE5fKCJyZXNvbHZlIG5vdGVzIGNvbmZsaWN0cyB1c2luZyB0aGUgZ2l2ZW4gc3RyYXRlZ3kgIgorCQkJICAgICAgIihtYW51YWwvb3Vycy90aGVpcnMvdW5pb24vY2F0X3NvcnRfdW5pcSkiKSksCisJCU9QVF9HUk9VUChOXygiQ29tbWl0dGluZyB1bm1lcmdlZCBub3RlcyIpKSwKIAkJeyBPUFRJT05fQk9PTEVBTiwgMCwgImNvbW1pdCIsICZkb19jb21taXQsIE5VTEwsCi0JCQkiZmluYWxpemUgbm90ZXMgbWVyZ2UgYnkgY29tbWl0dGluZyB1bm1lcmdlZCBub3RlcyIsCisJCQlOXygiZmluYWxpemUgbm90ZXMgbWVyZ2UgYnkgY29tbWl0dGluZyB1bm1lcmdlZCBub3RlcyIpLAogCQkJUEFSU0VfT1BUX05PQVJHIHwgUEFSU0VfT1BUX05PTkVHIH0sCi0JCU9QVF9HUk9VUCgiQWJvcnRpbmcgbm90ZXMgbWVyZ2UgcmVzb2x1dGlvbiIpLAorCQlPUFRfR1JPVVAoTl8oIkFib3J0aW5nIG5vdGVzIG1lcmdlIHJlc29sdXRpb24iKSksCiAJCXsgT1BUSU9OX0JPT0xFQU4sIDAsICJhYm9ydCIsICZkb19hYm9ydCwgTlVMTCwKLQkJCSJhYm9ydCBub3RlcyBtZXJnZSIsCisJCQlOXygiYWJvcnQgbm90ZXMgbWVyZ2UiKSwKIAkJCVBBUlNFX09QVF9OT0FSRyB8IFBBUlNFX09QVF9OT05FRyB9LAogCQlPUFRfRU5EKCkKIAl9OwpAQCAtOTgwLDEwICs5NzksMTAgQEAKIAlpbnQgZnJvbV9zdGRpbiA9IDA7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7CiAJCU9QVF9CSVQoMCwgImlnbm9yZS1taXNzaW5nIiwgJmZsYWcsCi0JCQkiYXR0ZW1wdCB0byByZW1vdmUgbm9uLWV4aXN0ZW50IG5vdGUgaXMgbm90IGFuIGVycm9yIiwKKwkJCU5fKCJhdHRlbXB0IHRvIHJlbW92ZSBub24tZXhpc3RlbnQgbm90ZSBpcyBub3QgYW4gZXJyb3IiKSwKIAkJCUlHTk9SRV9NSVNTSU5HKSwKIAkJT1BUX0JPT0xFQU4oMCwgInN0ZGluIiwgJmZyb21fc3RkaW4sCi0JCQkgICAgInJlYWQgb2JqZWN0IG5hbWVzIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IiksCisJCQkgICAgTl8oInJlYWQgb2JqZWN0IG5hbWVzIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IikpLAogCQlPUFRfRU5EKCkKIAl9OwogCXN0cnVjdCBub3Rlc190cmVlICp0OwpAQCAtMTA2NCw4ICsxMDYzLDggQEAKIAlpbnQgcmVzdWx0OwogCWNvbnN0IGNoYXIgKm92ZXJyaWRlX25vdGVzX3JlZiA9IE5VTEw7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCU9QVF9TVFJJTkcoMCwgInJlZiIsICZvdmVycmlkZV9ub3Rlc19yZWYsICJub3Rlc19yZWYiLAotCQkJICAgInVzZSBub3RlcyBmcm9tIDxub3Rlc19yZWY+IiksCisJCU9QVF9TVFJJTkcoMCwgInJlZiIsICZvdmVycmlkZV9ub3Rlc19yZWYsIE5fKCJub3Rlc19yZWYiKSwKKwkJCSAgIE5fKCJ1c2Ugbm90ZXMgZnJvbSA8bm90ZXNfcmVmPiIpKSwKIAkJT1BUX0VORCgpCiAJfTsKIApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9wYWNrLW9iamVjdHMuYyBiL2J1aWx0aW4vcGFjay1vYmplY3RzLmMKaW5kZXggY2NmY2JhZC4uZjA2OTQ2MiAxMDA2NDQKLS0tIGEvYnVpbHRpbi9wYWNrLW9iamVjdHMuYworKysgYi9idWlsdGluL3BhY2stb2JqZWN0cy5jCkBAIC0xNiwxMSArMTYsMTIgQEAKICNpbmNsdWRlICJsaXN0LW9iamVjdHMuaCIKICNpbmNsdWRlICJwcm9ncmVzcy5oIgogI2luY2x1ZGUgInJlZnMuaCIKKyNpbmNsdWRlICJzdHJlYW1pbmcuaCIKICNpbmNsdWRlICJ0aHJlYWQtdXRpbHMuaCIKIAogc3RhdGljIGNvbnN0IGNoYXIgKnBhY2tfdXNhZ2VbXSA9IHsKLQkiZ2l0IHBhY2stb2JqZWN0cyAtLXN0ZG91dCBbb3B0aW9ucy4uLl0gWzwgcmVmLWxpc3QgfCA8IG9iamVjdC1saXN0XSIsCi0JImdpdCBwYWNrLW9iamVjdHMgW29wdGlvbnMuLi5dIGJhc2UtbmFtZSBbPCByZWYtbGlzdCB8IDwgb2JqZWN0LWxpc3RdIiwKKwlOXygiZ2l0IHBhY2stb2JqZWN0cyAtLXN0ZG91dCBbb3B0aW9ucy4uLl0gWzwgcmVmLWxpc3QgfCA8IG9iamVjdC1saXN0XSIpLAorCU5fKCJnaXQgcGFjay1vYmplY3RzIFtvcHRpb25zLi4uXSBiYXNlLW5hbWUgWzwgcmVmLWxpc3QgfCA8IG9iamVjdC1saXN0XSIpLAogCU5VTEwKIH07CiAKQEAgLTE1MCw2ICsxNTEsNDYgQEAKIAlyZXR1cm4gc3RyZWFtLnRvdGFsX291dDsKIH0KIAorc3RhdGljIHVuc2lnbmVkIGxvbmcgd3JpdGVfbGFyZ2VfYmxvYl9kYXRhKHN0cnVjdCBnaXRfaXN0cmVhbSAqc3QsIHN0cnVjdCBzaGExZmlsZSAqZiwKKwkJCQkJICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSkKK3sKKwlnaXRfenN0cmVhbSBzdHJlYW07CisJdW5zaWduZWQgY2hhciBpYnVmWzEwMjQgKiAxNl07CisJdW5zaWduZWQgY2hhciBvYnVmWzEwMjQgKiAxNl07CisJdW5zaWduZWQgbG9uZyBvbGVuID0gMDsKKworCW1lbXNldCgmc3RyZWFtLCAwLCBzaXplb2Yoc3RyZWFtKSk7CisJZ2l0X2RlZmxhdGVfaW5pdCgmc3RyZWFtLCBwYWNrX2NvbXByZXNzaW9uX2xldmVsKTsKKworCWZvciAoOzspIHsKKwkJc3NpemVfdCByZWFkbGVuOworCQlpbnQgenJldCA9IFpfT0s7CisJCXJlYWRsZW4gPSByZWFkX2lzdHJlYW0oc3QsIGlidWYsIHNpemVvZihpYnVmKSk7CisJCWlmIChyZWFkbGVuID09IC0xKQorCQkJZGllKF8oInVuYWJsZSB0byByZWFkICVzIiksIHNoYTFfdG9faGV4KHNoYTEpKTsKKworCQlzdHJlYW0ubmV4dF9pbiA9IGlidWY7CisJCXN0cmVhbS5hdmFpbF9pbiA9IHJlYWRsZW47CisJCXdoaWxlICgoc3RyZWFtLmF2YWlsX2luIHx8IHJlYWRsZW4gPT0gMCkgJiYKKwkJICAgICAgICh6cmV0ID09IFpfT0sgfHwgenJldCA9PSBaX0JVRl9FUlJPUikpIHsKKwkJCXN0cmVhbS5uZXh0X291dCA9IG9idWY7CisJCQlzdHJlYW0uYXZhaWxfb3V0ID0gc2l6ZW9mKG9idWYpOworCQkJenJldCA9IGdpdF9kZWZsYXRlKCZzdHJlYW0sIHJlYWRsZW4gPyAwIDogWl9GSU5JU0gpOworCQkJc2hhMXdyaXRlKGYsIG9idWYsIHN0cmVhbS5uZXh0X291dCAtIG9idWYpOworCQkJb2xlbiArPSBzdHJlYW0ubmV4dF9vdXQgLSBvYnVmOworCQl9CisJCWlmIChzdHJlYW0uYXZhaWxfaW4pCisJCQlkaWUoXygiZGVmbGF0ZSBlcnJvciAoJWQpIiksIHpyZXQpOworCQlpZiAocmVhZGxlbiA9PSAwKSB7CisJCQlpZiAoenJldCAhPSBaX1NUUkVBTV9FTkQpCisJCQkJZGllKF8oImRlZmxhdGUgZXJyb3IgKCVkKSIpLCB6cmV0KTsKKwkJCWJyZWFrOworCQl9CisJfQorCWdpdF9kZWZsYXRlX2VuZCgmc3RyZWFtKTsKKwlyZXR1cm4gb2xlbjsKK30KKwogLyoKICAqIHdlIGFyZSBnb2luZyB0byByZXVzZSB0aGUgZXhpc3Rpbmcgb2JqZWN0IGRhdGEgYXMgaXMuICBtYWtlCiAgKiBzdXJlIGl0IGlzIG5vdCBjb3JydXB0LgpAQCAtMjA4LDExICsyNDksMTggQEAKIAl1bnNpZ25lZCBoZHJsZW47CiAJZW51bSBvYmplY3RfdHlwZSB0eXBlOwogCXZvaWQgKmJ1ZjsKKwlzdHJ1Y3QgZ2l0X2lzdHJlYW0gKnN0ID0gTlVMTDsKIAogCWlmICghdXNhYmxlX2RlbHRhKSB7Ci0JCWJ1ZiA9IHJlYWRfc2hhMV9maWxlKGVudHJ5LT5pZHguc2hhMSwgJnR5cGUsICZzaXplKTsKLQkJaWYgKCFidWYpCi0JCQlkaWUoInVuYWJsZSB0byByZWFkICVzIiwgc2hhMV90b19oZXgoZW50cnktPmlkeC5zaGExKSk7CisJCWlmIChlbnRyeS0+dHlwZSA9PSBPQkpfQkxPQiAmJgorCQkgICAgZW50cnktPnNpemUgPiBiaWdfZmlsZV90aHJlc2hvbGQgJiYKKwkJICAgIChzdCA9IG9wZW5faXN0cmVhbShlbnRyeS0+aWR4LnNoYTEsICZ0eXBlLCAmc2l6ZSwgTlVMTCkpICE9IE5VTEwpCisJCQlidWYgPSBOVUxMOworCQllbHNlIHsKKwkJCWJ1ZiA9IHJlYWRfc2hhMV9maWxlKGVudHJ5LT5pZHguc2hhMSwgJnR5cGUsICZzaXplKTsKKwkJCWlmICghYnVmKQorCQkJCWRpZShfKCJ1bmFibGUgdG8gcmVhZCAlcyIpLCBzaGExX3RvX2hleChlbnRyeS0+aWR4LnNoYTEpKTsKKwkJfQogCQkvKgogCQkgKiBtYWtlIHN1cmUgbm8gY2FjaGVkIGRlbHRhIGRhdGEgcmVtYWlucyBmcm9tIGEKIAkJICogcHJldmlvdXMgYXR0ZW1wdCBiZWZvcmUgYSBwYWNrIHNwbGl0IG9jY3VycmVkLgpAQCAtMjMzLDcgKzI4MSw5IEBACiAJCQlPQkpfT0ZTX0RFTFRBIDogT0JKX1JFRl9ERUxUQTsKIAl9CiAKLQlpZiAoZW50cnktPnpfZGVsdGFfc2l6ZSkKKwlpZiAoc3QpCS8qIGxhcmdlIGJsb2IgY2FzZSwganVzdCBhc3N1bWUgd2UgZG9uJ3QgY29tcHJlc3Mgd2VsbCAqLworCQlkYXRhbGVuID0gc2l6ZTsKKwllbHNlIGlmIChlbnRyeS0+el9kZWx0YV9zaXplKQogCQlkYXRhbGVuID0gZW50cnktPnpfZGVsdGFfc2l6ZTsKIAllbHNlCiAJCWRhdGFsZW4gPSBkb19jb21wcmVzcygmYnVmLCBzaXplKTsKQEAgLTI1Niw2ICszMDYsOCBAQAogCQl3aGlsZSAob2ZzID4+PSA3KQogCQkJZGhlYWRlclstLXBvc10gPSAxMjggfCAoLS1vZnMgJiAxMjcpOwogCQlpZiAobGltaXQgJiYgaGRybGVuICsgc2l6ZW9mKGRoZWFkZXIpIC0gcG9zICsgZGF0YWxlbiArIDIwID49IGxpbWl0KSB7CisJCQlpZiAoc3QpCisJCQkJY2xvc2VfaXN0cmVhbShzdCk7CiAJCQlmcmVlKGJ1Zik7CiAJCQlyZXR1cm4gMDsKIAkJfQpAQCAtMjY4LDYgKzMyMCw4IEBACiAJCSAqIGFuIGFkZGl0aW9uYWwgMjAgYnl0ZXMgZm9yIHRoZSBiYXNlIHNoYTEuCiAJCSAqLwogCQlpZiAobGltaXQgJiYgaGRybGVuICsgMjAgKyBkYXRhbGVuICsgMjAgPj0gbGltaXQpIHsKKwkJCWlmIChzdCkKKwkJCQljbG9zZV9pc3RyZWFtKHN0KTsKIAkJCWZyZWUoYnVmKTsKIAkJCXJldHVybiAwOwogCQl9CkBAIC0yNzYsMTMgKzMzMCwyMCBAQAogCQloZHJsZW4gKz0gMjA7CiAJfSBlbHNlIHsKIAkJaWYgKGxpbWl0ICYmIGhkcmxlbiArIGRhdGFsZW4gKyAyMCA+PSBsaW1pdCkgeworCQkJaWYgKHN0KQorCQkJCWNsb3NlX2lzdHJlYW0oc3QpOwogCQkJZnJlZShidWYpOwogCQkJcmV0dXJuIDA7CiAJCX0KIAkJc2hhMXdyaXRlKGYsIGhlYWRlciwgaGRybGVuKTsKIAl9Ci0Jc2hhMXdyaXRlKGYsIGJ1ZiwgZGF0YWxlbik7Ci0JZnJlZShidWYpOworCWlmIChzdCkgeworCQlkYXRhbGVuID0gd3JpdGVfbGFyZ2VfYmxvYl9kYXRhKHN0LCBmLCBlbnRyeS0+aWR4LnNoYTEpOworCQljbG9zZV9pc3RyZWFtKHN0KTsKKwl9IGVsc2UgeworCQlzaGExd3JpdGUoZiwgYnVmLCBkYXRhbGVuKTsKKwkJZnJlZShidWYpOworCX0KIAogCXJldHVybiBoZHJsZW4gKyBkYXRhbGVuOwogfQpAQCAtMTk3Miw3ICsyMDMzLDYgQEAKIAogCWlmICghcHJlZml4Y21wKHBhdGgsICJyZWZzL3RhZ3MvIikgJiYgLyogaXMgYSB0YWc/ICovCiAJICAgICFwZWVsX3JlZihwYXRoLCBwZWVsZWQpICAgICAgICAmJiAvKiBwZWVsYWJsZT8gKi8KLQkgICAgIWlzX251bGxfc2hhMShwZWVsZWQpICAgICAgICAgICYmIC8qIGFubm90YXRlZCB0YWc/ICovCiAJICAgIGxvY2F0ZV9vYmplY3RfZW50cnkocGVlbGVkKSkgICAgICAvKiBvYmplY3QgcGFja2VkPyAqLwogCQlhZGRfb2JqZWN0X2VudHJ5KHNoYTEsIE9CSl9UQUcsIE5VTEwsIDApOwogCXJldHVybiAwOwpAQCAtMjMxMiw3ICsyMzcyLDcgQEAKIAkJCX0KIAkJCWRpZSgibm90IGEgcmV2ICclcyciLCBsaW5lKTsKIAkJfQotCQlpZiAoaGFuZGxlX3JldmlzaW9uX2FyZyhsaW5lLCAmcmV2cywgZmxhZ3MsIDEpKQorCQlpZiAoaGFuZGxlX3JldmlzaW9uX2FyZyhsaW5lLCAmcmV2cywgZmxhZ3MsIFJFVkFSR19DQU5OT1RfQkVfRklMRU5BTUUpKQogCQkJZGllKCJiYWQgcmV2aXNpb24gJyVzJyIsIGxpbmUpOwogCX0KIApAQCAtMjM4NCw2NyArMjQ0NCw2NyBAQAogCWludCByZXZfbGlzdF91bnBhY2tlZCA9IDAsIHJldl9saXN0X2FsbCA9IDAsIHJldl9saXN0X3JlZmxvZyA9IDA7CiAJc3RydWN0IG9wdGlvbiBwYWNrX29iamVjdHNfb3B0aW9uc1tdID0gewogCQlPUFRfU0VUX0lOVCgncScsICJxdWlldCIsICZwcm9ncmVzcywKLQkJCSAgICAiZG8gbm90IHNob3cgcHJvZ3Jlc3MgbWV0ZXIiLCAwKSwKKwkJCSAgICBOXygiZG8gbm90IHNob3cgcHJvZ3Jlc3MgbWV0ZXIiKSwgMCksCiAJCU9QVF9TRVRfSU5UKDAsICJwcm9ncmVzcyIsICZwcm9ncmVzcywKLQkJCSAgICAic2hvdyBwcm9ncmVzcyBtZXRlciIsIDEpLAorCQkJICAgIE5fKCJzaG93IHByb2dyZXNzIG1ldGVyIiksIDEpLAogCQlPUFRfU0VUX0lOVCgwLCAiYWxsLXByb2dyZXNzIiwgJnByb2dyZXNzLAotCQkJICAgICJzaG93IHByb2dyZXNzIG1ldGVyIGR1cmluZyBvYmplY3Qgd3JpdGluZyBwaGFzZSIsIDIpLAorCQkJICAgIE5fKCJzaG93IHByb2dyZXNzIG1ldGVyIGR1cmluZyBvYmplY3Qgd3JpdGluZyBwaGFzZSIpLCAyKSwKIAkJT1BUX0JPT0woMCwgImFsbC1wcm9ncmVzcy1pbXBsaWVkIiwKIAkJCSAmYWxsX3Byb2dyZXNzX2ltcGxpZWQsCi0JCQkgInNpbWlsYXIgdG8gLS1hbGwtcHJvZ3Jlc3Mgd2hlbiBwcm9ncmVzcyBtZXRlciBpcyBzaG93biIpLAotCQl7IE9QVElPTl9DQUxMQkFDSywgMCwgImluZGV4LXZlcnNpb24iLCBOVUxMLCAidmVyc2lvblssb2Zmc2V0XSIsCi0JCSAgIndyaXRlIHRoZSBwYWNrIGluZGV4IGZpbGUgaW4gdGhlIHNwZWNpZmllZCBpZHggZm9ybWF0IHZlcnNpb24iLAorCQkJIE5fKCJzaW1pbGFyIHRvIC0tYWxsLXByb2dyZXNzIHdoZW4gcHJvZ3Jlc3MgbWV0ZXIgaXMgc2hvd24iKSksCisJCXsgT1BUSU9OX0NBTExCQUNLLCAwLCAiaW5kZXgtdmVyc2lvbiIsIE5VTEwsIE5fKCJ2ZXJzaW9uWyxvZmZzZXRdIiksCisJCSAgTl8oIndyaXRlIHRoZSBwYWNrIGluZGV4IGZpbGUgaW4gdGhlIHNwZWNpZmllZCBpZHggZm9ybWF0IHZlcnNpb24iKSwKIAkJICAwLCBvcHRpb25fcGFyc2VfaW5kZXhfdmVyc2lvbiB9LAogCQlPUFRfVUxPTkcoMCwgIm1heC1wYWNrLXNpemUiLCAmcGFja19zaXplX2xpbWl0LAotCQkJICAibWF4aW11bSBzaXplIG9mIGVhY2ggb3V0cHV0IHBhY2sgZmlsZSIpLAorCQkJICBOXygibWF4aW11bSBzaXplIG9mIGVhY2ggb3V0cHV0IHBhY2sgZmlsZSIpKSwKIAkJT1BUX0JPT0woMCwgImxvY2FsIiwgJmxvY2FsLAotCQkJICJpZ25vcmUgYm9ycm93ZWQgb2JqZWN0cyBmcm9tIGFsdGVybmF0ZSBvYmplY3Qgc3RvcmUiKSwKKwkJCSBOXygiaWdub3JlIGJvcnJvd2VkIG9iamVjdHMgZnJvbSBhbHRlcm5hdGUgb2JqZWN0IHN0b3JlIikpLAogCQlPUFRfQk9PTCgwLCAiaW5jcmVtZW50YWwiLCAmaW5jcmVtZW50YWwsCi0JCQkgImlnbm9yZSBwYWNrZWQgb2JqZWN0cyIpLAorCQkJIE5fKCJpZ25vcmUgcGFja2VkIG9iamVjdHMiKSksCiAJCU9QVF9JTlRFR0VSKDAsICJ3aW5kb3ciLCAmd2luZG93LAotCQkJICAgICJsaW1pdCBwYWNrIHdpbmRvdyBieSBvYmplY3RzIiksCisJCQkgICAgTl8oImxpbWl0IHBhY2sgd2luZG93IGJ5IG9iamVjdHMiKSksCiAJCU9QVF9VTE9ORygwLCAid2luZG93LW1lbW9yeSIsICZ3aW5kb3dfbWVtb3J5X2xpbWl0LAotCQkJICAibGltaXQgcGFjayB3aW5kb3cgYnkgbWVtb3J5IGluIGFkZGl0aW9uIHRvIG9iamVjdCBsaW1pdCIpLAorCQkJICBOXygibGltaXQgcGFjayB3aW5kb3cgYnkgbWVtb3J5IGluIGFkZGl0aW9uIHRvIG9iamVjdCBsaW1pdCIpKSwKIAkJT1BUX0lOVEVHRVIoMCwgImRlcHRoIiwgJmRlcHRoLAotCQkJICAgICJtYXhpbXVtIGxlbmd0aCBvZiBkZWx0YSBjaGFpbiBhbGxvd2VkIGluIHRoZSByZXN1bHRpbmcgcGFjayIpLAorCQkJICAgIE5fKCJtYXhpbXVtIGxlbmd0aCBvZiBkZWx0YSBjaGFpbiBhbGxvd2VkIGluIHRoZSByZXN1bHRpbmcgcGFjayIpKSwKIAkJT1BUX0JPT0woMCwgInJldXNlLWRlbHRhIiwgJnJldXNlX2RlbHRhLAotCQkJICJyZXVzZSBleGlzdGluZyBkZWx0YXMiKSwKKwkJCSBOXygicmV1c2UgZXhpc3RpbmcgZGVsdGFzIikpLAogCQlPUFRfQk9PTCgwLCAicmV1c2Utb2JqZWN0IiwgJnJldXNlX29iamVjdCwKLQkJCSAicmV1c2UgZXhpc3Rpbmcgb2JqZWN0cyIpLAorCQkJIE5fKCJyZXVzZSBleGlzdGluZyBvYmplY3RzIikpLAogCQlPUFRfQk9PTCgwLCAiZGVsdGEtYmFzZS1vZmZzZXQiLCAmYWxsb3dfb2ZzX2RlbHRhLAotCQkJICJ1c2UgT0ZTX0RFTFRBIG9iamVjdHMiKSwKKwkJCSBOXygidXNlIE9GU19ERUxUQSBvYmplY3RzIikpLAogCQlPUFRfSU5URUdFUigwLCAidGhyZWFkcyIsICZkZWx0YV9zZWFyY2hfdGhyZWFkcywKLQkJCSAgICAidXNlIHRocmVhZHMgd2hlbiBzZWFyY2hpbmcgZm9yIGJlc3QgZGVsdGEgbWF0Y2hlcyIpLAorCQkJICAgIE5fKCJ1c2UgdGhyZWFkcyB3aGVuIHNlYXJjaGluZyBmb3IgYmVzdCBkZWx0YSBtYXRjaGVzIikpLAogCQlPUFRfQk9PTCgwLCAibm9uLWVtcHR5IiwgJm5vbl9lbXB0eSwKLQkJCSAiZG8gbm90IGNyZWF0ZSBhbiBlbXB0eSBwYWNrIG91dHB1dCIpLAorCQkJIE5fKCJkbyBub3QgY3JlYXRlIGFuIGVtcHR5IHBhY2sgb3V0cHV0IikpLAogCQlPUFRfQk9PTCgwLCAicmV2cyIsICZ1c2VfaW50ZXJuYWxfcmV2X2xpc3QsCi0JCQkgInJlYWQgcmV2aXNpb24gYXJndW1lbnRzIGZyb20gc3RhbmRhcmQgaW5wdXQiKSwKKwkJCSBOXygicmVhZCByZXZpc2lvbiBhcmd1bWVudHMgZnJvbSBzdGFuZGFyZCBpbnB1dCIpKSwKIAkJeyBPUFRJT05fU0VUX0lOVCwgMCwgInVucGFja2VkIiwgJnJldl9saXN0X3VucGFja2VkLCBOVUxMLAotCQkgICJsaW1pdCB0aGUgb2JqZWN0cyB0byB0aG9zZSB0aGF0IGFyZSBub3QgeWV0IHBhY2tlZCIsCisJCSAgTl8oImxpbWl0IHRoZSBvYmplY3RzIHRvIHRob3NlIHRoYXQgYXJlIG5vdCB5ZXQgcGFja2VkIiksCiAJCSAgUEFSU0VfT1BUX05PQVJHIHwgUEFSU0VfT1BUX05PTkVHLCBOVUxMLCAxIH0sCiAJCXsgT1BUSU9OX1NFVF9JTlQsIDAsICJhbGwiLCAmcmV2X2xpc3RfYWxsLCBOVUxMLAotCQkgICJpbmNsdWRlIG9iamVjdHMgcmVhY2hhYmxlIGZyb20gYW55IHJlZmVyZW5jZSIsCisJCSAgTl8oImluY2x1ZGUgb2JqZWN0cyByZWFjaGFibGUgZnJvbSBhbnkgcmVmZXJlbmNlIiksCiAJCSAgUEFSU0VfT1BUX05PQVJHIHwgUEFSU0VfT1BUX05PTkVHLCBOVUxMLCAxIH0sCiAJCXsgT1BUSU9OX1NFVF9JTlQsIDAsICJyZWZsb2ciLCAmcmV2X2xpc3RfcmVmbG9nLCBOVUxMLAotCQkgICJpbmNsdWRlIG9iamVjdHMgcmVmZXJyZWQgYnkgcmVmbG9nIGVudHJpZXMiLAorCQkgIE5fKCJpbmNsdWRlIG9iamVjdHMgcmVmZXJyZWQgYnkgcmVmbG9nIGVudHJpZXMiKSwKIAkJICBQQVJTRV9PUFRfTk9BUkcgfCBQQVJTRV9PUFRfTk9ORUcsIE5VTEwsIDEgfSwKIAkJT1BUX0JPT0woMCwgInN0ZG91dCIsICZwYWNrX3RvX3N0ZG91dCwKLQkJCSAib3V0cHV0IHBhY2sgdG8gc3Rkb3V0IiksCisJCQkgTl8oIm91dHB1dCBwYWNrIHRvIHN0ZG91dCIpKSwKIAkJT1BUX0JPT0woMCwgImluY2x1ZGUtdGFnIiwgJmluY2x1ZGVfdGFnLAotCQkJICJpbmNsdWRlIHRhZyBvYmplY3RzIHRoYXQgcmVmZXIgdG8gb2JqZWN0cyB0byBiZSBwYWNrZWQiKSwKKwkJCSBOXygiaW5jbHVkZSB0YWcgb2JqZWN0cyB0aGF0IHJlZmVyIHRvIG9iamVjdHMgdG8gYmUgcGFja2VkIikpLAogCQlPUFRfQk9PTCgwLCAia2VlcC11bnJlYWNoYWJsZSIsICZrZWVwX3VucmVhY2hhYmxlLAotCQkJICJrZWVwIHVucmVhY2hhYmxlIG9iamVjdHMiKSwKLQkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJ1bnBhY2stdW5yZWFjaGFibGUiLCBOVUxMLCAidGltZSIsCi0JCSAgInVucGFjayB1bnJlYWNoYWJsZSBvYmplY3RzIG5ld2VyIHRoYW4gPHRpbWU+IiwKKwkJCSBOXygia2VlcCB1bnJlYWNoYWJsZSBvYmplY3RzIikpLAorCQl7IE9QVElPTl9DQUxMQkFDSywgMCwgInVucGFjay11bnJlYWNoYWJsZSIsIE5VTEwsIE5fKCJ0aW1lIiksCisJCSAgTl8oInVucGFjayB1bnJlYWNoYWJsZSBvYmplY3RzIG5ld2VyIHRoYW4gPHRpbWU+IiksCiAJCSAgUEFSU0VfT1BUX09QVEFSRywgb3B0aW9uX3BhcnNlX3VucGFja191bnJlYWNoYWJsZSB9LAogCQlPUFRfQk9PTCgwLCAidGhpbiIsICZ0aGluLAotCQkJICJjcmVhdGUgdGhpbiBwYWNrcyIpLAorCQkJIE5fKCJjcmVhdGUgdGhpbiBwYWNrcyIpKSwKIAkJT1BUX0JPT0woMCwgImhvbm9yLXBhY2sta2VlcCIsICZpZ25vcmVfcGFja2VkX2tlZXAsCi0JCQkgImlnbm9yZSBwYWNrcyB0aGF0IGhhdmUgY29tcGFuaW9uIC5rZWVwIGZpbGUiKSwKKwkJCSBOXygiaWdub3JlIHBhY2tzIHRoYXQgaGF2ZSBjb21wYW5pb24gLmtlZXAgZmlsZSIpKSwKIAkJT1BUX0lOVEVHRVIoMCwgImNvbXByZXNzaW9uIiwgJnBhY2tfY29tcHJlc3Npb25fbGV2ZWwsCi0JCQkgICAgInBhY2sgY29tcHJlc3Npb24gbGV2ZWwiKSwKKwkJCSAgICBOXygicGFjayBjb21wcmVzc2lvbiBsZXZlbCIpKSwKIAkJT1BUX1NFVF9JTlQoMCwgImtlZXAtdHJ1ZS1wYXJlbnRzIiwgJmdyYWZ0c19yZXBsYWNlX3BhcmVudHMsCi0JCQkgICAgImRvIG5vdCBoaWRlIGNvbW1pdHMgYnkgZ3JhZnRzIiwgMCksCisJCQkgICAgTl8oImRvIG5vdCBoaWRlIGNvbW1pdHMgYnkgZ3JhZnRzIiksIDApLAogCQlPUFRfRU5EKCksCiAJfTsKIApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9wYWNrLXJlZHVuZGFudC5jIGIvYnVpbHRpbi9wYWNrLXJlZHVuZGFudC5jCmluZGV4IGY1YzZhZmMuLjY0OWMzYWEgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vcGFjay1yZWR1bmRhbnQuYworKysgYi9idWlsdGluL3BhY2stcmVkdW5kYW50LmMKQEAgLTMwMSwxNCArMzAxLDE0IEBACiAgKi8KIHN0YXRpYyBzdHJ1Y3QgcGxsICogZ2V0X3Blcm11dGF0aW9ucyhzdHJ1Y3QgcGFja19saXN0ICpsaXN0LCBpbnQgbikKIHsKLQlzdHJ1Y3QgcGxsICpzdWJzZXQsICpyZXQgPSBOVUxMLCAqbmV3X3BsbCA9IE5VTEwsICpwbGw7CisJc3RydWN0IHBsbCAqc3Vic2V0LCAqcmV0ID0gTlVMTCwgKm5ld19wbGwgPSBOVUxMOwogCiAJaWYgKGxpc3QgPT0gTlVMTCB8fCBwYWNrX2xpc3Rfc2l6ZShsaXN0KSA8IG4gfHwgbiA9PSAwKQogCQlyZXR1cm4gTlVMTDsKIAogCWlmIChuID09IDEpIHsKIAkJd2hpbGUgKGxpc3QpIHsKLQkJCW5ld19wbGwgPSB4bWFsbG9jKHNpemVvZihwbGwpKTsKKwkJCW5ld19wbGwgPSB4bWFsbG9jKHNpemVvZigqbmV3X3BsbCkpOwogCQkJbmV3X3BsbC0+cGwgPSBOVUxMOwogCQkJcGFja19saXN0X2luc2VydCgmbmV3X3BsbC0+cGwsIGxpc3QpOwogCQkJbmV3X3BsbC0+bmV4dCA9IHJldDsKQEAgLTMyMSw3ICszMjEsNyBAQAogCXdoaWxlIChsaXN0LT5uZXh0KSB7CiAJCXN1YnNldCA9IGdldF9wZXJtdXRhdGlvbnMobGlzdC0+bmV4dCwgbiAtIDEpOwogCQl3aGlsZSAoc3Vic2V0KSB7Ci0JCQluZXdfcGxsID0geG1hbGxvYyhzaXplb2YocGxsKSk7CisJCQluZXdfcGxsID0geG1hbGxvYyhzaXplb2YoKm5ld19wbGwpKTsKIAkJCW5ld19wbGwtPnBsID0gc3Vic2V0LT5wbDsKIAkJCXBhY2tfbGlzdF9pbnNlcnQoJm5ld19wbGwtPnBsLCBsaXN0KTsKIAkJCW5ld19wbGwtPm5leHQgPSByZXQ7CmRpZmYgLS1naXQgYS9idWlsdGluL3BhY2stcmVmcy5jIGIvYnVpbHRpbi9wYWNrLXJlZnMuYwppbmRleCAzOWE5ZDg5Li5iNWEwZjg4IDEwMDY0NAotLS0gYS9idWlsdGluL3BhY2stcmVmcy5jCisrKyBiL2J1aWx0aW4vcGFjay1yZWZzLmMKQEAgLTMsNyArMyw3IEBACiAjaW5jbHVkZSAicGFjay1yZWZzLmgiCiAKIHN0YXRpYyBjaGFyIGNvbnN0ICogY29uc3QgcGFja19yZWZzX3VzYWdlW10gPSB7Ci0JImdpdCBwYWNrLXJlZnMgW29wdGlvbnNdIiwKKwlOXygiZ2l0IHBhY2stcmVmcyBbb3B0aW9uc10iKSwKIAlOVUxMCiB9OwogCkBAIC0xMSw4ICsxMSw4IEBACiB7CiAJdW5zaWduZWQgaW50IGZsYWdzID0gUEFDS19SRUZTX1BSVU5FOwogCXN0cnVjdCBvcHRpb24gb3B0c1tdID0gewotCQlPUFRfQklUKDAsICJhbGwiLCAgICZmbGFncywgInBhY2sgZXZlcnl0aGluZyIsIFBBQ0tfUkVGU19BTEwpLAotCQlPUFRfQklUKDAsICJwcnVuZSIsICZmbGFncywgInBydW5lIGxvb3NlIHJlZnMgKGRlZmF1bHQpIiwgUEFDS19SRUZTX1BSVU5FKSwKKwkJT1BUX0JJVCgwLCAiYWxsIiwgICAmZmxhZ3MsIE5fKCJwYWNrIGV2ZXJ5dGhpbmciKSwgUEFDS19SRUZTX0FMTCksCisJCU9QVF9CSVQoMCwgInBydW5lIiwgJmZsYWdzLCBOXygicHJ1bmUgbG9vc2UgcmVmcyAoZGVmYXVsdCkiKSwgUEFDS19SRUZTX1BSVU5FKSwKIAkJT1BUX0VORCgpLAogCX07CiAJaWYgKHBhcnNlX29wdGlvbnMoYXJnYywgYXJndiwgcHJlZml4LCBvcHRzLCBwYWNrX3JlZnNfdXNhZ2UsIDApKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9wcnVuZS1wYWNrZWQuYyBiL2J1aWx0aW4vcHJ1bmUtcGFja2VkLmMKaW5kZXggYjU4YTJlMS4uODMzODJjMSAxMDA2NDQKLS0tIGEvYnVpbHRpbi9wcnVuZS1wYWNrZWQuYworKysgYi9idWlsdGluL3BydW5lLXBhY2tlZC5jCkBAIC00LDcgKzQsNyBAQAogI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwcnVuZV9wYWNrZWRfdXNhZ2VbXSA9IHsKLQkiZ2l0IHBydW5lLXBhY2tlZCBbLW58LS1kcnktcnVuXSBbLXF8LS1xdWlldF0iLAorCU5fKCJnaXQgcHJ1bmUtcGFja2VkIFstbnwtLWRyeS1ydW5dIFstcXwtLXF1aWV0XSIpLAogCU5VTEwKIH07CiAKQEAgLTczLDggKzczLDggQEAKIHsKIAlpbnQgb3B0cyA9IGlzYXR0eSgyKSA/IFZFUkJPU0UgOiAwOwogCWNvbnN0IHN0cnVjdCBvcHRpb24gcHJ1bmVfcGFja2VkX29wdGlvbnNbXSA9IHsKLQkJT1BUX0JJVCgnbicsICJkcnktcnVuIiwgJm9wdHMsICJkcnkgcnVuIiwgRFJZX1JVTiksCi0JCU9QVF9ORUdCSVQoJ3EnLCAicXVpZXQiLCAmb3B0cywgImJlIHF1aWV0IiwgVkVSQk9TRSksCisJCU9QVF9CSVQoJ24nLCAiZHJ5LXJ1biIsICZvcHRzLCBOXygiZHJ5IHJ1biIpLCBEUllfUlVOKSwKKwkJT1BUX05FR0JJVCgncScsICJxdWlldCIsICZvcHRzLCBOXygiYmUgcXVpZXQiKSwgVkVSQk9TRSksCiAJCU9QVF9FTkQoKQogCX07CiAKZGlmZiAtLWdpdCBhL2J1aWx0aW4vcHJ1bmUuYyBiL2J1aWx0aW4vcHJ1bmUuYwppbmRleCBiOTliNjM1Li44NTg0M2Q0IDEwMDY0NAotLS0gYS9idWlsdGluL3BydW5lLmMKKysrIGIvYnVpbHRpbi9wcnVuZS5jCkBAIC05LDcgKzksNyBAQAogI2luY2x1ZGUgImRpci5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBydW5lX3VzYWdlW10gPSB7Ci0JImdpdCBwcnVuZSBbLW5dIFstdl0gWy0tZXhwaXJlIDx0aW1lPl0gWy0tXSBbPGhlYWQ+Li4uXSIsCisJTl8oImdpdCBwcnVuZSBbLW5dIFstdl0gWy0tZXhwaXJlIDx0aW1lPl0gWy0tXSBbPGhlYWQ+Li4uXSIpLAogCU5VTEwKIH07CiBzdGF0aWMgaW50IHNob3dfb25seTsKQEAgLTI1LDcgKzI1LDggQEAKIAkJcmV0dXJuIGVycm9yKCJDb3VsZCBub3Qgc3RhdCAnJXMnIiwgZnVsbHBhdGgpOwogCWlmIChzdC5zdF9tdGltZSA+IGV4cGlyZSkKIAkJcmV0dXJuIDA7Ci0JcHJpbnRmKCJSZW1vdmluZyBzdGFsZSB0ZW1wb3JhcnkgZmlsZSAlc1xuIiwgZnVsbHBhdGgpOworCWlmIChzaG93X29ubHkgfHwgdmVyYm9zZSkKKwkJcHJpbnRmKCJSZW1vdmluZyBzdGFsZSB0ZW1wb3JhcnkgZmlsZSAlc1xuIiwgZnVsbHBhdGgpOwogCWlmICghc2hvd19vbmx5KQogCQl1bmxpbmtfb3Jfd2FybihmdWxscGF0aCk7CiAJcmV0dXJuIDA7CkBAIC0xMjgsMTEgKzEyOSwxMSBAQAogCXN0cnVjdCByZXZfaW5mbyByZXZzOwogCXN0cnVjdCBwcm9ncmVzcyAqcHJvZ3Jlc3MgPSBOVUxMOwogCWNvbnN0IHN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewotCQlPUFRfX0RSWV9SVU4oJnNob3dfb25seSwgImRvIG5vdCByZW1vdmUsIHNob3cgb25seSIpLAotCQlPUFRfX1ZFUkJPU0UoJnZlcmJvc2UsICJyZXBvcnQgcHJ1bmVkIG9iamVjdHMiKSwKLQkJT1BUX0JPT0woMCwgInByb2dyZXNzIiwgJnNob3dfcHJvZ3Jlc3MsICJzaG93IHByb2dyZXNzIiksCisJCU9QVF9fRFJZX1JVTigmc2hvd19vbmx5LCBOXygiZG8gbm90IHJlbW92ZSwgc2hvdyBvbmx5IikpLAorCQlPUFRfX1ZFUkJPU0UoJnZlcmJvc2UsIE5fKCJyZXBvcnQgcHJ1bmVkIG9iamVjdHMiKSksCisJCU9QVF9CT09MKDAsICJwcm9ncmVzcyIsICZzaG93X3Byb2dyZXNzLCBOXygic2hvdyBwcm9ncmVzcyIpKSwKIAkJT1BUX0RBVEUoMCwgImV4cGlyZSIsICZleHBpcmUsCi0JCQkgImV4cGlyZSBvYmplY3RzIG9sZGVyIHRoYW4gPHRpbWU+IiksCisJCQkgTl8oImV4cGlyZSBvYmplY3RzIG9sZGVyIHRoYW4gPHRpbWU+IikpLAogCQlPUFRfRU5EKCkKIAl9OwogCWNoYXIgKnM7CkBAIC0xNDgsOSArMTQ5LDcgQEAKIAkJY29uc3QgY2hhciAqbmFtZSA9ICphcmd2Kys7CiAKIAkJaWYgKCFnZXRfc2hhMShuYW1lLCBzaGExKSkgewotCQkJc3RydWN0IG9iamVjdCAqb2JqZWN0ID0gcGFyc2Vfb2JqZWN0KHNoYTEpOwotCQkJaWYgKCFvYmplY3QpCi0JCQkJZGllKCJiYWQgb2JqZWN0OiAlcyIsIG5hbWUpOworCQkJc3RydWN0IG9iamVjdCAqb2JqZWN0ID0gcGFyc2Vfb2JqZWN0X29yX2RpZShzaGExLCBuYW1lKTsKIAkJCWFkZF9wZW5kaW5nX29iamVjdCgmcmV2cywgb2JqZWN0LCAiIik7CiAJCX0KIAkJZWxzZQpAQCAtMTY4LDcgKzE2Nyw3IEBACiAKIAlwcnVuZV9wYWNrZWRfb2JqZWN0cyhzaG93X29ubHkpOwogCXJlbW92ZV90ZW1wb3JhcnlfZmlsZXMoZ2V0X29iamVjdF9kaXJlY3RvcnkoKSk7Ci0JcyA9IHhzdHJkdXAobWtwYXRoKCIlcy9wYWNrIiwgZ2V0X29iamVjdF9kaXJlY3RvcnkoKSkpOworCXMgPSBta3BhdGhkdXAoIiVzL3BhY2siLCBnZXRfb2JqZWN0X2RpcmVjdG9yeSgpKTsKIAlyZW1vdmVfdGVtcG9yYXJ5X2ZpbGVzKHMpOwogCWZyZWUocyk7CiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9idWlsdGluL3B1c2guYyBiL2J1aWx0aW4vcHVzaC5jCmluZGV4IGZkZmNjNmMuLjJkODRkMTAgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vcHVzaC5jCisrKyBiL2J1aWx0aW4vcHVzaC5jCkBAIC0xMSw3ICsxMSw3IEBACiAjaW5jbHVkZSAic3VibW9kdWxlLmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcHVzaF91c2FnZVtdID0gewotCSJnaXQgcHVzaCBbPG9wdGlvbnM+XSBbPHJlcG9zaXRvcnk+IFs8cmVmc3BlYz4uLi5dXSIsCisJTl8oImdpdCBwdXNoIFs8b3B0aW9ucz5dIFs8cmVwb3NpdG9yeT4gWzxyZWZzcGVjPi4uLl1dIiksCiAJTlVMTCwKIH07CiAKQEAgLTExMywxNyArMTEzLDE5IEBACiAJICAgIHJlbW90ZS0+bmFtZSwgYnJhbmNoLT5uYW1lLCBhZHZpY2VfbWF5YmUpOwogfQogCitzdGF0aWMgY29uc3QgY2hhciBtZXNzYWdlX2RldGFjaGVkX2hlYWRfZGllW10gPQorCU5fKCJZb3UgYXJlIG5vdCBjdXJyZW50bHkgb24gYSBicmFuY2guXG4iCisJICAgIlRvIHB1c2ggdGhlIGhpc3RvcnkgbGVhZGluZyB0byB0aGUgY3VycmVudCAoZGV0YWNoZWQgSEVBRClcbiIKKwkgICAic3RhdGUgbm93LCB1c2VcbiIKKwkgICAiXG4iCisJICAgIiAgICBnaXQgcHVzaCAlcyBIRUFEOjxuYW1lLW9mLXJlbW90ZS1icmFuY2g+XG4iKTsKKwogc3RhdGljIHZvaWQgc2V0dXBfcHVzaF91cHN0cmVhbShzdHJ1Y3QgcmVtb3RlICpyZW1vdGUsIGludCBzaW1wbGUpCiB7CiAJc3RydWN0IHN0cmJ1ZiByZWZzcGVjID0gU1RSQlVGX0lOSVQ7CiAJc3RydWN0IGJyYW5jaCAqYnJhbmNoID0gYnJhbmNoX2dldChOVUxMKTsKIAlpZiAoIWJyYW5jaCkKLQkJZGllKF8oIllvdSBhcmUgbm90IGN1cnJlbnRseSBvbiBhIGJyYW5jaC5cbiIKLQkJICAgICJUbyBwdXNoIHRoZSBoaXN0b3J5IGxlYWRpbmcgdG8gdGhlIGN1cnJlbnQgKGRldGFjaGVkIEhFQUQpXG4iCi0JCSAgICAic3RhdGUgbm93LCB1c2VcbiIKLQkJICAgICJcbiIKLQkJICAgICIgICAgZ2l0IHB1c2ggJXMgSEVBRDo8bmFtZS1vZi1yZW1vdGUtYnJhbmNoPlxuIiksCi0JCSAgICByZW1vdGUtPm5hbWUpOworCQlkaWUoXyhtZXNzYWdlX2RldGFjaGVkX2hlYWRfZGllKSwgcmVtb3RlLT5uYW1lKTsKIAlpZiAoIWJyYW5jaC0+bWVyZ2VfbnIgfHwgIWJyYW5jaC0+bWVyZ2UgfHwgIWJyYW5jaC0+cmVtb3RlX25hbWUpCiAJCWRpZShfKCJUaGUgY3VycmVudCBicmFuY2ggJXMgaGFzIG5vIHVwc3RyZWFtIGJyYW5jaC5cbiIKIAkJICAgICJUbyBwdXNoIHRoZSBjdXJyZW50IGJyYW5jaCBhbmQgc2V0IHRoZSByZW1vdGUgYXMgdXBzdHJlYW0sIHVzZVxuIgpAQCAtMTQ3LDEyICsxNDksMzkgQEAKIAlhZGRfcmVmc3BlYyhyZWZzcGVjLmJ1Zik7CiB9CiAKK3N0YXRpYyBjaGFyIHdhcm5fdW5zcGVjaWZpZWRfcHVzaF9kZWZhdWx0X21zZ1tdID0KK05fKCJwdXNoLmRlZmF1bHQgaXMgdW5zZXQ7IGl0cyBpbXBsaWNpdCB2YWx1ZSBpcyBjaGFuZ2luZyBpblxuIgorICAgIkdpdCAyLjAgZnJvbSAnbWF0Y2hpbmcnIHRvICdzaW1wbGUnLiBUbyBzcXVlbGNoIHRoaXMgbWVzc2FnZVxuIgorICAgImFuZCBtYWludGFpbiB0aGUgY3VycmVudCBiZWhhdmlvciBhZnRlciB0aGUgZGVmYXVsdCBjaGFuZ2VzLCB1c2U6XG4iCisgICAiXG4iCisgICAiICBnaXQgY29uZmlnIC0tZ2xvYmFsIHB1c2guZGVmYXVsdCBtYXRjaGluZ1xuIgorICAgIlxuIgorICAgIlRvIHNxdWVsY2ggdGhpcyBtZXNzYWdlIGFuZCBhZG9wdCB0aGUgbmV3IGJlaGF2aW9yIG5vdywgdXNlOlxuIgorICAgIlxuIgorICAgIiAgZ2l0IGNvbmZpZyAtLWdsb2JhbCBwdXNoLmRlZmF1bHQgc2ltcGxlXG4iCisgICAiXG4iCisgICAiU2VlICdnaXQgaGVscCBjb25maWcnIGFuZCBzZWFyY2ggZm9yICdwdXNoLmRlZmF1bHQnIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxuIgorICAgIih0aGUgJ3NpbXBsZScgbW9kZSB3YXMgaW50cm9kdWNlZCBpbiBHaXQgMS43LjExLiBVc2UgdGhlIHNpbWlsYXIgbW9kZVxuIgorICAgIidjdXJyZW50JyBpbnN0ZWFkIG9mICdzaW1wbGUnIGlmIHlvdSBzb21ldGltZXMgdXNlIG9sZGVyIHZlcnNpb25zIG9mIEdpdCkiKTsKKworc3RhdGljIHZvaWQgd2Fybl91bnNwZWNpZmllZF9wdXNoX2RlZmF1bHRfY29uZmlndXJhdGlvbih2b2lkKQoreworCXN0YXRpYyBpbnQgd2Fybl9vbmNlOworCisJaWYgKHdhcm5fb25jZSsrKQorCQlyZXR1cm47CisJd2FybmluZygiJXNcbiIsIF8od2Fybl91bnNwZWNpZmllZF9wdXNoX2RlZmF1bHRfbXNnKSk7Cit9CisKIHN0YXRpYyB2b2lkIHNldHVwX2RlZmF1bHRfcHVzaF9yZWZzcGVjcyhzdHJ1Y3QgcmVtb3RlICpyZW1vdGUpCiB7CisJc3RydWN0IGJyYW5jaCAqYnJhbmNoOworCiAJc3dpdGNoIChwdXNoX2RlZmF1bHQpIHsKIAlkZWZhdWx0OgogCWNhc2UgUFVTSF9ERUZBVUxUX1VOU1BFQ0lGSUVEOgogCQlkZWZhdWx0X21hdGNoaW5nX3VzZWQgPSAxOworCQl3YXJuX3Vuc3BlY2lmaWVkX3B1c2hfZGVmYXVsdF9jb25maWd1cmF0aW9uKCk7CiAJCS8qIGZhbGx0aHJ1ICovCiAJY2FzZSBQVVNIX0RFRkFVTFRfTUFUQ0hJTkc6CiAJCWFkZF9yZWZzcGVjKCI6Iik7CkBAIC0xNjcsNyArMTk2LDEwIEBACiAJCWJyZWFrOwogCiAJY2FzZSBQVVNIX0RFRkFVTFRfQ1VSUkVOVDoKLQkJYWRkX3JlZnNwZWMoIkhFQUQiKTsKKwkJYnJhbmNoID0gYnJhbmNoX2dldChOVUxMKTsKKwkJaWYgKCFicmFuY2gpCisJCQlkaWUoXyhtZXNzYWdlX2RldGFjaGVkX2hlYWRfZGllKSwgcmVtb3RlLT5uYW1lKTsKKwkJYWRkX3JlZnNwZWMoYnJhbmNoLT5uYW1lKTsKIAkJYnJlYWs7CiAKIAljYXNlIFBVU0hfREVGQVVMVF9OT1RISU5HOgpAQCAtMTg2LDggKzIxOCw4IEBACiBzdGF0aWMgY29uc3QgY2hhciBtZXNzYWdlX2FkdmljZV91c2VfdXBzdHJlYW1bXSA9CiAJTl8oIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIGEgcHVzaGVkIGJyYW5jaCB0aXAgaXMgYmVoaW5kIGl0cyByZW1vdGVcbiIKIAkgICAiY291bnRlcnBhcnQuIElmIHlvdSBkaWQgbm90IGludGVuZCB0byBwdXNoIHRoYXQgYnJhbmNoLCB5b3UgbWF5IHdhbnQgdG9cbiIKLQkgICAic3BlY2lmeSBicmFuY2hlcyB0byBwdXNoIG9yIHNldCB0aGUgJ3B1c2guZGVmYXVsdCcgY29uZmlndXJhdGlvblxuIgotCSAgICJ2YXJpYWJsZSB0byAnY3VycmVudCcgb3IgJ3Vwc3RyZWFtJyB0byBwdXNoIG9ubHkgdGhlIGN1cnJlbnQgYnJhbmNoLiIpOworCSAgICJzcGVjaWZ5IGJyYW5jaGVzIHRvIHB1c2ggb3Igc2V0IHRoZSAncHVzaC5kZWZhdWx0JyBjb25maWd1cmF0aW9uIHZhcmlhYmxlXG4iCisJICAgInRvICdzaW1wbGUnLCAnY3VycmVudCcgb3IgJ3Vwc3RyZWFtJyB0byBwdXNoIG9ubHkgdGhlIGN1cnJlbnQgYnJhbmNoLiIpOwogCiBzdGF0aWMgY29uc3QgY2hhciBtZXNzYWdlX2FkdmljZV9jaGVja291dF9wdWxsX3B1c2hbXSA9CiAJTl8oIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIGEgcHVzaGVkIGJyYW5jaCB0aXAgaXMgYmVoaW5kIGl0cyByZW1vdGVcbiIKQEAgLTE5NSwzMSArMjI3LDY3IEBACiAJICAgIihlLmcuICdnaXQgcHVsbCcpIGJlZm9yZSBwdXNoaW5nIGFnYWluLlxuIgogCSAgICJTZWUgdGhlICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIGluICdnaXQgcHVzaCAtLWhlbHAnIGZvciBkZXRhaWxzLiIpOwogCitzdGF0aWMgY29uc3QgY2hhciBtZXNzYWdlX2FkdmljZV9yZWZfZmV0Y2hfZmlyc3RbXSA9CisJTl8oIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIHRoZSByZW1vdGUgY29udGFpbnMgd29yayB0aGF0IHlvdSBkb1xuIgorCSAgICJub3QgaGF2ZSBsb2NhbGx5LiBUaGlzIGlzIHVzdWFsbHkgY2F1c2VkIGJ5IGFub3RoZXIgcmVwb3NpdG9yeSBwdXNoaW5nXG4iCisJICAgInRvIHRoZSBzYW1lIHJlZi4gWW91IG1heSB3YW50IHRvIGZpcnN0IG1lcmdlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLixcbiIKKwkgICAiJ2dpdCBwdWxsJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCisJICAgIlNlZSB0aGUgJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycgaW4gJ2dpdCBwdXNoIC0taGVscCcgZm9yIGRldGFpbHMuIik7CisKK3N0YXRpYyBjb25zdCBjaGFyIG1lc3NhZ2VfYWR2aWNlX3JlZl9hbHJlYWR5X2V4aXN0c1tdID0KKwlOXygiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgdGhlIHRhZyBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgcmVtb3RlLiIpOworCitzdGF0aWMgY29uc3QgY2hhciBtZXNzYWdlX2FkdmljZV9yZWZfbmVlZHNfZm9yY2VbXSA9CisJTl8oIllvdSBjYW5ub3QgdXBkYXRlIGEgcmVtb3RlIHJlZiB0aGF0IHBvaW50cyBhdCBhIG5vbi1jb21taXQgb2JqZWN0LFxuIgorCSAgICJvciB1cGRhdGUgYSByZW1vdGUgcmVmIHRvIG1ha2UgaXQgcG9pbnQgYXQgYSBub24tY29tbWl0IG9iamVjdCxcbiIKKwkgICAid2l0aG91dCB1c2luZyB0aGUgJy0tZm9yY2UnIG9wdGlvbi5cbiIpOworCiBzdGF0aWMgdm9pZCBhZHZpc2VfcHVsbF9iZWZvcmVfcHVzaCh2b2lkKQogewotCWlmICghYWR2aWNlX3B1c2hfbm9uX2ZmX2N1cnJlbnQgfHwgIWFkdmljZV9wdXNoX25vbmZhc3Rmb3J3YXJkKQorCWlmICghYWR2aWNlX3B1c2hfbm9uX2ZmX2N1cnJlbnQgfHwgIWFkdmljZV9wdXNoX3VwZGF0ZV9yZWplY3RlZCkKIAkJcmV0dXJuOwogCWFkdmlzZShfKG1lc3NhZ2VfYWR2aWNlX3B1bGxfYmVmb3JlX3B1c2gpKTsKIH0KIAogc3RhdGljIHZvaWQgYWR2aXNlX3VzZV91cHN0cmVhbSh2b2lkKQogewotCWlmICghYWR2aWNlX3B1c2hfbm9uX2ZmX2RlZmF1bHQgfHwgIWFkdmljZV9wdXNoX25vbmZhc3Rmb3J3YXJkKQorCWlmICghYWR2aWNlX3B1c2hfbm9uX2ZmX2RlZmF1bHQgfHwgIWFkdmljZV9wdXNoX3VwZGF0ZV9yZWplY3RlZCkKIAkJcmV0dXJuOwogCWFkdmlzZShfKG1lc3NhZ2VfYWR2aWNlX3VzZV91cHN0cmVhbSkpOwogfQogCiBzdGF0aWMgdm9pZCBhZHZpc2VfY2hlY2tvdXRfcHVsbF9wdXNoKHZvaWQpCiB7Ci0JaWYgKCFhZHZpY2VfcHVzaF9ub25fZmZfbWF0Y2hpbmcgfHwgIWFkdmljZV9wdXNoX25vbmZhc3Rmb3J3YXJkKQorCWlmICghYWR2aWNlX3B1c2hfbm9uX2ZmX21hdGNoaW5nIHx8ICFhZHZpY2VfcHVzaF91cGRhdGVfcmVqZWN0ZWQpCiAJCXJldHVybjsKIAlhZHZpc2UoXyhtZXNzYWdlX2FkdmljZV9jaGVja291dF9wdWxsX3B1c2gpKTsKIH0KIAorc3RhdGljIHZvaWQgYWR2aXNlX3JlZl9hbHJlYWR5X2V4aXN0cyh2b2lkKQoreworCWlmICghYWR2aWNlX3B1c2hfYWxyZWFkeV9leGlzdHMgfHwgIWFkdmljZV9wdXNoX3VwZGF0ZV9yZWplY3RlZCkKKwkJcmV0dXJuOworCWFkdmlzZShfKG1lc3NhZ2VfYWR2aWNlX3JlZl9hbHJlYWR5X2V4aXN0cykpOworfQorCitzdGF0aWMgdm9pZCBhZHZpc2VfcmVmX2ZldGNoX2ZpcnN0KHZvaWQpCit7CisJaWYgKCFhZHZpY2VfcHVzaF9mZXRjaF9maXJzdCB8fCAhYWR2aWNlX3B1c2hfdXBkYXRlX3JlamVjdGVkKQorCQlyZXR1cm47CisJYWR2aXNlKF8obWVzc2FnZV9hZHZpY2VfcmVmX2ZldGNoX2ZpcnN0KSk7Cit9CisKK3N0YXRpYyB2b2lkIGFkdmlzZV9yZWZfbmVlZHNfZm9yY2Uodm9pZCkKK3sKKwlpZiAoIWFkdmljZV9wdXNoX25lZWRzX2ZvcmNlIHx8ICFhZHZpY2VfcHVzaF91cGRhdGVfcmVqZWN0ZWQpCisJCXJldHVybjsKKwlhZHZpc2UoXyhtZXNzYWdlX2FkdmljZV9yZWZfbmVlZHNfZm9yY2UpKTsKK30KKwogc3RhdGljIGludCBwdXNoX3dpdGhfb3B0aW9ucyhzdHJ1Y3QgdHJhbnNwb3J0ICp0cmFuc3BvcnQsIGludCBmbGFncykKIHsKIAlpbnQgZXJyOwotCWludCBub25mYXN0Zm9yd2FyZDsKKwl1bnNpZ25lZCBpbnQgcmVqZWN0X3JlYXNvbnM7CiAKIAl0cmFuc3BvcnRfc2V0X3ZlcmJvc2l0eSh0cmFuc3BvcnQsIHZlcmJvc2l0eSwgcHJvZ3Jlc3MpOwogCkBAIC0yMzIsNyArMzAwLDcgQEAKIAlpZiAodmVyYm9zaXR5ID4gMCkKIAkJZnByaW50ZihzdGRlcnIsIF8oIlB1c2hpbmcgdG8gJXNcbiIpLCB0cmFuc3BvcnQtPnVybCk7CiAJZXJyID0gdHJhbnNwb3J0X3B1c2godHJhbnNwb3J0LCByZWZzcGVjX25yLCByZWZzcGVjLCBmbGFncywKLQkJCSAgICAgJm5vbmZhc3Rmb3J3YXJkKTsKKwkJCSAgICAgJnJlamVjdF9yZWFzb25zKTsKIAlpZiAoZXJyICE9IDApCiAJCWVycm9yKF8oImZhaWxlZCB0byBwdXNoIHNvbWUgcmVmcyB0byAnJXMnIiksIHRyYW5zcG9ydC0+dXJsKTsKIApAQCAtMjQwLDE4ICszMDgsMTkgQEAKIAlpZiAoIWVycikKIAkJcmV0dXJuIDA7CiAKLQlzd2l0Y2ggKG5vbmZhc3Rmb3J3YXJkKSB7Ci0JZGVmYXVsdDoKLQkJYnJlYWs7Ci0JY2FzZSBOT05fRkZfSEVBRDoKKwlpZiAocmVqZWN0X3JlYXNvbnMgJiBSRUpFQ1RfTk9OX0ZGX0hFQUQpIHsKIAkJYWR2aXNlX3B1bGxfYmVmb3JlX3B1c2goKTsKLQkJYnJlYWs7Ci0JY2FzZSBOT05fRkZfT1RIRVI6CisJfSBlbHNlIGlmIChyZWplY3RfcmVhc29ucyAmIFJFSkVDVF9OT05fRkZfT1RIRVIpIHsKIAkJaWYgKGRlZmF1bHRfbWF0Y2hpbmdfdXNlZCkKIAkJCWFkdmlzZV91c2VfdXBzdHJlYW0oKTsKIAkJZWxzZQogCQkJYWR2aXNlX2NoZWNrb3V0X3B1bGxfcHVzaCgpOwotCQlicmVhazsKKwl9IGVsc2UgaWYgKHJlamVjdF9yZWFzb25zICYgUkVKRUNUX0FMUkVBRFlfRVhJU1RTKSB7CisJCWFkdmlzZV9yZWZfYWxyZWFkeV9leGlzdHMoKTsKKwl9IGVsc2UgaWYgKHJlamVjdF9yZWFzb25zICYgUkVKRUNUX0ZFVENIX0ZJUlNUKSB7CisJCWFkdmlzZV9yZWZfZmV0Y2hfZmlyc3QoKTsKKwl9IGVsc2UgaWYgKHJlamVjdF9yZWFzb25zICYgUkVKRUNUX05FRURTX0ZPUkNFKSB7CisJCWFkdmlzZV9yZWZfbmVlZHNfZm9yY2UoKTsKIAl9CiAKIAlyZXR1cm4gMTsKQEAgLTI2MCw3ICszMjksNyBAQAogc3RhdGljIGludCBkb19wdXNoKGNvbnN0IGNoYXIgKnJlcG8sIGludCBmbGFncykKIHsKIAlpbnQgaSwgZXJyczsKLQlzdHJ1Y3QgcmVtb3RlICpyZW1vdGUgPSByZW1vdGVfZ2V0KHJlcG8pOworCXN0cnVjdCByZW1vdGUgKnJlbW90ZSA9IHB1c2hyZW1vdGVfZ2V0KHJlcG8pOwogCWNvbnN0IGNoYXIgKip1cmw7CiAJaW50IHVybF9ucjsKIApAQCAtMzU0LDI2ICs0MjMsMjkgQEAKIAljb25zdCBjaGFyICpyZXBvID0gTlVMTDsJLyogZGVmYXVsdCByZXBvc2l0b3J5ICovCiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7CiAJCU9QVF9fVkVSQk9TSVRZKCZ2ZXJib3NpdHkpLAotCQlPUFRfU1RSSU5HKCAwICwgInJlcG8iLCAmcmVwbywgInJlcG9zaXRvcnkiLCAicmVwb3NpdG9yeSIpLAotCQlPUFRfQklUKCAwICwgImFsbCIsICZmbGFncywgInB1c2ggYWxsIHJlZnMiLCBUUkFOU1BPUlRfUFVTSF9BTEwpLAotCQlPUFRfQklUKCAwICwgIm1pcnJvciIsICZmbGFncywgIm1pcnJvciBhbGwgcmVmcyIsCisJCU9QVF9TVFJJTkcoIDAgLCAicmVwbyIsICZyZXBvLCBOXygicmVwb3NpdG9yeSIpLCBOXygicmVwb3NpdG9yeSIpKSwKKwkJT1BUX0JJVCggMCAsICJhbGwiLCAmZmxhZ3MsIE5fKCJwdXNoIGFsbCByZWZzIiksIFRSQU5TUE9SVF9QVVNIX0FMTCksCisJCU9QVF9CSVQoIDAgLCAibWlycm9yIiwgJmZsYWdzLCBOXygibWlycm9yIGFsbCByZWZzIiksCiAJCQkgICAgKFRSQU5TUE9SVF9QVVNIX01JUlJPUnxUUkFOU1BPUlRfUFVTSF9GT1JDRSkpLAotCQlPUFRfQk9PTEVBTiggMCwgImRlbGV0ZSIsICZkZWxldGVyZWZzLCAiZGVsZXRlIHJlZnMiKSwKLQkJT1BUX0JPT0xFQU4oIDAgLCAidGFncyIsICZ0YWdzLCAicHVzaCB0YWdzIChjYW4ndCBiZSB1c2VkIHdpdGggLS1hbGwgb3IgLS1taXJyb3IpIiksCi0JCU9QVF9CSVQoJ24nICwgImRyeS1ydW4iLCAmZmxhZ3MsICJkcnkgcnVuIiwgVFJBTlNQT1JUX1BVU0hfRFJZX1JVTiksCi0JCU9QVF9CSVQoIDAsICAicG9yY2VsYWluIiwgJmZsYWdzLCAibWFjaGluZS1yZWFkYWJsZSBvdXRwdXQiLCBUUkFOU1BPUlRfUFVTSF9QT1JDRUxBSU4pLAotCQlPUFRfQklUKCdmJywgImZvcmNlIiwgJmZsYWdzLCAiZm9yY2UgdXBkYXRlcyIsIFRSQU5TUE9SVF9QVVNIX0ZPUkNFKSwKLQkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJyZWN1cnNlLXN1Ym1vZHVsZXMiLCAmZmxhZ3MsICJjaGVjayIsCi0JCQkiY29udHJvbHMgcmVjdXJzaXZlIHB1c2hpbmcgb2Ygc3VibW9kdWxlcyIsCisJCU9QVF9CT09MRUFOKCAwLCAiZGVsZXRlIiwgJmRlbGV0ZXJlZnMsIE5fKCJkZWxldGUgcmVmcyIpKSwKKwkJT1BUX0JPT0xFQU4oIDAgLCAidGFncyIsICZ0YWdzLCBOXygicHVzaCB0YWdzIChjYW4ndCBiZSB1c2VkIHdpdGggLS1hbGwgb3IgLS1taXJyb3IpIikpLAorCQlPUFRfQklUKCduJyAsICJkcnktcnVuIiwgJmZsYWdzLCBOXygiZHJ5IHJ1biIpLCBUUkFOU1BPUlRfUFVTSF9EUllfUlVOKSwKKwkJT1BUX0JJVCggMCwgICJwb3JjZWxhaW4iLCAmZmxhZ3MsIE5fKCJtYWNoaW5lLXJlYWRhYmxlIG91dHB1dCIpLCBUUkFOU1BPUlRfUFVTSF9QT1JDRUxBSU4pLAorCQlPUFRfQklUKCdmJywgImZvcmNlIiwgJmZsYWdzLCBOXygiZm9yY2UgdXBkYXRlcyIpLCBUUkFOU1BPUlRfUFVTSF9GT1JDRSksCisJCXsgT1BUSU9OX0NBTExCQUNLLCAwLCAicmVjdXJzZS1zdWJtb2R1bGVzIiwgJmZsYWdzLCBOXygiY2hlY2siKSwKKwkJCU5fKCJjb250cm9sIHJlY3Vyc2l2ZSBwdXNoaW5nIG9mIHN1Ym1vZHVsZXMiKSwKIAkJCVBBUlNFX09QVF9PUFRBUkcsIG9wdGlvbl9wYXJzZV9yZWN1cnNlX3N1Ym1vZHVsZXMgfSwKLQkJT1BUX0JPT0xFQU4oIDAgLCAidGhpbiIsICZ0aGluLCAidXNlIHRoaW4gcGFjayIpLAotCQlPUFRfU1RSSU5HKCAwICwgInJlY2VpdmUtcGFjayIsICZyZWNlaXZlcGFjaywgInJlY2VpdmUtcGFjayIsICJyZWNlaXZlIHBhY2sgcHJvZ3JhbSIpLAotCQlPUFRfU1RSSU5HKCAwICwgImV4ZWMiLCAmcmVjZWl2ZXBhY2ssICJyZWNlaXZlLXBhY2siLCAicmVjZWl2ZSBwYWNrIHByb2dyYW0iKSwKLQkJT1BUX0JJVCgndScsICJzZXQtdXBzdHJlYW0iLCAmZmxhZ3MsICJzZXQgdXBzdHJlYW0gZm9yIGdpdCBwdWxsL3N0YXR1cyIsCisJCU9QVF9CT09MRUFOKCAwICwgInRoaW4iLCAmdGhpbiwgTl8oInVzZSB0aGluIHBhY2siKSksCisJCU9QVF9TVFJJTkcoIDAgLCAicmVjZWl2ZS1wYWNrIiwgJnJlY2VpdmVwYWNrLCAicmVjZWl2ZS1wYWNrIiwgTl8oInJlY2VpdmUgcGFjayBwcm9ncmFtIikpLAorCQlPUFRfU1RSSU5HKCAwICwgImV4ZWMiLCAmcmVjZWl2ZXBhY2ssICJyZWNlaXZlLXBhY2siLCBOXygicmVjZWl2ZSBwYWNrIHByb2dyYW0iKSksCisJCU9QVF9CSVQoJ3UnLCAic2V0LXVwc3RyZWFtIiwgJmZsYWdzLCBOXygic2V0IHVwc3RyZWFtIGZvciBnaXQgcHVsbC9zdGF0dXMiKSwKIAkJCVRSQU5TUE9SVF9QVVNIX1NFVF9VUFNUUkVBTSksCi0JCU9QVF9CT09MKDAsICJwcm9ncmVzcyIsICZwcm9ncmVzcywgImZvcmNlIHByb2dyZXNzIHJlcG9ydGluZyIpLAotCQlPUFRfQklUKDAsICJwcnVuZSIsICZmbGFncywgInBydW5lIGxvY2FsbHkgcmVtb3ZlZCByZWZzIiwKKwkJT1BUX0JPT0woMCwgInByb2dyZXNzIiwgJnByb2dyZXNzLCBOXygiZm9yY2UgcHJvZ3Jlc3MgcmVwb3J0aW5nIikpLAorCQlPUFRfQklUKDAsICJwcnVuZSIsICZmbGFncywgTl8oInBydW5lIGxvY2FsbHkgcmVtb3ZlZCByZWZzIiksCiAJCQlUUkFOU1BPUlRfUFVTSF9QUlVORSksCisJCU9QVF9CSVQoMCwgIm5vLXZlcmlmeSIsICZmbGFncywgTl8oImJ5cGFzcyBwcmUtcHVzaCBob29rIiksIFRSQU5TUE9SVF9QVVNIX05PX0hPT0spLAorCQlPUFRfQklUKDAsICJmb2xsb3ctdGFncyIsICZmbGFncywgTl8oInB1c2ggbWlzc2luZyBidXQgcmVsZXZhbnQgdGFncyIpLAorCQkJVFJBTlNQT1JUX1BVU0hfRk9MTE9XX1RBR1MpLAogCQlPUFRfRU5EKCkKIAl9OwogCmRpZmYgLS1naXQgYS9idWlsdGluL3JlYWQtdHJlZS5jIGIvYnVpbHRpbi9yZWFkLXRyZWUuYwppbmRleCBkZjZjNGM4Li4wNDJhYzFiIDEwMDY0NAotLS0gYS9idWlsdGluL3JlYWQtdHJlZS5jCisrKyBiL2J1aWx0aW4vcmVhZC10cmVlLmMKQEAgLTMzLDcgKzMzLDcgQEAKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCByZWFkX3RyZWVfdXNhZ2VbXSA9IHsKLQkiZ2l0IHJlYWQtdHJlZSBbWy1tIFstLXRyaXZpYWxdIFstLWFnZ3Jlc3NpdmVdIHwgLS1yZXNldCB8IC0tcHJlZml4PTxwcmVmaXg+XSBbLXUgWy0tZXhjbHVkZS1wZXItZGlyZWN0b3J5PTxnaXRpZ25vcmU+XSB8IC1pXV0gWy0tbm8tc3BhcnNlLWNoZWNrb3V0XSBbLS1pbmRleC1vdXRwdXQ9PGZpbGU+XSAoLS1lbXB0eSB8IDx0cmVlLWlzaDE+IFs8dHJlZS1pc2gyPiBbPHRyZWUtaXNoMz5dXSkiLAorCU5fKCJnaXQgcmVhZC10cmVlIFtbLW0gWy0tdHJpdmlhbF0gWy0tYWdncmVzc2l2ZV0gfCAtLXJlc2V0IHwgLS1wcmVmaXg9PHByZWZpeD5dIFstdSBbLS1leGNsdWRlLXBlci1kaXJlY3Rvcnk9PGdpdGlnbm9yZT5dIHwgLWldXSBbLS1uby1zcGFyc2UtY2hlY2tvdXRdIFstLWluZGV4LW91dHB1dD08ZmlsZT5dICgtLWVtcHR5IHwgPHRyZWUtaXNoMT4gWzx0cmVlLWlzaDI+IFs8dHJlZS1pc2gzPl1dKSIpLAogCU5VTEwKIH07CiAKQEAgLTEwNCwzNyArMTA0LDM3IEBACiAJc3RydWN0IHVucGFja190cmVlc19vcHRpb25zIG9wdHM7CiAJaW50IHByZWZpeF9zZXQgPSAwOwogCWNvbnN0IHN0cnVjdCBvcHRpb24gcmVhZF90cmVlX29wdGlvbnNbXSA9IHsKLQkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJpbmRleC1vdXRwdXQiLCBOVUxMLCAiZmlsZSIsCi0JCSAgIndyaXRlIHJlc3VsdGluZyBpbmRleCB0byA8ZmlsZT4iLAorCQl7IE9QVElPTl9DQUxMQkFDSywgMCwgImluZGV4LW91dHB1dCIsIE5VTEwsIE5fKCJmaWxlIiksCisJCSAgTl8oIndyaXRlIHJlc3VsdGluZyBpbmRleCB0byA8ZmlsZT4iKSwKIAkJICBQQVJTRV9PUFRfTk9ORUcsIGluZGV4X291dHB1dF9jYiB9LAogCQlPUFRfU0VUX0lOVCgwLCAiZW1wdHkiLCAmcmVhZF9lbXB0eSwKLQkJCSAgICAib25seSBlbXB0eSB0aGUgaW5kZXgiLCAxKSwKLQkJT1BUX19WRVJCT1NFKCZvcHRzLnZlcmJvc2VfdXBkYXRlLCAiYmUgdmVyYm9zZSIpLAotCQlPUFRfR1JPVVAoIk1lcmdpbmciKSwKKwkJCSAgICBOXygib25seSBlbXB0eSB0aGUgaW5kZXgiKSwgMSksCisJCU9QVF9fVkVSQk9TRSgmb3B0cy52ZXJib3NlX3VwZGF0ZSwgTl8oImJlIHZlcmJvc2UiKSksCisJCU9QVF9HUk9VUChOXygiTWVyZ2luZyIpKSwKIAkJT1BUX1NFVF9JTlQoJ20nLCBOVUxMLCAmb3B0cy5tZXJnZSwKLQkJCSAgICAicGVyZm9ybSBhIG1lcmdlIGluIGFkZGl0aW9uIHRvIGEgcmVhZCIsIDEpLAorCQkJICAgIE5fKCJwZXJmb3JtIGEgbWVyZ2UgaW4gYWRkaXRpb24gdG8gYSByZWFkIiksIDEpLAogCQlPUFRfU0VUX0lOVCgwLCAidHJpdmlhbCIsICZvcHRzLnRyaXZpYWxfbWVyZ2VzX29ubHksCi0JCQkgICAgIjMtd2F5IG1lcmdlIGlmIG5vIGZpbGUgbGV2ZWwgbWVyZ2luZyByZXF1aXJlZCIsIDEpLAorCQkJICAgIE5fKCIzLXdheSBtZXJnZSBpZiBubyBmaWxlIGxldmVsIG1lcmdpbmcgcmVxdWlyZWQiKSwgMSksCiAJCU9QVF9TRVRfSU5UKDAsICJhZ2dyZXNzaXZlIiwgJm9wdHMuYWdncmVzc2l2ZSwKLQkJCSAgICAiMy13YXkgbWVyZ2UgaW4gcHJlc2VuY2Ugb2YgYWRkcyBhbmQgcmVtb3ZlcyIsIDEpLAorCQkJICAgIE5fKCIzLXdheSBtZXJnZSBpbiBwcmVzZW5jZSBvZiBhZGRzIGFuZCByZW1vdmVzIiksIDEpLAogCQlPUFRfU0VUX0lOVCgwLCAicmVzZXQiLCAmb3B0cy5yZXNldCwKLQkJCSAgICAic2FtZSBhcyAtbSwgYnV0IGRpc2NhcmQgdW5tZXJnZWQgZW50cmllcyIsIDEpLAotCQl7IE9QVElPTl9TVFJJTkcsIDAsICJwcmVmaXgiLCAmb3B0cy5wcmVmaXgsICI8c3ViZGlyZWN0b3J5Pi8iLAotCQkgICJyZWFkIHRoZSB0cmVlIGludG8gdGhlIGluZGV4IHVuZGVyIDxzdWJkaXJlY3Rvcnk+LyIsCisJCQkgICAgTl8oInNhbWUgYXMgLW0sIGJ1dCBkaXNjYXJkIHVubWVyZ2VkIGVudHJpZXMiKSwgMSksCisJCXsgT1BUSU9OX1NUUklORywgMCwgInByZWZpeCIsICZvcHRzLnByZWZpeCwgTl8oIjxzdWJkaXJlY3Rvcnk+LyIpLAorCQkgIE5fKCJyZWFkIHRoZSB0cmVlIGludG8gdGhlIGluZGV4IHVuZGVyIDxzdWJkaXJlY3Rvcnk+LyIpLAogCQkgIFBBUlNFX09QVF9OT05FRyB8IFBBUlNFX09QVF9MSVRFUkFMX0FSR0hFTFAgfSwKIAkJT1BUX1NFVF9JTlQoJ3UnLCBOVUxMLCAmb3B0cy51cGRhdGUsCi0JCQkgICAgInVwZGF0ZSB3b3JraW5nIHRyZWUgd2l0aCBtZXJnZSByZXN1bHQiLCAxKSwKKwkJCSAgICBOXygidXBkYXRlIHdvcmtpbmcgdHJlZSB3aXRoIG1lcmdlIHJlc3VsdCIpLCAxKSwKIAkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJleGNsdWRlLXBlci1kaXJlY3RvcnkiLCAmb3B0cywKLQkJICAiZ2l0aWdub3JlIiwKLQkJICAiYWxsb3cgZXhwbGljaXRseSBpZ25vcmVkIGZpbGVzIHRvIGJlIG92ZXJ3cml0dGVuIiwKKwkJICBOXygiZ2l0aWdub3JlIiksCisJCSAgTl8oImFsbG93IGV4cGxpY2l0bHkgaWdub3JlZCBmaWxlcyB0byBiZSBvdmVyd3JpdHRlbiIpLAogCQkgIFBBUlNFX09QVF9OT05FRywgZXhjbHVkZV9wZXJfZGlyZWN0b3J5X2NiIH0sCiAJCU9QVF9TRVRfSU5UKCdpJywgTlVMTCwgJm9wdHMuaW5kZXhfb25seSwKLQkJCSAgICAiZG9uJ3QgY2hlY2sgdGhlIHdvcmtpbmcgdHJlZSBhZnRlciBtZXJnaW5nIiwgMSksCi0JCU9QVF9fRFJZX1JVTigmb3B0cy5kcnlfcnVuLCAiZG9uJ3QgdXBkYXRlIHRoZSBpbmRleCBvciB0aGUgd29yayB0cmVlIiksCisJCQkgICAgTl8oImRvbid0IGNoZWNrIHRoZSB3b3JraW5nIHRyZWUgYWZ0ZXIgbWVyZ2luZyIpLCAxKSwKKwkJT1BUX19EUllfUlVOKCZvcHRzLmRyeV9ydW4sIE5fKCJkb24ndCB1cGRhdGUgdGhlIGluZGV4IG9yIHRoZSB3b3JrIHRyZWUiKSksCiAJCU9QVF9TRVRfSU5UKDAsICJuby1zcGFyc2UtY2hlY2tvdXQiLCAmb3B0cy5za2lwX3NwYXJzZV9jaGVja291dCwKLQkJCSAgICAic2tpcCBhcHBseWluZyBzcGFyc2UgY2hlY2tvdXQgZmlsdGVyIiwgMSksCisJCQkgICAgTl8oInNraXAgYXBwbHlpbmcgc3BhcnNlIGNoZWNrb3V0IGZpbHRlciIpLCAxKSwKIAkJT1BUX1NFVF9JTlQoMCwgImRlYnVnLXVucGFjayIsICZvcHRzLmRlYnVnX3VucGFjaywKLQkJCSAgICAiZGVidWcgdW5wYWNrLXRyZWVzIiwgMSksCisJCQkgICAgTl8oImRlYnVnIHVucGFjay10cmVlcyIpLCAxKSwKIAkJT1BUX0VORCgpCiAJfTsKIApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9yZWNlaXZlLXBhY2suYyBiL2J1aWx0aW4vcmVjZWl2ZS1wYWNrLmMKaW5kZXggMGFmYjhiMi4uZTNlYjVmYyAxMDA2NDQKLS0tIGEvYnVpbHRpbi9yZWNlaXZlLXBhY2suYworKysgYi9idWlsdGluL3JlY2VpdmUtcGFjay5jCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKICNpbmNsdWRlICJzaGExLWFycmF5LmgiCiAjaW5jbHVkZSAiY29ubmVjdGVkLmgiCisjaW5jbHVkZSAidmVyc2lvbi5oIgogCiBzdGF0aWMgY29uc3QgY2hhciByZWNlaXZlX3BhY2tfdXNhZ2VbXSA9ICJnaXQgcmVjZWl2ZS1wYWNrIDxnaXQtZGlyPiI7CiAKQEAgLTU4LDYgKzU5LDExIEBACiAKIHN0YXRpYyBpbnQgcmVjZWl2ZV9wYWNrX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKIHsKKwlpbnQgc3RhdHVzID0gcGFyc2VfaGlkZV9yZWZzX2NvbmZpZyh2YXIsIHZhbHVlLCAicmVjZWl2ZSIpOworCisJaWYgKHN0YXR1cykKKwkJcmV0dXJuIHN0YXR1czsKKwogCWlmIChzdHJjbXAodmFyLCAicmVjZWl2ZS5kZW55ZGVsZXRlcyIpID09IDApIHsKIAkJZGVueV9kZWxldGVzID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOwogCQlyZXR1cm4gMDsKQEAgLTExOCwxMyArMTI0LDE3IEBACiAKIHN0YXRpYyB2b2lkIHNob3dfcmVmKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7CisJaWYgKHJlZl9pc19oaWRkZW4ocGF0aCkpCisJCXJldHVybjsKKwogCWlmIChzZW50X2NhcGFiaWxpdGllcykKIAkJcGFja2V0X3dyaXRlKDEsICIlcyAlc1xuIiwgc2hhMV90b19oZXgoc2hhMSksIHBhdGgpOwogCWVsc2UKLQkJcGFja2V0X3dyaXRlKDEsICIlcyAlcyVjJXMlc1xuIiwKKwkJcGFja2V0X3dyaXRlKDEsICIlcyAlcyVjJXMlcyBhZ2VudD0lc1xuIiwKIAkJCSAgICAgc2hhMV90b19oZXgoc2hhMSksIHBhdGgsIDAsCiAJCQkgICAgICIgcmVwb3J0LXN0YXR1cyBkZWxldGUtcmVmcyBzaWRlLWJhbmQtNjRrIHF1aWV0IiwKLQkJCSAgICAgcHJlZmVyX29mc19kZWx0YSA/ICIgb2ZzLWRlbHRhIiA6ICIiKTsKKwkJCSAgICAgcHJlZmVyX29mc19kZWx0YSA/ICIgb2ZzLWRlbHRhIiA6ICIiLAorCQkJICAgICBnaXRfdXNlcl9hZ2VudF9zYW5pdGl6ZWQoKSk7CiAJc2VudF9jYXBhYmlsaXRpZXMgPSAxOwogfQogCkBAIC0xODAsOSArMTkwLDYgQEAKIAljaGFyIHJlZl9uYW1lW0ZMRVhfQVJSQVldOyAvKiBtb3JlICovCiB9OwogCi1zdGF0aWMgY29uc3QgY2hhciBwcmVfcmVjZWl2ZV9ob29rW10gPSAiaG9va3MvcHJlLXJlY2VpdmUiOwotc3RhdGljIGNvbnN0IGNoYXIgcG9zdF9yZWNlaXZlX2hvb2tbXSA9ICJob29rcy9wb3N0LXJlY2VpdmUiOwotCiBzdGF0aWMgdm9pZCBycF9lcnJvcihjb25zdCBjaGFyICplcnIsIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsIDEsIDIpKSk7CiBzdGF0aWMgdm9pZCBycF93YXJuaW5nKGNvbnN0IGNoYXIgKmVyciwgLi4uKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwgMSwgMikpKTsKIApAQCAtMjQwLDEwICsyNDcsMTAgQEAKIAljb25zdCBjaGFyICphcmd2WzJdOwogCWludCBjb2RlOwogCi0JaWYgKGFjY2Vzcyhob29rX25hbWUsIFhfT0spIDwgMCkKKwlhcmd2WzBdID0gZmluZF9ob29rKGhvb2tfbmFtZSk7CisJaWYgKCFhcmd2WzBdKQogCQlyZXR1cm4gMDsKIAotCWFyZ3ZbMF0gPSBob29rX25hbWU7CiAJYXJndlsxXSA9IE5VTEw7CiAKIAltZW1zZXQoJnByb2MsIDAsIHNpemVvZihwcm9jKSk7CkBAIC0zMjksMTUgKzMzNiwxNCBAQAogCiBzdGF0aWMgaW50IHJ1bl91cGRhdGVfaG9vayhzdHJ1Y3QgY29tbWFuZCAqY21kKQogewotCXN0YXRpYyBjb25zdCBjaGFyIHVwZGF0ZV9ob29rW10gPSAiaG9va3MvdXBkYXRlIjsKIAljb25zdCBjaGFyICphcmd2WzVdOwogCXN0cnVjdCBjaGlsZF9wcm9jZXNzIHByb2M7CiAJaW50IGNvZGU7CiAKLQlpZiAoYWNjZXNzKHVwZGF0ZV9ob29rLCBYX09LKSA8IDApCisJYXJndlswXSA9IGZpbmRfaG9vaygidXBkYXRlIik7CisJaWYgKCFhcmd2WzBdKQogCQlyZXR1cm4gMDsKIAotCWFyZ3ZbMF0gPSB1cGRhdGVfaG9vazsKIAlhcmd2WzFdID0gY21kLT5yZWZfbmFtZTsKIAlhcmd2WzJdID0gc2hhMV90b19oZXgoY21kLT5vbGRfc2hhMSk7CiAJYXJndlszXSA9IHNoYTFfdG9faGV4KGNtZC0+bmV3X3NoYTEpOwpAQCAtNDc4LDcgKzQ4NCw2IEBACiAJICAgICFwcmVmaXhjbXAobmFtZSwgInJlZnMvaGVhZHMvIikpIHsKIAkJc3RydWN0IG9iamVjdCAqb2xkX29iamVjdCwgKm5ld19vYmplY3Q7CiAJCXN0cnVjdCBjb21taXQgKm9sZF9jb21taXQsICpuZXdfY29tbWl0OwotCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKmJhc2VzLCAqZW50OwogCiAJCW9sZF9vYmplY3QgPSBwYXJzZV9vYmplY3Qob2xkX3NoYTEpOwogCQluZXdfb2JqZWN0ID0gcGFyc2Vfb2JqZWN0KG5ld19zaGExKTsKQEAgLTQ5MSwxMiArNDk2LDcgQEAKIAkJfQogCQlvbGRfY29tbWl0ID0gKHN0cnVjdCBjb21taXQgKilvbGRfb2JqZWN0OwogCQluZXdfY29tbWl0ID0gKHN0cnVjdCBjb21taXQgKiluZXdfb2JqZWN0OwotCQliYXNlcyA9IGdldF9tZXJnZV9iYXNlcyhvbGRfY29tbWl0LCBuZXdfY29tbWl0LCAxKTsKLQkJZm9yIChlbnQgPSBiYXNlczsgZW50OyBlbnQgPSBlbnQtPm5leHQpCi0JCQlpZiAoIWhhc2hjbXAob2xkX3NoYTEsIGVudC0+aXRlbS0+b2JqZWN0LnNoYTEpKQotCQkJCWJyZWFrOwotCQlmcmVlX2NvbW1pdF9saXN0KGJhc2VzKTsKLQkJaWYgKCFlbnQpIHsKKwkJaWYgKCFpbl9tZXJnZV9iYXNlcyhvbGRfY29tbWl0LCBuZXdfY29tbWl0KSkgewogCQkJcnBfZXJyb3IoImRlbnlpbmcgbm9uLWZhc3QtZm9yd2FyZCAlcyIKIAkJCQkgIiAoeW91IHNob3VsZCBwdWxsIGZpcnN0KSIsIG5hbWUpOwogCQkJcmV0dXJuICJub24tZmFzdC1mb3J3YXJkIjsKQEAgLTUzNiwyNCArNTM2LDI1IEBACiAJfQogfQogCi1zdGF0aWMgY2hhciB1cGRhdGVfcG9zdF9ob29rW10gPSAiaG9va3MvcG9zdC11cGRhdGUiOwotCiBzdGF0aWMgdm9pZCBydW5fdXBkYXRlX3Bvc3RfaG9vayhzdHJ1Y3QgY29tbWFuZCAqY29tbWFuZHMpCiB7CiAJc3RydWN0IGNvbW1hbmQgKmNtZDsKIAlpbnQgYXJnYzsKIAljb25zdCBjaGFyICoqYXJndjsKIAlzdHJ1Y3QgY2hpbGRfcHJvY2VzcyBwcm9jOworCWNoYXIgKmhvb2s7CiAKKwlob29rID0gZmluZF9ob29rKCJwb3N0LXVwZGF0ZSIpOwogCWZvciAoYXJnYyA9IDAsIGNtZCA9IGNvbW1hbmRzOyBjbWQ7IGNtZCA9IGNtZC0+bmV4dCkgewogCQlpZiAoY21kLT5lcnJvcl9zdHJpbmcgfHwgY21kLT5kaWRfbm90X2V4aXN0KQogCQkJY29udGludWU7CiAJCWFyZ2MrKzsKIAl9Ci0JaWYgKCFhcmdjIHx8IGFjY2Vzcyh1cGRhdGVfcG9zdF9ob29rLCBYX09LKSA8IDApCisJaWYgKCFhcmdjIHx8ICFob29rKQogCQlyZXR1cm47CisKIAlhcmd2ID0geG1hbGxvYyhzaXplb2YoKmFyZ3YpICogKDIgKyBhcmdjKSk7Ci0JYXJndlswXSA9IHVwZGF0ZV9wb3N0X2hvb2s7CisJYXJndlswXSA9IGhvb2s7CiAKIAlmb3IgKGFyZ2MgPSAxLCBjbWQgPSBjb21tYW5kczsgY21kOyBjbWQgPSBjbWQtPm5leHQpIHsKIAkJY2hhciAqcDsKQEAgLTY5Miw2ICs2OTMsMjAgQEAKIAlyZXR1cm4gLTE7IC8qIGVuZCBvZiBsaXN0ICovCiB9CiAKK3N0YXRpYyB2b2lkIHJlamVjdF91cGRhdGVzX3RvX2hpZGRlbihzdHJ1Y3QgY29tbWFuZCAqY29tbWFuZHMpCit7CisJc3RydWN0IGNvbW1hbmQgKmNtZDsKKworCWZvciAoY21kID0gY29tbWFuZHM7IGNtZDsgY21kID0gY21kLT5uZXh0KSB7CisJCWlmIChjbWQtPmVycm9yX3N0cmluZyB8fCAhcmVmX2lzX2hpZGRlbihjbWQtPnJlZl9uYW1lKSkKKwkJCWNvbnRpbnVlOworCQlpZiAoaXNfbnVsbF9zaGExKGNtZC0+bmV3X3NoYTEpKQorCQkJY21kLT5lcnJvcl9zdHJpbmcgPSAiZGVueSBkZWxldGluZyBhIGhpZGRlbiByZWYiOworCQllbHNlCisJCQljbWQtPmVycm9yX3N0cmluZyA9ICJkZW55IHVwZGF0aW5nIGEgaGlkZGVuIHJlZiI7CisJfQorfQorCiBzdGF0aWMgdm9pZCBleGVjdXRlX2NvbW1hbmRzKHN0cnVjdCBjb21tYW5kICpjb21tYW5kcywgY29uc3QgY2hhciAqdW5wYWNrZXJfZXJyb3IpCiB7CiAJc3RydWN0IGNvbW1hbmQgKmNtZDsKQEAgLTY5OSw3ICs3MTQsNyBAQAogCiAJaWYgKHVucGFja2VyX2Vycm9yKSB7CiAJCWZvciAoY21kID0gY29tbWFuZHM7IGNtZDsgY21kID0gY21kLT5uZXh0KQotCQkJY21kLT5lcnJvcl9zdHJpbmcgPSAibi9hICh1bnBhY2tlciBlcnJvcikiOworCQkJY21kLT5lcnJvcl9zdHJpbmcgPSAidW5wYWNrZXIgZXJyb3IiOwogCQlyZXR1cm47CiAJfQogCkBAIC03MDgsNyArNzIzLDkgQEAKIAkJCQkgICAgICAgMCwgJmNtZCkpCiAJCXNldF9jb25uZWN0aXZpdHlfZXJyb3JzKGNvbW1hbmRzKTsKIAotCWlmIChydW5fcmVjZWl2ZV9ob29rKGNvbW1hbmRzLCBwcmVfcmVjZWl2ZV9ob29rLCAwKSkgeworCXJlamVjdF91cGRhdGVzX3RvX2hpZGRlbihjb21tYW5kcyk7CisKKwlpZiAocnVuX3JlY2VpdmVfaG9vayhjb21tYW5kcywgInByZS1yZWNlaXZlIiwgMCkpIHsKIAkJZm9yIChjbWQgPSBjb21tYW5kczsgY21kOyBjbWQgPSBjbWQtPm5leHQpIHsKIAkJCWlmICghY21kLT5lcnJvcl9zdHJpbmcpCiAJCQkJY21kLT5lcnJvcl9zdHJpbmcgPSAicHJlLXJlY2VpdmUgaG9vayBkZWNsaW5lZCI7CkBAIC03MzcsMTcgKzc1NCwxNSBAQAogCXN0cnVjdCBjb21tYW5kICpjb21tYW5kcyA9IE5VTEw7CiAJc3RydWN0IGNvbW1hbmQgKipwID0gJmNvbW1hbmRzOwogCWZvciAoOzspIHsKLQkJc3RhdGljIGNoYXIgbGluZVsxMDAwXTsKKwkJY2hhciAqbGluZTsKIAkJdW5zaWduZWQgY2hhciBvbGRfc2hhMVsyMF0sIG5ld19zaGExWzIwXTsKIAkJc3RydWN0IGNvbW1hbmQgKmNtZDsKIAkJY2hhciAqcmVmbmFtZTsKIAkJaW50IGxlbiwgcmVmbGVuOwogCi0JCWxlbiA9IHBhY2tldF9yZWFkX2xpbmUoMCwgbGluZSwgc2l6ZW9mKGxpbmUpKTsKLQkJaWYgKCFsZW4pCisJCWxpbmUgPSBwYWNrZXRfcmVhZF9saW5lKDAsICZsZW4pOworCQlpZiAoIWxpbmUpCiAJCQlicmVhazsKLQkJaWYgKGxpbmVbbGVuLTFdID09ICdcbicpCi0JCQlsaW5lWy0tbGVuXSA9IDA7CiAJCWlmIChsZW4gPCA4MyB8fAogCQkgICAgbGluZVs0MF0gIT0gJyAnIHx8CiAJCSAgICBsaW5lWzgxXSAhPSAnICcgfHwKQEAgLTc5OSw3ICs4MTQsNyBAQAogCiBzdGF0aWMgY29uc3QgY2hhciAqcGFja19sb2NrZmlsZTsKIAotc3RhdGljIGNvbnN0IGNoYXIgKnVucGFjayh2b2lkKQorc3RhdGljIGNvbnN0IGNoYXIgKnVucGFjayhpbnQgZXJyX2ZkKQogewogCXN0cnVjdCBwYWNrX2hlYWRlciBoZHI7CiAJY29uc3QgY2hhciAqaGRyX2VycjsKQEAgLTgxMSwxNCArODI2LDE4IEBACiAJCQkgICAgOiAwKTsKIAogCWhkcl9lcnIgPSBwYXJzZV9wYWNrX2hlYWRlcigmaGRyKTsKLQlpZiAoaGRyX2VycikKKwlpZiAoaGRyX2VycikgeworCQlpZiAoZXJyX2ZkID4gMCkKKwkJCWNsb3NlKGVycl9mZCk7CiAJCXJldHVybiBoZHJfZXJyOworCX0KIAlzbnByaW50ZihoZHJfYXJnLCBzaXplb2YoaGRyX2FyZyksCiAJCQkiLS1wYWNrX2hlYWRlcj0lIlBSSXUzMiIsJSJQUkl1MzIsCiAJCQludG9obChoZHIuaGRyX3ZlcnNpb24pLCBudG9obChoZHIuaGRyX2VudHJpZXMpKTsKIAogCWlmIChudG9obChoZHIuaGRyX2VudHJpZXMpIDwgdW5wYWNrX2xpbWl0KSB7CiAJCWludCBjb2RlLCBpID0gMDsKKwkJc3RydWN0IGNoaWxkX3Byb2Nlc3MgY2hpbGQ7CiAJCWNvbnN0IGNoYXIgKnVucGFja2VyWzVdOwogCQl1bnBhY2tlcltpKytdID0gInVucGFjay1vYmplY3RzIjsKIAkJaWYgKHF1aWV0KQpAQCAtODI3LDcgKzg0NiwxMiBAQAogCQkJdW5wYWNrZXJbaSsrXSA9ICItLXN0cmljdCI7CiAJCXVucGFja2VyW2krK10gPSBoZHJfYXJnOwogCQl1bnBhY2tlcltpKytdID0gTlVMTDsKLQkJY29kZSA9IHJ1bl9jb21tYW5kX3Zfb3B0KHVucGFja2VyLCBSVU5fR0lUX0NNRCk7CisJCW1lbXNldCgmY2hpbGQsIDAsIHNpemVvZihjaGlsZCkpOworCQljaGlsZC5hcmd2ID0gdW5wYWNrZXI7CisJCWNoaWxkLm5vX3N0ZG91dCA9IDE7CisJCWNoaWxkLmVyciA9IGVycl9mZDsKKwkJY2hpbGQuZ2l0X2NtZCA9IDE7CisJCWNvZGUgPSBydW5fY29tbWFuZCgmY2hpbGQpOwogCQlpZiAoIWNvZGUpCiAJCQlyZXR1cm4gTlVMTDsKIAkJcmV0dXJuICJ1bnBhY2stb2JqZWN0cyBhYm5vcm1hbCBleGl0IjsKQEAgLTg1Miw2ICs4NzYsNyBAQAogCQltZW1zZXQoJmlwLCAwLCBzaXplb2YoaXApKTsKIAkJaXAuYXJndiA9IGtlZXBlcjsKIAkJaXAub3V0ID0gLTE7CisJCWlwLmVyciA9IGVycl9mZDsKIAkJaXAuZ2l0X2NtZCA9IDE7CiAJCXN0YXR1cyA9IHN0YXJ0X2NvbW1hbmQoJmlwKTsKIAkJaWYgKHN0YXR1cykgewpAQCAtODY4LDYgKzg5MywyNiBAQAogCX0KIH0KIAorc3RhdGljIGNvbnN0IGNoYXIgKnVucGFja193aXRoX3NpZGViYW5kKHZvaWQpCit7CisJc3RydWN0IGFzeW5jIG11eGVyOworCWNvbnN0IGNoYXIgKnJldDsKKworCWlmICghdXNlX3NpZGViYW5kKQorCQlyZXR1cm4gdW5wYWNrKDApOworCisJbWVtc2V0KCZtdXhlciwgMCwgc2l6ZW9mKG11eGVyKSk7CisJbXV4ZXIucHJvYyA9IGNvcHlfdG9fc2lkZWJhbmQ7CisJbXV4ZXIuaW4gPSAtMTsKKwlpZiAoc3RhcnRfYXN5bmMoJm11eGVyKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXQgPSB1bnBhY2sobXV4ZXIuaW4pOworCisJZmluaXNoX2FzeW5jKCZtdXhlcik7CisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIHZvaWQgcmVwb3J0KHN0cnVjdCBjb21tYW5kICpjb21tYW5kcywgY29uc3QgY2hhciAqdW5wYWNrX3N0YXR1cykKIHsKIAlzdHJ1Y3QgY29tbWFuZCAqY21kOwpAQCAtODg4LDcgKzkzMyw3IEBACiAJaWYgKHVzZV9zaWRlYmFuZCkKIAkJc2VuZF9zaWRlYmFuZCgxLCAxLCBidWYuYnVmLCBidWYubGVuLCB1c2Vfc2lkZWJhbmQpOwogCWVsc2UKLQkJc2FmZV93cml0ZSgxLCBidWYuYnVmLCBidWYubGVuKTsKKwkJd3JpdGVfb3JfZGllKDEsIGJ1Zi5idWYsIGJ1Zi5sZW4pOwogCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogfQogCkBAIC05NjUsMTkgKzEwMTAsMjAgQEAKIAkJY29uc3QgY2hhciAqdW5wYWNrX3N0YXR1cyA9IE5VTEw7CiAKIAkJaWYgKCFkZWxldGVfb25seShjb21tYW5kcykpCi0JCQl1bnBhY2tfc3RhdHVzID0gdW5wYWNrKCk7CisJCQl1bnBhY2tfc3RhdHVzID0gdW5wYWNrX3dpdGhfc2lkZWJhbmQoKTsKIAkJZXhlY3V0ZV9jb21tYW5kcyhjb21tYW5kcywgdW5wYWNrX3N0YXR1cyk7CiAJCWlmIChwYWNrX2xvY2tmaWxlKQogCQkJdW5saW5rX29yX3dhcm4ocGFja19sb2NrZmlsZSk7CiAJCWlmIChyZXBvcnRfc3RhdHVzKQogCQkJcmVwb3J0KGNvbW1hbmRzLCB1bnBhY2tfc3RhdHVzKTsKLQkJcnVuX3JlY2VpdmVfaG9vayhjb21tYW5kcywgcG9zdF9yZWNlaXZlX2hvb2ssIDEpOworCQlydW5fcmVjZWl2ZV9ob29rKGNvbW1hbmRzLCAicG9zdC1yZWNlaXZlIiwgMSk7CiAJCXJ1bl91cGRhdGVfcG9zdF9ob29rKGNvbW1hbmRzKTsKIAkJaWYgKGF1dG9fZ2MpIHsKIAkJCWNvbnN0IGNoYXIgKmFyZ3ZfZ2NfYXV0b1tdID0gewogCQkJCSJnYyIsICItLWF1dG8iLCAiLS1xdWlldCIsIE5VTEwsCiAJCQl9OwotCQkJcnVuX2NvbW1hbmRfdl9vcHQoYXJndl9nY19hdXRvLCBSVU5fR0lUX0NNRCk7CisJCQlpbnQgb3B0ID0gUlVOX0dJVF9DTUQgfCBSVU5fQ09NTUFORF9TVERPVVRfVE9fU1RERVJSOworCQkJcnVuX2NvbW1hbmRfdl9vcHQoYXJndl9nY19hdXRvLCBvcHQpOwogCQl9CiAJCWlmIChhdXRvX3VwZGF0ZV9zZXJ2ZXJfaW5mbykKIAkJCXVwZGF0ZV9zZXJ2ZXJfaW5mbygwKTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4vcmVmbG9nLmMgYi9idWlsdGluL3JlZmxvZy5jCmluZGV4IDA2MmQ3ZGEuLjcyYTBhZjcgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vcmVmbG9nLmMKKysrIGIvYnVpbHRpbi9yZWZsb2cuYwpAQCAtMzMwLDggKzMzMCwxMCBAQAogCQlwcmludGYoImtlZXAgJXMiLCBtZXNzYWdlKTsKIAlyZXR1cm4gMDsKICBwcnVuZToKLQlpZiAoIWNiLT5uZXdsb2cgfHwgY2ItPmNtZC0+dmVyYm9zZSkKLQkJcHJpbnRmKCIlc3BydW5lICVzIiwgY2ItPm5ld2xvZyA/ICIiIDogIndvdWxkICIsIG1lc3NhZ2UpOworCWlmICghY2ItPm5ld2xvZykKKwkJcHJpbnRmKCJ3b3VsZCBwcnVuZSAlcyIsIG1lc3NhZ2UpOworCWVsc2UgaWYgKGNiLT5jbWQtPnZlcmJvc2UpCisJCXByaW50ZigicHJ1bmUgJXMiLCBtZXNzYWdlKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNDEyLDcgKzQxNCw3IEBACiAJCWlmIChjYi51bnJlYWNoYWJsZV9leHBpcmVfa2luZCA9PSBVRV9IRUFEKSB7CiAJCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKmVsZW07CiAJCQlmb3IgKGVsZW0gPSB0aXBzOyBlbGVtOyBlbGVtID0gZWxlbS0+bmV4dCkKLQkJCQljbGVhcl9jb21taXRfbWFya3ModGlwX2NvbW1pdCwgUkVBQ0hBQkxFKTsKKwkJCQljbGVhcl9jb21taXRfbWFya3MoZWxlbS0+aXRlbSwgUkVBQ0hBQkxFKTsKIAkJCWZyZWVfY29tbWl0X2xpc3QodGlwcyk7CiAJCX0gZWxzZSB7CiAJCQljbGVhcl9jb21taXRfbWFya3ModGlwX2NvbW1pdCwgUkVBQ0hBQkxFKTsKQEAgLTUwOCwyNiArNTEwLDI3IEBACiAKIHN0YXRpYyBpbnQgcmVmbG9nX2V4cGlyZV9jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqY2IpCiB7Ci0JY29uc3QgY2hhciAqbGFzdGRvdCA9IHN0cnJjaHIodmFyLCAnLicpOworCWNvbnN0IGNoYXIgKnBhdHRlcm4sICprZXk7CisJaW50IHBhdHRlcm5fbGVuOwogCXVuc2lnbmVkIGxvbmcgZXhwaXJlOwogCWludCBzbG90OwogCXN0cnVjdCByZWZsb2dfZXhwaXJlX2NmZyAqZW50OwogCi0JaWYgKCFsYXN0ZG90IHx8IHByZWZpeGNtcCh2YXIsICJnYy4iKSkKKwlpZiAocGFyc2VfY29uZmlnX2tleSh2YXIsICJnYyIsICZwYXR0ZXJuLCAmcGF0dGVybl9sZW4sICZrZXkpIDwgMCkKIAkJcmV0dXJuIGdpdF9kZWZhdWx0X2NvbmZpZyh2YXIsIHZhbHVlLCBjYik7CiAKLQlpZiAoIXN0cmNtcChsYXN0ZG90LCAiLnJlZmxvZ2V4cGlyZSIpKSB7CisJaWYgKCFzdHJjbXAoa2V5LCAicmVmbG9nZXhwaXJlIikpIHsKIAkJc2xvdCA9IEVYUElSRV9UT1RBTDsKIAkJaWYgKHBhcnNlX2V4cGlyZV9jZmdfdmFsdWUodmFyLCB2YWx1ZSwgJmV4cGlyZSkpCiAJCQlyZXR1cm4gLTE7Ci0JfSBlbHNlIGlmICghc3RyY21wKGxhc3Rkb3QsICIucmVmbG9nZXhwaXJldW5yZWFjaGFibGUiKSkgeworCX0gZWxzZSBpZiAoIXN0cmNtcChrZXksICJyZWZsb2dleHBpcmV1bnJlYWNoYWJsZSIpKSB7CiAJCXNsb3QgPSBFWFBJUkVfVU5SRUFDSDsKIAkJaWYgKHBhcnNlX2V4cGlyZV9jZmdfdmFsdWUodmFyLCB2YWx1ZSwgJmV4cGlyZSkpCiAJCQlyZXR1cm4gLTE7CiAJfSBlbHNlCiAJCXJldHVybiBnaXRfZGVmYXVsdF9jb25maWcodmFyLCB2YWx1ZSwgY2IpOwogCi0JaWYgKGxhc3Rkb3QgPT0gdmFyICsgMikgeworCWlmICghcGF0dGVybikgewogCQlzd2l0Y2ggKHNsb3QpIHsKIAkJY2FzZSBFWFBJUkVfVE9UQUw6CiAJCQlkZWZhdWx0X3JlZmxvZ19leHBpcmUgPSBleHBpcmU7CkBAIC01MzksNyArNTQyLDcgQEAKIAkJcmV0dXJuIDA7CiAJfQogCi0JZW50ID0gZmluZF9jZmdfZW50KHZhciArIDMsIGxhc3Rkb3QgLSAodmFyKzMpKTsKKwllbnQgPSBmaW5kX2NmZ19lbnQocGF0dGVybiwgcGF0dGVybl9sZW4pOwogCWlmICghZW50KQogCQlyZXR1cm4gLTE7CiAJc3dpdGNoIChzbG90KSB7CmRpZmYgLS1naXQgYS9idWlsdGluL3JlbW90ZS5jIGIvYnVpbHRpbi9yZW1vdGUuYwppbmRleCA5MjAyNjJkLi41ZTU0ZDM2IDEwMDY0NAotLS0gYS9idWlsdGluL3JlbW90ZS5jCisrKyBiL2J1aWx0aW4vcmVtb3RlLmMKQEAgLTgsNjYgKzgsNjYgQEAKICNpbmNsdWRlICJyZWZzLmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9yZW1vdGVfdXNhZ2VbXSA9IHsKLQkiZ2l0IHJlbW90ZSBbLXYgfCAtLXZlcmJvc2VdIiwKLQkiZ2l0IHJlbW90ZSBhZGQgWy10IDxicmFuY2g+XSBbLW0gPG1hc3Rlcj5dIFstZl0gWy0tdGFnc3wtLW5vLXRhZ3NdIFstLW1pcnJvcj08ZmV0Y2h8cHVzaD5dIDxuYW1lPiA8dXJsPiIsCi0JImdpdCByZW1vdGUgcmVuYW1lIDxvbGQ+IDxuZXc+IiwKLQkiZ2l0IHJlbW90ZSBybSA8bmFtZT4iLAotCSJnaXQgcmVtb3RlIHNldC1oZWFkIDxuYW1lPiAoLWEgfCAtZCB8IDxicmFuY2g+KSIsCi0JImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSBzaG93IFstbl0gPG5hbWU+IiwKLQkiZ2l0IHJlbW90ZSBwcnVuZSBbLW4gfCAtLWRyeS1ydW5dIDxuYW1lPiIsCi0JImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSB1cGRhdGUgWy1wIHwgLS1wcnVuZV0gWyg8Z3JvdXA+IHwgPHJlbW90ZT4pLi4uXSIsCi0JImdpdCByZW1vdGUgc2V0LWJyYW5jaGVzIFstLWFkZF0gPG5hbWU+IDxicmFuY2g+Li4uIiwKLQkiZ2l0IHJlbW90ZSBzZXQtdXJsIFstLXB1c2hdIDxuYW1lPiA8bmV3dXJsPiBbPG9sZHVybD5dIiwKLQkiZ2l0IHJlbW90ZSBzZXQtdXJsIC0tYWRkIDxuYW1lPiA8bmV3dXJsPiIsCi0JImdpdCByZW1vdGUgc2V0LXVybCAtLWRlbGV0ZSA8bmFtZT4gPHVybD4iLAorCU5fKCJnaXQgcmVtb3RlIFstdiB8IC0tdmVyYm9zZV0iKSwKKwlOXygiZ2l0IHJlbW90ZSBhZGQgWy10IDxicmFuY2g+XSBbLW0gPG1hc3Rlcj5dIFstZl0gWy0tdGFnc3wtLW5vLXRhZ3NdIFstLW1pcnJvcj08ZmV0Y2h8cHVzaD5dIDxuYW1lPiA8dXJsPiIpLAorCU5fKCJnaXQgcmVtb3RlIHJlbmFtZSA8b2xkPiA8bmV3PiIpLAorCU5fKCJnaXQgcmVtb3RlIHJlbW92ZSA8bmFtZT4iKSwKKwlOXygiZ2l0IHJlbW90ZSBzZXQtaGVhZCA8bmFtZT4gKC1hIHwgLWQgfCA8YnJhbmNoPikiKSwKKwlOXygiZ2l0IHJlbW90ZSBbLXYgfCAtLXZlcmJvc2VdIHNob3cgWy1uXSA8bmFtZT4iKSwKKwlOXygiZ2l0IHJlbW90ZSBwcnVuZSBbLW4gfCAtLWRyeS1ydW5dIDxuYW1lPiIpLAorCU5fKCJnaXQgcmVtb3RlIFstdiB8IC0tdmVyYm9zZV0gdXBkYXRlIFstcCB8IC0tcHJ1bmVdIFsoPGdyb3VwPiB8IDxyZW1vdGU+KS4uLl0iKSwKKwlOXygiZ2l0IHJlbW90ZSBzZXQtYnJhbmNoZXMgWy0tYWRkXSA8bmFtZT4gPGJyYW5jaD4uLi4iKSwKKwlOXygiZ2l0IHJlbW90ZSBzZXQtdXJsIFstLXB1c2hdIDxuYW1lPiA8bmV3dXJsPiBbPG9sZHVybD5dIiksCisJTl8oImdpdCByZW1vdGUgc2V0LXVybCAtLWFkZCA8bmFtZT4gPG5ld3VybD4iKSwKKwlOXygiZ2l0IHJlbW90ZSBzZXQtdXJsIC0tZGVsZXRlIDxuYW1lPiA8dXJsPiIpLAogCU5VTEwKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9yZW1vdGVfYWRkX3VzYWdlW10gPSB7Ci0JImdpdCByZW1vdGUgYWRkIFs8b3B0aW9ucz5dIDxuYW1lPiA8dXJsPiIsCisJTl8oImdpdCByZW1vdGUgYWRkIFs8b3B0aW9ucz5dIDxuYW1lPiA8dXJsPiIpLAogCU5VTEwKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9yZW1vdGVfcmVuYW1lX3VzYWdlW10gPSB7Ci0JImdpdCByZW1vdGUgcmVuYW1lIDxvbGQ+IDxuZXc+IiwKKwlOXygiZ2l0IHJlbW90ZSByZW5hbWUgPG9sZD4gPG5ldz4iKSwKIAlOVUxMCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGJ1aWx0aW5fcmVtb3RlX3JtX3VzYWdlW10gPSB7Ci0JImdpdCByZW1vdGUgcm0gPG5hbWU+IiwKKwlOXygiZ2l0IHJlbW90ZSByZW1vdmUgPG5hbWU+IiksCiAJTlVMTAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBidWlsdGluX3JlbW90ZV9zZXRoZWFkX3VzYWdlW10gPSB7Ci0JImdpdCByZW1vdGUgc2V0LWhlYWQgPG5hbWU+ICgtYSB8IC1kIHwgPGJyYW5jaD5dKSIsCisJTl8oImdpdCByZW1vdGUgc2V0LWhlYWQgPG5hbWU+ICgtYSB8IC1kIHwgPGJyYW5jaD4pIiksCiAJTlVMTAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBidWlsdGluX3JlbW90ZV9zZXRicmFuY2hlc191c2FnZVtdID0gewotCSJnaXQgcmVtb3RlIHNldC1icmFuY2hlcyA8bmFtZT4gPGJyYW5jaD4uLi4iLAotCSJnaXQgcmVtb3RlIHNldC1icmFuY2hlcyAtLWFkZCA8bmFtZT4gPGJyYW5jaD4uLi4iLAorCU5fKCJnaXQgcmVtb3RlIHNldC1icmFuY2hlcyA8bmFtZT4gPGJyYW5jaD4uLi4iKSwKKwlOXygiZ2l0IHJlbW90ZSBzZXQtYnJhbmNoZXMgLS1hZGQgPG5hbWU+IDxicmFuY2g+Li4uIiksCiAJTlVMTAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBidWlsdGluX3JlbW90ZV9zaG93X3VzYWdlW10gPSB7Ci0JImdpdCByZW1vdGUgc2hvdyBbPG9wdGlvbnM+XSA8bmFtZT4iLAorCU5fKCJnaXQgcmVtb3RlIHNob3cgWzxvcHRpb25zPl0gPG5hbWU+IiksCiAJTlVMTAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBidWlsdGluX3JlbW90ZV9wcnVuZV91c2FnZVtdID0gewotCSJnaXQgcmVtb3RlIHBydW5lIFs8b3B0aW9ucz5dIDxuYW1lPiIsCisJTl8oImdpdCByZW1vdGUgcHJ1bmUgWzxvcHRpb25zPl0gPG5hbWU+IiksCiAJTlVMTAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBidWlsdGluX3JlbW90ZV91cGRhdGVfdXNhZ2VbXSA9IHsKLQkiZ2l0IHJlbW90ZSB1cGRhdGUgWzxvcHRpb25zPl0gWzxncm91cD4gfCA8cmVtb3RlPl0uLi4iLAorCU5fKCJnaXQgcmVtb3RlIHVwZGF0ZSBbPG9wdGlvbnM+XSBbPGdyb3VwPiB8IDxyZW1vdGU+XS4uLiIpLAogCU5VTEwKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9yZW1vdGVfc2V0dXJsX3VzYWdlW10gPSB7Ci0JImdpdCByZW1vdGUgc2V0LXVybCBbLS1wdXNoXSA8bmFtZT4gPG5ld3VybD4gWzxvbGR1cmw+XSIsCi0JImdpdCByZW1vdGUgc2V0LXVybCAtLWFkZCA8bmFtZT4gPG5ld3VybD4iLAotCSJnaXQgcmVtb3RlIHNldC11cmwgLS1kZWxldGUgPG5hbWU+IDx1cmw+IiwKKwlOXygiZ2l0IHJlbW90ZSBzZXQtdXJsIFstLXB1c2hdIDxuYW1lPiA8bmV3dXJsPiBbPG9sZHVybD5dIiksCisJTl8oImdpdCByZW1vdGUgc2V0LXVybCAtLWFkZCA8bmFtZT4gPG5ld3VybD4iKSwKKwlOXygiZ2l0IHJlbW90ZSBzZXQtdXJsIC0tZGVsZXRlIDxuYW1lPiA8dXJsPiIpLAogCU5VTEwKIH07CiAKQEAgLTE2MCwxNyArMTYwLDE3IEBACiAJaW50IGk7CiAKIAlzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKLQkJT1BUX0JPT0xFQU4oJ2YnLCAiZmV0Y2giLCAmZmV0Y2gsICJmZXRjaCB0aGUgcmVtb3RlIGJyYW5jaGVzIiksCisJCU9QVF9CT09MRUFOKCdmJywgImZldGNoIiwgJmZldGNoLCBOXygiZmV0Y2ggdGhlIHJlbW90ZSBicmFuY2hlcyIpKSwKIAkJT1BUX1NFVF9JTlQoMCwgInRhZ3MiLCAmZmV0Y2hfdGFncywKLQkJCSAgICAiaW1wb3J0IGFsbCB0YWdzIGFuZCBhc3NvY2lhdGVkIG9iamVjdHMgd2hlbiBmZXRjaGluZyIsCisJCQkgICAgTl8oImltcG9ydCBhbGwgdGFncyBhbmQgYXNzb2NpYXRlZCBvYmplY3RzIHdoZW4gZmV0Y2hpbmciKSwKIAkJCSAgICBUQUdTX1NFVCksCiAJCU9QVF9TRVRfSU5UKDAsIE5VTEwsICZmZXRjaF90YWdzLAotCQkJICAgICJvciBkbyBub3QgZmV0Y2ggYW55IHRhZyBhdCBhbGwgKC0tbm8tdGFncykiLCBUQUdTX1VOU0VUKSwKLQkJT1BUX1NUUklOR19MSVNUKCd0JywgInRyYWNrIiwgJnRyYWNrLCAiYnJhbmNoIiwKLQkJCQkiYnJhbmNoKGVzKSB0byB0cmFjayIpLAotCQlPUFRfU1RSSU5HKCdtJywgIm1hc3RlciIsICZtYXN0ZXIsICJicmFuY2giLCAibWFzdGVyIGJyYW5jaCIpLAotCQl7IE9QVElPTl9DQUxMQkFDSywgMCwgIm1pcnJvciIsICZtaXJyb3IsICJwdXNofGZldGNoIiwKLQkJCSJzZXQgdXAgcmVtb3RlIGFzIGEgbWlycm9yIHRvIHB1c2ggdG8gb3IgZmV0Y2ggZnJvbSIsCisJCQkgICAgTl8oIm9yIGRvIG5vdCBmZXRjaCBhbnkgdGFnIGF0IGFsbCAoLS1uby10YWdzKSIpLCBUQUdTX1VOU0VUKSwKKwkJT1BUX1NUUklOR19MSVNUKCd0JywgInRyYWNrIiwgJnRyYWNrLCBOXygiYnJhbmNoIiksCisJCQkJTl8oImJyYW5jaChlcykgdG8gdHJhY2siKSksCisJCU9QVF9TVFJJTkcoJ20nLCAibWFzdGVyIiwgJm1hc3RlciwgTl8oImJyYW5jaCIpLCBOXygibWFzdGVyIGJyYW5jaCIpKSwKKwkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJtaXJyb3IiLCAmbWlycm9yLCBOXygicHVzaHxmZXRjaCIpLAorCQkJTl8oInNldCB1cCByZW1vdGUgYXMgYSBtaXJyb3IgdG8gcHVzaCB0byBvciBmZXRjaCBmcm9tIiksCiAJCQlQQVJTRV9PUFRfT1BUQVJHLCBwYXJzZV9taXJyb3Jfb3B0IH0sCiAJCU9QVF9FTkQoKQogCX07CkBAIC0xNzgsNyArMTc4LDcgQEAKIAlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBOVUxMLCBvcHRpb25zLCBidWlsdGluX3JlbW90ZV9hZGRfdXNhZ2UsCiAJCQkgICAgIDApOwogCi0JaWYgKGFyZ2MgPCAyKQorCWlmIChhcmdjICE9IDIpCiAJCXVzYWdlX3dpdGhfb3B0aW9ucyhidWlsdGluX3JlbW90ZV9hZGRfdXNhZ2UsIG9wdGlvbnMpOwogCiAJaWYgKG1pcnJvciAmJiBtYXN0ZXIpCkBAIC0xMDg4LDcgKzEwODgsNyBAQAogewogCWludCBub19xdWVyeSA9IDAsIHJlc3VsdCA9IDAsIHF1ZXJ5X2ZsYWcgPSAwOwogCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewotCQlPUFRfQk9PTEVBTignbicsIE5VTEwsICZub19xdWVyeSwgImRvIG5vdCBxdWVyeSByZW1vdGVzIiksCisJCU9QVF9CT09MRUFOKCduJywgTlVMTCwgJm5vX3F1ZXJ5LCBOXygiZG8gbm90IHF1ZXJ5IHJlbW90ZXMiKSksCiAJCU9QVF9FTkQoKQogCX07CiAJc3RydWN0IHJlZl9zdGF0ZXMgc3RhdGVzOwpAQCAtMTE5Niw5ICsxMTk2LDkgQEAKIAogCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewogCQlPUFRfQk9PTEVBTignYScsICJhdXRvIiwgJm9wdF9hLAotCQkJICAgICJzZXQgcmVmcy9yZW1vdGVzLzxuYW1lPi9IRUFEIGFjY29yZGluZyB0byByZW1vdGUiKSwKKwkJCSAgICBOXygic2V0IHJlZnMvcmVtb3Rlcy88bmFtZT4vSEVBRCBhY2NvcmRpbmcgdG8gcmVtb3RlIikpLAogCQlPUFRfQk9PTEVBTignZCcsICJkZWxldGUiLCAmb3B0X2QsCi0JCQkgICAgImRlbGV0ZSByZWZzL3JlbW90ZXMvPG5hbWU+L0hFQUQiKSwKKwkJCSAgICBOXygiZGVsZXRlIHJlZnMvcmVtb3Rlcy88bmFtZT4vSEVBRCIpKSwKIAkJT1BUX0VORCgpCiAJfTsKIAlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBOVUxMLCBvcHRpb25zLCBidWlsdGluX3JlbW90ZV9zZXRoZWFkX3VzYWdlLApAQCAtMTI1MCw3ICsxMjUwLDcgQEAKIHsKIAlpbnQgZHJ5X3J1biA9IDAsIHJlc3VsdCA9IDA7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCU9QVF9fRFJZX1JVTigmZHJ5X3J1biwgImRyeSBydW4iKSwKKwkJT1BUX19EUllfUlVOKCZkcnlfcnVuLCBOXygiZHJ5IHJ1biIpKSwKIAkJT1BUX0VORCgpCiAJfTsKIApAQCAtMTMxOCw3ICsxMzE4LDcgQEAKIAlpbnQgaSwgcHJ1bmUgPSAwOwogCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewogCQlPUFRfQk9PTEVBTigncCcsICJwcnVuZSIsICZwcnVuZSwKLQkJCSAgICAicHJ1bmUgcmVtb3RlcyBhZnRlciBmZXRjaGluZyIpLAorCQkJICAgIE5fKCJwcnVuZSByZW1vdGVzIGFmdGVyIGZldGNoaW5nIikpLAogCQlPUFRfRU5EKCkKIAl9OwogCWNvbnN0IGNoYXIgKipmZXRjaF9hcmd2OwpAQCAtMTQwNCw3ICsxNDA0LDcgQEAKIHsKIAlpbnQgYWRkX21vZGUgPSAwOwogCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewotCQlPUFRfQk9PTEVBTignXDAnLCAiYWRkIiwgJmFkZF9tb2RlLCAiYWRkIGJyYW5jaCIpLAorCQlPUFRfQk9PTEVBTignXDAnLCAiYWRkIiwgJmFkZF9tb2RlLCBOXygiYWRkIGJyYW5jaCIpKSwKIAkJT1BUX0VORCgpCiAJfTsKIApAQCAtMTQzMywxMSArMTQzMywxMSBAQAogCXN0cnVjdCBzdHJidWYgbmFtZV9idWYgPSBTVFJCVUZfSU5JVDsKIAlzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKIAkJT1BUX0JPT0xFQU4oJ1wwJywgInB1c2giLCAmcHVzaF9tb2RlLAotCQkJICAgICJtYW5pcHVsYXRlIHB1c2ggVVJMcyIpLAorCQkJICAgIE5fKCJtYW5pcHVsYXRlIHB1c2ggVVJMcyIpKSwKIAkJT1BUX0JPT0xFQU4oJ1wwJywgImFkZCIsICZhZGRfbW9kZSwKLQkJCSAgICAiYWRkIFVSTCIpLAorCQkJICAgIE5fKCJhZGQgVVJMIikpLAogCQlPUFRfQk9PTEVBTignXDAnLCAiZGVsZXRlIiwgJmRlbGV0ZV9tb2RlLAotCQkJICAgICJkZWxldGUgVVJMcyIpLAorCQkJICAgIE5fKCJkZWxldGUgVVJMcyIpKSwKIAkJT1BUX0VORCgpCiAJfTsKIAlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBOVUxMLCBvcHRpb25zLCBidWlsdGluX3JlbW90ZV9zZXR1cmxfdXNhZ2UsCkBAIC0xNTY2LDcgKzE1NjYsNyBAQAogaW50IGNtZF9yZW1vdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCU9QVF9fVkVSQk9TRSgmdmVyYm9zZSwgImJlIHZlcmJvc2U7IG11c3QgYmUgcGxhY2VkIGJlZm9yZSBhIHN1YmNvbW1hbmQiKSwKKwkJT1BUX19WRVJCT1NFKCZ2ZXJib3NlLCBOXygiYmUgdmVyYm9zZTsgbXVzdCBiZSBwbGFjZWQgYmVmb3JlIGEgc3ViY29tbWFuZCIpKSwKIAkJT1BUX0VORCgpCiAJfTsKIAlpbnQgcmVzdWx0OwpAQCAtMTU4MCw3ICsxNTgwLDcgQEAKIAkJcmVzdWx0ID0gYWRkKGFyZ2MsIGFyZ3YpOwogCWVsc2UgaWYgKCFzdHJjbXAoYXJndlswXSwgInJlbmFtZSIpKQogCQlyZXN1bHQgPSBtdihhcmdjLCBhcmd2KTsKLQllbHNlIGlmICghc3RyY21wKGFyZ3ZbMF0sICJybSIpKQorCWVsc2UgaWYgKCFzdHJjbXAoYXJndlswXSwgInJtIikgfHwgIXN0cmNtcChhcmd2WzBdLCAicmVtb3ZlIikpCiAJCXJlc3VsdCA9IHJtKGFyZ2MsIGFyZ3YpOwogCWVsc2UgaWYgKCFzdHJjbXAoYXJndlswXSwgInNldC1oZWFkIikpCiAJCXJlc3VsdCA9IHNldF9oZWFkKGFyZ2MsIGFyZ3YpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9yZXBsYWNlLmMgYi9idWlsdGluL3JlcGxhY2UuYwppbmRleCA0YTg5NzBlLi4zOThjY2Q1IDEwMDY0NAotLS0gYS9idWlsdGluL3JlcGxhY2UuYworKysgYi9idWlsdGluL3JlcGxhY2UuYwpAQCAtMTQsOSArMTQsOSBAQAogI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBnaXRfcmVwbGFjZV91c2FnZVtdID0gewotCSJnaXQgcmVwbGFjZSBbLWZdIDxvYmplY3Q+IDxyZXBsYWNlbWVudD4iLAotCSJnaXQgcmVwbGFjZSAtZCA8b2JqZWN0Pi4uLiIsCi0JImdpdCByZXBsYWNlIC1sIFs8cGF0dGVybj5dIiwKKwlOXygiZ2l0IHJlcGxhY2UgWy1mXSA8b2JqZWN0PiA8cmVwbGFjZW1lbnQ+IiksCisJTl8oImdpdCByZXBsYWNlIC1kIDxvYmplY3Q+Li4uIiksCisJTl8oImdpdCByZXBsYWNlIC1sIFs8cGF0dGVybj5dIiksCiAJTlVMTAogfTsKIApAQCAtNDYsMjQgKzQ2LDI3IEBACiAKIHN0YXRpYyBpbnQgZm9yX2VhY2hfcmVwbGFjZV9uYW1lKGNvbnN0IGNoYXIgKiphcmd2LCBlYWNoX3JlcGxhY2VfbmFtZV9mbiBmbikKIHsKLQljb25zdCBjaGFyICoqcDsKKwljb25zdCBjaGFyICoqcCwgKmZ1bGxfaGV4OwogCWNoYXIgcmVmW1BBVEhfTUFYXTsKIAlpbnQgaGFkX2Vycm9yID0gMDsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCiAJZm9yIChwID0gYXJndjsgKnA7IHArKykgewotCQlpZiAoc25wcmludGYocmVmLCBzaXplb2YocmVmKSwgInJlZnMvcmVwbGFjZS8lcyIsICpwKQotCQkJCQk+PSBzaXplb2YocmVmKSkgewotCQkJZXJyb3IoInJlcGxhY2UgcmVmIG5hbWUgdG9vIGxvbmc6ICUuKnMuLi4iLCA1MCwgKnApOworCQlpZiAoZ2V0X3NoYTEoKnAsIHNoYTEpKSB7CisJCQllcnJvcigiRmFpbGVkIHRvIHJlc29sdmUgJyVzJyBhcyBhIHZhbGlkIHJlZi4iLCAqcCk7CiAJCQloYWRfZXJyb3IgPSAxOwogCQkJY29udGludWU7CiAJCX0KKwkJZnVsbF9oZXggPSBzaGExX3RvX2hleChzaGExKTsKKwkJc25wcmludGYocmVmLCBzaXplb2YocmVmKSwgInJlZnMvcmVwbGFjZS8lcyIsIGZ1bGxfaGV4KTsKKwkJLyogcmVhZF9yZWYoKSBtYXkgcmV1c2UgdGhlIGJ1ZmZlciAqLworCQlmdWxsX2hleCA9IHJlZiArIHN0cmxlbigicmVmcy9yZXBsYWNlLyIpOwogCQlpZiAocmVhZF9yZWYocmVmLCBzaGExKSkgewotCQkJZXJyb3IoInJlcGxhY2UgcmVmICclcycgbm90IGZvdW5kLiIsICpwKTsKKwkJCWVycm9yKCJyZXBsYWNlIHJlZiAnJXMnIG5vdCBmb3VuZC4iLCBmdWxsX2hleCk7CiAJCQloYWRfZXJyb3IgPSAxOwogCQkJY29udGludWU7CiAJCX0KLQkJaWYgKGZuKCpwLCByZWYsIHNoYTEpKQorCQlpZiAoZm4oZnVsbF9oZXgsIHJlZiwgc2hhMSkpCiAJCQloYWRfZXJyb3IgPSAxOwogCX0KIAlyZXR1cm4gaGFkX2Vycm9yOwpAQCAtMTE1LDkgKzExOCw5IEBACiB7CiAJaW50IGxpc3QgPSAwLCBkZWxldGUgPSAwLCBmb3JjZSA9IDA7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCU9QVF9CT09MRUFOKCdsJywgTlVMTCwgJmxpc3QsICJsaXN0IHJlcGxhY2UgcmVmcyIpLAotCQlPUFRfQk9PTEVBTignZCcsIE5VTEwsICZkZWxldGUsICJkZWxldGUgcmVwbGFjZSByZWZzIiksCi0JCU9QVF9CT09MRUFOKCdmJywgTlVMTCwgJmZvcmNlLCAicmVwbGFjZSB0aGUgcmVmIGlmIGl0IGV4aXN0cyIpLAorCQlPUFRfQk9PTEVBTignbCcsIE5VTEwsICZsaXN0LCBOXygibGlzdCByZXBsYWNlIHJlZnMiKSksCisJCU9QVF9CT09MRUFOKCdkJywgTlVMTCwgJmRlbGV0ZSwgTl8oImRlbGV0ZSByZXBsYWNlIHJlZnMiKSksCisJCU9QVF9CT09MRUFOKCdmJywgTlVMTCwgJmZvcmNlLCBOXygicmVwbGFjZSB0aGUgcmVmIGlmIGl0IGV4aXN0cyIpKSwKIAkJT1BUX0VORCgpCiAJfTsKIApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9yZXJlcmUuYyBiL2J1aWx0aW4vcmVyZXJlLmMKaW5kZXggMDgyMTNjNy4uZGMxNzA4ZSAxMDA2NDQKLS0tIGEvYnVpbHRpbi9yZXJlcmUuYworKysgYi9idWlsdGluL3JlcmVyZS5jCkBAIC04LDcgKzgsNyBAQAogI2luY2x1ZGUgInhkaWZmLWludGVyZmFjZS5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHJlcmVyZV91c2FnZVtdID0gewotCSJnaXQgcmVyZXJlIFtjbGVhciB8IGZvcmdldCBwYXRoLi4uIHwgc3RhdHVzIHwgcmVtYWluaW5nIHwgZGlmZiB8IGdjXSIsCisJTl8oImdpdCByZXJlcmUgW2NsZWFyIHwgZm9yZ2V0IHBhdGguLi4gfCBzdGF0dXMgfCByZW1haW5pbmcgfCBkaWZmIHwgZ2NdIiksCiAJTlVMTCwKIH07CiAKQEAgLTUzLDcgKzUzLDcgQEAKIAogCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewogCQlPUFRfU0VUX0lOVCgwLCAicmVyZXJlLWF1dG91cGRhdGUiLCAmYXV0b3VwZGF0ZSwKLQkJCSJyZWdpc3RlciBjbGVhbiByZXNvbHV0aW9ucyBpbiBpbmRleCIsIDEpLAorCQkJTl8oInJlZ2lzdGVyIGNsZWFuIHJlc29sdXRpb25zIGluIGluZGV4IiksIDEpLAogCQlPUFRfRU5EKCksCiAJfTsKIApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9yZXNldC5jIGIvYnVpbHRpbi9yZXNldC5jCmluZGV4IDhjMmMxZDUuLjYwMzIxMzEgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vcmVzZXQuYworKysgYi9idWlsdGluL3Jlc2V0LmMKQEAgLTIyLDkgKzIyLDkgQEAKICNpbmNsdWRlICJjYWNoZS10cmVlLmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZ2l0X3Jlc2V0X3VzYWdlW10gPSB7Ci0JImdpdCByZXNldCBbLS1taXhlZCB8IC0tc29mdCB8IC0taGFyZCB8IC0tbWVyZ2UgfCAtLWtlZXBdIFstcV0gWzxjb21taXQ+XSIsCi0JImdpdCByZXNldCBbLXFdIDxjb21taXQ+IFstLV0gPHBhdGhzPi4uLiIsCi0JImdpdCByZXNldCAtLXBhdGNoIFs8Y29tbWl0Pl0gWy0tXSBbPHBhdGhzPi4uLl0iLAorCU5fKCJnaXQgcmVzZXQgWy0tbWl4ZWQgfCAtLXNvZnQgfCAtLWhhcmQgfCAtLW1lcmdlIHwgLS1rZWVwXSBbLXFdIFs8Y29tbWl0Pl0iKSwKKwlOXygiZ2l0IHJlc2V0IFstcV0gPHRyZWUtaXNoPiBbLS1dIDxwYXRocz4uLi4iKSwKKwlOXygiZ2l0IHJlc2V0IC0tcGF0Y2ggWzx0cmVlLWlzaD5dIFstLV0gWzxwYXRocz4uLi5dIiksCiAJTlVMTAogfTsKIApAQCAtMzgsMTQgKzM4LDEyIEBACiAJcmV0dXJuICFhY2Nlc3MoZ2l0X3BhdGgoIk1FUkdFX0hFQUQiKSwgRl9PSyk7CiB9CiAKLXN0YXRpYyBpbnQgcmVzZXRfaW5kZXhfZmlsZShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgcmVzZXRfdHlwZSwgaW50IHF1aWV0KQorc3RhdGljIGludCByZXNldF9pbmRleChjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgcmVzZXRfdHlwZSwgaW50IHF1aWV0KQogewogCWludCBuciA9IDE7Ci0JaW50IG5ld2ZkOwogCXN0cnVjdCB0cmVlX2Rlc2MgZGVzY1syXTsKIAlzdHJ1Y3QgdHJlZSAqdHJlZTsKIAlzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgb3B0czsKLQlzdHJ1Y3QgbG9ja19maWxlICpsb2NrID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGxvY2tfZmlsZSkpOwogCiAJbWVtc2V0KCZvcHRzLCAwLCBzaXplb2Yob3B0cykpOwogCW9wdHMuaGVhZF9pZHggPSAxOwpAQCAtNjcsOCArNjUsNiBAQAogCQlvcHRzLnJlc2V0ID0gMTsKIAl9CiAKLQluZXdmZCA9IGhvbGRfbG9ja2VkX2luZGV4KGxvY2ssIDEpOwotCiAJcmVhZF9jYWNoZV91bm1lcmdlZCgpOwogCiAJaWYgKHJlc2V0X3R5cGUgPT0gS0VFUCkgewpAQCAtOTEsMTAgKzg3LDYgQEAKIAkJcHJpbWVfY2FjaGVfdHJlZSgmYWN0aXZlX2NhY2hlX3RyZWUsIHRyZWUpOwogCX0KIAotCWlmICh3cml0ZV9jYWNoZShuZXdmZCwgYWN0aXZlX2NhY2hlLCBhY3RpdmVfbnIpIHx8Ci0JICAgIGNvbW1pdF9sb2NrZWRfaW5kZXgobG9jaykpCi0JCXJldHVybiBlcnJvcihfKCJDb3VsZCBub3Qgd3JpdGUgbmV3IGluZGV4IGZpbGUuIikpOwotCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTExNywzNiArMTA5LDEwIEBACiAJCXByaW50ZigiXG4iKTsKIH0KIAotc3RhdGljIGludCB1cGRhdGVfaW5kZXhfcmVmcmVzaChpbnQgZmQsIHN0cnVjdCBsb2NrX2ZpbGUgKmluZGV4X2xvY2ssIGludCBmbGFncykKLXsKLQlpbnQgcmVzdWx0OwotCi0JaWYgKCFpbmRleF9sb2NrKSB7Ci0JCWluZGV4X2xvY2sgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgbG9ja19maWxlKSk7Ci0JCWZkID0gaG9sZF9sb2NrZWRfaW5kZXgoaW5kZXhfbG9jaywgMSk7Ci0JfQotCi0JaWYgKHJlYWRfY2FjaGUoKSA8IDApCi0JCXJldHVybiBlcnJvcihfKCJDb3VsZCBub3QgcmVhZCBpbmRleCIpKTsKLQotCXJlc3VsdCA9IHJlZnJlc2hfaW5kZXgoJnRoZV9pbmRleCwgKGZsYWdzKSwgTlVMTCwgTlVMTCwKLQkJCSAgICAgICBfKCJVbnN0YWdlZCBjaGFuZ2VzIGFmdGVyIHJlc2V0OiIpKSA/IDEgOiAwOwotCWlmICh3cml0ZV9jYWNoZShmZCwgYWN0aXZlX2NhY2hlLCBhY3RpdmVfbnIpIHx8Ci0JCQljb21taXRfbG9ja2VkX2luZGV4KGluZGV4X2xvY2spKQotCQlyZXR1cm4gZXJyb3IgKCJDb3VsZCBub3QgcmVmcmVzaCBpbmRleCIpOwotCXJldHVybiByZXN1bHQ7Ci19Ci0KIHN0YXRpYyB2b2lkIHVwZGF0ZV9pbmRleF9mcm9tX2RpZmYoc3RydWN0IGRpZmZfcXVldWVfc3RydWN0ICpxLAogCQlzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHQsIHZvaWQgKmRhdGEpCiB7CiAJaW50IGk7Ci0JaW50ICpkaXNjYXJkX2ZsYWcgPSBkYXRhOwotCi0JLyogZG9fZGlmZl9jYWNoZSgpIG1hbmdsZWQgdGhlIGluZGV4ICovCi0JZGlzY2FyZF9jYWNoZSgpOwotCSpkaXNjYXJkX2ZsYWcgPSAxOwotCXJlYWRfY2FjaGUoKTsKIAogCWZvciAoaSA9IDA7IGkgPCBxLT5ucjsgaSsrKSB7CiAJCXN0cnVjdCBkaWZmX2ZpbGVzcGVjICpvbmUgPSBxLT5xdWV1ZVtpXS0+b25lOwpAQCAtMTY0LDMyICsxMzAsMTUgQEAKIAl9CiB9CiAKLXN0YXRpYyBpbnQgaW50ZXJhY3RpdmVfcmVzZXQoY29uc3QgY2hhciAqcmV2aXNpb24sIGNvbnN0IGNoYXIgKiphcmd2LAotCQkJICAgICBjb25zdCBjaGFyICpwcmVmaXgpCitzdGF0aWMgaW50IHJlYWRfZnJvbV90cmVlKGNvbnN0IGNoYXIgKipwYXRoc3BlYywgdW5zaWduZWQgY2hhciAqdHJlZV9zaGExKQogewotCWNvbnN0IGNoYXIgKipwYXRoc3BlYyA9IE5VTEw7Ci0KLQlpZiAoKmFyZ3YpCi0JCXBhdGhzcGVjID0gZ2V0X3BhdGhzcGVjKHByZWZpeCwgYXJndik7Ci0KLQlyZXR1cm4gcnVuX2FkZF9pbnRlcmFjdGl2ZShyZXZpc2lvbiwgIi0tcGF0Y2g9cmVzZXQiLCBwYXRoc3BlYyk7Ci19Ci0KLXN0YXRpYyBpbnQgcmVhZF9mcm9tX3RyZWUoY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICoqYXJndiwKLQkJdW5zaWduZWQgY2hhciAqdHJlZV9zaGExLCBpbnQgcmVmcmVzaF9mbGFncykKLXsKLQlzdHJ1Y3QgbG9ja19maWxlICpsb2NrID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGxvY2tfZmlsZSkpOwotCWludCBpbmRleF9mZCwgaW5kZXhfd2FzX2Rpc2NhcmRlZCA9IDA7CiAJc3RydWN0IGRpZmZfb3B0aW9ucyBvcHQ7CiAKIAltZW1zZXQoJm9wdCwgMCwgc2l6ZW9mKG9wdCkpOwotCWRpZmZfdHJlZV9zZXR1cF9wYXRocyhnZXRfcGF0aHNwZWMocHJlZml4LCAoY29uc3QgY2hhciAqKilhcmd2KSwgJm9wdCk7CisJZGlmZl90cmVlX3NldHVwX3BhdGhzKHBhdGhzcGVjLCAmb3B0KTsKIAlvcHQub3V0cHV0X2Zvcm1hdCA9IERJRkZfRk9STUFUX0NBTExCQUNLOwogCW9wdC5mb3JtYXRfY2FsbGJhY2sgPSB1cGRhdGVfaW5kZXhfZnJvbV9kaWZmOwotCW9wdC5mb3JtYXRfY2FsbGJhY2tfZGF0YSA9ICZpbmRleF93YXNfZGlzY2FyZGVkOwogCi0JaW5kZXhfZmQgPSBob2xkX2xvY2tlZF9pbmRleChsb2NrLCAxKTsKLQlpbmRleF93YXNfZGlzY2FyZGVkID0gMDsKIAlyZWFkX2NhY2hlKCk7CiAJaWYgKGRvX2RpZmZfY2FjaGUodHJlZV9zaGExLCAmb3B0KSkKIAkJcmV0dXJuIDE7CkBAIC0xOTcsMTAgKzE0Niw3IEBACiAJZGlmZl9mbHVzaCgmb3B0KTsKIAlkaWZmX3RyZWVfcmVsZWFzZV9wYXRocygmb3B0KTsKIAotCWlmICghaW5kZXhfd2FzX2Rpc2NhcmRlZCkKLQkJLyogVGhlIGluZGV4IGlzIHN0aWxsIGNsb2JiZXJlZCBmcm9tIGRvX2RpZmZfY2FjaGUoKSAqLwotCQlkaXNjYXJkX2NhY2hlKCk7Ci0JcmV0dXJuIHVwZGF0ZV9pbmRleF9yZWZyZXNoKGluZGV4X2ZkLCBsb2NrLCByZWZyZXNoX2ZsYWdzKTsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgc2V0X3JlZmxvZ19tZXNzYWdlKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICphY3Rpb24sCkBAIC0yMjUsMjcgKzE3MSw5MSBAQAogCiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyICoqcGFyc2VfYXJncyhjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICoqcmV2X3JldCkKK3sKKwljb25zdCBjaGFyICpyZXYgPSAiSEVBRCI7CisJdW5zaWduZWQgY2hhciB1bnVzZWRbMjBdOworCS8qCisJICogUG9zc2libGUgYXJndW1lbnRzIGFyZToKKwkgKgorCSAqIGdpdCByZXNldCBbLW9wdHNdIFs8cmV2Pl0KKwkgKiBnaXQgcmVzZXQgWy1vcHRzXSA8dHJlZT4gWzxwYXRocz4uLi5dCisJICogZ2l0IHJlc2V0IFstb3B0c10gPHRyZWU+IC0tIFs8cGF0aHM+Li4uXQorCSAqIGdpdCByZXNldCBbLW9wdHNdIC0tIFs8cGF0aHM+Li4uXQorCSAqIGdpdCByZXNldCBbLW9wdHNdIDxwYXRocz4uLi4KKwkgKgorCSAqIEF0IHRoaXMgcG9pbnQsIGFyZ3YgcG9pbnRzIGltbWVkaWF0ZWx5IGFmdGVyIFstb3B0c10uCisJICovCisKKwlpZiAoYXJndlswXSkgeworCQlpZiAoIXN0cmNtcChhcmd2WzBdLCAiLS0iKSkgeworCQkJYXJndisrOyAvKiByZXNldCB0byBIRUFELCBwb3NzaWJseSB3aXRoIHBhdGhzICovCisJCX0gZWxzZSBpZiAoYXJndlsxXSAmJiAhc3RyY21wKGFyZ3ZbMV0sICItLSIpKSB7CisJCQlyZXYgPSBhcmd2WzBdOworCQkJYXJndiArPSAyOworCQl9CisJCS8qCisJCSAqIE90aGVyd2lzZSwgYXJndlswXSBjb3VsZCBiZSBlaXRoZXIgPHJldj4gb3IgPHBhdGhzPiBhbmQKKwkJICogaGFzIHRvIGJlIHVuYW1iaWd1b3VzLiBJZiB0aGVyZSBpcyBhIHNpbmdsZSBhcmd1bWVudCwgaXQKKwkJICogY2FuIG5vdCBiZSBhIHRyZWUKKwkJICovCisJCWVsc2UgaWYgKCghYXJndlsxXSAmJiAhZ2V0X3NoYTFfY29tbWl0dGlzaChhcmd2WzBdLCB1bnVzZWQpKSB8fAorCQkJIChhcmd2WzFdICYmICFnZXRfc2hhMV90cmVlaXNoKGFyZ3ZbMF0sIHVudXNlZCkpKSB7CisJCQkvKgorCQkJICogT2ssIGFyZ3ZbMF0gbG9va3MgbGlrZSBhIGNvbW1pdC90cmVlOyBpdCBzaG91bGQgbm90CisJCQkgKiBiZSBhIGZpbGVuYW1lLgorCQkJICovCisJCQl2ZXJpZnlfbm9uX2ZpbGVuYW1lKHByZWZpeCwgYXJndlswXSk7CisJCQlyZXYgPSAqYXJndisrOworCQl9IGVsc2UgeworCQkJLyogT3RoZXJ3aXNlIHdlIHRyZWF0IHRoaXMgYXMgYSBmaWxlbmFtZSAqLworCQkJdmVyaWZ5X2ZpbGVuYW1lKHByZWZpeCwgYXJndlswXSwgMSk7CisJCX0KKwl9CisJKnJldl9yZXQgPSByZXY7CisJcmV0dXJuIGFyZ3ZbMF0gPyBnZXRfcGF0aHNwZWMocHJlZml4LCBhcmd2KSA6IE5VTEw7Cit9CisKK3N0YXRpYyBpbnQgdXBkYXRlX3JlZnMoY29uc3QgY2hhciAqcmV2LCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKQoreworCWludCB1cGRhdGVfcmVmX3N0YXR1czsKKwlzdHJ1Y3Qgc3RyYnVmIG1zZyA9IFNUUkJVRl9JTklUOworCXVuc2lnbmVkIGNoYXIgKm9yaWcgPSBOVUxMLCBzaGExX29yaWdbMjBdLAorCQkqb2xkX29yaWcgPSBOVUxMLCBzaGExX29sZF9vcmlnWzIwXTsKKworCWlmICghZ2V0X3NoYTEoIk9SSUdfSEVBRCIsIHNoYTFfb2xkX29yaWcpKQorCQlvbGRfb3JpZyA9IHNoYTFfb2xkX29yaWc7CisJaWYgKCFnZXRfc2hhMSgiSEVBRCIsIHNoYTFfb3JpZykpIHsKKwkJb3JpZyA9IHNoYTFfb3JpZzsKKwkJc2V0X3JlZmxvZ19tZXNzYWdlKCZtc2csICJ1cGRhdGluZyBPUklHX0hFQUQiLCBOVUxMKTsKKwkJdXBkYXRlX3JlZihtc2cuYnVmLCAiT1JJR19IRUFEIiwgb3JpZywgb2xkX29yaWcsIDAsIE1TR19PTl9FUlIpOworCX0gZWxzZSBpZiAob2xkX29yaWcpCisJCWRlbGV0ZV9yZWYoIk9SSUdfSEVBRCIsIG9sZF9vcmlnLCAwKTsKKwlzZXRfcmVmbG9nX21lc3NhZ2UoJm1zZywgInVwZGF0aW5nIEhFQUQiLCByZXYpOworCXVwZGF0ZV9yZWZfc3RhdHVzID0gdXBkYXRlX3JlZihtc2cuYnVmLCAiSEVBRCIsIHNoYTEsIG9yaWcsIDAsIE1TR19PTl9FUlIpOworCXN0cmJ1Zl9yZWxlYXNlKCZtc2cpOworCXJldHVybiB1cGRhdGVfcmVmX3N0YXR1czsKK30KKwogaW50IGNtZF9yZXNldChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQlpbnQgaSA9IDAsIHJlc2V0X3R5cGUgPSBOT05FLCB1cGRhdGVfcmVmX3N0YXR1cyA9IDAsIHF1aWV0ID0gMDsKLQlpbnQgcGF0Y2hfbW9kZSA9IDA7Ci0JY29uc3QgY2hhciAqcmV2ID0gIkhFQUQiOwotCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF0sICpvcmlnID0gTlVMTCwgc2hhMV9vcmlnWzIwXSwKLQkJCQkqb2xkX29yaWcgPSBOVUxMLCBzaGExX29sZF9vcmlnWzIwXTsKLQlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7Ci0Jc3RydWN0IHN0cmJ1ZiBtc2cgPSBTVFJCVUZfSU5JVDsKKwlpbnQgcmVzZXRfdHlwZSA9IE5PTkUsIHVwZGF0ZV9yZWZfc3RhdHVzID0gMCwgcXVpZXQgPSAwOworCWludCBwYXRjaF9tb2RlID0gMCwgdW5ib3JuOworCWNvbnN0IGNoYXIgKnJldjsKKwl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOworCWNvbnN0IGNoYXIgKipwYXRoc3BlYyA9IE5VTEw7CiAJY29uc3Qgc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCU9QVF9fUVVJRVQoJnF1aWV0LCAiYmUgcXVpZXQsIG9ubHkgcmVwb3J0IGVycm9ycyIpLAorCQlPUFRfX1FVSUVUKCZxdWlldCwgTl8oImJlIHF1aWV0LCBvbmx5IHJlcG9ydCBlcnJvcnMiKSksCiAJCU9QVF9TRVRfSU5UKDAsICJtaXhlZCIsICZyZXNldF90eXBlLAotCQkJCQkJInJlc2V0IEhFQUQgYW5kIGluZGV4IiwgTUlYRUQpLAotCQlPUFRfU0VUX0lOVCgwLCAic29mdCIsICZyZXNldF90eXBlLCAicmVzZXQgb25seSBIRUFEIiwgU09GVCksCisJCQkJCQlOXygicmVzZXQgSEVBRCBhbmQgaW5kZXgiKSwgTUlYRUQpLAorCQlPUFRfU0VUX0lOVCgwLCAic29mdCIsICZyZXNldF90eXBlLCBOXygicmVzZXQgb25seSBIRUFEIiksIFNPRlQpLAogCQlPUFRfU0VUX0lOVCgwLCAiaGFyZCIsICZyZXNldF90eXBlLAotCQkJCSJyZXNldCBIRUFELCBpbmRleCBhbmQgd29ya2luZyB0cmVlIiwgSEFSRCksCisJCQkJTl8oInJlc2V0IEhFQUQsIGluZGV4IGFuZCB3b3JraW5nIHRyZWUiKSwgSEFSRCksCiAJCU9QVF9TRVRfSU5UKDAsICJtZXJnZSIsICZyZXNldF90eXBlLAotCQkJCSJyZXNldCBIRUFELCBpbmRleCBhbmQgd29ya2luZyB0cmVlIiwgTUVSR0UpLAorCQkJCU5fKCJyZXNldCBIRUFELCBpbmRleCBhbmQgd29ya2luZyB0cmVlIiksIE1FUkdFKSwKIAkJT1BUX1NFVF9JTlQoMCwgImtlZXAiLCAmcmVzZXRfdHlwZSwKLQkJCQkicmVzZXQgSEVBRCBidXQga2VlcCBsb2NhbCBjaGFuZ2VzIiwgS0VFUCksCi0JCU9QVF9CT09MRUFOKCdwJywgInBhdGNoIiwgJnBhdGNoX21vZGUsICJzZWxlY3QgaHVua3MgaW50ZXJhY3RpdmVseSIpLAorCQkJCU5fKCJyZXNldCBIRUFEIGJ1dCBrZWVwIGxvY2FsIGNoYW5nZXMiKSwgS0VFUCksCisJCU9QVF9CT09MRUFOKCdwJywgInBhdGNoIiwgJnBhdGNoX21vZGUsIE5fKCJzZWxlY3QgaHVua3MgaW50ZXJhY3RpdmVseSIpKSwKIAkJT1BUX0VORCgpCiAJfTsKIApAQCAtMjUzLDY3ICsyNjMsNDUgQEAKIAogCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIHByZWZpeCwgb3B0aW9ucywgZ2l0X3Jlc2V0X3VzYWdlLAogCQkJCQkJUEFSU0VfT1BUX0tFRVBfREFTSERBU0gpOworCXBhdGhzcGVjID0gcGFyc2VfYXJncyhhcmd2LCBwcmVmaXgsICZyZXYpOwogCi0JLyoKLQkgKiBQb3NzaWJsZSBhcmd1bWVudHMgYXJlOgotCSAqCi0JICogZ2l0IHJlc2V0IFstb3B0c10gPHJldj4gPHBhdGhzPi4uLgotCSAqIGdpdCByZXNldCBbLW9wdHNdIDxyZXY+IC0tIDxwYXRocz4uLi4KLQkgKiBnaXQgcmVzZXQgWy1vcHRzXSAtLSA8cGF0aHM+Li4uCi0JICogZ2l0IHJlc2V0IFstb3B0c10gPHBhdGhzPi4uLgotCSAqCi0JICogQXQgdGhpcyBwb2ludCwgYXJndltpXSBwb2ludHMgaW1tZWRpYXRlbHkgYWZ0ZXIgWy1vcHRzXS4KLQkgKi8KLQotCWlmIChpIDwgYXJnYykgewotCQlpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS0iKSkgewotCQkJaSsrOyAvKiByZXNldCB0byBIRUFELCBwb3NzaWJseSB3aXRoIHBhdGhzICovCi0JCX0gZWxzZSBpZiAoaSArIDEgPCBhcmdjICYmICFzdHJjbXAoYXJndltpKzFdLCAiLS0iKSkgewotCQkJcmV2ID0gYXJndltpXTsKLQkJCWkgKz0gMjsKLQkJfQotCQkvKgotCQkgKiBPdGhlcndpc2UsIGFyZ3ZbaV0gY291bGQgYmUgZWl0aGVyIDxyZXY+IG9yIDxwYXRocz4gYW5kCi0JCSAqIGhhcyB0byBiZSB1bmFtYmlndW91cy4KLQkJICovCi0JCWVsc2UgaWYgKCFnZXRfc2hhMShhcmd2W2ldLCBzaGExKSkgewotCQkJLyoKLQkJCSAqIE9rLCBhcmd2W2ldIGxvb2tzIGxpa2UgYSByZXY7IGl0IHNob3VsZCBub3QKLQkJCSAqIGJlIGEgZmlsZW5hbWUuCi0JCQkgKi8KLQkJCXZlcmlmeV9ub25fZmlsZW5hbWUocHJlZml4LCBhcmd2W2ldKTsKLQkJCXJldiA9IGFyZ3ZbaSsrXTsKLQkJfSBlbHNlIHsKLQkJCS8qIE90aGVyd2lzZSB3ZSB0cmVhdCB0aGlzIGFzIGEgZmlsZW5hbWUgKi8KLQkJCXZlcmlmeV9maWxlbmFtZShwcmVmaXgsIGFyZ3ZbaV0pOwotCQl9CisJdW5ib3JuID0gIXN0cmNtcChyZXYsICJIRUFEIikgJiYgZ2V0X3NoYTEoIkhFQUQiLCBzaGExKTsKKwlpZiAodW5ib3JuKSB7CisJCS8qIHJlc2V0IG9uIHVuYm9ybiBicmFuY2g6IHRyZWF0IGFzIHJlc2V0IHRvIGVtcHR5IHRyZWUgKi8KKwkJaGFzaGNweShzaGExLCBFTVBUWV9UUkVFX1NIQTFfQklOKTsKKwl9IGVsc2UgaWYgKCFwYXRoc3BlYykgeworCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CisJCWlmIChnZXRfc2hhMV9jb21taXR0aXNoKHJldiwgc2hhMSkpCisJCQlkaWUoXygiRmFpbGVkIHRvIHJlc29sdmUgJyVzJyBhcyBhIHZhbGlkIHJldmlzaW9uLiIpLCByZXYpOworCQljb21taXQgPSBsb29rdXBfY29tbWl0X3JlZmVyZW5jZShzaGExKTsKKwkJaWYgKCFjb21taXQpCisJCQlkaWUoXygiQ291bGQgbm90IHBhcnNlIG9iamVjdCAnJXMnLiIpLCByZXYpOworCQloYXNoY3B5KHNoYTEsIGNvbW1pdC0+b2JqZWN0LnNoYTEpOworCX0gZWxzZSB7CisJCXN0cnVjdCB0cmVlICp0cmVlOworCQlpZiAoZ2V0X3NoYTFfdHJlZWlzaChyZXYsIHNoYTEpKQorCQkJZGllKF8oIkZhaWxlZCB0byByZXNvbHZlICclcycgYXMgYSB2YWxpZCB0cmVlLiIpLCByZXYpOworCQl0cmVlID0gcGFyc2VfdHJlZV9pbmRpcmVjdChzaGExKTsKKwkJaWYgKCF0cmVlKQorCQkJZGllKF8oIkNvdWxkIG5vdCBwYXJzZSBvYmplY3QgJyVzJy4iKSwgcmV2KTsKKwkJaGFzaGNweShzaGExLCB0cmVlLT5vYmplY3Quc2hhMSk7CiAJfQogCi0JaWYgKGdldF9zaGExKHJldiwgc2hhMSkpCi0JCWRpZShfKCJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgcmVmLiIpLCByZXYpOwotCi0JY29tbWl0ID0gbG9va3VwX2NvbW1pdF9yZWZlcmVuY2Uoc2hhMSk7Ci0JaWYgKCFjb21taXQpCi0JCWRpZShfKCJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcycuIiksIHJldik7Ci0JaGFzaGNweShzaGExLCBjb21taXQtPm9iamVjdC5zaGExKTsKLQogCWlmIChwYXRjaF9tb2RlKSB7CiAJCWlmIChyZXNldF90eXBlICE9IE5PTkUpCiAJCQlkaWUoXygiLS1wYXRjaCBpcyBpbmNvbXBhdGlibGUgd2l0aCAtLXtoYXJkLG1peGVkLHNvZnR9IikpOwotCQlyZXR1cm4gaW50ZXJhY3RpdmVfcmVzZXQocmV2LCBhcmd2ICsgaSwgcHJlZml4KTsKKwkJcmV0dXJuIHJ1bl9hZGRfaW50ZXJhY3RpdmUoc2hhMV90b19oZXgoc2hhMSksICItLXBhdGNoPXJlc2V0IiwgcGF0aHNwZWMpOwogCX0KIAogCS8qIGdpdCByZXNldCB0cmVlIFstLV0gcGF0aHMuLi4gY2FuIGJlIHVzZWQgdG8KIAkgKiBsb2FkIGNob3NlbiBwYXRocyBmcm9tIHRoZSB0cmVlIGludG8gdGhlIGluZGV4IHdpdGhvdXQKIAkgKiBhZmZlY3RpbmcgdGhlIHdvcmtpbmcgdHJlZSBub3IgSEVBRC4gKi8KLQlpZiAoaSA8IGFyZ2MpIHsKKwlpZiAocGF0aHNwZWMpIHsKIAkJaWYgKHJlc2V0X3R5cGUgPT0gTUlYRUQpCiAJCQl3YXJuaW5nKF8oIi0tbWl4ZWQgd2l0aCBwYXRocyBpcyBkZXByZWNhdGVkOyB1c2UgJ2dpdCByZXNldCAtLSA8cGF0aHM+JyBpbnN0ZWFkLiIpKTsKIAkJZWxzZSBpZiAocmVzZXRfdHlwZSAhPSBOT05FKQogCQkJZGllKF8oIkNhbm5vdCBkbyAlcyByZXNldCB3aXRoIHBhdGhzLiIpLAogCQkJCQlfKHJlc2V0X3R5cGVfbmFtZXNbcmVzZXRfdHlwZV0pKTsKLQkJcmV0dXJuIHJlYWRfZnJvbV90cmVlKHByZWZpeCwgYXJndiArIGksIHNoYTEsCi0JCQkJcXVpZXQgPyBSRUZSRVNIX1FVSUVUIDogUkVGUkVTSF9JTl9QT1JDRUxBSU4pOwogCX0KIAlpZiAocmVzZXRfdHlwZSA9PSBOT05FKQogCQlyZXNldF90eXBlID0gTUlYRUQ7IC8qIGJ5IGRlZmF1bHQgKi8KQEAgLTMyOCw0OSArMzE2LDQ0IEBACiAJLyogU29mdCByZXNldCBkb2VzIG5vdCB0b3VjaCB0aGUgaW5kZXggZmlsZSBub3IgdGhlIHdvcmtpbmcgdHJlZQogCSAqIGF0IGFsbCwgYnV0IHJlcXVpcmVzIHRoZW0gaW4gYSBnb29kIG9yZGVyLiAgT3RoZXIgcmVzZXRzIHJlc2V0CiAJICogdGhlIGluZGV4IGZpbGUgdG8gdGhlIHRyZWUgb2JqZWN0IHdlIGFyZSBzd2l0Y2hpbmcgdG8uICovCi0JaWYgKHJlc2V0X3R5cGUgPT0gU09GVCkKKwlpZiAocmVzZXRfdHlwZSA9PSBTT0ZUIHx8IHJlc2V0X3R5cGUgPT0gS0VFUCkKIAkJZGllX2lmX3VubWVyZ2VkX2NhY2hlKHJlc2V0X3R5cGUpOwotCWVsc2UgewotCQlpbnQgZXJyOwotCQlpZiAocmVzZXRfdHlwZSA9PSBLRUVQKQotCQkJZGllX2lmX3VubWVyZ2VkX2NhY2hlKHJlc2V0X3R5cGUpOwotCQllcnIgPSByZXNldF9pbmRleF9maWxlKHNoYTEsIHJlc2V0X3R5cGUsIHF1aWV0KTsKLQkJaWYgKHJlc2V0X3R5cGUgPT0gS0VFUCkKLQkJCWVyciA9IGVyciB8fCByZXNldF9pbmRleF9maWxlKHNoYTEsIE1JWEVELCBxdWlldCk7Ci0JCWlmIChlcnIpCi0JCQlkaWUoXygiQ291bGQgbm90IHJlc2V0IGluZGV4IGZpbGUgdG8gcmV2aXNpb24gJyVzJy4iKSwgcmV2KTsKKworCWlmIChyZXNldF90eXBlICE9IFNPRlQpIHsKKwkJc3RydWN0IGxvY2tfZmlsZSAqbG9jayA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBsb2NrX2ZpbGUpKTsKKwkJaW50IG5ld2ZkID0gaG9sZF9sb2NrZWRfaW5kZXgobG9jaywgMSk7CisJCWlmIChyZXNldF90eXBlID09IE1JWEVEKSB7CisJCQlpZiAocmVhZF9mcm9tX3RyZWUocGF0aHNwZWMsIHNoYTEpKQorCQkJCXJldHVybiAxOworCQl9IGVsc2UgeworCQkJaW50IGVyciA9IHJlc2V0X2luZGV4KHNoYTEsIHJlc2V0X3R5cGUsIHF1aWV0KTsKKwkJCWlmIChyZXNldF90eXBlID09IEtFRVAgJiYgIWVycikKKwkJCQllcnIgPSByZXNldF9pbmRleChzaGExLCBNSVhFRCwgcXVpZXQpOworCQkJaWYgKGVycikKKwkJCQlkaWUoXygiQ291bGQgbm90IHJlc2V0IGluZGV4IGZpbGUgdG8gcmV2aXNpb24gJyVzJy4iKSwgcmV2KTsKKwkJfQorCisJCWlmIChyZXNldF90eXBlID09IE1JWEVEKSB7IC8qIFJlcG9ydCB3aGF0IGhhcyBub3QgYmVlbiB1cGRhdGVkLiAqLworCQkJaW50IGZsYWdzID0gcXVpZXQgPyBSRUZSRVNIX1FVSUVUIDogUkVGUkVTSF9JTl9QT1JDRUxBSU47CisJCQlyZWZyZXNoX2luZGV4KCZ0aGVfaW5kZXgsIGZsYWdzLCBOVUxMLCBOVUxMLAorCQkJCSAgICAgIF8oIlVuc3RhZ2VkIGNoYW5nZXMgYWZ0ZXIgcmVzZXQ6IikpOworCQl9CisKKwkJaWYgKHdyaXRlX2NhY2hlKG5ld2ZkLCBhY3RpdmVfY2FjaGUsIGFjdGl2ZV9ucikgfHwKKwkJICAgIGNvbW1pdF9sb2NrZWRfaW5kZXgobG9jaykpCisJCQlkaWUoXygiQ291bGQgbm90IHdyaXRlIG5ldyBpbmRleCBmaWxlLiIpKTsKIAl9CiAKLQkvKiBBbnkgcmVzZXRzIHVwZGF0ZSBIRUFEIHRvIHRoZSBoZWFkIGJlaW5nIHN3aXRjaGVkIHRvLAotCSAqIHNhdmluZyB0aGUgcHJldmlvdXMgaGVhZCBpbiBPUklHX0hFQUQgYmVmb3JlLiAqLwotCWlmICghZ2V0X3NoYTEoIk9SSUdfSEVBRCIsIHNoYTFfb2xkX29yaWcpKQotCQlvbGRfb3JpZyA9IHNoYTFfb2xkX29yaWc7Ci0JaWYgKCFnZXRfc2hhMSgiSEVBRCIsIHNoYTFfb3JpZykpIHsKLQkJb3JpZyA9IHNoYTFfb3JpZzsKLQkJc2V0X3JlZmxvZ19tZXNzYWdlKCZtc2csICJ1cGRhdGluZyBPUklHX0hFQUQiLCBOVUxMKTsKLQkJdXBkYXRlX3JlZihtc2cuYnVmLCAiT1JJR19IRUFEIiwgb3JpZywgb2xkX29yaWcsIDAsIE1TR19PTl9FUlIpOworCWlmICghcGF0aHNwZWMgJiYgIXVuYm9ybikgeworCQkvKiBBbnkgcmVzZXRzIHdpdGhvdXQgcGF0aHMgdXBkYXRlIEhFQUQgdG8gdGhlIGhlYWQgYmVpbmcKKwkJICogc3dpdGNoZWQgdG8sIHNhdmluZyB0aGUgcHJldmlvdXMgaGVhZCBpbiBPUklHX0hFQUQgYmVmb3JlLiAqLworCQl1cGRhdGVfcmVmX3N0YXR1cyA9IHVwZGF0ZV9yZWZzKHJldiwgc2hhMSk7CisKKwkJaWYgKHJlc2V0X3R5cGUgPT0gSEFSRCAmJiAhdXBkYXRlX3JlZl9zdGF0dXMgJiYgIXF1aWV0KQorCQkJcHJpbnRfbmV3X2hlYWRfbGluZShsb29rdXBfY29tbWl0X3JlZmVyZW5jZShzaGExKSk7CiAJfQotCWVsc2UgaWYgKG9sZF9vcmlnKQotCQlkZWxldGVfcmVmKCJPUklHX0hFQUQiLCBvbGRfb3JpZywgMCk7Ci0Jc2V0X3JlZmxvZ19tZXNzYWdlKCZtc2csICJ1cGRhdGluZyBIRUFEIiwgcmV2KTsKLQl1cGRhdGVfcmVmX3N0YXR1cyA9IHVwZGF0ZV9yZWYobXNnLmJ1ZiwgIkhFQUQiLCBzaGExLCBvcmlnLCAwLCBNU0dfT05fRVJSKTsKLQotCXN3aXRjaCAocmVzZXRfdHlwZSkgewotCWNhc2UgSEFSRDoKLQkJaWYgKCF1cGRhdGVfcmVmX3N0YXR1cyAmJiAhcXVpZXQpCi0JCQlwcmludF9uZXdfaGVhZF9saW5lKGNvbW1pdCk7Ci0JCWJyZWFrOwotCWNhc2UgU09GVDogLyogTm90aGluZyBlbHNlIHRvIGRvLiAqLwotCQlicmVhazsKLQljYXNlIE1JWEVEOiAvKiBSZXBvcnQgd2hhdCBoYXMgbm90IGJlZW4gdXBkYXRlZC4gKi8KLQkJdXBkYXRlX2luZGV4X3JlZnJlc2goMCwgTlVMTCwKLQkJCQlxdWlldCA/IFJFRlJFU0hfUVVJRVQgOiBSRUZSRVNIX0lOX1BPUkNFTEFJTik7Ci0JCWJyZWFrOwotCX0KLQotCXJlbW92ZV9icmFuY2hfc3RhdGUoKTsKLQotCXN0cmJ1Zl9yZWxlYXNlKCZtc2cpOworCWlmICghcGF0aHNwZWMpCisJCXJlbW92ZV9icmFuY2hfc3RhdGUoKTsKIAogCXJldHVybiB1cGRhdGVfcmVmX3N0YXR1czsKIH0KZGlmZiAtLWdpdCBhL2J1aWx0aW4vcmV2LWxpc3QuYyBiL2J1aWx0aW4vcmV2LWxpc3QuYwppbmRleCBmZjVhMzgzLi42NzcwMWJlIDEwMDY0NAotLS0gYS9idWlsdGluL3Jldi1saXN0LmMKKysrIGIvYnVpbHRpbi9yZXYtbGlzdC5jCkBAIC0yMDEsNTUgKzIwMSw2IEBACiAJcHJpbnRmKCItJXNcbiIsIHNoYTFfdG9faGV4KGNvbW1pdC0+b2JqZWN0LnNoYTEpKTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgbG9nMmkoaW50IG4pCi17Ci0JaW50IGxvZzIgPSAwOwotCi0JZm9yICg7IG4gPiAxOyBuID4+PSAxKQotCQlsb2cyKys7Ci0KLQlyZXR1cm4gbG9nMjsKLX0KLQotc3RhdGljIGlubGluZSBpbnQgZXhwMmkoaW50IG4pCi17Ci0JcmV0dXJuIDEgPDwgbjsKLX0KLQotLyoKLSAqIEVzdGltYXRlIHRoZSBudW1iZXIgb2YgYmlzZWN0IHN0ZXBzIGxlZnQgKGFmdGVyIHRoZSBjdXJyZW50IHN0ZXApCi0gKgotICogRm9yIGFueSB4IGJldHdlZW4gMCBpbmNsdWRlZCBhbmQgMl5uIGV4Y2x1ZGVkLCB0aGUgcHJvYmFiaWxpdHkgZm9yCi0gKiBuIC0gMSBzdGVwcyBsZWZ0IGxvb2tzIGxpa2U6Ci0gKgotICogUCgyXm4gKyB4KSA9PSAoMl5uIC0geCkgLyAoMl5uICsgeCkKLSAqCi0gKiBhbmQgUCgyXm4gKyB4KSA8IDAuNSBtZWFucyAyXm4gPCAzeAotICovCi1pbnQgZXN0aW1hdGVfYmlzZWN0X3N0ZXBzKGludCBhbGwpCi17Ci0JaW50IG4sIHgsIGU7Ci0KLQlpZiAoYWxsIDwgMykKLQkJcmV0dXJuIDA7Ci0KLQluID0gbG9nMmkoYWxsKTsKLQllID0gZXhwMmkobik7Ci0JeCA9IGFsbCAtIGU7Ci0KLQlyZXR1cm4gKGUgPCAzICogeCkgPyBuIDogbiAtIDE7Ci19Ci0KLXZvaWQgcHJpbnRfY29tbWl0X2xpc3Qoc3RydWN0IGNvbW1pdF9saXN0ICpsaXN0LAotCQkgICAgICAgY29uc3QgY2hhciAqZm9ybWF0X2N1ciwKLQkJICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdF9sYXN0KQotewotCWZvciAoIDsgbGlzdDsgbGlzdCA9IGxpc3QtPm5leHQpIHsKLQkJY29uc3QgY2hhciAqZm9ybWF0ID0gbGlzdC0+bmV4dCA/IGZvcm1hdF9jdXIgOiBmb3JtYXRfbGFzdDsKLQkJcHJpbnRmKGZvcm1hdCwgc2hhMV90b19oZXgobGlzdC0+aXRlbS0+b2JqZWN0LnNoYTEpKTsKLQl9Ci19Ci0KIHN0YXRpYyB2b2lkIHByaW50X3Zhcl9zdHIoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWwpCiB7CiAJcHJpbnRmKCIlcz0nJXMnXG4iLCB2YXIsIHZhbCk7CmRpZmYgLS1naXQgYS9idWlsdGluL3Jldi1wYXJzZS5jIGIvYnVpbHRpbi9yZXYtcGFyc2UuYwppbmRleCA3MzNmNjI2Li5mMjY3YTFkIDEwMDY0NAotLS0gYS9idWlsdGluL3Jldi1wYXJzZS5jCisrKyBiL2J1aWx0aW4vcmV2LXBhcnNlLmMKQEAgLTE5NSw2ICsxOTUsMTIgQEAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBzaG93X2FiYnJldihjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCB2b2lkICpjYl9kYXRhKQoreworCXNob3dfcmV2KE5PUk1BTCwgc2hhMSwgTlVMTCk7CisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lkIHNob3dfZGF0ZXN0cmluZyhjb25zdCBjaGFyICpmbGFnLCBjb25zdCBjaGFyICpkYXRlc3RyKQogewogCXN0YXRpYyBjaGFyIGJ1ZmZlclsxMDBdOwpAQCAtMjI0LDYgKzIzMCw3IEBACiAJY29uc3QgY2hhciAqbmV4dDsKIAljb25zdCBjaGFyICp0aGlzOwogCWludCBzeW1tZXRyaWM7CisJc3RhdGljIGNvbnN0IGNoYXIgaGVhZF9ieV9kZWZhdWx0W10gPSAiSEVBRCI7CiAKIAlpZiAoIShkb3Rkb3QgPSBzdHJzdHIoYXJnLCAiLi4iKSkpCiAJCXJldHVybiAwOwpAQCAtMjM1LDEwICsyNDIsMjEgQEAKIAluZXh0ICs9IHN5bW1ldHJpYzsKIAogCWlmICghKm5leHQpCi0JCW5leHQgPSAiSEVBRCI7CisJCW5leHQgPSBoZWFkX2J5X2RlZmF1bHQ7CiAJaWYgKGRvdGRvdCA9PSBhcmcpCi0JCXRoaXMgPSAiSEVBRCI7Ci0JaWYgKCFnZXRfc2hhMSh0aGlzLCBzaGExKSAmJiAhZ2V0X3NoYTEobmV4dCwgZW5kKSkgeworCQl0aGlzID0gaGVhZF9ieV9kZWZhdWx0OworCisJaWYgKHRoaXMgPT0gaGVhZF9ieV9kZWZhdWx0ICYmIG5leHQgPT0gaGVhZF9ieV9kZWZhdWx0ICYmCisJICAgICFzeW1tZXRyaWMpIHsKKwkJLyoKKwkJICogSnVzdCAiLi4iPyAgVGhhdCBpcyBub3QgYSByYW5nZSBidXQgdGhlCisJCSAqIHBhdGhzcGVjIGZvciB0aGUgcGFyZW50IGRpcmVjdG9yeS4KKwkJICovCisJCSpkb3Rkb3QgPSAnLic7CisJCXJldHVybiAwOworCX0KKworCWlmICghZ2V0X3NoYTFfY29tbWl0dGlzaCh0aGlzLCBzaGExKSAmJiAhZ2V0X3NoYTFfY29tbWl0dGlzaChuZXh0LCBlbmQpKSB7CiAJCXNob3dfcmV2KE5PUk1BTCwgZW5kLCBuZXh0KTsKIAkJc2hvd19yZXYoc3ltbWV0cmljID8gTk9STUFMIDogUkVWRVJTRUQsIHNoYTEsIHRoaXMpOwogCQlpZiAoc3ltbWV0cmljKSB7CkBAIC0yNzgsNyArMjk2LDcgQEAKIAkJcmV0dXJuIDA7CiAKIAkqZG90ZG90ID0gMDsKLQlpZiAoZ2V0X3NoYTEoYXJnLCBzaGExKSkKKwlpZiAoZ2V0X3NoYTFfY29tbWl0dGlzaChhcmcsIHNoYTEpKQogCQlyZXR1cm4gMDsKIAogCWlmICghcGFyZW50c19vbmx5KQpAQCAtMzE4LDE1ICszMzYsMTUgQEAKIHsKIAlzdGF0aWMgaW50IGtlZXBfZGFzaGRhc2ggPSAwLCBzdG9wX2F0X25vbl9vcHRpb24gPSAwOwogCXN0YXRpYyBjaGFyIGNvbnN0ICogY29uc3QgcGFyc2VvcHRfdXNhZ2VbXSA9IHsKLQkJImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCBbb3B0aW9uc10gLS0gWzxhcmdzPi4uLl0iLAorCQlOXygiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IFtvcHRpb25zXSAtLSBbPGFyZ3M+Li4uXSIpLAogCQlOVUxMCiAJfTsKIAlzdGF0aWMgc3RydWN0IG9wdGlvbiBwYXJzZW9wdF9vcHRzW10gPSB7CiAJCU9QVF9CT09MRUFOKDAsICJrZWVwLWRhc2hkYXNoIiwgJmtlZXBfZGFzaGRhc2gsCi0JCQkJCSJrZWVwIHRoZSBgLS1gIHBhc3NlZCBhcyBhbiBhcmciKSwKKwkJCQkJTl8oImtlZXAgdGhlIGAtLWAgcGFzc2VkIGFzIGFuIGFyZyIpKSwKIAkJT1BUX0JPT0xFQU4oMCwgInN0b3AtYXQtbm9uLW9wdGlvbiIsICZzdG9wX2F0X25vbl9vcHRpb24sCi0JCQkJCSJzdG9wIHBhcnNpbmcgYWZ0ZXIgdGhlICIKLQkJCQkJImZpcnN0IG5vbi1vcHRpb24gYXJndW1lbnQiKSwKKwkJCQkJTl8oInN0b3AgcGFyc2luZyBhZnRlciB0aGUgIgorCQkJCQkgICAiZmlyc3Qgbm9uLW9wdGlvbiBhcmd1bWVudCIpKSwKIAkJT1BUX0VORCgpLAogCX07CiAKQEAgLTQ0MywxMSArNDYxLDExIEBACiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyIGJ1aWx0aW5fcmV2X3BhcnNlX3VzYWdlW10gPQotImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCBbb3B0aW9uc10gLS0gWzxhcmdzPi4uLl1cbiIKLSIgICBvcjogZ2l0IHJldi1wYXJzZSAtLXNxLXF1b3RlIFs8YXJnPi4uLl1cbiIKLSIgICBvcjogZ2l0IHJldi1wYXJzZSBbb3B0aW9uc10gWzxhcmc+Li4uXVxuIgotIlxuIgotIlJ1biBcImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCAtaFwiIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBmaXJzdCB1c2FnZS4iOworTl8oImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCBbb3B0aW9uc10gLS0gWzxhcmdzPi4uLl1cbiIKKyAgICIgICBvcjogZ2l0IHJldi1wYXJzZSAtLXNxLXF1b3RlIFs8YXJnPi4uLl1cbiIKKyAgICIgICBvcjogZ2l0IHJldi1wYXJzZSBbb3B0aW9uc10gWzxhcmc+Li4uXVxuIgorICAgIlxuIgorICAgIlJ1biBcImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCAtaFwiIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBmaXJzdCB1c2FnZS4iKTsKIAogaW50IGNtZF9yZXZfcGFyc2UoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7CkBAIC00ODYsNyArNTA0LDcgQEAKIAogCQlpZiAoYXNfaXMpIHsKIAkJCWlmIChzaG93X2ZpbGUoYXJnKSAmJiBhc19pcyA8IDIpCi0JCQkJdmVyaWZ5X2ZpbGVuYW1lKHByZWZpeCwgYXJnKTsKKwkJCQl2ZXJpZnlfZmlsZW5hbWUocHJlZml4LCBhcmcsIDApOwogCQkJY29udGludWU7CiAJCX0KIAkJaWYgKCFzdHJjbXAoYXJnLCItbiIpKSB7CkBAIC01ODksNiArNjA3LDEwIEBACiAJCQkJZm9yX2VhY2hfcmVmKHNob3dfcmVmZXJlbmNlLCBOVUxMKTsKIAkJCQljb250aW51ZTsKIAkJCX0KKwkJCWlmICghcHJlZml4Y21wKGFyZywgIi0tZGlzYW1iaWd1YXRlPSIpKSB7CisJCQkJZm9yX2VhY2hfYWJicmV2KGFyZyArIDE1LCBzaG93X2FiYnJldiwgTlVMTCk7CisJCQkJY29udGludWU7CisJCQl9CiAJCQlpZiAoIXN0cmNtcChhcmcsICItLWJpc2VjdCIpKSB7CiAJCQkJZm9yX2VhY2hfcmVmX2luKCJyZWZzL2Jpc2VjdC9iYWQiLCBzaG93X3JlZmVyZW5jZSwgTlVMTCk7CiAJCQkJZm9yX2VhY2hfcmVmX2luKCJyZWZzL2Jpc2VjdC9nb29kIiwgYW50aV9yZWZlcmVuY2UsIE5VTEwpOwpAQCAtNzM0LDcgKzc1Niw3IEBACiAJCWFzX2lzID0gMTsKIAkJaWYgKCFzaG93X2ZpbGUoYXJnKSkKIAkJCWNvbnRpbnVlOwotCQl2ZXJpZnlfZmlsZW5hbWUocHJlZml4LCBhcmcpOworCQl2ZXJpZnlfZmlsZW5hbWUocHJlZml4LCBhcmcsIDEpOwogCX0KIAlpZiAodmVyaWZ5KSB7CiAJCWlmIChyZXZzX2NvdW50ID09IDEpIHsKZGlmZiAtLWdpdCBhL2J1aWx0aW4vcmV2ZXJ0LmMgYi9idWlsdGluL3JldmVydC5jCmluZGV4IDgyZDFiZjguLjA0MDFmZGIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vcmV2ZXJ0LmMKKysrIGIvYnVpbHRpbi9yZXZlcnQuYwpAQCAtMTksMTQgKzE5LDE0IEBACiAgKi8KIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCByZXZlcnRfdXNhZ2VbXSA9IHsKLQkiZ2l0IHJldmVydCBbb3B0aW9uc10gPGNvbW1pdC1pc2g+IiwKLQkiZ2l0IHJldmVydCA8c3ViY29tbWFuZD4iLAorCU5fKCJnaXQgcmV2ZXJ0IFtvcHRpb25zXSA8Y29tbWl0LWlzaD4uLi4iKSwKKwlOXygiZ2l0IHJldmVydCA8c3ViY29tbWFuZD4iKSwKIAlOVUxMCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGNoZXJyeV9waWNrX3VzYWdlW10gPSB7Ci0JImdpdCBjaGVycnktcGljayBbb3B0aW9uc10gPGNvbW1pdC1pc2g+IiwKLQkiZ2l0IGNoZXJyeS1waWNrIDxzdWJjb21tYW5kPiIsCisJTl8oImdpdCBjaGVycnktcGljayBbb3B0aW9uc10gPGNvbW1pdC1pc2g+Li4uIiksCisJTl8oImdpdCBjaGVycnktcGljayA8c3ViY29tbWFuZD4iKSwKIAlOVUxMCiB9OwogCkBAIC0xMDAsMTggKzEwMCwxOSBAQAogCWludCBjb250aW4gPSAwOwogCWludCByb2xsYmFjayA9IDA7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCU9QVF9CT09MRUFOKDAsICJxdWl0IiwgJnJlbW92ZV9zdGF0ZSwgImVuZCByZXZlcnQgb3IgY2hlcnJ5LXBpY2sgc2VxdWVuY2UiKSwKLQkJT1BUX0JPT0xFQU4oMCwgImNvbnRpbnVlIiwgJmNvbnRpbiwgInJlc3VtZSByZXZlcnQgb3IgY2hlcnJ5LXBpY2sgc2VxdWVuY2UiKSwKLQkJT1BUX0JPT0xFQU4oMCwgImFib3J0IiwgJnJvbGxiYWNrLCAiY2FuY2VsIHJldmVydCBvciBjaGVycnktcGljayBzZXF1ZW5jZSIpLAotCQlPUFRfQk9PTEVBTignbicsICJuby1jb21taXQiLCAmb3B0cy0+bm9fY29tbWl0LCAiZG9uJ3QgYXV0b21hdGljYWxseSBjb21taXQiKSwKLQkJT1BUX0JPT0xFQU4oJ2UnLCAiZWRpdCIsICZvcHRzLT5lZGl0LCAiZWRpdCB0aGUgY29tbWl0IG1lc3NhZ2UiKSwKKwkJT1BUX0JPT0xFQU4oMCwgInF1aXQiLCAmcmVtb3ZlX3N0YXRlLCBOXygiZW5kIHJldmVydCBvciBjaGVycnktcGljayBzZXF1ZW5jZSIpKSwKKwkJT1BUX0JPT0xFQU4oMCwgImNvbnRpbnVlIiwgJmNvbnRpbiwgTl8oInJlc3VtZSByZXZlcnQgb3IgY2hlcnJ5LXBpY2sgc2VxdWVuY2UiKSksCisJCU9QVF9CT09MRUFOKDAsICJhYm9ydCIsICZyb2xsYmFjaywgTl8oImNhbmNlbCByZXZlcnQgb3IgY2hlcnJ5LXBpY2sgc2VxdWVuY2UiKSksCisJCU9QVF9CT09MRUFOKCduJywgIm5vLWNvbW1pdCIsICZvcHRzLT5ub19jb21taXQsIE5fKCJkb24ndCBhdXRvbWF0aWNhbGx5IGNvbW1pdCIpKSwKKwkJT1BUX0JPT0xFQU4oJ2UnLCAiZWRpdCIsICZvcHRzLT5lZGl0LCBOXygiZWRpdCB0aGUgY29tbWl0IG1lc3NhZ2UiKSksCiAJCU9QVF9OT09QX05PQVJHKCdyJywgTlVMTCksCi0JCU9QVF9CT09MRUFOKCdzJywgInNpZ25vZmYiLCAmb3B0cy0+c2lnbm9mZiwgImFkZCBTaWduZWQtb2ZmLWJ5OiIpLAotCQlPUFRfSU5URUdFUignbScsICJtYWlubGluZSIsICZvcHRzLT5tYWlubGluZSwgInBhcmVudCBudW1iZXIiKSwKKwkJT1BUX0JPT0xFQU4oJ3MnLCAic2lnbm9mZiIsICZvcHRzLT5zaWdub2ZmLCBOXygiYWRkIFNpZ25lZC1vZmYtYnk6IikpLAorCQlPUFRfSU5URUdFUignbScsICJtYWlubGluZSIsICZvcHRzLT5tYWlubGluZSwgTl8oInBhcmVudCBudW1iZXIiKSksCiAJCU9QVF9SRVJFUkVfQVVUT1VQREFURSgmb3B0cy0+YWxsb3dfcmVyZXJlX2F1dG8pLAotCQlPUFRfU1RSSU5HKDAsICJzdHJhdGVneSIsICZvcHRzLT5zdHJhdGVneSwgInN0cmF0ZWd5IiwgIm1lcmdlIHN0cmF0ZWd5IiksCi0JCU9QVF9DQUxMQkFDSygnWCcsICJzdHJhdGVneS1vcHRpb24iLCAmb3B0cywgIm9wdGlvbiIsCi0JCQkib3B0aW9uIGZvciBtZXJnZSBzdHJhdGVneSIsIG9wdGlvbl9wYXJzZV94KSwKKwkJT1BUX1NUUklORygwLCAic3RyYXRlZ3kiLCAmb3B0cy0+c3RyYXRlZ3ksIE5fKCJzdHJhdGVneSIpLCBOXygibWVyZ2Ugc3RyYXRlZ3kiKSksCisJCU9QVF9DQUxMQkFDSygnWCcsICJzdHJhdGVneS1vcHRpb24iLCAmb3B0cywgTl8oIm9wdGlvbiIpLAorCQkJTl8oIm9wdGlvbiBmb3IgbWVyZ2Ugc3RyYXRlZ3kiKSwgb3B0aW9uX3BhcnNlX3gpLAorCQlPUFRfRU5EKCksCiAJCU9QVF9FTkQoKSwKIAkJT1BUX0VORCgpLAogCQlPUFRfRU5EKCksCkBAIC0xMjEsMTAgKzEyMiwxMSBAQAogCiAJaWYgKG9wdHMtPmFjdGlvbiA9PSBSRVBMQVlfUElDSykgewogCQlzdHJ1Y3Qgb3B0aW9uIGNwX2V4dHJhW10gPSB7Ci0JCQlPUFRfQk9PTEVBTigneCcsIE5VTEwsICZvcHRzLT5yZWNvcmRfb3JpZ2luLCAiYXBwZW5kIGNvbW1pdCBuYW1lIiksCi0JCQlPUFRfQk9PTEVBTigwLCAiZmYiLCAmb3B0cy0+YWxsb3dfZmYsICJhbGxvdyBmYXN0LWZvcndhcmQiKSwKLQkJCU9QVF9CT09MRUFOKDAsICJhbGxvdy1lbXB0eSIsICZvcHRzLT5hbGxvd19lbXB0eSwgInByZXNlcnZlIGluaXRpYWxseSBlbXB0eSBjb21taXRzIiksCi0JCQlPUFRfQk9PTEVBTigwLCAia2VlcC1yZWR1bmRhbnQtY29tbWl0cyIsICZvcHRzLT5rZWVwX3JlZHVuZGFudF9jb21taXRzLCAia2VlcCByZWR1bmRhbnQsIGVtcHR5IGNvbW1pdHMiKSwKKwkJCU9QVF9CT09MRUFOKCd4JywgTlVMTCwgJm9wdHMtPnJlY29yZF9vcmlnaW4sIE5fKCJhcHBlbmQgY29tbWl0IG5hbWUiKSksCisJCQlPUFRfQk9PTEVBTigwLCAiZmYiLCAmb3B0cy0+YWxsb3dfZmYsIE5fKCJhbGxvdyBmYXN0LWZvcndhcmQiKSksCisJCQlPUFRfQk9PTEVBTigwLCAiYWxsb3ctZW1wdHkiLCAmb3B0cy0+YWxsb3dfZW1wdHksIE5fKCJwcmVzZXJ2ZSBpbml0aWFsbHkgZW1wdHkgY29tbWl0cyIpKSwKKwkJCU9QVF9CT09MRUFOKDAsICJhbGxvdy1lbXB0eS1tZXNzYWdlIiwgJm9wdHMtPmFsbG93X2VtcHR5X21lc3NhZ2UsIE5fKCJhbGxvdyBjb21taXRzIHdpdGggZW1wdHkgbWVzc2FnZXMiKSksCisJCQlPUFRfQk9PTEVBTigwLCAia2VlcC1yZWR1bmRhbnQtY29tbWl0cyIsICZvcHRzLT5rZWVwX3JlZHVuZGFudF9jb21taXRzLCBOXygia2VlcCByZWR1bmRhbnQsIGVtcHR5IGNvbW1pdHMiKSksCiAJCQlPUFRfRU5EKCksCiAJCX07CiAJCWlmIChwYXJzZV9vcHRpb25zX2NvbmNhdChvcHRpb25zLCBBUlJBWV9TSVpFKG9wdGlvbnMpLCBjcF9leHRyYSkpCkBAIC0xOTMsNyArMTk1LDcgQEAKIAkJc3RydWN0IHNldHVwX3JldmlzaW9uX29wdCBzX3Jfb3B0OwogCQlvcHRzLT5yZXZzID0geG1hbGxvYyhzaXplb2YoKm9wdHMtPnJldnMpKTsKIAkJaW5pdF9yZXZpc2lvbnMob3B0cy0+cmV2cywgTlVMTCk7Ci0JCW9wdHMtPnJldnMtPm5vX3dhbGsgPSAxOworCQlvcHRzLT5yZXZzLT5ub193YWxrID0gUkVWSVNJT05fV0FMS19OT19XQUxLX1VOU09SVEVEOwogCQlpZiAoYXJnYyA8IDIpCiAJCQl1c2FnZV93aXRoX29wdGlvbnModXNhZ2Vfc3RyLCBvcHRpb25zKTsKIAkJbWVtc2V0KCZzX3Jfb3B0LCAwLCBzaXplb2Yoc19yX29wdCkpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9ybS5jIGIvYnVpbHRpbi9ybS5jCmluZGV4IDkwYzhhNTAuLjdiOTFkNTIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vcm0uYworKysgYi9idWlsdGluL3JtLmMKQEAgLTksMTcgKzksNjcgQEAKICNpbmNsdWRlICJjYWNoZS10cmVlLmgiCiAjaW5jbHVkZSAidHJlZS13YWxrLmgiCiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgorI2luY2x1ZGUgInN1Ym1vZHVsZS5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGJ1aWx0aW5fcm1fdXNhZ2VbXSA9IHsKLQkiZ2l0IHJtIFtvcHRpb25zXSBbLS1dIDxmaWxlPi4uLiIsCisJTl8oImdpdCBybSBbb3B0aW9uc10gWy0tXSA8ZmlsZT4uLi4iKSwKIAlOVUxMCiB9OwogCiBzdGF0aWMgc3RydWN0IHsKIAlpbnQgbnIsIGFsbG9jOwotCWNvbnN0IGNoYXIgKipuYW1lOworCXN0cnVjdCB7CisJCWNvbnN0IGNoYXIgKm5hbWU7CisJCWNoYXIgaXNfc3VibW9kdWxlOworCX0gKmVudHJ5OwogfSBsaXN0OwogCitzdGF0aWMgaW50IGdldF9vdXJzX2NhY2hlX3Bvcyhjb25zdCBjaGFyICpwYXRoLCBpbnQgcG9zKQoreworCWludCBpID0gLXBvcyAtIDE7CisKKwl3aGlsZSAoKGkgPCBhY3RpdmVfbnIpICYmICFzdHJjbXAoYWN0aXZlX2NhY2hlW2ldLT5uYW1lLCBwYXRoKSkgeworCQlpZiAoY2Vfc3RhZ2UoYWN0aXZlX2NhY2hlW2ldKSA9PSAyKQorCQkJcmV0dXJuIGk7CisJCWkrKzsKKwl9CisJcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW50IGNoZWNrX3N1Ym1vZHVsZXNfdXNlX2dpdGZpbGVzKHZvaWQpCit7CisJaW50IGk7CisJaW50IGVycnMgPSAwOworCisJZm9yIChpID0gMDsgaSA8IGxpc3QubnI7IGkrKykgeworCQljb25zdCBjaGFyICpuYW1lID0gbGlzdC5lbnRyeVtpXS5uYW1lOworCQlpbnQgcG9zOworCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOworCQlzdHJ1Y3Qgc3RhdCBzdDsKKworCQlwb3MgPSBjYWNoZV9uYW1lX3BvcyhuYW1lLCBzdHJsZW4obmFtZSkpOworCQlpZiAocG9zIDwgMCkgeworCQkJcG9zID0gZ2V0X291cnNfY2FjaGVfcG9zKG5hbWUsIHBvcyk7CisJCQlpZiAocG9zIDwgMCkKKwkJCQljb250aW51ZTsKKwkJfQorCQljZSA9IGFjdGl2ZV9jYWNoZVtwb3NdOworCisJCWlmICghU19JU0dJVExJTksoY2UtPmNlX21vZGUpIHx8CisJCSAgICAobHN0YXQoY2UtPm5hbWUsICZzdCkgPCAwKSB8fAorCQkgICAgaXNfZW1wdHlfZGlyKG5hbWUpKQorCQkJY29udGludWU7CisKKwkJaWYgKCFzdWJtb2R1bGVfdXNlc19naXRmaWxlKG5hbWUpKQorCQkJZXJycyA9IGVycm9yKF8oInN1Ym1vZHVsZSAnJXMnIChvciBvbmUgb2YgaXRzIG5lc3RlZCAiCisJCQkJICAgICAic3VibW9kdWxlcykgdXNlcyBhIC5naXQgZGlyZWN0b3J5XG4iCisJCQkJICAgICAiKHVzZSAncm0gLXJmJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlICIKKwkJCQkgICAgICJpdCBpbmNsdWRpbmcgYWxsIG9mIGl0cyBoaXN0b3J5KSIpLCBuYW1lKTsKKwl9CisKKwlyZXR1cm4gZXJyczsKK30KKwogc3RhdGljIGludCBjaGVja19sb2NhbF9tb2QodW5zaWduZWQgY2hhciAqaGVhZCwgaW50IGluZGV4X29ubHkpCiB7CiAJLyoKQEAgLTM3LDE5ICs4NywzMCBAQAogCQlzdHJ1Y3Qgc3RhdCBzdDsKIAkJaW50IHBvczsKIAkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKLQkJY29uc3QgY2hhciAqbmFtZSA9IGxpc3QubmFtZVtpXTsKKwkJY29uc3QgY2hhciAqbmFtZSA9IGxpc3QuZW50cnlbaV0ubmFtZTsKIAkJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKIAkJdW5zaWduZWQgbW9kZTsKIAkJaW50IGxvY2FsX2NoYW5nZXMgPSAwOwogCQlpbnQgc3RhZ2VkX2NoYW5nZXMgPSAwOwogCiAJCXBvcyA9IGNhY2hlX25hbWVfcG9zKG5hbWUsIHN0cmxlbihuYW1lKSk7Ci0JCWlmIChwb3MgPCAwKQotCQkJY29udGludWU7IC8qIHJlbW92aW5nIHVubWVyZ2VkIGVudHJ5ICovCisJCWlmIChwb3MgPCAwKSB7CisJCQkvKgorCQkJICogU2tpcCB1bm1lcmdlZCBlbnRyaWVzIGV4Y2VwdCBmb3IgcG9wdWxhdGVkIHN1Ym1vZHVsZXMKKwkJCSAqIHRoYXQgY291bGQgbG9zZSBoaXN0b3J5IHdoZW4gcmVtb3ZlZC4KKwkJCSAqLworCQkJcG9zID0gZ2V0X291cnNfY2FjaGVfcG9zKG5hbWUsIHBvcyk7CisJCQlpZiAocG9zIDwgMCkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKCFTX0lTR0lUTElOSyhhY3RpdmVfY2FjaGVbcG9zXS0+Y2VfbW9kZSkgfHwKKwkJCSAgICBpc19lbXB0eV9kaXIobmFtZSkpCisJCQkJY29udGludWU7CisJCX0KIAkJY2UgPSBhY3RpdmVfY2FjaGVbcG9zXTsKIAogCQlpZiAobHN0YXQoY2UtPm5hbWUsICZzdCkgPCAwKSB7Ci0JCQlpZiAoZXJybm8gIT0gRU5PRU5UKQorCQkJaWYgKGVycm5vICE9IEVOT0VOVCAmJiBlcnJubyAhPSBFTk9URElSKQogCQkJCXdhcm5pbmcoIiclcyc6ICVzIiwgY2UtPm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CiAJCQkvKiBJdCBhbHJlYWR5IHZhbmlzaGVkIGZyb20gdGhlIHdvcmtpbmcgdHJlZSAqLwogCQkJY29udGludWU7CkBAIC01OCw5ICsxMTksMTAgQEAKIAkJCS8qIGlmIGEgZmlsZSB3YXMgcmVtb3ZlZCBhbmQgaXQgaXMgbm93IGEKIAkJCSAqIGRpcmVjdG9yeSwgdGhhdCBpcyB0aGUgc2FtZSBhcyBFTk9FTlQgYXMKIAkJCSAqIGZhciBhcyBnaXQgaXMgY29uY2VybmVkOyB3ZSBkbyBub3QgdHJhY2sKLQkJCSAqIGRpcmVjdG9yaWVzLgorCQkJICogZGlyZWN0b3JpZXMgdW5sZXNzIHRoZXkgYXJlIHN1Ym1vZHVsZXMuCiAJCQkgKi8KLQkJCWNvbnRpbnVlOworCQkJaWYgKCFTX0lTR0lUTElOSyhjZS0+Y2VfbW9kZSkpCisJCQkJY29udGludWU7CiAJCX0KIAogCQkvKgpAQCAtODAsOCArMTQyLDExIEBACiAKIAkJLyoKIAkJICogSXMgdGhlIGluZGV4IGRpZmZlcmVudCBmcm9tIHRoZSBmaWxlIGluIHRoZSB3b3JrIHRyZWU/CisJCSAqIElmIGl0J3MgYSBzdWJtb2R1bGUsIGlzIGl0cyB3b3JrIHRyZWUgbW9kaWZpZWQ/CiAJCSAqLwotCQlpZiAoY2VfbWF0Y2hfc3RhdChjZSwgJnN0LCAwKSkKKwkJaWYgKGNlX21hdGNoX3N0YXQoY2UsICZzdCwgMCkgfHwKKwkJICAgIChTX0lTR0lUTElOSyhjZS0+Y2VfbW9kZSkgJiYKKwkJICAgICAhb2tfdG9fcmVtb3ZlX3N1Ym1vZHVsZShjZS0+bmFtZSkpKQogCQkJbG9jYWxfY2hhbmdlcyA9IDE7CiAKIAkJLyoKQEAgLTExNSwxMCArMTgwLDE4IEBACiAJCQkJZXJycyA9IGVycm9yKF8oIiclcycgaGFzIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleFxuIgogCQkJCQkgICAgICIodXNlIC0tY2FjaGVkIHRvIGtlZXAgdGhlIGZpbGUsICIKIAkJCQkJICAgICAib3IgLWYgdG8gZm9yY2UgcmVtb3ZhbCkiKSwgbmFtZSk7Ci0JCQlpZiAobG9jYWxfY2hhbmdlcykKLQkJCQllcnJzID0gZXJyb3IoXygiJyVzJyBoYXMgbG9jYWwgbW9kaWZpY2F0aW9uc1xuIgotCQkJCQkgICAgICIodXNlIC0tY2FjaGVkIHRvIGtlZXAgdGhlIGZpbGUsICIKLQkJCQkJICAgICAib3IgLWYgdG8gZm9yY2UgcmVtb3ZhbCkiKSwgbmFtZSk7CisJCQlpZiAobG9jYWxfY2hhbmdlcykgeworCQkJCWlmIChTX0lTR0lUTElOSyhjZS0+Y2VfbW9kZSkgJiYKKwkJCQkgICAgIXN1Ym1vZHVsZV91c2VzX2dpdGZpbGUobmFtZSkpIHsKKwkJCQkJZXJycyA9IGVycm9yKF8oInN1Ym1vZHVsZSAnJXMnIChvciBvbmUgb2YgaXRzIG5lc3RlZCAiCisJCQkJCQkgICAgICJzdWJtb2R1bGVzKSB1c2VzIGEgLmdpdCBkaXJlY3RvcnlcbiIKKwkJCQkJCSAgICAgIih1c2UgJ3JtIC1yZicgaWYgeW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSAiCisJCQkJCQkgICAgICJpdCBpbmNsdWRpbmcgYWxsIG9mIGl0cyBoaXN0b3J5KSIpLCBuYW1lKTsKKwkJCQl9IGVsc2UKKwkJCQkJZXJycyA9IGVycm9yKF8oIiclcycgaGFzIGxvY2FsIG1vZGlmaWNhdGlvbnNcbiIKKwkJCQkJCSAgICAgIih1c2UgLS1jYWNoZWQgdG8ga2VlcCB0aGUgZmlsZSwgIgorCQkJCQkJICAgICAib3IgLWYgdG8gZm9yY2UgcmVtb3ZhbCkiKSwgbmFtZSk7CisJCQl9CiAJCX0KIAl9CiAJcmV0dXJuIGVycnM7CkBAIC0xMzAsMTMgKzIwMywxMyBAQAogc3RhdGljIGludCBpZ25vcmVfdW5tYXRjaCA9IDA7CiAKIHN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5fcm1fb3B0aW9uc1tdID0gewotCU9QVF9fRFJZX1JVTigmc2hvd19vbmx5LCAiZHJ5IHJ1biIpLAotCU9QVF9fUVVJRVQoJnF1aWV0LCAiZG8gbm90IGxpc3QgcmVtb3ZlZCBmaWxlcyIpLAotCU9QVF9CT09MRUFOKCAwICwgImNhY2hlZCIsICAgICAgICAgJmluZGV4X29ubHksICJvbmx5IHJlbW92ZSBmcm9tIHRoZSBpbmRleCIpLAotCU9QVF9fRk9SQ0UoJmZvcmNlLCAib3ZlcnJpZGUgdGhlIHVwLXRvLWRhdGUgY2hlY2siKSwKLQlPUFRfQk9PTEVBTigncicsIE5VTEwsICAgICAgICAgICAgICZyZWN1cnNpdmUsICAiYWxsb3cgcmVjdXJzaXZlIHJlbW92YWwiKSwKKwlPUFRfX0RSWV9SVU4oJnNob3dfb25seSwgTl8oImRyeSBydW4iKSksCisJT1BUX19RVUlFVCgmcXVpZXQsIE5fKCJkbyBub3QgbGlzdCByZW1vdmVkIGZpbGVzIikpLAorCU9QVF9CT09MRUFOKCAwICwgImNhY2hlZCIsICAgICAgICAgJmluZGV4X29ubHksIE5fKCJvbmx5IHJlbW92ZSBmcm9tIHRoZSBpbmRleCIpKSwKKwlPUFRfX0ZPUkNFKCZmb3JjZSwgTl8oIm92ZXJyaWRlIHRoZSB1cC10by1kYXRlIGNoZWNrIikpLAorCU9QVF9CT09MRUFOKCdyJywgTlVMTCwgICAgICAgICAgICAgJnJlY3Vyc2l2ZSwgIE5fKCJhbGxvdyByZWN1cnNpdmUgcmVtb3ZhbCIpKSwKIAlPUFRfQk9PTEVBTiggMCAsICJpZ25vcmUtdW5tYXRjaCIsICZpZ25vcmVfdW5tYXRjaCwKLQkJCQkiZXhpdCB3aXRoIGEgemVybyBzdGF0dXMgZXZlbiBpZiBub3RoaW5nIG1hdGNoZWQiKSwKKwkJCQlOXygiZXhpdCB3aXRoIGEgemVybyBzdGF0dXMgZXZlbiBpZiBub3RoaW5nIG1hdGNoZWQiKSksCiAJT1BUX0VORCgpLAogfTsKIApAQCAtMTYxLDYgKzIzNCwyMSBAQAogCWlmIChyZWFkX2NhY2hlKCkgPCAwKQogCQlkaWUoXygiaW5kZXggZmlsZSBjb3JydXB0IikpOwogCisJLyoKKwkgKiBEcm9wIHRyYWlsaW5nIGRpcmVjdG9yeSBzZXBhcmF0b3JzIGZyb20gZGlyZWN0b3JpZXMgc28gd2UnbGwgZmluZAorCSAqIHN1Ym1vZHVsZXMgaW4gdGhlIGluZGV4LgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKKwkJc2l6ZV90IHBhdGhsZW4gPSBzdHJsZW4oYXJndltpXSk7CisJCWlmIChwYXRobGVuICYmIGlzX2Rpcl9zZXAoYXJndltpXVtwYXRobGVuIC0gMV0pICYmCisJCSAgICBpc19kaXJlY3RvcnkoYXJndltpXSkpIHsKKwkJCWRvIHsKKwkJCQlwYXRobGVuLS07CisJCQl9IHdoaWxlIChwYXRobGVuICYmIGlzX2Rpcl9zZXAoYXJndltpXVtwYXRobGVuIC0gMV0pKTsKKwkJCWFyZ3ZbaV0gPSB4bWVtZHVweihhcmd2W2ldLCBwYXRobGVuKTsKKwkJfQorCX0KKwogCXBhdGhzcGVjID0gZ2V0X3BhdGhzcGVjKHByZWZpeCwgYXJndik7CiAJcmVmcmVzaF9pbmRleCgmdGhlX2luZGV4LCBSRUZSRVNIX1FVSUVULCBwYXRoc3BlYywgTlVMTCwgTlVMTCk7CiAKQEAgLTE3Myw4ICsyNjEsOSBAQAogCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOwogCQlpZiAoIW1hdGNoX3BhdGhzcGVjKHBhdGhzcGVjLCBjZS0+bmFtZSwgY2VfbmFtZWxlbihjZSksIDAsIHNlZW4pKQogCQkJY29udGludWU7Ci0JCUFMTE9DX0dST1cobGlzdC5uYW1lLCBsaXN0Lm5yICsgMSwgbGlzdC5hbGxvYyk7Ci0JCWxpc3QubmFtZVtsaXN0Lm5yKytdID0gY2UtPm5hbWU7CisJCUFMTE9DX0dST1cobGlzdC5lbnRyeSwgbGlzdC5uciArIDEsIGxpc3QuYWxsb2MpOworCQlsaXN0LmVudHJ5W2xpc3QubnJdLm5hbWUgPSBjZS0+bmFtZTsKKwkJbGlzdC5lbnRyeVtsaXN0Lm5yKytdLmlzX3N1Ym1vZHVsZSA9IFNfSVNHSVRMSU5LKGNlLT5jZV9tb2RlKTsKIAl9CiAKIAlpZiAocGF0aHNwZWMpIHsKQEAgLTIxNSw2ICszMDQsOSBAQAogCQkJaGFzaGNscihzaGExKTsKIAkJaWYgKGNoZWNrX2xvY2FsX21vZChzaGExLCBpbmRleF9vbmx5KSkKIAkJCWV4aXQoMSk7CisJfSBlbHNlIGlmICghaW5kZXhfb25seSkgeworCQlpZiAoY2hlY2tfc3VibW9kdWxlc191c2VfZ2l0ZmlsZXMoKSkKKwkJCWV4aXQoMSk7CiAJfQogCiAJLyoKQEAgLTIyMiw3ICszMTQsNyBAQAogCSAqIHRoZSBpbmRleCB1bmxlc3MgYWxsIG9mIHRoZW0gc3VjY2VlZC4KIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbGlzdC5ucjsgaSsrKSB7Ci0JCWNvbnN0IGNoYXIgKnBhdGggPSBsaXN0Lm5hbWVbaV07CisJCWNvbnN0IGNoYXIgKnBhdGggPSBsaXN0LmVudHJ5W2ldLm5hbWU7CiAJCWlmICghcXVpZXQpCiAJCQlwcmludGYoInJtICclcydcbiIsIHBhdGgpOwogCkBAIC0yNDQsNyArMzM2LDI1IEBACiAJaWYgKCFpbmRleF9vbmx5KSB7CiAJCWludCByZW1vdmVkID0gMDsKIAkJZm9yIChpID0gMDsgaSA8IGxpc3QubnI7IGkrKykgewotCQkJY29uc3QgY2hhciAqcGF0aCA9IGxpc3QubmFtZVtpXTsKKwkJCWNvbnN0IGNoYXIgKnBhdGggPSBsaXN0LmVudHJ5W2ldLm5hbWU7CisJCQlpZiAobGlzdC5lbnRyeVtpXS5pc19zdWJtb2R1bGUpIHsKKwkJCQlpZiAoaXNfZW1wdHlfZGlyKHBhdGgpKSB7CisJCQkJCWlmICghcm1kaXIocGF0aCkpIHsKKwkJCQkJCXJlbW92ZWQgPSAxOworCQkJCQkJY29udGludWU7CisJCQkJCX0KKwkJCQl9IGVsc2UgeworCQkJCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCQkJCQlzdHJidWZfYWRkc3RyKCZidWYsIHBhdGgpOworCQkJCQlpZiAoIXJlbW92ZV9kaXJfcmVjdXJzaXZlbHkoJmJ1ZiwgMCkpIHsKKwkJCQkJCXJlbW92ZWQgPSAxOworCQkJCQkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CisJCQkJCQljb250aW51ZTsKKwkJCQkJfQorCQkJCQlzdHJidWZfcmVsZWFzZSgmYnVmKTsKKwkJCQkJLyogRmFsbHRocm91Z2ggYW5kIGxldCByZW1vdmVfcGF0aCgpIGZhaWwuICovCisJCQkJfQorCQkJfQogCQkJaWYgKCFyZW1vdmVfcGF0aChwYXRoKSkgewogCQkJCXJlbW92ZWQgPSAxOwogCQkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9zZW5kLXBhY2suYyBiL2J1aWx0aW4vc2VuZC1wYWNrLmMKaW5kZXggZDVkNzEwNS4uMTUyYzRlYSAxMDA2NDQKLS0tIGEvYnVpbHRpbi9zZW5kLXBhY2suYworKysgYi9idWlsdGluL3NlbmQtcGFjay5jCkBAIC04LDYgKzgsNyBAQAogI2luY2x1ZGUgInNlbmQtcGFjay5oIgogI2luY2x1ZGUgInF1b3RlLmgiCiAjaW5jbHVkZSAidHJhbnNwb3J0LmgiCisjaW5jbHVkZSAidmVyc2lvbi5oIgogCiBzdGF0aWMgY29uc3QgY2hhciBzZW5kX3BhY2tfdXNhZ2VbXSA9CiAiZ2l0IHNlbmQtcGFjayBbLS1hbGwgfCAtLW1pcnJvcl0gWy0tZHJ5LXJ1bl0gWy0tZm9yY2VdIFstLXJlY2VpdmUtcGFjaz08Z2l0LXJlY2VpdmUtcGFjaz5dIFstLXZlcmJvc2VdIFstLXRoaW5dIFs8aG9zdD46XTxkaXJlY3Rvcnk+IFs8cmVmPi4uLl1cbiIKQEAgLTE1LDE2NCArMTYsNiBAQAogCiBzdGF0aWMgc3RydWN0IHNlbmRfcGFja19hcmdzIGFyZ3M7CiAKLXN0YXRpYyBpbnQgZmVlZF9vYmplY3QoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgaW50IGZkLCBpbnQgbmVnYXRpdmUpCi17Ci0JY2hhciBidWZbNDJdOwotCi0JaWYgKG5lZ2F0aXZlICYmICFoYXNfc2hhMV9maWxlKHNoYTEpKQotCQlyZXR1cm4gMTsKLQotCW1lbWNweShidWYgKyBuZWdhdGl2ZSwgc2hhMV90b19oZXgoc2hhMSksIDQwKTsKLQlpZiAobmVnYXRpdmUpCi0JCWJ1ZlswXSA9ICdeJzsKLQlidWZbNDAgKyBuZWdhdGl2ZV0gPSAnXG4nOwotCXJldHVybiB3cml0ZV9vcl93aGluZShmZCwgYnVmLCA0MSArIG5lZ2F0aXZlLCAic2VuZC1wYWNrOiBzZW5kIHJlZnMiKTsKLX0KLQotLyoKLSAqIE1ha2UgYSBwYWNrIHN0cmVhbSBhbmQgc3BpdCBpdCBvdXQgaW50byBmaWxlIGRlc2NyaXB0b3IgZmQKLSAqLwotc3RhdGljIGludCBwYWNrX29iamVjdHMoaW50IGZkLCBzdHJ1Y3QgcmVmICpyZWZzLCBzdHJ1Y3QgZXh0cmFfaGF2ZV9vYmplY3RzICpleHRyYSwgc3RydWN0IHNlbmRfcGFja19hcmdzICphcmdzKQotewotCS8qCi0JICogVGhlIGNoaWxkIGJlY29tZXMgcGFjay1vYmplY3RzIC0tcmV2czsgd2UgZmVlZAotCSAqIHRoZSByZXZpc2lvbiBwYXJhbWV0ZXJzIHRvIGl0IHZpYSBpdHMgc3RkaW4gYW5kCi0JICogbGV0IGl0cyBzdGRvdXQgZ28gYmFjayB0byB0aGUgb3RoZXIgZW5kLgotCSAqLwotCWNvbnN0IGNoYXIgKmFyZ3ZbXSA9IHsKLQkJInBhY2stb2JqZWN0cyIsCi0JCSItLWFsbC1wcm9ncmVzcy1pbXBsaWVkIiwKLQkJIi0tcmV2cyIsCi0JCSItLXN0ZG91dCIsCi0JCU5VTEwsCi0JCU5VTEwsCi0JCU5VTEwsCi0JCU5VTEwsCi0JCU5VTEwsCi0JfTsKLQlzdHJ1Y3QgY2hpbGRfcHJvY2VzcyBwbzsKLQlpbnQgaTsKLQotCWkgPSA0OwotCWlmIChhcmdzLT51c2VfdGhpbl9wYWNrKQotCQlhcmd2W2krK10gPSAiLS10aGluIjsKLQlpZiAoYXJncy0+dXNlX29mc19kZWx0YSkKLQkJYXJndltpKytdID0gIi0tZGVsdGEtYmFzZS1vZmZzZXQiOwotCWlmIChhcmdzLT5xdWlldCB8fCAhYXJncy0+cHJvZ3Jlc3MpCi0JCWFyZ3ZbaSsrXSA9ICItcSI7Ci0JaWYgKGFyZ3MtPnByb2dyZXNzKQotCQlhcmd2W2krK10gPSAiLS1wcm9ncmVzcyI7Ci0JbWVtc2V0KCZwbywgMCwgc2l6ZW9mKHBvKSk7Ci0JcG8uYXJndiA9IGFyZ3Y7Ci0JcG8uaW4gPSAtMTsKLQlwby5vdXQgPSBhcmdzLT5zdGF0ZWxlc3NfcnBjID8gLTEgOiBmZDsKLQlwby5naXRfY21kID0gMTsKLQlpZiAoc3RhcnRfY29tbWFuZCgmcG8pKQotCQlkaWVfZXJybm8oImdpdCBwYWNrLW9iamVjdHMgZmFpbGVkIik7Ci0KLQkvKgotCSAqIFdlIGZlZWQgdGhlIHBhY2stb2JqZWN0cyB3ZSBqdXN0IHNwYXduZWQgd2l0aCByZXZpc2lvbgotCSAqIHBhcmFtZXRlcnMgYnkgd3JpdGluZyB0byB0aGUgcGlwZS4KLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgZXh0cmEtPm5yOyBpKyspCi0JCWlmICghZmVlZF9vYmplY3QoZXh0cmEtPmFycmF5W2ldLCBwby5pbiwgMSkpCi0JCQlicmVhazsKLQotCXdoaWxlIChyZWZzKSB7Ci0JCWlmICghaXNfbnVsbF9zaGExKHJlZnMtPm9sZF9zaGExKSAmJgotCQkgICAgIWZlZWRfb2JqZWN0KHJlZnMtPm9sZF9zaGExLCBwby5pbiwgMSkpCi0JCQlicmVhazsKLQkJaWYgKCFpc19udWxsX3NoYTEocmVmcy0+bmV3X3NoYTEpICYmCi0JCSAgICAhZmVlZF9vYmplY3QocmVmcy0+bmV3X3NoYTEsIHBvLmluLCAwKSkKLQkJCWJyZWFrOwotCQlyZWZzID0gcmVmcy0+bmV4dDsKLQl9Ci0KLQljbG9zZShwby5pbik7Ci0KLQlpZiAoYXJncy0+c3RhdGVsZXNzX3JwYykgewotCQljaGFyICpidWYgPSB4bWFsbG9jKExBUkdFX1BBQ0tFVF9NQVgpOwotCQl3aGlsZSAoMSkgewotCQkJc3NpemVfdCBuID0geHJlYWQocG8ub3V0LCBidWYsIExBUkdFX1BBQ0tFVF9NQVgpOwotCQkJaWYgKG4gPD0gMCkKLQkJCQlicmVhazsKLQkJCXNlbmRfc2lkZWJhbmQoZmQsIC0xLCBidWYsIG4sIExBUkdFX1BBQ0tFVF9NQVgpOwotCQl9Ci0JCWZyZWUoYnVmKTsKLQkJY2xvc2UocG8ub3V0KTsKLQkJcG8ub3V0ID0gLTE7Ci0JfQotCi0JaWYgKGZpbmlzaF9jb21tYW5kKCZwbykpCi0JCXJldHVybiAtMTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCByZWNlaXZlX3N0YXR1cyhpbnQgaW4sIHN0cnVjdCByZWYgKnJlZnMpCi17Ci0Jc3RydWN0IHJlZiAqaGludDsKLQljaGFyIGxpbmVbMTAwMF07Ci0JaW50IHJldCA9IDA7Ci0JaW50IGxlbiA9IHBhY2tldF9yZWFkX2xpbmUoaW4sIGxpbmUsIHNpemVvZihsaW5lKSk7Ci0JaWYgKGxlbiA8IDEwIHx8IG1lbWNtcChsaW5lLCAidW5wYWNrICIsIDcpKQotCQlyZXR1cm4gZXJyb3IoImRpZCBub3QgcmVjZWl2ZSByZW1vdGUgc3RhdHVzIik7Ci0JaWYgKG1lbWNtcChsaW5lLCAidW5wYWNrIG9rXG4iLCAxMCkpIHsKLQkJY2hhciAqcCA9IGxpbmUgKyBzdHJsZW4obGluZSkgLSAxOwotCQlpZiAoKnAgPT0gJ1xuJykKLQkJCSpwID0gJ1wwJzsKLQkJZXJyb3IoInVucGFjayBmYWlsZWQ6ICVzIiwgbGluZSArIDcpOwotCQlyZXQgPSAtMTsKLQl9Ci0JaGludCA9IE5VTEw7Ci0Jd2hpbGUgKDEpIHsKLQkJY2hhciAqcmVmbmFtZTsKLQkJY2hhciAqbXNnOwotCQlsZW4gPSBwYWNrZXRfcmVhZF9saW5lKGluLCBsaW5lLCBzaXplb2YobGluZSkpOwotCQlpZiAoIWxlbikKLQkJCWJyZWFrOwotCQlpZiAobGVuIDwgMyB8fAotCQkgICAgKG1lbWNtcChsaW5lLCAib2sgIiwgMykgJiYgbWVtY21wKGxpbmUsICJuZyAiLCAzKSkpIHsKLQkJCWZwcmludGYoc3RkZXJyLCAicHJvdG9jb2wgZXJyb3I6ICVzXG4iLCBsaW5lKTsKLQkJCXJldCA9IC0xOwotCQkJYnJlYWs7Ci0JCX0KLQotCQlsaW5lW3N0cmxlbihsaW5lKS0xXSA9ICdcMCc7Ci0JCXJlZm5hbWUgPSBsaW5lICsgMzsKLQkJbXNnID0gc3RyY2hyKHJlZm5hbWUsICcgJyk7Ci0JCWlmIChtc2cpCi0JCQkqbXNnKysgPSAnXDAnOwotCi0JCS8qIGZpcnN0IHRyeSBzZWFyY2hpbmcgYXQgb3VyIGhpbnQsIGZhbGxpbmcgYmFjayB0byBhbGwgcmVmcyAqLwotCQlpZiAoaGludCkKLQkJCWhpbnQgPSBmaW5kX3JlZl9ieV9uYW1lKGhpbnQsIHJlZm5hbWUpOwotCQlpZiAoIWhpbnQpCi0JCQloaW50ID0gZmluZF9yZWZfYnlfbmFtZShyZWZzLCByZWZuYW1lKTsKLQkJaWYgKCFoaW50KSB7Ci0JCQl3YXJuaW5nKCJyZW1vdGUgcmVwb3J0ZWQgc3RhdHVzIG9uIHVua25vd24gcmVmOiAlcyIsCi0JCQkJCXJlZm5hbWUpOwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKGhpbnQtPnN0YXR1cyAhPSBSRUZfU1RBVFVTX0VYUEVDVElOR19SRVBPUlQpIHsKLQkJCXdhcm5pbmcoInJlbW90ZSByZXBvcnRlZCBzdGF0dXMgb24gdW5leHBlY3RlZCByZWY6ICVzIiwKLQkJCQkJcmVmbmFtZSk7Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCWlmIChsaW5lWzBdID09ICdvJyAmJiBsaW5lWzFdID09ICdrJykKLQkJCWhpbnQtPnN0YXR1cyA9IFJFRl9TVEFUVVNfT0s7Ci0JCWVsc2UgewotCQkJaGludC0+c3RhdHVzID0gUkVGX1NUQVRVU19SRU1PVEVfUkVKRUNUOwotCQkJcmV0ID0gLTE7Ci0JCX0KLQkJaWYgKG1zZykKLQkJCWhpbnQtPnJlbW90ZV9zdGF0dXMgPSB4c3RyZHVwKG1zZyk7Ci0JCS8qIHN0YXJ0IG91ciBuZXh0IHNlYXJjaCBmcm9tIHRoZSBuZXh0IHJlZiAqLwotCQloaW50ID0gaGludC0+bmV4dDsKLQl9Ci0JcmV0dXJuIHJldDsKLX0KLQogc3RhdGljIHZvaWQgcHJpbnRfaGVscGVyX3N0YXR1cyhzdHJ1Y3QgcmVmICpyZWYpCiB7CiAJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKQEAgLTIwMSw2ICs0NCwyMSBAQAogCQkJbXNnID0gIm5vbi1mYXN0IGZvcndhcmQiOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBSRUZfU1RBVFVTX1JFSkVDVF9GRVRDSF9GSVJTVDoKKwkJCXJlcyA9ICJlcnJvciI7CisJCQltc2cgPSAiZmV0Y2ggZmlyc3QiOworCQkJYnJlYWs7CisKKwkJY2FzZSBSRUZfU1RBVFVTX1JFSkVDVF9ORUVEU19GT1JDRToKKwkJCXJlcyA9ICJlcnJvciI7CisJCQltc2cgPSAibmVlZHMgZm9yY2UiOworCQkJYnJlYWs7CisKKwkJY2FzZSBSRUZfU1RBVFVTX1JFSkVDVF9BTFJFQURZX0VYSVNUUzoKKwkJCXJlcyA9ICJlcnJvciI7CisJCQltc2cgPSAiYWxyZWFkeSBleGlzdHMiOworCQkJYnJlYWs7CisKIAkJY2FzZSBSRUZfU1RBVFVTX1JFSkVDVF9OT0RFTEVURToKIAkJY2FzZSBSRUZfU1RBVFVTX1JFTU9URV9SRUpFQ1Q6CiAJCQlyZXMgPSAiZXJyb3IiOwpAQCAtMjIxLDE3OCArNzksMTEgQEAKIAkJfQogCQlzdHJidWZfYWRkY2goJmJ1ZiwgJ1xuJyk7CiAKLQkJc2FmZV93cml0ZSgxLCBidWYuYnVmLCBidWYubGVuKTsKKwkJd3JpdGVfb3JfZGllKDEsIGJ1Zi5idWYsIGJ1Zi5sZW4pOwogCX0KIAlzdHJidWZfcmVsZWFzZSgmYnVmKTsKIH0KIAotc3RhdGljIGludCBzaWRlYmFuZF9kZW11eChpbnQgaW4sIGludCBvdXQsIHZvaWQgKmRhdGEpCi17Ci0JaW50ICpmZCA9IGRhdGEsIHJldDsKLSNpZmRlZiBOT19QVEhSRUFEUwotCWNsb3NlKGZkWzFdKTsKLSNlbmRpZgotCXJldCA9IHJlY3Zfc2lkZWJhbmQoInNlbmQtcGFjayIsIGZkWzBdLCBvdXQpOwotCWNsb3NlKG91dCk7Ci0JcmV0dXJuIHJldDsKLX0KLQotaW50IHNlbmRfcGFjayhzdHJ1Y3Qgc2VuZF9wYWNrX2FyZ3MgKmFyZ3MsCi0JICAgICAgaW50IGZkW10sIHN0cnVjdCBjaGlsZF9wcm9jZXNzICpjb25uLAotCSAgICAgIHN0cnVjdCByZWYgKnJlbW90ZV9yZWZzLAotCSAgICAgIHN0cnVjdCBleHRyYV9oYXZlX29iamVjdHMgKmV4dHJhX2hhdmUpCi17Ci0JaW50IGluID0gZmRbMF07Ci0JaW50IG91dCA9IGZkWzFdOwotCXN0cnVjdCBzdHJidWYgcmVxX2J1ZiA9IFNUUkJVRl9JTklUOwotCXN0cnVjdCByZWYgKnJlZjsKLQlpbnQgbmV3X3JlZnM7Ci0JaW50IGFsbG93X2RlbGV0aW5nX3JlZnMgPSAwOwotCWludCBzdGF0dXNfcmVwb3J0ID0gMDsKLQlpbnQgdXNlX3NpZGViYW5kID0gMDsKLQlpbnQgcXVpZXRfc3VwcG9ydGVkID0gMDsKLQl1bnNpZ25lZCBjbWRzX3NlbnQgPSAwOwotCWludCByZXQ7Ci0Jc3RydWN0IGFzeW5jIGRlbXV4OwotCi0JLyogRG9lcyB0aGUgb3RoZXIgZW5kIHN1cHBvcnQgdGhlIHJlcG9ydGluZz8gKi8KLQlpZiAoc2VydmVyX3N1cHBvcnRzKCJyZXBvcnQtc3RhdHVzIikpCi0JCXN0YXR1c19yZXBvcnQgPSAxOwotCWlmIChzZXJ2ZXJfc3VwcG9ydHMoImRlbGV0ZS1yZWZzIikpCi0JCWFsbG93X2RlbGV0aW5nX3JlZnMgPSAxOwotCWlmIChzZXJ2ZXJfc3VwcG9ydHMoIm9mcy1kZWx0YSIpKQotCQlhcmdzLT51c2Vfb2ZzX2RlbHRhID0gMTsKLQlpZiAoc2VydmVyX3N1cHBvcnRzKCJzaWRlLWJhbmQtNjRrIikpCi0JCXVzZV9zaWRlYmFuZCA9IDE7Ci0JaWYgKHNlcnZlcl9zdXBwb3J0cygicXVpZXQiKSkKLQkJcXVpZXRfc3VwcG9ydGVkID0gMTsKLQotCWlmICghcmVtb3RlX3JlZnMpIHsKLQkJZnByaW50ZihzdGRlcnIsICJObyByZWZzIGluIGNvbW1vbiBhbmQgbm9uZSBzcGVjaWZpZWQ7IGRvaW5nIG5vdGhpbmcuXG4iCi0JCQkiUGVyaGFwcyB5b3Ugc2hvdWxkIHNwZWNpZnkgYSBicmFuY2ggc3VjaCBhcyAnbWFzdGVyJy5cbiIpOwotCQlyZXR1cm4gMDsKLQl9Ci0KLQkvKgotCSAqIEZpbmFsbHksIHRlbGwgdGhlIG90aGVyIGVuZCEKLQkgKi8KLQluZXdfcmVmcyA9IDA7Ci0JZm9yIChyZWYgPSByZW1vdGVfcmVmczsgcmVmOyByZWYgPSByZWYtPm5leHQpIHsKLQkJaWYgKCFyZWYtPnBlZXJfcmVmICYmICFhcmdzLT5zZW5kX21pcnJvcikKLQkJCWNvbnRpbnVlOwotCi0JCS8qIENoZWNrIGZvciBzdGF0dXNlcyBzZXQgYnkgc2V0X3JlZl9zdGF0dXNfZm9yX3B1c2goKSAqLwotCQlzd2l0Y2ggKHJlZi0+c3RhdHVzKSB7Ci0JCWNhc2UgUkVGX1NUQVRVU19SRUpFQ1RfTk9ORkFTVEZPUldBUkQ6Ci0JCWNhc2UgUkVGX1NUQVRVU19VUFRPREFURToKLQkJCWNvbnRpbnVlOwotCQlkZWZhdWx0OgotCQkJOyAvKiBkbyBub3RoaW5nICovCi0JCX0KLQotCQlpZiAocmVmLT5kZWxldGlvbiAmJiAhYWxsb3dfZGVsZXRpbmdfcmVmcykgewotCQkJcmVmLT5zdGF0dXMgPSBSRUZfU1RBVFVTX1JFSkVDVF9OT0RFTEVURTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KLQkJaWYgKCFyZWYtPmRlbGV0aW9uKQotCQkJbmV3X3JlZnMrKzsKLQotCQlpZiAoYXJncy0+ZHJ5X3J1bikgewotCQkJcmVmLT5zdGF0dXMgPSBSRUZfU1RBVFVTX09LOwotCQl9IGVsc2UgewotCQkJY2hhciAqb2xkX2hleCA9IHNoYTFfdG9faGV4KHJlZi0+b2xkX3NoYTEpOwotCQkJY2hhciAqbmV3X2hleCA9IHNoYTFfdG9faGV4KHJlZi0+bmV3X3NoYTEpOwotCQkJaW50IHF1aWV0ID0gcXVpZXRfc3VwcG9ydGVkICYmIChhcmdzLT5xdWlldCB8fCAhYXJncy0+cHJvZ3Jlc3MpOwotCi0JCQlpZiAoIWNtZHNfc2VudCAmJiAoc3RhdHVzX3JlcG9ydCB8fCB1c2Vfc2lkZWJhbmQgfHwgYXJncy0+cXVpZXQpKSB7Ci0JCQkJcGFja2V0X2J1Zl93cml0ZSgmcmVxX2J1ZiwgIiVzICVzICVzJWMlcyVzJXMiLAotCQkJCQkJIG9sZF9oZXgsIG5ld19oZXgsIHJlZi0+bmFtZSwgMCwKLQkJCQkJCSBzdGF0dXNfcmVwb3J0ID8gIiByZXBvcnQtc3RhdHVzIiA6ICIiLAotCQkJCQkJIHVzZV9zaWRlYmFuZCA/ICIgc2lkZS1iYW5kLTY0ayIgOiAiIiwKLQkJCQkJCSBxdWlldCA/ICIgcXVpZXQiIDogIiIpOwotCQkJfQotCQkJZWxzZQotCQkJCXBhY2tldF9idWZfd3JpdGUoJnJlcV9idWYsICIlcyAlcyAlcyIsCi0JCQkJCQkgb2xkX2hleCwgbmV3X2hleCwgcmVmLT5uYW1lKTsKLQkJCXJlZi0+c3RhdHVzID0gc3RhdHVzX3JlcG9ydCA/Ci0JCQkJUkVGX1NUQVRVU19FWFBFQ1RJTkdfUkVQT1JUIDoKLQkJCQlSRUZfU1RBVFVTX09LOwotCQkJY21kc19zZW50Kys7Ci0JCX0KLQl9Ci0KLQlpZiAoYXJncy0+c3RhdGVsZXNzX3JwYykgewotCQlpZiAoIWFyZ3MtPmRyeV9ydW4gJiYgY21kc19zZW50KSB7Ci0JCQlwYWNrZXRfYnVmX2ZsdXNoKCZyZXFfYnVmKTsKLQkJCXNlbmRfc2lkZWJhbmQob3V0LCAtMSwgcmVxX2J1Zi5idWYsIHJlcV9idWYubGVuLCBMQVJHRV9QQUNLRVRfTUFYKTsKLQkJfQotCX0gZWxzZSB7Ci0JCXNhZmVfd3JpdGUob3V0LCByZXFfYnVmLmJ1ZiwgcmVxX2J1Zi5sZW4pOwotCQlwYWNrZXRfZmx1c2gob3V0KTsKLQl9Ci0Jc3RyYnVmX3JlbGVhc2UoJnJlcV9idWYpOwotCi0JaWYgKHVzZV9zaWRlYmFuZCAmJiBjbWRzX3NlbnQpIHsKLQkJbWVtc2V0KCZkZW11eCwgMCwgc2l6ZW9mKGRlbXV4KSk7Ci0JCWRlbXV4LnByb2MgPSBzaWRlYmFuZF9kZW11eDsKLQkJZGVtdXguZGF0YSA9IGZkOwotCQlkZW11eC5vdXQgPSAtMTsKLQkJaWYgKHN0YXJ0X2FzeW5jKCZkZW11eCkpCi0JCQlkaWUoInNlbmQtcGFjazogdW5hYmxlIHRvIGZvcmsgb2ZmIHNpZGViYW5kIGRlbXVsdGlwbGV4ZXIiKTsKLQkJaW4gPSBkZW11eC5vdXQ7Ci0JfQotCi0JaWYgKG5ld19yZWZzICYmIGNtZHNfc2VudCkgewotCQlpZiAocGFja19vYmplY3RzKG91dCwgcmVtb3RlX3JlZnMsIGV4dHJhX2hhdmUsIGFyZ3MpIDwgMCkgewotCQkJZm9yIChyZWYgPSByZW1vdGVfcmVmczsgcmVmOyByZWYgPSByZWYtPm5leHQpCi0JCQkJcmVmLT5zdGF0dXMgPSBSRUZfU1RBVFVTX05PTkU7Ci0JCQlpZiAoYXJncy0+c3RhdGVsZXNzX3JwYykKLQkJCQljbG9zZShvdXQpOwotCQkJaWYgKGdpdF9jb25uZWN0aW9uX2lzX3NvY2tldChjb25uKSkKLQkJCQlzaHV0ZG93bihmZFswXSwgU0hVVF9XUik7Ci0JCQlpZiAodXNlX3NpZGViYW5kKQotCQkJCWZpbmlzaF9hc3luYygmZGVtdXgpOwotCQkJcmV0dXJuIC0xOwotCQl9Ci0JfQotCWlmIChhcmdzLT5zdGF0ZWxlc3NfcnBjICYmIGNtZHNfc2VudCkKLQkJcGFja2V0X2ZsdXNoKG91dCk7Ci0KLQlpZiAoc3RhdHVzX3JlcG9ydCAmJiBjbWRzX3NlbnQpCi0JCXJldCA9IHJlY2VpdmVfc3RhdHVzKGluLCByZW1vdGVfcmVmcyk7Ci0JZWxzZQotCQlyZXQgPSAwOwotCWlmIChhcmdzLT5zdGF0ZWxlc3NfcnBjKQotCQlwYWNrZXRfZmx1c2gob3V0KTsKLQotCWlmICh1c2Vfc2lkZWJhbmQgJiYgY21kc19zZW50KSB7Ci0JCWlmIChmaW5pc2hfYXN5bmMoJmRlbXV4KSkgewotCQkJZXJyb3IoImVycm9yIGluIHNpZGViYW5kIGRlbXVsdGlwbGV4ZXIiKTsKLQkJCXJldCA9IC0xOwotCQl9Ci0JCWNsb3NlKGRlbXV4Lm91dCk7Ci0JfQotCi0JaWYgKHJldCA8IDApCi0JCXJldHVybiByZXQ7Ci0KLQlpZiAoYXJncy0+cG9yY2VsYWluKQotCQlyZXR1cm4gMDsKLQotCWZvciAocmVmID0gcmVtb3RlX3JlZnM7IHJlZjsgcmVmID0gcmVmLT5uZXh0KSB7Ci0JCXN3aXRjaCAocmVmLT5zdGF0dXMpIHsKLQkJY2FzZSBSRUZfU1RBVFVTX05PTkU6Ci0JCWNhc2UgUkVGX1NUQVRVU19VUFRPREFURToKLQkJY2FzZSBSRUZfU1RBVFVTX09LOgotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlyZXR1cm4gLTE7Ci0JCX0KLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KIGludCBjbWRfc2VuZF9wYWNrKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewogCWludCBpLCBucl9yZWZzcGVjcyA9IDA7CkBAIC00MDksNyArMTAwLDcgQEAKIAlpbnQgc2VuZF9hbGwgPSAwOwogCWNvbnN0IGNoYXIgKnJlY2VpdmVwYWNrID0gImdpdC1yZWNlaXZlLXBhY2siOwogCWludCBmbGFnczsKLQlpbnQgbm9uZmFzdGZvcndhcmQgPSAwOworCXVuc2lnbmVkIGludCByZWplY3RfcmVhc29uczsKIAlpbnQgcHJvZ3Jlc3MgPSAtMTsKIAogCWFyZ3YrKzsKQEAgLTUxNiw3ICsyMDcsNyBAQAogCiAJbWVtc2V0KCZleHRyYV9oYXZlLCAwLCBzaXplb2YoZXh0cmFfaGF2ZSkpOwogCi0JZ2V0X3JlbW90ZV9oZWFkcyhmZFswXSwgJnJlbW90ZV9yZWZzLCBSRUZfTk9STUFMLCAmZXh0cmFfaGF2ZSk7CisJZ2V0X3JlbW90ZV9oZWFkcyhmZFswXSwgTlVMTCwgMCwgJnJlbW90ZV9yZWZzLCBSRUZfTk9STUFMLCAmZXh0cmFfaGF2ZSk7CiAKIAl0cmFuc3BvcnRfdmVyaWZ5X3JlbW90ZV9uYW1lcyhucl9yZWZzcGVjcywgcmVmc3BlY3MpOwogCkBAIC01NDcsNyArMjM4LDcgQEAKIAlyZXQgfD0gZmluaXNoX2Nvbm5lY3QoY29ubik7CiAKIAlpZiAoIWhlbHBlcl9zdGF0dXMpCi0JCXRyYW5zcG9ydF9wcmludF9wdXNoX3N0YXR1cyhkZXN0LCByZW1vdGVfcmVmcywgYXJncy52ZXJib3NlLCAwLCAmbm9uZmFzdGZvcndhcmQpOworCQl0cmFuc3BvcnRfcHJpbnRfcHVzaF9zdGF0dXMoZGVzdCwgcmVtb3RlX3JlZnMsIGFyZ3MudmVyYm9zZSwgMCwgJnJlamVjdF9yZWFzb25zKTsKIAogCWlmICghYXJncy5kcnlfcnVuICYmIHJlbW90ZSkgewogCQlzdHJ1Y3QgcmVmICpyZWY7CmRpZmYgLS1naXQgYS9idWlsdGluL3Nob3J0bG9nLmMgYi9idWlsdGluL3Nob3J0bG9nLmMKaW5kZXggMzdmMzE5My4uMWZkNmY4YSAxMDA2NDQKLS0tIGEvYnVpbHRpbi9zaG9ydGxvZy5jCisrKyBiL2J1aWx0aW4vc2hvcnRsb2cuYwpAQCAtMTAsOSArMTAsNyBAQAogI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKIAogc3RhdGljIGNoYXIgY29uc3QgKiBjb25zdCBzaG9ydGxvZ191c2FnZVtdID0gewotCSJnaXQgc2hvcnRsb2cgWy1uXSBbLXNdIFstZV0gWy13XSBbcmV2LW9wdHNdIFstLV0gWzxjb21taXQtaWQ+Li4uIF0iLAotCSIiLAotCSJbcmV2LW9wdHNdIGFyZSBkb2N1bWVudGVkIGluIGdpdC1yZXYtbGlzdCgxKSIsCisJTl8oImdpdCBzaG9ydGxvZyBbPG9wdGlvbnM+XSBbPHJldmlzaW9uIHJhbmdlPl0gW1stLV0gWzxwYXRoPi4uLl1dIiksCiAJTlVMTAogfTsKIApAQCAtMzYsNTIgKzM0LDI4IEBACiAJY29uc3QgY2hhciAqZG90MyA9IGxvZy0+Y29tbW9uX3JlcG9fcHJlZml4OwogCWNoYXIgKmJ1ZmZlciwgKnA7CiAJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW07Ci0JY2hhciBuYW1lYnVmWzEwMjRdOwotCWNoYXIgZW1haWxidWZbMTAyNF07Ci0Jc2l6ZV90IGxlbjsKKwljb25zdCBjaGFyICptYWlsYnVmLCAqbmFtZWJ1ZjsKKwlzaXplX3QgbmFtZWxlbiwgbWFpbGxlbjsKIAljb25zdCBjaGFyICplb2w7Ci0JY29uc3QgY2hhciAqYm9lbWFpbCwgKmVvZW1haWw7CiAJc3RydWN0IHN0cmJ1ZiBzdWJqZWN0ID0gU1RSQlVGX0lOSVQ7CisJc3RydWN0IHN0cmJ1ZiBuYW1lbWFpbGJ1ZiA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBpZGVudF9zcGxpdCBpZGVudDsKIAotCWJvZW1haWwgPSBzdHJjaHIoYXV0aG9yLCAnPCcpOwotCWlmICghYm9lbWFpbCkKLQkJcmV0dXJuOwotCWVvZW1haWwgPSBzdHJjaHIoYm9lbWFpbCwgJz4nKTsKLQlpZiAoIWVvZW1haWwpCisJaWYgKHNwbGl0X2lkZW50X2xpbmUoJmlkZW50LCBhdXRob3IsIHN0cmxlbihhdXRob3IpKSkKIAkJcmV0dXJuOwogCi0JLyogY29weSBhdXRob3IgbmFtZSB0byBuYW1lYnVmLCB0byBzdXBwb3J0IG1hdGNoaW5nIG9uIGJvdGggbmFtZSBhbmQgZW1haWwgKi8KLQltZW1jcHkobmFtZWJ1ZiwgYXV0aG9yLCBib2VtYWlsIC0gYXV0aG9yKTsKLQlsZW4gPSBib2VtYWlsIC0gYXV0aG9yOwotCXdoaWxlIChsZW4gPiAwICYmIGlzc3BhY2UobmFtZWJ1ZltsZW4tMV0pKQotCQlsZW4tLTsKLQluYW1lYnVmW2xlbl0gPSAwOworCW5hbWVidWYgPSBpZGVudC5uYW1lX2JlZ2luOworCW1haWxidWYgPSBpZGVudC5tYWlsX2JlZ2luOworCW5hbWVsZW4gPSBpZGVudC5uYW1lX2VuZCAtIGlkZW50Lm5hbWVfYmVnaW47CisJbWFpbGxlbiA9IGlkZW50Lm1haWxfZW5kIC0gaWRlbnQubWFpbF9iZWdpbjsKIAotCS8qIGNvcHkgZW1haWwgbmFtZSB0byBlbWFpbGJ1ZiwgdG8gYWxsb3cgZW1haWwgcmVwbGFjZW1lbnQgYXMgd2VsbCAqLwotCW1lbWNweShlbWFpbGJ1ZiwgYm9lbWFpbCsxLCBlb2VtYWlsIC0gYm9lbWFpbCk7Ci0JZW1haWxidWZbZW9lbWFpbCAtIGJvZW1haWwgLSAxXSA9IDA7CisJbWFwX3VzZXIoJmxvZy0+bWFpbG1hcCwgJm1haWxidWYsICZtYWlsbGVuLCAmbmFtZWJ1ZiwgJm5hbWVsZW4pOworCXN0cmJ1Zl9hZGQoJm5hbWVtYWlsYnVmLCBuYW1lYnVmLCBuYW1lbGVuKTsKIAotCWlmICghbWFwX3VzZXIoJmxvZy0+bWFpbG1hcCwgZW1haWxidWYsIHNpemVvZihlbWFpbGJ1ZiksIG5hbWVidWYsIHNpemVvZihuYW1lYnVmKSkpIHsKLQkJd2hpbGUgKGF1dGhvciA8IGJvZW1haWwgJiYgaXNzcGFjZSgqYXV0aG9yKSkKLQkJCWF1dGhvcisrOwotCQlmb3IgKGxlbiA9IDA7Ci0JCSAgICAgbGVuIDwgc2l6ZW9mKG5hbWVidWYpIC0gMSAmJiBhdXRob3IgKyBsZW4gPCBib2VtYWlsOwotCQkgICAgIGxlbisrKQotCQkJbmFtZWJ1ZltsZW5dID0gYXV0aG9yW2xlbl07Ci0JCXdoaWxlICgwIDwgbGVuICYmIGlzc3BhY2UobmFtZWJ1ZltsZW4tMV0pKQotCQkJbGVuLS07Ci0JCW5hbWVidWZbbGVuXSA9ICdcMCc7Ci0JfQotCWVsc2UKLQkJbGVuID0gc3RybGVuKG5hbWVidWYpOworCWlmIChsb2ctPmVtYWlsKQorCQlzdHJidWZfYWRkZigmbmFtZW1haWxidWYsICIgPCUuKnM+IiwgKGludCltYWlsbGVuLCBtYWlsYnVmKTsKIAotCWlmIChsb2ctPmVtYWlsKSB7Ci0JCXNpemVfdCByb29tID0gc2l6ZW9mKG5hbWVidWYpIC0gbGVuIC0gMTsKLQkJaW50IG1haWxsZW4gPSBzdHJsZW4oZW1haWxidWYpOwotCQlzbnByaW50ZihuYW1lYnVmICsgbGVuLCByb29tLCAiIDwlLipzPiIsIG1haWxsZW4sIGVtYWlsYnVmKTsKLQl9Ci0KLQlpdGVtID0gc3RyaW5nX2xpc3RfaW5zZXJ0KCZsb2ctPmxpc3QsIG5hbWVidWYpOworCWl0ZW0gPSBzdHJpbmdfbGlzdF9pbnNlcnQoJmxvZy0+bGlzdCwgbmFtZW1haWxidWYuYnVmKTsKIAlpZiAoaXRlbS0+dXRpbCA9PSBOVUxMKQogCQlpdGVtLT51dGlsID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHN0cmluZ19saXN0KSk7CiAKQEAgLTI1MCwxMyArMjI0LDEzIEBACiAKIAlzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7CiAJCU9QVF9CT09MRUFOKCduJywgIm51bWJlcmVkIiwgJmxvZy5zb3J0X2J5X251bWJlciwKLQkJCSAgICAic29ydCBvdXRwdXQgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgY29tbWl0cyBwZXIgYXV0aG9yIiksCisJCQkgICAgTl8oInNvcnQgb3V0cHV0IGFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIGNvbW1pdHMgcGVyIGF1dGhvciIpKSwKIAkJT1BUX0JPT0xFQU4oJ3MnLCAic3VtbWFyeSIsICZsb2cuc3VtbWFyeSwKLQkJCSAgICAiU3VwcHJlc3MgY29tbWl0IGRlc2NyaXB0aW9ucywgb25seSBwcm92aWRlcyBjb21taXQgY291bnQiKSwKKwkJCSAgICBOXygiU3VwcHJlc3MgY29tbWl0IGRlc2NyaXB0aW9ucywgb25seSBwcm92aWRlcyBjb21taXQgY291bnQiKSksCiAJCU9QVF9CT09MRUFOKCdlJywgImVtYWlsIiwgJmxvZy5lbWFpbCwKLQkJCSAgICAiU2hvdyB0aGUgZW1haWwgYWRkcmVzcyBvZiBlYWNoIGF1dGhvciIpLAotCQl7IE9QVElPTl9DQUxMQkFDSywgJ3cnLCBOVUxMLCAmbG9nLCAid1ssaTFbLGkyXV0iLAotCQkJIkxpbmV3cmFwIG91dHB1dCIsIFBBUlNFX09QVF9PUFRBUkcsICZwYXJzZV93cmFwX2FyZ3MgfSwKKwkJCSAgICBOXygiU2hvdyB0aGUgZW1haWwgYWRkcmVzcyBvZiBlYWNoIGF1dGhvciIpKSwKKwkJeyBPUFRJT05fQ0FMTEJBQ0ssICd3JywgTlVMTCwgJmxvZywgTl8oIndbLGkxWyxpMl1dIiksCisJCQlOXygiTGluZXdyYXAgb3V0cHV0IiksIFBBUlNFX09QVF9PUFRBUkcsICZwYXJzZV93cmFwX2FyZ3MgfSwKIAkJT1BUX0VORCgpLAogCX07CiAKQEAgLTMwNiw5ICsyODAsOCBAQAogc3RhdGljIHZvaWQgYWRkX3dyYXBwZWRfc2hvcnRsb2dfbXNnKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpzLAogCQkJCSAgICAgY29uc3Qgc3RydWN0IHNob3J0bG9nICpsb2cpCiB7Ci0JaW50IGNvbCA9IHN0cmJ1Zl9hZGRfd3JhcHBlZF90ZXh0KHNiLCBzLCBsb2ctPmluMSwgbG9nLT5pbjIsIGxvZy0+d3JhcCk7Ci0JaWYgKGNvbCAhPSBsb2ctPndyYXApCi0JCXN0cmJ1Zl9hZGRjaChzYiwgJ1xuJyk7CisJc3RyYnVmX2FkZF93cmFwcGVkX3RleHQoc2IsIHMsIGxvZy0+aW4xLCBsb2ctPmluMiwgbG9nLT53cmFwKTsKKwlzdHJidWZfYWRkY2goc2IsICdcbicpOwogfQogCiB2b2lkIHNob3J0bG9nX291dHB1dChzdHJ1Y3Qgc2hvcnRsb2cgKmxvZykKZGlmZiAtLWdpdCBhL2J1aWx0aW4vc2hvdy1icmFuY2guYyBiL2J1aWx0aW4vc2hvdy1icmFuY2guYwppbmRleCBhNTllMDg4Li45MGZjNmIxIDEwMDY0NAotLS0gYS9idWlsdGluL3Nob3ctYnJhbmNoLmMKKysrIGIvYnVpbHRpbi9zaG93LWJyYW5jaC5jCkBAIC02LDggKzYsOCBAQAogI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKIAogc3RhdGljIGNvbnN0IGNoYXIqIHNob3dfYnJhbmNoX3VzYWdlW10gPSB7Ci0gICAgImdpdCBzaG93LWJyYW5jaCBbLWF8LS1hbGxdIFstcnwtLXJlbW90ZXNdIFstLXRvcG8tb3JkZXIgfCAtLWRhdGUtb3JkZXJdIFstLWN1cnJlbnRdIFstLWNvbG9yWz08d2hlbj5dIHwgLS1uby1jb2xvcl0gWy0tc3BhcnNlXSBbLS1tb3JlPTxuPiB8IC0tbGlzdCB8IC0taW5kZXBlbmRlbnQgfCAtLW1lcmdlLWJhc2VdIFstLW5vLW5hbWUgfCAtLXNoYTEtbmFtZV0gWy0tdG9waWNzXSBbKDxyZXY+IHwgPGdsb2I+KS4uLl0iLAotICAgICJnaXQgc2hvdy1icmFuY2ggKC1nfC0tcmVmbG9nKVs9PG4+Wyw8YmFzZT5dXSBbLS1saXN0XSBbPHJlZj5dIiwKKyAgICBOXygiZ2l0IHNob3ctYnJhbmNoIFstYXwtLWFsbF0gWy1yfC0tcmVtb3Rlc10gWy0tdG9wby1vcmRlciB8IC0tZGF0ZS1vcmRlcl0gWy0tY3VycmVudF0gWy0tY29sb3JbPTx3aGVuPl0gfCAtLW5vLWNvbG9yXSBbLS1zcGFyc2VdIFstLW1vcmU9PG4+IHwgLS1saXN0IHwgLS1pbmRlcGVuZGVudCB8IC0tbWVyZ2UtYmFzZV0gWy0tbm8tbmFtZSB8IC0tc2hhMS1uYW1lXSBbLS10b3BpY3NdIFsoPHJldj4gfCA8Z2xvYj4pLi4uXSIpLAorICAgIE5fKCJnaXQgc2hvdy1icmFuY2ggKC1nfC0tcmVmbG9nKVs9PG4+Wyw8YmFzZT5dXSBbLS1saXN0XSBbPHJlZj5dIiksCiAgICAgTlVMTAogfTsKIApAQCAtMTYyLDI5ICsxNjIsMjggQEAKIAkJCW50aCA9IDA7CiAJCQl3aGlsZSAocGFyZW50cykgewogCQkJCXN0cnVjdCBjb21taXQgKnAgPSBwYXJlbnRzLT5pdGVtOwotCQkJCWNoYXIgbmV3bmFtZVsxMDAwXSwgKmVuOworCQkJCXN0cnVjdCBzdHJidWYgbmV3bmFtZSA9IFNUUkJVRl9JTklUOwogCQkJCXBhcmVudHMgPSBwYXJlbnRzLT5uZXh0OwogCQkJCW50aCsrOwogCQkJCWlmIChwLT51dGlsKQogCQkJCQljb250aW51ZTsKLQkJCQllbiA9IG5ld25hbWU7CiAJCQkJc3dpdGNoIChuLT5nZW5lcmF0aW9uKSB7CiAJCQkJY2FzZSAwOgotCQkJCQllbiArPSBzcHJpbnRmKGVuLCAiJXMiLCBuLT5oZWFkX25hbWUpOworCQkJCQlzdHJidWZfYWRkc3RyKCZuZXduYW1lLCBuLT5oZWFkX25hbWUpOwogCQkJCQlicmVhazsKIAkJCQljYXNlIDE6Ci0JCQkJCWVuICs9IHNwcmludGYoZW4sICIlc14iLCBuLT5oZWFkX25hbWUpOworCQkJCQlzdHJidWZfYWRkZigmbmV3bmFtZSwgIiVzXiIsIG4tPmhlYWRfbmFtZSk7CiAJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6Ci0JCQkJCWVuICs9IHNwcmludGYoZW4sICIlc34lZCIsCi0JCQkJCQluLT5oZWFkX25hbWUsIG4tPmdlbmVyYXRpb24pOworCQkJCQlzdHJidWZfYWRkZigmbmV3bmFtZSwgIiVzfiVkIiwKKwkJCQkJCSAgICBuLT5oZWFkX25hbWUsIG4tPmdlbmVyYXRpb24pOwogCQkJCQlicmVhazsKIAkJCQl9CiAJCQkJaWYgKG50aCA9PSAxKQotCQkJCQllbiArPSBzcHJpbnRmKGVuLCAiXiIpOworCQkJCQlzdHJidWZfYWRkY2goJm5ld25hbWUsICdeJyk7CiAJCQkJZWxzZQotCQkJCQllbiArPSBzcHJpbnRmKGVuLCAiXiVkIiwgbnRoKTsKLQkJCQluYW1lX2NvbW1pdChwLCB4c3RyZHVwKG5ld25hbWUpLCAwKTsKKwkJCQkJc3RyYnVmX2FkZGYoJm5ld25hbWUsICJeJWQiLCBudGgpOworCQkJCW5hbWVfY29tbWl0KHAsIHN0cmJ1Zl9kZXRhY2goJm5ld25hbWUsIE5VTEwpLCAwKTsKIAkJCQlpKys7CiAJCQkJbmFtZV9maXJzdF9wYXJlbnRfY2hhaW4ocCk7CiAJCQl9CkBAIC02NDgsMzYgKzY0NywzNiBAQAogCWNvbnN0IGNoYXIgKnJlZmxvZ19iYXNlID0gTlVMTDsKIAlzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5fc2hvd19icmFuY2hfb3B0aW9uc1tdID0gewogCQlPUFRfQk9PTEVBTignYScsICJhbGwiLCAmYWxsX2hlYWRzLAotCQkJICAgICJzaG93IHJlbW90ZS10cmFja2luZyBhbmQgbG9jYWwgYnJhbmNoZXMiKSwKKwkJCSAgICBOXygic2hvdyByZW1vdGUtdHJhY2tpbmcgYW5kIGxvY2FsIGJyYW5jaGVzIikpLAogCQlPUFRfQk9PTEVBTigncicsICJyZW1vdGVzIiwgJmFsbF9yZW1vdGVzLAotCQkJICAgICJzaG93IHJlbW90ZS10cmFja2luZyBicmFuY2hlcyIpLAorCQkJICAgIE5fKCJzaG93IHJlbW90ZS10cmFja2luZyBicmFuY2hlcyIpKSwKIAkJT1BUX19DT0xPUigmc2hvd2JyYW5jaF91c2VfY29sb3IsCi0JCQkgICAgImNvbG9yICcqISstJyBjb3JyZXNwb25kaW5nIHRvIHRoZSBicmFuY2giKSwKLQkJeyBPUFRJT05fSU5URUdFUiwgMCwgIm1vcmUiLCAmZXh0cmEsICJuIiwKLQkJCSAgICAic2hvdyA8bj4gbW9yZSBjb21taXRzIGFmdGVyIHRoZSBjb21tb24gYW5jZXN0b3IiLAorCQkJICAgIE5fKCJjb2xvciAnKiErLScgY29ycmVzcG9uZGluZyB0byB0aGUgYnJhbmNoIikpLAorCQl7IE9QVElPTl9JTlRFR0VSLCAwLCAibW9yZSIsICZleHRyYSwgTl8oIm4iKSwKKwkJCSAgICBOXygic2hvdyA8bj4gbW9yZSBjb21taXRzIGFmdGVyIHRoZSBjb21tb24gYW5jZXN0b3IiKSwKIAkJCSAgICBQQVJTRV9PUFRfT1BUQVJHLCBOVUxMLCAoaW50cHRyX3QpMSB9LAotCQlPUFRfU0VUX0lOVCgwLCAibGlzdCIsICZleHRyYSwgInN5bm9ueW0gdG8gbW9yZT0tMSIsIC0xKSwKLQkJT1BUX0JPT0xFQU4oMCwgIm5vLW5hbWUiLCAmbm9fbmFtZSwgInN1cHByZXNzIG5hbWluZyBzdHJpbmdzIiksCisJCU9QVF9TRVRfSU5UKDAsICJsaXN0IiwgJmV4dHJhLCBOXygic3lub255bSB0byBtb3JlPS0xIiksIC0xKSwKKwkJT1BUX0JPT0xFQU4oMCwgIm5vLW5hbWUiLCAmbm9fbmFtZSwgTl8oInN1cHByZXNzIG5hbWluZyBzdHJpbmdzIikpLAogCQlPUFRfQk9PTEVBTigwLCAiY3VycmVudCIsICZ3aXRoX2N1cnJlbnRfYnJhbmNoLAotCQkJICAgICJpbmNsdWRlIHRoZSBjdXJyZW50IGJyYW5jaCIpLAorCQkJICAgIE5fKCJpbmNsdWRlIHRoZSBjdXJyZW50IGJyYW5jaCIpKSwKIAkJT1BUX0JPT0xFQU4oMCwgInNoYTEtbmFtZSIsICZzaGExX25hbWUsCi0JCQkgICAgIm5hbWUgY29tbWl0cyB3aXRoIHRoZWlyIG9iamVjdCBuYW1lcyIpLAorCQkJICAgIE5fKCJuYW1lIGNvbW1pdHMgd2l0aCB0aGVpciBvYmplY3QgbmFtZXMiKSksCiAJCU9QVF9CT09MRUFOKDAsICJtZXJnZS1iYXNlIiwgJm1lcmdlX2Jhc2UsCi0JCQkgICAgInNob3cgcG9zc2libGUgbWVyZ2UgYmFzZXMiKSwKKwkJCSAgICBOXygic2hvdyBwb3NzaWJsZSBtZXJnZSBiYXNlcyIpKSwKIAkJT1BUX0JPT0xFQU4oMCwgImluZGVwZW5kZW50IiwgJmluZGVwZW5kZW50LAotCQkJICAgICJzaG93IHJlZnMgdW5yZWFjaGFibGUgZnJvbSBhbnkgb3RoZXIgcmVmIiksCisJCQkgICAgTl8oInNob3cgcmVmcyB1bnJlYWNoYWJsZSBmcm9tIGFueSBvdGhlciByZWYiKSksCiAJCU9QVF9CT09MRUFOKDAsICJ0b3BvLW9yZGVyIiwgJmxpZm8sCi0JCQkgICAgInNob3cgY29tbWl0cyBpbiB0b3BvbG9naWNhbCBvcmRlciIpLAorCQkJICAgIE5fKCJzaG93IGNvbW1pdHMgaW4gdG9wb2xvZ2ljYWwgb3JkZXIiKSksCiAJCU9QVF9CT09MRUFOKDAsICJ0b3BpY3MiLCAmdG9waWNzLAotCQkJICAgICJzaG93IG9ubHkgY29tbWl0cyBub3Qgb24gdGhlIGZpcnN0IGJyYW5jaCIpLAorCQkJICAgIE5fKCJzaG93IG9ubHkgY29tbWl0cyBub3Qgb24gdGhlIGZpcnN0IGJyYW5jaCIpKSwKIAkJT1BUX1NFVF9JTlQoMCwgInNwYXJzZSIsICZkZW5zZSwKLQkJCSAgICAic2hvdyBtZXJnZXMgcmVhY2hhYmxlIGZyb20gb25seSBvbmUgdGlwIiwgMCksCisJCQkgICAgTl8oInNob3cgbWVyZ2VzIHJlYWNoYWJsZSBmcm9tIG9ubHkgb25lIHRpcCIpLCAwKSwKIAkJT1BUX1NFVF9JTlQoMCwgImRhdGUtb3JkZXIiLCAmbGlmbywKLQkJCSAgICAic2hvdyBjb21taXRzIHdoZXJlIG5vIHBhcmVudCBjb21lcyBiZWZvcmUgaXRzICIKLQkJCSAgICAiY2hpbGRyZW4iLCAwKSwKLQkJeyBPUFRJT05fQ0FMTEJBQ0ssICdnJywgInJlZmxvZyIsICZyZWZsb2dfYmFzZSwgIjxuPlssPGJhc2U+XSIsCi0JCQkgICAgInNob3cgPG4+IG1vc3QgcmVjZW50IHJlZi1sb2cgZW50cmllcyBzdGFydGluZyBhdCAiCi0JCQkgICAgImJhc2UiLAorCQkJICAgIE5fKCJzaG93IGNvbW1pdHMgd2hlcmUgbm8gcGFyZW50IGNvbWVzIGJlZm9yZSBpdHMgIgorCQkJICAgICAgICJjaGlsZHJlbiIpLCAwKSwKKwkJeyBPUFRJT05fQ0FMTEJBQ0ssICdnJywgInJlZmxvZyIsICZyZWZsb2dfYmFzZSwgTl8oIjxuPlssPGJhc2U+XSIpLAorCQkJICAgIE5fKCJzaG93IDxuPiBtb3N0IHJlY2VudCByZWYtbG9nIGVudHJpZXMgc3RhcnRpbmcgYXQgIgorCQkJICAgICAgICJiYXNlIiksCiAJCQkgICAgUEFSU0VfT1BUX09QVEFSRyB8IFBBUlNFX09QVF9MSVRFUkFMX0FSR0hFTFAsCiAJCQkgICAgcGFyc2VfcmVmbG9nX3BhcmFtIH0sCiAJCU9QVF9FTkQoKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9zaG93LXJlZi5jIGIvYnVpbHRpbi9zaG93LXJlZi5jCmluZGV4IDM5MTE2NjEuLjhkOWI3NmEgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vc2hvdy1yZWYuYworKysgYi9idWlsdGluL3Nob3ctcmVmLmMKQEAgLTcsOCArNyw4IEBACiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHNob3dfcmVmX3VzYWdlW10gPSB7Ci0JImdpdCBzaG93LXJlZiBbLXF8LS1xdWlldF0gWy0tdmVyaWZ5XSBbLS1oZWFkXSBbLWR8LS1kZXJlZmVyZW5jZV0gWy1zfC0taGFzaFs9PG4+XV0gWy0tYWJicmV2Wz08bj5dXSBbLS10YWdzXSBbLS1oZWFkc10gWy0tXSBbcGF0dGVybipdICIsCi0JImdpdCBzaG93LXJlZiAtLWV4Y2x1ZGUtZXhpc3RpbmdbPXBhdHRlcm5dIDwgcmVmLWxpc3QiLAorCU5fKCJnaXQgc2hvdy1yZWYgWy1xfC0tcXVpZXRdIFstLXZlcmlmeV0gWy0taGVhZF0gWy1kfC0tZGVyZWZlcmVuY2VdIFstc3wtLWhhc2hbPTxuPl1dIFstLWFiYnJldls9PG4+XV0gWy0tdGFnc10gWy0taGVhZHNdIFstLV0gW3BhdHRlcm4qXSAiKSwKKwlOXygiZ2l0IHNob3ctcmVmIC0tZXhjbHVkZS1leGlzdGluZ1s9cGF0dGVybl0gPCByZWYtbGlzdCIpLAogCU5VTEwKIH07CiAKQEAgLTI4LDcgKzI4LDYgQEAKIAogc3RhdGljIGludCBzaG93X3JlZihjb25zdCBjaGFyICpyZWZuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgZmxhZywgdm9pZCAqY2JkYXRhKQogewotCXN0cnVjdCBvYmplY3QgKm9iajsKIAljb25zdCBjaGFyICpoZXg7CiAJdW5zaWduZWQgY2hhciBwZWVsZWRbMjBdOwogCkBAIC03OSwyNSArNzgsOSBAQAogCWlmICghZGVyZWZfdGFncykKIAkJcmV0dXJuIDA7CiAKLQlpZiAoKGZsYWcgJiBSRUZfSVNQQUNLRUQpICYmICFwZWVsX3JlZihyZWZuYW1lLCBwZWVsZWQpKSB7Ci0JCWlmICghaXNfbnVsbF9zaGExKHBlZWxlZCkpIHsKLQkJCWhleCA9IGZpbmRfdW5pcXVlX2FiYnJldihwZWVsZWQsIGFiYnJldik7Ci0JCQlwcmludGYoIiVzICVzXnt9XG4iLCBoZXgsIHJlZm5hbWUpOwotCQl9Ci0JfQotCWVsc2UgewotCQlvYmogPSBwYXJzZV9vYmplY3Qoc2hhMSk7Ci0JCWlmICghb2JqKQotCQkJZGllKCJnaXQgc2hvdy1yZWY6IGJhZCByZWYgJXMgKCVzKSIsIHJlZm5hbWUsCi0JCQkgICAgc2hhMV90b19oZXgoc2hhMSkpOwotCQlpZiAob2JqLT50eXBlID09IE9CSl9UQUcpIHsKLQkJCW9iaiA9IGRlcmVmX3RhZyhvYmosIHJlZm5hbWUsIDApOwotCQkJaWYgKCFvYmopCi0JCQkJZGllKCJnaXQgc2hvdy1yZWY6IGJhZCB0YWcgYXQgcmVmICVzICglcykiLCByZWZuYW1lLAotCQkJCSAgICBzaGExX3RvX2hleChzaGExKSk7Ci0JCQloZXggPSBmaW5kX3VuaXF1ZV9hYmJyZXYob2JqLT5zaGExLCBhYmJyZXYpOwotCQkJcHJpbnRmKCIlcyAlc157fVxuIiwgaGV4LCByZWZuYW1lKTsKLQkJfQorCWlmICghcGVlbF9yZWYocmVmbmFtZSwgcGVlbGVkKSkgeworCQloZXggPSBmaW5kX3VuaXF1ZV9hYmJyZXYocGVlbGVkLCBhYmJyZXYpOworCQlwcmludGYoIiVzICVzXnt9XG4iLCBoZXgsIHJlZm5hbWUpOwogCX0KIAlyZXR1cm4gMDsKIH0KQEAgLTE3OSwyNiArMTYyLDI2IEBACiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0aW9uIHNob3dfcmVmX29wdGlvbnNbXSA9IHsKLQlPUFRfQk9PTEVBTigwLCAidGFncyIsICZ0YWdzX29ubHksICJvbmx5IHNob3cgdGFncyAoY2FuIGJlIGNvbWJpbmVkIHdpdGggaGVhZHMpIiksCi0JT1BUX0JPT0xFQU4oMCwgImhlYWRzIiwgJmhlYWRzX29ubHksICJvbmx5IHNob3cgaGVhZHMgKGNhbiBiZSBjb21iaW5lZCB3aXRoIHRhZ3MpIiksCi0JT1BUX0JPT0xFQU4oMCwgInZlcmlmeSIsICZ2ZXJpZnksICJzdHJpY3RlciByZWZlcmVuY2UgY2hlY2tpbmcsICIKLQkJICAgICJyZXF1aXJlcyBleGFjdCByZWYgcGF0aCIpLAorCU9QVF9CT09MRUFOKDAsICJ0YWdzIiwgJnRhZ3Nfb25seSwgTl8oIm9ubHkgc2hvdyB0YWdzIChjYW4gYmUgY29tYmluZWQgd2l0aCBoZWFkcykiKSksCisJT1BUX0JPT0xFQU4oMCwgImhlYWRzIiwgJmhlYWRzX29ubHksIE5fKCJvbmx5IHNob3cgaGVhZHMgKGNhbiBiZSBjb21iaW5lZCB3aXRoIHRhZ3MpIikpLAorCU9QVF9CT09MRUFOKDAsICJ2ZXJpZnkiLCAmdmVyaWZ5LCBOXygic3RyaWN0ZXIgcmVmZXJlbmNlIGNoZWNraW5nLCAiCisJCSAgICAicmVxdWlyZXMgZXhhY3QgcmVmIHBhdGgiKSksCiAJeyBPUFRJT05fQk9PTEVBTiwgJ2gnLCBOVUxMLCAmc2hvd19oZWFkLCBOVUxMLAotCSAgInNob3cgdGhlIEhFQUQgcmVmZXJlbmNlIiwKKwkgIE5fKCJzaG93IHRoZSBIRUFEIHJlZmVyZW5jZSIpLAogCSAgUEFSU0VfT1BUX05PQVJHIHwgUEFSU0VfT1BUX0hJRERFTiB9LAotCU9QVF9CT09MRUFOKDAsICJoZWFkIiwgJnNob3dfaGVhZCwgInNob3cgdGhlIEhFQUQgcmVmZXJlbmNlIiksCisJT1BUX0JPT0xFQU4oMCwgImhlYWQiLCAmc2hvd19oZWFkLCBOXygic2hvdyB0aGUgSEVBRCByZWZlcmVuY2UiKSksCiAJT1BUX0JPT0xFQU4oJ2QnLCAiZGVyZWZlcmVuY2UiLCAmZGVyZWZfdGFncywKLQkJICAgICJkZXJlZmVyZW5jZSB0YWdzIGludG8gb2JqZWN0IElEcyIpLAotCXsgT1BUSU9OX0NBTExCQUNLLCAncycsICJoYXNoIiwgJmFiYnJldiwgIm4iLAotCSAgIm9ubHkgc2hvdyBTSEExIGhhc2ggdXNpbmcgPG4+IGRpZ2l0cyIsCisJCSAgICBOXygiZGVyZWZlcmVuY2UgdGFncyBpbnRvIG9iamVjdCBJRHMiKSksCisJeyBPUFRJT05fQ0FMTEJBQ0ssICdzJywgImhhc2giLCAmYWJicmV2LCBOXygibiIpLAorCSAgTl8oIm9ubHkgc2hvdyBTSEExIGhhc2ggdXNpbmcgPG4+IGRpZ2l0cyIpLAogCSAgUEFSU0VfT1BUX09QVEFSRywgJmhhc2hfY2FsbGJhY2sgfSwKIAlPUFRfX0FCQlJFVigmYWJicmV2KSwKIAlPUFRfX1FVSUVUKCZxdWlldCwKLQkJICAgImRvIG5vdCBwcmludCByZXN1bHRzIHRvIHN0ZG91dCAodXNlZnVsIHdpdGggLS12ZXJpZnkpIiksCisJCSAgIE5fKCJkbyBub3QgcHJpbnQgcmVzdWx0cyB0byBzdGRvdXQgKHVzZWZ1bCB3aXRoIC0tdmVyaWZ5KSIpKSwKIAl7IE9QVElPTl9DQUxMQkFDSywgMCwgImV4Y2x1ZGUtZXhpc3RpbmciLCAmZXhjbHVkZV9leGlzdGluZ19hcmcsCi0JICAicGF0dGVybiIsICJzaG93IHJlZnMgZnJvbSBzdGRpbiB0aGF0IGFyZW4ndCBpbiBsb2NhbCByZXBvc2l0b3J5IiwKKwkgIE5fKCJwYXR0ZXJuIiksIE5fKCJzaG93IHJlZnMgZnJvbSBzdGRpbiB0aGF0IGFyZW4ndCBpbiBsb2NhbCByZXBvc2l0b3J5IiksCiAJICBQQVJTRV9PUFRfT1BUQVJHIHwgUEFSU0VfT1BUX05PTkVHLCBleGNsdWRlX2V4aXN0aW5nX2NhbGxiYWNrIH0sCi0JeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJoZWxwLWFsbCIsIE5VTEwsIE5VTEwsICJzaG93IHVzYWdlIiwKKwl7IE9QVElPTl9DQUxMQkFDSywgMCwgImhlbHAtYWxsIiwgTlVMTCwgTlVMTCwgTl8oInNob3cgdXNhZ2UiKSwKIAkgIFBBUlNFX09QVF9ISURERU4gfCBQQVJTRV9PUFRfTk9BUkcsIGhlbHBfY2FsbGJhY2sgfSwKIAlPUFRfRU5EKCkKIH07CmRpZmYgLS1naXQgYS9idWlsdGluL3N0cmlwc3BhY2UuYyBiL2J1aWx0aW4vc3RyaXBzcGFjZS5jCmluZGV4IGYxNjk4NmMuLmU5ODFkZmIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vc3RyaXBzcGFjZS5jCisrKyBiL2J1aWx0aW4vc3RyaXBzcGFjZS5jCkBAIC0zMCw3ICszMCw4IEBACiAgKgogICogSWYgbGFzdCBsaW5lIGRvZXMgbm90IGhhdmUgYSBuZXdsaW5lIGF0IHRoZSBlbmQsIG9uZSBpcyBhZGRlZC4KICAqCi0gKiBFbmFibGUgc2tpcF9jb21tZW50cyB0byBza2lwIGV2ZXJ5IGxpbmUgc3RhcnRpbmcgd2l0aCAiIyIuCisgKiBFbmFibGUgc2tpcF9jb21tZW50cyB0byBza2lwIGV2ZXJ5IGxpbmUgc3RhcnRpbmcgd2l0aCBjb21tZW50CisgKiBjaGFyYWN0ZXIuCiAgKi8KIHZvaWQgc3RyaXBzcGFjZShzdHJ1Y3Qgc3RyYnVmICpzYiwgaW50IHNraXBfY29tbWVudHMpCiB7CkBAIC00NSw3ICs0Niw3IEBACiAJCWVvbCA9IG1lbWNocihzYi0+YnVmICsgaSwgJ1xuJywgc2ItPmxlbiAtIGkpOwogCQlsZW4gPSBlb2wgPyBlb2wgLSAoc2ItPmJ1ZiArIGkpICsgMSA6IHNiLT5sZW4gLSBpOwogCi0JCWlmIChza2lwX2NvbW1lbnRzICYmIGxlbiAmJiBzYi0+YnVmW2ldID09ICcjJykgeworCQlpZiAoc2tpcF9jb21tZW50cyAmJiBsZW4gJiYgc2ItPmJ1ZltpXSA9PSBjb21tZW50X2xpbmVfY2hhcikgewogCQkJbmV3bGVuID0gMDsKIAkJCWNvbnRpbnVlOwogCQl9CkBAIC02NiwyMSArNjcsNTMgQEAKIAlzdHJidWZfc2V0bGVuKHNiLCBqKTsKIH0KIAorc3RhdGljIHZvaWQgY29tbWVudF9saW5lcyhzdHJ1Y3Qgc3RyYnVmICpidWYpCit7CisJY2hhciAqbXNnOworCXNpemVfdCBsZW47CisKKwltc2cgPSBzdHJidWZfZGV0YWNoKGJ1ZiwgJmxlbik7CisJc3RyYnVmX2FkZF9jb21tZW50ZWRfbGluZXMoYnVmLCBtc2csIGxlbik7CisJZnJlZShtc2cpOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqdXNhZ2VfbXNnID0gIlxuIgorIiAgZ2l0IHN0cmlwc3BhY2UgWy1zIHwgLS1zdHJpcC1jb21tZW50c10gPCBpbnB1dFxuIgorIiAgZ2l0IHN0cmlwc3BhY2UgWy1jIHwgLS1jb21tZW50LWxpbmVzXSA8IGlucHV0IjsKKwogaW50IGNtZF9zdHJpcHNwYWNlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewogCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJaW50IHN0cmlwX2NvbW1lbnRzID0gMDsKKwllbnVtIHsgSU5WQUwgPSAwLCBTVFJJUF9TUEFDRSA9IDEsIENPTU1FTlRfTElORVMgPSAyIH0gbW9kZSA9IFNUUklQX1NQQUNFOwogCi0JaWYgKGFyZ2MgPT0gMiAmJiAoIXN0cmNtcChhcmd2WzFdLCAiLXMiKSB8fAotCQkJCSFzdHJjbXAoYXJndlsxXSwgIi0tc3RyaXAtY29tbWVudHMiKSkpCi0JCXN0cmlwX2NvbW1lbnRzID0gMTsKLQllbHNlIGlmIChhcmdjID4gMSkKLQkJdXNhZ2UoImdpdCBzdHJpcHNwYWNlIFstcyB8IC0tc3RyaXAtY29tbWVudHNdIDwgaW5wdXQiKTsKKwlpZiAoYXJnYyA9PSAyKSB7CisJCWlmICghc3RyY21wKGFyZ3ZbMV0sICItcyIpIHx8CisJCQkhc3RyY21wKGFyZ3ZbMV0sICItLXN0cmlwLWNvbW1lbnRzIikpIHsKKwkJCSBzdHJpcF9jb21tZW50cyA9IDE7CisJCX0gZWxzZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAiLWMiKSB8fAorCQkJCQkgIXN0cmNtcChhcmd2WzFdLCAiLS1jb21tZW50LWxpbmVzIikpIHsKKwkJCSBtb2RlID0gQ09NTUVOVF9MSU5FUzsKKwkJfSBlbHNlIHsKKwkJCW1vZGUgPSBJTlZBTDsKKwkJfQorCX0gZWxzZSBpZiAoYXJnYyA+IDEpIHsKKwkJbW9kZSA9IElOVkFMOworCX0KKworCWlmIChtb2RlID09IElOVkFMKQorCQl1c2FnZSh1c2FnZV9tc2cpOworCisJaWYgKHN0cmlwX2NvbW1lbnRzIHx8IG1vZGUgPT0gQ09NTUVOVF9MSU5FUykKKwkJZ2l0X2NvbmZpZyhnaXRfZGVmYXVsdF9jb25maWcsIE5VTEwpOwogCiAJaWYgKHN0cmJ1Zl9yZWFkKCZidWYsIDAsIDEwMjQpIDwgMCkKIAkJZGllX2Vycm5vKCJjb3VsZCBub3QgcmVhZCB0aGUgaW5wdXQiKTsKIAotCXN0cmlwc3BhY2UoJmJ1Ziwgc3RyaXBfY29tbWVudHMpOworCWlmIChtb2RlID09IFNUUklQX1NQQUNFKQorCQlzdHJpcHNwYWNlKCZidWYsIHN0cmlwX2NvbW1lbnRzKTsKKwllbHNlCisJCWNvbW1lbnRfbGluZXMoJmJ1Zik7CiAKIAl3cml0ZV9vcl9kaWUoMSwgYnVmLmJ1ZiwgYnVmLmxlbik7CiAJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CmRpZmYgLS1naXQgYS9idWlsdGluL3N5bWJvbGljLXJlZi5jIGIvYnVpbHRpbi9zeW1ib2xpYy1yZWYuYwppbmRleCA4MDFkNjJlLi5mNDgxOTU5IDEwMDY0NAotLS0gYS9idWlsdGluL3N5bWJvbGljLXJlZi5jCisrKyBiL2J1aWx0aW4vc3ltYm9saWMtcmVmLmMKQEAgLTQsMTMgKzQsMTIgQEAKICNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZ2l0X3N5bWJvbGljX3JlZl91c2FnZVtdID0gewotCSJnaXQgc3ltYm9saWMtcmVmIFtvcHRpb25zXSBuYW1lIFtyZWZdIiwKKwlOXygiZ2l0IHN5bWJvbGljLXJlZiBbb3B0aW9uc10gbmFtZSBbcmVmXSIpLAorCU5fKCJnaXQgc3ltYm9saWMtcmVmIC1kIFstcV0gbmFtZSIpLAogCU5VTEwKIH07CiAKLXN0YXRpYyBpbnQgc2hvcnRlbjsKLQotc3RhdGljIHZvaWQgY2hlY2tfc3ltcmVmKGNvbnN0IGNoYXIgKkhFQUQsIGludCBxdWlldCkKK3N0YXRpYyBpbnQgY2hlY2tfc3ltcmVmKGNvbnN0IGNoYXIgKkhFQUQsIGludCBxdWlldCwgaW50IHNob3J0ZW4sIGludCBwcmludCkKIHsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCWludCBmbGFnOwpAQCAtMjIsMjIgKzIxLDI2IEBACiAJCWlmICghcXVpZXQpCiAJCQlkaWUoInJlZiAlcyBpcyBub3QgYSBzeW1ib2xpYyByZWYiLCBIRUFEKTsKIAkJZWxzZQotCQkJZXhpdCgxKTsKKwkJCXJldHVybiAxOwogCX0KLQlpZiAoc2hvcnRlbikKLQkJcmVmbmFtZSA9IHNob3J0ZW5fdW5hbWJpZ3VvdXNfcmVmKHJlZm5hbWUsIDApOwotCXB1dHMocmVmbmFtZSk7CisJaWYgKHByaW50KSB7CisJCWlmIChzaG9ydGVuKQorCQkJcmVmbmFtZSA9IHNob3J0ZW5fdW5hbWJpZ3VvdXNfcmVmKHJlZm5hbWUsIDApOworCQlwdXRzKHJlZm5hbWUpOworCX0KKwlyZXR1cm4gMDsKIH0KIAogaW50IGNtZF9zeW1ib2xpY19yZWYoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7Ci0JaW50IHF1aWV0ID0gMDsKKwlpbnQgcXVpZXQgPSAwLCBkZWxldGUgPSAwLCBzaG9ydGVuID0gMCwgcmV0ID0gMDsKIAljb25zdCBjaGFyICptc2cgPSBOVUxMOwogCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewogCQlPUFRfX1FVSUVUKCZxdWlldCwKLQkJCSJzdXBwcmVzcyBlcnJvciBtZXNzYWdlIGZvciBub24tc3ltYm9saWMgKGRldGFjaGVkKSByZWZzIiksCi0JCU9QVF9CT09MKDAsICJzaG9ydCIsICZzaG9ydGVuLCAic2hvcnRlbiByZWYgb3V0cHV0IiksCi0JCU9QVF9TVFJJTkcoJ20nLCBOVUxMLCAmbXNnLCAicmVhc29uIiwgInJlYXNvbiBvZiB0aGUgdXBkYXRlIiksCisJCQlOXygic3VwcHJlc3MgZXJyb3IgbWVzc2FnZSBmb3Igbm9uLXN5bWJvbGljIChkZXRhY2hlZCkgcmVmcyIpKSwKKwkJT1BUX0JPT0woJ2QnLCAiZGVsZXRlIiwgJmRlbGV0ZSwgTl8oImRlbGV0ZSBzeW1ib2xpYyByZWYiKSksCisJCU9QVF9CT09MKDAsICJzaG9ydCIsICZzaG9ydGVuLCBOXygic2hvcnRlbiByZWYgb3V0cHV0IikpLAorCQlPUFRfU1RSSU5HKCdtJywgTlVMTCwgJm1zZywgTl8oInJlYXNvbiIpLCBOXygicmVhc29uIG9mIHRoZSB1cGRhdGUiKSksCiAJCU9QVF9FTkQoKSwKIAl9OwogCkBAIC00Niw5ICs0OSwxOSBAQAogCQkJICAgICBnaXRfc3ltYm9saWNfcmVmX3VzYWdlLCAwKTsKIAlpZiAobXNnICYmISptc2cpCiAJCWRpZSgiUmVmdXNpbmcgdG8gcGVyZm9ybSB1cGRhdGUgd2l0aCBlbXB0eSBtZXNzYWdlIik7CisKKwlpZiAoZGVsZXRlKSB7CisJCWlmIChhcmdjICE9IDEpCisJCQl1c2FnZV93aXRoX29wdGlvbnMoZ2l0X3N5bWJvbGljX3JlZl91c2FnZSwgb3B0aW9ucyk7CisJCXJldCA9IGNoZWNrX3N5bXJlZihhcmd2WzBdLCAxLCAwLCAwKTsKKwkJaWYgKHJldCkKKwkJCWRpZSgiQ2Fubm90IGRlbGV0ZSAlcywgbm90IGEgc3ltYm9saWMgcmVmIiwgYXJndlswXSk7CisJCXJldHVybiBkZWxldGVfcmVmKGFyZ3ZbMF0sIE5VTEwsIFJFRl9OT0RFUkVGKTsKKwl9CisKIAlzd2l0Y2ggKGFyZ2MpIHsKIAljYXNlIDE6Ci0JCWNoZWNrX3N5bXJlZihhcmd2WzBdLCBxdWlldCk7CisJCXJldCA9IGNoZWNrX3N5bXJlZihhcmd2WzBdLCBxdWlldCwgc2hvcnRlbiwgMSk7CiAJCWJyZWFrOwogCWNhc2UgMjoKIAkJaWYgKCFzdHJjbXAoYXJndlswXSwgIkhFQUQiKSAmJgpAQCAtNTksNSArNzIsNSBAQAogCWRlZmF1bHQ6CiAJCXVzYWdlX3dpdGhfb3B0aW9ucyhnaXRfc3ltYm9saWNfcmVmX3VzYWdlLCBvcHRpb25zKTsKIAl9Ci0JcmV0dXJuIDA7CisJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2J1aWx0aW4vdGFnLmMgYi9idWlsdGluL3RhZy5jCmluZGV4IDdiMWJlODUuLmFmM2FmM2YgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vdGFnLmMKKysrIGIvYnVpbHRpbi90YWcuYwpAQCAtMTksMTEgKzE5LDExIEBACiAjaW5jbHVkZSAiY29sdW1uLmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZ2l0X3RhZ191c2FnZVtdID0gewotCSJnaXQgdGFnIFstYXwtc3wtdSA8a2V5LWlkPl0gWy1mXSBbLW0gPG1zZz58LUYgPGZpbGU+XSA8dGFnbmFtZT4gWzxoZWFkPl0iLAotCSJnaXQgdGFnIC1kIDx0YWduYW1lPi4uLiIsCi0JImdpdCB0YWcgLWwgWy1uWzxudW0+XV0gWy0tY29udGFpbnMgPGNvbW1pdD5dIFstLXBvaW50cy1hdCA8b2JqZWN0Pl0gIgotCQkiXG5cdFx0WzxwYXR0ZXJuPi4uLl0iLAotCSJnaXQgdGFnIC12IDx0YWduYW1lPi4uLiIsCisJTl8oImdpdCB0YWcgWy1hfC1zfC11IDxrZXktaWQ+XSBbLWZdIFstbSA8bXNnPnwtRiA8ZmlsZT5dIDx0YWduYW1lPiBbPGhlYWQ+XSIpLAorCU5fKCJnaXQgdGFnIC1kIDx0YWduYW1lPi4uLiIpLAorCU5fKCJnaXQgdGFnIC1sIFstbls8bnVtPl1dIFstLWNvbnRhaW5zIDxjb21taXQ+XSBbLS1wb2ludHMtYXQgPG9iamVjdD5dICIKKwkJIlxuXHRcdFs8cGF0dGVybj4uLi5dIiksCisJTl8oImdpdCB0YWcgLXYgPHRhZ25hbWU+Li4uIiksCiAJTlVMTAogfTsKIApAQCAtMjQ2LDE5ICsyNDYsMTMgQEAKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIgdGFnX3RlbXBsYXRlW10gPQotCU5fKCJcbiIKLQkiI1xuIgotCSIjIFdyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKLQkiIyBMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQuXG4iCi0JIiNcbiIpOworCU5fKCJcbldyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKKwkiTGluZXMgc3RhcnRpbmcgd2l0aCAnJWMnIHdpbGwgYmUgaWdub3JlZC5cbiIpOwogCiBzdGF0aWMgY29uc3QgY2hhciB0YWdfdGVtcGxhdGVfbm9jbGVhbnVwW10gPQotCU5fKCJcbiIKLQkiI1xuIgotCSIjIFdyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKLQkiIyBMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0iCi0JIiB5b3Vyc2VsZiBpZiB5b3Ugd2FudCB0by5cbiIKLQkiI1xuIik7CisJTl8oIlxuV3JpdGUgYSB0YWcgbWVzc2FnZVxuIgorCSJMaW5lcyBzdGFydGluZyB3aXRoICclYycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIgorCSIgeW91cnNlbGYgaWYgeW91IHdhbnQgdG8uXG4iKTsKIAogc3RhdGljIGludCBnaXRfdGFnX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKIHsKQEAgLTM0NiwxNCArMzQwLDE4IEBACiAJCWlmIChmZCA8IDApCiAJCQlkaWVfZXJybm8oXygiY291bGQgbm90IGNyZWF0ZSBmaWxlICclcyciKSwgcGF0aCk7CiAKLQkJaWYgKCFpc19udWxsX3NoYTEocHJldikpCisJCWlmICghaXNfbnVsbF9zaGExKHByZXYpKSB7CiAJCQl3cml0ZV90YWdfYm9keShmZCwgcHJldik7Ci0JCWVsc2UgaWYgKG9wdC0+Y2xlYW51cF9tb2RlID09IENMRUFOVVBfQUxMKQotCQkJd3JpdGVfb3JfZGllKGZkLCBfKHRhZ190ZW1wbGF0ZSksCi0JCQkJCXN0cmxlbihfKHRhZ190ZW1wbGF0ZSkpKTsKLQkJZWxzZQotCQkJd3JpdGVfb3JfZGllKGZkLCBfKHRhZ190ZW1wbGF0ZV9ub2NsZWFudXApLAotCQkJCQlzdHJsZW4oXyh0YWdfdGVtcGxhdGVfbm9jbGVhbnVwKSkpOworCQl9IGVsc2UgeworCQkJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKKwkJCXN0cmJ1Zl9hZGRjaCgmYnVmLCAnXG4nKTsKKwkJCWlmIChvcHQtPmNsZWFudXBfbW9kZSA9PSBDTEVBTlVQX0FMTCkKKwkJCQlzdHJidWZfY29tbWVudGVkX2FkZGYoJmJ1ZiwgXyh0YWdfdGVtcGxhdGUpLCBjb21tZW50X2xpbmVfY2hhcik7CisJCQllbHNlCisJCQkJc3RyYnVmX2NvbW1lbnRlZF9hZGRmKCZidWYsIF8odGFnX3RlbXBsYXRlX25vY2xlYW51cCksIGNvbW1lbnRfbGluZV9jaGFyKTsKKwkJCXdyaXRlX29yX2RpZShmZCwgYnVmLmJ1ZiwgYnVmLmxlbik7CisJCQlzdHJidWZfcmVsZWFzZSgmYnVmKTsKKwkJfQogCQljbG9zZShmZCk7CiAKIAkJaWYgKGxhdW5jaF9lZGl0b3IocGF0aCwgYnVmLCBOVUxMKSkgewpAQCAtNDQ0LDM3ICs0NDIsMzcgQEAKIAlzdHJ1Y3QgbXNnX2FyZyBtc2cgPSB7IDAsIFNUUkJVRl9JTklUIH07CiAJc3RydWN0IGNvbW1pdF9saXN0ICp3aXRoX2NvbW1pdCA9IE5VTEw7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCU9QVF9CT09MRUFOKCdsJywgImxpc3QiLCAmbGlzdCwgImxpc3QgdGFnIG5hbWVzIiksCi0JCXsgT1BUSU9OX0lOVEVHRVIsICduJywgTlVMTCwgJmxpbmVzLCAibiIsCi0JCQkJInByaW50IDxuPiBsaW5lcyBvZiBlYWNoIHRhZyBtZXNzYWdlIiwKKwkJT1BUX0JPT0xFQU4oJ2wnLCAibGlzdCIsICZsaXN0LCBOXygibGlzdCB0YWcgbmFtZXMiKSksCisJCXsgT1BUSU9OX0lOVEVHRVIsICduJywgTlVMTCwgJmxpbmVzLCBOXygibiIpLAorCQkJCU5fKCJwcmludCA8bj4gbGluZXMgb2YgZWFjaCB0YWcgbWVzc2FnZSIpLAogCQkJCVBBUlNFX09QVF9PUFRBUkcsIE5VTEwsIDEgfSwKLQkJT1BUX0JPT0xFQU4oJ2QnLCAiZGVsZXRlIiwgJmRlbGV0ZSwgImRlbGV0ZSB0YWdzIiksCi0JCU9QVF9CT09MRUFOKCd2JywgInZlcmlmeSIsICZ2ZXJpZnksICJ2ZXJpZnkgdGFncyIpLAorCQlPUFRfQk9PTEVBTignZCcsICJkZWxldGUiLCAmZGVsZXRlLCBOXygiZGVsZXRlIHRhZ3MiKSksCisJCU9QVF9CT09MRUFOKCd2JywgInZlcmlmeSIsICZ2ZXJpZnksIE5fKCJ2ZXJpZnkgdGFncyIpKSwKIAotCQlPUFRfR1JPVVAoIlRhZyBjcmVhdGlvbiBvcHRpb25zIiksCisJCU9QVF9HUk9VUChOXygiVGFnIGNyZWF0aW9uIG9wdGlvbnMiKSksCiAJCU9QVF9CT09MRUFOKCdhJywgImFubm90YXRlIiwgJmFubm90YXRlLAotCQkJCQkiYW5ub3RhdGVkIHRhZywgbmVlZHMgYSBtZXNzYWdlIiksCi0JCU9QVF9DQUxMQkFDSygnbScsICJtZXNzYWdlIiwgJm1zZywgIm1lc3NhZ2UiLAotCQkJICAgICAidGFnIG1lc3NhZ2UiLCBwYXJzZV9tc2dfYXJnKSwKLQkJT1BUX0ZJTEVOQU1FKCdGJywgImZpbGUiLCAmbXNnZmlsZSwgInJlYWQgbWVzc2FnZSBmcm9tIGZpbGUiKSwKLQkJT1BUX0JPT0xFQU4oJ3MnLCAic2lnbiIsICZvcHQuc2lnbiwgImFubm90YXRlZCBhbmQgR1BHLXNpZ25lZCB0YWciKSwKLQkJT1BUX1NUUklORygwLCAiY2xlYW51cCIsICZjbGVhbnVwX2FyZywgIm1vZGUiLAotCQkJImhvdyB0byBzdHJpcCBzcGFjZXMgYW5kICNjb21tZW50cyBmcm9tIG1lc3NhZ2UiKSwKLQkJT1BUX1NUUklORygndScsICJsb2NhbC11c2VyIiwgJmtleWlkLCAia2V5LWlkIiwKLQkJCQkJInVzZSBhbm90aGVyIGtleSB0byBzaWduIHRoZSB0YWciKSwKLQkJT1BUX19GT1JDRSgmZm9yY2UsICJyZXBsYWNlIHRoZSB0YWcgaWYgZXhpc3RzIiksCi0JCU9QVF9DT0xVTU4oMCwgImNvbHVtbiIsICZjb2xvcHRzLCAic2hvdyB0YWcgbGlzdCBpbiBjb2x1bW5zIiksCisJCQkJCU5fKCJhbm5vdGF0ZWQgdGFnLCBuZWVkcyBhIG1lc3NhZ2UiKSksCisJCU9QVF9DQUxMQkFDSygnbScsICJtZXNzYWdlIiwgJm1zZywgTl8oIm1lc3NhZ2UiKSwKKwkJCSAgICAgTl8oInRhZyBtZXNzYWdlIiksIHBhcnNlX21zZ19hcmcpLAorCQlPUFRfRklMRU5BTUUoJ0YnLCAiZmlsZSIsICZtc2dmaWxlLCBOXygicmVhZCBtZXNzYWdlIGZyb20gZmlsZSIpKSwKKwkJT1BUX0JPT0xFQU4oJ3MnLCAic2lnbiIsICZvcHQuc2lnbiwgTl8oImFubm90YXRlZCBhbmQgR1BHLXNpZ25lZCB0YWciKSksCisJCU9QVF9TVFJJTkcoMCwgImNsZWFudXAiLCAmY2xlYW51cF9hcmcsIE5fKCJtb2RlIiksCisJCQlOXygiaG93IHRvIHN0cmlwIHNwYWNlcyBhbmQgI2NvbW1lbnRzIGZyb20gbWVzc2FnZSIpKSwKKwkJT1BUX1NUUklORygndScsICJsb2NhbC11c2VyIiwgJmtleWlkLCBOXygia2V5IGlkIiksCisJCQkJCU5fKCJ1c2UgYW5vdGhlciBrZXkgdG8gc2lnbiB0aGUgdGFnIikpLAorCQlPUFRfX0ZPUkNFKCZmb3JjZSwgTl8oInJlcGxhY2UgdGhlIHRhZyBpZiBleGlzdHMiKSksCisJCU9QVF9DT0xVTU4oMCwgImNvbHVtbiIsICZjb2xvcHRzLCBOXygic2hvdyB0YWcgbGlzdCBpbiBjb2x1bW5zIikpLAogCi0JCU9QVF9HUk9VUCgiVGFnIGxpc3Rpbmcgb3B0aW9ucyIpLAorCQlPUFRfR1JPVVAoTl8oIlRhZyBsaXN0aW5nIG9wdGlvbnMiKSksCiAJCXsKLQkJCU9QVElPTl9DQUxMQkFDSywgMCwgImNvbnRhaW5zIiwgJndpdGhfY29tbWl0LCAiY29tbWl0IiwKLQkJCSJwcmludCBvbmx5IHRhZ3MgdGhhdCBjb250YWluIHRoZSBjb21taXQiLAorCQkJT1BUSU9OX0NBTExCQUNLLCAwLCAiY29udGFpbnMiLCAmd2l0aF9jb21taXQsIE5fKCJjb21taXQiKSwKKwkJCU5fKCJwcmludCBvbmx5IHRhZ3MgdGhhdCBjb250YWluIHRoZSBjb21taXQiKSwKIAkJCVBBUlNFX09QVF9MQVNUQVJHX0RFRkFVTFQsCiAJCQlwYXJzZV9vcHRfd2l0aF9jb21taXQsIChpbnRwdHJfdCkiSEVBRCIsCiAJCX0sCiAJCXsKLQkJCU9QVElPTl9DQUxMQkFDSywgMCwgInBvaW50cy1hdCIsIE5VTEwsICJvYmplY3QiLAotCQkJInByaW50IG9ubHkgdGFncyBvZiB0aGUgb2JqZWN0IiwgMCwgcGFyc2Vfb3B0X3BvaW50c19hdAorCQkJT1BUSU9OX0NBTExCQUNLLCAwLCAicG9pbnRzLWF0IiwgTlVMTCwgTl8oIm9iamVjdCIpLAorCQkJTl8oInByaW50IG9ubHkgdGFncyBvZiB0aGUgb2JqZWN0IiksIDAsIHBhcnNlX29wdF9wb2ludHNfYXQKIAkJfSwKIAkJT1BUX0VORCgpCiAJfTsKQEAgLTU4NCw3ICs1ODIsNyBAQAogCQlkaWUoXygiJXM6IGNhbm5vdCBsb2NrIHRoZSByZWYiKSwgcmVmLmJ1Zik7CiAJaWYgKHdyaXRlX3JlZl9zaGExKGxvY2ssIG9iamVjdCwgTlVMTCkgPCAwKQogCQlkaWUoXygiJXM6IGNhbm5vdCB1cGRhdGUgdGhlIHJlZiIpLCByZWYuYnVmKTsKLQlpZiAoZm9yY2UgJiYgaGFzaGNtcChwcmV2LCBvYmplY3QpKQorCWlmIChmb3JjZSAmJiAhaXNfbnVsbF9zaGExKHByZXYpICYmIGhhc2hjbXAocHJldiwgb2JqZWN0KSkKIAkJcHJpbnRmKF8oIlVwZGF0ZWQgdGFnICclcycgKHdhcyAlcylcbiIpLCB0YWcsIGZpbmRfdW5pcXVlX2FiYnJldihwcmV2LCBERUZBVUxUX0FCQlJFVikpOwogCiAJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CmRpZmYgLS1naXQgYS9idWlsdGluL3VwZGF0ZS1pbmRleC5jIGIvYnVpbHRpbi91cGRhdGUtaW5kZXguYwppbmRleCA1ZjAzOGQ2Li41Yzc3NjJlIDEwMDY0NAotLS0gYS9idWlsdGluL3VwZGF0ZS1pbmRleC5jCisrKyBiL2J1aWx0aW4vdXBkYXRlLWluZGV4LmMKQEAgLTk1LDcgKzk1LDggQEAKIAlzaXplID0gY2FjaGVfZW50cnlfc2l6ZShsZW4pOwogCWNlID0geGNhbGxvYygxLCBzaXplKTsKIAltZW1jcHkoY2UtPm5hbWUsIHBhdGgsIGxlbik7Ci0JY2UtPmNlX2ZsYWdzID0gbGVuOworCWNlLT5jZV9mbGFncyA9IGNyZWF0ZV9jZV9mbGFncygwKTsKKwljZS0+Y2VfbmFtZWxlbiA9IGxlbjsKIAlmaWxsX3N0YXRfY2FjaGVfaW5mbyhjZSwgc3QpOwogCWNlLT5jZV9tb2RlID0gY2VfbW9kZV9mcm9tX3N0YXQob2xkLCBzdC0+c3RfbW9kZSk7CiAKQEAgLTIxMSwxMiArMjEyLDYgQEAKIAlpZiAoU19JU0RJUihzdC5zdF9tb2RlKSkKIAkJcmV0dXJuIHByb2Nlc3NfZGlyZWN0b3J5KHBhdGgsIGxlbiwgJnN0KTsKIAotCS8qCi0JICogUHJvY2VzcyBhIHJlZ3VsYXIgZmlsZQotCSAqLwotCWlmIChjZSAmJiBTX0lTR0lUTElOSyhjZS0+Y2VfbW9kZSkpCi0JCXJldHVybiBlcnJvcigiJXMgaXMgYWxyZWFkeSBhIGdpdGxpbmssIG5vdCByZXBsYWNpbmciLCBwYXRoKTsKLQogCXJldHVybiBhZGRfb25lX3BhdGgoY2UsIHBhdGgsIGxlbiwgJnN0KTsKIH0KIApAQCAtMjM1LDcgKzIzMCw4IEBACiAKIAloYXNoY3B5KGNlLT5zaGExLCBzaGExKTsKIAltZW1jcHkoY2UtPm5hbWUsIHBhdGgsIGxlbik7Ci0JY2UtPmNlX2ZsYWdzID0gY3JlYXRlX2NlX2ZsYWdzKGxlbiwgc3RhZ2UpOworCWNlLT5jZV9mbGFncyA9IGNyZWF0ZV9jZV9mbGFncyhzdGFnZSk7CisJY2UtPmNlX25hbWVsZW4gPSBsZW47CiAJY2UtPmNlX21vZGUgPSBjcmVhdGVfY2VfbW9kZShtb2RlKTsKIAlpZiAoYXNzdW1lX3VuY2hhbmdlZCkKIAkJY2UtPmNlX2ZsYWdzIHw9IENFX1ZBTElEOwpAQCAtNDAyLDcgKzM5OCw3IEBACiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdXBkYXRlX2luZGV4X3VzYWdlW10gPSB7Ci0JImdpdCB1cGRhdGUtaW5kZXggW29wdGlvbnNdIFstLV0gWzxmaWxlPi4uLl0iLAorCU5fKCJnaXQgdXBkYXRlLWluZGV4IFtvcHRpb25zXSBbLS1dIFs8ZmlsZT4uLi5dIiksCiAJTlVMTAogfTsKIApAQCAtNDMzLDcgKzQyOSw4IEBACiAKIAloYXNoY3B5KGNlLT5zaGExLCBzaGExKTsKIAltZW1jcHkoY2UtPm5hbWUsIHBhdGgsIG5hbWVsZW4pOwotCWNlLT5jZV9mbGFncyA9IGNyZWF0ZV9jZV9mbGFncyhuYW1lbGVuLCBzdGFnZSk7CisJY2UtPmNlX2ZsYWdzID0gY3JlYXRlX2NlX2ZsYWdzKHN0YWdlKTsKKwljZS0+Y2VfbmFtZWxlbiA9IG5hbWVsZW47CiAJY2UtPmNlX21vZGUgPSBjcmVhdGVfY2VfbW9kZShtb2RlKTsKIAlyZXR1cm4gY2U7CiB9CkBAIC01OTYsNiArNTkzLDcgQEAKIHN0YXRpYyBpbnQgcmVmcmVzaChzdHJ1Y3QgcmVmcmVzaF9wYXJhbXMgKm8sIHVuc2lnbmVkIGludCBmbGFnKQogewogCXNldHVwX3dvcmtfdHJlZSgpOworCXJlYWRfY2FjaGVfcHJlbG9hZChOVUxMKTsKIAkqby0+aGFzX2Vycm9ycyB8PSByZWZyZXNoX2NhY2hlKG8tPmZsYWdzIHwgZmxhZyk7CiAJcmV0dXJuIDA7CiB9CkBAIC03MTcsODggKzcxNSw4OCBAQAogCWludCBwYXJzZW9wdF9zdGF0ZSA9IFBBUlNFX09QVF9VTktOT1dOOwogCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewogCQlPUFRfQklUKCdxJywgTlVMTCwgJnJlZnJlc2hfYXJncy5mbGFncywKLQkJCSJjb250aW51ZSByZWZyZXNoIGV2ZW4gd2hlbiBpbmRleCBuZWVkcyB1cGRhdGUiLAorCQkJTl8oImNvbnRpbnVlIHJlZnJlc2ggZXZlbiB3aGVuIGluZGV4IG5lZWRzIHVwZGF0ZSIpLAogCQkJUkVGUkVTSF9RVUlFVCksCiAJCU9QVF9CSVQoMCwgImlnbm9yZS1zdWJtb2R1bGVzIiwgJnJlZnJlc2hfYXJncy5mbGFncywKLQkJCSJyZWZyZXNoOiBpZ25vcmUgc3VibW9kdWxlcyIsCisJCQlOXygicmVmcmVzaDogaWdub3JlIHN1Ym1vZHVsZXMiKSwKIAkJCVJFRlJFU0hfSUdOT1JFX1NVQk1PRFVMRVMpLAogCQlPUFRfU0VUX0lOVCgwLCAiYWRkIiwgJmFsbG93X2FkZCwKLQkJCSJkbyBub3QgaWdub3JlIG5ldyBmaWxlcyIsIDEpLAorCQkJTl8oImRvIG5vdCBpZ25vcmUgbmV3IGZpbGVzIiksIDEpLAogCQlPUFRfU0VUX0lOVCgwLCAicmVwbGFjZSIsICZhbGxvd19yZXBsYWNlLAotCQkJImxldCBmaWxlcyByZXBsYWNlIGRpcmVjdG9yaWVzIGFuZCB2aWNlLXZlcnNhIiwgMSksCisJCQlOXygibGV0IGZpbGVzIHJlcGxhY2UgZGlyZWN0b3JpZXMgYW5kIHZpY2UtdmVyc2EiKSwgMSksCiAJCU9QVF9TRVRfSU5UKDAsICJyZW1vdmUiLCAmYWxsb3dfcmVtb3ZlLAotCQkJIm5vdGljZSBmaWxlcyBtaXNzaW5nIGZyb20gd29ya3RyZWUiLCAxKSwKKwkJCU5fKCJub3RpY2UgZmlsZXMgbWlzc2luZyBmcm9tIHdvcmt0cmVlIiksIDEpLAogCQlPUFRfQklUKDAsICJ1bm1lcmdlZCIsICZyZWZyZXNoX2FyZ3MuZmxhZ3MsCi0JCQkicmVmcmVzaCBldmVuIGlmIGluZGV4IGNvbnRhaW5zIHVubWVyZ2VkIGVudHJpZXMiLAorCQkJTl8oInJlZnJlc2ggZXZlbiBpZiBpbmRleCBjb250YWlucyB1bm1lcmdlZCBlbnRyaWVzIiksCiAJCQlSRUZSRVNIX1VOTUVSR0VEKSwKIAkJe09QVElPTl9DQUxMQkFDSywgMCwgInJlZnJlc2giLCAmcmVmcmVzaF9hcmdzLCBOVUxMLAotCQkJInJlZnJlc2ggc3RhdCBpbmZvcm1hdGlvbiIsCisJCQlOXygicmVmcmVzaCBzdGF0IGluZm9ybWF0aW9uIiksCiAJCQlQQVJTRV9PUFRfTk9BUkcgfCBQQVJTRV9PUFRfTk9ORUcsCiAJCQlyZWZyZXNoX2NhbGxiYWNrfSwKIAkJe09QVElPTl9DQUxMQkFDSywgMCwgInJlYWxseS1yZWZyZXNoIiwgJnJlZnJlc2hfYXJncywgTlVMTCwKLQkJCSJsaWtlIC0tcmVmcmVzaCwgYnV0IGlnbm9yZSBhc3N1bWUtdW5jaGFuZ2VkIHNldHRpbmciLAorCQkJTl8oImxpa2UgLS1yZWZyZXNoLCBidXQgaWdub3JlIGFzc3VtZS11bmNoYW5nZWQgc2V0dGluZyIpLAogCQkJUEFSU0VfT1BUX05PQVJHIHwgUEFSU0VfT1BUX05PTkVHLAogCQkJcmVhbGx5X3JlZnJlc2hfY2FsbGJhY2t9LAogCQl7T1BUSU9OX0xPV0xFVkVMX0NBTExCQUNLLCAwLCAiY2FjaGVpbmZvIiwgTlVMTCwKLQkJCSI8bW9kZT4gPG9iamVjdD4gPHBhdGg+IiwKLQkJCSJhZGQgdGhlIHNwZWNpZmllZCBlbnRyeSB0byB0aGUgaW5kZXgiLAorCQkJTl8oIjxtb2RlPiA8b2JqZWN0PiA8cGF0aD4iKSwKKwkJCU5fKCJhZGQgdGhlIHNwZWNpZmllZCBlbnRyeSB0byB0aGUgaW5kZXgiKSwKIAkJCVBBUlNFX09QVF9OT0FSRyB8CS8qIGRpc2FsbG93IC0tY2FjaGVpbmZvPTxtb2RlPiBmb3JtICovCiAJCQlQQVJTRV9PUFRfTk9ORUcgfCBQQVJTRV9PUFRfTElURVJBTF9BUkdIRUxQLAogCQkJKHBhcnNlX29wdF9jYiAqKSBjYWNoZWluZm9fY2FsbGJhY2t9LAotCQl7T1BUSU9OX0NBTExCQUNLLCAwLCAiY2htb2QiLCAmc2V0X2V4ZWN1dGFibGVfYml0LCAiKCsvLSl4IiwKLQkJCSJvdmVycmlkZSB0aGUgZXhlY3V0YWJsZSBiaXQgb2YgdGhlIGxpc3RlZCBmaWxlcyIsCisJCXtPUFRJT05fQ0FMTEJBQ0ssIDAsICJjaG1vZCIsICZzZXRfZXhlY3V0YWJsZV9iaXQsIE5fKCIoKy8tKXgiKSwKKwkJCU5fKCJvdmVycmlkZSB0aGUgZXhlY3V0YWJsZSBiaXQgb2YgdGhlIGxpc3RlZCBmaWxlcyIpLAogCQkJUEFSU0VfT1BUX05PTkVHIHwgUEFSU0VfT1BUX0xJVEVSQUxfQVJHSEVMUCwKIAkJCWNobW9kX2NhbGxiYWNrfSwKIAkJe09QVElPTl9TRVRfSU5ULCAwLCAiYXNzdW1lLXVuY2hhbmdlZCIsICZtYXJrX3ZhbGlkX29ubHksIE5VTEwsCi0JCQkibWFyayBmaWxlcyBhcyBcIm5vdCBjaGFuZ2luZ1wiIiwKKwkJCU5fKCJtYXJrIGZpbGVzIGFzIFwibm90IGNoYW5naW5nXCIiKSwKIAkJCVBBUlNFX09QVF9OT0FSRyB8IFBBUlNFX09QVF9OT05FRywgTlVMTCwgTUFSS19GTEFHfSwKIAkJe09QVElPTl9TRVRfSU5ULCAwLCAibm8tYXNzdW1lLXVuY2hhbmdlZCIsICZtYXJrX3ZhbGlkX29ubHksIE5VTEwsCi0JCQkiY2xlYXIgYXNzdW1lZC11bmNoYW5nZWQgYml0IiwKKwkJCU5fKCJjbGVhciBhc3N1bWVkLXVuY2hhbmdlZCBiaXQiKSwKIAkJCVBBUlNFX09QVF9OT0FSRyB8IFBBUlNFX09QVF9OT05FRywgTlVMTCwgVU5NQVJLX0ZMQUd9LAogCQl7T1BUSU9OX1NFVF9JTlQsIDAsICJza2lwLXdvcmt0cmVlIiwgJm1hcmtfc2tpcF93b3JrdHJlZV9vbmx5LCBOVUxMLAotCQkJIm1hcmsgZmlsZXMgYXMgXCJpbmRleC1vbmx5XCIiLAorCQkJTl8oIm1hcmsgZmlsZXMgYXMgXCJpbmRleC1vbmx5XCIiKSwKIAkJCVBBUlNFX09QVF9OT0FSRyB8IFBBUlNFX09QVF9OT05FRywgTlVMTCwgTUFSS19GTEFHfSwKIAkJe09QVElPTl9TRVRfSU5ULCAwLCAibm8tc2tpcC13b3JrdHJlZSIsICZtYXJrX3NraXBfd29ya3RyZWVfb25seSwgTlVMTCwKLQkJCSJjbGVhciBza2lwLXdvcmt0cmVlIGJpdCIsCisJCQlOXygiY2xlYXIgc2tpcC13b3JrdHJlZSBiaXQiKSwKIAkJCVBBUlNFX09QVF9OT0FSRyB8IFBBUlNFX09QVF9OT05FRywgTlVMTCwgVU5NQVJLX0ZMQUd9LAogCQlPUFRfU0VUX0lOVCgwLCAiaW5mby1vbmx5IiwgJmluZm9fb25seSwKLQkJCSJhZGQgdG8gaW5kZXggb25seTsgZG8gbm90IGFkZCBjb250ZW50IHRvIG9iamVjdCBkYXRhYmFzZSIsIDEpLAorCQkJTl8oImFkZCB0byBpbmRleCBvbmx5OyBkbyBub3QgYWRkIGNvbnRlbnQgdG8gb2JqZWN0IGRhdGFiYXNlIiksIDEpLAogCQlPUFRfU0VUX0lOVCgwLCAiZm9yY2UtcmVtb3ZlIiwgJmZvcmNlX3JlbW92ZSwKLQkJCSJyZW1vdmUgbmFtZWQgcGF0aHMgZXZlbiBpZiBwcmVzZW50IGluIHdvcmt0cmVlIiwgMSksCisJCQlOXygicmVtb3ZlIG5hbWVkIHBhdGhzIGV2ZW4gaWYgcHJlc2VudCBpbiB3b3JrdHJlZSIpLCAxKSwKIAkJT1BUX1NFVF9JTlQoJ3onLCBOVUxMLCAmbGluZV90ZXJtaW5hdGlvbiwKLQkJCSJ3aXRoIC0tc3RkaW46IGlucHV0IGxpbmVzIGFyZSB0ZXJtaW5hdGVkIGJ5IG51bGwgYnl0ZXMiLCAnXDAnKSwKKwkJCU5fKCJ3aXRoIC0tc3RkaW46IGlucHV0IGxpbmVzIGFyZSB0ZXJtaW5hdGVkIGJ5IG51bGwgYnl0ZXMiKSwgJ1wwJyksCiAJCXtPUFRJT05fTE9XTEVWRUxfQ0FMTEJBQ0ssIDAsICJzdGRpbiIsICZyZWFkX2Zyb21fc3RkaW4sIE5VTEwsCi0JCQkicmVhZCBsaXN0IG9mIHBhdGhzIHRvIGJlIHVwZGF0ZWQgZnJvbSBzdGFuZGFyZCBpbnB1dCIsCisJCQlOXygicmVhZCBsaXN0IG9mIHBhdGhzIHRvIGJlIHVwZGF0ZWQgZnJvbSBzdGFuZGFyZCBpbnB1dCIpLAogCQkJUEFSU0VfT1BUX05PTkVHIHwgUEFSU0VfT1BUX05PQVJHLAogCQkJKHBhcnNlX29wdF9jYiAqKSBzdGRpbl9jYWxsYmFja30sCiAJCXtPUFRJT05fTE9XTEVWRUxfQ0FMTEJBQ0ssIDAsICJpbmRleC1pbmZvIiwgJmxpbmVfdGVybWluYXRpb24sIE5VTEwsCi0JCQkiYWRkIGVudHJpZXMgZnJvbSBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW5kZXgiLAorCQkJTl8oImFkZCBlbnRyaWVzIGZyb20gc3RhbmRhcmQgaW5wdXQgdG8gdGhlIGluZGV4IiksCiAJCQlQQVJTRV9PUFRfTk9ORUcgfCBQQVJTRV9PUFRfTk9BUkcsCiAJCQkocGFyc2Vfb3B0X2NiICopIHN0ZGluX2NhY2hlaW5mb19jYWxsYmFja30sCiAJCXtPUFRJT05fTE9XTEVWRUxfQ0FMTEJBQ0ssIDAsICJ1bnJlc29sdmUiLCAmaGFzX2Vycm9ycywgTlVMTCwKLQkJCSJyZXBvcHVsYXRlIHN0YWdlcyAjMiBhbmQgIzMgZm9yIHRoZSBsaXN0ZWQgcGF0aHMiLAorCQkJTl8oInJlcG9wdWxhdGUgc3RhZ2VzICMyIGFuZCAjMyBmb3IgdGhlIGxpc3RlZCBwYXRocyIpLAogCQkJUEFSU0VfT1BUX05PTkVHIHwgUEFSU0VfT1BUX05PQVJHLAogCQkJKHBhcnNlX29wdF9jYiAqKSB1bnJlc29sdmVfY2FsbGJhY2t9LAogCQl7T1BUSU9OX0xPV0xFVkVMX0NBTExCQUNLLCAnZycsICJhZ2FpbiIsICZoYXNfZXJyb3JzLCBOVUxMLAotCQkJIm9ubHkgdXBkYXRlIGVudHJpZXMgdGhhdCBkaWZmZXIgZnJvbSBIRUFEIiwKKwkJCU5fKCJvbmx5IHVwZGF0ZSBlbnRyaWVzIHRoYXQgZGlmZmVyIGZyb20gSEVBRCIpLAogCQkJUEFSU0VfT1BUX05PTkVHIHwgUEFSU0VfT1BUX05PQVJHLAogCQkJKHBhcnNlX29wdF9jYiAqKSByZXVwZGF0ZV9jYWxsYmFja30sCiAJCU9QVF9CSVQoMCwgImlnbm9yZS1taXNzaW5nIiwgJnJlZnJlc2hfYXJncy5mbGFncywKLQkJCSJpZ25vcmUgZmlsZXMgbWlzc2luZyBmcm9tIHdvcmt0cmVlIiwKKwkJCU5fKCJpZ25vcmUgZmlsZXMgbWlzc2luZyBmcm9tIHdvcmt0cmVlIiksCiAJCQlSRUZSRVNIX0lHTk9SRV9NSVNTSU5HKSwKIAkJT1BUX1NFVF9JTlQoMCwgInZlcmJvc2UiLCAmdmVyYm9zZSwKLQkJCSJyZXBvcnQgYWN0aW9ucyB0byBzdGFuZGFyZCBvdXRwdXQiLCAxKSwKKwkJCU5fKCJyZXBvcnQgYWN0aW9ucyB0byBzdGFuZGFyZCBvdXRwdXQiKSwgMSksCiAJCXtPUFRJT05fQ0FMTEJBQ0ssIDAsICJjbGVhci1yZXNvbHZlLXVuZG8iLCBOVUxMLCBOVUxMLAotCQkJIihmb3IgcG9yY2VsYWlucykgZm9yZ2V0IHNhdmVkIHVucmVzb2x2ZWQgY29uZmxpY3RzIiwKKwkJCU5fKCIoZm9yIHBvcmNlbGFpbnMpIGZvcmdldCBzYXZlZCB1bnJlc29sdmVkIGNvbmZsaWN0cyIpLAogCQkJUEFSU0VfT1BUX05PQVJHIHwgUEFSU0VfT1BUX05PTkVHLAogCQkJcmVzb2x2ZV91bmRvX2NsZWFyX2NhbGxiYWNrfSwKIAkJT1BUX0lOVEVHRVIoMCwgImluZGV4LXZlcnNpb24iLCAmcHJlZmVycmVkX2luZGV4X2Zvcm1hdCwKLQkJCSAgICAid3JpdGUgaW5kZXggaW4gdGhpcyBmb3JtYXQiKSwKKwkJCU5fKCJ3cml0ZSBpbmRleCBpbiB0aGlzIGZvcm1hdCIpKSwKIAkJT1BUX0VORCgpCiAJfTsKIAogCWlmIChhcmdjID09IDIgJiYgIXN0cmNtcChhcmd2WzFdLCAiLWgiKSkKLQkJdXNhZ2UodXBkYXRlX2luZGV4X3VzYWdlWzBdKTsKKwkJdXNhZ2Vfd2l0aF9vcHRpb25zKHVwZGF0ZV9pbmRleF91c2FnZSwgb3B0aW9ucyk7CiAKIAlnaXRfY29uZmlnKGdpdF9kZWZhdWx0X2NvbmZpZywgTlVMTCk7CiAKZGlmZiAtLWdpdCBhL2J1aWx0aW4vdXBkYXRlLXJlZi5jIGIvYnVpbHRpbi91cGRhdGUtcmVmLmMKaW5kZXggODM1YzYyYS4uNTFkMjY4NCAxMDA2NDQKLS0tIGEvYnVpbHRpbi91cGRhdGUtcmVmLmMKKysrIGIvYnVpbHRpbi91cGRhdGUtcmVmLmMKQEAgLTQsOCArNCw4IEBACiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGdpdF91cGRhdGVfcmVmX3VzYWdlW10gPSB7Ci0JImdpdCB1cGRhdGUtcmVmIFtvcHRpb25zXSAtZCA8cmVmbmFtZT4gWzxvbGR2YWw+XSIsCi0JImdpdCB1cGRhdGUtcmVmIFtvcHRpb25zXSAgICA8cmVmbmFtZT4gPG5ld3ZhbD4gWzxvbGR2YWw+XSIsCisJTl8oImdpdCB1cGRhdGUtcmVmIFtvcHRpb25zXSAtZCA8cmVmbmFtZT4gWzxvbGR2YWw+XSIpLAorCU5fKCJnaXQgdXBkYXRlLXJlZiBbb3B0aW9uc10gICAgPHJlZm5hbWU+IDxuZXd2YWw+IFs8b2xkdmFsPl0iKSwKIAlOVUxMCiB9OwogCkBAIC0xNSwxMCArMTUsMTAgQEAKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdLCBvbGRzaGExWzIwXTsKIAlpbnQgZGVsZXRlID0gMCwgbm9fZGVyZWYgPSAwLCBmbGFncyA9IDA7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0JCU9QVF9TVFJJTkcoICdtJywgTlVMTCwgJm1zZywgInJlYXNvbiIsICJyZWFzb24gb2YgdGhlIHVwZGF0ZSIpLAotCQlPUFRfQk9PTEVBTignZCcsIE5VTEwsICZkZWxldGUsICJkZWxldGVzIHRoZSByZWZlcmVuY2UiKSwKKwkJT1BUX1NUUklORyggJ20nLCBOVUxMLCAmbXNnLCBOXygicmVhc29uIiksIE5fKCJyZWFzb24gb2YgdGhlIHVwZGF0ZSIpKSwKKwkJT1BUX0JPT0xFQU4oJ2QnLCBOVUxMLCAmZGVsZXRlLCBOXygiZGVsZXRlIHRoZSByZWZlcmVuY2UiKSksCiAJCU9QVF9CT09MRUFOKCAwICwgIm5vLWRlcmVmIiwgJm5vX2RlcmVmLAotCQkJCQkidXBkYXRlIDxyZWZuYW1lPiBub3QgdGhlIG9uZSBpdCBwb2ludHMgdG8iKSwKKwkJCQkJTl8oInVwZGF0ZSA8cmVmbmFtZT4gbm90IHRoZSBvbmUgaXQgcG9pbnRzIHRvIikpLAogCQlPUFRfRU5EKCksCiAJfTsKIApkaWZmIC0tZ2l0IGEvYnVpbHRpbi91cGRhdGUtc2VydmVyLWluZm8uYyBiL2J1aWx0aW4vdXBkYXRlLXNlcnZlci1pbmZvLmMKaW5kZXggMGQ2M2M0NC4uNmM4Y2MzZSAxMDA2NDQKLS0tIGEvYnVpbHRpbi91cGRhdGUtc2VydmVyLWluZm8uYworKysgYi9idWlsdGluL3VwZGF0ZS1zZXJ2ZXItaW5mby5jCkBAIC0zLDcgKzMsNyBAQAogI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB1cGRhdGVfc2VydmVyX2luZm9fdXNhZ2VbXSA9IHsKLQkiZ2l0IHVwZGF0ZS1zZXJ2ZXItaW5mbyBbLS1mb3JjZV0iLAorCU5fKCJnaXQgdXBkYXRlLXNlcnZlci1pbmZvIFstLWZvcmNlXSIpLAogCU5VTEwKIH07CiAKQEAgLTExLDcgKzExLDcgQEAKIHsKIAlpbnQgZm9yY2UgPSAwOwogCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewotCQlPUFRfX0ZPUkNFKCZmb3JjZSwgInVwZGF0ZSB0aGUgaW5mbyBmaWxlcyBmcm9tIHNjcmF0Y2giKSwKKwkJT1BUX19GT1JDRSgmZm9yY2UsIE5fKCJ1cGRhdGUgdGhlIGluZm8gZmlsZXMgZnJvbSBzY3JhdGNoIikpLAogCQlPUFRfRU5EKCkKIAl9OwogCmRpZmYgLS1naXQgYS9idWlsdGluL3VwbG9hZC1hcmNoaXZlLmMgYi9idWlsdGluL3VwbG9hZC1hcmNoaXZlLmMKaW5kZXggYjkyOGJlYi4uYWYyZGEzNSAxMDA2NDQKLS0tIGEvYnVpbHRpbi91cGxvYWQtYXJjaGl2ZS5jCisrKyBiL2J1aWx0aW4vdXBsb2FkLWFyY2hpdmUuYwpAQCAtNyw2ICs3LDcgQEAKICNpbmNsdWRlICJwa3QtbGluZS5oIgogI2luY2x1ZGUgInNpZGViYW5kLmgiCiAjaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKKyNpbmNsdWRlICJhcmd2LWFycmF5LmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyIHVwbG9hZF9hcmNoaXZlX3VzYWdlW10gPQogCSJnaXQgdXBsb2FkLWFyY2hpdmUgPHJlcG8+IjsKQEAgLTE4LDUxICsxOSwzMSBAQAogCiBpbnQgY21kX3VwbG9hZF9hcmNoaXZlX3dyaXRlcihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQljb25zdCBjaGFyICpzZW50X2FyZ3ZbTUFYX0FSR1NdOworCXN0cnVjdCBhcmd2X2FycmF5IHNlbnRfYXJndiA9IEFSR1ZfQVJSQVlfSU5JVDsKIAljb25zdCBjaGFyICphcmdfY21kID0gImFyZ3VtZW50ICI7Ci0JY2hhciAqcCwgYnVmWzQwOTZdOwotCWludCBzZW50X2FyZ2M7Ci0JaW50IGxlbjsKIAogCWlmIChhcmdjICE9IDIpCiAJCXVzYWdlKHVwbG9hZF9hcmNoaXZlX3VzYWdlKTsKIAotCWlmIChzdHJsZW4oYXJndlsxXSkgKyAxID4gc2l6ZW9mKGJ1ZikpCi0JCWRpZSgiaW5zYW5lbHkgbG9uZyByZXBvc2l0b3J5IG5hbWUiKTsKLQotCXN0cmNweShidWYsIGFyZ3ZbMV0pOyAvKiBlbnRlci1yZXBvIHNtdWRnZXMgaXRzIGFyZ3VtZW50ICovCi0KLQlpZiAoIWVudGVyX3JlcG8oYnVmLCAwKSkKLQkJZGllKCInJXMnIGRvZXMgbm90IGFwcGVhciB0byBiZSBhIGdpdCByZXBvc2l0b3J5IiwgYnVmKTsKKwlpZiAoIWVudGVyX3JlcG8oYXJndlsxXSwgMCkpCisJCWRpZSgiJyVzJyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSBnaXQgcmVwb3NpdG9yeSIsIGFyZ3ZbMV0pOwogCiAJLyogcHV0IHJlY2VpdmVkIG9wdGlvbnMgaW4gc2VudF9hcmd2W10gKi8KLQlzZW50X2FyZ2MgPSAxOwotCXNlbnRfYXJndlswXSA9ICJnaXQtdXBsb2FkLWFyY2hpdmUiOwotCWZvciAocCA9IGJ1Zjs7KSB7Ci0JCS8qIFRoaXMgd2lsbCBkaWUgaWYgbm90IGVub3VnaCBmcmVlIHNwYWNlIGluIGJ1ZiAqLwotCQlsZW4gPSBwYWNrZXRfcmVhZF9saW5lKDAsIHAsIChidWYgKyBzaXplb2YgYnVmKSAtIHApOwotCQlpZiAobGVuID09IDApCisJYXJndl9hcnJheV9wdXNoKCZzZW50X2FyZ3YsICJnaXQtdXBsb2FkLWFyY2hpdmUiKTsKKwlmb3IgKDs7KSB7CisJCWNoYXIgKmJ1ZiA9IHBhY2tldF9yZWFkX2xpbmUoMCwgTlVMTCk7CisJCWlmICghYnVmKQogCQkJYnJlYWs7CS8qIGdvdCBhIGZsdXNoICovCi0JCWlmIChzZW50X2FyZ2MgPiBNQVhfQVJHUyAtIDIpCi0JCQlkaWUoIlRvbyBtYW55IG9wdGlvbnMgKD4lZCkiLCBNQVhfQVJHUyAtIDIpOworCQlpZiAoc2VudF9hcmd2LmFyZ2MgPiBNQVhfQVJHUykKKwkJCWRpZSgiVG9vIG1hbnkgb3B0aW9ucyAoPiVkKSIsIE1BWF9BUkdTIC0gMSk7CiAKLQkJaWYgKHBbbGVuLTFdID09ICdcbicpIHsKLQkJCXBbLS1sZW5dID0gMDsKLQkJfQotCQlpZiAobGVuIDwgc3RybGVuKGFyZ19jbWQpIHx8Ci0JCSAgICBzdHJuY21wKGFyZ19jbWQsIHAsIHN0cmxlbihhcmdfY21kKSkpCisJCWlmIChwcmVmaXhjbXAoYnVmLCBhcmdfY21kKSkKIAkJCWRpZSgiJ2FyZ3VtZW50JyB0b2tlbiBvciBmbHVzaCBleHBlY3RlZCIpOwotCi0JCWxlbiAtPSBzdHJsZW4oYXJnX2NtZCk7Ci0JCW1lbW1vdmUocCwgcCArIHN0cmxlbihhcmdfY21kKSwgbGVuKTsKLQkJc2VudF9hcmd2W3NlbnRfYXJnYysrXSA9IHA7Ci0JCXAgKz0gbGVuOwotCQkqcCsrID0gMDsKKwkJYXJndl9hcnJheV9wdXNoKCZzZW50X2FyZ3YsIGJ1ZiArIHN0cmxlbihhcmdfY21kKSk7CiAJfQotCXNlbnRfYXJndltzZW50X2FyZ2NdID0gTlVMTDsKIAogCS8qIHBhcnNlIGFsbCBvcHRpb25zIHNlbnQgYnkgdGhlIGNsaWVudCAqLwotCXJldHVybiB3cml0ZV9hcmNoaXZlKHNlbnRfYXJnYywgc2VudF9hcmd2LCBwcmVmaXgsIDAsIE5VTEwsIDEpOworCXJldHVybiB3cml0ZV9hcmNoaXZlKHNlbnRfYXJndi5hcmdjLCBzZW50X2FyZ3YuYXJndiwgcHJlZml4LCAwLCBOVUxMLCAxKTsKIH0KIAogX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsIDEsIDIpKSkKZGlmZiAtLWdpdCBhL2J1aWx0aW4vdmVyaWZ5LXBhY2suYyBiL2J1aWx0aW4vdmVyaWZ5LXBhY2suYwppbmRleCBlODQxYjRhLi42NmNkMmRmIDEwMDY0NAotLS0gYS9idWlsdGluL3ZlcmlmeS1wYWNrLmMKKysrIGIvYnVpbHRpbi92ZXJpZnktcGFjay5jCkBAIC01Myw3ICs1Myw3IEBACiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdmVyaWZ5X3BhY2tfdXNhZ2VbXSA9IHsKLQkiZ2l0IHZlcmlmeS1wYWNrIFstdnwtLXZlcmJvc2VdIFstc3wtLXN0YXQtb25seV0gPHBhY2s+Li4uIiwKKwlOXygiZ2l0IHZlcmlmeS1wYWNrIFstdnwtLXZlcmJvc2VdIFstc3wtLXN0YXQtb25seV0gPHBhY2s+Li4uIiksCiAJTlVMTAogfTsKIApAQCAtNjMsOSArNjMsOSBAQAogCXVuc2lnbmVkIGludCBmbGFncyA9IDA7CiAJaW50IGk7CiAJY29uc3Qgc3RydWN0IG9wdGlvbiB2ZXJpZnlfcGFja19vcHRpb25zW10gPSB7Ci0JCU9QVF9CSVQoJ3YnLCAidmVyYm9zZSIsICZmbGFncywgInZlcmJvc2UiLAorCQlPUFRfQklUKCd2JywgInZlcmJvc2UiLCAmZmxhZ3MsIE5fKCJ2ZXJib3NlIiksCiAJCQlWRVJJRllfUEFDS19WRVJCT1NFKSwKLQkJT1BUX0JJVCgncycsICJzdGF0LW9ubHkiLCAmZmxhZ3MsICJzaG93IHN0YXRpc3RpY3Mgb25seSIsCisJCU9QVF9CSVQoJ3MnLCAic3RhdC1vbmx5IiwgJmZsYWdzLCBOXygic2hvdyBzdGF0aXN0aWNzIG9ubHkiKSwKIAkJCVZFUklGWV9QQUNLX1NUQVRfT05MWSksCiAJCU9QVF9FTkQoKQogCX07CmRpZmYgLS1naXQgYS9idWlsdGluL3ZlcmlmeS10YWcuYyBiL2J1aWx0aW4vdmVyaWZ5LXRhZy5jCmluZGV4IDk4Njc4OWYuLjljZGYzMzIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vdmVyaWZ5LXRhZy5jCisrKyBiL2J1aWx0aW4vdmVyaWZ5LXRhZy5jCkBAIC0xNCw3ICsxNCw3IEBACiAjaW5jbHVkZSAiZ3BnLWludGVyZmFjZS5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHZlcmlmeV90YWdfdXNhZ2VbXSA9IHsKLQkJImdpdCB2ZXJpZnktdGFnIFstdnwtLXZlcmJvc2VdIDx0YWc+Li4uIiwKKwkJTl8oImdpdCB2ZXJpZnktdGFnIFstdnwtLXZlcmJvc2VdIDx0YWc+Li4uIiksCiAJCU5VTEwKIH07CiAKQEAgLTI5LDcgKzI5LDcgQEAKIAlpZiAoc2l6ZSA9PSBsZW4pCiAJCXJldHVybiBlcnJvcigibm8gc2lnbmF0dXJlIGZvdW5kIik7CiAKLQlyZXR1cm4gdmVyaWZ5X3NpZ25lZF9idWZmZXIoYnVmLCBsZW4sIGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgTlVMTCk7CisJcmV0dXJuIHZlcmlmeV9zaWduZWRfYnVmZmVyKGJ1ZiwgbGVuLCBidWYgKyBsZW4sIHNpemUgLSBsZW4sIE5VTEwsIE5VTEwpOwogfQogCiBzdGF0aWMgaW50IHZlcmlmeV90YWcoY29uc3QgY2hhciAqbmFtZSwgaW50IHZlcmJvc2UpCkBAIC03MCw3ICs3MCw3IEBACiB7CiAJaW50IGkgPSAxLCB2ZXJib3NlID0gMCwgaGFkX2Vycm9yID0gMDsKIAljb25zdCBzdHJ1Y3Qgb3B0aW9uIHZlcmlmeV90YWdfb3B0aW9uc1tdID0gewotCQlPUFRfX1ZFUkJPU0UoJnZlcmJvc2UsICJwcmludCB0YWcgY29udGVudHMiKSwKKwkJT1BUX19WRVJCT1NFKCZ2ZXJib3NlLCBOXygicHJpbnQgdGFnIGNvbnRlbnRzIikpLAogCQlPUFRfRU5EKCkKIAl9OwogCmRpZmYgLS1naXQgYS9idWlsdGluL3dyaXRlLXRyZWUuYyBiL2J1aWx0aW4vd3JpdGUtdHJlZS5jCmluZGV4IGIyMjNhZjQuLjA4NGMwZGYgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vd3JpdGUtdHJlZS5jCisrKyBiL2J1aWx0aW4vd3JpdGUtdHJlZS5jCkBAIC0xMCw3ICsxMCw3IEBACiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHdyaXRlX3RyZWVfdXNhZ2VbXSA9IHsKLQkiZ2l0IHdyaXRlLXRyZWUgWy0tbWlzc2luZy1va10gWy0tcHJlZml4PTxwcmVmaXg+L10iLAorCU5fKCJnaXQgd3JpdGUtdHJlZSBbLS1taXNzaW5nLW9rXSBbLS1wcmVmaXg9PHByZWZpeD4vXSIpLAogCU5VTEwKIH07CiAKQEAgLTIxLDEzICsyMSwxMyBAQAogCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAJY29uc3QgY2hhciAqbWUgPSAiZ2l0LXdyaXRlLXRyZWUiOwogCXN0cnVjdCBvcHRpb24gd3JpdGVfdHJlZV9vcHRpb25zW10gPSB7Ci0JCU9QVF9CSVQoMCwgIm1pc3Npbmctb2siLCAmZmxhZ3MsICJhbGxvdyBtaXNzaW5nIG9iamVjdHMiLAorCQlPUFRfQklUKDAsICJtaXNzaW5nLW9rIiwgJmZsYWdzLCBOXygiYWxsb3cgbWlzc2luZyBvYmplY3RzIiksCiAJCQlXUklURV9UUkVFX01JU1NJTkdfT0spLAotCQl7IE9QVElPTl9TVFJJTkcsIDAsICJwcmVmaXgiLCAmcHJlZml4LCAiPHByZWZpeD4vIiwKLQkJICAid3JpdGUgdHJlZSBvYmplY3QgZm9yIGEgc3ViZGlyZWN0b3J5IDxwcmVmaXg+IiAsCisJCXsgT1BUSU9OX1NUUklORywgMCwgInByZWZpeCIsICZwcmVmaXgsIE5fKCI8cHJlZml4Pi8iKSwKKwkJICBOXygid3JpdGUgdHJlZSBvYmplY3QgZm9yIGEgc3ViZGlyZWN0b3J5IDxwcmVmaXg+IikgLAogCQkgIFBBUlNFX09QVF9MSVRFUkFMX0FSR0hFTFAgfSwKIAkJeyBPUFRJT05fQklULCAwLCAiaWdub3JlLWNhY2hlLXRyZWUiLCAmZmxhZ3MsIE5VTEwsCi0JCSAgIm9ubHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmciLAorCQkgIE5fKCJvbmx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nIiksCiAJCSAgUEFSU0VfT1BUX0hJRERFTiB8IFBBUlNFX09QVF9OT0FSRywgTlVMTCwKIAkJICBXUklURV9UUkVFX0lHTk9SRV9DQUNIRV9UUkVFIH0sCiAJCU9QVF9FTkQoKQpkaWZmIC0tZ2l0IGEvYnVuZGxlLmMgYi9idW5kbGUuYwppbmRleCA4ZDMxYjk4Li40YjBlNWNkIDEwMDY0NAotLS0gYS9idW5kbGUuYworKysgYi9idW5kbGUuYwpAQCAtNTcsNyArNTcsNyBAQAogCQkgKiBmb2xsb3dlZCBieSBTUCBhbmQgc3ViamVjdCBsaW5lLgogCQkgKi8KIAkJaWYgKGdldF9zaGExX2hleChidWYuYnVmLCBzaGExKSB8fAotCQkgICAgKDQwIDw9IGJ1Zi5sZW4gJiYgIWlzc3BhY2UoYnVmLmJ1Zls0MF0pKSB8fAorCQkgICAgKGJ1Zi5sZW4gPiA0MCAmJiAhaXNzcGFjZShidWYuYnVmWzQwXSkpIHx8CiAJCSAgICAoIWlzX3ByZXJlcSAmJiBidWYubGVuIDw9IDQwKSkgewogCQkJaWYgKHJlcG9ydF9wYXRoKQogCQkJCWVycm9yKF8oInVucmVjb2duaXplZCBoZWFkZXI6ICVzJXMgKCVkKSIpLApAQCAtMTgzLDE3ICsxODMsMjEgQEAKIAkJc3RydWN0IHJlZl9saXN0ICpyOwogCiAJCXIgPSAmaGVhZGVyLT5yZWZlcmVuY2VzOwotCQlwcmludGZfbG4oUV8oIlRoZSBidW5kbGUgY29udGFpbnMgJWQgcmVmIiwKLQkJCSAgICAgIlRoZSBidW5kbGUgY29udGFpbnMgJWQgcmVmcyIsCisJCXByaW50Zl9sbihRXygiVGhlIGJ1bmRsZSBjb250YWlucyB0aGlzIHJlZjoiLAorCQkJICAgICAiVGhlIGJ1bmRsZSBjb250YWlucyB0aGVzZSAlZCByZWZzOiIsCiAJCQkgICAgIHItPm5yKSwKIAkJCSAgci0+bnIpOwogCQlsaXN0X3JlZnMociwgMCwgTlVMTCk7CiAJCXIgPSAmaGVhZGVyLT5wcmVyZXF1aXNpdGVzOwotCQlwcmludGZfbG4oUV8oIlRoZSBidW5kbGUgcmVxdWlyZXMgdGhpcyByZWYiLAotCQkJICAgICAiVGhlIGJ1bmRsZSByZXF1aXJlcyB0aGVzZSAlZCByZWZzIiwKLQkJCSAgICAgci0+bnIpLAotCQkJICByLT5ucik7Ci0JCWxpc3RfcmVmcyhyLCAwLCBOVUxMKTsKKwkJaWYgKCFyLT5ucikgeworCQkJcHJpbnRmX2xuKF8oIlRoZSBidW5kbGUgcmVjb3JkcyBhIGNvbXBsZXRlIGhpc3RvcnkuIikpOworCQl9IGVsc2UgeworCQkJcHJpbnRmX2xuKFFfKCJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoaXMgcmVmOiIsCisJCQkJICAgICAiVGhlIGJ1bmRsZSByZXF1aXJlcyB0aGVzZSAlZCByZWZzOiIsCisJCQkJICAgICByLT5uciksCisJCQkJICByLT5ucik7CisJCQlsaXN0X3JlZnMociwgMCwgTlVMTCk7CisJCX0KIAl9CiAJcmV0dXJuIHJldDsKIH0KQEAgLTI3NSwxMiArMjc5LDEyIEBACiAJCWlmIChidWYubGVuID4gMCAmJiBidWYuYnVmWzBdID09ICctJykgewogCQkJd3JpdGVfb3JfZGllKGJ1bmRsZV9mZCwgYnVmLmJ1ZiwgYnVmLmxlbik7CiAJCQlpZiAoIWdldF9zaGExX2hleChidWYuYnVmICsgMSwgc2hhMSkpIHsKLQkJCQlzdHJ1Y3Qgb2JqZWN0ICpvYmplY3QgPSBwYXJzZV9vYmplY3Qoc2hhMSk7CisJCQkJc3RydWN0IG9iamVjdCAqb2JqZWN0ID0gcGFyc2Vfb2JqZWN0X29yX2RpZShzaGExLCBidWYuYnVmKTsKIAkJCQlvYmplY3QtPmZsYWdzIHw9IFVOSU5URVJFU1RJTkc7CiAJCQkJYWRkX3BlbmRpbmdfb2JqZWN0KCZyZXZzLCBvYmplY3QsIHhzdHJkdXAoYnVmLmJ1ZikpOwogCQkJfQogCQl9IGVsc2UgaWYgKCFnZXRfc2hhMV9oZXgoYnVmLmJ1Ziwgc2hhMSkpIHsKLQkJCXN0cnVjdCBvYmplY3QgKm9iamVjdCA9IHBhcnNlX29iamVjdChzaGExKTsKKwkJCXN0cnVjdCBvYmplY3QgKm9iamVjdCA9IHBhcnNlX29iamVjdF9vcl9kaWUoc2hhMSwgYnVmLmJ1Zik7CiAJCQlvYmplY3QtPmZsYWdzIHw9IFNIT1dOOwogCQl9CiAJfQpAQCAtMzU3LDcgKzM2MSw3IEBACiAJCQkJICogZW5kIHVwIHRyaWdnZXJpbmcgImVtcHR5IGJ1bmRsZSIKIAkJCQkgKiBlcnJvci4KIAkJCQkgKi8KLQkJCQlvYmogPSBwYXJzZV9vYmplY3Qoc2hhMSk7CisJCQkJb2JqID0gcGFyc2Vfb2JqZWN0X29yX2RpZShzaGExLCBlLT5uYW1lKTsKIAkJCQlvYmotPmZsYWdzIHw9IFNIT1dOOwogCQkJCWFkZF9wZW5kaW5nX29iamVjdCgmcmV2cywgb2JqLCBlLT5uYW1lKTsKIAkJCX0KZGlmZiAtLWdpdCBhL2NhY2hlLXRyZWUuYyBiL2NhY2hlLXRyZWUuYwppbmRleCAyOGVkNjU3Li4zN2U0ZDAwIDEwMDY0NAotLS0gYS9jYWNoZS10cmVlLmMKKysrIGIvY2FjaGUtdHJlZS5jCkBAIC0xNjYsMTIgKzE2Niw4IEBACiAJCQkJZnByaW50ZihzdGRlcnIsICIuLi5cbiIpOwogCQkJCWJyZWFrOwogCQkJfQotCQkJaWYgKGNlX3N0YWdlKGNlKSkKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiB1bm1lcmdlZCAoJXMpXG4iLAotCQkJCQljZS0+bmFtZSwgc2hhMV90b19oZXgoY2UtPnNoYTEpKTsKLQkJCWVsc2UKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBub3QgYWRkZWQgeWV0XG4iLAotCQkJCQljZS0+bmFtZSk7CisJCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiB1bm1lcmdlZCAoJXMpXG4iLAorCQkJCWNlLT5uYW1lLCBzaGExX3RvX2hleChjZS0+c2hhMSkpOwogCQl9CiAJfQogCWlmIChmdW5ueSkKQEAgLTI0MiwxMyArMjM4LDE3IEBACiAJCSAgICAgIGludCBlbnRyaWVzLAogCQkgICAgICBjb25zdCBjaGFyICpiYXNlLAogCQkgICAgICBpbnQgYmFzZWxlbiwKKwkJICAgICAgaW50ICpza2lwX2NvdW50LAogCQkgICAgICBpbnQgZmxhZ3MpCiB7CiAJc3RydWN0IHN0cmJ1ZiBidWZmZXI7CiAJaW50IG1pc3Npbmdfb2sgPSBmbGFncyAmIFdSSVRFX1RSRUVfTUlTU0lOR19PSzsKIAlpbnQgZHJ5cnVuID0gZmxhZ3MgJiBXUklURV9UUkVFX0RSWV9SVU47CisJaW50IHRvX2ludmFsaWRhdGUgPSAwOwogCWludCBpOwogCisJKnNraXBfY291bnQgPSAwOworCiAJaWYgKDAgPD0gaXQtPmVudHJ5X2NvdW50ICYmIGhhc19zaGExX2ZpbGUoaXQtPnNoYTEpKQogCQlyZXR1cm4gaXQtPmVudHJ5X2NvdW50OwogCkBAIC0yNjMsMTEgKzI2MywxMiBAQAogCS8qCiAJICogRmluZCB0aGUgc3VidHJlZXMgYW5kIHVwZGF0ZSB0aGVtLgogCSAqLwotCWZvciAoaSA9IDA7IGkgPCBlbnRyaWVzOyBpKyspIHsKKwlpID0gMDsKKwl3aGlsZSAoaSA8IGVudHJpZXMpIHsKIAkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGNhY2hlW2ldOwogCQlzdHJ1Y3QgY2FjaGVfdHJlZV9zdWIgKnN1YjsKIAkJY29uc3QgY2hhciAqcGF0aCwgKnNsYXNoOwotCQlpbnQgcGF0aGxlbiwgc3VibGVuLCBzdWJjbnQ7CisJCWludCBwYXRobGVuLCBzdWJsZW4sIHN1YmNudCwgc3Vic2tpcDsKIAogCQlwYXRoID0gY2UtPm5hbWU7CiAJCXBhdGhsZW4gPSBjZV9uYW1lbGVuKGNlKTsKQEAgLTI3NSw4ICsyNzYsMTAgQEAKIAkJCWJyZWFrOyAvKiBhdCB0aGUgZW5kIG9mIHRoaXMgbGV2ZWwgKi8KIAogCQlzbGFzaCA9IHN0cmNocihwYXRoICsgYmFzZWxlbiwgJy8nKTsKLQkJaWYgKCFzbGFzaCkKKwkJaWYgKCFzbGFzaCkgeworCQkJaSsrOwogCQkJY29udGludWU7CisJCX0KIAkJLyoKIAkJICogYS9iYmIvYyAoYmFzZSA9IGEvLCBzbGFzaCA9IC9jKQogCQkgKiA9PT4KQEAgLTI5MCwxMCArMjkzLDEzIEBACiAJCQkJICAgIGNhY2hlICsgaSwgZW50cmllcyAtIGksCiAJCQkJICAgIHBhdGgsCiAJCQkJICAgIGJhc2VsZW4gKyBzdWJsZW4gKyAxLAorCQkJCSAgICAmc3Vic2tpcCwKIAkJCQkgICAgZmxhZ3MpOwogCQlpZiAoc3ViY250IDwgMCkKIAkJCXJldHVybiBzdWJjbnQ7Ci0JCWkgKz0gc3ViY250IC0gMTsKKwkJaSArPSBzdWJjbnQ7CisJCXN1Yi0+Y291bnQgPSBzdWJjbnQ7IC8qIHRvIGJlIHVzZWQgaW4gdGhlIG5leHQgbG9vcCAqLworCQkqc2tpcF9jb3VudCArPSBzdWJza2lwOwogCQlzdWItPnVzZWQgPSAxOwogCX0KIApAQCAtMzA0LDcgKzMxMCw4IEBACiAJICovCiAJc3RyYnVmX2luaXQoJmJ1ZmZlciwgODE5Mik7CiAKLQlmb3IgKGkgPSAwOyBpIDwgZW50cmllczsgaSsrKSB7CisJaSA9IDA7CisJd2hpbGUgKGkgPCBlbnRyaWVzKSB7CiAJCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBjYWNoZVtpXTsKIAkJc3RydWN0IGNhY2hlX3RyZWVfc3ViICpzdWI7CiAJCWNvbnN0IGNoYXIgKnBhdGgsICpzbGFzaDsKQEAgLTMyNCwxNCArMzMxLDE3IEBACiAJCQlpZiAoIXN1YikKIAkJCQlkaWUoImNhY2hlLXRyZWUuYzogJyUuKnMnIGluICclcycgbm90IGZvdW5kIiwKIAkJCQkgICAgZW50bGVuLCBwYXRoICsgYmFzZWxlbiwgcGF0aCk7Ci0JCQlpICs9IHN1Yi0+Y2FjaGVfdHJlZS0+ZW50cnlfY291bnQgLSAxOworCQkJaSArPSBzdWItPmNvdW50OwogCQkJc2hhMSA9IHN1Yi0+Y2FjaGVfdHJlZS0+c2hhMTsKIAkJCW1vZGUgPSBTX0lGRElSOworCQkJaWYgKHN1Yi0+Y2FjaGVfdHJlZS0+ZW50cnlfY291bnQgPCAwKQorCQkJCXRvX2ludmFsaWRhdGUgPSAxOwogCQl9CiAJCWVsc2UgewogCQkJc2hhMSA9IGNlLT5zaGExOwogCQkJbW9kZSA9IGNlLT5jZV9tb2RlOwogCQkJZW50bGVuID0gcGF0aGxlbiAtIGJhc2VsZW47CisJCQlpKys7CiAJCX0KIAkJaWYgKG1vZGUgIT0gU19JRkdJVExJTksgJiYgIW1pc3Npbmdfb2sgJiYgIWhhc19zaGExX2ZpbGUoc2hhMSkpIHsKIAkJCXN0cmJ1Zl9yZWxlYXNlKCZidWZmZXIpOwpAQCAtMzM5LDggKzM0OSwyNSBAQAogCQkJCW1vZGUsIHNoYTFfdG9faGV4KHNoYTEpLCBlbnRsZW4rYmFzZWxlbiwgcGF0aCk7CiAJCX0KIAotCQlpZiAoY2UtPmNlX2ZsYWdzICYgKENFX1JFTU9WRSB8IENFX0lOVEVOVF9UT19BREQpKQotCQkJY29udGludWU7IC8qIGVudHJ5IGJlaW5nIHJlbW92ZWQgb3IgcGxhY2Vob2xkZXIgKi8KKwkJLyoKKwkJICogQ0VfUkVNT1ZFIGVudHJpZXMgYXJlIHJlbW92ZWQgYmVmb3JlIHRoZSBpbmRleCBpcworCQkgKiB3cml0dGVuIHRvIGRpc2suIFNraXAgdGhlbSB0byByZW1haW4gY29uc2lzdGVudAorCQkgKiB3aXRoIHRoZSBmdXR1cmUgb24tZGlzayBpbmRleC4KKwkJICovCisJCWlmIChjZS0+Y2VfZmxhZ3MgJiBDRV9SRU1PVkUpIHsKKwkJCSpza2lwX2NvdW50ID0gKnNraXBfY291bnQgKyAxOworCQkJY29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBDRV9JTlRFTlRfVE9fQUREIGVudHJpZXMgZXhpc3Qgb24gb24tZGlzayBpbmRleCBidXQKKwkJICogdGhleSBhcmUgbm90IHBhcnQgb2YgZ2VuZXJhdGVkIHRyZWVzLiBJbnZhbGlkYXRlIHVwCisJCSAqIHRvIHJvb3QgdG8gZm9yY2UgY2FjaGUtdHJlZSB1c2VycyB0byByZWFkIGVsc2V3aGVyZS4KKwkJICovCisJCWlmIChjZS0+Y2VfZmxhZ3MgJiBDRV9JTlRFTlRfVE9fQUREKSB7CisJCQl0b19pbnZhbGlkYXRlID0gMTsKKwkJCWNvbnRpbnVlOworCQl9CiAKIAkJc3RyYnVmX2dyb3coJmJ1ZmZlciwgZW50bGVuICsgMTAwKTsKIAkJc3RyYnVmX2FkZGYoJmJ1ZmZlciwgIiVvICUuKnMlYyIsIG1vZGUsIGVudGxlbiwgcGF0aCArIGJhc2VsZW4sICdcMCcpOwpAQCAtMzYwLDcgKzM4Nyw3IEBACiAJfQogCiAJc3RyYnVmX3JlbGVhc2UoJmJ1ZmZlcik7Ci0JaXQtPmVudHJ5X2NvdW50ID0gaTsKKwlpdC0+ZW50cnlfY291bnQgPSB0b19pbnZhbGlkYXRlID8gLTEgOiBpIC0gKnNraXBfY291bnQ7CiAjaWYgREVCVUcKIAlmcHJpbnRmKHN0ZGVyciwgImNhY2hlLXRyZWUgdXBkYXRlLW9uZSAoJWQgZW50LCAlZCBzdWJ0cmVlKSAlc1xuIiwKIAkJaXQtPmVudHJ5X2NvdW50LCBpdC0+c3VidHJlZV9uciwKQEAgLTM3NCwxMSArNDAxLDExIEBACiAJCSAgICAgIGludCBlbnRyaWVzLAogCQkgICAgICBpbnQgZmxhZ3MpCiB7Ci0JaW50IGk7CisJaW50IGksIHNraXA7CiAJaSA9IHZlcmlmeV9jYWNoZShjYWNoZSwgZW50cmllcywgZmxhZ3MpOwogCWlmIChpKQogCQlyZXR1cm4gaTsKLQlpID0gdXBkYXRlX29uZShpdCwgY2FjaGUsIGVudHJpZXMsICIiLCAwLCBmbGFncyk7CisJaSA9IHVwZGF0ZV9vbmUoaXQsIGNhY2hlLCBlbnRyaWVzLCAiIiwgMCwgJnNraXAsIGZsYWdzKTsKIAlpZiAoaSA8IDApCiAJCXJldHVybiBpOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvY2FjaGUtdHJlZS5oIGIvY2FjaGUtdHJlZS5oCmluZGV4IGQ4Y2IyZTkuLjU1ZDBmNTkgMTAwNjQ0Ci0tLSBhL2NhY2hlLXRyZWUuaAorKysgYi9jYWNoZS10cmVlLmgKQEAgLTcsNiArNyw3IEBACiBzdHJ1Y3QgY2FjaGVfdHJlZTsKIHN0cnVjdCBjYWNoZV90cmVlX3N1YiB7CiAJc3RydWN0IGNhY2hlX3RyZWUgKmNhY2hlX3RyZWU7CisJaW50IGNvdW50OwkJLyogaW50ZXJuYWxseSB1c2VkIGJ5IHVwZGF0ZV9vbmUoKSAqLwogCWludCBuYW1lbGVuOwogCWludCB1c2VkOwogCWNoYXIgbmFtZVtGTEVYX0FSUkFZXTsKZGlmZiAtLWdpdCBhL2NhY2hlLmggYi9jYWNoZS5oCmluZGV4IDA2NDEzZTEuLjk0Y2ExYWMgMTAwNjQ0Ci0tLSBhL2NhY2hlLmgKKysrIGIvY2FjaGUuaApAQCAtMzQsNiArMzQsNyBAQAogCiB2b2lkIGdpdF9kZWZsYXRlX2luaXQoZ2l0X3pzdHJlYW0gKiwgaW50IGxldmVsKTsKIHZvaWQgZ2l0X2RlZmxhdGVfaW5pdF9nemlwKGdpdF96c3RyZWFtICosIGludCBsZXZlbCk7Cit2b2lkIGdpdF9kZWZsYXRlX2luaXRfcmF3KGdpdF96c3RyZWFtICosIGludCBsZXZlbCk7CiB2b2lkIGdpdF9kZWZsYXRlX2VuZChnaXRfenN0cmVhbSAqKTsKIGludCBnaXRfZGVmbGF0ZV9hYm9ydChnaXRfenN0cmVhbSAqKTsKIGludCBnaXRfZGVmbGF0ZV9lbmRfZ2VudGx5KGdpdF96c3RyZWFtICopOwpAQCAtMTI4LDEzICsxMjksMTIgQEAKIAl1bnNpZ25lZCBpbnQgY2VfZ2lkOwogCXVuc2lnbmVkIGludCBjZV9zaXplOwogCXVuc2lnbmVkIGludCBjZV9mbGFnczsKKwl1bnNpZ25lZCBpbnQgY2VfbmFtZWxlbjsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCXN0cnVjdCBjYWNoZV9lbnRyeSAqbmV4dDsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmRpcl9uZXh0OwogCWNoYXIgbmFtZVtGTEVYX0FSUkFZXTsgLyogbW9yZSAqLwogfTsKIAotI2RlZmluZSBDRV9OQU1FTUFTSyAgKDB4MGZmZikKICNkZWZpbmUgQ0VfU1RBR0VNQVNLICgweDMwMDApCiAjZGVmaW5lIENFX0VYVEVOREVEICAoMHg0MDAwKQogI2RlZmluZSBDRV9WQUxJRCAgICAgKDB4ODAwMCkKQEAgLTE2Miw2ICsxNjIsOSBAQAogI2RlZmluZSBDRV9VTlBBQ0tFRCAgICAgICAgICAoMSA8PCAyNCkKICNkZWZpbmUgQ0VfTkVXX1NLSVBfV09SS1RSRUUgKDEgPDwgMjUpCiAKKy8qIHVzZWQgdG8gdGVtcG9yYXJpbHkgbWFyayBwYXRocyBtYXRjaGVkIGJ5IHBhdGhzcGVjcyAqLworI2RlZmluZSBDRV9NQVRDSEVEICAgICAgICAgICAoMSA8PCAyNikKKwogLyoKICAqIEV4dGVuZGVkIG9uLWRpc2sgZmxhZ3MKICAqLwpAQCAtMTk4LDIxICsyMDEsMTIgQEAKIAlkc3QtPmNlX2ZsYWdzID0gKGRzdC0+Y2VfZmxhZ3MgJiB+Q0VfU1RBVEVfTUFTSykgfCBzdGF0ZTsKIH0KIAotc3RhdGljIGlubGluZSB1bnNpZ25lZCBjcmVhdGVfY2VfZmxhZ3Moc2l6ZV90IGxlbiwgdW5zaWduZWQgc3RhZ2UpCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNyZWF0ZV9jZV9mbGFncyh1bnNpZ25lZCBzdGFnZSkKIHsKLQlpZiAobGVuID49IENFX05BTUVNQVNLKQotCQlsZW4gPSBDRV9OQU1FTUFTSzsKLQlyZXR1cm4gKGxlbiB8IChzdGFnZSA8PCBDRV9TVEFHRVNISUZUKSk7CisJcmV0dXJuIChzdGFnZSA8PCBDRV9TVEFHRVNISUZUKTsKIH0KIAotc3RhdGljIGlubGluZSBzaXplX3QgY2VfbmFtZWxlbihjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlKQotewotCXNpemVfdCBsZW4gPSBjZS0+Y2VfZmxhZ3MgJiBDRV9OQU1FTUFTSzsKLQlpZiAobGVuIDwgQ0VfTkFNRU1BU0spCi0JCXJldHVybiBsZW47Ci0JcmV0dXJuIHN0cmxlbihjZS0+bmFtZSArIENFX05BTUVNQVNLKSArIENFX05BTUVNQVNLOwotfQotCisjZGVmaW5lIGNlX25hbWVsZW4oY2UpICgoY2UpLT5jZV9uYW1lbGVuKQogI2RlZmluZSBjZV9zaXplKGNlKSBjYWNoZV9lbnRyeV9zaXplKGNlX25hbWVsZW4oY2UpKQogI2RlZmluZSBjZV9zdGFnZShjZSkgKChDRV9TVEFHRU1BU0sgJiAoY2UpLT5jZV9mbGFncykgPj4gQ0VfU1RBR0VTSElGVCkKICNkZWZpbmUgY2VfdXB0b2RhdGUoY2UpICgoY2UpLT5jZV9mbGFncyAmIENFX1VQVE9EQVRFKQpAQCAtMjc2LDI1ICsyNzAsMTUgQEAKIAl1bnNpZ25lZCBuYW1lX2hhc2hfaW5pdGlhbGl6ZWQgOiAxLAogCQkgaW5pdGlhbGl6ZWQgOiAxOwogCXN0cnVjdCBoYXNoX3RhYmxlIG5hbWVfaGFzaDsKKwlzdHJ1Y3QgaGFzaF90YWJsZSBkaXJfaGFzaDsKIH07CiAKIGV4dGVybiBzdHJ1Y3QgaW5kZXhfc3RhdGUgdGhlX2luZGV4OwogCiAvKiBOYW1lIGhhc2hpbmcgKi8KIGV4dGVybiB2b2lkIGFkZF9uYW1lX2hhc2goc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUsIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpOwotLyoKLSAqIFdlIGRvbid0IGFjdHVhbGx5ICpyZW1vdmUqIGl0LCB3ZSBjYW4ganVzdCBtYXJrIGl0IGludmFsaWQgc28gdGhhdAotICogd2Ugd29uJ3QgZmluZCBpdCBpbiBsb29rdXBzLgotICoKLSAqIE5vdCBvbmx5IHdvdWxkIHdlIGhhdmUgdG8gc2VhcmNoIHRoZSBsaXN0cyAoc2ltcGxlIGVub3VnaCksIGJ1dAotICogd2UnZCBhbHNvIGhhdmUgdG8gcmVoYXNoIG90aGVyIGhhc2ggYnVja2V0cyBpbiBjYXNlIHRoaXMgbWFrZXMgdGhlCi0gKiBoYXNoIGJ1Y2tldCBlbXB0eSAoY29tbW9uKS4gU28gaXQncyBtdWNoIGJldHRlciB0byBqdXN0IG1hcmsKLSAqIGl0LgotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgcmVtb3ZlX25hbWVfaGFzaChzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlKQotewotCWNlLT5jZV9mbGFncyB8PSBDRV9VTkhBU0hFRDsKLX0KK2V4dGVybiB2b2lkIHJlbW92ZV9uYW1lX2hhc2goc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUsIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpOworZXh0ZXJuIHZvaWQgZnJlZV9uYW1lX2hhc2goc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUpOwogCiAKICNpZm5kZWYgTk9fVEhFX0lOREVYX0NPTVBBVElCSUxJVFlfTUFDUk9TCkBAIC0zMjcsNiArMzExLDcgQEAKICNkZWZpbmUgcmVzb2x2ZV91bmRvX2NsZWFyKCkgcmVzb2x2ZV91bmRvX2NsZWFyX2luZGV4KCZ0aGVfaW5kZXgpCiAjZGVmaW5lIHVubWVyZ2VfY2FjaGVfZW50cnlfYXQoYXQpIHVubWVyZ2VfaW5kZXhfZW50cnlfYXQoJnRoZV9pbmRleCwgYXQpCiAjZGVmaW5lIHVubWVyZ2VfY2FjaGUocGF0aHNwZWMpIHVubWVyZ2VfaW5kZXgoJnRoZV9pbmRleCwgcGF0aHNwZWMpCisjZGVmaW5lIHJlYWRfYmxvYl9kYXRhX2Zyb21fY2FjaGUocGF0aCwgc3opIHJlYWRfYmxvYl9kYXRhX2Zyb21faW5kZXgoJnRoZV9pbmRleCwgKHBhdGgpLCAoc3opKQogI2VuZGlmCiAKIGVudW0gb2JqZWN0X3R5cGUgewpAQCAtMzUwLDkgKzMzNSwxMSBAQAogCQlPQkpfQkxPQjsKIH0KIAorLyogRG91YmxlLWNoZWNrIGxvY2FsX3JlcG9fZW52IGJlbG93IGlmIHlvdSBhZGQgdG8gdGhpcyBsaXN0LiAqLwogI2RlZmluZSBHSVRfRElSX0VOVklST05NRU5UICJHSVRfRElSIgogI2RlZmluZSBHSVRfTkFNRVNQQUNFX0VOVklST05NRU5UICJHSVRfTkFNRVNQQUNFIgogI2RlZmluZSBHSVRfV09SS19UUkVFX0VOVklST05NRU5UICJHSVRfV09SS19UUkVFIgorI2RlZmluZSBHSVRfUFJFRklYX0VOVklST05NRU5UICJHSVRfUFJFRklYIgogI2RlZmluZSBERUZBVUxUX0dJVF9ESVJfRU5WSVJPTk1FTlQgIi5naXQiCiAjZGVmaW5lIERCX0VOVklST05NRU5UICJHSVRfT0JKRUNUX0RJUkVDVE9SWSIKICNkZWZpbmUgSU5ERVhfRU5WSVJPTk1FTlQgIkdJVF9JTkRFWF9GSUxFIgpAQCAtMzcxLDE1ICszNTgsMjcgQEAKICNkZWZpbmUgR0lUX05PVEVTX0RJU1BMQVlfUkVGX0VOVklST05NRU5UICJHSVRfTk9URVNfRElTUExBWV9SRUYiCiAjZGVmaW5lIEdJVF9OT1RFU19SRVdSSVRFX1JFRl9FTlZJUk9OTUVOVCAiR0lUX05PVEVTX1JFV1JJVEVfUkVGIgogI2RlZmluZSBHSVRfTk9URVNfUkVXUklURV9NT0RFX0VOVklST05NRU5UICJHSVRfTk9URVNfUkVXUklURV9NT0RFIgorI2RlZmluZSBHSVRfTElURVJBTF9QQVRIU1BFQ1NfRU5WSVJPTk1FTlQgIkdJVF9MSVRFUkFMX1BBVEhTUEVDUyIKIAogLyoKLSAqIFJlcG9zaXRvcnktbG9jYWwgR0lUXyogZW52aXJvbm1lbnQgdmFyaWFibGVzCi0gKiBUaGUgYXJyYXkgaXMgTlVMTC10ZXJtaW5hdGVkIHRvIHNpbXBsaWZ5IGl0cyB1c2FnZSBpbiBjb250ZXh0cyBzdWNoCi0gKiBlbnZpcm9ubWVudCBjcmVhdGlvbiBvciBzaW1wbGUgd2FsayBvZiB0aGUgbGlzdC4KLSAqIFRoZSBudW1iZXIgb2Ygbm9uLU5VTEwgZW50cmllcyBpcyBhdmFpbGFibGUgYXMgYSBtYWNyby4KKyAqIFRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgZXhwZWN0ZWQgdG8gY29udGFpbiBhIGJvb2xlYW4gaW5kaWNhdGluZworICogd2hldGhlciB3ZSBzaG91bGQgb3Igc2hvdWxkIG5vdCB0cmVhdDoKKyAqCisgKiAgIEdJVF9ESVI9Zm9vLmdpdCBnaXQgLi4uCisgKgorICogYXMgaWYgR0lUX1dPUktfVFJFRT0uIHdhcyBnaXZlbi4gSXQncyBub3QgZXhwZWN0ZWQgdGhhdCB1c2VycyB3aWxsIG1ha2UgdXNlCisgKiBvZiB0aGlzLCBidXQgd2UgdXNlIGl0IGludGVybmFsbHkgdG8gY29tbXVuaWNhdGUgdG8gc3ViLXByb2Nlc3NlcyB0aGF0IHdlCisgKiBhcmUgaW4gYSBiYXJlIHJlcG8uIElmIG5vdCBzZXQsIGRlZmF1bHRzIHRvIHRydWUuCiAgKi8KLSNkZWZpbmUgTE9DQUxfUkVQT19FTlZfU0laRSA5Ci1leHRlcm4gY29uc3QgY2hhciAqY29uc3QgbG9jYWxfcmVwb19lbnZbTE9DQUxfUkVQT19FTlZfU0laRSArIDFdOworI2RlZmluZSBHSVRfSU1QTElDSVRfV09SS19UUkVFX0VOVklST05NRU5UICJHSVRfSU1QTElDSVRfV09SS19UUkVFIgorCisvKgorICogUmVwb3NpdG9yeS1sb2NhbCBHSVRfKiBlbnZpcm9ubWVudCB2YXJpYWJsZXM7IHRoZXNlIHdpbGwgYmUgY2xlYXJlZAorICogd2hlbiBnaXQgc3Bhd25zIGEgc3ViLXByb2Nlc3MgdGhhdCBydW5zIGluc2lkZSBhbm90aGVyIHJlcG9zaXRvcnkuCisgKiBUaGUgYXJyYXkgaXMgTlVMTC10ZXJtaW5hdGVkLCB3aGljaCBtYWtlcyBpdCBlYXN5IHRvIHBhc3MgaW4gdGhlICJlbnYiCisgKiBwYXJhbWV0ZXIgb2YgYSBydW4tY29tbWFuZCBpbnZvY2F0aW9uLCBvciB0byBkbyBhIHNpbXBsZSB3YWxrLgorICovCitleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IGxvY2FsX3JlcG9fZW52W107CiAKIGV4dGVybiBpbnQgaXNfYmFyZV9yZXBvc2l0b3J5X2NmZzsKIGV4dGVybiBpbnQgaXNfYmFyZV9yZXBvc2l0b3J5KHZvaWQpOwpAQCAtNDA5LDggKzQwOCwxMSBAQAogZXh0ZXJuIGNoYXIgKnByZWZpeF9wYXRoKGNvbnN0IGNoYXIgKnByZWZpeCwgaW50IGxlbiwgY29uc3QgY2hhciAqcGF0aCk7CiBleHRlcm4gY29uc3QgY2hhciAqcHJlZml4X2ZpbGVuYW1lKGNvbnN0IGNoYXIgKnByZWZpeCwgaW50IGxlbiwgY29uc3QgY2hhciAqcGF0aCk7CiBleHRlcm4gaW50IGNoZWNrX2ZpbGVuYW1lKGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3QgY2hhciAqbmFtZSk7Ci1leHRlcm4gdm9pZCB2ZXJpZnlfZmlsZW5hbWUoY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpuYW1lKTsKK2V4dGVybiB2b2lkIHZlcmlmeV9maWxlbmFtZShjb25zdCBjaGFyICpwcmVmaXgsCisJCQkgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJCSAgICBpbnQgZGlhZ25vc2VfbWlzc3BlbHRfcmV2KTsKIGV4dGVybiB2b2lkIHZlcmlmeV9ub25fZmlsZW5hbWUoY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpuYW1lKTsKK2V4dGVybiBpbnQgcGF0aF9pbnNpZGVfcmVwbyhjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKnBhdGgpOwogCiAjZGVmaW5lIElOSVRfREJfUVVJRVQgMHgwMDAxCiAKQEAgLTQ2NCwxMSArNDY2LDEzIEBACiAjZGVmaW5lIEFERF9DQUNIRV9JR05PUkVfRVJST1JTCTQKICNkZWZpbmUgQUREX0NBQ0hFX0lHTk9SRV9SRU1PVkFMIDgKICNkZWZpbmUgQUREX0NBQ0hFX0lOVEVOVCAxNgorI2RlZmluZSBBRERfQ0FDSEVfSU1QTElDSVRfRE9UIDMyCS8qIGludGVybmFsIHRvICJnaXQgYWRkIC11Ly1BIiAqLwogZXh0ZXJuIGludCBhZGRfdG9faW5kZXgoc3RydWN0IGluZGV4X3N0YXRlICosIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICosIGludCBmbGFncyk7CiBleHRlcm4gaW50IGFkZF9maWxlX3RvX2luZGV4KHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpOwogZXh0ZXJuIHN0cnVjdCBjYWNoZV9lbnRyeSAqbWFrZV9jYWNoZV9lbnRyeSh1bnNpZ25lZCBpbnQgbW9kZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqcGF0aCwgaW50IHN0YWdlLCBpbnQgcmVmcmVzaCk7CiBleHRlcm4gaW50IGNlX3NhbWVfbmFtZShzdHJ1Y3QgY2FjaGVfZW50cnkgKmEsIHN0cnVjdCBjYWNoZV9lbnRyeSAqYik7CiBleHRlcm4gaW50IGluZGV4X25hbWVfaXNfb3RoZXIoY29uc3Qgc3RydWN0IGluZGV4X3N0YXRlICosIGNvbnN0IGNoYXIgKiwgaW50KTsKK2V4dGVybiB2b2lkICpyZWFkX2Jsb2JfZGF0YV9mcm9tX2luZGV4KHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBjb25zdCBjaGFyICosIHVuc2lnbmVkIGxvbmcgKik7CiAKIC8qIGRvIHN0YXQgY29tcGFyaXNvbiBldmVuIGlmIENFX1ZBTElEIGlzIHRydWUgKi8KICNkZWZpbmUgQ0VfTUFUQ0hfSUdOT1JFX1ZBTElECQkwMQpAQCAtNDc5LDYgKzQ4Myw4IEBACiBleHRlcm4gaW50IGllX21hdGNoX3N0YXQoY29uc3Qgc3RydWN0IGluZGV4X3N0YXRlICosIHN0cnVjdCBjYWNoZV9lbnRyeSAqLCBzdHJ1Y3Qgc3RhdCAqLCB1bnNpZ25lZCBpbnQpOwogZXh0ZXJuIGludCBpZV9tb2RpZmllZChjb25zdCBzdHJ1Y3QgaW5kZXhfc3RhdGUgKiwgc3RydWN0IGNhY2hlX2VudHJ5ICosIHN0cnVjdCBzdGF0ICosIHVuc2lnbmVkIGludCk7CiAKKyNkZWZpbmUgUEFUSFNQRUNfT05FU1RBUiAxCS8qIHRoZSBwYXRoc3BlYyBwYXR0ZXJuIHNhc3Rpc2ZpZXMgR0ZOTV9PTkVTVEFSICovCisKIHN0cnVjdCBwYXRoc3BlYyB7CiAJY29uc3QgY2hhciAqKnJhdzsgLyogZ2V0X3BhdGhzcGVjKCkgcmVzdWx0LCBub3QgZnJlZWQgYnkgZnJlZV9wYXRoc3BlYygpICovCiAJaW50IG5yOwpAQCAtNDg4LDcgKzQ5NCw4IEBACiAJc3RydWN0IHBhdGhzcGVjX2l0ZW0gewogCQljb25zdCBjaGFyICptYXRjaDsKIAkJaW50IGxlbjsKLQkJdW5zaWduZWQgaW50IHVzZV93aWxkY2FyZDoxOworCQlpbnQgbm93aWxkY2FyZF9sZW47CisJCWludCBmbGFnczsKIAl9ICppdGVtczsKIH07CiAKQEAgLTQ5Niw2ICs1MDMsOCBAQAogZXh0ZXJuIHZvaWQgZnJlZV9wYXRoc3BlYyhzdHJ1Y3QgcGF0aHNwZWMgKik7CiBleHRlcm4gaW50IGNlX3BhdGhfbWF0Y2goY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgY29uc3Qgc3RydWN0IHBhdGhzcGVjICpwYXRoc3BlYyk7CiAKK2V4dGVybiBpbnQgbGltaXRfcGF0aHNwZWNfdG9fbGl0ZXJhbCh2b2lkKTsKKwogI2RlZmluZSBIQVNIX1dSSVRFX09CSkVDVCAxCiAjZGVmaW5lIEhBU0hfRk9STUFUX0NIRUNLIDIKIGV4dGVybiBpbnQgaW5kZXhfZmQodW5zaWduZWQgY2hhciAqc2hhMSwgaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QsIGVudW0gb2JqZWN0X3R5cGUgdHlwZSwgY29uc3QgY2hhciAqcGF0aCwgdW5zaWduZWQgZmxhZ3MpOwpAQCAtNTM2LDYgKzU0NSw3IEBACiAvKiBFbnZpcm9ubWVudCBiaXRzIGZyb20gY29uZmlndXJhdGlvbiBtZWNoYW5pc20gKi8KIGV4dGVybiBpbnQgdHJ1c3RfZXhlY3V0YWJsZV9iaXQ7CiBleHRlcm4gaW50IHRydXN0X2N0aW1lOworZXh0ZXJuIGludCBjaGVja19zdGF0OwogZXh0ZXJuIGludCBxdW90ZV9wYXRoX2Z1bGx5OwogZXh0ZXJuIGludCBoYXNfc3ltbGlua3M7CiBleHRlcm4gaW50IG1pbmltdW1fYWJicmV2LCBkZWZhdWx0X2FiYnJldjsKQEAgLTU2MCw2ICs1NzAsMTMgQEAKIGV4dGVybiBpbnQgZnN5bmNfb2JqZWN0X2ZpbGVzOwogZXh0ZXJuIGludCBjb3JlX3ByZWxvYWRfaW5kZXg7CiBleHRlcm4gaW50IGNvcmVfYXBwbHlfc3BhcnNlX2NoZWNrb3V0OworZXh0ZXJuIGludCBwcmVjb21wb3NlZF91bmljb2RlOworCisvKgorICogVGhlIGNoYXJhY3RlciB0aGF0IGJlZ2lucyBhIGNvbW1lbnRlZCBsaW5lIGluIHVzZXItZWRpdGFibGUgZmlsZQorICogdGhhdCBpcyBzdWJqZWN0IHRvIHN0cmlwc3BhY2UuCisgKi8KK2V4dGVybiBjaGFyIGNvbW1lbnRfbGluZV9jaGFyOwogCiBlbnVtIGJyYW5jaF90cmFjayB7CiAJQlJBTkNIX1RSQUNLX1VOU1BFQ0lGSUVEID0gLTEsCkBAIC02MTksNiArNjM2LDggQEAKIAlfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKIGV4dGVybiBjaGFyICpnaXRfcGF0aGR1cChjb25zdCBjaGFyICpmbXQsIC4uLikKIAlfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwgMSwgMikpKTsKK2V4dGVybiBjaGFyICpta3BhdGhkdXAoY29uc3QgY2hhciAqZm10LCAuLi4pCisJX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsIDEsIDIpKSk7CiAKIC8qIFJldHVybiBhIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGZpbGVuYW1lIG1hdGNoaW5nIHRoZSBzaGExIHNpZ25hdHVyZSAqLwogZXh0ZXJuIGNoYXIgKm1rcGF0aChjb25zdCBjaGFyICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsIDEsIDIpKSk7CkBAIC03MDMsMTEgKzcyMiwxMSBAQAogCVBFUk1fRVZFUllCT0RZICAgICAgPSAwNjY0CiB9OwogaW50IGdpdF9jb25maWdfcGVybShjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlKTsKLWludCBzZXRfc2hhcmVkX3Blcm0oY29uc3QgY2hhciAqcGF0aCwgaW50IG1vZGUpOwotI2RlZmluZSBhZGp1c3Rfc2hhcmVkX3Blcm0ocGF0aCkgc2V0X3NoYXJlZF9wZXJtKChwYXRoKSwgMCkKK2ludCBhZGp1c3Rfc2hhcmVkX3Blcm0oY29uc3QgY2hhciAqcGF0aCk7CiBpbnQgc2FmZV9jcmVhdGVfbGVhZGluZ19kaXJlY3RvcmllcyhjaGFyICpwYXRoKTsKIGludCBzYWZlX2NyZWF0ZV9sZWFkaW5nX2RpcmVjdG9yaWVzX2NvbnN0KGNvbnN0IGNoYXIgKnBhdGgpOwogaW50IG1rZGlyX2luX2dpdGRpcihjb25zdCBjaGFyICpwYXRoKTsKK2V4dGVybiB2b2lkIGhvbWVfY29uZmlnX3BhdGhzKGNoYXIgKipnbG9iYWwsIGNoYXIgKip4ZGcsIGNoYXIgKmZpbGUpOwogZXh0ZXJuIGNoYXIgKmV4cGFuZF91c2VyX3BhdGgoY29uc3QgY2hhciAqcGF0aCk7CiBjb25zdCBjaGFyICplbnRlcl9yZXBvKGNvbnN0IGNoYXIgKnBhdGgsIGludCBzdHJpY3QpOwogc3RhdGljIGlubGluZSBpbnQgaXNfYWJzb2x1dGVfcGF0aChjb25zdCBjaGFyICpwYXRoKQpAQCAtNzE2LDEwICs3MzUsMTEgQEAKIH0KIGludCBpc19kaXJlY3RvcnkoY29uc3QgY2hhciAqKTsKIGNvbnN0IGNoYXIgKnJlYWxfcGF0aChjb25zdCBjaGFyICpwYXRoKTsKK2NvbnN0IGNoYXIgKnJlYWxfcGF0aF9pZl92YWxpZChjb25zdCBjaGFyICpwYXRoKTsKIGNvbnN0IGNoYXIgKmFic29sdXRlX3BhdGgoY29uc3QgY2hhciAqcGF0aCk7CiBjb25zdCBjaGFyICpyZWxhdGl2ZV9wYXRoKGNvbnN0IGNoYXIgKmFicywgY29uc3QgY2hhciAqYmFzZSk7CiBpbnQgbm9ybWFsaXplX3BhdGhfY29weShjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYyk7Ci1pbnQgbG9uZ2VzdF9hbmNlc3Rvcl9sZW5ndGgoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqcHJlZml4X2xpc3QpOworaW50IGxvbmdlc3RfYW5jZXN0b3JfbGVuZ3RoKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdHJpbmdfbGlzdCAqcHJlZml4ZXMpOwogY2hhciAqc3RyaXBfcGF0aF9zdWZmaXgoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqc3VmZml4KTsKIGludCBkYWVtb25fYXZvaWRfYWxpYXMoY29uc3QgY2hhciAqcGF0aCk7CiBpbnQgb2Zmc2V0XzFzdF9jb21wb25lbnQoY29uc3QgY2hhciAqcGF0aCk7CkBAIC03ODMsMTcgKzgwMywyNSBAQAogCXVuc2lnbmVkIG1vZGU7CiB9OwogCisjZGVmaW5lIEdFVF9TSEExX1FVSUVUTFkgICAgICAgIDAxCisjZGVmaW5lIEdFVF9TSEExX0NPTU1JVCAgICAgICAgIDAyCisjZGVmaW5lIEdFVF9TSEExX0NPTU1JVFRJU0ggICAgIDA0CisjZGVmaW5lIEdFVF9TSEExX1RSRUUgICAgICAgICAgMDEwCisjZGVmaW5lIEdFVF9TSEExX1RSRUVJU0ggICAgICAgMDIwCisjZGVmaW5lIEdFVF9TSEExX0JMT0IJICAgICAgIDA0MAorI2RlZmluZSBHRVRfU0hBMV9PTkxZX1RPX0RJRSAwNDAwMAorCiBleHRlcm4gaW50IGdldF9zaGExKGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgY2hhciAqc2hhMSk7Ci1leHRlcm4gaW50IGdldF9zaGExX3dpdGhfbW9kZV8xKGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgY2hhciAqc2hhMSwgdW5zaWduZWQgKm1vZGUsIGludCBvbmx5X3RvX2RpZSwgY29uc3QgY2hhciAqcHJlZml4KTsKLXN0YXRpYyBpbmxpbmUgaW50IGdldF9zaGExX3dpdGhfbW9kZShjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGNoYXIgKnNoYTEsIHVuc2lnbmVkICptb2RlKQotewotCXJldHVybiBnZXRfc2hhMV93aXRoX21vZGVfMShzdHIsIHNoYTEsIG1vZGUsIDAsIE5VTEwpOwotfQotZXh0ZXJuIGludCBnZXRfc2hhMV93aXRoX2NvbnRleHRfMShjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBjaGFyICpzaGExLCBzdHJ1Y3Qgb2JqZWN0X2NvbnRleHQgKm9yYywgaW50IG9ubHlfdG9fZGllLCBjb25zdCBjaGFyICpwcmVmaXgpOwotc3RhdGljIGlubGluZSBpbnQgZ2V0X3NoYTFfd2l0aF9jb250ZXh0KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgY2hhciAqc2hhMSwgc3RydWN0IG9iamVjdF9jb250ZXh0ICpvcmMpCi17Ci0JcmV0dXJuIGdldF9zaGExX3dpdGhfY29udGV4dF8xKHN0ciwgc2hhMSwgb3JjLCAwLCBOVUxMKTsKLX0KK2V4dGVybiBpbnQgZ2V0X3NoYTFfY29tbWl0KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgY2hhciAqc2hhMSk7CitleHRlcm4gaW50IGdldF9zaGExX2NvbW1pdHRpc2goY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBjaGFyICpzaGExKTsKK2V4dGVybiBpbnQgZ2V0X3NoYTFfdHJlZShjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGNoYXIgKnNoYTEpOworZXh0ZXJuIGludCBnZXRfc2hhMV90cmVlaXNoKGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgY2hhciAqc2hhMSk7CitleHRlcm4gaW50IGdldF9zaGExX2Jsb2IoY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBjaGFyICpzaGExKTsKK2V4dGVybiB2b2lkIG1heWJlX2RpZV9vbl9taXNzcGVsdF9vYmplY3RfbmFtZShjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpwcmVmaXgpOworZXh0ZXJuIGludCBnZXRfc2hhMV93aXRoX2NvbnRleHQoY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBmbGFncywgdW5zaWduZWQgY2hhciAqc2hhMSwgc3RydWN0IG9iamVjdF9jb250ZXh0ICpvcmMpOworCit0eXBlZGVmIGludCBlYWNoX2FiYnJldl9mbihjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCB2b2lkICopOworZXh0ZXJuIGludCBmb3JfZWFjaF9hYmJyZXYoY29uc3QgY2hhciAqcHJlZml4LCBlYWNoX2FiYnJldl9mbiwgdm9pZCAqKTsKIAogLyoKICAqIFRyeSB0byByZWFkIGEgU0hBMSBpbiBoZXhhZGVjaW1hbCBmb3JtYXQgZnJvbSB0aGUgNDAgY2hhcmFjdGVycwpAQCAtODU3LDYgKzg4NSw3IEBACiBleHRlcm4gaW50IGJhc2VfbmFtZV9jb21wYXJlKGNvbnN0IGNoYXIgKm5hbWUxLCBpbnQgbGVuMSwgaW50IG1vZGUxLCBjb25zdCBjaGFyICpuYW1lMiwgaW50IGxlbjIsIGludCBtb2RlMik7CiBleHRlcm4gaW50IGRmX25hbWVfY29tcGFyZShjb25zdCBjaGFyICpuYW1lMSwgaW50IGxlbjEsIGludCBtb2RlMSwgY29uc3QgY2hhciAqbmFtZTIsIGludCBsZW4yLCBpbnQgbW9kZTIpOwogZXh0ZXJuIGludCBjYWNoZV9uYW1lX2NvbXBhcmUoY29uc3QgY2hhciAqbmFtZTEsIGludCBsZW4xLCBjb25zdCBjaGFyICpuYW1lMiwgaW50IGxlbjIpOworZXh0ZXJuIGludCBjYWNoZV9uYW1lX3N0YWdlX2NvbXBhcmUoY29uc3QgY2hhciAqbmFtZTEsIGludCBsZW4xLCBpbnQgc3RhZ2UxLCBjb25zdCBjaGFyICpuYW1lMiwgaW50IGxlbjIsIGludCBzdGFnZTIpOwogCiBleHRlcm4gdm9pZCAqcmVhZF9vYmplY3Rfd2l0aF9yZWZlcmVuY2UoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKIAkJCQkJY29uc3QgY2hhciAqcmVxdWlyZWRfdHlwZSwKQEAgLTg5NCw5ICs5MjMsNyBAQAogZXh0ZXJuIGNvbnN0IGNoYXIgKmdpdF9jb21taXR0ZXJfaW5mbyhpbnQpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmZtdF9pZGVudChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICplbWFpbCwgY29uc3QgY2hhciAqZGF0ZV9zdHIsIGludCk7CiBleHRlcm4gY29uc3QgY2hhciAqZm10X25hbWUoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZW1haWwpOwotZXh0ZXJuIGNvbnN0IGNoYXIgKmlkZW50X2RlZmF1bHRfbmFtZSh2b2lkKTsKIGV4dGVybiBjb25zdCBjaGFyICppZGVudF9kZWZhdWx0X2VtYWlsKHZvaWQpOwotZXh0ZXJuIGNvbnN0IGNoYXIgKmlkZW50X2RlZmF1bHRfZGF0ZSh2b2lkKTsKIGV4dGVybiBjb25zdCBjaGFyICpnaXRfZWRpdG9yKHZvaWQpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmdpdF9wYWdlcihpbnQgc3Rkb3V0X2lzX3R0eSk7CiBleHRlcm4gaW50IGdpdF9pZGVudF9jb25maWcoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZvaWQgKik7CkBAIC05MzksOSArOTY2LDcgQEAKIGV4dGVybiBpbnQgaGFzX3N5bWxpbmtfbGVhZGluZ19wYXRoKGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4pOwogZXh0ZXJuIGludCB0aHJlYWRlZF9oYXNfc3ltbGlua19sZWFkaW5nX3BhdGgoc3RydWN0IGNhY2hlX2RlZiAqLCBjb25zdCBjaGFyICosIGludCk7CiBleHRlcm4gaW50IGNoZWNrX2xlYWRpbmdfcGF0aChjb25zdCBjaGFyICpuYW1lLCBpbnQgbGVuKTsKLWV4dGVybiBpbnQgdGhyZWFkZWRfY2hlY2tfbGVhZGluZ19wYXRoKHN0cnVjdCBjYWNoZV9kZWYgKmNhY2hlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbGVuKTsKIGV4dGVybiBpbnQgaGFzX2RpcnNfb25seV9wYXRoKGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4sIGludCBwcmVmaXhfbGVuKTsKLWV4dGVybiBpbnQgdGhyZWFkZWRfaGFzX2RpcnNfb25seV9wYXRoKHN0cnVjdCBjYWNoZV9kZWYgKmNhY2hlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbGVuLCBpbnQgcHJlZml4X2xlbik7CiBleHRlcm4gdm9pZCBzY2hlZHVsZV9kaXJfZm9yX3JlbW92YWwoY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbik7CiBleHRlcm4gdm9pZCByZW1vdmVfc2NoZWR1bGVkX2RpcnModm9pZCk7CiAKQEAgLTk5NiwxNSArMTAyMSwyMCBAQAogCXVuc2lnbmVkIGNoYXIgb2xkX3NoYTFbMjBdOwogCXVuc2lnbmVkIGNoYXIgbmV3X3NoYTFbMjBdOwogCWNoYXIgKnN5bXJlZjsKLQl1bnNpZ25lZCBpbnQgZm9yY2U6MSwKKwl1bnNpZ25lZCBpbnQKKwkJZm9yY2U6MSwKKwkJZm9yY2VkX3VwZGF0ZToxLAogCQltZXJnZToxLAotCQlub25mYXN0Zm9yd2FyZDoxLAotCQlkZWxldGlvbjoxOworCQlkZWxldGlvbjoxLAorCQltYXRjaGVkOjE7CiAJZW51bSB7CiAJCVJFRl9TVEFUVVNfTk9ORSA9IDAsCiAJCVJFRl9TVEFUVVNfT0ssCiAJCVJFRl9TVEFUVVNfUkVKRUNUX05PTkZBU1RGT1JXQVJELAorCQlSRUZfU1RBVFVTX1JFSkVDVF9BTFJFQURZX0VYSVNUUywKIAkJUkVGX1NUQVRVU19SRUpFQ1RfTk9ERUxFVEUsCisJCVJFRl9TVEFUVVNfUkVKRUNUX0ZFVENIX0ZJUlNULAorCQlSRUZfU1RBVFVTX1JFSkVDVF9ORUVEU19GT1JDRSwKIAkJUkVGX1NUQVRVU19VUFRPREFURSwKIAkJUkVGX1NUQVRVU19SRU1PVEVfUkVKRUNULAogCQlSRUZfU1RBVFVTX0VYUEVDVElOR19SRVBPUlQKQEAgLTEwMjgsMTIgKzEwNTgsMTkgQEAKIAlpbnQgbnIsIGFsbG9jOwogCXVuc2lnbmVkIGNoYXIgKCphcnJheSlbMjBdOwogfTsKLWV4dGVybiBzdHJ1Y3QgcmVmICoqZ2V0X3JlbW90ZV9oZWFkcyhpbnQgaW4sIHN0cnVjdCByZWYgKipsaXN0LCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBleHRyYV9oYXZlX29iamVjdHMgKik7CitleHRlcm4gc3RydWN0IHJlZiAqKmdldF9yZW1vdGVfaGVhZHMoaW50IGluLCBjaGFyICpzcmNfYnVmLCBzaXplX3Qgc3JjX2xlbiwKKwkJCQkgICAgIHN0cnVjdCByZWYgKipsaXN0LCB1bnNpZ25lZCBpbnQgZmxhZ3MsCisJCQkJICAgICBzdHJ1Y3QgZXh0cmFfaGF2ZV9vYmplY3RzICopOwogZXh0ZXJuIGludCBzZXJ2ZXJfc3VwcG9ydHMoY29uc3QgY2hhciAqZmVhdHVyZSk7Ci1leHRlcm4gY29uc3QgY2hhciAqcGFyc2VfZmVhdHVyZV9yZXF1ZXN0KGNvbnN0IGNoYXIgKmZlYXR1cmVzLCBjb25zdCBjaGFyICpmZWF0dXJlKTsKK2V4dGVybiBpbnQgcGFyc2VfZmVhdHVyZV9yZXF1ZXN0KGNvbnN0IGNoYXIgKmZlYXR1cmVzLCBjb25zdCBjaGFyICpmZWF0dXJlKTsKK2V4dGVybiBjb25zdCBjaGFyICpzZXJ2ZXJfZmVhdHVyZV92YWx1ZShjb25zdCBjaGFyICpmZWF0dXJlLCBpbnQgKmxlbl9yZXQpOworZXh0ZXJuIGNvbnN0IGNoYXIgKnBhcnNlX2ZlYXR1cmVfdmFsdWUoY29uc3QgY2hhciAqZmVhdHVyZV9saXN0LCBjb25zdCBjaGFyICpmZWF0dXJlLCBpbnQgKmxlbl9yZXQpOwogCiBleHRlcm4gc3RydWN0IHBhY2tlZF9naXQgKnBhcnNlX3BhY2tfaW5kZXgodW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqaWR4X3BhdGgpOwogCisvKiBBIGhvb2sgZm9yIGNvdW50LW9iamVjdHMgdG8gcmVwb3J0IGludmFsaWQgZmlsZXMgaW4gcGFjayBkaXJlY3RvcnkgKi8KK2V4dGVybiB2b2lkICgqcmVwb3J0X2dhcmJhZ2UpKGNvbnN0IGNoYXIgKmRlc2MsIGNvbnN0IGNoYXIgKnBhdGgpOworCiBleHRlcm4gdm9pZCBwcmVwYXJlX3BhY2tlZF9naXQodm9pZCk7CiBleHRlcm4gdm9pZCByZXByZXBhcmVfcGFja2VkX2dpdCh2b2lkKTsKIGV4dGVybiB2b2lkIGluc3RhbGxfcGFja2VkX2dpdChzdHJ1Y3QgcGFja2VkX2dpdCAqcGFjayk7CkBAIC0xMTAwLDYgKzExMzcsNyBAQAogI2RlZmluZSBDT05GSUdfTk9fV1JJVEUgNAogI2RlZmluZSBDT05GSUdfTk9USElOR19TRVQgNQogI2RlZmluZSBDT05GSUdfSU5WQUxJRF9QQVRURVJOIDYKKyNkZWZpbmUgQ09ORklHX0dFTkVSSUNfRVJST1IgNwogCiB0eXBlZGVmIGludCAoKmNvbmZpZ19mbl90KShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKIGV4dGVybiBpbnQgZ2l0X2RlZmF1bHRfY29uZmlnKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB2b2lkICopOwpAQCAtMTEzMCw2ICsxMTY4LDkgQEAKIGV4dGVybiBpbnQgZ2l0X2Vudl9ib29sKGNvbnN0IGNoYXIgKiwgaW50KTsKIGV4dGVybiBpbnQgZ2l0X2NvbmZpZ19zeXN0ZW0odm9pZCk7CiBleHRlcm4gaW50IGNvbmZpZ19lcnJvcl9ub25ib29sKGNvbnN0IGNoYXIgKik7CisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgISBkZWZpbmVkKF9fY2xhbmdfXykKKyNkZWZpbmUgY29uZmlnX2Vycm9yX25vbmJvb2wocykgKGNvbmZpZ19lcnJvcl9ub25ib29sKHMpLCAtMSkKKyNlbmRpZgogZXh0ZXJuIGNvbnN0IGNoYXIgKmdldF9sb2dfb3V0cHV0X2VuY29kaW5nKHZvaWQpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmdldF9jb21taXRfb3V0cHV0X2VuY29kaW5nKHZvaWQpOwogCkBAIC0xMTQzLDE1ICsxMTg0LDI4IEBACiAjZGVmaW5lIENPTkZJR19JTkNMVURFX0lOSVQgeyAwIH0KIGV4dGVybiBpbnQgZ2l0X2NvbmZpZ19pbmNsdWRlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpkYXRhKTsKIAotI2RlZmluZSBJREVOVF9OQU1FX0dJVkVOIDAxCi0jZGVmaW5lIElERU5UX01BSUxfR0lWRU4gMDIKLSNkZWZpbmUgSURFTlRfQUxMX0dJVkVOIChJREVOVF9OQU1FX0dJVkVOfElERU5UX01BSUxfR0lWRU4pCi1leHRlcm4gaW50IHVzZXJfaWRlbnRfZXhwbGljaXRseV9naXZlbjsKLWV4dGVybiBpbnQgdXNlcl9pZGVudF9zdWZmaWNpZW50bHlfZ2l2ZW4odm9pZCk7CisvKgorICogTWF0Y2ggYW5kIHBhcnNlIGEgY29uZmlnIGtleSBvZiB0aGUgZm9ybToKKyAqCisgKiAgIHNlY3Rpb24uKHN1YnNlY3Rpb24uKT9rZXkKKyAqCisgKiAoaS5lLiwgd2hhdCBnZXRzIGhhbmRlZCB0byBhIGNvbmZpZ19mbl90KS4gVGhlIGNhbGxlciBwcm92aWRlcyB0aGUgc2VjdGlvbjsKKyAqIHdlIHJldHVybiAtMSBpZiBpdCBkb2VzIG5vdCBtYXRjaCwgMCBvdGhlcndpc2UuIFRoZSBzdWJzZWN0aW9uIGFuZCBrZXkKKyAqIG91dC1wYXJhbWV0ZXJzIGFyZSBmaWxsZWQgYnkgdGhlIGZ1bmN0aW9uIChhbmQgc3Vic2VjdGlvbiBpcyBOVUxMIGlmIGl0IGlzCisgKiBtaXNzaW5nKS4KKyAqLworZXh0ZXJuIGludCBwYXJzZV9jb25maWdfa2V5KGNvbnN0IGNoYXIgKnZhciwKKwkJCSAgICBjb25zdCBjaGFyICpzZWN0aW9uLAorCQkJICAgIGNvbnN0IGNoYXIgKipzdWJzZWN0aW9uLCBpbnQgKnN1YnNlY3Rpb25fbGVuLAorCQkJICAgIGNvbnN0IGNoYXIgKiprZXkpOworCitleHRlcm4gaW50IGNvbW1pdHRlcl9pZGVudF9zdWZmaWNpZW50bHlfZ2l2ZW4odm9pZCk7CitleHRlcm4gaW50IGF1dGhvcl9pZGVudF9zdWZmaWNpZW50bHlfZ2l2ZW4odm9pZCk7CiAKIGV4dGVybiBjb25zdCBjaGFyICpnaXRfY29tbWl0X2VuY29kaW5nOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmdpdF9sb2dfb3V0cHV0X2VuY29kaW5nOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmdpdF9tYWlsbWFwX2ZpbGU7CitleHRlcm4gY29uc3QgY2hhciAqZ2l0X21haWxtYXBfYmxvYjsKIAogLyogSU8gaGVscGVyIGZ1bmN0aW9ucyAqLwogZXh0ZXJuIHZvaWQgbWF5YmVfZmx1c2hfb3JfZGllKEZJTEUgKiwgY29uc3QgY2hhciAqKTsKQEAgLTExNzcsNiArMTIzMSw3IEBACiBleHRlcm4gaW50IHBhZ2VyX3VzZV9jb2xvcjsKIGV4dGVybiBpbnQgdGVybV9jb2x1bW5zKHZvaWQpOwogZXh0ZXJuIGludCBkZWNpbWFsX3dpZHRoKGludCk7CitleHRlcm4gaW50IGNoZWNrX3BhZ2VyX2NvbmZpZyhjb25zdCBjaGFyICpjbWQpOwogCiBleHRlcm4gY29uc3QgY2hhciAqZWRpdG9yX3Byb2dyYW07CiBleHRlcm4gY29uc3QgY2hhciAqYXNrcGFzc19wcm9ncmFtOwpAQCAtMTE5Nyw3ICsxMjUyLDYgQEAKIC8qIHRyYWNlLmMgKi8KIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpCiBleHRlcm4gdm9pZCB0cmFjZV9wcmludGYoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwotZXh0ZXJuIHZvaWQgdHJhY2VfdnByaW50Zihjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcCk7CiBfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwgMiwgMykpKQogZXh0ZXJuIHZvaWQgdHJhY2VfYXJndl9wcmludGYoY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKIGV4dGVybiB2b2lkIHRyYWNlX3JlcG9fc2V0dXAoY29uc3QgY2hhciAqcHJlZml4KTsKQEAgLTEyNjAsOCArMTMxNCwxNSBAQAogfTsKIGV4dGVybiBzdHJ1Y3Qgc3RhcnR1cF9pbmZvICpzdGFydHVwX2luZm87CiAKLS8qIGJ1aWx0aW4vbWVyZ2UuYyAqLwotaW50IGNoZWNrb3V0X2Zhc3RfZm9yd2FyZChjb25zdCB1bnNpZ25lZCBjaGFyICpmcm9tLCBjb25zdCB1bnNpZ25lZCBjaGFyICp0byk7CisvKiBtZXJnZS5jICovCitzdHJ1Y3QgY29tbWl0X2xpc3Q7CitpbnQgdHJ5X21lcmdlX2NvbW1hbmQoY29uc3QgY2hhciAqc3RyYXRlZ3ksIHNpemVfdCB4b3B0c19uciwKKwkJY29uc3QgY2hhciAqKnhvcHRzLCBzdHJ1Y3QgY29tbWl0X2xpc3QgKmNvbW1vbiwKKwkJY29uc3QgY2hhciAqaGVhZF9hcmcsIHN0cnVjdCBjb21taXRfbGlzdCAqcmVtb3Rlcyk7CitpbnQgY2hlY2tvdXRfZmFzdF9mb3J3YXJkKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmZyb20sCisJCQkgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRvLAorCQkJICBpbnQgb3ZlcndyaXRlX2lnbm9yZSk7CisKIAogaW50IHNhbmVfZXhlY3ZwKGNvbnN0IGNoYXIgKmZpbGUsIGNoYXIgKmNvbnN0IGFyZ3ZbXSk7CiAKZGlmZiAtLWdpdCBhL2NvbWJpbmUtZGlmZi5jIGIvY29tYmluZS1kaWZmLmMKaW5kZXggOTc4NjY4MC4uNmRjMDYwOSAxMDA2NDQKLS0tIGEvY29tYmluZS1kaWZmLmMKKysrIGIvY29tYmluZS1kaWZmLmMKQEAgLTUsNiArNSw3IEBACiAjaW5jbHVkZSAiZGlmZmNvcmUuaCIKICNpbmNsdWRlICJxdW90ZS5oIgogI2luY2x1ZGUgInhkaWZmLWludGVyZmFjZS5oIgorI2luY2x1ZGUgInhkaWZmL3htYWNyb3MuaCIKICNpbmNsdWRlICJsb2ctdHJlZS5oIgogI2luY2x1ZGUgInJlZnMuaCIKICNpbmNsdWRlICJ1c2VyZGlmZi5oIgpAQCAtNzMsMTYgKzc0LDI0IEBACiAKIC8qIExpbmVzIGxvc3QgZnJvbSBwYXJlbnQgKi8KIHN0cnVjdCBsbGluZSB7Ci0Jc3RydWN0IGxsaW5lICpuZXh0OworCXN0cnVjdCBsbGluZSAqbmV4dCwgKnByZXY7CiAJaW50IGxlbjsKIAl1bnNpZ25lZCBsb25nIHBhcmVudF9tYXA7CiAJY2hhciBsaW5lW0ZMRVhfQVJSQVldOwogfTsKIAorLyogTGluZXMgbG9zdCBmcm9tIGN1cnJlbnQgcGFyZW50IChiZWZvcmUgY29hbGVzY2luZykgKi8KK3N0cnVjdCBwbG9zdCB7CisJc3RydWN0IGxsaW5lICpsb3N0X2hlYWQsICpsb3N0X3RhaWw7CisJaW50IGxlbjsKK307CisKIC8qIExpbmVzIHN1cnZpdmluZyBpbiB0aGUgbWVyZ2UgcmVzdWx0ICovCiBzdHJ1Y3Qgc2xpbmUgewotCXN0cnVjdCBsbGluZSAqbG9zdF9oZWFkLCAqKmxvc3RfdGFpbDsKLQlzdHJ1Y3QgbGxpbmUgKm5leHRfbG9zdDsKKwkvKiBBY2N1bXVsYXRlZCBhbmQgY29hbGVzY2VkIGxvc3QgbGluZXMgKi8KKwlzdHJ1Y3QgbGxpbmUgKmxvc3Q7CisJaW50IGxlbmxvc3Q7CisJc3RydWN0IHBsb3N0IHBsb3N0OwogCWNoYXIgKmJvbDsKIAlpbnQgbGVuOwogCS8qIGJpdCAwIHVwIHRvIChOLTEpIGFyZSBvbiBpZiB0aGUgcGFyZW50IGhhcyB0aGlzIGxpbmUgKGkuZS4KQEAgLTk0LDYgKzEwMywxNzIgQEAKIAl1bnNpZ25lZCBsb25nICpwX2xubzsKIH07CiAKK3N0YXRpYyBpbnQgbWF0Y2hfc3RyaW5nX3NwYWNlcyhjb25zdCBjaGFyICpsaW5lMSwgaW50IGxlbjEsCisJCQkgICAgICAgY29uc3QgY2hhciAqbGluZTIsIGludCBsZW4yLAorCQkJICAgICAgIGxvbmcgZmxhZ3MpCit7CisJaWYgKGZsYWdzICYgWERGX1dISVRFU1BBQ0VfRkxBR1MpIHsKKwkJZm9yICg7IGxlbjEgPiAwICYmIFhETF9JU1NQQUNFKGxpbmUxW2xlbjEgLSAxXSk7IGxlbjEtLSk7CisJCWZvciAoOyBsZW4yID4gMCAmJiBYRExfSVNTUEFDRShsaW5lMltsZW4yIC0gMV0pOyBsZW4yLS0pOworCX0KKworCWlmICghKGZsYWdzICYgKFhERl9JR05PUkVfV0hJVEVTUEFDRSB8IFhERl9JR05PUkVfV0hJVEVTUEFDRV9DSEFOR0UpKSkKKwkJcmV0dXJuIChsZW4xID09IGxlbjIgJiYgIW1lbWNtcChsaW5lMSwgbGluZTIsIGxlbjEpKTsKKworCXdoaWxlIChsZW4xID4gMCAmJiBsZW4yID4gMCkgeworCQlsZW4xLS07CisJCWxlbjItLTsKKwkJaWYgKFhETF9JU1NQQUNFKGxpbmUxW2xlbjFdKSB8fCBYRExfSVNTUEFDRShsaW5lMltsZW4yXSkpIHsKKwkJCWlmICgoZmxhZ3MgJiBYREZfSUdOT1JFX1dISVRFU1BBQ0VfQ0hBTkdFKSAmJgorCQkJICAgICghWERMX0lTU1BBQ0UobGluZTFbbGVuMV0pIHx8ICFYRExfSVNTUEFDRShsaW5lMltsZW4yXSkpKQorCQkJCXJldHVybiAwOworCisJCQlmb3IgKDsgbGVuMSA+IDAgJiYgWERMX0lTU1BBQ0UobGluZTFbbGVuMV0pOyBsZW4xLS0pOworCQkJZm9yICg7IGxlbjIgPiAwICYmIFhETF9JU1NQQUNFKGxpbmUyW2xlbjJdKTsgbGVuMi0tKTsKKwkJfQorCQlpZiAobGluZTFbbGVuMV0gIT0gbGluZTJbbGVuMl0pCisJCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoZmxhZ3MgJiBYREZfSUdOT1JFX1dISVRFU1BBQ0UpIHsKKwkJLyogQ29uc3VtZSByZW1haW5pbmcgc3BhY2VzICovCisJCWZvciAoOyBsZW4xID4gMCAmJiBYRExfSVNTUEFDRShsaW5lMVtsZW4xIC0gMV0pOyBsZW4xLS0pOworCQlmb3IgKDsgbGVuMiA+IDAgJiYgWERMX0lTU1BBQ0UobGluZTJbbGVuMiAtIDFdKTsgbGVuMi0tKTsKKwl9CisKKwkvKiBXZSBtYXRjaGVkIGZ1bGwgbGluZTEgYW5kIGxpbmUyICovCisJaWYgKCFsZW4xICYmICFsZW4yKQorCQlyZXR1cm4gMTsKKworCXJldHVybiAwOworfQorCitlbnVtIGNvYWxlc2NlX2RpcmVjdGlvbiB7IE1BVENILCBCQVNFLCBORVcgfTsKKworLyogQ29hbGVzY2UgbmV3IGxpbmVzIGludG8gYmFzZSBieSBmaW5kaW5nIExDUyAqLworc3RhdGljIHN0cnVjdCBsbGluZSAqY29hbGVzY2VfbGluZXMoc3RydWN0IGxsaW5lICpiYXNlLCBpbnQgKmxlbmJhc2UsCisJCQkJICAgIHN0cnVjdCBsbGluZSAqbmV3LCBpbnQgbGVubmV3LAorCQkJCSAgICB1bnNpZ25lZCBsb25nIHBhcmVudCwgbG9uZyBmbGFncykKK3sKKwlpbnQgKipsY3M7CisJZW51bSBjb2FsZXNjZV9kaXJlY3Rpb24gKipkaXJlY3Rpb25zOworCXN0cnVjdCBsbGluZSAqYmFzZWVuZCwgKm5ld2VuZCA9IE5VTEw7CisJaW50IGksIGosIG9yaWdiYXNlbGVuID0gKmxlbmJhc2U7CisKKwlpZiAobmV3ID09IE5VTEwpCisJCXJldHVybiBiYXNlOworCisJaWYgKGJhc2UgPT0gTlVMTCkgeworCQkqbGVuYmFzZSA9IGxlbm5ldzsKKwkJcmV0dXJuIG5ldzsKKwl9CisKKwkvKgorCSAqIENvYWxlc2NlIG5ldyBsaW5lcyBpbnRvIGJhc2UgYnkgZmluZGluZyB0aGUgTENTCisJICogLSBDcmVhdGUgdGhlIHRhYmxlIHRvIHJ1biBkeW5hbWljIHByb2dyYW1pbmcKKwkgKiAtIENvbXB1dGUgdGhlIExDUworCSAqIC0gVGhlbiByZXZlcnNlIHJlYWQgdGhlIGRpcmVjdGlvbiBzdHJ1Y3R1cmU6CisJICogICAtIElmIHdlIGhhdmUgTUFUQ0gsIGFzc2lnbiBwYXJlbnQgdG8gYmFzZSBmbGFnLCBhbmQgY29uc3VtZQorCSAqICAgYm90aCBiYXNlZW5kIGFuZCBuZXdlbmQKKwkgKiAgIC0gRWxzZSBpZiB3ZSBoYXZlIEJBU0UsIGNvbnN1bWUgYmFzZWVuZAorCSAqICAgLSBFbHNlIGlmIHdlIGhhdmUgTkVXLCBpbnNlcnQgbmV3ZW5kIGxsaW5lIGludG8gYmFzZSBhbmQKKwkgKiAgIGNvbnN1bWUgbmV3ZW5kCisJICovCisJbGNzID0geGNhbGxvYyhvcmlnYmFzZWxlbiArIDEsIHNpemVvZihpbnQqKSk7CisJZGlyZWN0aW9ucyA9IHhjYWxsb2Mob3JpZ2Jhc2VsZW4gKyAxLCBzaXplb2YoZW51bSBjb2FsZXNjZV9kaXJlY3Rpb24qKSk7CisJZm9yIChpID0gMDsgaSA8IG9yaWdiYXNlbGVuICsgMTsgaSsrKSB7CisJCWxjc1tpXSA9IHhjYWxsb2MobGVubmV3ICsgMSwgc2l6ZW9mKGludCkpOworCQlkaXJlY3Rpb25zW2ldID0geGNhbGxvYyhsZW5uZXcgKyAxLCBzaXplb2YoZW51bSBjb2FsZXNjZV9kaXJlY3Rpb24pKTsKKwkJZGlyZWN0aW9uc1tpXVswXSA9IEJBU0U7CisJfQorCWZvciAoaiA9IDE7IGogPCBsZW5uZXcgKyAxOyBqKyspCisJCWRpcmVjdGlvbnNbMF1bal0gPSBORVc7CisKKwlmb3IgKGkgPSAxLCBiYXNlZW5kID0gYmFzZTsgaSA8IG9yaWdiYXNlbGVuICsgMTsgaSsrKSB7CisJCWZvciAoaiA9IDEsIG5ld2VuZCA9IG5ldzsgaiA8IGxlbm5ldyArIDE7IGorKykgeworCQkJaWYgKG1hdGNoX3N0cmluZ19zcGFjZXMoYmFzZWVuZC0+bGluZSwgYmFzZWVuZC0+bGVuLAorCQkJCQkJbmV3ZW5kLT5saW5lLCBuZXdlbmQtPmxlbiwgZmxhZ3MpKSB7CisJCQkJbGNzW2ldW2pdID0gbGNzW2kgLSAxXVtqIC0gMV0gKyAxOworCQkJCWRpcmVjdGlvbnNbaV1bal0gPSBNQVRDSDsKKwkJCX0gZWxzZSBpZiAobGNzW2ldW2ogLSAxXSA+PSBsY3NbaSAtIDFdW2pdKSB7CisJCQkJbGNzW2ldW2pdID0gbGNzW2ldW2ogLSAxXTsKKwkJCQlkaXJlY3Rpb25zW2ldW2pdID0gTkVXOworCQkJfSBlbHNlIHsKKwkJCQlsY3NbaV1bal0gPSBsY3NbaSAtIDFdW2pdOworCQkJCWRpcmVjdGlvbnNbaV1bal0gPSBCQVNFOworCQkJfQorCQkJaWYgKG5ld2VuZC0+bmV4dCkKKwkJCQluZXdlbmQgPSBuZXdlbmQtPm5leHQ7CisJCX0KKwkJaWYgKGJhc2VlbmQtPm5leHQpCisJCQliYXNlZW5kID0gYmFzZWVuZC0+bmV4dDsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgb3JpZ2Jhc2VsZW4gKyAxOyBpKyspCisJCWZyZWUobGNzW2ldKTsKKwlmcmVlKGxjcyk7CisKKwkvKiBBdCB0aGlzIHBvaW50LCBiYXNlZW5kIGFuZCBuZXdlbmQgcG9pbnQgdG8gdGhlIGVuZCBvZiBlYWNoIGxpc3RzICovCisJaS0tOworCWotLTsKKwl3aGlsZSAoaSAhPSAwIHx8IGogIT0gMCkgeworCQlpZiAoZGlyZWN0aW9uc1tpXVtqXSA9PSBNQVRDSCkgeworCQkJYmFzZWVuZC0+cGFyZW50X21hcCB8PSAxPDxwYXJlbnQ7CisJCQliYXNlZW5kID0gYmFzZWVuZC0+cHJldjsKKwkJCW5ld2VuZCA9IG5ld2VuZC0+cHJldjsKKwkJCWktLTsKKwkJCWotLTsKKwkJfSBlbHNlIGlmIChkaXJlY3Rpb25zW2ldW2pdID09IE5FVykgeworCQkJc3RydWN0IGxsaW5lICpsbGluZTsKKworCQkJbGxpbmUgPSBuZXdlbmQ7CisJCQkvKiBSZW1vdmUgbGxpbmUgZnJvbSBuZXcgbGlzdCBhbmQgdXBkYXRlIG5ld2VuZCAqLworCQkJaWYgKGxsaW5lLT5wcmV2KQorCQkJCWxsaW5lLT5wcmV2LT5uZXh0ID0gbGxpbmUtPm5leHQ7CisJCQllbHNlCisJCQkJbmV3ID0gbGxpbmUtPm5leHQ7CisJCQlpZiAobGxpbmUtPm5leHQpCisJCQkJbGxpbmUtPm5leHQtPnByZXYgPSBsbGluZS0+cHJldjsKKworCQkJbmV3ZW5kID0gbGxpbmUtPnByZXY7CisJCQlqLS07CisKKwkJCS8qIEFkZCBsbGluZSB0byBiYXNlIGxpc3QgKi8KKwkJCWlmIChiYXNlZW5kKSB7CisJCQkJbGxpbmUtPm5leHQgPSBiYXNlZW5kLT5uZXh0OworCQkJCWxsaW5lLT5wcmV2ID0gYmFzZWVuZDsKKwkJCQlpZiAobGxpbmUtPnByZXYpCisJCQkJCWxsaW5lLT5wcmV2LT5uZXh0ID0gbGxpbmU7CisJCQl9CisJCQllbHNlIHsKKwkJCQlsbGluZS0+bmV4dCA9IGJhc2U7CisJCQkJYmFzZSA9IGxsaW5lOworCQkJfQorCQkJKCpsZW5iYXNlKSsrOworCisJCQlpZiAobGxpbmUtPm5leHQpCisJCQkJbGxpbmUtPm5leHQtPnByZXYgPSBsbGluZTsKKworCQl9IGVsc2UgeworCQkJYmFzZWVuZCA9IGJhc2VlbmQtPnByZXY7CisJCQlpLS07CisJCX0KKwl9CisKKwluZXdlbmQgPSBuZXc7CisJd2hpbGUgKG5ld2VuZCkgeworCQlzdHJ1Y3QgbGxpbmUgKmxsaW5lID0gbmV3ZW5kOworCQluZXdlbmQgPSBuZXdlbmQtPm5leHQ7CisJCWZyZWUobGxpbmUpOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBvcmlnYmFzZWxlbiArIDE7IGkrKykKKwkJZnJlZShkaXJlY3Rpb25zW2ldKTsKKwlmcmVlKGRpcmVjdGlvbnMpOworCisJcmV0dXJuIGJhc2U7Cit9CisKIHN0YXRpYyBjaGFyICpncmFiX2Jsb2IoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgdW5zaWduZWQgaW50IG1vZGUsCiAJCSAgICAgICB1bnNpZ25lZCBsb25nICpzaXplLCBzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICp0ZXh0Y29udiwKIAkJICAgICAgIGNvbnN0IGNoYXIgKnBhdGgpCkBAIC0xMTEsNyArMjg2LDcgQEAKIAkJcmV0dXJuIHhjYWxsb2MoMSwgMSk7CiAJfSBlbHNlIGlmICh0ZXh0Y29udikgewogCQlzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqZGYgPSBhbGxvY19maWxlc3BlYyhwYXRoKTsKLQkJZmlsbF9maWxlc3BlYyhkZiwgc2hhMSwgbW9kZSk7CisJCWZpbGxfZmlsZXNwZWMoZGYsIHNoYTEsIDEsIG1vZGUpOwogCQkqc2l6ZSA9IGZpbGxfdGV4dGNvbnYodGV4dGNvbnYsIGRmLCAmYmxvYik7CiAJCWZyZWVfZmlsZXNwZWMoZGYpOwogCX0gZWxzZSB7CkBAIC0xMjksMjkgKzMwNCwxOSBAQAogCWlmIChsaW5lW2xlbi0xXSA9PSAnXG4nKQogCQlsZW4tLTsKIAotCS8qIENoZWNrIHRvIHNlZSBpZiB3ZSBjYW4gc3F1YXNoIHRoaW5ncyAqLwotCWlmIChzbGluZS0+bG9zdF9oZWFkKSB7Ci0JCWxsaW5lID0gc2xpbmUtPm5leHRfbG9zdDsKLQkJd2hpbGUgKGxsaW5lKSB7Ci0JCQlpZiAobGxpbmUtPmxlbiA9PSBsZW4gJiYKLQkJCSAgICAhbWVtY21wKGxsaW5lLT5saW5lLCBsaW5lLCBsZW4pKSB7Ci0JCQkJbGxpbmUtPnBhcmVudF9tYXAgfD0gdGhpc19tYXNrOwotCQkJCXNsaW5lLT5uZXh0X2xvc3QgPSBsbGluZS0+bmV4dDsKLQkJCQlyZXR1cm47Ci0JCQl9Ci0JCQlsbGluZSA9IGxsaW5lLT5uZXh0OwotCQl9Ci0JfQotCiAJbGxpbmUgPSB4bWFsbG9jKHNpemVvZigqbGxpbmUpICsgbGVuICsgMSk7CiAJbGxpbmUtPmxlbiA9IGxlbjsKIAlsbGluZS0+bmV4dCA9IE5VTEw7CisJbGxpbmUtPnByZXYgPSBzbGluZS0+cGxvc3QubG9zdF90YWlsOworCWlmIChsbGluZS0+cHJldikKKwkJbGxpbmUtPnByZXYtPm5leHQgPSBsbGluZTsKKwllbHNlCisJCXNsaW5lLT5wbG9zdC5sb3N0X2hlYWQgPSBsbGluZTsKKwlzbGluZS0+cGxvc3QubG9zdF90YWlsID0gbGxpbmU7CisJc2xpbmUtPnBsb3N0LmxlbisrOwogCWxsaW5lLT5wYXJlbnRfbWFwID0gdGhpc19tYXNrOwogCW1lbWNweShsbGluZS0+bGluZSwgbGluZSwgbGVuKTsKIAlsbGluZS0+bGluZVtsZW5dID0gMDsKLQkqc2xpbmUtPmxvc3RfdGFpbCA9IGxsaW5lOwotCXNsaW5lLT5sb3N0X3RhaWwgPSAmbGxpbmUtPm5leHQ7Ci0Jc2xpbmUtPm5leHRfbG9zdCA9IE5VTEw7CiB9CiAKIHN0cnVjdCBjb21iaW5lX2RpZmZfc3RhdGUgewpAQCAtMTk0LDcgKzM1OSw2IEBACiAJCQkJeGNhbGxvYyhzdGF0ZS0+bnVtX3BhcmVudCwKIAkJCQkJc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTsKIAkJc3RhdGUtPnNsaW5lW3N0YXRlLT5uYi0xXS5wX2xub1tzdGF0ZS0+bl0gPSBzdGF0ZS0+b2I7Ci0JCXN0YXRlLT5sb3N0X2J1Y2tldC0+bmV4dF9sb3N0ID0gc3RhdGUtPmxvc3RfYnVja2V0LT5sb3N0X2hlYWQ7CiAJCXJldHVybjsKIAl9CiAJaWYgKCFzdGF0ZS0+bG9zdF9idWNrZXQpCkBAIC0yMTUsNyArMzc5LDcgQEAKIAkJCSBzdHJ1Y3Qgc2xpbmUgKnNsaW5lLCB1bnNpZ25lZCBpbnQgY250LCBpbnQgbiwKIAkJCSBpbnQgbnVtX3BhcmVudCwgaW50IHJlc3VsdF9kZWxldGVkLAogCQkJIHN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKnRleHRjb252LAotCQkJIGNvbnN0IGNoYXIgKnBhdGgpCisJCQkgY29uc3QgY2hhciAqcGF0aCwgbG9uZyBmbGFncykKIHsKIAl1bnNpZ25lZCBpbnQgcF9sbm8sIGxubzsKIAl1bnNpZ25lZCBsb25nIG5tYXNrID0gKDFVTCA8PCBuKTsKQEAgLTIzMSw3ICszOTUsNyBAQAogCXBhcmVudF9maWxlLnB0ciA9IGdyYWJfYmxvYihwYXJlbnQsIG1vZGUsICZzeiwgdGV4dGNvbnYsIHBhdGgpOwogCXBhcmVudF9maWxlLnNpemUgPSBzejsKIAltZW1zZXQoJnhwcCwgMCwgc2l6ZW9mKHhwcCkpOwotCXhwcC5mbGFncyA9IDA7CisJeHBwLmZsYWdzID0gZmxhZ3M7CiAJbWVtc2V0KCZ4ZWNmZywgMCwgc2l6ZW9mKHhlY2ZnKSk7CiAJbWVtc2V0KCZzdGF0ZSwgMCwgc2l6ZW9mKHN0YXRlKSk7CiAJc3RhdGUubm1hc2sgPSBubWFzazsKQEAgLTI1NSw4ICs0MTksMTggQEAKIAkJc3RydWN0IGxsaW5lICpsbDsKIAkJc2xpbmVbbG5vXS5wX2xub1tuXSA9IHBfbG5vOwogCisJCS8qIENvYWxlc2NlIG5ldyBsaW5lcyAqLworCQlpZiAoc2xpbmVbbG5vXS5wbG9zdC5sb3N0X2hlYWQpIHsKKwkJCXN0cnVjdCBzbGluZSAqc2wgPSAmc2xpbmVbbG5vXTsKKwkJCXNsLT5sb3N0ID0gY29hbGVzY2VfbGluZXMoc2wtPmxvc3QsICZzbC0+bGVubG9zdCwKKwkJCQkJCSAgc2wtPnBsb3N0Lmxvc3RfaGVhZCwKKwkJCQkJCSAgc2wtPnBsb3N0LmxlbiwgbiwgZmxhZ3MpOworCQkJc2wtPnBsb3N0Lmxvc3RfaGVhZCA9IHNsLT5wbG9zdC5sb3N0X3RhaWwgPSBOVUxMOworCQkJc2wtPnBsb3N0LmxlbiA9IDA7CisJCX0KKwogCQkvKiBIb3cgbWFueSBsaW5lcyB3b3VsZCB0aGlzIHNsaW5lIGFkdmFuY2UgdGhlIHBfbG5vPyAqLwotCQlsbCA9IHNsaW5lW2xub10ubG9zdF9oZWFkOworCQlsbCA9IHNsaW5lW2xub10ubG9zdDsKIAkJd2hpbGUgKGxsKSB7CiAJCQlpZiAobGwtPnBhcmVudF9tYXAgJiBubWFzaykKIAkJCQlwX2xubysrOyAvKiAnLScgbWVhbnMgcGFyZW50IGhhZCBpdCAqLwpAQCAtMjc2LDcgKzQ1MCw3IEBACiAJLyogSWYgc29tZSBwYXJlbnRzIGxvc3QgbGluZXMgaGVyZSwgb3IgaWYgd2UgaGF2ZSBhZGRlZCB0bwogCSAqIHNvbWUgcGFyZW50LCBpdCBpcyBpbnRlcmVzdGluZy4KIAkgKi8KLQlyZXR1cm4gKChzbGluZS0+ZmxhZyAmIGFsbF9tYXNrKSB8fCBzbGluZS0+bG9zdF9oZWFkKTsKKwlyZXR1cm4gKChzbGluZS0+ZmxhZyAmIGFsbF9tYXNrKSB8fCBzbGluZS0+bG9zdCk7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBsb25nIGFkanVzdF9odW5rX3RhaWwoc3RydWN0IHNsaW5lICpzbGluZSwKQEAgLTM0NCw4ICs1MTgsMTEgQEAKIAkJdW5zaWduZWQgbG9uZyBrOwogCiAJCS8qIFBhaW50IGEgZmV3IGxpbmVzIGJlZm9yZSB0aGUgZmlyc3QgaW50ZXJlc3RpbmcgbGluZS4gKi8KLQkJd2hpbGUgKGogPCBpKQotCQkJc2xpbmVbaisrXS5mbGFnIHw9IG1hcmsgfCBub19wcmVfZGVsZXRlOworCQl3aGlsZSAoaiA8IGkpIHsKKwkJCWlmICghKHNsaW5lW2pdLmZsYWcgJiBtYXJrKSkKKwkJCQlzbGluZVtqXS5mbGFnIHw9IG5vX3ByZV9kZWxldGU7CisJCQlzbGluZVtqKytdLmZsYWcgfD0gbWFyazsKKwkJfQogCiAJYWdhaW46CiAJCS8qIHdlIGtub3cgdXAgdG8gaSBpcyB0byBiZSBpbmNsdWRlZC4gIHdoZXJlIGRvZXMgdGhlCkBAIC00NTksNyArNjM2LDcgQEAKIAkJaGFzX2ludGVyZXN0aW5nID0gMDsKIAkJZm9yIChqID0gaTsgaiA8IGh1bmtfZW5kICYmICFoYXNfaW50ZXJlc3Rpbmc7IGorKykgewogCQkJdW5zaWduZWQgbG9uZyB0aGlzX2RpZmYgPSBzbGluZVtqXS5mbGFnICYgYWxsX21hc2s7Ci0JCQlzdHJ1Y3QgbGxpbmUgKmxsID0gc2xpbmVbal0ubG9zdF9oZWFkOworCQkJc3RydWN0IGxsaW5lICpsbCA9IHNsaW5lW2pdLmxvc3Q7CiAJCQlpZiAodGhpc19kaWZmKSB7CiAJCQkJLyogVGhpcyBoYXMgc29tZSBjaGFuZ2VzLiAgSXMgaXQgdGhlCiAJCQkJICogc2FtZSBhcyBvdGhlcnM/CkBAIC01MjYsNyArNzAzLDggQEAKIAkgICAgICAgc2F3X2NyX2F0X2VvbCA/ICJcciIgOiAiIik7CiB9CiAKLXN0YXRpYyB2b2lkIGR1bXBfc2xpbmUoc3RydWN0IHNsaW5lICpzbGluZSwgdW5zaWduZWQgbG9uZyBjbnQsIGludCBudW1fcGFyZW50LAorc3RhdGljIHZvaWQgZHVtcF9zbGluZShzdHJ1Y3Qgc2xpbmUgKnNsaW5lLCBjb25zdCBjaGFyICpsaW5lX3ByZWZpeCwKKwkJICAgICAgIHVuc2lnbmVkIGxvbmcgY250LCBpbnQgbnVtX3BhcmVudCwKIAkJICAgICAgIGludCB1c2VfY29sb3IsIGludCByZXN1bHRfZGVsZXRlZCkKIHsKIAl1bnNpZ25lZCBsb25nIG1hcmsgPSAoMVVMPDxudW1fcGFyZW50KTsKQEAgLTU4Miw3ICs3NjAsNyBAQAogCQkJcmxpbmVzIC09IG51bGxfY29udGV4dDsKIAkJfQogCi0JCWZwdXRzKGNfZnJhZywgc3Rkb3V0KTsKKwkJcHJpbnRmKCIlcyVzIiwgbGluZV9wcmVmaXgsIGNfZnJhZyk7CiAJCWZvciAoaSA9IDA7IGkgPD0gbnVtX3BhcmVudDsgaSsrKSBwdXRjaGFyKGNvbWJpbmVfbWFya2VyKTsKIAkJZm9yIChpID0gMDsgaSA8IG51bV9wYXJlbnQ7IGkrKykKIAkJCXNob3dfcGFyZW50X2xubyhzbGluZSwgbG5vLCBodW5rX2VuZCwgaSwgbnVsbF9jb250ZXh0KTsKQEAgLTYxMiw5ICs3OTAsOSBAQAogCQkJaW50IGo7CiAJCQl1bnNpZ25lZCBsb25nIHBfbWFzazsKIAkJCXN0cnVjdCBzbGluZSAqc2wgPSAmc2xpbmVbbG5vKytdOwotCQkJbGwgPSAoc2wtPmZsYWcgJiBub19wcmVfZGVsZXRlKSA/IE5VTEwgOiBzbC0+bG9zdF9oZWFkOworCQkJbGwgPSAoc2wtPmZsYWcgJiBub19wcmVfZGVsZXRlKSA/IE5VTEwgOiBzbC0+bG9zdDsKIAkJCXdoaWxlIChsbCkgewotCQkJCWZwdXRzKGNfb2xkLCBzdGRvdXQpOworCQkJCXByaW50ZigiJXMlcyIsIGxpbmVfcHJlZml4LCBjX29sZCk7CiAJCQkJZm9yIChqID0gMDsgaiA8IG51bV9wYXJlbnQ7IGorKykgewogCQkJCQlpZiAobGwtPnBhcmVudF9tYXAgJiAoMVVMPDxqKSkKIAkJCQkJCXB1dGNoYXIoJy0nKTsKQEAgLTYyNyw2ICs4MDUsNyBAQAogCQkJaWYgKGNudCA8IGxubykKIAkJCQlicmVhazsKIAkJCXBfbWFzayA9IDE7CisJCQlmcHV0cyhsaW5lX3ByZWZpeCwgc3Rkb3V0KTsKIAkJCWlmICghKHNsLT5mbGFnICYgKG1hcmstMSkpKSB7CiAJCQkJLyoKIAkJCQkgKiBUaGlzIHNsaW5lIHdhcyBoZXJlIHRvIGhhbmcgdGhlCkBAIC02NjIsNyArODQxLDcgQEAKIAlqbWFzayA9ICgxVUw8PGopOwogCiAJZm9yIChsbm8gPSAwOyBsbm8gPD0gY250OyBsbm8rKykgewotCQlzdHJ1Y3QgbGxpbmUgKmxsID0gc2xpbmUtPmxvc3RfaGVhZDsKKwkJc3RydWN0IGxsaW5lICpsbCA9IHNsaW5lLT5sb3N0OwogCQlzbGluZS0+cF9sbm9baV0gPSBzbGluZS0+cF9sbm9bal07CiAJCXdoaWxlIChsbCkgewogCQkJaWYgKGxsLT5wYXJlbnRfbWFwICYgam1hc2spCkBAIC02ODAsMTEgKzg1OSwxMyBAQAogc3RhdGljIHZvaWQgZHVtcF9xdW90ZWRfcGF0aChjb25zdCBjaGFyICpoZWFkLAogCQkJICAgICBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkgICAgIGNvbnN0IGNoYXIgKnBhdGgsCisJCQkgICAgIGNvbnN0IGNoYXIgKmxpbmVfcHJlZml4LAogCQkJICAgICBjb25zdCBjaGFyICpjX21ldGEsIGNvbnN0IGNoYXIgKmNfcmVzZXQpCiB7CiAJc3RhdGljIHN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAKIAlzdHJidWZfcmVzZXQoJmJ1Zik7CisJc3RyYnVmX2FkZHN0cigmYnVmLCBsaW5lX3ByZWZpeCk7CiAJc3RyYnVmX2FkZHN0cigmYnVmLCBjX21ldGEpOwogCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgaGVhZCk7CiAJcXVvdGVfdHdvX2Nfc3R5bGUoJmJ1ZiwgcHJlZml4LCBwYXRoLCAwKTsKQEAgLTY5Niw2ICs4NzcsNyBAQAogCQkJCSBpbnQgbnVtX3BhcmVudCwKIAkJCQkgaW50IGRlbnNlLAogCQkJCSBzdHJ1Y3QgcmV2X2luZm8gKnJldiwKKwkJCQkgY29uc3QgY2hhciAqbGluZV9wcmVmaXgsCiAJCQkJIGludCBtb2RlX2RpZmZlcnMsCiAJCQkJIGludCBzaG93X2ZpbGVfaGVhZGVyKQogewpAQCAtNzE0LDggKzg5Niw4IEBACiAJCXNob3dfbG9nKHJldik7CiAKIAlkdW1wX3F1b3RlZF9wYXRoKGRlbnNlID8gImRpZmYgLS1jYyAiIDogImRpZmYgLS1jb21iaW5lZCAiLAotCQkJICIiLCBlbGVtLT5wYXRoLCBjX21ldGEsIGNfcmVzZXQpOwotCXByaW50ZigiJXNpbmRleCAiLCBjX21ldGEpOworCQkJICIiLCBlbGVtLT5wYXRoLCBsaW5lX3ByZWZpeCwgY19tZXRhLCBjX3Jlc2V0KTsKKwlwcmludGYoIiVzJXNpbmRleCAiLCBsaW5lX3ByZWZpeCwgY19tZXRhKTsKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX3BhcmVudDsgaSsrKSB7CiAJCWFiYiA9IGZpbmRfdW5pcXVlX2FiYnJldihlbGVtLT5wYXJlbnRbaV0uc2hhMSwKIAkJCQkJIGFiYnJldik7CkBAIC03MzQsMTEgKzkxNiwxMiBAQAogCQkJICAgIERJRkZfU1RBVFVTX0FEREVEKQogCQkJCWFkZGVkID0gMDsKIAkJaWYgKGFkZGVkKQotCQkJcHJpbnRmKCIlc25ldyBmaWxlIG1vZGUgJTA2byIsCi0JCQkgICAgICAgY19tZXRhLCBlbGVtLT5tb2RlKTsKKwkJCXByaW50ZigiJXMlc25ldyBmaWxlIG1vZGUgJTA2byIsCisJCQkgICAgICAgbGluZV9wcmVmaXgsIGNfbWV0YSwgZWxlbS0+bW9kZSk7CiAJCWVsc2UgewogCQkJaWYgKGRlbGV0ZWQpCi0JCQkJcHJpbnRmKCIlc2RlbGV0ZWQgZmlsZSAiLCBjX21ldGEpOworCQkJCXByaW50ZigiJXMlc2RlbGV0ZWQgZmlsZSAiLAorCQkJCSAgICAgICBsaW5lX3ByZWZpeCwgY19tZXRhKTsKIAkJCXByaW50ZigibW9kZSAiKTsKIAkJCWZvciAoaSA9IDA7IGkgPCBudW1fcGFyZW50OyBpKyspIHsKIAkJCQlwcmludGYoIiVzJTA2byIsIGkgPyAiLCIgOiAiIiwKQEAgLTc1NSwxNiArOTM4LDE2IEBACiAKIAlpZiAoYWRkZWQpCiAJCWR1bXBfcXVvdGVkX3BhdGgoIi0tLSAiLCAiIiwgIi9kZXYvbnVsbCIsCi0JCQkJIGNfbWV0YSwgY19yZXNldCk7CisJCQkJIGxpbmVfcHJlZml4LCBjX21ldGEsIGNfcmVzZXQpOwogCWVsc2UKIAkJZHVtcF9xdW90ZWRfcGF0aCgiLS0tICIsIGFfcHJlZml4LCBlbGVtLT5wYXRoLAotCQkJCSBjX21ldGEsIGNfcmVzZXQpOworCQkJCSBsaW5lX3ByZWZpeCwgY19tZXRhLCBjX3Jlc2V0KTsKIAlpZiAoZGVsZXRlZCkKIAkJZHVtcF9xdW90ZWRfcGF0aCgiKysrICIsICIiLCAiL2Rldi9udWxsIiwKLQkJCQkgY19tZXRhLCBjX3Jlc2V0KTsKKwkJCQkgbGluZV9wcmVmaXgsIGNfbWV0YSwgY19yZXNldCk7CiAJZWxzZQogCQlkdW1wX3F1b3RlZF9wYXRoKCIrKysgIiwgYl9wcmVmaXgsIGVsZW0tPnBhdGgsCi0JCQkJIGNfbWV0YSwgY19yZXNldCk7CisJCQkJIGxpbmVfcHJlZml4LCBjX21ldGEsIGNfcmVzZXQpOwogfQogCiBzdGF0aWMgdm9pZCBzaG93X3BhdGNoX2RpZmYoc3RydWN0IGNvbWJpbmVfZGlmZl9wYXRoICplbGVtLCBpbnQgbnVtX3BhcmVudCwKQEAgLTc4Miw2ICs5NjUsNyBAQAogCXN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKnVzZXJkaWZmOwogCXN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKnRleHRjb252ID0gTlVMTDsKIAlpbnQgaXNfYmluYXJ5OworCWNvbnN0IGNoYXIgKmxpbmVfcHJlZml4ID0gZGlmZl9saW5lX3ByZWZpeChvcHQpOwogCiAJY29udGV4dCA9IG9wdC0+Y29udGV4dDsKIAl1c2VyZGlmZiA9IHVzZXJkaWZmX2ZpbmRfYnlfcGF0aChlbGVtLT5wYXRoKTsKQEAgLTgyMyw3ICsxMDA3LDcgQEAKIAkJCQkJCSAgICZyZXN1bHRfc2l6ZSwgTlVMTCwgTlVMTCk7CiAJCX0gZWxzZSBpZiAodGV4dGNvbnYpIHsKIAkJCXN0cnVjdCBkaWZmX2ZpbGVzcGVjICpkZiA9IGFsbG9jX2ZpbGVzcGVjKGVsZW0tPnBhdGgpOwotCQkJZmlsbF9maWxlc3BlYyhkZiwgbnVsbF9zaGExLCBzdC5zdF9tb2RlKTsKKwkJCWZpbGxfZmlsZXNwZWMoZGYsIG51bGxfc2hhMSwgMCwgc3Quc3RfbW9kZSk7CiAJCQlyZXN1bHRfc2l6ZSA9IGZpbGxfdGV4dGNvbnYodGV4dGNvbnYsIGRmLCAmcmVzdWx0KTsKIAkJCWZyZWVfZmlsZXNwZWMoZGYpOwogCQl9IGVsc2UgaWYgKDAgPD0gKGZkID0gb3BlbihlbGVtLT5wYXRoLCBPX1JET05MWSkpKSB7CkBAIC05MDEsNyArMTA4NSw3IEBACiAJfQogCWlmIChpc19iaW5hcnkpIHsKIAkJc2hvd19jb21iaW5lZF9oZWFkZXIoZWxlbSwgbnVtX3BhcmVudCwgZGVuc2UsIHJldiwKLQkJCQkgICAgIG1vZGVfZGlmZmVycywgMCk7CisJCQkJICAgICBsaW5lX3ByZWZpeCwgbW9kZV9kaWZmZXJzLCAwKTsKIAkJcHJpbnRmKCJCaW5hcnkgZmlsZXMgZGlmZmVyXG4iKTsKIAkJZnJlZShyZXN1bHQpOwogCQlyZXR1cm47CkBAIC05MTYsMTAgKzExMDAsNiBAQAogCiAJc2xpbmUgPSB4Y2FsbG9jKGNudCsyLCBzaXplb2YoKnNsaW5lKSk7CiAJc2xpbmVbMF0uYm9sID0gcmVzdWx0OwotCWZvciAobG5vID0gMDsgbG5vIDw9IGNudCArIDE7IGxubysrKSB7Ci0JCXNsaW5lW2xub10ubG9zdF90YWlsID0gJnNsaW5lW2xub10ubG9zdF9oZWFkOwotCQlzbGluZVtsbm9dLmZsYWcgPSAwOwotCX0KIAlmb3IgKGxubyA9IDAsIGNwID0gcmVzdWx0OyBjcCA8IHJlc3VsdCArIHJlc3VsdF9zaXplOyBjcCsrKSB7CiAJCWlmICgqY3AgPT0gJ1xuJykgewogCQkJc2xpbmVbbG5vXS5sZW4gPSBjcCAtIHNsaW5lW2xub10uYm9sOwpAQCAtOTU1LDIyICsxMTM1LDIyIEBACiAJCQkJICAgICBlbGVtLT5wYXJlbnRbaV0ubW9kZSwKIAkJCQkgICAgICZyZXN1bHRfZmlsZSwgc2xpbmUsCiAJCQkJICAgICBjbnQsIGksIG51bV9wYXJlbnQsIHJlc3VsdF9kZWxldGVkLAotCQkJCSAgICAgdGV4dGNvbnYsIGVsZW0tPnBhdGgpOworCQkJCSAgICAgdGV4dGNvbnYsIGVsZW0tPnBhdGgsIG9wdC0+eGRsX29wdHMpOwogCX0KIAogCXNob3dfaHVua3MgPSBtYWtlX2h1bmtzKHNsaW5lLCBjbnQsIG51bV9wYXJlbnQsIGRlbnNlKTsKIAogCWlmIChzaG93X2h1bmtzIHx8IG1vZGVfZGlmZmVycyB8fCB3b3JraW5nX3RyZWVfZmlsZSkgewogCQlzaG93X2NvbWJpbmVkX2hlYWRlcihlbGVtLCBudW1fcGFyZW50LCBkZW5zZSwgcmV2LAotCQkJCSAgICAgbW9kZV9kaWZmZXJzLCAxKTsKLQkJZHVtcF9zbGluZShzbGluZSwgY250LCBudW1fcGFyZW50LAorCQkJCSAgICAgbGluZV9wcmVmaXgsIG1vZGVfZGlmZmVycywgMSk7CisJCWR1bXBfc2xpbmUoc2xpbmUsIGxpbmVfcHJlZml4LCBjbnQsIG51bV9wYXJlbnQsCiAJCQkgICBvcHQtPnVzZV9jb2xvciwgcmVzdWx0X2RlbGV0ZWQpOwogCX0KIAlmcmVlKHJlc3VsdCk7CiAKIAlmb3IgKGxubyA9IDA7IGxubyA8IGNudDsgbG5vKyspIHsKLQkJaWYgKHNsaW5lW2xub10ubG9zdF9oZWFkKSB7Ci0JCQlzdHJ1Y3QgbGxpbmUgKmxsID0gc2xpbmVbbG5vXS5sb3N0X2hlYWQ7CisJCWlmIChzbGluZVtsbm9dLmxvc3QpIHsKKwkJCXN0cnVjdCBsbGluZSAqbGwgPSBzbGluZVtsbm9dLmxvc3Q7CiAJCQl3aGlsZSAobGwpIHsKIAkJCQlzdHJ1Y3QgbGxpbmUgKnRtcCA9IGxsOwogCQkJCWxsID0gbGwtPm5leHQ7CkBAIC05ODIsMTQgKzExNjIsMTEgQEAKIAlmcmVlKHNsaW5lKTsKIH0KIAotI2RlZmluZSBDT0xPTlMgIjo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6IgotCiBzdGF0aWMgdm9pZCBzaG93X3Jhd19kaWZmKHN0cnVjdCBjb21iaW5lX2RpZmZfcGF0aCAqcCwgaW50IG51bV9wYXJlbnQsIHN0cnVjdCByZXZfaW5mbyAqcmV2KQogewogCXN0cnVjdCBkaWZmX29wdGlvbnMgKm9wdCA9ICZyZXYtPmRpZmZvcHQ7Ci0JaW50IGksIG9mZnNldDsKLQljb25zdCBjaGFyICpwcmVmaXg7Ci0JaW50IGxpbmVfdGVybWluYXRpb24sIGludGVyX25hbWVfdGVybWluYXRpb247CisJaW50IGxpbmVfdGVybWluYXRpb24sIGludGVyX25hbWVfdGVybWluYXRpb24sIGk7CisJY29uc3QgY2hhciAqbGluZV9wcmVmaXggPSBkaWZmX2xpbmVfcHJlZml4KG9wdCk7CiAKIAlsaW5lX3Rlcm1pbmF0aW9uID0gb3B0LT5saW5lX3Rlcm1pbmF0aW9uOwogCWludGVyX25hbWVfdGVybWluYXRpb24gPSAnXHQnOwpAQCAtOTk5LDE4ICsxMTc2LDE4IEBACiAJaWYgKHJldi0+bG9naW5mbyAmJiAhcmV2LT5ub19jb21taXRfaWQpCiAJCXNob3dfbG9nKHJldik7CiAKKwogCWlmIChvcHQtPm91dHB1dF9mb3JtYXQgJiBESUZGX0ZPUk1BVF9SQVcpIHsKLQkJb2Zmc2V0ID0gc3RybGVuKENPTE9OUykgLSBudW1fcGFyZW50OwotCQlpZiAob2Zmc2V0IDwgMCkKLQkJCW9mZnNldCA9IDA7Ci0JCXByZWZpeCA9IENPTE9OUyArIG9mZnNldDsKKwkJcHJpbnRmKCIlcyIsIGxpbmVfcHJlZml4KTsKKworCQkvKiBBcyBtYW55IGNvbG9ucyBhcyB0aGVyZSBhcmUgcGFyZW50cyAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnVtX3BhcmVudDsgaSsrKQorCQkJcHV0Y2hhcignOicpOwogCiAJCS8qIFNob3cgdGhlIG1vZGVzICovCi0JCWZvciAoaSA9IDA7IGkgPCBudW1fcGFyZW50OyBpKyspIHsKLQkJCXByaW50ZigiJXMlMDZvIiwgcHJlZml4LCBwLT5wYXJlbnRbaV0ubW9kZSk7Ci0JCQlwcmVmaXggPSAiICI7Ci0JCX0KLQkJcHJpbnRmKCIlcyUwNm8iLCBwcmVmaXgsIHAtPm1vZGUpOworCQlmb3IgKGkgPSAwOyBpIDwgbnVtX3BhcmVudDsgaSsrKQorCQkJcHJpbnRmKCIlMDZvICIsIHAtPnBhcmVudFtpXS5tb2RlKTsKKwkJcHJpbnRmKCIlMDZvIiwgcC0+bW9kZSk7CiAKIAkJLyogU2hvdyBzaGExJ3MgKi8KIAkJZm9yIChpID0gMDsgaSA8IG51bV9wYXJlbnQ7IGkrKykKQEAgLTEwNDAsNiArMTIxNyw3IEBACiAJCSAgICAgICBzdHJ1Y3QgcmV2X2luZm8gKnJldikKIHsKIAlzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHQgPSAmcmV2LT5kaWZmb3B0OworCiAJaWYgKCFwLT5sZW4pCiAJCXJldHVybjsKIAlpZiAob3B0LT5vdXRwdXRfZm9ybWF0ICYgKERJRkZfRk9STUFUX1JBVyB8CkBAIC0xMTI3LDYgKzEzMDUsNyBAQAogCWludCBpLCBudW1fcGF0aHMsIG5lZWRzZXAsIHNob3dfbG9nX2ZpcnN0LCBudW1fcGFyZW50ID0gcGFyZW50cy0+bnI7CiAKIAlkaWZmb3B0cyA9ICpvcHQ7CisJZGlmZl90cmVlX3NldHVwX3BhdGhzKGRpZmZvcHRzLnBhdGhzcGVjLnJhdywgJmRpZmZvcHRzKTsKIAlkaWZmb3B0cy5vdXRwdXRfZm9ybWF0ID0gRElGRl9GT1JNQVRfTk9fT1VUUFVUOwogCURJRkZfT1BUX1NFVCgmZGlmZm9wdHMsIFJFQ1VSU0lWRSk7CiAJRElGRl9PUFRfQ0xSKCZkaWZmb3B0cywgQUxMT1dfRVhURVJOQUwpOwpAQCAtMTE1MCw4ICsxMzI5LDEwIEBACiAKIAkJaWYgKHNob3dfbG9nX2ZpcnN0ICYmIGkgPT0gMCkgewogCQkJc2hvd19sb2cocmV2KTsKKwogCQkJaWYgKHJldi0+dmVyYm9zZV9oZWFkZXIgJiYgb3B0LT5vdXRwdXRfZm9ybWF0KQotCQkJCXB1dGNoYXIob3B0LT5saW5lX3Rlcm1pbmF0aW9uKTsKKwkJCQlwcmludGYoIiVzJWMiLCBkaWZmX2xpbmVfcHJlZml4KG9wdCksCisJCQkJICAgICAgIG9wdC0+bGluZV90ZXJtaW5hdGlvbik7CiAJCX0KIAkJZGlmZl9mbHVzaCgmZGlmZm9wdHMpOwogCX0KQEAgLTExNzksNyArMTM2MCw4IEBACiAKIAkJaWYgKG9wdC0+b3V0cHV0X2Zvcm1hdCAmIERJRkZfRk9STUFUX1BBVENIKSB7CiAJCQlpZiAobmVlZHNlcCkKLQkJCQlwdXRjaGFyKG9wdC0+bGluZV90ZXJtaW5hdGlvbik7CisJCQkJcHJpbnRmKCIlcyVjIiwgZGlmZl9saW5lX3ByZWZpeChvcHQpLAorCQkJCSAgICAgICBvcHQtPmxpbmVfdGVybWluYXRpb24pOwogCQkJZm9yIChwID0gcGF0aHM7IHA7IHAgPSBwLT5uZXh0KSB7CiAJCQkJaWYgKHAtPmxlbikKIAkJCQkJc2hvd19wYXRjaF9kaWZmKHAsIG51bV9wYXJlbnQsIGRlbnNlLApAQCAtMTE5NCw2ICsxMzc2LDggQEAKIAkJcGF0aHMgPSBwYXRocy0+bmV4dDsKIAkJZnJlZSh0bXApOwogCX0KKworCWRpZmZfdHJlZV9yZWxlYXNlX3BhdGhzKCZkaWZmb3B0cyk7CiB9CiAKIHZvaWQgZGlmZl90cmVlX2NvbWJpbmVkX21lcmdlKGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwgaW50IGRlbnNlLApkaWZmIC0tZ2l0IGEvY29tbWFuZC1saXN0LnR4dCBiL2NvbW1hbmQtbGlzdC50eHQKaW5kZXggMTRlYTY3YS4uYmY4MzMwMyAxMDA2NDQKLS0tIGEvY29tbWFuZC1saXN0LnR4dAorKysgYi9jb21tYW5kLWxpc3QudHh0CkBAIC0xMiw2ICsxMiw3IEBACiBnaXQtYnVuZGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnBvcmNlbGFpbgogZ2l0LWNhdC1maWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdW1iaW5naW50ZXJyb2dhdG9ycwogZ2l0LWNoZWNrLWF0dHIgICAgICAgICAgICAgICAgICAgICAgICAgIHB1cmVoZWxwZXJzCitnaXQtY2hlY2staWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgcHVyZWhlbHBlcnMKIGdpdC1jaGVja291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWlucG9yY2VsYWluIGNvbW1vbgogZ2l0LWNoZWNrb3V0LWluZGV4ICAgICAgICAgICAgICAgICAgICAgIHBsdW1iaW5nbWFuaXB1bGF0b3JzCiBnaXQtY2hlY2stcmVmLWZvcm1hdCAgICAgICAgICAgICAgICAgICAgcHVyZWhlbHBlcnMKQEAgLTI1LDYgKzI2LDkgQEAKIGdpdC1jb21taXQtdHJlZSAgICAgICAgICAgICAgICAgICAgICAgICBwbHVtYmluZ21hbmlwdWxhdG9ycwogZ2l0LWNvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2lsbGFyeW1hbmlwdWxhdG9ycwogZ2l0LWNvdW50LW9iamVjdHMgICAgICAgICAgICAgICAgICAgICAgIGFuY2lsbGFyeWludGVycm9nYXRvcnMKK2dpdC1jcmVkZW50aWFsICAgICAgICAgICAgICAgICAgICAgICAgICBwdXJlaGVscGVycworZ2l0LWNyZWRlbnRpYWwtY2FjaGUgICAgICAgICAgICAgICAgICAgIHB1cmVoZWxwZXJzCitnaXQtY3JlZGVudGlhbC1zdG9yZSAgICAgICAgICAgICAgICAgICAgcHVyZWhlbHBlcnMKIGdpdC1jdnNleHBvcnRjb21taXQgICAgICAgICAgICAgICAgICAgICBmb3JlaWduc2NtaW50ZXJmYWNlCiBnaXQtY3ZzaW1wb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWlnbnNjbWludGVyZmFjZQogZ2l0LWN2c3NlcnZlciAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVpZ25zY21pbnRlcmZhY2UKQEAgLTExMyw2ICsxMTcsNyBAQAogZ2l0LXNob3ctYnJhbmNoICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2lsbGFyeWludGVycm9nYXRvcnMKIGdpdC1zaG93LWluZGV4ICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVtYmluZ2ludGVycm9nYXRvcnMKIGdpdC1zaG93LXJlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVtYmluZ2ludGVycm9nYXRvcnMKK2dpdC1zaC1pMThuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXJlaGVscGVycwogZ2l0LXNoLXNldHVwICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1cmVoZWxwZXJzCiBnaXQtc3Rhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnBvcmNlbGFpbgogZ2l0LXN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5wb3JjZWxhaW4gY29tbW9uCmRpZmYgLS1naXQgYS9jb21taXQuYyBiL2NvbW1pdC5jCmluZGV4IDgyNDhhOTkuLjg4OGUwMmEgMTAwNjQ0Ci0tLSBhL2NvbW1pdC5jCisrKyBiL2NvbW1pdC5jCkBAIC05LDYgKzksOCBAQAogI2luY2x1ZGUgImdwZy1pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJtZXJnZXNvcnQuaCIKIAorc3RhdGljIHN0cnVjdCBjb21taXRfZXh0cmFfaGVhZGVyICpyZWFkX2NvbW1pdF9leHRyYV9oZWFkZXJfbGluZXMoY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuLCBjb25zdCBjaGFyICoqKTsKKwogaW50IHNhdmVfY29tbWl0X2J1ZmZlciA9IDE7CiAKIGNvbnN0IGNoYXIgKmNvbW1pdF90eXBlID0gImNvbW1pdCI7CkBAIC02OCw3ICs3MCw3IEBACiAJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKIAlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CiAKLQlpZiAoZ2V0X3NoYTEobmFtZSwgc2hhMSkpCisJaWYgKGdldF9zaGExX2NvbW1pdHRpc2gobmFtZSwgc2hhMSkpCiAJCXJldHVybiBOVUxMOwogCWNvbW1pdCA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlKHNoYTEpOwogCWlmICghY29tbWl0IHx8IHBhcnNlX2NvbW1pdChjb21taXQpKQpAQCAtNDYxLDE0ICs0NjMsMjMgQEAKIAl9CiB9CiAKLXZvaWQgY2xlYXJfY29tbWl0X21hcmtzKHN0cnVjdCBjb21taXQgKmNvbW1pdCwgdW5zaWduZWQgaW50IG1hcmspCit2b2lkIGNsZWFyX2NvbW1pdF9tYXJrc19tYW55KGludCBuciwgc3RydWN0IGNvbW1pdCAqKmNvbW1pdCwgdW5zaWduZWQgaW50IG1hcmspCiB7CiAJc3RydWN0IGNvbW1pdF9saXN0ICpsaXN0ID0gTlVMTDsKLQljb21taXRfbGlzdF9pbnNlcnQoY29tbWl0LCAmbGlzdCk7CisKKwl3aGlsZSAobnItLSkgeworCQljb21taXRfbGlzdF9pbnNlcnQoKmNvbW1pdCwgJmxpc3QpOworCQljb21taXQrKzsKKwl9CiAJd2hpbGUgKGxpc3QpCiAJCWNsZWFyX2NvbW1pdF9tYXJrc18xKCZsaXN0LCBwb3BfY29tbWl0KCZsaXN0KSwgbWFyayk7CiB9CiAKK3ZvaWQgY2xlYXJfY29tbWl0X21hcmtzKHN0cnVjdCBjb21taXQgKmNvbW1pdCwgdW5zaWduZWQgaW50IG1hcmspCit7CisJY2xlYXJfY29tbWl0X21hcmtzX21hbnkoMSwgJmNvbW1pdCwgbWFyayk7Cit9CisKIHZvaWQgY2xlYXJfY29tbWl0X21hcmtzX2Zvcl9vYmplY3RfYXJyYXkoc3RydWN0IG9iamVjdF9hcnJheSAqYSwgdW5zaWduZWQgbWFyaykKIHsKIAlzdHJ1Y3Qgb2JqZWN0ICpvYmplY3Q7CkBAIC02MDcsMzAgKzYxOCwxNyBAQAogCXJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgc3RydWN0IGNvbW1pdF9saXN0ICptZXJnZV9iYXNlc19tYW55KHN0cnVjdCBjb21taXQgKm9uZSwgaW50IG4sIHN0cnVjdCBjb21taXQgKip0d29zKQorLyogYWxsIGlucHV0IGNvbW1pdHMgaW4gb25lIGFuZCB0d29zW10gbXVzdCBoYXZlIGJlZW4gcGFyc2VkISAqLworc3RhdGljIHN0cnVjdCBjb21taXRfbGlzdCAqcGFpbnRfZG93bl90b19jb21tb24oc3RydWN0IGNvbW1pdCAqb25lLCBpbnQgbiwgc3RydWN0IGNvbW1pdCAqKnR3b3MpCiB7CiAJc3RydWN0IGNvbW1pdF9saXN0ICpsaXN0ID0gTlVMTDsKIAlzdHJ1Y3QgY29tbWl0X2xpc3QgKnJlc3VsdCA9IE5VTEw7CiAJaW50IGk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0JCWlmIChvbmUgPT0gdHdvc1tpXSkKLQkJCS8qCi0JCQkgKiBXZSBkbyBub3QgbWFyayB0aGlzIGV2ZW4gd2l0aCBSRVNVTFQgc28gd2UgZG8gbm90Ci0JCQkgKiBoYXZlIHRvIGNsZWFuIGl0IHVwLgotCQkJICovCi0JCQlyZXR1cm4gY29tbWl0X2xpc3RfaW5zZXJ0KG9uZSwgJnJlc3VsdCk7Ci0JfQotCi0JaWYgKHBhcnNlX2NvbW1pdChvbmUpKQotCQlyZXR1cm4gTlVMTDsKLQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0JCWlmIChwYXJzZV9jb21taXQodHdvc1tpXSkpCi0JCQlyZXR1cm4gTlVMTDsKLQl9Ci0KIAlvbmUtPm9iamVjdC5mbGFncyB8PSBQQVJFTlQxOwogCWNvbW1pdF9saXN0X2luc2VydF9ieV9kYXRlKG9uZSwgJmxpc3QpOworCWlmICghbikKKwkJcmV0dXJuIGxpc3Q7CiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogCQl0d29zW2ldLT5vYmplY3QuZmxhZ3MgfD0gUEFSRU5UMjsKIAkJY29tbWl0X2xpc3RfaW5zZXJ0X2J5X2RhdGUodHdvc1tpXSwgJmxpc3QpOwpAQCAtNjY5LDkgKzY2NywzNCBAQAogCQl9CiAJfQogCi0JLyogQ2xlYW4gdXAgdGhlIHJlc3VsdCB0byByZW1vdmUgc3RhbGUgb25lcyAqLwogCWZyZWVfY29tbWl0X2xpc3QobGlzdCk7Ci0JbGlzdCA9IHJlc3VsdDsgcmVzdWx0ID0gTlVMTDsKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgc3RydWN0IGNvbW1pdF9saXN0ICptZXJnZV9iYXNlc19tYW55KHN0cnVjdCBjb21taXQgKm9uZSwgaW50IG4sIHN0cnVjdCBjb21taXQgKip0d29zKQoreworCXN0cnVjdCBjb21taXRfbGlzdCAqbGlzdCA9IE5VTEw7CisJc3RydWN0IGNvbW1pdF9saXN0ICpyZXN1bHQgPSBOVUxMOworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworCQlpZiAob25lID09IHR3b3NbaV0pCisJCQkvKgorCQkJICogV2UgZG8gbm90IG1hcmsgdGhpcyBldmVuIHdpdGggUkVTVUxUIHNvIHdlIGRvIG5vdAorCQkJICogaGF2ZSB0byBjbGVhbiBpdCB1cC4KKwkJCSAqLworCQkJcmV0dXJuIGNvbW1pdF9saXN0X2luc2VydChvbmUsICZyZXN1bHQpOworCX0KKworCWlmIChwYXJzZV9jb21taXQob25lKSkKKwkJcmV0dXJuIE5VTEw7CisJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworCQlpZiAocGFyc2VfY29tbWl0KHR3b3NbaV0pKQorCQkJcmV0dXJuIE5VTEw7CisJfQorCisJbGlzdCA9IHBhaW50X2Rvd25fdG9fY29tbW9uKG9uZSwgbiwgdHdvcyk7CisKIAl3aGlsZSAobGlzdCkgewogCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKm5leHQgPSBsaXN0LT5uZXh0OwogCQlpZiAoIShsaXN0LT5pdGVtLT5vYmplY3QuZmxhZ3MgJiBTVEFMRSkpCkBAIC03MDksNiArNzMyLDYyIEBACiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGludCByZW1vdmVfcmVkdW5kYW50KHN0cnVjdCBjb21taXQgKiphcnJheSwgaW50IGNudCkKK3sKKwkvKgorCSAqIFNvbWUgY29tbWl0IGluIHRoZSBhcnJheSBtYXkgYmUgYW4gYW5jZXN0b3Igb2YKKwkgKiBhbm90aGVyIGNvbW1pdC4gIE1vdmUgc3VjaCBjb21taXQgdG8gdGhlIGVuZCBvZgorCSAqIHRoZSBhcnJheSwgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGNvbW1pdHMgdGhhdAorCSAqIGFyZSBpbmRlcGVuZGVudCBmcm9tIGVhY2ggb3RoZXIuCisJICovCisJc3RydWN0IGNvbW1pdCAqKndvcms7CisJdW5zaWduZWQgY2hhciAqcmVkdW5kYW50OworCWludCAqZmlsbGVkX2luZGV4OworCWludCBpLCBqLCBmaWxsZWQ7CisKKwl3b3JrID0geGNhbGxvYyhjbnQsIHNpemVvZigqd29yaykpOworCXJlZHVuZGFudCA9IHhjYWxsb2MoY250LCAxKTsKKwlmaWxsZWRfaW5kZXggPSB4bWFsbG9jKHNpemVvZigqZmlsbGVkX2luZGV4KSAqIChjbnQgLSAxKSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgY250OyBpKyspCisJCXBhcnNlX2NvbW1pdChhcnJheVtpXSk7CisJZm9yIChpID0gMDsgaSA8IGNudDsgaSsrKSB7CisJCXN0cnVjdCBjb21taXRfbGlzdCAqY29tbW9uOworCisJCWlmIChyZWR1bmRhbnRbaV0pCisJCQljb250aW51ZTsKKwkJZm9yIChqID0gZmlsbGVkID0gMDsgaiA8IGNudDsgaisrKSB7CisJCQlpZiAoaSA9PSBqIHx8IHJlZHVuZGFudFtqXSkKKwkJCQljb250aW51ZTsKKwkJCWZpbGxlZF9pbmRleFtmaWxsZWRdID0gajsKKwkJCXdvcmtbZmlsbGVkKytdID0gYXJyYXlbal07CisJCX0KKwkJY29tbW9uID0gcGFpbnRfZG93bl90b19jb21tb24oYXJyYXlbaV0sIGZpbGxlZCwgd29yayk7CisJCWlmIChhcnJheVtpXS0+b2JqZWN0LmZsYWdzICYgUEFSRU5UMikKKwkJCXJlZHVuZGFudFtpXSA9IDE7CisJCWZvciAoaiA9IDA7IGogPCBmaWxsZWQ7IGorKykKKwkJCWlmICh3b3JrW2pdLT5vYmplY3QuZmxhZ3MgJiBQQVJFTlQxKQorCQkJCXJlZHVuZGFudFtmaWxsZWRfaW5kZXhbal1dID0gMTsKKwkJY2xlYXJfY29tbWl0X21hcmtzKGFycmF5W2ldLCBhbGxfZmxhZ3MpOworCQlmb3IgKGogPSAwOyBqIDwgZmlsbGVkOyBqKyspCisJCQljbGVhcl9jb21taXRfbWFya3Mod29ya1tqXSwgYWxsX2ZsYWdzKTsKKwkJZnJlZV9jb21taXRfbGlzdChjb21tb24pOworCX0KKworCS8qIE5vdyBjb2xsZWN0IHRoZSByZXN1bHQgKi8KKwltZW1jcHkod29yaywgYXJyYXksIHNpemVvZigqYXJyYXkpICogY250KTsKKwlmb3IgKGkgPSBmaWxsZWQgPSAwOyBpIDwgY250OyBpKyspCisJCWlmICghcmVkdW5kYW50W2ldKQorCQkJYXJyYXlbZmlsbGVkKytdID0gd29ya1tpXTsKKwlmb3IgKGogPSBmaWxsZWQsIGkgPSAwOyBpIDwgY250OyBpKyspCisJCWlmIChyZWR1bmRhbnRbaV0pCisJCQlhcnJheVtqKytdID0gd29ya1tpXTsKKwlmcmVlKHdvcmspOworCWZyZWUocmVkdW5kYW50KTsKKwlmcmVlKGZpbGxlZF9pbmRleCk7CisJcmV0dXJuIGZpbGxlZDsKK30KKwogc3RydWN0IGNvbW1pdF9saXN0ICpnZXRfbWVyZ2VfYmFzZXNfbWFueShzdHJ1Y3QgY29tbWl0ICpvbmUsCiAJCQkJCSBpbnQgbiwKIAkJCQkJIHN0cnVjdCBjb21taXQgKip0d29zLApAQCAtNzE3LDcgKzc5Niw3IEBACiAJc3RydWN0IGNvbW1pdF9saXN0ICpsaXN0OwogCXN0cnVjdCBjb21taXQgKipyc2x0OwogCXN0cnVjdCBjb21taXRfbGlzdCAqcmVzdWx0OwotCWludCBjbnQsIGksIGo7CisJaW50IGNudCwgaTsKIAogCXJlc3VsdCA9IG1lcmdlX2Jhc2VzX21hbnkob25lLCBuLCB0d29zKTsKIAlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CkBAIC03MjcsOCArODA2LDcgQEAKIAlpZiAoIXJlc3VsdCB8fCAhcmVzdWx0LT5uZXh0KSB7CiAJCWlmIChjbGVhbnVwKSB7CiAJCQljbGVhcl9jb21taXRfbWFya3Mob25lLCBhbGxfZmxhZ3MpOwotCQkJZm9yIChpID0gMDsgaSA8IG47IGkrKykKLQkJCQljbGVhcl9jb21taXRfbWFya3ModHdvc1tpXSwgYWxsX2ZsYWdzKTsKKwkJCWNsZWFyX2NvbW1pdF9tYXJrc19tYW55KG4sIHR3b3MsIGFsbF9mbGFncyk7CiAJCX0KIAkJcmV0dXJuIHJlc3VsdDsKIAl9CkBAIC03NDYsMzAgKzgyNCwxMiBAQAogCWZyZWVfY29tbWl0X2xpc3QocmVzdWx0KTsKIAogCWNsZWFyX2NvbW1pdF9tYXJrcyhvbmUsIGFsbF9mbGFncyk7Ci0JZm9yIChpID0gMDsgaSA8IG47IGkrKykKLQkJY2xlYXJfY29tbWl0X21hcmtzKHR3b3NbaV0sIGFsbF9mbGFncyk7Ci0JZm9yIChpID0gMDsgaSA8IGNudCAtIDE7IGkrKykgewotCQlmb3IgKGogPSBpKzE7IGogPCBjbnQ7IGorKykgewotCQkJaWYgKCFyc2x0W2ldIHx8ICFyc2x0W2pdKQotCQkJCWNvbnRpbnVlOwotCQkJcmVzdWx0ID0gbWVyZ2VfYmFzZXNfbWFueShyc2x0W2ldLCAxLCAmcnNsdFtqXSk7Ci0JCQljbGVhcl9jb21taXRfbWFya3MocnNsdFtpXSwgYWxsX2ZsYWdzKTsKLQkJCWNsZWFyX2NvbW1pdF9tYXJrcyhyc2x0W2pdLCBhbGxfZmxhZ3MpOwotCQkJZm9yIChsaXN0ID0gcmVzdWx0OyBsaXN0OyBsaXN0ID0gbGlzdC0+bmV4dCkgewotCQkJCWlmIChyc2x0W2ldID09IGxpc3QtPml0ZW0pCi0JCQkJCXJzbHRbaV0gPSBOVUxMOwotCQkJCWlmIChyc2x0W2pdID09IGxpc3QtPml0ZW0pCi0JCQkJCXJzbHRbal0gPSBOVUxMOwotCQkJfQotCQl9Ci0JfQorCWNsZWFyX2NvbW1pdF9tYXJrc19tYW55KG4sIHR3b3MsIGFsbF9mbGFncyk7CiAKLQkvKiBTdXJ2aXZpbmcgb25lcyBpbiByc2x0W10gYXJlIHRoZSBpbmRlcGVuZGVudCByZXN1bHRzICovCisJY250ID0gcmVtb3ZlX3JlZHVuZGFudChyc2x0LCBjbnQpOwogCXJlc3VsdCA9IE5VTEw7Ci0JZm9yIChpID0gMDsgaSA8IGNudDsgaSsrKSB7Ci0JCWlmIChyc2x0W2ldKQotCQkJY29tbWl0X2xpc3RfaW5zZXJ0X2J5X2RhdGUocnNsdFtpXSwgJnJlc3VsdCk7Ci0JfQorCWZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykKKwkJY29tbWl0X2xpc3RfaW5zZXJ0X2J5X2RhdGUocnNsdFtpXSwgJnJlc3VsdCk7CiAJZnJlZShyc2x0KTsKIAlyZXR1cm4gcmVzdWx0OwogfQpAQCAtNzgwLDYgKzg0MCw5IEBACiAJcmV0dXJuIGdldF9tZXJnZV9iYXNlc19tYW55KG9uZSwgMSwgJnR3bywgY2xlYW51cCk7CiB9CiAKKy8qCisgKiBJcyAiY29tbWl0IiBhIGRlc2NlbmRhbnQgb2Ygb25lIG9mIHRoZSBlbGVtZW50cyBvbiB0aGUgIndpdGhfY29tbWl0IiBsaXN0PworICovCiBpbnQgaXNfZGVzY2VuZGFudF9vZihzdHJ1Y3QgY29tbWl0ICpjb21taXQsIHN0cnVjdCBjb21taXRfbGlzdCAqd2l0aF9jb21taXQpCiB7CiAJaWYgKCF3aXRoX2NvbW1pdCkKQEAgLTc4OSw4MSArODUyLDcyIEBACiAKIAkJb3RoZXIgPSB3aXRoX2NvbW1pdC0+aXRlbTsKIAkJd2l0aF9jb21taXQgPSB3aXRoX2NvbW1pdC0+bmV4dDsKLQkJaWYgKGluX21lcmdlX2Jhc2VzKG90aGVyLCAmY29tbWl0LCAxKSkKKwkJaWYgKGluX21lcmdlX2Jhc2VzKG90aGVyLCBjb21taXQpKQogCQkJcmV0dXJuIDE7CiAJfQogCXJldHVybiAwOwogfQogCi1pbnQgaW5fbWVyZ2VfYmFzZXMoc3RydWN0IGNvbW1pdCAqY29tbWl0LCBzdHJ1Y3QgY29tbWl0ICoqcmVmZXJlbmNlLCBpbnQgbnVtKQorLyoKKyAqIElzICJjb21taXQiIGFuIGFuY2VzdG9yIG9mIG9uZSBvZiB0aGUgInJlZmVyZW5jZXMiPworICovCitpbnQgaW5fbWVyZ2VfYmFzZXNfbWFueShzdHJ1Y3QgY29tbWl0ICpjb21taXQsIGludCBucl9yZWZlcmVuY2UsIHN0cnVjdCBjb21taXQgKipyZWZlcmVuY2UpCiB7Ci0Jc3RydWN0IGNvbW1pdF9saXN0ICpiYXNlcywgKmI7Ci0JaW50IHJldCA9IDA7CisJc3RydWN0IGNvbW1pdF9saXN0ICpiYXNlczsKKwlpbnQgcmV0ID0gMCwgaTsKIAotCWlmIChudW0gPT0gMSkKLQkJYmFzZXMgPSBnZXRfbWVyZ2VfYmFzZXMoY29tbWl0LCAqcmVmZXJlbmNlLCAxKTsKLQllbHNlCi0JCWRpZSgibm90IHlldCIpOwotCWZvciAoYiA9IGJhc2VzOyBiOyBiID0gYi0+bmV4dCkgewotCQlpZiAoIWhhc2hjbXAoY29tbWl0LT5vYmplY3Quc2hhMSwgYi0+aXRlbS0+b2JqZWN0LnNoYTEpKSB7Ci0JCQlyZXQgPSAxOwotCQkJYnJlYWs7Ci0JCX0KLQl9CisJaWYgKHBhcnNlX2NvbW1pdChjb21taXQpKQorCQlyZXR1cm4gcmV0OworCWZvciAoaSA9IDA7IGkgPCBucl9yZWZlcmVuY2U7IGkrKykKKwkJaWYgKHBhcnNlX2NvbW1pdChyZWZlcmVuY2VbaV0pKQorCQkJcmV0dXJuIHJldDsKIAorCWJhc2VzID0gcGFpbnRfZG93bl90b19jb21tb24oY29tbWl0LCBucl9yZWZlcmVuY2UsIHJlZmVyZW5jZSk7CisJaWYgKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgUEFSRU5UMikKKwkJcmV0ID0gMTsKKwljbGVhcl9jb21taXRfbWFya3MoY29tbWl0LCBhbGxfZmxhZ3MpOworCWNsZWFyX2NvbW1pdF9tYXJrc19tYW55KG5yX3JlZmVyZW5jZSwgcmVmZXJlbmNlLCBhbGxfZmxhZ3MpOwogCWZyZWVfY29tbWl0X2xpc3QoYmFzZXMpOwogCXJldHVybiByZXQ7CiB9CiAKKy8qCisgKiBJcyAiY29tbWl0IiBhbiBhbmNlc3RvciBvZiAoaS5lLiByZWFjaGFibGUgZnJvbSkgdGhlICJyZWZlcmVuY2UiPworICovCitpbnQgaW5fbWVyZ2VfYmFzZXMoc3RydWN0IGNvbW1pdCAqY29tbWl0LCBzdHJ1Y3QgY29tbWl0ICpyZWZlcmVuY2UpCit7CisJcmV0dXJuIGluX21lcmdlX2Jhc2VzX21hbnkoY29tbWl0LCAxLCAmcmVmZXJlbmNlKTsKK30KKwogc3RydWN0IGNvbW1pdF9saXN0ICpyZWR1Y2VfaGVhZHMoc3RydWN0IGNvbW1pdF9saXN0ICpoZWFkcykKIHsKIAlzdHJ1Y3QgY29tbWl0X2xpc3QgKnA7CiAJc3RydWN0IGNvbW1pdF9saXN0ICpyZXN1bHQgPSBOVUxMLCAqKnRhaWwgPSAmcmVzdWx0OwotCXN0cnVjdCBjb21taXQgKipvdGhlcjsKLQlzaXplX3QgbnVtX2hlYWQsIG51bV9vdGhlcjsKKwlzdHJ1Y3QgY29tbWl0ICoqYXJyYXk7CisJaW50IG51bV9oZWFkLCBpOwogCiAJaWYgKCFoZWFkcykKIAkJcmV0dXJuIE5VTEw7CiAKLQkvKiBBdm9pZCB1bm5lY2Vzc2FyeSByZWFsbG9jYXRpb25zICovCi0JZm9yIChwID0gaGVhZHMsIG51bV9oZWFkID0gMDsgcDsgcCA9IHAtPm5leHQpCi0JCW51bV9oZWFkKys7Ci0Jb3RoZXIgPSB4Y2FsbG9jKHNpemVvZigqb3RoZXIpLCBudW1faGVhZCk7Ci0KLQkvKiBGb3IgZWFjaCBjb21taXQsIHNlZSBpZiBpdCBjYW4gYmUgcmVhY2hlZCBieSBvdGhlcnMgKi8KLQlmb3IgKHAgPSBoZWFkczsgcDsgcCA9IHAtPm5leHQpIHsKLQkJc3RydWN0IGNvbW1pdF9saXN0ICpxLCAqYmFzZTsKLQotCQkvKiBEbyB3ZSBhbHJlYWR5IGhhdmUgdGhpcyBpbiB0aGUgcmVzdWx0PyAqLwotCQlmb3IgKHEgPSByZXN1bHQ7IHE7IHEgPSBxLT5uZXh0KQotCQkJaWYgKHAtPml0ZW0gPT0gcS0+aXRlbSkKLQkJCQlicmVhazsKLQkJaWYgKHEpCisJLyogVW5pcXVpZnkgKi8KKwlmb3IgKHAgPSBoZWFkczsgcDsgcCA9IHAtPm5leHQpCisJCXAtPml0ZW0tPm9iamVjdC5mbGFncyAmPSB+U1RBTEU7CisJZm9yIChwID0gaGVhZHMsIG51bV9oZWFkID0gMDsgcDsgcCA9IHAtPm5leHQpIHsKKwkJaWYgKHAtPml0ZW0tPm9iamVjdC5mbGFncyAmIFNUQUxFKQogCQkJY29udGludWU7Ci0KLQkJbnVtX290aGVyID0gMDsKLQkJZm9yIChxID0gaGVhZHM7IHE7IHEgPSBxLT5uZXh0KSB7Ci0JCQlpZiAocC0+aXRlbSA9PSBxLT5pdGVtKQotCQkJCWNvbnRpbnVlOwotCQkJb3RoZXJbbnVtX290aGVyKytdID0gcS0+aXRlbTsKLQkJfQotCQlpZiAobnVtX290aGVyKQotCQkJYmFzZSA9IGdldF9tZXJnZV9iYXNlc19tYW55KHAtPml0ZW0sIG51bV9vdGhlciwgb3RoZXIsIDEpOwotCQllbHNlCi0JCQliYXNlID0gTlVMTDsKLQkJLyoKLQkJICogSWYgcC0+aXRlbSBkb2VzIG5vdCBoYXZlIGFueXRoaW5nIGNvbW1vbiB3aXRoIG90aGVyCi0JCSAqIGNvbW1pdHMsIHRoZXJlIHdvbid0IGJlIGFueSBtZXJnZSBiYXNlLiAgSWYgaXQgaXMKLQkJICogcmVhY2hhYmxlIGZyb20gc29tZSBvZiB0aGUgb3RoZXJzLCBwLT5pdGVtIHdpbGwgYmUKLQkJICogdGhlIG1lcmdlIGJhc2UuICBJZiBpdHMgaGlzdG9yeSBpcyBjb25uZWN0ZWQgd2l0aAotCQkgKiBvdGhlcnMsIGJ1dCBwLT5pdGVtIGlzIG5vdCByZWFjaGFibGUgYnkgb3RoZXJzLCB3ZQotCQkgKiB3aWxsIGdldCBzb21ldGhpbmcgb3RoZXIgdGhhbiBwLT5pdGVtIGJhY2suCi0JCSAqLwotCQlpZiAoIWJhc2UgfHwgKGJhc2UtPml0ZW0gIT0gcC0+aXRlbSkpCi0JCQl0YWlsID0gJihjb21taXRfbGlzdF9pbnNlcnQocC0+aXRlbSwgdGFpbCktPm5leHQpOwotCQlmcmVlX2NvbW1pdF9saXN0KGJhc2UpOworCQlwLT5pdGVtLT5vYmplY3QuZmxhZ3MgfD0gU1RBTEU7CisJCW51bV9oZWFkKys7CiAJfQotCWZyZWUob3RoZXIpOworCWFycmF5ID0geGNhbGxvYyhzaXplb2YoKmFycmF5KSwgbnVtX2hlYWQpOworCWZvciAocCA9IGhlYWRzLCBpID0gMDsgcDsgcCA9IHAtPm5leHQpIHsKKwkJaWYgKHAtPml0ZW0tPm9iamVjdC5mbGFncyAmIFNUQUxFKSB7CisJCQlhcnJheVtpKytdID0gcC0+aXRlbTsKKwkJCXAtPml0ZW0tPm9iamVjdC5mbGFncyAmPSB+U1RBTEU7CisJCX0KKwl9CisJbnVtX2hlYWQgPSByZW1vdmVfcmVkdW5kYW50KGFycmF5LCBudW1faGVhZCk7CisJZm9yIChpID0gMDsgaSA8IG51bV9oZWFkOyBpKyspCisJCXRhaWwgPSAmY29tbWl0X2xpc3RfaW5zZXJ0KGFycmF5W2ldLCB0YWlsKS0+bmV4dDsKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC05ODcsNiArMTA0MSw3NiBAQAogCWZyZWUoYnVmKTsKIH0KIAorc3RhdGljIHN0cnVjdCB7CisJY2hhciByZXN1bHQ7CisJY29uc3QgY2hhciAqY2hlY2s7Cit9IHNpZ2NoZWNrX2dwZ19zdGF0dXNbXSA9IHsKKwl7ICdHJywgIlxuW0dOVVBHOl0gR09PRFNJRyAiIH0sCisJeyAnQicsICJcbltHTlVQRzpdIEJBRFNJRyAiIH0sCisJeyAnVScsICJcbltHTlVQRzpdIFRSVVNUX05FVkVSIiB9LAorCXsgJ1UnLCAiXG5bR05VUEc6XSBUUlVTVF9VTkRFRklORUQiIH0sCit9OworCitzdGF0aWMgdm9pZCBwYXJzZV9ncGdfb3V0cHV0KHN0cnVjdCBzaWduYXR1cmVfY2hlY2sgKnNpZ2MpCit7CisJY29uc3QgY2hhciAqYnVmID0gc2lnYy0+Z3BnX3N0YXR1czsKKwlpbnQgaTsKKworCS8qIEl0ZXJhdGUgb3ZlciBhbGwgc2VhcmNoIHN0cmluZ3MgKi8KKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzaWdjaGVja19ncGdfc3RhdHVzKTsgaSsrKSB7CisJCWNvbnN0IGNoYXIgKmZvdW5kLCAqbmV4dDsKKworCQlpZiAoIXByZWZpeGNtcChidWYsIHNpZ2NoZWNrX2dwZ19zdGF0dXNbaV0uY2hlY2sgKyAxKSkgeworCQkJLyogQXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBidWZmZXIgKi8KKwkJCWZvdW5kID0gYnVmICsgc3RybGVuKHNpZ2NoZWNrX2dwZ19zdGF0dXNbaV0uY2hlY2sgKyAxKTsKKwkJfSBlbHNlIHsKKwkJCWZvdW5kID0gc3Ryc3RyKGJ1Ziwgc2lnY2hlY2tfZ3BnX3N0YXR1c1tpXS5jaGVjayk7CisJCQlpZiAoIWZvdW5kKQorCQkJCWNvbnRpbnVlOworCQkJZm91bmQgKz0gc3RybGVuKHNpZ2NoZWNrX2dwZ19zdGF0dXNbaV0uY2hlY2spOworCQl9CisJCXNpZ2MtPnJlc3VsdCA9IHNpZ2NoZWNrX2dwZ19zdGF0dXNbaV0ucmVzdWx0OworCQkvKiBUaGUgdHJ1c3QgbWVzc2FnZXMgYXJlIG5vdCBmb2xsb3dlZCBieSBrZXkvc2lnbmVyIGluZm9ybWF0aW9uICovCisJCWlmIChzaWdjLT5yZXN1bHQgIT0gJ1UnKSB7CisJCQlzaWdjLT5rZXkgPSB4bWVtZHVweihmb3VuZCwgMTYpOworCQkJZm91bmQgKz0gMTc7CisJCQluZXh0ID0gc3RyY2hybnVsKGZvdW5kLCAnXG4nKTsKKwkJCXNpZ2MtPnNpZ25lciA9IHhtZW1kdXB6KGZvdW5kLCBuZXh0IC0gZm91bmQpOworCQl9CisJfQorfQorCit2b2lkIGNoZWNrX2NvbW1pdF9zaWduYXR1cmUoY29uc3Qgc3RydWN0IGNvbW1pdCogY29tbWl0LCBzdHJ1Y3Qgc2lnbmF0dXJlX2NoZWNrICpzaWdjKQoreworCXN0cnVjdCBzdHJidWYgcGF5bG9hZCA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBzdHJidWYgc2lnbmF0dXJlID0gU1RSQlVGX0lOSVQ7CisJc3RydWN0IHN0cmJ1ZiBncGdfb3V0cHV0ID0gU1RSQlVGX0lOSVQ7CisJc3RydWN0IHN0cmJ1ZiBncGdfc3RhdHVzID0gU1RSQlVGX0lOSVQ7CisJaW50IHN0YXR1czsKKworCXNpZ2MtPnJlc3VsdCA9ICdOJzsKKworCWlmIChwYXJzZV9zaWduZWRfY29tbWl0KGNvbW1pdC0+b2JqZWN0LnNoYTEsCisJCQkJJnBheWxvYWQsICZzaWduYXR1cmUpIDw9IDApCisJCWdvdG8gb3V0OworCXN0YXR1cyA9IHZlcmlmeV9zaWduZWRfYnVmZmVyKHBheWxvYWQuYnVmLCBwYXlsb2FkLmxlbiwKKwkJCQkgICAgICBzaWduYXR1cmUuYnVmLCBzaWduYXR1cmUubGVuLAorCQkJCSAgICAgICZncGdfb3V0cHV0LCAmZ3BnX3N0YXR1cyk7CisJaWYgKHN0YXR1cyAmJiAhZ3BnX291dHB1dC5sZW4pCisJCWdvdG8gb3V0OworCXNpZ2MtPmdwZ19vdXRwdXQgPSBzdHJidWZfZGV0YWNoKCZncGdfb3V0cHV0LCBOVUxMKTsKKwlzaWdjLT5ncGdfc3RhdHVzID0gc3RyYnVmX2RldGFjaCgmZ3BnX3N0YXR1cywgTlVMTCk7CisJcGFyc2VfZ3BnX291dHB1dChzaWdjKTsKKworIG91dDoKKwlzdHJidWZfcmVsZWFzZSgmZ3BnX3N0YXR1cyk7CisJc3RyYnVmX3JlbGVhc2UoJmdwZ19vdXRwdXQpOworCXN0cmJ1Zl9yZWxlYXNlKCZwYXlsb2FkKTsKKwlzdHJidWZfcmVsZWFzZSgmc2lnbmF0dXJlKTsKK30KKworCisKIHZvaWQgYXBwZW5kX21lcmdlX3RhZ19oZWFkZXJzKHN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50cywKIAkJCSAgICAgIHN0cnVjdCBjb21taXRfZXh0cmFfaGVhZGVyICoqKnRhaWwpCiB7CkBAIC0xMDQ0LDggKzExNjgsOSBAQAogCXJldHVybiAwOwogfQogCi1zdHJ1Y3QgY29tbWl0X2V4dHJhX2hlYWRlciAqcmVhZF9jb21taXRfZXh0cmFfaGVhZGVyX2xpbmVzKGNvbnN0IGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUsCi0JCQkJCQkJICAgY29uc3QgY2hhciAqKmV4Y2x1ZGUpCitzdGF0aWMgc3RydWN0IGNvbW1pdF9leHRyYV9oZWFkZXIgKnJlYWRfY29tbWl0X2V4dHJhX2hlYWRlcl9saW5lcygKKwljb25zdCBjaGFyICpidWZmZXIsIHNpemVfdCBzaXplLAorCWNvbnN0IGNoYXIgKipleGNsdWRlKQogewogCXN0cnVjdCBjb21taXRfZXh0cmFfaGVhZGVyICpleHRyYSA9IE5VTEwsICoqdGFpbCA9ICZleHRyYSwgKml0ID0gTlVMTDsKIAljb25zdCBjaGFyICpsaW5lLCAqbmV4dCwgKmVvZiwgKmVvYjsKQEAgLTExMTIsOCArMTIzNyw5MiBAQAogCXJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBpbnQgZmluZF9pbnZhbGlkX3V0ZjgoY29uc3QgY2hhciAqYnVmLCBpbnQgbGVuKQoreworCWludCBvZmZzZXQgPSAwOworCisJd2hpbGUgKGxlbikgeworCQl1bnNpZ25lZCBjaGFyIGMgPSAqYnVmKys7CisJCWludCBieXRlcywgYmFkX29mZnNldDsKKworCQlsZW4tLTsKKwkJb2Zmc2V0Kys7CisKKwkJLyogU2ltcGxlIFVTLUFTQ0lJPyBObyB3b3JyaWVzLiAqLworCQlpZiAoYyA8IDB4ODApCisJCQljb250aW51ZTsKKworCQliYWRfb2Zmc2V0ID0gb2Zmc2V0LTE7CisKKwkJLyoKKwkJICogQ291bnQgaG93IG1hbnkgbW9yZSBoaWdoIGJpdHMgc2V0OiB0aGF0J3MgaG93CisJCSAqIG1hbnkgbW9yZSBieXRlcyB0aGlzIHNlcXVlbmNlIHNob3VsZCBoYXZlLgorCQkgKi8KKwkJYnl0ZXMgPSAwOworCQl3aGlsZSAoYyAmIDB4NDApIHsKKwkJCWMgPDw9IDE7CisJCQlieXRlcysrOworCQl9CisKKwkJLyogTXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDUgbW9yZSBieXRlcyAqLworCQlpZiAoYnl0ZXMgPCAxIHx8IGJ5dGVzID4gNSkKKwkJCXJldHVybiBiYWRfb2Zmc2V0OworCisJCS8qIERvIHdlICpoYXZlKiB0aGF0IG1hbnkgYnl0ZXM/ICovCisJCWlmIChsZW4gPCBieXRlcykKKwkJCXJldHVybiBiYWRfb2Zmc2V0OworCisJCW9mZnNldCArPSBieXRlczsKKwkJbGVuIC09IGJ5dGVzOworCisJCS8qIEFuZCB2ZXJpZnkgdGhhdCB0aGV5IGFyZSBnb29kIGNvbnRpbnVhdGlvbiBieXRlcyAqLworCQlkbyB7CisJCQlpZiAoKCpidWYrKyAmIDB4YzApICE9IDB4ODApCisJCQkJcmV0dXJuIGJhZF9vZmZzZXQ7CisJCX0gd2hpbGUgKC0tYnl0ZXMpOworCisJCS8qIFdlIGNvdWxkL3Nob3VsZCBjaGVjayB0aGUgdmFsdWUgYW5kIGxlbmd0aCBoZXJlIHRvbyAqLworCX0KKwlyZXR1cm4gLTE7Cit9CisKKy8qCisgKiBUaGlzIHZlcmlmaWVzIHRoYXQgdGhlIGJ1ZmZlciBpcyBpbiBwcm9wZXIgdXRmOCBmb3JtYXQuCisgKgorICogSWYgaXQgaXNuJ3QsIGl0IGFzc3VtZXMgYW55IG5vbi11dGY4IGNoYXJhY3RlcnMgYXJlIExhdGluMSwKKyAqIGFuZCBkb2VzIHRoZSBjb252ZXJzaW9uLgorICoKKyAqIEZpeG1lOiB3ZSBzaG91bGQgcHJvYmFibHkgYWxzbyBkaXNhbGxvdyBvdmVybG9uZyBmb3JtcyBhbmQKKyAqIGludmFsaWQgY2hhcmFjdGVycy4gQnV0IHdlIGRvbid0IGRvIHRoYXQgY3VycmVudGx5LgorICovCitzdGF0aWMgaW50IHZlcmlmeV91dGY4KHN0cnVjdCBzdHJidWYgKmJ1ZikKK3sKKwlpbnQgb2sgPSAxOworCWxvbmcgcG9zID0gMDsKKworCWZvciAoOzspIHsKKwkJaW50IGJhZDsKKwkJdW5zaWduZWQgY2hhciBjOworCQl1bnNpZ25lZCBjaGFyIHJlcGxhY2VbMl07CisKKwkJYmFkID0gZmluZF9pbnZhbGlkX3V0ZjgoYnVmLT5idWYgKyBwb3MsIGJ1Zi0+bGVuIC0gcG9zKTsKKwkJaWYgKGJhZCA8IDApCisJCQlyZXR1cm4gb2s7CisJCXBvcyArPSBiYWQ7CisJCW9rID0gMDsKKwkJYyA9IGJ1Zi0+YnVmW3Bvc107CisJCXN0cmJ1Zl9yZW1vdmUoYnVmLCBwb3MsIDEpOworCisJCS8qIFdlIGtub3cgJ2MnIG11c3QgYmUgaW4gdGhlIHJhbmdlIDEyOC0yNTUgKi8KKwkJcmVwbGFjZVswXSA9IDB4YzAgKyAoYyA+PiA2KTsKKwkJcmVwbGFjZVsxXSA9IDB4ODAgKyAoYyAmIDB4M2YpOworCQlzdHJidWZfaW5zZXJ0KGJ1ZiwgcG9zLCByZXBsYWNlLCAyKTsKKwkJcG9zICs9IDI7CisJfQorfQorCiBzdGF0aWMgY29uc3QgY2hhciBjb21taXRfdXRmOF93YXJuW10gPQotIldhcm5pbmc6IGNvbW1pdCBtZXNzYWdlIGRvZXMgbm90IGNvbmZvcm0gdG8gVVRGLTguXG4iCisiV2FybmluZzogY29tbWl0IG1lc3NhZ2UgZGlkIG5vdCBjb25mb3JtIHRvIFVURi04LlxuIgogIllvdSBtYXkgd2FudCB0byBhbWVuZCBpdCBhZnRlciBmaXhpbmcgdGhlIG1lc3NhZ2UsIG9yIHNldCB0aGUgY29uZmlnXG4iCiAidmFyaWFibGUgaTE4bi5jb21taXRlbmNvZGluZyB0byB0aGUgZW5jb2RpbmcgeW91ciBwcm9qZWN0IHVzZXMuXG4iOwogCkBAIC0xMTcwLDcgKzEzNzksNyBAQAogCXN0cmJ1Zl9hZGRidWYoJmJ1ZmZlciwgbXNnKTsKIAogCS8qIEFuZCBjaGVjayB0aGUgZW5jb2RpbmcgKi8KLQlpZiAoZW5jb2RpbmdfaXNfdXRmOCAmJiAhaXNfdXRmOChidWZmZXIuYnVmKSkKKwlpZiAoZW5jb2RpbmdfaXNfdXRmOCAmJiAhdmVyaWZ5X3V0ZjgoJmJ1ZmZlcikpCiAJCWZwcmludGYoc3RkZXJyLCBjb21taXRfdXRmOF93YXJuKTsKIAogCWlmIChzaWduX2NvbW1pdCAmJiBkb19zaWduX2NvbW1pdCgmYnVmZmVyLCBzaWduX2NvbW1pdCkpCkBAIC0xMjI2LDMgKzE0MzUsMTMgQEAKIAluZXctPm5leHQgPSBOVUxMOwogCXJldHVybiAmbmV3LT5uZXh0OwogfQorCit2b2lkIHByaW50X2NvbW1pdF9saXN0KHN0cnVjdCBjb21taXRfbGlzdCAqbGlzdCwKKwkJICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdF9jdXIsCisJCSAgICAgICBjb25zdCBjaGFyICpmb3JtYXRfbGFzdCkKK3sKKwlmb3IgKCA7IGxpc3Q7IGxpc3QgPSBsaXN0LT5uZXh0KSB7CisJCWNvbnN0IGNoYXIgKmZvcm1hdCA9IGxpc3QtPm5leHQgPyBmb3JtYXRfY3VyIDogZm9ybWF0X2xhc3Q7CisJCXByaW50Zihmb3JtYXQsIHNoYTFfdG9faGV4KGxpc3QtPml0ZW0tPm9iamVjdC5zaGExKSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvY29tbWl0LmggYi9jb21taXQuaAppbmRleCBkNjE3ZmEzLi42ZTljN2NkIDEwMDY0NAotLS0gYS9jb21taXQuaAorKysgYi9jb21taXQuaApAQCAtNSw2ICs1LDcgQEAKICNpbmNsdWRlICJ0cmVlLmgiCiAjaW5jbHVkZSAic3RyYnVmLmgiCiAjaW5jbHVkZSAiZGVjb3JhdGUuaCIKKyNpbmNsdWRlICJncGctaW50ZXJmYWNlLmgiCiAKIHN0cnVjdCBjb21taXRfbGlzdCB7CiAJc3RydWN0IGNvbW1pdCAqaXRlbTsKQEAgLTg2LDkgKzg3LDExIEBACiAJZW51bSBkYXRlX21vZGUgZGF0ZV9tb2RlOwogCXVuc2lnbmVkIGRhdGVfbW9kZV9leHBsaWNpdDoxOwogCWludCBuZWVkXzhiaXRfY3RlOwotCWludCBzaG93X25vdGVzOworCWNoYXIgKm5vdGVzX21lc3NhZ2U7CiAJc3RydWN0IHJlZmxvZ193YWxrX2luZm8gKnJlZmxvZ19pbmZvOwogCWNvbnN0IGNoYXIgKm91dHB1dF9lbmNvZGluZzsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKm1haWxtYXA7CisJaW50IGNvbG9yOwogfTsKIAogc3RydWN0IHVzZXJmb3JtYXRfd2FudCB7CkBAIC05OCw5ICsxMDEsOSBAQAogZXh0ZXJuIGludCBoYXNfbm9uX2FzY2lpKGNvbnN0IGNoYXIgKnRleHQpOwogc3RydWN0IHJldl9pbmZvOyAvKiBpbiByZXZpc2lvbi5oLCBpdCBjaXJjdWxhcmx5IHVzZXMgZW51bSBjbWl0X2ZtdCAqLwogZXh0ZXJuIGNoYXIgKmxvZ21zZ19yZWVuY29kZShjb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsCisJCQkgICAgIGNoYXIgKipjb21taXRfZW5jb2RpbmcsCiAJCQkgICAgIGNvbnN0IGNoYXIgKm91dHB1dF9lbmNvZGluZyk7Ci1leHRlcm4gY2hhciAqcmVlbmNvZGVfY29tbWl0X21lc3NhZ2UoY29uc3Qgc3RydWN0IGNvbW1pdCAqY29tbWl0LAotCQkJCSAgICAgY29uc3QgY2hhciAqKmVuY29kaW5nX3ApOworZXh0ZXJuIHZvaWQgbG9nbXNnX2ZyZWUoY2hhciAqbXNnLCBjb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpOwogZXh0ZXJuIHZvaWQgZ2V0X2NvbW1pdF9mb3JtYXQoY29uc3QgY2hhciAqYXJnLCBzdHJ1Y3QgcmV2X2luZm8gKik7CiBleHRlcm4gY29uc3QgY2hhciAqZm9ybWF0X3N1YmplY3Qoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKm1zZywKIAkJCQkgIGNvbnN0IGNoYXIgKmxpbmVfc2VwYXJhdG9yKTsKQEAgLTEzNiw2ICsxMzksNyBAQAogc3RydWN0IGNvbW1pdCAqcG9wX2NvbW1pdChzdHJ1Y3QgY29tbWl0X2xpc3QgKipzdGFjayk7CiAKIHZvaWQgY2xlYXJfY29tbWl0X21hcmtzKHN0cnVjdCBjb21taXQgKmNvbW1pdCwgdW5zaWduZWQgaW50IG1hcmspOwordm9pZCBjbGVhcl9jb21taXRfbWFya3NfbWFueShpbnQgbnIsIHN0cnVjdCBjb21taXQgKipjb21taXQsIHVuc2lnbmVkIGludCBtYXJrKTsKIHZvaWQgY2xlYXJfY29tbWl0X21hcmtzX2Zvcl9vYmplY3RfYXJyYXkoc3RydWN0IG9iamVjdF9hcnJheSAqYSwgdW5zaWduZWQgbWFyayk7CiAKIC8qCkBAIC0xNjMsMTUgKzE2NywyMSBAQAogZXh0ZXJuIHN0cnVjdCBjb21taXRfbGlzdCAqZ2V0X21lcmdlX2Jhc2VzX21hbnkoc3RydWN0IGNvbW1pdCAqb25lLCBpbnQgbiwgc3RydWN0IGNvbW1pdCAqKnR3b3MsIGludCBjbGVhbnVwKTsKIGV4dGVybiBzdHJ1Y3QgY29tbWl0X2xpc3QgKmdldF9vY3RvcHVzX21lcmdlX2Jhc2VzKHN0cnVjdCBjb21taXRfbGlzdCAqaW4pOwogCisvKiBsYXJnZXN0IHBvc2l0aXZlIG51bWJlciBhIHNpZ25lZCAzMi1iaXQgaW50ZWdlciBjYW4gY29udGFpbiAqLworI2RlZmluZSBJTkZJTklURV9ERVBUSCAweDdmZmZmZmZmCisKIGV4dGVybiBpbnQgcmVnaXN0ZXJfc2hhbGxvdyhjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKTsKIGV4dGVybiBpbnQgdW5yZWdpc3Rlcl9zaGFsbG93KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpOwogZXh0ZXJuIGludCBmb3JfZWFjaF9jb21taXRfZ3JhZnQoZWFjaF9jb21taXRfZ3JhZnRfZm4sIHZvaWQgKik7CiBleHRlcm4gaW50IGlzX3JlcG9zaXRvcnlfc2hhbGxvdyh2b2lkKTsKIGV4dGVybiBzdHJ1Y3QgY29tbWl0X2xpc3QgKmdldF9zaGFsbG93X2NvbW1pdHMoc3RydWN0IG9iamVjdF9hcnJheSAqaGVhZHMsCiAJCWludCBkZXB0aCwgaW50IHNoYWxsb3dfZmxhZywgaW50IG5vdF9zaGFsbG93X2ZsYWcpOworZXh0ZXJuIHZvaWQgY2hlY2tfc2hhbGxvd19maWxlX2Zvcl91cGRhdGUodm9pZCk7CitleHRlcm4gdm9pZCBzZXRfYWx0ZXJuYXRlX3NoYWxsb3dfZmlsZShjb25zdCBjaGFyICpwYXRoKTsKIAogaW50IGlzX2Rlc2NlbmRhbnRfb2Yoc3RydWN0IGNvbW1pdCAqLCBzdHJ1Y3QgY29tbWl0X2xpc3QgKik7Ci1pbnQgaW5fbWVyZ2VfYmFzZXMoc3RydWN0IGNvbW1pdCAqLCBzdHJ1Y3QgY29tbWl0ICoqLCBpbnQpOworaW50IGluX21lcmdlX2Jhc2VzKHN0cnVjdCBjb21taXQgKiwgc3RydWN0IGNvbW1pdCAqKTsKK2ludCBpbl9tZXJnZV9iYXNlc19tYW55KHN0cnVjdCBjb21taXQgKiwgaW50LCBzdHJ1Y3QgY29tbWl0ICoqKTsKIAogZXh0ZXJuIGludCBpbnRlcmFjdGl2ZV9hZGQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgsIGludCBwYXRjaCk7CiBleHRlcm4gaW50IHJ1bl9hZGRfaW50ZXJhY3RpdmUoY29uc3QgY2hhciAqcmV2aXNpb24sIGNvbnN0IGNoYXIgKnBhdGNoX21vZGUsCkBAIC0yMDQsNyArMjE0LDYgQEAKIAkJCQlzdHJ1Y3QgY29tbWl0X2V4dHJhX2hlYWRlciAqKTsKIAogZXh0ZXJuIHN0cnVjdCBjb21taXRfZXh0cmFfaGVhZGVyICpyZWFkX2NvbW1pdF9leHRyYV9oZWFkZXJzKHN0cnVjdCBjb21taXQgKiwgY29uc3QgY2hhciAqKik7Ci1leHRlcm4gc3RydWN0IGNvbW1pdF9leHRyYV9oZWFkZXIgKnJlYWRfY29tbWl0X2V4dHJhX2hlYWRlcl9saW5lcyhjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4sIGNvbnN0IGNoYXIgKiopOwogCiBleHRlcm4gdm9pZCBmcmVlX2NvbW1pdF9leHRyYV9oZWFkZXJzKHN0cnVjdCBjb21taXRfZXh0cmFfaGVhZGVyICpleHRyYSk7CiAKQEAgLTIyMyw0ICsyMzIsMTcgQEAKIAogZXh0ZXJuIGludCBwYXJzZV9zaWduZWRfY29tbWl0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsCiAJCQkgICAgICAgc3RydWN0IHN0cmJ1ZiAqbWVzc2FnZSwgc3RydWN0IHN0cmJ1ZiAqc2lnbmF0dXJlKTsKK2V4dGVybiB2b2lkIHByaW50X2NvbW1pdF9saXN0KHN0cnVjdCBjb21taXRfbGlzdCAqbGlzdCwKKwkJCSAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdF9jdXIsCisJCQkgICAgICBjb25zdCBjaGFyICpmb3JtYXRfbGFzdCk7CisKKy8qCisgKiBDaGVjayB0aGUgc2lnbmF0dXJlIG9mIHRoZSBnaXZlbiBjb21taXQuIFRoZSByZXN1bHQgb2YgdGhlIGNoZWNrIGlzIHN0b3JlZAorICogaW4gc2lnLT5jaGVja19yZXN1bHQsICdHJyBmb3IgYSBnb29kIHNpZ25hdHVyZSwgJ1UnIGZvciBhIGdvb2Qgc2lnbmF0dXJlCisgKiBmcm9tIGFuIHVudHJ1c3RlZCBzaWduZXIsICdCJyBmb3IgYSBiYWQgc2lnbmF0dXJlIGFuZCAnTicgZm9yIG5vIHNpZ25hdHVyZQorICogYXQgYWxsLiAgVGhpcyBtYXkgYWxsb2NhdGUgbWVtb3J5IGZvciBzaWctPmdwZ19vdXRwdXQsIHNpZy0+Z3BnX3N0YXR1cywKKyAqIHNpZy0+c2lnbmVyIGFuZCBzaWctPmtleS4KKyAqLworZXh0ZXJuIHZvaWQgY2hlY2tfY29tbWl0X3NpZ25hdHVyZShjb25zdCBzdHJ1Y3QgY29tbWl0KiBjb21taXQsIHN0cnVjdCBzaWduYXR1cmVfY2hlY2sgKnNpZ2MpOworCiAjZW5kaWYgLyogQ09NTUlUX0ggKi8KZGlmZiAtLWdpdCBhL2NvbXBhdC9jbGlwcGVkLXdyaXRlLmMgYi9jb21wYXQvY2xpcHBlZC13cml0ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4Zjk4ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb21wYXQvY2xpcHBlZC13cml0ZS5jCkBAIC0wLDAgKzEsMTMgQEAKKyNpbmNsdWRlICIuLi9naXQtY29tcGF0LXV0aWwuaCIKKyN1bmRlZiB3cml0ZQorCisvKgorICogVmVyc2lvbiBvZiB3cml0ZSB0aGF0IHdpbGwgd3JpdGUgYXQgbW9zdCBJTlRfTUFYIGJ5dGVzLgorICogV29ya2Fyb3VuZCBhIHhudSBidWcgb24gTWFjIE9TIFgKKyAqLworc3NpemVfdCBjbGlwcGVkX3dyaXRlKGludCBmaWxkZXMsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IG5ieXRlKQoreworCWlmIChuYnl0ZSA+IElOVF9NQVgpCisJCW5ieXRlID0gSU5UX01BWDsKKwlyZXR1cm4gd3JpdGUoZmlsZGVzLCBidWYsIG5ieXRlKTsKK30KZGlmZiAtLWdpdCBhL2NvbXBhdC9jeWd3aW4uYyBiL2NvbXBhdC9jeWd3aW4uYwppbmRleCBkZmU5YjMwLi44NzFiNDFkIDEwMDY0NAotLS0gYS9jb21wYXQvY3lnd2luLmMKKysrIGIvY29tcGF0L2N5Z3dpbi5jCkBAIC0xLDggKzEsMjggQEAKKyNkZWZpbmUgQ1lHV0lOX0MKICNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgorI2lmZGVmIENZR1dJTl9WMTVfV0lOMzJBUEkKICNpbmNsdWRlICIuLi9naXQtY29tcGF0LXV0aWwuaCIKICNpbmNsdWRlICJ3aW4zMi5oIgorI2Vsc2UKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy9lcnJuby5oPgorI2luY2x1ZGUgIndpbjMyLmgiCisjaW5jbHVkZSAiLi4vZ2l0LWNvbXBhdC11dGlsLmgiCisjZW5kaWYKICNpbmNsdWRlICIuLi9jYWNoZS5oIiAvKiB0byByZWFkIGNvbmZpZ3VyYXRpb24gKi8KIAorLyoKKyAqIFJldHVybiBQT1NJWCBwZXJtaXNzaW9uIGJpdHMsIHJlZ2FyZGxlc3Mgb2YgY29yZS5pZ25vcmVjeWd3aW5mc3RyaWNrcworICovCitpbnQgY3lnd2luX2dldF9zdF9tb2RlX2JpdHMoY29uc3QgY2hhciAqcGF0aCwgaW50ICptb2RlKQoreworCXN0cnVjdCBzdGF0IHN0OworCWlmIChsc3RhdChwYXRoLCAmc3QpIDwgMCkKKwkJcmV0dXJuIC0xOworCSptb2RlID0gc3Quc3RfbW9kZTsKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGlubGluZSB2b2lkIGZpbGV0aW1lX3RvX3RpbWVzcGVjKGNvbnN0IEZJTEVUSU1FICpmdCwgc3RydWN0IHRpbWVzcGVjICp0cykKIHsKIAlsb25nIGxvbmcgd2luVGltZSA9ICgobG9uZyBsb25nKWZ0LT5kd0hpZ2hEYXRlVGltZSA8PCAzMikgKwpkaWZmIC0tZ2l0IGEvY29tcGF0L2N5Z3dpbi5oIGIvY29tcGF0L2N5Z3dpbi5oCmluZGV4IGEzMjI5ZjUuLmMwNDk2NWEgMTAwNjQ0Ci0tLSBhL2NvbXBhdC9jeWd3aW4uaAorKysgYi9jb21wYXQvY3lnd2luLmgKQEAgLTQsNiArNCwxMSBAQAogdHlwZWRlZiBpbnQgKCpzdGF0X2ZuX3QpKGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopOwogZXh0ZXJuIHN0YXRfZm5fdCBjeWd3aW5fc3RhdF9mbjsKIGV4dGVybiBzdGF0X2ZuX3QgY3lnd2luX2xzdGF0X2ZuOworaW50IGN5Z3dpbl9nZXRfc3RfbW9kZV9iaXRzKGNvbnN0IGNoYXIgKnBhdGgsIGludCAqbW9kZSk7CiAKKyNkZWZpbmUgZ2V0X3N0X21vZGVfYml0cyhwLG0pIGN5Z3dpbl9nZXRfc3RfbW9kZV9iaXRzKChwKSwobSkpCisjaWZuZGVmIENZR1dJTl9DCisvKiBjeWd3aW4uYyBuZWVkcyB0aGUgb3JpZ2luYWwgbHN0YXQoKSAqLwogI2RlZmluZSBzdGF0KHBhdGgsIGJ1ZikgKCpjeWd3aW5fc3RhdF9mbikocGF0aCwgYnVmKQogI2RlZmluZSBsc3RhdChwYXRoLCBidWYpICgqY3lnd2luX2xzdGF0X2ZuKShwYXRoLCBidWYpCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvbXBhdC9mbm1hdGNoL2ZubWF0Y2guYyBiL2NvbXBhdC9mbm1hdGNoL2ZubWF0Y2guYwppbmRleCA5NDczYWVkLi41ZWYwNjg1IDEwMDY0NAotLS0gYS9jb21wYXQvZm5tYXRjaC9mbm1hdGNoLmMKKysrIGIvY29tcGF0L2ZubWF0Y2gvZm5tYXRjaC5jCkBAIC01NSw3ICs1NSw4IEBACiAgICBwcm9ncmFtIHVuZGVyc3RhbmQgYGNvbmZpZ3VyZSAtLXdpdGgtZ251LWxpYmMnIGFuZCBvbWl0IHRoZSBvYmplY3QgZmlsZXMsCiAgICBpdCBpcyBzaW1wbGVyIHRvIGp1c3QgZG8gdGhpcyBpbiB0aGUgc291cmNlIGZvciBlYWNoIHN1Y2ggZmlsZS4gICovCiAKLSNpZiBkZWZpbmVkIF9MSUJDIHx8ICFkZWZpbmVkIF9fR05VX0xJQlJBUllfXworI2lmIGRlZmluZWQgTk9fRk5NQVRDSCB8fCBkZWZpbmVkIE5PX0ZOTUFUQ0hfQ0FTRUZPTEQgfHwgXAorICAgIGRlZmluZWQgX0xJQkMgfHwgIWRlZmluZWQgX19HTlVfTElCUkFSWV9fCiAKIAogIyBpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCAhZGVmaW5lZCBpc2FzY2lpCkBAIC0xMzUsOSArMTM2LDkgQEAKIAogIyBpZiAhZGVmaW5lZCBIQVZFX19fU1RSQ0hSTlVMICYmICFkZWZpbmVkIF9MSUJDCiBzdGF0aWMgY2hhciAqCi1fX3N0cmNocm51bCAocywgYykKLSAgICAgY29uc3QgY2hhciAqczsKLSAgICAgaW50IGM7CitfX3N0cmNocm51bCAoY29uc3QgY2hhciAqcywgaW50IGMpCisKKwogewogICBjaGFyICpyZXN1bHQgPSBzdHJjaHIgKHMsIGMpOwogICBpZiAocmVzdWx0ID09IE5VTEwpCkBAIC0xNTksMTEgKzE2MCwxMSBAQAogICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKIHN0YXRpYyBpbnQKIGludGVybmFsX2Z1bmN0aW9uCi1pbnRlcm5hbF9mbm1hdGNoIChwYXR0ZXJuLCBzdHJpbmcsIG5vX2xlYWRpbmdfcGVyaW9kLCBmbGFncykKLSAgICAgY29uc3QgY2hhciAqcGF0dGVybjsKLSAgICAgY29uc3QgY2hhciAqc3RyaW5nOwotICAgICBpbnQgbm9fbGVhZGluZ19wZXJpb2Q7Ci0gICAgIGludCBmbGFnczsKK2ludGVybmFsX2ZubWF0Y2ggKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGNvbnN0IGNoYXIgKnN0cmluZywgaW50IG5vX2xlYWRpbmdfcGVyaW9kLCBpbnQgZmxhZ3MpCisKKworCisKIHsKICAgcmVnaXN0ZXIgY29uc3QgY2hhciAqcCA9IHBhdHRlcm4sICpuID0gc3RyaW5nOwogICByZWdpc3RlciB1bnNpZ25lZCBjaGFyIGM7CkBAIC0zNDUsNyArMzQ2LDcgQEAKIAogCQkgICAgZm9yICg7OykKIAkJICAgICAgewotCQkJaWYgKGMxID09IENIQVJfQ0xBU1NfTUFYX0xFTkdUSCkKKwkJCWlmIChjMSA+IENIQVJfQ0xBU1NfTUFYX0xFTkdUSCkKIAkJCSAgLyogVGhlIG5hbWUgaXMgdG9vIGxvbmcgYW5kIHRoZXJlZm9yZSB0aGUgcGF0dGVybgogCQkJICAgICBpcyBpbGwtZm9ybWVkLiAgKi8KIAkJCSAgcmV0dXJuIEZOTV9OT01BVENIOwpAQCAtNDgxLDEwICs0ODIsMTAgQEAKIAogCiBpbnQKLWZubWF0Y2ggKHBhdHRlcm4sIHN0cmluZywgZmxhZ3MpCi0gICAgIGNvbnN0IGNoYXIgKnBhdHRlcm47Ci0gICAgIGNvbnN0IGNoYXIgKnN0cmluZzsKLSAgICAgaW50IGZsYWdzOworZm5tYXRjaCAoY29uc3QgY2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqc3RyaW5nLCBpbnQgZmxhZ3MpCisKKworCiB7CiAgIHJldHVybiBpbnRlcm5hbF9mbm1hdGNoIChwYXR0ZXJuLCBzdHJpbmcsIGZsYWdzICYgRk5NX1BFUklPRCwgZmxhZ3MpOwogfQpkaWZmIC0tZ2l0IGEvY29tcGF0L21pbmd3LmMgYi9jb21wYXQvbWluZ3cuYwppbmRleCBhZmM4OTJkLi5kYWUzMGEwIDEwMDY0NAotLS0gYS9jb21wYXQvbWluZ3cuYworKysgYi9jb21wYXQvbWluZ3cuYwpAQCAtMjU2LDYgKzI1Niw4IEBACiAKIAl3aGlsZSAoKHJldCA9IHJtZGlyKHBhdGhuYW1lKSkgPT0gLTEgJiYgdHJpZXMgPCBBUlJBWV9TSVpFKGRlbGF5KSkgewogCQlpZiAoIWlzX2ZpbGVfaW5fdXNlX2Vycm9yKEdldExhc3RFcnJvcigpKSkKKwkJCWVycm5vID0gZXJyX3dpbl90b19wb3NpeChHZXRMYXN0RXJyb3IoKSk7CisJCWlmIChlcnJubyAhPSBFQUNDRVMpCiAJCQlicmVhazsKIAkJaWYgKCFpc19kaXJfZW1wdHkocGF0aG5hbWUpKSB7CiAJCQllcnJubyA9IEVOT1RFTVBUWTsKQEAgLTI3MSw3ICsyNzMsNyBAQAogCQlTbGVlcChkZWxheVt0cmllc10pOwogCQl0cmllcysrOwogCX0KLQl3aGlsZSAocmV0ID09IC0xICYmIGlzX2ZpbGVfaW5fdXNlX2Vycm9yKEdldExhc3RFcnJvcigpKSAmJgorCXdoaWxlIChyZXQgPT0gLTEgJiYgZXJybm8gPT0gRUFDQ0VTICYmIGlzX2ZpbGVfaW5fdXNlX2Vycm9yKEdldExhc3RFcnJvcigpKSAmJgogCSAgICAgICBhc2tfeWVzX25vX2lmX3Bvc3NpYmxlKCJEZWxldGlvbiBvZiBkaXJlY3RvcnkgJyVzJyBmYWlsZWQuICIKIAkJCSJTaG91bGQgSSB0cnkgYWdhaW4/IiwgcGF0aG5hbWUpKQogCSAgICAgICByZXQgPSBybWRpcihwYXRobmFtZSk7CkBAIC0zMTksNiArMzIxLDMxIEBACiAJcmV0dXJuIHdyaXRlKGZkLCBidWYsIG1pbihjb3VudCwgMzEgKiAxMDI0ICogMTAyNCkpOwogfQogCitzdGF0aWMgQk9PTCBXSU5BUEkgY3RybF9pZ25vcmUoRFdPUkQgdHlwZSkKK3sKKwlyZXR1cm4gVFJVRTsKK30KKworI3VuZGVmIGZnZXRjCitpbnQgbWluZ3dfZmdldGMoRklMRSAqc3RyZWFtKQoreworCWludCBjaDsKKwlpZiAoIWlzYXR0eShfZmlsZW5vKHN0cmVhbSkpKQorCQlyZXR1cm4gZmdldGMoc3RyZWFtKTsKKworCVNldENvbnNvbGVDdHJsSGFuZGxlcihjdHJsX2lnbm9yZSwgVFJVRSk7CisJd2hpbGUgKDEpIHsKKwkJY2ggPSBmZ2V0YyhzdHJlYW0pOworCQlpZiAoY2ggIT0gRU9GIHx8IEdldExhc3RFcnJvcigpICE9IEVSUk9SX09QRVJBVElPTl9BQk9SVEVEKQorCQkJYnJlYWs7CisKKwkJLyogQ3RybCtDIHdhcyBwcmVzc2VkLCBzaW11bGF0ZSBTSUdJTlQgYW5kIHJldHJ5ICovCisJCW1pbmd3X3JhaXNlKFNJR0lOVCk7CisJfQorCVNldENvbnNvbGVDdHJsSGFuZGxlcihjdHJsX2lnbm9yZSwgRkFMU0UpOworCXJldHVybiBjaDsKK30KKwogI3VuZGVmIGZvcGVuCiBGSUxFICptaW5nd19mb3BlbiAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKm90eXBlKQogewpAQCAtMzM1LDYgKzM2MiwyOCBAQAogCXJldHVybiBmcmVvcGVuKGZpbGVuYW1lLCBvdHlwZSwgc3RyZWFtKTsKIH0KIAorI3VuZGVmIGZmbHVzaAoraW50IG1pbmd3X2ZmbHVzaChGSUxFICpzdHJlYW0pCit7CisJaW50IHJldCA9IGZmbHVzaChzdHJlYW0pOworCisJLyoKKwkgKiB3cml0ZSgpIGlzIHVzZWQgYmVoaW5kIHRoZSBzY2VuZXMgb2Ygc3RkaW8gb3V0cHV0IGZ1bmN0aW9ucy4KKwkgKiBTaW5jZSBnaXQgY29kZSBkb2VzIG5vdCBjaGVjayBmb3IgZXJyb3JzIGFmdGVyIGVhY2ggc3RkaW8gd3JpdGUKKwkgKiBvcGVyYXRpb24sIGl0IGNhbiBoYXBwZW4gdGhhdCB3cml0ZSgpIGlzIGNhbGxlZCBieSBhIGxhdGVyCisJICogc3RkaW8gZnVuY3Rpb24gZXZlbiBpZiBhbiBlYXJsaWVyIHdyaXRlKCkgY2FsbCBmYWlsZWQuIEluIHRoZQorCSAqIGNhc2Ugb2YgYSBwaXBlIHdob3NlIHJlYWRhYmxlIGVuZCB3YXMgY2xvc2VkLCBvbmx5IHRoZSBmaXJzdAorCSAqIGNhbGwgdG8gd3JpdGUoKSByZXBvcnRzIEVQSVBFIG9uIFdpbmRvd3MuIFN1YnNlcXVlbnQgd3JpdGUoKQorCSAqIGNhbGxzIHJlcG9ydCBFSU5WQUwuIEl0IGlzIGltcG9zc2libGUgdG8gbm90aWNlIHdoZXRoZXIgdGhpcworCSAqIGZmbHVzaCBpbnZvY2F0aW9uIHRyaWdnZXJlZCBzdWNoIGEgY2FzZSwgdGhlcmVmb3JlLCB3ZSBoYXZlIHRvCisJICogY2F0Y2ggYWxsIEVJTlZBTCBlcnJvcnMgd2hvbGUtc2FsZS4KKwkgKi8KKwlpZiAocmV0ICYmIGVycm5vID09IEVJTlZBTCkKKwkJZXJybm8gPSBFUElQRTsKKworCXJldHVybiByZXQ7Cit9CisKIC8qCiAgKiBUaGUgdW5pdCBvZiBGSUxFVElNRSBpcyAxMDAtbmFub3NlY29uZHMgc2luY2UgSmFudWFyeSAxLCAxNjAxLCBVVEMuCiAgKiBSZXR1cm5zIHRoZSAxMDAtbmFub3NlY29uZHMgKCJoZWt0byBuYW5vc2Vjb25kcyIpIHNpbmNlIHRoZSBlcG9jaC4KQEAgLTE1MjQsNyArMTU3Myw3IEBACiBzdGF0aWMgSEFORExFIHRpbWVyX3RocmVhZDsKIHN0YXRpYyBpbnQgdGltZXJfaW50ZXJ2YWw7CiBzdGF0aWMgaW50IG9uZV9zaG90Owotc3RhdGljIHNpZ19oYW5kbGVyX3QgdGltZXJfZm4gPSBTSUdfREZMOworc3RhdGljIHNpZ19oYW5kbGVyX3QgdGltZXJfZm4gPSBTSUdfREZMLCBzaWdpbnRfZm4gPSBTSUdfREZMOwogCiAvKiBUaGUgdGltZXIgd29ya3MgbGlrZSB0aGlzOgogICogVGhlIHRocmVhZCwgdGlja3RhY2soKSwgaXMgYSB0cml2aWFsIHJvdXRpbmUgdGhhdCBtb3N0IG9mIHRoZSB0aW1lCkBAIC0xNTM4LDEwICsxNTg3LDcgQEAKIHN0YXRpYyB1bnNpZ25lZCBfX3N0ZGNhbGwgdGlja3RhY2sodm9pZCAqZHVtbXkpCiB7CiAJd2hpbGUgKFdhaXRGb3JTaW5nbGVPYmplY3QodGltZXJfZXZlbnQsIHRpbWVyX2ludGVydmFsKSA9PSBXQUlUX1RJTUVPVVQpIHsKLQkJaWYgKHRpbWVyX2ZuID09IFNJR19ERkwpCi0JCQlkaWUoIkFsYXJtIik7Ci0JCWlmICh0aW1lcl9mbiAhPSBTSUdfSUdOKQotCQkJdGltZXJfZm4oU0lHQUxSTSk7CisJCW1pbmd3X3JhaXNlKFNJR0FMUk0pOwogCQlpZiAob25lX3Nob3QpCiAJCQlicmVhazsKIAl9CkBAIC0xNjMxLDEzICsxNjc3LDUyIEBACiAjdW5kZWYgc2lnbmFsCiBzaWdfaGFuZGxlcl90IG1pbmd3X3NpZ25hbChpbnQgc2lnLCBzaWdfaGFuZGxlcl90IGhhbmRsZXIpCiB7Ci0Jc2lnX2hhbmRsZXJfdCBvbGQgPSB0aW1lcl9mbjsKLQlpZiAoc2lnICE9IFNJR0FMUk0pCisJc2lnX2hhbmRsZXJfdCBvbGQ7CisKKwlzd2l0Y2ggKHNpZykgeworCWNhc2UgU0lHQUxSTToKKwkJb2xkID0gdGltZXJfZm47CisJCXRpbWVyX2ZuID0gaGFuZGxlcjsKKwkJYnJlYWs7CisKKwljYXNlIFNJR0lOVDoKKwkJb2xkID0gc2lnaW50X2ZuOworCQlzaWdpbnRfZm4gPSBoYW5kbGVyOworCQlicmVhazsKKworCWRlZmF1bHQ6CiAJCXJldHVybiBzaWduYWwoc2lnLCBoYW5kbGVyKTsKLQl0aW1lcl9mbiA9IGhhbmRsZXI7CisJfQorCiAJcmV0dXJuIG9sZDsKIH0KIAorI3VuZGVmIHJhaXNlCitpbnQgbWluZ3dfcmFpc2UoaW50IHNpZykKK3sKKwlzd2l0Y2ggKHNpZykgeworCWNhc2UgU0lHQUxSTToKKwkJaWYgKHRpbWVyX2ZuID09IFNJR19ERkwpIHsKKwkJCWlmIChpc2F0dHkoU1RERVJSX0ZJTEVOTykpCisJCQkJZnB1dHMoIkFsYXJtIGNsb2NrXG4iLCBzdGRlcnIpOworCQkJZXhpdCgxMjggKyBTSUdBTFJNKTsKKwkJfSBlbHNlIGlmICh0aW1lcl9mbiAhPSBTSUdfSUdOKQorCQkJdGltZXJfZm4oU0lHQUxSTSk7CisJCXJldHVybiAwOworCisJY2FzZSBTSUdJTlQ6CisJCWlmIChzaWdpbnRfZm4gPT0gU0lHX0RGTCkKKwkJCWV4aXQoMTI4ICsgU0lHSU5UKTsKKwkJZWxzZSBpZiAoc2lnaW50X2ZuICE9IFNJR19JR04pCisJCQlzaWdpbnRfZm4oU0lHSU5UKTsKKwkJcmV0dXJuIDA7CisKKwlkZWZhdWx0OgorCQlyZXR1cm4gcmFpc2Uoc2lnKTsKKwl9Cit9CisKKwogc3RhdGljIGNvbnN0IGNoYXIgKm1ha2VfYmFja3NsYXNoX3BhdGgoY29uc3QgY2hhciAqcGF0aCkKIHsKIAlzdGF0aWMgY2hhciBidWZbUEFUSF9NQVggKyAxXTsKQEAgLTE2OTksMjEgKzE3ODQsNiBAQAogCXJldHVybiAwOwogfQogCi1jaGFyICpnZXRwYXNzKGNvbnN0IGNoYXIgKnByb21wdCkKLXsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwotCi0JZnB1dHMocHJvbXB0LCBzdGRlcnIpOwotCWZvciAoOzspIHsKLQkJY2hhciBjID0gX2dldGNoKCk7Ci0JCWlmIChjID09ICdccicgfHwgYyA9PSAnXG4nKQotCQkJYnJlYWs7Ci0JCXN0cmJ1Zl9hZGRjaCgmYnVmLCBjKTsKLQl9Ci0JZnB1dHMoIlxuIiwgc3RkZXJyKTsKLQlyZXR1cm4gc3RyYnVmX2RldGFjaCgmYnVmLCBOVUxMKTsKLX0KLQogcGlkX3Qgd2FpdHBpZChwaWRfdCBwaWQsIGludCAqc3RhdHVzLCBpbnQgb3B0aW9ucykKIHsKIAlIQU5ETEUgaCA9IE9wZW5Qcm9jZXNzKFNZTkNIUk9OSVpFIHwgUFJPQ0VTU19RVUVSWV9JTkZPUk1BVElPTiwKZGlmZiAtLWdpdCBhL2NvbXBhdC9taW5ndy5oIGIvY29tcGF0L21pbmd3LmgKaW5kZXggNjFhNjUyMS4uNjg1Y2QyYyAxMDA2NDQKLS0tIGEvY29tcGF0L21pbmd3LmgKKysrIGIvY29tcGF0L21pbmd3LmgKQEAgLTU1LDggKzU1LDYgQEAKIAljaGFyICpwd19kaXI7CiB9OwogCi1leHRlcm4gY2hhciAqZ2V0cGFzcyhjb25zdCBjaGFyICpwcm9tcHQpOwotCiB0eXBlZGVmIHZvaWQgKF9fY2RlY2wgKnNpZ19oYW5kbGVyX3QpKGludCk7CiBzdHJ1Y3Qgc2lnYWN0aW9uIHsKIAlzaWdfaGFuZGxlcl90IHNhX2hhbmRsZXI7CkBAIC0xNzksMTIgKzE3NywxOCBAQAogc3NpemVfdCBtaW5nd193cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKICNkZWZpbmUgd3JpdGUgbWluZ3dfd3JpdGUKIAoraW50IG1pbmd3X2ZnZXRjKEZJTEUgKnN0cmVhbSk7CisjZGVmaW5lIGZnZXRjIG1pbmd3X2ZnZXRjCisKIEZJTEUgKm1pbmd3X2ZvcGVuIChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqb3R5cGUpOwogI2RlZmluZSBmb3BlbiBtaW5nd19mb3BlbgogCiBGSUxFICptaW5nd19mcmVvcGVuIChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqb3R5cGUsIEZJTEUgKnN0cmVhbSk7CiAjZGVmaW5lIGZyZW9wZW4gbWluZ3dfZnJlb3BlbgogCitpbnQgbWluZ3dfZmZsdXNoKEZJTEUgKnN0cmVhbSk7CisjZGVmaW5lIGZmbHVzaCBtaW5nd19mZmx1c2gKKwogY2hhciAqbWluZ3dfZ2V0Y3dkKGNoYXIgKnBvaW50ZXIsIGludCBsZW4pOwogI2RlZmluZSBnZXRjd2QgbWluZ3dfZ2V0Y3dkCiAKQEAgLTI4Nyw2ICsyOTEsOSBAQAogc2lnX2hhbmRsZXJfdCBtaW5nd19zaWduYWwoaW50IHNpZywgc2lnX2hhbmRsZXJfdCBoYW5kbGVyKTsKICNkZWZpbmUgc2lnbmFsIG1pbmd3X3NpZ25hbAogCitpbnQgbWluZ3dfcmFpc2UoaW50IHNpZyk7CisjZGVmaW5lIHJhaXNlIG1pbmd3X3JhaXNlCisKIC8qCiAgKiBBTlNJIGVtdWxhdGlvbiB3cmFwcGVycwogICovCmRpZmYgLS1naXQgYS9jb21wYXQvbWtkaXIuYyBiL2NvbXBhdC9ta2Rpci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMjUzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9jb21wYXQvbWtkaXIuYwpAQCAtMCwwICsxLDI0IEBACisjaW5jbHVkZSAiLi4vZ2l0LWNvbXBhdC11dGlsLmgiCisjdW5kZWYgbWtkaXIKKworLyogZm9yIHBsYXRmb3JtcyB0aGF0IGNhbid0IGRlYWwgd2l0aCBhIHRyYWlsaW5nICcvJyAqLworaW50IGNvbXBhdF9ta2Rpcl93b190cmFpbGluZ19zbGFzaChjb25zdCBjaGFyICpkaXIsIG1vZGVfdCBtb2RlKQoreworCWludCByZXR2YWw7CisJY2hhciAqdG1wX2RpciA9IE5VTEw7CisJc2l6ZV90IGxlbiA9IHN0cmxlbihkaXIpOworCisJaWYgKGxlbiAmJiBkaXJbbGVuLTFdID09ICcvJykgeworCQlpZiAoKHRtcF9kaXIgPSBzdHJkdXAoZGlyKSkgPT0gTlVMTCkKKwkJCXJldHVybiAtMTsKKwkJdG1wX2RpcltsZW4tMV0gPSAnXDAnOworCX0KKwllbHNlCisJCXRtcF9kaXIgPSAoY2hhciAqKWRpcjsKKworCXJldHZhbCA9IG1rZGlyKHRtcF9kaXIsIG1vZGUpOworCWlmICh0bXBfZGlyICE9IGRpcikKKwkJZnJlZSh0bXBfZGlyKTsKKworCXJldHVybiByZXR2YWw7Cit9CmRpZmYgLS1naXQgYS9jb21wYXQvbXN2Yy5oIGIvY29tcGF0L21zdmMuaAppbmRleCBhYTRiNTYzLi45NmI2ZDYwIDEwMDY0NAotLS0gYS9jb21wYXQvbXN2Yy5oCisrKyBiL2NvbXBhdC9tc3ZjLmgKQEAgLTEyLDYgKzEyLDggQEAKICNkZWZpbmUgX19hdHRyaWJ1dGVfXyh4KQogI2RlZmluZSBzdHJuY2FzZWNtcCAgX3N0cm5pY21wCiAjZGVmaW5lIGZ0cnVuY2F0ZSAgICBfY2hzaXplCisjZGVmaW5lIHN0cnRvdWxsICAgICBfc3RydG91aTY0CisjZGVmaW5lIHN0cnRvbGwgICAgICBfc3RydG9pNjQKIAogc3RhdGljIF9faW5saW5lIGludCBzdHJjYXNlY21wIChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIpCiB7CmRpZmYgLS1naXQgYS9jb21wYXQvbmVkbWFsbG9jL1JlYWRtZS50eHQgYi9jb21wYXQvbmVkbWFsbG9jL1JlYWRtZS50eHQKaW5kZXggODc2MzY1Ni4uZTQ2ZDhmMSAxMDA2NDQKLS0tIGEvY29tcGF0L25lZG1hbGxvYy9SZWFkbWUudHh0CisrKyBiL2NvbXBhdC9uZWRtYWxsb2MvUmVhZG1lLnR4dApAQCAtMTAwLDcgKzEwMCw3IEBACiBUaGFua3MgdG8gRG1pdHJ5IENoaWNoa292IGZvciByZXBvcnRpbmcgdGhpcy4gRnV0aGVyIHRoYW5rcyB0byBBbGVrc2V5IFNhbmluLgogICogRml4ZWQgcmVhbGxvYygwLCA8c2l6ZT4pIHNlZ2ZhdWx0aW5nLiBUaGFua3MgdG8gRG1pdHJ5IENoaWNoa292IGZvcgogcmVwb3J0aW5nIHRoaXMuCi0gKiBNYWRlIGNvbmZpZyBkZWZpbmVzICNpZm5kZWYgc28gdGhleSBjYW4gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBidWlsZCBzeXN0ZW0uCisgKiBNYWRlIGNvbmZpZyBkZWZpbmVzICNpZm5kZWYgc28gdGhleSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgYnVpbGQgc3lzdGVtLgogVGhhbmtzIHRvIEFsZWtzZXkgU2FuaW4gZm9yIHN1Z2dlc3RpbmcgdGhpcy4KICAqIEZpeGVkIGRlYWRsb2NrIGluIG5lZHByZWFsbG9jKCkgZHVlIHRvIHVubmVjZXNzYXJ5IGxvY2tpbmcgb2YgcHJlZmVycmVkCiB0aHJlYWQgbXNwYWNlIHdoZW4gbXNwYWNlX3JlYWxsb2MoKSBhbHdheXMgdXNlcyB0aGUgb3JpZ2luYWwgYmxvY2sncyBtc3BhY2UKZGlmZiAtLWdpdCBhL2NvbXBhdC9uZWRtYWxsb2MvbWFsbG9jLmMuaCBiL2NvbXBhdC9uZWRtYWxsb2MvbWFsbG9jLmMuaAppbmRleCBmZjdjMmM0Li4xNDAxYTY3IDEwMDY0NAotLS0gYS9jb21wYXQvbmVkbWFsbG9jL21hbGxvYy5jLmgKKysrIGIvY29tcGF0L25lZG1hbGxvYy9tYWxsb2MuYy5oCkBAIC00Nzc4LDcgKzQ3NzgsNyBAQAogCiB2b2lkIGRsZnJlZSh2b2lkKiBtZW0pIHsKICAgLyoKLSAgICAgQ29uc29saWRhdGUgZnJlZWQgY2h1bmtzIHdpdGggcHJlY2VlZGluZyBvciBzdWNjZWVkaW5nIGJvcmRlcmluZworICAgICBDb25zb2xpZGF0ZSBmcmVlZCBjaHVua3Mgd2l0aCBwcmVjZWRpbmcgb3Igc3VjY2VlZGluZyBib3JkZXJpbmcKICAgICAgZnJlZSBjaHVua3MsIGlmIHRoZXkgZXhpc3QsIGFuZCB0aGVuIHBsYWNlIGluIGEgYmluLiAgSW50ZXJtaXhlZAogICAgICB3aXRoIHNwZWNpYWwgY2FzZXMgZm9yIHRvcCwgZHYsIG1tYXBwZWQgY2h1bmtzLCBhbmQgdXNhZ2UgZXJyb3JzLgogICAqLwpAQCAtNTY4MCwxMCArNTY4MCwxMCBAQAogCVdvbGZyYW0gR2xvZ2VyIChHbG9nZXJAbHJ6LnVuaS1tdWVuY2hlbi5kZSkuCiAgICAgICAqIFVzZSBsYXN0X3JlbWFpbmRlciBpbiBtb3JlIGNhc2VzLgogICAgICAgKiBQYWNrIGJpbnMgdXNpbmcgaWRlYSBmcm9tICBjb2xpbkBueXgxMC5jcy5kdS5lZHUKLSAgICAgICogVXNlIG9yZGVyZWQgYmlucyBpbnN0ZWFkIG9mIGJlc3QtZml0IHRocmVzaGhvbGQKKyAgICAgICogVXNlIG9yZGVyZWQgYmlucyBpbnN0ZWFkIG9mIGJlc3QtZml0IHRocmVzaG9sZAogICAgICAgKiBFbGltaW5hdGUgYmxvY2stbG9jYWwgZGVjbHMgdG8gc2ltcGxpZnkgdHJhY2luZyBhbmQgZGVidWdnaW5nLgogICAgICAgKiBTdXBwb3J0IGFub3RoZXIgY2FzZSBvZiByZWFsbG9jIHZpYSBtb3ZlIGludG8gdG9wCi0gICAgICAqIEZpeCBlcnJvciBvY2N1cmluZyB3aGVuIGluaXRpYWwgc2Jya19iYXNlIG5vdCB3b3JkLWFsaWduZWQuCisgICAgICAqIEZpeCBlcnJvciBvY2N1cnJpbmcgd2hlbiBpbml0aWFsIHNicmtfYmFzZSBub3Qgd29yZC1hbGlnbmVkLgogICAgICAgKiBSZWx5IG9uIHBhZ2Ugc2l6ZSBmb3IgdW5pdHMgaW5zdGVhZCBvZiBTQlJLX1VOSVQgdG8KIAlhdm9pZCBzdXJwcmlzZXMgYWJvdXQgc2JyayBhbGlnbm1lbnQgY29udmVudGlvbnMuCiAgICAgICAqIEFkZCBtYWxsaW5mbywgbWFsbG9wdC4gVGhhbmtzIHRvIFJheW1vbmQgTmlqc3NlbgpkaWZmIC0tZ2l0IGEvY29tcGF0L25lZG1hbGxvYy9uZWRtYWxsb2MuYyBiL2NvbXBhdC9uZWRtYWxsb2MvbmVkbWFsbG9jLmMKaW5kZXggZDlhMTdhOC4uOTFjNGU3ZiAxMDA2NDQKLS0tIGEvY29tcGF0L25lZG1hbGxvYy9uZWRtYWxsb2MuYworKysgYi9jb21wYXQvbmVkbWFsbG9jL25lZG1hbGxvYy5jCkBAIC02MDMsNyArNjAzLDEwIEBACiAJCX0KIAkJLyogV2UgcmVhbGx5IHdhbnQgdG8gbWFrZSBzdXJlIHRoaXMgZ29lcyBpbnRvIG1lbW9yeSBub3cgYnV0IHdlCiAJCWhhdmUgdG8gYmUgY2FyZWZ1bCBvZiBicmVha2luZyBhbGlhc2luZyBydWxlcywgc28gd3JpdGUgaXQgdHdpY2UgKi8KLQkJKigodm9sYXRpbGUgc3RydWN0IG1hbGxvY19zdGF0ZSAqKikgJnAtPm1bZW5kXSk9cC0+bVtlbmRdPXRlbXA7CisJCXsKKwkJCXZvbGF0aWxlIHN0cnVjdCBtYWxsb2Nfc3RhdGUgKipfbT0odm9sYXRpbGUgc3RydWN0IG1hbGxvY19zdGF0ZSAqKikgJnAtPm1bZW5kXTsKKwkJCSpfbT0ocC0+bVtlbmRdPXRlbXApOworCQl9CiAJCUFDUVVJUkVfTE9DSygmcC0+bVtlbmRdLT5tdXRleCk7CiAJCS8qcHJpbnRmKCJDcmVhdGVkIG1zcGFjZSBpZHggJWRcbiIsIGVuZCk7Ki8KIAkJUkVMRUFTRV9MT0NLKCZwLT5tdXRleCk7CmRpZmYgLS1naXQgYS9jb21wYXQvb2JzdGFjay5oIGIvY29tcGF0L29ic3RhY2suaAppbmRleCBkMTc4YmQ2Li5jZWI0YmRiIDEwMDY0NAotLS0gYS9jb21wYXQvb2JzdGFjay5oCisrKyBiL2NvbXBhdC9vYnN0YWNrLmgKQEAgLTEyOCw3ICsxMjgsNyBAQAogCiAjZGVmaW5lIF9fQlBUUl9BTElHTihCLCBQLCBBKSAoKEIpICsgKCgoUCkgLSAoQikgKyAoQSkpICYgfihBKSkpCiAKLS8qIFNpbWlsaWFyIHRvIF9CUFRSX0FMSUdOIChCLCBQLCBBKSwgZXhjZXB0IG9wdGltaXplIHRoZSBjb21tb24gY2FzZQorLyogU2ltaWxhciB0byBfQlBUUl9BTElHTiAoQiwgUCwgQSksIGV4Y2VwdCBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2UKICAgIHdoZXJlIHBvaW50ZXJzIGNhbiBiZSBjb252ZXJ0ZWQgdG8gaW50ZWdlcnMsIGFsaWduZWQgYXMgaW50ZWdlcnMsCiAgICBhbmQgY29udmVydGVkIGJhY2sgYWdhaW4uICBJZiBQVFJfSU5UX1RZUEUgaXMgbmFycm93ZXIgdGhhbiBhCiAgICBwb2ludGVyIChlLmcuLCB0aGUgQVMvNDAwKSwgcGxheSBpdCBzYWZlIGFuZCBjb21wdXRlIHRoZSBhbGlnbm1lbnQKZGlmZiAtLWdpdCBhL2NvbXBhdC93aW4zMi9wb2xsLmMgYi9jb21wYXQvcG9sbC9wb2xsLmMKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gY29tcGF0L3dpbjMyL3BvbGwuYwpyZW5hbWUgdG8gY29tcGF0L3BvbGwvcG9sbC5jCmluZGV4IDQwM2VhYTcuLjdkMjI2ZWMgMTAwNjQ0Ci0tLSBhL2NvbXBhdC93aW4zMi9wb2xsLmMKKysrIGIvY29tcGF0L3BvbGwvcG9sbC5jCkBAIC0yNCw3ICsyNCw5IEBACiAjIHByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3R5cGUtbGltaXRzIgogI2VuZGlmCiAKLSNpbmNsdWRlIDxtYWxsb2MuaD4KKyNpZiBkZWZpbmVkKFdJTjMyKQorIyBpbmNsdWRlIDxtYWxsb2MuaD4KKyNlbmRpZgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAKQEAgLTQ4LDcgKzUwLDkgQEAKICNlbHNlCiAjIGluY2x1ZGUgPHN5cy90aW1lLmg+CiAjIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSMgaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgorIyBpZm5kZWYgTk9fU1lTX1NFTEVDVF9ICisjICBpbmNsdWRlIDxzeXMvc2VsZWN0Lmg+CisjIGVuZGlmCiAjIGluY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKQEAgLTMwMiw2ICszMDYsMTAgQEAKIAkgICAgICAgfHwgc29ja2V0X2Vycm5vID09IEVDT05OQUJPUlRFRCB8fCBzb2NrZXRfZXJybm8gPT0gRU5FVFJFU0VUKQogCWhhcHBlbmVkIHw9IFBPTExIVVA7CiAKKyAgICAgIC8qIHNvbWUgc3lzdGVtcyBjYW4ndCB1c2UgcmVjdigpIG9uIG5vbi1zb2NrZXQsIGluY2x1ZGluZyBIUCBOb25TdG9wICovCisgICAgICBlbHNlIGlmICgvKiAociA9PSAtMSkgJiYgKi8gc29ja2V0X2Vycm5vID09IEVOT1RTT0NLKQorCWhhcHBlbmVkIHw9IChQT0xMSU4gfCBQT0xMUkROT1JNKSAmIHNvdWdodDsKKwogICAgICAgZWxzZQogCWhhcHBlbmVkIHw9IFBPTExFUlI7CiAgICAgfQpAQCAtMzQ5LDcgKzM1Nyw3IEBACiAKICAgLyogRUZBVUxUIGlzIG5vdCBuZWNlc3NhcnkgdG8gaW1wbGVtZW50LCBidXQgbGV0J3MgZG8gaXQgaW4gdGhlCiAgICAgIHNpbXBsZXN0IGNhc2UuICovCi0gIGlmICghcGZkKQorICBpZiAoIXBmZCAmJiBuZmQpCiAgICAgewogICAgICAgZXJybm8gPSBFRkFVTFQ7CiAgICAgICByZXR1cm4gLTE7CmRpZmYgLS1naXQgYS9jb21wYXQvd2luMzIvcG9sbC5oIGIvY29tcGF0L3BvbGwvcG9sbC5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb21wYXQvd2luMzIvcG9sbC5oCnJlbmFtZSB0byBjb21wYXQvcG9sbC9wb2xsLmgKZGlmZiAtLWdpdCBhL2NvbXBhdC9wcmVjb21wb3NlX3V0ZjguYyBiL2NvbXBhdC9wcmVjb21wb3NlX3V0ZjguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTgwYWJkCi0tLSAvZGV2L251bGwKKysrIGIvY29tcGF0L3ByZWNvbXBvc2VfdXRmOC5jCkBAIC0wLDAgKzEsMTg0IEBACisvKgorICogQ29udmVydHMgZmlsZW5hbWVzIGZyb20gZGVjb21wb3NlZCB1bmljb2RlIGludG8gcHJlY29tcG9zZWQgdW5pY29kZS4KKyAqIFVzZWQgb24gTWFjT1MgWC4KKyAqLworCisjZGVmaW5lIFBSRUNPTVBPU0VfVU5JQ09ERV9DCisKKyNpbmNsdWRlICJjYWNoZS5oIgorI2luY2x1ZGUgInV0ZjguaCIKKyNpbmNsdWRlICJwcmVjb21wb3NlX3V0ZjguaCIKKwordHlwZWRlZiBjaGFyICppY29udl9pYnA7CitzdGF0aWMgY29uc3QgY2hhciAqcmVwb19lbmNvZGluZyA9ICJVVEYtOCI7CitzdGF0aWMgY29uc3QgY2hhciAqcGF0aF9lbmNvZGluZyA9ICJVVEYtOC1NQUMiOworCitzdGF0aWMgc2l6ZV90IGhhc19ub25fYXNjaWkoY29uc3QgY2hhciAqcywgc2l6ZV90IG1heGxlbiwgc2l6ZV90ICpzdHJsZW5fYykKK3sKKwljb25zdCB1aW50OF90ICpwdHIgPSAoY29uc3QgdWludDhfdCAqKXM7CisJc2l6ZV90IHN0cmxlbl9jaGFycyA9IDA7CisJc2l6ZV90IHJldCA9IDA7CisKKwlpZiAoIXB0ciB8fCAhKnB0cikKKwkJcmV0dXJuIDA7CisKKwl3aGlsZSAoKnB0ciAmJiBtYXhsZW4pIHsKKwkJaWYgKCpwdHIgJiAweDgwKQorCQkJcmV0Kys7CisJCXN0cmxlbl9jaGFycysrOworCQlwdHIrKzsKKwkJbWF4bGVuLS07CisJfQorCWlmIChzdHJsZW5fYykKKwkJKnN0cmxlbl9jID0gc3RybGVuX2NoYXJzOworCisJcmV0dXJuIHJldDsKK30KKworCit2b2lkIHByb2JlX3V0ZjhfcGF0aG5hbWVfY29tcG9zaXRpb24oY2hhciAqcGF0aCwgaW50IGxlbikKK3sKKwlzdGF0aWMgY29uc3QgY2hhciAqYXVtbF9uZmMgPSAiXHhjM1x4YTQiOworCXN0YXRpYyBjb25zdCBjaGFyICphdW1sX25mZCA9ICJceDYxXHhjY1x4ODgiOworCWludCBvdXRwdXRfZmQ7CisJaWYgKHByZWNvbXBvc2VkX3VuaWNvZGUgIT0gLTEpCisJCXJldHVybjsgLyogV2UgZm91bmQgaXQgZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIGNvbmZpZywgcmVzcGVjdCBpdCAqLworCXN0cmNweShwYXRoICsgbGVuLCBhdW1sX25mYyk7CisJb3V0cHV0X2ZkID0gb3BlbihwYXRoLCBPX0NSRUFUfE9fRVhDTHxPX1JEV1IsIDA2MDApOworCWlmIChvdXRwdXRfZmQgPj0gMCkgeworCQljbG9zZShvdXRwdXRfZmQpOworCQlzdHJjcHkocGF0aCArIGxlbiwgYXVtbF9uZmQpOworCQkvKiBJbmRpY2F0ZSB0byB0aGUgdXNlciwgdGhhdCB3ZSBjYW4gY29uZmlndXJlIGl0IHRvIHRydWUgKi8KKwkJaWYgKCFhY2Nlc3MocGF0aCwgUl9PSykpCisJCQlnaXRfY29uZmlnX3NldCgiY29yZS5wcmVjb21wb3NldW5pY29kZSIsICJmYWxzZSIpOworCQkvKiBUbyBiZSBiYWNrd2FyZCBjb21wYXRpYmxlLCBzZXQgcHJlY29tcG9zZWRfdW5pY29kZSB0byAwICovCisJCXByZWNvbXBvc2VkX3VuaWNvZGUgPSAwOworCQlzdHJjcHkocGF0aCArIGxlbiwgYXVtbF9uZmMpOworCQlpZiAodW5saW5rKHBhdGgpKQorCQkJZGllX2Vycm5vKF8oImZhaWxlZCB0byB1bmxpbmsgJyVzJyIpLCBwYXRoKTsKKwl9Cit9CisKKwordm9pZCBwcmVjb21wb3NlX2FyZ3YoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQoreworCWludCBpID0gMDsKKwljb25zdCBjaGFyICpvbGRhcmc7CisJY2hhciAqbmV3YXJnOworCWljb252X3QgaWNfcHJlY29tcG9zZTsKKworCWlmIChwcmVjb21wb3NlZF91bmljb2RlICE9IDEpCisJCXJldHVybjsKKworCWljX3ByZWNvbXBvc2UgPSBpY29udl9vcGVuKHJlcG9fZW5jb2RpbmcsIHBhdGhfZW5jb2RpbmcpOworCWlmIChpY19wcmVjb21wb3NlID09IChpY29udl90KSAtMSkKKwkJcmV0dXJuOworCisJd2hpbGUgKGkgPCBhcmdjKSB7CisJCXNpemVfdCBuYW1lbGVuOworCQlvbGRhcmcgPSBhcmd2W2ldOworCQlpZiAoaGFzX25vbl9hc2NpaShvbGRhcmcsIChzaXplX3QpLTEsICZuYW1lbGVuKSkgeworCQkJbmV3YXJnID0gcmVlbmNvZGVfc3RyaW5nX2ljb252KG9sZGFyZywgbmFtZWxlbiwgaWNfcHJlY29tcG9zZSwgTlVMTCk7CisJCQlpZiAobmV3YXJnKQorCQkJCWFyZ3ZbaV0gPSBuZXdhcmc7CisJCX0KKwkJaSsrOworCX0KKwlpY29udl9jbG9zZShpY19wcmVjb21wb3NlKTsKK30KKworCitQUkVDX0RJUiAqcHJlY29tcG9zZV91dGY4X29wZW5kaXIoY29uc3QgY2hhciAqZGlybmFtZSkKK3sKKwlQUkVDX0RJUiAqcHJlY19kaXIgPSB4bWFsbG9jKHNpemVvZihQUkVDX0RJUikpOworCXByZWNfZGlyLT5kaXJlbnRfbmZjID0geG1hbGxvYyhzaXplb2YoZGlyZW50X3ByZWNfcHN4KSk7CisJcHJlY19kaXItPmRpcmVudF9uZmMtPm1heF9uYW1lX2xlbiA9IHNpemVvZihwcmVjX2Rpci0+ZGlyZW50X25mYy0+ZF9uYW1lKTsKKworCXByZWNfZGlyLT5kaXJwID0gb3BlbmRpcihkaXJuYW1lKTsKKwlpZiAoIXByZWNfZGlyLT5kaXJwKSB7CisJCWZyZWUocHJlY19kaXItPmRpcmVudF9uZmMpOworCQlmcmVlKHByZWNfZGlyKTsKKwkJcmV0dXJuIE5VTEw7CisJfSBlbHNlIHsKKwkJaW50IHJldF9lcnJubyA9IGVycm5vOworCQlwcmVjX2Rpci0+aWNfcHJlY29tcG9zZSA9IGljb252X29wZW4ocmVwb19lbmNvZGluZywgcGF0aF9lbmNvZGluZyk7CisJCS8qIGlmIGljb252X29wZW4oKSBmYWlscywgZGllKCkgaW4gcmVhZGRpcigpIGlmIG5lZWRlZCAqLworCQllcnJubyA9IHJldF9lcnJubzsKKwl9CisKKwlyZXR1cm4gcHJlY19kaXI7Cit9CisKK3N0cnVjdCBkaXJlbnRfcHJlY19wc3ggKnByZWNvbXBvc2VfdXRmOF9yZWFkZGlyKFBSRUNfRElSICpwcmVjX2RpcikKK3sKKwlzdHJ1Y3QgZGlyZW50ICpyZXM7CisJcmVzID0gcmVhZGRpcihwcmVjX2Rpci0+ZGlycCk7CisJaWYgKHJlcykgeworCQlzaXplX3QgbmFtZWxlbnogPSBzdHJsZW4ocmVzLT5kX25hbWUpICsgMTsgLyogXDAgKi8KKwkJc2l6ZV90IG5ld19tYXhsZW4gPSBuYW1lbGVuejsKKworCQlpbnQgcmV0X2Vycm5vID0gZXJybm87CisKKwkJaWYgKG5ld19tYXhsZW4gPiBwcmVjX2Rpci0+ZGlyZW50X25mYy0+bWF4X25hbWVfbGVuKSB7CisJCQlzaXplX3QgbmV3X2xlbiA9IHNpemVvZihkaXJlbnRfcHJlY19wc3gpICsgbmV3X21heGxlbiAtCisJCQkJc2l6ZW9mKHByZWNfZGlyLT5kaXJlbnRfbmZjLT5kX25hbWUpOworCisJCQlwcmVjX2Rpci0+ZGlyZW50X25mYyA9IHhyZWFsbG9jKHByZWNfZGlyLT5kaXJlbnRfbmZjLCBuZXdfbGVuKTsKKwkJCXByZWNfZGlyLT5kaXJlbnRfbmZjLT5tYXhfbmFtZV9sZW4gPSBuZXdfbWF4bGVuOworCQl9CisKKwkJcHJlY19kaXItPmRpcmVudF9uZmMtPmRfaW5vICA9IHJlcy0+ZF9pbm87CisJCXByZWNfZGlyLT5kaXJlbnRfbmZjLT5kX3R5cGUgPSByZXMtPmRfdHlwZTsKKworCQlpZiAoKHByZWNvbXBvc2VkX3VuaWNvZGUgPT0gMSkgJiYgaGFzX25vbl9hc2NpaShyZXMtPmRfbmFtZSwgKHNpemVfdCktMSwgTlVMTCkpIHsKKwkJCWlmIChwcmVjX2Rpci0+aWNfcHJlY29tcG9zZSA9PSAoaWNvbnZfdCktMSkgeworCQkJCWRpZSgiaWNvbnZfb3BlbiglcywlcykgZmFpbGVkLCBidXQgbmVlZGVkOlxuIgorCQkJCQkJIiAgICBwcmVjb21wb3NlZCB1bmljb2RlIGlzIG5vdCBzdXBwb3J0ZWQuXG4iCisJCQkJCQkiICAgIElmIHlvdSB3YW50IHRvIHVzZSBkZWNvbXBvc2VkIHVuaWNvZGUsIHJ1blxuIgorCQkJCQkJIiAgICBcImdpdCBjb25maWcgY29yZS5wcmVjb21wb3NldW5pY29kZSBmYWxzZVwiXG4iLAorCQkJCQkJcmVwb19lbmNvZGluZywgcGF0aF9lbmNvZGluZyk7CisJCQl9IGVsc2UgeworCQkJCWljb252X2licAljcCA9IChpY29udl9pYnApcmVzLT5kX25hbWU7CisJCQkJc2l6ZV90IGlubGVmdCA9IG5hbWVsZW56OworCQkJCWNoYXIgKm91dHBvcyA9ICZwcmVjX2Rpci0+ZGlyZW50X25mYy0+ZF9uYW1lWzBdOworCQkJCXNpemVfdCBvdXRzeiA9IHByZWNfZGlyLT5kaXJlbnRfbmZjLT5tYXhfbmFtZV9sZW47CisJCQkJc2l6ZV90IGNudDsKKwkJCQllcnJubyA9IDA7CisJCQkJY250ID0gaWNvbnYocHJlY19kaXItPmljX3ByZWNvbXBvc2UsICZjcCwgJmlubGVmdCwgJm91dHBvcywgJm91dHN6KTsKKwkJCQlpZiAoZXJybm8gfHwgaW5sZWZ0KSB7CisJCQkJCS8qCisJCQkJCSAqIGljb252KCkgZmFpbGVkIGFuZCBlcnJubyBjb3VsZCBiZSBFMkJJRywgRUlMU0VRLCBFSU5WQUwsIEVCQURGCisJCQkJCSAqIE1hY09TIFggYXZvaWRzIGlsbGVnYWwgYnl0ZSBzZXF1ZW1jZXMuCisJCQkJCSAqIElmIHRoZXkgb2NjdXIgb24gYSBtb3VudGVkIGRyaXZlIChlLmcuIE5GUykgaXQgaXMgbm90IHdvcnRoIHRvCisJCQkJCSAqIGRpZSgpIGZvciB0aGF0LCBidXQgcmF0aGVyIGxldCB0aGUgdXNlciBzZWUgdGhlIG9yaWdpbmFsIG5hbWUKKwkJCQkJKi8KKwkJCQkJbmFtZWxlbnogPSAwOyAvKiB0cmlnZ2VyIHN0cmxjcHkgKi8KKwkJCQl9CisJCQl9CisJCX0gZWxzZQorCQkJbmFtZWxlbnogPSAwOworCisJCWlmICghbmFtZWxlbnopCisJCQlzdHJsY3B5KHByZWNfZGlyLT5kaXJlbnRfbmZjLT5kX25hbWUsIHJlcy0+ZF9uYW1lLAorCQkJCQkJCXByZWNfZGlyLT5kaXJlbnRfbmZjLT5tYXhfbmFtZV9sZW4pOworCisJCWVycm5vID0gcmV0X2Vycm5vOworCQlyZXR1cm4gcHJlY19kaXItPmRpcmVudF9uZmM7CisJfQorCXJldHVybiBOVUxMOworfQorCisKK2ludCBwcmVjb21wb3NlX3V0ZjhfY2xvc2VkaXIoUFJFQ19ESVIgKnByZWNfZGlyKQoreworCWludCByZXRfdmFsdWU7CisJaW50IHJldF9lcnJubzsKKwlyZXRfdmFsdWUgPSBjbG9zZWRpcihwcmVjX2Rpci0+ZGlycCk7CisJcmV0X2Vycm5vID0gZXJybm87CisJaWYgKHByZWNfZGlyLT5pY19wcmVjb21wb3NlICE9IChpY29udl90KS0xKQorCQlpY29udl9jbG9zZShwcmVjX2Rpci0+aWNfcHJlY29tcG9zZSk7CisJZnJlZShwcmVjX2Rpci0+ZGlyZW50X25mYyk7CisJZnJlZShwcmVjX2Rpcik7CisJZXJybm8gPSByZXRfZXJybm87CisJcmV0dXJuIHJldF92YWx1ZTsKK30KZGlmZiAtLWdpdCBhL2NvbXBhdC9wcmVjb21wb3NlX3V0ZjguaCBiL2NvbXBhdC9wcmVjb21wb3NlX3V0ZjguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjczNTg1Ci0tLSAvZGV2L251bGwKKysrIGIvY29tcGF0L3ByZWNvbXBvc2VfdXRmOC5oCkBAIC0wLDAgKzEsNDUgQEAKKyNpZm5kZWYgUFJFQ09NUE9TRV9VTklDT0RFX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPGljb252Lmg+CisKKwordHlwZWRlZiBzdHJ1Y3QgZGlyZW50X3ByZWNfcHN4IHsKKwlpbm9fdCBkX2lubzsgICAgICAgICAgICAvKiBQb3NpeCAqLworCXNpemVfdCBtYXhfbmFtZV9sZW47ICAgIC8qIFNlZSBiZWxvdyAqLworCXVuc2lnbmVkIGNoYXIgZF90eXBlOyAgIC8qIGF2YWlsYWJsZSBvbiBhbGwgc3lzdGVtcyBnaXQgcnVucyBvbiAqLworCisJLyoKKwkgKiBTZWUgaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvYmFzZWRlZnMvZGlyZW50LmguaHRtbAorCSAqIE5BTUVfTUFYICsgMSBzaG91bGQgYmUgZW5vdWdoLCBidXQgc29tZSBzeXN0ZW1zIGhhdmUKKwkgKiBOQU1FX01BWD0yNTUgYW5kIHN0cmxlbihkX25hbWUpIG1heSByZXR1cm4gNTA4IG9yIDUxMAorCSAqIFNvbHV0aW9uOiBhbGxvY2F0ZSBtb3JlIHdoZW4gbmVlZGVkLCBzZWUgcHJlY29tcG9zZV91dGY4X3JlYWRkaXIoKQorCSAqLworCWNoYXIgICBkX25hbWVbTkFNRV9NQVgrMV07Cit9IGRpcmVudF9wcmVjX3BzeDsKKworCit0eXBlZGVmIHN0cnVjdCB7CisJaWNvbnZfdCBpY19wcmVjb21wb3NlOworCURJUiAqZGlycDsKKwlzdHJ1Y3QgZGlyZW50X3ByZWNfcHN4ICpkaXJlbnRfbmZjOworfSBQUkVDX0RJUjsKKwordm9pZCBwcmVjb21wb3NlX2FyZ3YoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KTsKK3ZvaWQgcHJvYmVfdXRmOF9wYXRobmFtZV9jb21wb3NpdGlvbihjaGFyICosIGludCk7CisKK1BSRUNfRElSICpwcmVjb21wb3NlX3V0Zjhfb3BlbmRpcihjb25zdCBjaGFyICpkaXJuYW1lKTsKK3N0cnVjdCBkaXJlbnRfcHJlY19wc3ggKnByZWNvbXBvc2VfdXRmOF9yZWFkZGlyKFBSRUNfRElSICpkaXJwKTsKK2ludCBwcmVjb21wb3NlX3V0ZjhfY2xvc2VkaXIoUFJFQ19ESVIgKmRpcnApOworCisjaWZuZGVmIFBSRUNPTVBPU0VfVU5JQ09ERV9DCisjZGVmaW5lIGRpcmVudCBkaXJlbnRfcHJlY19wc3gKKyNkZWZpbmUgb3BlbmRpcihuKSBwcmVjb21wb3NlX3V0Zjhfb3BlbmRpcihuKQorI2RlZmluZSByZWFkZGlyKGQpIHByZWNvbXBvc2VfdXRmOF9yZWFkZGlyKGQpCisjZGVmaW5lIGNsb3NlZGlyKGQpIHByZWNvbXBvc2VfdXRmOF9jbG9zZWRpcihkKQorI2RlZmluZSBESVIgUFJFQ19ESVIKKyNlbmRpZiAvKiBQUkVDT01QT1NFX1VOSUNPREVfQyAqLworCisjZGVmaW5lICBQUkVDT01QT1NFX1VOSUNPREVfSAorI2VuZGlmIC8qIFBSRUNPTVBPU0VfVU5JQ09ERV9IICovCmRpZmYgLS1naXQgYS9jb21wYXQvcmVnZXgvcmVnY29tcC5jIGIvY29tcGF0L3JlZ2V4L3JlZ2NvbXAuYwppbmRleCA4Yzk2ZWQ5Li5kMDAyNWJkIDEwMDY0NAotLS0gYS9jb21wYXQvcmVnZXgvcmVnY29tcC5jCisrKyBiL2NvbXBhdC9yZWdleC9yZWdjb21wLmMKQEAgLTIwOTUsNyArMjA5NSw3IEBACiAKIC8qIEVudHJ5IHBvaW50IG9mIHRoZSBwYXJzZXIuCiAgICBQYXJzZSB0aGUgcmVndWxhciBleHByZXNzaW9uIFJFR0VYUCBhbmQgcmV0dXJuIHRoZSBzdHJ1Y3R1cmUgdHJlZS4KLSAgIElmIGFuIGVycm9yIGlzIG9jY3VyZWQsIEVSUiBpcyBzZXQgYnkgZXJyb3IgY29kZSwgYW5kIHJldHVybiBOVUxMLgorICAgSWYgYW4gZXJyb3IgaGFzIG9jY3VycmVkLCBFUlIgaXMgc2V0IGJ5IGVycm9yIGNvZGUsIGFuZCByZXR1cm4gTlVMTC4KICAgIFRoaXMgZnVuY3Rpb24gYnVpbGQgdGhlIGZvbGxvd2luZyB0cmVlLCBmcm9tIHJlZ3VsYXIgZXhwcmVzc2lvbiA8cmVnX2V4cD46CiAJICAgQ0FUCiAJICAgLyBcCkBAIC0zNzE1LDcgKzM3MTUsNyBAQAogLyogVGhpcyBpcyBpbnRlbmRlZCBmb3IgdGhlIGV4cHJlc3Npb25zIGxpa2UgImF7MSwzfSIuCiAgICBGZXRjaCBhIG51bWJlciBmcm9tIGBpbnB1dCcsIGFuZCByZXR1cm4gdGhlIG51bWJlci4KICAgIFJldHVybiAtMSwgaWYgdGhlIG51bWJlciBmaWVsZCBpcyBlbXB0eSBsaWtlICJ7LDF9Ii4KLSAgIFJldHVybiAtMiwgSWYgYW4gZXJyb3IgaXMgb2NjdXJlZC4gICovCisgICBSZXR1cm4gLTIsIGlmIGFuIGVycm9yIGhhcyBvY2N1cnJlZC4gICovCiAKIHN0YXRpYyBpbnQKIGZldGNoX251bWJlciAocmVfc3RyaW5nX3QgKmlucHV0LCByZV90b2tlbl90ICp0b2tlbiwgcmVnX3N5bnRheF90IHN5bnRheCkKZGlmZiAtLWdpdCBhL2NvbXBhdC9yZWdleC9yZWdleC5jIGIvY29tcGF0L3JlZ2V4L3JlZ2V4LmMKaW5kZXggM2RkOGRmYS4uNmFhYWUwMCAxMDA2NDQKLS0tIGEvY29tcGF0L3JlZ2V4L3JlZ2V4LmMKKysrIGIvY29tcGF0L3JlZ2V4L3JlZ2V4LmMKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNlbmRpZgogCi0vKiBNYWtlIHN1cmUgbm9vbmUgY29tcGlsZXMgdGhpcyBjb2RlIHdpdGggYSBDKysgY29tcGlsZXIuICAqLworLyogTWFrZSBzdXJlIG5vIG9uZSBjb21waWxlcyB0aGlzIGNvZGUgd2l0aCBhIEMrKyBjb21waWxlci4gICovCiAjaWZkZWYgX19jcGx1c3BsdXMKICMgZXJyb3IgIlRoaXMgaXMgQyBjb2RlLCB1c2UgYSBDIGNvbXBpbGVyIgogI2VuZGlmCmRpZmYgLS1naXQgYS9jb21wYXQvcmVnZXgvcmVnZXhfaW50ZXJuYWwuYyBiL2NvbXBhdC9yZWdleC9yZWdleF9pbnRlcm5hbC5jCmluZGV4IDE5Mzg1NGMuLmQ0MTIxZjIgMTAwNjQ0Ci0tLSBhL2NvbXBhdC9yZWdleC9yZWdleF9pbnRlcm5hbC5jCisrKyBiL2NvbXBhdC9yZWdleC9yZWdleF9pbnRlcm5hbC5jCkBAIC0xMjg0LDcgKzEyODQsNyBAQAogCiAvKiBJbnNlcnQgdGhlIG5ldyBlbGVtZW50IEVMRU0gdG8gdGhlIHJlX25vZGVfc2V0KiBTRVQuCiAgICBTRVQgc2hvdWxkIG5vdCBhbHJlYWR5IGhhdmUgRUxFTS4KLSAgIHJldHVybiAtMSBpZiBhbiBlcnJvciBpcyBvY2N1cmVkLCByZXR1cm4gMSBvdGhlcndpc2UuICAqLworICAgcmV0dXJuIC0xIGlmIGFuIGVycm9yIGhhcyBvY2N1cnJlZCwgcmV0dXJuIDEgb3RoZXJ3aXNlLiAgKi8KIAogc3RhdGljIGludAogaW50ZXJuYWxfZnVuY3Rpb24KQEAgLTEzNDEsNyArMTM0MSw3IEBACiAKIC8qIEluc2VydCB0aGUgbmV3IGVsZW1lbnQgRUxFTSB0byB0aGUgcmVfbm9kZV9zZXQqIFNFVC4KICAgIFNFVCBzaG91bGQgbm90IGFscmVhZHkgaGF2ZSBhbnkgZWxlbWVudCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gRUxFTS4KLSAgIFJldHVybiAtMSBpZiBhbiBlcnJvciBpcyBvY2N1cmVkLCByZXR1cm4gMSBvdGhlcndpc2UuICAqLworICAgUmV0dXJuIC0xIGlmIGFuIGVycm9yIGhhcyBvY2N1cnJlZCwgcmV0dXJuIDEgb3RoZXJ3aXNlLiAgKi8KIAogc3RhdGljIGludAogaW50ZXJuYWxfZnVuY3Rpb24KQEAgLTE0MTYsNyArMTQxNiw3IEBACiAMCiAKIC8qIEFkZCB0aGUgdG9rZW4gVE9LRU4gdG8gZGZhLT5ub2RlcywgYW5kIHJldHVybiB0aGUgaW5kZXggb2YgdGhlIHRva2VuLgotICAgT3IgcmV0dXJuIC0xLCBpZiBhbiBlcnJvciB3aWxsIGJlIG9jY3VyZWQuICAqLworICAgT3IgcmV0dXJuIC0xLCBpZiBhbiBlcnJvciBoYXMgb2NjdXJyZWQuICAqLwogCiBzdGF0aWMgaW50CiBpbnRlcm5hbF9mdW5jdGlvbgpkaWZmIC0tZ2l0IGEvY29tcGF0L3N0cnRva19yLmMgYi9jb21wYXQvc3RydG9rX3IuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I1ZDU2OC4uMDAwMDAwMAotLS0gYS9jb21wYXQvc3RydG9rX3IuYworKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qIFJlZW50cmFudCBzdHJpbmcgdG9rZW5pemVyLiAgR2VuZXJpYyB2ZXJzaW9uLgotICAgQ29weXJpZ2h0IChDKSAxOTkxLDE5OTYtMTk5OSwyMDAxLDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLQotICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0gICAwMjExMS0xMzA3IFVTQS4gICovCi0KLSNpbmNsdWRlICIuLi9naXQtY29tcGF0LXV0aWwuaCIKLQotLyogUGFyc2UgUyBpbnRvIHRva2VucyBzZXBhcmF0ZWQgYnkgY2hhcmFjdGVycyBpbiBERUxJTS4KLSAgIElmIFMgaXMgTlVMTCwgdGhlIHNhdmVkIHBvaW50ZXIgaW4gU0FWRV9QVFIgaXMgdXNlZCBhcwotICAgdGhlIG5leHQgc3RhcnRpbmcgcG9pbnQuICBGb3IgZXhhbXBsZToKLQljaGFyIHNbXSA9ICItYWJjLT0tZGVmIjsKLQljaGFyICpzcDsKLQl4ID0gc3RydG9rX3IocywgIi0iLCAmc3ApOwkvLyB4ID0gImFiYyIsIHNwID0gIj0tZGVmIgotCXggPSBzdHJ0b2tfcihOVUxMLCAiLT0iLCAmc3ApOwkvLyB4ID0gImRlZiIsIHNwID0gTlVMTAotCXggPSBzdHJ0b2tfcihOVUxMLCAiPSIsICZzcCk7CS8vIHggPSBOVUxMCi0JCS8vIHMgPSAiYWJjXDAtZGVmXDAiCi0qLwotY2hhciAqCi1naXRzdHJ0b2tfciAoY2hhciAqcywgY29uc3QgY2hhciAqZGVsaW0sIGNoYXIgKipzYXZlX3B0cikKLXsKLSAgY2hhciAqdG9rZW47Ci0KLSAgaWYgKHMgPT0gTlVMTCkKLSAgICBzID0gKnNhdmVfcHRyOwotCi0gIC8qIFNjYW4gbGVhZGluZyBkZWxpbWl0ZXJzLiAgKi8KLSAgcyArPSBzdHJzcG4gKHMsIGRlbGltKTsKLSAgaWYgKCpzID09ICdcMCcpCi0gICAgewotICAgICAgKnNhdmVfcHRyID0gczsKLSAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAvKiBGaW5kIHRoZSBlbmQgb2YgdGhlIHRva2VuLiAgKi8KLSAgdG9rZW4gPSBzOwotICBzID0gc3RycGJyayAodG9rZW4sIGRlbGltKTsKLSAgaWYgKHMgPT0gTlVMTCkKLSAgICAvKiBUaGlzIHRva2VuIGZpbmlzaGVzIHRoZSBzdHJpbmcuICAqLwotICAgICpzYXZlX3B0ciA9IHRva2VuICsgc3RybGVuICh0b2tlbik7Ci0gIGVsc2UKLSAgICB7Ci0gICAgICAvKiBUZXJtaW5hdGUgdGhlIHRva2VuIGFuZCBtYWtlICpTQVZFX1BUUiBwb2ludCBwYXN0IGl0LiAgKi8KLSAgICAgICpzID0gJ1wwJzsKLSAgICAgICpzYXZlX3B0ciA9IHMgKyAxOwotICAgIH0KLSAgcmV0dXJuIHRva2VuOwotfQpkaWZmIC0tZ2l0IGEvY29tcGF0L3Rlcm1pbmFsLmMgYi9jb21wYXQvdGVybWluYWwuYwppbmRleCA2ZDE2YzhmLi45YjVlM2QxIDEwMDY0NAotLS0gYS9jb21wYXQvdGVybWluYWwuYworKysgYi9jb21wYXQvdGVybWluYWwuYwpAQCAtMyw4ICszLDIyIEBACiAjaW5jbHVkZSAic2lnY2hhaW4uaCIKICNpbmNsdWRlICJzdHJidWYuaCIKIAorI2lmIGRlZmluZWQoSEFWRV9ERVZfVFRZKSB8fCBkZWZpbmVkKFdJTjMyKQorCitzdGF0aWMgdm9pZCByZXN0b3JlX3Rlcm0odm9pZCk7CisKK3N0YXRpYyB2b2lkIHJlc3RvcmVfdGVybV9vbl9zaWduYWwoaW50IHNpZykKK3sKKwlyZXN0b3JlX3Rlcm0oKTsKKwlzaWdjaGFpbl9wb3Aoc2lnKTsKKwlyYWlzZShzaWcpOworfQorCiAjaWZkZWYgSEFWRV9ERVZfVFRZCiAKKyNkZWZpbmUgSU5QVVRfUEFUSCAiL2Rldi90dHkiCisjZGVmaW5lIE9VVFBVVF9QQVRIICIvZGV2L3R0eSIKKwogc3RhdGljIGludCB0ZXJtX2ZkID0gLTE7CiBzdGF0aWMgc3RydWN0IHRlcm1pb3Mgb2xkX3Rlcm07CiAKQEAgLTE0LDU3ICsyOCwxMDkgQEAKIAkJcmV0dXJuOwogCiAJdGNzZXRhdHRyKHRlcm1fZmQsIFRDU0FGTFVTSCwgJm9sZF90ZXJtKTsKKwljbG9zZSh0ZXJtX2ZkKTsKIAl0ZXJtX2ZkID0gLTE7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc3RvcmVfdGVybV9vbl9zaWduYWwoaW50IHNpZykKK3N0YXRpYyBpbnQgZGlzYWJsZV9lY2hvKHZvaWQpCiB7Ci0JcmVzdG9yZV90ZXJtKCk7Ci0Jc2lnY2hhaW5fcG9wKHNpZyk7Ci0JcmFpc2Uoc2lnKTsKKwlzdHJ1Y3QgdGVybWlvcyB0OworCisJdGVybV9mZCA9IG9wZW4oIi9kZXYvdHR5IiwgT19SRFdSKTsKKwlpZiAodGNnZXRhdHRyKHRlcm1fZmQsICZ0KSA8IDApCisJCWdvdG8gZXJyb3I7CisKKwlvbGRfdGVybSA9IHQ7CisJc2lnY2hhaW5fcHVzaF9jb21tb24ocmVzdG9yZV90ZXJtX29uX3NpZ25hbCk7CisKKwl0LmNfbGZsYWcgJj0gfkVDSE87CisJaWYgKCF0Y3NldGF0dHIodGVybV9mZCwgVENTQUZMVVNILCAmdCkpCisJCXJldHVybiAwOworCitlcnJvcjoKKwljbG9zZSh0ZXJtX2ZkKTsKKwl0ZXJtX2ZkID0gLTE7CisJcmV0dXJuIC0xOwogfQogCisjZWxpZiBkZWZpbmVkKFdJTjMyKQorCisjZGVmaW5lIElOUFVUX1BBVEggIkNPTklOJCIKKyNkZWZpbmUgT1VUUFVUX1BBVEggIkNPTk9VVCQiCisjZGVmaW5lIEZPUkNFX1RFWFQgInQiCisKK3N0YXRpYyBIQU5ETEUgaGNvbmluID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CitzdGF0aWMgRFdPUkQgY21vZGU7CisKK3N0YXRpYyB2b2lkIHJlc3RvcmVfdGVybSh2b2lkKQoreworCWlmIChoY29uaW4gPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisJCXJldHVybjsKKworCVNldENvbnNvbGVNb2RlKGhjb25pbiwgY21vZGUpOworCUNsb3NlSGFuZGxlKGhjb25pbik7CisJaGNvbmluID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Cit9CisKK3N0YXRpYyBpbnQgZGlzYWJsZV9lY2hvKHZvaWQpCit7CisJaGNvbmluID0gQ3JlYXRlRmlsZSgiQ09OSU4kIiwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwKKwkgICAgRklMRV9TSEFSRV9SRUFELCBOVUxMLCBPUEVOX0VYSVNUSU5HLAorCSAgICBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIE5VTEwpOworCWlmIChoY29uaW4gPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisJCXJldHVybiAtMTsKKworCUdldENvbnNvbGVNb2RlKGhjb25pbiwgJmNtb2RlKTsKKwlzaWdjaGFpbl9wdXNoX2NvbW1vbihyZXN0b3JlX3Rlcm1fb25fc2lnbmFsKTsKKwlpZiAoIVNldENvbnNvbGVNb2RlKGhjb25pbiwgY21vZGUgJiAofkVOQUJMRV9FQ0hPX0lOUFVUKSkpIHsKKwkJQ2xvc2VIYW5kbGUoaGNvbmluKTsKKwkJaGNvbmluID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisJCXJldHVybiAtMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworI2VuZGlmCisKKyNpZm5kZWYgRk9SQ0VfVEVYVAorI2RlZmluZSBGT1JDRV9URVhUCisjZW5kaWYKKwogY2hhciAqZ2l0X3Rlcm1pbmFsX3Byb21wdChjb25zdCBjaGFyICpwcm9tcHQsIGludCBlY2hvKQogewogCXN0YXRpYyBzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCWludCByOwotCUZJTEUgKmZoOworCUZJTEUgKmlucHV0X2ZoLCAqb3V0cHV0X2ZoOwogCi0JZmggPSBmb3BlbigiL2Rldi90dHkiLCAidysiKTsKLQlpZiAoIWZoKQorCWlucHV0X2ZoID0gZm9wZW4oSU5QVVRfUEFUSCwgInIiIEZPUkNFX1RFWFQpOworCWlmICghaW5wdXRfZmgpCiAJCXJldHVybiBOVUxMOwogCi0JaWYgKCFlY2hvKSB7Ci0JCXN0cnVjdCB0ZXJtaW9zIHQ7Ci0KLQkJaWYgKHRjZ2V0YXR0cihmaWxlbm8oZmgpLCAmdCkgPCAwKSB7Ci0JCQlmY2xvc2UoZmgpOwotCQkJcmV0dXJuIE5VTEw7Ci0JCX0KLQotCQlvbGRfdGVybSA9IHQ7Ci0JCXRlcm1fZmQgPSBmaWxlbm8oZmgpOwotCQlzaWdjaGFpbl9wdXNoX2NvbW1vbihyZXN0b3JlX3Rlcm1fb25fc2lnbmFsKTsKLQotCQl0LmNfbGZsYWcgJj0gfkVDSE87Ci0JCWlmICh0Y3NldGF0dHIoZmlsZW5vKGZoKSwgVENTQUZMVVNILCAmdCkgPCAwKSB7Ci0JCQl0ZXJtX2ZkID0gLTE7Ci0JCQlmY2xvc2UoZmgpOwotCQkJcmV0dXJuIE5VTEw7Ci0JCX0KKwlvdXRwdXRfZmggPSBmb3BlbihPVVRQVVRfUEFUSCwgInciIEZPUkNFX1RFWFQpOworCWlmICghb3V0cHV0X2ZoKSB7CisJCWZjbG9zZShpbnB1dF9maCk7CisJCXJldHVybiBOVUxMOwogCX0KIAotCWZwdXRzKHByb21wdCwgZmgpOwotCWZmbHVzaChmaCk7CisJaWYgKCFlY2hvICYmIGRpc2FibGVfZWNobygpKSB7CisJCWZjbG9zZShpbnB1dF9maCk7CisJCWZjbG9zZShvdXRwdXRfZmgpOworCQlyZXR1cm4gTlVMTDsKKwl9CiAKLQlyID0gc3RyYnVmX2dldGxpbmUoJmJ1ZiwgZmgsICdcbicpOworCWZwdXRzKHByb21wdCwgb3V0cHV0X2ZoKTsKKwlmZmx1c2gob3V0cHV0X2ZoKTsKKworCXIgPSBzdHJidWZfZ2V0bGluZSgmYnVmLCBpbnB1dF9maCwgJ1xuJyk7CiAJaWYgKCFlY2hvKSB7Ci0JCXB1dGMoJ1xuJywgZmgpOwotCQlmZmx1c2goZmgpOworCQlwdXRjKCdcbicsIG91dHB1dF9maCk7CisJCWZmbHVzaChvdXRwdXRfZmgpOwogCX0KIAogCXJlc3RvcmVfdGVybSgpOwotCWZjbG9zZShmaCk7CisJZmNsb3NlKGlucHV0X2ZoKTsKKwlmY2xvc2Uob3V0cHV0X2ZoKTsKIAogCWlmIChyID09IEVPRikKIAkJcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9jb21wYXQvdmNidWlsZC9pbmNsdWRlL3N5cy9wb2xsLmggYi9jb21wYXQvdmNidWlsZC9pbmNsdWRlL3N5cy9wb2xsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkODU1MmEuLjAwMDAwMDAKLS0tIGEvY29tcGF0L3ZjYnVpbGQvaW5jbHVkZS9zeXMvcG9sbC5oCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotLyogSW50ZW50aW9uYWxseSBlbXB0eSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgZ2l0IHdpdGggTVNWQyAqLwpkaWZmIC0tZ2l0IGEvY29tcGF0L3ZjYnVpbGQvaW5jbHVkZS91bmlzdGQuaCBiL2NvbXBhdC92Y2J1aWxkL2luY2x1ZGUvdW5pc3RkLmgKaW5kZXggYjE0ZmNmOS4uYzY1YzJjZCAxMDA2NDQKLS0tIGEvY29tcGF0L3ZjYnVpbGQvaW5jbHVkZS91bmlzdGQuaAorKysgYi9jb21wYXQvdmNidWlsZC9pbmNsdWRlL3VuaXN0ZC5oCkBAIC00OSw2ICs0OSw5IEBACiAjZGVmaW5lIElOVE1BWF9NQVggIF9JNjRfTUFYCiAjZGVmaW5lIFVJTlRNQVhfTUFYIF9VSTY0X01BWAogCisjZGVmaW5lIFVJTlQzMl9NQVggMHhmZmZmZmZmZiAgLyogNDI5NDk2NzI5NVUgKi8KKworI2RlZmluZSBTVERJTl9GSUxFTk8gIDAKICNkZWZpbmUgU1RET1VUX0ZJTEVOTyAxCiAjZGVmaW5lIFNUREVSUl9GSUxFTk8gMgogCmRpZmYgLS1naXQgYS9jb25maWcuYyBiL2NvbmZpZy5jCmluZGV4IDcxZWYxNzEuLjdhODVlYmQgMTAwNjQ0Ci0tLSBhL2NvbmZpZy5jCisrKyBiL2NvbmZpZy5jCkBAIC0xMCw4ICsxMCw2IEBACiAjaW5jbHVkZSAic3RyYnVmLmgiCiAjaW5jbHVkZSAicXVvdGUuaCIKIAotI2RlZmluZSBNQVhOQU1FICgyNTYpCi0KIHR5cGVkZWYgc3RydWN0IGNvbmZpZ19maWxlIHsKIAlzdHJ1Y3QgY29uZmlnX2ZpbGUgKnByZXY7CiAJRklMRSAqZjsKQEAgLTE5LDcgKzE3LDcgQEAKIAlpbnQgbGluZW5yOwogCWludCBlb2Y7CiAJc3RydWN0IHN0cmJ1ZiB2YWx1ZTsKLQljaGFyIHZhcltNQVhOQU1FXTsKKwlzdHJ1Y3Qgc3RyYnVmIHZhcjsKIH0gY29uZmlnX2ZpbGU7CiAKIHN0YXRpYyBjb25maWdfZmlsZSAqY2Y7CkBAIC02MCw3ICs1OCw3IEBACiAJCXBhdGggPSBidWYuYnVmOwogCX0KIAotCWlmICghYWNjZXNzKHBhdGgsIFJfT0spKSB7CisJaWYgKCFhY2Nlc3Nfb3JfZGllKHBhdGgsIFJfT0ssIDApKSB7CiAJCWlmICgrK2luYy0+ZGVwdGggPiBNQVhfSU5DTFVERV9ERVBUSCkKIAkJCWRpZShpbmNsdWRlX2RlcHRoX2FkdmljZSwgTUFYX0lOQ0xVREVfREVQVEgsIHBhdGgsCiAJCQkgICAgY2YgJiYgY2YtPm5hbWUgPyBjZi0+bmFtZSA6ICJ0aGUgY29tbWFuZCBsaW5lIik7CkBAIC0yNjAsNyArMjU4LDcgQEAKIAlyZXR1cm4gaXNhbG51bShjKSB8fCBjID09ICctJzsKIH0KIAotc3RhdGljIGludCBnZXRfdmFsdWUoY29uZmlnX2ZuX3QgZm4sIHZvaWQgKmRhdGEsIGNoYXIgKm5hbWUsIHVuc2lnbmVkIGludCBsZW4pCitzdGF0aWMgaW50IGdldF92YWx1ZShjb25maWdfZm5fdCBmbiwgdm9pZCAqZGF0YSwgc3RydWN0IHN0cmJ1ZiAqbmFtZSkKIHsKIAlpbnQgYzsKIAljaGFyICp2YWx1ZTsKQEAgLTI3MiwxMSArMjcwLDkgQEAKIAkJCWJyZWFrOwogCQlpZiAoIWlza2V5Y2hhcihjKSkKIAkJCWJyZWFrOwotCQluYW1lW2xlbisrXSA9IHRvbG93ZXIoYyk7Ci0JCWlmIChsZW4gPj0gTUFYTkFNRSkKLQkJCXJldHVybiAtMTsKKwkJc3RyYnVmX2FkZGNoKG5hbWUsIHRvbG93ZXIoYykpOwogCX0KLQluYW1lW2xlbl0gPSAwOworCiAJd2hpbGUgKGMgPT0gJyAnIHx8IGMgPT0gJ1x0JykKIAkJYyA9IGdldF9uZXh0X2NoYXIoKTsKIApAQCAtMjg4LDEwICsyODQsMTAgQEAKIAkJaWYgKCF2YWx1ZSkKIAkJCXJldHVybiAtMTsKIAl9Ci0JcmV0dXJuIGZuKG5hbWUsIHZhbHVlLCBkYXRhKTsKKwlyZXR1cm4gZm4obmFtZS0+YnVmLCB2YWx1ZSwgZGF0YSk7CiB9CiAKLXN0YXRpYyBpbnQgZ2V0X2V4dGVuZGVkX2Jhc2VfdmFyKGNoYXIgKm5hbWUsIGludCBiYXNlbGVuLCBpbnQgYykKK3N0YXRpYyBpbnQgZ2V0X2V4dGVuZGVkX2Jhc2VfdmFyKHN0cnVjdCBzdHJidWYgKm5hbWUsIGludCBjKQogewogCWRvIHsKIAkJaWYgKGMgPT0gJ1xuJykKQEAgLTMwMiw3ICsyOTgsNyBAQAogCS8qIFdlIHJlcXVpcmUgdGhlIGZvcm1hdCB0byBiZSAnW2Jhc2UgImV4dGVuc2lvbiJdJyAqLwogCWlmIChjICE9ICciJykKIAkJcmV0dXJuIC0xOwotCW5hbWVbYmFzZWxlbisrXSA9ICcuJzsKKwlzdHJidWZfYWRkY2gobmFtZSwgJy4nKTsKIAogCWZvciAoOzspIHsKIAkJaW50IGMgPSBnZXRfbmV4dF9jaGFyKCk7CkBAIC0zMTUsMzcgKzMxMSwzMSBAQAogCQkJaWYgKGMgPT0gJ1xuJykKIAkJCQlnb3RvIGVycm9yX2luY29tcGxldGVfbGluZTsKIAkJfQotCQluYW1lW2Jhc2VsZW4rK10gPSBjOwotCQlpZiAoYmFzZWxlbiA+IE1BWE5BTUUgLyAyKQotCQkJcmV0dXJuIC0xOworCQlzdHJidWZfYWRkY2gobmFtZSwgYyk7CiAJfQogCiAJLyogRmluYWwgJ10nICovCiAJaWYgKGdldF9uZXh0X2NoYXIoKSAhPSAnXScpCiAJCXJldHVybiAtMTsKLQlyZXR1cm4gYmFzZWxlbjsKKwlyZXR1cm4gMDsKIGVycm9yX2luY29tcGxldGVfbGluZToKIAljZi0+bGluZW5yLS07CiAJcmV0dXJuIC0xOwogfQogCi1zdGF0aWMgaW50IGdldF9iYXNlX3ZhcihjaGFyICpuYW1lKQorc3RhdGljIGludCBnZXRfYmFzZV92YXIoc3RydWN0IHN0cmJ1ZiAqbmFtZSkKIHsKLQlpbnQgYmFzZWxlbiA9IDA7Ci0KIAlmb3IgKDs7KSB7CiAJCWludCBjID0gZ2V0X25leHRfY2hhcigpOwogCQlpZiAoY2YtPmVvZikKIAkJCXJldHVybiAtMTsKIAkJaWYgKGMgPT0gJ10nKQotCQkJcmV0dXJuIGJhc2VsZW47CisJCQlyZXR1cm4gMDsKIAkJaWYgKGlzc3BhY2UoYykpCi0JCQlyZXR1cm4gZ2V0X2V4dGVuZGVkX2Jhc2VfdmFyKG5hbWUsIGJhc2VsZW4sIGMpOworCQkJcmV0dXJuIGdldF9leHRlbmRlZF9iYXNlX3ZhcihuYW1lLCBjKTsKIAkJaWYgKCFpc2tleWNoYXIoYykgJiYgYyAhPSAnLicpCiAJCQlyZXR1cm4gLTE7Ci0JCWlmIChiYXNlbGVuID4gTUFYTkFNRSAvIDIpCi0JCQlyZXR1cm4gLTE7Ci0JCW5hbWVbYmFzZWxlbisrXSA9IHRvbG93ZXIoYyk7CisJCXN0cmJ1Zl9hZGRjaChuYW1lLCB0b2xvd2VyKGMpKTsKIAl9CiB9CiAKQEAgLTM1Myw3ICszNDMsNyBAQAogewogCWludCBjb21tZW50ID0gMDsKIAlpbnQgYmFzZWxlbiA9IDA7Ci0JY2hhciAqdmFyID0gY2YtPnZhcjsKKwlzdHJ1Y3Qgc3RyYnVmICp2YXIgPSAmY2YtPnZhcjsKIAogCS8qIFUrRkVGRiBCeXRlIE9yZGVyIE1hcmsgaW4gVVRGOCAqLwogCXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyICp1dGY4X2JvbSA9ICh1bnNpZ25lZCBjaGFyICopICJceGVmXHhiYlx4YmYiOwpAQCAtMzg5LDE3ICszNzksMjQgQEAKIAkJCWNvbnRpbnVlOwogCQl9CiAJCWlmIChjID09ICdbJykgewotCQkJYmFzZWxlbiA9IGdldF9iYXNlX3Zhcih2YXIpOwotCQkJaWYgKGJhc2VsZW4gPD0gMCkKKwkJCS8qIFJlc2V0IHByaW9yIHRvIGRldGVybWluaW5nIGEgbmV3IHN0ZW0gKi8KKwkJCXN0cmJ1Zl9yZXNldCh2YXIpOworCQkJaWYgKGdldF9iYXNlX3Zhcih2YXIpIDwgMCB8fCB2YXItPmxlbiA8IDEpCiAJCQkJYnJlYWs7Ci0JCQl2YXJbYmFzZWxlbisrXSA9ICcuJzsKLQkJCXZhcltiYXNlbGVuXSA9IDA7CisJCQlzdHJidWZfYWRkY2godmFyLCAnLicpOworCQkJYmFzZWxlbiA9IHZhci0+bGVuOwogCQkJY29udGludWU7CiAJCX0KIAkJaWYgKCFpc2FscGhhKGMpKQogCQkJYnJlYWs7Ci0JCXZhcltiYXNlbGVuXSA9IHRvbG93ZXIoYyk7Ci0JCWlmIChnZXRfdmFsdWUoZm4sIGRhdGEsIHZhciwgYmFzZWxlbisxKSA8IDApCisJCS8qCisJCSAqIFRydW5jYXRlIHRoZSB2YXIgbmFtZSBiYWNrIHRvIHRoZSBzZWN0aW9uIGhlYWRlcgorCQkgKiBzdGVtIHByaW9yIHRvIGdyYWJiaW5nIHRoZSBzdWZmaXggcGFydCBvZiB0aGUgbmFtZQorCQkgKiBhbmQgdGhlIHZhbHVlLgorCQkgKi8KKwkJc3RyYnVmX3NldGxlbih2YXIsIGJhc2VsZW4pOworCQlzdHJidWZfYWRkY2godmFyLCB0b2xvd2VyKGMpKTsKKwkJaWYgKGdldF92YWx1ZShmbiwgZGF0YSwgdmFyKSA8IDApCiAJCQlicmVhazsKIAl9CiAJZGllKCJiYWQgY29uZmlnIGZpbGUgbGluZSAlZCBpbiAlcyIsIGNmLT5saW5lbnIsIGNmLT5uYW1lKTsKQEAgLTU2OSw2ICs1NjYsMjUgQEAKIAkJdHJ1c3RfY3RpbWUgPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7CiAJCXJldHVybiAwOwogCX0KKwlpZiAoIXN0cmNtcCh2YXIsICJjb3JlLnN0YXRpbmZvIikgfHwKKwkgICAgIXN0cmNtcCh2YXIsICJjb3JlLmNoZWNrc3RhdCIpKSB7CisJCS8qCisJCSAqIE5FRURTV09SSzogc3RhdGluZm8gd2FzIGEgdHlwbyBpbiB2MS44LjIgdGhhdCBoYXMKKwkJICogbmV2ZXIgYmVlbiBhZHZlcnRpc2VkLiAgd2Ugd2lsbCByZW1vdmUgaXQgYXQgR2l0CisJCSAqIDIuMCBib3VuZGFyeS4KKwkJICovCisJCWlmICghc3RyY21wKHZhciwgImNvcmUuc3RhdGluZm8iKSkgeworCQkJc3RhdGljIGludCB3YXJuZWQ7CisJCQlpZiAoIXdhcm5lZCsrKSB7CisJCQkJd2FybmluZygiJ2NvcmUuc3RhdGluZm8nIHdpbGwgYmUgcmVtb3ZlZCBpbiBHaXQgMi4wOyAiCisJCQkJCSJ1c2UgJ2NvcmUuY2hlY2tzdGF0JyBpbnN0ZWFkLiIpOworCQkJfQorCQl9CisJCWlmICghc3RyY2FzZWNtcCh2YWx1ZSwgImRlZmF1bHQiKSkKKwkJCWNoZWNrX3N0YXQgPSAxOworCQllbHNlIGlmICghc3RyY2FzZWNtcCh2YWx1ZSwgIm1pbmltYWwiKSkKKwkJCWNoZWNrX3N0YXQgPSAwOworCX0KIAogCWlmICghc3RyY21wKHZhciwgImNvcmUucXVvdGVwYXRoIikpIHsKIAkJcXVvdGVfcGF0aF9mdWxseSA9IGdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKTsKQEAgLTcyMCw2ICs3MzYsMTQgQEAKIAlpZiAoIXN0cmNtcCh2YXIsICJjb3JlLmVkaXRvciIpKQogCQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJmVkaXRvcl9wcm9ncmFtLCB2YXIsIHZhbHVlKTsKIAorCWlmICghc3RyY21wKHZhciwgImNvcmUuY29tbWVudGNoYXIiKSkgeworCQljb25zdCBjaGFyICpjb21tZW50OworCQlpbnQgcmV0ID0gZ2l0X2NvbmZpZ19zdHJpbmcoJmNvbW1lbnQsIHZhciwgdmFsdWUpOworCQlpZiAoIXJldCkKKwkJCWNvbW1lbnRfbGluZV9jaGFyID0gY29tbWVudFswXTsKKwkJcmV0dXJuIHJldDsKKwl9CisKIAlpZiAoIXN0cmNtcCh2YXIsICJjb3JlLmFza3Bhc3MiKSkKIAkJcmV0dXJuIGdpdF9jb25maWdfc3RyaW5nKCZhc2twYXNzX3Byb2dyYW0sIHZhciwgdmFsdWUpOwogCkBAIC03NTgsNiArNzgyLDExIEBACiAJCXJldHVybiAwOwogCX0KIAorCWlmICghc3RyY21wKHZhciwgImNvcmUucHJlY29tcG9zZXVuaWNvZGUiKSkgeworCQlwcmVjb21wb3NlZF91bmljb2RlID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOworCQlyZXR1cm4gMDsKKwl9CisKIAkvKiBBZGQgb3RoZXIgY29uZmlnIHZhcmlhYmxlcyBoZXJlIGFuZCB0byBEb2N1bWVudGF0aW9uL2NvbmZpZy50eHQuICovCiAJcmV0dXJuIDA7CiB9CkBAIC04MzcsNiArODY2LDggQEAKIHsKIAlpZiAoIXN0cmNtcCh2YXIsICJtYWlsbWFwLmZpbGUiKSkKIAkJcmV0dXJuIGdpdF9jb25maWdfc3RyaW5nKCZnaXRfbWFpbG1hcF9maWxlLCB2YXIsIHZhbHVlKTsKKwlpZiAoIXN0cmNtcCh2YXIsICJtYWlsbWFwLmJsb2IiKSkKKwkJcmV0dXJuIGdpdF9jb25maWdfc3RyaW5nKCZnaXRfbWFpbG1hcF9ibG9iLCB2YXIsIHZhbHVlKTsKIAogCS8qIEFkZCBvdGhlciBjb25maWcgdmFyaWFibGVzIGhlcmUgYW5kIHRvIERvY3VtZW50YXRpb24vY29uZmlnLnR4dC4gKi8KIAlyZXR1cm4gMDsKQEAgLTg5NCwxMiArOTI1LDE0IEBACiAJCXRvcC5saW5lbnIgPSAxOwogCQl0b3AuZW9mID0gMDsKIAkJc3RyYnVmX2luaXQoJnRvcC52YWx1ZSwgMTAyNCk7CisJCXN0cmJ1Zl9pbml0KCZ0b3AudmFyLCAxMDI0KTsKIAkJY2YgPSAmdG9wOwogCiAJCXJldCA9IGdpdF9wYXJzZV9maWxlKGZuLCBkYXRhKTsKIAogCQkvKiBwb3AgY29uZmlnLWZpbGUgcGFyc2luZyBzdGF0ZSBzdGFjayAqLwogCQlzdHJidWZfcmVsZWFzZSgmdG9wLnZhbHVlKTsKKwkJc3RyYnVmX3JlbGVhc2UoJnRvcC52YXIpOwogCQljZiA9IHRvcC5wcmV2OwogCiAJCWZjbG9zZShmKTsKQEAgLTkyOSwyNSArOTYyLDI4IEBACiBpbnQgZ2l0X2NvbmZpZ19lYXJseShjb25maWdfZm5fdCBmbiwgdm9pZCAqZGF0YSwgY29uc3QgY2hhciAqcmVwb19jb25maWcpCiB7CiAJaW50IHJldCA9IDAsIGZvdW5kID0gMDsKLQljb25zdCBjaGFyICpob21lID0gTlVMTDsKKwljaGFyICp4ZGdfY29uZmlnID0gTlVMTDsKKwljaGFyICp1c2VyX2NvbmZpZyA9IE5VTEw7CiAKLQlpZiAoZ2l0X2NvbmZpZ19zeXN0ZW0oKSAmJiAhYWNjZXNzKGdpdF9ldGNfZ2l0Y29uZmlnKCksIFJfT0spKSB7CisJaG9tZV9jb25maWdfcGF0aHMoJnVzZXJfY29uZmlnLCAmeGRnX2NvbmZpZywgImNvbmZpZyIpOworCisJaWYgKGdpdF9jb25maWdfc3lzdGVtKCkgJiYgIWFjY2Vzc19vcl9kaWUoZ2l0X2V0Y19naXRjb25maWcoKSwgUl9PSywgMCkpIHsKIAkJcmV0ICs9IGdpdF9jb25maWdfZnJvbV9maWxlKGZuLCBnaXRfZXRjX2dpdGNvbmZpZygpLAogCQkJCQkgICAgZGF0YSk7CiAJCWZvdW5kICs9IDE7CiAJfQogCi0JaG9tZSA9IGdldGVudigiSE9NRSIpOwotCWlmIChob21lKSB7Ci0JCWNoYXIgYnVmW1BBVEhfTUFYXTsKLQkJY2hhciAqdXNlcl9jb25maWcgPSBta3NucGF0aChidWYsIHNpemVvZihidWYpLCAiJXMvLmdpdGNvbmZpZyIsIGhvbWUpOwotCQlpZiAoIWFjY2Vzcyh1c2VyX2NvbmZpZywgUl9PSykpIHsKLQkJCXJldCArPSBnaXRfY29uZmlnX2Zyb21fZmlsZShmbiwgdXNlcl9jb25maWcsIGRhdGEpOwotCQkJZm91bmQgKz0gMTsKLQkJfQorCWlmICh4ZGdfY29uZmlnICYmICFhY2Nlc3Nfb3JfZGllKHhkZ19jb25maWcsIFJfT0ssIEFDQ0VTU19FQUNDRVNfT0spKSB7CisJCXJldCArPSBnaXRfY29uZmlnX2Zyb21fZmlsZShmbiwgeGRnX2NvbmZpZywgZGF0YSk7CisJCWZvdW5kICs9IDE7CiAJfQogCi0JaWYgKHJlcG9fY29uZmlnICYmICFhY2Nlc3MocmVwb19jb25maWcsIFJfT0spKSB7CisJaWYgKHVzZXJfY29uZmlnICYmICFhY2Nlc3Nfb3JfZGllKHVzZXJfY29uZmlnLCBSX09LLCBBQ0NFU1NfRUFDQ0VTX09LKSkgeworCQlyZXQgKz0gZ2l0X2NvbmZpZ19mcm9tX2ZpbGUoZm4sIHVzZXJfY29uZmlnLCBkYXRhKTsKKwkJZm91bmQgKz0gMTsKKwl9CisKKwlpZiAocmVwb19jb25maWcgJiYgIWFjY2Vzc19vcl9kaWUocmVwb19jb25maWcsIFJfT0ssIDApKSB7CiAJCXJldCArPSBnaXRfY29uZmlnX2Zyb21fZmlsZShmbiwgcmVwb19jb25maWcsIGRhdGEpOwogCQlmb3VuZCArPSAxOwogCX0KQEAgLTk2Myw2ICs5OTksOCBAQAogCQlicmVhazsKIAl9CiAKKwlmcmVlKHhkZ19jb25maWcpOworCWZyZWUodXNlcl9jb25maWcpOwogCXJldHVybiByZXQgPT0gMCA/IGZvdW5kIDogcmV0OwogfQogCkBAIC0xMjcwLDYgKzEzMDgsNyBAQAogCiBvdXRfZnJlZV9yZXRfMToKIAlmcmVlKCpzdG9yZV9rZXkpOworCSpzdG9yZV9rZXkgPSBOVUxMOwogCXJldHVybiAtQ09ORklHX0lOVkFMSURfS0VZOwogfQogCkBAIC0xNjUwLDcgKzE2ODksNDEgQEAKICAqIENhbGwgdGhpcyB0byByZXBvcnQgZXJyb3IgZm9yIHlvdXIgdmFyaWFibGUgdGhhdCBzaG91bGQgbm90CiAgKiBnZXQgYSBib29sZWFuIHZhbHVlIChpLmUuICJbbXldIHZhciIgbWVhbnMgInRydWUiKS4KICAqLworI3VuZGVmIGNvbmZpZ19lcnJvcl9ub25ib29sCiBpbnQgY29uZmlnX2Vycm9yX25vbmJvb2woY29uc3QgY2hhciAqdmFyKQogewogCXJldHVybiBlcnJvcigiTWlzc2luZyB2YWx1ZSBmb3IgJyVzJyIsIHZhcik7CiB9CisKK2ludCBwYXJzZV9jb25maWdfa2V5KGNvbnN0IGNoYXIgKnZhciwKKwkJICAgICBjb25zdCBjaGFyICpzZWN0aW9uLAorCQkgICAgIGNvbnN0IGNoYXIgKipzdWJzZWN0aW9uLCBpbnQgKnN1YnNlY3Rpb25fbGVuLAorCQkgICAgIGNvbnN0IGNoYXIgKiprZXkpCit7CisJaW50IHNlY3Rpb25fbGVuID0gc3RybGVuKHNlY3Rpb24pOworCWNvbnN0IGNoYXIgKmRvdDsKKworCS8qIERvZXMgaXQgc3RhcnQgd2l0aCAic2VjdGlvbi4iID8gKi8KKwlpZiAocHJlZml4Y21wKHZhciwgc2VjdGlvbikgfHwgdmFyW3NlY3Rpb25fbGVuXSAhPSAnLicpCisJCXJldHVybiAtMTsKKworCS8qCisJICogRmluZCB0aGUga2V5OyB3ZSBkb24ndCBrbm93IHlldCBpZiB3ZSBoYXZlIGEgc3Vic2VjdGlvbiwgYnV0IHdlIG11c3QKKwkgKiBwYXJzZSBiYWNrd2FyZHMgZnJvbSB0aGUgZW5kLCBzaW5jZSB0aGUgc3Vic2VjdGlvbiBtYXkgaGF2ZSBkb3RzIGluCisJICogaXQsIHRvby4KKwkgKi8KKwlkb3QgPSBzdHJyY2hyKHZhciwgJy4nKTsKKwkqa2V5ID0gZG90ICsgMTsKKworCS8qIERpZCB3ZSBoYXZlIGEgc3Vic2VjdGlvbiBhdCBhbGw/ICovCisJaWYgKGRvdCA9PSB2YXIgKyBzZWN0aW9uX2xlbikgeworCQkqc3Vic2VjdGlvbiA9IE5VTEw7CisJCSpzdWJzZWN0aW9uX2xlbiA9IDA7CisJfQorCWVsc2UgeworCQkqc3Vic2VjdGlvbiA9IHZhciArIHNlY3Rpb25fbGVuICsgMTsKKwkJKnN1YnNlY3Rpb25fbGVuID0gZG90IC0gKnN1YnNlY3Rpb247CisJfQorCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9jb25maWcubWFrLmluIGIvY29uZmlnLm1hay5pbgppbmRleCBiMmJhNzEwLi5lNmE2ZDBmIDEwMDY0NAotLS0gYS9jb25maWcubWFrLmluCisrKyBiL2NvbmZpZy5tYWsuaW4KQEAgLTUsMTIgKzUsMTEgQEAKIENGTEFHUyA9IEBDRkxBR1NACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKIExERkxBR1MgPSBATERGTEFHU0AKLUNDX0xEX0RZTlBBVEggPSBAQ0NfTERfRFlOUEFUSEAKIEFSID0gQEFSQAogVEFSID0gQFRBUkAKIERJRkYgPSBARElGRkAKK1BBQ0tBR0VfVEFSTkFNRSA9IEBQQUNLQUdFX1RBUk5BTUVACiAjSU5TVEFMTCA9IEBJTlNUQUxMQAkJIyBuZWVkcyBpbnN0YWxsLXNoIG9yIGluc3RhbGwuc2ggaW4gc291cmNlcwotVENMVEtfUEFUSCA9IEBUQ0xUS19QQVRIQAogCiBwcmVmaXggPSBAcHJlZml4QAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACkBAIC0xOSw1OSArMTgsNyBAQAogZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3RkaXJACiB0ZW1wbGF0ZV9kaXIgPSBAZGF0YWRpckAvZ2l0LWNvcmUvdGVtcGxhdGVzCiBzeXNjb25mZGlyID0gQHN5c2NvbmZkaXJACitkb2NkaXIgPSBAZG9jZGlyQAogCi1tYW5kaXI9QG1hbmRpckAKLQotc3JjZGlyID0gQHNyY2RpckAKLVZQQVRIID0gQHNyY2RpckAKLQotZXhwb3J0IGV4ZWNfcHJlZml4IG1hbmRpcgotZXhwb3J0IHNyY2RpciBWUEFUSAotCi1BU0NJSURPQzc9QEFTQ0lJRE9DN0AKLU5FRURTX1NTTF9XSVRIX0NSWVBUTz1ATkVFRFNfU1NMX1dJVEhfQ1JZUFRPQAotTk9fT1BFTlNTTD1ATk9fT1BFTlNTTEAKLU5PX0NVUkw9QE5PX0NVUkxACi1OT19FWFBBVD1ATk9fRVhQQVRACi1OT19MSUJHRU5fSD1ATk9fTElCR0VOX0hACi1IQVZFX1BBVEhTX0g9QEhBVkVfUEFUSFNfSEAKLUhBVkVfTElCQ0hBUlNFVF9IPUBIQVZFX0xJQkNIQVJTRVRfSEAKLU5PX0dFVFRFWFQ9QE5PX0dFVFRFWFRACi1MSUJDX0NPTlRBSU5TX0xJQklOVEw9QExJQkNfQ09OVEFJTlNfTElCSU5UTEAKLU5FRURTX0xJQklDT05WPUBORUVEU19MSUJJQ09OVkAKLU5FRURTX1NPQ0tFVD1ATkVFRFNfU09DS0VUQAotTkVFRFNfUkVTT0xWPUBORUVEU19SRVNPTFZACi1ORUVEU19MSUJHRU49QE5FRURTX0xJQkdFTkAKLU5PX1NZU19TRUxFQ1RfSD1ATk9fU1lTX1NFTEVDVF9IQAotTk9fRF9JTk9fSU5fRElSRU5UPUBOT19EX0lOT19JTl9ESVJFTlRACi1OT19EX1RZUEVfSU5fRElSRU5UPUBOT19EX1RZUEVfSU5fRElSRU5UQAotTk9fU09DS0FERFJfU1RPUkFHRT1ATk9fU09DS0FERFJfU1RPUkFHRUAKLU5PX0lQVjY9QE5PX0lQVjZACi1OT19IU1RSRVJST1I9QE5PX0hTVFJFUlJPUkAKLU5PX1NUUkNBU0VTVFI9QE5PX1NUUkNBU0VTVFJACi1OT19TVFJUT0tfUj1ATk9fU1RSVE9LX1JACi1OT19GTk1BVENIPUBOT19GTk1BVENIQAotTk9fRk5NQVRDSF9DQVNFRk9MRD1ATk9fRk5NQVRDSF9DQVNFRk9MREAKLU5PX01FTU1FTT1ATk9fTUVNTUVNQAotTk9fU1RSTENQWT1ATk9fU1RSTENQWUAKLU5PX1VJTlRNQVhfVD1ATk9fVUlOVE1BWF9UQAotTk9fU1RSVE9VTUFYPUBOT19TVFJUT1VNQVhACi1OT19TRVRFTlY9QE5PX1NFVEVOVkAKLU5PX1VOU0VURU5WPUBOT19VTlNFVEVOVkAKLU5PX01LRFRFTVA9QE5PX01LRFRFTVBACi1OT19NS1NURU1QUz1ATk9fTUtTVEVNUFNACi1OT19JTkVUX05UT1A9QE5PX0lORVRfTlRPUEAKLU5PX0lORVRfUFRPTj1ATk9fSU5FVF9QVE9OQAotTk9fSUNPTlY9QE5PX0lDT05WQAotT0xEX0lDT05WPUBPTERfSUNPTlZACi1OT19SRUdFWD1ATk9fUkVHRVhACi1VU0VfTElCUENSRT1AVVNFX0xJQlBDUkVACi1OT19ERUZMQVRFX0JPVU5EPUBOT19ERUZMQVRFX0JPVU5EQAotSU5MSU5FPUBJTkxJTkVACi1TT0NLTEVOX1Q9QFNPQ0tMRU5fVEAKLUZSRUFEX1JFQURTX0RJUkVDVE9SSUVTPUBGUkVBRF9SRUFEU19ESVJFQ1RPUklFU0AKLVNOUFJJTlRGX1JFVFVSTlNfQk9HVVM9QFNOUFJJTlRGX1JFVFVSTlNfQk9HVVNACi1OT19QVEhSRUFEUz1ATk9fUFRIUkVBRFNACi1QVEhSRUFEX0NGTEFHUz1AUFRIUkVBRF9DRkxBR1NACi1QVEhSRUFEX0xJQlM9QFBUSFJFQURfTElCU0AKLUNIQVJTRVRfTElCPUBDSEFSU0VUX0xJQkAKK21hbmRpciA9IEBtYW5kaXJACitodG1sZGlyID0gQGh0bWxkaXJACmRpZmYgLS1naXQgYS9jb25maWcubWFrLnVuYW1lIGIvY29uZmlnLm1hay51bmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzQ3MDNiCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlnLm1hay51bmFtZQpAQCAtMCwwICsxLDU0MiBAQAorIyBQbGF0Zm9ybSBzcGVjaWZpYyBNYWtlZmlsZSB0d2Vha3MgYmFzZWQgb24gdW5hbWUgZGV0ZWN0aW9uCisKK3VuYW1lX1MgOj0gJChzaGVsbCBzaCAtYyAndW5hbWUgLXMgMj4vZGV2L251bGwgfHwgZWNobyBub3QnKQordW5hbWVfTSA6PSAkKHNoZWxsIHNoIC1jICd1bmFtZSAtbSAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vdCcpCit1bmFtZV9PIDo9ICQoc2hlbGwgc2ggLWMgJ3VuYW1lIC1vIDI+L2Rldi9udWxsIHx8IGVjaG8gbm90JykKK3VuYW1lX1IgOj0gJChzaGVsbCBzaCAtYyAndW5hbWUgLXIgMj4vZGV2L251bGwgfHwgZWNobyBub3QnKQordW5hbWVfUCA6PSAkKHNoZWxsIHNoIC1jICd1bmFtZSAtcCAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vdCcpCit1bmFtZV9WIDo9ICQoc2hlbGwgc2ggLWMgJ3VuYW1lIC12IDI+L2Rldi9udWxsIHx8IGVjaG8gbm90JykKKworaWZkZWYgTVNWQworCSMgYXZvaWQgdGhlIE1pbmdXIGFuZCBDeWd3aW4gY29uZmlndXJhdGlvbiBzZWN0aW9ucworCXVuYW1lX1MgOj0gV2luZG93cworCXVuYW1lX08gOj0gV2luZG93cworZW5kaWYKKworIyBXZSBjaG9vc2UgdG8gYXZvaWQgImlmIC4uIGVsc2UgaWYgLi4gZWxzZSAuLiBlbmRpZiBlbmRpZiIKKyMgYmVjYXVzZSBtYWludGFpbmluZyB0aGUgbmVzdGluZyB0byBtYXRjaCBpcyBhIHBhaW4uICBJZgorIyB3ZSBoYWQgImVsaWYiIHRoaW5ncyB3b3VsZCBoYXZlIGJlZW4gbXVjaCBuaWNlci4uLgorCitpZmVxICgkKHVuYW1lX00pLHg4Nl82NCkKKwlYRExfRkFTVF9IQVNIID0gWWVzUGxlYXNlCitlbmRpZgoraWZlcSAoJCh1bmFtZV9TKSxPU0YxKQorCSMgTmVlZCB0aGlzIGZvciB1X3Nob3J0IGRlZmluaXRpb25zIGV0IGFsCisJQkFTSUNfQ0ZMQUdTICs9IC1EX09TRl9TT1VSQ0UKKwlTT0NLTEVOX1QgPSBpbnQKKwlOT19TVFJUT1VMTCA9IFllc1BsZWFzZQorCU5PX05TRUMgPSBZZXNQbGVhc2UKK2VuZGlmCitpZmVxICgkKHVuYW1lX1MpLExpbnV4KQorCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKKwlOT19NS1NURU1QUyA9IFllc1BsZWFzZQorCUhBVkVfUEFUSFNfSCA9IFllc1BsZWFzZQorCUxJQkNfQ09OVEFJTlNfTElCSU5UTCA9IFllc1BsZWFzZQorCUhBVkVfREVWX1RUWSA9IFllc1BsZWFzZQorZW5kaWYKK2lmZXEgKCQodW5hbWVfUyksR05VL2tGcmVlQlNEKQorCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKKwlOT19NS1NURU1QUyA9IFllc1BsZWFzZQorCUhBVkVfUEFUSFNfSCA9IFllc1BsZWFzZQorCURJUl9IQVNfQlNEX0dST1VQX1NFTUFOVElDUyA9IFllc1BsZWFzZQorCUxJQkNfQ09OVEFJTlNfTElCSU5UTCA9IFllc1BsZWFzZQorZW5kaWYKK2lmZXEgKCQodW5hbWVfUyksVW5peFdhcmUpCisJQ0MgPSBjYworCU5FRURTX1NPQ0tFVCA9IFllc1BsZWFzZQorCU5FRURTX05TTCA9IFllc1BsZWFzZQorCU5FRURTX1NTTF9XSVRIX0NSWVBUTyA9IFllc1BsZWFzZQorCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCisJU0hFTExfUEFUSCA9IC91c3IvbG9jYWwvYmluL2Jhc2gKKwlOT19JUFY2ID0gWWVzUGxlYXNlCisJTk9fSFNUUkVSUk9SID0gWWVzUGxlYXNlCisJTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKKwlCQVNJQ19DRkxBR1MgKz0gLUt0aHJlYWQKKwlCQVNJQ19DRkxBR1MgKz0gLUkvdXNyL2xvY2FsL2luY2x1ZGUKKwlCQVNJQ19MREZMQUdTICs9IC1ML3Vzci9sb2NhbC9saWIKKwlJTlNUQUxMID0gZ2luc3RhbGwKKwlUQVIgPSBndGFyCisJTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQorCU5PX01FTU1FTSA9IFllc1BsZWFzZQorZW5kaWYKK2lmZXEgKCQodW5hbWVfUyksU0NPX1NWKQorCWlmZXEgKCQodW5hbWVfUiksMy4yKQorCQlDRkxBR1MgPSAtTzIKKwllbmRpZgorCWlmZXEgKCQodW5hbWVfUiksNSkKKwkJQ0MgPSBjYworCQlCQVNJQ19DRkxBR1MgKz0gLUt0aHJlYWQKKwllbmRpZgorCU5FRURTX1NPQ0tFVCA9IFllc1BsZWFzZQorCU5FRURTX05TTCA9IFllc1BsZWFzZQorCU5FRURTX1NTTF9XSVRIX0NSWVBUTyA9IFllc1BsZWFzZQorCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCisJU0hFTExfUEFUSCA9IC91c3IvYmluL2Jhc2gKKwlOT19JUFY2ID0gWWVzUGxlYXNlCisJTk9fSFNUUkVSUk9SID0gWWVzUGxlYXNlCisJTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKKwlCQVNJQ19DRkxBR1MgKz0gLUkvdXNyL2xvY2FsL2luY2x1ZGUKKwlCQVNJQ19MREZMQUdTICs9IC1ML3Vzci9sb2NhbC9saWIKKwlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCisJTk9fTUVNTUVNID0gWWVzUGxlYXNlCisJSU5TVEFMTCA9IGdpbnN0YWxsCisJVEFSID0gZ3RhcgorZW5kaWYKK2lmZXEgKCQodW5hbWVfUyksRGFyd2luKQorCU5FRURTX0NSWVBUT19XSVRIX1NTTCA9IFllc1BsZWFzZQorCU5FRURTX1NTTF9XSVRIX0NSWVBUTyA9IFllc1BsZWFzZQorCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCisJaWZlcSAoJChzaGVsbCBleHByICIkKHVuYW1lX1IpIiA6ICdbMTU2NzhdXC4nKSwyKQorCQlPTERfSUNPTlYgPSBVbmZvcnR1bmF0ZWx5WWVzCisJZW5kaWYKKwlpZmVxICgkKHNoZWxsIGV4cHIgIiQodW5hbWVfUikiIDogJ1sxNV1cLicpLDIpCisJCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKKwllbmRpZgorCU5PX01FTU1FTSA9IFllc1BsZWFzZQorCVVTRV9TVF9USU1FU1BFQyA9IFllc1BsZWFzZQorCUhBVkVfREVWX1RUWSA9IFllc1BsZWFzZQorCU5FRURTX0NMSVBQRURfV1JJVEUgPSBZZXNQbGVhc2UKKwlDT01QQVRfT0JKUyArPSBjb21wYXQvcHJlY29tcG9zZV91dGY4Lm8KKwlCQVNJQ19DRkxBR1MgKz0gLURQUkVDT01QT1NFX1VOSUNPREUKK2VuZGlmCitpZmVxICgkKHVuYW1lX1MpLFN1bk9TKQorCU5FRURTX1NPQ0tFVCA9IFllc1BsZWFzZQorCU5FRURTX05TTCA9IFllc1BsZWFzZQorCVNIRUxMX1BBVEggPSAvYmluL2Jhc2gKKwlTQU5FX1RPT0xfUEFUSCA9IC91c3IveHBnNi9iaW46L3Vzci94cGc0L2JpbgorCU5PX1NUUkNBU0VTVFIgPSBZZXNQbGVhc2UKKwlOT19NRU1NRU0gPSBZZXNQbGVhc2UKKwlOT19NS0RURU1QID0gWWVzUGxlYXNlCisJTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKKwlOT19SRUdFWCA9IFllc1BsZWFzZQorCU5PX0ZOTUFUQ0hfQ0FTRUZPTEQgPSBZZXNQbGVhc2UKKwlOT19NU0dGTVRfRVhURU5ERURfT1BUSU9OUyA9IFllc1BsZWFzZQorCUhBVkVfREVWX1RUWSA9IFllc1BsZWFzZQorCWlmZXEgKCQodW5hbWVfUiksNS42KQorCQlTT0NLTEVOX1QgPSBpbnQKKwkJTk9fSFNUUkVSUk9SID0gWWVzUGxlYXNlCisJCU5PX0lQVjYgPSBZZXNQbGVhc2UKKwkJTk9fU09DS0FERFJfU1RPUkFHRSA9IFllc1BsZWFzZQorCQlOT19VTlNFVEVOViA9IFllc1BsZWFzZQorCQlOT19TRVRFTlYgPSBZZXNQbGVhc2UKKwkJTk9fU1RSTENQWSA9IFllc1BsZWFzZQorCQlOT19TVFJUT1VNQVggPSBZZXNQbGVhc2UKKwkJR0lUX1RFU1RfQ01QID0gY21wCisJZW5kaWYKKwlpZmVxICgkKHVuYW1lX1IpLDUuNykKKwkJTkVFRFNfUkVTT0xWID0gWWVzUGxlYXNlCisJCU5PX0lQVjYgPSBZZXNQbGVhc2UKKwkJTk9fU09DS0FERFJfU1RPUkFHRSA9IFllc1BsZWFzZQorCQlOT19VTlNFVEVOViA9IFllc1BsZWFzZQorCQlOT19TRVRFTlYgPSBZZXNQbGVhc2UKKwkJTk9fU1RSTENQWSA9IFllc1BsZWFzZQorCQlOT19TVFJUT1VNQVggPSBZZXNQbGVhc2UKKwkJR0lUX1RFU1RfQ01QID0gY21wCisJZW5kaWYKKwlpZmVxICgkKHVuYW1lX1IpLDUuOCkKKwkJTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKKwkJTk9fU0VURU5WID0gWWVzUGxlYXNlCisJCU5PX1NUUlRPVU1BWCA9IFllc1BsZWFzZQorCQlHSVRfVEVTVF9DTVAgPSBjbXAKKwllbmRpZgorCWlmZXEgKCQodW5hbWVfUiksNS45KQorCQlOT19VTlNFVEVOViA9IFllc1BsZWFzZQorCQlOT19TRVRFTlYgPSBZZXNQbGVhc2UKKwkJTk9fU1RSVE9VTUFYID0gWWVzUGxlYXNlCisJCUdJVF9URVNUX0NNUCA9IGNtcAorCWVuZGlmCisJSU5TVEFMTCA9IC91c3IvdWNiL2luc3RhbGwKKwlUQVIgPSBndGFyCisJQkFTSUNfQ0ZMQUdTICs9IC1EX19FWFRFTlNJT05TX18gLURfX3N1bl9fIC1ESEFWRV9BTExPQ0FfSAorZW5kaWYKK2lmZXEgKCQodW5hbWVfTyksQ3lnd2luKQorCWlmZXEgKCQoc2hlbGwgZXhwciAiJCh1bmFtZV9SKSIgOiAnMVwuWzEtNl1cLicpLDQpCisJCU5PX0RfVFlQRV9JTl9ESVJFTlQgPSBZZXNQbGVhc2UKKwkJTk9fRF9JTk9fSU5fRElSRU5UID0gWWVzUGxlYXNlCisJCU5PX1NUUkNBU0VTVFIgPSBZZXNQbGVhc2UKKwkJTk9fTUVNTUVNID0gWWVzUGxlYXNlCisJCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCisJCU5PX1NZTUxJTktfSEVBRCA9IFllc1BsZWFzZQorCQlOT19JUFY2ID0gWWVzUGxlYXNlCisJCU9MRF9JQ09OViA9IFVuZm9ydHVuYXRlbHlZZXMKKwkJQ1lHV0lOX1YxNV9XSU4zMkFQSSA9IFllc1BsZWFzZQorCWVuZGlmCisJTk9fVEhSRUFEX1NBRkVfUFJFQUQgPSBZZXNQbGVhc2UKKwlORUVEU19MSUJJQ09OViA9IFllc1BsZWFzZQorCU5PX0ZBU1RfV09SS0lOR19ESVJFQ1RPUlkgPSBVbmZvcnR1bmF0ZWx5WWVzCisJTk9fVFJVU1RBQkxFX0ZJTEVNT0RFID0gVW5mb3J0dW5hdGVseVllcworCU5PX1NUX0JMT0NLU19JTl9TVFJVQ1RfU1RBVCA9IFllc1BsZWFzZQorCSMgVGhlcmUgYXJlIGNvbmZsaWN0aW5nIHJlcG9ydHMgYWJvdXQgdGhpcy4KKwkjIE9uIHNvbWUgYm94ZXMgTk9fTU1BUCBpcyBuZWVkZWQsIGFuZCBub3Qgc28gZWxzZXdoZXJlLgorCSMgVHJ5IGNvbW1lbnRpbmcgdGhpcyBvdXQgaWYgeW91IHN1c3BlY3QgTU1BUCBpcyBtb3JlIGVmZmljaWVudAorCU5PX01NQVAgPSBZZXNQbGVhc2UKKwlYID0gLmV4ZQorCUNPTVBBVF9PQkpTICs9IGNvbXBhdC9jeWd3aW4ubworCVVOUkVMSUFCTEVfRlNUQVQgPSBVbmZvcnR1bmF0ZWx5WWVzCisJU1BBUlNFX0ZMQUdTID0gLWlzeXN0ZW0gL3Vzci9pbmNsdWRlL3czMmFwaSAtV25vLW9uZS1iaXQtc2lnbmVkLWJpdGZpZWxkCitlbmRpZgoraWZlcSAoJCh1bmFtZV9TKSxGcmVlQlNEKQorCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCisJT0xEX0lDT05WID0gWWVzUGxlYXNlCisJTk9fTUVNTUVNID0gWWVzUGxlYXNlCisJQkFTSUNfQ0ZMQUdTICs9IC1JL3Vzci9sb2NhbC9pbmNsdWRlCisJQkFTSUNfTERGTEFHUyArPSAtTC91c3IvbG9jYWwvbGliCisJRElSX0hBU19CU0RfR1JPVVBfU0VNQU5USUNTID0gWWVzUGxlYXNlCisJVVNFX1NUX1RJTUVTUEVDID0gWWVzUGxlYXNlCisJaWZlcSAoJChzaGVsbCBleHByICIkKHVuYW1lX1IpIiA6ICc0XC4nKSwyKQorCQlQVEhSRUFEX0xJQlMgPSAtcHRocmVhZAorCQlOT19VSU5UTUFYX1QgPSBZZXNQbGVhc2UKKwkJTk9fU1RSVE9VTUFYID0gWWVzUGxlYXNlCisJZW5kaWYKKwlQWVRIT05fUEFUSCA9IC91c3IvbG9jYWwvYmluL3B5dGhvbgorCUhBVkVfUEFUSFNfSCA9IFllc1BsZWFzZQorZW5kaWYKK2lmZXEgKCQodW5hbWVfUyksT3BlbkJTRCkKKwlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCisJTk9fTUVNTUVNID0gWWVzUGxlYXNlCisJVVNFX1NUX1RJTUVTUEVDID0gWWVzUGxlYXNlCisJTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKKwlCQVNJQ19DRkxBR1MgKz0gLUkvdXNyL2xvY2FsL2luY2x1ZGUKKwlCQVNJQ19MREZMQUdTICs9IC1ML3Vzci9sb2NhbC9saWIKKwlIQVZFX1BBVEhTX0ggPSBZZXNQbGVhc2UKK2VuZGlmCitpZmVxICgkKHVuYW1lX1MpLE5ldEJTRCkKKwlpZmVxICgkKHNoZWxsIGV4cHIgIiQodW5hbWVfUikiIDogJ1swMV1cLicpLDIpCisJCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCisJZW5kaWYKKwlCQVNJQ19DRkxBR1MgKz0gLUkvdXNyL3BrZy9pbmNsdWRlCisJQkFTSUNfTERGTEFHUyArPSAtTC91c3IvcGtnL2xpYiAkKENDX0xEX0RZTlBBVEgpL3Vzci9wa2cvbGliCisJVVNFX1NUX1RJTUVTUEVDID0gWWVzUGxlYXNlCisJTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKKwlIQVZFX1BBVEhTX0ggPSBZZXNQbGVhc2UKK2VuZGlmCitpZmVxICgkKHVuYW1lX1MpLEFJWCkKKwlERUZBVUxUX1BBR0VSID0gbW9yZQorCU5PX1NUUkNBU0VTVFIgPSBZZXNQbGVhc2UKKwlOT19NRU1NRU0gPSBZZXNQbGVhc2UKKwlOT19NS0RURU1QID0gWWVzUGxlYXNlCisJTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKKwlOT19TVFJMQ1BZID0gWWVzUGxlYXNlCisJTk9fTlNFQyA9IFllc1BsZWFzZQorCUZSRUFEX1JFQURTX0RJUkVDVE9SSUVTID0gVW5mb3J0dW5hdGVseVllcworCUlOVEVSTkFMX1FTT1JUID0gVW5mb3J0dW5hdGVseVllcworCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCisJQkFTSUNfQ0ZMQUdTICs9IC1EX0xBUkdFX0ZJTEVTCisJaWZlcSAoJChzaGVsbCBleHByICIkKHVuYW1lX1YpIiA6ICdbMTIzNF0nKSwxKQorCQlOT19QVEhSRUFEUyA9IFllc1BsZWFzZQorCWVsc2UKKwkJUFRIUkVBRF9MSUJTID0gLWxwdGhyZWFkCisJZW5kaWYKKwlpZmVxICgkKHNoZWxsIGV4cHIgIiQodW5hbWVfVikuJCh1bmFtZV9SKSIgOiAnNVwuMScpLDMpCisJCUlOTElORSA9ICcnCisJZW5kaWYKKwlHSVRfVEVTVF9DTVAgPSBjbXAKK2VuZGlmCitpZmVxICgkKHVuYW1lX1MpLEdOVSkKKwkjIEdOVS9IdXJkCisJTk9fU1RSTENQWSA9IFllc1BsZWFzZQorCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCisJSEFWRV9QQVRIU19IID0gWWVzUGxlYXNlCisJTElCQ19DT05UQUlOU19MSUJJTlRMID0gWWVzUGxlYXNlCitlbmRpZgoraWZlcSAoJCh1bmFtZV9TKSxJUklYKQorCU5PX1NFVEVOViA9IFllc1BsZWFzZQorCU5PX1VOU0VURU5WID0gWWVzUGxlYXNlCisJTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQorCU5PX01FTU1FTSA9IFllc1BsZWFzZQorCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCisJTk9fTUtEVEVNUCA9IFllc1BsZWFzZQorCSMgV2hlbiBjb21waWxlZCB3aXRoIHRoZSBNSVBTcHJvIDcuNC40bSBjb21waWxlciwgYW5kIHdpdGhvdXQgcHRocmVhZHMKKwkjIChpLmUuIE5PX1BUSFJFQURTIGlzIHNldCksIGFuZCBfd2l0aF8gTU1BUCAoaS5lLiBOT19NTUFQIGlzIG5vdCBzZXQpLAorCSMgZ2l0IGRpZXMgd2l0aCBhIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIHRyeWluZyB0byBhY2Nlc3MgdGhlIGZpcnN0CisJIyBlbnRyeSBvZiBhIHJlZmxvZy4gIFRoZSBjb25zZXJ2YXRpdmUgY2hvaWNlIGlzIG1hZGUgdG8gYWx3YXlzIHNldAorCSMgTk9fTU1BUC4gIElmIHlvdSBzdXNwZWN0IHRoYXQgeW91ciBjb21waWxlciBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcworCSMgaXNzdWUsIGNvbW1lbnQgb3V0IHRoZSBOT19NTUFQIHN0YXRlbWVudC4KKwlOT19NTUFQID0gWWVzUGxlYXNlCisJTk9fUkVHRVggPSBZZXNQbGVhc2UKKwlOT19GTk1BVENIX0NBU0VGT0xEID0gWWVzUGxlYXNlCisJU05QUklOVEZfUkVUVVJOU19CT0dVUyA9IFllc1BsZWFzZQorCVNIRUxMX1BBVEggPSAvdXNyL2dudS9iaW4vYmFzaAorCU5FRURTX0xJQkdFTiA9IFllc1BsZWFzZQorZW5kaWYKK2lmZXEgKCQodW5hbWVfUyksSVJJWDY0KQorCU5PX1NFVEVOViA9IFllc1BsZWFzZQorCU5PX1VOU0VURU5WID0gWWVzUGxlYXNlCisJTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQorCU5PX01FTU1FTSA9IFllc1BsZWFzZQorCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCisJTk9fTUtEVEVNUCA9IFllc1BsZWFzZQorCSMgV2hlbiBjb21waWxlZCB3aXRoIHRoZSBNSVBTcHJvIDcuNC40bSBjb21waWxlciwgYW5kIHdpdGhvdXQgcHRocmVhZHMKKwkjIChpLmUuIE5PX1BUSFJFQURTIGlzIHNldCksIGFuZCBfd2l0aF8gTU1BUCAoaS5lLiBOT19NTUFQIGlzIG5vdCBzZXQpLAorCSMgZ2l0IGRpZXMgd2l0aCBhIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIHRyeWluZyB0byBhY2Nlc3MgdGhlIGZpcnN0CisJIyBlbnRyeSBvZiBhIHJlZmxvZy4gIFRoZSBjb25zZXJ2YXRpdmUgY2hvaWNlIGlzIG1hZGUgdG8gYWx3YXlzIHNldAorCSMgTk9fTU1BUC4gIElmIHlvdSBzdXNwZWN0IHRoYXQgeW91ciBjb21waWxlciBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcworCSMgaXNzdWUsIGNvbW1lbnQgb3V0IHRoZSBOT19NTUFQIHN0YXRlbWVudC4KKwlOT19NTUFQID0gWWVzUGxlYXNlCisJTk9fUkVHRVggPSBZZXNQbGVhc2UKKwlOT19GTk1BVENIX0NBU0VGT0xEID0gWWVzUGxlYXNlCisJU05QUklOVEZfUkVUVVJOU19CT0dVUyA9IFllc1BsZWFzZQorCVNIRUxMX1BBVEggPSAvdXNyL2dudS9iaW4vYmFzaAorCU5FRURTX0xJQkdFTiA9IFllc1BsZWFzZQorZW5kaWYKK2lmZXEgKCQodW5hbWVfUyksSFAtVVgpCisJSU5MSU5FID0gX19pbmxpbmUKKwlOT19JUFY2ID0gWWVzUGxlYXNlCisJTk9fU0VURU5WID0gWWVzUGxlYXNlCisJTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQorCU5PX01FTU1FTSA9IFllc1BsZWFzZQorCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCisJTk9fU1RSTENQWSA9IFllc1BsZWFzZQorCU5PX01LRFRFTVAgPSBZZXNQbGVhc2UKKwlOT19VTlNFVEVOViA9IFllc1BsZWFzZQorCU5PX0hTVFJFUlJPUiA9IFllc1BsZWFzZQorCU5PX1NZU19TRUxFQ1RfSCA9IFllc1BsZWFzZQorCU5PX0ZOTUFUQ0hfQ0FTRUZPTEQgPSBZZXNQbGVhc2UKKwlTTlBSSU5URl9SRVRVUk5TX0JPR1VTID0gWWVzUGxlYXNlCisJTk9fTlNFQyA9IFllc1BsZWFzZQorCWlmZXEgKCQodW5hbWVfUiksQi4xMS4wMCkKKwkJTk9fSU5FVF9OVE9QID0gWWVzUGxlYXNlCisJCU5PX0lORVRfUFRPTiA9IFllc1BsZWFzZQorCWVuZGlmCisJaWZlcSAoJCh1bmFtZV9SKSxCLjEwLjIwKQorCQkjIE92ZXJyaWRlIEhQLVVYIDExLnggc2V0dGluZzoKKwkJSU5MSU5FID0KKwkJU09DS0xFTl9UID0gc2l6ZV90CisJCU5PX1BSRUFEID0gWWVzUGxlYXNlCisJCU5PX0lORVRfTlRPUCA9IFllc1BsZWFzZQorCQlOT19JTkVUX1BUT04gPSBZZXNQbGVhc2UKKwllbmRpZgorCUdJVF9URVNUX0NNUCA9IGNtcAorZW5kaWYKK2lmZXEgKCQodW5hbWVfUyksV2luZG93cykKKwlHSVRfVkVSU0lPTiA6PSAkKEdJVF9WRVJTSU9OKS5NU1ZDCisJcGF0aHNlcCA9IDsKKwlOT19QUkVBRCA9IFllc1BsZWFzZQorCU5FRURTX0NSWVBUT19XSVRIX1NTTCA9IFllc1BsZWFzZQorCU5PX0xJQkdFTl9IID0gWWVzUGxlYXNlCisJTk9fUE9MTCA9IFllc1BsZWFzZQorCU5PX1NZTUxJTktfSEVBRCA9IFllc1BsZWFzZQorCU5PX0lQVjYgPSBZZXNQbGVhc2UKKwlOT19VTklYX1NPQ0tFVFMgPSBZZXNQbGVhc2UKKwlOT19TRVRFTlYgPSBZZXNQbGVhc2UKKwlOT19VTlNFVEVOViA9IFllc1BsZWFzZQorCU5PX1NUUkNBU0VTVFIgPSBZZXNQbGVhc2UKKwlOT19TVFJMQ1BZID0gWWVzUGxlYXNlCisJTk9fRk5NQVRDSCA9IFllc1BsZWFzZQorCU5PX01FTU1FTSA9IFllc1BsZWFzZQorCSMgTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKKwlOT19JQ09OViA9IFllc1BsZWFzZQorCU5PX1NUUlRPVU1BWCA9IFllc1BsZWFzZQorCU5PX01LRFRFTVAgPSBZZXNQbGVhc2UKKwlOT19NS1NURU1QUyA9IFllc1BsZWFzZQorCVNOUFJJTlRGX1JFVFVSTlNfQk9HVVMgPSBZZXNQbGVhc2UKKwlOT19TVk5fVEVTVFMgPSBZZXNQbGVhc2UKKwlOT19QRVJMX01BS0VNQUtFUiA9IFllc1BsZWFzZQorCVJVTlRJTUVfUFJFRklYID0gWWVzUGxlYXNlCisJTk9fU1RfQkxPQ0tTX0lOX1NUUlVDVF9TVEFUID0gWWVzUGxlYXNlCisJTk9fTlNFQyA9IFllc1BsZWFzZQorCVVTRV9XSU4zMl9NTUFQID0gWWVzUGxlYXNlCisJIyBVU0VfTkVEX0FMTE9DQVRPUiA9IFllc1BsZWFzZQorCVVOUkVMSUFCTEVfRlNUQVQgPSBVbmZvcnR1bmF0ZWx5WWVzCisJT0JKRUNUX0NSRUFUSU9OX1VTRVNfUkVOQU1FUyA9IFVuZm9ydHVuYXRlbHlOZWVkc1RvCisJTk9fUkVHRVggPSBZZXNQbGVhc2UKKwlOT19DVVJMID0gWWVzUGxlYXNlCisJTk9fUFlUSE9OID0gWWVzUGxlYXNlCisJQkxLX1NIQTEgPSBZZXNQbGVhc2UKKwlFVEFHU19UQVJHRVQgPSBFVEFHUworCU5PX0lORVRfUFRPTiA9IFllc1BsZWFzZQorCU5PX0lORVRfTlRPUCA9IFllc1BsZWFzZQorCU5PX1BPU0lYX0dPT0RJRVMgPSBVbmZvcnR1bmF0ZWx5WWVzCisJTkFUSVZFX0NSTEYgPSBZZXNQbGVhc2UKKwlERUZBVUxUX0hFTFBfRk9STUFUID0gaHRtbAorCisJQ0MgPSBjb21wYXQvdmNidWlsZC9zY3JpcHRzL2NsaW5rLnBsCisJQVIgPSBjb21wYXQvdmNidWlsZC9zY3JpcHRzL2xpYi5wbAorCUNGTEFHUyA9CisJQkFTSUNfQ0ZMQUdTID0gLW5vbG9nbyAtSS4gLUkuLi96bGliIC1JY29tcGF0L3ZjYnVpbGQgLUljb21wYXQvdmNidWlsZC9pbmNsdWRlIC1EV0lOMzIgLURfQ09OU09MRSAtREhBVkVfU1RSSU5HX0ggLURfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAtRF9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUKKwlDT01QQVRfT0JKUyA9IGNvbXBhdC9tc3ZjLm8gY29tcGF0L3dpbmFuc2kubyBcCisJCWNvbXBhdC93aW4zMi9wdGhyZWFkLm8gY29tcGF0L3dpbjMyL3N5c2xvZy5vIFwKKwkJY29tcGF0L3dpbjMyL2RpcmVudC5vCisJQ09NUEFUX0NGTEFHUyA9IC1EX19VU0VfTUlOR1dfQUNDRVNTIC1ETk9HREkgLURIQVZFX1NUUklOR19IIC1ESEFWRV9BTExPQ0FfSCAtSWNvbXBhdCAtSWNvbXBhdC9yZWdleCAtSWNvbXBhdC93aW4zMiAtRFNUUklQX0VYVEVOU0lPTj1cIi5leGVcIgorCUJBU0lDX0xERkxBR1MgPSAtSUdOT1JFOjQyMTcgLUlHTk9SRTo0MDQ5IC1OT0xPR08gLVNVQlNZU1RFTTpDT05TT0xFIC1OT0RFRkFVTFRMSUI6TVNWQ1JULmxpYgorCUVYVExJQlMgPSB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiB3aW5pbmV0LmxpYiB3czJfMzIubGliCisJUFRIUkVBRF9MSUJTID0KKwlsaWIgPQoraWZuZGVmIERFQlVHCisJQkFTSUNfQ0ZMQUdTICs9IC1HTCAtT3MgLU1UCisJQkFTSUNfTERGTEFHUyArPSAtTFRDRworCUFSICs9IC1MVENHCitlbHNlCisJQkFTSUNfQ0ZMQUdTICs9IC1aaSAtTVRkCitlbmRpZgorCVggPSAuZXhlCitlbmRpZgoraWZlcSAoJCh1bmFtZV9TKSxJbnRlcml4KQorCU5PX0lOSVRHUk9VUFMgPSBZZXNQbGVhc2UKKwlOT19JUFY2ID0gWWVzUGxlYXNlCisJTk9fTUVNTUVNID0gWWVzUGxlYXNlCisJTk9fTUtEVEVNUCA9IFllc1BsZWFzZQorCU5PX1NUUlRPVU1BWCA9IFllc1BsZWFzZQorCU5PX05TRUMgPSBZZXNQbGVhc2UKKwlOT19NS1NURU1QUyA9IFllc1BsZWFzZQorCWlmZXEgKCQodW5hbWVfUiksMy41KQorCQlOT19JTkVUX05UT1AgPSBZZXNQbGVhc2UKKwkJTk9fSU5FVF9QVE9OID0gWWVzUGxlYXNlCisJCU5PX1NPQ0tBRERSX1NUT1JBR0UgPSBZZXNQbGVhc2UKKwkJTk9fRk5NQVRDSF9DQVNFRk9MRCA9IFllc1BsZWFzZQorCWVuZGlmCisJaWZlcSAoJCh1bmFtZV9SKSw1LjIpCisJCU5PX0lORVRfTlRPUCA9IFllc1BsZWFzZQorCQlOT19JTkVUX1BUT04gPSBZZXNQbGVhc2UKKwkJTk9fU09DS0FERFJfU1RPUkFHRSA9IFllc1BsZWFzZQorCQlOT19GTk1BVENIX0NBU0VGT0xEID0gWWVzUGxlYXNlCisJZW5kaWYKK2VuZGlmCitpZmVxICgkKHVuYW1lX1MpLE1pbml4KQorCU5PX0lQVjYgPSBZZXNQbGVhc2UKKwlOT19TVF9CTE9DS1NfSU5fU1RSVUNUX1NUQVQgPSBZZXNQbGVhc2UKKwlOT19OU0VDID0gWWVzUGxlYXNlCisJTkVFRFNfTElCR0VOID0KKwlORUVEU19DUllQVE9fV0lUSF9TU0wgPSBZZXNQbGVhc2UKKwlORUVEU19JRE5fV0lUSF9DVVJMID0gWWVzUGxlYXNlCisJTkVFRFNfU1NMX1dJVEhfQ1VSTCA9IFllc1BsZWFzZQorCU5FRURTX1JFU09MViA9CisJTk9fSFNUUkVSUk9SID0gWWVzUGxlYXNlCisJTk9fTU1BUCA9IFllc1BsZWFzZQorCU5PX0NVUkwgPQorCU5PX0VYUEFUID0KK2VuZGlmCitpZmVxICgkKHVuYW1lX1MpLE5PTlNUT1BfS0VSTkVMKQorCSMgTmVlZHMgc29tZSBDOTkgZmVhdHVyZXMsICJpbmxpbmUiIGlzIGp1c3Qgb25lIG9mIHRoZW0uCisJIyBJTkxJTkU9Jycgd291bGQganVzdCByZXBsYWNlIG9uZSBzZXQgb2Ygd2FybmluZ3Mgd2l0aCBhbm90aGVyIGFuZAorCSMgc3RpbGwgbm90IGNvbXBpbGUgaW4gYzg5IG1vZGUsIGR1ZSB0byBub24tY29uc3QgYXJyYXkgaW5pdGlhbGl6YXRpb25zLgorCUNDID0gY2MgLWM5OQorCSMgRGlzYWJsZSBhbGwgb3B0aW1pemF0aW9uLCBzZWVtcyB0byByZXN1bHQgaW4gYmFkIGNvZGUsIHdpdGggLU8gb3IgLU8yCisJIyBvciBldmVuIC1PMSAoZGVmYXVsdCksIC91c3IvbG9jYWwvbGliZXhlYy9naXQtY29yZS9naXQtcGFjay1vYmplY3RzCisJIyBhYmVuZHMgb24gImdpdCBwdXNoIi4gTmVlZHMgbW9yZSBpbnZlc3RpZ2F0aW9uLgorCUNGTEFHUyA9IC1nIC1PMAorCSMgV2UnZCB3YW50IGl0IHRvIGJlIGhlcmUuCisJcHJlZml4ID0gL3Vzci9sb2NhbAorCSMgT3VyJ3MgYXJlIGluICR7cHJlZml4fS9iaW4gKHBlcmwgbWlnaHQgYWxzbyBiZSBpbiAvdXNyL2Jpbi9wZXJsKS4KKwlQRVJMX1BBVEggPSAke3ByZWZpeH0vYmluL3BlcmwKKwlQWVRIT05fUEFUSCA9ICR7cHJlZml4fS9iaW4vcHl0aG9uCisKKwkjIEFzIGRldGVjdGVkIGJ5ICcuL2NvbmZpZ3VyZScuCisJIyBNaXNzZGV0ZWN0ZWQsIGhlbmNlIGNvbW1lbnRlZCBvdXQsIHNlZSBiZWxvdy4KKwkjTk9fQ1VSTCA9IFllc1BsZWFzZQorCSMgQWRkZWQgbWFudWFsbHksIHNlZSBhYm92ZS4KKwlORUVEU19TU0xfV0lUSF9DVVJMID0gWWVzUGxlYXNlCisJSEFWRV9MSUJDSEFSU0VUX0ggPSBZZXNQbGVhc2UKKwlIQVZFX1NUUklOR1NfSCA9IFllc1BsZWFzZQorCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCisJTkVFRFNfTElCSU5UTF9CRUZPUkVfTElCSUNPTlYgPSBZZXNQbGVhc2UKKwlOT19TWVNfU0VMRUNUX0ggPSBVbmZvcnR1bmF0ZWx5WWVzCisJTk9fRF9UWVBFX0lOX0RJUkVOVCA9IFllc1BsZWFzZQorCU5PX0hTVFJFUlJPUiA9IFllc1BsZWFzZQorCU5PX1NUUkNBU0VTVFIgPSBZZXNQbGVhc2UKKwlOT19GTk1BVENIX0NBU0VGT0xEID0gWWVzUGxlYXNlCisJTk9fTUVNTUVNID0gWWVzUGxlYXNlCisJTk9fU1RSTENQWSA9IFllc1BsZWFzZQorCU5PX1NFVEVOViA9IFllc1BsZWFzZQorCU5PX1VOU0VURU5WID0gWWVzUGxlYXNlCisJTk9fTUtEVEVNUCA9IFllc1BsZWFzZQorCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCisJIyBDdXJyZW50bHkgbGliaWNvbnYtMS45LjEuCisJT0xEX0lDT05WID0gVW5mb3J0dW5hdGVseVllcworCU5PX1JFR0VYID0gWWVzUGxlYXNlCisJTk9fUFRIUkVBRFMgPSBVbmZvcnR1bmF0ZWx5WWVzCisKKwkjIE5vdCBkZXRlY3RlZCAobm9yIGNoZWNrZWQgZm9yKSBieSAnLi9jb25maWd1cmUnLgorCSMgV2UgZG9uJ3QgaGF2ZSBTQV9SRVNUQVJUIG9uIE5vblN0b3AsIHVuZm9ydHVuYWxldHkuCisJQ09NUEFUX0NGTEFHUyArPSAtRFNBX1JFU1RBUlQ9MAorCSMgQXBwYXJlbnRseSBuZWVkZWQgaW4gY29tcGF0L2ZubWF0Y2gvZm5tYXRjaC5jLgorCUNPTVBBVF9DRkxBR1MgKz0gLURIQVZFX1NUUklOR19IPTEKKwlOT19TVF9CTE9DS1NfSU5fU1RSVUNUX1NUQVQgPSBZZXNQbGVhc2UKKwlOT19OU0VDID0gWWVzUGxlYXNlCisJTk9fUFJFQUQgPSBZZXNQbGVhc2UKKwlOT19NTUFQID0gWWVzUGxlYXNlCisJTk9fUE9MTCA9IFllc1BsZWFzZQorCU5PX0lOVFBUUl9UID0gVW5mb3J0dW5hdGVseVllcworCSMgQnVnIHJlcG9ydCAxMC0xMjA4MjItNDQ3NyBzdWJtaXR0ZWQgdG8gSFAgTm9uU3RvcCBkZXZlbG9wbWVudC4KKwlNS0RJUl9XT19UUkFJTElOR19TTEFTSCA9IFllc1BsZWFzZQorCSMgUkZFIDEwLTEyMDkxMi00NjkzIHN1Ym1pdHRlZCB0byBIUCBOb25TdG9wIGRldmVsb3BtZW50LgorCU5PX1NFVElUSU1FUiA9IFVuZm9ydHVuYXRlbHlZZXMKKwlTQU5FX1RPT0xfUEFUSCA9IC91c3IvY29yZXV0aWxzL2JpbjovdXNyL2xvY2FsL2JpbgorCVNIRUxMX1BBVEggPSAvdXNyL2xvY2FsL2Jpbi9iYXNoCisJIyBhcyBvZiBIMDYuMjUvSjA2LjE0LCB3ZSBtaWdodCBiZXR0ZXIgdXNlIHRoaXMKKwkjU0hFTExfUEFUSCA9IC91c3IvY29yZXV0aWxzL2Jpbi9iYXNoCitlbmRpZgoraWZuZXEgKCwkKGZpbmRzdHJpbmcgTUlOR1csJCh1bmFtZV9TKSkpCisJcGF0aHNlcCA9IDsKKwlOT19QUkVBRCA9IFllc1BsZWFzZQorCU5FRURTX0NSWVBUT19XSVRIX1NTTCA9IFllc1BsZWFzZQorCU5PX0xJQkdFTl9IID0gWWVzUGxlYXNlCisJTk9fUE9MTCA9IFllc1BsZWFzZQorCU5PX1NZTUxJTktfSEVBRCA9IFllc1BsZWFzZQorCU5PX1VOSVhfU09DS0VUUyA9IFllc1BsZWFzZQorCU5PX1NFVEVOViA9IFllc1BsZWFzZQorCU5PX1VOU0VURU5WID0gWWVzUGxlYXNlCisJTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQorCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKKwlOT19GTk1BVENIID0gWWVzUGxlYXNlCisJTk9fTUVNTUVNID0gWWVzUGxlYXNlCisJTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKKwlPTERfSUNPTlYgPSBZZXNQbGVhc2UKKwlOT19TVFJUT1VNQVggPSBZZXNQbGVhc2UKKwlOT19NS0RURU1QID0gWWVzUGxlYXNlCisJTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKKwlOT19TVk5fVEVTVFMgPSBZZXNQbGVhc2UKKwlOT19QRVJMX01BS0VNQUtFUiA9IFllc1BsZWFzZQorCVJVTlRJTUVfUFJFRklYID0gWWVzUGxlYXNlCisJTk9fU1RfQkxPQ0tTX0lOX1NUUlVDVF9TVEFUID0gWWVzUGxlYXNlCisJTk9fTlNFQyA9IFllc1BsZWFzZQorCVVTRV9XSU4zMl9NTUFQID0gWWVzUGxlYXNlCisJVVNFX05FRF9BTExPQ0FUT1IgPSBZZXNQbGVhc2UKKwlVTlJFTElBQkxFX0ZTVEFUID0gVW5mb3J0dW5hdGVseVllcworCU9CSkVDVF9DUkVBVElPTl9VU0VTX1JFTkFNRVMgPSBVbmZvcnR1bmF0ZWx5TmVlZHNUbworCU5PX1JFR0VYID0gWWVzUGxlYXNlCisJTk9fUFlUSE9OID0gWWVzUGxlYXNlCisJQkxLX1NIQTEgPSBZZXNQbGVhc2UKKwlFVEFHU19UQVJHRVQgPSBFVEFHUworCU5PX0lORVRfUFRPTiA9IFllc1BsZWFzZQorCU5PX0lORVRfTlRPUCA9IFllc1BsZWFzZQorCU5PX1BPU0lYX0dPT0RJRVMgPSBVbmZvcnR1bmF0ZWx5WWVzCisJQ09NUEFUX0NGTEFHUyArPSAtRF9fVVNFX01JTkdXX0FDQ0VTUyAtRE5PR0RJIC1JY29tcGF0IC1JY29tcGF0L3dpbjMyCisJQ09NUEFUX0NGTEFHUyArPSAtRFNUUklQX0VYVEVOU0lPTj1cIi5leGVcIgorCUNPTVBBVF9PQkpTICs9IGNvbXBhdC9taW5ndy5vIGNvbXBhdC93aW5hbnNpLm8gXAorCQljb21wYXQvd2luMzIvcHRocmVhZC5vIGNvbXBhdC93aW4zMi9zeXNsb2cubyBcCisJCWNvbXBhdC93aW4zMi9kaXJlbnQubworCUVYVExJQlMgKz0gLWx3czJfMzIKKwlQVEhSRUFEX0xJQlMgPQorCU5BVElWRV9DUkxGID0gWWVzUGxlYXNlCisJWCA9IC5leGUKKwlTUEFSU0VfRkxBR1MgPSAtV25vLW9uZS1iaXQtc2lnbmVkLWJpdGZpZWxkCitpZm5lcSAoLCQod2lsZGNhcmQgLi4vVEhJU19JU19NU1lTR0lUKSkKKwlodG1sZGlyID0gZG9jL2dpdC9odG1sLworCXByZWZpeCA9CisJSU5TVEFMTCA9IC9iaW4vaW5zdGFsbAorCUVYVExJQlMgKz0gL21pbmd3L2xpYi9saWJ6LmEKKwlOT19SX1RPX0dDQ19MSU5LRVIgPSBZZXNQbGVhc2UKKwlJTlRFUk5BTF9RU09SVCA9IFllc1BsZWFzZQorCUhBVkVfTElCQ0hBUlNFVF9IID0gWWVzUGxlYXNlCitlbHNlCisJTk9fQ1VSTCA9IFllc1BsZWFzZQorZW5kaWYKK2VuZGlmCitpZmVxICgkKHVuYW1lX1MpLFFOWCkKKwlDT01QQVRfQ0ZMQUdTICs9IC1EU0FfUkVTVEFSVD0wCisJRVhQQVRfTkVFRFNfWE1MUEFSU0VfSCA9IFllc1BsZWFzZQorCUhBVkVfU1RSSU5HU19IID0gWWVzUGxlYXNlCisJTkVFRFNfU09DS0VUID0gWWVzUGxlYXNlCisJTk9fRk5NQVRDSF9DQVNFRk9MRCA9IFllc1BsZWFzZQorCU5PX0dFVFBBR0VTSVpFID0gWWVzUGxlYXNlCisJTk9fSUNPTlYgPSBZZXNQbGVhc2UKKwlOT19NRU1NRU0gPSBZZXNQbGVhc2UKKwlOT19NS0RURU1QID0gWWVzUGxlYXNlCisJTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKKwlOT19OU0VDID0gWWVzUGxlYXNlCisJTk9fUFRIUkVBRFMgPSBZZXNQbGVhc2UKKwlOT19SX1RPX0dDQ19MSU5LRVIgPSBZZXNQbGVhc2UKKwlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCisJTk9fU1RSTENQWSA9IFllc1BsZWFzZQorZW5kaWYKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBlMTI1NTUwLi4yZjQzMzkzIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zLDExICszLDI1IEBACiAKICMjIERlZmluaXRpb25zIG9mIHByaXZhdGUgbWFjcm9zLgogCi0jIEdJVF9DT05GX0FQUEVORF9MSU5FKExJTkUpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEFwcGVuZCBMSU5FIHRvIGZpbGUgJHtjb25maWdfYXBwZW5kfQotQUNfREVGVU4oW0dJVF9DT05GX0FQUEVORF9MSU5FXSwKLSAgICAgICAgIFtlY2hvICIkMSIgPj4gIiR7Y29uZmlnX2FwcGVuZH0iXSkKKyMgR0lUX0NPTkZfU1VCU1QoVkFMLCBWQVIpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDYXVzZSB0aGUgbGluZSAiVkFSPVZBTCIgdG8gYmUgZXZlbnR1YWxseSBhcHBlbmRlZCB0byAke2NvbmZpZ19maWxlfS4KK0FDX0RFRlVOKFtHSVRfQ09ORl9TVUJTVF0sCitbQUNfUkVRVUlSRShbR0lUX0NPTkZfU1VCU1RfSU5JVF0pCitjb25maWdfYXBwZW5kZWRfZGVmcz0iJGNvbmZpZ19hcHBlbmRlZF9kZWZzJHtuZXdsaW5lfWRubAorJDE9bTRfaWYoWyQjXSxbMV0sWyR7JDF9XSxbJDJdKSJdKQorCisjIEdJVF9DT05GX1NVQlNUX0lOSVQKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcmVwYXJlIHNoZWxsIHZhcmlhYmxlcyBhbmQgYXV0b2NvbmYgbWFjaGluZSByZXF1aXJlZCBieSBsYXRlciBjYWxscworIyB0byBHSVRfQ09ORl9TVUJTVC4KK0FDX0RFRlVOKFtHSVRfQ09ORl9TVUJTVF9JTklUXSwKKyAgICBbY29uZmlnX2FwcGVuZGVkX2RlZnM9OyBuZXdsaW5lPScKKycKKyAgICBBQ19DT05GSUdfQ09NTUFORFMoWyRjb25maWdfZmlsZV0sCisgICAgICAgICAgICAgICAgICAgICAgIFtlY2hvICIkY29uZmlnX2FwcGVuZGVkX2RlZnMiID4+ICIkY29uZmlnX2ZpbGUiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ19maWxlPSRjb25maWdfZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX2FwcGVuZGVkX2RlZnM9IiRjb25maWdfYXBwZW5kZWRfZGVmcyJdKV0pCiAKICMgR0lUX0FSR19TRVRfUEFUSChQUk9HUkFNKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yOSwxMyArNDMsMTIgQEAKICMgLS13aXRob3V0LVBST0dSQU0gaXMgdXNlZC4KIEFDX0RFRlVOKFtHSVRfQ09ORl9BUFBFTkRfUEFUSF0sCiAgICAgW200X3B1c2hkZWYoW0dJVF9VQ19QUk9HUkFNXSwgbTRfdG91cHBlcihbJDFdKSlkbmwKLSAgICBQUk9HUkFNPUdJVF9VQ19QUk9HUkFNCiAgICAgaWYgdGVzdCAiJHdpdGh2YWwiID0gIm5vIjsgdGhlbgogCWlmIHRlc3QgLW4gIiQyIjsgdGhlbgogCQlHSVRfVUNfUFJPR1JBTVtdX1BBVEg9JHdpdGh2YWwKLQkJQUNfTVNHX05PVElDRShbRGlzYWJsaW5nIHVzZSBvZiAke1BST0dSQU19XSkKLQkJR0lUX0NPTkZfQVBQRU5EX0xJTkUoTk9fJHtQUk9HUkFNfT1ZZXNQbGVhc2UpCi0JCUdJVF9DT05GX0FQUEVORF9MSU5FKCR7UFJPR1JBTX1fUEFUSD0pCisJCUFDX01TR19OT1RJQ0UoW0Rpc2FibGluZyB1c2Ugb2YgR0lUX1VDX1BST0dSQU1dKQorCQlHSVRfQ09ORl9TVUJTVChbTk9fXUdJVF9VQ19QUk9HUkFNLCBbWWVzUGxlYXNlXSkKKwkJR0lUX0NPTkZfU1VCU1QoR0lUX1VDX1BST0dSQU1bXV9QQVRILCBbXSkKIAllbHNlCiAJCUFDX01TR19FUlJPUihbWW91IGNhbm5vdCB1c2UgZ2l0IHdpdGhvdXQgJDFdKQogCWZpCkBAIC00NSw3ICs1OCw3IEBACiAJZWxzZQogCQlHSVRfVUNfUFJPR1JBTVtdX1BBVEg9JHdpdGh2YWwKIAkJQUNfTVNHX05PVElDRShbU2V0dGluZyBHSVRfVUNfUFJPR1JBTVtdX1BBVEggdG8gJHdpdGh2YWxdKQotCQlHSVRfQ09ORl9BUFBFTkRfTElORSgke1BST0dSQU19X1BBVEg9JHdpdGh2YWwpCisJCUdJVF9DT05GX1NVQlNUKEdJVF9VQ19QUk9HUkFNW11fUEFUSCwgWyR3aXRodmFsXSkKIAlmaQogICAgIGZpCiAgICAgbTRfcG9wZGVmKFtHSVRfVUNfUFJPR1JBTV0pXSkKQEAgLTU4LDcgKzcxLDYgQEAKICMgKiBVbnNldCBOT19QQUNLQUdFIGZvciAtLXdpdGgtUEFDS0FHRSB3aXRob3V0IEFSRwogQUNfREVGVU4oW0dJVF9QQVJTRV9XSVRIXSwKICAgICBbbTRfcHVzaGRlZihbR0lUX1VDX1BBQ0tBR0VdLCBtNF90b3VwcGVyKFskMV0pKWRubAotICAgIFBBQ0tBR0U9R0lUX1VDX1BBQ0tBR0UKICAgICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSAibm8iOyB0aGVuCiAJTk9fW11HSVRfVUNfUEFDS0FHRT1ZZXNQbGVhc2UKICAgICBlbGlmIHRlc3QgIiR3aXRodmFsIiA9ICJ5ZXMiOyB0aGVuCkBAIC02Nyw3ICs3OSw3IEBACiAJTk9fW11HSVRfVUNfUEFDS0FHRT0KIAlHSVRfVUNfUEFDS0FHRVtdRElSPSR3aXRodmFsCiAJQUNfTVNHX05PVElDRShbU2V0dGluZyBHSVRfVUNfUEFDS0FHRVtdRElSIHRvICR3aXRodmFsXSkKLQlHSVRfQ09ORl9BUFBFTkRfTElORSgke1BBQ0tBR0V9RElSPSR3aXRodmFsKQorCUdJVF9DT05GX1NVQlNUKEdJVF9VQ19QQUNLQUdFW0RJUl0sIFskd2l0aHZhbF0pCiAgICAgZmkKICAgICBtNF9wb3BkZWYoW0dJVF9VQ19QQUNLQUdFXSldKQogCkBAIC04Nyw3ICs5OSw3IEBACiAJCSAgICAgW2EgdmFsdWUgZm9yICQxICgkMikuICBNYXliZSB5b3UgZG8uLi4/XSkKICAgZmkKICAgQUNfTVNHX05PVElDRShbU2V0dGluZyAkMiB0byAkd2l0aHZhbF0pCi0gIEdJVF9DT05GX0FQUEVORF9MSU5FKCQyPSR3aXRodmFsKQorICBHSVRfQ09ORl9TVUJTVChbJDJdLCBbJHdpdGh2YWxdKQogIGZpKV0pIyBHSVRfUEFSU0VfV0lUSF9TRVRfTUFLRV9WQVIKIAogIwpAQCAtMTM1LDEwICsxNDcsOSBAQAogQUNfQ09ORklHX1NSQ0RJUihbZ2l0LmNdKQogCiBjb25maWdfZmlsZT1jb25maWcubWFrLmF1dG9nZW4KLWNvbmZpZ19hcHBlbmQ9Y29uZmlnLm1hay5hcHBlbmQKIGNvbmZpZ19pbj1jb25maWcubWFrLmluCiAKLWVjaG8gIiMgJHtjb25maWdfYXBwZW5kfS4gIEdlbmVyYXRlZCBieSBjb25maWd1cmUuIiA+ICIke2NvbmZpZ19hcHBlbmR9IgorR0lUX0NPTkZfU1VCU1QoW0FVVE9DT05GSUdVUkVEXSwgW1llc1BsZWFzZV0pCiAKICMgRGlyZWN0b3JpZXMgaG9sZGluZyAic2FuZXIiIHZlcnNpb25zIG9mIGNvbW1vbiBvciBQT1NJWCBiaW5hcmllcy4KIEFDX0FSR19XSVRIKFtzYW5lLXRvb2wtcGF0aF0sCkBAIC0xNTAsNyArMTYxLDcgQEAKICAgZWxzZQogICAgIEFDX01TR19OT1RJQ0UoW1NldHRpbmcgU0FORV9UT09MX1BBVEggdG8gJyR3aXRodmFsJ10pCiAgIGZpCi0gIEdJVF9DT05GX0FQUEVORF9MSU5FKFtTQU5FX1RPT0xfUEFUSD0kd2l0aHZhbF0pXSwKKyAgR0lUX0NPTkZfU1VCU1QoW1NBTkVfVE9PTF9QQVRIXSwgWyR3aXRodmFsXSldLAogICBbIyBJZiB0aGUgIi0td2l0aC1zYW5lLXRvb2wtcGF0aCIgb3B0aW9uIHdhcyBub3QgZ2l2ZW4sIGRvbid0IHRvdWNoCiAgICAjIFNBTkVfVE9PTF9QQVRIIGhlcmUsIGJ1dCBsZXQgZGVmYXVsdHMgaW4gTWFrZWZpbGUgdGFrZSBjYXJlIG9mIGl0LgogICAgIyBUaGlzIHNob3VsZCBtaW5pbWl6ZSBzcHVyaW91cyBkaWZmZXJlbmNlcyBpbiB0aGUgYmVoYXZpb3VyIG9mIHRoZQpAQCAtMTY5LDcgKzE4MCw3IEBACiAgIGVsc2UKIAlsaWI9JHdpdGh2YWwKIAlBQ19NU0dfTk9USUNFKFtTZXR0aW5nIGxpYiB0byAnJGxpYiddKQotCUdJVF9DT05GX0FQUEVORF9MSU5FKGxpYj0kd2l0aHZhbCkKKwlHSVRfQ09ORl9TVUJTVChbbGliXSkKICAgZmldKQogCiBpZiB0ZXN0IC16ICIkbGliIjsgdGhlbgpAQCAtMTgyLDcgKzE5Myw3IEBACiAgIFtGTEFHUyBpcyB0aGUgdmFsdWUgdG8gcGFzcyB0byB0aGUgY29tcGlsZXIgdG8gZW5hYmxlIFBPU0lYIFRocmVhZHMuXQogICBbVGhlIGRlZmF1bHQgaWYgRkxBR1MgaXMgbm90IHNwZWNpZmllZCBpcyB0byB0cnkgZmlyc3QgLXB0aHJlYWRdCiAgIFthbmQgdGhlbiAtbHB0aHJlYWQuXQotICBbLS13aXRob3V0LXB0aHJlYWRzIHdpbGwgZGlzYWJsZSB0aHJlYWRpbmcuXSldLAorICBbLS1kaXNhYmxlLXB0aHJlYWRzIHdpbGwgZGlzYWJsZSB0aHJlYWRpbmcuXSldLAogWwogaWYgdGVzdCAieCRlbmFibGV2YWwiID0gInh5ZXMiOyB0aGVuCiAgICBBQ19NU0dfTk9USUNFKFtXaWxsIHRyeSAtcHRocmVhZCB0aGVuIC1scHRocmVhZCB0byBlbmFibGUgUE9TSVggVGhyZWFkc10pCkBAIC0yMDUsNyArMjE2LDcgQEAKIFsKICAgSlNNSU49JGVuYWJsZXZhbDsKICAgQUNfTVNHX05PVElDRShbU2V0dGluZyBKU01JTiB0byAnJEpTTUlOJyB0byBlbmFibGUgSmF2YVNjcmlwdCBtaW5pZnlpbmddKQotICBHSVRfQ09ORl9BUFBFTkRfTElORShKU01JTj0kZW5hYmxldmFsKTsKKyAgR0lUX0NPTkZfU1VCU1QoW0pTTUlOXSkKIF0pCiAKICMgRGVmaW5lIG9wdGlvbiB0byBlbmFibGUgQ1NTIG1pbmlmaWNhdGlvbgpAQCAtMjE1LDcgKzIyNiw3IEBACiBbCiAgIENTU01JTj0kZW5hYmxldmFsOwogICBBQ19NU0dfTk9USUNFKFtTZXR0aW5nIENTU01JTiB0byAnJENTU01JTicgdG8gZW5hYmxlIENTUyBtaW5pZnlpbmddKQotICBHSVRfQ09ORl9BUFBFTkRfTElORShDU1NNSU49JGVuYWJsZXZhbCk7CisgIEdJVF9DT05GX1NVQlNUKFtDU1NNSU5dKQogXSkKIAogIyMgU2l0ZSBjb25maWd1cmF0aW9uIChvdmVycmlkZSBhdXRvZGV0ZWN0aW9uKQpAQCAtMjU1LDggKzI2NiwxMCBAQAogICAgIGVsc2UKIAlVU0VfTElCUENSRT1ZZXNQbGVhc2UKIAlMSUJQQ1JFRElSPSR3aXRodmFsCi0JQUNfTVNHX05PVElDRShbU2V0dGluZyBMSUJQQ1JFRElSIHRvICR3aXRodmFsXSkKLQlHSVRfQ09ORl9BUFBFTkRfTElORShMSUJQQ1JFRElSPSR3aXRodmFsKQorCUFDX01TR19OT1RJQ0UoW1NldHRpbmcgTElCUENSRURJUiB0byAkTElCUENSRURJUl0pCisgICAgICAgIGRubCBVU0VfTElCUENSRSBjYW4gc3RpbGwgYmUgbW9kaWZpZWQgYmVsb3csIHNvIGRvbid0IHN1YnN0aXR1dGUKKyAgICAgICAgZG5sIGl0IHlldC4KKwlHSVRfQ09ORl9TVUJTVChbTElCUENSRURJUl0pCiAgICAgZmkpCiAjCiAjIERlZmluZSBOT19DVVJMIGlmIHlvdSBkbyBub3QgaGF2ZSBjdXJsIGluc3RhbGxlZC4gIGdpdC1odHRwLXB1bGwgYW5kCkBAIC0zNzYsOSArMzg5LDEwIEBACiBBQ19QUk9HX0NDKFtjYyBnY2NdKQogQUNfQ19JTkxJTkUKIGNhc2UgJGFjX2N2X2NfaW5saW5lIGluCi0gIGlubGluZSB8IHllcyB8IG5vKQk7OwotICAqKQkJCUFDX1NVQlNUKFtJTkxJTkVdLCBbJGFjX2N2X2NfaW5saW5lXSkgOzsKKyAgaW5saW5lIHwgeWVzIHwgbm8pIElOTElORT0nJzs7CisgICopICAgICAgICAgICAgICAgICBJTkxJTkU9JGFjX2N2X2NfaW5saW5lIDs7CiBlc2FjCitHSVRfQ09ORl9TVUJTVChbSU5MSU5FXSkKIAogIyB3aGljaCBzd2l0Y2ggdG8gcGFzcyBydW50aW1lIHBhdGggdG8gZHluYW1pYyBsaWJyYXJpZXMgdG8gdGhlIGxpbmtlcgogQUNfQ0FDSEVfQ0hFQ0soW2lmIGxpbmtlciBzdXBwb3J0cyAtUl0sIGdpdF9jdl9sZF9kYXNociwgWwpAQCAtMzg4LDcgKzQwMiw3IEBACiAgICBMREZMQUdTPSIke1NBVkVfTERGTEFHU30iCiBdKQogaWYgdGVzdCAiJGdpdF9jdl9sZF9kYXNociIgPSAieWVzIjsgdGhlbgotICAgQUNfU1VCU1QoQ0NfTERfRFlOUEFUSCwgWy1SXSkKKyAgIENDX0xEX0RZTlBBVEg9LVIKIGVsc2UKICAgIEFDX0NBQ0hFX0NIRUNLKFtpZiBsaW5rZXIgc3VwcG9ydHMgLVdsLC1ycGF0aCxdLCBnaXRfY3ZfbGRfd2xfcnBhdGgsIFsKICAgICAgIFNBVkVfTERGTEFHUz0iJHtMREZMQUdTfSIKQEAgLTM5Nyw3ICs0MTEsNyBAQAogICAgICAgTERGTEFHUz0iJHtTQVZFX0xERkxBR1N9IgogICAgXSkKICAgIGlmIHRlc3QgIiRnaXRfY3ZfbGRfd2xfcnBhdGgiID0gInllcyI7IHRoZW4KLSAgICAgIEFDX1NVQlNUKENDX0xEX0RZTlBBVEgsIFstV2wsLXJwYXRoLF0pCisgICAgICBDQ19MRF9EWU5QQVRIPS1XbCwtcnBhdGgsCiAgICBlbHNlCiAgICAgICBBQ19DQUNIRV9DSEVDSyhbaWYgbGlua2VyIHN1cHBvcnRzIC1ycGF0aF0sIGdpdF9jdl9sZF9ycGF0aCwgWwogICAgICAgICAgU0FWRV9MREZMQUdTPSIke0xERkxBR1N9IgpAQCAtNDA2LDUyICs0MjAsNDggQEAKICAgICAgICAgIExERkxBR1M9IiR7U0FWRV9MREZMQUdTfSIKICAgICAgIF0pCiAgICAgICBpZiB0ZXN0ICIkZ2l0X2N2X2xkX3JwYXRoIiA9ICJ5ZXMiOyB0aGVuCi0gICAgICAgICBBQ19TVUJTVChDQ19MRF9EWU5QQVRILCBbLXJwYXRoXSkKKyAgICAgICAgIENDX0xEX0RZTlBBVEg9LXJwYXRoCiAgICAgICBlbHNlCisgICAgICAgICBDQ19MRF9EWU5QQVRIPQogICAgICAgICAgQUNfTVNHX1dBUk4oW2xpbmtlciBkb2VzIG5vdCBzdXBwb3J0IHJ1bnRpbWUgcGF0aCB0byBkeW5hbWljIGxpYnJhcmllc10pCiAgICAgICBmaQogICAgZmkKIGZpCitHSVRfQ09ORl9TVUJTVChbQ0NfTERfRFlOUEFUSF0pCiAjQUNfUFJPR19JTlNUQUxMCQkjIG5lZWRzIGluc3RhbGwtc2ggb3IgaW5zdGFsbC5zaCBpbiBzb3VyY2VzCiBBQ19DSEVDS19UT09MUyhBUiwgW2dhciBhcl0sIDopCiBBQ19DSEVDS19QUk9HUyhUQVIsIFtndGFyIHRhcl0pCiBBQ19DSEVDS19QUk9HUyhESUZGLCBbZ251ZGlmZiBnZGlmZiBkaWZmXSkKICMgVENMVEtfUEFUSCB3aWxsIGJlIHNldCB0byBzb21lIHZhbHVlIGlmIHdlIHdhbnQgVGNsL1RrCiAjIG9yIHdpbGwgYmUgZW1wdHkgb3RoZXJ3aXNlLgotaWYgdGVzdCAteiAiJE5PX1RDTFRLIjsgdGhlbgoraWYgdGVzdCAtbiAiJE5PX1RDTFRLIjsgdGhlbgorICBUQ0xUS19QQVRIPQorZWxzZQogICBpZiB0ZXN0ICIkd2l0aF90Y2x0ayIgPSAiIjsgdGhlbgogICAjIE5vIFRjbC9UayBzd2l0Y2hlcyBnaXZlbi4gRG8gbm90IGNoZWNrIGZvciBUY2wvVGssIHVzZSBiYXJlICd3aXNoJy4KICAgICBUQ0xUS19QQVRIPXdpc2gKLSAgICBBQ19TVUJTVChUQ0xUS19QQVRIKQogICBlbGlmIHRlc3QgIiR3aXRoX3RjbHRrIiA9ICJ5ZXMiOyB0aGVuCiAgICMgVGNsL1RrIGNoZWNrIHJlcXVlc3RlZC4KICAgICBBQ19DSEVDS19QUk9HUyhUQ0xUS19QQVRILCBbd2lzaF0sICkKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW1VzaW5nIFRjbC9UayBpbnRlcnByZXRlciAkd2l0aF90Y2x0a10pCiAgICAgVENMVEtfUEFUSD0iJHdpdGhfdGNsdGsiCi0gICAgQUNfU1VCU1QoVENMVEtfUEFUSCkKICAgZmkKIGZpCitHSVRfQ09ORl9TVUJTVChbVENMVEtfUEFUSF0pCiBBQ19DSEVDS19QUk9HUyhBU0NJSURPQywgW2FzY2lpZG9jXSkKIGlmIHRlc3QgLW4gIiRBU0NJSURPQyI7IHRoZW4KIAlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBhc2NpaWRvYyB2ZXJzaW9uXSkKIAlhc2NpaWRvY192ZXJzaW9uPWAkQVNDSUlET0MgLS12ZXJzaW9uIDI+L2Rldi9udWxsYAogCWNhc2UgIiR7YXNjaWlkb2NfdmVyc2lvbn0iIGluCi0JYXNjaWlkb2MnICc3KikKLQkJQVNDSUlET0M3PVllc1BsZWFzZQotCQlBQ19NU0dfUkVTVUxUKFske2FzY2lpZG9jX3ZlcnNpb259ID4gN10pCi0JCTs7CiAJYXNjaWlkb2MnICc4KikKLQkJQVNDSUlET0M3PQogCQlBQ19NU0dfUkVTVUxUKFske2FzY2lpZG9jX3ZlcnNpb259XSkKIAkJOzsKIAkqKQotCQlBU0NJSURPQzc9CiAJCUFDX01TR19SRVNVTFQoWyR7YXNjaWlkb2NfdmVyc2lvbn0gKHVua25vd24pXSkKIAkJOzsKIAllc2FjCiBmaQotQUNfU1VCU1QoQVNDSUlET0M3KQogCiAKICMjIENoZWNrcyBmb3IgbGlicmFyaWVzLgpAQCAtNDY1LDEzICs0NzUsMTMgQEAKIEFDX0NIRUNLX0xJQihbY3J5cHRvXSwgW1NIQTFfSW5pdF0sCiBbTkVFRFNfU1NMX1dJVEhfQ1JZUFRPPV0sCiBbQUNfQ0hFQ0tfTElCKFtzc2xdLCBbU0hBMV9Jbml0XSwKLSBbTkVFRFNfU1NMX1dJVEhfQ1JZUFRPPVllc1BsZWFzZV0sCi0gW05FRURTX1NTTF9XSVRIX0NSWVBUTz0gTk9fT1BFTlNTTD1ZZXNQbGVhc2VdKV0pCisgW05FRURTX1NTTF9XSVRIX0NSWVBUTz1ZZXNQbGVhc2UgTk9fT1BFTlNTTD1dLAorIFtORUVEU19TU0xfV0lUSF9DUllQVE89ICAgICAgICAgIE5PX09QRU5TU0w9WWVzUGxlYXNlXSldKQogCiBHSVRfVU5TVEFTSF9GTEFHUygkT1BFTlNTTERJUikKIAotQUNfU1VCU1QoTkVFRFNfU1NMX1dJVEhfQ1JZUFRPKQotQUNfU1VCU1QoTk9fT1BFTlNTTCkKK0dJVF9DT05GX1NVQlNUKFtORUVEU19TU0xfV0lUSF9DUllQVE9dKQorR0lUX0NPTkZfU1VCU1QoW05PX09QRU5TU0xdKQogCiAjCiAjIERlZmluZSBVU0VfTElCUENSRSBpZiB5b3UgaGF2ZSBhbmQgd2FudCB0byB1c2UgbGlicGNyZS4gZ2l0LWdyZXAgd2lsbCBiZQpAQCAtNDg4LDcgKzQ5OCw3IEBACiAKIEdJVF9VTlNUQVNIX0ZMQUdTKCRMSUJQQ1JFRElSKQogCi1BQ19TVUJTVChVU0VfTElCUENSRSkKK0dJVF9DT05GX1NVQlNUKFtVU0VfTElCUENSRV0pCiAKIGZpCiAKQEAgLTUwNSw3ICs1MTUsNyBAQAogCiBHSVRfVU5TVEFTSF9GTEFHUygkQ1VSTERJUikKIAotQUNfU1VCU1QoTk9fQ1VSTCkKK0dJVF9DT05GX1NVQlNUKFtOT19DVVJMXSkKIAogIwogIyBEZWZpbmUgTk9fRVhQQVQgaWYgeW91IGRvIG5vdCBoYXZlIGV4cGF0IGluc3RhbGxlZC4gIGdpdC1odHRwLXB1c2ggaXMKQEAgLTUxOSw3ICs1MjksNyBAQAogCiBHSVRfVU5TVEFTSF9GTEFHUygkRVhQQVRESVIpCiAKLUFDX1NVQlNUKE5PX0VYUEFUKQorR0lUX0NPTkZfU1VCU1QoW05PX0VYUEFUXSkKIAogIwogIyBEZWZpbmUgTkVFRFNfTElCSUNPTlYgaWYgbGlua2luZyB3aXRoIGxpYmMgaXMgbm90IGVub3VnaCAoRGFyd2luIGFuZApAQCAtNTY1LDggKzU3NSw4IEBACiAKIEdJVF9VTlNUQVNIX0ZMQUdTKCRJQ09OVkRJUikKIAotQUNfU1VCU1QoTkVFRFNfTElCSUNPTlYpCi1BQ19TVUJTVChOT19JQ09OVikKK0dJVF9DT05GX1NVQlNUKFtORUVEU19MSUJJQ09OVl0pCitHSVRfQ09ORl9TVUJTVChbTk9fSUNPTlZdKQogCiBpZiB0ZXN0IC1uICIkTk9fSUNPTlYiOyB0aGVuCiAgICAgTkVFRFNfTElCSUNPTlY9CkBAIC01OTMsNyArNjAzLDcgQEAKIAogR0lUX1VOU1RBU0hfRkxBR1MoJFpMSUJfUEFUSCkKIAotQUNfU1VCU1QoTk9fREVGTEFURV9CT1VORCkKK0dJVF9DT05GX1NVQlNUKFtOT19ERUZMQVRFX0JPVU5EXSkKIAogIwogIyBEZWZpbmUgTkVFRFNfU09DS0VUIGlmIGxpbmtpbmcgd2l0aCBsaWJjIGlzIG5vdCBlbm91Z2ggKFN1bk9TLApAQCAtNjAxLDcgKzYxMSw3IEBACiBBQ19DSEVDS19MSUIoW2NdLCBbc29ja2V0XSwKIFtORUVEU19TT0NLRVQ9XSwKIFtORUVEU19TT0NLRVQ9WWVzUGxlYXNlXSkKLUFDX1NVQlNUKE5FRURTX1NPQ0tFVCkKK0dJVF9DT05GX1NVQlNUKFtORUVEU19TT0NLRVRdKQogdGVzdCAtbiAiJE5FRURTX1NPQ0tFVCIgJiYgTElCUz0iJExJQlMgLWxzb2NrZXQiCiAKICMKQEAgLTYwOSw0MCArNjE5LDQzIEBACiAjIGxpYnJlc29sdiBwcm92aWRlcyBzb21lIG9mIHRoZSBmdW5jdGlvbnMgd2Ugd291bGQgbm9ybWFsbHkgZ2V0CiAjIGZyb20gbGliYy4KIE5FRURTX1JFU09MVj0KLUFDX1NVQlNUKE5FRURTX1JFU09MVikKICMKICMgRGVmaW5lIE5PX0lORVRfTlRPUCBpZiBsaW5raW5nIHdpdGggLWxyZXNvbHYgaXMgbm90IGVub3VnaC4KICMgU29sYXJpcyAyLjcgaW4gcGFydGljdWxhciBob3MgaW5ldF9udG9wIGluIC1scmVzb2x2LgogTk9fSU5FVF9OVE9QPQotQUNfU1VCU1QoTk9fSU5FVF9OVE9QKQogQUNfQ0hFQ0tfRlVOQyhbaW5ldF9udG9wXSwKLQlbXSwKKyAgICBbXSwKICAgICBbQUNfQ0hFQ0tfTElCKFtyZXNvbHZdLCBbaW5ldF9udG9wXSwKLQkgICAgW05FRURTX1JFU09MVj1ZZXNQbGVhc2VdLAorCVtORUVEU19SRVNPTFY9WWVzUGxlYXNlXSwKIAlbTk9fSU5FVF9OVE9QPVllc1BsZWFzZV0pCiBdKQorR0lUX0NPTkZfU1VCU1QoW05PX0lORVRfTlRPUF0pCiAjCiAjIERlZmluZSBOT19JTkVUX1BUT04gaWYgbGlua2luZyB3aXRoIC1scmVzb2x2IGlzIG5vdCBlbm91Z2guCiAjIFNvbGFyaXMgMi43IGluIHBhcnRpY3VsYXIgaG9zIGluZXRfcHRvbiBpbiAtbHJlc29sdi4KIE5PX0lORVRfUFRPTj0KLUFDX1NVQlNUKE5PX0lORVRfUFRPTikKIEFDX0NIRUNLX0ZVTkMoW2luZXRfcHRvbl0sCi0JW10sCisgICAgW10sCiAgICAgW0FDX0NIRUNLX0xJQihbcmVzb2x2XSwgW2luZXRfcHRvbl0sCi0JICAgIFtORUVEU19SRVNPTFY9WWVzUGxlYXNlXSwKKwlbTkVFRFNfUkVTT0xWPVllc1BsZWFzZV0sCiAJW05PX0lORVRfUFRPTj1ZZXNQbGVhc2VdKQogXSkKK0dJVF9DT05GX1NVQlNUKFtOT19JTkVUX1BUT05dKQogIwogIyBEZWZpbmUgTk9fSFNUUkVSUk9SIGlmIGxpbmtpbmcgd2l0aCAtbHJlc29sdiBpcyBub3QgZW5vdWdoLgogIyBTb2xhcmlzIDIuNiBpbiBwYXJ0aWN1bGFyIGhhcyBubyBoc3RyZXJyb3IsIGV2ZW4gaW4gLWxyZXNvbHYuCiBOT19IU1RSRVJST1I9CiBBQ19DSEVDS19GVU5DKFtoc3RyZXJyb3JdLAotCVtdLAorICAgIFtdLAogICAgIFtBQ19DSEVDS19MSUIoW3Jlc29sdl0sIFtoc3RyZXJyb3JdLAotCSAgICBbTkVFRFNfUkVTT0xWPVllc1BsZWFzZV0sCisJW05FRURTX1JFU09MVj1ZZXNQbGVhc2VdLAogCVtOT19IU1RSRVJST1I9WWVzUGxlYXNlXSkKIF0pCi1BQ19TVUJTVChOT19IU1RSRVJST1IpCitHSVRfQ09ORl9TVUJTVChbTk9fSFNUUkVSUk9SXSkKKworZG5sIFRoaXMgbXVzdCBnbyBhZnRlciBhbGwgdGhlIHBvc3NpYmxlIHBsYWNlcyBmb3IgaXRzIGluaXRpYWxpemF0aW9uLAorZG5sIGluIHRoZSBBQ19DSEVDS19GVU5DIGludm9jYXRpb25zIGFib3ZlLgorR0lUX0NPTkZfU1VCU1QoW05FRURTX1JFU09MVl0pCiAjCiAjIElmIGFueSBvZiB0aGUgYWJvdmUgdGVzdHMgZGV0ZXJtaW5lZCB0aGF0IC1scmVzb2x2IGlzIG5lZWRlZCBhdAogIyBidWlsZC10aW1lLCBhbHNvIHNldCBpdCBoZXJlIGZvciByZW1haW5pbmcgY29uZmlndXJlLXRpbWUgY2hlY2tzLgpAQCAtNjUxLDEzICs2NjQsMTMgQEAKIEFDX0NIRUNLX0xJQihbY10sIFtiYXNlbmFtZV0sCiBbTkVFRFNfTElCR0VOPV0sCiBbTkVFRFNfTElCR0VOPVllc1BsZWFzZV0pCi1BQ19TVUJTVChORUVEU19MSUJHRU4pCitHSVRfQ09ORl9TVUJTVChbTkVFRFNfTElCR0VOXSkKIHRlc3QgLW4gIiRORUVEU19MSUJHRU4iICYmIExJQlM9IiRMSUJTIC1sZ2VuIgogCiBBQ19DSEVDS19MSUIoW2NdLCBbZ2V0dGV4dF0sCiBbTElCQ19DT05UQUlOU19MSUJJTlRMPVllc1BsZWFzZV0sCiBbTElCQ19DT05UQUlOU19MSUJJTlRMPV0pCi1BQ19TVUJTVChMSUJDX0NPTlRBSU5TX0xJQklOVEwpCitHSVRfQ09ORl9TVUJTVChbTElCQ19DT05UQUlOU19MSUJJTlRMXSkKIAogIwogIyBEZWZpbmUgTk9fR0VUVEVYVCBpZiB5b3UgZG9uJ3Qgd2FudCBHaXQgb3V0cHV0IHRvIGJlIHRyYW5zbGF0ZWQuCkBAIC02NjUsNyArNjc4LDcgQEAKIEFDX0NIRUNLX0hFQURFUihbbGliaW50bC5oXSwKIFtOT19HRVRURVhUPV0sCiBbTk9fR0VUVEVYVD1ZZXNQbGVhc2VdKQotQUNfU1VCU1QoTk9fR0VUVEVYVCkKK0dJVF9DT05GX1NVQlNUKFtOT19HRVRURVhUXSkKIAogaWYgdGVzdCAteiAiJE5PX0dFVFRFWFQiOyB0aGVuCiAgICAgdGVzdCAtbiAiJExJQkNfQ09OVEFJTlNfTElCSU5UTCIgfHwgTElCUz0iJExJQlMgLWxpbnRsIgpAQCAtNjc4LDE5ICs2OTEsMTkgQEAKIEFDX0NIRUNLX0hFQURFUihbc3lzL3NlbGVjdC5oXSwKIFtOT19TWVNfU0VMRUNUX0g9XSwKIFtOT19TWVNfU0VMRUNUX0g9VW5mb3J0dW5hdGVseVllc10pCi1BQ19TVUJTVChOT19TWVNfU0VMRUNUX0gpCitHSVRfQ09ORl9TVUJTVChbTk9fU1lTX1NFTEVDVF9IXSkKICMKICMgRGVmaW5lIE5PX1NZU19QT0xMX0ggaWYgeW91IGRvbid0IGhhdmUgc3lzL3BvbGwuaAogQUNfQ0hFQ0tfSEVBREVSKFtzeXMvcG9sbC5oXSwKIFtOT19TWVNfUE9MTF9IPV0sCiBbTk9fU1lTX1BPTExfSD1VbmZvcnR1bmF0ZWx5WWVzXSkKLUFDX1NVQlNUKE5PX1NZU19QT0xMX0gpCitHSVRfQ09ORl9TVUJTVChbTk9fU1lTX1BPTExfSF0pCiAjCiAjIERlZmluZSBOT19JTlRUWVBFU19IIGlmIHlvdSBkb24ndCBoYXZlIGludHR5cGVzLmgKIEFDX0NIRUNLX0hFQURFUihbaW50dHlwZXMuaF0sCiBbTk9fSU5UVFlQRVNfSD1dLAogW05PX0lOVFRZUEVTX0g9VW5mb3J0dW5hdGVseVllc10pCi1BQ19TVUJTVChOT19JTlRUWVBFU19IKQorR0lUX0NPTkZfU1VCU1QoW05PX0lOVFRZUEVTX0hdKQogIwogIyBEZWZpbmUgT0xEX0lDT05WIGlmIHlvdXIgbGlicmFyeSBoYXMgYW4gb2xkIGljb252KCksIHdoZXJlIHRoZSBzZWNvbmQKICMgKGlucHV0IGJ1ZmZlciBwb2ludGVyKSBwYXJhbWV0ZXIgaXMgZGVjbGFyZWQgd2l0aCB0eXBlIChjb25zdCBjaGFyICoqKS4KQEAgLTcxMywyMyArNzI2LDI0IEBACiAKIEdJVF9VTlNUQVNIX0ZMQUdTKCRJQ09OVkRJUikKIAotQUNfU1VCU1QoT0xEX0lDT05WKQorR0lUX0NPTkZfU1VCU1QoW09MRF9JQ09OVl0pCiAKICMjIENoZWNrcyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MuCiBBQ19NU0dfTk9USUNFKFtDSEVDS1MgZm9yIHR5cGVkZWZzLCBzdHJ1Y3R1cmVzLCBhbmQgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzXSkKICMKIFRZUEVfU09DS0xFTl9UCiBjYXNlICRhY19jdl90eXBlX3NvY2tsZW5fdCBpbgotICB5ZXMpCTs7Ci0gICopICAJQUNfU1VCU1QoW1NPQ0tMRU5fVF0sIFskZ2l0X2N2X3NvY2tsZW5fdF9lcXVpdl0pIDs7CisgIHllcykJU09DS0xFTl9UPScnOzsKKyAgKikgIAlTT0NLTEVOX1Q9JGdpdF9jdl9zb2NrbGVuX3RfZXF1aXY7OwogZXNhYworR0lUX0NPTkZfU1VCU1QoW1NPQ0tMRU5fVF0pCiAKICMgRGVmaW5lIE5PX0RfSU5PX0lOX0RJUkVOVCBpZiB5b3UgZG9uJ3QgaGF2ZSBkX2lubyBpbiB5b3VyIHN0cnVjdCBkaXJlbnQuCiBBQ19DSEVDS19NRU1CRVIoc3RydWN0IGRpcmVudC5kX2lubywKIFtOT19EX0lOT19JTl9ESVJFTlQ9XSwKIFtOT19EX0lOT19JTl9ESVJFTlQ9WWVzUGxlYXNlXSwKIFsjaW5jbHVkZSA8ZGlyZW50Lmg+XSkKLUFDX1NVQlNUKE5PX0RfSU5PX0lOX0RJUkVOVCkKK0dJVF9DT05GX1NVQlNUKFtOT19EX0lOT19JTl9ESVJFTlRdKQogIwogIyBEZWZpbmUgTk9fRF9UWVBFX0lOX0RJUkVOVCBpZiB5b3VyIHBsYXRmb3JtIGRlZmluZXMgRFRfVU5LTk9XTiBidXQgbGFja3MKICMgZF90eXBlIGluIHN0cnVjdCBkaXJlbnQgKGxhdGVzdCBDeWd3aW4gLS0gd2lsbCBiZSBmaXhlZCBzb29uaXNoKS4KQEAgLTczNyw3ICs3NTEsMTUgQEAKIFtOT19EX1RZUEVfSU5fRElSRU5UPV0sCiBbTk9fRF9UWVBFX0lOX0RJUkVOVD1ZZXNQbGVhc2VdLAogWyNpbmNsdWRlIDxkaXJlbnQuaD5dKQotQUNfU1VCU1QoTk9fRF9UWVBFX0lOX0RJUkVOVCkKK0dJVF9DT05GX1NVQlNUKFtOT19EX1RZUEVfSU5fRElSRU5UXSkKKyMKKyMgRGVmaW5lIE5PX0dFQ09TX0lOX1BXRU5UIGlmIHlvdSBkb24ndCBoYXZlIHB3X2dlY29zIGluIHN0cnVjdCBwYXNzd2QKKyMgaW4gdGhlIEMgbGlicmFyeS4KK0FDX0NIRUNLX01FTUJFUihzdHJ1Y3QgcGFzc3dkLnB3X2dlY29zLAorW05PX0dFQ09TX0lOX1BXRU5UPV0sCitbTk9fR0VDT1NfSU5fUFdFTlQ9WWVzUGxlYXNlXSwKK1sjaW5jbHVkZSA8cHdkLmg+XSkKK0dJVF9DT05GX1NVQlNUKFtOT19HRUNPU19JTl9QV0VOVF0pCiAjCiAjIERlZmluZSBOT19TT0NLQUREUl9TVE9SQUdFIGlmIHlvdXIgcGxhdGZvcm0gZG9lcyBub3QgaGF2ZSBzdHJ1Y3QKICMgc29ja2FkZHJfc3RvcmFnZS4KQEAgLTc0Nyw3ICs3NjksNyBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KIF0pCi1BQ19TVUJTVChOT19TT0NLQUREUl9TVE9SQUdFKQorR0lUX0NPTkZfU1VCU1QoW05PX1NPQ0tBRERSX1NUT1JBR0VdKQogIwogIyBEZWZpbmUgTk9fSVBWNiBpZiB5b3UgbGFjayBJUHY2IHN1cHBvcnQgYW5kIGdldGFkZHJpbmZvKCkuCiBBQ19DSEVDS19UWVBFKFtzdHJ1Y3QgYWRkcmluZm9dLFsKQEAgLTc1OSw3ICs3ODEsNyBAQAogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KICNpbmNsdWRlIDxuZXRkYi5oPgogXSkKLUFDX1NVQlNUKE5PX0lQVjYpCitHSVRfQ09ORl9TVUJTVChbTk9fSVBWNl0pCiAjCiAjIERlZmluZSBOT19SRUdFWCBpZiB5b3UgaGF2ZSBubyBvciBpbmZlcmlvciByZWdleCBzdXBwb3J0IGluIHlvdXIgQyBsaWJyYXJ5LgogQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIHBsYXRmb3JtIHJlZ2V4IGNhbiBoYW5kbGUgbnVsbCBieXRlc10sCkBAIC03ODAsNyArODAyLDcgQEAKIGVsc2UKIAlOT19SRUdFWD1ZZXNQbGVhc2UKIGZpCi1BQ19TVUJTVChOT19SRUdFWCkKK0dJVF9DT05GX1NVQlNUKFtOT19SRUdFWF0pCiAjCiAjIERlZmluZSBGUkVBRF9SRUFEU19ESVJFQ1RPUklFUyBpZiB5b3VyIGFyZSBvbiBhIHN5c3RlbSB3aGljaCBzdWNjZWVkcwogIyB3aGVuIGF0dGVtcHRpbmcgdG8gcmVhZCBmcm9tIGFuIGZvcGVuJ2VkIGRpcmVjdG9yeS4KQEAgLTgwMCw3ICs4MjIsNyBAQAogZWxzZQogCUZSRUFEX1JFQURTX0RJUkVDVE9SSUVTPQogZmkKLUFDX1NVQlNUKEZSRUFEX1JFQURTX0RJUkVDVE9SSUVTKQorR0lUX0NPTkZfU1VCU1QoW0ZSRUFEX1JFQURTX0RJUkVDVE9SSUVTXSkKICMKICMgRGVmaW5lIFNOUFJJTlRGX1JFVFVSTlNfQk9HVVMgaWYgeW91ciBhcmUgb24gYSBzeXN0ZW0gd2hpY2ggc25wcmludGYoKQogIyBvciB2c25wcmludGYoKSByZXR1cm4gLTEgaW5zdGVhZCBvZiBudW1iZXIgb2YgY2hhcmFjdGVycyB3aGljaCB3b3VsZApAQCAtODM0LDcgKzg1Niw3IEBACiBlbHNlCiAJU05QUklOVEZfUkVUVVJOU19CT0dVUz0KIGZpCi1BQ19TVUJTVChTTlBSSU5URl9SRVRVUk5TX0JPR1VTKQorR0lUX0NPTkZfU1VCU1QoW1NOUFJJTlRGX1JFVFVSTlNfQk9HVVNdKQogCiAKICMjIENoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMuCkBAIC04NDUsNDcgKzg2Nyw0NSBAQAogQUNfQ0hFQ0tfSEVBREVSKFtsaWJnZW4uaF0sCiBbTk9fTElCR0VOX0g9XSwKIFtOT19MSUJHRU5fSD1ZZXNQbGVhc2VdKQotQUNfU1VCU1QoTk9fTElCR0VOX0gpCitHSVRfQ09ORl9TVUJTVChbTk9fTElCR0VOX0hdKQogIwogIyBEZWZpbmUgSEFWRV9QQVRIU19IIGlmIHlvdSBoYXZlIHBhdGhzLmguCiBBQ19DSEVDS19IRUFERVIoW3BhdGhzLmhdLAogW0hBVkVfUEFUSFNfSD1ZZXNQbGVhc2VdLAogW0hBVkVfUEFUSFNfSD1dKQotQUNfU1VCU1QoSEFWRV9QQVRIU19IKQorR0lUX0NPTkZfU1VCU1QoW0hBVkVfUEFUSFNfSF0pCiAjCiAjIERlZmluZSBIQVZFX0xJQkNIQVJTRVRfSCBpZiBoYXZlIGxpYmNoYXJzZXQuaAogQUNfQ0hFQ0tfSEVBREVSKFtsaWJjaGFyc2V0LmhdLAogW0hBVkVfTElCQ0hBUlNFVF9IPVllc1BsZWFzZV0sCiBbSEFWRV9MSUJDSEFSU0VUX0g9XSkKLUFDX1NVQlNUKEhBVkVfTElCQ0hBUlNFVF9IKQorR0lUX0NPTkZfU1VCU1QoW0hBVkVfTElCQ0hBUlNFVF9IXSkKKyMKKyMgRGVmaW5lIEhBVkVfU1RSSU5HU19IIGlmIHlvdSBoYXZlIHN0cmluZ3MuaAorQUNfQ0hFQ0tfSEVBREVSKFtzdHJpbmdzLmhdLAorW0hBVkVfU1RSSU5HU19IPVllc1BsZWFzZV0sCitbSEFWRV9TVFJJTkdTX0g9XSkKK0dJVF9DT05GX1NVQlNUKFtIQVZFX1NUUklOR1NfSF0pCiAjIERlZmluZSBDSEFSU0VUX0xJQiBpZiBsaWJpY29udiBkb2VzIG5vdCBleHBvcnQgdGhlIGxvY2FsZV9jaGFyc2V0IHN5bWJvbAogIyBhbmQgbGliY2hhcnNldCBkb2VzCiBDSEFSU0VUX0xJQj0KIEFDX0NIRUNLX0xJQihbaWNvbnZdLCBbbG9jYWxlX2NoYXJzZXRdLAogICAgICAgIFtdLAogICAgICAgIFtBQ19DSEVDS19MSUIoW2NoYXJzZXRdLCBbbG9jYWxlX2NoYXJzZXRdLAotICAgICAgICAgICAgICAgICAgICAgW0NIQVJTRVRfTElCPS1sY2hhcnNldF0pCi0gICAgICAgXQotKQotQUNfU1VCU1QoQ0hBUlNFVF9MSUIpCisgICAgICAgICAgICAgICAgICAgICBbQ0hBUlNFVF9MSUI9LWxjaGFyc2V0XSldKQorR0lUX0NPTkZfU1VCU1QoW0NIQVJTRVRfTElCXSkKICMKICMgRGVmaW5lIE5PX1NUUkNBU0VTVFIgaWYgeW91IGRvbid0IGhhdmUgc3RyY2FzZXN0ci4KIEdJVF9DSEVDS19GVU5DKHN0cmNhc2VzdHIsCiBbTk9fU1RSQ0FTRVNUUj1dLAogW05PX1NUUkNBU0VTVFI9WWVzUGxlYXNlXSkKLUFDX1NVQlNUKE5PX1NUUkNBU0VTVFIpCi0jCi0jIERlZmluZSBOT19TVFJUT0tfUiBpZiB5b3UgZG9uJ3QgaGF2ZSBzdHJ0b2tfcgotR0lUX0NIRUNLX0ZVTkMoc3RydG9rX3IsCi1bTk9fU1RSVE9LX1I9XSwKLVtOT19TVFJUT0tfUj1ZZXNQbGVhc2VdKQotQUNfU1VCU1QoTk9fU1RSVE9LX1IpCitHSVRfQ09ORl9TVUJTVChbTk9fU1RSQ0FTRVNUUl0pCiAjCiAjIERlZmluZSBOT19GTk1BVENIIGlmIHlvdSBkb24ndCBoYXZlIGZubWF0Y2gKIEdJVF9DSEVDS19GVU5DKGZubWF0Y2gsCiBbTk9fRk5NQVRDSD1dLAogW05PX0ZOTUFUQ0g9WWVzUGxlYXNlXSkKLUFDX1NVQlNUKE5PX0ZOTUFUQ0gpCitHSVRfQ09ORl9TVUJTVChbTk9fRk5NQVRDSF0pCiAjCiAjIERlZmluZSBOT19GTk1BVENIX0NBU0VGT0xEIGlmIHlvdXIgZm5tYXRjaCBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdGhlCiAjIEZOTV9DQVNFRk9MRCBHTlUgZXh0ZW5zaW9uLgpAQCAtOTA3LDE5ICs5MjcsMTkgQEAKIGVsc2UKIAlOT19GTk1BVENIX0NBU0VGT0xEPVllc1BsZWFzZQogZmkKLUFDX1NVQlNUKE5PX0ZOTUFUQ0hfQ0FTRUZPTEQpCitHSVRfQ09ORl9TVUJTVChbTk9fRk5NQVRDSF9DQVNFRk9MRF0pCiAjCiAjIERlZmluZSBOT19NRU1NRU0gaWYgeW91IGRvbid0IGhhdmUgbWVtbWVtLgogR0lUX0NIRUNLX0ZVTkMobWVtbWVtLAogW05PX01FTU1FTT1dLAogW05PX01FTU1FTT1ZZXNQbGVhc2VdKQotQUNfU1VCU1QoTk9fTUVNTUVNKQorR0lUX0NPTkZfU1VCU1QoW05PX01FTU1FTV0pCiAjCiAjIERlZmluZSBOT19TVFJMQ1BZIGlmIHlvdSBkb24ndCBoYXZlIHN0cmxjcHkuCiBHSVRfQ0hFQ0tfRlVOQyhzdHJsY3B5LAogW05PX1NUUkxDUFk9XSwKIFtOT19TVFJMQ1BZPVllc1BsZWFzZV0pCi1BQ19TVUJTVChOT19TVFJMQ1BZKQorR0lUX0NPTkZfU1VCU1QoW05PX1NUUkxDUFldKQogIwogIyBEZWZpbmUgTk9fVUlOVE1BWF9UIGlmIHlvdXIgcGxhdGZvcm0gZG9lcyBub3QgaGF2ZSB1aW50bWF4X3QKIEFDX0NIRUNLX1RZUEUodWludG1heF90LApAQCAtOTI3LDQzICs5NDcsNDMgQEAKIFtOT19VSU5UTUFYX1Q9WWVzUGxlYXNlXSxbCiAjaW5jbHVkZSA8aW50dHlwZXMuaD4KIF0pCi1BQ19TVUJTVChOT19VSU5UTUFYX1QpCitHSVRfQ09ORl9TVUJTVChbTk9fVUlOVE1BWF9UXSkKICMKICMgRGVmaW5lIE5PX1NUUlRPVU1BWCBpZiB5b3UgZG9uJ3QgaGF2ZSBzdHJ0b3VtYXggaW4gdGhlIEMgbGlicmFyeS4KIEdJVF9DSEVDS19GVU5DKHN0cnRvdW1heCwKIFtOT19TVFJUT1VNQVg9XSwKIFtOT19TVFJUT1VNQVg9WWVzUGxlYXNlXSkKLUFDX1NVQlNUKE5PX1NUUlRPVU1BWCkKK0dJVF9DT05GX1NVQlNUKFtOT19TVFJUT1VNQVhdKQogIwogIyBEZWZpbmUgTk9fU0VURU5WIGlmIHlvdSBkb24ndCBoYXZlIHNldGVudiBpbiB0aGUgQyBsaWJyYXJ5LgogR0lUX0NIRUNLX0ZVTkMoc2V0ZW52LAogW05PX1NFVEVOVj1dLAogW05PX1NFVEVOVj1ZZXNQbGVhc2VdKQotQUNfU1VCU1QoTk9fU0VURU5WKQorR0lUX0NPTkZfU1VCU1QoW05PX1NFVEVOVl0pCiAjCiAjIERlZmluZSBOT19VTlNFVEVOViBpZiB5b3UgZG9uJ3QgaGF2ZSB1bnNldGVudiBpbiB0aGUgQyBsaWJyYXJ5LgogR0lUX0NIRUNLX0ZVTkModW5zZXRlbnYsCiBbTk9fVU5TRVRFTlY9XSwKIFtOT19VTlNFVEVOVj1ZZXNQbGVhc2VdKQotQUNfU1VCU1QoTk9fVU5TRVRFTlYpCitHSVRfQ09ORl9TVUJTVChbTk9fVU5TRVRFTlZdKQogIwogIyBEZWZpbmUgTk9fTUtEVEVNUCBpZiB5b3UgZG9uJ3QgaGF2ZSBta2R0ZW1wIGluIHRoZSBDIGxpYnJhcnkuCiBHSVRfQ0hFQ0tfRlVOQyhta2R0ZW1wLAogW05PX01LRFRFTVA9XSwKIFtOT19NS0RURU1QPVllc1BsZWFzZV0pCi1BQ19TVUJTVChOT19NS0RURU1QKQorR0lUX0NPTkZfU1VCU1QoW05PX01LRFRFTVBdKQogIwogIyBEZWZpbmUgTk9fTUtTVEVNUFMgaWYgeW91IGRvbid0IGhhdmUgbWtzdGVtcHMgaW4gdGhlIEMgbGlicmFyeS4KIEdJVF9DSEVDS19GVU5DKG1rc3RlbXBzLAogW05PX01LU1RFTVBTPV0sCiBbTk9fTUtTVEVNUFM9WWVzUGxlYXNlXSkKLUFDX1NVQlNUKE5PX01LU1RFTVBTKQorR0lUX0NPTkZfU1VCU1QoW05PX01LU1RFTVBTXSkKICMKICMgRGVmaW5lIE5PX0lOSVRHUk9VUFMgaWYgeW91IGRvbid0IGhhdmUgaW5pdGdyb3VwcyBpbiB0aGUgQyBsaWJyYXJ5LgogR0lUX0NIRUNLX0ZVTkMoaW5pdGdyb3VwcywKIFtOT19JTklUR1JPVVBTPV0sCiBbTk9fSU5JVEdST1VQUz1ZZXNQbGVhc2VdKQotQUNfU1VCU1QoTk9fSU5JVEdST1VQUykKK0dJVF9DT05GX1NVQlNUKFtOT19JTklUR1JPVVBTXSkKICMKICMKICMgRGVmaW5lIE5PX01NQVAgaWYgeW91IHdhbnQgdG8gYXZvaWQgbW1hcC4KQEAgLTEwMDksMTAgKzEwMjksMjAgQEAKICMgLURfUkVFTlRSQU5UJyBvciBzb21lIHN1Y2guCiBlbGlmIHRlc3QgLXogIiRQVEhSRUFEX0NGTEFHUyI7IHRoZW4KICAgdGhyZWFkc19mb3VuZD1ubwotICBmb3Igb3B0IGluIC1tdCAtcHRocmVhZCAtbHB0aHJlYWQ7IGRvCisgICMgQXR0ZW1wdCB0byBjb21waWxlIGFuZCBsaW5rIHNvbWUgY29kZSB1c2luZyBwdGhyZWFkcyB0byBkZXRlcm1pbmUKKyAgIyByZXF1aXJlZCBsaW5rZXIgZmxhZ3MuIFRoZSBvcmRlciBpcyBzb21ld2hhdCBpbXBvcnRhbnQgaGVyZTogV2UKKyAgIyBmaXJzdCB0cnkgaXQgd2l0aG91dCBhbnkgZXh0cmEgZmxhZ3MsIHRvIGNhdGNoIHN5c3RlbXMgd2hlcmUKKyAgIyBwdGhyZWFkcyBhcmUgcGFydCBvZiB0aGUgQyBsaWJyYXJ5LCB0aGVuIGdvIG9uIHRlc3RpbmcgdmFyaW91cyBvdGhlcgorICAjIGZsYWdzLiBXZSBkbyBzbyB0byBhdm9pZCBmYWxzZSBwb3NpdGl2ZXMuIEZvciBleGFtcGxlLCBvbiBNYWMgT1MgWAorICAjIHB0aHJlYWRzIGFyZSBwYXJ0IG9mIHRoZSBDIGxpYnJhcnk7IG1vcmVvdmVyLCB0aGUgY29tcGlsZXIgYWxsb3dzIHVzCisgICMgdG8gYWRkICItbXQiIHRvIHRoZSBDRkxBR1MgKGFsdGhvdWdoIGl0IHdpbGwgZG8gbm90aGluZyBleGNlcHQKKyAgIyB0cmlnZ2VyIGEgd2FybmluZyBhYm91dCBhbiB1bnVzZWQgZmxhZykuIEhlbmNlIGlmIHdlIGNoZWNrZWQgZm9yCisgICMgIi1tdCIgYmVmb3JlICIiIHdlIHdvdWxkIGVuZCB1cCBwaWNraW5nIGl0LiBCdXQgdW5mb3J0dW5hdGVseSB0aGlzCisgICMgd291bGQgdGhlbiB0cmlnZ2VyIGNvbXBpbGVyIHdhcm5pbmdzIG9uIGV2ZXJ5IHNpbmdsZSBmaWxlIHdlIGNvbXBpbGUuCisgIGZvciBvcHQgaW4gIiIgLW10IC1wdGhyZWFkIC1scHRocmVhZDsgZG8KICAgICAgb2xkX0NGTEFHUz0iJENGTEFHUyIKICAgICAgQ0ZMQUdTPSIkb3B0ICRDRkxBR1MiCi0gICAgIEFDX01TR19DSEVDS0lORyhbQ2hlY2tpbmcgZm9yIFBPU0lYIFRocmVhZHMgd2l0aCAnJG9wdCddKQorICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBQT1NJWCBUaHJlYWRzIHdpdGggJyRvcHQnXSkKICAgICAgQUNfTElOS19JRkVMU0UoW1BUSFJFQURURVNUX1NSQ10sCiAJW0FDX01TR19SRVNVTFQoW3llc10pCiAJCU5PX1BUSFJFQURTPQpAQCAtMTAzMiw3ICsxMDYyLDcgQEAKIGVsc2UKICAgb2xkX0NGTEFHUz0iJENGTEFHUyIKICAgQ0ZMQUdTPSIkUFRIUkVBRF9DRkxBR1MgJENGTEFHUyIKLSAgQUNfTVNHX0NIRUNLSU5HKFtDaGVja2luZyBmb3IgUE9TSVggVGhyZWFkcyB3aXRoICckUFRIUkVBRF9DRkxBR1MnXSkKKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgUE9TSVggVGhyZWFkcyB3aXRoICckUFRIUkVBRF9DRkxBR1MnXSkKICAgQUNfTElOS19JRkVMU0UoW1BUSFJFQURURVNUX1NSQ10sCiAJW0FDX01TR19SRVNVTFQoW3llc10pCiAJCU5PX1BUSFJFQURTPQpAQCAtMTA0NSwxNCArMTA3NSwxMCBAQAogCiBDRkxBR1M9IiRvbGRfQ0ZMQUdTIgogCi1BQ19TVUJTVChQVEhSRUFEX0NGTEFHUykKLUFDX1NVQlNUKFBUSFJFQURfTElCUykKLUFDX1NVQlNUKE5PX1BUSFJFQURTKQorR0lUX0NPTkZfU1VCU1QoW1BUSFJFQURfQ0ZMQUdTXSkKK0dJVF9DT05GX1NVQlNUKFtQVEhSRUFEX0xJQlNdKQorR0lUX0NPTkZfU1VCU1QoW05PX1BUSFJFQURTXSkKIAogIyMgT3V0cHV0IGZpbGVzCi1BQ19DT05GSUdfRklMRVMoWyIke2NvbmZpZ19maWxlfSI6IiR7Y29uZmlnX2lufSI6IiR7Y29uZmlnX2FwcGVuZH0iXSkKK0FDX0NPTkZJR19GSUxFUyhbIiR7Y29uZmlnX2ZpbGV9IjoiJHtjb25maWdfaW59Il0pCiBBQ19PVVRQVVQKLQotCi0jIyBDbGVhbnVwCi1ybSAtZiAiJHtjb25maWdfYXBwZW5kfSIKZGlmZiAtLWdpdCBhL2Nvbm5lY3QuYyBiL2Nvbm5lY3QuYwppbmRleCA5MTJjZGRlLi5mNTdlZmQwIDEwMDY0NAotLS0gYS9jb25uZWN0LmMKKysrIGIvY29ubmVjdC5jCkBAIC00OSwyNiArNDksNDIgQEAKIAlleHRyYS0+bnIrKzsKIH0KIAorc3RhdGljIHZvaWQgZGllX2luaXRpYWxfY29udGFjdChpbnQgZ290X2F0X2xlYXN0X29uZV9oZWFkKQoreworCWlmIChnb3RfYXRfbGVhc3Rfb25lX2hlYWQpCisJCWRpZSgiVGhlIHJlbW90ZSBlbmQgaHVuZyB1cCB1cG9uIGluaXRpYWwgY29udGFjdCIpOworCWVsc2UKKwkJZGllKCJDb3VsZCBub3QgcmVhZCBmcm9tIHJlbW90ZSByZXBvc2l0b3J5LlxuXG4iCisJCSAgICAiUGxlYXNlIG1ha2Ugc3VyZSB5b3UgaGF2ZSB0aGUgY29ycmVjdCBhY2Nlc3MgcmlnaHRzXG4iCisJCSAgICAiYW5kIHRoZSByZXBvc2l0b3J5IGV4aXN0cy4iKTsKK30KKwogLyoKICAqIFJlYWQgYWxsIHRoZSByZWZzIGZyb20gdGhlIG90aGVyIGVuZAogICovCi1zdHJ1Y3QgcmVmICoqZ2V0X3JlbW90ZV9oZWFkcyhpbnQgaW4sIHN0cnVjdCByZWYgKipsaXN0LAotCQkJICAgICAgdW5zaWduZWQgaW50IGZsYWdzLAorc3RydWN0IHJlZiAqKmdldF9yZW1vdGVfaGVhZHMoaW50IGluLCBjaGFyICpzcmNfYnVmLCBzaXplX3Qgc3JjX2xlbiwKKwkJCSAgICAgIHN0cnVjdCByZWYgKipsaXN0LCB1bnNpZ25lZCBpbnQgZmxhZ3MsCiAJCQkgICAgICBzdHJ1Y3QgZXh0cmFfaGF2ZV9vYmplY3RzICpleHRyYV9oYXZlKQogeworCWludCBnb3RfYXRfbGVhc3Rfb25lX2hlYWQgPSAwOworCiAJKmxpc3QgPSBOVUxMOwogCWZvciAoOzspIHsKIAkJc3RydWN0IHJlZiAqcmVmOwogCQl1bnNpZ25lZCBjaGFyIG9sZF9zaGExWzIwXTsKLQkJc3RhdGljIGNoYXIgYnVmZmVyWzEwMDBdOwogCQljaGFyICpuYW1lOwogCQlpbnQgbGVuLCBuYW1lX2xlbjsKKwkJY2hhciAqYnVmZmVyID0gcGFja2V0X2J1ZmZlcjsKIAotCQlsZW4gPSBwYWNrZXRfcmVhZF9saW5lKGluLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKwkJbGVuID0gcGFja2V0X3JlYWQoaW4sICZzcmNfYnVmLCAmc3JjX2xlbiwKKwkJCQkgIHBhY2tldF9idWZmZXIsIHNpemVvZihwYWNrZXRfYnVmZmVyKSwKKwkJCQkgIFBBQ0tFVF9SRUFEX0dFTlRMRV9PTl9FT0YgfAorCQkJCSAgUEFDS0VUX1JFQURfQ0hPTVBfTkVXTElORSk7CisJCWlmIChsZW4gPCAwKQorCQkJZGllX2luaXRpYWxfY29udGFjdChnb3RfYXRfbGVhc3Rfb25lX2hlYWQpOworCiAJCWlmICghbGVuKQogCQkJYnJlYWs7Ci0JCWlmIChidWZmZXJbbGVuLTFdID09ICdcbicpCi0JCQlidWZmZXJbLS1sZW5dID0gMDsKIAogCQlpZiAobGVuID4gNCAmJiAhcHJlZml4Y21wKGJ1ZmZlciwgIkVSUiAiKSkKIAkJCWRpZSgicmVtb3RlIGVycm9yOiAlcyIsIGJ1ZmZlciArIDQpOwpAQCAtOTUsMTYgKzExMSwxMiBAQAogCQloYXNoY3B5KHJlZi0+b2xkX3NoYTEsIG9sZF9zaGExKTsKIAkJKmxpc3QgPSByZWY7CiAJCWxpc3QgPSAmcmVmLT5uZXh0OworCQlnb3RfYXRfbGVhc3Rfb25lX2hlYWQgPSAxOwogCX0KIAlyZXR1cm4gbGlzdDsKIH0KIAotaW50IHNlcnZlcl9zdXBwb3J0cyhjb25zdCBjaGFyICpmZWF0dXJlKQotewotCXJldHVybiAhIXBhcnNlX2ZlYXR1cmVfcmVxdWVzdChzZXJ2ZXJfY2FwYWJpbGl0aWVzLCBmZWF0dXJlKTsKLX0KLQotY29uc3QgY2hhciAqcGFyc2VfZmVhdHVyZV9yZXF1ZXN0KGNvbnN0IGNoYXIgKmZlYXR1cmVfbGlzdCwgY29uc3QgY2hhciAqZmVhdHVyZSkKK2NvbnN0IGNoYXIgKnBhcnNlX2ZlYXR1cmVfdmFsdWUoY29uc3QgY2hhciAqZmVhdHVyZV9saXN0LCBjb25zdCBjaGFyICpmZWF0dXJlLCBpbnQgKmxlbnApCiB7CiAJaW50IGxlbjsKIApAQCAtMTE2LDE0ICsxMjgsNDYgQEAKIAkJY29uc3QgY2hhciAqZm91bmQgPSBzdHJzdHIoZmVhdHVyZV9saXN0LCBmZWF0dXJlKTsKIAkJaWYgKCFmb3VuZCkKIAkJCXJldHVybiBOVUxMOwotCQlpZiAoKGZlYXR1cmVfbGlzdCA9PSBmb3VuZCB8fCBpc3NwYWNlKGZvdW5kWy0xXSkpICYmCi0JCSAgICAoIWZvdW5kW2xlbl0gfHwgaXNzcGFjZShmb3VuZFtsZW5dKSB8fCBmb3VuZFtsZW5dID09ICc9JykpCi0JCQlyZXR1cm4gZm91bmQ7CisJCWlmIChmZWF0dXJlX2xpc3QgPT0gZm91bmQgfHwgaXNzcGFjZShmb3VuZFstMV0pKSB7CisJCQljb25zdCBjaGFyICp2YWx1ZSA9IGZvdW5kICsgbGVuOworCQkJLyogZmVhdHVyZSB3aXRoIG5vIHZhbHVlIChlLmcuLCAidGhpbi1wYWNrIikgKi8KKwkJCWlmICghKnZhbHVlIHx8IGlzc3BhY2UoKnZhbHVlKSkgeworCQkJCWlmIChsZW5wKQorCQkJCQkqbGVucCA9IDA7CisJCQkJcmV0dXJuIHZhbHVlOworCQkJfQorCQkJLyogZmVhdHVyZSB3aXRoIGEgdmFsdWUgKGUuZy4sICJhZ2VudD1naXQvMS4yLjMiKSAqLworCQkJZWxzZSBpZiAoKnZhbHVlID09ICc9JykgeworCQkJCXZhbHVlKys7CisJCQkJaWYgKGxlbnApCisJCQkJCSpsZW5wID0gc3RyY3Nwbih2YWx1ZSwgIiBcdFxuIik7CisJCQkJcmV0dXJuIHZhbHVlOworCQkJfQorCQkJLyoKKwkJCSAqIG90aGVyd2lzZSB3ZSBtYXRjaGVkIGEgc3Vic3RyaW5nIG9mIGFub3RoZXIgZmVhdHVyZTsKKwkJCSAqIGtlZXAgbG9va2luZworCQkJICovCisJCX0KIAkJZmVhdHVyZV9saXN0ID0gZm91bmQgKyAxOwogCX0KIAlyZXR1cm4gTlVMTDsKIH0KIAoraW50IHBhcnNlX2ZlYXR1cmVfcmVxdWVzdChjb25zdCBjaGFyICpmZWF0dXJlX2xpc3QsIGNvbnN0IGNoYXIgKmZlYXR1cmUpCit7CisJcmV0dXJuICEhcGFyc2VfZmVhdHVyZV92YWx1ZShmZWF0dXJlX2xpc3QsIGZlYXR1cmUsIE5VTEwpOworfQorCitjb25zdCBjaGFyICpzZXJ2ZXJfZmVhdHVyZV92YWx1ZShjb25zdCBjaGFyICpmZWF0dXJlLCBpbnQgKmxlbikKK3sKKwlyZXR1cm4gcGFyc2VfZmVhdHVyZV92YWx1ZShzZXJ2ZXJfY2FwYWJpbGl0aWVzLCBmZWF0dXJlLCBsZW4pOworfQorCitpbnQgc2VydmVyX3N1cHBvcnRzKGNvbnN0IGNoYXIgKmZlYXR1cmUpCit7CisJcmV0dXJuICEhc2VydmVyX2ZlYXR1cmVfdmFsdWUoZmVhdHVyZSwgTlVMTCk7Cit9CisKIGVudW0gcHJvdG9jb2wgewogCVBST1RPX0xPQ0FMID0gMSwKIAlQUk9UT19TU0gsCkBAIC01MzYsNyArNTgwLDcgQEAKIAkgKiBBZGQgc3VwcG9ydCBmb3Igc3NoIHBvcnQ6IHNzaDovL2hvc3QueHk6PHBvcnQ+Ly4uLgogCSAqLwogCWlmIChwcm90b2NvbCA9PSBQUk9UT19TU0ggJiYgaG9zdCAhPSB1cmwpCi0JCXBvcnQgPSBnZXRfcG9ydChob3N0KTsKKwkJcG9ydCA9IGdldF9wb3J0KGVuZCk7CiAKIAlpZiAocHJvdG9jb2wgPT0gUFJPVE9fR0lUKSB7CiAJCS8qIFRoZXNlIHVuZGVybHlpbmcgY29ubmVjdGlvbiBjb21tYW5kcyBkaWUoKSBpZiB0aGV5CmRpZmYgLS1naXQgYS9jb250cmliL2NpYWJvdC9JTlNUQUxMIGIvY29udHJpYi9jaWFib3QvSU5TVEFMTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjIyOTYxCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9jaWFib3QvSU5TVEFMTApAQCAtMCwwICsxLDU0IEBACis9IEluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgPQorCitUd28gc2NyaXB0cyBhcmUgaW5jbHVkZWQuICBUaGUgUHl0aG9uIG9uZSAoY2lhYm90LnB5KSBpcyBmYXN0ZXIgYW5kCittb3JlIGNhcGFibGU7IHRoZSBzaGVsbCBvbmUgKGNpYWJvdC5zaCkgaXMgYSBmYWxsYmFjayBpbiBjYXNlIFB5dGhvbgorZ2l2ZXMgeW91ciBnaXQgaG9zdGluZyBzaXRlIGluZGlnZXN0aW9uLiAoSSBrbm93IG9mIG5vIHN1Y2ggc2l0ZXMuKQorCitJdCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvIG1vZGlmeSB0aGUgc2NyaXB0IGluIG9yZGVyIHRvIHB1dCBpdAoraW4gcGxhY2U7IGluIGZhY3QsIHRoaXMgaXMgbm93IGRpc2NvdXJhZ2VkLiBJdCBpcyBlbnRpcmVseQorY29uZmlndXJhYmxlIHdpdGggdGhlIGZvbGxvd2luZyBnaXQgY29uZmlnIHZhcmlhYmxlczoKKworY2lhYm90LnByb2plY3QgPSBuYW1lIG9mIHRoZSBwcm9qZWN0CitjaWFib3QucmVwbyA9IG5hbWUgb2YgdGhlIHByb2plY3QgcmVwbyBmb3IgZ2l0d2ViL2NnaXQgcHVycG9zZXMKK2NpYWJvdC54bWxycGMgID0gaWYgdHJ1ZSwgc2hpcCBub3RpZmljYXRpb25zIHZpYSBYTUwtUlBDCitjaWFib3QucmV2Zm9ybWF0ID0gZm9ybWF0IGluIHdoaWNoIHRoZSByZXZpc2lvbiBpcyBzaG93bgorCitUaGUgcmV2Zm9ybWF0IHZhcmlhYmxlIG1heSBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzCityYXcgLT4gZnVsbCBoZXggSUQgb2YgY29tbWl0CitzaG9ydCAtPiBmaXJzdCAxMiBjaGFycyBvZiBoZXggSUQKK2Rlc2NyaWJlIC0+IGRlc2NyaWJlIHJlbGF0aXZlIHRvIGxhc3QgdGFnLCBmYWxsaW5nIGJhY2sgdG8gc2hvcnQKKworY2lhYm90LnByb2plY3QgZGVmYXVsdHMgdG8gdGhlIGRpcmVjdG9yeSBuYW1lIG9mIHRoZSByZXBvc2l0b3J5IHRvcGxldmVsLgorY2lhYm90LnJlcG8gZGVmYXVsdHMgdG8gY2lhYm90LnByb2plY3QgbG93ZXJjYXNlZC4KK2NpYWJvdC54bWxycGMgZGVmYXVsdHMgdG8gVHJ1ZQorY2lhYm90LnJldmZvcm1hdCBkZWZhdWx0cyB0byAnZGVzY3JpYmUnLgorCitUaGlzIG1lYW5zIHRoYXQgaW4gdGhlIG5vcm1hbCBjYXNlIHlvdSBuZWVkIG5vdCBkbyBhbnkgY29uZmlndXJhdGlvbiBhdCBhbGwsCitob3dldmVyIHNldHRpbmcgY2lhYm90LnByb2plY3Qgd2lsbCBhbGxvdyB0aGUgaG9vayB0byBydW4gc2xpZ2h0bHkgZmFzdGVyLgorCitPbmNlIHlvdSd2ZSBzZXQgdGhlc2UgdmFyaWFibGVzLCB0cnkgeW91ciBzY3JpcHQgd2l0aCAtbiB0byBzZWUgdGhlCitub3RpZmljYXRpb24gbWVzc2FnZSBkdW1wZWQgdG8gc3Rkb3V0IGFuZCB2ZXJpZnkgdGhhdCBpdCBsb29rcyBzYW5lLgorCitUbyBsaXZlLXRlc3QgdGhlc2Ugc2NyaXB0cywgeW91ciBwcm9qZWN0IG5lZWRzIHRvIGhhdmUgYmVlbiByZWdpc3RlcmVkIHdpdGgKK3RoZSBDSUEgc2l0ZS4gIEhlcmUgYXJlIHRoZSBzdGVwczoKKworMS4gT3BlbiBhbiBJUkMgd2luZG93IG9uIGlyYzovL2ZyZWVub2RlL2NvbW1pdHMgb3IgeW91ciByZWdpc3RlcmVkCisgICBwcm9qZWN0IElSQyBjaGFubmVsLgorCisyLiBSdW4gY2lhYm90LnB5IGFuZC9vciBjaWFib3Quc2ggZnJvbSBhbnkgZGlyZWN0b3J5IHVuZGVyIGdpdAorICAgY29udHJvbC4KKworWW91IHNob3VsZCBzZWUgYSBub3RpZmljYXRpb24gb24gdGhlIGNoYW5uZWwgZm9yIHlvdXIgbW9zdCByZWNlbnQgY29tbWl0LgorCitBZnRlciB2ZXJpZnlpbmcgY29ycmVjdCBmdW5jdGlvbiwgaW5zdGFsbCBvbmUgb2YgdGhlc2Ugc2NyaXB0cyBlaXRoZXIKK2luIGEgcG9zdC1jb21taXQgaG9vayBvciBpbiBhbiB1cGRhdGUgaG9vay4KKworSW4gcG9zdC1jb21taXQsIHJ1biBpdCB3aXRob3V0IGFyZ3VtZW50cy4gSXQgd2lsbCBxdWVyeSBmb3IKK2N1cnJlbnQgSEVBRCBhbmQgdGhlIGxhdGVzdCBjb21taXQgSUQgdG8gZ2V0IHRoZSBpbmZvcm1hdGlvbiBpdAorbmVlZHMuCisKK0luIHVwZGF0ZSwgY2FsbCBpdCB3aXRoIGEgcmVmbmFtZSBmb2xsb3dlZCBieSBhIGxpc3Qgb2YgY29tbWl0czoKK1lvdSB3YW50IHRvIHJldmVyc2UgdGhlIG9yZGVyIGdpdCByZXYtbGlzdCBlbWl0cyBiZWNhdXNlIGl0IGxpc3RzCitmcm9tIG1vc3QgcmVjZW50IHRvIG9sZGVzdC4KKworL3BhdGgvdG8vY2lhYm90LnB5ICR7cmVmbmFtZX0gJChnaXQgcmV2LWxpc3QgJHtvbGRoZWFkfS4uJHtuZXdoZWFkfSB8IHRhYykKZGlmZiAtLWdpdCBhL2NvbnRyaWIvY2lhYm90L1JFQURNRSBiL2NvbnRyaWIvY2lhYm90L1JFQURNRQppbmRleCAzYjkxNmFjLi4yZGZlMWY5IDEwMDY0NAotLS0gYS9jb250cmliL2NpYWJvdC9SRUFETUUKKysrIGIvY29udHJpYi9jaWFib3QvUkVBRE1FCkBAIC04LDUgKzgsNCBAQAogYmV0dGVyIGRvY3VtZW50ZWQuICBUaGUgc2hlbGwgdmVyc2lvbiBpcyBtYWludGFpbmVkIG9ubHkgYXMgYSBmYWxsYmFjawogZm9yIHVzZSBvbiBob3N0aW5nIHNpdGVzIHRoYXQgZG9uJ3QgcGVybWl0IFB5dGhvbiBob29rIHNjcmlwdHMuCiAKLVlvdSB3aWxsIGZpbmQgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucyBmb3IgZWFjaCBzY3JpcHQgaW4gaXRzIGNvbW1lbnQKLWhlYWRlci4KK1NlZSB0aGUgZmlsZSBJTlNUQUxMIGZvciBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zLgpkaWZmIC0tZ2l0IGEvY29udHJpYi9jaWFib3QvY2lhYm90LnB5IGIvY29udHJpYi9jaWFib3QvY2lhYm90LnB5CmluZGV4IDk3NzVkZmYuLjM2YjU2NjUgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvY2lhYm90L2NpYWJvdC5weQorKysgYi9jb250cmliL2NpYWJvdC9jaWFib3QucHkKQEAgLTEwLDQ0ICsxMCw1MSBAQAogIyB1c2FnZTogY2lhYm90LnB5IFstVl0gWy1uXSBbLXAgcHJvamVjdG5hbWVdICBbcmVmbmFtZSBbY29tbWl0cy4uLl1dCiAjCiAjIFRoaXMgc2NyaXB0IGlzIG1lYW50IHRvIGJlIHJ1biBlaXRoZXIgaW4gYSBwb3N0LWNvbW1pdCBob29rIG9yIGluIGFuCi0jIHVwZGF0ZSBob29rLiAgSWYgdGhlcmUncyBub3RoaW5nIHVudXN1YWwgYWJvdXQgeW91ciBob3N0aW5nIHNldHVwLAotIyB5b3UgY2FuIHNwZWNpZnkgdGhlIHByb2plY3QgbmFtZSB3aXRoIGEgLXAgb3B0aW9uIGFuZCBhdm9pZCBoYXZpbmcKLSMgdG8gbW9kaWZ5IHRoaXMgc2NyaXB0LiAgVHJ5IGl0IHdpdGggLW4gdG8gc2VlIHRoZSBub3RpZmljYXRpb24gbWFpbAotIyBkdW1wZWQgdG8gc3Rkb3V0IGFuZCB2ZXJpZnkgdGhhdCBpdCBsb29rcyBzYW5lLiBXaXRoIC1WIGl0IGR1bXBzIGl0cwotIyB2ZXJzaW9uIGFuZCBleGl0cy4KKyMgdXBkYXRlIGhvb2suIFRyeSBpdCB3aXRoIC1uIHRvIHNlZSB0aGUgbm90aWZpY2F0aW9uIG1haWwgZHVtcGVkIHRvCisjIHN0ZG91dCBhbmQgdmVyaWZ5IHRoYXQgaXQgbG9va3Mgc2FuZS4gV2l0aCAtViBpdCBkdW1wcyBpdHMgdmVyc2lvbgorIyBhbmQgZXhpdHMuCiAjCi0jIEluIHBvc3QtY29tbWl0LCBydW4gaXQgd2l0aG91dCBhcmd1bWVudHMgKG90aGVyIHRoYW4gcG9zc2libHkgYSAtcAotIyBvcHRpb24pLiBJdCB3aWxsIHF1ZXJ5IGZvciBjdXJyZW50IEhFQUQgYW5kIHRoZSBsYXRlc3QgY29tbWl0IElEIHRvCi0jIGdldCB0aGUgaW5mb3JtYXRpb24gaXQgbmVlZHMuCisjIEluIHBvc3QtY29tbWl0LCBydW4gaXQgd2l0aG91dCBhcmd1bWVudHMuIEl0IHdpbGwgcXVlcnkgZm9yCisjIGN1cnJlbnQgSEVBRCBhbmQgdGhlIGxhdGVzdCBjb21taXQgSUQgdG8gZ2V0IHRoZSBpbmZvcm1hdGlvbiBpdAorIyBuZWVkcy4KICMKICMgSW4gdXBkYXRlLCBjYWxsIGl0IHdpdGggYSByZWZuYW1lIGZvbGxvd2VkIGJ5IGEgbGlzdCBvZiBjb21taXRzOgotIyBZb3Ugd2FudCB0byByZXZlcnNlIHRoZSBvcmRlciBnaXQgcmV2LWxpc3QgZW1pdHMgYmVjeGF1c2UgaXQgbGlzdHMKKyMgWW91IHdhbnQgdG8gcmV2ZXJzZSB0aGUgb3JkZXIgZ2l0IHJldi1saXN0IGVtaXRzIGJlY2F1c2UgaXQgbGlzdHMKICMgZnJvbSBtb3N0IHJlY2VudCB0byBvbGRlc3QuCiAjCiAjIC9wYXRoL3RvL2NpYWJvdC5weSAke3JlZm5hbWV9ICQoZ2l0IHJldi1saXN0ICR7b2xkaGVhZH0uLiR7bmV3aGVhZH0gfCB0YWMpCiAjCi0jIE5vdGU6IHRoaXMgc2NyaXB0IHVzZXMgbWFpbCwgbm90IFhNTC1SUEMsIGluIG9yZGVyIHRvIGF2b2lkIHN0YWxsaW5nCi0jIHVudGlsIHRpbWVvdXQgd2hlbiB0aGUgQ0lBIFhNTC1SUEMgc2VydmVyIGlzIGRvd24uCisjIENvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGFmZmVjdGluZyB0aGlzIHNjcmlwdDoKKyMKKyMgY2lhYm90LnByb2plY3QgPSBuYW1lIG9mIHRoZSBwcm9qZWN0CisjIGNpYWJvdC5yZXBvID0gbmFtZSBvZiB0aGUgcHJvamVjdCByZXBvIGZvciBnaXR3ZWIvY2dpdCBwdXJwb3NlcworIyBjaWFib3QueG1scnBjICA9IGlmIHRydWUgKGRlZmF1bHQpLCBzaGlwIG5vdGlmaWNhdGlvbnMgdmlhIFhNTC1SUEMKKyMgY2lhYm90LnJldmZvcm1hdCA9IGZvcm1hdCBpbiB3aGljaCB0aGUgcmV2aXNpb24gaXMgc2hvd24KKyMKKyMgY2lhYm90LnByb2plY3QgZGVmYXVsdHMgdG8gdGhlIGRpcmVjdG9yeSBuYW1lIG9mIHRoZSByZXBvc2l0b3J5IHRvcGxldmVsLgorIyBjaWFib3QucmVwbyBkZWZhdWx0cyB0byBjaWFib3QucHJvamVjdCBsb3dlcmNhc2VkLgorIworIyBUaGlzIG1lYW5zIHRoYXQgaW4gdGhlIG5vcm1hbCBjYXNlIHlvdSBuZWVkIG5vdCBkbyBhbnkgY29uZmlndXJhdGlvbiBhdCBhbGwsCisjIGJ1dCBzZXR0aW5nIHRoZSBwcm9qZWN0IG5hbWUgd2lsbCBzcGVlZCBpdCB1cCBzbGlnaHRseS4KKyMKKyMgVGhlIHJldmZvcm1hdCB2YXJpYWJsZSBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlcworIyByYXcgLT4gZnVsbCBoZXggSUQgb2YgY29tbWl0CisjIHNob3J0IC0+IGZpcnN0IDEyIGNoYXJzIG9mIGhleCBJRAorIyBkZXNjcmliZSA9IC0+IGRlc2NyaWJlIHJlbGF0aXZlIHRvIGxhc3QgdGFnLCBmYWxsaW5nIGJhY2sgdG8gc2hvcnQKKyMgVGhlIGRlZmF1bHQgaXMgJ2Rlc2NyaWJlJy4KKyMKKyMgTm90ZTogdGhlIENJQSBwcm9qZWN0IG5vdyBzYXlzIG9ubHkgWE1MLVJQQyBpcyByZWxpYWJsZSwgc28KKyMgd2UgZGVmYXVsdCB0byB0aGF0LgogIwogCi0jCi0jIFRoZSBwcm9qZWN0IGFzIGtub3duIHRvIENJQS4gWW91IHdpbGwgZWl0aGVyIHdhbnQgdG8gY2hhbmdlIHRoaXMKLSMgb3IgaW52b2tlIHRoZSBzY3JpcHQgd2l0aCBhIC1wIG9wdGlvbiB0byBzZXQgaXQuCi0jCi1wcm9qZWN0PU5vbmUKK2ltcG9ydCBzeXMKK2lmIHN5cy5oZXh2ZXJzaW9uIDwgMHgwMjAwMDAwMDoKKyAgICAgICAgIyBUaGUgbGltaXRlciBpcyB0aGUgeG1sLnNheCBtb2R1bGUKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiY2lhYm90LnB5OiByZXF1aXJlcyBQeXRob24gMi4wLjAgb3IgbGF0ZXIuXG4iKQorICAgICAgICBzeXMuZXhpdCgxKQogCi0jCi0jIFlvdSBtYXkgbm90IG5lZWQgdG8gY2hhbmdlIHRoZXNlOgotIwotaW1wb3J0IG9zLCBzeXMsIGNvbW1hbmRzLCBzb2NrZXQsIHVybGxpYgotCi0jIE5hbWUgb2YgdGhlIHJlcG9zaXRvcnkuCi0jIFlvdSBjYW4gaGFyZHdpcmUgdGhpcyB0byBtYWtlIHRoZSBzY3JpcHQgZmFzdGVyLgotcmVwbyA9IG9zLnBhdGguYmFzZW5hbWUob3MuZ2V0Y3dkKCkpCi0KLSMgRnVsbHktcXVhbGlmaWVkIGRvbWFpbiBuYW1lIG9mIHRoaXMgaG9zdC4KLSMgWW91IGNhbiBoYXJkd2lyZSB0aGlzIHRvIG1ha2UgdGhlIHNjcmlwdCBmYXN0ZXIuCi1ob3N0ID0gc29ja2V0LmdldGZxZG4oKQoraW1wb3J0IG9zLCBjb21tYW5kcywgc29ja2V0LCB1cmxsaWIKK2Zyb20geG1sLnNheC5zYXh1dGlscyBpbXBvcnQgZXNjYXBlCiAKICMgQ2hhbmdlc2V0IFVSTCBwcmVmaXggZm9yIHlvdXIgcmVwbzogd2hlbiB0aGUgY29tbWl0IElEIGlzIGFwcGVuZGVkCiAjIHRvIHRoaXMsIGl0IHNob3VsZCBwb2ludCBhdCBhIENHSSB0aGF0IHdpbGwgZGlzcGxheSB0aGUgY29tbWl0CkBAIC03Miw3ICs3OSw3IEBACiA8bWVzc2FnZT4KICAgPGdlbmVyYXRvcj4KICAgICA8bmFtZT5DSUEgUHl0aG9uIGNsaWVudCBmb3IgR2l0PC9uYW1lPgotICAgIDx2ZXJzaW9uPiUoZ2l0dmVyKXM8L3ZlcnNpb24+CisgICAgPHZlcnNpb24+JSh2ZXJzaW9uKXM8L3ZlcnNpb24+CiAgICAgPHVybD4lKGdlbmVyYXRvcilzPC91cmw+CiAgIDwvZ2VuZXJhdG9yPgogICA8c291cmNlPgpAQCAtOTgsMTkgKzEwNSwxOCBAQAogIyBObyB1c2VyLXNlcnZpY2VhYmxlIHBhcnRzIGJlbG93IHRoaXMgbGluZToKICMKIAotIyBBZGRyZXNzZXMgZm9yIHRoZSBlLW1haWwuIFRoZSBmcm9tIGFkZHJlc3MgaXMgYSBkdW1teSwgc2luY2UgQ0lBCi0jIHdpbGwgbmV2ZXIgcmVwbHkgdG8gdGhpcyBtYWlsLgotZnJvbWFkZHIgPSAiQ0lBQk9ULU5PUkVQTFlAIiArIGhvc3QKLXRvYWRkciA9ICJjaWFAY2lhLm5hdmkuY3giCisjIFdoZXJlIHRvIHNoaXAgZS1tYWlsIG5vdGlmaWNhdGlvbnMuCit0b2FkZHIgPSAiY2lhQGNpYS52YyIKIAogIyBJZGVudGlmeSB0aGUgZ2VuZXJhdG9yIHNjcmlwdC4KICMgU2hvdWxkIG9ubHkgY2hhbmdlIHdoZW4gdGhlIHNjcmlwdCBpdHNlbGYgZ2V0cyBhIG5ldyBob21lIGFuZCBtYWludGFpbmVyLgotZ2VuZXJhdG9yPSJodHRwOi8vd3d3LmNhdGIub3JnL35lc3IvY2lhYm90LnB5IgorZ2VuZXJhdG9yID0gImh0dHA6Ly93d3cuY2F0Yi5vcmcvfmVzci9jaWFib3QucHkiCit2ZXJzaW9uID0gIjMuNiIKIAogZGVmIGRvKGNvbW1hbmQpOgogICAgIHJldHVybiBjb21tYW5kcy5nZXRzdGF0dXNvdXRwdXQoY29tbWFuZClbMV0KIAotZGVmIHJlcG9ydChyZWZuYW1lLCBtZXJnZWQpOgorZGVmIHJlcG9ydChyZWZuYW1lLCBtZXJnZWQsIHhtbHJwYz1UcnVlKToKICAgICAiR2VuZXJhdGUgYSBjb21taXQgbm90aWZpY2F0aW9uIHRvIGJlIHJlcG9ydGVkIHRvIENJQSIKIAogICAgICMgVHJ5IHRvIHRpbnlmeSBhIHJlZmVyZW5jZSB0byBhIHdlYiB2aWV3IGZvciB0aGlzIGNvbW1pdC4KQEAgLTEyMSwzMiArMTI3LDI3IEBACiAKICAgICBicmFuY2ggPSBvcy5wYXRoLmJhc2VuYW1lKHJlZm5hbWUpCiAKLSAgICAjIENvbXB1dGUgYSBzaG9ydG5hbmUgZm9yIHRoZSByZXZpc2lvbgotICAgIHJldiA9IGRvKCJnaXQgZGVzY3JpYmUgJyIrIG1lcmdlZCArIicgMj4vZGV2L251bGwiKSBvciBtZXJnZWRbOjEyXQorICAgICMgQ29tcHV0ZSBhIGRlc2NyaXB0aW9uIGZvciB0aGUgcmV2aXNpb24KKyAgICBpZiByZXZmb3JtYXQgPT0gJ3Jhdyc6CisgICAgICAgIHJldiA9IG1lcmdlZAorICAgIGVsaWYgcmV2Zm9ybWF0ID09ICdzaG9ydCc6CisgICAgICAgIHJldiA9ICcnCisgICAgZWxzZTogIyByZXZmb3JtYXQgPT0gJ2Rlc2NyaWJlJworICAgICAgICByZXYgPSBkbygiZ2l0IGRlc2NyaWJlICVzIDI+L2Rldi9udWxsIiAlIG1lcmdlZCkKKyAgICBpZiBub3QgcmV2OgorICAgICAgICByZXYgPSBtZXJnZWRbOjEyXQogCi0gICAgIyBFeHRyYWN0IHRoZSBuZXRhLWluZm9ybWF0aW9uIGZvciB0aGUgY29tbWl0Ci0gICAgcmF3Y29tbWl0ID0gZG8oImdpdCBjYXQtZmlsZSBjb21taXQgIiArIG1lcmdlZCkKKyAgICAjIEV4dHJhY3QgdGhlIG1ldGEtaW5mb3JtYXRpb24gZm9yIHRoZSBjb21taXQKICAgICBmaWxlcz1kbygiZ2l0IGRpZmYtdHJlZSAtciAtLW5hbWUtb25seSAnIisgbWVyZ2VkICsiJyB8IHNlZCAtZSAnMWQnIC1lICdzLS4qLTxmaWxlPiY8L2ZpbGU+LSciKQotICAgIGluaGVhZGVyID0gVHJ1ZQotICAgIGhlYWRlcnMgPSB7fQotICAgIGxvZ21zZyA9ICIiCi0gICAgZm9yIGxpbmUgaW4gcmF3Y29tbWl0LnNwbGl0KCJcbiIpOgotICAgICAgICBpZiBpbmhlYWRlcjoKLSAgICAgICAgICAgIGlmIGxpbmU6Ci0gICAgICAgICAgICAgICAgZmllbGRzID0gbGluZS5zcGxpdCgpCi0gICAgICAgICAgICAgICAgaGVhZGVyc1tmaWVsZHNbMF1dID0gIiAiLmpvaW4oZmllbGRzWzE6XSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaW5oZWFkZXIgPSBGYWxzZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nbXNnID0gbGluZQotICAgICAgICAgICAgYnJlYWsKLSAgICAoYXV0aG9yLCB0cykgPSBoZWFkZXJzWyJhdXRob3IiXS5zcGxpdCgiPiIpCisgICAgbWV0YWluZm8gPSBkbygiZ2l0IGxvZyAtMSAnLS1wcmV0dHk9Zm9ybWF0OiVhbiA8JWFlPiVuJWF0JW4lcycgIiArIG1lcmdlZCkKKyAgICAoYXV0aG9yLCB0cywgbG9nbXNnKSA9IG1ldGFpbmZvLnNwbGl0KCJcbiIpCisgICAgbG9nbXNnID0gZXNjYXBlKGxvZ21zZykKIAotICAgICMgVGhpcyBkaXNjYXJkcyB0aGUgcGFydCBvZiB0aGUgYXV0aG9ycyBhZGRyc3NzIGFmdGVyIEAuCi0gICAgIyBNaWdodCBiZSBibmljZWNlIHRvIHNoaXAgdGhlIGZ1bGwgZW1haWwgYWRkcmVzcywgaWYgbm90CisgICAgIyBUaGlzIGRpc2NhcmRzIHRoZSBwYXJ0IG9mIHRoZSBhdXRob3IncyBhZGRyZXNzIGFmdGVyIEAuCisgICAgIyBNaWdodCBiZSBiZSBuaWNlIHRvIHNoaXAgdGhlIGZ1bGwgZW1haWwgYWRkcmVzcywgaWYgbm90CiAgICAgIyBmb3Igc3BhbW1lcnMnIGFkZHJlc3MgaGFydmVzdGVycyAtIGdldHRpbmcgdGhpcyB3cm9uZwogICAgICMgd291bGQgbWFrZSB0aGUgZnJlZW5vZGUgI2NvbW1pdHMgY2hhbm5lbCBpbnRvIGhhcnZlc3RlciBoZWF2ZW4uCi0gICAgYXV0aG9yID0gYXV0aG9yLnJlcGxhY2UoIjwiLCAiIikuc3BsaXQoIkAiKVswXS5zcGxpdCgpWy0xXQorICAgIGF1dGhvciA9IGVzY2FwZShhdXRob3IucmVwbGFjZSgiPCIsICIiKS5zcGxpdCgiQCIpWzBdLnNwbGl0KClbLTFdKQogCiAgICAgIyBUaGlzIGlnbm9yZXMgdGhlIHRpbWV6b25lLiAgTm90IGNsZWFyIHdoYXQgdG8gZG8gd2l0aCBpdC4uLgogICAgIHRzID0gdHMuc3RyaXAoKS5zcGxpdCgpWzBdCkBAIC0xNTUsOCArMTU2LDcgQEAKICAgICBjb250ZXh0LnVwZGF0ZShnbG9iYWxzKCkpCiAKICAgICBvdXQgPSB4bWwgJSBjb250ZXh0Ci0KLSAgICBtZXNzYWdlID0gJycnXAorICAgIG1haWwgPSAnJydcCiBNZXNzYWdlLUlEOiA8JShtZXJnZWQpcy4lKGF1dGhvcilzQCUocHJvamVjdClzPgogRnJvbTogJShmcm9tYWRkcilzCiBUbzogJSh0b2FkZHIpcwpAQCAtMTY1LDM0ICsxNjUsNTYgQEAKIAogJShvdXQpcycnJyAlIGxvY2FscygpCiAKLSAgICByZXR1cm4gbWVzc2FnZQorICAgIGlmIHhtbHJwYzoKKyAgICAgICAgcmV0dXJuIG91dAorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBtYWlsCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaW1wb3J0IGdldG9wdAogCisgICAgIyBHZXQgYWxsIGNvbmZpZyB2YXJpYWJsZXMKKyAgICByZXZmb3JtYXQgPSBkbygiZ2l0IGNvbmZpZyAtLWdldCBjaWFib3QucmV2Zm9ybWF0IikKKyAgICBwcm9qZWN0ID0gZG8oImdpdCBjb25maWcgLS1nZXQgY2lhYm90LnByb2plY3QiKQorICAgIHJlcG8gPSBkbygiZ2l0IGNvbmZpZyAtLWdldCBjaWFib3QucmVwbyIpCisgICAgeG1scnBjID0gZG8oImdpdCBjb25maWcgLS1nZXQgY2lhYm90LnhtbHJwYyIpCisgICAgeG1scnBjID0gbm90ICh4bWxycGMgYW5kIHhtbHJwYyA9PSAiZmFsc2UiKQorCisgICAgaG9zdCA9IHNvY2tldC5nZXRmcWRuKCkKKyAgICBmcm9tYWRkciA9ICJDSUFCT1QtTk9SRVBMWUAiICsgaG9zdAorCiAgICAgdHJ5OgotICAgICAgICAob3B0aW9ucywgYXJndW1lbnRzKSA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAibnA6ViIpCisgICAgICAgIChvcHRpb25zLCBhcmd1bWVudHMpID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICJucDp4ViIpCiAgICAgZXhjZXB0IGdldG9wdC5HZXRvcHRFcnJvciwgbXNnOgogICAgICAgICBwcmludCAiY2lhYm90LnB5OiAiICsgc3RyKG1zZykKICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdCwgMQogCi0gICAgbWFpbGl0ID0gVHJ1ZQorICAgIG5vdGlmeSA9IFRydWUKICAgICBmb3IgKHN3aXRjaCwgdmFsKSBpbiBvcHRpb25zOgogICAgICAgICBpZiBzd2l0Y2ggPT0gJy1wJzoKICAgICAgICAgICAgIHByb2plY3QgPSB2YWwKICAgICAgICAgZWxpZiBzd2l0Y2ggPT0gJy1uJzoKLSAgICAgICAgICAgIG1haWxpdCA9IEZhbHNlCisgICAgICAgICAgICBub3RpZnkgPSBGYWxzZQorICAgICAgICBlbGlmIHN3aXRjaCA9PSAnLXgnOgorICAgICAgICAgICAgeG1scnBjID0gVHJ1ZQogICAgICAgICBlbGlmIHN3aXRjaCA9PSAnLVYnOgotICAgICAgICAgICAgcHJpbnQgImNpYWJvdC5weTogdmVyc2lvbiAzLjIiCisgICAgICAgICAgICBwcmludCAiY2lhYm90LnB5OiB2ZXJzaW9uIiwgdmVyc2lvbgogICAgICAgICAgICAgc3lzLmV4aXQoMCkKIAotICAgICMgQ291Z2ggYW5kIGRpZSBpZiB1c2VyIGhhcyBub3Qgc3BlY2lmaWVkIGEgcHJvamVjdAorICAgICMgVGhlIHByb2plY3QgdmFyaWFibGUgZGVmYXVsdHMgdG8gdGhlIG5hbWUgb2YgdGhlIHJlcG9zaXRvcnkgdG9wbGV2ZWwuCiAgICAgaWYgbm90IHByb2plY3Q6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoImNpYWJvdC5weTogbm8gcHJvamVjdCBzcGVjaWZpZWQsIGJhaWxpbmcgb3V0LlxuIikKLSAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgaGVyZSA9IG9zLmdldGN3ZCgpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oaGVyZSwgIi5naXQiKSk6CisgICAgICAgICAgICAgICAgcHJvamVjdCA9IG9zLnBhdGguYmFzZW5hbWUoaGVyZSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxpZiBoZXJlID09ICcvJzoKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJjaWFib3QucHk6IG5vIC5naXQgYmVsb3cgcm9vdCFcbiIpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgICAgIGhlcmUgPSBvcy5wYXRoLmRpcm5hbWUoaGVyZSkKIAotICAgICMgV2UnbGwgbmVlZCB0aGUgZ2l0IHZlcnNpb24gbnVtYmVyLgotICAgIGdpdHZlciA9IGRvKCJnaXQgLS12ZXJzaW9uIikuc3BsaXQoKVswXQorICAgIGlmIG5vdCByZXBvOgorICAgICAgICByZXBvID0gcHJvamVjdC5sb3dlcigpCiAKICAgICB1cmxwcmVmaXggPSB1cmxwcmVmaXggJSBnbG9iYWxzKCkKIApAQCAtMjA1LDE4ICsyMjcsMjkgQEAKICAgICAgICAgcmVmbmFtZSA9IGFyZ3VtZW50c1swXQogICAgICAgICBtZXJnZXMgPSBhcmd1bWVudHNbMTpdCiAKLSAgICBpZiBtYWlsaXQ6Ci0gICAgICAgIGltcG9ydCBzbXRwbGliCi0gICAgICAgIHNlcnZlciA9IHNtdHBsaWIuU01UUCgnbG9jYWxob3N0JykKKyAgICBpZiBub3RpZnk6CisgICAgICAgIGlmIHhtbHJwYzoKKyAgICAgICAgICAgIGltcG9ydCB4bWxycGNsaWIKKyAgICAgICAgICAgIHNlcnZlciA9IHhtbHJwY2xpYi5TZXJ2ZXIoJ2h0dHA6Ly9jaWEudmMvUlBDMicpOworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW1wb3J0IHNtdHBsaWIKKyAgICAgICAgICAgIHNlcnZlciA9IHNtdHBsaWIuU01UUCgnbG9jYWxob3N0JykKIAogICAgIGZvciBtZXJnZWQgaW4gbWVyZ2VzOgotICAgICAgICBtZXNzYWdlID0gcmVwb3J0KHJlZm5hbWUsIG1lcmdlZCkKLSAgICAgICAgaWYgbWFpbGl0OgotICAgICAgICAgICAgc2VydmVyLnNlbmRtYWlsKGZyb21hZGRyLCBbdG9hZGRyXSwgbWVzc2FnZSkKLSAgICAgICAgZWxzZToKKyAgICAgICAgbWVzc2FnZSA9IHJlcG9ydChyZWZuYW1lLCBtZXJnZWQsIHhtbHJwYykKKyAgICAgICAgaWYgbm90IG5vdGlmeToKICAgICAgICAgICAgIHByaW50IG1lc3NhZ2UKKyAgICAgICAgZWxpZiB4bWxycGM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyBSUEMgc2VydmVyIGlzIGZsYWt5LCB0aGlzIGNhbiBmYWlsIGR1ZSB0byB0aW1lb3V0LgorICAgICAgICAgICAgICAgIHNlcnZlci5odWIuZGVsaXZlcihtZXNzYWdlKQorICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciwgZToKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIlc1xuIiAlIGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZXJ2ZXIuc2VuZG1haWwoZnJvbWFkZHIsIFt0b2FkZHJdLCBtZXNzYWdlKQogCi0gICAgaWYgbWFpbGl0OgotICAgICAgICBzZXJ2ZXIucXVpdCgpCisgICAgaWYgbm90aWZ5OgorICAgICAgICBpZiBub3QgeG1scnBjOgorICAgICAgICAgICAgc2VydmVyLnF1aXQoKQogCiAjRW5kCmRpZmYgLS1naXQgYS9jb250cmliL2NpYWJvdC9jaWFib3Quc2ggYi9jb250cmliL2NpYWJvdC9jaWFib3Quc2gKaW5kZXggZWI4N2JiYS4uM2ZiYmM1MyAxMDA3NTUKLS0tIGEvY29udHJpYi9jaWFib3QvY2lhYm90LnNoCisrKyBiL2NvbnRyaWIvY2lhYm90L2NpYWJvdC5zaApAQCAtMyw2ICszLDggQEAKICMgQ29weXJpZ2h0IChjKSAyMDA2IEZlcm5hbmRvIEouIFBlcmVkYSA8ZmVyZHlAZ2VudG9vLm9yZz4KICMgQ29weXJpZ2h0IChjKSAyMDA4IE5hdGFuYWVsIENvcGEgPG5hdGFuYWVsLmNvcGFAZ21haWwuY29tPgogIyBDb3B5cmlnaHQgKGMpIDIwMTAgRXJpYyBTLiBSYXltb25kIDxlc3JAdGh5cnN1cy5jb20+CisjIEFzc2lzdGFuY2UgYW5kIHJldmlldyBieSBQZXRyIEJhdWRpcywgYXV0aG9yIG9mIGNpYWJvdC5wbCwKKyMgaXMgZ3JhdGVmdWxseSBhY2tub3dsZWRnZWQuCiAjCiAjIFRoaXMgaXMgYSB2ZXJzaW9uIDMueCBvZiBjaWFib3Quc2g7IHVzZSAtViB0byBmaW5kIHRoZSBleGFjdAogIyB2ZXJzaW9uLiAgVmVyc2lvbnMgMSBhbmQgMiB3ZXJlIHNoaXBwZWQgaW4gMjAwNiBhbmQgMjAwOCBhbmQgYXJlIG5vdApAQCAtMTEsNiArMTMsNyBAQAogIyBOb3RlOiBUaGlzIHNjcmlwdCBzaG91bGQgYmUgY29uc2lkZXJlZCBvYnNvbGV0ZS4KICMgVGhlcmUgaXMgYSBmYXN0ZXIsIGJldHRlci1kb2N1bWVudGVkIHJld3JpdGUgaW4gUHl0aG9uOiBmaW5kIGl0IGFzIGNpYWJvdC5weQogIyBVc2UgdGhpcyBvbmx5IGlmIHlvdXIgaG9zdGluZyBzaXRlIGZvcmJpZHMgUHl0aG9uIGhvb2tzLgorIyBJdCByZXF1aXJlczogZ2l0KDEpLCBob3N0bmFtZSgxKSwgY3V0KDEpLCBzZW5kbWFpbCgxKSwgYW5kIHdnZXQoMSkuCiAjCiAjIE9yaWdpbmFsbHkgYmFzZWQgb24gR2l0IGNpYWJvdC5wbCBieSBQZXRyIEJhdWRpcy4KICMgVGhpcyBzY3JpcHQgY29udGFpbnMgcG9yY2VsYWluIGFuZCBwb3JjZWxhaW4gYnlwcm9kdWN0cy4KQEAgLTE4LDE1ICsyMSwxMyBAQAogIyB1c2FnZTogY2lhYm90LnNoIFstVl0gWy1uXSBbLXAgcHJvamVjdG5hbWVdIFtyZWZuYW1lIGNvbW1pdF0KICMKICMgVGhpcyBzY3JpcHQgaXMgbWVhbnQgdG8gYmUgcnVuIGVpdGhlciBpbiBhIHBvc3QtY29tbWl0IGhvb2sgb3IgaW4gYW4KLSMgdXBkYXRlIGhvb2suICBJZiB0aGVyZSdzIG5vdGhpbmcgdW51c3VhbCBhYm91dCB5b3VyIGhvc3Rpbmcgc2V0dXAsCi0jIHlvdSBjYW4gc3BlY2lmeSB0aGUgcHJvamVjdCBuYW1lIHdpdGggYSAtcCBvcHRpb24gYW5kIGF2b2lkIGhhdmluZwotIyB0byBtb2RpZnkgdGhpcyBzY3JpcHQuICBUcnkgaXQgd2l0aCAtbiBmaXJzdCB0byBzZWUgdGhlIG5vdGlmaWNhdGlvbgotIyBtYWlsIGR1bXBlZCB0byBzdGRvdXQgYW5kIHZlcmlmeSB0aGF0IGl0IGxvb2tzIHNhbmUuICBVc2UgLVYgdG8gZHVtcAotIyB0aGUgdmVyc2lvbiBhbmQgZXhpdC4KKyMgdXBkYXRlIGhvb2suIFRyeSBpdCB3aXRoIC1uIHRvIHNlZSB0aGUgbm90aWZpY2F0aW9uIG1haWwgZHVtcGVkIHRvCisjIHN0ZG91dCBhbmQgdmVyaWZ5IHRoYXQgaXQgbG9va3Mgc2FuZS4gV2l0aCAtViBpdCBkdW1wcyBpdHMgdmVyc2lvbgorIyBhbmQgZXhpdHMuCiAjCi0jIEluIHBvc3QtY29tbWl0LCBydW4gaXQgd2l0aG91dCBhcmd1bWVudHMgKG90aGVyIHRoYW4gcG9zc2libHkgYSAtcAotIyBvcHRpb24pLiBJdCB3aWxsIHF1ZXJ5IGZvciBjdXJyZW50IEhFQUQgYW5kIHRoZSBsYXRlc3QgY29tbWl0IElEIHRvCi0jIGdldCB0aGUgaW5mb3JtYXRpb24gaXQgbmVlZHMuCisjIEluIHBvc3QtY29tbWl0LCBydW4gaXQgd2l0aG91dCBhcmd1bWVudHMuIEl0IHdpbGwgcXVlcnkgZm9yCisjIGN1cnJlbnQgSEVBRCBhbmQgdGhlIGxhdGVzdCBjb21taXQgSUQgdG8gZ2V0IHRoZSBpbmZvcm1hdGlvbiBpdAorIyBuZWVkcy4KICMKICMgSW4gdXBkYXRlLCB5b3UgaGF2ZSB0byBjYWxsIGl0IG9uY2UgcGVyIG1lcmdlZCBjb21taXQ6CiAjCkBAIC0zNCwzMyArMzUsNzYgQEAKICMgICAgICAgb2xkaGVhZD0kMgogIyAgICAgICBuZXdoZWFkPSQzCiAjICAgICAgIGZvciBtZXJnZWQgaW4gJChnaXQgcmV2LWxpc3QgJHtvbGRoZWFkfS4uJHtuZXdoZWFkfSB8IHRhYykgOyBkbwotIyAgICAgICAgICAgICAgIC9wYXRoL3RvL2NpYWJvdC5iYXNoICR7cmVmbmFtZX0gJHttZXJnZWR9CisjICAgICAgICAgICAgICAgL3BhdGgvdG8vY2lhYm90LnNoICR7cmVmbmFtZX0gJHttZXJnZWR9CiAjICAgICAgIGRvbmUKICMKLSMgVGhlIHJlYXNvbiBmb3IgdGhlIHRhYyBjYWxsIGlkcyB0aGF0IGdpdCByZXYtbGlzdCBlbWl0cyBjb21taXRzIGZyb20KKyMgVGhlIHJlYXNvbiBmb3IgdGhlIHRhYyBjYWxsIGlzIHRoYXQgZ2l0IHJldi1saXN0IGVtaXRzIGNvbW1pdHMgZnJvbQogIyBtb3N0IHJlY2VudCB0byBsZWFzdCAtIGJldHRlciB0byBzaGlwIG5vdGlmYWN0aW9ucyBmcm9tIG9sZGVzdCB0byBuZXdlc3QuCiAjCi0jIE5vdGU6IHRoaXMgc2NyaXB0IHVzZXMgbWFpbCwgbm90IFhNTC1SUEMsIGluIG9yZGVyIHRvIGF2b2lkIHN0YWxsaW5nCi0jIHVudGlsIHRpbWVvdXQgd2hlbiB0aGUgQ0lBIFhNTC1SUEMgc2VydmVyIGlzIGRvd24uCisjIENvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGFmZmVjdGluZyB0aGlzIHNjcmlwdDoKKyMKKyMgY2lhYm90LnByb2plY3QgPSBuYW1lIG9mIHRoZSBwcm9qZWN0CisjIGNpYWJvdC5yZXBvID0gbmFtZSBvZiB0aGUgcHJvamVjdCByZXBvIGZvciBnaXR3ZWIvY2dpdCBwdXJwb3NlcworIyBjaWFib3QucmV2Zm9ybWF0ID0gZm9ybWF0IGluIHdoaWNoIHRoZSByZXZpc2lvbiBpcyBzaG93bgorIworIyBjaWFib3QucHJvamVjdCBkZWZhdWx0cyB0byB0aGUgZGlyZWN0b3J5IG5hbWUgb2YgdGhlIHJlcG9zaXRvcnkgdG9wbGV2ZWwuCisjIGNpYWJvdC5yZXBvIGRlZmF1bHRzIHRvIGNpYWJvdC5wcm9qZWN0IGxvd2VyY2FzZWQuCisjCisjIFRoaXMgbWVhbnMgdGhhdCBpbiB0aGUgbm9ybWFsIGNhc2UgeW91IG5lZWQgbm90IGRvIGFueSBjb25maWd1cmF0aW9uIGF0IGFsbCwKKyMgYnV0IHNldHRpbmcgdGhlIHByb2plY3QgbmFtZSB3aWxsIHNwZWVkIGl0IHVwIHNsaWdodGx5LgorIworIyBUaGUgcmV2Zm9ybWF0IHZhcmlhYmxlIG1heSBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzCisjIHJhdyAtPiBmdWxsIGhleCBJRCBvZiBjb21taXQKKyMgc2hvcnQgLT4gZmlyc3QgMTIgY2hhcnMgb2YgaGV4IElECisjIGRlc2NyaWJlID0gLT4gZGVzY3JpYmUgcmVsYXRpdmUgdG8gbGFzdCB0YWcsIGZhbGxpbmcgYmFjayB0byBzaG9ydAorIyBUaGUgZGVmYXVsdCBpcyAnZGVzY3JpYmUnLgorIworIyBOb3RlOiB0aGUgc2hlbGwgYW5jZXN0b3JzIG9mIHRoaXMgc2NyaXB0IHVzZWQgbWFpbCwgbm90IFhNTC1SUEMsIGluCisjIG9yZGVyIHRvIGF2b2lkIHN0YWxsaW5nIHVudGlsIHRpbWVvdXQgd2hlbiB0aGUgQ0lBIFhNTC1SUEMgc2VydmVyIGlzCisjIGRvd24uIEl0IGlzIHVua25vd24gd2hldGhlciB0aGlzIGlzIHN0aWxsIGFuIGlzc3VlIGluIDIwMTAsIGJ1dAorIyBYTUwtUlBDIHdvdWxkIGJlIGFubm95aW5nIHRvIGRvIGZyb20gc2ggaW4gYW55IGNhc2UuIChYTUwtUlBDIGRvZXMKKyMgaGF2ZSB0aGUgYWR2YW50YWdlIHRoYXQgaXQgZ3VhcmFudGVlcyBub3RpZmljYXRpb24gb2YgbXVsdGlwbGUgY29tbWl0cworIyBzaHBwZWQgZnJvbSBhbiB1cGRhdGUgaW4gdGhlaXIgYWN0dWFsIG9yZGVyLikKICMKIAotIwotIyBUaGUgcHJvamVjdCBhcyBrbm93biB0byBDSUEuIFlvdSB3aWxsIGVpdGhlciB3YW50IHRvIGNoYW5nZSB0aGlzCi0jIG9yIHNldCB0aGUgcHJvamVjdCBuYW1lIHdpdGggYSAtcCBvcHRpb24uCi0jCi1wcm9qZWN0PQorIyBUaGUgcHJvamVjdCBhcyBrbm93biB0byBDSUEuIFlvdSBjYW4gc2V0IHRoaXMgd2l0aCBhIC1wIG9wdGlvbiwKKyMgb3IgbGV0IGl0IGRlZmF1bHQgdG8gdGhlIGRpcmVjdG9yeSBuYW1lIG9mIHRoZSByZXBvIHRvcGxldmVsLgorcHJvamVjdD0kKGdpdCBjb25maWcgLS1nZXQgY2lhYm90LnByb2plY3QpCiAKLSMKLSMgWW91IG1heSBub3QgbmVlZCB0byBjaGFuZ2UgdGhlc2U6Ci0jCitpZiBbIC16ICRwcm9qZWN0IF0KK3RoZW4KKyAgICBoZXJlPWBwd2RgOworICAgIHdoaWxlIDo7IGRvCisJaWYgWyAtZCAkaGVyZS8uZ2l0IF0KKwl0aGVuCisJICAgIHByb2plY3Q9YGJhc2VuYW1lICRoZXJlYAorCSAgICBicmVhaworCWVsaWYgWyAkaGVyZSA9ICcvJyBdCisJdGhlbgorCSAgICBlY2hvICJjaWFib3Quc2g6IG5vIC5naXQgYmVsb3cgcm9vdCEiCisJICAgIGV4aXQgMQorCWZpCisJaGVyZT1gZGlybmFtZSAkaGVyZWAKKyAgICBkb25lCitmaQogCi0jIE5hbWUgb2YgdGhlIHJlcG9zaXRvcnkuCi0jIFlvdSBjYW4gaGFyZHdpcmUgdGhpcyB0byBtYWtlIHRoZSBzY3JpcHQgZmFzdGVyLgotcmVwbz0iYGJhc2VuYW1lICR7UFdEfWAiCisjIE5hbWUgb2YgdGhlIHJlcG8gZm9yIGdpdHdlYi9jZ2l0IHB1cnBvc2VzCityZXBvPSQoZ2l0IGNvbmZpZyAtLWdldCBjaWFib3QucmVwbykKK1sgLXogJHJlcG9dICYmIHJlcG89JChlY2hvICIke3Byb2plY3R9IiB8IHRyICdbQS1aXScgJ1thLXpdJykKIAotIyBGdWxseSBxdWFsaWZpZWQgZG9tYWluIG5hbWUgb2YgdGhlIHJlcG8gaG9zdC4KLSMgWW91IGNhbiBoYXJkd2lyZSB0aGlzIHRvIG1ha2UgdGhlIHNjcmlwdCBmYXN0ZXIuCi1ob3N0PWBob3N0bmFtZSAtLWZxZG5gCisjIFdoYXQgcmV2aXNpb24gZm9ybWF0IGRvIHdlIHdhbnQgaW4gdGhlIHN1bW1hcnk/CityZXZmb3JtYXQ9JChnaXQgY29uZmlnIC0tZ2V0IGNpYWJvdC5yZXZmb3JtYXQpCisKKyMgRnVsbHkgcXVhbGlmaWVkIGRvbWFpbiBuYW1lIG9mIHRoZSByZXBvIGhvc3QuICBZb3UgY2FuIGhhcmR3aXJlIHRoaXMKKyMgdG8gbWFrZSB0aGUgc2NyaXB0IGZhc3Rlci4gVGhlIC1mIG9wdGlvbiB3b3JrcyB1bmRlciBMaW51eCBhbmQgRnJlZUJTRCwKKyMgYnV0IG5vdCBPcGVuQlNEIGFuZCBOZXRCU0QuIEJ1dCB1bmRlciBPcGVuQlNEIGFuZCBOZXRCU0QsCisjIGhvc3RuYW1lIHdpdGhvdXQgb3B0aW9ucyBnaXZlcyB0aGUgRlFETi4KK2lmIGhvc3RuYW1lIC1mID4vZGV2L251bGwgMj4mMQordGhlbgorICAgIGhvc3RuYW1lPWBob3N0bmFtZSAtZmAKK2Vsc2UKKyAgICBob3N0bmFtZT1gaG9zdG5hbWVgCitmaQogCiAjIENoYW5nZXNldCBVUkwgcHJlZml4IGZvciB5b3VyIHJlcG86IHdoZW4gdGhlIGNvbW1pdCBJRCBpcyBhcHBlbmRlZAogIyB0byB0aGlzLCBpdCBzaG91bGQgcG9pbnQgYXQgYSBDR0kgdGhhdCB3aWxsIGRpc3BsYXkgdGhlIGNvbW1pdApAQCAtNzMsMTMgKzExNywxNCBAQAogIyBZb3UgcHJvYmFibHkgd2lsbCBub3QgbmVlZCB0byBjaGFuZ2UgdGhlIGZvbGxvd2luZzoKICMKIAotIyBJZGVudGlmeSB0aGUgc2NyaXB0LiBTaG91bGQgY2hhbmdlIG9ubHkgd2hlbiB0aGUgc2NyaXB0IGl0c2VsZgotIyBnZXRzIGEgbmV3IGhvbWUgYW5kIG1haW50YWluZXIuCisjIElkZW50aWZ5IHRoZSBzY3JpcHQuIFRoZSAnZ2VuZXJhdG9yJyB2YXJpYWJsZSBzaG91bGQgY2hhbmdlIG9ubHkKKyMgd2hlbiB0aGUgc2NyaXB0IGl0c2VsZiBnZXRzIGEgbmV3IGhvbWUgYW5kIG1haW50YWluZXIuCiBnZW5lcmF0b3I9Imh0dHA6Ly93d3cuY2F0Yi5vcmcvfmVzci9jaWFib3QvY2lhYm90LnNoIgordmVyc2lvbj0zLjUKIAogIyBBZGRyZXNzZXMgZm9yIHRoZSBlLW1haWwKLWZyb209IkNJQUJPVC1OT1JFUExZQCR7aG9zdH0iCi10bz0iY2lhQGNpYS5uYXZpLmN4IgorZnJvbT0iQ0lBQk9ULU5PUkVQTFlAJHtob3N0bmFtZX0iCit0bz0iY2lhQGNpYS52YyIKIAogIyBTTVRQIGNsaWVudCB0byB1c2UgLSBtYXkgbmVlZCB0byBlZGl0IHRoZSBhYnNvbHV0ZSBwYXRobmFtZSBmb3IgeW91ciBzeXN0ZW0KIHNlbmRtYWlsPSJzZW5kbWFpbCAtdCAtZiAke2Zyb219IgpAQCAtOTcsNyArMTQyLDcgQEAKICAgICBjYXNlICRvcHQgaW4KIAlwKSBwcm9qZWN0PSQyOyBzaGlmdCA7IHNoaWZ0IDs7CiAJbikgbW9kZT1kdW1waXQ7IHNoaWZ0IDs7Ci0JVikgZWNobyAiY2lhYm90LnNoOiB2ZXJzaW9uIDMuMiI7IGV4aXQgMDsgc2hpZnQgOzsKKwlWKSBlY2hvICJjaWFib3Quc2g6IHZlcnNpb24gJHZlcnNpb24iOyBleGl0IDA7IHNoaWZ0IDs7CiAgICAgZXNhYwogZG9uZQogCkBAIC0xMjgsMzMgKzE3MywyOSBAQAogCiByZWZuYW1lPSR7cmVmbmFtZSMjcmVmcy9oZWFkcy99CiAKLWdpdHZlcj0kKGdpdCAtLXZlcnNpb24pCi1naXR2ZXI9JHtnaXR2ZXIjIyogfQorY2FzZSAkcmV2Zm9ybWF0IGluCityYXcpIHJldj0kbWVyZ2VkIDs7CitzaG9ydCkgcmV2PScnIDs7CisqKSByZXY9JChnaXQgZGVzY3JpYmUgJHttZXJnZWR9IDI+L2Rldi9udWxsKSA7OworZXNhYworWyAteiAke3Jldn0gXSAmJiByZXY9JChlY2hvICIkbWVyZ2VkIiB8IGN1dCAtYyAxLTEyKQogCi1yZXY9JChnaXQgZGVzY3JpYmUgJHttZXJnZWR9IDI+L2Rldi9udWxsKQotIyAke21lcmdlZDowOjEyfSB3YXMgdGhlIG9ubHkgYmFzaGlzbSBsZWZ0IGluIHRoZSAyMDA4IHZlcnNpb24gb2YgdGhpcwotIyBzY3JpcHQsIGFjY29yZGluZyB0byBjaGVja2Jhc2hpc21zLiAgUmVwbGFjZSBpdCB3aXRoICR7bWVyZ2VkfSBoZXJlCi0jIGJlY2F1c2UgaXQgd2FzIGp1c3QgYSBmYWxsYmFjayBhbnl3YXksIGFuZCBpdCdzIHdvcnRoIGFjY2VwdGluZyBhCi0jIGxvbmdlciBmYWxsYmFjayBmb3IgZmFzdGVyIGV4ZWN1dGlvbiBhbmQgcmVtb3ZpbmcgdGhlIGJhc2gKLSMgZGVwZW5kZW5jeS4KLVsgLXogJHtyZXZ9IF0gJiYgcmV2PSR7bWVyZ2VkfQotCi0jIFRoaXMgZGlzY2FyZHMgdGhlIHBhcnQgb2YgdGhlIGF1dGhvcidzIGFkZHJlc3MgYWZ0ZXIgQC4KKyMgV2UgZGlzY2FyZCB0aGUgcGFydCBvZiB0aGUgYXV0aG9yJ3MgYWRkcmVzcyBhZnRlciBALgogIyBNaWdodCBiZSBuaWNlIHRvIHNoaXAgdGhlIGZ1bGwgZW1haWwgYWRkcmVzcywgaWYgbm90CiAjIGZvciBzcGFtbWVycycgYWRkcmVzcyBoYXJ2ZXN0ZXJzIC0gZ2V0dGluZyB0aGlzIHdyb25nCiAjIHdvdWxkIG1ha2UgdGhlIGZyZWVub2RlICNjb21taXRzIGNoYW5uZWwgaW50byBoYXJ2ZXN0ZXIgaGVhdmVuLgotcmF3Y29tbWl0PSQoZ2l0IGNhdC1maWxlIGNvbW1pdCAke21lcmdlZH0pCi1hdXRob3I9JChlY2hvICIkcmF3Y29tbWl0IiB8IHNlZCAtbiAtZSAnL15hdXRob3IgLio8XChbXkBdKlwpLiokL3MtLVwxLXAnKQotbG9nbWVzc2FnZT0kKGVjaG8gIiRyYXdjb21taXQiIHwgc2VkIC1lICcxLC9eJC9kJyB8IGhlYWQgLW4gMSkKLWxvZ21lc3NhZ2U9JChlY2hvICIkbG9nbWVzc2FnZSIgfCBzZWQgJ3MvXCYvJmFtcFw7L2c7IHMvPC8mbHRcOy9nOyBzLz4vJmd0XDsvZycpCi10cz0kKGVjaG8gIiRyYXdjb21taXQiIHwgc2VkIC1uIC1lICcvXmF1dGhvciAuKj4gXChbMC05XVwrXCkuKiQvcy0tXDEtcCcpCithdXRob3I9JChnaXQgbG9nIC0xICctLXByZXR0eT1mb3JtYXQ6JWFuIDwlYWU+JyAkbWVyZ2VkKQorYXV0aG9yPSQoZWNobyAiJGF1dGhvciIgfCBzZWQgLW4gLWUgJy9eLio8XChbXkBdKlwpLiokL3MtLVwxLXAnKQorCitsb2dtZXNzYWdlPSQoZ2l0IGxvZyAtMSAnLS1wcmV0dHk9Zm9ybWF0OiVzJyAkbWVyZ2VkKQordHM9JChnaXQgbG9nIC0xICctLXByZXR0eT1mb3JtYXQ6JWF0JyAkbWVyZ2VkKQogZmlsZXM9JChnaXQgZGlmZi10cmVlIC1yIC0tbmFtZS1vbmx5ICR7bWVyZ2VkfSB8IHNlZCAtZSAnMWQnIC1lICdzLS4qLTxmaWxlPiY8L2ZpbGU+LScpCiAKIG91dD0iCiA8bWVzc2FnZT4KICAgPGdlbmVyYXRvcj4KICAgICA8bmFtZT5DSUEgU2hlbGwgY2xpZW50IGZvciBHaXQ8L25hbWU+Ci0gICAgPHZlcnNpb24+JHtnaXR2ZXJ9PC92ZXJzaW9uPgorICAgIDx2ZXJzaW9uPiR7dmVyc2lvbn08L3ZlcnNpb24+CiAgICAgPHVybD4ke2dlbmVyYXRvcn08L3VybD4KICAgPC9nZW5lcmF0b3I+CiAgIDxzb3VyY2U+CmRpZmYgLS1naXQgYS9jb250cmliL2NvbXBsZXRpb24vZ2l0LWNvbXBsZXRpb24uYmFzaCBiL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi5iYXNoCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggMmUxYjVlMS4uZWNmNThlMAotLS0gYS9jb250cmliL2NvbXBsZXRpb24vZ2l0LWNvbXBsZXRpb24uYmFzaAorKysgYi9jb250cmliL2NvbXBsZXRpb24vZ2l0LWNvbXBsZXRpb24uYmFzaApAQCAtMTMsNiArMTMsNyBAQAogIyAgICAqKSAuZ2l0L3JlbW90ZXMgZmlsZSBuYW1lcwogIyAgICAqKSBnaXQgJ3N1YmNvbW1hbmRzJwogIyAgICAqKSB0cmVlIHBhdGhzIHdpdGhpbiAncmVmOnBhdGgvdG8vZmlsZScgZXhwcmVzc2lvbnMKKyMgICAgKikgZmlsZSBwYXRocyB3aXRoaW4gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhbmQgaW5kZXgKICMgICAgKikgY29tbW9uIC0tbG9uZy1vcHRpb25zCiAjCiAjIFRvIHVzZSB0aGVzZSByb3V0aW5lczoKQEAgLTIwLDUwICsyMSw4IEBACiAjICAgIDEpIENvcHkgdGhpcyBmaWxlIHRvIHNvbWV3aGVyZSAoZS5nLiB+Ly5naXQtY29tcGxldGlvbi5zaCkuCiAjICAgIDIpIEFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8geW91ciAuYmFzaHJjLy56c2hyYzoKICMgICAgICAgIHNvdXJjZSB+Ly5naXQtY29tcGxldGlvbi5zaAotIwotIyAgICAzKSBDb25zaWRlciBjaGFuZ2luZyB5b3VyIFBTMSB0byBhbHNvIHNob3cgdGhlIGN1cnJlbnQgYnJhbmNoOgotIyAgICAgICAgIEJhc2g6IFBTMT0nW1x1QFxoIFxXJChfX2dpdF9wczEgIiAoJXMpIildXCQgJwotIyAgICAgICAgIFpTSDogIFBTMT0nWyVuQCVtICVjJChfX2dpdF9wczEgIiAoJXMpIildXCQgJwotIwotIyAgICAgICBUaGUgYXJndW1lbnQgdG8gX19naXRfcHMxIHdpbGwgYmUgZGlzcGxheWVkIG9ubHkgaWYgeW91Ci0jICAgICAgIGFyZSBjdXJyZW50bHkgaW4gYSBnaXQgcmVwb3NpdG9yeS4gIFRoZSAlcyB0b2tlbiB3aWxsIGJlCi0jICAgICAgIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGJyYW5jaC4KLSMKLSMgICAgICAgSW4gYWRkaXRpb24sIGlmIHlvdSBzZXQgR0lUX1BTMV9TSE9XRElSVFlTVEFURSB0byBhIG5vbmVtcHR5Ci0jICAgICAgIHZhbHVlLCB1bnN0YWdlZCAoKikgYW5kIHN0YWdlZCAoKykgY2hhbmdlcyB3aWxsIGJlIHNob3duIG5leHQKLSMgICAgICAgdG8gdGhlIGJyYW5jaCBuYW1lLiAgWW91IGNhbiBjb25maWd1cmUgdGhpcyBwZXItcmVwb3NpdG9yeQotIyAgICAgICB3aXRoIHRoZSBiYXNoLnNob3dEaXJ0eVN0YXRlIHZhcmlhYmxlLCB3aGljaCBkZWZhdWx0cyB0byB0cnVlCi0jICAgICAgIG9uY2UgR0lUX1BTMV9TSE9XRElSVFlTVEFURSBpcyBlbmFibGVkLgotIwotIyAgICAgICBZb3UgY2FuIGFsc28gc2VlIGlmIGN1cnJlbnRseSBzb21ldGhpbmcgaXMgc3Rhc2hlZCwgYnkgc2V0dGluZwotIyAgICAgICBHSVRfUFMxX1NIT1dTVEFTSFNUQVRFIHRvIGEgbm9uZW1wdHkgdmFsdWUuIElmIHNvbWV0aGluZyBpcyBzdGFzaGVkLAotIyAgICAgICB0aGVuIGEgJyQnIHdpbGwgYmUgc2hvd24gbmV4dCB0byB0aGUgYnJhbmNoIG5hbWUuCi0jCi0jICAgICAgIElmIHlvdSB3b3VsZCBsaWtlIHRvIHNlZSBpZiB0aGVyZSdyZSB1bnRyYWNrZWQgZmlsZXMsIHRoZW4geW91IGNhbgotIyAgICAgICBzZXQgR0lUX1BTMV9TSE9XVU5UUkFDS0VERklMRVMgdG8gYSBub25lbXB0eSB2YWx1ZS4gSWYgdGhlcmUncmUKLSMgICAgICAgdW50cmFja2VkIGZpbGVzLCB0aGVuIGEgJyUnIHdpbGwgYmUgc2hvd24gbmV4dCB0byB0aGUgYnJhbmNoIG5hbWUuCi0jCi0jICAgICAgIElmIHlvdSB3b3VsZCBsaWtlIHRvIHNlZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIEhFQUQgYW5kIGl0cwotIyAgICAgICB1cHN0cmVhbSwgc2V0IEdJVF9QUzFfU0hPV1VQU1RSRUFNPSJhdXRvIi4gIEEgIjwiIGluZGljYXRlcwotIyAgICAgICB5b3UgYXJlIGJlaGluZCwgIj4iIGluZGljYXRlcyB5b3UgYXJlIGFoZWFkLCBhbmQgIjw+IgotIyAgICAgICBpbmRpY2F0ZXMgeW91IGhhdmUgZGl2ZXJnZWQuICBZb3UgY2FuIGZ1cnRoZXIgY29udHJvbAotIyAgICAgICBiZWhhdmlvdXIgYnkgc2V0dGluZyBHSVRfUFMxX1NIT1dVUFNUUkVBTSB0byBhIHNwYWNlLXNlcGFyYXRlZAotIyAgICAgICBsaXN0IG9mIHZhbHVlczoKLSMgICAgICAgICAgIHZlcmJvc2UgICAgICAgc2hvdyBudW1iZXIgb2YgY29tbWl0cyBhaGVhZC9iZWhpbmQgKCsvLSkgdXBzdHJlYW0KLSMgICAgICAgICAgIGxlZ2FjeSAgICAgICAgZG9uJ3QgdXNlIHRoZSAnLS1jb3VudCcgb3B0aW9uIGF2YWlsYWJsZSBpbiByZWNlbnQKLSMgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMgb2YgZ2l0LXJldi1saXN0Ci0jICAgICAgICAgICBnaXQgICAgICAgICAgIGFsd2F5cyBjb21wYXJlIEhFQUQgdG8gQHt1cHN0cmVhbX0KLSMgICAgICAgICAgIHN2biAgICAgICAgICAgYWx3YXlzIGNvbXBhcmUgSEVBRCB0byB5b3VyIFNWTiB1cHN0cmVhbQotIyAgICAgICBCeSBkZWZhdWx0LCBfX2dpdF9wczEgd2lsbCBjb21wYXJlIEhFQUQgdG8geW91ciBTVk4gdXBzdHJlYW0KLSMgICAgICAgaWYgaXQgY2FuIGZpbmQgb25lLCBvciBAe3Vwc3RyZWFtfSBvdGhlcndpc2UuICBPbmNlIHlvdSBoYXZlCi0jICAgICAgIHNldCBHSVRfUFMxX1NIT1dVUFNUUkVBTSwgeW91IGNhbiBvdmVycmlkZSBpdCBvbiBhCi0jICAgICAgIHBlci1yZXBvc2l0b3J5IGJhc2lzIGJ5IHNldHRpbmcgdGhlIGJhc2guc2hvd1Vwc3RyZWFtIGNvbmZpZwotIyAgICAgICB2YXJpYWJsZS4KLSMKLQotaWYgW1sgLW4gJHtaU0hfVkVSU0lPTi19IF1dOyB0aGVuCi0JYXV0b2xvYWQgLVUgK1ggYmFzaGNvbXBpbml0ICYmIGJhc2hjb21waW5pdAotZmkKKyMgICAgMykgQ29uc2lkZXIgY2hhbmdpbmcgeW91ciBQUzEgdG8gYWxzbyBzaG93IHRoZSBjdXJyZW50IGJyYW5jaCwKKyMgICAgICAgc2VlIGdpdC1wcm9tcHQuc2ggZm9yIGRldGFpbHMuCiAKIGNhc2UgIiRDT01QX1dPUkRCUkVBS1MiIGluCiAqOiopIDogZ3JlYXQgOzsKQEAgLTc0LDkgKzMzLDE0IEBACiAjIHJldHVybnMgbG9jYXRpb24gb2YgLmdpdCByZXBvCiBfX2dpdGRpciAoKQogeworCSMgTm90ZTogdGhpcyBmdW5jdGlvbiBpcyBkdXBsaWNhdGVkIGluIGdpdC1wcm9tcHQuc2gKKwkjIFdoZW4gdXBkYXRpbmcgaXQsIG1ha2Ugc3VyZSB5b3UgdXBkYXRlIHRoZSBvdGhlciBvbmUgdG8gbWF0Y2guCiAJaWYgWyAteiAiJHsxLX0iIF07IHRoZW4KIAkJaWYgWyAtbiAiJHtfX2dpdF9kaXItfSIgXTsgdGhlbgogCQkJZWNobyAiJF9fZ2l0X2RpciIKKwkJZWxpZiBbIC1uICIke0dJVF9ESVItfSIgXTsgdGhlbgorCQkJdGVzdCAtZCAiJHtHSVRfRElSLX0iIHx8IHJldHVybiAxCisJCQllY2hvICIkR0lUX0RJUiIKIAkJZWxpZiBbIC1kIC5naXQgXTsgdGhlbgogCQkJZWNobyAuZ2l0CiAJCWVsc2UKQEAgLTg5LDIzNCArNTMsNiBAQAogCWZpCiB9CiAKLSMgc3RvcmVzIHRoZSBkaXZlcmdlbmNlIGZyb20gdXBzdHJlYW0gaW4gJHAKLSMgdXNlZCBieSBHSVRfUFMxX1NIT1dVUFNUUkVBTQotX19naXRfcHMxX3Nob3dfdXBzdHJlYW0gKCkKLXsKLQlsb2NhbCBrZXkgdmFsdWUKLQlsb2NhbCBzdm5fcmVtb3RlIHN2bl91cmxfcGF0dGVybiBjb3VudCBuCi0JbG9jYWwgdXBzdHJlYW09Z2l0IGxlZ2FjeT0iIiB2ZXJib3NlPSIiCi0KLQlzdm5fcmVtb3RlPSgpCi0JIyBnZXQgc29tZSBjb25maWcgb3B0aW9ucyBmcm9tIGdpdC1jb25maWcKLQlsb2NhbCBvdXRwdXQ9IiQoZ2l0IGNvbmZpZyAteiAtLWdldC1yZWdleHAgJ14oc3ZuLXJlbW90ZVwuLipcLnVybHxiYXNoXC5zaG93dXBzdHJlYW0pJCcgMj4vZGV2L251bGwgfCB0ciAnXDBcbicgJ1xuICcpIgotCXdoaWxlIHJlYWQgLXIga2V5IHZhbHVlOyBkbwotCQljYXNlICIka2V5IiBpbgotCQliYXNoLnNob3d1cHN0cmVhbSkKLQkJCUdJVF9QUzFfU0hPV1VQU1RSRUFNPSIkdmFsdWUiCi0JCQlpZiBbWyAteiAiJHtHSVRfUFMxX1NIT1dVUFNUUkVBTX0iIF1dOyB0aGVuCi0JCQkJcD0iIgotCQkJCXJldHVybgotCQkJZmkKLQkJCTs7Ci0JCXN2bi1yZW1vdGUuKi51cmwpCi0JCQlzdm5fcmVtb3RlWyAkKCgkeyNzdm5fcmVtb3RlW0BdfSArIDEpKSBdPSIkdmFsdWUiCi0JCQlzdm5fdXJsX3BhdHRlcm4rPSJcXHwkdmFsdWUiCi0JCQl1cHN0cmVhbT1zdm4rZ2l0ICMgZGVmYXVsdCB1cHN0cmVhbSBpcyBTVk4gaWYgYXZhaWxhYmxlLCBlbHNlIGdpdAotCQkJOzsKLQkJZXNhYwotCWRvbmUgPDw8ICIkb3V0cHV0IgotCi0JIyBwYXJzZSBjb25maWd1cmF0aW9uIHZhbHVlcwotCWZvciBvcHRpb24gaW4gJHtHSVRfUFMxX1NIT1dVUFNUUkVBTX07IGRvCi0JCWNhc2UgIiRvcHRpb24iIGluCi0JCWdpdHxzdm4pIHVwc3RyZWFtPSIkb3B0aW9uIiA7OwotCQl2ZXJib3NlKSB2ZXJib3NlPTEgOzsKLQkJbGVnYWN5KSAgbGVnYWN5PTEgIDs7Ci0JCWVzYWMKLQlkb25lCi0KLQkjIEZpbmQgb3VyIHVwc3RyZWFtCi0JY2FzZSAiJHVwc3RyZWFtIiBpbgotCWdpdCkgICAgdXBzdHJlYW09IkB7dXBzdHJlYW19IiA7OwotCXN2biopCi0JCSMgZ2V0IHRoZSB1cHN0cmVhbSBmcm9tIHRoZSAiZ2l0LXN2bi1pZDogLi4uIiBpbiBhIGNvbW1pdCBtZXNzYWdlCi0JCSMgKGdpdC1zdm4gdXNlcyBlc3NlbnRpYWxseSB0aGUgc2FtZSBwcm9jZWR1cmUgaW50ZXJuYWxseSkKLQkJbG9jYWwgc3ZuX3Vwc3RyZWFtPSgkKGdpdCBsb2cgLS1maXJzdC1wYXJlbnQgLTEgXAotCQkJCQktLWdyZXA9Il5naXQtc3ZuLWlkOiBcKCR7c3ZuX3VybF9wYXR0ZXJuIz8/fVwpIiAyPi9kZXYvbnVsbCkpCi0JCWlmIFtbIDAgLW5lICR7I3N2bl91cHN0cmVhbVtAXX0gXV07IHRoZW4KLQkJCXN2bl91cHN0cmVhbT0ke3N2bl91cHN0cmVhbVsgJHsjc3ZuX3Vwc3RyZWFtW0BdfSAtIDIgXX0KLQkJCXN2bl91cHN0cmVhbT0ke3N2bl91cHN0cmVhbSVAKn0KLQkJCWxvY2FsIG5fc3RvcD0iJHsjc3ZuX3JlbW90ZVtAXX0iCi0JCQlmb3IgKChuPTE7IG4gPD0gbl9zdG9wOyBuKyspKTsgZG8KLQkJCQlzdm5fdXBzdHJlYW09JHtzdm5fdXBzdHJlYW0jJHtzdm5fcmVtb3RlWyRuXX19Ci0JCQlkb25lCi0KLQkJCWlmIFtbIC16ICIkc3ZuX3Vwc3RyZWFtIiBdXTsgdGhlbgotCQkJCSMgZGVmYXVsdCBicmFuY2ggbmFtZSBmb3IgY2hlY2tvdXRzIHdpdGggbm8gbGF5b3V0OgotCQkJCXVwc3RyZWFtPSR7R0lUX1NWTl9JRDotZ2l0LXN2bn0KLQkJCWVsc2UKLQkJCQl1cHN0cmVhbT0ke3N2bl91cHN0cmVhbSMvfQotCQkJZmkKLQkJZWxpZiBbWyAic3ZuK2dpdCIgPSAiJHVwc3RyZWFtIiBdXTsgdGhlbgotCQkJdXBzdHJlYW09IkB7dXBzdHJlYW19IgotCQlmaQotCQk7OwotCWVzYWMKLQotCSMgRmluZCBob3cgbWFueSBjb21taXRzIHdlIGFyZSBhaGVhZC9iZWhpbmQgb3VyIHVwc3RyZWFtCi0JaWYgW1sgLXogIiRsZWdhY3kiIF1dOyB0aGVuCi0JCWNvdW50PSIkKGdpdCByZXYtbGlzdCAtLWNvdW50IC0tbGVmdC1yaWdodCBcCi0JCQkJIiR1cHN0cmVhbSIuLi5IRUFEIDI+L2Rldi9udWxsKSIKLQllbHNlCi0JCSMgcHJvZHVjZSBlcXVpdmFsZW50IG91dHB1dCB0byAtLWNvdW50IGZvciBvbGRlciB2ZXJzaW9ucyBvZiBnaXQKLQkJbG9jYWwgY29tbWl0cwotCQlpZiBjb21taXRzPSIkKGdpdCByZXYtbGlzdCAtLWxlZnQtcmlnaHQgIiR1cHN0cmVhbSIuLi5IRUFEIDI+L2Rldi9udWxsKSIKLQkJdGhlbgotCQkJbG9jYWwgY29tbWl0IGJlaGluZD0wIGFoZWFkPTAKLQkJCWZvciBjb21taXQgaW4gJGNvbW1pdHMKLQkJCWRvCi0JCQkJY2FzZSAiJGNvbW1pdCIgaW4KLQkJCQkiPCIqKSAoKGJlaGluZCsrKSkgOzsKLQkJCQkqKSAgICAoKGFoZWFkKyspKSAgOzsKLQkJCQllc2FjCi0JCQlkb25lCi0JCQljb3VudD0iJGJlaGluZAkkYWhlYWQiCi0JCWVsc2UKLQkJCWNvdW50PSIiCi0JCWZpCi0JZmkKLQotCSMgY2FsY3VsYXRlIHRoZSByZXN1bHQKLQlpZiBbWyAteiAiJHZlcmJvc2UiIF1dOyB0aGVuCi0JCWNhc2UgIiRjb3VudCIgaW4KLQkJIiIpICMgbm8gdXBzdHJlYW0KLQkJCXA9IiIgOzsKLQkJIjAJMCIpICMgZXF1YWwgdG8gdXBzdHJlYW0KLQkJCXA9Ij0iIDs7Ci0JCSIwCSIqKSAjIGFoZWFkIG9mIHVwc3RyZWFtCi0JCQlwPSI+IiA7OwotCQkqIgkwIikgIyBiZWhpbmQgdXBzdHJlYW0KLQkJCXA9IjwiIDs7Ci0JCSopCSAgICAjIGRpdmVyZ2VkIGZyb20gdXBzdHJlYW0KLQkJCXA9Ijw+IiA7OwotCQllc2FjCi0JZWxzZQotCQljYXNlICIkY291bnQiIGluCi0JCSIiKSAjIG5vIHVwc3RyZWFtCi0JCQlwPSIiIDs7Ci0JCSIwCTAiKSAjIGVxdWFsIHRvIHVwc3RyZWFtCi0JCQlwPSIgdT0iIDs7Ci0JCSIwCSIqKSAjIGFoZWFkIG9mIHVwc3RyZWFtCi0JCQlwPSIgdSske2NvdW50IzAJfSIgOzsKLQkJKiIJMCIpICMgYmVoaW5kIHVwc3RyZWFtCi0JCQlwPSIgdS0ke2NvdW50JQkwfSIgOzsKLQkJKikJICAgICMgZGl2ZXJnZWQgZnJvbSB1cHN0cmVhbQotCQkJcD0iIHUrJHtjb3VudCMqCX0tJHtjb3VudCUJKn0iIDs7Ci0JCWVzYWMKLQlmaQotCi19Ci0KLQotIyBfX2dpdF9wczEgYWNjZXB0cyAwIG9yIDEgYXJndW1lbnRzIChpLmUuLCBmb3JtYXQgc3RyaW5nKQotIyByZXR1cm5zIHRleHQgdG8gYWRkIHRvIGJhc2ggUFMxIHByb21wdCAoaW5jbHVkZXMgYnJhbmNoIG5hbWUpCi1fX2dpdF9wczEgKCkKLXsKLQlsb2NhbCBnPSIkKF9fZ2l0ZGlyKSIKLQlpZiBbIC1uICIkZyIgXTsgdGhlbgotCQlsb2NhbCByPSIiCi0JCWxvY2FsIGI9IiIKLQkJaWYgWyAtZiAiJGcvcmViYXNlLW1lcmdlL2ludGVyYWN0aXZlIiBdOyB0aGVuCi0JCQlyPSJ8UkVCQVNFLWkiCi0JCQliPSIkKGNhdCAiJGcvcmViYXNlLW1lcmdlL2hlYWQtbmFtZSIpIgotCQllbGlmIFsgLWQgIiRnL3JlYmFzZS1tZXJnZSIgXTsgdGhlbgotCQkJcj0ifFJFQkFTRS1tIgotCQkJYj0iJChjYXQgIiRnL3JlYmFzZS1tZXJnZS9oZWFkLW5hbWUiKSIKLQkJZWxzZQotCQkJaWYgWyAtZCAiJGcvcmViYXNlLWFwcGx5IiBdOyB0aGVuCi0JCQkJaWYgWyAtZiAiJGcvcmViYXNlLWFwcGx5L3JlYmFzaW5nIiBdOyB0aGVuCi0JCQkJCXI9InxSRUJBU0UiCi0JCQkJZWxpZiBbIC1mICIkZy9yZWJhc2UtYXBwbHkvYXBwbHlpbmciIF07IHRoZW4KLQkJCQkJcj0ifEFNIgotCQkJCWVsc2UKLQkJCQkJcj0ifEFNL1JFQkFTRSIKLQkJCQlmaQotCQkJZWxpZiBbIC1mICIkZy9NRVJHRV9IRUFEIiBdOyB0aGVuCi0JCQkJcj0ifE1FUkdJTkciCi0JCQllbGlmIFsgLWYgIiRnL0NIRVJSWV9QSUNLX0hFQUQiIF07IHRoZW4KLQkJCQlyPSJ8Q0hFUlJZLVBJQ0tJTkciCi0JCQllbGlmIFsgLWYgIiRnL0JJU0VDVF9MT0ciIF07IHRoZW4KLQkJCQlyPSJ8QklTRUNUSU5HIgotCQkJZmkKLQotCQkJYj0iJChnaXQgc3ltYm9saWMtcmVmIEhFQUQgMj4vZGV2L251bGwpIiB8fCB7Ci0KLQkJCQliPSIkKAotCQkJCWNhc2UgIiR7R0lUX1BTMV9ERVNDUklCRV9TVFlMRS19IiBpbgotCQkJCShjb250YWlucykKLQkJCQkJZ2l0IGRlc2NyaWJlIC0tY29udGFpbnMgSEVBRCA7OwotCQkJCShicmFuY2gpCi0JCQkJCWdpdCBkZXNjcmliZSAtLWNvbnRhaW5zIC0tYWxsIEhFQUQgOzsKLQkJCQkoZGVzY3JpYmUpCi0JCQkJCWdpdCBkZXNjcmliZSBIRUFEIDs7Ci0JCQkJKCogfCBkZWZhdWx0KQotCQkJCQlnaXQgZGVzY3JpYmUgLS10YWdzIC0tZXhhY3QtbWF0Y2ggSEVBRCA7OwotCQkJCWVzYWMgMj4vZGV2L251bGwpIiB8fAotCi0JCQkJYj0iJChjdXQgLWMxLTcgIiRnL0hFQUQiIDI+L2Rldi9udWxsKS4uLiIgfHwKLQkJCQliPSJ1bmtub3duIgotCQkJCWI9IigkYikiCi0JCQl9Ci0JCWZpCi0KLQkJbG9jYWwgdz0iIgotCQlsb2NhbCBpPSIiCi0JCWxvY2FsIHM9IiIKLQkJbG9jYWwgdT0iIgotCQlsb2NhbCBjPSIiCi0JCWxvY2FsIHA9IiIKLQotCQlpZiBbICJ0cnVlIiA9ICIkKGdpdCByZXYtcGFyc2UgLS1pcy1pbnNpZGUtZ2l0LWRpciAyPi9kZXYvbnVsbCkiIF07IHRoZW4KLQkJCWlmIFsgInRydWUiID0gIiQoZ2l0IHJldi1wYXJzZSAtLWlzLWJhcmUtcmVwb3NpdG9yeSAyPi9kZXYvbnVsbCkiIF07IHRoZW4KLQkJCQljPSJCQVJFOiIKLQkJCWVsc2UKLQkJCQliPSJHSVRfRElSISIKLQkJCWZpCi0JCWVsaWYgWyAidHJ1ZSIgPSAiJChnaXQgcmV2LXBhcnNlIC0taXMtaW5zaWRlLXdvcmstdHJlZSAyPi9kZXYvbnVsbCkiIF07IHRoZW4KLQkJCWlmIFsgLW4gIiR7R0lUX1BTMV9TSE9XRElSVFlTVEFURS19IiBdOyB0aGVuCi0JCQkJaWYgWyAiJChnaXQgY29uZmlnIC0tYm9vbCBiYXNoLnNob3dEaXJ0eVN0YXRlKSIgIT0gImZhbHNlIiBdOyB0aGVuCi0JCQkJCWdpdCBkaWZmIC0tbm8tZXh0LWRpZmYgLS1xdWlldCAtLWV4aXQtY29kZSB8fCB3PSIqIgotCQkJCQlpZiBnaXQgcmV2LXBhcnNlIC0tcXVpZXQgLS12ZXJpZnkgSEVBRCA+L2Rldi9udWxsOyB0aGVuCi0JCQkJCQlnaXQgZGlmZi1pbmRleCAtLWNhY2hlZCAtLXF1aWV0IEhFQUQgLS0gfHwgaT0iKyIKLQkJCQkJZWxzZQotCQkJCQkJaT0iIyIKLQkJCQkJZmkKLQkJCQlmaQotCQkJZmkKLQkJCWlmIFsgLW4gIiR7R0lUX1BTMV9TSE9XU1RBU0hTVEFURS19IiBdOyB0aGVuCi0JCQkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3N0YXNoID4vZGV2L251bGwgMj4mMSAmJiBzPSIkIgotCQkJZmkKLQotCQkJaWYgWyAtbiAiJHtHSVRfUFMxX1NIT1dVTlRSQUNLRURGSUxFUy19IiBdOyB0aGVuCi0JCQkJaWYgWyAtbiAiJChnaXQgbHMtZmlsZXMgLS1vdGhlcnMgLS1leGNsdWRlLXN0YW5kYXJkKSIgXTsgdGhlbgotCQkJCQl1PSIlIgotCQkJCWZpCi0JCQlmaQotCi0JCQlpZiBbIC1uICIke0dJVF9QUzFfU0hPV1VQU1RSRUFNLX0iIF07IHRoZW4KLQkJCQlfX2dpdF9wczFfc2hvd191cHN0cmVhbQotCQkJZmkKLQkJZmkKLQotCQlsb2NhbCBmPSIkdyRpJHMkdSIKLQkJcHJpbnRmIC0tICIkezE6LSAoJXMpfSIgIiRjJHtiIyNyZWZzL2hlYWRzL30ke2Y6KyAkZn0kciRwIgotCWZpCi19Ci0KLV9fZ2l0Y29tcF8xICgpCi17Ci0JbG9jYWwgYyBJRlM9JCcgXHRcbicKLQlmb3IgYyBpbiAkMTsgZG8KLQkJYz0iJGMkMiIKLQkJY2FzZSAkYyBpbgotCQktLSo9KnwqLikgOzsKLQkJKikgYz0iJGMgIiA7OwotCQllc2FjCi0JCXByaW50ZiAnJXNcbicgIiRjIgotCWRvbmUKLX0KLQogIyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGlzIGJhc2VkIG9uIGNvZGUgZnJvbToKICMKICMgICBiYXNoX2NvbXBsZXRpb24gLSBwcm9ncmFtbWFibGUgY29tcGxldGlvbiBmdW5jdGlvbnMgZm9yIGJhc2ggMy4yKwpAQCAtNDE3LDcgKzE1Myw2IEBACiB9CiAKIGlmICEgdHlwZSBfZ2V0X2NvbXBfd29yZHNfYnlfcmVmID4vZGV2L251bGwgMj4mMTsgdGhlbgotaWYgW1sgLXogJHtaU0hfVkVSU0lPTjorc2V0fSBdXTsgdGhlbgogX2dldF9jb21wX3dvcmRzX2J5X3JlZiAoKQogewogCWxvY2FsIGV4Y2x1ZGUgY3VyXyB3b3Jkc18gY3dvcmRfCkBAIC00NDUsMzYgKzE4MCwyMCBAQAogCQlzaGlmdAogCWRvbmUKIH0KLWVsc2UKLV9nZXRfY29tcF93b3Jkc19ieV9yZWYgKCkKLXsKLQl3aGlsZSBbICQjIC1ndCAwIF07IGRvCi0JCWNhc2UgIiQxIiBpbgotCQljdXIpCi0JCQljdXI9JHtDT01QX1dPUkRTW0NPTVBfQ1dPUkRdfQotCQkJOzsKLQkJcHJldikKLQkJCXByZXY9JHtDT01QX1dPUkRTW0NPTVBfQ1dPUkQtMV19Ci0JCQk7OwotCQl3b3JkcykKLQkJCXdvcmRzPSgiJHtDT01QX1dPUkRTW0BdfSIpCi0JCQk7OwotCQljd29yZCkKLQkJCWN3b3JkPSRDT01QX0NXT1JECi0JCQk7OwotCQktbikKLQkJCSMgYXNzdW1lIENPTVBfV09SREJSRUFLUyBpcyBhbHJlYWR5IHNldCBzYW5lbHkKLQkJCXNoaWZ0Ci0JCQk7OwotCQllc2FjCi0JCXNoaWZ0Ci0JZG9uZQotfQotZmkKIGZpCiAKLSMgR2VuZXJhdGVzIGNvbXBsZXRpb24gcmVwbHkgd2l0aCBjb21wZ2VuLCBhcHBlbmRpbmcgYSBzcGFjZSB0byBwb3NzaWJsZQotIyBjb21wbGV0aW9uIHdvcmRzLCBpZiBuZWNlc3NhcnkuCitfX2dpdGNvbXBhZGQgKCkKK3sKKwlsb2NhbCBpPTAKKwlmb3IgeCBpbiAkMTsgZG8KKwkJaWYgW1sgIiR4IiA9PSAiJDMiKiBdXTsgdGhlbgorCQkJQ09NUFJFUExZW2krK109IiQyJHgkNCIKKwkJZmkKKwlkb25lCit9CisKKyMgR2VuZXJhdGVzIGNvbXBsZXRpb24gcmVwbHksIGFwcGVuZGluZyBhIHNwYWNlIHRvIHBvc3NpYmxlIGNvbXBsZXRpb24gd29yZHMsCisjIGlmIG5lY2Vzc2FyeS4KICMgSXQgYWNjZXB0cyAxIHRvIDQgYXJndW1lbnRzOgogIyAxOiBMaXN0IG9mIHBvc3NpYmxlIGNvbXBsZXRpb24gd29yZHMuCiAjIDI6IEEgcHJlZml4IHRvIGJlIGFkZGVkIHRvIGVhY2ggcG9zc2libGUgY29tcGxldGlvbiB3b3JkIChvcHRpb25hbCkuCkBAIC00ODYsMTkgKzIwNSwyNSBAQAogCiAJY2FzZSAiJGN1cl8iIGluCiAJLS0qPSkKLQkJQ09NUFJFUExZPSgpCiAJCTs7CiAJKikKLQkJbG9jYWwgSUZTPSQnXG4nCi0JCUNPTVBSRVBMWT0oJChjb21wZ2VuIC1QICIkezItfSIgXAotCQkJLVcgIiQoX19naXRjb21wXzEgIiR7MS19IiAiJHs0LX0iKSIgXAotCQkJLS0gIiRjdXJfIikpCisJCWxvY2FsIGMgaT0wIElGUz0kJyBcdFxuJworCQlmb3IgYyBpbiAkMTsgZG8KKwkJCWM9IiRjJHs0LX0iCisJCQlpZiBbWyAkYyA9PSAiJGN1cl8iKiBdXTsgdGhlbgorCQkJCWNhc2UgJGMgaW4KKwkJCQktLSo9KnwqLikgOzsKKwkJCQkqKSBjPSIkYyAiIDs7CisJCQkJZXNhYworCQkJCUNPTVBSRVBMWVtpKytdPSIkezItfSRjIgorCQkJZmkKKwkJZG9uZQogCQk7OwogCWVzYWMKIH0KIAotIyBHZW5lcmF0ZXMgY29tcGxldGlvbiByZXBseSB3aXRoIGNvbXBnZW4gZnJvbSBuZXdsaW5lLXNlcGFyYXRlZCBwb3NzaWJsZQotIyBjb21wbGV0aW9uIHdvcmRzIGJ5IGFwcGVuZGluZyBhIHNwYWNlIHRvIGFsbCBvZiB0aGVtLgorIyBHZW5lcmF0ZXMgY29tcGxldGlvbiByZXBseSBmcm9tIG5ld2xpbmUtc2VwYXJhdGVkIHBvc3NpYmxlIGNvbXBsZXRpb24gd29yZHMKKyMgYnkgYXBwZW5kaW5nIGEgc3BhY2UgdG8gYWxsIG9mIHRoZW0uCiAjIEl0IGFjY2VwdHMgMSB0byA0IGFyZ3VtZW50czoKICMgMTogTGlzdCBvZiBwb3NzaWJsZSBjb21wbGV0aW9uIHdvcmRzLCBzZXBhcmF0ZWQgYnkgYSBzaW5nbGUgbmV3bGluZS4KICMgMjogQSBwcmVmaXggdG8gYmUgYWRkZWQgdG8gZWFjaCBwb3NzaWJsZSBjb21wbGV0aW9uIHdvcmQgKG9wdGlvbmFsKS4KQEAgLTUwOSw3ICsyMzQsMTI1IEBACiBfX2dpdGNvbXBfbmwgKCkKIHsKIAlsb2NhbCBJRlM9JCdcbicKLQlDT01QUkVQTFk9KCQoY29tcGdlbiAtUCAiJHsyLX0iIC1TICIkezQtIH0iIC1XICIkMSIgLS0gIiR7My0kY3VyfSIpKQorCV9fZ2l0Y29tcGFkZCAiJDEiICIkezItfSIgIiR7My0kY3VyfSIgIiR7NC0gfSIKK30KKworIyBHZW5lcmF0ZXMgY29tcGxldGlvbiByZXBseSB3aXRoIGNvbXBnZW4gZnJvbSBuZXdsaW5lLXNlcGFyYXRlZCBwb3NzaWJsZQorIyBjb21wbGV0aW9uIGZpbGVuYW1lcy4KKyMgSXQgYWNjZXB0cyAxIHRvIDMgYXJndW1lbnRzOgorIyAxOiBMaXN0IG9mIHBvc3NpYmxlIGNvbXBsZXRpb24gZmlsZW5hbWVzLCBzZXBhcmF0ZWQgYnkgYSBzaW5nbGUgbmV3bGluZS4KKyMgMjogQSBkaXJlY3RvcnkgcHJlZml4IHRvIGJlIGFkZGVkIHRvIGVhY2ggcG9zc2libGUgY29tcGxldGlvbiBmaWxlbmFtZQorIyAgICAob3B0aW9uYWwpLgorIyAzOiBHZW5lcmF0ZSBwb3NzaWJsZSBjb21wbGV0aW9uIG1hdGNoZXMgZm9yIHRoaXMgd29yZCAob3B0aW9uYWwpLgorX19naXRjb21wX2ZpbGUgKCkKK3sKKwlsb2NhbCBJRlM9JCdcbicKKworCSMgWFhYIGRvZXMgbm90IHdvcmsgd2hlbiB0aGUgZGlyZWN0b3J5IHByZWZpeCBjb250YWlucyBhIHRpbGRlLAorCSMgc2luY2UgdGlsZGUgZXhwYW5zaW9uIGlzIG5vdCBhcHBsaWVkLgorCSMgVGhpcyBtZWFucyB0aGF0IENPTVBSRVBMWSB3aWxsIGJlIGVtcHR5IGFuZCBCYXNoIGRlZmF1bHQKKwkjIGNvbXBsZXRpb24gd2lsbCBiZSB1c2VkLgorCUNPTVBSRVBMWT0oJChjb21wZ2VuIC1QICIkezItfSIgLVcgIiQxIiAtLSAiJHszLSRjdXJ9IikpCisKKwkjIFRlbGwgQmFzaCB0aGF0IGNvbXBzcGVjIGdlbmVyYXRlcyBmaWxlbmFtZXMuCisJY29tcG9wdCAtbyBmaWxlbmFtZXMgMj4vZGV2L251bGwKK30KKworX19naXRfaW5kZXhfZmlsZV9saXN0X2ZpbHRlcl9jb21wYXQgKCkKK3sKKwlsb2NhbCBwYXRoCisKKwl3aGlsZSByZWFkIC1yIHBhdGg7IGRvCisJCWNhc2UgIiRwYXRoIiBpbgorCQk/Ki8qKSBlY2hvICIke3BhdGglJS8qfS8iIDs7CisJCSopIGVjaG8gIiRwYXRoIiA7OworCQllc2FjCisJZG9uZQorfQorCitfX2dpdF9pbmRleF9maWxlX2xpc3RfZmlsdGVyX2Jhc2ggKCkKK3sKKwlsb2NhbCBwYXRoCisKKwl3aGlsZSByZWFkIC1yIHBhdGg7IGRvCisJCWNhc2UgIiRwYXRoIiBpbgorCQk/Ki8qKQorCQkJIyBYWFggaWYgd2UgYXBwZW5kIGEgc2xhc2ggdG8gZGlyZWN0b3J5IG5hbWVzIHdoZW4gdXNpbmcKKwkJCSMgYGNvbXBvcHQgLW8gZmlsZW5hbWVzYCwgQmFzaCB3aWxsIGFwcGVuZCBhbm90aGVyIHNsYXNoLgorCQkJIyBUaGlzIGlzIHByZXR0eSBzdHVwaWQsIGFuZCB0aGlzIHRoZSByZWFzb24gd2h5IHdlIGhhdmUgdG8KKwkJCSMgZGVmaW5lIGEgY29tcGF0aWJsZSB2ZXJzaW9uIGZvciB0aGlzIGZ1bmN0aW9uLgorCQkJZWNobyAiJHtwYXRoJSUvKn0iIDs7CisJCSopCisJCQllY2hvICIkcGF0aCIgOzsKKwkJZXNhYworCWRvbmUKK30KKworIyBQcm9jZXNzIHBhdGggbGlzdCByZXR1cm5lZCBieSAibHMtZmlsZXMiIGFuZCAiZGlmZi1pbmRleCAtLW5hbWUtb25seSIKKyMgY29tbWFuZHMsIGluIG9yZGVyIHRvIGxpc3Qgb25seSBmaWxlIG5hbWVzIHJlbGF0aXZlIHRvIGEgc3BlY2lmaWVkCisjIGRpcmVjdG9yeSwgYW5kIGFwcGVuZCBhIHNsYXNoIHRvIGRpcmVjdG9yeSBuYW1lcy4KK19fZ2l0X2luZGV4X2ZpbGVfbGlzdF9maWx0ZXIgKCkKK3sKKwkjIERlZmF1bHQgdG8gQmFzaCA+PSA0LngKKwlfX2dpdF9pbmRleF9maWxlX2xpc3RfZmlsdGVyX2Jhc2gKK30KKworIyBFeGVjdXRlIGdpdCBscy1maWxlcywgcmV0dXJuaW5nIHBhdGhzIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkKKyMgc3BlY2lmaWVkIGluIHRoZSBmaXJzdCBhcmd1bWVudCwgYW5kIHVzaW5nIHRoZSBvcHRpb25zIHNwZWNpZmllZCBpbgorIyB0aGUgc2Vjb25kIGFyZ3VtZW50LgorX19naXRfbHNfZmlsZXNfaGVscGVyICgpCit7CisJKAorCQl0ZXN0IC1uICIke0NEUEFUSCtzZXR9IiAmJiB1bnNldCBDRFBBVEgKKwkJIyBOT1RFOiAkMiBpcyBub3QgcXVvdGVkIGluIG9yZGVyIHRvIHN1cHBvcnQgbXVsdGlwbGUgb3B0aW9ucworCQljZCAiJDEiICYmIGdpdCBscy1maWxlcyAtLWV4Y2x1ZGUtc3RhbmRhcmQgJDIKKwkpIDI+L2Rldi9udWxsCit9CisKKworIyBFeGVjdXRlIGdpdCBkaWZmLWluZGV4LCByZXR1cm5pbmcgcGF0aHMgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeQorIyBzcGVjaWZpZWQgaW4gdGhlIGZpcnN0IGFyZ3VtZW50LCBhbmQgdXNpbmcgdGhlIHRyZWUgb2JqZWN0IGlkCisjIHNwZWNpZmllZCBpbiB0aGUgc2Vjb25kIGFyZ3VtZW50LgorX19naXRfZGlmZl9pbmRleF9oZWxwZXIgKCkKK3sKKwkoCisJCXRlc3QgLW4gIiR7Q0RQQVRIK3NldH0iICYmIHVuc2V0IENEUEFUSAorCQljZCAiJDEiICYmIGdpdCBkaWZmLWluZGV4IC0tbmFtZS1vbmx5IC0tcmVsYXRpdmUgIiQyIgorCSkgMj4vZGV2L251bGwKK30KKworIyBfX2dpdF9pbmRleF9maWxlcyBhY2NlcHRzIDEgb3IgMiBhcmd1bWVudHM6CisjIDE6IE9wdGlvbnMgdG8gcGFzcyB0byBscy1maWxlcyAocmVxdWlyZWQpLgorIyAgICBTdXBwb3J0ZWQgb3B0aW9ucyBhcmUgLS1jYWNoZWQsIC0tbW9kaWZpZWQsIC0tZGVsZXRlZCwgLS1vdGhlcnMsCisjICAgIGFuZCAtLWRpcmVjdG9yeS4KKyMgMjogQSBkaXJlY3RvcnkgcGF0aCAob3B0aW9uYWwpLgorIyAgICBJZiBwcm92aWRlZCwgb25seSBmaWxlcyB3aXRoaW4gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkgYXJlIGxpc3RlZC4KKyMgICAgU3ViIGRpcmVjdG9yaWVzIGFyZSBuZXZlciByZWN1cnNlZC4gIFBhdGggbXVzdCBoYXZlIGEgdHJhaWxpbmcKKyMgICAgc2xhc2guCitfX2dpdF9pbmRleF9maWxlcyAoKQoreworCWxvY2FsIGRpcj0iJChfX2dpdGRpcikiIHJvb3Q9IiR7Mi0ufSIKKworCWlmIFsgLWQgIiRkaXIiIF07IHRoZW4KKwkJX19naXRfbHNfZmlsZXNfaGVscGVyICIkcm9vdCIgIiQxIiB8IF9fZ2l0X2luZGV4X2ZpbGVfbGlzdF9maWx0ZXIgfAorCQkJc29ydCB8IHVuaXEKKwlmaQorfQorCisjIF9fZ2l0X2RpZmZfaW5kZXhfZmlsZXMgYWNjZXB0cyAxIG9yIDIgYXJndW1lbnRzOgorIyAxKSBUaGUgaWQgb2YgYSB0cmVlIG9iamVjdC4KKyMgMikgQSBkaXJlY3RvcnkgcGF0aCAob3B0aW9uYWwpLgorIyAgICBJZiBwcm92aWRlZCwgb25seSBmaWxlcyB3aXRoaW4gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkgYXJlIGxpc3RlZC4KKyMgICAgU3ViIGRpcmVjdG9yaWVzIGFyZSBuZXZlciByZWN1cnNlZC4gIFBhdGggbXVzdCBoYXZlIGEgdHJhaWxpbmcKKyMgICAgc2xhc2guCitfX2dpdF9kaWZmX2luZGV4X2ZpbGVzICgpCit7CisJbG9jYWwgZGlyPSIkKF9fZ2l0ZGlyKSIgcm9vdD0iJHsyLS59IgorCisJaWYgWyAtZCAiJGRpciIgXTsgdGhlbgorCQlfX2dpdF9kaWZmX2luZGV4X2hlbHBlciAiJHJvb3QiICIkMSIgfCBfX2dpdF9pbmRleF9maWxlX2xpc3RfZmlsdGVyIHwKKwkJCXNvcnQgfCB1bmlxCisJZmkKIH0KIAogX19naXRfaGVhZHMgKCkKQEAgLTU2OSw3ICs0MTIsNyBAQAogCQkJCWlmIFtbICIkcmVmIiA9PSAiJGN1ciIqIF1dOyB0aGVuCiAJCQkJCWVjaG8gIiRyZWYiCiAJCQkJZmkKLQkJCWRvbmUgfCB1bmlxIC11CisJCQlkb25lIHwgc29ydCB8IHVuaXEgLXUKIAkJZmkKIAkJcmV0dXJuCiAJZmkKQEAgLTY3Niw3ICs1MTksNyBAQAogCQkqKSAgIHBmeD0iJHJlZjokcGZ4IiA7OwogCQllc2FjCiAKLQkJX19naXRjb21wX25sICIkKGdpdCAtLWdpdC1kaXI9IiQoX19naXRkaXIpIiBscy10cmVlICIkbHMiIFwKKwkJX19naXRjb21wX25sICIkKGdpdCAtLWdpdC1kaXI9IiQoX19naXRkaXIpIiBscy10cmVlICIkbHMiIDI+L2Rldi9udWxsIFwKIAkJCQl8IHNlZCAnL14xMDAuLi4gYmxvYiAvewogCQkJCSAgICAgICAgICAgcyxeLioJLCwKIAkJCQkgICAgICAgICAgIHMsJCwgLApAQCAtNzA5LDYgKzU1Miw0NiBAQAogfQogCiAKKyMgX19naXRfY29tcGxldGVfaW5kZXhfZmlsZSByZXF1aXJlcyAxIGFyZ3VtZW50OiB0aGUgb3B0aW9ucyB0byBwYXNzIHRvCisjIGxzLWZpbGUKK19fZ2l0X2NvbXBsZXRlX2luZGV4X2ZpbGUgKCkKK3sKKwlsb2NhbCBwZnggY3VyXz0iJGN1ciIKKworCWNhc2UgIiRjdXJfIiBpbgorCT8qLyopCisJCXBmeD0iJHtjdXJfJS8qfSIKKwkJY3VyXz0iJHtjdXJfIyMqL30iCisJCXBmeD0iJHtwZnh9LyIKKworCQlfX2dpdGNvbXBfZmlsZSAiJChfX2dpdF9pbmRleF9maWxlcyAiJDEiICIkcGZ4IikiICIkcGZ4IiAiJGN1cl8iCisJCTs7CisJKikKKwkJX19naXRjb21wX2ZpbGUgIiQoX19naXRfaW5kZXhfZmlsZXMgIiQxIikiICIiICIkY3VyXyIKKwkJOzsKKwllc2FjCit9CisKKyMgX19naXRfY29tcGxldGVfZGlmZl9pbmRleF9maWxlIHJlcXVpcmVzIDEgYXJndW1lbnQ6IHRoZSBpZCBvZiBhIHRyZWUKKyMgb2JqZWN0CitfX2dpdF9jb21wbGV0ZV9kaWZmX2luZGV4X2ZpbGUgKCkKK3sKKwlsb2NhbCBwZnggY3VyXz0iJGN1ciIKKworCWNhc2UgIiRjdXJfIiBpbgorCT8qLyopCisJCXBmeD0iJHtjdXJfJS8qfSIKKwkJY3VyXz0iJHtjdXJfIyMqL30iCisJCXBmeD0iJHtwZnh9LyIKKworCQlfX2dpdGNvbXBfZmlsZSAiJChfX2dpdF9kaWZmX2luZGV4X2ZpbGVzICIkMSIgIiRwZngiKSIgIiRwZngiICIkY3VyXyIKKwkJOzsKKwkqKQorCQlfX2dpdGNvbXBfZmlsZSAiJChfX2dpdF9kaWZmX2luZGV4X2ZpbGVzICIkMSIpIiAiIiAiJGN1cl8iCisJCTs7CisJZXNhYworfQorCiBfX2dpdF9jb21wbGV0ZV9maWxlICgpCiB7CiAJX19naXRfY29tcGxldGVfcmV2bGlzdF9maWxlCkBAIC03MzQsNyArNjE3LDYgQEAKIAkJCWNhc2UgIiRjbWQiIGluCiAJCQlwdXNoKSBub19jb21wbGV0ZV9yZWZzcGVjPTEgOzsKIAkJCWZldGNoKQotCQkJCUNPTVBSRVBMWT0oKQogCQkJCXJldHVybgogCQkJCTs7CiAJCQkqKSA7OwpAQCAtNzUwLDcgKzYzMiw2IEBACiAJCXJldHVybgogCWZpCiAJaWYgWyAkbm9fY29tcGxldGVfcmVmc3BlYyA9IDEgXTsgdGhlbgotCQlDT01QUkVQTFk9KCkKIAkJcmV0dXJuCiAJZmkKIAlbICIkcmVtb3RlIiA9ICIuIiBdICYmIHJlbW90ZT0KQEAgLTgxMCwxMCArNjkxLDE5IEBACiAJcmV0dXJuIDEKIH0KIAorX19naXRfY29tbWFuZHMgKCkgeworCWlmIHRlc3QgLW4gIiR7R0lUX1RFU1RJTkdfQ09NTUFORF9DT01QTEVUSU9OOi19IgorCXRoZW4KKwkJcHJpbnRmICIlcyIgIiR7R0lUX1RFU1RJTkdfQ09NTUFORF9DT01QTEVUSU9OfSIKKwllbHNlCisJCWdpdCBoZWxwIC1hfGVncmVwICdeICBbYS16QS1aMC05XScKKwlmaQorfQorCiBfX2dpdF9saXN0X2FsbF9jb21tYW5kcyAoKQogewogCWxvY2FsIGkgSUZTPSIgIiQnXG4nCi0JZm9yIGkgaW4gJChnaXQgaGVscCAtYXxlZ3JlcCAnXiAgW2EtekEtWjAtOV0nKQorCWZvciBpIGluICQoX19naXRfY29tbWFuZHMpCiAJZG8KIAkJY2FzZSAkaSBpbgogCQkqLS0qKSAgICAgICAgICAgICA6IGhlbHBlciBwYXR0ZXJuOzsKQEAgLTgzMyw3ICs3MjMsNyBAQAogewogCWxvY2FsIGkgSUZTPSIgIiQnXG4nCiAJX19naXRfY29tcHV0ZV9hbGxfY29tbWFuZHMKLQlmb3IgaSBpbiAiaGVscCIgJF9fZ2l0X2FsbF9jb21tYW5kcworCWZvciBpIGluICRfX2dpdF9hbGxfY29tbWFuZHMKIAlkbwogCQljYXNlICRpIGluCiAJCSotLSopICAgICAgICAgICAgIDogaGVscGVyIHBhdHRlcm47OwpAQCAtODQyLDYgKzczMiw3IEBACiAJCWFyY2hpbXBvcnQpICAgICAgIDogaW1wb3J0OzsKIAkJY2F0LWZpbGUpICAgICAgICAgOiBwbHVtYmluZzs7CiAJCWNoZWNrLWF0dHIpICAgICAgIDogcGx1bWJpbmc7OworCQljaGVjay1pZ25vcmUpICAgICA6IHBsdW1iaW5nOzsKIAkJY2hlY2stcmVmLWZvcm1hdCkgOiBwbHVtYmluZzs7CiAJCWNoZWNrb3V0LWluZGV4KSAgIDogcGx1bWJpbmc7OwogCQljb21taXQtdHJlZSkgICAgICA6IHBsdW1iaW5nOzsKQEAgLTEwMDEsNiArODkyLDQzIEBACiAJcmV0dXJuIDEKIH0KIAorIyBUcnkgdG8gY291bnQgbm9uIG9wdGlvbiBhcmd1bWVudHMgcGFzc2VkIG9uIHRoZSBjb21tYW5kIGxpbmUgZm9yIHRoZQorIyBzcGVjaWZpZWQgZ2l0IGNvbW1hbmQuCisjIFdoZW4gb3B0aW9ucyBhcmUgdXNlZCwgaXQgaXMgbmVjZXNzYXJ5IHRvIHVzZSB0aGUgc3BlY2lhbCAtLSBvcHRpb24gdG8KKyMgdGVsbCB0aGUgaW1wbGVtZW50YXRpb24gd2VyZSBub24gb3B0aW9uIGFyZ3VtZW50cyBiZWdpbi4KKyMgWFhYIHRoaXMgY2FuIG5vdCBiZSBpbXByb3ZlZCwgc2luY2Ugb3B0aW9ucyBjYW4gYXBwZWFyIGV2ZXJ5d2hlcmUsIGFzCisjIGFuIGV4YW1wbGU6CisjCWdpdCBtdiB4IC1uIHkKKyMKKyMgX19naXRfY291bnRfYXJndW1lbnRzIHJlcXVpcmVzIDEgYXJndW1lbnQ6IHRoZSBnaXQgY29tbWFuZCBleGVjdXRlZC4KK19fZ2l0X2NvdW50X2FyZ3VtZW50cyAoKQoreworCWxvY2FsIHdvcmQgaSBjPTAKKworCSMgU2tpcCAiZ2l0IiAoZmlyc3QgYXJndW1lbnQpCisJZm9yICgoaT0xOyBpIDwgJHsjd29yZHNbQF19OyBpKyspKTsgZG8KKwkJd29yZD0iJHt3b3Jkc1tpXX0iCisKKwkJY2FzZSAiJHdvcmQiIGluCisJCQktLSkKKwkJCQkjIEdvb2Q7IHdlIGNhbiBhc3N1bWUgdGhhdCB0aGUgZm9sbG93aW5nIGFyZSBvbmx5IG5vbgorCQkJCSMgb3B0aW9uIGFyZ3VtZW50cy4KKwkJCQkoKGMgPSAwKSkKKwkJCQk7OworCQkJIiQxIikKKwkJCQkjIFNraXAgdGhlIHNwZWNpZmllZCBnaXQgY29tbWFuZCBhbmQgZGlzY2FyZCBnaXQKKwkJCQkjIG1haW4gb3B0aW9ucworCQkJCSgoYyA9IDApKQorCQkJCTs7CisJCQk/KikKKwkJCQkoKGMrKykpCisJCQkJOzsKKwkJZXNhYworCWRvbmUKKworCXByaW50ZiAiJWQiICRjCit9CisKIF9fZ2l0X3doaXRlc3BhY2VsaXN0PSJub3dhcm4gd2FybiBlcnJvciBlcnJvci1hbGwgZml4IgogCiBfZ2l0X2FtICgpCkBAIC0xMDI0LDcgKzk1Miw2IEBACiAJCQkiCiAJCXJldHVybgogCWVzYWMKLQlDT01QUkVQTFk9KCkKIH0KIAogX2dpdF9hcHBseSAoKQpAQCAtMTA0NCwxMyArOTcxLDEwIEBACiAJCQkiCiAJCXJldHVybgogCWVzYWMKLQlDT01QUkVQTFk9KCkKIH0KIAogX2dpdF9hZGQgKCkKIHsKLQlfX2dpdF9oYXNfZG91YmxlZGFzaCAmJiByZXR1cm4KLQogCWNhc2UgIiRjdXIiIGluCiAJLS0qKQogCQlfX2dpdGNvbXAgIgpAQCAtMTA1OSw3ICs5ODMsOSBAQAogCQkJIgogCQlyZXR1cm4KIAllc2FjCi0JQ09NUFJFUExZPSgpCisKKwkjIFhYWCBzaG91bGQgd2UgY2hlY2sgZm9yIC0tdXBkYXRlIGFuZCAtLWFsbCBvcHRpb25zID8KKwlfX2dpdF9jb21wbGV0ZV9pbmRleF9maWxlICItLW90aGVycyAtLW1vZGlmaWVkIgogfQogCiBfZ2l0X2FyY2hpdmUgKCkKQEAgLTExMDQsNyArMTAzMCw2IEBACiAJCV9fZ2l0Y29tcF9ubCAiJChfX2dpdF9yZWZzKSIKIAkJOzsKIAkqKQotCQlDT01QUkVQTFk9KCkKIAkJOzsKIAllc2FjCiB9CkBAIC0xMTIzLDExICsxMDQ4LDE1IEBACiAJZG9uZQogCiAJY2FzZSAiJGN1ciIgaW4KKwktLXNldC11cHN0cmVhbS10bz0qKQorCQlfX2dpdGNvbXAgIiQoX19naXRfcmVmcykiICIiICIke2N1ciMjLS1zZXQtdXBzdHJlYW0tdG89fSIKKwkJOzsKIAktLSopCiAJCV9fZ2l0Y29tcCAiCiAJCQktLWNvbG9yIC0tbm8tY29sb3IgLS12ZXJib3NlIC0tYWJicmV2PSAtLW5vLWFiYnJldgogCQkJLS10cmFjayAtLW5vLXRyYWNrIC0tY29udGFpbnMgLS1tZXJnZWQgLS1uby1tZXJnZWQKLQkJCS0tc2V0LXVwc3RyZWFtIC0tZWRpdC1kZXNjcmlwdGlvbiAtLWxpc3QKKwkJCS0tc2V0LXVwc3RyZWFtLXRvPSAtLWVkaXQtZGVzY3JpcHRpb24gLS1saXN0CisJCQktLXVuc2V0LXVwc3RyZWFtCiAJCQkiCiAJCTs7CiAJKikKQEAgLTExOTMsOSArMTEyMiwxNCBAQAogCiBfZ2l0X2NoZXJyeV9waWNrICgpCiB7CisJbG9jYWwgZGlyPSIkKF9fZ2l0ZGlyKSIKKwlpZiBbIC1mICIkZGlyIi9DSEVSUllfUElDS19IRUFEIF07IHRoZW4KKwkJX19naXRjb21wICItLWNvbnRpbnVlIC0tcXVpdCAtLWFib3J0IgorCQlyZXR1cm4KKwlmaQogCWNhc2UgIiRjdXIiIGluCiAJLS0qKQotCQlfX2dpdGNvbXAgIi0tZWRpdCAtLW5vLWNvbW1pdCIKKwkJX19naXRjb21wICItLWVkaXQgLS1uby1jb21taXQgLS1zaWdub2ZmIC0tc3RyYXRlZ3k9IC0tbWFpbmxpbmUiCiAJCTs7CiAJKikKIAkJX19naXRjb21wX25sICIkKF9fZ2l0X3JlZnMpIgpAQCAtMTIwNSwxNSArMTEzOSwxNSBAQAogCiBfZ2l0X2NsZWFuICgpCiB7Ci0JX19naXRfaGFzX2RvdWJsZWRhc2ggJiYgcmV0dXJuCi0KIAljYXNlICIkY3VyIiBpbgogCS0tKikKIAkJX19naXRjb21wICItLWRyeS1ydW4gLS1xdWlldCIKIAkJcmV0dXJuCiAJCTs7CiAJZXNhYwotCUNPTVBSRVBMWT0oKQorCisJIyBYWFggc2hvdWxkIHdlIGNoZWNrIGZvciAteCBvcHRpb24gPworCV9fZ2l0X2NvbXBsZXRlX2luZGV4X2ZpbGUgIi0tb3RoZXJzIgogfQogCiBfZ2l0X2Nsb25lICgpCkBAIC0xMjMzLDE2ICsxMTY3LDIyIEBACiAJCQktLXVwbG9hZC1wYWNrCiAJCQktLXRlbXBsYXRlPQogCQkJLS1kZXB0aAorCQkJLS1zaW5nbGUtYnJhbmNoCisJCQktLWJyYW5jaAogCQkJIgogCQlyZXR1cm4KIAkJOzsKIAllc2FjCi0JQ09NUFJFUExZPSgpCiB9CiAKIF9naXRfY29tbWl0ICgpCiB7Ci0JX19naXRfaGFzX2RvdWJsZWRhc2ggJiYgcmV0dXJuCisJY2FzZSAiJHByZXYiIGluCisJLWN8LUMpCisJCV9fZ2l0Y29tcF9ubCAiJChfX2dpdF9yZWZzKSIgIiIgIiR7Y3VyfSIKKwkJcmV0dXJuCisJCTs7CisJZXNhYwogCiAJY2FzZSAiJGN1ciIgaW4KIAktLWNsZWFudXA9KikKQEAgLTEyNjIsNyArMTIwMiw4IEBACiAJLS0qKQogCQlfX2dpdGNvbXAgIgogCQkJLS1hbGwgLS1hdXRob3I9IC0tc2lnbm9mZiAtLXZlcmlmeSAtLW5vLXZlcmlmeQotCQkJLS1lZGl0IC0tYW1lbmQgLS1pbmNsdWRlIC0tb25seSAtLWludGVyYWN0aXZlCisJCQktLWVkaXQgLS1uby1lZGl0CisJCQktLWFtZW5kIC0taW5jbHVkZSAtLW9ubHkgLS1pbnRlcmFjdGl2ZQogCQkJLS1kcnktcnVuIC0tcmV1c2UtbWVzc2FnZT0gLS1yZWVkaXQtbWVzc2FnZT0KIAkJCS0tcmVzZXQtYXV0aG9yIC0tZmlsZT0gLS1tZXNzYWdlPSAtLXRlbXBsYXRlPQogCQkJLS1jbGVhbnVwPSAtLXVudHJhY2tlZC1maWxlcyAtLXVudHJhY2tlZC1maWxlcz0KQEAgLTEyNzAsNyArMTIxMSwxMyBAQAogCQkJIgogCQlyZXR1cm4KIAllc2FjCi0JQ09NUFJFUExZPSgpCisKKwlpZiBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IC0tcXVpZXQgSEVBRCA+L2Rldi9udWxsOyB0aGVuCisJCV9fZ2l0X2NvbXBsZXRlX2RpZmZfaW5kZXhfZmlsZSAiSEVBRCIKKwllbHNlCisJCSMgVGhpcyBpcyB0aGUgZmlyc3QgY29tbWl0CisJCV9fZ2l0X2NvbXBsZXRlX2luZGV4X2ZpbGUgIi0tY2FjaGVkIgorCWZpCiB9CiAKIF9naXRfZGVzY3JpYmUgKCkKQEAgLTEyODYsNiArMTIzMyw4IEBACiAJX19naXRjb21wX25sICIkKF9fZ2l0X3JlZnMpIgogfQogCitfX2dpdF9kaWZmX2FsZ29yaXRobXM9Im15ZXJzIG1pbmltYWwgcGF0aWVuY2UgaGlzdG9ncmFtIgorCiBfX2dpdF9kaWZmX2NvbW1vbl9vcHRpb25zPSItLXN0YXQgLS1udW1zdGF0IC0tc2hvcnRzdGF0IC0tc3VtbWFyeQogCQkJLS1wYXRjaC13aXRoLXN0YXQgLS1uYW1lLW9ubHkgLS1uYW1lLXN0YXR1cyAtLWNvbG9yCiAJCQktLW5vLWNvbG9yIC0tY29sb3Itd29yZHMgLS1uby1yZW5hbWVzIC0tY2hlY2sKQEAgLTEyOTYsMTAgKzEyNDUsMTEgQEAKIAkJCS0tbm8tZXh0LWRpZmYKIAkJCS0tbm8tcHJlZml4IC0tc3JjLXByZWZpeD0gLS1kc3QtcHJlZml4PQogCQkJLS1pbnRlci1odW5rLWNvbnRleHQ9Ci0JCQktLXBhdGllbmNlCi0JCQktLXJhdworCQkJLS1wYXRpZW5jZSAtLWhpc3RvZ3JhbSAtLW1pbmltYWwKKwkJCS0tcmF3IC0td29yZC1kaWZmCiAJCQktLWRpcnN0YXQgLS1kaXJzdGF0PSAtLWRpcnN0YXQtYnktZmlsZQogCQkJLS1kaXJzdGF0LWJ5LWZpbGU9IC0tY3VtdWxhdGl2ZQorCQkJLS1kaWZmLWFsZ29yaXRobT0KICIKIAogX2dpdF9kaWZmICgpCkBAIC0xMzA3LDYgKzEyNTcsMTAgQEAKIAlfX2dpdF9oYXNfZG91YmxlZGFzaCAmJiByZXR1cm4KIAogCWNhc2UgIiRjdXIiIGluCisJLS1kaWZmLWFsZ29yaXRobT0qKQorCQlfX2dpdGNvbXAgIiRfX2dpdF9kaWZmX2FsZ29yaXRobXMiICIiICIke2N1ciMjLS1kaWZmLWFsZ29yaXRobT19IgorCQlyZXR1cm4KKwkJOzsKIAktLSopCiAJCV9fZ2l0Y29tcCAiLS1jYWNoZWQgLS1zdGFnZWQgLS1waWNrYXhlLWFsbCAtLXBpY2theGUtcmVnZXgKIAkJCS0tYmFzZSAtLW91cnMgLS10aGVpcnMgLS1uby1pbmRleApAQCAtMTMxOSw3ICsxMjczLDcgQEAKIH0KIAogX19naXRfbWVyZ2V0b29sc19jb21tb249ImRpZmZ1c2UgZWNtZXJnZSBlbWVyZ2Uga2RpZmYzIG1lbGQgb3BlbmRpZmYKLQkJCXRrZGlmZiB2aW1kaWZmIGd2aW1kaWZmIHh4ZGlmZiBhcmF4aXMgcDRtZXJnZSBiYzMKKwkJCXRrZGlmZiB2aW1kaWZmIGd2aW1kaWZmIHh4ZGlmZiBhcmF4aXMgcDRtZXJnZSBiYzMgY29kZWNvbXBhcmUKICIKIAogX2dpdF9kaWZmdG9vbCAoKQpAQCAtMTM1OSw2ICsxMzEzLDE1IEBACiAJX19naXRfY29tcGxldGVfcmVtb3RlX29yX3JlZnNwZWMKIH0KIAorX19naXRfZm9ybWF0X3BhdGNoX29wdGlvbnM9IgorCS0tc3Rkb3V0IC0tYXR0YWNoIC0tbm8tYXR0YWNoIC0tdGhyZWFkIC0tdGhyZWFkPSAtLW5vLXRocmVhZAorCS0tbnVtYmVyZWQgLS1zdGFydC1udW1iZXIgLS1udW1iZXJlZC1maWxlcyAtLWtlZXAtc3ViamVjdCAtLXNpZ25vZmYKKwktLXNpZ25hdHVyZSAtLW5vLXNpZ25hdHVyZSAtLWluLXJlcGx5LXRvPSAtLWNjPSAtLWZ1bGwtaW5kZXggLS1iaW5hcnkKKwktLW5vdCAtLWFsbCAtLWNvdmVyLWxldHRlciAtLW5vLXByZWZpeCAtLXNyYy1wcmVmaXg9IC0tZHN0LXByZWZpeD0KKwktLWlubGluZSAtLXN1ZmZpeD0gLS1pZ25vcmUtaWYtaW4tdXBzdHJlYW0gLS1zdWJqZWN0LXByZWZpeD0KKwktLW91dHB1dC1kaXJlY3RvcnkgLS1yZXJvbGwtY291bnQgLS10bz0gLS1xdWlldCAtLW5vdGVzCisiCisKIF9naXRfZm9ybWF0X3BhdGNoICgpCiB7CiAJY2FzZSAiJGN1ciIgaW4KQEAgLTEzNjksMjEgKzEzMzIsNyBAQAogCQlyZXR1cm4KIAkJOzsKIAktLSopCi0JCV9fZ2l0Y29tcCAiCi0JCQktLXN0ZG91dCAtLWF0dGFjaCAtLW5vLWF0dGFjaCAtLXRocmVhZCAtLXRocmVhZD0KLQkJCS0tb3V0cHV0LWRpcmVjdG9yeQotCQkJLS1udW1iZXJlZCAtLXN0YXJ0LW51bWJlcgotCQkJLS1udW1iZXJlZC1maWxlcwotCQkJLS1rZWVwLXN1YmplY3QKLQkJCS0tc2lnbm9mZiAtLXNpZ25hdHVyZSAtLW5vLXNpZ25hdHVyZQotCQkJLS1pbi1yZXBseS10bz0gLS1jYz0KLQkJCS0tZnVsbC1pbmRleCAtLWJpbmFyeQotCQkJLS1ub3QgLS1hbGwKLQkJCS0tY292ZXItbGV0dGVyCi0JCQktLW5vLXByZWZpeCAtLXNyYy1wcmVmaXg9IC0tZHN0LXByZWZpeD0KLQkJCS0taW5saW5lIC0tc3VmZml4PSAtLWlnbm9yZS1pZi1pbi11cHN0cmVhbQotCQkJLS1zdWJqZWN0LXByZWZpeD0KLQkJCSIKKwkJX19naXRjb21wICIkX19naXRfZm9ybWF0X3BhdGNoX29wdGlvbnMiCiAJCXJldHVybgogCQk7OwogCWVzYWMKQEAgLTE0MDEsNyArMTM1MCw2IEBACiAJCXJldHVybgogCQk7OwogCWVzYWMKLQlDT01QUkVQTFk9KCkKIH0KIAogX2dpdF9nYyAoKQpAQCAtMTQxMiw3ICsxMzYwLDYgQEAKIAkJcmV0dXJuCiAJCTs7CiAJZXNhYwotCUNPTVBSRVBMWT0oKQogfQogCiBfZ2l0X2dpdGsgKCkKQEAgLTE0ODksMTMgKzE0MzYsMTAgQEAKIAkJcmV0dXJuCiAJCTs7CiAJZXNhYwotCUNPTVBSRVBMWT0oKQogfQogCiBfZ2l0X2xzX2ZpbGVzICgpCiB7Ci0JX19naXRfaGFzX2RvdWJsZWRhc2ggJiYgcmV0dXJuCi0KIAljYXNlICIkY3VyIiBpbgogCS0tKikKIAkJX19naXRjb21wICItLWNhY2hlZCAtLWRlbGV0ZWQgLS1tb2RpZmllZCAtLW90aGVycyAtLWlnbm9yZWQKQEAgLTE1MDgsNyArMTQ1MiwxMCBAQAogCQlyZXR1cm4KIAkJOzsKIAllc2FjCi0JQ09NUFJFUExZPSgpCisKKwkjIFhYWCBpZ25vcmUgb3B0aW9ucyBsaWtlIC0tbW9kaWZpZWQgYW5kIGFsd2F5cyBzdWdnZXN0IGFsbCBjYWNoZWQKKwkjIGZpbGVzLgorCV9fZ2l0X2NvbXBsZXRlX2luZGV4X2ZpbGUgIi0tY2FjaGVkIgogfQogCiBfZ2l0X2xzX3JlbW90ZSAoKQpAQCAtMTYyNCw3ICsxNTcxLDYgQEAKIAkJcmV0dXJuCiAJCTs7CiAJZXNhYwotCUNPTVBSRVBMWT0oKQogfQogCiBfZ2l0X21lcmdlX2Jhc2UgKCkKQEAgLTE2NDAsNyArMTU4NiwxNCBAQAogCQlyZXR1cm4KIAkJOzsKIAllc2FjCi0JQ09NUFJFUExZPSgpCisKKwlpZiBbICQoX19naXRfY291bnRfYXJndW1lbnRzICJtdiIpIC1ndCAwIF07IHRoZW4KKwkJIyBXZSBuZWVkIHRvIHNob3cgYm90aCBjYWNoZWQgYW5kIHVudHJhY2tlZCBmaWxlcyAoaW5jbHVkaW5nCisJCSMgZW1wdHkgZGlyZWN0b3JpZXMpIHNpbmNlIHRoaXMgbWF5IG5vdCBiZSB0aGUgbGFzdCBhcmd1bWVudC4KKwkJX19naXRfY29tcGxldGVfaW5kZXhfZmlsZSAiLS1jYWNoZWQgLS1vdGhlcnMgLS1kaXJlY3RvcnkiCisJZWxzZQorCQlfX2dpdF9jb21wbGV0ZV9pbmRleF9maWxlICItLWNhY2hlZCIKKwlmaQogfQogCiBfZ2l0X25hbWVfcmV2ICgpCkBAIC0xNzk3LDYgKzE3NTAsMTIgQEAKIAkJX19naXRjb21wICJzc2wgdGxzIiAiIiAiJHtjdXIjIy0tc210cC1lbmNyeXB0aW9uPX0iCiAJCXJldHVybgogCQk7OworCS0tdGhyZWFkPSopCisJCV9fZ2l0Y29tcCAiCisJCQlkZWVwIHNoYWxsb3cKKwkJCSIgIiIgIiR7Y3VyIyMtLXRocmVhZD19IgorCQlyZXR1cm4KKwkJOzsKIAktLSopCiAJCV9fZ2l0Y29tcCAiLS1hbm5vdGF0ZSAtLWJjYyAtLWNjIC0tY2MtY21kIC0tY2hhaW4tcmVwbHktdG8KIAkJCS0tY29tcG9zZSAtLWNvbmZpcm09IC0tZHJ5LXJ1biAtLWVudmVsb3BlLXNlbmRlcgpAQCAtMTgwNiwxMSArMTc2NSwxMiBAQAogCQkJLS1zaWduZWQtb2ZmLWJ5LWNjIC0tc210cC1wYXNzIC0tc210cC1zZXJ2ZXIKIAkJCS0tc210cC1zZXJ2ZXItcG9ydCAtLXNtdHAtZW5jcnlwdGlvbj0gLS1zbXRwLXVzZXIKIAkJCS0tc3ViamVjdCAtLXN1cHByZXNzLWNjPSAtLXN1cHByZXNzLWZyb20gLS10aHJlYWQgLS10bwotCQkJLS12YWxpZGF0ZSAtLW5vLXZhbGlkYXRlIgorCQkJLS12YWxpZGF0ZSAtLW5vLXZhbGlkYXRlCisJCQkkX19naXRfZm9ybWF0X3BhdGNoX29wdGlvbnMiCiAJCXJldHVybgogCQk7OwogCWVzYWMKLQlDT01QUkVQTFk9KCkKKwlfX2dpdF9jb21wbGV0ZV9yZXZsaXN0CiB9CiAKIF9naXRfc3RhZ2UgKCkKQEAgLTE4MjQsNyArMTc4NCw3IEBACiAJd2hpbGUgWyAkYyAtZ3QgMSBdOyBkbwogCQl3b3JkPSIke3dvcmRzW2NdfSIKIAkJY2FzZSAiJHdvcmQiIGluCi0JCS0tZ2xvYmFsfC0tc3lzdGVtfC0tZmlsZT0qKQorCQktLXN5c3RlbXwtLWdsb2JhbHwtLWxvY2FsfC0tZmlsZT0qKQogCQkJY29uZmlnX2ZpbGU9IiR3b3JkIgogCQkJYnJlYWsKIAkJCTs7CkBAIC0xODUxLDcgKzE4MTEsNyBAQAogX2dpdF9jb25maWcgKCkKIHsKIAljYXNlICIkcHJldiIgaW4KLQlicmFuY2guKi5yZW1vdGUpCisJYnJhbmNoLioucmVtb3RlfGJyYW5jaC4qLnB1c2hyZW1vdGUpCiAJCV9fZ2l0Y29tcF9ubCAiJChfX2dpdF9yZW1vdGVzKSIKIAkJcmV0dXJuCiAJCTs7CkBAIC0xODU5LDExICsxODE5LDE5IEBACiAJCV9fZ2l0Y29tcF9ubCAiJChfX2dpdF9yZWZzKSIKIAkJcmV0dXJuCiAJCTs7CisJYnJhbmNoLioucmViYXNlKQorCQlfX2dpdGNvbXAgImZhbHNlIHRydWUiCisJCXJldHVybgorCQk7OworCXJlbW90ZS5wdXNoZGVmYXVsdCkKKwkJX19naXRjb21wX25sICIkKF9fZ2l0X3JlbW90ZXMpIgorCQlyZXR1cm4KKwkJOzsKIAlyZW1vdGUuKi5mZXRjaCkKIAkJbG9jYWwgcmVtb3RlPSIke3ByZXYjcmVtb3RlLn0iCiAJCXJlbW90ZT0iJHtyZW1vdGUlLmZldGNofSIKIAkJaWYgWyAteiAiJGN1ciIgXTsgdGhlbgotCQkJQ09NUFJFUExZPSgicmVmcy9oZWFkcy8iKQorCQkJX19naXRjb21wX25sICJyZWZzL2hlYWRzLyIgIiIgIiIgIiIKIAkJCXJldHVybgogCQlmaQogCQlfX2dpdGNvbXBfbmwgIiQoX19naXRfcmVmc19yZW1vdGVzICIkcmVtb3RlIikiCkBAIC0xODk4LDYgKzE4NjYsMTAgQEAKIAkJCSIKIAkJcmV0dXJuCiAJCTs7CisJZGlmZi5zdWJtb2R1bGUpCisJCV9fZ2l0Y29tcCAibG9nIHNob3J0IgorCQlyZXR1cm4KKwkJOzsKIAloZWxwLmZvcm1hdCkKIAkJX19naXRjb21wICJtYW4gaW5mbyB3ZWIgaHRtbCIKIAkJcmV0dXJuCkBAIC0xOTIzLDE0ICsxODk1LDEzIEBACiAJCXJldHVybgogCQk7OwogCSouKikKLQkJQ09NUFJFUExZPSgpCiAJCXJldHVybgogCQk7OwogCWVzYWMKIAljYXNlICIkY3VyIiBpbgogCS0tKikKIAkJX19naXRjb21wICIKLQkJCS0tZ2xvYmFsIC0tc3lzdGVtIC0tZmlsZT0KKwkJCS0tc3lzdGVtIC0tZ2xvYmFsIC0tbG9jYWwgLS1maWxlPQogCQkJLS1saXN0IC0tcmVwbGFjZS1hbGwKIAkJCS0tZ2V0IC0tZ2V0LWFsbCAtLWdldC1yZWdleHAKIAkJCS0tYWRkIC0tdW5zZXQgLS11bnNldC1hbGwKQEAgLTE5NDAsNyArMTkxMSw3IEBACiAJCTs7CiAJYnJhbmNoLiouKikKIAkJbG9jYWwgcGZ4PSIke2N1ciUuKn0uIiBjdXJfPSIke2N1ciMjKi59IgotCQlfX2dpdGNvbXAgInJlbW90ZSBtZXJnZSBtZXJnZW9wdGlvbnMgcmViYXNlIiAiJHBmeCIgIiRjdXJfIgorCQlfX2dpdGNvbXAgInJlbW90ZSBwdXNocmVtb3RlIG1lcmdlIG1lcmdlb3B0aW9ucyByZWJhc2UiICIkcGZ4IiAiJGN1cl8iCiAJCXJldHVybgogCQk7OwogCWJyYW5jaC4qKQpAQCAtMjA5MywxNiArMjA2NCwxOCBAQAogCQljb3JlLndoaXRlc3BhY2UKIAkJY29yZS53b3JrdHJlZQogCQlkaWZmLmF1dG9yZWZyZXNoaW5kZXgKLQkJZGlmZi5zdGF0R3JhcGhXaWR0aAogCQlkaWZmLmV4dGVybmFsCiAJCWRpZmYuaWdub3JlU3VibW9kdWxlcwogCQlkaWZmLm1uZW1vbmljcHJlZml4CiAJCWRpZmYubm9wcmVmaXgKIAkJZGlmZi5yZW5hbWVMaW1pdAogCQlkaWZmLnJlbmFtZXMKKwkJZGlmZi5zdGF0R3JhcGhXaWR0aAorCQlkaWZmLnN1Ym1vZHVsZQogCQlkaWZmLnN1cHByZXNzQmxhbmtFbXB0eQogCQlkaWZmLnRvb2wKIAkJZGlmZi53b3JkUmVnZXgKKwkJZGlmZi5hbGdvcml0aG0KIAkJZGlmZnRvb2wuCiAJCWRpZmZ0b29sLnByb21wdAogCQlmZXRjaC5yZWN1cnNlU3VibW9kdWxlcwpAQCAtMjIzMyw2ICsyMjA2LDcgQEAKIAkJcmVjZWl2ZS5mc2NrT2JqZWN0cwogCQlyZWNlaXZlLnVucGFja0xpbWl0CiAJCXJlY2VpdmUudXBkYXRlc2VydmVyaW5mbworCQlyZW1vdGUucHVzaGRlZmF1bHQKIAkJcmVtb3Rlcy4KIAkJcmVwYWNrLnVzZWRlbHRhYmFzZW9mZnNldAogCQlyZXJlcmUuYXV0b3VwZGF0ZQpAQCAtMjI4MCw3ICsyMjU0LDcgQEAKIAogX2dpdF9yZW1vdGUgKCkKIHsKLQlsb2NhbCBzdWJjb21tYW5kcz0iYWRkIHJlbmFtZSBybSBzZXQtaGVhZCBzZXQtYnJhbmNoZXMgc2V0LXVybCBzaG93IHBydW5lIHVwZGF0ZSIKKwlsb2NhbCBzdWJjb21tYW5kcz0iYWRkIHJlbmFtZSByZW1vdmUgc2V0LWhlYWQgc2V0LWJyYW5jaGVzIHNldC11cmwgc2hvdyBwcnVuZSB1cGRhdGUiCiAJbG9jYWwgc3ViY29tbWFuZD0iJChfX2dpdF9maW5kX29uX2NtZGxpbmUgIiRzdWJjb21tYW5kcyIpIgogCWlmIFsgLXogIiRzdWJjb21tYW5kIiBdOyB0aGVuCiAJCV9fZ2l0Y29tcCAiJHN1YmNvbW1hbmRzIgpAQCAtMjI4OCw3ICsyMjYyLDcgQEAKIAlmaQogCiAJY2FzZSAiJHN1YmNvbW1hbmQiIGluCi0JcmVuYW1lfHJtfHNldC11cmx8c2hvd3xwcnVuZSkKKwlyZW5hbWV8cmVtb3ZlfHNldC11cmx8c2hvd3xwcnVuZSkKIAkJX19naXRjb21wX25sICIkKF9fZ2l0X3JlbW90ZXMpIgogCQk7OwogCXNldC1oZWFkfHNldC1icmFuY2hlcykKQEAgLTIzMDMsNyArMjI3Nyw2IEBACiAJCV9fZ2l0Y29tcCAiJGMiCiAJCTs7CiAJKikKLQkJQ09NUFJFUExZPSgpCiAJCTs7CiAJZXNhYwogfQpAQCAtMjMzOSwxNSArMjMxMiwxNCBAQAogCiBfZ2l0X3JtICgpCiB7Ci0JX19naXRfaGFzX2RvdWJsZWRhc2ggJiYgcmV0dXJuCi0KIAljYXNlICIkY3VyIiBpbgogCS0tKikKIAkJX19naXRjb21wICItLWNhY2hlZCAtLWRyeS1ydW4gLS1pZ25vcmUtdW5tYXRjaCAtLXF1aWV0IgogCQlyZXR1cm4KIAkJOzsKIAllc2FjCi0JQ09NUFJFUExZPSgpCisKKwlfX2dpdF9jb21wbGV0ZV9pbmRleF9maWxlICItLWNhY2hlZCIKIH0KIAogX2dpdF9zaG9ydGxvZyAoKQpAQCAtMjM3Nyw2ICsyMzQ5LDEwIEBACiAJCQkiICIiICIke2N1ciMqPX0iCiAJCXJldHVybgogCQk7OworCS0tZGlmZi1hbGdvcml0aG09KikKKwkJX19naXRjb21wICIkX19naXRfZGlmZl9hbGdvcml0aG1zIiAiIiAiJHtjdXIjIy0tZGlmZi1hbGdvcml0aG09fSIKKwkJcmV0dXJuCisJCTs7CiAJLS0qKQogCQlfX2dpdGNvbXAgIi0tcHJldHR5PSAtLWZvcm1hdD0gLS1hYmJyZXYtY29tbWl0IC0tb25lbGluZQogCQkJJF9fZ2l0X2RpZmZfY29tbW9uX29wdGlvbnMKQEAgLTI0MTYsOCArMjM5Miw2IEBACiAJCSopCiAJCQlpZiBbIC16ICIkKF9fZ2l0X2ZpbmRfb25fY21kbGluZSAiJHNhdmVfb3B0cyIpIiBdOyB0aGVuCiAJCQkJX19naXRjb21wICIkc3ViY29tbWFuZHMiCi0JCQllbHNlCi0JCQkJQ09NUFJFUExZPSgpCiAJCQlmaQogCQkJOzsKIAkJZXNhYwpAQCAtMjQzMCwxNCArMjQwNCwxMiBAQAogCQkJX19naXRjb21wICItLWluZGV4IC0tcXVpZXQiCiAJCQk7OwogCQlzaG93LC0tKnxkcm9wLC0tKnxicmFuY2gsLS0qKQotCQkJQ09NUFJFUExZPSgpCiAJCQk7OwogCQlzaG93LCp8YXBwbHksKnxkcm9wLCp8cG9wLCp8YnJhbmNoLCopCiAJCQlfX2dpdGNvbXBfbmwgIiQoZ2l0IC0tZ2l0LWRpcj0iJChfX2dpdGRpcikiIHN0YXNoIGxpc3QgXAogCQkJCQl8IHNlZCAtbiAtZSAncy86LiovL3AnKSIKIAkJCTs7CiAJCSopCi0JCQlDT01QUkVQTFk9KCkKIAkJCTs7CiAJCWVzYWMKIAlmaQpAQCAtMjQ0Nyw3ICsyNDE5LDcgQEAKIHsKIAlfX2dpdF9oYXNfZG91YmxlZGFzaCAmJiByZXR1cm4KIAotCWxvY2FsIHN1YmNvbW1hbmRzPSJhZGQgc3RhdHVzIGluaXQgdXBkYXRlIHN1bW1hcnkgZm9yZWFjaCBzeW5jIgorCWxvY2FsIHN1YmNvbW1hbmRzPSJhZGQgc3RhdHVzIGluaXQgZGVpbml0IHVwZGF0ZSBzdW1tYXJ5IGZvcmVhY2ggc3luYyIKIAlpZiBbIC16ICIkKF9fZ2l0X2ZpbmRfb25fY21kbGluZSAiJHN1YmNvbW1hbmRzIikiIF07IHRoZW4KIAkJY2FzZSAiJGN1ciIgaW4KIAkJLS0qKQpAQCAtMjQ3OSw3ICsyNDUxLDcgQEAKIAkJCS0tbm8tbWV0YWRhdGEgLS11c2Utc3ZtLXByb3BzIC0tdXNlLXN2bnN5bmMtcHJvcHMKIAkJCS0tbG9nLXdpbmRvdy1zaXplPSAtLW5vLWNoZWNrb3V0IC0tcXVpZXQKIAkJCS0tcmVwYWNrLWZsYWdzIC0tdXNlLWxvZy1hdXRob3IgLS1sb2NhbHRpbWUKLQkJCS0taWdub3JlLXBhdGhzPSAkcmVtb3RlX29wdHMKKwkJCS0taWdub3JlLXBhdGhzPSAtLWluY2x1ZGUtcGF0aHM9ICRyZW1vdGVfb3B0cwogCQkJIgogCQlsb2NhbCBpbml0X29wdHM9IgogCQkJLS10ZW1wbGF0ZT0gLS1zaGFyZWQ9IC0tdHJ1bms9IC0tdGFncz0KQEAgLTI1NTQsNyArMjUyNiw2IEBACiAJCQlfX2dpdGNvbXAgIi0tcmV2aXNpb249IC0tcGFyZW50IgogCQkJOzsKIAkJKikKLQkJCUNPTVBSRVBMWT0oKQogCQkJOzsKIAkJZXNhYwogCWZpCkBAIC0yNTc5LDEzICsyNTUwLDEwIEBACiAKIAljYXNlICIkcHJldiIgaW4KIAktbXwtRikKLQkJQ09NUFJFUExZPSgpCiAJCTs7CiAJLSp8dGFnKQogCQlpZiBbICRmID0gMSBdOyB0aGVuCiAJCQlfX2dpdGNvbXBfbmwgIiQoX19naXRfdGFncykiCi0JCWVsc2UKLQkJCUNPTVBSRVBMWT0oKQogCQlmaQogCQk7OwogCSopCkBAIC0yNjcyLDIwICsyNjQwLDg4IEBACiAJX19naXRfY29tcGxldGVfcmV2bGlzdAogfQogCitpZiBbWyAtbiAke1pTSF9WRVJTSU9OLX0gXV07IHRoZW4KKwllY2hvICJXQVJOSU5HOiB0aGlzIHNjcmlwdCBpcyBkZXByZWNhdGVkLCBwbGVhc2Ugc2VlIGdpdC1jb21wbGV0aW9uLnpzaCIgMT4mMgorCisJYXV0b2xvYWQgLVUgK1ggY29tcGluaXQgJiYgY29tcGluaXQKKworCV9fZ2l0Y29tcCAoKQorCXsKKwkJZW11bGF0ZSAtTCB6c2gKKworCQlsb2NhbCBjdXJfPSIkezMtJGN1cn0iCisKKwkJY2FzZSAiJGN1cl8iIGluCisJCS0tKj0pCisJCQk7OworCQkqKQorCQkJbG9jYWwgYyBJRlM9JCcgXHRcbicKKwkJCWxvY2FsIC1hIGFycmF5CisJCQlmb3IgYyBpbiAkez0xfTsgZG8KKwkJCQljPSIkYyR7NC19IgorCQkJCWNhc2UgJGMgaW4KKwkJCQktLSo9KnwqLikgOzsKKwkJCQkqKSBjPSIkYyAiIDs7CisJCQkJZXNhYworCQkJCWFycmF5WyQjYXJyYXkrMV09IiRjIgorCQkJZG9uZQorCQkJY29tcHNldCAtUCAnKls9Ol0nCisJCQljb21wYWRkIC1RIC1TICcnIC1wICIkezItfSIgLWEgLS0gYXJyYXkgJiYgX3JldD0wCisJCQk7OworCQllc2FjCisJfQorCisJX19naXRjb21wX25sICgpCisJeworCQllbXVsYXRlIC1MIHpzaAorCisJCWxvY2FsIElGUz0kJ1xuJworCQljb21wc2V0IC1QICcqWz06XScKKwkJY29tcGFkZCAtUSAtUyAiJHs0LSB9IiAtcCAiJHsyLX0iIC0tICR7PTF9ICYmIF9yZXQ9MAorCX0KKworCV9fZ2l0Y29tcF9maWxlICgpCisJeworCQllbXVsYXRlIC1MIHpzaAorCisJCWxvY2FsIElGUz0kJ1xuJworCQljb21wc2V0IC1QICcqWz06XScKKwkJY29tcGFkZCAtUSAtcCAiJHsyLX0iIC1mIC0tICR7PTF9ICYmIF9yZXQ9MAorCX0KKworCV9fZ2l0X3pzaF9oZWxwZXIgKCkKKwl7CisJCWVtdWxhdGUgLUwga3NoCisJCWxvY2FsIGN1ciBjd29yZCBwcmV2CisJCWN1cj0ke3dvcmRzW0NVUlJFTlQtMV19CisJCXByZXY9JHt3b3Jkc1tDVVJSRU5ULTJdfQorCQlsZXQgY3dvcmQ9Q1VSUkVOVC0xCisJCV9fJHtzZXJ2aWNlfV9tYWluCisJfQorCisJX2dpdCAoKQorCXsKKwkJZW11bGF0ZSAtTCB6c2gKKwkJbG9jYWwgX3JldD0xCisJCV9fZ2l0X3pzaF9oZWxwZXIKKwkJbGV0IF9yZXQgJiYgX2RlZmF1bHQgLVMgJycgJiYgX3JldD0wCisJCXJldHVybiBfcmV0CisJfQorCisJY29tcGRlZiBfZ2l0IGdpdCBnaXRrCisJcmV0dXJuCitlbGlmIFtbIC1uICR7QkFTSF9WRVJTSU9OLX0gXV07IHRoZW4KKwlpZiAoKCR7QkFTSF9WRVJTSU5GT1swXX0gPCA0KSk7IHRoZW4KKwkJIyBjb21wb3B0IGlzIG5vdCBzdXBwb3J0ZWQKKwkJX19naXRfaW5kZXhfZmlsZV9saXN0X2ZpbHRlciAoKQorCQl7CisJCQlfX2dpdF9pbmRleF9maWxlX2xpc3RfZmlsdGVyX2NvbXBhdAorCQl9CisJZmkKK2ZpCisKIF9fZ2l0X2Z1bmNfd3JhcCAoKQogewotCWlmIFtbIC1uICR7WlNIX1ZFUlNJT04tfSBdXTsgdGhlbgotCQllbXVsYXRlIC1MIGJhc2gKLQkJc2V0b3B0IEtTSF9UWVBFU0VUCi0KLQkJIyB3b3JrYXJvdW5kIHpzaCdzIGJ1ZyB0aGF0IGxlYXZlcyAnd29yZHMnIGFzIGEgc3BlY2lhbAotCQkjIHZhcmlhYmxlIGluIHZlcnNpb25zIDwgNC4zLjEyCi0JCXR5cGVzZXQgLWggd29yZHMKLQotCQkjIHdvcmthcm91bmQgenNoJ3MgYnVnIHRoYXQgcXVvdGVzIHNwYWNlcyBpbiB0aGUgQ09NUFJFUExZCi0JCSMgYXJyYXkgaWYgSUZTIGRvZXNuJ3QgY29udGFpbiBzcGFjZXMuCi0JCXR5cGVzZXQgLWggSUZTCi0JZmkKIAlsb2NhbCBjdXIgd29yZHMgY3dvcmQgcHJldgogCV9nZXRfY29tcF93b3Jkc19ieV9yZWYgLW4gPTogY3VyIHdvcmRzIGN3b3JkIHByZXYKIAkkMQpkaWZmIC0tZ2l0IGEvY29udHJpYi9jb21wbGV0aW9uL2dpdC1jb21wbGV0aW9uLnRjc2ggYi9jb250cmliL2NvbXBsZXRpb24vZ2l0LWNvbXBsZXRpb24udGNzaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWFjYWYwCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9jb21wbGV0aW9uL2dpdC1jb21wbGV0aW9uLnRjc2gKQEAgLTAsMCArMSwxMjggQEAKKyMhdGNzaAorIworIyB0Y3NoIGNvbXBsZXRpb24gc3VwcG9ydCBmb3IgY29yZSBHaXQuCisjCisjIENvcHlyaWdodCAoQykgMjAxMiBNYXJjIEtob3V6YW0gPG1hcmMua2hvdXphbUBnbWFpbC5jb20+CisjIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLjAuCisjCisjIFdoZW4gc291cmNlZCwgdGhpcyBzY3JpcHQgd2lsbCBnZW5lcmF0ZSBhIG5ldyBzY3JpcHQgdGhhdCB1c2VzCisjIHRoZSBnaXQtY29tcGxldGlvbi5iYXNoIHNjcmlwdCBwcm92aWRlZCBieSBjb3JlIEdpdC4gIFRoaXMgbmV3CisjIHNjcmlwdCBjYW4gYmUgdXNlZCBieSB0Y3NoIHRvIHBlcmZvcm0gZ2l0IGNvbXBsZXRpb24uCisjIFRoZSBjdXJyZW50IHNjcmlwdCBhbHNvIGlzc3VlcyB0aGUgbmVjZXNzYXJ5IHRjc2ggJ2NvbXBsZXRlJworIyBjb21tYW5kcy4KKyMKKyMgVG8gdXNlIHRoaXMgY29tcGxldGlvbiBzY3JpcHQ6CisjCisjICAgIDApIFlvdSBuZWVkIHRjc2ggNi4xNi4wMCBvciBuZXdlci4KKyMgICAgMSkgQ29weSBib3RoIHRoaXMgZmlsZSBhbmQgdGhlIGJhc2ggY29tcGxldGlvbiBzY3JpcHQgdG8gJHtIT01FfS4KKyMgICAgICAgWW91IF9tdXN0XyB1c2UgdGhlIG5hbWUgJHtIT01FfS8uZ2l0LWNvbXBsZXRpb24uYmFzaCBmb3IgdGhlCisjICAgICAgIGJhc2ggc2NyaXB0LgorIyAgICAgICAoZS5nLiB+Ly5naXQtY29tcGxldGlvbi50Y3NoIGFuZCB+Ly5naXQtY29tcGxldGlvbi5iYXNoKS4KKyMgICAgMikgQWRkIHRoZSBmb2xsb3dpbmcgbGluZSB0byB5b3VyIC50Y3NocmMvLmNzaHJjOgorIyAgICAgICAgc291cmNlIH4vLmdpdC1jb21wbGV0aW9uLnRjc2gKKyMgICAgMykgRm9yIGNvbXBsZXRpb24gc2ltaWxhciB0byBiYXNoLCBpdCBpcyByZWNvbW1lbmRlZCB0byBhbHNvCisjICAgICAgIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8geW91ciAudGNzaHJjLy5jc2hyYzoKKyMgICAgICAgIHNldCBhdXRvbGlzdD1hbWJpZ3VvdXMKKyMgICAgICAgSXQgd2lsbCB0ZWxsIHRjc2ggdG8gbGlzdCB0aGUgcG9zc2libGUgY29tcGxldGlvbiBjaG9pY2VzLgorCitzZXQgX19naXRfdGNzaF9jb21wbGV0aW9uX3ZlcnNpb24gPSBgXGVjaG8gJHt0Y3NofSB8IFxzZWQgJ3MvXC4vIC9nJ2AKK2lmICggJHtfX2dpdF90Y3NoX2NvbXBsZXRpb25fdmVyc2lvblsxXX0gPCA2IHx8IFwKKyAgICAgKCAke19fZ2l0X3Rjc2hfY29tcGxldGlvbl92ZXJzaW9uWzFdfSA9PSA2ICYmIFwKKyAgICAgICAke19fZ2l0X3Rjc2hfY29tcGxldGlvbl92ZXJzaW9uWzJdfSA8IDE2ICkgKSB0aGVuCisJZWNobyAiZ2l0LWNvbXBsZXRpb24udGNzaDogWW91ciB2ZXJzaW9uIG9mIHRjc2ggaXMgdG9vIG9sZCwgeW91IG5lZWQgdmVyc2lvbiA2LjE2LjAwIG9yIG5ld2VyLiAgR2l0IGNvbXBsZXRpb24gd2lsbCBub3Qgd29yay4iCisJZXhpdAorZW5kaWYKK3Vuc2V0IF9fZ2l0X3Rjc2hfY29tcGxldGlvbl92ZXJzaW9uCisKK3NldCBfX2dpdF90Y3NoX2NvbXBsZXRpb25fb3JpZ2luYWxfc2NyaXB0ID0gJHtIT01FfS8uZ2l0LWNvbXBsZXRpb24uYmFzaAorc2V0IF9fZ2l0X3Rjc2hfY29tcGxldGlvbl9zY3JpcHQgPSAke0hPTUV9Ly5naXQtY29tcGxldGlvbi50Y3NoLmJhc2gKKworIyBDaGVjayB0aGF0IHRoZSB1c2VyIHB1dCB0aGUgc2NyaXB0IGluIHRoZSByaWdodCBwbGFjZQoraWYgKCAhIC1lICR7X19naXRfdGNzaF9jb21wbGV0aW9uX29yaWdpbmFsX3NjcmlwdH0gKSB0aGVuCisJZWNobyAiZ2l0LWNvbXBsZXRpb24udGNzaDogQ2Fubm90IGZpbmQ6ICR7X19naXRfdGNzaF9jb21wbGV0aW9uX29yaWdpbmFsX3NjcmlwdH0uICBHaXQgY29tcGxldGlvbiB3aWxsIG5vdCB3b3JrLiIKKwlleGl0CitlbmRpZgorCitjYXQgPDwgRU9GID4gJHtfX2dpdF90Y3NoX2NvbXBsZXRpb25fc2NyaXB0fQorIyFiYXNoCisjCisjIFRoaXMgc2NyaXB0IGlzIEdFTkVSQVRFRCBhbmQgd2lsbCBiZSBvdmVyd3JpdHRlbiBhdXRvbWF0aWNhbGx5LgorIyBEbyBub3QgbW9kaWZ5IGl0IGRpcmVjdGx5LiAgSW5zdGVhZCwgbW9kaWZ5IGdpdC1jb21wbGV0aW9uLnRjc2gKKyMgYW5kIHNvdXJjZSBpdCBhZ2Fpbi4KKworc291cmNlICR7X19naXRfdGNzaF9jb21wbGV0aW9uX29yaWdpbmFsX3NjcmlwdH0KKworIyBSZW1vdmUgdGhlIGNvbG9uIGFzIGEgY29tcGxldGlvbiBzZXBhcmF0b3IgYmVjYXVzZSB0Y3NoIGNhbm5vdCBoYW5kbGUgaXQKK0NPTVBfV09SREJSRUFLUz1cJHtDT01QX1dPUkRCUkVBS1MvLzp9CisKKyMgRm9yIGZpbGUgY29tcGxldGlvbiwgdGNzaCBuZWVkcyB0aGUgJy8nIHRvIGJlIGFwcGVuZGVkIHRvIGRpcmVjdG9yaWVzLgorIyBCeSBkZWZhdWx0LCB0aGUgYmFzaCBzY3JpcHQgZG9lcyBub3QgZG8gdGhhdC4KKyMgV2UgY2FuIGFjaGlldmUgdGhpcyBieSB1c2luZyB0aGUgYmVsb3cgY29tcGF0aWJpbGl0eQorIyBtZXRob2Qgb2YgdGhlIGdpdC1jb21wbGV0aW9uLmJhc2ggc2NyaXB0LgorX19naXRfaW5kZXhfZmlsZV9saXN0X2ZpbHRlciAoKQoreworCV9fZ2l0X2luZGV4X2ZpbGVfbGlzdF9maWx0ZXJfY29tcGF0Cit9CisKKyMgU2V0IENPTVBfV09SRFMgaW4gYSB3YXkgdGhhdCBjYW4gYmUgaGFuZGxlZCBieSB0aGUgYmFzaCBzY3JpcHQuCitDT01QX1dPUkRTPShcJDIpCisKKyMgVGhlIGN1cnNvciBpcyBhdCB0aGUgZW5kIG9mIHBhcmFtZXRlciAjMS4KKyMgV2UgbXVzdCBjaGVjayBmb3IgYSBzcGFjZSBhcyB0aGUgbGFzdCBjaGFyYWN0ZXIgd2hpY2ggd2lsbAorIyB0ZWxsIHVzIHRoYXQgdGhlIHByZXZpb3VzIHdvcmQgaXMgY29tcGxldGUgYW5kIHRoZSBjdXJzb3IKKyMgaXMgb24gdGhlIG5leHQgd29yZC4KK2lmIFsgIlwkezI6IC0xfSIgPT0gIiAiIF07IHRoZW4KKwkjIFRoZSBsYXN0IGNoYXJhY3RlciBpcyBhIHNwYWNlLCBzbyBvdXIgbG9jYXRpb24gaXMgYXQgdGhlIGVuZAorCSMgb2YgdGhlIGNvbW1hbmQtbGluZSBhcnJheQorCUNPTVBfQ1dPUkQ9XCR7I0NPTVBfV09SRFNbQF19CitlbHNlCisJIyBUaGUgbGFzdCBjaGFyYWN0ZXIgaXMgbm90IGEgc3BhY2UsIHNvIG91ciBsb2NhdGlvbiBpcyBvbiB0aGUKKwkjIGxhc3Qgd29yZCBvZiB0aGUgY29tbWFuZC1saW5lIGFycmF5LCBzbyB3ZSBtdXN0IGRlY3JlbWVudCB0aGUKKwkjIGNvdW50IGJ5IDEKKwlDT01QX0NXT1JEPVwkKChcJHsjQ09NUF9XT1JEU1tAXX0tMSkpCitmaQorCisjIENhbGwgX2dpdCgpIG9yIF9naXRrKCkgb2YgdGhlIGJhc2ggc2NyaXB0LCBiYXNlZCBvbiB0aGUgZmlyc3QgYXJndW1lbnQKK19cJHsxfQorCitJRlM9XCQnXG4nCitpZiBbIFwkeyNDT01QUkVQTFlbKl19IC1lcSAwIF07IHRoZW4KKwkjIE5vIGNvbXBsZXRpb25zIHN1Z2dlc3RlZC4gIEluIHRoaXMgY2FzZSwgd2Ugd2FudCB0Y3NoIHRvIHBlcmZvcm0KKwkjIHN0YW5kYXJkIGZpbGUgY29tcGxldGlvbi4gIEhvd2V2ZXIsIHRoZXJlIGRvZXMgbm90IHNlZW0gdG8gYmUgd2F5CisJIyB0byB0ZWxsIHRjc2ggdG8gZG8gdGhhdC4gIFRvIGhlbHAgdGhlIHVzZXIsIHdlIHRyeSB0byBzaW11bGF0ZQorCSMgZmlsZSBjb21wbGV0aW9uIGRpcmVjdGx5IGluIHRoaXMgc2NyaXB0LgorCSMKKwkjIEtub3duIGlzc3VlczoKKwkjICAgICAtIFBvc3NpYmxlIGNvbXBsZXRpb25zIGFyZSBzaG93biB3aXRoIHRoZWlyIGRpcmVjdG9yeSBwcmVmaXguCisJIyAgICAgLSBDb21wbGV0aW9ucyBjb250YWluaW5nIHNoZWxsIHZhcmlhYmxlcyBhcmUgbm90IGhhbmRsZWQuCisJIyAgICAgLSBDb21wbGV0aW9ucyB3aXRoIH4gYXMgdGhlIGZpcnN0IGNoYXJhY3RlciBhcmUgbm90IGhhbmRsZWQuCisKKwkjIE5vIGZpbGUgY29tcGxldGlvbiBzaG91bGQgYmUgZG9uZSB1bmxlc3Mgd2UgYXJlIGNvbXBsZXRpbmcgYmV5b25kCisJIyB0aGUgZ2l0IHN1Yi1jb21tYW5kLiAgQW4gaW1wcm92ZW1lbnQgb24gdGhlIGJhc2ggY29tcGxldGlvbiA6KQorCWlmIFsgXCR7Q09NUF9DV09SRH0gLWd0IDEgXTsgdGhlbgorCQlUT19DT01QTEVURT0iXCR7Q09NUF9XT1JEU1tcJHtDT01QX0NXT1JEfV19IgorCisJCSMgV2UgZG9uJ3Qgc3VwcG9ydCB+IGV4cGFuc2lvbjogdG9vIHRyaWNreS4KKwkJaWYgWyAiXCR7VE9fQ09NUExFVEU6MDoxfSIgIT0gIn4iIF07IHRoZW4KKwkJCSMgVXNlIGxzIHNvIGFzIHRvIGFkZCB0aGUgJy8nIGF0IHRoZSBlbmQgb2YgZGlyZWN0b3JpZXMuCisJCQlDT01QUkVQTFk9KFxgbHMgLWRwIFwke1RPX0NPTVBMRVRFfSogMj4gL2Rldi9udWxsXGApCisJCWZpCisJZmkKK2ZpCisKKyMgdGNzaCBkb2VzIG5vdCBhdXRvbWF0aWNhbGx5IHJlbW92ZSBkdXBsaWNhdGVzLCBzbyB3ZSBkbyBpdCBvdXJzZWx2ZXMKK2VjaG8gIlwke0NPTVBSRVBMWVsqXX0iIHwgc29ydCB8IHVuaXEKKworIyBJZiB0aGVyZSBpcyBhIHNpbmdsZSBjb21wbGV0aW9uIGFuZCBpdCBpcyBhIGRpcmVjdG9yeSwgd2Ugb3V0cHV0IGl0CisjIGEgc2Vjb25kIHRpbWUgdG8gdHJpY2sgdGNzaCBpbnRvIG5vdCBhZGRpbmcgYSBzcGFjZSBhZnRlciBpdC4KK2lmIFsgXCR7I0NPTVBSRVBMWVsqXX0gLWVxIDEgXSAmJiBbICJcJHtDT01QUkVQTFlbMF06IC0xfSIgPT0gIi8iIF07IHRoZW4KKwllY2hvICJcJHtDT01QUkVQTFlbKl19IgorZmkKKworRU9GCisKKyMgRG9uJ3QgbmVlZCB0aGlzIHZhcmlhYmxlIGFueW1vcmUsIHNvIGRvbid0IHBvbGx1dGUgdGhlIHVzZXJzIGVudmlyb25tZW50Cit1bnNldCBfX2dpdF90Y3NoX2NvbXBsZXRpb25fb3JpZ2luYWxfc2NyaXB0CisKK2NvbXBsZXRlIGdpdCAgJ3AsKixgYmFzaCAke19fZ2l0X3Rjc2hfY29tcGxldGlvbl9zY3JpcHR9IGdpdCAiJHtDT01NQU5EX0xJTkV9ImAsJworY29tcGxldGUgZ2l0ayAncCwqLGBiYXNoICR7X19naXRfdGNzaF9jb21wbGV0aW9uX3NjcmlwdH0gZ2l0ayAiJHtDT01NQU5EX0xJTkV9ImAsJwpkaWZmIC0tZ2l0IGEvY29udHJpYi9jb21wbGV0aW9uL2dpdC1jb21wbGV0aW9uLnpzaCBiL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi56c2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU2NWQyZQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi56c2gKQEAgLTAsMCArMSwyMDUgQEAKKyNjb21wZGVmIGdpdCBnaXRrCisKKyMgenNoIGNvbXBsZXRpb24gd3JhcHBlciBmb3IgZ2l0CisjCisjIENvcHlyaWdodCAoYykgMjAxMi0yMDEzIEZlbGlwZSBDb250cmVyYXMgPGZlbGlwZS5jb250cmVyYXNAZ21haWwuY29tPgorIworIyBZb3UgbmVlZCBnaXQncyBiYXNoIGNvbXBsZXRpb24gc2NyaXB0IGluc3RhbGxlZCBzb21ld2hlcmUsIGJ5IGRlZmF1bHQgb24gdGhlCisjIHNhbWUgZGlyZWN0b3J5IGFzIHRoaXMgc2NyaXB0LgorIworIyBJZiB5b3VyIHNjcmlwdCBpcyBvbiB+Ly5naXQtY29tcGxldGlvbi5zaCBpbnN0ZWFkLCB5b3UgY2FuIGNvbmZpZ3VyZSBpdCBvbgorIyB5b3VyIH4vLnpzaHJjOgorIworIyAgenN0eWxlICc6Y29tcGxldGlvbjoqOio6Z2l0OionIHNjcmlwdCB+Ly5naXQtY29tcGxldGlvbi5zaAorIworIyBUaGUgcmVjb21tZW5kZWQgd2F5IHRvIGluc3RhbGwgdGhpcyBzY3JpcHQgaXMgdG8gY29weSB0bworIyAnfi8uenNoL2NvbXBsZXRpb24vX2dpdCcsIGFuZCB0aGVuIGFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIgfi8uenNocmMgZmlsZToKKyMKKyMgIGZwYXRoPSh+Ly56c2gvY29tcGxldGlvbiAkZnBhdGgpCisKK2NvbXBsZXRlICgpCit7CisJIyBkbyBub3RoaW5nCisJcmV0dXJuIDAKK30KKworenN0eWxlIC1UICc6Y29tcGxldGlvbjoqOio6Z2l0OionIHRhZy1vcmRlciAmJiBcCisJenN0eWxlICc6Y29tcGxldGlvbjoqOio6Z2l0OionIHRhZy1vcmRlciAnY29tbW9uLWNvbW1hbmRzJworCit6c3R5bGUgLXMgIjpjb21wbGV0aW9uOio6KjpnaXQ6KiIgc2NyaXB0IHNjcmlwdAordGVzdCAteiAiJHNjcmlwdCIgJiYgc2NyaXB0PSIkKGRpcm5hbWUgJHtmdW5jc291cmNldHJhY2VbMV0lOip9KSIvZ2l0LWNvbXBsZXRpb24uYmFzaAorWlNIX1ZFUlNJT049JycgLiAiJHNjcmlwdCIKKworX19naXRjb21wICgpCit7CisJZW11bGF0ZSAtTCB6c2gKKworCWxvY2FsIGN1cl89IiR7My0kY3VyfSIKKworCWNhc2UgIiRjdXJfIiBpbgorCS0tKj0pCisJCTs7CisJKikKKwkJbG9jYWwgYyBJRlM9JCcgXHRcbicKKwkJbG9jYWwgLWEgYXJyYXkKKwkJZm9yIGMgaW4gJHs9MX07IGRvCisJCQljPSIkYyR7NC19IgorCQkJY2FzZSAkYyBpbgorCQkJLS0qPSp8Ki4pIDs7CisJCQkqKSBjPSIkYyAiIDs7CisJCQllc2FjCisJCQlhcnJheSs9KCIkYyIpCisJCWRvbmUKKwkJY29tcHNldCAtUCAnKls9Ol0nCisJCWNvbXBhZGQgLVEgLVMgJycgLXAgIiR7Mi19IiAtYSAtLSBhcnJheSAmJiBfcmV0PTAKKwkJOzsKKwllc2FjCit9CisKK19fZ2l0Y29tcF9ubCAoKQoreworCWVtdWxhdGUgLUwgenNoCisKKwlsb2NhbCBJRlM9JCdcbicKKwljb21wc2V0IC1QICcqWz06XScKKwljb21wYWRkIC1RIC1TICIkezQtIH0iIC1wICIkezItfSIgLS0gJHs9MX0gJiYgX3JldD0wCit9CisKK19fZ2l0Y29tcF9maWxlICgpCit7CisJZW11bGF0ZSAtTCB6c2gKKworCWxvY2FsIElGUz0kJ1xuJworCWNvbXBzZXQgLVAgJypbPTpdJworCWNvbXBhZGQgLVEgLXAgIiR7Mi19IiAtZiAtLSAkez0xfSAmJiBfcmV0PTAKK30KKworX19naXRfenNoX2Jhc2hfZnVuYyAoKQoreworCWVtdWxhdGUgLUwga3NoCisKKwlsb2NhbCBjb21tYW5kPSQxCisKKwlsb2NhbCBjb21wbGV0aW9uX2Z1bmM9Il9naXRfJHtjb21tYW5kLy8tL199IgorCWRlY2xhcmUgLWYgJGNvbXBsZXRpb25fZnVuYyA+L2Rldi9udWxsICYmICRjb21wbGV0aW9uX2Z1bmMgJiYgcmV0dXJuCisKKwlsb2NhbCBleHBhbnNpb249JChfX2dpdF9hbGlhc2VkX2NvbW1hbmQgIiRjb21tYW5kIikKKwlpZiBbIC1uICIkZXhwYW5zaW9uIiBdOyB0aGVuCisJCWNvbXBsZXRpb25fZnVuYz0iX2dpdF8ke2V4cGFuc2lvbi8vLS9ffSIKKwkJZGVjbGFyZSAtZiAkY29tcGxldGlvbl9mdW5jID4vZGV2L251bGwgJiYgJGNvbXBsZXRpb25fZnVuYworCWZpCit9CisKK19fZ2l0X3pzaF9jbWRfY29tbW9uICgpCit7CisJbG9jYWwgLWEgbGlzdAorCWxpc3Q9KAorCWFkZDonYWRkIGZpbGUgY29udGVudHMgdG8gdGhlIGluZGV4JworCWJpc2VjdDonZmluZCBieSBiaW5hcnkgc2VhcmNoIHRoZSBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VkIGEgYnVnJworCWJyYW5jaDonbGlzdCwgY3JlYXRlLCBvciBkZWxldGUgYnJhbmNoZXMnCisJY2hlY2tvdXQ6J2NoZWNrb3V0IGEgYnJhbmNoIG9yIHBhdGhzIHRvIHRoZSB3b3JraW5nIHRyZWUnCisJY2xvbmU6J2Nsb25lIGEgcmVwb3NpdG9yeSBpbnRvIGEgbmV3IGRpcmVjdG9yeScKKwljb21taXQ6J3JlY29yZCBjaGFuZ2VzIHRvIHRoZSByZXBvc2l0b3J5JworCWRpZmY6J3Nob3cgY2hhbmdlcyBiZXR3ZWVuIGNvbW1pdHMsIGNvbW1pdCBhbmQgd29ya2luZyB0cmVlLCBldGMnCisJZmV0Y2g6J2Rvd25sb2FkIG9iamVjdHMgYW5kIHJlZnMgZnJvbSBhbm90aGVyIHJlcG9zaXRvcnknCisJZ3JlcDoncHJpbnQgbGluZXMgbWF0Y2hpbmcgYSBwYXR0ZXJuJworCWluaXQ6J2NyZWF0ZSBhbiBlbXB0eSBHaXQgcmVwb3NpdG9yeSBvciByZWluaXRpYWxpemUgYW4gZXhpc3Rpbmcgb25lJworCWxvZzonc2hvdyBjb21taXQgbG9ncycKKwltZXJnZTonam9pbiB0d28gb3IgbW9yZSBkZXZlbG9wbWVudCBoaXN0b3JpZXMgdG9nZXRoZXInCisJbXY6J21vdmUgb3IgcmVuYW1lIGEgZmlsZSwgYSBkaXJlY3RvcnksIG9yIGEgc3ltbGluaycKKwlwdWxsOidmZXRjaCBmcm9tIGFuZCBtZXJnZSB3aXRoIGFub3RoZXIgcmVwb3NpdG9yeSBvciBhIGxvY2FsIGJyYW5jaCcKKwlwdXNoOid1cGRhdGUgcmVtb3RlIHJlZnMgYWxvbmcgd2l0aCBhc3NvY2lhdGVkIG9iamVjdHMnCisJcmViYXNlOidmb3J3YXJkLXBvcnQgbG9jYWwgY29tbWl0cyB0byB0aGUgdXBkYXRlZCB1cHN0cmVhbSBoZWFkJworCXJlc2V0OidyZXNldCBjdXJyZW50IEhFQUQgdG8gdGhlIHNwZWNpZmllZCBzdGF0ZScKKwlybToncmVtb3ZlIGZpbGVzIGZyb20gdGhlIHdvcmtpbmcgdHJlZSBhbmQgZnJvbSB0aGUgaW5kZXgnCisJc2hvdzonc2hvdyB2YXJpb3VzIHR5cGVzIG9mIG9iamVjdHMnCisJc3RhdHVzOidzaG93IHRoZSB3b3JraW5nIHRyZWUgc3RhdHVzJworCXRhZzonY3JlYXRlLCBsaXN0LCBkZWxldGUgb3IgdmVyaWZ5IGEgdGFnIG9iamVjdCBzaWduZWQgd2l0aCBHUEcnKQorCV9kZXNjcmliZSAtdCBjb21tb24tY29tbWFuZHMgJ2NvbW1vbiBjb21tYW5kcycgbGlzdCAmJiBfcmV0PTAKK30KKworX19naXRfenNoX2NtZF9hbGlhcyAoKQoreworCWxvY2FsIC1hIGxpc3QKKwlsaXN0PSgkeyR7JHsoMCkiJChnaXQgY29uZmlnIC16IC0tZ2V0LXJlZ2V4cCAnXmFsaWFzXC4nKSJ9I2FsaWFzLn0lJCdcbicqfSkKKwlfZGVzY3JpYmUgLXQgYWxpYXMtY29tbWFuZHMgJ2FsaWFzZXMnIGxpc3QgJCogJiYgX3JldD0wCit9CisKK19fZ2l0X3pzaF9jbWRfYWxsICgpCit7CisJbG9jYWwgLWEgbGlzdAorCWVtdWxhdGUga3NoIC1jIF9fZ2l0X2NvbXB1dGVfYWxsX2NvbW1hbmRzCisJbGlzdD0oICR7PV9fZ2l0X2FsbF9jb21tYW5kc30gKQorCV9kZXNjcmliZSAtdCBhbGwtY29tbWFuZHMgJ2FsbCBjb21tYW5kcycgbGlzdCAmJiBfcmV0PTAKK30KKworX19naXRfenNoX21haW4gKCkKK3sKKwlsb2NhbCBjdXJjb250ZXh0PSIkY3VyY29udGV4dCIgc3RhdGUgc3RhdGVfZGVzY3IgbGluZQorCXR5cGVzZXQgLUEgb3B0X2FyZ3MKKwlsb2NhbCAtYSBvcmlnX3dvcmRzCisKKwlvcmlnX3dvcmRzPSggJHt3b3Jkc1tAXX0gKQorCisJX2FyZ3VtZW50cyAtQyBcCisJCScoLXAgLS1wYWdpbmF0ZSAtLW5vLXBhZ2VyKSd7LXAsLS1wYWdpbmF0ZX0nW3BpcGUgYWxsIG91dHB1dCBpbnRvICcnbGVzcycnXScgXAorCQknKC1wIC0tcGFnaW5hdGUpLS1uby1wYWdlcltkbyBub3QgcGlwZSBnaXQgb3V0cHV0IGludG8gYSBwYWdlcl0nIFwKKwkJJy0tZ2l0LWRpcj0tW3NldCB0aGUgcGF0aCB0byB0aGUgcmVwb3NpdG9yeV06IDpfZGlyZWN0b3JpZXMnIFwKKwkJJy0tYmFyZVt0cmVhdCB0aGUgcmVwb3NpdG9yeSBhcyBhIGJhcmUgcmVwb3NpdG9yeV0nIFwKKwkJJygtIDopLS12ZXJzaW9uW3ByaW50cyB0aGUgZ2l0IHN1aXRlIHZlcnNpb25dJyBcCisJCSctLWV4ZWMtcGF0aD0tW3BhdGggdG8gd2hlcmUgeW91ciBjb3JlIGdpdCBwcm9ncmFtcyBhcmUgaW5zdGFsbGVkXTo6IDpfZGlyZWN0b3JpZXMnIFwKKwkJJy0taHRtbC1wYXRoW3ByaW50IHRoZSBwYXRoIHdoZXJlIGdpdCcncyBIVE1MIGRvY3VtZW50YXRpb24gaXMgaW5zdGFsbGVkXScgXAorCQknLS1pbmZvLXBhdGhbcHJpbnQgdGhlIHBhdGggd2hlcmUgdGhlIEluZm8gZmlsZXMgYXJlIGluc3RhbGxlZF0nIFwKKwkJJy0tbWFuLXBhdGhbcHJpbnQgdGhlIG1hbnBhdGggKHNlZSBgbWFuKDEpYCkgZm9yIHRoZSBtYW4gcGFnZXNdJyBcCisJCSctLXdvcmstdHJlZT0tW3NldCB0aGUgcGF0aCB0byB0aGUgd29ya2luZyB0cmVlXTogOl9kaXJlY3RvcmllcycgXAorCQknLS1uYW1lc3BhY2U9LVtzZXQgdGhlIGdpdCBuYW1lc3BhY2VdJyBcCisJCSctLW5vLXJlcGxhY2Utb2JqZWN0c1tkbyBub3QgdXNlIHJlcGxhY2VtZW50IHJlZnMgdG8gcmVwbGFjZSBnaXQgb2JqZWN0c10nIFwKKwkJJygtIDopLS1oZWxwW3ByaW50cyB0aGUgc3lub3BzaXMgYW5kIGEgbGlzdCBvZiB0aGUgbW9zdCBjb21tb25seSB1c2VkIGNvbW1hbmRzXTogOi0+YXJnJyBcCisJCScoLSk6IDotPmNvbW1hbmQnIFwKKwkJJygtKSo6OiA6LT5hcmcnICYmIHJldHVybgorCisJY2FzZSAkc3RhdGUgaW4KKwkoY29tbWFuZCkKKwkJX2FsdGVybmF0aXZlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnYWxpYXMtY29tbWFuZHM6YWxpYXM6X19naXRfenNoX2NtZF9hbGlhcycgXAorICAgICAgICAgICAgICAgICAgICAgICAgICdjb21tb24tY29tbWFuZHM6Y29tbW9uOl9fZ2l0X3pzaF9jbWRfY29tbW9uJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbC1jb21tYW5kczphbGw6X19naXRfenNoX2NtZF9hbGwnICYmIF9yZXQ9MAorCQk7OworCShhcmcpCisJCWxvY2FsIGNvbW1hbmQ9IiR7d29yZHNbMV19IiBfX2dpdF9kaXIKKworCQlpZiAoKCAkK29wdF9hcmdzWy0tYmFyZV0gKSk7IHRoZW4KKwkJCV9fZ2l0X2Rpcj0nLicKKwkJZWxzZQorCQkJX19naXRfZGlyPSR7b3B0X2FyZ3NbLS1naXQtZGlyXX0KKwkJZmkKKworCQkoKCAkK29wdF9hcmdzWy0taGVscF0gKSkgJiYgY29tbWFuZD0naGVscCcKKworCQl3b3Jkcz0oICR7b3JpZ193b3Jkc1tAXX0gKQorCisJCV9fZ2l0X3pzaF9iYXNoX2Z1bmMgJGNvbW1hbmQKKwkJOzsKKwllc2FjCit9CisKK19naXQgKCkKK3sKKwlsb2NhbCBfcmV0PTEKKwlsb2NhbCBjdXIgY3dvcmQgcHJldgorCisJY3VyPSR7d29yZHNbQ1VSUkVOVF19CisJcHJldj0ke3dvcmRzW0NVUlJFTlQtMV19CisJbGV0IGN3b3JkPUNVUlJFTlQtMQorCisJaWYgKCggJCtmdW5jdGlvbnNbX18ke3NlcnZpY2V9X3pzaF9tYWluXSApKTsgdGhlbgorCQlfXyR7c2VydmljZX1fenNoX21haW4KKwllbHNlCisJCWVtdWxhdGUga3NoIC1jIF9fJHtzZXJ2aWNlfV9tYWluCisJZmkKKworCWxldCBfcmV0ICYmIF9kZWZhdWx0ICYmIF9yZXQ9MAorCXJldHVybiBfcmV0Cit9CisKK19naXQKZGlmZiAtLWdpdCBhL2NvbnRyaWIvY29tcGxldGlvbi9naXQtcHJvbXB0LnNoIGIvY29udHJpYi9jb21wbGV0aW9uL2dpdC1wcm9tcHQuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRlNDgyOQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvY29tcGxldGlvbi9naXQtcHJvbXB0LnNoCkBAIC0wLDAgKzEsNDE1IEBACisjIGJhc2gvenNoIGdpdCBwcm9tcHQgc3VwcG9ydAorIworIyBDb3B5cmlnaHQgKEMpIDIwMDYsMjAwNyBTaGF3biBPLiBQZWFyY2UgPHNwZWFyY2VAc3BlYXJjZS5vcmc+CisjIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLjAuCisjCisjIFRoaXMgc2NyaXB0IGFsbG93cyB5b3UgdG8gc2VlIHRoZSBjdXJyZW50IGJyYW5jaCBpbiB5b3VyIHByb21wdC4KKyMKKyMgVG8gZW5hYmxlOgorIworIyAgICAxKSBDb3B5IHRoaXMgZmlsZSB0byBzb21ld2hlcmUgKGUuZy4gfi8uZ2l0LXByb21wdC5zaCkuCisjICAgIDIpIEFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8geW91ciAuYmFzaHJjLy56c2hyYzoKKyMgICAgICAgIHNvdXJjZSB+Ly5naXQtcHJvbXB0LnNoCisjICAgIDNhKSBDaGFuZ2UgeW91ciBQUzEgdG8gY2FsbCBfX2dpdF9wczEgYXMKKyMgICAgICAgIGNvbW1hbmQtc3Vic3RpdHV0aW9uOgorIyAgICAgICAgQmFzaDogUFMxPSdbXHVAXGggXFckKF9fZ2l0X3BzMSAiICglcykiKV1cJCAnCisjICAgICAgICBaU0g6ICBQUzE9J1slbkAlbSAlYyQoX19naXRfcHMxICIgKCVzKSIpXVwkICcKKyMgICAgICAgIHRoZSBvcHRpb25hbCBhcmd1bWVudCB3aWxsIGJlIHVzZWQgYXMgZm9ybWF0IHN0cmluZy4KKyMgICAgM2IpIEFsdGVybmF0aXZlbHksIGlmIHlvdSBhcmUgdXNpbmcgYmFzaCwgX19naXRfcHMxIGNhbiBiZQorIyAgICAgICAgdXNlZCBmb3IgUFJPTVBUX0NPTU1BTkQgd2l0aCB0d28gcGFyYW1ldGVycywgPHByZT4gYW5kCisjICAgICAgICA8cG9zdD4sIHdoaWNoIGFyZSBzdHJpbmdzIHlvdSB3b3VsZCBwdXQgaW4gJFBTMSBiZWZvcmUKKyMgICAgICAgIGFuZCBhZnRlciB0aGUgc3RhdHVzIHN0cmluZyBnZW5lcmF0ZWQgYnkgdGhlIGdpdC1wcm9tcHQKKyMgICAgICAgIG1hY2hpbmVyeS4gIGUuZy4KKyMgICAgICAgICAgIFBST01QVF9DT01NQU5EPSdfX2dpdF9wczEgIlx1QFxoOlx3IiAiXFxcJCAiJworIyAgICAgICAgd2lsbCBzaG93IHVzZXJuYW1lLCBhdC1zaWduLCBob3N0LCBjb2xvbiwgY3dkLCB0aGVuCisjICAgICAgICB2YXJpb3VzIHN0YXR1cyBzdHJpbmcsIGZvbGxvd2VkIGJ5IGRvbGxhciBhbmQgU1AsIGFzCisjICAgICAgICB5b3VyIHByb21wdC4KKyMgICAgICAgIE9wdGlvbmFsbHksIHlvdSBjYW4gc3VwcGx5IGEgdGhpcmQgYXJndW1lbnQgd2l0aCBhIHByaW50ZgorIyAgICAgICAgZm9ybWF0IHN0cmluZyB0byBmaW5ldHVuZSB0aGUgb3V0cHV0IG9mIHRoZSBicmFuY2ggc3RhdHVzCisjCisjIFRoZSBhcmd1bWVudCB0byBfX2dpdF9wczEgd2lsbCBiZSBkaXNwbGF5ZWQgb25seSBpZiB5b3UgYXJlIGN1cnJlbnRseQorIyBpbiBhIGdpdCByZXBvc2l0b3J5LiAgVGhlICVzIHRva2VuIHdpbGwgYmUgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQKKyMgYnJhbmNoLgorIworIyBJbiBhZGRpdGlvbiwgaWYgeW91IHNldCBHSVRfUFMxX1NIT1dESVJUWVNUQVRFIHRvIGEgbm9uZW1wdHkgdmFsdWUsCisjIHVuc3RhZ2VkICgqKSBhbmQgc3RhZ2VkICgrKSBjaGFuZ2VzIHdpbGwgYmUgc2hvd24gbmV4dCB0byB0aGUgYnJhbmNoCisjIG5hbWUuICBZb3UgY2FuIGNvbmZpZ3VyZSB0aGlzIHBlci1yZXBvc2l0b3J5IHdpdGggdGhlCisjIGJhc2guc2hvd0RpcnR5U3RhdGUgdmFyaWFibGUsIHdoaWNoIGRlZmF1bHRzIHRvIHRydWUgb25jZQorIyBHSVRfUFMxX1NIT1dESVJUWVNUQVRFIGlzIGVuYWJsZWQuCisjCisjIFlvdSBjYW4gYWxzbyBzZWUgaWYgY3VycmVudGx5IHNvbWV0aGluZyBpcyBzdGFzaGVkLCBieSBzZXR0aW5nCisjIEdJVF9QUzFfU0hPV1NUQVNIU1RBVEUgdG8gYSBub25lbXB0eSB2YWx1ZS4gSWYgc29tZXRoaW5nIGlzIHN0YXNoZWQsCisjIHRoZW4gYSAnJCcgd2lsbCBiZSBzaG93biBuZXh0IHRvIHRoZSBicmFuY2ggbmFtZS4KKyMKKyMgSWYgeW91IHdvdWxkIGxpa2UgdG8gc2VlIGlmIHRoZXJlJ3JlIHVudHJhY2tlZCBmaWxlcywgdGhlbiB5b3UgY2FuIHNldAorIyBHSVRfUFMxX1NIT1dVTlRSQUNLRURGSUxFUyB0byBhIG5vbmVtcHR5IHZhbHVlLiBJZiB0aGVyZSdyZSB1bnRyYWNrZWQKKyMgZmlsZXMsIHRoZW4gYSAnJScgd2lsbCBiZSBzaG93biBuZXh0IHRvIHRoZSBicmFuY2ggbmFtZS4gIFlvdSBjYW4KKyMgY29uZmlndXJlIHRoaXMgcGVyLXJlcG9zaXRvcnkgd2l0aCB0aGUgYmFzaC5zaG93VW50cmFja2VkRmlsZXMKKyMgdmFyaWFibGUsIHdoaWNoIGRlZmF1bHRzIHRvIHRydWUgb25jZSBHSVRfUFMxX1NIT1dVTlRSQUNLRURGSUxFUyBpcworIyBlbmFibGVkLgorIworIyBJZiB5b3Ugd291bGQgbGlrZSB0byBzZWUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBIRUFEIGFuZCBpdHMgdXBzdHJlYW0sCisjIHNldCBHSVRfUFMxX1NIT1dVUFNUUkVBTT0iYXV0byIuICBBICI8IiBpbmRpY2F0ZXMgeW91IGFyZSBiZWhpbmQsICI+IgorIyBpbmRpY2F0ZXMgeW91IGFyZSBhaGVhZCwgIjw+IiBpbmRpY2F0ZXMgeW91IGhhdmUgZGl2ZXJnZWQgYW5kICI9IgorIyBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBubyBkaWZmZXJlbmNlLiBZb3UgY2FuIGZ1cnRoZXIgY29udHJvbAorIyBiZWhhdmlvdXIgYnkgc2V0dGluZyBHSVRfUFMxX1NIT1dVUFNUUkVBTSB0byBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0CisjIG9mIHZhbHVlczoKKyMKKyMgICAgIHZlcmJvc2UgICAgICAgc2hvdyBudW1iZXIgb2YgY29tbWl0cyBhaGVhZC9iZWhpbmQgKCsvLSkgdXBzdHJlYW0KKyMgICAgIGxlZ2FjeSAgICAgICAgZG9uJ3QgdXNlIHRoZSAnLS1jb3VudCcgb3B0aW9uIGF2YWlsYWJsZSBpbiByZWNlbnQKKyMgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMgb2YgZ2l0LXJldi1saXN0CisjICAgICBnaXQgICAgICAgICAgIGFsd2F5cyBjb21wYXJlIEhFQUQgdG8gQHt1cHN0cmVhbX0KKyMgICAgIHN2biAgICAgICAgICAgYWx3YXlzIGNvbXBhcmUgSEVBRCB0byB5b3VyIFNWTiB1cHN0cmVhbQorIworIyBCeSBkZWZhdWx0LCBfX2dpdF9wczEgd2lsbCBjb21wYXJlIEhFQUQgdG8geW91ciBTVk4gdXBzdHJlYW0gaWYgaXQgY2FuCisjIGZpbmQgb25lLCBvciBAe3Vwc3RyZWFtfSBvdGhlcndpc2UuICBPbmNlIHlvdSBoYXZlIHNldAorIyBHSVRfUFMxX1NIT1dVUFNUUkVBTSwgeW91IGNhbiBvdmVycmlkZSBpdCBvbiBhIHBlci1yZXBvc2l0b3J5IGJhc2lzIGJ5CisjIHNldHRpbmcgdGhlIGJhc2guc2hvd1Vwc3RyZWFtIGNvbmZpZyB2YXJpYWJsZS4KKyMKKyMgSWYgeW91IHdvdWxkIGxpa2UgdG8gc2VlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGlkZW50aXR5IG9mCisjIGNvbW1pdHMgY2hlY2tlZCBvdXQgYXMgYSBkZXRhY2hlZCBIRUFELCBzZXQgR0lUX1BTMV9ERVNDUklCRV9TVFlMRQorIyB0byBvbmUgb2YgdGhlc2UgdmFsdWVzOgorIworIyAgICAgY29udGFpbnMgICAgICByZWxhdGl2ZSB0byBuZXdlciBhbm5vdGF0ZWQgdGFnICh2MS42LjMuMn4zNSkKKyMgICAgIGJyYW5jaCAgICAgICAgcmVsYXRpdmUgdG8gbmV3ZXIgdGFnIG9yIGJyYW5jaCAobWFzdGVyfjQpCisjICAgICBkZXNjcmliZSAgICAgIHJlbGF0aXZlIHRvIG9sZGVyIGFubm90YXRlZCB0YWcgKHYxLjYuMy4xLTEzLWdkZDQyYzJmKQorIyAgICAgZGVmYXVsdCAgICAgICBleGFjdGx5IG1hdGNoaW5nIHRhZworIworIyBJZiB5b3Ugd291bGQgbGlrZSBhIGNvbG9yZWQgaGludCBhYm91dCB0aGUgY3VycmVudCBkaXJ0eSBzdGF0ZSwgc2V0CisjIEdJVF9QUzFfU0hPV0NPTE9SSElOVFMgdG8gYSBub25lbXB0eSB2YWx1ZS4gVGhlIGNvbG9ycyBhcmUgYmFzZWQgb24KKyMgdGhlIGNvbG9yZWQgb3V0cHV0IG9mICJnaXQgc3RhdHVzIC1zYiIuCisKKyMgX19naXRkaXIgYWNjZXB0cyAwIG9yIDEgYXJndW1lbnRzIChpLmUuLCBsb2NhdGlvbikKKyMgcmV0dXJucyBsb2NhdGlvbiBvZiAuZ2l0IHJlcG8KK19fZ2l0ZGlyICgpCit7CisJIyBOb3RlOiB0aGlzIGZ1bmN0aW9uIGlzIGR1cGxpY2F0ZWQgaW4gZ2l0LWNvbXBsZXRpb24uYmFzaAorCSMgV2hlbiB1cGRhdGluZyBpdCwgbWFrZSBzdXJlIHlvdSB1cGRhdGUgdGhlIG90aGVyIG9uZSB0byBtYXRjaC4KKwlpZiBbIC16ICIkezEtfSIgXTsgdGhlbgorCQlpZiBbIC1uICIke19fZ2l0X2Rpci19IiBdOyB0aGVuCisJCQllY2hvICIkX19naXRfZGlyIgorCQllbGlmIFsgLW4gIiR7R0lUX0RJUi19IiBdOyB0aGVuCisJCQl0ZXN0IC1kICIke0dJVF9ESVItfSIgfHwgcmV0dXJuIDEKKwkJCWVjaG8gIiRHSVRfRElSIgorCQllbGlmIFsgLWQgLmdpdCBdOyB0aGVuCisJCQllY2hvIC5naXQKKwkJZWxzZQorCQkJZ2l0IHJldi1wYXJzZSAtLWdpdC1kaXIgMj4vZGV2L251bGwKKwkJZmkKKwllbGlmIFsgLWQgIiQxLy5naXQiIF07IHRoZW4KKwkJZWNobyAiJDEvLmdpdCIKKwllbHNlCisJCWVjaG8gIiQxIgorCWZpCit9CisKKyMgc3RvcmVzIHRoZSBkaXZlcmdlbmNlIGZyb20gdXBzdHJlYW0gaW4gJHAKKyMgdXNlZCBieSBHSVRfUFMxX1NIT1dVUFNUUkVBTQorX19naXRfcHMxX3Nob3dfdXBzdHJlYW0gKCkKK3sKKwlsb2NhbCBrZXkgdmFsdWUKKwlsb2NhbCBzdm5fcmVtb3RlIHN2bl91cmxfcGF0dGVybiBjb3VudCBuCisJbG9jYWwgdXBzdHJlYW09Z2l0IGxlZ2FjeT0iIiB2ZXJib3NlPSIiCisKKwlzdm5fcmVtb3RlPSgpCisJIyBnZXQgc29tZSBjb25maWcgb3B0aW9ucyBmcm9tIGdpdC1jb25maWcKKwlsb2NhbCBvdXRwdXQ9IiQoZ2l0IGNvbmZpZyAteiAtLWdldC1yZWdleHAgJ14oc3ZuLXJlbW90ZVwuLipcLnVybHxiYXNoXC5zaG93dXBzdHJlYW0pJCcgMj4vZGV2L251bGwgfCB0ciAnXDBcbicgJ1xuICcpIgorCXdoaWxlIHJlYWQgLXIga2V5IHZhbHVlOyBkbworCQljYXNlICIka2V5IiBpbgorCQliYXNoLnNob3d1cHN0cmVhbSkKKwkJCUdJVF9QUzFfU0hPV1VQU1RSRUFNPSIkdmFsdWUiCisJCQlpZiBbWyAteiAiJHtHSVRfUFMxX1NIT1dVUFNUUkVBTX0iIF1dOyB0aGVuCisJCQkJcD0iIgorCQkJCXJldHVybgorCQkJZmkKKwkJCTs7CisJCXN2bi1yZW1vdGUuKi51cmwpCisJCQlzdm5fcmVtb3RlWyQoKCR7I3N2bl9yZW1vdGVbQF19ICsgMSkpXT0iJHZhbHVlIgorCQkJc3ZuX3VybF9wYXR0ZXJuKz0iXFx8JHZhbHVlIgorCQkJdXBzdHJlYW09c3ZuK2dpdCAjIGRlZmF1bHQgdXBzdHJlYW0gaXMgU1ZOIGlmIGF2YWlsYWJsZSwgZWxzZSBnaXQKKwkJCTs7CisJCWVzYWMKKwlkb25lIDw8PCAiJG91dHB1dCIKKworCSMgcGFyc2UgY29uZmlndXJhdGlvbiB2YWx1ZXMKKwlmb3Igb3B0aW9uIGluICR7R0lUX1BTMV9TSE9XVVBTVFJFQU19OyBkbworCQljYXNlICIkb3B0aW9uIiBpbgorCQlnaXR8c3ZuKSB1cHN0cmVhbT0iJG9wdGlvbiIgOzsKKwkJdmVyYm9zZSkgdmVyYm9zZT0xIDs7CisJCWxlZ2FjeSkgIGxlZ2FjeT0xICA7OworCQllc2FjCisJZG9uZQorCisJIyBGaW5kIG91ciB1cHN0cmVhbQorCWNhc2UgIiR1cHN0cmVhbSIgaW4KKwlnaXQpICAgIHVwc3RyZWFtPSJAe3Vwc3RyZWFtfSIgOzsKKwlzdm4qKQorCQkjIGdldCB0aGUgdXBzdHJlYW0gZnJvbSB0aGUgImdpdC1zdm4taWQ6IC4uLiIgaW4gYSBjb21taXQgbWVzc2FnZQorCQkjIChnaXQtc3ZuIHVzZXMgZXNzZW50aWFsbHkgdGhlIHNhbWUgcHJvY2VkdXJlIGludGVybmFsbHkpCisJCWxvY2FsIC1hIHN2bl91cHN0cmVhbQorCQlzdm5fdXBzdHJlYW09KCQoZ2l0IGxvZyAtLWZpcnN0LXBhcmVudCAtMSBcCisJCQkJCS0tZ3JlcD0iXmdpdC1zdm4taWQ6IFwoJHtzdm5fdXJsX3BhdHRlcm4jPz99XCkiIDI+L2Rldi9udWxsKSkKKwkJaWYgW1sgMCAtbmUgJHsjc3ZuX3Vwc3RyZWFtW0BdfSBdXTsgdGhlbgorCQkJc3ZuX3Vwc3RyZWFtPSR7c3ZuX3Vwc3RyZWFtWyR7I3N2bl91cHN0cmVhbVtAXX0gLSAyXX0KKwkJCXN2bl91cHN0cmVhbT0ke3N2bl91cHN0cmVhbSVAKn0KKwkJCWxvY2FsIG5fc3RvcD0iJHsjc3ZuX3JlbW90ZVtAXX0iCisJCQlmb3IgKChuPTE7IG4gPD0gbl9zdG9wOyBuKyspKTsgZG8KKwkJCQlzdm5fdXBzdHJlYW09JHtzdm5fdXBzdHJlYW0jJHtzdm5fcmVtb3RlWyRuXX19CisJCQlkb25lCisKKwkJCWlmIFtbIC16ICIkc3ZuX3Vwc3RyZWFtIiBdXTsgdGhlbgorCQkJCSMgZGVmYXVsdCBicmFuY2ggbmFtZSBmb3IgY2hlY2tvdXRzIHdpdGggbm8gbGF5b3V0OgorCQkJCXVwc3RyZWFtPSR7R0lUX1NWTl9JRDotZ2l0LXN2bn0KKwkJCWVsc2UKKwkJCQl1cHN0cmVhbT0ke3N2bl91cHN0cmVhbSMvfQorCQkJZmkKKwkJZWxpZiBbWyAic3ZuK2dpdCIgPSAiJHVwc3RyZWFtIiBdXTsgdGhlbgorCQkJdXBzdHJlYW09IkB7dXBzdHJlYW19IgorCQlmaQorCQk7OworCWVzYWMKKworCSMgRmluZCBob3cgbWFueSBjb21taXRzIHdlIGFyZSBhaGVhZC9iZWhpbmQgb3VyIHVwc3RyZWFtCisJaWYgW1sgLXogIiRsZWdhY3kiIF1dOyB0aGVuCisJCWNvdW50PSIkKGdpdCByZXYtbGlzdCAtLWNvdW50IC0tbGVmdC1yaWdodCBcCisJCQkJIiR1cHN0cmVhbSIuLi5IRUFEIDI+L2Rldi9udWxsKSIKKwllbHNlCisJCSMgcHJvZHVjZSBlcXVpdmFsZW50IG91dHB1dCB0byAtLWNvdW50IGZvciBvbGRlciB2ZXJzaW9ucyBvZiBnaXQKKwkJbG9jYWwgY29tbWl0cworCQlpZiBjb21taXRzPSIkKGdpdCByZXYtbGlzdCAtLWxlZnQtcmlnaHQgIiR1cHN0cmVhbSIuLi5IRUFEIDI+L2Rldi9udWxsKSIKKwkJdGhlbgorCQkJbG9jYWwgY29tbWl0IGJlaGluZD0wIGFoZWFkPTAKKwkJCWZvciBjb21taXQgaW4gJGNvbW1pdHMKKwkJCWRvCisJCQkJY2FzZSAiJGNvbW1pdCIgaW4KKwkJCQkiPCIqKSAoKGJlaGluZCsrKSkgOzsKKwkJCQkqKSAgICAoKGFoZWFkKyspKSAgOzsKKwkJCQllc2FjCisJCQlkb25lCisJCQljb3VudD0iJGJlaGluZAkkYWhlYWQiCisJCWVsc2UKKwkJCWNvdW50PSIiCisJCWZpCisJZmkKKworCSMgY2FsY3VsYXRlIHRoZSByZXN1bHQKKwlpZiBbWyAteiAiJHZlcmJvc2UiIF1dOyB0aGVuCisJCWNhc2UgIiRjb3VudCIgaW4KKwkJIiIpICMgbm8gdXBzdHJlYW0KKwkJCXA9IiIgOzsKKwkJIjAJMCIpICMgZXF1YWwgdG8gdXBzdHJlYW0KKwkJCXA9Ij0iIDs7CisJCSIwCSIqKSAjIGFoZWFkIG9mIHVwc3RyZWFtCisJCQlwPSI+IiA7OworCQkqIgkwIikgIyBiZWhpbmQgdXBzdHJlYW0KKwkJCXA9IjwiIDs7CisJCSopCSAgICAjIGRpdmVyZ2VkIGZyb20gdXBzdHJlYW0KKwkJCXA9Ijw+IiA7OworCQllc2FjCisJZWxzZQorCQljYXNlICIkY291bnQiIGluCisJCSIiKSAjIG5vIHVwc3RyZWFtCisJCQlwPSIiIDs7CisJCSIwCTAiKSAjIGVxdWFsIHRvIHVwc3RyZWFtCisJCQlwPSIgdT0iIDs7CisJCSIwCSIqKSAjIGFoZWFkIG9mIHVwc3RyZWFtCisJCQlwPSIgdSske2NvdW50IzAJfSIgOzsKKwkJKiIJMCIpICMgYmVoaW5kIHVwc3RyZWFtCisJCQlwPSIgdS0ke2NvdW50JQkwfSIgOzsKKwkJKikJICAgICMgZGl2ZXJnZWQgZnJvbSB1cHN0cmVhbQorCQkJcD0iIHUrJHtjb3VudCMqCX0tJHtjb3VudCUJKn0iIDs7CisJCWVzYWMKKwlmaQorCit9CisKKworIyBfX2dpdF9wczEgYWNjZXB0cyAwIG9yIDEgYXJndW1lbnRzIChpLmUuLCBmb3JtYXQgc3RyaW5nKQorIyB3aGVuIGNhbGxlZCBmcm9tIFBTMSB1c2luZyBjb21tYW5kIHN1YnN0aXR1dGlvbgorIyBpbiB0aGlzIG1vZGUgaXQgcHJpbnRzIHRleHQgdG8gYWRkIHRvIGJhc2ggUFMxIHByb21wdCAoaW5jbHVkZXMgYnJhbmNoIG5hbWUpCisjCisjIF9fZ2l0X3BzMSByZXF1aXJlcyAyIG9yIDMgYXJndW1lbnRzIHdoZW4gY2FsbGVkIGZyb20gUFJPTVBUX0NPTU1BTkQgKHBjKQorIyBpbiB0aGF0IGNhc2UgaXQgX3NldHNfIFBTMS4gVGhlIGFyZ3VtZW50cyBhcmUgcGFydHMgb2YgYSBQUzEgc3RyaW5nLgorIyB3aGVuIHR3byBhcmd1bWVudHMgYXJlIGdpdmVuLCB0aGUgZmlyc3QgaXMgcHJlcGVuZGVkIGFuZCB0aGUgc2Vjb25kIGFwcGVuZGVkCisjIHRvIHRoZSBzdGF0ZSBzdHJpbmcgd2hlbiBhc3NpZ25lZCB0byBQUzEuCisjIFRoZSBvcHRpb25hbCB0aGlyZCBwYXJhbWV0ZXIgd2lsbCBiZSB1c2VkIGFzIHByaW50ZiBmb3JtYXQgc3RyaW5nIHRvIGZ1cnRoZXIKKyMgY3VzdG9taXplIHRoZSBvdXRwdXQgb2YgdGhlIGdpdC1zdGF0dXMgc3RyaW5nLgorIyBJbiB0aGlzIG1vZGUgeW91IGNhbiByZXF1ZXN0IGNvbG9yZWQgaGludHMgdXNpbmcgR0lUX1BTMV9TSE9XQ09MT1JISU5UUz10cnVlCitfX2dpdF9wczEgKCkKK3sKKwlsb2NhbCBwY21vZGU9bm8KKwlsb2NhbCBkZXRhY2hlZD1ubworCWxvY2FsIHBzMXBjX3N0YXJ0PSdcdUBcaDpcdyAnCisJbG9jYWwgcHMxcGNfZW5kPSdcJCAnCisJbG9jYWwgcHJpbnRmX2Zvcm1hdD0nICglcyknCisKKwljYXNlICIkIyIgaW4KKwkJMnwzKQlwY21vZGU9eWVzCisJCQlwczFwY19zdGFydD0iJDEiCisJCQlwczFwY19lbmQ9IiQyIgorCQkJcHJpbnRmX2Zvcm1hdD0iJHszOi0kcHJpbnRmX2Zvcm1hdH0iCisJCTs7CisJCTB8MSkJcHJpbnRmX2Zvcm1hdD0iJHsxOi0kcHJpbnRmX2Zvcm1hdH0iCisJCTs7CisJCSopCXJldHVybgorCQk7OworCWVzYWMKKworCWxvY2FsIGc9IiQoX19naXRkaXIpIgorCWlmIFsgLXogIiRnIiBdOyB0aGVuCisJCWlmIFsgJHBjbW9kZSA9IHllcyBdOyB0aGVuCisJCQkjSW4gUEMgbW9kZSBQUzEgYWx3YXlzIG5lZWRzIHRvIGJlIHNldAorCQkJUFMxPSIkcHMxcGNfc3RhcnQkcHMxcGNfZW5kIgorCQlmaQorCWVsc2UKKwkJbG9jYWwgcj0iIgorCQlsb2NhbCBiPSIiCisJCWxvY2FsIHN0ZXA9IiIKKwkJbG9jYWwgdG90YWw9IiIKKwkJaWYgWyAtZCAiJGcvcmViYXNlLW1lcmdlIiBdOyB0aGVuCisJCQliPSIkKGNhdCAiJGcvcmViYXNlLW1lcmdlL2hlYWQtbmFtZSIpIgorCQkJc3RlcD0kKGNhdCAiJGcvcmViYXNlLW1lcmdlL21zZ251bSIpCisJCQl0b3RhbD0kKGNhdCAiJGcvcmViYXNlLW1lcmdlL2VuZCIpCisJCQlpZiBbIC1mICIkZy9yZWJhc2UtbWVyZ2UvaW50ZXJhY3RpdmUiIF07IHRoZW4KKwkJCQlyPSJ8UkVCQVNFLWkiCisJCQllbHNlCisJCQkJcj0ifFJFQkFTRS1tIgorCQkJZmkKKwkJZWxzZQorCQkJaWYgWyAtZCAiJGcvcmViYXNlLWFwcGx5IiBdOyB0aGVuCisJCQkJc3RlcD0kKGNhdCAiJGcvcmViYXNlLWFwcGx5L25leHQiKQorCQkJCXRvdGFsPSQoY2F0ICIkZy9yZWJhc2UtYXBwbHkvbGFzdCIpCisJCQkJaWYgWyAtZiAiJGcvcmViYXNlLWFwcGx5L3JlYmFzaW5nIiBdOyB0aGVuCisJCQkJCWI9IiQoY2F0ICIkZy9yZWJhc2UtYXBwbHkvaGVhZC1uYW1lIikiCisJCQkJCXI9InxSRUJBU0UiCisJCQkJZWxpZiBbIC1mICIkZy9yZWJhc2UtYXBwbHkvYXBwbHlpbmciIF07IHRoZW4KKwkJCQkJcj0ifEFNIgorCQkJCWVsc2UKKwkJCQkJcj0ifEFNL1JFQkFTRSIKKwkJCQlmaQorCQkJZWxpZiBbIC1mICIkZy9NRVJHRV9IRUFEIiBdOyB0aGVuCisJCQkJcj0ifE1FUkdJTkciCisJCQllbGlmIFsgLWYgIiRnL0NIRVJSWV9QSUNLX0hFQUQiIF07IHRoZW4KKwkJCQlyPSJ8Q0hFUlJZLVBJQ0tJTkciCisJCQllbGlmIFsgLWYgIiRnL1JFVkVSVF9IRUFEIiBdOyB0aGVuCisJCQkJcj0ifFJFVkVSVElORyIKKwkJCWVsaWYgWyAtZiAiJGcvQklTRUNUX0xPRyIgXTsgdGhlbgorCQkJCXI9InxCSVNFQ1RJTkciCisJCQlmaQorCisJCQl0ZXN0IC1uICIkYiIgfHwKKwkJCWI9IiQoZ2l0IHN5bWJvbGljLXJlZiBIRUFEIDI+L2Rldi9udWxsKSIgfHwgeworCQkJCWRldGFjaGVkPXllcworCQkJCWI9IiQoCisJCQkJY2FzZSAiJHtHSVRfUFMxX0RFU0NSSUJFX1NUWUxFLX0iIGluCisJCQkJKGNvbnRhaW5zKQorCQkJCQlnaXQgZGVzY3JpYmUgLS1jb250YWlucyBIRUFEIDs7CisJCQkJKGJyYW5jaCkKKwkJCQkJZ2l0IGRlc2NyaWJlIC0tY29udGFpbnMgLS1hbGwgSEVBRCA7OworCQkJCShkZXNjcmliZSkKKwkJCQkJZ2l0IGRlc2NyaWJlIEhFQUQgOzsKKwkJCQkoKiB8IGRlZmF1bHQpCisJCQkJCWdpdCBkZXNjcmliZSAtLXRhZ3MgLS1leGFjdC1tYXRjaCBIRUFEIDs7CisJCQkJZXNhYyAyPi9kZXYvbnVsbCkiIHx8CisKKwkJCQliPSIkKGN1dCAtYzEtNyAiJGcvSEVBRCIgMj4vZGV2L251bGwpLi4uIiB8fAorCQkJCWI9InVua25vd24iCisJCQkJYj0iKCRiKSIKKwkJCX0KKwkJZmkKKworCQlpZiBbIC1uICIkc3RlcCIgXSAmJiBbIC1uICIkdG90YWwiIF07IHRoZW4KKwkJCXI9IiRyICRzdGVwLyR0b3RhbCIKKwkJZmkKKworCQlsb2NhbCB3PSIiCisJCWxvY2FsIGk9IiIKKwkJbG9jYWwgcz0iIgorCQlsb2NhbCB1PSIiCisJCWxvY2FsIGM9IiIKKwkJbG9jYWwgcD0iIgorCisJCWlmIFsgInRydWUiID0gIiQoZ2l0IHJldi1wYXJzZSAtLWlzLWluc2lkZS1naXQtZGlyIDI+L2Rldi9udWxsKSIgXTsgdGhlbgorCQkJaWYgWyAidHJ1ZSIgPSAiJChnaXQgcmV2LXBhcnNlIC0taXMtYmFyZS1yZXBvc2l0b3J5IDI+L2Rldi9udWxsKSIgXTsgdGhlbgorCQkJCWM9IkJBUkU6IgorCQkJZWxzZQorCQkJCWI9IkdJVF9ESVIhIgorCQkJZmkKKwkJZWxpZiBbICJ0cnVlIiA9ICIkKGdpdCByZXYtcGFyc2UgLS1pcy1pbnNpZGUtd29yay10cmVlIDI+L2Rldi9udWxsKSIgXTsgdGhlbgorCQkJaWYgWyAtbiAiJHtHSVRfUFMxX1NIT1dESVJUWVNUQVRFLX0iIF0gJiYKKwkJCSAgIFsgIiQoZ2l0IGNvbmZpZyAtLWJvb2wgYmFzaC5zaG93RGlydHlTdGF0ZSkiICE9ICJmYWxzZSIgXQorCQkJdGhlbgorCQkJCWdpdCBkaWZmIC0tbm8tZXh0LWRpZmYgLS1xdWlldCAtLWV4aXQtY29kZSB8fCB3PSIqIgorCQkJCWlmIGdpdCByZXYtcGFyc2UgLS1xdWlldCAtLXZlcmlmeSBIRUFEID4vZGV2L251bGw7IHRoZW4KKwkJCQkJZ2l0IGRpZmYtaW5kZXggLS1jYWNoZWQgLS1xdWlldCBIRUFEIC0tIHx8IGk9IisiCisJCQkJZWxzZQorCQkJCQlpPSIjIgorCQkJCWZpCisJCQlmaQorCQkJaWYgWyAtbiAiJHtHSVRfUFMxX1NIT1dTVEFTSFNUQVRFLX0iIF07IHRoZW4KKwkJCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvc3Rhc2ggPi9kZXYvbnVsbCAyPiYxICYmIHM9IiQiCisJCQlmaQorCisJCQlpZiBbIC1uICIke0dJVF9QUzFfU0hPV1VOVFJBQ0tFREZJTEVTLX0iIF0gJiYKKwkJCSAgIFsgIiQoZ2l0IGNvbmZpZyAtLWJvb2wgYmFzaC5zaG93VW50cmFja2VkRmlsZXMpIiAhPSAiZmFsc2UiIF0gJiYKKwkJCSAgIFsgLW4gIiQoZ2l0IGxzLWZpbGVzIC0tb3RoZXJzIC0tZXhjbHVkZS1zdGFuZGFyZCkiIF0KKwkJCXRoZW4KKwkJCQl1PSIlJHtaU0hfVkVSU0lPTislfSIKKwkJCWZpCisKKwkJCWlmIFsgLW4gIiR7R0lUX1BTMV9TSE9XVVBTVFJFQU0tfSIgXTsgdGhlbgorCQkJCV9fZ2l0X3BzMV9zaG93X3Vwc3RyZWFtCisJCQlmaQorCQlmaQorCisJCWxvY2FsIGY9IiR3JGkkcyR1IgorCQlpZiBbICRwY21vZGUgPSB5ZXMgXTsgdGhlbgorCQkJbG9jYWwgZ2l0c3RyaW5nPQorCQkJaWYgWyAtbiAiJHtHSVRfUFMxX1NIT1dDT0xPUkhJTlRTLX0iIF07IHRoZW4KKwkJCQlsb2NhbCBjX3JlZD0nXGVbMzFtJworCQkJCWxvY2FsIGNfZ3JlZW49J1xlWzMybScKKwkJCQlsb2NhbCBjX2xibHVlPSdcZVsxOzM0bScKKwkJCQlsb2NhbCBjX2NsZWFyPSdcZVswbScKKwkJCQlsb2NhbCBiYWRfY29sb3I9JGNfcmVkCisJCQkJbG9jYWwgb2tfY29sb3I9JGNfZ3JlZW4KKwkJCQlsb2NhbCBicmFuY2hfY29sb3I9IiRjX2NsZWFyIgorCQkJCWxvY2FsIGZsYWdzX2NvbG9yPSIkY19sYmx1ZSIKKwkJCQlsb2NhbCBicmFuY2hzdHJpbmc9IiRjJHtiIyNyZWZzL2hlYWRzL30iCisKKwkJCQlpZiBbICRkZXRhY2hlZCA9IG5vIF07IHRoZW4KKwkJCQkJYnJhbmNoX2NvbG9yPSIkb2tfY29sb3IiCisJCQkJZWxzZQorCQkJCQlicmFuY2hfY29sb3I9IiRiYWRfY29sb3IiCisJCQkJZmkKKworCQkJCSMgU2V0dGluZyBnaXRzdHJpbmcgZGlyZWN0bHkgd2l0aCBcWyBhbmQgXF0gYXJvdW5kIGNvbG9ycworCQkJCSMgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQgd3JhcHBpbmcgaXNzdWVzIQorCQkJCWdpdHN0cmluZz0iXFskYnJhbmNoX2NvbG9yXF0kYnJhbmNoc3RyaW5nXFskY19jbGVhclxdIgorCisJCQkJaWYgWyAtbiAiJHckaSRzJHUkciRwIiBdOyB0aGVuCisJCQkJCWdpdHN0cmluZz0iJGdpdHN0cmluZyAiCisJCQkJZmkKKwkJCQlpZiBbICIkdyIgPSAiKiIgXTsgdGhlbgorCQkJCQlnaXRzdHJpbmc9IiRnaXRzdHJpbmdcWyRiYWRfY29sb3JcXSR3IgorCQkJCWZpCisJCQkJaWYgWyAtbiAiJGkiIF07IHRoZW4KKwkJCQkJZ2l0c3RyaW5nPSIkZ2l0c3RyaW5nXFskb2tfY29sb3JcXSRpIgorCQkJCWZpCisJCQkJaWYgWyAtbiAiJHMiIF07IHRoZW4KKwkJCQkJZ2l0c3RyaW5nPSIkZ2l0c3RyaW5nXFskZmxhZ3NfY29sb3JcXSRzIgorCQkJCWZpCisJCQkJaWYgWyAtbiAiJHUiIF07IHRoZW4KKwkJCQkJZ2l0c3RyaW5nPSIkZ2l0c3RyaW5nXFskYmFkX2NvbG9yXF0kdSIKKwkJCQlmaQorCQkJCWdpdHN0cmluZz0iJGdpdHN0cmluZ1xbJGNfY2xlYXJcXSRyJHAiCisJCQllbHNlCisJCQkJZ2l0c3RyaW5nPSIkYyR7YiMjcmVmcy9oZWFkcy99JHtmOisgJGZ9JHIkcCIKKwkJCWZpCisJCQlnaXRzdHJpbmc9JChwcmludGYgLS0gIiRwcmludGZfZm9ybWF0IiAiJGdpdHN0cmluZyIpCisJCQlQUzE9IiRwczFwY19zdGFydCRnaXRzdHJpbmckcHMxcGNfZW5kIgorCQllbHNlCisJCQkjIE5PIGNvbG9yIG9wdGlvbiB1bmxlc3MgaW4gUFJPTVBUX0NPTU1BTkQgbW9kZQorCQkJcHJpbnRmIC0tICIkcHJpbnRmX2Zvcm1hdCIgIiRjJHtiIyNyZWZzL2hlYWRzL30ke2Y6KyAkZn0kciRwIgorCQlmaQorCWZpCit9CmRpZmYgLS1naXQgYS9jb250cmliL2NyZWRlbnRpYWwvZ25vbWUta2V5cmluZy8uZ2l0aWdub3JlIGIvY29udHJpYi9jcmVkZW50aWFsL2dub21lLWtleXJpbmcvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGQ4ZmNkCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9jcmVkZW50aWFsL2dub21lLWtleXJpbmcvLmdpdGlnbm9yZQpAQCAtMCwwICsxIEBACitnaXQtY3JlZGVudGlhbC1nbm9tZS1rZXlyaW5nCmRpZmYgLS1naXQgYS9jb250cmliL2NyZWRlbnRpYWwvZ25vbWUta2V5cmluZy9NYWtlZmlsZSBiL2NvbnRyaWIvY3JlZGVudGlhbC9nbm9tZS1rZXlyaW5nL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2NTYxZDgKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2NyZWRlbnRpYWwvZ25vbWUta2V5cmluZy9NYWtlZmlsZQpAQCAtMCwwICsxLDI0IEBACitNQUlOOj1naXQtY3JlZGVudGlhbC1nbm9tZS1rZXlyaW5nCithbGw6OiAkKE1BSU4pCisKK0NDID0gZ2NjCitSTSA9IHJtIC1mCitDRkxBR1MgPSAtZyAtTzIgLVdhbGwKKworLWluY2x1ZGUgLi4vLi4vLi4vY29uZmlnLm1hay5hdXRvZ2VuCistaW5jbHVkZSAuLi8uLi8uLi9jb25maWcubWFrCisKK0lOQ1M6PSQoc2hlbGwgcGtnLWNvbmZpZyAtLWNmbGFncyBnbm9tZS1rZXlyaW5nLTEpCitMSUJTOj0kKHNoZWxsIHBrZy1jb25maWcgLS1saWJzIGdub21lLWtleXJpbmctMSkKKworU1JDUzo9JChNQUlOKS5jCitPQkpTOj0kKFNSQ1M6LmM9Lm8pCisKKyUubzogJS5jCisJJChDQykgJChDRkxBR1MpICQoQ1BQRkxBR1MpICQoSU5DUykgLW8gJEAgLWMgJDwKKworJChNQUlOKTogJChPQkpTKQorCSQoQ0MpIC1vICRAICQoTERGTEFHUykgJF4gJChMSUJTKQorCitjbGVhbjoKKwlAJChSTSkgJChNQUlOKSAkKE9CSlMpCmRpZmYgLS1naXQgYS9jb250cmliL2NyZWRlbnRpYWwvZ25vbWUta2V5cmluZy9naXQtY3JlZGVudGlhbC1nbm9tZS1rZXlyaW5nLmMgYi9jb250cmliL2NyZWRlbnRpYWwvZ25vbWUta2V5cmluZy9naXQtY3JlZGVudGlhbC1nbm9tZS1rZXlyaW5nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJjZGVmZQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvY3JlZGVudGlhbC9nbm9tZS1rZXlyaW5nL2dpdC1jcmVkZW50aWFsLWdub21lLWtleXJpbmcuYwpAQCAtMCwwICsxLDQ0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBKb2huIFN6YWttZWlzdGVyIDxqb2huQHN6YWttZWlzdGVyLm5ldD4KKyAqICAgICAgICAgICAgICAgMjAxMiBQaGlsaXBwIEEuIEhhcnRtYW5uIDxwYWhAcW8uY3g+CisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworLyoKKyAqIENyZWRpdHM6CisgKiAtIEdOT01FIEtleXJpbmcgQVBJIGhhbmRsaW5nIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBKb2huIFN6YWttZWlzdGVyCisgKiAtIHBvcnRlZCB0byBjcmVkZW50aWFsIGhlbHBlciBBUEkgYnkgUGhpbGlwcCBBLiBIYXJ0bWFubgorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8Z25vbWUta2V5cmluZy5oPgorCisvKgorICogVGhpcyBjcmVkZW50aWFsIHN0cnVjdCBhbmQgQVBJIGlzIHNpbXBsaWZpZWQgZnJvbSBnaXQncyBjcmVkZW50aWFsLntoLGN9CisgKi8KK3N0cnVjdCBjcmVkZW50aWFsCit7CisJY2hhciAgICAgICAgICAqcHJvdG9jb2w7CisJY2hhciAgICAgICAgICAqaG9zdDsKKwl1bnNpZ25lZCBzaG9ydCBwb3J0OworCWNoYXIgICAgICAgICAgKnBhdGg7CisJY2hhciAgICAgICAgICAqdXNlcm5hbWU7CisJY2hhciAgICAgICAgICAqcGFzc3dvcmQ7Cit9OworCisjZGVmaW5lIENSRURFTlRJQUxfSU5JVCBcCisgIHsgTlVMTCxOVUxMLDAsTlVMTCxOVUxMLE5VTEwgfQorCit2b2lkIGNyZWRlbnRpYWxfaW5pdChzdHJ1Y3QgY3JlZGVudGlhbCAqYyk7Cit2b2lkIGNyZWRlbnRpYWxfY2xlYXIoc3RydWN0IGNyZWRlbnRpYWwgKmMpOworaW50ICBjcmVkZW50aWFsX3JlYWQoc3RydWN0IGNyZWRlbnRpYWwgKmMpOwordm9pZCBjcmVkZW50aWFsX3dyaXRlKGNvbnN0IHN0cnVjdCBjcmVkZW50aWFsICpjKTsKKwordHlwZWRlZiBpbnQgKCpjcmVkZW50aWFsX29wX2NiKShzdHJ1Y3QgY3JlZGVudGlhbCopOworCitzdHJ1Y3QgY3JlZGVudGlhbF9vcGVyYXRpb24KK3sKKwljaGFyICAgICAgICAgICAgICpuYW1lOworCWNyZWRlbnRpYWxfb3BfY2Igb3A7Cit9OworCisjZGVmaW5lIENSRURFTlRJQUxfT1BfRU5EIFwKKyAgeyBOVUxMLE5VTEwgfQorCisvKgorICogVGFibGUgd2l0aCBvcGVyYXRpb24gY2FsbGJhY2tzIGlzIGRlZmluZWQgaW4gY29uY3JldGUKKyAqIGNyZWRlbnRpYWwgaGVscGVyIGltcGxlbWVudGF0aW9uIGFuZCBjb250YWlucyBlbnRyaWVzCisgKiBsaWtlIHsgImdldCIsIGZ1bmN0aW9uX3RvX2dldF9jcmVkZW50aWFsIH0gdGVybWluYXRlZAorICogYnkgQ1JFREVOVElBTF9PUF9FTkQuCisgKi8KK3N0cnVjdCBjcmVkZW50aWFsX29wZXJhdGlvbiBjb25zdCBjcmVkZW50aWFsX2hlbHBlcl9vcHNbXTsKKworLyogLS0tLS0tLS0tLS0tLS0tLSBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgaW5saW5lIHZvaWQgZnJlZV9wYXNzd29yZChjaGFyICpwYXNzd29yZCkKK3sKKwljaGFyICpjID0gcGFzc3dvcmQ7CisJaWYgKCFwYXNzd29yZCkKKwkJcmV0dXJuOworCisJd2hpbGUgKCpjKSAqYysrID0gJ1wwJzsKKwlmcmVlKHBhc3N3b3JkKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHdhcm5pbmcoY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCBhcDsKKworCXZhX3N0YXJ0KGFwLCBmbXQpOworCWZwcmludGYoc3RkZXJyLCAid2FybmluZzogIik7CisJdmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTsKKwlmcHJpbnRmKHN0ZGVyciwgIlxuIiApOworCXZhX2VuZChhcCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBlcnJvcihjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwl2YV9saXN0IGFwOworCisJdmFfc3RhcnQoYXAsIGZtdCk7CisJZnByaW50ZihzdGRlcnIsICJlcnJvcjogIik7CisJdmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTsKKwlmcHJpbnRmKHN0ZGVyciwgIlxuIiApOworCXZhX2VuZChhcCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkaWUoY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCBhcDsKKworCXZhX3N0YXJ0KGFwLGZtdCk7CisJZXJyb3IoZm10LCBhcCk7CisJdmFfZW5kKGFwKTsKKwlleGl0KEVYSVRfRkFJTFVSRSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkaWVfZXJybm8oaW50IGVycikKK3sKKwllcnJvcigiJXMiLCBzdHJlcnJvcihlcnIpKTsKKwlleGl0KEVYSVRfRkFJTFVSRSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgY2hhciAqeHN0cmR1cChjb25zdCBjaGFyICpzdHIpCit7CisJY2hhciAqcmV0ID0gc3RyZHVwKHN0cik7CisJaWYgKCFyZXQpCisJCWRpZV9lcnJubyhlcnJubyk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLSBHTk9NRSBLZXlyaW5nIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKiBjcmVhdGUgYSBzcGVjaWFsIGtleXJpbmcgb3B0aW9uIHN0cmluZywgaWYgcGF0aCBpcyBnaXZlbiAqLworc3RhdGljIGNoYXIqIGtleXJpbmdfb2JqZWN0KHN0cnVjdCBjcmVkZW50aWFsICpjKQoreworCWNoYXIqIG9iamVjdCA9IE5VTEw7CisKKwlpZiAoIWMtPnBhdGgpCisJCXJldHVybiBvYmplY3Q7CisKKwlvYmplY3QgPSAoY2hhciopIG1hbGxvYyhzdHJsZW4oYy0+aG9zdCkrc3RybGVuKGMtPnBhdGgpKzgpOworCWlmKCFvYmplY3QpCisJCWRpZV9lcnJubyhlcnJubyk7CisKKwlpZihjLT5wb3J0KQorCQlzcHJpbnRmKG9iamVjdCwiJXM6JWhkLyVzIixjLT5ob3N0LGMtPnBvcnQsYy0+cGF0aCk7CisJZWxzZQorCQlzcHJpbnRmKG9iamVjdCwiJXMvJXMiLGMtPmhvc3QsYy0+cGF0aCk7CisKKwlyZXR1cm4gb2JqZWN0OworfQorCitpbnQga2V5cmluZ19nZXQoc3RydWN0IGNyZWRlbnRpYWwgKmMpCit7CisJY2hhciogb2JqZWN0ID0gTlVMTDsKKwlHTGlzdCAqZW50cmllczsKKwlHbm9tZUtleXJpbmdOZXR3b3JrUGFzc3dvcmREYXRhICpwYXNzd29yZF9kYXRhOworCUdub21lS2V5cmluZ1Jlc3VsdCByZXN1bHQ7CisKKwlpZiAoIWMtPnByb3RvY29sIHx8ICEoYy0+aG9zdCB8fCBjLT5wYXRoKSkKKwkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKKworCW9iamVjdCA9IGtleXJpbmdfb2JqZWN0KGMpOworCisJcmVzdWx0ID0gZ25vbWVfa2V5cmluZ19maW5kX25ldHdvcmtfcGFzc3dvcmRfc3luYygKKwkJCQljLT51c2VybmFtZSwKKwkJCQlOVUxMIC8qIGRvbWFpbiAqLywKKwkJCQljLT5ob3N0LAorCQkJCW9iamVjdCwKKwkJCQljLT5wcm90b2NvbCwKKwkJCQlOVUxMIC8qIGF1dGh0eXBlICovLAorCQkJCWMtPnBvcnQsCisJCQkJJmVudHJpZXMpOworCisJZnJlZShvYmplY3QpOworCisJaWYgKHJlc3VsdCA9PSBHTk9NRV9LRVlSSU5HX1JFU1VMVF9OT19NQVRDSCkKKwkJcmV0dXJuIEVYSVRfU1VDQ0VTUzsKKworCWlmIChyZXN1bHQgPT0gR05PTUVfS0VZUklOR19SRVNVTFRfQ0FOQ0VMTEVEKQorCQlyZXR1cm4gRVhJVF9TVUNDRVNTOworCisJaWYgKHJlc3VsdCAhPSBHTk9NRV9LRVlSSU5HX1JFU1VMVF9PSykgeworCQllcnJvcigiJXMiLGdub21lX2tleXJpbmdfcmVzdWx0X3RvX21lc3NhZ2UocmVzdWx0KSk7CisJCXJldHVybiBFWElUX0ZBSUxVUkU7CisJfQorCisJLyogcGljayB0aGUgZmlyc3Qgb25lIGZyb20gdGhlIGxpc3QgKi8KKwlwYXNzd29yZF9kYXRhID0gKEdub21lS2V5cmluZ05ldHdvcmtQYXNzd29yZERhdGEgKikgZW50cmllcy0+ZGF0YTsKKworCWZyZWVfcGFzc3dvcmQoYy0+cGFzc3dvcmQpOworCWMtPnBhc3N3b3JkID0geHN0cmR1cChwYXNzd29yZF9kYXRhLT5wYXNzd29yZCk7CisKKwlpZiAoIWMtPnVzZXJuYW1lKQorCQljLT51c2VybmFtZSA9IHhzdHJkdXAocGFzc3dvcmRfZGF0YS0+dXNlcik7CisKKwlnbm9tZV9rZXlyaW5nX25ldHdvcmtfcGFzc3dvcmRfbGlzdF9mcmVlKGVudHJpZXMpOworCisJcmV0dXJuIEVYSVRfU1VDQ0VTUzsKK30KKworCitpbnQga2V5cmluZ19zdG9yZShzdHJ1Y3QgY3JlZGVudGlhbCAqYykKK3sKKwlndWludDMyIGl0ZW1faWQ7CisJY2hhciAgKm9iamVjdCA9IE5VTEw7CisKKwkvKgorCSAqIFNhbml0eSBjaGVjayB0aGF0IHdoYXQgd2UgYXJlIHN0b3JpbmcgaXMgYWN0dWFsbHkgc2Vuc2libGUuCisJICogSW4gcGFydGljdWxhciwgd2UgY2FuJ3QgbWFrZSBhIFVSTCB3aXRob3V0IGEgcHJvdG9jb2wgZmllbGQuCisJICogV2l0aG91dCBlaXRoZXIgYSBob3N0IG9yIHBhdGhuYW1lIChkZXBlbmRpbmcgb24gdGhlIHNjaGVtZSksCisJICogd2UgaGF2ZSBubyBwcmltYXJ5IGtleS4gQW5kIHdpdGhvdXQgYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQsCisJICogd2UgYXJlIG5vdCBhY3R1YWxseSBzdG9yaW5nIGEgY3JlZGVudGlhbC4KKwkgKi8KKwlpZiAoIWMtPnByb3RvY29sIHx8ICEoYy0+aG9zdCB8fCBjLT5wYXRoKSB8fAorCSAgICAhYy0+dXNlcm5hbWUgfHwgIWMtPnBhc3N3b3JkKQorCQlyZXR1cm4gRVhJVF9GQUlMVVJFOworCisJb2JqZWN0ID0ga2V5cmluZ19vYmplY3QoYyk7CisKKwlnbm9tZV9rZXlyaW5nX3NldF9uZXR3b3JrX3Bhc3N3b3JkX3N5bmMoCisJCQkJR05PTUVfS0VZUklOR19ERUZBVUxULAorCQkJCWMtPnVzZXJuYW1lLAorCQkJCU5VTEwgLyogZG9tYWluICovLAorCQkJCWMtPmhvc3QsCisJCQkJb2JqZWN0LAorCQkJCWMtPnByb3RvY29sLAorCQkJCU5VTEwgLyogYXV0aHR5cGUgKi8sCisJCQkJYy0+cG9ydCwKKwkJCQljLT5wYXNzd29yZCwKKwkJCQkmaXRlbV9pZCk7CisKKwlmcmVlKG9iamVjdCk7CisJcmV0dXJuIEVYSVRfU1VDQ0VTUzsKK30KKworaW50IGtleXJpbmdfZXJhc2Uoc3RydWN0IGNyZWRlbnRpYWwgKmMpCit7CisJY2hhciAgKm9iamVjdCA9IE5VTEw7CisJR0xpc3QgKmVudHJpZXM7CisJR25vbWVLZXlyaW5nTmV0d29ya1Bhc3N3b3JkRGF0YSAqcGFzc3dvcmRfZGF0YTsKKwlHbm9tZUtleXJpbmdSZXN1bHQgcmVzdWx0OworCisJLyoKKwkgKiBTYW5pdHkgY2hlY2sgdGhhdCB3ZSBhY3R1YWxseSBoYXZlIHNvbWV0aGluZyB0byBtYXRjaAorCSAqIGFnYWluc3QuIFRoZSBpbnB1dCB3ZSBnZXQgaXMgYSByZXN0cmljdGl2ZSBwYXR0ZXJuLAorCSAqIHNvIHRlY2huaWNhbGx5IGEgYmxhbmsgY3JlZGVudGlhbCBtZWFucyAiZXJhc2UgZXZlcnl0aGluZyIuCisJICogQnV0IGl0IGlzIHRvbyBlYXN5IHRvIGFjY2lkZW50YWxseSBzZW5kIHRoaXMsIHNpbmNlIGl0IGlzIGVxdWl2YWxlbnQKKwkgKiB0byBlbXB0eSBpbnB1dC4gU28gZXhwbGljaXRseSBkaXNhbGxvdyBpdCwgYW5kIHJlcXVpcmUgdGhhdCB0aGUKKwkgKiBwYXR0ZXJuIGhhdmUgc29tZSBhY3R1YWwgY29udGVudCB0byBtYXRjaC4KKwkgKi8KKwlpZiAoIWMtPnByb3RvY29sICYmICFjLT5ob3N0ICYmICFjLT5wYXRoICYmICFjLT51c2VybmFtZSkKKwkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKKworCW9iamVjdCA9IGtleXJpbmdfb2JqZWN0KGMpOworCisJcmVzdWx0ID0gZ25vbWVfa2V5cmluZ19maW5kX25ldHdvcmtfcGFzc3dvcmRfc3luYygKKwkJCQljLT51c2VybmFtZSwKKwkJCQlOVUxMIC8qIGRvbWFpbiAqLywKKwkJCQljLT5ob3N0LAorCQkJCW9iamVjdCwKKwkJCQljLT5wcm90b2NvbCwKKwkJCQlOVUxMIC8qIGF1dGh0eXBlICovLAorCQkJCWMtPnBvcnQsCisJCQkJJmVudHJpZXMpOworCisJZnJlZShvYmplY3QpOworCisJaWYgKHJlc3VsdCA9PSBHTk9NRV9LRVlSSU5HX1JFU1VMVF9OT19NQVRDSCkKKwkJcmV0dXJuIEVYSVRfU1VDQ0VTUzsKKworCWlmIChyZXN1bHQgPT0gR05PTUVfS0VZUklOR19SRVNVTFRfQ0FOQ0VMTEVEKQorCQlyZXR1cm4gRVhJVF9TVUNDRVNTOworCisJaWYgKHJlc3VsdCAhPSBHTk9NRV9LRVlSSU5HX1JFU1VMVF9PSykKKwl7CisJCWVycm9yKCIlcyIsZ25vbWVfa2V5cmluZ19yZXN1bHRfdG9fbWVzc2FnZShyZXN1bHQpKTsKKwkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKKwl9CisKKwkvKiBwaWNrIHRoZSBmaXJzdCBvbmUgZnJvbSB0aGUgbGlzdCAoZGVsZXRlIGFsbCBtYXRjaGVzPykgKi8KKwlwYXNzd29yZF9kYXRhID0gKEdub21lS2V5cmluZ05ldHdvcmtQYXNzd29yZERhdGEgKikgZW50cmllcy0+ZGF0YTsKKworCXJlc3VsdCA9IGdub21lX2tleXJpbmdfaXRlbV9kZWxldGVfc3luYygKKwkJcGFzc3dvcmRfZGF0YS0+a2V5cmluZywgcGFzc3dvcmRfZGF0YS0+aXRlbV9pZCk7CisKKwlnbm9tZV9rZXlyaW5nX25ldHdvcmtfcGFzc3dvcmRfbGlzdF9mcmVlKGVudHJpZXMpOworCisJaWYgKHJlc3VsdCAhPSBHTk9NRV9LRVlSSU5HX1JFU1VMVF9PSykKKwl7CisJCWVycm9yKCIlcyIsZ25vbWVfa2V5cmluZ19yZXN1bHRfdG9fbWVzc2FnZShyZXN1bHQpKTsKKwkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKKwl9CisKKwlyZXR1cm4gRVhJVF9TVUNDRVNTOworfQorCisvKgorICogVGFibGUgd2l0aCBoZWxwZXIgb3BlcmF0aW9uIGNhbGxiYWNrcywgdXNlZCBieSBnZW5lcmljCisgKiBjcmVkZW50aWFsIGhlbHBlciBtYWluIGZ1bmN0aW9uLgorICovCitzdHJ1Y3QgY3JlZGVudGlhbF9vcGVyYXRpb24gY29uc3QgY3JlZGVudGlhbF9oZWxwZXJfb3BzW10gPQoreworCXsgImdldCIsICAga2V5cmluZ19nZXQgICB9LAorCXsgInN0b3JlIiwga2V5cmluZ19zdG9yZSB9LAorCXsgImVyYXNlIiwga2V5cmluZ19lcmFzZSB9LAorCUNSRURFTlRJQUxfT1BfRU5ECit9OworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0gY3JlZGVudGlhbCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgY3JlZGVudGlhbF9pbml0KHN0cnVjdCBjcmVkZW50aWFsICpjKQoreworCW1lbXNldChjLCAwLCBzaXplb2YoKmMpKTsKK30KKwordm9pZCBjcmVkZW50aWFsX2NsZWFyKHN0cnVjdCBjcmVkZW50aWFsICpjKQoreworCWZyZWUoYy0+cHJvdG9jb2wpOworCWZyZWUoYy0+aG9zdCk7CisJZnJlZShjLT5wYXRoKTsKKwlmcmVlKGMtPnVzZXJuYW1lKTsKKwlmcmVlX3Bhc3N3b3JkKGMtPnBhc3N3b3JkKTsKKworCWNyZWRlbnRpYWxfaW5pdChjKTsKK30KKworaW50IGNyZWRlbnRpYWxfcmVhZChzdHJ1Y3QgY3JlZGVudGlhbCAqYykKK3sKKwljaGFyICAgIGJ1ZlsxMDI0XTsKKwlzc2l6ZV90IGxpbmVfbGVuID0gMDsKKwljaGFyICAgKmtleSAgICAgID0gYnVmOworCWNoYXIgICAqdmFsdWU7CisKKwl3aGlsZSAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgc3RkaW4pKQorCXsKKwkJbGluZV9sZW4gPSBzdHJsZW4oYnVmKTsKKworCQlpZihidWZbbGluZV9sZW4tMV09PSdcbicpCisJCQlidWZbLS1saW5lX2xlbl09J1wwJzsKKworCQlpZighbGluZV9sZW4pCisJCQlicmVhazsKKworCQl2YWx1ZSA9IHN0cmNocihidWYsJz0nKTsKKwkJaWYoIXZhbHVlKSB7CisJCQl3YXJuaW5nKCJpbnZhbGlkIGNyZWRlbnRpYWwgbGluZTogJXMiLCBrZXkpOworCQkJcmV0dXJuIC0xOworCQl9CisJCSp2YWx1ZSsrID0gJ1wwJzsKKworCQlpZiAoIXN0cmNtcChrZXksICJwcm90b2NvbCIpKSB7CisJCQlmcmVlKGMtPnByb3RvY29sKTsKKwkJCWMtPnByb3RvY29sID0geHN0cmR1cCh2YWx1ZSk7CisJCX0gZWxzZSBpZiAoIXN0cmNtcChrZXksICJob3N0IikpIHsKKwkJCWZyZWUoYy0+aG9zdCk7CisJCQljLT5ob3N0ID0geHN0cmR1cCh2YWx1ZSk7CisJCQl2YWx1ZSA9IHN0cnJjaHIoYy0+aG9zdCwnOicpOworCQkJaWYgKHZhbHVlKSB7CisJCQkJKnZhbHVlKysgPSAnXDAnOworCQkJCWMtPnBvcnQgPSBhdG9pKHZhbHVlKTsKKwkJCX0KKwkJfSBlbHNlIGlmICghc3RyY21wKGtleSwgInBhdGgiKSkgeworCQkJZnJlZShjLT5wYXRoKTsKKwkJCWMtPnBhdGggPSB4c3RyZHVwKHZhbHVlKTsKKwkJfSBlbHNlIGlmICghc3RyY21wKGtleSwgInVzZXJuYW1lIikpIHsKKwkJCWZyZWUoYy0+dXNlcm5hbWUpOworCQkJYy0+dXNlcm5hbWUgPSB4c3RyZHVwKHZhbHVlKTsKKwkJfSBlbHNlIGlmICghc3RyY21wKGtleSwgInBhc3N3b3JkIikpIHsKKwkJCWZyZWVfcGFzc3dvcmQoYy0+cGFzc3dvcmQpOworCQkJYy0+cGFzc3dvcmQgPSB4c3RyZHVwKHZhbHVlKTsKKwkJCXdoaWxlICgqdmFsdWUpICp2YWx1ZSsrID0gJ1wwJzsKKwkJfQorCQkvKgorCQkgKiBJZ25vcmUgb3RoZXIgbGluZXM7IHdlIGRvbid0IGtub3cgd2hhdCB0aGV5IG1lYW4sIGJ1dAorCQkgKiB0aGlzIGZ1dHVyZS1wcm9vZnMgdXMgd2hlbiBsYXRlciB2ZXJzaW9ucyBvZiBnaXQgZG8KKwkJICogbGVhcm4gbmV3IGxpbmVzLCBhbmQgdGhlIGhlbHBlcnMgYXJlIHVwZGF0ZWQgdG8gbWF0Y2guCisJCSAqLworCX0KKwlyZXR1cm4gMDsKK30KKwordm9pZCBjcmVkZW50aWFsX3dyaXRlX2l0ZW0oRklMRSAqZnAsIGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqdmFsdWUpCit7CisJaWYgKCF2YWx1ZSkKKwkJcmV0dXJuOworCWZwcmludGYoZnAsICIlcz0lc1xuIiwga2V5LCB2YWx1ZSk7Cit9CisKK3ZvaWQgY3JlZGVudGlhbF93cml0ZShjb25zdCBzdHJ1Y3QgY3JlZGVudGlhbCAqYykKK3sKKwkvKiBvbmx5IHdyaXRlIHVzZXJuYW1lL3Bhc3N3b3JkLCBpZiBzZXQgKi8KKwljcmVkZW50aWFsX3dyaXRlX2l0ZW0oc3Rkb3V0LCAidXNlcm5hbWUiLCBjLT51c2VybmFtZSk7CisJY3JlZGVudGlhbF93cml0ZV9pdGVtKHN0ZG91dCwgInBhc3N3b3JkIiwgYy0+cGFzc3dvcmQpOworfQorCitzdGF0aWMgdm9pZCB1c2FnZShjb25zdCBjaGFyICpuYW1lKQoreworCXN0cnVjdCBjcmVkZW50aWFsX29wZXJhdGlvbiBjb25zdCAqdHJ5X29wID0gY3JlZGVudGlhbF9oZWxwZXJfb3BzOworCWNvbnN0IGNoYXIgKmJhc2VuYW1lID0gc3RycmNocihuYW1lLCcvJyk7CisKKwliYXNlbmFtZSA9IChiYXNlbmFtZSkgPyBiYXNlbmFtZSArIDEgOiBuYW1lOworCWZwcmludGYoc3RkZXJyLCAidXNhZ2U6ICVzIDwiLCBiYXNlbmFtZSk7CisJd2hpbGUodHJ5X29wLT5uYW1lKSB7CisJCWZwcmludGYoc3RkZXJyLCIlcyIsKHRyeV9vcCsrKS0+bmFtZSk7CisJCWlmKHRyeV9vcC0+bmFtZSkKKwkJCWZwcmludGYoc3RkZXJyLCIlcyIsInwiKTsKKwl9CisJZnByaW50ZihzdGRlcnIsIiVzIiwiPlxuIik7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJaW50IHJldCA9IEVYSVRfU1VDQ0VTUzsKKworCXN0cnVjdCBjcmVkZW50aWFsX29wZXJhdGlvbiBjb25zdCAqdHJ5X29wID0gY3JlZGVudGlhbF9oZWxwZXJfb3BzOworCXN0cnVjdCBjcmVkZW50aWFsICAgICAgICAgICAgICAgICAgY3JlZCAgID0gQ1JFREVOVElBTF9JTklUOworCisJaWYgKCFhcmd2WzFdKSB7CisJCXVzYWdlKGFyZ3ZbMF0pOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBsb29rdXAgb3BlcmF0aW9uIGNhbGxiYWNrICovCisJd2hpbGUodHJ5X29wLT5uYW1lICYmIHN0cmNtcChhcmd2WzFdLCB0cnlfb3AtPm5hbWUpKQorCQl0cnlfb3ArKzsKKworCS8qIHVuc3VwcG9ydGVkIG9wZXJhdGlvbiBnaXZlbiAtLSBpZ25vcmUgc2lsZW50bHkgKi8KKwlpZighdHJ5X29wLT5uYW1lIHx8ICF0cnlfb3AtPm9wKQorCQlnb3RvIG91dDsKKworCXJldCA9IGNyZWRlbnRpYWxfcmVhZCgmY3JlZCk7CisJaWYocmV0KQorCQlnb3RvIG91dDsKKworCS8qIHBlcmZvcm0gY3JlZGVudGlhbCBvcGVyYXRpb24gKi8KKwlyZXQgPSAoKnRyeV9vcC0+b3ApKCZjcmVkKTsKKworCWNyZWRlbnRpYWxfd3JpdGUoJmNyZWQpOworCitvdXQ6CisJY3JlZGVudGlhbF9jbGVhcigmY3JlZCk7CisJcmV0dXJuIHJldDsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvY3JlZGVudGlhbC9uZXRyYy9NYWtlZmlsZSBiL2NvbnRyaWIvY3JlZGVudGlhbC9uZXRyYy9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWI3NjEzCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9jcmVkZW50aWFsL25ldHJjL01ha2VmaWxlCkBAIC0wLDAgKzEsNSBAQAordGVzdDoKKwkuL3Rlc3QucGwKKwordGVzdHZlcmJvc2U6CisJLi90ZXN0LnBsIC1kIC12CmRpZmYgLS1naXQgYS9jb250cmliL2NyZWRlbnRpYWwvbmV0cmMvZ2l0LWNyZWRlbnRpYWwtbmV0cmMgYi9jb250cmliL2NyZWRlbnRpYWwvbmV0cmMvZ2l0LWNyZWRlbnRpYWwtbmV0cmMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmM1MWM0MwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvY3JlZGVudGlhbC9uZXRyYy9naXQtY3JlZGVudGlhbC1uZXRyYwpAQCAtMCwwICsxLDQyMSBAQAorIyEvdXNyL2Jpbi9wZXJsCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBHZXRvcHQ6Okxvbmc7Cit1c2UgRmlsZTo6QmFzZW5hbWU7CisKK215ICRWRVJTSU9OID0gIjAuMSI7CisKK215ICVvcHRpb25zID0gKAorCSAgICAgICBoZWxwID0+IDAsCisJICAgICAgIGRlYnVnID0+IDAsCisJICAgICAgIHZlcmJvc2UgPT4gMCwKKwkgICAgICAgaW5zZWN1cmUgPT4gMCwKKwkgICAgICAgZmlsZSA9PiBbXSwKKworCSAgICAgICAjIGlkZW50aWNhbCB0b2tlbiBtYXBzLCBlLmcuIGhvc3QgLT4gaG9zdCwgd2lsbCBiZSBpbnNlcnRlZCBsYXRlcgorCSAgICAgICB0bWFwID0+IHsKKwkJCXBvcnQgPT4gJ3Byb3RvY29sJywKKwkJCW1hY2hpbmUgPT4gJ2hvc3QnLAorCQkJcGF0aCA9PiAncGF0aCcsCisJCQlsb2dpbiA9PiAndXNlcm5hbWUnLAorCQkJdXNlciA9PiAndXNlcm5hbWUnLAorCQkJcGFzc3dvcmQgPT4gJ3Bhc3N3b3JkJywKKwkJICAgICAgIH0KKwkgICAgICApOworCisjIE1hcCBlYWNoIGNyZWRlbnRpYWwgcHJvdG9jb2wgdG9rZW4gdG8gaXRzZWxmIG9uIHRoZSBuZXRyYyBzaWRlLgorZm9yZWFjaCAodmFsdWVzICV7JG9wdGlvbnN7dG1hcH19KSB7CisJJG9wdGlvbnN7dG1hcH0tPnskX30gPSAkXzsKK30KKworIyBOb3csICRvcHRpb25ze3RtYXB9IGhhcyBhIG1hcHBpbmcgZnJvbSB0aGUgbmV0cmMgZm9ybWF0IHRvIHRoZSBHaXQgY3JlZGVudGlhbAorIyBoZWxwZXIgcHJvdG9jb2wuCisKKyMgTmV4dCwgd2UgYnVpbGQgdGhlIHJldmVyc2UgdG9rZW4gbWFwLgorCisjIFdoZW4gJHJtYXB7Zm9vfSBjb250YWlucyAnYmFyJywgdGhhdCBtZWFucyB0aGF0IHdoYXQgdGhlIEdpdCBjcmVkZW50aWFsIGhlbHBlcgorIyBwcm90b2NvbCBjYWxscyAnYmFyJyBpcyBmb3VuZCBhcyAnZm9vJyBpbiB0aGUgbmV0cmMvYXV0aGluZm8gZmlsZS4gIEtleXMgaW4KKyMgJXJtYXAgYXJlIHdoYXQgd2UgZXhwZWN0IHRvIHJlYWQgZnJvbSB0aGUgbmV0cmMvYXV0aGluZm8gZmlsZS4KKworbXkgJXJtYXA7Citmb3JlYWNoIG15ICRrIChrZXlzICV7JG9wdGlvbnN7dG1hcH19KSB7CisJcHVzaCBAeyRybWFweyRvcHRpb25ze3RtYXB9LT57JGt9fX0sICRrOworfQorCitHZXRvcHQ6Okxvbmc6OkNvbmZpZ3VyZSgiYnVuZGxpbmciKTsKKworIyBUT0RPOiBtYXliZSBhbGxvdyB0aGUgdG9rZW4gbWFwICRvcHRpb25ze3RtYXB9IHRvIGJlIGNvbmZpZ3VyYWJsZS4KK0dldE9wdGlvbnMoXCVvcHRpb25zLAorICAgICAgICAgICAiaGVscHxoIiwKKyAgICAgICAgICAgImRlYnVnfGQiLAorICAgICAgICAgICAiaW5zZWN1cmV8ayIsCisgICAgICAgICAgICJ2ZXJib3NlfHYiLAorICAgICAgICAgICAiZmlsZXxmPXNAIiwKKyAgICAgICAgICApOworCitpZiAoJG9wdGlvbnN7aGVscH0pIHsKKwlteSAkc2hvcnRuYW1lID0gYmFzZW5hbWUoJDApOworCSRzaG9ydG5hbWUgPX4gcy9naXQtY3JlZGVudGlhbC0vLzsKKworCXByaW50IDw8RU9ISVBQVVM7CisKKyQwIFstZiBBVVRIRklMRTFdIFstZiBBVVRIRklMRU5dIFstZF0gWy12XSBbLWtdIGdldAorCitWZXJzaW9uICRWRVJTSU9OIGJ5IHR6elxAbGlmZWxvZ3MuY29tLiAgTGljZW5zZTogQlNELgorCitPcHRpb25zOgorCisgIC1mfC0tZmlsZSBBVVRIRklMRSA6IHNwZWNpZnkgbmV0cmMtc3R5bGUgZmlsZXMuICBGaWxlcyB3aXRoIHRoZSAuZ3BnIGV4dGVuc2lvbgorICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIGRlY3J5cHRlZCBieSBHUEcgYmVmb3JlIHBhcnNpbmcuICBNdWx0aXBsZSAtZgorICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgYXJlIE9LLiAgVGhleSBhcmUgcHJvY2Vzc2VkIGluIG9yZGVyLCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0IG1hdGNoaW5nIGVudHJ5IGZvdW5kIGlzIHJldHVybmVkIHZpYSB0aGUgY3JlZGVudGlhbAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwZXIgcHJvdG9jb2wgKHNlZSBiZWxvdykuCisKKyAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBubyAtZiBvcHRpb24gaXMgZ2l2ZW4sIC5hdXRoaW5mby5ncGcsIC5uZXRyYy5ncGcsCisJCSAgICAgICAuYXV0aGluZm8sIGFuZCAubmV0cmMgZmlsZXMgaW4geW91ciBob21lIGRpcmVjdG9yeSBhcmUgdXNlZAorCQkgICAgICAgaW4gdGhpcyBvcmRlci4KKworICAta3wtLWluc2VjdXJlICAgICAgOiBpZ25vcmUgYmFkIGZpbGUgb3duZXJzaGlwIG9yIHBlcm1pc3Npb25zCisKKyAgLWR8LS1kZWJ1ZyAgICAgICAgIDogdHVybiBvbiBkZWJ1Z2dpbmcgKGRldmVsb3BlciBpbmZvKQorCisgIC12fC0tdmVyYm9zZSAgICAgICA6IGJlIG1vcmUgdmVyYm9zZSAoc2hvdyBmaWxlcyBhbmQgaW5mb3JtYXRpb24gZm91bmQpCisKK1RvIGVuYWJsZSB0aGlzIGNyZWRlbnRpYWwgaGVscGVyOgorCisgIGdpdCBjb25maWcgY3JlZGVudGlhbC5oZWxwZXIgJyRzaG9ydG5hbWUgLWYgQVVUSEZJTEUxIC1mIEFVVEhGSUxFMicKKworKE5vdGUgdGhhdCBHaXQgd2lsbCBwcmVwZW5kICJnaXQtY3JlZGVudGlhbC0iIHRvIHRoZSBoZWxwZXIgbmFtZSBhbmQgbG9vayBmb3IgaXQKK2luIHRoZSBwYXRoLikKKworLi4uYW5kIGlmIHlvdSB3YW50IGxvdHMgb2YgZGVidWdnaW5nIGluZm86CisKKyAgZ2l0IGNvbmZpZyBjcmVkZW50aWFsLmhlbHBlciAnJHNob3J0bmFtZSAtZiBBVVRIRklMRSAtZCcKKworLi4ub3IgdG8gc2VlIHRoZSBmaWxlcyBvcGVuZWQgYW5kIGRhdGEgZm91bmQ6CisKKyAgZ2l0IGNvbmZpZyBjcmVkZW50aWFsLmhlbHBlciAnJHNob3J0bmFtZSAtZiBBVVRIRklMRSAtdicKKworT25seSAiZ2V0IiBtb2RlIGlzIHN1cHBvcnRlZCBieSB0aGlzIGNyZWRlbnRpYWwgaGVscGVyLiAgSXQgb3BlbnMgZXZlcnkgQVVUSEZJTEUKK2FuZCBsb29rcyBmb3IgdGhlIGZpcnN0IGVudHJ5IHRoYXQgbWF0Y2hlcyB0aGUgcmVxdWVzdGVkIHNlYXJjaCBjcml0ZXJpYToKKworICdwb3J0fHByb3RvY29sJzoKKyAgIFRoZSBwcm90b2NvbCB0aGF0IHdpbGwgYmUgdXNlZCAoZS5nLiwgaHR0cHMpLiAocHJvdG9jb2w9WCkKKworICdtYWNoaW5lfGhvc3QnOgorICAgVGhlIHJlbW90ZSBob3N0bmFtZSBmb3IgYSBuZXR3b3JrIGNyZWRlbnRpYWwuIChob3N0PVgpCisKKyAncGF0aCc6CisgICBUaGUgcGF0aCB3aXRoIHdoaWNoIHRoZSBjcmVkZW50aWFsIHdpbGwgYmUgdXNlZC4gKHBhdGg9WCkKKworICdsb2dpbnx1c2VyfHVzZXJuYW1lJzoKKyAgIFRoZSBjcmVkZW50aWFs4oCZcyB1c2VybmFtZSwgaWYgd2UgYWxyZWFkeSBoYXZlIG9uZS4gKHVzZXJuYW1lPVgpCisKK1RodXMsIHdoZW4gd2UgZ2V0IHRoaXMgcXVlcnkgb24gU1RESU46CisKK2hvc3Q9Z2l0aHViLmNvbQorcHJvdG9jb2w9aHR0cHMKK3VzZXJuYW1lPXR6egorCit0aGlzIGNyZWRlbnRpYWwgaGVscGVyIHdpbGwgbG9vayBmb3IgdGhlIGZpcnN0IGVudHJ5IGluIGV2ZXJ5IEFVVEhGSUxFIHRoYXQKK21hdGNoZXMKKworbWFjaGluZSBnaXRodWIuY29tIHBvcnQgaHR0cHMgbG9naW4gdHp6CisKK09SCisKK21hY2hpbmUgZ2l0aHViLmNvbSBwcm90b2NvbCBodHRwcyBsb2dpbiB0enoKKworT1IuLi4gZXRjLiBhY2NlcHRhYmxlIHRva2VucyBhcyBsaXN0ZWQgYWJvdmUuICBBbnkgdW5rbm93biB0b2tlbnMgYXJlCitzaW1wbHkgaWdub3JlZC4KKworVGhlbiwgdGhlIGhlbHBlciB3aWxsIHByaW50IG91dCB3aGF0ZXZlciB0b2tlbnMgaXQgZ290IGZyb20gdGhlIGVudHJ5LCBpbmNsdWRpbmcKKyJwYXNzd29yZCIgdG9rZW5zLCBtYXBwaW5nIGJhY2sgdG8gR2l0J3MgaGVscGVyIHByb3RvY29sOyBlLmcuICJwb3J0IiBpcyBtYXBwZWQKK2JhY2sgdG8gInByb3RvY29sIi4gIEFueSByZWR1bmRhbnQgZW50cnkgdG9rZW5zIChwYXJ0IG9mIHRoZSBvcmlnaW5hbCBxdWVyeSkgYXJlCitza2lwcGVkLgorCitBZ2Fpbiwgbm90ZSB0aGF0IG9ubHkgdGhlIGZpcnN0IG1hdGNoaW5nIGVudHJ5IGZyb20gYWxsIHRoZSBBVVRIRklMRXMsIHByb2Nlc3NlZAoraW4gdGhlIHNlcXVlbmNlIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUsIGlzIHVzZWQuCisKK05ldHJjL2F1dGhpbmZvIHRva2VucyBjYW4gYmUgcXVvdGVkIGFzICdTVFJJTkcnIG9yICJTVFJJTkciLgorCitObyBjYWNoaW5nIGlzIHBlcmZvcm1lZCBieSB0aGlzIGNyZWRlbnRpYWwgaGVscGVyLgorCitFT0hJUFBVUworCisJZXhpdCAwOworfQorCitteSAkbW9kZSA9IHNoaWZ0IEBBUkdWOworCisjIENyZWRlbnRpYWxzIG11c3QgZ2V0IGEgcGFyYW1ldGVyLCBzbyBkaWUgaWYgaXQncyBtaXNzaW5nLgorZGllICJTeW50YXg6ICQwIFstZiBBVVRIRklMRTFdIFstZiBBVVRIRklMRU5dIFstZF0gZ2V0IiB1bmxlc3MgZGVmaW5lZCAkbW9kZTsKKworIyBPbmx5IHN1cHBvcnQgJ2dldCcgbW9kZTsgd2l0aCBhbnkgb3RoZXIgdW5zdXBwb3J0ZWQgb25lcyB3ZSBqdXN0IGV4aXQuCitleGl0IDAgdW5sZXNzICRtb2RlIGVxICdnZXQnOworCitteSAkZmlsZXMgPSAkb3B0aW9uc3tmaWxlfTsKKworIyBpZiBubyBmaWxlcyB3ZXJlIGdpdmVuLCB1c2UgYSBwcmVkZWZpbmVkIGxpc3QuCisjIG5vdGUgdGhhdCAuZ3BnIGZpbGVzIGNvbWUgZmlyc3QKK3VubGVzcyAoc2NhbGFyIEAkZmlsZXMpIHsKKwlteSBAY2FuZGlkYXRlcyA9IHF3WworCQkJCSAgIH4vLmF1dGhpbmZvLmdwZworCQkJCSAgIH4vLm5ldHJjLmdwZworCQkJCSAgIH4vLmF1dGhpbmZvCisJCQkJICAgfi8ubmV0cmMKKwkJCSAgXTsKKworCSRmaWxlcyA9ICRvcHRpb25ze2ZpbGV9ID0gWyBtYXAgeyBnbG9iICRfIH0gQGNhbmRpZGF0ZXMgXTsKK30KKworbXkgJHF1ZXJ5ID0gcmVhZF9jcmVkZW50aWFsX2RhdGFfZnJvbV9zdGRpbigpOworCitGSUxFOgorZm9yZWFjaCBteSAkZmlsZSAoQCRmaWxlcykgeworCW15ICRncGdtb2RlID0gJGZpbGUgPX4gbS9cLmdwZyQvOworCXVubGVzcyAoLXIgJGZpbGUpIHsKKwkJbG9nX3ZlcmJvc2UoIlVuYWJsZSB0byByZWFkICRmaWxlOyBza2lwcGluZyBpdCIpOworCQluZXh0IEZJTEU7CisJfQorCisJIyB0aGUgZm9sbG93aW5nIGNoZWNrIGlzIGNvcGllZCBmcm9tIE5ldDo6TmV0cmMsIGZvciBub24tR1BHIGZpbGVzCisJIyBPUy8yIGFuZCBXaW4zMiBkbyBub3QgaGFuZGxlIHN0YXQgaW4gYSB3YXkgY29tcGF0aWJsZSB3aXRoIHRoaXMgY2hlY2sgOi0oCisJdW5sZXNzICgkZ3BnbW9kZSB8fCAkb3B0aW9uc3tpbnNlY3VyZX0gfHwKKwkJJF5PIGVxICdvczInCisJCXx8ICReTyBlcSAnTVNXaW4zMicKKwkJfHwgJF5PIGVxICdNYWNPUycKKwkJfHwgJF5PID1+IC9eY3lnd2luLykgeworCQlteSBAc3RhdCA9IHN0YXQoJGZpbGUpOworCisJCWlmIChAc3RhdCkgeworCQkJaWYgKCRzdGF0WzJdICYgMDc3KSB7CisJCQkJbG9nX3ZlcmJvc2UoIkluc2VjdXJlICRmaWxlIChtb2RlPSUwNG8pOyBza2lwcGluZyBpdCIsCisJCQkJCSAgICAkc3RhdFsyXSAmIDA3Nzc3KTsKKwkJCQluZXh0IEZJTEU7CisJCQl9CisKKwkJCWlmICgkc3RhdFs0XSAhPSAkPCkgeworCQkJCWxvZ192ZXJib3NlKCJOb3Qgb3duZXIgb2YgJGZpbGU7IHNraXBwaW5nIGl0Iik7CisJCQkJbmV4dCBGSUxFOworCQkJfQorCQl9CisJfQorCisJbXkgQGVudHJpZXMgPSBsb2FkX25ldHJjKCRmaWxlLCAkZ3BnbW9kZSk7CisKKwl1bmxlc3MgKHNjYWxhciBAZW50cmllcykgeworCQlpZiAoJCEpIHsKKwkJCWxvZ192ZXJib3NlKCJVbmFibGUgdG8gb3BlbiAkZmlsZTogJCEiKTsKKwkJfSBlbHNlIHsKKwkJCWxvZ192ZXJib3NlKCJObyBuZXRyYyBlbnRyaWVzIGZvdW5kIGluICRmaWxlIik7CisJCX0KKworCQluZXh0IEZJTEU7CisJfQorCisJbXkgJGVudHJ5ID0gZmluZF9uZXRyY19lbnRyeSgkcXVlcnksIEBlbnRyaWVzKTsKKwlpZiAoJGVudHJ5KSB7CisJCXByaW50X2NyZWRlbnRpYWxfZGF0YSgkZW50cnksICRxdWVyeSk7CisJCSMgd2UncmUgZG9uZSEKKwkJbGFzdCBGSUxFOworCX0KK30KKworZXhpdCAwOworCitzdWIgbG9hZF9uZXRyYyB7CisJbXkgJGZpbGUgPSBzaGlmdCBAXzsKKwlteSAkZ3BnbW9kZSA9IHNoaWZ0IEBfOworCisJbXkgJGlvOworCWlmICgkZ3BnbW9kZSkgeworCQlteSBAY21kID0gKHF3KGdwZyAtLWRlY3J5cHQpLCAkZmlsZSk7CisJCWxvZ192ZXJib3NlKCJVc2luZyBHUEcgdG8gb3BlbiAkZmlsZTogW0BjbWRdIik7CisJCW9wZW4gJGlvLCAiLXwiLCBAY21kOworCX0gZWxzZSB7CisJCWxvZ192ZXJib3NlKCJPcGVuaW5nICRmaWxlLi4uIik7CisJCW9wZW4gJGlvLCAnPCcsICRmaWxlOworCX0KKworCSMgbm90aGluZyB0byBkbyBpZiB0aGUgb3BlbiBmYWlsZWQgKHdlIGxvZyB0aGUgZXJyb3IgbGF0ZXIpCisJcmV0dXJuIHVubGVzcyAkaW87CisKKwkjIE5ldDo6TmV0cmMgZG9lcyB0aGlzLCBidXQgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgbWVyZ2VkIHdpdGggdGhlIGZpbGUKKwkjIGRldGVjdGlvbiBsb2dpYywgc28gd2UgaGF2ZSB0byBleHRyYWN0IGp1c3QgdGhlIHBhcnQgd2UgbmVlZAorCW15IEBuZXRyY19lbnRyaWVzID0gbmV0X25ldHJjX2xvYWRlcigkaW8pOworCisJIyB0aGVzZSBlbnRyaWVzIHdpbGwgdXNlIHRoZSBjcmVkZW50aWFsIGhlbHBlciBwcm90b2NvbCB0b2tlbiBuYW1lcworCW15IEBlbnRyaWVzOworCisJZm9yZWFjaCBteSAkbmVudHJ5IChAbmV0cmNfZW50cmllcykgeworCQlteSAlZW50cnk7CisJCW15ICRudW1fcG9ydDsKKworCQlpZiAoIWRlZmluZWQgJG5lbnRyeS0+e21hY2hpbmV9KSB7CisJCQluZXh0OworCQl9CisJCWlmIChkZWZpbmVkICRuZW50cnktPntwb3J0fSAmJiAkbmVudHJ5LT57cG9ydH0gPX4gbS9eXGQrJC8pIHsKKwkJCSRudW1fcG9ydCA9ICRuZW50cnktPntwb3J0fTsKKwkJCWRlbGV0ZSAkbmVudHJ5LT57cG9ydH07CisJCX0KKworCQkjIGNyZWF0ZSB0aGUgbmV3IGVudHJ5IGZvciB0aGUgY3JlZGVudGlhbCBoZWxwZXIgcHJvdG9jb2wKKwkJJGVudHJ5eyRvcHRpb25ze3RtYXB9LT57JF99fSA9ICRuZW50cnktPnskX30gZm9yZWFjaCBrZXlzICUkbmVudHJ5OworCisJCSMgZm9yICJob3N0IFggcG9ydCBZIiB3aGVyZSBZIGlzIGFuIGludGVnZXIgKGNhcHR1cmVkIGJ5CisJCSMgJG51bV9wb3J0IGFib3ZlKSwgc2V0IHRoZSBob3N0IHRvICJYOlkiCisJCWlmIChkZWZpbmVkICRlbnRyeXtob3N0fSAmJiBkZWZpbmVkICRudW1fcG9ydCkgeworCQkJJGVudHJ5e2hvc3R9ID0gam9pbignOicsICRlbnRyeXtob3N0fSwgJG51bV9wb3J0KTsKKwkJfQorCisJCXB1c2ggQGVudHJpZXMsIFwlZW50cnk7CisJfQorCisJcmV0dXJuIEBlbnRyaWVzOworfQorCitzdWIgbmV0X25ldHJjX2xvYWRlciB7CisJbXkgJGZoID0gc2hpZnQgQF87CisJbXkgQGVudHJpZXM7CisJbXkgKCRtYWNoLCAkbWFjZGVmLCAkdG9rLCBAdG9rKTsKKworICAgIExJTkU6CisJd2hpbGUgKDwkZmg+KSB7CisJCXVuZGVmICRtYWNkZWYgaWYgL1xBXG5cWi87CisKKwkJaWYgKCRtYWNkZWYpIHsKKwkJCW5leHQgTElORTsKKwkJfQorCisJCXMvXlxzKi8vOworCQljaG9tcDsKKworCQl3aGlsZSAobGVuZ3RoICYmIHMvXigiKCg/OlteIl0rfFxcLikqKSJ8KCg/OlteXFxcc10rfFxcLikqKSlccyovLykgeworCQkJKG15ICR0b2sgPSAkKykgPX4gcy9cXCguKS8kMS9nOworCQkJcHVzaChAdG9rLCAkdG9rKTsKKwkJfQorCisJICAgIFRPS0VOOgorCQl3aGlsZSAoQHRvaykgeworCQkJaWYgKCR0b2tbMF0gZXEgImRlZmF1bHQiKSB7CisJCQkJc2hpZnQoQHRvayk7CisJCQkJJG1hY2ggPSB7IG1hY2hpbmUgPT4gdW5kZWYgfTsKKwkJCQluZXh0IFRPS0VOOworCQkJfQorCisJCQkkdG9rID0gc2hpZnQoQHRvayk7CisKKwkJCWlmICgkdG9rIGVxICJtYWNoaW5lIikgeworCQkJCW15ICRob3N0ID0gc2hpZnQgQHRvazsKKwkJCQkkbWFjaCA9IHsgbWFjaGluZSA9PiAkaG9zdCB9OworCQkJCXB1c2ggQGVudHJpZXMsICRtYWNoOworCQkJfSBlbHNpZiAoZXhpc3RzICRvcHRpb25ze3RtYXB9LT57JHRva30pIHsKKwkJCQl1bmxlc3MgKCRtYWNoKSB7CisJCQkJCWxvZ19kZWJ1ZygiU2tpcHBpbmcgdG9rZW4gJHRvayBiZWNhdXNlIG5vIG1hY2hpbmUgd2FzIGdpdmVuIik7CisJCQkJCW5leHQgVE9LRU47CisJCQkJfQorCisJCQkJbXkgJHZhbHVlID0gc2hpZnQgQHRvazsKKwkJCQl1bmxlc3MgKGRlZmluZWQgJHZhbHVlKSB7CisJCQkJCWxvZ19kZWJ1ZygiVG9rZW4gJHRvayBoYWQgbm8gdmFsdWUsIHNraXBwaW5nIGl0LiIpOworCQkJCQluZXh0IFRPS0VOOworCQkJCX0KKworCQkJCSMgRm9sbG93aW5nIGxpbmUgYWRkZWQgYnkgcm1lcnJlbGwgdG8gcmVtb3ZlICcvJyBlc2NhcGUgY2hhciBpbiAubmV0cmMKKwkJCQkkdmFsdWUgPX4gcy9cL1xcL1xcL2c7CisJCQkJJG1hY2gtPnskdG9rfSA9ICR2YWx1ZTsKKwkJCX0gZWxzaWYgKCR0b2sgZXEgIm1hY2RlZiIpIHsgIyB3ZSBpZ25vcmUgbWFjcm9zCisJCQkJbmV4dCBUT0tFTiB1bmxlc3MgJG1hY2g7CisJCQkJbXkgJHZhbHVlID0gc2hpZnQgQHRvazsKKwkJCQkkbWFjZGVmID0gMTsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiBAZW50cmllczsKK30KKworc3ViIHJlYWRfY3JlZGVudGlhbF9kYXRhX2Zyb21fc3RkaW4geworCSMgdGhlIHF1ZXJ5OiBzdGFydCB3aXRoIGV2ZXJ5IHRva2VuIHdpdGggbm8gdmFsdWUKKwlteSAlcSA9IG1hcCB7ICRfID0+IHVuZGVmIH0gdmFsdWVzKCV7JG9wdGlvbnN7dG1hcH19KTsKKworCXdoaWxlICg8U1RESU4+KSB7CisJCW5leHQgdW5sZXNzIG0vXihbXj1dKyk9KC4rKS87CisKKwkJbXkgKCR0b2tlbiwgJHZhbHVlKSA9ICgkMSwgJDIpOworCQlkaWUgIlVua25vd24gc2VhcmNoIHRva2VuICR0b2tlbiIgdW5sZXNzIGV4aXN0cyAkcXskdG9rZW59OworCQkkcXskdG9rZW59ID0gJHZhbHVlOworCQlsb2dfZGVidWcoIldlIHdlcmUgZ2l2ZW4gc2VhcmNoIHRva2VuICR0b2tlbiBhbmQgdmFsdWUgJHZhbHVlIik7CisJfQorCisJZm9yZWFjaCAoc29ydCBrZXlzICVxKSB7CisJCWxvZ19kZWJ1ZygiU2VhcmNoaW5nIGZvciAlcyA9ICVzIiwgJF8sICRxeyRffSB8fCAnKGFueSB2YWx1ZSknKTsKKwl9CisKKwlyZXR1cm4gXCVxOworfQorCisjIHRha2VzIHRoZSBzZWFyY2ggdG9rZW5zIGFuZCB0aGVuIGEgbGlzdCBvZiBlbnRyaWVzCisjIGVhY2ggZW50cnkgaXMgYSBoYXNoIHJlZmVyZW5jZQorc3ViIGZpbmRfbmV0cmNfZW50cnkgeworCW15ICRxdWVyeSA9IHNoaWZ0IEBfOworCisgICAgRU5UUlk6CisJZm9yZWFjaCBteSAkZW50cnkgKEBfKQorCXsKKwkJbXkgJGVudHJ5X3RleHQgPSBqb2luICcsICcsIG1hcCB7ICIkXz0kZW50cnktPnskX30iIH0ga2V5cyAlJGVudHJ5OworCQlmb3JlYWNoIG15ICRjaGVjayAoc29ydCBrZXlzICUkcXVlcnkpIHsKKwkJCWlmIChkZWZpbmVkICRxdWVyeS0+eyRjaGVja30pIHsKKwkJCQlsb2dfZGVidWcoImNvbXBhcmUgJXMgWyVzXSB0byBbJXNdIChlbnRyeTogJXMpIiwKKwkJCQkJICAkY2hlY2ssCisJCQkJCSAgJGVudHJ5LT57JGNoZWNrfSwKKwkJCQkJICAkcXVlcnktPnskY2hlY2t9LAorCQkJCQkgICRlbnRyeV90ZXh0KTsKKwkJCQl1bmxlc3MgKCRxdWVyeS0+eyRjaGVja30gZXEgJGVudHJ5LT57JGNoZWNrfSkgeworCQkJCQluZXh0IEVOVFJZOworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJbG9nX2RlYnVnKCJPSzogYW55IHZhbHVlIHNhdGlzZmllcyBjaGVjayAkY2hlY2siKTsKKwkJCX0KKwkJfQorCisJCXJldHVybiAkZW50cnk7CisJfQorCisJIyBub3RoaW5nIHdhcyBmb3VuZAorCXJldHVybjsKK30KKworc3ViIHByaW50X2NyZWRlbnRpYWxfZGF0YSB7CisJbXkgJGVudHJ5ID0gc2hpZnQgQF87CisJbXkgJHF1ZXJ5ID0gc2hpZnQgQF87CisKKwlsb2dfZGVidWcoImVudHJ5IGhhcyBwYXNzZWQgYWxsIHRoZSBzZWFyY2ggY2hlY2tzIik7CisgVE9LRU46CisJZm9yZWFjaCBteSAkZ2l0X3Rva2VuIChzb3J0IGtleXMgJSRlbnRyeSkgeworCQlsb2dfZGVidWcoImxvb2tpbmcgZm9yIHVzZWZ1bCB0b2tlbiAkZ2l0X3Rva2VuIik7CisJCSMgZG9uJ3QgcHJpbnQgdW5rbm93biAodG8gdGhlIGNyZWRlbnRpYWwgaGVscGVyIHByb3RvY29sKSB0b2tlbnMKKwkJbmV4dCBUT0tFTiB1bmxlc3MgZXhpc3RzICRxdWVyeS0+eyRnaXRfdG9rZW59OworCisJCSMgZG9uJ3QgcHJpbnQgdGhpbmdzIGFza2VkIGluIHRoZSBxdWVyeSAodGhlIGVudHJ5IG1hdGNoZXMgdGhlbSkKKwkJbmV4dCBUT0tFTiBpZiBkZWZpbmVkICRxdWVyeS0+eyRnaXRfdG9rZW59OworCisJCWxvZ19kZWJ1ZygiRk9VTkQ6ICRnaXRfdG9rZW49JGVudHJ5LT57JGdpdF90b2tlbn0iKTsKKwkJcHJpbnRmICIlcz0lc1xuIiwgJGdpdF90b2tlbiwgJGVudHJ5LT57JGdpdF90b2tlbn07CisJfQorfQorc3ViIGxvZ192ZXJib3NlIHsKKwlyZXR1cm4gdW5sZXNzICRvcHRpb25ze3ZlcmJvc2V9OworCXByaW50ZiBTVERFUlIgQF87CisJcHJpbnRmIFNUREVSUiAiXG4iOworfQorCitzdWIgbG9nX2RlYnVnIHsKKwlyZXR1cm4gdW5sZXNzICRvcHRpb25ze2RlYnVnfTsKKwlwcmludGYgU1RERVJSIEBfOworCXByaW50ZiBTVERFUlIgIlxuIjsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvY3JlZGVudGlhbC9uZXRyYy90ZXN0Lm5ldHJjIGIvY29udHJpYi9jcmVkZW50aWFsL25ldHJjL3Rlc3QubmV0cmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExMTlhOQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvY3JlZGVudGlhbC9uZXRyYy90ZXN0Lm5ldHJjCkBAIC0wLDAgKzEsMTMgQEAKK21hY2hpbmUgaW1hcCBsb2dpbiB0enpAbGlmZWxvZ3MuY29tIHBvcnQgaW1hcHMgcGFzc3dvcmQgbGV0bWVrbm93CittYWNoaW5lIGltYXAgbG9naW4gYm9iIHBvcnQgaW1hcHMgcGFzc3dvcmQgYm9id2lsbGtub3cKKworIyBjb21tZW50IHRlc3QKKworbWFjaGluZSBpbWFwMiBsb2dpbiB0enogcG9ydCAxMDk5IHBhc3N3b3JkIHR6emtub3cKK21hY2hpbmUgaW1hcDIgbG9naW4gYm9iIHBhc3N3b3JkIGJvYndpbGxrbm93CisKKyMgYW5vdGhlciBjb21tYW5kCisKK21hY2hpbmUgZ2l0aHViLmNvbQorICBtdWx0aWxpbmV0b2tlbiBhbm90aGVydmFsdWUKKyAgbG9naW4gY2Fyb2wgcGFzc3dvcmQgY2Fyb2xrbm93cwpkaWZmIC0tZ2l0IGEvY29udHJpYi9jcmVkZW50aWFsL25ldHJjL3Rlc3QucGwgYi9jb250cmliL2NyZWRlbnRpYWwvbmV0cmMvdGVzdC5wbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xNjliNjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9jcmVkZW50aWFsL25ldHJjL3Rlc3QucGwKQEAgLTAsMCArMSwxMDYgQEAKKyMhL3Vzci9iaW4vcGVybAorCit1c2Ugd2FybmluZ3M7Cit1c2Ugc3RyaWN0OwordXNlIFRlc3Q7Cit1c2UgSVBDOjpPcGVuMjsKKworQkVHSU4geyBwbGFuIHRlc3RzID0+IDE1IH0KKworbXkgQGdsb2JhbF9jcmVkZW50aWFsX2FyZ3MgPSBAQVJHVjsKK215ICRuZXRyYyA9ICcuL3Rlc3QubmV0cmMnOworcHJpbnQgIiMgVGVzdGluZyBpbnNlY3VyZSBmaWxlLCBub3RoaW5nIHNob3VsZCBiZSBmb3VuZFxuIjsKK2NobW9kIDA2NDQsICRuZXRyYzsKK215ICRjcmVkID0gcnVuX2NyZWRlbnRpYWwoWyctZicsICRuZXRyYywgJ2dldCddLAorCQkJICB7IGhvc3QgPT4gJ2dpdGh1Yi5jb20nIH0pOworCitvayhzY2FsYXIga2V5cyAlJGNyZWQsIDAsICJHb3QgMCBrZXlzIGZyb20gaW5zZWN1cmUgZmlsZSIpOworCitwcmludCAiIyBUZXN0aW5nIG1pc3NpbmcgZmlsZSwgbm90aGluZyBzaG91bGQgYmUgZm91bmRcbiI7CitjaG1vZCAwNjQ0LCAkbmV0cmM7CiskY3JlZCA9IHJ1bl9jcmVkZW50aWFsKFsnLWYnLCAnLy8vbm9zdWNoZmlsZS8vLycsICdnZXQnXSwKKwkJICAgICAgIHsgaG9zdCA9PiAnZ2l0aHViLmNvbScgfSk7CisKK29rKHNjYWxhciBrZXlzICUkY3JlZCwgMCwgIkdvdCAwIGtleXMgZnJvbSBtaXNzaW5nIGZpbGUiKTsKKworY2htb2QgMDYwMCwgJG5ldHJjOworCitwcmludCAiIyBUZXN0aW5nIHdpdGggaW52YWxpZCBkYXRhXG4iOworJGNyZWQgPSBydW5fY3JlZGVudGlhbChbJy1mJywgJG5ldHJjLCAnZ2V0J10sCisJCSAgICAgICAiYmFkIGRhdGEiKTsKK29rKHNjYWxhciBrZXlzICUkY3JlZCwgNCwgIkdvdCBmaXJzdCBmb3VuZCBrZXlzIHdpdGggYmFkIGRhdGEiKTsKKworcHJpbnQgIiMgVGVzdGluZyBuZXRyYyBmaWxlIGZvciBhIG1pc3NpbmcgY29yb3ZhbWlsa2JhciBlbnRyeVxuIjsKKyRjcmVkID0gcnVuX2NyZWRlbnRpYWwoWyctZicsICRuZXRyYywgJ2dldCddLAorCQkgICAgICAgeyBob3N0ID0+ICdjb3JvdmFtaWxrYmFyJyB9KTsKKworb2soc2NhbGFyIGtleXMgJSRjcmVkLCAwLCAiR290IG5vIGNvcm92YW1pbGtiYXIga2V5cyIpOworCitwcmludCAiIyBUZXN0aW5nIG5ldHJjIGZpbGUgZm9yIGEgZ2l0aHViLmNvbSBlbnRyeVxuIjsKKyRjcmVkID0gcnVuX2NyZWRlbnRpYWwoWyctZicsICRuZXRyYywgJ2dldCddLAorCQkgICAgICAgeyBob3N0ID0+ICdnaXRodWIuY29tJyB9KTsKKworb2soc2NhbGFyIGtleXMgJSRjcmVkLCAyLCAiR290IDIgR2l0aHViIGtleXMiKTsKKworb2soJGNyZWQtPntwYXNzd29yZH0sICdjYXJvbGtub3dzJywgIkdvdCBjb3JyZWN0IEdpdGh1YiBwYXNzd29yZCIpOworb2soJGNyZWQtPnt1c2VybmFtZX0sICdjYXJvbCcsICJHb3QgY29ycmVjdCBHaXRodWIgdXNlcm5hbWUiKTsKKworcHJpbnQgIiMgVGVzdGluZyBuZXRyYyBmaWxlIGZvciBhIHVzZXJuYW1lLXNwZWNpZmljIGVudHJ5XG4iOworJGNyZWQgPSBydW5fY3JlZGVudGlhbChbJy1mJywgJG5ldHJjLCAnZ2V0J10sCisJCSAgICAgICB7IGhvc3QgPT4gJ2ltYXAnLCB1c2VybmFtZSA9PiAnYm9iJyB9KTsKKworb2soc2NhbGFyIGtleXMgJSRjcmVkLCAyLCAiR290IDIgdXNlcm5hbWUtc3BlY2lmaWMga2V5cyIpOworCitvaygkY3JlZC0+e3Bhc3N3b3JkfSwgJ2JvYndpbGxrbm93JywgIkdvdCBjb3JyZWN0IHVzZXItc3BlY2lmaWMgcGFzc3dvcmQiKTsKK29rKCRjcmVkLT57cHJvdG9jb2x9LCAnaW1hcHMnLCAiR290IGNvcnJlY3QgdXNlci1zcGVjaWZpYyBwcm90b2NvbCIpOworCitwcmludCAiIyBUZXN0aW5nIG5ldHJjIGZpbGUgZm9yIGEgaG9zdDpwb3J0LXNwZWNpZmljIGVudHJ5XG4iOworJGNyZWQgPSBydW5fY3JlZGVudGlhbChbJy1mJywgJG5ldHJjLCAnZ2V0J10sCisJCSAgICAgICB7IGhvc3QgPT4gJ2ltYXAyOjEwOTknIH0pOworCitvayhzY2FsYXIga2V5cyAlJGNyZWQsIDIsICJHb3QgMiBob3N0OnBvcnQtc3BlY2lmaWMga2V5cyIpOworCitvaygkY3JlZC0+e3Bhc3N3b3JkfSwgJ3R6emtub3cnLCAiR290IGNvcnJlY3QgaG9zdDpwb3J0LXNwZWNpZmljIHBhc3N3b3JkIik7CitvaygkY3JlZC0+e3VzZXJuYW1lfSwgJ3R6eicsICJHb3QgY29ycmVjdCBob3N0OnBvcnQtc3BlY2lmaWMgdXNlcm5hbWUiKTsKKworcHJpbnQgIiMgVGVzdGluZyBuZXRyYyBmaWxlIHRoYXQgJ2hvc3Q6cG9ydCBraWxscyBob3N0JyBlbnRyeVxuIjsKKyRjcmVkID0gcnVuX2NyZWRlbnRpYWwoWyctZicsICRuZXRyYywgJ2dldCddLAorCQkgICAgICAgeyBob3N0ID0+ICdpbWFwMicgfSk7CisKK29rKHNjYWxhciBrZXlzICUkY3JlZCwgMiwgIkdvdCAyICdob3N0OnBvcnQga2lsbHMgaG9zdCcga2V5cyIpOworCitvaygkY3JlZC0+e3Bhc3N3b3JkfSwgJ2JvYndpbGxrbm93JywgIkdvdCBjb3JyZWN0ICdob3N0OnBvcnQga2lsbHMgaG9zdCcgcGFzc3dvcmQiKTsKK29rKCRjcmVkLT57dXNlcm5hbWV9LCAnYm9iJywgIkdvdCBjb3JyZWN0ICdob3N0OnBvcnQga2lsbHMgaG9zdCcgdXNlcm5hbWUiKTsKKworc3ViIHJ1bl9jcmVkZW50aWFsCit7CisJbXkgJGFyZ3MgPSBzaGlmdCBAXzsKKwlteSAkZGF0YSA9IHNoaWZ0IEBfOworCW15ICRwaWQgPSBvcGVuMihteSAkY2hsZF9vdXQsIG15ICRjaGxkX2luLAorCQkJJy4vZ2l0LWNyZWRlbnRpYWwtbmV0cmMnLCBAZ2xvYmFsX2NyZWRlbnRpYWxfYXJncywKKwkJCUAkYXJncyk7CisKKwlkaWUgIkNvdWxkbid0IG9wZW4gcGlwZSB0byBuZXRyYyBjcmVkZW50aWFsIGhlbHBlcjogJCEiIHVubGVzcyAkcGlkOworCisJaWYgKHJlZiAkZGF0YSBlcSAnSEFTSCcpCisJeworCQlwcmludCAkY2hsZF9pbiAiJF89JGRhdGEtPnskX31cbiIgZm9yZWFjaCBzb3J0IGtleXMgJSRkYXRhOworCX0KKwllbHNlCisJeworCQlwcmludCAkY2hsZF9pbiAiJGRhdGFcbiI7CisJfQorCisJY2xvc2UgJGNobGRfaW47CisJbXkgJXJldDsKKworCXdoaWxlICg8JGNobGRfb3V0PikKKwl7CisJCWNob21wOworCQluZXh0IHVubGVzcyBtL14oW149XSspPSguKykvOworCisJCSRyZXR7JDF9ID0gJDI7CisJfQorCisJcmV0dXJuIFwlcmV0OworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9jcmVkZW50aWFsL29zeGtleWNoYWluL2dpdC1jcmVkZW50aWFsLW9zeGtleWNoYWluLmMgYi9jb250cmliL2NyZWRlbnRpYWwvb3N4a2V5Y2hhaW4vZ2l0LWNyZWRlbnRpYWwtb3N4a2V5Y2hhaW4uYwppbmRleCA2YmVlZDEyLi4zOTQwMjAyIDEwMDY0NAotLS0gYS9jb250cmliL2NyZWRlbnRpYWwvb3N4a2V5Y2hhaW4vZ2l0LWNyZWRlbnRpYWwtb3N4a2V5Y2hhaW4uYworKysgYi9jb250cmliL2NyZWRlbnRpYWwvb3N4a2V5Y2hhaW4vZ2l0LWNyZWRlbnRpYWwtb3N4a2V5Y2hhaW4uYwpAQCAtMTU0LDcgKzE1NCw3IEBACiBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCiB7CiAJY29uc3QgY2hhciAqdXNhZ2UgPQotCQkiVXNhZ2U6IGdpdCBjcmVkZW50aWFsLW9zeGtleWNoYWluIDxnZXR8c3RvcmV8ZXJhc2U+IjsKKwkJInVzYWdlOiBnaXQgY3JlZGVudGlhbC1vc3hrZXljaGFpbiA8Z2V0fHN0b3JlfGVyYXNlPiI7CiAKIAlpZiAoIWFyZ3ZbMV0pCiAJCWRpZSh1c2FnZSk7CmRpZmYgLS1naXQgYS9jb250cmliL2NyZWRlbnRpYWwvd2luY3JlZC9NYWtlZmlsZSBiL2NvbnRyaWIvY3JlZGVudGlhbC93aW5jcmVkL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZDQ1Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2NyZWRlbnRpYWwvd2luY3JlZC9NYWtlZmlsZQpAQCAtMCwwICsxLDE0IEBACithbGw6IGdpdC1jcmVkZW50aWFsLXdpbmNyZWQuZXhlCisKK0NDID0gZ2NjCitSTSA9IHJtIC1mCitDRkxBR1MgPSAtTzIgLVdhbGwKKworLWluY2x1ZGUgLi4vLi4vLi4vY29uZmlnLm1hay5hdXRvZ2VuCistaW5jbHVkZSAuLi8uLi8uLi9jb25maWcubWFrCisKK2dpdC1jcmVkZW50aWFsLXdpbmNyZWQuZXhlIDogZ2l0LWNyZWRlbnRpYWwtd2luY3JlZC5jCisJJChMSU5LLmMpICReICQoTE9BRExJQkVTKSAkKExETElCUykgLW8gJEAKKworY2xlYW46CisJJChSTSkgZ2l0LWNyZWRlbnRpYWwtd2luY3JlZC5leGUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvY3JlZGVudGlhbC93aW5jcmVkL2dpdC1jcmVkZW50aWFsLXdpbmNyZWQuYyBiL2NvbnRyaWIvY3JlZGVudGlhbC93aW5jcmVkL2dpdC1jcmVkZW50aWFsLXdpbmNyZWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWQzOGYwCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9jcmVkZW50aWFsL3dpbmNyZWQvZ2l0LWNyZWRlbnRpYWwtd2luY3JlZC5jCkBAIC0wLDAgKzEsMzAxIEBACisvKgorICogQSBnaXQgY3JlZGVudGlhbCBoZWxwZXIgdGhhdCBpbnRlcmZhY2Ugd2l0aCBXaW5kb3dzJyBDcmVkZW50aWFsIE1hbmFnZXIKKyAqCisgKi8KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxpby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisKKy8qIGNvbW1vbiBoZWxwZXJzICovCisKKyNkZWZpbmUgQVJSQVlfU0laRSh4KSAoc2l6ZW9mKHgpL3NpemVvZih4WzBdKSkKKworc3RhdGljIHZvaWQgZGllKGNvbnN0IGNoYXIgKmVyciwgLi4uKQoreworCWNoYXIgbXNnWzQwOTZdOworCXZhX2xpc3QgcGFyYW1zOworCXZhX3N0YXJ0KHBhcmFtcywgZXJyKTsKKwl2c25wcmludGYobXNnLCBzaXplb2YobXNnKSwgZXJyLCBwYXJhbXMpOworCWZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZyk7CisJdmFfZW5kKHBhcmFtcyk7CisJZXhpdCgxKTsKK30KKworc3RhdGljIHZvaWQgKnhtYWxsb2Moc2l6ZV90IHNpemUpCit7CisJdm9pZCAqcmV0ID0gbWFsbG9jKHNpemUpOworCWlmICghcmV0ICYmICFzaXplKQorCQlyZXQgPSBtYWxsb2MoMSk7CisJaWYgKCFyZXQpCisJCSBkaWUoIk91dCBvZiBtZW1vcnkiKTsKKwlyZXR1cm4gcmV0OworfQorCisvKiBNaW5HVyBkb2Vzbid0IGhhdmUgd2luY3JlZC5oLCBzbyB3ZSBuZWVkIHRvIGRlZmluZSBzdHVmZiAqLworCit0eXBlZGVmIHN0cnVjdCBfQ1JFREVOVElBTF9BVFRSSUJVVEVXIHsKKwlMUFdTVFIgS2V5d29yZDsKKwlEV09SRCAgRmxhZ3M7CisJRFdPUkQgIFZhbHVlU2l6ZTsKKwlMUEJZVEUgVmFsdWU7Cit9IENSRURFTlRJQUxfQVRUUklCVVRFVywgKlBDUkVERU5USUFMX0FUVFJJQlVURVc7CisKK3R5cGVkZWYgc3RydWN0IF9DUkVERU5USUFMVyB7CisJRFdPUkQgICAgICAgICAgICAgICAgICBGbGFnczsKKwlEV09SRCAgICAgICAgICAgICAgICAgIFR5cGU7CisJTFBXU1RSICAgICAgICAgICAgICAgICBUYXJnZXROYW1lOworCUxQV1NUUiAgICAgICAgICAgICAgICAgQ29tbWVudDsKKwlGSUxFVElNRSAgICAgICAgICAgICAgIExhc3RXcml0dGVuOworCURXT1JEICAgICAgICAgICAgICAgICAgQ3JlZGVudGlhbEJsb2JTaXplOworCUxQQllURSAgICAgICAgICAgICAgICAgQ3JlZGVudGlhbEJsb2I7CisJRFdPUkQgICAgICAgICAgICAgICAgICBQZXJzaXN0OworCURXT1JEICAgICAgICAgICAgICAgICAgQXR0cmlidXRlQ291bnQ7CisJUENSRURFTlRJQUxfQVRUUklCVVRFVyBBdHRyaWJ1dGVzOworCUxQV1NUUiAgICAgICAgICAgICAgICAgVGFyZ2V0QWxpYXM7CisJTFBXU1RSICAgICAgICAgICAgICAgICBVc2VyTmFtZTsKK30gQ1JFREVOVElBTFcsICpQQ1JFREVOVElBTFc7CisKKyNkZWZpbmUgQ1JFRF9UWVBFX0dFTkVSSUMgMQorI2RlZmluZSBDUkVEX1BFUlNJU1RfTE9DQUxfTUFDSElORSAyCisjZGVmaW5lIENSRURfTUFYX0FUVFJJQlVURVMgNjQKKwordHlwZWRlZiBCT09MIChXSU5BUEkgKkNyZWRXcml0ZVdUKShQQ1JFREVOVElBTFcsIERXT1JEKTsKK3R5cGVkZWYgQk9PTCAoV0lOQVBJICpDcmVkRW51bWVyYXRlV1QpKExQQ1dTVFIsIERXT1JELCBEV09SRCAqLAorICAgIFBDUkVERU5USUFMVyAqKik7Cit0eXBlZGVmIFZPSUQgKFdJTkFQSSAqQ3JlZEZyZWVUKShQVk9JRCk7Cit0eXBlZGVmIEJPT0wgKFdJTkFQSSAqQ3JlZERlbGV0ZVdUKShMUENXU1RSLCBEV09SRCwgRFdPUkQpOworCitzdGF0aWMgSE1PRFVMRSBhZHZhcGk7CitzdGF0aWMgQ3JlZFdyaXRlV1QgQ3JlZFdyaXRlVzsKK3N0YXRpYyBDcmVkRW51bWVyYXRlV1QgQ3JlZEVudW1lcmF0ZVc7CitzdGF0aWMgQ3JlZEZyZWVUIENyZWRGcmVlOworc3RhdGljIENyZWREZWxldGVXVCBDcmVkRGVsZXRlVzsKKworc3RhdGljIHZvaWQgbG9hZF9jcmVkX2Z1bmNzKHZvaWQpCit7CisJLyogbG9hZCBETExzICovCisJYWR2YXBpID0gTG9hZExpYnJhcnkoImFkdmFwaTMyLmRsbCIpOworCWlmICghYWR2YXBpKQorCQlkaWUoImZhaWxlZCB0byBsb2FkIGFkdmFwaTMyLmRsbCIpOworCisJLyogZ2V0IGZ1bmN0aW9uIHBvaW50ZXJzICovCisJQ3JlZFdyaXRlVyA9IChDcmVkV3JpdGVXVClHZXRQcm9jQWRkcmVzcyhhZHZhcGksICJDcmVkV3JpdGVXIik7CisJQ3JlZEVudW1lcmF0ZVcgPSAoQ3JlZEVudW1lcmF0ZVdUKUdldFByb2NBZGRyZXNzKGFkdmFwaSwKKwkgICAgIkNyZWRFbnVtZXJhdGVXIik7CisJQ3JlZEZyZWUgPSAoQ3JlZEZyZWVUKUdldFByb2NBZGRyZXNzKGFkdmFwaSwgIkNyZWRGcmVlIik7CisJQ3JlZERlbGV0ZVcgPSAoQ3JlZERlbGV0ZVdUKUdldFByb2NBZGRyZXNzKGFkdmFwaSwgIkNyZWREZWxldGVXIik7CisJaWYgKCFDcmVkV3JpdGVXIHx8ICFDcmVkRW51bWVyYXRlVyB8fCAhQ3JlZEZyZWUgfHwgIUNyZWREZWxldGVXKQorCQlkaWUoImZhaWxlZCB0byBsb2FkIGZ1bmN0aW9ucyIpOworfQorCitzdGF0aWMgV0NIQVIgKnd1c2VybmFtZSwgKnBhc3N3b3JkLCAqcHJvdG9jb2wsICpob3N0LCAqcGF0aCwgdGFyZ2V0WzEwMjRdOworCitzdGF0aWMgdm9pZCB3cml0ZV9pdGVtKGNvbnN0IGNoYXIgKndoYXQsIExQQ1dTVFIgd2J1ZiwgaW50IHdsZW4pCit7CisJY2hhciAqYnVmOworCWludCBsZW4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIHdsZW4sIE5VTEwsIDAsIE5VTEwsCisJICAgIEZBTFNFKTsKKwlidWYgPSB4bWFsbG9jKGxlbik7CisKKwlpZiAoIVdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgd2J1Ziwgd2xlbiwgYnVmLCBsZW4sIE5VTEwsIEZBTFNFKSkKKwkJZGllKCJXaWRlQ2hhclRvTXVsdGlCeXRlIGZhaWxlZCEiKTsKKworCXByaW50ZigiJXM9Iiwgd2hhdCk7CisJZndyaXRlKGJ1ZiwgMSwgbGVuLCBzdGRvdXQpOworCXB1dGNoYXIoJ1xuJyk7CisJZnJlZShidWYpOworfQorCisvKgorICogTWF0Y2ggYW4gKG9wdGlvbmFsKSBleHBlY3RlZCBzdHJpbmcgYW5kIGEgZGVsaW1pdGVyIGluIHRoZSB0YXJnZXQgc3RyaW5nLAorICogY29uc3VtaW5nIHRoZSBtYXRjaGVkIHRleHQgYnkgdXBkYXRpbmcgdGhlIHRhcmdldCBwb2ludGVyLgorICovCitzdGF0aWMgaW50IG1hdGNoX3BhcnQoTFBDV1NUUiAqcHRhcmdldCwgTFBDV1NUUiB3YW50LCBMUENXU1RSIGRlbGltKQoreworCUxQQ1dTVFIgZGVsaW1fcG9zLCBzdGFydCA9ICpwdGFyZ2V0OworCWludCBsZW47CisKKwkvKiBmaW5kIHN0YXJ0IG9mIGRlbGltaXRlciAob3IgZW5kLW9mLXN0cmluZyBpZiBkZWxpbSBpcyBlbXB0eSkgKi8KKwlpZiAoKmRlbGltKQorCQlkZWxpbV9wb3MgPSB3Y3NzdHIoc3RhcnQsIGRlbGltKTsKKwllbHNlCisJCWRlbGltX3BvcyA9IHN0YXJ0ICsgd2NzbGVuKHN0YXJ0KTsKKworCS8qCisJICogbWF0Y2ggdGV4dCB1cCB0byBkZWxpbWl0ZXIsIG9yIGVuZCBvZiBzdHJpbmcgKGUuZy4gdGhlICcvJyBhZnRlcgorCSAqIGhvc3QgaXMgb3B0aW9uYWwgaWYgbm90IGZvbGxvd2VkIGJ5IGEgcGF0aCkKKwkgKi8KKwlpZiAoZGVsaW1fcG9zKQorCQlsZW4gPSBkZWxpbV9wb3MgLSBzdGFydDsKKwllbHNlCisJCWxlbiA9IHdjc2xlbihzdGFydCk7CisKKwkvKiB1cGRhdGUgcHRhcmdldCBpZiB3ZSBlaXRoZXIgZm91bmQgYSBkZWxpbWl0ZXIgb3IgbmVlZCBhIG1hdGNoICovCisJaWYgKGRlbGltX3BvcyB8fCB3YW50KQorCQkqcHRhcmdldCA9IGRlbGltX3BvcyA/IGRlbGltX3BvcyArIHdjc2xlbihkZWxpbSkgOiBzdGFydCArIGxlbjsKKworCXJldHVybiAhd2FudCB8fCAoIXdjc25jbXAod2FudCwgc3RhcnQsIGxlbikgJiYgIXdhbnRbbGVuXSk7Cit9CisKK3N0YXRpYyBpbnQgbWF0Y2hfY3JlZChjb25zdCBDUkVERU5USUFMVyAqY3JlZCkKK3sKKwlMUENXU1RSIHRhcmdldCA9IGNyZWQtPlRhcmdldE5hbWU7CisJaWYgKHd1c2VybmFtZSAmJiB3Y3NjbXAod3VzZXJuYW1lLCBjcmVkLT5Vc2VyTmFtZSkpCisJCXJldHVybiAwOworCisJcmV0dXJuIG1hdGNoX3BhcnQoJnRhcmdldCwgTCJnaXQiLCBMIjoiKSAmJgorCQltYXRjaF9wYXJ0KCZ0YXJnZXQsIHByb3RvY29sLCBMIjovLyIpICYmCisJCW1hdGNoX3BhcnQoJnRhcmdldCwgd3VzZXJuYW1lLCBMIkAiKSAmJgorCQltYXRjaF9wYXJ0KCZ0YXJnZXQsIGhvc3QsIEwiLyIpICYmCisJCW1hdGNoX3BhcnQoJnRhcmdldCwgcGF0aCwgTCIiKTsKK30KKworc3RhdGljIHZvaWQgZ2V0X2NyZWRlbnRpYWwodm9pZCkKK3sKKwlDUkVERU5USUFMVyAqKmNyZWRzOworCURXT1JEIG51bV9jcmVkczsKKwlpbnQgaTsKKworCWlmICghQ3JlZEVudW1lcmF0ZVcoTCJnaXQ6KiIsIDAsICZudW1fY3JlZHMsICZjcmVkcykpCisJCXJldHVybjsKKworCS8qIHNlYXJjaCBmb3IgdGhlIGZpcnN0IGNyZWRlbnRpYWwgdGhhdCBtYXRjaGVzIHVzZXJuYW1lICovCisJZm9yIChpID0gMDsgaSA8IG51bV9jcmVkczsgKytpKQorCQlpZiAobWF0Y2hfY3JlZChjcmVkc1tpXSkpIHsKKwkJCXdyaXRlX2l0ZW0oInVzZXJuYW1lIiwgY3JlZHNbaV0tPlVzZXJOYW1lLAorCQkJCXdjc2xlbihjcmVkc1tpXS0+VXNlck5hbWUpKTsKKwkJCXdyaXRlX2l0ZW0oInBhc3N3b3JkIiwKKwkJCQkoTFBDV1NUUiljcmVkc1tpXS0+Q3JlZGVudGlhbEJsb2IsCisJCQkJY3JlZHNbaV0tPkNyZWRlbnRpYWxCbG9iU2l6ZSAvIHNpemVvZihXQ0hBUikpOworCQkJYnJlYWs7CisJCX0KKworCUNyZWRGcmVlKGNyZWRzKTsKK30KKworc3RhdGljIHZvaWQgc3RvcmVfY3JlZGVudGlhbCh2b2lkKQoreworCUNSRURFTlRJQUxXIGNyZWQ7CisKKwlpZiAoIXd1c2VybmFtZSB8fCAhcGFzc3dvcmQpCisJCXJldHVybjsKKworCWNyZWQuRmxhZ3MgPSAwOworCWNyZWQuVHlwZSA9IENSRURfVFlQRV9HRU5FUklDOworCWNyZWQuVGFyZ2V0TmFtZSA9IHRhcmdldDsKKwljcmVkLkNvbW1lbnQgPSBMInNhdmVkIGJ5IGdpdC1jcmVkZW50aWFsLXdpbmNyZWQiOworCWNyZWQuQ3JlZGVudGlhbEJsb2JTaXplID0gKHdjc2xlbihwYXNzd29yZCkpICogc2l6ZW9mKFdDSEFSKTsKKwljcmVkLkNyZWRlbnRpYWxCbG9iID0gKExQVk9JRClwYXNzd29yZDsKKwljcmVkLlBlcnNpc3QgPSBDUkVEX1BFUlNJU1RfTE9DQUxfTUFDSElORTsKKwljcmVkLkF0dHJpYnV0ZUNvdW50ID0gMDsKKwljcmVkLkF0dHJpYnV0ZXMgPSBOVUxMOworCWNyZWQuVGFyZ2V0QWxpYXMgPSBOVUxMOworCWNyZWQuVXNlck5hbWUgPSB3dXNlcm5hbWU7CisKKwlpZiAoIUNyZWRXcml0ZVcoJmNyZWQsIDApKQorCQlkaWUoIkNyZWRXcml0ZSBmYWlsZWQiKTsKK30KKworc3RhdGljIHZvaWQgZXJhc2VfY3JlZGVudGlhbCh2b2lkKQoreworCUNSRURFTlRJQUxXICoqY3JlZHM7CisJRFdPUkQgbnVtX2NyZWRzOworCWludCBpOworCisJaWYgKCFDcmVkRW51bWVyYXRlVyhMImdpdDoqIiwgMCwgJm51bV9jcmVkcywgJmNyZWRzKSkKKwkJcmV0dXJuOworCisJZm9yIChpID0gMDsgaSA8IG51bV9jcmVkczsgKytpKSB7CisJCWlmIChtYXRjaF9jcmVkKGNyZWRzW2ldKSkKKwkJCUNyZWREZWxldGVXKGNyZWRzW2ldLT5UYXJnZXROYW1lLCBjcmVkc1tpXS0+VHlwZSwgMCk7CisJfQorCisJQ3JlZEZyZWUoY3JlZHMpOworfQorCitzdGF0aWMgV0NIQVIgKnV0ZjhfdG9fdXRmMTZfZHVwKGNvbnN0IGNoYXIgKnN0cikKK3sKKwlpbnQgd2xlbiA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgc3RyLCAtMSwgTlVMTCwgMCk7CisJV0NIQVIgKndzdHIgPSB4bWFsbG9jKHNpemVvZihXQ0hBUikgKiB3bGVuKTsKKwlNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIHN0ciwgLTEsIHdzdHIsIHdsZW4pOworCXJldHVybiB3c3RyOworfQorCitzdGF0aWMgdm9pZCByZWFkX2NyZWRlbnRpYWwodm9pZCkKK3sKKwljaGFyIGJ1ZlsxMDI0XTsKKworCXdoaWxlIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBzdGRpbikpIHsKKwkJY2hhciAqdjsKKwkJaW50IGxlbiA9IHN0cmxlbihidWYpOworCQkvKiBzdHJpcCB0cmFpbGluZyBDUiAvIExGICovCisJCXdoaWxlIChsZW4gJiYgc3RyY2hyKCJcclxuIiwgYnVmW2xlbiAtIDFdKSkKKwkJCWJ1ZlstLWxlbl0gPSAwOworCisJCWlmICghKmJ1ZikKKwkJCWJyZWFrOworCisJCXYgPSBzdHJjaHIoYnVmLCAnPScpOworCQlpZiAoIXYpCisJCQlkaWUoImJhZCBpbnB1dDogJXMiLCBidWYpOworCQkqdisrID0gJ1wwJzsKKworCQlpZiAoIXN0cmNtcChidWYsICJwcm90b2NvbCIpKQorCQkJcHJvdG9jb2wgPSB1dGY4X3RvX3V0ZjE2X2R1cCh2KTsKKwkJZWxzZSBpZiAoIXN0cmNtcChidWYsICJob3N0IikpCisJCQlob3N0ID0gdXRmOF90b191dGYxNl9kdXAodik7CisJCWVsc2UgaWYgKCFzdHJjbXAoYnVmLCAicGF0aCIpKQorCQkJcGF0aCA9IHV0ZjhfdG9fdXRmMTZfZHVwKHYpOworCQllbHNlIGlmICghc3RyY21wKGJ1ZiwgInVzZXJuYW1lIikpIHsKKwkJCXd1c2VybmFtZSA9IHV0ZjhfdG9fdXRmMTZfZHVwKHYpOworCQl9IGVsc2UgaWYgKCFzdHJjbXAoYnVmLCAicGFzc3dvcmQiKSkKKwkJCXBhc3N3b3JkID0gdXRmOF90b191dGYxNl9kdXAodik7CisJCWVsc2UKKwkJCWRpZSgidW5yZWNvZ25pemVkIGlucHV0Iik7CisJfQorfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWNvbnN0IGNoYXIgKnVzYWdlID0KKwkgICAgInVzYWdlOiBnaXQgY3JlZGVudGlhbC13aW5jcmVkIDxnZXR8c3RvcmV8ZXJhc2U+XG4iOworCisJaWYgKCFhcmd2WzFdKQorCQlkaWUodXNhZ2UpOworCisJLyogZ2l0IHVzZSBiaW5hcnkgcGlwZXMgdG8gYXZvaWQgQ1JMRi1pc3N1ZXMgKi8KKwlfc2V0bW9kZShfZmlsZW5vKHN0ZGluKSwgX09fQklOQVJZKTsKKwlfc2V0bW9kZShfZmlsZW5vKHN0ZG91dCksIF9PX0JJTkFSWSk7CisKKwlyZWFkX2NyZWRlbnRpYWwoKTsKKworCWxvYWRfY3JlZF9mdW5jcygpOworCisJaWYgKCFwcm90b2NvbCB8fCAhKGhvc3QgfHwgcGF0aCkpCisJCXJldHVybiAwOworCisJLyogcHJlcGFyZSAndGFyZ2V0JywgdGhlIHVuaXF1ZSBrZXkgZm9yIHRoZSBjcmVkZW50aWFsICovCisJd2NzY3B5KHRhcmdldCwgTCJnaXQ6Iik7CisJd2NzbmNhdCh0YXJnZXQsIHByb3RvY29sLCBBUlJBWV9TSVpFKHRhcmdldCkpOworCXdjc25jYXQodGFyZ2V0LCBMIjovLyIsIEFSUkFZX1NJWkUodGFyZ2V0KSk7CisJaWYgKHd1c2VybmFtZSkgeworCQl3Y3NuY2F0KHRhcmdldCwgd3VzZXJuYW1lLCBBUlJBWV9TSVpFKHRhcmdldCkpOworCQl3Y3NuY2F0KHRhcmdldCwgTCJAIiwgQVJSQVlfU0laRSh0YXJnZXQpKTsKKwl9CisJaWYgKGhvc3QpCisJCXdjc25jYXQodGFyZ2V0LCBob3N0LCBBUlJBWV9TSVpFKHRhcmdldCkpOworCWlmIChwYXRoKSB7CisJCXdjc25jYXQodGFyZ2V0LCBMIi8iLCBBUlJBWV9TSVpFKHRhcmdldCkpOworCQl3Y3NuY2F0KHRhcmdldCwgcGF0aCwgQVJSQVlfU0laRSh0YXJnZXQpKTsKKwl9CisKKwlpZiAoIXN0cmNtcChhcmd2WzFdLCAiZ2V0IikpCisJCWdldF9jcmVkZW50aWFsKCk7CisJZWxzZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAic3RvcmUiKSkKKwkJc3RvcmVfY3JlZGVudGlhbCgpOworCWVsc2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgImVyYXNlIikpCisJCWVyYXNlX2NyZWRlbnRpYWwoKTsKKwkvKiBvdGhlcndpc2UsIGlnbm9yZSB1bmtub3duIGFjdGlvbiAqLworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9lbWFjcy9naXQtYmxhbWUuZWwgYi9jb250cmliL2VtYWNzL2dpdC1ibGFtZS5lbAppbmRleCBkMzUxY2ZiLi5lNjcxZjZjIDEwMDY0NAotLS0gYS9jb250cmliL2VtYWNzL2dpdC1ibGFtZS5lbAorKysgYi9jb250cmliL2VtYWNzL2dpdC1ibGFtZS5lbApAQCAtMzA0LDcgKzMwNCw3IEBACiAKIChkZWZ1biBnaXQtYmxhbWUtY2xlYW51cCAoKQogICAiUmVtb3ZlIGFsbCBibGFtZSBwcm9wZXJ0aWVzIgotICAgIChtYXBjYXIgJ2RlbGV0ZS1vdmVybGF5IGdpdC1ibGFtZS1vdmVybGF5cykKKyAgICAobWFwYyAnZGVsZXRlLW92ZXJsYXkgZ2l0LWJsYW1lLW92ZXJsYXlzKQogICAgIChzZXRxIGdpdC1ibGFtZS1vdmVybGF5cyBuaWwpCiAgICAgKHJlbW92ZS1naXQtYmxhbWUtdGV4dC1wcm9wZXJ0aWVzIChwb2ludC1taW4pIChwb2ludC1tYXgpKSkKIApAQCAtMzM3LDE2ICszMzcsMTYgQEAKIChkZWZ2YXIgaW4tYmxhbWUtZmlsdGVyIG5pbCkKIAogKGRlZnVuIGdpdC1ibGFtZS1maWx0ZXIgKHByb2Mgc3RyKQotICAoc2F2ZS1leGN1cnNpb24KLSAgICAoc2V0LWJ1ZmZlciAocHJvY2Vzcy1idWZmZXIgcHJvYykpCi0gICAgKGdvdG8tY2hhciAocHJvY2Vzcy1tYXJrIHByb2MpKQotICAgIChpbnNlcnQtYmVmb3JlLW1hcmtlcnMgc3RyKQotICAgIChnb3RvLWNoYXIgMCkKLSAgICAodW5sZXNzIGluLWJsYW1lLWZpbHRlcgotICAgICAgKGxldCAoKG1vcmUgdCkKLSAgICAgICAgICAgIChpbi1ibGFtZS1maWx0ZXIgdCkpCi0gICAgICAgICh3aGlsZSBtb3JlCi0gICAgICAgICAgKHNldHEgbW9yZSAoZ2l0LWJsYW1lLXBhcnNlKSkpKSkpKQorICAod2l0aC1jdXJyZW50LWJ1ZmZlciAocHJvY2Vzcy1idWZmZXIgcHJvYykKKyAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgIChnb3RvLWNoYXIgKHByb2Nlc3MtbWFyayBwcm9jKSkKKyAgICAgIChpbnNlcnQtYmVmb3JlLW1hcmtlcnMgc3RyKQorICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICh1bmxlc3MgaW4tYmxhbWUtZmlsdGVyCisgICAgICAgIChsZXQgKChtb3JlIHQpCisgICAgICAgICAgICAgIChpbi1ibGFtZS1maWx0ZXIgdCkpCisgICAgICAgICAgKHdoaWxlIG1vcmUKKyAgICAgICAgICAgIChzZXRxIG1vcmUgKGdpdC1ibGFtZS1wYXJzZSkpKSkpKSkpCiAKIChkZWZ1biBnaXQtYmxhbWUtcGFyc2UgKCkKICAgKGNvbmQgKChsb29raW5nLWF0ICJcXChbMC05YS1mXVxcezQwXFx9XFwpIFxcKFswLTldK1xcKSBcXChbMC05XStcXCkgXFwoWzAtOV0rXFwpXG4iKQpAQCAtMzg1LDMyICszODUsMzMgQEAKICAgICAgICAgICBpbmZvKSkpKQogCiAoZGVmdW4gZ2l0LWJsYW1lLWNyZWF0ZS1vdmVybGF5IChpbmZvIHN0YXJ0LWxpbmUgbnVtLWxpbmVzKQotICAoc2F2ZS1leGN1cnNpb24KLSAgICAoc2V0LWJ1ZmZlciBnaXQtYmxhbWUtZmlsZSkKLSAgICAobGV0ICgoaW5oaWJpdC1wb2ludC1tb3Rpb24taG9va3MgdCkKLSAgICAgICAgICAoaW5oaWJpdC1tb2RpZmljYXRpb24taG9va3MgdCkpCi0gICAgICAoZ290by1saW5lIHN0YXJ0LWxpbmUpCi0gICAgICAobGV0KiAoKHN0YXJ0IChwb2ludCkpCi0gICAgICAgICAgICAgKGVuZCAocHJvZ24gKGZvcndhcmQtbGluZSBudW0tbGluZXMpIChwb2ludCkpKQotICAgICAgICAgICAgIChvdmwgKG1ha2Utb3ZlcmxheSBzdGFydCBlbmQpKQotICAgICAgICAgICAgIChoYXNoIChjYXIgaW5mbykpCi0gICAgICAgICAgICAgKHNwZWMgYCgoP2ggLiAsKHN1YnN0cmluZyBoYXNoIDAgNikpCi0gICAgICAgICAgICAgICAgICAgICAoP0ggLiAsaGFzaCkKLSAgICAgICAgICAgICAgICAgICAgICg/YSAuICwoZ2l0LWJsYW1lLWdldC1pbmZvIGluZm8gJ2F1dGhvcikpCi0gICAgICAgICAgICAgICAgICAgICAoP0EgLiAsKGdpdC1ibGFtZS1nZXQtaW5mbyBpbmZvICdhdXRob3ItbWFpbCkpCi0gICAgICAgICAgICAgICAgICAgICAoP2MgLiAsKGdpdC1ibGFtZS1nZXQtaW5mbyBpbmZvICdjb21taXR0ZXIpKQotICAgICAgICAgICAgICAgICAgICAgKD9DIC4gLChnaXQtYmxhbWUtZ2V0LWluZm8gaW5mbyAnY29tbWl0dGVyLW1haWwpKQotICAgICAgICAgICAgICAgICAgICAgKD9zIC4gLChnaXQtYmxhbWUtZ2V0LWluZm8gaW5mbyAnc3VtbWFyeSkpKSkpCi0gICAgICAgIChwdXNoIG92bCBnaXQtYmxhbWUtb3ZlcmxheXMpCi0gICAgICAgIChvdmVybGF5LXB1dCBvdmwgJ2dpdC1ibGFtZSBpbmZvKQotICAgICAgICAob3ZlcmxheS1wdXQgb3ZsICdoZWxwLWVjaG8KLSAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQtc3BlYyBnaXQtYmxhbWUtbW91c2VvdmVyLWZvcm1hdCBzcGVjKSkKLSAgICAgICAgKGlmIGdpdC1ibGFtZS11c2UtY29sb3JzCi0gICAgICAgICAgICAob3ZlcmxheS1wdXQgb3ZsICdmYWNlIChsaXN0IDpiYWNrZ3JvdW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgKGFzc3EgJ2NvbG9yIChjZHIgaW5mbykpKSkpKQotICAgICAgICAob3ZlcmxheS1wdXQgb3ZsICdsaW5lLXByZWZpeAotICAgICAgICAgICAgICAgICAgICAgKHByb3BlcnRpemUgKGZvcm1hdC1zcGVjIGdpdC1ibGFtZS1wcmVmaXgtZm9ybWF0IHNwZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFjZSAnZ2l0LWJsYW1lLXByZWZpeC1mYWNlKSkpKSkpCisgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGdpdC1ibGFtZS1maWxlCisgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAobGV0ICgoaW5oaWJpdC1wb2ludC1tb3Rpb24taG9va3MgdCkKKyAgICAgICAgICAgIChpbmhpYml0LW1vZGlmaWNhdGlvbi1ob29rcyB0KSkKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgKGZvcndhcmQtbGluZSAoMS0gc3RhcnQtbGluZSkpCisgICAgICAgIChsZXQqICgoc3RhcnQgKHBvaW50KSkKKyAgICAgICAgICAgICAgIChlbmQgKHByb2duIChmb3J3YXJkLWxpbmUgbnVtLWxpbmVzKSAocG9pbnQpKSkKKyAgICAgICAgICAgICAgIChvdmwgKG1ha2Utb3ZlcmxheSBzdGFydCBlbmQpKQorICAgICAgICAgICAgICAgKGhhc2ggKGNhciBpbmZvKSkKKyAgICAgICAgICAgICAgIChzcGVjIGAoKD9oIC4gLChzdWJzdHJpbmcgaGFzaCAwIDYpKQorICAgICAgICAgICAgICAgICAgICAgICAoP0ggLiAsaGFzaCkKKyAgICAgICAgICAgICAgICAgICAgICAgKD9hIC4gLChnaXQtYmxhbWUtZ2V0LWluZm8gaW5mbyAnYXV0aG9yKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKD9BIC4gLChnaXQtYmxhbWUtZ2V0LWluZm8gaW5mbyAnYXV0aG9yLW1haWwpKQorICAgICAgICAgICAgICAgICAgICAgICAoP2MgLiAsKGdpdC1ibGFtZS1nZXQtaW5mbyBpbmZvICdjb21taXR0ZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAoP0MgLiAsKGdpdC1ibGFtZS1nZXQtaW5mbyBpbmZvICdjb21taXR0ZXItbWFpbCkpCisgICAgICAgICAgICAgICAgICAgICAgICg/cyAuICwoZ2l0LWJsYW1lLWdldC1pbmZvIGluZm8gJ3N1bW1hcnkpKSkpKQorICAgICAgICAgIChwdXNoIG92bCBnaXQtYmxhbWUtb3ZlcmxheXMpCisgICAgICAgICAgKG92ZXJsYXktcHV0IG92bCAnZ2l0LWJsYW1lIGluZm8pCisgICAgICAgICAgKG92ZXJsYXktcHV0IG92bCAnaGVscC1lY2hvCisgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQtc3BlYyBnaXQtYmxhbWUtbW91c2VvdmVyLWZvcm1hdCBzcGVjKSkKKyAgICAgICAgICAoaWYgZ2l0LWJsYW1lLXVzZS1jb2xvcnMKKyAgICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92bCAnZmFjZSAobGlzdCA6YmFja2dyb3VuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgKGFzc3EgJ2NvbG9yIChjZHIgaW5mbykpKSkpKQorICAgICAgICAgIChvdmVybGF5LXB1dCBvdmwgJ2xpbmUtcHJlZml4CisgICAgICAgICAgICAgICAgICAgICAgIChwcm9wZXJ0aXplIChmb3JtYXQtc3BlYyBnaXQtYmxhbWUtcHJlZml4LWZvcm1hdCBzcGVjKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFjZSAnZ2l0LWJsYW1lLXByZWZpeC1mYWNlKSkpKSkpKQogCiAoZGVmdW4gZ2l0LWJsYW1lLWFkZC1pbmZvIChpbmZvIGtleSB2YWx1ZSkKICAgKG5jb25jIGluZm8gKGxpc3QgKGNvbnMgKGludGVybiBrZXkpIHZhbHVlKSkpKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9lbWFjcy9naXQuZWwgYi9jb250cmliL2VtYWNzL2dpdC5lbAppbmRleCA2NWM5NWQ5Li41ZmZjNTA2IDEwMDY0NAotLS0gYS9jb250cmliL2VtYWNzL2dpdC5lbAorKysgYi9jb250cmliL2VtYWNzL2dpdC5lbApAQCAtMTY3MSw3ICsxNjcxLDcgQEAKICAgIkVudHJ5IHBvaW50IGludG8gZ2l0LXN0YXR1cyBtb2RlLiIKICAgKGludGVyYWN0aXZlICJEU2VsZWN0IGRpcmVjdG9yeTogIikKICAgKHNldHEgZGlyIChnaXQtZ2V0LXRvcC1kaXIgZGlyKSkKLSAgKGlmIChmaWxlLWRpcmVjdG9yeS1wIChjb25jYXQgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgZGlyKSAiLmdpdCIpKQorICAoaWYgKGZpbGUtZXhpc3RzLXAgKGNvbmNhdCAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBkaXIpICIuZ2l0IikpCiAgICAgICAobGV0ICgoYnVmZmVyIChvciAoYW5kIGdpdC1yZXVzZS1zdGF0dXMtYnVmZmVyIChnaXQtZmluZC1zdGF0dXMtYnVmZmVyIGRpcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAoY3JlYXRlLWZpbGUtYnVmZmVyIChleHBhbmQtZmlsZS1uYW1lICIqZ2l0LXN0YXR1cyoiIGRpcikpKSkpCiAgICAgICAgIChzd2l0Y2gtdG8tYnVmZmVyIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZXhhbXBsZXMvYnVpbHRpbi1mZXRjaC0tdG9vbC5jIGIvY29udHJpYi9leGFtcGxlcy9idWlsdGluLWZldGNoLS10b29sLmMKaW5kZXggMGQ1NGFhNy4uOGJjOGM3NSAxMDA2NDQKLS0tIGEvY29udHJpYi9leGFtcGxlcy9idWlsdGluLWZldGNoLS10b29sLmMKKysrIGIvY29udHJpYi9leGFtcGxlcy9idWlsdGluLWZldGNoLS10b29sLmMKQEAgLTk2LDcgKzk2LDcgQEAKIAlzdHJjcHkob2xkaCwgZmluZF91bmlxdWVfYWJicmV2KGN1cnJlbnQtPm9iamVjdC5zaGExLCBERUZBVUxUX0FCQlJFVikpOwogCXN0cmNweShuZXdoLCBmaW5kX3VuaXF1ZV9hYmJyZXYoc2hhMV9uZXcsIERFRkFVTFRfQUJCUkVWKSk7CiAKLQlpZiAoaW5fbWVyZ2VfYmFzZXMoY3VycmVudCwgJnVwZGF0ZWQsIDEpKSB7CisJaWYgKGluX21lcmdlX2Jhc2VzKGN1cnJlbnQsIHVwZGF0ZWQpKSB7CiAJCWZwcmludGYoc3RkZXJyLCAiKiAlczogZmFzdC1mb3J3YXJkIHRvICVzXG4iLAogCQkJbmFtZSwgbm90ZSk7CiAJCWZwcmludGYoc3RkZXJyLCAiICBvbGQuLm5ldzogJXMuLiVzXG4iLCBvbGRoLCBuZXdoKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZXhhbXBsZXMvZ2l0LXJlbW90ZS5wZXJsIGIvY29udHJpYi9leGFtcGxlcy9naXQtcmVtb3RlLnBlcmwKaW5kZXggYjE3OTUyYS4uZDQyZGY3YiAxMDA3NTUKLS0tIGEvY29udHJpYi9leGFtcGxlcy9naXQtcmVtb3RlLnBlcmwKKysrIGIvY29udHJpYi9leGFtcGxlcy9naXQtcmVtb3RlLnBlcmwKQEAgLTM0Nyw3ICszNDcsNyBAQAogfQogCiBzdWIgYWRkX3VzYWdlIHsKLQlwcmludCBTVERFUlIgIlVzYWdlOiBnaXQgcmVtb3RlIGFkZCBbLWZdIFstdCB0cmFja10qIFstbSBtYXN0ZXJdIDxuYW1lPiA8dXJsPlxuIjsKKwlwcmludCBTVERFUlIgInVzYWdlOiBnaXQgcmVtb3RlIGFkZCBbLWZdIFstdCB0cmFja10qIFstbSBtYXN0ZXJdIDxuYW1lPiA8dXJsPlxuIjsKIAlleGl0KDEpOwogfQogCkBAIC0zODAsNyArMzgwLDcgQEAKIAkJfQogCX0KIAlpZiAoJGkgPj0gQEFSR1YpIHsKLQkJcHJpbnQgU1RERVJSICJVc2FnZTogZ2l0IHJlbW90ZSBzaG93IDxyZW1vdGU+XG4iOworCQlwcmludCBTVERFUlIgInVzYWdlOiBnaXQgcmVtb3RlIHNob3cgPHJlbW90ZT5cbiI7CiAJCWV4aXQoMSk7CiAJfQogCW15ICRzdGF0dXMgPSAwOwpAQCAtNDEwLDcgKzQxMCw3IEBACiAJCX0KIAl9CiAJaWYgKCRpID49IEBBUkdWKSB7Ci0JCXByaW50IFNUREVSUiAiVXNhZ2U6IGdpdCByZW1vdGUgcHJ1bmUgPHJlbW90ZT5cbiI7CisJCXByaW50IFNUREVSUiAidXNhZ2U6IGdpdCByZW1vdGUgcHJ1bmUgPHJlbW90ZT5cbiI7CiAJCWV4aXQoMSk7CiAJfQogCW15ICRzdGF0dXMgPSAwOwpAQCAtNDU4LDEzICs0NTgsMTMgQEAKIH0KIGVsc2lmICgkQVJHVlswXSBlcSAncm0nKSB7CiAJaWYgKEBBUkdWIDw9IDEpIHsKLQkJcHJpbnQgU1RERVJSICJVc2FnZTogZ2l0IHJlbW90ZSBybSA8cmVtb3RlPlxuIjsKKwkJcHJpbnQgU1RERVJSICJ1c2FnZTogZ2l0IHJlbW90ZSBybSA8cmVtb3RlPlxuIjsKIAkJZXhpdCgxKTsKIAl9CiAJZXhpdChybV9yZW1vdGUoJEFSR1ZbMV0pKTsKIH0KIGVsc2UgewotCXByaW50IFNUREVSUiAiVXNhZ2U6IGdpdCByZW1vdGVcbiI7CisJcHJpbnQgU1RERVJSICJ1c2FnZTogZ2l0IHJlbW90ZVxuIjsKIAlwcmludCBTVERFUlIgIiAgICAgICBnaXQgcmVtb3RlIGFkZCA8bmFtZT4gPHVybD5cbiI7CiAJcHJpbnQgU1RERVJSICIgICAgICAgZ2l0IHJlbW90ZSBybSA8bmFtZT5cbiI7CiAJcHJpbnQgU1RERVJSICIgICAgICAgZ2l0IHJlbW90ZSBzaG93IDxuYW1lPlxuIjsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZXhhbXBsZXMvZ2l0LXN2bmltcG9ydC5wZXJsIGIvY29udHJpYi9leGFtcGxlcy9naXQtc3ZuaW1wb3J0LnBlcmwKaW5kZXggYjA5ZmY4Zi4uYzQxNGYwZCAxMDA3NTUKLS0tIGEvY29udHJpYi9leGFtcGxlcy9naXQtc3ZuaW1wb3J0LnBlcmwKKysrIGIvY29udHJpYi9leGFtcGxlcy9naXQtc3ZuaW1wb3J0LnBlcmwKQEAgLTM2LDcgKzM2LDcgQEAKIAogc3ViIHVzYWdlKCkgewogCXByaW50IFNUREVSUiA8PEVORDsKLVVzYWdlOiAke1xiYXNlbmFtZSAkMH0gICAgICMgZmV0Y2gvdXBkYXRlIEdJVCBmcm9tIFNWTgordXNhZ2U6ICR7XGJhc2VuYW1lICQwfSAgICAgIyBmZXRjaC91cGRhdGUgR0lUIGZyb20gU1ZOCiAgICAgICAgWy1vIGJyYW5jaC1mb3ItSEVBRF0gWy1oXSBbLXZdIFstbCBtYXhfcmV2XSBbLVIgcmVwYWNrX2VhY2hfcmV2c10KICAgICAgICBbLUMgR0lUX3JlcG9zaXRvcnldIFstdCB0YWduYW1lXSBbLVQgdHJ1bmtuYW1lXSBbLWIgYnJhbmNobmFtZV0KICAgICAgICBbLWR8LURdIFstaV0gWy11XSBbLXJdIFstSSBpZ25vcmVmaWxlbmFtZV0gWy1zIHN0YXJ0X2NoZ10KZGlmZiAtLWdpdCBhL2NvbnRyaWIvZmFzdC1pbXBvcnQvZ2l0LWltcG9ydC5wZXJsIGIvY29udHJpYi9mYXN0LWltcG9ydC9naXQtaW1wb3J0LnBlcmwKaW5kZXggZjlmZWY2ZC4uMDg5MWI5ZSAxMDA3NTUKLS0tIGEvY29udHJpYi9mYXN0LWltcG9ydC9naXQtaW1wb3J0LnBlcmwKKysrIGIvY29udHJpYi9mYXN0LWltcG9ydC9naXQtaW1wb3J0LnBlcmwKQEAgLTcsNyArNyw3IEBACiB1c2Ugc3RyaWN0OwogdXNlIEZpbGU6OkZpbmQ7CiAKLW15ICRVU0FHRSA9ICdVc2FnZTogZ2l0LWltcG9ydCBicmFuY2ggaW1wb3J0LW1lc3NhZ2UnOworbXkgJFVTQUdFID0gJ3VzYWdlOiBnaXQtaW1wb3J0IGJyYW5jaCBpbXBvcnQtbWVzc2FnZSc7CiBteSAkYnJhbmNoID0gc2hpZnQgb3IgZGllICIkVVNBR0VcbiI7CiBteSAkbWVzc2FnZSA9IHNoaWZ0IG9yIGRpZSAiJFVTQUdFXG4iOwogCmRpZmYgLS1naXQgYS9jb250cmliL2Zhc3QtaW1wb3J0L2dpdC1pbXBvcnQuc2ggYi9jb250cmliL2Zhc3QtaW1wb3J0L2dpdC1pbXBvcnQuc2gKaW5kZXggMGNhNzcxOC4uZjhkODAzYyAxMDA3NTUKLS0tIGEvY29udHJpYi9mYXN0LWltcG9ydC9naXQtaW1wb3J0LnNoCisrKyBiL2NvbnRyaWIvZmFzdC1pbXBvcnQvZ2l0LWltcG9ydC5zaApAQCAtNSw3ICs1LDcgQEAKICMgYnV0IGlzIG1lYW50IHRvIGJlIGEgc2ltcGxlIGZhc3QtaW1wb3J0IGV4YW1wbGUuCiAKIGlmIFsgLXogIiQxIiAtbyAteiAiJDIiIF07IHRoZW4KLQllY2hvICJVc2FnZTogZ2l0LWltcG9ydCBicmFuY2ggaW1wb3J0LW1lc3NhZ2UiCisJZWNobyAidXNhZ2U6IGdpdC1pbXBvcnQgYnJhbmNoIGltcG9ydC1tZXNzYWdlIgogCWV4aXQgMQogZmkKIApkaWZmIC0tZ2l0IGEvY29udHJpYi9mYXN0LWltcG9ydC9pbXBvcnQtemlwcy5weSBiL2NvbnRyaWIvZmFzdC1pbXBvcnQvaW1wb3J0LXppcHMucHkKaW5kZXggODJmNWVkMy4uZDEyYzI5NiAxMDA3NTUKLS0tIGEvY29udHJpYi9mYXN0LWltcG9ydC9pbXBvcnQtemlwcy5weQorKysgYi9jb250cmliL2Zhc3QtaW1wb3J0L2ltcG9ydC16aXBzLnB5CkBAIC05LDEzICs5LDE4IEBACiAjIyAgZ2l0IGxvZyAtLXN0YXQgaW1wb3J0LXppcHMKIAogZnJvbSBvcyBpbXBvcnQgcG9wZW4sIHBhdGgKLWZyb20gc3lzIGltcG9ydCBhcmd2LCBleGl0Citmcm9tIHN5cyBpbXBvcnQgYXJndiwgZXhpdCwgaGV4dmVyc2lvbiwgc3RkZXJyCiBmcm9tIHRpbWUgaW1wb3J0IG1rdGltZQogZnJvbSB6aXBmaWxlIGltcG9ydCBaaXBGaWxlCiAKK2lmIGhleHZlcnNpb24gPCAweDAxMDYwMDAwOgorICAgICMgVGhlIGxpbWl0ZXIgaXMgdGhlIHppcGZpbGUgbW9kdWxlCisgICAgc3RkZXJyLndyaXRlKCJpbXBvcnQtemlwcy5weTogcmVxdWlyZXMgUHl0aG9uIDEuNi4wIG9yIGxhdGVyLlxuIikKKyAgICBleGl0KDEpCisKIGlmIGxlbihhcmd2KSA8IDI6Ci0JcHJpbnQgJ1VzYWdlOicsIGFyZ3ZbMF0sICc8emlwZmlsZT4uLi4nCi0JZXhpdCgxKQorICAgIHByaW50ICd1c2FnZTonLCBhcmd2WzBdLCAnPHppcGZpbGU+Li4uJworICAgIGV4aXQoMSkKIAogYnJhbmNoX3JlZiA9ICdyZWZzL2hlYWRzL2ltcG9ydC16aXBzJwogY29tbWl0dGVyX25hbWUgPSAnWiBJcCBDcmVhdG9yJwpAQCAtMjMsNTEgKzI4LDUxIEBACiAKIGZhc3RfaW1wb3J0ID0gcG9wZW4oJ2dpdCBmYXN0LWltcG9ydCAtLXF1aWV0JywgJ3cnKQogZGVmIHByaW50bGluZXMobGlzdCk6Ci0JZm9yIHN0ciBpbiBsaXN0OgotCQlmYXN0X2ltcG9ydC53cml0ZShzdHIgKyAiXG4iKQorICAgIGZvciBzdHIgaW4gbGlzdDoKKyAgICAgICAgZmFzdF9pbXBvcnQud3JpdGUoc3RyICsgIlxuIikKIAogZm9yIHppcGZpbGUgaW4gYXJndlsxOl06Ci0JY29tbWl0X3RpbWUgPSAwCi0JbmV4dF9tYXJrID0gMQotCWNvbW1vbl9wcmVmaXggPSBOb25lCi0JbWFyayA9IGRpY3QoKQorICAgIGNvbW1pdF90aW1lID0gMAorICAgIG5leHRfbWFyayA9IDEKKyAgICBjb21tb25fcHJlZml4ID0gTm9uZQorICAgIG1hcmsgPSBkaWN0KCkKIAotCXppcCA9IFppcEZpbGUoemlwZmlsZSwgJ3InKQotCWZvciBuYW1lIGluIHppcC5uYW1lbGlzdCgpOgotCQlpZiBuYW1lLmVuZHN3aXRoKCcvJyk6Ci0JCQljb250aW51ZQotCQlpbmZvID0gemlwLmdldGluZm8obmFtZSkKKyAgICB6aXAgPSBaaXBGaWxlKHppcGZpbGUsICdyJykKKyAgICBmb3IgbmFtZSBpbiB6aXAubmFtZWxpc3QoKToKKyAgICAgICAgaWYgbmFtZS5lbmRzd2l0aCgnLycpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaW5mbyA9IHppcC5nZXRpbmZvKG5hbWUpCiAKLQkJaWYgY29tbWl0X3RpbWUgPCBpbmZvLmRhdGVfdGltZToKLQkJCWNvbW1pdF90aW1lID0gaW5mby5kYXRlX3RpbWUKLQkJaWYgY29tbW9uX3ByZWZpeCA9PSBOb25lOgotCQkJY29tbW9uX3ByZWZpeCA9IG5hbWVbOm5hbWUucmZpbmQoJy8nKSArIDFdCi0JCWVsc2U6Ci0JCQl3aGlsZSBub3QgbmFtZS5zdGFydHN3aXRoKGNvbW1vbl9wcmVmaXgpOgotCQkJCWxhc3Rfc2xhc2ggPSBjb21tb25fcHJlZml4WzotMV0ucmZpbmQoJy8nKSArIDEKLQkJCQljb21tb25fcHJlZml4ID0gY29tbW9uX3ByZWZpeFs6bGFzdF9zbGFzaF0KKyAgICAgICAgaWYgY29tbWl0X3RpbWUgPCBpbmZvLmRhdGVfdGltZToKKyAgICAgICAgICAgIGNvbW1pdF90aW1lID0gaW5mby5kYXRlX3RpbWUKKyAgICAgICAgaWYgY29tbW9uX3ByZWZpeCA9PSBOb25lOgorICAgICAgICAgICAgY29tbW9uX3ByZWZpeCA9IG5hbWVbOm5hbWUucmZpbmQoJy8nKSArIDFdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3aGlsZSBub3QgbmFtZS5zdGFydHN3aXRoKGNvbW1vbl9wcmVmaXgpOgorICAgICAgICAgICAgICAgIGxhc3Rfc2xhc2ggPSBjb21tb25fcHJlZml4WzotMV0ucmZpbmQoJy8nKSArIDEKKyAgICAgICAgICAgICAgICBjb21tb25fcHJlZml4ID0gY29tbW9uX3ByZWZpeFs6bGFzdF9zbGFzaF0KIAotCQltYXJrW25hbWVdID0gJzonICsgc3RyKG5leHRfbWFyaykKLQkJbmV4dF9tYXJrICs9IDEKKyAgICAgICAgbWFya1tuYW1lXSA9ICc6JyArIHN0cihuZXh0X21hcmspCisgICAgICAgIG5leHRfbWFyayArPSAxCiAKLQkJcHJpbnRsaW5lcygoJ2Jsb2InLCAnbWFyayAnICsgbWFya1tuYW1lXSwgXAotCQkJCQknZGF0YSAnICsgc3RyKGluZm8uZmlsZV9zaXplKSkpCi0JCWZhc3RfaW1wb3J0LndyaXRlKHppcC5yZWFkKG5hbWUpICsgIlxuIikKKyAgICAgICAgcHJpbnRsaW5lcygoJ2Jsb2InLCAnbWFyayAnICsgbWFya1tuYW1lXSwgXAorICAgICAgICAgICAgICAgICAgICAnZGF0YSAnICsgc3RyKGluZm8uZmlsZV9zaXplKSkpCisgICAgICAgIGZhc3RfaW1wb3J0LndyaXRlKHppcC5yZWFkKG5hbWUpICsgIlxuIikKIAotCWNvbW1pdHRlciA9IGNvbW1pdHRlcl9uYW1lICsgJyA8JyArIGNvbW1pdHRlcl9lbWFpbCArICc+ICVkICswMDAwJyAlIFwKLQkJbWt0aW1lKGNvbW1pdF90aW1lICsgKDAsIDAsIDApKQorICAgIGNvbW1pdHRlciA9IGNvbW1pdHRlcl9uYW1lICsgJyA8JyArIGNvbW1pdHRlcl9lbWFpbCArICc+ICVkICswMDAwJyAlIFwKKyAgICAgICAgbWt0aW1lKGNvbW1pdF90aW1lICsgKDAsIDAsIDApKQogCi0JcHJpbnRsaW5lcygoJ2NvbW1pdCAnICsgYnJhbmNoX3JlZiwgJ2NvbW1pdHRlciAnICsgY29tbWl0dGVyLCBcCi0JCSdkYXRhIDw8RU9NJywgJ0ltcG9ydGVkIGZyb20gJyArIHppcGZpbGUgKyAnLicsICdFT00nLCBcCi0JCScnLCAnZGVsZXRlYWxsJykpCisgICAgcHJpbnRsaW5lcygoJ2NvbW1pdCAnICsgYnJhbmNoX3JlZiwgJ2NvbW1pdHRlciAnICsgY29tbWl0dGVyLCBcCisgICAgICAgICdkYXRhIDw8RU9NJywgJ0ltcG9ydGVkIGZyb20gJyArIHppcGZpbGUgKyAnLicsICdFT00nLCBcCisgICAgICAgICcnLCAnZGVsZXRlYWxsJykpCiAKLQlmb3IgbmFtZSBpbiBtYXJrLmtleXMoKToKLQkJZmFzdF9pbXBvcnQud3JpdGUoJ00gMTAwNjQ0ICcgKyBtYXJrW25hbWVdICsgJyAnICsKLQkJCW5hbWVbbGVuKGNvbW1vbl9wcmVmaXgpOl0gKyAiXG4iKQorICAgIGZvciBuYW1lIGluIG1hcmsua2V5cygpOgorICAgICAgICBmYXN0X2ltcG9ydC53cml0ZSgnTSAxMDA2NDQgJyArIG1hcmtbbmFtZV0gKyAnICcgKworICAgICAgICAgICAgbmFtZVtsZW4oY29tbW9uX3ByZWZpeCk6XSArICJcbiIpCiAKLQlwcmludGxpbmVzKCgnJywgICd0YWcgJyArIHBhdGguYmFzZW5hbWUoemlwZmlsZSksIFwKLQkJJ2Zyb20gJyArIGJyYW5jaF9yZWYsICd0YWdnZXIgJyArIGNvbW1pdHRlciwgXAotCQknZGF0YSA8PEVPTScsICdQYWNrYWdlICcgKyB6aXBmaWxlLCAnRU9NJywgJycpKQorICAgIHByaW50bGluZXMoKCcnLCAgJ3RhZyAnICsgcGF0aC5iYXNlbmFtZSh6aXBmaWxlKSwgXAorICAgICAgICAnZnJvbSAnICsgYnJhbmNoX3JlZiwgJ3RhZ2dlciAnICsgY29tbWl0dGVyLCBcCisgICAgICAgICdkYXRhIDw8RU9NJywgJ1BhY2thZ2UgJyArIHppcGZpbGUsICdFT00nLCAnJykpCiAKIGlmIGZhc3RfaW1wb3J0LmNsb3NlKCk6Ci0JZXhpdCgxKQorICAgIGV4aXQoMSkKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZ2l0LWp1bXAvZ2l0LWp1bXAgYi9jb250cmliL2dpdC1qdW1wL2dpdC1qdW1wCmluZGV4IGEzMzY3NGUuLmRjOTBjZDYgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvZ2l0LWp1bXAvZ2l0LWp1bXAKKysrIGIvY29udHJpYi9naXQtanVtcC9naXQtanVtcApAQCAtMjEsOSArMjEsOSBAQAogfQogCiBtb2RlX2RpZmYoKSB7Ci0JZ2l0IGRpZmYgLS1yZWxhdGl2ZSAiJEAiIHwKKwlnaXQgZGlmZiAtLW5vLXByZWZpeCAtLXJlbGF0aXZlICIkQCIgfAogCXBlcmwgLW5lICcKLQlpZiAobXteXCtcK1wrIGIvKC4qKX0pIHsgJGZpbGUgPSAkMTsgbmV4dCB9CisJaWYgKG17XlwrXCtcKyAoLiopfSkgeyAkZmlsZSA9ICQxOyBuZXh0IH0KIAlkZWZpbmVkKCRmaWxlKSBvciBuZXh0OwogCWlmIChtL15AQCAuKlwrKFxkKykvKSB7ICRsaW5lID0gJDE7IG5leHQgfQogCWRlZmluZWQoJGxpbmUpIG9yIG5leHQ7CmRpZmYgLS1naXQgYS9jb250cmliL2hnLXRvLWdpdC9oZy10by1naXQucHkgYi9jb250cmliL2hnLXRvLWdpdC9oZy10by1naXQucHkKaW5kZXggMDQ2Y2IyYi4uMjMyNjI1YSAxMDA3NTUKLS0tIGEvY29udHJpYi9oZy10by1naXQvaGctdG8tZ2l0LnB5CisrKyBiL2NvbnRyaWIvaGctdG8tZ2l0L2hnLXRvLWdpdC5weQpAQCAtMjMsNiArMjMsMTEgQEAKIGltcG9ydCB0ZW1wZmlsZSwgcGlja2xlLCBnZXRvcHQKIGltcG9ydCByZQogCitpZiBzeXMuaGV4dmVyc2lvbiA8IDB4MDIwMzAwMDA6CisgICAjIFRoZSBiZWhhdmlvciBvZiB0aGUgcGlja2xlIG1vZHVsZSBjaGFuZ2VkIHNpZ25pZmljYW50bHkgaW4gMi4zCisgICBzeXMuc3RkZXJyLndyaXRlKCJoZy10by1naXQucHk6IHJlcXVpcmVzIFB5dGhvbiAyLjMgb3IgbGF0ZXIuXG4iKQorICAgc3lzLmV4aXQoMSkKKwogIyBNYXBzIGhnIHZlcnNpb24gLT4gZ2l0IHZlcnNpb24KIGhndmVycyA9IHt9CiAjIExpc3Qgb2YgY2hpbGRyZW4gZm9yIGVhY2ggaGcgcmV2aXNpb24KZGlmZiAtLWdpdCBhL2NvbnRyaWIvaG9va3MvcG9zdC1yZWNlaXZlLWVtYWlsIGIvY29udHJpYi9ob29rcy9wb3N0LXJlY2VpdmUtZW1haWwKaW5kZXggMDFhZjlkZi4uMGU1YjcyZCAxMDA3NTUKLS0tIGEvY29udHJpYi9ob29rcy9wb3N0LXJlY2VpdmUtZW1haWwKKysrIGIvY29udHJpYi9ob29rcy9wb3N0LXJlY2VpdmUtZW1haWwKQEAgLTIzNyw2ICsyMzcsNyBAQAogCVgtR2l0LVJlZnR5cGU6ICRyZWZuYW1lX3R5cGUKIAlYLUdpdC1PbGRyZXY6ICRvbGRyZXYKIAlYLUdpdC1OZXdyZXY6ICRuZXdyZXYKKwlBdXRvLVN1Ym1pdHRlZDogYXV0by1nZW5lcmF0ZWQKIAogCVRoaXMgaXMgYW4gYXV0b21hdGVkIGVtYWlsIGZyb20gdGhlIGdpdCBob29rcy9wb3N0LXJlY2VpdmUgc2NyaXB0LiBJdCB3YXMKIAlnZW5lcmF0ZWQgYmVjYXVzZSBhIHJlZiBjaGFuZ2Ugd2FzIHB1c2hlZCB0byB0aGUgcmVwb3NpdG9yeSBjb250YWluaW5nCkBAIC00MDMsNyArNDA0LDcgQEAKIAkJCWVjaG8gIiAgICAgICAgICAgIFxcIgogCQkJZWNobyAiICAgICAgICAgICAgIE8gLS0gTyAtLSBPICgkb2xkcmV2KSIKIAkJCWVjaG8gIiIKLQkJCWVjaG8gIlRoZSByZW1vdmVkIHJldmlzaW9ucyBhcmUgbm90IG5lY2Vzc2FyaWxseSBnb25lIC0gaWYgYW5vdGhlciByZWZlcmVuY2UiCisJCQllY2hvICJUaGUgcmVtb3ZlZCByZXZpc2lvbnMgYXJlIG5vdCBuZWNlc3NhcmlseSBnb25lIC0gaWYgYW5vdGhlciByZWZlcmVuY2UiCiAJCQllY2hvICJzdGlsbCByZWZlcnMgdG8gdGhlbSB0aGV5IHdpbGwgc3RheSBpbiB0aGUgcmVwb3NpdG9yeS4iCiAJCQlyZXdpbmRfb25seT0xCiAJCWVsc2UKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaG9va3Mvc2V0Z2l0cGVybXMucGVybCBiL2NvbnRyaWIvaG9va3Mvc2V0Z2l0cGVybXMucGVybAppbmRleCBhNTc3YWQwLi4yNzcwYTFiIDEwMDY0NAotLS0gYS9jb250cmliL2hvb2tzL3NldGdpdHBlcm1zLnBlcmwKKysrIGIvY29udHJpYi9ob29rcy9zZXRnaXRwZXJtcy5wZXJsCkBAIC0yNCw3ICsyNCw3IEBACiB1c2UgRmlsZTo6QmFzZW5hbWU7CiAKIG15ICR1c2FnZSA9Ci0iVXNhZ2U6IHNldGdpdHBlcm1zLnBlcmwgW09QVElPTl0uLi4gPC0tcmVhZHwtLXdyaXRlPgorInVzYWdlOiBzZXRnaXRwZXJtcy5wZXJsIFtPUFRJT05dLi4uIDwtLXJlYWR8LS13cml0ZT4KIFRoaXMgcHJvZ3JhbSB1c2VzIGEgZmlsZSBgLmdpdG1ldGFgIHRvIHN0b3JlL3Jlc3RvcmUgcGVybWlzc2lvbnMgYW5kIHVpZC9naWQKIGluZm8gZm9yIGFsbCBmaWxlcy9kaXJzIHRyYWNrZWQgYnkgZ2l0IGluIHRoZSByZXBvc2l0b3J5LgogCmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC8uZ2l0aWdub3JlIGIvY29udHJpYi9tdy10by1naXQvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTE5NjU1Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9tdy10by1naXQvLmdpdGlnbm9yZQpAQCAtMCwwICsxIEBACitnaXQtcmVtb3RlLW1lZGlhd2lraQpkaWZmIC0tZ2l0IGEvY29udHJpYi9tdy10by1naXQvTWFrZWZpbGUgYi9jb250cmliL213LXRvLWdpdC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTQ5NzE5Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9tdy10by1naXQvTWFrZWZpbGUKQEAgLTAsMCArMSwxNyBAQAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTMKKyMgICAgIE1hdHRoaWV1IE1veSA8TWF0dGhpZXUuTW95QGltYWcuZnI+CisjCisjIyBCdWlsZCBnaXQtcmVtb3RlLW1lZGlhd2lraQorCitTQ1JJUFRfUEVSTD1naXQtcmVtb3RlLW1lZGlhd2lraS5wZXJsCitHSVRfUk9PVF9ESVI9Li4vLi4KK0hFUkU9Y29udHJpYi9tdy10by1naXQvCisKK1NDUklQVF9QRVJMX0ZVTEw9JChwYXRzdWJzdCAlLCQoSEVSRSkvJSwkKFNDUklQVF9QRVJMKSkKKworYWxsOiBidWlsZAorCitidWlsZCBpbnN0YWxsIGNsZWFuOgorCSQoTUFLRSkgLUMgJChHSVRfUk9PVF9ESVIpIFNDUklQVF9QRVJMPSQoU0NSSVBUX1BFUkxfRlVMTCkgXAorICAgICAgICAgICAgICAgICRALXBlcmwtc2NyaXB0CmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC9naXQtcmVtb3RlLW1lZGlhd2lraSBiL2NvbnRyaWIvbXctdG8tZ2l0L2dpdC1yZW1vdGUtbWVkaWF3aWtpCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjMThiZmExLi4wMDAwMDAwCi0tLSBhL2NvbnRyaWIvbXctdG8tZ2l0L2dpdC1yZW1vdGUtbWVkaWF3aWtpCisrKyAvZGV2L251bGwKQEAgLTEsODI3ICswLDAgQEAKLSMhIC91c3IvYmluL3BlcmwKLQotIyBDb3B5cmlnaHQgKEMpIDIwMTEKLSMgICAgIErDqXLDqW1pZSBOaWthZXMgPGplcmVtaWUubmlrYWVzQGVuc2ltYWcuaW1hZy5mcj4KLSMgICAgIEFybmF1ZCBMYWN1cmllIDxhcm5hdWQubGFjdXJpZUBlbnNpbWFnLmltYWcuZnI+Ci0jICAgICBDbGFpcmUgRm91c3NlIDxjbGFpcmUuZm91c3NlQGVuc2ltYWcuaW1hZy5mcj4KLSMgICAgIERhdmlkIEFtb3V5YWwgPGRhdmlkLmFtb3V5YWxAZW5zaW1hZy5pbWFnLmZyPgotIyAgICAgTWF0dGhpZXUgTW95IDxtYXR0aGlldS5tb3lAZ3Jlbm9ibGUtaW5wLmZyPgotIyBMaWNlbnNlOiBHUEwgdjIgb3IgbGF0ZXIKLQotIyBHYXRld2F5IGJldHdlZW4gR2l0IGFuZCBNZWRpYVdpa2kuCi0jICAgaHR0cHM6Ly9naXRodWIuY29tL0JpYnpiYWxsL0dpdC1NZWRpYXdpa2kvd2lraQotIwotIyBLbm93biBsaW1pdGF0aW9uczoKLSMKLSMgLSBPbmx5IHdpa2kgcGFnZXMgYXJlIG1hbmFnZWQsIG5vIHN1cHBvcnQgZm9yIFtbRmlsZTouLi5dXQotIyAgIGF0dGFjaG1lbnRzLgotIwotIyAtIFBvb3IgcGVyZm9ybWFuY2UgaW4gdGhlIGJlc3QgY2FzZTogaXQgdGFrZXMgZm9yZXZlciB0byBjaGVjawotIyAgIHdoZXRoZXIgd2UncmUgdXAtdG8tZGF0ZSAob24gZmV0Y2ggb3IgcHVzaCkgb3IgdG8gZmV0Y2ggYSBmZXcKLSMgICByZXZpc2lvbnMgZnJvbSBhIGxhcmdlIHdpa2ksIGJlY2F1c2Ugd2UgdXNlIGV4Y2x1c2l2ZWx5IGEKLSMgICBwYWdlLWJhc2VkIHN5bmNocm9uaXphdGlvbi4gV2UgY291bGQgc3dpdGNoIHRvIGEgd2lraS13aWRlCi0jICAgc3luY2hyb25pemF0aW9uIHdoZW4gdGhlIHN5bmNocm9uaXphdGlvbiBpbnZvbHZlcyBmZXcgcmV2aXNpb25zCi0jICAgYnV0IHRoZSB3aWtpIGlzIGxhcmdlLgotIwotIyAtIEdpdCByZW5hbWVzIGNvdWxkIGJlIHR1cm5lZCBpbnRvIE1lZGlhV2lraSByZW5hbWVzIChzZWUgVE9ETwotIyAgIGJlbG93KQotIwotIyAtIGxvZ2luL3Bhc3N3b3JkIHN1cHBvcnQgcmVxdWlyZXMgdGhlIHVzZXIgdG8gd3JpdGUgdGhlIHBhc3N3b3JkCi0jICAgY2xlYXJ0ZXh0IGluIGEgZmlsZSAoc2VlIFRPRE8gYmVsb3cpLgotIwotIyAtIE5vIHdheSB0byBpbXBvcnQgIm9uZSBwYWdlLCBhbmQgYWxsIHBhZ2VzIGluY2x1ZGVkIGluIGl0IgotIwotIyAtIE11bHRpcGxlIHJlbW90ZSBNZWRpYVdpa2lzIGhhdmUgbm90IGJlZW4gdmVyeSB3ZWxsIHRlc3RlZC4KLQotdXNlIHN0cmljdDsKLXVzZSBNZWRpYVdpa2k6OkFQSTsKLXVzZSBEYXRlVGltZTo6Rm9ybWF0OjpJU084NjAxOwotdXNlIGVuY29kaW5nICd1dGY4JzsKLQotIyB1c2UgZW5jb2RpbmcgJ3V0ZjgnIGRvZXNuJ3QgY2hhbmdlIFNUREVSUk9SCi0jIGJ1dCB3ZSdyZSBnb2luZyB0byBvdXRwdXQgVVRGLTggZmlsZW5hbWVzIHRvIFNUREVSUgotYmlubW9kZSBTVERFUlIsICI6dXRmOCI7Ci0KLXVzZSBVUkk6OkVzY2FwZTsKLXVzZSB3YXJuaW5nczsKLQotIyBNZWRpYXdpa2kgZmlsZW5hbWVzIGNhbiBjb250YWluIGZvcndhcmQgc2xhc2hlcy4gVGhpcyB2YXJpYWJsZSBkZWNpZGVzIGJ5IHdoaWNoIHBhdHRlcm4gdGhleSBzaG91bGQgYmUgcmVwbGFjZWQKLXVzZSBjb25zdGFudCBTTEFTSF9SRVBMQUNFTUVOVCA9PiAiJTJGIjsKLQotIyBJdCdzIG5vdCBhbHdheXMgcG9zc2libGUgdG8gZGVsZXRlIHBhZ2VzIChtYXkgcmVxdWlyZSBzb21lCi0jIHByaXZpbGVkZ2VzKS4gRGVsZXRlZCBwYWdlcyBhcmUgcmVwbGFjZWQgd2l0aCB0aGlzIGNvbnRlbnQuCi11c2UgY29uc3RhbnQgREVMRVRFRF9DT05URU5UID0+ICJbW0NhdGVnb3J5OkRlbGV0ZWRdXVxuIjsKLQotIyBJdCdzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgZW1wdHkgcGFnZXMuIE5ldyBlbXB0eSBmaWxlcyBpbiBHaXQgYXJlCi0jIHNlbnQgd2l0aCB0aGlzIGNvbnRlbnQgaW5zdGVhZC4KLXVzZSBjb25zdGFudCBFTVBUWV9DT05URU5UID0+ICI8IS0tIGVtcHR5IHBhZ2UgLS0+XG4iOwotCi0jIHVzZWQgdG8gcmVmbGVjdCBmaWxlIGNyZWF0aW9uIG9yIGRlbGV0aW9uIGluIGRpZmYuCi11c2UgY29uc3RhbnQgTlVMTF9TSEExID0+ICIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIjsKLQotbXkgJHJlbW90ZW5hbWUgPSAkQVJHVlswXTsKLW15ICR1cmwgPSAkQVJHVlsxXTsKLQotIyBBY2NlcHQgYm90aCBzcGFjZS1zZXBhcmF0ZWQgYW5kIG11bHRpcGxlIGtleXMgaW4gY29uZmlnIGZpbGUuCi0jIFNwYWNlcyBzaG91bGQgYmUgd3JpdHRlbiBhcyBfIGFueXdheSBiZWNhdXNlIHdlJ2xsIHVzZSBjaG9tcC4KLW15IEB0cmFja2VkX3BhZ2VzID0gc3BsaXQoL1sgXG5dLywgcnVuX2dpdCgiY29uZmlnIC0tZ2V0LWFsbCByZW1vdGUuIi4gJHJlbW90ZW5hbWUgLiIucGFnZXMiKSk7Ci1jaG9tcChAdHJhY2tlZF9wYWdlcyk7Ci0KLSMgSnVzdCBsaWtlIEB0cmFja2VkX3BhZ2VzLCBidXQgZm9yIE1lZGlhV2lraSBjYXRlZ29yaWVzLgotbXkgQHRyYWNrZWRfY2F0ZWdvcmllcyA9IHNwbGl0KC9bIFxuXS8sIHJ1bl9naXQoImNvbmZpZyAtLWdldC1hbGwgcmVtb3RlLiIuICRyZW1vdGVuYW1lIC4iLmNhdGVnb3JpZXMiKSk7Ci1jaG9tcChAdHJhY2tlZF9jYXRlZ29yaWVzKTsKLQotbXkgJHdpa2lfbG9naW4gPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgcmVtb3RlLiIuICRyZW1vdGVuYW1lIC4iLm13TG9naW4iKTsKLSMgVE9ETzogaWRlYWxseSwgdGhpcyBzaG91bGQgYmUgYWJsZSB0byByZWFkIGZyb20ga2V5Ym9hcmQsIGJ1dCB3ZSdyZQotIyBpbnNpZGUgYSByZW1vdGUgaGVscGVyLCBzbyBvdXIgc3RkaW4gaXMgY29ubmVjdCB0byBnaXQsIG5vdCB0byBhCi0jIHRlcm1pbmFsLgotbXkgJHdpa2lfcGFzc3dkID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IHJlbW90ZS4iLiAkcmVtb3RlbmFtZSAuIi5td1Bhc3N3b3JkIik7Ci1teSAkd2lraV9kb21haW4gPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgcmVtb3RlLiIuICRyZW1vdGVuYW1lIC4iLm13RG9tYWluIik7Ci1jaG9tcCgkd2lraV9sb2dpbik7Ci1jaG9tcCgkd2lraV9wYXNzd2QpOwotY2hvbXAoJHdpa2lfZG9tYWluKTsKLQotIyBJbXBvcnQgb25seSBsYXN0IHJldmlzaW9ucyAoYm90aCBmb3IgY2xvbmUgYW5kIGZldGNoKQotbXkgJHNoYWxsb3dfaW1wb3J0ID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IC0tYm9vbCByZW1vdGUuIi4gJHJlbW90ZW5hbWUgLiIuc2hhbGxvdyIpOwotY2hvbXAoJHNoYWxsb3dfaW1wb3J0KTsKLSRzaGFsbG93X2ltcG9ydCA9ICgkc2hhbGxvd19pbXBvcnQgZXEgInRydWUiKTsKLQotIyBEdW1iIHB1c2g6IGRvbid0IHVwZGF0ZSBub3RlcyBhbmQgbWVkaWF3aWtpIHJlZiB0byByZWZsZWN0IHRoZSBsYXN0IHB1c2guCi0jCi0jIENvbmZpZ3VyYWJsZSB3aXRoIG1lZGlhd2lraS5kdW1iUHVzaCwgb3IgcGVyLXJlbW90ZSB3aXRoCi0jIHJlbW90ZS48cmVtb3RlbmFtZT4uZHVtYlB1c2guCi0jCi0jIFRoaXMgbWVhbnMgdGhlIHVzZXIgd2lsbCBoYXZlIHRvIHJlLWltcG9ydCB0aGUganVzdC1wdXNoZWQKLSMgcmV2aXNpb25zLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBtZWFucyB0aGF0IHRoZSBHaXQgcmV2aXNpb25zCi0jIGNvcnJlc3BvbmRpbmcgdG8gTWVkaWFXaWtpIHJldmlzaW9ucyBhcmUgYWxsIGltcG9ydGVkIGZyb20gdGhlIHdpa2ksCi0jIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGV5IHdlcmUgaW5pdGlhbGx5IGNyZWF0ZWQgaW4gR2l0IG9yIGZyb20gdGhlCi0jIHdlYiBpbnRlcmZhY2UsIGhlbmNlIGFsbCB1c2VycyB3aWxsIGdldCB0aGUgc2FtZSBoaXN0b3J5IChpLmUuIGlmCi0jIHRoZSBwdXNoIGZyb20gR2l0IHRvIE1lZGlhV2lraSBsb3NlcyBzb21lIGluZm9ybWF0aW9uLCBldmVyeWJvZHkKLSMgd2lsbCBnZXQgdGhlIGhpc3Rvcnkgd2l0aCBpbmZvcm1hdGlvbiBsb3N0KS4gSWYgdGhlIGltcG9ydCBpcwotIyBkZXRlcm1pbmlzdGljLCB0aGlzIG1lYW5zIGV2ZXJ5Ym9keSBnZXRzIHRoZSBzYW1lIHNoYTEgZm9yIGVhY2gKLSMgTWVkaWFXaWtpIHJldmlzaW9uLgotbXkgJGR1bWJfcHVzaCA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCAtLWJvb2wgcmVtb3RlLiRyZW1vdGVuYW1lLmR1bWJQdXNoIik7Ci11bmxlc3MgKCRkdW1iX3B1c2gpIHsKLQkkZHVtYl9wdXNoID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IC0tYm9vbCBtZWRpYXdpa2kuZHVtYlB1c2giKTsKLX0KLWNob21wKCRkdW1iX3B1c2gpOwotJGR1bWJfcHVzaCA9ICgkZHVtYl9wdXNoIGVxICJ0cnVlIik7Ci0KLW15ICR3aWtpX25hbWUgPSAkdXJsOwotJHdpa2lfbmFtZSA9fiBzL1teXC9dKjpcL1wvLy87Ci0jIElmIFVSTCBpcyBsaWtlIGh0dHA6Ly91c2VyOnBhc3N3b3JkQGV4YW1wbGUuY29tLywgd2UgY2xlYXJseSBkb24ndAotIyB3YW50IHRoZSBwYXNzd29yZCBpbiAkd2lraV9uYW1lLiBXaGlsZSB3ZSdyZSB0aGVyZSwgYWxzbyByZW1vdmUgdXNlcgotIyBhbmQgJ0AnIHNpZ24sIHRvIGF2b2lkIGF1dGhvciBsaWtlIE1XVXNlckBIVFRQVXNlckBob3N0LmNvbQotJHdpa2lfbmFtZSA9fiBzL14uKkAvLzsKLQotIyBDb21tYW5kcyBwYXJzZXIKLW15ICRlbnRyeTsKLW15IEBjbWQ7Ci13aGlsZSAoPFNURElOPikgewotCWNob21wOwotCUBjbWQgPSBzcGxpdCgvIC8pOwotCWlmIChkZWZpbmVkKCRjbWRbMF0pKSB7Ci0JCSMgTGluZSBub3QgYmxhbmsKLQkJaWYgKCRjbWRbMF0gZXEgImNhcGFiaWxpdGllcyIpIHsKLQkJCWRpZSgiVG9vIG1hbnkgYXJndW1lbnRzIGZvciBjYXBhYmlsaXRpZXMiKSB1bmxlc3MgKCFkZWZpbmVkKCRjbWRbMV0pKTsKLQkJCW13X2NhcGFiaWxpdGllcygpOwotCQl9IGVsc2lmICgkY21kWzBdIGVxICJsaXN0IikgewotCQkJZGllKCJUb28gbWFueSBhcmd1bWVudHMgZm9yIGxpc3QiKSB1bmxlc3MgKCFkZWZpbmVkKCRjbWRbMl0pKTsKLQkJCW13X2xpc3QoJGNtZFsxXSk7Ci0JCX0gZWxzaWYgKCRjbWRbMF0gZXEgImltcG9ydCIpIHsKLQkJCWRpZSgiSW52YWxpZCBhcmd1bWVudHMgZm9yIGltcG9ydCIpIHVubGVzcyAoJGNtZFsxXSBuZSAiIiAmJiAhZGVmaW5lZCgkY21kWzJdKSk7Ci0JCQltd19pbXBvcnQoJGNtZFsxXSk7Ci0JCX0gZWxzaWYgKCRjbWRbMF0gZXEgIm9wdGlvbiIpIHsKLQkJCWRpZSgiVG9vIG1hbnkgYXJndW1lbnRzIGZvciBvcHRpb24iKSB1bmxlc3MgKCRjbWRbMV0gbmUgIiIgJiYgJGNtZFsyXSBuZSAiIiAmJiAhZGVmaW5lZCgkY21kWzNdKSk7Ci0JCQltd19vcHRpb24oJGNtZFsxXSwkY21kWzJdKTsKLQkJfSBlbHNpZiAoJGNtZFswXSBlcSAicHVzaCIpIHsKLQkJCW13X3B1c2goJGNtZFsxXSk7Ci0JCX0gZWxzZSB7Ci0JCQlwcmludCBTVERFUlIgIlVua25vd24gY29tbWFuZC4gQWJvcnRpbmcuLi5cbiI7Ci0JCQlsYXN0OwotCQl9Ci0JfSBlbHNlIHsKLQkJIyBibGFuayBsaW5lOiB3ZSBzaG91bGQgdGVybWluYXRlCi0JCWxhc3Q7Ci0JfQotCi0JQkVHSU4geyAkfCA9IDEgfSAjIGZsdXNoIFNURE9VVCwgdG8gbWFrZSBzdXJlIHRoZSBwcmV2aW91cwotCQkJICMgY29tbWFuZCBpcyBmdWxseSBwcm9jZXNzZWQuCi19Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEZ1bmN0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBNZWRpYVdpa2kgQVBJIGluc3RhbmNlLCBjcmVhdGVkIGxhemlseS4KLW15ICRtZWRpYXdpa2k7Ci0KLXN1YiBtd19jb25uZWN0X21heWJlIHsKLQlpZiAoJG1lZGlhd2lraSkgewotCSAgICByZXR1cm47Ci0JfQotCSRtZWRpYXdpa2kgPSBNZWRpYVdpa2k6OkFQSS0+bmV3OwotCSRtZWRpYXdpa2ktPntjb25maWd9LT57YXBpX3VybH0gPSAiJHVybC9hcGkucGhwIjsKLQlpZiAoJHdpa2lfbG9naW4pIHsKLQkJaWYgKCEkbWVkaWF3aWtpLT5sb2dpbih7Ci0JCQlsZ25hbWUgPT4gJHdpa2lfbG9naW4sCi0JCQlsZ3Bhc3N3b3JkID0+ICR3aWtpX3Bhc3N3ZCwKLQkJCWxnZG9tYWluID0+ICR3aWtpX2RvbWFpbiwKLQkJfSkpIHsKLQkJCXByaW50IFNUREVSUiAiRmFpbGVkIHRvIGxvZyBpbiBtZWRpYXdpa2kgdXNlciBcIiR3aWtpX2xvZ2luXCIgb24gJHVybFxuIjsKLQkJCXByaW50IFNUREVSUiAiKGVycm9yICIgLgotCQkJICAgICRtZWRpYXdpa2ktPntlcnJvcn0tPntjb2RlfSAuICc6ICcgLgotCQkJICAgICRtZWRpYXdpa2ktPntlcnJvcn0tPntkZXRhaWxzfSAuICIpXG4iOwotCQkJZXhpdCAxOwotCQl9IGVsc2UgewotCQkJcHJpbnQgU1RERVJSICJMb2dnZWQgaW4gd2l0aCB1c2VyIFwiJHdpa2lfbG9naW5cIi5cbiI7Ci0JCX0KLQl9Ci19Ci0KLXN1YiBnZXRfbXdfZmlyc3RfcGFnZXMgewotCW15ICRzb21lX3BhZ2VzID0gc2hpZnQ7Ci0JbXkgQHNvbWVfcGFnZXMgPSBAeyRzb21lX3BhZ2VzfTsKLQotCW15ICRwYWdlcyA9IHNoaWZ0OwotCi0JIyBwYXR0ZXJuICdwYWdlMXxwYWdlMnwuLi4nIHJlcXVpcmVkIGJ5IHRoZSBBUEkKLQlteSAkdGl0bGVzID0gam9pbignfCcsIEBzb21lX3BhZ2VzKTsKLQotCW15ICRtd19wYWdlcyA9ICRtZWRpYXdpa2ktPmFwaSh7Ci0JCWFjdGlvbiA9PiAncXVlcnknLAotCQl0aXRsZXMgPT4gJHRpdGxlcywKLQl9KTsKLQlpZiAoIWRlZmluZWQoJG13X3BhZ2VzKSkgewotCQlwcmludCBTVERFUlIgImZhdGFsOiBjb3VsZCBub3QgcXVlcnkgdGhlIGxpc3Qgb2Ygd2lraSBwYWdlcy5cbiI7Ci0JCXByaW50IFNUREVSUiAiZmF0YWw6ICckdXJsJyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSBtZWRpYXdpa2lcbiI7Ci0JCXByaW50IFNUREVSUiAiZmF0YWw6IG1ha2Ugc3VyZSAnJHVybC9hcGkucGhwJyBpcyBhIHZhbGlkIHBhZ2UuXG4iOwotCQlleGl0IDE7Ci0JfQotCXdoaWxlIChteSAoJGlkLCAkcGFnZSkgPSBlYWNoKCV7JG13X3BhZ2VzLT57cXVlcnl9LT57cGFnZXN9fSkpIHsKLQkJaWYgKCRpZCA8IDApIHsKLQkJCXByaW50IFNUREVSUiAiV2FybmluZzogcGFnZSAkcGFnZS0+e3RpdGxlfSBub3QgZm91bmQgb24gd2lraVxuIjsKLQkJfSBlbHNlIHsKLQkJCSRwYWdlcy0+eyRwYWdlLT57dGl0bGV9fSA9ICRwYWdlOwotCQl9Ci0JfQotfQotCi1zdWIgZ2V0X213X3BhZ2VzIHsKLQltd19jb25uZWN0X21heWJlKCk7Ci0KLQlteSAlcGFnZXM7ICMgaGFzaCBvbiBwYWdlIHRpdGxlcyB0byBhdm9pZCBkdXBsaWNhdGVzCi0JbXkgJHVzZXJfZGVmaW5lZDsKLQlpZiAoQHRyYWNrZWRfcGFnZXMpIHsKLQkJJHVzZXJfZGVmaW5lZCA9IDE7Ci0JCSMgVGhlIHVzZXIgcHJvdmlkZWQgYSBsaXN0IG9mIHBhZ2VzIHRpdGxlcywgYnV0IHdlCi0JCSMgc3RpbGwgbmVlZCB0byBxdWVyeSB0aGUgQVBJIHRvIGdldCB0aGUgcGFnZSBJRHMuCi0KLQkJbXkgQHNvbWVfcGFnZXMgPSBAdHJhY2tlZF9wYWdlczsKLQkJd2hpbGUgKEBzb21lX3BhZ2VzKSB7Ci0JCQlteSAkbGFzdCA9IDUwOwotCQkJaWYgKCQjc29tZV9wYWdlcyA8ICRsYXN0KSB7Ci0JCQkJJGxhc3QgPSAkI3NvbWVfcGFnZXM7Ci0JCQl9Ci0JCQlteSBAc2xpY2UgPSBAc29tZV9wYWdlc1swLi4kbGFzdF07Ci0JCQlnZXRfbXdfZmlyc3RfcGFnZXMoXEBzbGljZSwgXCVwYWdlcyk7Ci0JCQlAc29tZV9wYWdlcyA9IEBzb21lX3BhZ2VzWzUxLi4kI3NvbWVfcGFnZXNdOwotCQl9Ci0JfQotCWlmIChAdHJhY2tlZF9jYXRlZ29yaWVzKSB7Ci0JCSR1c2VyX2RlZmluZWQgPSAxOwotCQlmb3JlYWNoIG15ICRjYXRlZ29yeSAoQHRyYWNrZWRfY2F0ZWdvcmllcykgewotCQkJaWYgKGluZGV4KCRjYXRlZ29yeSwgJzonKSA8IDApIHsKLQkJCQkjIE1lZGlhd2lraSByZXF1aXJlcyB0aGUgQ2F0ZWdvcnkKLQkJCQkjIHByZWZpeCwgYnV0IGxldCdzIG5vdCBmb3JjZSB0aGUgdXNlcgotCQkJCSMgdG8gc3BlY2lmeSBpdC4KLQkJCQkkY2F0ZWdvcnkgPSAiQ2F0ZWdvcnk6IiAuICRjYXRlZ29yeTsKLQkJCX0KLQkJCW15ICRtd19wYWdlcyA9ICRtZWRpYXdpa2ktPmxpc3QoIHsKLQkJCQlhY3Rpb24gPT4gJ3F1ZXJ5JywKLQkJCQlsaXN0ID0+ICdjYXRlZ29yeW1lbWJlcnMnLAotCQkJCWNtdGl0bGUgPT4gJGNhdGVnb3J5LAotCQkJCWNtbGltaXQgPT4gJ21heCcgfSApCi0JCQkgICAgfHwgZGllICRtZWRpYXdpa2ktPntlcnJvcn0tPntjb2RlfSAuICc6ICcgLiAkbWVkaWF3aWtpLT57ZXJyb3J9LT57ZGV0YWlsc307Ci0JCQlmb3JlYWNoIG15ICRwYWdlIChAeyRtd19wYWdlc30pIHsKLQkJCQkkcGFnZXN7JHBhZ2UtPnt0aXRsZX19ID0gJHBhZ2U7Ci0JCQl9Ci0JCX0KLQl9Ci0JaWYgKCEkdXNlcl9kZWZpbmVkKSB7Ci0JCSMgTm8gdXNlci1wcm92aWRlZCBsaXN0LCBnZXQgdGhlIGxpc3Qgb2YgcGFnZXMgZnJvbQotCQkjIHRoZSBBUEkuCi0JCW15ICRtd19wYWdlcyA9ICRtZWRpYXdpa2ktPmxpc3QoewotCQkJYWN0aW9uID0+ICdxdWVyeScsCi0JCQlsaXN0ID0+ICdhbGxwYWdlcycsCi0JCQlhcGxpbWl0ID0+IDUwMCwKLQkJfSk7Ci0JCWlmICghZGVmaW5lZCgkbXdfcGFnZXMpKSB7Ci0JCQlwcmludCBTVERFUlIgImZhdGFsOiBjb3VsZCBub3QgZ2V0IHRoZSBsaXN0IG9mIHdpa2kgcGFnZXMuXG4iOwotCQkJcHJpbnQgU1RERVJSICJmYXRhbDogJyR1cmwnIGRvZXMgbm90IGFwcGVhciB0byBiZSBhIG1lZGlhd2lraVxuIjsKLQkJCXByaW50IFNUREVSUiAiZmF0YWw6IG1ha2Ugc3VyZSAnJHVybC9hcGkucGhwJyBpcyBhIHZhbGlkIHBhZ2UuXG4iOwotCQkJZXhpdCAxOwotCQl9Ci0JCWZvcmVhY2ggbXkgJHBhZ2UgKEB7JG13X3BhZ2VzfSkgewotCQkJJHBhZ2VzeyRwYWdlLT57dGl0bGV9fSA9ICRwYWdlOwotCQl9Ci0JfQotCXJldHVybiB2YWx1ZXMoJXBhZ2VzKTsKLX0KLQotc3ViIHJ1bl9naXQgewotCW9wZW4obXkgJGdpdCwgIi18OmVuY29kaW5nKFVURi04KSIsICJnaXQgIiAuICRfWzBdKTsKLQlteSAkcmVzID0gZG8geyBsb2NhbCAkLzsgPCRnaXQ+IH07Ci0JY2xvc2UoJGdpdCk7Ci0KLQlyZXR1cm4gJHJlczsKLX0KLQotCi1zdWIgZ2V0X2xhc3RfbG9jYWxfcmV2aXNpb24gewotCSMgR2V0IG5vdGUgcmVnYXJkaW5nIGxhc3QgbWVkaWF3aWtpIHJldmlzaW9uCi0JbXkgJG5vdGUgPSBydW5fZ2l0KCJub3RlcyAtLXJlZj0kcmVtb3RlbmFtZS9tZWRpYXdpa2kgc2hvdyByZWZzL21lZGlhd2lraS8kcmVtb3RlbmFtZS9tYXN0ZXIgMj4vZGV2L251bGwiKTsKLQlteSBAbm90ZV9pbmZvID0gc3BsaXQoLyAvLCAkbm90ZSk7Ci0KLQlteSAkbGFzdHJldmlzaW9uX251bWJlcjsKLQlpZiAoIShkZWZpbmVkKCRub3RlX2luZm9bMF0pICYmICRub3RlX2luZm9bMF0gZXEgIm1lZGlhd2lraV9yZXZpc2lvbjoiKSkgewotCQlwcmludCBTVERFUlIgIk5vIHByZXZpb3VzIG1lZGlhd2lraSByZXZpc2lvbiBmb3VuZCI7Ci0JCSRsYXN0cmV2aXNpb25fbnVtYmVyID0gMDsKLQl9IGVsc2UgewotCQkjIE5vdGVzIGFyZSBmb3JtYXR0ZWQgOiBtZWRpYXdpa2lfcmV2aXNpb246ICNudW1iZXIKLQkJJGxhc3RyZXZpc2lvbl9udW1iZXIgPSAkbm90ZV9pbmZvWzFdOwotCQljaG9tcCgkbGFzdHJldmlzaW9uX251bWJlcik7Ci0JCXByaW50IFNUREVSUiAiTGFzdCBsb2NhbCBtZWRpYXdpa2kgcmV2aXNpb24gZm91bmQgaXMgJGxhc3RyZXZpc2lvbl9udW1iZXIiOwotCX0KLQlyZXR1cm4gJGxhc3RyZXZpc2lvbl9udW1iZXI7Ci19Ci0KLSMgUmVtZW1iZXIgdGhlIHRpbWVzdGFtcCBjb3JyZXNwb25kaW5nIHRvIGEgcmV2aXNpb24gaWQuCi1teSAlYmFzZXRpbWVzdGFtcHM7Ci0KLXN1YiBnZXRfbGFzdF9yZW1vdGVfcmV2aXNpb24gewotCW13X2Nvbm5lY3RfbWF5YmUoKTsKLQotCW15IEBwYWdlcyA9IGdldF9td19wYWdlcygpOwotCi0JbXkgJG1heF9yZXZfbnVtID0gMDsKLQotCWZvcmVhY2ggbXkgJHBhZ2UgKEBwYWdlcykgewotCQlteSAkaWQgPSAkcGFnZS0+e3BhZ2VpZH07Ci0KLQkJbXkgJHF1ZXJ5ID0gewotCQkJYWN0aW9uID0+ICdxdWVyeScsCi0JCQlwcm9wID0+ICdyZXZpc2lvbnMnLAotCQkJcnZwcm9wID0+ICdpZHN8dGltZXN0YW1wJywKLQkJCXBhZ2VpZHMgPT4gJGlkLAotCQl9OwotCi0JCW15ICRyZXN1bHQgPSAkbWVkaWF3aWtpLT5hcGkoJHF1ZXJ5KTsKLQotCQlteSAkbGFzdHJldiA9IHBvcChAeyRyZXN1bHQtPntxdWVyeX0tPntwYWdlc30tPnskaWR9LT57cmV2aXNpb25zfX0pOwotCi0JCSRiYXNldGltZXN0YW1wc3skbGFzdHJldi0+e3JldmlkfX0gPSAkbGFzdHJldi0+e3RpbWVzdGFtcH07Ci0KLQkJJG1heF9yZXZfbnVtID0gKCRsYXN0cmV2LT57cmV2aWR9ID4gJG1heF9yZXZfbnVtID8gJGxhc3RyZXYtPntyZXZpZH0gOiAkbWF4X3Jldl9udW0pOwotCX0KLQotCXByaW50IFNUREVSUiAiTGFzdCByZW1vdGUgcmV2aXNpb24gZm91bmQgaXMgJG1heF9yZXZfbnVtLlxuIjsKLQlyZXR1cm4gJG1heF9yZXZfbnVtOwotfQotCi0jIENsZWFuIGNvbnRlbnQgYmVmb3JlIHNlbmRpbmcgaXQgdG8gTWVkaWFXaWtpCi1zdWIgbWVkaWF3aWtpX2NsZWFuIHsKLQlteSAkc3RyaW5nID0gc2hpZnQ7Ci0JbXkgJHBhZ2VfY3JlYXRlZCA9IHNoaWZ0OwotCSMgTWVkaWF3aWtpIGRvZXMgbm90IGFsbG93IGJsYW5rIHNwYWNlIGF0IHRoZSBlbmQgb2YgYSBwYWdlIGFuZCBlbmRzIHdpdGggYSBzaW5nbGUgXG4uCi0JIyBUaGlzIGZ1bmN0aW9uIHJpZ2h0IHRyaW1zIGEgc3RyaW5nIGFuZCBhZGRzIGEgXG4gYXQgdGhlIGVuZCB0byBmb2xsb3cgdGhpcyBydWxlCi0JJHN0cmluZyA9fiBzL1xzKyQvLzsKLQlpZiAoJHN0cmluZyBlcSAiIiAmJiAkcGFnZV9jcmVhdGVkKSB7Ci0JCSMgQ3JlYXRpbmcgZW1wdHkgcGFnZXMgaXMgZm9yYmlkZGVuLgotCQkkc3RyaW5nID0gRU1QVFlfQ09OVEVOVDsKLQl9Ci0JcmV0dXJuICRzdHJpbmcuIlxuIjsKLX0KLQotIyBGaWx0ZXIgYXBwbGllZCBvbiBNZWRpYVdpa2kgZGF0YSBiZWZvcmUgYWRkaW5nIHRoZW0gdG8gR2l0Ci1zdWIgbWVkaWF3aWtpX3NtdWRnZSB7Ci0JbXkgJHN0cmluZyA9IHNoaWZ0OwotCWlmICgkc3RyaW5nIGVxIEVNUFRZX0NPTlRFTlQpIHsKLQkJJHN0cmluZyA9ICIiOwotCX0KLQkjIFRoaXMgXG4gaXMgaW1wb3J0YW50LiBUaGlzIGlzIGR1ZSB0byBtZWRpYXdpa2kncyB3YXkgdG8gaGFuZGxlIGVuZCBvZiBmaWxlcy4KLQlyZXR1cm4gJHN0cmluZy4iXG4iOwotfQotCi1zdWIgbWVkaWF3aWtpX2NsZWFuX2ZpbGVuYW1lIHsKLQlteSAkZmlsZW5hbWUgPSBzaGlmdDsKLQkkZmlsZW5hbWUgPX4gcy9Ae1tTTEFTSF9SRVBMQUNFTUVOVF19L1wvL2c7Ci0JIyBbLCBdLCB8LCB7LCBhbmQgfSBhcmUgZm9yYmlkZGVuIGJ5IE1lZGlhV2lraSwgZXZlbiBVUkwtZW5jb2RlZC4KLQkjIERvIGEgdmFyaWFudCBvZiBVUkwtZW5jb2RpbmcsIGkuZS4gbG9va3MgbGlrZSBVUkwtZW5jb2RpbmcsCi0JIyBidXQgd2l0aCBfIGFkZGVkIHRvIHByZXZlbnQgTWVkaWFXaWtpIGZyb20gdGhpbmtpbmcgdGhpcyBpcwotCSMgYW4gYWN0dWFsIHNwZWNpYWwgY2hhcmFjdGVyLgotCSRmaWxlbmFtZSA9fiBzL1tcW1xdXHtcfVx8XS9zcHJpbnRmKCJfJSVfJXgiLCBvcmQoJCYpKS9nZTsKLQkjIElmIHdlIHVzZSB0aGUgdXJpIGVzY2FwZSBiZWZvcmUKLQkjIHdlIHNob3VsZCB1bmVzY2FwZSBoZXJlLCBiZWZvcmUgYW55dGhpbmcKLQotCXJldHVybiAkZmlsZW5hbWU7Ci19Ci0KLXN1YiBtZWRpYXdpa2lfc211ZGdlX2ZpbGVuYW1lIHsKLQlteSAkZmlsZW5hbWUgPSBzaGlmdDsKLQkkZmlsZW5hbWUgPX4gcy9cLy9Ae1tTTEFTSF9SRVBMQUNFTUVOVF19L2c7Ci0JJGZpbGVuYW1lID1+IHMvIC9fL2c7Ci0JIyBEZWNvZGUgZm9yYmlkZGVuIGNoYXJhY3RlcnMgZW5jb2RlZCBpbiBtZWRpYXdpa2lfY2xlYW5fZmlsZW5hbWUKLQkkZmlsZW5hbWUgPX4gcy9fJV8oWzAtOWEtZkEtRl1bMC05YS1mQS1GXSkvc3ByaW50ZigiJWMiLCBoZXgoJDEpKS9nZTsKLQlyZXR1cm4gJGZpbGVuYW1lOwotfQotCi1zdWIgbGl0ZXJhbF9kYXRhIHsKLQlteSAoJGNvbnRlbnQpID0gQF87Ci0JcHJpbnQgU1RET1VUICJkYXRhICIsIGJ5dGVzOjpsZW5ndGgoJGNvbnRlbnQpLCAiXG4iLCAkY29udGVudDsKLX0KLQotc3ViIG13X2NhcGFiaWxpdGllcyB7Ci0JIyBSZXZpc2lvbnMgYXJlIGltcG9ydGVkIHRvIHRoZSBwcml2YXRlIG5hbWVzcGFjZQotCSMgcmVmcy9tZWRpYXdpa2kvJHJlbW90ZW5hbWUvIGJ5IHRoZSBoZWxwZXIgYW5kIGZldGNoZWQgaW50bwotCSMgcmVmcy9yZW1vdGVzLyRyZW1vdGVuYW1lIGxhdGVyIGJ5IGZldGNoLgotCXByaW50IFNURE9VVCAicmVmc3BlYyByZWZzL2hlYWRzLyo6cmVmcy9tZWRpYXdpa2kvJHJlbW90ZW5hbWUvKlxuIjsKLQlwcmludCBTVERPVVQgImltcG9ydFxuIjsKLQlwcmludCBTVERPVVQgImxpc3RcbiI7Ci0JcHJpbnQgU1RET1VUICJwdXNoXG4iOwotCXByaW50IFNURE9VVCAiXG4iOwotfQotCi1zdWIgbXdfbGlzdCB7Ci0JIyBNZWRpYVdpa2kgZG8gbm90IGhhdmUgYnJhbmNoZXMsIHdlIGNvbnNpZGVyIG9uZSBicmFuY2ggYXJiaXRyYXJpbHkKLQkjIGNhbGxlZCBtYXN0ZXIsIGFuZCBIRUFEIHBvaW50aW5nIHRvIGl0LgotCXByaW50IFNURE9VVCAiPyByZWZzL2hlYWRzL21hc3RlclxuIjsKLQlwcmludCBTVERPVVQgIlxAcmVmcy9oZWFkcy9tYXN0ZXIgSEVBRFxuIjsKLQlwcmludCBTVERPVVQgIlxuIjsKLX0KLQotc3ViIG13X29wdGlvbiB7Ci0JcHJpbnQgU1RERVJSICJyZW1vdGUtaGVscGVyIGNvbW1hbmQgJ29wdGlvbiAkX1swXScgbm90IHlldCBpbXBsZW1lbnRlZFxuIjsKLQlwcmludCBTVERPVVQgInVuc3VwcG9ydGVkXG4iOwotfQotCi1zdWIgZmV0Y2hfbXdfcmV2aXNpb25zX2Zvcl9wYWdlIHsKLQlteSAkcGFnZSA9IHNoaWZ0OwotCW15ICRpZCA9IHNoaWZ0OwotCW15ICRmZXRjaF9mcm9tID0gc2hpZnQ7Ci0JbXkgQHBhZ2VfcmV2cyA9ICgpOwotCW15ICRxdWVyeSA9IHsKLQkJYWN0aW9uID0+ICdxdWVyeScsCi0JCXByb3AgPT4gJ3JldmlzaW9ucycsCi0JCXJ2cHJvcCA9PiAnaWRzJywKLQkJcnZkaXIgPT4gJ25ld2VyJywKLQkJcnZzdGFydGlkID0+ICRmZXRjaF9mcm9tLAotCQlydmxpbWl0ID0+IDUwMCwKLQkJcGFnZWlkcyA9PiAkaWQsCi0JfTsKLQotCW15ICRyZXZudW0gPSAwOwotCSMgR2V0IDUwMCByZXZpc2lvbnMgYXQgYSB0aW1lIGR1ZSB0byB0aGUgbWVkaWF3aWtpIGFwaSBsaW1pdAotCXdoaWxlICgxKSB7Ci0JCW15ICRyZXN1bHQgPSAkbWVkaWF3aWtpLT5hcGkoJHF1ZXJ5KTsKLQotCQkjIFBhcnNlIGVhY2ggb2YgdGhvc2UgNTAwIHJldmlzaW9ucwotCQlmb3JlYWNoIG15ICRyZXZpc2lvbiAoQHskcmVzdWx0LT57cXVlcnl9LT57cGFnZXN9LT57JGlkfS0+e3JldmlzaW9uc319KSB7Ci0JCQlteSAkcGFnZV9yZXZfaWRzOwotCQkJJHBhZ2VfcmV2X2lkcy0+e3BhZ2VpZH0gPSAkcGFnZS0+e3BhZ2VpZH07Ci0JCQkkcGFnZV9yZXZfaWRzLT57cmV2aWR9ID0gJHJldmlzaW9uLT57cmV2aWR9OwotCQkJcHVzaChAcGFnZV9yZXZzLCAkcGFnZV9yZXZfaWRzKTsKLQkJCSRyZXZudW0rKzsKLQkJfQotCQlsYXN0IHVubGVzcyAkcmVzdWx0LT57J3F1ZXJ5LWNvbnRpbnVlJ307Ci0JCSRxdWVyeS0+e3J2c3RhcnRpZH0gPSAkcmVzdWx0LT57J3F1ZXJ5LWNvbnRpbnVlJ30tPntyZXZpc2lvbnN9LT57cnZzdGFydGlkfTsKLQl9Ci0JaWYgKCRzaGFsbG93X2ltcG9ydCAmJiBAcGFnZV9yZXZzKSB7Ci0JCXByaW50IFNUREVSUiAiICBGb3VuZCAxIHJldmlzaW9uIChzaGFsbG93IGltcG9ydCkuXG4iOwotCQlAcGFnZV9yZXZzID0gc29ydCB7JGItPntyZXZpZH0gPD0+ICRhLT57cmV2aWR9fSAoQHBhZ2VfcmV2cyk7Ci0JCXJldHVybiAkcGFnZV9yZXZzWzBdOwotCX0KLQlwcmludCBTVERFUlIgIiAgRm91bmQgIiwgJHJldm51bSwgIiByZXZpc2lvbihzKS5cbiI7Ci0JcmV0dXJuIEBwYWdlX3JldnM7Ci19Ci0KLXN1YiBmZXRjaF9td19yZXZpc2lvbnMgewotCW15ICRwYWdlcyA9IHNoaWZ0OyBteSBAcGFnZXMgPSBAeyRwYWdlc307Ci0JbXkgJGZldGNoX2Zyb20gPSBzaGlmdDsKLQotCW15IEByZXZpc2lvbnMgPSAoKTsKLQlteSAkbiA9IDE7Ci0JZm9yZWFjaCBteSAkcGFnZSAoQHBhZ2VzKSB7Ci0JCW15ICRpZCA9ICRwYWdlLT57cGFnZWlkfTsKLQotCQlwcmludCBTVERFUlIgInBhZ2UgJG4vIiwgc2NhbGFyKEBwYWdlcyksICI6ICIuICRwYWdlLT57dGl0bGV9IC4iXG4iOwotCQkkbisrOwotCQlteSBAcGFnZV9yZXZzID0gZmV0Y2hfbXdfcmV2aXNpb25zX2Zvcl9wYWdlKCRwYWdlLCAkaWQsICRmZXRjaF9mcm9tKTsKLQkJQHJldmlzaW9ucyA9IChAcGFnZV9yZXZzLCBAcmV2aXNpb25zKTsKLQl9Ci0KLQlyZXR1cm4gKCRuLCBAcmV2aXNpb25zKTsKLX0KLQotc3ViIGltcG9ydF9maWxlX3JldmlzaW9uIHsKLQlteSAkY29tbWl0ID0gc2hpZnQ7Ci0JbXkgJWNvbW1pdCA9ICV7JGNvbW1pdH07Ci0JbXkgJGZ1bGxfaW1wb3J0ID0gc2hpZnQ7Ci0JbXkgJG4gPSBzaGlmdDsKLQotCW15ICR0aXRsZSA9ICRjb21taXR7dGl0bGV9OwotCW15ICRjb21tZW50ID0gJGNvbW1pdHtjb21tZW50fTsKLQlteSAkY29udGVudCA9ICRjb21taXR7Y29udGVudH07Ci0JbXkgJGF1dGhvciA9ICRjb21taXR7YXV0aG9yfTsKLQlteSAkZGF0ZSA9ICRjb21taXR7ZGF0ZX07Ci0KLQlwcmludCBTVERPVVQgImNvbW1pdCByZWZzL21lZGlhd2lraS8kcmVtb3RlbmFtZS9tYXN0ZXJcbiI7Ci0JcHJpbnQgU1RET1VUICJtYXJrIDokblxuIjsKLQlwcmludCBTVERPVVQgImNvbW1pdHRlciAkYXV0aG9yIDwkYXV0aG9yXEAkd2lraV9uYW1lPiAiLCAkZGF0ZS0+ZXBvY2gsICIgKzAwMDBcbiI7Ci0JbGl0ZXJhbF9kYXRhKCRjb21tZW50KTsKLQotCSMgSWYgaXQncyBub3QgYSBjbG9uZSwgd2UgbmVlZCB0byBrbm93IHdoZXJlIHRvIHN0YXJ0IGZyb20KLQlpZiAoISRmdWxsX2ltcG9ydCAmJiAkbiA9PSAxKSB7Ci0JCXByaW50IFNURE9VVCAiZnJvbSByZWZzL21lZGlhd2lraS8kcmVtb3RlbmFtZS9tYXN0ZXJeMFxuIjsKLQl9Ci0JaWYgKCRjb250ZW50IG5lIERFTEVURURfQ09OVEVOVCkgewotCQlwcmludCBTVERPVVQgIk0gNjQ0IGlubGluZSAkdGl0bGUubXdcbiI7Ci0JCWxpdGVyYWxfZGF0YSgkY29udGVudCk7Ci0JCXByaW50IFNURE9VVCAiXG5cbiI7Ci0JfSBlbHNlIHsKLQkJcHJpbnQgU1RET1VUICJEICR0aXRsZS5td1xuIjsKLQl9Ci0KLQkjIG1lZGlhd2lraSByZXZpc2lvbiBudW1iZXIgaW4gdGhlIGdpdCBub3RlCi0JaWYgKCRmdWxsX2ltcG9ydCAmJiAkbiA9PSAxKSB7Ci0JCXByaW50IFNURE9VVCAicmVzZXQgcmVmcy9ub3Rlcy8kcmVtb3RlbmFtZS9tZWRpYXdpa2lcbiI7Ci0JfQotCXByaW50IFNURE9VVCAiY29tbWl0IHJlZnMvbm90ZXMvJHJlbW90ZW5hbWUvbWVkaWF3aWtpXG4iOwotCXByaW50IFNURE9VVCAiY29tbWl0dGVyICRhdXRob3IgPCRhdXRob3JcQCR3aWtpX25hbWU+ICIsICRkYXRlLT5lcG9jaCwgIiArMDAwMFxuIjsKLQlsaXRlcmFsX2RhdGEoIk5vdGUgYWRkZWQgYnkgZ2l0LW1lZGlhd2lraSBkdXJpbmcgaW1wb3J0Iik7Ci0JaWYgKCEkZnVsbF9pbXBvcnQgJiYgJG4gPT0gMSkgewotCQlwcmludCBTVERPVVQgImZyb20gcmVmcy9ub3Rlcy8kcmVtb3RlbmFtZS9tZWRpYXdpa2leMFxuIjsKLQl9Ci0JcHJpbnQgU1RET1VUICJOIGlubGluZSA6JG5cbiI7Ci0JbGl0ZXJhbF9kYXRhKCJtZWRpYXdpa2lfcmV2aXNpb246ICIgLiAkY29tbWl0e213X3JldmlzaW9ufSk7Ci0JcHJpbnQgU1RET1VUICJcblxuIjsKLX0KLQotIyBwYXJzZSBhIHNlcXVlbmNlIG9mCi0jIDxjbWQ+IDxhcmcxPgotIyA8Y21kPiA8YXJnMj4KLSMgXG4KLSMgKGxpa2UgYmF0Y2ggc2VxdWVuY2Ugb2YgaW1wb3J0IGFuZCBzZXF1ZW5jZSBvZiBwdXNoIHN0YXRlbWVudHMpCi1zdWIgZ2V0X21vcmVfcmVmcyB7Ci0JbXkgJGNtZCA9IHNoaWZ0OwotCW15IEByZWZzOwotCXdoaWxlICgxKSB7Ci0JCW15ICRsaW5lID0gPFNURElOPjsKLQkJaWYgKCRsaW5lID1+IG0vXiRjbWQgKC4qKSQvKSB7Ci0JCQlwdXNoKEByZWZzLCAkMSk7Ci0JCX0gZWxzaWYgKCRsaW5lIGVxICJcbiIpIHsKLQkJCXJldHVybiBAcmVmczsKLQkJfSBlbHNlIHsKLQkJCWRpZSgiSW52YWxpZCBjb21tYW5kIGluIGEgJyRjbWQnIGJhdGNoOiAiLiAkXyk7Ci0JCX0KLQl9Ci19Ci0KLXN1YiBtd19pbXBvcnQgewotCSMgbXVsdGlwbGUgaW1wb3J0IGNvbW1hbmRzIGNhbiBmb2xsb3cgZWFjaCBvdGhlci4KLQlteSBAcmVmcyA9IChzaGlmdCwgZ2V0X21vcmVfcmVmcygiaW1wb3J0IikpOwotCWZvcmVhY2ggbXkgJHJlZiAoQHJlZnMpIHsKLQkJbXdfaW1wb3J0X3JlZigkcmVmKTsKLQl9Ci0JcHJpbnQgU1RET1VUICJkb25lXG4iOwotfQotCi1zdWIgbXdfaW1wb3J0X3JlZiB7Ci0JbXkgJHJlZiA9IHNoaWZ0OwotCSMgVGhlIHJlbW90ZSBoZWxwZXIgd2lsbCBjYWxsICJpbXBvcnQgSEVBRCIgYW5kCi0JIyAiaW1wb3J0IHJlZnMvaGVhZHMvbWFzdGVyIi4KLQkjIFNpbmNlIEhFQUQgaXMgYSBzeW1ib2xpYyByZWYgdG8gbWFzdGVyIChieSBjb252ZW50aW9uLAotCSMgZm9sbG93ZWQgYnkgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZCAibGlzdCIgdGhhdCB3ZSBnYXZlKSwKLQkjIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgaW4gdGhpcyBjYXNlLgotCWlmICgkcmVmIGVxICJIRUFEIikgewotCQlyZXR1cm47Ci0JfQotCi0JbXdfY29ubmVjdF9tYXliZSgpOwotCi0JbXkgQHBhZ2VzID0gZ2V0X213X3BhZ2VzKCk7Ci0KLQlwcmludCBTVERFUlIgIlNlYXJjaGluZyByZXZpc2lvbnMuLi5cbiI7Ci0JbXkgJGxhc3RfbG9jYWwgPSBnZXRfbGFzdF9sb2NhbF9yZXZpc2lvbigpOwotCW15ICRmZXRjaF9mcm9tID0gJGxhc3RfbG9jYWwgKyAxOwotCWlmICgkZmV0Y2hfZnJvbSA9PSAxKSB7Ci0JCXByaW50IFNUREVSUiAiLCBmZXRjaGluZyBmcm9tIGJlZ2lubmluZy5cbiI7Ci0JfSBlbHNlIHsKLQkJcHJpbnQgU1RERVJSICIsIGZldGNoaW5nIGZyb20gaGVyZS5cbiI7Ci0JfQotCW15ICgkbiwgQHJldmlzaW9ucykgPSBmZXRjaF9td19yZXZpc2lvbnMoXEBwYWdlcywgJGZldGNoX2Zyb20pOwotCi0JIyBDcmVhdGlvbiBvZiB0aGUgZmFzdC1pbXBvcnQgc3RyZWFtCi0JcHJpbnQgU1RERVJSICJGZXRjaGluZyAmIHdyaXRpbmcgZXhwb3J0IGRhdGEuLi5cbiI7Ci0KLQkkbiA9IDA7Ci0JbXkgJGxhc3RfdGltZXN0YW1wID0gMDsgIyBQbGFjZWhvbGVyIGluIGNhc2UgJHJldi0+dGltZXN0YW1wIGlzIHVuZGVmaW5lZAotCi0JZm9yZWFjaCBteSAkcGFnZXJldmlkIChzb3J0IHskYS0+e3JldmlkfSA8PT4gJGItPntyZXZpZH19IEByZXZpc2lvbnMpIHsKLQkJIyBmZXRjaCB0aGUgY29udGVudCBvZiB0aGUgcGFnZXMKLQkJbXkgJHF1ZXJ5ID0gewotCQkJYWN0aW9uID0+ICdxdWVyeScsCi0JCQlwcm9wID0+ICdyZXZpc2lvbnMnLAotCQkJcnZwcm9wID0+ICdjb250ZW50fHRpbWVzdGFtcHxjb21tZW50fHVzZXJ8aWRzJywKLQkJCXJldmlkcyA9PiAkcGFnZXJldmlkLT57cmV2aWR9LAotCQl9OwotCi0JCW15ICRyZXN1bHQgPSAkbWVkaWF3aWtpLT5hcGkoJHF1ZXJ5KTsKLQotCQlteSAkcmV2ID0gcG9wKEB7JHJlc3VsdC0+e3F1ZXJ5fS0+e3BhZ2VzfS0+eyRwYWdlcmV2aWQtPntwYWdlaWR9fS0+e3JldmlzaW9uc319KTsKLQotCQkkbisrOwotCi0JCW15ICVjb21taXQ7Ci0JCSRjb21taXR7YXV0aG9yfSA9ICRyZXYtPnt1c2VyfSB8fCAnQW5vbnltb3VzJzsKLQkJJGNvbW1pdHtjb21tZW50fSA9ICRyZXYtPntjb21tZW50fSB8fCAnKkVtcHR5IE1lZGlhV2lraSBNZXNzYWdlKic7Ci0JCSRjb21taXR7dGl0bGV9ID0gbWVkaWF3aWtpX3NtdWRnZV9maWxlbmFtZSgKLQkJCSRyZXN1bHQtPntxdWVyeX0tPntwYWdlc30tPnskcGFnZXJldmlkLT57cGFnZWlkfX0tPnt0aXRsZX0KLQkJICAgICk7Ci0JCSRjb21taXR7bXdfcmV2aXNpb259ID0gJHBhZ2VyZXZpZC0+e3JldmlkfTsKLQkJJGNvbW1pdHtjb250ZW50fSA9IG1lZGlhd2lraV9zbXVkZ2UoJHJldi0+eycqJ30pOwotCi0JCWlmICghZGVmaW5lZCgkcmV2LT57dGltZXN0YW1wfSkpIHsKLQkJCSRsYXN0X3RpbWVzdGFtcCsrOwotCQl9IGVsc2UgewotCQkJJGxhc3RfdGltZXN0YW1wID0gJHJldi0+e3RpbWVzdGFtcH07Ci0JCX0KLQkJJGNvbW1pdHtkYXRlfSA9IERhdGVUaW1lOjpGb3JtYXQ6OklTTzg2MDEtPnBhcnNlX2RhdGV0aW1lKCRsYXN0X3RpbWVzdGFtcCk7Ci0KLQkJcHJpbnQgU1RERVJSICIkbi8iLCBzY2FsYXIoQHJldmlzaW9ucyksICI6IFJldmlzaW9uICMkcGFnZXJldmlkLT57cmV2aWR9IG9mICRjb21taXR7dGl0bGV9XG4iOwotCi0JCWltcG9ydF9maWxlX3JldmlzaW9uKFwlY29tbWl0LCAoJGZldGNoX2Zyb20gPT0gMSksICRuKTsKLQl9Ci0KLQlpZiAoJGZldGNoX2Zyb20gPT0gMSAmJiAkbiA9PSAwKSB7Ci0JCXByaW50IFNUREVSUiAiWW91IGFwcGVhciB0byBoYXZlIGNsb25lZCBhbiBlbXB0eSBNZWRpYVdpa2kuXG4iOwotCQkjIFNvbWV0aGluZyBoYXMgdG8gYmUgZG9uZSByZW1vdGUtaGVscGVyIHNpZGUuIElmIG5vdGhpbmcgaXMgZG9uZSwgYW4gZXJyb3IgaXMKLQkJIyB0aHJvd24gc2F5aW5nIHRoYXQgSEVBRCBpcyByZWZlcmluZyB0byB1bmtub3duIG9iamVjdCAwMDAwMDAwMDAwMDAwMDAwMDAwCi0JCSMgYW5kIHRoZSBjbG9uZSBmYWlscy4KLQl9Ci19Ci0KLXN1YiBlcnJvcl9ub25fZmFzdF9mb3J3YXJkIHsKLQlteSAkYWR2aWNlID0gcnVuX2dpdCgiY29uZmlnIC0tYm9vbCBhZHZpY2UucHVzaE5vbkZhc3RGb3J3YXJkIik7Ci0JY2hvbXAoJGFkdmljZSk7Ci0JaWYgKCRhZHZpY2UgbmUgImZhbHNlIikgewotCQkjIE5hdGl2ZSBnaXQtcHVzaCB3b3VsZCBzaG93IHRoaXMgYWZ0ZXIgdGhlIHN1bW1hcnkuCi0JCSMgV2UgY2FuJ3QgYXNrIGl0IHRvIGRpc3BsYXkgaXQgY2xlYW5seSwgc28gcHJpbnQgaXQKLQkJIyBvdXJzZWx2ZXMgYmVmb3JlLgotCQlwcmludCBTVERFUlIgIlRvIHByZXZlbnQgeW91IGZyb20gbG9zaW5nIGhpc3RvcnksIG5vbi1mYXN0LWZvcndhcmQgdXBkYXRlcyB3ZXJlIHJlamVjdGVkXG4iOwotCQlwcmludCBTVERFUlIgIk1lcmdlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLiAnZ2l0IHB1bGwnKSBiZWZvcmUgcHVzaGluZyBhZ2Fpbi4gU2VlIHRoZVxuIjsKLQkJcHJpbnQgU1RERVJSICInTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBzZWN0aW9uIG9mICdnaXQgcHVzaCAtLWhlbHAnIGZvciBkZXRhaWxzLlxuIjsKLQl9Ci0JcHJpbnQgU1RET1VUICJlcnJvciAkX1swXSBcIm5vbi1mYXN0LWZvcndhcmRcIlxuIjsKLQlyZXR1cm4gMDsKLX0KLQotc3ViIG13X3B1c2hfZmlsZSB7Ci0JbXkgJGRpZmZfaW5mbyA9IHNoaWZ0OwotCSMgJGRpZmZfaW5mbyBjb250YWlucyBhIHN0cmluZyBpbiB0aGlzIGZvcm1hdDoKLQkjIDEwMDY0NCAxMDA2NDQgPHNoYTFfb2ZfYmxvYl9iZWZvcmVfY29tbWl0PiA8c2hhMV9vZl9ibG9iX25vdz4gPHN0YXR1cz4KLQlteSBAZGlmZl9pbmZvX3NwbGl0ID0gc3BsaXQoL1sgXHRdLywgJGRpZmZfaW5mbyk7Ci0KLQkjIEZpbGVuYW1lLCBpbmNsdWRpbmcgLm13IGV4dGVuc2lvbgotCW15ICRjb21wbGV0ZV9maWxlX25hbWUgPSBzaGlmdDsKLQkjIENvbW1pdCBtZXNzYWdlCi0JbXkgJHN1bW1hcnkgPSBzaGlmdDsKLQkjIE1lZGlhV2lraSByZXZpc2lvbiBudW1iZXIuIEtlZXAgdGhlIHByZXZpb3VzIG9uZSBieSBkZWZhdWx0LAotCSMgaW4gY2FzZSB0aGVyZSdzIG5vIGVkaXQgdG8gcGVyZm9ybS4KLQlteSAkbmV3cmV2aWQgPSBzaGlmdDsKLQotCW15ICRuZXdfc2hhMSA9ICRkaWZmX2luZm9fc3BsaXRbM107Ci0JbXkgJG9sZF9zaGExID0gJGRpZmZfaW5mb19zcGxpdFsyXTsKLQlteSAkcGFnZV9jcmVhdGVkID0gKCRvbGRfc2hhMSBlcSBOVUxMX1NIQTEpOwotCW15ICRwYWdlX2RlbGV0ZWQgPSAoJG5ld19zaGExIGVxIE5VTExfU0hBMSk7Ci0JJGNvbXBsZXRlX2ZpbGVfbmFtZSA9IG1lZGlhd2lraV9jbGVhbl9maWxlbmFtZSgkY29tcGxldGVfZmlsZV9uYW1lKTsKLQotCWlmIChzdWJzdHIoJGNvbXBsZXRlX2ZpbGVfbmFtZSwtMykgZXEgIi5tdyIpIHsKLQkJbXkgJHRpdGxlID0gc3Vic3RyKCRjb21wbGV0ZV9maWxlX25hbWUsMCwtMyk7Ci0KLQkJbXkgJGZpbGVfY29udGVudDsKLQkJaWYgKCRwYWdlX2RlbGV0ZWQpIHsKLQkJCSMgRGVsZXRpbmcgYSBwYWdlIHVzdWFsbHkgcmVxdWlyZXMKLQkJCSMgc3BlY2lhbCBwcml2aWxlZGdlcy4gQSBjb21tb24KLQkJCSMgY29udmVudGlvbiBpcyB0byByZXBsYWNlIHRoZSBwYWdlCi0JCQkjIHdpdGggdGhpcyBjb250ZW50IGluc3RlYWQ6Ci0JCQkkZmlsZV9jb250ZW50ID0gREVMRVRFRF9DT05URU5UOwotCQl9IGVsc2UgewotCQkJJGZpbGVfY29udGVudCA9IHJ1bl9naXQoImNhdC1maWxlIGJsb2IgJG5ld19zaGExIik7Ci0JCX0KLQotCQltd19jb25uZWN0X21heWJlKCk7Ci0KLQkJbXkgJHJlc3VsdCA9ICRtZWRpYXdpa2ktPmVkaXQoIHsKLQkJCWFjdGlvbiA9PiAnZWRpdCcsCi0JCQlzdW1tYXJ5ID0+ICRzdW1tYXJ5LAotCQkJdGl0bGUgPT4gJHRpdGxlLAotCQkJYmFzZXRpbWVzdGFtcCA9PiAkYmFzZXRpbWVzdGFtcHN7JG5ld3JldmlkfSwKLQkJCXRleHQgPT4gbWVkaWF3aWtpX2NsZWFuKCRmaWxlX2NvbnRlbnQsICRwYWdlX2NyZWF0ZWQpLAotCQkJCSAgfSwgewotCQkJCQkgIHNraXBfZW5jb2RpbmcgPT4gMSAjIEhlbHBzIHdpdGggbmFtZXMgd2l0aCBhY2NlbnR1YXRlZCBjaGFyYWN0ZXJzCi0JCQkJICB9KTsKLQkJaWYgKCEkcmVzdWx0KSB7Ci0JCQlpZiAoJG1lZGlhd2lraS0+e2Vycm9yfS0+e2NvZGV9ID09IDMpIHsKLQkJCQkjIGVkaXQgY29uZmxpY3RzLCBjb25zaWRlcmVkIGFzIG5vbi1mYXN0LWZvcndhcmQKLQkJCQlwcmludCBTVERFUlIgJ1dhcm5pbmc6IEVycm9yICcgLgotCQkJCSAgICAkbWVkaWF3aWtpLT57ZXJyb3J9LT57Y29kZX0gLgotCQkJCSAgICAnIGZyb20gbWVkaXdpa2k6ICcgLiAkbWVkaWF3aWtpLT57ZXJyb3J9LT57ZGV0YWlsc30gLgotCQkJCSAgICAiLlxuIjsKLQkJCQlyZXR1cm4gKCRuZXdyZXZpZCwgIm5vbi1mYXN0LWZvcndhcmQiKTsKLQkJCX0gZWxzZSB7Ci0JCQkJIyBPdGhlciBlcnJvcnMuIFNob3VsZG4ndCBoYXBwZW4gPT4ganVzdCBkaWUoKQotCQkJCWRpZSAnRmF0YWw6IEVycm9yICcgLgotCQkJCSAgICAkbWVkaWF3aWtpLT57ZXJyb3J9LT57Y29kZX0gLgotCQkJCSAgICAnIGZyb20gbWVkaXdpa2k6ICcgLiAkbWVkaWF3aWtpLT57ZXJyb3J9LT57ZGV0YWlsc307Ci0JCQl9Ci0JCX0KLQkJJG5ld3JldmlkID0gJHJlc3VsdC0+e2VkaXR9LT57bmV3cmV2aWR9OwotCQlwcmludCBTVERFUlIgIlB1c2hlZCBmaWxlOiAkbmV3X3NoYTEgLSAkdGl0bGVcbiI7Ci0JfSBlbHNlIHsKLQkJcHJpbnQgU1RERVJSICIkY29tcGxldGVfZmlsZV9uYW1lIG5vdCBhIG1lZGlhd2lraSBmaWxlIChOb3QgcHVzaGFibGUgb24gdGhpcyB2ZXJzaW9uIG9mIGdpdC1yZW1vdGUtbWVkaWF3aWtpKS5cbiIKLQl9Ci0JcmV0dXJuICgkbmV3cmV2aWQsICJvayIpOwotfQotCi1zdWIgbXdfcHVzaCB7Ci0JIyBtdWx0aXBsZSBwdXNoIHN0YXRlbWVudHMgY2FuIGZvbGxvdyBlYWNoIG90aGVyCi0JbXkgQHJlZnNzcGVjcyA9IChzaGlmdCwgZ2V0X21vcmVfcmVmcygicHVzaCIpKTsKLQlteSAkcHVzaGVkOwotCWZvciBteSAkcmVmc3BlYyAoQHJlZnNzcGVjcykgewotCQlteSAoJGZvcmNlLCAkbG9jYWwsICRyZW1vdGUpID0gJHJlZnNwZWMgPX4gL14oXCspPyhbXjpdKik6KFteOl0qKSQvCi0JCSAgICBvciBkaWUoIkludmFsaWQgcmVmc3BlYyBmb3IgcHVzaC4gRXhwZWN0ZWQgPHNyYz46PGRzdD4gb3IgKzxzcmM+Ojxkc3Q+Iik7Ci0JCWlmICgkZm9yY2UpIHsKLQkJCXByaW50IFNUREVSUiAiV2FybmluZzogZm9yY2VkIHB1c2ggbm90IGFsbG93ZWQgb24gYSBNZWRpYVdpa2kuXG4iOwotCQl9Ci0JCWlmICgkbG9jYWwgZXEgIiIpIHsKLQkJCXByaW50IFNUREVSUiAiQ2Fubm90IGRlbGV0ZSByZW1vdGUgYnJhbmNoIG9uIGEgTWVkaWFXaWtpXG4iOwotCQkJcHJpbnQgU1RET1VUICJlcnJvciAkcmVtb3RlIGNhbm5vdCBkZWxldGVcbiI7Ci0JCQluZXh0OwotCQl9Ci0JCWlmICgkcmVtb3RlIG5lICJyZWZzL2hlYWRzL21hc3RlciIpIHsKLQkJCXByaW50IFNUREVSUiAiT25seSBwdXNoIHRvIHRoZSBicmFuY2ggJ21hc3RlcicgaXMgc3VwcG9ydGVkIG9uIGEgTWVkaWFXaWtpXG4iOwotCQkJcHJpbnQgU1RET1VUICJlcnJvciAkcmVtb3RlIG9ubHkgbWFzdGVyIGFsbG93ZWRcbiI7Ci0JCQluZXh0OwotCQl9Ci0JCWlmIChtd19wdXNoX3JldmlzaW9uKCRsb2NhbCwgJHJlbW90ZSkpIHsKLQkJCSRwdXNoZWQgPSAxOwotCQl9Ci0JfQotCi0JIyBOb3RpZnkgR2l0IHRoYXQgdGhlIHB1c2ggaXMgZG9uZQotCXByaW50IFNURE9VVCAiXG4iOwotCi0JaWYgKCRwdXNoZWQgJiYgJGR1bWJfcHVzaCkgewotCQlwcmludCBTVERFUlIgIkp1c3QgcHVzaGVkIHNvbWUgcmV2aXNpb25zIHRvIE1lZGlhV2lraS5cbiI7Ci0JCXByaW50IFNUREVSUiAiVGhlIHB1c2hlZCByZXZpc2lvbnMgbm93IGhhdmUgdG8gYmUgcmUtaW1wb3J0ZWQsIGFuZCB5b3VyIGN1cnJlbnQgYnJhbmNoXG4iOwotCQlwcmludCBTVERFUlIgIm5lZWRzIHRvIGJlIHVwZGF0ZWQgd2l0aCB0aGVzZSByZS1pbXBvcnRlZCBjb21taXRzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aFxuIjsKLQkJcHJpbnQgU1RERVJSICJcbiI7Ci0JCXByaW50IFNUREVSUiAiICBnaXQgcHVsbCAtLXJlYmFzZVxuIjsKLQkJcHJpbnQgU1RERVJSICJcbiI7Ci0JfQotfQotCi1zdWIgbXdfcHVzaF9yZXZpc2lvbiB7Ci0JbXkgJGxvY2FsID0gc2hpZnQ7Ci0JbXkgJHJlbW90ZSA9IHNoaWZ0OyAjIGFjdHVhbGx5LCB0aGlzIGhhcyB0byBiZSAicmVmcy9oZWFkcy9tYXN0ZXIiIGF0IHRoaXMgcG9pbnQuCi0JbXkgJGxhc3RfbG9jYWxfcmV2aWQgPSBnZXRfbGFzdF9sb2NhbF9yZXZpc2lvbigpOwotCXByaW50IFNUREVSUiAiLlxuIjsgIyBGaW5pc2ggc2VudGVuY2Ugc3RhcnRlZCBieSBnZXRfbGFzdF9sb2NhbF9yZXZpc2lvbigpCi0JbXkgJGxhc3RfcmVtb3RlX3JldmlkID0gZ2V0X2xhc3RfcmVtb3RlX3JldmlzaW9uKCk7Ci0JbXkgJG13X3JldmlzaW9uID0gJGxhc3RfcmVtb3RlX3JldmlkOwotCi0JIyBHZXQgc2hhMSBvZiBjb21taXQgcG9pbnRlZCBieSBsb2NhbCBIRUFECi0JbXkgJEhFQURfc2hhMSA9IHJ1bl9naXQoInJldi1wYXJzZSAkbG9jYWwgMj4vZGV2L251bGwiKTsgY2hvbXAoJEhFQURfc2hhMSk7Ci0JIyBHZXQgc2hhMSBvZiBjb21taXQgcG9pbnRlZCBieSByZW1vdGVzLyRyZW1vdGVuYW1lL21hc3RlcgotCW15ICRyZW1vdGVvcmlnaW5fc2hhMSA9IHJ1bl9naXQoInJldi1wYXJzZSByZWZzL3JlbW90ZXMvJHJlbW90ZW5hbWUvbWFzdGVyIDI+L2Rldi9udWxsIik7Ci0JY2hvbXAoJHJlbW90ZW9yaWdpbl9zaGExKTsKLQotCWlmICgkbGFzdF9sb2NhbF9yZXZpZCA+IDAgJiYKLQkgICAgJGxhc3RfbG9jYWxfcmV2aWQgPCAkbGFzdF9yZW1vdGVfcmV2aWQpIHsKLQkJcmV0dXJuIGVycm9yX25vbl9mYXN0X2ZvcndhcmQoJHJlbW90ZSk7Ci0JfQotCi0JaWYgKCRIRUFEX3NoYTEgZXEgJHJlbW90ZW9yaWdpbl9zaGExKSB7Ci0JCSMgbm90aGluZyB0byBwdXNoCi0JCXJldHVybiAwOwotCX0KLQotCSMgR2V0IGV2ZXJ5IGNvbW1pdCBpbiBiZXR3ZWVuIEhFQUQgYW5kIHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyLAotCSMgaW5jbHVkaW5nIEhFQUQgYW5kIHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyCi0JbXkgQGNvbW1pdF9wYWlycyA9ICgpOwotCWlmICgkbGFzdF9sb2NhbF9yZXZpZCA+IDApIHsKLQkJbXkgJHBhcnNlZF9zaGExID0gJHJlbW90ZW9yaWdpbl9zaGExOwotCQkjIEZpbmQgYSBwYXRoIGZyb20gbGFzdCBNZWRpYVdpa2kgY29tbWl0IHRvIHB1c2hlZCBjb21taXQKLQkJd2hpbGUgKCRwYXJzZWRfc2hhMSBuZSAkSEVBRF9zaGExKSB7Ci0JCQlteSBAY29tbWl0X2luZm8gPSAgZ3JlcCgvXiRwYXJzZWRfc2hhMS8sIHNwbGl0KC9cbi8sIHJ1bl9naXQoInJldi1saXN0IC0tY2hpbGRyZW4gJGxvY2FsIikpKTsKLQkJCWlmICghQGNvbW1pdF9pbmZvKSB7Ci0JCQkJcmV0dXJuIGVycm9yX25vbl9mYXN0X2ZvcndhcmQoJHJlbW90ZSk7Ci0JCQl9Ci0JCQlteSBAY29tbWl0X2luZm9fc3BsaXQgPSBzcGxpdCgvIHxcbi8sICRjb21taXRfaW5mb1swXSk7Ci0JCQkjICRjb21taXRfaW5mb19zcGxpdFsxXSBpcyB0aGUgc2hhMSBvZiB0aGUgY29tbWl0IHRvIGV4cG9ydAotCQkJIyAkY29tbWl0X2luZm9fc3BsaXRbMF0gaXMgdGhlIHNoYTEgb2YgaXRzIGRpcmVjdCBjaGlsZAotCQkJcHVzaChAY29tbWl0X3BhaXJzLCBcQGNvbW1pdF9pbmZvX3NwbGl0KTsKLQkJCSRwYXJzZWRfc2hhMSA9ICRjb21taXRfaW5mb19zcGxpdFsxXTsKLQkJfQotCX0gZWxzZSB7Ci0JCSMgTm8gcmVtb3RlIG1lZGlhd2lraSByZXZpc2lvbi4gRXhwb3J0IHRoZSB3aG9sZQotCQkjIGhpc3RvcnkgKGxpbmVhcml6ZWQgd2l0aCAtLWZpcnN0LXBhcmVudCkKLQkJcHJpbnQgU1RERVJSICJXYXJuaW5nOiBubyBjb21tb24gYW5jZXN0b3IsIHB1c2hpbmcgY29tcGxldGUgaGlzdG9yeVxuIjsKLQkJbXkgJGhpc3RvcnkgPSBydW5fZ2l0KCJyZXYtbGlzdCAtLWZpcnN0LXBhcmVudCAtLWNoaWxkcmVuICRsb2NhbCIpOwotCQlteSBAaGlzdG9yeSA9IHNwbGl0KCdcbicsICRoaXN0b3J5KTsKLQkJQGhpc3RvcnkgPSBAaGlzdG9yeVsxLi4kI2hpc3RvcnldOwotCQlmb3JlYWNoIG15ICRsaW5lIChyZXZlcnNlIEBoaXN0b3J5KSB7Ci0JCQlteSBAY29tbWl0X2luZm9fc3BsaXQgPSBzcGxpdCgvIHxcbi8sICRsaW5lKTsKLQkJCXB1c2goQGNvbW1pdF9wYWlycywgXEBjb21taXRfaW5mb19zcGxpdCk7Ci0JCX0KLQl9Ci0KLQlmb3JlYWNoIG15ICRjb21taXRfaW5mb19zcGxpdCAoQGNvbW1pdF9wYWlycykgewotCQlteSAkc2hhMV9jaGlsZCA9IEB7JGNvbW1pdF9pbmZvX3NwbGl0fVswXTsKLQkJbXkgJHNoYTFfY29tbWl0ID0gQHskY29tbWl0X2luZm9fc3BsaXR9WzFdOwotCQlteSAkZGlmZl9pbmZvcyA9IHJ1bl9naXQoImRpZmYtdHJlZSAtciAtLXJhdyAteiAkc2hhMV9jaGlsZCAkc2hhMV9jb21taXQiKTsKLQkJIyBUT0RPOiB3ZSBjb3VsZCBkZXRlY3QgcmVuYW1lLCBhbmQgZW5jb2RlIHRoZW0gd2l0aCBhICNyZWRpcmVjdCBvbiB0aGUgd2lraS4KLQkJIyBUT0RPOiBmb3Igbm93LCBpdCdzIGp1c3QgYSBkZWxldGUrYWRkCi0JCW15IEBkaWZmX2luZm9fbGlzdCA9IHNwbGl0KC9cMC8sICRkaWZmX2luZm9zKTsKLQkJIyBLZWVwIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBjb21taXQgbWVzc2FnZSBhcyBtZWRpYXdpa2kgY29tbWVudCBmb3IgdGhlIHJldmlzaW9uCi0JCW15ICRjb21taXRfbXNnID0gKHNwbGl0KC9cbi8sIHJ1bl9naXQoInNob3cgLS1wcmV0dHk9Zm9ybWF0OlwiJXNcIiAkc2hhMV9jb21taXQiKSkpWzBdOwotCQljaG9tcCgkY29tbWl0X21zZyk7Ci0JCSMgUHVzaCBldmVyeSBibG9iCi0JCXdoaWxlIChAZGlmZl9pbmZvX2xpc3QpIHsKLQkJCW15ICRzdGF0dXM7Ci0JCQkjIGdpdCBkaWZmLXRyZWUgLXogZ2l2ZXMgYW4gb3V0cHV0IGxpa2UKLQkJCSMgPG1ldGFkYXRhPlwwPGZpbGVuYW1lMT5cMAotCQkJIyA8bWV0YWRhdGE+XDA8ZmlsZW5hbWUyPlwwCi0JCQkjIGFuZCB3ZSd2ZSBzcGxpdCBvbiBcMC4KLQkJCW15ICRpbmZvID0gc2hpZnQoQGRpZmZfaW5mb19saXN0KTsKLQkJCW15ICRmaWxlID0gc2hpZnQoQGRpZmZfaW5mb19saXN0KTsKLQkJCSgkbXdfcmV2aXNpb24sICRzdGF0dXMpID0gbXdfcHVzaF9maWxlKCRpbmZvLCAkZmlsZSwgJGNvbW1pdF9tc2csICRtd19yZXZpc2lvbik7Ci0JCQlpZiAoJHN0YXR1cyBlcSAibm9uLWZhc3QtZm9yd2FyZCIpIHsKLQkJCQkjIHdlIG1heSBhbHJlYWR5IGhhdmUgc2VudCBwYXJ0IG9mIHRoZQotCQkJCSMgY29tbWl0IHRvIE1lZGlhV2lraSwgYnV0IGl0J3MgdG9vCi0JCQkJIyBsYXRlIHRvIGNhbmNlbCBpdC4gU3RvcCB0aGUgcHVzaCBpbgotCQkJCSMgdGhlIG1pZGRsZSwgYnV0IHN0aWxsIGdpdmUgYW4KLQkJCQkjIGFjY3VyYXRlIGVycm9yIG1lc3NhZ2UuCi0JCQkJcmV0dXJuIGVycm9yX25vbl9mYXN0X2ZvcndhcmQoJHJlbW90ZSk7Ci0JCQl9Ci0JCQlpZiAoJHN0YXR1cyBuZSAib2siKSB7Ci0JCQkJZGllKCJVbmtub3duIGVycm9yIGZyb20gbXdfcHVzaF9maWxlKCkiKTsKLQkJCX0KLQkJfQotCQl1bmxlc3MgKCRkdW1iX3B1c2gpIHsKLQkJCXJ1bl9naXQoIm5vdGVzIC0tcmVmPSRyZW1vdGVuYW1lL21lZGlhd2lraSBhZGQgLW0gXCJtZWRpYXdpa2lfcmV2aXNpb246ICRtd19yZXZpc2lvblwiICRzaGExX2NvbW1pdCIpOwotCQkJcnVuX2dpdCgidXBkYXRlLXJlZiAtbSBcIkdpdC1NZWRpYVdpa2kgcHVzaFwiIHJlZnMvbWVkaWF3aWtpLyRyZW1vdGVuYW1lL21hc3RlciAkc2hhMV9jb21taXQgJHNoYTFfY2hpbGQiKTsKLQkJfQotCX0KLQotCXByaW50IFNURE9VVCAib2sgJHJlbW90ZVxuIjsKLQlyZXR1cm4gMTsKLX0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvbXctdG8tZ2l0L2dpdC1yZW1vdGUtbWVkaWF3aWtpLnBlcmwgYi9jb250cmliL213LXRvLWdpdC9naXQtcmVtb3RlLW1lZGlhd2lraS5wZXJsCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjljMTRjMWYKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL213LXRvLWdpdC9naXQtcmVtb3RlLW1lZGlhd2lraS5wZXJsCkBAIC0wLDAgKzEsMTM2MCBAQAorIyEgL3Vzci9iaW4vcGVybAorCisjIENvcHlyaWdodCAoQykgMjAxMQorIyAgICAgSsOpcsOpbWllIE5pa2FlcyA8amVyZW1pZS5uaWthZXNAZW5zaW1hZy5pbWFnLmZyPgorIyAgICAgQXJuYXVkIExhY3VyaWUgPGFybmF1ZC5sYWN1cmllQGVuc2ltYWcuaW1hZy5mcj4KKyMgICAgIENsYWlyZSBGb3Vzc2UgPGNsYWlyZS5mb3Vzc2VAZW5zaW1hZy5pbWFnLmZyPgorIyAgICAgRGF2aWQgQW1vdXlhbCA8ZGF2aWQuYW1vdXlhbEBlbnNpbWFnLmltYWcuZnI+CisjICAgICBNYXR0aGlldSBNb3kgPG1hdHRoaWV1Lm1veUBncmVub2JsZS1pbnAuZnI+CisjIExpY2Vuc2U6IEdQTCB2MiBvciBsYXRlcgorCisjIEdhdGV3YXkgYmV0d2VlbiBHaXQgYW5kIE1lZGlhV2lraS4KKyMgRG9jdW1lbnRhdGlvbiAmIGJ1Z3RyYWNrZXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb3kvR2l0LU1lZGlhd2lraS8KKwordXNlIHN0cmljdDsKK3VzZSBNZWRpYVdpa2k6OkFQSTsKK3VzZSBEYXRlVGltZTo6Rm9ybWF0OjpJU084NjAxOworCisjIEJ5IGRlZmF1bHQsIHVzZSBVVEYtOCB0byBjb21tdW5pY2F0ZSB3aXRoIEdpdCBhbmQgdGhlIHVzZXIKK2Jpbm1vZGUgU1RERVJSLCAiOnV0ZjgiOworYmlubW9kZSBTVERPVVQsICI6dXRmOCI7CisKK3VzZSBVUkk6OkVzY2FwZTsKK3VzZSBJUEM6Ok9wZW4yOworCit1c2Ugd2FybmluZ3M7CisKKyMgTWVkaWF3aWtpIGZpbGVuYW1lcyBjYW4gY29udGFpbiBmb3J3YXJkIHNsYXNoZXMuIFRoaXMgdmFyaWFibGUgZGVjaWRlcyBieSB3aGljaCBwYXR0ZXJuIHRoZXkgc2hvdWxkIGJlIHJlcGxhY2VkCit1c2UgY29uc3RhbnQgU0xBU0hfUkVQTEFDRU1FTlQgPT4gIiUyRiI7CisKKyMgSXQncyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIGRlbGV0ZSBwYWdlcyAobWF5IHJlcXVpcmUgc29tZQorIyBwcml2aWxlZ2VzKS4gRGVsZXRlZCBwYWdlcyBhcmUgcmVwbGFjZWQgd2l0aCB0aGlzIGNvbnRlbnQuCit1c2UgY29uc3RhbnQgREVMRVRFRF9DT05URU5UID0+ICJbW0NhdGVnb3J5OkRlbGV0ZWRdXVxuIjsKKworIyBJdCdzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgZW1wdHkgcGFnZXMuIE5ldyBlbXB0eSBmaWxlcyBpbiBHaXQgYXJlCisjIHNlbnQgd2l0aCB0aGlzIGNvbnRlbnQgaW5zdGVhZC4KK3VzZSBjb25zdGFudCBFTVBUWV9DT05URU5UID0+ICI8IS0tIGVtcHR5IHBhZ2UgLS0+XG4iOworCisjIHVzZWQgdG8gcmVmbGVjdCBmaWxlIGNyZWF0aW9uIG9yIGRlbGV0aW9uIGluIGRpZmYuCit1c2UgY29uc3RhbnQgTlVMTF9TSEExID0+ICIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIjsKKworIyBVc2VkIG9uIEdpdCdzIHNpZGUgdG8gcmVmbGVjdCBlbXB0eSBlZGl0IG1lc3NhZ2VzIG9uIHRoZSB3aWtpCit1c2UgY29uc3RhbnQgRU1QVFlfTUVTU0FHRSA9PiAnKkVtcHR5IE1lZGlhV2lraSBNZXNzYWdlKic7CisKK215ICRyZW1vdGVuYW1lID0gJEFSR1ZbMF07CitteSAkdXJsID0gJEFSR1ZbMV07CisKKyMgQWNjZXB0IGJvdGggc3BhY2Utc2VwYXJhdGVkIGFuZCBtdWx0aXBsZSBrZXlzIGluIGNvbmZpZyBmaWxlLgorIyBTcGFjZXMgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgXyBhbnl3YXkgYmVjYXVzZSB3ZSdsbCB1c2UgY2hvbXAuCitteSBAdHJhY2tlZF9wYWdlcyA9IHNwbGl0KC9bIFxuXS8sIHJ1bl9naXQoImNvbmZpZyAtLWdldC1hbGwgcmVtb3RlLiIuICRyZW1vdGVuYW1lIC4iLnBhZ2VzIikpOworY2hvbXAoQHRyYWNrZWRfcGFnZXMpOworCisjIEp1c3QgbGlrZSBAdHJhY2tlZF9wYWdlcywgYnV0IGZvciBNZWRpYVdpa2kgY2F0ZWdvcmllcy4KK215IEB0cmFja2VkX2NhdGVnb3JpZXMgPSBzcGxpdCgvWyBcbl0vLCBydW5fZ2l0KCJjb25maWcgLS1nZXQtYWxsIHJlbW90ZS4iLiAkcmVtb3RlbmFtZSAuIi5jYXRlZ29yaWVzIikpOworY2hvbXAoQHRyYWNrZWRfY2F0ZWdvcmllcyk7CisKKyMgSW1wb3J0IG1lZGlhIGZpbGVzIG9uIHB1bGwKK215ICRpbXBvcnRfbWVkaWEgPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgLS1ib29sIHJlbW90ZS4iLiAkcmVtb3RlbmFtZSAuIi5tZWRpYWltcG9ydCIpOworY2hvbXAoJGltcG9ydF9tZWRpYSk7CiskaW1wb3J0X21lZGlhID0gKCRpbXBvcnRfbWVkaWEgZXEgInRydWUiKTsKKworIyBFeHBvcnQgbWVkaWEgZmlsZXMgb24gcHVzaAorbXkgJGV4cG9ydF9tZWRpYSA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCAtLWJvb2wgcmVtb3RlLiIuICRyZW1vdGVuYW1lIC4iLm1lZGlhZXhwb3J0Iik7CitjaG9tcCgkZXhwb3J0X21lZGlhKTsKKyRleHBvcnRfbWVkaWEgPSAhKCRleHBvcnRfbWVkaWEgZXEgImZhbHNlIik7CisKK215ICR3aWtpX2xvZ2luID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IHJlbW90ZS4iLiAkcmVtb3RlbmFtZSAuIi5td0xvZ2luIik7CisjIE5vdGU6IG13UGFzc3dvcmQgaXMgZGlzY291cnJhZ2VkLiBVc2UgdGhlIGNyZWRlbnRpYWwgc3lzdGVtIGluc3RlYWQuCitteSAkd2lraV9wYXNzd2QgPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgcmVtb3RlLiIuICRyZW1vdGVuYW1lIC4iLm13UGFzc3dvcmQiKTsKK215ICR3aWtpX2RvbWFpbiA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCByZW1vdGUuIi4gJHJlbW90ZW5hbWUgLiIubXdEb21haW4iKTsKK2Nob21wKCR3aWtpX2xvZ2luKTsKK2Nob21wKCR3aWtpX3Bhc3N3ZCk7CitjaG9tcCgkd2lraV9kb21haW4pOworCisjIEltcG9ydCBvbmx5IGxhc3QgcmV2aXNpb25zIChib3RoIGZvciBjbG9uZSBhbmQgZmV0Y2gpCitteSAkc2hhbGxvd19pbXBvcnQgPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgLS1ib29sIHJlbW90ZS4iLiAkcmVtb3RlbmFtZSAuIi5zaGFsbG93Iik7CitjaG9tcCgkc2hhbGxvd19pbXBvcnQpOworJHNoYWxsb3dfaW1wb3J0ID0gKCRzaGFsbG93X2ltcG9ydCBlcSAidHJ1ZSIpOworCisjIEZldGNoIChjbG9uZSBhbmQgcHVsbCkgYnkgcmV2aXNpb25zIGluc3RlYWQgb2YgYnkgcGFnZXMuIFRoaXMgYmVoYXZpb3IKKyMgaXMgbW9yZSBlZmZpY2llbnQgd2hlbiB3ZSBoYXZlIGEgd2lraSB3aXRoIGxvdHMgb2YgcGFnZXMgYW5kIHdlIGZldGNoCisjIHRoZSByZXZpc2lvbnMgcXVpdGUgb2Z0ZW4gc28gdGhhdCB0aGV5IGNvbmNlcm4gb25seSBmZXcgcGFnZXMuCisjIFBvc3NpYmxlIHZhbHVlczoKKyMgLSBieV9yZXY6IHBlcmZvcm0gb25lIHF1ZXJ5IHBlciBuZXcgcmV2aXNpb24gb24gdGhlIHJlbW90ZSB3aWtpCisjIC0gYnlfcGFnZTogcXVlcnkgZWFjaCB0cmFja2VkIHBhZ2UgZm9yIG5ldyByZXZpc2lvbgorbXkgJGZldGNoX3N0cmF0ZWd5ID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IHJlbW90ZS4kcmVtb3RlbmFtZS5mZXRjaFN0cmF0ZWd5Iik7Cit1bmxlc3MgKCRmZXRjaF9zdHJhdGVneSkgeworCSRmZXRjaF9zdHJhdGVneSA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCBtZWRpYXdpa2kuZmV0Y2hTdHJhdGVneSIpOworfQorY2hvbXAoJGZldGNoX3N0cmF0ZWd5KTsKK3VubGVzcyAoJGZldGNoX3N0cmF0ZWd5KSB7CisJJGZldGNoX3N0cmF0ZWd5ID0gImJ5X3BhZ2UiOworfQorCisjIER1bWIgcHVzaDogZG9uJ3QgdXBkYXRlIG5vdGVzIGFuZCBtZWRpYXdpa2kgcmVmIHRvIHJlZmxlY3QgdGhlIGxhc3QgcHVzaC4KKyMKKyMgQ29uZmlndXJhYmxlIHdpdGggbWVkaWF3aWtpLmR1bWJQdXNoLCBvciBwZXItcmVtb3RlIHdpdGgKKyMgcmVtb3RlLjxyZW1vdGVuYW1lPi5kdW1iUHVzaC4KKyMKKyMgVGhpcyBtZWFucyB0aGUgdXNlciB3aWxsIGhhdmUgdG8gcmUtaW1wb3J0IHRoZSBqdXN0LXB1c2hlZAorIyByZXZpc2lvbnMuIE9uIHRoZSBvdGhlciBoYW5kLCB0aGlzIG1lYW5zIHRoYXQgdGhlIEdpdCByZXZpc2lvbnMKKyMgY29ycmVzcG9uZGluZyB0byBNZWRpYVdpa2kgcmV2aXNpb25zIGFyZSBhbGwgaW1wb3J0ZWQgZnJvbSB0aGUgd2lraSwKKyMgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZXkgd2VyZSBpbml0aWFsbHkgY3JlYXRlZCBpbiBHaXQgb3IgZnJvbSB0aGUKKyMgd2ViIGludGVyZmFjZSwgaGVuY2UgYWxsIHVzZXJzIHdpbGwgZ2V0IHRoZSBzYW1lIGhpc3RvcnkgKGkuZS4gaWYKKyMgdGhlIHB1c2ggZnJvbSBHaXQgdG8gTWVkaWFXaWtpIGxvc2VzIHNvbWUgaW5mb3JtYXRpb24sIGV2ZXJ5Ym9keQorIyB3aWxsIGdldCB0aGUgaGlzdG9yeSB3aXRoIGluZm9ybWF0aW9uIGxvc3QpLiBJZiB0aGUgaW1wb3J0IGlzCisjIGRldGVybWluaXN0aWMsIHRoaXMgbWVhbnMgZXZlcnlib2R5IGdldHMgdGhlIHNhbWUgc2hhMSBmb3IgZWFjaAorIyBNZWRpYVdpa2kgcmV2aXNpb24uCitteSAkZHVtYl9wdXNoID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IC0tYm9vbCByZW1vdGUuJHJlbW90ZW5hbWUuZHVtYlB1c2giKTsKK3VubGVzcyAoJGR1bWJfcHVzaCkgeworCSRkdW1iX3B1c2ggPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgLS1ib29sIG1lZGlhd2lraS5kdW1iUHVzaCIpOworfQorY2hvbXAoJGR1bWJfcHVzaCk7CiskZHVtYl9wdXNoID0gKCRkdW1iX3B1c2ggZXEgInRydWUiKTsKKworbXkgJHdpa2lfbmFtZSA9ICR1cmw7Ciskd2lraV9uYW1lID1+IHMvW15cL10qOlwvXC8vLzsKKyMgSWYgVVJMIGlzIGxpa2UgaHR0cDovL3VzZXI6cGFzc3dvcmRAZXhhbXBsZS5jb20vLCB3ZSBjbGVhcmx5IGRvbid0CisjIHdhbnQgdGhlIHBhc3N3b3JkIGluICR3aWtpX25hbWUuIFdoaWxlIHdlJ3JlIHRoZXJlLCBhbHNvIHJlbW92ZSB1c2VyCisjIGFuZCAnQCcgc2lnbiwgdG8gYXZvaWQgYXV0aG9yIGxpa2UgTVdVc2VyQEhUVFBVc2VyQGhvc3QuY29tCiskd2lraV9uYW1lID1+IHMvXi4qQC8vOworCisjIENvbW1hbmRzIHBhcnNlcgorbXkgJGVudHJ5OworbXkgQGNtZDsKK3doaWxlICg8U1RESU4+KSB7CisJY2hvbXA7CisJQGNtZCA9IHNwbGl0KC8gLyk7CisJaWYgKGRlZmluZWQoJGNtZFswXSkpIHsKKwkJIyBMaW5lIG5vdCBibGFuaworCQlpZiAoJGNtZFswXSBlcSAiY2FwYWJpbGl0aWVzIikgeworCQkJZGllKCJUb28gbWFueSBhcmd1bWVudHMgZm9yIGNhcGFiaWxpdGllcyIpIHVubGVzcyAoIWRlZmluZWQoJGNtZFsxXSkpOworCQkJbXdfY2FwYWJpbGl0aWVzKCk7CisJCX0gZWxzaWYgKCRjbWRbMF0gZXEgImxpc3QiKSB7CisJCQlkaWUoIlRvbyBtYW55IGFyZ3VtZW50cyBmb3IgbGlzdCIpIHVubGVzcyAoIWRlZmluZWQoJGNtZFsyXSkpOworCQkJbXdfbGlzdCgkY21kWzFdKTsKKwkJfSBlbHNpZiAoJGNtZFswXSBlcSAiaW1wb3J0IikgeworCQkJZGllKCJJbnZhbGlkIGFyZ3VtZW50cyBmb3IgaW1wb3J0IikgdW5sZXNzICgkY21kWzFdIG5lICIiICYmICFkZWZpbmVkKCRjbWRbMl0pKTsKKwkJCW13X2ltcG9ydCgkY21kWzFdKTsKKwkJfSBlbHNpZiAoJGNtZFswXSBlcSAib3B0aW9uIikgeworCQkJZGllKCJUb28gbWFueSBhcmd1bWVudHMgZm9yIG9wdGlvbiIpIHVubGVzcyAoJGNtZFsxXSBuZSAiIiAmJiAkY21kWzJdIG5lICIiICYmICFkZWZpbmVkKCRjbWRbM10pKTsKKwkJCW13X29wdGlvbigkY21kWzFdLCRjbWRbMl0pOworCQl9IGVsc2lmICgkY21kWzBdIGVxICJwdXNoIikgeworCQkJbXdfcHVzaCgkY21kWzFdKTsKKwkJfSBlbHNlIHsKKwkJCXByaW50IFNUREVSUiAiVW5rbm93biBjb21tYW5kLiBBYm9ydGluZy4uLlxuIjsKKwkJCWxhc3Q7CisJCX0KKwl9IGVsc2UgeworCQkjIGJsYW5rIGxpbmU6IHdlIHNob3VsZCB0ZXJtaW5hdGUKKwkJbGFzdDsKKwl9CisKKwlCRUdJTiB7ICR8ID0gMSB9ICMgZmx1c2ggU1RET1VULCB0byBtYWtlIHN1cmUgdGhlIHByZXZpb3VzCisJCQkgIyBjb21tYW5kIGlzIGZ1bGx5IHByb2Nlc3NlZC4KK30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgRnVuY3Rpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIyBjcmVkZW50aWFsIEFQSSBtYW5hZ2VtZW50IChnZW5lcmljIGZ1bmN0aW9ucykKKworc3ViIGNyZWRlbnRpYWxfcmVhZCB7CisJbXkgJWNyZWRlbnRpYWw7CisJbXkgJHJlYWRlciA9IHNoaWZ0OworCW15ICRvcCA9IHNoaWZ0OworCXdoaWxlICg8JHJlYWRlcj4pIHsKKwkJbXkgKCRrZXksICR2YWx1ZSkgPSAvKFtePV0qKT0oLiopLzsKKwkJaWYgKG5vdCBkZWZpbmVkICRrZXkpIHsKKwkJCWRpZSAiRVJST1IgcmVjZWl2aW5nIHJlc3BvbnNlIGZyb20gZ2l0IGNyZWRlbnRpYWwgJG9wOlxuJF9cbiI7CisJCX0KKwkJJGNyZWRlbnRpYWx7JGtleX0gPSAkdmFsdWU7CisJfQorCXJldHVybiAlY3JlZGVudGlhbDsKK30KKworc3ViIGNyZWRlbnRpYWxfd3JpdGUgeworCW15ICRjcmVkZW50aWFsID0gc2hpZnQ7CisJbXkgJHdyaXRlciA9IHNoaWZ0OworCSMgdXJsIG92ZXJ3cml0ZXMgb3RoZXIgZmllbGRzLCBzbyBpdCBtdXN0IGNvbWUgZmlyc3QKKwlwcmludCAkd3JpdGVyICJ1cmw9JGNyZWRlbnRpYWwtPnt1cmx9XG4iIGlmIGV4aXN0cyAkY3JlZGVudGlhbC0+e3VybH07CisJd2hpbGUgKG15ICgka2V5LCAkdmFsdWUpID0gZWFjaCglJGNyZWRlbnRpYWwpICkgeworCQlpZiAobGVuZ3RoICR2YWx1ZSAmJiAka2V5IG5lICd1cmwnKSB7CisJCQlwcmludCAkd3JpdGVyICIka2V5PSR2YWx1ZVxuIjsKKwkJfQorCX0KK30KKworc3ViIGNyZWRlbnRpYWxfcnVuIHsKKwlteSAkb3AgPSBzaGlmdDsKKwlteSAkY3JlZGVudGlhbCA9IHNoaWZ0OworCW15ICRwaWQgPSBvcGVuMihteSAkcmVhZGVyLCBteSAkd3JpdGVyLCAiZ2l0IGNyZWRlbnRpYWwgJG9wIik7CisJY3JlZGVudGlhbF93cml0ZSgkY3JlZGVudGlhbCwgJHdyaXRlcik7CisJcHJpbnQgJHdyaXRlciAiXG4iOworCWNsb3NlKCR3cml0ZXIpOworCisJaWYgKCRvcCBlcSAiZmlsbCIpIHsKKwkJJSRjcmVkZW50aWFsID0gY3JlZGVudGlhbF9yZWFkKCRyZWFkZXIsICRvcCk7CisJfSBlbHNlIHsKKwkJaWYgKDwkcmVhZGVyPikgeworCQkJZGllICJFUlJPUiB3aGlsZSBydW5uaW5nIGdpdCBjcmVkZW50aWFsICRvcDpcbiRfIjsKKwkJfQorCX0KKwljbG9zZSgkcmVhZGVyKTsKKwl3YWl0cGlkKCRwaWQsIDApOworCW15ICRjaGlsZF9leGl0X3N0YXR1cyA9ICQ/ID4+IDg7CisJaWYgKCRjaGlsZF9leGl0X3N0YXR1cyAhPSAwKSB7CisJCWRpZSAiJ2dpdCBjcmVkZW50aWFsICRvcCcgZmFpbGVkIHdpdGggY29kZSAkY2hpbGRfZXhpdF9zdGF0dXMuIjsKKwl9Cit9CisKKyMgTWVkaWFXaWtpIEFQSSBpbnN0YW5jZSwgY3JlYXRlZCBsYXppbHkuCitteSAkbWVkaWF3aWtpOworCitzdWIgbXdfY29ubmVjdF9tYXliZSB7CisJaWYgKCRtZWRpYXdpa2kpIHsKKwkJcmV0dXJuOworCX0KKwkkbWVkaWF3aWtpID0gTWVkaWFXaWtpOjpBUEktPm5ldzsKKwkkbWVkaWF3aWtpLT57Y29uZmlnfS0+e2FwaV91cmx9ID0gIiR1cmwvYXBpLnBocCI7CisJaWYgKCR3aWtpX2xvZ2luKSB7CisJCW15ICVjcmVkZW50aWFsID0gKHVybCA9PiAkdXJsKTsKKwkJJGNyZWRlbnRpYWx7dXNlcm5hbWV9ID0gJHdpa2lfbG9naW47CisJCSRjcmVkZW50aWFse3Bhc3N3b3JkfSA9ICR3aWtpX3Bhc3N3ZDsKKwkJY3JlZGVudGlhbF9ydW4oImZpbGwiLCBcJWNyZWRlbnRpYWwpOworCQlteSAkcmVxdWVzdCA9IHtsZ25hbWUgPT4gJGNyZWRlbnRpYWx7dXNlcm5hbWV9LAorCQkJICAgICAgIGxncGFzc3dvcmQgPT4gJGNyZWRlbnRpYWx7cGFzc3dvcmR9LAorCQkJICAgICAgIGxnZG9tYWluID0+ICR3aWtpX2RvbWFpbn07CisJCWlmICgkbWVkaWF3aWtpLT5sb2dpbigkcmVxdWVzdCkpIHsKKwkJCWNyZWRlbnRpYWxfcnVuKCJhcHByb3ZlIiwgXCVjcmVkZW50aWFsKTsKKwkJCXByaW50IFNUREVSUiAiTG9nZ2VkIGluIG1lZGlhd2lraSB1c2VyIFwiJGNyZWRlbnRpYWx7dXNlcm5hbWV9XCIuXG4iOworCQl9IGVsc2UgeworCQkJcHJpbnQgU1RERVJSICJGYWlsZWQgdG8gbG9nIGluIG1lZGlhd2lraSB1c2VyIFwiJGNyZWRlbnRpYWx7dXNlcm5hbWV9XCIgb24gJHVybFxuIjsKKwkJCXByaW50IFNUREVSUiAiICAoZXJyb3IgIiAuCisJCQkJJG1lZGlhd2lraS0+e2Vycm9yfS0+e2NvZGV9IC4gJzogJyAuCisJCQkJJG1lZGlhd2lraS0+e2Vycm9yfS0+e2RldGFpbHN9IC4gIilcbiI7CisJCQljcmVkZW50aWFsX3J1bigicmVqZWN0IiwgXCVjcmVkZW50aWFsKTsKKwkJCWV4aXQgMTsKKwkJfQorCX0KK30KKworIyMgRnVuY3Rpb25zIGZvciBsaXN0aW5nIHBhZ2VzIG9uIHRoZSByZW1vdGUgd2lraQorc3ViIGdldF9td190cmFja2VkX3BhZ2VzIHsKKwlteSAkcGFnZXMgPSBzaGlmdDsKKwlnZXRfbXdfcGFnZV9saXN0KFxAdHJhY2tlZF9wYWdlcywgJHBhZ2VzKTsKK30KKworc3ViIGdldF9td19wYWdlX2xpc3QgeworCW15ICRwYWdlX2xpc3QgPSBzaGlmdDsKKwlteSAkcGFnZXMgPSBzaGlmdDsKKwlteSBAc29tZV9wYWdlcyA9IEAkcGFnZV9saXN0OworCXdoaWxlIChAc29tZV9wYWdlcykgeworCQlteSAkbGFzdCA9IDUwOworCQlpZiAoJCNzb21lX3BhZ2VzIDwgJGxhc3QpIHsKKwkJCSRsYXN0ID0gJCNzb21lX3BhZ2VzOworCQl9CisJCW15IEBzbGljZSA9IEBzb21lX3BhZ2VzWzAuLiRsYXN0XTsKKwkJZ2V0X213X2ZpcnN0X3BhZ2VzKFxAc2xpY2UsICRwYWdlcyk7CisJCUBzb21lX3BhZ2VzID0gQHNvbWVfcGFnZXNbNTEuLiQjc29tZV9wYWdlc107CisJfQorfQorCitzdWIgZ2V0X213X3RyYWNrZWRfY2F0ZWdvcmllcyB7CisJbXkgJHBhZ2VzID0gc2hpZnQ7CisJZm9yZWFjaCBteSAkY2F0ZWdvcnkgKEB0cmFja2VkX2NhdGVnb3JpZXMpIHsKKwkJaWYgKGluZGV4KCRjYXRlZ29yeSwgJzonKSA8IDApIHsKKwkJCSMgTWVkaWF3aWtpIHJlcXVpcmVzIHRoZSBDYXRlZ29yeQorCQkJIyBwcmVmaXgsIGJ1dCBsZXQncyBub3QgZm9yY2UgdGhlIHVzZXIKKwkJCSMgdG8gc3BlY2lmeSBpdC4KKwkJCSRjYXRlZ29yeSA9ICJDYXRlZ29yeToiIC4gJGNhdGVnb3J5OworCQl9CisJCW15ICRtd19wYWdlcyA9ICRtZWRpYXdpa2ktPmxpc3QoIHsKKwkJCWFjdGlvbiA9PiAncXVlcnknLAorCQkJbGlzdCA9PiAnY2F0ZWdvcnltZW1iZXJzJywKKwkJCWNtdGl0bGUgPT4gJGNhdGVnb3J5LAorCQkJY21saW1pdCA9PiAnbWF4JyB9ICkKKwkJCXx8IGRpZSAkbWVkaWF3aWtpLT57ZXJyb3J9LT57Y29kZX0gLiAnOiAnCisJCQkJLiAkbWVkaWF3aWtpLT57ZXJyb3J9LT57ZGV0YWlsc307CisJCWZvcmVhY2ggbXkgJHBhZ2UgKEB7JG13X3BhZ2VzfSkgeworCQkJJHBhZ2VzLT57JHBhZ2UtPnt0aXRsZX19ID0gJHBhZ2U7CisJCX0KKwl9Cit9CisKK3N1YiBnZXRfbXdfYWxsX3BhZ2VzIHsKKwlteSAkcGFnZXMgPSBzaGlmdDsKKwkjIE5vIHVzZXItcHJvdmlkZWQgbGlzdCwgZ2V0IHRoZSBsaXN0IG9mIHBhZ2VzIGZyb20gdGhlIEFQSS4KKwlteSAkbXdfcGFnZXMgPSAkbWVkaWF3aWtpLT5saXN0KHsKKwkJYWN0aW9uID0+ICdxdWVyeScsCisJCWxpc3QgPT4gJ2FsbHBhZ2VzJywKKwkJYXBsaW1pdCA9PiAnbWF4JworCX0pOworCWlmICghZGVmaW5lZCgkbXdfcGFnZXMpKSB7CisJCXByaW50IFNUREVSUiAiZmF0YWw6IGNvdWxkIG5vdCBnZXQgdGhlIGxpc3Qgb2Ygd2lraSBwYWdlcy5cbiI7CisJCXByaW50IFNUREVSUiAiZmF0YWw6ICckdXJsJyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSBtZWRpYXdpa2lcbiI7CisJCXByaW50IFNUREVSUiAiZmF0YWw6IG1ha2Ugc3VyZSAnJHVybC9hcGkucGhwJyBpcyBhIHZhbGlkIHBhZ2UuXG4iOworCQlleGl0IDE7CisJfQorCWZvcmVhY2ggbXkgJHBhZ2UgKEB7JG13X3BhZ2VzfSkgeworCQkkcGFnZXMtPnskcGFnZS0+e3RpdGxlfX0gPSAkcGFnZTsKKwl9Cit9CisKKyMgcXVlcmllcyB0aGUgd2lraSBmb3IgYSBzZXQgb2YgcGFnZXMuIE1lYW50IHRvIGJlIHVzZWQgd2l0aGluIGEgbG9vcAorIyBxdWVyeWluZyB0aGUgd2lraSBmb3Igc2xpY2VzIG9mIHBhZ2UgbGlzdC4KK3N1YiBnZXRfbXdfZmlyc3RfcGFnZXMgeworCW15ICRzb21lX3BhZ2VzID0gc2hpZnQ7CisJbXkgQHNvbWVfcGFnZXMgPSBAeyRzb21lX3BhZ2VzfTsKKworCW15ICRwYWdlcyA9IHNoaWZ0OworCisJIyBwYXR0ZXJuICdwYWdlMXxwYWdlMnwuLi4nIHJlcXVpcmVkIGJ5IHRoZSBBUEkKKwlteSAkdGl0bGVzID0gam9pbignfCcsIEBzb21lX3BhZ2VzKTsKKworCW15ICRtd19wYWdlcyA9ICRtZWRpYXdpa2ktPmFwaSh7CisJCWFjdGlvbiA9PiAncXVlcnknLAorCQl0aXRsZXMgPT4gJHRpdGxlcywKKwl9KTsKKwlpZiAoIWRlZmluZWQoJG13X3BhZ2VzKSkgeworCQlwcmludCBTVERFUlIgImZhdGFsOiBjb3VsZCBub3QgcXVlcnkgdGhlIGxpc3Qgb2Ygd2lraSBwYWdlcy5cbiI7CisJCXByaW50IFNUREVSUiAiZmF0YWw6ICckdXJsJyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSBtZWRpYXdpa2lcbiI7CisJCXByaW50IFNUREVSUiAiZmF0YWw6IG1ha2Ugc3VyZSAnJHVybC9hcGkucGhwJyBpcyBhIHZhbGlkIHBhZ2UuXG4iOworCQlleGl0IDE7CisJfQorCXdoaWxlIChteSAoJGlkLCAkcGFnZSkgPSBlYWNoKCV7JG13X3BhZ2VzLT57cXVlcnl9LT57cGFnZXN9fSkpIHsKKwkJaWYgKCRpZCA8IDApIHsKKwkJCXByaW50IFNUREVSUiAiV2FybmluZzogcGFnZSAkcGFnZS0+e3RpdGxlfSBub3QgZm91bmQgb24gd2lraVxuIjsKKwkJfSBlbHNlIHsKKwkJCSRwYWdlcy0+eyRwYWdlLT57dGl0bGV9fSA9ICRwYWdlOworCQl9CisJfQorfQorCisjIEdldCB0aGUgbGlzdCBvZiBwYWdlcyB0byBiZSBmZXRjaGVkIGFjY29yZGluZyB0byBjb25maWd1cmF0aW9uLgorc3ViIGdldF9td19wYWdlcyB7CisJbXdfY29ubmVjdF9tYXliZSgpOworCisJcHJpbnQgU1RERVJSICJMaXN0aW5nIHBhZ2VzIG9uIHJlbW90ZSB3aWtpLi4uXG4iOworCisJbXkgJXBhZ2VzOyAjIGhhc2ggb24gcGFnZSB0aXRsZXMgdG8gYXZvaWQgZHVwbGljYXRlcworCW15ICR1c2VyX2RlZmluZWQ7CisJaWYgKEB0cmFja2VkX3BhZ2VzKSB7CisJCSR1c2VyX2RlZmluZWQgPSAxOworCQkjIFRoZSB1c2VyIHByb3ZpZGVkIGEgbGlzdCBvZiBwYWdlcyB0aXRsZXMsIGJ1dCB3ZQorCQkjIHN0aWxsIG5lZWQgdG8gcXVlcnkgdGhlIEFQSSB0byBnZXQgdGhlIHBhZ2UgSURzLgorCQlnZXRfbXdfdHJhY2tlZF9wYWdlcyhcJXBhZ2VzKTsKKwl9CisJaWYgKEB0cmFja2VkX2NhdGVnb3JpZXMpIHsKKwkJJHVzZXJfZGVmaW5lZCA9IDE7CisJCWdldF9td190cmFja2VkX2NhdGVnb3JpZXMoXCVwYWdlcyk7CisJfQorCWlmICghJHVzZXJfZGVmaW5lZCkgeworCQlnZXRfbXdfYWxsX3BhZ2VzKFwlcGFnZXMpOworCX0KKwlpZiAoJGltcG9ydF9tZWRpYSkgeworCQlwcmludCBTVERFUlIgIkdldHRpbmcgbWVkaWEgZmlsZXMgZm9yIHNlbGVjdGVkIHBhZ2VzLi4uXG4iOworCQlpZiAoJHVzZXJfZGVmaW5lZCkgeworCQkJZ2V0X2xpbmtlZF9tZWRpYWZpbGVzKFwlcGFnZXMpOworCQl9IGVsc2UgeworCQkJZ2V0X2FsbF9tZWRpYWZpbGVzKFwlcGFnZXMpOworCQl9CisJfQorCXByaW50IFNUREVSUiAoc2NhbGFyIGtleXMgJXBhZ2VzKSAuICIgcGFnZXMgZm91bmQuXG4iOworCXJldHVybiAlcGFnZXM7Cit9CisKKyMgdXNhZ2U6ICRvdXQgPSBydW5fZ2l0KCJjb21tYW5kIGFyZ3MiKTsKKyMgICAgICAgICRvdXQgPSBydW5fZ2l0KCJjb21tYW5kIGFyZ3MiLCAicmF3Iik7ICMgZG9uJ3QgaW50ZXJwcmV0IG91dHB1dCBhcyBVVEYtOC4KK3N1YiBydW5fZ2l0IHsKKwlteSAkYXJncyA9IHNoaWZ0OworCW15ICRlbmNvZGluZyA9IChzaGlmdCB8fCAiZW5jb2RpbmcoVVRGLTgpIik7CisJb3BlbihteSAkZ2l0LCAiLXw6JGVuY29kaW5nIiwgImdpdCAiIC4gJGFyZ3MpOworCW15ICRyZXMgPSBkbyB7IGxvY2FsICQvOyA8JGdpdD4gfTsKKwljbG9zZSgkZ2l0KTsKKworCXJldHVybiAkcmVzOworfQorCisKK3N1YiBnZXRfYWxsX21lZGlhZmlsZXMgeworCW15ICRwYWdlcyA9IHNoaWZ0OworCSMgQXR0YWNoIGxpc3Qgb2YgYWxsIHBhZ2VzIGZvciBtZWRpYSBmaWxlcyBmcm9tIHRoZSBBUEksCisJIyB0aGV5IGFyZSBpbiBhIGRpZmZlcmVudCBuYW1lc3BhY2UsIG9ubHkgb25lIG5hbWVzcGFjZQorCSMgY2FuIGJlIHF1ZXJpZWQgYXQgdGhlIHNhbWUgbW9tZW50CisJbXkgJG13X3BhZ2VzID0gJG1lZGlhd2lraS0+bGlzdCh7CisJCWFjdGlvbiA9PiAncXVlcnknLAorCQlsaXN0ID0+ICdhbGxwYWdlcycsCisJCWFwbmFtZXNwYWNlID0+IGdldF9td19uYW1lc3BhY2VfaWQoIkZpbGUiKSwKKwkJYXBsaW1pdCA9PiAnbWF4JworCX0pOworCWlmICghZGVmaW5lZCgkbXdfcGFnZXMpKSB7CisJCXByaW50IFNUREVSUiAiZmF0YWw6IGNvdWxkIG5vdCBnZXQgdGhlIGxpc3Qgb2YgcGFnZXMgZm9yIG1lZGlhIGZpbGVzLlxuIjsKKwkJcHJpbnQgU1RERVJSICJmYXRhbDogJyR1cmwnIGRvZXMgbm90IGFwcGVhciB0byBiZSBhIG1lZGlhd2lraVxuIjsKKwkJcHJpbnQgU1RERVJSICJmYXRhbDogbWFrZSBzdXJlICckdXJsL2FwaS5waHAnIGlzIGEgdmFsaWQgcGFnZS5cbiI7CisJCWV4aXQgMTsKKwl9CisJZm9yZWFjaCBteSAkcGFnZSAoQHskbXdfcGFnZXN9KSB7CisJCSRwYWdlcy0+eyRwYWdlLT57dGl0bGV9fSA9ICRwYWdlOworCX0KK30KKworc3ViIGdldF9saW5rZWRfbWVkaWFmaWxlcyB7CisJbXkgJHBhZ2VzID0gc2hpZnQ7CisJbXkgQHRpdGxlcyA9IG1hcCAkXy0+e3RpdGxlfSwgdmFsdWVzKCV7JHBhZ2VzfSk7CisKKwkjIFRoZSBxdWVyeSBpcyBzcGxpdCBpbiBzbWFsbCBiYXRjaGVzIGJlY2F1c2Ugb2YgdGhlIE1XIEFQSSBsaW1pdCBvZgorCSMgdGhlIG51bWJlciBvZiBsaW5rcyB0byBiZSByZXR1cm5lZCAoNTAwIGxpbmtzIG1heCkuCisJbXkgJGJhdGNoID0gMTA7CisJd2hpbGUgKEB0aXRsZXMpIHsKKwkJaWYgKCQjdGl0bGVzIDwgJGJhdGNoKSB7CisJCQkkYmF0Y2ggPSAkI3RpdGxlczsKKwkJfQorCQlteSBAc2xpY2UgPSBAdGl0bGVzWzAuLiRiYXRjaF07CisKKwkJIyBwYXR0ZXJuICdwYWdlMXxwYWdlMnwuLi4nIHJlcXVpcmVkIGJ5IHRoZSBBUEkKKwkJbXkgJG13X3RpdGxlcyA9IGpvaW4oJ3wnLCBAc2xpY2UpOworCisJCSMgTWVkaWEgZmlsZXMgY291bGQgYmUgaW5jbHVkZWQgb3IgbGlua2VkIGZyb20KKwkJIyBhIHBhZ2UsIGdldCBhbGwgcmVsYXRlZAorCQlteSAkcXVlcnkgPSB7CisJCQlhY3Rpb24gPT4gJ3F1ZXJ5JywKKwkJCXByb3AgPT4gJ2xpbmtzfGltYWdlcycsCisJCQl0aXRsZXMgPT4gJG13X3RpdGxlcywKKwkJCXBsbmFtZXNwYWNlID0+IGdldF9td19uYW1lc3BhY2VfaWQoIkZpbGUiKSwKKwkJCXBsbGltaXQgPT4gJ21heCcKKwkJfTsKKwkJbXkgJHJlc3VsdCA9ICRtZWRpYXdpa2ktPmFwaSgkcXVlcnkpOworCisJCXdoaWxlIChteSAoJGlkLCAkcGFnZSkgPSBlYWNoKCV7JHJlc3VsdC0+e3F1ZXJ5fS0+e3BhZ2VzfX0pKSB7CisJCQlteSBAbWVkaWFfdGl0bGVzOworCQkJaWYgKGRlZmluZWQoJHBhZ2UtPntsaW5rc30pKSB7CisJCQkJbXkgQGxpbmtfdGl0bGVzID0gbWFwICRfLT57dGl0bGV9LCBAeyRwYWdlLT57bGlua3N9fTsKKwkJCQlwdXNoKEBtZWRpYV90aXRsZXMsIEBsaW5rX3RpdGxlcyk7CisJCQl9CisJCQlpZiAoZGVmaW5lZCgkcGFnZS0+e2ltYWdlc30pKSB7CisJCQkJbXkgQGltYWdlX3RpdGxlcyA9IG1hcCAkXy0+e3RpdGxlfSwgQHskcGFnZS0+e2ltYWdlc319OworCQkJCXB1c2goQG1lZGlhX3RpdGxlcywgQGltYWdlX3RpdGxlcyk7CisJCQl9CisJCQlpZiAoQG1lZGlhX3RpdGxlcykgeworCQkJCWdldF9td19wYWdlX2xpc3QoXEBtZWRpYV90aXRsZXMsICRwYWdlcyk7CisJCQl9CisJCX0KKworCQlAdGl0bGVzID0gQHRpdGxlc1soJGJhdGNoKzEpLi4kI3RpdGxlc107CisJfQorfQorCitzdWIgZ2V0X213X21lZGlhZmlsZV9mb3JfcGFnZV9yZXZpc2lvbiB7CisJIyBOYW1lIG9mIHRoZSBmaWxlIG9uIFdpa2ksIHdpdGggdGhlIHByZWZpeC4KKwlteSAkZmlsZW5hbWUgPSBzaGlmdDsKKwlteSAkdGltZXN0YW1wID0gc2hpZnQ7CisJbXkgJW1lZGlhZmlsZTsKKworCSMgU2VhcmNoIGlmIG9uIGEgbWVkaWEgZmlsZSB3aXRoIGdpdmVuIHRpbWVzdGFtcCBleGlzdHMgb24KKwkjIE1lZGlhV2lraS4gSW4gdGhhdCBjYXNlIGRvd25sb2FkIHRoZSBmaWxlLgorCW15ICRxdWVyeSA9IHsKKwkJYWN0aW9uID0+ICdxdWVyeScsCisJCXByb3AgPT4gJ2ltYWdlaW5mbycsCisJCXRpdGxlcyA9PiAiRmlsZToiIC4gJGZpbGVuYW1lLAorCQlpaXN0YXJ0ID0+ICR0aW1lc3RhbXAsCisJCWlpZW5kID0+ICR0aW1lc3RhbXAsCisJCWlpcHJvcCA9PiAndGltZXN0YW1wfGFyY2hpdmVuYW1lfHVybCcsCisJCWlpbGltaXQgPT4gMQorCX07CisJbXkgJHJlc3VsdCA9ICRtZWRpYXdpa2ktPmFwaSgkcXVlcnkpOworCisJbXkgKCRmaWxlaWQsICRmaWxlKSA9IGVhY2goICV7JHJlc3VsdC0+e3F1ZXJ5fS0+e3BhZ2VzfX0gKTsKKwkjIElmIG5vdCBkZWZpbmVkIGl0IG1lYW5zIHRoZXJlIGlzIG5vIHJldmlzaW9uIG9mIHRoZSBmaWxlIGZvcgorCSMgZ2l2ZW4gdGltZXN0YW1wLgorCWlmIChkZWZpbmVkKCRmaWxlLT57aW1hZ2VpbmZvfSkpIHsKKwkJJG1lZGlhZmlsZXt0aXRsZX0gPSAkZmlsZW5hbWU7CisKKwkJbXkgJGZpbGVpbmZvID0gcG9wKEB7JGZpbGUtPntpbWFnZWluZm99fSk7CisJCSRtZWRpYWZpbGV7dGltZXN0YW1wfSA9ICRmaWxlaW5mby0+e3RpbWVzdGFtcH07CisJCSMgTWVkaWF3aWtpOjpBUEkncyBkb3dubG9hZCBmdW5jdGlvbiBkb2Vzbid0IHN1cHBvcnQgaHR0cHMgVVJMcworCQkjIGFuZCBjYW4ndCBkb3dubG9hZCBvbGQgdmVyc2lvbnMgb2YgZmlsZXMuCisJCXByaW50IFNUREVSUiAiXHREb3dubG9hZGluZyBmaWxlICRtZWRpYWZpbGV7dGl0bGV9LCB2ZXJzaW9uICRtZWRpYWZpbGV7dGltZXN0YW1wfVxuIjsKKwkJJG1lZGlhZmlsZXtjb250ZW50fSA9IGRvd25sb2FkX213X21lZGlhZmlsZSgkZmlsZWluZm8tPnt1cmx9KTsKKwl9CisJcmV0dXJuICVtZWRpYWZpbGU7Cit9CisKK3N1YiBkb3dubG9hZF9td19tZWRpYWZpbGUgeworCW15ICR1cmwgPSBzaGlmdDsKKworCW15ICRyZXNwb25zZSA9ICRtZWRpYXdpa2ktPnt1YX0tPmdldCgkdXJsKTsKKwlpZiAoJHJlc3BvbnNlLT5jb2RlID09IDIwMCkgeworCQlyZXR1cm4gJHJlc3BvbnNlLT5kZWNvZGVkX2NvbnRlbnQ7CisJfSBlbHNlIHsKKwkJcHJpbnQgU1RERVJSICJFcnJvciBkb3dubG9hZGluZyBtZWRpYWZpbGUgZnJvbSA6XG4iOworCQlwcmludCBTVERFUlIgIlVSTDogJHVybFxuIjsKKwkJcHJpbnQgU1RERVJSICJTZXJ2ZXIgcmVzcG9uc2U6ICIgLiAkcmVzcG9uc2UtPmNvZGUgLiAiICIgLiAkcmVzcG9uc2UtPm1lc3NhZ2UgLiAiXG4iOworCQlleGl0IDE7CisJfQorfQorCitzdWIgZ2V0X2xhc3RfbG9jYWxfcmV2aXNpb24geworCSMgR2V0IG5vdGUgcmVnYXJkaW5nIGxhc3QgbWVkaWF3aWtpIHJldmlzaW9uCisJbXkgJG5vdGUgPSBydW5fZ2l0KCJub3RlcyAtLXJlZj0kcmVtb3RlbmFtZS9tZWRpYXdpa2kgc2hvdyByZWZzL21lZGlhd2lraS8kcmVtb3RlbmFtZS9tYXN0ZXIgMj4vZGV2L251bGwiKTsKKwlteSBAbm90ZV9pbmZvID0gc3BsaXQoLyAvLCAkbm90ZSk7CisKKwlteSAkbGFzdHJldmlzaW9uX251bWJlcjsKKwlpZiAoIShkZWZpbmVkKCRub3RlX2luZm9bMF0pICYmICRub3RlX2luZm9bMF0gZXEgIm1lZGlhd2lraV9yZXZpc2lvbjoiKSkgeworCQlwcmludCBTVERFUlIgIk5vIHByZXZpb3VzIG1lZGlhd2lraSByZXZpc2lvbiBmb3VuZCI7CisJCSRsYXN0cmV2aXNpb25fbnVtYmVyID0gMDsKKwl9IGVsc2UgeworCQkjIE5vdGVzIGFyZSBmb3JtYXR0ZWQgOiBtZWRpYXdpa2lfcmV2aXNpb246ICNudW1iZXIKKwkJJGxhc3RyZXZpc2lvbl9udW1iZXIgPSAkbm90ZV9pbmZvWzFdOworCQljaG9tcCgkbGFzdHJldmlzaW9uX251bWJlcik7CisJCXByaW50IFNUREVSUiAiTGFzdCBsb2NhbCBtZWRpYXdpa2kgcmV2aXNpb24gZm91bmQgaXMgJGxhc3RyZXZpc2lvbl9udW1iZXIiOworCX0KKwlyZXR1cm4gJGxhc3RyZXZpc2lvbl9udW1iZXI7Cit9CisKKyMgUmVtZW1iZXIgdGhlIHRpbWVzdGFtcCBjb3JyZXNwb25kaW5nIHRvIGEgcmV2aXNpb24gaWQuCitteSAlYmFzZXRpbWVzdGFtcHM7CisKKyMgR2V0IHRoZSBsYXN0IHJlbW90ZSByZXZpc2lvbiB3aXRob3V0IHRha2luZyBpbiBhY2NvdW50IHdoaWNoIHBhZ2VzIGFyZQorIyB0cmFja2VkIG9yIG5vdC4gVGhpcyBmdW5jdGlvbiBtYWtlcyBhIHNpbmdsZSByZXF1ZXN0IHRvIHRoZSB3aWtpIHRodXMKKyMgYXZvaWQgYSBsb29wIG9udG8gYWxsIHRyYWNrZWQgcGFnZXMuIFRoaXMgaXMgdXNlZnVsIGZvciB0aGUgZmV0Y2gtYnktcmV2CisjIG9wdGlvbi4KK3N1YiBnZXRfbGFzdF9nbG9iYWxfcmVtb3RlX3JldiB7CisJbXdfY29ubmVjdF9tYXliZSgpOworCisJbXkgJHF1ZXJ5ID0geworCQlhY3Rpb24gPT4gJ3F1ZXJ5JywKKwkJbGlzdCA9PiAncmVjZW50Y2hhbmdlcycsCisJCXByb3AgPT4gJ3JldmlzaW9ucycsCisJCXJjbGltaXQgPT4gJzEnLAorCQlyY2RpciA9PiAnb2xkZXInLAorCX07CisJbXkgJHJlc3VsdCA9ICRtZWRpYXdpa2ktPmFwaSgkcXVlcnkpOworCXJldHVybiAkcmVzdWx0LT57cXVlcnl9LT57cmVjZW50Y2hhbmdlc31bMF0tPntyZXZpZH07Cit9CisKKyMgR2V0IHRoZSBsYXN0IHJlbW90ZSByZXZpc2lvbiBjb25jZXJuaW5nIHRoZSB0cmFja2VkIHBhZ2VzIGFuZCB0aGUgdHJhY2tlZAorIyBjYXRlZ29yaWVzLgorc3ViIGdldF9sYXN0X3JlbW90ZV9yZXZpc2lvbiB7CisJbXdfY29ubmVjdF9tYXliZSgpOworCisJbXkgJXBhZ2VzX2hhc2ggPSBnZXRfbXdfcGFnZXMoKTsKKwlteSBAcGFnZXMgPSB2YWx1ZXMoJXBhZ2VzX2hhc2gpOworCisJbXkgJG1heF9yZXZfbnVtID0gMDsKKworCXByaW50IFNUREVSUiAiR2V0dGluZyBsYXN0IHJldmlzaW9uIGlkIG9uIHRyYWNrZWQgcGFnZXMuLi5cbiI7CisKKwlmb3JlYWNoIG15ICRwYWdlIChAcGFnZXMpIHsKKwkJbXkgJGlkID0gJHBhZ2UtPntwYWdlaWR9OworCisJCW15ICRxdWVyeSA9IHsKKwkJCWFjdGlvbiA9PiAncXVlcnknLAorCQkJcHJvcCA9PiAncmV2aXNpb25zJywKKwkJCXJ2cHJvcCA9PiAnaWRzfHRpbWVzdGFtcCcsCisJCQlwYWdlaWRzID0+ICRpZCwKKwkJfTsKKworCQlteSAkcmVzdWx0ID0gJG1lZGlhd2lraS0+YXBpKCRxdWVyeSk7CisKKwkJbXkgJGxhc3RyZXYgPSBwb3AoQHskcmVzdWx0LT57cXVlcnl9LT57cGFnZXN9LT57JGlkfS0+e3JldmlzaW9uc319KTsKKworCQkkYmFzZXRpbWVzdGFtcHN7JGxhc3RyZXYtPntyZXZpZH19ID0gJGxhc3RyZXYtPnt0aW1lc3RhbXB9OworCisJCSRtYXhfcmV2X251bSA9ICgkbGFzdHJldi0+e3JldmlkfSA+ICRtYXhfcmV2X251bSA/ICRsYXN0cmV2LT57cmV2aWR9IDogJG1heF9yZXZfbnVtKTsKKwl9CisKKwlwcmludCBTVERFUlIgIkxhc3QgcmVtb3RlIHJldmlzaW9uIGZvdW5kIGlzICRtYXhfcmV2X251bS5cbiI7CisJcmV0dXJuICRtYXhfcmV2X251bTsKK30KKworIyBDbGVhbiBjb250ZW50IGJlZm9yZSBzZW5kaW5nIGl0IHRvIE1lZGlhV2lraQorc3ViIG1lZGlhd2lraV9jbGVhbiB7CisJbXkgJHN0cmluZyA9IHNoaWZ0OworCW15ICRwYWdlX2NyZWF0ZWQgPSBzaGlmdDsKKwkjIE1lZGlhd2lraSBkb2VzIG5vdCBhbGxvdyBibGFuayBzcGFjZSBhdCB0aGUgZW5kIG9mIGEgcGFnZSBhbmQgZW5kcyB3aXRoIGEgc2luZ2xlIFxuLgorCSMgVGhpcyBmdW5jdGlvbiByaWdodCB0cmltcyBhIHN0cmluZyBhbmQgYWRkcyBhIFxuIGF0IHRoZSBlbmQgdG8gZm9sbG93IHRoaXMgcnVsZQorCSRzdHJpbmcgPX4gcy9ccyskLy87CisJaWYgKCRzdHJpbmcgZXEgIiIgJiYgJHBhZ2VfY3JlYXRlZCkgeworCQkjIENyZWF0aW5nIGVtcHR5IHBhZ2VzIGlzIGZvcmJpZGRlbi4KKwkJJHN0cmluZyA9IEVNUFRZX0NPTlRFTlQ7CisJfQorCXJldHVybiAkc3RyaW5nLiJcbiI7Cit9CisKKyMgRmlsdGVyIGFwcGxpZWQgb24gTWVkaWFXaWtpIGRhdGEgYmVmb3JlIGFkZGluZyB0aGVtIHRvIEdpdAorc3ViIG1lZGlhd2lraV9zbXVkZ2UgeworCW15ICRzdHJpbmcgPSBzaGlmdDsKKwlpZiAoJHN0cmluZyBlcSBFTVBUWV9DT05URU5UKSB7CisJCSRzdHJpbmcgPSAiIjsKKwl9CisJIyBUaGlzIFxuIGlzIGltcG9ydGFudC4gVGhpcyBpcyBkdWUgdG8gbWVkaWF3aWtpJ3Mgd2F5IHRvIGhhbmRsZSBlbmQgb2YgZmlsZXMuCisJcmV0dXJuICRzdHJpbmcuIlxuIjsKK30KKworc3ViIG1lZGlhd2lraV9jbGVhbl9maWxlbmFtZSB7CisJbXkgJGZpbGVuYW1lID0gc2hpZnQ7CisJJGZpbGVuYW1lID1+IHMvQHtbU0xBU0hfUkVQTEFDRU1FTlRdfS9cLy9nOworCSMgWywgXSwgfCwgeywgYW5kIH0gYXJlIGZvcmJpZGRlbiBieSBNZWRpYVdpa2ksIGV2ZW4gVVJMLWVuY29kZWQuCisJIyBEbyBhIHZhcmlhbnQgb2YgVVJMLWVuY29kaW5nLCBpLmUuIGxvb2tzIGxpa2UgVVJMLWVuY29kaW5nLAorCSMgYnV0IHdpdGggXyBhZGRlZCB0byBwcmV2ZW50IE1lZGlhV2lraSBmcm9tIHRoaW5raW5nIHRoaXMgaXMKKwkjIGFuIGFjdHVhbCBzcGVjaWFsIGNoYXJhY3Rlci4KKwkkZmlsZW5hbWUgPX4gcy9bXFtcXVx7XH1cfF0vc3ByaW50ZigiXyUlXyV4Iiwgb3JkKCQmKSkvZ2U7CisJIyBJZiB3ZSB1c2UgdGhlIHVyaSBlc2NhcGUgYmVmb3JlCisJIyB3ZSBzaG91bGQgdW5lc2NhcGUgaGVyZSwgYmVmb3JlIGFueXRoaW5nCisKKwlyZXR1cm4gJGZpbGVuYW1lOworfQorCitzdWIgbWVkaWF3aWtpX3NtdWRnZV9maWxlbmFtZSB7CisJbXkgJGZpbGVuYW1lID0gc2hpZnQ7CisJJGZpbGVuYW1lID1+IHMvXC8vQHtbU0xBU0hfUkVQTEFDRU1FTlRdfS9nOworCSRmaWxlbmFtZSA9fiBzLyAvXy9nOworCSMgRGVjb2RlIGZvcmJpZGRlbiBjaGFyYWN0ZXJzIGVuY29kZWQgaW4gbWVkaWF3aWtpX2NsZWFuX2ZpbGVuYW1lCisJJGZpbGVuYW1lID1+IHMvXyVfKFswLTlhLWZBLUZdWzAtOWEtZkEtRl0pL3NwcmludGYoIiVjIiwgaGV4KCQxKSkvZ2U7CisJcmV0dXJuICRmaWxlbmFtZTsKK30KKworc3ViIGxpdGVyYWxfZGF0YSB7CisJbXkgKCRjb250ZW50KSA9IEBfOworCXByaW50IFNURE9VVCAiZGF0YSAiLCBieXRlczo6bGVuZ3RoKCRjb250ZW50KSwgIlxuIiwgJGNvbnRlbnQ7Cit9CisKK3N1YiBsaXRlcmFsX2RhdGFfcmF3IHsKKwkjIE91dHB1dCBwb3NzaWJseSBiaW5hcnkgY29udGVudC4KKwlteSAoJGNvbnRlbnQpID0gQF87CisJIyBBdm9pZCBjb25mdXNpb24gYmV0d2VlbiBzaXplIGluIGJ5dGVzIGFuZCBpbiBjaGFyYWN0ZXJzCisJdXRmODo6ZG93bmdyYWRlKCRjb250ZW50KTsKKwliaW5tb2RlIFNURE9VVCwgIjpyYXciOworCXByaW50IFNURE9VVCAiZGF0YSAiLCBieXRlczo6bGVuZ3RoKCRjb250ZW50KSwgIlxuIiwgJGNvbnRlbnQ7CisJYmlubW9kZSBTVERPVVQsICI6dXRmOCI7Cit9CisKK3N1YiBtd19jYXBhYmlsaXRpZXMgeworCSMgUmV2aXNpb25zIGFyZSBpbXBvcnRlZCB0byB0aGUgcHJpdmF0ZSBuYW1lc3BhY2UKKwkjIHJlZnMvbWVkaWF3aWtpLyRyZW1vdGVuYW1lLyBieSB0aGUgaGVscGVyIGFuZCBmZXRjaGVkIGludG8KKwkjIHJlZnMvcmVtb3Rlcy8kcmVtb3RlbmFtZSBsYXRlciBieSBmZXRjaC4KKwlwcmludCBTVERPVVQgInJlZnNwZWMgcmVmcy9oZWFkcy8qOnJlZnMvbWVkaWF3aWtpLyRyZW1vdGVuYW1lLypcbiI7CisJcHJpbnQgU1RET1VUICJpbXBvcnRcbiI7CisJcHJpbnQgU1RET1VUICJsaXN0XG4iOworCXByaW50IFNURE9VVCAicHVzaFxuIjsKKwlwcmludCBTVERPVVQgIlxuIjsKK30KKworc3ViIG13X2xpc3QgeworCSMgTWVkaWFXaWtpIGRvIG5vdCBoYXZlIGJyYW5jaGVzLCB3ZSBjb25zaWRlciBvbmUgYnJhbmNoIGFyYml0cmFyaWx5CisJIyBjYWxsZWQgbWFzdGVyLCBhbmQgSEVBRCBwb2ludGluZyB0byBpdC4KKwlwcmludCBTVERPVVQgIj8gcmVmcy9oZWFkcy9tYXN0ZXJcbiI7CisJcHJpbnQgU1RET1VUICJcQHJlZnMvaGVhZHMvbWFzdGVyIEhFQURcbiI7CisJcHJpbnQgU1RET1VUICJcbiI7Cit9CisKK3N1YiBtd19vcHRpb24geworCXByaW50IFNUREVSUiAicmVtb3RlLWhlbHBlciBjb21tYW5kICdvcHRpb24gJF9bMF0nIG5vdCB5ZXQgaW1wbGVtZW50ZWRcbiI7CisJcHJpbnQgU1RET1VUICJ1bnN1cHBvcnRlZFxuIjsKK30KKworc3ViIGZldGNoX213X3JldmlzaW9uc19mb3JfcGFnZSB7CisJbXkgJHBhZ2UgPSBzaGlmdDsKKwlteSAkaWQgPSBzaGlmdDsKKwlteSAkZmV0Y2hfZnJvbSA9IHNoaWZ0OworCW15IEBwYWdlX3JldnMgPSAoKTsKKwlteSAkcXVlcnkgPSB7CisJCWFjdGlvbiA9PiAncXVlcnknLAorCQlwcm9wID0+ICdyZXZpc2lvbnMnLAorCQlydnByb3AgPT4gJ2lkcycsCisJCXJ2ZGlyID0+ICduZXdlcicsCisJCXJ2c3RhcnRpZCA9PiAkZmV0Y2hfZnJvbSwKKwkJcnZsaW1pdCA9PiA1MDAsCisJCXBhZ2VpZHMgPT4gJGlkLAorCX07CisKKwlteSAkcmV2bnVtID0gMDsKKwkjIEdldCA1MDAgcmV2aXNpb25zIGF0IGEgdGltZSBkdWUgdG8gdGhlIG1lZGlhd2lraSBhcGkgbGltaXQKKwl3aGlsZSAoMSkgeworCQlteSAkcmVzdWx0ID0gJG1lZGlhd2lraS0+YXBpKCRxdWVyeSk7CisKKwkJIyBQYXJzZSBlYWNoIG9mIHRob3NlIDUwMCByZXZpc2lvbnMKKwkJZm9yZWFjaCBteSAkcmV2aXNpb24gKEB7JHJlc3VsdC0+e3F1ZXJ5fS0+e3BhZ2VzfS0+eyRpZH0tPntyZXZpc2lvbnN9fSkgeworCQkJbXkgJHBhZ2VfcmV2X2lkczsKKwkJCSRwYWdlX3Jldl9pZHMtPntwYWdlaWR9ID0gJHBhZ2UtPntwYWdlaWR9OworCQkJJHBhZ2VfcmV2X2lkcy0+e3JldmlkfSA9ICRyZXZpc2lvbi0+e3JldmlkfTsKKwkJCXB1c2goQHBhZ2VfcmV2cywgJHBhZ2VfcmV2X2lkcyk7CisJCQkkcmV2bnVtKys7CisJCX0KKwkJbGFzdCB1bmxlc3MgJHJlc3VsdC0+eydxdWVyeS1jb250aW51ZSd9OworCQkkcXVlcnktPntydnN0YXJ0aWR9ID0gJHJlc3VsdC0+eydxdWVyeS1jb250aW51ZSd9LT57cmV2aXNpb25zfS0+e3J2c3RhcnRpZH07CisJfQorCWlmICgkc2hhbGxvd19pbXBvcnQgJiYgQHBhZ2VfcmV2cykgeworCQlwcmludCBTVERFUlIgIiAgRm91bmQgMSByZXZpc2lvbiAoc2hhbGxvdyBpbXBvcnQpLlxuIjsKKwkJQHBhZ2VfcmV2cyA9IHNvcnQgeyRiLT57cmV2aWR9IDw9PiAkYS0+e3JldmlkfX0gKEBwYWdlX3JldnMpOworCQlyZXR1cm4gJHBhZ2VfcmV2c1swXTsKKwl9CisJcHJpbnQgU1RERVJSICIgIEZvdW5kICIsICRyZXZudW0sICIgcmV2aXNpb24ocykuXG4iOworCXJldHVybiBAcGFnZV9yZXZzOworfQorCitzdWIgZmV0Y2hfbXdfcmV2aXNpb25zIHsKKwlteSAkcGFnZXMgPSBzaGlmdDsgbXkgQHBhZ2VzID0gQHskcGFnZXN9OworCW15ICRmZXRjaF9mcm9tID0gc2hpZnQ7CisKKwlteSBAcmV2aXNpb25zID0gKCk7CisJbXkgJG4gPSAxOworCWZvcmVhY2ggbXkgJHBhZ2UgKEBwYWdlcykgeworCQlteSAkaWQgPSAkcGFnZS0+e3BhZ2VpZH07CisKKwkJcHJpbnQgU1RERVJSICJwYWdlICRuLyIsIHNjYWxhcihAcGFnZXMpLCAiOiAiLiAkcGFnZS0+e3RpdGxlfSAuIlxuIjsKKwkJJG4rKzsKKwkJbXkgQHBhZ2VfcmV2cyA9IGZldGNoX213X3JldmlzaW9uc19mb3JfcGFnZSgkcGFnZSwgJGlkLCAkZmV0Y2hfZnJvbSk7CisJCUByZXZpc2lvbnMgPSAoQHBhZ2VfcmV2cywgQHJldmlzaW9ucyk7CisJfQorCisJcmV0dXJuICgkbiwgQHJldmlzaW9ucyk7Cit9CisKK3N1YiBmZV9lc2NhcGVfcGF0aCB7CisgICAgbXkgJHBhdGggPSBzaGlmdDsKKyAgICAkcGF0aCA9fiBzL1xcL1xcXFwvZzsKKyAgICAkcGF0aCA9fiBzLyIvXFwiL2c7CisgICAgJHBhdGggPX4gcy9cbi9cXG4vZzsKKyAgICByZXR1cm4gJyInIC4gJHBhdGggLiAnIic7Cit9CisKK3N1YiBpbXBvcnRfZmlsZV9yZXZpc2lvbiB7CisJbXkgJGNvbW1pdCA9IHNoaWZ0OworCW15ICVjb21taXQgPSAleyRjb21taXR9OworCW15ICRmdWxsX2ltcG9ydCA9IHNoaWZ0OworCW15ICRuID0gc2hpZnQ7CisJbXkgJG1lZGlhZmlsZSA9IHNoaWZ0OworCW15ICVtZWRpYWZpbGU7CisJaWYgKCRtZWRpYWZpbGUpIHsKKwkJJW1lZGlhZmlsZSA9ICV7JG1lZGlhZmlsZX07CisJfQorCisJbXkgJHRpdGxlID0gJGNvbW1pdHt0aXRsZX07CisJbXkgJGNvbW1lbnQgPSAkY29tbWl0e2NvbW1lbnR9OworCW15ICRjb250ZW50ID0gJGNvbW1pdHtjb250ZW50fTsKKwlteSAkYXV0aG9yID0gJGNvbW1pdHthdXRob3J9OworCW15ICRkYXRlID0gJGNvbW1pdHtkYXRlfTsKKworCXByaW50IFNURE9VVCAiY29tbWl0IHJlZnMvbWVkaWF3aWtpLyRyZW1vdGVuYW1lL21hc3RlclxuIjsKKwlwcmludCBTVERPVVQgIm1hcmsgOiRuXG4iOworCXByaW50IFNURE9VVCAiY29tbWl0dGVyICRhdXRob3IgPCRhdXRob3JcQCR3aWtpX25hbWU+ICIsICRkYXRlLT5lcG9jaCwgIiArMDAwMFxuIjsKKwlsaXRlcmFsX2RhdGEoJGNvbW1lbnQpOworCisJIyBJZiBpdCdzIG5vdCBhIGNsb25lLCB3ZSBuZWVkIHRvIGtub3cgd2hlcmUgdG8gc3RhcnQgZnJvbQorCWlmICghJGZ1bGxfaW1wb3J0ICYmICRuID09IDEpIHsKKwkJcHJpbnQgU1RET1VUICJmcm9tIHJlZnMvbWVkaWF3aWtpLyRyZW1vdGVuYW1lL21hc3Rlcl4wXG4iOworCX0KKwlpZiAoJGNvbnRlbnQgbmUgREVMRVRFRF9DT05URU5UKSB7CisJCXByaW50IFNURE9VVCAiTSA2NDQgaW5saW5lICIgLgorCQkgICAgZmVfZXNjYXBlX3BhdGgoJHRpdGxlIC4gIi5tdyIpIC4gIlxuIjsKKwkJbGl0ZXJhbF9kYXRhKCRjb250ZW50KTsKKwkJaWYgKCVtZWRpYWZpbGUpIHsKKwkJCXByaW50IFNURE9VVCAiTSA2NDQgaW5saW5lICIKKwkJCSAgICAuIGZlX2VzY2FwZV9wYXRoKCRtZWRpYWZpbGV7dGl0bGV9KSAuICJcbiI7CisJCQlsaXRlcmFsX2RhdGFfcmF3KCRtZWRpYWZpbGV7Y29udGVudH0pOworCQl9CisJCXByaW50IFNURE9VVCAiXG5cbiI7CisJfSBlbHNlIHsKKwkJcHJpbnQgU1RET1VUICJEICIgLiBmZV9lc2NhcGVfcGF0aCgkdGl0bGUgLiAiLm13IikgLiAiXG4iOworCX0KKworCSMgbWVkaWF3aWtpIHJldmlzaW9uIG51bWJlciBpbiB0aGUgZ2l0IG5vdGUKKwlpZiAoJGZ1bGxfaW1wb3J0ICYmICRuID09IDEpIHsKKwkJcHJpbnQgU1RET1VUICJyZXNldCByZWZzL25vdGVzLyRyZW1vdGVuYW1lL21lZGlhd2lraVxuIjsKKwl9CisJcHJpbnQgU1RET1VUICJjb21taXQgcmVmcy9ub3Rlcy8kcmVtb3RlbmFtZS9tZWRpYXdpa2lcbiI7CisJcHJpbnQgU1RET1VUICJjb21taXR0ZXIgJGF1dGhvciA8JGF1dGhvclxAJHdpa2lfbmFtZT4gIiwgJGRhdGUtPmVwb2NoLCAiICswMDAwXG4iOworCWxpdGVyYWxfZGF0YSgiTm90ZSBhZGRlZCBieSBnaXQtbWVkaWF3aWtpIGR1cmluZyBpbXBvcnQiKTsKKwlpZiAoISRmdWxsX2ltcG9ydCAmJiAkbiA9PSAxKSB7CisJCXByaW50IFNURE9VVCAiZnJvbSByZWZzL25vdGVzLyRyZW1vdGVuYW1lL21lZGlhd2lraV4wXG4iOworCX0KKwlwcmludCBTVERPVVQgIk4gaW5saW5lIDokblxuIjsKKwlsaXRlcmFsX2RhdGEoIm1lZGlhd2lraV9yZXZpc2lvbjogIiAuICRjb21taXR7bXdfcmV2aXNpb259KTsKKwlwcmludCBTVERPVVQgIlxuXG4iOworfQorCisjIHBhcnNlIGEgc2VxdWVuY2Ugb2YKKyMgPGNtZD4gPGFyZzE+CisjIDxjbWQ+IDxhcmcyPgorIyBcbgorIyAobGlrZSBiYXRjaCBzZXF1ZW5jZSBvZiBpbXBvcnQgYW5kIHNlcXVlbmNlIG9mIHB1c2ggc3RhdGVtZW50cykKK3N1YiBnZXRfbW9yZV9yZWZzIHsKKwlteSAkY21kID0gc2hpZnQ7CisJbXkgQHJlZnM7CisJd2hpbGUgKDEpIHsKKwkJbXkgJGxpbmUgPSA8U1RESU4+OworCQlpZiAoJGxpbmUgPX4gbS9eJGNtZCAoLiopJC8pIHsKKwkJCXB1c2goQHJlZnMsICQxKTsKKwkJfSBlbHNpZiAoJGxpbmUgZXEgIlxuIikgeworCQkJcmV0dXJuIEByZWZzOworCQl9IGVsc2UgeworCQkJZGllKCJJbnZhbGlkIGNvbW1hbmQgaW4gYSAnJGNtZCcgYmF0Y2g6ICIuICRfKTsKKwkJfQorCX0KK30KKworc3ViIG13X2ltcG9ydCB7CisJIyBtdWx0aXBsZSBpbXBvcnQgY29tbWFuZHMgY2FuIGZvbGxvdyBlYWNoIG90aGVyLgorCW15IEByZWZzID0gKHNoaWZ0LCBnZXRfbW9yZV9yZWZzKCJpbXBvcnQiKSk7CisJZm9yZWFjaCBteSAkcmVmIChAcmVmcykgeworCQltd19pbXBvcnRfcmVmKCRyZWYpOworCX0KKwlwcmludCBTVERPVVQgImRvbmVcbiI7Cit9CisKK3N1YiBtd19pbXBvcnRfcmVmIHsKKwlteSAkcmVmID0gc2hpZnQ7CisJIyBUaGUgcmVtb3RlIGhlbHBlciB3aWxsIGNhbGwgImltcG9ydCBIRUFEIiBhbmQKKwkjICJpbXBvcnQgcmVmcy9oZWFkcy9tYXN0ZXIiLgorCSMgU2luY2UgSEVBRCBpcyBhIHN5bWJvbGljIHJlZiB0byBtYXN0ZXIgKGJ5IGNvbnZlbnRpb24sCisJIyBmb2xsb3dlZCBieSB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kICJsaXN0IiB0aGF0IHdlIGdhdmUpLAorCSMgd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBpbiB0aGlzIGNhc2UuCisJaWYgKCRyZWYgZXEgIkhFQUQiKSB7CisJCXJldHVybjsKKwl9CisKKwltd19jb25uZWN0X21heWJlKCk7CisKKwlwcmludCBTVERFUlIgIlNlYXJjaGluZyByZXZpc2lvbnMuLi5cbiI7CisJbXkgJGxhc3RfbG9jYWwgPSBnZXRfbGFzdF9sb2NhbF9yZXZpc2lvbigpOworCW15ICRmZXRjaF9mcm9tID0gJGxhc3RfbG9jYWwgKyAxOworCWlmICgkZmV0Y2hfZnJvbSA9PSAxKSB7CisJCXByaW50IFNUREVSUiAiLCBmZXRjaGluZyBmcm9tIGJlZ2lubmluZy5cbiI7CisJfSBlbHNlIHsKKwkJcHJpbnQgU1RERVJSICIsIGZldGNoaW5nIGZyb20gaGVyZS5cbiI7CisJfQorCisJbXkgJG4gPSAwOworCWlmICgkZmV0Y2hfc3RyYXRlZ3kgZXEgImJ5X3JldiIpIHsKKwkJcHJpbnQgU1RERVJSICJGZXRjaGluZyAmIHdyaXRpbmcgZXhwb3J0IGRhdGEgYnkgcmV2cy4uLlxuIjsKKwkJJG4gPSBtd19pbXBvcnRfcmVmX2J5X3JldnMoJGZldGNoX2Zyb20pOworCX0gZWxzaWYgKCRmZXRjaF9zdHJhdGVneSBlcSAiYnlfcGFnZSIpIHsKKwkJcHJpbnQgU1RERVJSICJGZXRjaGluZyAmIHdyaXRpbmcgZXhwb3J0IGRhdGEgYnkgcGFnZXMuLi5cbiI7CisJCSRuID0gbXdfaW1wb3J0X3JlZl9ieV9wYWdlcygkZmV0Y2hfZnJvbSk7CisJfSBlbHNlIHsKKwkJcHJpbnQgU1RERVJSICJmYXRhbDogaW52YWxpZCBmZXRjaCBzdHJhdGVneSBcIiRmZXRjaF9zdHJhdGVneVwiLlxuIjsKKwkJcHJpbnQgU1RERVJSICJDaGVjayB5b3VyIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHJlbW90ZS4kcmVtb3RlbmFtZS5mZXRjaFN0cmF0ZWd5IGFuZCBtZWRpYXdpa2kuZmV0Y2hTdHJhdGVneVxuIjsKKwkJZXhpdCAxOworCX0KKworCWlmICgkZmV0Y2hfZnJvbSA9PSAxICYmICRuID09IDApIHsKKwkJcHJpbnQgU1RERVJSICJZb3UgYXBwZWFyIHRvIGhhdmUgY2xvbmVkIGFuIGVtcHR5IE1lZGlhV2lraS5cbiI7CisJCSMgU29tZXRoaW5nIGhhcyB0byBiZSBkb25lIHJlbW90ZS1oZWxwZXIgc2lkZS4gSWYgbm90aGluZyBpcyBkb25lLCBhbiBlcnJvciBpcworCQkjIHRocm93biBzYXlpbmcgdGhhdCBIRUFEIGlzIHJlZmVycmluZyB0byB1bmtub3duIG9iamVjdCAwMDAwMDAwMDAwMDAwMDAwMDAwCisJCSMgYW5kIHRoZSBjbG9uZSBmYWlscy4KKwl9Cit9CisKK3N1YiBtd19pbXBvcnRfcmVmX2J5X3BhZ2VzIHsKKworCW15ICRmZXRjaF9mcm9tID0gc2hpZnQ7CisJbXkgJXBhZ2VzX2hhc2ggPSBnZXRfbXdfcGFnZXMoKTsKKwlteSBAcGFnZXMgPSB2YWx1ZXMoJXBhZ2VzX2hhc2gpOworCisJbXkgKCRuLCBAcmV2aXNpb25zKSA9IGZldGNoX213X3JldmlzaW9ucyhcQHBhZ2VzLCAkZmV0Y2hfZnJvbSk7CisKKwlAcmV2aXNpb25zID0gc29ydCB7JGEtPntyZXZpZH0gPD0+ICRiLT57cmV2aWR9fSBAcmV2aXNpb25zOworCW15IEByZXZpc2lvbl9pZHMgPSBtYXAgJF8tPntyZXZpZH0sIEByZXZpc2lvbnM7CisKKwlyZXR1cm4gbXdfaW1wb3J0X3JldmlkcygkZmV0Y2hfZnJvbSwgXEByZXZpc2lvbl9pZHMsIFwlcGFnZXNfaGFzaCk7Cit9CisKK3N1YiBtd19pbXBvcnRfcmVmX2J5X3JldnMgeworCisJbXkgJGZldGNoX2Zyb20gPSBzaGlmdDsKKwlteSAlcGFnZXNfaGFzaCA9IGdldF9td19wYWdlcygpOworCisJbXkgJGxhc3RfcmVtb3RlID0gZ2V0X2xhc3RfZ2xvYmFsX3JlbW90ZV9yZXYoKTsKKwlteSBAcmV2aXNpb25faWRzID0gJGZldGNoX2Zyb20uLiRsYXN0X3JlbW90ZTsKKwlyZXR1cm4gbXdfaW1wb3J0X3JldmlkcygkZmV0Y2hfZnJvbSwgXEByZXZpc2lvbl9pZHMsIFwlcGFnZXNfaGFzaCk7Cit9CisKKyMgSW1wb3J0IHJldmlzaW9ucyBnaXZlbiBpbiBzZWNvbmQgYXJndW1lbnQgKGFycmF5IG9mIGludGVnZXJzKS4KKyMgT25seSBwYWdlcyBhcHBlYXJpbmcgaW4gdGhlIHRoaXJkIGFyZ3VtZW50IChoYXNoIGluZGV4ZWQgYnkgcGFnZSB0aXRsZXMpCisjIHdpbGwgYmUgaW1wb3J0ZWQuCitzdWIgbXdfaW1wb3J0X3JldmlkcyB7CisJbXkgJGZldGNoX2Zyb20gPSBzaGlmdDsKKwlteSAkcmV2aXNpb25faWRzID0gc2hpZnQ7CisJbXkgJHBhZ2VzID0gc2hpZnQ7CisKKwlteSAkbiA9IDA7CisJbXkgJG5fYWN0dWFsID0gMDsKKwlteSAkbGFzdF90aW1lc3RhbXAgPSAwOyAjIFBsYWNlaG9sZXIgaW4gY2FzZSAkcmV2LT50aW1lc3RhbXAgaXMgdW5kZWZpbmVkCisKKwlmb3JlYWNoIG15ICRwYWdlcmV2aWQgKEAkcmV2aXNpb25faWRzKSB7CisJICAgICAgICAjIENvdW50IHBhZ2UgZXZlbiBpZiB3ZSBza2lwIGl0LCBzaW5jZSB3ZSBkaXNwbGF5CisJCSMgJG4vJHRvdGFsIGFuZCAkdG90YWwgaW5jbHVkZXMgc2tpcHBlZCBwYWdlcy4KKwkJJG4rKzsKKworCQkjIGZldGNoIHRoZSBjb250ZW50IG9mIHRoZSBwYWdlcworCQlteSAkcXVlcnkgPSB7CisJCQlhY3Rpb24gPT4gJ3F1ZXJ5JywKKwkJCXByb3AgPT4gJ3JldmlzaW9ucycsCisJCQlydnByb3AgPT4gJ2NvbnRlbnR8dGltZXN0YW1wfGNvbW1lbnR8dXNlcnxpZHMnLAorCQkJcmV2aWRzID0+ICRwYWdlcmV2aWQsCisJCX07CisKKwkJbXkgJHJlc3VsdCA9ICRtZWRpYXdpa2ktPmFwaSgkcXVlcnkpOworCisJCWlmICghJHJlc3VsdCkgeworCQkJZGllICJGYWlsZWQgdG8gcmV0cmlldmUgbW9kaWZpZWQgcGFnZSBmb3IgcmV2aXNpb24gJHBhZ2VyZXZpZCI7CisJCX0KKworCQlpZiAoZGVmaW5lZCgkcmVzdWx0LT57cXVlcnl9LT57YmFkcmV2aWRzfS0+eyRwYWdlcmV2aWR9KSkgeworCQkJIyBUaGUgcmV2aXNpb24gaWQgZG9lcyBub3QgZXhpc3Qgb24gdGhlIHJlbW90ZSB3aWtpLgorCQkJbmV4dDsKKwkJfQorCisJCWlmICghZGVmaW5lZCgkcmVzdWx0LT57cXVlcnl9LT57cGFnZXN9KSkgeworCQkJZGllICJJbnZhbGlkIHJldmlzaW9uICRwYWdlcmV2aWQuIjsKKwkJfQorCisJCW15IEByZXN1bHRfcGFnZXMgPSB2YWx1ZXMoJXskcmVzdWx0LT57cXVlcnl9LT57cGFnZXN9fSk7CisJCW15ICRyZXN1bHRfcGFnZSA9ICRyZXN1bHRfcGFnZXNbMF07CisJCW15ICRyZXYgPSAkcmVzdWx0X3BhZ2VzWzBdLT57cmV2aXNpb25zfS0+WzBdOworCisJCW15ICRwYWdlX3RpdGxlID0gJHJlc3VsdF9wYWdlLT57dGl0bGV9OworCisJCWlmICghZXhpc3RzKCRwYWdlcy0+eyRwYWdlX3RpdGxlfSkpIHsKKwkJCXByaW50IFNUREVSUiAiJG4vIiwgc2NhbGFyKEAkcmV2aXNpb25faWRzKSwKKwkJCQkiOiBTa2lwcGluZyByZXZpc2lvbiAjJHJldi0+e3JldmlkfSBvZiAkcGFnZV90aXRsZVxuIjsKKwkJCW5leHQ7CisJCX0KKworCQkkbl9hY3R1YWwrKzsKKworCQlteSAlY29tbWl0OworCQkkY29tbWl0e2F1dGhvcn0gPSAkcmV2LT57dXNlcn0gfHwgJ0Fub255bW91cyc7CisJCSRjb21taXR7Y29tbWVudH0gPSAkcmV2LT57Y29tbWVudH0gfHwgRU1QVFlfTUVTU0FHRTsKKwkJJGNvbW1pdHt0aXRsZX0gPSBtZWRpYXdpa2lfc211ZGdlX2ZpbGVuYW1lKCRwYWdlX3RpdGxlKTsKKwkJJGNvbW1pdHttd19yZXZpc2lvbn0gPSAkcmV2LT57cmV2aWR9OworCQkkY29tbWl0e2NvbnRlbnR9ID0gbWVkaWF3aWtpX3NtdWRnZSgkcmV2LT57JyonfSk7CisKKwkJaWYgKCFkZWZpbmVkKCRyZXYtPnt0aW1lc3RhbXB9KSkgeworCQkJJGxhc3RfdGltZXN0YW1wKys7CisJCX0gZWxzZSB7CisJCQkkbGFzdF90aW1lc3RhbXAgPSAkcmV2LT57dGltZXN0YW1wfTsKKwkJfQorCQkkY29tbWl0e2RhdGV9ID0gRGF0ZVRpbWU6OkZvcm1hdDo6SVNPODYwMS0+cGFyc2VfZGF0ZXRpbWUoJGxhc3RfdGltZXN0YW1wKTsKKworCQkjIERpZmZlcmVudGlhdGVzIGNsYXNzaWMgcGFnZXMgYW5kIG1lZGlhIGZpbGVzLgorCQlteSAoJG5hbWVzcGFjZSwgJGZpbGVuYW1lKSA9ICRwYWdlX3RpdGxlID1+IC9eKFteOl0qKTooLiopJC87CisJCW15ICVtZWRpYWZpbGU7CisJCWlmICgkbmFtZXNwYWNlKSB7CisJCQlteSAkaWQgPSBnZXRfbXdfbmFtZXNwYWNlX2lkKCRuYW1lc3BhY2UpOworCQkJaWYgKCRpZCAmJiAkaWQgPT0gZ2V0X213X25hbWVzcGFjZV9pZCgiRmlsZSIpKSB7CisJCQkJJW1lZGlhZmlsZSA9IGdldF9td19tZWRpYWZpbGVfZm9yX3BhZ2VfcmV2aXNpb24oJGZpbGVuYW1lLCAkcmV2LT57dGltZXN0YW1wfSk7CisJCQl9CisJCX0KKwkJIyBJZiB0aGlzIGlzIGEgcmV2aXNpb24gb2YgdGhlIG1lZGlhIHBhZ2UgZm9yIG5ldyB2ZXJzaW9uCisJCSMgb2YgYSBmaWxlIGRvIG9uZSBjb21tb24gY29tbWl0IGZvciBib3RoIGZpbGUgYW5kIG1lZGlhIHBhZ2UuCisJCSMgRWxzZSBkbyBjb21taXQgb25seSBmb3IgdGhhdCBwYWdlLgorCQlwcmludCBTVERFUlIgIiRuLyIsIHNjYWxhcihAJHJldmlzaW9uX2lkcyksICI6IFJldmlzaW9uICMkcmV2LT57cmV2aWR9IG9mICRjb21taXR7dGl0bGV9XG4iOworCQlpbXBvcnRfZmlsZV9yZXZpc2lvbihcJWNvbW1pdCwgKCRmZXRjaF9mcm9tID09IDEpLCAkbl9hY3R1YWwsIFwlbWVkaWFmaWxlKTsKKwl9CisKKwlyZXR1cm4gJG5fYWN0dWFsOworfQorCitzdWIgZXJyb3Jfbm9uX2Zhc3RfZm9yd2FyZCB7CisJbXkgJGFkdmljZSA9IHJ1bl9naXQoImNvbmZpZyAtLWJvb2wgYWR2aWNlLnB1c2hOb25GYXN0Rm9yd2FyZCIpOworCWNob21wKCRhZHZpY2UpOworCWlmICgkYWR2aWNlIG5lICJmYWxzZSIpIHsKKwkJIyBOYXRpdmUgZ2l0LXB1c2ggd291bGQgc2hvdyB0aGlzIGFmdGVyIHRoZSBzdW1tYXJ5LgorCQkjIFdlIGNhbid0IGFzayBpdCB0byBkaXNwbGF5IGl0IGNsZWFubHksIHNvIHByaW50IGl0CisJCSMgb3Vyc2VsdmVzIGJlZm9yZS4KKwkJcHJpbnQgU1RERVJSICJUbyBwcmV2ZW50IHlvdSBmcm9tIGxvc2luZyBoaXN0b3J5LCBub24tZmFzdC1mb3J3YXJkIHVwZGF0ZXMgd2VyZSByZWplY3RlZFxuIjsKKwkJcHJpbnQgU1RERVJSICJNZXJnZSB0aGUgcmVtb3RlIGNoYW5nZXMgKGUuZy4gJ2dpdCBwdWxsJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uIFNlZSB0aGVcbiI7CisJCXByaW50IFNUREVSUiAiJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycgc2VjdGlvbiBvZiAnZ2l0IHB1c2ggLS1oZWxwJyBmb3IgZGV0YWlscy5cbiI7CisJfQorCXByaW50IFNURE9VVCAiZXJyb3IgJF9bMF0gXCJub24tZmFzdC1mb3J3YXJkXCJcbiI7CisJcmV0dXJuIDA7Cit9CisKK3N1YiBtd191cGxvYWRfZmlsZSB7CisJbXkgJGNvbXBsZXRlX2ZpbGVfbmFtZSA9IHNoaWZ0OworCW15ICRuZXdfc2hhMSA9IHNoaWZ0OworCW15ICRleHRlbnNpb24gPSBzaGlmdDsKKwlteSAkZmlsZV9kZWxldGVkID0gc2hpZnQ7CisJbXkgJHN1bW1hcnkgPSBzaGlmdDsKKwlteSAkbmV3cmV2aWQ7CisJbXkgJHBhdGggPSAiRmlsZToiIC4gJGNvbXBsZXRlX2ZpbGVfbmFtZTsKKwlteSAlaGFzaEZpbGVzID0gZ2V0X2FsbG93ZWRfZmlsZV9leHRlbnNpb25zKCk7CisJaWYgKCFleGlzdHMoJGhhc2hGaWxlc3skZXh0ZW5zaW9ufSkpIHsKKwkJcHJpbnQgU1RERVJSICIkY29tcGxldGVfZmlsZV9uYW1lIGlzIG5vdCBhIHBlcm1pdHRlZCBmaWxlIG9uIHRoaXMgd2lraS5cbiI7CisJCXByaW50IFNUREVSUiAiQ2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb2YgZmlsZSB1cGxvYWRzIGluIHlvdXIgbWVkaWF3aWtpLlxuIjsKKwkJcmV0dXJuICRuZXdyZXZpZDsKKwl9CisJIyBEZWxldGluZyBhbmQgdXBsb2FkaW5nIGEgZmlsZSByZXF1aXJlcyBhIHByaXZpbGVkZ2VkIHVzZXIKKwlpZiAoJGZpbGVfZGVsZXRlZCkgeworCQltd19jb25uZWN0X21heWJlKCk7CisJCW15ICRxdWVyeSA9IHsKKwkJCWFjdGlvbiA9PiAnZGVsZXRlJywKKwkJCXRpdGxlID0+ICRwYXRoLAorCQkJcmVhc29uID0+ICRzdW1tYXJ5CisJCX07CisJCWlmICghJG1lZGlhd2lraS0+ZWRpdCgkcXVlcnkpKSB7CisJCQlwcmludCBTVERFUlIgIkZhaWxlZCB0byBkZWxldGUgZmlsZSBvbiByZW1vdGUgd2lraVxuIjsKKwkJCXByaW50IFNUREVSUiAiQ2hlY2sgeW91ciBwZXJtaXNzaW9ucyBvbiB0aGUgcmVtb3RlIHNpdGUuIEVycm9yIGNvZGU6XG4iOworCQkJcHJpbnQgU1RERVJSICRtZWRpYXdpa2ktPntlcnJvcn0tPntjb2RlfSAuICc6JyAuICRtZWRpYXdpa2ktPntlcnJvcn0tPntkZXRhaWxzfTsKKwkJCWV4aXQgMTsKKwkJfQorCX0gZWxzZSB7CisJCSMgRG9uJ3QgbGV0IHBlcmwgdHJ5IHRvIGludGVycHJldCBmaWxlIGNvbnRlbnQgYXMgVVRGLTggPT4gdXNlICJyYXciCisJCW15ICRjb250ZW50ID0gcnVuX2dpdCgiY2F0LWZpbGUgYmxvYiAkbmV3X3NoYTEiLCAicmF3Iik7CisJCWlmICgkY29udGVudCBuZSAiIikgeworCQkJbXdfY29ubmVjdF9tYXliZSgpOworCQkJJG1lZGlhd2lraS0+e2NvbmZpZ30tPnt1cGxvYWRfdXJsfSA9CisJCQkJIiR1cmwvaW5kZXgucGhwL1NwZWNpYWw6VXBsb2FkIjsKKwkJCSRtZWRpYXdpa2ktPmVkaXQoeworCQkJCWFjdGlvbiA9PiAndXBsb2FkJywKKwkJCQlmaWxlbmFtZSA9PiAkY29tcGxldGVfZmlsZV9uYW1lLAorCQkJCWNvbW1lbnQgPT4gJHN1bW1hcnksCisJCQkJZmlsZSA9PiBbdW5kZWYsCisJCQkJCSAkY29tcGxldGVfZmlsZV9uYW1lLAorCQkJCQkgQ29udGVudCA9PiAkY29udGVudF0sCisJCQkJaWdub3Jld2FybmluZ3MgPT4gMSwKKwkJCX0sIHsKKwkJCQlza2lwX2VuY29kaW5nID0+IDEKKwkJCX0gKSB8fCBkaWUgJG1lZGlhd2lraS0+e2Vycm9yfS0+e2NvZGV9IC4gJzonCisJCQkJIC4gJG1lZGlhd2lraS0+e2Vycm9yfS0+e2RldGFpbHN9OworCQkJbXkgJGxhc3RfZmlsZV9wYWdlID0gJG1lZGlhd2lraS0+Z2V0X3BhZ2Uoe3RpdGxlID0+ICRwYXRofSk7CisJCQkkbmV3cmV2aWQgPSAkbGFzdF9maWxlX3BhZ2UtPntyZXZpZH07CisJCQlwcmludCBTVERFUlIgIlB1c2hlZCBmaWxlOiAkbmV3X3NoYTEgLSAkY29tcGxldGVfZmlsZV9uYW1lLlxuIjsKKwkJfSBlbHNlIHsKKwkJCXByaW50IFNUREVSUiAiRW1wdHkgZmlsZSAkY29tcGxldGVfZmlsZV9uYW1lIG5vdCBwdXNoZWQuXG4iOworCQl9CisJfQorCXJldHVybiAkbmV3cmV2aWQ7Cit9CisKK3N1YiBtd19wdXNoX2ZpbGUgeworCW15ICRkaWZmX2luZm8gPSBzaGlmdDsKKwkjICRkaWZmX2luZm8gY29udGFpbnMgYSBzdHJpbmcgaW4gdGhpcyBmb3JtYXQ6CisJIyAxMDA2NDQgMTAwNjQ0IDxzaGExX29mX2Jsb2JfYmVmb3JlX2NvbW1pdD4gPHNoYTFfb2ZfYmxvYl9ub3c+IDxzdGF0dXM+CisJbXkgQGRpZmZfaW5mb19zcGxpdCA9IHNwbGl0KC9bIFx0XS8sICRkaWZmX2luZm8pOworCisJIyBGaWxlbmFtZSwgaW5jbHVkaW5nIC5tdyBleHRlbnNpb24KKwlteSAkY29tcGxldGVfZmlsZV9uYW1lID0gc2hpZnQ7CisJIyBDb21taXQgbWVzc2FnZQorCW15ICRzdW1tYXJ5ID0gc2hpZnQ7CisJIyBNZWRpYVdpa2kgcmV2aXNpb24gbnVtYmVyLiBLZWVwIHRoZSBwcmV2aW91cyBvbmUgYnkgZGVmYXVsdCwKKwkjIGluIGNhc2UgdGhlcmUncyBubyBlZGl0IHRvIHBlcmZvcm0uCisJbXkgJG9sZHJldmlkID0gc2hpZnQ7CisJbXkgJG5ld3JldmlkOworCisJaWYgKCRzdW1tYXJ5IGVxIEVNUFRZX01FU1NBR0UpIHsKKwkJJHN1bW1hcnkgPSAnJzsKKwl9CisKKwlteSAkbmV3X3NoYTEgPSAkZGlmZl9pbmZvX3NwbGl0WzNdOworCW15ICRvbGRfc2hhMSA9ICRkaWZmX2luZm9fc3BsaXRbMl07CisJbXkgJHBhZ2VfY3JlYXRlZCA9ICgkb2xkX3NoYTEgZXEgTlVMTF9TSEExKTsKKwlteSAkcGFnZV9kZWxldGVkID0gKCRuZXdfc2hhMSBlcSBOVUxMX1NIQTEpOworCSRjb21wbGV0ZV9maWxlX25hbWUgPSBtZWRpYXdpa2lfY2xlYW5fZmlsZW5hbWUoJGNvbXBsZXRlX2ZpbGVfbmFtZSk7CisKKwlteSAoJHRpdGxlLCAkZXh0ZW5zaW9uKSA9ICRjb21wbGV0ZV9maWxlX25hbWUgPX4gL14oLiopXC4oW15cLl0qKSQvOworCWlmICghZGVmaW5lZCgkZXh0ZW5zaW9uKSkgeworCQkkZXh0ZW5zaW9uID0gIiI7CisJfQorCWlmICgkZXh0ZW5zaW9uIGVxICJtdyIpIHsKKwkJbXkgJG5zID0gZ2V0X213X25hbWVzcGFjZV9pZF9mb3JfcGFnZSgkY29tcGxldGVfZmlsZV9uYW1lKTsKKwkJaWYgKCRucyAmJiAkbnMgPT0gZ2V0X213X25hbWVzcGFjZV9pZCgiRmlsZSIpICYmICghJGV4cG9ydF9tZWRpYSkpIHsKKwkJCXByaW50IFNUREVSUiAiSWdub3JpbmcgbWVkaWEgZmlsZSByZWxhdGVkIHBhZ2U6ICRjb21wbGV0ZV9maWxlX25hbWVcbiI7CisJCQlyZXR1cm4gKCRvbGRyZXZpZCwgIm9rIik7CisJCX0KKwkJbXkgJGZpbGVfY29udGVudDsKKwkJaWYgKCRwYWdlX2RlbGV0ZWQpIHsKKwkJCSMgRGVsZXRpbmcgYSBwYWdlIHVzdWFsbHkgcmVxdWlyZXMKKwkJCSMgc3BlY2lhbCBwcml2aWxlZ2VzLiBBIGNvbW1vbgorCQkJIyBjb252ZW50aW9uIGlzIHRvIHJlcGxhY2UgdGhlIHBhZ2UKKwkJCSMgd2l0aCB0aGlzIGNvbnRlbnQgaW5zdGVhZDoKKwkJCSRmaWxlX2NvbnRlbnQgPSBERUxFVEVEX0NPTlRFTlQ7CisJCX0gZWxzZSB7CisJCQkkZmlsZV9jb250ZW50ID0gcnVuX2dpdCgiY2F0LWZpbGUgYmxvYiAkbmV3X3NoYTEiKTsKKwkJfQorCisJCW13X2Nvbm5lY3RfbWF5YmUoKTsKKworCQlteSAkcmVzdWx0ID0gJG1lZGlhd2lraS0+ZWRpdCggeworCQkJYWN0aW9uID0+ICdlZGl0JywKKwkJCXN1bW1hcnkgPT4gJHN1bW1hcnksCisJCQl0aXRsZSA9PiAkdGl0bGUsCisJCQliYXNldGltZXN0YW1wID0+ICRiYXNldGltZXN0YW1wc3skb2xkcmV2aWR9LAorCQkJdGV4dCA9PiBtZWRpYXdpa2lfY2xlYW4oJGZpbGVfY29udGVudCwgJHBhZ2VfY3JlYXRlZCksCisJCQkJICB9LCB7CisJCQkJCSAgc2tpcF9lbmNvZGluZyA9PiAxICMgSGVscHMgd2l0aCBuYW1lcyB3aXRoIGFjY2VudHVhdGVkIGNoYXJhY3RlcnMKKwkJCQkgIH0pOworCQlpZiAoISRyZXN1bHQpIHsKKwkJCWlmICgkbWVkaWF3aWtpLT57ZXJyb3J9LT57Y29kZX0gPT0gMykgeworCQkJCSMgZWRpdCBjb25mbGljdHMsIGNvbnNpZGVyZWQgYXMgbm9uLWZhc3QtZm9yd2FyZAorCQkJCXByaW50IFNUREVSUiAnV2FybmluZzogRXJyb3IgJyAuCisJCQkJICAgICRtZWRpYXdpa2ktPntlcnJvcn0tPntjb2RlfSAuCisJCQkJICAgICcgZnJvbSBtZWRpd2lraTogJyAuICRtZWRpYXdpa2ktPntlcnJvcn0tPntkZXRhaWxzfSAuCisJCQkJICAgICIuXG4iOworCQkJCXJldHVybiAoJG9sZHJldmlkLCAibm9uLWZhc3QtZm9yd2FyZCIpOworCQkJfSBlbHNlIHsKKwkJCQkjIE90aGVyIGVycm9ycy4gU2hvdWxkbid0IGhhcHBlbiA9PiBqdXN0IGRpZSgpCisJCQkJZGllICdGYXRhbDogRXJyb3IgJyAuCisJCQkJICAgICRtZWRpYXdpa2ktPntlcnJvcn0tPntjb2RlfSAuCisJCQkJICAgICcgZnJvbSBtZWRpd2lraTogJyAuICRtZWRpYXdpa2ktPntlcnJvcn0tPntkZXRhaWxzfTsKKwkJCX0KKwkJfQorCQkkbmV3cmV2aWQgPSAkcmVzdWx0LT57ZWRpdH0tPntuZXdyZXZpZH07CisJCXByaW50IFNUREVSUiAiUHVzaGVkIGZpbGU6ICRuZXdfc2hhMSAtICR0aXRsZVxuIjsKKwl9IGVsc2lmICgkZXhwb3J0X21lZGlhKSB7CisJCSRuZXdyZXZpZCA9IG13X3VwbG9hZF9maWxlKCRjb21wbGV0ZV9maWxlX25hbWUsICRuZXdfc2hhMSwKKwkJCQkJICAgJGV4dGVuc2lvbiwgJHBhZ2VfZGVsZXRlZCwKKwkJCQkJICAgJHN1bW1hcnkpOworCX0gZWxzZSB7CisJCXByaW50IFNUREVSUiAiSWdub3JpbmcgbWVkaWEgZmlsZSAkdGl0bGVcbiI7CisJfQorCSRuZXdyZXZpZCA9ICgkbmV3cmV2aWQgb3IgJG9sZHJldmlkKTsKKwlyZXR1cm4gKCRuZXdyZXZpZCwgIm9rIik7Cit9CisKK3N1YiBtd19wdXNoIHsKKwkjIG11bHRpcGxlIHB1c2ggc3RhdGVtZW50cyBjYW4gZm9sbG93IGVhY2ggb3RoZXIKKwlteSBAcmVmc3NwZWNzID0gKHNoaWZ0LCBnZXRfbW9yZV9yZWZzKCJwdXNoIikpOworCW15ICRwdXNoZWQ7CisJZm9yIG15ICRyZWZzcGVjIChAcmVmc3NwZWNzKSB7CisJCW15ICgkZm9yY2UsICRsb2NhbCwgJHJlbW90ZSkgPSAkcmVmc3BlYyA9fiAvXihcKyk/KFteOl0qKTooW146XSopJC8KKwkJICAgIG9yIGRpZSgiSW52YWxpZCByZWZzcGVjIGZvciBwdXNoLiBFeHBlY3RlZCA8c3JjPjo8ZHN0PiBvciArPHNyYz46PGRzdD4iKTsKKwkJaWYgKCRmb3JjZSkgeworCQkJcHJpbnQgU1RERVJSICJXYXJuaW5nOiBmb3JjZWQgcHVzaCBub3QgYWxsb3dlZCBvbiBhIE1lZGlhV2lraS5cbiI7CisJCX0KKwkJaWYgKCRsb2NhbCBlcSAiIikgeworCQkJcHJpbnQgU1RERVJSICJDYW5ub3QgZGVsZXRlIHJlbW90ZSBicmFuY2ggb24gYSBNZWRpYVdpa2lcbiI7CisJCQlwcmludCBTVERPVVQgImVycm9yICRyZW1vdGUgY2Fubm90IGRlbGV0ZVxuIjsKKwkJCW5leHQ7CisJCX0KKwkJaWYgKCRyZW1vdGUgbmUgInJlZnMvaGVhZHMvbWFzdGVyIikgeworCQkJcHJpbnQgU1RERVJSICJPbmx5IHB1c2ggdG8gdGhlIGJyYW5jaCAnbWFzdGVyJyBpcyBzdXBwb3J0ZWQgb24gYSBNZWRpYVdpa2lcbiI7CisJCQlwcmludCBTVERPVVQgImVycm9yICRyZW1vdGUgb25seSBtYXN0ZXIgYWxsb3dlZFxuIjsKKwkJCW5leHQ7CisJCX0KKwkJaWYgKG13X3B1c2hfcmV2aXNpb24oJGxvY2FsLCAkcmVtb3RlKSkgeworCQkJJHB1c2hlZCA9IDE7CisJCX0KKwl9CisKKwkjIE5vdGlmeSBHaXQgdGhhdCB0aGUgcHVzaCBpcyBkb25lCisJcHJpbnQgU1RET1VUICJcbiI7CisKKwlpZiAoJHB1c2hlZCAmJiAkZHVtYl9wdXNoKSB7CisJCXByaW50IFNUREVSUiAiSnVzdCBwdXNoZWQgc29tZSByZXZpc2lvbnMgdG8gTWVkaWFXaWtpLlxuIjsKKwkJcHJpbnQgU1RERVJSICJUaGUgcHVzaGVkIHJldmlzaW9ucyBub3cgaGF2ZSB0byBiZSByZS1pbXBvcnRlZCwgYW5kIHlvdXIgY3VycmVudCBicmFuY2hcbiI7CisJCXByaW50IFNUREVSUiAibmVlZHMgdG8gYmUgdXBkYXRlZCB3aXRoIHRoZXNlIHJlLWltcG9ydGVkIGNvbW1pdHMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoXG4iOworCQlwcmludCBTVERFUlIgIlxuIjsKKwkJcHJpbnQgU1RERVJSICIgIGdpdCBwdWxsIC0tcmViYXNlXG4iOworCQlwcmludCBTVERFUlIgIlxuIjsKKwl9Cit9CisKK3N1YiBtd19wdXNoX3JldmlzaW9uIHsKKwlteSAkbG9jYWwgPSBzaGlmdDsKKwlteSAkcmVtb3RlID0gc2hpZnQ7ICMgYWN0dWFsbHksIHRoaXMgaGFzIHRvIGJlICJyZWZzL2hlYWRzL21hc3RlciIgYXQgdGhpcyBwb2ludC4KKwlteSAkbGFzdF9sb2NhbF9yZXZpZCA9IGdldF9sYXN0X2xvY2FsX3JldmlzaW9uKCk7CisJcHJpbnQgU1RERVJSICIuXG4iOyAjIEZpbmlzaCBzZW50ZW5jZSBzdGFydGVkIGJ5IGdldF9sYXN0X2xvY2FsX3JldmlzaW9uKCkKKwlteSAkbGFzdF9yZW1vdGVfcmV2aWQgPSBnZXRfbGFzdF9yZW1vdGVfcmV2aXNpb24oKTsKKwlteSAkbXdfcmV2aXNpb24gPSAkbGFzdF9yZW1vdGVfcmV2aWQ7CisKKwkjIEdldCBzaGExIG9mIGNvbW1pdCBwb2ludGVkIGJ5IGxvY2FsIEhFQUQKKwlteSAkSEVBRF9zaGExID0gcnVuX2dpdCgicmV2LXBhcnNlICRsb2NhbCAyPi9kZXYvbnVsbCIpOyBjaG9tcCgkSEVBRF9zaGExKTsKKwkjIEdldCBzaGExIG9mIGNvbW1pdCBwb2ludGVkIGJ5IHJlbW90ZXMvJHJlbW90ZW5hbWUvbWFzdGVyCisJbXkgJHJlbW90ZW9yaWdpbl9zaGExID0gcnVuX2dpdCgicmV2LXBhcnNlIHJlZnMvcmVtb3Rlcy8kcmVtb3RlbmFtZS9tYXN0ZXIgMj4vZGV2L251bGwiKTsKKwljaG9tcCgkcmVtb3Rlb3JpZ2luX3NoYTEpOworCisJaWYgKCRsYXN0X2xvY2FsX3JldmlkID4gMCAmJgorCSAgICAkbGFzdF9sb2NhbF9yZXZpZCA8ICRsYXN0X3JlbW90ZV9yZXZpZCkgeworCQlyZXR1cm4gZXJyb3Jfbm9uX2Zhc3RfZm9yd2FyZCgkcmVtb3RlKTsKKwl9CisKKwlpZiAoJEhFQURfc2hhMSBlcSAkcmVtb3Rlb3JpZ2luX3NoYTEpIHsKKwkJIyBub3RoaW5nIHRvIHB1c2gKKwkJcmV0dXJuIDA7CisJfQorCisJIyBHZXQgZXZlcnkgY29tbWl0IGluIGJldHdlZW4gSEVBRCBhbmQgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIsCisJIyBpbmNsdWRpbmcgSEVBRCBhbmQgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIKKwlteSBAY29tbWl0X3BhaXJzID0gKCk7CisJaWYgKCRsYXN0X2xvY2FsX3JldmlkID4gMCkgeworCQlteSAkcGFyc2VkX3NoYTEgPSAkcmVtb3Rlb3JpZ2luX3NoYTE7CisJCSMgRmluZCBhIHBhdGggZnJvbSBsYXN0IE1lZGlhV2lraSBjb21taXQgdG8gcHVzaGVkIGNvbW1pdAorCQlwcmludCBTVERFUlIgIkNvbXB1dGluZyBwYXRoIGZyb20gbG9jYWwgdG8gcmVtb3RlIC4uLlxuIjsKKwkJbXkgQGxvY2FsX2FuY2VzdHJ5ID0gc3BsaXQoL1xuLywgcnVuX2dpdCgicmV2LWxpc3QgLS1ib3VuZGFyeSAtLXBhcmVudHMgJGxvY2FsIF4kcGFyc2VkX3NoYTEiKSk7CisJCW15ICVsb2NhbF9hbmNlc3RyeTsKKwkJZm9yZWFjaCBteSAkbGluZSAoQGxvY2FsX2FuY2VzdHJ5KSB7CisJCQlpZiAobXkgKCRjaGlsZCwgJHBhcmVudHMpID0gJGxpbmUgPX4gbS9eLT8oW2EtZjAtOV0rKSAoW2EtZjAtOSBdKykvKSB7CisJCQkJZm9yZWFjaCBteSAkcGFyZW50IChzcGxpdCgnICcsICRwYXJlbnRzKSkgeworCQkJCQkkbG9jYWxfYW5jZXN0cnl7JHBhcmVudH0gPSAkY2hpbGQ7CisJCQkJfQorCQkJfSBlbHNpZiAoISRsaW5lID1+IG0vXihbYS1mMC05XSspLykgeworCQkJCWRpZSAiVW5leHBlY3RlZCBvdXRwdXQgZnJvbSBnaXQgcmV2LWxpc3Q6ICRsaW5lIjsKKwkJCX0KKwkJfQorCQl3aGlsZSAoJHBhcnNlZF9zaGExIG5lICRIRUFEX3NoYTEpIHsKKwkJCW15ICRjaGlsZCA9ICRsb2NhbF9hbmNlc3RyeXskcGFyc2VkX3NoYTF9OworCQkJaWYgKCEkY2hpbGQpIHsKKwkJCQlwcmludGYgU1RERVJSICJDYW5ub3QgZmluZCBhIHBhdGggaW4gaGlzdG9yeSBmcm9tIHJlbW90ZSBjb21taXQgdG8gbGFzdCBjb21taXRcbiI7CisJCQkJcmV0dXJuIGVycm9yX25vbl9mYXN0X2ZvcndhcmQoJHJlbW90ZSk7CisJCQl9CisJCQlwdXNoKEBjb21taXRfcGFpcnMsIFskcGFyc2VkX3NoYTEsICRjaGlsZF0pOworCQkJJHBhcnNlZF9zaGExID0gJGNoaWxkOworCQl9CisJfSBlbHNlIHsKKwkJIyBObyByZW1vdGUgbWVkaWF3aWtpIHJldmlzaW9uLiBFeHBvcnQgdGhlIHdob2xlCisJCSMgaGlzdG9yeSAobGluZWFyaXplZCB3aXRoIC0tZmlyc3QtcGFyZW50KQorCQlwcmludCBTVERFUlIgIldhcm5pbmc6IG5vIGNvbW1vbiBhbmNlc3RvciwgcHVzaGluZyBjb21wbGV0ZSBoaXN0b3J5XG4iOworCQlteSAkaGlzdG9yeSA9IHJ1bl9naXQoInJldi1saXN0IC0tZmlyc3QtcGFyZW50IC0tY2hpbGRyZW4gJGxvY2FsIik7CisJCW15IEBoaXN0b3J5ID0gc3BsaXQoJ1xuJywgJGhpc3RvcnkpOworCQlAaGlzdG9yeSA9IEBoaXN0b3J5WzEuLiQjaGlzdG9yeV07CisJCWZvcmVhY2ggbXkgJGxpbmUgKHJldmVyc2UgQGhpc3RvcnkpIHsKKwkJCW15IEBjb21taXRfaW5mb19zcGxpdCA9IHNwbGl0KC8gfFxuLywgJGxpbmUpOworCQkJcHVzaChAY29tbWl0X3BhaXJzLCBcQGNvbW1pdF9pbmZvX3NwbGl0KTsKKwkJfQorCX0KKworCWZvcmVhY2ggbXkgJGNvbW1pdF9pbmZvX3NwbGl0IChAY29tbWl0X3BhaXJzKSB7CisJCW15ICRzaGExX2NoaWxkID0gQHskY29tbWl0X2luZm9fc3BsaXR9WzBdOworCQlteSAkc2hhMV9jb21taXQgPSBAeyRjb21taXRfaW5mb19zcGxpdH1bMV07CisJCW15ICRkaWZmX2luZm9zID0gcnVuX2dpdCgiZGlmZi10cmVlIC1yIC0tcmF3IC16ICRzaGExX2NoaWxkICRzaGExX2NvbW1pdCIpOworCQkjIFRPRE86IHdlIGNvdWxkIGRldGVjdCByZW5hbWUsIGFuZCBlbmNvZGUgdGhlbSB3aXRoIGEgI3JlZGlyZWN0IG9uIHRoZSB3aWtpLgorCQkjIFRPRE86IGZvciBub3csIGl0J3MganVzdCBhIGRlbGV0ZSthZGQKKwkJbXkgQGRpZmZfaW5mb19saXN0ID0gc3BsaXQoL1wwLywgJGRpZmZfaW5mb3MpOworCQkjIEtlZXAgdGhlIHN1YmplY3QgbGluZSBvZiB0aGUgY29tbWl0IG1lc3NhZ2UgYXMgbWVkaWF3aWtpIGNvbW1lbnQgZm9yIHRoZSByZXZpc2lvbgorCQlteSAkY29tbWl0X21zZyA9IHJ1bl9naXQoImxvZyAtLW5vLXdhbGsgLS1mb3JtYXQ9XCIlc1wiICRzaGExX2NvbW1pdCIpOworCQljaG9tcCgkY29tbWl0X21zZyk7CisJCSMgUHVzaCBldmVyeSBibG9iCisJCXdoaWxlIChAZGlmZl9pbmZvX2xpc3QpIHsKKwkJCW15ICRzdGF0dXM7CisJCQkjIGdpdCBkaWZmLXRyZWUgLXogZ2l2ZXMgYW4gb3V0cHV0IGxpa2UKKwkJCSMgPG1ldGFkYXRhPlwwPGZpbGVuYW1lMT5cMAorCQkJIyA8bWV0YWRhdGE+XDA8ZmlsZW5hbWUyPlwwCisJCQkjIGFuZCB3ZSd2ZSBzcGxpdCBvbiBcMC4KKwkJCW15ICRpbmZvID0gc2hpZnQoQGRpZmZfaW5mb19saXN0KTsKKwkJCW15ICRmaWxlID0gc2hpZnQoQGRpZmZfaW5mb19saXN0KTsKKwkJCSgkbXdfcmV2aXNpb24sICRzdGF0dXMpID0gbXdfcHVzaF9maWxlKCRpbmZvLCAkZmlsZSwgJGNvbW1pdF9tc2csICRtd19yZXZpc2lvbik7CisJCQlpZiAoJHN0YXR1cyBlcSAibm9uLWZhc3QtZm9yd2FyZCIpIHsKKwkJCQkjIHdlIG1heSBhbHJlYWR5IGhhdmUgc2VudCBwYXJ0IG9mIHRoZQorCQkJCSMgY29tbWl0IHRvIE1lZGlhV2lraSwgYnV0IGl0J3MgdG9vCisJCQkJIyBsYXRlIHRvIGNhbmNlbCBpdC4gU3RvcCB0aGUgcHVzaCBpbgorCQkJCSMgdGhlIG1pZGRsZSwgYnV0IHN0aWxsIGdpdmUgYW4KKwkJCQkjIGFjY3VyYXRlIGVycm9yIG1lc3NhZ2UuCisJCQkJcmV0dXJuIGVycm9yX25vbl9mYXN0X2ZvcndhcmQoJHJlbW90ZSk7CisJCQl9CisJCQlpZiAoJHN0YXR1cyBuZSAib2siKSB7CisJCQkJZGllKCJVbmtub3duIGVycm9yIGZyb20gbXdfcHVzaF9maWxlKCkiKTsKKwkJCX0KKwkJfQorCQl1bmxlc3MgKCRkdW1iX3B1c2gpIHsKKwkJCXJ1bl9naXQoIm5vdGVzIC0tcmVmPSRyZW1vdGVuYW1lL21lZGlhd2lraSBhZGQgLWYgLW0gXCJtZWRpYXdpa2lfcmV2aXNpb246ICRtd19yZXZpc2lvblwiICRzaGExX2NvbW1pdCIpOworCQkJcnVuX2dpdCgidXBkYXRlLXJlZiAtbSBcIkdpdC1NZWRpYVdpa2kgcHVzaFwiIHJlZnMvbWVkaWF3aWtpLyRyZW1vdGVuYW1lL21hc3RlciAkc2hhMV9jb21taXQgJHNoYTFfY2hpbGQiKTsKKwkJfQorCX0KKworCXByaW50IFNURE9VVCAib2sgJHJlbW90ZVxuIjsKKwlyZXR1cm4gMTsKK30KKworc3ViIGdldF9hbGxvd2VkX2ZpbGVfZXh0ZW5zaW9ucyB7CisJbXdfY29ubmVjdF9tYXliZSgpOworCisJbXkgJHF1ZXJ5ID0geworCQlhY3Rpb24gPT4gJ3F1ZXJ5JywKKwkJbWV0YSA9PiAnc2l0ZWluZm8nLAorCQlzaXByb3AgPT4gJ2ZpbGVleHRlbnNpb25zJworCQl9OworCW15ICRyZXN1bHQgPSAkbWVkaWF3aWtpLT5hcGkoJHF1ZXJ5KTsKKwlteSBAZmlsZV9leHRlbnNpb25zPSBtYXAgJF8tPntleHR9LEB7JHJlc3VsdC0+e3F1ZXJ5fS0+e2ZpbGVleHRlbnNpb25zfX07CisJbXkgJWhhc2hGaWxlID0gbWFwIHskXyA9PiAxfUBmaWxlX2V4dGVuc2lvbnM7CisKKwlyZXR1cm4gJWhhc2hGaWxlOworfQorCisjIEluIG1lbW9yeSBjYWNoZSBmb3IgTWVkaWFXaWtpIG5hbWVzcGFjZSBpZHMuCitteSAlbmFtZXNwYWNlX2lkOworCisjIE5hbWVzcGFjZXMgd2hvc2UgaWQgaXMgY2FjaGVkIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUKKyMgKHRvIGF2b2lkIGR1cGxpY2F0ZXMpCitteSAlY2FjaGVkX213X25hbWVzcGFjZV9pZDsKKworIyBSZXR1cm4gTWVkaWFXaWtpIGlkIGZvciBhIGNhbm9uaWNhbCBuYW1lc3BhY2UgbmFtZS4KKyMgRXguOiAiRmlsZSIsICJQcm9qZWN0Ii4KK3N1YiBnZXRfbXdfbmFtZXNwYWNlX2lkIHsKKwltd19jb25uZWN0X21heWJlKCk7CisJbXkgJG5hbWUgPSBzaGlmdDsKKworCWlmICghZXhpc3RzICRuYW1lc3BhY2VfaWR7JG5hbWV9KSB7CisJCSMgTG9vayBhdCBjb25maWd1cmF0aW9uIGZpbGUsIGlmIHRoZSByZWNvcmQgZm9yIHRoYXQgbmFtZXNwYWNlIGlzCisJCSMgYWxyZWFkeSBjYWNoZWQuIE5hbWVzcGFjZXMgYXJlIHN0b3JlZCBpbiBmb3JtOgorCQkjICJOYW1lX29mX25hbWVzcGFjZTpJZF9uYW1lc3BhY2UiLCBleC46ICJGaWxlOjYiLgorCQlteSBAdGVtcCA9IHNwbGl0KC9bXG5dLywgcnVuX2dpdCgiY29uZmlnIC0tZ2V0LWFsbCByZW1vdGUuIgorCQkJCQkJLiAkcmVtb3RlbmFtZSAuIi5uYW1lc3BhY2VDYWNoZSIpKTsKKwkJY2hvbXAoQHRlbXApOworCQlmb3JlYWNoIG15ICRucyAoQHRlbXApIHsKKwkJCW15ICgkbiwgJGlkKSA9IHNwbGl0KC86LywgJG5zKTsKKwkJCWlmICgkaWQgZXEgJ25vdEFOYW1lU3BhY2UnKSB7CisJCQkJJG5hbWVzcGFjZV9pZHskbn0gPSB7aXNfbmFtZXNwYWNlID0+IDB9OworCQkJfSBlbHNlIHsKKwkJCQkkbmFtZXNwYWNlX2lkeyRufSA9IHtpc19uYW1lc3BhY2UgPT4gMSwgaWQgPT4gJGlkfTsKKwkJCX0KKwkJCSRjYWNoZWRfbXdfbmFtZXNwYWNlX2lkeyRufSA9IDE7CisJCX0KKwl9CisKKwlpZiAoIWV4aXN0cyAkbmFtZXNwYWNlX2lkeyRuYW1lfSkgeworCQlwcmludCBTVERFUlIgIk5hbWVzcGFjZSAkbmFtZSBub3QgZm91bmQgaW4gY2FjaGUsIHF1ZXJ5aW5nIHRoZSB3aWtpIC4uLlxuIjsKKwkJIyBOUyBub3QgZm91bmQgPT4gZ2V0IG5hbWVzcGFjZSBpZCBmcm9tIE1XIGFuZCBzdG9yZSBpdCBpbgorCSAgICAgICAgIyBjb25maWd1cmF0aW9uIGZpbGUuCisJICAgICAgICBteSAkcXVlcnkgPSB7CisJICAgICAgICAgICAgICAgIGFjdGlvbiA9PiAncXVlcnknLAorCSAgICAgICAgICAgICAgICBtZXRhID0+ICdzaXRlaW5mbycsCisJICAgICAgICAgICAgICAgIHNpcHJvcCA9PiAnbmFtZXNwYWNlcycKKwkgICAgICAgIH07CisJICAgICAgICBteSAkcmVzdWx0ID0gJG1lZGlhd2lraS0+YXBpKCRxdWVyeSk7CisKKwkgICAgICAgIHdoaWxlIChteSAoJGlkLCAkbnMpID0gZWFjaCgleyRyZXN1bHQtPntxdWVyeX0tPntuYW1lc3BhY2VzfX0pKSB7CisJICAgICAgICAgICAgICAgIGlmIChkZWZpbmVkKCRucy0+e2lkfSkgJiYgZGVmaW5lZCgkbnMtPntjYW5vbmljYWx9KSkgeworCQkJCSRuYW1lc3BhY2VfaWR7JG5zLT57Y2Fub25pY2FsfX0gPSB7aXNfbmFtZXNwYWNlID0+IDEsIGlkID0+ICRucy0+e2lkfX07CisJCQkJaWYgKCRucy0+eycqJ30pIHsKKwkJCQkJIyBhbGlhcyAoZS5nLiBmcmVuY2ggRmljaGllcjogYXMgYWxpYXMgZm9yIGNhbm9uaWNhbCBGaWxlOikKKwkJCQkJJG5hbWVzcGFjZV9pZHskbnMtPnsnKid9fSA9IHtpc19uYW1lc3BhY2UgPT4gMSwgaWQgPT4gJG5zLT57aWR9fTsKKwkJCQl9CisJCQl9CisJICAgICAgICB9CisJfQorCisJbXkgJG5zID0gJG5hbWVzcGFjZV9pZHskbmFtZX07CisJbXkgJGlkOworCisJdW5sZXNzIChkZWZpbmVkICRucykgeworCQlwcmludCBTVERFUlIgIk5vIHN1Y2ggbmFtZXNwYWNlICRuYW1lIG9uIE1lZGlhV2lraS5cbiI7CisJCSRucyA9IHtpc19uYW1lc3BhY2UgPT4gMH07CisJCSRuYW1lc3BhY2VfaWR7JG5hbWV9ID0gJG5zOworCX0KKworCWlmICgkbnMtPntpc19uYW1lc3BhY2V9KSB7CisJCSRpZCA9ICRucy0+e2lkfTsKKwl9CisKKwkjIFN0b3JlICJub3RBTmFtZVNwYWNlIiBhcyBzcGVjaWFsIHZhbHVlIGZvciBpbmV4aXN0aW5nIG5hbWVzcGFjZXMKKwlteSAkc3RvcmVfaWQgPSAoJGlkIHx8ICdub3RBTmFtZVNwYWNlJyk7CisKKwkjIFN0b3JlIGV4cGxpY2l0ZWx5IHJlcXVlc3RlZCBuYW1lc3BhY2VzIG9uIGRpc2sKKwlpZiAoIWV4aXN0cyAkY2FjaGVkX213X25hbWVzcGFjZV9pZHskbmFtZX0pIHsKKwkJcnVuX2dpdCgiY29uZmlnIC0tYWRkIHJlbW90ZS4iLiAkcmVtb3RlbmFtZQorCQkJLiIubmFtZXNwYWNlQ2FjaGUgXCIiLiAkbmFtZSAuIjoiLiAkc3RvcmVfaWQgLiJcIiIpOworCQkkY2FjaGVkX213X25hbWVzcGFjZV9pZHskbmFtZX0gPSAxOworCX0KKwlyZXR1cm4gJGlkOworfQorCitzdWIgZ2V0X213X25hbWVzcGFjZV9pZF9mb3JfcGFnZSB7CisJaWYgKG15ICgkbmFtZXNwYWNlKSA9ICRfWzBdID1+IC9eKFteOl0qKTovKSB7CisJCXJldHVybiBnZXRfbXdfbmFtZXNwYWNlX2lkKCRuYW1lc3BhY2UpOworCX0gZWxzZSB7CisJCXJldHVybjsKKwl9Cit9CmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC9naXQtcmVtb3RlLW1lZGlhd2lraS50eHQgYi9jb250cmliL213LXRvLWdpdC9naXQtcmVtb3RlLW1lZGlhd2lraS50eHQKaW5kZXggNGQyMTFmNS4uMjNiN2VmOSAxMDA2NDQKLS0tIGEvY29udHJpYi9tdy10by1naXQvZ2l0LXJlbW90ZS1tZWRpYXdpa2kudHh0CisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0L2dpdC1yZW1vdGUtbWVkaWF3aWtpLnR4dApAQCAtNCw0ICs0LDQgQEAKIHJlcG9zaXRvcnkgdGhhbmtzIHRvIHJlbW90ZS1oZWxwZXJzLgogCiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgdmlzaXQgdGhlIHdpa2kgYXQKLWh0dHBzOi8vZ2l0aHViLmNvbS9CaWJ6YmFsbC9HaXQtTWVkaWF3aWtpL3dpa2kKK2h0dHBzOi8vZ2l0aHViLmNvbS9tb3kvR2l0LU1lZGlhd2lraS93aWtpCmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC90Ly5naXRpZ25vcmUgYi9jb250cmliL213LXRvLWdpdC90Ly5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdhNDBiNAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDQgQEAKK1dFQi8KK3dpa2kvCit0cmFzaCBkaXJlY3RvcnkudCovCit0ZXN0LXJlc3VsdHMvCmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC90L01ha2VmaWxlIGIvY29udHJpYi9tdy10by1naXQvdC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDIyMjAzCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9tdy10by1naXQvdC9NYWtlZmlsZQpAQCAtMCwwICsxLDMxIEBACisjCisjIENvcHlyaWdodCAoQykgMjAxMgorIyAgICAgQ2hhcmxlcyBSb3Vzc2VsIDxjaGFybGVzLnJvdXNzZWxAZW5zaW1hZy5pbWFnLmZyPgorIyAgICAgU2ltb24gQ2F0aGVicmFzIDxzaW1vbi5jYXRoZWJyYXNAZW5zaW1hZy5pbWFnLmZyPgorIyAgICAgSnVsaWVuIEtoYXlhdCA8anVsaWVuLmtoYXlhdEBlbnNpbWFnLmltYWcuZnI+CisjICAgICBHdWlsbGF1bWUgU2FzZHkgPGd1aWxsYXVtZS5zYXNkeUBlbnNpbWFnLmltYWcuZnI+CisjICAgICBTaW1vbiBQZXJyYXQgPHNpbW9uLnBlcnJhdEBlbnNpbWFnLmltYWcuZnI+CisjCisjIyBUZXN0IGdpdC1yZW1vdGUtbWVkaWF3aWtpCisKK2FsbDogdGVzdAorCistaW5jbHVkZSAuLi8uLi8uLi9jb25maWcubWFrLmF1dG9nZW4KKy1pbmNsdWRlIC4uLy4uLy4uL2NvbmZpZy5tYWsKKworVCA9ICQod2lsZGNhcmQgdFswLTldWzAtOV1bMC05XVswLTldLSouc2gpCisKKy5QSE9OWTogaGVscCB0ZXN0IGNsZWFuIGFsbAorCitoZWxwOgorCUBlY2hvICdSdW4gIiQoTUFLRSkgdGVzdCIgdG8gbGF1bmNoIHRlc3Qgc2NyaXB0cycKKwlAZWNobyAnUnVuICIkKE1BS0UpIGNsZWFuIiB0byByZW1vdmUgdHJhc2ggZm9sZGVycycKKwordGVzdDoKKwlAZm9yIHQgaW4gJChUKTsgZG8gXAorCQllY2hvICIkJHQiOyBcCisJCSIuLyQkdCIgfHwgZXhpdCAxOyBcCisJZG9uZQorCitjbGVhbjoKKwkkKFJNKSAtciAndHJhc2ggZGlyZWN0b3J5Jy4qCmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC90L1JFQURNRSBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjZlZTUKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL213LXRvLWdpdC90L1JFQURNRQpAQCAtMCwwICsxLDEyNCBAQAorVGVzdHMgZm9yIE1lZGlhd2lraS10by1HaXQKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCitUaGlzIG1hbnVhbCBkZXNjcmliZXMgaG93IHRvIGluc3RhbGwgdGhlIGdpdC1yZW1vdGUtbWVkaWF3aWtpIHRlc3QKK2Vudmlyb25tZW50IG9uIGEgbWFjaGluZSB3aXRoIGdpdCBpbnN0YWxsZWQgb24gaXQuCisKK1ByZXJlcXVpc2l0ZQorLS0tLS0tLS0tLS0tCisKK0luIG9yZGVyIHRvIHJ1biB0aGlzIHRlc3QgZW52aXJvbm1lbnQgY29ycmVjdGx5LCB5b3Ugd2lsbCBuZWVkIHRvCitpbnN0YWxsIHRoZSBmb2xsb3dpbmcgcGFja2FnZXMgKERlYmlhbi9VYnVudHUgbmFtZXMsIG1heSBuZWVkIHRvIGJlCithZGFwdGVkIGZvciBhbm90aGVyIGRpc3RyaWJ1dGlvbik6CisKKyogbGlnaHR0cGQKKyogcGhwNQorKiBwaHA1LWNnaQorKiBwaHA1LWNsaQorKiBwaHA1LWN1cmwKKyogcGhwNS1zcWxpdGUKKworUHJpbmNpcGxlcyBhbmQgVGVjaG5pY2FsIENob2ljZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSB0ZXN0IGVudmlyb25tZW50IG1ha2VzIGl0IGVhc3kgdG8gaW5zdGFsbCBhbmQgbWFuaXB1bGF0ZSBvbmUgb3IKK3NldmVyYWwgTWVkaWFXaWtpIGluc3RhbmNlcy4gVG8gYWxsb3cgZGV2ZWxvcGVycyB0byBydW4gdGhlIHRlc3RzdWl0ZQorZWFzaWx5LCB0aGUgZW52aXJvbm1lbnQgZG9lcyBub3QgcmVxdWlyZSByb290IHByaXZpbGVnZSAoZXhjZXB0IHRvCitpbnN0YWxsIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBpZiBuZWVkZWQpLiBJdCBzdGFydHMgYSB3ZWJzZXJ2ZXIKK2luc3RhbmNlIG9uIHRoZSB1c2VyJ3MgYWNjb3VudCAodXNpbmcgbGlnaHR0cGQgZ3JlYXRseSBoZWxwcyBmb3IKK3RoYXQpLCBhbmQgZG9lcyBub3QgbmVlZCBhIHNlcGFyYXRlIGRhdGFiYXNlIGRhZW1vbiAodGhhbmtzIHRvIHRoZSB1c2UKK29mIHNxbGl0ZSkuCisKK1J1biB0aGUgdGVzdCBlbnZpcm9ubWVudAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luc3RhbGwgYSBuZXcgd2lraQorfn5+fn5+fn5+fn5+fn5+fn5+CisKK09uY2UgeW91IGhhdmUgYWxsIHRoZSBwcmVyZXF1aXNpdGUsIHlvdSBuZWVkIHRvIGluc3RhbGwgYSBNZWRpYVdpa2kKK2luc3RhbmNlIG9uIHlvdXIgbWFjaGluZS4gSWYgeW91IGFscmVhZHkgaGF2ZSBvbmUsIGl0IGlzIHN0aWxsCitzdHJvbmdseSByZWNvbW1lbmRlZCB0byBpbnN0YWxsIG9uZSB3aXRoIHRoZSBzY3JpcHQgcHJvdmlkZWQuIEhlcmUncworaG93IHRvIHdvcmsgaXQ6CisKK2EuIGNoYW5nZSBkaXJlY3RvcnkgdG8gY29udHJpYi9tdy10by1naXQvdC8KK2IuIGlmIG5lZWRlZCwgZWRpdCB0ZXN0LmNvbmZpZyB0byBjaG9vc2UgeW91ciBpbnN0YWxsYXRpb24gcGFyYW1ldGVycworYy4gcnVuIGAuL2luc3RhbGwtd2lraS5zaCBpbnN0YWxsYAorZC4gY2hlY2sgb24geW91ciBmYXZvdXJpdGUgd2ViIGJyb3dzZXIgaWYgeW91ciB3aWtpIGlzIGNvcnJlY3RseQorICAgaW5zdGFsbGVkLgorCitSZW1vdmUgYW4gZXhpc3Rpbmcgd2lraQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworRWRpdCB0aGUgZmlsZSB0ZXN0LmNvbmZpZyB0byBmaXQgdGhlIHdpa2kgeW91IHdhbnQgdG8gZGVsZXRlLCBhbmQgdGhlbgorZXhlY3V0ZSB0aGUgY29tbWFuZCBgLi9pbnN0YWxsLXdpa2kuc2ggZGVsZXRlYCBmcm9tIHRoZQorY29udHJpYi9tdy10by1naXQvdCBkaXJlY3RvcnkuCisKK1J1biB0aGUgZXhpc3RpbmcgdGVzdHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhlIHByb3ZpZGVkIHRlc3RzIGFyZSBjdXJyZW50bHkgaW4gdGhlIGBjb250cmliL213LXRvLWdpdC90YCBkaXJlY3RvcnkuCitUaGUgZmlsZXMgYXJlIGFsbCB0aGUgdDkzNlswLTldLSouc2ggc2hlbGwgc2NyaXB0cy4KKworYS4gUnVuIGFsbCB0ZXN0czoKK1RvIGRvIHNvLCBydW4gIm1ha2UgdGVzdCIgZnJvbSB0aGUgY29udHJpYi9tdy10by1naXQvIGRpcmVjdG9yeS4KKworYi4gUnVuIGEgc3BlY2lmaWMgdGVzdDoKK1RvIHJ1biBhIGdpdmVuIHRlc3QgPHRlc3RfbmFtZT4sIHJ1biAuLzx0ZXN0X25hbWU+IGZyb20gdGhlCitjb250cmliL213LXRvLWdpdC90IGRpcmVjdG9yeS4KKworSG93IHRvIGNyZWF0ZSBuZXcgdGVzdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0F2YWlsYWJsZSBmdW5jdGlvbnMKK35+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhlIHRlc3QgZW52aXJvbm1lbnQgb2YgZ2l0LXJlbW90ZS1tZWRpYXdpa2kgcHJvdmlkZXMgc29tZSBmdW5jdGlvbnMKK3VzZWZ1bCB0byB0ZXN0IGl0cyBiZWhhdmlvdXIuIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIGZ1bmN0aW9ucycKK3BhcmFtZXRlcnMsIHBsZWFzZSByZWZlciB0byB0aGUgYHRlc3QtZ2l0bXctbGliLnNoYCBhbmQKK2B0ZXN0LWdpdG13LnBsYCBmaWxlcy4KKworKiogYHRlc3RfY2hlY2tfd2lraV9wcmVjb25kYDoKK0NoZWNrIGlmIHRoZSB0ZXN0cyBtdXN0IGJlIHNraXBwZWQgb3Igbm90LiBQbGVhc2UgdXNlIHRoaXMgZnVuY3Rpb24KK2F0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBuZXcgdGVzdCBmaWxlLgorCisqKiBgd2lraV9nZXRwYWdlYDoKK0ZldGNoIGEgZ2l2ZW4gcGFnZSBmcm9tIHRoZSB3aWtpIGFuZCBwdXRzIGl0cyBjb250ZW50IGluIHRoZQorZGlyZWN0b3J5IGluIHBhcmFtZXRlci4KKworKiogYHdpa2lfZGVsZXRlX3BhZ2VgOgorRGVsZXRlIGEgZ2l2ZW4gcGFnZSBmcm9tIHRoZSB3aWtpLgorCisqKiBgd2lraV9lZGl0X3BhZ2VgOgorQ3JlYXRlIG9yIG1vZGlmeSBhIGdpdmVuIHBhZ2UgaW4gdGhlIHdpa2kuIFlvdSBjYW4gc3BlY2lmeSBzZXZlcmFsCitwYXJhbWV0ZXJzIGxpa2UgYSBzdW1tYXJ5IGZvciB0aGUgcGFnZSBlZGl0aW9uLCBvciBhZGQgdGhlIHBhZ2UgdG8gYQorZ2l2ZW4gY2F0ZWdvcnkuCitTZWUgdGVzdC1naXRtdy5wbCBmb3IgbW9yZSBkZXRhaWxzLgorCisqKiBgd2lraV9nZXRhbGxwYWdlYDoKK0ZldGNoIGFsbCBwYWdlcyBmcm9tIHRoZSB3aWtpIGludG8gYSBnaXZlbiBkaXJlY3RvcnkuIFRoZSBkaXJlY3RvcnkKK2lzIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3RzLgorCisqKiBgdGVzdF9kaWZmX2RpcmVjdG9yaWVzYDoKK0NvbXBhcmUgdGhlIGNvbnRlbnQgb2YgdHdvIGRpcmVjdG9yaWVzLiBUaGUgY29udGVudCBtdXN0IGJlIHRoZSBzYW1lLgorVXNlIHRoaXMgZnVuY3Rpb24gdG8gY29tcGFyZSB0aGUgY29udGVudCBvZiBhIGdpdCBkaXJlY3RvcnkgYW5kIGEgd2lraQorb25lIGNyZWF0ZWQgYnkgd2lraV9nZXRhbGxwYWdlLgorCisqKiBgdGVzdF9jb250YWluc19OX2ZpbGVzYDoKK0NoZWNrIGlmIHRoZSBnaXZlbiBkaXJlY3RvcnkgY29udGFpbnMgYSBnaXZlbiBudW1iZXIgb2YgZmlsZS4KKworKiogYHdpa2lfcGFnZV9leGlzdHNgOgorVGVzdHMgaWYgYSBnaXZlbiBwYWdlIGV4aXN0cyBvbiB0aGUgd2lraS4KKworKiogYHdpa2lfcmVzZXRgOgorUmVzZXQgdGhlIHdpa2ksIGkuZS4gZmx1c2ggdGhlIGRhdGFiYXNlLiBVc2UgdGhpcyBmdW5jdGlvbiBhdCB0aGUKK2JlZ2lubmluZyBvZiBlYWNoIG5ldyB0ZXN0LCBleGNlcHQgaWYgdGhlIHRlc3QgcmUtdXNlcyB0aGUgc2FtZSB3aWtpCisoYW5kIGhpc3RvcnkpIGFzIHRoZSBwcmV2aW91cyB0ZXN0LgorCitIb3cgdG8gd3JpdGUgYSBuZXcgdGVzdAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworUGxlYXNlLCBmb2xsb3cgdGhlIHN0YW5kYXJkcyBnaXZlbiBieSBnaXQuIFNlZSBnaXQvdC9SRUFETUUuCitOZXcgZmlsZSBzaG91bGQgYmUgbmFtZWQgYXMgdDkzNlswLTldLSouc2guCitCZSBzdXJlIHRvIHJlc2V0IHlvdXIgd2lraSByZWd1bGFyeSB3aXRoIHRoZSBmdW5jdGlvbiBgd2lraV9yZXNldGAuCmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC90L2luc3RhbGwtd2lraS5zaCBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvaW5zdGFsbC13aWtpLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjcwYTUzZjYKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL213LXRvLWdpdC90L2luc3RhbGwtd2lraS5zaApAQCAtMCwwICsxLDQ1IEBACisjIS9iaW4vc2gKKworIyBUaGlzIHNjcmlwdCBpbnN0YWxscyBvciBkZWxldGVzIGEgTWVkaWFXaWtpIG9uIHlvdXIgY29tcHV0ZXIuCisjIEl0IHJlcXVpcmVzIGEgd2ViIHNlcnZlciB3aXRoIFBIUCBhbmQgU1FMaXRlIHJ1bm5pbmcuIEluIGFkZGl0aW9uLCBpZiB5b3UKKyMgZG8gbm90IGhhdmUgTWVkaWFXaWtpIHNvdXJjZXMgb24geW91ciBjb21wdXRlciwgdGhlIG9wdGlvbiAnaW5zdGFsbCcKKyMgZG93bmxvYWRzIHRoZW0gZm9yIHlvdS4KKyMgUGxlYXNlIHNldCB0aGUgQ09ORklHVVJBVElPTiBWQVJJQUJMRVMgaW4gLi90ZXN0LWdpdG13LWxpYi5zaAorCitXSUtJX1RFU1RfRElSPSQoY2QgIiQoZGlybmFtZSAiJDAiKSIgJiYgcHdkKQorCitpZiB0ZXN0IC16ICIkV0lLSV9URVNUX0RJUiIKK3RoZW4KKwlXSUtJX1RFU1RfRElSPS4KK2ZpCisKKy4gIiRXSUtJX1RFU1RfRElSIi90ZXN0LWdpdG13LWxpYi5zaAordXNhZ2UgKCkgeworCWVjaG8gInVzYWdlOiAiCisJZWNobyAiCS4vaW5zdGFsbC13aWtpLnNoIDxpbnN0YWxsIHwgZGVsZXRlIHwgLS1oZWxwPiIKKwllY2hvICIJCWluc3RhbGwgfCAtaSA6CUluc3RhbGwgYSB3aWtpIG9uIHlvdXIgY29tcHV0ZXIuIgorCWVjaG8gIgkJZGVsZXRlIHwgLWQgOiBEZWxldGUgdGhlIHdpa2kgYW5kIGFsbCBpdHMgcGFnZXMgYW5kICIKKwllY2hvICIJCQljb250ZW50LiIKK30KKworCisjIEFyZ3VtZW50OiBpbnN0YWxsLCBkZWxldGUsIC0taGVscCB8IC1oCitjYXNlICIkMSIgaW4KKwkiaW5zdGFsbCIgfCAiLWkiKQorCQl3aWtpX2luc3RhbGwKKwkJZXhpdCAwCisJCTs7CisJImRlbGV0ZSIgfCAiLWQiKQorCQl3aWtpX2RlbGV0ZQorCQlleGl0IDAKKwkJOzsKKwkiLS1oZWxwIiB8ICItaCIpCisJCXVzYWdlCisJCWV4aXQgMAorCQk7OworCSopCisJCWVjaG8gIkludmFsaWQgYXJndW1lbnQ6ICQxIgorCQl1c2FnZQorCQlleGl0IDEKKwkJOzsKK2VzYWMKZGlmZiAtLWdpdCBhL2NvbnRyaWIvbXctdG8tZ2l0L3QvaW5zdGFsbC13aWtpLy5naXRpZ25vcmUgYi9jb250cmliL213LXRvLWdpdC90L2luc3RhbGwtd2lraS8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1YTJhNDQKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL213LXRvLWdpdC90L2luc3RhbGwtd2lraS8uZ2l0aWdub3JlCkBAIC0wLDAgKzEgQEAKK3dpa2lkYi5zcWxpdGUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvbXctdG8tZ2l0L3QvaW5zdGFsbC13aWtpL0xvY2FsU2V0dGluZ3MucGhwIGIvY29udHJpYi9tdy10by1naXQvdC9pbnN0YWxsLXdpa2kvTG9jYWxTZXR0aW5ncy5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ1ZTQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvaW5zdGFsbC13aWtpL0xvY2FsU2V0dGluZ3MucGhwCkBAIC0wLDAgKzEsMTI5IEBACis8P3BocAorIyBUaGlzIGZpbGUgd2FzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBNZWRpYVdpa2kgMS4xOS4wCisjIGluc3RhbGxlci4gSWYgeW91IG1ha2UgbWFudWFsIGNoYW5nZXMsIHBsZWFzZSBrZWVwIHRyYWNrIGluIGNhc2UgeW91CisjIG5lZWQgdG8gcmVjcmVhdGUgdGhlbSBsYXRlci4KKyMKKyMgU2VlIGluY2x1ZGVzL0RlZmF1bHRTZXR0aW5ncy5waHAgZm9yIGFsbCBjb25maWd1cmFibGUgc2V0dGluZ3MKKyMgYW5kIHRoZWlyIGRlZmF1bHQgdmFsdWVzLCBidXQgZG9uJ3QgZm9yZ2V0IHRvIG1ha2UgY2hhbmdlcyBpbiBfdGhpc18KKyMgZmlsZSwgbm90IHRoZXJlLgorIworIyBGdXJ0aGVyIGRvY3VtZW50YXRpb24gZm9yIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgbWF5IGJlIGZvdW5kIGF0OgorIyBodHRwOi8vd3d3Lm1lZGlhd2lraS5vcmcvd2lraS9NYW51YWw6Q29uZmlndXJhdGlvbl9zZXR0aW5ncworCisjIFByb3RlY3QgYWdhaW5zdCB3ZWIgZW50cnkKK2lmICggIWRlZmluZWQoICdNRURJQVdJS0knICkgKSB7CisJZXhpdDsKK30KKworIyMgVW5jb21tZW50IHRoaXMgdG8gZGlzYWJsZSBvdXRwdXQgY29tcHJlc3Npb24KKyMgJHdnRGlzYWJsZU91dHB1dENvbXByZXNzaW9uID0gdHJ1ZTsKKworJHdnU2l0ZW5hbWUgICAgICA9ICJHaXQtTWVkaWFXaWtpLVRlc3QiOworJHdnTWV0YU5hbWVzcGFjZSA9ICJHaXQtTWVkaWFXaWtpLVRlc3QiOworCisjIyBUaGUgVVJMIGJhc2UgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHdpa2k7CisjIyBkZWZhdWx0cyBmb3IgYWxsIHJ1bnRpbWUgVVJMIHBhdGhzIGFyZSBiYXNlZCBvZmYgb2YgdGhpcy4KKyMjIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGN1c3RvbWl6aW5nIHRoZSBVUkxzIHBsZWFzZSBzZWU6CisjIyBodHRwOi8vd3d3Lm1lZGlhd2lraS5vcmcvd2lraS9NYW51YWw6U2hvcnRfVVJMCiskd2dTY3JpcHRQYXRoICAgICAgID0gIkBXR19TQ1JJUFRfUEFUSEAiOworJHdnU2NyaXB0RXh0ZW5zaW9uICA9ICIucGhwIjsKKworIyMgVGhlIHByb3RvY29sIGFuZCBzZXJ2ZXIgbmFtZSB0byB1c2UgaW4gZnVsbHktcXVhbGlmaWVkIFVSTHMKKyR3Z1NlcnZlciAgICAgICAgICAgPSAiQFdHX1NFUlZFUkAiOworCisjIyBUaGUgcmVsYXRpdmUgVVJMIHBhdGggdG8gdGhlIHNraW5zIGRpcmVjdG9yeQorJHdnU3R5bGVQYXRoICAgICAgICA9ICIkd2dTY3JpcHRQYXRoL3NraW5zIjsKKworIyMgVGhlIHJlbGF0aXZlIFVSTCBwYXRoIHRvIHRoZSBsb2dvLiAgTWFrZSBzdXJlIHlvdSBjaGFuZ2UgdGhpcyBmcm9tIHRoZSBkZWZhdWx0LAorIyMgb3IgZWxzZSB5b3UnbGwgb3ZlcndyaXRlIHlvdXIgbG9nbyB3aGVuIHlvdSB1cGdyYWRlIQorJHdnTG9nbyAgICAgICAgICAgICA9ICIkd2dTdHlsZVBhdGgvY29tbW9uL2ltYWdlcy93aWtpLnBuZyI7CisKKyMjIFVQTyBtZWFuczogdGhpcyBpcyBhbHNvIGEgdXNlciBwcmVmZXJlbmNlIG9wdGlvbgorCiskd2dFbmFibGVFbWFpbCAgICAgID0gdHJ1ZTsKKyR3Z0VuYWJsZVVzZXJFbWFpbCAgPSB0cnVlOyAjIFVQTworCiskd2dFbWVyZ2VuY3lDb250YWN0ID0gImFwYWNoZUBsb2NhbGhvc3QiOworJHdnUGFzc3dvcmRTZW5kZXIgICA9ICJhcGFjaGVAbG9jYWxob3N0IjsKKworJHdnRW5vdGlmVXNlclRhbGsgICAgICA9IGZhbHNlOyAjIFVQTworJHdnRW5vdGlmV2F0Y2hsaXN0ICAgICA9IGZhbHNlOyAjIFVQTworJHdnRW1haWxBdXRoZW50aWNhdGlvbiA9IHRydWU7CisKKyMjIERhdGFiYXNlIHNldHRpbmdzCiskd2dEQnR5cGUgICAgICAgICAgID0gInNxbGl0ZSI7Ciskd2dEQnNlcnZlciAgICAgICAgID0gIiI7Ciskd2dEQm5hbWUgICAgICAgICAgID0gIkBXR19TUUxJVEVfREFUQUZJTEVAIjsKKyR3Z0RCdXNlciAgICAgICAgICAgPSAiIjsKKyR3Z0RCcGFzc3dvcmQgICAgICAgPSAiIjsKKworIyBTUUxpdGUtc3BlY2lmaWMgc2V0dGluZ3MKKyR3Z1NRTGl0ZURhdGFEaXIgICAgPSAiQFdHX1NRTElURV9EQVRBRElSQCI7CisKKworIyMgU2hhcmVkIG1lbW9yeSBzZXR0aW5ncworJHdnTWFpbkNhY2hlVHlwZSAgICA9IENBQ0hFX05PTkU7Ciskd2dNZW1DYWNoZWRTZXJ2ZXJzID0gYXJyYXkoKTsKKworIyMgVG8gZW5hYmxlIGltYWdlIHVwbG9hZHMsIG1ha2Ugc3VyZSB0aGUgJ2ltYWdlcycgZGlyZWN0b3J5CisjIyBpcyB3cml0YWJsZSwgdGhlbiBzZXQgdGhpcyB0byB0cnVlOgorJHdnRW5hYmxlVXBsb2FkcyAgPSB0cnVlOworJHdnVXNlSW1hZ2VNYWdpY2sgPSB0cnVlOworJHdnSW1hZ2VNYWdpY2tDb252ZXJ0Q29tbWFuZCA9IkBDT05WRVJUQCI7Ciskd2dGaWxlRXh0ZW5zaW9uc1tdID0gJ3R4dCc7CisKKyMgSW5zdGFudENvbW1vbnMgYWxsb3dzIHdpa2kgdG8gdXNlIGltYWdlcyBmcm9tIGh0dHA6Ly9jb21tb25zLndpa2ltZWRpYS5vcmcKKyR3Z1VzZUluc3RhbnRDb21tb25zICA9IGZhbHNlOworCisjIyBJZiB5b3UgdXNlIEltYWdlTWFnaWNrIChvciBhbnkgb3RoZXIgc2hlbGwgY29tbWFuZCkgb24gYQorIyMgTGludXggc2VydmVyLCB0aGlzIHdpbGwgbmVlZCB0byBiZSBzZXQgdG8gdGhlIG5hbWUgb2YgYW4KKyMjIGF2YWlsYWJsZSBVVEYtOCBsb2NhbGUKKyR3Z1NoZWxsTG9jYWxlID0gImVuX1VTLnV0ZjgiOworCisjIyBJZiB5b3Ugd2FudCB0byB1c2UgaW1hZ2UgdXBsb2FkcyB1bmRlciBzYWZlIG1vZGUsCisjIyBjcmVhdGUgdGhlIGRpcmVjdG9yaWVzIGltYWdlcy9hcmNoaXZlLCBpbWFnZXMvdGh1bWIgYW5kCisjIyBpbWFnZXMvdGVtcCwgYW5kIG1ha2UgdGhlbSBhbGwgd3JpdGFibGUuIFRoZW4gdW5jb21tZW50CisjIyB0aGlzLCBpZiBpdCdzIG5vdCBhbHJlYWR5IHVuY29tbWVudGVkOgorIyR3Z0hhc2hlZFVwbG9hZERpcmVjdG9yeSA9IGZhbHNlOworCisjIyBTZXQgJHdnQ2FjaGVEaXJlY3RvcnkgdG8gYSB3cml0YWJsZSBkaXJlY3Rvcnkgb24gdGhlIHdlYiBzZXJ2ZXIKKyMjIHRvIG1ha2UgeW91ciB3aWtpIGdvIHNsaWdodGx5IGZhc3Rlci4gVGhlIGRpcmVjdG9yeSBzaG91bGQgbm90CisjIyBiZSBwdWJsaWNseSBhY2Nlc3NpYmxlIGZyb20gdGhlIHdlYi4KKyMkd2dDYWNoZURpcmVjdG9yeSA9ICIkSVAvY2FjaGUiOworCisjIFNpdGUgbGFuZ3VhZ2UgY29kZSwgc2hvdWxkIGJlIG9uZSBvZiB0aGUgbGlzdCBpbiAuL2xhbmd1YWdlcy9OYW1lcy5waHAKKyR3Z0xhbmd1YWdlQ29kZSA9ICJlbiI7CisKKyR3Z1NlY3JldEtleSA9ICIxYzkxMmJmZTM1MTlmYjcwZjVkYzUyM2VjYzY5ODExMWNkNDNkODFhMTFjNTg1YjNlZWZiMjhmMjljMjY5OWI3IjsKKyMkd2dTZWNyZXRLZXkgPSAiQFNFQ1JFVEtFWUAiOworCisKKyMgU2l0ZSB1cGdyYWRlIGtleS4gTXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgKGRlZmF1bHQgcHJvdmlkZWQpIHRvIHR1cm4gb24gdGhlCisjIHdlYiBpbnN0YWxsZXIgd2hpbGUgTG9jYWxTZXR0aW5ncy5waHAgaXMgaW4gcGxhY2UKKyR3Z1VwZ3JhZGVLZXkgPSAiZGRhZTdkYzg3Y2QwYTY0NSI7CisKKyMjIERlZmF1bHQgc2tpbjogeW91IGNhbiBjaGFuZ2UgdGhlIGRlZmF1bHQgc2tpbi4gVXNlIHRoZSBpbnRlcm5hbCBzeW1ib2xpYworIyMgbmFtZXMsIGllICdzdGFuZGFyZCcsICdub3N0YWxnaWEnLCAnY29sb2duZWJsdWUnLCAnbW9ub2Jvb2snLCAndmVjdG9yJzoKKyR3Z0RlZmF1bHRTa2luID0gInZlY3RvciI7CisKKyMjIEZvciBhdHRhY2hpbmcgbGljZW5zaW5nIG1ldGFkYXRhIHRvIHBhZ2VzLCBhbmQgZGlzcGxheWluZyBhbgorIyMgYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSAvIGljb24uIEdOVSBGcmVlIERvY3VtZW50YXRpb24KKyMjIExpY2Vuc2UgYW5kIENyZWF0aXZlIENvbW1vbnMgbGljZW5zZXMgYXJlIHN1cHBvcnRlZCBzbyBmYXIuCiskd2dSaWdodHNQYWdlID0gIiI7ICMgU2V0IHRvIHRoZSB0aXRsZSBvZiBhIHdpa2kgcGFnZSB0aGF0IGRlc2NyaWJlcyB5b3VyIGxpY2Vuc2UvY29weXJpZ2h0Ciskd2dSaWdodHNVcmwgID0gIiI7Ciskd2dSaWdodHNUZXh0ID0gIiI7Ciskd2dSaWdodHNJY29uID0gIiI7CisKKyMgUGF0aCB0byB0aGUgR05VIGRpZmYzIHV0aWxpdHkuIFVzZWQgZm9yIGNvbmZsaWN0IHJlc29sdXRpb24uCiskd2dEaWZmMyA9ICIvdXNyL2Jpbi9kaWZmMyI7CisKKyMgUXVlcnkgc3RyaW5nIGxlbmd0aCBsaW1pdCBmb3IgUmVzb3VyY2VMb2FkZXIuIFlvdSBzaG91bGQgb25seSBzZXQgdGhpcyBpZgorIyB5b3VyIHdlYiBzZXJ2ZXIgaGFzIGEgcXVlcnkgc3RyaW5nIGxlbmd0aCBsaW1pdCAodGhlbiBzZXQgaXQgdG8gdGhhdCBsaW1pdCksCisjIG9yIGlmIHlvdSBoYXZlIHN1aG9zaW4uZ2V0Lm1heF92YWx1ZV9sZW5ndGggc2V0IGluIHBocC5pbmkgKHRoZW4gc2V0IGl0IHRvCisjIHRoYXQgdmFsdWUpCiskd2dSZXNvdXJjZUxvYWRlck1heFF1ZXJ5TGVuZ3RoID0gLTE7CisKKworCisjIEVuZCBvZiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBzZXR0aW5ncy4KKyMgQWRkIG1vcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGJlbG93LgpkaWZmIC0tZ2l0IGEvY29udHJpYi9tdy10by1naXQvdC9pbnN0YWxsLXdpa2kvZGJfaW5zdGFsbC5waHAgYi9jb250cmliL213LXRvLWdpdC90L2luc3RhbGwtd2lraS9kYl9pbnN0YWxsLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjNmNGUwCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9tdy10by1naXQvdC9pbnN0YWxsLXdpa2kvZGJfaW5zdGFsbC5waHAKQEAgLTAsMCArMSwxMjAgQEAKKzw/cGhwCisvKioKKyAqIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyBhIFNRTGl0ZSBkYXRhYmFzZSBmb3IgYSBNZWRpYVdpa2kgdmVyc2lvbiAxLjE5LjAKKyAqIFlvdSBtdXN0IHNwZWNpZnkgdGhlIGxvZ2luIG9mIHRoZSBhZG1pbiAoYXJndW1lbnQgMSkgYW5kIGl0cworICogcGFzc3dvcmQgKGFyZ3VtZW50IDIpIGFuZCB0aGUgZm9sZGVyIHdoZXJlIHRoZSBkYXRhYmFzZSBmaWxlCisgKiBpcyBsb2NhdGVkIChhYnNvbHV0ZSBwYXRoIGluIGFyZ3VtZW50IDMpLgorICogSXQgaXMgdXNlZCBieSB0aGUgc2NyaXB0IGluc3RhbGwtd2lraS5zaCBpbiBvcmRlciB0byBtYWtlIGVhc3kgdGhlCisgKiBpbnN0YWxsYXRpb24gb2YgYSBNZWRpYVdpa2kuCisgKgorICogSW4gb3JkZXIgdG8gZ2VuZXJhdGUgYSBTUUxpdGUgZGF0YWJhc2UgZmlsZSwgTWVkaWFXaWtpIGFzayB0aGUgdXNlcgorICogdG8gc3VibWl0IHNvbWUgZm9ybXMgaW4gaXRzIHdlYiBicm93c2VyLiBUaGlzIHNjcmlwdCBzaW11bGF0ZXMgdGhpcworICogYmVoYXZpb3IgdGhvdWdoIHRoZSBmdW5jdGlvbnMgPGdldD4gYW5kIDxzdWJtaXQ+CisgKgorICovCiskYXJnYyA9ICRfU0VSVkVSWydhcmdjJ107CiskYXJndiA9ICRfU0VSVkVSWydhcmd2J107CisKKyRsb2dpbiA9ICRhcmd2WzJdOworJHBhc3MgPSAkYXJndlszXTsKKyR0bXAgPSAkYXJndls0XTsKKyRwb3J0ID0gJGFyZ3ZbNV07CisKKyR1cmwgPSAnaHR0cDovL2xvY2FsaG9zdDonLiRwb3J0Licvd2lraS9tdy1jb25maWcvaW5kZXgucGhwJzsKKyRkYl9kaXIgPSB1cmxlbmNvZGUoJHRtcCk7CiskdG1wX2Nvb2tpZSA9IHRlbXBuYW0oJHRtcCwgIkNPT0tJRV8iKTsKKy8qCisgKiBGZXRjaHMgYSBwYWdlIHdpdGggY1VSTC4KKyAqLworZnVuY3Rpb24gZ2V0KCRwYWdlX25hbWUgPSAiIikgeworCSRjdXJsID0gY3VybF9pbml0KCk7CisJJHBhZ2VfbmFtZV9hZGQgPSAiIjsKKwlpZiAoJHBhZ2VfbmFtZSAhPSAiIikgeworCQkkcGFnZV9uYW1lX2FkZCA9ICc/cGFnZT0nLiRwYWdlX25hbWU7CisJfQorCSR1cmwgPSAkR0xPQkFMU1sndXJsJ10uJHBhZ2VfbmFtZV9hZGQ7CisJJHRtcF9jb29raWUgPSAkR0xPQkFMU1sndG1wX2Nvb2tpZSddOworCWN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0NPT0tJRUpBUiwgJHRtcF9jb29raWUpOworCWN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKKwljdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgdHJ1ZSk7CisJY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfQ09PS0lFRklMRSwgJHRtcF9jb29raWUpOworCWN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0hFQURFUiwgdHJ1ZSk7CisJY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVJMLCAkdXJsKTsKKworCSRwYWdlID0gY3VybF9leGVjKCRjdXJsKTsKKwlpZiAoISRwYWdlKSB7CisJCWRpZSgiQ291bGQgbm90IGdldCBwYWdlOiAkdXJsXG4iKTsKKwl9CisJY3VybF9jbG9zZSgkY3VybCk7CisJcmV0dXJuICRwYWdlOworfQorCisvKgorICogU3VibWl0cyBhIGZvcm0gd2l0aCBjVVJMLgorICovCitmdW5jdGlvbiBzdWJtaXQoJHBhZ2VfbmFtZSwgJG9wdGlvbiA9ICIiKSB7CisJJGN1cmwgPSBjdXJsX2luaXQoKTsKKwkkZGF0YXBvc3QgPSAnc3VibWl0LWNvbnRpbnVlPUNvbnRpbnVlKyVFMiU4NiU5Mic7CisJaWYgKCRvcHRpb24gIT0gIiIpIHsKKwkJJGRhdGFwb3N0ID0gJG9wdGlvbi4nJicuJGRhdGFwb3N0OworCX0KKwkkdXJsID0gJEdMT0JBTFNbJ3VybCddLic/cGFnZT0nLiRwYWdlX25hbWU7CisJJHRtcF9jb29raWUgPSAkR0xPQkFMU1sndG1wX2Nvb2tpZSddOworCWN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1VSTCwgJHVybCk7CisJY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CisJY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIHRydWUpOworCWN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhcG9zdCk7CisJY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOworCWN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0NPT0tJRUpBUiwgJHRtcF9jb29raWUpOworCWN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0NPT0tJRUZJTEUsICR0bXBfY29va2llKTsKKworCSRwYWdlID0gY3VybF9leGVjKCRjdXJsKTsKKwlpZiAoISRwYWdlKSB7CisJCWRpZSgiQ291bGQgbm90IGdldCBwYWdlOiAkdXJsXG4iKTsKKwl9CisJY3VybF9jbG9zZSgkY3VybCk7CisJcmV0dXJuICIkcGFnZSI7Cit9CisKKy8qCisgKiBIZXJlIHN0YXJ0cyB0aGlzIHNjcmlwdDogc2ltdWxhdGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgdXNlcgorICogc3VibWl0dGluZyBmb3JtcyB0byBnZW5lcmF0ZXMgdGhlIGRhdGFiYXNlIGZpbGUuCisgKiBOb3RlIHRoaXMgc2ltdWxhdGlvbiB3YXMgbWFkZSBmb3IgdGhlIE1lZGlhV2lraSB2ZXJzaW9uIDEuMTkuMCwKKyAqIHdlIGNhbid0IGFzc3VtZSBpdCB3b3JrcyB3aXRoIG90aGVyIHZlcnNpb25zLgorICoKKyAqLworCiskcGFnZSA9IGdldCgpOworaWYgKCFwcmVnX21hdGNoKCcvaW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iKFswLTldKykiIG5hbWU9Ikxhbmd1YWdlUmVxdWVzdFRpbWUiLycsCisJCSRwYWdlLCAkbWF0Y2hlcykpIHsKKwllY2hvICJVbmV4cGVjdGVkIGNvbnRlbnQgZm9yIHBhZ2UgZG93bmxvYWRlZDpcbiI7CisJZWNobyAiJHBhZ2UiOworCWRpZTsKK307CiskdGltZXN0YW1wID0gJG1hdGNoZXNbMV07CiskbGFuZ3VhZ2UgPSAiTGFuZ3VhZ2VSZXF1ZXN0VGltZT0kdGltZXN0YW1wJnVzZWxhbmc9ZW4mQ29udExhbmc9ZW4iOworJHBhZ2UgPSBzdWJtaXQoJ0xhbmd1YWdlJywgJGxhbmd1YWdlKTsKKworc3VibWl0KCdXZWxjb21lJyk7CisKKyRkYl9jb25maWcgPSAnREJUeXBlPXNxbGl0ZSc7CiskZGJfY29uZmlnID0gJGRiX2NvbmZpZy4nJnNxbGl0ZV93Z1NRTGl0ZURhdGFEaXI9Jy4kZGJfZGlyOworJGRiX2NvbmZpZyA9ICRkYl9jb25maWcuJyZzcWxpdGVfd2dEQm5hbWU9Jy4kYXJndlsxXTsKK3N1Ym1pdCgnREJDb25uZWN0JywgJGRiX2NvbmZpZyk7CisKKyR3aWtpX2NvbmZpZyA9ICdjb25maWdfd2dTaXRlbmFtZT1URVNUJzsKKyR3aWtpX2NvbmZpZyA9ICR3aWtpX2NvbmZpZy4nJmNvbmZpZ19fTmFtZXNwYWNlVHlwZT1zaXRlLW5hbWUnOworJHdpa2lfY29uZmlnID0gJHdpa2lfY29uZmlnLicmY29uZmlnX3dnTWV0YU5hbWVzcGFjZT1NeVdpa2knOworJHdpa2lfY29uZmlnID0gJHdpa2lfY29uZmlnLicmY29uZmlnX19BZG1pbk5hbWU9Jy4kbG9naW47CisKKyR3aWtpX2NvbmZpZyA9ICR3aWtpX2NvbmZpZy4nJmNvbmZpZ19fQWRtaW5QYXNzd29yZD0nLiRwYXNzOworJHdpa2lfY29uZmlnID0gJHdpa2lfY29uZmlnLicmY29uZmlnX19BZG1pblBhc3N3b3JkMj0nLiRwYXNzOworCiskd2lraV9jb25maWcgPSAkd2lraV9jb25maWcuJyZ3aWtpX19jb25maWdFbWFpbD1lbWFpbCU0MGVtYWlsLm9yZyc7Ciskd2lraV9jb25maWcgPSAkd2lraV9jb25maWcuJyZjb25maWdfX1NraXBPcHRpb25hbD1za2lwJzsKK3N1Ym1pdCgnTmFtZScsICR3aWtpX2NvbmZpZyk7CitzdWJtaXQoJ0luc3RhbGwnKTsKK3N1Ym1pdCgnSW5zdGFsbCcpOworCit1bmxpbmsoJHRtcF9jb29raWUpOworPz4KZGlmZiAtLWdpdCBhL2NvbnRyaWIvbXctdG8tZ2l0L3QvcHVzaC1wdWxsLXRlc3RzLnNoIGIvY29udHJpYi9tdy10by1naXQvdC9wdXNoLXB1bGwtdGVzdHMuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRhMmRjNQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvcHVzaC1wdWxsLXRlc3RzLnNoCkBAIC0wLDAgKzEsMTQ0IEBACit0ZXN0X3B1c2hfcHVsbCAoKSB7CisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdHaXQgcHVsbCB3b3JrcyBhZnRlciBhZGRpbmcgYSBuZXcgd2lraSBwYWdlJyAnCisJCXdpa2lfcmVzZXQgJiYKKworCQlnaXQgY2xvbmUgbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl8xICYmCisJCXdpa2lfZWRpdHBhZ2UgRm9vICJwYWdlIGNyZWF0ZWQgYWZ0ZXIgdGhlIGdpdCBjbG9uZSIgZmFsc2UgJiYKKworCQkoCisJCQljZCBtd19kaXJfMSAmJgorCQkJZ2l0IHB1bGwKKwkJKSAmJgorCisJCXdpa2lfZ2V0YWxscGFnZSByZWZfcGFnZV8xICYmCisJCXRlc3RfZGlmZl9kaXJlY3RvcmllcyBtd19kaXJfMSByZWZfcGFnZV8xCisJJworCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAnR2l0IHB1bGwgd29ya3MgYWZ0ZXIgZWRpdGluZyBhIHdpa2kgcGFnZScgJworCQl3aWtpX3Jlc2V0ICYmCisKKwkJd2lraV9lZGl0cGFnZSBGb28gInBhZ2UgY3JlYXRlZCBiZWZvcmUgdGhlIGdpdCBjbG9uZSIgZmFsc2UgJiYKKwkJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfMiAmJgorCQl3aWtpX2VkaXRwYWdlIEZvbyAibmV3IGxpbmUgYWRkZWQgb24gdGhlIHdpa2kiIHRydWUgJiYKKworCQkoCisJCQljZCBtd19kaXJfMiAmJgorCQkJZ2l0IHB1bGwKKwkJKSAmJgorCisJCXdpa2lfZ2V0YWxscGFnZSByZWZfcGFnZV8yICYmCisJCXRlc3RfZGlmZl9kaXJlY3RvcmllcyBtd19kaXJfMiByZWZfcGFnZV8yCisJJworCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1bGwgd29ya3Mgb24gY29uZmxpY3QgaGFuZGxlZCBieSBhdXRvLW1lcmdlJyAnCisJCXdpa2lfcmVzZXQgJiYKKworCQl3aWtpX2VkaXRwYWdlIEZvbyAiMSBpbml0CiszCis1CisJIiBmYWxzZSAmJgorCQlnaXQgY2xvbmUgbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl8zICYmCisKKwkJd2lraV9lZGl0cGFnZSBGb28gIjEgaW5pdAorMiBjb250ZW50IGFkZGVkIG9uIHdpa2kgYWZ0ZXIgY2xvbmUKKzMKKzUKKwkiIGZhbHNlICYmCisKKwkJKAorCQkJY2QgbXdfZGlyXzMgJiYKKwkJZWNobyAiMSBpbml0CiszCis0IGNvbnRlbnQgYWRkZWQgb24gZ2l0IGFmdGVyIGNsb25lCis1CisiID5Gb28ubXcgJiYKKwkJCWdpdCBjb21taXQgLWFtICJjb25mbGljdGluZyBjaGFuZ2Ugb24gZm9vIiAmJgorCQkJZ2l0IHB1bGwgJiYKKwkJCWdpdCBwdXNoCisJCSkKKwknCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdHaXQgcHVzaCB3b3JrcyBhZnRlciBhZGRpbmcgYSBmaWxlIC5tdycgJworCQl3aWtpX3Jlc2V0ICYmCisJCWdpdCBjbG9uZSBtZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyXzQgJiYKKwkJd2lraV9nZXRhbGxwYWdlIHJlZl9wYWdlXzQgJiYKKwkJKAorCQkJY2QgbXdfZGlyXzQgJiYKKwkJCXRlc3RfcGF0aF9pc19taXNzaW5nIEZvby5tdyAmJgorCQkJdG91Y2ggRm9vLm13ICYmCisJCQllY2hvICJoZWxsbyB3b3JsZCIgPj5Gb28ubXcgJiYKKwkJCWdpdCBhZGQgRm9vLm13ICYmCisJCQlnaXQgY29tbWl0IC1tICJGb28iICYmCisJCQlnaXQgcHVzaAorCQkpICYmCisJCXdpa2lfZ2V0YWxscGFnZSByZWZfcGFnZV80ICYmCisJCXRlc3RfZGlmZl9kaXJlY3RvcmllcyBtd19kaXJfNCByZWZfcGFnZV80CisJJworCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAnR2l0IHB1c2ggd29ya3MgYWZ0ZXIgZWRpdGluZyBhIGZpbGUgLm13JyAnCisJCXdpa2lfcmVzZXQgJiYKKwkJd2lraV9lZGl0cGFnZSAiRm9vIiAicGFnZSBjcmVhdGVkIGJlZm9yZSB0aGUgZ2l0IGNsb25lIiBmYWxzZSAmJgorCQlnaXQgY2xvbmUgbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl81ICYmCisKKwkJKAorCQkJY2QgbXdfZGlyXzUgJiYKKwkJCWVjaG8gIm5ldyBsaW5lIGFkZGVkIGluIHRoZSBmaWxlIEZvby5tdyIgPj5Gb28ubXcgJiYKKwkJCWdpdCBjb21taXQgLWFtICJlZGl0IGZpbGUgRm9vLm13IiAmJgorCQkJZ2l0IHB1c2gKKwkJKSAmJgorCisJCXdpa2lfZ2V0YWxscGFnZSByZWZfcGFnZV81ICYmCisJCXRlc3RfZGlmZl9kaXJlY3RvcmllcyBtd19kaXJfNSByZWZfcGFnZV81CisJJworCisJdGVzdF9leHBlY3RfZmFpbHVyZSAnR2l0IHB1c2ggd29ya3MgYWZ0ZXIgZGVsZXRpbmcgYSBmaWxlJyAnCisJCXdpa2lfcmVzZXQgJiYKKwkJd2lraV9lZGl0cGFnZSBGb28gIndpa2kgcGFnZSBhZGRlZCBiZWZvcmUgZ2l0IGNsb25lIiBmYWxzZSAmJgorCQlnaXQgY2xvbmUgbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl82ICYmCisKKwkJKAorCQkJY2QgbXdfZGlyXzYgJiYKKwkJCWdpdCBybSBGb28ubXcgJiYKKwkJCWdpdCBjb21taXQgLWFtICJwYWdlIEZvby5tdyBkZWxldGVkIiAmJgorCQkJZ2l0IHB1c2gKKwkJKSAmJgorCisJCXRlc3RfbXVzdF9mYWlsIHdpa2lfcGFnZV9leGlzdCBGb28KKwknCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdNZXJnZSBjb25mbGljdCBleHBlY3RlZCBhbmQgc29sdmluZyBpdCcgJworCQl3aWtpX3Jlc2V0ICYmCisKKwkJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfNyAmJgorCQl3aWtpX2VkaXRwYWdlIEZvbyAiMSBjb25mbGljdAorMyB3aWtpCis0IiBmYWxzZSAmJgorCisJCSgKKwkJCWNkIG13X2Rpcl83ICYmCisJCWVjaG8gIjEgY29uZmxpY3QKKzIgZ2l0Cis0IiA+Rm9vLm13ICYmCisJCQlnaXQgYWRkIEZvby5tdyAmJgorCQkJZ2l0IGNvbW1pdCAtbSAiY29uZmxpY3QgY3JlYXRlZCIgJiYKKwkJCXRlc3RfbXVzdF9mYWlsIGdpdCBwdWxsICYmCisJCQkiJFBFUkxfUEFUSCIgLXBpIC1lICJzL1s8PT5dLiovL2ciIEZvby5tdyAmJgorCQkJZ2l0IGNvbW1pdCAtYW0gIm1lcmdlIGNvbmZsaWN0IHNvbHZlZCIgJiYKKwkJCWdpdCBwdXNoCisJCSkKKwknCisKKwl0ZXN0X2V4cGVjdF9mYWlsdXJlICdnaXQgcHVsbCB3b3JrcyBhZnRlciBkZWxldGluZyBhIHdpa2kgcGFnZScgJworCQl3aWtpX3Jlc2V0ICYmCisJCXdpa2lfZWRpdHBhZ2UgRm9vICJ3aWtpIHBhZ2UgYWRkZWQgYmVmb3JlIHRoZSBnaXQgY2xvbmUiIGZhbHNlICYmCisJCWdpdCBjbG9uZSBtZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyXzggJiYKKworCQl3aWtpX2RlbGV0ZV9wYWdlIEZvbyAmJgorCQkoCisJCQljZCBtd19kaXJfOCAmJgorCQkJZ2l0IHB1bGwgJiYKKwkJCXRlc3RfcGF0aF9pc19taXNzaW5nIEZvby5tdworCQkpCisJJworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9tdy10by1naXQvdC90OTM2MC1tdy10by1naXQtY2xvbmUuc2ggYi9jb250cmliL213LXRvLWdpdC90L3Q5MzYwLW13LXRvLWdpdC1jbG9uZS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MTFhOTBjCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9tdy10by1naXQvdC90OTM2MC1tdy10by1naXQtY2xvbmUuc2gKQEAgLTAsMCArMSwyNTcgQEAKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTIKKyMgICAgIENoYXJsZXMgUm91c3NlbCA8Y2hhcmxlcy5yb3Vzc2VsQGVuc2ltYWcuaW1hZy5mcj4KKyMgICAgIFNpbW9uIENhdGhlYnJhcyA8c2ltb24uY2F0aGVicmFzQGVuc2ltYWcuaW1hZy5mcj4KKyMgICAgIEp1bGllbiBLaGF5YXQgPGp1bGllbi5raGF5YXRAZW5zaW1hZy5pbWFnLmZyPgorIyAgICAgR3VpbGxhdW1lIFNhc2R5IDxndWlsbGF1bWUuc2FzZHlAZW5zaW1hZy5pbWFnLmZyPgorIyAgICAgU2ltb24gUGVycmF0IDxzaW1vbi5wZXJyYXRAZW5zaW1hZy5pbWFnLmZyPgorIworIyBMaWNlbnNlOiBHUEwgdjIgb3IgbGF0ZXIKKworCit0ZXN0X2Rlc2NyaXB0aW9uPSdUZXN0IHRoZSBHaXQgTWVkaWF3aWtpIHJlbW90ZSBoZWxwZXI6IGdpdCBjbG9uZScKKworLiAuL3Rlc3QtZ2l0bXctbGliLnNoCisuICRURVNUX0RJUkVDVE9SWS90ZXN0LWxpYi5zaAorCisKK3Rlc3RfY2hlY2tfcHJlY29uZAorCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0dpdCBjbG9uZSBjcmVhdGVzIHRoZSBleHBlY3RlZCBnaXQgbG9nIHdpdGggb25lIGZpbGUnICcKKwl3aWtpX3Jlc2V0ICYmCisJd2lraV9lZGl0cGFnZSBmb28gInRoaXMgaXMgbm90IGltcG9ydGFudCIgZmFsc2UgLWMgY2F0IC1zICJ0aGlzIG11c3QgYmUgdGhlIHNhbWUiICYmCisJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfMSAmJgorCSgKKwkJY2QgbXdfZGlyXzEgJiYKKwkJZ2l0IGxvZyAtLWZvcm1hdD0lcyBIRUFEXi4uSEVBRCA+bG9nLnRtcAorCSkgJiYKKwllY2hvICJ0aGlzIG11c3QgYmUgdGhlIHNhbWUiID5tc2cudG1wICYmCisJZGlmZiAtYiBtd19kaXJfMS9sb2cudG1wIG1zZy50bXAKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdHaXQgY2xvbmUgY3JlYXRlcyB0aGUgZXhwZWN0ZWQgZ2l0IGxvZyB3aXRoIG11bHRpcGxlIGZpbGVzJyAnCisJd2lraV9yZXNldCAmJgorCXdpa2lfZWRpdHBhZ2UgZGFkZHkgInRoaXMgaXMgbm90IGltcG9ydGFudCIgZmFsc2UgLXM9InRoaXMgbXVzdCBiZSB0aGUgc2FtZSIgJiYKKwl3aWtpX2VkaXRwYWdlIGRhZGR5ICJuZWl0aGVyIGlzIHRoaXMiIHRydWUgLXM9InRoaXMgbXVzdCBhbHNvIGJlIHRoZSBzYW1lIiAmJgorCXdpa2lfZWRpdHBhZ2UgZGFkZHkgIm5laXRoZXIgaXMgdGhpcyIgdHJ1ZSAtcz0ic2FtZSBzYW1lIHNhbWUiICYmCisJd2lraV9lZGl0cGFnZSBkaiAiZG9udCBjYXJlIiBmYWxzZSAtcz0iaWRlbnRpY2FsIiAmJgorCXdpa2lfZWRpdHBhZ2UgZGogImRvbnQgY2FyZSBlaXRoZXIiIHRydWUgLXM9ImlkZW50aWNhbCB0b28iICYmCisJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfMiAmJgorCSgKKwkJY2QgbXdfZGlyXzIgJiYKKwkJZ2l0IGxvZyAtLWZvcm1hdD0lcyBEYWRkeS5tdyAgPmxvZ0RhZGR5LnRtcCAmJgorCQlnaXQgbG9nIC0tZm9ybWF0PSVzIERqLm13ID5sb2dEai50bXAKKwkpICYmCisJZWNobyAic2FtZSBzYW1lIHNhbWUiID5tc2dEYWRkeS50bXAgJiYKKwllY2hvICJ0aGlzIG11c3QgYWxzbyBiZSB0aGUgc2FtZSIgPj5tc2dEYWRkeS50bXAgJiYKKwllY2hvICJ0aGlzIG11c3QgYmUgdGhlIHNhbWUiID4+bXNnRGFkZHkudG1wICYmCisJZWNobyAiaWRlbnRpY2FsIHRvbyIgPm1zZ0RqLnRtcCAmJgorCWVjaG8gImlkZW50aWNhbCIgPj5tc2dEai50bXAgJiYKKwlkaWZmIC1iIG13X2Rpcl8yL2xvZ0RhZGR5LnRtcCBtc2dEYWRkeS50bXAgJiYKKwlkaWZmIC1iIG13X2Rpcl8yL2xvZ0RqLnRtcCBtc2dEai50bXAKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdHaXQgY2xvbmUgY3JlYXRlcyBvbmx5IE1haW5fUGFnZS5tdyB3aXRoIGFuIGVtcHR5IHdpa2knICcKKwl3aWtpX3Jlc2V0ICYmCisJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfMyAmJgorCXRlc3RfY29udGFpbnNfTl9maWxlcyBtd19kaXJfMyAxICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgbXdfZGlyXzMvTWFpbl9QYWdlLm13CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0dpdCBjbG9uZSBkb2VzIG5vdCBmZXRjaCBhIGRlbGV0ZWQgcGFnZScgJworCXdpa2lfcmVzZXQgJiYKKwl3aWtpX2VkaXRwYWdlIGZvbyAidGhpcyBwYWdlIG11c3QgYmUgZGVsZXRlZCBiZWZvcmUgdGhlIGNsb25lIiBmYWxzZSAmJgorCXdpa2lfZGVsZXRlX3BhZ2UgZm9vICYmCisJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfNCAmJgorCXRlc3RfY29udGFpbnNfTl9maWxlcyBtd19kaXJfNCAxICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgbXdfZGlyXzQvTWFpbl9QYWdlLm13ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgbXdfZGlyXzQvRm9vLm13CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0dpdCBjbG9uZSB3b3JrcyB3aXRoIHBhZ2UgYWRkZWQnICcKKwl3aWtpX3Jlc2V0ICYmCisJd2lraV9lZGl0cGFnZSBmb28gIiBJIHdpbGwgYmUgY2xvbmVkIiBmYWxzZSAmJgorCXdpa2lfZWRpdHBhZ2UgYmFyICJJIHdpbGwgYmUgY2xvbmVkIiBmYWxzZSAmJgorCWdpdCBjbG9uZSBtZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyXzUgJiYKKwl3aWtpX2dldGFsbHBhZ2UgcmVmX3BhZ2VfNSAmJgorCXRlc3RfZGlmZl9kaXJlY3RvcmllcyBtd19kaXJfNSByZWZfcGFnZV81ICYmCisJd2lraV9kZWxldGVfcGFnZSBmb28gJiYKKwl3aWtpX2RlbGV0ZV9wYWdlIGJhcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdHaXQgY2xvbmUgd29ya3Mgd2l0aCBhbiBlZGl0ZWQgcGFnZSAnICcKKwl3aWtpX3Jlc2V0ICYmCisJd2lraV9lZGl0cGFnZSBmb28gInRoaXMgcGFnZSB3aWxsIGJlIGVkaXRlZCIgXAorCQlmYWxzZSAtcyAiZmlyc3QgZWRpdGlvbiBvZiBwYWdlIGZvbyImJgorCXdpa2lfZWRpdHBhZ2UgZm9vICJ0aGlzIHBhZ2UgaGFzIGJlZW4gZWRpdGVkIGFuZCBtdXN0IGJlIG9uIHRoZSBjbG9uZSAiIHRydWUgJiYKKwlnaXQgY2xvbmUgbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl82ICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgbXdfZGlyXzYvRm9vLm13ICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgbXdfZGlyXzYvTWFpbl9QYWdlLm13ICYmCisJd2lraV9nZXRhbGxwYWdlIG13X2Rpcl82L3BhZ2VfcmVmXzYgJiYKKwl0ZXN0X2RpZmZfZGlyZWN0b3JpZXMgbXdfZGlyXzYgbXdfZGlyXzYvcGFnZV9yZWZfNiAmJgorCSgKKwkJY2QgbXdfZGlyXzYgJiYKKwkJZ2l0IGxvZyAtLWZvcm1hdD0lcyBIRUFEXiBGb28ubXcgPiAuLi9Gb28ubG9nCisJKSAmJgorCWVjaG8gImZpcnN0IGVkaXRpb24gb2YgcGFnZSBmb28iID4gRm9vRXhwZWN0LmxvZyAmJgorCWRpZmYgRm9vRXhwZWN0LmxvZyBGb28ubG9nCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnR2l0IGNsb25lIHdvcmtzIHdpdGggc2V2ZXJhbCBwYWdlcyBhbmQgc29tZSBkZWxldGVkICcgJworCXdpa2lfcmVzZXQgJiYKKwl3aWtpX2VkaXRwYWdlIGZvbyAidGhpcyBwYWdlIHdpbGwgbm90IGJlIGRlbGV0ZWQiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBiYXIgIkkgbXVzdCBub3QgYmUgZXJhc2VkIiBmYWxzZSAmJgorCXdpa2lfZWRpdHBhZ2UgbmFtbmFtICJJIHdpbGwgbm90IGJlIHRoZXJlIGF0IHRoZSBlbmQiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBueWFuY2F0ICJueWFuIG55YW4gbnlhbiBkZWxldGUgbWUiIGZhbHNlICYmCisJd2lraV9kZWxldGVfcGFnZSBuYW1uYW0gJiYKKwl3aWtpX2RlbGV0ZV9wYWdlIG55YW5jYXQgJiYKKwlnaXQgY2xvbmUgbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl83ICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgbXdfZGlyXzcvRm9vLm13ICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgbXdfZGlyXzcvQmFyLm13ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgbXdfZGlyXzcvTmFtbmFtLm13ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgbXdfZGlyXzcvTnlhbmNhdC5tdyAmJgorCXdpa2lfZ2V0YWxscGFnZSBtd19kaXJfNy9wYWdlX3JlZl83ICYmCisJdGVzdF9kaWZmX2RpcmVjdG9yaWVzIG13X2Rpcl83IG13X2Rpcl83L3BhZ2VfcmVmXzcKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdHaXQgY2xvbmUgd29ya3Mgd2l0aCBvbmUgc3BlY2lmaWMgcGFnZSBjbG9uZWQgJyAnCisJd2lraV9yZXNldCAmJgorCXdpa2lfZWRpdHBhZ2UgZm9vICJJIHdpbGwgbm90IGJlIGNsb25lZCIgZmFsc2UgJiYKKwl3aWtpX2VkaXRwYWdlIGJhciAiRG8gbm90IGNsb25lIG1lIiBmYWxzZSAmJgorCXdpa2lfZWRpdHBhZ2UgbmFtbmFtICJJIHdpbGwgYmUgY2xvbmVkIDopIiBmYWxzZSAgLXM9InRoaXMgbG9nIG11c3Qgc3RheSIgJiYKKwl3aWtpX2VkaXRwYWdlIG55YW5jYXQgIm55YW4gbnlhbiBueWFuIHlvdSBjYW50IGNsb25lIG1lIiBmYWxzZSAmJgorCWdpdCBjbG9uZSAtYyByZW1vdGUub3JpZ2luLnBhZ2VzPW5hbW5hbSBcCisJCW1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfOCAmJgorCXRlc3RfY29udGFpbnNfTl9maWxlcyBtd19kaXJfOCAxICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgbXdfZGlyXzgvTmFtbmFtLm13ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgbXdfZGlyXzgvTWFpbl9QYWdlLm13ICYmCisJKAorCQljZCBtd19kaXJfOCAmJgorCQllY2hvICJ0aGlzIGxvZyBtdXN0IHN0YXkiID5tc2cudG1wICYmCisJCWdpdCBsb2cgLS1mb3JtYXQ9JXMgPmxvZy50bXAgJiYKKwkJZGlmZiAtYiBtc2cudG1wIGxvZy50bXAKKwkpICYmCisJd2lraV9jaGVja19jb250ZW50IG13X2Rpcl84L05hbW5hbS5tdyBOYW1uYW0KKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnR2l0IGNsb25lIHdvcmtzIHdpdGggbXVsdGlwbGUgc3BlY2lmaWMgcGFnZSBjbG9uZWQgJyAnCisJd2lraV9yZXNldCAmJgorCXdpa2lfZWRpdHBhZ2UgZm9vICJJIHdpbGwgYmUgdGhlcmUiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBiYXIgIkkgd2lsbCBub3QgZGlzYXBlYXIiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBuYW1uYW0gIkkgYmUgZXJhc2VkIiBmYWxzZSAmJgorCXdpa2lfZWRpdHBhZ2UgbnlhbmNhdCAibnlhbiBueWFuIG55YW4geW91IHdpbGwgbm90IGVyYXNlIG1lIiBmYWxzZSAmJgorCXdpa2lfZGVsZXRlX3BhZ2UgbmFtbmFtICYmCisJZ2l0IGNsb25lIC1jIHJlbW90ZS5vcmlnaW4ucGFnZXM9ImZvbyBiYXIgbnlhbmNhdCBuYW1uYW0iIFwKKwkJbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl85ICYmCisJdGVzdF9jb250YWluc19OX2ZpbGVzIG13X2Rpcl85IDMgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyBtd19kaXJfOS9OYW1uYW0ubXcgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBtd19kaXJfOS9Gb28ubXcgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBtd19kaXJfOS9OeWFuY2F0Lm13ICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgbXdfZGlyXzkvQmFyLm13ICYmCisJd2lraV9jaGVja19jb250ZW50IG13X2Rpcl85L0Zvby5tdyBGb28gJiYKKwl3aWtpX2NoZWNrX2NvbnRlbnQgbXdfZGlyXzkvQmFyLm13IEJhciAmJgorCXdpa2lfY2hlY2tfY29udGVudCBtd19kaXJfOS9OeWFuY2F0Lm13IE55YW5jYXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnTWVkaWF3aWtpLWNsb25lIG9mIHNldmVyYWwgc3BlY2lmaWMgcGFnZXMgb24gd2lraScgJworCXdpa2lfcmVzZXQgJiYKKwl3aWtpX2VkaXRwYWdlIGZvbyAiZm9vIDEiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBiYXIgImJhciAxIiBmYWxzZSAmJgorCXdpa2lfZWRpdHBhZ2UgZHVtbXkgImR1bW15IDEiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBjbG9uZWRfMSAiY2xvbmVkXzEgMSIgZmFsc2UgJiYKKwl3aWtpX2VkaXRwYWdlIGNsb25lZF8yICJjbG9uZWRfMiAyIiBmYWxzZSAmJgorCXdpa2lfZWRpdHBhZ2UgY2xvbmVkXzMgImNsb25lZF8zIDMiIGZhbHNlICYmCisJbWtkaXIgLXAgcmVmX3BhZ2VfMTAgJiYKKwl3aWtpX2dldHBhZ2UgY2xvbmVkXzEgcmVmX3BhZ2VfMTAgJiYKKwl3aWtpX2dldHBhZ2UgY2xvbmVkXzIgcmVmX3BhZ2VfMTAgJiYKKwl3aWtpX2dldHBhZ2UgY2xvbmVkXzMgcmVmX3BhZ2VfMTAgJiYKKwlnaXQgY2xvbmUgLWMgcmVtb3RlLm9yaWdpbi5wYWdlcz0iY2xvbmVkXzEgY2xvbmVkXzIgY2xvbmVkXzMiIFwKKwkJbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl8xMCAmJgorCXRlc3RfZGlmZl9kaXJlY3RvcmllcyBtd19kaXJfMTAgcmVmX3BhZ2VfMTAKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnR2l0IGNsb25lIHdvcmtzIHdpdGggdGhlIHNoYWxsb3cgb3B0aW9uJyAnCisJd2lraV9yZXNldCAmJgorCXdpa2lfZWRpdHBhZ2UgZm9vICIxc3QgcmV2aXNpb24sIHNob3VsZCBiZSBjbG9uZWQiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBiYXIgIjFzdCByZXZpc2lvbiwgc2hvdWxkIGJlIGNsb25lZCIgZmFsc2UgJiYKKwl3aWtpX2VkaXRwYWdlIG55YW4gIjFzdCByZXZpc2lvbiwgc2hvdWxkIG5vdCBiZSBjbG9uZWQiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBueWFuICIybmQgcmV2aXNpb24sIHNob3VsZCBiZSBjbG9uZWQiIGZhbHNlICYmCisJZ2l0IC1jIHJlbW90ZS5vcmlnaW4uc2hhbGxvdz10cnVlIGNsb25lIFwKKwkJbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl8xMSAmJgorCXRlc3RfY29udGFpbnNfTl9maWxlcyBtd19kaXJfMTEgNCAmJgorCXRlc3RfcGF0aF9pc19maWxlIG13X2Rpcl8xMS9OeWFuLm13ICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgbXdfZGlyXzExL0Zvby5tdyAmJgorCXRlc3RfcGF0aF9pc19maWxlIG13X2Rpcl8xMS9CYXIubXcgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBtd19kaXJfMTEvTWFpbl9QYWdlLm13ICYmCisJKAorCQljZCBtd19kaXJfMTEgJiYKKwkJdGVzdCBgZ2l0IGxvZyAtLW9uZWxpbmUgTnlhbi5tdyB8IHdjIC1sYCAtZXEgMSAmJgorCQl0ZXN0IGBnaXQgbG9nIC0tb25lbGluZSBGb28ubXcgfCB3YyAtbGAgLWVxIDEgJiYKKwkJdGVzdCBgZ2l0IGxvZyAtLW9uZWxpbmUgQmFyLm13IHwgd2MgLWxgIC1lcSAxICYmCisJCXRlc3QgYGdpdCBsb2cgLS1vbmVsaW5lIE1haW5fUGFnZS5tdyB8IHdjIC1sIGAgLWVxIDEKKwkpICYmCisJd2lraV9jaGVja19jb250ZW50IG13X2Rpcl8xMS9OeWFuLm13IE55YW4gJiYKKwl3aWtpX2NoZWNrX2NvbnRlbnQgbXdfZGlyXzExL0Zvby5tdyBGb28gJiYKKwl3aWtpX2NoZWNrX2NvbnRlbnQgbXdfZGlyXzExL0Jhci5tdyBCYXIgJiYKKwl3aWtpX2NoZWNrX2NvbnRlbnQgbXdfZGlyXzExL01haW5fUGFnZS5tdyBNYWluX1BhZ2UKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnR2l0IGNsb25lIHdvcmtzIHdpdGggdGhlIHNoYWxsb3cgb3B0aW9uIHdpdGggYSBkZWxldGUgcGFnZScgJworCXdpa2lfcmVzZXQgJiYKKwl3aWtpX2VkaXRwYWdlIGZvbyAiMXN0IHJldmlzaW9uLCB3aWxsIGJlIGRlbGV0ZWQiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBiYXIgIjFzdCByZXZpc2lvbiwgc2hvdWxkIGJlIGNsb25lZCIgZmFsc2UgJiYKKwl3aWtpX2VkaXRwYWdlIG55YW4gIjFzdCByZXZpc2lvbiwgc2hvdWxkIG5vdCBiZSBjbG9uZWQiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBueWFuICIybmQgcmV2aXNpb24sIHNob3VsZCBiZSBjbG9uZWQiIGZhbHNlICYmCisJd2lraV9kZWxldGVfcGFnZSBmb28gJiYKKwlnaXQgLWMgcmVtb3RlLm9yaWdpbi5zaGFsbG93PXRydWUgY2xvbmUgXAorCQltZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyXzEyICYmCisJdGVzdF9jb250YWluc19OX2ZpbGVzIG13X2Rpcl8xMiAzICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgbXdfZGlyXzEyL055YW4ubXcgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyBtd19kaXJfMTIvRm9vLm13ICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgbXdfZGlyXzEyL0Jhci5tdyAmJgorCXRlc3RfcGF0aF9pc19maWxlIG13X2Rpcl8xMi9NYWluX1BhZ2UubXcgJiYKKwkoCisJCWNkIG13X2Rpcl8xMiAmJgorCQl0ZXN0IGBnaXQgbG9nIC0tb25lbGluZSBOeWFuLm13IHwgd2MgLWxgIC1lcSAxICYmCisJCXRlc3QgYGdpdCBsb2cgLS1vbmVsaW5lIEJhci5tdyB8IHdjIC1sYCAtZXEgMSAmJgorCQl0ZXN0IGBnaXQgbG9nIC0tb25lbGluZSBNYWluX1BhZ2UubXcgfCB3YyAtbCBgIC1lcSAxCisJKSAmJgorCXdpa2lfY2hlY2tfY29udGVudCBtd19kaXJfMTIvTnlhbi5tdyBOeWFuICYmCisJd2lraV9jaGVja19jb250ZW50IG13X2Rpcl8xMi9CYXIubXcgQmFyICYmCisJd2lraV9jaGVja19jb250ZW50IG13X2Rpcl8xMi9NYWluX1BhZ2UubXcgTWFpbl9QYWdlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1Rlc3Qgb2YgZmV0Y2hpbmcgYSBjYXRlZ29yeScgJworCXdpa2lfcmVzZXQgJiYKKwl3aWtpX2VkaXRwYWdlIEZvbyAiSSB3aWxsIGJlIGNsb25lZCIgZmFsc2UgLWM9Q2F0ZWdvcnkgJiYKKwl3aWtpX2VkaXRwYWdlIEJhciAiTWVldCBtZSBvbiB0aGUgcmVwb3NpdG9yeSIgZmFsc2UgLWM9Q2F0ZWdvcnkgJiYKKwl3aWtpX2VkaXRwYWdlIER1bW15ICJJIHdpbGwgbm90IGNvbWUiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBCYXJXcm9uZyAiSSB3aWxsIHN0YXkgb25saW5lIG9ubHkiIGZhbHNlIC1jPU5vdENhdGVnb3J5ICYmCisJZ2l0IGNsb25lIC1jIHJlbW90ZS5vcmlnaW4uY2F0ZWdvcmllcz0iQ2F0ZWdvcnkiIFwKKwkJbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl8xMyAmJgorCXdpa2lfZ2V0YWxscGFnZSByZWZfcGFnZV8xMyBDYXRlZ29yeSAmJgorCXRlc3RfZGlmZl9kaXJlY3RvcmllcyBtd19kaXJfMTMgcmVmX3BhZ2VfMTMKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnVGVzdCBvZiByZXNpc3RhbmNlIHRvIG1vZGlmaWNhdGlvbiBvZiBjYXRlZ29yeSBvbiB3aWtpIGZvciBjbG9uZScgJworCXdpa2lfcmVzZXQgJiYKKwl3aWtpX2VkaXRwYWdlIFRvYmVkZWxldGVkICJ0aGlzIHBhZ2Ugd2lsbCBiZSBkZWxldGVkIiBmYWxzZSAtYz1DYXRvbmUgJiYKKwl3aWtpX2VkaXRwYWdlIFRvYmVlZGl0ZWQgInRoaXMgcGFnZSB3aWxsIGJlIG1vZGlmaWVkIiBmYWxzZSAtYz1DYXRvbmUgJiYKKwl3aWtpX2VkaXRwYWdlIE5vcm1hbG9uZSAidGhpcyBwYWdlIHdvbnQgYmUgbW9kaWZpZWQgYW5kIHdpbGwgYmUgb24gZ2l0IiBmYWxzZSAtYz1DYXRvbmUgJiYKKwl3aWtpX2VkaXRwYWdlIE5vdGNvbnNpZGVyZWQgInRoaXMgcGFnZSB3aWxsIG5vdCBhcHBlYXIgb24gbG9jYWwiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBPdGhlcmNhdGVnb3J5ICJ0aGlzIHBhZ2Ugd2lsbCBub3QgYXBwZWFyIG9uIGxvY2FsIiBmYWxzZSAtYz1DYXR0d28gJiYKKwl3aWtpX2VkaXRwYWdlIFRvYmVlZGl0ZWQgInRoaXMgcGFnZSBoYXZlIGJlZW4gbW9kaWZpZWQiIHRydWUgLWM9Q2F0b25lICYmCisJd2lraV9kZWxldGVfcGFnZSBUb2JlZGVsZXRlZAorCWdpdCBjbG9uZSAtYyByZW1vdGUub3JpZ2luLmNhdGVnb3JpZXM9IkNhdG9uZSIgXAorCQltZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyXzE0ICYmCisJd2lraV9nZXRhbGxwYWdlIHJlZl9wYWdlXzE0IENhdG9uZSAmJgorCXRlc3RfZGlmZl9kaXJlY3RvcmllcyBtd19kaXJfMTQgcmVmX3BhZ2VfMTQKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC90L3Q5MzYxLW13LXRvLWdpdC1wdXNoLXB1bGwuc2ggYi9jb250cmliL213LXRvLWdpdC90L3Q5MzYxLW13LXRvLWdpdC1wdXNoLXB1bGwuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWVhMjAxNAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvdDkzNjEtbXctdG8tZ2l0LXB1c2gtcHVsbC5zaApAQCAtMCwwICsxLDI0IEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEyCisjICAgICBDaGFybGVzIFJvdXNzZWwgPGNoYXJsZXMucm91c3NlbEBlbnNpbWFnLmltYWcuZnI+CisjICAgICBTaW1vbiBDYXRoZWJyYXMgPHNpbW9uLmNhdGhlYnJhc0BlbnNpbWFnLmltYWcuZnI+CisjICAgICBKdWxpZW4gS2hheWF0IDxqdWxpZW4ua2hheWF0QGVuc2ltYWcuaW1hZy5mcj4KKyMgICAgIEd1aWxsYXVtZSBTYXNkeSA8Z3VpbGxhdW1lLnNhc2R5QGVuc2ltYWcuaW1hZy5mcj4KKyMgICAgIFNpbW9uIFBlcnJhdCA8c2ltb24ucGVycmF0QGVuc2ltYWcuaW1hZy5mcj4KKyMKKyMgTGljZW5zZTogR1BMIHYyIG9yIGxhdGVyCisKKyMgdGVzdHMgZm9yIGdpdC1yZW1vdGUtbWVkaWF3aWtpCisKK3Rlc3RfZGVzY3JpcHRpb249J1Rlc3QgdGhlIEdpdCBNZWRpYXdpa2kgcmVtb3RlIGhlbHBlcjogZ2l0IHB1c2ggYW5kIGdpdCBwdWxsIHNpbXBsZSB0ZXN0IGNhc2VzJworCisuIC4vdGVzdC1naXRtdy1saWIuc2gKKy4gLi9wdXNoLXB1bGwtdGVzdHMuc2gKKy4gJFRFU1RfRElSRUNUT1JZL3Rlc3QtbGliLnNoCisKK3Rlc3RfY2hlY2tfcHJlY29uZAorCit0ZXN0X3B1c2hfcHVsbAorCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvbXctdG8tZ2l0L3QvdDkzNjItbXctdG8tZ2l0LXV0Zjguc2ggYi9jb250cmliL213LXRvLWdpdC90L3Q5MzYyLW13LXRvLWdpdC11dGY4LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjM3MDIxZTIKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL213LXRvLWdpdC90L3Q5MzYyLW13LXRvLWdpdC11dGY4LnNoCkBAIC0wLDAgKzEsMzQ3IEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEyCisjICAgICBDaGFybGVzIFJvdXNzZWwgPGNoYXJsZXMucm91c3NlbEBlbnNpbWFnLmltYWcuZnI+CisjICAgICBTaW1vbiBDYXRoZWJyYXMgPHNpbW9uLmNhdGhlYnJhc0BlbnNpbWFnLmltYWcuZnI+CisjICAgICBKdWxpZW4gS2hheWF0IDxqdWxpZW4ua2hheWF0QGVuc2ltYWcuaW1hZy5mcj4KKyMgICAgIEd1aWxsYXVtZSBTYXNkeSA8Z3VpbGxhdW1lLnNhc2R5QGVuc2ltYWcuaW1hZy5mcj4KKyMgICAgIFNpbW9uIFBlcnJhdCA8c2ltb24ucGVycmF0QGVuc2ltYWcuaW1hZy5mcj4KKyMKKyMgTGljZW5zZTogR1BMIHYyIG9yIGxhdGVyCisKKyMgdGVzdHMgZm9yIGdpdC1yZW1vdGUtbWVkaWF3aWtpCisKK3Rlc3RfZGVzY3JpcHRpb249J1Rlc3QgZ2l0LW1lZGlhd2lraSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBmaWxlbmFtZXMnCisKKy4gLi90ZXN0LWdpdG13LWxpYi5zaAorLiAkVEVTVF9ESVJFQ1RPUlkvdGVzdC1saWIuc2gKKworCit0ZXN0X2NoZWNrX3ByZWNvbmQKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdHaXQgY2xvbmUgd29ya3MgZm9yIGEgd2lraSB3aXRoIGFjY2VudHMgaW4gdGhlIHBhZ2UgbmFtZXMnICcKKwl3aWtpX3Jlc2V0ICYmCisJd2lraV9lZGl0cGFnZSBmw6nDqSAiVGhpcyBwYWdlIG11c3QgYmUgZMOpbMOpdMOpZCBiZWZvcmUgY2xvbmUiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBrw6jDqCAiVGhpcyBwYWdlIG11c3QgYmUgZGVsZXRlZCBiZWZvcmUgY2xvbmUiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBow6DDoCAiVGhpcyBwYWdlIG11c3QgYmUgZGVsZXRlZCBiZWZvcmUgY2xvbmUiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBrw67DriAiVGhpcyBwYWdlIG11c3QgYmUgZGVsZXRlZCBiZWZvcmUgY2xvbmUiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBmb28gIlRoaXMgcGFnZSBtdXN0IGJlIGRlbGV0ZWQgYmVmb3JlIGNsb25lIiBmYWxzZSAmJgorCWdpdCBjbG9uZSBtZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyXzEgJiYKKwl3aWtpX2dldGFsbHBhZ2UgcmVmX3BhZ2VfMSAmJgorCXRlc3RfZGlmZl9kaXJlY3RvcmllcyBtd19kaXJfMSByZWZfcGFnZV8xCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnR2l0IHB1bGwgd29ya3Mgd2l0aCBhIHdpa2kgd2l0aCBhY2NlbnRzIGluIHRoZSBwYWdlcyBuYW1lcycgJworCXdpa2lfcmVzZXQgJiYKKwl3aWtpX2VkaXRwYWdlIGvDrsOuICJ0aGlzIHBhZ2UgbXVzdCBiZSBjbG9uZWQiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBmb28gInRoaXMgcGFnZSBtdXN0IGJlIGNsb25lZCIgZmFsc2UgJiYKKwlnaXQgY2xvbmUgbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl8yICYmCisJd2lraV9lZGl0cGFnZSDDqcOgw67DtMO7ICJUaGlzIHBhZ2UgbXVzdCBiZSBwdWxsZWQiIGZhbHNlICYmCisJKAorCQljZCBtd19kaXJfMiAmJgorCQlnaXQgcHVsbAorCSkgJiYKKwl3aWtpX2dldGFsbHBhZ2UgcmVmX3BhZ2VfMiAmJgorCXRlc3RfZGlmZl9kaXJlY3RvcmllcyBtd19kaXJfMiByZWZfcGFnZV8yCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnQ2xvbmluZyBhIGNob3NlbiBwYWdlIHdvcmtzIHdpdGggYWNjZW50cycgJworCXdpa2lfcmVzZXQgJiYKKwl3aWtpX2VkaXRwYWdlIGvDrsOuICJ0aGlzIHBhZ2UgbXVzdCBiZSBjbG9uZWQiIGZhbHNlICYmCisJZ2l0IGNsb25lIC1jIHJlbW90ZS5vcmlnaW4ucGFnZXM9a8Ouw64gXAorCQltZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyXzMgJiYKKwl3aWtpX2NoZWNrX2NvbnRlbnQgbXdfZGlyXzMvS8Ouw64ubXcgS8Ouw64gJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBtd19kaXJfMy9Lw67Dri5tdyAmJgorCXJtIC1yZiBtd19kaXJfMworJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1RoZSBzaGFsbG93IG9wdGlvbiB3b3JrcyB3aXRoIGFjY2VudHMnICcKKwl3aWtpX3Jlc2V0ICYmCisJd2lraV9lZGl0cGFnZSBuw6lvw6AgIjFzdCByZXZpc2lvbiwgc2hvdWxkIG5vdCBiZSBjbG9uZWQiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBuw6lvw6AgIjJuZCByZXZpc2lvbiwgc2hvdWxkIGJlIGNsb25lZCIgZmFsc2UgJiYKKwlnaXQgLWMgcmVtb3RlLm9yaWdpbi5zaGFsbG93PXRydWUgY2xvbmUgXAorCQltZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyXzQgJiYKKwl0ZXN0X2NvbnRhaW5zX05fZmlsZXMgbXdfZGlyXzQgMiAmJgorCXRlc3RfcGF0aF9pc19maWxlIG13X2Rpcl80L07DqW/DoC5tdyAmJgorCXRlc3RfcGF0aF9pc19maWxlIG13X2Rpcl80L01haW5fUGFnZS5tdyAmJgorCSgKKwkJY2QgbXdfZGlyXzQgJiYKKwkJdGVzdCBgZ2l0IGxvZyAtLW9uZWxpbmUgTsOpb8OgLm13IHwgd2MgLWxgIC1lcSAxICYmCisJCXRlc3QgYGdpdCBsb2cgLS1vbmVsaW5lIE1haW5fUGFnZS5tdyB8IHdjIC1sIGAgLWVxIDEKKwkpICYmCisJd2lraV9jaGVja19jb250ZW50IG13X2Rpcl80L07DqW/DoC5tdyBOw6lvw6AgJiYKKwl3aWtpX2NoZWNrX2NvbnRlbnQgbXdfZGlyXzQvTWFpbl9QYWdlLm13IE1haW5fUGFnZQorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0Nsb25pbmcgd29ya3Mgd2hlbiBwYWdlIG5hbWUgZmlyc3QgbGV0dGVyIGhhcyBhbiBhY2NlbnQnICcKKwl3aWtpX3Jlc2V0ICYmCisJd2lraV9lZGl0cGFnZSDDrsOuICJ0aGlzIHBhZ2UgbXVzdCBiZSBjbG9uZWQiIGZhbHNlICYmCisJZ2l0IGNsb25lIC1jIHJlbW90ZS5vcmlnaW4ucGFnZXM9w67DriBcCisJCW1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfNSAmJgorCXRlc3RfcGF0aF9pc19maWxlIG13X2Rpcl81L8OOw64ubXcgJiYKKwl3aWtpX2NoZWNrX2NvbnRlbnQgbXdfZGlyXzUvw47Dri5tdyDDjsOuCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnR2l0IHB1c2ggd29ya3Mgd2l0aCBhIHdpa2kgd2l0aCBhY2NlbnRzJyAnCisJd2lraV9yZXNldCAmJgorCXdpa2lfZWRpdHBhZ2UgZsOpw6kgImxvdHMgb2YgYWNjZW50cyA6IMOpw6jDoMOWIiBmYWxzZSAmJgorCXdpa2lfZWRpdHBhZ2UgZm9vICJ0aGlzIHBhZ2UgbXVzdCBiZSBjbG9uZWQiIGZhbHNlICYmCisJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfNiAmJgorCSgKKwkJY2QgbXdfZGlyXzYgJiYKKwkJZWNobyAiQSB3aWxkIFDDrmvDpGNow7sgYXBwZWFycyBvbiB0aGUgd2lraSIgPlDDrmvDpGNow7subXcgJiYKKwkJZ2l0IGFkZCBQw65rw6RjaMO7Lm13ICYmCisJCWdpdCBjb21taXQgLW0gIkEgbmV3IHBhZ2UgYXBwZWFycyIgJiYKKwkJZ2l0IHB1c2gKKwkpICYmCisJd2lraV9nZXRhbGxwYWdlIHJlZl9wYWdlXzYgJiYKKwl0ZXN0X2RpZmZfZGlyZWN0b3JpZXMgbXdfZGlyXzYgcmVmX3BhZ2VfNgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdHaXQgY2xvbmUgd29ya3Mgd2l0aCBhY2NlbnRzYW5kIHNwYWNlcycgJworCXdpa2lfcmVzZXQgJiYKKwl3aWtpX2VkaXRwYWdlICLDqSDDoCDDriIgInRoaXMgcGFnZSBtdXN0IGJlIGTDqWzDqXTDqSBiZWZvcmUgdGhlIGNsb25lIiBmYWxzZSAmJgorCWdpdCBjbG9uZSBtZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyXzcgJiYKKwl3aWtpX2dldGFsbHBhZ2UgcmVmX3BhZ2VfNyAmJgorCXRlc3RfZGlmZl9kaXJlY3RvcmllcyBtd19kaXJfNyByZWZfcGFnZV83CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoYXJhY3RlciAkIGluIHBhZ2UgbmFtZSAobXcgLT4gZ2l0KScgJworCXdpa2lfcmVzZXQgJiYKKwl3aWtpX2VkaXRwYWdlIGZpbGVfXCRfZm9vICJleHBlY3QgdG8gYmUgY2FsbGVkIGZpbGVfJF9mb28iIGZhbHNlICYmCisJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfOCAmJgorCXRlc3RfcGF0aF9pc19maWxlIG13X2Rpcl84L0ZpbGVfXCRfZm9vLm13ICYmCisJd2lraV9nZXRhbGxwYWdlIHJlZl9wYWdlXzggJiYKKwl0ZXN0X2RpZmZfZGlyZWN0b3JpZXMgbXdfZGlyXzggcmVmX3BhZ2VfOAorJworCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hhcmFjdGVyICQgaW4gZmlsZSBuYW1lIChnaXQgLT4gbXcpICcgJworCXdpa2lfcmVzZXQgJiYKKwlnaXQgY2xvbmUgbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl85ICYmCisJKAorCQljZCBtd19kaXJfOSAmJgorCQllY2hvICJ0aGlzIGZpbGUgaXMgY2FsbGVkIEZpbGVfXCRfZm9vLm13IiA+RmlsZV9cJF9mb28ubXcgJiYKKwkJZ2l0IGFkZCAuICYmCisJCWdpdCBjb21taXQgLWFtICJmaWxlIEZpbGVfXCRfZm9vLm13IiAmJgorCQlnaXQgcHVsbCAmJgorCQlnaXQgcHVzaAorCSkgJiYKKwl3aWtpX2dldGFsbHBhZ2UgcmVmX3BhZ2VfOSAmJgorCXRlc3RfZGlmZl9kaXJlY3RvcmllcyBtd19kaXJfOSByZWZfcGFnZV85CisnCisKKwordGVzdF9leHBlY3RfZmFpbHVyZSAnY2FwaXRhbCBhdCB0aGUgYmVnaW5uaW5nIG9mIGZpbGUgbmFtZXMnICcKKwl3aWtpX3Jlc2V0ICYmCisJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfMTAgJiYKKwkoCisJCWNkIG13X2Rpcl8xMCAmJgorCQllY2hvICJteSBuZXcgZmlsZSBmb28iID5mb28ubXcgJiYKKwkJZWNobyAibXkgbmV3IGZpbGUgRm9vLi4uIEZpbmdlciBjcm9zc2VkIiA+Rm9vLm13ICYmCisJCWdpdCBhZGQgLiAmJgorCQlnaXQgY29tbWl0IC1hbSAiZmlsZSBmb28ubXciICYmCisJCWdpdCBwdWxsICYmCisJCWdpdCBwdXNoCisJKSAmJgorCXdpa2lfZ2V0YWxscGFnZSByZWZfcGFnZV8xMCAmJgorCXRlc3RfZGlmZl9kaXJlY3RvcmllcyBtd19kaXJfMTAgcmVmX3BhZ2VfMTAKKycKKworCit0ZXN0X2V4cGVjdF9mYWlsdXJlICdzcGVjaWFsIGNoYXJhY3RlciBhdCB0aGUgYmVnaW5uaW5nIG9mIGZpbGUgbmFtZSBmcm9tIG13IHRvIGdpdCcgJworCXdpa2lfcmVzZXQgJiYKKwlnaXQgY2xvbmUgbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl8xMSAmJgorCXdpa2lfZWRpdHBhZ2Uge2NoYXJfMSAiZXhwZWN0IHRvIGJlIHJlbmFtZWQge2NoYXJfMSIgZmFsc2UgJiYKKwl3aWtpX2VkaXRwYWdlIFtjaGFyXzIgImV4cGVjdCB0byBiZSByZW5hbWVkIFtjaGFyXzIiIGZhbHNlICYmCisJKAorCQljZCBtd19kaXJfMTEgJiYKKwkJZ2l0IHB1bGwKKwkpICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgbXdfZGlyXzExL3tjaGFyXzEgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBtd19kaXJfMTEvW2NoYXJfMgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdQdWxsIHBhZ2Ugd2l0aCB0aXRsZSBjb250YWluaW5nICI6IiBvdGhlciB0aGFuIG5hbWVzcGFjZSBzZXBhcmF0b3InICcKKwl3aWtpX2VkaXRwYWdlIEZvbzpCYXIgY29udGVudCBmYWxzZSAmJgorCSgKKwkJY2QgbXdfZGlyXzExICYmCisJCWdpdCBwdWxsCisJKSAmJgorCXRlc3RfcGF0aF9pc19maWxlIG13X2Rpcl8xMS9Gb286QmFyLm13CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1B1c2ggcGFnZSB3aXRoIHRpdGxlIGNvbnRhaW5pbmcgIjoiIG90aGVyIHRoYW4gbmFtZXNwYWNlIHNlcGFyYXRvcicgJworCSgKKwkJY2QgbXdfZGlyXzExICYmCisJCWVjaG8gY29udGVudCA+Tm90QU5hbWVTcGFjZTpQYWdlLm13ICYmCisJCWdpdCBhZGQgTm90QU5hbWVTcGFjZTpQYWdlLm13ICYmCisJCWdpdCBjb21taXQgLW0gImFkZCBwYWdlIHdpdGggY29sb24iICYmCisJCWdpdCBwdXNoCisJKSAmJgorCXdpa2lfcGFnZV9leGlzdCBOb3RBTmFtZVNwYWNlOlBhZ2UKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCBvZiBjb3JyZWN0IGZvcm1hdHRpbmcgZm9yIGZpbGUgbmFtZSBmcm9tIG13IHRvIGdpdCcgJworCXdpa2lfcmVzZXQgJiYKKwlnaXQgY2xvbmUgbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl8xMiAmJgorCXdpa2lfZWRpdHBhZ2UgY2hhcl8lXzdiXzEgImV4cGVjdCB0byBiZSByZW5hbWVkIGNoYXJ7XzEiIGZhbHNlICYmCisJd2lraV9lZGl0cGFnZSBjaGFyXyVfNWJfMiAiZXhwZWN0IHRvIGJlIHJlbmFtZWQgY2hhcntfMiIgZmFsc2UgJiYKKwkoCisJCWNkIG13X2Rpcl8xMiAmJgorCQlnaXQgcHVsbAorCSkgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBtd19kaXJfMTIvQ2hhclx7XzEubXcgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBtd19kaXJfMTIvQ2hhclxbXzIubXcgJiYKKwl3aWtpX2dldGFsbHBhZ2UgcmVmX3BhZ2VfMTIgJiYKKwltdiByZWZfcGFnZV8xMi9DaGFyXyVfN2JfMS5tdyByZWZfcGFnZV8xMi9DaGFyXHtfMS5tdyAmJgorCW12IHJlZl9wYWdlXzEyL0NoYXJfJV81Yl8yLm13IHJlZl9wYWdlXzEyL0NoYXJcW18yLm13ICYmCisJdGVzdF9kaWZmX2RpcmVjdG9yaWVzIG13X2Rpcl8xMiByZWZfcGFnZV8xMgorJworCisKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ3Rlc3Qgb2YgY29ycmVjdCBmb3JtYXR0aW5nIGZvciBmaWxlIG5hbWUgYmVnaW5uaW5nIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXInICcKKwl3aWtpX3Jlc2V0ICYmCisJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfMTMgJiYKKwkoCisJCWNkIG13X2Rpcl8xMyAmJgorCQllY2hvICJteSBuZXcgZmlsZSB7Y2hhcl8xIiA+XHtjaGFyXzEubXcgJiYKKwkJZWNobyAibXkgbmV3IGZpbGUgW2NoYXJfMiIgPlxbY2hhcl8yLm13ICYmCisJCWdpdCBhZGQgLiAmJgorCQlnaXQgY29tbWl0IC1hbSAiY29tbWl0dGluZyBzb21lIGV4b3RpYyBmaWxlIG5hbWUuLi4iICYmCisJCWdpdCBwdXNoICYmCisJCWdpdCBwdWxsCisJKSAmJgorCXdpa2lfZ2V0YWxscGFnZSByZWZfcGFnZV8xMyAmJgorCXRlc3RfcGF0aF9pc19maWxlIHJlZl9wYWdlXzEzL3tjaGFyXzEubXcgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSByZWZfcGFnZV8xMy9bY2hhcl8yLm13ICYmCisJdGVzdF9kaWZmX2RpcmVjdG9yaWVzIG13X2Rpcl8xMyByZWZfcGFnZV8xMworJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3Qgb2YgY29ycmVjdCBmb3JtYXR0aW5nIGZvciBmaWxlIG5hbWUgZnJvbSBnaXQgdG8gbXcnICcKKwl3aWtpX3Jlc2V0ICYmCisJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfMTQgJiYKKwkoCisJCWNkIG13X2Rpcl8xNCAmJgorCQllY2hvICJteSBuZXcgZmlsZSBjaGFye18xIiA+Q2hhclx7XzEubXcgJiYKKwkJZWNobyAibXkgbmV3IGZpbGUgY2hhcltfMiIgPkNoYXJcW18yLm13ICYmCisJCWdpdCBhZGQgLiAmJgorCQlnaXQgY29tbWl0IC1tICJjb21taXR0aW5nIHNvbWUgZXhvdGljIGZpbGUgbmFtZS4uLiIgJiYKKwkJZ2l0IHB1c2gKKwkpICYmCisJd2lraV9nZXRhbGxwYWdlIHJlZl9wYWdlXzE0ICYmCisJbXYgbXdfZGlyXzE0L0NoYXJce18xLm13IG13X2Rpcl8xNC9DaGFyXyVfN2JfMS5tdyAmJgorCW12IG13X2Rpcl8xNC9DaGFyXFtfMi5tdyBtd19kaXJfMTQvQ2hhcl8lXzViXzIubXcgJiYKKwl0ZXN0X2RpZmZfZGlyZWN0b3JpZXMgbXdfZGlyXzE0IHJlZl9wYWdlXzE0CisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGNsb25lIHdpdGggLycgJworCXdpa2lfcmVzZXQgJiYKKwl3aWtpX2VkaXRwYWdlIFwvZm9cL28gInRoaXMgaXMgbm90IGltcG9ydGFudCIgZmFsc2UgLWM9RGVsZXRlZCAmJgorCWdpdCBjbG9uZSBtZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyXzE1ICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgbXdfZGlyXzE1LyUyRmZvJTJGby5tdyAmJgorCXdpa2lfY2hlY2tfY29udGVudCBtd19kaXJfMTUvJTJGZm8lMkZvLm13IFwvZm9cL28KKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgcHVzaCB3aXRoIC8nICcKKwl3aWtpX3Jlc2V0ICYmCisJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfMTYgJiYKKwllY2hvICJJIHdpbGwgYmUgb24gdGhlIHdpa2kiID5td19kaXJfMTYvJTJGZm8lMkZvLm13ICYmCisJKAorCQljZCBtd19kaXJfMTYgJiYKKwkJZ2l0IGFkZCAlMkZmbyUyRm8ubXcgJiYKKwkJZ2l0IGNvbW1pdCAtbSAiICUyRmZvJTJGbyBhZGRlZCIgJiYKKwkJZ2l0IHB1c2gKKwkpICYmCisJd2lraV9wYWdlX2V4aXN0IFwvZm9cL28gJiYKKwl3aWtpX2NoZWNrX2NvbnRlbnQgbXdfZGlyXzE2LyUyRmZvJTJGby5tdyBcL2ZvXC9vCisKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgY2xvbmUgd2l0aCBcJyAnCisJd2lraV9yZXNldCAmJgorCXdpa2lfZWRpdHBhZ2UgXFxrb1xcbyAidGhpcyBpcyBub3QgaW1wb3J0YW50IiBmYWxzZSAtYz1EZWxldGVkICYmCisJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfMTcgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBtd19kaXJfMTcvXFxrb1xcby5tdyAmJgorCXdpa2lfY2hlY2tfY29udGVudCBtd19kaXJfMTcvXFxrb1xcby5tdyBcXGtvXFxvCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1c2ggd2l0aCBcJyAnCisJd2lraV9yZXNldCAmJgorCWdpdCBjbG9uZSBtZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyXzE4ICYmCisJZWNobyAiSSB3aWxsIGJlIG9uIHRoZSB3aWtpIiA+bXdfZGlyXzE4L1xca29cXG8ubXcgJiYKKwkoCisJCWNkIG13X2Rpcl8xOCAmJgorCQlnaXQgYWRkIFxca29cXG8ubXcgJiYKKwkJZ2l0IGNvbW1pdCAtbSAiIFxca29cXG8gYWRkZWQiICYmCisJCWdpdCBwdXNoCisJKSYmCisJd2lraV9wYWdlX2V4aXN0IFxca29cXG8gJiYKKwl3aWtpX2NoZWNrX2NvbnRlbnQgbXdfZGlyXzE4L1xca29cXG8ubXcgXFxrb1xcbworCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBjbG9uZSB3aXRoIFwgaW4gZm9ybWF0IGNvbnRyb2wnICcKKwl3aWtpX3Jlc2V0ICYmCisJd2lraV9lZGl0cGFnZSBcXG5vXFxvICJ0aGlzIGlzIG5vdCBpbXBvcnRhbnQiIGZhbHNlICYmCisJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfMTkgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBtd19kaXJfMTkvXFxub1xcby5tdyAmJgorCXdpa2lfY2hlY2tfY29udGVudCBtd19kaXJfMTkvXFxub1xcby5tdyBcXG5vXFxvCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1c2ggd2l0aCBcIGluIGZvcm1hdCBjb250cm9sJyAnCisJd2lraV9yZXNldCAmJgorCWdpdCBjbG9uZSBtZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyXzIwICYmCisJZWNobyAiSSB3aWxsIGJlIG9uIHRoZSB3aWtpIiA+bXdfZGlyXzIwL1xcZm9cXG8ubXcgJiYKKwkoCisJCWNkIG13X2Rpcl8yMCAmJgorCQlnaXQgYWRkIFxcZm9cXG8ubXcgJiYKKwkJZ2l0IGNvbW1pdCAtbSAiIFxcZm9cXG8gYWRkZWQiICYmCisJCWdpdCBwdXNoCisJKSYmCisJd2lraV9wYWdlX2V4aXN0IFxcZm9cXG8gJiYKKwl3aWtpX2NoZWNrX2NvbnRlbnQgbXdfZGlyXzIwL1xcZm9cXG8ubXcgXFxmb1xcbworCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmFzdC1pbXBvcnQgbWV0YS1jaGFyYWN0ZXJzIGluIHBhZ2UgbmFtZSAobXcgLT4gZ2l0KScgJworCXdpa2lfcmVzZXQgJiYKKwl3aWtpX2VkaXRwYWdlIFwiZmlsZVwiX1xcX2ZvbyAiZXhwZWN0IHRvIGJlIGNhbGxlZCBcImZpbGVcIl9cXF9mb28iIGZhbHNlICYmCisJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfMjEgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBtd19kaXJfMjEvXCJmaWxlXCJfXFxfZm9vLm13ICYmCisJd2lraV9nZXRhbGxwYWdlIHJlZl9wYWdlXzIxICYmCisJdGVzdF9kaWZmX2RpcmVjdG9yaWVzIG13X2Rpcl8yMSByZWZfcGFnZV8yMQorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zhc3QtaW1wb3J0IG1ldGEtY2hhcmFjdGVycyBpbiBwYWdlIG5hbWUgKGdpdCAtPiBtdykgJyAnCisJd2lraV9yZXNldCAmJgorCWdpdCBjbG9uZSBtZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyXzIyICYmCisJKAorCQljZCBtd19kaXJfMjIgJiYKKwkJZWNobyAidGhpcyBmaWxlIGlzIGNhbGxlZCBcImZpbGVcIl9cXF9mb28ubXciID5cImZpbGVcIl9cXF9mb28gJiYKKwkJZ2l0IGFkZCAuICYmCisJCWdpdCBjb21taXQgLWFtICJmaWxlIFwiZmlsZVwiX1xcX2ZvbyIgJiYKKwkJZ2l0IHB1bGwgJiYKKwkJZ2l0IHB1c2gKKwkpICYmCisJd2lraV9nZXRhbGxwYWdlIHJlZl9wYWdlXzIyICYmCisJdGVzdF9kaWZmX2RpcmVjdG9yaWVzIG13X2Rpcl8yMiByZWZfcGFnZV8yMgorJworCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9tdy10by1naXQvdC90OTM2My1tdy10by1naXQtZXhwb3J0LWltcG9ydC5zaCBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvdDkzNjMtbXctdG8tZ2l0LWV4cG9ydC1pbXBvcnQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWEwMzczOQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvdDkzNjMtbXctdG8tZ2l0LWV4cG9ydC1pbXBvcnQuc2gKQEAgLTAsMCArMSwxOTggQEAKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTIKKyMgICAgIENoYXJsZXMgUm91c3NlbCA8Y2hhcmxlcy5yb3Vzc2VsQGVuc2ltYWcuaW1hZy5mcj4KKyMgICAgIFNpbW9uIENhdGhlYnJhcyA8c2ltb24uY2F0aGVicmFzQGVuc2ltYWcuaW1hZy5mcj4KKyMgICAgIEp1bGllbiBLaGF5YXQgPGp1bGllbi5raGF5YXRAZW5zaW1hZy5pbWFnLmZyPgorIyAgICAgR3VpbGxhdW1lIFNhc2R5IDxndWlsbGF1bWUuc2FzZHlAZW5zaW1hZy5pbWFnLmZyPgorIyAgICAgU2ltb24gUGVycmF0IDxzaW1vbi5wZXJyYXRAZW5zaW1hZy5pbWFnLmZyPgorIworIyBMaWNlbnNlOiBHUEwgdjIgb3IgbGF0ZXIKKworIyB0ZXN0cyBmb3IgZ2l0LXJlbW90ZS1tZWRpYXdpa2kKKwordGVzdF9kZXNjcmlwdGlvbj0nVGVzdCB0aGUgR2l0IE1lZGlhd2lraSByZW1vdGUgaGVscGVyOiBnaXQgcHVzaCBhbmQgZ2l0IHB1bGwgc2ltcGxlIHRlc3QgY2FzZXMnCisKKy4gLi90ZXN0LWdpdG13LWxpYi5zaAorLiAkVEVTVF9ESVJFQ1RPUlkvdGVzdC1saWIuc2gKKworCit0ZXN0X2NoZWNrX3ByZWNvbmQKKworCit0ZXN0X2dpdF9yZWltcG9ydCAoKSB7CisJZ2l0IC1jIHJlbW90ZS5vcmlnaW4uZHVtYlB1c2g9dHJ1ZSBwdXNoICYmCisJZ2l0IC1jIHJlbW90ZS5vcmlnaW4ubWVkaWFJbXBvcnQ9dHJ1ZSBwdWxsIC0tcmViYXNlCit9CisKKyMgRG9uJ3QgYm90aGVyIHdpdGggcGVybWlzc2lvbnMsIGJlIGFkbWluaXN0cmF0b3IgYnkgZGVmYXVsdAordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgY29uZmlnJyAnCisJZ2l0IGNvbmZpZyAtLWdsb2JhbCByZW1vdGUub3JpZ2luLm13TG9naW4gV2lraUFkbWluICYmCisJZ2l0IGNvbmZpZyAtLWdsb2JhbCByZW1vdGUub3JpZ2luLm13UGFzc3dvcmQgQWRtaW5QYXNzICYmCisJdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS1nbG9iYWwgLS11bnNldCByZW1vdGUub3JpZ2luLm1lZGlhSW1wb3J0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBwdXNoIGNhbiB1cGxvYWQgbWVkaWEgKEZpbGU6KSBmaWxlcycgJworCXdpa2lfcmVzZXQgJiYKKwlnaXQgY2xvbmUgbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2RpciAmJgorCSgKKwkJY2QgbXdfZGlyICYmCisJCWVjaG8gImhlbGxvIHdvcmxkIiA+Rm9vLnR4dCAmJgorCQlnaXQgYWRkIEZvby50eHQgJiYKKwkJZ2l0IGNvbW1pdCAtbSAiYWRkIGEgdGV4dCBmaWxlIiAmJgorCQlnaXQgcHVzaCAmJgorCQkiJFBFUkxfUEFUSCIgLWUgInByaW50IFNURE9VVCBcImJpbmFyeSBjb250ZW50OiBcIi5jaHIoMjU1KTsiID5Gb28udHh0ICYmCisJCWdpdCBhZGQgRm9vLnR4dCAmJgorCQlnaXQgY29tbWl0IC1tICJhZGQgYSB0ZXh0IGZpbGUgd2l0aCBiaW5hcnkgY29udGVudCIgJiYKKwkJZ2l0IHB1c2gKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBjbG9uZSB3b3JrcyBvbiBwcmV2aW91c2x5IGNyZWF0ZWQgd2lraSB3aXRoIG1lZGlhIGZpbGVzJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgbXdfZGlyIG13X2Rpcl9jbG9uZSIgJiYKKwlnaXQgY2xvbmUgLWMgcmVtb3RlLm9yaWdpbi5tZWRpYWltcG9ydD10cnVlIFwKKwkJbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl9jbG9uZSAmJgorCXRlc3RfY21wIG13X2Rpcl9jbG9uZS9Gb28udHh0IG13X2Rpci9Gb28udHh0ICYmCisJKGNkIG13X2Rpcl9jbG9uZSAmJiBnaXQgY2hlY2tvdXQgSEVBRF4pICYmCisJKGNkIG13X2RpciAmJiBnaXQgY2hlY2tvdXQgSEVBRF4pICYmCisJdGVzdF9jbXAgbXdfZGlyX2Nsb25lL0Zvby50eHQgbXdfZGlyL0Zvby50eHQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1c2ggJiBwdWxsIHdvcmsgd2l0aCBsb2NhbGx5IHJlbmFtZWQgbWVkaWEgZmlsZXMnICcKKwl3aWtpX3Jlc2V0ICYmCisJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1mciBtd19kaXIiICYmCisJKAorCQljZCBtd19kaXIgJiYKKwkJZWNobyAiQSBGaWxlIiA+Rm9vLnR4dCAmJgorCQlnaXQgYWRkIEZvby50eHQgJiYKKwkJZ2l0IGNvbW1pdCAtbSAiYWRkIGEgZmlsZSIgJiYKKwkJZ2l0IG12IEZvby50eHQgQmFyLnR4dCAmJgorCQlnaXQgY29tbWl0IC1tICJSZW5hbWUgYSBmaWxlIiAmJgorCQl0ZXN0X2dpdF9yZWltcG9ydCAmJgorCQllY2hvICJBIEZpbGUiID5leHBlY3QgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IEJhci50eHQgJiYKKwkJdGVzdF9wYXRoX2lzX21pc3NpbmcgRm9vLnR4dAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1c2ggY2FuIHByb3BhZ2F0ZSBsb2NhbCBwYWdlIGRlbGV0aW9uJyAnCisJd2lraV9yZXNldCAmJgorCWdpdCBjbG9uZSBtZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtZnIgbXdfZGlyIiAmJgorCSgKKwkJY2QgbXdfZGlyICYmCisJCXRlc3RfcGF0aF9pc19taXNzaW5nIEZvby5tdyAmJgorCQllY2hvICJoZWxsbyB3b3JsZCIgPkZvby5tdyAmJgorCQlnaXQgYWRkIEZvby5tdyAmJgorCQlnaXQgY29tbWl0IC1tICJBZGQgdGhlIHBhZ2UgRm9vIiAmJgorCQlnaXQgcHVzaCAmJgorCQlybSAtZiBGb28ubXcgJiYKKwkJZ2l0IGNvbW1pdCAtYW0gIkRlbGV0ZSB0aGUgcGFnZSBGb28iICYmCisJCXRlc3RfZ2l0X3JlaW1wb3J0ICYmCisJCXRlc3RfcGF0aF9pc19taXNzaW5nIEZvby5tdworCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1c2ggY2FuIHByb3BhZ2F0ZSBsb2NhbCBtZWRpYSBmaWxlIGRlbGV0aW9uJyAnCisJd2lraV9yZXNldCAmJgorCWdpdCBjbG9uZSBtZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtZnIgbXdfZGlyIiAmJgorCSgKKwkJY2QgbXdfZGlyICYmCisJCWVjaG8gImhlbGxvIHdvcmxkIiA+Rm9vLnR4dCAmJgorCQlnaXQgYWRkIEZvby50eHQgJiYKKwkJZ2l0IGNvbW1pdCAtbSAiQWRkIHRoZSB0ZXh0IGZpbGUgRm9vIiAmJgorCQlnaXQgcm0gRm9vLnR4dCAmJgorCQlnaXQgY29tbWl0IC1tICJEZWxldGUgdGhlIGZpbGUgRm9vIiAmJgorCQl0ZXN0X2dpdF9yZWltcG9ydCAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBGb28udHh0CisJKQorJworCisjIHRlc3QgZmFpbHVyZTogdGhlIGZpbGUgaXMgY29ycmVjdGx5IHVwbG9hZGVkLCBhbmQgdGhlbiBkZWxldGVkIGJ1dAorIyBhcyBubyBwYWdlIGxpbmsgdG8gaXQsIHRoZSBpbXBvcnQgKHdoaWNoIGxvb2tzIGF0IHBhZ2UgcmV2aXNpb25zKQorIyBkb2Vzbid0IG5vdGljZSB0aGUgZmlsZSBkZWxldGlvbiBvbiB0aGUgd2lraS4gV2UgZmV0Y2ggdGhlIGxpc3Qgb2YKKyMgZmlsZXMgZnJvbSB0aGUgd2lraSwgYnV0IGFzIHRoZSBmaWxlIGlzIGRlbGV0ZWQsIGl0IGRvZXNuJ3QgYXBwZWFyLgordGVzdF9leHBlY3RfZmFpbHVyZSAnZ2l0IHB1bGwgY29ycmVjdGx5IGltcG9ydHMgbWVkaWEgZmlsZSBkZWxldGlvbiB3aGVuIG5vIHBhZ2UgbGluayB0byBpdCcgJworCXdpa2lfcmVzZXQgJiYKKwlnaXQgY2xvbmUgbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2RpciAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLWZyIG13X2RpciIgJiYKKwkoCisJCWNkIG13X2RpciAmJgorCQllY2hvICJoZWxsbyB3b3JsZCIgPkZvby50eHQgJiYKKwkJZ2l0IGFkZCBGb28udHh0ICYmCisJCWdpdCBjb21taXQgLW0gIkFkZCB0aGUgdGV4dCBmaWxlIEZvbyIgJiYKKwkJZ2l0IHB1c2ggJiYKKwkJZ2l0IHJtIEZvby50eHQgJiYKKwkJZ2l0IGNvbW1pdCAtbSAiRGVsZXRlIHRoZSBmaWxlIEZvbyIgJiYKKwkJdGVzdF9naXRfcmVpbXBvcnQgJiYKKwkJdGVzdF9wYXRoX2lzX21pc3NpbmcgRm9vLnR4dAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1c2ggcHJvcGVybHkgd2FybnMgYWJvdXQgaW5zdWZmaWNpZW50IHBlcm1pc3Npb25zJyAnCisJd2lraV9yZXNldCAmJgorCWdpdCBjbG9uZSBtZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtZnIgbXdfZGlyIiAmJgorCSgKKwkJY2QgbXdfZGlyICYmCisJCWVjaG8gIkEgRmlsZSIgPmZvby5mb3JiaWRkZW4gJiYKKwkJZ2l0IGFkZCBmb28uZm9yYmlkZGVuICYmCisJCWdpdCBjb21taXQgLW0gImFkZCBhIGZpbGUiICYmCisJCWdpdCBwdXNoIDI+YWN0dWFsICYmCisJCXRlc3RfaTE4bmdyZXAgImZvby5mb3JiaWRkZW4gaXMgbm90IGEgcGVybWl0dGVkIGZpbGUiIGFjdHVhbAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgYSByZXBvc2l0b3J5IHdpdGggbWVkaWEgZmlsZXMnICcKKwl3aWtpX3Jlc2V0ICYmCisJd2lraV9lZGl0cGFnZSB0ZXN0cGFnZSAiSSBhbSBsaW5raW5nIGEgZmlsZSBbW0ZpbGU6RmlsZS50eHRdXSIgZmFsc2UgJiYKKwllY2hvICJGaWxlIGNvbnRlbnQiID5GaWxlLnR4dCAmJgorCXdpa2lfdXBsb2FkX2ZpbGUgRmlsZS50eHQgJiYKKwllY2hvICJBbm90aGVyIGZpbGUgY29udGVudCIgPkFub3RoZXJGaWxlLnR4dCAmJgorCXdpa2lfdXBsb2FkX2ZpbGUgQW5vdGhlckZpbGUudHh0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBjbG9uZSB3b3JrcyB3aXRoIG9uZSBzcGVjaWZpYyBwYWdlIGNsb25lZCBhbmQgbWVkaWFpbXBvcnQ9dHJ1ZScgJworCWdpdCBjbG9uZSAtYyByZW1vdGUub3JpZ2luLnBhZ2VzPXRlc3RwYWdlIFwKKwkJICAtYyByZW1vdGUub3JpZ2luLm1lZGlhaW1wb3J0PXRydWUgXAorCQkJbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl8xNSAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIG13X2Rpcl8xNSIgJiYKKwl0ZXN0X2NvbnRhaW5zX05fZmlsZXMgbXdfZGlyXzE1IDMgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBtd19kaXJfMTUvVGVzdHBhZ2UubXcgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBtd19kaXJfMTUvRmlsZTpGaWxlLnR4dC5tdyAmJgorCXRlc3RfcGF0aF9pc19maWxlIG13X2Rpcl8xNS9GaWxlLnR4dCAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIG13X2Rpcl8xNS9NYWluX1BhZ2UubXcgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyBtd19kaXJfMTUvRmlsZTpBbm90aGVyRmlsZS50eHQubXcgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyBtd19kaXJfMTUvQW5vdGhldEZpbGUudHh0ICYmCisJd2lraV9jaGVja19jb250ZW50IG13X2Rpcl8xNS9UZXN0cGFnZS5tdyBUZXN0cGFnZSAmJgorCXRlc3RfY21wIG13X2Rpcl8xNS9GaWxlLnR4dCBGaWxlLnR4dAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgY2xvbmUgd29ya3Mgd2l0aCBvbmUgc3BlY2lmaWMgcGFnZSBjbG9uZWQgYW5kIG1lZGlhaW1wb3J0PWZhbHNlJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgbXdfZGlyXzE2IiAmJgorCWdpdCBjbG9uZSAtYyByZW1vdGUub3JpZ2luLnBhZ2VzPXRlc3RwYWdlIFwKKwkJCW1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfMTYgJiYKKwl0ZXN0X2NvbnRhaW5zX05fZmlsZXMgbXdfZGlyXzE2IDEgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBtd19kaXJfMTYvVGVzdHBhZ2UubXcgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyBtd19kaXJfMTYvRmlsZTpGaWxlLnR4dC5tdyAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIG13X2Rpcl8xNi9GaWxlLnR4dCAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIG13X2Rpcl8xNi9NYWluX1BhZ2UubXcgJiYKKwl3aWtpX2NoZWNrX2NvbnRlbnQgbXdfZGlyXzE2L1Rlc3RwYWdlLm13IFRlc3RwYWdlCisnCisKKyMgc2hvdWxkIGJlaGF2ZSBsaWtlIG1lZGlhaW1wb3J0PWZhbHNlCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgY2xvbmUgd29ya3Mgd2l0aCBvbmUgc3BlY2lmaWMgcGFnZSBjbG9uZWQgYW5kIG1lZGlhaW1wb3J0IHVuc2V0JyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtZnIgbXdfZGlyXzE3IiAmJgorCWdpdCBjbG9uZSAtYyByZW1vdGUub3JpZ2luLnBhZ2VzPXRlc3RwYWdlIFwKKwkJbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl8xNyAmJgorCXRlc3RfY29udGFpbnNfTl9maWxlcyBtd19kaXJfMTcgMSAmJgorCXRlc3RfcGF0aF9pc19maWxlIG13X2Rpcl8xNy9UZXN0cGFnZS5tdyAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIG13X2Rpcl8xNy9GaWxlOkZpbGUudHh0Lm13ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgbXdfZGlyXzE3L0ZpbGUudHh0ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgbXdfZGlyXzE3L01haW5fUGFnZS5tdyAmJgorCXdpa2lfY2hlY2tfY29udGVudCBtd19kaXJfMTcvVGVzdHBhZ2UubXcgVGVzdHBhZ2UKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC90L3Q5MzY0LXB1bGwtYnktcmV2LnNoIGIvY29udHJpYi9tdy10by1naXQvdC90OTM2NC1wdWxsLWJ5LXJldi5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41YzIyNDU3Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9tdy10by1naXQvdC90OTM2NC1wdWxsLWJ5LXJldi5zaApAQCAtMCwwICsxLDE3IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nVGVzdCB0aGUgR2l0IE1lZGlhd2lraSByZW1vdGUgaGVscGVyOiBnaXQgcHVsbCBieSByZXZpc2lvbicKKworLiAuL3Rlc3QtZ2l0bXctbGliLnNoCisuIC4vcHVzaC1wdWxsLXRlc3RzLnNoCisuICRURVNUX0RJUkVDVE9SWS90ZXN0LWxpYi5zaAorCit0ZXN0X2NoZWNrX3ByZWNvbmQKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY29uZmlndXJhdGlvbicgJworCWdpdCBjb25maWcgLS1nbG9iYWwgbWVkaWF3aWtpLmZldGNoU3RyYXRlZ3kgYnlfcmV2CisnCisKK3Rlc3RfcHVzaF9wdWxsCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9tdy10by1naXQvdC90ZXN0LWdpdG13LWxpYi5zaCBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvdGVzdC1naXRtdy1saWIuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2IyY2ZhYwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvdGVzdC1naXRtdy1saWIuc2gKQEAgLTAsMCArMSw0MzUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEyCisjICAgICBDaGFybGVzIFJvdXNzZWwgPGNoYXJsZXMucm91c3NlbEBlbnNpbWFnLmltYWcuZnI+CisjICAgICBTaW1vbiBDYXRoZWJyYXMgPHNpbW9uLmNhdGhlYnJhc0BlbnNpbWFnLmltYWcuZnI+CisjICAgICBKdWxpZW4gS2hheWF0IDxqdWxpZW4ua2hheWF0QGVuc2ltYWcuaW1hZy5mcj4KKyMgICAgIEd1aWxsYXVtZSBTYXNkeSA8Z3VpbGxhdW1lLnNhc2R5QGVuc2ltYWcuaW1hZy5mcj4KKyMgICAgIFNpbW9uIFBlcnJhdCA8c2ltb24ucGVycmF0QGVuc2ltYWcuaW1hZy5mcj4KKyMgTGljZW5zZTogR1BMIHYyIG9yIGxhdGVyCisKKyMKKyMgQ09ORklHVVJBVElPTiBWQVJJQUJMRVMKKyMgWW91IG1pZ2h0IHdhbnQgdG8gY2hhbmdlIHRoZXNlIG9uZXMKKyMKKworLiAuL3Rlc3QuY29uZmlnCisKK1dJS0lfVVJMPWh0dHA6Ly8iJFNFUlZFUl9BRERSOiRQT1JULyRXSUtJX0RJUl9OQU1FIgorQ1VSUl9ESVI9JChwd2QpCitURVNUX09VVFBVVF9ESVJFQ1RPUlk9JChwd2QpCitURVNUX0RJUkVDVE9SWT0iJENVUlJfRElSIi8uLi8uLi8uLi90CisKK2V4cG9ydCBURVNUX09VVFBVVF9ESVJFQ1RPUlkgVEVTVF9ESVJFQ1RPUlkgQ1VSUl9ESVIKKworaWYgdGVzdCAiJExJR0hUVFBEIiA9ICJmYWxzZSIgOyB0aGVuCisJUE9SVD04MAorZWxzZQorCVdJS0lfRElSX0lOU1Q9IiRDVVJSX0RJUi8kV0VCX1dXVyIKK2ZpCisKK3dpa2lfdXBsb2FkX2ZpbGUgKCkgeworCSIkQ1VSUl9ESVIiL3Rlc3QtZ2l0bXcucGwgdXBsb2FkX2ZpbGUgIiRAIgorfQorCit3aWtpX2dldHBhZ2UgKCkgeworCSIkQ1VSUl9ESVIiL3Rlc3QtZ2l0bXcucGwgZ2V0X3BhZ2UgIiRAIgorfQorCit3aWtpX2RlbGV0ZV9wYWdlICgpIHsKKwkiJENVUlJfRElSIi90ZXN0LWdpdG13LnBsIGRlbGV0ZV9wYWdlICIkQCIKK30KKword2lraV9lZGl0cGFnZSAoKSB7CisJIiRDVVJSX0RJUiIvdGVzdC1naXRtdy5wbCBlZGl0X3BhZ2UgIiRAIgorfQorCitkaWUgKCkgeworCWRpZV93aXRoX3N0YXR1cyAxICIkQCIKK30KKworZGllX3dpdGhfc3RhdHVzICgpIHsKKwlzdGF0dXM9JDEKKwlzaGlmdAorCWVjaG8gPiYyICIkKiIKKwlleGl0ICIkc3RhdHVzIgorfQorCisKKyMgQ2hlY2sgdGhlIHByZWNvbmRpdGlvbnMgdG8gcnVuIGdpdC1yZW1vdGUtbWVkaWF3aWtpJ3MgdGVzdHMKK3Rlc3RfY2hlY2tfcHJlY29uZCAoKSB7CisJaWYgISB0ZXN0X2hhdmVfcHJlcmVxIFBFUkwKKwl0aGVuCisJCXNraXBfYWxsPSdza2lwcGluZyBnYXRld2F5IGdpdC1tdyB0ZXN0cywgcGVybCBub3QgYXZhaWxhYmxlJworCQl0ZXN0X2RvbmUKKwlmaQorCisJaWYgWyAhIC1mICIkR0lUX0JVSUxEX0RJUiIvZ2l0LXJlbW90ZS1tZWRpYXdpa2kgXTsKKwl0aGVuCisJCWVjaG8gIk5vIHJlbW90ZSBtZWRpYXdpa2kgZm9yIGdpdCBmb3VuZC4gQ29weWluZyBpdCBpbiBnaXQiCisJCWVjaG8gImNwICRHSVRfQlVJTERfRElSL2NvbnRyaWIvbXctdG8tZ2l0L2dpdC1yZW1vdGUtbWVkaWF3aWtpICRHSVRfQlVJTERfRElSLyIKKwkJbG4gLXMgIiRHSVRfQlVJTERfRElSIi9jb250cmliL213LXRvLWdpdC9naXQtcmVtb3RlLW1lZGlhd2lraSAiJEdJVF9CVUlMRF9ESVIiCisJZmkKKworCWlmIFsgISAtZCAiJFdJS0lfRElSX0lOU1QvJFdJS0lfRElSX05BTUUiIF07CisJdGhlbgorCQlza2lwX2FsbD0nc2tpcHBpbmcgZ2F0ZXdheSBnaXQtbXcgdGVzdHMsIG5vIG1lZGlhd2lraSBmb3VuZCcKKwkJdGVzdF9kb25lCisJZmkKK30KKworIyB0ZXN0X2RpZmZfZGlyZWN0b3JpZXMgPGRpcl9naXQ+IDxkaXJfd2lraT4KKyMKKyMgQ29tcGFyZSB0aGUgY29udGVudHMgb2YgZGlyZWN0b3JpZXMgPGRpcl9naXQ+IGFuZCA8ZGlyX3dpa2k+IHdpdGggZGlmZgorIyBhbmQgZXJyb3JzIGlmIHRoZXkgZG8gbm90IG1hdGNoLiBUaGUgcHJvZ3JhbSB3aWxsCisjIG5vdCBsb29rIGludG8gLmdpdCBpbiB0aGUgcHJvY2Vzcy4KKyMgV2FybmluZzogdGhlIGZpcnN0IGFyZ3VtZW50IE1VU1QgYmUgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBnaXQgZGF0YQordGVzdF9kaWZmX2RpcmVjdG9yaWVzICgpIHsKKwlybSAtcmYgIiQxX3RtcCIKKwlta2RpciAtcCAiJDFfdG1wIgorCWNwICIkMSIvKi5tdyAiJDFfdG1wIgorCWRpZmYgLXIgLWIgIiQxX3RtcCIgIiQyIgorfQorCisjICQxPTxkaXI+CisjICQyPTxOPgorIworIyBDaGVjayB0aGF0IDxkaXI+IGNvbnRhaW5zIGV4YWN0bHkgPE4+IGZpbGVzCit0ZXN0X2NvbnRhaW5zX05fZmlsZXMgKCkgeworCWlmIHRlc3QgYGxzIC0tICIkMSIgfCB3YyAtbGAgLW5lICIkMiI7IHRoZW4KKwkJZWNobyAiZGlyZWN0b3J5ICQxIHNvdWxkIGNvbnRhaW4gJDIgZmlsZXMiCisJCWVjaG8gIml0IGNvbnRhaW5zIHRoZXNlIGZpbGVzOiIKKwkJbHMgIiQxIgorCQlmYWxzZQorCWZpCit9CisKKworIyB3aWtpX2NoZWNrX2NvbnRlbnQgPGZpbGVfbmFtZT4gPHBhZ2VfbmFtZT4KKyMKKyMgQ29tcGFyZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIDxmaWxlX25hbWU+IGFuZCB0aGUgd2lraSBwYWdlCisjIDxwYWdlX25hbWU+IGFuZCBleGl0cyB3aXRoIGVycm9yIDEgaWYgdGhleSBkbyBub3QgbWF0Y2guCit3aWtpX2NoZWNrX2NvbnRlbnQgKCkgeworCW1rZGlyIC1wIHdpa2lfdG1wCisJd2lraV9nZXRwYWdlICIkMiIgd2lraV90bXAKKwkjIHJlcGxhY2VtZW50IG9mIGZvcmJpZGRlbiBjaGFyYWN0ZXIgaW4gZmlsZSBuYW1lCisJcGFnZV9uYW1lPSQocHJpbnRmICIlc1xuIiAiJDIiIHwgc2VkIC1lICJzL1wvLyUyRi9nIikKKworCWRpZmYgLWIgIiQxIiB3aWtpX3RtcC8iJHBhZ2VfbmFtZSIubXcKKwlpZiB0ZXN0ICQ/IC1uZSAwCisJdGhlbgorCQlybSAtcmYgd2lraV90bXAKKwkJZXJyb3IgIkVSUk9SOiBmaWxlICQyIG5vdCBmb3VuZCBvbiB3aWtpIgorCWZpCisJcm0gLXJmIHdpa2lfdG1wCit9CisKKyMgd2lraV9wYWdlX2V4aXN0IDxwYWdlX25hbWU+CisjCisjIENoZWNrIHRoZSBleGlzdGVuY2Ugb2YgdGhlIHBhZ2UgPHBhZ2VfbmFtZT4gb24gdGhlIHdpa2kgYW5kIGV4aXRzCisjIHdpdGggZXJyb3IgaWYgaXQgaXMgYWJzZW50IGZyb20gaXQuCit3aWtpX3BhZ2VfZXhpc3QgKCkgeworCW1rZGlyIC1wIHdpa2lfdG1wCisJd2lraV9nZXRwYWdlICIkMSIgd2lraV90bXAKKwlwYWdlX25hbWU9JChwcmludGYgIiVzXG4iICIkMSIgfCBzZWQgInMvXC8vJTJGL2ciKQorCWlmIHRlc3QgLWYgd2lraV90bXAvIiRwYWdlX25hbWUiLm13IDsgdGhlbgorCQlybSAtcmYgd2lraV90bXAKKwllbHNlCisJCXJtIC1yZiB3aWtpX3RtcAorCQllcnJvciAidGVzdCBmYWlsZWQ6IGZpbGUgJDEgbm90IGZvdW5kIG9uIHdpa2kiCisJZmkKK30KKworIyB3aWtpX2dldGFsbHBhZ2VuYW1lCisjCisjIEZldGNoIHRoZSBuYW1lIG9mIGVhY2ggcGFnZSBvbiB0aGUgd2lraS4KK3dpa2lfZ2V0YWxscGFnZW5hbWUgKCkgeworCSIkQ1VSUl9ESVIiL3Rlc3QtZ2l0bXcucGwgZ2V0YWxscGFnZW5hbWUKK30KKworIyB3aWtpX2dldGFsbHBhZ2VjYXRlZ29yeSA8Y2F0ZWdvcnk+CisjCisjIEZldGNoIHRoZSBuYW1lIG9mIGVhY2ggcGFnZSBiZWxvbmdpbmcgdG8gPGNhdGVnb3J5PiBvbiB0aGUgd2lraS4KK3dpa2lfZ2V0YWxscGFnZWNhdGVnb3J5ICgpIHsKKwkiJENVUlJfRElSIi90ZXN0LWdpdG13LnBsIGdldGFsbHBhZ2VuYW1lICIkQCIKK30KKworIyB3aWtpX2dldGFsbHBhZ2UgPGRlc3RfZGlyPiBbPGNhdGVnb3J5Pl0KKyMKKyMgRmV0Y2ggYWxsIHRoZSBwYWdlcyBmcm9tIHRoZSB3aWtpIGFuZCBwbGFjZSB0aGVtIGluIHRoZSBkaXJlY3RvcnkKKyMgPGRlc3RfZGlyPi4KKyMgSWYgPGNhdGVnb3J5PiBpcyBkZWZpbmUsIHRoZW4gd2lraV9nZXRhbGxwYWdlIGZldGNoIHRoZSBwYWdlcyBpbmNsdWRlZAorIyBpbiA8Y2F0ZWdvcnk+Lgord2lraV9nZXRhbGxwYWdlICgpIHsKKwlpZiB0ZXN0IC16ICIkMiI7CisJdGhlbgorCQl3aWtpX2dldGFsbHBhZ2VuYW1lCisJZWxzZQorCQl3aWtpX2dldGFsbHBhZ2VjYXRlZ29yeSAiJDIiCisJZmkKKwlta2RpciAtcCAiJDEiCisJd2hpbGUgcmVhZCAtciBsaW5lOyBkbworCQl3aWtpX2dldHBhZ2UgIiRsaW5lIiAkMTsKKwlkb25lIDwgYWxsLnR4dAorfQorCisjID09PT09PT09PT09PT09PT09IEluc3RhbGwgcGFydCA9PT09PT09PT09PT09PT09PQorCitlcnJvciAoKSB7CisJZWNobyAiJEAiID4mMgorCWV4aXQgMQorfQorCisjIGNvbmZpZ19saWdodHRwZAorIworIyBDcmVhdGUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIHRoZSBmb2xkZXJzIG5lY2Vzc2FyeSB0byBzdGFydCBsaWdodHRwZC4KKyMgT3ZlcndyaXRlIGFueSBleGlzdGluZyBmaWxlLgorY29uZmlnX2xpZ2h0dHBkICgpIHsKKwlta2RpciAtcCAkV0VCCisJbWtkaXIgLXAgJFdFQl9UTVAKKwlta2RpciAtcCAkV0VCX1dXVworCWNhdCA+ICRXRUIvbGlnaHR0cGQuY29uZiA8PEVPRgorCXNlcnZlci5kb2N1bWVudC1yb290ID0gIiRDVVJSX0RJUi8kV0VCX1dXVyIKKwlzZXJ2ZXIucG9ydCA9ICRQT1JUCisJc2VydmVyLnBpZC1maWxlID0gIiRDVVJSX0RJUi8kV0VCX1RNUC9waWQiCisKKwlzZXJ2ZXIubW9kdWxlcyA9ICgKKwkibW9kX3Jld3JpdGUiLAorCSJtb2RfcmVkaXJlY3QiLAorCSJtb2RfYWNjZXNzIiwKKwkibW9kX2FjY2Vzc2xvZyIsCisJIm1vZF9mYXN0Y2dpIgorCSkKKworCWluZGV4LWZpbGUubmFtZXMgPSAoImluZGV4LnBocCIgLCAiaW5kZXguaHRtbCIpCisKKwltaW1ldHlwZS5hc3NpZ24JCSAgICA9ICgKKwkiLnBkZiIJCT0+CSJhcHBsaWNhdGlvbi9wZGYiLAorCSIuc2lnIgkJPT4JImFwcGxpY2F0aW9uL3BncC1zaWduYXR1cmUiLAorCSIuc3BsIgkJPT4JImFwcGxpY2F0aW9uL2Z1dHVyZXNwbGFzaCIsCisJIi5jbGFzcyIJPT4JImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsCisJIi5wcyIJCT0+CSJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IiwKKwkiLnRvcnJlbnQiCT0+CSJhcHBsaWNhdGlvbi94LWJpdHRvcnJlbnQiLAorCSIuZHZpIgkJPT4JImFwcGxpY2F0aW9uL3gtZHZpIiwKKwkiLmd6IgkJPT4JImFwcGxpY2F0aW9uL3gtZ3ppcCIsCisJIi5wYWMiCQk9PgkiYXBwbGljYXRpb24veC1ucy1wcm94eS1hdXRvY29uZmlnIiwKKwkiLnN3ZiIJCT0+CSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIsCisJIi50YXIuZ3oiCT0+CSJhcHBsaWNhdGlvbi94LXRneiIsCisJIi50Z3oiCQk9PgkiYXBwbGljYXRpb24veC10Z3oiLAorCSIudGFyIgkJPT4JImFwcGxpY2F0aW9uL3gtdGFyIiwKKwkiLnppcCIJCT0+CSJhcHBsaWNhdGlvbi96aXAiLAorCSIubXAzIgkJPT4JImF1ZGlvL21wZWciLAorCSIubTN1IgkJPT4JImF1ZGlvL3gtbXBlZ3VybCIsCisJIi53bWEiCQk9PgkiYXVkaW8veC1tcy13bWEiLAorCSIud2F4IgkJPT4JImF1ZGlvL3gtbXMtd2F4IiwKKwkiLm9nZyIJCT0+CSJhcHBsaWNhdGlvbi9vZ2ciLAorCSIud2F2IgkJPT4JImF1ZGlvL3gtd2F2IiwKKwkiLmdpZiIJCT0+CSJpbWFnZS9naWYiLAorCSIuanBnIgkJPT4JImltYWdlL2pwZWciLAorCSIuanBlZyIJCT0+CSJpbWFnZS9qcGVnIiwKKwkiLnBuZyIJCT0+CSJpbWFnZS9wbmciLAorCSIueGJtIgkJPT4JImltYWdlL3gteGJpdG1hcCIsCisJIi54cG0iCQk9PgkiaW1hZ2UveC14cGl4bWFwIiwKKwkiLnh3ZCIJCT0+CSJpbWFnZS94LXh3aW5kb3dkdW1wIiwKKwkiLmNzcyIJCT0+CSJ0ZXh0L2NzcyIsCisJIi5odG1sIgkJPT4JInRleHQvaHRtbCIsCisJIi5odG0iCQk9PgkidGV4dC9odG1sIiwKKwkiLmpzIgkJPT4JInRleHQvamF2YXNjcmlwdCIsCisJIi5hc2MiCQk9PgkidGV4dC9wbGFpbiIsCisJIi5jIgkJPT4JInRleHQvcGxhaW4iLAorCSIuY3BwIgkJPT4JInRleHQvcGxhaW4iLAorCSIubG9nIgkJPT4JInRleHQvcGxhaW4iLAorCSIuY29uZiIJCT0+CSJ0ZXh0L3BsYWluIiwKKwkiLnRleHQiCQk9PgkidGV4dC9wbGFpbiIsCisJIi50eHQiCQk9PgkidGV4dC9wbGFpbiIsCisJIi5kdGQiCQk9PgkidGV4dC94bWwiLAorCSIueG1sIgkJPT4JInRleHQveG1sIiwKKwkiLm1wZWciCQk9PgkidmlkZW8vbXBlZyIsCisJIi5tcGciCQk9PgkidmlkZW8vbXBlZyIsCisJIi5tb3YiCQk9PgkidmlkZW8vcXVpY2t0aW1lIiwKKwkiLnF0IgkJPT4JInZpZGVvL3F1aWNrdGltZSIsCisJIi5hdmkiCQk9PgkidmlkZW8veC1tc3ZpZGVvIiwKKwkiLmFzZiIJCT0+CSJ2aWRlby94LW1zLWFzZiIsCisJIi5hc3giCQk9PgkidmlkZW8veC1tcy1hc2YiLAorCSIud212IgkJPT4JInZpZGVvL3gtbXMtd212IiwKKwkiLmJ6MiIJCT0+CSJhcHBsaWNhdGlvbi94LWJ6aXAiLAorCSIudGJ6IgkJPT4JImFwcGxpY2F0aW9uL3gtYnppcC1jb21wcmVzc2VkLXRhciIsCisJIi50YXIuYnoyIgk9PgkiYXBwbGljYXRpb24veC1iemlwLWNvbXByZXNzZWQtdGFyIiwKKwkiIgkJPT4JInRleHQvcGxhaW4iCisJKQorCisJZmFzdGNnaS5zZXJ2ZXIgPSAoICIucGhwIiA9PgorCSgibG9jYWxob3N0IiA9PgorCSggInNvY2tldCIgPT4gIiRDVVJSX0RJUi8kV0VCX1RNUC9waHAuc29ja2V0IiwKKwkiYmluLXBhdGgiID0+ICIkUEhQX0RJUi9waHAtY2dpIC1jICRDVVJSX0RJUi8kV0VCL3BocC5pbmkiCisKKwkpCisJKQorCSkKK0VPRgorCisJY2F0ID4gJFdFQi9waHAuaW5pIDw8RU9GCisJc2Vzc2lvbi5zYXZlX3BhdGggPSckQ1VSUl9ESVIvJFdFQl9UTVAnCitFT0YKK30KKworIyBzdGFydF9saWdodHRwZAorIworIyBTdGFydCBvciByZXN0YXJ0IGRhZW1vbiBsaWdodHRwZC4gSWYgcmVzdGFydCwgcmV3cml0ZSBjb25maWd1cmF0aW9uIGZpbGVzLgorc3RhcnRfbGlnaHR0cGQgKCkgeworCWlmIHRlc3QgLWYgIiRXRUJfVE1QL3BpZCI7IHRoZW4KKwkJZWNobyAiSW5zdGFuY2UgYWxyZWFkeSBydW5uaW5nLiBSZXN0YXJ0aW5nLi4uIgorCQlzdG9wX2xpZ2h0dHBkCisJZmkKKwljb25maWdfbGlnaHR0cGQKKwkiJExJR0hUVFBEX0RJUiIvbGlnaHR0cGQgLWYgIiRXRUIiL2xpZ2h0dHBkLmNvbmYKKworCWlmIHRlc3QgJD8gLW5lIDAgOyB0aGVuCisJCWVjaG8gIkNvdWxkIG5vdCBleGVjdXRlIGh0dHAgZGVhbW9uIGxpZ2h0dHBkIgorCQlleGl0IDEKKwlmaQorfQorCisjIHN0b3BfbGlnaHR0cGQKKyMKKyMgS2lsbCBkYWVtb24gbGlnaHR0cGQgYW5kIHJlbW92ZXMgZmlsZXMgYW5kIGZvbGRlcnMgYXNzb2NpYXRlZC4KK3N0b3BfbGlnaHR0cGQgKCkgeworCXRlc3QgLWYgIiRXRUJfVE1QL3BpZCIgJiYga2lsbCAkKGNhdCAiJFdFQl9UTVAvcGlkIikKKwlybSAtcmYgIiRXRUIiCit9CisKKyMgQ3JlYXRlIHRoZSBTUUxpdGUgZGF0YWJhc2Ugb2YgdGhlIE1lZGlhV2lraS4gSWYgdGhlIGRhdGFiYXNlIGZpbGUgYWxyZWFkeQorIyBleGlzdHMsIGl0IHdpbGwgYmUgZGVsZXRlZC4KKyMgVGhpcyBzY3JpcHQgc2hvdWxkIGJlIHJ1bm5lZCBmcm9tIHRoZSBkaXJlY3Rvcnkgd2hlcmUgJEZJTEVTX0ZPTERFUiBpcworIyBsb2NhdGVkLgorY3JlYXRlX2RiICgpIHsKKwlybSAtZiAiJFRNUC8kREJfRklMRSIKKworCWVjaG8gIkdlbmVyYXRpbmcgdGhlIFNRTGl0ZSBkYXRhYmFzZSBmaWxlLiBJdCBjYW4gdGFrZSBzb21lIHRpbWUgLi4uIgorCSMgUnVuIHRoZSBwaHAgc2NyaXB0IHRvIGdlbmVyYXRlIHRoZSBTUUxpdGUgZGF0YWJhc2UgZmlsZQorCSMgd2l0aCBjVVJMIGNhbGxzLgorCXBocCAiJEZJTEVTX0ZPTERFUi8kREJfSU5TVEFMTF9TQ1JJUFQiICQoYmFzZW5hbWUgIiREQl9GSUxFIiAuc3FsaXRlKSBcCisJCSIkV0lLSV9BRE1JTiIgIiRXSUtJX1BBU1NXIiAiJFRNUCIgIiRQT1JUIgorCisJaWYgWyAhIC1mICIkVE1QLyREQl9GSUxFIiBdIDsgdGhlbgorCQllcnJvciAiQ2FuJ3QgY3JlYXRlIGRhdGFiYXNlIGZpbGUgJFRNUC8kREJfRklMRS4gVHJ5IHRvIHJ1biAuL2luc3RhbGwtd2lraS5zaCBkZWxldGUgZmlyc3QuIgorCWZpCisKKwkjIENvcHkgdGhlIGdlbmVyYXRlZCBkYXRhYmFzZSBmaWxlIGludG8gdGhlIGRpcmVjdG9yeSB0aGUKKwkjIHVzZXIgaW5kaWNhdGVkLgorCWNwICIkVE1QLyREQl9GSUxFIiAiJEZJTEVTX0ZPTERFUiIgfHwKKwkJZXJyb3IgIlVuYWJsZSB0byBjb3B5ICRUTVAvJERCX0ZJTEUgdG8gJEZJTEVTX0ZPTERFUiIKK30KKworIyBJbnN0YWxsIGEgd2lraSBpbiB5b3VyIHdlYiBzZXJ2ZXIgZGlyZWN0b3J5Lgord2lraV9pbnN0YWxsICgpIHsKKwlpZiB0ZXN0ICRMSUdIVFRQRCA9ICJ0cnVlIiA7IHRoZW4KKwkJc3RhcnRfbGlnaHR0cGQKKwlmaQorCisJU0VSVkVSX0FERFI9JFNFUlZFUl9BRERSOiRQT1JUCisJIyBJbiB0aGlzIHBhcnQsIHdlIGNoYW5nZSBkaXJlY3RvcnkgdG8gJFRNUCBpbiBvcmRlciB0byBkb3dubG9hZCwKKwkjIHVucGFjayBhbmQgY29weSB0aGUgZmlsZXMgb2YgTWVkaWFXaWtpCisJKAorCW1rZGlyIC1wICIkV0lLSV9ESVJfSU5TVC8kV0lLSV9ESVJfTkFNRSIKKwlpZiBbICEgLWQgIiRXSUtJX0RJUl9JTlNULyRXSUtJX0RJUl9OQU1FIiBdIDsgdGhlbgorCQllcnJvciAiRm9sZGVyICRXSUtJX0RJUl9JTlNULyRXSUtJX0RJUl9OQU1FIGRvZXNuJ3QgZXhpc3QuCisJCVBsZWFzZSBjcmVhdGUgaXQgYW5kIGxhdW5jaCB0aGUgc2NyaXB0IGFnYWluLiIKKwlmaQorCisJIyBGZXRjaCBNZWRpYVdpa2kncyBhcmNoaXZlIGlmIG5vdCBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIFRNUCBkaXJlY3RvcnkKKwljZCAiJFRNUCIKKwlpZiBbICEgLWYgIiRNV19WRVJTSU9OLnRhci5neiIgXSA7IHRoZW4KKwkJZWNobyAiRG93bmxvYWRpbmcgJE1XX1ZFUlNJT04gc291cmNlcyAuLi4iCisJCXdnZXQgImh0dHA6Ly9kb3dubG9hZC53aWtpbWVkaWEub3JnL21lZGlhd2lraS8xLjE5L21lZGlhd2lraS0xLjE5LjAudGFyLmd6IiB8fAorCQkJZXJyb3IgIlVuYWJsZSB0byBkb3dubG9hZCAiXAorCQkJImh0dHA6Ly9kb3dubG9hZC53aWtpbWVkaWEub3JnL21lZGlhd2lraS8xLjE5LyJcCisJCQkibWVkaWF3aWtpLTEuMTkuMC50YXIuZ3ouICJcCisJCQkiUGxlYXNlIGZpeCB5b3VyIGNvbm5lY3Rpb24gYW5kIGxhdW5jaCB0aGUgc2NyaXB0IGFnYWluLiIKKwkJZWNobyAiJE1XX1ZFUlNJT04udGFyLmd6IGRvd25sb2FkZWQgaW4gYHB3ZGAuICJcCisJCQkiWW91IGNhbiBkZWxldGUgaXQgbGF0ZXIgaWYgeW91IHdhbnQuIgorCWVsc2UKKwkJZWNobyAiUmV1c2luZyBleGlzdGluZyAkTVdfVkVSU0lPTi50YXIuZ3ogZG93bmxvYWRlZCBpbiBgcHdkYC4iCisJZmkKKwlhcmNoaXZlX2Fic19wYXRoPSQocHdkKS8iJE1XX1ZFUlNJT04udGFyLmd6IgorCWNkICIkV0lLSV9ESVJfSU5TVC8kV0lLSV9ESVJfTkFNRS8iIHx8CisJCWVycm9yICJjYW4ndCBjZCB0byAkV0lLSV9ESVJfSU5TVC8kV0lLSV9ESVJfTkFNRS8iCisJdGFyIHh6ZiAiJGFyY2hpdmVfYWJzX3BhdGgiIC0tc3RyaXAtY29tcG9uZW50cz0xIHx8CisJCWVycm9yICJVbmFibGUgdG8gZXh0cmFjdCBXaWtpTWVkaWEncyBmaWxlcyBmcm9tICRhcmNoaXZlX2Fic19wYXRoIHRvICJcCisJCQkiJFdJS0lfRElSX0lOU1QvJFdJS0lfRElSX05BTUUiCisJKSB8fCBleGl0IDEKKworCWNyZWF0ZV9kYgorCisJIyBDb3B5IHRoZSBnZW5lcmljIExvY2FsU2V0dGluZ3MucGhwIGluIHRoZSB3ZWIgc2VydmVyJ3MgZGlyZWN0b3J5CisJIyBBbmQgbW9kaWZ5IHBhcmFtZXRlcnMgYWNjb3JkaW5nIHRvIHRoZSBvbmVzIHNldCBhdCB0aGUgdG9wCisJIyBvZiB0aGlzIHNjcmlwdC4KKwkjIE5vdGUgdGhhdCBMb2NhbFNldHRpbmdzLnBocCBpcyBuZXZlciBtb2RpZmllZC4KKwlpZiBbICEgLWYgIiRGSUxFU19GT0xERVIvTG9jYWxTZXR0aW5ncy5waHAiIF0gOyB0aGVuCisJCWVycm9yICJDYW4ndCBmaW5kICRGSUxFU19GT0xERVIvTG9jYWxTZXR0aW5ncy5waHAgIiBcCisJCQkiaW4gdGhlIGN1cnJlbnQgZm9sZGVyLiAiXAorCQkiUGxlYXNlIHJ1biB0aGUgc2NyaXB0IGluc2lkZSBpdHMgZm9sZGVyLiIKKwlmaQorCWNwICIkRklMRVNfRk9MREVSL0xvY2FsU2V0dGluZ3MucGhwIiBcCisJCSIkRklMRVNfRk9MREVSL0xvY2FsU2V0dGluZ3MtdG1wLnBocCIgfHwKKwkJZXJyb3IgIlVuYWJsZSB0byBjb3B5ICRGSUxFU19GT0xERVIvTG9jYWxTZXR0aW5ncy5waHAgIiBcCisJCSJ0byAkRklMRVNfRk9MREVSL0xvY2FsU2V0dGluZ3MtdG1wLnBocCIKKworCSMgUGFyc2UgYW5kIHNldCB0aGUgTG9jYWxTZXR0aW5ncyBmaWxlIG9mIHRoZSB1c2VyIGFjY29yZGluZyB0byB0aGUKKwkjIENPTkZJR1VSQVRJT04gVkFSSUFCTEVTIHNlY3Rpb24gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGlzIHNjcmlwdAorCWZpbGVfc3dhcD0iJEZJTEVTX0ZPTERFUi9Mb2NhbFNldHRpbmdzLXN3YXAucGhwIgorCXNlZCAicyxAV0dfU0NSSVBUX1BBVEhALC8kV0lLSV9ESVJfTkFNRSwiIFwKKwkJIiRGSUxFU19GT0xERVIvTG9jYWxTZXR0aW5ncy10bXAucGhwIiA+ICIkZmlsZV9zd2FwIgorCW12ICIkZmlsZV9zd2FwIiAiJEZJTEVTX0ZPTERFUi9Mb2NhbFNldHRpbmdzLXRtcC5waHAiCisJc2VkICJzLEBXR19TRVJWRVJALGh0dHA6Ly8kU0VSVkVSX0FERFIsIiBcCisJCSIkRklMRVNfRk9MREVSL0xvY2FsU2V0dGluZ3MtdG1wLnBocCIgPiAiJGZpbGVfc3dhcCIKKwltdiAiJGZpbGVfc3dhcCIgIiRGSUxFU19GT0xERVIvTG9jYWxTZXR0aW5ncy10bXAucGhwIgorCXNlZCAicyxAV0dfU1FMSVRFX0RBVEFESVJALCRUTVAsIiBcCisJCSIkRklMRVNfRk9MREVSL0xvY2FsU2V0dGluZ3MtdG1wLnBocCIgPiAiJGZpbGVfc3dhcCIKKwltdiAiJGZpbGVfc3dhcCIgIiRGSUxFU19GT0xERVIvTG9jYWxTZXR0aW5ncy10bXAucGhwIgorCXNlZCAicyxAV0dfU1FMSVRFX0RBVEFGSUxFQCwkKCBiYXNlbmFtZSAkREJfRklMRSAuc3FsaXRlKSwiIFwKKwkJIiRGSUxFU19GT0xERVIvTG9jYWxTZXR0aW5ncy10bXAucGhwIiA+ICIkZmlsZV9zd2FwIgorCW12ICIkZmlsZV9zd2FwIiAiJEZJTEVTX0ZPTERFUi9Mb2NhbFNldHRpbmdzLXRtcC5waHAiCisKKwltdiAiJEZJTEVTX0ZPTERFUi9Mb2NhbFNldHRpbmdzLXRtcC5waHAiIFwKKwkJIiRXSUtJX0RJUl9JTlNULyRXSUtJX0RJUl9OQU1FL0xvY2FsU2V0dGluZ3MucGhwIiB8fAorCQllcnJvciAiVW5hYmxlIHRvIG1vdmUgJEZJTEVTX0ZPTERFUi9Mb2NhbFNldHRpbmdzLXRtcC5waHAiIFwKKwkJImluICRXSUtJX0RJUl9JTlNULyRXSUtJX0RJUl9OQU1FIgorCWVjaG8gIkZpbGUgJEZJTEVTX0ZPTERFUi9Mb2NhbFNldHRpbmdzLnBocCBpcyBzZXQgaW4iIFwKKwkJIiAkV0lLSV9ESVJfSU5TVC8kV0lLSV9ESVJfTkFNRSIKKworCWVjaG8gIllvdXIgd2lraSBoYXMgYmVlbiBpbnN0YWxsZWQuIFlvdSBjYW4gY2hlY2sgaXQgYXQKKwkJaHR0cDovLyRTRVJWRVJfQUREUi8kV0lLSV9ESVJfTkFNRSIKK30KKworIyBSZXNldCB0aGUgZGF0YWJhc2Ugb2YgdGhlIHdpa2kgYW5kIHRoZSBwYXNzd29yZCBvZiB0aGUgYWRtaW4KKyMKKyMgV2FybmluZzogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBvbmx5IGluIGEgc3ViZGlyZWN0b3J5IG9mIHQvIGRpcmVjdG9yeQord2lraV9yZXNldCAoKSB7CisJIyBDb3B5IGluaXRpYWwgZGF0YWJhc2Ugb2YgdGhlIHdpa2kKKwlpZiBbICEgLWYgIi4uLyRGSUxFU19GT0xERVIvJERCX0ZJTEUiIF0gOyB0aGVuCisJCWVycm9yICJDYW4ndCBmaW5kIC4uLyRGSUxFU19GT0xERVIvJERCX0ZJTEUgaW4gdGhlIGN1cnJlbnQgZm9sZGVyLiIKKwlmaQorCWNwICIuLi8kRklMRVNfRk9MREVSLyREQl9GSUxFIiAiJFRNUCIgfHwKKwkJZXJyb3IgIkNhbid0IGNvcHkgLi4vJEZJTEVTX0ZPTERFUi8kREJfRklMRSBpbiAkVE1QIgorCWVjaG8gIkZpbGUgJEZJTEVTX0ZPTERFUi8kREJfRklMRSBpcyBzZXQgaW4gJFRNUCIKK30KKworIyBEZWxldGUgdGhlIHdpa2kgY3JlYXRlZCBpbiB0aGUgd2ViIHNlcnZlcidzIGRpcmVjdG9yeSBhbmQgYWxsIGl0cyBjb250ZW50CisjIHNhdmVkIGluIHRoZSBkYXRhYmFzZS4KK3dpa2lfZGVsZXRlICgpIHsKKwlpZiB0ZXN0ICRMSUdIVFRQRCA9ICJ0cnVlIjsgdGhlbgorCQlzdG9wX2xpZ2h0dHBkCisJZWxzZQorCQkjIERlbGV0ZSB0aGUgd2lraSdzIGRpcmVjdG9yeS4KKwkJcm0gLXJmICIkV0lLSV9ESVJfSU5TVC8kV0lLSV9ESVJfTkFNRSIgfHwKKwkJCWVycm9yICJXaWtpJ3MgZGlyZWN0b3J5ICRXSUtJX0RJUl9JTlNULyIgXAorCQkJIiRXSUtJX0RJUl9OQU1FIGNvdWxkIG5vdCBiZSBkZWxldGVkIgorCQkjIERlbGV0ZSB0aGUgd2lraSdzIFNRTGl0ZSBkYXRhYmFzZS4KKwkJcm0gLWYgIiRUTVAvJERCX0ZJTEUiIHx8CisJCQllcnJvciAiRGF0YWJhc2UgJFRNUC8kREJfRklMRSBjb3VsZCBub3QgYmUgZGVsZXRlZC4iCisJZmkKKworCSMgRGVsZXRlIHRoZSB3aWtpJ3MgU1FMaXRlIGRhdGFiYXNlCisJcm0gLWYgIiRUTVAvJERCX0ZJTEUiIHx8IGVycm9yICJEYXRhYmFzZSAkVE1QLyREQl9GSUxFIGNvdWxkIG5vdCBiZSBkZWxldGVkLiIKKwlybSAtZiAiJEZJTEVTX0ZPTERFUi8kREJfRklMRSIKKwlybSAtcmYgIiRUTVAvJE1XX1ZFUlNJT04iCit9CmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC90L3Rlc3QtZ2l0bXcucGwgYi9jb250cmliL213LXRvLWdpdC90L3Rlc3QtZ2l0bXcucGwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGZmNzYyNQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvdGVzdC1naXRtdy5wbApAQCAtMCwwICsxLDIyNSBAQAorIyEvdXNyL2Jpbi9wZXJsIC13IC1zCisjIENvcHlyaWdodCAoQykgMjAxMgorIyAgICAgQ2hhcmxlcyBSb3Vzc2VsIDxjaGFybGVzLnJvdXNzZWxAZW5zaW1hZy5pbWFnLmZyPgorIyAgICAgU2ltb24gQ2F0aGVicmFzIDxzaW1vbi5jYXRoZWJyYXNAZW5zaW1hZy5pbWFnLmZyPgorIyAgICAgSnVsaWVuIEtoYXlhdCA8anVsaWVuLmtoYXlhdEBlbnNpbWFnLmltYWcuZnI+CisjICAgICBHdWlsbGF1bWUgU2FzZHkgPGd1aWxsYXVtZS5zYXNkeUBlbnNpbWFnLmltYWcuZnI+CisjICAgICBTaW1vbiBQZXJyYXQgPHNpbW9uLnBlcnJhdEBlbnNpbWFnLmltYWcuZnI+CisjIExpY2Vuc2U6IEdQTCB2MiBvciBsYXRlcgorCisjIFVzYWdlOgorIyAgICAgICAuL3Rlc3QtZ2l0bXcucGwgPGNvbW1hbmQ+IFthcmd1bWVudF0qCisjIEV4ZWN1dGUgaW4gdGVybWluYWwgdXNpbmcgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgYXMgZmlyc3QKKyMgcGFyYW1ldGVyLCBhbmQgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzIGFzIGZvbGxvd2luZyBwYXJhbWV0ZXJzCisjCisjIEV4YW1wbGU6CisjICAgICAuL3Rlc3QtZ2l0bXcucGwgImdldF9wYWdlIiBmb28gLgorIyB3aWxsIGNhbGwgPHdpa2lfZ2V0cGFnZT4gd2l0aCBhcmd1bWVudHMgPGZvbz4gYW5kIDwuPgorIworIyBBdmFpbGFibGUgZnVuY3Rpb25zIGFyZToKKyMgICAgICJnZXRfcGFnZSIKKyMgICAgICJkZWxldGVfcGFnZSIKKyMgICAgICJlZGl0X3BhZ2UiCisjICAgICAiZ2V0YWxscGFnZW5hbWUiCisKK3VzZSBNZWRpYVdpa2k6OkFQSTsKK3VzZSBHZXRvcHQ6Okxvbmc7Cit1c2UgZW5jb2RpbmcgJ3V0ZjgnOwordXNlIERhdGVUaW1lOjpGb3JtYXQ6OklTTzg2MDE7Cit1c2Ugb3BlbiAnOmVuY29kaW5nKHV0ZjgpJzsKK3VzZSBjb25zdGFudCBTTEFTSF9SRVBMQUNFTUVOVCA9PiAiJTJGIjsKKworI1BhcnNpbmcgb2YgdGhlIGNvbmZpZyBmaWxlCisKK215ICRjb25maWdmaWxlID0gIiRFTlZ7J0NVUlJfRElSJ30vdGVzdC5jb25maWciOworbXkgJWNvbmZpZzsKK29wZW4gbXkgJENPTkZJRywgIjwiLCAgJGNvbmZpZ2ZpbGUgb3IgZGllICJjYW4ndCBvcGVuICRjb25maWdmaWxlOiAkISI7Cit3aGlsZSAoPCRDT05GSUc+KQoreworCWNob21wOworCXMvIy4qLy87CisJcy9eXHMrLy87CisJcy9ccyskLy87CisJbmV4dCB1bmxlc3MgbGVuZ3RoOworCW15ICgka2V5LCAkdmFsdWUpID0gc3BsaXQgKC9ccyo9XHMqLywkXywgMik7CisJJGNvbmZpZ3ska2V5fSA9ICR2YWx1ZTsKKwlsYXN0IGlmICgka2V5IGVxICdMSUdIVFRQRCcgYW5kICR2YWx1ZSBlcSAnZmFsc2UnKTsKKwlsYXN0IGlmICgka2V5IGVxICdQT1JUJyk7Cit9CitjbG9zZSAkQ09ORklHIG9yIGRpZSAiY2FuJ3QgY2xvc2UgJGNvbmZpZ2ZpbGU6ICQhIjsKKworbXkgJHdpa2lfYWRkcmVzcyA9ICJodHRwOi8vJGNvbmZpZ3snU0VSVkVSX0FERFInfSIuIjoiLiIkY29uZmlneydQT1JUJ30iOworbXkgJHdpa2lfdXJsID0gIiR3aWtpX2FkZHJlc3MvJGNvbmZpZ3snV0lLSV9ESVJfTkFNRSd9L2FwaS5waHAiOworbXkgJHdpa2lfYWRtaW4gPSAiJGNvbmZpZ3snV0lLSV9BRE1JTid9IjsKK215ICR3aWtpX2FkbWluX3Bhc3MgPSAiJGNvbmZpZ3snV0lLSV9QQVNTVyd9IjsKK215ICRtdyA9IE1lZGlhV2lraTo6QVBJLT5uZXc7CiskbXctPntjb25maWd9LT57YXBpX3VybH0gPSAkd2lraV91cmw7CisKKworIyB3aWtpX2xvZ2luIDxuYW1lPiA8cGFzc3dvcmQ+CisjCisjIExvZ3MgdGhlIHVzZXIgd2l0aCA8bmFtZT4gYW5kIDxwYXNzd29yZD4gaW4gdGhlIGdsb2JhbCB2YXJpYWJsZQorIyBvZiB0aGUgbWVkaWF3aWtpICRtdworc3ViIHdpa2lfbG9naW4geworCSRtdy0+bG9naW4oIHsgbGduYW1lID0+ICIkX1swXSIsbGdwYXNzd29yZCA9PiAiJF9bMV0iIH0gKQorCXx8IGRpZSAiZ2V0cGFnZTogbG9naW4gZmFpbGVkIjsKK30KKworIyB3aWtpX2dldHBhZ2UgPHdpa2lfcGFnZT4gPGRlc3RfcGF0aD4KKyMKKyMgZmV0Y2ggYSBwYWdlIDx3aWtpX3BhZ2U+IGZyb20gdGhlIHdpa2kgcmVmZXJlbmNlZCBpbiB0aGUgZ2xvYmFsIHZhcmlhYmxlCisjICRtdyBhbmQgY29waWVzIGl0cyBjb250ZW50IGluIGRpcmVjdG9yeSBkZXN0X3BhdGgKK3N1YiB3aWtpX2dldHBhZ2UgeworCW15ICRwYWdlbmFtZSA9ICRfWzBdOworCW15ICRkZXN0ZGlyID0gJF9bMV07CisKKwlteSAkcGFnZSA9ICRtdy0+Z2V0X3BhZ2UoIHsgdGl0bGUgPT4gJHBhZ2VuYW1lIH0gKTsKKwlpZiAoIWRlZmluZWQoJHBhZ2UpKSB7CisJCWRpZSAiZ2V0cGFnZTogd2lraSBkb2VzIG5vdCBleGlzdCI7CisJfQorCisJbXkgJGNvbnRlbnQgPSAkcGFnZS0+eycqJ307CisJaWYgKCFkZWZpbmVkKCRjb250ZW50KSkgeworCQlkaWUgImdldHBhZ2U6IHBhZ2UgZG9lcyBub3QgZXhpc3QiOworCX0KKworCSRwYWdlbmFtZT0kcGFnZS0+eyd0aXRsZSd9OworCSMgUmVwbGFjZSBzcGFjZXMgYnkgdW5kZXJzY29yZSBpbiB0aGUgcGFnZSBuYW1lCisJJHBhZ2VuYW1lID1+IHMvIC9fL2c7CisJJHBhZ2VuYW1lID1+IHMvXC8vJTJGL2c7CisJb3BlbihteSAkZmlsZSwgIj4kZGVzdGRpci8kcGFnZW5hbWUubXciKTsKKwlwcmludCAkZmlsZSAiJGNvbnRlbnQiOworCWNsb3NlICgkZmlsZSk7CisKK30KKworIyB3aWtpX2RlbGV0ZV9wYWdlIDxwYWdlX25hbWU+CisjCisjIGRlbGV0ZSB0aGUgcGFnZSB3aXRoIG5hbWUgPHBhZ2VfbmFtZT4gZnJvbSB0aGUgd2lraSByZWZlcmVuY2VkCisjIGluIHRoZSBnbG9iYWwgdmFyaWFibGUgJG13CitzdWIgd2lraV9kZWxldGVfcGFnZSB7CisJbXkgJHBhZ2VuYW1lID0gJF9bMF07CisKKwlteSAkZXhpc3Q9JG13LT5nZXRfcGFnZSh7dGl0bGUgPT4gJHBhZ2VuYW1lfSk7CisKKwlpZiAoZGVmaW5lZCgkZXhpc3QtPnsnKid9KSl7CisJCSRtdy0+ZWRpdCh7IGFjdGlvbiA9PiAnZGVsZXRlJywKKwkJCQl0aXRsZSA9PiAkcGFnZW5hbWV9KQorCQl8fCBkaWUgJG13LT57ZXJyb3J9LT57Y29kZX0gLiAiOiAiIC4gJG13LT57ZXJyb3J9LT57ZGV0YWlsc307CisJfSBlbHNlIHsKKwkJZGllICJubyBwYWdlIHdpdGggc3VjaCBuYW1lIGZvdW5kOiAkcGFnZW5hbWVcbiI7CisJfQorfQorCisjIHdpa2lfZWRpdHBhZ2UgPHdpa2lfcGFnZT4gPHdpa2lfY29udGVudD4gPHdpa2lfYXBwZW5kPiBbLWM9PGNhdGVnb3J5Pl0gWy1zPTxzdW1tYXJ5Pl0KKyMKKyMgRWRpdCBhIHBhZ2UgbmFtZWQgPHdpa2lfcGFnZT4gd2l0aCBjb250ZW50IDx3aWtpX2NvbnRlbnQ+IG9uIHRoZSB3aWtpCisjIHJlZmVyZW5jZWQgd2l0aCB0aGUgZ2xvYmFsIHZhcmlhYmxlICRtdworIyBJZiA8d2lraV9hcHBlbmQ+ID09IHRydWUgOiBhcHBlbmQgPHdpa2lfY29udGVudD4gYXQgdGhlIGVuZCBvZiB0aGUgYWN0dWFsCisjIGNvbnRlbnQgb2YgdGhlIHBhZ2UgPHdpa2lfcGFnZT4KKyMgSWYgPHdpa19wYWdlPiBkb2Vzbid0IGV4aXN0LCB0aGF0IHBhZ2UgaXMgY3JlYXRlZCB3aXRoIHRoZSA8d2lraV9jb250ZW50Pgorc3ViIHdpa2lfZWRpdHBhZ2UgeworCW15ICR3aWtpX3BhZ2UgPSAkX1swXTsKKwlteSAkd2lraV9jb250ZW50ID0gJF9bMV07CisJbXkgJHdpa2lfYXBwZW5kID0gJF9bMl07CisJbXkgJHN1bW1hcnkgPSAiIjsKKwlteSAoJHN1bW0sICRjYXQpID0gKCk7CisJR2V0T3B0aW9ucygncz1zJyA9PiBcJHN1bW0sICdjPXMnID0+IFwkY2F0KTsKKworCW15ICRhcHBlbmQgPSAwOworCWlmIChkZWZpbmVkKCR3aWtpX2FwcGVuZCkgJiYgJHdpa2lfYXBwZW5kIGVxICd0cnVlJykgeworCQkkYXBwZW5kPTE7CisJfQorCisJbXkgJHByZXZpb3VzX3RleHQgPSIiOworCisJaWYgKCRhcHBlbmQpIHsKKwkJbXkgJHJlZiA9ICRtdy0+Z2V0X3BhZ2UoIHsgdGl0bGUgPT4gJHdpa2lfcGFnZSB9ICk7CisJCSRwcmV2aW91c190ZXh0ID0gJHJlZi0+eycqJ307CisJfQorCisJbXkgJHRleHQgPSAkd2lraV9jb250ZW50OworCWlmIChkZWZpbmVkKCRwcmV2aW91c190ZXh0KSkgeworCQkkdGV4dD0iJHByZXZpb3VzX3RleHQkdGV4dCI7CisJfQorCisJIyBFdmVudHVhbGx5LCBhZGQgdGhpcyBwYWdlIHRvIGEgY2F0ZWdvcnkuCisJaWYgKGRlZmluZWQoJGNhdCkpIHsKKwkJbXkgJGNhdGVnb3J5X25hbWU9IltbQ2F0ZWdvcnk6JGNhdF1dIjsKKwkJJHRleHQ9IiR0ZXh0XG4gJGNhdGVnb3J5X25hbWUiOworCX0KKwlpZihkZWZpbmVkKCRzdW1tKSl7CisJCSRzdW1tYXJ5PSRzdW1tOworCX0KKworCSRtdy0+ZWRpdCggeyBhY3Rpb24gPT4gJ2VkaXQnLCB0aXRsZSA9PiAkd2lraV9wYWdlLCBzdW1tYXJ5ID0+ICRzdW1tYXJ5LCB0ZXh0ID0+ICIkdGV4dCJ9ICk7Cit9CisKKyMgd2lraV9nZXRhbGxwYWdlbmFtZSBbPGNhdGVnb3J5Pl0KKyMKKyMgRmV0Y2ggYWxsIHBhZ2VzIG9mIHRoZSB3aWtpIHJlZmVyZW5jZWQgYnkgdGhlIGdsb2JhbCB2YXJpYWJsZSAkbXcKKyMgYW5kIHByaW50IHRoZSBuYW1lcyBvZiBlYWNoIG9uZSBpbiB0aGUgZmlsZSBhbGwudHh0IHdpdGggYSBuZXcgbGluZQorIyAoIlxuIikgYmV0d2VlbiB0aGVzZS4KKyMgSWYgdGhlIGFyZ3VtZW50IDxjYXRlZ29yeT4gaXMgZGVmaW5lZCwgdGhlbiB0aGlzIGZ1bmN0aW9uIGdldCBvbmx5IHRoZSBwYWdlcworIyBiZWxvbmdpbmcgdG8gPGNhdGVnb3J5Pi4KK3N1YiB3aWtpX2dldGFsbHBhZ2VuYW1lIHsKKwkjIGZldGNoIHRoZSBwYWdlcyBvZiB0aGUgd2lraQorCWlmIChkZWZpbmVkKCRfWzBdKSkgeworCQlteSAkbXdfcGFnZXMgPSAkbXctPmxpc3QgKCB7IGFjdGlvbiA9PiAncXVlcnknLAorCQkJCWxpc3QgPT4gJ2NhdGVnb3J5bWVtYmVycycsCisJCQkJY210aXRsZSA9PiAiQ2F0ZWdvcnk6JF9bMF0iLAorCQkJCWNtbmFtZXNwYWNlID0+IDAsCisJCQkJY21saW1pdCA9PiA1MDAgfSwKKwkJKQorCQl8fCBkaWUgJG13LT57ZXJyb3J9LT57Y29kZX0uIjogIi4kbXctPntlcnJvcn0tPntkZXRhaWxzfTsKKwkJb3BlbihteSAkZmlsZSwgIj5hbGwudHh0Iik7CisJCWZvcmVhY2ggbXkgJHBhZ2UgKEB7JG13X3BhZ2VzfSkgeworCQkJcHJpbnQgJGZpbGUgIiRwYWdlLT57dGl0bGV9XG4iOworCQl9CisJCWNsb3NlICgkZmlsZSk7CisKKwl9IGVsc2UgeworCQlteSAkbXdfcGFnZXMgPSAkbXctPmxpc3QoeworCQkJCWFjdGlvbiA9PiAncXVlcnknLAorCQkJCWxpc3QgPT4gJ2FsbHBhZ2VzJywKKwkJCQlhcGxpbWl0ID0+IDUwMCwKKwkJCX0pCisJCXx8IGRpZSAkbXctPntlcnJvcn0tPntjb2RlfS4iOiAiLiRtdy0+e2Vycm9yfS0+e2RldGFpbHN9OworCQlvcGVuKG15ICRmaWxlLCAiPmFsbC50eHQiKTsKKwkJZm9yZWFjaCBteSAkcGFnZSAoQHskbXdfcGFnZXN9KSB7CisJCQlwcmludCAkZmlsZSAiJHBhZ2UtPnt0aXRsZX1cbiI7CisJCX0KKwkJY2xvc2UgKCRmaWxlKTsKKwl9Cit9CisKK3N1YiB3aWtpX3VwbG9hZF9maWxlIHsKKwlteSAkZmlsZV9uYW1lID0gJF9bMF07CisJbXkgJHJlc3VsdGF0ID0gJG13LT5lZGl0ICggeworCQlhY3Rpb24gPT4gJ3VwbG9hZCcsCisJCWZpbGVuYW1lID0+ICRmaWxlX25hbWUsCisJCWNvbW1lbnQgPT4gJ3VwbG9hZCBhIGZpbGUnLAorCQlmaWxlID0+IFsgJGZpbGVfbmFtZSBdLAorCQlpZ25vcmV3YXJuaW5ncz0+MSwKKwl9LCB7CisJCXNraXBfZW5jb2RpbmcgPT4gMQorCX0gKSB8fCBkaWUgJG13LT57ZXJyb3J9LT57Y29kZX0gLiAnIDogJyAuICRtdy0+e2Vycm9yfS0+e2RldGFpbHN9OworfQorCisKKworIyBNYWluIHBhcnQgb2YgdGhpcyBzY3JpcHQ6IHBhcnNlIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzCisjIGFuZCBzZWxlY3Qgd2hpY2ggZnVuY3Rpb24gdG8gZXhlY3V0ZQorbXkgJGZjdF90b19jYWxsID0gc2hpZnQ7CisKK3dpa2lfbG9naW4oJHdpa2lfYWRtaW4sICR3aWtpX2FkbWluX3Bhc3MpOworCitteSAlZnVuY3Rpb25zX3RvX2NhbGwgPSBxdygKKwl1cGxvYWRfZmlsZSAgICB3aWtpX3VwbG9hZF9maWxlCisJZ2V0X3BhZ2UgICAgICAgd2lraV9nZXRwYWdlCisJZGVsZXRlX3BhZ2UgICAgd2lraV9kZWxldGVfcGFnZQorCWVkaXRfcGFnZSAgICAgIHdpa2lfZWRpdHBhZ2UKKwlnZXRhbGxwYWdlbmFtZSB3aWtpX2dldGFsbHBhZ2VuYW1lCispOworZGllICIkMCBFUlJPUjogd3JvbmcgYXJndW1lbnQiIHVubGVzcyBleGlzdHMgJGZ1bmN0aW9uc190b19jYWxseyRmY3RfdG9fY2FsbH07CismeyRmdW5jdGlvbnNfdG9fY2FsbHskZmN0X3RvX2NhbGx9fShAQVJHVik7CmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC90L3Rlc3QuY29uZmlnIGIvY29udHJpYi9tdy10by1naXQvdC90ZXN0LmNvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NThiMzdiCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9tdy10by1naXQvdC90ZXN0LmNvbmZpZwpAQCAtMCwwICsxLDM1IEBACisjIE5hbWUgb2YgdGhlIHdlYiBzZXJ2ZXIncyBkaXJlY3RvcnkgZGVkaWNhdGVkIHRvIHRoZSB3aWtpIGlzIFdJS0lfRElSX05BTUUKK1dJS0lfRElSX05BTUU9d2lraQorCisjIExvZ2luIGFuZCBwYXNzd29yZCBvZiB0aGUgd2lraSdzIGFkbWluCitXSUtJX0FETUlOPVdpa2lBZG1pbgorV0lLSV9QQVNTVz1BZG1pblBhc3MKKworIyBBZGRyZXNzIG9mIHRoZSB3ZWIgc2VydmVyCitTRVJWRVJfQUREUj1sb2NhbGhvc3QKKworIyBTUUxpdGUgZGF0YWJhc2Ugb2YgdGhlIHdpa2ksIG5hbWVkIERCX0ZJTEUsIGlzIGxvY2F0ZWQgaW4gVE1QCitUTVA9L3RtcAorREJfRklMRT13aWtpZGIuc3FsaXRlCisKKyMgSWYgTElHSFRUUEQgaXMgbm90IHNldCB0byB0cnVlLCB0aGUgc2NyaXB0IHdpbGwgdXNlIHRoZSBkZWZhdXQKKyMgd2ViIHNlcnZlciBydW5uaW5nIGluIFdJS0lfRElSX0lOU1QuCitXSUtJX0RJUl9JTlNUPS92YXIvd3d3CisKKyMgSWYgTElHSFRUUEQgaXMgc2V0IHRvIHRydWUsIHRoZSBzY3JpcHQgd2lsbCB1c2UgTGlnaHR0cGQgdG8gcnVuCisjIHRoZSB3aWtpLgorTElHSFRUUEQ9dHJ1ZQorCisjIFRoZSB2YXJpYWJsZXMgYmVsb3cgYXJlIHVzZWZ1bCBvbmx5IGlmIExJR0hUVFBEIGlzIHNldCB0byB0cnVlLgorUE9SVD0xMjM0CitQSFBfRElSPS91c3IvYmluCitMSUdIVFRQRF9ESVI9L3Vzci9zYmluCitXRUI9V0VCCitXRUJfVE1QPSRXRUIvdG1wCitXRUJfV1dXPSRXRUIvd3d3CisKKyMgVGhlIHZhcmlhYmxlcyBiZWxvdyBhcmUgdXNlZCBieSB0aGUgc2NyaXB0IHRvIGluc3RhbGwgYSB3aWtpLgorIyBZb3Ugc2hvdWxkIG5vdCBtb2RpZnkgdGhlc2UgdW5sZXNzIHlvdSBhcmUgbW9kaWZ5aW5nIHRoZSBzY3JpcHQgaXRzZWxmLgorTVdfVkVSU0lPTj1tZWRpYXdpa2ktMS4xOS4wCitGSUxFU19GT0xERVI9aW5zdGFsbC13aWtpCitEQl9JTlNUQUxMX1NDUklQVD1kYl9pbnN0YWxsLnBocApkaWZmIC0tZ2l0IGEvY29udHJpYi9wNGltcG9ydC9naXQtcDRpbXBvcnQucHkgYi9jb250cmliL3A0aW1wb3J0L2dpdC1wNGltcG9ydC5weQppbmRleCBiNmU1MzRiLi41OTNkNmEwIDEwMDY0NAotLS0gYS9jb250cmliL3A0aW1wb3J0L2dpdC1wNGltcG9ydC5weQorKysgYi9jb250cmliL3A0aW1wb3J0L2dpdC1wNGltcG9ydC5weQpAQCAtMTQsNiArMTQsMTEgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgZ2V0b3B0CiAKK2lmIHN5cy5oZXh2ZXJzaW9uIDwgMHgwMjAyMDAwMDoKKyAgICMgVGhlIGJlaGF2aW9yIG9mIHRoZSBtYXJzaGFsIG1vZHVsZSBjaGFuZ2VkIHNpZ25pZmljYW50bHkgaW4gMi4yCisgICBzeXMuc3RkZXJyLndyaXRlKCJnaXQtcDRpbXBvcnQucHk6IHJlcXVpcmVzIFB5dGhvbiAyLjIgb3IgbGF0ZXIuXG4iKQorICAgc3lzLmV4aXQoMSkKKwogZnJvbSBzaWduYWwgaW1wb3J0IHNpZ25hbCwgXAogICAgU0lHUElQRSwgU0lHSU5ULCBTSUdfREZMLCBcCiAgICBkZWZhdWx0X2ludF9oYW5kbGVyCmRpZmYgLS1naXQgYS9jb250cmliL3JlbW90ZS1oZWxwZXJzL01ha2VmaWxlIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzkxNjFkCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy9NYWtlZmlsZQpAQCAtMCwwICsxLDE0IEBACitURVNUUyA6PSAkKHdpbGRjYXJkIHRlc3QqLnNoKQorCitleHBvcnQgVCA6PSAkKGFkZHByZWZpeCAkKENVUkRJUikvLCQoVEVTVFMpKQorZXhwb3J0IE1BS0UgOj0gJChNQUtFKSAtZQorZXhwb3J0IFBBVEggOj0gJChDVVJESVIpOiQoUEFUSCkKK2V4cG9ydCBURVNUX0xJTlQgOj0gdGVzdC1saW50LWV4ZWN1dGFibGUgdGVzdC1saW50LXNoZWxsLXN5bnRheAorCit0ZXN0OgorCSQoTUFLRSkgLUMgLi4vLi4vdCAkQAorCiskKFRFU1RTKToKKwkkKE1BS0UpIC1DIC4uLy4uL3QgJChDVVJESVIpLyRACisKKy5QSE9OWTogJChURVNUUykKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvZ2l0LXJlbW90ZS1ienIgYi9jb250cmliL3JlbW90ZS1oZWxwZXJzL2dpdC1yZW1vdGUtYnpyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjEwMzAwYzYKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3JlbW90ZS1oZWxwZXJzL2dpdC1yZW1vdGUtYnpyCkBAIC0wLDAgKzEsOTU5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDEyIEZlbGlwZSBDb250cmVyYXMKKyMKKworIworIyBKdXN0IGNvcHkgdG8geW91ciB+L2Jpbiwgb3IgYW55d2hlcmUgaW4geW91ciAkUEFUSC4KKyMgVGhlbiB5b3UgY2FuIGNsb25lIHdpdGg6CisjICUgZ2l0IGNsb25lIGJ6cjo6L3BhdGgvdG8vYnpyL3JlcG8vb3IvdXJsCisjCisjIEZvciBleGFtcGxlOgorIyAlIGdpdCBjbG9uZSBienI6OiRIT01FL215cmVwbworIyBvcgorIyAlIGdpdCBjbG9uZSBienI6OmxwOm15cmVwbworIworIyBJZiB5b3Ugd2FudCB0byBzcGVjaWZ5IHdoaWNoIGJyYW5jaGVzIHlvdSB3YW50IHRyYWNrIChwZXIgcmVwbyk6CisjIGdpdCBjb25maWcgcmVtb3RlLWJ6ci5icmFuY2hlcyAndHJ1bmssIGRldmVsLCB0ZXN0JworIworCitpbXBvcnQgc3lzCisKK2ltcG9ydCBienJsaWIKK2lmIGhhc2F0dHIoYnpybGliLCAiaW5pdGlhbGl6ZSIpOgorICAgIGJ6cmxpYi5pbml0aWFsaXplKCkKKworaW1wb3J0IGJ6cmxpYi5wbHVnaW4KK2J6cmxpYi5wbHVnaW4ubG9hZF9wbHVnaW5zKCkKKworaW1wb3J0IGJ6cmxpYi5nZW5lcmF0ZV9pZHMKK2ltcG9ydCBienJsaWIudHJhbnNwb3J0CitpbXBvcnQgYnpybGliLmVycm9ycworaW1wb3J0IGJ6cmxpYi51aQoraW1wb3J0IGJ6cmxpYi51cmx1dGlscworaW1wb3J0IGJ6cmxpYi5icmFuY2gKKworaW1wb3J0IHN5cworaW1wb3J0IG9zCitpbXBvcnQganNvbgoraW1wb3J0IHJlCitpbXBvcnQgU3RyaW5nSU8KK2ltcG9ydCBhdGV4aXQsIHNodXRpbCwgaGFzaGxpYiwgdXJscGFyc2UsIHN1YnByb2Nlc3MKKworTkFNRV9SRSA9IHJlLmNvbXBpbGUoJ14oW148Pl0rKScpCitBVVRIT1JfUkUgPSByZS5jb21waWxlKCdeKFtePD5dKz8pPyA/PChbXjw+XSopPiQnKQorRU1BSUxfUkUgPSByZS5jb21waWxlKCdeKFtePD5dK1teIFxcXHQ8Pl0pP1xcYig/OlsgXFx0PD5dKj8pXFxiKFteIFxcdDw+XStAW14gXFx0PD5dKyknKQorUkFXX0FVVEhPUl9SRSA9IHJlLmNvbXBpbGUoJ14oXHcrKSAoLispPyA8KC4qKT4gKFxkKykgKFsrLV1cZCspJykKKworZGVmIGRpZShtc2csICphcmdzKToKKyAgICBzeXMuc3RkZXJyLndyaXRlKCdFUlJPUjogJXNcbicgJSAobXNnICUgYXJncykpCisgICAgc3lzLmV4aXQoMSkKKworZGVmIHdhcm4obXNnLCAqYXJncyk6CisgICAgc3lzLnN0ZGVyci53cml0ZSgnV0FSTklORzogJXNcbicgJSAobXNnICUgYXJncykpCisKK2RlZiBnaXR0eih0eik6CisgICAgcmV0dXJuICclKzAzZCUwMmQnICUgKHR6IC8gMzYwMCwgdHogJSAzNjAwIC8gNjApCisKK2RlZiBnZXRfY29uZmlnKGNvbmZpZyk6CisgICAgY21kID0gWydnaXQnLCAnY29uZmlnJywgJy0tZ2V0JywgY29uZmlnXQorICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICBvdXRwdXQsIF8gPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICByZXR1cm4gb3V0cHV0CisKK2NsYXNzIE1hcmtzOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisgICAgICAgIHNlbGYudGlwcyA9IHt9CisgICAgICAgIHNlbGYubWFya3MgPSB7fQorICAgICAgICBzZWxmLnJldl9tYXJrcyA9IHt9CisgICAgICAgIHNlbGYubGFzdF9tYXJrID0gMAorICAgICAgICBzZWxmLmxvYWQoKQorCisgICAgZGVmIGxvYWQoc2VsZik6CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLnBhdGgpOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgdG1wID0ganNvbi5sb2FkKG9wZW4oc2VsZi5wYXRoKSkKKyAgICAgICAgc2VsZi50aXBzID0gdG1wWyd0aXBzJ10KKyAgICAgICAgc2VsZi5tYXJrcyA9IHRtcFsnbWFya3MnXQorICAgICAgICBzZWxmLmxhc3RfbWFyayA9IHRtcFsnbGFzdC1tYXJrJ10KKworICAgICAgICBmb3IgcmV2LCBtYXJrIGluIHNlbGYubWFya3MuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLnJldl9tYXJrc1ttYXJrXSA9IHJldgorCisgICAgZGVmIGRpY3Qoc2VsZik6CisgICAgICAgIHJldHVybiB7ICd0aXBzJzogc2VsZi50aXBzLCAnbWFya3MnOiBzZWxmLm1hcmtzLCAnbGFzdC1tYXJrJyA6IHNlbGYubGFzdF9tYXJrIH0KKworICAgIGRlZiBzdG9yZShzZWxmKToKKyAgICAgICAganNvbi5kdW1wKHNlbGYuZGljdCgpLCBvcGVuKHNlbGYucGF0aCwgJ3cnKSkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyKHNlbGYuZGljdCgpKQorCisgICAgZGVmIGZyb21fcmV2KHNlbGYsIHJldik6CisgICAgICAgIHJldHVybiBzZWxmLm1hcmtzW3Jldl0KKworICAgIGRlZiB0b19yZXYoc2VsZiwgbWFyayk6CisgICAgICAgIHJldHVybiBzdHIoc2VsZi5yZXZfbWFya3NbbWFya10pCisKKyAgICBkZWYgbmV4dF9tYXJrKHNlbGYpOgorICAgICAgICBzZWxmLmxhc3RfbWFyayArPSAxCisgICAgICAgIHJldHVybiBzZWxmLmxhc3RfbWFyaworCisgICAgZGVmIGdldF9tYXJrKHNlbGYsIHJldik6CisgICAgICAgIHNlbGYubGFzdF9tYXJrICs9IDEKKyAgICAgICAgc2VsZi5tYXJrc1tyZXZdID0gc2VsZi5sYXN0X21hcmsKKyAgICAgICAgcmV0dXJuIHNlbGYubGFzdF9tYXJrCisKKyAgICBkZWYgaXNfbWFya2VkKHNlbGYsIHJldik6CisgICAgICAgIHJldHVybiByZXYgaW4gc2VsZi5tYXJrcworCisgICAgZGVmIG5ld19tYXJrKHNlbGYsIHJldiwgbWFyayk6CisgICAgICAgIHNlbGYubWFya3NbcmV2XSA9IG1hcmsKKyAgICAgICAgc2VsZi5yZXZfbWFya3NbbWFya10gPSByZXYKKyAgICAgICAgc2VsZi5sYXN0X21hcmsgPSBtYXJrCisKKyAgICBkZWYgZ2V0X3RpcChzZWxmLCBicmFuY2gpOgorICAgICAgICByZXR1cm4gc2VsZi50aXBzLmdldChicmFuY2gsIE5vbmUpCisKKyAgICBkZWYgc2V0X3RpcChzZWxmLCBicmFuY2gsIHRpcCk6CisgICAgICAgIHNlbGYudGlwc1ticmFuY2hdID0gdGlwCisKK2NsYXNzIFBhcnNlcjoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXBvKToKKyAgICAgICAgc2VsZi5yZXBvID0gcmVwbworICAgICAgICBzZWxmLmxpbmUgPSBzZWxmLmdldF9saW5lKCkKKworICAgIGRlZiBnZXRfbGluZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHN5cy5zdGRpbi5yZWFkbGluZSgpLnN0cmlwKCkKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpKToKKyAgICAgICAgcmV0dXJuIHNlbGYubGluZS5zcGxpdCgpW2ldCisKKyAgICBkZWYgY2hlY2soc2VsZiwgd29yZCk6CisgICAgICAgIHJldHVybiBzZWxmLmxpbmUuc3RhcnRzd2l0aCh3b3JkKQorCisgICAgZGVmIGVhY2hfYmxvY2soc2VsZiwgc2VwYXJhdG9yKToKKyAgICAgICAgd2hpbGUgc2VsZi5saW5lICE9IHNlcGFyYXRvcjoKKyAgICAgICAgICAgIHlpZWxkIHNlbGYubGluZQorICAgICAgICAgICAgc2VsZi5saW5lID0gc2VsZi5nZXRfbGluZSgpCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmVhY2hfYmxvY2soJycpCisKKyAgICBkZWYgbmV4dChzZWxmKToKKyAgICAgICAgc2VsZi5saW5lID0gc2VsZi5nZXRfbGluZSgpCisgICAgICAgIGlmIHNlbGYubGluZSA9PSAnZG9uZSc6CisgICAgICAgICAgICBzZWxmLmxpbmUgPSBOb25lCisKKyAgICBkZWYgZ2V0X21hcmsoc2VsZik6CisgICAgICAgIGkgPSBzZWxmLmxpbmUuaW5kZXgoJzonKSArIDEKKyAgICAgICAgcmV0dXJuIGludChzZWxmLmxpbmVbaTpdKQorCisgICAgZGVmIGdldF9kYXRhKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5jaGVjaygnZGF0YScpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgaSA9IHNlbGYubGluZS5pbmRleCgnICcpICsgMQorICAgICAgICBzaXplID0gaW50KHNlbGYubGluZVtpOl0pCisgICAgICAgIHJldHVybiBzeXMuc3RkaW4ucmVhZChzaXplKQorCisgICAgZGVmIGdldF9hdXRob3Ioc2VsZik6CisgICAgICAgIG0gPSBSQVdfQVVUSE9SX1JFLm1hdGNoKHNlbGYubGluZSkKKyAgICAgICAgaWYgbm90IG06CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBfLCBuYW1lLCBlbWFpbCwgZGF0ZSwgdHogPSBtLmdyb3VwcygpCisgICAgICAgIGNvbW1pdHRlciA9ICclcyA8JXM+JyAlIChuYW1lLCBlbWFpbCkKKyAgICAgICAgdHogPSBpbnQodHopCisgICAgICAgIHR6ID0gKCh0eiAvIDEwMCkgKiAzNjAwKSArICgodHogJSAxMDApICogNjApCisgICAgICAgIHJldHVybiAoY29tbWl0dGVyLCBpbnQoZGF0ZSksIHR6KQorCitkZWYgcmV2X3RvX21hcmsocmV2KToKKyAgICBnbG9iYWwgbWFya3MKKyAgICByZXR1cm4gbWFya3MuZnJvbV9yZXYocmV2KQorCitkZWYgbWFya190b19yZXYobWFyayk6CisgICAgZ2xvYmFsIG1hcmtzCisgICAgcmV0dXJuIG1hcmtzLnRvX3JldihtYXJrKQorCitkZWYgZml4dXBfdXNlcih1c2VyKToKKyAgICBuYW1lID0gbWFpbCA9IE5vbmUKKyAgICB1c2VyID0gdXNlci5yZXBsYWNlKCciJywgJycpCisgICAgbSA9IEFVVEhPUl9SRS5tYXRjaCh1c2VyKQorICAgIGlmIG06CisgICAgICAgIG5hbWUgPSBtLmdyb3VwKDEpCisgICAgICAgIG1haWwgPSBtLmdyb3VwKDIpLnN0cmlwKCkKKyAgICBlbHNlOgorICAgICAgICBtID0gRU1BSUxfUkUubWF0Y2godXNlcikKKyAgICAgICAgaWYgbToKKyAgICAgICAgICAgIG5hbWUgPSBtLmdyb3VwKDEpCisgICAgICAgICAgICBtYWlsID0gbS5ncm91cCgyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbSA9IE5BTUVfUkUubWF0Y2godXNlcikKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgbmFtZSA9IG0uZ3JvdXAoMSkuc3RyaXAoKQorCisgICAgaWYgbm90IG5hbWU6CisgICAgICAgIG5hbWUgPSAndW5rbm93bicKKyAgICBpZiBub3QgbWFpbDoKKyAgICAgICAgbWFpbCA9ICdVbmtub3duJworCisgICAgcmV0dXJuICclcyA8JXM+JyAlIChuYW1lLCBtYWlsKQorCitkZWYgZ2V0X2ZpbGVjaGFuZ2VzKGN1ciwgcHJldik6CisgICAgbW9kaWZpZWQgPSB7fQorICAgIHJlbW92ZWQgPSB7fQorCisgICAgY2hhbmdlcyA9IGN1ci5jaGFuZ2VzX2Zyb20ocHJldikKKworICAgIGRlZiB1KHMpOgorICAgICAgICByZXR1cm4gcy5lbmNvZGUoJ3V0Zi04JykKKworICAgIGZvciBwYXRoLCBmaWQsIGtpbmQgaW4gY2hhbmdlcy5hZGRlZDoKKyAgICAgICAgbW9kaWZpZWRbdShwYXRoKV0gPSBmaWQKKyAgICBmb3IgcGF0aCwgZmlkLCBraW5kIGluIGNoYW5nZXMucmVtb3ZlZDoKKyAgICAgICAgcmVtb3ZlZFt1KHBhdGgpXSA9IE5vbmUKKyAgICBmb3IgcGF0aCwgZmlkLCBraW5kLCBtb2QsIF8gaW4gY2hhbmdlcy5tb2RpZmllZDoKKyAgICAgICAgbW9kaWZpZWRbdShwYXRoKV0gPSBmaWQKKyAgICBmb3Igb2xkcGF0aCwgbmV3cGF0aCwgZmlkLCBraW5kLCBtb2QsIF8gaW4gY2hhbmdlcy5yZW5hbWVkOgorICAgICAgICByZW1vdmVkW3Uob2xkcGF0aCldID0gTm9uZQorICAgICAgICBpZiBraW5kID09ICdkaXJlY3RvcnknOgorICAgICAgICAgICAgbHN0ID0gY3VyLmxpc3RfZmlsZXMoZnJvbV9kaXI9bmV3cGF0aCwgcmVjdXJzaXZlPVRydWUpCisgICAgICAgICAgICBmb3IgcGF0aCwgZmlsZV9jbGFzcywga2luZCwgZmlkLCBlbnRyeSBpbiBsc3Q6CisgICAgICAgICAgICAgICAgaWYga2luZCAhPSAnZGlyZWN0b3J5JzoKKyAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRbdShuZXdwYXRoICsgJy8nICsgcGF0aCldID0gZmlkCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtb2RpZmllZFt1KG5ld3BhdGgpXSA9IGZpZAorCisgICAgcmV0dXJuIG1vZGlmaWVkLCByZW1vdmVkCisKK2RlZiBleHBvcnRfZmlsZXModHJlZSwgZmlsZXMpOgorICAgIGdsb2JhbCBtYXJrcywgZmlsZW5vZGVzCisKKyAgICBmaW5hbCA9IFtdCisgICAgZm9yIHBhdGgsIGZpZCBpbiBmaWxlcy5pdGVyaXRlbXMoKToKKyAgICAgICAga2luZCA9IHRyZWUua2luZChmaWQpCisKKyAgICAgICAgaCA9IHRyZWUuZ2V0X2ZpbGVfc2hhMShmaWQpCisKKyAgICAgICAgaWYga2luZCA9PSAnc3ltbGluayc6CisgICAgICAgICAgICBkID0gdHJlZS5nZXRfc3ltbGlua190YXJnZXQoZmlkKQorICAgICAgICAgICAgbW9kZSA9ICcxMjAwMDAnCisgICAgICAgIGVsaWYga2luZCA9PSAnZmlsZSc6CisKKyAgICAgICAgICAgIGlmIHRyZWUuaXNfZXhlY3V0YWJsZShmaWQpOgorICAgICAgICAgICAgICAgIG1vZGUgPSAnMTAwNzU1JworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtb2RlID0gJzEwMDY0NCcKKworICAgICAgICAgICAgIyBpcyB0aGUgYmxvYiBhbHJlYWR5IGV4cG9ydGVkPworICAgICAgICAgICAgaWYgaCBpbiBmaWxlbm9kZXM6CisgICAgICAgICAgICAgICAgbWFyayA9IGZpbGVub2Rlc1toXQorICAgICAgICAgICAgICAgIGZpbmFsLmFwcGVuZCgobW9kZSwgbWFyaywgcGF0aCkpCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgZCA9IHRyZWUuZ2V0X2ZpbGVfdGV4dChmaWQpCisgICAgICAgIGVsaWYga2luZCA9PSAnZGlyZWN0b3J5JzoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkaWUoIlVuaGFuZGxlZCBraW5kICclcycgZm9yIHBhdGggJyVzJyIgJSAoa2luZCwgcGF0aCkpCisKKyAgICAgICAgbWFyayA9IG1hcmtzLm5leHRfbWFyaygpCisgICAgICAgIGZpbGVub2Rlc1toXSA9IG1hcmsKKworICAgICAgICBwcmludCAiYmxvYiIKKyAgICAgICAgcHJpbnQgIm1hcmsgOiV1IiAlIG1hcmsKKyAgICAgICAgcHJpbnQgImRhdGEgJWQiICUgbGVuKGQpCisgICAgICAgIHByaW50IGQKKworICAgICAgICBmaW5hbC5hcHBlbmQoKG1vZGUsIG1hcmssIHBhdGgpKQorCisgICAgcmV0dXJuIGZpbmFsCisKK2RlZiBleHBvcnRfYnJhbmNoKHJlcG8sIG5hbWUpOgorICAgIGdsb2JhbCBwcmVmaXgKKworICAgIHJlZiA9ICclcy9oZWFkcy8lcycgJSAocHJlZml4LCBuYW1lKQorICAgIHRpcCA9IG1hcmtzLmdldF90aXAobmFtZSkKKworICAgIGJyYW5jaCA9IGJ6cmxpYi5icmFuY2guQnJhbmNoLm9wZW4oYnJhbmNoZXNbbmFtZV0pCisgICAgcmVwbyA9IGJyYW5jaC5yZXBvc2l0b3J5CisKKyAgICBicmFuY2gubG9ja19yZWFkKCkKKyAgICByZXZzID0gYnJhbmNoLml0ZXJfbWVyZ2Vfc29ydGVkX3JldmlzaW9ucyhOb25lLCB0aXAsICdleGNsdWRlJywgJ2ZvcndhcmQnKQorICAgIHRyeToKKyAgICAgICAgdGlwX3Jldm5vID0gYnJhbmNoLnJldmlzaW9uX2lkX3RvX3Jldm5vKHRpcCkKKyAgICAgICAgbGFzdF9yZXZubywgXyA9IGJyYW5jaC5sYXN0X3JldmlzaW9uX2luZm8oKQorICAgICAgICB0b3RhbCA9IGxhc3RfcmV2bm8gLSB0aXBfcmV2bm8KKyAgICBleGNlcHQgYnpybGliLmVycm9ycy5Ob1N1Y2hSZXZpc2lvbjoKKyAgICAgICAgdGlwX3Jldm5vID0gMAorICAgICAgICB0b3RhbCA9IDAKKworICAgIGZvciByZXZpZCwgXywgc2VxLCBfIGluIHJldnM6CisKKyAgICAgICAgaWYgbWFya3MuaXNfbWFya2VkKHJldmlkKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgcmV2ID0gcmVwby5nZXRfcmV2aXNpb24ocmV2aWQpCisgICAgICAgIHJldm5vID0gc2VxWzBdCisKKyAgICAgICAgcGFyZW50cyA9IHJldi5wYXJlbnRfaWRzCisgICAgICAgIHRpbWUgPSByZXYudGltZXN0YW1wCisgICAgICAgIHR6ID0gcmV2LnRpbWV6b25lCisgICAgICAgIGNvbW1pdHRlciA9IHJldi5jb21taXR0ZXIuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIGNvbW1pdHRlciA9ICIlcyAldSAlcyIgJSAoZml4dXBfdXNlcihjb21taXR0ZXIpLCB0aW1lLCBnaXR0eih0eikpCisgICAgICAgIGF1dGhvcnMgPSByZXYuZ2V0X2FwcGFyZW50X2F1dGhvcnMoKQorICAgICAgICBpZiBhdXRob3JzOgorICAgICAgICAgICAgYXV0aG9yID0gYXV0aG9yc1swXS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgIGF1dGhvciA9ICIlcyAldSAlcyIgJSAoZml4dXBfdXNlcihhdXRob3IpLCB0aW1lLCBnaXR0eih0eikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhdXRob3IgPSBjb21taXR0ZXIKKyAgICAgICAgbXNnID0gcmV2Lm1lc3NhZ2UuZW5jb2RlKCd1dGYtOCcpCisKKyAgICAgICAgbXNnICs9ICdcbicKKworICAgICAgICBpZiBsZW4ocGFyZW50cykgPT0gMDoKKyAgICAgICAgICAgIHBhcmVudCA9IGJ6cmxpYi5yZXZpc2lvbi5OVUxMX1JFVklTSU9OCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnRzWzBdCisKKyAgICAgICAgY3VyX3RyZWUgPSByZXBvLnJldmlzaW9uX3RyZWUocmV2aWQpCisgICAgICAgIHByZXYgPSByZXBvLnJldmlzaW9uX3RyZWUocGFyZW50KQorICAgICAgICBtb2RpZmllZCwgcmVtb3ZlZCA9IGdldF9maWxlY2hhbmdlcyhjdXJfdHJlZSwgcHJldikKKworICAgICAgICBtb2RpZmllZF9maW5hbCA9IGV4cG9ydF9maWxlcyhjdXJfdHJlZSwgbW9kaWZpZWQpCisKKyAgICAgICAgaWYgbGVuKHBhcmVudHMpID09IDA6CisgICAgICAgICAgICBwcmludCAncmVzZXQgJXMnICUgcmVmCisKKyAgICAgICAgcHJpbnQgImNvbW1pdCAlcyIgJSByZWYKKyAgICAgICAgcHJpbnQgIm1hcmsgOiVkIiAlIChtYXJrcy5nZXRfbWFyayhyZXZpZCkpCisgICAgICAgIHByaW50ICJhdXRob3IgJXMiICUgKGF1dGhvcikKKyAgICAgICAgcHJpbnQgImNvbW1pdHRlciAlcyIgJSAoY29tbWl0dGVyKQorICAgICAgICBwcmludCAiZGF0YSAlZCIgJSAobGVuKG1zZykpCisgICAgICAgIHByaW50IG1zZworCisgICAgICAgIGZvciBpLCBwIGluIGVudW1lcmF0ZShwYXJlbnRzKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtID0gcmV2X3RvX21hcmsocCkKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAjIGdob3N0PworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBpID09IDA6CisgICAgICAgICAgICAgICAgcHJpbnQgImZyb20gOiVzIiAlIG0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQgIm1lcmdlIDolcyIgJSBtCisKKyAgICAgICAgZm9yIGYgaW4gcmVtb3ZlZDoKKyAgICAgICAgICAgIHByaW50ICJEICVzIiAlIChmLCkKKyAgICAgICAgZm9yIGYgaW4gbW9kaWZpZWRfZmluYWw6CisgICAgICAgICAgICBwcmludCAiTSAlcyA6JXUgJXMiICUgZgorICAgICAgICBwcmludAorCisgICAgICAgIGlmIGxlbihzZXEpID4gMToKKyAgICAgICAgICAgICMgbGV0J3Mgc2tpcCBicmFuY2ggcmV2aXNpb25zIGZyb20gdGhlIHByb2dyZXNzIHJlcG9ydAorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBwcm9ncmVzcyA9IChyZXZubyAtIHRpcF9yZXZubykKKyAgICAgICAgaWYgKHByb2dyZXNzICUgMTAwID09IDApOgorICAgICAgICAgICAgaWYgdG90YWw6CisgICAgICAgICAgICAgICAgcHJpbnQgInByb2dyZXNzIHJldmlzaW9uICVkICclcycgKCVkLyVkKSIgJSAocmV2bm8sIG5hbWUsIHByb2dyZXNzLCB0b3RhbCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQgInByb2dyZXNzIHJldmlzaW9uICVkICclcycgKCVkKSIgJSAocmV2bm8sIG5hbWUsIHByb2dyZXNzKQorCisgICAgYnJhbmNoLnVubG9jaygpCisKKyAgICByZXZpZCA9IGJyYW5jaC5sYXN0X3JldmlzaW9uKCkKKworICAgICMgbWFrZSBzdXJlIHRoZSByZWYgaXMgdXBkYXRlZAorICAgIHByaW50ICJyZXNldCAlcyIgJSByZWYKKyAgICBwcmludCAiZnJvbSA6JXUiICUgcmV2X3RvX21hcmsocmV2aWQpCisgICAgcHJpbnQKKworICAgIG1hcmtzLnNldF90aXAobmFtZSwgcmV2aWQpCisKK2RlZiBleHBvcnRfdGFnKHJlcG8sIG5hbWUpOgorICAgIGdsb2JhbCB0YWdzLCBwcmVmaXgKKworICAgIHJlZiA9ICclcy90YWdzLyVzJyAlIChwcmVmaXgsIG5hbWUpCisgICAgcHJpbnQgInJlc2V0ICVzIiAlIHJlZgorICAgIHByaW50ICJmcm9tIDoldSIgJSByZXZfdG9fbWFyayh0YWdzW25hbWVdKQorICAgIHByaW50CisKK2RlZiBkb19pbXBvcnQocGFyc2VyKToKKyAgICBnbG9iYWwgZGlybmFtZQorCisgICAgcmVwbyA9IHBhcnNlci5yZXBvCisgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXJuYW1lLCAnbWFya3MtZ2l0JykKKworICAgIHByaW50ICJmZWF0dXJlIGRvbmUiCisgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6CisgICAgICAgIHByaW50ICJmZWF0dXJlIGltcG9ydC1tYXJrcz0lcyIgJSBwYXRoCisgICAgcHJpbnQgImZlYXR1cmUgZXhwb3J0LW1hcmtzPSVzIiAlIHBhdGgKKyAgICBwcmludCAiZmVhdHVyZSBmb3JjZSIKKyAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKworICAgIHdoaWxlIHBhcnNlci5jaGVjaygnaW1wb3J0Jyk6CisgICAgICAgIHJlZiA9IHBhcnNlclsxXQorICAgICAgICBpZiByZWYuc3RhcnRzd2l0aCgncmVmcy9oZWFkcy8nKToKKyAgICAgICAgICAgIG5hbWUgPSByZWZbbGVuKCdyZWZzL2hlYWRzLycpOl0KKyAgICAgICAgICAgIGV4cG9ydF9icmFuY2gocmVwbywgbmFtZSkKKyAgICAgICAgaWYgcmVmLnN0YXJ0c3dpdGgoJ3JlZnMvdGFncy8nKToKKyAgICAgICAgICAgIG5hbWUgPSByZWZbbGVuKCdyZWZzL3RhZ3MvJyk6XQorICAgICAgICAgICAgZXhwb3J0X3RhZyhyZXBvLCBuYW1lKQorICAgICAgICBwYXJzZXIubmV4dCgpCisKKyAgICBwcmludCAnZG9uZScKKworICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCitkZWYgcGFyc2VfYmxvYihwYXJzZXIpOgorICAgIGdsb2JhbCBibG9iX21hcmtzCisKKyAgICBwYXJzZXIubmV4dCgpCisgICAgbWFyayA9IHBhcnNlci5nZXRfbWFyaygpCisgICAgcGFyc2VyLm5leHQoKQorICAgIGRhdGEgPSBwYXJzZXIuZ2V0X2RhdGEoKQorICAgIGJsb2JfbWFya3NbbWFya10gPSBkYXRhCisgICAgcGFyc2VyLm5leHQoKQorCitjbGFzcyBDdXN0b21UcmVlKCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYnJhbmNoLCByZXZpZCwgcGFyZW50cywgZmlsZXMpOgorICAgICAgICBnbG9iYWwgZmlsZXNfY2FjaGUKKworICAgICAgICBzZWxmLnVwZGF0ZXMgPSB7fQorICAgICAgICBzZWxmLmJyYW5jaCA9IGJyYW5jaAorCisgICAgICAgIGRlZiBjb3B5X3RyZWUocmV2aWQpOgorICAgICAgICAgICAgZmlsZXMgPSBmaWxlc19jYWNoZVtyZXZpZF0gPSB7fQorICAgICAgICAgICAgYnJhbmNoLmxvY2tfcmVhZCgpCisgICAgICAgICAgICB0cmVlID0gYnJhbmNoLnJlcG9zaXRvcnkucmV2aXNpb25fdHJlZShyZXZpZCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgcGF0aCwgZW50cnkgaW4gdHJlZS5pdGVyX2VudHJpZXNfYnlfZGlyKCk6CisgICAgICAgICAgICAgICAgICAgIGZpbGVzW3BhdGhdID0gW2VudHJ5LmZpbGVfaWQsIE5vbmVdCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGJyYW5jaC51bmxvY2soKQorICAgICAgICAgICAgcmV0dXJuIGZpbGVzCisKKyAgICAgICAgaWYgbGVuKHBhcmVudHMpID09IDA6CisgICAgICAgICAgICBzZWxmLmJhc2VfaWQgPSBienJsaWIucmV2aXNpb24uTlVMTF9SRVZJU0lPTgorICAgICAgICAgICAgc2VsZi5iYXNlX2ZpbGVzID0ge30KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYmFzZV9pZCA9IHBhcmVudHNbMF0KKyAgICAgICAgICAgIHNlbGYuYmFzZV9maWxlcyA9IGZpbGVzX2NhY2hlLmdldChzZWxmLmJhc2VfaWQsIE5vbmUpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5iYXNlX2ZpbGVzOgorICAgICAgICAgICAgICAgIHNlbGYuYmFzZV9maWxlcyA9IGNvcHlfdHJlZShzZWxmLmJhc2VfaWQpCisKKyAgICAgICAgc2VsZi5maWxlcyA9IGZpbGVzX2NhY2hlW3JldmlkXSA9IHNlbGYuYmFzZV9maWxlcy5jb3B5KCkKKyAgICAgICAgc2VsZi5yZXZfZmlsZXMgPSB7fQorCisgICAgICAgIGZvciBwYXRoLCBkYXRhIGluIHNlbGYuZmlsZXMuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBmaWQsIG1hcmsgPSBkYXRhCisgICAgICAgICAgICBzZWxmLnJldl9maWxlc1tmaWRdID0gW3BhdGgsIG1hcmtdCisKKyAgICAgICAgZm9yIHBhdGgsIGYgaW4gZmlsZXMuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBmaWQsIG1hcmsgPSBzZWxmLmZpbGVzLmdldChwYXRoLCBbTm9uZSwgTm9uZV0pCisgICAgICAgICAgICBpZiBub3QgZmlkOgorICAgICAgICAgICAgICAgIGZpZCA9IGJ6cmxpYi5nZW5lcmF0ZV9pZHMuZ2VuX2ZpbGVfaWQocGF0aCkKKyAgICAgICAgICAgIGZbJ3BhdGgnXSA9IHBhdGgKKyAgICAgICAgICAgIHNlbGYucmV2X2ZpbGVzW2ZpZF0gPSBbcGF0aCwgbWFya10KKyAgICAgICAgICAgIHNlbGYudXBkYXRlc1tmaWRdID0gZgorCisgICAgZGVmIGxhc3RfcmV2aXNpb24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmJhc2VfaWQKKworICAgIGRlZiBpdGVyX2NoYW5nZXMoc2VsZik6CisgICAgICAgIGNoYW5nZXMgPSBbXQorCisgICAgICAgIGRlZiBnZXRfcGFyZW50KGRpcm5hbWUsIGJhc2VuYW1lKToKKyAgICAgICAgICAgIHBhcmVudF9maWQsIG1hcmsgPSBzZWxmLmJhc2VfZmlsZXMuZ2V0KGRpcm5hbWUsIFtOb25lLCBOb25lXSkKKyAgICAgICAgICAgIGlmIHBhcmVudF9maWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudF9maWQKKyAgICAgICAgICAgIHBhcmVudF9maWQsIG1hcmsgPSBzZWxmLmZpbGVzLmdldChkaXJuYW1lLCBbTm9uZSwgTm9uZV0pCisgICAgICAgICAgICBpZiBwYXJlbnRfZmlkOgorICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRfZmlkCisgICAgICAgICAgICBpZiBiYXNlbmFtZSA9PSAnJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgZmlkID0gYnpybGliLmdlbmVyYXRlX2lkcy5nZW5fZmlsZV9pZChwYXRoKQorICAgICAgICAgICAgYWRkX2VudHJ5KGZpZCwgZGlybmFtZSwgJ2RpcmVjdG9yeScpCisgICAgICAgICAgICByZXR1cm4gZmlkCisKKyAgICAgICAgZGVmIGFkZF9lbnRyeShmaWQsIHBhdGgsIGtpbmQsIG1vZGUgPSBOb25lKToKKyAgICAgICAgICAgIGRpcm5hbWUsIGJhc2VuYW1lID0gb3MucGF0aC5zcGxpdChwYXRoKQorICAgICAgICAgICAgcGFyZW50X2ZpZCA9IGdldF9wYXJlbnQoZGlybmFtZSwgYmFzZW5hbWUpCisKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBGYWxzZQorICAgICAgICAgICAgaWYgbW9kZSA9PSAnMTAwNzU1JzoKKyAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gVHJ1ZQorICAgICAgICAgICAgZWxpZiBtb2RlID09ICcxMjAwMDAnOgorICAgICAgICAgICAgICAgIGtpbmQgPSAnc3ltbGluaycKKworICAgICAgICAgICAgY2hhbmdlID0gKGZpZCwKKyAgICAgICAgICAgICAgICAgICAgKE5vbmUsIHBhdGgpLAorICAgICAgICAgICAgICAgICAgICBUcnVlLAorICAgICAgICAgICAgICAgICAgICAoRmFsc2UsIFRydWUpLAorICAgICAgICAgICAgICAgICAgICAoTm9uZSwgcGFyZW50X2ZpZCksCisgICAgICAgICAgICAgICAgICAgIChOb25lLCBiYXNlbmFtZSksCisgICAgICAgICAgICAgICAgICAgIChOb25lLCBraW5kKSwKKyAgICAgICAgICAgICAgICAgICAgKE5vbmUsIGV4ZWN1dGFibGUpKQorICAgICAgICAgICAgc2VsZi5maWxlc1twYXRoXSA9IFtjaGFuZ2VbMF0sIE5vbmVdCisgICAgICAgICAgICBjaGFuZ2VzLmFwcGVuZChjaGFuZ2UpCisKKyAgICAgICAgZGVmIHVwZGF0ZV9lbnRyeShmaWQsIHBhdGgsIGtpbmQsIG1vZGUgPSBOb25lKToKKyAgICAgICAgICAgIGRpcm5hbWUsIGJhc2VuYW1lID0gb3MucGF0aC5zcGxpdChwYXRoKQorICAgICAgICAgICAgcGFyZW50X2ZpZCA9IGdldF9wYXJlbnQoZGlybmFtZSwgYmFzZW5hbWUpCisKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBGYWxzZQorICAgICAgICAgICAgaWYgbW9kZSA9PSAnMTAwNzU1JzoKKyAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gVHJ1ZQorICAgICAgICAgICAgZWxpZiBtb2RlID09ICcxMjAwMDAnOgorICAgICAgICAgICAgICAgIGtpbmQgPSAnc3ltbGluaycKKworICAgICAgICAgICAgY2hhbmdlID0gKGZpZCwKKyAgICAgICAgICAgICAgICAgICAgKHBhdGgsIHBhdGgpLAorICAgICAgICAgICAgICAgICAgICBUcnVlLAorICAgICAgICAgICAgICAgICAgICAoVHJ1ZSwgVHJ1ZSksCisgICAgICAgICAgICAgICAgICAgIChOb25lLCBwYXJlbnRfZmlkKSwKKyAgICAgICAgICAgICAgICAgICAgKE5vbmUsIGJhc2VuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgKE5vbmUsIGtpbmQpLAorICAgICAgICAgICAgICAgICAgICAoTm9uZSwgZXhlY3V0YWJsZSkpCisgICAgICAgICAgICBzZWxmLmZpbGVzW3BhdGhdID0gW2NoYW5nZVswXSwgTm9uZV0KKyAgICAgICAgICAgIGNoYW5nZXMuYXBwZW5kKGNoYW5nZSkKKworICAgICAgICBkZWYgcmVtb3ZlX2VudHJ5KGZpZCwgcGF0aCwga2luZCk6CisgICAgICAgICAgICBkaXJuYW1lLCBiYXNlbmFtZSA9IG9zLnBhdGguc3BsaXQocGF0aCkKKyAgICAgICAgICAgIHBhcmVudF9maWQgPSBnZXRfcGFyZW50KGRpcm5hbWUsIGJhc2VuYW1lKQorICAgICAgICAgICAgY2hhbmdlID0gKGZpZCwKKyAgICAgICAgICAgICAgICAgICAgKHBhdGgsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICBUcnVlLAorICAgICAgICAgICAgICAgICAgICAoVHJ1ZSwgRmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAocGFyZW50X2ZpZCwgTm9uZSksCisgICAgICAgICAgICAgICAgICAgIChOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgKE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAoTm9uZSwgTm9uZSkpCisgICAgICAgICAgICBkZWwgc2VsZi5maWxlc1twYXRoXQorICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQoY2hhbmdlKQorCisgICAgICAgIGZvciBmaWQsIGYgaW4gc2VsZi51cGRhdGVzLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgcGF0aCA9IGZbJ3BhdGgnXQorCisgICAgICAgICAgICBpZiAnZGVsZXRlZCcgaW4gZjoKKyAgICAgICAgICAgICAgICByZW1vdmVfZW50cnkoZmlkLCBwYXRoLCAnZmlsZScpCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgaWYgcGF0aCBpbiBzZWxmLmJhc2VfZmlsZXM6CisgICAgICAgICAgICAgICAgdXBkYXRlX2VudHJ5KGZpZCwgcGF0aCwgJ2ZpbGUnLCBmWydtb2RlJ10pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFkZF9lbnRyeShmaWQsIHBhdGgsICdmaWxlJywgZlsnbW9kZSddKQorCisgICAgICAgICAgICBzZWxmLmZpbGVzW3BhdGhdWzFdID0gZlsnbWFyayddCisgICAgICAgICAgICBzZWxmLnJldl9maWxlc1tmaWRdWzFdID0gZlsnbWFyayddCisKKyAgICAgICAgcmV0dXJuIGNoYW5nZXMKKworICAgIGRlZiBnZXRfY29udGVudChzZWxmLCBmaWxlX2lkKToKKyAgICAgICAgcGF0aCwgbWFyayA9IHNlbGYucmV2X2ZpbGVzW2ZpbGVfaWRdCisgICAgICAgIGlmIG1hcms6CisgICAgICAgICAgICByZXR1cm4gYmxvYl9tYXJrc1ttYXJrXQorCisgICAgICAgICMgbGFzdCByZXNvcnQKKyAgICAgICAgdHJlZSA9IHNlbGYuYnJhbmNoLnJlcG9zaXRvcnkucmV2aXNpb25fdHJlZShzZWxmLmJhc2VfaWQpCisgICAgICAgIHJldHVybiB0cmVlLmdldF9maWxlX3RleHQoZmlsZV9pZCkKKworICAgIGRlZiBnZXRfZmlsZV93aXRoX3N0YXQoc2VsZiwgZmlsZV9pZCwgcGF0aD1Ob25lKToKKyAgICAgICAgY29udGVudCA9IHNlbGYuZ2V0X2NvbnRlbnQoZmlsZV9pZCkKKyAgICAgICAgcmV0dXJuIChTdHJpbmdJTy5TdHJpbmdJTyhjb250ZW50KSwgTm9uZSkKKworICAgIGRlZiBnZXRfc3ltbGlua190YXJnZXQoc2VsZiwgZmlsZV9pZCk6CisgICAgICAgIHJldHVybiBzZWxmLmdldF9jb250ZW50KGZpbGVfaWQpCisKKyAgICBkZWYgaWQycGF0aChzZWxmLCBmaWxlX2lkKToKKyAgICAgICAgcGF0aCwgbWFyayA9IHNlbGYucmV2X2ZpbGVzW2ZpbGVfaWRdCisgICAgICAgIHJldHVybiBwYXRoCisKK2RlZiBjX3N0eWxlX3VuZXNjYXBlKHN0cmluZyk6CisgICAgaWYgc3RyaW5nWzBdID09IHN0cmluZ1stMV0gPT0gJyInOgorICAgICAgICByZXR1cm4gc3RyaW5nLmRlY29kZSgnc3RyaW5nLWVzY2FwZScpWzE6LTFdCisgICAgcmV0dXJuIHN0cmluZworCitkZWYgcGFyc2VfY29tbWl0KHBhcnNlcik6CisgICAgZ2xvYmFsIG1hcmtzLCBibG9iX21hcmtzLCBwYXJzZWRfcmVmcworICAgIGdsb2JhbCBtb2RlCisKKyAgICBwYXJlbnRzID0gW10KKworICAgIHJlZiA9IHBhcnNlclsxXQorICAgIHBhcnNlci5uZXh0KCkKKworICAgIGlmIHJlZi5zdGFydHN3aXRoKCdyZWZzL2hlYWRzLycpOgorICAgICAgICBuYW1lID0gcmVmW2xlbigncmVmcy9oZWFkcy8nKTpdCisgICAgICAgIGJyYW5jaCA9IGJ6cmxpYi5icmFuY2guQnJhbmNoLm9wZW4oYnJhbmNoZXNbbmFtZV0pCisgICAgZWxzZToKKyAgICAgICAgZGllKCd1bmtub3duIHJlZicpCisKKyAgICBjb21taXRfbWFyayA9IHBhcnNlci5nZXRfbWFyaygpCisgICAgcGFyc2VyLm5leHQoKQorICAgIGF1dGhvciA9IHBhcnNlci5nZXRfYXV0aG9yKCkKKyAgICBwYXJzZXIubmV4dCgpCisgICAgY29tbWl0dGVyID0gcGFyc2VyLmdldF9hdXRob3IoKQorICAgIHBhcnNlci5uZXh0KCkKKyAgICBkYXRhID0gcGFyc2VyLmdldF9kYXRhKCkKKyAgICBwYXJzZXIubmV4dCgpCisgICAgaWYgcGFyc2VyLmNoZWNrKCdmcm9tJyk6CisgICAgICAgIHBhcmVudHMuYXBwZW5kKHBhcnNlci5nZXRfbWFyaygpKQorICAgICAgICBwYXJzZXIubmV4dCgpCisgICAgd2hpbGUgcGFyc2VyLmNoZWNrKCdtZXJnZScpOgorICAgICAgICBwYXJlbnRzLmFwcGVuZChwYXJzZXIuZ2V0X21hcmsoKSkKKyAgICAgICAgcGFyc2VyLm5leHQoKQorCisgICAgIyBmYXN0LWV4cG9ydCBhZGRzIGFuIGV4dHJhIG5ld2xpbmUKKyAgICBpZiBkYXRhWy0xXSA9PSAnXG4nOgorICAgICAgICBkYXRhID0gZGF0YVs6LTFdCisKKyAgICBmaWxlcyA9IHt9CisKKyAgICBmb3IgbGluZSBpbiBwYXJzZXI6CisgICAgICAgIGlmIHBhcnNlci5jaGVjaygnTScpOgorICAgICAgICAgICAgdCwgbSwgbWFya19yZWYsIHBhdGggPSBsaW5lLnNwbGl0KCcgJywgMykKKyAgICAgICAgICAgIG1hcmsgPSBpbnQobWFya19yZWZbMTpdKQorICAgICAgICAgICAgZiA9IHsgJ21vZGUnIDogbSwgJ21hcmsnIDogbWFyayB9CisgICAgICAgIGVsaWYgcGFyc2VyLmNoZWNrKCdEJyk6CisgICAgICAgICAgICB0LCBwYXRoID0gbGluZS5zcGxpdCgnICcpCisgICAgICAgICAgICBmID0geyAnZGVsZXRlZCcgOiBUcnVlIH0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRpZSgnVW5rbm93biBmaWxlIGNvbW1hbmQ6ICVzJyAlIGxpbmUpCisgICAgICAgIHBhdGggPSBjX3N0eWxlX3VuZXNjYXBlKHBhdGgpLmRlY29kZSgndXRmLTgnKQorICAgICAgICBmaWxlc1twYXRoXSA9IGYKKworICAgIGNvbW1pdHRlciwgZGF0ZSwgdHogPSBjb21taXR0ZXIKKyAgICBwYXJlbnRzID0gW21hcmtfdG9fcmV2KHApIGZvciBwIGluIHBhcmVudHNdCisgICAgcmV2aWQgPSBienJsaWIuZ2VuZXJhdGVfaWRzLmdlbl9yZXZpc2lvbl9pZChjb21taXR0ZXIsIGRhdGUpCisgICAgcHJvcHMgPSB7fQorICAgIHByb3BzWydicmFuY2gtbmljayddID0gYnJhbmNoLm5pY2sKKworICAgIG10cmVlID0gQ3VzdG9tVHJlZShicmFuY2gsIHJldmlkLCBwYXJlbnRzLCBmaWxlcykKKyAgICBjaGFuZ2VzID0gbXRyZWUuaXRlcl9jaGFuZ2VzKCkKKworICAgIGJyYW5jaC5sb2NrX3dyaXRlKCkKKyAgICB0cnk6CisgICAgICAgIGJ1aWxkZXIgPSBicmFuY2guZ2V0X2NvbW1pdF9idWlsZGVyKHBhcmVudHMsIE5vbmUsIGRhdGUsIHR6LCBjb21taXR0ZXIsIHByb3BzLCByZXZpZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbGlzdChidWlsZGVyLnJlY29yZF9pdGVyX2NoYW5nZXMobXRyZWUsIG10cmVlLmxhc3RfcmV2aXNpb24oKSwgY2hhbmdlcykpCisgICAgICAgICAgICBidWlsZGVyLmZpbmlzaF9pbnZlbnRvcnkoKQorICAgICAgICAgICAgYnVpbGRlci5jb21taXQoZGF0YS5kZWNvZGUoJ3V0Zi04JywgJ3JlcGxhY2UnKSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAgICAgICAgICAgIGJ1aWxkZXIuYWJvcnQoKQorICAgICAgICAgICAgcmFpc2UKKyAgICBmaW5hbGx5OgorICAgICAgICBicmFuY2gudW5sb2NrKCkKKworICAgIHBhcnNlZF9yZWZzW3JlZl0gPSByZXZpZAorICAgIG1hcmtzLm5ld19tYXJrKHJldmlkLCBjb21taXRfbWFyaykKKworZGVmIHBhcnNlX3Jlc2V0KHBhcnNlcik6CisgICAgZ2xvYmFsIHBhcnNlZF9yZWZzCisKKyAgICByZWYgPSBwYXJzZXJbMV0KKyAgICBwYXJzZXIubmV4dCgpCisKKyAgICAjIHVnaAorICAgIGlmIHBhcnNlci5jaGVjaygnY29tbWl0Jyk6CisgICAgICAgIHBhcnNlX2NvbW1pdChwYXJzZXIpCisgICAgICAgIHJldHVybgorICAgIGlmIG5vdCBwYXJzZXIuY2hlY2soJ2Zyb20nKToKKyAgICAgICAgcmV0dXJuCisgICAgZnJvbV9tYXJrID0gcGFyc2VyLmdldF9tYXJrKCkKKyAgICBwYXJzZXIubmV4dCgpCisKKyAgICBwYXJzZWRfcmVmc1tyZWZdID0gbWFya190b19yZXYoZnJvbV9tYXJrKQorCitkZWYgZG9fZXhwb3J0KHBhcnNlcik6CisgICAgZ2xvYmFsIHBhcnNlZF9yZWZzLCBkaXJuYW1lCisKKyAgICBwYXJzZXIubmV4dCgpCisKKyAgICBmb3IgbGluZSBpbiBwYXJzZXIuZWFjaF9ibG9jaygnZG9uZScpOgorICAgICAgICBpZiBwYXJzZXIuY2hlY2soJ2Jsb2InKToKKyAgICAgICAgICAgIHBhcnNlX2Jsb2IocGFyc2VyKQorICAgICAgICBlbGlmIHBhcnNlci5jaGVjaygnY29tbWl0Jyk6CisgICAgICAgICAgICBwYXJzZV9jb21taXQocGFyc2VyKQorICAgICAgICBlbGlmIHBhcnNlci5jaGVjaygncmVzZXQnKToKKyAgICAgICAgICAgIHBhcnNlX3Jlc2V0KHBhcnNlcikKKyAgICAgICAgZWxpZiBwYXJzZXIuY2hlY2soJ3RhZycpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbGlmIHBhcnNlci5jaGVjaygnZmVhdHVyZScpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGllKCd1bmhhbmRsZWQgZXhwb3J0IGNvbW1hbmQ6ICVzJyAlIGxpbmUpCisKKyAgICBmb3IgcmVmLCByZXZpZCBpbiBwYXJzZWRfcmVmcy5pdGVyaXRlbXMoKToKKyAgICAgICAgaWYgcmVmLnN0YXJ0c3dpdGgoJ3JlZnMvaGVhZHMvJyk6CisgICAgICAgICAgICBuYW1lID0gcmVmW2xlbigncmVmcy9oZWFkcy8nKTpdCisgICAgICAgICAgICBicmFuY2ggPSBienJsaWIuYnJhbmNoLkJyYW5jaC5vcGVuKGJyYW5jaGVzW25hbWVdKQorICAgICAgICAgICAgYnJhbmNoLmdlbmVyYXRlX3JldmlzaW9uX2hpc3RvcnkocmV2aWQsIG1hcmtzLmdldF90aXAobmFtZSkpCisKKyAgICAgICAgICAgIGlmIG5hbWUgaW4gcGVlcnM6CisgICAgICAgICAgICAgICAgcGVlciA9IGJ6cmxpYi5icmFuY2guQnJhbmNoLm9wZW4ocGVlcnNbbmFtZV0pCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwZWVyLmJ6cmRpci5wdXNoX2JyYW5jaChicmFuY2gsIHJldmlzaW9uX2lkPXJldmlkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBienJsaWIuZXJyb3JzLkRpdmVyZ2VkQnJhbmNoZXM6CisgICAgICAgICAgICAgICAgICAgIHByaW50ICJlcnJvciAlcyBub24tZmFzdCBmb3J3YXJkIiAlIHJlZgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd3QgPSBicmFuY2guYnpyZGlyLm9wZW5fd29ya2luZ3RyZWUoKQorICAgICAgICAgICAgICAgIHd0LnVwZGF0ZSgpCisgICAgICAgICAgICBleGNlcHQgYnpybGliLmVycm9ycy5Ob1dvcmtpbmdUcmVlOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxpZiByZWYuc3RhcnRzd2l0aCgncmVmcy90YWdzLycpOgorICAgICAgICAgICAgIyBUT0RPOiBpbXBsZW1lbnQgdGFnIHB1c2gKKyAgICAgICAgICAgIHByaW50ICJlcnJvciAlcyBwdXNoaW5nIHRhZ3Mgbm90IHN1cHBvcnRlZCIgJSByZWYKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHRyYW5zcG9ydC1oZWxwZXIvZmFzdC1leHBvcnQgYnVncworICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBwcmludCAib2sgJXMiICUgcmVmCisKKyAgICBwcmludAorCitkZWYgZG9fY2FwYWJpbGl0aWVzKHBhcnNlcik6CisgICAgZ2xvYmFsIGRpcm5hbWUKKworICAgIHByaW50ICJpbXBvcnQiCisgICAgcHJpbnQgImV4cG9ydCIKKyAgICBwcmludCAicmVmc3BlYyByZWZzL2hlYWRzLyo6JXMvaGVhZHMvKiIgJSBwcmVmaXgKKyAgICBwcmludCAicmVmc3BlYyByZWZzL3RhZ3MvKjolcy90YWdzLyoiICUgcHJlZml4CisKKyAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpcm5hbWUsICdtYXJrcy1naXQnKQorCisgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6CisgICAgICAgIHByaW50ICIqaW1wb3J0LW1hcmtzICVzIiAlIHBhdGgKKyAgICBwcmludCAiKmV4cG9ydC1tYXJrcyAlcyIgJSBwYXRoCisKKyAgICBwcmludAorCitkZWYgcmVmX2lzX3ZhbGlkKG5hbWUpOgorICAgIHJldHVybiBub3QgVHJ1ZSBpbiBbYyBpbiBuYW1lIGZvciBjIGluICd+XjogXFwnXQorCitkZWYgZG9fbGlzdChwYXJzZXIpOgorICAgIGdsb2JhbCB0YWdzCisKKyAgICBtYXN0ZXJfYnJhbmNoID0gTm9uZQorCisgICAgZm9yIG5hbWUgaW4gYnJhbmNoZXM6CisgICAgICAgIGlmIG5vdCBtYXN0ZXJfYnJhbmNoOgorICAgICAgICAgICAgbWFzdGVyX2JyYW5jaCA9IG5hbWUKKyAgICAgICAgcHJpbnQgIj8gcmVmcy9oZWFkcy8lcyIgJSBuYW1lCisKKyAgICBicmFuY2ggPSBienJsaWIuYnJhbmNoLkJyYW5jaC5vcGVuKGJyYW5jaGVzW21hc3Rlcl9icmFuY2hdKQorICAgIGJyYW5jaC5sb2NrX3JlYWQoKQorICAgIGZvciB0YWcsIHJldmlkIGluIGJyYW5jaC50YWdzLmdldF90YWdfZGljdCgpLml0ZW1zKCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJyYW5jaC5yZXZpc2lvbl9pZF90b19kb3R0ZWRfcmV2bm8ocmV2aWQpCisgICAgICAgIGV4Y2VwdCBienJsaWIuZXJyb3JzLk5vU3VjaFJldmlzaW9uOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgbm90IHJlZl9pc192YWxpZCh0YWcpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcHJpbnQgIj8gcmVmcy90YWdzLyVzIiAlIHRhZworICAgICAgICB0YWdzW3RhZ10gPSByZXZpZAorICAgIGJyYW5jaC51bmxvY2soKQorCisgICAgcHJpbnQgIkByZWZzL2hlYWRzLyVzIEhFQUQiICUgbWFzdGVyX2JyYW5jaAorICAgIHByaW50CisKK2RlZiBnZXRfcmVtb3RlX2JyYW5jaChvcmlnaW4sIHJlbW90ZV9icmFuY2gsIG5hbWUpOgorICAgIGdsb2JhbCBkaXJuYW1lLCBwZWVycworCisgICAgYnJhbmNoX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ2Nsb25lJywgbmFtZSkKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhicmFuY2hfcGF0aCk6CisgICAgICAgICMgcHVsbAorICAgICAgICBkID0gYnpybGliLmJ6cmRpci5CenJEaXIub3BlbihicmFuY2hfcGF0aCkKKyAgICAgICAgYnJhbmNoID0gZC5vcGVuX2JyYW5jaCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJyYW5jaC5wdWxsKHJlbW90ZV9icmFuY2gsIFtdLCBOb25lLCBGYWxzZSkKKyAgICAgICAgZXhjZXB0IGJ6cmxpYi5lcnJvcnMuRGl2ZXJnZWRCcmFuY2hlczoKKyAgICAgICAgICAgICMgdXNlIHJlbW90ZSBicmFuY2ggZm9yIG5vdworICAgICAgICAgICAgcmV0dXJuIHJlbW90ZV9icmFuY2gKKyAgICBlbHNlOgorICAgICAgICAjIGNsb25lCisgICAgICAgIGQgPSBvcmlnaW4uc3Byb3V0KGJyYW5jaF9wYXRoLCBOb25lLAorICAgICAgICAgICAgICAgIGhhcmRsaW5rPVRydWUsIGNyZWF0ZV90cmVlX2lmX2xvY2FsPUZhbHNlLAorICAgICAgICAgICAgICAgIGZvcmNlX25ld19yZXBvPUZhbHNlLAorICAgICAgICAgICAgICAgIHNvdXJjZV9icmFuY2g9cmVtb3RlX2JyYW5jaCkKKyAgICAgICAgYnJhbmNoID0gZC5vcGVuX2JyYW5jaCgpCisKKyAgICByZXR1cm4gYnJhbmNoCisKK2RlZiBmaW5kX2JyYW5jaGVzKHJlcG8sIHdhbnRlZCk6CisgICAgdHJhbnNwb3J0ID0gcmVwby5ienJkaXIucm9vdF90cmFuc3BvcnQKKworICAgIGZvciBmbiBpbiB0cmFuc3BvcnQuaXRlcl9maWxlc19yZWN1cnNpdmUoKToKKyAgICAgICAgaWYgbm90IGZuLmVuZHN3aXRoKCcuYnpyL2JyYW5jaC1mb3JtYXQnKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgbmFtZSA9IHN1YmRpciA9IGZuWzotbGVuKCcvLmJ6ci9icmFuY2gtZm9ybWF0JyldCisgICAgICAgIG5hbWUgPSBuYW1lIGlmIG5hbWUgIT0gJycgZWxzZSAnbWFzdGVyJworICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKCcvJywgJysnKQorCisgICAgICAgIGlmIHdhbnRlZCBhbmQgbm90IG5hbWUgaW4gd2FudGVkOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBjdXIgPSB0cmFuc3BvcnQuY2xvbmUoc3ViZGlyKQorICAgICAgICAgICAgYnJhbmNoID0gYnpybGliLmJyYW5jaC5CcmFuY2gub3Blbl9mcm9tX3RyYW5zcG9ydChjdXIpCisgICAgICAgIGV4Y2VwdCBienJsaWIuZXJyb3JzLk5vdEJyYW5jaEVycm9yOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHlpZWxkIG5hbWUsIGJyYW5jaAorCitkZWYgZ2V0X3JlcG8odXJsLCBhbGlhcyk6CisgICAgZ2xvYmFsIGRpcm5hbWUsIHBlZXIsIGJyYW5jaGVzCisKKyAgICBub3JtYWxfdXJsID0gYnpybGliLnVybHV0aWxzLm5vcm1hbGl6ZV91cmwodXJsKQorICAgIG9yaWdpbiA9IGJ6cmxpYi5ienJkaXIuQnpyRGlyLm9wZW4odXJsKQorICAgIGlzX2xvY2FsID0gaXNpbnN0YW5jZShvcmlnaW4udHJhbnNwb3J0LCBienJsaWIudHJhbnNwb3J0LmxvY2FsLkxvY2FsVHJhbnNwb3J0KQorCisgICAgc2hhcmVkX3BhdGggPSBvcy5wYXRoLmpvaW4oZ2l0ZGlyLCAnYnpyJykKKyAgICB0cnk6CisgICAgICAgIHNoYXJlZF9kaXIgPSBienJsaWIuYnpyZGlyLkJ6ckRpci5vcGVuKHNoYXJlZF9wYXRoKQorICAgIGV4Y2VwdCBienJsaWIuZXJyb3JzLk5vdEJyYW5jaEVycm9yOgorICAgICAgICBzaGFyZWRfZGlyID0gYnpybGliLmJ6cmRpci5CenJEaXIuY3JlYXRlKHNoYXJlZF9wYXRoKQorICAgIHRyeToKKyAgICAgICAgc2hhcmVkX3JlcG8gPSBzaGFyZWRfZGlyLm9wZW5fcmVwb3NpdG9yeSgpCisgICAgZXhjZXB0IGJ6cmxpYi5lcnJvcnMuTm9SZXBvc2l0b3J5UHJlc2VudDoKKyAgICAgICAgc2hhcmVkX3JlcG8gPSBzaGFyZWRfZGlyLmNyZWF0ZV9yZXBvc2l0b3J5KHNoYXJlZD1UcnVlKQorCisgICAgaWYgbm90IGlzX2xvY2FsOgorICAgICAgICBjbG9uZV9wYXRoID0gb3MucGF0aC5qb2luKGRpcm5hbWUsICdjbG9uZScpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjbG9uZV9wYXRoKToKKyAgICAgICAgICAgIG9zLm1rZGlyKGNsb25lX3BhdGgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIGNoZWNrIGFuZCByZW1vdmUgb2xkIG9yZ2FuaXphdGlvbgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGJkaXIgPSBienJsaWIuYnpyZGlyLkJ6ckRpci5vcGVuKGNsb25lX3BhdGgpCisgICAgICAgICAgICAgICAgYmRpci5kZXN0cm95X3JlcG9zaXRvcnkoKQorICAgICAgICAgICAgZXhjZXB0IGJ6cmxpYi5lcnJvcnMuTm90QnJhbmNoRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZXhjZXB0IGJ6cmxpYi5lcnJvcnMuTm9SZXBvc2l0b3J5UHJlc2VudDoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICB0cnk6CisgICAgICAgIHJlcG8gPSBvcmlnaW4ub3Blbl9yZXBvc2l0b3J5KCkKKyAgICAgICAgaWYgbm90IHJlcG8udXNlcl90cmFuc3BvcnQubGlzdGFibGUoKToKKyAgICAgICAgICAgICMgdGhpcyByZXBvc2l0b3J5IGlzIG5vdCB1c2FibGUgZm9yIHVzCisgICAgICAgICAgICByYWlzZSBienJsaWIuZXJyb3JzLk5vUmVwb3NpdG9yeVByZXNlbnQocmVwby5ienJkaXIpCisgICAgZXhjZXB0IGJ6cmxpYi5lcnJvcnMuTm9SZXBvc2l0b3J5UHJlc2VudDoKKyAgICAgICAgIyBicmFuY2gKKworICAgICAgICBuYW1lID0gJ21hc3RlcicKKyAgICAgICAgcmVtb3RlX2JyYW5jaCA9IG9yaWdpbi5vcGVuX2JyYW5jaCgpCisKKyAgICAgICAgaWYgbm90IGlzX2xvY2FsOgorICAgICAgICAgICAgcGVlcnNbbmFtZV0gPSByZW1vdGVfYnJhbmNoLmJhc2UKKyAgICAgICAgICAgIGJyYW5jaCA9IGdldF9yZW1vdGVfYnJhbmNoKG9yaWdpbiwgcmVtb3RlX2JyYW5jaCwgbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyYW5jaCA9IHJlbW90ZV9icmFuY2gKKworICAgICAgICBicmFuY2hlc1tuYW1lXSA9IGJyYW5jaC5iYXNlCisKKyAgICAgICAgcmV0dXJuIGJyYW5jaC5yZXBvc2l0b3J5CisgICAgZWxzZToKKyAgICAgICAgIyByZXBvc2l0b3J5CisKKyAgICAgICAgd2FudGVkID0gZ2V0X2NvbmZpZygncmVtb3RlLWJ6ci5icmFuY2hlcycpLnJzdHJpcCgpLnNwbGl0KCcsICcpCisgICAgICAgICMgc3R1cGlkIHB5dGhvbgorICAgICAgICB3YW50ZWQgPSBbZSBmb3IgZSBpbiB3YW50ZWQgaWYgZV0KKworICAgICAgICBmb3IgbmFtZSwgcmVtb3RlX2JyYW5jaCBpbiBmaW5kX2JyYW5jaGVzKHJlcG8sIHdhbnRlZCk6CisKKyAgICAgICAgICAgIGlmIG5vdCBpc19sb2NhbDoKKyAgICAgICAgICAgICAgICBwZWVyc1tuYW1lXSA9IHJlbW90ZV9icmFuY2guYmFzZQorICAgICAgICAgICAgICAgIGJyYW5jaCA9IGdldF9yZW1vdGVfYnJhbmNoKG9yaWdpbiwgcmVtb3RlX2JyYW5jaCwgbmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnJhbmNoID0gcmVtb3RlX2JyYW5jaAorCisgICAgICAgICAgICBicmFuY2hlc1tuYW1lXSA9IGJyYW5jaC5iYXNlCisKKyAgICAgICAgcmV0dXJuIHJlcG8KKworZGVmIGZpeF9wYXRoKGFsaWFzLCBvcmlnX3VybCk6CisgICAgdXJsID0gdXJscGFyc2UudXJscGFyc2Uob3JpZ191cmwsICdmaWxlJykKKyAgICBpZiB1cmwuc2NoZW1lICE9ICdmaWxlJyBvciBvcy5wYXRoLmlzYWJzKHVybC5wYXRoKToKKyAgICAgICAgcmV0dXJuCisgICAgYWJzX3VybCA9IHVybHBhcnNlLnVybGpvaW4oIiVzLyIgJSBvcy5nZXRjd2QoKSwgb3JpZ191cmwpCisgICAgY21kID0gWydnaXQnLCAnY29uZmlnJywgJ3JlbW90ZS4lcy51cmwnICUgYWxpYXMsICJienI6OiVzIiAlIGFic191cmxdCisgICAgc3VicHJvY2Vzcy5jYWxsKGNtZCkKKworZGVmIG1haW4oYXJncyk6CisgICAgZ2xvYmFsIG1hcmtzLCBwcmVmaXgsIGdpdGRpciwgZGlybmFtZQorICAgIGdsb2JhbCB0YWdzLCBmaWxlbm9kZXMKKyAgICBnbG9iYWwgYmxvYl9tYXJrcworICAgIGdsb2JhbCBwYXJzZWRfcmVmcworICAgIGdsb2JhbCBmaWxlc19jYWNoZQorICAgIGdsb2JhbCBpc190bXAKKyAgICBnbG9iYWwgYnJhbmNoZXMsIHBlZXJzCisKKyAgICBhbGlhcyA9IGFyZ3NbMV0KKyAgICB1cmwgPSBhcmdzWzJdCisKKyAgICB0YWdzID0ge30KKyAgICBmaWxlbm9kZXMgPSB7fQorICAgIGJsb2JfbWFya3MgPSB7fQorICAgIHBhcnNlZF9yZWZzID0ge30KKyAgICBmaWxlc19jYWNoZSA9IHt9CisgICAgbWFya3MgPSBOb25lCisgICAgYnJhbmNoZXMgPSB7fQorICAgIHBlZXJzID0ge30KKworICAgIGlmIGFsaWFzWzU6XSA9PSB1cmw6CisgICAgICAgIGlzX3RtcCA9IFRydWUKKyAgICAgICAgYWxpYXMgPSBoYXNobGliLnNoYTEoYWxpYXMpLmhleGRpZ2VzdCgpCisgICAgZWxzZToKKyAgICAgICAgaXNfdG1wID0gRmFsc2UKKworICAgIHByZWZpeCA9ICdyZWZzL2J6ci8lcycgJSBhbGlhcworICAgIGdpdGRpciA9IG9zLmVudmlyb25bJ0dJVF9ESVInXQorICAgIGRpcm5hbWUgPSBvcy5wYXRoLmpvaW4oZ2l0ZGlyLCAnYnpyJywgYWxpYXMpCisKKyAgICBpZiBub3QgaXNfdG1wOgorICAgICAgICBmaXhfcGF0aChhbGlhcywgdXJsKQorCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRpcm5hbWUpOgorICAgICAgICBvcy5tYWtlZGlycyhkaXJuYW1lKQorCisgICAgaWYgaGFzYXR0cihienJsaWIudWkudWlfZmFjdG9yeSwgJ2JlX3F1aWV0Jyk6CisgICAgICAgIGJ6cmxpYi51aS51aV9mYWN0b3J5LmJlX3F1aWV0KFRydWUpCisKKyAgICByZXBvID0gZ2V0X3JlcG8odXJsLCBhbGlhcykKKworICAgIG1hcmtzX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ21hcmtzLWludCcpCisgICAgbWFya3MgPSBNYXJrcyhtYXJrc19wYXRoKQorCisgICAgcGFyc2VyID0gUGFyc2VyKHJlcG8pCisgICAgZm9yIGxpbmUgaW4gcGFyc2VyOgorICAgICAgICBpZiBwYXJzZXIuY2hlY2soJ2NhcGFiaWxpdGllcycpOgorICAgICAgICAgICAgZG9fY2FwYWJpbGl0aWVzKHBhcnNlcikKKyAgICAgICAgZWxpZiBwYXJzZXIuY2hlY2soJ2xpc3QnKToKKyAgICAgICAgICAgIGRvX2xpc3QocGFyc2VyKQorICAgICAgICBlbGlmIHBhcnNlci5jaGVjaygnaW1wb3J0Jyk6CisgICAgICAgICAgICBkb19pbXBvcnQocGFyc2VyKQorICAgICAgICBlbGlmIHBhcnNlci5jaGVjaygnZXhwb3J0Jyk6CisgICAgICAgICAgICBkb19leHBvcnQocGFyc2VyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGllKCd1bmhhbmRsZWQgY29tbWFuZDogJXMnICUgbGluZSkKKyAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisKK2RlZiBieWUoKToKKyAgICBpZiBub3QgbWFya3M6CisgICAgICAgIHJldHVybgorICAgIGlmIG5vdCBpc190bXA6CisgICAgICAgIG1hcmtzLnN0b3JlKCkKKyAgICBlbHNlOgorICAgICAgICBzaHV0aWwucm10cmVlKGRpcm5hbWUpCisKK2F0ZXhpdC5yZWdpc3RlcihieWUpCitzeXMuZXhpdChtYWluKHN5cy5hcmd2KSkKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvZ2l0LXJlbW90ZS1oZyBiL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvZ2l0LXJlbW90ZS1oZwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZGQzZDcwCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy9naXQtcmVtb3RlLWhnCkBAIC0wLDAgKzEsOTg0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDEyIEZlbGlwZSBDb250cmVyYXMKKyMKKworIyBJbnNwaXJlZCBieSBSb2NjbyBSdXR0ZSdzIGhnLWZhc3QtZXhwb3J0CisKKyMgSnVzdCBjb3B5IHRvIHlvdXIgfi9iaW4sIG9yIGFueXdoZXJlIGluIHlvdXIgJFBBVEguCisjIFRoZW4geW91IGNhbiBjbG9uZSB3aXRoOgorIyBnaXQgY2xvbmUgaGc6Oi9wYXRoL3RvL21lcmN1cmlhbC9yZXBvLworIworIyBGb3IgcmVtb3RlIHJlcG9zaXRvcmllcyBhIGxvY2FsIGNsb25lIGlzIHN0b3JlZCBpbgorIyAiJEdJVF9ESVIvaGcvb3JpZ2luL2Nsb25lLy5oZy8iLgorCitmcm9tIG1lcmN1cmlhbCBpbXBvcnQgaGcsIHVpLCBib29rbWFya3MsIGNvbnRleHQsIGVuY29kaW5nLCBub2RlLCBlcnJvciwgZXh0ZW5zaW9ucworCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworaW1wb3J0IGpzb24KK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgdXJsbGliCitpbXBvcnQgYXRleGl0CitpbXBvcnQgdXJscGFyc2UsIGhhc2hsaWIKKworIworIyBJZiB5b3UgYXJlIG5vdCBpbiBoZy1naXQtY29tcGF0IG1vZGUgYW5kIHdhbnQgdG8gZGlzYWJsZSB0aGUgdHJhY2tpbmcgb2YKKyMgbmFtZWQgYnJhbmNoZXM6CisjIGdpdCBjb25maWcgLS1nbG9iYWwgcmVtb3RlLWhnLnRyYWNrLWJyYW5jaGVzIGZhbHNlCisjCisjIElmIHlvdSBkb24ndCB3YW50IHRvIGZvcmNlIHB1c2hlcyAoYW5kIHRodXMgcmlzayBjcmVhdGluZyBuZXcgcmVtb3RlIGhlYWRzKToKKyMgZ2l0IGNvbmZpZyAtLWdsb2JhbCByZW1vdGUtaGcuZm9yY2UtcHVzaCBmYWxzZQorIworIyBJZiB5b3Ugd2FudCB0aGUgZXF1aXZhbGVudCBvZiBoZydzIGNsb25lL3B1bGwtLWluc2VjdXJlIG9wdGlvbjoKKyMgZ2l0IGNvbmZpZyAtLWdsb2JhbCByZW1vdGUtaGcuaW5zZWN1cmUgdHJ1ZQorIworIyBJZiB5b3Ugd2FudCB0byBzd2l0Y2ggdG8gaGctZ2l0IGNvbXBhdGliaWxpdHkgbW9kZToKKyMgZ2l0IGNvbmZpZyAtLWdsb2JhbCByZW1vdGUtaGcuaGctZ2l0LWNvbXBhdCB0cnVlCisjCisjIGdpdDoKKyMgU2Vuc2libGUgZGVmYXVsdHMgZm9yIGdpdC4KKyMgaGcgYm9va21hcmtzIGFyZSBleHBvcnRlZCBhcyBnaXQgYnJhbmNoZXMsIGhnIGJyYW5jaGVzIGFyZSBwcmVmaXhlZAorIyB3aXRoICdicmFuY2hlcy8nLCBIRUFEIGlzIGEgc3BlY2lhbCBjYXNlLgorIworIyBoZzoKKyMgRW11bGF0ZSBoZy1naXQuCisjIE9ubHkgaGcgYm9va21hcmtzIGFyZSBleHBvcnRlZCBhcyBnaXQgYnJhbmNoZXMuCisjIENvbW1pdHMgYXJlIG1vZGlmaWVkIHRvIHByZXNlcnZlIGhnIGluZm9ybWF0aW9uIGFuZCBhbGxvdyBiaWRpcmVjdGlvbmFsaXR5LgorIworCitOQU1FX1JFID0gcmUuY29tcGlsZSgnXihbXjw+XSspJykKK0FVVEhPUl9SRSA9IHJlLmNvbXBpbGUoJ14oW148Pl0rPyk/ID88KFtePD5dKik+JCcpCitFTUFJTF9SRSA9IHJlLmNvbXBpbGUoJ14oW148Pl0rW14gXFxcdDw+XSk/XFxiKD86WyBcXHQ8Pl0qPylcXGIoW14gXFx0PD5dK0BbXiBcXHQ8Pl0rKScpCitBVVRIT1JfSEdfUkUgPSByZS5jb21waWxlKCdeKC4qPykgPzwoLio/KSg/Oj4oLispPyk/JCcpCitSQVdfQVVUSE9SX1JFID0gcmUuY29tcGlsZSgnXihcdyspICg/OiguKyk/ICk/PCguKik+IChcZCspIChbKy1dXGQrKScpCisKK2RlZiBkaWUobXNnLCAqYXJncyk6CisgICAgc3lzLnN0ZGVyci53cml0ZSgnRVJST1I6ICVzXG4nICUgKG1zZyAlIGFyZ3MpKQorICAgIHN5cy5leGl0KDEpCisKK2RlZiB3YXJuKG1zZywgKmFyZ3MpOgorICAgIHN5cy5zdGRlcnIud3JpdGUoJ1dBUk5JTkc6ICVzXG4nICUgKG1zZyAlIGFyZ3MpKQorCitkZWYgZ2l0bW9kZShmbGFncyk6CisgICAgcmV0dXJuICdsJyBpbiBmbGFncyBhbmQgJzEyMDAwMCcgb3IgJ3gnIGluIGZsYWdzIGFuZCAnMTAwNzU1JyBvciAnMTAwNjQ0JworCitkZWYgZ2l0dHoodHopOgorICAgIHJldHVybiAnJSswM2QlMDJkJyAlICgtdHogLyAzNjAwLCAtdHogJSAzNjAwIC8gNjApCisKK2RlZiBoZ21vZGUobW9kZSk6CisgICAgbSA9IHsgJzEwMDc1NSc6ICd4JywgJzEyMDAwMCc6ICdsJyB9CisgICAgcmV0dXJuIG0uZ2V0KG1vZGUsICcnKQorCitkZWYgaGdoZXgobm9kZSk6CisgICAgcmV0dXJuIGhnLm5vZGUuaGV4KG5vZGUpCisKK2RlZiBoZ3JlZihyZWYpOgorICAgIHJldHVybiByZWYucmVwbGFjZSgnX19fJywgJyAnKQorCitkZWYgZ2l0cmVmKHJlZik6CisgICAgcmV0dXJuIHJlZi5yZXBsYWNlKCcgJywgJ19fXycpCisKK2RlZiBnZXRfY29uZmlnKGNvbmZpZyk6CisgICAgY21kID0gWydnaXQnLCAnY29uZmlnJywgJy0tZ2V0JywgY29uZmlnXQorICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICBvdXRwdXQsIF8gPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICByZXR1cm4gb3V0cHV0CisKK2RlZiBnZXRfY29uZmlnX2Jvb2woY29uZmlnLCBkZWZhdWx0PUZhbHNlKToKKyAgICB2YWx1ZSA9IGdldF9jb25maWcoY29uZmlnKS5yc3RyaXAoJ1xuJykKKyAgICBpZiB2YWx1ZSA9PSAidHJ1ZSI6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgZWxpZiB2YWx1ZSA9PSAiZmFsc2UiOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gZGVmYXVsdAorCitjbGFzcyBNYXJrczoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBzZWxmLnRpcHMgPSB7fQorICAgICAgICBzZWxmLm1hcmtzID0ge30KKyAgICAgICAgc2VsZi5yZXZfbWFya3MgPSB7fQorICAgICAgICBzZWxmLmxhc3RfbWFyayA9IDAKKworICAgICAgICBzZWxmLmxvYWQoKQorCisgICAgZGVmIGxvYWQoc2VsZik6CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLnBhdGgpOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgdG1wID0ganNvbi5sb2FkKG9wZW4oc2VsZi5wYXRoKSkKKworICAgICAgICBzZWxmLnRpcHMgPSB0bXBbJ3RpcHMnXQorICAgICAgICBzZWxmLm1hcmtzID0gdG1wWydtYXJrcyddCisgICAgICAgIHNlbGYubGFzdF9tYXJrID0gdG1wWydsYXN0LW1hcmsnXQorCisgICAgICAgIGZvciByZXYsIG1hcmsgaW4gc2VsZi5tYXJrcy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYucmV2X21hcmtzW21hcmtdID0gaW50KHJldikKKworICAgIGRlZiBkaWN0KHNlbGYpOgorICAgICAgICByZXR1cm4geyAndGlwcyc6IHNlbGYudGlwcywgJ21hcmtzJzogc2VsZi5tYXJrcywgJ2xhc3QtbWFyaycgOiBzZWxmLmxhc3RfbWFyayB9CisKKyAgICBkZWYgc3RvcmUoc2VsZik6CisgICAgICAgIGpzb24uZHVtcChzZWxmLmRpY3QoKSwgb3BlbihzZWxmLnBhdGgsICd3JykpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmLmRpY3QoKSkKKworICAgIGRlZiBmcm9tX3JldihzZWxmLCByZXYpOgorICAgICAgICByZXR1cm4gc2VsZi5tYXJrc1tzdHIocmV2KV0KKworICAgIGRlZiB0b19yZXYoc2VsZiwgbWFyayk6CisgICAgICAgIHJldHVybiBzZWxmLnJldl9tYXJrc1ttYXJrXQorCisgICAgZGVmIG5leHRfbWFyayhzZWxmKToKKyAgICAgICAgc2VsZi5sYXN0X21hcmsgKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5sYXN0X21hcmsKKworICAgIGRlZiBnZXRfbWFyayhzZWxmLCByZXYpOgorICAgICAgICBzZWxmLmxhc3RfbWFyayArPSAxCisgICAgICAgIHNlbGYubWFya3Nbc3RyKHJldildID0gc2VsZi5sYXN0X21hcmsKKyAgICAgICAgcmV0dXJuIHNlbGYubGFzdF9tYXJrCisKKyAgICBkZWYgbmV3X21hcmsoc2VsZiwgcmV2LCBtYXJrKToKKyAgICAgICAgc2VsZi5tYXJrc1tzdHIocmV2KV0gPSBtYXJrCisgICAgICAgIHNlbGYucmV2X21hcmtzW21hcmtdID0gcmV2CisgICAgICAgIHNlbGYubGFzdF9tYXJrID0gbWFyaworCisgICAgZGVmIGlzX21hcmtlZChzZWxmLCByZXYpOgorICAgICAgICByZXR1cm4gc3RyKHJldikgaW4gc2VsZi5tYXJrcworCisgICAgZGVmIGdldF90aXAoc2VsZiwgYnJhbmNoKToKKyAgICAgICAgcmV0dXJuIHNlbGYudGlwcy5nZXQoYnJhbmNoLCAwKQorCisgICAgZGVmIHNldF90aXAoc2VsZiwgYnJhbmNoLCB0aXApOgorICAgICAgICBzZWxmLnRpcHNbYnJhbmNoXSA9IHRpcAorCitjbGFzcyBQYXJzZXI6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVwbyk6CisgICAgICAgIHNlbGYucmVwbyA9IHJlcG8KKyAgICAgICAgc2VsZi5saW5lID0gc2VsZi5nZXRfbGluZSgpCisKKyAgICBkZWYgZ2V0X2xpbmUoc2VsZik6CisgICAgICAgIHJldHVybiBzeXMuc3RkaW4ucmVhZGxpbmUoKS5zdHJpcCgpCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6CisgICAgICAgIHJldHVybiBzZWxmLmxpbmUuc3BsaXQoKVtpXQorCisgICAgZGVmIGNoZWNrKHNlbGYsIHdvcmQpOgorICAgICAgICByZXR1cm4gc2VsZi5saW5lLnN0YXJ0c3dpdGgod29yZCkKKworICAgIGRlZiBlYWNoX2Jsb2NrKHNlbGYsIHNlcGFyYXRvcik6CisgICAgICAgIHdoaWxlIHNlbGYubGluZSAhPSBzZXBhcmF0b3I6CisgICAgICAgICAgICB5aWVsZCBzZWxmLmxpbmUKKyAgICAgICAgICAgIHNlbGYubGluZSA9IHNlbGYuZ2V0X2xpbmUoKQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5lYWNoX2Jsb2NrKCcnKQorCisgICAgZGVmIG5leHQoc2VsZik6CisgICAgICAgIHNlbGYubGluZSA9IHNlbGYuZ2V0X2xpbmUoKQorICAgICAgICBpZiBzZWxmLmxpbmUgPT0gJ2RvbmUnOgorICAgICAgICAgICAgc2VsZi5saW5lID0gTm9uZQorCisgICAgZGVmIGdldF9tYXJrKHNlbGYpOgorICAgICAgICBpID0gc2VsZi5saW5lLmluZGV4KCc6JykgKyAxCisgICAgICAgIHJldHVybiBpbnQoc2VsZi5saW5lW2k6XSkKKworICAgIGRlZiBnZXRfZGF0YShzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuY2hlY2soJ2RhdGEnKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGkgPSBzZWxmLmxpbmUuaW5kZXgoJyAnKSArIDEKKyAgICAgICAgc2l6ZSA9IGludChzZWxmLmxpbmVbaTpdKQorICAgICAgICByZXR1cm4gc3lzLnN0ZGluLnJlYWQoc2l6ZSkKKworICAgIGRlZiBnZXRfYXV0aG9yKHNlbGYpOgorICAgICAgICBnbG9iYWwgYmFkX21haWwKKworICAgICAgICBleCA9IE5vbmUKKyAgICAgICAgbSA9IFJBV19BVVRIT1JfUkUubWF0Y2goc2VsZi5saW5lKQorICAgICAgICBpZiBub3QgbToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIF8sIG5hbWUsIGVtYWlsLCBkYXRlLCB0eiA9IG0uZ3JvdXBzKCkKKyAgICAgICAgaWYgbmFtZSBhbmQgJ2V4dDonIGluIG5hbWU6CisgICAgICAgICAgICBtID0gcmUubWF0Y2goJ14oLis/KSBleHQ6XCgoLispXCkkJywgbmFtZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgbmFtZSA9IG0uZ3JvdXAoMSkKKyAgICAgICAgICAgICAgICBleCA9IHVybGxpYi51bnF1b3RlKG0uZ3JvdXAoMikpCisKKyAgICAgICAgaWYgZW1haWwgIT0gYmFkX21haWw6CisgICAgICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAgICAgIHVzZXIgPSAnJXMgPCVzPicgJSAobmFtZSwgZW1haWwpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHVzZXIgPSAnPCVzPicgJSAoZW1haWwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB1c2VyID0gbmFtZQorCisgICAgICAgIGlmIGV4OgorICAgICAgICAgICAgdXNlciArPSBleAorCisgICAgICAgIHR6ID0gaW50KHR6KQorICAgICAgICB0eiA9ICgodHogLyAxMDApICogMzYwMCkgKyAoKHR6ICUgMTAwKSAqIDYwKQorICAgICAgICByZXR1cm4gKHVzZXIsIGludChkYXRlKSwgLXR6KQorCitkZWYgZml4X2ZpbGVfcGF0aChwYXRoKToKKyAgICBpZiBub3Qgb3MucGF0aC5pc2FicyhwYXRoKToKKyAgICAgICAgcmV0dXJuIHBhdGgKKyAgICByZXR1cm4gb3MucGF0aC5yZWxwYXRoKHBhdGgsICcvJykKKworZGVmIGV4cG9ydF9maWxlcyhmaWxlcyk6CisgICAgZ2xvYmFsIG1hcmtzLCBmaWxlbm9kZXMKKworICAgIGZpbmFsID0gW10KKyAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgZmlkID0gbm9kZS5oZXgoZi5maWxlbm9kZSgpKQorCisgICAgICAgIGlmIGZpZCBpbiBmaWxlbm9kZXM6CisgICAgICAgICAgICBtYXJrID0gZmlsZW5vZGVzW2ZpZF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1hcmsgPSBtYXJrcy5uZXh0X21hcmsoKQorICAgICAgICAgICAgZmlsZW5vZGVzW2ZpZF0gPSBtYXJrCisgICAgICAgICAgICBkID0gZi5kYXRhKCkKKworICAgICAgICAgICAgcHJpbnQgImJsb2IiCisgICAgICAgICAgICBwcmludCAibWFyayA6JXUiICUgbWFyaworICAgICAgICAgICAgcHJpbnQgImRhdGEgJWQiICUgbGVuKGQpCisgICAgICAgICAgICBwcmludCBkCisKKyAgICAgICAgcGF0aCA9IGZpeF9maWxlX3BhdGgoZi5wYXRoKCkpCisgICAgICAgIGZpbmFsLmFwcGVuZCgoZ2l0bW9kZShmLmZsYWdzKCkpLCBtYXJrLCBwYXRoKSkKKworICAgIHJldHVybiBmaW5hbAorCitkZWYgZ2V0X2ZpbGVjaGFuZ2VzKHJlcG8sIGN0eCwgcGFyZW50KToKKyAgICBtb2RpZmllZCA9IHNldCgpCisgICAgYWRkZWQgPSBzZXQoKQorICAgIHJlbW92ZWQgPSBzZXQoKQorCisgICAgIyBsb2FkIGVhcmxpZXN0IG1hbmlmZXN0IGZpcnN0IGZvciBjYWNoaW5nIHJlYXNvbnMKKyAgICBwcmV2ID0gcmVwb1twYXJlbnRdLm1hbmlmZXN0KCkuY29weSgpCisgICAgY3VyID0gY3R4Lm1hbmlmZXN0KCkKKworICAgIGZvciBmbiBpbiBjdXI6CisgICAgICAgIGlmIGZuIGluIHByZXY6CisgICAgICAgICAgICBpZiAoY3VyLmZsYWdzKGZuKSAhPSBwcmV2LmZsYWdzKGZuKSBvciBjdXJbZm5dICE9IHByZXZbZm5dKToKKyAgICAgICAgICAgICAgICBtb2RpZmllZC5hZGQoZm4pCisgICAgICAgICAgICBkZWwgcHJldltmbl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFkZGVkLmFkZChmbikKKyAgICByZW1vdmVkIHw9IHNldChwcmV2LmtleXMoKSkKKworICAgIHJldHVybiBhZGRlZCB8IG1vZGlmaWVkLCByZW1vdmVkCisKK2RlZiBmaXh1cF91c2VyX2dpdCh1c2VyKToKKyAgICBuYW1lID0gbWFpbCA9IE5vbmUKKyAgICB1c2VyID0gdXNlci5yZXBsYWNlKCciJywgJycpCisgICAgbSA9IEFVVEhPUl9SRS5tYXRjaCh1c2VyKQorICAgIGlmIG06CisgICAgICAgIG5hbWUgPSBtLmdyb3VwKDEpCisgICAgICAgIG1haWwgPSBtLmdyb3VwKDIpLnN0cmlwKCkKKyAgICBlbHNlOgorICAgICAgICBtID0gRU1BSUxfUkUubWF0Y2godXNlcikKKyAgICAgICAgaWYgbToKKyAgICAgICAgICAgIG5hbWUgPSBtLmdyb3VwKDEpCisgICAgICAgICAgICBtYWlsID0gbS5ncm91cCgyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbSA9IE5BTUVfUkUubWF0Y2godXNlcikKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgbmFtZSA9IG0uZ3JvdXAoMSkuc3RyaXAoKQorICAgIHJldHVybiAobmFtZSwgbWFpbCkKKworZGVmIGZpeHVwX3VzZXJfaGcodXNlcik6CisgICAgZGVmIHNhbml0aXplKG5hbWUpOgorICAgICAgICAjIHN0b2xlIHRoaXMgZnJvbSBoZy1naXQKKyAgICAgICAgcmV0dXJuIHJlLnN1YignWzw+XG5dJywgJz8nLCBuYW1lLmxzdHJpcCgnPCAnKS5yc3RyaXAoJz4gJykpCisKKyAgICBtID0gQVVUSE9SX0hHX1JFLm1hdGNoKHVzZXIpCisgICAgaWYgbToKKyAgICAgICAgbmFtZSA9IHNhbml0aXplKG0uZ3JvdXAoMSkpCisgICAgICAgIG1haWwgPSBzYW5pdGl6ZShtLmdyb3VwKDIpKQorICAgICAgICBleCA9IG0uZ3JvdXAoMykKKyAgICAgICAgaWYgZXg6CisgICAgICAgICAgICBuYW1lICs9ICcgZXh0OignICsgdXJsbGliLnF1b3RlKGV4KSArICcpJworICAgIGVsc2U6CisgICAgICAgIG5hbWUgPSBzYW5pdGl6ZSh1c2VyKQorICAgICAgICBpZiAnQCcgaW4gdXNlcjoKKyAgICAgICAgICAgIG1haWwgPSBuYW1lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtYWlsID0gTm9uZQorCisgICAgcmV0dXJuIChuYW1lLCBtYWlsKQorCitkZWYgZml4dXBfdXNlcih1c2VyKToKKyAgICBnbG9iYWwgbW9kZSwgYmFkX21haWwKKworICAgIGlmIG1vZGUgPT0gJ2dpdCc6CisgICAgICAgIG5hbWUsIG1haWwgPSBmaXh1cF91c2VyX2dpdCh1c2VyKQorICAgIGVsc2U6CisgICAgICAgIG5hbWUsIG1haWwgPSBmaXh1cF91c2VyX2hnKHVzZXIpCisKKyAgICBpZiBub3QgbmFtZToKKyAgICAgICAgbmFtZSA9IGJhZF9uYW1lCisgICAgaWYgbm90IG1haWw6CisgICAgICAgIG1haWwgPSBiYWRfbWFpbAorCisgICAgcmV0dXJuICclcyA8JXM+JyAlIChuYW1lLCBtYWlsKQorCitkZWYgZ2V0X3JlcG8odXJsLCBhbGlhcyk6CisgICAgZ2xvYmFsIGRpcm5hbWUsIHBlZXIKKworICAgIG15dWkgPSB1aS51aSgpCisgICAgbXl1aS5zZXRjb25maWcoJ3VpJywgJ2ludGVyYWN0aXZlJywgJ29mZicpCisgICAgbXl1aS5mb3V0ID0gc3lzLnN0ZGVycgorCisgICAgaWYgZ2V0X2NvbmZpZ19ib29sKCdyZW1vdGUtaGcuaW5zZWN1cmUnKToKKyAgICAgICAgbXl1aS5zZXRjb25maWcoJ3dlYicsICdjYWNlcnRzJywgJycpCisKKyAgICB0cnk6CisgICAgICAgIG1vZCA9IGV4dGVuc2lvbnMubG9hZChteXVpLCAnaGdleHQuc2NoZW1lcycsIE5vbmUpCisgICAgICAgIG1vZC5leHRzZXR1cChteXVpKQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworCisgICAgaWYgaGcuaXNsb2NhbCh1cmwpOgorICAgICAgICByZXBvID0gaGcucmVwb3NpdG9yeShteXVpLCB1cmwpCisgICAgZWxzZToKKyAgICAgICAgbG9jYWxfcGF0aCA9IG9zLnBhdGguam9pbihkaXJuYW1lLCAnY2xvbmUnKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobG9jYWxfcGF0aCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcGVlciwgZHN0cGVlciA9IGhnLmNsb25lKG15dWksIHt9LCB1cmwsIGxvY2FsX3BhdGgsIHVwZGF0ZT1UcnVlLCBwdWxsPVRydWUpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgZGllKCdSZXBvc2l0b3J5IGVycm9yJykKKyAgICAgICAgICAgIHJlcG8gPSBkc3RwZWVyLmxvY2FsKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcG8gPSBoZy5yZXBvc2l0b3J5KG15dWksIGxvY2FsX3BhdGgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcGVlciA9IGhnLnBlZXIobXl1aSwge30sIHVybCkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBkaWUoJ1JlcG9zaXRvcnkgZXJyb3InKQorICAgICAgICAgICAgcmVwby5wdWxsKHBlZXIsIGhlYWRzPU5vbmUsIGZvcmNlPVRydWUpCisKKyAgICByZXR1cm4gcmVwbworCitkZWYgcmV2X3RvX21hcmsocmV2KToKKyAgICBnbG9iYWwgbWFya3MKKyAgICByZXR1cm4gbWFya3MuZnJvbV9yZXYocmV2KQorCitkZWYgbWFya190b19yZXYobWFyayk6CisgICAgZ2xvYmFsIG1hcmtzCisgICAgcmV0dXJuIG1hcmtzLnRvX3JldihtYXJrKQorCitkZWYgZXhwb3J0X3JlZihyZXBvLCBuYW1lLCBraW5kLCBoZWFkKToKKyAgICBnbG9iYWwgcHJlZml4LCBtYXJrcywgbW9kZQorCisgICAgZW5hbWUgPSAnJXMvJXMnICUgKGtpbmQsIG5hbWUpCisgICAgdGlwID0gbWFya3MuZ2V0X3RpcChlbmFtZSkKKworICAgIHJldnMgPSB4cmFuZ2UodGlwLCBoZWFkLnJldigpICsgMSkKKyAgICBjb3VudCA9IDAKKworICAgIHJldnMgPSBbcmV2IGZvciByZXYgaW4gcmV2cyBpZiBub3QgbWFya3MuaXNfbWFya2VkKHJldildCisKKyAgICBmb3IgcmV2IGluIHJldnM6CisKKyAgICAgICAgYyA9IHJlcG9bcmV2XQorICAgICAgICAobWFuaWZlc3QsIHVzZXIsICh0aW1lLCB0eiksIGZpbGVzLCBkZXNjLCBleHRyYSkgPSByZXBvLmNoYW5nZWxvZy5yZWFkKGMubm9kZSgpKQorICAgICAgICByZXZfYnJhbmNoID0gZXh0cmFbJ2JyYW5jaCddCisKKyAgICAgICAgYXV0aG9yID0gIiVzICVkICVzIiAlIChmaXh1cF91c2VyKHVzZXIpLCB0aW1lLCBnaXR0eih0eikpCisgICAgICAgIGlmICdjb21taXR0ZXInIGluIGV4dHJhOgorICAgICAgICAgICAgdXNlciwgdGltZSwgdHogPSBleHRyYVsnY29tbWl0dGVyJ10ucnNwbGl0KCcgJywgMikKKyAgICAgICAgICAgIGNvbW1pdHRlciA9ICIlcyAlcyAlcyIgJSAodXNlciwgdGltZSwgZ2l0dHooaW50KHR6KSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb21taXR0ZXIgPSBhdXRob3IKKworICAgICAgICBwYXJlbnRzID0gW3AgZm9yIHAgaW4gcmVwby5jaGFuZ2Vsb2cucGFyZW50cmV2cyhyZXYpIGlmIHAgPj0gMF0KKworICAgICAgICBpZiBsZW4ocGFyZW50cykgPT0gMDoKKyAgICAgICAgICAgIG1vZGlmaWVkID0gYy5tYW5pZmVzdCgpLmtleXMoKQorICAgICAgICAgICAgcmVtb3ZlZCA9IFtdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtb2RpZmllZCwgcmVtb3ZlZCA9IGdldF9maWxlY2hhbmdlcyhyZXBvLCBjLCBwYXJlbnRzWzBdKQorCisgICAgICAgIGRlc2MgKz0gJ1xuJworCisgICAgICAgIGlmIG1vZGUgPT0gJ2hnJzoKKyAgICAgICAgICAgIGV4dHJhX21zZyA9ICcnCisKKyAgICAgICAgICAgIGlmIHJldl9icmFuY2ggIT0gJ2RlZmF1bHQnOgorICAgICAgICAgICAgICAgIGV4dHJhX21zZyArPSAnYnJhbmNoIDogJXNcbicgJSByZXZfYnJhbmNoCisKKyAgICAgICAgICAgIHJlbmFtZXMgPSBbXQorICAgICAgICAgICAgZm9yIGYgaW4gYy5maWxlcygpOgorICAgICAgICAgICAgICAgIGlmIGYgbm90IGluIGMubWFuaWZlc3QoKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICByZW5hbWUgPSBjLmZpbGVjdHgoZikucmVuYW1lZCgpCisgICAgICAgICAgICAgICAgaWYgcmVuYW1lOgorICAgICAgICAgICAgICAgICAgICByZW5hbWVzLmFwcGVuZCgocmVuYW1lWzBdLCBmKSkKKworICAgICAgICAgICAgZm9yIGUgaW4gcmVuYW1lczoKKyAgICAgICAgICAgICAgICBleHRyYV9tc2cgKz0gInJlbmFtZSA6ICVzID0+ICVzXG4iICUgZQorCisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBleHRyYS5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gKCdhdXRob3InLCAnY29tbWl0dGVyJywgJ2VuY29kaW5nJywgJ21lc3NhZ2UnLCAnYnJhbmNoJywgJ2hnLWdpdCcpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGV4dHJhX21zZyArPSAiZXh0cmEgOiAlcyA6ICVzXG4iICUgKGtleSwgdXJsbGliLnF1b3RlKHZhbHVlKSkKKworICAgICAgICAgICAgaWYgZXh0cmFfbXNnOgorICAgICAgICAgICAgICAgIGRlc2MgKz0gJ1xuLS1IRy0tXG4nICsgZXh0cmFfbXNnCisKKyAgICAgICAgaWYgbGVuKHBhcmVudHMpID09IDAgYW5kIHJldjoKKyAgICAgICAgICAgIHByaW50ICdyZXNldCAlcy8lcycgJSAocHJlZml4LCBlbmFtZSkKKworICAgICAgICBtb2RpZmllZF9maW5hbCA9IGV4cG9ydF9maWxlcyhjLmZpbGVjdHgoZikgZm9yIGYgaW4gbW9kaWZpZWQpCisKKyAgICAgICAgcHJpbnQgImNvbW1pdCAlcy8lcyIgJSAocHJlZml4LCBlbmFtZSkKKyAgICAgICAgcHJpbnQgIm1hcmsgOiVkIiAlIChtYXJrcy5nZXRfbWFyayhyZXYpKQorICAgICAgICBwcmludCAiYXV0aG9yICVzIiAlIChhdXRob3IpCisgICAgICAgIHByaW50ICJjb21taXR0ZXIgJXMiICUgKGNvbW1pdHRlcikKKyAgICAgICAgcHJpbnQgImRhdGEgJWQiICUgKGxlbihkZXNjKSkKKyAgICAgICAgcHJpbnQgZGVzYworCisgICAgICAgIGlmIGxlbihwYXJlbnRzKSA+IDA6CisgICAgICAgICAgICBwcmludCAiZnJvbSA6JXMiICUgKHJldl90b19tYXJrKHBhcmVudHNbMF0pKQorICAgICAgICAgICAgaWYgbGVuKHBhcmVudHMpID4gMToKKyAgICAgICAgICAgICAgICBwcmludCAibWVyZ2UgOiVzIiAlIChyZXZfdG9fbWFyayhwYXJlbnRzWzFdKSkKKworICAgICAgICBmb3IgZiBpbiBtb2RpZmllZF9maW5hbDoKKyAgICAgICAgICAgIHByaW50ICJNICVzIDoldSAlcyIgJSBmCisgICAgICAgIGZvciBmIGluIHJlbW92ZWQ6CisgICAgICAgICAgICBwcmludCAiRCAlcyIgJSAoZml4X2ZpbGVfcGF0aChmKSkKKyAgICAgICAgcHJpbnQKKworICAgICAgICBjb3VudCArPSAxCisgICAgICAgIGlmIChjb3VudCAlIDEwMCA9PSAwKToKKyAgICAgICAgICAgIHByaW50ICJwcm9ncmVzcyByZXZpc2lvbiAlZCAnJXMnICglZC8lZCkiICUgKHJldiwgbmFtZSwgY291bnQsIGxlbihyZXZzKSkKKworICAgICMgbWFrZSBzdXJlIHRoZSByZWYgaXMgdXBkYXRlZAorICAgIHByaW50ICJyZXNldCAlcy8lcyIgJSAocHJlZml4LCBlbmFtZSkKKyAgICBwcmludCAiZnJvbSA6JXUiICUgcmV2X3RvX21hcmsocmV2KQorICAgIHByaW50CisKKyAgICBtYXJrcy5zZXRfdGlwKGVuYW1lLCByZXYpCisKK2RlZiBleHBvcnRfdGFnKHJlcG8sIHRhZyk6CisgICAgZXhwb3J0X3JlZihyZXBvLCB0YWcsICd0YWdzJywgcmVwb1toZ3JlZih0YWcpXSkKKworZGVmIGV4cG9ydF9ib29rbWFyayhyZXBvLCBibWFyayk6CisgICAgaGVhZCA9IGJtYXJrc1toZ3JlZihibWFyayldCisgICAgZXhwb3J0X3JlZihyZXBvLCBibWFyaywgJ2Jvb2ttYXJrcycsIGhlYWQpCisKK2RlZiBleHBvcnRfYnJhbmNoKHJlcG8sIGJyYW5jaCk6CisgICAgdGlwID0gZ2V0X2JyYW5jaF90aXAocmVwbywgYnJhbmNoKQorICAgIGhlYWQgPSByZXBvW3RpcF0KKyAgICBleHBvcnRfcmVmKHJlcG8sIGJyYW5jaCwgJ2JyYW5jaGVzJywgaGVhZCkKKworZGVmIGV4cG9ydF9oZWFkKHJlcG8pOgorICAgIGdsb2JhbCBnX2hlYWQKKyAgICBleHBvcnRfcmVmKHJlcG8sIGdfaGVhZFswXSwgJ2Jvb2ttYXJrcycsIGdfaGVhZFsxXSkKKworZGVmIGRvX2NhcGFiaWxpdGllcyhwYXJzZXIpOgorICAgIGdsb2JhbCBwcmVmaXgsIGRpcm5hbWUKKworICAgIHByaW50ICJpbXBvcnQiCisgICAgcHJpbnQgImV4cG9ydCIKKyAgICBwcmludCAicmVmc3BlYyByZWZzL2hlYWRzL2JyYW5jaGVzLyo6JXMvYnJhbmNoZXMvKiIgJSBwcmVmaXgKKyAgICBwcmludCAicmVmc3BlYyByZWZzL2hlYWRzLyo6JXMvYm9va21hcmtzLyoiICUgcHJlZml4CisgICAgcHJpbnQgInJlZnNwZWMgcmVmcy90YWdzLyo6JXMvdGFncy8qIiAlIHByZWZpeAorCisgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXJuYW1lLCAnbWFya3MtZ2l0JykKKworICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgorICAgICAgICBwcmludCAiKmltcG9ydC1tYXJrcyAlcyIgJSBwYXRoCisgICAgcHJpbnQgIipleHBvcnQtbWFya3MgJXMiICUgcGF0aAorCisgICAgcHJpbnQKKworZGVmIGJyYW5jaF90aXAocmVwbywgYnJhbmNoKToKKyAgICAjIG9sZGVyIHZlcnNpb25zIG9mIG1lcmN1cmlhbCBkb24ndCBoYXZlIHRoaXMKKyAgICBpZiBoYXNhdHRyKHJlcG8sICdicmFuY2h0aXAnKToKKyAgICAgICAgcmV0dXJuIHJlcG8uYnJhbmNodGlwKGJyYW5jaCkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gcmVwby5icmFuY2h0YWdzKClbYnJhbmNoXQorCitkZWYgZ2V0X2JyYW5jaF90aXAocmVwbywgYnJhbmNoKToKKyAgICBnbG9iYWwgYnJhbmNoZXMKKworICAgIGhlYWRzID0gYnJhbmNoZXMuZ2V0KGhncmVmKGJyYW5jaCksIE5vbmUpCisgICAgaWYgbm90IGhlYWRzOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgIyB2ZXJpZnkgdGhlcmUncyBvbmx5IG9uZSBoZWFkCisgICAgaWYgKGxlbihoZWFkcykgPiAxKToKKyAgICAgICAgd2FybigiQnJhbmNoICclcycgaGFzIG1vcmUgdGhhbiBvbmUgaGVhZCwgY29uc2lkZXIgbWVyZ2luZyIgJSBicmFuY2gpCisgICAgICAgIHJldHVybiBicmFuY2hfdGlwKHJlcG8sIGhncmVmKGJyYW5jaCkpCisKKyAgICByZXR1cm4gaGVhZHNbMF0KKworZGVmIGxpc3RfaGVhZChyZXBvLCBjdXIpOgorICAgIGdsb2JhbCBnX2hlYWQsIGJtYXJrcworCisgICAgaGVhZCA9IGJvb2ttYXJrcy5yZWFkY3VycmVudChyZXBvKQorICAgIGlmIGhlYWQ6CisgICAgICAgIG5vZGUgPSByZXBvW2hlYWRdCisgICAgZWxzZToKKyAgICAgICAgIyBmYWtlIGJvb2ttYXJrIGZyb20gY3VycmVudCBicmFuY2gKKyAgICAgICAgaGVhZCA9IGN1cgorICAgICAgICBub2RlID0gcmVwb1snLiddCisgICAgICAgIGlmIG5vdCBub2RlOgorICAgICAgICAgICAgbm9kZSA9IHJlcG9bJ3RpcCddCisgICAgICAgIGlmIG5vdCBub2RlOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGhlYWQgPT0gJ2RlZmF1bHQnOgorICAgICAgICAgICAgaGVhZCA9ICdtYXN0ZXInCisgICAgICAgIGJtYXJrc1toZWFkXSA9IG5vZGUKKworICAgIGhlYWQgPSBnaXRyZWYoaGVhZCkKKyAgICBwcmludCAiQHJlZnMvaGVhZHMvJXMgSEVBRCIgJSBoZWFkCisgICAgZ19oZWFkID0gKGhlYWQsIG5vZGUpCisKK2RlZiBkb19saXN0KHBhcnNlcik6CisgICAgZ2xvYmFsIGJyYW5jaGVzLCBibWFya3MsIHRyYWNrX2JyYW5jaGVzCisKKyAgICByZXBvID0gcGFyc2VyLnJlcG8KKyAgICBmb3IgYm1hcmssIG5vZGUgaW4gYm9va21hcmtzLmxpc3Rib29rbWFya3MocmVwbykuaXRlcml0ZW1zKCk6CisgICAgICAgIGJtYXJrc1tibWFya10gPSByZXBvW25vZGVdCisKKyAgICBjdXIgPSByZXBvLmRpcnN0YXRlLmJyYW5jaCgpCisKKyAgICBsaXN0X2hlYWQocmVwbywgY3VyKQorCisgICAgaWYgdHJhY2tfYnJhbmNoZXM6CisgICAgICAgIGZvciBicmFuY2ggaW4gcmVwby5icmFuY2htYXAoKToKKyAgICAgICAgICAgIGhlYWRzID0gcmVwby5icmFuY2hoZWFkcyhicmFuY2gpCisgICAgICAgICAgICBpZiBsZW4oaGVhZHMpOgorICAgICAgICAgICAgICAgIGJyYW5jaGVzW2JyYW5jaF0gPSBoZWFkcworCisgICAgICAgIGZvciBicmFuY2ggaW4gYnJhbmNoZXM6CisgICAgICAgICAgICBwcmludCAiPyByZWZzL2hlYWRzL2JyYW5jaGVzLyVzIiAlIGdpdHJlZihicmFuY2gpCisKKyAgICBmb3IgYm1hcmsgaW4gYm1hcmtzOgorICAgICAgICBwcmludCAiPyByZWZzL2hlYWRzLyVzIiAlIGdpdHJlZihibWFyaykKKworICAgIGZvciB0YWcsIG5vZGUgaW4gcmVwby50YWdzbGlzdCgpOgorICAgICAgICBpZiB0YWcgPT0gJ3RpcCc6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBwcmludCAiPyByZWZzL3RhZ3MvJXMiICUgZ2l0cmVmKHRhZykKKworICAgIHByaW50CisKK2RlZiBkb19pbXBvcnQocGFyc2VyKToKKyAgICByZXBvID0gcGFyc2VyLnJlcG8KKworICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ21hcmtzLWdpdCcpCisKKyAgICBwcmludCAiZmVhdHVyZSBkb25lIgorICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgorICAgICAgICBwcmludCAiZmVhdHVyZSBpbXBvcnQtbWFya3M9JXMiICUgcGF0aAorICAgIHByaW50ICJmZWF0dXJlIGV4cG9ydC1tYXJrcz0lcyIgJSBwYXRoCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisKKyAgICB0bXAgPSBlbmNvZGluZy5lbmNvZGluZworICAgIGVuY29kaW5nLmVuY29kaW5nID0gJ3V0Zi04JworCisgICAgIyBsZXRzIGdldCBhbGwgdGhlIGltcG9ydCBsaW5lcworICAgIHdoaWxlIHBhcnNlci5jaGVjaygnaW1wb3J0Jyk6CisgICAgICAgIHJlZiA9IHBhcnNlclsxXQorCisgICAgICAgIGlmIChyZWYgPT0gJ0hFQUQnKToKKyAgICAgICAgICAgIGV4cG9ydF9oZWFkKHJlcG8pCisgICAgICAgIGVsaWYgcmVmLnN0YXJ0c3dpdGgoJ3JlZnMvaGVhZHMvYnJhbmNoZXMvJyk6CisgICAgICAgICAgICBicmFuY2ggPSByZWZbbGVuKCdyZWZzL2hlYWRzL2JyYW5jaGVzLycpOl0KKyAgICAgICAgICAgIGV4cG9ydF9icmFuY2gocmVwbywgYnJhbmNoKQorICAgICAgICBlbGlmIHJlZi5zdGFydHN3aXRoKCdyZWZzL2hlYWRzLycpOgorICAgICAgICAgICAgYm1hcmsgPSByZWZbbGVuKCdyZWZzL2hlYWRzLycpOl0KKyAgICAgICAgICAgIGV4cG9ydF9ib29rbWFyayhyZXBvLCBibWFyaykKKyAgICAgICAgZWxpZiByZWYuc3RhcnRzd2l0aCgncmVmcy90YWdzLycpOgorICAgICAgICAgICAgdGFnID0gcmVmW2xlbigncmVmcy90YWdzLycpOl0KKyAgICAgICAgICAgIGV4cG9ydF90YWcocmVwbywgdGFnKQorCisgICAgICAgIHBhcnNlci5uZXh0KCkKKworICAgIGVuY29kaW5nLmVuY29kaW5nID0gdG1wCisKKyAgICBwcmludCAnZG9uZScKKworZGVmIHBhcnNlX2Jsb2IocGFyc2VyKToKKyAgICBnbG9iYWwgYmxvYl9tYXJrcworCisgICAgcGFyc2VyLm5leHQoKQorICAgIG1hcmsgPSBwYXJzZXIuZ2V0X21hcmsoKQorICAgIHBhcnNlci5uZXh0KCkKKyAgICBkYXRhID0gcGFyc2VyLmdldF9kYXRhKCkKKyAgICBibG9iX21hcmtzW21hcmtdID0gZGF0YQorICAgIHBhcnNlci5uZXh0KCkKKworZGVmIGdldF9tZXJnZV9maWxlcyhyZXBvLCBwMSwgcDIsIGZpbGVzKToKKyAgICBmb3IgZSBpbiByZXBvW3AxXS5maWxlcygpOgorICAgICAgICBpZiBlIG5vdCBpbiBmaWxlczoKKyAgICAgICAgICAgIGlmIGUgbm90IGluIHJlcG9bcDFdLm1hbmlmZXN0KCk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGYgPSB7ICdjdHgnIDogcmVwb1twMV1bZV0gfQorICAgICAgICAgICAgZmlsZXNbZV0gPSBmCisKK2RlZiBwYXJzZV9jb21taXQocGFyc2VyKToKKyAgICBnbG9iYWwgbWFya3MsIGJsb2JfbWFya3MsIHBhcnNlZF9yZWZzCisgICAgZ2xvYmFsIG1vZGUKKworICAgIGZyb21fbWFyayA9IG1lcmdlX21hcmsgPSBOb25lCisKKyAgICByZWYgPSBwYXJzZXJbMV0KKyAgICBwYXJzZXIubmV4dCgpCisKKyAgICBjb21taXRfbWFyayA9IHBhcnNlci5nZXRfbWFyaygpCisgICAgcGFyc2VyLm5leHQoKQorICAgIGF1dGhvciA9IHBhcnNlci5nZXRfYXV0aG9yKCkKKyAgICBwYXJzZXIubmV4dCgpCisgICAgY29tbWl0dGVyID0gcGFyc2VyLmdldF9hdXRob3IoKQorICAgIHBhcnNlci5uZXh0KCkKKyAgICBkYXRhID0gcGFyc2VyLmdldF9kYXRhKCkKKyAgICBwYXJzZXIubmV4dCgpCisgICAgaWYgcGFyc2VyLmNoZWNrKCdmcm9tJyk6CisgICAgICAgIGZyb21fbWFyayA9IHBhcnNlci5nZXRfbWFyaygpCisgICAgICAgIHBhcnNlci5uZXh0KCkKKyAgICBpZiBwYXJzZXIuY2hlY2soJ21lcmdlJyk6CisgICAgICAgIG1lcmdlX21hcmsgPSBwYXJzZXIuZ2V0X21hcmsoKQorICAgICAgICBwYXJzZXIubmV4dCgpCisgICAgICAgIGlmIHBhcnNlci5jaGVjaygnbWVyZ2UnKToKKyAgICAgICAgICAgIGRpZSgnb2N0b3B1cyBtZXJnZXMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0JykKKworICAgICMgZmFzdC1leHBvcnQgYWRkcyBhbiBleHRyYSBuZXdsaW5lCisgICAgaWYgZGF0YVstMV0gPT0gJ1xuJzoKKyAgICAgICAgZGF0YSA9IGRhdGFbOi0xXQorCisgICAgZmlsZXMgPSB7fQorCisgICAgZm9yIGxpbmUgaW4gcGFyc2VyOgorICAgICAgICBpZiBwYXJzZXIuY2hlY2soJ00nKToKKyAgICAgICAgICAgIHQsIG0sIG1hcmtfcmVmLCBwYXRoID0gbGluZS5zcGxpdCgnICcsIDMpCisgICAgICAgICAgICBtYXJrID0gaW50KG1hcmtfcmVmWzE6XSkKKyAgICAgICAgICAgIGYgPSB7ICdtb2RlJyA6IGhnbW9kZShtKSwgJ2RhdGEnIDogYmxvYl9tYXJrc1ttYXJrXSB9CisgICAgICAgIGVsaWYgcGFyc2VyLmNoZWNrKCdEJyk6CisgICAgICAgICAgICB0LCBwYXRoID0gbGluZS5zcGxpdCgnICcsIDEpCisgICAgICAgICAgICBmID0geyAnZGVsZXRlZCcgOiBUcnVlIH0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRpZSgnVW5rbm93biBmaWxlIGNvbW1hbmQ6ICVzJyAlIGxpbmUpCisgICAgICAgIGZpbGVzW3BhdGhdID0gZgorCisgICAgZGVmIGdldGZpbGVjdHgocmVwbywgbWVtY3R4LCBmKToKKyAgICAgICAgb2YgPSBmaWxlc1tmXQorICAgICAgICBpZiAnZGVsZXRlZCcgaW4gb2Y6CisgICAgICAgICAgICByYWlzZSBJT0Vycm9yCisgICAgICAgIGlmICdjdHgnIGluIG9mOgorICAgICAgICAgICAgcmV0dXJuIG9mWydjdHgnXQorICAgICAgICBpc19leGVjID0gb2ZbJ21vZGUnXSA9PSAneCcKKyAgICAgICAgaXNfbGluayA9IG9mWydtb2RlJ10gPT0gJ2wnCisgICAgICAgIHJlbmFtZSA9IG9mLmdldCgncmVuYW1lJywgTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQubWVtZmlsZWN0eChmLCBvZlsnZGF0YSddLAorICAgICAgICAgICAgICAgIGlzX2xpbmssIGlzX2V4ZWMsIHJlbmFtZSkKKworICAgIHJlcG8gPSBwYXJzZXIucmVwbworCisgICAgdXNlciwgZGF0ZSwgdHogPSBhdXRob3IKKyAgICBleHRyYSA9IHt9CisKKyAgICBpZiBjb21taXR0ZXIgIT0gYXV0aG9yOgorICAgICAgICBleHRyYVsnY29tbWl0dGVyJ10gPSAiJXMgJXUgJXUiICUgY29tbWl0dGVyCisKKyAgICBpZiBmcm9tX21hcms6CisgICAgICAgIHAxID0gcmVwby5jaGFuZ2Vsb2cubm9kZShtYXJrX3RvX3Jldihmcm9tX21hcmspKQorICAgIGVsc2U6CisgICAgICAgIHAxID0gJ1wwJyAqIDIwCisKKyAgICBpZiBtZXJnZV9tYXJrOgorICAgICAgICBwMiA9IHJlcG8uY2hhbmdlbG9nLm5vZGUobWFya190b19yZXYobWVyZ2VfbWFyaykpCisgICAgZWxzZToKKyAgICAgICAgcDIgPSAnXDAnICogMjAKKworICAgICMKKyAgICAjIElmIGZpbGVzIGNoYW5nZWQgZnJvbSBhbnkgb2YgdGhlIHBhcmVudHMsIGhnIHdhbnRzIHRvIGtub3csIGJ1dCBpbiBnaXQgaWYKKyAgICAjIG5vdGhpbmcgY2hhbmdlZCBmcm9tIHRoZSBmaXJzdCBwYXJlbnQsIG5vdGhpbmcgY2hhbmdlZC4KKyAgICAjCisgICAgaWYgbWVyZ2VfbWFyazoKKyAgICAgICAgZ2V0X21lcmdlX2ZpbGVzKHJlcG8sIHAxLCBwMiwgZmlsZXMpCisKKyAgICAjIENoZWNrIGlmIHRoZSByZWYgaXMgc3VwcG9zZWQgdG8gYmUgYSBuYW1lZCBicmFuY2gKKyAgICBpZiByZWYuc3RhcnRzd2l0aCgncmVmcy9oZWFkcy9icmFuY2hlcy8nKToKKyAgICAgICAgYnJhbmNoID0gcmVmW2xlbigncmVmcy9oZWFkcy9icmFuY2hlcy8nKTpdCisgICAgICAgIGV4dHJhWydicmFuY2gnXSA9IGhncmVmKGJyYW5jaCkKKworICAgIGlmIG1vZGUgPT0gJ2hnJzoKKyAgICAgICAgaSA9IGRhdGEuZmluZCgnXG4tLUhHLS1cbicpCisgICAgICAgIGlmIGkgPj0gMDoKKyAgICAgICAgICAgIHRtcCA9IGRhdGFbaSArIGxlbignXG4tLUhHLS1cbicpOl0uc3RyaXAoKQorICAgICAgICAgICAgZm9yIGssIHYgaW4gW2Uuc3BsaXQoJyA6ICcsIDEpIGZvciBlIGluIHRtcC5zcGxpdCgnXG4nKV06CisgICAgICAgICAgICAgICAgaWYgayA9PSAncmVuYW1lJzoKKyAgICAgICAgICAgICAgICAgICAgb2xkLCBuZXcgPSB2LnNwbGl0KCcgPT4gJywgMSkKKyAgICAgICAgICAgICAgICAgICAgZmlsZXNbbmV3XVsncmVuYW1lJ10gPSBvbGQKKyAgICAgICAgICAgICAgICBlbGlmIGsgPT0gJ2JyYW5jaCc6CisgICAgICAgICAgICAgICAgICAgIGV4dHJhW2tdID0gdgorICAgICAgICAgICAgICAgIGVsaWYgayA9PSAnZXh0cmEnOgorICAgICAgICAgICAgICAgICAgICBlaywgZXYgPSB2LnNwbGl0KCcgOiAnLCAxKQorICAgICAgICAgICAgICAgICAgICBleHRyYVtla10gPSB1cmxsaWIudW5xdW90ZShldikKKyAgICAgICAgICAgIGRhdGEgPSBkYXRhWzppXQorCisgICAgY3R4ID0gY29udGV4dC5tZW1jdHgocmVwbywgKHAxLCBwMiksIGRhdGEsCisgICAgICAgICAgICBmaWxlcy5rZXlzKCksIGdldGZpbGVjdHgsCisgICAgICAgICAgICB1c2VyLCAoZGF0ZSwgdHopLCBleHRyYSkKKworICAgIHRtcCA9IGVuY29kaW5nLmVuY29kaW5nCisgICAgZW5jb2RpbmcuZW5jb2RpbmcgPSAndXRmLTgnCisKKyAgICBub2RlID0gcmVwby5jb21taXRjdHgoY3R4KQorCisgICAgZW5jb2RpbmcuZW5jb2RpbmcgPSB0bXAKKworICAgIHJldiA9IHJlcG9bbm9kZV0ucmV2KCkKKworICAgIHBhcnNlZF9yZWZzW3JlZl0gPSBub2RlCisgICAgbWFya3MubmV3X21hcmsocmV2LCBjb21taXRfbWFyaykKKworZGVmIHBhcnNlX3Jlc2V0KHBhcnNlcik6CisgICAgZ2xvYmFsIHBhcnNlZF9yZWZzCisKKyAgICByZWYgPSBwYXJzZXJbMV0KKyAgICBwYXJzZXIubmV4dCgpCisgICAgIyB1Z2gKKyAgICBpZiBwYXJzZXIuY2hlY2soJ2NvbW1pdCcpOgorICAgICAgICBwYXJzZV9jb21taXQocGFyc2VyKQorICAgICAgICByZXR1cm4KKyAgICBpZiBub3QgcGFyc2VyLmNoZWNrKCdmcm9tJyk6CisgICAgICAgIHJldHVybgorICAgIGZyb21fbWFyayA9IHBhcnNlci5nZXRfbWFyaygpCisgICAgcGFyc2VyLm5leHQoKQorCisgICAgbm9kZSA9IHBhcnNlci5yZXBvLmNoYW5nZWxvZy5ub2RlKG1hcmtfdG9fcmV2KGZyb21fbWFyaykpCisgICAgcGFyc2VkX3JlZnNbcmVmXSA9IG5vZGUKKworZGVmIHBhcnNlX3RhZyhwYXJzZXIpOgorICAgIG5hbWUgPSBwYXJzZXJbMV0KKyAgICBwYXJzZXIubmV4dCgpCisgICAgZnJvbV9tYXJrID0gcGFyc2VyLmdldF9tYXJrKCkKKyAgICBwYXJzZXIubmV4dCgpCisgICAgdGFnZ2VyID0gcGFyc2VyLmdldF9hdXRob3IoKQorICAgIHBhcnNlci5uZXh0KCkKKyAgICBkYXRhID0gcGFyc2VyLmdldF9kYXRhKCkKKyAgICBwYXJzZXIubmV4dCgpCisKKyAgICBwYXJzZWRfdGFnc1tuYW1lXSA9ICh0YWdnZXIsIGRhdGEpCisKK2RlZiB3cml0ZV90YWcocmVwbywgdGFnLCBub2RlLCBtc2csIGF1dGhvcik6CisgICAgYnJhbmNoID0gcmVwb1tub2RlXS5icmFuY2goKQorICAgIHRpcCA9IGJyYW5jaF90aXAocmVwbywgYnJhbmNoKQorICAgIHRpcCA9IHJlcG9bdGlwXQorCisgICAgZGVmIGdldGZpbGVjdHgocmVwbywgbWVtY3R4LCBmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmN0eCA9IHRpcC5maWxlY3R4KGYpCisgICAgICAgICAgICBkYXRhID0gZmN0eC5kYXRhKCkKKyAgICAgICAgZXhjZXB0IGVycm9yLk1hbmlmZXN0TG9va3VwRXJyb3I6CisgICAgICAgICAgICBkYXRhID0gIiIKKyAgICAgICAgY29udGVudCA9IGRhdGEgKyAiJXMgJXNcbiIgJSAoaGdoZXgobm9kZSksIHRhZykKKyAgICAgICAgcmV0dXJuIGNvbnRleHQubWVtZmlsZWN0eChmLCBjb250ZW50LCBGYWxzZSwgRmFsc2UsIE5vbmUpCisKKyAgICBwMSA9IHRpcC5oZXgoKQorICAgIHAyID0gJ1wwJyAqIDIwCisgICAgaWYgbm90IGF1dGhvcjoKKyAgICAgICAgYXV0aG9yID0gKE5vbmUsIDAsIDApCisgICAgdXNlciwgZGF0ZSwgdHogPSBhdXRob3IKKworICAgIGN0eCA9IGNvbnRleHQubWVtY3R4KHJlcG8sIChwMSwgcDIpLCBtc2csCisgICAgICAgICAgICBbJy5oZ3RhZ3MnXSwgZ2V0ZmlsZWN0eCwKKyAgICAgICAgICAgIHVzZXIsIChkYXRlLCB0eiksIHsnYnJhbmNoJyA6IGJyYW5jaH0pCisKKyAgICB0bXAgPSBlbmNvZGluZy5lbmNvZGluZworICAgIGVuY29kaW5nLmVuY29kaW5nID0gJ3V0Zi04JworCisgICAgdGFnbm9kZSA9IHJlcG8uY29tbWl0Y3R4KGN0eCkKKworICAgIGVuY29kaW5nLmVuY29kaW5nID0gdG1wCisKKyAgICByZXR1cm4gdGFnbm9kZQorCitkZWYgZG9fZXhwb3J0KHBhcnNlcik6CisgICAgZ2xvYmFsIHBhcnNlZF9yZWZzLCBibWFya3MsIHBlZXIKKworICAgIHBfYm1hcmtzID0gW10KKworICAgIHBhcnNlci5uZXh0KCkKKworICAgIGZvciBsaW5lIGluIHBhcnNlci5lYWNoX2Jsb2NrKCdkb25lJyk6CisgICAgICAgIGlmIHBhcnNlci5jaGVjaygnYmxvYicpOgorICAgICAgICAgICAgcGFyc2VfYmxvYihwYXJzZXIpCisgICAgICAgIGVsaWYgcGFyc2VyLmNoZWNrKCdjb21taXQnKToKKyAgICAgICAgICAgIHBhcnNlX2NvbW1pdChwYXJzZXIpCisgICAgICAgIGVsaWYgcGFyc2VyLmNoZWNrKCdyZXNldCcpOgorICAgICAgICAgICAgcGFyc2VfcmVzZXQocGFyc2VyKQorICAgICAgICBlbGlmIHBhcnNlci5jaGVjaygndGFnJyk6CisgICAgICAgICAgICBwYXJzZV90YWcocGFyc2VyKQorICAgICAgICBlbGlmIHBhcnNlci5jaGVjaygnZmVhdHVyZScpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGllKCd1bmhhbmRsZWQgZXhwb3J0IGNvbW1hbmQ6ICVzJyAlIGxpbmUpCisKKyAgICBmb3IgcmVmLCBub2RlIGluIHBhcnNlZF9yZWZzLml0ZXJpdGVtcygpOgorICAgICAgICBpZiByZWYuc3RhcnRzd2l0aCgncmVmcy9oZWFkcy9icmFuY2hlcycpOgorICAgICAgICAgICAgYnJhbmNoID0gcmVmW2xlbigncmVmcy9oZWFkcy9icmFuY2hlcy8nKTpdCisgICAgICAgICAgICBpZiBicmFuY2ggaW4gYnJhbmNoZXMgYW5kIG5vZGUgaW4gYnJhbmNoZXNbYnJhbmNoXToKKyAgICAgICAgICAgICAgICAjIHVwIHRvIGRhdGUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcHJpbnQgIm9rICVzIiAlIHJlZgorICAgICAgICBlbGlmIHJlZi5zdGFydHN3aXRoKCdyZWZzL2hlYWRzLycpOgorICAgICAgICAgICAgYm1hcmsgPSByZWZbbGVuKCdyZWZzL2hlYWRzLycpOl0KKyAgICAgICAgICAgIHBfYm1hcmtzLmFwcGVuZCgoYm1hcmssIG5vZGUpKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZWxpZiByZWYuc3RhcnRzd2l0aCgncmVmcy90YWdzLycpOgorICAgICAgICAgICAgdGFnID0gcmVmW2xlbigncmVmcy90YWdzLycpOl0KKyAgICAgICAgICAgIHRhZyA9IGhncmVmKHRhZykKKyAgICAgICAgICAgIGF1dGhvciwgbXNnID0gcGFyc2VkX3RhZ3MuZ2V0KHRhZywgKE5vbmUsIE5vbmUpKQorICAgICAgICAgICAgaWYgbW9kZSA9PSAnZ2l0JzoKKyAgICAgICAgICAgICAgICBpZiBub3QgbXNnOgorICAgICAgICAgICAgICAgICAgICBtc2cgPSAnQWRkZWQgdGFnICVzIGZvciBjaGFuZ2VzZXQgJXMnICUgKHRhZywgaGdoZXgobm9kZVs6Nl0pKTsKKyAgICAgICAgICAgICAgICB3cml0ZV90YWcocGFyc2VyLnJlcG8sIHRhZywgbm9kZSwgbXNnLCBhdXRob3IpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZwID0gcGFyc2VyLnJlcG8ub3BlbmVyKCdsb2NhbHRhZ3MnLCAnYScpCisgICAgICAgICAgICAgICAgZnAud3JpdGUoJyVzICVzXG4nICUgKGhnaGV4KG5vZGUpLCB0YWcpKQorICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKKyAgICAgICAgICAgIHByaW50ICJvayAlcyIgJSByZWYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgdHJhbnNwb3J0LWhlbHBlci9mYXN0LWV4cG9ydCBidWdzCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgaWYgcGVlcjoKKyAgICAgICAgcGFyc2VyLnJlcG8ucHVzaChwZWVyLCBmb3JjZT1mb3JjZV9wdXNoLCBuZXdicmFuY2g9VHJ1ZSkKKworICAgICMgaGFuZGxlIGJvb2ttYXJrcworICAgIGZvciBibWFyaywgbm9kZSBpbiBwX2JtYXJrczoKKyAgICAgICAgcmVmID0gJ3JlZnMvaGVhZHMvJyArIGJtYXJrCisgICAgICAgIG5ldyA9IGhnaGV4KG5vZGUpCisKKyAgICAgICAgaWYgYm1hcmsgaW4gYm1hcmtzOgorICAgICAgICAgICAgb2xkID0gYm1hcmtzW2JtYXJrXS5oZXgoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb2xkID0gJycKKworICAgICAgICBpZiBvbGQgPT0gbmV3OgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBpZiBibWFyayA9PSAnbWFzdGVyJyBhbmQgJ21hc3Rlcicgbm90IGluIHBhcnNlci5yZXBvLl9ib29rbWFya3M6CisgICAgICAgICAgICAjIGZha2UgYm9va21hcmsKKyAgICAgICAgICAgIHByaW50ICJvayAlcyIgJSByZWYKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGVsaWYgYm9va21hcmtzLnB1c2hib29rbWFyayhwYXJzZXIucmVwbywgYm1hcmssIG9sZCwgbmV3KToKKyAgICAgICAgICAgICMgdXBkYXRlZCBsb2NhbGx5CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmludCAiZXJyb3IgJXMiICUgcmVmCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGlmIHBlZXI6CisgICAgICAgICAgICByYiA9IHBlZXIubGlzdGtleXMoJ2Jvb2ttYXJrcycpCisgICAgICAgICAgICBvbGQgPSByYi5nZXQoYm1hcmssICcnKQorICAgICAgICAgICAgaWYgbm90IHBlZXIucHVzaGtleSgnYm9va21hcmtzJywgYm1hcmssIG9sZCwgbmV3KToKKyAgICAgICAgICAgICAgICBwcmludCAiZXJyb3IgJXMiICUgcmVmCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBwcmludCAib2sgJXMiICUgcmVmCisKKyAgICBwcmludAorCitkZWYgZml4X3BhdGgoYWxpYXMsIHJlcG8sIG9yaWdfdXJsKToKKyAgICB1cmwgPSB1cmxwYXJzZS51cmxwYXJzZShvcmlnX3VybCwgJ2ZpbGUnKQorICAgIGlmIHVybC5zY2hlbWUgIT0gJ2ZpbGUnIG9yIG9zLnBhdGguaXNhYnModXJsLnBhdGgpOgorICAgICAgICByZXR1cm4KKyAgICBhYnNfdXJsID0gdXJscGFyc2UudXJsam9pbigiJXMvIiAlIG9zLmdldGN3ZCgpLCBvcmlnX3VybCkKKyAgICBjbWQgPSBbJ2dpdCcsICdjb25maWcnLCAncmVtb3RlLiVzLnVybCcgJSBhbGlhcywgImhnOjolcyIgJSBhYnNfdXJsXQorICAgIHN1YnByb2Nlc3MuY2FsbChjbWQpCisKK2RlZiBtYWluKGFyZ3MpOgorICAgIGdsb2JhbCBwcmVmaXgsIGRpcm5hbWUsIGJyYW5jaGVzLCBibWFya3MKKyAgICBnbG9iYWwgbWFya3MsIGJsb2JfbWFya3MsIHBhcnNlZF9yZWZzCisgICAgZ2xvYmFsIHBlZXIsIG1vZGUsIGJhZF9tYWlsLCBiYWRfbmFtZQorICAgIGdsb2JhbCB0cmFja19icmFuY2hlcywgZm9yY2VfcHVzaCwgaXNfdG1wCisgICAgZ2xvYmFsIHBhcnNlZF90YWdzCisgICAgZ2xvYmFsIGZpbGVub2RlcworCisgICAgYWxpYXMgPSBhcmdzWzFdCisgICAgdXJsID0gYXJnc1syXQorICAgIHBlZXIgPSBOb25lCisKKyAgICBoZ19naXRfY29tcGF0ID0gZ2V0X2NvbmZpZ19ib29sKCdyZW1vdGUtaGcuaGctZ2l0LWNvbXBhdCcpCisgICAgdHJhY2tfYnJhbmNoZXMgPSBnZXRfY29uZmlnX2Jvb2woJ3JlbW90ZS1oZy50cmFjay1icmFuY2hlcycsIFRydWUpCisgICAgZm9yY2VfcHVzaCA9IGdldF9jb25maWdfYm9vbCgncmVtb3RlLWhnLmZvcmNlLXB1c2gnKQorCisgICAgaWYgaGdfZ2l0X2NvbXBhdDoKKyAgICAgICAgbW9kZSA9ICdoZycKKyAgICAgICAgYmFkX21haWwgPSAnbm9uZUBub25lJworICAgICAgICBiYWRfbmFtZSA9ICcnCisgICAgZWxzZToKKyAgICAgICAgbW9kZSA9ICdnaXQnCisgICAgICAgIGJhZF9tYWlsID0gJ3Vua25vd24nCisgICAgICAgIGJhZF9uYW1lID0gJ1Vua25vd24nCisKKyAgICBpZiBhbGlhc1s0Ol0gPT0gdXJsOgorICAgICAgICBpc190bXAgPSBUcnVlCisgICAgICAgIGFsaWFzID0gaGFzaGxpYi5zaGExKGFsaWFzKS5oZXhkaWdlc3QoKQorICAgIGVsc2U6CisgICAgICAgIGlzX3RtcCA9IEZhbHNlCisKKyAgICBnaXRkaXIgPSBvcy5lbnZpcm9uWydHSVRfRElSJ10KKyAgICBkaXJuYW1lID0gb3MucGF0aC5qb2luKGdpdGRpciwgJ2hnJywgYWxpYXMpCisgICAgYnJhbmNoZXMgPSB7fQorICAgIGJtYXJrcyA9IHt9CisgICAgYmxvYl9tYXJrcyA9IHt9CisgICAgcGFyc2VkX3JlZnMgPSB7fQorICAgIG1hcmtzID0gTm9uZQorICAgIHBhcnNlZF90YWdzID0ge30KKyAgICBmaWxlbm9kZXMgPSB7fQorCisgICAgcmVwbyA9IGdldF9yZXBvKHVybCwgYWxpYXMpCisgICAgcHJlZml4ID0gJ3JlZnMvaGcvJXMnICUgYWxpYXMKKworICAgIGlmIG5vdCBpc190bXA6CisgICAgICAgIGZpeF9wYXRoKGFsaWFzLCBwZWVyIG9yIHJlcG8sIHVybCkKKworICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkaXJuYW1lKToKKyAgICAgICAgb3MubWFrZWRpcnMoZGlybmFtZSkKKworICAgIG1hcmtzX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ21hcmtzLWhnJykKKyAgICBtYXJrcyA9IE1hcmtzKG1hcmtzX3BhdGgpCisKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgaW1wb3J0IG1zdmNydAorICAgICAgICBtc3ZjcnQuc2V0bW9kZShzeXMuc3Rkb3V0LmZpbGVubygpLCBvcy5PX0JJTkFSWSkKKworICAgIHBhcnNlciA9IFBhcnNlcihyZXBvKQorICAgIGZvciBsaW5lIGluIHBhcnNlcjoKKyAgICAgICAgaWYgcGFyc2VyLmNoZWNrKCdjYXBhYmlsaXRpZXMnKToKKyAgICAgICAgICAgIGRvX2NhcGFiaWxpdGllcyhwYXJzZXIpCisgICAgICAgIGVsaWYgcGFyc2VyLmNoZWNrKCdsaXN0Jyk6CisgICAgICAgICAgICBkb19saXN0KHBhcnNlcikKKyAgICAgICAgZWxpZiBwYXJzZXIuY2hlY2soJ2ltcG9ydCcpOgorICAgICAgICAgICAgZG9faW1wb3J0KHBhcnNlcikKKyAgICAgICAgZWxpZiBwYXJzZXIuY2hlY2soJ2V4cG9ydCcpOgorICAgICAgICAgICAgZG9fZXhwb3J0KHBhcnNlcikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRpZSgndW5oYW5kbGVkIGNvbW1hbmQ6ICVzJyAlIGxpbmUpCisgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCitkZWYgYnllKCk6CisgICAgaWYgbm90IG1hcmtzOgorICAgICAgICByZXR1cm4KKyAgICBpZiBub3QgaXNfdG1wOgorICAgICAgICBtYXJrcy5zdG9yZSgpCisgICAgZWxzZToKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJuYW1lKQorCithdGV4aXQucmVnaXN0ZXIoYnllKQorc3lzLmV4aXQobWFpbihzeXMuYXJndikpCmRpZmYgLS1naXQgYS9jb250cmliL3JlbW90ZS1oZWxwZXJzL3Rlc3QtYnpyLnNoIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy90ZXN0LWJ6ci5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41ZGZhMDcwCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy90ZXN0LWJ6ci5zaApAQCAtMCwwICsxLDM0MSBAQAorIyEvYmluL3NoCisjCisjIENvcHlyaWdodCAoYykgMjAxMiBGZWxpcGUgQ29udHJlcmFzCisjCisKK3Rlc3RfZGVzY3JpcHRpb249J1Rlc3QgcmVtb3RlLWJ6cicKKworLiAuL3Rlc3QtbGliLnNoCisKK2lmICEgdGVzdF9oYXZlX3ByZXJlcSBQWVRIT047IHRoZW4KKwlza2lwX2FsbD0nc2tpcHBpbmcgcmVtb3RlLWJ6ciB0ZXN0czsgcHl0aG9uIG5vdCBhdmFpbGFibGUnCisJdGVzdF9kb25lCitmaQorCitpZiAhICIkUFlUSE9OX1BBVEgiIC1jICdpbXBvcnQgYnpybGliJzsgdGhlbgorCXNraXBfYWxsPSdza2lwcGluZyByZW1vdGUtYnpyIHRlc3RzOyBienIgbm90IGF2YWlsYWJsZScKKwl0ZXN0X2RvbmUKK2ZpCisKK2NoZWNrICgpIHsKKwkoY2QgJDEgJiYKKwlnaXQgbG9nIC0tZm9ybWF0PSclcycgLTEgJiYKKwlnaXQgc3ltYm9saWMtcmVmIEhFQUQpID4gYWN0dWFsICYmCisJKGVjaG8gJDIgJiYKKwllY2hvICJyZWZzL2hlYWRzLyQzIikgPiBleHBlY3RlZCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorfQorCitienIgd2hvYW1pICJBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPiIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZycgJworICAoYnpyIGluaXQgYnpycmVwbyAmJgorICBjZCBienJyZXBvICYmCisgIGVjaG8gb25lID4gY29udGVudCAmJgorICBienIgYWRkIGNvbnRlbnQgJiYKKyAgYnpyIGNvbW1pdCAtbSBvbmUKKyAgKSAmJgorCisgIGdpdCBjbG9uZSAiYnpyOjokUFdEL2J6cnJlcG8iIGdpdHJlcG8gJiYKKyAgY2hlY2sgZ2l0cmVwbyBvbmUgbWFzdGVyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1bGxpbmcnICcKKyAgKGNkIGJ6cnJlcG8gJiYKKyAgZWNobyB0d28gPiBjb250ZW50ICYmCisgIGJ6ciBjb21taXQgLW0gdHdvCisgICkgJiYKKworICAoY2QgZ2l0cmVwbyAmJiBnaXQgcHVsbCkgJiYKKworICBjaGVjayBnaXRyZXBvIHR3byBtYXN0ZXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaGluZycgJworICAoY2QgZ2l0cmVwbyAmJgorICBlY2hvIHRocmVlID4gY29udGVudCAmJgorICBnaXQgY29tbWl0IC1hIC1tIHRocmVlICYmCisgIGdpdCBwdXNoCisgICkgJiYKKworICBlY2hvIHRocmVlID4gZXhwZWN0ZWQgJiYKKyAgY2F0IGJ6cnJlcG8vY29udGVudCA+IGFjdHVhbCAmJgorICB0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncm91bmR0cmlwJyAnCisgIChjZCBnaXRyZXBvICYmCisgIGdpdCBwdWxsICYmCisgIGdpdCBsb2cgLS1mb3JtYXQ9IiVzIiAtMSBvcmlnaW4vbWFzdGVyID4gYWN0dWFsKSAmJgorICBlY2hvIHRocmVlID4gZXhwZWN0ZWQgJiYKKyAgdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsICYmCisKKyAgKGNkIGdpdHJlcG8gJiYgZ2l0IHB1c2ggJiYgZ2l0IHB1bGwpICYmCisKKyAgKGNkIGJ6cnJlcG8gJiYKKyAgZWNobyBmb3VyID4gY29udGVudCAmJgorICBienIgY29tbWl0IC1tIGZvdXIKKyAgKSAmJgorCisgIChjZCBnaXRyZXBvICYmIGdpdCBwdWxsICYmIGdpdCBwdXNoKSAmJgorCisgIGNoZWNrIGdpdHJlcG8gZm91ciBtYXN0ZXIgJiYKKworICAoY2QgZ2l0cmVwbyAmJgorICBlY2hvIGZpdmUgPiBjb250ZW50ICYmCisgIGdpdCBjb21taXQgLWEgLW0gZml2ZSAmJgorICBnaXQgcHVzaCAmJiBnaXQgcHVsbAorICApICYmCisKKyAgKGNkIGJ6cnJlcG8gJiYgYnpyIHJldmVydCkgJiYKKworICBlY2hvIGZpdmUgPiBleHBlY3RlZCAmJgorICBjYXQgYnpycmVwby9jb250ZW50ID4gYWN0dWFsICYmCisgIHRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCitjYXQgPiBleHBlY3RlZCA8PEVPRgorMTAwNjQ0IGJsb2IgNTRmOWQ2ZGE1YzkxZDU1NmU2YjU0MzQwYjEzMjc1NzMwNzMwMzBhZgljb250ZW50CisxMDA3NTUgYmxvYiA2ODc2OTU3OWMzZWFhZGJlNTU1Mzc5YjljMzUzOGU2NjI4YmFlMWViCWV4ZWN1dGFibGUKKzEyMDAwMCBibG9iIDZiNTg0ZThlY2U1NjJlYmZmYzE1ZDM4ODA4Y2Q2Yjk4ZmMzZDk3ZWEJbGluaworRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NwZWNpYWwgbW9kZXMnICcKKyAgKGNkIGJ6cnJlcG8gJiYKKyAgZWNobyBleGVjID4gZXhlY3V0YWJsZQorICBjaG1vZCAreCBleGVjdXRhYmxlICYmCisgIGJ6ciBhZGQgZXhlY3V0YWJsZQorICBienIgY29tbWl0IC1tIGV4ZWMgJiYKKyAgbG4gLXMgY29udGVudCBsaW5rCisgIGJ6ciBhZGQgbGluaworICBienIgY29tbWl0IC1tIGxpbmsgJiYKKyAgbWtkaXIgZGlyICYmCisgIGJ6ciBhZGQgZGlyICYmCisgIGJ6ciBjb21taXQgLW0gZGlyKSAmJgorCisgIChjZCBnaXRyZXBvICYmCisgIGdpdCBwdWxsCisgIGdpdCBscy10cmVlIEhFQUQgPiAuLi9hY3R1YWwpICYmCisKKyAgdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsICYmCisKKyAgKGNkIGdpdHJlcG8gJiYKKyAgZ2l0IGNhdC1maWxlIC1wIEhFQUQ6bGluayA+IC4uL2FjdHVhbCkgJiYKKworICBwcmludGYgY29udGVudCA+IGV4cGVjdGVkICYmCisgIHRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCitjYXQgPiBleHBlY3RlZCA8PEVPRgorMTAwNjQ0IGJsb2IgNTRmOWQ2ZGE1YzkxZDU1NmU2YjU0MzQwYjEzMjc1NzMwNzMwMzBhZgljb250ZW50CisxMDA3NTUgYmxvYiA2ODc2OTU3OWMzZWFhZGJlNTU1Mzc5YjljMzUzOGU2NjI4YmFlMWViCWV4ZWN1dGFibGUKKzEyMDAwMCBibG9iIDZiNTg0ZThlY2U1NjJlYmZmYzE1ZDM4ODA4Y2Q2Yjk4ZmMzZDk3ZWEJbGluaworMDQwMDAwIHRyZWUgMzVjMGNhYTQ2NjkzY2VmNjIyNDdhYzg5YTY4MGYwYzVjZTMyYjM3Ygltb3ZlZGlyLW5ldworRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vdmluZyBkaXJlY3RvcnknICcKKyAgKGNkIGJ6cnJlcG8gJiYKKyAgbWtkaXIgbW92ZWRpciAmJgorICBlY2hvIG9uZSA+IG1vdmVkaXIvb25lICYmCisgIGVjaG8gdHdvID4gbW92ZWRpci90d28gJiYKKyAgYnpyIGFkZCBtb3ZlZGlyICYmCisgIGJ6ciBjb21taXQgLW0gbW92ZWRpciAmJgorICBienIgbXYgbW92ZWRpciBtb3ZlZGlyLW5ldyAmJgorICBienIgY29tbWl0IC1tIG1vdmVkaXItbmV3KSAmJgorCisgIChjZCBnaXRyZXBvICYmCisgIGdpdCBwdWxsICYmCisgIGdpdCBscy10cmVlIEhFQUQgPiAuLi9hY3R1YWwpICYmCisKKyAgdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmZlcmVudCBhdXRob3JzJyAnCisgIChjZCBienJyZXBvICYmCisgIGVjaG8gam9obiA+PiBjb250ZW50ICYmCisgIGJ6ciBjb21taXQgLW0gam9obiBcCisgICAgLS1hdXRob3IgIkphbmUgUmV5IDxqcmV5QGV4YW1wbGUuY29tPiIgXAorICAgIC0tYXV0aG9yICJKb2huIERvZSA8amRvZUBleGFtcGxlLmNvbT4iKSAmJgorCisgIChjZCBnaXRyZXBvICYmCisgIGdpdCBwdWxsICYmCisgIGdpdCBzaG93IC0tZm9ybWF0PSIlYW4gPCVhZT4sICVjbiA8JWNlPiIgLS1xdWlldCA+IC4uL2FjdHVhbCkgJiYKKworICBlY2hvICJKYW5lIFJleSA8anJleUBleGFtcGxlLmNvbT4sIEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+IiA+IGV4cGVjdGVkICYmCisgIHRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCB1dGYtOCBmaWxlbmFtZXMnICcKKyAgbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgorICB0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAgJiYgTENfQUxMPUMiICYmCisKKyAgTENfQUxMPWVuX1VTLlVURi04CisgIGV4cG9ydCBMQ19BTEwKKyAgKAorICBienIgaW5pdCBienJyZXBvICYmCisgIGNkIGJ6cnJlcG8gJiYKKworICBlY2hvIHRlc3QgPj4gIsOmcsO4IiAmJgorICBienIgYWRkICLDpnLDuCIgJiYKKyAgZWNobyB0ZXN0ID4+ICLDuH4/IiAmJgorICBienIgYWRkICLDuH4/IiAmJgorICBienIgY29tbWl0IC1tIGFkZC11dGYtOCAmJgorICBlY2hvIHRlc3QgPj4gIsOmcsO4IiAmJgorICBienIgY29tbWl0IC1tIHRlc3QtdXRmLTggJiYKKyAgYnpyIHJtICLDuH4/IiAmJgorICBienIgbXYgIsOmcsO4IiAiw7h+PyIgJiYKKyAgYnpyIGNvbW1pdCAtbSBienItbXYtdXRmLTgKKyAgKSAmJgorCisgICgKKyAgZ2l0IGNsb25lICJienI6OiRQV0QvYnpycmVwbyIgZ2l0cmVwbyAmJgorICBjZCBnaXRyZXBvICYmCisgIGdpdCAtYyBjb3JlLnF1b3RlcGF0aD1mYWxzZSBscy1maWxlcyA+IC4uL2FjdHVhbAorICApICYmCisgIGVjaG8gIsO4fj8iID4gZXhwZWN0ZWQgJiYKKyAgdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggdXRmLTggZmlsZW5hbWVzJyAnCisgIG1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKKyAgdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wICYmIExDX0FMTD1DIiAmJgorCisgIExDX0FMTD1lbl9VUy5VVEYtOAorICBleHBvcnQgTENfQUxMCisKKyAgKAorICBienIgaW5pdCBienJyZXBvICYmCisgIGNkIGJ6cnJlcG8gJiYKKworICBlY2hvIG9uZSA+PiBjb250ZW50ICYmCisgIGJ6ciBhZGQgY29udGVudCAmJgorICBienIgY29tbWl0IC1tIG9uZQorICApICYmCisKKyAgKAorICBnaXQgY2xvbmUgImJ6cjo6JFBXRC9ienJyZXBvIiBnaXRyZXBvICYmCisgIGNkIGdpdHJlcG8gJiYKKworICBlY2hvIHRlc3QgPj4gIsOmcsO4IiAmJgorICBnaXQgYWRkICLDpnLDuCIgJiYKKyAgZ2l0IGNvbW1pdCAtbSB1dGYtOCAmJgorCisgIGdpdCBwdXNoCisgICkgJiYKKworICAoY2QgYnpycmVwbyAmJiBienIgbHMgPiAuLi9hY3R1YWwpICYmCisgIHByaW50ZiAiY29udGVudFxuw6Zyw7hcbiIgPiBleHBlY3RlZCAmJgorICB0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaGluZyBhIG1lcmdlJyAnCisgIG1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKKyAgdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCisgICgKKyAgYnpyIGluaXQgYnpycmVwbyAmJgorICBjZCBienJyZXBvICYmCisgIGVjaG8gb25lID4gY29udGVudCAmJgorICBienIgYWRkIGNvbnRlbnQgJiYKKyAgYnpyIGNvbW1pdCAtbSBvbmUKKyAgKSAmJgorCisgIGdpdCBjbG9uZSAiYnpyOjokUFdEL2J6cnJlcG8iIGdpdHJlcG8gJiYKKworICAoCisgIGNkIGJ6cnJlcG8gJiYKKyAgZWNobyB0d28gPiBjb250ZW50ICYmCisgIGJ6ciBjb21taXQgLW0gdHdvCisgICkgJiYKKworICAoCisgIGNkIGdpdHJlcG8gJiYKKyAgZWNobyB0aHJlZSA+IGNvbnRlbnQgJiYKKyAgZ2l0IGNvbW1pdCAtYSAtbSB0aHJlZSAmJgorICBnaXQgZmV0Y2ggJiYKKyAgZ2l0IG1lcmdlIG9yaWdpbi9tYXN0ZXIgfHwgdHJ1ZSAmJgorICBlY2hvIHRocmVlID4gY29udGVudCAmJgorICBnaXQgY29tbWl0IC1hIC0tbm8tZWRpdCAmJgorICBnaXQgcHVzaAorICApICYmCisKKyAgZWNobyB0aHJlZSA+IGV4cGVjdGVkICYmCisgIGNhdCBienJyZXBvL2NvbnRlbnQgPiBhY3R1YWwgJiYKKyAgdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+IGV4cGVjdGVkIDw8RU9GCitvcmlnaW4vSEVBRAorb3JpZ2luL2JyYW5jaAorb3JpZ2luL3RydW5rCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvcGVyIGJ6ciByZXBvJyAnCisgIG1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKKyAgdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCisgIGJ6ciBpbml0LXJlcG8gYnpycmVwbyAmJgorCisgIGJ6ciBpbml0IGJ6cnJlcG8vdHJ1bmsgJiYKKyAgKAorICBjZCBienJyZXBvL3RydW5rICYmCisgIGVjaG8gb25lID4+IGNvbnRlbnQgJiYKKyAgYnpyIGFkZCBjb250ZW50ICYmCisgIGJ6ciBjb21taXQgLW0gb25lCisgICkgJiYKKworICBienIgYnJhbmNoIGJ6cnJlcG8vdHJ1bmsgYnpycmVwby9icmFuY2ggJiYKKyAgKAorICBjZCBienJyZXBvL2JyYW5jaCAmJgorICBlY2hvIHR3byA+PiBjb250ZW50ICYmCisgIGJ6ciBjb21taXQgLW0gb25lCisgICkgJiYKKworICBnaXQgY2xvbmUgImJ6cjo6JFBXRC9ienJyZXBvIiBnaXRyZXBvICYmCisgICgKKyAgY2QgZ2l0cmVwbyAmJgorICBnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0ICIlKHJlZm5hbWU6c2hvcnQpIiByZWZzL3JlbW90ZXMvb3JpZ2luID4gLi4vYWN0dWFsCisgICkgJiYKKworICB0ZXN0X2NtcCAuLi9leHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RyaXAnICcKKyAgIyBEbyBub3QgaW1pdGF0ZSB0aGlzIHN0eWxlOyBhbHdheXMgY2hkaXIgaW5zaWRlIGEgc3Vic2hlbGwgaW5zdGVhZAorICBta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCisgIHRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKworICAoCisgIGJ6ciBpbml0IGJ6cnJlcG8gJiYKKyAgY2QgYnpycmVwbyAmJgorCisgIGVjaG8gb25lID4+IGNvbnRlbnQgJiYKKyAgYnpyIGFkZCBjb250ZW50ICYmCisgIGJ6ciBjb21taXQgLW0gb25lICYmCisKKyAgZWNobyB0d28gPj4gY29udGVudCAmJgorICBienIgY29tbWl0IC1tIHR3bworICApICYmCisKKyAgZ2l0IGNsb25lICJienI6OiRQV0QvYnpycmVwbyIgZ2l0cmVwbyAmJgorCisgICgKKyAgY2QgYnpycmVwbyAmJgorICBienIgdW5jb21taXQgLS1mb3JjZSAmJgorCisgIGVjaG8gdGhyZWUgPj4gY29udGVudCAmJgorICBienIgY29tbWl0IC1tIHRocmVlICYmCisKKyAgZWNobyBmb3VyID4+IGNvbnRlbnQgJiYKKyAgYnpyIGNvbW1pdCAtbSBmb3VyICYmCisgIGJ6ciBsb2cgLS1saW5lIHwgc2VkIC1lICJzL15bMC05XVswLTldKjogLy8iID4gLi4vZXhwZWN0ZWQKKyAgKSAmJgorCisgIChjZCBnaXRyZXBvICYmCisgIGdpdCBmZXRjaCAmJgorICBnaXQgbG9nIC0tZm9ybWF0PSIlYW4gJWFkICVzIiAtLWRhdGU9c2hvcnQgb3JpZ2luL21hc3RlciA+IC4uL2FjdHVhbCkgJiYKKworICB0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS9jb250cmliL3JlbW90ZS1oZWxwZXJzL3Rlc3QtaGctYmlkaS5zaCBiL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy1iaWRpLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY1Njk2OTcKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3JlbW90ZS1oZWxwZXJzL3Rlc3QtaGctYmlkaS5zaApAQCAtMCwwICsxLDI0NyBAQAorIyEvYmluL3NoCisjCisjIENvcHlyaWdodCAoYykgMjAxMiBGZWxpcGUgQ29udHJlcmFzCisjCisjIEJhc2UgY29tbWFuZHMgZnJvbSBoZy1naXQgdGVzdHM6CisjIGh0dHBzOi8vYml0YnVja2V0Lm9yZy9kdXJpbjQyL2hnLWdpdC9zcmMKKyMKKwordGVzdF9kZXNjcmlwdGlvbj0nVGVzdCBiaWRpcmVjdGlvbmFsaXR5IG9mIHJlbW90ZS1oZycKKworLiAuL3Rlc3QtbGliLnNoCisKK2lmICEgdGVzdF9oYXZlX3ByZXJlcSBQWVRIT047IHRoZW4KKwlza2lwX2FsbD0nc2tpcHBpbmcgcmVtb3RlLWhnIHRlc3RzOyBweXRob24gbm90IGF2YWlsYWJsZScKKwl0ZXN0X2RvbmUKK2ZpCisKK2lmICEgIiRQWVRIT05fUEFUSCIgLWMgJ2ltcG9ydCBtZXJjdXJpYWwnOyB0aGVuCisJc2tpcF9hbGw9J3NraXBwaW5nIHJlbW90ZS1oZyB0ZXN0czsgbWVyY3VyaWFsIG5vdCBhdmFpbGFibGUnCisJdGVzdF9kb25lCitmaQorCisjIGNsb25lIHRvIGEgZ2l0IHJlcG8KK2dpdF9jbG9uZSAoKSB7CisJZ2l0IGNsb25lIC1xICJoZzo6JFBXRC8kMSIgJDIKK30KKworIyBjbG9uZSB0byBhbiBoZyByZXBvCitoZ19jbG9uZSAoKSB7CisJKAorCWhnIGluaXQgJDIgJiYKKwloZyAtUiAkMiBib29rbWFyayAtaSBtYXN0ZXIgJiYKKwljZCAkMSAmJgorCWdpdCBwdXNoIC1xICJoZzo6JFBXRC8uLi8kMiIgJ3JlZnMvdGFncy8qOnJlZnMvdGFncy8qJyAncmVmcy9oZWFkcy8qOnJlZnMvaGVhZHMvKicKKwkpICYmCisKKwkoY2QgJDIgJiYgaGcgLXEgdXBkYXRlKQorfQorCisjIHB1c2ggYW4gaGcgcmVwbworaGdfcHVzaCAoKSB7CisJKAorCWNkICQyCisJb2xkPSQoZ2l0IHN5bWJvbGljLXJlZiAtLXNob3J0IEhFQUQpCisJZ2l0IGNoZWNrb3V0IC1xIC1iIHRtcCAmJgorCWdpdCBmZXRjaCAtcSAiaGc6OiRQV0QvLi4vJDEiICdyZWZzL3RhZ3MvKjpyZWZzL3RhZ3MvKicgJ3JlZnMvaGVhZHMvKjpyZWZzL2hlYWRzLyonICYmCisJZ2l0IGNoZWNrb3V0IC1xICRvbGQgJiYKKwlnaXQgYnJhbmNoIC1xIC1EIHRtcCAyPiAvZGV2L251bGwgfHwgdHJ1ZQorCSkKK30KKworaGdfbG9nICgpIHsKKwloZyAtUiAkMSBsb2cgLS1ncmFwaCAtLWRlYnVnID5sb2cgJiYKKwlncmVwIC12ICd0YWc6ICpkZWZhdWx0LycgbG9nCit9CisKK3NldHVwICgpIHsKKwkoCisJZWNobyAiW3VpXSIKKwllY2hvICJ1c2VybmFtZSA9IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+IgorCWVjaG8gIltkZWZhdWx0c10iCisJZWNobyAiYmFja291dCA9IC1kIFwiMCAwXCIiCisJZWNobyAiY29tbWl0ID0gLWQgXCIwIDBcIiIKKwllY2hvICJkZWJ1Z3Jhd2NvbW1pdCA9IC1kIFwiMCAwXCIiCisJZWNobyAidGFnID0gLWQgXCIwIDBcIiIKKwllY2hvICJbZXh0ZW5zaW9uc10iCisJZWNobyAiZ3JhcGhsb2cgPSIKKwkpID4+ICIkSE9NRSIvLmhncmMgJiYKKwlnaXQgY29uZmlnIC0tZ2xvYmFsIHJlbW90ZS1oZy5oZy1naXQtY29tcGF0IHRydWUKKworCUhHRURJVE9SPS91c3IvYmluL3RydWUKKwlHSVRfQVVUSE9SX0RBVEU9IjIwMDctMDEtMDEgMDA6MDA6MDAgKzAyMzAiCisJR0lUX0NPTU1JVFRFUl9EQVRFPSIkR0lUX0FVVEhPUl9EQVRFIgorCWV4cG9ydCBIR0VESVRPUiBHSVRfQVVUSE9SX0RBVEUgR0lUX0NPTU1JVFRFUl9EQVRFCit9CisKK3NldHVwCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2VuY29kaW5nJyAnCisJbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKworCSgKKwlnaXQgaW5pdCAtcSBnaXRyZXBvICYmCisJY2QgZ2l0cmVwbyAmJgorCisJZWNobyBhbHBoYSA+IGFscGhhICYmCisJZ2l0IGFkZCBhbHBoYSAmJgorCWdpdCBjb21taXQgLW0gImFkZCDDpGxwaMOgIiAmJgorCisJR0lUX0FVVEhPUl9OQU1FPSJ0w6lzdCDDqG5jw7Zkw65uZyIgJiYKKwlleHBvcnQgR0lUX0FVVEhPUl9OQU1FICYmCisJZWNobyBiZXRhID4gYmV0YSAmJgorCWdpdCBhZGQgYmV0YSAmJgorCWdpdCBjb21taXQgLW0gImFkZCBiZXRhIiAmJgorCisJZWNobyBnYW1tYSA+IGdhbW1hICYmCisJZ2l0IGFkZCBnYW1tYSAmJgorCWdpdCBjb21taXQgLW0gImFkZCBnw6RtbcOiIiAmJgorCisJOiBUT0RPIGdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBsYXRpbi0xICYmCisJZWNobyBkZWx0YSA+IGRlbHRhICYmCisJZ2l0IGFkZCBkZWx0YSAmJgorCWdpdCBjb21taXQgLW0gImFkZCBkw6lsdMOgIgorCSkgJiYKKworCWhnX2Nsb25lIGdpdHJlcG8gaGdyZXBvICYmCisJZ2l0X2Nsb25lIGhncmVwbyBnaXRyZXBvMiAmJgorCWhnX2Nsb25lIGdpdHJlcG8yIGhncmVwbzIgJiYKKworCUhHRU5DT0RJTkc9dXRmLTggaGdfbG9nIGhncmVwbyA+IGV4cGVjdGVkICYmCisJSEdFTkNPRElORz11dGYtOCBoZ19sb2cgaGdyZXBvMiA+IGFjdHVhbCAmJgorCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZpbGUgcmVtb3ZhbCcgJworCW1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAiICYmCisKKwkoCisJZ2l0IGluaXQgLXEgZ2l0cmVwbyAmJgorCWNkIGdpdHJlcG8gJiYKKwllY2hvIGFscGhhID4gYWxwaGEgJiYKKwlnaXQgYWRkIGFscGhhICYmCisJZ2l0IGNvbW1pdCAtbSAiYWRkIGFscGhhIiAmJgorCWVjaG8gYmV0YSA+IGJldGEgJiYKKwlnaXQgYWRkIGJldGEgJiYKKwlnaXQgY29tbWl0IC1tICJhZGQgYmV0YSIKKwlta2RpciBmb28gJiYKKwllY2hvIGJsYWggPiBmb28vYmFyICYmCisJZ2l0IGFkZCBmb28gJiYKKwlnaXQgY29tbWl0IC1tICJhZGQgZm9vIiAmJgorCWdpdCBybSBhbHBoYSAmJgorCWdpdCBjb21taXQgLW0gInJlbW92ZSBhbHBoYSIgJiYKKwlnaXQgcm0gZm9vL2JhciAmJgorCWdpdCBjb21taXQgLW0gInJlbW92ZSBmb28vYmFyIgorCSkgJiYKKworCWhnX2Nsb25lIGdpdHJlcG8gaGdyZXBvICYmCisJZ2l0X2Nsb25lIGhncmVwbyBnaXRyZXBvMiAmJgorCWhnX2Nsb25lIGdpdHJlcG8yIGhncmVwbzIgJiYKKworCWhnX2xvZyBoZ3JlcG8gPiBleHBlY3RlZCAmJgorCWhnX2xvZyBoZ3JlcG8yID4gYWN0dWFsICYmCisKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHRhZ3MnICcKKwlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCisJKAorCWdpdCBpbml0IC1xIGdpdHJlcG8gJiYKKwljZCBnaXRyZXBvICYmCisJZ2l0IGNvbmZpZyByZWNlaXZlLmRlbnlDdXJyZW50QnJhbmNoIGlnbm9yZSAmJgorCWVjaG8gYWxwaGEgPiBhbHBoYSAmJgorCWdpdCBhZGQgYWxwaGEgJiYKKwlnaXQgY29tbWl0IC1tICJhZGQgYWxwaGEiICYmCisJZ2l0IHRhZyBhbHBoYSAmJgorCisJZWNobyBiZXRhID4gYmV0YSAmJgorCWdpdCBhZGQgYmV0YSAmJgorCWdpdCBjb21taXQgLW0gImFkZCBiZXRhIiAmJgorCWdpdCB0YWcgLWEgLW0gImFkZGVkIHRhZyBiZXRhIiBiZXRhCisJKSAmJgorCisJaGdfY2xvbmUgZ2l0cmVwbyBoZ3JlcG8gJiYKKwlnaXRfY2xvbmUgaGdyZXBvIGdpdHJlcG8yICYmCisJaGdfY2xvbmUgZ2l0cmVwbzIgaGdyZXBvMiAmJgorCisJaGdfbG9nIGhncmVwbyA+IGV4cGVjdGVkICYmCisJaGdfbG9nIGhncmVwbzIgPiBhY3R1YWwgJiYKKworCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdoZyBicmFuY2gnICcKKwlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCisJKAorCWdpdCBpbml0IC1xIGdpdHJlcG8gJiYKKwljZCBnaXRyZXBvICYmCisKKwllY2hvIGFscGhhID4gYWxwaGEgJiYKKwlnaXQgYWRkIGFscGhhICYmCisJZ2l0IGNvbW1pdCAtcSAtbSAiYWRkIGFscGhhIiAmJgorCWdpdCBjaGVja291dCAtcSAtYiBub3QtbWFzdGVyCisJKSAmJgorCisJKAorCWhnX2Nsb25lIGdpdHJlcG8gaGdyZXBvICYmCisKKwljZCBoZ3JlcG8gJiYKKwloZyAtcSBjbyBtYXN0ZXIgJiYKKwloZyBtdiBhbHBoYSBiZXRhICYmCisJaGcgLXEgY29tbWl0IC1tICJyZW5hbWUgYWxwaGEgdG8gYmV0YSIgJiYKKwloZyBicmFuY2ggZ2FtbWEgfCBncmVwIC12ICJwZXJtYW5lbnQgYW5kIGdsb2JhbCIgJiYKKwloZyAtcSBjb21taXQgLW0gInN0YXJ0ZWQgYnJhbmNoIGdhbW1hIgorCSkgJiYKKworCWhnX3B1c2ggaGdyZXBvIGdpdHJlcG8gJiYKKwloZ19jbG9uZSBnaXRyZXBvIGhncmVwbzIgJiYKKworCTogQmFjayB0byB0aGUgY29tbW9uIHJldmlzaW9uICYmCisJKGNkIGhncmVwbyAmJiBoZyBjaGVja291dCBkZWZhdWx0KSAmJgorCisJaGdfbG9nIGhncmVwbyA+IGV4cGVjdGVkICYmCisJaGdfbG9nIGhncmVwbzIgPiBhY3R1YWwgJiYKKworCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdoZyB0YWdzJyAnCisJbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKworCSgKKwlnaXQgaW5pdCAtcSBnaXRyZXBvICYmCisJY2QgZ2l0cmVwbyAmJgorCisJZWNobyBhbHBoYSA+IGFscGhhICYmCisJZ2l0IGFkZCBhbHBoYSAmJgorCWdpdCBjb21taXQgLW0gImFkZCBhbHBoYSIgJiYKKwlnaXQgY2hlY2tvdXQgLXEgLWIgbm90LW1hc3RlcgorCSkgJiYKKworCSgKKwloZ19jbG9uZSBnaXRyZXBvIGhncmVwbyAmJgorCisJY2QgaGdyZXBvICYmCisJaGcgY28gbWFzdGVyICYmCisJaGcgdGFnIGFscGhhCisJKSAmJgorCisJaGdfcHVzaCBoZ3JlcG8gZ2l0cmVwbyAmJgorCWhnX2Nsb25lIGdpdHJlcG8gaGdyZXBvMiAmJgorCisJaGdfbG9nIGhncmVwbyA+IGV4cGVjdGVkICYmCisJaGdfbG9nIGhncmVwbzIgPiBhY3R1YWwgJiYKKworCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy1oZy1naXQuc2ggYi9jb250cmliL3JlbW90ZS1oZWxwZXJzL3Rlc3QtaGctaGctZ2l0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjdmNTc5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3JlbW90ZS1oZWxwZXJzL3Rlc3QtaGctaGctZ2l0LnNoCkBAIC0wLDAgKzEsNTM2IEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDEyIEZlbGlwZSBDb250cmVyYXMKKyMKKyMgQmFzZSBjb21tYW5kcyBmcm9tIGhnLWdpdCB0ZXN0czoKKyMgaHR0cHM6Ly9iaXRidWNrZXQub3JnL2R1cmluNDIvaGctZ2l0L3NyYworIworCit0ZXN0X2Rlc2NyaXB0aW9uPSdUZXN0IHJlbW90ZS1oZyBvdXRwdXQgY29tcGFyZWQgdG8gaGctZ2l0JworCisuIC4vdGVzdC1saWIuc2gKKworaWYgISB0ZXN0X2hhdmVfcHJlcmVxIFBZVEhPTjsgdGhlbgorCXNraXBfYWxsPSdza2lwcGluZyByZW1vdGUtaGcgdGVzdHM7IHB5dGhvbiBub3QgYXZhaWxhYmxlJworCXRlc3RfZG9uZQorZmkKKworaWYgISAiJFBZVEhPTl9QQVRIIiAtYyAnaW1wb3J0IG1lcmN1cmlhbCc7IHRoZW4KKwlza2lwX2FsbD0nc2tpcHBpbmcgcmVtb3RlLWhnIHRlc3RzOyBtZXJjdXJpYWwgbm90IGF2YWlsYWJsZScKKwl0ZXN0X2RvbmUKK2ZpCisKK2lmICEgIiRQWVRIT05fUEFUSCIgLWMgJ2ltcG9ydCBoZ2dpdCc7IHRoZW4KKwlza2lwX2FsbD0nc2tpcHBpbmcgcmVtb3RlLWhnIHRlc3RzOyBoZy1naXQgbm90IGF2YWlsYWJsZScKKwl0ZXN0X2RvbmUKK2ZpCisKKyMgY2xvbmUgdG8gYSBnaXQgcmVwbyB3aXRoIGdpdAorZ2l0X2Nsb25lX2dpdCAoKSB7CisJZ2l0IGNsb25lIC1xICJoZzo6JFBXRC8kMSIgJDIKK30KKworIyBjbG9uZSB0byBhbiBoZyByZXBvIHdpdGggZ2l0CitoZ19jbG9uZV9naXQgKCkgeworCSgKKwloZyBpbml0ICQyICYmCisJaGcgLVIgJDIgYm9va21hcmsgLWkgbWFzdGVyICYmCisJY2QgJDEgJiYKKwlnaXQgcHVzaCAtcSAiaGc6OiRQV0QvLi4vJDIiICdyZWZzL3RhZ3MvKjpyZWZzL3RhZ3MvKicgJ3JlZnMvaGVhZHMvKjpyZWZzL2hlYWRzLyonCisJKSAmJgorCisJKGNkICQyICYmIGhnIC1xIHVwZGF0ZSkKK30KKworIyBjbG9uZSB0byBhIGdpdCByZXBvIHdpdGggaGcKK2dpdF9jbG9uZV9oZyAoKSB7CisJKAorCWdpdCBpbml0IC1xICQyICYmCisJY2QgJDEgJiYKKwloZyBib29rbWFyayAtaSAtZiAtciB0aXAgbWFzdGVyICYmCisJaGcgLXEgcHVzaCAtciBtYXN0ZXIgLi4vJDIgfHwgdHJ1ZQorCSkKK30KKworIyBjbG9uZSB0byBhbiBoZyByZXBvIHdpdGggaGcKK2hnX2Nsb25lX2hnICgpIHsKKwloZyAtcSBjbG9uZSAkMSAkMgorfQorCisjIHB1c2ggYW4gaGcgcmVwbyB3aXRoIGdpdAoraGdfcHVzaF9naXQgKCkgeworCSgKKwljZCAkMgorCW9sZD0kKGdpdCBzeW1ib2xpYy1yZWYgLS1zaG9ydCBIRUFEKQorCWdpdCBjaGVja291dCAtcSAtYiB0bXAgJiYKKwlnaXQgZmV0Y2ggLXEgImhnOjokUFdELy4uLyQxIiAncmVmcy90YWdzLyo6cmVmcy90YWdzLyonICdyZWZzL2hlYWRzLyo6cmVmcy9oZWFkcy8qJyAmJgorCWdpdCBjaGVja291dCAtcSAkb2xkICYmCisJZ2l0IGJyYW5jaCAtcSAtRCB0bXAgMj4gL2Rldi9udWxsIHx8IHRydWUKKwkpCit9CisKKyMgcHVzaCBhbiBoZyBnaXQgcmVwbyB3aXRoIGhnCitoZ19wdXNoX2hnICgpIHsKKwkoCisJY2QgJDEgJiYKKwloZyAtcSBwdXNoIC4uLyQyIHx8IHRydWUKKwkpCit9CisKK2hnX2xvZyAoKSB7CisJaGcgLVIgJDEgbG9nIC0tZ3JhcGggLS1kZWJ1ZyA+bG9nICYmCisJZ3JlcCAtdiAndGFnOiAqZGVmYXVsdC8nIGxvZworfQorCitnaXRfbG9nICgpIHsKKwlnaXQgLS1naXQtZGlyPSQxLy5naXQgZmFzdC1leHBvcnQgLS1icmFuY2hlcworfQorCitzZXR1cCAoKSB7CisJKAorCWVjaG8gIlt1aV0iCisJZWNobyAidXNlcm5hbWUgPSBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPiIKKwllY2hvICJbZGVmYXVsdHNdIgorCWVjaG8gImJhY2tvdXQgPSAtZCBcIjAgMFwiIgorCWVjaG8gImNvbW1pdCA9IC1kIFwiMCAwXCIiCisJZWNobyAiZGVidWdyYXdjb21taXQgPSAtZCBcIjAgMFwiIgorCWVjaG8gInRhZyA9IC1kIFwiMCAwXCIiCisJZWNobyAiW2V4dGVuc2lvbnNdIgorCWVjaG8gImhnZXh0LmJvb2ttYXJrcyA9IgorCWVjaG8gImhnZ2l0ID0iCisJZWNobyAiZ3JhcGhsb2cgPSIKKwkpID4+ICIkSE9NRSIvLmhncmMgJiYKKwlnaXQgY29uZmlnIC0tZ2xvYmFsIHJlY2VpdmUuZGVueWN1cnJlbnRicmFuY2ggd2FybgorCWdpdCBjb25maWcgLS1nbG9iYWwgcmVtb3RlLWhnLmhnLWdpdC1jb21wYXQgdHJ1ZQorCWdpdCBjb25maWcgLS1nbG9iYWwgcmVtb3RlLWhnLnRyYWNrLWJyYW5jaGVzIGZhbHNlCisKKwlIR0VESVRPUj0vdXNyL2Jpbi90cnVlCisKKwlHSVRfQVVUSE9SX0RBVEU9IjIwMDctMDEtMDEgMDA6MDA6MDAgKzAyMzAiCisJR0lUX0NPTU1JVFRFUl9EQVRFPSIkR0lUX0FVVEhPUl9EQVRFIgorCWV4cG9ydCBIR0VESVRPUiBHSVRfQVVUSE9SX0RBVEUgR0lUX0NPTU1JVFRFUl9EQVRFCit9CisKK3NldHVwCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2V4ZWN1dGFibGUgYml0JyAnCisJbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKworCSgKKwlnaXQgaW5pdCAtcSBnaXRyZXBvICYmCisJY2QgZ2l0cmVwbyAmJgorCWVjaG8gYWxwaGEgPiBhbHBoYSAmJgorCWNobW9kIDA2NDQgYWxwaGEgJiYKKwlnaXQgYWRkIGFscGhhICYmCisJZ2l0IGNvbW1pdCAtbSAiYWRkIGFscGhhIiAmJgorCWNobW9kIDA3NTUgYWxwaGEgJiYKKwlnaXQgYWRkIGFscGhhICYmCisJZ2l0IGNvbW1pdCAtbSAic2V0IGV4ZWN1dGFibGUgYml0IiAmJgorCWNobW9kIDA2NDQgYWxwaGEgJiYKKwlnaXQgYWRkIGFscGhhICYmCisJZ2l0IGNvbW1pdCAtbSAiY2xlYXIgZXhlY3V0YWJsZSBiaXQiCisJKSAmJgorCisJZm9yIHggaW4gaGcgZ2l0OyBkbworCQkoCisJCWhnX2Nsb25lXyR4IGdpdHJlcG8gaGdyZXBvLSR4ICYmCisJCWNkIGhncmVwby0keCAmJgorCQloZ19sb2cgLiAmJgorCQloZyBtYW5pZmVzdCAtciAxIC12ICYmCisJCWhnIG1hbmlmZXN0IC12CisJCSkgPiBvdXRwdXQtJHggJiYKKworCQlnaXRfY2xvbmVfJHggaGdyZXBvLSR4IGdpdHJlcG8yLSR4ICYmCisJCWdpdF9sb2cgZ2l0cmVwbzItJHggPiBsb2ctJHgKKwlkb25lICYmCisKKwl0ZXN0X2NtcCBvdXRwdXQtaGcgb3V0cHV0LWdpdCAmJgorCXRlc3RfY21wIGxvZy1oZyBsb2ctZ2l0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N5bWxpbmsnICcKKwlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCisJKAorCWdpdCBpbml0IC1xIGdpdHJlcG8gJiYKKwljZCBnaXRyZXBvICYmCisJZWNobyBhbHBoYSA+IGFscGhhICYmCisJZ2l0IGFkZCBhbHBoYSAmJgorCWdpdCBjb21taXQgLW0gImFkZCBhbHBoYSIgJiYKKwlsbiAtcyBhbHBoYSBiZXRhICYmCisJZ2l0IGFkZCBiZXRhICYmCisJZ2l0IGNvbW1pdCAtbSAiYWRkIGJldGEiCisJKSAmJgorCisJZm9yIHggaW4gaGcgZ2l0OyBkbworCQkoCisJCWhnX2Nsb25lXyR4IGdpdHJlcG8gaGdyZXBvLSR4ICYmCisJCWNkIGhncmVwby0keCAmJgorCQloZ19sb2cgLiAmJgorCQloZyBtYW5pZmVzdCAtdgorCQkpID4gb3V0cHV0LSR4ICYmCisKKwkJZ2l0X2Nsb25lXyR4IGhncmVwby0keCBnaXRyZXBvMi0keCAmJgorCQlnaXRfbG9nIGdpdHJlcG8yLSR4ID4gbG9nLSR4CisJZG9uZSAmJgorCisJdGVzdF9jbXAgb3V0cHV0LWhnIG91dHB1dC1naXQgJiYKKwl0ZXN0X2NtcCBsb2ctaGcgbG9nLWdpdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBjb25mbGljdCAxJyAnCisJbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKworCSgKKwloZyBpbml0IGhncmVwbzEgJiYKKwljZCBoZ3JlcG8xICYmCisJZWNobyBBID4gYWZpbGUgJiYKKwloZyBhZGQgYWZpbGUgJiYKKwloZyBjaSAtbSAib3JpZ2luIiAmJgorCisJZWNobyBCID4gYWZpbGUgJiYKKwloZyBjaSAtbSAiQS0+QiIgJiYKKworCWhnIHVwIC1yMCAmJgorCWVjaG8gQyA+IGFmaWxlICYmCisJaGcgY2kgLW0gIkEtPkMiICYmCisKKwloZyBtZXJnZSAtcjEgfHwgdHJ1ZSAmJgorCWVjaG8gQyA+IGFmaWxlICYmCisJaGcgcmVzb2x2ZSAtbSBhZmlsZSAmJgorCWhnIGNpIC1tICJtZXJnZSB0byBDIgorCSkgJiYKKworCWZvciB4IGluIGhnIGdpdDsgZG8KKwkJZ2l0X2Nsb25lXyR4IGhncmVwbzEgZ2l0cmVwby0keCAmJgorCQloZ19jbG9uZV8keCBnaXRyZXBvLSR4IGhncmVwbzItJHggJiYKKwkJaGdfbG9nIGhncmVwbzItJHggPiBoZy1sb2ctJHggJiYKKwkJZ2l0X2xvZyBnaXRyZXBvLSR4ID4gZ2l0LWxvZy0keAorCWRvbmUgJiYKKworCXRlc3RfY21wIGhnLWxvZy1oZyBoZy1sb2ctZ2l0ICYmCisJdGVzdF9jbXAgZ2l0LWxvZy1oZyBnaXQtbG9nLWdpdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBjb25mbGljdCAyJyAnCisJbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKworCSgKKwloZyBpbml0IGhncmVwbzEgJiYKKwljZCBoZ3JlcG8xICYmCisJZWNobyBBID4gYWZpbGUgJiYKKwloZyBhZGQgYWZpbGUgJiYKKwloZyBjaSAtbSAib3JpZ2luIiAmJgorCisJZWNobyBCID4gYWZpbGUgJiYKKwloZyBjaSAtbSAiQS0+QiIgJiYKKworCWhnIHVwIC1yMCAmJgorCWVjaG8gQyA+IGFmaWxlICYmCisJaGcgY2kgLW0gIkEtPkMiICYmCisKKwloZyBtZXJnZSAtcjEgfHwgdHJ1ZSAmJgorCWVjaG8gQiA+IGFmaWxlICYmCisJaGcgcmVzb2x2ZSAtbSBhZmlsZSAmJgorCWhnIGNpIC1tICJtZXJnZSB0byBCIgorCSkgJiYKKworCWZvciB4IGluIGhnIGdpdDsgZG8KKwkJZ2l0X2Nsb25lXyR4IGhncmVwbzEgZ2l0cmVwby0keCAmJgorCQloZ19jbG9uZV8keCBnaXRyZXBvLSR4IGhncmVwbzItJHggJiYKKwkJaGdfbG9nIGhncmVwbzItJHggPiBoZy1sb2ctJHggJiYKKwkJZ2l0X2xvZyBnaXRyZXBvLSR4ID4gZ2l0LWxvZy0keAorCWRvbmUgJiYKKworCXRlc3RfY21wIGhnLWxvZy1oZyBoZy1sb2ctZ2l0ICYmCisJdGVzdF9jbXAgZ2l0LWxvZy1oZyBnaXQtbG9nLWdpdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb252ZXJnZWQgbWVyZ2UnICcKKwlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCisJKAorCWhnIGluaXQgaGdyZXBvMSAmJgorCWNkIGhncmVwbzEgJiYKKwllY2hvIEEgPiBhZmlsZSAmJgorCWhnIGFkZCBhZmlsZSAmJgorCWhnIGNpIC1tICJvcmlnaW4iICYmCisKKwllY2hvIEIgPiBhZmlsZSAmJgorCWhnIGNpIC1tICJBLT5CIiAmJgorCisJZWNobyBDID4gYWZpbGUgJiYKKwloZyBjaSAtbSAiQi0+QyIgJiYKKworCWhnIHVwIC1yMCAmJgorCWVjaG8gQyA+IGFmaWxlICYmCisJaGcgY2kgLW0gIkEtPkMiICYmCisKKwloZyBtZXJnZSAtcjIgfHwgdHJ1ZSAmJgorCWhnIGNpIC1tICJtZXJnZSIKKwkpICYmCisKKwlmb3IgeCBpbiBoZyBnaXQ7IGRvCisJCWdpdF9jbG9uZV8keCBoZ3JlcG8xIGdpdHJlcG8tJHggJiYKKwkJaGdfY2xvbmVfJHggZ2l0cmVwby0keCBoZ3JlcG8yLSR4ICYmCisJCWhnX2xvZyBoZ3JlcG8yLSR4ID4gaGctbG9nLSR4ICYmCisJCWdpdF9sb2cgZ2l0cmVwby0keCA+IGdpdC1sb2ctJHgKKwlkb25lICYmCisKKwl0ZXN0X2NtcCBoZy1sb2ctaGcgaGctbG9nLWdpdCAmJgorCXRlc3RfY21wIGdpdC1sb2ctaGcgZ2l0LWxvZy1naXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZW5jb2RpbmcnICcKKwlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCisJKAorCWdpdCBpbml0IC1xIGdpdHJlcG8gJiYKKwljZCBnaXRyZXBvICYmCisKKwllY2hvIGFscGhhID4gYWxwaGEgJiYKKwlnaXQgYWRkIGFscGhhICYmCisJZ2l0IGNvbW1pdCAtbSAiYWRkIMOkbHBow6AiICYmCisKKwlHSVRfQVVUSE9SX05BTUU9InTDqXN0IMOobmPDtmTDrm5nIiAmJgorCWV4cG9ydCBHSVRfQVVUSE9SX05BTUUgJiYKKwllY2hvIGJldGEgPiBiZXRhICYmCisJZ2l0IGFkZCBiZXRhICYmCisJZ2l0IGNvbW1pdCAtbSAiYWRkIGJldGEiICYmCisKKwllY2hvIGdhbW1hID4gZ2FtbWEgJiYKKwlnaXQgYWRkIGdhbW1hICYmCisJZ2l0IGNvbW1pdCAtbSAiYWRkIGfDpG1tw6IiICYmCisKKwk6IFRPRE8gZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIGxhdGluLTEgJiYKKwllY2hvIGRlbHRhID4gZGVsdGEgJiYKKwlnaXQgYWRkIGRlbHRhICYmCisJZ2l0IGNvbW1pdCAtbSAiYWRkIGTDqWx0w6AiCisJKSAmJgorCisJZm9yIHggaW4gaGcgZ2l0OyBkbworCQloZ19jbG9uZV8keCBnaXRyZXBvIGhncmVwby0keCAmJgorCQlnaXRfY2xvbmVfJHggaGdyZXBvLSR4IGdpdHJlcG8yLSR4ICYmCisKKwkJSEdFTkNPRElORz11dGYtOCBoZ19sb2cgaGdyZXBvLSR4ID4gaGctbG9nLSR4ICYmCisJCWdpdF9sb2cgZ2l0cmVwbzItJHggPiBnaXQtbG9nLSR4CisJZG9uZSAmJgorCisJdGVzdF9jbXAgaGctbG9nLWhnIGhnLWxvZy1naXQgJiYKKwl0ZXN0X2NtcCBnaXQtbG9nLWhnIGdpdC1sb2ctZ2l0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZpbGUgcmVtb3ZhbCcgJworCW1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAiICYmCisKKwkoCisJZ2l0IGluaXQgLXEgZ2l0cmVwbyAmJgorCWNkIGdpdHJlcG8gJiYKKwllY2hvIGFscGhhID4gYWxwaGEgJiYKKwlnaXQgYWRkIGFscGhhICYmCisJZ2l0IGNvbW1pdCAtbSAiYWRkIGFscGhhIiAmJgorCWVjaG8gYmV0YSA+IGJldGEgJiYKKwlnaXQgYWRkIGJldGEgJiYKKwlnaXQgY29tbWl0IC1tICJhZGQgYmV0YSIKKwlta2RpciBmb28gJiYKKwllY2hvIGJsYWggPiBmb28vYmFyICYmCisJZ2l0IGFkZCBmb28gJiYKKwlnaXQgY29tbWl0IC1tICJhZGQgZm9vIiAmJgorCWdpdCBybSBhbHBoYSAmJgorCWdpdCBjb21taXQgLW0gInJlbW92ZSBhbHBoYSIgJiYKKwlnaXQgcm0gZm9vL2JhciAmJgorCWdpdCBjb21taXQgLW0gInJlbW92ZSBmb28vYmFyIgorCSkgJiYKKworCWZvciB4IGluIGhnIGdpdDsgZG8KKwkJKAorCQloZ19jbG9uZV8keCBnaXRyZXBvIGhncmVwby0keCAmJgorCQljZCBoZ3JlcG8tJHggJiYKKwkJaGdfbG9nIC4gJiYKKwkJaGcgbWFuaWZlc3QgLXIgMyAmJgorCQloZyBtYW5pZmVzdAorCQkpID4gb3V0cHV0LSR4ICYmCisKKwkJZ2l0X2Nsb25lXyR4IGhncmVwby0keCBnaXRyZXBvMi0keCAmJgorCQlnaXRfbG9nIGdpdHJlcG8yLSR4ID4gbG9nLSR4CisJZG9uZSAmJgorCisJdGVzdF9jbXAgb3V0cHV0LWhnIG91dHB1dC1naXQgJiYKKwl0ZXN0X2NtcCBsb2ctaGcgbG9nLWdpdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgdGFncycgJworCW1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAiICYmCisKKwkoCisJZ2l0IGluaXQgLXEgZ2l0cmVwbyAmJgorCWNkIGdpdHJlcG8gJiYKKwlnaXQgY29uZmlnIHJlY2VpdmUuZGVueUN1cnJlbnRCcmFuY2ggaWdub3JlICYmCisJZWNobyBhbHBoYSA+IGFscGhhICYmCisJZ2l0IGFkZCBhbHBoYSAmJgorCWdpdCBjb21taXQgLW0gImFkZCBhbHBoYSIgJiYKKwlnaXQgdGFnIGFscGhhICYmCisKKwllY2hvIGJldGEgPiBiZXRhICYmCisJZ2l0IGFkZCBiZXRhICYmCisJZ2l0IGNvbW1pdCAtbSAiYWRkIGJldGEiICYmCisJZ2l0IHRhZyAtYSAtbSAiYWRkZWQgdGFnIGJldGEiIGJldGEKKwkpICYmCisKKwlmb3IgeCBpbiBoZyBnaXQ7IGRvCisJCWhnX2Nsb25lXyR4IGdpdHJlcG8gaGdyZXBvLSR4ICYmCisJCWhnX2xvZyBoZ3JlcG8tJHggPiBsb2ctJHgKKwlkb25lICYmCisKKwl0ZXN0X2NtcCBsb2ctaGcgbG9nLWdpdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdoZyBhdXRob3InICcKKwlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCisJZm9yIHggaW4gaGcgZ2l0OyBkbworCQkoCisJCWdpdCBpbml0IC1xIGdpdHJlcG8tJHggJiYKKwkJY2QgZ2l0cmVwby0keCAmJgorCisJCWVjaG8gYWxwaGEgPiBhbHBoYSAmJgorCQlnaXQgYWRkIGFscGhhICYmCisJCWdpdCBjb21taXQgLW0gImFkZCBhbHBoYSIgJiYKKwkJZ2l0IGNoZWNrb3V0IC1xIC1iIG5vdC1tYXN0ZXIKKwkJKSAmJgorCisJCSgKKwkJaGdfY2xvbmVfJHggZ2l0cmVwby0keCBoZ3JlcG8tJHggJiYKKwkJY2QgaGdyZXBvLSR4ICYmCisKKwkJaGcgY28gbWFzdGVyICYmCisJCWVjaG8gYmV0YSA+IGJldGEgJiYKKwkJaGcgYWRkIGJldGEgJiYKKwkJaGcgY29tbWl0IC11ICJ0ZXN0IiAtbSAiYWRkIGJldGEiICYmCisKKwkJZWNobyBnYW1tYSA+PiBiZXRhICYmCisJCWhnIGNvbW1pdCAtdSAidGVzdCA8dGVzdEBleGFtcGxlLmNvbT4gKGNvbW1lbnQpIiAtbSAibW9kaWZ5IGJldGEiICYmCisKKwkJZWNobyBnYW1tYSA+IGdhbW1hICYmCisJCWhnIGFkZCBnYW1tYSAmJgorCQloZyBjb21taXQgLXUgIjx0ZXN0QGV4YW1wbGUuY29tPiIgLW0gImFkZCBnYW1tYSIgJiYKKworCQllY2hvIGRlbHRhID4gZGVsdGEgJiYKKwkJaGcgYWRkIGRlbHRhICYmCisJCWhnIGNvbW1pdCAtdSAibmFtZTx0ZXN0QGV4YW1wbGUuY29tPiIgLW0gImFkZCBkZWx0YSIgJiYKKworCQllY2hvIGVwc2lsb24gPiBlcHNpbG9uICYmCisJCWhnIGFkZCBlcHNpbG9uICYmCisJCWhnIGNvbW1pdCAtdSAibmFtZSA8dGVzdEBleGFtcGxlLmNvbSIgLW0gImFkZCBlcHNpbG9uIiAmJgorCisJCWVjaG8gemV0YSA+IHpldGEgJiYKKwkJaGcgYWRkIHpldGEgJiYKKwkJaGcgY29tbWl0IC11ICIgdGVzdCAiIC1tICJhZGQgemV0YSIgJiYKKworCQllY2hvIGV0YSA+IGV0YSAmJgorCQloZyBhZGQgZXRhICYmCisJCWhnIGNvbW1pdCAtdSAidGVzdCA8IHRlc3RAZXhhbXBsZS5jb20gPiIgLW0gImFkZCBldGEiICYmCisKKwkJZWNobyB0aGV0YSA+IHRoZXRhICYmCisJCWhnIGFkZCB0aGV0YSAmJgorCQloZyBjb21taXQgLXUgInRlc3QgPnRlc3RAZXhhbXBsZS5jb20+IiAtbSAiYWRkIHRoZXRhIiAmJgorCisJCWVjaG8gaW90YSA+IGlvdGEgJiYKKwkJaGcgYWRkIGlvdGEgJiYKKwkJaGcgY29tbWl0IC11ICJ0ZXN0IDx0ZXN0IDxhdD4gZXhhbXBsZSA8ZG90PiBjb20+IiAtbSAiYWRkIGlvdGEiCisJCSkgJiYKKworCQloZ19wdXNoXyR4IGhncmVwby0keCBnaXRyZXBvLSR4ICYmCisJCWhnX2Nsb25lXyR4IGdpdHJlcG8tJHggaGdyZXBvMi0keCAmJgorCisJCWhnX2xvZyBoZ3JlcG8yLSR4ID4gaGctbG9nLSR4ICYmCisJCWdpdF9sb2cgZ2l0cmVwby0keCA+IGdpdC1sb2ctJHgKKwlkb25lICYmCisKKwl0ZXN0X2NtcCBoZy1sb2ctaGcgaGctbG9nLWdpdCAmJgorCXRlc3RfY21wIGdpdC1sb2ctaGcgZ2l0LWxvZy1naXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaGcgYnJhbmNoJyAnCisJbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKworCWZvciB4IGluIGhnIGdpdDsgZG8KKwkJKAorCQlnaXQgaW5pdCAtcSBnaXRyZXBvLSR4ICYmCisJCWNkIGdpdHJlcG8tJHggJiYKKworCQllY2hvIGFscGhhID4gYWxwaGEgJiYKKwkJZ2l0IGFkZCBhbHBoYSAmJgorCQlnaXQgY29tbWl0IC1xIC1tICJhZGQgYWxwaGEiICYmCisJCWdpdCBjaGVja291dCAtcSAtYiBub3QtbWFzdGVyCisJCSkgJiYKKworCQkoCisJCWhnX2Nsb25lXyR4IGdpdHJlcG8tJHggaGdyZXBvLSR4ICYmCisKKwkJY2QgaGdyZXBvLSR4ICYmCisJCWhnIC1xIGNvIG1hc3RlciAmJgorCQloZyBtdiBhbHBoYSBiZXRhICYmCisJCWhnIC1xIGNvbW1pdCAtbSAicmVuYW1lIGFscGhhIHRvIGJldGEiICYmCisJCWhnIGJyYW5jaCBnYW1tYSB8IGdyZXAgLXYgInBlcm1hbmVudCBhbmQgZ2xvYmFsIiAmJgorCQloZyAtcSBjb21taXQgLW0gInN0YXJ0ZWQgYnJhbmNoIGdhbW1hIgorCQkpICYmCisKKwkJaGdfcHVzaF8keCBoZ3JlcG8tJHggZ2l0cmVwby0keCAmJgorCQloZ19jbG9uZV8keCBnaXRyZXBvLSR4IGhncmVwbzItJHggJiYKKworCQloZ19sb2cgaGdyZXBvMi0keCA+IGhnLWxvZy0keCAmJgorCQlnaXRfbG9nIGdpdHJlcG8tJHggPiBnaXQtbG9nLSR4CisJZG9uZSAmJgorCisJdGVzdF9jbXAgaGctbG9nLWhnIGhnLWxvZy1naXQgJiYKKwl0ZXN0X2NtcCBnaXQtbG9nLWhnIGdpdC1sb2ctZ2l0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2hnIHRhZ3MnICcKKwlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCisJZm9yIHggaW4gaGcgZ2l0OyBkbworCQkoCisJCWdpdCBpbml0IC1xIGdpdHJlcG8tJHggJiYKKwkJY2QgZ2l0cmVwby0keCAmJgorCisJCWVjaG8gYWxwaGEgPiBhbHBoYSAmJgorCQlnaXQgYWRkIGFscGhhICYmCisJCWdpdCBjb21taXQgLW0gImFkZCBhbHBoYSIgJiYKKwkJZ2l0IGNoZWNrb3V0IC1xIC1iIG5vdC1tYXN0ZXIKKwkJKSAmJgorCisJCSgKKwkJaGdfY2xvbmVfJHggZ2l0cmVwby0keCBoZ3JlcG8tJHggJiYKKworCQljZCBoZ3JlcG8tJHggJiYKKwkJaGcgY28gbWFzdGVyICYmCisJCWhnIHRhZyBhbHBoYQorCQkpICYmCisKKwkJaGdfcHVzaF8keCBoZ3JlcG8tJHggZ2l0cmVwby0keCAmJgorCQloZ19jbG9uZV8keCBnaXRyZXBvLSR4IGhncmVwbzItJHggJiYKKworCQkoCisJCWdpdCAtLWdpdC1kaXI9Z2l0cmVwby0keC8uZ2l0IHRhZyAtbCAmJgorCQloZ19sb2cgaGdyZXBvMi0keCAmJgorCQljYXQgaGdyZXBvMi0keC8uaGd0YWdzCisJCSkgPiBvdXRwdXQtJHgKKwlkb25lICYmCisKKwl0ZXN0X2NtcCBvdXRwdXQtaGcgb3V0cHV0LWdpdAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy5zaCBiL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ZGUyYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy90ZXN0LWhnLnNoCkBAIC0wLDAgKzEsMTU3IEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDEyIEZlbGlwZSBDb250cmVyYXMKKyMKKyMgQmFzZSBjb21tYW5kcyBmcm9tIGhnLWdpdCB0ZXN0czoKKyMgaHR0cHM6Ly9iaXRidWNrZXQub3JnL2R1cmluNDIvaGctZ2l0L3NyYworIworCit0ZXN0X2Rlc2NyaXB0aW9uPSdUZXN0IHJlbW90ZS1oZycKKworLiAuL3Rlc3QtbGliLnNoCisKK2lmICEgdGVzdF9oYXZlX3ByZXJlcSBQWVRIT047IHRoZW4KKwlza2lwX2FsbD0nc2tpcHBpbmcgcmVtb3RlLWhnIHRlc3RzOyBweXRob24gbm90IGF2YWlsYWJsZScKKwl0ZXN0X2RvbmUKK2ZpCisKK2lmICEgIiRQWVRIT05fUEFUSCIgLWMgJ2ltcG9ydCBtZXJjdXJpYWwnOyB0aGVuCisJc2tpcF9hbGw9J3NraXBwaW5nIHJlbW90ZS1oZyB0ZXN0czsgbWVyY3VyaWFsIG5vdCBhdmFpbGFibGUnCisJdGVzdF9kb25lCitmaQorCitjaGVjayAoKSB7CisJKGNkICQxICYmCisJZ2l0IGxvZyAtLWZvcm1hdD0nJXMnIC0xICYmCisJZ2l0IHN5bWJvbGljLXJlZiBIRUFEKSA+IGFjdHVhbCAmJgorCShlY2hvICQyICYmCisJZWNobyAicmVmcy9oZWFkcy8kMyIpID4gZXhwZWN0ZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKK30KKworc2V0dXAgKCkgeworCSgKKwllY2hvICJbdWldIgorCWVjaG8gInVzZXJuYW1lID0gSCBHIFdlbGxzIDx3ZWxsc0BleGFtcGxlLmNvbT4iCisJKSA+PiAiJEhPTUUiLy5oZ3JjCit9CisKK3NldHVwCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25pbmcnICcKKyAgdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyoiICYmCisKKyAgKAorICBoZyBpbml0IGhncmVwbyAmJgorICBjZCBoZ3JlcG8gJiYKKyAgZWNobyB6ZXJvID4gY29udGVudCAmJgorICBoZyBhZGQgY29udGVudCAmJgorICBoZyBjb21taXQgLW0gemVybworICApICYmCisKKyAgZ2l0IGNsb25lICJoZzo6JFBXRC9oZ3JlcG8iIGdpdHJlcG8gJiYKKyAgY2hlY2sgZ2l0cmVwbyB6ZXJvIG1hc3RlcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uaW5nIHdpdGggYnJhbmNoZXMnICcKKyAgdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyoiICYmCisKKyAgKAorICBjZCBoZ3JlcG8gJiYKKyAgaGcgYnJhbmNoIG5leHQgJiYKKyAgZWNobyBuZXh0ID4gY29udGVudCAmJgorICBoZyBjb21taXQgLW0gbmV4dAorICApICYmCisKKyAgZ2l0IGNsb25lICJoZzo6JFBXRC9oZ3JlcG8iIGdpdHJlcG8gJiYKKyAgY2hlY2sgZ2l0cmVwbyBuZXh0IG5leHQgJiYKKworICAoY2QgaGdyZXBvICYmIGhnIGNoZWNrb3V0IGRlZmF1bHQpICYmCisKKyAgZ2l0IGNsb25lICJoZzo6JFBXRC9oZ3JlcG8iIGdpdHJlcG8yICYmCisgIGNoZWNrIGdpdHJlcG8yIHplcm8gbWFzdGVyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25pbmcgd2l0aCBib29rbWFya3MnICcKKyAgdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyoiICYmCisKKyAgKAorICBjZCBoZ3JlcG8gJiYKKyAgaGcgYm9va21hcmsgZmVhdHVyZS1hICYmCisgIGVjaG8gZmVhdHVyZS1hID4gY29udGVudCAmJgorICBoZyBjb21taXQgLW0gZmVhdHVyZS1hCisgICkgJiYKKworICBnaXQgY2xvbmUgImhnOjokUFdEL2hncmVwbyIgZ2l0cmVwbyAmJgorICBjaGVjayBnaXRyZXBvIGZlYXR1cmUtYSBmZWF0dXJlLWEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZyB3aXRoIGRldGFjaGVkIGhlYWQnICcKKyAgdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyoiICYmCisKKyAgKAorICBjZCBoZ3JlcG8gJiYKKyAgaGcgdXBkYXRlIC1yIDAKKyAgKSAmJgorCisgIGdpdCBjbG9uZSAiaGc6OiRQV0QvaGdyZXBvIiBnaXRyZXBvICYmCisgIGNoZWNrIGdpdHJlcG8gemVybyBtYXN0ZXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndXBkYXRlIGJvb2ttYXJrJyAnCisgIHRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIiAmJgorCisgICgKKyAgY2QgaGdyZXBvICYmCisgIGhnIGJvb2ttYXJrIGRldmVsCisgICkgJiYKKworICAoCisgIGdpdCBjbG9uZSAiaGc6OiRQV0QvaGdyZXBvIiBnaXRyZXBvICYmCisgIGNkIGdpdHJlcG8gJiYKKyAgZ2l0IGNoZWNrb3V0IGRldmVsICYmCisgIGVjaG8gZGV2ZWwgPiBjb250ZW50ICYmCisgIGdpdCBjb21taXQgLWEgLW0gZGV2ZWwgJiYKKyAgZ2l0IHB1c2gKKyAgKSAmJgorCisgIGhnIC1SIGhncmVwbyBib29rbWFya3MgfCBlZ3JlcCAiZGV2ZWxbCSBdKzM6IgorJworCithdXRob3JfdGVzdCAoKSB7CisgIGVjaG8gJDEgPj4gY29udGVudCAmJgorICBoZyBjb21taXQgLXUgIiQyIiAtbSAiYWRkICQxIiAmJgorICBlY2hvICIkMyIgPj4gLi4vZXhwZWN0ZWQKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYXV0aG9ycycgJworICBta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCisgIHRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKworICAoCisgIGhnIGluaXQgaGdyZXBvICYmCisgIGNkIGhncmVwbyAmJgorCisgIHRvdWNoIGNvbnRlbnQgJiYKKyAgaGcgYWRkIGNvbnRlbnQgJiYKKworICBhdXRob3JfdGVzdCBhbHBoYSAiIiAiSCBHIFdlbGxzIDx3ZWxsc0BleGFtcGxlLmNvbT4iICYmCisgIGF1dGhvcl90ZXN0IGJldGEgInRlc3QiICJ0ZXN0IDx1bmtub3duPiIgJiYKKyAgYXV0aG9yX3Rlc3QgYmV0YSAidGVzdCA8dGVzdEBleGFtcGxlLmNvbT4gKGNvbW1lbnQpIiAidGVzdCA8dGVzdEBleGFtcGxlLmNvbT4iICYmCisgIGF1dGhvcl90ZXN0IGdhbW1hICI8dGVzdEBleGFtcGxlLmNvbT4iICJVbmtub3duIDx0ZXN0QGV4YW1wbGUuY29tPiIgJiYKKyAgYXV0aG9yX3Rlc3QgZGVsdGEgIm5hbWU8dGVzdEBleGFtcGxlLmNvbT4iICJuYW1lIDx0ZXN0QGV4YW1wbGUuY29tPiIgJiYKKyAgYXV0aG9yX3Rlc3QgZXBzaWxvbiAibmFtZSA8dGVzdEBleGFtcGxlLmNvbSIgIm5hbWUgPHRlc3RAZXhhbXBsZS5jb20+IiAmJgorICBhdXRob3JfdGVzdCB6ZXRhICIgdGVzdCAiICJ0ZXN0IDx1bmtub3duPiIgJiYKKyAgYXV0aG9yX3Rlc3QgZXRhICJ0ZXN0IDwgdGVzdEBleGFtcGxlLmNvbSA+IiAidGVzdCA8dGVzdEBleGFtcGxlLmNvbT4iICYmCisgIGF1dGhvcl90ZXN0IHRoZXRhICJ0ZXN0ID50ZXN0QGV4YW1wbGUuY29tPiIgInRlc3QgPHRlc3RAZXhhbXBsZS5jb20+IiAmJgorICBhdXRob3JfdGVzdCBpb3RhICJ0ZXN0IDwgdGVzdCA8YXQ+IGV4YW1wbGUgPGRvdD4gY29tPiIgInRlc3QgPHVua25vd24+IiAmJgorICBhdXRob3JfdGVzdCBrYXBwYSAidGVzdEBleGFtcGxlLmNvbSIgIlVua25vd24gPHRlc3RAZXhhbXBsZS5jb20+IgorICApICYmCisKKyAgZ2l0IGNsb25lICJoZzo6JFBXRC9oZ3JlcG8iIGdpdHJlcG8gJiYKKyAgZ2l0IC0tZ2l0LWRpcj1naXRyZXBvLy5naXQgbG9nIC0tcmV2ZXJzZSAtLWZvcm1hdD0iJWFuIDwlYWU+IiA+IGFjdHVhbCAmJgorCisgIHRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvc3RhdHMvbWFpbG1hcC5wbCBiL2NvbnRyaWIvc3RhdHMvbWFpbG1hcC5wbAppbmRleCA0Yjg1MmUyLi45NTEzZjVlIDEwMDc1NQotLS0gYS9jb250cmliL3N0YXRzL21haWxtYXAucGwKKysrIGIvY29udHJpYi9zdGF0cy9tYWlsbWFwLnBsCkBAIC0xLDM4ICsxLDcwIEBACi0jIS91c3IvYmluL3BlcmwgLXcKLW15ICVtYWlsbWFwID0gKCk7Ci1vcGVuIEksICI8IiwgIi5tYWlsbWFwIjsKLXdoaWxlICg8ST4pIHsKLQljaG9tcDsKLQluZXh0IGlmIC9eIy87Ci0JaWYgKG15ICgkYXV0aG9yLCAkbWFpbCkgPSAvXiguKj8pXHMrPCguKyk+JC8pIHsKLQkJJG1haWxtYXB7JG1haWx9ID0gJGF1dGhvcjsKLQl9Ci19Ci1jbG9zZSBJOworIyEvdXNyL2Jpbi9wZXJsCiAKLW15ICVtYWlsMmF1dGhvciA9ICgpOwotb3BlbiBJLCAiZ2l0IGxvZyAtLXByZXR0eT0nZm9ybWF0OiVhZQklYW4nIHwiOwotd2hpbGUgKDxJPikgewotCWNob21wOwotCW15ICgkbWFpbCwgJGF1dGhvcikgPSBzcGxpdCgvXHQvLCAkXyk7Ci0JbmV4dCBpZiBleGlzdHMgJG1haWxtYXB7JG1haWx9OwotCSRtYWlsMmF1dGhvcnskbWFpbH0gfHw9IHt9OwotCSRtYWlsMmF1dGhvcnskbWFpbH17JGF1dGhvcn0gfHw9IDA7Ci0JJG1haWwyYXV0aG9yeyRtYWlsfXskYXV0aG9yfSsrOwotfQotY2xvc2UgSTsKK3VzZSB3YXJuaW5ncyAnYWxsJzsKK3VzZSBzdHJpY3Q7Cit1c2UgR2V0b3B0OjpMb25nOwogCi13aGlsZSAobXkgKCRtYWlsLCAkYXV0aG9yY291bnQpID0gZWFjaCAlbWFpbDJhdXRob3IpIHsKLQkjICUkYXV0aG9yY291bnQgaXMgKCRhdXRob3IgPT4gJGNvdW50KTsKLQkjIHNvcnQgYW5kIHNob3cgdGhlIG5hbWVzIGZyb20gdGhlIG1vc3QgZnJlcXVlbnQgb25lcy4KLQlteSBAbmFtZXMgPSAobWFwIHsgJF8tPlswXSB9Ci0JCXNvcnQgeyAkYi0+WzFdIDw9PiAkYS0+WzFdIH0KLQkJbWFwIHsgWyRfLCAkYXV0aG9yY291bnQtPnskX31dIH0KLQkJa2V5cyAlJGF1dGhvcmNvdW50KTsKLQlpZiAoMSA8IEBuYW1lcykgewotCQlmb3IgKEBuYW1lcykgewotCQkJcHJpbnQgIiRfIDwkbWFpbD5cbiI7CitteSAkbWF0Y2hfZW1haWxzOworbXkgJG1hdGNoX25hbWVzOworbXkgJG9yZGVyX2J5ID0gJ2NvdW50JzsKK0dldG9wdDo6TG9uZzo6Q29uZmlndXJlKHF3KGJ1bmRsaW5nKSk7CitHZXRPcHRpb25zKAorCSdlbWFpbHN8ZSEnID0+IFwkbWF0Y2hfZW1haWxzLAorCSduYW1lc3xuIScgID0+IFwkbWF0Y2hfbmFtZXMsCisJJ2NvdW50fGMnICAgPT4gc3ViIHsgJG9yZGVyX2J5ID0gJ2NvdW50JyB9LAorCSd0aW1lfHQnICAgID0+IHN1YiB7ICRvcmRlcl9ieSA9ICdzdGFtcCcgfSwKKykgb3IgZXhpdCAxOworJG1hdGNoX2VtYWlscyA9IDEgdW5sZXNzICRtYXRjaF9uYW1lczsKKworbXkgJGVtYWlsID0ge307CitteSAkbmFtZSA9IHt9OworCitvcGVuKG15ICRmaCwgJy18JywgImdpdCBsb2cgLS1mb3JtYXQ9JyVhdCA8JWFFPiAlYU4nIik7Cit3aGlsZSg8JGZoPikgeworCW15ICgkdCwgJGUsICRuKSA9IC8oXFMrKSA8KFxTKyk+ICguKikvOworCW1hcmsoJGVtYWlsLCAkZSwgJG4sICR0KTsKKwltYXJrKCRuYW1lLCAkbiwgJGUsICR0KTsKK30KK2Nsb3NlKCRmaCk7CisKK2lmICgkbWF0Y2hfZW1haWxzKSB7CisJZm9yZWFjaCBteSAkZSAoZHVwcygkZW1haWwpKSB7CisJCWZvcmVhY2ggbXkgJG4gKHZhbHMoJGVtYWlsLT57JGV9KSkgeworCQkJc2hvdygkbiwgJGUsICRlbWFpbC0+eyRlfS0+eyRufSk7CiAJCX0KKwkJcHJpbnQgIlxuIjsKIAl9CiB9CitpZiAoJG1hdGNoX25hbWVzKSB7CisJZm9yZWFjaCBteSAkbiAoZHVwcygkbmFtZSkpIHsKKwkJZm9yZWFjaCBteSAkZSAodmFscygkbmFtZS0+eyRufSkpIHsKKwkJCXNob3coJG4sICRlLCAkbmFtZS0+eyRufS0+eyRlfSk7CisJCX0KKwkJcHJpbnQgIlxuIjsKKwl9Cit9CitleGl0IDA7CiAKK3N1YiBtYXJrIHsKKwlteSAoJGgsICRrLCAkdiwgJHQpID0gQF87CisJbXkgJGUgPSAkaC0+eyRrfS0+eyR2fSB8fD0geyBjb3VudCA9PiAwLCBzdGFtcCA9PiAwIH07CisJJGUtPntjb3VudH0rKzsKKwkkZS0+e3N0YW1wfSA9ICR0IHVubGVzcyAkdCA8ICRlLT57c3RhbXB9OworfQorCitzdWIgZHVwcyB7CisJbXkgJGggPSBzaGlmdDsKKwlyZXR1cm4gZ3JlcCB7IGtleXMoJGgtPnskX30pID4gMSB9IGtleXMoJGgpOworfQorCitzdWIgdmFscyB7CisJbXkgJGggPSBzaGlmdDsKKwlyZXR1cm4gc29ydCB7CisJCSRoLT57JGJ9LT57JG9yZGVyX2J5fSA8PT4gJGgtPnskYX0tPnskb3JkZXJfYnl9CisJfSBrZXlzKCRoKTsKK30KKworc3ViIHNob3cgeworCW15ICgkbiwgJGUsICRoKSA9IEBfOworCXByaW50ICIkbiA8JGU+ICgkaC0+eyRvcmRlcl9ieX0pXG4iOworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9zdWJ0cmVlLy5naXRpZ25vcmUgYi9jb250cmliL3N1YnRyZWUvLmdpdGlnbm9yZQppbmRleCA3ZTc3YzlkLi45MTM2MGEzIDEwMDY0NAotLS0gYS9jb250cmliL3N1YnRyZWUvLmdpdGlnbm9yZQorKysgYi9jb250cmliL3N1YnRyZWUvLmdpdGlnbm9yZQpAQCAtMSw0ICsxLDUgQEAKICp+CitnaXQtc3VidHJlZQogZ2l0LXN1YnRyZWUueG1sCiBnaXQtc3VidHJlZS4xCiBtYWlubGluZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9zdWJ0cmVlL01ha2VmaWxlIGIvY29udHJpYi9zdWJ0cmVlL01ha2VmaWxlCmluZGV4IDA1Y2RkNWMuLmI1MDc1MDUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvc3VidHJlZS9NYWtlZmlsZQorKysgYi9jb250cmliL3N1YnRyZWUvTWFrZWZpbGUKQEAgLTMwLDEyICszMCwxMyBAQAogZG9jOiAkKEdJVF9TVUJUUkVFX0RPQykKIAogaW5zdGFsbDogJChHSVRfU1VCVFJFRSkKLQkkKElOU1RBTEwpIC1tIDc1NSAkKEdJVF9TVUJUUkVFKSAkKGxpYmV4ZWNkaXIpCisJJChJTlNUQUxMKSAtbSA3NTUgJChHSVRfU1VCVFJFRSkgJChERVNURElSKSQobGliZXhlY2RpcikKIAogaW5zdGFsbC1kb2M6IGluc3RhbGwtbWFuCiAKIGluc3RhbGwtbWFuOiAkKEdJVF9TVUJUUkVFX0RPQykKLQkkKElOU1RBTEwpIC1tIDY0NCAkXiAkKG1hbjFkaXIpCisJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChERVNURElSKSQobWFuMWRpcikKKwkkKElOU1RBTEwpIC1tIDY0NCAkXiAkKERFU1RESVIpJChtYW4xZGlyKQogCiAkKEdJVF9TVUJUUkVFX0RPQyk6ICQoR0lUX1NVQlRSRUVfWE1MKQogCXhtbHRvIC1tICQoTUFOUEFHRV9OT1JNQUxfWFNMKSAgbWFuICReCmRpZmYgLS1naXQgYS9jb250cmliL3N1YnRyZWUvZ2l0LXN1YnRyZWUuc2ggYi9jb250cmliL3N1YnRyZWUvZ2l0LXN1YnRyZWUuc2gKaW5kZXggOTIwYzY2NC4uNTFhZTkzMiAxMDA3NTUKLS0tIGEvY29udHJpYi9zdWJ0cmVlL2dpdC1zdWJ0cmVlLnNoCisrKyBiL2NvbnRyaWIvc3VidHJlZS9naXQtc3VidHJlZS5zaApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb250cmliL3N1YnRyZWUvZ2l0LXN1YnRyZWUudHh0IGIvY29udHJpYi9zdWJ0cmVlL2dpdC1zdWJ0cmVlLnR4dAppbmRleCAwYzQ0ZmRhLi43YmE4NTNlIDEwMDY0NAotLS0gYS9jb250cmliL3N1YnRyZWUvZ2l0LXN1YnRyZWUudHh0CisrKyBiL2NvbnRyaWIvc3VidHJlZS9naXQtc3VidHJlZS50eHQKQEAgLTksNyArOSw4IEBACiBTWU5PUFNJUwogLS0tLS0tLS0KIFt2ZXJzZV0KLSdnaXQgc3VidHJlZScgYWRkICAgLVAgPHByZWZpeD4gPGNvbW1pdD4KKydnaXQgc3VidHJlZScgYWRkICAgLVAgPHByZWZpeD4gPHJlZnNwZWM+CisnZ2l0IHN1YnRyZWUnIGFkZCAgIC1QIDxwcmVmaXg+IDxyZXBvc2l0b3J5PiA8cmVmc3BlYz4KICdnaXQgc3VidHJlZScgcHVsbCAgLVAgPHByZWZpeD4gPHJlcG9zaXRvcnk+IDxyZWZzcGVjLi4uPgogJ2dpdCBzdWJ0cmVlJyBwdXNoICAtUCA8cHJlZml4PiA8cmVwb3NpdG9yeT4gPHJlZnNwZWMuLi4+CiAnZ2l0IHN1YnRyZWUnIG1lcmdlIC1QIDxwcmVmaXg+IDxjb21taXQ+CkBAIC05Myw3ICs5NCw3IEBACiAJcmVwb3NpdG9yeS4KIAkKIHB1c2g6OgotCURvZXMgYSAnc3BsaXQnIChzZWUgYWJvdmUpIHVzaW5nIHRoZSA8cHJlZml4PiBzdXBwbGllZAorCURvZXMgYSAnc3BsaXQnIChzZWUgYmVsb3cpIHVzaW5nIHRoZSA8cHJlZml4PiBzdXBwbGllZAogCWFuZCB0aGVuIGRvZXMgYSAnZ2l0IHB1c2gnIHRvIHB1c2ggdGhlIHJlc3VsdCB0byB0aGUgCiAJcmVwb3NpdG9yeSBhbmQgcmVmc3BlYy4gVGhpcyBjYW4gYmUgdXNlZCB0byBwdXNoIHlvdXIKIAlzdWJ0cmVlIHRvIGRpZmZlcmVudCBicmFuY2hlcyBvZiB0aGUgcmVtb3RlIHJlcG9zaXRvcnkuCmRpZmYgLS1naXQgYS9jb250cmliL3N1YnRyZWUvdC90NzkwMC1zdWJ0cmVlLnNoIGIvY29udHJpYi9zdWJ0cmVlL3QvdDc5MDAtc3VidHJlZS5zaAppbmRleCBiYzJlZWIwLi5iMGY4NTM2IDEwMDc1NQotLS0gYS9jb250cmliL3N1YnRyZWUvdC90NzkwMC1zdWJ0cmVlLnNoCisrKyBiL2NvbnRyaWIvc3VidHJlZS90L3Q3OTAwLXN1YnRyZWUuc2gKQEAgLTYwLDcgKzYwLDYgQEAKIAlnaXQgbG9nIC0tcHJldHR5PWZvcm1hdDolcyAtMQogfQogCi0jIDEKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luaXQgc3VicHJvaicgJwogICAgICAgICB0ZXN0X2NyZWF0ZV9yZXBvIHN1YnByb2oKICcKQEAgLTY4LDcgKzY3LDYgQEAKICMgVG8gdGhlIHN1YnByb2plY3QhCiBjZCBzdWJwcm9qCiAKLSMgMgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIHN1YjEnICcKICAgICAgICAgY3JlYXRlIHN1YjEgJiYKICAgICAgICAgZ2l0IGNvbW1pdCAtbSAic3ViMSIgJiYKQEAgLTc2LDE0ICs3NCwxNiBAQAogICAgICAgICBnaXQgYnJhbmNoIC1tIG1hc3RlciBzdWJwcm9qCiAnCiAKLSMgMworIyBTYXZlIHRoaXMgaGFzaCBmb3IgdGVzdGluZyBsYXRlci4KKworc3ViZGlyX2hhc2g9YGdpdCByZXYtcGFyc2UgSEVBRGAKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIHN1YjInICcKICAgICAgICAgY3JlYXRlIHN1YjIgJiYKICAgICAgICAgZ2l0IGNvbW1pdCAtbSAic3ViMiIgJiYKICAgICAgICAgZ2l0IGJyYW5jaCBzdWIyCiAnCiAKLSMgNAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIHN1YjMnICcKICAgICAgICAgY3JlYXRlIHN1YjMgJiYKICAgICAgICAgZ2l0IGNvbW1pdCAtbSAic3ViMyIgJiYKQEAgLTkzLDcgKzkzLDYgQEAKICMgQmFjayB0byBtYWlubGluZQogY2QgLi4KIAotIyA1CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgbWFpbjQnICcKICAgICAgICAgY3JlYXRlIG1haW40ICYmCiAgICAgICAgIGdpdCBjb21taXQgLW0gIm1haW40IiAmJgpAQCAtMTAxLDEwMSArMTAwLDg1IEBACiAgICAgICAgIGdpdCBicmFuY2ggc3ViZGlyCiAnCiAKLSMgNgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggc3VicHJvaiBoaXN0b3J5JyAnCiAgICAgICAgIGdpdCBmZXRjaCAuL3N1YnByb2ogc3ViMSAmJgogICAgICAgICBnaXQgYnJhbmNoIHN1YjEgRkVUQ0hfSEVBRAogJwogCi0jIDcKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vIHN1YnRyZWUgZXhpc3RzIGluIG1haW4gdHJlZScgJwogICAgICAgICB0ZXN0X211c3RfZmFpbCBnaXQgc3VidHJlZSBtZXJnZSAtLXByZWZpeD1zdWJkaXIgc3ViMQogJwogCi0jIDgKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vIHB1bGwgZnJvbSBub24tZXhpc3RhbnQgc3VidHJlZScgJwogICAgICAgICB0ZXN0X211c3RfZmFpbCBnaXQgc3VidHJlZSBwdWxsIC0tcHJlZml4PXN1YmRpciAuL3N1YnByb2ogc3ViMQogJwogCi0jIDkKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIGlmIC0tbWVzc2FnZSB3b3JrcyBmb3IgYWRkJyAnCiAgICAgICAgIGdpdCBzdWJ0cmVlIGFkZCAtLXByZWZpeD1zdWJkaXIgLS1tZXNzYWdlPSJBZGRlZCBzdWJwcm9qZWN0IiBzdWIxICYmCiAgICAgICAgIGNoZWNrX2VxdWFsICcnIiQobGFzdF9jb21taXRfbWVzc2FnZSkiJycgIkFkZGVkIHN1YnByb2plY3QiICYmCiAgICAgICAgIHVuZG8KICcKIAotIyAxMAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgaWYgLS1tZXNzYWdlIHdvcmtzIGFzIC1tIGFuZCAtLXByZWZpeCBhcyAtUCcgJwogICAgICAgICBnaXQgc3VidHJlZSBhZGQgLVAgc3ViZGlyIC1tICJBZGRlZCBzdWJwcm9qZWN0IHVzaW5nIGdpdCBzdWJ0cmVlIiBzdWIxICYmCiAgICAgICAgIGNoZWNrX2VxdWFsICcnIiQobGFzdF9jb21taXRfbWVzc2FnZSkiJycgIkFkZGVkIHN1YnByb2plY3QgdXNpbmcgZ2l0IHN1YnRyZWUiICYmCiAgICAgICAgIHVuZG8KICcKIAotIyAxMQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgaWYgLS1tZXNzYWdlIHdvcmtzIHdpdGggc3F1YXNoIHRvbycgJwogICAgICAgICBnaXQgc3VidHJlZSBhZGQgLVAgc3ViZGlyIC1tICJBZGRlZCBzdWJwcm9qZWN0IHdpdGggc3F1YXNoIiAtLXNxdWFzaCBzdWIxICYmCiAgICAgICAgIGNoZWNrX2VxdWFsICcnIiQobGFzdF9jb21taXRfbWVzc2FnZSkiJycgIkFkZGVkIHN1YnByb2plY3Qgd2l0aCBzcXVhc2giICYmCiAgICAgICAgIHVuZG8KICcKIAotIyAxMgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIHN1YnByb2ogdG8gbWFpbmxpbmUnICcKICAgICAgICAgZ2l0IHN1YnRyZWUgYWRkIC0tcHJlZml4PXN1YmRpci8gRkVUQ0hfSEVBRCAmJgogICAgICAgICBjaGVja19lcXVhbCAnJyIkKGxhc3RfY29tbWl0X21lc3NhZ2UpIicnICJBZGQgJyInc3ViZGlyLyciJyBmcm9tIGNvbW1pdCAnIiciJycnIiQoZ2l0IHJldi1wYXJzZSBzdWIxKSInJyciJyInIgogJwogCi0jIDEzCiAjIHRoaXMgc2hvdWxkbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nLCBzaW5jZSBGRVRDSF9IRUFEIGlzIGFscmVhZHkgYSBwYXJlbnQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGZldGNoZWQgc3VicHJvaicgJwogICAgICAgICBnaXQgbWVyZ2UgLW0gIm1lcmdlIC1zIC1vdXJzIiAtcyBvdXJzIEZFVENIX0hFQUQKICcKIAotIyAxNAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIG1haW4tc3ViNScgJwogICAgICAgICBjcmVhdGUgc3ViZGlyL21haW4tc3ViNSAmJgogICAgICAgICBnaXQgY29tbWl0IC1tICJtYWluLXN1YjUiCiAnCiAKLSMgMTUKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBtYWluNicgJwogICAgICAgICBjcmVhdGUgbWFpbjYgJiYKICAgICAgICAgZ2l0IGNvbW1pdCAtbSAibWFpbjYgYm9yaW5nIgogJwogCi0jIDE2CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgbWFpbi1zdWI3JyAnCiAgICAgICAgIGNyZWF0ZSBzdWJkaXIvbWFpbi1zdWI3ICYmCiAgICAgICAgIGdpdCBjb21taXQgLW0gIm1haW4tc3ViNyIKICcKIAotIyAxNwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggbmV3IHN1YnByb2ogaGlzdG9yeScgJwogICAgICAgICBnaXQgZmV0Y2ggLi9zdWJwcm9qIHN1YjIgJiYKICAgICAgICAgZ2l0IGJyYW5jaCBzdWIyIEZFVENIX0hFQUQKICcKIAotIyAxOAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgaWYgLS1tZXNzYWdlIHdvcmtzIGZvciBtZXJnZScgJwogICAgICAgICBnaXQgc3VidHJlZSBtZXJnZSAtLXByZWZpeD1zdWJkaXIgLW0gIk1lcmdlZCBjaGFuZ2VzIGZyb20gc3VicHJvamVjdCIgc3ViMiAmJgogICAgICAgICBjaGVja19lcXVhbCAnJyIkKGxhc3RfY29tbWl0X21lc3NhZ2UpIicnICJNZXJnZWQgY2hhbmdlcyBmcm9tIHN1YnByb2plY3QiICYmCiAgICAgICAgIHVuZG8KICcKIAotIyAxOQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgaWYgLS1tZXNzYWdlIGZvciBtZXJnZSB3b3JrcyB3aXRoIHNxdWFzaCB0b28nICcKICAgICAgICAgZ2l0IHN1YnRyZWUgbWVyZ2UgLS1wcmVmaXggc3ViZGlyIC1tICJNZXJnZWQgY2hhbmdlcyBmcm9tIHN1YnByb2plY3QgdXNpbmcgc3F1YXNoIiAtLXNxdWFzaCBzdWIyICYmCiAgICAgICAgIGNoZWNrX2VxdWFsICcnIiQobGFzdF9jb21taXRfbWVzc2FnZSkiJycgIk1lcmdlZCBjaGFuZ2VzIGZyb20gc3VicHJvamVjdCB1c2luZyBzcXVhc2giICYmCiAgICAgICAgIHVuZG8KICcKIAotIyAyMAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgbmV3IHN1YnByb2ogaGlzdG9yeSBpbnRvIHN1YmRpcicgJwogICAgICAgICBnaXQgc3VidHJlZSBtZXJnZSAtLXByZWZpeD1zdWJkaXIgRkVUQ0hfSEVBRCAmJgogICAgICAgICBnaXQgYnJhbmNoIHByZS1zcGxpdCAmJgogICAgICAgICBjaGVja19lcXVhbCAnJyIkKGxhc3RfY29tbWl0X21lc3NhZ2UpIicnICJNZXJnZSBjb21taXQgJyInIiciJChnaXQgcmV2LXBhcnNlIHN1YjIpIiciJyInIGludG8gbWFpbmxpbmUiCiAnCiAKLSMgMjEKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0NoZWNrIHRoYXQgcHJlZml4IGFyZ3VtZW50IGlzIHJlcXVpcmVkIGZvciBzcGxpdCcgJwogICAgICAgICBlY2hvICJZb3UgbXVzdCBwcm92aWRlIHRoZSAtLXByZWZpeCBvcHRpb24uIiA+IGV4cGVjdGVkICYmCiAgICAgICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBzdWJ0cmVlIHNwbGl0ID4gYWN0dWFsIDI+JjEgJiYKQEAgLTIwNyw3ICsxOTAsNiBAQAogICAgICAgICBybSAtZiBleHBlY3RlZCBhY3R1YWwKICcKIAotIyAyMgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnQ2hlY2sgdGhhdCB0aGUgPHByZWZpeD4gZXhpc3RzIGZvciBhIHNwbGl0JyAnCiAgICAgICAgIGVjaG8gIiciJyInbm9uLWV4aXN0ZW50LWRpcmVjdG9yeSciJyInIiBkb2VzIG5vdCBleGlzdFw7IHVzZSAiJyInIidnaXQgc3VidHJlZSBhZGQnIiciJyIgPiBleHBlY3RlZCAmJgogICAgICAgICB0ZXN0X211c3RfZmFpbCBnaXQgc3VidHJlZSBzcGxpdCAtLXByZWZpeD1ub24tZXhpc3RlbnQtZGlyZWN0b3J5ID4gYWN0dWFsIDI+JjEgJiYKQEAgLTIxOSw3ICsyMDEsNiBAQAogIyAgICAgICAgcm0gLWYgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKLSMgMjMKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIGlmIC0tbWVzc2FnZSB3b3JrcyBmb3Igc3BsaXQrcmVqb2luJyAnCiAgICAgICAgIHNwbDE9JyciJChnaXQgc3VidHJlZSBzcGxpdCAtLWFubm90YXRlPSciJyonIicgLS1wcmVmaXggc3ViZGlyIC0tb250byBGRVRDSF9IRUFEIC0tbWVzc2FnZSAiU3BsaXQgJiByZWpvaW4iIC0tcmVqb2luKSInJyAmJgogICAgICAgICBnaXQgYnJhbmNoIHNwbDEgIiRzcGwxIiAmJgpAQCAtMjI3LDE1ICsyMDgsMjQgQEAKICAgICAgICAgdW5kbwogJwogCi0jIDI0CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBzcGxpdCB3aXRoIC0tYnJhbmNoJyAnCi0gICAgICAgIHNwbDE9JChnaXQgc3VidHJlZSBzcGxpdCAtLWFubm90YXRlPSciJyonIicgLS1wcmVmaXggc3ViZGlyIC0tb250byBGRVRDSF9IRUFEIC0tbWVzc2FnZSAiU3BsaXQgJiByZWpvaW4iIC0tcmVqb2luKSAmJgotICAgICAgICB1bmRvICYmCi0gICAgICAgIGdpdCBzdWJ0cmVlIHNwbGl0IC0tYW5ub3RhdGU9JyInKiciJyAtLXByZWZpeCBzdWJkaXIgLS1vbnRvIEZFVENIX0hFQUQgLS1icmFuY2ggc3BsaXRicjEgJiYKLSAgICAgICAgY2hlY2tfZXF1YWwgJyciJChnaXQgcmV2LXBhcnNlIHNwbGl0YnIxKSInJyAiJHNwbDEiCisJc3BsMT0kKGdpdCBzdWJ0cmVlIHNwbGl0IC0tYW5ub3RhdGU9JyInKiciJyAtLXByZWZpeCBzdWJkaXIgLS1vbnRvIEZFVENIX0hFQUQgLS1tZXNzYWdlICJTcGxpdCAmIHJlam9pbiIgLS1yZWpvaW4pICYmCisJdW5kbyAmJgorCWdpdCBzdWJ0cmVlIHNwbGl0IC0tYW5ub3RhdGU9JyInKiciJyAtLXByZWZpeCBzdWJkaXIgLS1vbnRvIEZFVENIX0hFQUQgLS1icmFuY2ggc3BsaXRicjEgJiYKKwljaGVja19lcXVhbCAnJyIkKGdpdCByZXYtcGFyc2Ugc3BsaXRicjEpIicnICIkc3BsMSIKICcKIAotIyAyNQordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgaGFzaCBvZiBzcGxpdCcgJworCXNwbDE9JChnaXQgc3VidHJlZSBzcGxpdCAtLXByZWZpeCBzdWJkaXIpICYmCisJdW5kbyAmJgorCWdpdCBzdWJ0cmVlIHNwbGl0IC0tcHJlZml4IHN1YmRpciAtLWJyYW5jaCBzcGxpdGJyMXRlc3QgJiYKKwljaGVja19lcXVhbCAnJyIkKGdpdCByZXYtcGFyc2Ugc3BsaXRicjF0ZXN0KSInJyAiJHNwbDEiCisJZ2l0IGNoZWNrb3V0IHNwbGl0YnIxdGVzdCAmJgorCW5ld19oYXNoPSQoZ2l0IHJldi1wYXJzZSBIRUFEfjIpICYmCisJZ2l0IGNoZWNrb3V0IG1haW5saW5lICYmCisJY2hlY2tfZXF1YWwgJyciJG5ld19oYXNoIicnICIkc3ViZGlyX2hhc2giCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIHNwbGl0IHdpdGggLS1icmFuY2ggZm9yIGFuIGV4aXN0aW5nIGJyYW5jaCcgJwogICAgICAgICBzcGwxPScnIiQoZ2l0IHN1YnRyZWUgc3BsaXQgLS1hbm5vdGF0ZT0nIicqJyInIC0tcHJlZml4IHN1YmRpciAtLW9udG8gRkVUQ0hfSEVBRCAtLW1lc3NhZ2UgIlNwbGl0ICYgcmVqb2luIiAtLXJlam9pbikiJycgJiYKICAgICAgICAgdW5kbyAmJgpAQCAtMjQ0LDEzICsyMzQsMTAgQEAKICAgICAgICAgY2hlY2tfZXF1YWwgJyciJChnaXQgcmV2LXBhcnNlIHNwbGl0YnIyKSInJyAiJHNwbDEiCiAnCiAKLSMgMjYKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIHNwbGl0IHdpdGggLS1icmFuY2ggZm9yIGFuIGluY29tcGF0aWJsZSBicmFuY2gnICcKICAgICAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IHN1YnRyZWUgc3BsaXQgLS1wcmVmaXggc3ViZGlyIC0tb250byBGRVRDSF9IRUFEIC0tYnJhbmNoIHN1YmRpcgogJwogCi0KLSMgMjcKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIHNwbGl0K3Jlam9pbicgJwogICAgICAgICBzcGwxPScnIiQoZ2l0IHN1YnRyZWUgc3BsaXQgLS1hbm5vdGF0ZT0nIicqJyInIC0tcHJlZml4IHN1YmRpciAtLW9udG8gRkVUQ0hfSEVBRCAtLW1lc3NhZ2UgIlNwbGl0ICYgcmVqb2luIiAtLXJlam9pbikiJycgJiYKICAgICAgICAgdW5kbyAmJgpAQCAtMjU4LDcgKzI0NSw2IEBACiAgICAgICAgIGNoZWNrX2VxdWFsICcnIiQobGFzdF9jb21taXRfbWVzc2FnZSkiJycgIlNwbGl0ICciJyInc3ViZGlyLyciJyInIGludG8gY29tbWl0ICciJyInIiRzcGwxIiciJyInIgogJwogCi0jIDI4CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgbWFpbi1zdWI4JyAnCiAgICAgICAgIGNyZWF0ZSBzdWJkaXIvbWFpbi1zdWI4ICYmCiAgICAgICAgIGdpdCBjb21taXQgLW0gIm1haW4tc3ViOCIKQEAgLTI2NywxNCArMjUzLDEyIEBACiAjIFRvIHRoZSBzdWJwcm9qZWN0IQogY2QgLi9zdWJwcm9qCiAKLSMgMjkKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIHNwbGl0IGludG8gc3VicHJvaicgJwogICAgICAgICBnaXQgZmV0Y2ggLi4gc3BsMSAmJgogICAgICAgICBnaXQgYnJhbmNoIHNwbDEgRkVUQ0hfSEVBRCAmJgogICAgICAgICBnaXQgbWVyZ2UgRkVUQ0hfSEVBRAogJwogCi0jIDMwCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgc3ViOScgJwogICAgICAgICBjcmVhdGUgc3ViOSAmJgogICAgICAgICBnaXQgY29tbWl0IC1tICJzdWI5IgpAQCAtMjgzLDE5ICsyNjcsMTYgQEAKICMgQmFjayB0byBtYWlubGluZQogY2QgLi4KIAotIyAzMQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3BsaXQgZm9yIHN1YjgnICcKICAgICAgICAgc3BsaXQyPScnIiQoZ2l0IHN1YnRyZWUgc3BsaXQgLS1hbm5vdGF0ZT0nIicqJyInIC0tcHJlZml4IHN1YmRpci8gLS1yZWpvaW4pIicnCiAgICAgICAgIGdpdCBicmFuY2ggc3BsaXQyICIkc3BsaXQyIgogJwogCi0jIDMyCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgbWFpbi1zdWIxMCcgJwogICAgICAgICBjcmVhdGUgc3ViZGlyL21haW4tc3ViMTAgJiYKICAgICAgICAgZ2l0IGNvbW1pdCAtbSAibWFpbi1zdWIxMCIKICcKIAotIyAzMwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3BsaXQgZm9yIHN1YjEwJyAnCiAgICAgICAgIHNwbDM9JyciJChnaXQgc3VidHJlZSBzcGxpdCAtLWFubm90YXRlPSciJyonIicgLS1wcmVmaXggc3ViZGlyIC0tcmVqb2luKSInJyAmJgogICAgICAgICBnaXQgYnJhbmNoIHNwbDMgIiRzcGwzIgpAQCAtMzA0LDcgKzI4NSw2IEBACiAjIFRvIHRoZSBzdWJwcm9qZWN0IQogY2QgLi9zdWJwcm9qCiAKLSMgMzQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIHNwbGl0IGludG8gc3VicHJvaicgJwogICAgICAgICBnaXQgZmV0Y2ggLi4gc3BsMyAmJgogICAgICAgICBnaXQgYnJhbmNoIHNwbDMgRkVUQ0hfSEVBRCAmJgpAQCAtMzE4LDEzICsyOTgsMTEgQEAKIGNoa3M9InN1YjEgc3ViMiBzdWIzIHN1YjkiCiBjaGtzX3N1Yj0kKGVjaG8gJGNoa3MgfCBtdWx0aWxpbmUgfCBzZWQgJ3MsXixzdWJkaXIvLCcgfCBmaXhubCkKIAotIyAzNQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWFrZSBzdXJlIGV4YWN0bHkgdGhlIHJpZ2h0IHNldCBvZiBmaWxlcyBlbmRzIHVwIGluIHRoZSBzdWJwcm9qJyAnCiAgICAgICAgIHN1YmZpbGVzPScnIiQoZ2l0IGxzLWZpbGVzIHwgZml4bmwpIicnICYmCiAgICAgICAgIGNoZWNrX2VxdWFsICIkc3ViZmlsZXMiICIkY2hrbXMgJGNoa3MiCiAnCiAKLSMgMzYKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21ha2Ugc3VyZSB0aGUgc3VicHJvaiBoaXN0b3J5ICpvbmx5KiBjb250YWlucyBjb21taXRzIHRoYXQgYWZmZWN0IHRoZSBzdWJkaXInICcKICAgICAgICAgYWxsY2hhbmdlcz0nJyIkKGdpdCBsb2cgLS1uYW1lLW9ubHkgLS1wcmV0dHk9Zm9ybWF0OiciJyciJyB8IHNvcnQgfCBmaXhubCkiJycgJiYKICAgICAgICAgY2hlY2tfZXF1YWwgIiRhbGxjaGFuZ2VzIiAiJGNoa21zICRjaGtzIgpAQCAtMzMzLDIwICszMTEsMTcgQEAKICMgQmFjayB0byBtYWlubGluZQogY2QgLi4KIAotIyAzNwogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVsbCBmcm9tIHN1YnByb2onICcKICAgICAgICAgZ2l0IGZldGNoIC4vc3VicHJvaiBzdWJwcm9qLW1lcmdlLXNwbDMgJiYKICAgICAgICAgZ2l0IGJyYW5jaCBzdWJwcm9qLW1lcmdlLXNwbDMgRkVUQ0hfSEVBRCAmJgogICAgICAgICBnaXQgc3VidHJlZSBwdWxsIC0tcHJlZml4PXN1YmRpciAuL3N1YnByb2ogc3VicHJvai1tZXJnZS1zcGwzCiAnCiAKLSMgMzgKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21ha2Ugc3VyZSBleGFjdGx5IHRoZSByaWdodCBzZXQgb2YgZmlsZXMgZW5kcyB1cCBpbiB0aGUgbWFpbmxpbmUnICcKICAgICAgICAgbWFpbmZpbGVzPScnIiQoZ2l0IGxzLWZpbGVzIHwgZml4bmwpIicnICYmCiAgICAgICAgIGNoZWNrX2VxdWFsICIkbWFpbmZpbGVzIiAiJGNoa20gJGNoa21zX3N1YiAkY2hrc19zdWIiCiAnCiAKLSMgMzkKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21ha2Ugc3VyZSBlYWNoIGZpbGVuYW1lIGNoYW5nZWQgZXhhY3RseSBvbmNlIGluIHRoZSBlbnRpcmUgaGlzdG9yeScgJwogICAgICAgICAjIG1haW4tc3ViPz8gYW5kIC9zdWJkaXIvbWFpbi1zdWI/PyBib3RoIGNoYW5nZSwgYmVjYXVzZSB0aG9zZSBhcmUgdGhlCiAgICAgICAgICMgY2hhbmdlcyB0aGF0IHdlcmUgc3BsaXQgaW50byB0aGVpciBvd24gaGlzdG9yeS4gIEFuZCBzdWJkaXIvc3ViPz8gbmV2ZXIKQEAgLTM1NSwxMiArMzMwLDEwIEBACiAgICAgICAgIGNoZWNrX2VxdWFsICIkYWxsY2hhbmdlcyIgJyciJChlY2hvICRjaGttcyAkY2hrbSAkY2hrcyAkY2hrbXNfc3ViIHwgbXVsdGlsaW5lIHwgc29ydCB8IGZpeG5sKSInJwogJwogCi0jIDQwCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtYWtlIHN1cmUgdGhlIC0tcmVqb2luIGNvbW1pdHMgbmV2ZXIgbWFrZSBpdCBpbnRvIHN1YnByb2onICcKICAgICAgICAgY2hlY2tfZXF1YWwgJyciJChnaXQgbG9nIC0tcHJldHR5PWZvcm1hdDonIiclcyciJyBIRUFEXjIgfCBncmVwIC1pIHNwbGl0KSInJyAiIgogJwogCi0jIDQxCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtYWtlIHN1cmUgbm8gImdpdCBzdWJ0cmVlIiB0YWdnZWQgY29tbWl0cyBtYWtlIGl0IGludG8gc3VicHJvaicgJwogICAgICAgICAjIFRoZXkgYXJlIG1lYW5pbmdsZXNzIHRvIHN1YnByb2ogc2luY2Ugb25lIHNpZGUgb2YgdGhlIG1lcmdlIHJlZmVycyB0byB0aGUgbWFpbmxpbmUKICAgICAgICAgY2hlY2tfZXF1YWwgJyciJChnaXQgbG9nIC0tcHJldHR5PWZvcm1hdDonIiclcyVuJWInIicgSEVBRF4yIHwgZ3JlcCAiZ2l0LXN1YnRyZWUuKjoiKSInJyAiIgpAQCAtMzcwLDE0ICszNDMsMTIgQEAKIG1rZGlyIHRlc3QyCiBjZCB0ZXN0MgogCi0jIDQyCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0IG1haW4nICcKICAgICAgICAgdGVzdF9jcmVhdGVfcmVwbyBtYWluCiAnCiAKIGNkIG1haW4KIAotIyA0MwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIG1haW4xJyAnCiAgICAgICAgIGNyZWF0ZSBtYWluMSAmJgogICAgICAgICBnaXQgY29tbWl0IC1tICJtYWluMSIKQEAgLTM4NSwxNCArMzU2LDEyIEBACiAKIGNkIC4uCiAKLSMgNDQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luaXQgc3ViJyAnCiAgICAgICAgIHRlc3RfY3JlYXRlX3JlcG8gc3ViCiAnCiAKIGNkIHN1YgogCi0jIDQ1CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgc3ViMicgJwogICAgICAgICBjcmVhdGUgc3ViMiAmJgogICAgICAgICBnaXQgY29tbWl0IC1tICJzdWIyIgpAQCAtNDAyLDcgKzM3MSw2IEBACiAKICMgY2hlY2sgaWYgc3BsaXQgY2FuIGZpbmQgcHJvcGVyIGJhc2Ugd2l0aG91dCAtLW9udG8KIAotIyA0NgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIHN1YiBhcyBzdWJkaXIgaW4gbWFpbicgJwogICAgICAgICBnaXQgZmV0Y2ggLi4vc3ViIG1hc3RlciAmJgogICAgICAgICBnaXQgYnJhbmNoIHN1YjIgRkVUQ0hfSEVBRCAmJgpAQCAtNDExLDcgKzM3OSw2IEBACiAKIGNkIC4uL3N1YgogCi0jIDQ3CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgc3ViMycgJwogICAgICAgICBjcmVhdGUgc3ViMyAmJgogICAgICAgICBnaXQgY29tbWl0IC1tICJzdWIzIgpAQCAtNDE5LDIwICszODYsMTcgQEAKIAogY2QgLi4vbWFpbgogCi0jIDQ4CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBmcm9tIHN1YicgJwogICAgICAgICBnaXQgZmV0Y2ggLi4vc3ViIG1hc3RlciAmJgogICAgICAgICBnaXQgYnJhbmNoIHN1YjMgRkVUQ0hfSEVBRCAmJgogICAgICAgICBnaXQgc3VidHJlZSBtZXJnZSAtLXByZWZpeCBzdWJkaXIgc3ViMwogJwogCi0jIDQ5CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgbWFpbi1zdWI0JyAnCiAgICAgICAgIGNyZWF0ZSBzdWJkaXIvbWFpbi1zdWI0ICYmCiAgICAgICAgIGdpdCBjb21taXQgLW0gIm1haW4tc3ViNCIKICcKIAotIyA1MAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3BsaXQgZm9yIG1haW4tc3ViNCB3aXRob3V0IC0tb250bycgJwogICAgICAgICBnaXQgc3VidHJlZSBzcGxpdCAtLXByZWZpeCBzdWJkaXIgLS1icmFuY2ggbWFpbnN1YjQKICcKQEAgLTQ0MiwyMyArNDA2LDIwIEBACiAjIGhhdmUgYmVlbiBzdWIzLCBidXQgaXQgd2FzIG5vdCwgYmVjYXVzZSBpdHMgY2FjaGUgd2FzIG5vdCBzZXQgdG8KICMgaXRzZWxmKQogCi0jIDUxCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayB0aGF0IHRoZSBjb21taXQgcGFyZW50IGlzIHN1YjMnICcKICAgICAgICAgY2hlY2tfZXF1YWwgJyciJChnaXQgbG9nIC0tcHJldHR5PWZvcm1hdDolUCAtMSBtYWluc3ViNCkiJycgJyciJChnaXQgcmV2LXBhcnNlIHN1YjMpIicnCiAnCiAKLSMgNTIKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBtYWluLXN1YjUnICcKICAgICAgICAgbWtkaXIgc3ViZGlyMiAmJgogICAgICAgICBjcmVhdGUgc3ViZGlyMi9tYWluLXN1YjUgJiYKICAgICAgICAgZ2l0IGNvbW1pdCAtbSAibWFpbi1zdWI1IgogJwogCi0jIDUzCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzcGxpdCBmb3IgbWFpbi1zdWI1IHdpdGhvdXQgLS1vbnRvJyAnCiAgICAgICAgICMgYWxzbyB0ZXN0IHRoYXQgd2Ugc3RpbGwgY2FuIHNwbGl0IG91dCBhbiBlbnRpcmVseSBuZXcgc3VidHJlZQogICAgICAgICAjIGlmIHRoZSBwYXJlbnQgb2YgdGhlIGZpcnN0IGNvbW1pdCBpbiB0aGUgdHJlZSBpcyBub3QgZW1wdHksCi0gICAgICAgICMgdGhlbiB0aGUgbmV3IHN1YnRyZWUgaGFzIGFjY2lkZW50bHkgYmVlbiBhdHRhY2hlZCB0byBzb21ldGhpbmcKKwkjIHRoZW4gdGhlIG5ldyBzdWJ0cmVlIGhhcyBhY2NpZGVudGFsbHkgYmVlbiBhdHRhY2hlZCB0byBzb21ldGhpbmcKICAgICAgICAgZ2l0IHN1YnRyZWUgc3BsaXQgLS1wcmVmaXggc3ViZGlyMiAtLWJyYW5jaCBtYWluc3ViNSAmJgogICAgICAgICBjaGVja19lcXVhbCAnJyIkKGdpdCBsb2cgLS1wcmV0dHk9Zm9ybWF0OiVQIC0xIG1haW5zdWI1KSInJyAiIgogJwpAQCAtNDg3LDcgKzQ0OCw2IEBACiAJZWNobyAiJGNvbW1pdCAkYWxsIgogfQogCi0jIDU0CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJpZnkgb25lIGZpbGUgY2hhbmdlIHBlciBjb21taXQnICcKICAgICAgICAgeD0gJiYKICAgICAgICAgbGlzdD0nJyIkKGdpdCBsb2cgLS1wcmV0dHk9Zm9ybWF0OiciJ2NvbW1pdDogJUgnIicgfCBqb2luY29tbWl0cykiJycgJiYKZGlmZiAtLWdpdCBhL2NvbnRyaWIvc3ZuLWZlL3N2bi1mZS5jIGIvY29udHJpYi9zdm4tZmUvc3ZuLWZlLmMKaW5kZXggMzVkYjI0Zi4uZjM2MzUwNSAxMDA2NDQKLS0tIGEvY29udHJpYi9zdm4tZmUvc3ZuLWZlLmMKKysrIGIvY29udHJpYi9zdm4tZmUvc3ZuLWZlLmMKQEAgLTEwLDcgKzEwLDggQEAKIHsKIAlpZiAoc3ZuZHVtcF9pbml0KE5VTEwpKQogCQlyZXR1cm4gMTsKLQlzdm5kdW1wX3JlYWQoKGFyZ2MgPiAxKSA/IGFyZ3ZbMV0gOiBOVUxMKTsKKwlzdm5kdW1wX3JlYWQoKGFyZ2MgPiAxKSA/IGFyZ3ZbMV0gOiBOVUxMLCAicmVmcy9oZWFkcy9tYXN0ZXIiLAorCQkJInJlZnMvbm90ZXMvc3ZuL3JldnMiKTsKIAlzdm5kdW1wX2RlaW5pdCgpOwogCXN2bmR1bXBfcmVzZXQoKTsKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvc3ZuLWZlL3N2bnJkdW1wX3NpbS5weSBiL2NvbnRyaWIvc3ZuLWZlL3N2bnJkdW1wX3NpbS5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40ZTc4YTFjCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9zdm4tZmUvc3ZucmR1bXBfc2ltLnB5CkBAIC0wLDAgKzEsNTcgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisiIiIKK1NpbXVsYXRlcyBzdm5yZHVtcCBieSByZXBsYXlpbmcgYW4gZXhpc3RpbmcgZHVtcCBmcm9tIGEgZmlsZSwgdGFraW5nIGNhcmUKK29mIHRoZSBzcGVjaWZpZWQgcmV2aXNpb24gcmFuZ2UuCitUbyBzaW11bGF0ZSBpbmNyZW1lbnRhbCBpbXBvcnRzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBTVk5STUFYIGNhbiBiZSBzZXQKK3RvIHRoZSBoaWdoZXN0IHJldmlzaW9uIHRoYXQgc2hvdWxkIGJlIGF2YWlsYWJsZS4KKyIiIgoraW1wb3J0IHN5cywgb3MKKworaWYgc3lzLmhleHZlcnNpb24gPCAweDAyMDQwMDAwOgorICAgICAgICAjIFRoZSBsaW1pdGVyIGlzIHRoZSBWYWx1ZUVycm9yKCkgY2FsbHMuIFRoaXMgbWF5IGJlIHRvbyBjb25zZXJ2YXRpdmUKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgic3ZucmR1bXAtc2ltLnB5OiByZXF1aXJlcyBQeXRob24gMi40IG9yIGxhdGVyLlxuIikKKyAgICAgICAgc3lzLmV4aXQoMSkKKworZGVmIGdldHJldmxpbWl0KCk6CisgICAgICAgIHZhciA9ICdTVk5STUFYJworICAgICAgICBpZiB2YXIgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gb3MuZW52aXJvblt2YXJdCisgICAgICAgIHJldHVybiBOb25lCisKK2RlZiB3cml0ZWR1bXAodXJsLCBsb3dlciwgdXBwZXIpOgorICAgICAgICBpZiB1cmwuc3RhcnRzd2l0aCgnc2ltOi8vJyk6CisgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSB1cmxbNjpdCisgICAgICAgICAgICAgICAgaWYgZmlsZW5hbWVbLTFdID09ICcvJzogZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTFdICNyZW1vdmUgdGVybWluYXRpbmcgc2xhc2gKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzaW06Ly8gdXJsIHJlcXVpcmVkJykKKyAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUsICdyJyk7CisgICAgICAgIHN0YXRlID0gJ2hlYWRlcicKKyAgICAgICAgd3JvdGVyZXYgPSBGYWxzZQorICAgICAgICB3aGlsZShUcnVlKToKKyAgICAgICAgICAgICAgICBsID0gZi5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgaWYgbCA9PSAnJzogYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBzdGF0ZSA9PSAnaGVhZGVyJyBhbmQgbC5zdGFydHN3aXRoKCdSZXZpc2lvbi1udW1iZXI6ICcpOgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAncHJlZml4JworICAgICAgICAgICAgICAgIGlmIHN0YXRlID09ICdwcmVmaXgnIGFuZCBsID09ICdSZXZpc2lvbi1udW1iZXI6ICVzXG4nICUgbG93ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9ICdzZWxlY3Rpb24nCisgICAgICAgICAgICAgICAgaWYgbm90IHVwcGVyID09ICdIRUFEJyBhbmQgc3RhdGUgPT0gJ3NlbGVjdGlvbicgYW5kIGwgPT0gJ1JldmlzaW9uLW51bWJlcjogJXNcbicgJSB1cHBlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgaWYgc3RhdGUgPT0gJ2hlYWRlcicgb3Igc3RhdGUgPT0gJ3NlbGVjdGlvbic6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGF0ZSA9PSAnc2VsZWN0aW9uJzogd3JvdGVyZXYgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGwpCisgICAgICAgIHJldHVybiB3cm90ZXJldgorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgICAgICBpZiBub3QgKGxlbihzeXMuYXJndikgaW4gKDMsIDQsIDUpKToKKyAgICAgICAgICAgICAgICBwcmludCgidXNhZ2U6ICVzIGR1bXAgVVJMIC1yTE9XRVI6VVBQRVIiKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgIGlmIG5vdCBzeXMuYXJndlsxXSA9PSAnZHVtcCc6IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ29ubHkgImR1bXAiIGlzIHN1cHBwb3J0ZWQuJykKKyAgICAgICAgdXJsID0gc3lzLmFyZ3ZbMl0KKyAgICAgICAgciA9ICgnMCcsICdIRUFEJykKKyAgICAgICAgaWYgbGVuKHN5cy5hcmd2KSA9PSA0IGFuZCBzeXMuYXJndlszXVswOjJdID09ICctcic6CisgICAgICAgICAgICAgICAgciA9IHN5cy5hcmd2WzNdWzI6XS5sc3RyaXAoKS5zcGxpdCgnOicpCisgICAgICAgIGlmIG5vdCBnZXRyZXZsaW1pdCgpIGlzIE5vbmU6IHJbMV0gPSBnZXRyZXZsaW1pdCgpCisgICAgICAgIGlmIHdyaXRlZHVtcCh1cmwsIHJbMF0sIHJbMV0pOiByZXQgPSAwCisgICAgICAgIGVsc2U6IHJldCA9IDEKKyAgICAgICAgc3lzLmV4aXQocmV0KQpkaWZmIC0tZ2l0IGEvY29udHJpYi92aW0vUkVBRE1FIGIvY29udHJpYi92aW0vUkVBRE1FCmluZGV4IGZjYTFlMTcuLjhmMTZkMDYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdmltL1JFQURNRQorKysgYi9jb250cmliL3ZpbS9SRUFETUUKQEAgLTE3LDE2ICsxNyw2IEBACiAKICAgMS4gQ29weSB0aGVzZSBmaWxlcyB0byB2aW0ncyBzeW50YXggZGlyZWN0b3J5ICRIT01FLy52aW0vc3ludGF4CiAgIDIuIFRvIGF1dG8tZGV0ZWN0IHRoZSBlZGl0aW5nIG9mIHZhcmlvdXMgZ2l0LXJlbGF0ZWQgZmlsZXR5cGVzOgotCSQgY2F0ID4+JEhPTUUvLnZpbS9maWxldHlwZS52aW0gPDwnRU9GJwotCWF1dG9jbWQgQnVmTmV3RmlsZSxCdWZSZWFkICouZ2l0L0NPTU1JVF9FRElUTVNHICAgIHNldGYgZ2l0Y29tbWl0Ci0JYXV0b2NtZCBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5naXQvY29uZmlnLC5naXRjb25maWcgc2V0ZiBnaXRjb25maWcKLQlhdXRvY21kIEJ1Zk5ld0ZpbGUsQnVmUmVhZCBnaXQtcmViYXNlLXRvZG8gICAgICAgICBzZXRmIGdpdHJlYmFzZQotCWF1dG9jbWQgQnVmTmV3RmlsZSxCdWZSZWFkIC5tc2cuWzAtOV0qCi0JCVwgaWYgZ2V0bGluZSgxKSA9fiAnXkZyb20uKiMgVGhpcyBsaW5lIGlzIGlnbm9yZWQuJCcgfAotCQlcICAgc2V0ZiBnaXRzZW5kZW1haWwgfAotCQlcIGVuZGlmCi0JYXV0b2NtZCBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5naXQvKioKLQkJXCBpZiBnZXRsaW5lKDEpID1+ICdeXHhcezQwXH1cPlx8XnJlZjogJyB8Ci0JCVwgICBzZXRmIGdpdCB8Ci0JCVwgZW5kaWYKLQlFT0YKKworCSQgY3VybCBodHRwOi8vZnRwLnZpbS5vcmcvcHViL3ZpbS9ydW50aW1lL2ZpbGV0eXBlLnZpbSB8CisJCXNlZCAtbmUgJy9eIiBHaXQkLywgL14kLyBwJyA+PiRIT01FLy52aW0vZmlsZXR5cGUudmltCmRpZmYgLS1naXQgYS9jb252ZXJ0LmMgYi9jb252ZXJ0LmMKaW5kZXggNjYwMjE1NS4uMmEyZTQ2YyAxMDA2NDQKLS0tIGEvY29udmVydC5jCisrKyBiL2NvbnZlcnQuYwpAQCAtMTUzLDM2ICsxNTMsMTMgQEAKIAogc3RhdGljIGludCBoYXNfY3JfaW5faW5kZXgoY29uc3QgY2hhciAqcGF0aCkKIHsKLQlpbnQgcG9zLCBsZW47CiAJdW5zaWduZWQgbG9uZyBzejsKLQllbnVtIG9iamVjdF90eXBlIHR5cGU7CiAJdm9pZCAqZGF0YTsKIAlpbnQgaGFzX2NyOwotCXN0cnVjdCBpbmRleF9zdGF0ZSAqaXN0YXRlID0gJnRoZV9pbmRleDsKIAotCWxlbiA9IHN0cmxlbihwYXRoKTsKLQlwb3MgPSBpbmRleF9uYW1lX3Bvcyhpc3RhdGUsIHBhdGgsIGxlbik7Ci0JaWYgKHBvcyA8IDApIHsKLQkJLyoKLQkJICogV2UgbWlnaHQgYmUgaW4gdGhlIG1pZGRsZSBvZiBhIG1lcmdlLCBpbiB3aGljaAotCQkgKiBjYXNlIHdlIHdvdWxkIHJlYWQgc3RhZ2UgIzIgKG91cnMpLgotCQkgKi8KLQkJaW50IGk7Ci0JCWZvciAoaSA9IC1wb3MgLSAxOwotCQkgICAgIChwb3MgPCAwICYmIGkgPCBpc3RhdGUtPmNhY2hlX25yICYmCi0JCSAgICAgICFzdHJjbXAoaXN0YXRlLT5jYWNoZVtpXS0+bmFtZSwgcGF0aCkpOwotCQkgICAgIGkrKykKLQkJCWlmIChjZV9zdGFnZShpc3RhdGUtPmNhY2hlW2ldKSA9PSAyKQotCQkJCXBvcyA9IGk7Ci0JfQotCWlmIChwb3MgPCAwKQorCWRhdGEgPSByZWFkX2Jsb2JfZGF0YV9mcm9tX2NhY2hlKHBhdGgsICZzeik7CisJaWYgKCFkYXRhKQogCQlyZXR1cm4gMDsKLQlkYXRhID0gcmVhZF9zaGExX2ZpbGUoaXN0YXRlLT5jYWNoZVtwb3NdLT5zaGExLCAmdHlwZSwgJnN6KTsKLQlpZiAoIWRhdGEgfHwgdHlwZSAhPSBPQkpfQkxPQikgewotCQlmcmVlKGRhdGEpOwotCQlyZXR1cm4gMDsKLQl9Ci0KIAloYXNfY3IgPSBtZW1jaHIoZGF0YSwgJ1xyJywgc3opICE9IE5VTEw7CiAJZnJlZShkYXRhKTsKIAlyZXR1cm4gaGFzX2NyOwpAQCAtNDU3LDcgKzQzNCw3IEBACiAKIHN0YXRpYyBpbnQgcmVhZF9jb252ZXJ0X2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKIHsKLQljb25zdCBjaGFyICplcCwgKm5hbWU7CisJY29uc3QgY2hhciAqa2V5LCAqbmFtZTsKIAlpbnQgbmFtZWxlbjsKIAlzdHJ1Y3QgY29udmVydF9kcml2ZXIgKmRydjsKIApAQCAtNDY1LDEwICs0NDIsOCBAQAogCSAqIEV4dGVybmFsIGNvbnZlcnNpb24gZHJpdmVycyBhcmUgY29uZmlndXJlZCB1c2luZwogCSAqICJmaWx0ZXIuPG5hbWU+LnZhcmlhYmxlIi4KIAkgKi8KLQlpZiAocHJlZml4Y21wKHZhciwgImZpbHRlci4iKSB8fCAoZXAgPSBzdHJyY2hyKHZhciwgJy4nKSkgPT0gdmFyICsgNikKKwlpZiAocGFyc2VfY29uZmlnX2tleSh2YXIsICJmaWx0ZXIiLCAmbmFtZSwgJm5hbWVsZW4sICZrZXkpIDwgMCB8fCAhbmFtZSkKIAkJcmV0dXJuIDA7Ci0JbmFtZSA9IHZhciArIDc7Ci0JbmFtZWxlbiA9IGVwIC0gbmFtZTsKIAlmb3IgKGRydiA9IHVzZXJfY29udmVydDsgZHJ2OyBkcnYgPSBkcnYtPm5leHQpCiAJCWlmICghc3RybmNtcChkcnYtPm5hbWUsIG5hbWUsIG5hbWVsZW4pICYmICFkcnYtPm5hbWVbbmFtZWxlbl0pCiAJCQlicmVhazsKQEAgLTQ3OSw4ICs0NTQsNiBAQAogCQl1c2VyX2NvbnZlcnRfdGFpbCA9ICYoZHJ2LT5uZXh0KTsKIAl9CiAKLQllcCsrOwotCiAJLyoKIAkgKiBmaWx0ZXIuPG5hbWU+LnNtdWRnZSBhbmQgZmlsdGVyLjxuYW1lPi5jbGVhbiBzcGVjaWZpZXMKIAkgKiB0aGUgY29tbWFuZCBsaW5lOgpAQCAtNDkwLDEzICs0NjMsMTMgQEAKIAkgKiBUaGUgY29tbWFuZC1saW5lIHdpbGwgbm90IGJlIGludGVycG9sYXRlZCBpbiBhbnkgd2F5LgogCSAqLwogCi0JaWYgKCFzdHJjbXAoInNtdWRnZSIsIGVwKSkKKwlpZiAoIXN0cmNtcCgic211ZGdlIiwga2V5KSkKIAkJcmV0dXJuIGdpdF9jb25maWdfc3RyaW5nKCZkcnYtPnNtdWRnZSwgdmFyLCB2YWx1ZSk7CiAKLQlpZiAoIXN0cmNtcCgiY2xlYW4iLCBlcCkpCisJaWYgKCFzdHJjbXAoImNsZWFuIiwga2V5KSkKIAkJcmV0dXJuIGdpdF9jb25maWdfc3RyaW5nKCZkcnYtPmNsZWFuLCB2YXIsIHZhbHVlKTsKIAotCWlmICghc3RyY21wKCJyZXF1aXJlZCIsIGVwKSkgeworCWlmICghc3RyY21wKCJyZXF1aXJlZCIsIGtleSkpIHsKIAkJZHJ2LT5yZXF1aXJlZCA9IGdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKTsKIAkJcmV0dXJuIDA7CiAJfQpkaWZmIC0tZ2l0IGEvY3JlZGVudGlhbC5jIGIvY3JlZGVudGlhbC5jCmluZGV4IDYyZDFjNTYuLmU1NDc1M2MgMTAwNjQ0Ci0tLSBhL2NyZWRlbnRpYWwuYworKysgYi9jcmVkZW50aWFsLmMKQEAgLTE3Miw2ICsxNzIsOCBAQAogCQl9IGVsc2UgaWYgKCFzdHJjbXAoa2V5LCAicGF0aCIpKSB7CiAJCQlmcmVlKGMtPnBhdGgpOwogCQkJYy0+cGF0aCA9IHhzdHJkdXAodmFsdWUpOworCQl9IGVsc2UgaWYgKCFzdHJjbXAoa2V5LCAidXJsIikpIHsKKwkJCWNyZWRlbnRpYWxfZnJvbV91cmwoYywgdmFsdWUpOwogCQl9CiAJCS8qCiAJCSAqIElnbm9yZSBvdGhlciBsaW5lczsgd2UgZG9uJ3Qga25vdyB3aGF0IHRoZXkgbWVhbiwgYnV0CkBAIC0xOTEsNyArMTkzLDcgQEAKIAlmcHJpbnRmKGZwLCAiJXM9JXNcbiIsIGtleSwgdmFsdWUpOwogfQogCi1zdGF0aWMgdm9pZCBjcmVkZW50aWFsX3dyaXRlKGNvbnN0IHN0cnVjdCBjcmVkZW50aWFsICpjLCBGSUxFICpmcCkKK3ZvaWQgY3JlZGVudGlhbF93cml0ZShjb25zdCBzdHJ1Y3QgY3JlZGVudGlhbCAqYywgRklMRSAqZnApCiB7CiAJY3JlZGVudGlhbF93cml0ZV9pdGVtKGZwLCAicHJvdG9jb2wiLCBjLT5wcm90b2NvbCk7CiAJY3JlZGVudGlhbF93cml0ZV9pdGVtKGZwLCAiaG9zdCIsIGMtPmhvc3QpOwpkaWZmIC0tZ2l0IGEvY3JlZGVudGlhbC5oIGIvY3JlZGVudGlhbC5oCmluZGV4IDk2ZWE0MWIuLjBjM2U4NWUgMTAwNjQ0Ci0tLSBhL2NyZWRlbnRpYWwuaAorKysgYi9jcmVkZW50aWFsLmgKQEAgLTI2LDYgKzI2LDcgQEAKIHZvaWQgY3JlZGVudGlhbF9yZWplY3Qoc3RydWN0IGNyZWRlbnRpYWwgKik7CiAKIGludCBjcmVkZW50aWFsX3JlYWQoc3RydWN0IGNyZWRlbnRpYWwgKiwgRklMRSAqKTsKK3ZvaWQgY3JlZGVudGlhbF93cml0ZShjb25zdCBzdHJ1Y3QgY3JlZGVudGlhbCAqLCBGSUxFICopOwogdm9pZCBjcmVkZW50aWFsX2Zyb21fdXJsKHN0cnVjdCBjcmVkZW50aWFsICosIGNvbnN0IGNoYXIgKnVybCk7CiBpbnQgY3JlZGVudGlhbF9tYXRjaChjb25zdCBzdHJ1Y3QgY3JlZGVudGlhbCAqaGF2ZSwKIAkJICAgICBjb25zdCBzdHJ1Y3QgY3JlZGVudGlhbCAqd2FudCk7CmRpZmYgLS1naXQgYS9jdHlwZS5jIGIvY3R5cGUuYwppbmRleCA5MzUzMjcxLi4wYmZlYmI0IDEwMDY0NAotLS0gYS9jdHlwZS5jCisrKyBiL2N0eXBlLmMKQEAgLTExLDE4ICsxMSwyMSBAQAogCUQgPSBHSVRfRElHSVQsCiAJRyA9IEdJVF9HTE9CX1NQRUNJQUwsCS8qICosID8sIFssIFxcICovCiAJUiA9IEdJVF9SRUdFWF9TUEVDSUFMLAkvKiAkLCAoLCApLCArLCAuLCBeLCB7LCB8ICovCi0JUCA9IEdJVF9QQVRIU1BFQ19NQUdJQyAgLyogb3RoZXIgbm9uLWFsbnVtLCBleGNlcHQgZm9yIF0gYW5kIH0gKi8KKwlQID0gR0lUX1BBVEhTUEVDX01BR0lDLCAvKiBvdGhlciBub24tYWxudW0sIGV4Y2VwdCBmb3IgXSBhbmQgfSAqLworCVggPSBHSVRfQ05UUkwsCisJVSA9IEdJVF9QVU5DVCwKKwlaID0gR0lUX0NOVFJMIHwgR0lUX1NQQUNFCiB9OwogCi11bnNpZ25lZCBjaGFyIHNhbmVfY3R5cGVbMjU2XSA9IHsKLQkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBTLCBTLCAwLCAwLCBTLCAwLCAwLAkJLyogICAwLi4gMTUgKi8KLQkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAkJLyogIDE2Li4gMzEgKi8KK2NvbnN0IHVuc2lnbmVkIGNoYXIgc2FuZV9jdHlwZVsyNTZdID0geworCVgsIFgsIFgsIFgsIFgsIFgsIFgsIFgsIFgsIFosIFosIFgsIFgsIFosIFgsIFgsCQkvKiAgIDAuLiAxNSAqLworCVgsIFgsIFgsIFgsIFgsIFgsIFgsIFgsIFgsIFgsIFgsIFgsIFgsIFgsIFgsIFgsCQkvKiAgMTYuLiAzMSAqLwogCVMsIFAsIFAsIFAsIFIsIFAsIFAsIFAsIFIsIFIsIEcsIFIsIFAsIFAsIFIsIFAsCQkvKiAgMzIuLiA0NyAqLwogCUQsIEQsIEQsIEQsIEQsIEQsIEQsIEQsIEQsIEQsIFAsIFAsIFAsIFAsIFAsIEcsCQkvKiAgNDguLiA2MyAqLwogCVAsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsCQkvKiAgNjQuLiA3OSAqLwotCUEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEcsIEcsIDAsIFIsIFAsCQkvKiAgODAuLiA5NSAqLworCUEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEcsIEcsIFUsIFIsIFAsCQkvKiAgODAuLiA5NSAqLwogCVAsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsCQkvKiAgOTYuLjExMSAqLwotCUEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIFIsIFIsIDAsIFAsIDAsCQkvKiAxMTIuLjEyNyAqLworCUEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIEEsIFIsIFIsIFUsIFAsIFgsCQkvKiAxMTIuLjEyNyAqLwogCS8qIE5vdGhpbmcgaW4gdGhlIDEyOC4uIHJhbmdlICovCiB9OwogCmRpZmYgLS1naXQgYS9kYWVtb24uYyBiL2RhZW1vbi5jCmluZGV4IGFiMjFlNjYuLjZhZWRkY2IgMTAwNjQ0Ci0tLSBhL2RhZW1vbi5jCisrKyBiL2RhZW1vbi5jCkBAIC05LDEwICs5LDYgQEAKICNkZWZpbmUgSE9TVF9OQU1FX01BWCAyNTYKICNlbmRpZgogCi0jaWZuZGVmIE5JX01BWFNFUlYKLSNkZWZpbmUgTklfTUFYU0VSViAzMgotI2VuZGlmCi0KICNpZmRlZiBOT19JTklUR1JPVVBTCiAjZGVmaW5lIGluaXRncm91cHMoeCwgeSkgKDApIC8qIG5vdGhpbmcgKi8KICNlbmRpZgpAQCAtMzAsNiArMjYsNyBAQAogIiAgICAgICAgICAgWy0taW50ZXJwb2xhdGVkLXBhdGg9PHBhdGg+XVxuIgogIiAgICAgICAgICAgWy0tcmV1c2VhZGRyXSBbLS1waWQtZmlsZT08ZmlsZT5dXG4iCiAiICAgICAgICAgICBbLS0oZW5hYmxlfGRpc2FibGV8YWxsb3ctb3ZlcnJpZGV8Zm9yYmlkLW92ZXJyaWRlKT08c2VydmljZT5dXG4iCisiICAgICAgICAgICBbLS1hY2Nlc3MtaG9vaz08cGF0aD5dXG4iCiAiICAgICAgICAgICBbLS1pbmV0ZCB8IFstLWxpc3Rlbj08aG9zdF9vcl9pcGFkZHI+XSBbLS1wb3J0PTxuPl1cbiIKICIgICAgICAgICAgICAgICAgICAgICAgWy0tZGV0YWNoXSBbLS11c2VyPTx1c2VyPiBbLS1ncm91cD08Z3JvdXA+XV1cbiIKICIgICAgICAgICAgIFs8ZGlyZWN0b3J5Pi4uLl0iOwpAQCAtMjU2LDYgKzI1Myw3MSBAQAogCXJldHVybiAtMTsKIH0KIAorc3RhdGljIGNoYXIgKmFjY2Vzc19ob29rOworCitzdGF0aWMgaW50IHJ1bl9hY2Nlc3NfaG9vayhzdHJ1Y3QgZGFlbW9uX3NlcnZpY2UgKnNlcnZpY2UsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqcGF0aCkKK3sKKwlzdHJ1Y3QgY2hpbGRfcHJvY2VzcyBjaGlsZDsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCWNvbnN0IGNoYXIgKmFyZ3ZbOF07CisJY29uc3QgY2hhciAqKmFyZyA9IGFyZ3Y7CisJY2hhciAqZW9sOworCWludCBzZWVuX2Vycm9ycyA9IDA7CisKKyNkZWZpbmUgU1RSQVJHKHgpICgoeCkgPyAoeCkgOiAiIikKKwkqYXJnKysgPSBhY2Nlc3NfaG9vazsKKwkqYXJnKysgPSBzZXJ2aWNlLT5uYW1lOworCSphcmcrKyA9IHBhdGg7CisJKmFyZysrID0gU1RSQVJHKGhvc3RuYW1lKTsKKwkqYXJnKysgPSBTVFJBUkcoY2Fub25faG9zdG5hbWUpOworCSphcmcrKyA9IFNUUkFSRyhpcF9hZGRyZXNzKTsKKwkqYXJnKysgPSBTVFJBUkcodGNwX3BvcnQpOworCSphcmcgPSBOVUxMOworI3VuZGVmIFNUUkFSRworCisJbWVtc2V0KCZjaGlsZCwgMCwgc2l6ZW9mKGNoaWxkKSk7CisJY2hpbGQudXNlX3NoZWxsID0gMTsKKwljaGlsZC5hcmd2ID0gYXJndjsKKwljaGlsZC5ub19zdGRpbiA9IDE7CisJY2hpbGQubm9fc3RkZXJyID0gMTsKKwljaGlsZC5vdXQgPSAtMTsKKwlpZiAoc3RhcnRfY29tbWFuZCgmY2hpbGQpKSB7CisJCWxvZ2Vycm9yKCJkYWVtb24gYWNjZXNzIGhvb2sgJyVzJyBmYWlsZWQgdG8gc3RhcnQiLAorCQkJIGFjY2Vzc19ob29rKTsKKwkJZ290byBlcnJvcl9yZXR1cm47CisJfQorCWlmIChzdHJidWZfcmVhZCgmYnVmLCBjaGlsZC5vdXQsIDApIDwgMCkgeworCQlsb2dlcnJvcigiZmFpbGVkIHRvIHJlYWQgZnJvbSBwaXBlIHRvIGRhZW1vbiBhY2Nlc3MgaG9vayAnJXMnIiwKKwkJCSBhY2Nlc3NfaG9vayk7CisJCXN0cmJ1Zl9yZXNldCgmYnVmKTsKKwkJc2Vlbl9lcnJvcnMgPSAxOworCX0KKwlpZiAoY2xvc2UoY2hpbGQub3V0KSA8IDApIHsKKwkJbG9nZXJyb3IoImZhaWxlZCB0byBjbG9zZSBwaXBlIHRvIGRhZW1vbiBhY2Nlc3MgaG9vayAnJXMnIiwKKwkJCSBhY2Nlc3NfaG9vayk7CisJCXNlZW5fZXJyb3JzID0gMTsKKwl9CisJaWYgKGZpbmlzaF9jb21tYW5kKCZjaGlsZCkpCisJCXNlZW5fZXJyb3JzID0gMTsKKworCWlmICghc2Vlbl9lcnJvcnMpIHsKKwkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CisJCXJldHVybiAwOworCX0KKworZXJyb3JfcmV0dXJuOgorCXN0cmJ1Zl9sdHJpbSgmYnVmKTsKKwlpZiAoIWJ1Zi5sZW4pCisJCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgInNlcnZpY2UgcmVqZWN0ZWQiKTsKKwllb2wgPSBzdHJjaHIoYnVmLmJ1ZiwgJ1xuJyk7CisJaWYgKGVvbCkKKwkJKmVvbCA9ICdcMCc7CisJZXJybm8gPSBFQUNDRVM7CisJZGFlbW9uX2Vycm9yKGRpciwgYnVmLmJ1Zik7CisJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CisJcmV0dXJuIC0xOworfQorCiBzdGF0aWMgaW50IHJ1bl9zZXJ2aWNlKGNoYXIgKmRpciwgc3RydWN0IGRhZW1vbl9zZXJ2aWNlICpzZXJ2aWNlKQogewogCWNvbnN0IGNoYXIgKnBhdGg7CkBAIC0zMDQsNiArMzY2LDEzIEBACiAJfQogCiAJLyoKKwkgKiBPcHRpb25hbGx5LCBhIGhvb2sgY2FuIGNob29zZSB0byBkZW55IGFjY2VzcyB0byB0aGUKKwkgKiByZXBvc2l0b3J5IGRlcGVuZGluZyBvbiB0aGUgcGhhc2Ugb2YgdGhlIG1vb24uCisJICovCisJaWYgKGFjY2Vzc19ob29rICYmIHJ1bl9hY2Nlc3NfaG9vayhzZXJ2aWNlLCBkaXIsIHBhdGgpKQorCQlyZXR1cm4gLTE7CisKKwkvKgogCSAqIFdlJ2xsIGlnbm9yZSBTSUdURVJNIGZyb20gbm93IG9uLCB3ZSBoYXZlIGEKIAkgKiBnb29kIGNsaWVudC4KIAkgKi8KQEAgLTUzMSw3ICs2MDAsNyBAQAogCiBzdGF0aWMgaW50IGV4ZWN1dGUodm9pZCkKIHsKLQlzdGF0aWMgY2hhciBsaW5lWzEwMDBdOworCWNoYXIgKmxpbmUgPSBwYWNrZXRfYnVmZmVyOwogCWludCBwa3RsZW4sIGxlbiwgaTsKIAljaGFyICphZGRyID0gZ2V0ZW52KCJSRU1PVEVfQUREUiIpLCAqcG9ydCA9IGdldGVudigiUkVNT1RFX1BPUlQiKTsKIApAQCAtNTM5LDcgKzYwOCw3IEBACiAJCWxvZ2luZm8oIkNvbm5lY3Rpb24gZnJvbSAlczolcyIsIGFkZHIsIHBvcnQpOwogCiAJYWxhcm0oaW5pdF90aW1lb3V0ID8gaW5pdF90aW1lb3V0IDogdGltZW91dCk7Ci0JcGt0bGVuID0gcGFja2V0X3JlYWRfbGluZSgwLCBsaW5lLCBzaXplb2YobGluZSkpOworCXBrdGxlbiA9IHBhY2tldF9yZWFkKDAsIE5VTEwsIE5VTEwsIHBhY2tldF9idWZmZXIsIHNpemVvZihwYWNrZXRfYnVmZmVyKSwgMCk7CiAJYWxhcm0oMCk7CiAKIAlsZW4gPSBzdHJsZW4obGluZSk7CkBAIC0xMTQyLDYgKzEyMTEsMTAgQEAKIAkJCWV4cG9ydF9hbGxfdHJlZXMgPSAxOwogCQkJY29udGludWU7CiAJCX0KKwkJaWYgKCFwcmVmaXhjbXAoYXJnLCAiLS1hY2Nlc3MtaG9vaz0iKSkgeworCQkJYWNjZXNzX2hvb2sgPSBhcmcgKyAxNDsKKwkJCWNvbnRpbnVlOworCQl9CiAJCWlmICghcHJlZml4Y21wKGFyZywgIi0tdGltZW91dD0iKSkgewogCQkJdGltZW91dCA9IGF0b2koYXJnKzEwKTsKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvZGF0ZS5jIGIvZGF0ZS5jCmluZGV4IDFmZGNmN2MuLmRmMjBkMGIgMTAwNjQ0Ci0tLSBhL2RhdGUuYworKysgYi9kYXRlLmMKQEAgLTM4Myw3ICszODMsNyBAQAogCQkgKiBzZW5zZSB0byBzcGVjaWZ5IHRpbWVzdGFtcCB3YXkgaW50byB0aGUgZnV0dXJlLiAgTWFrZQogCQkgKiBzdXJlIGl0IGlzIG5vdCBsYXRlciB0aGFuIHRlbiBkYXlzIGZyb20gbm93Li4uCiAJCSAqLwotCQlpZiAobm93ICsgMTAqMjQqMzYwMCA8IHNwZWNpZmllZCkKKwkJaWYgKChzcGVjaWZpZWQgIT0gLTEpICYmIChub3cgKyAxMCoyNCozNjAwIDwgc3BlY2lmaWVkKSkKIAkJCXJldHVybiAwOwogCQl0bS0+dG1fbW9uID0gci0+dG1fbW9uOwogCQl0bS0+dG1fbWRheSA9IHItPnRtX21kYXk7CkBAIC02MjQsNyArNjI0LDcgQEAKIAl1bnNpZ25lZCBsb25nIHN0YW1wOwogCWludCBvZnM7CiAKLQlpZiAoKmRhdGUgPCAnMCcgfHwgJzknIDw9ICpkYXRlKQorCWlmICgqZGF0ZSA8ICcwJyB8fCAnOScgPCAqZGF0ZSkKIAkJcmV0dXJuIC0xOwogCXN0YW1wID0gc3RydG91bChkYXRlLCAmZW5kLCAxMCk7CiAJaWYgKCplbmQgIT0gJyAnIHx8IHN0YW1wID09IFVMT05HX01BWCB8fCAoZW5kWzFdICE9ICcrJyAmJiBlbmRbMV0gIT0gJy0nKSkKQEAgLTY5NCw4ICs2OTQsMTQgQEAKIAogCS8qIG1rdGltZSB1c2VzIGxvY2FsIHRpbWV6b25lICovCiAJKnRpbWVzdGFtcCA9IHRtX3RvX3RpbWVfdCgmdG0pOwotCWlmICgqb2Zmc2V0ID09IC0xKQotCQkqb2Zmc2V0ID0gKCh0aW1lX3QpKnRpbWVzdGFtcCAtIG1rdGltZSgmdG0pKSAvIDYwOworCWlmICgqb2Zmc2V0ID09IC0xKSB7CisJCXRpbWVfdCB0ZW1wX3RpbWUgPSBta3RpbWUoJnRtKTsKKwkJaWYgKCh0aW1lX3QpKnRpbWVzdGFtcCA+IHRlbXBfdGltZSkgeworCQkJKm9mZnNldCA9ICgodGltZV90KSp0aW1lc3RhbXAgLSB0ZW1wX3RpbWUpIC8gNjA7CisJCX0gZWxzZSB7CisJCQkqb2Zmc2V0ID0gLShpbnQpKCh0ZW1wX3RpbWUgLSAodGltZV90KSp0aW1lc3RhbXApIC8gNjApOworCQl9CisJfQogCiAJaWYgKCp0aW1lc3RhbXAgPT0gLTEpCiAJCXJldHVybiAtMTsKZGlmZiAtLWdpdCBhL2RpZmYtbGliLmMgYi9kaWZmLWxpYi5jCmluZGV4IGZjMGRmZjMuLmYzNWRlMGYgMTAwNjQ0Ci0tLSBhL2RpZmYtbGliLmMKKysrIGIvZGlmZi1saWIuYwpAQCAtMjA2LDcgKzIwNiw4IEBACiAJCQlpZiAoc2lsZW50X29uX3JlbW92ZWQpCiAJCQkJY29udGludWU7CiAJCQlkaWZmX2FkZHJlbW92ZSgmcmV2cy0+ZGlmZm9wdCwgJy0nLCBjZS0+Y2VfbW9kZSwKLQkJCQkgICAgICAgY2UtPnNoYTEsIGNlLT5uYW1lLCAwKTsKKwkJCQkgICAgICAgY2UtPnNoYTEsICFpc19udWxsX3NoYTEoY2UtPnNoYTEpLAorCQkJCSAgICAgICBjZS0+bmFtZSwgMCk7CiAJCQljb250aW51ZTsKIAkJfQogCQljaGFuZ2VkID0gbWF0Y2hfc3RhdF93aXRoX3N1Ym1vZHVsZSgmcmV2cy0+ZGlmZm9wdCwgY2UsICZzdCwKQEAgLTIyMCw2ICsyMjEsNyBAQAogCQluZXdtb2RlID0gY2VfbW9kZV9mcm9tX3N0YXQoY2UsIHN0LnN0X21vZGUpOwogCQlkaWZmX2NoYW5nZSgmcmV2cy0+ZGlmZm9wdCwgb2xkbW9kZSwgbmV3bW9kZSwKIAkJCSAgICBjZS0+c2hhMSwgKGNoYW5nZWQgPyBudWxsX3NoYTEgOiBjZS0+c2hhMSksCisJCQkgICAgIWlzX251bGxfc2hhMShjZS0+c2hhMSksIChjaGFuZ2VkID8gMCA6ICFpc19udWxsX3NoYTEoY2UtPnNoYTEpKSwKIAkJCSAgICBjZS0+bmFtZSwgMCwgZGlydHlfc3VibW9kdWxlKTsKIAogCX0KQEAgLTIzNiwxMSArMjM4LDEyIEBACiBzdGF0aWMgdm9pZCBkaWZmX2luZGV4X3Nob3dfZmlsZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsCiAJCQkJIGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJCQkgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKLQkJCQkgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgdW5zaWduZWQgaW50IG1vZGUsCisJCQkJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBzaGExX3ZhbGlkLAorCQkJCSB1bnNpZ25lZCBpbnQgbW9kZSwKIAkJCQkgdW5zaWduZWQgZGlydHlfc3VibW9kdWxlKQogewogCWRpZmZfYWRkcmVtb3ZlKCZyZXZzLT5kaWZmb3B0LCBwcmVmaXhbMF0sIG1vZGUsCi0JCSAgICAgICBzaGExLCBjZS0+bmFtZSwgZGlydHlfc3VibW9kdWxlKTsKKwkJICAgICAgIHNoYTEsIHNoYTFfdmFsaWQsIGNlLT5uYW1lLCBkaXJ0eV9zdWJtb2R1bGUpOwogfQogCiBzdGF0aWMgaW50IGdldF9zdGF0X2RhdGEoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKQEAgLTI5NSw3ICsyOTgsNyBAQAogCSAgICAmZGlydHlfc3VibW9kdWxlLCAmcmV2cy0+ZGlmZm9wdCkgPCAwKQogCQlyZXR1cm47CiAKLQlkaWZmX2luZGV4X3Nob3dfZmlsZShyZXZzLCAiKyIsIG5ldywgc2hhMSwgbW9kZSwgZGlydHlfc3VibW9kdWxlKTsKKwlkaWZmX2luZGV4X3Nob3dfZmlsZShyZXZzLCAiKyIsIG5ldywgc2hhMSwgIWlzX251bGxfc2hhMShzaGExKSwgbW9kZSwgZGlydHlfc3VibW9kdWxlKTsKIH0KIAogc3RhdGljIGludCBzaG93X21vZGlmaWVkKHN0cnVjdCByZXZfaW5mbyAqcmV2cywKQEAgLTMxMiw3ICszMTUsNyBAQAogCQkJICAmZGlydHlfc3VibW9kdWxlLCAmcmV2cy0+ZGlmZm9wdCkgPCAwKSB7CiAJCWlmIChyZXBvcnRfbWlzc2luZykKIAkJCWRpZmZfaW5kZXhfc2hvd19maWxlKHJldnMsICItIiwgb2xkLAotCQkJCQkgICAgIG9sZC0+c2hhMSwgb2xkLT5jZV9tb2RlLCAwKTsKKwkJCQkJICAgICBvbGQtPnNoYTEsIDEsIG9sZC0+Y2VfbW9kZSwgMCk7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTM0Nyw3ICszNTAsOCBAQAogCQlyZXR1cm4gMDsKIAogCWRpZmZfY2hhbmdlKCZyZXZzLT5kaWZmb3B0LCBvbGRtb2RlLCBtb2RlLAotCQkgICAgb2xkLT5zaGExLCBzaGExLCBvbGQtPm5hbWUsIDAsIGRpcnR5X3N1Ym1vZHVsZSk7CisJCSAgICBvbGQtPnNoYTEsIHNoYTEsIDEsICFpc19udWxsX3NoYTEoc2hhMSksCisJCSAgICBvbGQtPm5hbWUsIDAsIGRpcnR5X3N1Ym1vZHVsZSk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTM4MCw3ICszODQsNyBAQAogCQlzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcGFpcjsKIAkJcGFpciA9IGRpZmZfdW5tZXJnZSgmcmV2cy0+ZGlmZm9wdCwgaWR4LT5uYW1lKTsKIAkJaWYgKHRyZWUpCi0JCQlmaWxsX2ZpbGVzcGVjKHBhaXItPm9uZSwgdHJlZS0+c2hhMSwgdHJlZS0+Y2VfbW9kZSk7CisJCQlmaWxsX2ZpbGVzcGVjKHBhaXItPm9uZSwgdHJlZS0+c2hhMSwgMSwgdHJlZS0+Y2VfbW9kZSk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTM5Niw3ICs0MDAsNyBAQAogCSAqIFNvbWV0aGluZyByZW1vdmVkIGZyb20gdGhlIHRyZWU/CiAJICovCiAJaWYgKCFpZHgpIHsKLQkJZGlmZl9pbmRleF9zaG93X2ZpbGUocmV2cywgIi0iLCB0cmVlLCB0cmVlLT5zaGExLCB0cmVlLT5jZV9tb2RlLCAwKTsKKwkJZGlmZl9pbmRleF9zaG93X2ZpbGUocmV2cywgIi0iLCB0cmVlLCB0cmVlLT5zaGExLCAxLCB0cmVlLT5jZV9tb2RlLCAwKTsKIAkJcmV0dXJuOwogCX0KIApkaWZmIC0tZ2l0IGEvZGlmZi1uby1pbmRleC5jIGIvZGlmZi1uby1pbmRleC5jCmluZGV4IGYwYjAwMTAuLjc0ZGE2NTkgMTAwNjQ0Ci0tLSBhL2RpZmYtbm8taW5kZXguYworKysgYi9kaWZmLW5vLWluZGV4LmMKQEAgLTMyLDYgKzMyLDEzIEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qCisgKiBUaGlzIHNob3VsZCBiZSAiKHN0YW5kYXJkIGlucHV0KSIgb3Igc29tZXRoaW5nLCBidXQgaXQgd2lsbAorICogcHJvYmFibHkgZXhwb3NlIG1hbnkgbW9yZSBicmVha2FnZXMgaW4gdGhlIHdheSBuby1pbmRleCBjb2RlCisgKiBpcyBib2x0ZWQgb250byB0aGUgZGlmZiBjYWxsY2hhaW4uCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyIGZpbGVfZnJvbV9zdGFuZGFyZF9pbnB1dFtdID0gIi0iOworCiBzdGF0aWMgaW50IGdldF9tb2RlKGNvbnN0IGNoYXIgKnBhdGgsIGludCAqbW9kZSkKIHsKIAlzdHJ1Y3Qgc3RhdCBzdDsKQEAgLTQyLDcgKzQ5LDcgQEAKIAllbHNlIGlmICghc3RyY2FzZWNtcChwYXRoLCAibnVsIikpCiAJCSptb2RlID0gMDsKICNlbmRpZgotCWVsc2UgaWYgKCFzdHJjbXAocGF0aCwgIi0iKSkKKwllbHNlIGlmIChwYXRoID09IGZpbGVfZnJvbV9zdGFuZGFyZF9pbnB1dCkKIAkJKm1vZGUgPSBjcmVhdGVfY2VfbW9kZSgwNjY2KTsKIAllbHNlIGlmIChsc3RhdChwYXRoLCAmc3QpKQogCQlyZXR1cm4gZXJyb3IoIkNvdWxkIG5vdCBhY2Nlc3MgJyVzJyIsIHBhdGgpOwpAQCAtNTEsNiArNTgsMzYgQEAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBwb3B1bGF0ZV9mcm9tX3N0ZGluKHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpzKQoreworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisJc2l6ZV90IHNpemUgPSAwOworCisJaWYgKHN0cmJ1Zl9yZWFkKCZidWYsIDAsIDApIDwgMCkKKwkJcmV0dXJuIGVycm9yKCJlcnJvciB3aGlsZSByZWFkaW5nIGZyb20gc3RkaW4gJXMiLAorCQkJCSAgICAgc3RyZXJyb3IoZXJybm8pKTsKKworCXMtPnNob3VsZF9tdW5tYXAgPSAwOworCXMtPmRhdGEgPSBzdHJidWZfZGV0YWNoKCZidWYsICZzaXplKTsKKwlzLT5zaXplID0gc2l6ZTsKKwlzLT5zaG91bGRfZnJlZSA9IDE7CisJcy0+aXNfc3RkaW4gPSAxOworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGRpZmZfZmlsZXNwZWMgKm5vaW5kZXhfZmlsZXNwZWMoY29uc3QgY2hhciAqbmFtZSwgaW50IG1vZGUpCit7CisJc3RydWN0IGRpZmZfZmlsZXNwZWMgKnM7CisKKwlpZiAoIW5hbWUpCisJCW5hbWUgPSAiL2Rldi9udWxsIjsKKwlzID0gYWxsb2NfZmlsZXNwZWMobmFtZSk7CisJZmlsbF9maWxlc3BlYyhzLCBudWxsX3NoYTEsIDAsIG1vZGUpOworCWlmIChuYW1lID09IGZpbGVfZnJvbV9zdGFuZGFyZF9pbnB1dCkKKwkJcG9wdWxhdGVfZnJvbV9zdGRpbihzKTsKKwlyZXR1cm4gczsKK30KKwogc3RhdGljIGludCBxdWV1ZV9kaWZmKHN0cnVjdCBkaWZmX29wdGlvbnMgKm8sCiAJCSAgICAgIGNvbnN0IGNoYXIgKm5hbWUxLCBjb25zdCBjaGFyICpuYW1lMikKIHsKQEAgLTEzNyw0NCArMTc0LDIxIEBACiAJCQl0bXBfYyA9IG5hbWUxOyBuYW1lMSA9IG5hbWUyOyBuYW1lMiA9IHRtcF9jOwogCQl9CiAKLQkJaWYgKCFuYW1lMSkKLQkJCW5hbWUxID0gIi9kZXYvbnVsbCI7Ci0JCWlmICghbmFtZTIpCi0JCQluYW1lMiA9ICIvZGV2L251bGwiOwotCQlkMSA9IGFsbG9jX2ZpbGVzcGVjKG5hbWUxKTsKLQkJZDIgPSBhbGxvY19maWxlc3BlYyhuYW1lMik7Ci0JCWZpbGxfZmlsZXNwZWMoZDEsIG51bGxfc2hhMSwgbW9kZTEpOwotCQlmaWxsX2ZpbGVzcGVjKGQyLCBudWxsX3NoYTEsIG1vZGUyKTsKLQorCQlkMSA9IG5vaW5kZXhfZmlsZXNwZWMobmFtZTEsIG1vZGUxKTsKKwkJZDIgPSBub2luZGV4X2ZpbGVzcGVjKG5hbWUyLCBtb2RlMik7CiAJCWRpZmZfcXVldWUoJmRpZmZfcXVldWVkX2RpZmYsIGQxLCBkMik7CiAJCXJldHVybiAwOwogCX0KIH0KIAotc3RhdGljIGludCBwYXRoX291dHNpZGVfcmVwbyhjb25zdCBjaGFyICpwYXRoKQotewotCWNvbnN0IGNoYXIgKndvcmtfdHJlZTsKLQlzaXplX3QgbGVuOwotCi0JaWYgKCFpc19hYnNvbHV0ZV9wYXRoKHBhdGgpKQotCQlyZXR1cm4gMDsKLQl3b3JrX3RyZWUgPSBnZXRfZ2l0X3dvcmtfdHJlZSgpOwotCWlmICghd29ya190cmVlKQotCQlyZXR1cm4gMTsKLQlsZW4gPSBzdHJsZW4od29ya190cmVlKTsKLQlpZiAoc3RybmNtcChwYXRoLCB3b3JrX3RyZWUsIGxlbikgfHwKLQkgICAgKHBhdGhbbGVuXSAhPSAnXDAnICYmIHBhdGhbbGVuXSAhPSAnLycpKQotCQlyZXR1cm4gMTsKLQlyZXR1cm4gMDsKLX0KLQogdm9pZCBkaWZmX25vX2luZGV4KHN0cnVjdCByZXZfaW5mbyAqcmV2cywKIAkJICAgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LAogCQkgICBpbnQgbm9uZ2l0LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7Ci0JaW50IGk7CisJaW50IGksIHByZWZpeGxlbjsKIAlpbnQgbm9faW5kZXggPSAwOwogCXVuc2lnbmVkIG9wdGlvbnMgPSAwOworCWNvbnN0IGNoYXIgKnBhdGhzWzJdOwogCiAJLyogV2VyZSB3ZSBhc2tlZCB0byBkbyAtLW5vLWluZGV4IGV4cGxpY2l0bHk/ICovCiAJZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykgewpAQCAtMTk3LDggKzIxMSw4IEBACiAJCSAqIGEgY29sb3VyZnVsICJkaWZmIiByZXBsYWNlbWVudC4KIAkJICovCiAJCWlmICgoYXJnYyAhPSBpICsgMikgfHwKLQkJICAgICghcGF0aF9vdXRzaWRlX3JlcG8oYXJndltpXSkgJiYKLQkJICAgICAhcGF0aF9vdXRzaWRlX3JlcG8oYXJndltpKzFdKSkpCisJCSAgICAocGF0aF9pbnNpZGVfcmVwbyhwcmVmaXgsIGFyZ3ZbaV0pICYmCisJCSAgICAgcGF0aF9pbnNpZGVfcmVwbyhwcmVmaXgsIGFyZ3ZbaSsxXSkpKQogCQkJcmV0dXJuOwogCX0KIAlpZiAoYXJnYyAhPSBpICsgMikKQEAgLTIyNCw0NiArMjM4LDMyIEBACiAJCX0KIAl9CiAKLQkvKgotCSAqIElmIHRoZSB1c2VyIGFza2VkIGZvciBvdXIgZXhpdCBjb2RlIHRoZW4gZG9uJ3Qgc3RhcnQgYQotCSAqIHBhZ2VyIG9yIHdlIHdvdWxkIGVuZCB1cCByZXBvcnRpbmcgaXRzIGV4aXQgY29kZSBpbnN0ZWFkLgotCSAqLwotCWlmICghRElGRl9PUFRfVFNUKCZyZXZzLT5kaWZmb3B0LCBFWElUX1dJVEhfU1RBVFVTKSkKLQkJc2V0dXBfcGFnZXIoKTsKLQotCWlmIChwcmVmaXgpIHsKLQkJaW50IGxlbiA9IHN0cmxlbihwcmVmaXgpOwotCQljb25zdCBjaGFyICpwYXRoc1szXTsKLQkJbWVtc2V0KHBhdGhzLCAwLCBzaXplb2YocGF0aHMpKTsKLQotCQlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7Ci0JCQljb25zdCBjaGFyICpwID0gYXJndlthcmdjIC0gMiArIGldOworCXByZWZpeGxlbiA9IHByZWZpeCA/IHN0cmxlbihwcmVmaXgpIDogMDsKKwlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CisJCWNvbnN0IGNoYXIgKnAgPSBhcmd2W2FyZ2MgLSAyICsgaV07CisJCWlmICghc3RyY21wKHAsICItIikpCiAJCQkvKgotCQkJICogc3RkaW4gc2hvdWxkIGJlIHNwZWxsZWQgYXMgJy0nOyBpZiB5b3UgaGF2ZQotCQkJICogcGF0aCB0aGF0IGlzICctJywgc3BlbGwgaXQgYXMgLi8tLgorCQkJICogc3RkaW4gc2hvdWxkIGJlIHNwZWxsZWQgYXMgIi0iOyBpZiB5b3UgaGF2ZQorCQkJICogcGF0aCB0aGF0IGlzICItIiwgc3BlbGwgaXQgYXMgIi4vLSIuCiAJCQkgKi8KLQkJCXAgPSAoc3RyY21wKHAsICItIikKLQkJCSAgICAgPyB4c3RyZHVwKHByZWZpeF9maWxlbmFtZShwcmVmaXgsIGxlbiwgcCkpCi0JCQkgICAgIDogcCk7Ci0JCQlwYXRoc1tpXSA9IHA7Ci0JCX0KLQkJZGlmZl90cmVlX3NldHVwX3BhdGhzKHBhdGhzLCAmcmV2cy0+ZGlmZm9wdCk7CisJCQlwID0gZmlsZV9mcm9tX3N0YW5kYXJkX2lucHV0OworCQllbHNlIGlmIChwcmVmaXhsZW4pCisJCQlwID0geHN0cmR1cChwcmVmaXhfZmlsZW5hbWUocHJlZml4LCBwcmVmaXhsZW4sIHApKTsKKwkJcGF0aHNbaV0gPSBwOwogCX0KLQllbHNlCi0JCWRpZmZfdHJlZV9zZXR1cF9wYXRocyhhcmd2ICsgYXJnYyAtIDIsICZyZXZzLT5kaWZmb3B0KTsKIAlyZXZzLT5kaWZmb3B0LnNraXBfc3RhdF91bm1hdGNoID0gMTsKIAlpZiAoIXJldnMtPmRpZmZvcHQub3V0cHV0X2Zvcm1hdCkKIAkJcmV2cy0+ZGlmZm9wdC5vdXRwdXRfZm9ybWF0ID0gRElGRl9GT1JNQVRfUEFUQ0g7CiAKLQlESUZGX09QVF9TRVQoJnJldnMtPmRpZmZvcHQsIEVYSVRfV0lUSF9TVEFUVVMpOwogCURJRkZfT1BUX1NFVCgmcmV2cy0+ZGlmZm9wdCwgTk9fSU5ERVgpOwogCiAJcmV2cy0+bWF4X2NvdW50ID0gLTI7Ci0JaWYgKGRpZmZfc2V0dXBfZG9uZSgmcmV2cy0+ZGlmZm9wdCkgPCAwKQotCQlkaWUoImRpZmZfc2V0dXBfZG9uZSBmYWlsZWQiKTsKKwlkaWZmX3NldHVwX2RvbmUoJnJldnMtPmRpZmZvcHQpOwogCi0JaWYgKHF1ZXVlX2RpZmYoJnJldnMtPmRpZmZvcHQsIHJldnMtPmRpZmZvcHQucGF0aHNwZWMucmF3WzBdLAotCQkgICAgICAgcmV2cy0+ZGlmZm9wdC5wYXRoc3BlYy5yYXdbMV0pKQorCXNldHVwX2RpZmZfcGFnZXIoJnJldnMtPmRpZmZvcHQpOworCURJRkZfT1BUX1NFVCgmcmV2cy0+ZGlmZm9wdCwgRVhJVF9XSVRIX1NUQVRVUyk7CisKKwlpZiAocXVldWVfZGlmZigmcmV2cy0+ZGlmZm9wdCwgcGF0aHNbMF0sIHBhdGhzWzFdKSkKIAkJZXhpdCgxKTsKIAlkaWZmX3NldF9tbmVtb25pY19wcmVmaXgoJnJldnMtPmRpZmZvcHQsICIxLyIsICIyLyIpOwogCWRpZmZjb3JlX3N0ZCgmcmV2cy0+ZGlmZm9wdCk7CkBAIC0yNzMsNSArMjczLDUgQEAKIAkgKiBUaGUgcmV0dXJuIGNvZGUgZm9yIC0tbm8taW5kZXggaW1pdGF0ZXMgZGlmZigxKToKIAkgKiAwID0gbm8gY2hhbmdlcywgMSA9IGNoYW5nZXMsIGVsc2UgZXJyb3IKIAkgKi8KLQlleGl0KHJldnMtPmRpZmZvcHQuZm91bmRfY2hhbmdlcyk7CisJZXhpdChkaWZmX3Jlc3VsdF9jb2RlKCZyZXZzLT5kaWZmb3B0LCAwKSk7CiB9CmRpZmYgLS1naXQgYS9kaWZmLmMgYi9kaWZmLmMKaW5kZXggMWE1OTRkZi4uZjBiM2U3YyAxMDA2NDQKLS0tIGEvZGlmZi5jCisrKyBiL2RpZmYuYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgInNpZ2NoYWluLmgiCiAjaW5jbHVkZSAic3VibW9kdWxlLmgiCiAjaW5jbHVkZSAibGwtbWVyZ2UuaCIKKyNpbmNsdWRlICJzdHJpbmctbGlzdC5oIgogCiAjaWZkZWYgTk9fRkFTVF9XT1JLSU5HX0RJUkVDVE9SWQogI2RlZmluZSBGQVNUX1dPUktJTkdfRElSRUNUT1JZIDAKQEAgLTI1LDcgKzI2LDggQEAKIHN0YXRpYyBpbnQgZGlmZl9kZXRlY3RfcmVuYW1lX2RlZmF1bHQ7CiBzdGF0aWMgaW50IGRpZmZfcmVuYW1lX2xpbWl0X2RlZmF1bHQgPSA0MDA7CiBzdGF0aWMgaW50IGRpZmZfc3VwcHJlc3NfYmxhbmtfZW1wdHk7Ci1pbnQgZGlmZl91c2VfY29sb3JfZGVmYXVsdCA9IC0xOworc3RhdGljIGludCBkaWZmX3VzZV9jb2xvcl9kZWZhdWx0ID0gLTE7CitzdGF0aWMgaW50IGRpZmZfY29udGV4dF9kZWZhdWx0ID0gMzsKIHN0YXRpYyBjb25zdCBjaGFyICpkaWZmX3dvcmRfcmVnZXhfY2ZnOwogc3RhdGljIGNvbnN0IGNoYXIgKmV4dGVybmFsX2RpZmZfY21kX2NmZzsKIGludCBkaWZmX2F1dG9fcmVmcmVzaF9pbmRleCA9IDE7CkBAIC0zNCw2ICszNiw3IEBACiBzdGF0aWMgaW50IGRpZmZfc3RhdF9ncmFwaF93aWR0aDsKIHN0YXRpYyBpbnQgZGlmZl9kaXJzdGF0X3Blcm1pbGxlX2RlZmF1bHQgPSAzMDsKIHN0YXRpYyBzdHJ1Y3QgZGlmZl9vcHRpb25zIGRlZmF1bHRfZGlmZl9vcHRpb25zOworc3RhdGljIGxvbmcgZGlmZl9hbGdvcml0aG07CiAKIHN0YXRpYyBjaGFyIGRpZmZfY29sb3JzW11bQ09MT1JfTUFYTEVOXSA9IHsKIAlHSVRfQ09MT1JfUkVTRVQsCkBAIC02OCwyNiArNzEsMzAgQEAKIAlyZXR1cm4gLTE7CiB9CiAKLXN0YXRpYyBpbnQgcGFyc2VfZGlyc3RhdF9wYXJhbXMoc3RydWN0IGRpZmZfb3B0aW9ucyAqb3B0aW9ucywgY29uc3QgY2hhciAqcGFyYW1zLAorc3RhdGljIGludCBwYXJzZV9kaXJzdGF0X3BhcmFtcyhzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHRpb25zLCBjb25zdCBjaGFyICpwYXJhbXNfc3RyaW5nLAogCQkJCXN0cnVjdCBzdHJidWYgKmVycm1zZykKIHsKLQljb25zdCBjaGFyICpwID0gcGFyYW1zOwotCWludCBwX2xlbiwgcmV0ID0gMDsKKwljaGFyICpwYXJhbXNfY29weSA9IHhzdHJkdXAocGFyYW1zX3N0cmluZyk7CisJc3RydWN0IHN0cmluZ19saXN0IHBhcmFtcyA9IFNUUklOR19MSVNUX0lOSVRfTk9EVVA7CisJaW50IHJldCA9IDA7CisJaW50IGk7CiAKLQl3aGlsZSAoKnApIHsKLQkJcF9sZW4gPSBzdHJjaHJudWwocCwgJywnKSAtIHA7Ci0JCWlmICghbWVtY21wKHAsICJjaGFuZ2VzIiwgcF9sZW4pKSB7CisJaWYgKCpwYXJhbXNfY29weSkKKwkJc3RyaW5nX2xpc3Rfc3BsaXRfaW5fcGxhY2UoJnBhcmFtcywgcGFyYW1zX2NvcHksICcsJywgLTEpOworCWZvciAoaSA9IDA7IGkgPCBwYXJhbXMubnI7IGkrKykgeworCQljb25zdCBjaGFyICpwID0gcGFyYW1zLml0ZW1zW2ldLnN0cmluZzsKKwkJaWYgKCFzdHJjbXAocCwgImNoYW5nZXMiKSkgewogCQkJRElGRl9PUFRfQ0xSKG9wdGlvbnMsIERJUlNUQVRfQllfTElORSk7CiAJCQlESUZGX09QVF9DTFIob3B0aW9ucywgRElSU1RBVF9CWV9GSUxFKTsKLQkJfSBlbHNlIGlmICghbWVtY21wKHAsICJsaW5lcyIsIHBfbGVuKSkgeworCQl9IGVsc2UgaWYgKCFzdHJjbXAocCwgImxpbmVzIikpIHsKIAkJCURJRkZfT1BUX1NFVChvcHRpb25zLCBESVJTVEFUX0JZX0xJTkUpOwogCQkJRElGRl9PUFRfQ0xSKG9wdGlvbnMsIERJUlNUQVRfQllfRklMRSk7Ci0JCX0gZWxzZSBpZiAoIW1lbWNtcChwLCAiZmlsZXMiLCBwX2xlbikpIHsKKwkJfSBlbHNlIGlmICghc3RyY21wKHAsICJmaWxlcyIpKSB7CiAJCQlESUZGX09QVF9DTFIob3B0aW9ucywgRElSU1RBVF9CWV9MSU5FKTsKIAkJCURJRkZfT1BUX1NFVChvcHRpb25zLCBESVJTVEFUX0JZX0ZJTEUpOwotCQl9IGVsc2UgaWYgKCFtZW1jbXAocCwgIm5vbmN1bXVsYXRpdmUiLCBwX2xlbikpIHsKKwkJfSBlbHNlIGlmICghc3RyY21wKHAsICJub25jdW11bGF0aXZlIikpIHsKIAkJCURJRkZfT1BUX0NMUihvcHRpb25zLCBESVJTVEFUX0NVTVVMQVRJVkUpOwotCQl9IGVsc2UgaWYgKCFtZW1jbXAocCwgImN1bXVsYXRpdmUiLCBwX2xlbikpIHsKKwkJfSBlbHNlIGlmICghc3RyY21wKHAsICJjdW11bGF0aXZlIikpIHsKIAkJCURJRkZfT1BUX1NFVChvcHRpb25zLCBESVJTVEFUX0NVTVVMQVRJVkUpOwogCQl9IGVsc2UgaWYgKGlzZGlnaXQoKnApKSB7CiAJCQljaGFyICplbmQ7CkBAIC05OSwyNyArMTA2LDM1IEBACiAJCQkJd2hpbGUgKGlzZGlnaXQoKisrZW5kKSkKIAkJCQkJOyAvKiBub3RoaW5nICovCiAJCQl9Ci0JCQlpZiAoZW5kIC0gcCA9PSBwX2xlbikKKwkJCWlmICghKmVuZCkKIAkJCQlvcHRpb25zLT5kaXJzdGF0X3Blcm1pbGxlID0gcGVybWlsbGU7CiAJCQllbHNlIHsKLQkJCQlzdHJidWZfYWRkZihlcnJtc2csIF8oIiAgRmFpbGVkIHRvIHBhcnNlIGRpcnN0YXQgY3V0LW9mZiBwZXJjZW50YWdlICclLipzJ1xuIiksCi0JCQkJCSAgICBwX2xlbiwgcCk7CisJCQkJc3RyYnVmX2FkZGYoZXJybXNnLCBfKCIgIEZhaWxlZCB0byBwYXJzZSBkaXJzdGF0IGN1dC1vZmYgcGVyY2VudGFnZSAnJXMnXG4iKSwKKwkJCQkJICAgIHApOwogCQkJCXJldCsrOwogCQkJfQogCQl9IGVsc2UgewotCQkJc3RyYnVmX2FkZGYoZXJybXNnLCBfKCIgIFVua25vd24gZGlyc3RhdCBwYXJhbWV0ZXIgJyUuKnMnXG4iKSwKLQkJCQkgICAgcF9sZW4sIHApOworCQkJc3RyYnVmX2FkZGYoZXJybXNnLCBfKCIgIFVua25vd24gZGlyc3RhdCBwYXJhbWV0ZXIgJyVzJ1xuIiksIHApOwogCQkJcmV0Kys7CiAJCX0KIAotCQlwICs9IHBfbGVuOwotCi0JCWlmICgqcCkKLQkJCXArKzsgLyogbW9yZSBwYXJhbWV0ZXJzLCBzd2FsbG93IHNlcGFyYXRvciAqLwogCX0KKwlzdHJpbmdfbGlzdF9jbGVhcigmcGFyYW1zLCAwKTsKKwlmcmVlKHBhcmFtc19jb3B5KTsKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50IHBhcnNlX3N1Ym1vZHVsZV9wYXJhbXMoc3RydWN0IGRpZmZfb3B0aW9ucyAqb3B0aW9ucywgY29uc3QgY2hhciAqdmFsdWUpCit7CisJaWYgKCFzdHJjbXAodmFsdWUsICJsb2ciKSkKKwkJRElGRl9PUFRfU0VUKG9wdGlvbnMsIFNVQk1PRFVMRV9MT0cpOworCWVsc2UgaWYgKCFzdHJjbXAodmFsdWUsICJzaG9ydCIpKQorCQlESUZGX09QVF9DTFIob3B0aW9ucywgU1VCTU9EVUxFX0xPRyk7CisJZWxzZQorCQlyZXR1cm4gLTE7CisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgZ2l0X2NvbmZpZ19yZW5hbWUoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKIAlpZiAoIXZhbHVlKQpAQCAtMTI5LDYgKzE0NCwyMSBAQAogCXJldHVybiBnaXRfY29uZmlnX2Jvb2wodmFyLHZhbHVlKSA/IERJRkZfREVURUNUX1JFTkFNRSA6IDA7CiB9CiAKK2xvbmcgcGFyc2VfYWxnb3JpdGhtX3ZhbHVlKGNvbnN0IGNoYXIgKnZhbHVlKQoreworCWlmICghdmFsdWUpCisJCXJldHVybiAtMTsKKwllbHNlIGlmICghc3RyY2FzZWNtcCh2YWx1ZSwgIm15ZXJzIikgfHwgIXN0cmNhc2VjbXAodmFsdWUsICJkZWZhdWx0IikpCisJCXJldHVybiAwOworCWVsc2UgaWYgKCFzdHJjYXNlY21wKHZhbHVlLCAibWluaW1hbCIpKQorCQlyZXR1cm4gWERGX05FRURfTUlOSU1BTDsKKwllbHNlIGlmICghc3RyY2FzZWNtcCh2YWx1ZSwgInBhdGllbmNlIikpCisJCXJldHVybiBYREZfUEFUSUVOQ0VfRElGRjsKKwllbHNlIGlmICghc3RyY2FzZWNtcCh2YWx1ZSwgImhpc3RvZ3JhbSIpKQorCQlyZXR1cm4gWERGX0hJU1RPR1JBTV9ESUZGOworCXJldHVybiAtMTsKK30KKwogLyoKICAqIFRoZXNlIGFyZSB0byBnaXZlIFVJIGxheWVyIGRlZmF1bHRzLgogICogVGhlIGNvcmUtbGV2ZWwgY29tbWFuZHMgc3VjaCBhcyBnaXQtZGlmZi1maWxlcyBzaG91bGQKQEAgLTE0MSw2ICsxNzEsMTIgQEAKIAkJZGlmZl91c2VfY29sb3JfZGVmYXVsdCA9IGdpdF9jb25maWdfY29sb3Jib29sKHZhciwgdmFsdWUpOwogCQlyZXR1cm4gMDsKIAl9CisJaWYgKCFzdHJjbXAodmFyLCAiZGlmZi5jb250ZXh0IikpIHsKKwkJZGlmZl9jb250ZXh0X2RlZmF1bHQgPSBnaXRfY29uZmlnX2ludCh2YXIsIHZhbHVlKTsKKwkJaWYgKGRpZmZfY29udGV4dF9kZWZhdWx0IDwgMCkKKwkJCXJldHVybiAtMTsKKwkJcmV0dXJuIDA7CisJfQogCWlmICghc3RyY21wKHZhciwgImRpZmYucmVuYW1lcyIpKSB7CiAJCWRpZmZfZGV0ZWN0X3JlbmFtZV9kZWZhdWx0ID0gZ2l0X2NvbmZpZ19yZW5hbWUodmFyLCB2YWx1ZSk7CiAJCXJldHVybiAwOwpAQCAtMTY5LDYgKzIwNSwyMCBAQAogCWlmICghc3RyY21wKHZhciwgImRpZmYuaWdub3Jlc3VibW9kdWxlcyIpKQogCQloYW5kbGVfaWdub3JlX3N1Ym1vZHVsZXNfYXJnKCZkZWZhdWx0X2RpZmZfb3B0aW9ucywgdmFsdWUpOwogCisJaWYgKCFzdHJjbXAodmFyLCAiZGlmZi5zdWJtb2R1bGUiKSkgeworCQlpZiAocGFyc2Vfc3VibW9kdWxlX3BhcmFtcygmZGVmYXVsdF9kaWZmX29wdGlvbnMsIHZhbHVlKSkKKwkJCXdhcm5pbmcoXygiVW5rbm93biB2YWx1ZSBmb3IgJ2RpZmYuc3VibW9kdWxlJyBjb25maWcgdmFyaWFibGU6ICclcyciKSwKKwkJCQl2YWx1ZSk7CisJCXJldHVybiAwOworCX0KKworCWlmICghc3RyY21wKHZhciwgImRpZmYuYWxnb3JpdGhtIikpIHsKKwkJZGlmZl9hbGdvcml0aG0gPSBwYXJzZV9hbGdvcml0aG1fdmFsdWUodmFsdWUpOworCQlpZiAoZGlmZl9hbGdvcml0aG0gPCAwKQorCQkJcmV0dXJuIC0xOworCQlyZXR1cm4gMDsKKwl9CisKIAlpZiAoZ2l0X2NvbG9yX2NvbmZpZyh2YXIsIHZhbHVlLCBjYikgPCAwKQogCQlyZXR1cm4gLTE7CiAKQEAgLTM3NSwxMiArNDI1LDcgQEAKIAlpbnQgbm9maXJzdDsKIAlGSUxFICpmaWxlID0gby0+ZmlsZTsKIAotCWlmIChvLT5vdXRwdXRfcHJlZml4KSB7Ci0JCXN0cnVjdCBzdHJidWYgKm1zZyA9IE5VTEw7Ci0JCW1zZyA9IG8tPm91dHB1dF9wcmVmaXgobywgby0+b3V0cHV0X3ByZWZpeF9kYXRhKTsKLQkJYXNzZXJ0KG1zZyk7Ci0JCWZ3cml0ZShtc2ctPmJ1ZiwgbXNnLT5sZW4sIDEsIGZpbGUpOwotCX0KKwlmcHV0cyhkaWZmX2xpbmVfcHJlZml4KG8pLCBmaWxlKTsKIAogCWlmIChsZW4gPT0gMCkgewogCQloYXNfdHJhaWxpbmdfbmV3bGluZSA9IChmaXJzdCA9PSAnXG4nKTsKQEAgLTU3NCw2ICs2MTksNyBAQAogCWlmICghZW5kcCkgewogCQljb25zdCBjaGFyICpwbGFpbiA9IGRpZmZfZ2V0X2NvbG9yKGVjYi0+Y29sb3JfZGlmZiwKIAkJCQkJCSAgIERJRkZfUExBSU4pOworCQlwdXRjKCdcbicsIGVjYi0+b3B0LT5maWxlKTsKIAkJZW1pdF9saW5lXzAoZWNiLT5vcHQsIHBsYWluLCByZXNldCwgJ1xcJywKIAkJCSAgICBubmVvZiwgc3RybGVuKG5uZW9mKSk7CiAJfQpAQCAtNTk3LDEzICs2NDMsNyBAQAogCWNoYXIgKmRhdGFfb25lLCAqZGF0YV90d287CiAJc2l6ZV90IHNpemVfb25lLCBzaXplX3R3bzsKIAlzdHJ1Y3QgZW1pdF9jYWxsYmFjayBlY2JkYXRhOwotCWNoYXIgKmxpbmVfcHJlZml4ID0gIiI7Ci0Jc3RydWN0IHN0cmJ1ZiAqbXNnYnVmOwotCi0JaWYgKG8gJiYgby0+b3V0cHV0X3ByZWZpeCkgewotCQltc2didWYgPSBvLT5vdXRwdXRfcHJlZml4KG8sIG8tPm91dHB1dF9wcmVmaXhfZGF0YSk7Ci0JCWxpbmVfcHJlZml4ID0gbXNnYnVmLT5idWY7Ci0JfQorCWNvbnN0IGNoYXIgKmxpbmVfcHJlZml4ID0gZGlmZl9saW5lX3ByZWZpeChvKTsKIAogCWlmIChkaWZmX21uZW1vbmljX3ByZWZpeCAmJiBESUZGX09QVF9UU1QobywgUkVWRVJTRV9ESUZGKSkgewogCQlhX3ByZWZpeCA9IG8tPmJfcHJlZml4OwpAQCAtNzk5LDE4ICs4MzksMTQgQEAKIAlpbnQgbWludXNfZmlyc3QsIG1pbnVzX2xlbiwgcGx1c19maXJzdCwgcGx1c19sZW47CiAJY29uc3QgY2hhciAqbWludXNfYmVnaW4sICptaW51c19lbmQsICpwbHVzX2JlZ2luLCAqcGx1c19lbmQ7CiAJc3RydWN0IGRpZmZfb3B0aW9ucyAqb3B0ID0gZGlmZl93b3Jkcy0+b3B0OwotCXN0cnVjdCBzdHJidWYgKm1zZ2J1ZjsKLQljaGFyICpsaW5lX3ByZWZpeCA9ICIiOworCWNvbnN0IGNoYXIgKmxpbmVfcHJlZml4OwogCiAJaWYgKGxpbmVbMF0gIT0gJ0AnIHx8IHBhcnNlX2h1bmtfaGVhZGVyKGxpbmUsIGxlbiwKIAkJCSZtaW51c19maXJzdCwgJm1pbnVzX2xlbiwgJnBsdXNfZmlyc3QsICZwbHVzX2xlbikpCiAJCXJldHVybjsKIAogCWFzc2VydChvcHQpOwotCWlmIChvcHQtPm91dHB1dF9wcmVmaXgpIHsKLQkJbXNnYnVmID0gb3B0LT5vdXRwdXRfcHJlZml4KG9wdCwgb3B0LT5vdXRwdXRfcHJlZml4X2RhdGEpOwotCQlsaW5lX3ByZWZpeCA9IG1zZ2J1Zi0+YnVmOwotCX0KKwlsaW5lX3ByZWZpeCA9IGRpZmZfbGluZV9wcmVmaXgob3B0KTsKIAogCS8qIFBPU0lYIHJlcXVpcmVzIHRoYXQgZmlyc3QgYmUgZGVjcmVtZW50ZWQgYnkgb25lIGlmIGxlbiA9PSAwLi4uICovCiAJaWYgKG1pbnVzX2xlbikgewpAQCAtOTM0LDE0ICs5NzAsMTAgQEAKIAlzdHJ1Y3QgZGlmZl93b3Jkc19zdHlsZSAqc3R5bGUgPSBkaWZmX3dvcmRzLT5zdHlsZTsKIAogCXN0cnVjdCBkaWZmX29wdGlvbnMgKm9wdCA9IGRpZmZfd29yZHMtPm9wdDsKLQlzdHJ1Y3Qgc3RyYnVmICptc2didWY7Ci0JY2hhciAqbGluZV9wcmVmaXggPSAiIjsKKwljb25zdCBjaGFyICpsaW5lX3ByZWZpeDsKIAogCWFzc2VydChvcHQpOwotCWlmIChvcHQtPm91dHB1dF9wcmVmaXgpIHsKLQkJbXNnYnVmID0gb3B0LT5vdXRwdXRfcHJlZml4KG9wdCwgb3B0LT5vdXRwdXRfcHJlZml4X2RhdGEpOwotCQlsaW5lX3ByZWZpeCA9IG1zZ2J1Zi0+YnVmOwotCX0KKwlsaW5lX3ByZWZpeCA9IGRpZmZfbGluZV9wcmVmaXgob3B0KTsKIAogCS8qIHNwZWNpYWwgY2FzZTogb25seSByZW1vdmFsICovCiAJaWYgKCFkaWZmX3dvcmRzLT5wbHVzLnRleHQuc2l6ZSkgewpAQCAtMTA3Nyw2ICsxMTA5LDE2IEBACiAJcmV0dXJuICIiOwogfQogCitjb25zdCBjaGFyICpkaWZmX2xpbmVfcHJlZml4KHN0cnVjdCBkaWZmX29wdGlvbnMgKm9wdCkKK3sKKwlzdHJ1Y3Qgc3RyYnVmICptc2didWY7CisJaWYgKCFvcHQtPm91dHB1dF9wcmVmaXgpCisJCXJldHVybiAiIjsKKworCW1zZ2J1ZiA9IG9wdC0+b3V0cHV0X3ByZWZpeChvcHQsIG9wdC0+b3V0cHV0X3ByZWZpeF9kYXRhKTsKKwlyZXR1cm4gbXNnYnVmLT5idWY7Cit9CisKIHN0YXRpYyB1bnNpZ25lZCBsb25nIHNhbmVfdHJ1bmNhdGVfbGluZShzdHJ1Y3QgZW1pdF9jYWxsYmFjayAqZWNiLCBjaGFyICpsaW5lLCB1bnNpZ25lZCBsb25nIGxlbikKIHsKIAljb25zdCBjaGFyICpjcDsKQEAgLTExMTcsMTMgKzExNTksNyBAQAogCWNvbnN0IGNoYXIgKnBsYWluID0gZGlmZl9nZXRfY29sb3IoZWNiZGF0YS0+Y29sb3JfZGlmZiwgRElGRl9QTEFJTik7CiAJY29uc3QgY2hhciAqcmVzZXQgPSBkaWZmX2dldF9jb2xvcihlY2JkYXRhLT5jb2xvcl9kaWZmLCBESUZGX1JFU0VUKTsKIAlzdHJ1Y3QgZGlmZl9vcHRpb25zICpvID0gZWNiZGF0YS0+b3B0OwotCWNoYXIgKmxpbmVfcHJlZml4ID0gIiI7Ci0Jc3RydWN0IHN0cmJ1ZiAqbXNnYnVmOwotCi0JaWYgKG8gJiYgby0+b3V0cHV0X3ByZWZpeCkgewotCQltc2didWYgPSBvLT5vdXRwdXRfcHJlZml4KG8sIG8tPm91dHB1dF9wcmVmaXhfZGF0YSk7Ci0JCWxpbmVfcHJlZml4ID0gbXNnYnVmLT5idWY7Ci0JfQorCWNvbnN0IGNoYXIgKmxpbmVfcHJlZml4ID0gZGlmZl9saW5lX3ByZWZpeChvKTsKIAogCWlmIChlY2JkYXRhLT5oZWFkZXIpIHsKIAkJZnByaW50ZihlY2JkYXRhLT5vcHQtPmZpbGUsICIlcyIsIGVjYmRhdGEtPmhlYWRlci0+YnVmKTsKQEAgLTEyMjgsNiArMTI2NCw3IEBACiAJY29uc3QgY2hhciAqbmV3ID0gYjsKIAlzdHJ1Y3Qgc3RyYnVmIG5hbWUgPSBTVFJCVUZfSU5JVDsKIAlpbnQgcGZ4X2xlbmd0aCwgc2Z4X2xlbmd0aDsKKwlpbnQgcGZ4X2FkanVzdF9mb3Jfc2xhc2g7CiAJaW50IGxlbl9hID0gc3RybGVuKGEpOwogCWludCBsZW5fYiA9IHN0cmxlbihiKTsKIAlpbnQgYV9taWRsZW4sIGJfbWlkbGVuOwpAQCAtMTI1NCw3ICsxMjkxLDE4IEBACiAJb2xkID0gYSArIGxlbl9hOwogCW5ldyA9IGIgKyBsZW5fYjsKIAlzZnhfbGVuZ3RoID0gMDsKLQl3aGlsZSAoYSA8PSBvbGQgJiYgYiA8PSBuZXcgJiYgKm9sZCA9PSAqbmV3KSB7CisJLyoKKwkgKiBJZiB0aGVyZSBpcyBhIGNvbW1vbiBwcmVmaXgsIGl0IG11c3QgZW5kIGluIGEgc2xhc2guICBJbgorCSAqIHRoYXQgY2FzZSB3ZSBsZXQgdGhpcyBsb29wIHJ1biAxIGludG8gdGhlIHByZWZpeCB0byBzZWUgdGhlCisJICogc2FtZSBzbGFzaC4KKwkgKgorCSAqIElmIHRoZXJlIGlzIG5vIGNvbW1vbiBwcmVmaXgsIHdlIGNhbm5vdCBkbyB0aGlzIGFzIGl0IHdvdWxkCisJICogdW5kZXJydW4gdGhlIGlucHV0IHN0cmluZ3MuCisJICovCisJcGZ4X2FkanVzdF9mb3Jfc2xhc2ggPSAocGZ4X2xlbmd0aCA/IDEgOiAwKTsKKwl3aGlsZSAoYSArIHBmeF9sZW5ndGggLSBwZnhfYWRqdXN0X2Zvcl9zbGFzaCA8PSBvbGQgJiYKKwkgICAgICAgYiArIHBmeF9sZW5ndGggLSBwZnhfYWRqdXN0X2Zvcl9zbGFzaCA8PSBuZXcgJiYKKwkgICAgICAgKm9sZCA9PSAqbmV3KSB7CiAJCWlmICgqb2xkID09ICcvJykKIAkJCXNmeF9sZW5ndGggPSBsZW5fYSAtIChvbGQgLSBhKTsKIAkJb2xkLS07CkBAIC0xMjk5LDYgKzEzNDcsNyBAQAogCQl1bnNpZ25lZCBpc191bm1lcmdlZDoxOwogCQl1bnNpZ25lZCBpc19iaW5hcnk6MTsKIAkJdW5zaWduZWQgaXNfcmVuYW1lZDoxOworCQl1bnNpZ25lZCBpc19pbnRlcmVzdGluZzoxOwogCQl1aW50bWF4X3QgYWRkZWQsIGRlbGV0ZWQ7CiAJfSAqKmZpbGVzOwogfTsKQEAgLTEzOTcsMTEgKzE0NDYsMTEgQEAKIAogCWlmICghZmlsZXMpIHsKIAkJYXNzZXJ0KGluc2VydGlvbnMgPT0gMCAmJiBkZWxldGlvbnMgPT0gMCk7Ci0JCXJldHVybiBmcHV0cyhfKCIgMCBmaWxlcyBjaGFuZ2VkXG4iKSwgZnApOworCQlyZXR1cm4gZnByaW50ZihmcCwgIiVzXG4iLCAiIDAgZmlsZXMgY2hhbmdlZCIpOwogCX0KIAogCXN0cmJ1Zl9hZGRmKCZzYiwKLQkJICAgIFFfKCIgJWQgZmlsZSBjaGFuZ2VkIiwgIiAlZCBmaWxlcyBjaGFuZ2VkIiwgZmlsZXMpLAorCQkgICAgKGZpbGVzID09IDEpID8gIiAlZCBmaWxlIGNoYW5nZWQiIDogIiAlZCBmaWxlcyBjaGFuZ2VkIiwKIAkJICAgIGZpbGVzKTsKIAogCS8qCkBAIC0xNDE4LDggKzE0NjcsNyBAQAogCQkgKiBkbyBub3QgdHJhbnNsYXRlIGl0LgogCQkgKi8KIAkJc3RyYnVmX2FkZGYoJnNiLAotCQkJICAgIFFfKCIsICVkIGluc2VydGlvbigrKSIsICIsICVkIGluc2VydGlvbnMoKykiLAotCQkJICAgICAgIGluc2VydGlvbnMpLAorCQkJICAgIChpbnNlcnRpb25zID09IDEpID8gIiwgJWQgaW5zZXJ0aW9uKCspIiA6ICIsICVkIGluc2VydGlvbnMoKykiLAogCQkJICAgIGluc2VydGlvbnMpOwogCX0KIApAQCAtMTQyOSw4ICsxNDc3LDcgQEAKIAkJICogZG8gbm90IHRyYW5zbGF0ZSBpdC4KIAkJICovCiAJCXN0cmJ1Zl9hZGRmKCZzYiwKLQkJCSAgICBRXygiLCAlZCBkZWxldGlvbigtKSIsICIsICVkIGRlbGV0aW9ucygtKSIsCi0JCQkgICAgICAgZGVsZXRpb25zKSwKKwkJCSAgICAoZGVsZXRpb25zID09IDEpID8gIiwgJWQgZGVsZXRpb24oLSkiIDogIiwgJWQgZGVsZXRpb25zKC0pIiwKIAkJCSAgICBkZWxldGlvbnMpOwogCX0KIAlzdHJidWZfYWRkY2goJnNiLCAnXG4nKTsKQEAgLTE0NDgsMTYgKzE0OTUsMTEgQEAKIAljb25zdCBjaGFyICpyZXNldCwgKmFkZF9jLCAqZGVsX2M7CiAJY29uc3QgY2hhciAqbGluZV9wcmVmaXggPSAiIjsKIAlpbnQgZXh0cmFfc2hvd24gPSAwOwotCXN0cnVjdCBzdHJidWYgKm1zZyA9IE5VTEw7CiAKIAlpZiAoZGF0YS0+bnIgPT0gMCkKIAkJcmV0dXJuOwogCi0JaWYgKG9wdGlvbnMtPm91dHB1dF9wcmVmaXgpIHsKLQkJbXNnID0gb3B0aW9ucy0+b3V0cHV0X3ByZWZpeChvcHRpb25zLCBvcHRpb25zLT5vdXRwdXRfcHJlZml4X2RhdGEpOwotCQlsaW5lX3ByZWZpeCA9IG1zZy0+YnVmOwotCX0KLQorCWxpbmVfcHJlZml4ID0gZGlmZl9saW5lX3ByZWZpeChvcHRpb25zKTsKIAljb3VudCA9IG9wdGlvbnMtPnN0YXRfY291bnQgPyBvcHRpb25zLT5zdGF0X2NvdW50IDogZGF0YS0+bnI7CiAKIAlyZXNldCA9IGRpZmZfZ2V0X2NvbG9yX29wdChvcHRpb25zLCBESUZGX1JFU0VUKTsKQEAgLTE0NzAsOCArMTUxMiw4IEBACiAJZm9yIChpID0gMDsgKGkgPCBjb3VudCkgJiYgKGkgPCBkYXRhLT5ucik7IGkrKykgewogCQlzdHJ1Y3QgZGlmZnN0YXRfZmlsZSAqZmlsZSA9IGRhdGEtPmZpbGVzW2ldOwogCQl1aW50bWF4X3QgY2hhbmdlID0gZmlsZS0+YWRkZWQgKyBmaWxlLT5kZWxldGVkOwotCQlpZiAoIWRhdGEtPmZpbGVzW2ldLT5pc19yZW5hbWVkICYmCi0JCQkgKGNoYW5nZSA9PSAwKSkgeworCisJCWlmICghZmlsZS0+aXNfaW50ZXJlc3RpbmcgJiYgKGNoYW5nZSA9PSAwKSkgewogCQkJY291bnQrKzsgLyogbm90IHNob3duID09IHJvb20gZm9yIG9uZSBtb3JlICovCiAJCQljb250aW51ZTsKIAkJfQpAQCAtMTQ5OCw3ICsxNTQwLDcgQEAKIAkJaWYgKG1heF9jaGFuZ2UgPCBjaGFuZ2UpCiAJCQltYXhfY2hhbmdlID0gY2hhbmdlOwogCX0KLQljb3VudCA9IGk7IC8qIG1pbihjb3VudCwgZGF0YS0+bnIpICovCisJY291bnQgPSBpOyAvKiB3aGVyZSB3ZSBjYW4gc3RvcCBzY2FubmluZyBpbiBkYXRhLT5maWxlc1tdICovCiAKIAkvKgogCSAqIFdlIGhhdmUgd2lkdGggPSBzdGF0X3dpZHRoIG9yIHRlcm1fY29sdW1ucygpIGNvbHVtbnMgdG90YWwuCkBAIC0xNTIzLDcgKzE1NjUsNyBAQAogCSAqIEJpbmFyeSBmaWxlcyBhcmUgZGlzcGxheWVkIHdpdGggIkJpbiBYWFggLT4gWVlZIGJ5dGVzIgogCSAqIGluc3RlYWQgb2YgdGhlIGNoYW5nZSBjb3VudCBhbmQgZ3JhcGguIFRoaXMgcGFydCBpcyB0cmVhdGVkCiAJICogc2ltaWxhcmx5IHRvIHRoZSBncmFwaCBwYXJ0LCBleGNlcHQgdGhhdCBpdCBpcyBub3QKLQkgKiAic2NhbGVkIi4gSWYgdG90YWwgd2lkdGggaXMgdG9vIHNtYWxsIHRvIGFjY29tb2RhdGUgdGhlCisJICogInNjYWxlZCIuIElmIHRvdGFsIHdpZHRoIGlzIHRvbyBzbWFsbCB0byBhY2NvbW1vZGF0ZSB0aGUKIAkgKiBndWFyYW50ZWVkIG1pbmltdW0gd2lkdGggb2YgdGhlIGZpbGVuYW1lIHBhcnQgYW5kIHRoZQogCSAqIHNlcGFyYXRvcnMgYW5kIHRoaXMgbWVzc2FnZSwgdGhpcyBtZXNzYWdlIHdpbGwgIm92ZXJmbG93IgogCSAqIG1ha2luZyB0aGUgbGluZSBsb25nZXIgdGhhbiB0aGUgbWF4aW11bSB3aWR0aC4KQEAgLTE1ODYsMTYgKzE2MjgsMTUgQEAKIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogCQljb25zdCBjaGFyICpwcmVmaXggPSAiIjsKLQkJY2hhciAqbmFtZSA9IGRhdGEtPmZpbGVzW2ldLT5wcmludF9uYW1lOwotCQl1aW50bWF4X3QgYWRkZWQgPSBkYXRhLT5maWxlc1tpXS0+YWRkZWQ7Ci0JCXVpbnRtYXhfdCBkZWxldGVkID0gZGF0YS0+ZmlsZXNbaV0tPmRlbGV0ZWQ7CisJCXN0cnVjdCBkaWZmc3RhdF9maWxlICpmaWxlID0gZGF0YS0+ZmlsZXNbaV07CisJCWNoYXIgKm5hbWUgPSBmaWxlLT5wcmludF9uYW1lOworCQl1aW50bWF4X3QgYWRkZWQgPSBmaWxlLT5hZGRlZDsKKwkJdWludG1heF90IGRlbGV0ZWQgPSBmaWxlLT5kZWxldGVkOwogCQlpbnQgbmFtZV9sZW47CiAKLQkJaWYgKCFkYXRhLT5maWxlc1tpXS0+aXNfcmVuYW1lZCAmJgotCQkJIChhZGRlZCArIGRlbGV0ZWQgPT0gMCkpIHsKLQkJCXRvdGFsX2ZpbGVzLS07CisJCWlmICghZmlsZS0+aXNfaW50ZXJlc3RpbmcgJiYgKGFkZGVkICsgZGVsZXRlZCA9PSAwKSkKIAkJCWNvbnRpbnVlOwotCQl9CisKIAkJLyoKIAkJICogInNjYWxlIiB0aGUgZmlsZW5hbWUKIAkJICovCkBAIC0xNjExLDcgKzE2NTIsNyBAQAogCQkJCW5hbWUgPSBzbGFzaDsKIAkJfQogCi0JCWlmIChkYXRhLT5maWxlc1tpXS0+aXNfYmluYXJ5KSB7CisJCWlmIChmaWxlLT5pc19iaW5hcnkpIHsKIAkJCWZwcmludGYob3B0aW9ucy0+ZmlsZSwgIiVzIiwgbGluZV9wcmVmaXgpOwogCQkJc2hvd19uYW1lKG9wdGlvbnMtPmZpbGUsIHByZWZpeCwgbmFtZSwgbGVuKTsKIAkJCWZwcmludGYob3B0aW9ucy0+ZmlsZSwgIiAlKnMiLCBudW1iZXJfd2lkdGgsICJCaW4iKTsKQEAgLTE2MjgsNyArMTY2OSw3IEBACiAJCQlmcHJpbnRmKG9wdGlvbnMtPmZpbGUsICJcbiIpOwogCQkJY29udGludWU7CiAJCX0KLQkJZWxzZSBpZiAoZGF0YS0+ZmlsZXNbaV0tPmlzX3VubWVyZ2VkKSB7CisJCWVsc2UgaWYgKGZpbGUtPmlzX3VubWVyZ2VkKSB7CiAJCQlmcHJpbnRmKG9wdGlvbnMtPmZpbGUsICIlcyIsIGxpbmVfcHJlZml4KTsKIAkJCXNob3dfbmFtZShvcHRpb25zLT5maWxlLCBwcmVmaXgsIG5hbWUsIGxlbik7CiAJCQlmcHJpbnRmKG9wdGlvbnMtPmZpbGUsICIgVW5tZXJnZWRcbiIpOwpAQCAtMTY0MCw4ICsxNjgxLDYgQEAKIAkJICovCiAJCWFkZCA9IGFkZGVkOwogCQlkZWwgPSBkZWxldGVkOwotCQlhZGRzICs9IGFkZDsKLQkJZGVscyArPSBkZWw7CiAKIAkJaWYgKGdyYXBoX3dpZHRoIDw9IG1heF9jaGFuZ2UpIHsKIAkJCWludCB0b3RhbCA9IGFkZCArIGRlbDsKQEAgLTE2NjcsMTYgKzE3MDYsMjQgQEAKIAkJc2hvd19ncmFwaChvcHRpb25zLT5maWxlLCAnLScsIGRlbCwgZGVsX2MsIHJlc2V0KTsKIAkJZnByaW50ZihvcHRpb25zLT5maWxlLCAiXG4iKTsKIAl9Ci0JZm9yIChpID0gY291bnQ7IGkgPCBkYXRhLT5ucjsgaSsrKSB7Ci0JCXVpbnRtYXhfdCBhZGRlZCA9IGRhdGEtPmZpbGVzW2ldLT5hZGRlZDsKLQkJdWludG1heF90IGRlbGV0ZWQgPSBkYXRhLT5maWxlc1tpXS0+ZGVsZXRlZDsKLQkJaWYgKCFkYXRhLT5maWxlc1tpXS0+aXNfcmVuYW1lZCAmJgotCQkJIChhZGRlZCArIGRlbGV0ZWQgPT0gMCkpIHsKKworCWZvciAoaSA9IDA7IGkgPCBkYXRhLT5ucjsgaSsrKSB7CisJCXN0cnVjdCBkaWZmc3RhdF9maWxlICpmaWxlID0gZGF0YS0+ZmlsZXNbaV07CisJCXVpbnRtYXhfdCBhZGRlZCA9IGZpbGUtPmFkZGVkOworCQl1aW50bWF4X3QgZGVsZXRlZCA9IGZpbGUtPmRlbGV0ZWQ7CisKKwkJaWYgKGZpbGUtPmlzX3VubWVyZ2VkIHx8CisJCSAgICAoIWZpbGUtPmlzX2ludGVyZXN0aW5nICYmIChhZGRlZCArIGRlbGV0ZWQgPT0gMCkpKSB7CiAJCQl0b3RhbF9maWxlcy0tOwogCQkJY29udGludWU7CiAJCX0KLQkJYWRkcyArPSBhZGRlZDsKLQkJZGVscyArPSBkZWxldGVkOworCisJCWlmICghZmlsZS0+aXNfYmluYXJ5KSB7CisJCQlhZGRzICs9IGFkZGVkOworCQkJZGVscyArPSBkZWxldGVkOworCQl9CisJCWlmIChpIDwgY291bnQpCisJCQljb250aW51ZTsKIAkJaWYgKCFleHRyYV9zaG93bikKIAkJCWZwcmludGYob3B0aW9ucy0+ZmlsZSwgIiVzIC4uLlxuIiwgbGluZV9wcmVmaXgpOwogCQlleHRyYV9zaG93biA9IDE7CkBAIC0xNjk2LDIxICsxNzQzLDE1IEBACiAJCWludCBhZGRlZCA9IGRhdGEtPmZpbGVzW2ldLT5hZGRlZDsKIAkJaW50IGRlbGV0ZWQ9IGRhdGEtPmZpbGVzW2ldLT5kZWxldGVkOwogCi0JCWlmIChkYXRhLT5maWxlc1tpXS0+aXNfdW5tZXJnZWQpCi0JCQljb250aW51ZTsKLQkJaWYgKCFkYXRhLT5maWxlc1tpXS0+aXNfcmVuYW1lZCAmJiAoYWRkZWQgKyBkZWxldGVkID09IDApKSB7CisJCWlmIChkYXRhLT5maWxlc1tpXS0+aXNfdW5tZXJnZWQgfHwKKwkJICAgICghZGF0YS0+ZmlsZXNbaV0tPmlzX2ludGVyZXN0aW5nICYmIChhZGRlZCArIGRlbGV0ZWQgPT0gMCkpKSB7CiAJCQl0b3RhbF9maWxlcy0tOwogCQl9IGVsc2UgaWYgKCFkYXRhLT5maWxlc1tpXS0+aXNfYmluYXJ5KSB7IC8qIGRvbid0IGNvdW50IGJ5dGVzICovCiAJCQlhZGRzICs9IGFkZGVkOwogCQkJZGVscyArPSBkZWxldGVkOwogCQl9CiAJfQotCWlmIChvcHRpb25zLT5vdXRwdXRfcHJlZml4KSB7Ci0JCXN0cnVjdCBzdHJidWYgKm1zZyA9IE5VTEw7Ci0JCW1zZyA9IG9wdGlvbnMtPm91dHB1dF9wcmVmaXgob3B0aW9ucywKLQkJCQlvcHRpb25zLT5vdXRwdXRfcHJlZml4X2RhdGEpOwotCQlmcHJpbnRmKG9wdGlvbnMtPmZpbGUsICIlcyIsIG1zZy0+YnVmKTsKLQl9CisJZnByaW50ZihvcHRpb25zLT5maWxlLCAiJXMiLCBkaWZmX2xpbmVfcHJlZml4KG9wdGlvbnMpKTsKIAlwcmludF9zdGF0X3N1bW1hcnkob3B0aW9ucy0+ZmlsZSwgdG90YWxfZmlsZXMsIGFkZHMsIGRlbHMpOwogfQogCkBAIC0xNzI0LDEyICsxNzY1LDcgQEAKIAlmb3IgKGkgPSAwOyBpIDwgZGF0YS0+bnI7IGkrKykgewogCQlzdHJ1Y3QgZGlmZnN0YXRfZmlsZSAqZmlsZSA9IGRhdGEtPmZpbGVzW2ldOwogCi0JCWlmIChvcHRpb25zLT5vdXRwdXRfcHJlZml4KSB7Ci0JCQlzdHJ1Y3Qgc3RyYnVmICptc2cgPSBOVUxMOwotCQkJbXNnID0gb3B0aW9ucy0+b3V0cHV0X3ByZWZpeChvcHRpb25zLAotCQkJCQlvcHRpb25zLT5vdXRwdXRfcHJlZml4X2RhdGEpOwotCQkJZnByaW50ZihvcHRpb25zLT5maWxlLCAiJXMiLCBtc2ctPmJ1Zik7Ci0JCX0KKwkJZnByaW50ZihvcHRpb25zLT5maWxlLCAiJXMiLCBkaWZmX2xpbmVfcHJlZml4KG9wdGlvbnMpKTsKIAogCQlpZiAoZmlsZS0+aXNfYmluYXJ5KQogCQkJZnByaW50ZihvcHRpb25zLT5maWxlLCAiLVx0LVx0Iik7CkBAIC0xNzcxLDEzICsxODA3LDcgQEAKIHsKIAl1bnNpZ25lZCBsb25nIHRoaXNfZGlyID0gMDsKIAl1bnNpZ25lZCBpbnQgc291cmNlcyA9IDA7Ci0JY29uc3QgY2hhciAqbGluZV9wcmVmaXggPSAiIjsKLQlzdHJ1Y3Qgc3RyYnVmICptc2cgPSBOVUxMOwotCi0JaWYgKG9wdC0+b3V0cHV0X3ByZWZpeCkgewotCQltc2cgPSBvcHQtPm91dHB1dF9wcmVmaXgob3B0LCBvcHQtPm91dHB1dF9wcmVmaXhfZGF0YSk7Ci0JCWxpbmVfcHJlZml4ID0gbXNnLT5idWY7Ci0JfQorCWNvbnN0IGNoYXIgKmxpbmVfcHJlZml4ID0gZGlmZl9saW5lX3ByZWZpeChvcHQpOwogCiAJd2hpbGUgKGRpci0+bnIpIHsKIAkJc3RydWN0IGRpcnN0YXRfZmlsZSAqZiA9IGRpci0+ZmlsZXM7CkBAIC0yMDI3LDE1ICsyMDU3LDEwIEBACiAJY29uc3QgY2hhciAqcmVzZXQgPSBkaWZmX2dldF9jb2xvcihkYXRhLT5vLT51c2VfY29sb3IsIERJRkZfUkVTRVQpOwogCWNvbnN0IGNoYXIgKnNldCA9IGRpZmZfZ2V0X2NvbG9yKGRhdGEtPm8tPnVzZV9jb2xvciwgRElGRl9GSUxFX05FVyk7CiAJY2hhciAqZXJyOwotCWNoYXIgKmxpbmVfcHJlZml4ID0gIiI7Ci0Jc3RydWN0IHN0cmJ1ZiAqbXNnYnVmOworCWNvbnN0IGNoYXIgKmxpbmVfcHJlZml4OwogCiAJYXNzZXJ0KGRhdGEtPm8pOwotCWlmIChkYXRhLT5vLT5vdXRwdXRfcHJlZml4KSB7Ci0JCW1zZ2J1ZiA9IGRhdGEtPm8tPm91dHB1dF9wcmVmaXgoZGF0YS0+bywKLQkJCWRhdGEtPm8tPm91dHB1dF9wcmVmaXhfZGF0YSk7Ci0JCWxpbmVfcHJlZml4ID0gbXNnYnVmLT5idWY7Ci0JfQorCWxpbmVfcHJlZml4ID0gZGlmZl9saW5lX3ByZWZpeChkYXRhLT5vKTsKIAogCWlmIChsaW5lWzBdID09ICcrJykgewogCQl1bnNpZ25lZCBiYWQ7CkBAIC0yMDkyLDcgKzIxMTcsOCBAQAogCXJldHVybiBkZWZsYXRlZDsKIH0KIAotc3RhdGljIHZvaWQgZW1pdF9iaW5hcnlfZGlmZl9ib2R5KEZJTEUgKmZpbGUsIG1tZmlsZV90ICpvbmUsIG1tZmlsZV90ICp0d28sIGNoYXIgKnByZWZpeCkKK3N0YXRpYyB2b2lkIGVtaXRfYmluYXJ5X2RpZmZfYm9keShGSUxFICpmaWxlLCBtbWZpbGVfdCAqb25lLCBtbWZpbGVfdCAqdHdvLAorCQkJCSAgY29uc3QgY2hhciAqcHJlZml4KQogewogCXZvaWQgKmNwOwogCXZvaWQgKmRlbHRhOwpAQCAtMjE1Myw3ICsyMTc5LDggQEAKIAlmcmVlKGRhdGEpOwogfQogCi1zdGF0aWMgdm9pZCBlbWl0X2JpbmFyeV9kaWZmKEZJTEUgKmZpbGUsIG1tZmlsZV90ICpvbmUsIG1tZmlsZV90ICp0d28sIGNoYXIgKnByZWZpeCkKK3N0YXRpYyB2b2lkIGVtaXRfYmluYXJ5X2RpZmYoRklMRSAqZmlsZSwgbW1maWxlX3QgKm9uZSwgbW1maWxlX3QgKnR3bywKKwkJCSAgICAgY29uc3QgY2hhciAqcHJlZml4KQogewogCWZwcmludGYoZmlsZSwgIiVzR0lUIGJpbmFyeSBwYXRjaFxuIiwgcHJlZml4KTsKIAllbWl0X2JpbmFyeV9kaWZmX2JvZHkoZmlsZSwgb25lLCB0d28sIHByZWZpeCk7CkBAIC0yMjE0LDE5ICsyMjQxLDEzIEBACiAJbW1maWxlX3QgbWYxLCBtZjI7CiAJY29uc3QgY2hhciAqbGJsWzJdOwogCWNoYXIgKmFfb25lLCAqYl90d287Ci0JY29uc3QgY2hhciAqc2V0ID0gZGlmZl9nZXRfY29sb3Jfb3B0KG8sIERJRkZfTUVUQUlORk8pOworCWNvbnN0IGNoYXIgKm1ldGEgPSBkaWZmX2dldF9jb2xvcl9vcHQobywgRElGRl9NRVRBSU5GTyk7CiAJY29uc3QgY2hhciAqcmVzZXQgPSBkaWZmX2dldF9jb2xvcl9vcHQobywgRElGRl9SRVNFVCk7CiAJY29uc3QgY2hhciAqYV9wcmVmaXgsICpiX3ByZWZpeDsKIAlzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICp0ZXh0Y29udl9vbmUgPSBOVUxMOwogCXN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKnRleHRjb252X3R3byA9IE5VTEw7CiAJc3RydWN0IHN0cmJ1ZiBoZWFkZXIgPSBTVFJCVUZfSU5JVDsKLQlzdHJ1Y3Qgc3RyYnVmICptc2didWY7Ci0JY2hhciAqbGluZV9wcmVmaXggPSAiIjsKLQotCWlmIChvLT5vdXRwdXRfcHJlZml4KSB7Ci0JCW1zZ2J1ZiA9IG8tPm91dHB1dF9wcmVmaXgobywgby0+b3V0cHV0X3ByZWZpeF9kYXRhKTsKLQkJbGluZV9wcmVmaXggPSBtc2didWYtPmJ1ZjsKLQl9CisJY29uc3QgY2hhciAqbGluZV9wcmVmaXggPSBkaWZmX2xpbmVfcHJlZml4KG8pOwogCiAJaWYgKERJRkZfT1BUX1RTVChvLCBTVUJNT0RVTEVfTE9HKSAmJgogCQkJKCFvbmUtPm1vZGUgfHwgU19JU0dJVExJTksob25lLT5tb2RlKSkgJiYKQEAgLTIyMzQsOCArMjI1NSw5IEBACiAJCWNvbnN0IGNoYXIgKmRlbCA9IGRpZmZfZ2V0X2NvbG9yX29wdChvLCBESUZGX0ZJTEVfT0xEKTsKIAkJY29uc3QgY2hhciAqYWRkID0gZGlmZl9nZXRfY29sb3Jfb3B0KG8sIERJRkZfRklMRV9ORVcpOwogCQlzaG93X3N1Ym1vZHVsZV9zdW1tYXJ5KG8tPmZpbGUsIG9uZSA/IG9uZS0+cGF0aCA6IHR3by0+cGF0aCwKKwkJCQlsaW5lX3ByZWZpeCwKIAkJCQlvbmUtPnNoYTEsIHR3by0+c2hhMSwgdHdvLT5kaXJ0eV9zdWJtb2R1bGUsCi0JCQkJZGVsLCBhZGQsIHJlc2V0KTsKKwkJCQltZXRhLCBkZWwsIGFkZCwgcmVzZXQpOwogCQlyZXR1cm47CiAJfQogCkBAIC0yMjYxLDI0ICsyMjgzLDI0IEBACiAJYl90d28gPSBxdW90ZV90d28oYl9wcmVmaXgsIG5hbWVfYiArICgqbmFtZV9iID09ICcvJykpOwogCWxibFswXSA9IERJRkZfRklMRV9WQUxJRChvbmUpID8gYV9vbmUgOiAiL2Rldi9udWxsIjsKIAlsYmxbMV0gPSBESUZGX0ZJTEVfVkFMSUQodHdvKSA/IGJfdHdvIDogIi9kZXYvbnVsbCI7Ci0Jc3RyYnVmX2FkZGYoJmhlYWRlciwgIiVzJXNkaWZmIC0tZ2l0ICVzICVzJXNcbiIsIGxpbmVfcHJlZml4LCBzZXQsIGFfb25lLCBiX3R3bywgcmVzZXQpOworCXN0cmJ1Zl9hZGRmKCZoZWFkZXIsICIlcyVzZGlmZiAtLWdpdCAlcyAlcyVzXG4iLCBsaW5lX3ByZWZpeCwgbWV0YSwgYV9vbmUsIGJfdHdvLCByZXNldCk7CiAJaWYgKGxibFswXVswXSA9PSAnLycpIHsKIAkJLyogL2Rldi9udWxsICovCi0JCXN0cmJ1Zl9hZGRmKCZoZWFkZXIsICIlcyVzbmV3IGZpbGUgbW9kZSAlMDZvJXNcbiIsIGxpbmVfcHJlZml4LCBzZXQsIHR3by0+bW9kZSwgcmVzZXQpOworCQlzdHJidWZfYWRkZigmaGVhZGVyLCAiJXMlc25ldyBmaWxlIG1vZGUgJTA2byVzXG4iLCBsaW5lX3ByZWZpeCwgbWV0YSwgdHdvLT5tb2RlLCByZXNldCk7CiAJCWlmICh4ZnJtX21zZykKIAkJCXN0cmJ1Zl9hZGRzdHIoJmhlYWRlciwgeGZybV9tc2cpOwogCQltdXN0X3Nob3dfaGVhZGVyID0gMTsKIAl9CiAJZWxzZSBpZiAobGJsWzFdWzBdID09ICcvJykgewotCQlzdHJidWZfYWRkZigmaGVhZGVyLCAiJXMlc2RlbGV0ZWQgZmlsZSBtb2RlICUwNm8lc1xuIiwgbGluZV9wcmVmaXgsIHNldCwgb25lLT5tb2RlLCByZXNldCk7CisJCXN0cmJ1Zl9hZGRmKCZoZWFkZXIsICIlcyVzZGVsZXRlZCBmaWxlIG1vZGUgJTA2byVzXG4iLCBsaW5lX3ByZWZpeCwgbWV0YSwgb25lLT5tb2RlLCByZXNldCk7CiAJCWlmICh4ZnJtX21zZykKIAkJCXN0cmJ1Zl9hZGRzdHIoJmhlYWRlciwgeGZybV9tc2cpOwogCQltdXN0X3Nob3dfaGVhZGVyID0gMTsKIAl9CiAJZWxzZSB7CiAJCWlmIChvbmUtPm1vZGUgIT0gdHdvLT5tb2RlKSB7Ci0JCQlzdHJidWZfYWRkZigmaGVhZGVyLCAiJXMlc29sZCBtb2RlICUwNm8lc1xuIiwgbGluZV9wcmVmaXgsIHNldCwgb25lLT5tb2RlLCByZXNldCk7Ci0JCQlzdHJidWZfYWRkZigmaGVhZGVyLCAiJXMlc25ldyBtb2RlICUwNm8lc1xuIiwgbGluZV9wcmVmaXgsIHNldCwgdHdvLT5tb2RlLCByZXNldCk7CisJCQlzdHJidWZfYWRkZigmaGVhZGVyLCAiJXMlc29sZCBtb2RlICUwNm8lc1xuIiwgbGluZV9wcmVmaXgsIG1ldGEsIG9uZS0+bW9kZSwgcmVzZXQpOworCQkJc3RyYnVmX2FkZGYoJmhlYWRlciwgIiVzJXNuZXcgbW9kZSAlMDZvJXNcbiIsIGxpbmVfcHJlZml4LCBtZXRhLCB0d28tPm1vZGUsIHJlc2V0KTsKIAkJCW11c3Rfc2hvd19oZWFkZXIgPSAxOwogCQl9CiAJCWlmICh4ZnJtX21zZykKQEAgLTIzOTgsMTMgKzI0MjAsMjAgQEAKIAkJCSAgICAgc3RydWN0IGRpZmZfZmlsZXNwZWMgKnR3bywKIAkJCSAgICAgc3RydWN0IGRpZmZzdGF0X3QgKmRpZmZzdGF0LAogCQkJICAgICBzdHJ1Y3QgZGlmZl9vcHRpb25zICpvLAotCQkJICAgICBpbnQgY29tcGxldGVfcmV3cml0ZSkKKwkJCSAgICAgc3RydWN0IGRpZmZfZmlsZXBhaXIgKnApCiB7CiAJbW1maWxlX3QgbWYxLCBtZjI7CiAJc3RydWN0IGRpZmZzdGF0X2ZpbGUgKmRhdGE7CiAJaW50IHNhbWVfY29udGVudHM7CisJaW50IGNvbXBsZXRlX3Jld3JpdGUgPSAwOworCisJaWYgKCFESUZGX1BBSVJfVU5NRVJHRUQocCkpIHsKKwkJaWYgKHAtPnN0YXR1cyA9PSBESUZGX1NUQVRVU19NT0RJRklFRCAmJiBwLT5zY29yZSkKKwkJCWNvbXBsZXRlX3Jld3JpdGUgPSAxOworCX0KIAogCWRhdGEgPSBkaWZmc3RhdF9hZGQoZGlmZnN0YXQsIG5hbWVfYSwgbmFtZV9iKTsKKwlkYXRhLT5pc19pbnRlcmVzdGluZyA9IHAtPnN0YXR1cyAhPSBESUZGX1NUQVRVU19VTktOT1dOOwogCiAJaWYgKCFvbmUgfHwgIXR3bykgewogCQlkYXRhLT5pc191bm1lcmdlZCA9IDE7CkBAIC0yNTQxLDEyICsyNTcwLDEyIEBACiB9CiAKIHZvaWQgZmlsbF9maWxlc3BlYyhzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqc3BlYywgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKLQkJICAgdW5zaWduZWQgc2hvcnQgbW9kZSkKKwkJICAgaW50IHNoYTFfdmFsaWQsIHVuc2lnbmVkIHNob3J0IG1vZGUpCiB7CiAJaWYgKG1vZGUpIHsKIAkJc3BlYy0+bW9kZSA9IGNhbm9uX21vZGUobW9kZSk7CiAJCWhhc2hjcHkoc3BlYy0+c2hhMSwgc2hhMSk7Ci0JCXNwZWMtPnNoYTFfdmFsaWQgPSAhaXNfbnVsbF9zaGExKHNoYTEpOworCQlzcGVjLT5zaGExX3ZhbGlkID0gc2hhMV92YWxpZDsKIAl9CiB9CiAKQEAgLTI2MTksMjIgKzI2NDgsNiBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHBvcHVsYXRlX2Zyb21fc3RkaW4oc3RydWN0IGRpZmZfZmlsZXNwZWMgKnMpCi17Ci0Jc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKLQlzaXplX3Qgc2l6ZSA9IDA7Ci0KLQlpZiAoc3RyYnVmX3JlYWQoJmJ1ZiwgMCwgMCkgPCAwKQotCQlyZXR1cm4gZXJyb3IoImVycm9yIHdoaWxlIHJlYWRpbmcgZnJvbSBzdGRpbiAlcyIsCi0JCQkJICAgICBzdHJlcnJvcihlcnJubykpOwotCi0Jcy0+c2hvdWxkX211bm1hcCA9IDA7Ci0Jcy0+ZGF0YSA9IHN0cmJ1Zl9kZXRhY2goJmJ1ZiwgJnNpemUpOwotCXMtPnNpemUgPSBzaXplOwotCXMtPnNob3VsZF9mcmVlID0gMTsKLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIGludCBkaWZmX3BvcHVsYXRlX2dpdGxpbmsoc3RydWN0IGRpZmZfZmlsZXNwZWMgKnMsIGludCBzaXplX29ubHkpCiB7CiAJaW50IGxlbjsKQEAgLTI2ODQsOSArMjY5Nyw2IEBACiAJCXN0cnVjdCBzdGF0IHN0OwogCQlpbnQgZmQ7CiAKLQkJaWYgKCFzdHJjbXAocy0+cGF0aCwgIi0iKSkKLQkJCXJldHVybiBwb3B1bGF0ZV9mcm9tX3N0ZGluKHMpOwotCiAJCWlmIChsc3RhdChzLT5wYXRoLCAmc3QpIDwgMCkgewogCQkJaWYgKGVycm5vID09IEVOT0VOVCkgewogCQkJZXJyX2VtcHR5OgpAQCAtMjkzNywxNCArMjk0Nyw5IEBACiB7CiAJY29uc3QgY2hhciAqc2V0ID0gZGlmZl9nZXRfY29sb3IodXNlX2NvbG9yLCBESUZGX01FVEFJTkZPKTsKIAljb25zdCBjaGFyICpyZXNldCA9IGRpZmZfZ2V0X2NvbG9yKHVzZV9jb2xvciwgRElGRl9SRVNFVCk7Ci0Jc3RydWN0IHN0cmJ1ZiAqbXNnYnVmOwotCWNoYXIgKmxpbmVfcHJlZml4ID0gIiI7CisJY29uc3QgY2hhciAqbGluZV9wcmVmaXggPSBkaWZmX2xpbmVfcHJlZml4KG8pOwogCiAJKm11c3Rfc2hvd19oZWFkZXIgPSAxOwotCWlmIChvLT5vdXRwdXRfcHJlZml4KSB7Ci0JCW1zZ2J1ZiA9IG8tPm91dHB1dF9wcmVmaXgobywgby0+b3V0cHV0X3ByZWZpeF9kYXRhKTsKLQkJbGluZV9wcmVmaXggPSBtc2didWYtPmJ1ZjsKLQl9CiAJc3RyYnVmX2luaXQobXNnLCBQQVRIX01BWCAqIDIgKyAzMDApOwogCXN3aXRjaCAocC0+c3RhdHVzKSB7CiAJY2FzZSBESUZGX1NUQVRVU19DT1BJRUQ6CkBAIC0zMDExLDkgKzMwMTYsOCBAQAogCWludCBjb21wbGV0ZV9yZXdyaXRlID0gKHAtPnN0YXR1cyA9PSBESUZGX1NUQVRVU19NT0RJRklFRCkgJiYgcC0+c2NvcmU7CiAJaW50IG11c3Rfc2hvd19oZWFkZXIgPSAwOwogCi0JaWYgKCFESUZGX09QVF9UU1QobywgQUxMT1dfRVhURVJOQUwpKQotCQlwZ20gPSBOVUxMOwotCWVsc2UgeworCisJaWYgKERJRkZfT1BUX1RTVChvLCBBTExPV19FWFRFUk5BTCkpIHsKIAkJc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqZHJ2ID0gdXNlcmRpZmZfZmluZF9ieV9wYXRoKGF0dHJfcGF0aCk7CiAJCWlmIChkcnYgJiYgZHJ2LT5leHRlcm5hbCkKIAkJCXBnbSA9IGRydi0+ZXh0ZXJuYWw7CkBAIC0zMDQ4LDcgKzMwNTIsNyBAQAogCWlmIChESUZGX0ZJTEVfVkFMSUQob25lKSkgewogCQlpZiAoIW9uZS0+c2hhMV92YWxpZCkgewogCQkJc3RydWN0IHN0YXQgc3Q7Ci0JCQlpZiAoIXN0cmNtcChvbmUtPnBhdGgsICItIikpIHsKKwkJCWlmIChvbmUtPmlzX3N0ZGluKSB7CiAJCQkJaGFzaGNweShvbmUtPnNoYTEsIG51bGxfc2hhMSk7CiAJCQkJcmV0dXJuOwogCQkJfQpAQCAtMzA5Myw2ICszMDk3LDkgQEAKIAlpZiAoby0+cHJlZml4X2xlbmd0aCkKIAkJc3RyaXBfcHJlZml4KG8tPnByZWZpeF9sZW5ndGgsICZuYW1lLCAmb3RoZXIpOwogCisJaWYgKCFESUZGX09QVF9UU1QobywgQUxMT1dfRVhURVJOQUwpKQorCQlwZ20gPSBOVUxMOworCiAJaWYgKERJRkZfUEFJUl9VTk1FUkdFRChwKSkgewogCQlydW5fZGlmZl9jbWQocGdtLCBuYW1lLCBOVUxMLCBhdHRyX3BhdGgsCiAJCQkgICAgIE5VTEwsIE5VTEwsIE5VTEwsIG8sIHApOwpAQCAtMzEzMiwxMSArMzEzOSwxMCBAQAogewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJY29uc3QgY2hhciAqb3RoZXI7Ci0JaW50IGNvbXBsZXRlX3Jld3JpdGUgPSAwOwogCiAJaWYgKERJRkZfUEFJUl9VTk1FUkdFRChwKSkgewogCQkvKiB1bm1lcmdlZCAqLwotCQlidWlsdGluX2RpZmZzdGF0KHAtPm9uZS0+cGF0aCwgTlVMTCwgTlVMTCwgTlVMTCwgZGlmZnN0YXQsIG8sIDApOworCQlidWlsdGluX2RpZmZzdGF0KHAtPm9uZS0+cGF0aCwgTlVMTCwgTlVMTCwgTlVMTCwgZGlmZnN0YXQsIG8sIHApOwogCQlyZXR1cm47CiAJfQogCkBAIC0zMTQ5LDkgKzMxNTUsNyBAQAogCWRpZmZfZmlsbF9zaGExX2luZm8ocC0+b25lKTsKIAlkaWZmX2ZpbGxfc2hhMV9pbmZvKHAtPnR3byk7CiAKLQlpZiAocC0+c3RhdHVzID09IERJRkZfU1RBVFVTX01PRElGSUVEICYmIHAtPnNjb3JlKQotCQljb21wbGV0ZV9yZXdyaXRlID0gMTsKLQlidWlsdGluX2RpZmZzdGF0KG5hbWUsIG90aGVyLCBwLT5vbmUsIHAtPnR3bywgZGlmZnN0YXQsIG8sIGNvbXBsZXRlX3Jld3JpdGUpOworCWJ1aWx0aW5fZGlmZnN0YXQobmFtZSwgb3RoZXIsIHAtPm9uZSwgcC0+dHdvLCBkaWZmc3RhdCwgbywgcCk7CiB9CiAKIHN0YXRpYyB2b2lkIHJ1bl9jaGVja2RpZmYoc3RydWN0IGRpZmZfZmlsZXBhaXIgKnAsIHN0cnVjdCBkaWZmX29wdGlvbnMgKm8pCkBAIC0zMTg4LDEzICszMTkyLDE0IEBACiAJb3B0aW9ucy0+YnJlYWtfb3B0ID0gLTE7CiAJb3B0aW9ucy0+cmVuYW1lX2xpbWl0ID0gLTE7CiAJb3B0aW9ucy0+ZGlyc3RhdF9wZXJtaWxsZSA9IGRpZmZfZGlyc3RhdF9wZXJtaWxsZV9kZWZhdWx0OwotCW9wdGlvbnMtPmNvbnRleHQgPSAzOworCW9wdGlvbnMtPmNvbnRleHQgPSBkaWZmX2NvbnRleHRfZGVmYXVsdDsKIAlESUZGX09QVF9TRVQob3B0aW9ucywgUkVOQU1FX0VNUFRZKTsKIAogCW9wdGlvbnMtPmNoYW5nZSA9IGRpZmZfY2hhbmdlOwogCW9wdGlvbnMtPmFkZF9yZW1vdmUgPSBkaWZmX2FkZHJlbW92ZTsKIAlvcHRpb25zLT51c2VfY29sb3IgPSBkaWZmX3VzZV9jb2xvcl9kZWZhdWx0OwogCW9wdGlvbnMtPmRldGVjdF9yZW5hbWUgPSBkaWZmX2RldGVjdF9yZW5hbWVfZGVmYXVsdDsKKwlvcHRpb25zLT54ZGxfb3B0cyB8PSBkaWZmX2FsZ29yaXRobTsKIAogCWlmIChkaWZmX25vX3ByZWZpeCkgewogCQlvcHRpb25zLT5hX3ByZWZpeCA9IG9wdGlvbnMtPmJfcHJlZml4ID0gIiI7CkBAIC0zMjA0LDcgKzMyMDksNyBAQAogCX0KIH0KIAotaW50IGRpZmZfc2V0dXBfZG9uZShzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHRpb25zKQordm9pZCBkaWZmX3NldHVwX2RvbmUoc3RydWN0IGRpZmZfb3B0aW9ucyAqb3B0aW9ucykKIHsKIAlpbnQgY291bnQgPSAwOwogCkBAIC0zMzAzLDggKzMzMDgsNiBAQAogCQlvcHRpb25zLT5vdXRwdXRfZm9ybWF0ID0gRElGRl9GT1JNQVRfTk9fT1VUUFVUOwogCQlESUZGX09QVF9TRVQob3B0aW9ucywgRVhJVF9XSVRIX1NUQVRVUyk7CiAJfQotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgb3B0X2FyZyhjb25zdCBjaGFyICphcmcsIGludCBhcmdfc2hvcnQsIGNvbnN0IGNoYXIgKmFyZ19sb25nLCBpbnQgKnZhbCkKQEAgLTM0ODYsNiArMzQ4OSwxNCBAQAogCXJldHVybiAxOwogfQogCitzdGF0aWMgaW50IHBhcnNlX3N1Ym1vZHVsZV9vcHQoc3RydWN0IGRpZmZfb3B0aW9ucyAqb3B0aW9ucywgY29uc3QgY2hhciAqdmFsdWUpCit7CisJaWYgKHBhcnNlX3N1Ym1vZHVsZV9wYXJhbXMob3B0aW9ucywgdmFsdWUpKQorCQlkaWUoXygiRmFpbGVkIHRvIHBhcnNlIC0tc3VibW9kdWxlIG9wdGlvbiBwYXJhbWV0ZXI6ICclcyciKSwKKwkJCXZhbHVlKTsKKwlyZXR1cm4gMTsKK30KKwogaW50IGRpZmZfb3B0X3BhcnNlKHN0cnVjdCBkaWZmX29wdGlvbnMgKm9wdGlvbnMsIGNvbnN0IGNoYXIgKiphdiwgaW50IGFjKQogewogCWNvbnN0IGNoYXIgKmFyZyA9IGF2WzBdOwpAQCAtMzU4Niw2ICszNTk3LDE3IEBACiAJCW9wdGlvbnMtPnhkbF9vcHRzID0gRElGRl9XSVRIX0FMRyhvcHRpb25zLCBQQVRJRU5DRV9ESUZGKTsKIAllbHNlIGlmICghc3RyY21wKGFyZywgIi0taGlzdG9ncmFtIikpCiAJCW9wdGlvbnMtPnhkbF9vcHRzID0gRElGRl9XSVRIX0FMRyhvcHRpb25zLCBISVNUT0dSQU1fRElGRik7CisJZWxzZSBpZiAoKGFyZ2NvdW50ID0gcGFyc2VfbG9uZ19vcHQoImRpZmYtYWxnb3JpdGhtIiwgYXYsICZvcHRhcmcpKSkgeworCQlsb25nIHZhbHVlID0gcGFyc2VfYWxnb3JpdGhtX3ZhbHVlKG9wdGFyZyk7CisJCWlmICh2YWx1ZSA8IDApCisJCQlyZXR1cm4gZXJyb3IoIm9wdGlvbiBkaWZmLWFsZ29yaXRobSBhY2NlcHRzIFwibXllcnNcIiwgIgorCQkJCSAgICAgIlwibWluaW1hbFwiLCBcInBhdGllbmNlXCIgYW5kIFwiaGlzdG9ncmFtXCIiKTsKKwkJLyogY2xlYXIgb3V0IHByZXZpb3VzIHNldHRpbmdzICovCisJCURJRkZfWERMX0NMUihvcHRpb25zLCBORUVEX01JTklNQUwpOworCQlvcHRpb25zLT54ZGxfb3B0cyAmPSB+WERGX0RJRkZfQUxHT1JJVEhNX01BU0s7CisJCW9wdGlvbnMtPnhkbF9vcHRzIHw9IHZhbHVlOworCQlyZXR1cm4gYXJnY291bnQ7CisJfQogCiAJLyogZmxhZ3Mgb3B0aW9ucyAqLwogCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1iaW5hcnkiKSkgewpAQCAtMzYwMiw2ICszNjI0LDggQEAKIAkJRElGRl9PUFRfU0VUKG9wdGlvbnMsIEZJTkRfQ09QSUVTX0hBUkRFUik7CiAJZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLWZvbGxvdyIpKQogCQlESUZGX09QVF9TRVQob3B0aW9ucywgRk9MTE9XX1JFTkFNRVMpOworCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1uby1mb2xsb3ciKSkKKwkJRElGRl9PUFRfQ0xSKG9wdGlvbnMsIEZPTExPV19SRU5BTUVTKTsKIAllbHNlIGlmICghc3RyY21wKGFyZywgIi0tY29sb3IiKSkKIAkJb3B0aW9ucy0+dXNlX2NvbG9yID0gMTsKIAllbHNlIGlmICghcHJlZml4Y21wKGFyZywgIi0tY29sb3I9IikpIHsKQEAgLTM2NjYsMTAgKzM2OTAsOCBAQAogCQloYW5kbGVfaWdub3JlX3N1Ym1vZHVsZXNfYXJnKG9wdGlvbnMsIGFyZyArIDIwKTsKIAl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1zdWJtb2R1bGUiKSkKIAkJRElGRl9PUFRfU0VUKG9wdGlvbnMsIFNVQk1PRFVMRV9MT0cpOwotCWVsc2UgaWYgKCFwcmVmaXhjbXAoYXJnLCAiLS1zdWJtb2R1bGU9IikpIHsKLQkJaWYgKCFzdHJjbXAoYXJnICsgMTIsICJsb2ciKSkKLQkJCURJRkZfT1BUX1NFVChvcHRpb25zLCBTVUJNT0RVTEVfTE9HKTsKLQl9CisJZWxzZSBpZiAoIXByZWZpeGNtcChhcmcsICItLXN1Ym1vZHVsZT0iKSkKKwkJcmV0dXJuIHBhcnNlX3N1Ym1vZHVsZV9vcHQob3B0aW9ucywgYXJnICsgMTIpOwogCiAJLyogbWlzYyBvcHRpb25zICovCiAJZWxzZSBpZiAoIXN0cmNtcChhcmcsICIteiIpKQpAQCAtMzg3NiwxMiArMzg5OCw4IEBACiB7CiAJaW50IGxpbmVfdGVybWluYXRpb24gPSBvcHQtPmxpbmVfdGVybWluYXRpb247CiAJaW50IGludGVyX25hbWVfdGVybWluYXRpb24gPSBsaW5lX3Rlcm1pbmF0aW9uID8gJ1x0JyA6ICdcMCc7Ci0JaWYgKG9wdC0+b3V0cHV0X3ByZWZpeCkgewotCQlzdHJ1Y3Qgc3RyYnVmICptc2cgPSBOVUxMOwotCQltc2cgPSBvcHQtPm91dHB1dF9wcmVmaXgob3B0LCBvcHQtPm91dHB1dF9wcmVmaXhfZGF0YSk7Ci0JCWZwcmludGYob3B0LT5maWxlLCAiJXMiLCBtc2ctPmJ1Zik7Ci0JfQogCisJZnByaW50ZihvcHQtPmZpbGUsICIlcyIsIGRpZmZfbGluZV9wcmVmaXgob3B0KSk7CiAJaWYgKCEob3B0LT5vdXRwdXRfZm9ybWF0ICYgRElGRl9GT1JNQVRfTkFNRV9TVEFUVVMpKSB7CiAJCWZwcmludGYob3B0LT5maWxlLCAiOiUwNm8gJTA2byAlcyAiLCBwLT5vbmUtPm1vZGUsIHAtPnR3by0+bW9kZSwKIAkJCWRpZmZfdW5pcXVlX2FiYnJldihwLT5vbmUtPnNoYTEsIG9wdC0+YWJicmV2KSk7CkBAIC00MTUxLDEyICs0MTY5LDcgQEAKIHN0YXRpYyB2b2lkIGRpZmZfc3VtbWFyeShzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHQsIHN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwKQogewogCUZJTEUgKmZpbGUgPSBvcHQtPmZpbGU7Ci0JY2hhciAqbGluZV9wcmVmaXggPSAiIjsKLQotCWlmIChvcHQtPm91dHB1dF9wcmVmaXgpIHsKLQkJc3RydWN0IHN0cmJ1ZiAqYnVmID0gb3B0LT5vdXRwdXRfcHJlZml4KG9wdCwgb3B0LT5vdXRwdXRfcHJlZml4X2RhdGEpOwotCQlsaW5lX3ByZWZpeCA9IGJ1Zi0+YnVmOwotCX0KKwljb25zdCBjaGFyICpsaW5lX3ByZWZpeCA9IGRpZmZfbGluZV9wcmVmaXgob3B0KTsKIAogCXN3aXRjaChwLT5zdGF0dXMpIHsKIAljYXNlIERJRkZfU1RBVFVTX0RFTEVURUQ6CkBAIC00NDU3LDEzICs0NDcwLDkgQEAKIAogCWlmIChvdXRwdXRfZm9ybWF0ICYgRElGRl9GT1JNQVRfUEFUQ0gpIHsKIAkJaWYgKHNlcGFyYXRvcikgewotCQkJaWYgKG9wdGlvbnMtPm91dHB1dF9wcmVmaXgpIHsKLQkJCQlzdHJ1Y3Qgc3RyYnVmICptc2cgPSBOVUxMOwotCQkJCW1zZyA9IG9wdGlvbnMtPm91dHB1dF9wcmVmaXgob3B0aW9ucywKLQkJCQkJb3B0aW9ucy0+b3V0cHV0X3ByZWZpeF9kYXRhKTsKLQkJCQlmd3JpdGUobXNnLT5idWYsIG1zZy0+bGVuLCAxLCBzdGRvdXQpOwotCQkJfQotCQkJcHV0YyhvcHRpb25zLT5saW5lX3Rlcm1pbmF0aW9uLCBvcHRpb25zLT5maWxlKTsKKwkJCWZwcmludGYob3B0aW9ucy0+ZmlsZSwgIiVzJWMiLAorCQkJCWRpZmZfbGluZV9wcmVmaXgob3B0aW9ucyksCisJCQkJb3B0aW9ucy0+bGluZV90ZXJtaW5hdGlvbik7CiAJCQlpZiAob3B0aW9ucy0+c3RhdF9zZXApIHsKIAkJCQkvKiBhdHRhY2ggcGF0Y2ggaW5zdGVhZCBvZiBpbmxpbmUgKi8KIAkJCQlmcHV0cyhvcHRpb25zLT5zdGF0X3NlcCwgb3B0aW9ucy0+ZmlsZSk7CkBAIC00NjY3LDcgKzQ2NzYsNyBAQAogewogCWludCByZXN1bHQgPSAwOwogCi0JZGlmZl93YXJuX3JlbmFtZV9saW1pdCgiZGlmZi5yZW5hbWVsaW1pdCIsCisJZGlmZl93YXJuX3JlbmFtZV9saW1pdCgiZGlmZi5yZW5hbWVMaW1pdCIsCiAJCQkgICAgICAgb3B0LT5uZWVkZWRfcmVuYW1lX2xpbWl0LAogCQkJICAgICAgIG9wdC0+ZGVncmFkZWRfY2NfdG9fYyk7CiAJaWYgKCFESUZGX09QVF9UU1Qob3B0LCBFWElUX1dJVEhfU1RBVFVTKSAmJgpAQCAtNDcxMCw2ICs0NzE5LDcgQEAKIHZvaWQgZGlmZl9hZGRyZW1vdmUoc3RydWN0IGRpZmZfb3B0aW9ucyAqb3B0aW9ucywKIAkJICAgIGludCBhZGRyZW1vdmUsIHVuc2lnbmVkIG1vZGUsCiAJCSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAorCQkgICAgaW50IHNoYTFfdmFsaWQsCiAJCSAgICBjb25zdCBjaGFyICpjb25jYXRwYXRoLCB1bnNpZ25lZCBkaXJ0eV9zdWJtb2R1bGUpCiB7CiAJc3RydWN0IGRpZmZfZmlsZXNwZWMgKm9uZSwgKnR3bzsKQEAgLTQ3NDEsOSArNDc1MSw5IEBACiAJdHdvID0gYWxsb2NfZmlsZXNwZWMoY29uY2F0cGF0aCk7CiAKIAlpZiAoYWRkcmVtb3ZlICE9ICcrJykKLQkJZmlsbF9maWxlc3BlYyhvbmUsIHNoYTEsIG1vZGUpOworCQlmaWxsX2ZpbGVzcGVjKG9uZSwgc2hhMSwgc2hhMV92YWxpZCwgbW9kZSk7CiAJaWYgKGFkZHJlbW92ZSAhPSAnLScpIHsKLQkJZmlsbF9maWxlc3BlYyh0d28sIHNoYTEsIG1vZGUpOworCQlmaWxsX2ZpbGVzcGVjKHR3bywgc2hhMSwgc2hhMV92YWxpZCwgbW9kZSk7CiAJCXR3by0+ZGlydHlfc3VibW9kdWxlID0gZGlydHlfc3VibW9kdWxlOwogCX0KIApAQCAtNDc1Niw2ICs0NzY2LDcgQEAKIAkJIHVuc2lnbmVkIG9sZF9tb2RlLCB1bnNpZ25lZCBuZXdfbW9kZSwKIAkJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm9sZF9zaGExLAogCQkgY29uc3QgdW5zaWduZWQgY2hhciAqbmV3X3NoYTEsCisJCSBpbnQgb2xkX3NoYTFfdmFsaWQsIGludCBuZXdfc2hhMV92YWxpZCwKIAkJIGNvbnN0IGNoYXIgKmNvbmNhdHBhdGgsCiAJCSB1bnNpZ25lZCBvbGRfZGlydHlfc3VibW9kdWxlLCB1bnNpZ25lZCBuZXdfZGlydHlfc3VibW9kdWxlKQogewpAQCAtNDc3MCw2ICs0NzgxLDggQEAKIAkJY29uc3QgdW5zaWduZWQgY2hhciAqdG1wX2M7CiAJCXRtcCA9IG9sZF9tb2RlOyBvbGRfbW9kZSA9IG5ld19tb2RlOyBuZXdfbW9kZSA9IHRtcDsKIAkJdG1wX2MgPSBvbGRfc2hhMTsgb2xkX3NoYTEgPSBuZXdfc2hhMTsgbmV3X3NoYTEgPSB0bXBfYzsKKwkJdG1wID0gb2xkX3NoYTFfdmFsaWQ7IG9sZF9zaGExX3ZhbGlkID0gbmV3X3NoYTFfdmFsaWQ7CisJCQluZXdfc2hhMV92YWxpZCA9IHRtcDsKIAkJdG1wID0gb2xkX2RpcnR5X3N1Ym1vZHVsZTsgb2xkX2RpcnR5X3N1Ym1vZHVsZSA9IG5ld19kaXJ0eV9zdWJtb2R1bGU7CiAJCQluZXdfZGlydHlfc3VibW9kdWxlID0gdG1wOwogCX0KQEAgLTQ3ODAsOCArNDc5Myw4IEBACiAKIAlvbmUgPSBhbGxvY19maWxlc3BlYyhjb25jYXRwYXRoKTsKIAl0d28gPSBhbGxvY19maWxlc3BlYyhjb25jYXRwYXRoKTsKLQlmaWxsX2ZpbGVzcGVjKG9uZSwgb2xkX3NoYTEsIG9sZF9tb2RlKTsKLQlmaWxsX2ZpbGVzcGVjKHR3bywgbmV3X3NoYTEsIG5ld19tb2RlKTsKKwlmaWxsX2ZpbGVzcGVjKG9uZSwgb2xkX3NoYTEsIG9sZF9zaGExX3ZhbGlkLCBvbGRfbW9kZSk7CisJZmlsbF9maWxlc3BlYyh0d28sIG5ld19zaGExLCBuZXdfc2hhMV92YWxpZCwgbmV3X21vZGUpOwogCW9uZS0+ZGlydHlfc3VibW9kdWxlID0gb2xkX2RpcnR5X3N1Ym1vZHVsZTsKIAl0d28tPmRpcnR5X3N1Ym1vZHVsZSA9IG5ld19kaXJ0eV9zdWJtb2R1bGU7CiAKQEAgLTQ4ODcsMyArNDkwMCwxOSBAQAogCiAJcmV0dXJuIHNpemU7CiB9CisKK3ZvaWQgc2V0dXBfZGlmZl9wYWdlcihzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHQpCit7CisJLyoKKwkgKiBJZiB0aGUgdXNlciBhc2tlZCBmb3Igb3VyIGV4aXQgY29kZSwgdGhlbiBlaXRoZXIgdGhleSB3YW50IC0tcXVpZXQKKwkgKiBvciAtLWV4aXQtY29kZS4gV2Ugc2hvdWxkIGRlZmluaXRlbHkgbm90IGJvdGhlciB3aXRoIGEgcGFnZXIgaW4gdGhlCisJICogZm9ybWVyIGNhc2UsIGFzIHdlIHdpbGwgZ2VuZXJhdGUgbm8gb3V0cHV0LiBTaW5jZSB3ZSBzdGlsbCBwcm9wZXJseQorCSAqIHJlcG9ydCBvdXIgZXhpdCBjb2RlIGV2ZW4gd2hlbiBhIHBhZ2VyIGlzIHJ1biwgd2UgX2NvdWxkXyBydW4gYQorCSAqIHBhZ2VyIHdpdGggLS1leGl0LWNvZGUuIEJ1dCBzaW5jZSB3ZSBoYXZlIG5vdCBkb25lIHNvIGhpc3RvcmljYWxseSwKKwkgKiBhbmQgYmVjYXVzZSBpdCBpcyBlYXN5IHRvIGZpbmQgcGVvcGxlIG9uZWxpbmUgYWR2aXNpbmcgImdpdCBkaWZmCisJICogLS1leGl0LWNvZGUiIGluIGhvb2tzIGFuZCBvdGhlciBzY3JpcHRzLCB3ZSBkbyBub3QgZG8gc28uCisJICovCisJaWYgKCFESUZGX09QVF9UU1Qob3B0LCBFWElUX1dJVEhfU1RBVFVTKSAmJgorCSAgICBjaGVja19wYWdlcl9jb25maWcoImRpZmYiKSAhPSAwKQorCQlzZXR1cF9wYWdlcigpOworfQpkaWZmIC0tZ2l0IGEvZGlmZi5oIGIvZGlmZi5oCmluZGV4IGUwMjc2NTAuLjc4YjQwOTEgMTAwNjQ0Ci0tLSBhL2RpZmYuaAorKysgYi9kaWZmLmgKQEAgLTE5LDEyICsxOSwxNCBAQAogCQkgdW5zaWduZWQgb2xkX21vZGUsIHVuc2lnbmVkIG5ld19tb2RlLAogCQkgY29uc3QgdW5zaWduZWQgY2hhciAqb2xkX3NoYTEsCiAJCSBjb25zdCB1bnNpZ25lZCBjaGFyICpuZXdfc2hhMSwKKwkJIGludCBvbGRfc2hhMV92YWxpZCwgaW50IG5ld19zaGExX3ZhbGlkLAogCQkgY29uc3QgY2hhciAqZnVsbHBhdGgsCiAJCSB1bnNpZ25lZCBvbGRfZGlydHlfc3VibW9kdWxlLCB1bnNpZ25lZCBuZXdfZGlydHlfc3VibW9kdWxlKTsKIAogdHlwZWRlZiB2b2lkICgqYWRkX3JlbW92ZV9mbl90KShzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHRpb25zLAogCQkgICAgaW50IGFkZHJlbW92ZSwgdW5zaWduZWQgbW9kZSwKIAkJICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsCisJCSAgICBpbnQgc2hhMV92YWxpZCwKIAkJICAgIGNvbnN0IGNoYXIgKmZ1bGxwYXRoLCB1bnNpZ25lZCBkaXJ0eV9zdWJtb2R1bGUpOwogCiB0eXBlZGVmIHZvaWQgKCpkaWZmX2Zvcm1hdF9mbl90KShzdHJ1Y3QgZGlmZl9xdWV1ZV9zdHJ1Y3QgKnEsCkBAIC0xNzIsNiArMTc0LDkgQEAKIAlkaWZmX2dldF9jb2xvcigobyktPnVzZV9jb2xvciwgaXgpCiAKIAorY29uc3QgY2hhciAqZGlmZl9saW5lX3ByZWZpeChzdHJ1Y3QgZGlmZl9vcHRpb25zICopOworCisKIGV4dGVybiBjb25zdCBjaGFyIG1pbWVfYm91bmRhcnlfbGVhZGVyW107CiAKIGV4dGVybiB2b2lkIGRpZmZfdHJlZV9zZXR1cF9wYXRocyhjb25zdCBjaGFyICoqcGF0aHMsIHN0cnVjdCBkaWZmX29wdGlvbnMgKik7CkBAIC0yMTQsMTIgKzIxOSwxNSBAQAogCQkJICAgaW50IGFkZHJlbW92ZSwKIAkJCSAgIHVuc2lnbmVkIG1vZGUsCiAJCQkgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAorCQkJICAgaW50IHNoYTFfdmFsaWQsCiAJCQkgICBjb25zdCBjaGFyICpmdWxscGF0aCwgdW5zaWduZWQgZGlydHlfc3VibW9kdWxlKTsKIAogZXh0ZXJuIHZvaWQgZGlmZl9jaGFuZ2Uoc3RydWN0IGRpZmZfb3B0aW9ucyAqLAogCQkJdW5zaWduZWQgbW9kZTEsIHVuc2lnbmVkIG1vZGUyLAogCQkJY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKIAkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTIsCisJCQlpbnQgc2hhMV92YWxpZCwKKwkJCWludCBzaGEyX3ZhbGlkLAogCQkJY29uc3QgY2hhciAqZnVsbHBhdGgsCiAJCQl1bnNpZ25lZCBkaXJ0eV9zdWJtb2R1bGUxLCB1bnNpZ25lZCBkaXJ0eV9zdWJtb2R1bGUyKTsKIApAQCAtMjM4LDEwICsyNDYsOSBAQAogCiBleHRlcm4gaW50IGdpdF9kaWZmX2Jhc2ljX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYik7CiBleHRlcm4gaW50IGdpdF9kaWZmX3VpX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYik7Ci1leHRlcm4gaW50IGRpZmZfdXNlX2NvbG9yX2RlZmF1bHQ7CiBleHRlcm4gdm9pZCBkaWZmX3NldHVwKHN0cnVjdCBkaWZmX29wdGlvbnMgKik7CiBleHRlcm4gaW50IGRpZmZfb3B0X3BhcnNlKHN0cnVjdCBkaWZmX29wdGlvbnMgKiwgY29uc3QgY2hhciAqKiwgaW50KTsKLWV4dGVybiBpbnQgZGlmZl9zZXR1cF9kb25lKHN0cnVjdCBkaWZmX29wdGlvbnMgKik7CitleHRlcm4gdm9pZCBkaWZmX3NldHVwX2RvbmUoc3RydWN0IGRpZmZfb3B0aW9ucyAqKTsKIAogI2RlZmluZSBESUZGX0RFVEVDVF9SRU5BTUUJMQogI2RlZmluZSBESUZGX0RFVEVDVF9DT1BZCTIKQEAgLTMyOSw3ICszMzYsMTAgQEAKIAogZXh0ZXJuIGludCBwYXJzZV9yZW5hbWVfc2NvcmUoY29uc3QgY2hhciAqKmNwX3ApOwogCitleHRlcm4gbG9uZyBwYXJzZV9hbGdvcml0aG1fdmFsdWUoY29uc3QgY2hhciAqdmFsdWUpOworCiBleHRlcm4gaW50IHByaW50X3N0YXRfc3VtbWFyeShGSUxFICpmcCwgaW50IGZpbGVzLAogCQkJICAgICAgaW50IGluc2VydGlvbnMsIGludCBkZWxldGlvbnMpOworZXh0ZXJuIHZvaWQgc2V0dXBfZGlmZl9wYWdlcihzdHJ1Y3QgZGlmZl9vcHRpb25zICopOwogCiAjZW5kaWYgLyogRElGRl9IICovCmRpZmYgLS1naXQgYS9kaWZmY29yZS1icmVhay5jIGIvZGlmZmNvcmUtYnJlYWsuYwppbmRleCA0NGY4Njc4Li4xZDllNTMwIDEwMDY0NAotLS0gYS9kaWZmY29yZS1icmVhay5jCisrKyBiL2RpZmZjb3JlLWJyZWFrLmMKQEAgLTY4LDYgKzY4LDkgQEAKIAlpZiAobWF4X3NpemUgPCBNSU5JTVVNX0JSRUFLX1NJWkUpCiAJCXJldHVybiAwOyAvKiB3ZSBkbyBub3QgYnJlYWsgdG9vIHNtYWxsIGZpbGVwYWlyICovCiAKKwlpZiAoIXNyYy0+c2l6ZSkKKwkJcmV0dXJuIDA7IC8qIHdlIGRvIG5vdCBsZXQgZW1wdHkgZmlsZXMgZ2V0IHJlbmFtZWQgKi8KKwogCWlmIChkaWZmY29yZV9jb3VudF9jaGFuZ2VzKHNyYywgZHN0LAogCQkJCSAgICZzcmMtPmNudF9kYXRhLCAmZHN0LT5jbnRfZGF0YSwKIAkJCQkgICAwLApkaWZmIC0tZ2l0IGEvZGlmZmNvcmUtcGlja2F4ZS5jIGIvZGlmZmNvcmUtcGlja2F4ZS5jCmluZGV4IGVkMjNlYjQuLmM5N2FjOWIgMTAwNjQ0Ci0tLSBhL2RpZmZjb3JlLXBpY2theGUuYworKysgYi9kaWZmY29yZS1waWNrYXhlLmMKQEAgLTgsNyArOCwxMiBAQAogI2luY2x1ZGUgInhkaWZmLWludGVyZmFjZS5oIgogI2luY2x1ZGUgImt3c2V0LmgiCiAKLXR5cGVkZWYgaW50ICgqcGlja2F4ZV9mbikoc3RydWN0IGRpZmZfZmlsZXBhaXIgKnAsIHN0cnVjdCBkaWZmX29wdGlvbnMgKm8sIHJlZ2V4X3QgKnJlZ2V4cCwga3dzZXRfdCBrd3MpOwordHlwZWRlZiBpbnQgKCpwaWNrYXhlX2ZuKShtbWZpbGVfdCAqb25lLCBtbWZpbGVfdCAqdHdvLAorCQkJICBzdHJ1Y3QgZGlmZl9vcHRpb25zICpvLAorCQkJICByZWdleF90ICpyZWdleHAsIGt3c2V0X3Qga3dzKTsKKworc3RhdGljIGludCBwaWNrYXhlX21hdGNoKHN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwLCBzdHJ1Y3QgZGlmZl9vcHRpb25zICpvLAorCQkJIHJlZ2V4X3QgKnJlZ2V4cCwga3dzZXRfdCBrd3MsIHBpY2theGVfZm4gZm4pOwogCiBzdGF0aWMgdm9pZCBwaWNrYXhlKHN0cnVjdCBkaWZmX3F1ZXVlX3N0cnVjdCAqcSwgc3RydWN0IGRpZmZfb3B0aW9ucyAqbywKIAkJICAgIHJlZ2V4X3QgKnJlZ2V4cCwga3dzZXRfdCBrd3MsIHBpY2theGVfZm4gZm4pCkBAIC0yMiw3ICsyNyw3IEBACiAJCS8qIFNob3dpbmcgdGhlIHdob2xlIGNoYW5nZXNldCBpZiBuZWVkbGUgZXhpc3RzICovCiAJCWZvciAoaSA9IDA7IGkgPCBxLT5ucjsgaSsrKSB7CiAJCQlzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcCA9IHEtPnF1ZXVlW2ldOwotCQkJaWYgKGZuKHAsIG8sIHJlZ2V4cCwga3dzKSkKKwkJCWlmIChwaWNrYXhlX21hdGNoKHAsIG8sIHJlZ2V4cCwga3dzLCBmbikpCiAJCQkJcmV0dXJuOyAvKiBkbyBub3QgbXVuZ2UgdGhlIHF1ZXVlICovCiAJCX0KIApAQCAtMzcsNyArNDIsNyBAQAogCQkvKiBTaG93aW5nIG9ubHkgdGhlIGZpbGVwYWlycyB0aGF0IGhhcyB0aGUgbmVlZGxlICovCiAJCWZvciAoaSA9IDA7IGkgPCBxLT5ucjsgaSsrKSB7CiAJCQlzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcCA9IHEtPnF1ZXVlW2ldOwotCQkJaWYgKGZuKHAsIG8sIHJlZ2V4cCwga3dzKSkKKwkJCWlmIChwaWNrYXhlX21hdGNoKHAsIG8sIHJlZ2V4cCwga3dzLCBmbikpCiAJCQkJZGlmZl9xKCZvdXRxLCBwKTsKIAkJCWVsc2UKIAkJCQlkaWZmX2ZyZWVfZmlsZXBhaXIocCk7CkBAIC03NCw2NCArNzksMzMgQEAKIAlsaW5lW2xlbl0gPSBob2xkOwogfQogCi1zdGF0aWMgdm9pZCBmaWxsX29uZShzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqb25lLAotCQkgICAgIG1tZmlsZV90ICptZiwgc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqKnRleHRjb252KQotewotCWlmIChESUZGX0ZJTEVfVkFMSUQob25lKSkgewotCQkqdGV4dGNvbnYgPSBnZXRfdGV4dGNvbnYob25lKTsKLQkJbWYtPnNpemUgPSBmaWxsX3RleHRjb252KCp0ZXh0Y29udiwgb25lLCAmbWYtPnB0cik7Ci0JfSBlbHNlIHsKLQkJbWVtc2V0KG1mLCAwLCBzaXplb2YoKm1mKSk7Ci0JfQotfQotCi1zdGF0aWMgaW50IGRpZmZfZ3JlcChzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcCwgc3RydWN0IGRpZmZfb3B0aW9ucyAqbywKK3N0YXRpYyBpbnQgZGlmZl9ncmVwKG1tZmlsZV90ICpvbmUsIG1tZmlsZV90ICp0d28sCisJCSAgICAgc3RydWN0IGRpZmZfb3B0aW9ucyAqbywKIAkJICAgICByZWdleF90ICpyZWdleHAsIGt3c2V0X3Qga3dzKQogewogCXJlZ21hdGNoX3QgcmVnbWF0Y2g7Ci0Jc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqdGV4dGNvbnZfb25lID0gTlVMTDsKLQlzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICp0ZXh0Y29udl90d28gPSBOVUxMOwotCW1tZmlsZV90IG1mMSwgbWYyOwotCWludCBoaXQ7CisJc3RydWN0IGRpZmZncmVwX2NiIGVjYmRhdGE7CisJeHBwYXJhbV90IHhwcDsKKwl4ZGVtaXRjb25mX3QgeGVjZmc7CiAKLQlpZiAoZGlmZl91bm1vZGlmaWVkX3BhaXIocCkpCi0JCXJldHVybiAwOworCWlmICghb25lKQorCQlyZXR1cm4gIXJlZ2V4ZWMocmVnZXhwLCB0d28tPnB0ciwgMSwgJnJlZ21hdGNoLCAwKTsKKwlpZiAoIXR3bykKKwkJcmV0dXJuICFyZWdleGVjKHJlZ2V4cCwgb25lLT5wdHIsIDEsICZyZWdtYXRjaCwgMCk7CiAKLQlmaWxsX29uZShwLT5vbmUsICZtZjEsICZ0ZXh0Y29udl9vbmUpOwotCWZpbGxfb25lKHAtPnR3bywgJm1mMiwgJnRleHRjb252X3R3byk7Ci0KLQlpZiAoIW1mMS5wdHIpIHsKLQkJaWYgKCFtZjIucHRyKQotCQkJcmV0dXJuIDA7IC8qIGlnbm9yZSB1bm1lcmdlZCAqLwotCQkvKiBjcmVhdGVkICJ0d28iIC0tIGRvZXMgaXQgaGF2ZSB3aGF0IHdlIGFyZSBsb29raW5nIGZvcj8gKi8KLQkJaGl0ID0gIXJlZ2V4ZWMocmVnZXhwLCBwLT50d28tPmRhdGEsIDEsICZyZWdtYXRjaCwgMCk7Ci0JfSBlbHNlIGlmICghbWYyLnB0cikgewotCQkvKiByZW1vdmVkICJvbmUiIC0tIGRpZCBpdCBoYXZlIHdoYXQgd2UgYXJlIGxvb2tpbmcgZm9yPyAqLwotCQloaXQgPSAhcmVnZXhlYyhyZWdleHAsIHAtPm9uZS0+ZGF0YSwgMSwgJnJlZ21hdGNoLCAwKTsKLQl9IGVsc2UgewotCQkvKgotCQkgKiBXZSBoYXZlIGJvdGggc2lkZXM7IG5lZWQgdG8gcnVuIHRleHR1YWwgZGlmZiBhbmQgc2VlIGlmCi0JCSAqIHRoZSBwYXR0ZXJuIGFwcGVhcnMgb24gYWRkZWQvZGVsZXRlZCBsaW5lcy4KLQkJICovCi0JCXN0cnVjdCBkaWZmZ3JlcF9jYiBlY2JkYXRhOwotCQl4cHBhcmFtX3QgeHBwOwotCQl4ZGVtaXRjb25mX3QgeGVjZmc7Ci0KLQkJbWVtc2V0KCZ4cHAsIDAsIHNpemVvZih4cHApKTsKLQkJbWVtc2V0KCZ4ZWNmZywgMCwgc2l6ZW9mKHhlY2ZnKSk7Ci0JCWVjYmRhdGEucmVnZXhwID0gcmVnZXhwOwotCQllY2JkYXRhLmhpdCA9IDA7Ci0JCXhlY2ZnLmN0eGxlbiA9IG8tPmNvbnRleHQ7Ci0JCXhlY2ZnLmludGVyaHVua2N0eGxlbiA9IG8tPmludGVyaHVua2NvbnRleHQ7Ci0JCXhkaV9kaWZmX291dGYoJm1mMSwgJm1mMiwgZGlmZmdyZXBfY29uc3VtZSwgJmVjYmRhdGEsCi0JCQkgICAgICAmeHBwLCAmeGVjZmcpOwotCQloaXQgPSBlY2JkYXRhLmhpdDsKLQl9Ci0JaWYgKHRleHRjb252X29uZSkKLQkJZnJlZShtZjEucHRyKTsKLQlpZiAodGV4dGNvbnZfdHdvKQotCQlmcmVlKG1mMi5wdHIpOwotCXJldHVybiBoaXQ7CisJLyoKKwkgKiBXZSBoYXZlIGJvdGggc2lkZXM7IG5lZWQgdG8gcnVuIHRleHR1YWwgZGlmZiBhbmQgc2VlIGlmCisJICogdGhlIHBhdHRlcm4gYXBwZWFycyBvbiBhZGRlZC9kZWxldGVkIGxpbmVzLgorCSAqLworCW1lbXNldCgmeHBwLCAwLCBzaXplb2YoeHBwKSk7CisJbWVtc2V0KCZ4ZWNmZywgMCwgc2l6ZW9mKHhlY2ZnKSk7CisJZWNiZGF0YS5yZWdleHAgPSByZWdleHA7CisJZWNiZGF0YS5oaXQgPSAwOworCXhlY2ZnLmN0eGxlbiA9IG8tPmNvbnRleHQ7CisJeGVjZmcuaW50ZXJodW5rY3R4bGVuID0gby0+aW50ZXJodW5rY29udGV4dDsKKwl4ZGlfZGlmZl9vdXRmKG9uZSwgdHdvLCBkaWZmZ3JlcF9jb25zdW1lLCAmZWNiZGF0YSwKKwkJICAgICAgJnhwcCwgJnhlY2ZnKTsKKwlyZXR1cm4gZWNiZGF0YS5oaXQ7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZmZjb3JlX3BpY2theGVfZ3JlcChzdHJ1Y3QgZGlmZl9vcHRpb25zICpvKQpAQCAtMTQ4LDcgKzEyMiw3IEBACiAJCWNoYXIgZXJyYnVmWzEwMjRdOwogCQlyZWdlcnJvcihlcnIsICZyZWdleCwgZXJyYnVmLCAxMDI0KTsKIAkJcmVnZnJlZSgmcmVnZXgpOwotCQlkaWUoImludmFsaWQgbG9nLWdyZXAgcmVnZXg6ICVzIiwgZXJyYnVmKTsKKwkJZGllKCJpbnZhbGlkIHJlZ2V4OiAlcyIsIGVycmJ1Zik7CiAJfQogCiAJcGlja2F4ZSgmZGlmZl9xdWV1ZWRfZGlmZiwgbywgJnJlZ2V4LCBOVUxMLCBkaWZmX2dyZXApOwpAQCAtMTU3LDE5ICsxMzEsMTUgQEAKIAlyZXR1cm47CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgY29udGFpbnMoc3RydWN0IGRpZmZfZmlsZXNwZWMgKm9uZSwgc3RydWN0IGRpZmZfb3B0aW9ucyAqbywKK3N0YXRpYyB1bnNpZ25lZCBpbnQgY29udGFpbnMobW1maWxlX3QgKm1mLCBzdHJ1Y3QgZGlmZl9vcHRpb25zICpvLAogCQkJICAgICByZWdleF90ICpyZWdleHAsIGt3c2V0X3Qga3dzKQogewogCXVuc2lnbmVkIGludCBjbnQ7CiAJdW5zaWduZWQgbG9uZyBzejsKIAljb25zdCBjaGFyICpkYXRhOwotCWlmICghby0+cGlja2F4ZVswXSkKLQkJcmV0dXJuIDA7Ci0JaWYgKGRpZmZfcG9wdWxhdGVfZmlsZXNwZWMob25lLCAwKSkKLQkJcmV0dXJuIDA7CiAKLQlzeiA9IG9uZS0+c2l6ZTsKLQlkYXRhID0gb25lLT5kYXRhOworCXN6ID0gbWYtPnNpemU7CisJZGF0YSA9IG1mLT5wdHI7CiAJY250ID0gMDsKIAogCWlmIChyZWdleHApIHsKQEAgLTE5OSwyNiArMTY5LDY1IEBACiAJCQljbnQrKzsKIAkJfQogCX0KLQlkaWZmX2ZyZWVfZmlsZXNwZWNfZGF0YShvbmUpOwogCXJldHVybiBjbnQ7CiB9CiAKLXN0YXRpYyBpbnQgaGFzX2NoYW5nZXMoc3RydWN0IGRpZmZfZmlsZXBhaXIgKnAsIHN0cnVjdCBkaWZmX29wdGlvbnMgKm8sCitzdGF0aWMgaW50IGhhc19jaGFuZ2VzKG1tZmlsZV90ICpvbmUsIG1tZmlsZV90ICp0d28sCisJCSAgICAgICBzdHJ1Y3QgZGlmZl9vcHRpb25zICpvLAogCQkgICAgICAgcmVnZXhfdCAqcmVnZXhwLCBrd3NldF90IGt3cykKIHsKLQlpZiAoIURJRkZfRklMRV9WQUxJRChwLT5vbmUpKSB7Ci0JCWlmICghRElGRl9GSUxFX1ZBTElEKHAtPnR3bykpCi0JCQlyZXR1cm4gMDsgLyogaWdub3JlIHVubWVyZ2VkICovCi0JCS8qIGNyZWF0ZWQgKi8KLQkJcmV0dXJuIGNvbnRhaW5zKHAtPnR3bywgbywgcmVnZXhwLCBrd3MpICE9IDA7CisJaWYgKCFvbmUpCisJCXJldHVybiBjb250YWlucyh0d28sIG8sIHJlZ2V4cCwga3dzKSAhPSAwOworCWlmICghdHdvKQorCQlyZXR1cm4gY29udGFpbnMob25lLCBvLCByZWdleHAsIGt3cykgIT0gMDsKKwlyZXR1cm4gY29udGFpbnMob25lLCBvLCByZWdleHAsIGt3cykgIT0gY29udGFpbnModHdvLCBvLCByZWdleHAsIGt3cyk7Cit9CisKK3N0YXRpYyBpbnQgcGlja2F4ZV9tYXRjaChzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcCwgc3RydWN0IGRpZmZfb3B0aW9ucyAqbywKKwkJCSByZWdleF90ICpyZWdleHAsIGt3c2V0X3Qga3dzLCBwaWNrYXhlX2ZuIGZuKQoreworCXN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKnRleHRjb252X29uZSA9IE5VTEw7CisJc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqdGV4dGNvbnZfdHdvID0gTlVMTDsKKwltbWZpbGVfdCBtZjEsIG1mMjsKKwlpbnQgcmV0OworCisJaWYgKCFvLT5waWNrYXhlWzBdKQorCQlyZXR1cm4gMDsKKworCS8qIGlnbm9yZSB1bm1lcmdlZCAqLworCWlmICghRElGRl9GSUxFX1ZBTElEKHAtPm9uZSkgJiYgIURJRkZfRklMRV9WQUxJRChwLT50d28pKQorCQlyZXR1cm4gMDsKKworCWlmIChESUZGX09QVF9UU1QobywgQUxMT1dfVEVYVENPTlYpKSB7CisJCXRleHRjb252X29uZSA9IGdldF90ZXh0Y29udihwLT5vbmUpOworCQl0ZXh0Y29udl90d28gPSBnZXRfdGV4dGNvbnYocC0+dHdvKTsKIAl9Ci0JaWYgKCFESUZGX0ZJTEVfVkFMSUQocC0+dHdvKSkKLQkJcmV0dXJuIGNvbnRhaW5zKHAtPm9uZSwgbywgcmVnZXhwLCBrd3MpICE9IDA7Ci0JaWYgKCFkaWZmX3VubW9kaWZpZWRfcGFpcihwKSkgewotCQlyZXR1cm4gY29udGFpbnMocC0+b25lLCBvLCByZWdleHAsIGt3cykgIT0KLQkJICAgICAgIGNvbnRhaW5zKHAtPnR3bywgbywgcmVnZXhwLCBrd3MpOwotCX0KLQlyZXR1cm4gMDsKKworCS8qCisJICogSWYgd2UgaGF2ZSBhbiB1bm1vZGlmaWVkIHBhaXIsIHdlIGtub3cgdGhhdCB0aGUgY291bnQgd2lsbCBiZSB0aGUKKwkgKiBzYW1lIGFuZCBkb24ndCBldmVuIGhhdmUgdG8gbG9hZCB0aGUgYmxvYnMuIFVubGVzcyB0ZXh0Y29udiBpcyBpbgorCSAqIHBsYXksIF9hbmRfIHdlIGFyZSB1c2luZyB0d28gZGlmZmVyZW50IHRleHRjb252IGZpbHRlcnMgKGUuZy4sCisJICogYmVjYXVzZSBhIHBhaXIgaXMgYW4gZXhhY3QgcmVuYW1lIHdpdGggZGlmZmVyZW50IHRleHRjb252IGF0dHJpYnV0ZXMKKwkgKiBmb3IgZWFjaCBzaWRlLCB3aGljaCBtaWdodCBnZW5lcmF0ZSBkaWZmZXJlbnQgY29udGVudCkuCisJICovCisJaWYgKHRleHRjb252X29uZSA9PSB0ZXh0Y29udl90d28gJiYgZGlmZl91bm1vZGlmaWVkX3BhaXIocCkpCisJCXJldHVybiAwOworCisJbWYxLnNpemUgPSBmaWxsX3RleHRjb252KHRleHRjb252X29uZSwgcC0+b25lLCAmbWYxLnB0cik7CisJbWYyLnNpemUgPSBmaWxsX3RleHRjb252KHRleHRjb252X3R3bywgcC0+dHdvLCAmbWYyLnB0cik7CisKKwlyZXQgPSBmbihESUZGX0ZJTEVfVkFMSUQocC0+b25lKSA/ICZtZjEgOiBOVUxMLAorCQkgRElGRl9GSUxFX1ZBTElEKHAtPnR3bykgPyAmbWYyIDogTlVMTCwKKwkJIG8sIHJlZ2V4cCwga3dzKTsKKworCWlmICh0ZXh0Y29udl9vbmUpCisJCWZyZWUobWYxLnB0cik7CisJaWYgKHRleHRjb252X3R3bykKKwkJZnJlZShtZjIucHRyKTsKKwlkaWZmX2ZyZWVfZmlsZXNwZWNfZGF0YShwLT5vbmUpOworCWRpZmZfZnJlZV9maWxlc3BlY19kYXRhKHAtPnR3byk7CisKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm9pZCBkaWZmY29yZV9waWNrYXhlX2NvdW50KHN0cnVjdCBkaWZmX29wdGlvbnMgKm8pCkBAIC0yMzcsNyArMjQ2LDcgQEAKIAkJCWNoYXIgZXJyYnVmWzEwMjRdOwogCQkJcmVnZXJyb3IoZXJyLCAmcmVnZXgsIGVycmJ1ZiwgMTAyNCk7CiAJCQlyZWdmcmVlKCZyZWdleCk7Ci0JCQlkaWUoImludmFsaWQgcGlja2F4ZSByZWdleDogJXMiLCBlcnJidWYpOworCQkJZGllKCJpbnZhbGlkIHJlZ2V4OiAlcyIsIGVycmJ1Zik7CiAJCX0KIAkJcmVnZXhwID0gJnJlZ2V4OwogCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9kaWZmY29yZS1yZW5hbWUuYyBiL2RpZmZjb3JlLXJlbmFtZS5jCmluZGV4IDIxNmE3YTQuLjZjN2E3MmYgMTAwNjQ0Ci0tLSBhL2RpZmZjb3JlLXJlbmFtZS5jCisrKyBiL2RpZmZjb3JlLXJlbmFtZS5jCkBAIC00OCw3ICs0OCw3IEBACiAJCW1lbW1vdmUocmVuYW1lX2RzdCArIGZpcnN0ICsgMSwgcmVuYW1lX2RzdCArIGZpcnN0LAogCQkJKHJlbmFtZV9kc3RfbnIgLSBmaXJzdCAtIDEpICogc2l6ZW9mKCpyZW5hbWVfZHN0KSk7CiAJcmVuYW1lX2RzdFtmaXJzdF0udHdvID0gYWxsb2NfZmlsZXNwZWModHdvLT5wYXRoKTsKLQlmaWxsX2ZpbGVzcGVjKHJlbmFtZV9kc3RbZmlyc3RdLnR3bywgdHdvLT5zaGExLCB0d28tPm1vZGUpOworCWZpbGxfZmlsZXNwZWMocmVuYW1lX2RzdFtmaXJzdF0udHdvLCB0d28tPnNoYTEsIHR3by0+c2hhMV92YWxpZCwgdHdvLT5tb2RlKTsKIAlyZW5hbWVfZHN0W2ZpcnN0XS5wYWlyID0gTlVMTDsKIAlyZXR1cm4gJihyZW5hbWVfZHN0W2ZpcnN0XSk7CiB9CkBAIC0zODksNiArMzg5LDcgQEAKIAlzdHJ1Y3QgaGFzaF90YWJsZSBmaWxlX3RhYmxlOwogCiAJaW5pdF9oYXNoKCZmaWxlX3RhYmxlKTsKKwlwcmVhbGxvY2F0ZV9oYXNoKCZmaWxlX3RhYmxlLCByZW5hbWVfc3JjX25yICsgcmVuYW1lX2RzdF9ucik7CiAJZm9yIChpID0gMDsgaSA8IHJlbmFtZV9zcmNfbnI7IGkrKykKIAkJaW5zZXJ0X2ZpbGVfdGFibGUoJmZpbGVfdGFibGUsIC0xLCBpLCByZW5hbWVfc3JjW2ldLnAtPm9uZSk7CiAKZGlmZiAtLWdpdCBhL2RpZmZjb3JlLmggYi9kaWZmY29yZS5oCmluZGV4IDhmMzJiODIuLjFjMTZjODUgMTAwNjQ0Ci0tLSBhL2RpZmZjb3JlLmgKKysrIGIvZGlmZmNvcmUuaApAQCAtNDMsNiArNDMsNyBAQAogCXVuc2lnbmVkIHNob3VsZF9mcmVlIDogMTsgLyogZGF0YSBzaG91bGQgYmUgZnJlZSgpJ2VkICovCiAJdW5zaWduZWQgc2hvdWxkX211bm1hcCA6IDE7IC8qIGRhdGEgc2hvdWxkIGJlIG11bm1hcCgpJ2VkICovCiAJdW5zaWduZWQgZGlydHlfc3VibW9kdWxlIDogMjsgIC8qIEZvciBzdWJtb2R1bGVzOiBpdHMgd29yayB0cmVlIGlzIGRpcnR5ICovCisJdW5zaWduZWQgaXNfc3RkaW4gOiAxOwogI2RlZmluZSBESVJUWV9TVUJNT0RVTEVfVU5UUkFDS0VEIDEKICNkZWZpbmUgRElSVFlfU1VCTU9EVUxFX01PRElGSUVEICAyCiAJdW5zaWduZWQgaGFzX21vcmVfZW50cmllcyA6IDE7IC8qIG9ubHkgYXBwZWFyIGluIGNvbWJpbmVkIGRpZmYgKi8KQEAgLTU0LDcgKzU1LDcgQEAKIGV4dGVybiBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqYWxsb2NfZmlsZXNwZWMoY29uc3QgY2hhciAqKTsKIGV4dGVybiB2b2lkIGZyZWVfZmlsZXNwZWMoc3RydWN0IGRpZmZfZmlsZXNwZWMgKik7CiBleHRlcm4gdm9pZCBmaWxsX2ZpbGVzcGVjKHN0cnVjdCBkaWZmX2ZpbGVzcGVjICosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwKLQkJCSAgdW5zaWduZWQgc2hvcnQpOworCQkJICBpbnQsIHVuc2lnbmVkIHNob3J0KTsKIAogZXh0ZXJuIGludCBkaWZmX3BvcHVsYXRlX2ZpbGVzcGVjKHN0cnVjdCBkaWZmX2ZpbGVzcGVjICosIGludCk7CiBleHRlcm4gdm9pZCBkaWZmX2ZyZWVfZmlsZXNwZWNfZGF0YShzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqKTsKZGlmZiAtLWdpdCBhL2Rpci5jIGIvZGlyLmMKaW5kZXggZWQxNTEwZi4uODk3Yzg3NCAxMDA2NDQKLS0tIGEvZGlyLmMKKysrIGIvZGlyLmMKQEAgLTIsMTkgKzIsMzYgQEAKICAqIFRoaXMgaGFuZGxlcyByZWN1cnNpdmUgZmlsZW5hbWUgZGV0ZWN0aW9uIHdpdGggZXhjbHVkZQogICogZmlsZXMsIGluZGV4IGtub3dsZWRnZSBldGMuLgogICoKKyAqIFNlZSBEb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktZGlyZWN0b3J5LWxpc3RpbmcudHh0CisgKgogICogQ29weXJpZ2h0IChDKSBMaW51cyBUb3J2YWxkcywgMjAwNS0yMDA2CiAgKgkJIEp1bmlvIEhhbWFubywgMjAwNS0yMDA2CiAgKi8KICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgImRpci5oIgogI2luY2x1ZGUgInJlZnMuaCIKKyNpbmNsdWRlICJ3aWxkbWF0Y2guaCIKIAogc3RydWN0IHBhdGhfc2ltcGxpZnkgewogCWludCBsZW47CiAJY29uc3QgY2hhciAqcGF0aDsKIH07CiAKLXN0YXRpYyBpbnQgcmVhZF9kaXJlY3RvcnlfcmVjdXJzaXZlKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBsZW4sCisvKgorICogVGVsbHMgcmVhZF9kaXJlY3RvcnlfcmVjdXJzaXZlIGhvdyBhIGZpbGUgb3IgZGlyZWN0b3J5IHNob3VsZCBiZSB0cmVhdGVkLgorICogVmFsdWVzIGFyZSBvcmRlcmVkIGJ5IHNpZ25pZmljYW5jZSwgZS5nLiBpZiBhIGRpcmVjdG9yeSBjb250YWlucyBib3RoCisgKiBleGNsdWRlZCBhbmQgdW50cmFja2VkIGZpbGVzLCBpdCBpcyBsaXN0ZWQgYXMgdW50cmFja2VkIGJlY2F1c2UKKyAqIHBhdGhfdW50cmFja2VkID4gcGF0aF9leGNsdWRlZC4KKyAqLworZW51bSBwYXRoX3RyZWF0bWVudCB7CisJcGF0aF9ub25lID0gMCwKKwlwYXRoX3JlY3Vyc2UsCisJcGF0aF9leGNsdWRlZCwKKwlwYXRoX3VudHJhY2tlZAorfTsKKworc3RhdGljIGVudW0gcGF0aF90cmVhdG1lbnQgcmVhZF9kaXJlY3RvcnlfcmVjdXJzaXZlKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsCisJY29uc3QgY2hhciAqcGF0aCwgaW50IGxlbiwKIAlpbnQgY2hlY2tfb25seSwgY29uc3Qgc3RydWN0IHBhdGhfc2ltcGxpZnkgKnNpbXBsaWZ5KTsKIHN0YXRpYyBpbnQgZ2V0X2R0eXBlKHN0cnVjdCBkaXJlbnQgKmRlLCBjb25zdCBjaGFyICpwYXRoLCBpbnQgbGVuKTsKIApAQCAtMzQsMTAgKzUxLDYyIEBACiAJcmV0dXJuIGZubWF0Y2gocGF0dGVybiwgc3RyaW5nLCBmbGFncyB8IChpZ25vcmVfY2FzZSA/IEZOTV9DQVNFRk9MRCA6IDApKTsKIH0KIAoraW5saW5lIGludCBnaXRfZm5tYXRjaChjb25zdCBjaGFyICpwYXR0ZXJuLCBjb25zdCBjaGFyICpzdHJpbmcsCisJCSAgICAgICBpbnQgZmxhZ3MsIGludCBwcmVmaXgpCit7CisJaW50IGZubV9mbGFncyA9IDA7CisJaWYgKGZsYWdzICYgR0ZOTV9QQVRITkFNRSkKKwkJZm5tX2ZsYWdzIHw9IEZOTV9QQVRITkFNRTsKKwlpZiAocHJlZml4ID4gMCkgeworCQlpZiAoc3RybmNtcChwYXR0ZXJuLCBzdHJpbmcsIHByZWZpeCkpCisJCQlyZXR1cm4gRk5NX05PTUFUQ0g7CisJCXBhdHRlcm4gKz0gcHJlZml4OworCQlzdHJpbmcgKz0gcHJlZml4OworCX0KKwlpZiAoZmxhZ3MgJiBHRk5NX09ORVNUQVIpIHsKKwkJaW50IHBhdHRlcm5fbGVuID0gc3RybGVuKCsrcGF0dGVybik7CisJCWludCBzdHJpbmdfbGVuID0gc3RybGVuKHN0cmluZyk7CisJCXJldHVybiBzdHJpbmdfbGVuIDwgcGF0dGVybl9sZW4gfHwKKwkJICAgICAgIHN0cmNtcChwYXR0ZXJuLAorCQkJICAgICAgc3RyaW5nICsgc3RyaW5nX2xlbiAtIHBhdHRlcm5fbGVuKTsKKwl9CisJcmV0dXJuIGZubWF0Y2gocGF0dGVybiwgc3RyaW5nLCBmbm1fZmxhZ3MpOworfQorCitzdGF0aWMgaW50IGZubWF0Y2hfaWNhc2VfbWVtKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGludCBwYXR0ZXJubGVuLAorCQkJICAgICBjb25zdCBjaGFyICpzdHJpbmcsIGludCBzdHJpbmdsZW4sCisJCQkgICAgIGludCBmbGFncykKK3sKKwlpbnQgbWF0Y2hfc3RhdHVzOworCXN0cnVjdCBzdHJidWYgcGF0X2J1ZiA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBzdHJidWYgc3RyX2J1ZiA9IFNUUkJVRl9JTklUOworCWNvbnN0IGNoYXIgKnVzZV9wYXQgPSBwYXR0ZXJuOworCWNvbnN0IGNoYXIgKnVzZV9zdHIgPSBzdHJpbmc7CisKKwlpZiAocGF0dGVybltwYXR0ZXJubGVuXSkgeworCQlzdHJidWZfYWRkKCZwYXRfYnVmLCBwYXR0ZXJuLCBwYXR0ZXJubGVuKTsKKwkJdXNlX3BhdCA9IHBhdF9idWYuYnVmOworCX0KKwlpZiAoc3RyaW5nW3N0cmluZ2xlbl0pIHsKKwkJc3RyYnVmX2FkZCgmc3RyX2J1Ziwgc3RyaW5nLCBzdHJpbmdsZW4pOworCQl1c2Vfc3RyID0gc3RyX2J1Zi5idWY7CisJfQorCisJaWYgKGlnbm9yZV9jYXNlKQorCQlmbGFncyB8PSBXTV9DQVNFRk9MRDsKKwltYXRjaF9zdGF0dXMgPSB3aWxkbWF0Y2godXNlX3BhdCwgdXNlX3N0ciwgZmxhZ3MsIE5VTEwpOworCisJc3RyYnVmX3JlbGVhc2UoJnBhdF9idWYpOworCXN0cmJ1Zl9yZWxlYXNlKCZzdHJfYnVmKTsKKworCXJldHVybiBtYXRjaF9zdGF0dXM7Cit9CisKIHN0YXRpYyBzaXplX3QgY29tbW9uX3ByZWZpeF9sZW4oY29uc3QgY2hhciAqKnBhdGhzcGVjKQogewogCWNvbnN0IGNoYXIgKm4sICpmaXJzdDsKIAlzaXplX3QgbWF4ID0gMDsKKwlpbnQgbGl0ZXJhbCA9IGxpbWl0X3BhdGhzcGVjX3RvX2xpdGVyYWwoKTsKIAogCWlmICghcGF0aHNwZWMpCiAJCXJldHVybiBtYXg7CkBAIC00Nyw3ICsxMTYsNyBAQAogCQlzaXplX3QgaSwgbGVuID0gMDsKIAkJZm9yIChpID0gMDsgZmlyc3QgPT0gbiB8fCBpIDwgbWF4OyBpKyspIHsKIAkJCWNoYXIgYyA9IG5baV07Ci0JCQlpZiAoIWMgfHwgYyAhPSBmaXJzdFtpXSB8fCBpc19nbG9iX3NwZWNpYWwoYykpCisJCQlpZiAoIWMgfHwgYyAhPSBmaXJzdFtpXSB8fCAoIWxpdGVyYWwgJiYgaXNfZ2xvYl9zcGVjaWFsKGMpKSkKIAkJCQlicmVhazsKIAkJCWlmIChjID09ICcvJykKIAkJCQlsZW4gPSBpICsgMTsKQEAgLTExNyw2ICsxODYsNyBAQAogc3RhdGljIGludCBtYXRjaF9vbmUoY29uc3QgY2hhciAqbWF0Y2gsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuYW1lbGVuKQogewogCWludCBtYXRjaGxlbjsKKwlpbnQgbGl0ZXJhbCA9IGxpbWl0X3BhdGhzcGVjX3RvX2xpdGVyYWwoKTsKIAogCS8qIElmIHRoZSBtYXRjaCB3YXMganVzdCB0aGUgcHJlZml4LCB3ZSBtYXRjaGVkICovCiAJaWYgKCEqbWF0Y2gpCkBAIC0xMjYsNyArMTk2LDcgQEAKIAkJZm9yICg7OykgewogCQkJdW5zaWduZWQgY2hhciBjMSA9IHRvbG93ZXIoKm1hdGNoKTsKIAkJCXVuc2lnbmVkIGNoYXIgYzIgPSB0b2xvd2VyKCpuYW1lKTsKLQkJCWlmIChjMSA9PSAnXDAnIHx8IGlzX2dsb2Jfc3BlY2lhbChjMSkpCisJCQlpZiAoYzEgPT0gJ1wwJyB8fCAoIWxpdGVyYWwgJiYgaXNfZ2xvYl9zcGVjaWFsKGMxKSkpCiAJCQkJYnJlYWs7CiAJCQlpZiAoYzEgIT0gYzIpCiAJCQkJcmV0dXJuIDA7CkBAIC0xMzgsNyArMjA4LDcgQEAKIAkJZm9yICg7OykgewogCQkJdW5zaWduZWQgY2hhciBjMSA9ICptYXRjaDsKIAkJCXVuc2lnbmVkIGNoYXIgYzIgPSAqbmFtZTsKLQkJCWlmIChjMSA9PSAnXDAnIHx8IGlzX2dsb2Jfc3BlY2lhbChjMSkpCisJCQlpZiAoYzEgPT0gJ1wwJyB8fCAoIWxpdGVyYWwgJiYgaXNfZ2xvYl9zcGVjaWFsKGMxKSkpCiAJCQkJYnJlYWs7CiAJCQlpZiAoYzEgIT0gYzIpCiAJCQkJcmV0dXJuIDA7CkBAIC0xNDgsMTQgKzIxOCwxNiBAQAogCQl9CiAJfQogCi0KIAkvKgogCSAqIElmIHdlIGRvbid0IG1hdGNoIHRoZSBtYXRjaHN0cmluZyBleGFjdGx5LAogCSAqIHdlIG5lZWQgdG8gbWF0Y2ggYnkgZm5tYXRjaAogCSAqLwogCW1hdGNobGVuID0gc3RybGVuKG1hdGNoKTsKLQlpZiAoc3RybmNtcF9pY2FzZShtYXRjaCwgbmFtZSwgbWF0Y2hsZW4pKQorCWlmIChzdHJuY21wX2ljYXNlKG1hdGNoLCBuYW1lLCBtYXRjaGxlbikpIHsKKwkJaWYgKGxpdGVyYWwpCisJCQlyZXR1cm4gMDsKIAkJcmV0dXJuICFmbm1hdGNoX2ljYXNlKG1hdGNoLCBuYW1lLCAwKSA/IE1BVENIRURfRk5NQVRDSCA6IDA7CisJfQogCiAJaWYgKG5hbWVsZW4gPT0gbWF0Y2hsZW4pCiAJCXJldHVybiBNQVRDSEVEX0VYQUNUTFk7CkBAIC0xNjUsMTIgKzIzNywxOSBAQAogfQogCiAvKgotICogR2l2ZW4gYSBuYW1lIGFuZCBhIGxpc3Qgb2YgcGF0aHNwZWNzLCBzZWUgaWYgdGhlIG5hbWUgbWF0Y2hlcwotICogYW55IG9mIHRoZSBwYXRoc3BlY3MuICBUaGUgY2FsbGVyIGlzIGFsc28gaW50ZXJlc3RlZCBpbiBzZWVpbmcKLSAqIGFsbCBwYXRoc3BlYyBtYXRjaGVzIHNvbWUgbmFtZXMgaXQgY2FsbHMgdGhpcyBmdW5jdGlvbiB3aXRoCi0gKiAob3RoZXJ3aXNlIHRoZSB1c2VyIGNvdWxkIGhhdmUgbWlzdHlwZWQgdGhlIHVubWF0Y2hlZCBwYXRoc3BlYyksCi0gKiBhbmQgYSBtYXJrIGlzIGxlZnQgaW4gc2VlbltdIGFycmF5IGZvciBwYXRoc3BlYyBlbGVtZW50IHRoYXQKLSAqIGFjdHVhbGx5IG1hdGNoZWQgYW55dGhpbmcuCisgKiBHaXZlbiBhIG5hbWUgYW5kIGEgbGlzdCBvZiBwYXRoc3BlY3MsIHJldHVybnMgdGhlIG5hdHVyZSBvZiB0aGUKKyAqIGNsb3Nlc3QgKGkuZS4gbW9zdCBzcGVjaWZpYykgbWF0Y2ggb2YgdGhlIG5hbWUgdG8gYW55IG9mIHRoZQorICogcGF0aHNwZWNzLgorICoKKyAqIFRoZSBjYWxsZXIgdHlwaWNhbGx5IGNhbGxzIHRoaXMgbXVsdGlwbGUgdGltZXMgd2l0aCB0aGUgc2FtZQorICogcGF0aHNwZWMgYW5kIHNlZW5bXSBhcnJheSBidXQgd2l0aCBkaWZmZXJlbnQgbmFtZS9uYW1lbGVuCisgKiAoZS5nLiBlbnRyaWVzIGZyb20gdGhlIGluZGV4KSBhbmQgaXMgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaWYgYW5kCisgKiBob3cgZWFjaCBwYXRoc3BlYyBtYXRjaGVzIGFsbCB0aGUgbmFtZXMgaXQgY2FsbHMgdGhpcyBmdW5jdGlvbgorICogd2l0aC4gIEEgbWFyayBpcyBsZWZ0IGluIHRoZSBzZWVuW10gYXJyYXkgZm9yIGVhY2ggcGF0aHNwZWMgZWxlbWVudAorICogaW5kaWNhdGluZyB0aGUgY2xvc2VzdCB0eXBlIG9mIG1hdGNoIHRoYXQgZWxlbWVudCBhY2hpZXZlZCwgc28gaWYKKyAqIHNlZW5bbl0gcmVtYWlucyB6ZXJvIGFmdGVyIG11bHRpcGxlIGludm9jYXRpb25zLCB0aGF0IG1lYW5zIHRoZSBudGgKKyAqIHBhdGhzcGVjIGRpZCBub3QgbWF0Y2ggYW55IG5hbWVzLCB3aGljaCBjb3VsZCBpbmRpY2F0ZSB0aGF0IHRoZQorICogdXNlciBtaXN0eXBlZCB0aGUgbnRoIHBhdGhzcGVjLgogICovCiBpbnQgbWF0Y2hfcGF0aHNwZWMoY29uc3QgY2hhciAqKnBhdGhzcGVjLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbmFtZWxlbiwKIAkJaW50IHByZWZpeCwgY2hhciAqc2VlbikKQEAgLTIzMCwxOSArMzA5LDI5IEBACiAJCQlyZXR1cm4gTUFUQ0hFRF9SRUNVUlNJVkVMWTsKIAl9CiAKLQlpZiAoaXRlbS0+dXNlX3dpbGRjYXJkICYmICFmbm1hdGNoKG1hdGNoLCBuYW1lLCAwKSkKKwlpZiAoaXRlbS0+bm93aWxkY2FyZF9sZW4gPCBpdGVtLT5sZW4gJiYKKwkgICAgIWdpdF9mbm1hdGNoKG1hdGNoLCBuYW1lLAorCQkJIGl0ZW0tPmZsYWdzICYgUEFUSFNQRUNfT05FU1RBUiA/IEdGTk1fT05FU1RBUiA6IDAsCisJCQkgaXRlbS0+bm93aWxkY2FyZF9sZW4gLSBwcmVmaXgpKQogCQlyZXR1cm4gTUFUQ0hFRF9GTk1BVENIOwogCiAJcmV0dXJuIDA7CiB9CiAKIC8qCi0gKiBHaXZlbiBhIG5hbWUgYW5kIGEgbGlzdCBvZiBwYXRoc3BlY3MsIHNlZSBpZiB0aGUgbmFtZSBtYXRjaGVzCi0gKiBhbnkgb2YgdGhlIHBhdGhzcGVjcy4gIFRoZSBjYWxsZXIgaXMgYWxzbyBpbnRlcmVzdGVkIGluIHNlZWluZwotICogYWxsIHBhdGhzcGVjIG1hdGNoZXMgc29tZSBuYW1lcyBpdCBjYWxscyB0aGlzIGZ1bmN0aW9uIHdpdGgKLSAqIChvdGhlcndpc2UgdGhlIHVzZXIgY291bGQgaGF2ZSBtaXN0eXBlZCB0aGUgdW5tYXRjaGVkIHBhdGhzcGVjKSwKLSAqIGFuZCBhIG1hcmsgaXMgbGVmdCBpbiBzZWVuW10gYXJyYXkgZm9yIHBhdGhzcGVjIGVsZW1lbnQgdGhhdAotICogYWN0dWFsbHkgbWF0Y2hlZCBhbnl0aGluZy4KKyAqIEdpdmVuIGEgbmFtZSBhbmQgYSBsaXN0IG9mIHBhdGhzcGVjcywgcmV0dXJucyB0aGUgbmF0dXJlIG9mIHRoZQorICogY2xvc2VzdCAoaS5lLiBtb3N0IHNwZWNpZmljKSBtYXRjaCBvZiB0aGUgbmFtZSB0byBhbnkgb2YgdGhlCisgKiBwYXRoc3BlY3MuCisgKgorICogVGhlIGNhbGxlciB0eXBpY2FsbHkgY2FsbHMgdGhpcyBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lCisgKiBwYXRoc3BlYyBhbmQgc2VlbltdIGFycmF5IGJ1dCB3aXRoIGRpZmZlcmVudCBuYW1lL25hbWVsZW4KKyAqIChlLmcuIGVudHJpZXMgZnJvbSB0aGUgaW5kZXgpIGFuZCBpcyBpbnRlcmVzdGVkIGluIHNlZWluZyBpZiBhbmQKKyAqIGhvdyBlYWNoIHBhdGhzcGVjIG1hdGNoZXMgYWxsIHRoZSBuYW1lcyBpdCBjYWxscyB0aGlzIGZ1bmN0aW9uCisgKiB3aXRoLiAgQSBtYXJrIGlzIGxlZnQgaW4gdGhlIHNlZW5bXSBhcnJheSBmb3IgZWFjaCBwYXRoc3BlYyBlbGVtZW50CisgKiBpbmRpY2F0aW5nIHRoZSBjbG9zZXN0IHR5cGUgb2YgbWF0Y2ggdGhhdCBlbGVtZW50IGFjaGlldmVkLCBzbyBpZgorICogc2VlbltuXSByZW1haW5zIHplcm8gYWZ0ZXIgbXVsdGlwbGUgaW52b2NhdGlvbnMsIHRoYXQgbWVhbnMgdGhlIG50aAorICogcGF0aHNwZWMgZGlkIG5vdCBtYXRjaCBhbnkgbmFtZXMsIHdoaWNoIGNvdWxkIGluZGljYXRlIHRoYXQgdGhlCisgKiB1c2VyIG1pc3R5cGVkIHRoZSBudGggcGF0aHNwZWMuCiAgKi8KIGludCBtYXRjaF9wYXRoc3BlY19kZXB0aChjb25zdCBzdHJ1Y3QgcGF0aHNwZWMgKnBzLAogCQkJIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuYW1lbGVuLApAQCAtMjg4LDUwICszNzcsOTMgQEAKIAlyZXR1cm4gcmV0dmFsOwogfQogCisvKgorICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlICJzaW1wbGUiIHBhcnQgb2YgYSBwYXRoIG1hdGNoIGxpbWl0ZXIuCisgKi8KK3N0YXRpYyBpbnQgc2ltcGxlX2xlbmd0aChjb25zdCBjaGFyICptYXRjaCkKK3sKKwlpbnQgbGVuID0gLTE7CisKKwlmb3IgKDs7KSB7CisJCXVuc2lnbmVkIGNoYXIgYyA9ICptYXRjaCsrOworCQlsZW4rKzsKKwkJaWYgKGMgPT0gJ1wwJyB8fCBpc19nbG9iX3NwZWNpYWwoYykpCisJCQlyZXR1cm4gbGVuOworCX0KK30KKwogc3RhdGljIGludCBub193aWxkY2FyZChjb25zdCBjaGFyICpzdHJpbmcpCiB7Ci0JcmV0dXJuIHN0cmluZ1tzdHJjc3BuKHN0cmluZywgIio/W3tcXCIpXSA9PSAnXDAnOworCXJldHVybiBzdHJpbmdbc2ltcGxlX2xlbmd0aChzdHJpbmcpXSA9PSAnXDAnOworfQorCit2b2lkIHBhcnNlX2V4Y2x1ZGVfcGF0dGVybihjb25zdCBjaGFyICoqcGF0dGVybiwKKwkJCSAgIGludCAqcGF0dGVybmxlbiwKKwkJCSAgIGludCAqZmxhZ3MsCisJCQkgICBpbnQgKm5vd2lsZGNhcmRsZW4pCit7CisJY29uc3QgY2hhciAqcCA9ICpwYXR0ZXJuOworCXNpemVfdCBpLCBsZW47CisKKwkqZmxhZ3MgPSAwOworCWlmICgqcCA9PSAnIScpIHsKKwkJKmZsYWdzIHw9IEVYQ19GTEFHX05FR0FUSVZFOworCQlwKys7CisJfQorCWxlbiA9IHN0cmxlbihwKTsKKwlpZiAobGVuICYmIHBbbGVuIC0gMV0gPT0gJy8nKSB7CisJCWxlbi0tOworCQkqZmxhZ3MgfD0gRVhDX0ZMQUdfTVVTVEJFRElSOworCX0KKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKwkJaWYgKHBbaV0gPT0gJy8nKQorCQkJYnJlYWs7CisJfQorCWlmIChpID09IGxlbikKKwkJKmZsYWdzIHw9IEVYQ19GTEFHX05PRElSOworCSpub3dpbGRjYXJkbGVuID0gc2ltcGxlX2xlbmd0aChwKTsKKwkvKgorCSAqIHdlIHNob3VsZCBoYXZlIGV4Y2x1ZGVkIHRoZSB0cmFpbGluZyBzbGFzaCBmcm9tICdwJyB0b28sCisJICogYnV0IHRoYXQncyBvbmUgbW9yZSBhbGxvY2F0aW9uLiBJbnN0ZWFkIGp1c3QgbWFrZSBzdXJlCisJICogbm93aWxkY2FyZGxlbiBkb2VzIG5vdCBleGNlZWQgcmVhbCBwYXR0ZXJubGVuCisJICovCisJaWYgKCpub3dpbGRjYXJkbGVuID4gbGVuKQorCQkqbm93aWxkY2FyZGxlbiA9IGxlbjsKKwlpZiAoKnAgPT0gJyonICYmIG5vX3dpbGRjYXJkKHAgKyAxKSkKKwkJKmZsYWdzIHw9IEVYQ19GTEFHX0VORFNXSVRIOworCSpwYXR0ZXJuID0gcDsKKwkqcGF0dGVybmxlbiA9IGxlbjsKIH0KIAogdm9pZCBhZGRfZXhjbHVkZShjb25zdCBjaGFyICpzdHJpbmcsIGNvbnN0IGNoYXIgKmJhc2UsCi0JCSBpbnQgYmFzZWxlbiwgc3RydWN0IGV4Y2x1ZGVfbGlzdCAqd2hpY2gpCisJCSBpbnQgYmFzZWxlbiwgc3RydWN0IGV4Y2x1ZGVfbGlzdCAqZWwsIGludCBzcmNwb3MpCiB7CiAJc3RydWN0IGV4Y2x1ZGUgKng7Ci0Jc2l6ZV90IGxlbjsKLQlpbnQgdG9fZXhjbHVkZSA9IDE7Ci0JaW50IGZsYWdzID0gMDsKKwlpbnQgcGF0dGVybmxlbjsKKwlpbnQgZmxhZ3M7CisJaW50IG5vd2lsZGNhcmRsZW47CiAKLQlpZiAoKnN0cmluZyA9PSAnIScpIHsKLQkJdG9fZXhjbHVkZSA9IDA7Ci0JCXN0cmluZysrOwotCX0KLQlsZW4gPSBzdHJsZW4oc3RyaW5nKTsKLQlpZiAobGVuICYmIHN0cmluZ1tsZW4gLSAxXSA9PSAnLycpIHsKKwlwYXJzZV9leGNsdWRlX3BhdHRlcm4oJnN0cmluZywgJnBhdHRlcm5sZW4sICZmbGFncywgJm5vd2lsZGNhcmRsZW4pOworCWlmIChmbGFncyAmIEVYQ19GTEFHX01VU1RCRURJUikgewogCQljaGFyICpzOwotCQl4ID0geG1hbGxvYyhzaXplb2YoKngpICsgbGVuKTsKKwkJeCA9IHhtYWxsb2Moc2l6ZW9mKCp4KSArIHBhdHRlcm5sZW4gKyAxKTsKIAkJcyA9IChjaGFyICopKHgrMSk7Ci0JCW1lbWNweShzLCBzdHJpbmcsIGxlbiAtIDEpOwotCQlzW2xlbiAtIDFdID0gJ1wwJzsKLQkJc3RyaW5nID0gczsKKwkJbWVtY3B5KHMsIHN0cmluZywgcGF0dGVybmxlbik7CisJCXNbcGF0dGVybmxlbl0gPSAnXDAnOwogCQl4LT5wYXR0ZXJuID0gczsKLQkJZmxhZ3MgPSBFWENfRkxBR19NVVNUQkVESVI7CiAJfSBlbHNlIHsKIAkJeCA9IHhtYWxsb2Moc2l6ZW9mKCp4KSk7CiAJCXgtPnBhdHRlcm4gPSBzdHJpbmc7CiAJfQotCXgtPnRvX2V4Y2x1ZGUgPSB0b19leGNsdWRlOwotCXgtPnBhdHRlcm5sZW4gPSBzdHJsZW4oc3RyaW5nKTsKKwl4LT5wYXR0ZXJubGVuID0gcGF0dGVybmxlbjsKKwl4LT5ub3dpbGRjYXJkbGVuID0gbm93aWxkY2FyZGxlbjsKIAl4LT5iYXNlID0gYmFzZTsKIAl4LT5iYXNlbGVuID0gYmFzZWxlbjsKIAl4LT5mbGFncyA9IGZsYWdzOwotCWlmICghc3RyY2hyKHN0cmluZywgJy8nKSkKLQkJeC0+ZmxhZ3MgfD0gRVhDX0ZMQUdfTk9ESVI7Ci0JaWYgKG5vX3dpbGRjYXJkKHN0cmluZykpCi0JCXgtPmZsYWdzIHw9IEVYQ19GTEFHX05PV0lMRENBUkQ7Ci0JaWYgKCpzdHJpbmcgPT0gJyonICYmIG5vX3dpbGRjYXJkKHN0cmluZysxKSkKLQkJeC0+ZmxhZ3MgfD0gRVhDX0ZMQUdfRU5EU1dJVEg7Ci0JQUxMT0NfR1JPVyh3aGljaC0+ZXhjbHVkZXMsIHdoaWNoLT5uciArIDEsIHdoaWNoLT5hbGxvYyk7Ci0Jd2hpY2gtPmV4Y2x1ZGVzW3doaWNoLT5ucisrXSA9IHg7CisJeC0+c3JjcG9zID0gc3JjcG9zOworCUFMTE9DX0dST1coZWwtPmV4Y2x1ZGVzLCBlbC0+bnIgKyAxLCBlbC0+YWxsb2MpOworCWVsLT5leGNsdWRlc1tlbC0+bnIrK10gPSB4OworCXgtPmVsID0gZWw7CiB9CiAKIHN0YXRpYyB2b2lkICpyZWFkX3NraXBfd29ya3RyZWVfZmlsZV9mcm9tX2luZGV4KGNvbnN0IGNoYXIgKnBhdGgsIHNpemVfdCAqc2l6ZSkKQEAgLTM1NywzMiArNDg5LDM5IEBACiAJcmV0dXJuIGRhdGE7CiB9CiAKLXZvaWQgZnJlZV9leGNsdWRlcyhzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbCkKKy8qCisgKiBGcmVlcyBtZW1vcnkgd2l0aGluIGVsIHdoaWNoIHdhcyBhbGxvY2F0ZWQgZm9yIGV4Y2x1ZGUgcGF0dGVybnMgYW5kCisgKiB0aGUgZmlsZSBidWZmZXIuICBEb2VzIG5vdCBmcmVlIGVsIGl0c2VsZi4KKyAqLwordm9pZCBjbGVhcl9leGNsdWRlX2xpc3Qoc3RydWN0IGV4Y2x1ZGVfbGlzdCAqZWwpCiB7CiAJaW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgZWwtPm5yOyBpKyspCiAJCWZyZWUoZWwtPmV4Y2x1ZGVzW2ldKTsKIAlmcmVlKGVsLT5leGNsdWRlcyk7CisJZnJlZShlbC0+ZmlsZWJ1Zik7CiAKIAllbC0+bnIgPSAwOwogCWVsLT5leGNsdWRlcyA9IE5VTEw7CisJZWwtPmZpbGVidWYgPSBOVUxMOwogfQogCiBpbnQgYWRkX2V4Y2x1ZGVzX2Zyb21fZmlsZV90b19saXN0KGNvbnN0IGNoYXIgKmZuYW1lLAogCQkJCSAgIGNvbnN0IGNoYXIgKmJhc2UsCiAJCQkJICAgaW50IGJhc2VsZW4sCi0JCQkJICAgY2hhciAqKmJ1Zl9wLAotCQkJCSAgIHN0cnVjdCBleGNsdWRlX2xpc3QgKndoaWNoLAorCQkJCSAgIHN0cnVjdCBleGNsdWRlX2xpc3QgKmVsLAogCQkJCSAgIGludCBjaGVja19pbmRleCkKIHsKIAlzdHJ1Y3Qgc3RhdCBzdDsKLQlpbnQgZmQsIGk7CisJaW50IGZkLCBpLCBsaW5lbm8gPSAxOwogCXNpemVfdCBzaXplID0gMDsKIAljaGFyICpidWYsICplbnRyeTsKIAogCWZkID0gb3BlbihmbmFtZSwgT19SRE9OTFkpOwogCWlmIChmZCA8IDAgfHwgZnN0YXQoZmQsICZzdCkgPCAwKSB7CisJCWlmIChlcnJubyAhPSBFTk9FTlQpCisJCQl3YXJuX29uX2luYWNjZXNzaWJsZShmbmFtZSk7CiAJCWlmICgwIDw9IGZkKQogCQkJY2xvc2UoZmQpOwogCQlpZiAoIWNoZWNrX2luZGV4IHx8CkBAIC00MTMsNTEgKzU1MiwyNDQgQEAKIAkJY2xvc2UoZmQpOwogCX0KIAotCWlmIChidWZfcCkKLQkJKmJ1Zl9wID0gYnVmOworCWVsLT5maWxlYnVmID0gYnVmOwogCWVudHJ5ID0gYnVmOwogCWZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKIAkJaWYgKGJ1ZltpXSA9PSAnXG4nKSB7CiAJCQlpZiAoZW50cnkgIT0gYnVmICsgaSAmJiBlbnRyeVswXSAhPSAnIycpIHsKIAkJCQlidWZbaSAtIChpICYmIGJ1ZltpLTFdID09ICdccicpXSA9IDA7Ci0JCQkJYWRkX2V4Y2x1ZGUoZW50cnksIGJhc2UsIGJhc2VsZW4sIHdoaWNoKTsKKwkJCQlhZGRfZXhjbHVkZShlbnRyeSwgYmFzZSwgYmFzZWxlbiwgZWwsIGxpbmVubyk7CiAJCQl9CisJCQlsaW5lbm8rKzsKIAkJCWVudHJ5ID0gYnVmICsgaSArIDE7CiAJCX0KIAl9CiAJcmV0dXJuIDA7CiB9CiAKK3N0cnVjdCBleGNsdWRlX2xpc3QgKmFkZF9leGNsdWRlX2xpc3Qoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwKKwkJCQkgICAgICBpbnQgZ3JvdXBfdHlwZSwgY29uc3QgY2hhciAqc3JjKQoreworCXN0cnVjdCBleGNsdWRlX2xpc3QgKmVsOworCXN0cnVjdCBleGNsdWRlX2xpc3RfZ3JvdXAgKmdyb3VwOworCisJZ3JvdXAgPSAmZGlyLT5leGNsdWRlX2xpc3RfZ3JvdXBbZ3JvdXBfdHlwZV07CisJQUxMT0NfR1JPVyhncm91cC0+ZWwsIGdyb3VwLT5uciArIDEsIGdyb3VwLT5hbGxvYyk7CisJZWwgPSAmZ3JvdXAtPmVsW2dyb3VwLT5ucisrXTsKKwltZW1zZXQoZWwsIDAsIHNpemVvZigqZWwpKTsKKwllbC0+c3JjID0gc3JjOworCXJldHVybiBlbDsKK30KKworLyoKKyAqIFVzZWQgdG8gc2V0IHVwIGNvcmUuZXhjbHVkZXNmaWxlIGFuZCAuZ2l0L2luZm8vZXhjbHVkZSBsaXN0cy4KKyAqLwogdm9pZCBhZGRfZXhjbHVkZXNfZnJvbV9maWxlKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsIGNvbnN0IGNoYXIgKmZuYW1lKQogewotCWlmIChhZGRfZXhjbHVkZXNfZnJvbV9maWxlX3RvX2xpc3QoZm5hbWUsICIiLCAwLCBOVUxMLAotCQkJCQkgICAmZGlyLT5leGNsdWRlX2xpc3RbRVhDX0ZJTEVdLCAwKSA8IDApCisJc3RydWN0IGV4Y2x1ZGVfbGlzdCAqZWw7CisJZWwgPSBhZGRfZXhjbHVkZV9saXN0KGRpciwgRVhDX0ZJTEUsIGZuYW1lKTsKKwlpZiAoYWRkX2V4Y2x1ZGVzX2Zyb21fZmlsZV90b19saXN0KGZuYW1lLCAiIiwgMCwgZWwsIDApIDwgMCkKIAkJZGllKCJjYW5ub3QgdXNlICVzIGFzIGFuIGV4Y2x1ZGUgZmlsZSIsIGZuYW1lKTsKIH0KIAoraW50IG1hdGNoX2Jhc2VuYW1lKGNvbnN0IGNoYXIgKmJhc2VuYW1lLCBpbnQgYmFzZW5hbWVsZW4sCisJCSAgIGNvbnN0IGNoYXIgKnBhdHRlcm4sIGludCBwcmVmaXgsIGludCBwYXR0ZXJubGVuLAorCQkgICBpbnQgZmxhZ3MpCit7CisJaWYgKHByZWZpeCA9PSBwYXR0ZXJubGVuKSB7CisJCWlmIChwYXR0ZXJubGVuID09IGJhc2VuYW1lbGVuICYmCisJCSAgICAhc3RybmNtcF9pY2FzZShwYXR0ZXJuLCBiYXNlbmFtZSwgYmFzZW5hbWVsZW4pKQorCQkJcmV0dXJuIDE7CisJfSBlbHNlIGlmIChmbGFncyAmIEVYQ19GTEFHX0VORFNXSVRIKSB7CisJCS8qICIqbGl0ZXJhbCIgbWF0Y2hpbmcgYWdhaW5zdCAiZm9vbGl0ZXJhbCIgKi8KKwkJaWYgKHBhdHRlcm5sZW4gLSAxIDw9IGJhc2VuYW1lbGVuICYmCisJCSAgICAhc3RybmNtcF9pY2FzZShwYXR0ZXJuICsgMSwKKwkJCQkgICBiYXNlbmFtZSArIGJhc2VuYW1lbGVuIC0gKHBhdHRlcm5sZW4gLSAxKSwKKwkJCQkgICBwYXR0ZXJubGVuIC0gMSkpCisJCQlyZXR1cm4gMTsKKwl9IGVsc2UgeworCQlpZiAoZm5tYXRjaF9pY2FzZV9tZW0ocGF0dGVybiwgcGF0dGVybmxlbiwKKwkJCQkgICAgICBiYXNlbmFtZSwgYmFzZW5hbWVsZW4sCisJCQkJICAgICAgMCkgPT0gMCkKKwkJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsKK30KKworaW50IG1hdGNoX3BhdGhuYW1lKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgcGF0aGxlbiwKKwkJICAgY29uc3QgY2hhciAqYmFzZSwgaW50IGJhc2VsZW4sCisJCSAgIGNvbnN0IGNoYXIgKnBhdHRlcm4sIGludCBwcmVmaXgsIGludCBwYXR0ZXJubGVuLAorCQkgICBpbnQgZmxhZ3MpCit7CisJY29uc3QgY2hhciAqbmFtZTsKKwlpbnQgbmFtZWxlbjsKKworCS8qCisJICogbWF0Y2ggd2l0aCBGTk1fUEFUSE5BTUU7IHRoZSBwYXR0ZXJuIGhhcyBiYXNlIGltcGxpY2l0bHkKKwkgKiBpbiBmcm9udCBvZiBpdC4KKwkgKi8KKwlpZiAoKnBhdHRlcm4gPT0gJy8nKSB7CisJCXBhdHRlcm4rKzsKKwkJcGF0dGVybmxlbi0tOworCQlwcmVmaXgtLTsKKwl9CisKKwkvKgorCSAqIGJhc2VsZW4gZG9lcyBub3QgY291bnQgdGhlIHRyYWlsaW5nIHNsYXNoLiBiYXNlW10gbWF5IG9yCisJICogbWF5IG5vdCBlbmQgd2l0aCBhIHRyYWlsaW5nIHNsYXNoIHRob3VnaC4KKwkgKi8KKwlpZiAocGF0aGxlbiA8IGJhc2VsZW4gKyAxIHx8CisJICAgIChiYXNlbGVuICYmIHBhdGhuYW1lW2Jhc2VsZW5dICE9ICcvJykgfHwKKwkgICAgc3RybmNtcF9pY2FzZShwYXRobmFtZSwgYmFzZSwgYmFzZWxlbikpCisJCXJldHVybiAwOworCisJbmFtZWxlbiA9IGJhc2VsZW4gPyBwYXRobGVuIC0gYmFzZWxlbiAtIDEgOiBwYXRobGVuOworCW5hbWUgPSBwYXRobmFtZSArIHBhdGhsZW4gLSBuYW1lbGVuOworCisJaWYgKHByZWZpeCkgeworCQkvKgorCQkgKiBpZiB0aGUgbm9uLXdpbGRjYXJkIHBhcnQgaXMgbG9uZ2VyIHRoYW4gdGhlCisJCSAqIHJlbWFpbmluZyBwYXRobmFtZSwgc3VyZWx5IGl0IGNhbm5vdCBtYXRjaC4KKwkJICovCisJCWlmIChwcmVmaXggPiBuYW1lbGVuKQorCQkJcmV0dXJuIDA7CisKKwkJaWYgKHN0cm5jbXBfaWNhc2UocGF0dGVybiwgbmFtZSwgcHJlZml4KSkKKwkJCXJldHVybiAwOworCQlwYXR0ZXJuICs9IHByZWZpeDsKKwkJcGF0dGVybmxlbiAtPSBwcmVmaXg7CisJCW5hbWUgICAgKz0gcHJlZml4OworCQluYW1lbGVuIC09IHByZWZpeDsKKworCQkvKgorCQkgKiBJZiB0aGUgd2hvbGUgcGF0dGVybiBkaWQgbm90IGhhdmUgYSB3aWxkY2FyZCwKKwkJICogdGhlbiBvdXIgcHJlZml4IG1hdGNoIGlzIGFsbCB3ZSBuZWVkOyB3ZQorCQkgKiBkbyBub3QgbmVlZCB0byBjYWxsIGZubWF0Y2ggYXQgYWxsLgorCQkgKi8KKwkJaWYgKCFwYXR0ZXJubGVuICYmICFuYW1lbGVuKQorCQkJcmV0dXJuIDE7CisJfQorCisJcmV0dXJuIGZubWF0Y2hfaWNhc2VfbWVtKHBhdHRlcm4sIHBhdHRlcm5sZW4sCisJCQkJIG5hbWUsIG5hbWVsZW4sCisJCQkJIFdNX1BBVEhOQU1FKSA9PSAwOworfQorCisvKgorICogU2NhbiB0aGUgZ2l2ZW4gZXhjbHVkZSBsaXN0IGluIHJldmVyc2UgdG8gc2VlIHdoZXRoZXIgcGF0aG5hbWUKKyAqIHNob3VsZCBiZSBpZ25vcmVkLiAgVGhlIGZpcnN0IG1hdGNoIChpLmUuIHRoZSBsYXN0IG9uIHRoZSBsaXN0KSwgaWYKKyAqIGFueSwgZGV0ZXJtaW5lcyB0aGUgZmF0ZS4gIFJldHVybnMgdGhlIGV4Y2x1ZGVfbGlzdCBlbGVtZW50IHdoaWNoCisgKiBtYXRjaGVkLCBvciBOVUxMIGZvciB1bmRlY2lkZWQuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgZXhjbHVkZSAqbGFzdF9leGNsdWRlX21hdGNoaW5nX2Zyb21fbGlzdChjb25zdCBjaGFyICpwYXRobmFtZSwKKwkJCQkJCSAgICAgICBpbnQgcGF0aGxlbiwKKwkJCQkJCSAgICAgICBjb25zdCBjaGFyICpiYXNlbmFtZSwKKwkJCQkJCSAgICAgICBpbnQgKmR0eXBlLAorCQkJCQkJICAgICAgIHN0cnVjdCBleGNsdWRlX2xpc3QgKmVsKQoreworCWludCBpOworCisJaWYgKCFlbC0+bnIpCisJCXJldHVybiBOVUxMOwkvKiB1bmRlZmluZWQgKi8KKworCWZvciAoaSA9IGVsLT5uciAtIDE7IDAgPD0gaTsgaS0tKSB7CisJCXN0cnVjdCBleGNsdWRlICp4ID0gZWwtPmV4Y2x1ZGVzW2ldOworCQljb25zdCBjaGFyICpleGNsdWRlID0geC0+cGF0dGVybjsKKwkJaW50IHByZWZpeCA9IHgtPm5vd2lsZGNhcmRsZW47CisKKwkJaWYgKHgtPmZsYWdzICYgRVhDX0ZMQUdfTVVTVEJFRElSKSB7CisJCQlpZiAoKmR0eXBlID09IERUX1VOS05PV04pCisJCQkJKmR0eXBlID0gZ2V0X2R0eXBlKE5VTEwsIHBhdGhuYW1lLCBwYXRobGVuKTsKKwkJCWlmICgqZHR5cGUgIT0gRFRfRElSKQorCQkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKHgtPmZsYWdzICYgRVhDX0ZMQUdfTk9ESVIpIHsKKwkJCWlmIChtYXRjaF9iYXNlbmFtZShiYXNlbmFtZSwKKwkJCQkJICAgcGF0aGxlbiAtIChiYXNlbmFtZSAtIHBhdGhuYW1lKSwKKwkJCQkJICAgZXhjbHVkZSwgcHJlZml4LCB4LT5wYXR0ZXJubGVuLAorCQkJCQkgICB4LT5mbGFncykpCisJCQkJcmV0dXJuIHg7CisJCQljb250aW51ZTsKKwkJfQorCisJCWFzc2VydCh4LT5iYXNlbGVuID09IDAgfHwgeC0+YmFzZVt4LT5iYXNlbGVuIC0gMV0gPT0gJy8nKTsKKwkJaWYgKG1hdGNoX3BhdGhuYW1lKHBhdGhuYW1lLCBwYXRobGVuLAorCQkJCSAgIHgtPmJhc2UsIHgtPmJhc2VsZW4gPyB4LT5iYXNlbGVuIC0gMSA6IDAsCisJCQkJICAgZXhjbHVkZSwgcHJlZml4LCB4LT5wYXR0ZXJubGVuLCB4LT5mbGFncykpCisJCQlyZXR1cm4geDsKKwl9CisJcmV0dXJuIE5VTEw7IC8qIHVuZGVjaWRlZCAqLworfQorCisvKgorICogU2NhbiB0aGUgbGlzdCBhbmQgbGV0IHRoZSBsYXN0IG1hdGNoIGRldGVybWluZSB0aGUgZmF0ZS4KKyAqIFJldHVybiAxIGZvciBleGNsdWRlLCAwIGZvciBpbmNsdWRlIGFuZCAtMSBmb3IgdW5kZWNpZGVkLgorICovCitpbnQgaXNfZXhjbHVkZWRfZnJvbV9saXN0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLAorCQkJICBpbnQgcGF0aGxlbiwgY29uc3QgY2hhciAqYmFzZW5hbWUsIGludCAqZHR5cGUsCisJCQkgIHN0cnVjdCBleGNsdWRlX2xpc3QgKmVsKQoreworCXN0cnVjdCBleGNsdWRlICpleGNsdWRlOworCWV4Y2x1ZGUgPSBsYXN0X2V4Y2x1ZGVfbWF0Y2hpbmdfZnJvbV9saXN0KHBhdGhuYW1lLCBwYXRobGVuLCBiYXNlbmFtZSwgZHR5cGUsIGVsKTsKKwlpZiAoZXhjbHVkZSkKKwkJcmV0dXJuIGV4Y2x1ZGUtPmZsYWdzICYgRVhDX0ZMQUdfTkVHQVRJVkUgPyAwIDogMTsKKwlyZXR1cm4gLTE7IC8qIHVuZGVjaWRlZCAqLworfQorCitzdGF0aWMgc3RydWN0IGV4Y2x1ZGUgKmxhc3RfZXhjbHVkZV9tYXRjaGluZ19mcm9tX2xpc3RzKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsCisJCWNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgcGF0aGxlbiwgY29uc3QgY2hhciAqYmFzZW5hbWUsCisJCWludCAqZHR5cGVfcCkKK3sKKwlpbnQgaSwgajsKKwlzdHJ1Y3QgZXhjbHVkZV9saXN0X2dyb3VwICpncm91cDsKKwlzdHJ1Y3QgZXhjbHVkZSAqZXhjbHVkZTsKKwlmb3IgKGkgPSBFWENfQ01ETDsgaSA8PSBFWENfRklMRTsgaSsrKSB7CisJCWdyb3VwID0gJmRpci0+ZXhjbHVkZV9saXN0X2dyb3VwW2ldOworCQlmb3IgKGogPSBncm91cC0+bnIgLSAxOyBqID49IDA7IGotLSkgeworCQkJZXhjbHVkZSA9IGxhc3RfZXhjbHVkZV9tYXRjaGluZ19mcm9tX2xpc3QoCisJCQkJcGF0aG5hbWUsIHBhdGhsZW4sIGJhc2VuYW1lLCBkdHlwZV9wLAorCQkJCSZncm91cC0+ZWxbal0pOworCQkJaWYgKGV4Y2x1ZGUpCisJCQkJcmV0dXJuIGV4Y2x1ZGU7CisJCX0KKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBMb2FkcyB0aGUgcGVyLWRpcmVjdG9yeSBleGNsdWRlIGxpc3QgZm9yIHRoZSBzdWJzdHJpbmcgb2YgYmFzZQorICogd2hpY2ggaGFzIGEgY2hhciBsZW5ndGggb2YgYmFzZWxlbi4KKyAqLwogc3RhdGljIHZvaWQgcHJlcF9leGNsdWRlKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsIGNvbnN0IGNoYXIgKmJhc2UsIGludCBiYXNlbGVuKQogeworCXN0cnVjdCBleGNsdWRlX2xpc3RfZ3JvdXAgKmdyb3VwOwogCXN0cnVjdCBleGNsdWRlX2xpc3QgKmVsOwogCXN0cnVjdCBleGNsdWRlX3N0YWNrICpzdGsgPSBOVUxMOwogCWludCBjdXJyZW50OwogCi0JaWYgKCghZGlyLT5leGNsdWRlX3Blcl9kaXIpIHx8Ci0JICAgIChiYXNlbGVuICsgc3RybGVuKGRpci0+ZXhjbHVkZV9wZXJfZGlyKSA+PSBQQVRIX01BWCkpCi0JCXJldHVybjsgLyogdG9vIGxvbmcgYSBwYXRoIC0tIGlnbm9yZSAqLworCWdyb3VwID0gJmRpci0+ZXhjbHVkZV9saXN0X2dyb3VwW0VYQ19ESVJTXTsKIAotCS8qIFBvcCB0aGUgb25lcyB0aGF0IGFyZSBub3QgdGhlIHByZWZpeCBvZiB0aGUgcGF0aCBiZWluZyBjaGVja2VkLiAqLwotCWVsID0gJmRpci0+ZXhjbHVkZV9saXN0W0VYQ19ESVJTXTsKKwkvKiBQb3AgdGhlIGV4Y2x1ZGUgbGlzdHMgZnJvbSB0aGUgRVhDTF9ESVJTIGV4Y2x1ZGVfbGlzdF9ncm91cAorCSAqIHdoaWNoIG9yaWdpbmF0ZSBmcm9tIGRpcmVjdG9yaWVzIG5vdCBpbiB0aGUgcHJlZml4IG9mIHRoZQorCSAqIHBhdGggYmVpbmcgY2hlY2tlZC4gKi8KIAl3aGlsZSAoKHN0ayA9IGRpci0+ZXhjbHVkZV9zdGFjaykgIT0gTlVMTCkgewogCQlpZiAoc3RrLT5iYXNlbGVuIDw9IGJhc2VsZW4gJiYKIAkJICAgICFzdHJuY21wKGRpci0+YmFzZWJ1ZiwgYmFzZSwgc3RrLT5iYXNlbGVuKSkKIAkJCWJyZWFrOworCQllbCA9ICZncm91cC0+ZWxbZGlyLT5leGNsdWRlX3N0YWNrLT5leGNsdWRlX2l4XTsKIAkJZGlyLT5leGNsdWRlX3N0YWNrID0gc3RrLT5wcmV2OwotCQl3aGlsZSAoc3RrLT5leGNsdWRlX2l4IDwgZWwtPm5yKQotCQkJZnJlZShlbC0+ZXhjbHVkZXNbLS1lbC0+bnJdKTsKLQkJZnJlZShzdGstPmZpbGVidWYpOworCQlkaXItPmV4Y2x1ZGUgPSBOVUxMOworCQlmcmVlKChjaGFyICopZWwtPnNyYyk7IC8qIHNlZSBzdHJkdXAoKSBiZWxvdyAqLworCQljbGVhcl9leGNsdWRlX2xpc3QoZWwpOwogCQlmcmVlKHN0ayk7CisJCWdyb3VwLT5uci0tOwogCX0KIAorCS8qIFNraXAgdHJhdmVyc2luZyBpbnRvIHN1YiBkaXJlY3RvcmllcyBpZiB0aGUgcGFyZW50IGlzIGV4Y2x1ZGVkICovCisJaWYgKGRpci0+ZXhjbHVkZSkKKwkJcmV0dXJuOworCiAJLyogUmVhZCBmcm9tIHRoZSBwYXJlbnQgZGlyZWN0b3JpZXMgYW5kIHB1c2ggdGhlbSBkb3duLiAqLwogCWN1cnJlbnQgPSBzdGsgPyBzdGstPmJhc2VsZW4gOiAtMTsKIAl3aGlsZSAoY3VycmVudCA8IGJhc2VsZW4pIHsKQEAgLTQ3NiwxMDAgKzgwOCw4NiBAQAogCQl9CiAJCXN0ay0+cHJldiA9IGRpci0+ZXhjbHVkZV9zdGFjazsKIAkJc3RrLT5iYXNlbGVuID0gY3AgLSBiYXNlOwotCQlzdGstPmV4Y2x1ZGVfaXggPSBlbC0+bnI7CisJCXN0ay0+ZXhjbHVkZV9peCA9IGdyb3VwLT5ucjsKKwkJZWwgPSBhZGRfZXhjbHVkZV9saXN0KGRpciwgRVhDX0RJUlMsIE5VTEwpOwogCQltZW1jcHkoZGlyLT5iYXNlYnVmICsgY3VycmVudCwgYmFzZSArIGN1cnJlbnQsCiAJCSAgICAgICBzdGstPmJhc2VsZW4gLSBjdXJyZW50KTsKLQkJc3RyY3B5KGRpci0+YmFzZWJ1ZiArIHN0ay0+YmFzZWxlbiwgZGlyLT5leGNsdWRlX3Blcl9kaXIpOwotCQlhZGRfZXhjbHVkZXNfZnJvbV9maWxlX3RvX2xpc3QoZGlyLT5iYXNlYnVmLAotCQkJCQkgICAgICAgZGlyLT5iYXNlYnVmLCBzdGstPmJhc2VsZW4sCi0JCQkJCSAgICAgICAmc3RrLT5maWxlYnVmLCBlbCwgMSk7CisKKwkJLyogQWJvcnQgaWYgdGhlIGRpcmVjdG9yeSBpcyBleGNsdWRlZCAqLworCQlpZiAoc3RrLT5iYXNlbGVuKSB7CisJCQlpbnQgZHQgPSBEVF9ESVI7CisJCQlkaXItPmJhc2VidWZbc3RrLT5iYXNlbGVuIC0gMV0gPSAwOworCQkJZGlyLT5leGNsdWRlID0gbGFzdF9leGNsdWRlX21hdGNoaW5nX2Zyb21fbGlzdHMoZGlyLAorCQkJCWRpci0+YmFzZWJ1Ziwgc3RrLT5iYXNlbGVuIC0gMSwKKwkJCQlkaXItPmJhc2VidWYgKyBjdXJyZW50LCAmZHQpOworCQkJZGlyLT5iYXNlYnVmW3N0ay0+YmFzZWxlbiAtIDFdID0gJy8nOworCQkJaWYgKGRpci0+ZXhjbHVkZSAmJgorCQkJICAgIGRpci0+ZXhjbHVkZS0+ZmxhZ3MgJiBFWENfRkxBR19ORUdBVElWRSkKKwkJCQlkaXItPmV4Y2x1ZGUgPSBOVUxMOworCQkJaWYgKGRpci0+ZXhjbHVkZSkgeworCQkJCWRpci0+YmFzZWJ1ZltzdGstPmJhc2VsZW5dID0gMDsKKwkJCQlkaXItPmV4Y2x1ZGVfc3RhY2sgPSBzdGs7CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisKKwkJLyogVHJ5IHRvIHJlYWQgcGVyLWRpcmVjdG9yeSBmaWxlIHVubGVzcyBwYXRoIGlzIHRvbyBsb25nICovCisJCWlmIChkaXItPmV4Y2x1ZGVfcGVyX2RpciAmJgorCQkgICAgc3RrLT5iYXNlbGVuICsgc3RybGVuKGRpci0+ZXhjbHVkZV9wZXJfZGlyKSA8IFBBVEhfTUFYKSB7CisJCQlzdHJjcHkoZGlyLT5iYXNlYnVmICsgc3RrLT5iYXNlbGVuLAorCQkJCQlkaXItPmV4Y2x1ZGVfcGVyX2Rpcik7CisJCQkvKgorCQkJICogZGlyLT5iYXNlYnVmIGdldHMgcmV1c2VkIGJ5IHRoZSB0cmF2ZXJzYWwsIGJ1dCB3ZQorCQkJICogbmVlZCBmbmFtZSB0byByZW1haW4gdW5jaGFuZ2VkIHRvIGVuc3VyZSB0aGUgc3JjCisJCQkgKiBtZW1iZXIgb2YgZWFjaCBzdHJ1Y3QgZXhjbHVkZSBjb3JyZWN0bHkKKwkJCSAqIGJhY2stcmVmZXJlbmNlcyBpdHMgc291cmNlIGZpbGUuICBPdGhlciBpbnZvY2F0aW9ucworCQkJICogb2YgYWRkX2V4Y2x1ZGVfbGlzdCBwcm92aWRlIHN0YWJsZSBzdHJpbmdzLCBzbyB3ZQorCQkJICogc3RyZHVwKCkgYW5kIGZyZWUoKSBoZXJlIGluIHRoZSBjYWxsZXIuCisJCQkgKi8KKwkJCWVsLT5zcmMgPSBzdHJkdXAoZGlyLT5iYXNlYnVmKTsKKwkJCWFkZF9leGNsdWRlc19mcm9tX2ZpbGVfdG9fbGlzdChkaXItPmJhc2VidWYsCisJCQkJCWRpci0+YmFzZWJ1Ziwgc3RrLT5iYXNlbGVuLCBlbCwgMSk7CisJCX0KIAkJZGlyLT5leGNsdWRlX3N0YWNrID0gc3RrOwogCQljdXJyZW50ID0gc3RrLT5iYXNlbGVuOwogCX0KIAlkaXItPmJhc2VidWZbYmFzZWxlbl0gPSAnXDAnOwogfQogCi0vKiBTY2FuIHRoZSBsaXN0IGFuZCBsZXQgdGhlIGxhc3QgbWF0Y2ggZGV0ZXJtaW5lIHRoZSBmYXRlLgotICogUmV0dXJuIDEgZm9yIGV4Y2x1ZGUsIDAgZm9yIGluY2x1ZGUgYW5kIC0xIGZvciB1bmRlY2lkZWQuCisvKgorICogTG9hZHMgdGhlIGV4Y2x1ZGUgbGlzdHMgZm9yIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBwYXRobmFtZSwgdGhlbgorICogc2NhbnMgYWxsIGV4Y2x1ZGUgbGlzdHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgcGF0aG5hbWUgaXMgZXhjbHVkZWQuCisgKiBSZXR1cm5zIHRoZSBleGNsdWRlX2xpc3QgZWxlbWVudCB3aGljaCBtYXRjaGVkLCBvciBOVUxMIGZvcgorICogdW5kZWNpZGVkLgogICovCi1pbnQgZXhjbHVkZWRfZnJvbV9saXN0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLAotCQkgICAgICAgaW50IHBhdGhsZW4sIGNvbnN0IGNoYXIgKmJhc2VuYW1lLCBpbnQgKmR0eXBlLAotCQkgICAgICAgc3RydWN0IGV4Y2x1ZGVfbGlzdCAqZWwpCi17Ci0JaW50IGk7Ci0KLQlpZiAoZWwtPm5yKSB7Ci0JCWZvciAoaSA9IGVsLT5uciAtIDE7IDAgPD0gaTsgaS0tKSB7Ci0JCQlzdHJ1Y3QgZXhjbHVkZSAqeCA9IGVsLT5leGNsdWRlc1tpXTsKLQkJCWNvbnN0IGNoYXIgKmV4Y2x1ZGUgPSB4LT5wYXR0ZXJuOwotCQkJaW50IHRvX2V4Y2x1ZGUgPSB4LT50b19leGNsdWRlOwotCi0JCQlpZiAoeC0+ZmxhZ3MgJiBFWENfRkxBR19NVVNUQkVESVIpIHsKLQkJCQlpZiAoKmR0eXBlID09IERUX1VOS05PV04pCi0JCQkJCSpkdHlwZSA9IGdldF9kdHlwZShOVUxMLCBwYXRobmFtZSwgcGF0aGxlbik7Ci0JCQkJaWYgKCpkdHlwZSAhPSBEVF9ESVIpCi0JCQkJCWNvbnRpbnVlOwotCQkJfQotCi0JCQlpZiAoeC0+ZmxhZ3MgJiBFWENfRkxBR19OT0RJUikgewotCQkJCS8qIG1hdGNoIGJhc2VuYW1lICovCi0JCQkJaWYgKHgtPmZsYWdzICYgRVhDX0ZMQUdfTk9XSUxEQ0FSRCkgewotCQkJCQlpZiAoIXN0cmNtcF9pY2FzZShleGNsdWRlLCBiYXNlbmFtZSkpCi0JCQkJCQlyZXR1cm4gdG9fZXhjbHVkZTsKLQkJCQl9IGVsc2UgaWYgKHgtPmZsYWdzICYgRVhDX0ZMQUdfRU5EU1dJVEgpIHsKLQkJCQkJaWYgKHgtPnBhdHRlcm5sZW4gLSAxIDw9IHBhdGhsZW4gJiYKLQkJCQkJICAgICFzdHJjbXBfaWNhc2UoZXhjbHVkZSArIDEsIHBhdGhuYW1lICsgcGF0aGxlbiAtIHgtPnBhdHRlcm5sZW4gKyAxKSkKLQkJCQkJCXJldHVybiB0b19leGNsdWRlOwotCQkJCX0gZWxzZSB7Ci0JCQkJCWlmIChmbm1hdGNoX2ljYXNlKGV4Y2x1ZGUsIGJhc2VuYW1lLCAwKSA9PSAwKQotCQkJCQkJcmV0dXJuIHRvX2V4Y2x1ZGU7Ci0JCQkJfQotCQkJfQotCQkJZWxzZSB7Ci0JCQkJLyogbWF0Y2ggd2l0aCBGTk1fUEFUSE5BTUU6Ci0JCQkJICogZXhjbHVkZSBoYXMgYmFzZSAoYmFzZWxlbiBsb25nKSBpbXBsaWNpdGx5Ci0JCQkJICogaW4gZnJvbnQgb2YgaXQuCi0JCQkJICovCi0JCQkJaW50IGJhc2VsZW4gPSB4LT5iYXNlbGVuOwotCQkJCWlmICgqZXhjbHVkZSA9PSAnLycpCi0JCQkJCWV4Y2x1ZGUrKzsKLQotCQkJCWlmIChwYXRobGVuIDwgYmFzZWxlbiB8fAotCQkJCSAgICAoYmFzZWxlbiAmJiBwYXRobmFtZVtiYXNlbGVuLTFdICE9ICcvJykgfHwKLQkJCQkgICAgc3RybmNtcF9pY2FzZShwYXRobmFtZSwgeC0+YmFzZSwgYmFzZWxlbikpCi0JCQkJICAgIGNvbnRpbnVlOwotCi0JCQkJaWYgKHgtPmZsYWdzICYgRVhDX0ZMQUdfTk9XSUxEQ0FSRCkgewotCQkJCQlpZiAoIXN0cmNtcF9pY2FzZShleGNsdWRlLCBwYXRobmFtZSArIGJhc2VsZW4pKQotCQkJCQkJcmV0dXJuIHRvX2V4Y2x1ZGU7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJaWYgKGZubWF0Y2hfaWNhc2UoZXhjbHVkZSwgcGF0aG5hbWUrYmFzZWxlbiwKLQkJCQkJCSAgICBGTk1fUEFUSE5BTUUpID09IDApCi0JCQkJCSAgICByZXR1cm4gdG9fZXhjbHVkZTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9Ci0JcmV0dXJuIC0xOyAvKiB1bmRlY2lkZWQgKi8KLX0KLQotaW50IGV4Y2x1ZGVkKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgKmR0eXBlX3ApCitzdHJ1Y3QgZXhjbHVkZSAqbGFzdF9leGNsdWRlX21hdGNoaW5nKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsCisJCQkJCSAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsCisJCQkJCSAgICAgaW50ICpkdHlwZV9wKQogewogCWludCBwYXRobGVuID0gc3RybGVuKHBhdGhuYW1lKTsKLQlpbnQgc3Q7CiAJY29uc3QgY2hhciAqYmFzZW5hbWUgPSBzdHJyY2hyKHBhdGhuYW1lLCAnLycpOwogCWJhc2VuYW1lID0gKGJhc2VuYW1lKSA/IGJhc2VuYW1lKzEgOiBwYXRobmFtZTsKIAogCXByZXBfZXhjbHVkZShkaXIsIHBhdGhuYW1lLCBiYXNlbmFtZS1wYXRobmFtZSk7Ci0JZm9yIChzdCA9IEVYQ19DTURMOyBzdCA8PSBFWENfRklMRTsgc3QrKykgewotCQlzd2l0Y2ggKGV4Y2x1ZGVkX2Zyb21fbGlzdChwYXRobmFtZSwgcGF0aGxlbiwgYmFzZW5hbWUsCi0JCQkJCSAgIGR0eXBlX3AsICZkaXItPmV4Y2x1ZGVfbGlzdFtzdF0pKSB7Ci0JCWNhc2UgMDoKLQkJCXJldHVybiAwOwotCQljYXNlIDE6Ci0JCQlyZXR1cm4gMTsKLQkJfQotCX0KKworCWlmIChkaXItPmV4Y2x1ZGUpCisJCXJldHVybiBkaXItPmV4Y2x1ZGU7CisKKwlyZXR1cm4gbGFzdF9leGNsdWRlX21hdGNoaW5nX2Zyb21fbGlzdHMoZGlyLCBwYXRobmFtZSwgcGF0aGxlbiwKKwkJCWJhc2VuYW1lLCBkdHlwZV9wKTsKK30KKworLyoKKyAqIExvYWRzIHRoZSBleGNsdWRlIGxpc3RzIGZvciB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgcGF0aG5hbWUsIHRoZW4KKyAqIHNjYW5zIGFsbCBleGNsdWRlIGxpc3RzIHRvIGRldGVybWluZSB3aGV0aGVyIHBhdGhuYW1lIGlzIGV4Y2x1ZGVkLgorICogUmV0dXJucyAxIGlmIHRydWUsIG90aGVyd2lzZSAwLgorICovCitpbnQgaXNfZXhjbHVkZWQoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCAqZHR5cGVfcCkKK3sKKwlzdHJ1Y3QgZXhjbHVkZSAqZXhjbHVkZSA9CisJCWxhc3RfZXhjbHVkZV9tYXRjaGluZyhkaXIsIHBhdGhuYW1lLCBkdHlwZV9wKTsKKwlpZiAoZXhjbHVkZSkKKwkJcmV0dXJuIGV4Y2x1ZGUtPmZsYWdzICYgRVhDX0ZMQUdfTkVHQVRJVkUgPyAwIDogMTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNzAxLDMyICsxMDE5LDI2IEBACiAgKgogICogIChhKSBpZiAic2hvd19vdGhlcl9kaXJlY3RvcmllcyIgaXMgdHJ1ZSwgd2Ugc2hvdyBpdCBhcwogICogICAgICBqdXN0IGEgZGlyZWN0b3J5LCB1bmxlc3MgImhpZGVfZW1wdHlfZGlyZWN0b3JpZXMiIGlzCi0gKiAgICAgIGFsc28gdHJ1ZSBhbmQgdGhlIGRpcmVjdG9yeSBpcyBlbXB0eSwgaW4gd2hpY2ggY2FzZQotICogICAgICB3ZSBqdXN0IGlnbm9yZSBpdCBlbnRpcmVseS4KKyAqICAgICAgYWxzbyB0cnVlLCBpbiB3aGljaCBjYXNlIHdlIG5lZWQgdG8gY2hlY2sgaWYgaXQgY29udGFpbnMgYW55CisgKiAgICAgIHVudHJhY2tlZCBhbmQgLyBvciBpZ25vcmVkIGZpbGVzLgogICogIChiKSBpZiBpdCBsb29rcyBsaWtlIGEgZ2l0IGRpcmVjdG9yeSwgYW5kIHdlIGRvbid0IGhhdmUKICAqICAgICAgJ25vX2dpdGxpbmtzJyBzZXQgd2UgdHJlYXQgaXQgYXMgYSBnaXRsaW5rLCBhbmQgc2hvdyBpdAogICogICAgICBhcyBhIGRpcmVjdG9yeS4KICAqICAoYykgb3RoZXJ3aXNlLCB3ZSByZWN1cnNlIGludG8gaXQuCiAgKi8KLWVudW0gZGlyZWN0b3J5X3RyZWF0bWVudCB7Ci0Jc2hvd19kaXJlY3RvcnksCi0JaWdub3JlX2RpcmVjdG9yeSwKLQlyZWN1cnNlX2ludG9fZGlyZWN0b3J5Ci19OwotCi1zdGF0aWMgZW51bSBkaXJlY3RvcnlfdHJlYXRtZW50IHRyZWF0X2RpcmVjdG9yeShzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLAotCWNvbnN0IGNoYXIgKmRpcm5hbWUsIGludCBsZW4sCitzdGF0aWMgZW51bSBwYXRoX3RyZWF0bWVudCB0cmVhdF9kaXJlY3Rvcnkoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwKKwljb25zdCBjaGFyICpkaXJuYW1lLCBpbnQgbGVuLCBpbnQgZXhjbHVkZSwKIAljb25zdCBzdHJ1Y3QgcGF0aF9zaW1wbGlmeSAqc2ltcGxpZnkpCiB7CiAJLyogVGhlICJsZW4tMSIgaXMgdG8gc3RyaXAgdGhlIGZpbmFsICcvJyAqLwogCXN3aXRjaCAoZGlyZWN0b3J5X2V4aXN0c19pbl9pbmRleChkaXJuYW1lLCBsZW4tMSkpIHsKIAljYXNlIGluZGV4X2RpcmVjdG9yeToKLQkJcmV0dXJuIHJlY3Vyc2VfaW50b19kaXJlY3Rvcnk7CisJCXJldHVybiBwYXRoX3JlY3Vyc2U7CiAKIAljYXNlIGluZGV4X2dpdGRpcjoKIAkJaWYgKGRpci0+ZmxhZ3MgJiBESVJfU0hPV19PVEhFUl9ESVJFQ1RPUklFUykKLQkJCXJldHVybiBpZ25vcmVfZGlyZWN0b3J5OwotCQlyZXR1cm4gc2hvd19kaXJlY3Rvcnk7CisJCQlyZXR1cm4gcGF0aF9ub25lOworCQlyZXR1cm4gcGF0aF91bnRyYWNrZWQ7CiAKIAljYXNlIGluZGV4X25vbmV4aXN0ZW50OgogCQlpZiAoZGlyLT5mbGFncyAmIERJUl9TSE9XX09USEVSX0RJUkVDVE9SSUVTKQpAQCAtNzM0LDE3ICsxMDQ2LDE3IEBACiAJCWlmICghKGRpci0+ZmxhZ3MgJiBESVJfTk9fR0lUTElOS1MpKSB7CiAJCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCQkJaWYgKHJlc29sdmVfZ2l0bGlua19yZWYoZGlybmFtZSwgIkhFQUQiLCBzaGExKSA9PSAwKQotCQkJCXJldHVybiBzaG93X2RpcmVjdG9yeTsKKwkJCQlyZXR1cm4gcGF0aF91bnRyYWNrZWQ7CiAJCX0KLQkJcmV0dXJuIHJlY3Vyc2VfaW50b19kaXJlY3Rvcnk7CisJCXJldHVybiBwYXRoX3JlY3Vyc2U7CiAJfQogCiAJLyogVGhpcyBpcyB0aGUgInNob3dfb3RoZXJfZGlyZWN0b3JpZXMiIGNhc2UgKi8KKwogCWlmICghKGRpci0+ZmxhZ3MgJiBESVJfSElERV9FTVBUWV9ESVJFQ1RPUklFUykpCi0JCXJldHVybiBzaG93X2RpcmVjdG9yeTsKLQlpZiAoIXJlYWRfZGlyZWN0b3J5X3JlY3Vyc2l2ZShkaXIsIGRpcm5hbWUsIGxlbiwgMSwgc2ltcGxpZnkpKQotCQlyZXR1cm4gaWdub3JlX2RpcmVjdG9yeTsKLQlyZXR1cm4gc2hvd19kaXJlY3Rvcnk7CisJCXJldHVybiBleGNsdWRlID8gcGF0aF9leGNsdWRlZCA6IHBhdGhfdW50cmFja2VkOworCisJcmV0dXJuIHJlYWRfZGlyZWN0b3J5X3JlY3Vyc2l2ZShkaXIsIGRpcm5hbWUsIGxlbiwgMSwgc2ltcGxpZnkpOwogfQogCiAvKgpAQCAtODU5LDY1ICsxMTcxLDQwIEBACiAJcmV0dXJuIGR0eXBlOwogfQogCi1lbnVtIHBhdGhfdHJlYXRtZW50IHsKLQlwYXRoX2lnbm9yZWQsCi0JcGF0aF9oYW5kbGVkLAotCXBhdGhfcmVjdXJzZQotfTsKLQogc3RhdGljIGVudW0gcGF0aF90cmVhdG1lbnQgdHJlYXRfb25lX3BhdGgoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwKIAkJCQkJICBzdHJ1Y3Qgc3RyYnVmICpwYXRoLAogCQkJCQkgIGNvbnN0IHN0cnVjdCBwYXRoX3NpbXBsaWZ5ICpzaW1wbGlmeSwKIAkJCQkJICBpbnQgZHR5cGUsIHN0cnVjdCBkaXJlbnQgKmRlKQogewotCWludCBleGNsdWRlID0gZXhjbHVkZWQoZGlyLCBwYXRoLT5idWYsICZkdHlwZSk7Ci0JaWYgKGV4Y2x1ZGUgJiYgKGRpci0+ZmxhZ3MgJiBESVJfQ09MTEVDVF9JR05PUkVEKQotCSAgICAmJiBleGNsdWRlX21hdGNoZXNfcGF0aHNwZWMocGF0aC0+YnVmLCBwYXRoLT5sZW4sIHNpbXBsaWZ5KSkKLQkJZGlyX2FkZF9pZ25vcmVkKGRpciwgcGF0aC0+YnVmLCBwYXRoLT5sZW4pOworCWludCBleGNsdWRlOworCWlmIChkdHlwZSA9PSBEVF9VTktOT1dOKQorCQlkdHlwZSA9IGdldF9kdHlwZShkZSwgcGF0aC0+YnVmLCBwYXRoLT5sZW4pOworCisJLyogQWx3YXlzIGV4Y2x1ZGUgaW5kZXhlZCBmaWxlcyAqLworCWlmIChkdHlwZSAhPSBEVF9ESVIgJiYKKwkgICAgY2FjaGVfbmFtZV9leGlzdHMocGF0aC0+YnVmLCBwYXRoLT5sZW4sIGlnbm9yZV9jYXNlKSkKKwkJcmV0dXJuIHBhdGhfbm9uZTsKKworCWV4Y2x1ZGUgPSBpc19leGNsdWRlZChkaXIsIHBhdGgtPmJ1ZiwgJmR0eXBlKTsKIAogCS8qCiAJICogRXhjbHVkZWQ/IElmIHdlIGRvbid0IGV4cGxpY2l0bHkgd2FudCB0byBzaG93CiAJICogaWdub3JlZCBmaWxlcywgaWdub3JlIGl0CiAJICovCi0JaWYgKGV4Y2x1ZGUgJiYgIShkaXItPmZsYWdzICYgRElSX1NIT1dfSUdOT1JFRCkpCi0JCXJldHVybiBwYXRoX2lnbm9yZWQ7Ci0KLQlpZiAoZHR5cGUgPT0gRFRfVU5LTk9XTikKLQkJZHR5cGUgPSBnZXRfZHR5cGUoZGUsIHBhdGgtPmJ1ZiwgcGF0aC0+bGVuKTsKLQotCS8qCi0JICogRG8gd2Ugd2FudCB0byBzZWUganVzdCB0aGUgaWdub3JlZCBmaWxlcz8KLQkgKiBXZSBzdGlsbCBuZWVkIHRvIHJlY3Vyc2UgaW50byBkaXJlY3RvcmllcywKLQkgKiBldmVuIGlmIHdlIGRvbid0IGlnbm9yZSB0aGVtLCBzaW5jZSB0aGUKLQkgKiBkaXJlY3RvcnkgbWF5IGNvbnRhaW4gZmlsZXMgdGhhdCB3ZSBkby4uCi0JICovCi0JaWYgKCFleGNsdWRlICYmIChkaXItPmZsYWdzICYgRElSX1NIT1dfSUdOT1JFRCkpIHsKLQkJaWYgKGR0eXBlICE9IERUX0RJUikKLQkJCXJldHVybiBwYXRoX2lnbm9yZWQ7Ci0JfQorCWlmIChleGNsdWRlICYmICEoZGlyLT5mbGFncyAmIChESVJfU0hPV19JR05PUkVEfERJUl9TSE9XX0lHTk9SRURfVE9PKSkpCisJCXJldHVybiBwYXRoX2V4Y2x1ZGVkOwogCiAJc3dpdGNoIChkdHlwZSkgewogCWRlZmF1bHQ6Ci0JCXJldHVybiBwYXRoX2lnbm9yZWQ7CisJCXJldHVybiBwYXRoX25vbmU7CiAJY2FzZSBEVF9ESVI6CiAJCXN0cmJ1Zl9hZGRjaChwYXRoLCAnLycpOwotCQlzd2l0Y2ggKHRyZWF0X2RpcmVjdG9yeShkaXIsIHBhdGgtPmJ1ZiwgcGF0aC0+bGVuLCBzaW1wbGlmeSkpIHsKLQkJY2FzZSBzaG93X2RpcmVjdG9yeToKLQkJCWlmIChleGNsdWRlICE9ICEhKGRpci0+ZmxhZ3MKLQkJCQkJICAmIERJUl9TSE9XX0lHTk9SRUQpKQotCQkJCXJldHVybiBwYXRoX2lnbm9yZWQ7Ci0JCQlicmVhazsKLQkJY2FzZSByZWN1cnNlX2ludG9fZGlyZWN0b3J5OgotCQkJcmV0dXJuIHBhdGhfcmVjdXJzZTsKLQkJY2FzZSBpZ25vcmVfZGlyZWN0b3J5OgotCQkJcmV0dXJuIHBhdGhfaWdub3JlZDsKLQkJfQotCQlicmVhazsKKwkJcmV0dXJuIHRyZWF0X2RpcmVjdG9yeShkaXIsIHBhdGgtPmJ1ZiwgcGF0aC0+bGVuLCBleGNsdWRlLAorCQkJc2ltcGxpZnkpOwogCWNhc2UgRFRfUkVHOgogCWNhc2UgRFRfTE5LOgotCQlicmVhazsKKwkJcmV0dXJuIGV4Y2x1ZGUgPyBwYXRoX2V4Y2x1ZGVkIDogcGF0aF91bnRyYWNrZWQ7CiAJfQotCXJldHVybiBwYXRoX2hhbmRsZWQ7CiB9CiAKIHN0YXRpYyBlbnVtIHBhdGhfdHJlYXRtZW50IHRyZWF0X3BhdGgoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwKQEAgLTkyOSwxMSArMTIxNiwxMSBAQAogCWludCBkdHlwZTsKIAogCWlmIChpc19kb3Rfb3JfZG90ZG90KGRlLT5kX25hbWUpIHx8ICFzdHJjbXAoZGUtPmRfbmFtZSwgIi5naXQiKSkKLQkJcmV0dXJuIHBhdGhfaWdub3JlZDsKKwkJcmV0dXJuIHBhdGhfbm9uZTsKIAlzdHJidWZfc2V0bGVuKHBhdGgsIGJhc2VsZW4pOwogCXN0cmJ1Zl9hZGRzdHIocGF0aCwgZGUtPmRfbmFtZSk7CiAJaWYgKHNpbXBsaWZ5X2F3YXkocGF0aC0+YnVmLCBwYXRoLT5sZW4sIHNpbXBsaWZ5KSkKLQkJcmV0dXJuIHBhdGhfaWdub3JlZDsKKwkJcmV0dXJuIHBhdGhfbm9uZTsKIAogCWR0eXBlID0gRFRZUEUoZGUpOwogCXJldHVybiB0cmVhdF9vbmVfcGF0aChkaXIsIHBhdGgsIHNpbXBsaWZ5LCBkdHlwZSwgZGUpOwpAQCAtOTQ3LDE0ICsxMjM0LDE2IEBACiAgKgogICogQWxzbywgd2UgaWdub3JlIHRoZSBuYW1lICIuZ2l0IiAoZXZlbiBpZiBpdCBpcyBub3QgYSBkaXJlY3RvcnkpLgogICogVGhhdCBsaWtlbHkgd2lsbCBub3QgY2hhbmdlLgorICoKKyAqIFJldHVybnMgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgcGF0aF90cmVhdG1lbnQgdmFsdWUgZW5jb3VudGVyZWQgaW4gdGhlIHNjYW4uCiAgKi8KLXN0YXRpYyBpbnQgcmVhZF9kaXJlY3RvcnlfcmVjdXJzaXZlKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsCitzdGF0aWMgZW51bSBwYXRoX3RyZWF0bWVudCByZWFkX2RpcmVjdG9yeV9yZWN1cnNpdmUoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwKIAkJCQkgICAgY29uc3QgY2hhciAqYmFzZSwgaW50IGJhc2VsZW4sCiAJCQkJICAgIGludCBjaGVja19vbmx5LAogCQkJCSAgICBjb25zdCBzdHJ1Y3QgcGF0aF9zaW1wbGlmeSAqc2ltcGxpZnkpCiB7CiAJRElSICpmZGlyOwotCWludCBjb250ZW50cyA9IDA7CisJZW51bSBwYXRoX3RyZWF0bWVudCBzdGF0ZSwgc3ViZGlyX3N0YXRlLCBkaXJfc3RhdGUgPSBwYXRoX25vbmU7CiAJc3RydWN0IGRpcmVudCAqZGU7CiAJc3RydWN0IHN0cmJ1ZiBwYXRoID0gU1RSQlVGX0lOSVQ7CiAKQEAgLTk2NSwyNyArMTI1NCw1MyBAQAogCQlnb3RvIG91dDsKIAogCXdoaWxlICgoZGUgPSByZWFkZGlyKGZkaXIpKSAhPSBOVUxMKSB7Ci0JCXN3aXRjaCAodHJlYXRfcGF0aChkaXIsIGRlLCAmcGF0aCwgYmFzZWxlbiwgc2ltcGxpZnkpKSB7Ci0JCWNhc2UgcGF0aF9yZWN1cnNlOgotCQkJY29udGVudHMgKz0gcmVhZF9kaXJlY3RvcnlfcmVjdXJzaXZlKGRpciwgcGF0aC5idWYsCi0JCQkJCQkJICAgICBwYXRoLmxlbiwgMCwKLQkJCQkJCQkgICAgIHNpbXBsaWZ5KTsKKwkJLyogY2hlY2sgaG93IHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBzaG91bGQgYmUgdHJlYXRlZCAqLworCQlzdGF0ZSA9IHRyZWF0X3BhdGgoZGlyLCBkZSwgJnBhdGgsIGJhc2VsZW4sIHNpbXBsaWZ5KTsKKwkJaWYgKHN0YXRlID4gZGlyX3N0YXRlKQorCQkJZGlyX3N0YXRlID0gc3RhdGU7CisKKwkJLyogcmVjdXJzZSBpbnRvIHN1YmRpciBpZiBpbnN0cnVjdGVkIGJ5IHRyZWF0X3BhdGggKi8KKwkJaWYgKHN0YXRlID09IHBhdGhfcmVjdXJzZSkgeworCQkJc3ViZGlyX3N0YXRlID0gcmVhZF9kaXJlY3RvcnlfcmVjdXJzaXZlKGRpciwgcGF0aC5idWYsCisJCQkJcGF0aC5sZW4sIGNoZWNrX29ubHksIHNpbXBsaWZ5KTsKKwkJCWlmIChzdWJkaXJfc3RhdGUgPiBkaXJfc3RhdGUpCisJCQkJZGlyX3N0YXRlID0gc3ViZGlyX3N0YXRlOworCQl9CisKKwkJaWYgKGNoZWNrX29ubHkpIHsKKwkJCS8qIGFib3J0IGVhcmx5IGlmIG1heGltdW0gc3RhdGUgaGFzIGJlZW4gcmVhY2hlZCAqLworCQkJaWYgKGRpcl9zdGF0ZSA9PSBwYXRoX3VudHJhY2tlZCkKKwkJCQlicmVhazsKKwkJCS8qIHNraXAgdGhlIGRpcl9hZGRfKiBwYXJ0ICovCiAJCQljb250aW51ZTsKLQkJY2FzZSBwYXRoX2lnbm9yZWQ6Ci0JCQljb250aW51ZTsKLQkJY2FzZSBwYXRoX2hhbmRsZWQ6CisJCX0KKworCQkvKiBhZGQgdGhlIHBhdGggdG8gdGhlIGFwcHJvcHJpYXRlIHJlc3VsdCBsaXN0ICovCisJCXN3aXRjaCAoc3RhdGUpIHsKKwkJY2FzZSBwYXRoX2V4Y2x1ZGVkOgorCQkJaWYgKGRpci0+ZmxhZ3MgJiBESVJfU0hPV19JR05PUkVEKQorCQkJCWRpcl9hZGRfbmFtZShkaXIsIHBhdGguYnVmLCBwYXRoLmxlbik7CisJCQllbHNlIGlmICgoZGlyLT5mbGFncyAmIERJUl9TSE9XX0lHTk9SRURfVE9PKSB8fAorCQkJCSgoZGlyLT5mbGFncyAmIERJUl9DT0xMRUNUX0lHTk9SRUQpICYmCisJCQkJZXhjbHVkZV9tYXRjaGVzX3BhdGhzcGVjKHBhdGguYnVmLCBwYXRoLmxlbiwKKwkJCQkJc2ltcGxpZnkpKSkKKwkJCQlkaXJfYWRkX2lnbm9yZWQoZGlyLCBwYXRoLmJ1ZiwgcGF0aC5sZW4pOworCQkJYnJlYWs7CisKKwkJY2FzZSBwYXRoX3VudHJhY2tlZDoKKwkJCWlmICghKGRpci0+ZmxhZ3MgJiBESVJfU0hPV19JR05PUkVEKSkKKwkJCQlkaXJfYWRkX25hbWUoZGlyLCBwYXRoLmJ1ZiwgcGF0aC5sZW4pOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKIAkJCWJyZWFrOwogCQl9Ci0JCWNvbnRlbnRzKys7Ci0JCWlmIChjaGVja19vbmx5KQotCQkJYnJlYWs7Ci0JCWRpcl9hZGRfbmFtZShkaXIsIHBhdGguYnVmLCBwYXRoLmxlbik7CiAJfQogCWNsb3NlZGlyKGZkaXIpOwogIG91dDoKIAlzdHJidWZfcmVsZWFzZSgmcGF0aCk7CiAKLQlyZXR1cm4gY29udGVudHM7CisJcmV0dXJuIGRpcl9zdGF0ZTsKIH0KIAogc3RhdGljIGludCBjbXBfbmFtZShjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpCkBAIC05OTcsMjEgKzEzMTIsNiBAQAogCQkJCSAgZTItPm5hbWUsIGUyLT5sZW4pOwogfQogCi0vKgotICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlICJzaW1wbGUiIHBhcnQgb2YgYSBwYXRoIG1hdGNoIGxpbWl0ZXIuCi0gKi8KLXN0YXRpYyBpbnQgc2ltcGxlX2xlbmd0aChjb25zdCBjaGFyICptYXRjaCkKLXsKLQlpbnQgbGVuID0gLTE7Ci0KLQlmb3IgKDs7KSB7Ci0JCXVuc2lnbmVkIGNoYXIgYyA9ICptYXRjaCsrOwotCQlsZW4rKzsKLQkJaWYgKGMgPT0gJ1wwJyB8fCBpc19nbG9iX3NwZWNpYWwoYykpCi0JCQlyZXR1cm4gbGVuOwotCX0KLX0KLQogc3RhdGljIHN0cnVjdCBwYXRoX3NpbXBsaWZ5ICpjcmVhdGVfc2ltcGxpZnkoY29uc3QgY2hhciAqKnBhdGhzcGVjKQogewogCWludCBuciwgYWxsb2MgPSAwOwpAQCAtMTA0OSwxMiArMTM0OSwxNCBAQAogCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKIAlpbnQgYmFzZWxlbiwgcmMgPSAwOwogCWNvbnN0IGNoYXIgKmNwOworCWludCBvbGRfZmxhZ3MgPSBkaXItPmZsYWdzOwogCiAJd2hpbGUgKGxlbiAmJiBwYXRoW2xlbiAtIDFdID09ICcvJykKIAkJbGVuLS07CiAJaWYgKCFsZW4pCiAJCXJldHVybiAxOwogCWJhc2VsZW4gPSAwOworCWRpci0+ZmxhZ3MgJj0gfkRJUl9TSE9XX09USEVSX0RJUkVDVE9SSUVTOwogCXdoaWxlICgxKSB7CiAJCWNwID0gcGF0aCArIGJhc2VsZW4gKyAhIWJhc2VsZW47CiAJCWNwID0gbWVtY2hyKGNwLCAnLycsIHBhdGggKyBsZW4gLSBjcCk7CkBAIC0xMDY5LDcgKzEzNzEsNyBAQAogCQlpZiAoc2ltcGxpZnlfYXdheShzYi5idWYsIHNiLmxlbiwgc2ltcGxpZnkpKQogCQkJYnJlYWs7CiAJCWlmICh0cmVhdF9vbmVfcGF0aChkaXIsICZzYiwgc2ltcGxpZnksCi0JCQkJICAgRFRfRElSLCBOVUxMKSA9PSBwYXRoX2lnbm9yZWQpCisJCQkJICAgRFRfRElSLCBOVUxMKSA9PSBwYXRoX25vbmUpCiAJCQlicmVhazsgLyogZG8gbm90IHJlY3Vyc2UgaW50byBpdCAqLwogCQlpZiAobGVuIDw9IGJhc2VsZW4pIHsKIAkJCXJjID0gMTsKQEAgLTEwNzcsNiArMTM3OSw3IEBACiAJCX0KIAl9CiAJc3RyYnVmX3JlbGVhc2UoJnNiKTsKKwlkaXItPmZsYWdzID0gb2xkX2ZsYWdzOwogCXJldHVybiByYzsKIH0KIApAQCAtMTIzNCwxMiArMTUzNywxNyBAQAogdm9pZCBzZXR1cF9zdGFuZGFyZF9leGNsdWRlcyhzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyKQogewogCWNvbnN0IGNoYXIgKnBhdGg7CisJY2hhciAqeGRnX3BhdGg7CiAKIAlkaXItPmV4Y2x1ZGVfcGVyX2RpciA9ICIuZ2l0aWdub3JlIjsKIAlwYXRoID0gZ2l0X3BhdGgoImluZm8vZXhjbHVkZSIpOwotCWlmICghYWNjZXNzKHBhdGgsIFJfT0spKQorCWlmICghZXhjbHVkZXNfZmlsZSkgeworCQlob21lX2NvbmZpZ19wYXRocyhOVUxMLCAmeGRnX3BhdGgsICJpZ25vcmUiKTsKKwkJZXhjbHVkZXNfZmlsZSA9IHhkZ19wYXRoOworCX0KKwlpZiAoIWFjY2Vzc19vcl93YXJuKHBhdGgsIFJfT0ssIDApKQogCQlhZGRfZXhjbHVkZXNfZnJvbV9maWxlKGRpciwgcGF0aCk7Ci0JaWYgKGV4Y2x1ZGVzX2ZpbGUgJiYgIWFjY2VzcyhleGNsdWRlc19maWxlLCBSX09LKSkKKwlpZiAoZXhjbHVkZXNfZmlsZSAmJiAhYWNjZXNzX29yX3dhcm4oZXhjbHVkZXNfZmlsZSwgUl9PSywgMCkpCiAJCWFkZF9leGNsdWRlc19mcm9tX2ZpbGUoZGlyLCBleGNsdWRlc19maWxlKTsKIH0KIApAQCAtMTI0Nyw3ICsxNTU1LDcgQEAKIHsKIAljaGFyICpzbGFzaDsKIAotCWlmICh1bmxpbmsobmFtZSkgJiYgZXJybm8gIT0gRU5PRU5UKQorCWlmICh1bmxpbmsobmFtZSkgJiYgZXJybm8gIT0gRU5PRU5UICYmIGVycm5vICE9IEVOT1RESVIpCiAJCXJldHVybiAtMTsKIAogCXNsYXNoID0gc3RycmNocihuYW1lLCAnLycpOwpAQCAtMTI5Myw5ICsxNjAxLDE4IEBACiAKIAkJaXRlbS0+bWF0Y2ggPSBwYXRoOwogCQlpdGVtLT5sZW4gPSBzdHJsZW4ocGF0aCk7Ci0JCWl0ZW0tPnVzZV93aWxkY2FyZCA9ICFub193aWxkY2FyZChwYXRoKTsKLQkJaWYgKGl0ZW0tPnVzZV93aWxkY2FyZCkKLQkJCXBhdGhzcGVjLT5oYXNfd2lsZGNhcmQgPSAxOworCQlpdGVtLT5mbGFncyA9IDA7CisJCWlmIChsaW1pdF9wYXRoc3BlY190b19saXRlcmFsKCkpIHsKKwkJCWl0ZW0tPm5vd2lsZGNhcmRfbGVuID0gaXRlbS0+bGVuOworCQl9IGVsc2UgeworCQkJaXRlbS0+bm93aWxkY2FyZF9sZW4gPSBzaW1wbGVfbGVuZ3RoKHBhdGgpOworCQkJaWYgKGl0ZW0tPm5vd2lsZGNhcmRfbGVuIDwgaXRlbS0+bGVuKSB7CisJCQkJcGF0aHNwZWMtPmhhc193aWxkY2FyZCA9IDE7CisJCQkJaWYgKHBhdGhbaXRlbS0+bm93aWxkY2FyZF9sZW5dID09ICcqJyAmJgorCQkJCSAgICBub193aWxkY2FyZChwYXRoICsgaXRlbS0+bm93aWxkY2FyZF9sZW4gKyAxKSkKKwkJCQkJaXRlbS0+ZmxhZ3MgfD0gUEFUSFNQRUNfT05FU1RBUjsKKwkJCX0KKwkJfQogCX0KIAogCXFzb3J0KHBhdGhzcGVjLT5pdGVtcywgcGF0aHNwZWMtPm5yLApAQCAtMTMwOSwzICsxNjI2LDQxIEBACiAJZnJlZShwYXRoc3BlYy0+aXRlbXMpOwogCXBhdGhzcGVjLT5pdGVtcyA9IE5VTEw7CiB9CisKK2ludCBsaW1pdF9wYXRoc3BlY190b19saXRlcmFsKHZvaWQpCit7CisJc3RhdGljIGludCBmbGFnID0gLTE7CisJaWYgKGZsYWcgPCAwKQorCQlmbGFnID0gZ2l0X2Vudl9ib29sKEdJVF9MSVRFUkFMX1BBVEhTUEVDU19FTlZJUk9OTUVOVCwgMCk7CisJcmV0dXJuIGZsYWc7Cit9CisKKy8qCisgKiBGcmVlcyBtZW1vcnkgd2l0aGluIGRpciB3aGljaCB3YXMgYWxsb2NhdGVkIGZvciBleGNsdWRlIGxpc3RzIGFuZAorICogdGhlIGV4Y2x1ZGVfc3RhY2suICBEb2VzIG5vdCBmcmVlIGRpciBpdHNlbGYuCisgKi8KK3ZvaWQgY2xlYXJfZGlyZWN0b3J5KHN0cnVjdCBkaXJfc3RydWN0ICpkaXIpCit7CisJaW50IGksIGo7CisJc3RydWN0IGV4Y2x1ZGVfbGlzdF9ncm91cCAqZ3JvdXA7CisJc3RydWN0IGV4Y2x1ZGVfbGlzdCAqZWw7CisJc3RydWN0IGV4Y2x1ZGVfc3RhY2sgKnN0azsKKworCWZvciAoaSA9IEVYQ19DTURMOyBpIDw9IEVYQ19GSUxFOyBpKyspIHsKKwkJZ3JvdXAgPSAmZGlyLT5leGNsdWRlX2xpc3RfZ3JvdXBbaV07CisJCWZvciAoaiA9IDA7IGogPCBncm91cC0+bnI7IGorKykgeworCQkJZWwgPSAmZ3JvdXAtPmVsW2pdOworCQkJaWYgKGkgPT0gRVhDX0RJUlMpCisJCQkJZnJlZSgoY2hhciAqKWVsLT5zcmMpOworCQkJY2xlYXJfZXhjbHVkZV9saXN0KGVsKTsKKwkJfQorCQlmcmVlKGdyb3VwLT5lbCk7CisJfQorCisJc3RrID0gZGlyLT5leGNsdWRlX3N0YWNrOworCXdoaWxlIChzdGspIHsKKwkJc3RydWN0IGV4Y2x1ZGVfc3RhY2sgKnByZXYgPSBzdGstPnByZXY7CisJCWZyZWUoc3RrKTsKKwkJc3RrID0gcHJldjsKKwl9Cit9CmRpZmYgLS1naXQgYS9kaXIuaCBiL2Rpci5oCmluZGV4IDU4YjZmYzcuLjNkNmI4MGMgMTAwNjQ0Ci0tLSBhL2Rpci5oCisrKyBiL2Rpci5oCkBAIC0xLDM0ICsxLDc0IEBACiAjaWZuZGVmIERJUl9ICiAjZGVmaW5lIERJUl9ICiAKKy8qIFNlZSBEb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktZGlyZWN0b3J5LWxpc3RpbmcudHh0ICovCisKKyNpbmNsdWRlICJzdHJidWYuaCIKKwogc3RydWN0IGRpcl9lbnRyeSB7CiAJdW5zaWduZWQgaW50IGxlbjsKIAljaGFyIG5hbWVbRkxFWF9BUlJBWV07IC8qIG1vcmUgKi8KIH07CiAKICNkZWZpbmUgRVhDX0ZMQUdfTk9ESVIgMQotI2RlZmluZSBFWENfRkxBR19OT1dJTERDQVJEIDIKICNkZWZpbmUgRVhDX0ZMQUdfRU5EU1dJVEggNAogI2RlZmluZSBFWENfRkxBR19NVVNUQkVESVIgOAorI2RlZmluZSBFWENfRkxBR19ORUdBVElWRSAxNgogCisvKgorICogRWFjaCBleGNsdWRlcyBmaWxlIHdpbGwgYmUgcGFyc2VkIGludG8gYSBmcmVzaCBleGNsdWRlX2xpc3Qgd2hpY2gKKyAqIGlzIGFwcGVuZGVkIHRvIHRoZSByZWxldmFudCBleGNsdWRlX2xpc3RfZ3JvdXAgKGVpdGhlciBFWENfRElSUyBvcgorICogRVhDX0ZJTEUpLiAgQW4gZXhjbHVkZV9saXN0IHdpdGhpbiB0aGUgRVhDX0NNREwgZXhjbHVkZV9saXN0X2dyb3VwCisgKiBjYW4gYWxzbyBiZSB1c2VkIHRvIHJlcHJlc2VudCB0aGUgbGlzdCBvZiAtLWV4Y2x1ZGUgdmFsdWVzIHBhc3NlZAorICogdmlhIENMSSBhcmdzLgorICovCiBzdHJ1Y3QgZXhjbHVkZV9saXN0IHsKIAlpbnQgbnI7CiAJaW50IGFsbG9jOworCisJLyogcmVtZW1iZXIgcG9pbnRlciB0byBleGNsdWRlIGZpbGUgY29udGVudHMgc28gd2UgY2FuIGZyZWUoKSAqLworCWNoYXIgKmZpbGVidWY7CisKKwkvKiBvcmlnaW4gb2YgbGlzdCwgZS5nLiBwYXRoIHRvIGZpbGVuYW1lLCBvciBkZXNjcmlwdGl2ZSBzdHJpbmcgKi8KKwljb25zdCBjaGFyICpzcmM7CisKIAlzdHJ1Y3QgZXhjbHVkZSB7CisJCS8qCisJCSAqIFRoaXMgYWxsb3dzIGNhbGxlcnMgb2YgbGFzdF9leGNsdWRlX21hdGNoaW5nKCkgZXRjLgorCQkgKiB0byBkZXRlcm1pbmUgdGhlIG9yaWdpbiBvZiB0aGUgbWF0Y2hpbmcgcGF0dGVybi4KKwkJICovCisJCXN0cnVjdCBleGNsdWRlX2xpc3QgKmVsOworCiAJCWNvbnN0IGNoYXIgKnBhdHRlcm47CiAJCWludCBwYXR0ZXJubGVuOworCQlpbnQgbm93aWxkY2FyZGxlbjsKIAkJY29uc3QgY2hhciAqYmFzZTsKIAkJaW50IGJhc2VsZW47Ci0JCWludCB0b19leGNsdWRlOwogCQlpbnQgZmxhZ3M7CisKKwkJLyoKKwkJICogQ291bnRpbmcgc3RhcnRzIGZyb20gMSBmb3IgbGluZSBudW1iZXJzIGluIGlnbm9yZSBmaWxlcywKKwkJICogYW5kIGZyb20gLTEgZGVjcmVtZW50aW5nIGZvciBwYXR0ZXJucyBmcm9tIENMSSBhcmdzLgorCQkgKi8KKwkJaW50IHNyY3BvczsKIAl9ICoqZXhjbHVkZXM7CiB9OwogCisvKgorICogVGhlIGNvbnRlbnRzIG9mIHRoZSBwZXItZGlyZWN0b3J5IGV4Y2x1ZGUgZmlsZXMgYXJlIGxhemlseSByZWFkIG9uCisgKiBkZW1hbmQgYW5kIHRoZW4gY2FjaGVkIGluIG1lbW9yeSwgb25lIHBlciBleGNsdWRlX3N0YWNrIHN0cnVjdCwgaW4KKyAqIG9yZGVyIHRvIGF2b2lkIG9wZW5pbmcgYW5kIHBhcnNpbmcgZWFjaCBvbmUgZXZlcnkgdGltZSB0aGF0CisgKiBkaXJlY3RvcnkgaXMgdHJhdmVyc2VkLgorICovCiBzdHJ1Y3QgZXhjbHVkZV9zdGFjayB7Ci0Jc3RydWN0IGV4Y2x1ZGVfc3RhY2sgKnByZXY7Ci0JY2hhciAqZmlsZWJ1ZjsKKwlzdHJ1Y3QgZXhjbHVkZV9zdGFjayAqcHJldjsgLyogdGhlIHN0cnVjdCBleGNsdWRlX3N0YWNrIGZvciB0aGUgcGFyZW50IGRpcmVjdG9yeSAqLwogCWludCBiYXNlbGVuOwotCWludCBleGNsdWRlX2l4OworCWludCBleGNsdWRlX2l4OyAvKiBpbmRleCBvZiBleGNsdWRlX2xpc3Qgd2l0aGluIEVYQ19ESVJTIGV4Y2x1ZGVfbGlzdF9ncm91cCAqLworfTsKKworc3RydWN0IGV4Y2x1ZGVfbGlzdF9ncm91cCB7CisJaW50IG5yLCBhbGxvYzsKKwlzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbDsKIH07CiAKIHN0cnVjdCBkaXJfc3RydWN0IHsKQEAgLTM5LDI4ICs3OSw1MiBAQAogCQlESVJfU0hPV19PVEhFUl9ESVJFQ1RPUklFUyA9IDE8PDEsCiAJCURJUl9ISURFX0VNUFRZX0RJUkVDVE9SSUVTID0gMTw8MiwKIAkJRElSX05PX0dJVExJTktTID0gMTw8MywKLQkJRElSX0NPTExFQ1RfSUdOT1JFRCA9IDE8PDQKKwkJRElSX0NPTExFQ1RfSUdOT1JFRCA9IDE8PDQsCisJCURJUl9TSE9XX0lHTk9SRURfVE9PID0gMTw8NQogCX0gZmxhZ3M7CiAJc3RydWN0IGRpcl9lbnRyeSAqKmVudHJpZXM7CiAJc3RydWN0IGRpcl9lbnRyeSAqKmlnbm9yZWQ7CiAKIAkvKiBFeGNsdWRlIGluZm8gKi8KIAljb25zdCBjaGFyICpleGNsdWRlX3Blcl9kaXI7Ci0Jc3RydWN0IGV4Y2x1ZGVfbGlzdCBleGNsdWRlX2xpc3RbM107CisKIAkvKgotCSAqIFdlIG1haW50YWluIHRocmVlIGV4Y2x1ZGUgcGF0dGVybiBsaXN0czoKKwkgKiBXZSBtYWludGFpbiB0aHJlZSBncm91cHMgb2YgZXhjbHVkZSBwYXR0ZXJuIGxpc3RzOgorCSAqCiAJICogRVhDX0NNREwgbGlzdHMgcGF0dGVybnMgZXhwbGljaXRseSBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lLgogCSAqIEVYQ19ESVJTIGxpc3RzIHBhdHRlcm5zIG9idGFpbmVkIGZyb20gcGVyLWRpcmVjdG9yeSBpZ25vcmUgZmlsZXMuCi0JICogRVhDX0ZJTEUgbGlzdHMgcGF0dGVybnMgZnJvbSBmYWxsYmFjayBpZ25vcmUgZmlsZXMuCisJICogRVhDX0ZJTEUgbGlzdHMgcGF0dGVybnMgZnJvbSBmYWxsYmFjayBpZ25vcmUgZmlsZXMsIGUuZy4KKwkgKiAgIC0gLmdpdC9pbmZvL2V4Y2x1ZGUKKwkgKiAgIC0gY29yZS5leGNsdWRlc2ZpbGUKKwkgKgorCSAqIEVhY2ggZ3JvdXAgY29udGFpbnMgbXVsdGlwbGUgZXhjbHVkZSBsaXN0cywgYSBzaW5nbGUgbGlzdAorCSAqIHBlciBzb3VyY2UuCiAJICovCiAjZGVmaW5lIEVYQ19DTURMIDAKICNkZWZpbmUgRVhDX0RJUlMgMQogI2RlZmluZSBFWENfRklMRSAyCisJc3RydWN0IGV4Y2x1ZGVfbGlzdF9ncm91cCBleGNsdWRlX2xpc3RfZ3JvdXBbM107CiAKKwkvKgorCSAqIFRlbXBvcmFyeSB2YXJpYWJsZXMgd2hpY2ggYXJlIHVzZWQgZHVyaW5nIGxvYWRpbmcgb2YgdGhlCisJICogcGVyLWRpcmVjdG9yeSBleGNsdWRlIGxpc3RzLgorCSAqCisJICogZXhjbHVkZV9zdGFjayBwb2ludHMgdG8gdGhlIHRvcCBvZiB0aGUgZXhjbHVkZV9zdGFjaywgYW5kCisJICogYmFzZWJ1ZiBjb250YWlucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSBjdXJyZW50CisJICogKHN1YilkaXJlY3RvcnkgaW4gdGhlIHRyYXZlcnNhbC4gRXhjbHVkZSBwb2ludHMgdG8gdGhlCisJICogbWF0Y2hpbmcgZXhjbHVkZSBzdHJ1Y3QgaWYgdGhlIGRpcmVjdG9yeSBpcyBleGNsdWRlZC4KKwkgKi8KIAlzdHJ1Y3QgZXhjbHVkZV9zdGFjayAqZXhjbHVkZV9zdGFjazsKKwlzdHJ1Y3QgZXhjbHVkZSAqZXhjbHVkZTsKIAljaGFyIGJhc2VidWZbUEFUSF9NQVhdOwogfTsKIAorLyoKKyAqIFRoZSBvcmRlcmluZyBvZiB0aGVzZSBjb25zdGFudHMgaXMgc2lnbmlmaWNhbnQsIHdpdGgKKyAqIGhpZ2hlci1udW1iZXJlZCBtYXRjaCB0eXBlcyBzaWduaWZ5aW5nICJjbG9zZXIiIChpLmUuIG1vcmUKKyAqIHNwZWNpZmljKSBtYXRjaGVzIHdoaWNoIHdpbGwgb3ZlcnJpZGUgbG93ZXItbnVtYmVyZWQgbWF0Y2ggdHlwZXMKKyAqIHdoZW4gcG9wdWxhdGluZyB0aGUgc2VlbltdIGFycmF5LgorICovCiAjZGVmaW5lIE1BVENIRURfUkVDVVJTSVZFTFkgMQogI2RlZmluZSBNQVRDSEVEX0ZOTUFUQ0ggMgogI2RlZmluZSBNQVRDSEVEX0VYQUNUTFkgMwpAQCAtNzQsMTYgKzEzOCwzNSBAQAogZXh0ZXJuIGludCBmaWxsX2RpcmVjdG9yeShzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICoqcGF0aHNwZWMpOwogZXh0ZXJuIGludCByZWFkX2RpcmVjdG9yeShzdHJ1Y3QgZGlyX3N0cnVjdCAqLCBjb25zdCBjaGFyICpwYXRoLCBpbnQgbGVuLCBjb25zdCBjaGFyICoqcGF0aHNwZWMpOwogCi1leHRlcm4gaW50IGV4Y2x1ZGVkX2Zyb21fbGlzdChjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IHBhdGhsZW4sIGNvbnN0IGNoYXIgKmJhc2VuYW1lLAotCQkJICAgICAgaW50ICpkdHlwZSwgc3RydWN0IGV4Y2x1ZGVfbGlzdCAqZWwpOwotZXh0ZXJuIGludCBleGNsdWRlZChzdHJ1Y3QgZGlyX3N0cnVjdCAqLCBjb25zdCBjaGFyICosIGludCAqKTsKK2V4dGVybiBpbnQgaXNfZXhjbHVkZWRfZnJvbV9saXN0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgcGF0aGxlbiwgY29uc3QgY2hhciAqYmFzZW5hbWUsCisJCQkJIGludCAqZHR5cGUsIHN0cnVjdCBleGNsdWRlX2xpc3QgKmVsKTsKIHN0cnVjdCBkaXJfZW50cnkgKmRpcl9hZGRfaWdub3JlZChzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGxlbik7CisKKy8qCisgKiB0aGVzZSBpbXBsZW1lbnQgdGhlIG1hdGNoaW5nIGxvZ2ljIGZvciBkaXIuYzpleGNsdWRlZF9mcm9tX2xpc3QgYW5kCisgKiBhdHRyLmM6cGF0aF9tYXRjaGVzKCkKKyAqLworZXh0ZXJuIGludCBtYXRjaF9iYXNlbmFtZShjb25zdCBjaGFyICosIGludCwKKwkJCSAgY29uc3QgY2hhciAqLCBpbnQsIGludCwgaW50KTsKK2V4dGVybiBpbnQgbWF0Y2hfcGF0aG5hbWUoY29uc3QgY2hhciAqLCBpbnQsCisJCQkgIGNvbnN0IGNoYXIgKiwgaW50LAorCQkJICBjb25zdCBjaGFyICosIGludCwgaW50LCBpbnQpOworCitleHRlcm4gc3RydWN0IGV4Y2x1ZGUgKmxhc3RfZXhjbHVkZV9tYXRjaGluZyhzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLAorCQkJCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGludCAqZHR5cGUpOworCitleHRlcm4gaW50IGlzX2V4Y2x1ZGVkKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsIGNvbnN0IGNoYXIgKm5hbWUsIGludCAqZHR5cGUpOworCitleHRlcm4gc3RydWN0IGV4Y2x1ZGVfbGlzdCAqYWRkX2V4Y2x1ZGVfbGlzdChzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLAorCQkJCQkgICAgIGludCBncm91cF90eXBlLCBjb25zdCBjaGFyICpzcmMpOwogZXh0ZXJuIGludCBhZGRfZXhjbHVkZXNfZnJvbV9maWxlX3RvX2xpc3QoY29uc3QgY2hhciAqZm5hbWUsIGNvbnN0IGNoYXIgKmJhc2UsIGludCBiYXNlbGVuLAotCQkJCQkgIGNoYXIgKipidWZfcCwgc3RydWN0IGV4Y2x1ZGVfbGlzdCAqd2hpY2gsIGludCBjaGVja19pbmRleCk7CisJCQkJCSAgc3RydWN0IGV4Y2x1ZGVfbGlzdCAqZWwsIGludCBjaGVja19pbmRleCk7CiBleHRlcm4gdm9pZCBhZGRfZXhjbHVkZXNfZnJvbV9maWxlKHN0cnVjdCBkaXJfc3RydWN0ICosIGNvbnN0IGNoYXIgKmZuYW1lKTsKK2V4dGVybiB2b2lkIHBhcnNlX2V4Y2x1ZGVfcGF0dGVybihjb25zdCBjaGFyICoqc3RyaW5nLCBpbnQgKnBhdHRlcm5sZW4sIGludCAqZmxhZ3MsIGludCAqbm93aWxkY2FyZGxlbik7CiBleHRlcm4gdm9pZCBhZGRfZXhjbHVkZShjb25zdCBjaGFyICpzdHJpbmcsIGNvbnN0IGNoYXIgKmJhc2UsCi0JCQlpbnQgYmFzZWxlbiwgc3RydWN0IGV4Y2x1ZGVfbGlzdCAqd2hpY2gpOwotZXh0ZXJuIHZvaWQgZnJlZV9leGNsdWRlcyhzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbCk7CisJCQlpbnQgYmFzZWxlbiwgc3RydWN0IGV4Y2x1ZGVfbGlzdCAqZWwsIGludCBzcmNwb3MpOworZXh0ZXJuIHZvaWQgY2xlYXJfZXhjbHVkZV9saXN0KHN0cnVjdCBleGNsdWRlX2xpc3QgKmVsKTsKK2V4dGVybiB2b2lkIGNsZWFyX2RpcmVjdG9yeShzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyKTsKIGV4dGVybiBpbnQgZmlsZV9leGlzdHMoY29uc3QgY2hhciAqKTsKIAogZXh0ZXJuIGludCBpc19pbnNpZGVfZGlyKGNvbnN0IGNoYXIgKmRpcik7CkBAIC0xMTIsNCArMTk1LDEzIEBACiBleHRlcm4gaW50IHN0cm5jbXBfaWNhc2UoY29uc3QgY2hhciAqYSwgY29uc3QgY2hhciAqYiwgc2l6ZV90IGNvdW50KTsKIGV4dGVybiBpbnQgZm5tYXRjaF9pY2FzZShjb25zdCBjaGFyICpwYXR0ZXJuLCBjb25zdCBjaGFyICpzdHJpbmcsIGludCBmbGFncyk7CiAKKy8qCisgKiBUaGUgcHJlZml4IHBhcnQgb2YgcGF0dGVybiBtdXN0IG5vdCBjb250YWlucyB3aWxkY2FyZHMuCisgKi8KKyNkZWZpbmUgR0ZOTV9QQVRITkFNRSAxCQkvKiBzaW1pbGFyIHRvIEZOTV9QQVRITkFNRSAqLworI2RlZmluZSBHRk5NX09ORVNUQVIgIDIJCS8qIHRoZXJlIGlzIG9ubHkgX29uZV8gd2lsZGNhcmQsIGEgc3RhciAqLworCitleHRlcm4gaW50IGdpdF9mbm1hdGNoKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGNvbnN0IGNoYXIgKnN0cmluZywKKwkJICAgICAgIGludCBmbGFncywgaW50IHByZWZpeCk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZWRpdG9yLmMgYi9lZGl0b3IuYwppbmRleCBkODM0MDAzLi4yN2JkZWNkIDEwMDY0NAotLS0gYS9lZGl0b3IuYworKysgYi9lZGl0b3IuYwpAQCAtMSw2ICsxLDcgQEAKICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgInN0cmJ1Zi5oIgogI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCisjaW5jbHVkZSAic2lnY2hhaW4uaCIKIAogI2lmbmRlZiBERUZBVUxUX0VESVRPUgogI2RlZmluZSBERUZBVUxUX0VESVRPUiAidmkiCkBAIC0zNyw4ICszOCwyNSBAQAogCiAJaWYgKHN0cmNtcChlZGl0b3IsICI6IikpIHsKIAkJY29uc3QgY2hhciAqYXJnc1tdID0geyBlZGl0b3IsIHBhdGgsIE5VTEwgfTsKKwkJc3RydWN0IGNoaWxkX3Byb2Nlc3MgcDsKKwkJaW50IHJldCwgc2lnOwogCi0JCWlmIChydW5fY29tbWFuZF92X29wdF9jZF9lbnYoYXJncywgUlVOX1VTSU5HX1NIRUxMLCBOVUxMLCBlbnYpKQorCQltZW1zZXQoJnAsIDAsIHNpemVvZihwKSk7CisJCXAuYXJndiA9IGFyZ3M7CisJCXAuZW52ID0gZW52OworCQlwLnVzZV9zaGVsbCA9IDE7CisJCWlmIChzdGFydF9jb21tYW5kKCZwKSA8IDApCisJCQlyZXR1cm4gZXJyb3IoInVuYWJsZSB0byBzdGFydCBlZGl0b3IgJyVzJyIsIGVkaXRvcik7CisKKwkJc2lnY2hhaW5fcHVzaChTSUdJTlQsIFNJR19JR04pOworCQlzaWdjaGFpbl9wdXNoKFNJR1FVSVQsIFNJR19JR04pOworCQlyZXQgPSBmaW5pc2hfY29tbWFuZCgmcCk7CisJCXNpZyA9IHJldCAtIDEyODsKKwkJc2lnY2hhaW5fcG9wKFNJR0lOVCk7CisJCXNpZ2NoYWluX3BvcChTSUdRVUlUKTsKKwkJaWYgKHNpZyA9PSBTSUdJTlQgfHwgc2lnID09IFNJR1FVSVQpCisJCQlyYWlzZShzaWcpOworCQlpZiAocmV0KQogCQkJcmV0dXJuIGVycm9yKCJUaGVyZSB3YXMgYSBwcm9ibGVtIHdpdGggdGhlIGVkaXRvciAnJXMnLiIsCiAJCQkJCWVkaXRvcik7CiAJfQpkaWZmIC0tZ2l0IGEvZW50cnkuYyBiL2VudHJ5LmMKaW5kZXggMTdhNmJjYy4uZDdjMTMxZCAxMDA2NDQKLS0tIGEvZW50cnkuYworKysgYi9lbnRyeS5jCkBAIC0xMjAsMTYgKzEyMCwxOCBAQAogCQkJCSBjb25zdCBzdHJ1Y3QgY2hlY2tvdXQgKnN0YXRlLCBpbnQgdG9fdGVtcGZpbGUsCiAJCQkJIGludCAqZnN0YXRfZG9uZSwgc3RydWN0IHN0YXQgKnN0YXRidWYpCiB7Ci0JaW50IHJlc3VsdCA9IC0xOworCWludCByZXN1bHQgPSAwOwogCWludCBmZDsKIAogCWZkID0gb3Blbl9vdXRwdXRfZmQocGF0aCwgY2UsIHRvX3RlbXBmaWxlKTsKLQlpZiAoMCA8PSBmZCkgewotCQlyZXN1bHQgPSBzdHJlYW1fYmxvYl90b19mZChmZCwgY2UtPnNoYTEsIGZpbHRlciwgMSk7Ci0JCSpmc3RhdF9kb25lID0gZnN0YXRfb3V0cHV0KGZkLCBzdGF0ZSwgc3RhdGJ1Zik7Ci0JCXJlc3VsdCA9IGNsb3NlKGZkKTsKLQl9Ci0JaWYgKHJlc3VsdCAmJiAwIDw9IGZkKQorCWlmIChmZCA8IDApCisJCXJldHVybiAtMTsKKworCXJlc3VsdCB8PSBzdHJlYW1fYmxvYl90b19mZChmZCwgY2UtPnNoYTEsIGZpbHRlciwgMSk7CisJKmZzdGF0X2RvbmUgPSBmc3RhdF9vdXRwdXQoZmQsIHN0YXRlLCBzdGF0YnVmKTsKKwlyZXN1bHQgfD0gY2xvc2UoZmQpOworCisJaWYgKHJlc3VsdCkKIAkJdW5saW5rKHBhdGgpOwogCXJldHVybiByZXN1bHQ7CiB9CkBAIC0xNDUsNyArMTQ3LDcgQEAKIAlzdHJ1Y3Qgc3RhdCBzdDsKIAogCWlmIChjZV9tb2RlX3NfaWZtdCA9PSBTX0lGUkVHKSB7Ci0JCXN0cnVjdCBzdHJlYW1fZmlsdGVyICpmaWx0ZXIgPSBnZXRfc3RyZWFtX2ZpbHRlcihwYXRoLCBjZS0+c2hhMSk7CisJCXN0cnVjdCBzdHJlYW1fZmlsdGVyICpmaWx0ZXIgPSBnZXRfc3RyZWFtX2ZpbHRlcihjZS0+bmFtZSwgY2UtPnNoYTEpOwogCQlpZiAoZmlsdGVyICYmCiAJCSAgICAhc3RyZWFtaW5nX3dyaXRlX2VudHJ5KGNlLCBwYXRoLCBmaWx0ZXIsCiAJCQkJCSAgIHN0YXRlLCB0b190ZW1wZmlsZSwKZGlmZiAtLWdpdCBhL2Vudmlyb25tZW50LmMgYi9lbnZpcm9ubWVudC5jCmluZGV4IDY2OWU0OTguLmUyZTc1YzEgMTAwNjQ0Ci0tLSBhL2Vudmlyb25tZW50LmMKKysrIGIvZW52aXJvbm1lbnQuYwpAQCAtMTMsNiArMTMsNyBAQAogCiBpbnQgdHJ1c3RfZXhlY3V0YWJsZV9iaXQgPSAxOwogaW50IHRydXN0X2N0aW1lID0gMTsKK2ludCBjaGVja19zdGF0ID0gMTsKIGludCBoYXNfc3ltbGlua3MgPSAxOwogaW50IG1pbmltdW1fYWJicmV2ID0gNCwgZGVmYXVsdF9hYmJyZXYgPSA3OwogaW50IGlnbm9yZV9jYXNlOwpAQCAtNTgsOSArNTksMTYgQEAKIGludCBncmFmdHNfcmVwbGFjZV9wYXJlbnRzID0gMTsKIGludCBjb3JlX2FwcGx5X3NwYXJzZV9jaGVja291dDsKIGludCBtZXJnZV9sb2dfY29uZmlnID0gLTE7CitpbnQgcHJlY29tcG9zZWRfdW5pY29kZSA9IC0xOyAvKiBzZWUgcHJvYmVfdXRmOF9wYXRobmFtZV9jb21wb3NpdGlvbigpICovCiBzdHJ1Y3Qgc3RhcnR1cF9pbmZvICpzdGFydHVwX2luZm87CiB1bnNpZ25lZCBsb25nIHBhY2tfc2l6ZV9saW1pdF9jZmc7CiAKKy8qCisgKiBUaGUgY2hhcmFjdGVyIHRoYXQgYmVnaW5zIGEgY29tbWVudGVkIGxpbmUgaW4gdXNlci1lZGl0YWJsZSBmaWxlCisgKiB0aGF0IGlzIHN1YmplY3QgdG8gc3RyaXBzcGFjZS4KKyAqLworY2hhciBjb21tZW50X2xpbmVfY2hhciA9ICcjJzsKKwogLyogUGFyYWxsZWwgaW5kZXggc3RhdCBkYXRhIHByZWxvYWQ/ICovCiBpbnQgY29yZV9wcmVsb2FkX2luZGV4ID0gMDsKIApAQCAtNzUsMjAgKzgzLDIwIEBACiBzdGF0aWMgY2hhciAqZ2l0X29iamVjdF9kaXIsICpnaXRfaW5kZXhfZmlsZSwgKmdpdF9ncmFmdF9maWxlOwogCiAvKgotICogUmVwb3NpdG9yeS1sb2NhbCBHSVRfKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLSAqIFJlbWVtYmVyIHRvIHVwZGF0ZSBsb2NhbF9yZXBvX2Vudl9zaXplIGluIGNhY2hlLmggd2hlbgotICogdGhlIHNpemUgb2YgdGhlIGxpc3QgY2hhbmdlcworICogUmVwb3NpdG9yeS1sb2NhbCBHSVRfKiBlbnZpcm9ubWVudCB2YXJpYWJsZXM7IHNlZSBjYWNoZS5oIGZvciBkZXRhaWxzLgogICovCi1jb25zdCBjaGFyICogY29uc3QgbG9jYWxfcmVwb19lbnZbTE9DQUxfUkVQT19FTlZfU0laRSArIDFdID0geworY29uc3QgY2hhciAqIGNvbnN0IGxvY2FsX3JlcG9fZW52W10gPSB7CiAJQUxURVJOQVRFX0RCX0VOVklST05NRU5ULAogCUNPTkZJR19FTlZJUk9OTUVOVCwKIAlDT05GSUdfREFUQV9FTlZJUk9OTUVOVCwKIAlEQl9FTlZJUk9OTUVOVCwKIAlHSVRfRElSX0VOVklST05NRU5ULAogCUdJVF9XT1JLX1RSRUVfRU5WSVJPTk1FTlQsCisJR0lUX0lNUExJQ0lUX1dPUktfVFJFRV9FTlZJUk9OTUVOVCwKIAlHUkFGVF9FTlZJUk9OTUVOVCwKIAlJTkRFWF9FTlZJUk9OTUVOVCwKIAlOT19SRVBMQUNFX09CSkVDVFNfRU5WSVJPTk1FTlQsCisJR0lUX1BSRUZJWF9FTlZJUk9OTUVOVCwKIAlOVUxMCiB9OwogCmRpZmYgLS1naXQgYS9mYXN0LWltcG9ydC5jIGIvZmFzdC1pbXBvcnQuYwppbmRleCBlZWQ5N2M4Li41ZjUzOWQ3IDEwMDY0NAotLS0gYS9mYXN0LWltcG9ydC5jCisrKyBiL2Zhc3QtaW1wb3J0LmMKQEAgLTE2OTEsNyArMTY5MSw3IEBACiAJCQlyZXR1cm4gZXJyb3IoIkJyYW5jaCAlcyBpcyBtaXNzaW5nIGNvbW1pdHMuIiwgYi0+bmFtZSk7CiAJCX0KIAotCQlpZiAoIWluX21lcmdlX2Jhc2VzKG9sZF9jbWl0LCAmbmV3X2NtaXQsIDEpKSB7CisJCWlmICghaW5fbWVyZ2VfYmFzZXMob2xkX2NtaXQsIG5ld19jbWl0KSkgewogCQkJdW5sb2NrX3JlZihsb2NrKTsKIAkJCXdhcm5pbmcoIk5vdCB1cGRhdGluZyAlcyIKIAkJCQkiIChuZXcgdGlwICVzIGRvZXMgbm90IGNvbnRhaW4gJXMpIiwKQEAgLTIyNjUsNyArMjI2NSw3IEBACiAJY29uc3QgY2hhciAqcCA9IGNvbW1hbmRfYnVmLmJ1ZiArIDI7CiAJc3RhdGljIHN0cnVjdCBzdHJidWYgdXEgPSBTVFJCVUZfSU5JVDsKIAljb25zdCBjaGFyICplbmRwOwotCXN0cnVjdCBvYmplY3RfZW50cnkgKm9lID0gb2U7CisJc3RydWN0IG9iamVjdF9lbnRyeSAqb2U7CiAJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKIAl1aW50MTZfdCBtb2RlLCBpbmxpbmVfZGF0YSA9IDA7CiAKQEAgLTIyOTIsNiArMjI5Miw3IEBACiAJCWhhc2hjcHkoc2hhMSwgb2UtPmlkeC5zaGExKTsKIAl9IGVsc2UgaWYgKCFwcmVmaXhjbXAocCwgImlubGluZSAiKSkgewogCQlpbmxpbmVfZGF0YSA9IDE7CisJCW9lID0gTlVMTDsgLyogbm90IHVzZWQgd2l0aCBpbmxpbmVfZGF0YSwgYnV0IG1ha2VzIGdjYyBoYXBweSAqLwogCQlwICs9IHN0cmxlbigiaW5saW5lIik7ICAvKiBhZHZhbmNlIHRvIHNwYWNlICovCiAJfSBlbHNlIHsKIAkJaWYgKGdldF9zaGExX2hleChwLCBzaGExKSkKQEAgLTI0MzQsNyArMjQzNSw3IEBACiB7CiAJY29uc3QgY2hhciAqcCA9IGNvbW1hbmRfYnVmLmJ1ZiArIDI7CiAJc3RhdGljIHN0cnVjdCBzdHJidWYgdXEgPSBTVFJCVUZfSU5JVDsKLQlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICpvZSA9IG9lOworCXN0cnVjdCBvYmplY3RfZW50cnkgKm9lOwogCXN0cnVjdCBicmFuY2ggKnM7CiAJdW5zaWduZWQgY2hhciBzaGExWzIwXSwgY29tbWl0X3NoYTFbMjBdOwogCWNoYXIgcGF0aFs2MF07CkBAIC0yNDY0LDYgKzI0NjUsNyBAQAogCQloYXNoY3B5KHNoYTEsIG9lLT5pZHguc2hhMSk7CiAJfSBlbHNlIGlmICghcHJlZml4Y21wKHAsICJpbmxpbmUgIikpIHsKIAkJaW5saW5lX2RhdGEgPSAxOworCQlvZSA9IE5VTEw7IC8qIG5vdCB1c2VkIHdpdGggaW5saW5lX2RhdGEsIGJ1dCBtYWtlcyBnY2MgaGFwcHkgKi8KIAkJcCArPSBzdHJsZW4oImlubGluZSIpOyAgLyogYWR2YW5jZSB0byBzcGFjZSAqLwogCX0gZWxzZSB7CiAJCWlmIChnZXRfc2hhMV9oZXgocCwgc2hhMSkpCkBAIC0yNjEzLDcgKzI2MTUsNyBAQAogCiBzdGF0aWMgc3RydWN0IGhhc2hfbGlzdCAqcGFyc2VfbWVyZ2UodW5zaWduZWQgaW50ICpjb3VudCkKIHsKLQlzdHJ1Y3QgaGFzaF9saXN0ICpsaXN0ID0gTlVMTCwgKm4sICplID0gZTsKKwlzdHJ1Y3QgaGFzaF9saXN0ICpsaXN0ID0gTlVMTCwgKip0YWlsID0gJmxpc3QsICpuOwogCWNvbnN0IGNoYXIgKmZyb207CiAJc3RydWN0IGJyYW5jaCAqczsKIApAQCAtMjY0MSwxMSArMjY0Myw5IEBACiAJCQlkaWUoIkludmFsaWQgcmVmIG5hbWUgb3IgU0hBMSBleHByZXNzaW9uOiAlcyIsIGZyb20pOwogCiAJCW4tPm5leHQgPSBOVUxMOwotCQlpZiAobGlzdCkKLQkJCWUtPm5leHQgPSBuOwotCQllbHNlCi0JCQlsaXN0ID0gbjsKLQkJZSA9IG47CisJCSp0YWlsID0gbjsKKwkJdGFpbCA9ICZuLT5uZXh0OworCiAJCSgqY291bnQpKys7CiAJCXJlYWRfbmV4dF9jb21tYW5kKCk7CiAJfQpkaWZmIC0tZ2l0IGEvZmV0Y2gtcGFjay5jIGIvZmV0Y2gtcGFjay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNTQ2N2MKLS0tIC9kZXYvbnVsbAorKysgYi9mZXRjaC1wYWNrLmMKQEAgLTAsMCArMSw5OTEgQEAKKyNpbmNsdWRlICJjYWNoZS5oIgorI2luY2x1ZGUgInJlZnMuaCIKKyNpbmNsdWRlICJwa3QtbGluZS5oIgorI2luY2x1ZGUgImNvbW1pdC5oIgorI2luY2x1ZGUgInRhZy5oIgorI2luY2x1ZGUgImV4ZWNfY21kLmgiCisjaW5jbHVkZSAicGFjay5oIgorI2luY2x1ZGUgInNpZGViYW5kLmgiCisjaW5jbHVkZSAiZmV0Y2gtcGFjay5oIgorI2luY2x1ZGUgInJlbW90ZS5oIgorI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCisjaW5jbHVkZSAidHJhbnNwb3J0LmgiCisjaW5jbHVkZSAidmVyc2lvbi5oIgorCitzdGF0aWMgaW50IHRyYW5zZmVyX3VucGFja19saW1pdCA9IC0xOworc3RhdGljIGludCBmZXRjaF91bnBhY2tfbGltaXQgPSAtMTsKK3N0YXRpYyBpbnQgdW5wYWNrX2xpbWl0ID0gMTAwOworc3RhdGljIGludCBwcmVmZXJfb2ZzX2RlbHRhID0gMTsKK3N0YXRpYyBpbnQgbm9fZG9uZTsKK3N0YXRpYyBpbnQgZmV0Y2hfZnNja19vYmplY3RzID0gLTE7CitzdGF0aWMgaW50IHRyYW5zZmVyX2ZzY2tfb2JqZWN0cyA9IC0xOworc3RhdGljIGludCBhZ2VudF9zdXBwb3J0ZWQ7CitzdGF0aWMgc3RydWN0IGxvY2tfZmlsZSBzaGFsbG93X2xvY2s7CitzdGF0aWMgY29uc3QgY2hhciAqYWx0ZXJuYXRlX3NoYWxsb3dfZmlsZTsKKworI2RlZmluZSBDT01QTEVURQkoMVUgPDwgMCkKKyNkZWZpbmUgQ09NTU9OCQkoMVUgPDwgMSkKKyNkZWZpbmUgQ09NTU9OX1JFRgkoMVUgPDwgMikKKyNkZWZpbmUgU0VFTgkJKDFVIDw8IDMpCisjZGVmaW5lIFBPUFBFRAkJKDFVIDw8IDQpCisKK3N0YXRpYyBpbnQgbWFya2VkOworCisvKgorICogQWZ0ZXIgc2VuZGluZyB0aGlzIG1hbnkgImhhdmUicyBpZiB3ZSBkbyBub3QgZ2V0IGFueSBuZXcgQUNLICwgd2UKKyAqIGdpdmUgdXAgdHJhdmVyc2luZyBvdXIgaGlzdG9yeS4KKyAqLworI2RlZmluZSBNQVhfSU5fVkFJTiAyNTYKKworc3RhdGljIHN0cnVjdCBjb21taXRfbGlzdCAqcmV2X2xpc3Q7CitzdGF0aWMgaW50IG5vbl9jb21tb25fcmV2cywgbXVsdGlfYWNrLCB1c2Vfc2lkZWJhbmQsIGFsbG93X3RpcF9zaGExX2luX3dhbnQ7CisKK3N0YXRpYyB2b2lkIHJldl9saXN0X3B1c2goc3RydWN0IGNvbW1pdCAqY29tbWl0LCBpbnQgbWFyaykKK3sKKwlpZiAoIShjb21taXQtPm9iamVjdC5mbGFncyAmIG1hcmspKSB7CisJCWNvbW1pdC0+b2JqZWN0LmZsYWdzIHw9IG1hcms7CisKKwkJaWYgKCEoY29tbWl0LT5vYmplY3QucGFyc2VkKSkKKwkJCWlmIChwYXJzZV9jb21taXQoY29tbWl0KSkKKwkJCQlyZXR1cm47CisKKwkJY29tbWl0X2xpc3RfaW5zZXJ0X2J5X2RhdGUoY29tbWl0LCAmcmV2X2xpc3QpOworCisJCWlmICghKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgQ09NTU9OKSkKKwkJCW5vbl9jb21tb25fcmV2cysrOworCX0KK30KKworc3RhdGljIGludCByZXZfbGlzdF9pbnNlcnRfcmVmKGNvbnN0IGNoYXIgKnJlZm5hbWUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmbGFnLCB2b2lkICpjYl9kYXRhKQoreworCXN0cnVjdCBvYmplY3QgKm8gPSBkZXJlZl90YWcocGFyc2Vfb2JqZWN0KHNoYTEpLCByZWZuYW1lLCAwKTsKKworCWlmIChvICYmIG8tPnR5cGUgPT0gT0JKX0NPTU1JVCkKKwkJcmV2X2xpc3RfcHVzaCgoc3RydWN0IGNvbW1pdCAqKW8sIFNFRU4pOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY2xlYXJfbWFya3MoY29uc3QgY2hhciAqcmVmbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgaW50IGZsYWcsIHZvaWQgKmNiX2RhdGEpCit7CisJc3RydWN0IG9iamVjdCAqbyA9IGRlcmVmX3RhZyhwYXJzZV9vYmplY3Qoc2hhMSksIHJlZm5hbWUsIDApOworCisJaWYgKG8gJiYgby0+dHlwZSA9PSBPQkpfQ09NTUlUKQorCQljbGVhcl9jb21taXRfbWFya3MoKHN0cnVjdCBjb21taXQgKilvLAorCQkJCSAgIENPTU1PTiB8IENPTU1PTl9SRUYgfCBTRUVOIHwgUE9QUEVEKTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAgIFRoaXMgZnVuY3Rpb24gbWFya3MgYSByZXYgYW5kIGl0cyBhbmNlc3RvcnMgYXMgY29tbW9uLgorICAgSW4gc29tZSBjYXNlcywgaXQgaXMgZGVzaXJhYmxlIHRvIG1hcmsgb25seSB0aGUgYW5jZXN0b3JzIChmb3IgZXhhbXBsZQorICAgd2hlbiBvbmx5IHRoZSBzZXJ2ZXIgZG9lcyBub3QgeWV0IGtub3cgdGhhdCB0aGV5IGFyZSBjb21tb24pLgorKi8KKworc3RhdGljIHZvaWQgbWFya19jb21tb24oc3RydWN0IGNvbW1pdCAqY29tbWl0LAorCQlpbnQgYW5jZXN0b3JzX29ubHksIGludCBkb250X3BhcnNlKQoreworCWlmIChjb21taXQgIT0gTlVMTCAmJiAhKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgQ09NTU9OKSkgeworCQlzdHJ1Y3Qgb2JqZWN0ICpvID0gKHN0cnVjdCBvYmplY3QgKiljb21taXQ7CisKKwkJaWYgKCFhbmNlc3RvcnNfb25seSkKKwkJCW8tPmZsYWdzIHw9IENPTU1PTjsKKworCQlpZiAoIShvLT5mbGFncyAmIFNFRU4pKQorCQkJcmV2X2xpc3RfcHVzaChjb21taXQsIFNFRU4pOworCQllbHNlIHsKKwkJCXN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50czsKKworCQkJaWYgKCFhbmNlc3RvcnNfb25seSAmJiAhKG8tPmZsYWdzICYgUE9QUEVEKSkKKwkJCQlub25fY29tbW9uX3JldnMtLTsKKwkJCWlmICghby0+cGFyc2VkICYmICFkb250X3BhcnNlKQorCQkJCWlmIChwYXJzZV9jb21taXQoY29tbWl0KSkKKwkJCQkJcmV0dXJuOworCisJCQlmb3IgKHBhcmVudHMgPSBjb21taXQtPnBhcmVudHM7CisJCQkJCXBhcmVudHM7CisJCQkJCXBhcmVudHMgPSBwYXJlbnRzLT5uZXh0KQorCQkJCW1hcmtfY29tbW9uKHBhcmVudHMtPml0ZW0sIDAsIGRvbnRfcGFyc2UpOworCQl9CisJfQorfQorCisvKgorICBHZXQgdGhlIG5leHQgcmV2IHRvIHNlbmQsIGlnbm9yaW5nIHRoZSBjb21tb24uCisqLworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqZ2V0X3Jldih2b2lkKQoreworCXN0cnVjdCBjb21taXQgKmNvbW1pdCA9IE5VTEw7CisKKwl3aGlsZSAoY29tbWl0ID09IE5VTEwpIHsKKwkJdW5zaWduZWQgaW50IG1hcms7CisJCXN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50czsKKworCQlpZiAocmV2X2xpc3QgPT0gTlVMTCB8fCBub25fY29tbW9uX3JldnMgPT0gMCkKKwkJCXJldHVybiBOVUxMOworCisJCWNvbW1pdCA9IHJldl9saXN0LT5pdGVtOworCQlpZiAoIWNvbW1pdC0+b2JqZWN0LnBhcnNlZCkKKwkJCXBhcnNlX2NvbW1pdChjb21taXQpOworCQlwYXJlbnRzID0gY29tbWl0LT5wYXJlbnRzOworCisJCWNvbW1pdC0+b2JqZWN0LmZsYWdzIHw9IFBPUFBFRDsKKwkJaWYgKCEoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBDT01NT04pKQorCQkJbm9uX2NvbW1vbl9yZXZzLS07CisKKwkJaWYgKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgQ09NTU9OKSB7CisJCQkvKiBkbyBub3Qgc2VuZCAiaGF2ZSIsIGFuZCBpZ25vcmUgYW5jZXN0b3JzICovCisJCQljb21taXQgPSBOVUxMOworCQkJbWFyayA9IENPTU1PTiB8IFNFRU47CisJCX0gZWxzZSBpZiAoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBDT01NT05fUkVGKQorCQkJLyogc2VuZCAiaGF2ZSIsIGFuZCBpZ25vcmUgYW5jZXN0b3JzICovCisJCQltYXJrID0gQ09NTU9OIHwgU0VFTjsKKwkJZWxzZQorCQkJLyogc2VuZCAiaGF2ZSIsIGFsc28gZm9yIGl0cyBhbmNlc3RvcnMgKi8KKwkJCW1hcmsgPSBTRUVOOworCisJCXdoaWxlIChwYXJlbnRzKSB7CisJCQlpZiAoIShwYXJlbnRzLT5pdGVtLT5vYmplY3QuZmxhZ3MgJiBTRUVOKSkKKwkJCQlyZXZfbGlzdF9wdXNoKHBhcmVudHMtPml0ZW0sIG1hcmspOworCQkJaWYgKG1hcmsgJiBDT01NT04pCisJCQkJbWFya19jb21tb24ocGFyZW50cy0+aXRlbSwgMSwgMCk7CisJCQlwYXJlbnRzID0gcGFyZW50cy0+bmV4dDsKKwkJfQorCisJCXJldl9saXN0ID0gcmV2X2xpc3QtPm5leHQ7CisJfQorCisJcmV0dXJuIGNvbW1pdC0+b2JqZWN0LnNoYTE7Cit9CisKK2VudW0gYWNrX3R5cGUgeworCU5BSyA9IDAsCisJQUNLLAorCUFDS19jb250aW51ZSwKKwlBQ0tfY29tbW9uLAorCUFDS19yZWFkeQorfTsKKworc3RhdGljIHZvaWQgY29uc3VtZV9zaGFsbG93X2xpc3Qoc3RydWN0IGZldGNoX3BhY2tfYXJncyAqYXJncywgaW50IGZkKQoreworCWlmIChhcmdzLT5zdGF0ZWxlc3NfcnBjICYmIGFyZ3MtPmRlcHRoID4gMCkgeworCQkvKiBJZiB3ZSBzZW50IGEgZGVwdGggd2Ugd2lsbCBnZXQgYmFjayAiZHVwbGljYXRlIgorCQkgKiBzaGFsbG93IGFuZCB1bnNoYWxsb3cgY29tbWFuZHMgZXZlcnkgdGltZSB0aGVyZQorCQkgKiBpcyBhIGJsb2NrIG9mIGhhdmUgbGluZXMgZXhjaGFuZ2VkLgorCQkgKi8KKwkJY2hhciAqbGluZTsKKwkJd2hpbGUgKChsaW5lID0gcGFja2V0X3JlYWRfbGluZShmZCwgTlVMTCkpKSB7CisJCQlpZiAoIXByZWZpeGNtcChsaW5lLCAic2hhbGxvdyAiKSkKKwkJCQljb250aW51ZTsKKwkJCWlmICghcHJlZml4Y21wKGxpbmUsICJ1bnNoYWxsb3cgIikpCisJCQkJY29udGludWU7CisJCQlkaWUoImdpdCBmZXRjaC1wYWNrOiBleHBlY3RlZCBzaGFsbG93IGxpc3QiKTsKKwkJfQorCX0KK30KKworc3RydWN0IHdyaXRlX3NoYWxsb3dfZGF0YSB7CisJc3RydWN0IHN0cmJ1ZiAqb3V0OworCWludCB1c2VfcGFja19wcm90b2NvbDsKKwlpbnQgY291bnQ7Cit9OworCitzdGF0aWMgaW50IHdyaXRlX29uZV9zaGFsbG93KGNvbnN0IHN0cnVjdCBjb21taXRfZ3JhZnQgKmdyYWZ0LCB2b2lkICpjYl9kYXRhKQoreworCXN0cnVjdCB3cml0ZV9zaGFsbG93X2RhdGEgKmRhdGEgPSBjYl9kYXRhOworCWNvbnN0IGNoYXIgKmhleCA9IHNoYTFfdG9faGV4KGdyYWZ0LT5zaGExKTsKKwlkYXRhLT5jb3VudCsrOworCWlmIChkYXRhLT51c2VfcGFja19wcm90b2NvbCkKKwkJcGFja2V0X2J1Zl93cml0ZShkYXRhLT5vdXQsICJzaGFsbG93ICVzIiwgaGV4KTsKKwllbHNlIHsKKwkJc3RyYnVmX2FkZHN0cihkYXRhLT5vdXQsIGhleCk7CisJCXN0cmJ1Zl9hZGRjaChkYXRhLT5vdXQsICdcbicpOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB3cml0ZV9zaGFsbG93X2NvbW1pdHMoc3RydWN0IHN0cmJ1ZiAqb3V0LCBpbnQgdXNlX3BhY2tfcHJvdG9jb2wpCit7CisJc3RydWN0IHdyaXRlX3NoYWxsb3dfZGF0YSBkYXRhOworCWRhdGEub3V0ID0gb3V0OworCWRhdGEudXNlX3BhY2tfcHJvdG9jb2wgPSB1c2VfcGFja19wcm90b2NvbDsKKwlkYXRhLmNvdW50ID0gMDsKKwlmb3JfZWFjaF9jb21taXRfZ3JhZnQod3JpdGVfb25lX3NoYWxsb3csICZkYXRhKTsKKwlyZXR1cm4gZGF0YS5jb3VudDsKK30KKworc3RhdGljIGVudW0gYWNrX3R5cGUgZ2V0X2FjayhpbnQgZmQsIHVuc2lnbmVkIGNoYXIgKnJlc3VsdF9zaGExKQoreworCWludCBsZW47CisJY2hhciAqbGluZSA9IHBhY2tldF9yZWFkX2xpbmUoZmQsICZsZW4pOworCisJaWYgKCFsZW4pCisJCWRpZSgiZ2l0IGZldGNoLXBhY2s6IGV4cGVjdGVkIEFDSy9OQUssIGdvdCBFT0YiKTsKKwlpZiAoIXN0cmNtcChsaW5lLCAiTkFLIikpCisJCXJldHVybiBOQUs7CisJaWYgKCFwcmVmaXhjbXAobGluZSwgIkFDSyAiKSkgeworCQlpZiAoIWdldF9zaGExX2hleChsaW5lKzQsIHJlc3VsdF9zaGExKSkgeworCQkJaWYgKGxlbiA8IDQ1KQorCQkJCXJldHVybiBBQ0s7CisJCQlpZiAoc3Ryc3RyKGxpbmUrNDUsICJjb250aW51ZSIpKQorCQkJCXJldHVybiBBQ0tfY29udGludWU7CisJCQlpZiAoc3Ryc3RyKGxpbmUrNDUsICJjb21tb24iKSkKKwkJCQlyZXR1cm4gQUNLX2NvbW1vbjsKKwkJCWlmIChzdHJzdHIobGluZSs0NSwgInJlYWR5IikpCisJCQkJcmV0dXJuIEFDS19yZWFkeTsKKwkJCXJldHVybiBBQ0s7CisJCX0KKwl9CisJZGllKCJnaXQgZmV0Y2hfcGFjazogZXhwZWN0ZWQgQUNLL05BSywgZ290ICclcyciLCBsaW5lKTsKK30KKworc3RhdGljIHZvaWQgc2VuZF9yZXF1ZXN0KHN0cnVjdCBmZXRjaF9wYWNrX2FyZ3MgKmFyZ3MsCisJCQkgaW50IGZkLCBzdHJ1Y3Qgc3RyYnVmICpidWYpCit7CisJaWYgKGFyZ3MtPnN0YXRlbGVzc19ycGMpIHsKKwkJc2VuZF9zaWRlYmFuZChmZCwgLTEsIGJ1Zi0+YnVmLCBidWYtPmxlbiwgTEFSR0VfUEFDS0VUX01BWCk7CisJCXBhY2tldF9mbHVzaChmZCk7CisJfSBlbHNlCisJCXdyaXRlX29yX2RpZShmZCwgYnVmLT5idWYsIGJ1Zi0+bGVuKTsKK30KKworc3RhdGljIHZvaWQgaW5zZXJ0X29uZV9hbHRlcm5hdGVfcmVmKGNvbnN0IHN0cnVjdCByZWYgKnJlZiwgdm9pZCAqdW51c2VkKQoreworCXJldl9saXN0X2luc2VydF9yZWYoTlVMTCwgcmVmLT5vbGRfc2hhMSwgMCwgTlVMTCk7Cit9CisKKyNkZWZpbmUgSU5JVElBTF9GTFVTSCAxNgorI2RlZmluZSBQSVBFU0FGRV9GTFVTSCAzMgorI2RlZmluZSBMQVJHRV9GTFVTSCAxMDI0CisKK3N0YXRpYyBpbnQgbmV4dF9mbHVzaChzdHJ1Y3QgZmV0Y2hfcGFja19hcmdzICphcmdzLCBpbnQgY291bnQpCit7CisJaW50IGZsdXNoX2xpbWl0ID0gYXJncy0+c3RhdGVsZXNzX3JwYyA/IExBUkdFX0ZMVVNIIDogUElQRVNBRkVfRkxVU0g7CisKKwlpZiAoY291bnQgPCBmbHVzaF9saW1pdCkKKwkJY291bnQgPDw9IDE7CisJZWxzZQorCQljb3VudCArPSBmbHVzaF9saW1pdDsKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBpbnQgZmluZF9jb21tb24oc3RydWN0IGZldGNoX3BhY2tfYXJncyAqYXJncywKKwkJICAgICAgIGludCBmZFsyXSwgdW5zaWduZWQgY2hhciAqcmVzdWx0X3NoYTEsCisJCSAgICAgICBzdHJ1Y3QgcmVmICpyZWZzKQoreworCWludCBmZXRjaGluZzsKKwlpbnQgY291bnQgPSAwLCBmbHVzaGVzID0gMCwgZmx1c2hfYXQgPSBJTklUSUFMX0ZMVVNILCByZXR2YWw7CisJY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMTsKKwl1bnNpZ25lZCBpbl92YWluID0gMDsKKwlpbnQgZ290X2NvbnRpbnVlID0gMDsKKwlpbnQgZ290X3JlYWR5ID0gMDsKKwlzdHJ1Y3Qgc3RyYnVmIHJlcV9idWYgPSBTVFJCVUZfSU5JVDsKKwlzaXplX3Qgc3RhdGVfbGVuID0gMDsKKworCWlmIChhcmdzLT5zdGF0ZWxlc3NfcnBjICYmIG11bHRpX2FjayA9PSAxKQorCQlkaWUoIi0tc3RhdGVsZXNzLXJwYyByZXF1aXJlcyBtdWx0aV9hY2tfZGV0YWlsZWQiKTsKKwlpZiAobWFya2VkKQorCQlmb3JfZWFjaF9yZWYoY2xlYXJfbWFya3MsIE5VTEwpOworCW1hcmtlZCA9IDE7CisKKwlmb3JfZWFjaF9yZWYocmV2X2xpc3RfaW5zZXJ0X3JlZiwgTlVMTCk7CisJZm9yX2VhY2hfYWx0ZXJuYXRlX3JlZihpbnNlcnRfb25lX2FsdGVybmF0ZV9yZWYsIE5VTEwpOworCisJZmV0Y2hpbmcgPSAwOworCWZvciAoIDsgcmVmcyA7IHJlZnMgPSByZWZzLT5uZXh0KSB7CisJCXVuc2lnbmVkIGNoYXIgKnJlbW90ZSA9IHJlZnMtPm9sZF9zaGExOworCQljb25zdCBjaGFyICpyZW1vdGVfaGV4OworCQlzdHJ1Y3Qgb2JqZWN0ICpvOworCisJCS8qCisJCSAqIElmIHRoYXQgb2JqZWN0IGlzIGNvbXBsZXRlIChpLmUuIGl0IGlzIGFuIGFuY2VzdG9yIG9mIGEKKwkJICogbG9jYWwgcmVmKSwgd2UgdGVsbCB0aGVtIHdlIGhhdmUgaXQgYnV0IGRvIG5vdCBoYXZlIHRvCisJCSAqIHRlbGwgdGhlbSBhYm91dCBpdHMgYW5jZXN0b3JzLCB3aGljaCB0aGV5IGFscmVhZHkga25vdworCQkgKiBhYm91dC4KKwkJICoKKwkJICogV2UgdXNlIGxvb2t1cF9vYmplY3QgaGVyZSBiZWNhdXNlIHdlIGFyZSBvbmx5CisJCSAqIGludGVyZXN0ZWQgaW4gdGhlIGNhc2Ugd2UgKmtub3cqIHRoZSBvYmplY3QgaXMKKwkJICogcmVhY2hhYmxlIGFuZCB3ZSBoYXZlIGFscmVhZHkgc2Nhbm5lZCBpdC4KKwkJICovCisJCWlmICgoKG8gPSBsb29rdXBfb2JqZWN0KHJlbW90ZSkpICE9IE5VTEwpICYmCisJCQkJKG8tPmZsYWdzICYgQ09NUExFVEUpKSB7CisJCQljb250aW51ZTsKKwkJfQorCisJCXJlbW90ZV9oZXggPSBzaGExX3RvX2hleChyZW1vdGUpOworCQlpZiAoIWZldGNoaW5nKSB7CisJCQlzdHJ1Y3Qgc3RyYnVmIGMgPSBTVFJCVUZfSU5JVDsKKwkJCWlmIChtdWx0aV9hY2sgPT0gMikgICAgIHN0cmJ1Zl9hZGRzdHIoJmMsICIgbXVsdGlfYWNrX2RldGFpbGVkIik7CisJCQlpZiAobXVsdGlfYWNrID09IDEpICAgICBzdHJidWZfYWRkc3RyKCZjLCAiIG11bHRpX2FjayIpOworCQkJaWYgKG5vX2RvbmUpICAgICAgICAgICAgc3RyYnVmX2FkZHN0cigmYywgIiBuby1kb25lIik7CisJCQlpZiAodXNlX3NpZGViYW5kID09IDIpICBzdHJidWZfYWRkc3RyKCZjLCAiIHNpZGUtYmFuZC02NGsiKTsKKwkJCWlmICh1c2Vfc2lkZWJhbmQgPT0gMSkgIHN0cmJ1Zl9hZGRzdHIoJmMsICIgc2lkZS1iYW5kIik7CisJCQlpZiAoYXJncy0+dXNlX3RoaW5fcGFjaykgc3RyYnVmX2FkZHN0cigmYywgIiB0aGluLXBhY2siKTsKKwkJCWlmIChhcmdzLT5ub19wcm9ncmVzcykgICBzdHJidWZfYWRkc3RyKCZjLCAiIG5vLXByb2dyZXNzIik7CisJCQlpZiAoYXJncy0+aW5jbHVkZV90YWcpICAgc3RyYnVmX2FkZHN0cigmYywgIiBpbmNsdWRlLXRhZyIpOworCQkJaWYgKHByZWZlcl9vZnNfZGVsdGEpICAgc3RyYnVmX2FkZHN0cigmYywgIiBvZnMtZGVsdGEiKTsKKwkJCWlmIChhZ2VudF9zdXBwb3J0ZWQpICAgIHN0cmJ1Zl9hZGRmKCZjLCAiIGFnZW50PSVzIiwKKwkJCQkJCQkgICAgZ2l0X3VzZXJfYWdlbnRfc2FuaXRpemVkKCkpOworCQkJcGFja2V0X2J1Zl93cml0ZSgmcmVxX2J1ZiwgIndhbnQgJXMlc1xuIiwgcmVtb3RlX2hleCwgYy5idWYpOworCQkJc3RyYnVmX3JlbGVhc2UoJmMpOworCQl9IGVsc2UKKwkJCXBhY2tldF9idWZfd3JpdGUoJnJlcV9idWYsICJ3YW50ICVzXG4iLCByZW1vdGVfaGV4KTsKKwkJZmV0Y2hpbmcrKzsKKwl9CisKKwlpZiAoIWZldGNoaW5nKSB7CisJCXN0cmJ1Zl9yZWxlYXNlKCZyZXFfYnVmKTsKKwkJcGFja2V0X2ZsdXNoKGZkWzFdKTsKKwkJcmV0dXJuIDE7CisJfQorCisJaWYgKGlzX3JlcG9zaXRvcnlfc2hhbGxvdygpKQorCQl3cml0ZV9zaGFsbG93X2NvbW1pdHMoJnJlcV9idWYsIDEpOworCWlmIChhcmdzLT5kZXB0aCA+IDApCisJCXBhY2tldF9idWZfd3JpdGUoJnJlcV9idWYsICJkZWVwZW4gJWQiLCBhcmdzLT5kZXB0aCk7CisJcGFja2V0X2J1Zl9mbHVzaCgmcmVxX2J1Zik7CisJc3RhdGVfbGVuID0gcmVxX2J1Zi5sZW47CisKKwlpZiAoYXJncy0+ZGVwdGggPiAwKSB7CisJCWNoYXIgKmxpbmU7CisJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisKKwkJc2VuZF9yZXF1ZXN0KGFyZ3MsIGZkWzFdLCAmcmVxX2J1Zik7CisJCXdoaWxlICgobGluZSA9IHBhY2tldF9yZWFkX2xpbmUoZmRbMF0sIE5VTEwpKSkgeworCQkJaWYgKCFwcmVmaXhjbXAobGluZSwgInNoYWxsb3cgIikpIHsKKwkJCQlpZiAoZ2V0X3NoYTFfaGV4KGxpbmUgKyA4LCBzaGExKSkKKwkJCQkJZGllKCJpbnZhbGlkIHNoYWxsb3cgbGluZTogJXMiLCBsaW5lKTsKKwkJCQlyZWdpc3Rlcl9zaGFsbG93KHNoYTEpOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJaWYgKCFwcmVmaXhjbXAobGluZSwgInVuc2hhbGxvdyAiKSkgeworCQkJCWlmIChnZXRfc2hhMV9oZXgobGluZSArIDEwLCBzaGExKSkKKwkJCQkJZGllKCJpbnZhbGlkIHVuc2hhbGxvdyBsaW5lOiAlcyIsIGxpbmUpOworCQkJCWlmICghbG9va3VwX29iamVjdChzaGExKSkKKwkJCQkJZGllKCJvYmplY3Qgbm90IGZvdW5kOiAlcyIsIGxpbmUpOworCQkJCS8qIG1ha2Ugc3VyZSB0aGF0IGl0IGlzIHBhcnNlZCBhcyBzaGFsbG93ICovCisJCQkJaWYgKCFwYXJzZV9vYmplY3Qoc2hhMSkpCisJCQkJCWRpZSgiZXJyb3IgaW4gb2JqZWN0OiAlcyIsIGxpbmUpOworCQkJCWlmICh1bnJlZ2lzdGVyX3NoYWxsb3coc2hhMSkpCisJCQkJCWRpZSgibm8gc2hhbGxvdyBmb3VuZDogJXMiLCBsaW5lKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWRpZSgiZXhwZWN0ZWQgc2hhbGxvdy91bnNoYWxsb3csIGdvdCAlcyIsIGxpbmUpOworCQl9CisJfSBlbHNlIGlmICghYXJncy0+c3RhdGVsZXNzX3JwYykKKwkJc2VuZF9yZXF1ZXN0KGFyZ3MsIGZkWzFdLCAmcmVxX2J1Zik7CisKKwlpZiAoIWFyZ3MtPnN0YXRlbGVzc19ycGMpIHsKKwkJLyogSWYgd2UgYXJlbid0IHVzaW5nIHRoZSBzdGF0ZWxlc3MtcnBjIGludGVyZmFjZQorCQkgKiB3ZSBkb24ndCBuZWVkIHRvIHJldGFpbiB0aGUgaGVhZGVycy4KKwkJICovCisJCXN0cmJ1Zl9zZXRsZW4oJnJlcV9idWYsIDApOworCQlzdGF0ZV9sZW4gPSAwOworCX0KKworCWZsdXNoZXMgPSAwOworCXJldHZhbCA9IC0xOworCXdoaWxlICgoc2hhMSA9IGdldF9yZXYoKSkpIHsKKwkJcGFja2V0X2J1Zl93cml0ZSgmcmVxX2J1ZiwgImhhdmUgJXNcbiIsIHNoYTFfdG9faGV4KHNoYTEpKTsKKwkJaWYgKGFyZ3MtPnZlcmJvc2UpCisJCQlmcHJpbnRmKHN0ZGVyciwgImhhdmUgJXNcbiIsIHNoYTFfdG9faGV4KHNoYTEpKTsKKwkJaW5fdmFpbisrOworCQlpZiAoZmx1c2hfYXQgPD0gKytjb3VudCkgeworCQkJaW50IGFjazsKKworCQkJcGFja2V0X2J1Zl9mbHVzaCgmcmVxX2J1Zik7CisJCQlzZW5kX3JlcXVlc3QoYXJncywgZmRbMV0sICZyZXFfYnVmKTsKKwkJCXN0cmJ1Zl9zZXRsZW4oJnJlcV9idWYsIHN0YXRlX2xlbik7CisJCQlmbHVzaGVzKys7CisJCQlmbHVzaF9hdCA9IG5leHRfZmx1c2goYXJncywgY291bnQpOworCisJCQkvKgorCQkJICogV2Uga2VlcCBvbmUgd2luZG93ICJhaGVhZCIgb2YgdGhlIG90aGVyIHNpZGUsIGFuZAorCQkJICogd2lsbCB3YWl0IGZvciBhbiBBQ0sgb25seSBvbiB0aGUgbmV4dCBvbmUKKwkJCSAqLworCQkJaWYgKCFhcmdzLT5zdGF0ZWxlc3NfcnBjICYmIGNvdW50ID09IElOSVRJQUxfRkxVU0gpCisJCQkJY29udGludWU7CisKKwkJCWNvbnN1bWVfc2hhbGxvd19saXN0KGFyZ3MsIGZkWzBdKTsKKwkJCWRvIHsKKwkJCQlhY2sgPSBnZXRfYWNrKGZkWzBdLCByZXN1bHRfc2hhMSk7CisJCQkJaWYgKGFyZ3MtPnZlcmJvc2UgJiYgYWNrKQorCQkJCQlmcHJpbnRmKHN0ZGVyciwgImdvdCBhY2sgJWQgJXNcbiIsIGFjaywKKwkJCQkJCQlzaGExX3RvX2hleChyZXN1bHRfc2hhMSkpOworCQkJCXN3aXRjaCAoYWNrKSB7CisJCQkJY2FzZSBBQ0s6CisJCQkJCWZsdXNoZXMgPSAwOworCQkJCQltdWx0aV9hY2sgPSAwOworCQkJCQlyZXR2YWwgPSAwOworCQkJCQlnb3RvIGRvbmU7CisJCQkJY2FzZSBBQ0tfY29tbW9uOgorCQkJCWNhc2UgQUNLX3JlYWR5OgorCQkJCWNhc2UgQUNLX2NvbnRpbnVlOiB7CisJCQkJCXN0cnVjdCBjb21taXQgKmNvbW1pdCA9CisJCQkJCQlsb29rdXBfY29tbWl0KHJlc3VsdF9zaGExKTsKKwkJCQkJaWYgKCFjb21taXQpCisJCQkJCQlkaWUoImludmFsaWQgY29tbWl0ICVzIiwgc2hhMV90b19oZXgocmVzdWx0X3NoYTEpKTsKKwkJCQkJaWYgKGFyZ3MtPnN0YXRlbGVzc19ycGMKKwkJCQkJICYmIGFjayA9PSBBQ0tfY29tbW9uCisJCQkJCSAmJiAhKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgQ09NTU9OKSkgeworCQkJCQkJLyogV2UgbmVlZCB0byByZXBsYXkgdGhlIGhhdmUgZm9yIHRoaXMgb2JqZWN0CisJCQkJCQkgKiBvbiB0aGUgbmV4dCBSUEMgcmVxdWVzdCBzbyB0aGUgcGVlciBrbm93cworCQkJCQkJICogaXQgaXMgaW4gY29tbW9uIHdpdGggdXMuCisJCQkJCQkgKi8KKwkJCQkJCWNvbnN0IGNoYXIgKmhleCA9IHNoYTFfdG9faGV4KHJlc3VsdF9zaGExKTsKKwkJCQkJCXBhY2tldF9idWZfd3JpdGUoJnJlcV9idWYsICJoYXZlICVzXG4iLCBoZXgpOworCQkJCQkJc3RhdGVfbGVuID0gcmVxX2J1Zi5sZW47CisJCQkJCX0KKwkJCQkJbWFya19jb21tb24oY29tbWl0LCAwLCAxKTsKKwkJCQkJcmV0dmFsID0gMDsKKwkJCQkJaW5fdmFpbiA9IDA7CisJCQkJCWdvdF9jb250aW51ZSA9IDE7CisJCQkJCWlmIChhY2sgPT0gQUNLX3JlYWR5KSB7CisJCQkJCQlyZXZfbGlzdCA9IE5VTEw7CisJCQkJCQlnb3RfcmVhZHkgPSAxOworCQkJCQl9CisJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJfSB3aGlsZSAoYWNrKTsKKwkJCWZsdXNoZXMtLTsKKwkJCWlmIChnb3RfY29udGludWUgJiYgTUFYX0lOX1ZBSU4gPCBpbl92YWluKSB7CisJCQkJaWYgKGFyZ3MtPnZlcmJvc2UpCisJCQkJCWZwcmludGYoc3RkZXJyLCAiZ2l2aW5nIHVwXG4iKTsKKwkJCQlicmVhazsgLyogZ2l2ZSB1cCAqLworCQkJfQorCQl9CisJfQorZG9uZToKKwlpZiAoIWdvdF9yZWFkeSB8fCAhbm9fZG9uZSkgeworCQlwYWNrZXRfYnVmX3dyaXRlKCZyZXFfYnVmLCAiZG9uZVxuIik7CisJCXNlbmRfcmVxdWVzdChhcmdzLCBmZFsxXSwgJnJlcV9idWYpOworCX0KKwlpZiAoYXJncy0+dmVyYm9zZSkKKwkJZnByaW50ZihzdGRlcnIsICJkb25lXG4iKTsKKwlpZiAocmV0dmFsICE9IDApIHsKKwkJbXVsdGlfYWNrID0gMDsKKwkJZmx1c2hlcysrOworCX0KKwlzdHJidWZfcmVsZWFzZSgmcmVxX2J1Zik7CisKKwljb25zdW1lX3NoYWxsb3dfbGlzdChhcmdzLCBmZFswXSk7CisJd2hpbGUgKGZsdXNoZXMgfHwgbXVsdGlfYWNrKSB7CisJCWludCBhY2sgPSBnZXRfYWNrKGZkWzBdLCByZXN1bHRfc2hhMSk7CisJCWlmIChhY2spIHsKKwkJCWlmIChhcmdzLT52ZXJib3NlKQorCQkJCWZwcmludGYoc3RkZXJyLCAiZ290IGFjayAoJWQpICVzXG4iLCBhY2ssCisJCQkJCXNoYTFfdG9faGV4KHJlc3VsdF9zaGExKSk7CisJCQlpZiAoYWNrID09IEFDSykKKwkJCQlyZXR1cm4gMDsKKwkJCW11bHRpX2FjayA9IDE7CisJCQljb250aW51ZTsKKwkJfQorCQlmbHVzaGVzLS07CisJfQorCS8qIGl0IGlzIG5vIGVycm9yIHRvIGZldGNoIGludG8gYSBjb21wbGV0ZWx5IGVtcHR5IHJlcG8gKi8KKwlyZXR1cm4gY291bnQgPyByZXR2YWwgOiAwOworfQorCitzdGF0aWMgc3RydWN0IGNvbW1pdF9saXN0ICpjb21wbGV0ZTsKKworc3RhdGljIGludCBtYXJrX2NvbXBsZXRlKGNvbnN0IGNoYXIgKnJlZm5hbWUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmbGFnLCB2b2lkICpjYl9kYXRhKQoreworCXN0cnVjdCBvYmplY3QgKm8gPSBwYXJzZV9vYmplY3Qoc2hhMSk7CisKKwl3aGlsZSAobyAmJiBvLT50eXBlID09IE9CSl9UQUcpIHsKKwkJc3RydWN0IHRhZyAqdCA9IChzdHJ1Y3QgdGFnICopIG87CisJCWlmICghdC0+dGFnZ2VkKQorCQkJYnJlYWs7IC8qIGJyb2tlbiByZXBvc2l0b3J5ICovCisJCW8tPmZsYWdzIHw9IENPTVBMRVRFOworCQlvID0gcGFyc2Vfb2JqZWN0KHQtPnRhZ2dlZC0+c2hhMSk7CisJfQorCWlmIChvICYmIG8tPnR5cGUgPT0gT0JKX0NPTU1JVCkgeworCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQgPSAoc3RydWN0IGNvbW1pdCAqKW87CisJCWlmICghKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgQ09NUExFVEUpKSB7CisJCQljb21taXQtPm9iamVjdC5mbGFncyB8PSBDT01QTEVURTsKKwkJCWNvbW1pdF9saXN0X2luc2VydF9ieV9kYXRlKGNvbW1pdCwgJmNvbXBsZXRlKTsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgbWFya19yZWNlbnRfY29tcGxldGVfY29tbWl0cyhzdHJ1Y3QgZmV0Y2hfcGFja19hcmdzICphcmdzLAorCQkJCQkgdW5zaWduZWQgbG9uZyBjdXRvZmYpCit7CisJd2hpbGUgKGNvbXBsZXRlICYmIGN1dG9mZiA8PSBjb21wbGV0ZS0+aXRlbS0+ZGF0ZSkgeworCQlpZiAoYXJncy0+dmVyYm9zZSkKKwkJCWZwcmludGYoc3RkZXJyLCAiTWFya2luZyAlcyBhcyBjb21wbGV0ZVxuIiwKKwkJCQlzaGExX3RvX2hleChjb21wbGV0ZS0+aXRlbS0+b2JqZWN0LnNoYTEpKTsKKwkJcG9wX21vc3RfcmVjZW50X2NvbW1pdCgmY29tcGxldGUsIENPTVBMRVRFKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGZpbHRlcl9yZWZzKHN0cnVjdCBmZXRjaF9wYWNrX2FyZ3MgKmFyZ3MsCisJCQlzdHJ1Y3QgcmVmICoqcmVmcywKKwkJCXN0cnVjdCByZWYgKipzb3VnaHQsIGludCBucl9zb3VnaHQpCit7CisJc3RydWN0IHJlZiAqbmV3bGlzdCA9IE5VTEw7CisJc3RydWN0IHJlZiAqKm5ld3RhaWwgPSAmbmV3bGlzdDsKKwlzdHJ1Y3QgcmVmICpyZWYsICpuZXh0OworCWludCBpOworCisJaSA9IDA7CisJZm9yIChyZWYgPSAqcmVmczsgcmVmOyByZWYgPSBuZXh0KSB7CisJCWludCBrZWVwID0gMDsKKwkJbmV4dCA9IHJlZi0+bmV4dDsKKworCQlpZiAoIW1lbWNtcChyZWYtPm5hbWUsICJyZWZzLyIsIDUpICYmCisJCSAgICBjaGVja19yZWZuYW1lX2Zvcm1hdChyZWYtPm5hbWUgKyA1LCAwKSkKKwkJCTsgLyogdHJhc2ggKi8KKwkJZWxzZSB7CisJCQl3aGlsZSAoaSA8IG5yX3NvdWdodCkgeworCQkJCWludCBjbXAgPSBzdHJjbXAocmVmLT5uYW1lLCBzb3VnaHRbaV0tPm5hbWUpOworCQkJCWlmIChjbXAgPCAwKQorCQkJCQlicmVhazsgLyogZGVmaW5pdGVseSBkbyBub3QgaGF2ZSBpdCAqLworCQkJCWVsc2UgaWYgKGNtcCA9PSAwKSB7CisJCQkJCWtlZXAgPSAxOyAvKiBkZWZpbml0ZWx5IGhhdmUgaXQgKi8KKwkJCQkJc291Z2h0W2ldLT5tYXRjaGVkID0gMTsKKwkJCQl9CisJCQkJaSsrOworCQkJfQorCQl9CisKKwkJaWYgKCFrZWVwICYmIGFyZ3MtPmZldGNoX2FsbCAmJgorCQkgICAgKCFhcmdzLT5kZXB0aCB8fCBwcmVmaXhjbXAocmVmLT5uYW1lLCAicmVmcy90YWdzLyIpKSkKKwkJCWtlZXAgPSAxOworCisJCWlmIChrZWVwKSB7CisJCQkqbmV3dGFpbCA9IHJlZjsKKwkJCXJlZi0+bmV4dCA9IE5VTEw7CisJCQluZXd0YWlsID0gJnJlZi0+bmV4dDsKKwkJfSBlbHNlIHsKKwkJCWZyZWUocmVmKTsKKwkJfQorCX0KKworCS8qIEFwcGVuZCB1bm1hdGNoZWQgcmVxdWVzdHMgdG8gdGhlIGxpc3QgKi8KKwlpZiAoYWxsb3dfdGlwX3NoYTFfaW5fd2FudCkgeworCQlmb3IgKGkgPSAwOyBpIDwgbnJfc291Z2h0OyBpKyspIHsKKwkJCXJlZiA9IHNvdWdodFtpXTsKKwkJCWlmIChyZWYtPm1hdGNoZWQpCisJCQkJY29udGludWU7CisJCQlpZiAoZ2V0X3NoYTFfaGV4KHJlZi0+bmFtZSwgcmVmLT5vbGRfc2hhMSkpCisJCQkJY29udGludWU7CisKKwkJCXJlZi0+bWF0Y2hlZCA9IDE7CisJCQkqbmV3dGFpbCA9IHJlZjsKKwkJCXJlZi0+bmV4dCA9IE5VTEw7CisJCQluZXd0YWlsID0gJnJlZi0+bmV4dDsKKwkJfQorCX0KKwkqcmVmcyA9IG5ld2xpc3Q7Cit9CisKK3N0YXRpYyB2b2lkIG1hcmtfYWx0ZXJuYXRlX2NvbXBsZXRlKGNvbnN0IHN0cnVjdCByZWYgKnJlZiwgdm9pZCAqdW51c2VkKQoreworCW1hcmtfY29tcGxldGUoTlVMTCwgcmVmLT5vbGRfc2hhMSwgMCwgTlVMTCk7Cit9CisKK3N0YXRpYyBpbnQgZXZlcnl0aGluZ19sb2NhbChzdHJ1Y3QgZmV0Y2hfcGFja19hcmdzICphcmdzLAorCQkJICAgIHN0cnVjdCByZWYgKipyZWZzLAorCQkJICAgIHN0cnVjdCByZWYgKipzb3VnaHQsIGludCBucl9zb3VnaHQpCit7CisJc3RydWN0IHJlZiAqcmVmOworCWludCByZXR2YWw7CisJdW5zaWduZWQgbG9uZyBjdXRvZmYgPSAwOworCisJc2F2ZV9jb21taXRfYnVmZmVyID0gMDsKKworCWZvciAocmVmID0gKnJlZnM7IHJlZjsgcmVmID0gcmVmLT5uZXh0KSB7CisJCXN0cnVjdCBvYmplY3QgKm87CisKKwkJaWYgKCFoYXNfc2hhMV9maWxlKHJlZi0+b2xkX3NoYTEpKQorCQkJY29udGludWU7CisKKwkJbyA9IHBhcnNlX29iamVjdChyZWYtPm9sZF9zaGExKTsKKwkJaWYgKCFvKQorCQkJY29udGludWU7CisKKwkJLyogV2UgYWxyZWFkeSBoYXZlIGl0IC0tIHdoaWNoIG1heSBtZWFuIHRoYXQgd2Ugd2VyZQorCQkgKiBpbiBzeW5jIHdpdGggdGhlIG90aGVyIHNpZGUgYXQgc29tZSB0aW1lIGFmdGVyCisJCSAqIHRoYXQgKGl0IGlzIE9LIGlmIHdlIGd1ZXNzIHdyb25nIGhlcmUpLgorCQkgKi8KKwkJaWYgKG8tPnR5cGUgPT0gT0JKX0NPTU1JVCkgeworCQkJc3RydWN0IGNvbW1pdCAqY29tbWl0ID0gKHN0cnVjdCBjb21taXQgKilvOworCQkJaWYgKCFjdXRvZmYgfHwgY3V0b2ZmIDwgY29tbWl0LT5kYXRlKQorCQkJCWN1dG9mZiA9IGNvbW1pdC0+ZGF0ZTsKKwkJfQorCX0KKworCWlmICghYXJncy0+ZGVwdGgpIHsKKwkJZm9yX2VhY2hfcmVmKG1hcmtfY29tcGxldGUsIE5VTEwpOworCQlmb3JfZWFjaF9hbHRlcm5hdGVfcmVmKG1hcmtfYWx0ZXJuYXRlX2NvbXBsZXRlLCBOVUxMKTsKKwkJaWYgKGN1dG9mZikKKwkJCW1hcmtfcmVjZW50X2NvbXBsZXRlX2NvbW1pdHMoYXJncywgY3V0b2ZmKTsKKwl9CisKKwkvKgorCSAqIE1hcmsgYWxsIGNvbXBsZXRlIHJlbW90ZSByZWZzIGFzIGNvbW1vbiByZWZzLgorCSAqIERvbid0IG1hcmsgdGhlbSBjb21tb24geWV0OyB0aGUgc2VydmVyIGhhcyB0byBiZSB0b2xkIHNvIGZpcnN0LgorCSAqLworCWZvciAocmVmID0gKnJlZnM7IHJlZjsgcmVmID0gcmVmLT5uZXh0KSB7CisJCXN0cnVjdCBvYmplY3QgKm8gPSBkZXJlZl90YWcobG9va3VwX29iamVjdChyZWYtPm9sZF9zaGExKSwKKwkJCQkJICAgICBOVUxMLCAwKTsKKworCQlpZiAoIW8gfHwgby0+dHlwZSAhPSBPQkpfQ09NTUlUIHx8ICEoby0+ZmxhZ3MgJiBDT01QTEVURSkpCisJCQljb250aW51ZTsKKworCQlpZiAoIShvLT5mbGFncyAmIFNFRU4pKSB7CisJCQlyZXZfbGlzdF9wdXNoKChzdHJ1Y3QgY29tbWl0ICopbywgQ09NTU9OX1JFRiB8IFNFRU4pOworCisJCQltYXJrX2NvbW1vbigoc3RydWN0IGNvbW1pdCAqKW8sIDEsIDEpOworCQl9CisJfQorCisJZmlsdGVyX3JlZnMoYXJncywgcmVmcywgc291Z2h0LCBucl9zb3VnaHQpOworCisJZm9yIChyZXR2YWwgPSAxLCByZWYgPSAqcmVmczsgcmVmIDsgcmVmID0gcmVmLT5uZXh0KSB7CisJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnJlbW90ZSA9IHJlZi0+b2xkX3NoYTE7CisJCXVuc2lnbmVkIGNoYXIgbG9jYWxbMjBdOworCQlzdHJ1Y3Qgb2JqZWN0ICpvOworCisJCW8gPSBsb29rdXBfb2JqZWN0KHJlbW90ZSk7CisJCWlmICghbyB8fCAhKG8tPmZsYWdzICYgQ09NUExFVEUpKSB7CisJCQlyZXR2YWwgPSAwOworCQkJaWYgKCFhcmdzLT52ZXJib3NlKQorCQkJCWNvbnRpbnVlOworCQkJZnByaW50ZihzdGRlcnIsCisJCQkJIndhbnQgJXMgKCVzKVxuIiwgc2hhMV90b19oZXgocmVtb3RlKSwKKwkJCQlyZWYtPm5hbWUpOworCQkJY29udGludWU7CisJCX0KKworCQloYXNoY3B5KHJlZi0+bmV3X3NoYTEsIGxvY2FsKTsKKwkJaWYgKCFhcmdzLT52ZXJib3NlKQorCQkJY29udGludWU7CisJCWZwcmludGYoc3RkZXJyLAorCQkJImFscmVhZHkgaGF2ZSAlcyAoJXMpXG4iLCBzaGExX3RvX2hleChyZW1vdGUpLAorCQkJcmVmLT5uYW1lKTsKKwl9CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGludCBzaWRlYmFuZF9kZW11eChpbnQgaW4sIGludCBvdXQsIHZvaWQgKmRhdGEpCit7CisJaW50ICp4ZCA9IGRhdGE7CisKKwlpbnQgcmV0ID0gcmVjdl9zaWRlYmFuZCgiZmV0Y2gtcGFjayIsIHhkWzBdLCBvdXQpOworCWNsb3NlKG91dCk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBnZXRfcGFjayhzdHJ1Y3QgZmV0Y2hfcGFja19hcmdzICphcmdzLAorCQkgICAgaW50IHhkWzJdLCBjaGFyICoqcGFja19sb2NrZmlsZSkKK3sKKwlzdHJ1Y3QgYXN5bmMgZGVtdXg7CisJY29uc3QgY2hhciAqYXJndlsyMl07CisJY2hhciBrZWVwX2FyZ1syNTZdOworCWNoYXIgaGRyX2FyZ1syNTZdOworCWNvbnN0IGNoYXIgKiphdjsKKwlpbnQgZG9fa2VlcCA9IGFyZ3MtPmtlZXBfcGFjazsKKwlzdHJ1Y3QgY2hpbGRfcHJvY2VzcyBjbWQ7CisKKwltZW1zZXQoJmRlbXV4LCAwLCBzaXplb2YoZGVtdXgpKTsKKwlpZiAodXNlX3NpZGViYW5kKSB7CisJCS8qIHhkW10gaXMgdGFsa2luZyB3aXRoIHVwbG9hZC1wYWNrOyBzdWJwcm9jZXNzIHJlYWRzIGZyb20KKwkJICogeGRbMF0sIHNwaXRzIG91dCBiYW5kIzIgdG8gc3RkZXJyLCBhbmQgZmVlZHMgdXMgYmFuZCMxCisJCSAqIHRocm91Z2ggZGVtdXgtPm91dC4KKwkJICovCisJCWRlbXV4LnByb2MgPSBzaWRlYmFuZF9kZW11eDsKKwkJZGVtdXguZGF0YSA9IHhkOworCQlkZW11eC5vdXQgPSAtMTsKKwkJaWYgKHN0YXJ0X2FzeW5jKCZkZW11eCkpCisJCQlkaWUoImZldGNoLXBhY2s6IHVuYWJsZSB0byBmb3JrIG9mZiBzaWRlYmFuZCIKKwkJCSAgICAiIGRlbXVsdGlwbGV4ZXIiKTsKKwl9CisJZWxzZQorCQlkZW11eC5vdXQgPSB4ZFswXTsKKworCW1lbXNldCgmY21kLCAwLCBzaXplb2YoY21kKSk7CisJY21kLmFyZ3YgPSBhcmd2OworCWF2ID0gYXJndjsKKwkqaGRyX2FyZyA9IDA7CisJaWYgKCFhcmdzLT5rZWVwX3BhY2sgJiYgdW5wYWNrX2xpbWl0KSB7CisJCXN0cnVjdCBwYWNrX2hlYWRlciBoZWFkZXI7CisKKwkJaWYgKHJlYWRfcGFja19oZWFkZXIoZGVtdXgub3V0LCAmaGVhZGVyKSkKKwkJCWRpZSgicHJvdG9jb2wgZXJyb3I6IGJhZCBwYWNrIGhlYWRlciIpOworCQlzbnByaW50ZihoZHJfYXJnLCBzaXplb2YoaGRyX2FyZyksCisJCQkgIi0tcGFja19oZWFkZXI9JSJQUkl1MzIiLCUiUFJJdTMyLAorCQkJIG50b2hsKGhlYWRlci5oZHJfdmVyc2lvbiksIG50b2hsKGhlYWRlci5oZHJfZW50cmllcykpOworCQlpZiAobnRvaGwoaGVhZGVyLmhkcl9lbnRyaWVzKSA8IHVucGFja19saW1pdCkKKwkJCWRvX2tlZXAgPSAwOworCQllbHNlCisJCQlkb19rZWVwID0gMTsKKwl9CisKKwlpZiAoYWx0ZXJuYXRlX3NoYWxsb3dfZmlsZSkgeworCQkqYXYrKyA9ICItLXNoYWxsb3ctZmlsZSI7CisJCSphdisrID0gYWx0ZXJuYXRlX3NoYWxsb3dfZmlsZTsKKwl9CisKKwlpZiAoZG9fa2VlcCkgeworCQlpZiAocGFja19sb2NrZmlsZSkKKwkJCWNtZC5vdXQgPSAtMTsKKwkJKmF2KysgPSAiaW5kZXgtcGFjayI7CisJCSphdisrID0gIi0tc3RkaW4iOworCQlpZiAoIWFyZ3MtPnF1aWV0ICYmICFhcmdzLT5ub19wcm9ncmVzcykKKwkJCSphdisrID0gIi12IjsKKwkJaWYgKGFyZ3MtPnVzZV90aGluX3BhY2spCisJCQkqYXYrKyA9ICItLWZpeC10aGluIjsKKwkJaWYgKGFyZ3MtPmxvY2tfcGFjayB8fCB1bnBhY2tfbGltaXQpIHsKKwkJCWludCBzID0gc3ByaW50ZihrZWVwX2FyZywKKwkJCQkJIi0ta2VlcD1mZXRjaC1wYWNrICUiUFJJdU1BWCAiIG9uICIsICh1aW50bWF4X3QpIGdldHBpZCgpKTsKKwkJCWlmIChnZXRob3N0bmFtZShrZWVwX2FyZyArIHMsIHNpemVvZihrZWVwX2FyZykgLSBzKSkKKwkJCQlzdHJjcHkoa2VlcF9hcmcgKyBzLCAibG9jYWxob3N0Iik7CisJCQkqYXYrKyA9IGtlZXBfYXJnOworCQl9CisJfQorCWVsc2UgeworCQkqYXYrKyA9ICJ1bnBhY2stb2JqZWN0cyI7CisJCWlmIChhcmdzLT5xdWlldCB8fCBhcmdzLT5ub19wcm9ncmVzcykKKwkJCSphdisrID0gIi1xIjsKKwl9CisJaWYgKCpoZHJfYXJnKQorCQkqYXYrKyA9IGhkcl9hcmc7CisJaWYgKGZldGNoX2ZzY2tfb2JqZWN0cyA+PSAwCisJICAgID8gZmV0Y2hfZnNja19vYmplY3RzCisJICAgIDogdHJhbnNmZXJfZnNja19vYmplY3RzID49IDAKKwkgICAgPyB0cmFuc2Zlcl9mc2NrX29iamVjdHMKKwkgICAgOiAwKQorCQkqYXYrKyA9ICItLXN0cmljdCI7CisJKmF2KysgPSBOVUxMOworCisJY21kLmluID0gZGVtdXgub3V0OworCWNtZC5naXRfY21kID0gMTsKKwlpZiAoc3RhcnRfY29tbWFuZCgmY21kKSkKKwkJZGllKCJmZXRjaC1wYWNrOiB1bmFibGUgdG8gZm9yayBvZmYgJXMiLCBhcmd2WzBdKTsKKwlpZiAoZG9fa2VlcCAmJiBwYWNrX2xvY2tmaWxlKSB7CisJCSpwYWNrX2xvY2tmaWxlID0gaW5kZXhfcGFja19sb2NrZmlsZShjbWQub3V0KTsKKwkJY2xvc2UoY21kLm91dCk7CisJfQorCisJaWYgKGZpbmlzaF9jb21tYW5kKCZjbWQpKQorCQlkaWUoIiVzIGZhaWxlZCIsIGFyZ3ZbMF0pOworCWlmICh1c2Vfc2lkZWJhbmQgJiYgZmluaXNoX2FzeW5jKCZkZW11eCkpCisJCWRpZSgiZXJyb3IgaW4gc2lkZWJhbmQgZGVtdWx0aXBsZXhlciIpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNtcF9yZWZfYnlfbmFtZShjb25zdCB2b2lkICphXywgY29uc3Qgdm9pZCAqYl8pCit7CisJY29uc3Qgc3RydWN0IHJlZiAqYSA9ICooKGNvbnN0IHN0cnVjdCByZWYgKiopYV8pOworCWNvbnN0IHN0cnVjdCByZWYgKmIgPSAqKChjb25zdCBzdHJ1Y3QgcmVmICoqKWJfKTsKKwlyZXR1cm4gc3RyY21wKGEtPm5hbWUsIGItPm5hbWUpOworfQorCitzdGF0aWMgdm9pZCBzZXR1cF9hbHRlcm5hdGVfc2hhbGxvdyh2b2lkKQoreworCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKKwlpbnQgZmQ7CisKKwljaGVja19zaGFsbG93X2ZpbGVfZm9yX3VwZGF0ZSgpOworCWZkID0gaG9sZF9sb2NrX2ZpbGVfZm9yX3VwZGF0ZSgmc2hhbGxvd19sb2NrLCBnaXRfcGF0aCgic2hhbGxvdyIpLAorCQkJCSAgICAgICBMT0NLX0RJRV9PTl9FUlJPUik7CisJaWYgKHdyaXRlX3NoYWxsb3dfY29tbWl0cygmc2IsIDApKSB7CisJCWlmICh3cml0ZV9pbl9mdWxsKGZkLCBzYi5idWYsIHNiLmxlbikgIT0gc2IubGVuKQorCQkJZGllX2Vycm5vKCJmYWlsZWQgdG8gd3JpdGUgdG8gJXMiLCBzaGFsbG93X2xvY2suZmlsZW5hbWUpOworCQlhbHRlcm5hdGVfc2hhbGxvd19maWxlID0gc2hhbGxvd19sb2NrLmZpbGVuYW1lOworCX0gZWxzZQorCQkvKgorCQkgKiBpc19yZXBvc2l0b3J5X3NoYWxsb3coKSBzZWVzIGVtcHR5IHN0cmluZyBhcyAibm8KKwkJICogc2hhbGxvdyBmaWxlIi4KKwkJICovCisJCWFsdGVybmF0ZV9zaGFsbG93X2ZpbGUgPSAiIjsKKwlzdHJidWZfcmVsZWFzZSgmc2IpOworfQorCitzdGF0aWMgc3RydWN0IHJlZiAqZG9fZmV0Y2hfcGFjayhzdHJ1Y3QgZmV0Y2hfcGFja19hcmdzICphcmdzLAorCQkJCSBpbnQgZmRbMl0sCisJCQkJIGNvbnN0IHN0cnVjdCByZWYgKm9yaWdfcmVmLAorCQkJCSBzdHJ1Y3QgcmVmICoqc291Z2h0LCBpbnQgbnJfc291Z2h0LAorCQkJCSBjaGFyICoqcGFja19sb2NrZmlsZSkKK3sKKwlzdHJ1Y3QgcmVmICpyZWYgPSBjb3B5X3JlZl9saXN0KG9yaWdfcmVmKTsKKwl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOworCWNvbnN0IGNoYXIgKmFnZW50X2ZlYXR1cmU7CisJaW50IGFnZW50X2xlbjsKKworCXNvcnRfcmVmX2xpc3QoJnJlZiwgcmVmX2NvbXBhcmVfbmFtZSk7CisJcXNvcnQoc291Z2h0LCBucl9zb3VnaHQsIHNpemVvZigqc291Z2h0KSwgY21wX3JlZl9ieV9uYW1lKTsKKworCWlmIChpc19yZXBvc2l0b3J5X3NoYWxsb3coKSAmJiAhc2VydmVyX3N1cHBvcnRzKCJzaGFsbG93IikpCisJCWRpZSgiU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgc2hhbGxvdyBjbGllbnRzIik7CisJaWYgKHNlcnZlcl9zdXBwb3J0cygibXVsdGlfYWNrX2RldGFpbGVkIikpIHsKKwkJaWYgKGFyZ3MtPnZlcmJvc2UpCisJCQlmcHJpbnRmKHN0ZGVyciwgIlNlcnZlciBzdXBwb3J0cyBtdWx0aV9hY2tfZGV0YWlsZWRcbiIpOworCQltdWx0aV9hY2sgPSAyOworCQlpZiAoc2VydmVyX3N1cHBvcnRzKCJuby1kb25lIikpIHsKKwkJCWlmIChhcmdzLT52ZXJib3NlKQorCQkJCWZwcmludGYoc3RkZXJyLCAiU2VydmVyIHN1cHBvcnRzIG5vLWRvbmVcbiIpOworCQkJaWYgKGFyZ3MtPnN0YXRlbGVzc19ycGMpCisJCQkJbm9fZG9uZSA9IDE7CisJCX0KKwl9CisJZWxzZSBpZiAoc2VydmVyX3N1cHBvcnRzKCJtdWx0aV9hY2siKSkgeworCQlpZiAoYXJncy0+dmVyYm9zZSkKKwkJCWZwcmludGYoc3RkZXJyLCAiU2VydmVyIHN1cHBvcnRzIG11bHRpX2Fja1xuIik7CisJCW11bHRpX2FjayA9IDE7CisJfQorCWlmIChzZXJ2ZXJfc3VwcG9ydHMoInNpZGUtYmFuZC02NGsiKSkgeworCQlpZiAoYXJncy0+dmVyYm9zZSkKKwkJCWZwcmludGYoc3RkZXJyLCAiU2VydmVyIHN1cHBvcnRzIHNpZGUtYmFuZC02NGtcbiIpOworCQl1c2Vfc2lkZWJhbmQgPSAyOworCX0KKwllbHNlIGlmIChzZXJ2ZXJfc3VwcG9ydHMoInNpZGUtYmFuZCIpKSB7CisJCWlmIChhcmdzLT52ZXJib3NlKQorCQkJZnByaW50ZihzdGRlcnIsICJTZXJ2ZXIgc3VwcG9ydHMgc2lkZS1iYW5kXG4iKTsKKwkJdXNlX3NpZGViYW5kID0gMTsKKwl9CisJaWYgKHNlcnZlcl9zdXBwb3J0cygiYWxsb3ctdGlwLXNoYTEtaW4td2FudCIpKSB7CisJCWlmIChhcmdzLT52ZXJib3NlKQorCQkJZnByaW50ZihzdGRlcnIsICJTZXJ2ZXIgc3VwcG9ydHMgYWxsb3ctdGlwLXNoYTEtaW4td2FudFxuIik7CisJCWFsbG93X3RpcF9zaGExX2luX3dhbnQgPSAxOworCX0KKwlpZiAoIXNlcnZlcl9zdXBwb3J0cygidGhpbi1wYWNrIikpCisJCWFyZ3MtPnVzZV90aGluX3BhY2sgPSAwOworCWlmICghc2VydmVyX3N1cHBvcnRzKCJuby1wcm9ncmVzcyIpKQorCQlhcmdzLT5ub19wcm9ncmVzcyA9IDA7CisJaWYgKCFzZXJ2ZXJfc3VwcG9ydHMoImluY2x1ZGUtdGFnIikpCisJCWFyZ3MtPmluY2x1ZGVfdGFnID0gMDsKKwlpZiAoc2VydmVyX3N1cHBvcnRzKCJvZnMtZGVsdGEiKSkgeworCQlpZiAoYXJncy0+dmVyYm9zZSkKKwkJCWZwcmludGYoc3RkZXJyLCAiU2VydmVyIHN1cHBvcnRzIG9mcy1kZWx0YVxuIik7CisJfSBlbHNlCisJCXByZWZlcl9vZnNfZGVsdGEgPSAwOworCisJaWYgKChhZ2VudF9mZWF0dXJlID0gc2VydmVyX2ZlYXR1cmVfdmFsdWUoImFnZW50IiwgJmFnZW50X2xlbikpKSB7CisJCWFnZW50X3N1cHBvcnRlZCA9IDE7CisJCWlmIChhcmdzLT52ZXJib3NlICYmIGFnZW50X2xlbikKKwkJCWZwcmludGYoc3RkZXJyLCAiU2VydmVyIHZlcnNpb24gaXMgJS4qc1xuIiwKKwkJCQlhZ2VudF9sZW4sIGFnZW50X2ZlYXR1cmUpOworCX0KKworCWlmIChldmVyeXRoaW5nX2xvY2FsKGFyZ3MsICZyZWYsIHNvdWdodCwgbnJfc291Z2h0KSkgeworCQlwYWNrZXRfZmx1c2goZmRbMV0pOworCQlnb3RvIGFsbF9kb25lOworCX0KKwlpZiAoZmluZF9jb21tb24oYXJncywgZmQsIHNoYTEsIHJlZikgPCAwKQorCQlpZiAoIWFyZ3MtPmtlZXBfcGFjaykKKwkJCS8qIFdoZW4gY2xvbmluZywgaXQgaXMgbm90IHVudXN1YWwgdG8gaGF2ZQorCQkJICogbm8gY29tbW9uIGNvbW1pdC4KKwkJCSAqLworCQkJd2FybmluZygibm8gY29tbW9uIGNvbW1pdHMiKTsKKworCWlmIChhcmdzLT5zdGF0ZWxlc3NfcnBjKQorCQlwYWNrZXRfZmx1c2goZmRbMV0pOworCWlmIChhcmdzLT5kZXB0aCA+IDApCisJCXNldHVwX2FsdGVybmF0ZV9zaGFsbG93KCk7CisJaWYgKGdldF9wYWNrKGFyZ3MsIGZkLCBwYWNrX2xvY2tmaWxlKSkKKwkJZGllKCJnaXQgZmV0Y2gtcGFjazogZmV0Y2ggZmFpbGVkLiIpOworCisgYWxsX2RvbmU6CisJcmV0dXJuIHJlZjsKK30KKworc3RhdGljIGludCBmZXRjaF9wYWNrX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKK3sKKwlpZiAoc3RyY21wKHZhciwgImZldGNoLnVucGFja2xpbWl0IikgPT0gMCkgeworCQlmZXRjaF91bnBhY2tfbGltaXQgPSBnaXRfY29uZmlnX2ludCh2YXIsIHZhbHVlKTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKHN0cmNtcCh2YXIsICJ0cmFuc2Zlci51bnBhY2tsaW1pdCIpID09IDApIHsKKwkJdHJhbnNmZXJfdW5wYWNrX2xpbWl0ID0gZ2l0X2NvbmZpZ19pbnQodmFyLCB2YWx1ZSk7CisJCXJldHVybiAwOworCX0KKworCWlmIChzdHJjbXAodmFyLCAicmVwYWNrLnVzZWRlbHRhYmFzZW9mZnNldCIpID09IDApIHsKKwkJcHJlZmVyX29mc19kZWx0YSA9IGdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKCFzdHJjbXAodmFyLCAiZmV0Y2guZnNja29iamVjdHMiKSkgeworCQlmZXRjaF9mc2NrX29iamVjdHMgPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7CisJCXJldHVybiAwOworCX0KKworCWlmICghc3RyY21wKHZhciwgInRyYW5zZmVyLmZzY2tvYmplY3RzIikpIHsKKwkJdHJhbnNmZXJfZnNja19vYmplY3RzID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOworCQlyZXR1cm4gMDsKKwl9CisKKwlyZXR1cm4gZ2l0X2RlZmF1bHRfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKK30KKworc3RhdGljIHZvaWQgZmV0Y2hfcGFja19zZXR1cCh2b2lkKQoreworCXN0YXRpYyBpbnQgZGlkX3NldHVwOworCWlmIChkaWRfc2V0dXApCisJCXJldHVybjsKKwlnaXRfY29uZmlnKGZldGNoX3BhY2tfY29uZmlnLCBOVUxMKTsKKwlpZiAoMCA8PSB0cmFuc2Zlcl91bnBhY2tfbGltaXQpCisJCXVucGFja19saW1pdCA9IHRyYW5zZmVyX3VucGFja19saW1pdDsKKwllbHNlIGlmICgwIDw9IGZldGNoX3VucGFja19saW1pdCkKKwkJdW5wYWNrX2xpbWl0ID0gZmV0Y2hfdW5wYWNrX2xpbWl0OworCWRpZF9zZXR1cCA9IDE7Cit9CisKK3N0YXRpYyBpbnQgcmVtb3ZlX2R1cGxpY2F0ZXNfaW5fcmVmcyhzdHJ1Y3QgcmVmICoqcmVmLCBpbnQgbnIpCit7CisJc3RydWN0IHN0cmluZ19saXN0IG5hbWVzID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKKwlpbnQgc3JjLCBkc3Q7CisKKwlmb3IgKHNyYyA9IGRzdCA9IDA7IHNyYyA8IG5yOyBzcmMrKykgeworCQlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKKwkJaXRlbSA9IHN0cmluZ19saXN0X2luc2VydCgmbmFtZXMsIHJlZltzcmNdLT5uYW1lKTsKKwkJaWYgKGl0ZW0tPnV0aWwpCisJCQljb250aW51ZTsgLyogYWxyZWFkeSBoYXZlIGl0ICovCisJCWl0ZW0tPnV0aWwgPSByZWZbc3JjXTsKKwkJaWYgKHNyYyAhPSBkc3QpCisJCQlyZWZbZHN0XSA9IHJlZltzcmNdOworCQlkc3QrKzsKKwl9CisJZm9yIChzcmMgPSBkc3Q7IHNyYyA8IG5yOyBzcmMrKykKKwkJcmVmW3NyY10gPSBOVUxMOworCXN0cmluZ19saXN0X2NsZWFyKCZuYW1lcywgMCk7CisJcmV0dXJuIGRzdDsKK30KKworc3RydWN0IHJlZiAqZmV0Y2hfcGFjayhzdHJ1Y3QgZmV0Y2hfcGFja19hcmdzICphcmdzLAorCQkgICAgICAgaW50IGZkW10sIHN0cnVjdCBjaGlsZF9wcm9jZXNzICpjb25uLAorCQkgICAgICAgY29uc3Qgc3RydWN0IHJlZiAqcmVmLAorCQkgICAgICAgY29uc3QgY2hhciAqZGVzdCwKKwkJICAgICAgIHN0cnVjdCByZWYgKipzb3VnaHQsIGludCBucl9zb3VnaHQsCisJCSAgICAgICBjaGFyICoqcGFja19sb2NrZmlsZSkKK3sKKwlzdHJ1Y3QgcmVmICpyZWZfY3B5OworCisJZmV0Y2hfcGFja19zZXR1cCgpOworCWlmIChucl9zb3VnaHQpCisJCW5yX3NvdWdodCA9IHJlbW92ZV9kdXBsaWNhdGVzX2luX3JlZnMoc291Z2h0LCBucl9zb3VnaHQpOworCisJaWYgKCFyZWYpIHsKKwkJcGFja2V0X2ZsdXNoKGZkWzFdKTsKKwkJZGllKCJubyBtYXRjaGluZyByZW1vdGUgaGVhZCIpOworCX0KKwlyZWZfY3B5ID0gZG9fZmV0Y2hfcGFjayhhcmdzLCBmZCwgcmVmLCBzb3VnaHQsIG5yX3NvdWdodCwgcGFja19sb2NrZmlsZSk7CisKKwlpZiAoYWx0ZXJuYXRlX3NoYWxsb3dfZmlsZSkgeworCQlpZiAoKmFsdGVybmF0ZV9zaGFsbG93X2ZpbGUgPT0gJ1wwJykgeyAvKiAtLXVuc2hhbGxvdyAqLworCQkJdW5saW5rX29yX3dhcm4oZ2l0X3BhdGgoInNoYWxsb3ciKSk7CisJCQlyb2xsYmFja19sb2NrX2ZpbGUoJnNoYWxsb3dfbG9jayk7CisJCX0gZWxzZQorCQkJY29tbWl0X2xvY2tfZmlsZSgmc2hhbGxvd19sb2NrKTsKKwl9CisKKwlyZXByZXBhcmVfcGFja2VkX2dpdCgpOworCXJldHVybiByZWZfY3B5OworfQpkaWZmIC0tZ2l0IGEvZmV0Y2gtcGFjay5oIGIvZmV0Y2gtcGFjay5oCmluZGV4IDdjMjA2OWMuLmRjNTI2NmMgMTAwNjQ0Ci0tLSBhL2ZldGNoLXBhY2suaAorKysgYi9mZXRjaC1wYWNrLmgKQEAgLTEsNiArMSw4IEBACiAjaWZuZGVmIEZFVENIX1BBQ0tfSAogI2RlZmluZSBGRVRDSF9QQUNLX0gKIAorI2luY2x1ZGUgInN0cmluZy1saXN0LmgiCisKIHN0cnVjdCBmZXRjaF9wYWNrX2FyZ3MgewogCWNvbnN0IGNoYXIgKnVwbG9hZHBhY2s7CiAJaW50IHVucGFja2xpbWl0OwpAQCAtMTcsMTIgKzE5LDE3IEBACiAJCXN0YXRlbGVzc19ycGM6MTsKIH07CiAKKy8qCisgKiBzb3VnaHQgcmVwcmVzZW50cyByZW1vdGUgcmVmZXJlbmNlcyB0aGF0IHNob3VsZCBiZSB1cGRhdGVkIGZyb20uCisgKiBPbiByZXR1cm4sIHRoZSBuYW1lcyB0aGF0IHdlcmUgZm91bmQgb24gdGhlIHJlbW90ZSB3aWxsIGhhdmUgYmVlbgorICogbWFya2VkIGFzIHN1Y2guCisgKi8KIHN0cnVjdCByZWYgKmZldGNoX3BhY2soc3RydWN0IGZldGNoX3BhY2tfYXJncyAqYXJncywKLQkJaW50IGZkW10sIHN0cnVjdCBjaGlsZF9wcm9jZXNzICpjb25uLAotCQljb25zdCBzdHJ1Y3QgcmVmICpyZWYsCi0JCWNvbnN0IGNoYXIgKmRlc3QsCi0JCWludCBucl9oZWFkcywKLQkJY2hhciAqKmhlYWRzLAotCQljaGFyICoqcGFja19sb2NrZmlsZSk7CisJCSAgICAgICBpbnQgZmRbXSwgc3RydWN0IGNoaWxkX3Byb2Nlc3MgKmNvbm4sCisJCSAgICAgICBjb25zdCBzdHJ1Y3QgcmVmICpyZWYsCisJCSAgICAgICBjb25zdCBjaGFyICpkZXN0LAorCQkgICAgICAgc3RydWN0IHJlZiAqKnNvdWdodCwKKwkJICAgICAgIGludCBucl9zb3VnaHQsCisJCSAgICAgICBjaGFyICoqcGFja19sb2NrZmlsZSk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZml4dXAtYnVpbHRpbnMgYi9maXh1cC1idWlsdGlucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjNkZmE0Yy4uMDAwMDAwMAotLS0gYS9maXh1cC1idWlsdGlucworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMhL2Jpbi9zaAotd2hpbGUgWyAiJDEiIF0KLWRvCi0JaWYgWyAiJDEiICE9ICJnaXQtc2gtc2V0dXAiIC1hICIkMSIgIT0gImdpdC1wYXJzZS1yZW1vdGUiIC1hICIkMSIgIT0gImdpdC1zdm4iIF07IHRoZW4KLQkJb2xkPSIkMSIKLQkJbmV3PSQoZWNobyAiJDEiIHwgc2VkICdzL2dpdC0vZ2l0IC8nKQotCQllY2hvICJDb252ZXJ0aW5nICckb2xkJyB0byAnJG5ldyciCi0JCXNlZCAtaSAicy9cXDwkb2xkXFw+LyRuZXcvZyIgJChnaXQgbHMtZmlsZXMgJyouc2gnKQotCWZpCi0Jc2hpZnQKLWRvbmUKLQotc2VkIC1pICdzL2dpdCBtZXJnZS1vbmUtZmlsZS9naXQtbWVyZ2Utb25lLWZpbGUvZwotcy9naXQgcmViYXNlLXRvZG8vZ2l0LXJlYmFzZS10b2RvL2cnICQoZ2l0IGxzLWZpbGVzICcqLnNoJykKLWdpdCB1cGRhdGUtaW5kZXggLS1yZWZyZXNoID4mIC9kZXYvbnVsbAotZXhpdCAwCmRpZmYgLS1naXQgYS9mc2NrLmMgYi9mc2NrLmMKaW5kZXggNGM2M2IyYy4uOTljMDQ5NyAxMDA2NDQKLS0tIGEvZnNjay5jCisrKyBiL2ZzY2suYwpAQCAtMTM5LDggKzEzOSwxMiBAQAogc3RhdGljIGludCBmc2NrX3RyZWUoc3RydWN0IHRyZWUgKml0ZW0sIGludCBzdHJpY3QsIGZzY2tfZXJyb3IgZXJyb3JfZnVuYykKIHsKIAlpbnQgcmV0dmFsOworCWludCBoYXNfbnVsbF9zaGExID0gMDsKIAlpbnQgaGFzX2Z1bGxfcGF0aCA9IDA7CiAJaW50IGhhc19lbXB0eV9uYW1lID0gMDsKKwlpbnQgaGFzX2RvdCA9IDA7CisJaW50IGhhc19kb3Rkb3QgPSAwOworCWludCBoYXNfZG90Z2l0ID0gMDsKIAlpbnQgaGFzX3plcm9fcGFkID0gMDsKIAlpbnQgaGFzX2JhZF9tb2RlcyA9IDA7CiAJaW50IGhhc19kdXBfZW50cmllcyA9IDA7CkBAIC0xNTcsMTMgKzE2MSwyMiBAQAogCXdoaWxlIChkZXNjLnNpemUpIHsKIAkJdW5zaWduZWQgbW9kZTsKIAkJY29uc3QgY2hhciAqbmFtZTsKKwkJY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMTsKIAotCQl0cmVlX2VudHJ5X2V4dHJhY3QoJmRlc2MsICZuYW1lLCAmbW9kZSk7CisJCXNoYTEgPSB0cmVlX2VudHJ5X2V4dHJhY3QoJmRlc2MsICZuYW1lLCAmbW9kZSk7CiAKKwkJaWYgKGlzX251bGxfc2hhMShzaGExKSkKKwkJCWhhc19udWxsX3NoYTEgPSAxOwogCQlpZiAoc3RyY2hyKG5hbWUsICcvJykpCiAJCQloYXNfZnVsbF9wYXRoID0gMTsKIAkJaWYgKCEqbmFtZSkKIAkJCWhhc19lbXB0eV9uYW1lID0gMTsKKwkJaWYgKCFzdHJjbXAobmFtZSwgIi4iKSkKKwkJCWhhc19kb3QgPSAxOworCQlpZiAoIXN0cmNtcChuYW1lLCAiLi4iKSkKKwkJCWhhc19kb3Rkb3QgPSAxOworCQlpZiAoIXN0cmNtcChuYW1lLCAiLmdpdCIpKQorCQkJaGFzX2RvdGdpdCA9IDE7CiAJCWhhc196ZXJvX3BhZCB8PSAqKGNoYXIgKilkZXNjLmJ1ZmZlciA9PSAnMCc7CiAJCXVwZGF0ZV90cmVlX2VudHJ5KCZkZXNjKTsKIApAQCAtMjA3LDEwICsyMjAsMTggQEAKIAl9CiAKIAlyZXR2YWwgPSAwOworCWlmIChoYXNfbnVsbF9zaGExKQorCQlyZXR2YWwgKz0gZXJyb3JfZnVuYygmaXRlbS0+b2JqZWN0LCBGU0NLX1dBUk4sICJjb250YWlucyBlbnRyaWVzIHBvaW50aW5nIHRvIG51bGwgc2hhMSIpOwogCWlmIChoYXNfZnVsbF9wYXRoKQogCQlyZXR2YWwgKz0gZXJyb3JfZnVuYygmaXRlbS0+b2JqZWN0LCBGU0NLX1dBUk4sICJjb250YWlucyBmdWxsIHBhdGhuYW1lcyIpOwogCWlmIChoYXNfZW1wdHlfbmFtZSkKIAkJcmV0dmFsICs9IGVycm9yX2Z1bmMoJml0ZW0tPm9iamVjdCwgRlNDS19XQVJOLCAiY29udGFpbnMgZW1wdHkgcGF0aG5hbWUiKTsKKwlpZiAoaGFzX2RvdCkKKwkJcmV0dmFsICs9IGVycm9yX2Z1bmMoJml0ZW0tPm9iamVjdCwgRlNDS19XQVJOLCAiY29udGFpbnMgJy4nIik7CisJaWYgKGhhc19kb3Rkb3QpCisJCXJldHZhbCArPSBlcnJvcl9mdW5jKCZpdGVtLT5vYmplY3QsIEZTQ0tfV0FSTiwgImNvbnRhaW5zICcuLiciKTsKKwlpZiAoaGFzX2RvdGdpdCkKKwkJcmV0dmFsICs9IGVycm9yX2Z1bmMoJml0ZW0tPm9iamVjdCwgRlNDS19XQVJOLCAiY29udGFpbnMgJy5naXQnIik7CiAJaWYgKGhhc196ZXJvX3BhZCkKIAkJcmV0dmFsICs9IGVycm9yX2Z1bmMoJml0ZW0tPm9iamVjdCwgRlNDS19XQVJOLCAiY29udGFpbnMgemVyby1wYWRkZWQgZmlsZSBtb2RlcyIpOwogCWlmIChoYXNfYmFkX21vZGVzKQpkaWZmIC0tZ2l0IGEvZ2V0dGV4dC5jIGIvZ2V0dGV4dC5jCmluZGV4IGY3NWJjYTcuLjcxZTk1NDUgMTAwNjQ0Ci0tLSBhL2dldHRleHQuYworKysgYi9nZXR0ZXh0LmMKQEAgLTQsNiArNCw4IEBACiAKICNpbmNsdWRlICJnaXQtY29tcGF0LXV0aWwuaCIKICNpbmNsdWRlICJnZXR0ZXh0LmgiCisjaW5jbHVkZSAic3RyYnVmLmgiCisjaW5jbHVkZSAidXRmOC5oIgogCiAjaWZuZGVmIE5PX0dFVFRFWFQKICMJaW5jbHVkZSA8bG9jYWxlLmg+CkBAIC0yNywxMCArMjksOSBAQAogI2VuZGlmCiAKICNpZm5kZWYgTk9fR0VUVEVYVAorc3RhdGljIGNvbnN0IGNoYXIgKmNoYXJzZXQ7CiBzdGF0aWMgdm9pZCBpbml0X2dldHRleHRfY2hhcnNldChjb25zdCBjaGFyICpkb21haW4pCiB7Ci0JY29uc3QgY2hhciAqY2hhcnNldDsKLQogCS8qCiAJICAgVGhpcyB0cmljayBhcnJhbmdlcyBmb3IgbWVzc2FnZXMgdG8gYmUgZW1pdHRlZCBpbiB0aGUgdXNlcidzCiAJICAgcmVxdWVzdGVkIGVuY29kaW5nLCBidXQgYXZvaWRzIHNldHRpbmcgTENfQ1RZUEUgZnJvbSB0aGUKQEAgLTEyOCw0ICsxMjksMTQgQEAKIAlpbml0X2dldHRleHRfY2hhcnNldCgiZ2l0Iik7CiAJdGV4dGRvbWFpbigiZ2l0Iik7CiB9CisKKy8qIHJldHVybiB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgb2Ygc3RyaW5nICdzJyBpbiBjdXJyZW50IGxvY2FsZSAqLworaW50IGdldHRleHRfd2lkdGgoY29uc3QgY2hhciAqcykKK3sKKwlzdGF0aWMgaW50IGlzX3V0ZjggPSAtMTsKKwlpZiAoaXNfdXRmOCA9PSAtMSkKKwkJaXNfdXRmOCA9ICFzdHJjbXAoY2hhcnNldCwgIlVURi04Iik7CisKKwlyZXR1cm4gaXNfdXRmOCA/IHV0Zjhfc3Ryd2lkdGgocykgOiBzdHJsZW4ocyk7Cit9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2dldHRleHQuaCBiL2dldHRleHQuaAppbmRleCA1N2JhOGJiLi43NjcxZDA5IDEwMDY0NAotLS0gYS9nZXR0ZXh0LmgKKysrIGIvZ2V0dGV4dC5oCkBAIC0zMCwxMCArMzAsMTUgQEAKIAogI2lmbmRlZiBOT19HRVRURVhUCiBleHRlcm4gdm9pZCBnaXRfc2V0dXBfZ2V0dGV4dCh2b2lkKTsKK2V4dGVybiBpbnQgZ2V0dGV4dF93aWR0aChjb25zdCBjaGFyICpzKTsKICNlbHNlCiBzdGF0aWMgaW5saW5lIHZvaWQgZ2l0X3NldHVwX2dldHRleHQodm9pZCkKIHsKIH0KK3N0YXRpYyBpbmxpbmUgaW50IGdldHRleHRfd2lkdGgoY29uc3QgY2hhciAqcykKK3sKKwlyZXR1cm4gc3RybGVuKHMpOworfQogI2VuZGlmCiAKICNpZmRlZiBHRVRURVhUX1BPSVNPTgpAQCAtNDQsNiArNDksOCBAQAogCiBzdGF0aWMgaW5saW5lIEZPUk1BVF9QUkVTRVJWSU5HKDEpIGNvbnN0IGNoYXIgKl8oY29uc3QgY2hhciAqbXNnaWQpCiB7CisJaWYgKCEqbXNnaWQpCisJCXJldHVybiAiIjsKIAlyZXR1cm4gdXNlX2dldHRleHRfcG9pc29uKCkgPyAiIyBHRVRURVhUIFBPSVNPTiAjIiA6IGdldHRleHQobXNnaWQpOwogfQogCmRpZmYgLS1naXQgYS9naXQtYWRkLS1pbnRlcmFjdGl2ZS5wZXJsIGIvZ2l0LWFkZC0taW50ZXJhY3RpdmUucGVybAppbmRleCBkOTQ4YWE4Li5kMmM0Y2U2IDEwMDc1NQotLS0gYS9naXQtYWRkLS1pbnRlcmFjdGl2ZS5wZXJsCisrKyBiL2dpdC1hZGQtLWludGVyYWN0aXZlLnBlcmwKQEAgLTEwNjcsNyArMTA2Nyw2IEBACiB9CiAKIHN1YiBkaWZmX2FwcGxpZXMgewotCW15ICRmaDsKIAlyZXR1cm4gcnVuX2dpdF9hcHBseSgkcGF0Y2hfbW9kZV9mbGF2b3Vye0FQUExZX0NIRUNLfSAuICcgLS1jaGVjaycsCiAJCQkgICAgIG1hcCB7IEB7JF8tPntURVhUfX0gfSBAXyk7CiB9CkBAIC0xMjQ4LDcgKzEyNDcsNyBAQAogCiAKICMgUHJpbnQgYSBvbmUtbGluZSBzdW1tYXJ5IG9mIGVhY2ggaHVuayBpbiB0aGUgYXJyYXkgcmVmIGluCi0jIHRoZSBmaXJzdCBhcmd1bWVudCwgc3RhcnRpbmcgd2loIHRoZSBpbmRleCBpbiB0aGUgMm5kLgorIyB0aGUgZmlyc3QgYXJndW1lbnQsIHN0YXJ0aW5nIHdpdGggdGhlIGluZGV4IGluIHRoZSAybmQuCiBzdWIgZGlzcGxheV9odW5rcyB7CiAJbXkgKCRodW5rcywgJGkpID0gQF87CiAJbXkgJGN0ciA9IDA7CkBAIC0xNTE0LDcgKzE1MTMsNiBAQAogCX0KIAogCWlmIChAcmVzdWx0KSB7Ci0JCW15ICRmaDsKIAkJbXkgQHBhdGNoID0gcmVhc3NlbWJsZV9wYXRjaCgkaGVhZC0+e1RFWFR9LCBAcmVzdWx0KTsKIAkJbXkgJGFwcGx5X3JvdXRpbmUgPSAkcGF0Y2hfbW9kZV9mbGF2b3Vye0FQUExZfTsKIAkJJiRhcHBseV9yb3V0aW5lKEBwYXRjaCk7CmRpZmYgLS1naXQgYS9naXQtYW0uc2ggYi9naXQtYW0uc2gKaW5kZXggZjhiN2EwYy4uYzA5Mjg1NSAxMDA3NTUKLS0tIGEvZ2l0LWFtLnNoCisrKyBiL2dpdC1hbS5zaApAQCAtOTIsNyArOTIsNyBAQAogCXRoZW4KIAkJcmV0dXJuIDAKIAlmaQotCQlnZXR0ZXh0bG4gIllvdSBzZWVtIHRvIGhhdmUgbW92ZWQgSEVBRCBzaW5jZSB0aGUgbGFzdCAnYW0nIGZhaWx1cmUuCisJZ2V0dGV4dGxuICJZb3Ugc2VlbSB0byBoYXZlIG1vdmVkIEhFQUQgc2luY2UgdGhlIGxhc3QgJ2FtJyBmYWlsdXJlLgogTm90IHJld2luZGluZyB0byBPUklHX0hFQUQiID4mMgogCXJldHVybiAxCiB9CkBAIC0xMDIsOSArMTAyLDkgQEAKIAkgICAgcHJpbnRmICclc1xuJyAiJHJlc29sdmVtc2ciCiAJICAgIHN0b3BfaGVyZSAkMQogICAgIGZpCi0gICAgZXZhbF9nZXR0ZXh0bG4gIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtIHJ1biBcIlwkY21kbGluZSAtLXJlc29sdmVkXCIuCi1JZiB5b3Ugd291bGQgcHJlZmVyIHRvIHNraXAgdGhpcyBwYXRjaCwgaW5zdGVhZCBydW4gXCJcJGNtZGxpbmUgLS1za2lwXCIuCi1UbyByZXN0b3JlIHRoZSBvcmlnaW5hbCBicmFuY2ggYW5kIHN0b3AgcGF0Y2hpbmcgcnVuIFwiXCRjbWRsaW5lIC0tYWJvcnRcIi4iCisgICAgZXZhbF9nZXR0ZXh0bG4gIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtLCBydW4gXCJcJGNtZGxpbmUgLS1yZXNvbHZlZFwiLgorSWYgeW91IHByZWZlciB0byBza2lwIHRoaXMgcGF0Y2gsIHJ1biBcIlwkY21kbGluZSAtLXNraXBcIiBpbnN0ZWFkLgorVG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBzdG9wIHBhdGNoaW5nLCBydW4gXCJcJGNtZGxpbmUgLS1hYm9ydFwiLiIKIAogICAgIHN0b3BfaGVyZSAkMQogfQpAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgZ2l0IHdyaXRlLXRyZWUgPiIkZG90ZXN0L3BhdGNoLW1lcmdlLWJhc2UrIiB8fAogICAgIGNhbm5vdF9mYWxsYmFjayAiJChnZXR0ZXh0ICJSZXBvc2l0b3J5IGxhY2tzIG5lY2Vzc2FyeSBibG9icyB0byBmYWxsIGJhY2sgb24gMy13YXkgbWVyZ2UuIikiCiAKLSAgICBzYXkgVXNpbmcgaW5kZXggaW5mbyB0byByZWNvbnN0cnVjdCBhIGJhc2UgdHJlZS4uLgorICAgIHNheSAiJChnZXR0ZXh0ICJVc2luZyBpbmRleCBpbmZvIHRvIHJlY29uc3RydWN0IGEgYmFzZSB0cmVlLi4uIikiCiAKICAgICBjbWQ9J0dJVF9JTkRFWF9GSUxFPSIkZG90ZXN0L3BhdGNoLW1lcmdlLXRtcC1pbmRleCInCiAKQEAgLTE3Niw4ICsxNzYsNyBAQAogICAgIGZpCiAgICAgZ2l0LW1lcmdlLXJlY3Vyc2l2ZSAkb3JpZ190cmVlIC0tIEhFQUQgJGhpc190cmVlIHx8IHsKIAkgICAgZ2l0IHJlcmVyZSAkYWxsb3dfcmVyZXJlX2F1dG91cGRhdGUKLQkgICAgZWNobyBGYWlsZWQgdG8gbWVyZ2UgaW4gdGhlIGNoYW5nZXMuCi0JICAgIGV4aXQgMQorCSAgICBkaWUgIiQoZ2V0dGV4dCAiRmFpbGVkIHRvIG1lcmdlIGluIHRoZSBjaGFuZ2VzLiIpIgogICAgIH0KICAgICB1bnNldCBHSVRIRUFEXyRoaXNfdHJlZQogfQpAQCAtMjYwLDcgKzI1OSw3IEBACiBzcGxpdF9wYXRjaGVzICgpIHsKIAljYXNlICIkcGF0Y2hfZm9ybWF0IiBpbgogCW1ib3gpCi0JCWlmIHRlc3QgLW4gIiRyZWJhc2luZyIgfHwgdGVzdCB0ID0gIiRrZWVwY3IiCisJCWlmIHRlc3QgdCA9ICIka2VlcGNyIgogCQl0aGVuCiAJCSAgICBrZWVwX2NyPS0ta2VlcC1jcgogCQllbHNlCkBAIC0zMzUsNyArMzM0LDcgQEAKIAkJCSMgU2luY2Ugd2UgY2Fubm90IGd1YXJhbnRlZSB0aGF0IHRoZSBjb21taXQgbWVzc2FnZSBpcyBpbgogCQkJIyBnaXQtZnJpZW5kbHkgZm9ybWF0LCB3ZSBwdXQgbm8gU3ViamVjdDogbGluZSBhbmQganVzdCBjb25zdW1lCiAJCQkjIGFsbCBvZiB0aGUgbWVzc2FnZSBhcyB0aGUgYm9keQotCQkJcGVybCAtTSdQT1NJWCBxdyhzdHJmdGltZSknIC1uZSAnQkVHSU4geyAkc3ViamVjdCA9IDAgfQorCQkJTEFORz1DIExDX0FMTD1DIHBlcmwgLU0nUE9TSVggcXcoc3RyZnRpbWUpJyAtbmUgJ0JFR0lOIHsgJHN1YmplY3QgPSAwIH0KIAkJCQlpZiAoJHN1YmplY3QpIHsgcHJpbnQgOyB9CiAJCQkJZWxzaWYgKC9eXCMgVXNlciAvKSB7IHMvXCMgVXNlci9Gcm9tOi8gOyBwcmludCA7IH0KIAkJCQllbHNpZiAoL15cIyBEYXRlIC8pIHsKQEAgLTM4Nyw4ICszODYsOCBAQAogCS1pfC0taW50ZXJhY3RpdmUpCiAJCWludGVyYWN0aXZlPXQgOzsKIAktYnwtLWJpbmFyeSkKLQkJZWNobyA+JjIgIlRoZSAkMSBvcHRpb24gaGFzIGJlZW4gYSBuby1vcCBmb3IgbG9uZyB0aW1lLCBhbmQiCi0JCWVjaG8gPiYyICJpdCB3aWxsIGJlIHJlbW92ZWQuIFBsZWFzZSBkbyBub3QgdXNlIGl0IGFueW1vcmUuIgorCQlnZXR0ZXh0bG4gPiYyICJUaGUgLWIvLS1iaW5hcnkgb3B0aW9uIGhhcyBiZWVuIGEgbm8tb3AgZm9yIGxvbmcgdGltZSwgYW5kCitpdCB3aWxsIGJlIHJlbW92ZWQuIFBsZWFzZSBkbyBub3QgdXNlIGl0IGFueW1vcmUuIgogCQk7OwogCS0zfC0tM3dheSkKIAkJdGhyZWV3YXk9dCA7OwpAQCAtNDEzLDEwICs0MTIsNyBAQAogCS0tYWJvcnQpCiAJCWFib3J0PXQgOzsKIAktLXJlYmFzaW5nKQotCQlyZWJhc2luZz10IHRocmVld2F5PXQga2VlcD10IHNjaXNzb3JzPWYgbm9faW5ib2R5X2hlYWRlcnM9dCA7OwotCS1kfC0tZG90ZXN0KQotCQlkaWUgIiQoZ2V0dGV4dCAiLWQgb3B0aW9uIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuICBEbyBub3QgdXNlLiIpIgotCQk7OworCQlyZWJhc2luZz10IHRocmVld2F5PXQgOzsKIAktLXJlc29sdmVtc2cpCiAJCXNoaWZ0OyByZXNvbHZlbXNnPSQxIDs7CiAJLS13aGl0ZXNwYWNlfC0tZGlyZWN0b3J5fC0tZXhjbHVkZXwtLWluY2x1ZGUpCkBAIC02NTgsMzIgKzY1NCwzNCBAQAogCSMgYnkgdGhlIHVzZXIsIG9yIHRoZSB1c2VyIGNhbiB0ZWxsIHVzIHRvIGRvIHNvIGJ5IC0tcmVzb2x2ZWQgZmxhZy4KIAljYXNlICIkcmVzdW1lIiBpbgogCScnKQotCQlnaXQgbWFpbGluZm8gJGtlZXAgJG5vX2luYm9keV9oZWFkZXJzICRzY2lzc29ycyAkdXRmOCAiJGRvdGVzdC9tc2ciICIkZG90ZXN0L3BhdGNoIiBcCi0JCQk8IiRkb3Rlc3QvJG1zZ251bSIgPiIkZG90ZXN0L2luZm8iIHx8Ci0JCQlzdG9wX2hlcmUgJHRoaXMKLQotCQkjIHNraXAgcGluZSdzIGludGVybmFsIGZvbGRlciBkYXRhCi0JCXNhbmVfZ3JlcCAnXkF1dGhvcjogTWFpbCBTeXN0ZW0gSW50ZXJuYWwgRGF0YSQnIFwKLQkJCTwiJGRvdGVzdCIvaW5mbyA+L2Rldi9udWxsICYmCi0JCQlnb19uZXh0ICYmIGNvbnRpbnVlCi0KLQkJdGVzdCAtcyAiJGRvdGVzdC9wYXRjaCIgfHwgewotCQkJZXZhbF9nZXR0ZXh0bG4gIlBhdGNoIGlzIGVtcHR5LiAgV2FzIGl0IHNwbGl0IHdyb25nPwotSWYgeW91IHdvdWxkIHByZWZlciB0byBza2lwIHRoaXMgcGF0Y2gsIGluc3RlYWQgcnVuIFwiXCRjbWRsaW5lIC0tc2tpcFwiLgotVG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBzdG9wIHBhdGNoaW5nIHJ1biBcIlwkY21kbGluZSAtLWFib3J0XCIuIgotCQkJc3RvcF9oZXJlICR0aGlzCi0JCX0KLQkJcm0gLWYgIiRkb3Rlc3Qvb3JpZ2luYWwtY29tbWl0IiAiJGRvdGVzdC9hdXRob3Itc2NyaXB0IgotCQlpZiB0ZXN0IC1mICIkZG90ZXN0L3JlYmFzaW5nIiAmJgorCQlpZiB0ZXN0IC1mICIkZG90ZXN0L3JlYmFzaW5nIgorCQl0aGVuCiAJCQljb21taXQ9JChzZWQgLWUgJ3MvXkZyb20gXChbMC05YS1mXSpcKSAuKi9cMS8nIFwKIAkJCQktZSBxICIkZG90ZXN0LyRtc2dudW0iKSAmJgotCQkJdGVzdCAiJChnaXQgY2F0LWZpbGUgLXQgIiRjb21taXQiKSIgPSBjb21taXQKLQkJdGhlbgorCQkJdGVzdCAiJChnaXQgY2F0LWZpbGUgLXQgIiRjb21taXQiKSIgPSBjb21taXQgfHwKKwkJCQlzdG9wX2hlcmUgJHRoaXMKIAkJCWdpdCBjYXQtZmlsZSBjb21taXQgIiRjb21taXQiIHwKIAkJCXNlZCAtZSAnMSwvXiQvZCcgPiIkZG90ZXN0L21zZy1jbGVhbiIKLQkJCWVjaG8gIiRjb21taXQiID4gIiRkb3Rlc3Qvb3JpZ2luYWwtY29tbWl0IgotCQkJZ2V0X2F1dGhvcl9pZGVudF9mcm9tX2NvbW1pdCAiJGNvbW1pdCIgPiAiJGRvdGVzdC9hdXRob3Itc2NyaXB0IgorCQkJZWNobyAiJGNvbW1pdCIgPiIkZG90ZXN0L29yaWdpbmFsLWNvbW1pdCIKKwkJCWdldF9hdXRob3JfaWRlbnRfZnJvbV9jb21taXQgIiRjb21taXQiID4iJGRvdGVzdC9hdXRob3Itc2NyaXB0IgorCQkJZ2l0IGRpZmYtdHJlZSAtLXJvb3QgLS1iaW5hcnkgLS1mdWxsLWluZGV4ICIkY29tbWl0IiA+IiRkb3Rlc3QvcGF0Y2giCiAJCWVsc2UKKwkJCWdpdCBtYWlsaW5mbyAka2VlcCAkbm9faW5ib2R5X2hlYWRlcnMgJHNjaXNzb3JzICR1dGY4ICIkZG90ZXN0L21zZyIgIiRkb3Rlc3QvcGF0Y2giIFwKKwkJCQk8IiRkb3Rlc3QvJG1zZ251bSIgPiIkZG90ZXN0L2luZm8iIHx8CisJCQkJc3RvcF9oZXJlICR0aGlzCisKKwkJCSMgc2tpcCBwaW5lJ3MgaW50ZXJuYWwgZm9sZGVyIGRhdGEKKwkJCXNhbmVfZ3JlcCAnXkF1dGhvcjogTWFpbCBTeXN0ZW0gSW50ZXJuYWwgRGF0YSQnIFwKKwkJCQk8IiRkb3Rlc3QiL2luZm8gPi9kZXYvbnVsbCAmJgorCQkJCWdvX25leHQgJiYgY29udGludWUKKworCQkJdGVzdCAtcyAiJGRvdGVzdC9wYXRjaCIgfHwgeworCQkJCWV2YWxfZ2V0dGV4dGxuICJQYXRjaCBpcyBlbXB0eS4gIFdhcyBpdCBzcGxpdCB3cm9uZz8KK0lmIHlvdSB3b3VsZCBwcmVmZXIgdG8gc2tpcCB0aGlzIHBhdGNoLCBpbnN0ZWFkIHJ1biBcIlwkY21kbGluZSAtLXNraXBcIi4KK1RvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGJyYW5jaCBhbmQgc3RvcCBwYXRjaGluZyBydW4gXCJcJGNtZGxpbmUgLS1hYm9ydFwiLiIKKwkJCQlzdG9wX2hlcmUgJHRoaXMKKwkJCX0KKwkJCXJtIC1mICIkZG90ZXN0L29yaWdpbmFsLWNvbW1pdCIgIiRkb3Rlc3QvYXV0aG9yLXNjcmlwdCIKIAkJCXsKIAkJCQlzZWQgLW4gJy9eU3ViamVjdC8gcy9TdWJqZWN0OiAvL3AnICIkZG90ZXN0L2luZm8iCiAJCQkJZWNobwpAQCAtNzgwLDEzICs3NzgsNiBAQAogCSAgICBhY3Rpb249eWVzCiAJZmkKIAotCWlmIHRlc3QgLWYgIiRkb3Rlc3QvZmluYWwtY29tbWl0IgotCXRoZW4KLQkJRklSU1RMSU5FPSQoc2VkIDFxICIkZG90ZXN0L2ZpbmFsLWNvbW1pdCIpCi0JZWxzZQotCQlGSVJTVExJTkU9IiIKLQlmaQotCiAJaWYgdGVzdCAkYWN0aW9uID0gc2tpcAogCXRoZW4KIAkJZ29fbmV4dApAQCAtNzk5LDYgKzc5MCwxMyBAQAogCQlzdG9wX2hlcmUgJHRoaXMKIAlmaQogCisJaWYgdGVzdCAtZiAiJGRvdGVzdC9maW5hbC1jb21taXQiCisJdGhlbgorCQlGSVJTVExJTkU9JChzZWQgMXEgIiRkb3Rlc3QvZmluYWwtY29tbWl0IikKKwllbHNlCisJCUZJUlNUTElORT0iIgorCWZpCisKIAlzYXkgIiQoZXZhbF9nZXR0ZXh0ICJBcHBseWluZzogXCRGSVJTVExJTkUiKSIKIAogCWNhc2UgIiRyZXNvbHZlZCIgaW4KQEAgLTg1NSw2ICs4NTMsMTEgQEAKIAlpZiB0ZXN0ICRhcHBseV9zdGF0dXMgIT0gMAogCXRoZW4KIAkJZXZhbF9nZXR0ZXh0bG4gJ1BhdGNoIGZhaWxlZCBhdCAkbXNnbnVtICRGSVJTVExJTkUnCisJCWlmIHRlc3QgIiQoZ2l0IGNvbmZpZyAtLWJvb2wgYWR2aWNlLmFtd29ya2RpcikiICE9IGZhbHNlCisJCXRoZW4KKwkJCWV2YWxfZ2V0dGV4dGxuICdUaGUgY29weSBvZiB0aGUgcGF0Y2ggdGhhdCBmYWlsZWQgaXMgZm91bmQgaW46CisgICAkZG90ZXN0L3BhdGNoJworCQlmaQogCQlzdG9wX2hlcmVfdXNlcl9yZXNvbHZlICR0aGlzCiAJZmkKIApkaWZmIC0tZ2l0IGEvZ2l0LWFyY2hpbXBvcnQucGVybCBiL2dpdC1hcmNoaW1wb3J0LnBlcmwKaW5kZXggYmMzMmYxOC4uOWNiMTIzYSAxMDA3NTUKLS0tIGEvZ2l0LWFyY2hpbXBvcnQucGVybAorKysgYi9naXQtYXJjaGltcG9ydC5wZXJsCkBAIC03NSw3ICs3NSw3IEBACiAKIHN1YiB1c2FnZSgpIHsKICAgICBwcmludCBTVERFUlIgPDxFTkQ7Ci1Vc2FnZTogZ2l0IGFyY2hpbXBvcnQgICAgICMgZmV0Y2gvdXBkYXRlIEdJVCBmcm9tIEFyY2gKK3VzYWdlOiBnaXQgYXJjaGltcG9ydCAgICAgIyBmZXRjaC91cGRhdGUgR0lUIGZyb20gQXJjaAogICAgICAgIFsgLWggXSBbIC12IF0gWyAtbyBdIFsgLWEgXSBbIC1mIF0gWyAtVCBdIFsgLUQgZGVwdGggXSBbIC10IHRlbXBkaXIgXQogICAgICAgIHJlcG9zaXRvcnkvYXJjaC1icmFuY2ggWyByZXBvc2l0b3J5L2FyY2gtYnJhbmNoXSAuLi4KIEVORApkaWZmIC0tZ2l0IGEvZ2l0LWJpc2VjdC5zaCBiL2dpdC1iaXNlY3Quc2gKaW5kZXggOTllZmJlOC4uZDc1MThlOSAxMDA3NTUKLS0tIGEvZ2l0LWJpc2VjdC5zaAorKysgYi9naXQtYmlzZWN0LnNoCkBAIC0zMTEsNyArMzExLDIzIEBACiAJcmVzPSQ/CiAKIAkjIENoZWNrIGlmIHdlIHNob3VsZCBleGl0IGJlY2F1c2UgYmlzZWN0aW9uIGlzIGZpbmlzaGVkCi0JdGVzdCAkcmVzIC1lcSAxMCAmJiBleGl0IDAKKwlpZiB0ZXN0ICRyZXMgLWVxIDEwCisJdGhlbgorCQliYWRfcmV2PSQoZ2l0IHNob3ctcmVmIC0taGFzaCAtLXZlcmlmeSByZWZzL2Jpc2VjdC9iYWQpCisJCWJhZF9jb21taXQ9JChnaXQgc2hvdy1icmFuY2ggJGJhZF9yZXYpCisJCWVjaG8gIiMgZmlyc3QgYmFkIGNvbW1pdDogJGJhZF9jb21taXQiID4+IiRHSVRfRElSL0JJU0VDVF9MT0ciCisJCWV4aXQgMAorCWVsaWYgdGVzdCAkcmVzIC1lcSAyCisJdGhlbgorCQllY2hvICIjIG9ubHkgc2tpcHBlZCBjb21taXRzIGxlZnQgdG8gdGVzdCIgPj4iJEdJVF9ESVIvQklTRUNUX0xPRyIKKwkJZ29vZF9yZXZzPSQoZ2l0IGZvci1lYWNoLXJlZiAtLWZvcm1hdD0iLS1ub3QgJShvYmplY3RuYW1lKSIgInJlZnMvYmlzZWN0L2dvb2QtKiIpCisJCWZvciBza2lwcGVkIGluICQoZ2l0IHJldi1saXN0IHJlZnMvYmlzZWN0L2JhZCAkZ29vZF9yZXZzKQorCQlkbworCQkJc2tpcHBlZF9jb21taXQ9JChnaXQgc2hvdy1icmFuY2ggJHNraXBwZWQpCisJCQllY2hvICIjIHBvc3NpYmxlIGZpcnN0IGJhZCBjb21taXQ6ICRza2lwcGVkX2NvbW1pdCIgPj4iJEdJVF9ESVIvQklTRUNUX0xPRyIKKwkJZG9uZQorCQlleGl0ICRyZXMKKwlmaQogCiAJIyBDaGVjayBmb3IgYW4gZXJyb3IgaW4gdGhlIGJpc2VjdGlvbiBwcm9jZXNzCiAJdGVzdCAkcmVzIC1uZSAwICYmIGV4aXQgJHJlcwpkaWZmIC0tZ2l0IGEvZ2l0LWNvbXBhdC11dGlsLmggYi9naXQtY29tcGF0LXV0aWwuaAppbmRleCA1YmQ5YWQ3Li42NjBiN2YwIDEwMDY0NAotLS0gYS9naXQtY29tcGF0LXV0aWwuaAorKysgYi9naXQtY29tcGF0LXV0aWwuaApAQCAtNzQsNyArNzQsOCBAQAogIyBkZWZpbmUgX1hPUEVOX1NPVVJDRSA1MDAKICMgZW5kaWYKICNlbGlmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fVVNMQ19fKSAmJiBcCi0gICAgICAhZGVmaW5lZChfTV9VTklYKSAmJiAhZGVmaW5lZChfX3NnaSkgJiYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKKyAgICAgICFkZWZpbmVkKF9NX1VOSVgpICYmICFkZWZpbmVkKF9fc2dpKSAmJiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKSAmJiBcCisgICAgICAhZGVmaW5lZChfX1RBTkRFTSkgJiYgIWRlZmluZWQoX19RTlhfXykKICNkZWZpbmUgX1hPUEVOX1NPVVJDRSA2MDAgLyogZ2xpYmMyIGFuZCBBSVggNS4zTCBuZWVkIDUwMCwgT3BlbkJTRCBuZWVkcyA2MDAgZm9yIFNfSVNMTksoKSAqLwogI2RlZmluZSBfWE9QRU5fU09VUkNFX0VYVEVOREVEIDEgLyogQUlYIDUuM0wgbmVlZHMgdGhpcyAqLwogI2VuZGlmCkBAIC04NSw2ICs4Niw5IEBACiAjZGVmaW5lIF9TR0lfU09VUkNFIDEKIAogI2lmZGVmIFdJTjMyIC8qIEJvdGggTWluR1cgYW5kIE1TVkMgKi8KKyMgaWYgZGVmaW5lZCAoX01TQ19WRVIpCisjICBkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDUwMgorIyBlbmRpZgogI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOICAvKiBzdG9wcyB3aW5kb3dzLmggaW5jbHVkaW5nIHdpbnNvY2suaCAqLwogI2luY2x1ZGUgPHdpbnNvY2syLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgpAQCAtOTgsMTUgKzEwMiwyMiBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmZGVmIEhBVkVfU1RSSU5HU19ICisjaW5jbHVkZSA8c3RyaW5ncy5oPiAvKiBmb3Igc3RyY2FzZWNtcCgpICovCisjZW5kaWYKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgorI2lmZGVmIE5FRURTX1NZU19QQVJBTV9ICiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxkaXJlbnQuaD4KICNpbmNsdWRlIDxzeXMvdGltZS5oPgogI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KKyNpZm5kZWYgVVNFX1dJTERNQVRDSAogI2luY2x1ZGUgPGZubWF0Y2guaD4KKyNlbmRpZgogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPHJlZ2V4Lmg+CiAjaW5jbHVkZSA8dXRpbWUuaD4KQEAgLTE0MSw2ICsxNTIsMTggQEAKICNlbHNlCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjZW5kaWYKKyNpZmRlZiBOT19JTlRQVFJfVAorLyoKKyAqIE9uIEkxNkxQMzIsIElMUDMyIGFuZCBMUDY0ICJsb25nIiBpcyB0aGUgc2F2ZSBiZXQsIGhvd2V2ZXIKKyAqIG9uIExMUDg2LCBJTDMzTExQNjQgYW5kIFA2NCBpdCBuZWVkcyB0byBiZSAibG9uZyBsb25nIiwKKyAqIHdoaWxlIG9uIElQMTYgYW5kIElQMTZMMzIgaXQgaXMgImludCIgKHJlc3AuICJzaG9ydCIpCisgKiBTaXplIG5lZWRzIHRvIG1hdGNoIChvciBleGNlZWQpICdzaXplb2Yodm9pZCAqKScuCisgKiBXZSBjYW4ndCB0YWtlICJsb25nIGxvbmciIGhlcmUgYXMgbm90IGV2ZXJ5Ym9keSBoYXMgaXQuCisgKi8KK3R5cGVkZWYgbG9uZyBpbnRwdHJfdDsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50cHRyX3Q7CisjZW5kaWYKK2ludCBnZXRfc3RfbW9kZV9iaXRzKGNvbnN0IGNoYXIgKnBhdGgsIGludCAqbW9kZSk7CiAjaWYgZGVmaW5lZChfX0NZR1dJTl9fKQogI3VuZGVmIF9YT1BFTl9TT1VSQ0UKICNpbmNsdWRlIDxncnAuaD4KQEAgLTE1Myw2ICsxNzYsMzYgQEAKICNlbmRpZgogI2VuZGlmCiAKKy8qIHVzZWQgb24gTWFjIE9TIFggKi8KKyNpZmRlZiBQUkVDT01QT1NFX1VOSUNPREUKKyNpbmNsdWRlICJjb21wYXQvcHJlY29tcG9zZV91dGY4LmgiCisjZWxzZQorI2RlZmluZSBwcmVjb21wb3NlX3N0cihpbixpX25mZDJuZmMpCisjZGVmaW5lIHByZWNvbXBvc2VfYXJndihjLHYpCisjZGVmaW5lIHByb2JlX3V0ZjhfcGF0aG5hbWVfY29tcG9zaXRpb24oYSxiKQorI2VuZGlmCisKKyNpZmRlZiBORUVEU19DTElQUEVEX1dSSVRFCitzc2l6ZV90IGNsaXBwZWRfd3JpdGUoaW50IGZpbGRlcywgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbmJ5dGUpOworI2RlZmluZSB3cml0ZSh4LHkseikgY2xpcHBlZF93cml0ZSgoeCksKHkpLCh6KSkKKyNlbmRpZgorCisjaWZkZWYgTUtESVJfV09fVFJBSUxJTkdfU0xBU0gKKyNkZWZpbmUgbWtkaXIoYSxiKSBjb21wYXRfbWtkaXJfd29fdHJhaWxpbmdfc2xhc2goKGEpLChiKSkKK2V4dGVybiBpbnQgY29tcGF0X21rZGlyX3dvX3RyYWlsaW5nX3NsYXNoKGNvbnN0IGNoYXIqLCBtb2RlX3QpOworI2VuZGlmCisKKyNpZmRlZiBOT19TVFJVQ1RfSVRJTUVSVkFMCitzdHJ1Y3QgaXRpbWVydmFsIHsKKwlzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKKwlzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsKK30KKyNlbmRpZgorCisjaWZkZWYgTk9fU0VUSVRJTUVSCisjZGVmaW5lIHNldGl0aW1lcih3aGljaCx2YWx1ZSxvdmFsdWUpCisjZW5kaWYKKwogI2lmbmRlZiBOT19MSUJHRU5fSAogI2luY2x1ZGUgPGxpYmdlbi5oPgogI2Vsc2UKQEAgLTE2OSw2ICsyMjIsMTcgQEAKICNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgogI2VuZGlmCiAKKy8qIE9uIG1vc3Qgc3lzdGVtcyA8bmV0ZGIuaD4gd291bGQgaGF2ZSBnaXZlbiB1cyB0aGlzLCBidXQKKyAqIG5vdCBvbiBzb21lIHN5c3RlbXMgKGUuZy4gei9PUykuCisgKi8KKyNpZm5kZWYgTklfTUFYSE9TVAorI2RlZmluZSBOSV9NQVhIT1NUIDEwMjUKKyNlbmRpZgorCisjaWZuZGVmIE5JX01BWFNFUlYKKyNkZWZpbmUgTklfTUFYU0VSViAzMgorI2VuZGlmCisKIC8qIE9uIG1vc3Qgc3lzdGVtcyA8bGltaXRzLmg+IHdvdWxkIGhhdmUgZ2l2ZW4gdXMgdGhpcywgYnV0CiAgKiBub3Qgb24gc29tZSBzeXN0ZW1zIChlLmcuIEdOVS9IdXJkKS4KICAqLwpAQCAtMjM4LDYgKzMwMiwxNyBAQAogCiAjaW5jbHVkZSAiY29tcGF0L2Jzd2FwLmgiCiAKKyNpZmRlZiBVU0VfV0lMRE1BVENICisjaW5jbHVkZSAid2lsZG1hdGNoLmgiCisjZGVmaW5lIEZOTV9QQVRITkFNRSBXTV9QQVRITkFNRQorI2RlZmluZSBGTk1fQ0FTRUZPTEQgV01fQ0FTRUZPTEQKKyNkZWZpbmUgRk5NX05PTUFUQ0ggIFdNX05PTUFUQ0gKK3N0YXRpYyBpbmxpbmUgaW50IGZubWF0Y2goY29uc3QgY2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqc3RyaW5nLCBpbnQgZmxhZ3MpCit7CisJcmV0dXJuIHdpbGRtYXRjaChwYXR0ZXJuLCBzdHJpbmcsIGZsYWdzLCBOVUxMKTsKK30KKyNlbmRpZgorCiAvKiBHZW5lcmFsIGhlbHBlciBmdW5jdGlvbnMgKi8KIGV4dGVybiB2b2lkIHZyZXBvcnRmKGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3QgY2hhciAqZXJyLCB2YV9saXN0IHBhcmFtcyk7CiBleHRlcm4gdm9pZCB2d3JpdGVmKGludCBmZCwgY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICplcnIsIHZhX2xpc3QgcGFyYW1zKTsKQEAgLTI0OCw4ICszMjMsMjAgQEAKIGV4dGVybiBpbnQgZXJyb3IoY29uc3QgY2hhciAqZXJyLCAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwogZXh0ZXJuIHZvaWQgd2FybmluZyhjb25zdCBjaGFyICplcnIsIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsIDEsIDIpKSk7CiAKKy8qCisgKiBMZXQgY2FsbGVycyBiZSBhd2FyZSBvZiB0aGUgY29uc3RhbnQgcmV0dXJuIHZhbHVlOyB0aGlzIGNhbiBoZWxwCisgKiBnY2Mgd2l0aCAtV3VuaW5pdGlhbGl6ZWQgYW5hbHlzaXMuIFdlIHJlc3RyaWN0IHRoaXMgdHJpY2sgdG8gZ2NjLCB0aG91Z2gsCisgKiBiZWNhdXNlIHNvbWUgY29tcGlsZXJzIG1heSBub3Qgc3VwcG9ydCB2YXJpYWRpYyBtYWNyb3MuIFNpbmNlIHdlJ3JlIG9ubHkKKyAqIHRyeWluZyB0byBoZWxwIGdjYywgYW55d2F5LCBpdCdzIE9LOyBvdGhlciBjb21waWxlcnMgd2lsbCBmYWxsIGJhY2sgdG8KKyAqIHVzaW5nIHRoZSBmdW5jdGlvbiBhcyB1c3VhbC4KKyAqLworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICEgZGVmaW5lZChfX2NsYW5nX18pCisjZGVmaW5lIGVycm9yKC4uLikgKGVycm9yKF9fVkFfQVJHU19fKSwgLTEpCisjZW5kaWYKKwogZXh0ZXJuIHZvaWQgc2V0X2RpZV9yb3V0aW5lKE5PUkVUVVJOX1BUUiB2b2lkICgqcm91dGluZSkoY29uc3QgY2hhciAqZXJyLCB2YV9saXN0IHBhcmFtcykpOwogZXh0ZXJuIHZvaWQgc2V0X2Vycm9yX3JvdXRpbmUodm9pZCAoKnJvdXRpbmUpKGNvbnN0IGNoYXIgKmVyciwgdmFfbGlzdCBwYXJhbXMpKTsKK2V4dGVybiB2b2lkIHNldF9kaWVfaXNfcmVjdXJzaW5nX3JvdXRpbmUoaW50ICgqcm91dGluZSkodm9pZCkpOwogCiBleHRlcm4gaW50IHByZWZpeGNtcChjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gaW50IHN1ZmZpeGNtcChjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnN1ZmZpeCk7CkBAIC0zNTUsMTEgKzQ0Miw2IEBACiBleHRlcm4gaW50bWF4X3QgZ2l0c3RydG9pbWF4KGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKICNlbmRpZgogCi0jaWZkZWYgTk9fU1RSVE9LX1IKLSNkZWZpbmUgc3RydG9rX3IgZ2l0c3RydG9rX3IKLWV4dGVybiBjaGFyICpnaXRzdHJ0b2tfcihjaGFyICpzLCBjb25zdCBjaGFyICpkZWxpbSwgY2hhciAqKnNhdmVfcHRyKTsKLSNlbmRpZgotCiAjaWZkZWYgTk9fSFNUUkVSUk9SCiAjZGVmaW5lIGhzdHJlcnJvciBnaXRoc3RyZXJyb3IKIGV4dGVybiBjb25zdCBjaGFyICpnaXRoc3RyZXJyb3IoaW50IGhlcnJvcik7CkBAIC0zNzEsNiArNDUzLDEwIEBACiAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqbmVlZGxlLCBzaXplX3QgbmVlZGxlbGVuKTsKICNlbmRpZgogCisjaWZkZWYgTk9fR0VUUEFHRVNJWkUKKyNkZWZpbmUgZ2V0cGFnZXNpemUoKSBzeXNjb25mKF9TQ19QQUdFU0laRSkKKyNlbmRpZgorCiAjaWZkZWYgRlJFQURfUkVBRFNfRElSRUNUT1JJRVMKICNpZmRlZiBmb3BlbgogI3VuZGVmIGZvcGVuCkBAIC00NjYsMjcgKzU1MiwzOSBAQAogI3VuZGVmIGlzZGlnaXQKICN1bmRlZiBpc2FscGhhCiAjdW5kZWYgaXNhbG51bQorI3VuZGVmIGlzcHJpbnQKICN1bmRlZiBpc2xvd2VyCiAjdW5kZWYgaXN1cHBlcgogI3VuZGVmIHRvbG93ZXIKICN1bmRlZiB0b3VwcGVyCi1leHRlcm4gdW5zaWduZWQgY2hhciBzYW5lX2N0eXBlWzI1Nl07CisjdW5kZWYgaXNjbnRybAorI3VuZGVmIGlzcHVuY3QKKyN1bmRlZiBpc3hkaWdpdAorCitleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBzYW5lX2N0eXBlWzI1Nl07CiAjZGVmaW5lIEdJVF9TUEFDRSAweDAxCiAjZGVmaW5lIEdJVF9ESUdJVCAweDAyCiAjZGVmaW5lIEdJVF9BTFBIQSAweDA0CiAjZGVmaW5lIEdJVF9HTE9CX1NQRUNJQUwgMHgwOAogI2RlZmluZSBHSVRfUkVHRVhfU1BFQ0lBTCAweDEwCiAjZGVmaW5lIEdJVF9QQVRIU1BFQ19NQUdJQyAweDIwCisjZGVmaW5lIEdJVF9DTlRSTCAweDQwCisjZGVmaW5lIEdJVF9QVU5DVCAweDgwCiAjZGVmaW5lIHNhbmVfaXN0ZXN0KHgsbWFzaykgKChzYW5lX2N0eXBlWyh1bnNpZ25lZCBjaGFyKSh4KV0gJiAobWFzaykpICE9IDApCiAjZGVmaW5lIGlzYXNjaWkoeCkgKCgoeCkgJiB+MHg3ZikgPT0gMCkKICNkZWZpbmUgaXNzcGFjZSh4KSBzYW5lX2lzdGVzdCh4LEdJVF9TUEFDRSkKICNkZWZpbmUgaXNkaWdpdCh4KSBzYW5lX2lzdGVzdCh4LEdJVF9ESUdJVCkKICNkZWZpbmUgaXNhbHBoYSh4KSBzYW5lX2lzdGVzdCh4LEdJVF9BTFBIQSkKICNkZWZpbmUgaXNhbG51bSh4KSBzYW5lX2lzdGVzdCh4LEdJVF9BTFBIQSB8IEdJVF9ESUdJVCkKKyNkZWZpbmUgaXNwcmludCh4KSAoKHgpID49IDB4MjAgJiYgKHgpIDw9IDB4N2UpCiAjZGVmaW5lIGlzbG93ZXIoeCkgc2FuZV9pc2Nhc2UoeCwgMSkKICNkZWZpbmUgaXN1cHBlcih4KSBzYW5lX2lzY2FzZSh4LCAwKQogI2RlZmluZSBpc19nbG9iX3NwZWNpYWwoeCkgc2FuZV9pc3Rlc3QoeCxHSVRfR0xPQl9TUEVDSUFMKQogI2RlZmluZSBpc19yZWdleF9zcGVjaWFsKHgpIHNhbmVfaXN0ZXN0KHgsR0lUX0dMT0JfU1BFQ0lBTCB8IEdJVF9SRUdFWF9TUEVDSUFMKQorI2RlZmluZSBpc2NudHJsKHgpIChzYW5lX2lzdGVzdCh4LEdJVF9DTlRSTCkpCisjZGVmaW5lIGlzcHVuY3QoeCkgc2FuZV9pc3Rlc3QoeCwgR0lUX1BVTkNUIHwgR0lUX1JFR0VYX1NQRUNJQUwgfCBcCisJCUdJVF9HTE9CX1NQRUNJQUwgfCBHSVRfUEFUSFNQRUNfTUFHSUMpCisjZGVmaW5lIGlzeGRpZ2l0KHgpIChoZXh2YWxfdGFibGVbeF0gIT0gLTEpCiAjZGVmaW5lIHRvbG93ZXIoeCkgc2FuZV9jYXNlKCh1bnNpZ25lZCBjaGFyKSh4KSwgMHgyMCkKICNkZWZpbmUgdG91cHBlcih4KSBzYW5lX2Nhc2UoKHVuc2lnbmVkIGNoYXIpKHgpLCAwKQogI2RlZmluZSBpc19wYXRoc3BlY19tYWdpYyh4KSBzYW5lX2lzdGVzdCh4LEdJVF9QQVRIU1BFQ19NQUdJQykKQEAgLTU5NSw2ICs2OTMsMTcgQEAKICAqLwogaW50IHJlbW92ZV9vcl93YXJuKHVuc2lnbmVkIGludCBtb2RlLCBjb25zdCBjaGFyICpwYXRoKTsKIAorLyoKKyAqIENhbGwgYWNjZXNzKDIpLCBidXQgd2FybiBmb3IgYW55IGVycm9yIGV4Y2VwdCAibWlzc2luZyBmaWxlIgorICogKEVOT0VOVCBvciBFTk9URElSKS4KKyAqLworI2RlZmluZSBBQ0NFU1NfRUFDQ0VTX09LICgxVSA8PCAwKQoraW50IGFjY2Vzc19vcl93YXJuKGNvbnN0IGNoYXIgKnBhdGgsIGludCBtb2RlLCB1bnNpZ25lZCBmbGFnKTsKK2ludCBhY2Nlc3Nfb3JfZGllKGNvbnN0IGNoYXIgKnBhdGgsIGludCBtb2RlLCB1bnNpZ25lZCBmbGFnKTsKKworLyogV2FybiBvbiBhbiBpbmFjY2Vzc2libGUgZmlsZSB0aGF0IG91Z2h0IHRvIGJlIGFjY2Vzc2libGUgKi8KK3ZvaWQgd2Fybl9vbl9pbmFjY2Vzc2libGUoY29uc3QgY2hhciAqcGF0aCk7CisKIC8qIEdldCB0aGUgcGFzc3dkIGVudHJ5IGZvciB0aGUgVUlEIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MuICovCiBzdHJ1Y3QgcGFzc3dkICp4Z2V0cHd1aWRfc2VsZih2b2lkKTsKIApkaWZmIC0tZ2l0IGEvZ2l0LWN2c2V4cG9ydGNvbW1pdC5wZXJsIGIvZ2l0LWN2c2V4cG9ydGNvbW1pdC5wZXJsCmluZGV4IGU2YmYyNTIuLmQxM2YwMmQgMTAwNzU1Ci0tLSBhL2dpdC1jdnNleHBvcnRjb21taXQucGVybAorKysgYi9naXQtY3ZzZXhwb3J0Y29tbWl0LnBlcmwKQEAgLTQyMCw3ICs0MjAsNyBAQAogCiBzdWIgdXNhZ2UgewogCXByaW50IFNUREVSUiA8PEVORDsKLVVzYWdlOiBHSVRfRElSPS9wYXRoL3RvLy5naXQgZ2l0IGN2c2V4cG9ydGNvbW1pdCBbLWhdIFstcF0gWy12XSBbLWNdIFstZl0gWy11XSBbLWtdIFstdyBjdnN3b3JrZGlyXSBbLW0gbXNncHJlZml4XSBbIHBhcmVudCBdIGNvbW1pdAordXNhZ2U6IEdJVF9ESVI9L3BhdGgvdG8vLmdpdCBnaXQgY3ZzZXhwb3J0Y29tbWl0IFstaF0gWy1wXSBbLXZdIFstY10gWy1mXSBbLXVdIFsta10gWy13IGN2c3dvcmtkaXJdIFstbSBtc2dwcmVmaXhdIFsgcGFyZW50IF0gY29tbWl0CiBFTkQKIAlleGl0KDEpOwogfQpkaWZmIC0tZ2l0IGEvZ2l0LWN2c2ltcG9ydC5wZXJsIGIvZ2l0LWN2c2ltcG9ydC5wZXJsCmluZGV4IDhkNDE2MTAuLjczZDM2N2MgMTAwNzU1Ci0tLSBhL2dpdC1jdnNpbXBvcnQucGVybAorKysgYi9naXQtY3ZzaW1wb3J0LnBlcmwKQEAgLTI0LDIwICsyNCwyMSBAQAogdXNlIFRpbWU6OkxvY2FsOwogdXNlIElPOjpTb2NrZXQ7CiB1c2UgSU86OlBpcGU7Ci11c2UgUE9TSVggcXcoc3RyZnRpbWUgZHVwMiBFTk9FTlQpOwordXNlIFBPU0lYIHF3KHN0cmZ0aW1lIHR6c2V0IGR1cDIgRU5PRU5UKTsKIHVzZSBJUEM6Ok9wZW4yOwordXNlIEdpdCBxdyhnZXRfdHpfb2Zmc2V0KTsKIAogJFNJR3snUElQRSd9PSJJR05PUkUiOwotJEVOVnsnVFonfT0iVVRDIjsKK3NldF90aW1lem9uZSgnVVRDJyk7CiAKIG91ciAoJG9wdF9oLCRvcHRfbywkb3B0X3YsJG9wdF9rLCRvcHRfdSwkb3B0X2QsJG9wdF9wLCRvcHRfQywkb3B0X3osJG9wdF9pLCRvcHRfUCwgJG9wdF9zLCRvcHRfbSxAb3B0X00sJG9wdF9BLCRvcHRfUywkb3B0X0wsICRvcHRfYSwgJG9wdF9yLCAkb3B0X1IpOwotbXkgKCVjb252X2F1dGhvcl9uYW1lLCAlY29udl9hdXRob3JfZW1haWwpOworbXkgKCVjb252X2F1dGhvcl9uYW1lLCAlY29udl9hdXRob3JfZW1haWwsICVjb252X2F1dGhvcl90eik7CiAKIHN1YiB1c2FnZSg7JCkgewogCW15ICRtc2cgPSBzaGlmdDsKIAlwcmludChTVERFUlIgIkVycm9yOiAkbXNnXG4iKSBpZiAkbXNnOwogCXByaW50IFNUREVSUiA8PEVORDsKLVVzYWdlOiBnaXQgY3ZzaW1wb3J0ICAgICAjIGZldGNoL3VwZGF0ZSBHSVQgZnJvbSBDVlMKK3VzYWdlOiBnaXQgY3ZzaW1wb3J0ICAgICAjIGZldGNoL3VwZGF0ZSBHSVQgZnJvbSBDVlMKICAgICAgICBbLW8gYnJhbmNoLWZvci1IRUFEXSBbLWhdIFstdl0gWy1kIENWU1JPT1RdIFstQSBhdXRob3ItY29udi1maWxlXQogICAgICAgIFstcCBvcHRzLWZvci1jdnNwc10gWy1QIGZpbGVdIFstQyBHSVRfcmVwb3NpdG9yeV0gWy16IGZ1enpdIFstaV0gWy1rXQogICAgICAgIFstdV0gWy1zIHN1YnN0XSBbLWFdIFstbV0gWy1NIHJlZ2V4XSBbLVMgcmVnZXhdIFstTCBjb21taXRsaW1pdF0KQEAgLTU5LDYgKzYwLDE0IEBACiAJCQkkY29udl9hdXRob3JfbmFtZXskdXNlcn0gPSAkMjsKIAkJCSRjb252X2F1dGhvcl9lbWFpbHskdXNlcn0gPSAkMzsKIAkJfQorCQkjIG9yIHdpdGggYW4gb3B0aW9uYWwgdGltZXpvbmU6CisJCSMgICBzcGF3bj1TaW1vbiBQYXduIDxzcGF3bkBmcm9nLXBvbmQub3JnPiBBbWVyaWNhL0NoaWNhZ28KKwkJZWxzaWYgKG0vXihcUys/KVxzKj1ccyooLis/KVxzKjwoLispPlxzKihcUys/KVxzKiQvKSB7CisJCQkkdXNlciA9ICQxOworCQkJJGNvbnZfYXV0aG9yX25hbWV7JHVzZXJ9ID0gJDI7CisJCQkkY29udl9hdXRob3JfZW1haWx7JHVzZXJ9ID0gJDM7CisJCQkkY29udl9hdXRob3JfdHp7JHVzZXJ9ID0gJDQ7CisJCX0KIAkJIyBIb3dldmVyLCB3ZSBhbHNvIHJlYWQgZnJvbSBDVlNST09UL3VzZXJzIGZvcm1hdAogCQkjIHRvIGVhc2UgbWlncmF0aW9uLgogCQllbHNpZiAoL14oXHcrKTooWyciXT8pKC4rPylcMlxzKiQvKSB7CkBAIC04NCwxMSArOTMsMjIgQEAKIAkgIGRpZSgiRmFpbGVkIHRvIG9wZW4gJGZpbGUgZm9yIHdyaXRpbmc6ICQhIik7CiAKIAlmb3JlYWNoIChrZXlzICVjb252X2F1dGhvcl9uYW1lKSB7Ci0JCXByaW50ICRmICIkXz0kY29udl9hdXRob3JfbmFtZXskX30gPCRjb252X2F1dGhvcl9lbWFpbHskX30+XG4iOworCQlwcmludCAkZiAiJF89JGNvbnZfYXV0aG9yX25hbWV7JF99IDwkY29udl9hdXRob3JfZW1haWx7JF99PiI7CisJCXByaW50ICRmICIgJGNvbnZfYXV0aG9yX3R6eyRffSIgaWYgKCRjb252X2F1dGhvcl90enskX30pOworCQlwcmludCAkZiAiXG4iOwogCX0KIAljbG9zZSAoJGYpOwogfQogCisjIFZlcnNpb25zIG9mIHBlcmwgYmVmb3JlIDUuMTAuMCBtYXkgbm90IGF1dG9tYXRpY2FsbHkgY2hlY2sgJFRaIGVhY2gKKyMgdGltZSBsb2NhbHRpbWUgaXMgcnVuIChtb3N0IHBsYXRmb3JtcyB3aWxsIGRvIHNvIG9ubHkgdGhlIGZpcnN0IHRpbWUpLgorIyBXZSBjYW4gd29yayBhcm91bmQgdGhpcyBieSB1c2luZyB0enNldCgpIHRvIHVwZGF0ZSB0aGUgaW50ZXJuYWwKKyMgdmFyaWFibGUgd2hlbmV2ZXIgd2UgY2hhbmdlIHRoZSBlbnZpcm9ubWVudC4KK3N1YiBzZXRfdGltZXpvbmUgeworCSRFTlZ7VFp9ID0gc2hpZnQ7CisJdHpzZXQoKTsKK30KKwogIyBjb252ZXJ0IGdldG9wdHMgc3BlY3MgZm9yIHVzZSBieSBnaXQgY29uZmlnCiBteSAlbG9uZ21hcCA9ICgKIAknQTonID0+ICdhdXRob3JzLWZpbGUnLApAQCAtNzk1LDcgKzgxNSw3IEBACiAJcmV0dXJuICR0cmVlOwogfQogCi1teSAoJHBhdGNoc2V0LCRkYXRlLCRhdXRob3JfbmFtZSwkYXV0aG9yX2VtYWlsLCRicmFuY2gsJGFuY2VzdG9yLCR0YWcsJGxvZ21zZyk7CitteSAoJHBhdGNoc2V0LCRkYXRlLCRhdXRob3JfbmFtZSwkYXV0aG9yX2VtYWlsLCRhdXRob3JfdHosJGJyYW5jaCwkYW5jZXN0b3IsJHRhZywkbG9nbXNnKTsKIG15IChAb2xkLEBuZXcsQHNraXBwZWQsJWlnbm9yZWJyYW5jaCxAY29tbWl0X3JldmlzaW9ucyk7CiAKICMgY29tbWl0cyB0aGF0IGN2c3BzIGNhbm5vdCBwbGFjZSBhbnl3aGVyZS4uLgpAQCAtODQ0LDcgKzg2NCwxMSBAQAogCQl9CiAJfQogCi0JbXkgJGNvbW1pdF9kYXRlID0gc3RyZnRpbWUoIiswMDAwICVZLSVtLSVkICVIOiVNOiVTIixnbXRpbWUoJGRhdGUpKTsKKwlzZXRfdGltZXpvbmUoJGF1dGhvcl90eik7CisJIyAkZGF0ZSBpcyBpbiB0aGUgc2Vjb25kcyBzaW5jZSBlcG9jaCBmb3JtYXQKKwlteSAkdHpfb2Zmc2V0ID0gZ2V0X3R6X29mZnNldCgkZGF0ZSk7CisJbXkgJGNvbW1pdF9kYXRlID0gIiRkYXRlICR0el9vZmZzZXQiOworCXNldF90aW1lem9uZSgnVVRDJyk7CiAJJEVOVntHSVRfQVVUSE9SX05BTUV9ID0gJGF1dGhvcl9uYW1lOwogCSRFTlZ7R0lUX0FVVEhPUl9FTUFJTH0gPSAkYXV0aG9yX2VtYWlsOwogCSRFTlZ7R0lUX0FVVEhPUl9EQVRFfSA9ICRjb21taXRfZGF0ZTsKQEAgLTg4OSwxMCArOTEzLDM3IEBACiAJCSR4dGFnID1+IHMvXHMrXCpcKi4qJC8vOyAjIFJlbW92ZSBzdHVmZiBsaWtlICoqIElOVkFMSUQgKiogYW5kICoqIEZVTktZICoqCiAJCSR4dGFnID1+IHRyL18vXC4vIGlmICggJG9wdF91ICk7CiAJCSR4dGFnID1+IHMvW1wvXS8kb3B0X3MvZzsKLQkJJHh0YWcgPX4gcy9cWy8vZzsKIAotCQlzeXN0ZW0oJ2dpdCcgLCAndGFnJywgJy1mJywgJHh0YWcsICRjaWQpID09IDAKLQkJCW9yIGRpZSAiQ2Fubm90IGNyZWF0ZSB0YWcgJHh0YWc6ICQhXG4iOworCQkjIFNlZSByZWZzLmMgZm9yIHRoZXNlIHJ1bGVzLgorCQkjIFRhZyBjYW5ub3QgY29udGFpbiBiYWQgY2hhcnMuIChTZWUgYmFkX3JlZl9jaGFyIGluIHJlZnMuYy4pCisJCSR4dGFnID1+IHMvWyB+XF46XFxcKlw/XFtdLy9nOworCQkjIE90aGVyIGJhZCBzdHJpbmdzIGZvciB0YWdzOgorCQkjIChTZWUgY2hlY2tfcmVmbmFtZV9jb21wb25lbnQgaW4gcmVmcy5jLikKKwkJMSB3aGlsZSAkeHRhZyA9fiBzLworCQkJKD86IFwuXC4gICAgICAgICMgVGFnIGNhbm5vdCBjb250YWluICcuLicuCisJCQl8ICAgXEB7ICAgICAgICAgIyBUYWcgY2Fubm90IGNvbnRhaW4gJ0B7Jy4KKwkJCXwgXiAtICAgICAgICAgICAjIFRhZyBjYW5ub3QgYmVnaW4gd2l0aCAnLScuCisJCQl8ICAgXC5sb2NrICQgICAgIyBUYWcgY2Fubm90IGVuZCB3aXRoICcubG9jaycuCisJCQl8IF4gXC4gICAgICAgICAgIyBUYWcgY2Fubm90IGJlZ2luLi4uCisJCQl8ICAgXC4gJCAgICAgICAgIyAuLi5vciBlbmQgd2l0aCAnLicKKwkJCSkvL3hnOworCQkjIFRhZyBjYW5ub3QgYmUgZW1wdHkuCisJCWlmICgkeHRhZyBlcSAnJykgeworCQkJd2Fybigid2FybmluZzogaWdub3JpbmcgdGFnICckdGFnJyIsCisJCQkiIHdpdGggaW52YWxpZCB0YWduYW1lXG4iKTsKKwkJCXJldHVybjsKKwkJfQorCisJCWlmIChzeXN0ZW0oJ2dpdCcgLCAndGFnJywgJy1mJywgJHh0YWcsICRjaWQpICE9IDApIHsKKwkJCSMgV2UgZGlkIG91ciBiZXN0IHRvIHNhbml0aXplIHRoZSB0YWcsIGJ1dCBzdGlsbCBmYWlsZWQKKwkJCSMgZm9yIHdoYXRldmVyIHJlYXNvbi4gQmFpbCBvdXQsIGFuZCBnaXZlIHRoZSB1c2VyCisJCQkjIGVub3VnaCBpbmZvcm1hdGlvbiB0byB1bmRlcnN0YW5kIGlmL2hvdyB3ZSBzaG91bGQKKwkJCSMgaW1wcm92ZSB0aGUgdHJhbnNsYXRpb24gaW4gdGhlIGZ1dHVyZS4KKwkJCWlmICgkdGFnIG5lICR4dGFnKSB7CisJCQkJcHJpbnQgIlRyYW5zbGF0ZWQgJyR0YWcnIHRhZyB0byAnJHh0YWcnXG4iOworCQkJfQorCQkJZGllICJDYW5ub3QgY3JlYXRlIHRhZyAkeHRhZzogJCFcbiI7CisJCX0KIAogCQlwcmludCAiQ3JlYXRlZCB0YWcgJyR4dGFnJyBvbiAnJGJyYW5jaCdcbiIgaWYgJG9wdF92OwogCX0KQEAgLTkxOCwxMiArOTY5LDE0IEBACiAJCX0KIAkJJHN0YXRlPTM7CiAJfSBlbHNpZiAoJHN0YXRlID09IDMgYW5kIHMvXkF1dGhvcjpccysvLykgeworCQkkYXV0aG9yX3R6ID0gIlVUQyI7CiAJCXMvXHMrJC8vOwogCQlpZiAoL14oLio/KVxzKzwoLiopPi8pIHsKIAkJICAgICgkYXV0aG9yX25hbWUsICRhdXRob3JfZW1haWwpID0gKCQxLCAkMik7CiAJCX0gZWxzaWYgKCRjb252X2F1dGhvcl9uYW1leyRffSkgewogCQkJJGF1dGhvcl9uYW1lID0gJGNvbnZfYXV0aG9yX25hbWV7JF99OwogCQkJJGF1dGhvcl9lbWFpbCA9ICRjb252X2F1dGhvcl9lbWFpbHskX307CisJCQkkYXV0aG9yX3R6ID0gJGNvbnZfYXV0aG9yX3R6eyRffSBpZiAoJGNvbnZfYXV0aG9yX3R6eyRffSk7CiAJCX0gZWxzZSB7CiAJCSAgICAkYXV0aG9yX25hbWUgPSAkYXV0aG9yX2VtYWlsID0gJF87CiAJCX0KZGlmZiAtLWdpdCBhL2dpdC1jdnNzZXJ2ZXIucGVybCBiL2dpdC1jdnNzZXJ2ZXIucGVybAppbmRleCBiOGVkZGFiLi5hMGQ3OTZlIDEwMDc1NQotLS0gYS9naXQtY3Zzc2VydmVyLnBlcmwKKysrIGIvZ2l0LWN2c3NlcnZlci5wZXJsCkBAIC01MSwxMSArNTEsMTYgQEAKIAogIyMjIyBEZWZpbml0aW9uIGFuZCBtYXBwaW5ncyBvZiBmdW5jdGlvbnMgIyMjIwogCisjIE5PVEU6IERlc3BpdGUgdGhlIGV4aXN0ZW5jZSBvZiByZXFfQ0FUQ0hBTEwgYW5kIHJlcV9FTVBUWSB1bmltcGxlbWVudGVkCisjICByZXF1ZXN0cywgdGhpcyBsaXN0IGlzIGluY29tcGxldGUuICBJdCBpcyBtaXNzaW5nIG1hbnkgcmFyZXIvb3B0aW9uYWwKKyMgIHJlcXVlc3RzLiAgUGVyaGFwcyBzb21lIGNsaWVudHMgcmVxdWlyZSBhIGNsYWltIG9mIHN1cHBvcnQgZm9yCisjICB0aGVzZSBzcGVjaWZpYyByZXF1ZXN0cyBmb3IgbWFpbiBmdW5jdGlvbmFsaXR5IHRvIHdvcms/CiBteSAkbWV0aG9kcyA9IHsKICAgICAnUm9vdCcgICAgICAgICAgICA9PiBcJnJlcV9Sb290LAogICAgICdWYWxpZC1yZXNwb25zZXMnID0+IFwmcmVxX1ZhbGlkcmVzcG9uc2VzLAogICAgICd2YWxpZC1yZXF1ZXN0cycgID0+IFwmcmVxX3ZhbGlkcmVxdWVzdHMsCiAgICAgJ0RpcmVjdG9yeScgICAgICAgPT4gXCZyZXFfRGlyZWN0b3J5LAorICAgICdTdGlja3knICAgICAgICAgID0+IFwmcmVxX1N0aWNreSwKICAgICAnRW50cnknICAgICAgICAgICA9PiBcJnJlcV9FbnRyeSwKICAgICAnTW9kaWZpZWQnICAgICAgICA9PiBcJnJlcV9Nb2RpZmllZCwKICAgICAnVW5jaGFuZ2VkJyAgICAgICA9PiBcJnJlcV9VbmNoYW5nZWQsCkBAIC04MCw3ICs4NSw2IEBACiAgICAgJ25vb3AnICAgICAgICAgICAgPT4gXCZyZXFfRU1QVFksCiAgICAgJ2Fubm90YXRlJyAgICAgICAgPT4gXCZyZXFfYW5ub3RhdGUsCiAgICAgJ0dsb2JhbF9vcHRpb24nICAgPT4gXCZyZXFfR2xvYmFsb3B0aW9uLAotICAgICMnYW5ub3RhdGUnICAgICAgICA9PiBcJnJlcV9DQVRDSEFMTCwKIH07CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTEwMyw3ICsxMDcsNyBAQAogJGxvZy0+aW5mbygiLS0tLS0tLS0tLS0tLS0tIFNUQVJUSU5HIC0tLS0tLS0tLS0tLS0tLS0tIik7CiAKIG15ICR1c2FnZSA9Ci0gICAgIlVzYWdlOiBnaXQgY3Zzc2VydmVyIFtvcHRpb25zXSBbcHNlcnZlcnxzZXJ2ZXJdIFs8ZGlyZWN0b3J5PiAuLi5dXG4iLgorICAgICJ1c2FnZTogZ2l0IGN2c3NlcnZlciBbb3B0aW9uc10gW3BzZXJ2ZXJ8c2VydmVyXSBbPGRpcmVjdG9yeT4gLi4uXVxuIi4KICAgICAiICAgIC0tYmFzZS1wYXRoIDxwYXRoPiAgOiBQcmVwZW5kIHRvIHJlcXVlc3RlZCBDVlNST09UXG4iLgogICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgIENhbiBiZSByZWFkIGZyb20gR0lUX0NWU1NFUlZFUl9CQVNFX1BBVEhcbiIuCiAgICAgIiAgICAtLXN0cmljdC1wYXRocyAgICAgIDogRG9uJ3QgYWxsb3cgcmVjdXJzaW5nIGludG8gc3ViZGlyZWN0b3JpZXNcbiIuCkBAIC00NjcsMTEgKzQ3MSwxOSBAQAogICAgIHsKICAgICAgICAgJGxvZy0+aW5mbygiU2V0dGluZyBwcmVwZW5kIHRvICckc3RhdGUtPntwYXRofSciKTsKICAgICAgICAgJHN0YXRlLT57cHJlcGVuZGRpcn0gPSAkc3RhdGUtPntwYXRofTsKKyAgICAgICAgbXkgJWVudHJpZXM7CiAgICAgICAgIGZvcmVhY2ggbXkgJGVudHJ5ICgga2V5cyAleyRzdGF0ZS0+e2VudHJpZXN9fSApCiAgICAgICAgIHsKLSAgICAgICAgICAgICRzdGF0ZS0+e2VudHJpZXN9eyRzdGF0ZS0+e3ByZXBlbmRkaXJ9IC4gJGVudHJ5fSA9ICRzdGF0ZS0+e2VudHJpZXN9eyRlbnRyeX07Ci0gICAgICAgICAgICBkZWxldGUgJHN0YXRlLT57ZW50cmllc317JGVudHJ5fTsKKyAgICAgICAgICAgICRlbnRyaWVzeyRzdGF0ZS0+e3ByZXBlbmRkaXJ9IC4gJGVudHJ5fSA9ICRzdGF0ZS0+e2VudHJpZXN9eyRlbnRyeX07CiAgICAgICAgIH0KKyAgICAgICAgJHN0YXRlLT57ZW50cmllc309XCVlbnRyaWVzOworCisgICAgICAgIG15ICVkaXJNYXA7CisgICAgICAgIGZvcmVhY2ggbXkgJGRpciAoIGtleXMgJXskc3RhdGUtPntkaXJNYXB9fSApCisgICAgICAgIHsKKyAgICAgICAgICAgICRkaXJNYXB7JHN0YXRlLT57cHJlcGVuZGRpcn0gLiAkZGlyfSA9ICRzdGF0ZS0+e2Rpck1hcH17JGRpcn07CisgICAgICAgIH0KKyAgICAgICAgJHN0YXRlLT57ZGlyTWFwfT1cJWRpck1hcDsKICAgICB9CiAKICAgICBpZiAoIGRlZmluZWQgKCAkc3RhdGUtPntwcmVwZW5kZGlyfSApICkKQEAgLTQ3OSw5ICs0OTEsNjAgQEAKICAgICAgICAgJGxvZy0+ZGVidWcoIlByZXBlbmRpbmcgJyRzdGF0ZS0+e3ByZXBlbmRkaXJ9JyB0byBzdGF0ZXxkaXJlY3RvcnkiKTsKICAgICAgICAgJHN0YXRlLT57ZGlyZWN0b3J5fSA9ICRzdGF0ZS0+e3ByZXBlbmRkaXJ9IC4gJHN0YXRlLT57ZGlyZWN0b3J5fQogICAgIH0KKworICAgIGlmICggISBkZWZpbmVkKCRzdGF0ZS0+e2Rpck1hcH17JHN0YXRlLT57ZGlyZWN0b3J5fX0pICkKKyAgICB7CisgICAgICAgICRzdGF0ZS0+e2Rpck1hcH17JHN0YXRlLT57ZGlyZWN0b3J5fX0gPQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICduYW1lcycgPT4ge30KKyAgICAgICAgICAgICAgICAjJ3RhZ3NwZWMnID0+IHVuZGVmCisgICAgICAgICAgICB9OworICAgIH0KKwogICAgICRsb2ctPmRlYnVnKCJyZXFfRGlyZWN0b3J5IDogbG9jYWxkaXI9JGRhdGEgcmVwb3NpdG9yeT0kcmVwb3NpdG9yeSBwYXRoPSRzdGF0ZS0+e3BhdGh9IGRpcmVjdG9yeT0kc3RhdGUtPntkaXJlY3Rvcnl9IG1vZHVsZT0kc3RhdGUtPnttb2R1bGV9Iik7CiB9CiAKKyMgU3RpY2t5IHRhZ3NwZWMgXG4KKyMgICAgIFJlc3BvbnNlIGV4cGVjdGVkOiBuby4gVGVsbCB0aGUgc2VydmVyIHRoYXQgdGhlIGRpcmVjdG9yeSBtb3N0CisjICAgICByZWNlbnRseSBzcGVjaWZpZWQgd2l0aCBEaXJlY3RvcnkgaGFzIGEgc3RpY2t5IHRhZyBvciBkYXRlCisjICAgICB0YWdzcGVjLiBUaGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRhZ3NwZWMgaXMgVCBmb3IgYSB0YWcsIEQgZm9yCisjICAgICBhIGRhdGUsIG9yIHNvbWUgb3RoZXIgY2hhcmFjdGVyIHN1cHBsaWVkIGJ5IGEgU2V0LXN0aWNreQorIyAgICAgcmVzcG9uc2UgZnJvbSBhIHByZXZpb3VzIHJlcXVlc3QgdG8gdGhlIHNlcnZlci4gVGhlIHJlbWFpbmRlcgorIyAgICAgb2YgdGFnc3BlYyBjb250YWlucyB0aGUgYWN0dWFsIHRhZyBvciBkYXRlLCBhZ2FpbiBhcyBzdXBwbGllZAorIyAgICAgYnkgU2V0LXN0aWNreS4KKyMgICAgICAgICAgVGhlIHNlcnZlciBzaG91bGQgcmVtZW1iZXIgU3RhdGljLWRpcmVjdG9yeSBhbmQgU3RpY2t5IHJlcXVlc3RzCisjICAgICBmb3IgYSBwYXJ0aWN1bGFyIGRpcmVjdG9yeTsgdGhlIGNsaWVudCBuZWVkIG5vdCByZXNlbmQgdGhlbSBlYWNoCisjICAgICB0aW1lIGl0IHNlbmRzIGEgRGlyZWN0b3J5IHJlcXVlc3QgZm9yIGEgZ2l2ZW4gZGlyZWN0b3J5LiBIb3dldmVyLAorIyAgICAgdGhlIHNlcnZlciBpcyBub3Qgb2JsaWdlZCB0byByZW1lbWJlciB0aGVtIGJleW9uZCB0aGUgY29udGV4dAorIyAgICAgb2YgYSBzaW5nbGUgY29tbWFuZC4KK3N1YiByZXFfU3RpY2t5Cit7CisgICAgbXkgKCAkY21kLCAkdGFnc3BlYyApID0gQF87CisKKyAgICBteSAoICRzdGlja3lJbmZvICk7CisgICAgaWYoJHRhZ3NwZWMgZXEgIiIpCisgICAgeworICAgICAgICAjIG5vdGhpbmcKKyAgICB9CisgICAgZWxzaWYoJHRhZ3NwZWM9fi9eVChbXiBdKylccyokLykKKyAgICB7CisgICAgICAgICRzdGlja3lJbmZvID0geyAndGFnJyA9PiAkMSB9OworICAgIH0KKyAgICBlbHNpZigkdGFnc3BlYz1+L15EKFswLTkuXSspXHMqJC8pCisgICAgeworICAgICAgICAkc3RpY2t5SW5mbz0geyAnZGF0ZScgPT4gJDEgfTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZGllICJVbmtub3duIHRhZ19vcl9kYXRlIGZvcm1hdFxuIjsKKyAgICB9CisgICAgJHN0YXRlLT57ZGlyTWFwfXskc3RhdGUtPntkaXJlY3Rvcnl9fXtzdGlja3lJbmZvfT0kc3RpY2t5SW5mbzsKKworICAgICRsb2ctPmRlYnVnKCJyZXFfU3RpY2t5IDogdGFnc3BlYz0kdGFnc3BlYyByZXBvc2l0b3J5PSRzdGF0ZS0+e3JlcG9zaXRvcnl9IgorICAgICAgICAgICAgICAgIC4gIiBwYXRoPSRzdGF0ZS0+e3BhdGh9IGRpcmVjdG9yeT0kc3RhdGUtPntkaXJlY3Rvcnl9IgorICAgICAgICAgICAgICAgIC4gIiBtb2R1bGU9JHN0YXRlLT57bW9kdWxlfSIpOworfQorCiAjIEVudHJ5IGVudHJ5LWxpbmUgXG4KICMgICAgIFJlc3BvbnNlIGV4cGVjdGVkOiBuby4gVGVsbCB0aGUgc2VydmVyIHdoYXQgdmVyc2lvbiBvZiBhIGZpbGUgaXMgb24gdGhlCiAjICAgICBsb2NhbCBtYWNoaW5lLiBUaGUgbmFtZSBpbiBlbnRyeS1saW5lIGlzIGEgbmFtZSByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5CkBAIC00OTksNyArNTYyLDcgQEAKIAogICAgICMkbG9nLT5kZWJ1ZygicmVxX0VudHJ5IDogJGRhdGEiKTsKIAotICAgIG15IEBkYXRhID0gc3BsaXQoL1wvLywgJGRhdGEpOworICAgIG15IEBkYXRhID0gc3BsaXQoL1wvLywgJGRhdGEsIC0xKTsKIAogICAgICRzdGF0ZS0+e2VudHJpZXN9eyRzdGF0ZS0+e2RpcmVjdG9yeX0uJGRhdGFbMV19ID0gewogICAgICAgICByZXZpc2lvbiAgICA9PiAkZGF0YVsyXSwKQEAgLTUwOCw2ICs1NzEsOCBAQAogICAgICAgICB0YWdfb3JfZGF0ZSA9PiAkZGF0YVs1XSwKICAgICB9OwogCisgICAgJHN0YXRlLT57ZGlyTWFwfXskc3RhdGUtPntkaXJlY3Rvcnl9fXtuYW1lc317JGRhdGFbMV19ID0gJ0YnOworCiAgICAgJGxvZy0+aW5mbygiUmVjZWl2ZWQgZW50cnkgbGluZSAnJGRhdGEnID0+ICciIC4gJHN0YXRlLT57ZGlyZWN0b3J5fSAuICRkYXRhWzFdIC4gIiciKTsKIH0KIApAQCAtNTQwLDIxICs2MDUsMjIgQEAKICAgICBteSAkdXBkYXRlciA9IEdJVENWUzo6dXBkYXRlci0+bmV3KCRzdGF0ZS0+e0NWU1JPT1R9LCAkc3RhdGUtPnttb2R1bGV9LCAkbG9nKTsKICAgICAkdXBkYXRlci0+dXBkYXRlKCk7CiAKLSAgICBhcmdzZnJvbWRpcigkdXBkYXRlcik7Ci0KICAgICBteSAkYWRkY291bnQgPSAwOwogCiAgICAgZm9yZWFjaCBteSAkZmlsZW5hbWUgKCBAeyRzdGF0ZS0+e2FyZ3N9fSApCiAgICAgewogICAgICAgICAkZmlsZW5hbWUgPSBmaWxlY2xlYW51cCgkZmlsZW5hbWUpOwogCi0gICAgICAgIG15ICRtZXRhID0gJHVwZGF0ZXItPmdldG1ldGEoJGZpbGVuYW1lKTsKKyAgICAgICAgIyBubyAtciwgLUEsIG9yIC1EIHdpdGggYWRkCisgICAgICAgIG15ICRzdGlja3lJbmZvID0gcmVzb2x2ZVN0aWNreUluZm8oJGZpbGVuYW1lKTsKKworICAgICAgICBteSAkbWV0YSA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSwkc3RpY2t5SW5mbyk7CiAgICAgICAgIG15ICR3cmV2ID0gcmV2cGFyc2UoJGZpbGVuYW1lKTsKIAotICAgICAgICBpZiAoJHdyZXYgJiYgJG1ldGEgJiYgKCR3cmV2IDwgMCkpCisgICAgICAgIGlmICgkd3JldiAmJiAkbWV0YSAmJiAoJHdyZXY9fi9eLS8pKQogICAgICAgICB7CiAgICAgICAgICAgICAjIHByZXZpb3VzbHkgcmVtb3ZlZCBmaWxlLCBhZGQgYmFjawotICAgICAgICAgICAgJGxvZy0+aW5mbygiYWRkZWQgZmlsZSAkZmlsZW5hbWUgd2FzIHByZXZpb3VzbHkgcmVtb3ZlZCwgc2VuZCAxLiRtZXRhLT57cmV2aXNpb259Iik7CisgICAgICAgICAgICAkbG9nLT5pbmZvKCJhZGRlZCBmaWxlICRmaWxlbmFtZSB3YXMgcHJldmlvdXNseSByZW1vdmVkLCBzZW5kICRtZXRhLT57cmV2aXNpb259Iik7CiAKICAgICAgICAgICAgIHByaW50ICJNVCArdXBkYXRlZFxuIjsKICAgICAgICAgICAgIHByaW50ICJNVCB0ZXh0IFUgXG4iOwpAQCAtNTcxLDggKzYzNywxMCBAQAogCiAgICAgICAgICAgICAgICAgIyB0aGlzIGlzIGFuICJlbnRyaWVzIiBsaW5lCiAgICAgICAgICAgICAgICAgbXkgJGtvcHRzID0ga29wdHNfZnJvbV9wYXRoKCRmaWxlbmFtZSwic2hhMSIsJG1ldGEtPntmaWxlaGFzaH0pOwotICAgICAgICAgICAgICAgICRsb2ctPmRlYnVnKCIvJGZpbGVwYXJ0LzEuJG1ldGEtPntyZXZpc2lvbn0vLyRrb3B0cy8iKTsKLSAgICAgICAgICAgICAgICBwcmludCAiLyRmaWxlcGFydC8xLiRtZXRhLT57cmV2aXNpb259Ly8ka29wdHMvXG4iOworICAgICAgICAgICAgICAgIG15ICRlbnRyeUxpbmUgPSAiLyRmaWxlcGFydC8kbWV0YS0+e3JldmlzaW9ufS8vJGtvcHRzLyI7CisgICAgICAgICAgICAgICAgJGVudHJ5TGluZSAuPSBnZXRTdGlja3lUYWdPckRhdGUoJHN0aWNreUluZm8pOworICAgICAgICAgICAgICAgICRsb2ctPmRlYnVnKCRlbnRyeUxpbmUpOworICAgICAgICAgICAgICAgIHByaW50ICIkZW50cnlMaW5lXG4iOwogICAgICAgICAgICAgICAgICMgcGVybWlzc2lvbnMKICAgICAgICAgICAgICAgICAkbG9nLT5kZWJ1ZygiU0VORCA6IHU9JG1ldGEtPnttb2RlfSxnPSRtZXRhLT57bW9kZX0sbz0kbWV0YS0+e21vZGV9Iik7CiAgICAgICAgICAgICAgICAgcHJpbnQgInU9JG1ldGEtPnttb2RlfSxnPSRtZXRhLT57bW9kZX0sbz0kbWV0YS0+e21vZGV9XG4iOwpAQCAtNjAzLDcgKzY3MSw4IEBACiAgICAgICAgIHByaW50ICIkZmlsZW5hbWVcbiI7CiAgICAgICAgIG15ICRrb3B0cyA9IGtvcHRzX2Zyb21fcGF0aCgkZmlsZW5hbWUsImZpbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXttb2RpZmllZF9maWxlbmFtZX0pOwotICAgICAgICBwcmludCAiLyRmaWxlcGFydC8wLy8ka29wdHMvXG4iOworICAgICAgICBwcmludCAiLyRmaWxlcGFydC8wLy8ka29wdHMvIiAuCisgICAgICAgICAgICAgIGdldFN0aWNreVRhZ09yRGF0ZSgkc3RpY2t5SW5mbykgLiAiXG4iOwogCiAgICAgICAgIG15ICRyZXF1ZXN0ZWRLb3B0cyA9ICRzdGF0ZS0+e29wdH17a307CiAgICAgICAgIGlmKGRlZmluZWQoJHJlcXVlc3RlZEtvcHRzKSkKQEAgLTY3MSw3ICs3NDAsMTAgQEAKICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgIH0KIAotICAgICAgICBteSAkbWV0YSA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSk7CisgICAgICAgICMgb25seSBmcm9tIGVudHJpZXMKKyAgICAgICAgbXkgJHN0aWNreUluZm8gPSByZXNvbHZlU3RpY2t5SW5mbygkZmlsZW5hbWUpOworCisgICAgICAgIG15ICRtZXRhID0gJHVwZGF0ZXItPmdldG1ldGEoJGZpbGVuYW1lLCRzdGlja3lJbmZvKTsKICAgICAgICAgbXkgJHdyZXYgPSByZXZwYXJzZSgkZmlsZW5hbWUpOwogCiAgICAgICAgIHVubGVzcyAoIGRlZmluZWQgKCAkd3JldiApICkKQEAgLTY4MCwxMyArNzUyLDEzIEBACiAgICAgICAgICAgICBuZXh0OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCBkZWZpbmVkKCR3cmV2KSBhbmQgJHdyZXYgPCAwICkKKyAgICAgICAgaWYgKCBkZWZpbmVkKCR3cmV2KSBhbmQgKCR3cmV2PX4vXi0vKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIHByaW50ICJFIGN2cyByZW1vdmU6IGZpbGUgYCRmaWxlbmFtZScgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIHJlbW92YWxcbiI7CiAgICAgICAgICAgICBuZXh0OwogICAgICAgICB9CiAKLSAgICAgICAgdW5sZXNzICggJHdyZXYgPT0gJG1ldGEtPntyZXZpc2lvbn0gKQorICAgICAgICB1bmxlc3MgKCAkd3JldiBlcSAkbWV0YS0+e3JldmlzaW9ufSApCiAgICAgICAgIHsKICAgICAgICAgICAgICMgVE9ETyA6IG5vdCBzdXJlIGlmIHRoZSBmb3JtYXQgb2YgdGhpcyBtZXNzYWdlIGlzIHF1aXRlIGNvcnJlY3QuCiAgICAgICAgICAgICBwcmludCAiRSBjdnMgcmVtb3ZlOiBVcCB0byBkYXRlIGNoZWNrIGZhaWxlZCBmb3IgYCRmaWxlbmFtZSdcbiI7CkBAIC03MDEsNyArNzczLDcgQEAKICAgICAgICAgcHJpbnQgIkNoZWNrZWQtaW4gJGRpcnBhcnRcbiI7CiAgICAgICAgIHByaW50ICIkZmlsZW5hbWVcbiI7CiAgICAgICAgIG15ICRrb3B0cyA9IGtvcHRzX2Zyb21fcGF0aCgkZmlsZW5hbWUsInNoYTEiLCRtZXRhLT57ZmlsZWhhc2h9KTsKLSAgICAgICAgcHJpbnQgIi8kZmlsZXBhcnQvLTEuJHdyZXYvLyRrb3B0cy9cbiI7CisgICAgICAgIHByaW50ICIvJGZpbGVwYXJ0Ly0kd3Jldi8vJGtvcHRzLyIgLiBnZXRTdGlja3lUYWdPckRhdGUoJHN0aWNreUluZm8pIC4gIlxuIjsKIAogICAgICAgICAkcm1jb3VudCsrOwogICAgIH0KQEAgLTg4MSw2ICs5NTMsOSBAQAogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKKyAgICBteSAkc3RpY2t5SW5mbyA9IHsgJ3RhZycgPT4gJHN0YXRlLT57b3B0fXtyfSwKKyAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGUnID0+ICRzdGF0ZS0+e29wdH17RH0gfTsKKwogICAgIG15ICRtb2R1bGUgPSAkc3RhdGUtPnthcmdzfVswXTsKICAgICAkc3RhdGUtPnttb2R1bGV9ID0gJG1vZHVsZTsKICAgICBteSAkY2hlY2tvdXRfcGF0aCA9ICRtb2R1bGU7CkBAIC04OTgsNjQgKzk3MywzMiBAQAogICAgIG15ICR1cGRhdGVyID0gR0lUQ1ZTOjp1cGRhdGVyLT5uZXcoJHN0YXRlLT57Q1ZTUk9PVH0sICRtb2R1bGUsICRsb2cpOwogICAgICR1cGRhdGVyLT51cGRhdGUoKTsKIAorICAgIG15ICRoZWFkSGFzaDsKKyAgICBpZiggZGVmaW5lZCgkc3RpY2t5SW5mbykgJiYgZGVmaW5lZCgkc3RpY2t5SW5mby0+e3RhZ30pICkKKyAgICB7CisgICAgICAgICRoZWFkSGFzaCA9ICR1cGRhdGVyLT5sb29rdXBDb21taXRSZWYoJHN0aWNreUluZm8tPnt0YWd9KTsKKyAgICAgICAgaWYoICFkZWZpbmVkKCRoZWFkSGFzaCkgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludCAiZXJyb3IgMSBubyBzdWNoIHRhZyBgJHN0aWNreUluZm8tPnt0YWd9J1xuIjsKKyAgICAgICAgICAgIGNsZWFudXBXb3JrVHJlZSgpOworICAgICAgICAgICAgZXhpdDsKKyAgICAgICAgfQorICAgIH0KKwogICAgICRjaGVja291dF9wYXRoID1+IHN8LyR8fDsgIyBnZXQgcmlkIG9mIHRyYWlsaW5nIHNsYXNoZXMKIAotICAgICMgRWNsaXBzZSBzZWVtcyB0byBuZWVkIHRoZSBDbGVhci1zdGlja3kgY29tbWFuZAotICAgICMgdG8gcHJlcGFyZSB0aGUgJ0VudHJpZXMnIGZpbGUgZm9yIHRoZSBuZXcgZGlyZWN0b3J5LgotICAgIHByaW50ICJDbGVhci1zdGlja3kgJGNoZWNrb3V0X3BhdGgvXG4iOwotICAgIHByaW50ICRzdGF0ZS0+e0NWU1JPT1R9IC4gIi8kbW9kdWxlL1xuIjsKLSAgICBwcmludCAiQ2xlYXItc3RhdGljLWRpcmVjdG9yeSAkY2hlY2tvdXRfcGF0aC9cbiI7Ci0gICAgcHJpbnQgJHN0YXRlLT57Q1ZTUk9PVH0gLiAiLyRtb2R1bGUvXG4iOwotICAgIHByaW50ICJDbGVhci1zdGlja3kgJGNoZWNrb3V0X3BhdGgvXG4iOyAjIHllcywgdHdpY2UKLSAgICBwcmludCAkc3RhdGUtPntDVlNST09UfSAuICIvJG1vZHVsZS9cbiI7Ci0gICAgcHJpbnQgIlRlbXBsYXRlICRjaGVja291dF9wYXRoL1xuIjsKLSAgICBwcmludCAkc3RhdGUtPntDVlNST09UfSAuICIvJG1vZHVsZS9cbiI7Ci0gICAgcHJpbnQgIjBcbiI7Ci0KLSAgICAjIGluc3RydWN0IHRoZSBjbGllbnQgdGhhdCB3ZSdyZSBjaGVja2luZyBvdXQgdG8gJGNoZWNrb3V0X3BhdGgKLSAgICBwcmludCAiRSBjdnMgY2hlY2tvdXQ6IFVwZGF0aW5nICRjaGVja291dF9wYXRoXG4iOwotCiAgICAgbXkgJXNlZW5kaXJzID0gKCk7CiAgICAgbXkgJGxhc3RkaXIgPScnOwogCi0gICAgIyByZWN1cnNpdmUKLSAgICBzdWIgcHJlcGRpciB7Ci0gICAgICAgbXkgKCRkaXIsICRyZXBvZGlyLCAkcmVtb3RlZGlyLCAkc2VlbmRpcnMpID0gQF87Ci0gICAgICAgbXkgJHBhcmVudCA9IGRpcm5hbWUoJGRpcik7Ci0gICAgICAgJGRpciAgICAgICA9fiBzfC8rJHx8OwotICAgICAgICRyZXBvZGlyICAgPX4gc3wvKyR8fDsKLSAgICAgICAkcmVtb3RlZGlyID1+IHN8LyskfHw7Ci0gICAgICAgJHBhcmVudCAgICA9fiBzfC8rJHx8OwotICAgICAgICRsb2ctPmRlYnVnKCJhbm5vdW5jZWRpciAkZGlyLCAkcmVwb2RpciwgJHJlbW90ZWRpciIgKTsKKyAgICBwcmVwRGlyRm9yT3V0cHV0KAorICAgICAgICAgICAgIi4iLAorICAgICAgICAgICAgJHN0YXRlLT57Q1ZTUk9PVH0gLiAiLyRtb2R1bGUiLAorICAgICAgICAgICAgJGNoZWNrb3V0X3BhdGgsCisgICAgICAgICAgICBcJXNlZW5kaXJzLAorICAgICAgICAgICAgJ2NoZWNrb3V0JywKKyAgICAgICAgICAgICRzdGF0ZS0+e2RpckFyZ3N9ICk7CiAKLSAgICAgICBpZiAoJHBhcmVudCBlcSAnLicgfHwgJHBhcmVudCBlcSAnLi8nKSB7Ci0gICAgICAgICAgICRwYXJlbnQgPSAnJzsKLSAgICAgICB9Ci0gICAgICAgIyByZWN1cnNlIHRvIGFubm91bmNlIHVuc2VlbiBwYXJlbnRzIGZpcnN0Ci0gICAgICAgaWYgKGxlbmd0aCgkcGFyZW50KSAmJiAhZXhpc3RzKCRzZWVuZGlycy0+eyRwYXJlbnR9KSkgewotICAgICAgICAgICBwcmVwZGlyKCRwYXJlbnQsICRyZXBvZGlyLCAkcmVtb3RlZGlyLCAkc2VlbmRpcnMpOwotICAgICAgIH0KLSAgICAgICAjIEFubm91bmNlIHRoYXQgd2UgYXJlIGdvaW5nIHRvIG1vZGlmeSBhdCB0aGUgcGFyZW50IGxldmVsCi0gICAgICAgaWYgKCRwYXJlbnQpIHsKLSAgICAgICAgICAgcHJpbnQgIkUgY3ZzIGNoZWNrb3V0OiBVcGRhdGluZyAkcmVtb3RlZGlyLyRwYXJlbnRcbiI7Ci0gICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgcHJpbnQgIkUgY3ZzIGNoZWNrb3V0OiBVcGRhdGluZyAkcmVtb3RlZGlyXG4iOwotICAgICAgIH0KLSAgICAgICBwcmludCAiQ2xlYXItc3RpY2t5ICRyZW1vdGVkaXIvJHBhcmVudC9cbiI7Ci0gICAgICAgcHJpbnQgIiRyZXBvZGlyLyRwYXJlbnQvXG4iOwotCi0gICAgICAgcHJpbnQgIkNsZWFyLXN0YXRpYy1kaXJlY3RvcnkgJHJlbW90ZWRpci8kZGlyL1xuIjsKLSAgICAgICBwcmludCAiJHJlcG9kaXIvJGRpci9cbiI7Ci0gICAgICAgcHJpbnQgIkNsZWFyLXN0aWNreSAkcmVtb3RlZGlyLyRwYXJlbnQvXG4iOyAjIHllcywgdHdpY2UKLSAgICAgICBwcmludCAiJHJlcG9kaXIvJHBhcmVudC9cbiI7Ci0gICAgICAgcHJpbnQgIlRlbXBsYXRlICRyZW1vdGVkaXIvJGRpci9cbiI7Ci0gICAgICAgcHJpbnQgIiRyZXBvZGlyLyRkaXIvXG4iOwotICAgICAgIHByaW50ICIwXG4iOwotCi0gICAgICAgJHNlZW5kaXJzLT57JGRpcn0gPSAxOwotICAgIH0KLQotICAgIGZvcmVhY2ggbXkgJGdpdCAoIEB7JHVwZGF0ZXItPmdldGhlYWR9ICkKKyAgICBmb3JlYWNoIG15ICRnaXQgKCBAeyR1cGRhdGVyLT5nZXRBbnlIZWFkKCRoZWFkSGFzaCl9ICkKICAgICB7CiAgICAgICAgICMgRG9uJ3Qgd2FudCB0byBjaGVjayBvdXQgZGVsZXRlZCBmaWxlcwogICAgICAgICBuZXh0IGlmICggJGdpdC0+e2ZpbGVoYXNofSBlcSAiZGVsZXRlZCIgKTsKQEAgLTk2MywxNiArMTAwNiwxMyBAQAogICAgICAgICBteSAkZnVsbE5hbWUgPSAkZ2l0LT57bmFtZX07CiAgICAgICAgICggJGdpdC0+e25hbWV9LCAkZ2l0LT57ZGlyfSApID0gZmlsZW5hbWVzcGxpdCgkZ2l0LT57bmFtZX0pOwogCi0gICAgICAgaWYgKGxlbmd0aCgkZ2l0LT57ZGlyfSkgJiYgJGdpdC0+e2Rpcn0gbmUgJy4vJwotICAgICAgICAgICAmJiAkZ2l0LT57ZGlyfSBuZSAkbGFzdGRpciApIHsKLSAgICAgICAgICAgdW5sZXNzIChleGlzdHMoJHNlZW5kaXJzeyRnaXQtPntkaXJ9fSkpIHsKLSAgICAgICAgICAgICAgIHByZXBkaXIoJGdpdC0+e2Rpcn0sICRzdGF0ZS0+e0NWU1JPT1R9IC4gIi8kbW9kdWxlLyIsCi0gICAgICAgICAgICAgICAgICAgICAgICRjaGVja291dF9wYXRoLCBcJXNlZW5kaXJzKTsKLSAgICAgICAgICAgICAgICRsYXN0ZGlyID0gJGdpdC0+e2Rpcn07Ci0gICAgICAgICAgICAgICAkc2VlbmRpcnN7JGdpdC0+e2Rpcn19ID0gMTsKLSAgICAgICAgICAgfQotICAgICAgICAgICBwcmludCAiRSBjdnMgY2hlY2tvdXQ6IFVwZGF0aW5nIC8kY2hlY2tvdXRfcGF0aC8kZ2l0LT57ZGlyfVxuIjsKLSAgICAgICB9CisgICAgICAgIHVubGVzcyAoZXhpc3RzKCRzZWVuZGlyc3skZ2l0LT57ZGlyfX0pKSB7CisgICAgICAgICAgICBwcmVwRGlyRm9yT3V0cHV0KCRnaXQtPntkaXJ9LCAkc3RhdGUtPntDVlNST09UfSAuICIvJG1vZHVsZS8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2hlY2tvdXRfcGF0aCwgXCVzZWVuZGlycywgJ2NoZWNrb3V0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlLT57ZGlyQXJnc30gKTsKKyAgICAgICAgICAgICRsYXN0ZGlyID0gJGdpdC0+e2Rpcn07CisgICAgICAgICAgICAkc2VlbmRpcnN7JGdpdC0+e2Rpcn19ID0gMTsKKyAgICAgICAgfQogCiAgICAgICAgICMgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhpcyBmaWxlCiAgICAgICAgIHByaW50ICJNb2QtdGltZSAkZ2l0LT57bW9kaWZpZWR9XG4iOwpAQCAtOTkyLDcgKzEwMzIsOCBAQAogCiAgICAgICAgICMgdGhpcyBpcyBhbiAiZW50cmllcyIgbGluZQogICAgICAgICBteSAka29wdHMgPSBrb3B0c19mcm9tX3BhdGgoJGZ1bGxOYW1lLCJzaGExIiwkZ2l0LT57ZmlsZWhhc2h9KTsKLSAgICAgICAgcHJpbnQgIi8kZ2l0LT57bmFtZX0vMS4kZ2l0LT57cmV2aXNpb259Ly8ka29wdHMvXG4iOworICAgICAgICBwcmludCAiLyRnaXQtPntuYW1lfS8kZ2l0LT57cmV2aXNpb259Ly8ka29wdHMvIiAuCisgICAgICAgICAgICAgICAgICAgICAgICBnZXRTdGlja3lUYWdPckRhdGUoJHN0aWNreUluZm8pIC4gIlxuIjsKICAgICAgICAgIyBwZXJtaXNzaW9ucwogICAgICAgICBwcmludCAidT0kZ2l0LT57bW9kZX0sZz0kZ2l0LT57bW9kZX0sbz0kZ2l0LT57bW9kZX1cbiI7CiAKQEAgLTEwMDUsNiArMTA0NiwxMTkgQEAKICAgICBzdGF0ZWNsZWFudXAoKTsKIH0KIAorIyB1c2VkIGJ5IHJlcV9jbyBhbmQgcmVxX3VwZGF0ZSB0byBzZXQgdXAgZGlyZWN0b3JpZXMgZm9yIGZpbGVzCisjIHJlY3Vyc2l2ZWx5IGhhbmRsZXMgcGFyZW50cworc3ViIHByZXBEaXJGb3JPdXRwdXQKK3sKKyAgICBteSAoJGRpciwgJHJlcG9kaXIsICRyZW1vdGVkaXIsICRzZWVuZGlycywgJHJlcXVlc3QsICRkaXJBcmdzKSA9IEBfOworCisgICAgbXkgJHBhcmVudCA9IGRpcm5hbWUoJGRpcik7CisgICAgJGRpciAgICAgICA9fiBzfC8rJHx8OworICAgICRyZXBvZGlyICAgPX4gc3wvKyR8fDsKKyAgICAkcmVtb3RlZGlyID1+IHN8LyskfHw7CisgICAgJHBhcmVudCAgICA9fiBzfC8rJHx8OworCisgICAgaWYgKCRwYXJlbnQgZXEgJy4nIHx8ICRwYXJlbnQgZXEgJy4vJykKKyAgICB7CisgICAgICAgICRwYXJlbnQgPSAnJzsKKyAgICB9CisgICAgIyByZWN1cnNlIHRvIGFubm91bmNlIHVuc2VlbiBwYXJlbnRzIGZpcnN0CisgICAgaWYoIGxlbmd0aCgkcGFyZW50KSAmJgorICAgICAgICAhZXhpc3RzKCRzZWVuZGlycy0+eyRwYXJlbnR9KSAmJgorICAgICAgICAoICRyZXF1ZXN0IGVxICJjaGVja291dCIgfHwKKyAgICAgICAgICBleGlzdHMoJGRpckFyZ3MtPnskcGFyZW50fSkgKSApCisgICAgeworICAgICAgICBwcmVwRGlyRm9yT3V0cHV0KCRwYXJlbnQsICRyZXBvZGlyLCAkcmVtb3RlZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICRzZWVuZGlycywgJHJlcXVlc3QsICRkaXJBcmdzKTsKKyAgICB9CisgICAgIyBBbm5vdW5jZSB0aGF0IHdlIGFyZSBnb2luZyB0byBtb2RpZnkgYXQgdGhlIHBhcmVudCBsZXZlbAorICAgIGlmICgkZGlyIGVxICcuJyB8fCAkZGlyIGVxICcuLycpCisgICAgeworICAgICAgICAkZGlyID0gJyc7CisgICAgfQorICAgIGlmKGV4aXN0cygkc2VlbmRpcnMtPnskZGlyfSkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgICRsb2ctPmRlYnVnKCJhbm5vdW5jZWRpciAkZGlyLCAkcmVwb2RpciwgJHJlbW90ZWRpciIgKTsKKyAgICBteSgkdGhpc1JlbW90ZURpciwkdGhpc1JlcG9EaXIpOworICAgIGlmICgkZGlyIG5lICIiKQorICAgIHsKKyAgICAgICAgJHRoaXNSZXBvRGlyPSIkcmVwb2Rpci8kZGlyIjsKKyAgICAgICAgaWYoJHJlbW90ZWRpciBlcSAiLiIpCisgICAgICAgIHsKKyAgICAgICAgICAgICR0aGlzUmVtb3RlRGlyPSRkaXI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAkdGhpc1JlbW90ZURpcj0iJHJlbW90ZWRpci8kZGlyIjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAkdGhpc1JlcG9EaXI9JHJlcG9kaXI7CisgICAgICAgICR0aGlzUmVtb3RlRGlyPSRyZW1vdGVkaXI7CisgICAgfQorICAgIHVubGVzcyAoICRzdGF0ZS0+e2dsb2JhbG9wdGlvbnN9ey1RfSB8fCAkc3RhdGUtPntnbG9iYWxvcHRpb25zfXstcX0gKQorICAgIHsKKyAgICAgICAgcHJpbnQgIkUgY3ZzICRyZXF1ZXN0OiBVcGRhdGluZyAkdGhpc1JlbW90ZURpclxuIjsKKyAgICB9CisKKyAgICBteSAoJG9wdF9yKT0kc3RhdGUtPntvcHR9e3J9OworICAgIG15ICRzdGlja3lJbmZvOworICAgIGlmKGV4aXN0cygkc3RhdGUtPntvcHR9e0F9KSkKKyAgICB7CisgICAgICAgICMgJHN0aWNreUluZm89dW5kZWY7CisgICAgfQorICAgIGVsc2lmKCBkZWZpbmVkKCRvcHRfcikgJiYgJG9wdF9yIG5lICIiICkKKyAgICAgICAgICAgIyB8fCAoIGRlZmluZWQoJHN0YXRlLT57b3B0fXtEfSkgJiYgJHN0YXRlLT57b3B0fXtEfSBuZSAiIiApICMgVE9ETworICAgIHsKKyAgICAgICAgJHN0aWNreUluZm89eyAndGFnJyA9PiAoZGVmaW5lZCgkb3B0X3IpPyRvcHRfcjp1bmRlZikgfTsKKworICAgICAgICAjIFRPRE86IENvbnZlcnQgLUQgdmFsdWUgaW50byB0aGUgZm9ybSAyMDExLjA0LjEwLjA0LjQ2LjU3LAorICAgICAgICAjICAgc2ltaWxhciB0byBhbiBlbnRyeSBsaW5lJ3Mgc3RpY2t5IGRhdGUsIHdpdGhvdXQgdGhlIEQgcHJlZml4LgorICAgICAgICAjICAgSXQgc29tZXRpbWVzIChhbHdheXM/KSBhcnJpdmVzIGFzIHNvbWV0aGluZyBtb3JlIGxpa2UKKyAgICAgICAgIyAgICcxMCBBcHIgMjAxMSAwNDo0Njo1NyAtMDAwMCcuLi4KKyAgICAgICAgIyAkc3RpY2t5SW5mbz17ICdkYXRlJyA9PiAoZGVmaW5lZCgkc3RpY2t5RGF0ZSk/JHN0aWNreURhdGU6dW5kZWYpIH07CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgICRzdGlja3lJbmZvPWdldERpclN0aWNreUluZm8oJHN0YXRlLT57cHJlcGVuZGRpcn0gLiAkZGlyKTsKKyAgICB9CisKKyAgICBteSAkc3RpY2t5UmVzcG9uc2U7CisgICAgaWYoZGVmaW5lZCgkc3RpY2t5SW5mbykpCisgICAgeworICAgICAgICAkc3RpY2t5UmVzcG9uc2UgPSAiU2V0LXN0aWNreSAkdGhpc1JlbW90ZURpci9cbiIgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAiJHRoaXNSZXBvRGlyL1xuIiAuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFN0aWNreVRhZ09yRGF0ZSgkc3RpY2t5SW5mbykgLiAiXG4iOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAkc3RpY2t5UmVzcG9uc2UgPSAiQ2xlYXItc3RpY2t5ICR0aGlzUmVtb3RlRGlyL1xuIiAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICIkdGhpc1JlcG9EaXIvXG4iOworICAgIH0KKworICAgIHVubGVzcyAoICRzdGF0ZS0+e2dsb2JhbG9wdGlvbnN9ey1ufSApCisgICAgeworICAgICAgICBwcmludCAkc3RpY2t5UmVzcG9uc2U7CisKKyAgICAgICAgcHJpbnQgIkNsZWFyLXN0YXRpYy1kaXJlY3RvcnkgJHRoaXNSZW1vdGVEaXIvXG4iOworICAgICAgICBwcmludCAiJHRoaXNSZXBvRGlyL1xuIjsKKyAgICAgICAgcHJpbnQgJHN0aWNreVJlc3BvbnNlOyAjIHllcywgdHdpY2UKKyAgICAgICAgcHJpbnQgIlRlbXBsYXRlICR0aGlzUmVtb3RlRGlyL1xuIjsKKyAgICAgICAgcHJpbnQgIiR0aGlzUmVwb0Rpci9cbiI7CisgICAgICAgIHByaW50ICIwXG4iOworICAgIH0KKworICAgICRzZWVuZGlycy0+eyRkaXJ9ID0gMTsKKworICAgICMgRlVUVVJFOiBUaGlzIHdvdWxkIG1vcmUgYWNjdXJhdGVseSBlbXVsYXRlIENWUyBieSBzZW5kaW5nCisgICAgIyAgIGFub3RoZXIgY29weSBvZiBzdGlja3kgYWZ0ZXIgcHJvY2Vzc2luZyB0aGUgZmlsZXMgaW4gdGhhdAorICAgICMgICBkaXJlY3RvcnkuICBPciBpbnRlcm1lZGlhdGU6IHBlcmhhcHMgc2VuZCBhbGwgc3RpY2t5J3MgZm9yCisgICAgIyAgICRzZWVuZGlycyBhZnRlciBhZnRlciBwcm9jZXNzaW5nIGFsbCBmaWxlcy4KK30KKwogIyB1cGRhdGUgXG4KICMgICAgIFJlc3BvbnNlIGV4cGVjdGVkOiB5ZXMuIEFjdHVhbGx5IGRvIGEgY3ZzIHVwZGF0ZSBjb21tYW5kLiBUaGlzIHVzZXMgYW55CiAjICAgICBwcmV2aW91cyBBcmd1bWVudCwgRGlyZWN0b3J5LCBFbnRyeSwgb3IgTW9kaWZpZWQgcmVxdWVzdHMsIGlmIHRoZXkgaGF2ZQpAQCAtMTA0OCwyOSArMTIwMiwxOSBAQAogCiAgICAgIyRsb2ctPmRlYnVnKCJ1cGRhdGUgc3RhdGUgOiAiIC4gRHVtcGVyKCRzdGF0ZSkpOwogCi0gICAgbXkgJGxhc3RfZGlybmFtZSA9ICIvLy8iOworICAgIG15KCRyZXBvRGlyKTsKKyAgICAkcmVwb0Rpcj0kc3RhdGUtPntDVlNST09UfSAuICIvJHN0YXRlLT57bW9kdWxlfS8kc3RhdGUtPntwcmVwZW5kZGlyfSI7CisKKyAgICBteSAlc2VlbmRpcnMgPSAoKTsKIAogICAgICMgZm9yZWFjaCBmaWxlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lIC4uLgotICAgIGZvcmVhY2ggbXkgJGZpbGVuYW1lICggQHskc3RhdGUtPnthcmdzfX0gKQorICAgIGZvcmVhY2ggbXkgJGFyZ3NGaWxlbmFtZSAoIEB7JHN0YXRlLT57YXJnc319ICkKICAgICB7Ci0gICAgICAgICRmaWxlbmFtZSA9IGZpbGVjbGVhbnVwKCRmaWxlbmFtZSk7CisgICAgICAgIG15ICRmaWxlbmFtZTsKKyAgICAgICAgJGZpbGVuYW1lID0gZmlsZWNsZWFudXAoJGFyZ3NGaWxlbmFtZSk7CiAKICAgICAgICAgJGxvZy0+ZGVidWcoIlByb2Nlc3NpbmcgZmlsZSAkZmlsZW5hbWUiKTsKIAotICAgICAgICB1bmxlc3MgKCAkc3RhdGUtPntnbG9iYWxvcHRpb25zfXstUX0gfHwgJHN0YXRlLT57Z2xvYmFsb3B0aW9uc317LXF9ICkKLSAgICAgICAgewotICAgICAgICAgICAgbXkgJGN1cl9kaXJuYW1lID0gZGlybmFtZSgkZmlsZW5hbWUpOwotICAgICAgICAgICAgaWYgKCAkY3VyX2Rpcm5hbWUgbmUgJGxhc3RfZGlybmFtZSApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJGxhc3RfZGlybmFtZSA9ICRjdXJfZGlybmFtZTsKLSAgICAgICAgICAgICAgICBpZiAoICRjdXJfZGlybmFtZSBlcSAiIiApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAkY3VyX2Rpcm5hbWUgPSAiLiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHByaW50ICJFIGN2cyB1cGRhdGU6IFVwZGF0aW5nICRjdXJfZGlybmFtZVxuIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCiAgICAgICAgICMgaWYgd2UgaGF2ZSBhIC1DIHdlIHNob3VsZCBwcmV0ZW5kIHdlIG5ldmVyIHNhdyBtb2RpZmllZCBzdHVmZgogICAgICAgICBpZiAoIGV4aXN0cyAoICRzdGF0ZS0+e29wdH17Q30gKSApCiAgICAgICAgIHsKQEAgLTEwNzksMTMgKzEyMjMsMTEgQEAKICAgICAgICAgICAgICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17dW5jaGFuZ2VkfSA9IDE7CiAgICAgICAgIH0KIAotICAgICAgICBteSAkbWV0YTsKLSAgICAgICAgaWYgKCBkZWZpbmVkKCRzdGF0ZS0+e29wdH17cn0pIGFuZCAkc3RhdGUtPntvcHR9e3J9ID1+IC9eMVwuKFxkKykvICkKLSAgICAgICAgewotICAgICAgICAgICAgJG1ldGEgPSAkdXBkYXRlci0+Z2V0bWV0YSgkZmlsZW5hbWUsICQxKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICRtZXRhID0gJHVwZGF0ZXItPmdldG1ldGEoJGZpbGVuYW1lKTsKLSAgICAgICAgfQorICAgICAgICBteSAkc3RpY2t5SW5mbyA9IHJlc29sdmVTdGlja3lJbmZvKCRmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUtPntvcHR9e3J9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS0+e29wdH17RH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RzKCRzdGF0ZS0+e29wdH17QX0pKTsKKyAgICAgICAgbXkgJG1ldGEgPSAkdXBkYXRlci0+Z2V0bWV0YSgkZmlsZW5hbWUsICRzdGlja3lJbmZvKTsKIAogICAgICAgICAjIElmIC1wIHdhcyBnaXZlbiwgInByaW50IiB0aGUgY29udGVudHMgb2YgdGhlIHJlcXVlc3RlZCByZXZpc2lvbi4KICAgICAgICAgaWYgKCBleGlzdHMgKCAkc3RhdGUtPntvcHR9e3B9ICkgKSB7CkBAIC0xMDk4LDIzICsxMjQwLDQxIEBACiAgICAgICAgICAgICBuZXh0OwogICAgICAgICB9CiAKKyAgICAgICAgIyBEaXJlY3RvcmllczoKKyAgICAgICAgcHJlcERpckZvck91dHB1dCgKKyAgICAgICAgICAgICAgICBkaXJuYW1lKCRhcmdzRmlsZW5hbWUpLAorICAgICAgICAgICAgICAgICRyZXBvRGlyLAorICAgICAgICAgICAgICAgICIuIiwKKyAgICAgICAgICAgICAgICBcJXNlZW5kaXJzLAorICAgICAgICAgICAgICAgICJ1cGRhdGUiLAorICAgICAgICAgICAgICAgICRzdGF0ZS0+e2RpckFyZ3N9ICk7CisKKyAgICAgICAgbXkgJHdyZXYgPSByZXZwYXJzZSgkZmlsZW5hbWUpOworCiAJaWYgKCAhIGRlZmluZWQgJG1ldGEgKQogCXsKIAkgICAgJG1ldGEgPSB7CiAJICAgICAgICBuYW1lID0+ICRmaWxlbmFtZSwKLQkgICAgICAgIHJldmlzaW9uID0+IDAsCisJICAgICAgICByZXZpc2lvbiA9PiAnMCcsCiAJICAgICAgICBmaWxlaGFzaCA9PiAnYWRkZWQnCiAJICAgIH07CisJICAgIGlmKCR3cmV2IG5lICIwIikKKwkgICAgeworCSAgICAgICAgJG1ldGEtPntmaWxlaGFzaH09J2RlbGV0ZWQnOworCSAgICB9CiAJfQogCiAgICAgICAgIG15ICRvbGRtZXRhID0gJG1ldGE7CiAKLSAgICAgICAgbXkgJHdyZXYgPSByZXZwYXJzZSgkZmlsZW5hbWUpOwotCiAgICAgICAgICMgSWYgdGhlIHdvcmtpbmcgY29weSBpcyBhbiBvbGQgcmV2aXNpb24sIGxldHMgZ2V0IHRoYXQgdmVyc2lvbiB0b28gZm9yIGNvbXBhcmlzb24uCi0gICAgICAgIGlmICggZGVmaW5lZCgkd3JldikgYW5kICR3cmV2ICE9ICRtZXRhLT57cmV2aXNpb259ICkKKyAgICAgICAgbXkgJG9sZFdyZXY9JHdyZXY7CisgICAgICAgIGlmKGRlZmluZWQoJG9sZFdyZXYpKQogICAgICAgICB7Ci0gICAgICAgICAgICAkb2xkbWV0YSA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSwgJHdyZXYpOworICAgICAgICAgICAgJG9sZFdyZXY9fnMvXi0vLzsKKyAgICAgICAgICAgIGlmKCRvbGRXcmV2IG5lICRtZXRhLT57cmV2aXNpb259KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICRvbGRtZXRhID0gJHVwZGF0ZXItPmdldG1ldGEoJGZpbGVuYW1lLCAkb2xkV3Jldik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAjJGxvZy0+ZGVidWcoIlRhcmdldCByZXZpc2lvbiBpcyAkbWV0YS0+e3JldmlzaW9ufSwgY3VycmVudCB3b3JraW5nIHJldmlzaW9uIGlzICR3cmV2Iik7CkBAIC0xMTIzLDcgKzEyODMsNyBAQAogICAgICAgICAjIGFuZCB0aGUgd29ya2luZyBjb3B5IGlzIHVubW9kaWZpZWQgX2FuZF8gdGhlIHVzZXIgaGFzbid0IHNwZWNpZmllZCAtQwogICAgICAgICBuZXh0IGlmICggZGVmaW5lZCAoICR3cmV2ICkKICAgICAgICAgICAgICAgICAgIGFuZCBkZWZpbmVkKCRtZXRhLT57cmV2aXNpb259KQotICAgICAgICAgICAgICAgICAgYW5kICR3cmV2ID09ICRtZXRhLT57cmV2aXNpb259CisgICAgICAgICAgICAgICAgICBhbmQgJHdyZXYgZXEgJG1ldGEtPntyZXZpc2lvbn0KICAgICAgICAgICAgICAgICAgIGFuZCAkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e3VuY2hhbmdlZH0KICAgICAgICAgICAgICAgICAgIGFuZCBub3QgZXhpc3RzICggJHN0YXRlLT57b3B0fXtDfSApICk7CiAKQEAgLTExMzEsNyArMTI5MSw4IEBACiAgICAgICAgICMgYnV0IHRoZSB3b3JraW5nIGNvcHkgaXMgbW9kaWZpZWQsIHRlbGwgdGhlIGNsaWVudCBpdCdzIG1vZGlmaWVkCiAgICAgICAgIGlmICggZGVmaW5lZCAoICR3cmV2ICkKICAgICAgICAgICAgICBhbmQgZGVmaW5lZCgkbWV0YS0+e3JldmlzaW9ufSkKLSAgICAgICAgICAgICBhbmQgJHdyZXYgPT0gJG1ldGEtPntyZXZpc2lvbn0KKyAgICAgICAgICAgICBhbmQgJHdyZXYgZXEgJG1ldGEtPntyZXZpc2lvbn0KKyAgICAgICAgICAgICBhbmQgJHdyZXYgbmUgIjAiCiAgICAgICAgICAgICAgYW5kIGRlZmluZWQoJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXttb2RpZmllZF9oYXNofSkKICAgICAgICAgICAgICBhbmQgbm90IGV4aXN0cyAoICRzdGF0ZS0+e29wdH17Q30gKSApCiAgICAgICAgIHsKQEAgLTExNDIsOCArMTMwMywxMiBAQAogICAgICAgICAgICAgbmV4dDsKICAgICAgICAgfQogCi0gICAgICAgIGlmICggJG1ldGEtPntmaWxlaGFzaH0gZXEgImRlbGV0ZWQiICkKKyAgICAgICAgaWYgKCAkbWV0YS0+e2ZpbGVoYXNofSBlcSAiZGVsZXRlZCIgJiYgJHdyZXYgbmUgIjAiICkKICAgICAgICAgeworICAgICAgICAgICAgIyBUT0RPOiBJZiBpdCBoYXMgYmVlbiBtb2RpZmllZCBpbiB0aGUgc2FuZGJveCwgZXJyb3Igb3V0CisgICAgICAgICAgICAjICAgd2l0aCB0aGUgYXBwcm9wcmlhdGUgbWVzc2FnZSwgcmF0aGVyIHRoYW4gZGVsZXRpbmcgYSBtb2RpZmllZAorICAgICAgICAgICAgIyAgIGZpbGUuCisKICAgICAgICAgICAgIG15ICggJGZpbGVwYXJ0LCAkZGlycGFydCApID0gZmlsZW5hbWVzcGxpdCgkZmlsZW5hbWUsMSk7CiAKICAgICAgICAgICAgICRsb2ctPmluZm8oIlJlbW92aW5nICckZmlsZW5hbWUnIGZyb20gd29ya2luZyBjb3B5IChubyBsb25nZXIgaW4gdGhlIHJlcG8pIik7CkBAIC0xMTYxLDcgKzEzMjYsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICAjIG5vcm1hbCB1cGRhdGUsIGp1c3Qgc2VuZCB0aGUgbmV3IHJldmlzaW9uIChlaXRoZXIgVT1VcGRhdGUsCiAgICAgICAgICAgICAjIG9yIEE9QWRkLCBvciBSPVJlbW92ZSkKLQkgICAgaWYgKCBkZWZpbmVkKCR3cmV2KSAmJiAkd3JldiA8IDAgKQorCSAgICBpZiAoIGRlZmluZWQoJHdyZXYpICYmICgkd3Jldj1+L14tLykgKQogCSAgICB7CiAJICAgICAgICAkbG9nLT5pbmZvKCJUZWxsIHRoZSBjbGllbnQgdGhlIGZpbGUgaXMgc2NoZWR1bGVkIGZvciByZW1vdmFsIik7CiAJCXByaW50ICJNVCB0ZXh0IFIgXG4iOwpAQCAtMTE2OSw3ICsxMzM0LDggQEAKICAgICAgICAgICAgICAgICBwcmludCAiTVQgbmV3bGluZVxuIjsKIAkJbmV4dDsKIAkgICAgfQotCSAgICBlbHNpZiAoICghZGVmaW5lZCgkd3JldikgfHwgJHdyZXYgPT0gMCkgJiYgKCFkZWZpbmVkKCRtZXRhLT57cmV2aXNpb259KSB8fCAkbWV0YS0+e3JldmlzaW9ufSA9PSAwKSApCisJICAgIGVsc2lmICggKCFkZWZpbmVkKCR3cmV2KSB8fCAkd3JldiBlcSAnMCcpICYmCisgICAgICAgICAgICAgICAgICAgICghZGVmaW5lZCgkbWV0YS0+e3JldmlzaW9ufSkgfHwgJG1ldGEtPntyZXZpc2lvbn0gZXEgJzAnKSApCiAJICAgIHsKIAkgICAgICAgICRsb2ctPmluZm8oIlRlbGwgdGhlIGNsaWVudCB0aGUgZmlsZSBpcyBzY2hlZHVsZWQgZm9yIGFkZGl0aW9uIik7CiAJCXByaW50ICJNVCB0ZXh0IEEgXG4iOwpAQCAtMTE3OSw3ICsxMzQ1LDcgQEAKIAogCSAgICB9CiAJICAgIGVsc2UgewotICAgICAgICAgICAgICAgICRsb2ctPmluZm8oIlVwZGF0aW5nICckZmlsZW5hbWUnIHRvICIuJG1ldGEtPntyZXZpc2lvbn0pOworICAgICAgICAgICAgICAgICRsb2ctPmluZm8oIlVwZGF0aW5nWDMgJyRmaWxlbmFtZScgdG8gIi4kbWV0YS0+e3JldmlzaW9ufSk7CiAgICAgICAgICAgICAgICAgcHJpbnQgIk1UICt1cGRhdGVkXG4iOwogICAgICAgICAgICAgICAgIHByaW50ICJNVCB0ZXh0IFUgXG4iOwogICAgICAgICAgICAgICAgIHByaW50ICJNVCBmbmFtZSAkZmlsZW5hbWVcbiI7CkBAIC0xMTk5LDEwICsxMzY1LDYgQEAKIAkJICAgICRsb2ctPmRlYnVnKCJVcGRhdGluZyBleGlzdGluZyBmaWxlICdVcGRhdGUtZXhpc3RpbmcgJGRpcnBhcnQnIik7CiAJCX0gZWxzZSB7CiAJCSAgICAjIGluc3RydWN0IGNsaWVudCB3ZSdyZSBzZW5kaW5nIGEgZmlsZSB0byBwdXQgaW4gdGhpcyBwYXRoIGFzIGEgbmV3IGZpbGUKLQkJICAgIHByaW50ICJDbGVhci1zdGF0aWMtZGlyZWN0b3J5ICRkaXJwYXJ0XG4iOwotCQkgICAgcHJpbnQgJHN0YXRlLT57Q1ZTUk9PVH0gLiAiLyRzdGF0ZS0+e21vZHVsZX0vJGRpcnBhcnRcbiI7Ci0JCSAgICBwcmludCAiQ2xlYXItc3RpY2t5ICRkaXJwYXJ0XG4iOwotCQkgICAgcHJpbnQgJHN0YXRlLT57Q1ZTUk9PVH0gLiAiLyRzdGF0ZS0+e21vZHVsZX0vJGRpcnBhcnRcbiI7CiAKIAkJICAgICRsb2ctPmRlYnVnKCJDcmVhdGluZyBuZXcgZmlsZSAnQ3JlYXRlZCAkZGlycGFydCciKTsKIAkJICAgIHByaW50ICJDcmVhdGVkICRkaXJwYXJ0XG4iOwpAQCAtMTIxMSw4ICsxMzczLDEwIEBACiAKIAkJIyB0aGlzIGlzIGFuICJlbnRyaWVzIiBsaW5lCiAJCW15ICRrb3B0cyA9IGtvcHRzX2Zyb21fcGF0aCgkZmlsZW5hbWUsInNoYTEiLCRtZXRhLT57ZmlsZWhhc2h9KTsKLQkJJGxvZy0+ZGVidWcoIi8kZmlsZXBhcnQvMS4kbWV0YS0+e3JldmlzaW9ufS8vJGtvcHRzLyIpOwotCQlwcmludCAiLyRmaWxlcGFydC8xLiRtZXRhLT57cmV2aXNpb259Ly8ka29wdHMvXG4iOworICAgICAgICAgICAgICAgIG15ICRlbnRyaWVzTGluZSA9ICIvJGZpbGVwYXJ0LyRtZXRhLT57cmV2aXNpb259Ly8ka29wdHMvIjsKKyAgICAgICAgICAgICAgICAkZW50cmllc0xpbmUgLj0gZ2V0U3RpY2t5VGFnT3JEYXRlKCRzdGlja3lJbmZvKTsKKwkJJGxvZy0+ZGVidWcoJGVudHJpZXNMaW5lKTsKKwkJcHJpbnQgIiRlbnRyaWVzTGluZVxuIjsKIAogCQkjIHBlcm1pc3Npb25zCiAJCSRsb2ctPmRlYnVnKCJTRU5EIDogdT0kbWV0YS0+e21vZGV9LGc9JG1ldGEtPnttb2RlfSxvPSRtZXRhLT57bW9kZX0iKTsKQEAgLTEyMjIsNyArMTM4Niw2IEBACiAJCXRyYW5zbWl0ZmlsZSgkbWV0YS0+e2ZpbGVoYXNofSk7CiAJICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICRsb2ctPmluZm8oIlVwZGF0aW5nICckZmlsZW5hbWUnIik7CiAgICAgICAgICAgICBteSAoICRmaWxlcGFydCwgJGRpcnBhcnQgKSA9IGZpbGVuYW1lc3BsaXQoJG1ldGEtPntuYW1lfSwxKTsKIAogICAgICAgICAgICAgbXkgJG1lcmdlRGlyID0gc2V0dXBUbXBEaXIoKTsKQEAgLTEyMzcsNyArMTQwMCw3IEBACiAKICAgICAgICAgICAgICMgd2UgbmVlZCB0byBtZXJnZSB3aXRoIHRoZSBsb2NhbCBjaGFuZ2VzICggTT1zdWNjZXNzZnVsIG1lcmdlLCBDPWNvbmZsaWN0IG1lcmdlICkKICAgICAgICAgICAgICRsb2ctPmluZm8oIk1lcmdpbmcgJGZpbGVfbG9jYWwsICRmaWxlX29sZCwgJGZpbGVfbmV3Iik7Ci0gICAgICAgICAgICBwcmludCAiTSBNZXJnaW5nIGRpZmZlcmVuY2VzIGJldHdlZW4gMS4kb2xkbWV0YS0+e3JldmlzaW9ufSBhbmQgMS4kbWV0YS0+e3JldmlzaW9ufSBpbnRvICRmaWxlbmFtZVxuIjsKKyAgICAgICAgICAgIHByaW50ICJNIE1lcmdpbmcgZGlmZmVyZW5jZXMgYmV0d2VlbiAkb2xkbWV0YS0+e3JldmlzaW9ufSBhbmQgJG1ldGEtPntyZXZpc2lvbn0gaW50byAkZmlsZW5hbWVcbiI7CiAKICAgICAgICAgICAgICRsb2ctPmRlYnVnKCJUZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBtZXJnZSBpcyAkbWVyZ2VEaXIiKTsKIApAQCAtMTI2MCw4ICsxNDIzLDEwIEBACiAgICAgICAgICAgICAgICAgICAgIHByaW50ICRzdGF0ZS0+e0NWU1JPT1R9IC4gIi8kc3RhdGUtPnttb2R1bGV9LyRmaWxlbmFtZVxuIjsKICAgICAgICAgICAgICAgICAgICAgbXkgJGtvcHRzID0ga29wdHNfZnJvbV9wYXRoKCIkZGlycGFydC8kZmlsZXBhcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiLCRtZXJnZWRGaWxlKTsKLSAgICAgICAgICAgICAgICAgICAgJGxvZy0+ZGVidWcoIi8kZmlsZXBhcnQvMS4kbWV0YS0+e3JldmlzaW9ufS8vJGtvcHRzLyIpOwotICAgICAgICAgICAgICAgICAgICBwcmludCAiLyRmaWxlcGFydC8xLiRtZXRhLT57cmV2aXNpb259Ly8ka29wdHMvXG4iOworICAgICAgICAgICAgICAgICAgICAkbG9nLT5kZWJ1ZygiLyRmaWxlcGFydC8kbWV0YS0+e3JldmlzaW9ufS8vJGtvcHRzLyIpOworICAgICAgICAgICAgICAgICAgICBteSAkZW50cmllc0xpbmU9Ii8kZmlsZXBhcnQvJG1ldGEtPntyZXZpc2lvbn0vLyRrb3B0cy8iOworICAgICAgICAgICAgICAgICAgICAkZW50cmllc0xpbmUgLj0gZ2V0U3RpY2t5VGFnT3JEYXRlKCRzdGlja3lJbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiRlbnRyaWVzTGluZVxuIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNpZiAoICRyZXR1cm4gPT0gMSApCkBAIC0xMjc3LDcgKzE0NDIsOSBAQAogICAgICAgICAgICAgICAgICAgICBwcmludCAkc3RhdGUtPntDVlNST09UfSAuICIvJHN0YXRlLT57bW9kdWxlfS8kZmlsZW5hbWVcbiI7CiAgICAgICAgICAgICAgICAgICAgIG15ICRrb3B0cyA9IGtvcHRzX2Zyb21fcGF0aCgiJGRpcnBhcnQvJGZpbGVwYXJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIiwkbWVyZ2VkRmlsZSk7Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICIvJGZpbGVwYXJ0LzEuJG1ldGEtPntyZXZpc2lvbn0vKy8ka29wdHMvXG4iOworICAgICAgICAgICAgICAgICAgICBteSAkZW50cmllc0xpbmUgPSAiLyRmaWxlcGFydC8kbWV0YS0+e3JldmlzaW9ufS8rLyRrb3B0cy8iOworICAgICAgICAgICAgICAgICAgICAkZW50cmllc0xpbmUgLj0gZ2V0U3RpY2t5VGFnT3JEYXRlKCRzdGlja3lJbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiRlbnRyaWVzTGluZVxuIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCkBAIC0xMzA1LDYgKzE0NzIsNDMgQEAKIAogICAgIH0KIAorICAgICMgcHJlcERpckZvck91dHB1dCgpIGFueSBvdGhlciBleGlzdGluZyBkaXJlY3RvcmllcyB1bmxlc3MgdGhleSBhbHJlYWR5CisgICAgIyBoYXZlIHRoZSByaWdodCBzdGlja3kgdGFnOgorICAgIHVubGVzcyAoICRzdGF0ZS0+e2dsb2JhbG9wdGlvbnN9e259ICkKKyAgICB7CisgICAgICAgIG15ICRkaXI7CisgICAgICAgIGZvcmVhY2ggJGRpciAoa2V5cygleyRzdGF0ZS0+e2Rpck1hcH19KSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYoICEgJHNlZW5kaXJzeyRkaXJ9ICYmCisgICAgICAgICAgICAgICAgZXhpc3RzKCRzdGF0ZS0+e2RpckFyZ3N9eyRkaXJ9KSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbXkoJG9sZFRhZyk7CisgICAgICAgICAgICAgICAgJG9sZFRhZz0kc3RhdGUtPntkaXJNYXB9eyRkaXJ9e3RhZ3NwZWN9OworCisgICAgICAgICAgICAgICAgdW5sZXNzKCAoIGV4aXN0cygkc3RhdGUtPntvcHR9e0F9KSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkKCRvbGRUYWcpICkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCBkZWZpbmVkKCRzdGF0ZS0+e29wdH17cn0pICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAhZGVmaW5lZCgkb2xkVGFnKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlLT57b3B0fXtyfSBuZSAkb2xkVGFnICkgKSApCisgICAgICAgICAgICAgICAgICAgICAgICAjIFRPRE8/OiBPUiBzdGlja3kgZGlyIGlzIGRpZmZlcmVudC4uLgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwcmVwRGlyRm9yT3V0cHV0KAorICAgICAgICAgICAgICAgICAgICAgICAgJGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICRyZXBvRGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgIi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgXCVzZWVuZGlycywKKyAgICAgICAgICAgICAgICAgICAgICAgICd1cGRhdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlLT57ZGlyQXJnc30gKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBUT0RPPzogQ29uc2lkZXIgc2VuZGluZyBhIGZpbmFsIGR1cGxpY2F0ZSBTdGlja3kgcmVzcG9uc2UKKyAgICAgICAgICAgICMgICB0byBtb3JlIGNsb3NlbHkgbWltaWMgcmVhbCBDVlMuCisgICAgICAgIH0KKyAgICB9CisKICAgICBwcmludCAib2tcbiI7CiB9CiAKQEAgLTEzMzcsMjMgKzE1NDEsMTEgQEAKICAgICBteSAkdXBkYXRlciA9IEdJVENWUzo6dXBkYXRlci0+bmV3KCRzdGF0ZS0+e0NWU1JPT1R9LCAkc3RhdGUtPnttb2R1bGV9LCAkbG9nKTsKICAgICAkdXBkYXRlci0+dXBkYXRlKCk7CiAKLSAgICAjIFJlbWVtYmVyIHdoZXJlIHRoZSBoZWFkIHdhcyBhdCB0aGUgYmVnaW5uaW5nLgotICAgIG15ICRwYXJlbnRoYXNoID0gYGdpdCBzaG93LXJlZiAtcyByZWZzL2hlYWRzLyRzdGF0ZS0+e21vZHVsZX1gOwotICAgIGNob21wICRwYXJlbnRoYXNoOwotICAgIGlmICgkcGFyZW50aGFzaCAhfiAvXlswLTlhLWZdezQwfSQvKSB7Ci0JICAgIHByaW50ICJlcnJvciAxIHBzZXJ2ZXIgY2Fubm90IGZpbmQgdGhlIGN1cnJlbnQgSEVBRCBvZiBtb2R1bGUiOwotCSAgICBjbGVhbnVwV29ya1RyZWUoKTsKLQkgICAgZXhpdDsKLSAgICB9Ci0KLSAgICBzZXR1cFdvcmtUcmVlKCRwYXJlbnRoYXNoKTsKLQotICAgICRsb2ctPmluZm8oIkxvY2tsZXNzIGNvbW1pdCBzdGFydCwgYmFzaW5nIGNvbW1pdCBvbiAnJHdvcmstPnt3b3JrRGlyfScsIGluZGV4IGZpbGUgaXMgJyR3b3JrLT57aW5kZXh9JyIpOwotCi0gICAgJGxvZy0+aW5mbygiQ3JlYXRlZCBpbmRleCAnJHdvcmstPntpbmRleH0nIGZvciBoZWFkICRzdGF0ZS0+e21vZHVsZX0gLSBleGl0IHN0YXR1cyAkPyIpOwotCiAgICAgbXkgQGNvbW1pdHRlZGZpbGVzID0gKCk7CiAgICAgbXkgJW9sZG1ldGE7CisgICAgbXkgJHN0aWNreUluZm87CisgICAgbXkgJGJyYW5jaFJlZjsKKyAgICBteSAkcGFyZW50aGFzaDsKIAogICAgICMgZm9yZWFjaCBmaWxlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lIC4uLgogICAgIGZvcmVhY2ggbXkgJGZpbGVuYW1lICggQHskc3RhdGUtPnthcmdzfX0gKQpAQCAtMTM2Myw3ICsxNTU1LDY3IEBACiAKICAgICAgICAgbmV4dCB1bmxlc3MgKCBleGlzdHMgJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXttb2RpZmllZF9maWxlbmFtZX0gb3Igbm90ICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17dW5jaGFuZ2VkfSApOwogCi0gICAgICAgIG15ICRtZXRhID0gJHVwZGF0ZXItPmdldG1ldGEoJGZpbGVuYW1lKTsKKyAgICAgICAgIyMjIyMKKyAgICAgICAgIyBGaWd1cmUgb3V0IHdoaWNoIGJyYW5jaCBhbmQgcGFyZW50aGFzaCB3ZSBhcmUgY29tbWl0dGluZworICAgICAgICAjIHRvLCBhbmQgc2V0dXAgd29ya3RyZWU6CisKKyAgICAgICAgIyBzaG91bGQgYWx3YXlzIGNvbWUgZnJvbSBlbnRyaWVzOgorICAgICAgICBteSAkZmlsZVN0aWNreUluZm8gPSByZXNvbHZlU3RpY2t5SW5mbygkZmlsZW5hbWUpOworICAgICAgICBpZiggIWRlZmluZWQoJGJyYW5jaFJlZikgKQorICAgICAgICB7CisgICAgICAgICAgICAkc3RpY2t5SW5mbyA9ICRmaWxlU3RpY2t5SW5mbzsKKyAgICAgICAgICAgIGlmKCBkZWZpbmVkKCRzdGlja3lJbmZvKSAmJgorICAgICAgICAgICAgICAgICggZGVmaW5lZCgkc3RpY2t5SW5mby0+e2RhdGV9KSB8fAorICAgICAgICAgICAgICAgICAgIWRlZmluZWQoJHN0aWNreUluZm8tPnt0YWd9KSApICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwcmludCAiZXJyb3IgMSBjYW5ub3QgY29tbWl0IHdpdGggc3RpY2t5IGRhdGUgZm9yIGZpbGUgYCRmaWxlbmFtZSdcbiI7CisgICAgICAgICAgICAgICAgY2xlYW51cFdvcmtUcmVlKCk7CisgICAgICAgICAgICAgICAgZXhpdDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgJGJyYW5jaFJlZiA9ICJyZWZzL2hlYWRzLyRzdGF0ZS0+e21vZHVsZX0iOworICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRzdGlja3lJbmZvKSAmJiBkZWZpbmVkKCRzdGlja3lJbmZvLT57dGFnfSkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICRicmFuY2hSZWYgPSAicmVmcy9oZWFkcy8kc3RpY2t5SW5mby0+e3RhZ30iOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAkcGFyZW50aGFzaCA9IGBnaXQgc2hvdy1yZWYgLXMgJGJyYW5jaFJlZmA7CisgICAgICAgICAgICBjaG9tcCAkcGFyZW50aGFzaDsKKyAgICAgICAgICAgIGlmICgkcGFyZW50aGFzaCAhfiAvXlswLTlhLWZdezQwfSQvKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCgkc3RpY2t5SW5mbykgJiYgZGVmaW5lZCgkc3RpY2t5SW5mby0+e3RhZ30pICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHByaW50ICJlcnJvciAxIHN0aWNreSB0YWcgYCRzdGlja3lJbmZvLT57dGFnfScgZm9yIGZpbGUgYCRmaWxlbmFtZScgaXMgbm90IGEgYnJhbmNoXG4iOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBwcmludCAiZXJyb3IgMSBwc2VydmVyIGNhbm5vdCBmaW5kIHRoZSBjdXJyZW50IEhFQUQgb2YgbW9kdWxlIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2xlYW51cFdvcmtUcmVlKCk7CisgICAgICAgICAgICAgICAgZXhpdDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0dXBXb3JrVHJlZSgkcGFyZW50aGFzaCk7CisKKyAgICAgICAgICAgICRsb2ctPmluZm8oIkxvY2tsZXNzIGNvbW1pdCBzdGFydCwgYmFzaW5nIGNvbW1pdCBvbiAnJHdvcmstPnt3b3JrRGlyfScsIGluZGV4IGZpbGUgaXMgJyR3b3JrLT57aW5kZXh9JyIpOworCisgICAgICAgICAgICAkbG9nLT5pbmZvKCJDcmVhdGVkIGluZGV4ICckd29yay0+e2luZGV4fScgZm9yIGhlYWQgJHN0YXRlLT57bW9kdWxlfSAtIGV4aXQgc3RhdHVzICQ/Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzaWYoICFyZWZIYXNoRXF1YWwoJHN0aWNreUluZm8sJGZpbGVTdGlja3lJbmZvKSApCisgICAgICAgIHsKKyAgICAgICAgICAgICNUT0RPOiBXZSBjb3VsZCBzcGxpdCB0aGUgY3ZzIGNvbW1pdCBpbnRvIG11bHRpcGxlCisgICAgICAgICAgICAjICBnaXQgY29tbWl0cyBieSBkaXN0aW5jdCBzdGlja3lUYWcgdmFsdWVzLCBidXQgdGhhdAorICAgICAgICAgICAgIyAgaXMgbG93aXNoIHByaW9yaXR5LgorICAgICAgICAgICAgcHJpbnQgImVycm9yIDEgQ29tbWl0dGluZyBkaWZmZXJlbnQgZmlsZXMgdG8gZGlmZmVyZW50IgorICAgICAgICAgICAgICAgICAgLiAiIGJyYW5jaGVzIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkXG4iOworICAgICAgICAgICAgY2xlYW51cFdvcmtUcmVlKCk7CisgICAgICAgICAgICBleGl0OworICAgICAgICB9CisKKyAgICAgICAgIyMjIyMKKyAgICAgICAgIyBQcm9jZXNzIHRoaXMgZmlsZToKKworICAgICAgICBteSAkbWV0YSA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSwkc3RpY2t5SW5mbyk7CiAJJG9sZG1ldGF7JGZpbGVuYW1lfSA9ICRtZXRhOwogCiAgICAgICAgIG15ICR3cmV2ID0gcmV2cGFyc2UoJGZpbGVuYW1lKTsKQEAgLTEzODAsMTEgKzE2MzIsMTIgQEAKIAogICAgICAgICBteSAkYWRkZmxhZyA9IDA7CiAgICAgICAgIG15ICRybWZsYWcgPSAwOwotICAgICAgICAkcm1mbGFnID0gMSBpZiAoIGRlZmluZWQoJHdyZXYpIGFuZCAkd3JldiA8IDAgKTsKKyAgICAgICAgJHJtZmxhZyA9IDEgaWYgKCBkZWZpbmVkKCR3cmV2KSBhbmQgKCR3cmV2PX4vXi0vKSApOwogICAgICAgICAkYWRkZmxhZyA9IDEgdW5sZXNzICggLWUgJGZpbGVuYW1lICk7CiAKICAgICAgICAgIyBEbyB1cCB0byBkYXRlIGNoZWNraW5nCi0gICAgICAgIHVubGVzcyAoICRhZGRmbGFnIG9yICR3cmV2ID09ICRtZXRhLT57cmV2aXNpb259IG9yICggJHJtZmxhZyBhbmQgLSR3cmV2ID09ICRtZXRhLT57cmV2aXNpb259ICkgKQorICAgICAgICB1bmxlc3MgKCAkYWRkZmxhZyBvciAkd3JldiBlcSAkbWV0YS0+e3JldmlzaW9ufSBvcgorICAgICAgICAgICAgICAgICAoICRybWZsYWcgYW5kICR3cmV2IGVxICItJG1ldGEtPntyZXZpc2lvbn0iICkgKQogICAgICAgICB7CiAgICAgICAgICAgICAjIGZhaWwgZXZlcnl0aGluZyBpZiBhbiB1cCB0byBkYXRlIGNoZWNrIGZhaWxzCiAgICAgICAgICAgICBwcmludCAiZXJyb3IgMSBVcCB0byBkYXRlIGNoZWNrIGZhaWxlZCBmb3IgJGZpbGVuYW1lXG4iOwpAQCAtMTQyMSw3ICsxNjc0LDcgQEAKICAgICAgICAgICAgICRsb2ctPmluZm8oIkFkZGluZyBmaWxlICckZmlsZW5hbWUnIik7CiAgICAgICAgICAgICBzeXN0ZW0oImdpdCIsICJ1cGRhdGUtaW5kZXgiLCAiLS1hZGQiLCAkZmlsZW5hbWUpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJGxvZy0+aW5mbygiVXBkYXRpbmcgZmlsZSAnJGZpbGVuYW1lJyIpOworICAgICAgICAgICAgJGxvZy0+aW5mbygiVXBkYXRpbmdYMiBmaWxlICckZmlsZW5hbWUnIik7CiAgICAgICAgICAgICBzeXN0ZW0oImdpdCIsICJ1cGRhdGUtaW5kZXgiLCAkZmlsZW5hbWUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTQ2NCw3ICsxNzE3LDcgQEAKICAgICB9CiAKIAkjIyMgRW11bGF0ZSBnaXQtcmVjZWl2ZS1wYWNrIGJ5IHJ1bm5pbmcgaG9va3MvdXBkYXRlCi0JbXkgQGhvb2sgPSAoICRFTlZ7R0lUX0RJUn0uJ2hvb2tzL3VwZGF0ZScsICJyZWZzL2hlYWRzLyRzdGF0ZS0+e21vZHVsZX0iLAorCW15IEBob29rID0gKCAkRU5We0dJVF9ESVJ9Lidob29rcy91cGRhdGUnLCAkYnJhbmNoUmVmLAogCQkJJHBhcmVudGhhc2gsICRjb21taXRoYXNoICk7CiAJaWYoIC14ICRob29rWzBdICkgewogCQl1bmxlc3MoIHN5c3RlbSggQGhvb2sgKSA9PSAwICkKQEAgLTE0NzgsNyArMTczMSw3IEBACiAKIAkjIyMgVXBkYXRlIHRoZSByZWYKIAlpZiAoc3lzdGVtKHF3KGdpdCB1cGRhdGUtcmVmIC1tKSwgImN2c3NlcnZlciBjaSIsCi0JCQkicmVmcy9oZWFkcy8kc3RhdGUtPnttb2R1bGV9IiwgJGNvbW1pdGhhc2gsICRwYXJlbnRoYXNoKSkgeworCQkJJGJyYW5jaFJlZiwgJGNvbW1pdGhhc2gsICRwYXJlbnRoYXNoKSkgewogCQkkbG9nLT53YXJuKCJ1cGRhdGUtcmVmIGZvciAkc3RhdGUtPnttb2R1bGV9IGZhaWxlZC4iKTsKIAkJcHJpbnQgImVycm9yIDEgQ2Fubm90IGNvbW1pdCAtLSB1cGRhdGUgZmlyc3RcbiI7CiAJCWNsZWFudXBXb3JrVHJlZSgpOwpAQCAtMTQ5Miw3ICsxNzQ1LDcgQEAKIAogCQlsb2NhbCAkU0lHe1BJUEV9ID0gc3ViIHsgZGllICdwaXBlIGJyb2tlJyB9OwogCi0JCXByaW50ICRwaXBlICIkcGFyZW50aGFzaCAkY29tbWl0aGFzaCByZWZzL2hlYWRzLyRzdGF0ZS0+e21vZHVsZX1cbiI7CisJCXByaW50ICRwaXBlICIkcGFyZW50aGFzaCAkY29tbWl0aGFzaCAkYnJhbmNoUmVmXG4iOwogCiAJCWNsb3NlICRwaXBlIHx8IGRpZSAiYmFkIHBpcGU6ICQhICQ/IjsKIAl9CkBAIC0xNTAyLDcgKzE3NTUsNyBAQAogCSMjIyBUaGVuIGhvb2tzL3Bvc3QtdXBkYXRlCiAJJGhvb2sgPSAkRU5We0dJVF9ESVJ9Lidob29rcy9wb3N0LXVwZGF0ZSc7CiAJaWYgKC14ICRob29rKSB7Ci0JCXN5c3RlbSgkaG9vaywgInJlZnMvaGVhZHMvJHN0YXRlLT57bW9kdWxlfSIpOworCQlzeXN0ZW0oJGhvb2ssICRicmFuY2hSZWYpOwogCX0KIAogICAgICMgZm9yZWFjaCBmaWxlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lIC4uLgpAQCAtMTUxMCw5ICsxNzYzLDkgQEAKICAgICB7CiAgICAgICAgICRmaWxlbmFtZSA9IGZpbGVjbGVhbnVwKCRmaWxlbmFtZSk7CiAKLSAgICAgICAgbXkgJG1ldGEgPSAkdXBkYXRlci0+Z2V0bWV0YSgkZmlsZW5hbWUpOworICAgICAgICBteSAkbWV0YSA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSwkc3RpY2t5SW5mbyk7CiAJdW5sZXNzIChkZWZpbmVkICRtZXRhLT57cmV2aXNpb259KSB7Ci0JICAkbWV0YS0+e3JldmlzaW9ufSA9IDE7CisJICAkbWV0YS0+e3JldmlzaW9ufSA9ICIxLjEiOwogCX0KIAogICAgICAgICBteSAoICRmaWxlcGFydCwgJGRpcnBhcnQgKSA9IGZpbGVuYW1lc3BsaXQoJGZpbGVuYW1lLCAxKTsKQEAgLTE1MjIsMTkgKzE3NzUsMjAgQEAKIAlwcmludCAiTSAkc3RhdGUtPntDVlNST09UfS8kc3RhdGUtPnttb2R1bGV9LyRmaWxlbmFtZSx2ICA8LS0gICRkaXJwYXJ0JGZpbGVwYXJ0XG4iOwogICAgICAgICBpZiAoIGRlZmluZWQgJG1ldGEtPntmaWxlaGFzaH0gJiYgJG1ldGEtPntmaWxlaGFzaH0gZXEgImRlbGV0ZWQiICkKICAgICAgICAgewotICAgICAgICAgICAgcHJpbnQgIk0gbmV3IHJldmlzaW9uOiBkZWxldGU7IHByZXZpb3VzIHJldmlzaW9uOiAxLiRvbGRtZXRheyRmaWxlbmFtZX17cmV2aXNpb259XG4iOworICAgICAgICAgICAgcHJpbnQgIk0gbmV3IHJldmlzaW9uOiBkZWxldGU7IHByZXZpb3VzIHJldmlzaW9uOiAkb2xkbWV0YXskZmlsZW5hbWV9e3JldmlzaW9ufVxuIjsKICAgICAgICAgICAgIHByaW50ICJSZW1vdmUtZW50cnkgJGRpcnBhcnRcbiI7CiAgICAgICAgICAgICBwcmludCAiJGZpbGVuYW1lXG4iOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKCRtZXRhLT57cmV2aXNpb259ID09IDEpIHsKKyAgICAgICAgICAgIGlmICgkbWV0YS0+e3JldmlzaW9ufSBlcSAiMS4xIikgewogCSAgICAgICAgcHJpbnQgIk0gaW5pdGlhbCByZXZpc2lvbjogMS4xXG4iOwogICAgICAgICAgICAgfSBlbHNlIHsKLQkgICAgICAgIHByaW50ICJNIG5ldyByZXZpc2lvbjogMS4kbWV0YS0+e3JldmlzaW9ufTsgcHJldmlvdXMgcmV2aXNpb246IDEuJG9sZG1ldGF7JGZpbGVuYW1lfXtyZXZpc2lvbn1cbiI7CisJICAgICAgICBwcmludCAiTSBuZXcgcmV2aXNpb246ICRtZXRhLT57cmV2aXNpb259OyBwcmV2aW91cyByZXZpc2lvbjogJG9sZG1ldGF7JGZpbGVuYW1lfXtyZXZpc2lvbn1cbiI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwcmludCAiQ2hlY2tlZC1pbiAkZGlycGFydFxuIjsKICAgICAgICAgICAgIHByaW50ICIkZmlsZW5hbWVcbiI7CiAgICAgICAgICAgICBteSAka29wdHMgPSBrb3B0c19mcm9tX3BhdGgoJGZpbGVuYW1lLCJzaGExIiwkbWV0YS0+e2ZpbGVoYXNofSk7Ci0gICAgICAgICAgICBwcmludCAiLyRmaWxlcGFydC8xLiRtZXRhLT57cmV2aXNpb259Ly8ka29wdHMvXG4iOworICAgICAgICAgICAgcHJpbnQgIi8kZmlsZXBhcnQvJG1ldGEtPntyZXZpc2lvbn0vLyRrb3B0cy8iIC4KKyAgICAgICAgICAgICAgICAgIGdldFN0aWNreVRhZ09yRGF0ZSgkc3RpY2t5SW5mbykgLiAiXG4iOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNTUyLDEwICsxODA2LDEyIEBACiAgICAgIyRsb2ctPmRlYnVnKCJzdGF0dXMgc3RhdGUgOiAiIC4gRHVtcGVyKCRzdGF0ZSkpOwogCiAgICAgIyBHcmFiIGEgaGFuZGxlIHRvIHRoZSBTUUxpdGUgZGIgYW5kIGRvIGFueSBuZWNlc3NhcnkgdXBkYXRlcwotICAgIG15ICR1cGRhdGVyID0gR0lUQ1ZTOjp1cGRhdGVyLT5uZXcoJHN0YXRlLT57Q1ZTUk9PVH0sICRzdGF0ZS0+e21vZHVsZX0sICRsb2cpOworICAgIG15ICR1cGRhdGVyOworICAgICR1cGRhdGVyID0gR0lUQ1ZTOjp1cGRhdGVyLT5uZXcoJHN0YXRlLT57Q1ZTUk9PVH0sICRzdGF0ZS0+e21vZHVsZX0sICRsb2cpOwogICAgICR1cGRhdGVyLT51cGRhdGUoKTsKIAotICAgICMgaWYgbm8gZmlsZXMgd2VyZSBzcGVjaWZpZWQsIHdlIG5lZWQgdG8gd29yayBvdXQgd2hhdCBmaWxlcyB3ZSBzaG91bGQgYmUgcHJvdmlkaW5nIHN0YXR1cyBvbiAuLi4KKyAgICAjIGlmIG5vIGZpbGVzIHdlcmUgc3BlY2lmaWVkLCB3ZSBuZWVkIHRvIHdvcmsgb3V0IHdoYXQgZmlsZXMgd2Ugc2hvdWxkCisgICAgIyBiZSBwcm92aWRpbmcgc3RhdHVzIG9uIC4uLgogICAgIGFyZ3Nmcm9tZGlyKCR1cGRhdGVyKTsKIAogICAgICMgZm9yZWFjaCBmaWxlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lIC4uLgpAQCAtMTU2Myw2NyArMTgxOSwxNDAgQEAKICAgICB7CiAgICAgICAgICRmaWxlbmFtZSA9IGZpbGVjbGVhbnVwKCRmaWxlbmFtZSk7CiAKLSAgICAgICAgbmV4dCBpZiBleGlzdHMoJHN0YXRlLT57b3B0fXtsfSkgJiYgaW5kZXgoJGZpbGVuYW1lLCAnLycsIGxlbmd0aCgkc3RhdGUtPntwcmVwZW5kZGlyfSkpID49IDA7Ci0KLSAgICAgICAgbXkgJG1ldGEgPSAkdXBkYXRlci0+Z2V0bWV0YSgkZmlsZW5hbWUpOwotICAgICAgICBteSAkb2xkbWV0YSA9ICRtZXRhOworICAgICAgICBpZiAoIGV4aXN0cygkc3RhdGUtPntvcHR9e2x9KSAmJgorICAgICAgICAgICAgIGluZGV4KCRmaWxlbmFtZSwgJy8nLCBsZW5ndGgoJHN0YXRlLT57cHJlcGVuZGRpcn0pKSA+PSAwICkKKyAgICAgICAgeworICAgICAgICAgICBuZXh0OworICAgICAgICB9CiAKICAgICAgICAgbXkgJHdyZXYgPSByZXZwYXJzZSgkZmlsZW5hbWUpOwogCi0gICAgICAgICMgSWYgdGhlIHdvcmtpbmcgY29weSBpcyBhbiBvbGQgcmV2aXNpb24sIGxldHMgZ2V0IHRoYXQgdmVyc2lvbiB0b28gZm9yIGNvbXBhcmlzb24uCi0gICAgICAgIGlmICggZGVmaW5lZCgkd3JldikgYW5kICR3cmV2ICE9ICRtZXRhLT57cmV2aXNpb259ICkKKyAgICAgICAgbXkgJHN0aWNreUluZm8gPSByZXNvbHZlU3RpY2t5SW5mbygkZmlsZW5hbWUpOworICAgICAgICBteSAkbWV0YSA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSwkc3RpY2t5SW5mbyk7CisgICAgICAgIG15ICRvbGRtZXRhID0gJG1ldGE7CisKKyAgICAgICAgIyBJZiB0aGUgd29ya2luZyBjb3B5IGlzIGFuIG9sZCByZXZpc2lvbiwgbGV0cyBnZXQgdGhhdAorICAgICAgICAjIHZlcnNpb24gdG9vIGZvciBjb21wYXJpc29uLgorICAgICAgICBpZiAoIGRlZmluZWQoJHdyZXYpIGFuZCAkd3JldiBuZSAkbWV0YS0+e3JldmlzaW9ufSApCiAgICAgICAgIHsKLSAgICAgICAgICAgICRvbGRtZXRhID0gJHVwZGF0ZXItPmdldG1ldGEoJGZpbGVuYW1lLCAkd3Jldik7CisgICAgICAgICAgICBteSgkcm1SZXYpPSR3cmV2OworICAgICAgICAgICAgJHJtUmV2PX5zL14tLy87CisgICAgICAgICAgICAkb2xkbWV0YSA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSwgJHJtUmV2KTsKICAgICAgICAgfQogCiAgICAgICAgICMgVE9ETyA6IEFsbCBwb3NzaWJsZSBzdGF0dXNlcyBhcmVuJ3QgeWV0IGltcGxlbWVudGVkCiAgICAgICAgIG15ICRzdGF0dXM7Ci0gICAgICAgICMgRmlsZXMgYXJlIHVwIHRvIGRhdGUgaWYgdGhlIHdvcmtpbmcgY29weSBhbmQgcmVwbyBjb3B5IGhhdmUgdGhlIHNhbWUgcmV2aXNpb24sIGFuZCB0aGUgd29ya2luZyBjb3B5IGlzIHVubW9kaWZpZWQKLSAgICAgICAgJHN0YXR1cyA9ICJVcC10by1kYXRlIiBpZiAoIGRlZmluZWQgKCAkd3JldiApIGFuZCBkZWZpbmVkKCRtZXRhLT57cmV2aXNpb259KSBhbmQgJHdyZXYgPT0gJG1ldGEtPntyZXZpc2lvbn0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17dW5jaGFuZ2VkfSBhbmQgKCBub3QgZGVmaW5lZCAoICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17Y29uZmxpY3R9ICkgb3IgJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXtjb25mbGljdH0gIX4gL15cKz0vICkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciAoIGRlZmluZWQoJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXttb2RpZmllZF9oYXNofSkgYW5kICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17bW9kaWZpZWRfaGFzaH0gZXEgJG1ldGEtPntmaWxlaGFzaH0gKSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICMgRmlsZXMgYXJlIHVwIHRvIGRhdGUgaWYgdGhlIHdvcmtpbmcgY29weSBhbmQgcmVwbyBjb3B5IGhhdmUKKyAgICAgICAgIyB0aGUgc2FtZSByZXZpc2lvbiwgYW5kIHRoZSB3b3JraW5nIGNvcHkgaXMgdW5tb2RpZmllZAorICAgICAgICBpZiAoIGRlZmluZWQgKCAkd3JldiApIGFuZCBkZWZpbmVkKCRtZXRhLT57cmV2aXNpb259KSBhbmQKKyAgICAgICAgICAgICAkd3JldiBlcSAkbWV0YS0+e3JldmlzaW9ufSBhbmQKKyAgICAgICAgICAgICAoICggJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXt1bmNoYW5nZWR9IGFuZAorICAgICAgICAgICAgICAgICAoIG5vdCBkZWZpbmVkICggJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXtjb25mbGljdH0gKSBvcgorICAgICAgICAgICAgICAgICAgICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17Y29uZmxpY3R9ICF+IC9eXCs9LyApICkgb3IKKyAgICAgICAgICAgICAgICggZGVmaW5lZCgkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e21vZGlmaWVkX2hhc2h9KSBhbmQKKyAgICAgICAgICAgICAgICAgJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXttb2RpZmllZF9oYXNofSBlcQorICAgICAgICAgICAgICAgICAgICAgICAgJG1ldGEtPntmaWxlaGFzaH0gKSApICkKKyAgICAgICAgeworICAgICAgICAgICAgJHN0YXR1cyA9ICJVcC10by1kYXRlIgorICAgICAgICB9CiAKLSAgICAgICAgIyBOZWVkIGNoZWNrb3V0IGlmIHRoZSB3b3JraW5nIGNvcHkgaGFzIGFuIG9sZGVyIHJldmlzaW9uIHRoYW4gdGhlIHJlcG8gY29weSwgYW5kIHRoZSB3b3JraW5nIGNvcHkgaXMgdW5tb2RpZmllZAotICAgICAgICAkc3RhdHVzIHx8PSAiTmVlZHMgQ2hlY2tvdXQiIGlmICggZGVmaW5lZCAoICR3cmV2ICkgYW5kIGRlZmluZWQgKCAkbWV0YS0+e3JldmlzaW9ufSApIGFuZCAkbWV0YS0+e3JldmlzaW9ufSA+ICR3cmV2Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXt1bmNoYW5nZWR9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yICggZGVmaW5lZCgkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e21vZGlmaWVkX2hhc2h9KSBhbmQgJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXttb2RpZmllZF9oYXNofSBlcSAkb2xkbWV0YS0+e2ZpbGVoYXNofSApICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAjIE5lZWQgY2hlY2tvdXQgaWYgdGhlIHdvcmtpbmcgY29weSBoYXMgYSBkaWZmZXJlbnQgKHVzdWFsbHkKKyAgICAgICAgIyBvbGRlcikgcmV2aXNpb24gdGhhbiB0aGUgcmVwbyBjb3B5LCBhbmQgdGhlIHdvcmtpbmcgY29weSBpcworICAgICAgICAjIHVubW9kaWZpZWQKKyAgICAgICAgaWYgKCBkZWZpbmVkICggJHdyZXYgKSBhbmQgZGVmaW5lZCAoICRtZXRhLT57cmV2aXNpb259ICkgYW5kCisgICAgICAgICAgICAgJG1ldGEtPntyZXZpc2lvbn0gbmUgJHdyZXYgYW5kCisgICAgICAgICAgICAgKCAkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e3VuY2hhbmdlZH0gb3IKKyAgICAgICAgICAgICAgICggZGVmaW5lZCgkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e21vZGlmaWVkX2hhc2h9KSBhbmQKKyAgICAgICAgICAgICAgICAgJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXttb2RpZmllZF9oYXNofSBlcQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2xkbWV0YS0+e2ZpbGVoYXNofSApICkgKQorICAgICAgICB7CisgICAgICAgICAgICAkc3RhdHVzIHx8PSAiTmVlZHMgQ2hlY2tvdXQiOworICAgICAgICB9CiAKLSAgICAgICAgIyBOZWVkIGNoZWNrb3V0IGlmIGl0IGV4aXN0cyBpbiB0aGUgcmVwbyBidXQgZG9lc24ndCBoYXZlIGEgd29ya2luZyBjb3B5Ci0gICAgICAgICRzdGF0dXMgfHw9ICJOZWVkcyBDaGVja291dCIgaWYgKCBub3QgZGVmaW5lZCAoICR3cmV2ICkgYW5kIGRlZmluZWQgKCAkbWV0YS0+e3JldmlzaW9ufSApICk7CisgICAgICAgICMgTmVlZCBjaGVja291dCBpZiBpdCBleGlzdHMgaW4gdGhlIHJlcG8gYnV0IGRvZXNuJ3QgaGF2ZSBhIHdvcmtpbmcKKyAgICAgICAgIyBjb3B5CisgICAgICAgIGlmICggbm90IGRlZmluZWQgKCAkd3JldiApIGFuZCBkZWZpbmVkICggJG1ldGEtPntyZXZpc2lvbn0gKSApCisgICAgICAgIHsKKyAgICAgICAgICAgICRzdGF0dXMgfHw9ICJOZWVkcyBDaGVja291dCI7CisgICAgICAgIH0KIAotICAgICAgICAjIExvY2FsbHkgbW9kaWZpZWQgaWYgd29ya2luZyBjb3B5IGFuZCByZXBvIGNvcHkgaGF2ZSB0aGUgc2FtZSByZXZpc2lvbiBidXQgdGhlcmUgYXJlIGxvY2FsIGNoYW5nZXMKLSAgICAgICAgJHN0YXR1cyB8fD0gIkxvY2FsbHkgTW9kaWZpZWQiIGlmICggZGVmaW5lZCAoICR3cmV2ICkgYW5kIGRlZmluZWQoJG1ldGEtPntyZXZpc2lvbn0pIGFuZCAkd3JldiA9PSAkbWV0YS0+e3JldmlzaW9ufSBhbmQgJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXttb2RpZmllZF9maWxlbmFtZX0gKTsKKyAgICAgICAgIyBMb2NhbGx5IG1vZGlmaWVkIGlmIHdvcmtpbmcgY29weSBhbmQgcmVwbyBjb3B5IGhhdmUgdGhlCisgICAgICAgICMgc2FtZSByZXZpc2lvbiBidXQgdGhlcmUgYXJlIGxvY2FsIGNoYW5nZXMKKyAgICAgICAgaWYgKCBkZWZpbmVkICggJHdyZXYgKSBhbmQgZGVmaW5lZCgkbWV0YS0+e3JldmlzaW9ufSkgYW5kCisgICAgICAgICAgICAgJHdyZXYgZXEgJG1ldGEtPntyZXZpc2lvbn0gYW5kCisgICAgICAgICAgICAgJHdyZXYgbmUgIjAiIGFuZAorICAgICAgICAgICAgICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17bW9kaWZpZWRfZmlsZW5hbWV9ICkKKyAgICAgICAgeworICAgICAgICAgICAgJHN0YXR1cyB8fD0gIkxvY2FsbHkgTW9kaWZpZWQiOworICAgICAgICB9CiAKLSAgICAgICAgIyBOZWVkcyBNZXJnZSBpZiB3b3JraW5nIGNvcHkgcmV2aXNpb24gaXMgbGVzcyB0aGFuIHJlcG8gY29weSBhbmQgdGhlcmUgYXJlIGxvY2FsIGNoYW5nZXMKLSAgICAgICAgJHN0YXR1cyB8fD0gIk5lZWRzIE1lcmdlIiBpZiAoIGRlZmluZWQgKCAkd3JldiApIGFuZCBkZWZpbmVkICggJG1ldGEtPntyZXZpc2lvbn0gKSBhbmQgJG1ldGEtPntyZXZpc2lvbn0gPiAkd3JldiBhbmQgJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXttb2RpZmllZF9maWxlbmFtZX0gKTsKKyAgICAgICAgIyBOZWVkcyBNZXJnZSBpZiB3b3JraW5nIGNvcHkgcmV2aXNpb24gaXMgZGlmZmVyZW50CisgICAgICAgICMgKHVzdWFsbHkgb2xkZXIpIHRoYW4gcmVwbyBjb3B5IGFuZCB0aGVyZSBhcmUgbG9jYWwgY2hhbmdlcworICAgICAgICBpZiAoIGRlZmluZWQgKCAkd3JldiApIGFuZCBkZWZpbmVkICggJG1ldGEtPntyZXZpc2lvbn0gKSBhbmQKKyAgICAgICAgICAgICAkbWV0YS0+e3JldmlzaW9ufSBuZSAkd3JldiBhbmQKKyAgICAgICAgICAgICAkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e21vZGlmaWVkX2ZpbGVuYW1lfSApCisgICAgICAgIHsKKyAgICAgICAgICAgICRzdGF0dXMgfHw9ICJOZWVkcyBNZXJnZSI7CisgICAgICAgIH0KIAotICAgICAgICAkc3RhdHVzIHx8PSAiTG9jYWxseSBBZGRlZCIgaWYgKCBkZWZpbmVkICggJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXtyZXZpc2lvbn0gKSBhbmQgbm90IGRlZmluZWQgKCAkbWV0YS0+e3JldmlzaW9ufSApICk7Ci0gICAgICAgICRzdGF0dXMgfHw9ICJMb2NhbGx5IFJlbW92ZWQiIGlmICggZGVmaW5lZCAoICR3cmV2ICkgYW5kIGRlZmluZWQgKCAkbWV0YS0+e3JldmlzaW9ufSApIGFuZCAtJHdyZXYgPT0gJG1ldGEtPntyZXZpc2lvbn0gKTsKLSAgICAgICAgJHN0YXR1cyB8fD0gIlVucmVzb2x2ZWQgQ29uZmxpY3QiIGlmICggZGVmaW5lZCAoICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17Y29uZmxpY3R9ICkgYW5kICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17Y29uZmxpY3R9ID1+IC9eXCs9LyApOwotICAgICAgICAkc3RhdHVzIHx8PSAiRmlsZSBoYWQgY29uZmxpY3RzIG9uIG1lcmdlIiBpZiAoIDAgKTsKKyAgICAgICAgaWYgKCBkZWZpbmVkICggJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXtyZXZpc2lvbn0gKSBhbmQKKyAgICAgICAgICAgICAoICFkZWZpbmVkKCRtZXRhLT57cmV2aXNpb259KSB8fAorICAgICAgICAgICAgICAgJG1ldGEtPntyZXZpc2lvbn0gZXEgIjAiICkgKQorICAgICAgICB7CisgICAgICAgICAgICAkc3RhdHVzIHx8PSAiTG9jYWxseSBBZGRlZCI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCBkZWZpbmVkICggJHdyZXYgKSBhbmQgZGVmaW5lZCAoICRtZXRhLT57cmV2aXNpb259ICkgYW5kCisgICAgICAgICAgICAgJHdyZXYgZXEgIi0kbWV0YS0+e3JldmlzaW9ufSIgKQorICAgICAgICB7CisgICAgICAgICAgICAkc3RhdHVzIHx8PSAiTG9jYWxseSBSZW1vdmVkIjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIGRlZmluZWQgKCAkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e2NvbmZsaWN0fSApIGFuZAorICAgICAgICAgICAgICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17Y29uZmxpY3R9ID1+IC9eXCs9LyApCisgICAgICAgIHsKKyAgICAgICAgICAgICRzdGF0dXMgfHw9ICJVbnJlc29sdmVkIENvbmZsaWN0IjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIDAgKQorICAgICAgICB7CisgICAgICAgICAgICAkc3RhdHVzIHx8PSAiRmlsZSBoYWQgY29uZmxpY3RzIG9uIG1lcmdlIjsKKyAgICAgICAgfQogCiAgICAgICAgICRzdGF0dXMgfHw9ICJVbmtub3duIjsKIAogICAgICAgICBteSAoJGZpbGVwYXJ0KSA9IGZpbGVuYW1lc3BsaXQoJGZpbGVuYW1lKTsKIAotICAgICAgICBwcmludCAiTSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iOworICAgICAgICBwcmludCAiTSA9PT09PT09IiAuICggIj0iIHggNjAgKSAuICJcbiI7CiAgICAgICAgIHByaW50ICJNIEZpbGU6ICRmaWxlcGFydFx0U3RhdHVzOiAkc3RhdHVzXG4iOwogICAgICAgICBpZiAoIGRlZmluZWQoJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXtyZXZpc2lvbn0pICkKICAgICAgICAgewotICAgICAgICAgICAgcHJpbnQgIk0gV29ya2luZyByZXZpc2lvbjpcdCIgLiAkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e3JldmlzaW9ufSAuICJcbiI7CisgICAgICAgICAgICBwcmludCAiTSBXb3JraW5nIHJldmlzaW9uOlx0IiAuCisgICAgICAgICAgICAgICAgICAkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e3JldmlzaW9ufSAuICJcbiI7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwcmludCAiTSBXb3JraW5nIHJldmlzaW9uOlx0Tm8gZW50cnkgZm9yICRmaWxlbmFtZVxuIjsKICAgICAgICAgfQogICAgICAgICBpZiAoIGRlZmluZWQoJG1ldGEtPntyZXZpc2lvbn0pICkKICAgICAgICAgewotICAgICAgICAgICAgcHJpbnQgIk0gUmVwb3NpdG9yeSByZXZpc2lvbjpcdDEuIiAuICRtZXRhLT57cmV2aXNpb259IC4gIlx0JHN0YXRlLT57Q1ZTUk9PVH0vJHN0YXRlLT57bW9kdWxlfS8kZmlsZW5hbWUsdlxuIjsKLSAgICAgICAgICAgIHByaW50ICJNIFN0aWNreSBUYWc6XHRcdChub25lKVxuIjsKLSAgICAgICAgICAgIHByaW50ICJNIFN0aWNreSBEYXRlOlx0XHQobm9uZSlcbiI7Ci0gICAgICAgICAgICBwcmludCAiTSBTdGlja3kgT3B0aW9uczpcdFx0KG5vbmUpXG4iOworICAgICAgICAgICAgcHJpbnQgIk0gUmVwb3NpdG9yeSByZXZpc2lvbjpcdCIgLgorICAgICAgICAgICAgICAgICAgICRtZXRhLT57cmV2aXNpb259IC4KKyAgICAgICAgICAgICAgICAgICAiXHQkc3RhdGUtPntDVlNST09UfS8kc3RhdGUtPnttb2R1bGV9LyRmaWxlbmFtZSx2XG4iOworICAgICAgICAgICAgbXkoJHRhZ09yRGF0ZSk9JHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXt0YWdfb3JfZGF0ZX07CisgICAgICAgICAgICBteSgkdGFnKT0oJHRhZ09yRGF0ZT1+bS9eVCguKykkLyk7CisgICAgICAgICAgICBpZiggIWRlZmluZWQoJHRhZykgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICR0YWc9Iihub25lKSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmludCAiTSBTdGlja3kgVGFnOlx0XHQkdGFnXG4iOworICAgICAgICAgICAgbXkoJGRhdGUpPSgkdGFnT3JEYXRlPX5tL15EKC4rKSQvKTsKKyAgICAgICAgICAgIGlmKCAhZGVmaW5lZCgkZGF0ZSkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICRkYXRlPSIobm9uZSkiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJpbnQgIk0gU3RpY2t5IERhdGU6XHRcdCRkYXRlXG4iOworICAgICAgICAgICAgbXkoJG9wdGlvbnMpPSRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17b3B0aW9uc307CisgICAgICAgICAgICBpZiggJG9wdGlvbnMgZXEgIiIgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICRvcHRpb25zPSIobm9uZSkiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJpbnQgIk0gU3RpY2t5IE9wdGlvbnM6XHRcdCRvcHRpb25zXG4iOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHJpbnQgIk0gUmVwb3NpdG9yeSByZXZpc2lvbjpcdE5vIHJldmlzaW9uIGNvbnRyb2wgZmlsZVxuIjsKICAgICAgICAgfQpAQCAtMTY1MSw5NiArMTk4MCwxNDkgQEAKICAgICAgICAgJHJldmlzaW9uMSA9ICRzdGF0ZS0+e29wdH17cn07CiAgICAgfQogCi0gICAgJHJldmlzaW9uMSA9fiBzL14xXC4vLyBpZiAoIGRlZmluZWQgKCAkcmV2aXNpb24xICkgKTsKLSAgICAkcmV2aXNpb24yID1+IHMvXjFcLi8vIGlmICggZGVmaW5lZCAoICRyZXZpc2lvbjIgKSApOwotCi0gICAgJGxvZy0+ZGVidWcoIkRpZmZpbmcgcmV2aXNpb25zICIgLiAoIGRlZmluZWQoJHJldmlzaW9uMSkgPyAkcmV2aXNpb24xIDogIltOVUxMXSIgKSAuICIgYW5kICIgLiAoIGRlZmluZWQoJHJldmlzaW9uMikgPyAkcmV2aXNpb24yIDogIltOVUxMXSIgKSApOworICAgICRsb2ctPmRlYnVnKCJEaWZmaW5nIHJldmlzaW9ucyAiIC4KKyAgICAgICAgICAgICAgICAoIGRlZmluZWQoJHJldmlzaW9uMSkgPyAkcmV2aXNpb24xIDogIltOVUxMXSIgKSAuCisgICAgICAgICAgICAgICAgIiBhbmQgIiAuICggZGVmaW5lZCgkcmV2aXNpb24yKSA/ICRyZXZpc2lvbjIgOiAiW05VTExdIiApICk7CiAKICAgICAjIEdyYWIgYSBoYW5kbGUgdG8gdGhlIFNRTGl0ZSBkYiBhbmQgZG8gYW55IG5lY2Vzc2FyeSB1cGRhdGVzCi0gICAgbXkgJHVwZGF0ZXIgPSBHSVRDVlM6OnVwZGF0ZXItPm5ldygkc3RhdGUtPntDVlNST09UfSwgJHN0YXRlLT57bW9kdWxlfSwgJGxvZyk7CisgICAgbXkgJHVwZGF0ZXI7CisgICAgJHVwZGF0ZXIgPSBHSVRDVlM6OnVwZGF0ZXItPm5ldygkc3RhdGUtPntDVlNST09UfSwgJHN0YXRlLT57bW9kdWxlfSwgJGxvZyk7CiAgICAgJHVwZGF0ZXItPnVwZGF0ZSgpOwogCi0gICAgIyBpZiBubyBmaWxlcyB3ZXJlIHNwZWNpZmllZCwgd2UgbmVlZCB0byB3b3JrIG91dCB3aGF0IGZpbGVzIHdlIHNob3VsZCBiZSBwcm92aWRpbmcgc3RhdHVzIG9uIC4uLgorICAgICMgaWYgbm8gZmlsZXMgd2VyZSBzcGVjaWZpZWQsIHdlIG5lZWQgdG8gd29yayBvdXQgd2hhdCBmaWxlcyB3ZSBzaG91bGQKKyAgICAjIGJlIHByb3ZpZGluZyBzdGF0dXMgb24gLi4uCiAgICAgYXJnc2Zyb21kaXIoJHVwZGF0ZXIpOwogCisgICAgbXkoJGZvdW5kRGlmZik7CisKICAgICAjIGZvcmVhY2ggZmlsZSBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZSAuLi4KLSAgICBmb3JlYWNoIG15ICRmaWxlbmFtZSAoIEB7JHN0YXRlLT57YXJnc319ICkKKyAgICBmb3JlYWNoIG15ICRhcmdGaWxlbmFtZSAoIEB7JHN0YXRlLT57YXJnc319ICkKICAgICB7Ci0gICAgICAgICRmaWxlbmFtZSA9IGZpbGVjbGVhbnVwKCRmaWxlbmFtZSk7CisgICAgICAgIG15KCRmaWxlbmFtZSkgPSBmaWxlY2xlYW51cCgkYXJnRmlsZW5hbWUpOwogCiAgICAgICAgIG15ICggJGZoLCAkZmlsZTEsICRmaWxlMiwgJG1ldGExLCAkbWV0YTIsICRmaWxlZGlmZiApOwogCiAgICAgICAgIG15ICR3cmV2ID0gcmV2cGFyc2UoJGZpbGVuYW1lKTsKIAotICAgICAgICAjIFdlIG5lZWQgX3NvbWV0aGluZ18gdG8gZGlmZiBhZ2FpbnN0Ci0gICAgICAgIG5leHQgdW5sZXNzICggZGVmaW5lZCAoICR3cmV2ICkgKTsKKyAgICAgICAgIyBQcmlvcml0eSBmb3IgcmV2aXNpb24xOgorICAgICAgICAjICAxLiBGaXJzdCAtciAobWlzc2luZyBmaWxlOiBjaGVjayAtTikKKyAgICAgICAgIyAgMi4gd3JldiBmcm9tIGNsaWVudCdzIEVudHJ5IGxpbmUKKyAgICAgICAgIyAgICAgIC0gbWlzc2luZyBsaW5lL2ZpbGU6IGNoZWNrIC1OCisgICAgICAgICMgICAgICAtICIwIjogYWRkZWQgZmlsZSBub3QgY29tbWl0dGVkIChlbXB0eSBjb250ZW50cyBmb3IgcmV2MSkKKyAgICAgICAgIyAgICAgIC0gUHJlZml4ZWQgd2l0aCBkYXNoICh0byBiZSByZW1vdmVkKTogY2hlY2sgLU4KIAotICAgICAgICAjIGlmIHdlIGhhdmUgYSAtciBzd2l0Y2gsIHVzZSBpdAogICAgICAgICBpZiAoIGRlZmluZWQgKCAkcmV2aXNpb24xICkgKQogICAgICAgICB7Ci0gICAgICAgICAgICAoIHVuZGVmLCAkZmlsZTEgKSA9IHRlbXBmaWxlKCBESVIgPT4gJFRFTVBfRElSLCBPUEVOID0+IDAgKTsKICAgICAgICAgICAgICRtZXRhMSA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSwgJHJldmlzaW9uMSk7Ci0gICAgICAgICAgICB1bmxlc3MgKCBkZWZpbmVkICggJG1ldGExICkgYW5kICRtZXRhMS0+e2ZpbGVoYXNofSBuZSAiZGVsZXRlZCIgKQorICAgICAgICB9CisgICAgICAgIGVsc2lmKCBkZWZpbmVkKCR3cmV2KSAmJiAkd3JldiBuZSAiMCIgKQorICAgICAgICB7CisgICAgICAgICAgICBteSgkcm1SZXYpPSR3cmV2OworICAgICAgICAgICAgJHJtUmV2PX5zL14tLy87CisgICAgICAgICAgICAkbWV0YTEgPSAkdXBkYXRlci0+Z2V0bWV0YSgkZmlsZW5hbWUsICRybVJldik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCAhZGVmaW5lZCgkbWV0YTEpIHx8CisgICAgICAgICAgICAgJG1ldGExLT57ZmlsZWhhc2h9IGVxICJkZWxldGVkIiApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmKCAhZXhpc3RzKCRzdGF0ZS0+e29wdH17Tn0pICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBwcmludCAiRSBGaWxlICRmaWxlbmFtZSBhdCByZXZpc2lvbiAxLiRyZXZpc2lvbjEgZG9lc24ndCBleGlzdFxuIjsKKyAgICAgICAgICAgICAgICBpZighZGVmaW5lZCgkcmV2aXNpb24xKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHByaW50ICJFIEZpbGUgJGZpbGVuYW1lIGF0IHJldmlzaW9uICRyZXZpc2lvbjEgZG9lc24ndCBleGlzdFxuIjsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRyYW5zbWl0ZmlsZSgkbWV0YTEtPntmaWxlaGFzaH0sIHsgdGFyZ2V0ZmlsZSA9PiAkZmlsZTEgfSk7CisgICAgICAgICAgICBlbHNpZiggIWRlZmluZWQoJG1ldGExKSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgJG1ldGExID0geworICAgICAgICAgICAgICAgICAgICBuYW1lID0+ICRmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNpb24gPT4gJzAnLAorICAgICAgICAgICAgICAgICAgICBmaWxlaGFzaCA9PiAnZGVsZXRlZCcKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgICMgb3RoZXJ3aXNlIHdlIGp1c3QgdXNlIHRoZSB3b3JraW5nIGNvcHkgcmV2aXNpb24KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICAoIHVuZGVmLCAkZmlsZTEgKSA9IHRlbXBmaWxlKCBESVIgPT4gJFRFTVBfRElSLCBPUEVOID0+IDAgKTsKLSAgICAgICAgICAgICRtZXRhMSA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSwgJHdyZXYpOwotICAgICAgICAgICAgdHJhbnNtaXRmaWxlKCRtZXRhMS0+e2ZpbGVoYXNofSwgeyB0YXJnZXRmaWxlID0+ICRmaWxlMSB9KTsKLSAgICAgICAgfQorCisgICAgICAgICMgUHJpb3JpdHkgZm9yIHJldmlzaW9uMjoKKyAgICAgICAgIyAgMS4gU2Vjb25kIC1yIChtaXNzaW5nIGZpbGU6IGNoZWNrIC1OKQorICAgICAgICAjICAyLiBNb2RpZmllZCBmaWxlIGNvbnRlbnRzIGZyb20gY2xpZW50CisgICAgICAgICMgIDMuIHdyZXYgZnJvbSBjbGllbnQncyBFbnRyeSBsaW5lCisgICAgICAgICMgICAgICAtIG1pc3NpbmcgbGluZS9maWxlOiBjaGVjayAtTgorICAgICAgICAjICAgICAgLSBQcmVmaXhlZCB3aXRoIGRhc2ggKHRvIGJlIHJlbW92ZWQpOiBjaGVjayAtTgogCiAgICAgICAgICMgaWYgd2UgaGF2ZSBhIHNlY29uZCAtciBzd2l0Y2gsIHVzZSBpdCB0b28KICAgICAgICAgaWYgKCBkZWZpbmVkICggJHJldmlzaW9uMiApICkKICAgICAgICAgewotICAgICAgICAgICAgKCB1bmRlZiwgJGZpbGUyICkgPSB0ZW1wZmlsZSggRElSID0+ICRURU1QX0RJUiwgT1BFTiA9PiAwICk7CiAgICAgICAgICAgICAkbWV0YTIgPSAkdXBkYXRlci0+Z2V0bWV0YSgkZmlsZW5hbWUsICRyZXZpc2lvbjIpOwotCi0gICAgICAgICAgICB1bmxlc3MgKCBkZWZpbmVkICggJG1ldGEyICkgYW5kICRtZXRhMi0+e2ZpbGVoYXNofSBuZSAiZGVsZXRlZCIgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHByaW50ICJFIEZpbGUgJGZpbGVuYW1lIGF0IHJldmlzaW9uIDEuJHJldmlzaW9uMiBkb2Vzbid0IGV4aXN0XG4iOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRyYW5zbWl0ZmlsZSgkbWV0YTItPntmaWxlaGFzaH0sIHsgdGFyZ2V0ZmlsZSA9PiAkZmlsZTIgfSk7CiAgICAgICAgIH0KLSAgICAgICAgIyBvdGhlcndpc2Ugd2UganVzdCB1c2UgdGhlIHdvcmtpbmcgY29weQotICAgICAgICBlbHNlCisgICAgICAgIGVsc2lmKGRlZmluZWQoJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXttb2RpZmllZF9maWxlbmFtZX0pKQogICAgICAgICB7CiAgICAgICAgICAgICAkZmlsZTIgPSAkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e21vZGlmaWVkX2ZpbGVuYW1lfTsKKwkgICAgJG1ldGEyID0geworICAgICAgICAgICAgICAgIG5hbWUgPT4gJGZpbGVuYW1lLAorCSAgICAgICAgcmV2aXNpb24gPT4gJzAnLAorCSAgICAgICAgZmlsZWhhc2ggPT4gJ21vZGlmaWVkJworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICBlbHNpZiggZGVmaW5lZCgkd3JldikgJiYgKCR3cmV2IX4vXi0vKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmKCFkZWZpbmVkKCRyZXZpc2lvbjEpKSAgIyBubyByZXZpc2lvbiBhbmQgbm8gbW9kaWZpY2F0aW9uczoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgJG1ldGEyID0gJHVwZGF0ZXItPmdldG1ldGEoJGZpbGVuYW1lLCAkd3Jldik7CisgICAgICAgIH0KKyAgICAgICAgaWYoIWRlZmluZWQoJGZpbGUyKSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkbWV0YTIpIHx8CisgICAgICAgICAgICAgICAgICRtZXRhMi0+e2ZpbGVoYXNofSBlcSAiZGVsZXRlZCIgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmKCAhZXhpc3RzKCRzdGF0ZS0+e29wdH17Tn0pICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmKCFkZWZpbmVkKCRyZXZpc2lvbjIpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiRSBGaWxlICRmaWxlbmFtZSBhdCByZXZpc2lvbiAkcmV2aXNpb24yIGRvZXNuJ3QgZXhpc3RcbiI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzaWYoICFkZWZpbmVkKCRtZXRhMikgKQorICAgICAgICAgICAgICAgIHsKKwkgICAgICAgICAgICAkbWV0YTIgPSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0+ICRmaWxlbmFtZSwKKwkgICAgICAgICAgICAgICAgcmV2aXNpb24gPT4gJzAnLAorCSAgICAgICAgICAgICAgICBmaWxlaGFzaCA9PiAnZGVsZXRlZCcKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICAjIGlmIHdlIGhhdmUgYmVlbiBnaXZlbiAtciwgYW5kIHdlIGRvbid0IGhhdmUgYSAkZmlsZTIgeWV0LCBsZXRzIGdldCBvbmUKLSAgICAgICAgaWYgKCBkZWZpbmVkICggJHJldmlzaW9uMSApIGFuZCBub3QgZGVmaW5lZCAoICRmaWxlMiApICkKKyAgICAgICAgaWYoICRtZXRhMS0+e2ZpbGVoYXNofSBlcSAkbWV0YTItPntmaWxlaGFzaH0gKQorICAgICAgICB7CisgICAgICAgICAgICAkbG9nLT5pbmZvKCJ1bmNoYW5nZWQgJGZpbGVuYW1lIik7CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisKKyAgICAgICAgIyBSZXRyaWV2ZSByZXZpc2lvbiBjb250ZW50czoKKyAgICAgICAgKCB1bmRlZiwgJGZpbGUxICkgPSB0ZW1wZmlsZSggRElSID0+ICRURU1QX0RJUiwgT1BFTiA9PiAwICk7CisgICAgICAgIHRyYW5zbWl0ZmlsZSgkbWV0YTEtPntmaWxlaGFzaH0sIHsgdGFyZ2V0ZmlsZSA9PiAkZmlsZTEgfSk7CisKKyAgICAgICAgaWYoIWRlZmluZWQoJGZpbGUyKSkKICAgICAgICAgewogICAgICAgICAgICAgKCB1bmRlZiwgJGZpbGUyICkgPSB0ZW1wZmlsZSggRElSID0+ICRURU1QX0RJUiwgT1BFTiA9PiAwICk7Ci0gICAgICAgICAgICAkbWV0YTIgPSAkdXBkYXRlci0+Z2V0bWV0YSgkZmlsZW5hbWUsICR3cmV2KTsKICAgICAgICAgICAgIHRyYW5zbWl0ZmlsZSgkbWV0YTItPntmaWxlaGFzaH0sIHsgdGFyZ2V0ZmlsZSA9PiAkZmlsZTIgfSk7CiAgICAgICAgIH0KIAotICAgICAgICAjIFdlIG5lZWQgdG8gaGF2ZSByZXRyaWV2ZWQgc29tZXRoaW5nIHVzZWZ1bAotICAgICAgICBuZXh0IHVubGVzcyAoIGRlZmluZWQgKCAkbWV0YTEgKSApOwotCi0gICAgICAgICMgRmlsZXMgdG8gZGF0ZSBpZiB0aGUgd29ya2luZyBjb3B5IGFuZCByZXBvIGNvcHkgaGF2ZSB0aGUgc2FtZSByZXZpc2lvbiwgYW5kIHRoZSB3b3JraW5nIGNvcHkgaXMgdW5tb2RpZmllZAotICAgICAgICBuZXh0IGlmICggbm90IGRlZmluZWQgKCAkbWV0YTIgKSBhbmQgJHdyZXYgPT0gJG1ldGExLT57cmV2aXNpb259Ci0gICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAoICggJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXt1bmNoYW5nZWR9IGFuZCAoIG5vdCBkZWZpbmVkICggJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXtjb25mbGljdH0gKSBvciAkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e2NvbmZsaWN0fSAhfiAvXlwrPS8gKSApCi0gICAgICAgICAgICAgICAgICAgICBvciAoIGRlZmluZWQoJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXttb2RpZmllZF9oYXNofSkgYW5kICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17bW9kaWZpZWRfaGFzaH0gZXEgJG1ldGExLT57ZmlsZWhhc2h9ICkgKQotICAgICAgICAgICAgICAgICAgKTsKLQotICAgICAgICAjIEFwcGFyZW50bHkgd2Ugb25seSBzaG93IGRpZmZzIGZvciBsb2NhbGx5IG1vZGlmaWVkIGZpbGVzCi0gICAgICAgIG5leHQgdW5sZXNzICggZGVmaW5lZCgkbWV0YTIpIG9yIGRlZmluZWQgKCAkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e21vZGlmaWVkX2ZpbGVuYW1lfSApICk7Ci0KLSAgICAgICAgcHJpbnQgIk0gSW5kZXg6ICRmaWxlbmFtZVxuIjsKLSAgICAgICAgcHJpbnQgIk0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIjsKKyAgICAgICAgIyBHZW5lcmF0ZSB0aGUgYWN0dWFsIGRpZmY6CisgICAgICAgIHByaW50ICJNIEluZGV4OiAkYXJnRmlsZW5hbWVcbiI7CisgICAgICAgIHByaW50ICJNID09PT09PT0iIC4gKCAiPSIgeCA2MCApIC4gIlxuIjsKICAgICAgICAgcHJpbnQgIk0gUkNTIGZpbGU6ICRzdGF0ZS0+e0NWU1JPT1R9LyRzdGF0ZS0+e21vZHVsZX0vJGZpbGVuYW1lLHZcbiI7Ci0gICAgICAgIHByaW50ICJNIHJldHJpZXZpbmcgcmV2aXNpb24gMS4kbWV0YTEtPntyZXZpc2lvbn1cbiIgaWYgKCBkZWZpbmVkICggJG1ldGExICkgKTsKLSAgICAgICAgcHJpbnQgIk0gcmV0cmlldmluZyByZXZpc2lvbiAxLiRtZXRhMi0+e3JldmlzaW9ufVxuIiBpZiAoIGRlZmluZWQgKCAkbWV0YTIgKSApOworICAgICAgICBpZiAoIGRlZmluZWQgKCAkbWV0YTEgKSAmJiAkbWV0YTEtPntyZXZpc2lvbn0gbmUgIjAiICkKKyAgICAgICAgeworICAgICAgICAgICAgcHJpbnQgIk0gcmV0cmlldmluZyByZXZpc2lvbiAkbWV0YTEtPntyZXZpc2lvbn1cbiIKKyAgICAgICAgfQorICAgICAgICBpZiAoIGRlZmluZWQgKCAkbWV0YTIgKSAmJiAkbWV0YTItPntyZXZpc2lvbn0gbmUgIjAiICkKKyAgICAgICAgeworICAgICAgICAgICAgcHJpbnQgIk0gcmV0cmlldmluZyByZXZpc2lvbiAkbWV0YTItPntyZXZpc2lvbn1cbiIKKyAgICAgICAgfQogICAgICAgICBwcmludCAiTSBkaWZmICI7CiAgICAgICAgIGZvcmVhY2ggbXkgJG9wdCAoIGtleXMgJXskc3RhdGUtPntvcHR9fSApCiAgICAgICAgIHsKQEAgLTE3NTIsMzAgKzIxMzQsNzkgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHByaW50ICItJG9wdCAiOwotICAgICAgICAgICAgICAgIHByaW50ICIkc3RhdGUtPntvcHR9eyRvcHR9ICIgaWYgKCBkZWZpbmVkICggJHN0YXRlLT57b3B0fXskb3B0fSApICk7CisgICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICggJHN0YXRlLT57b3B0fXskb3B0fSApICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHByaW50ICIkc3RhdGUtPntvcHR9eyRvcHR9ICIKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgcHJpbnQgIiRmaWxlbmFtZVxuIjsKKyAgICAgICAgcHJpbnQgIiRhcmdGaWxlbmFtZVxuIjsKIAotICAgICAgICAkbG9nLT5pbmZvKCJEaWZmaW5nICRmaWxlbmFtZSAtciAkbWV0YTEtPntyZXZpc2lvbn0gLXIgIiAuICggJG1ldGEyLT57cmV2aXNpb259IG9yICJ3b3JraW5nY29weSIgKSk7CisgICAgICAgICRsb2ctPmluZm8oIkRpZmZpbmcgJGZpbGVuYW1lIC1yICRtZXRhMS0+e3JldmlzaW9ufSAtciAiIC4KKyAgICAgICAgICAgICAgICAgICAoICRtZXRhMi0+e3JldmlzaW9ufSBvciAid29ya2luZ2NvcHkiICkpOwogCi0gICAgICAgICggJGZoLCAkZmlsZWRpZmYgKSA9IHRlbXBmaWxlICggRElSID0+ICRURU1QX0RJUiApOworICAgICAgICAjIFRPRE86IFVzZSAtLWxhYmVsIGluc3RlYWQgb2YgLUwgYmVjYXVzZSAtTCBpcyBubyBsb25nZXIKKyAgICAgICAgIyAgZG9jdW1lbnRlZCBhbmQgbWF5IGdvIGF3YXkgc29tZWRheS4gIE5vdCBzdXJlIGlmIHRoZXJlIHRoZXJlIGFyZQorICAgICAgICAjICB2ZXJzaW9ucyB0aGF0IG9ubHkgc3VwcG9ydCAtTCwgd2hpY2ggd291bGQgbWFrZSB0aGlzIGNoYW5nZSByaXNreT8KKyAgICAgICAgIyAgaHR0cDovL29zZGlyLmNvbS9tbC9idWctZ251LXV0aWxzLWdudS8yMDEwLTEyL21zZzAwMDYwLmh0bWwKKyAgICAgICAgIyAgICAoIm1hbiBkaWZmIiBzaG91bGQgYWN0dWFsbHkgZG9jdW1lbnQgdGhlIGJlc3QgbWlncmF0aW9uIHN0cmF0ZWd5LAorICAgICAgICAjICBbY3VycmVudCBiZWhhdmlvciwgZnV0dXJlIGNoYW5nZXMsIG9sZCBjb21wYXRpYmlsaXR5IGlzc3VlcworICAgICAgICAjICBvciBsYWNrIHRoZXJlb2YsIGV0Y10sIG5vdCBqdXN0IHN0b3AgbWVudGlvbmluZyB0aGUgb3B0aW9uLi4uKQorICAgICAgICAjIFRPRE86IFJlYWwgQ1ZTIHNlZW1zIHRvIGluY2x1ZGUgYSBkYXRlIGluIHRoZSBsYWJlbCwgYmVmb3JlCisgICAgICAgICMgIHRoZSByZXZpc2lvbiBwYXJ0LCB3aXRob3V0IHRoZSBrZXl3b3JkICJyZXZpc2lvbiIuICBUaGUgZm9sbG93aW5nCisgICAgICAgICMgIGhhcyBtaW5pbWFsIGNoYW5nZXMgY29tcGFyZWQgdG8gb3JpZ2luYWwgdmVyc2lvbnMgb2YKKyAgICAgICAgIyAgZ2l0LWN2c3NlcnZlci5wZXJsLiAgKE1vc3RseSB0YWIgdnMgc3BhY2UgYWZ0ZXIgZmlsZW5hbWUuKQogCisgICAgICAgIG15IChAZGlmZkNtZCkgPSAoICdkaWZmJyApOworICAgICAgICBpZiAoIGV4aXN0cygkc3RhdGUtPntvcHR9e059KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHB1c2ggQGRpZmZDbWQsIi1OIjsKKyAgICAgICAgfQogICAgICAgICBpZiAoIGV4aXN0cyAkc3RhdGUtPntvcHR9e3V9ICkKICAgICAgICAgewotICAgICAgICAgICAgc3lzdGVtKCJkaWZmIC11IC1MICckZmlsZW5hbWUgcmV2aXNpb24gMS4kbWV0YTEtPntyZXZpc2lvbn0nIC1MICckZmlsZW5hbWUgIiAuICggZGVmaW5lZCgkbWV0YTItPntyZXZpc2lvbn0pID8gInJldmlzaW9uIDEuJG1ldGEyLT57cmV2aXNpb259IiA6ICJ3b3JraW5nIGNvcHkiICkgLiAiJyAkZmlsZTEgJGZpbGUyID4gJGZpbGVkaWZmIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzeXN0ZW0oImRpZmYgJGZpbGUxICRmaWxlMiA+ICRmaWxlZGlmZiIpOwotICAgICAgICB9CisgICAgICAgICAgICBwdXNoIEBkaWZmQ21kLCgiLXUiLCItTCIpOworICAgICAgICAgICAgaWYoICRtZXRhMS0+e2ZpbGVoYXNofSBlcSAiZGVsZXRlZCIgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHB1c2ggQGRpZmZDbWQsIi9kZXYvbnVsbCI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2ggQGRpZmZDbWQsKCIkYXJnRmlsZW5hbWVcdHJldmlzaW9uICRtZXRhMS0+e3JldmlzaW9ufSIpOworICAgICAgICAgICAgfQogCi0gICAgICAgIHdoaWxlICggPCRmaD4gKQotICAgICAgICB7Ci0gICAgICAgICAgICBwcmludCAiTSAkXyI7CisgICAgICAgICAgICBpZiggZGVmaW5lZCgkbWV0YTItPntmaWxlaGFzaH0pICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiggJG1ldGEyLT57ZmlsZWhhc2h9IGVxICJkZWxldGVkIiApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBwdXNoIEBkaWZmQ21kLCgiLUwiLCIvZGV2L251bGwiKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwdXNoIEBkaWZmQ21kLCgiLUwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJGFyZ0ZpbGVuYW1lXHRyZXZpc2lvbiAkbWV0YTItPntyZXZpc2lvbn0iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2ggQGRpZmZDbWQsKCItTCIsIiRhcmdGaWxlbmFtZVx0d29ya2luZyBjb3B5Iik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgY2xvc2UgJGZoOworICAgICAgICBwdXNoIEBkaWZmQ21kLCgkZmlsZTEsJGZpbGUyKTsKKyAgICAgICAgaWYoIW9wZW4oRElGRiwiLXwiLEBkaWZmQ21kKSkKKyAgICAgICAgeworICAgICAgICAgICAgJGxvZy0+d2FybigiVW5hYmxlIHRvIHJ1biBkaWZmOiAkISIpOworICAgICAgICB9CisgICAgICAgIG15KCRkaWZmTGluZSk7CisgICAgICAgIHdoaWxlKGRlZmluZWQoJGRpZmZMaW5lPTxESUZGPikpCisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW50ICJNICRkaWZmTGluZSI7CisgICAgICAgICAgICAkZm91bmREaWZmPTE7CisgICAgICAgIH0KKyAgICAgICAgY2xvc2UoRElGRik7CiAgICAgfQogCi0gICAgcHJpbnQgIm9rXG4iOworICAgIGlmKCRmb3VuZERpZmYpCisgICAgeworICAgICAgICBwcmludCAiZXJyb3IgIFxuIjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcHJpbnQgIm9rXG4iOworICAgIH0KIH0KIAogc3ViIHJlcV9sb2cKQEAgLTE3ODcsMjIgKzIyMTgsMTkgQEAKICAgICAkbG9nLT5kZWJ1ZygicmVxX2xvZyA6ICIgLiAoIGRlZmluZWQoJGRhdGEpID8gJGRhdGEgOiAiW05VTExdIiApKTsKICAgICAjJGxvZy0+ZGVidWcoImxvZyBzdGF0ZSA6ICIgLiBEdW1wZXIoJHN0YXRlKSk7CiAKLSAgICBteSAoICRtaW5yZXYsICRtYXhyZXYgKTsKLSAgICBpZiAoIGRlZmluZWQgKCAkc3RhdGUtPntvcHR9e3J9ICkgYW5kICRzdGF0ZS0+e29wdH17cn0gPX4gLyhbXGQuXSspPyg6Oj8pKFtcZC5dKyk/LyApCisgICAgbXkgKCAkcmV2RmlsdGVyICk7CisgICAgaWYgKCBkZWZpbmVkICggJHN0YXRlLT57b3B0fXtyfSApICkKICAgICB7Ci0gICAgICAgIG15ICRjb250cm9sID0gJDI7Ci0gICAgICAgICRtaW5yZXYgPSAkMTsKLSAgICAgICAgJG1heHJldiA9ICQzOwotICAgICAgICAkbWlucmV2ID1+IHMvXjFcLi8vIGlmICggZGVmaW5lZCAoICRtaW5yZXYgKSApOwotICAgICAgICAkbWF4cmV2ID1+IHMvXjFcLi8vIGlmICggZGVmaW5lZCAoICRtYXhyZXYgKSApOwotICAgICAgICAkbWlucmV2KysgaWYgKCBkZWZpbmVkKCRtaW5yZXYpIGFuZCAkY29udHJvbCBlcSAiOjoiICk7CisgICAgICAgICRyZXZGaWx0ZXIgPSAkc3RhdGUtPntvcHR9e3J9OwogICAgIH0KIAogICAgICMgR3JhYiBhIGhhbmRsZSB0byB0aGUgU1FMaXRlIGRiIGFuZCBkbyBhbnkgbmVjZXNzYXJ5IHVwZGF0ZXMKLSAgICBteSAkdXBkYXRlciA9IEdJVENWUzo6dXBkYXRlci0+bmV3KCRzdGF0ZS0+e0NWU1JPT1R9LCAkc3RhdGUtPnttb2R1bGV9LCAkbG9nKTsKKyAgICBteSAkdXBkYXRlcjsKKyAgICAkdXBkYXRlciA9IEdJVENWUzo6dXBkYXRlci0+bmV3KCRzdGF0ZS0+e0NWU1JPT1R9LCAkc3RhdGUtPnttb2R1bGV9LCAkbG9nKTsKICAgICAkdXBkYXRlci0+dXBkYXRlKCk7CiAKLSAgICAjIGlmIG5vIGZpbGVzIHdlcmUgc3BlY2lmaWVkLCB3ZSBuZWVkIHRvIHdvcmsgb3V0IHdoYXQgZmlsZXMgd2Ugc2hvdWxkIGJlIHByb3ZpZGluZyBzdGF0dXMgb24gLi4uCisgICAgIyBpZiBubyBmaWxlcyB3ZXJlIHNwZWNpZmllZCwgd2UgbmVlZCB0byB3b3JrIG91dCB3aGF0IGZpbGVzIHdlCisgICAgIyBzaG91bGQgYmUgcHJvdmlkaW5nIHN0YXR1cyBvbiAuLi4KICAgICBhcmdzZnJvbWRpcigkdXBkYXRlcik7CiAKICAgICAjIGZvcmVhY2ggZmlsZSBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZSAuLi4KQEAgLTE4MTIsNTMgKzIyNDAsNDYgQEAKIAogICAgICAgICBteSAkaGVhZG1ldGEgPSAkdXBkYXRlci0+Z2V0bWV0YSgkZmlsZW5hbWUpOwogCi0gICAgICAgIG15ICRyZXZpc2lvbnMgPSAkdXBkYXRlci0+Z2V0bG9nKCRmaWxlbmFtZSk7Ci0gICAgICAgIG15ICR0b3RhbHJldmlzaW9ucyA9IHNjYWxhcihAJHJldmlzaW9ucyk7Ci0KLSAgICAgICAgaWYgKCBkZWZpbmVkICggJG1pbnJldiApICkKLSAgICAgICAgewotICAgICAgICAgICAgJGxvZy0+ZGVidWcoIlJlbW92aW5nIHJldmlzaW9ucyBsZXNzIHRoYW4gJG1pbnJldiIpOwotICAgICAgICAgICAgd2hpbGUgKCBzY2FsYXIoQCRyZXZpc2lvbnMpID4gMCBhbmQgJHJldmlzaW9ucy0+Wy0xXXtyZXZpc2lvbn0gPCAkbWlucmV2ICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBwb3AgQCRyZXZpc2lvbnM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCBkZWZpbmVkICggJG1heHJldiApICkKLSAgICAgICAgewotICAgICAgICAgICAgJGxvZy0+ZGVidWcoIlJlbW92aW5nIHJldmlzaW9ucyBncmVhdGVyIHRoYW4gJG1heHJldiIpOwotICAgICAgICAgICAgd2hpbGUgKCBzY2FsYXIoQCRyZXZpc2lvbnMpID4gMCBhbmQgJHJldmlzaW9ucy0+WzBde3JldmlzaW9ufSA+ICRtYXhyZXYgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNoaWZ0IEAkcmV2aXNpb25zOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIG15ICgkcmV2aXNpb25zLCR0b3RhbHJldmlzaW9ucykgPSAkdXBkYXRlci0+Z2V0bG9nKCRmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldkZpbHRlcik7CiAKICAgICAgICAgbmV4dCB1bmxlc3MgKCBzY2FsYXIoQCRyZXZpc2lvbnMpICk7CiAKICAgICAgICAgcHJpbnQgIk0gXG4iOwogICAgICAgICBwcmludCAiTSBSQ1MgZmlsZTogJHN0YXRlLT57Q1ZTUk9PVH0vJHN0YXRlLT57bW9kdWxlfS8kZmlsZW5hbWUsdlxuIjsKICAgICAgICAgcHJpbnQgIk0gV29ya2luZyBmaWxlOiAkZmlsZW5hbWVcbiI7Ci0gICAgICAgIHByaW50ICJNIGhlYWQ6IDEuJGhlYWRtZXRhLT57cmV2aXNpb259XG4iOworICAgICAgICBwcmludCAiTSBoZWFkOiAkaGVhZG1ldGEtPntyZXZpc2lvbn1cbiI7CiAgICAgICAgIHByaW50ICJNIGJyYW5jaDpcbiI7CiAgICAgICAgIHByaW50ICJNIGxvY2tzOiBzdHJpY3RcbiI7CiAgICAgICAgIHByaW50ICJNIGFjY2VzcyBsaXN0OlxuIjsKICAgICAgICAgcHJpbnQgIk0gc3ltYm9saWMgbmFtZXM6XG4iOwogICAgICAgICBwcmludCAiTSBrZXl3b3JkIHN1YnN0aXR1dGlvbjoga3ZcbiI7Ci0gICAgICAgIHByaW50ICJNIHRvdGFsIHJldmlzaW9uczogJHRvdGFscmV2aXNpb25zO1x0c2VsZWN0ZWQgcmV2aXNpb25zOiAiIC4gc2NhbGFyKEAkcmV2aXNpb25zKSAuICJcbiI7CisgICAgICAgIHByaW50ICJNIHRvdGFsIHJldmlzaW9uczogJHRvdGFscmV2aXNpb25zO1x0c2VsZWN0ZWQgcmV2aXNpb25zOiAiIC4KKyAgICAgICAgICAgICAgc2NhbGFyKEAkcmV2aXNpb25zKSAuICJcbiI7CiAgICAgICAgIHByaW50ICJNIGRlc2NyaXB0aW9uOlxuIjsKIAogICAgICAgICBmb3JlYWNoIG15ICRyZXZpc2lvbiAoIEAkcmV2aXNpb25zICkKICAgICAgICAgewogICAgICAgICAgICAgcHJpbnQgIk0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKLSAgICAgICAgICAgIHByaW50ICJNIHJldmlzaW9uIDEuJHJldmlzaW9uLT57cmV2aXNpb259XG4iOworICAgICAgICAgICAgcHJpbnQgIk0gcmV2aXNpb24gJHJldmlzaW9uLT57cmV2aXNpb259XG4iOwogICAgICAgICAgICAgIyByZWZvcm1hdCB0aGUgZGF0ZSBmb3IgbG9nIG91dHB1dAotICAgICAgICAgICAgJHJldmlzaW9uLT57bW9kaWZpZWR9ID0gc3ByaW50ZignJTA0ZC8lMDJkLyUwMmQgJXMnLCAkMywgJERBVEVfTElTVC0+eyQyfSwgJDEsICQ0ICkgaWYgKCAkcmV2aXNpb24tPnttb2RpZmllZH0gPX4gLyhcZCspXHMrKFx3KylccysoXGQrKVxzKyhcUyspLyBhbmQgZGVmaW5lZCgkREFURV9MSVNULT57JDJ9KSApOworICAgICAgICAgICAgaWYgKCAkcmV2aXNpb24tPnttb2RpZmllZH0gPX4gLyhcZCspXHMrKFx3KylccysoXGQrKVxzKyhcUyspLyBhbmQKKyAgICAgICAgICAgICAgICAgZGVmaW5lZCgkREFURV9MSVNULT57JDJ9KSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgJHJldmlzaW9uLT57bW9kaWZpZWR9ID0gc3ByaW50ZignJTA0ZC8lMDJkLyUwMmQgJXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkMywgJERBVEVfTElTVC0+eyQyfSwgJDEsICQ0ICk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAkcmV2aXNpb24tPnthdXRob3J9ID0gY3ZzX2F1dGhvcigkcmV2aXNpb24tPnthdXRob3J9KTsKLSAgICAgICAgICAgIHByaW50ICJNIGRhdGU6ICRyZXZpc2lvbi0+e21vZGlmaWVkfTsgIGF1dGhvcjogJHJldmlzaW9uLT57YXV0aG9yfTsgIHN0YXRlOiAiIC4gKCAkcmV2aXNpb24tPntmaWxlaGFzaH0gZXEgImRlbGV0ZWQiID8gImRlYWQiIDogIkV4cCIgKSAuICI7ICBsaW5lczogKzIgLTNcbiI7Ci0gICAgICAgICAgICBteSAkY29tbWl0bWVzc2FnZSA9ICR1cGRhdGVyLT5jb21taXRtZXNzYWdlKCRyZXZpc2lvbi0+e2NvbW1pdGhhc2h9KTsKKyAgICAgICAgICAgIHByaW50ICJNIGRhdGU6ICRyZXZpc2lvbi0+e21vZGlmaWVkfTsiIC4KKyAgICAgICAgICAgICAgICAgICIgIGF1dGhvcjogJHJldmlzaW9uLT57YXV0aG9yfTsgIHN0YXRlOiAiIC4KKyAgICAgICAgICAgICAgICAgICggJHJldmlzaW9uLT57ZmlsZWhhc2h9IGVxICJkZWxldGVkIiA/ICJkZWFkIiA6ICJFeHAiICkgLgorICAgICAgICAgICAgICAgICAgIjsgIGxpbmVzOiArMiAtM1xuIjsKKyAgICAgICAgICAgIG15ICRjb21taXRtZXNzYWdlOworICAgICAgICAgICAgJGNvbW1pdG1lc3NhZ2UgPSAkdXBkYXRlci0+Y29tbWl0bWVzc2FnZSgkcmV2aXNpb24tPntjb21taXRoYXNofSk7CiAgICAgICAgICAgICAkY29tbWl0bWVzc2FnZSA9fiBzL14vTSAvbWc7CiAgICAgICAgICAgICBwcmludCAkY29tbWl0bWVzc2FnZSAuICJcbiI7CiAgICAgICAgIH0KLSAgICAgICAgcHJpbnQgIk0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiI7CisgICAgICAgIHByaW50ICJNID09PT09PT0iIC4gKCAiPSIgeCA3MCApIC4gIlxuIjsKICAgICB9CiAKICAgICBwcmludCAib2tcbiI7CkBAIC0xOTY0LDcgKzIzODUsNyBAQAogICAgICAgICAgICAgICAgICAgICAkbWV0YWRhdGEtPnskY29tbWl0aGFzaH17YXV0aG9yfSA9IGN2c19hdXRob3IoJG1ldGFkYXRhLT57JGNvbW1pdGhhc2h9e2F1dGhvcn0pOwogICAgICAgICAgICAgICAgICAgICAkbWV0YWRhdGEtPnskY29tbWl0aGFzaH17bW9kaWZpZWR9ID0gc3ByaW50ZigiJTAyZC0lcy0lMDJkIiwgJDEsICQyLCAkMykgaWYgKCAkbWV0YWRhdGEtPnskY29tbWl0aGFzaH17bW9kaWZpZWR9ID1+IC9eKFxkKylccyhcdyspXHNcZFxkKFxkXGQpLyApOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwcmludGYoIk0gMS4lLTVkICAgICAgKCUtOHMgJTEwcyk6ICVzXG4iLAorICAgICAgICAgICAgICAgIHByaW50ZigiTSAlLTdzICAgICAgKCUtOHMgJTEwcyk6ICVzXG4iLAogICAgICAgICAgICAgICAgICAgICAkbWV0YWRhdGEtPnskY29tbWl0aGFzaH17cmV2aXNpb259LAogICAgICAgICAgICAgICAgICAgICAkbWV0YWRhdGEtPnskY29tbWl0aGFzaH17YXV0aG9yfSwKICAgICAgICAgICAgICAgICAgICAgJG1ldGFkYXRhLT57JGNvbW1pdGhhc2h9e21vZGlmaWVkfSwKQEAgLTIwMDUsNyArMjQyNiw3IEBACiAgICAgICAgICRvcHQgPSB7IEEgPT4gMCwgTiA9PiAwLCBQID0+IDAsIFIgPT4gMCwgYyA9PiAwLCBmID0+IDAsIGwgPT4gMCwgbiA9PiAwLCBwID0+IDAsIHMgPT4gMCwgciA9PiAxLCBEID0+IDEsIGQgPT4gMSwgayA9PiAxLCBqID0+IDEsIH0gaWYgKCAkdHlwZSBlcSAiY28iICk7CiAgICAgICAgICRvcHQgPSB7IHYgPT4gMCwgbCA9PiAwLCBSID0+IDAgfSBpZiAoICR0eXBlIGVxICJzdGF0dXMiICk7CiAgICAgICAgICRvcHQgPSB7IEEgPT4gMCwgUCA9PiAwLCBDID0+IDAsIGQgPT4gMCwgZiA9PiAwLCBsID0+IDAsIFIgPT4gMCwgcCA9PiAwLCBrID0+IDEsIHIgPT4gMSwgRCA9PiAxLCBqID0+IDEsIEkgPT4gMSwgVyA9PiAxIH0gaWYgKCAkdHlwZSBlcSAidXBkYXRlIiApOwotICAgICAgICAkb3B0ID0geyBsID0+IDAsIFIgPT4gMCwgayA9PiAxLCBEID0+IDEsIEQgPT4gMSwgciA9PiAyIH0gaWYgKCAkdHlwZSBlcSAiZGlmZiIgKTsKKyAgICAgICAgJG9wdCA9IHsgbCA9PiAwLCBSID0+IDAsIGsgPT4gMSwgRCA9PiAxLCBEID0+IDEsIHIgPT4gMiwgTiA9PiAwIH0gaWYgKCAkdHlwZSBlcSAiZGlmZiIgKTsKICAgICAgICAgJG9wdCA9IHsgYyA9PiAwLCBSID0+IDAsIGwgPT4gMCwgZiA9PiAwLCBGID0+IDEsIG0gPT4gMSwgciA9PiAxIH0gaWYgKCAkdHlwZSBlcSAiY2kiICk7CiAgICAgICAgICRvcHQgPSB7IGsgPT4gMSwgbSA9PiAxIH0gaWYgKCAkdHlwZSBlcSAiYWRkIiApOwogICAgICAgICAkb3B0ID0geyBmID0+IDAsIGwgPT4gMCwgUiA9PiAwIH0gaWYgKCAkdHlwZSBlcSAicmVtb3ZlIiApOwpAQCAtMjA3MSw3NCArMjQ5MiwzNDYgQEAKICAgICB9CiB9CiAKLSMgVGhpcyBtZXRob2QgdXNlcyAkc3RhdGUtPntkaXJlY3Rvcnl9IHRvIHBvcHVsYXRlICRzdGF0ZS0+e2FyZ3N9IHdpdGggYSBsaXN0IG9mIGZpbGVuYW1lcworIyBVc2VkIGJ5IGFyZ3Nmcm9tZGlyCitzdWIgZXhwYW5kQXJnCit7CisgICAgbXkgKCR1cGRhdGVyLCRvdXROYW1lTWFwLCRvdXREaXJNYXAsJHBhdGgsJGlzRGlyKSA9IEBfOworCisgICAgbXkgJGZ1bGxQYXRoID0gZmlsZWNsZWFudXAoJHBhdGgpOworCisgICAgICAjIElzIGl0IGEgZGlyZWN0b3J5PworICAgIGlmKCBkZWZpbmVkKCRzdGF0ZS0+e2Rpck1hcH17JGZ1bGxQYXRofSkgfHwKKyAgICAgICAgZGVmaW5lZCgkc3RhdGUtPntkaXJNYXB9eyIkZnVsbFBhdGgvIn0pICkKKyAgICB7CisgICAgICAgICAgIyBJdCBpcyBhIGRpcmVjdG9yeSBpbiB0aGUgdXNlcidzIHNhbmRib3guCisgICAgICAgICRpc0Rpcj0xOworCisgICAgICAgIGlmKGRlZmluZWQoJHN0YXRlLT57ZW50cmllc317JGZ1bGxQYXRofSkpCisgICAgICAgIHsKKyAgICAgICAgICAgICRsb2ctPmZhdGFsKCJJbmNvbnNpc3RlbnQgZmlsZS9kaXIgdHlwZSIpOworICAgICAgICAgICAgZGllICJJbmNvbnNpc3RlbnQgZmlsZS9kaXIgdHlwZSI7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzaWYoZGVmaW5lZCgkc3RhdGUtPntlbnRyaWVzfXskZnVsbFBhdGh9KSkKKyAgICB7CisgICAgICAgICAgIyBJdCBpcyBhIGZpbGUgaW4gdGhlIHVzZXIncyBzYW5kYm94LgorICAgICAgICAkaXNEaXI9MDsKKyAgICB9CisgICAgbXkoJHJldkRpck1hcCwkb3RoZXJSZXZEaXJNYXApOworICAgIGlmKCFkZWZpbmVkKCRpc0RpcikgfHwgJGlzRGlyKQorICAgIHsKKyAgICAgICAgICAjIFJlc29sdmUgdmVyc2lvbiB0cmVlIGZvciBzdGlja3kgdGFnOgorICAgICAgICAgICMgKGZvciBub3cgd2Ugb25seSB3YW50IGxpc3Qgb2YgZmlsZXMgZm9yIHRoZSB2ZXJzaW9uLCBub3QKKyAgICAgICAgICAjIHBhcnRpY3VsYXIgdmVyc2lvbnMgb2YgdGhvc2UgZmlsZXM6IGFzc3VtZSBpdCBpcyBhIGRpcmVjdG9yeQorICAgICAgICAgICMgZm9yIHRoZSBtb21lbnQ7IGlnbm9yZSBFbnRyeSdzIHN0aWNrIHRhZykKKworICAgICAgICAgICMgT3JkZXIgb2YgcHJlY2VkZW5jZSBvZiBzdGlja3kgdGFnczoKKyAgICAgICAgICAjICAgIC1BICAgICAgIFtoZWFkXQorICAgICAgICAgICMgICAgLXIgL3RhZy8KKyAgICAgICAgICAjICAgIFtmaWxlIGVudHJ5IHN0aWNreSB0YWcsIGJ1dCB0aGF0IGlzIG9ubHkgcmVsZXZhbnQgdG8gZmlsZXNdCisgICAgICAgICAgIyAgICBbdGhlIHRhZyBzcGVjaWZpZWQgaW4gZGlyIHJlcV9TdGlja3ldCisgICAgICAgICAgIyAgICBbdGhlIHRhZyBzcGVjaWZpZWQgaW4gYSBwYXJlbnQgZGlyIHJlcV9TdGlja3ldCisgICAgICAgICAgIyAgICBbaGVhZF0KKyAgICAgICAgICAjIEFsc28sIC1yIG1heSBhcHBlYXIgdHdpY2UgKGZvciBkaWZmKS4KKyAgICAgICAgICAjCisgICAgICAgICAgIyBGVVRVUkU6IFdoZW4vaWYgLWogKG1lcmdlcykgYXJlIHN1cHBvcnRlZCwgd2UgYWxzbworICAgICAgICAgICMgIG5lZWQgdG8gYWRkIHJlbGV2YW50IGZpbGVzIGZyb20gb25lIG9yIHR3bworICAgICAgICAgICMgIHZlcnNpb25zIHNwZWNpZmllZCB3aXRoIC1qLgorCisgICAgICAgIGlmKGV4aXN0cygkc3RhdGUtPntvcHR9e0F9KSkKKyAgICAgICAgeworICAgICAgICAgICAgJHJldkRpck1hcD0kdXBkYXRlci0+Z2V0UmV2aXNpb25EaXJNYXAoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNpZiggZGVmaW5lZCgkc3RhdGUtPntvcHR9e3J9KSBhbmQKKyAgICAgICAgICAgICAgIHJlZiAkc3RhdGUtPntvcHR9e3J9IGVxICJBUlJBWSIgKQorICAgICAgICB7CisgICAgICAgICAgICAkcmV2RGlyTWFwPSR1cGRhdGVyLT5nZXRSZXZpc2lvbkRpck1hcCgkc3RhdGUtPntvcHR9e3J9WzBdKTsKKyAgICAgICAgICAgICRvdGhlclJldkRpck1hcD0kdXBkYXRlci0+Z2V0UmV2aXNpb25EaXJNYXAoJHN0YXRlLT57b3B0fXtyfVsxXSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzaWYoZGVmaW5lZCgkc3RhdGUtPntvcHR9e3J9KSkKKyAgICAgICAgeworICAgICAgICAgICAgJHJldkRpck1hcD0kdXBkYXRlci0+Z2V0UmV2aXNpb25EaXJNYXAoJHN0YXRlLT57b3B0fXtyfSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBteSgkc3RpY2t5KT1nZXREaXJTdGlja3lJbmZvKCRmdWxsUGF0aCk7CisgICAgICAgICAgICAkcmV2RGlyTWFwPSR1cGRhdGVyLT5nZXRSZXZpc2lvbkRpck1hcCgkc3RpY2t5LT57dGFnfSk7CisgICAgICAgIH0KKworICAgICAgICAgICMgSXMgaXQgYSBkaXJlY3Rvcnk/CisgICAgICAgIGlmKCBkZWZpbmVkKCRyZXZEaXJNYXAtPnskZnVsbFBhdGh9KSB8fAorICAgICAgICAgICAgZGVmaW5lZCgkb3RoZXJSZXZEaXJNYXAtPnskZnVsbFBhdGh9KSApCisgICAgICAgIHsKKyAgICAgICAgICAgICRpc0Rpcj0xOworICAgICAgICB9CisgICAgfQorCisgICAgICAjIFdoYXQgdG8gZG8gd2l0aCBpdD8KKyAgICBpZighJGlzRGlyKQorICAgIHsKKyAgICAgICAgJG91dE5hbWVNYXAtPnskZnVsbFBhdGh9PTE7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgICRvdXREaXJNYXAtPnskZnVsbFBhdGh9PTE7CisKKyAgICAgICAgaWYoZGVmaW5lZCgkcmV2RGlyTWFwLT57JGZ1bGxQYXRofSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFkZERpck1hcEZpbGVzKCR1cGRhdGVyLCRvdXROYW1lTWFwLCRvdXREaXJNYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV2RGlyTWFwLT57JGZ1bGxQYXRofSk7CisgICAgICAgIH0KKyAgICAgICAgaWYoIGRlZmluZWQoJG90aGVyUmV2RGlyTWFwKSAmJgorICAgICAgICAgICAgZGVmaW5lZCgkb3RoZXJSZXZEaXJNYXAtPnskZnVsbFBhdGh9KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGFkZERpck1hcEZpbGVzKCR1cGRhdGVyLCRvdXROYW1lTWFwLCRvdXREaXJNYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3RoZXJSZXZEaXJNYXAtPnskZnVsbFBhdGh9KTsKKyAgICAgICAgfQorICAgIH0KK30KKworIyBVc2VkIGJ5IGFyZ3Nmcm9tZGlyCisjIEFkZCBlbnRyaWVzIGZyb20gZGlyTWFwIHRvIG91dE5hbWVNYXAuICBBbHNvIHJlY3Vyc2UgaW50byBlbnRyaWVzCisjIHRoYXQgYXJlIHN1YmRpcmVjdG9yaWVzLgorc3ViIGFkZERpck1hcEZpbGVzCit7CisgICAgbXkoJHVwZGF0ZXIsJG91dE5hbWVNYXAsJG91dERpck1hcCwkZGlyTWFwKT1AXzsKKworICAgIG15KCRmdWxsTmFtZSk7CisgICAgZm9yZWFjaCAkZnVsbE5hbWUgKGtleXMoJSRkaXJNYXApKQorICAgIHsKKyAgICAgICAgbXkgJGNsZWFuTmFtZT0kZnVsbE5hbWU7CisgICAgICAgIGlmKGRlZmluZWQoJHN0YXRlLT57cHJlcGVuZGRpcn0pKQorICAgICAgICB7CisgICAgICAgICAgICBpZighKCRjbGVhbk5hbWU9fnMvXlxRJHN0YXRlLT57cHJlcGVuZGRpcn1cRS8vKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAkbG9nLT5mYXRhbCgiaW50ZXJuYWwgZXJyb3Igc3RyaXBwaW5nIHByZXBlbmRkaXIiKTsKKyAgICAgICAgICAgICAgICBkaWUgImludGVybmFsIGVycm9yIHN0cmlwcGluZyBwcmVwZW5kZGlyIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmKCRkaXJNYXAtPnskZnVsbE5hbWV9IGVxICJGIikKKyAgICAgICAgeworICAgICAgICAgICAgJG91dE5hbWVNYXAtPnskY2xlYW5OYW1lfT0xOworICAgICAgICB9CisgICAgICAgIGVsc2lmKCRkaXJNYXAtPnskZnVsbE5hbWV9IGVxICJEIikKKyAgICAgICAgeworICAgICAgICAgICAgaWYoISRzdGF0ZS0+e29wdH17bH0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXhwYW5kQXJnKCR1cGRhdGVyLCRvdXROYW1lTWFwLCRvdXREaXJNYXAsJGNsZWFuTmFtZSwxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgICRsb2ctPmZhdGFsKCJpbnRlcm5hbCBlcnJvciBpbiBhZGREaXJNYXBGaWxlcyIpOworICAgICAgICAgICAgZGllICJpbnRlcm5hbCBlcnJvciBpbiBhZGREaXJNYXBGaWxlcyI7CisgICAgICAgIH0KKyAgICB9Cit9CisKKyMgVGhpcyBtZXRob2QgcmVwbGFjZXMgJHN0YXRlLT57YXJnc30gd2l0aCBhIGRpcmVjdG9yeS1leHBhbmRlZAorIyBsaXN0IG9mIGFsbCByZWxldmFudCBmaWxlbmFtZXMgKHJlY3Vyc2l2ZWx5IHVubGVzcyAtZCksIGJhc2VkCisjIG9uICRzdGF0ZS0+e2VudHJpZXN9LCBhbmQgdGhlICJjdXJyZW50IiBsaXN0IG9mIGZpbGVzIGluCisjIGVhY2ggZGlyZWN0b3J5LiAgIkN1cnJlbnQiIGZpbGVzIGFzIGRldGVybWluZWQgYnkKKyMgZWl0aGVyIHRoZSByZXF1ZXN0ZWQgKC1yLy1BKSBvciAicmVxX1N0aWNreSIgdmVyc2lvbiBvZgorIyB0aGF0IGRpcmVjdG9yeS4KKyMgICAgQm90aCB0aGUgaW5wdXQgYXJncyBhbmQgdGhlIG5ldyBvdXRwdXQgYXJncyBhcmUgcmVsYXRpdmUKKyMgdG8gdGhlIGN2cy1jbGllbnQncyBDV0QsIGFsdGhvdWdoIHNvbWUgb2YgdGhlIGludGVybmFsCisjIGNvbXB1dGF0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIHRvcCBvZiB0aGUgcHJvamVjdC4KIHN1YiBhcmdzZnJvbWRpcgogewogICAgIG15ICR1cGRhdGVyID0gc2hpZnQ7CiAKLSAgICAkc3RhdGUtPnthcmdzfSA9IFtdIGlmICggc2NhbGFyKEB7JHN0YXRlLT57YXJnc319KSA9PSAxIGFuZCAkc3RhdGUtPnthcmdzfVswXSBlcSAiLiIgKTsKKyAgICAjIE5vdGVzIGFib3V0IHJlcXVpcmVtZW50cyBmb3Igc3BlY2lmaWMgY2FsbGVyczoKKyAgICAjICAgdXBkYXRlICMgInN0YW5kYXJkIiBjYXNlIChlbnRyaWVzOyBhIHNpbmdsZSAtci8tQS9kZWZhdWx0OyAtbCkKKyAgICAjICAgICAgICAgICMgU3BlY2lhbCBjYXNlOiAtZCBmb3IgY3JlYXRlIG1pc3NpbmcgZGlyZWN0b3JpZXMuCisgICAgIyAgIGRpZmYgIyAwIG9yIDEgLXInczogInN0YW5kYXJkIiBjYXNlLgorICAgICMgICAgICAgICMgMiAtcidzOiBXZSBjb3VsZCBpZ25vcmUgZW50cmllcyAoanVzdCB1c2UgdGhlIHR3byAtcidzKSwKKyAgICAjICAgICAgICAjIGJ1dCBpdCBkb2Vzbid0IHJlYWxseSBtYXR0ZXIuCisgICAgIyAgIGFubm90YXRlICMgInN0YW5kYXJkIiBjYXNlCisgICAgIyAgIGxvZyAjIFB1bnRpbmc6IGxvZyAtciBoYXMgYSBtb3JlIGNvbXBsZXggbm9uLSJzdGFuZGFyZCIKKyAgICAjICAgICAgICMgbWVhbmluZywgYW5kIHdlIGRvbid0IGN1cnJlbnRseSB0cnkgdG8gc3VwcG9ydCBsb2cnaW5nCisgICAgIyAgICAgICAjIGJyYW5jaGVzIGF0IGFsbCAobmVlZCBhIGxvdCBvZiB3b3JrIHRvCisgICAgIyAgICAgICAjIHN1cHBvcnQgQ1ZTLWNvbnNpc3RlbnQgYnJhbmNoIHJlbGF0aXZlIHZlcnNpb24KKyAgICAjICAgICAgICMgbnVtYmVyaW5nKS4KKyNIRVJFOiBCdXQgd2Ugc3RpbGwgd2FudCB0byBleHBhbmQgZGlyZWN0b3JpZXMuICBNYXliZSB3ZSBzaG91bGQKKyMgIGVzc2VudGlhbGx5IGZvcmNlICItQSIuCisgICAgIyAgIHN0YXR1cyAjICJzdGFuZGFyZCIsIGV4Y2VwdCB0aGF0IC1yLy1BL2RlZmF1bHQgYXJlIG5vdCBwb3NzaWJsZS4KKyAgICAjICAgICAgICAgICMgTW9zdGx5IG9ubHkgdXNlZCB0byBleHBhbmQgZW50cmllcyBvbmx5KQorICAgICMKKyAgICAjIERvbid0IHVzZSBhcmdzZnJvbWRpciBhdCBhbGw6CisgICAgIyAgIGFkZCAjIEV4cGxpY2l0IGFyZ3VtZW50cyByZXF1aXJlZC4gIERpcmVjdG9yeSBhcmdzIGltcGx5IGFkZAorICAgICMgICAgICAgIyB0aGUgZGlyZWN0b3J5IGl0c2VsZiwgbm90IHRoZSBmaWxlcyBpbiBpdC4KKyAgICAjICAgY28gICMgT2J0YWluIGxpc3QgZGlyZWN0bHkuCisgICAgIyAgIHJlbW92ZSAjIEhFUkU6IFRFU1Q6IE1BWUJFIGNsaWVudCBkb2VzIHRoZSByZWN1cnNpb24gZm9yIHVzLAorICAgICMgICAgICAgICAgIyBzaW5jZSBpdCBvbmx5IG1ha2VzIHNlbnNlIHRvIHJlbW92ZSBzdHVmZiBhbHJlYWR5IGluCisgICAgIyAgICAgICAgICAjIHRoZSBzYW5kb2J4PworICAgICMgICBjaSAjIEhFUkU6IFNpbWlsYXIgdG8gcmVtb3ZlLi4uCisgICAgIyAgICAgICMgRG9uJ3QgdHJ5IHRvIGltcGxlbWVudCB0aGUgY29uZnVzaW5nL3dlaXJkCisgICAgIyAgICAgICMgY2kgLXIgYnVnIGVyLi4iZmVhdHVyZSIuCiAKLSAgICByZXR1cm4gaWYgKCBzY2FsYXIgKCBAeyRzdGF0ZS0+e2FyZ3N9fSApID4gMSApOwotCi0gICAgbXkgQGdldGhlYWQgPSBAeyR1cGRhdGVyLT5nZXRoZWFkfTsKLQotICAgICMgcHVzaCBhZGRlZCBmaWxlcwotICAgIGZvcmVhY2ggbXkgJGZpbGUgKGtleXMgJXskc3RhdGUtPntlbnRyaWVzfX0pIHsKLQlpZiAoIGV4aXN0cyAkc3RhdGUtPntlbnRyaWVzfXskZmlsZX17cmV2aXNpb259ICYmCi0JCSRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlfXtyZXZpc2lvbn0gPT0gMCApCi0JewotCSAgICBwdXNoIEBnZXRoZWFkLCB7IG5hbWUgPT4gJGZpbGUsIGZpbGVoYXNoID0+ICdhZGRlZCcgfTsKLQl9Ci0gICAgfQotCi0gICAgaWYgKCBzY2FsYXIoQHskc3RhdGUtPnthcmdzfX0pID09IDEgKQorICAgIGlmKHNjYWxhcihAeyRzdGF0ZS0+e2FyZ3N9fSk9PTApCiAgICAgewotICAgICAgICBteSAkYXJnID0gJHN0YXRlLT57YXJnc31bMF07Ci0gICAgICAgICRhcmcgLj0gJHN0YXRlLT57cHJlcGVuZGRpcn0gaWYgKCBkZWZpbmVkICggJHN0YXRlLT57cHJlcGVuZGRpcn0gKSApOworICAgICAgICAkc3RhdGUtPnthcmdzfSA9IFsgIi4iIF07CisgICAgfQorICAgIG15ICVhbGxBcmdzOworICAgIG15ICVhbGxEaXJzOworICAgIGZvciBteSAkZmlsZSAoQHskc3RhdGUtPnthcmdzfX0pCisgICAgeworICAgICAgICBleHBhbmRBcmcoJHVwZGF0ZXIsXCVhbGxBcmdzLFwlYWxsRGlycywkZmlsZSk7CisgICAgfQogCi0gICAgICAgICRsb2ctPmluZm8oIk9ubHkgb25lIGFyZyBzcGVjaWZpZWQsIGNoZWNraW5nIGZvciBkaXJlY3RvcnkgZXhwYW5zaW9uIG9uICckYXJnJyIpOworICAgICMgSW5jbHVkZSBhbnkgZW50cmllcyBmcm9tIHNhbmRib3guICBHZW5lcmFsbHkgY2xpZW50IHdvbid0CisgICAgIyBzZW5kIGVudHJpZXMgdGhhdCBzaG91bGRuJ3QgYmUgdXNlZC4KKyAgICBmb3JlYWNoIG15ICRmaWxlIChrZXlzICV7JHN0YXRlLT57ZW50cmllc319KQorICAgIHsKKyAgICAgICAgJGFsbEFyZ3N7cmVtb3ZlX3ByZXBlbmRkaXIoJGZpbGUpfSA9IDE7CisgICAgfQogCi0gICAgICAgIGZvcmVhY2ggbXkgJGZpbGUgKCBAZ2V0aGVhZCApCisgICAgJHN0YXRlLT57ZGlyQXJnc30gPSBcJWFsbERpcnM7CisgICAgJHN0YXRlLT57YXJnc30gPSBbCisgICAgICAgIHNvcnQgeworICAgICAgICAgICAgICAgICMgU29ydCBwcmlvcml0eTogYnkgZGlyZWN0b3J5IGRlcHRoLCB0aGVuIGFjdHVhbCBmaWxlIG5hbWU6CisgICAgICAgICAgICBteSBAcGllY2VzQT1zcGxpdCgnLycsJGEpOworICAgICAgICAgICAgbXkgQHBpZWNlc0I9c3BsaXQoJy8nLCRiKTsKKworICAgICAgICAgICAgbXkgJGNvdW50PXNjYWxhcihAcGllY2VzQSk7CisgICAgICAgICAgICBteSAkdG1wPXNjYWxhcihAcGllY2VzQik7CisgICAgICAgICAgICByZXR1cm4gJGNvdW50PD0+JHRtcCBpZigkY291bnQhPSR0bXApOworCisgICAgICAgICAgICBmb3IoJHRtcD0wOyR0bXA8JGNvdW50OyR0bXArKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZigkcGllY2VzQVskdG1wXSBuZSAkcGllY2VzQlskdG1wXSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcGllY2VzQVskdG1wXSBjbXAgJHBpZWNlc0JbJHRtcF0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfSBrZXlzKCVhbGxBcmdzKSBdOworfQorCisjIyBsb29rIHVwIGRpcmVjdG9yeSBzdGlja3kgdGFnLCBvZiBlaXRoZXIgZnVsbFBhdGggb3IgYSBwYXJlbnQ6CitzdWIgZ2V0RGlyU3RpY2t5SW5mbworeworICAgIG15KCRmdWxsUGF0aCk9QF87CisKKyAgICAkZnVsbFBhdGg9fnMlLyskJSU7CisgICAgd2hpbGUoJGZ1bGxQYXRoIG5lICIiICYmICFkZWZpbmVkKCRzdGF0ZS0+e2Rpck1hcH17IiRmdWxsUGF0aC8ifSkpCisgICAgeworICAgICAgICAkZnVsbFBhdGg9fnMlLz9bXi9dKiQlJTsKKyAgICB9CisKKyAgICBpZiggIWRlZmluZWQoJHN0YXRlLT57ZGlyTWFwfXsiJGZ1bGxQYXRoLyJ9KSAmJgorICAgICAgICAoICRmdWxsUGF0aCBlcSAiIiB8fAorICAgICAgICAgICRmdWxsUGF0aCBlcSAiLiIgKSApCisgICAgeworICAgICAgICByZXR1cm4gJHN0YXRlLT57ZGlyTWFwfXsiIn17c3RpY2t5SW5mb307CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiAkc3RhdGUtPntkaXJNYXB9eyIkZnVsbFBhdGgvIn17c3RpY2t5SW5mb307CisgICAgfQorfQorCisjIFJlc29sdmUgcHJlY2VkZW5jZSBvZiB2YXJpb3VzIHdheXMgb2Ygc3BlY2lmeWluZyB3aGljaCB2ZXJzaW9uIG9mCisjIGEgZmlsZSB5b3Ugd2FudC4gIFJldHVybnMgdW5kZWYgKGZvciBkZWZhdWx0IGhlYWQpLCBvciBhIHJlZiB0byBhIGhhc2gKKyMgdGhhdCBjb250YWlucyAidGFnIiBhbmQvb3IgImRhdGUiIGtleXMuCitzdWIgcmVzb2x2ZVN0aWNreUluZm8KK3sKKyAgICBteSgkZmlsZW5hbWUsJHN0aWNreVRhZywkc3RpY2t5RGF0ZSwkcmVzZXQpID0gQF87CisKKyAgICAjIE9yZGVyIG9mIHByZWNlZGVuY2Ugb2Ygc3RpY2t5IHRhZ3M6CisgICAgIyAgICAtQSAgICAgICBbaGVhZF0KKyAgICAjICAgIC1yIC90YWcvCisgICAgIyAgICBbZmlsZSBlbnRyeSBzdGlja3kgdGFnXQorICAgICMgICAgW3RoZSB0YWcgc3BlY2lmaWVkIGluIGRpciByZXFfU3RpY2t5XQorICAgICMgICAgW3RoZSB0YWcgc3BlY2lmaWVkIGluIGEgcGFyZW50IGRpciByZXFfU3RpY2t5XQorICAgICMgICAgW2hlYWRdCisKKyAgICBteSAkcmVzdWx0OworICAgIGlmKCRyZXNldCkKKyAgICB7CisgICAgICAgICMgJHJlc3VsdD11bmRlZjsKKyAgICB9CisgICAgZWxzaWYoIGRlZmluZWQoJHN0aWNreVRhZykgJiYgJHN0aWNreVRhZyBuZSAiIiApCisgICAgICAgICAgICMgfHwgKCBkZWZpbmVkKCRzdGlja3lEYXRlKSAmJiAkc3RpY2t5RGF0ZSBuZSAiIiApICAgIyBUT0RPCisgICAgeworICAgICAgICAkcmVzdWx0PXsgJ3RhZycgPT4gKGRlZmluZWQoJHN0aWNreVRhZyk/JHN0aWNreVRhZzp1bmRlZikgfTsKKworICAgICAgICAjIFRPRE86IENvbnZlcnQgLUQgdmFsdWUgaW50byB0aGUgZm9ybSAyMDExLjA0LjEwLjA0LjQ2LjU3LAorICAgICAgICAjICAgc2ltaWxhciB0byBhbiBlbnRyeSBsaW5lJ3Mgc3RpY2t5IGRhdGUsIHdpdGhvdXQgdGhlIEQgcHJlZml4LgorICAgICAgICAjICAgSXQgc29tZXRpbWVzIChhbHdheXM/KSBhcnJpdmVzIGFzIHNvbWV0aGluZyBtb3JlIGxpa2UKKyAgICAgICAgIyAgICcxMCBBcHIgMjAxMSAwNDo0Njo1NyAtMDAwMCcuLi4KKyAgICAgICAgIyAkcmVzdWx0PXsgJ2RhdGUnID0+IChkZWZpbmVkKCRzdGlja3lEYXRlKT8kc3RpY2t5RGF0ZTp1bmRlZikgfTsKKyAgICB9CisgICAgZWxzaWYoIGRlZmluZWQoJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfSkgJiYKKyAgICAgICAgICAgZGVmaW5lZCgkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e3RhZ19vcl9kYXRlfSkgJiYKKyAgICAgICAgICAgJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXt0YWdfb3JfZGF0ZX0gbmUgIiIgKQorICAgIHsKKyAgICAgICAgbXkoJHRhZ09yRGF0ZSk9JHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXt0YWdfb3JfZGF0ZX07CisgICAgICAgIGlmKCR0YWdPckRhdGU9fi9eVChbXiBdKylccyokLykKICAgICAgICAgewotICAgICAgICAgICAgbmV4dCBpZiAoICRmaWxlLT57ZmlsZWhhc2h9IGVxICJkZWxldGVkIiBhbmQgbm90IGRlZmluZWQgKCAkc3RhdGUtPntlbnRyaWVzfXskZmlsZS0+e25hbWV9fSApICk7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAoICRmaWxlLT57bmFtZX0gPX4gL14kYXJnXC8vIG9yICRmaWxlLT57bmFtZX0gZXEgJGFyZyAgKTsKLSAgICAgICAgICAgIHB1c2ggQHskc3RhdGUtPnthcmdzfX0sICRmaWxlLT57bmFtZX07CisgICAgICAgICAgICAkcmVzdWx0ID0geyAndGFnJyA9PiAkMSB9OwogICAgICAgICB9Ci0KLSAgICAgICAgc2hpZnQgQHskc3RhdGUtPnthcmdzfX0gaWYgKCBzY2FsYXIoQHskc3RhdGUtPnthcmdzfX0pID4gMSApOwotICAgIH0gZWxzZSB7Ci0gICAgICAgICRsb2ctPmluZm8oIk9ubHkgb25lIGFyZyBzcGVjaWZpZWQsIHBvcHVsYXRpbmcgZmlsZSBsaXN0IGF1dG9tYXRpY2FsbHkiKTsKLQotICAgICAgICAkc3RhdGUtPnthcmdzfSA9IFtdOwotCi0gICAgICAgIGZvcmVhY2ggbXkgJGZpbGUgKCBAZ2V0aGVhZCApCisgICAgICAgIGVsc2lmKCR0YWdPckRhdGU9fi9eRChbMC05Ll0rKVxzKiQvKQogICAgICAgICB7Ci0gICAgICAgICAgICBuZXh0IGlmICggJGZpbGUtPntmaWxlaGFzaH0gZXEgImRlbGV0ZWQiIGFuZCBub3QgZGVmaW5lZCAoICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlLT57bmFtZX19ICkgKTsKLSAgICAgICAgICAgIG5leHQgdW5sZXNzICggJGZpbGUtPntuYW1lfSA9fiBzL14kc3RhdGUtPntwcmVwZW5kZGlyfS8vICk7Ci0gICAgICAgICAgICBwdXNoIEB7JHN0YXRlLT57YXJnc319LCAkZmlsZS0+e25hbWV9OworICAgICAgICAgICAgJHJlc3VsdD0geyAnZGF0ZScgPT4gJDEgfTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGRpZSAiVW5rbm93biB0YWdfb3JfZGF0ZSBmb3JtYXRcbiI7CiAgICAgICAgIH0KICAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgJHJlc3VsdD1nZXREaXJTdGlja3lJbmZvKCRmaWxlbmFtZSk7CisgICAgfQorCisgICAgcmV0dXJuICRyZXN1bHQ7Cit9CisKKyMgQ29udmVydCBhIHN0aWNreUluZm8gKHJlZiB0byBhIGhhc2gpIGFzIHJldHVybmVkIGJ5IHJlc29sdmVTdGlja3lJbmZvIGludG8KKyMgYSBmb3JtIGFwcHJvcHJpYXRlIGZvciB0aGUgc3RpY2t5IHRhZyBmaWVsZCBvZiBhbiBFbnRyaWVzCisjIGxpbmUgKGZpZWxkIGluZGV4IDUsIDAtYmFzZWQpLgorc3ViIGdldFN0aWNreVRhZ09yRGF0ZQoreworICAgIG15KCRzdGlja3lJbmZvKT1AXzsKKworICAgIG15ICRyZXN1bHQ7CisgICAgaWYoZGVmaW5lZCgkc3RpY2t5SW5mbykgJiYgZGVmaW5lZCgkc3RpY2t5SW5mby0+e3RhZ30pKQorICAgIHsKKyAgICAgICAgJHJlc3VsdD0iVCRzdGlja3lJbmZvLT57dGFnfSI7CisgICAgfQorICAgICMgVE9ETzogV2hlbi9pZiB3ZSBhY3R1YWxseSBwaWNrIHZlcnNpb25zIGJ5IHtkYXRlfSBwcm9wZXJseSwKKyAgICAjICAgYWxzbyBoYW5kbGUgaXQgaGVyZToKKyAgICAjICAgIkQkc3RpY2t5SW5mby0+e2RhdGV9IiAoZXhhbXBsZTogIkQyMDExLjA0LjEzLjIwLjM3LjA3IikuCisgICAgZWxzZQorICAgIHsKKyAgICAgICAgJHJlc3VsdD0iIjsKKyAgICB9CisKKyAgICByZXR1cm4gJHJlc3VsdDsKIH0KIAogIyBUaGlzIG1ldGhvZCBjbGVhbnMgdXAgdGhlICRzdGF0ZSB2YXJpYWJsZSBhZnRlciBhIGNvbW1hbmQgdGhhdCB1c2VzIGFyZ3VtZW50cyBoYXMgcnVuCiBzdWIgc3RhdGVjbGVhbnVwCiB7CiAgICAgJHN0YXRlLT57ZmlsZXN9ID0gW107CisgICAgJHN0YXRlLT57ZGlyQXJnc30gPSB7fTsKICAgICAkc3RhdGUtPnthcmdzfSA9IFtdOwogICAgICRzdGF0ZS0+e2FyZ3VtZW50c30gPSBbXTsKICAgICAkc3RhdGUtPntlbnRyaWVzfSA9IHt9OworICAgICRzdGF0ZS0+e2Rpck1hcH0gPSB7fTsKIH0KIAorIyBSZXR1cm4gd29ya2luZyBkaXJlY3RvcnkgQ1ZTIHJldmlzaW9uICIxLlgiIG91dAorIyBvZiB0aGUgdGhlIHdvcmtpbmcgZGlyZWN0b3J5ICJlbnRyaWVzIiBzdGF0ZSwgZm9yIHRoZSBnaXZlbiBmaWxlbmFtZS4KKyMgVGhpcyBpcyBwcmVmaXhlZCB3aXRoIGEgZGFzaCBpZiB0aGUgZmlsZSBpcyBzY2hlZHVsZWQgZm9yIHJlbW92YWwKKyMgd2hlbiBpdCBpcyBjb21taXR0ZWQuCiBzdWIgcmV2cGFyc2UKIHsKICAgICBteSAkZmlsZW5hbWUgPSBzaGlmdDsKIAotICAgIHJldHVybiB1bmRlZiB1bmxlc3MgKCBkZWZpbmVkICggJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXtyZXZpc2lvbn0gKSApOwotCi0gICAgcmV0dXJuICQxIGlmICggJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXtyZXZpc2lvbn0gPX4gL14xXC4oXGQrKS8gKTsKLSAgICByZXR1cm4gLSQxIGlmICggJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXtyZXZpc2lvbn0gPX4gL14tMVwuKFxkKykvICk7Ci0KLSAgICByZXR1cm4gdW5kZWY7CisgICAgcmV0dXJuICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17cmV2aXNpb259OwogfQogCiAjIFRoaXMgbWV0aG9kIHRha2VzIGEgZmlsZSBoYXNoIGFuZCBkb2VzIGEgQ1ZTICJmaWxlIHRyYW5zZmVyIi4gIEl0cwpAQCAtMjIxNyw2ICsyOTEwLDkgQEAKICAgICByZXR1cm4gKCAkZmlsZXBhcnQsICRkaXJwYXJ0ICk7CiB9CiAKKyMgQ2xlYW51cCB2YXJpb3VzIGp1bmsgaW4gZmlsZW5hbWUgKHRyeSB0byBjYW5vbmljYWxpemUgaXQpLCBhbmQKKyMgYWRkIHByZXBlbmRkaXIgdG8gYWNjb21tb2RhdGUgcnVubmluZyBDVlMgY2xpZW50IGZyb20gYQorIyBzdWJkaXJlY3RvcnkgKHNvIHRoZSBvdXRwdXQgaXMgcmVsYXRpdmUgdG8gdG9wIGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdCkuCiBzdWIgZmlsZWNsZWFudXAKIHsKICAgICBteSAkZmlsZW5hbWUgPSBzaGlmdDsKQEAgLTIyMjgsMTEgKzI5MjQsMzYgQEAKICAgICAgICAgcmV0dXJuIHVuZGVmOwogICAgIH0KIAorICAgIGlmKCRmaWxlbmFtZSBlcSAiLiIpCisgICAgeworICAgICAgICAkZmlsZW5hbWU9IiI7CisgICAgfQogICAgICRmaWxlbmFtZSA9fiBzL15cLlwvLy9nOworICAgICRmaWxlbmFtZSA9fiBzJS8rJS8lZzsKICAgICAkZmlsZW5hbWUgPSAkc3RhdGUtPntwcmVwZW5kZGlyfSAuICRmaWxlbmFtZTsKKyAgICAkZmlsZW5hbWUgPX4gcyUvJCUlOwogICAgIHJldHVybiAkZmlsZW5hbWU7CiB9CiAKKyMgUmVtb3ZlIHByZXBlbmRkaXIgZnJvbSB0aGUgcGF0aCwgc28gdGhhdCBpcyBpcyByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5CisjIHRoZSBDVlMgY2xpZW50IHdhcyBzdGFydGVkIGZyb20sIHJhdGhlciB0aGFuIHRoZSB0b3Agb2YgdGhlIHByb2plY3QuCisjIEVzc2VudGlhbGx5IHRoZSBpbnZlcnNlIG9mIGZpbGVjbGVhbnVwKCkuCitzdWIgcmVtb3ZlX3ByZXBlbmRkaXIKK3sKKyAgICBteSgkcGF0aCkgPSBAXzsKKyAgICBpZihkZWZpbmVkKCRzdGF0ZS0+e3ByZXBlbmRkaXJ9KSAmJiAkc3RhdGUtPntwcmVwZW5kZGlyfSBuZSAiIikKKyAgICB7CisgICAgICAgIG15KCRwcmUpPSRzdGF0ZS0+e3ByZXBlbmRkaXJ9OworICAgICAgICAkcHJlPX5zJS8kJSU7CisgICAgICAgIGlmKCEoJHBhdGg9fnMlXlxRJHByZVxFLz8lJSkpCisgICAgICAgIHsKKyAgICAgICAgICAgICRsb2ctPmZhdGFsKCJpbnRlcm5hbCBlcnJvciBtaXNzaW5nIHByZXBlbmRkaXIiKTsKKyAgICAgICAgICAgIGRpZSgiaW50ZXJuYWwgZXJyb3IgbWlzc2luZyBwcmVwZW5kZGlyIik7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuICRwYXRoOworfQorCiBzdWIgdmFsaWRhdGVHaXREaXIKIHsKICAgICBpZiggIWRlZmluZWQoJHN0YXRlLT57Q1ZTUk9PVH0pICkKQEAgLTI0NDQsNDIgKzMxNjUsMTQgQEAKICAgICAgICAgfQogICAgICAgICBlbHNpZiggKCRjZmctPntnaXRjdnN9e2FsbGJpbmFyeX0gPX4gL15ccypndWVzc1xzKiQvaSkgKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiggJHNyY1R5cGUgZXEgInNoYTFPci1rIiAmJgotICAgICAgICAgICAgICAgICFkZWZpbmVkKCRuYW1lKSApCisgICAgICAgICAgICBpZiggaXNfYmluYXJ5KCRzcmNUeXBlLCRuYW1lKSApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbXkgKCRyZXQpPSRzdGF0ZS0+e2VudHJpZXN9eyRwYXRofXtvcHRpb25zfTsKLSAgICAgICAgICAgICAgICBpZiggIWRlZmluZWQoJHJldCkgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJHJldD0kc3RhdGUtPntvcHR9e2t9OwotICAgICAgICAgICAgICAgICAgICBpZihkZWZpbmVkKCRyZXQpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkcmV0PSItayRyZXQiOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJHJldD0iIjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiggISAoJHJldD1+L14ofC1rYnwta2t2fC1ra3ZsfC1ra3wta298LWt2KSQvKSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBwcmludCAiRSBCYWQgLWsgb3B0aW9uXG4iOwotICAgICAgICAgICAgICAgICAgICAkbG9nLT53YXJuKCJCYWQgLWsgb3B0aW9uOiAkcmV0Iik7Ci0gICAgICAgICAgICAgICAgICAgIGRpZSAiRXJyb3I6IEJhZCAtayBvcHRpb246ICRyZXRcbiI7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJuICRyZXQ7CisgICAgICAgICAgICAgICAgJGxvZy0+ZGVidWcoIi4uLiBhcyBiaW5hcnkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gIi1rYiI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYoIGlzX2JpbmFyeSgkc3JjVHlwZSwkbmFtZSkgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJGxvZy0+ZGVidWcoIi4uLiBhcyBiaW5hcnkiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIta2IiOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAkbG9nLT5kZWJ1ZygiLi4uIGFzIHRleHQiKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgJGxvZy0+ZGVidWcoIi4uLiBhcyB0ZXh0Iik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTg2LDcgKzMyNzksNyBAQAogICAgICAgICAgICAgZGllICJVbmFibGUgdG8gb3BlbiBmaWxlICRuYW1lOiAkIVxuIjsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNpZiggJHNyY1R5cGUgZXEgInNoYTEiIHx8ICRzcmNUeXBlIGVxICJzaGExT3ItayIgKQorICAgIGVsc2lmKCAkc3JjVHlwZSBlcSAic2hhMSIgKQogICAgIHsKICAgICAgICAgdW5sZXNzICggZGVmaW5lZCAoICRuYW1lICkgYW5kICRuYW1lID1+IC9eW2EtekEtWjAtOV17NDB9JC8gKQogICAgICAgICB7CkBAIC0yNjc0LDYgKzMzNjcsNDUgQEAKICAgICByZXR1cm4gJHJldDsKIH0KIAorIyBUZXN0IGlmIHRoZSAoZGVlcCkgdmFsdWVzIG9mIHR3byByZWZlcmVuY2VzIHRvIGEgaGFzaCBhcmUgdGhlIHNhbWUuCitzdWIgcmVmSGFzaEVxdWFsCit7CisgICAgbXkoJHYxLCR2MikgPSBAXzsKKworICAgIG15ICRvdXQ7CisgICAgaWYoIWRlZmluZWQoJHYxKSkKKyAgICB7CisgICAgICAgIGlmKCFkZWZpbmVkKCR2MikpCisgICAgICAgIHsKKyAgICAgICAgICAgICRvdXQ9MTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNpZiggIWRlZmluZWQoJHYyKSB8fAorICAgICAgICAgICBzY2FsYXIoa2V5cygleyR2MX0pKSAhPSBzY2FsYXIoa2V5cygleyR2Mn0pKSApCisgICAgeworICAgICAgICAjICRvdXQ9dW5kZWY7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgICRvdXQ9MTsKKworICAgICAgICBteSAka2V5OworICAgICAgICBmb3JlYWNoICRrZXkgKGtleXMoJXskdjF9KSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYoICFleGlzdHMoJHYyLT57JGtleX0pIHx8CisgICAgICAgICAgICAgICAgZGVmaW5lZCgkdjEtPnska2V5fSkgbmUgZGVmaW5lZCgkdjItPnska2V5fSkgfHwKKyAgICAgICAgICAgICAgICAoIGRlZmluZWQoJHYxLT57JGtleX0pICYmCisgICAgICAgICAgICAgICAgICAkdjEtPnska2V5fSBuZSAkdjItPnska2V5fSApICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICRvdXQ9dW5kZWY7CisgICAgICAgICAgICAgICBsYXN0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuICRvdXQ7Cit9CisKIAogcGFja2FnZSBHSVRDVlM6OmxvZzsKIApAQCAtMjg5NCw2ICszNjI2LDkgQEAKIAogICAgIGRpZSAiR2l0IHJlcG8gJyRzZWxmLT57Z2l0X3BhdGh9JyBkb2Vzbid0IGV4aXN0IiB1bmxlc3MgKCAtZCAkc2VsZi0+e2dpdF9wYXRofSApOwogCisgICAgIyBTdG9yZXMgZnVsbCBzaGExJ3MgZm9yIHZhcmlvdXMgYnJhbmNoL3RhZyBuYW1lcywgYWJicmV2aWF0aW9ucywgZXRjOgorICAgICRzZWxmLT57Y29tbWl0UmVmQ2FjaGV9ID0ge307CisKICAgICAkc2VsZi0+e2RiZHJpdmVyfSA9ICRjZmctPntnaXRjdnN9eyRzdGF0ZS0+e21ldGhvZH19e2RiZHJpdmVyfSB8fAogICAgICAgICAkY2ZnLT57Z2l0Y3ZzfXtkYmRyaXZlcn0gfHwgIlNRTGl0ZSI7CiAgICAgJHNlbGYtPntkYm5hbWV9ID0gJGNmZy0+e2dpdGN2c317JHN0YXRlLT57bWV0aG9kfX17ZGJuYW1lfSB8fApAQCAtMjkyOSw2ICszNjY0LDE2IEBACiAgICAgfQogCiAgICAgIyBDb25zdHJ1Y3QgdGhlIHJldmlzaW9uIHRhYmxlIGlmIHJlcXVpcmVkCisgICAgIyBUaGUgcmV2aXNpb24gdGFibGUgc3RvcmVzIGFuIGVudHJ5IGZvciBlYWNoIGZpbGUsIGVhY2ggdGltZSB0aGF0IGZpbGUKKyAgICAjIGNoYW5nZXMuCisgICAgIyAgIG51bWJlck9mUmVjb3JkcyA9IE8oIG51bUNvbW1pdHMgKiBhdmVyYWdlTnVtQ2hhbmdlZEZpbGVzUGVyQ29tbWl0ICkKKyAgICAjIFRoaXMgaXMgbm90IHN1ZmZpY2llbnQgdG8gc3VwcG9ydCAiLXIge2NvbW1pdGhhc2h9IiBmb3IgYW55CisgICAgIyBmaWxlcyBleGNlcHQgZmlsZXMgdGhhdCB3ZXJlIG1vZGlmaWVkIGJ5IHRoYXQgY29tbWl0IChhbHNvLAorICAgICMgc29tZSBwbGFjZXMgaW4gdGhlIGNvZGUgaWdub3JlL2VmZmVjdGl2ZWx5IHN0cmlwIG91dCAtciBpbgorICAgICMgc29tZSBjYXNlcywgYmVmb3JlIGl0IGdldHMgcGFzc2VkIHRvIGdldG1ldGEoKSkuCisgICAgIyBUaGUgImZpbGVoYXNoIiBmaWVsZCB0eXBpY2FsbHkgaGFzIGEgZ2l0IGJsb2IgaGFzaCwgYnV0IGNhbiBhbHNvCisgICAgIyBiZSBzZXQgdG8gImRlYWQiIHRvIGluZGljYXRlIHRoYXQgdGhlIGdpdmVuIHZlcnNpb24gb2YgdGhlIGZpbGUKKyAgICAjIHNob3VsZCBub3QgZXhpc3QgaW4gdGhlIHNhbmRib3guCiAgICAgdW5sZXNzICggJHNlbGYtPnt0YWJsZXN9eyRzZWxmLT50YWJsZW5hbWUoInJldmlzaW9uIil9ICkKICAgICB7CiAgICAgICAgIG15ICR0YWJsZW5hbWUgPSAkc2VsZi0+dGFibGVuYW1lKCJyZXZpc2lvbiIpOwpAQCAtMjk1Niw2ICszNzAxLDE1IEBACiAgICAgfQogCiAgICAgIyBDb25zdHJ1Y3QgdGhlIGhlYWQgdGFibGUgaWYgcmVxdWlyZWQKKyAgICAjIFRoZSBoZWFkIHRhYmxlIChhbG9uZyB3aXRoIHRoZSAibGFzdF9jb21taXQiIGVudHJ5IGluIHRoZSBwcm9wZXJ0eQorICAgICMgdGFibGUpIGlzIHRoZSBwZXJzaXN0ZWQgd29ya2luZyBzdGF0ZSBvZiB0aGUgInN1YiB1cGRhdGUiIHN1YnJvdXRpbmUuCisgICAgIyBBbGwgb2YgaXQncyBkYXRhIGlzIHJlYWQgZW50aXJlbHkgZmlyc3QsIGFuZCBjb21wbGV0ZWx5IHJlY3JlYXRlZAorICAgICMgbGFzdCwgZXZlcnkgdGltZSAic3ViIHVwZGF0ZSIgcnVucy4KKyAgICAjIFRoaXMgaXMgYWxzbyB1c2VkIGJ5ICJzdWIgZ2V0bWV0YSIgd2hlbiBpdCBpcyBhc2tlZCBmb3IgdGhlIGxhdGVzdAorICAgICMgdmVyc2lvbiBvZiBhIGZpbGUgKGFzIG9wcG9zZWQgdG8gc29tZSBzcGVjaWZpYyB2ZXJzaW9uKS4KKyAgICAjIEFub3RoZXIgd2F5IG9mIHRoaW5raW5nIGFib3V0IGl0IGlzIGFzIGEgc2luZ2xlIHNsaWNlIG91dCBvZgorICAgICMgInJldmlzaW9ucyIsIGdpdmluZyBqdXN0IHRoZSBtb3N0IHJlY2VudCByZXZpc2lvbiBpbmZvcm1hdGlvbiBmb3IKKyAgICAjIGVhY2ggZmlsZS4KICAgICB1bmxlc3MgKCAkc2VsZi0+e3RhYmxlc317JHNlbGYtPnRhYmxlbmFtZSgiaGVhZCIpfSApCiAgICAgewogICAgICAgICBteSAkdGFibGVuYW1lID0gJHNlbGYtPnRhYmxlbmFtZSgiaGVhZCIpOwpAQCAtMjk3OCw2ICszNzMyLDcgQEAKICAgICB9CiAKICAgICAjIENvbnN0cnVjdCB0aGUgcHJvcGVydGllcyB0YWJsZSBpZiByZXF1aXJlZAorICAgICMgIC0gImxhc3RfY29tbWl0IiAtIFVzZWQgYnkgInN1YiB1cGRhdGUiLgogICAgIHVubGVzcyAoICRzZWxmLT57dGFibGVzfXskc2VsZi0+dGFibGVuYW1lKCJwcm9wZXJ0aWVzIil9ICkKICAgICB7CiAgICAgICAgIG15ICR0YWJsZW5hbWUgPSAkc2VsZi0+dGFibGVuYW1lKCJwcm9wZXJ0aWVzIik7CkBAIC0yOTkwLDYgKzM3NDUsMTEgQEAKICAgICB9CiAKICAgICAjIENvbnN0cnVjdCB0aGUgY29tbWl0bXNncyB0YWJsZSBpZiByZXF1aXJlZAorICAgICMgVGhlIGNvbW1pdG1zZ3MgdGFibGUgaXMgb25seSB1c2VkIGZvciBtZXJnZSBjb21taXRzLCBzaW5jZQorICAgICMgInN1YiB1cGRhdGUiIHdpbGwgb25seSBrZWVwIG9uZSBicmFuY2ggb2YgcGFyZW50cy4gIFNob3J0bG9ncworICAgICMgZm9yIGlnbm9yZWQgY29tbWl0cyAoaS5lLiBub3Qgb24gdGhlIGNob3NlbiBicmFuY2gpIHdpbGwgYmUgdXNlZAorICAgICMgdG8gY29uc3RydWN0IGEgcmVwbGFjZW1lbnQgImNvbGxhcHNlZCIgbWVyZ2UgY29tbWl0IG1lc3NhZ2UsCisgICAgIyB3aGljaCB3aWxsIGJlIHN0b3JlZCBpbiB0aGlzIHRhYmxlLiAgU2VlIGFsc28gInN1YiBjb21taXRtZXNzYWdlIi4KICAgICB1bmxlc3MgKCAkc2VsZi0+e3RhYmxlc317JHNlbGYtPnRhYmxlbmFtZSgiY29tbWl0bXNncyIpfSApCiAgICAgewogICAgICAgICBteSAkdGFibGVuYW1lID0gJHNlbGYtPnRhYmxlbmFtZSgiY29tbWl0bXNncyIpOwpAQCAtMzAyMSw2ICszNzgxLDE0IEBACiAKID1oZWFkMiB1cGRhdGUKIAorQnJpbmcgdGhlIGRhdGFiYXNlIHVwIHRvIGRhdGUgd2l0aCB0aGUgbGF0ZXN0IGNoYW5nZXMgZnJvbQordGhlIGdpdCByZXBvc2l0b3J5LgorCitJbnRlcm5hbCB3b3JraW5nIHN0YXRlIGlzIHJlYWQgb3V0IG9mIHRoZSAiaGVhZCIgdGFibGUgYW5kIHRoZQorImxhc3RfY29tbWl0IiBwcm9wZXJ0eSwgdGhlbiBpdCB1cGRhdGVzICJyZXZpc2lvbnMiIGJhc2VkIG9uIHRoYXQsIGFuZAorZmluYWxseSBpdCB3cml0ZXMgdGhlIG5ldyBpbnRlcm5hbCBzdGF0ZSBiYWNrIHRvIHRoZSAiaGVhZCIgdGFibGUKK3NvIGl0IGNhbiBiZSB1c2VkIGFzIGEgc3RhcnRpbmcgcG9pbnQgdGhlIG5leHQgdGltZSB1cGRhdGUgaXMgY2FsbGVkLgorCiA9Y3V0CiBzdWIgdXBkYXRlCiB7CkBAIC0zMDQzLDYgKzM4MTEsOCBAQAogICAgIG15ICRsYXN0Y29tbWl0ID0gJHNlbGYtPl9nZXRfcHJvcCgibGFzdF9jb21taXQiKTsKIAogICAgIGlmIChkZWZpbmVkICRsYXN0Y29tbWl0ICYmICRsYXN0Y29tbWl0IGVxICRjb21taXRzaGExKSB7ICMgdXAtdG8tZGF0ZQorICAgICAgICAgIyBpbnZhbGlkYXRlIHRoZSBnZXRoZWFkIGNhY2hlCisgICAgICAgICAkc2VsZi0+Y2xlYXJDb21taXRSZWZDYWNoZXMoKTsKICAgICAgICAgIHJldHVybiAxOwogICAgIH0KIApAQCAtMzA2MCw0NSArMzgzMCwxMCBAQAogICAgICAgICBwdXNoIEBnaXRfbG9nX3BhcmFtcywgJHNlbGYtPnttb2R1bGV9OwogICAgIH0KICAgICAjIGdpdC1yZXYtbGlzdCBpcyB0aGUgYmFja2VuZCAvIHBsdW1iaW5nIHZlcnNpb24gb2YgZ2l0LWxvZwotICAgIG9wZW4oR0lUTE9HLCAnLXwnLCAnZ2l0JywgJ3Jldi1saXN0JywgQGdpdF9sb2dfcGFyYW1zKSBvciBkaWUgIkNhbm5vdCBjYWxsIGdpdC1yZXYtbGlzdDogJCEiOwotCi0gICAgbXkgQGNvbW1pdHM7Ci0KLSAgICBteSAlY29tbWl0ID0gKCk7Ci0KLSAgICB3aGlsZSAoIDxHSVRMT0c+ICkKLSAgICB7Ci0gICAgICAgIGNob21wOwotICAgICAgICBpZiAobS9eY29tbWl0XHMrKC4qKSQvKSB7Ci0gICAgICAgICAgICAjIG9uIF5jb21taXQgbGluZXMgcHV0IHRoZSBqdXN0IHNlZW4gY29tbWl0IGluIHRoZSBzdGFjawotICAgICAgICAgICAgIyBhbmQgcHJpbWUgdGhpbmdzIGZvciB0aGUgbmV4dCBvbmUKLSAgICAgICAgICAgIGlmIChrZXlzICVjb21taXQpIHsKLSAgICAgICAgICAgICAgICBteSAlY29weSA9ICVjb21taXQ7Ci0gICAgICAgICAgICAgICAgdW5zaGlmdCBAY29tbWl0cywgXCVjb3B5OwotICAgICAgICAgICAgICAgICVjb21taXQgPSAoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG15IEBwYXJlbnRzID0gc3BsaXQobS9ccysvLCAkMSk7Ci0gICAgICAgICAgICAkY29tbWl0e2hhc2h9ID0gc2hpZnQgQHBhcmVudHM7Ci0gICAgICAgICAgICAkY29tbWl0e3BhcmVudHN9ID0gXEBwYXJlbnRzOwotICAgICAgICB9IGVsc2lmIChtL14oXHcrPyk6XHMrKC4qKSQvICYmICFleGlzdHMoJGNvbW1pdHttZXNzYWdlfSkpIHsKLSAgICAgICAgICAgICMgb24gcmZjODIyLWxpa2UgbGluZXMgc2VlbiBiZWZvcmUgd2Ugc2VlIGFueSBtZXNzYWdlLAotICAgICAgICAgICAgIyBsb3dlcmNhc2UgdGhlIGVudHJ5IGFuZCBwdXQgaXQgaW4gdGhlIGhhc2ggYXMga2V5LXZhbHVlCi0gICAgICAgICAgICAkY29tbWl0e2xjKCQxKX0gPSAkMjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICMgbWVzc2FnZSBsaW5lcyAtIHNraXAgaW5pdGlhbCBlbXB0eSBsaW5lCi0gICAgICAgICAgICAjIGFuZCB0cmltIHdoaXRlc3BhY2UKLSAgICAgICAgICAgIGlmICghZXhpc3RzKCRjb21taXR7bWVzc2FnZX0pICYmIG0vXlxzKiQvKSB7Ci0gICAgICAgICAgICAgICAgIyBkZWZpbmUgaXQgdG8gbWFyayB0aGUgZW5kIG9mIGhlYWRlcnMKLSAgICAgICAgICAgICAgICAkY29tbWl0e21lc3NhZ2V9ID0gJyc7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHMvXlxzKy8vOyBzL1xzKyQvLzsgIyB0cmltIHdzCi0gICAgICAgICAgICAkY29tbWl0e21lc3NhZ2V9IC49ICRfIC4gIlxuIjsKLSAgICAgICAgfQotICAgIH0KLSAgICBjbG9zZSBHSVRMT0c7Ci0KLSAgICB1bnNoaWZ0IEBjb21taXRzLCBcJWNvbW1pdCBpZiAoIGtleXMgJWNvbW1pdCApOworICAgIG9wZW4obXkgJGdpdExvZ1BpcGUsICctfCcsICdnaXQnLCAncmV2LWxpc3QnLCBAZ2l0X2xvZ19wYXJhbXMpCisgICAgICAgICAgICAgICAgb3IgZGllICJDYW5ub3QgY2FsbCBnaXQtcmV2LWxpc3Q6ICQhIjsKKyAgICBteSBAY29tbWl0cz1yZWFkQ29tbWl0cygkZ2l0TG9nUGlwZSk7CisgICAgY2xvc2UgJGdpdExvZ1BpcGU7CiAKICAgICAjIE5vdyBhbGwgdGhlIGNvbW1pdHMgYXJlIGluIHRoZSBAY29tbWl0cyBidWNrZXQKICAgICAjIG9yZGVyZWQgYnkgdGltZSBERVNDLiBmb3IgZWFjaCBjb21taXQgdGhhdCBuZWVkcyBwcm9jZXNzaW5nLApAQCAtMzExNiw3ICszODUxLDcgQEAKICAgICBteSAkY29tbWl0Y291bnQgPSAwOwogCiAgICAgIyBMb2FkIHRoZSBoZWFkIHRhYmxlIGludG8gJGhlYWQgKGZvciBjYWNoZWQgbG9va3VwcyBkdXJpbmcgdGhlIHVwZGF0ZSBwcm9jZXNzKQotICAgIGZvcmVhY2ggbXkgJGZpbGUgKCBAeyRzZWxmLT5nZXRoZWFkKCl9ICkKKyAgICBmb3JlYWNoIG15ICRmaWxlICggQHskc2VsZi0+Z2V0aGVhZCgxKX0gKQogICAgIHsKICAgICAgICAgJGhlYWQtPnskZmlsZS0+e25hbWV9fSA9ICRmaWxlOwogICAgIH0KQEAgLTMxMzQsMTcgKzM4NjksMTggQEAKICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgfSBlbHNpZiAoQHskY29tbWl0LT57cGFyZW50c319ID4gMSkgewogICAgICAgICAgICAgICAgICMgaXQgaXMgYSBtZXJnZSBjb21taXQsIGZvciBlYWNoIHBhcmVudCB0aGF0IGlzCi0gICAgICAgICAgICAgICAgIyBub3QgJGxhc3RwaWNrZWQsIHNlZSBpZiB3ZSBjYW4gZ2V0IGEgbG9nCisgICAgICAgICAgICAgICAgIyBub3QgJGxhc3RwaWNrZWQgKG5vdCBnaXZlbiBhIENWUyByZXZpc2lvbiBudW1iZXIpLAorICAgICAgICAgICAgICAgICMgc2VlIGlmIHdlIGNhbiBnZXQgYSBsb2cKICAgICAgICAgICAgICAgICAjIGZyb20gdGhlIG1lcmdlLWJhc2UgdG8gdGhhdCBwYXJlbnQgdG8gcHV0IGl0CiAgICAgICAgICAgICAgICAgIyBpbiB0aGUgbWVzc2FnZSBhcyBhIG1lcmdlIHN1bW1hcnkuCiAgICAgICAgICAgICAgICAgbXkgQHBhcmVudHMgPSBAeyRjb21taXQtPntwYXJlbnRzfX07CiAgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkcGFyZW50IChAcGFyZW50cykgewotICAgICAgICAgICAgICAgICAgICAjIGdpdC1tZXJnZS1iYXNlIGNhbiBwb3RlbnRpYWxseSAoYnV0IHJhcmVseSkgdGhyb3cKLSAgICAgICAgICAgICAgICAgICAgIyBzZXZlcmFsIGNhbmRpZGF0ZSBtZXJnZSBiYXNlcy4gbGV0J3MgYXNzdW1lCi0gICAgICAgICAgICAgICAgICAgICMgdGhhdCB0aGUgZmlyc3Qgb25lIGlzIHRoZSBiZXN0IG9uZS4KICAgICAgICAgICAgICAgICAgICAgaWYgKCRwYXJlbnQgZXEgJGxhc3RwaWNrZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIyBnaXQtbWVyZ2UtYmFzZSBjYW4gcG90ZW50aWFsbHkgKGJ1dCByYXJlbHkpIHRocm93CisgICAgICAgICAgICAgICAgICAgICMgc2V2ZXJhbCBjYW5kaWRhdGUgbWVyZ2UgYmFzZXMuIGxldCdzIGFzc3VtZQorICAgICAgICAgICAgICAgICAgICAjIHRoYXQgdGhlIGZpcnN0IG9uZSBpcyB0aGUgYmVzdCBvbmUuCiAJCSAgICBteSAkYmFzZSA9IGV2YWwgewogCQkJICAgIHNhZmVfcGlwZV9jYXB0dXJlKCdnaXQnLCAnbWVyZ2UtYmFzZScsCiAJCQkJCQkgJGxhc3RwaWNrZWQsICRwYXJlbnQpOwpAQCAtMzE5Niw3ICszOTMyLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgICMgY29udmVydCB0aGUgZGF0ZSB0byBDVlMtaGFwcHkgZm9ybWF0Ci0gICAgICAgICRjb21taXQtPntkYXRlfSA9ICIkMiAkMSAkNCAkMyAkNSIgaWYgKCAkY29tbWl0LT57ZGF0ZX0gPX4gL15cdytccysoXHcrKVxzKyhcZCspXHMrKFxkKzpcZCs6XGQrKVxzKyhcZCspXHMrKFsrLV1cZCspJC8gKTsKKyAgICAgICAgbXkgJGN2c0RhdGUgPSBjb252ZXJ0VG9DdnNEYXRlKCRjb21taXQtPntkYXRlfSk7CiAKICAgICAgICAgaWYgKCBkZWZpbmVkICggJGxhc3RwaWNrZWQgKSApCiAgICAgICAgIHsKQEAgLTMyMDUsNyArMzk0MSw3IEBACiAgICAgICAgICAgICB3aGlsZSAoIDxGSUxFTElTVD4gKQogICAgICAgICAgICAgewogCQljaG9tcDsKLSAgICAgICAgICAgICAgICB1bmxlc3MgKCAvXjpcZHs2fVxzK1xkezN9KFxkKVxkezJ9XHMrW2EtekEtWjAtOV17NDB9XHMrKFthLXpBLVowLTldezQwfSlccysoXHcpJC9vICkKKyAgICAgICAgICAgICAgICB1bmxlc3MgKCAvXjpcZHs2fVxzKyhbMC03XXs2fSlccytbYS1mMC05XXs0MH1ccysoW2EtZjAtOV17NDB9KVxzKyhcdykkL28gKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgZGllKCJDb3VsZG4ndCBwcm9jZXNzIGdpdC1kaWZmLXRyZWUgbGluZSA6ICRfIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzIxNSwxMSArMzk1MSw3IEBACiAKICAgICAgICAgICAgICAgICAjICRsb2ctPmRlYnVnKCJGaWxlIG1vZGU9JG1vZGUsIGhhc2g9JGhhc2gsIGNoYW5nZT0kY2hhbmdlLCBuYW1lPSRuYW1lIik7CiAKLSAgICAgICAgICAgICAgICBteSAkZ2l0X3Blcm1zID0gIiI7Ci0gICAgICAgICAgICAgICAgJGdpdF9wZXJtcyAuPSAiciIgaWYgKCAkbW9kZSAmIDQgKTsKLSAgICAgICAgICAgICAgICAkZ2l0X3Blcm1zIC49ICJ3IiBpZiAoICRtb2RlICYgMiApOwotICAgICAgICAgICAgICAgICRnaXRfcGVybXMgLj0gIngiIGlmICggJG1vZGUgJiAxICk7Ci0gICAgICAgICAgICAgICAgJGdpdF9wZXJtcyA9ICJydyIgaWYgKCAkZ2l0X3Blcm1zIGVxICIiICk7CisgICAgICAgICAgICAgICAgbXkgJGRiTW9kZSA9IGNvbnZlcnRUb0RiTW9kZSgkbW9kZSk7CiAKICAgICAgICAgICAgICAgICBpZiAoICRjaGFuZ2UgZXEgIkQiICkKICAgICAgICAgICAgICAgICB7CkBAIC0zMjI5LDExICszOTYxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbiA9PiAkaGVhZC0+eyRuYW1lfXtyZXZpc2lvbn0gKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZWhhc2ggPT4gImRlbGV0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0aGFzaCA9PiAkY29tbWl0LT57aGFzaH0sCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCA9PiAkY29tbWl0LT57ZGF0ZX0sCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCA9PiAkY3ZzRGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvciA9PiAkY29tbWl0LT57YXV0aG9yfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPT4gJGdpdF9wZXJtcywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPT4gJGRiTW9kZSwKICAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgJHNlbGYtPmluc2VydF9yZXYoJG5hbWUsICRoZWFkLT57JG5hbWV9e3JldmlzaW9ufSwgJGhhc2gsICRjb21taXQtPntoYXNofSwgJGNvbW1pdC0+e2RhdGV9LCAkY29tbWl0LT57YXV0aG9yfSwgJGdpdF9wZXJtcyk7CisgICAgICAgICAgICAgICAgICAgICRzZWxmLT5pbnNlcnRfcmV2KCRuYW1lLCAkaGVhZC0+eyRuYW1lfXtyZXZpc2lvbn0sICRoYXNoLCAkY29tbWl0LT57aGFzaH0sICRjdnNEYXRlLCAkY29tbWl0LT57YXV0aG9yfSwgJGRiTW9kZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2lmICggJGNoYW5nZSBlcSAiTSIgfHwgJGNoYW5nZSBlcSAiVCIgKQogICAgICAgICAgICAgICAgIHsKQEAgLTMyNDMsMTEgKzM5NzUsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uID0+ICRoZWFkLT57JG5hbWV9e3JldmlzaW9ufSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlaGFzaCA9PiAkaGFzaCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdGhhc2ggPT4gJGNvbW1pdC0+e2hhc2h9LAotICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPT4gJGNvbW1pdC0+e2RhdGV9LAorICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPT4gJGN2c0RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3IgPT4gJGNvbW1pdC0+e2F1dGhvcn0sCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0+ICRnaXRfcGVybXMsCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0+ICRkYk1vZGUsCiAgICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgICRzZWxmLT5pbnNlcnRfcmV2KCRuYW1lLCAkaGVhZC0+eyRuYW1lfXtyZXZpc2lvbn0sICRoYXNoLCAkY29tbWl0LT57aGFzaH0sICRjb21taXQtPntkYXRlfSwgJGNvbW1pdC0+e2F1dGhvcn0sICRnaXRfcGVybXMpOworICAgICAgICAgICAgICAgICAgICAkc2VsZi0+aW5zZXJ0X3JldigkbmFtZSwgJGhlYWQtPnskbmFtZX17cmV2aXNpb259LCAkaGFzaCwgJGNvbW1pdC0+e2hhc2h9LCAkY3ZzRGF0ZSwgJGNvbW1pdC0+e2F1dGhvcn0sICRkYk1vZGUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNpZiAoICRjaGFuZ2UgZXEgIkEiICkKICAgICAgICAgICAgICAgICB7CkBAIC0zMjU3LDExICszOTg5LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbiA9PiAkaGVhZC0+eyRuYW1lfXtyZXZpc2lvbn0gPyAkaGVhZC0+eyRuYW1lfXtyZXZpc2lvbn0rMSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlaGFzaCA9PiAkaGFzaCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdGhhc2ggPT4gJGNvbW1pdC0+e2hhc2h9LAotICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPT4gJGNvbW1pdC0+e2RhdGV9LAorICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPT4gJGN2c0RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3IgPT4gJGNvbW1pdC0+e2F1dGhvcn0sCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0+ICRnaXRfcGVybXMsCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0+ICRkYk1vZGUsCiAgICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgICRzZWxmLT5pbnNlcnRfcmV2KCRuYW1lLCAkaGVhZC0+eyRuYW1lfXtyZXZpc2lvbn0sICRoYXNoLCAkY29tbWl0LT57aGFzaH0sICRjb21taXQtPntkYXRlfSwgJGNvbW1pdC0+e2F1dGhvcn0sICRnaXRfcGVybXMpOworICAgICAgICAgICAgICAgICAgICAkc2VsZi0+aW5zZXJ0X3JldigkbmFtZSwgJGhlYWQtPnskbmFtZX17cmV2aXNpb259LCAkaGFzaCwgJGNvbW1pdC0+e2hhc2h9LCAkY3ZzRGF0ZSwgJGNvbW1pdC0+e2F1dGhvcn0sICRkYk1vZGUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgewpAQCAtMzI4NCw3ICs0MDE2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZGllKCJDb3VsZG4ndCBwcm9jZXNzIGdpdC1scy10cmVlIGxpbmUgOiAkXyIpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG15ICggJGdpdF9wZXJtcywgJGdpdF90eXBlLCAkZ2l0X2hhc2gsICRnaXRfZmlsZW5hbWUgKSA9ICggJDEsICQyLCAkMywgJDQgKTsKKyAgICAgICAgICAgICAgICBteSAoICRtb2RlLCAkZ2l0X3R5cGUsICRnaXRfaGFzaCwgJGdpdF9maWxlbmFtZSApID0gKCAkMSwgJDIsICQzLCAkNCApOwogCiAgICAgICAgICAgICAgICAgJHNlZW5fZmlsZXMtPnskZ2l0X2ZpbGVuYW1lfSA9IDE7CiAKQEAgLTMyOTQsMTggKzQwMjYsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgJGhlYWQtPnskZ2l0X2ZpbGVuYW1lfXttb2RlfQogICAgICAgICAgICAgICAgICk7CiAKLSAgICAgICAgICAgICAgICBpZiAoICRnaXRfcGVybXMgPX4gL15cZFxkXGQoXGQpXGRcZC9vICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICRnaXRfcGVybXMgPSAiIjsKLSAgICAgICAgICAgICAgICAgICAgJGdpdF9wZXJtcyAuPSAiciIgaWYgKCAkMSAmIDQgKTsKLSAgICAgICAgICAgICAgICAgICAgJGdpdF9wZXJtcyAuPSAidyIgaWYgKCAkMSAmIDIgKTsKLSAgICAgICAgICAgICAgICAgICAgJGdpdF9wZXJtcyAuPSAieCIgaWYgKCAkMSAmIDEgKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAkZ2l0X3Blcm1zID0gInJ3IjsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbXkgJGRiTW9kZSA9IGNvbnZlcnRUb0RiTW9kZSgkbW9kZSk7CiAKICAgICAgICAgICAgICAgICAjIHVubGVzcyB0aGUgZmlsZSBleGlzdHMgd2l0aCB0aGUgc2FtZSBoYXNoLCB3ZSBuZWVkIHRvIHVwZGF0ZSBpdCAuLi4KLSAgICAgICAgICAgICAgICB1bmxlc3MgKCBkZWZpbmVkKCRvbGRoYXNoKSBhbmQgJG9sZGhhc2ggZXEgJGdpdF9oYXNoIGFuZCBkZWZpbmVkKCRvbGRtb2RlKSBhbmQgJG9sZG1vZGUgZXEgJGdpdF9wZXJtcyApCisgICAgICAgICAgICAgICAgdW5sZXNzICggZGVmaW5lZCgkb2xkaGFzaCkgYW5kICRvbGRoYXNoIGVxICRnaXRfaGFzaCBhbmQgZGVmaW5lZCgkb2xkbW9kZSkgYW5kICRvbGRtb2RlIGVxICRkYk1vZGUgKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgbXkgJG5ld3JldmlzaW9uID0gKCAkb2xkcmV2aXNpb24gb3IgMCApICsgMTsKIApAQCAtMzMxNCwxMyArNDAzOCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb24gPT4gJG5ld3JldmlzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZWhhc2ggPT4gJGdpdF9oYXNoLAogICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0aGFzaCA9PiAkY29tbWl0LT57aGFzaH0sCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCA9PiAkY29tbWl0LT57ZGF0ZX0sCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCA9PiAkY3ZzRGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvciA9PiAkY29tbWl0LT57YXV0aG9yfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPT4gJGdpdF9wZXJtcywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPT4gJGRiTW9kZSwKICAgICAgICAgICAgICAgICAgICAgfTsKIAogCi0gICAgICAgICAgICAgICAgICAgICRzZWxmLT5pbnNlcnRfcmV2KCRnaXRfZmlsZW5hbWUsICRuZXdyZXZpc2lvbiwgJGdpdF9oYXNoLCAkY29tbWl0LT57aGFzaH0sICRjb21taXQtPntkYXRlfSwgJGNvbW1pdC0+e2F1dGhvcn0sICRnaXRfcGVybXMpOworICAgICAgICAgICAgICAgICAgICAkc2VsZi0+aW5zZXJ0X3JldigkZ2l0X2ZpbGVuYW1lLCAkbmV3cmV2aXNpb24sICRnaXRfaGFzaCwgJGNvbW1pdC0+e2hhc2h9LCAkY3ZzRGF0ZSwgJGNvbW1pdC0+e2F1dGhvcn0sICRkYk1vZGUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNsb3NlIEZJTEVMSVNUOwpAQCAtMzMzMywxMCArNDA1NywxMCBAQAogICAgICAgICAgICAgICAgICAgICAkaGVhZC0+eyRmaWxlfXtyZXZpc2lvbn0rKzsKICAgICAgICAgICAgICAgICAgICAgJGhlYWQtPnskZmlsZX17ZmlsZWhhc2h9ID0gImRlbGV0ZWQiOwogICAgICAgICAgICAgICAgICAgICAkaGVhZC0+eyRmaWxlfXtjb21taXRoYXNofSA9ICRjb21taXQtPntoYXNofTsKLSAgICAgICAgICAgICAgICAgICAgJGhlYWQtPnskZmlsZX17bW9kaWZpZWR9ID0gJGNvbW1pdC0+e2RhdGV9OworICAgICAgICAgICAgICAgICAgICAkaGVhZC0+eyRmaWxlfXttb2RpZmllZH0gPSAkY3ZzRGF0ZTsKICAgICAgICAgICAgICAgICAgICAgJGhlYWQtPnskZmlsZX17YXV0aG9yfSA9ICRjb21taXQtPnthdXRob3J9OwogCi0gICAgICAgICAgICAgICAgICAgICRzZWxmLT5pbnNlcnRfcmV2KCRmaWxlLCAkaGVhZC0+eyRmaWxlfXtyZXZpc2lvbn0sICRoZWFkLT57JGZpbGV9e2ZpbGVoYXNofSwgJGNvbW1pdC0+e2hhc2h9LCAkY29tbWl0LT57ZGF0ZX0sICRjb21taXQtPnthdXRob3J9LCAkaGVhZC0+eyRmaWxlfXttb2RlfSk7CisgICAgICAgICAgICAgICAgICAgICRzZWxmLT5pbnNlcnRfcmV2KCRmaWxlLCAkaGVhZC0+eyRmaWxlfXtyZXZpc2lvbn0sICRoZWFkLT57JGZpbGV9e2ZpbGVoYXNofSwgJGNvbW1pdC0+e2hhc2h9LCAkY3ZzRGF0ZSwgJGNvbW1pdC0+e2F1dGhvcn0sICRoZWFkLT57JGZpbGV9e21vZGV9KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAjIEVORCA6ICJEZXRlY3QgZGVsZXRlZCBmaWxlcyIKQEAgLTMzNjcsMTMgKzQwOTEsOTQgQEAKICAgICAgICAgKTsKICAgICB9CiAgICAgIyBpbnZhbGlkYXRlIHRoZSBnZXRoZWFkIGNhY2hlCi0gICAgJHNlbGYtPntnZXRoZWFkX2NhY2hlfSA9IHVuZGVmOworICAgICRzZWxmLT5jbGVhckNvbW1pdFJlZkNhY2hlcygpOwogCiAKICAgICAjIEVuZGluZyBleGNsdXNpdmUgbG9jayBoZXJlCiAgICAgJHNlbGYtPntkYmh9LT5jb21taXQoKSBvciBkaWUgIkZhaWxlZCB0byBjb21taXQgY2hhbmdlcyB0byBTUUxpdGUiOwogfQogCitzdWIgcmVhZENvbW1pdHMKK3sKKyAgICBteSAkcGlwZUhhbmRsZSA9IHNoaWZ0OworICAgIG15IEBjb21taXRzOworCisgICAgbXkgJWNvbW1pdCA9ICgpOworCisgICAgd2hpbGUgKCA8JHBpcGVIYW5kbGU+ICkKKyAgICB7CisgICAgICAgIGNob21wOworICAgICAgICBpZiAobS9eY29tbWl0XHMrKC4qKSQvKSB7CisgICAgICAgICAgICAjIG9uIF5jb21taXQgbGluZXMgcHV0IHRoZSBqdXN0IHNlZW4gY29tbWl0IGluIHRoZSBzdGFjaworICAgICAgICAgICAgIyBhbmQgcHJpbWUgdGhpbmdzIGZvciB0aGUgbmV4dCBvbmUKKyAgICAgICAgICAgIGlmIChrZXlzICVjb21taXQpIHsKKyAgICAgICAgICAgICAgICBteSAlY29weSA9ICVjb21taXQ7CisgICAgICAgICAgICAgICAgdW5zaGlmdCBAY29tbWl0cywgXCVjb3B5OworICAgICAgICAgICAgICAgICVjb21taXQgPSAoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG15IEBwYXJlbnRzID0gc3BsaXQobS9ccysvLCAkMSk7CisgICAgICAgICAgICAkY29tbWl0e2hhc2h9ID0gc2hpZnQgQHBhcmVudHM7CisgICAgICAgICAgICAkY29tbWl0e3BhcmVudHN9ID0gXEBwYXJlbnRzOworICAgICAgICB9IGVsc2lmIChtL14oXHcrPyk6XHMrKC4qKSQvICYmICFleGlzdHMoJGNvbW1pdHttZXNzYWdlfSkpIHsKKyAgICAgICAgICAgICMgb24gcmZjODIyLWxpa2UgbGluZXMgc2VlbiBiZWZvcmUgd2Ugc2VlIGFueSBtZXNzYWdlLAorICAgICAgICAgICAgIyBsb3dlcmNhc2UgdGhlIGVudHJ5IGFuZCBwdXQgaXQgaW4gdGhlIGhhc2ggYXMga2V5LXZhbHVlCisgICAgICAgICAgICAkY29tbWl0e2xjKCQxKX0gPSAkMjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICMgbWVzc2FnZSBsaW5lcyAtIHNraXAgaW5pdGlhbCBlbXB0eSBsaW5lCisgICAgICAgICAgICAjIGFuZCB0cmltIHdoaXRlc3BhY2UKKyAgICAgICAgICAgIGlmICghZXhpc3RzKCRjb21taXR7bWVzc2FnZX0pICYmIG0vXlxzKiQvKSB7CisgICAgICAgICAgICAgICAgIyBkZWZpbmUgaXQgdG8gbWFyayB0aGUgZW5kIG9mIGhlYWRlcnMKKyAgICAgICAgICAgICAgICAkY29tbWl0e21lc3NhZ2V9ID0gJyc7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHMvXlxzKy8vOyBzL1xzKyQvLzsgIyB0cmltIHdzCisgICAgICAgICAgICAkY29tbWl0e21lc3NhZ2V9IC49ICRfIC4gIlxuIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVuc2hpZnQgQGNvbW1pdHMsIFwlY29tbWl0IGlmICgga2V5cyAlY29tbWl0ICk7CisKKyAgICByZXR1cm4gQGNvbW1pdHM7Cit9CisKK3N1YiBjb252ZXJ0VG9DdnNEYXRlCit7CisgICAgbXkgJGRhdGUgPSBzaGlmdDsKKyAgICAjIENvbnZlcnQgZnJvbTogImdpdCByZXYtbGlzdCAtLXByZXR0eSIgZm9ybWF0dGVkIGRhdGUKKyAgICAjIENvbnZlcnQgdG86ICJ0aGUgZm9ybWF0IHNwZWNpZmllZCBieSBSRkM4MjIgYXMgbW9kaWZpZWQgYnkgUkZDMTEyMy4iCisgICAgIyBFeGFtcGxlOiAyNiBNYXkgMTk5NyAxMzowMTo0MCAtMDQwMAorICAgIGlmKCAkZGF0ZSA9fiAvXlx3K1xzKyhcdyspXHMrKFxkKylccysoXGQrOlxkKzpcZCspXHMrKFxkKylccysoWystXVxkKykkLyApCisgICAgeworICAgICAgICAkZGF0ZSA9ICIkMiAkMSAkNCAkMyAkNSI7CisgICAgfQorCisgICAgcmV0dXJuICRkYXRlOworfQorCitzdWIgY29udmVydFRvRGJNb2RlCit7CisgICAgbXkgJG1vZGUgPSBzaGlmdDsKKworICAgICMgTk9URTogVGhlIENWUyBwcm90b2NvbCB1c2VzIGEgc3RyaW5nIHNpbWlsYXIgInU9cncsZz1ydyxvPXJ3IiwKKyAgICAjICBidXQgdGhlIGRhdGFiYXNlICJtb2RlIiBjb2x1bW4gaGlzdG9yaWNhbGx5IChhbmQgY3VycmVudGx5KQorICAgICMgIG9ubHkgc3RvcmVzIHRoZSAicnciIChmb3IgdXNlcikgcGFydCBvZiB0aGUgc3RyaW5nLgorICAgICMgICAgRlVUVVJFOiBJdCBtaWdodCBtYWtlIG1vcmUgc2Vuc2UgdG8gcGVyc2lzdCB0aGUgcmF3CisgICAgIyAgb2N0YWwgbW9kZSAob3IgcGVyaGFwcyB0aGUgZmluYWwgZnVsbCBDVlMgZm9ybSkgaW5zdGVhZCBvZgorICAgICMgIHRoaXMgaGFsZi1jb252ZXJ0ZWQgZm9ybSwgYnV0IGl0IGlzbid0IGN1cnJlbnRseSB3b3J0aCB0aGUKKyAgICAjICBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBoZWFkYWNoZXMuCisKKyAgICAkbW9kZT1+L15cZFxkKFxkKVxkezN9JC87CisgICAgbXkgJHVzZXJCaXRzPSQxOworCisgICAgbXkgJGRiTW9kZSA9ICIiOworICAgICRkYk1vZGUgLj0gInIiIGlmICggJHVzZXJCaXRzICYgNCApOworICAgICRkYk1vZGUgLj0gInciIGlmICggJHVzZXJCaXRzICYgMiApOworICAgICRkYk1vZGUgLj0gIngiIGlmICggJHVzZXJCaXRzICYgMSApOworICAgICRkYk1vZGUgPSAicnciIGlmICggJGRiTW9kZSBlcSAiIiApOworCisgICAgcmV0dXJuICRkYk1vZGU7Cit9CisKIHN1YiBpbnNlcnRfcmV2CiB7CiAgICAgbXkgJHNlbGYgPSBzaGlmdDsKQEAgLTM0MjYsMTkgKzQyMzEsNiBAQAogICAgICRpbnNlcnRfaGVhZC0+ZXhlY3V0ZSgkbmFtZSwgJHJldmlzaW9uLCAkZmlsZWhhc2gsICRjb21taXRoYXNoLCAkbW9kaWZpZWQsICRhdXRob3IsICRtb2RlKTsKIH0KIAotc3ViIF9oZWFkcmV2Ci17Ci0gICAgbXkgJHNlbGYgPSBzaGlmdDsKLSAgICBteSAkZmlsZW5hbWUgPSBzaGlmdDsKLSAgICBteSAkdGFibGVuYW1lID0gJHNlbGYtPnRhYmxlbmFtZSgiaGVhZCIpOwotCi0gICAgbXkgJGRiX3F1ZXJ5ID0gJHNlbGYtPntkYmh9LT5wcmVwYXJlX2NhY2hlZCgiU0VMRUNUIGZpbGVoYXNoLCByZXZpc2lvbiwgbW9kZSBGUk9NICR0YWJsZW5hbWUgV0hFUkUgbmFtZT0/Iix7fSwxKTsKLSAgICAkZGJfcXVlcnktPmV4ZWN1dGUoJGZpbGVuYW1lKTsKLSAgICBteSAoICRoYXNoLCAkcmV2aXNpb24sICRtb2RlICkgPSAkZGJfcXVlcnktPmZldGNocm93X2FycmF5OwotCi0gICAgcmV0dXJuICggJGhhc2gsICRyZXZpc2lvbiwgJG1vZGUgKTsKLX0KLQogc3ViIF9nZXRfcHJvcAogewogICAgIG15ICRzZWxmID0gc2hpZnQ7CkBAIC0zNDc4LDYgKzQyNzAsNyBAQAogc3ViIGdldGhlYWQKIHsKICAgICBteSAkc2VsZiA9IHNoaWZ0OworICAgIG15ICRpbnRSZXYgPSBzaGlmdDsKICAgICBteSAkdGFibGVuYW1lID0gJHNlbGYtPnRhYmxlbmFtZSgiaGVhZCIpOwogCiAgICAgcmV0dXJuICRzZWxmLT57Z2V0aGVhZF9jYWNoZX0gaWYgKCBkZWZpbmVkICggJHNlbGYtPntnZXRoZWFkX2NhY2hlfSApICk7CkBAIC0zNDg4LDYgKzQyODEsMTAgQEAKICAgICBteSAkdHJlZSA9IFtdOwogICAgIHdoaWxlICggbXkgJGZpbGUgPSAkZGJfcXVlcnktPmZldGNocm93X2hhc2hyZWYgKQogICAgIHsKKyAgICAgICAgaWYoISRpbnRSZXYpCisgICAgICAgIHsKKyAgICAgICAgICAgICRmaWxlLT57cmV2aXNpb259ID0gIjEuJGZpbGUtPntyZXZpc2lvbn0iCisgICAgICAgIH0KICAgICAgICAgcHVzaCBAJHRyZWUsICRmaWxlOwogICAgIH0KIApAQCAtMzQ5NiwyNiArNDI5MywyMjIgQEAKICAgICByZXR1cm4gJHRyZWU7CiB9CiAKKz1oZWFkMiBnZXRBbnlIZWFkCisKK1JldHVybnMgYSByZWZlcmVuY2UgdG8gYW4gYXJyYXkgb2YgZ2V0bWV0YSBzdHJ1Y3R1cmVzLCBvbmUKK3BlciBmaWxlIGluIHRoZSBzcGVjaWZpZWQgdHJlZSBoYXNoLgorCis9Y3V0CisKK3N1YiBnZXRBbnlIZWFkCit7CisgICAgbXkgKCRzZWxmLCRoYXNoKSA9IEBfOworCisgICAgaWYoIWRlZmluZWQoJGhhc2gpKQorICAgIHsKKyAgICAgICAgcmV0dXJuICRzZWxmLT5nZXRoZWFkKCk7CisgICAgfQorCisgICAgbXkgQGZpbGVzOworICAgIHsKKyAgICAgICAgb3BlbihteSAkZmlsZVBpcGUsICctfCcsICdnaXQnLCAnbHMtdHJlZScsICcteicsICctcicsICRoYXNoKQorICAgICAgICAgICAgICAgIG9yIGRpZSgiQ2Fubm90IGNhbGwgZ2l0LWxzLXRyZWUgOiAkISIpOworICAgICAgICBsb2NhbCAkLyA9ICJcMCI7CisgICAgICAgIEBmaWxlcz08JGZpbGVQaXBlPjsKKyAgICAgICAgY2xvc2UgJGZpbGVQaXBlOworICAgIH0KKworICAgIG15ICR0cmVlPVtdOworICAgIG15KCRsaW5lKTsKKyAgICBmb3JlYWNoICRsaW5lIChAZmlsZXMpCisgICAgeworICAgICAgICAkbGluZT1+cy9cMCQvLzsKKyAgICAgICAgdW5sZXNzICggJGxpbmU9fi9eKFxkKylccysoXHcrKVxzKyhbYS16QS1aMC05XSspXHQoLiopJC9vICkKKyAgICAgICAgeworICAgICAgICAgICAgZGllKCJDb3VsZG4ndCBwcm9jZXNzIGdpdC1scy10cmVlIGxpbmUgOiAkXyIpOworICAgICAgICB9CisKKyAgICAgICAgbXkoJG1vZGUsICRnaXRfdHlwZSwgJGdpdF9oYXNoLCAkZ2l0X2ZpbGVuYW1lKSA9ICgkMSwgJDIsICQzLCAkNCk7CisgICAgICAgIHB1c2ggQCR0cmVlLCAkc2VsZi0+Z2V0TWV0YUZyb21Db21taXRoYXNoKCRnaXRfZmlsZW5hbWUsJGhhc2gpOworICAgIH0KKworICAgIHJldHVybiAkdHJlZTsKK30KKworPWhlYWQyIGdldFJldmlzaW9uRGlyTWFwCisKK0EgInJldmlzaW9uIGRpciBtYXAiIGNvbnRhaW5zIGFsbCB0aGUgcGxhaW4tZmlsZSBmaWxlbmFtZXMgYXNzb2NpYXRlZAord2l0aCBhIHBhcnRpY3VsYXIgcmV2aXNpb24gKHRyZWVpc2gpLCBvcmdhbml6ZWQgYnkgZGlyZWN0b3J5OgorCisgICR0eXBlID0gJG91dC0+eyRkaXJ9eyRmdWxsTmFtZX0KKworVGhlIHR5cGUgb2YgZWFjaCBpcyAiRiIgKGZvciBvcmRpbmFyeSBmaWxlKSBvciAiRCIgKGZvciBkaXJlY3RvcnksCitmb3Igd2hpY2ggdGhlIG1hcCAkb3V0LT57JGZ1bGxOYW1lfSB3aWxsIGFsc28gZXhpc3QpLgorCis9Y3V0CisKK3N1YiBnZXRSZXZpc2lvbkRpck1hcAoreworICAgIG15ICgkc2VsZiwkdmVyKT1AXzsKKworICAgIGlmKCFkZWZpbmVkKCRzZWxmLT57cmV2aXNpb25EaXJNYXBDYWNoZX0pKQorICAgIHsKKyAgICAgICAgJHNlbGYtPntyZXZpc2lvbkRpck1hcENhY2hlfT17fTsKKyAgICB9CisKKyAgICAgICAgIyBHZXQgZmlsZSBsaXN0IChwcmV2aW91c2x5IGNhY2hlZCByZXN1bHRzIGFyZSBkZXBlbmRlbnQgb24gSEVBRCwKKyAgICAgICAgIyBidXQgYXJlIGVhcmx5IGluIGVhY2ggY2FzZSk6CisgICAgbXkgJGNhY2hlS2V5OworICAgIG15IChAZmlsZUxpc3QpOworICAgIGlmKCAhZGVmaW5lZCgkdmVyKSB8fCAkdmVyIGVxICIiICkKKyAgICB7CisgICAgICAgICRjYWNoZUtleT0iIjsKKyAgICAgICAgaWYoIGRlZmluZWQoJHNlbGYtPntyZXZpc2lvbkRpck1hcENhY2hlfXskY2FjaGVLZXl9KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAkc2VsZi0+e3JldmlzaW9uRGlyTWFwQ2FjaGV9eyRjYWNoZUtleX07CisgICAgICAgIH0KKworICAgICAgICBteSBAaGVhZCA9IEB7JHNlbGYtPmdldGhlYWQoKX07CisgICAgICAgIGZvcmVhY2ggbXkgJGZpbGUgKCBAaGVhZCApCisgICAgICAgIHsKKyAgICAgICAgICAgIG5leHQgaWYgKCAkZmlsZS0+e2ZpbGVoYXNofSBlcSAiZGVsZXRlZCIgKTsKKworICAgICAgICAgICAgcHVzaCBAZmlsZUxpc3QsJGZpbGUtPntuYW1lfTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBteSAoJGhhc2gpPSRzZWxmLT5sb29rdXBDb21taXRSZWYoJHZlcik7CisgICAgICAgIGlmKCAhZGVmaW5lZCgkaGFzaCkgKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdW5kZWY7CisgICAgICAgIH0KKworICAgICAgICAkY2FjaGVLZXk9JGhhc2g7CisgICAgICAgIGlmKCBkZWZpbmVkKCRzZWxmLT57cmV2aXNpb25EaXJNYXBDYWNoZX17JGNhY2hlS2V5fSkgKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gJHNlbGYtPntyZXZpc2lvbkRpck1hcENhY2hlfXskY2FjaGVLZXl9OworICAgICAgICB9CisKKyAgICAgICAgb3BlbihteSAkZmlsZVBpcGUsICctfCcsICdnaXQnLCAnbHMtdHJlZScsICcteicsICctcicsICRoYXNoKQorICAgICAgICAgICAgICAgIG9yIGRpZSgiQ2Fubm90IGNhbGwgZ2l0LWxzLXRyZWUgOiAkISIpOworICAgICAgICBsb2NhbCAkLyA9ICJcMCI7CisgICAgICAgIHdoaWxlICggPCRmaWxlUGlwZT4gKQorICAgICAgICB7CisgICAgICAgICAgICBjaG9tcDsKKyAgICAgICAgICAgIHVubGVzcyAoIC9eKFxkKylccysoXHcrKVxzKyhbYS16QS1aMC05XSspXHQoLiopJC9vICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkaWUoIkNvdWxkbid0IHByb2Nlc3MgZ2l0LWxzLXRyZWUgbGluZSA6ICRfIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG15KCRtb2RlLCAkZ2l0X3R5cGUsICRnaXRfaGFzaCwgJGdpdF9maWxlbmFtZSkgPSAoJDEsICQyLCAkMywgJDQpOworCisgICAgICAgICAgICBwdXNoIEBmaWxlTGlzdCwgJGdpdF9maWxlbmFtZTsKKyAgICAgICAgfQorICAgICAgICBjbG9zZSAkZmlsZVBpcGU7CisgICAgfQorCisgICAgICAgICMgQ29udmVydCB0byBub3JtYWxpemVkIGZvcm06CisgICAgbXkgJXJldk1hcDsKKyAgICBteSAkZmlsZTsKKyAgICBmb3JlYWNoICRmaWxlIChAZmlsZUxpc3QpCisgICAgeworICAgICAgICBteSgkZGlyKSA9ICgkZmlsZT1+bSVeKD86KC4qKS8pPyhbXi9dKikkJSk7CisgICAgICAgICRkaXI9JycgaWYoIWRlZmluZWQoJGRpcikpOworCisgICAgICAgICAgICAjIHBhcmVudCBkaXJlY3RvcmllczoKKyAgICAgICAgICAgICMgLi4uIGNyZWF0ZSBlbXB0eSBkaXIgbWFwcyBmb3IgcGFyZW50IGRpcnM6CisgICAgICAgIG15KCR0ZCk9JGRpcjsKKyAgICAgICAgd2hpbGUoIWRlZmluZWQoJHJldk1hcHskdGR9KSkKKyAgICAgICAgeworICAgICAgICAgICAgJHJldk1hcHskdGR9PXt9OworCisgICAgICAgICAgICBteSgkdHApPSgkdGQ9fm0lXig/OiguKikvKT8oW14vXSopJCUpOworICAgICAgICAgICAgJHRwPScnIGlmKCFkZWZpbmVkKCR0cCkpOworICAgICAgICAgICAgJHRkPSR0cDsKKyAgICAgICAgfQorICAgICAgICAgICAgIyAuLi4gYWRkIGNoaWxkcmVuIHRvIHBhcmVudCBtYXBzIChub3cgdGhhdCB0aGV5IGV4aXN0KToKKyAgICAgICAgJHRkPSRkaXI7CisgICAgICAgIHdoaWxlKCR0ZCBuZSAiIikKKyAgICAgICAgeworICAgICAgICAgICAgbXkoJHRwKT0oJHRkPX5tJV4oPzooLiopLyk/KFteL10qKSQlKTsKKyAgICAgICAgICAgICR0cD0nJyBpZighZGVmaW5lZCgkdHApKTsKKworICAgICAgICAgICAgaWYoZGVmaW5lZCgkcmV2TWFweyR0cH17JHRkfSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYoJHJldk1hcHskdHB9eyR0ZH0gbmUgJ0QnKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZGllICJXZWlyZCBmaWxlL2RpcmVjdG9yeSBpbmNvbnNpc3RlbmN5IGluICRjYWNoZUtleSI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxhc3Q7ICAgIyBsb29wIGV4aXQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRyZXZNYXB7JHRwfXskdGR9PSdEJzsKKworICAgICAgICAgICAgJHRkPSR0cDsKKyAgICAgICAgfQorCisgICAgICAgICAgICAjIGZpbGUKKyAgICAgICAgJHJldk1hcHskZGlyfXskZmlsZX09J0YnOworICAgIH0KKworICAgICAgICAjIFNhdmUgaW4gY2FjaGU6CisgICAgJHNlbGYtPntyZXZpc2lvbkRpck1hcENhY2hlfXskY2FjaGVLZXl9PVwlcmV2TWFwOworICAgIHJldHVybiAkc2VsZi0+e3JldmlzaW9uRGlyTWFwQ2FjaGV9eyRjYWNoZUtleX07Cit9CisKID1oZWFkMiBnZXRsb2cKIAorU2VlIGFsc28gZ2V0aGlzdG9yeWRlbnNlKCkuCisKID1jdXQKIAogc3ViIGdldGxvZwogewogICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAgbXkgJGZpbGVuYW1lID0gc2hpZnQ7CisgICAgbXkgJHJldkZpbHRlciA9IHNoaWZ0OworCiAgICAgbXkgJHRhYmxlbmFtZSA9ICRzZWxmLT50YWJsZW5hbWUoInJldmlzaW9uIik7CiAKKyAgICAjIEZpbHRlcnM6CisgICAgIyBUT0RPOiBkYXRlLCBzdGF0ZSwgb3IgYnkgc3BlY2lmaWMgbG9naW5zIGZpbHRlcnM/CisgICAgIyBUT0RPOiBIYW5kbGUgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgcmV2RmlsdGVyIGl0ZW1zLCBlYWNoIGl0ZW0KKyAgICAjICAgY2FuIGJlIGEgcmFuZ2UgW29ubHkgY2FzZSBjdXJyZW50bHkgaGFuZGxlZF0gb3IgaW5kaXZpZHVhbAorICAgICMgICByZXYgb3IgYnJhbmNoIG9yICJicmFuY2guIi4KKyAgICAjIFRPRE86IEFkanVzdCAkZGJfcXVlcnkgV0hFUkUgY2xhdXNlIGJhc2VkIG9uIHJldkZpbHRlciwgaW5zdGVhZCBvZgorICAgICMgICBtYW51YWxseSBmaWx0ZXJpbmcgdGhlIHJlc3VsdHMgb2YgdGhlIHF1ZXJ5PworICAgIG15ICggJG1pbnJldiwgJG1heHJldiApOworICAgIGlmKCBkZWZpbmVkKCRyZXZGaWx0ZXIpIGFuZAorICAgICAgICAkc3RhdGUtPntvcHR9e3J9ID1+IC9eKDEuKFxkKykpPyg6Oj8pKDEuKFxkLispKT8kLyApCisgICAgeworICAgICAgICBteSAkY29udHJvbCA9ICQzOworICAgICAgICAkbWlucmV2ID0gJDI7CisgICAgICAgICRtYXhyZXYgPSAkNTsKKyAgICAgICAgJG1pbnJldisrIGlmICggZGVmaW5lZCgkbWlucmV2KSBhbmQgJGNvbnRyb2wgZXEgIjo6IiApOworICAgIH0KKwogICAgIG15ICRkYl9xdWVyeSA9ICRzZWxmLT57ZGJofS0+cHJlcGFyZV9jYWNoZWQoIlNFTEVDVCBuYW1lLCBmaWxlaGFzaCwgYXV0aG9yLCBtb2RlLCByZXZpc2lvbiwgbW9kaWZpZWQsIGNvbW1pdGhhc2ggRlJPTSAkdGFibGVuYW1lIFdIRVJFIG5hbWU9PyBPUkRFUiBCWSByZXZpc2lvbiBERVNDIix7fSwxKTsKICAgICAkZGJfcXVlcnktPmV4ZWN1dGUoJGZpbGVuYW1lKTsKIAorICAgIG15ICR0b3RhbFJldnM9MDsKICAgICBteSAkdHJlZSA9IFtdOwogICAgIHdoaWxlICggbXkgJGZpbGUgPSAkZGJfcXVlcnktPmZldGNocm93X2hhc2hyZWYgKQogICAgIHsKKyAgICAgICAgJHRvdGFsUmV2cysrOworICAgICAgICBpZiggZGVmaW5lZCgkbWlucmV2KSBhbmQgJGZpbGUtPntyZXZpc2lvbn0gPCAkbWlucmV2ICkKKyAgICAgICAgeworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorICAgICAgICBpZiggZGVmaW5lZCgkbWF4cmV2KSBhbmQgJGZpbGUtPntyZXZpc2lvbn0gPiAkbWF4cmV2ICkKKyAgICAgICAgeworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorCisgICAgICAgICRmaWxlLT57cmV2aXNpb259ID0gIjEuIiAuICRmaWxlLT57cmV2aXNpb259OwogICAgICAgICBwdXNoIEAkdHJlZSwgJGZpbGU7CiAgICAgfQogCi0gICAgcmV0dXJuICR0cmVlOworICAgIHJldHVybiAoJHRyZWUsJHRvdGFsUmV2cyk7CiB9CiAKID1oZWFkMiBnZXRtZXRhCkBAIC0zNTIzLDYgKzQ1MTYsMTkgQEAKIFRoaXMgZnVuY3Rpb24gdGFrZXMgYSBmaWxlbmFtZSAod2l0aCBwYXRoKSBhcmd1bWVudCBhbmQgcmV0dXJucyBhIGhhc2hyZWYgb2YKIG1ldGFkYXRhIGZvciB0aGF0IGZpbGUuCiAKK1RoZXJlIGFyZSBzZXZlcmFsIHdheXMgJHJldmlzaW9uIGNhbiBiZSBzcGVjaWZpZWQ6CisKKyAgIC0gQSByZWZlcmVuY2UgdG8gaGFzaCB0aGF0IGNvbnRhaW5zIGEgInRhZyIgdGhhdCBpcyB0aGUKKyAgICAgYWN0dWFsIHJldmlzaW9uIChvbmUgb2YgdGhlIGJlbG93KS4gIFRPRE86IEFsc28gYWxsb3cgaXQgdG8KKyAgICAgc3BlY2lmeSBhICJkYXRlIiBpbiB0aGUgaGFzaC4KKyAgIC0gdW5kZWYsIHRvIHJlZmVyIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvbiB0aGUgbWFpbiBicmFuY2guCisgICAtIEZ1bGwgQ1ZTIGNsaWVudCByZXZpc2lvbiBudW1iZXIgKG1hcHBlZCB0byBpbnRlZ2VyIGluIERCLCB3aXRob3V0IHRoZQorICAgICAiMS4iIHByZWZpeCksCisgICAtIENvbXBsZXggQ1ZTLWNvbXBhdGlibGUgInNwZWNpYWwiIHJldmlzaW9uIG51bWJlciBmb3IKKyAgICAgbm9uLWxpbmVhciBoaXN0b3J5IChzZWUgY29tbWVudCBiZWxvdykKKyAgIC0gZ2l0IGNvbW1pdCBzaGExIGhhc2gKKyAgIC0gYnJhbmNoIG9yIHRhZyBuYW1lCisKID1jdXQKIAogc3ViIGdldG1ldGEKQEAgLTM1MzMsMjIgKzQ1MzksMzQ3IEBACiAgICAgbXkgJHRhYmxlbmFtZV9yZXYgPSAkc2VsZi0+dGFibGVuYW1lKCJyZXZpc2lvbiIpOwogICAgIG15ICR0YWJsZW5hbWVfaGVhZCA9ICRzZWxmLT50YWJsZW5hbWUoImhlYWQiKTsKIAotICAgIG15ICRkYl9xdWVyeTsKLSAgICBpZiAoIGRlZmluZWQoJHJldmlzaW9uKSBhbmQgJHJldmlzaW9uID1+IC9eXGQrJC8gKQorICAgIGlmICggcmVmKCRyZXZpc2lvbikgZXEgIkhBU0giICkKICAgICB7Ci0gICAgICAgICRkYl9xdWVyeSA9ICRzZWxmLT57ZGJofS0+cHJlcGFyZV9jYWNoZWQoIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZV9yZXYgV0hFUkUgbmFtZT0/IEFORCByZXZpc2lvbj0/Iix7fSwxKTsKLSAgICAgICAgJGRiX3F1ZXJ5LT5leGVjdXRlKCRmaWxlbmFtZSwgJHJldmlzaW9uKTsKLSAgICB9Ci0gICAgZWxzaWYgKCBkZWZpbmVkKCRyZXZpc2lvbikgYW5kICRyZXZpc2lvbiA9fiAvXlthLXpBLVowLTldezQwfSQvICkKLSAgICB7Ci0gICAgICAgICRkYl9xdWVyeSA9ICRzZWxmLT57ZGJofS0+cHJlcGFyZV9jYWNoZWQoIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZV9yZXYgV0hFUkUgbmFtZT0/IEFORCBjb21taXRoYXNoPT8iLHt9LDEpOwotICAgICAgICAkZGJfcXVlcnktPmV4ZWN1dGUoJGZpbGVuYW1lLCAkcmV2aXNpb24pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgICRkYl9xdWVyeSA9ICRzZWxmLT57ZGJofS0+cHJlcGFyZV9jYWNoZWQoIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZV9oZWFkIFdIRVJFIG5hbWU9PyIse30sMSk7Ci0gICAgICAgICRkYl9xdWVyeS0+ZXhlY3V0ZSgkZmlsZW5hbWUpOworICAgICAgICAkcmV2aXNpb24gPSAkcmV2aXNpb24tPnt0YWd9OwogICAgIH0KIAotICAgIHJldHVybiAkZGJfcXVlcnktPmZldGNocm93X2hhc2hyZWY7CisgICAgIyBPdmVydmlldyBvZiBDVlMgcmV2aXNpb24gbnVtYmVyczoKKyAgICAjCisgICAgIyBHZW5lcmFsIENWUyBudW1iZXJpbmcgc2NoZW1lOgorICAgICMgICAtIEJhc2ljIG1haW5saW5lIGJyYW5jaCBudW1iZXJzOiAiMS4xIiwgIjEuMiIsICIxLjMiLCBldGMuCisgICAgIyAgIC0gUmVzdWx0IG9mICJjdnMgY2hlY2tpbiAtciIgKHBvc3NpYmxlLCBidXQgbm90IHJlYWxseQorICAgICMgICAgIHJlY29tbWVuZGVkKTogIjIuMSIsICIyLjIiLCBldGMKKyAgICAjICAgLSBCcmFuY2ggdGFnOiAiMS4yLjAubiIsIHdoZXJlICIxLjIiIGlzIHJldmlzaW9uIGl0IHdhcyBicmFuY2hlZAorICAgICMgICAgIGZyb20sICIwIiBpcyBhIG1hZ2ljIHBsYWNlaG9sZGVyIHRoYXQgaWRlbnRpZmllcyBpdCBhcyBhCisgICAgIyAgICAgYnJhbmNoIHRhZyBpbnN0ZWFkIG9mIGEgdmVyc2lvbiB0YWcsIGFuZCBuIGlzIDIgdGltZXMgdGhlCisgICAgIyAgICAgYnJhbmNoIG51bWJlciBvZmYgb2YgIjEuMiIsIHN0YXJ0aW5nIHdpdGggIjIiLgorICAgICMgICAtIFZlcnNpb24gb24gYSBicmFuY2g6ICIxLjIubi54Iiwgd2hlcmUgIjEuMiIgaXMgYnJhbmNoLWZyb20sICJuIgorICAgICMgICAgIGlzIGJyYW5jaCBudW1iZXIgb2ZmIG9mICIxLjIiIChsaWtlIG4gYWJvdmUpLCBhbmQgIngiIGlzCisgICAgIyAgICAgdGhlIHZlcnNpb24gbnVtYmVyIG9uIHRoZSBicmFuY2guCisgICAgIyAgIC0gQnJhbmNoZXMgY2FuIGJyYW5jaCBvZmYgb2YgYnJhbmNoZXM6ICIxLjMuMi43LjQuMSIgKGV2ZW4gbnVtYmVyCisgICAgIyAgICAgb2YgY29tcG9uZW50cykuCisgICAgIyAgIC0gT2RkICJuInMgYXJlIHVzZWQgYnkgInZlbmRvciBicmFuY2hlcyIgdGhhdCByZXN1bHQKKyAgICAjICAgICBmcm9tICJjdnMgaW1wb3J0Ii4gIFZlbmRvciBicmFuY2hlcyBoYXZlIGFkZGl0aW9uYWwKKyAgICAjICAgICBzdHJhbmdlbmVzcyBpbiB0aGUgc2Vuc2UgdGhhdCB0aGUgbWFpbiByY3MgImhlYWQiIG9mIHRoZSBtYWluCisgICAgIyAgICAgYnJhbmNoIHdpbGwgKHRlbXBvcmFyaWx5IHVudGlsIGZpcnN0IG5vcm1hbCBjb21taXQpIHBvaW50CisgICAgIyAgICAgdG8gdGhlIHZlcnNpb24gb24gdGhlIHZlbmRvciBicmFuY2gsIHJhdGhlciB0aGFuIHRoZSBhY3R1YWwKKyAgICAjICAgICBtYWluIGJyYW5jaC4gIChGVVRVUkU6IFRoaXMgbWF5IHByb3ZpZGUgYW4gb3Bwb3J0dW5pdHkKKyAgICAjICAgICB0byB1c2UgInN0cmFuZ2UiIHJldmlzaW9uIG51bWJlcnMgZm9yIGZhc3QtZm9yd2FyZC1tZXJnZWQKKyAgICAjICAgICBicmFuY2ggdGlwIHdoZW4gQ1ZTIGNsaWVudCBpcyBhc2tpbmcgZm9yIHRoZSBtYWluIGJyYW5jaC4pCisgICAgIworICAgICMgZ2l0LWN2c3NlcnZlciBDVlMtY29tcGF0aWJsZSBzcGVjaWFsIG51bWJlcmluZyBzY2hlbWVzOgorICAgICMgICAtIEN1cnJlbnRseSBnaXQtY3Zzc2VydmVyIG9ubHkgdHJpZXMgdG8gYmUgaWRlbnRpY2FsIHRvIENWUyBmb3IKKyAgICAjICAgICBzaW1wbGUgIjEueCIgbnVtYmVycyBvbiB0aGUgIm1haW4iIGJyYW5jaCAoYXMgaWRlbnRpZmllZAorICAgICMgICAgIGJ5IHRoZSBtb2R1bGUgbmFtZSB0aGF0IHdhcyBvcmlnaW5hbGx5IGN2cyBjaGVja291dCdlZCkuCisgICAgIyAgIC0gVGhlIGRhdGFiYXNlIG9ubHkgc3RvcmVzIHRoZSAieCIgcGFydCwgZm9yIGhpc3RvcmljYWwgcmVhc29ucy4KKyAgICAjICAgICBCdXQgbW9zdCBvZiB0aGUgcmVzdCBvZiB0aGUgY3Zzc2VydmVyIHByZXNlcnZlcworICAgICMgICAgIGFuZCB0aGlua3MgdXNpbmcgdGhlIGZ1bGwgcmV2aXNpb24gbnVtYmVyLgorICAgICMgICAtIFRvIGhhbmRsZSBub24tbGluZWFyIGhpc3RvcnksIGl0IHVzZXMgYSB2ZXJzaW9uIG9mIHRoZSBmb3JtCisgICAgIyAgICAgIjIuMS4xLjIwMDAuYi5iLmIuIi4uLiwgd2hlcmUgdGhlIDIuMS4xLjIwMDAgaXMgdG8gaGVscCB1bmlxdWVseQorICAgICMgICAgIGlkZW50aWZ5IHRoaXMgYXMgYSBzcGVjaWFsIHJldmlzaW9uIG51bWJlciwgYW5kIHRoZXJlIGFyZQorICAgICMgICAgIDIwIGIncyB0aGF0IHRvZ2V0aGVyIGVuY29kZSB0aGUgc2hhMSBnaXQgY29tbWl0IGZyb20gd2hpY2gKKyAgICAjICAgICB0aGlzIHZlcnNpb24gb2YgdGhpcyBmaWxlIG9yaWdpbmF0ZWQuICBFYWNoIGIgaXMKKyAgICAjICAgICB0aGUgbnVtZXJpY2FsIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgcGx1cworICAgICMgICAgIDEwMC4KKyAgICAjICAgICAgLSAicGx1cyAxMDAiIGF2b2lkcyAiMCJzLCBhbmQgYWxzbyByZWR1Y2VzIHRoZQorICAgICMgICAgICAgIGxpa2VsaWhvb2Qgb2YgYSBjb2xsaXNpb24gaW4gdGhlIGNhc2UgdGhhdCBzb21lb25lIHNvbWVkYXkKKyAgICAjICAgICAgICB3cml0ZXMgYW4gaW1wb3J0IHRvb2wgdGhhdCB0cmllcyB0byBwcmVzZXJ2ZSBvcmlnaW5hbAorICAgICMgICAgICAgIENWUyByZXZpc2lvbiBudW1iZXJzLCBhbmQgdGhlIG9yaWdpbmFsIENWUyBkYXRhIGhhZCBkb25lCisgICAgIyAgICAgICAgbG90cyBvZiBicmFuY2hlcyBvZmYgb2YgYnJhbmNoZXMgYW5kIG90aGVyIHN0cmFuZ2VuZXNzIHRvCisgICAgIyAgICAgICAgZW5kIHVwIHdpdGggYSByZWFsIHZlcnNpb24gbnVtYmVyIHRoYXQganVzdCBoYXBwZW5zIHRvIGxvb2sKKyAgICAjICAgICAgICBsaWtlIHRoaXMgc3BlY2lhbCByZXZpc2lvbiBudW1iZXIgZm9ybS4gIEFsc28sIGlmIG5lZWRlZAorICAgICMgICAgICAgIHRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdG8gZXh0ZW5kL2lkZW50aWZ5IGFsdGVybmF0aXZlIGVuY29kaW5ncworICAgICMgICAgICAgIHdpdGhpbiB0aGUgIjIuMS4xLjIwMDAiIHBhcnQgaWYgbmVjZXNzYXJ5LgorICAgICMgICAgICAtIFVubGlrZSByZWFsIENWUyByZXZpc2lvbnMsIHlvdSBjYW4ndCByZWFsbHkgcmVjb25zdHJ1Y3Qgd2hhdAorICAgICMgICAgICAgIHJlbGF0aW9uIGEgcmV2aXNpb24gb2YgdGhpcyBmb3JtIGhhcyB0byBvdGhlciByZXZpc2lvbnMuCisgICAgIyAgIC0gRlVUVVJFOiBUT0RPOiBSZXdvcmsgZGF0YWJhc2Ugc29tZWhvdyB0byBtYWtlIHVwIGFuZCByZW1lbWJlcgorICAgICMgICAgIGZ1bGx5LUNWUy1jb21wYXRpYmxlIGJyYW5jaGVzIGFuZCBicmFuY2ggdmVyc2lvbiBudW1iZXJzLgorCisgICAgbXkgJG1ldGE7CisgICAgaWYgKCBkZWZpbmVkKCRyZXZpc2lvbikgKQorICAgIHsKKyAgICAgICAgaWYgKCAkcmV2aXNpb24gPX4gL14xXC4oXGQrKSQvICkKKyAgICAgICAgeworICAgICAgICAgICAgbXkgKCRpbnRSZXYpID0gJDE7CisgICAgICAgICAgICBteSAkZGJfcXVlcnk7CisgICAgICAgICAgICAkZGJfcXVlcnkgPSAkc2VsZi0+e2RiaH0tPnByZXBhcmVfY2FjaGVkKAorICAgICAgICAgICAgICAgICJTRUxFQ1QgKiBGUk9NICR0YWJsZW5hbWVfcmV2IFdIRVJFIG5hbWU9PyBBTkQgcmV2aXNpb249PyIsCisgICAgICAgICAgICAgICAge30sMSk7CisgICAgICAgICAgICAkZGJfcXVlcnktPmV4ZWN1dGUoJGZpbGVuYW1lLCAkaW50UmV2KTsKKyAgICAgICAgICAgICRtZXRhID0gJGRiX3F1ZXJ5LT5mZXRjaHJvd19oYXNocmVmOworICAgICAgICB9CisgICAgICAgIGVsc2lmICggJHJldmlzaW9uID1+IC9eMlwuMVwuMVwuMjAwMChcLlsxLTNdWzAtOV1bMC05XSl7MjB9JC8gKQorICAgICAgICB7CisgICAgICAgICAgICBteSAoJGNvbW1pdEhhc2gpPSgkcmV2aXNpb249fi9eMlwuMVwuMVwuMjAwMCguKikkLyk7CisgICAgICAgICAgICAkY29tbWl0SGFzaD1+cy9cLihbMC05XSspL3NwcmludGYoIiUwMngiLCQxLTEwMCkvZWc7CisgICAgICAgICAgICBpZigkY29tbWl0SGFzaD1+L15bMC05YS1mXXs0MH0kLykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJHNlbGYtPmdldE1ldGFGcm9tQ29tbWl0aGFzaCgkZmlsZW5hbWUsJGNvbW1pdEhhc2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIGVycm9yIHJlY292ZXJ5OiBmYWxsIGJhY2sgb24gaGVhZCB2ZXJzaW9uIGJlbG93CisgICAgICAgICAgICBwcmludCAiRSBGYWlsZWQgdG8gZmluZCAkZmlsZW5hbWUgdmVyc2lvbj0kcmV2aXNpb24gb3IgY29tbWl0PSRjb21taXRIYXNoXG4iOworICAgICAgICAgICAgJGxvZy0+d2FybmluZygiZmFpbGVkIGdldCAkcmV2aXNpb24gd2l0aCBjb21taXRoYXNoPSRjb21taXRIYXNoIik7CisgICAgICAgICAgICB1bmRlZiAkcmV2aXNpb247CisgICAgICAgIH0KKyAgICAgICAgZWxzaWYgKCAkcmV2aXNpb24gPX4gL15bMC05YS1mXXs0MH0kLyApCisgICAgICAgIHsKKyAgICAgICAgICAgICMgVHJ5IERCIGZpcnN0LiAgVGhpcyBpcyBtb3N0bHkgb25seSB1c2VmdWwgZm9yIHJlcV9hbm5vdGF0ZSgpLAorICAgICAgICAgICAgIyB3aGljaCBvbmx5IGNhbGxzIHRoaXMgZm9yIHN0dWZmIHRoYXQgc2hvdWxkIGFscmVhZHkgYmUgaW4KKyAgICAgICAgICAgICMgdGhlIERCLiAgSXQgaXMgZmFpcmx5IGxpa2VseSB0byBiZSBhIHdhc3RlIG9mIHRpbWUKKyAgICAgICAgICAgICMgaW4gbW9zdCBvdGhlciBjYXNlcyBbdW5sZXNzIHRoZSBmaWxlIGhhcHBlbmVkIHRvIGJlCisgICAgICAgICAgICAjIG1vZGlmaWVkIGluICRyZXZpc2lvbiBzcGVjaWZpY2FsbHldLCBidXQKKyAgICAgICAgICAgICMgaXQgaXMgcHJvYmFibHkgaW4gdGhlIG5vaXNlIGNvbXBhcmVkIHRvIGhvdyBsb25nCisgICAgICAgICAgICAjIGdldE1ldGFGcm9tQ29tbWl0aGFzaCgpIHdpbGwgdGFrZS4KKyAgICAgICAgICAgIG15ICRkYl9xdWVyeTsKKyAgICAgICAgICAgICRkYl9xdWVyeSA9ICRzZWxmLT57ZGJofS0+cHJlcGFyZV9jYWNoZWQoCisgICAgICAgICAgICAgICAgIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZV9yZXYgV0hFUkUgbmFtZT0/IEFORCBjb21taXRoYXNoPT8iLAorICAgICAgICAgICAgICAgIHt9LDEpOworICAgICAgICAgICAgJGRiX3F1ZXJ5LT5leGVjdXRlKCRmaWxlbmFtZSwgJHJldmlzaW9uKTsKKyAgICAgICAgICAgICRtZXRhID0gJGRiX3F1ZXJ5LT5mZXRjaHJvd19oYXNocmVmOworCisgICAgICAgICAgICBpZighICRtZXRhKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG15KCRyZXZDb21taXQpPSRzZWxmLT5sb29rdXBDb21taXRSZWYoJHJldmlzaW9uKTsKKyAgICAgICAgICAgICAgICBpZigkcmV2Q29tbWl0PX4vXlswLTlhLWZdezQwfSQvKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRzZWxmLT5nZXRNZXRhRnJvbUNvbW1pdGhhc2goJGZpbGVuYW1lLCRyZXZDb21taXQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICMgZXJyb3IgcmVjb3Zlcnk6IG5vdGhpbmcgZm91bmQ6CisgICAgICAgICAgICAgICAgcHJpbnQgIkUgRmFpbGVkIHRvIGZpbmQgJGZpbGVuYW1lIHZlcnNpb249JHJldmlzaW9uXG4iOworICAgICAgICAgICAgICAgICRsb2ctPndhcm5pbmcoImZhaWxlZCBnZXQgJHJldmlzaW9uIik7CisgICAgICAgICAgICAgICAgcmV0dXJuICRtZXRhOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbXkoJHJldkNvbW1pdCk9JHNlbGYtPmxvb2t1cENvbW1pdFJlZigkcmV2aXNpb24pOworICAgICAgICAgICAgaWYoJHJldkNvbW1pdD1+L15bMC05YS1mXXs0MH0kLykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJHNlbGYtPmdldE1ldGFGcm9tQ29tbWl0aGFzaCgkZmlsZW5hbWUsJHJldkNvbW1pdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgZXJyb3IgcmVjb3Zlcnk6IGZhbGwgYmFjayBvbiBoZWFkIHZlcnNpb24gYmVsb3cKKyAgICAgICAgICAgIHByaW50ICJFIEZhaWxlZCB0byBmaW5kICRmaWxlbmFtZSB2ZXJzaW9uPSRyZXZpc2lvblxuIjsKKyAgICAgICAgICAgICRsb2ctPndhcm5pbmcoImZhaWxlZCBnZXQgJHJldmlzaW9uIik7CisgICAgICAgICAgICB1bmRlZiAkcmV2aXNpb247ICAjIEFsbG93IGZhbGxiYWNrCisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZighZGVmaW5lZCgkcmV2aXNpb24pKQorICAgIHsKKyAgICAgICAgbXkgJGRiX3F1ZXJ5OworICAgICAgICAkZGJfcXVlcnkgPSAkc2VsZi0+e2RiaH0tPnByZXBhcmVfY2FjaGVkKAorICAgICAgICAgICAgICAgICJTRUxFQ1QgKiBGUk9NICR0YWJsZW5hbWVfaGVhZCBXSEVSRSBuYW1lPT8iLHt9LDEpOworICAgICAgICAkZGJfcXVlcnktPmV4ZWN1dGUoJGZpbGVuYW1lKTsKKyAgICAgICAgJG1ldGEgPSAkZGJfcXVlcnktPmZldGNocm93X2hhc2hyZWY7CisgICAgfQorCisgICAgaWYoJG1ldGEpCisgICAgeworICAgICAgICAkbWV0YS0+e3JldmlzaW9ufSA9ICIxLiRtZXRhLT57cmV2aXNpb259IjsKKyAgICB9CisgICAgcmV0dXJuICRtZXRhOworfQorCitzdWIgZ2V0TWV0YUZyb21Db21taXRoYXNoCit7CisgICAgbXkgJHNlbGYgPSBzaGlmdDsKKyAgICBteSAkZmlsZW5hbWUgPSBzaGlmdDsKKyAgICBteSAkcmV2Q29tbWl0ID0gc2hpZnQ7CisKKyAgICAjIE5PVEU6IFRoaXMgZnVuY3Rpb24gZG9lc24ndCBzY2FsZSB3ZWxsIChsb3RzIG9mIGZvcmtzKSwgZXNwZWNpYWxseQorICAgICMgICBpZiB5b3UgaGF2ZSBtYW55IGZpbGVzIHRoYXQgaGF2ZSBub3QgYmVlbiBtb2RpZmllZCBmb3IgbWFueSBjb21taXRzCisgICAgIyAgIChlYWNoIGdpdC1yZXYtcGFyc2UgcmVkb2VzIGEgbG90IG9mIHdvcmsgZm9yIGVhY2ggZmlsZQorICAgICMgICB0aGF0IHRoZW9yZXRpY2FsbHkgY291bGQgYmUgZG9uZSBpbiBwYXJhbGxlbCBieSBzbWFydGVyCisgICAgIyAgIGdyYXBoIHRyYXZlcnNhbCkuCisgICAgIworICAgICMgVE9ETzogUG9zc2libGUgb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXM6CisgICAgIyAgIC0gU29sdmUgdGhlIGlzc3VlIG9mIGFzc2lnbmluZyBhbmQgcmVtZW1iZXJpbmcgInJlYWwiIENWUworICAgICMgICAgIHJldmlzaW9uIG51bWJlcnMgZm9yIGJyYW5jaGVzLCBhbmQgZW5zdXJlIHRoZQorICAgICMgICAgIGRhdGEgc3RydWN0dXJlIGNhbiBkbyB0aGlzIGVmZmljaWVudGx5LiAgUGVyaGFwcyBzb21ldGhpbmcKKyAgICAjICAgICBzaW1pbGFyIHRvICJnaXQgbm90ZXMiLCBhbmQgY2FyZWZ1bGx5IHN0cnVjdHVyZWQgdG8gdGFrZQorICAgICMgICAgIGFkdmFudGFnZSBzYW1lLXNoYTEtaXMtc2FtZS1jb250ZW50cywgdG8gcm9sbCB0aGUgc2FtZQorICAgICMgICAgIHVubW9kaWZpZWQgc3ViZGlyZWN0b3J5IGRhdGEgb250byBtdWx0aXBsZSBjb21taXRzPworICAgICMgICAtIFdyaXRlIGFuZCB1c2UgYSBDIHRvb2wgdGhhdCBpcyBsaWtlIGdpdC1ibGFtZSwgYnV0CisgICAgIyAgICAgb3BlcmF0ZXMgb24gbXVsdGlwbGUgZmlsZXMgd2l0aCBmaWxlIGdyYW51bGFyaXR5LCBpbnN0ZWFkCisgICAgIyAgICAgb2Ygb25lIGZpbGUgd2l0aCBsaW5lIGdyYW51bGFyaXR5LiAgQ2FjaGUKKyAgICAjICAgICBtb3N0LXJlY2VudGx5LW1vZGlmaWVkIGluICRzZWxmLT57Y29tbWl0UmVmQ2FjaGV9eyRyZXZDb21taXR9LgorICAgICMgICAgIFRyeSB0byBiZSBpbnRlbGxpZ2VudCBhYm91dCBob3cgbWFueSBmaWxlcyB3ZSBkbyB3aXRoCisgICAgIyAgICAgb25lIGZvcmsgKHBlcmhhcHMgb25lIGRpcmVjdG9yeSBhdCBhIHRpbWUsIHdpdGhvdXQgcmVjdXJzaW9uLAorICAgICMgICAgIGFuZC9vciBpbmNsdWRlIGRpcmVjdG9yeSBhcyBvbmUgbGluZSBpdGVtLCByZWN1cnNlIGZyb20gaGVyZQorICAgICMgICAgIGluc3RlYWQgb2YgaW4gQyB0b29sPykuCisgICAgIyAgIC0gUGVyaGFwcyB3ZSBjb3VsZCBhc2sgdGhlIERCIGZvciAoZmlsZW5hbWUsZmlsZUhhc2gpLAorICAgICMgICAgIGFuZCBqdXN0IGd1ZXNzIHRoYXQgaXQgaXMgY29ycmVjdCAodGhhdCB0aGUgZmlsZSBoYWRuJ3QKKyAgICAjICAgICBjaGFuZ2VkIGJldHdlZW4gJHJldkNvbW1pdCBhbmQgdGhlIGZvdW5kIGNvbW1pdCwgdGhlbgorICAgICMgICAgIGNoYW5nZWQgYmFjaywgY29uZnVzaW5nIGFueXRoaW5nIHRyeWluZyB0byBpbnRlcnByZXQKKyAgICAjICAgICBoaXN0b3J5KS4gIFByb2JhYmx5IG5lZWQgdG8gYWRkIGFub3RoZXIgaW5kZXggdG8gcmV2aXNpb25zCisgICAgIyAgICAgREIgdGFibGUgZm9yIHRoaXMuCisgICAgIyAgIC0gTk9URTogVHJ5aW5nIHRvIHN0b3JlIGFsbCAoY29tbWl0LGZpbGUpIGtleXMgaW4gREIgW3RvCisgICAgIyAgICAgZmluZCAibGFzdE1vZGZpZWRDb21taXRdIChpbnN0ZWFkIG9mCisgICAgIyAgICAganVzdCBmaWxlcyB0aGF0IGNoYW5nZWQgaW4gZWFjaCBjb21taXQgYXMgd2UgZG8gbm93KSBpcworICAgICMgICAgIHByb2JhYmx5IG5vdCBwcmFjdGljYWwgZnJvbSBhIGRpc2sgc3BhY2UgcGVyc3BlY3RpdmUuCisKKyAgICAgICAgIyBEb2VzIHRoZSBmaWxlIGV4aXN0IGluICRyZXZDb21taXQ/CisgICAgIyBUT0RPOiBJbmNsdWRlIGZpbGUgaGFzaCBpbiBkaXJtYXAgY2FjaGUuCisgICAgbXkoJGRpck1hcCk9JHNlbGYtPmdldFJldmlzaW9uRGlyTWFwKCRyZXZDb21taXQpOworICAgIG15KCRkaXIsJGZpbGUpPSgkZmlsZW5hbWU9fm0lXig/OiguKikvKT8oW14vXSokKSUpOworICAgIGlmKCFkZWZpbmVkKCRkaXIpKQorICAgIHsKKyAgICAgICAgJGRpcj0iIjsKKyAgICB9CisgICAgaWYoICFkZWZpbmVkKCRkaXJNYXAtPnskZGlyfSkgfHwKKyAgICAgICAgIWRlZmluZWQoJGRpck1hcC0+eyRkaXJ9eyRmaWxlbmFtZX0pICkKKyAgICB7CisgICAgICAgIG15KCRmaWxlSGFzaCk9ImRlbGV0ZWQiOworCisgICAgICAgIG15KCRyZXRWYWwpPXt9OworICAgICAgICAkcmV0VmFsLT57bmFtZX09JGZpbGVuYW1lOworICAgICAgICAkcmV0VmFsLT57ZmlsZWhhc2h9PSRmaWxlSGFzaDsKKworICAgICAgICAgICAgIyBub3QgbmVlZGVkIGFuZCBkaWZmaWN1bHQgdG8gY29tcHV0ZToKKyAgICAgICAgJHJldFZhbC0+e3JldmlzaW9ufT0iMCI7ICAjICRyZXZpc2lvbjsKKyAgICAgICAgJHJldFZhbC0+e2NvbW1pdGhhc2h9PSRyZXZDb21taXQ7CisgICAgICAgICMkcmV0VmFsLT57YXV0aG9yfT0kY29tbWl0LT57YXV0aG9yfTsKKyAgICAgICAgIyRyZXRWYWwtPnttb2RpZmllZH09Y29udmVydFRvQ3ZzRGF0ZSgkY29tbWl0LT57ZGF0ZX0pOworICAgICAgICAjJHJldFZhbC0+e21vZGV9PWNvbnZlcnRUb0RiTW9kZSgkbW9kZSk7CisKKyAgICAgICAgcmV0dXJuICRyZXRWYWw7CisgICAgfQorCisgICAgbXkoJGZpbGVIYXNoKT1zYWZlX3BpcGVfY2FwdHVyZSgiZ2l0IiwicmV2LXBhcnNlIiwiJHJldkNvbW1pdDokZmlsZW5hbWUiKTsKKyAgICBjaG9tcCAkZmlsZUhhc2g7CisgICAgaWYoISgkZmlsZUhhc2g9fi9eWzAtOWEtZl17NDB9JC8pKQorICAgIHsKKyAgICAgICAgZGllICJJbnZhbGlkIGZpbGVIYXNoICckZmlsZUhhc2gnIGxvb2tpbmcgdXAiCisgICAgICAgICAgICAgICAgICAgIC4iICckcmV2Q29tbWl0OiRmaWxlbmFtZSdcbiI7CisgICAgfQorCisgICAgIyBpbmZvcm1hdGlvbiBhYm91dCBtb3N0IHJlY2VudCBjb21taXQgdG8gbW9kaWZ5ICRmaWxlbmFtZToKKyAgICBvcGVuKG15ICRnaXRMb2dQaXBlLCAnLXwnLCAnZ2l0JywgJ3Jldi1saXN0JywKKyAgICAgICAgICctLW1heC1jb3VudD0xJywgJy0tcHJldHR5JywgJy0tcGFyZW50cycsCisgICAgICAgICAkcmV2Q29tbWl0LCAnLS0nLCAkZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgb3IgZGllICJDYW5ub3QgY2FsbCBnaXQtcmV2LWxpc3Q6ICQhIjsKKyAgICBteSBAY29tbWl0cz1yZWFkQ29tbWl0cygkZ2l0TG9nUGlwZSk7CisgICAgY2xvc2UgJGdpdExvZ1BpcGU7CisgICAgaWYoc2NhbGFyKEBjb21taXRzKSE9MSkKKyAgICB7CisgICAgICAgIGRpZSAiQ2FuJ3QgZmluZCBtb3N0IHJlY2VudCBjb21taXQgY2hhbmdpbmcgJGZpbGVuYW1lXG4iOworICAgIH0KKyAgICBteSgkY29tbWl0KT0kY29tbWl0c1swXTsKKyAgICBpZiggIWRlZmluZWQoJGNvbW1pdCkgfHwgIWRlZmluZWQoJGNvbW1pdC0+e2hhc2h9KSApCisgICAgeworICAgICAgICByZXR1cm4gdW5kZWY7CisgICAgfQorCisgICAgIyBkb2VzIHRoaXMgKGNvbW1pdCxmaWxlKSBoYXZlIGEgcmVhbCBhc3NpZ25lZCBDVlMgcmV2aXNpb24gbnVtYmVyPworICAgIG15ICR0YWJsZW5hbWVfcmV2ID0gJHNlbGYtPnRhYmxlbmFtZSgicmV2aXNpb24iKTsKKyAgICBteSAkZGJfcXVlcnk7CisgICAgJGRiX3F1ZXJ5ID0gJHNlbGYtPntkYmh9LT5wcmVwYXJlX2NhY2hlZCgKKyAgICAgICAgIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZV9yZXYgV0hFUkUgbmFtZT0/IEFORCBjb21taXRoYXNoPT8iLAorICAgICAgICB7fSwxKTsKKyAgICAkZGJfcXVlcnktPmV4ZWN1dGUoJGZpbGVuYW1lLCAkY29tbWl0LT57aGFzaH0pOworICAgIG15KCRtZXRhKT0kZGJfcXVlcnktPmZldGNocm93X2hhc2hyZWY7CisgICAgaWYoJG1ldGEpCisgICAgeworICAgICAgICAkbWV0YS0+e3JldmlzaW9ufSA9ICIxLiRtZXRhLT57cmV2aXNpb259IjsKKyAgICAgICAgcmV0dXJuICRtZXRhOworICAgIH0KKworICAgICMgZmFsbCBiYWNrIG9uIHNwZWNpYWwgcmV2aXNpb24gbnVtYmVyCisgICAgbXkoJHJldmlzaW9uKT0kY29tbWl0LT57aGFzaH07CisgICAgJHJldmlzaW9uPX5zLyguLikvJy4nIC4gKGhleCgkMSkrMTAwKS9lZzsKKyAgICAkcmV2aXNpb249IjIuMS4xLjIwMDAkcmV2aXNpb24iOworCisgICAgIyBtZXRhIGRhdGEgYWJvdXQgJGZpbGVuYW1lOgorICAgIG9wZW4obXkgJGZpbGVQaXBlLCAnLXwnLCAnZ2l0JywgJ2xzLXRyZWUnLCAnLXonLAorICAgICAgICAgICAgICAgICRjb21taXQtPntoYXNofSwgJy0tJywgJGZpbGVuYW1lKQorICAgICAgICAgICAgb3IgZGllKCJDYW5ub3QgY2FsbCBnaXQtbHMtdHJlZSA6ICQhIik7CisgICAgbG9jYWwgJC8gPSAiXDAiOworICAgIG15ICRsaW5lOworICAgICRsaW5lPTwkZmlsZVBpcGU+OworICAgIGlmKGRlZmluZWQoPCRmaWxlUGlwZT4pKQorICAgIHsKKyAgICAgICAgZGllICJFeHBlY3RlZCBvbmx5IGEgc2luZ2xlIGZpbGUgZm9yIGdpdC1scy10cmVlICRmaWxlbmFtZVxuIjsKKyAgICB9CisgICAgY2xvc2UgJGZpbGVQaXBlOworCisgICAgY2hvbXAgJGxpbmU7CisgICAgdW5sZXNzICggJGxpbmU9fm0vXihcZCspXHMrKFx3KylccysoW2EtekEtWjAtOV0rKVx0KC4qKSQvbyApCisgICAgeworICAgICAgICBkaWUoIkNvdWxkbid0IHByb2Nlc3MgZ2l0LWxzLXRyZWUgbGluZSA6ICRsaW5lXG4iKTsKKyAgICB9CisgICAgbXkgKCAkbW9kZSwgJGdpdF90eXBlLCAkZ2l0X2hhc2gsICRnaXRfZmlsZW5hbWUgKSA9ICggJDEsICQyLCAkMywgJDQgKTsKKworICAgICMgc2F2ZSByZXN1bHQ6CisgICAgbXkoJHJldFZhbCk9e307CisgICAgJHJldFZhbC0+e25hbWV9PSRmaWxlbmFtZTsKKyAgICAkcmV0VmFsLT57cmV2aXNpb259PSRyZXZpc2lvbjsKKyAgICAkcmV0VmFsLT57ZmlsZWhhc2h9PSRmaWxlSGFzaDsKKyAgICAkcmV0VmFsLT57Y29tbWl0aGFzaH09JHJldkNvbW1pdDsKKyAgICAkcmV0VmFsLT57YXV0aG9yfT0kY29tbWl0LT57YXV0aG9yfTsKKyAgICAkcmV0VmFsLT57bW9kaWZpZWR9PWNvbnZlcnRUb0N2c0RhdGUoJGNvbW1pdC0+e2RhdGV9KTsKKyAgICAkcmV0VmFsLT57bW9kZX09Y29udmVydFRvRGJNb2RlKCRtb2RlKTsKKworICAgIHJldHVybiAkcmV0VmFsOworfQorCis9aGVhZDIgbG9va3VwQ29tbWl0UmVmCisKK0NvbnZlcnQgdGFnL2JyYW5jaC9hYmJyZXZpYXRpb24vZXRjIGludG8gYSBjb21taXQgc2hhMSBoYXNoLiAgQ2FjaGVzCit0aGUgcmVzdWx0IHNvIGxvb2tpbmcgaXQgdXAgYWdhaW4gaXMgZmFzdC4KKworPWN1dAorCitzdWIgbG9va3VwQ29tbWl0UmVmCit7CisgICAgbXkgJHNlbGYgPSBzaGlmdDsKKyAgICBteSAkcmVmID0gc2hpZnQ7CisKKyAgICBteSAkY29tbWl0SGFzaCA9ICRzZWxmLT57Y29tbWl0UmVmQ2FjaGV9eyRyZWZ9OworICAgIGlmKGRlZmluZWQoJGNvbW1pdEhhc2gpKQorICAgIHsKKyAgICAgICAgcmV0dXJuICRjb21taXRIYXNoOworICAgIH0KKworICAgICRjb21taXRIYXNoPXNhZmVfcGlwZV9jYXB0dXJlKCJnaXQiLCJyZXYtcGFyc2UiLCItLXZlcmlmeSIsIi0tcXVpZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT51bmVzY2FwZVJlZk5hbWUoJHJlZikpOworICAgICRjb21taXRIYXNoPX5zL1xzKiQvLzsKKyAgICBpZighKCRjb21taXRIYXNoPX4vXlswLTlhLWZdezQwfSQvKSkKKyAgICB7CisgICAgICAgICRjb21taXRIYXNoPXVuZGVmOworICAgIH0KKworICAgIGlmKCBkZWZpbmVkKCRjb21taXRIYXNoKSApCisgICAgeworICAgICAgICBteSAkdHlwZT1zYWZlX3BpcGVfY2FwdHVyZSgiZ2l0IiwiY2F0LWZpbGUiLCItdCIsJGNvbW1pdEhhc2gpOworICAgICAgICBpZiggISAoJHR5cGU9fi9eY29tbWl0XHMqJC8gKSApCisgICAgICAgIHsKKyAgICAgICAgICAgICRjb21taXRIYXNoPXVuZGVmOworICAgICAgICB9CisgICAgfQorICAgIGlmKGRlZmluZWQoJGNvbW1pdEhhc2gpKQorICAgIHsKKyAgICAgICAgJHNlbGYtPntjb21taXRSZWZDYWNoZX17JHJlZn09JGNvbW1pdEhhc2g7CisgICAgfQorICAgIHJldHVybiAkY29tbWl0SGFzaDsKK30KKworPWhlYWQyIGNsZWFyQ29tbWl0UmVmQ2FjaGVzCisKK0NsZWFycyBjYWNoZWQgY29tbWl0IGNhY2hlIChzaGExJ3MgZm9yIHZhcmlvdXMgdGFncy9hYmJldmlhdGlvbnMvZXRjKSwKK2FuZCByZWxhdGVkIGNhY2hlcy4KKworPWN1dAorCitzdWIgY2xlYXJDb21taXRSZWZDYWNoZXMKK3sKKyAgICBteSAkc2VsZiA9IHNoaWZ0OworICAgICRzZWxmLT57Y29tbWl0UmVmQ2FjaGV9ID0ge307CisgICAgJHNlbGYtPntyZXZpc2lvbkRpck1hcENhY2hlfSA9IHVuZGVmOworICAgICRzZWxmLT57Z2V0aGVhZF9jYWNoZX0gPSB1bmRlZjsKIH0KIAogPWhlYWQyIGNvbW1pdG1lc3NhZ2UKQEAgLTM1ODMsMjUgKzQ5MTQsNiBAQAogICAgIHJldHVybiAkbWVzc2FnZTsKIH0KIAotPWhlYWQyIGdldGhpc3RvcnkKLQotVGhpcyBmdW5jdGlvbiB0YWtlcyBhIGZpbGVuYW1lICh3aXRoIHBhdGgpIGFyZ3VtZW50IGFuZCByZXR1cm5zIGFuIGFycmF5b2ZhcnJheXMKLWNvbnRhaW5pbmcgcmV2aXNpb24sZmlsZWhhc2gsY29tbWl0aGFzaCBvcmRlcmVkIGJ5IHJldmlzaW9uIGRlc2NlbmRpbmcKLQotPWN1dAotc3ViIGdldGhpc3RvcnkKLXsKLSAgICBteSAkc2VsZiA9IHNoaWZ0OwotICAgIG15ICRmaWxlbmFtZSA9IHNoaWZ0OwotICAgIG15ICR0YWJsZW5hbWUgPSAkc2VsZi0+dGFibGVuYW1lKCJyZXZpc2lvbiIpOwotCi0gICAgbXkgJGRiX3F1ZXJ5OwotICAgICRkYl9xdWVyeSA9ICRzZWxmLT57ZGJofS0+cHJlcGFyZV9jYWNoZWQoIlNFTEVDVCByZXZpc2lvbiwgZmlsZWhhc2gsIGNvbW1pdGhhc2ggRlJPTSAkdGFibGVuYW1lIFdIRVJFIG5hbWU9PyBPUkRFUiBCWSByZXZpc2lvbiBERVNDIix7fSwxKTsKLSAgICAkZGJfcXVlcnktPmV4ZWN1dGUoJGZpbGVuYW1lKTsKLQotICAgIHJldHVybiAkZGJfcXVlcnktPmZldGNoYWxsX2FycmF5cmVmOwotfQotCiA9aGVhZDIgZ2V0aGlzdG9yeWRlbnNlCiAKIFRoaXMgZnVuY3Rpb24gdGFrZXMgYSBmaWxlbmFtZSAod2l0aCBwYXRoKSBhcmd1bWVudCBhbmQgcmV0dXJucyBhbiBhcnJheW9mYXJyYXlzCkBAIC0zNjExLDYgKzQ5MjMsOCBAQAogVGhlICdkZW5zZScgcGFydCBpcyBhIHJlZmVyZW5jZSB0byBhICctLWRlbnNlJyBvcHRpb24gYXZhaWxhYmxlIGZvciBnaXQtcmV2LWxpc3QKIGFuZCBvdGhlciBnaXQgdG9vbHMgdGhhdCBkZXBlbmQgb24gaXQuCiAKK1NlZSBhbHNvIGdldGxvZygpLgorCiA9Y3V0CiBzdWIgZ2V0aGlzdG9yeWRlbnNlCiB7CkBAIC0zNjIyLDcgKzQ5MzYsMTA2IEBACiAgICAgJGRiX3F1ZXJ5ID0gJHNlbGYtPntkYmh9LT5wcmVwYXJlX2NhY2hlZCgiU0VMRUNUIHJldmlzaW9uLCBmaWxlaGFzaCwgY29tbWl0aGFzaCBGUk9NICR0YWJsZW5hbWUgV0hFUkUgbmFtZT0/IEFORCBmaWxlaGFzaCE9J2RlbGV0ZWQnIE9SREVSIEJZIHJldmlzaW9uIERFU0MiLHt9LDEpOwogICAgICRkYl9xdWVyeS0+ZXhlY3V0ZSgkZmlsZW5hbWUpOwogCi0gICAgcmV0dXJuICRkYl9xdWVyeS0+ZmV0Y2hhbGxfYXJyYXlyZWY7CisgICAgbXkgJHJlc3VsdCA9ICRkYl9xdWVyeS0+ZmV0Y2hhbGxfYXJyYXlyZWY7CisKKyAgICBteSAkaTsKKyAgICBmb3IoJGk9MCA7ICRpPHNjYWxhcihAJHJlc3VsdCkgOyAkaSsrKQorICAgIHsKKyAgICAgICAgJHJlc3VsdC0+WyRpXVswXT0iMS4iIC4gJHJlc3VsdC0+WyRpXVswXTsKKyAgICB9CisKKyAgICByZXR1cm4gJHJlc3VsdDsKK30KKworPWhlYWQyIGVzY2FwZVJlZk5hbWUKKworQXBwbHkgYW4gZXNjYXBlIG1lY2hhbmlzbSB0byBjb21wZW5zYXRlIGZvciBjaGFyYWN0ZXJzIHRoYXQKK2dpdCByZWYgbmFtZXMgY2FuIGhhdmUgdGhhdCBDVlMgdGFncyBjYW4gbm90LgorCis9Y3V0CitzdWIgZXNjYXBlUmVmTmFtZQoreworICAgIG15KCRzZWxmLCRyZWZOYW1lKT1AXzsKKworICAgICMgQ1ZTIG9mZmljaWFsbHkgb25seSBhbGxvd3MgWy1fQS1aYS16MC05XSBpbiB0YWcgbmFtZXMgKG9yIGluCisgICAgIyBtYW55IGNvbnRleHRzIGl0IGNhbiBhbHNvIGJlIGEgQ1ZTIHJldmlzaW9uIG51bWJlcikuCisgICAgIworICAgICMgR2l0IHRhZ3MgY29tbW9ubHkgdXNlICcvJyBhbmQgJy4nIGFzIHdlbGwsIGJ1dCBhbHNvIGhhbmRsZQorICAgICMgYW55dGhpbmcgZWxzZSBqdXN0IGluIGNhc2U6CisgICAgIworICAgICMgICA9ICJfLXMtIiAgRm9yICcvJy4KKyAgICAjICAgPSAiXy1wLSIgIEZvciAnLicuCisgICAgIyAgID0gIl8tdS0iICBGb3IgdW5kZXJzY29yZSwgaW4gY2FzZSBzb21lb25lIHdhbnRzIGEgbGl0ZXJhbCAiXy0iIGluCisgICAgIyAgICAgYSB0YWcgbmFtZS4KKyAgICAjICAgPSAiXy14eC0iIFdoZXJlICJ4eCIgaXMgdGhlIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZQorICAgICMgICAgIGRlc2lyZWQgQVNDSUkgY2hhcmFjdGVyIGJ5dGUuIChmb3IgYW55dGhpbmcgZWxzZSkKKworICAgIGlmKCEgJHJlZk5hbWU9fi9eWzEtOV1bMC05XSooXC5bMS05XVswLTldKikqJC8pCisgICAgeworICAgICAgICAkcmVmTmFtZT1+cy9fLS9fLXUtLS9nOworICAgICAgICAkcmVmTmFtZT1+cy9cLi9fLXAtL2c7CisgICAgICAgICRyZWZOYW1lPX5zJS8lXy1zLSVnOworICAgICAgICAkcmVmTmFtZT1+cy9bXi1fYS16QS1aMC05XS9zcHJpbnRmKCJfLSUwMngtIiwkMSkvZWc7CisgICAgfQorfQorCis9aGVhZDIgdW5lc2NhcGVSZWZOYW1lCisKK1VuZG8gYW4gZXNjYXBlIG1lY2hhbmlzbSB0byBjb21wZW5zYXRlIGZvciBjaGFyYWN0ZXJzIHRoYXQKK2dpdCByZWYgbmFtZXMgY2FuIGhhdmUgdGhhdCBDVlMgdGFncyBjYW4gbm90LgorCis9Y3V0CitzdWIgdW5lc2NhcGVSZWZOYW1lCit7CisgICAgbXkoJHNlbGYsJHJlZk5hbWUpPUBfOworCisgICAgIyBzZWUgZXNjYXBlUmVmTmFtZSgpIGZvciBkZXNjcmlwdGlvbiBvZiBlc2NhcGUgbWVjaGFuaXNtLgorCisgICAgJHJlZk5hbWU9fnMvXy0oW3NwdV18WzAtOWEtZl1bMC05YS1mXSktL3VuZXNjYXBlUmVmTmFtZUNoYXIoJDEpL2VnOworCisgICAgIyBhbGxvd2VkIHRhZyBuYW1lcworICAgICMgVE9ETzogUGVyaGFwcyB1c2UgZ2l0IGNoZWNrLXJlZi1mb3JtYXQsIHdpdGggYW4gaW4tcHJvY2VzcyBjYWNoZSBvZgorICAgICMgIHZhbGlkYXRlZCBuYW1lcz8KKyAgICBpZiggISggJHJlZk5hbWU9fm0lXlteLV1bLWEtekEtWjAtOV8vLl0qJCUgKSB8fAorICAgICAgICAoICRyZWZOYW1lPX5tJVsvLl0kJSApIHx8CisgICAgICAgICggJHJlZk5hbWU9fi9cLmxvY2skLyApIHx8CisgICAgICAgICggJHJlZk5hbWU9fm0lXC5cLnwvXC58W1tcXDo/Kn5dfFxAXHslICkgKSAgIyBtYXRjaGluZyB9CisgICAgeworICAgICAgICAjIEVycm9yOgorICAgICAgICAkbG9nLT53YXJuKCJpbGxlZ2FsIHJlZk5hbWU6ICRyZWZOYW1lIik7CisgICAgICAgICRyZWZOYW1lPXVuZGVmOworICAgIH0KKyAgICByZXR1cm4gJHJlZk5hbWU7Cit9CisKK3N1YiB1bmVzY2FwZVJlZk5hbWVDaGFyCit7CisgICAgbXkoJGNoYXIpPUBfOworCisgICAgaWYoJGNoYXIgZXEgInMiKQorICAgIHsKKyAgICAgICAgJGNoYXI9Ii8iOworICAgIH0KKyAgICBlbHNpZigkY2hhciBlcSAicCIpCisgICAgeworICAgICAgICAkY2hhcj0iLiI7CisgICAgfQorICAgIGVsc2lmKCRjaGFyIGVxICJ1IikKKyAgICB7CisgICAgICAgICRjaGFyPSJfIjsKKyAgICB9CisgICAgZWxzaWYoJGNoYXI9fi9eWzAtOWEtZl1bMC05YS1mXSQvKQorICAgIHsKKyAgICAgICAgJGNoYXI9Y2hyKGhleCgkY2hhcikpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAjIEVycm9yIGNhc2U6IE1heWJlIGl0IGhhcyBjb21lIHN0cmFpZ2h0IGZyb20gdXNlciwgYW5kCisgICAgICAgICMgd2Fzbid0IHN1cHBvc2VkIHRvIGJlIGVzY2FwZWQ/ICBSZXN0b3JlIGl0IHRoZSB3YXkgd2UgZ290IGl0OgorICAgICAgICAkY2hhcj0iXy0kY2hhci0iOworICAgIH0KKworICAgIHJldHVybiAkY2hhcjsKIH0KIAogPWhlYWQyIGluX2FycmF5KCkKZGlmZiAtLWdpdCBhL2dpdC1kaWZmdG9vbC0taGVscGVyLnNoIGIvZ2l0LWRpZmZ0b29sLS1oZWxwZXIuc2gKaW5kZXggM2QwZmUwYy4uYjAwZWQ5NSAxMDA3NTUKLS0tIGEvZ2l0LWRpZmZ0b29sLS1oZWxwZXIuc2gKKysrIGIvZ2l0LWRpZmZ0b29sLS1oZWxwZXIuc2gKQEAgLTQwLDcgKzQwLDcgQEAKIAkjIHRoZSB1c2VyIHdpdGggdGhlIHJlYWwgJE1FUkdFRCBuYW1lIGJlZm9yZSBsYXVuY2hpbmcgJG1lcmdlX3Rvb2wuCiAJaWYgc2hvdWxkX3Byb21wdAogCXRoZW4KLQkJcHJpbnRmICJcblZpZXdpbmc6ICckTUVSR0VEJ1xuIgorCQlwcmludGYgIlxuVmlld2luZzogJyVzJ1xuIiAiJE1FUkdFRCIKIAkJaWYgdXNlX2V4dF9jbWQKIAkJdGhlbgogCQkJcHJpbnRmICJMYXVuY2ggJyVzJyBbWS9uXTogIiBcCmRpZmYgLS1naXQgYS9naXQtZGlmZnRvb2wucGVybCBiL2dpdC1kaWZmdG9vbC5wZXJsCmluZGV4IGFlMWUwNTIuLmU1N2QzZDEyIDEwMDc1NQotLS0gYS9naXQtZGlmZnRvb2wucGVybAorKysgYi9naXQtZGlmZnRvb2wucGVybApAQCAtMTMsMjEgKzEzLDE2IEBACiB1c2UgNS4wMDg7CiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwordXNlIEVycm9yIHF3KDp0cnkpOwogdXNlIEZpbGU6OkJhc2VuYW1lIHF3KGRpcm5hbWUpOwogdXNlIEZpbGU6OkNvcHk7CiB1c2UgRmlsZTo6RmluZDsKIHVzZSBGaWxlOjpzdGF0OwotdXNlIEZpbGU6OlBhdGggcXcobWtwYXRoKTsKK3VzZSBGaWxlOjpQYXRoIHF3KG1rcGF0aCBybXRyZWUpOwogdXNlIEZpbGU6OlRlbXAgcXcodGVtcGRpcik7CiB1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgcGFzc190aHJvdWdoKTsKIHVzZSBHaXQ7CiAKLW15IEB0b29sczsKLW15IEB3b3JraW5nX3RyZWU7Ci1teSAkcmM7Ci1teSAkcmVwbyA9IEdpdC0+cmVwb3NpdG9yeSgpOwotbXkgJHJlcG9fcGF0aCA9ICRyZXBvLT5yZXBvX3BhdGgoKTsKLQogc3ViIHVzYWdlCiB7CiAJbXkgJGV4aXRjb2RlID0gc2hpZnQ7CkBAIC00NCw2ICszOSw4IEBACiAKIHN1YiBmaW5kX3dvcmt0cmVlCiB7CisJbXkgKCRyZXBvKSA9IEBfOworCiAJIyBHaXQtPnJlcG9zaXRvcnktPndjX3BhdGgoKSBkb2VzIG5vdCBob25vciBjaGFuZ2VzIHRvIHRoZSB3b3JraW5nCiAJIyB0cmVlIGxvY2F0aW9uIG1hZGUgYnkgJEVOVntHSVRfV09SS19UUkVFfSBvciB0aGUgJ2NvcmUud29ya3RyZWUnCiAJIyBjb25maWcgdmFyaWFibGUuCkBAIC02Miw2OSArNTksOTMgQEAKIAlyZXR1cm4gJHdvcmt0cmVlOwogfQogCi1teSAkd29ya2RpciA9IGZpbmRfd29ya3RyZWUoKTsKLQotc3ViIGZpbHRlcl90b29sX3NjcmlwdHMKLXsKLQlpZiAoLWQgJF8pIHsKLQkJaWYgKCRfIG5lICIuIikgewotCQkJIyBJZ25vcmUgZmlsZXMgaW4gc3ViZGlyZWN0b3JpZXMKLQkJCSRGaWxlOjpGaW5kOjpwcnVuZSA9IDE7Ci0JCX0KLQl9IGVsc2UgewotCQlpZiAoKC1mICRfKSAmJiAoJF8gbmUgImRlZmF1bHRzIikpIHsKLQkJCXB1c2goQHRvb2xzLCAkXyk7Ci0JCX0KLQl9Ci19Ci0KIHN1YiBwcmludF90b29sX2hlbHAKIHsKLQlteSAoJGNtZCwgQGZvdW5kLCBAbm90Zm91bmQpOwotCW15ICRnaXRwYXRoID0gR2l0OjpleGVjX3BhdGgoKTsKKwlteSAkY21kID0gJ1RPT0xfTU9ERT1kaWZmJzsKKwkkY21kIC49ICcgJiYgLiAiJChnaXQgLS1leGVjLXBhdGgpL2dpdC1tZXJnZXRvb2wtLWxpYiInOworCSRjbWQgLj0gJyAmJiBzaG93X3Rvb2xfaGVscCc7CiAKLQlmaW5kKFwmZmlsdGVyX3Rvb2xfc2NyaXB0cywgIiRnaXRwYXRoL21lcmdldG9vbHMiKTsKKwkjIFNlZSB0aGUgY29tbWVudCBhdCB0aGUgYm90dG9tIG9mIGZpbGVfZGlmZigpIGZvciB0aGUgcmVhc29uIGJlaGluZAorCSMgdXNpbmcgc3lzdGVtKCkgZm9sbG93ZWQgYnkgZXhpdCgpIGluc3RlYWQgb2YgZXhlYygpLgorCW15ICRyYyA9IHN5c3RlbSgnc2gnLCAnLWMnLCAkY21kKTsKKwlleGl0KCRyYyB8ICgkcmMgPj4gOCkpOworfQogCi0JZm9yZWFjaCBteSAkdG9vbCAoQHRvb2xzKSB7Ci0JCSRjbWQgID0gIlRPT0xfTU9ERT1kaWZmIjsKLQkJJGNtZCAuPSAnICYmIC4gIiQoZ2l0IC0tZXhlYy1wYXRoKS9naXQtbWVyZ2V0b29sLS1saWIiJzsKLQkJJGNtZCAuPSAiICYmIGdldF9tZXJnZV90b29sX3BhdGggJHRvb2wgPi9kZXYvbnVsbCAyPiYxIjsKLQkJJGNtZCAuPSAiICYmIGNhbl9kaWZmID4vZGV2L251bGwgMj4mMSI7Ci0JCWlmIChzeXN0ZW0oJ3NoJywgJy1jJywgJGNtZCkgPT0gMCkgewotCQkJcHVzaChAZm91bmQsICR0b29sKTsKLQkJfSBlbHNlIHsKLQkJCXB1c2goQG5vdGZvdW5kLCAkdG9vbCk7Ci0JCX0KK3N1YiBleGl0X2NsZWFudXAKK3sKKwlteSAoJHRtcGRpciwgJHN0YXR1cykgPSBAXzsKKwlteSAkZXJybm8gPSAkITsKKwlybXRyZWUoJHRtcGRpcik7CisJaWYgKCRzdGF0dXMgYW5kICRlcnJubykgeworCQlteSAoJHBhY2thZ2UsICRmaWxlLCAkbGluZSkgPSBjYWxsZXIoKTsKKwkJd2FybiAiJGZpbGUgbGluZSAkbGluZTogJGVycm5vXG4iOworCX0KKwlleGl0KCRzdGF0dXMgfCAoJHN0YXR1cyA+PiA4KSk7Cit9CisKK3N1YiB1c2Vfd3RfZmlsZQoreworCW15ICgkcmVwbywgJHdvcmtkaXIsICRmaWxlLCAkc2hhMSkgPSBAXzsKKwlteSAkbnVsbF9zaGExID0gJzAnIHggNDA7CisKKwlpZiAoISAtZSAiJHdvcmtkaXIvJGZpbGUiKSB7CisJCSMgSWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdCBpbiB0aGUgd29ya2luZyB0cmVlLCB3ZSBjYW5ub3QKKwkJIyB1c2UgaXQuCisJCXJldHVybiAoMCwgJG51bGxfc2hhMSk7CiAJfQogCi0JcHJpbnQgIidnaXQgZGlmZnRvb2wgLS10b29sPTx0b29sPicgbWF5IGJlIHNldCB0byBvbmUgb2YgdGhlIGZvbGxvd2luZzpcbiI7Ci0JcHJpbnQgIlx0JF9cbiIgZm9yIChzb3J0KEBmb3VuZCkpOworCW15ICR3dF9zaGExID0gJHJlcG8tPmNvbW1hbmRfb25lbGluZSgnaGFzaC1vYmplY3QnLCAiJHdvcmtkaXIvJGZpbGUiKTsKKwlteSAkdXNlID0gKCRzaGExIGVxICRudWxsX3NoYTEpIHx8ICgkc2hhMSBlcSAkd3Rfc2hhMSk7CisJcmV0dXJuICgkdXNlLCAkd3Rfc2hhMSk7Cit9CiAKLQlwcmludCAiXG5UaGUgZm9sbG93aW5nIHRvb2xzIGFyZSB2YWxpZCwgYnV0IG5vdCBjdXJyZW50bHkgYXZhaWxhYmxlOlxuIjsKLQlwcmludCAiXHQkX1xuIiBmb3IgKHNvcnQoQG5vdGZvdW5kKSk7CitzdWIgY2hhbmdlZF9maWxlcworeworCW15ICgkcmVwb19wYXRoLCAkaW5kZXgsICR3b3JrdHJlZSkgPSBAXzsKKwkkRU5We0dJVF9JTkRFWF9GSUxFfSA9ICRpbmRleDsKKwkkRU5We0dJVF9XT1JLX1RSRUV9ID0gJHdvcmt0cmVlOworCW15ICRtdXN0X3Vuc2V0X2dpdF9kaXIgPSAwOworCWlmIChub3QgZGVmaW5lZCgkRU5We0dJVF9ESVJ9KSkgeworCQkkbXVzdF91bnNldF9naXRfZGlyID0gMTsKKwkJJEVOVntHSVRfRElSfSA9ICRyZXBvX3BhdGg7CisJfQogCi0JcHJpbnQgIlxuTk9URTogU29tZSBvZiB0aGUgdG9vbHMgbGlzdGVkIGFib3ZlIG9ubHkgd29yayBpbiBhIHdpbmRvd2VkXG4iOwotCXByaW50ICJlbnZpcm9ubWVudC4gSWYgcnVuIGluIGEgdGVybWluYWwtb25seSBzZXNzaW9uLCB0aGV5IHdpbGwgZmFpbC5cbiI7CisJbXkgQHJlZnJlc2hhcmdzID0gcXcvdXBkYXRlLWluZGV4IC0tcmVhbGx5LXJlZnJlc2ggLXEgLS11bm1lcmdlZC87CisJbXkgQGdpdGFyZ3MgPSBxdy9kaWZmLWZpbGVzIC0tbmFtZS1vbmx5IC16LzsKKwl0cnkgeworCQlHaXQ6OmNvbW1hbmRfb25lbGluZShAcmVmcmVzaGFyZ3MpOworCX0gY2F0Y2ggR2l0OjpFcnJvcjo6Q29tbWFuZCB3aXRoIHt9OwogCi0JZXhpdCgwKTsKKwlteSAkbGluZSA9IEdpdDo6Y29tbWFuZF9vbmVsaW5lKEBnaXRhcmdzKTsKKwlteSBAZmlsZXM7CisJaWYgKGRlZmluZWQgJGxpbmUpIHsKKwkJQGZpbGVzID0gc3BsaXQoJ1wwJywgJGxpbmUpOworCX0gZWxzZSB7CisJCUBmaWxlcyA9ICgpOworCX0KKworCWRlbGV0ZSgkRU5We0dJVF9JTkRFWF9GSUxFfSk7CisJZGVsZXRlKCRFTlZ7R0lUX1dPUktfVFJFRX0pOworCWRlbGV0ZSgkRU5We0dJVF9ESVJ9KSBpZiAoJG11c3RfdW5zZXRfZ2l0X2Rpcik7CisKKwlyZXR1cm4gbWFwIHsgJF8gPT4gMSB9IEBmaWxlczsKIH0KIAogc3ViIHNldHVwX2Rpcl9kaWZmCiB7CisJbXkgKCRyZXBvLCAkd29ya2RpciwgJHN5bWxpbmtzKSA9IEBfOworCiAJIyBSdW4gdGhlIGRpZmY7IGV4aXQgaW1tZWRpYXRlbHkgaWYgbm8gZGlmZiBmb3VuZAogCSMgJ1JlcG9zaXRvcnknIGFuZCAnV29ya2luZ0NvcHknIG11c3QgYmUgZXhwbGljaXRseSBzZXQgdG8gaW5zdXJlIHRoYXQKIAkjIGlmICRHSVRfRElSIGFuZCAkR0lUX1dPUktfVFJFRSBhcmUgc2V0IGluIEVOViwgdGhleSBhcmUgYWN0dWFsbHkgdXNlZAogCSMgYnkgR2l0LT5yZXBvc2l0b3J5LT5jb21tYW5kKi4KLQlteSAkZGlmZnJlcG8gPSBHaXQtPnJlcG9zaXRvcnkoUmVwb3NpdG9yeSA9PiAkcmVwb19wYXRoLCBXb3JraW5nQ29weSA9PiAkd29ya2Rpcik7Ci0JbXkgJGRpZmZydG4gPSAkZGlmZnJlcG8tPmNvbW1hbmRfb25lbGluZSgnZGlmZicsICctLXJhdycsICctLW5vLWFiYnJldicsICcteicsIEBBUkdWKTsKLQlleGl0KDApIGlmIChsZW5ndGgoJGRpZmZydG4pID09IDApOworCW15ICRyZXBvX3BhdGggPSAkcmVwby0+cmVwb19wYXRoKCk7CisJbXkgJXJlcG9fYXJncyA9IChSZXBvc2l0b3J5ID0+ICRyZXBvX3BhdGgsIFdvcmtpbmdDb3B5ID0+ICR3b3JrZGlyKTsKKwlteSAkZGlmZnJlcG8gPSBHaXQtPnJlcG9zaXRvcnkoJXJlcG9fYXJncyk7CiAKLQkjIFNldHVwIHRlbXAgZGlyZWN0b3JpZXMKLQlteSAkdG1wZGlyID0gdGVtcGRpcignZ2l0LWRpZmZhbGwuWFhYWFgnLCBDTEVBTlVQID0+IDEsIFRNUERJUiA9PiAxKTsKLQlteSAkbGRpciA9ICIkdG1wZGlyL2xlZnQiOwotCW15ICRyZGlyID0gIiR0bXBkaXIvcmlnaHQiOwotCW1rcGF0aCgkbGRpcikgb3IgZGllICQhOwotCW1rcGF0aCgkcmRpcikgb3IgZGllICQhOworCW15IEBnaXRhcmdzID0gKCdkaWZmJywgJy0tcmF3JywgJy0tbm8tYWJicmV2JywgJy16JywgQEFSR1YpOworCW15ICRkaWZmcnRuID0gJGRpZmZyZXBvLT5jb21tYW5kX29uZWxpbmUoQGdpdGFyZ3MpOworCWV4aXQoMCkgdW5sZXNzIGRlZmluZWQoJGRpZmZydG4pOwogCiAJIyBCdWlsZCBpbmRleCBpbmZvIGZvciBsZWZ0IGFuZCByaWdodCBzaWRlcyBvZiB0aGUgZGlmZgogCW15ICRzdWJtb2R1bGVfbW9kZSA9ICcxNjAwMDAnOwpAQCAtMTMzLDE4ICsxNTQsMjQgQEAKIAlteSAkbnVsbF9zaGExID0gJzAnIHggNDA7CiAJbXkgJGxpbmRleCA9ICcnOwogCW15ICRyaW5kZXggPSAnJzsKKwlteSAkd3RpbmRleCA9ICcnOwogCW15ICVzdWJtb2R1bGU7CiAJbXkgJXN5bWxpbms7CisJbXkgQHdvcmtpbmdfdHJlZSA9ICgpOwogCW15IEByYXdkaWZmID0gc3BsaXQoJ1wwJywgJGRpZmZydG4pOwogCiAJbXkgJGkgPSAwOwogCXdoaWxlICgkaSA8ICQjcmF3ZGlmZikgewogCQlpZiAoJHJhd2RpZmZbJGldID1+IC9eOjovKSB7Ci0JCQlwcmludCAiQ29tYmluZWQgZGlmZiBmb3JtYXRzICgnLWMnIGFuZCAnLS1jYycpIGFyZSBub3Qgc3VwcG9ydGVkIGluIGRpcmVjdG9yeSBkaWZmIG1vZGUuXG4iOworCQkJd2FybiA8PCAnRU9GJzsKK0NvbWJpbmVkIGRpZmYgZm9ybWF0cyAoJy1jJyBhbmQgJy0tY2MnKSBhcmUgbm90IHN1cHBvcnRlZCBpbgorZGlyZWN0b3J5IGRpZmYgbW9kZSAoJy1kJyBhbmQgJy0tZGlyLWRpZmYnKS4KK0VPRgogCQkJZXhpdCgxKTsKIAkJfQogCi0JCW15ICgkbG1vZGUsICRybW9kZSwgJGxzaGExLCAkcnNoYTEsICRzdGF0dXMpID0gc3BsaXQoJyAnLCBzdWJzdHIoJHJhd2RpZmZbJGldLCAxKSk7CisJCW15ICgkbG1vZGUsICRybW9kZSwgJGxzaGExLCAkcnNoYTEsICRzdGF0dXMpID0KKwkJCXNwbGl0KCcgJywgc3Vic3RyKCRyYXdkaWZmWyRpXSwgMSkpOwogCQlteSAkc3JjX3BhdGggPSAkcmF3ZGlmZlskaSArIDFdOwogCQlteSAkZHN0X3BhdGg7CiAKQEAgLTE1Niw3ICsxODMsNyBAQAogCQkJJGkgKz0gMjsKIAkJfQogCi0JCWlmICgoJGxtb2RlIGVxICRzdWJtb2R1bGVfbW9kZSkgb3IgKCRybW9kZSBlcSAkc3VibW9kdWxlX21vZGUpKSB7CisJCWlmICgkbG1vZGUgZXEgJHN1Ym1vZHVsZV9tb2RlIG9yICRybW9kZSBlcSAkc3VibW9kdWxlX21vZGUpIHsKIAkJCSRzdWJtb2R1bGV7JHNyY19wYXRofXtsZWZ0fSA9ICRsc2hhMTsKIAkJCWlmICgkbHNoYTEgbmUgJHJzaGExKSB7CiAJCQkJJHN1Ym1vZHVsZXskZHN0X3BhdGh9e3JpZ2h0fSA9ICRyc2hhMTsKQEAgLTE2NywyNiArMTk0LDM4IEBACiAJCX0KIAogCQlpZiAoJGxtb2RlIGVxICRzeW1saW5rX21vZGUpIHsKLQkJCSRzeW1saW5reyRzcmNfcGF0aH17bGVmdH0gPSAkZGlmZnJlcG8tPmNvbW1hbmRfb25lbGluZSgnc2hvdycsICIkbHNoYTEiKTsKKwkJCSRzeW1saW5reyRzcmNfcGF0aH17bGVmdH0gPQorCQkJCSRkaWZmcmVwby0+Y29tbWFuZF9vbmVsaW5lKCdzaG93JywgIiRsc2hhMSIpOwogCQl9CiAKIAkJaWYgKCRybW9kZSBlcSAkc3ltbGlua19tb2RlKSB7Ci0JCQkkc3ltbGlua3skZHN0X3BhdGh9e3JpZ2h0fSA9ICRkaWZmcmVwby0+Y29tbWFuZF9vbmVsaW5lKCdzaG93JywgIiRyc2hhMSIpOworCQkJJHN5bWxpbmt7JGRzdF9wYXRofXtyaWdodH0gPQorCQkJCSRkaWZmcmVwby0+Y29tbWFuZF9vbmVsaW5lKCdzaG93JywgIiRyc2hhMSIpOwogCQl9CiAKLQkJaWYgKCgkbG1vZGUgbmUgJG51bGxfbW9kZSkgYW5kICgkc3RhdHVzICF+IC9eQy8pKSB7CisJCWlmICgkbG1vZGUgbmUgJG51bGxfbW9kZSBhbmQgJHN0YXR1cyAhfiAvXkMvKSB7CiAJCQkkbGluZGV4IC49ICIkbG1vZGUgJGxzaGExXHQkc3JjX3BhdGhcMCI7CiAJCX0KIAogCQlpZiAoJHJtb2RlIG5lICRudWxsX21vZGUpIHsKLQkJCWlmICgkcnNoYTEgbmUgJG51bGxfc2hhMSkgewotCQkJCSRyaW5kZXggLj0gIiRybW9kZSAkcnNoYTFcdCRkc3RfcGF0aFwwIjsKKwkJCW15ICgkdXNlLCAkd3Rfc2hhMSkgPSB1c2Vfd3RfZmlsZSgkcmVwbywgJHdvcmtkaXIsCisJCQkJCQkJICAkZHN0X3BhdGgsICRyc2hhMSk7CisJCQlpZiAoJHVzZSkgeworCQkJCXB1c2ggQHdvcmtpbmdfdHJlZSwgJGRzdF9wYXRoOworCQkJCSR3dGluZGV4IC49ICIkcm1vZGUgJHd0X3NoYTFcdCRkc3RfcGF0aFwwIjsKIAkJCX0gZWxzZSB7Ci0JCQkJcHVzaChAd29ya2luZ190cmVlLCAkZHN0X3BhdGgpOworCQkJCSRyaW5kZXggLj0gIiRybW9kZSAkcnNoYTFcdCRkc3RfcGF0aFwwIjsKIAkJCX0KIAkJfQogCX0KIAorCSMgU2V0dXAgdGVtcCBkaXJlY3RvcmllcworCW15ICR0bXBkaXIgPSB0ZW1wZGlyKCdnaXQtZGlmZnRvb2wuWFhYWFgnLCBDTEVBTlVQID0+IDAsIFRNUERJUiA9PiAxKTsKKwlteSAkbGRpciA9ICIkdG1wZGlyL2xlZnQiOworCW15ICRyZGlyID0gIiR0bXBkaXIvcmlnaHQiOworCW1rcGF0aCgkbGRpcikgb3IgZXhpdF9jbGVhbnVwKCR0bXBkaXIsIDEpOworCW1rcGF0aCgkcmRpcikgb3IgZXhpdF9jbGVhbnVwKCR0bXBkaXIsIDEpOworCiAJIyBJZiAkR0lUX0RJUiBpcyBub3Qgc2V0IHByaW9yIHRvIGNhbGxpbmcgJ2dpdCB1cGRhdGUtaW5kZXgnIGFuZAogCSMgJ2dpdCBjaGVja291dC1pbmRleCcsIHRoZW4gdGhvc2UgY29tbWFuZHMgd2lsbCBmYWlsIGlmIGRpZmZ0b29sCiAJIyBpcyBjYWxsZWQgZnJvbSBhIGRpcmVjdG9yeSBvdGhlciB0aGFuIHRoZSByZXBvIHJvb3QuCkBAIC0xOTksMTggKzIzOCwyOCBAQAogCSMgUG9wdWxhdGUgdGhlIGxlZnQgYW5kIHJpZ2h0IGRpcmVjdG9yaWVzIGJhc2VkIG9uIGVhY2ggaW5kZXggZmlsZQogCW15ICgkaW5waXBlLCAkY3R4KTsKIAkkRU5We0dJVF9JTkRFWF9GSUxFfSA9ICIkdG1wZGlyL2xpbmRleCI7Ci0JKCRpbnBpcGUsICRjdHgpID0gJHJlcG8tPmNvbW1hbmRfaW5wdXRfcGlwZShxdy91cGRhdGUtaW5kZXggLXogLS1pbmRleC1pbmZvLyk7CisJKCRpbnBpcGUsICRjdHgpID0KKwkJJHJlcG8tPmNvbW1hbmRfaW5wdXRfcGlwZShxdyh1cGRhdGUtaW5kZXggLXogLS1pbmRleC1pbmZvKSk7CiAJcHJpbnQoJGlucGlwZSAkbGluZGV4KTsKIAkkcmVwby0+Y29tbWFuZF9jbG9zZV9waXBlKCRpbnBpcGUsICRjdHgpOwotCSRyYyA9IHN5c3RlbSgnZ2l0JywgJ2NoZWNrb3V0LWluZGV4JywgJy0tYWxsJywgIi0tcHJlZml4PSRsZGlyLyIpOwotCWV4aXQoJHJjIHwgKCRyYyA+PiA4KSkgaWYgKCRyYyAhPSAwKTsKKworCW15ICRyYyA9IHN5c3RlbSgnZ2l0JywgJ2NoZWNrb3V0LWluZGV4JywgJy0tYWxsJywgIi0tcHJlZml4PSRsZGlyLyIpOworCWV4aXRfY2xlYW51cCgkdG1wZGlyLCAkcmMpIGlmICRyYyAhPSAwOwogCiAJJEVOVntHSVRfSU5ERVhfRklMRX0gPSAiJHRtcGRpci9yaW5kZXgiOwotCSgkaW5waXBlLCAkY3R4KSA9ICRyZXBvLT5jb21tYW5kX2lucHV0X3BpcGUocXcvdXBkYXRlLWluZGV4IC16IC0taW5kZXgtaW5mby8pOworCSgkaW5waXBlLCAkY3R4KSA9CisJCSRyZXBvLT5jb21tYW5kX2lucHV0X3BpcGUocXcodXBkYXRlLWluZGV4IC16IC0taW5kZXgtaW5mbykpOwogCXByaW50KCRpbnBpcGUgJHJpbmRleCk7CiAJJHJlcG8tPmNvbW1hbmRfY2xvc2VfcGlwZSgkaW5waXBlLCAkY3R4KTsKKwogCSRyYyA9IHN5c3RlbSgnZ2l0JywgJ2NoZWNrb3V0LWluZGV4JywgJy0tYWxsJywgIi0tcHJlZml4PSRyZGlyLyIpOwotCWV4aXQoJHJjIHwgKCRyYyA+PiA4KSkgaWYgKCRyYyAhPSAwKTsKKwlleGl0X2NsZWFudXAoJHRtcGRpciwgJHJjKSBpZiAkcmMgIT0gMDsKKworCSRFTlZ7R0lUX0lOREVYX0ZJTEV9ID0gIiR0bXBkaXIvd3RpbmRleCI7CisJKCRpbnBpcGUsICRjdHgpID0KKwkJJHJlcG8tPmNvbW1hbmRfaW5wdXRfcGlwZShxdyh1cGRhdGUtaW5kZXggLS1pbmZvLW9ubHkgLXogLS1pbmRleC1pbmZvKSk7CisJcHJpbnQoJGlucGlwZSAkd3RpbmRleCk7CisJJHJlcG8tPmNvbW1hbmRfY2xvc2VfcGlwZSgkaW5waXBlLCAkY3R4KTsKIAogCSMgSWYgJEdJVF9ESVIgd2FzIGV4cGxpY2l0bHkgc2V0IGp1c3QgZm9yIHRoZSB1cGRhdGUvY2hlY2tvdXQKIAkjIGNvbW1hbmRzLCB0aGVuIGl0IHNob3VsZCBiZSB1bnNldCBiZWZvcmUgY29udGludWluZy4KQEAgLTIxOCw0MSArMjY3LDYxIEBACiAJZGVsZXRlKCRFTlZ7R0lUX0lOREVYX0ZJTEV9KTsKIAogCSMgQ2hhbmdlcyBpbiB0aGUgd29ya2luZyB0cmVlIG5lZWQgc3BlY2lhbCB0cmVhdG1lbnQgc2luY2UgdGhleSBhcmUKLQkjIG5vdCBwYXJ0IG9mIHRoZSBpbmRleAorCSMgbm90IHBhcnQgb2YgdGhlIGluZGV4LiBSZW1vdmUgYW55IHRyYWlsaW5nIHNsYXNoIGZyb20gJHdvcmtkaXIKKwkjIGJlZm9yZSBzdGFydGluZyB0byBhdm9pZCBkb3VibGUgc2xhc2hlcyBpbiBzeW1saW5rIHRhcmdldHMuCisJJHdvcmtkaXIgPX4gc3wvJHx8OwogCWZvciBteSAkZmlsZSAoQHdvcmtpbmdfdHJlZSkgewogCQlteSAkZGlyID0gZGlybmFtZSgkZmlsZSk7CiAJCXVubGVzcyAoLWQgIiRyZGlyLyRkaXIiKSB7Ci0JCQlta3BhdGgoIiRyZGlyLyRkaXIiKSBvciBkaWUgJCE7CisJCQlta3BhdGgoIiRyZGlyLyRkaXIiKSBvcgorCQkJZXhpdF9jbGVhbnVwKCR0bXBkaXIsIDEpOwogCQl9Ci0JCWNvcHkoIiR3b3JrZGlyLyRmaWxlIiwgIiRyZGlyLyRmaWxlIikgb3IgZGllICQhOwotCQljaG1vZChzdGF0KCIkd29ya2Rpci8kZmlsZSIpLT5tb2RlLCAiJHJkaXIvJGZpbGUiKSBvciBkaWUgJCE7CisJCWlmICgkc3ltbGlua3MpIHsKKwkJCXN5bWxpbmsoIiR3b3JrZGlyLyRmaWxlIiwgIiRyZGlyLyRmaWxlIikgb3IKKwkJCWV4aXRfY2xlYW51cCgkdG1wZGlyLCAxKTsKKwkJfSBlbHNlIHsKKwkJCWNvcHkoIiR3b3JrZGlyLyRmaWxlIiwgIiRyZGlyLyRmaWxlIikgb3IKKwkJCWV4aXRfY2xlYW51cCgkdG1wZGlyLCAxKTsKKworCQkJbXkgJG1vZGUgPSBzdGF0KCIkd29ya2Rpci8kZmlsZSIpLT5tb2RlOworCQkJY2htb2QoJG1vZGUsICIkcmRpci8kZmlsZSIpIG9yCisJCQlleGl0X2NsZWFudXAoJHRtcGRpciwgMSk7CisJCX0KIAl9CiAKIAkjIENoYW5nZXMgdG8gc3VibW9kdWxlcyByZXF1aXJlIHNwZWNpYWwgdHJlYXRtZW50LiBUaGlzIGxvb3Agd3JpdGVzIGEKIAkjIHRlbXBvcmFyeSBmaWxlIHRvIGJvdGggdGhlIGxlZnQgYW5kIHJpZ2h0IGRpcmVjdG9yaWVzIHRvIHNob3cgdGhlCiAJIyBjaGFuZ2UgaW4gdGhlIHJlY29yZGVkIFNIQTEgZm9yIHRoZSBzdWJtb2R1bGUuCiAJZm9yIG15ICRwYXRoIChrZXlzICVzdWJtb2R1bGUpIHsKKwkJbXkgJG9rOwogCQlpZiAoZGVmaW5lZCgkc3VibW9kdWxleyRwYXRofXtsZWZ0fSkpIHsKLQkJCXdyaXRlX3RvX2ZpbGUoIiRsZGlyLyRwYXRoIiwgIlN1YnByb2plY3QgY29tbWl0ICRzdWJtb2R1bGV7JHBhdGh9e2xlZnR9Iik7CisJCQkkb2sgPSB3cml0ZV90b19maWxlKCIkbGRpci8kcGF0aCIsCisJCQkJIlN1YnByb2plY3QgY29tbWl0ICRzdWJtb2R1bGV7JHBhdGh9e2xlZnR9Iik7CiAJCX0KIAkJaWYgKGRlZmluZWQoJHN1Ym1vZHVsZXskcGF0aH17cmlnaHR9KSkgewotCQkJd3JpdGVfdG9fZmlsZSgiJHJkaXIvJHBhdGgiLCAiU3VicHJvamVjdCBjb21taXQgJHN1Ym1vZHVsZXskcGF0aH17cmlnaHR9Iik7CisJCQkkb2sgPSB3cml0ZV90b19maWxlKCIkcmRpci8kcGF0aCIsCisJCQkJIlN1YnByb2plY3QgY29tbWl0ICRzdWJtb2R1bGV7JHBhdGh9e3JpZ2h0fSIpOwogCQl9CisJCWV4aXRfY2xlYW51cCgkdG1wZGlyLCAxKSBpZiBub3QgJG9rOwogCX0KIAogCSMgU3ltYm9saWMgbGlua3MgcmVxdWlyZSBzcGVjaWFsIHRyZWF0bWVudC4gVGhlIHN0YW5kYXJkICJnaXQgZGlmZiIKIAkjIHNob3dzIG9ubHkgdGhlIGxpbmsgaXRzZWxmLCBub3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBsaW5rIHRhcmdldC4KIAkjIFRoaXMgbG9vcCByZXBsaWNhdGVzIHRoYXQgYmVoYXZpb3IuCiAJZm9yIG15ICRwYXRoIChrZXlzICVzeW1saW5rKSB7CisJCW15ICRvazsKIAkJaWYgKGRlZmluZWQoJHN5bWxpbmt7JHBhdGh9e2xlZnR9KSkgewotCQkJd3JpdGVfdG9fZmlsZSgiJGxkaXIvJHBhdGgiLCAkc3ltbGlua3skcGF0aH17bGVmdH0pOworCQkJJG9rID0gd3JpdGVfdG9fZmlsZSgiJGxkaXIvJHBhdGgiLAorCQkJCQkkc3ltbGlua3skcGF0aH17bGVmdH0pOwogCQl9CiAJCWlmIChkZWZpbmVkKCRzeW1saW5reyRwYXRofXtyaWdodH0pKSB7Ci0JCQl3cml0ZV90b19maWxlKCIkcmRpci8kcGF0aCIsICRzeW1saW5reyRwYXRofXtyaWdodH0pOworCQkJJG9rID0gd3JpdGVfdG9fZmlsZSgiJHJkaXIvJHBhdGgiLAorCQkJCQkkc3ltbGlua3skcGF0aH17cmlnaHR9KTsKIAkJfQorCQlleGl0X2NsZWFudXAoJHRtcGRpciwgMSkgaWYgbm90ICRvazsKIAl9CiAKLQlyZXR1cm4gKCRsZGlyLCAkcmRpcik7CisJcmV0dXJuICgkbGRpciwgJHJkaXIsICR0bXBkaXIsIEB3b3JraW5nX3RyZWUpOwogfQogCiBzdWIgd3JpdGVfdG9fZmlsZQpAQCAtMjYzLDgzICszMzIsMTU2IEBACiAJIyBNYWtlIHN1cmUgdGhlIHBhdGggdG8gdGhlIGZpbGUgZXhpc3RzCiAJbXkgJGRpciA9IGRpcm5hbWUoJHBhdGgpOwogCXVubGVzcyAoLWQgIiRkaXIiKSB7Ci0JCW1rcGF0aCgiJGRpciIpIG9yIGRpZSAkITsKKwkJbWtwYXRoKCIkZGlyIikgb3IgcmV0dXJuIDA7CiAJfQogCiAJIyBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cyBpbiB0aGF0IGxvY2F0aW9uLCBkZWxldGUgaXQuICBUaGlzCiAJIyBpcyByZXF1aXJlZCBpbiB0aGUgY2FzZSBvZiBzeW1ib2xpYyBsaW5rcy4KLQl1bmxpbmsoIiRwYXRoIik7CisJdW5saW5rKCRwYXRoKTsKIAotCW9wZW4obXkgJGZoLCAnPicsICIkcGF0aCIpIG9yIGRpZSAkITsKKwlvcGVuKG15ICRmaCwgJz4nLCAkcGF0aCkgb3IgcmV0dXJuIDA7CiAJcHJpbnQoJGZoICR2YWx1ZSk7CiAJY2xvc2UoJGZoKTsKKworCXJldHVybiAxOwogfQogCi0jIHBhcnNlIGNvbW1hbmQtbGluZSBvcHRpb25zLiBhbGwgdW5yZWNvZ25pemVkIG9wdGlvbnMgYW5kIGFyZ3VtZW50cwotIyBhcmUgcGFzc2VkIHRocm91Z2ggdG8gdGhlICdnaXQgZGlmZicgY29tbWFuZC4KLW15ICgkZGlmZnRvb2xfY21kLCAkZGlyZGlmZiwgJGV4dGNtZCwgJGd1aSwgJGhlbHAsICRwcm9tcHQsICR0b29sX2hlbHApOwotR2V0T3B0aW9ucygnZ3xndWkhJyA9PiBcJGd1aSwKLQknZHxkaXItZGlmZicgPT4gXCRkaXJkaWZmLAotCSdoJyA9PiBcJGhlbHAsCi0JJ3Byb21wdCEnID0+IFwkcHJvbXB0LAotCSd5JyA9PiBzdWIgeyAkcHJvbXB0ID0gMDsgfSwKLQkndHx0b29sOnMnID0+IFwkZGlmZnRvb2xfY21kLAotCSd0b29sLWhlbHAnID0+IFwkdG9vbF9oZWxwLAotCSd4fGV4dGNtZDpzJyA9PiBcJGV4dGNtZCk7CitzdWIgbWFpbgoreworCSMgcGFyc2UgY29tbWFuZC1saW5lIG9wdGlvbnMuIGFsbCB1bnJlY29nbml6ZWQgb3B0aW9ucyBhbmQgYXJndW1lbnRzCisJIyBhcmUgcGFzc2VkIHRocm91Z2ggdG8gdGhlICdnaXQgZGlmZicgY29tbWFuZC4KKwlteSAlb3B0cyA9ICgKKwkJZGlmZnRvb2xfY21kID0+IHVuZGVmLAorCQlkaXJkaWZmID0+IHVuZGVmLAorCQlleHRjbWQgPT4gdW5kZWYsCisJCWd1aSA9PiB1bmRlZiwKKwkJaGVscCA9PiB1bmRlZiwKKwkJcHJvbXB0ID0+IHVuZGVmLAorCQlzeW1saW5rcyA9PiAkXk8gbmUgJ2N5Z3dpbicgJiYKKwkJCQkkXk8gbmUgJ01TV2luMzInICYmICReTyBuZSAnbXN5cycsCisJCXRvb2xfaGVscCA9PiB1bmRlZiwKKwkpOworCUdldE9wdGlvbnMoJ2d8Z3VpIScgPT4gXCRvcHRze2d1aX0sCisJCSdkfGRpci1kaWZmJyA9PiBcJG9wdHN7ZGlyZGlmZn0sCisJCSdoJyA9PiBcJG9wdHN7aGVscH0sCisJCSdwcm9tcHQhJyA9PiBcJG9wdHN7cHJvbXB0fSwKKwkJJ3knID0+IHN1YiB7ICRvcHRze3Byb21wdH0gPSAwOyB9LAorCQknc3ltbGlua3MnID0+IFwkb3B0c3tzeW1saW5rc30sCisJCSduby1zeW1saW5rcycgPT4gc3ViIHsgJG9wdHN7c3ltbGlua3N9ID0gMDsgfSwKKwkJJ3R8dG9vbDpzJyA9PiBcJG9wdHN7ZGlmZnRvb2xfY21kfSwKKwkJJ3Rvb2wtaGVscCcgPT4gXCRvcHRze3Rvb2xfaGVscH0sCisJCSd4fGV4dGNtZDpzJyA9PiBcJG9wdHN7ZXh0Y21kfSk7CiAKLWlmIChkZWZpbmVkKCRoZWxwKSkgewotCXVzYWdlKDApOwotfQotaWYgKGRlZmluZWQoJHRvb2xfaGVscCkpIHsKLQlwcmludF90b29sX2hlbHAoKTsKLX0KLWlmIChkZWZpbmVkKCRkaWZmdG9vbF9jbWQpKSB7Ci0JaWYgKGxlbmd0aCgkZGlmZnRvb2xfY21kKSA+IDApIHsKLQkJJEVOVntHSVRfRElGRl9UT09MfSA9ICRkaWZmdG9vbF9jbWQ7CisJaWYgKGRlZmluZWQoJG9wdHN7aGVscH0pKSB7CisJCXVzYWdlKDApOworCX0KKwlpZiAoZGVmaW5lZCgkb3B0c3t0b29sX2hlbHB9KSkgeworCQlwcmludF90b29sX2hlbHAoKTsKKwl9CisJaWYgKGRlZmluZWQoJG9wdHN7ZGlmZnRvb2xfY21kfSkpIHsKKwkJaWYgKGxlbmd0aCgkb3B0c3tkaWZmdG9vbF9jbWR9KSA+IDApIHsKKwkJCSRFTlZ7R0lUX0RJRkZfVE9PTH0gPSAkb3B0c3tkaWZmdG9vbF9jbWR9OworCQl9IGVsc2UgeworCQkJcHJpbnQgIk5vIDx0b29sPiBnaXZlbiBmb3IgLS10b29sPTx0b29sPlxuIjsKKwkJCXVzYWdlKDEpOworCQl9CisJfQorCWlmIChkZWZpbmVkKCRvcHRze2V4dGNtZH0pKSB7CisJCWlmIChsZW5ndGgoJG9wdHN7ZXh0Y21kfSkgPiAwKSB7CisJCQkkRU5We0dJVF9ESUZGVE9PTF9FWFRDTUR9ID0gJG9wdHN7ZXh0Y21kfTsKKwkJfSBlbHNlIHsKKwkJCXByaW50ICJObyA8Y21kPiBnaXZlbiBmb3IgLS1leHRjbWQ9PGNtZD5cbiI7CisJCQl1c2FnZSgxKTsKKwkJfQorCX0KKwlpZiAoJG9wdHN7Z3VpfSkgeworCQlteSAkZ3VpdG9vbCA9IEdpdDo6Y29uZmlnKCdkaWZmLmd1aXRvb2wnKTsKKwkJaWYgKGRlZmluZWQoJGd1aXRvb2wpICYmIGxlbmd0aCgkZ3VpdG9vbCkgPiAwKSB7CisJCQkkRU5We0dJVF9ESUZGX1RPT0x9ID0gJGd1aXRvb2w7CisJCX0KKwl9CisKKwkjIEluIGRpcmVjdG9yeSBkaWZmIG1vZGUsICdnaXQtZGlmZnRvb2wtLWhlbHBlcicgaXMgY2FsbGVkIG9uY2UKKwkjIHRvIGNvbXBhcmUgdGhlIGEvYiBkaXJlY3Rvcmllcy4gIEluIGZpbGUgZGlmZiBtb2RlLCAnZ2l0IGRpZmYnCisJIyB3aWxsIGludm9rZSBhIHNlcGFyYXRlIGluc3RhbmNlIG9mICdnaXQtZGlmZnRvb2wtLWhlbHBlcicgZm9yCisJIyBlYWNoIGZpbGUgdGhhdCBjaGFuZ2VkLgorCWlmIChkZWZpbmVkKCRvcHRze2RpcmRpZmZ9KSkgeworCQlkaXJfZGlmZigkb3B0c3tleHRjbWR9LCAkb3B0c3tzeW1saW5rc30pOwogCX0gZWxzZSB7Ci0JCXByaW50ICJObyA8dG9vbD4gZ2l2ZW4gZm9yIC0tdG9vbD08dG9vbD5cbiI7Ci0JCXVzYWdlKDEpOwotCX0KLX0KLWlmIChkZWZpbmVkKCRleHRjbWQpKSB7Ci0JaWYgKGxlbmd0aCgkZXh0Y21kKSA+IDApIHsKLQkJJEVOVntHSVRfRElGRlRPT0xfRVhUQ01EfSA9ICRleHRjbWQ7Ci0JfSBlbHNlIHsKLQkJcHJpbnQgIk5vIDxjbWQ+IGdpdmVuIGZvciAtLWV4dGNtZD08Y21kPlxuIjsKLQkJdXNhZ2UoMSk7Ci0JfQotfQotaWYgKCRndWkpIHsKLQlteSAkZ3VpdG9vbCA9ICcnOwotCSRndWl0b29sID0gR2l0Ojpjb25maWcoJ2RpZmYuZ3VpdG9vbCcpOwotCWlmIChsZW5ndGgoJGd1aXRvb2wpID4gMCkgewotCQkkRU5We0dJVF9ESUZGX1RPT0x9ID0gJGd1aXRvb2w7CisJCWZpbGVfZGlmZigkb3B0c3twcm9tcHR9KTsKIAl9CiB9CiAKLSMgSW4gZGlyZWN0b3J5IGRpZmYgbW9kZSwgJ2dpdC1kaWZmdG9vbC0taGVscGVyJyBpcyBjYWxsZWQgb25jZQotIyB0byBjb21wYXJlIHRoZSBhL2IgZGlyZWN0b3JpZXMuICBJbiBmaWxlIGRpZmYgbW9kZSwgJ2dpdCBkaWZmJwotIyB3aWxsIGludm9rZSBhIHNlcGFyYXRlIGluc3RhbmNlIG9mICdnaXQtZGlmZnRvb2wtLWhlbHBlcicgZm9yCi0jIGVhY2ggZmlsZSB0aGF0IGNoYW5nZWQuCi1pZiAoZGVmaW5lZCgkZGlyZGlmZikpIHsKLQlteSAoJGEsICRiKSA9IHNldHVwX2Rpcl9kaWZmKCk7CitzdWIgZGlyX2RpZmYKK3sKKwlteSAoJGV4dGNtZCwgJHN5bWxpbmtzKSA9IEBfOworCW15ICRyYzsKKwlteSAkZXJyb3IgPSAwOworCW15ICRyZXBvID0gR2l0LT5yZXBvc2l0b3J5KCk7CisJbXkgJHdvcmtkaXIgPSBmaW5kX3dvcmt0cmVlKCRyZXBvKTsKKwlteSAoJGEsICRiLCAkdG1wZGlyLCBAd29ya3RyZWUpID0KKwkJc2V0dXBfZGlyX2RpZmYoJHJlcG8sICR3b3JrZGlyLCAkc3ltbGlua3MpOworCiAJaWYgKGRlZmluZWQoJGV4dGNtZCkpIHsKIAkJJHJjID0gc3lzdGVtKCRleHRjbWQsICRhLCAkYik7CiAJfSBlbHNlIHsKIAkJJEVOVntHSVRfRElGRlRPT0xfRElSRElGRn0gPSAndHJ1ZSc7CiAJCSRyYyA9IHN5c3RlbSgnZ2l0JywgJ2RpZmZ0b29sLS1oZWxwZXInLCAkYSwgJGIpOwogCX0KLQotCWV4aXQoJHJjIHwgKCRyYyA+PiA4KSkgaWYgKCRyYyAhPSAwKTsKLQogCSMgSWYgdGhlIGRpZmYgaW5jbHVkaW5nIHdvcmtpbmcgY29weSBmaWxlcyBhbmQgdGhvc2UKIAkjIGZpbGVzIHdlcmUgbW9kaWZpZWQgZHVyaW5nIHRoZSBkaWZmLCB0aGVuIHRoZSBjaGFuZ2VzCi0JIyBzaG91bGQgYmUgY29waWVkIGJhY2sgdG8gdGhlIHdvcmtpbmcgdHJlZQotCWZvciBteSAkZmlsZSAoQHdvcmtpbmdfdHJlZSkgewotCQljb3B5KCIkYi8kZmlsZSIsICIkd29ya2Rpci8kZmlsZSIpIG9yIGRpZSAkITsKLQkJY2htb2Qoc3RhdCgiJGIvJGZpbGUiKS0+bW9kZSwgIiR3b3JrZGlyLyRmaWxlIikgb3IgZGllICQhOworCSMgc2hvdWxkIGJlIGNvcGllZCBiYWNrIHRvIHRoZSB3b3JraW5nIHRyZWUuCisJIyBEbyBub3QgY29weSBiYWNrIGZpbGVzIHdoZW4gc3ltbGlua3MgYXJlIHVzZWQgYW5kIHRoZQorCSMgZXh0ZXJuYWwgdG9vbCBkaWQgbm90IHJlcGxhY2UgdGhlIG9yaWdpbmFsIGxpbmsgd2l0aCBhIGZpbGUuCisJIworCSMgVGhlc2UgaGFzaGVzIGFyZSBsb2FkZWQgbGF6aWx5IHNpbmNlIHRoZXkgYXJlbid0IG5lZWRlZAorCSMgaW4gdGhlIGNvbW1vbiBjYXNlIG9mIC0tc3ltbGlua3MgYW5kIHRoZSBkaWZmdG9vbCB1cGRhdGluZworCSMgZmlsZXMgdGhyb3VnaCB0aGUgc3ltbGluay4KKwlteSAld3RfbW9kaWZpZWQ7CisJbXkgJXRtcF9tb2RpZmllZDsKKwlteSAkaW5kaWNlc19sb2FkZWQgPSAwOworCisJZm9yIG15ICRmaWxlIChAd29ya3RyZWUpIHsKKwkJbmV4dCBpZiAkc3ltbGlua3MgJiYgLWwgIiRiLyRmaWxlIjsKKwkJbmV4dCBpZiAhIC1mICIkYi8kZmlsZSI7CisKKwkJaWYgKCEkaW5kaWNlc19sb2FkZWQpIHsKKwkJCSV3dF9tb2RpZmllZCA9IGNoYW5nZWRfZmlsZXMoJHJlcG8tPnJlcG9fcGF0aCgpLAorCQkJCSIkdG1wZGlyL3d0aW5kZXgiLCAiJHdvcmtkaXIiKTsKKwkJCSV0bXBfbW9kaWZpZWQgPSBjaGFuZ2VkX2ZpbGVzKCRyZXBvLT5yZXBvX3BhdGgoKSwKKwkJCQkiJHRtcGRpci93dGluZGV4IiwgIiRiIik7CisJCQkkaW5kaWNlc19sb2FkZWQgPSAxOworCQl9CisKKwkJaWYgKGV4aXN0cyAkd3RfbW9kaWZpZWR7JGZpbGV9IGFuZCBleGlzdHMgJHRtcF9tb2RpZmllZHskZmlsZX0pIHsKKwkJCW15ICRlcnJtc2cgPSAid2FybmluZzogQm90aCBmaWxlcyBtb2RpZmllZDogIjsKKwkJCSRlcnJtc2cgLj0gIickd29ya2Rpci8kZmlsZScgYW5kICckYi8kZmlsZScuXG4iOworCQkJJGVycm1zZyAuPSAid2FybmluZzogV29ya2luZyB0cmVlIGZpbGUgaGFzIGJlZW4gbGVmdC5cbiI7CisJCQkkZXJybXNnIC49ICJ3YXJuaW5nOlxuIjsKKwkJCXdhcm4gJGVycm1zZzsKKwkJCSRlcnJvciA9IDE7CisJCX0gZWxzaWYgKGV4aXN0cyAkdG1wX21vZGlmaWVkeyRmaWxlfSkgeworCQkJbXkgJG1vZGUgPSBzdGF0KCIkYi8kZmlsZSIpLT5tb2RlOworCQkJY29weSgiJGIvJGZpbGUiLCAiJHdvcmtkaXIvJGZpbGUiKSBvcgorCQkJZXhpdF9jbGVhbnVwKCR0bXBkaXIsIDEpOworCisJCQljaG1vZCgkbW9kZSwgIiR3b3JrZGlyLyRmaWxlIikgb3IKKwkJCWV4aXRfY2xlYW51cCgkdG1wZGlyLCAxKTsKKwkJfQogCX0KLX0gZWxzZSB7CisJaWYgKCRlcnJvcikgeworCQl3YXJuICJ3YXJuaW5nOiBUZW1wb3JhcnkgZmlsZXMgZXhpc3QgaW4gJyR0bXBkaXInLlxuIjsKKwkJd2FybiAid2FybmluZzogWW91IG1heSB3YW50IHRvIGNsZWFudXAgb3IgcmVjb3ZlciB0aGVzZS5cbiI7CisJCWV4aXQoMSk7CisJfSBlbHNlIHsKKwkJZXhpdF9jbGVhbnVwKCR0bXBkaXIsICRyYyk7CisJfQorfQorCitzdWIgZmlsZV9kaWZmCit7CisJbXkgKCRwcm9tcHQpID0gQF87CisKIAlpZiAoZGVmaW5lZCgkcHJvbXB0KSkgewogCQlpZiAoJHByb21wdCkgewogCQkJJEVOVntHSVRfRElGRlRPT0xfUFJPTVBUfSA9ICd0cnVlJzsKQEAgLTM1OSwzICs1MDEsNSBAQAogCW15ICRyYyA9IHN5c3RlbSgnZ2l0JywgJ2RpZmYnLCBAQVJHVik7CiAJZXhpdCgkcmMgfCAoJHJjID4+IDgpKTsKIH0KKworbWFpbigpOwpkaWZmIC0tZ2l0IGEvZ2l0LWZpbHRlci1icmFuY2guc2ggYi9naXQtZmlsdGVyLWJyYW5jaC5zaAppbmRleCBhZGQyYzAyLi5hYzJhMDA1IDEwMDc1NQotLS0gYS9naXQtZmlsdGVyLWJyYW5jaC5zaAorKysgYi9naXQtZmlsdGVyLWJyYW5jaC5zaApAQCAtNjQsMzcgKzY0LDE5IEBACiAKIGV2YWwgIiRmdW5jdGlvbnMiCiAKLSMgV2hlbiBwaXBlZCBhIGNvbW1pdCwgb3V0cHV0IGEgc2NyaXB0IHRvIHNldCB0aGUgaWRlbnQgb2YgZWl0aGVyCi0jICJhdXRob3IiIG9yICJjb21taXR0ZXIKK2ZpbmlzaF9pZGVudCgpIHsKKwkjIEVuc3VyZSBub24tZW1wdHkgaWQgbmFtZS4KKwllY2hvICJjYXNlIFwiXCRHSVRfJDFfTkFNRVwiIGluIFwiXCIpIEdJVF8kMV9OQU1FPVwiXCR7R0lUXyQxX0VNQUlMJSVAKn1cIiAmJiBleHBvcnQgR0lUXyQxX05BTUU7OyBlc2FjIgorCSMgQW5kIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGV4cG9ydGVkLgorCWVjaG8gImV4cG9ydCBHSVRfJDFfTkFNRSIKKwllY2hvICJleHBvcnQgR0lUXyQxX0VNQUlMIgorCWVjaG8gImV4cG9ydCBHSVRfJDFfREFURSIKK30KIAogc2V0X2lkZW50ICgpIHsKLQlsaWQ9IiQoZWNobyAiJDEiIHwgdHIgIltBLVpdIiAiW2Etel0iKSIKLQl1aWQ9IiQoZWNobyAiJDEiIHwgdHIgIlthLXpdIiAiW0EtWl0iKSIKLQlwaWNrX2lkX3NjcmlwdD0nCi0JCS9eJyRsaWQnIC97Ci0JCQlzLydcJycvJ1wnJ1xcJ1wnXCcnL2cKLQkJCWgKLQkJCXMvXickbGlkJyBcKFtePF0qXCkgPFtePl0qPiAuKiQvXDEvCi0JCQlzLydcJycvJ1wnJ1wnXCdcJycvZwotCQkJcy8uKi9HSVRfJyR1aWQnX05BTUU9J1wnJyYnXCcnOyBleHBvcnQgR0lUXyckdWlkJ19OQU1FL3AKLQotCQkJZwotCQkJcy9eJyRsaWQnIFtePF0qIDxcKFtePl0qXCk+IC4qJC9cMS8KLQkJCXMvJ1wnJy8nXCcnXCdcJ1wnJy9nCi0JCQlzLy4qL0dJVF8nJHVpZCdfRU1BSUw9J1wnJyYnXCcnOyBleHBvcnQgR0lUXyckdWlkJ19FTUFJTC9wCi0KLQkJCWcKLQkJCXMvXickbGlkJyBbXjxdKiA8W14+XSo+IFwoLipcKSQvXDEvCi0JCQlzLydcJycvJ1wnJ1wnXCdcJycvZwotCQkJcy8uKi9HSVRfJyR1aWQnX0RBVEU9J1wnJyYnXCcnOyBleHBvcnQgR0lUXyckdWlkJ19EQVRFL3AKLQotCQkJcQotCQl9Ci0JJwotCi0JTEFORz1DIExDX0FMTD1DIHNlZCAtbmUgIiRwaWNrX2lkX3NjcmlwdCIKLQkjIEVuc3VyZSBub24tZW1wdHkgaWQgbmFtZS4KLQllY2hvICJjYXNlIFwiXCRHSVRfJHt1aWR9X05BTUVcIiBpbiBcIlwiKSBHSVRfJHt1aWR9X05BTUU9XCJcJHtHSVRfJHt1aWR9X0VNQUlMJSVAKn1cIiAmJiBleHBvcnQgR0lUXyR7dWlkfV9OQU1FOzsgZXNhYyIKKwlwYXJzZV9pZGVudF9mcm9tX2NvbW1pdCBhdXRob3IgQVVUSE9SIGNvbW1pdHRlciBDT01NSVRURVIKKwlmaW5pc2hfaWRlbnQgQVVUSE9SCisJZmluaXNoX2lkZW50IENPTU1JVFRFUgogfQogCiBVU0FHRT0iWy0tZW52LWZpbHRlciA8Y29tbWFuZD5dIFstLXRyZWUtZmlsdGVyIDxjb21tYW5kPl0KQEAgLTIxNyw2ICsxOTksNyBAQAogCXRlc3QgLWQgIiR0ZW1wZGlyIiAmJgogCQlkaWUgIiR0ZW1wZGlyIGFscmVhZHkgZXhpc3RzLCBwbGVhc2UgcmVtb3ZlIGl0IgogZXNhYworb3JpZ19kaXI9JChwd2QpCiBta2RpciAtcCAiJHRlbXBkaXIvdCIgJiYKIHRlbXBkaXI9IiQoY2QgIiR0ZW1wZGlyIjsgcHdkKSIgJiYKIGNkICIkdGVtcGRpci90IiAmJgpAQCAtMjI0LDcgKzIwNyw3IEBACiBkaWUgIiIKIAogIyBSZW1vdmUgdGVtcGRpciBvbiBleGl0Ci10cmFwICdjZCAuLi8uLjsgcm0gLXJmICIkdGVtcGRpciInIDAKK3RyYXAgJ2NkICIkb3JpZ19kaXIiOyBybSAtcmYgIiR0ZW1wZGlyIicgMAogCiBPUklHX0dJVF9ESVI9IiRHSVRfRElSIgogT1JJR19HSVRfV09SS19UUkVFPSIkR0lUX1dPUktfVFJFRSIKQEAgLTMyMCwxMCArMzAzLDggQEAKIAlnaXQgY2F0LWZpbGUgY29tbWl0ICIkY29tbWl0IiA+Li4vY29tbWl0IHx8CiAJCWRpZSAiQ2Fubm90IHJlYWQgY29tbWl0ICRjb21taXQiCiAKLQlldmFsICIkKHNldF9pZGVudCBBVVRIT1IgPC4uL2NvbW1pdCkiIHx8Ci0JCWRpZSAic2V0dGluZyBhdXRob3IgZmFpbGVkIGZvciBjb21taXQgJGNvbW1pdCIKLQlldmFsICIkKHNldF9pZGVudCBDT01NSVRURVIgPC4uL2NvbW1pdCkiIHx8Ci0JCWRpZSAic2V0dGluZyBjb21taXR0ZXIgZmFpbGVkIGZvciBjb21taXQgJGNvbW1pdCIKKwlldmFsICIkKHNldF9pZGVudCA8Li4vY29tbWl0KSIgfHwKKwkJZGllICJzZXR0aW5nIGF1dGhvci9jb21taXR0ZXIgZmFpbGVkIGZvciBjb21taXQgJGNvbW1pdCIKIAlldmFsICIkZmlsdGVyX2VudiIgPCAvZGV2L251bGwgfHwKIAkJZGllICJlbnYgZmlsdGVyIGZhaWxlZDogJGZpbHRlcl9lbnYiCiAKQEAgLTQ4OSw3ICs0NzAsNyBAQAogCWRvbmUKIGZpCiAKLWNkIC4uLy4uCitjZCAiJG9yaWdfZGlyIgogcm0gLXJmICIkdGVtcGRpciIKIAogdHJhcCAtIDAKZGlmZiAtLWdpdCBhL2dpdC1ndWkvR0lULVZFUlNJT04tR0VOIGIvZ2l0LWd1aS9HSVQtVkVSU0lPTi1HRU4KaW5kZXggNjU3MDk0My4uNDliNjJlYSAxMDA3NTUKLS0tIGEvZ2l0LWd1aS9HSVQtVkVSU0lPTi1HRU4KKysrIGIvZ2l0LWd1aS9HSVQtVkVSU0lPTi1HRU4KQEAgLTEsNyArMSw3IEBACiAjIS9iaW4vc2gKIAogR1ZGPUdJVC1WRVJTSU9OLUZJTEUKLURFRl9WRVI9MC4xNi5HSVRHVUkKK0RFRl9WRVI9MC4xNy5HSVRHVUkKIAogTEY9JwogJwpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9naXQtZ3VpLnNoIGIvZ2l0LWd1aS9naXQtZ3VpLnNoCmluZGV4IGJhNGU1YzEuLjg5ZjYzNmYgMTAwNzU1Ci0tLSBhL2dpdC1ndWkvZ2l0LWd1aS5zaAorKysgYi9naXQtZ3VpL2dpdC1ndWkuc2gKQEAgLTE1NCw2ICsxNTQsNyBAQAogaWYgeyRfdHJhY2UgPj0gMH0gewogCXNldCBhcmd2IFtscmVwbGFjZSAkYXJndiAkX3RyYWNlICRfdHJhY2VdCiAJc2V0IF90cmFjZSAxCisJaWYge1t0ayB3aW5kb3dpbmdzeXN0ZW1dIGVxICJ3aW4zMiJ9IHsgY29uc29sZSBzaG93IH0KIH0gZWxzZSB7CiAJc2V0IF90cmFjZSAwCiB9CkBAIC0xNDYzLDcgKzE0NjQsNyBAQAogCQkoIVskdWlfY29tbSBlZGl0IG1vZGlmaWVkXQogCQl8fCBbc3RyaW5nIHRyaW0gWyR1aV9jb21tIGdldCAwLjAgZW5kXV0gZXEge30pfSB7CiAJCWlmIHtbc3RyaW5nIG1hdGNoIGFtZW5kKiAkY29tbWl0X3R5cGVdfSB7Ci0JCX0gZWxzZWlmIHtbbG9hZF9tZXNzYWdlIEdJVEdVSV9NU0ddfSB7CisJCX0gZWxzZWlmIHtbbG9hZF9tZXNzYWdlIEdJVEdVSV9NU0cgdXRmLThdfSB7CiAJCX0gZWxzZWlmIHtbcnVuX3ByZXBhcmVfY29tbWl0X21zZ19ob29rXX0gewogCQl9IGVsc2VpZiB7W2xvYWRfbWVzc2FnZSBNRVJHRV9NU0ddfSB7CiAJCX0gZWxzZWlmIHtbbG9hZF9tZXNzYWdlIFNRVUFTSF9NU0ddfSB7CkBAIC0xNTQ5LDcgKzE1NTAsNyBAQAogCWZpbGVldmVudCAkZmRfbG8gcmVhZGFibGUgW2xpc3QgcmVhZF9sc19vdGhlcnMgJGZkX2xvICRhZnRlcl0KIH0KIAotcHJvYyBsb2FkX21lc3NhZ2Uge2ZpbGV9IHsKK3Byb2MgbG9hZF9tZXNzYWdlIHtmaWxlIHtlbmNvZGluZyB7fX19IHsKIAlnbG9iYWwgdWlfY29tbQogCiAJc2V0IGYgW2dpdGRpciAkZmlsZV0KQEAgLTE1NTgsNiArMTU1OSw5IEBACiAJCQlyZXR1cm4gMAogCQl9CiAJCWZjb25maWd1cmUgJGZkIC1lb2ZjaGFyIHt9CisJCWlmIHskZW5jb2RpbmcgbmUge319IHsKKwkJCWZjb25maWd1cmUgJGZkIC1lbmNvZGluZyAkZW5jb2RpbmcKKwkJfQogCQlzZXQgY29udGVudCBbc3RyaW5nIHRyaW0gW3JlYWQgJGZkXV0KIAkJY2xvc2UgJGZkCiAJCXJlZ3N1YiAtYWxsIC1saW5lIHtbIFxyXHRdKyR9ICRjb250ZW50IHt9IGNvbnRlbnQKQEAgLTIyNjYsNiArMjI3MCw3IEBACiAJCQkJJiYgJG1zZyBuZSB7fX0gewogCQkJCWNhdGNoIHsKIAkJCQkJc2V0IGZkIFtvcGVuICRzYXZlIHddCisJCQkJCWZjb25maWd1cmUgJGZkIC1lbmNvZGluZyB1dGYtOAogCQkJCQlwdXRzIC1ub25ld2xpbmUgJGZkICRtc2cKIAkJCQkJY2xvc2UgJGZkCiAJCQkJfQpAQCAtMjk5OCwxMCArMzAwMywxOSBAQAogCXNldCBqdW1wX3NwZWMge30KIAlzZXQgaXNfcGF0aCAwCiAJZm9yZWFjaCBhICRhcmd2IHsKLQkJaWYgeyRpc19wYXRoIHx8IFtmaWxlIGV4aXN0cyAkX3ByZWZpeCRhXX0geworCQlpZiB7W2ZpbGUgZXhpc3RzICRhXX0geworCQkJaWYgeyRwYXRoIG5lIHt9fSB1c2FnZQorCQkJc2V0IHBhdGggW25vcm1hbGl6ZV9yZWxwYXRoICRhXQorCQkJYnJlYWsKKwkJfSBlbHNlaWYge1tmaWxlIGV4aXN0cyAkX3ByZWZpeCRhXX0gewogCQkJaWYgeyRwYXRoIG5lIHt9fSB1c2FnZQogCQkJc2V0IHBhdGggW25vcm1hbGl6ZV9yZWxwYXRoICRfcHJlZml4JGFdCiAJCQlicmVhaworCQl9CisKKwkJaWYgeyRpc19wYXRofSB7CisJCQlpZiB7JHBhdGggbmUge319IHVzYWdlCisJCQlicmVhawogCQl9IGVsc2VpZiB7JGEgZXEgey0tfX0gewogCQkJaWYgeyRwYXRoIG5lIHt9fSB7CiAJCQkJaWYgeyRoZWFkIG5lIHt9fSB1c2FnZQpAQCAtMzAyMyw4ICszMDM3LDEzIEBACiAJdW5zZXQgaXNfcGF0aAogCiAJaWYgeyRoZWFkIG5lIHt9ICYmICRwYXRoIGVxIHt9fSB7Ci0JCXNldCBwYXRoIFtub3JtYWxpemVfcmVscGF0aCAkX3ByZWZpeCRoZWFkXQotCQlzZXQgaGVhZCB7fQorCQlpZiB7W3N0cmluZyBpbmRleCAkaGVhZCAwXSBlcSB7L319IHsKKwkJCXNldCBwYXRoIFtub3JtYWxpemVfcmVscGF0aCAkaGVhZF0KKwkJCXNldCBoZWFkIHt9CisJCX0gZWxzZSB7CisJCQlzZXQgcGF0aCBbbm9ybWFsaXplX3JlbHBhdGggJF9wcmVmaXgkaGVhZF0KKwkJCXNldCBoZWFkIHt9CisJCX0KIAl9CiAKIAlpZiB7JGhlYWQgZXEge319IHsKQEAgLTM3MTAsNiArMzcyOSw4IEBACiBiaW5kICR1aV9kaWZmIDwkTTFCLUtleS1WPiB7YnJlYWt9CiBiaW5kICR1aV9kaWZmIDwkTTFCLUtleS1hPiB7JVcgdGFnIGFkZCBzZWwgMC4wIGVuZDticmVha30KIGJpbmQgJHVpX2RpZmYgPCRNMUItS2V5LUE+IHslVyB0YWcgYWRkIHNlbCAwLjAgZW5kO2JyZWFrfQorYmluZCAkdWlfZGlmZiA8JE0xQi1LZXktaj4ge2RvX3JldmVydF9zZWxlY3Rpb247YnJlYWt9CitiaW5kICR1aV9kaWZmIDwkTTFCLUtleS1KPiB7ZG9fcmV2ZXJ0X3NlbGVjdGlvbjticmVha30KIGJpbmQgJHVpX2RpZmYgPEtleS1VcD4gICAgIHtjYXRjaCB7JVcgeXZpZXcgc2Nyb2xsIC0xIHVuaXRzfTticmVha30KIGJpbmQgJHVpX2RpZmYgPEtleS1Eb3duPiAgIHtjYXRjaCB7JVcgeXZpZXcgc2Nyb2xsICAxIHVuaXRzfTticmVha30KIGJpbmQgJHVpX2RpZmYgPEtleS1MZWZ0PiAgIHtjYXRjaCB7JVcgeHZpZXcgc2Nyb2xsIC0xIHVuaXRzfTticmVha30KQEAgLTM3NDIsNiArMzc2Myw4IEBACiBiaW5kIC4gICA8JE0xQi1LZXktUz4gZG9fc2lnbm9mZgogYmluZCAuICAgPCRNMUItS2V5LXQ+IGRvX2FkZF9zZWxlY3Rpb24KIGJpbmQgLiAgIDwkTTFCLUtleS1UPiBkb19hZGRfc2VsZWN0aW9uCitiaW5kIC4gICA8JE0xQi1LZXktdT4gZG9fdW5zdGFnZV9zZWxlY3Rpb24KK2JpbmQgLiAgIDwkTTFCLUtleS1VPiBkb191bnN0YWdlX3NlbGVjdGlvbgogYmluZCAuICAgPCRNMUItS2V5LWo+IGRvX3JldmVydF9zZWxlY3Rpb24KIGJpbmQgLiAgIDwkTTFCLUtleS1KPiBkb19yZXZlcnRfc2VsZWN0aW9uCiBiaW5kIC4gICA8JE0xQi1LZXktaT4gZG9fYWRkX2FsbApAQCAtMzgzNSw3ICszODU4LDcgQEAKIH0KIAogaWYge1t3aW5mbyBleGlzdHMgJHVpX2NvbW1dfSB7Ci0Jc2V0IEdJVEdVSV9CQ0tfZXhpc3RzIFtsb2FkX21lc3NhZ2UgR0lUR1VJX0JDS10KKwlzZXQgR0lUR1VJX0JDS19leGlzdHMgW2xvYWRfbWVzc2FnZSBHSVRHVUlfQkNLIHV0Zi04XQogCiAJIyAtLSBJZiBib3RoIG91ciBiYWNrdXAgYW5kIG1lc3NhZ2UgZmlsZXMgZXhpc3QgdXNlIHRoZQogCSMgICAgbmV3ZXIgb2YgdGhlIHR3byBmaWxlcyB0byBpbml0aWFsaXplIHRoZSBidWZmZXIuCkBAIC0zODcyLDYgKzM4OTUsNyBAQAogCQkJfSBlbHNlaWYgeyRtfSB7CiAJCQkJY2F0Y2ggewogCQkJCQlzZXQgZmQgW29wZW4gW2dpdGRpciBHSVRHVUlfQkNLXSB3XQorCQkJCQlmY29uZmlndXJlICRmZCAtZW5jb2RpbmcgdXRmLTgKIAkJCQkJcHV0cyAtbm9uZXdsaW5lICRmZCAkbXNnCiAJCQkJCWNsb3NlICRmZAogCQkJCQlzZXQgR0lUR1VJX0JDS19leGlzdHMgMQpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9saWIvY29tbWl0LnRjbCBiL2dpdC1ndWkvbGliL2NvbW1pdC50Y2wKaW5kZXggMGQ4MTQzMi4uODY0YjY4NyAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvY29tbWl0LnRjbAorKysgYi9naXQtZ3VpL2xpYi9jb21taXQudGNsCkBAIC0yNjgsNyArMjY4LDcgQEAKIAkgICAgJiYgCVtpc19jb25maWdfdHJ1ZSBndWkud2FybmRldGFjaGVkY29tbWl0XX0gewogCQlzZXQgbXNnIFttYyAiWW91IGFyZSBhYm91dCB0byBjb21taXQgb24gYSBkZXRhY2hlZCBoZWFkLlwKIFRoaXMgaXMgYSBwb3RlbnRpYWxseSBkYW5nZXJvdXMgdGhpbmcgdG8gZG8gYmVjYXVzZSBpZiB5b3Ugc3dpdGNoXAotdG8gYW5vdGhlciBicmFuY2ggeW91IHdpbGwgbG9vc2UgeW91ciBjaGFuZ2VzIGFuZCBpdCBjYW4gYmUgZGlmZmljdWx0XAordG8gYW5vdGhlciBicmFuY2ggeW91IHdpbGwgbG9zZSB5b3VyIGNoYW5nZXMgYW5kIGl0IGNhbiBiZSBkaWZmaWN1bHRcCiB0byByZXRyaWV2ZSB0aGVtIGxhdGVyIGZyb20gdGhlIHJlZmxvZy4gWW91IHNob3VsZCBwcm9iYWJseSBjYW5jZWwgdGhpc1wKIGNvbW1pdCBhbmQgY3JlYXRlIGEgbmV3IGJyYW5jaCB0byBjb250aW51ZS5cblwKIFxuXApAQCAtNDA5LDYgKzQwOSw3IEBACiAJY2F0Y2gge2ZpbGUgZGVsZXRlIFtnaXRkaXIgTUVSR0VfTVNHXX0KIAljYXRjaCB7ZmlsZSBkZWxldGUgW2dpdGRpciBTUVVBU0hfTVNHXX0KIAljYXRjaCB7ZmlsZSBkZWxldGUgW2dpdGRpciBHSVRHVUlfTVNHXX0KKwljYXRjaCB7ZmlsZSBkZWxldGUgW2dpdGRpciBDSEVSUllfUElDS19IRUFEXX0KIAogCSMgLS0gTGV0IHJlcmVyZSBkbyBpdHMgdGhpbmcuCiAJIwpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9saWIvc3RhdHVzX2Jhci50Y2wgYi9naXQtZ3VpL2xpYi9zdGF0dXNfYmFyLnRjbAppbmRleCA5NWNiNDQ5Li4wMjExMWExIDEwMDY0NAotLS0gYS9naXQtZ3VpL2xpYi9zdGF0dXNfYmFyLnRjbAorKysgYi9naXQtZ3VpL2xpYi9zdGF0dXNfYmFyLnRjbApAQCAtNzcsNiArNzcsNyBAQAogCiBtZXRob2QgdXBkYXRlIHtoYXZlIHRvdGFsfSB7CiAJc2V0IHBkb25lIDAKKwlzZXQgY2RvbmUgMAogCWlmIHskdG90YWwgPiAwfSB7CiAJCXNldCBwZG9uZSBbZXhwciB7MTAwICogJGhhdmUgLyAkdG90YWx9XQogCQlzZXQgY2RvbmUgW2V4cHIge1t3aW5mbyB3aWR0aCAkd19jXSAqICRoYXZlIC8gJHRvdGFsfV0KZGlmZiAtLWdpdCBhL2dpdC1ndWkvbWFjb3N4L0FwcE1haW4udGNsIGIvZ2l0LWd1aS9tYWNvc3gvQXBwTWFpbi50Y2wKaW5kZXggZGRiZTYzMy4uNzM4YmRkMCAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9tYWNvc3gvQXBwTWFpbi50Y2wKKysrIGIvZ2l0LWd1aS9tYWNvc3gvQXBwTWFpbi50Y2wKQEAgLTEyLDcgKzEyLDkgQEAKIH0gZWxzZSB7CiAJc2V0IGFyZ3YwIFtmaWxlIGpvaW4gJGdpdGV4ZWNkaXIgW2ZpbGUgdGFpbCBbbGluZGV4ICRhcmd2IDBdXV0KIAlzZXQgQXBwTWFpbl9zb3VyY2UgW2ZpbGUgam9pbiAkZ2l0Z3VpbGliIGdpdC1ndWkudGNsXQotCWlmIHtbcHdkXSBlcSB7L319IHsKKwlpZiB7W2luZm8gZXhpc3RzIGVudihQV0QpXX0geworCQljZCAkZW52KFBXRCkKKwl9IGVsc2VpZiB7W3B3ZF0gZXEgey99fSB7CiAJCWNkICRlbnYoSE9NRSkKIAl9CiB9CmRpZmYgLS1naXQgYS9naXQtZ3VpL3BvL2RlLnBvIGIvZ2l0LWd1aS9wby9kZS5wbwppbmRleCA0NGM1ZGRjLi5iYWViZmYyIDEwMDY0NAotLS0gYS9naXQtZ3VpL3BvL2RlLnBvCisrKyBiL2dpdC1ndWkvcG8vZGUucG8KQEAgLTcyLDcgKzcyLDcgQEAKIAogIzogZ2l0LWd1aS5zaDoxMTU0CiBtc2dpZCAiQ2Fubm90IHVzZSBiYXJlIHJlcG9zaXRvcnk6IgotbXNnc3RyICJMZWVyZXMgUHJvamVrdGFyY2hpdiBrYW5uIG5pY2h0IGJlbnV0enQgd2VyZGVuOiIKK21zZ3N0ciAiQmxvw59lcyBQcm9qZWt0YXJjaGl2IGthbm4gbmljaHQgYmVudXR6dCB3ZXJkZW46IgogCiAjOiBnaXQtZ3VpLnNoOjExNjIKIG1zZ2lkICJObyB3b3JraW5nIGRpcmVjdG9yeSIKQEAgLTg4LDcgKzg4LDcgQEAKIAogIzogZ2l0LWd1aS5zaDoxNDU0CiBtc2dpZCAiQ2FsbGluZyBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4uLiIKLW1zZ3N0ciAiQXVmcnVmZW4gZGVyIEVpbnRyYWdlbi1Wb3JiZXJlaXRlbi1Lb250cm9sbGUuLi4iCittc2dzdHIgIkF1ZnJ1ZmVuIGRlciBFaW50cmFnZW4tVm9yYmVyZWl0ZW4tS29udHJvbGxlICjCu3ByZXBhcmUtY29tbWl0IGhvb2vCqykuLi4iCiAKICM6IGdpdC1ndWkuc2g6MTQ3MQogbXNnaWQgIkNvbW1pdCBkZWNsaW5lZCBieSBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4iCkBAIC0xODgsNyArMTg4LDcgQEAKIAogIzogZ2l0LWd1aS5zaDoyNDY1IGxpYi9jaG9vc2VfcmV2LnRjbDo1NTcKIG1zZ2lkICJSZW1vdGUiCi1tc2dzdHIgIkFuZGVyZSBBcmNoaXZlIgorbXNnc3RyICJFeHRlcm5lIEFyY2hpdmUiCiAKICM6IGdpdC1ndWkuc2g6MjQ2OAogbXNnaWQgIlRvb2xzIgpAQCAtNDc4LDcgKzQ3OCw3IEBACiAKICM6IGdpdC1ndWkuc2g6MzMyOAogbXNnaWQgIlVzZSBSZW1vdGUgVmVyc2lvbiIKLW1zZ3N0ciAiRW50ZmVybnRlIFZlcnNpb24gYmVudXR6ZW4iCittc2dzdHIgIkV4dGVybmUgVmVyc2lvbiBiZW51dHplbiIKIAogIzogZ2l0LWd1aS5zaDozMzMyCiBtc2dpZCAiVXNlIExvY2FsIFZlcnNpb24iCkBAIC03NzEsNyArNzcxLDcgQEAKICM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDoxNDAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJUcmFja2luZyBicmFuY2ggJXMgaXMgbm90IGEgYnJhbmNoIGluIHRoZSByZW1vdGUgcmVwb3NpdG9yeS4iCi1tc2dzdHIgIsOcYmVybmFobWV6d2VpZyDCuyVzwqsgaXN0IGtlaW4gWndlaWcgaW0gYW5kZXJlbiBQcm9qZWt0YXJjaGl2LiIKK21zZ3N0ciAiw5xiZXJuYWhtZXp3ZWlnIMK7JXPCqyBpc3Qga2VpbiBad2VpZyBpbSBleHRlcm5lbiBQcm9qZWt0YXJjaGl2LiIKIAogIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjE1MyBsaWIvYnJhbmNoX3JlbmFtZS50Y2w6ODYKIG1zZ2lkICJQbGVhc2Ugc3VwcGx5IGEgYnJhbmNoIG5hbWUuIgpAQCAtMTQ0Niw3ICsxNDQ2LDcgQEAKIAogIzogbGliL2NvbW1pdC50Y2w6MjM0CiBtc2dpZCAiQ2FsbGluZyBwcmUtY29tbWl0IGhvb2suLi4iCi1tc2dzdHIgIkF1ZnJ1ZmVuIGRlciBWb3ItRWludHJhZ2VuLUtvbnRyb2xsZS4uLiIKK21zZ3N0ciAiQXVmcnVmZW4gZGVyIFZvci1FaW50cmFnZW4tS29udHJvbGxlICjCu3ByZS1jb21taXQgaG9va8KrKS4uLiIKIAogIzogbGliL2NvbW1pdC50Y2w6MjQ5CiBtc2dpZCAiQ29tbWl0IGRlY2xpbmVkIGJ5IHByZS1jb21taXQgaG9vay4iCkBAIC0xNDU0LDcgKzE0NTQsNyBAQAogCiAjOiBsaWIvY29tbWl0LnRjbDoyNzIKIG1zZ2lkICJDYWxsaW5nIGNvbW1pdC1tc2cgaG9vay4uLiIKLW1zZ3N0ciAiQXVmcnVmZW4gZGVyIFZlcnNpb25zYmVzY2hyZWlidW5ncy1Lb250cm9sbGUuLi4iCittc2dzdHIgIkF1ZnJ1ZmVuIGRlciBWZXJzaW9uc2Jlc2NocmVpYnVuZ3MtS29udHJvbGxlICjCu2NvbW1pdC1tZXNzYWdlIGhvb2vCqykuLi4iCiAKICM6IGxpYi9jb21taXQudGNsOjI4NwogbXNnaWQgIkNvbW1pdCBkZWNsaW5lZCBieSBjb21taXQtbXNnIGhvb2suIgpAQCAtMjEzNCwxMSArMjEzNCwxMSBAQAogCiAjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTkKIG1zZ2lkICJBZGQgUmVtb3RlIgotbXNnc3RyICJBbmRlcmVzIEFyY2hpdiBoaW56dWbDvGdlbiIKK21zZ3N0ciAiRXh0ZXJuZXMgQXJjaGl2IGhpbnp1ZsO8Z2VuIgogCiAjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjQKIG1zZ2lkICJBZGQgTmV3IFJlbW90ZSIKLW1zZ3N0ciAiTmV1ZXMgYW5kZXJlcyBBcmNoaXYgaGluenVmw7xnZW4iCittc2dzdHIgIk5ldWVzIGV4dGVybmVzIEFyY2hpdiBoaW56dWbDvGdlbiIKIAogIzogbGliL3JlbW90ZV9hZGQudGNsOjI4IGxpYi90b29sc19kbGcudGNsOjM2CiBtc2dpZCAiQWRkIgpAQCAtMjE0Niw3ICsyMTQ2LDcgQEAKIAogIzogbGliL3JlbW90ZV9hZGQudGNsOjM3CiBtc2dpZCAiUmVtb3RlIERldGFpbHMiCi1tc2dzdHIgIkVpbnplbGhlaXRlbiBkZXMgYW5kZXJlbiBBcmNoaXZzIgorbXNnc3RyICJFaW56ZWxoZWl0ZW4gZGVzIGV4dGVybmVuIEFyY2hpdnMiCiAKICM6IGxpYi9yZW1vdGVfYWRkLnRjbDo1MAogbXNnaWQgIkxvY2F0aW9uOiIKQEAgLTIxNjIsNyArMjE2Miw3IEBACiAKICM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3MQogbXNnaWQgIkluaXRpYWxpemUgUmVtb3RlIFJlcG9zaXRvcnkgYW5kIFB1c2giCi1tc2dzdHIgIkFuZGVyZXMgQXJjaGl2IGluaXRpYWxpc2llcmVuIHVuZCBkYWhpbiB2ZXJzZW5kZW4iCittc2dzdHIgIkV4dGVybmVzIEFyY2hpdiBpbml0aWFsaXNpZXJlbiB1bmQgZGFoaW4gdmVyc2VuZGVuIgogCiAjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NzcKIG1zZ2lkICJEbyBOb3RoaW5nIEVsc2UgTm93IgpAQCAtMjE3MCwxNyArMjE3MCwxNyBAQAogCiAjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTAxCiBtc2dpZCAiUGxlYXNlIHN1cHBseSBhIHJlbW90ZSBuYW1lLiIKLW1zZ3N0ciAiQml0dGUgZ2ViZW4gU2llIGVpbmVuIE5hbWVuIGRlcyBhbmRlcmVuIEFyY2hpdnMgYW4uIgorbXNnc3RyICJCaXR0ZSBnZWJlbiBTaWUgZWluZW4gTmFtZW4gZGVzIGV4dGVybmVuIEFyY2hpdnMgYW4uIgogCiAjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTE0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiJyVzJyBpcyBub3QgYW4gYWNjZXB0YWJsZSByZW1vdGUgbmFtZS4iCi1tc2dzdHIgIsK7JXPCqyBpc3Qga2VpbiB6dWzDpHNzaWdlciBOYW1lIGVpbmVzIGFuZGVyZW4gQXJjaGl2cy4iCittc2dzdHIgIsK7JXPCqyBpc3Qga2VpbiB6dWzDpHNzaWdlciBOYW1lIGVpbmVzIGV4dGVybmVuIEFyY2hpdnMuIgogCiAjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTI1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGFkZCByZW1vdGUgJyVzJyBvZiBsb2NhdGlvbiAnJXMnLiIKLW1zZ3N0ciAiRmVobGVyIGJlaW0gSGluenVmw7xnZW4gZGVzIGFuZGVyZW4gQXJjaGl2cyDCuyVzwqsgYXVzIEhlcmt1bmZ0c29ydCDCuyVzwqsuIgorbXNnc3RyICJGZWhsZXIgYmVpbSBIaW56dWbDvGdlbiBkZXMgZXh0ZXJuZW4gQXJjaGl2cyDCuyVzwqsgYXVzIEhlcmt1bmZ0c29ydCDCuyVzwqsuIgogCiAjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTMzIGxpYi90cmFuc3BvcnQudGNsOjYKICMsIHRjbC1mb3JtYXQKQEAgLTIxOTUsNyArMjE5NSw3IEBACiAjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTU3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRG8gbm90IGtub3cgaG93IHRvIGluaXRpYWxpemUgcmVwb3NpdG9yeSBhdCBsb2NhdGlvbiAnJXMnLiIKLW1zZ3N0ciAiSW5pdGlhbGlzaWVyZW4gZWluZXMgYW5kZXJlbiBBcmNoaXZzIGFuIEFkcmVzc2Ugwrslc8KrIGlzdCBuaWNodCBtw7ZnbGljaC4iCittc2dzdHIgIkluaXRpYWxpc2llcmVuIGVpbmVzIGV4dGVybmVuIEFyY2hpdnMgYW4gQWRyZXNzZSDCuyVzwqsgaXN0IG5pY2h0IG3DtmdsaWNoLiIKIAogIzogbGliL3JlbW90ZV9hZGQudGNsOjE2MyBsaWIvdHJhbnNwb3J0LnRjbDoyNSBsaWIvdHJhbnNwb3J0LnRjbDo2MwogIzogbGliL3RyYW5zcG9ydC50Y2w6ODEKQEAgLTIyMTAsNyArMjIxMCw3IEBACiAKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MjkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDozNAogbXNnaWQgIkRlbGV0ZSBCcmFuY2ggUmVtb3RlbHkiCi1tc2dzdHIgIlp3ZWlnIGluIGFuZGVyZW0gQXJjaGl2IGzDtnNjaGVuIgorbXNnc3RyICJad2VpZyBpbiBleHRlcm5lbSBBcmNoaXYgbMO2c2NoZW4iCiAKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDcKIG1zZ2lkICJGcm9tIFJlcG9zaXRvcnkiCkBAIC0yMjE4LDcgKzIyMTgsNyBAQAogCiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjUwIGxpYi90cmFuc3BvcnQudGNsOjEzNAogbXNnaWQgIlJlbW90ZToiCi1tc2dzdHIgIkFuZGVyZXMgQXJjaGl2OiIKK21zZ3N0ciAiRXh0ZXJuZXMgQXJjaGl2OiIKIAogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo2NiBsaWIvdHJhbnNwb3J0LnRjbDoxNDkKIG1zZ2lkICJBcmJpdHJhcnkgTG9jYXRpb246IgpAQCAtMjI4MSw3ICsyMjgxLDcgQEAKIAogIzogbGliL3JlbW90ZS50Y2w6MTYzCiBtc2dpZCAiUmVtb3ZlIFJlbW90ZSIKLW1zZ3N0ciAiQW5kZXJlcyBBcmNoaXYgZW50ZmVybmVuIgorbXNnc3RyICJFeHRlcm5lcyBBcmNoaXYgZW50ZmVybmVuIgogCiAjOiBsaWIvcmVtb3RlLnRjbDoxNjgKIG1zZ2lkICJQcnVuZSBmcm9tIgpAQCAtMjM5Nyw3ICsyMzk3LDcgQEAKIG1zZ3N0ciAiU2NobMO8c3NlbGVyemV1Z3VuZyBmZWhsZ2VzY2hsYWdlbi4iCiAKICM6IGxpYi9zc2hrZXkudGNsOjExOAotbXNnaWQgIkdlbmVyYXRpb24gc3VjY2VkZWQsIGJ1dCBubyBrZXlzIGZvdW5kLiIKK21zZ2lkICJHZW5lcmF0aW9uIHN1Y2NlZWRlZCwgYnV0IG5vIGtleXMgZm91bmQuIgogbXNnc3RyICJTY2hsw7xzc2VsZXJ6ZXVndW5nIGVyZm9sZ3JlaWNoLCBhYmVyIGtlaW5lIFNjaGzDvHNzZWwgZ2VmdW5kZW4uIgogCiAjOiBsaWIvc3Noa2V5LnRjbDoxMjEKZGlmZiAtLWdpdCBhL2dpdC1ndWkvcG8vZnIucG8gYi9naXQtZ3VpL3BvL2ZyLnBvCmluZGV4IDgxNzA2OTYuLjQwNDQxZGIgMTAwNjQ0Ci0tLSBhL2dpdC1ndWkvcG8vZnIucG8KKysrIGIvZ2l0LWd1aS9wby9mci5wbwpAQCAtMjM5OSw3ICsyMzk5LDcgQEAKIG1zZ3N0ciAiTGEgZ8OpbsOpcmF0aW9uIGEgw6ljaG91w6kuIgogCiAjOiBsaWIvc3Noa2V5LnRjbDoxMTgKLW1zZ2lkICJHZW5lcmF0aW9uIHN1Y2NlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCittc2dpZCAiR2VuZXJhdGlvbiBzdWNjZWVkZWQsIGJ1dCBubyBrZXlzIGZvdW5kLiIKIG1zZ3N0ciAiTGEgZ8OpbsOpcmF0aW9uIGEgcsOpdXNzaSwgbWFpcyBhdWN1bmUgY2zDqSBuJ2Egw6l0w6kgdHJvdXbDqWUuIgogCiAjOiBsaWIvc3Noa2V5LnRjbDoxMjEKZGlmZiAtLWdpdCBhL2dpdC1ndWkvcG8vZ2l0LWd1aS5wb3QgYi9naXQtZ3VpL3BvL2dpdC1ndWkucG90CmluZGV4IDFhZTJhYWEuLjBjOTRmOWMgMTAwNjQ0Ci0tLSBhL2dpdC1ndWkvcG8vZ2l0LWd1aS5wb3QKKysrIGIvZ2l0LWd1aS9wby9naXQtZ3VpLnBvdApAQCAtMjIwMyw3ICsyMjAzLDcgQEAKIG1zZ3N0ciAiIgogCiAjOiBsaWIvc3Noa2V5LnRjbDoxMTgKLW1zZ2lkICJHZW5lcmF0aW9uIHN1Y2NlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCittc2dpZCAiR2VuZXJhdGlvbiBzdWNjZWVkZWQsIGJ1dCBubyBrZXlzIGZvdW5kLiIKIG1zZ3N0ciAiIgogCiAjOiBsaWIvc3Noa2V5LnRjbDoxMjEKZGlmZiAtLWdpdCBhL2dpdC1ndWkvcG8vaHUucG8gYi9naXQtZ3VpL3BvL2h1LnBvCmluZGV4IDBmODdiYzEuLmQxMDZkYWQgMTAwNjQ0Ci0tLSBhL2dpdC1ndWkvcG8vaHUucG8KKysrIGIvZ2l0LWd1aS9wby9odS5wbwpAQCAtMjM1NCw3ICsyMzU0LDcgQEAKIG1zZ3N0ciAiQSBnZW5lcsOhbMOhcyBuZW0gc2lrZXLDvGx0LiIKIAogIzogbGliL3NzaGtleS50Y2w6MTE4Ci1tc2dpZCAiR2VuZXJhdGlvbiBzdWNjZWRlZCwgYnV0IG5vIGtleXMgZm91bmQuIgorbXNnaWQgIkdlbmVyYXRpb24gc3VjY2VlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCiBtc2dzdHIgIkEgZ2VuZXLDoWzDoXMgc2lrZXJlcywgZGUgZWd5IGt1bGNzIHNlIHRhbMOhbGhhdMOzLiIKIAogIzogbGliL3NzaGtleS50Y2w6MTIxCmRpZmYgLS1naXQgYS9naXQtZ3VpL3BvL2l0LnBvIGIvZ2l0LWd1aS9wby9pdC5wbwppbmRleCBhYTE1YTIwLi4xYmQ4YjhlIDEwMDY0NAotLS0gYS9naXQtZ3VpL3BvL2l0LnBvCisrKyBiL2dpdC1ndWkvcG8vaXQucG8KQEAgLTIzOTcsNyArMjM5Nyw3IEBACiBtc2dzdHIgIkVycm9yZSBkdXJhbnRlIGxhIGNyZWF6aW9uZSBkZWxsYSBjaGlhdmUuIgogCiAjOiBsaWIvc3Noa2V5LnRjbDoxMTgKLW1zZ2lkICJHZW5lcmF0aW9uIHN1Y2NlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCittc2dpZCAiR2VuZXJhdGlvbiBzdWNjZWVkZWQsIGJ1dCBubyBrZXlzIGZvdW5kLiIKIG1zZ3N0ciAiTGEgY2hpYXZlIMOoIHN0YXRhIGNyZWF0YSBjb24gc3VjY2Vzc28sIG1hIG5vbiDDqCBzdGF0YSB0cm92YXRhLiIKIAogIzogbGliL3NzaGtleS50Y2w6MTIxCmRpZmYgLS1naXQgYS9naXQtZ3VpL3BvL2phLnBvIGIvZ2l0LWd1aS9wby9qYS5wbwppbmRleCAxNTAxNzk4Li45YWZmMjQ5IDEwMDY0NAotLS0gYS9naXQtZ3VpL3BvL2phLnBvCisrKyBiL2dpdC1ndWkvcG8vamEucG8KQEAgLTIzNjIsNyArMjM2Miw3IEBACiBtc2dzdHIgIueUn+aIkOOBq+WkseaVl+OBl+OBvuOBl+OBn+OAgiIKIAogIzogbGliL3NzaGtleS50Y2w6MTE4Ci1tc2dpZCAiR2VuZXJhdGlvbiBzdWNjZWRlZCwgYnV0IG5vIGtleXMgZm91bmQuIgorbXNnaWQgIkdlbmVyYXRpb24gc3VjY2VlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCiBtc2dzdHIgIueUn+aIkOOBq+OBr+aIkOWKn+OBl+OBvuOBl+OBn+OBjOOAgemNteOBjOimi+OBpOOBi+OCiuOBvuOBm+OCk+OAgiIKIAogIzogbGliL3NzaGtleS50Y2w6MTIxCmRpZmYgLS1naXQgYS9naXQtZ3VpL3BvL25iLnBvIGIvZ2l0LWd1aS9wby9uYi5wbwppbmRleCA2ZGU5M2MyLi5kNjZhYTUwIDEwMDY0NAotLS0gYS9naXQtZ3VpL3BvL25iLnBvCisrKyBiL2dpdC1ndWkvcG8vbmIucG8KQEAgLTIyODYsNyArMjI4Niw3IEBACiBtc2dzdHIgIkdlbmVyZXJpbmcgZmVpbGV0LiIKIAogIzogbGliL3NzaGtleS50Y2w6MTE4Ci1tc2dpZCAiR2VuZXJhdGlvbiBzdWNjZWRlZCwgYnV0IG5vIGtleXMgZm91bmQuIgorbXNnaWQgIkdlbmVyYXRpb24gc3VjY2VlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCiBtc2dzdHIgIkdlbmVyZXJpbmcgdmVsbHlra2V0LCBtZW4gaW5nZW4gbsO4a2xlciBlciBmdW5uZXQuIgogCiAjOiBsaWIvc3Noa2V5LnRjbDoxMjEKZGlmZiAtLWdpdCBhL2dpdC1ndWkvcG8vcHRfYnIucG8gYi9naXQtZ3VpL3BvL3B0X2JyLnBvCmluZGV4IGIxNzViOTcuLmJhZDExNmMgMTAwNjQ0Ci0tLSBhL2dpdC1ndWkvcG8vcHRfYnIucG8KKysrIGIvZ2l0LWd1aS9wby9wdF9ici5wbwpAQCAtMjM3NSw3ICsyMzc1LDcgQEAKIG1zZ3N0ciAiQSBnZXJhw6fDo28gZGEgY2hhdmUgZmFsaG91LiIKIAogIzogbGliL3NzaGtleS50Y2w6MTE4Ci1tc2dpZCAiR2VuZXJhdGlvbiBzdWNjZWRlZCwgYnV0IG5vIGtleXMgZm91bmQuIgorbXNnaWQgIkdlbmVyYXRpb24gc3VjY2VlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCiBtc2dzdHIgIkEgZ2VyYcOnw6NvIGRhIGNoYXZlIGZvaSBiZW0tc3VjZWRpZGEsIG1hcyBuZW5odW1hIGNoYXZlIGZvaSBlbmNvbnRyYWRhLiIKIAogIzogbGliL3NzaGtleS50Y2w6MTIxCmRpZmYgLS1naXQgYS9naXQtZ3VpL3BvL3J1LnBvIGIvZ2l0LWd1aS9wby9ydS5wbwppbmRleCAzMGY0Yjc3Li5jYTQzNDNiIDEwMDY0NAotLS0gYS9naXQtZ3VpL3BvL3J1LnBvCisrKyBiL2dpdC1ndWkvcG8vcnUucG8KQEAgLTIzNzAsNyArMjM3MCw3IEBACiBtc2dzdHIgItCa0LvRjtGHINC90LUg0YHQvtC30LTQsNC9LiIKIAogIzogbGliL3NzaGtleS50Y2w6MTE4Ci1tc2dpZCAiR2VuZXJhdGlvbiBzdWNjZWRlZCwgYnV0IG5vIGtleXMgZm91bmQuIgorbXNnaWQgIkdlbmVyYXRpb24gc3VjY2VlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCiBtc2dzdHIgItCh0L7Qt9C00LDQvdC40LUg0LrQu9GO0YfQsCDQt9Cw0LLQtdGA0YjQuNC70L7RgdGMLCDQvdC+INGA0LXQt9GD0LvRjNGC0LDRgiDQvdC1INCx0YvQuyDQvdCw0LnQtNC10L0iCiAKICM6IGxpYi9zc2hrZXkudGNsOjEyMQpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9wby9zdi5wbyBiL2dpdC1ndWkvcG8vc3YucG8KaW5kZXggMjRjYzRlMy4uZmNiMDYzZiAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9wby9zdi5wbworKysgYi9naXQtZ3VpL3BvL3N2LnBvCkBAIC0yMzgyLDcgKzIzODIsNyBAQAogbXNnc3RyICJNaXNzbHlja2FkZXMgbWVkIGF0dCBza2FwYS4iCiAKICM6IGxpYi9zc2hrZXkudGNsOjEyMAotbXNnaWQgIkdlbmVyYXRpb24gc3VjY2VkZWQsIGJ1dCBubyBrZXlzIGZvdW5kLiIKK21zZ2lkICJHZW5lcmF0aW9uIHN1Y2NlZWRlZCwgYnV0IG5vIGtleXMgZm91bmQuIgogbXNnc3RyICJMeWNrYWRlcyBza2FwYSBueWNrZWxuLCBtZW4gaGl0dGFyIGludGUgbsOlZ29uIG55Y2tlbC4iCiAKICM6IGxpYi9zc2hrZXkudGNsOjEyMwpkaWZmIC0tZ2l0IGEvZ2l0LW1lcmdlLW9uZS1maWxlLnNoIGIvZ2l0LW1lcmdlLW9uZS1maWxlLnNoCmluZGV4IGY2MTJjYjguLjA3ZGZlYjggMTAwNzU1Ci0tLSBhL2dpdC1tZXJnZS1vbmUtZmlsZS5zaAorKysgYi9naXQtbWVyZ2Utb25lLWZpbGUuc2gKQEAgLTE4LDcgKzE4LDcgQEAKIAogVVNBR0U9JzxvcmlnIGJsb2I+IDxvdXIgYmxvYj4gPHRoZWlyIGJsb2I+IDxwYXRoPicKIFVTQUdFPSIkVVNBR0UgPG9yaWcgbW9kZT4gPG91ciBtb2RlPiA8dGhlaXIgbW9kZT4iCi1MT05HX1VTQUdFPSJVc2FnZTogZ2l0IG1lcmdlLW9uZS1maWxlICRVU0FHRQorTE9OR19VU0FHRT0idXNhZ2U6IGdpdCBtZXJnZS1vbmUtZmlsZSAkVVNBR0UKIAogQmxvYiBpZHMgYW5kIG1vZGVzIHNob3VsZCBiZSBlbXB0eSBmb3IgbWlzc2luZyBmaWxlcy4iCiAKQEAgLTI3LDcgKzI3LDcgQEAKIGNkX3RvX3RvcGxldmVsCiByZXF1aXJlX3dvcmtfdHJlZQogCi1pZiAhIHRlc3QgIiQjIiAtZXEgNworaWYgdGVzdCAkIyAhPSA3CiB0aGVuCiAJZWNobyAiJExPTkdfVVNBR0UiCiAJZXhpdCAxCkBAIC0zOCw3ICszOCw4IEBACiAjIERlbGV0ZWQgaW4gYm90aCBvciBkZWxldGVkIGluIG9uZSBhbmQgdW5jaGFuZ2VkIGluIHRoZSBvdGhlcgogIwogIiQxLi4iIHwgIiQxLiQxIiB8ICIkMSQxLiIpCi0JaWYgWyAiJDIiIF07IHRoZW4KKwlpZiB0ZXN0IC1uICIkMiIKKwl0aGVuCiAJCWVjaG8gIlJlbW92aW5nICQ0IgogCWVsc2UKIAkJIyByZWFkLXRyZWUgY2hlY2tlZCB0aGF0IGluZGV4IG1hdGNoZXMgSEVBRCBhbHJlYWR5LApAQCAtNDgsNyArNDksOCBAQAogCQkjIHdlIGRvIG5vdCBoYXZlIGl0IGluIHRoZSBpbmRleCwgdGhvdWdoLgogCQlleGVjIGdpdCB1cGRhdGUtaW5kZXggLS1yZW1vdmUgLS0gIiQ0IgogCWZpCi0JaWYgdGVzdCAtZiAiJDQiOyB0aGVuCisJaWYgdGVzdCAtZiAiJDQiCisJdGhlbgogCQlybSAtZiAtLSAiJDQiICYmCiAJCXJtZGlyIC1wICIkKGV4cHIgInokNCIgOiAnelwoLipcKS8nKSIgMj4vZGV2L251bGwgfHwgOgogCWZpICYmCkBAIC02Nyw3ICs2OSw3IEBACiAJZWNobyAiQWRkaW5nICQ0IgogCWlmIHRlc3QgLWYgIiQ0IgogCXRoZW4KLQkJZWNobyAiRVJST1I6IHVudHJhY2tlZCAkNCBpcyBvdmVyd3JpdHRlbiBieSB0aGUgbWVyZ2UuIgorCQllY2hvICJFUlJPUjogdW50cmFja2VkICQ0IGlzIG92ZXJ3cml0dGVuIGJ5IHRoZSBtZXJnZS4iID4mMgogCQlleGl0IDEKIAlmaQogCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgLS1jYWNoZWluZm8gIiQ3IiAiJDMiICIkNCIgJiYKQEAgLTc4LDkgKzgwLDEwIEBACiAjIEFkZGVkIGluIGJvdGgsIGlkZW50aWNhbGx5IChjaGVjayBmb3Igc2FtZSBwZXJtaXNzaW9ucykuCiAjCiAiLiQzJDIiKQotCWlmIFsgIiQ2IiAhPSAiJDciIF07IHRoZW4KLQkJZWNobyAiRVJST1I6IEZpbGUgJDQgYWRkZWQgaWRlbnRpY2FsbHkgaW4gYm90aCBicmFuY2hlcywiCi0JCWVjaG8gIkVSUk9SOiBidXQgcGVybWlzc2lvbnMgY29uZmxpY3QgJDYtPiQ3LiIKKwlpZiB0ZXN0ICIkNiIgIT0gIiQ3IgorCXRoZW4KKwkJZWNobyAiRVJST1I6IEZpbGUgJDQgYWRkZWQgaWRlbnRpY2FsbHkgaW4gYm90aCBicmFuY2hlcywiID4mMgorCQllY2hvICJFUlJPUjogYnV0IHBlcm1pc3Npb25zIGNvbmZsaWN0ICQ2LT4kNy4iID4mMgogCQlleGl0IDEKIAlmaQogCWVjaG8gIkFkZGluZyAkNCIKQEAgLTk1LDQ0ICs5OCwzNiBAQAogCiAJY2FzZSAiLCQ2LCQ3LCIgaW4KIAkqLDEyMDAwMCwqKQotCQllY2hvICJFUlJPUjogJDQ6IE5vdCBtZXJnaW5nIHN5bWJvbGljIGxpbmsgY2hhbmdlcy4iCisJCWVjaG8gIkVSUk9SOiAkNDogTm90IG1lcmdpbmcgc3ltYm9saWMgbGluayBjaGFuZ2VzLiIgPiYyCiAJCWV4aXQgMQogCQk7OwogCSosMTYwMDAwLCopCi0JCWVjaG8gIkVSUk9SOiAkNDogTm90IG1lcmdpbmcgY29uZmxpY3Rpbmcgc3VibW9kdWxlIGNoYW5nZXMuIgorCQllY2hvICJFUlJPUjogJDQ6IE5vdCBtZXJnaW5nIGNvbmZsaWN0aW5nIHN1Ym1vZHVsZSBjaGFuZ2VzLiIgPiYyCiAJCWV4aXQgMQogCQk7OwogCWVzYWMKIAotCXNyYzI9YGdpdC11bnBhY2stZmlsZSAkM2AKKwlzcmMxPSQoZ2l0LXVucGFjay1maWxlICQyKQorCXNyYzI9JChnaXQtdW5wYWNrLWZpbGUgJDMpCiAJY2FzZSAiJDEiIGluCiAJJycpCiAJCWVjaG8gIkFkZGVkICQ0IGluIGJvdGgsIGJ1dCBkaWZmZXJlbnRseS4iCi0JCSMgVGhpcyBleHRyYWN0cyBPVVIgZmlsZSBpbiAkb3JpZywgYW5kIHVzZXMgZ2l0IGFwcGx5IHRvCi0JCSMgcmVtb3ZlIGxpbmVzIHRoYXQgYXJlIHVuaXF1ZSB0byBvdXJzLgotCQlvcmlnPWBnaXQtdW5wYWNrLWZpbGUgJDJgCi0JCXN6MD1gd2MgLWMgPCIkb3JpZyJgCi0JCUBARElGRkBAIC11IC1MYS8kb3JpZyAtTGIvJG9yaWcgJG9yaWcgJHNyYzIgfCBnaXQgYXBwbHkgLS1uby1hZGQKLQkJc3oxPWB3YyAtYyA8IiRvcmlnImAKLQotCQkjIElmIHdlIGRvIG5vdCBoYXZlIGVub3VnaCBjb21tb24gbWF0ZXJpYWwsIGl0IGlzIG5vdAotCQkjIHdvcnRoIHRyeWluZyB0d28tZmlsZSBtZXJnZSB1c2luZyBjb21tb24gc3Vic2VjdGlvbnMuCi0JCWV4cHIgJHN6MCBcPCAkc3oxIFwqIDIgPi9kZXYvbnVsbCB8fCA6ID4kb3JpZworCQlvcmlnPSQoZ2l0LXVucGFjay1maWxlICQyKQorCQljcmVhdGVfdmlydHVhbF9iYXNlICIkb3JpZyIgIiRzcmMyIgogCQk7OwogCSopCiAJCWVjaG8gIkF1dG8tbWVyZ2luZyAkNCIKLQkJb3JpZz1gZ2l0LXVucGFjay1maWxlICQxYAorCQlvcmlnPSQoZ2l0LXVucGFjay1maWxlICQxKQogCQk7OwogCWVzYWMKIAotCSMgQmUgY2FyZWZ1bCBmb3IgZnVubnkgZmlsZW5hbWUgc3VjaCBhcyAiLUwiIGluICIkNCIsIHdoaWNoCi0JIyB3b3VsZCBjb25mdXNlICJtZXJnZSIgZ3JlYXRseS4KLQlzcmMxPWBnaXQtdW5wYWNrLWZpbGUgJDJgCiAJZ2l0IG1lcmdlLWZpbGUgIiRzcmMxIiAiJG9yaWciICIkc3JjMiIKIAlyZXQ9JD8KIAltc2c9Ci0JaWYgWyAkcmV0IC1uZSAwIF07IHRoZW4KKwlpZiB0ZXN0ICRyZXQgIT0gMCB8fCB0ZXN0IC16ICIkMSIKKwl0aGVuCiAJCW1zZz0nY29udGVudCBjb25mbGljdCcKKwkJcmV0PTEKIAlmaQogCiAJIyBDcmVhdGUgdGhlIHdvcmtpbmcgdHJlZSBmaWxlLCB1c2luZyAib3VyIHRyZWUiIHZlcnNpb24gZnJvbSB0aGUKQEAgLTE0MCwyNiArMTM1LDI2IEBACiAJZ2l0IGNoZWNrb3V0LWluZGV4IC1mIC0tc3RhZ2U9MiAtLSAiJDQiICYmIGNhdCAiJHNyYzEiID4iJDQiIHx8IGV4aXQgMQogCXJtIC1mIC0tICIkb3JpZyIgIiRzcmMxIiAiJHNyYzIiCiAKLQlpZiBbICIkNiIgIT0gIiQ3IiBdOyB0aGVuCi0JCWlmIFsgLW4gIiRtc2ciIF07IHRoZW4KKwlpZiB0ZXN0ICIkNiIgIT0gIiQ3IgorCXRoZW4KKwkJaWYgdGVzdCAtbiAiJG1zZyIKKwkJdGhlbgogCQkJbXNnPSIkbXNnLCAiCiAJCWZpCiAJCW1zZz0iJHttc2d9cGVybWlzc2lvbnMgY29uZmxpY3Q6ICQ1LT4kNiwkNyIKIAkJcmV0PTEKIAlmaQotCWlmIFsgIiQxIiA9ICcnIF07IHRoZW4KLQkJcmV0PTEKLQlmaQogCi0JaWYgWyAkcmV0IC1uZSAwIF07IHRoZW4KLQkJZWNobyAiRVJST1I6ICRtc2cgaW4gJDQiCisJaWYgdGVzdCAkcmV0ICE9IDAKKwl0aGVuCisJCWVjaG8gIkVSUk9SOiAkbXNnIGluICQ0IiA+JjIKIAkJZXhpdCAxCiAJZmkKIAlleGVjIGdpdCB1cGRhdGUtaW5kZXggLS0gIiQ0IgogCTs7CiAKICopCi0JZWNobyAiRVJST1I6ICQ0OiBOb3QgaGFuZGxpbmcgY2FzZSAkMSAtPiAkMiAtPiAkMyIKKwllY2hvICJFUlJPUjogJDQ6IE5vdCBoYW5kbGluZyBjYXNlICQxIC0+ICQyIC0+ICQzIiA+JjIKIAk7OwogZXNhYwogZXhpdCAxCmRpZmYgLS1naXQgYS9naXQtbWVyZ2V0b29sLS1saWIuc2ggYi9naXQtbWVyZ2V0b29sLS1saWIuc2gKaW5kZXggZWQ2MzBiMi4uZTMzOGJlNSAxMDA2NDQKLS0tIGEvZ2l0LW1lcmdldG9vbC0tbGliLnNoCisrKyBiL2dpdC1tZXJnZXRvb2wtLWxpYi5zaApAQCAtMSw1ICsxLDgzIEBACiAjIS9iaW4vc2gKICMgZ2l0LW1lcmdldG9vbC0tbGliIGlzIGEgbGlicmFyeSBmb3IgY29tbW9uIG1lcmdlIHRvb2wgZnVuY3Rpb25zCisKKzogJHtNRVJHRV9UT09MU19ESVI9JChnaXQgLS1leGVjLXBhdGgpL21lcmdldG9vbHN9CisKK21vZGVfb2sgKCkgeworCWlmIGRpZmZfbW9kZQorCXRoZW4KKwkJY2FuX2RpZmYKKwllbGlmIG1lcmdlX21vZGUKKwl0aGVuCisJCWNhbl9tZXJnZQorCWVsc2UKKwkJZmFsc2UKKwlmaQorfQorCitpc19hdmFpbGFibGUgKCkgeworCW1lcmdlX3Rvb2xfcGF0aD0kKHRyYW5zbGF0ZV9tZXJnZV90b29sX3BhdGggIiQxIikgJiYKKwl0eXBlICIkbWVyZ2VfdG9vbF9wYXRoIiA+L2Rldi9udWxsIDI+JjEKK30KKworbGlzdF9jb25maWdfdG9vbHMgKCkgeworCXNlY3Rpb249JDEKKwlsaW5lX3ByZWZpeD0kezI6LX0KKworCWdpdCBjb25maWcgLS1nZXQtcmVnZXhwICRzZWN0aW9uJ1wuLipcLmNtZCcgfAorCXdoaWxlIHJlYWQgLXIga2V5IHZhbHVlCisJZG8KKwkJdG9vbG5hbWU9JHtrZXkjJHNlY3Rpb24ufQorCQl0b29sbmFtZT0ke3Rvb2xuYW1lJS5jbWR9CisKKwkJcHJpbnRmICIlcyVzXG4iICIkbGluZV9wcmVmaXgiICIkdG9vbG5hbWUiCisJZG9uZQorfQorCitzaG93X3Rvb2xfbmFtZXMgKCkgeworCWNvbmRpdGlvbj0kezE6LXRydWV9IHBlcl9saW5lX3ByZWZpeD0kezI6LX0gcHJlYW1ibGU9JHszOi19CisJbm90X2ZvdW5kX21zZz0kezQ6LX0KKwlleHRyYV9jb250ZW50PSR7NTotfQorCisJc2hvd25fYW55PQorCSggY2QgIiRNRVJHRV9UT09MU19ESVIiICYmIGxzICkgfCB7CisJCXdoaWxlIHJlYWQgdG9vbG5hbWUKKwkJZG8KKwkJCWlmIHNldHVwX3Rvb2wgIiR0b29sbmFtZSIgMj4vZGV2L251bGwgJiYKKwkJCQkoZXZhbCAiJGNvbmRpdGlvbiIgIiR0b29sbmFtZSIpCisJCQl0aGVuCisJCQkJaWYgdGVzdCAtbiAiJHByZWFtYmxlIgorCQkJCXRoZW4KKwkJCQkJcHJpbnRmICIlc1xuIiAiJHByZWFtYmxlIgorCQkJCQlwcmVhbWJsZT0KKwkJCQlmaQorCQkJCXNob3duX2FueT15ZXMKKwkJCQlwcmludGYgIiVzJXNcbiIgIiRwZXJfbGluZV9wcmVmaXgiICIkdG9vbG5hbWUiCisJCQlmaQorCQlkb25lCisKKwkJaWYgdGVzdCAtbiAiJGV4dHJhX2NvbnRlbnQiCisJCXRoZW4KKwkJCWlmIHRlc3QgLW4gIiRwcmVhbWJsZSIKKwkJCXRoZW4KKwkJCQkjIE5vdGU6IG5vICdcbicgaGVyZSBzaW5jZSB3ZSBkb24ndCB3YW50IGEKKwkJCQkjIGJsYW5rIGxpbmUgaWYgdGhlcmUgaXMgbm8gaW5pdGlhbCBjb250ZW50LgorCQkJCXByaW50ZiAiJXMiICIkcHJlYW1ibGUiCisJCQkJcHJlYW1ibGU9CisJCQlmaQorCQkJc2hvd25fYW55PXllcworCQkJcHJpbnRmICJcbiVzXG4iICIkZXh0cmFfY29udGVudCIKKwkJZmkKKworCQlpZiB0ZXN0IC1uICIkcHJlYW1ibGUiICYmIHRlc3QgLW4gIiRub3RfZm91bmRfbXNnIgorCQl0aGVuCisJCQlwcmludGYgIiVzXG4iICIkbm90X2ZvdW5kX21zZyIKKwkJZmkKKworCQl0ZXN0IC1uICIkc2hvd25fYW55IgorCX0KK30KKwogZGlmZl9tb2RlKCkgewogCXRlc3QgIiRUT09MX01PREUiID0gZGlmZgogfQpAQCAtMzAsNjEgKzEwOCw3MCBAQAogCWZpCiB9CiAKLXZhbGlkX3Rvb2xfY29uZmlnICgpIHsKLQlpZiB0ZXN0IC1uICIkKGdldF9tZXJnZV90b29sX2NtZCAiJDEiKSIKLQl0aGVuCi0JCXJldHVybiAwCi0JZWxzZQotCQlyZXR1cm4gMQotCWZpCi19Ci0KIHZhbGlkX3Rvb2wgKCkgewotCXNldHVwX3Rvb2wgIiQxIiB8fCB2YWxpZF90b29sX2NvbmZpZyAiJDEiCisJc2V0dXBfdG9vbCAiJDEiICYmIHJldHVybiAwCisJY21kPSQoZ2V0X21lcmdlX3Rvb2xfY21kICIkMSIpCisJdGVzdCAtbiAiJGNtZCIKIH0KIAogc2V0dXBfdG9vbCAoKSB7Ci0JY2FzZSAiJDEiIGluCi0JdmltKnxndmltKikKLQkJdG9vbD12aW0KLQkJOzsKLQkqKQotCQl0b29sPSIkMSIKLQkJOzsKLQllc2FjCi0JbWVyZ2V0b29scz0iJChnaXQgLS1leGVjLXBhdGgpL21lcmdldG9vbHMiCisJdG9vbD0iJDEiCiAKLQkjIExvYWQgdGhlIGRlZmF1bHQgZGVmaW5pdGlvbnMKLQkuICIkbWVyZ2V0b29scy9kZWZhdWx0cyIKLQlpZiAhIHRlc3QgLWYgIiRtZXJnZXRvb2xzLyR0b29sIgorCSMgRmFsbGJhY2sgZGVmaW5pdGlvbnMsIHRvIGJlIG92ZXJyaWRlbiBieSB0b29scy4KKwljYW5fbWVyZ2UgKCkgeworCQlyZXR1cm4gMAorCX0KKworCWNhbl9kaWZmICgpIHsKKwkJcmV0dXJuIDAKKwl9CisKKwlkaWZmX2NtZCAoKSB7CisJCXN0YXR1cz0xCisJCXJldHVybiAkc3RhdHVzCisJfQorCisJbWVyZ2VfY21kICgpIHsKKwkJc3RhdHVzPTEKKwkJcmV0dXJuICRzdGF0dXMKKwl9CisKKwl0cmFuc2xhdGVfbWVyZ2VfdG9vbF9wYXRoICgpIHsKKwkJZWNobyAiJDEiCisJfQorCisJaWYgISB0ZXN0IC1mICIkTUVSR0VfVE9PTFNfRElSLyR0b29sIgogCXRoZW4KLQkJcmV0dXJuIDEKKwkJIyBVc2UgYSBzcGVjaWFsIHJldHVybiBjb2RlIGZvciB0aGlzIGNhc2Ugc2luY2Ugd2Ugd2FudCB0bworCQkjIHNvdXJjZSAiZGVmYXVsdHMiIGV2ZW4gd2hlbiBhbiBleHBsaWNpdCB0b29sIHBhdGggaXMKKwkJIyBjb25maWd1cmVkIHNpbmNlIHRoZSB1c2VyIGNhbiB1c2UgdGhhdCB0byBvdmVycmlkZSB0aGUKKwkJIyBkZWZhdWx0IHBhdGggaW4gdGhlIHNjcmlwdGxldC4KKwkJcmV0dXJuIDIKIAlmaQogCiAJIyBMb2FkIHRoZSByZWRlZmluZWQgZnVuY3Rpb25zCi0JLiAiJG1lcmdldG9vbHMvJHRvb2wiCisJLiAiJE1FUkdFX1RPT0xTX0RJUi8kdG9vbCIKIAogCWlmIG1lcmdlX21vZGUgJiYgISBjYW5fbWVyZ2UKIAl0aGVuCiAJCWVjaG8gImVycm9yOiAnJHRvb2wnIGNhbiBub3QgYmUgdXNlZCB0byByZXNvbHZlIG1lcmdlcyIgPiYyCi0JCWV4aXQgMQorCQlyZXR1cm4gMQogCWVsaWYgZGlmZl9tb2RlICYmICEgY2FuX2RpZmYKIAl0aGVuCiAJCWVjaG8gImVycm9yOiAnJHRvb2wnIGNhbiBvbmx5IGJlIHVzZWQgdG8gcmVzb2x2ZSBtZXJnZXMiID4mMgotCQlleGl0IDEKKwkJcmV0dXJuIDEKIAlmaQogCXJldHVybiAwCiB9CiAKIGdldF9tZXJnZV90b29sX2NtZCAoKSB7Ci0JIyBQcmludHMgdGhlIGN1c3RvbSBjb21tYW5kIGZvciBhIG1lcmdlIHRvb2wKIAltZXJnZV90b29sPSIkMSIKIAlpZiBkaWZmX21vZGUKIAl0aGVuCi0JCWVjaG8gIiQoZ2l0IGNvbmZpZyBkaWZmdG9vbC4kbWVyZ2VfdG9vbC5jbWQgfHwKLQkJCWdpdCBjb25maWcgbWVyZ2V0b29sLiRtZXJnZV90b29sLmNtZCkiCisJCWdpdCBjb25maWcgImRpZmZ0b29sLiRtZXJnZV90b29sLmNtZCIgfHwKKwkJZ2l0IGNvbmZpZyAibWVyZ2V0b29sLiRtZXJnZV90b29sLmNtZCIKIAllbHNlCi0JCWVjaG8gIiQoZ2l0IGNvbmZpZyBtZXJnZXRvb2wuJG1lcmdlX3Rvb2wuY21kKSIKKwkJZ2l0IGNvbmZpZyAibWVyZ2V0b29sLiRtZXJnZV90b29sLmNtZCIKIAlmaQogfQogCkBAIC05NSwyMyArMTgyLDcyIEBACiAJR0lUX1BSRUZJWD0ke0dJVF9QUkVGSVg6LS59CiAJZXhwb3J0IEdJVF9QUkVGSVgKIAotCW1lcmdlX3Rvb2xfcGF0aD0iJChnZXRfbWVyZ2VfdG9vbF9wYXRoICIkMSIpIiB8fCBleGl0CisJbWVyZ2VfdG9vbF9wYXRoPSQoZ2V0X21lcmdlX3Rvb2xfcGF0aCAiJDEiKSB8fCBleGl0CiAJYmFzZV9wcmVzZW50PSIkMiIKIAlzdGF0dXM9MAogCiAJIyBCcmluZyB0b29sLXNwZWNpZmljIGZ1bmN0aW9ucyBpbnRvIHNjb3BlCiAJc2V0dXBfdG9vbCAiJDEiCisJZXhpdGNvZGU9JD8KKwljYXNlICRleGl0Y29kZSBpbgorCTApCisJCToKKwkJOzsKKwkyKQorCQkjIFRoZSBjb25maWd1cmVkIHRvb2wgaXMgbm90IGEgYnVpbHQtaW4gdG9vbC4KKwkJdGVzdCAtbiAiJG1lcmdlX3Rvb2xfcGF0aCIgfHwgcmV0dXJuIDEKKwkJOzsKKwkqKQorCQlyZXR1cm4gJGV4aXRjb2RlCisJCTs7CisJZXNhYwogCiAJaWYgbWVyZ2VfbW9kZQogCXRoZW4KLQkJbWVyZ2VfY21kICIkMSIKKwkJcnVuX21lcmdlX2NtZCAiJDEiCiAJZWxzZQotCQlkaWZmX2NtZCAiJDEiCisJCXJ1bl9kaWZmX2NtZCAiJDEiCiAJZmkKIAlyZXR1cm4gJHN0YXR1cwogfQogCi1ndWVzc19tZXJnZV90b29sICgpIHsKKyMgUnVuIGEgZWl0aGVyIGEgY29uZmlndXJlZCBvciBidWlsdC1pbiBkaWZmIHRvb2wKK3J1bl9kaWZmX2NtZCAoKSB7CisJbWVyZ2VfdG9vbF9jbWQ9JChnZXRfbWVyZ2VfdG9vbF9jbWQgIiQxIikKKwlpZiB0ZXN0IC1uICIkbWVyZ2VfdG9vbF9jbWQiCisJdGhlbgorCQkoIGV2YWwgJG1lcmdlX3Rvb2xfY21kICkKKwkJc3RhdHVzPSQ/CisJCXJldHVybiAkc3RhdHVzCisJZWxzZQorCQlkaWZmX2NtZCAiJDEiCisJZmkKK30KKworIyBSdW4gYSBlaXRoZXIgYSBjb25maWd1cmVkIG9yIGJ1aWx0LWluIG1lcmdlIHRvb2wKK3J1bl9tZXJnZV9jbWQgKCkgeworCW1lcmdlX3Rvb2xfY21kPSQoZ2V0X21lcmdlX3Rvb2xfY21kICIkMSIpCisJaWYgdGVzdCAtbiAiJG1lcmdlX3Rvb2xfY21kIgorCXRoZW4KKwkJdHJ1c3RfZXhpdF9jb2RlPSQoZ2l0IGNvbmZpZyAtLWJvb2wgXAorCQkJIm1lcmdldG9vbC4kMS50cnVzdEV4aXRDb2RlIiB8fCBlY2hvIGZhbHNlKQorCQlpZiB0ZXN0ICIkdHJ1c3RfZXhpdF9jb2RlIiA9ICJmYWxzZSIKKwkJdGhlbgorCQkJdG91Y2ggIiRCQUNLVVAiCisJCQkoIGV2YWwgJG1lcmdlX3Rvb2xfY21kICkKKwkJCXN0YXR1cz0kPworCQkJY2hlY2tfdW5jaGFuZ2VkCisJCWVsc2UKKwkJCSggZXZhbCAkbWVyZ2VfdG9vbF9jbWQgKQorCQkJc3RhdHVzPSQ/CisJCWZpCisJCXJldHVybiAkc3RhdHVzCisJZWxzZQorCQltZXJnZV9jbWQgIiQxIgorCWZpCit9CisKK2xpc3RfbWVyZ2VfdG9vbF9jYW5kaWRhdGVzICgpIHsKIAlpZiBtZXJnZV9tb2RlCiAJdGhlbgogCQl0b29scz0idG9ydG9pc2VtZXJnZSIKQEAgLTEyNiw3ICsyNjIsNyBAQAogCQllbHNlCiAJCQl0b29scz0ib3BlbmRpZmYga2RpZmYzIHRrZGlmZiB4eGRpZmYgbWVsZCAkdG9vbHMiCiAJCWZpCi0JCXRvb2xzPSIkdG9vbHMgZ3ZpbWRpZmYgZGlmZnVzZSBlY21lcmdlIHA0bWVyZ2UgYXJheGlzIGJjMyIKKwkJdG9vbHM9IiR0b29scyBndmltZGlmZiBkaWZmdXNlIGVjbWVyZ2UgcDRtZXJnZSBhcmF4aXMgYmMzIGNvZGVjb21wYXJlIgogCWZpCiAJY2FzZSAiJHtWSVNVQUw6LSRFRElUT1J9IiBpbgogCSp2aW0qKQpAQCAtMTM2LDIwICsyNzIsNjMgQEAKIAkJdG9vbHM9IiR0b29scyBlbWVyZ2UgdmltZGlmZiIKIAkJOzsKIAllc2FjCi0JZWNobyA+JjIgIm1lcmdlIHRvb2wgY2FuZGlkYXRlczogJHRvb2xzIgorfQorCitzaG93X3Rvb2xfaGVscCAoKSB7CisJdG9vbF9vcHQ9IidnaXQgJHtUT09MX01PREV9dG9vbCAtLXRvb2wtPHRvb2w+JyIKKworCXRhYj0nCScKKwlMRj0nCisnCisJYW55X3Nob3duPW5vCisKKwljbWRfbmFtZT0ke1RPT0xfTU9ERX10b29sCisJY29uZmlnX3Rvb2xzPSQoeworCQlkaWZmX21vZGUgJiYgbGlzdF9jb25maWdfdG9vbHMgZGlmZnRvb2wgIiR0YWIkdGFiIgorCQlsaXN0X2NvbmZpZ190b29scyBtZXJnZXRvb2wgIiR0YWIkdGFiIgorCX0gfCBzb3J0KQorCWV4dHJhX2NvbnRlbnQ9CisJaWYgdGVzdCAtbiAiJGNvbmZpZ190b29scyIKKwl0aGVuCisJCWV4dHJhX2NvbnRlbnQ9IiR7dGFifXVzZXItZGVmaW5lZDoke0xGfSRjb25maWdfdG9vbHMiCisJZmkKKworCXNob3dfdG9vbF9uYW1lcyAnbW9kZV9vayAmJiBpc19hdmFpbGFibGUnICIkdGFiJHRhYiIgXAorCQkiJHRvb2xfb3B0IG1heSBiZSBzZXQgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6IiBcCisJCSJObyBzdWl0YWJsZSB0b29sIGZvciAnZ2l0ICRjbWRfbmFtZSAtLXRvb2w9PHRvb2w+JyBmb3VuZC4iIFwKKwkJIiRleHRyYV9jb250ZW50IiAmJgorCQlhbnlfc2hvd249eWVzCisKKwlzaG93X3Rvb2xfbmFtZXMgJ21vZGVfb2sgJiYgISBpc19hdmFpbGFibGUnICIkdGFiJHRhYiIgXAorCQkiJHtMRn1UaGUgZm9sbG93aW5nIHRvb2xzIGFyZSB2YWxpZCwgYnV0IG5vdCBjdXJyZW50bHkgYXZhaWxhYmxlOiIgJiYKKwkJYW55X3Nob3duPXllcworCisJaWYgdGVzdCAiJGFueV9zaG93biIgPSB5ZXMKKwl0aGVuCisJCWVjaG8KKwkJZWNobyAiU29tZSBvZiB0aGUgdG9vbHMgbGlzdGVkIGFib3ZlIG9ubHkgd29yayBpbiBhIHdpbmRvd2VkIgorCQllY2hvICJlbnZpcm9ubWVudC4gSWYgcnVuIGluIGEgdGVybWluYWwtb25seSBzZXNzaW9uLCB0aGV5IHdpbGwgZmFpbC4iCisJZmkKKwlleGl0IDAKK30KKworZ3Vlc3NfbWVyZ2VfdG9vbCAoKSB7CisJbGlzdF9tZXJnZV90b29sX2NhbmRpZGF0ZXMKKwljYXQgPiYyIDw8LUVPRgorCisJVGhpcyBtZXNzYWdlIGlzIGRpc3BsYXllZCBiZWNhdXNlICckVE9PTF9NT0RFLnRvb2wnIGlzIG5vdCBjb25maWd1cmVkLgorCVNlZSAnZ2l0ICR7VE9PTF9NT0RFfXRvb2wgLS10b29sLWhlbHAnIG9yICdnaXQgaGVscCBjb25maWcnIGZvciBtb3JlIGRldGFpbHMuCisJJ2dpdCAke1RPT0xfTU9ERX10b29sJyB3aWxsIG5vdyBhdHRlbXB0IHRvIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0b29sczoKKwkkdG9vbHMKKwlFT0YKIAogCSMgTG9vcCBvdmVyIGVhY2ggY2FuZGlkYXRlIGFuZCBzdG9wIHdoZW4gYSB2YWxpZCBtZXJnZSB0b29sIGlzIGZvdW5kLgotCWZvciBpIGluICR0b29scworCWZvciB0b29sIGluICR0b29scwogCWRvCi0JCW1lcmdlX3Rvb2xfcGF0aD0iJCh0cmFuc2xhdGVfbWVyZ2VfdG9vbF9wYXRoICIkaSIpIgotCQlpZiB0eXBlICIkbWVyZ2VfdG9vbF9wYXRoIiA+L2Rldi9udWxsIDI+JjEKLQkJdGhlbgotCQkJZWNobyAiJGkiCi0JCQlyZXR1cm4gMAotCQlmaQorCQlpc19hdmFpbGFibGUgIiR0b29sIiAmJiBlY2hvICIkdG9vbCIgJiYgcmV0dXJuIDAKIAlkb25lCiAKLQllY2hvID4mMiAiTm8ga25vd24gbWVyZ2UgcmVzb2x1dGlvbiBwcm9ncmFtIGF2YWlsYWJsZS4iCisJZWNobyA+JjIgIk5vIGtub3duICR7VE9PTF9NT0RFfSB0b29sIGlzIGF2YWlsYWJsZS4iCiAJcmV0dXJuIDEKIH0KIApAQCAtMTg4LDcgKzM2Nyw3IEBACiAJZmkKIAlpZiB0ZXN0IC16ICIkbWVyZ2VfdG9vbF9wYXRoIgogCXRoZW4KLQkJbWVyZ2VfdG9vbF9wYXRoPSIkKHRyYW5zbGF0ZV9tZXJnZV90b29sX3BhdGggIiRtZXJnZV90b29sIikiCisJCW1lcmdlX3Rvb2xfcGF0aD0kKHRyYW5zbGF0ZV9tZXJnZV90b29sX3BhdGggIiRtZXJnZV90b29sIikKIAlmaQogCWlmIHRlc3QgLXogIiQoZ2V0X21lcmdlX3Rvb2xfY21kICIkbWVyZ2VfdG9vbCIpIiAmJgogCQkhIHR5cGUgIiRtZXJnZV90b29sX3BhdGgiID4vZGV2L251bGwgMj4mMQpAQCAtMjAyLDExICszODEsMTEgQEAKIAogZ2V0X21lcmdlX3Rvb2wgKCkgewogCSMgQ2hlY2sgaWYgYSBtZXJnZSB0b29sIGhhcyBiZWVuIGNvbmZpZ3VyZWQKLQltZXJnZV90b29sPSIkKGdldF9jb25maWd1cmVkX21lcmdlX3Rvb2wpIgorCW1lcmdlX3Rvb2w9JChnZXRfY29uZmlndXJlZF9tZXJnZV90b29sKQogCSMgVHJ5IHRvIGd1ZXNzIGFuIGFwcHJvcHJpYXRlIG1lcmdlIHRvb2wgaWYgbm8gdG9vbCBoYXMgYmVlbiBzZXQuCiAJaWYgdGVzdCAteiAiJG1lcmdlX3Rvb2wiCiAJdGhlbgotCQltZXJnZV90b29sPSIkKGd1ZXNzX21lcmdlX3Rvb2wpIiB8fCBleGl0CisJCW1lcmdlX3Rvb2w9JChndWVzc19tZXJnZV90b29sKSB8fCBleGl0CiAJZmkKIAllY2hvICIkbWVyZ2VfdG9vbCIKIH0KZGlmZiAtLWdpdCBhL2dpdC1tZXJnZXRvb2wuc2ggYi9naXQtbWVyZ2V0b29sLnNoCmluZGV4IGE5ZjIzZjcuLjMzMjUyOGYgMTAwNzU1Ci0tLSBhL2dpdC1tZXJnZXRvb2wuc2gKKysrIGIvZ2l0LW1lcmdldG9vbC5zaApAQCAtOCw3ICs4LDcgQEAKICMgYXQgdGhlIGRpc2NyZXRpb24gb2YgSnVuaW8gQyBIYW1hbm8uCiAjCiAKLVVTQUdFPSdbLS10b29sPXRvb2xdIFsteXwtLW5vLXByb21wdHwtLXByb21wdF0gW2ZpbGUgdG8gbWVyZ2VdIC4uLicKK1VTQUdFPSdbLS10b29sPXRvb2xdIFstLXRvb2wtaGVscF0gWy15fC0tbm8tcHJvbXB0fC0tcHJvbXB0XSBbZmlsZSB0byBtZXJnZV0gLi4uJwogU1VCRElSRUNUT1JZX09LPVllcwogT1BUSU9OU19TUEVDPQogVE9PTF9NT0RFPW1lcmdlCkBAIC0xOCwzMjggKzE4LDM2MiBAQAogCiAjIFJldHVybnMgdHJ1ZSBpZiB0aGUgbW9kZSByZWZsZWN0cyBhIHN5bWxpbmsKIGlzX3N5bWxpbmsgKCkgewotICAgIHRlc3QgIiQxIiA9IDEyMDAwMAorCXRlc3QgIiQxIiA9IDEyMDAwMAogfQogCiBpc19zdWJtb2R1bGUgKCkgewotICAgIHRlc3QgIiQxIiA9IDE2MDAwMAorCXRlc3QgIiQxIiA9IDE2MDAwMAogfQogCiBsb2NhbF9wcmVzZW50ICgpIHsKLSAgICB0ZXN0IC1uICIkbG9jYWxfbW9kZSIKKwl0ZXN0IC1uICIkbG9jYWxfbW9kZSIKIH0KIAogcmVtb3RlX3ByZXNlbnQgKCkgewotICAgIHRlc3QgLW4gIiRyZW1vdGVfbW9kZSIKKwl0ZXN0IC1uICIkcmVtb3RlX21vZGUiCiB9CiAKIGJhc2VfcHJlc2VudCAoKSB7Ci0gICAgdGVzdCAtbiAiJGJhc2VfbW9kZSIKKwl0ZXN0IC1uICIkYmFzZV9tb2RlIgogfQogCiBjbGVhbnVwX3RlbXBfZmlsZXMgKCkgewotICAgIGlmIHRlc3QgIiQxIiA9IC0tc2F2ZS1iYWNrdXAgOyB0aGVuCi0Jcm0gLXJmIC0tICIkTUVSR0VELm9yaWciCi0JdGVzdCAtZSAiJEJBQ0tVUCIgJiYgbXYgLS0gIiRCQUNLVVAiICIkTUVSR0VELm9yaWciCi0Jcm0gLWYgLS0gIiRMT0NBTCIgIiRSRU1PVEUiICIkQkFTRSIKLSAgICBlbHNlCi0Jcm0gLWYgLS0gIiRMT0NBTCIgIiRSRU1PVEUiICIkQkFTRSIgIiRCQUNLVVAiCi0gICAgZmkKKwlpZiB0ZXN0ICIkMSIgPSAtLXNhdmUtYmFja3VwCisJdGhlbgorCQlybSAtcmYgLS0gIiRNRVJHRUQub3JpZyIKKwkJdGVzdCAtZSAiJEJBQ0tVUCIgJiYgbXYgLS0gIiRCQUNLVVAiICIkTUVSR0VELm9yaWciCisJCXJtIC1mIC0tICIkTE9DQUwiICIkUkVNT1RFIiAiJEJBU0UiCisJZWxzZQorCQlybSAtZiAtLSAiJExPQ0FMIiAiJFJFTU9URSIgIiRCQVNFIiAiJEJBQ0tVUCIKKwlmaQogfQogCiBkZXNjcmliZV9maWxlICgpIHsKLSAgICBtb2RlPSIkMSIKLSAgICBicmFuY2g9IiQyIgotICAgIGZpbGU9IiQzIgorCW1vZGU9IiQxIgorCWJyYW5jaD0iJDIiCisJZmlsZT0iJDMiCiAKLSAgICBwcmludGYgIiAgeyVzfTogIiAiJGJyYW5jaCIKLSAgICBpZiB0ZXN0IC16ICIkbW9kZSI7IHRoZW4KLQllY2hvICJkZWxldGVkIgotICAgIGVsaWYgaXNfc3ltbGluayAiJG1vZGUiIDsgdGhlbgotCWVjaG8gImEgc3ltYm9saWMgbGluayAtPiAnJChjYXQgIiRmaWxlIiknIgotICAgIGVsaWYgaXNfc3VibW9kdWxlICIkbW9kZSIgOyB0aGVuCi0JZWNobyAic3VibW9kdWxlIGNvbW1pdCAkZmlsZSIKLSAgICBlbHNlCi0JaWYgYmFzZV9wcmVzZW50OyB0aGVuCi0JICAgIGVjaG8gIm1vZGlmaWVkIGZpbGUiCisJcHJpbnRmICIgIHslc306ICIgIiRicmFuY2giCisJaWYgdGVzdCAteiAiJG1vZGUiCisJdGhlbgorCQllY2hvICJkZWxldGVkIgorCWVsaWYgaXNfc3ltbGluayAiJG1vZGUiCisJdGhlbgorCQllY2hvICJhIHN5bWJvbGljIGxpbmsgLT4gJyQoY2F0ICIkZmlsZSIpJyIKKwllbGlmIGlzX3N1Ym1vZHVsZSAiJG1vZGUiCisJdGhlbgorCQllY2hvICJzdWJtb2R1bGUgY29tbWl0ICRmaWxlIgorCWVsaWYgYmFzZV9wcmVzZW50CisJdGhlbgorCQllY2hvICJtb2RpZmllZCBmaWxlIgogCWVsc2UKLQkgICAgZWNobyAiY3JlYXRlZCBmaWxlIgorCQllY2hvICJjcmVhdGVkIGZpbGUiCiAJZmkKLSAgICBmaQogfQogCi0KIHJlc29sdmVfc3ltbGlua19tZXJnZSAoKSB7Ci0gICAgd2hpbGUgdHJ1ZTsgZG8KLQlwcmludGYgIlVzZSAobClvY2FsIG9yIChyKWVtb3RlLCBvciAoYSlib3J0PyAiCi0JcmVhZCBhbnMgfHwgcmV0dXJuIDEKLQljYXNlICIkYW5zIiBpbgotCSAgICBbbExdKikKLQkJZ2l0IGNoZWNrb3V0LWluZGV4IC1mIC0tc3RhZ2U9MiAtLSAiJE1FUkdFRCIKLQkJZ2l0IGFkZCAtLSAiJE1FUkdFRCIKLQkJY2xlYW51cF90ZW1wX2ZpbGVzIC0tc2F2ZS1iYWNrdXAKLQkJcmV0dXJuIDAKLQkJOzsKLQkgICAgW3JSXSopCi0JCWdpdCBjaGVja291dC1pbmRleCAtZiAtLXN0YWdlPTMgLS0gIiRNRVJHRUQiCi0JCWdpdCBhZGQgLS0gIiRNRVJHRUQiCi0JCWNsZWFudXBfdGVtcF9maWxlcyAtLXNhdmUtYmFja3VwCi0JCXJldHVybiAwCi0JCTs7Ci0JICAgIFthQV0qKQotCQlyZXR1cm4gMQotCQk7OwotCSAgICBlc2FjCisJd2hpbGUgdHJ1ZQorCWRvCisJCXByaW50ZiAiVXNlIChsKW9jYWwgb3IgKHIpZW1vdGUsIG9yIChhKWJvcnQ/ICIKKwkJcmVhZCBhbnMgfHwgcmV0dXJuIDEKKwkJY2FzZSAiJGFucyIgaW4KKwkJW2xMXSopCisJCQlnaXQgY2hlY2tvdXQtaW5kZXggLWYgLS1zdGFnZT0yIC0tICIkTUVSR0VEIgorCQkJZ2l0IGFkZCAtLSAiJE1FUkdFRCIKKwkJCWNsZWFudXBfdGVtcF9maWxlcyAtLXNhdmUtYmFja3VwCisJCQlyZXR1cm4gMAorCQkJOzsKKwkJW3JSXSopCisJCQlnaXQgY2hlY2tvdXQtaW5kZXggLWYgLS1zdGFnZT0zIC0tICIkTUVSR0VEIgorCQkJZ2l0IGFkZCAtLSAiJE1FUkdFRCIKKwkJCWNsZWFudXBfdGVtcF9maWxlcyAtLXNhdmUtYmFja3VwCisJCQlyZXR1cm4gMAorCQkJOzsKKwkJW2FBXSopCisJCQlyZXR1cm4gMQorCQkJOzsKKwkJZXNhYwogCWRvbmUKIH0KIAogcmVzb2x2ZV9kZWxldGVkX21lcmdlICgpIHsKLSAgICB3aGlsZSB0cnVlOyBkbwotCWlmIGJhc2VfcHJlc2VudDsgdGhlbgotCSAgICBwcmludGYgIlVzZSAobSlvZGlmaWVkIG9yIChkKWVsZXRlZCBmaWxlLCBvciAoYSlib3J0PyAiCi0JZWxzZQotCSAgICBwcmludGYgIlVzZSAoYylyZWF0ZWQgb3IgKGQpZWxldGVkIGZpbGUsIG9yIChhKWJvcnQ/ICIKLQlmaQotCXJlYWQgYW5zIHx8IHJldHVybiAxCi0JY2FzZSAiJGFucyIgaW4KLQkgICAgW21NY0NdKikKLQkJZ2l0IGFkZCAtLSAiJE1FUkdFRCIKLQkJY2xlYW51cF90ZW1wX2ZpbGVzIC0tc2F2ZS1iYWNrdXAKLQkJcmV0dXJuIDAKLQkJOzsKLQkgICAgW2REXSopCi0JCWdpdCBybSAtLSAiJE1FUkdFRCIgPiAvZGV2L251bGwKLQkJY2xlYW51cF90ZW1wX2ZpbGVzCi0JCXJldHVybiAwCi0JCTs7Ci0JICAgIFthQV0qKQotCQlyZXR1cm4gMQotCQk7OwotCSAgICBlc2FjCisJd2hpbGUgdHJ1ZQorCWRvCisJCWlmIGJhc2VfcHJlc2VudAorCQl0aGVuCisJCQlwcmludGYgIlVzZSAobSlvZGlmaWVkIG9yIChkKWVsZXRlZCBmaWxlLCBvciAoYSlib3J0PyAiCisJCWVsc2UKKwkJCXByaW50ZiAiVXNlIChjKXJlYXRlZCBvciAoZCllbGV0ZWQgZmlsZSwgb3IgKGEpYm9ydD8gIgorCQlmaQorCQlyZWFkIGFucyB8fCByZXR1cm4gMQorCQljYXNlICIkYW5zIiBpbgorCQlbbU1jQ10qKQorCQkJZ2l0IGFkZCAtLSAiJE1FUkdFRCIKKwkJCWNsZWFudXBfdGVtcF9maWxlcyAtLXNhdmUtYmFja3VwCisJCQlyZXR1cm4gMAorCQkJOzsKKwkJW2REXSopCisJCQlnaXQgcm0gLS0gIiRNRVJHRUQiID4gL2Rldi9udWxsCisJCQljbGVhbnVwX3RlbXBfZmlsZXMKKwkJCXJldHVybiAwCisJCQk7OworCQlbYUFdKikKKwkJCXJldHVybiAxCisJCQk7OworCQllc2FjCiAJZG9uZQogfQogCiByZXNvbHZlX3N1Ym1vZHVsZV9tZXJnZSAoKSB7Ci0gICAgd2hpbGUgdHJ1ZTsgZG8KLQlwcmludGYgIlVzZSAobClvY2FsIG9yIChyKWVtb3RlLCBvciAoYSlib3J0PyAiCi0JcmVhZCBhbnMgfHwgcmV0dXJuIDEKLQljYXNlICIkYW5zIiBpbgotCSAgICBbbExdKikKLQkJaWYgISBsb2NhbF9wcmVzZW50OyB0aGVuCi0JCSAgICBpZiB0ZXN0IC1uICIkKGdpdCBscy10cmVlIEhFQUQgLS0gIiRNRVJHRUQiKSI7IHRoZW4KLQkJCSMgTG9jYWwgaXNuJ3QgcHJlc2VudCwgYnV0IGl0J3MgYSBzdWJkaXJlY3RvcnkKLQkJCWdpdCBscy10cmVlIC0tZnVsbC1uYW1lIC1yIEhFQUQgLS0gIiRNRVJHRUQiIHwgZ2l0IHVwZGF0ZS1pbmRleCAtLWluZGV4LWluZm8gfHwgZXhpdCAkPwotCQkgICAgZWxzZQotCQkJdGVzdCAtZSAiJE1FUkdFRCIgJiYgbXYgLS0gIiRNRVJHRUQiICIkQkFDS1VQIgotCQkJZ2l0IHVwZGF0ZS1pbmRleCAtLWZvcmNlLXJlbW92ZSAiJE1FUkdFRCIKKwl3aGlsZSB0cnVlCisJZG8KKwkJcHJpbnRmICJVc2UgKGwpb2NhbCBvciAocillbW90ZSwgb3IgKGEpYm9ydD8gIgorCQlyZWFkIGFucyB8fCByZXR1cm4gMQorCQljYXNlICIkYW5zIiBpbgorCQlbbExdKikKKwkJCWlmICEgbG9jYWxfcHJlc2VudAorCQkJdGhlbgorCQkJCWlmIHRlc3QgLW4gIiQoZ2l0IGxzLXRyZWUgSEVBRCAtLSAiJE1FUkdFRCIpIgorCQkJCXRoZW4KKwkJCQkJIyBMb2NhbCBpc24ndCBwcmVzZW50LCBidXQgaXQncyBhIHN1YmRpcmVjdG9yeQorCQkJCQlnaXQgbHMtdHJlZSAtLWZ1bGwtbmFtZSAtciBIRUFEIC0tICIkTUVSR0VEIiB8CisJCQkJCWdpdCB1cGRhdGUtaW5kZXggLS1pbmRleC1pbmZvIHx8IGV4aXQgJD8KKwkJCQllbHNlCisJCQkJCXRlc3QgLWUgIiRNRVJHRUQiICYmIG12IC0tICIkTUVSR0VEIiAiJEJBQ0tVUCIKKwkJCQkJZ2l0IHVwZGF0ZS1pbmRleCAtLWZvcmNlLXJlbW92ZSAiJE1FUkdFRCIKKwkJCQkJY2xlYW51cF90ZW1wX2ZpbGVzIC0tc2F2ZS1iYWNrdXAKKwkJCQlmaQorCQkJZWxpZiBpc19zdWJtb2R1bGUgIiRsb2NhbF9tb2RlIgorCQkJdGhlbgorCQkJCXN0YWdlX3N1Ym1vZHVsZSAiJE1FUkdFRCIgIiRsb2NhbF9zaGExIgorCQkJZWxzZQorCQkJCWdpdCBjaGVja291dC1pbmRleCAtZiAtLXN0YWdlPTIgLS0gIiRNRVJHRUQiCisJCQkJZ2l0IGFkZCAtLSAiJE1FUkdFRCIKKwkJCWZpCisJCQlyZXR1cm4gMAorCQkJOzsKKwkJW3JSXSopCisJCQlpZiAhIHJlbW90ZV9wcmVzZW50CisJCQl0aGVuCisJCQkJaWYgdGVzdCAtbiAiJChnaXQgbHMtdHJlZSBNRVJHRV9IRUFEIC0tICIkTUVSR0VEIikiCisJCQkJdGhlbgorCQkJCQkjIFJlbW90ZSBpc24ndCBwcmVzZW50LCBidXQgaXQncyBhIHN1YmRpcmVjdG9yeQorCQkJCQlnaXQgbHMtdHJlZSAtLWZ1bGwtbmFtZSAtciBNRVJHRV9IRUFEIC0tICIkTUVSR0VEIiB8CisJCQkJCWdpdCB1cGRhdGUtaW5kZXggLS1pbmRleC1pbmZvIHx8IGV4aXQgJD8KKwkJCQllbHNlCisJCQkJCXRlc3QgLWUgIiRNRVJHRUQiICYmIG12IC0tICIkTUVSR0VEIiAiJEJBQ0tVUCIKKwkJCQkJZ2l0IHVwZGF0ZS1pbmRleCAtLWZvcmNlLXJlbW92ZSAiJE1FUkdFRCIKKwkJCQlmaQorCQkJZWxpZiBpc19zdWJtb2R1bGUgIiRyZW1vdGVfbW9kZSIKKwkJCXRoZW4KKwkJCQkhIGlzX3N1Ym1vZHVsZSAiJGxvY2FsX21vZGUiICYmCisJCQkJdGVzdCAtZSAiJE1FUkdFRCIgJiYKKwkJCQltdiAtLSAiJE1FUkdFRCIgIiRCQUNLVVAiCisJCQkJc3RhZ2Vfc3VibW9kdWxlICIkTUVSR0VEIiAiJHJlbW90ZV9zaGExIgorCQkJZWxzZQorCQkJCXRlc3QgLWUgIiRNRVJHRUQiICYmIG12IC0tICIkTUVSR0VEIiAiJEJBQ0tVUCIKKwkJCQlnaXQgY2hlY2tvdXQtaW5kZXggLWYgLS1zdGFnZT0zIC0tICIkTUVSR0VEIgorCQkJCWdpdCBhZGQgLS0gIiRNRVJHRUQiCisJCQlmaQogCQkJY2xlYW51cF90ZW1wX2ZpbGVzIC0tc2F2ZS1iYWNrdXAKLQkJICAgIGZpCi0JCWVsaWYgaXNfc3VibW9kdWxlICIkbG9jYWxfbW9kZSI7IHRoZW4KLQkJICAgIHN0YWdlX3N1Ym1vZHVsZSAiJE1FUkdFRCIgIiRsb2NhbF9zaGExIgotCQllbHNlCi0JCSAgICBnaXQgY2hlY2tvdXQtaW5kZXggLWYgLS1zdGFnZT0yIC0tICIkTUVSR0VEIgotCQkgICAgZ2l0IGFkZCAtLSAiJE1FUkdFRCIKLQkJZmkKLQkJcmV0dXJuIDAKLQkJOzsKLQkgICAgW3JSXSopCi0JCWlmICEgcmVtb3RlX3ByZXNlbnQ7IHRoZW4KLQkJICAgIGlmIHRlc3QgLW4gIiQoZ2l0IGxzLXRyZWUgTUVSR0VfSEVBRCAtLSAiJE1FUkdFRCIpIjsgdGhlbgotCQkJIyBSZW1vdGUgaXNuJ3QgcHJlc2VudCwgYnV0IGl0J3MgYSBzdWJkaXJlY3RvcnkKLQkJCWdpdCBscy10cmVlIC0tZnVsbC1uYW1lIC1yIE1FUkdFX0hFQUQgLS0gIiRNRVJHRUQiIHwgZ2l0IHVwZGF0ZS1pbmRleCAtLWluZGV4LWluZm8gfHwgZXhpdCAkPwotCQkgICAgZWxzZQotCQkJdGVzdCAtZSAiJE1FUkdFRCIgJiYgbXYgLS0gIiRNRVJHRUQiICIkQkFDS1VQIgotCQkJZ2l0IHVwZGF0ZS1pbmRleCAtLWZvcmNlLXJlbW92ZSAiJE1FUkdFRCIKLQkJICAgIGZpCi0JCWVsaWYgaXNfc3VibW9kdWxlICIkcmVtb3RlX21vZGUiOyB0aGVuCi0JCSAgICAhIGlzX3N1Ym1vZHVsZSAiJGxvY2FsX21vZGUiICYmIHRlc3QgLWUgIiRNRVJHRUQiICYmIG12IC0tICIkTUVSR0VEIiAiJEJBQ0tVUCIKLQkJICAgIHN0YWdlX3N1Ym1vZHVsZSAiJE1FUkdFRCIgIiRyZW1vdGVfc2hhMSIKLQkJZWxzZQotCQkgICAgdGVzdCAtZSAiJE1FUkdFRCIgJiYgbXYgLS0gIiRNRVJHRUQiICIkQkFDS1VQIgotCQkgICAgZ2l0IGNoZWNrb3V0LWluZGV4IC1mIC0tc3RhZ2U9MyAtLSAiJE1FUkdFRCIKLQkJICAgIGdpdCBhZGQgLS0gIiRNRVJHRUQiCi0JCWZpCi0JCWNsZWFudXBfdGVtcF9maWxlcyAtLXNhdmUtYmFja3VwCi0JCXJldHVybiAwCi0JCTs7Ci0JICAgIFthQV0qKQotCQlyZXR1cm4gMQotCQk7OwotCSAgICBlc2FjCisJCQlyZXR1cm4gMAorCQkJOzsKKwkJW2FBXSopCisJCQlyZXR1cm4gMQorCQkJOzsKKwkJZXNhYwogCWRvbmUKIH0KIAogc3RhZ2Vfc3VibW9kdWxlICgpIHsKLSAgICBwYXRoPSIkMSIKLSAgICBzdWJtb2R1bGVfc2hhMT0iJDIiCi0gICAgbWtkaXIgLXAgIiRwYXRoIiB8fCBkaWUgImZhdGFsOiB1bmFibGUgdG8gY3JlYXRlIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGF0ICRwYXRoIgotICAgICMgRmluZCAkcGF0aCByZWxhdGl2ZSB0byB3b3JrIHRyZWUKLSAgICB3b3JrX3RyZWVfcm9vdD0kKGNkX3RvX3RvcGxldmVsICYmIHB3ZCkKLSAgICB3b3JrX3JlbF9wYXRoPSQoY2QgIiRwYXRoIiAmJiBHSVRfV09SS19UUkVFPSIke3dvcmtfdHJlZV9yb290fSIgZ2l0IHJldi1wYXJzZSAtLXNob3ctcHJlZml4KQotICAgIHRlc3QgLW4gIiR3b3JrX3JlbF9wYXRoIiB8fCBkaWUgImZhdGFsOiB1bmFibGUgdG8gZ2V0IHBhdGggb2YgbW9kdWxlICRwYXRoIHJlbGF0aXZlIHRvIHdvcmsgdHJlZSIKLSAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIC0tcmVwbGFjZSAtLWNhY2hlaW5mbyAxNjAwMDAgIiRzdWJtb2R1bGVfc2hhMSIgIiR7d29ya19yZWxfcGF0aCUvfSIgfHwgZGllCisJcGF0aD0iJDEiCisJc3VibW9kdWxlX3NoYTE9IiQyIgorCW1rZGlyIC1wICIkcGF0aCIgfHwKKwlkaWUgImZhdGFsOiB1bmFibGUgdG8gY3JlYXRlIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGF0ICRwYXRoIgorCSMgRmluZCAkcGF0aCByZWxhdGl2ZSB0byB3b3JrIHRyZWUKKwl3b3JrX3RyZWVfcm9vdD0kKGNkX3RvX3RvcGxldmVsICYmIHB3ZCkKKwl3b3JrX3JlbF9wYXRoPSQoY2QgIiRwYXRoIiAmJgorCQlHSVRfV09SS19UUkVFPSIke3dvcmtfdHJlZV9yb290fSIgZ2l0IHJldi1wYXJzZSAtLXNob3ctcHJlZml4CisJKQorCXRlc3QgLW4gIiR3b3JrX3JlbF9wYXRoIiB8fAorCWRpZSAiZmF0YWw6IHVuYWJsZSB0byBnZXQgcGF0aCBvZiBtb2R1bGUgJHBhdGggcmVsYXRpdmUgdG8gd29yayB0cmVlIgorCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgLS1yZXBsYWNlIC0tY2FjaGVpbmZvIDE2MDAwMCAiJHN1Ym1vZHVsZV9zaGExIiAiJHt3b3JrX3JlbF9wYXRoJS99IiB8fCBkaWUKIH0KIAogY2hlY2tvdXRfc3RhZ2VkX2ZpbGUgKCkgewotICAgIHRtcGZpbGU9JChleHByIFwKLQkgICAgIiQoZ2l0IGNoZWNrb3V0LWluZGV4IC0tdGVtcCAtLXN0YWdlPSIkMSIgIiQyIiAyPi9kZXYvbnVsbCkiIFwKLQkgICAgOiAnXChbXgldKlwpCScpCisJdG1wZmlsZT0kKGV4cHIgXAorCQkiJChnaXQgY2hlY2tvdXQtaW5kZXggLS10ZW1wIC0tc3RhZ2U9IiQxIiAiJDIiIDI+L2Rldi9udWxsKSIgXAorCQk6ICdcKFteCV0qXCkJJykKIAotICAgIGlmIHRlc3QgJD8gLWVxIDAgLWEgLW4gIiR0bXBmaWxlIiA7IHRoZW4KLQltdiAtLSAiJChnaXQgcmV2LXBhcnNlIC0tc2hvdy1jZHVwKSR0bXBmaWxlIiAiJDMiCi0gICAgZWxzZQotCT4iJDMiCi0gICAgZmkKKwlpZiB0ZXN0ICQ/IC1lcSAwIC1hIC1uICIkdG1wZmlsZSIKKwl0aGVuCisJCW12IC0tICIkKGdpdCByZXYtcGFyc2UgLS1zaG93LWNkdXApJHRtcGZpbGUiICIkMyIKKwllbHNlCisJCT4iJDMiCisJZmkKIH0KIAogbWVyZ2VfZmlsZSAoKSB7Ci0gICAgTUVSR0VEPSIkMSIKKwlNRVJHRUQ9IiQxIgogCi0gICAgZj0kKGdpdCBscy1maWxlcyAtdSAtLSAiJE1FUkdFRCIpCi0gICAgaWYgdGVzdCAteiAiJGYiIDsgdGhlbgotCWlmIHRlc3QgISAtZiAiJE1FUkdFRCIgOyB0aGVuCi0JICAgIGVjaG8gIiRNRVJHRUQ6IGZpbGUgbm90IGZvdW5kIgorCWY9JChnaXQgbHMtZmlsZXMgLXUgLS0gIiRNRVJHRUQiKQorCWlmIHRlc3QgLXogIiRmIgorCXRoZW4KKwkJaWYgdGVzdCAhIC1mICIkTUVSR0VEIgorCQl0aGVuCisJCQllY2hvICIkTUVSR0VEOiBmaWxlIG5vdCBmb3VuZCIKKwkJZWxzZQorCQkJZWNobyAiJE1FUkdFRDogZmlsZSBkb2VzIG5vdCBuZWVkIG1lcmdpbmciCisJCWZpCisJCXJldHVybiAxCisJZmkKKworCWV4dD0iJCQkKGV4cHIgIiRNRVJHRUQiIDogJy4qXChcLlteL10qXCkkJykiCisJQkFDS1VQPSIuLyRNRVJHRUQuQkFDS1VQLiRleHQiCisJTE9DQUw9Ii4vJE1FUkdFRC5MT0NBTC4kZXh0IgorCVJFTU9URT0iLi8kTUVSR0VELlJFTU9URS4kZXh0IgorCUJBU0U9Ii4vJE1FUkdFRC5CQVNFLiRleHQiCisKKwliYXNlX21vZGU9JChnaXQgbHMtZmlsZXMgLXUgLS0gIiRNRVJHRUQiIHwgYXdrICd7aWYgKCQzPT0xKSBwcmludCAkMTt9JykKKwlsb2NhbF9tb2RlPSQoZ2l0IGxzLWZpbGVzIC11IC0tICIkTUVSR0VEIiB8IGF3ayAne2lmICgkMz09MikgcHJpbnQgJDE7fScpCisJcmVtb3RlX21vZGU9JChnaXQgbHMtZmlsZXMgLXUgLS0gIiRNRVJHRUQiIHwgYXdrICd7aWYgKCQzPT0zKSBwcmludCAkMTt9JykKKworCWlmIGlzX3N1Ym1vZHVsZSAiJGxvY2FsX21vZGUiIHx8IGlzX3N1Ym1vZHVsZSAiJHJlbW90ZV9tb2RlIgorCXRoZW4KKwkJZWNobyAiU3VibW9kdWxlIG1lcmdlIGNvbmZsaWN0IGZvciAnJE1FUkdFRCc6IgorCQlsb2NhbF9zaGExPSQoZ2l0IGxzLWZpbGVzIC11IC0tICIkTUVSR0VEIiB8IGF3ayAne2lmICgkMz09MikgcHJpbnQgJDI7fScpCisJCXJlbW90ZV9zaGExPSQoZ2l0IGxzLWZpbGVzIC11IC0tICIkTUVSR0VEIiB8IGF3ayAne2lmICgkMz09MykgcHJpbnQgJDI7fScpCisJCWRlc2NyaWJlX2ZpbGUgIiRsb2NhbF9tb2RlIiAibG9jYWwiICIkbG9jYWxfc2hhMSIKKwkJZGVzY3JpYmVfZmlsZSAiJHJlbW90ZV9tb2RlIiAicmVtb3RlIiAiJHJlbW90ZV9zaGExIgorCQlyZXNvbHZlX3N1Ym1vZHVsZV9tZXJnZQorCQlyZXR1cm4KKwlmaQorCisJbXYgLS0gIiRNRVJHRUQiICIkQkFDS1VQIgorCWNwIC0tICIkQkFDS1VQIiAiJE1FUkdFRCIKKworCWNoZWNrb3V0X3N0YWdlZF9maWxlIDEgIiRNRVJHRUQiICIkQkFTRSIKKwljaGVja291dF9zdGFnZWRfZmlsZSAyICIkTUVSR0VEIiAiJExPQ0FMIgorCWNoZWNrb3V0X3N0YWdlZF9maWxlIDMgIiRNRVJHRUQiICIkUkVNT1RFIgorCisJaWYgdGVzdCAteiAiJGxvY2FsX21vZGUiIC1vIC16ICIkcmVtb3RlX21vZGUiCisJdGhlbgorCQllY2hvICJEZWxldGVkIG1lcmdlIGNvbmZsaWN0IGZvciAnJE1FUkdFRCc6IgorCQlkZXNjcmliZV9maWxlICIkbG9jYWxfbW9kZSIgImxvY2FsIiAiJExPQ0FMIgorCQlkZXNjcmliZV9maWxlICIkcmVtb3RlX21vZGUiICJyZW1vdGUiICIkUkVNT1RFIgorCQlyZXNvbHZlX2RlbGV0ZWRfbWVyZ2UKKwkJcmV0dXJuCisJZmkKKworCWlmIGlzX3N5bWxpbmsgIiRsb2NhbF9tb2RlIiB8fCBpc19zeW1saW5rICIkcmVtb3RlX21vZGUiCisJdGhlbgorCQllY2hvICJTeW1ib2xpYyBsaW5rIG1lcmdlIGNvbmZsaWN0IGZvciAnJE1FUkdFRCc6IgorCQlkZXNjcmliZV9maWxlICIkbG9jYWxfbW9kZSIgImxvY2FsIiAiJExPQ0FMIgorCQlkZXNjcmliZV9maWxlICIkcmVtb3RlX21vZGUiICJyZW1vdGUiICIkUkVNT1RFIgorCQlyZXNvbHZlX3N5bWxpbmtfbWVyZ2UKKwkJcmV0dXJuCisJZmkKKworCWVjaG8gIk5vcm1hbCBtZXJnZSBjb25mbGljdCBmb3IgJyRNRVJHRUQnOiIKKwlkZXNjcmliZV9maWxlICIkbG9jYWxfbW9kZSIgImxvY2FsIiAiJExPQ0FMIgorCWRlc2NyaWJlX2ZpbGUgIiRyZW1vdGVfbW9kZSIgInJlbW90ZSIgIiRSRU1PVEUiCisJaWYgIiRwcm9tcHQiID0gdHJ1ZQorCXRoZW4KKwkJcHJpbnRmICJIaXQgcmV0dXJuIHRvIHN0YXJ0IG1lcmdlIHJlc29sdXRpb24gdG9vbCAoJXMpOiAiICIkbWVyZ2VfdG9vbCIKKwkJcmVhZCBhbnMgfHwgcmV0dXJuIDEKKwlmaQorCisJaWYgYmFzZV9wcmVzZW50CisJdGhlbgorCQlwcmVzZW50PXRydWUKIAllbHNlCi0JICAgIGVjaG8gIiRNRVJHRUQ6IGZpbGUgZG9lcyBub3QgbmVlZCBtZXJnaW5nIgotCWZpCi0JcmV0dXJuIDEKLSAgICBmaQotCi0gICAgZXh0PSIkJCQoZXhwciAiJE1FUkdFRCIgOiAnLipcKFwuW14vXSpcKSQnKSIKLSAgICBCQUNLVVA9Ii4vJE1FUkdFRC5CQUNLVVAuJGV4dCIKLSAgICBMT0NBTD0iLi8kTUVSR0VELkxPQ0FMLiRleHQiCi0gICAgUkVNT1RFPSIuLyRNRVJHRUQuUkVNT1RFLiRleHQiCi0gICAgQkFTRT0iLi8kTUVSR0VELkJBU0UuJGV4dCIKLQotICAgIGJhc2VfbW9kZT0kKGdpdCBscy1maWxlcyAtdSAtLSAiJE1FUkdFRCIgfCBhd2sgJ3tpZiAoJDM9PTEpIHByaW50ICQxO30nKQotICAgIGxvY2FsX21vZGU9JChnaXQgbHMtZmlsZXMgLXUgLS0gIiRNRVJHRUQiIHwgYXdrICd7aWYgKCQzPT0yKSBwcmludCAkMTt9JykKLSAgICByZW1vdGVfbW9kZT0kKGdpdCBscy1maWxlcyAtdSAtLSAiJE1FUkdFRCIgfCBhd2sgJ3tpZiAoJDM9PTMpIHByaW50ICQxO30nKQotCi0gICAgaWYgaXNfc3VibW9kdWxlICIkbG9jYWxfbW9kZSIgfHwgaXNfc3VibW9kdWxlICIkcmVtb3RlX21vZGUiOyB0aGVuCi0JZWNobyAiU3VibW9kdWxlIG1lcmdlIGNvbmZsaWN0IGZvciAnJE1FUkdFRCc6IgotCWxvY2FsX3NoYTE9JChnaXQgbHMtZmlsZXMgLXUgLS0gIiRNRVJHRUQiIHwgYXdrICd7aWYgKCQzPT0yKSBwcmludCAkMjt9JykKLQlyZW1vdGVfc2hhMT0kKGdpdCBscy1maWxlcyAtdSAtLSAiJE1FUkdFRCIgfCBhd2sgJ3tpZiAoJDM9PTMpIHByaW50ICQyO30nKQotCWRlc2NyaWJlX2ZpbGUgIiRsb2NhbF9tb2RlIiAibG9jYWwiICIkbG9jYWxfc2hhMSIKLQlkZXNjcmliZV9maWxlICIkcmVtb3RlX21vZGUiICJyZW1vdGUiICIkcmVtb3RlX3NoYTEiCi0JcmVzb2x2ZV9zdWJtb2R1bGVfbWVyZ2UKLQlyZXR1cm4KLSAgICBmaQotCi0gICAgbXYgLS0gIiRNRVJHRUQiICIkQkFDS1VQIgotICAgIGNwIC0tICIkQkFDS1VQIiAiJE1FUkdFRCIKLQotICAgIGNoZWNrb3V0X3N0YWdlZF9maWxlIDEgIiRNRVJHRUQiICIkQkFTRSIKLSAgICBjaGVja291dF9zdGFnZWRfZmlsZSAyICIkTUVSR0VEIiAiJExPQ0FMIgotICAgIGNoZWNrb3V0X3N0YWdlZF9maWxlIDMgIiRNRVJHRUQiICIkUkVNT1RFIgotCi0gICAgaWYgdGVzdCAteiAiJGxvY2FsX21vZGUiIC1vIC16ICIkcmVtb3RlX21vZGUiOyB0aGVuCi0JZWNobyAiRGVsZXRlZCBtZXJnZSBjb25mbGljdCBmb3IgJyRNRVJHRUQnOiIKLQlkZXNjcmliZV9maWxlICIkbG9jYWxfbW9kZSIgImxvY2FsIiAiJExPQ0FMIgotCWRlc2NyaWJlX2ZpbGUgIiRyZW1vdGVfbW9kZSIgInJlbW90ZSIgIiRSRU1PVEUiCi0JcmVzb2x2ZV9kZWxldGVkX21lcmdlCi0JcmV0dXJuCi0gICAgZmkKLQotICAgIGlmIGlzX3N5bWxpbmsgIiRsb2NhbF9tb2RlIiB8fCBpc19zeW1saW5rICIkcmVtb3RlX21vZGUiOyB0aGVuCi0JZWNobyAiU3ltYm9saWMgbGluayBtZXJnZSBjb25mbGljdCBmb3IgJyRNRVJHRUQnOiIKLQlkZXNjcmliZV9maWxlICIkbG9jYWxfbW9kZSIgImxvY2FsIiAiJExPQ0FMIgotCWRlc2NyaWJlX2ZpbGUgIiRyZW1vdGVfbW9kZSIgInJlbW90ZSIgIiRSRU1PVEUiCi0JcmVzb2x2ZV9zeW1saW5rX21lcmdlCi0JcmV0dXJuCi0gICAgZmkKLQotICAgIGVjaG8gIk5vcm1hbCBtZXJnZSBjb25mbGljdCBmb3IgJyRNRVJHRUQnOiIKLSAgICBkZXNjcmliZV9maWxlICIkbG9jYWxfbW9kZSIgImxvY2FsIiAiJExPQ0FMIgotICAgIGRlc2NyaWJlX2ZpbGUgIiRyZW1vdGVfbW9kZSIgInJlbW90ZSIgIiRSRU1PVEUiCi0gICAgaWYgIiRwcm9tcHQiID0gdHJ1ZTsgdGhlbgotCXByaW50ZiAiSGl0IHJldHVybiB0byBzdGFydCBtZXJnZSByZXNvbHV0aW9uIHRvb2wgKCVzKTogIiAiJG1lcmdlX3Rvb2wiCi0JcmVhZCBhbnMgfHwgcmV0dXJuIDEKLSAgICBmaQotCi0gICAgaWYgYmFzZV9wcmVzZW50OyB0aGVuCi0JICAgIHByZXNlbnQ9dHJ1ZQotICAgIGVsc2UKLQkgICAgcHJlc2VudD1mYWxzZQotICAgIGZpCi0KLSAgICBpZiAhIHJ1bl9tZXJnZV90b29sICIkbWVyZ2VfdG9vbCIgIiRwcmVzZW50IjsgdGhlbgotCWVjaG8gIm1lcmdlIG9mICRNRVJHRUQgZmFpbGVkIiAxPiYyCi0JbXYgLS0gIiRCQUNLVVAiICIkTUVSR0VEIgotCi0JaWYgdGVzdCAiJG1lcmdlX2tlZXBfdGVtcG9yYXJpZXMiID0gImZhbHNlIjsgdGhlbgotCSAgICBjbGVhbnVwX3RlbXBfZmlsZXMKKwkJcHJlc2VudD1mYWxzZQogCWZpCiAKLQlyZXR1cm4gMQotICAgIGZpCisJaWYgISBydW5fbWVyZ2VfdG9vbCAiJG1lcmdlX3Rvb2wiICIkcHJlc2VudCIKKwl0aGVuCisJCWVjaG8gIm1lcmdlIG9mICRNRVJHRUQgZmFpbGVkIiAxPiYyCisJCW12IC0tICIkQkFDS1VQIiAiJE1FUkdFRCIKIAotICAgIGlmIHRlc3QgIiRtZXJnZV9rZWVwX2JhY2t1cCIgPSAidHJ1ZSI7IHRoZW4KLQltdiAtLSAiJEJBQ0tVUCIgIiRNRVJHRUQub3JpZyIKLSAgICBlbHNlCi0Jcm0gLS0gIiRCQUNLVVAiCi0gICAgZmkKKwkJaWYgdGVzdCAiJG1lcmdlX2tlZXBfdGVtcG9yYXJpZXMiID0gImZhbHNlIgorCQl0aGVuCisJCQljbGVhbnVwX3RlbXBfZmlsZXMKKwkJZmkKIAotICAgIGdpdCBhZGQgLS0gIiRNRVJHRUQiCi0gICAgY2xlYW51cF90ZW1wX2ZpbGVzCi0gICAgcmV0dXJuIDAKKwkJcmV0dXJuIDEKKwlmaQorCisJaWYgdGVzdCAiJG1lcmdlX2tlZXBfYmFja3VwIiA9ICJ0cnVlIgorCXRoZW4KKwkJbXYgLS0gIiRCQUNLVVAiICIkTUVSR0VELm9yaWciCisJZWxzZQorCQlybSAtLSAiJEJBQ0tVUCIKKwlmaQorCisJZ2l0IGFkZCAtLSAiJE1FUkdFRCIKKwljbGVhbnVwX3RlbXBfZmlsZXMKKwlyZXR1cm4gMAogfQogCiBwcm9tcHQ9JChnaXQgY29uZmlnIC0tYm9vbCBtZXJnZXRvb2wucHJvbXB0IHx8IGVjaG8gdHJ1ZSkKIAogd2hpbGUgdGVzdCAkIyAhPSAwCiBkbwotICAgIGNhc2UgIiQxIiBpbgotCS10fC0tdG9vbCopCi0JICAgIGNhc2UgIiQjLCQxIiBpbgotCQkqLCo9KikKLQkJICAgIG1lcmdlX3Rvb2w9JChleHByICJ6JDEiIDogJ3otW149XSo9XCguKlwpJykKLQkJICAgIDs7Ci0JCTEsKikKLQkJICAgIHVzYWdlIDs7Ci0JCSopCi0JCSAgICBtZXJnZV90b29sPSIkMiIKLQkJICAgIHNoaWZ0IDs7Ci0JICAgIGVzYWMKLQkgICAgOzsKLQkteXwtLW5vLXByb21wdCkKLQkgICAgcHJvbXB0PWZhbHNlCi0JICAgIDs7Ci0JLS1wcm9tcHQpCi0JICAgIHByb21wdD10cnVlCi0JICAgIDs7Ci0JLS0pCi0JICAgIHNoaWZ0Ci0JICAgIGJyZWFrCi0JICAgIDs7Ci0JLSopCi0JICAgIHVzYWdlCi0JICAgIDs7Ci0JKikKLQkgICAgYnJlYWsKLQkgICAgOzsKLSAgICBlc2FjCi0gICAgc2hpZnQKLWRvbmUKLQotcHJvbXB0X2FmdGVyX2ZhaWxlZF9tZXJnZSgpIHsKLSAgICB3aGlsZSB0cnVlOyBkbwotCXByaW50ZiAiQ29udGludWUgbWVyZ2luZyBvdGhlciB1bnJlc29sdmVkIHBhdGhzICh5L24pID8gIgotCXJlYWQgYW5zIHx8IHJldHVybiAxCi0JY2FzZSAiJGFucyIgaW4KLQotCSAgICBbeVldKikKLQkJcmV0dXJuIDAKKwljYXNlICIkMSIgaW4KKwktLXRvb2wtaGVscCkKKwkJc2hvd190b29sX2hlbHAKIAkJOzsKLQotCSAgICBbbk5dKikKLQkJcmV0dXJuIDEKKwktdHwtLXRvb2wqKQorCQljYXNlICIkIywkMSIgaW4KKwkJKiwqPSopCisJCQltZXJnZV90b29sPSQoZXhwciAieiQxIiA6ICd6LVtePV0qPVwoLipcKScpCisJCQk7OworCQkxLCopCisJCQl1c2FnZSA7OworCQkqKQorCQkJbWVyZ2VfdG9vbD0iJDIiCisJCQlzaGlmdCA7OworCQllc2FjCisJCTs7CisJLXl8LS1uby1wcm9tcHQpCisJCXByb21wdD1mYWxzZQorCQk7OworCS0tcHJvbXB0KQorCQlwcm9tcHQ9dHJ1ZQorCQk7OworCS0tKQorCQlzaGlmdAorCQlicmVhaworCQk7OworCS0qKQorCQl1c2FnZQorCQk7OworCSopCisJCWJyZWFrCiAJCTs7CiAJZXNhYwotICAgIGRvbmUKKwlzaGlmdAorZG9uZQorCitwcm9tcHRfYWZ0ZXJfZmFpbGVkX21lcmdlICgpIHsKKwl3aGlsZSB0cnVlCisJZG8KKwkJcHJpbnRmICJDb250aW51ZSBtZXJnaW5nIG90aGVyIHVucmVzb2x2ZWQgcGF0aHMgKHkvbikgPyAiCisJCXJlYWQgYW5zIHx8IHJldHVybiAxCisJCWNhc2UgIiRhbnMiIGluCisJCVt5WV0qKQorCQkJcmV0dXJuIDAKKwkJCTs7CisJCVtuTl0qKQorCQkJcmV0dXJuIDEKKwkJCTs7CisJCWVzYWMKKwlkb25lCiB9CiAKLWlmIHRlc3QgLXogIiRtZXJnZV90b29sIjsgdGhlbgotICAgIG1lcmdlX3Rvb2w9JChnZXRfbWVyZ2VfdG9vbCAiJG1lcmdlX3Rvb2wiKSB8fCBleGl0CitpZiB0ZXN0IC16ICIkbWVyZ2VfdG9vbCIKK3RoZW4KKwltZXJnZV90b29sPSQoZ2V0X21lcmdlX3Rvb2wgIiRtZXJnZV90b29sIikgfHwgZXhpdAogZmkKIG1lcmdlX2tlZXBfYmFja3VwPSIkKGdpdCBjb25maWcgLS1ib29sIG1lcmdldG9vbC5rZWVwQmFja3VwIHx8IGVjaG8gdHJ1ZSkiCiBtZXJnZV9rZWVwX3RlbXBvcmFyaWVzPSIkKGdpdCBjb25maWcgLS1ib29sIG1lcmdldG9vbC5rZWVwVGVtcG9yYXJpZXMgfHwgZWNobyBmYWxzZSkiCkBAIC0zNDgsNDAgKzM4Miw0NCBAQAogcm9sbHVwX3N0YXR1cz0wCiBmaWxlcz0KIAotaWYgdGVzdCAkIyAtZXEgMCA7IHRoZW4KLSAgICBjZF90b190b3BsZXZlbAoraWYgdGVzdCAkIyAtZXEgMAordGhlbgorCWNkX3RvX3RvcGxldmVsCiAKLSAgICBpZiB0ZXN0IC1lICIkR0lUX0RJUi9NRVJHRV9SUiIKLSAgICB0aGVuCi0JZmlsZXM9JChnaXQgcmVyZXJlIHJlbWFpbmluZykKLSAgICBlbHNlCi0JZmlsZXM9JChnaXQgbHMtZmlsZXMgLXUgfCBzZWQgLWUgJ3MvXlteCV0qCS8vJyB8IHNvcnQgLXUpCi0gICAgZmkKKwlpZiB0ZXN0IC1lICIkR0lUX0RJUi9NRVJHRV9SUiIKKwl0aGVuCisJCWZpbGVzPSQoZ2l0IHJlcmVyZSByZW1haW5pbmcpCisJZWxzZQorCQlmaWxlcz0kKGdpdCBscy1maWxlcyAtdSB8IHNlZCAtZSAncy9eW14JXSoJLy8nIHwgc29ydCAtdSkKKwlmaQogZWxzZQotICAgIGZpbGVzPSQoZ2l0IGxzLWZpbGVzIC11IC0tICIkQCIgfCBzZWQgLWUgJ3MvXlteCV0qCS8vJyB8IHNvcnQgLXUpCisJZmlsZXM9JChnaXQgbHMtZmlsZXMgLXUgLS0gIiRAIiB8IHNlZCAtZSAncy9eW14JXSoJLy8nIHwgc29ydCAtdSkKIGZpCiAKLWlmIHRlc3QgLXogIiRmaWxlcyIgOyB0aGVuCi0gICAgZWNobyAiTm8gZmlsZXMgbmVlZCBtZXJnaW5nIgotICAgIGV4aXQgMAoraWYgdGVzdCAteiAiJGZpbGVzIgordGhlbgorCWVjaG8gIk5vIGZpbGVzIG5lZWQgbWVyZ2luZyIKKwlleGl0IDAKIGZpCiAKIHByaW50ZiAiTWVyZ2luZzpcbiIKLXByaW50ZiAiJGZpbGVzXG4iCitwcmludGYgIiVzXG4iICIkZmlsZXMiCiAKIElGUz0nCiAnCiBmb3IgaSBpbiAkZmlsZXMKIGRvCi0gICAgaWYgdGVzdCAkbGFzdF9zdGF0dXMgLW5lIDA7IHRoZW4KLQlwcm9tcHRfYWZ0ZXJfZmFpbGVkX21lcmdlIHx8IGV4aXQgMQotICAgIGZpCi0gICAgcHJpbnRmICJcbiIKLSAgICBtZXJnZV9maWxlICIkaSIKLSAgICBsYXN0X3N0YXR1cz0kPwotICAgIGlmIHRlc3QgJGxhc3Rfc3RhdHVzIC1uZSAwOyB0aGVuCi0Jcm9sbHVwX3N0YXR1cz0xCi0gICAgZmkKKwlpZiB0ZXN0ICRsYXN0X3N0YXR1cyAtbmUgMAorCXRoZW4KKwkJcHJvbXB0X2FmdGVyX2ZhaWxlZF9tZXJnZSB8fCBleGl0IDEKKwlmaQorCXByaW50ZiAiXG4iCisJbWVyZ2VfZmlsZSAiJGkiCisJbGFzdF9zdGF0dXM9JD8KKwlpZiB0ZXN0ICRsYXN0X3N0YXR1cyAtbmUgMAorCXRoZW4KKwkJcm9sbHVwX3N0YXR1cz0xCisJZmkKIGRvbmUKIAogZXhpdCAkcm9sbHVwX3N0YXR1cwpkaWZmIC0tZ2l0IGEvZ2l0LXA0LnB5IGIvZ2l0LXA0LnB5CmluZGV4IGY4OTVhMjQuLjkxMWJiY2UgMTAwNzU1Ci0tLSBhL2dpdC1wNC5weQorKysgYi9naXQtcDQucHkKQEAgLTcsMTAgKzcsMzYgQEAKICMgICAgICAgICAgICAyMDA3IFRyb2xsdGVjaCBBU0EKICMgTGljZW5zZTogTUlUIDxodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocD4KICMKK2ltcG9ydCBzeXMKK2lmIHN5cy5oZXh2ZXJzaW9uIDwgMHgwMjA0MDAwMDoKKyAgICAjIFRoZSBsaW1pdGVyIGlzIHRoZSBzdWJwcm9jZXNzIG1vZHVsZQorICAgIHN5cy5zdGRlcnIud3JpdGUoImdpdC1wNDogcmVxdWlyZXMgUHl0aG9uIDIuNCBvciBsYXRlci5cbiIpCisgICAgc3lzLmV4aXQoMSkKK2ltcG9ydCBvcworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgbWFyc2hhbAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHRpbWUKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3RhdAogCi1pbXBvcnQgb3B0cGFyc2UsIHN5cywgb3MsIG1hcnNoYWwsIHN1YnByb2Nlc3MsIHNoZWx2ZQotaW1wb3J0IHRlbXBmaWxlLCBnZXRvcHQsIG9zLnBhdGgsIHRpbWUsIHBsYXRmb3JtCi1pbXBvcnQgcmUsIHNodXRpbAordHJ5OgorICAgIGZyb20gc3VicHJvY2VzcyBpbXBvcnQgQ2FsbGVkUHJvY2Vzc0Vycm9yCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgIyBmcm9tIHB5dGhvbjIuNzpzdWJwcm9jZXNzLnB5CisgICAgIyBFeGNlcHRpb24gY2xhc3NlcyB1c2VkIGJ5IHRoaXMgbW9kdWxlLgorICAgIGNsYXNzIENhbGxlZFByb2Nlc3NFcnJvcihFeGNlcHRpb24pOgorICAgICAgICAiIiJUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhIHByb2Nlc3MgcnVuIGJ5IGNoZWNrX2NhbGwoKSByZXR1cm5zCisgICAgICAgIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMuICBUaGUgZXhpdCBzdGF0dXMgd2lsbCBiZSBzdG9yZWQgaW4gdGhlCisgICAgICAgIHJldHVybmNvZGUgYXR0cmlidXRlLiIiIgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcmV0dXJuY29kZSwgY21kKToKKyAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IHJldHVybmNvZGUKKyAgICAgICAgICAgIHNlbGYuY21kID0gY21kCisgICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuICJDb21tYW5kICclcycgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgJWQiICUgKHNlbGYuY21kLCBzZWxmLnJldHVybmNvZGUpCiAKIHZlcmJvc2UgPSBGYWxzZQogCkBAIC01MywxMiArNzksMjcgQEAKICAgICAgICAgcmVhbF9jbWQgKz0gY21kCiAgICAgcmV0dXJuIHJlYWxfY21kCiAKLWRlZiBjaGRpcihkaXIpOgotICAgICMgUDQgdXNlcyB0aGUgUFdEIGVudmlyb25tZW50IHZhcmlhYmxlIHJhdGhlciB0aGFuIGdldGN3ZCgpLiBTaW5jZSB3ZSdyZQotICAgICMgbm90IHVzaW5nIHRoZSBzaGVsbCwgd2UgaGF2ZSB0byBzZXQgaXQgb3Vyc2VsdmVzLiAgVGhpcyBwYXRoIGNvdWxkCi0gICAgIyBiZSByZWxhdGl2ZSwgc28gZ28gdGhlcmUgZmlyc3QsIHRoZW4gZmlndXJlIG91dCB3aGVyZSB3ZSBlbmRlZCB1cC4KLSAgICBvcy5jaGRpcihkaXIpCi0gICAgb3MuZW52aXJvblsnUFdEJ10gPSBvcy5nZXRjd2QoKQorZGVmIGNoZGlyKHBhdGgsIGlzX2NsaWVudF9wYXRoPUZhbHNlKToKKyAgICAiIiJEbyBjaGRpciB0byB0aGUgZ2l2ZW4gcGF0aCwgYW5kIHNldCB0aGUgUFdEIGVudmlyb25tZW50CisgICAgICAgdmFyaWFibGUgZm9yIHVzZSBieSBQNC4gIEl0IGRvZXMgbm90IGxvb2sgYXQgZ2V0Y3dkKCkgb3V0cHV0LgorICAgICAgIFNpbmNlIHdlJ3JlIG5vdCB1c2luZyB0aGUgc2hlbGwsIGl0IGlzIG5lY2Vzc2FyeSB0byBzZXQgdGhlCisgICAgICAgUFdEIGVudmlyb25tZW50IHZhcmlhYmxlIGV4cGxpY2l0bHkuCisKKyAgICAgICBOb3JtYWxseSwgZXhwYW5kIHRoZSBwYXRoIHRvIGZvcmNlIGl0IHRvIGJlIGFic29sdXRlLiAgVGhpcworICAgICAgIGFkZHJlc3NlcyB0aGUgdXNlIG9mIHJlbGF0aXZlIHBhdGggbmFtZXMgaW5zaWRlIFA0IHNldHRpbmdzLAorICAgICAgIGUuZy4gUDRDT05GSUc9LnA0Y29uZmlnLiAgUDQgZG9lcyBub3Qgc2ltcGx5IG9wZW4gdGhlIGZpbGVuYW1lCisgICAgICAgYXMgZ2l2ZW47IGl0IGxvb2tzIGZvciAucDRjb25maWcgdXNpbmcgUFdELgorCisgICAgICAgSWYgaXNfY2xpZW50X3BhdGgsIHRoZSBwYXRoIHdhcyBoYW5kZWQgdG8gdXMgZGlyZWN0bHkgYnkgcDQsCisgICAgICAgYW5kIG1heSBiZSBhIHN5bWJvbGljIGxpbmsuICBEbyBub3QgY2FsbCBvcy5nZXRjd2QoKSBpbiB0aGlzCisgICAgICAgY2FzZSwgYmVjYXVzZSBpdCB3aWxsIGNhdXNlIHA0IHRvIHRoaW5rIHRoYXQgUFdEIGlzIG5vdCBpbnNpZGUKKyAgICAgICB0aGUgY2xpZW50IHBhdGguCisgICAgICAgIiIiCisKKyAgICBvcy5jaGRpcihwYXRoKQorICAgIGlmIG5vdCBpc19jbGllbnRfcGF0aDoKKyAgICAgICAgcGF0aCA9IG9zLmdldGN3ZCgpCisgICAgb3MuZW52aXJvblsnUFdEJ10gPSBwYXRoCiAKIGRlZiBkaWUobXNnKToKICAgICBpZiB2ZXJib3NlOgpAQCAtMTIwLDE3ICsxNjEsNjUgQEAKICAgICByZWFsX2NtZCA9IHA0X2J1aWxkX2NtZChjKQogICAgIHJldHVybiByZWFkX3BpcGVfbGluZXMocmVhbF9jbWQpCiAKK2RlZiBwNF9oYXNfY29tbWFuZChjbWQpOgorICAgICIiIkFzayBwNCBmb3IgaGVscCBvbiB0aGlzIGNvbW1hbmQuICBJZiBpdCByZXR1cm5zIGFuIGVycm9yLCB0aGUKKyAgICAgICBjb21tYW5kIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgdmVyc2lvbiBvZiBwNC4iIiIKKyAgICByZWFsX2NtZCA9IHA0X2J1aWxkX2NtZChbImhlbHAiLCBjbWRdKQorICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKHJlYWxfY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgIHAuY29tbXVuaWNhdGUoKQorICAgIHJldHVybiBwLnJldHVybmNvZGUgPT0gMAorCitkZWYgcDRfaGFzX21vdmVfY29tbWFuZCgpOgorICAgICIiIlNlZSBpZiB0aGUgbW92ZSBjb21tYW5kIGV4aXN0cywgdGhhdCBpdCBzdXBwb3J0cyAtaywgYW5kIHRoYXQKKyAgICAgICBpdCBoYXMgbm90IGJlZW4gYWRtaW5pc3RyYXRpdmVseSBkaXNhYmxlZC4gIFRoZSBhcmd1bWVudHMKKyAgICAgICBtdXN0IGJlIGNvcnJlY3QsIGJ1dCB0aGUgZmlsZW5hbWVzIGRvIG5vdCBoYXZlIHRvIGV4aXN0LiAgVXNlCisgICAgICAgb25lcyB3aXRoIHdpbGRjYXJkcyBzbyBldmVuIGlmIHRoZXkgZXhpc3QsIGl0IHdpbGwgZmFpbC4iIiIKKworICAgIGlmIG5vdCBwNF9oYXNfY29tbWFuZCgibW92ZSIpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBjbWQgPSBwNF9idWlsZF9jbWQoWyJtb3ZlIiwgIi1rIiwgIkBmcm9tIiwgIkB0byJdKQorICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAob3V0LCBlcnIpID0gcC5jb21tdW5pY2F0ZSgpCisgICAgIyByZXR1cm4gY29kZSB3aWxsIGJlIDEgaW4gZWl0aGVyIGNhc2UKKyAgICBpZiBlcnIuZmluZCgiSW52YWxpZCBvcHRpb24iKSA+PSAwOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiBlcnIuZmluZCgiZGlzYWJsZWQiKSA+PSAwOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAjIGFzc3VtZSBpdCBmYWlsZWQgYmVjYXVzZSBALi4uIHdhcyBpbnZhbGlkIGNoYW5nZWxpc3QKKyAgICByZXR1cm4gVHJ1ZQorCiBkZWYgc3lzdGVtKGNtZCk6CiAgICAgZXhwYW5kID0gaXNpbnN0YW5jZShjbWQsYmFzZXN0cmluZykKICAgICBpZiB2ZXJib3NlOgogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJleGVjdXRpbmcgJXNcbiIgJSBzdHIoY21kKSkKLSAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoY21kLCBzaGVsbD1leHBhbmQpCisgICAgcmV0Y29kZSA9IHN1YnByb2Nlc3MuY2FsbChjbWQsIHNoZWxsPWV4cGFuZCkKKyAgICBpZiByZXRjb2RlOgorICAgICAgICByYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IocmV0Y29kZSwgY21kKQogCiBkZWYgcDRfc3lzdGVtKGNtZCk6CiAgICAgIiIiU3BlY2lmaWNhbGx5IGludm9rZSBwNCBhcyB0aGUgc3lzdGVtIGNvbW1hbmQuICIiIgogICAgIHJlYWxfY21kID0gcDRfYnVpbGRfY21kKGNtZCkKICAgICBleHBhbmQgPSBpc2luc3RhbmNlKHJlYWxfY21kLCBiYXNlc3RyaW5nKQotICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChyZWFsX2NtZCwgc2hlbGw9ZXhwYW5kKQorICAgIHJldGNvZGUgPSBzdWJwcm9jZXNzLmNhbGwocmVhbF9jbWQsIHNoZWxsPWV4cGFuZCkKKyAgICBpZiByZXRjb2RlOgorICAgICAgICByYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IocmV0Y29kZSwgcmVhbF9jbWQpCisKK19wNF92ZXJzaW9uX3N0cmluZyA9IE5vbmUKK2RlZiBwNF92ZXJzaW9uX3N0cmluZygpOgorICAgICIiIlJlYWQgdGhlIHZlcnNpb24gc3RyaW5nLCBzaG93aW5nIGp1c3QgdGhlIGxhc3QgbGluZSwgd2hpY2gKKyAgICAgICBob3BlZnVsbHkgaXMgdGhlIGludGVyZXN0aW5nIHZlcnNpb24gYml0LgorCisgICAgICAgJCBwNCAtVgorICAgICAgIFBlcmZvcmNlIC0gVGhlIEZhc3QgU29mdHdhcmUgQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IFN5c3RlbS4KKyAgICAgICBDb3B5cmlnaHQgMTk5NS0yMDExIFBlcmZvcmNlIFNvZnR3YXJlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICAgICBSZXYuIFA0L05UWDg2LzIwMTEuMS8zOTM5NzUgKDIwMTEvMTIvMTYpLgorICAgICIiIgorICAgIGdsb2JhbCBfcDRfdmVyc2lvbl9zdHJpbmcKKyAgICBpZiBub3QgX3A0X3ZlcnNpb25fc3RyaW5nOgorICAgICAgICBhID0gcDRfcmVhZF9waXBlX2xpbmVzKFsiLVYiXSkKKyAgICAgICAgX3A0X3ZlcnNpb25fc3RyaW5nID0gYVstMV0ucnN0cmlwKCkKKyAgICByZXR1cm4gX3A0X3ZlcnNpb25fc3RyaW5nCiAKIGRlZiBwNF9pbnRlZ3JhdGUoc3JjLCBkZXN0KToKICAgICBwNF9zeXN0ZW0oWyJpbnRlZ3JhdGUiLCAiLUR0Iiwgd2lsZGNhcmRfZW5jb2RlKHNyYyksIHdpbGRjYXJkX2VuY29kZShkZXN0KV0pCkBAIC0xNTcsNiArMjQ2LDMyIEBACiBkZWYgcDRfcmVvcGVuKHR5cGUsIGYpOgogICAgIHA0X3N5c3RlbShbInJlb3BlbiIsICItdCIsIHR5cGUsIHdpbGRjYXJkX2VuY29kZShmKV0pCiAKK2RlZiBwNF9tb3ZlKHNyYywgZGVzdCk6CisgICAgcDRfc3lzdGVtKFsibW92ZSIsICItayIsIHdpbGRjYXJkX2VuY29kZShzcmMpLCB3aWxkY2FyZF9lbmNvZGUoZGVzdCldKQorCitkZWYgcDRfZGVzY3JpYmUoY2hhbmdlKToKKyAgICAiIiJNYWtlIHN1cmUgaXQgcmV0dXJucyBhIHZhbGlkIHJlc3VsdCBieSBjaGVja2luZyBmb3IKKyAgICAgICB0aGUgcHJlc2VuY2Ugb2YgZmllbGQgInRpbWUiLiAgUmV0dXJuIGEgZGljdCBvZiB0aGUKKyAgICAgICByZXN1bHRzLiIiIgorCisgICAgZHMgPSBwNENtZExpc3QoWyJkZXNjcmliZSIsICItcyIsIHN0cihjaGFuZ2UpXSkKKyAgICBpZiBsZW4oZHMpICE9IDE6CisgICAgICAgIGRpZSgicDQgZGVzY3JpYmUgLXMgJWQgZGlkIG5vdCByZXR1cm4gMSByZXN1bHQ6ICVzIiAlIChjaGFuZ2UsIHN0cihkcykpKQorCisgICAgZCA9IGRzWzBdCisKKyAgICBpZiAicDRFeGl0Q29kZSIgaW4gZDoKKyAgICAgICAgZGllKCJwNCBkZXNjcmliZSAtcyAlZCBleGl0ZWQgd2l0aCAlZDogJXMiICUgKGNoYW5nZSwgZFsicDRFeGl0Q29kZSJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGQpKSkKKyAgICBpZiAiY29kZSIgaW4gZDoKKyAgICAgICAgaWYgZFsiY29kZSJdID09ICJlcnJvciI6CisgICAgICAgICAgICBkaWUoInA0IGRlc2NyaWJlIC1zICVkIHJldHVybmVkIGVycm9yIGNvZGU6ICVzIiAlIChjaGFuZ2UsIHN0cihkKSkpCisKKyAgICBpZiAidGltZSIgbm90IGluIGQ6CisgICAgICAgIGRpZSgicDQgZGVzY3JpYmUgLXMgJWQgcmV0dXJuZWQgbm8gXCJ0aW1lXCI6ICVzIiAlIChjaGFuZ2UsIHN0cihkKSkpCisKKyAgICByZXR1cm4gZAorCiAjCiAjIENhbm9uaWNhbGl6ZSB0aGUgcDQgdHlwZSBhbmQgcmV0dXJuIGEgdHVwbGUgb2YgdGhlCiAjIGJhc2UgdHlwZSwgcGx1cyBhbnkgbW9kaWZpZXJzLiAgU2VlICJwNCBoZWxwIGZpbGV0eXBlcyIKQEAgLTIxNSw3ICszMzAsNyBAQAogICAgICAgICBwYXR0ZXJuID0gciIiIgogICAgICAgICAgICAgXCQgICAgICAgICAgICAgICMgU3RhcnRzIHdpdGggYSBkb2xsYXIsIGZvbGxvd2VkIGJ5Li4uCiAgICAgICAgICAgICAoJXMpICAgICAgICAgICAgIyBvbmUgb2YgdGhlIGtleXdvcmRzLCBmb2xsb3dlZCBieS4uLgotICAgICAgICAgICAgKDpbXiRdKyk/ICAgICAgICMgcG9zc2libHkgYW4gb2xkIGV4cGFuc2lvbiwgZm9sbG93ZWQgYnkuLi4KKyAgICAgICAgICAgICg6W14kXG5dKyk/ICAgICAjIHBvc3NpYmx5IGFuIG9sZCBleHBhbnNpb24sIGZvbGxvd2VkIGJ5Li4uCiAgICAgICAgICAgICBcJCAgICAgICAgICAgICAgIyBhbm90aGVyIGRvbGxhcgogICAgICAgICAgICAgIiIiICUga3dvcmRzCiAgICAgICAgIHJldHVybiBwYXR0ZXJuCkBAIC00NzksNDMgKzU5NCw3NSBAQAogICAgIHJldHVybiBwcm9jLndhaXQoKSA9PSAwOwogCiBfZ2l0Q29uZmlnID0ge30KLWRlZiBnaXRDb25maWcoa2V5LCBhcmdzID0gTm9uZSk6ICMgc2V0IGFyZ3MgdG8gIi0tYm9vbCIsIGZvciBpbnN0YW5jZQorCitkZWYgZ2l0Q29uZmlnKGtleSk6CiAgICAgaWYgbm90IF9naXRDb25maWcuaGFzX2tleShrZXkpOgotICAgICAgICBhcmdzRmlsdGVyID0gIiIKLSAgICAgICAgaWYgYXJncyAhPSBOb25lOgotICAgICAgICAgICAgYXJnc0ZpbHRlciA9ICIlcyAiICUgYXJncwotICAgICAgICBjbWQgPSAiZ2l0IGNvbmZpZyAlcyVzIiAlIChhcmdzRmlsdGVyLCBrZXkpCi0gICAgICAgIF9naXRDb25maWdba2V5XSA9IHJlYWRfcGlwZShjbWQsIGlnbm9yZV9lcnJvcj1UcnVlKS5zdHJpcCgpCisgICAgICAgIGNtZCA9IFsgImdpdCIsICJjb25maWciLCBrZXkgXQorICAgICAgICBzID0gcmVhZF9waXBlKGNtZCwgaWdub3JlX2Vycm9yPVRydWUpCisgICAgICAgIF9naXRDb25maWdba2V5XSA9IHMuc3RyaXAoKQorICAgIHJldHVybiBfZ2l0Q29uZmlnW2tleV0KKworZGVmIGdpdENvbmZpZ0Jvb2woa2V5KToKKyAgICAiIiJSZXR1cm4gYSBib29sLCB1c2luZyBnaXQgY29uZmlnIC0tYm9vbC4gIEl0IGlzIFRydWUgb25seSBpZiB0aGUKKyAgICAgICB2YXJpYWJsZSBpcyBzZXQgdG8gdHJ1ZSwgYW5kIEZhbHNlIGlmIHNldCB0byBmYWxzZSBvciBub3QgcHJlc2VudAorICAgICAgIGluIHRoZSBjb25maWcuIiIiCisKKyAgICBpZiBub3QgX2dpdENvbmZpZy5oYXNfa2V5KGtleSk6CisgICAgICAgIGNtZCA9IFsgImdpdCIsICJjb25maWciLCAiLS1ib29sIiwga2V5IF0KKyAgICAgICAgcyA9IHJlYWRfcGlwZShjbWQsIGlnbm9yZV9lcnJvcj1UcnVlKQorICAgICAgICB2ID0gcy5zdHJpcCgpCisgICAgICAgIF9naXRDb25maWdba2V5XSA9IHYgPT0gInRydWUiCiAgICAgcmV0dXJuIF9naXRDb25maWdba2V5XQogCiBkZWYgZ2l0Q29uZmlnTGlzdChrZXkpOgogICAgIGlmIG5vdCBfZ2l0Q29uZmlnLmhhc19rZXkoa2V5KToKLSAgICAgICAgX2dpdENvbmZpZ1trZXldID0gcmVhZF9waXBlKCJnaXQgY29uZmlnIC0tZ2V0LWFsbCAlcyIgJSBrZXksIGlnbm9yZV9lcnJvcj1UcnVlKS5zdHJpcCgpLnNwbGl0KG9zLmxpbmVzZXApCisgICAgICAgIHMgPSByZWFkX3BpcGUoWyJnaXQiLCAiY29uZmlnIiwgIi0tZ2V0LWFsbCIsIGtleV0sIGlnbm9yZV9lcnJvcj1UcnVlKQorICAgICAgICBfZ2l0Q29uZmlnW2tleV0gPSBzLnN0cmlwKCkuc3BsaXQob3MubGluZXNlcCkKICAgICByZXR1cm4gX2dpdENvbmZpZ1trZXldCiAKLWRlZiBwNEJyYW5jaGVzSW5HaXQoYnJhbmNoZXNBcmVJblJlbW90ZXMgPSBUcnVlKToKK2RlZiBwNEJyYW5jaGVzSW5HaXQoYnJhbmNoZXNBcmVJblJlbW90ZXM9VHJ1ZSk6CisgICAgIiIiRmluZCBhbGwgdGhlIGJyYW5jaGVzIHdob3NlIG5hbWVzIHN0YXJ0IHdpdGggInA0LyIsIGxvb2tpbmcKKyAgICAgICBpbiByZW1vdGVzIG9yIGhlYWRzIGFzIHNwZWNpZmllZCBieSB0aGUgYXJndW1lbnQuICBSZXR1cm4KKyAgICAgICBhIGRpY3Rpb25hcnkgb2YgeyBicmFuY2g6IHJldmlzaW9uIH0gZm9yIGVhY2ggb25lIGZvdW5kLgorICAgICAgIFRoZSBicmFuY2ggbmFtZXMgYXJlIHRoZSBzaG9ydCBuYW1lcywgd2l0aG91dCBhbnkKKyAgICAgICAicDQvIiBwcmVmaXguIiIiCisKICAgICBicmFuY2hlcyA9IHt9CiAKICAgICBjbWRsaW5lID0gImdpdCByZXYtcGFyc2UgLS1zeW1ib2xpYyAiCiAgICAgaWYgYnJhbmNoZXNBcmVJblJlbW90ZXM6Ci0gICAgICAgIGNtZGxpbmUgKz0gIiAtLXJlbW90ZXMiCisgICAgICAgIGNtZGxpbmUgKz0gIi0tcmVtb3RlcyIKICAgICBlbHNlOgotICAgICAgICBjbWRsaW5lICs9ICIgLS1icmFuY2hlcyIKKyAgICAgICAgY21kbGluZSArPSAiLS1icmFuY2hlcyIKIAogICAgIGZvciBsaW5lIGluIHJlYWRfcGlwZV9saW5lcyhjbWRsaW5lKToKICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQogCi0gICAgICAgICMjIG9ubHkgaW1wb3J0IHRvIHA0LwotICAgICAgICBpZiBub3QgbGluZS5zdGFydHN3aXRoKCdwNC8nKSBvciBsaW5lID09ICJwNC9IRUFEIjoKKyAgICAgICAgIyBvbmx5IGltcG9ydCB0byBwNC8KKyAgICAgICAgaWYgbm90IGxpbmUuc3RhcnRzd2l0aCgncDQvJyk6CiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBicmFuY2ggPSBsaW5lCisgICAgICAgICMgc3BlY2lhbCBzeW1ib2xpYyByZWYgdG8gcDQvbWFzdGVyCisgICAgICAgIGlmIGxpbmUgPT0gInA0L0hFQUQiOgorICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAjIHN0cmlwIG9mZiBwNAotICAgICAgICBicmFuY2ggPSByZS5zdWIgKCJecDQvIiwgIiIsIGxpbmUpCisgICAgICAgICMgc3RyaXAgb2ZmIHA0LyBwcmVmaXgKKyAgICAgICAgYnJhbmNoID0gbGluZVtsZW4oInA0LyIpOl0KIAogICAgICAgICBicmFuY2hlc1ticmFuY2hdID0gcGFyc2VSZXZpc2lvbihsaW5lKQorCiAgICAgcmV0dXJuIGJyYW5jaGVzCiAKK2RlZiBicmFuY2hfZXhpc3RzKGJyYW5jaCk6CisgICAgIiIiTWFrZSBzdXJlIHRoYXQgdGhlIGdpdmVuIHJlZiBuYW1lIHJlYWxseSBleGlzdHMuIiIiCisKKyAgICBjbWQgPSBbICJnaXQiLCAicmV2LXBhcnNlIiwgIi0tc3ltYm9saWMiLCAiLS12ZXJpZnkiLCBicmFuY2ggXQorICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICBvdXQsIF8gPSBwLmNvbW11bmljYXRlKCkKKyAgICBpZiBwLnJldHVybmNvZGU6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgICMgZXhwZWN0IGV4YWN0bHkgb25lIGxpbmUgb2Ygb3V0cHV0OiB0aGUgYnJhbmNoIG5hbWUKKyAgICByZXR1cm4gb3V0LnJzdHJpcCgpID09IGJyYW5jaAorCiBkZWYgZmluZFVwc3RyZWFtQnJhbmNoUG9pbnQoaGVhZCA9ICJIRUFEIik6CiAgICAgYnJhbmNoZXMgPSBwNEJyYW5jaGVzSW5HaXQoKQogICAgICMgbWFwIGZyb20gZGVwb3QtcGF0aCB0byBicmFuY2ggbmFtZQpAQCAtNjE3LDggKzc2NCw3IEBACiAgICAgIwogICAgICMgd2UgbWF5IG9yIG1heSBub3QgaGF2ZSBhIHByb2JsZW0uIElmIHlvdSBoYXZlIGNvcmUuaWdub3JlY2FzZT10cnVlLAogICAgICMgd2UgdHJlYXQgRGlyQSBhbmQgZGlyYSBhcyB0aGUgc2FtZSBkaXJlY3RvcnkKLSAgICBpZ25vcmVjYXNlID0gZ2l0Q29uZmlnKCJjb3JlLmlnbm9yZWNhc2UiLCAiLS1ib29sIikgPT0gInRydWUiCi0gICAgaWYgaWdub3JlY2FzZToKKyAgICBpZiBnaXRDb25maWdCb29sKCJjb3JlLmlnbm9yZWNhc2UiKToKICAgICAgICAgcmV0dXJuIHBhdGgubG93ZXIoKS5zdGFydHN3aXRoKHByZWZpeC5sb3dlcigpKQogICAgIHJldHVybiBwYXRoLnN0YXJ0c3dpdGgocHJlZml4KQogCkBAIC02ODgsNyArODM0LDggQEAKICAgICByZXR1cm4gcGF0aAogCiBkZWYgd2lsZGNhcmRfcHJlc2VudChwYXRoKToKLSAgICByZXR1cm4gcGF0aC50cmFuc2xhdGUoTm9uZSwgIiojQCUiKSAhPSBwYXRoCisgICAgbSA9IHJlLnNlYXJjaCgiWyojQCVdIiwgcGF0aCkKKyAgICByZXR1cm4gbSBpcyBub3QgTm9uZQogCiBjbGFzcyBDb21tYW5kOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKQEAgLTgzMiw2ICs5NzksOSBAQAogICAgICAgICByZXR1cm4gVHJ1ZQogCiBjbGFzcyBQNFN1Ym1pdChDb21tYW5kLCBQNFVzZXJNYXApOgorCisgICAgY29uZmxpY3RfYmVoYXZpb3JfY2hvaWNlcyA9ICgiYXNrIiwgInNraXAiLCAicXVpdCIpCisKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIENvbW1hbmQuX19pbml0X18oc2VsZikKICAgICAgICAgUDRVc2VyTWFwLl9faW5pdF9fKHNlbGYpCkBAIC04NDEsMjMgKzk5MSw1NyBAQAogICAgICAgICAgICAgICAgICMgcHJlc2VydmUgdGhlIHVzZXIsIHJlcXVpcmVzIHJlbGV2YW50IHA0IHBlcm1pc3Npb25zCiAgICAgICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tcHJlc2VydmUtdXNlciIsIGRlc3Q9InByZXNlcnZlVXNlciIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpLAogICAgICAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWV4cG9ydC1sYWJlbHMiLCBkZXN0PSJleHBvcnRMYWJlbHMiLCBhY3Rpb249InN0b3JlX3RydWUiKSwKKyAgICAgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1kcnktcnVuIiwgIi1uIiwgZGVzdD0iZHJ5X3J1biIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpLAorICAgICAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXByZXBhcmUtcDQtb25seSIsIGRlc3Q9InByZXBhcmVfcDRfb25seSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpLAorICAgICAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWNvbmZsaWN0IiwgZGVzdD0iY29uZmxpY3RfYmVoYXZpb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9c2VsZi5jb25mbGljdF9iZWhhdmlvcl9jaG9pY2VzKSwKKyAgICAgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1icmFuY2giLCBkZXN0PSJicmFuY2giKSwKICAgICAgICAgXQogICAgICAgICBzZWxmLmRlc2NyaXB0aW9uID0gIlN1Ym1pdCBjaGFuZ2VzIGZyb20gZ2l0IHRvIHRoZSBwZXJmb3JjZSBkZXBvdC4iCiAgICAgICAgIHNlbGYudXNhZ2UgKz0gIiBbbmFtZSBvZiBnaXQgYnJhbmNoIHRvIHN1Ym1pdCBpbnRvIHBlcmZvcmNlIGRlcG90XSIKLSAgICAgICAgc2VsZi5pbnRlcmFjdGl2ZSA9IFRydWUKICAgICAgICAgc2VsZi5vcmlnaW4gPSAiIgogICAgICAgICBzZWxmLmRldGVjdFJlbmFtZXMgPSBGYWxzZQotICAgICAgICBzZWxmLnByZXNlcnZlVXNlciA9IGdpdENvbmZpZygiZ2l0LXA0LnByZXNlcnZlVXNlciIpLmxvd2VyKCkgPT0gInRydWUiCisgICAgICAgIHNlbGYucHJlc2VydmVVc2VyID0gZ2l0Q29uZmlnQm9vbCgiZ2l0LXA0LnByZXNlcnZlVXNlciIpCisgICAgICAgIHNlbGYuZHJ5X3J1biA9IEZhbHNlCisgICAgICAgIHNlbGYucHJlcGFyZV9wNF9vbmx5ID0gRmFsc2UKKyAgICAgICAgc2VsZi5jb25mbGljdF9iZWhhdmlvciA9IE5vbmUKICAgICAgICAgc2VsZi5pc1dpbmRvd3MgPSAocGxhdGZvcm0uc3lzdGVtKCkgPT0gIldpbmRvd3MiKQogICAgICAgICBzZWxmLmV4cG9ydExhYmVscyA9IEZhbHNlCisgICAgICAgIHNlbGYucDRIYXNNb3ZlQ29tbWFuZCA9IHA0X2hhc19tb3ZlX2NvbW1hbmQoKQorICAgICAgICBzZWxmLmJyYW5jaCA9IE5vbmUKIAogICAgIGRlZiBjaGVjayhzZWxmKToKICAgICAgICAgaWYgbGVuKHA0Q21kTGlzdCgib3BlbmVkIC4uLiIpKSA+IDA6CiAgICAgICAgICAgICBkaWUoIllvdSBoYXZlIGZpbGVzIG9wZW5lZCB3aXRoIHBlcmZvcmNlISBDbG9zZSB0aGVtIGJlZm9yZSBzdGFydGluZyB0aGUgc3luYy4iKQogCi0gICAgIyByZXBsYWNlcyBldmVyeXRoaW5nIGJldHdlZW4gJ0Rlc2NyaXB0aW9uOicgYW5kIHRoZSBuZXh0IFA0IHN1Ym1pdCB0ZW1wbGF0ZSBmaWVsZCB3aXRoIHRoZQotICAgICMgY29tbWl0IG1lc3NhZ2UKLSAgICBkZWYgcHJlcGFyZUxvZ01lc3NhZ2Uoc2VsZiwgdGVtcGxhdGUsIG1lc3NhZ2UpOgorICAgIGRlZiBzZXBhcmF0ZV9qb2JzX2Zyb21fZGVzY3JpcHRpb24oc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICIiIkV4dHJhY3QgYW5kIHJldHVybiBhIHBvc3NpYmxlIEpvYnMgZmllbGQgaW4gdGhlIGNvbW1pdAorICAgICAgICAgICBtZXNzYWdlLiAgSXQgZ29lcyBpbnRvIGEgc2VwYXJhdGUgc2VjdGlvbiBpbiB0aGUgcDQgY2hhbmdlCisgICAgICAgICAgIHNwZWNpZmljYXRpb24uCisKKyAgICAgICAgICAgQSBqb2JzIGxpbmUgc3RhcnRzIHdpdGggIkpvYnM6IiBhbmQgbG9va3MgbGlrZSBhIG5ldyBmaWVsZAorICAgICAgICAgICBpbiBhIGZvcm0uICBWYWx1ZXMgYXJlIHdoaXRlLXNwYWNlIHNlcGFyYXRlZCBvbiB0aGUgc2FtZQorICAgICAgICAgICBsaW5lIG9yIG9uIGZvbGxvd2luZyBsaW5lcyB0aGF0IHN0YXJ0IHdpdGggYSB0YWIuCisKKyAgICAgICAgICAgVGhpcyBkb2VzIG5vdCBwYXJzZSBhbmQgZXh0cmFjdCB0aGUgZnVsbCBnaXQgY29tbWl0IG1lc3NhZ2UKKyAgICAgICAgICAgbGlrZSBhIHA0IGZvcm0uICBJdCBqdXN0IHNlZXMgdGhlIEpvYnM6IGxpbmUgYXMgYSBtYXJrZXIKKyAgICAgICAgICAgdG8gcGFzcyBldmVyeXRoaW5nIGZyb20gdGhlbiBvbiBkaXJlY3RseSBpbnRvIHRoZSBwNCBmb3JtLAorICAgICAgICAgICBidXQgb3V0c2lkZSB0aGUgZGVzY3JpcHRpb24gc2VjdGlvbi4KKworICAgICAgICAgICBSZXR1cm4gYSB0dXBsZSAoc3RyaXBwZWQgbG9nIG1lc3NhZ2UsIGpvYnMgc3RyaW5nKS4iIiIKKworICAgICAgICBtID0gcmUuc2VhcmNoKHInXkpvYnM6JywgbWVzc2FnZSwgcmUuTVVMVElMSU5FKQorICAgICAgICBpZiBtIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gKG1lc3NhZ2UsIE5vbmUpCisKKyAgICAgICAgam9idGV4dCA9IG1lc3NhZ2VbbS5zdGFydCgpOl0KKyAgICAgICAgc3RyaXBwZWRfbWVzc2FnZSA9IG1lc3NhZ2VbOm0uc3RhcnQoKV0ucnN0cmlwKCkKKyAgICAgICAgcmV0dXJuIChzdHJpcHBlZF9tZXNzYWdlLCBqb2J0ZXh0KQorCisgICAgZGVmIHByZXBhcmVMb2dNZXNzYWdlKHNlbGYsIHRlbXBsYXRlLCBtZXNzYWdlLCBqb2JzKToKKyAgICAgICAgIiIiRWRpdHMgdGhlIHRlbXBsYXRlIHJldHVybmVkIGZyb20gInA0IGNoYW5nZSAtbyIgdG8gaW5zZXJ0CisgICAgICAgICAgIHRoZSBtZXNzYWdlIGluIHRoZSBEZXNjcmlwdGlvbiBmaWVsZCwgYW5kIHRoZSBqb2JzIHRleHQgaW4KKyAgICAgICAgICAgdGhlIEpvYnMgZmllbGQuIiIiCiAgICAgICAgIHJlc3VsdCA9ICIiCiAKICAgICAgICAgaW5EZXNjcmlwdGlvblNlY3Rpb24gPSBGYWxzZQpAQCAtODcwLDYgKzEwNTQsOSBAQAogICAgICAgICAgICAgaWYgaW5EZXNjcmlwdGlvblNlY3Rpb246CiAgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJGaWxlczoiKSBvciBsaW5lLnN0YXJ0c3dpdGgoIkpvYnM6Iik6CiAgICAgICAgICAgICAgICAgICAgIGluRGVzY3JpcHRpb25TZWN0aW9uID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgIyBpbnNlcnQgSm9icyBzZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIGlmIGpvYnM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gam9icyArICJcbiIKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZWxzZToKQEAgLTkwOSw3ICsxMDk2LDggQEAKICAgICBkZWYgcDRVc2VyRm9yQ29tbWl0KHNlbGYsaWQpOgogICAgICAgICAjIFJldHVybiB0aGUgdHVwbGUgKHBlcmZvcmNlIHVzZXIsZ2l0IGVtYWlsKSBmb3IgYSBnaXZlbiBnaXQgY29tbWl0IGlkCiAgICAgICAgIHNlbGYuZ2V0VXNlck1hcEZyb21QZXJmb3JjZVNlcnZlcigpCi0gICAgICAgIGdpdEVtYWlsID0gcmVhZF9waXBlKCJnaXQgbG9nIC0tbWF4LWNvdW50PTEgLS1mb3JtYXQ9JyUlYWUnICVzIiAlIGlkKQorICAgICAgICBnaXRFbWFpbCA9IHJlYWRfcGlwZShbImdpdCIsICJsb2ciLCAiLS1tYXgtY291bnQ9MSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1mb3JtYXQ9JWFlIiwgaWRdKQogICAgICAgICBnaXRFbWFpbCA9IGdpdEVtYWlsLnN0cmlwKCkKICAgICAgICAgaWYgbm90IHNlbGYuZW1haWxzLmhhc19rZXkoZ2l0RW1haWwpOgogICAgICAgICAgICAgcmV0dXJuIChOb25lLGdpdEVtYWlsKQpAQCAtOTIyLDcgKzExMTAsNyBAQAogICAgICAgICAgICAgKHVzZXIsZW1haWwpID0gc2VsZi5wNFVzZXJGb3JDb21taXQoaWQpCiAgICAgICAgICAgICBpZiBub3QgdXNlcjoKICAgICAgICAgICAgICAgICBtc2cgPSAiQ2Fubm90IGZpbmQgcDQgdXNlciBmb3IgZW1haWwgJXMgaW4gY29tbWl0ICVzLiIgJSAoZW1haWwsIGlkKQotICAgICAgICAgICAgICAgIGlmIGdpdENvbmZpZygnZ2l0LXA0LmFsbG93TWlzc2luZ1A0VXNlcnMnKS5sb3dlcigpID09ICJ0cnVlIjoKKyAgICAgICAgICAgICAgICBpZiBnaXRDb25maWdCb29sKCJnaXQtcDQuYWxsb3dNaXNzaW5nUDRVc2VycyIpOgogICAgICAgICAgICAgICAgICAgICBwcmludCAiJXMiICUgbXNnCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZGllKCJFcnJvcjogJXNcblNldCBnaXQtcDQuYWxsb3dNaXNzaW5nUDRVc2VycyB0byB0cnVlIHRvIGFsbG93IHRoaXMuIiAlIG1zZykKQEAgLTk4MSw3ICsxMTY5LDEzIEBACiAgICAgICAgIHJldHVybiAwCiAKICAgICBkZWYgcHJlcGFyZVN1Ym1pdFRlbXBsYXRlKHNlbGYpOgotICAgICAgICAjIHJlbW92ZSBsaW5lcyBpbiB0aGUgRmlsZXMgc2VjdGlvbiB0aGF0IHNob3cgY2hhbmdlcyB0byBmaWxlcyBvdXRzaWRlIHRoZSBkZXBvdCBwYXRoIHdlJ3JlIGNvbW1pdHRpbmcgaW50bworICAgICAgICAiIiJSdW4gInA0IGNoYW5nZSAtbyIgdG8gZ3JhYiBhIGNoYW5nZSBzcGVjaWZpY2F0aW9uIHRlbXBsYXRlLgorICAgICAgICAgICBUaGlzIGRvZXMgbm90IHVzZSAicDQgLUciLCBhcyBpdCBpcyBuaWNlIHRvIGtlZXAgdGhlIHN1Ym1pc3Npb24KKyAgICAgICAgICAgdGVtcGxhdGUgaW4gb3JpZ2luYWwgb3JkZXIsIHNpbmNlIGEgaHVtYW4gbWlnaHQgZWRpdCBpdC4KKworICAgICAgICAgICBSZW1vdmUgbGluZXMgaW4gdGhlIEZpbGVzIHNlY3Rpb24gdGhhdCBzaG93IGNoYW5nZXMgdG8gZmlsZXMKKyAgICAgICAgICAgb3V0c2lkZSB0aGUgZGVwb3QgcGF0aCB3ZSdyZSBjb21taXR0aW5nIGludG8uIiIiCisKICAgICAgICAgdGVtcGxhdGUgPSAiIgogICAgICAgICBpbkZpbGVzU2VjdGlvbiA9IEZhbHNlCiAgICAgICAgIGZvciBsaW5lIGluIHA0X3JlYWRfcGlwZV9saW5lcyhbJ2NoYW5nZScsICctbyddKToKQEAgLTEwMTEsNyArMTIwNSw3IEBACiAgICAgICAgICAgIG1lc3NhZ2UuICBSZXR1cm4gdHJ1ZSBpZiBva2F5IHRvIGNvbnRpbnVlIHdpdGggdGhlIHN1Ym1pdC4iIiIKIAogICAgICAgICAjIGlmIGNvbmZpZ3VyZWQgdG8gc2tpcCB0aGUgZWRpdGluZyBwYXJ0LCBqdXN0IHN1Ym1pdAotICAgICAgICBpZiBnaXRDb25maWcoImdpdC1wNC5za2lwU3VibWl0RWRpdCIpID09ICJ0cnVlIjoKKyAgICAgICAgaWYgZ2l0Q29uZmlnQm9vbCgiZ2l0LXA0LnNraXBTdWJtaXRFZGl0Iik6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgICMgbG9vayBhdCB0aGUgbW9kaWZpY2F0aW9uIHRpbWUsIHRvIGNoZWNrIGxhdGVyIGlmIHRoZSB1c2VyIHNhdmVkCkBAIC0xMDI3LDcgKzEyMjEsNyBAQAogCiAgICAgICAgICMgSWYgdGhlIGZpbGUgd2FzIG5vdCBzYXZlZCwgcHJvbXB0IHRvIHNlZSBpZiB0aGlzIHBhdGNoIHNob3VsZAogICAgICAgICAjIGJlIHNraXBwZWQuICBCdXQgc2tpcCB0aGlzIHZlcmlmaWNhdGlvbiBzdGVwIGlmIGNvbmZpZ3VyZWQgc28uCi0gICAgICAgIGlmIGdpdENvbmZpZygiZ2l0LXA0LnNraXBTdWJtaXRFZGl0Q2hlY2siKSA9PSAidHJ1ZSI6CisgICAgICAgIGlmIGdpdENvbmZpZ0Jvb2woImdpdC1wNC5za2lwU3VibWl0RWRpdENoZWNrIik6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgICMgbW9kaWZpY2F0aW9uIHRpbWUgdXBkYXRlZCBtZWFucyB1c2VyIHNhdmVkIHRoZSBmaWxlCkBAIC0xMDQyLDMxICsxMjM2LDE0IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgYXBwbHlDb21taXQoc2VsZiwgaWQpOgotICAgICAgICBwcmludCAiQXBwbHlpbmcgJXMiICUgKHJlYWRfcGlwZSgiZ2l0IGxvZyAtLW1heC1jb3VudD0xIC0tcHJldHR5PW9uZWxpbmUgJXMiICUgaWQpKQorICAgICAgICAiIiJBcHBseSBvbmUgY29tbWl0LCByZXR1cm4gVHJ1ZSBpZiBpdCBzdWNjZWVkZWQuIiIiCisKKyAgICAgICAgcHJpbnQgIkFwcGx5aW5nIiwgcmVhZF9waXBlKFsiZ2l0IiwgInNob3ciLCAiLXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWZvcm1hdD1mb3JtYXQ6JWggJXMiLCBpZF0pCiAKICAgICAgICAgKHA0VXNlciwgZ2l0RW1haWwpID0gc2VsZi5wNFVzZXJGb3JDb21taXQoaWQpCiAKLSAgICAgICAgaWYgbm90IHNlbGYuZGV0ZWN0UmVuYW1lczoKLSAgICAgICAgICAgICMgSWYgbm90IGV4cGxpY2l0bHkgc2V0IGNoZWNrIHRoZSBjb25maWcgdmFyaWFibGUKLSAgICAgICAgICAgIHNlbGYuZGV0ZWN0UmVuYW1lcyA9IGdpdENvbmZpZygiZ2l0LXA0LmRldGVjdFJlbmFtZXMiKQotCi0gICAgICAgIGlmIHNlbGYuZGV0ZWN0UmVuYW1lcy5sb3dlcigpID09ICJmYWxzZSIgb3Igc2VsZi5kZXRlY3RSZW5hbWVzID09ICIiOgotICAgICAgICAgICAgZGlmZk9wdHMgPSAiIgotICAgICAgICBlbGlmIHNlbGYuZGV0ZWN0UmVuYW1lcy5sb3dlcigpID09ICJ0cnVlIjoKLSAgICAgICAgICAgIGRpZmZPcHRzID0gIi1NIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGlmZk9wdHMgPSAiLU0lcyIgJSBzZWxmLmRldGVjdFJlbmFtZXMKLQotICAgICAgICBkZXRlY3RDb3BpZXMgPSBnaXRDb25maWcoImdpdC1wNC5kZXRlY3RDb3BpZXMiKQotICAgICAgICBpZiBkZXRlY3RDb3BpZXMubG93ZXIoKSA9PSAidHJ1ZSI6Ci0gICAgICAgICAgICBkaWZmT3B0cyArPSAiIC1DIgotICAgICAgICBlbGlmIGRldGVjdENvcGllcyAhPSAiIiBhbmQgZGV0ZWN0Q29waWVzLmxvd2VyKCkgIT0gImZhbHNlIjoKLSAgICAgICAgICAgIGRpZmZPcHRzICs9ICIgLUMlcyIgJSBkZXRlY3RDb3BpZXMKLQotICAgICAgICBpZiBnaXRDb25maWcoImdpdC1wNC5kZXRlY3RDb3BpZXNIYXJkZXIiLCAiLS1ib29sIikgPT0gInRydWUiOgotICAgICAgICAgICAgZGlmZk9wdHMgKz0gIiAtLWZpbmQtY29waWVzLWhhcmRlciIKLQotICAgICAgICBkaWZmID0gcmVhZF9waXBlX2xpbmVzKCJnaXQgZGlmZi10cmVlIC1yICVzIFwiJXNeXCIgXCIlc1wiIiAlIChkaWZmT3B0cywgaWQsIGlkKSkKKyAgICAgICAgZGlmZiA9IHJlYWRfcGlwZV9saW5lcygiZ2l0IGRpZmYtdHJlZSAtciAlcyBcIiVzXlwiIFwiJXNcIiIgJSAoc2VsZi5kaWZmT3B0cywgaWQsIGlkKSkKICAgICAgICAgZmlsZXNUb0FkZCA9IHNldCgpCiAgICAgICAgIGZpbGVzVG9EZWxldGUgPSBzZXQoKQogICAgICAgICBlZGl0ZWRGaWxlcyA9IHNldCgpCkBAIC0xMTAyLDIxICsxMjc5LDMyIEBACiAgICAgICAgICAgICAgICAgICAgIHA0X2VkaXQoZGVzdCkKICAgICAgICAgICAgICAgICAgICAgcHVyZVJlbmFtZUNvcHkuZGlzY2FyZChkZXN0KQogICAgICAgICAgICAgICAgICAgICBmaWxlc1RvQ2hhbmdlRXhlY0JpdFtkZXN0XSA9IGRpZmZbJ2RzdF9tb2RlJ10KKyAgICAgICAgICAgICAgICBpZiBzZWxmLmlzV2luZG93czoKKyAgICAgICAgICAgICAgICAgICAgIyB0dXJuIG9mZiByZWFkLW9ubHkgYXR0cmlidXRlCisgICAgICAgICAgICAgICAgICAgIG9zLmNobW9kKGRlc3QsIHN0YXQuU19JV1JJVEUpCiAgICAgICAgICAgICAgICAgb3MudW5saW5rKGRlc3QpCiAgICAgICAgICAgICAgICAgZWRpdGVkRmlsZXMuYWRkKGRlc3QpCiAgICAgICAgICAgICBlbGlmIG1vZGlmaWVyID09ICJSIjoKICAgICAgICAgICAgICAgICBzcmMsIGRlc3QgPSBkaWZmWydzcmMnXSwgZGlmZlsnZHN0J10KLSAgICAgICAgICAgICAgICBwNF9pbnRlZ3JhdGUoc3JjLCBkZXN0KQotICAgICAgICAgICAgICAgIGlmIGRpZmZbJ3NyY19zaGExJ10gIT0gZGlmZlsnZHN0X3NoYTEnXToKLSAgICAgICAgICAgICAgICAgICAgcDRfZWRpdChkZXN0KQorICAgICAgICAgICAgICAgIGlmIHNlbGYucDRIYXNNb3ZlQ29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgcDRfZWRpdChzcmMpICAgICAgICAjIHNyYyBtdXN0IGJlIG9wZW4gYmVmb3JlIG1vdmUKKyAgICAgICAgICAgICAgICAgICAgcDRfbW92ZShzcmMsIGRlc3QpICAjIG9wZW5zIGZvciAobW92ZS9kZWxldGUsIG1vdmUvYWRkKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHB1cmVSZW5hbWVDb3B5LmFkZChkZXN0KQorICAgICAgICAgICAgICAgICAgICBwNF9pbnRlZ3JhdGUoc3JjLCBkZXN0KQorICAgICAgICAgICAgICAgICAgICBpZiBkaWZmWydzcmNfc2hhMSddICE9IGRpZmZbJ2RzdF9zaGExJ106CisgICAgICAgICAgICAgICAgICAgICAgICBwNF9lZGl0KGRlc3QpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBwdXJlUmVuYW1lQ29weS5hZGQoZGVzdCkKICAgICAgICAgICAgICAgICBpZiBpc01vZGVFeGVjQ2hhbmdlZChkaWZmWydzcmNfbW9kZSddLCBkaWZmWydkc3RfbW9kZSddKToKLSAgICAgICAgICAgICAgICAgICAgcDRfZWRpdChkZXN0KQorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5wNEhhc01vdmVDb21tYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgcDRfZWRpdChkZXN0KSAgICMgd2l0aCBtb3ZlOiBhbHJlYWR5IG9wZW4sIHdyaXRhYmxlCiAgICAgICAgICAgICAgICAgICAgIGZpbGVzVG9DaGFuZ2VFeGVjQml0W2Rlc3RdID0gZGlmZlsnZHN0X21vZGUnXQotICAgICAgICAgICAgICAgIG9zLnVubGluayhkZXN0KQorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnA0SGFzTW92ZUNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNXaW5kb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2htb2QoZGVzdCwgc3RhdC5TX0lXUklURSkKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGRlc3QpCisgICAgICAgICAgICAgICAgICAgIGZpbGVzVG9EZWxldGUuYWRkKHNyYykKICAgICAgICAgICAgICAgICBlZGl0ZWRGaWxlcy5hZGQoZGVzdCkKLSAgICAgICAgICAgICAgICBmaWxlc1RvRGVsZXRlLmFkZChzcmMpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGRpZSgidW5rbm93biBtb2RpZmllciAlcyBmb3IgJXMiICUgKG1vZGlmaWVyLCBwYXRoKSkKIApAQCAtMTEzMyw3ICsxMzIxLDcgQEAKIAogICAgICAgICAgICAgIyBQYXRjaCBmYWlsZWQsIG1heWJlIGl0J3MganVzdCBSQ1Mga2V5d29yZCB3b2VzLiBMb29rIHRocm91Z2gKICAgICAgICAgICAgICMgdGhlIHBhdGNoIHRvIHNlZSBpZiB0aGF0J3MgcG9zc2libGUuCi0gICAgICAgICAgICBpZiBnaXRDb25maWcoImdpdC1wNC5hdHRlbXB0UkNTQ2xlYW51cCIsIi0tYm9vbCIpID09ICJ0cnVlIjoKKyAgICAgICAgICAgIGlmIGdpdENvbmZpZ0Jvb2woImdpdC1wNC5hdHRlbXB0UkNTQ2xlYW51cCIpOgogICAgICAgICAgICAgICAgIGZpbGUgPSBOb25lCiAgICAgICAgICAgICAgICAgcGF0dGVybiA9IE5vbmUKICAgICAgICAgICAgICAgICBrd2ZpbGVzID0ge30KQEAgLTExNTQsNiArMTM0MiwxMCBAQAogICAgICAgICAgICAgICAgIGZvciBmaWxlIGluIGt3ZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiemFwcGluZyAlcyB3aXRoICVzIiAlIChsaW5lLHBhdHRlcm4pCisgICAgICAgICAgICAgICAgICAgICMgRmlsZSBpcyBiZWluZyBkZWxldGVkLCBzbyBub3Qgb3BlbiBpbiBwNC4gIE11c3QKKyAgICAgICAgICAgICAgICAgICAgIyBkaXNhYmxlIHRoZSByZWFkLW9ubHkgYml0IG9uIHdpbmRvd3MuCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNXaW5kb3dzIGFuZCBmaWxlIG5vdCBpbiBlZGl0ZWRGaWxlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNobW9kKGZpbGUsIHN0YXQuU19JV1JJVEUpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYucGF0Y2hSQ1NLZXl3b3JkcyhmaWxlLCBrd2ZpbGVzW2ZpbGVdKQogICAgICAgICAgICAgICAgICAgICBmaXhlZF9yY3Nfa2V5d29yZHMgPSBUcnVlCiAKQEAgLTExNjMsMzQgKzEzNTUsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgcGF0Y2hfc3VjY2VlZGVkID0gVHJ1ZQogCiAgICAgICAgIGlmIG5vdCBwYXRjaF9zdWNjZWVkZWQ6Ci0gICAgICAgICAgICBwcmludCAiV2hhdCBkbyB5b3Ugd2FudCB0byBkbz8iCi0gICAgICAgICAgICByZXNwb25zZSA9ICJ4IgotICAgICAgICAgICAgd2hpbGUgcmVzcG9uc2UgIT0gInMiIGFuZCByZXNwb25zZSAhPSAiYSIgYW5kIHJlc3BvbnNlICE9ICJ3IjoKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9IHJhd19pbnB1dCgiW3Nda2lwIHRoaXMgcGF0Y2ggLyBbYV1wcGx5IHRoZSBwYXRjaCBmb3JjaWJseSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCB3aXRoIC5yZWogZmlsZXMgLyBbd11yaXRlIHRoZSBwYXRjaCB0byBhIGZpbGUgKHBhdGNoLnR4dCkgIikKLSAgICAgICAgICAgIGlmIHJlc3BvbnNlID09ICJzIjoKLSAgICAgICAgICAgICAgICBwcmludCAiU2tpcHBpbmchIEdvb2QgbHVjayB3aXRoIHRoZSBuZXh0IHBhdGNoZXMuLi4iCi0gICAgICAgICAgICAgICAgZm9yIGYgaW4gZWRpdGVkRmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgIHA0X3JldmVydChmKQotICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzVG9BZGQ6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShmKQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZWxpZiByZXNwb25zZSA9PSAiYSI6Ci0gICAgICAgICAgICAgICAgb3Muc3lzdGVtKGFwcGx5UGF0Y2hDbWQpCi0gICAgICAgICAgICAgICAgaWYgbGVuKGZpbGVzVG9BZGQpID4gMDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIllvdSBtYXkgYWxzbyB3YW50IHRvIGNhbGwgcDQgYWRkIG9uIHRoZSBmb2xsb3dpbmcgZmlsZXM6IgotICAgICAgICAgICAgICAgICAgICBwcmludCAiICIuam9pbihmaWxlc1RvQWRkKQotICAgICAgICAgICAgICAgIGlmIGxlbihmaWxlc1RvRGVsZXRlKToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIlRoZSBmb2xsb3dpbmcgZmlsZXMgc2hvdWxkIGJlIHNjaGVkdWxlZCBmb3IgZGVsZXRpb24gd2l0aCBwNCBkZWxldGU6IgotICAgICAgICAgICAgICAgICAgICBwcmludCAiICIuam9pbihmaWxlc1RvRGVsZXRlKQotICAgICAgICAgICAgICAgIGRpZSgiUGxlYXNlIHJlc29sdmUgYW5kIHN1Ym1pdCB0aGUgY29uZmxpY3QgbWFudWFsbHkgYW5kICIKLSAgICAgICAgICAgICAgICAgICAgKyAiY29udGludWUgYWZ0ZXJ3YXJkcyB3aXRoIGdpdCBwNCBzdWJtaXQgLS1jb250aW51ZSIpCi0gICAgICAgICAgICBlbGlmIHJlc3BvbnNlID09ICJ3IjoKLSAgICAgICAgICAgICAgICBzeXN0ZW0oZGlmZmNtZCArICIgPiBwYXRjaC50eHQiKQotICAgICAgICAgICAgICAgIHByaW50ICJQYXRjaCBzYXZlZCB0byBwYXRjaC50eHQgaW4gJXMgISIgJSBzZWxmLmNsaWVudFBhdGgKLSAgICAgICAgICAgICAgICBkaWUoIlBsZWFzZSByZXNvbHZlIGFuZCBzdWJtaXQgdGhlIGNvbmZsaWN0IG1hbnVhbGx5IGFuZCAiCi0gICAgICAgICAgICAgICAgICAgICJjb250aW51ZSBhZnRlcndhcmRzIHdpdGggZ2l0IHA0IHN1Ym1pdCAtLWNvbnRpbnVlIikKKyAgICAgICAgICAgIGZvciBmIGluIGVkaXRlZEZpbGVzOgorICAgICAgICAgICAgICAgIHA0X3JldmVydChmKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICAgICAgIworICAgICAgICAjIEFwcGx5IHRoZSBwYXRjaCBmb3IgcmVhbCwgYW5kIGRvIGFkZC9kZWxldGUvK3ggaGFuZGxpbmcuCisgICAgICAgICMKICAgICAgICAgc3lzdGVtKGFwcGx5UGF0Y2hDbWQpCiAKICAgICAgICAgZm9yIGYgaW4gZmlsZXNUb0FkZDoKQEAgLTEyMDQsOTEgKzEzNzUsMTMyIEBACiAgICAgICAgICAgICBtb2RlID0gZmlsZXNUb0NoYW5nZUV4ZWNCaXRbZl0KICAgICAgICAgICAgIHNldFA0RXhlY0JpdChmLCBtb2RlKQogCisgICAgICAgICMKKyAgICAgICAgIyBCdWlsZCBwNCBjaGFuZ2UgZGVzY3JpcHRpb24sIHN0YXJ0aW5nIHdpdGggdGhlIGNvbnRlbnRzCisgICAgICAgICMgb2YgdGhlIGdpdCBjb21taXQgbWVzc2FnZS4KKyAgICAgICAgIwogICAgICAgICBsb2dNZXNzYWdlID0gZXh0cmFjdExvZ01lc3NhZ2VGcm9tR2l0Q29tbWl0KGlkKQogICAgICAgICBsb2dNZXNzYWdlID0gbG9nTWVzc2FnZS5zdHJpcCgpCisgICAgICAgIChsb2dNZXNzYWdlLCBqb2JzKSA9IHNlbGYuc2VwYXJhdGVfam9ic19mcm9tX2Rlc2NyaXB0aW9uKGxvZ01lc3NhZ2UpCiAKICAgICAgICAgdGVtcGxhdGUgPSBzZWxmLnByZXBhcmVTdWJtaXRUZW1wbGF0ZSgpCisgICAgICAgIHN1Ym1pdFRlbXBsYXRlID0gc2VsZi5wcmVwYXJlTG9nTWVzc2FnZSh0ZW1wbGF0ZSwgbG9nTWVzc2FnZSwgam9icykKIAotICAgICAgICBpZiBzZWxmLmludGVyYWN0aXZlOgotICAgICAgICAgICAgc3VibWl0VGVtcGxhdGUgPSBzZWxmLnByZXBhcmVMb2dNZXNzYWdlKHRlbXBsYXRlLCBsb2dNZXNzYWdlKQorICAgICAgICBpZiBzZWxmLnByZXNlcnZlVXNlcjoKKyAgICAgICAgICAgc3VibWl0VGVtcGxhdGUgKz0gIlxuIyMjIyMjIyMgQWN0dWFsIHVzZXIgJXMsIG1vZGlmaWVkIGFmdGVyIGNvbW1pdFxuIiAlIHA0VXNlcgorCisgICAgICAgIGlmIHNlbGYuY2hlY2tBdXRob3JzaGlwIGFuZCBub3Qgc2VsZi5wNFVzZXJJc01lKHA0VXNlcik6CisgICAgICAgICAgICBzdWJtaXRUZW1wbGF0ZSArPSAiIyMjIyMjIyMgZ2l0IGF1dGhvciAlcyBkb2VzIG5vdCBtYXRjaCB5b3VyIHA0IGFjY291bnQuXG4iICUgZ2l0RW1haWwKKyAgICAgICAgICAgIHN1Ym1pdFRlbXBsYXRlICs9ICIjIyMjIyMjIyBVc2Ugb3B0aW9uIC0tcHJlc2VydmUtdXNlciB0byBtb2RpZnkgYXV0aG9yc2hpcC5cbiIKKyAgICAgICAgICAgIHN1Ym1pdFRlbXBsYXRlICs9ICIjIyMjIyMjIyBWYXJpYWJsZSBnaXQtcDQuc2tpcFVzZXJOYW1lQ2hlY2sgaGlkZXMgdGhpcyBtZXNzYWdlLlxuIgorCisgICAgICAgIHNlcGFyYXRvckxpbmUgPSAiIyMjIyMjIyMgZXZlcnl0aGluZyBiZWxvdyB0aGlzIGxpbmUgaXMganVzdCB0aGUgZGlmZiAjIyMjIyMjXG4iCisKKyAgICAgICAgIyBkaWZmCisgICAgICAgIGlmIG9zLmVudmlyb24uaGFzX2tleSgiUDRESUZGIik6CisgICAgICAgICAgICBkZWwob3MuZW52aXJvblsiUDRESUZGIl0pCisgICAgICAgIGRpZmYgPSAiIgorICAgICAgICBmb3IgZWRpdGVkRmlsZSBpbiBlZGl0ZWRGaWxlczoKKyAgICAgICAgICAgIGRpZmYgKz0gcDRfcmVhZF9waXBlKFsnZGlmZicsICctZHUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkX2VuY29kZShlZGl0ZWRGaWxlKV0pCisKKyAgICAgICAgIyBuZXcgZmlsZSBkaWZmCisgICAgICAgIG5ld2RpZmYgPSAiIgorICAgICAgICBmb3IgbmV3RmlsZSBpbiBmaWxlc1RvQWRkOgorICAgICAgICAgICAgbmV3ZGlmZiArPSAiPT09PSBuZXcgZmlsZSA9PT09XG4iCisgICAgICAgICAgICBuZXdkaWZmICs9ICItLS0gL2Rldi9udWxsXG4iCisgICAgICAgICAgICBuZXdkaWZmICs9ICIrKysgJXNcbiIgJSBuZXdGaWxlCisgICAgICAgICAgICBmID0gb3BlbihuZXdGaWxlLCAiciIpCisgICAgICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgorICAgICAgICAgICAgICAgIG5ld2RpZmYgKz0gIisiICsgbGluZQorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgIyBjaGFuZ2UgZGVzY3JpcHRpb24gZmlsZTogc3VibWl0VGVtcGxhdGUsIHNlcGFyYXRvckxpbmUsIGRpZmYsIG5ld2RpZmYKKyAgICAgICAgKGhhbmRsZSwgZmlsZU5hbWUpID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgIHRtcEZpbGUgPSBvcy5mZG9wZW4oaGFuZGxlLCAidysiKQorICAgICAgICBpZiBzZWxmLmlzV2luZG93czoKKyAgICAgICAgICAgIHN1Ym1pdFRlbXBsYXRlID0gc3VibWl0VGVtcGxhdGUucmVwbGFjZSgiXG4iLCAiXHJcbiIpCisgICAgICAgICAgICBzZXBhcmF0b3JMaW5lID0gc2VwYXJhdG9yTGluZS5yZXBsYWNlKCJcbiIsICJcclxuIikKKyAgICAgICAgICAgIG5ld2RpZmYgPSBuZXdkaWZmLnJlcGxhY2UoIlxuIiwgIlxyXG4iKQorICAgICAgICB0bXBGaWxlLndyaXRlKHN1Ym1pdFRlbXBsYXRlICsgc2VwYXJhdG9yTGluZSArIGRpZmYgKyBuZXdkaWZmKQorICAgICAgICB0bXBGaWxlLmNsb3NlKCkKKworICAgICAgICBpZiBzZWxmLnByZXBhcmVfcDRfb25seToKKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgTGVhdmUgdGhlIHA0IHRyZWUgcHJlcGFyZWQsIGFuZCB0aGUgc3VibWl0IHRlbXBsYXRlIGFyb3VuZAorICAgICAgICAgICAgIyBhbmQgbGV0IHRoZSB1c2VyIGRlY2lkZSB3aGF0IHRvIGRvIG5leHQKKyAgICAgICAgICAgICMKKyAgICAgICAgICAgIHByaW50CisgICAgICAgICAgICBwcmludCAiUDQgd29ya3NwYWNlIHByZXBhcmVkIGZvciBzdWJtaXNzaW9uLiIKKyAgICAgICAgICAgIHByaW50ICJUbyBzdWJtaXQgb3IgcmV2ZXJ0LCBnbyB0byBjbGllbnQgd29ya3NwYWNlIgorICAgICAgICAgICAgcHJpbnQgIiAgIiArIHNlbGYuY2xpZW50UGF0aAorICAgICAgICAgICAgcHJpbnQKKyAgICAgICAgICAgIHByaW50ICJUbyBzdWJtaXQsIHVzZSBcInA0IHN1Ym1pdFwiIHRvIHdyaXRlIGEgbmV3IGRlc2NyaXB0aW9uLCIKKyAgICAgICAgICAgIHByaW50ICJvciBcInA0IHN1Ym1pdCAtaSAlc1wiIHRvIHVzZSB0aGUgb25lIHByZXBhcmVkIGJ5IiBcCisgICAgICAgICAgICAgICAgICAiIFwiZ2l0IHA0XCIuIiAlIGZpbGVOYW1lCisgICAgICAgICAgICBwcmludCAiWW91IGNhbiBkZWxldGUgdGhlIGZpbGUgXCIlc1wiIHdoZW4gZmluaXNoZWQuIiAlIGZpbGVOYW1lCisKKyAgICAgICAgICAgIGlmIHNlbGYucHJlc2VydmVVc2VyIGFuZCBwNFVzZXIgYW5kIG5vdCBzZWxmLnA0VXNlcklzTWUocDRVc2VyKToKKyAgICAgICAgICAgICAgICBwcmludCAiVG8gcHJlc2VydmUgY2hhbmdlIG93bmVyc2hpcCBieSB1c2VyICVzLCB5b3UgbXVzdFxuIiBcCisgICAgICAgICAgICAgICAgICAgICAgImRvIFwicDQgY2hhbmdlIC1mIDxjaGFuZ2U+XCIgYWZ0ZXIgc3VibWl0dGluZyBhbmRcbiIgXAorICAgICAgICAgICAgICAgICAgICAgICJlZGl0IHRoZSBVc2VyIGZpZWxkLiIKKyAgICAgICAgICAgIGlmIHB1cmVSZW5hbWVDb3B5OgorICAgICAgICAgICAgICAgIHByaW50ICJBZnRlciBzdWJtaXR0aW5nLCByZW5hbWVkIGZpbGVzIG11c3QgYmUgcmUtc3luY2VkLiIKKyAgICAgICAgICAgICAgICBwcmludCAiSW52b2tlIFwicDQgc3luYyAtZlwiIG9uIGVhY2ggb2YgdGhlc2UgZmlsZXM6IgorICAgICAgICAgICAgICAgIGZvciBmIGluIHB1cmVSZW5hbWVDb3B5OgorICAgICAgICAgICAgICAgICAgICBwcmludCAiICAiICsgZgorCisgICAgICAgICAgICBwcmludAorICAgICAgICAgICAgcHJpbnQgIlRvIHJldmVydCB0aGUgY2hhbmdlcywgdXNlIFwicDQgcmV2ZXJ0IC4uLlwiLCBhbmQgZGVsZXRlIgorICAgICAgICAgICAgcHJpbnQgInRoZSBzdWJtaXQgdGVtcGxhdGUgZmlsZSBcIiVzXCIiICUgZmlsZU5hbWUKKyAgICAgICAgICAgIGlmIGZpbGVzVG9BZGQ6CisgICAgICAgICAgICAgICAgcHJpbnQgIlNpbmNlIHRoZSBjb21taXQgYWRkcyBuZXcgZmlsZXMsIHRoZXkgbXVzdCBiZSBkZWxldGVkOiIKKyAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlc1RvQWRkOgorICAgICAgICAgICAgICAgICAgICBwcmludCAiICAiICsgZgorICAgICAgICAgICAgcHJpbnQKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgIworICAgICAgICAjIExldCB0aGUgdXNlciBlZGl0IHRoZSBjaGFuZ2UgZGVzY3JpcHRpb24sIHRoZW4gc3VibWl0IGl0LgorICAgICAgICAjCisgICAgICAgIGlmIHNlbGYuZWRpdF90ZW1wbGF0ZShmaWxlTmFtZSk6CisgICAgICAgICAgICAjIHJlYWQgdGhlIGVkaXRlZCBtZXNzYWdlIGFuZCBzdWJtaXQKKyAgICAgICAgICAgIHJldCA9IFRydWUKKyAgICAgICAgICAgIHRtcEZpbGUgPSBvcGVuKGZpbGVOYW1lLCAicmIiKQorICAgICAgICAgICAgbWVzc2FnZSA9IHRtcEZpbGUucmVhZCgpCisgICAgICAgICAgICB0bXBGaWxlLmNsb3NlKCkKKyAgICAgICAgICAgIHN1Ym1pdFRlbXBsYXRlID0gbWVzc2FnZVs6bWVzc2FnZS5pbmRleChzZXBhcmF0b3JMaW5lKV0KKyAgICAgICAgICAgIGlmIHNlbGYuaXNXaW5kb3dzOgorICAgICAgICAgICAgICAgIHN1Ym1pdFRlbXBsYXRlID0gc3VibWl0VGVtcGxhdGUucmVwbGFjZSgiXHJcbiIsICJcbiIpCisgICAgICAgICAgICBwNF93cml0ZV9waXBlKFsnc3VibWl0JywgJy1pJ10sIHN1Ym1pdFRlbXBsYXRlKQogCiAgICAgICAgICAgICBpZiBzZWxmLnByZXNlcnZlVXNlcjoKLSAgICAgICAgICAgICAgIHN1Ym1pdFRlbXBsYXRlID0gc3VibWl0VGVtcGxhdGUgKyAoIlxuIyMjIyMjIyMgQWN0dWFsIHVzZXIgJXMsIG1vZGlmaWVkIGFmdGVyIGNvbW1pdFxuIiAlIHA0VXNlcikKKyAgICAgICAgICAgICAgICBpZiBwNFVzZXI6CisgICAgICAgICAgICAgICAgICAgICMgR2V0IGxhc3QgY2hhbmdlbGlzdCBudW1iZXIuIENhbm5vdCBlYXNpbHkgZ2V0IGl0IGZyb20KKyAgICAgICAgICAgICAgICAgICAgIyB0aGUgc3VibWl0IGNvbW1hbmQgb3V0cHV0IGFzIHRoZSBvdXRwdXQgaXMKKyAgICAgICAgICAgICAgICAgICAgIyB1bm1hcnNoYWxsZWQuCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWxpc3QgPSBzZWxmLmxhc3RQNENoYW5nZWxpc3QoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1vZGlmeUNoYW5nZWxpc3RVc2VyKGNoYW5nZWxpc3QsIHA0VXNlcikKIAotICAgICAgICAgICAgaWYgb3MuZW52aXJvbi5oYXNfa2V5KCJQNERJRkYiKToKLSAgICAgICAgICAgICAgICBkZWwob3MuZW52aXJvblsiUDRESUZGIl0pCi0gICAgICAgICAgICBkaWZmID0gIiIKLSAgICAgICAgICAgIGZvciBlZGl0ZWRGaWxlIGluIGVkaXRlZEZpbGVzOgotICAgICAgICAgICAgICAgIGRpZmYgKz0gcDRfcmVhZF9waXBlKFsnZGlmZicsICctZHUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxkY2FyZF9lbmNvZGUoZWRpdGVkRmlsZSldKQorICAgICAgICAgICAgIyBUaGUgcmVuYW1lL2NvcHkgaGFwcGVuZWQgYnkgYXBwbHlpbmcgYSBwYXRjaCB0aGF0IGNyZWF0ZWQgYQorICAgICAgICAgICAgIyBuZXcgZmlsZS4gIFRoaXMgbGVhdmVzIGl0IHdyaXRhYmxlLCB3aGljaCBjb25mdXNlcyBwNC4KKyAgICAgICAgICAgIGZvciBmIGluIHB1cmVSZW5hbWVDb3B5OgorICAgICAgICAgICAgICAgIHA0X3N5bmMoZiwgIi1mIikKIAotICAgICAgICAgICAgbmV3ZGlmZiA9ICIiCi0gICAgICAgICAgICBmb3IgbmV3RmlsZSBpbiBmaWxlc1RvQWRkOgotICAgICAgICAgICAgICAgIG5ld2RpZmYgKz0gIj09PT0gbmV3IGZpbGUgPT09PVxuIgotICAgICAgICAgICAgICAgIG5ld2RpZmYgKz0gIi0tLSAvZGV2L251bGxcbiIKLSAgICAgICAgICAgICAgICBuZXdkaWZmICs9ICIrKysgJXNcbiIgJSBuZXdGaWxlCi0gICAgICAgICAgICAgICAgZiA9IG9wZW4obmV3RmlsZSwgInIiKQotICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6Ci0gICAgICAgICAgICAgICAgICAgIG5ld2RpZmYgKz0gIisiICsgbGluZQotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotCi0gICAgICAgICAgICBpZiBzZWxmLmNoZWNrQXV0aG9yc2hpcCBhbmQgbm90IHNlbGYucDRVc2VySXNNZShwNFVzZXIpOgotICAgICAgICAgICAgICAgIHN1Ym1pdFRlbXBsYXRlICs9ICIjIyMjIyMjIyBnaXQgYXV0aG9yICVzIGRvZXMgbm90IG1hdGNoIHlvdXIgcDQgYWNjb3VudC5cbiIgJSBnaXRFbWFpbAotICAgICAgICAgICAgICAgIHN1Ym1pdFRlbXBsYXRlICs9ICIjIyMjIyMjIyBVc2Ugb3B0aW9uIC0tcHJlc2VydmUtdXNlciB0byBtb2RpZnkgYXV0aG9yc2hpcC5cbiIKLSAgICAgICAgICAgICAgICBzdWJtaXRUZW1wbGF0ZSArPSAiIyMjIyMjIyMgVmFyaWFibGUgZ2l0LXA0LnNraXBVc2VyTmFtZUNoZWNrIGhpZGVzIHRoaXMgbWVzc2FnZS5cbiIKLQotICAgICAgICAgICAgc2VwYXJhdG9yTGluZSA9ICIjIyMjIyMjIyBldmVyeXRoaW5nIGJlbG93IHRoaXMgbGluZSBpcyBqdXN0IHRoZSBkaWZmICMjIyMjIyNcbiIKLQotICAgICAgICAgICAgKGhhbmRsZSwgZmlsZU5hbWUpID0gdGVtcGZpbGUubWtzdGVtcCgpCi0gICAgICAgICAgICB0bXBGaWxlID0gb3MuZmRvcGVuKGhhbmRsZSwgIncrIikKLSAgICAgICAgICAgIGlmIHNlbGYuaXNXaW5kb3dzOgotICAgICAgICAgICAgICAgIHN1Ym1pdFRlbXBsYXRlID0gc3VibWl0VGVtcGxhdGUucmVwbGFjZSgiXG4iLCAiXHJcbiIpCi0gICAgICAgICAgICAgICAgc2VwYXJhdG9yTGluZSA9IHNlcGFyYXRvckxpbmUucmVwbGFjZSgiXG4iLCAiXHJcbiIpCi0gICAgICAgICAgICAgICAgbmV3ZGlmZiA9IG5ld2RpZmYucmVwbGFjZSgiXG4iLCAiXHJcbiIpCi0gICAgICAgICAgICB0bXBGaWxlLndyaXRlKHN1Ym1pdFRlbXBsYXRlICsgc2VwYXJhdG9yTGluZSArIGRpZmYgKyBuZXdkaWZmKQotICAgICAgICAgICAgdG1wRmlsZS5jbG9zZSgpCi0KLSAgICAgICAgICAgIGlmIHNlbGYuZWRpdF90ZW1wbGF0ZShmaWxlTmFtZSk6Ci0gICAgICAgICAgICAgICAgIyByZWFkIHRoZSBlZGl0ZWQgbWVzc2FnZSBhbmQgc3VibWl0Ci0gICAgICAgICAgICAgICAgdG1wRmlsZSA9IG9wZW4oZmlsZU5hbWUsICJyYiIpCi0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IHRtcEZpbGUucmVhZCgpCi0gICAgICAgICAgICAgICAgdG1wRmlsZS5jbG9zZSgpCi0gICAgICAgICAgICAgICAgc3VibWl0VGVtcGxhdGUgPSBtZXNzYWdlWzptZXNzYWdlLmluZGV4KHNlcGFyYXRvckxpbmUpXQotICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNXaW5kb3dzOgotICAgICAgICAgICAgICAgICAgICBzdWJtaXRUZW1wbGF0ZSA9IHN1Ym1pdFRlbXBsYXRlLnJlcGxhY2UoIlxyXG4iLCAiXG4iKQotICAgICAgICAgICAgICAgIHA0X3dyaXRlX3BpcGUoWydzdWJtaXQnLCAnLWknXSwgc3VibWl0VGVtcGxhdGUpCi0KLSAgICAgICAgICAgICAgICBpZiBzZWxmLnByZXNlcnZlVXNlcjoKLSAgICAgICAgICAgICAgICAgICAgaWYgcDRVc2VyOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQgbGFzdCBjaGFuZ2VsaXN0IG51bWJlci4gQ2Fubm90IGVhc2lseSBnZXQgaXQgZnJvbQotICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgc3VibWl0IGNvbW1hbmQgb3V0cHV0IGFzIHRoZSBvdXRwdXQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdW5tYXJzaGFsbGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlbGlzdCA9IHNlbGYubGFzdFA0Q2hhbmdlbGlzdCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1vZGlmeUNoYW5nZWxpc3RVc2VyKGNoYW5nZWxpc3QsIHA0VXNlcikKLQotICAgICAgICAgICAgICAgICMgVGhlIHJlbmFtZS9jb3B5IGhhcHBlbmVkIGJ5IGFwcGx5aW5nIGEgcGF0Y2ggdGhhdCBjcmVhdGVkIGEKLSAgICAgICAgICAgICAgICAjIG5ldyBmaWxlLiAgVGhpcyBsZWF2ZXMgaXQgd3JpdGFibGUsIHdoaWNoIGNvbmZ1c2VzIHA0LgotICAgICAgICAgICAgICAgIGZvciBmIGluIHB1cmVSZW5hbWVDb3B5OgotICAgICAgICAgICAgICAgICAgICBwNF9zeW5jKGYsICItZiIpCi0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBza2lwIHRoaXMgcGF0Y2gKLSAgICAgICAgICAgICAgICBwcmludCAiU3VibWlzc2lvbiBjYW5jZWxsZWQsIHVuZG9pbmcgcDQgY2hhbmdlcy4iCi0gICAgICAgICAgICAgICAgZm9yIGYgaW4gZWRpdGVkRmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgIHA0X3JldmVydChmKQotICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzVG9BZGQ6Ci0gICAgICAgICAgICAgICAgICAgIHA0X3JldmVydChmKQotICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZikKLQotICAgICAgICAgICAgb3MucmVtb3ZlKGZpbGVOYW1lKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmlsZU5hbWUgPSAic3VibWl0LnR4dCIKLSAgICAgICAgICAgIGZpbGUgPSBvcGVuKGZpbGVOYW1lLCAidysiKQotICAgICAgICAgICAgZmlsZS53cml0ZShzZWxmLnByZXBhcmVMb2dNZXNzYWdlKHRlbXBsYXRlLCBsb2dNZXNzYWdlKSkKLSAgICAgICAgICAgIGZpbGUuY2xvc2UoKQotICAgICAgICAgICAgcHJpbnQgKCJQZXJmb3JjZSBzdWJtaXQgdGVtcGxhdGUgd3JpdHRlbiBhcyAlcy4gIgotICAgICAgICAgICAgICAgICAgICsgIlBsZWFzZSByZXZpZXcvZWRpdCBhbmQgdGhlbiB1c2UgcDQgc3VibWl0IC1pIDwgJXMgdG8gc3VibWl0IGRpcmVjdGx5ISIKLSAgICAgICAgICAgICAgICAgICAlIChmaWxlTmFtZSwgZmlsZU5hbWUpKQorICAgICAgICAgICAgIyBza2lwIHRoaXMgcGF0Y2gKKyAgICAgICAgICAgIHJldCA9IEZhbHNlCisgICAgICAgICAgICBwcmludCAiU3VibWlzc2lvbiBjYW5jZWxsZWQsIHVuZG9pbmcgcDQgY2hhbmdlcy4iCisgICAgICAgICAgICBmb3IgZiBpbiBlZGl0ZWRGaWxlczoKKyAgICAgICAgICAgICAgICBwNF9yZXZlcnQoZikKKyAgICAgICAgICAgIGZvciBmIGluIGZpbGVzVG9BZGQ6CisgICAgICAgICAgICAgICAgcDRfcmV2ZXJ0KGYpCisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGYpCisgICAgICAgICAgICBmb3IgZiBpbiBmaWxlc1RvRGVsZXRlOgorICAgICAgICAgICAgICAgIHA0X3JldmVydChmKQorCisgICAgICAgIG9zLnJlbW92ZShmaWxlTmFtZSkKKyAgICAgICAgcmV0dXJuIHJldAogCiAgICAgIyBFeHBvcnQgZ2l0IHRhZ3MgYXMgcDQgbGFiZWxzLiBDcmVhdGUgYSBwNCBsYWJlbCBhbmQgdGhlbiB0YWcKICAgICAjIHdpdGggdGhhdC4KQEAgLTEzNDYsMTQgKzE1NTgsMjAgQEAKICAgICAgICAgICAgIGZvciBtYXBwaW5nIGluIGNsaWVudFNwZWMubWFwcGluZ3M6CiAgICAgICAgICAgICAgICAgbGFiZWxUZW1wbGF0ZSArPSAiXHQlc1xuIiAlIG1hcHBpbmcuZGVwb3Rfc2lkZS5wYXRoCiAKLSAgICAgICAgICAgIHA0X3dyaXRlX3BpcGUoWyJsYWJlbCIsICItaSJdLCBsYWJlbFRlbXBsYXRlKQorICAgICAgICAgICAgaWYgc2VsZi5kcnlfcnVuOgorICAgICAgICAgICAgICAgIHByaW50ICJXb3VsZCBjcmVhdGUgcDQgbGFiZWwgJXMgZm9yIHRhZyIgJSBuYW1lCisgICAgICAgICAgICBlbGlmIHNlbGYucHJlcGFyZV9wNF9vbmx5OgorICAgICAgICAgICAgICAgIHByaW50ICJOb3QgY3JlYXRpbmcgcDQgbGFiZWwgJXMgZm9yIHRhZyBkdWUgdG8gb3B0aW9uIiBcCisgICAgICAgICAgICAgICAgICAgICAgIiAtLXByZXBhcmUtcDQtb25seSIgJSBuYW1lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHA0X3dyaXRlX3BpcGUoWyJsYWJlbCIsICItaSJdLCBsYWJlbFRlbXBsYXRlKQogCi0gICAgICAgICAgICAjIFVzZSB0aGUgbGFiZWwKLSAgICAgICAgICAgIHA0X3N5c3RlbShbInRhZyIsICItbCIsIG5hbWVdICsKLSAgICAgICAgICAgICAgICAgICAgICBbIiVzQCVzIiAlIChtYXBwaW5nLmRlcG90X3NpZGUucGF0aCwgY2hhbmdlbGlzdCkgZm9yIG1hcHBpbmcgaW4gY2xpZW50U3BlYy5tYXBwaW5nc10pCisgICAgICAgICAgICAgICAgIyBVc2UgdGhlIGxhYmVsCisgICAgICAgICAgICAgICAgcDRfc3lzdGVtKFsidGFnIiwgIi1sIiwgbmFtZV0gKworICAgICAgICAgICAgICAgICAgICAgICAgICBbIiVzQCVzIiAlIChtYXBwaW5nLmRlcG90X3NpZGUucGF0aCwgY2hhbmdlbGlzdCkgZm9yIG1hcHBpbmcgaW4gY2xpZW50U3BlYy5tYXBwaW5nc10pCiAKLSAgICAgICAgICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQgImNyZWF0ZWQgcDQgbGFiZWwgZm9yIHRhZyAlcyIgJSBuYW1lCisgICAgICAgICAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgImNyZWF0ZWQgcDQgbGFiZWwgZm9yIHRhZyAlcyIgJSBuYW1lCiAKICAgICBkZWYgcnVuKHNlbGYsIGFyZ3MpOgogICAgICAgICBpZiBsZW4oYXJncykgPT0gMDoKQEAgLTEzODAsNiArMTU5OCwxNiBAQAogICAgICAgICAgICAgaWYgbm90IHNlbGYuY2FuQ2hhbmdlQ2hhbmdlbGlzdHMoKToKICAgICAgICAgICAgICAgICBkaWUoIkNhbm5vdCBwcmVzZXJ2ZSB1c2VyIG5hbWVzIHdpdGhvdXQgcDQgc3VwZXItdXNlciBvciBhZG1pbiBwZXJtaXNzaW9ucyIpCiAKKyAgICAgICAgIyBpZiBub3Qgc2V0IGZyb20gdGhlIGNvbW1hbmQgbGluZSwgdHJ5IHRoZSBjb25maWcgZmlsZQorICAgICAgICBpZiBzZWxmLmNvbmZsaWN0X2JlaGF2aW9yIGlzIE5vbmU6CisgICAgICAgICAgICB2YWwgPSBnaXRDb25maWcoImdpdC1wNC5jb25mbGljdCIpCisgICAgICAgICAgICBpZiB2YWw6CisgICAgICAgICAgICAgICAgaWYgdmFsIG5vdCBpbiBzZWxmLmNvbmZsaWN0X2JlaGF2aW9yX2Nob2ljZXM6CisgICAgICAgICAgICAgICAgICAgIGRpZSgiSW52YWxpZCB2YWx1ZSAnJXMnIGZvciBjb25maWcgZ2l0LXA0LmNvbmZsaWN0IiAlIHZhbCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdmFsID0gImFzayIKKyAgICAgICAgICAgIHNlbGYuY29uZmxpY3RfYmVoYXZpb3IgPSB2YWwKKwogICAgICAgICBpZiBzZWxmLnZlcmJvc2U6CiAgICAgICAgICAgICBwcmludCAiT3JpZ2luIGJyYW5jaCBpcyAiICsgc2VsZi5vcmlnaW4KIApAQCAtMTM4OCw3ICsxNjE2LDcgQEAKICAgICAgICAgICAgIHN5cy5leGl0KDEyOCkKIAogICAgICAgICBzZWxmLnVzZUNsaWVudFNwZWMgPSBGYWxzZQotICAgICAgICBpZiBnaXRDb25maWcoImdpdC1wNC51c2VjbGllbnRzcGVjIiwgIi0tYm9vbCIpID09ICJ0cnVlIjoKKyAgICAgICAgaWYgZ2l0Q29uZmlnQm9vbCgiZ2l0LXA0LnVzZWNsaWVudHNwZWMiKToKICAgICAgICAgICAgIHNlbGYudXNlQ2xpZW50U3BlYyA9IFRydWUKICAgICAgICAgaWYgc2VsZi51c2VDbGllbnRTcGVjOgogICAgICAgICAgICAgc2VsZi5jbGllbnRTcGVjRGlycyA9IGdldENsaWVudFNwZWMoKQpAQCAtMTQxMSwyMSArMTYzOSwyNCBAQAogICAgICAgICAgICAgbmV3X2NsaWVudF9kaXIgPSBUcnVlCiAgICAgICAgICAgICBvcy5tYWtlZGlycyhzZWxmLmNsaWVudFBhdGgpCiAKLSAgICAgICAgY2hkaXIoc2VsZi5jbGllbnRQYXRoKQotICAgICAgICBwcmludCAiU3luY2hyb25pemluZyBwNCBjaGVja291dC4uLiIKLSAgICAgICAgaWYgbmV3X2NsaWVudF9kaXI6Ci0gICAgICAgICAgICAjIG9sZCBvbmUgd2FzIGRlc3Ryb3llZCwgYW5kIG1heWJlIG5vYm9keSB0b2xkIHA0Ci0gICAgICAgICAgICBwNF9zeW5jKCIuLi4iLCAiLWYiKQorICAgICAgICBjaGRpcihzZWxmLmNsaWVudFBhdGgsIGlzX2NsaWVudF9wYXRoPVRydWUpCisgICAgICAgIGlmIHNlbGYuZHJ5X3J1bjoKKyAgICAgICAgICAgIHByaW50ICJXb3VsZCBzeW5jaHJvbml6ZSBwNCBjaGVja291dCBpbiAlcyIgJSBzZWxmLmNsaWVudFBhdGgKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHA0X3N5bmMoIi4uLiIpCisgICAgICAgICAgICBwcmludCAiU3luY2hyb25pemluZyBwNCBjaGVja291dC4uLiIKKyAgICAgICAgICAgIGlmIG5ld19jbGllbnRfZGlyOgorICAgICAgICAgICAgICAgICMgb2xkIG9uZSB3YXMgZGVzdHJveWVkLCBhbmQgbWF5YmUgbm9ib2R5IHRvbGQgcDQKKyAgICAgICAgICAgICAgICBwNF9zeW5jKCIuLi4iLCAiLWYiKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwNF9zeW5jKCIuLi4iKQogICAgICAgICBzZWxmLmNoZWNrKCkKIAogICAgICAgICBjb21taXRzID0gW10KLSAgICAgICAgZm9yIGxpbmUgaW4gcmVhZF9waXBlX2xpbmVzKCJnaXQgcmV2LWxpc3QgLS1uby1tZXJnZXMgJXMuLiVzIiAlIChzZWxmLm9yaWdpbiwgc2VsZi5tYXN0ZXIpKToKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVhZF9waXBlX2xpbmVzKFsiZ2l0IiwgInJldi1saXN0IiwgIi0tbm8tbWVyZ2VzIiwgIiVzLi4lcyIgJSAoc2VsZi5vcmlnaW4sIHNlbGYubWFzdGVyKV0pOgogICAgICAgICAgICAgY29tbWl0cy5hcHBlbmQobGluZS5zdHJpcCgpKQogICAgICAgICBjb21taXRzLnJldmVyc2UoKQogCi0gICAgICAgIGlmIHNlbGYucHJlc2VydmVVc2VyIG9yIChnaXRDb25maWcoImdpdC1wNC5za2lwVXNlck5hbWVDaGVjayIpID09ICJ0cnVlIik6CisgICAgICAgIGlmIHNlbGYucHJlc2VydmVVc2VyIG9yIGdpdENvbmZpZ0Jvb2woImdpdC1wNC5za2lwVXNlck5hbWVDaGVjayIpOgogICAgICAgICAgICAgc2VsZi5jaGVja0F1dGhvcnNoaXAgPSBGYWxzZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5jaGVja0F1dGhvcnNoaXAgPSBUcnVlCkBAIC0xNDMzLDI0ICsxNjY0LDExOSBAQAogICAgICAgICBpZiBzZWxmLnByZXNlcnZlVXNlcjoKICAgICAgICAgICAgIHNlbGYuY2hlY2tWYWxpZFA0VXNlcnMoY29tbWl0cykKIAotICAgICAgICB3aGlsZSBsZW4oY29tbWl0cykgPiAwOgotICAgICAgICAgICAgY29tbWl0ID0gY29tbWl0c1swXQotICAgICAgICAgICAgY29tbWl0cyA9IGNvbW1pdHNbMTpdCi0gICAgICAgICAgICBzZWxmLmFwcGx5Q29tbWl0KGNvbW1pdCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmludGVyYWN0aXZlOgotICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICMKKyAgICAgICAgIyBCdWlsZCB1cCBhIHNldCBvZiBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byBkaWZmIHdoZW4KKyAgICAgICAgIyBzdWJtaXR0aW5nIGVhY2ggY29tbWl0IHRvIHA0LgorICAgICAgICAjCisgICAgICAgIGlmIHNlbGYuZGV0ZWN0UmVuYW1lczoKKyAgICAgICAgICAgICMgY29tbWFuZC1saW5lIC1NIGFyZworICAgICAgICAgICAgc2VsZi5kaWZmT3B0cyA9ICItTSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgSWYgbm90IGV4cGxpY2l0bHkgc2V0IGNoZWNrIHRoZSBjb25maWcgdmFyaWFibGUKKyAgICAgICAgICAgIGRldGVjdFJlbmFtZXMgPSBnaXRDb25maWcoImdpdC1wNC5kZXRlY3RSZW5hbWVzIikKIAotICAgICAgICBpZiBsZW4oY29tbWl0cykgPT0gMDoKLSAgICAgICAgICAgIHByaW50ICJBbGwgY2hhbmdlcyBhcHBsaWVkISIKLSAgICAgICAgICAgIGNoZGlyKHNlbGYub2xkV29ya2luZ0RpcmVjdG9yeSkKKyAgICAgICAgICAgIGlmIGRldGVjdFJlbmFtZXMubG93ZXIoKSA9PSAiZmFsc2UiIG9yIGRldGVjdFJlbmFtZXMgPT0gIiI6CisgICAgICAgICAgICAgICAgc2VsZi5kaWZmT3B0cyA9ICIiCisgICAgICAgICAgICBlbGlmIGRldGVjdFJlbmFtZXMubG93ZXIoKSA9PSAidHJ1ZSI6CisgICAgICAgICAgICAgICAgc2VsZi5kaWZmT3B0cyA9ICItTSIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5kaWZmT3B0cyA9ICItTSVzIiAlIGRldGVjdFJlbmFtZXMKKworICAgICAgICAjIG5vIGNvbW1hbmQtbGluZSBhcmcgZm9yIC1DIG9yIC0tZmluZC1jb3BpZXMtaGFyZGVyLCBqdXN0CisgICAgICAgICMgY29uZmlnIHZhcmlhYmxlcworICAgICAgICBkZXRlY3RDb3BpZXMgPSBnaXRDb25maWcoImdpdC1wNC5kZXRlY3RDb3BpZXMiKQorICAgICAgICBpZiBkZXRlY3RDb3BpZXMubG93ZXIoKSA9PSAiZmFsc2UiIG9yIGRldGVjdENvcGllcyA9PSAiIjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxpZiBkZXRlY3RDb3BpZXMubG93ZXIoKSA9PSAidHJ1ZSI6CisgICAgICAgICAgICBzZWxmLmRpZmZPcHRzICs9ICIgLUMiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmRpZmZPcHRzICs9ICIgLUMlcyIgJSBkZXRlY3RDb3BpZXMKKworICAgICAgICBpZiBnaXRDb25maWdCb29sKCJnaXQtcDQuZGV0ZWN0Q29waWVzSGFyZGVyIik6CisgICAgICAgICAgICBzZWxmLmRpZmZPcHRzICs9ICIgLS1maW5kLWNvcGllcy1oYXJkZXIiCisKKyAgICAgICAgIworICAgICAgICAjIEFwcGx5IHRoZSBjb21taXRzLCBvbmUgYXQgYSB0aW1lLiAgT24gZmFpbHVyZSwgYXNrIGlmIHNob3VsZAorICAgICAgICAjIGNvbnRpbnVlIHRvIHRyeSB0aGUgcmVzdCBvZiB0aGUgcGF0Y2hlcywgb3IgcXVpdC4KKyAgICAgICAgIworICAgICAgICBpZiBzZWxmLmRyeV9ydW46CisgICAgICAgICAgICBwcmludCAiV291bGQgYXBwbHkiCisgICAgICAgIGFwcGxpZWQgPSBbXQorICAgICAgICBsYXN0ID0gbGVuKGNvbW1pdHMpIC0gMQorICAgICAgICBmb3IgaSwgY29tbWl0IGluIGVudW1lcmF0ZShjb21taXRzKToKKyAgICAgICAgICAgIGlmIHNlbGYuZHJ5X3J1bjoKKyAgICAgICAgICAgICAgICBwcmludCAiICIsIHJlYWRfcGlwZShbImdpdCIsICJzaG93IiwgIi1zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZm9ybWF0PWZvcm1hdDolaCAlcyIsIGNvbW1pdF0pCisgICAgICAgICAgICAgICAgb2sgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9rID0gc2VsZi5hcHBseUNvbW1pdChjb21taXQpCisgICAgICAgICAgICBpZiBvazoKKyAgICAgICAgICAgICAgICBhcHBsaWVkLmFwcGVuZChjb21taXQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIHNlbGYucHJlcGFyZV9wNF9vbmx5IGFuZCBpIDwgbGFzdDoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgIlByb2Nlc3Npbmcgb25seSB0aGUgZmlyc3QgY29tbWl0IGR1ZSB0byBvcHRpb24iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAtLXByZXBhcmUtcDQtb25seSIKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBpIDwgbGFzdDoKKyAgICAgICAgICAgICAgICAgICAgcXVpdCA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIHByb21wdCBmb3Igd2hhdCB0byBkbywgb3IgdXNlIHRoZSBvcHRpb24vdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuY29uZmxpY3RfYmVoYXZpb3IgPT0gImFzayI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIldoYXQgZG8geW91IHdhbnQgdG8gZG8/IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gcmF3X2lucHV0KCJbc11raXAgdGhpcyBjb21taXQgYnV0IGFwcGx5IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgdGhlIHJlc3QsIG9yIFtxXXVpdD8gIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVzcG9uc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHNlbGYuY29uZmxpY3RfYmVoYXZpb3IgPT0gInNraXAiOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gInMiCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHNlbGYuY29uZmxpY3RfYmVoYXZpb3IgPT0gInF1aXQiOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gInEiCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZSgiVW5rbm93biBjb25mbGljdF9iZWhhdmlvciAnJXMnIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmxpY3RfYmVoYXZpb3IpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlc3BvbnNlWzBdID09ICJzIjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiU2tpcHBpbmcgdGhpcyBjb21taXQsIGJ1dCBhcHBseWluZyB0aGUgcmVzdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVzcG9uc2VbMF0gPT0gInEiOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICJRdWl0dGluZyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWl0ID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGlmIHF1aXQ6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIGNoZGlyKHNlbGYub2xkV29ya2luZ0RpcmVjdG9yeSkKKworICAgICAgICBpZiBzZWxmLmRyeV9ydW46CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsaWYgc2VsZi5wcmVwYXJlX3A0X29ubHk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsaWYgbGVuKGNvbW1pdHMpID09IGxlbihhcHBsaWVkKToKKyAgICAgICAgICAgIHByaW50ICJBbGwgY29tbWl0cyBhcHBsaWVkISIKIAogICAgICAgICAgICAgc3luYyA9IFA0U3luYygpCisgICAgICAgICAgICBpZiBzZWxmLmJyYW5jaDoKKyAgICAgICAgICAgICAgICBzeW5jLmJyYW5jaCA9IHNlbGYuYnJhbmNoCiAgICAgICAgICAgICBzeW5jLnJ1bihbXSkKIAogICAgICAgICAgICAgcmViYXNlID0gUDRSZWJhc2UoKQogICAgICAgICAgICAgcmViYXNlLnJlYmFzZSgpCiAKLSAgICAgICAgaWYgZ2l0Q29uZmlnKCJnaXQtcDQuZXhwb3J0TGFiZWxzIiwgIi0tYm9vbCIpID09ICJ0cnVlIjoKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGxlbihhcHBsaWVkKSA9PSAwOgorICAgICAgICAgICAgICAgIHByaW50ICJObyBjb21taXRzIGFwcGxpZWQuIgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCAiQXBwbGllZCBvbmx5IHRoZSBjb21taXRzIG1hcmtlZCB3aXRoICcqJzoiCisgICAgICAgICAgICAgICAgZm9yIGMgaW4gY29tbWl0czoKKyAgICAgICAgICAgICAgICAgICAgaWYgYyBpbiBhcHBsaWVkOgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhciA9ICIqIgorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhciA9ICIgIgorICAgICAgICAgICAgICAgICAgICBwcmludCBzdGFyLCByZWFkX3BpcGUoWyJnaXQiLCAic2hvdyIsICItcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZm9ybWF0PWZvcm1hdDolaCAlcyIsICBjXSkKKyAgICAgICAgICAgICAgICBwcmludCAiWW91IHdpbGwgaGF2ZSB0byBkbyAnZ2l0IHA0IHN5bmMnIGFuZCByZWJhc2UuIgorCisgICAgICAgIGlmIGdpdENvbmZpZ0Jvb2woImdpdC1wNC5leHBvcnRMYWJlbHMiKToKICAgICAgICAgICAgIHNlbGYuZXhwb3J0TGFiZWxzID0gVHJ1ZQogCiAgICAgICAgIGlmIHNlbGYuZXhwb3J0TGFiZWxzOgpAQCAtMTQ2MCw2ICsxNzg2LDEwIEBACiAgICAgICAgICAgICBtaXNzaW5nR2l0VGFncyA9IGdpdFRhZ3MgLSBwNExhYmVscwogICAgICAgICAgICAgc2VsZi5leHBvcnRHaXRUYWdzKG1pc3NpbmdHaXRUYWdzKQogCisgICAgICAgICMgZXhpdCB3aXRoIGVycm9yIHVubGVzcyBldmVyeXRoaW5nIGFwcGxpZWQgcGVyZmVjbHkKKyAgICAgICAgaWYgbGVuKGNvbW1pdHMpICE9IGxlbihhcHBsaWVkKToKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorCiAgICAgICAgIHJldHVybiBUcnVlCiAKIGNsYXNzIFZpZXcob2JqZWN0KToKQEAgLTE3MTYsNyArMjA0Niw2IEBACiAgICAgICAgIHNlbGYuc3luY1dpdGhPcmlnaW4gPSBUcnVlCiAgICAgICAgIHNlbGYuaW1wb3J0SW50b1JlbW90ZXMgPSBUcnVlCiAgICAgICAgIHNlbGYubWF4Q2hhbmdlcyA9ICIiCi0gICAgICAgIHNlbGYuaXNXaW5kb3dzID0gKHBsYXRmb3JtLnN5c3RlbSgpID09ICJXaW5kb3dzIikKICAgICAgICAgc2VsZi5rZWVwUmVwb1BhdGggPSBGYWxzZQogICAgICAgICBzZWxmLmRlcG90UGF0aHMgPSBOb25lCiAgICAgICAgIHNlbGYucDRCcmFuY2hlc0luR2l0ID0gW10KQEAgLTE3NjYsMTkgKzIwOTUsNDEgQEAKICAgICAgICAgcmV0dXJuIGZpbGVzCiAKICAgICBkZWYgc3RyaXBSZXBvUGF0aChzZWxmLCBwYXRoLCBwcmVmaXhlcyk6CisgICAgICAgICIiIldoZW4gc3RyZWFtaW5nIGZpbGVzLCB0aGlzIGlzIGNhbGxlZCB0byBtYXAgYSBwNCBkZXBvdCBwYXRoCisgICAgICAgICAgIHRvIHdoZXJlIGl0IHNob3VsZCBnbyBpbiBnaXQuICBUaGUgcHJlZml4ZXMgYXJlIGVpdGhlcgorICAgICAgICAgICBzZWxmLmRlcG90UGF0aHMsIG9yIHNlbGYuYnJhbmNoUHJlZml4ZXMgaW4gdGhlIGNhc2Ugb2YKKyAgICAgICAgICAgYnJhbmNoIGRldGVjdGlvbi4iIiIKKwogICAgICAgICBpZiBzZWxmLnVzZUNsaWVudFNwZWM6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5jbGllbnRTcGVjRGlycy5tYXBfaW5fY2xpZW50KHBhdGgpCisgICAgICAgICAgICAjIGJyYW5jaCBkZXRlY3Rpb24gbW92ZXMgZmlsZXMgdXAgYSBsZXZlbCAodGhlIGJyYW5jaCBuYW1lKQorICAgICAgICAgICAgIyBmcm9tIHdoYXQgY2xpZW50IHNwZWMgaW50ZXJwcmV0YXRpb24gZ2l2ZXMKKyAgICAgICAgICAgIHBhdGggPSBzZWxmLmNsaWVudFNwZWNEaXJzLm1hcF9pbl9jbGllbnQocGF0aCkKKyAgICAgICAgICAgIGlmIHNlbGYuZGV0ZWN0QnJhbmNoZXM6CisgICAgICAgICAgICAgICAgZm9yIGIgaW4gc2VsZi5rbm93bkJyYW5jaGVzOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoYiArICIvIik6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGF0aFtsZW4oYikrMTpdCiAKLSAgICAgICAgaWYgc2VsZi5rZWVwUmVwb1BhdGg6Ci0gICAgICAgICAgICBwcmVmaXhlcyA9IFtyZS5zdWIoIl4oLy9bXi9dKy8pLioiLCByJ1wxJywgcHJlZml4ZXNbMF0pXQorICAgICAgICBlbGlmIHNlbGYua2VlcFJlcG9QYXRoOgorICAgICAgICAgICAgIyBQcmVzZXJ2ZSBldmVyeXRoaW5nIGluIHJlbGF0aXZlIHBhdGggbmFtZSBleGNlcHQgbGVhZGluZworICAgICAgICAgICAgIyAvL2RlcG90LzsganVzdCBsb29rIGF0IGZpcnN0IHByZWZpeCBhcyB0aGV5IGFsbCBzaG91bGQKKyAgICAgICAgICAgICMgYmUgaW4gdGhlIHNhbWUgZGVwb3QuCisgICAgICAgICAgICBkZXBvdCA9IHJlLnN1YigiXigvL1teL10rLykuKiIsIHInXDEnLCBwcmVmaXhlc1swXSkKKyAgICAgICAgICAgIGlmIHA0UGF0aFN0YXJ0c1dpdGgocGF0aCwgZGVwb3QpOgorICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoW2xlbihkZXBvdCk6XQogCi0gICAgICAgIGZvciBwIGluIHByZWZpeGVzOgotICAgICAgICAgICAgaWYgcDRQYXRoU3RhcnRzV2l0aChwYXRoLCBwKToKLSAgICAgICAgICAgICAgICBwYXRoID0gcGF0aFtsZW4ocCk6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm9yIHAgaW4gcHJlZml4ZXM6CisgICAgICAgICAgICAgICAgaWYgcDRQYXRoU3RhcnRzV2l0aChwYXRoLCBwKToKKyAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhdGhbbGVuKHApOl0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKIAorICAgICAgICBwYXRoID0gd2lsZGNhcmRfZGVjb2RlKHBhdGgpCiAgICAgICAgIHJldHVybiBwYXRoCiAKICAgICBkZWYgc3BsaXRGaWxlc0ludG9CcmFuY2hlcyhzZWxmLCBjb21taXQpOgorICAgICAgICAiIiJMb29rIGF0IGVhY2ggZGVwb3RGaWxlIGluIHRoZSBjb21taXQgdG8gZmlndXJlIG91dCB0byB3aGF0CisgICAgICAgICAgIGJyYW5jaCBpdCBiZWxvbmdzLiIiIgorCiAgICAgICAgIGJyYW5jaGVzID0ge30KICAgICAgICAgZm51bSA9IDAKICAgICAgICAgd2hpbGUgY29tbWl0Lmhhc19rZXkoImRlcG90RmlsZSVzIiAlIGZudW0pOgpAQCAtMTc5NiwxMiArMjE0NywxNiBAQAogICAgICAgICAgICAgZmlsZVsidHlwZSJdID0gY29tbWl0WyJ0eXBlJXMiICUgZm51bV0KICAgICAgICAgICAgIGZudW0gPSBmbnVtICsgMQogCi0gICAgICAgICAgICByZWxQYXRoID0gc2VsZi5zdHJpcFJlcG9QYXRoKHBhdGgsIHNlbGYuZGVwb3RQYXRocykKLSAgICAgICAgICAgIHJlbFBhdGggPSB3aWxkY2FyZF9kZWNvZGUocmVsUGF0aCkKKyAgICAgICAgICAgICMgc3RhcnQgd2l0aCB0aGUgZnVsbCByZWxhdGl2ZSBwYXRoIHdoZXJlIHRoaXMgZmlsZSB3b3VsZAorICAgICAgICAgICAgIyBnbyBpbiBhIHA0IGNsaWVudAorICAgICAgICAgICAgaWYgc2VsZi51c2VDbGllbnRTcGVjOgorICAgICAgICAgICAgICAgIHJlbFBhdGggPSBzZWxmLmNsaWVudFNwZWNEaXJzLm1hcF9pbl9jbGllbnQocGF0aCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVsUGF0aCA9IHNlbGYuc3RyaXBSZXBvUGF0aChwYXRoLCBzZWxmLmRlcG90UGF0aHMpCiAKICAgICAgICAgICAgIGZvciBicmFuY2ggaW4gc2VsZi5rbm93bkJyYW5jaGVzLmtleXMoKToKLQotICAgICAgICAgICAgICAgICMgYWRkIGEgdHJhaWxpbmcgc2xhc2ggc28gdGhhdCBhIGNvbW1pdCBpbnRvIHF0LzQuMmZvbyBkb2Vzbid0IGVuZCB1cCBpbiBxdC80LjIKKyAgICAgICAgICAgICAgICAjIGFkZCBhIHRyYWlsaW5nIHNsYXNoIHNvIHRoYXQgYSBjb21taXQgaW50byBxdC80LjJmb28KKyAgICAgICAgICAgICAgICAjIGRvZXNuJ3QgZW5kIHVwIGluIHF0LzQuMiwgZS5nLgogICAgICAgICAgICAgICAgIGlmIHJlbFBhdGguc3RhcnRzd2l0aChicmFuY2ggKyAiLyIpOgogICAgICAgICAgICAgICAgICAgICBpZiBicmFuY2ggbm90IGluIGJyYW5jaGVzOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoZXNbYnJhbmNoXSA9IFtdCkBAIC0xODE1LDcgKzIxNzAsNiBAQAogCiAgICAgZGVmIHN0cmVhbU9uZVA0RmlsZShzZWxmLCBmaWxlLCBjb250ZW50cyk6CiAgICAgICAgIHJlbFBhdGggPSBzZWxmLnN0cmlwUmVwb1BhdGgoZmlsZVsnZGVwb3RGaWxlJ10sIHNlbGYuYnJhbmNoUHJlZml4ZXMpCi0gICAgICAgIHJlbFBhdGggPSB3aWxkY2FyZF9kZWNvZGUocmVsUGF0aCkKICAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIiVzXG4iICUgcmVsUGF0aCkKIApAQCAtMTgzNiw3ICsyMTkwLDE0IEBACiAgICAgICAgICAgICAjIG9wZXJhdGlvbnMuICB1dGYxNiBpcyBjb252ZXJ0ZWQgdG8gYXNjaWkgb3IgdXRmOCwgcGVyaGFwcy4KICAgICAgICAgICAgICMgQnV0IGFzY2lpIHRleHQgc2F2ZWQgYXMgLXQgdXRmMTYgaXMgY29tcGxldGVseSBtYW5nbGVkLgogICAgICAgICAgICAgIyBJbnZva2UgcHJpbnQgLW8gdG8gZ2V0IHRoZSByZWFsIGNvbnRlbnRzLgorICAgICAgICAgICAgIworICAgICAgICAgICAgIyBPbiB3aW5kb3dzLCB0aGUgbmV3bGluZXMgd2lsbCBhbHdheXMgYmUgbWFuZ2xlZCBieSBwcmludCwgc28gcHV0CisgICAgICAgICAgICAjIHRoZW0gYmFjayB0b28uICBUaGlzIGlzIG5vdCBuZWVkZWQgdG8gdGhlIGN5Z3dpbiB3aW5kb3dzIHZlcnNpb24sCisgICAgICAgICAgICAjIGp1c3QgdGhlIG5hdGl2ZSAiTlQiIHR5cGUuCisgICAgICAgICAgICAjCiAgICAgICAgICAgICB0ZXh0ID0gcDRfcmVhZF9waXBlKFsncHJpbnQnLCAnLXEnLCAnLW8nLCAnLScsIGZpbGVbJ2RlcG90RmlsZSddXSkKKyAgICAgICAgICAgIGlmIHA0X3ZlcnNpb25fc3RyaW5nKCkuZmluZCgiL05UIikgPj0gMDoKKyAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCJcclxuIiwgIlxuIikKICAgICAgICAgICAgIGNvbnRlbnRzID0gWyB0ZXh0IF0KIAogICAgICAgICBpZiB0eXBlX2Jhc2UgPT0gImFwcGxlIjoKQEAgLTE4NTIsMTUgKzIyMTMsNiBAQAogICAgICAgICAgICAgcHJpbnQgIlxuSWdub3JpbmcgYXBwbGUgZmlsZXR5cGUgZmlsZSAlcyIgJSBmaWxlWydkZXBvdEZpbGUnXQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgIyBQZXJoYXBzIHdpbmRvd3Mgd2FudHMgdW5pY29kZSwgdXRmMTYgbmV3bGluZXMgdHJhbnNsYXRlZCB0b287Ci0gICAgICAgICMgYnV0IHRoaXMgaXMgbm90IGRvaW5nIGl0LgotICAgICAgICBpZiBzZWxmLmlzV2luZG93cyBhbmQgdHlwZV9iYXNlID09ICJ0ZXh0IjoKLSAgICAgICAgICAgIG1hbmdsZWQgPSBbXQotICAgICAgICAgICAgZm9yIGRhdGEgaW4gY29udGVudHM6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgiXHJcbiIsICJcbiIpCi0gICAgICAgICAgICAgICAgbWFuZ2xlZC5hcHBlbmQoZGF0YSkKLSAgICAgICAgICAgIGNvbnRlbnRzID0gbWFuZ2xlZAotCiAgICAgICAgICMgTm90ZSB0aGF0IHdlIGRvIG5vdCB0cnkgdG8gZGUtbWFuZ2xlIGtleXdvcmRzIG9uIHV0ZjE2IGZpbGVzLAogICAgICAgICAjIGV2ZW4gdGhvdWdoIGluIHRoZW9yeSBzb21lYm9keSBtYXkgd2FudCB0aGF0LgogICAgICAgICBwYXR0ZXJuID0gcDRfa2V5d29yZHNfcmVnZXhwX2Zvcl90eXBlKHR5cGVfYmFzZSwgdHlwZV9tb2RzKQpAQCAtMTg4NCw3ICsyMjM2LDYgQEAKIAogICAgIGRlZiBzdHJlYW1PbmVQNERlbGV0aW9uKHNlbGYsIGZpbGUpOgogICAgICAgICByZWxQYXRoID0gc2VsZi5zdHJpcFJlcG9QYXRoKGZpbGVbJ3BhdGgnXSwgc2VsZi5icmFuY2hQcmVmaXhlcykKLSAgICAgICAgcmVsUGF0aCA9IHdpbGRjYXJkX2RlY29kZShyZWxQYXRoKQogICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiZGVsZXRlICVzXG4iICUgcmVsUGF0aCkKICAgICAgICAgc2VsZi5naXRTdHJlYW0ud3JpdGUoIkQgJXNcbiIgJSByZWxQYXRoKQpAQCAtMTg5Miw2ICsyMjQzLDI5IEBACiAgICAgIyBoYW5kbGUgYW5vdGhlciBjaHVuayBvZiBzdHJlYW1pbmcgZGF0YQogICAgIGRlZiBzdHJlYW1QNEZpbGVzQ2Ioc2VsZiwgbWFyc2hhbGxlZCk6CiAKKyAgICAgICAgIyBjYXRjaCBwNCBlcnJvcnMgYW5kIGNvbXBsYWluCisgICAgICAgIGVyciA9IE5vbmUKKyAgICAgICAgaWYgImNvZGUiIGluIG1hcnNoYWxsZWQ6CisgICAgICAgICAgICBpZiBtYXJzaGFsbGVkWyJjb2RlIl0gPT0gImVycm9yIjoKKyAgICAgICAgICAgICAgICBpZiAiZGF0YSIgaW4gbWFyc2hhbGxlZDoKKyAgICAgICAgICAgICAgICAgICAgZXJyID0gbWFyc2hhbGxlZFsiZGF0YSJdLnJzdHJpcCgpCisgICAgICAgIGlmIGVycjoKKyAgICAgICAgICAgIGYgPSBOb25lCisgICAgICAgICAgICBpZiBzZWxmLnN0cmVhbV9oYXZlX2ZpbGVfaW5mbzoKKyAgICAgICAgICAgICAgICBpZiAiZGVwb3RGaWxlIiBpbiBzZWxmLnN0cmVhbV9maWxlOgorICAgICAgICAgICAgICAgICAgICBmID0gc2VsZi5zdHJlYW1fZmlsZVsiZGVwb3RGaWxlIl0KKyAgICAgICAgICAgICMgZm9yY2UgYSBmYWlsdXJlIGluIGZhc3QtaW1wb3J0LCBlbHNlIGFuIGVtcHR5CisgICAgICAgICAgICAjIGNvbW1pdCB3aWxsIGJlIG1hZGUKKyAgICAgICAgICAgIHNlbGYuZ2l0U3RyZWFtLndyaXRlKCJcbiIpCisgICAgICAgICAgICBzZWxmLmdpdFN0cmVhbS53cml0ZSgiZGllLW5vd1xuIikKKyAgICAgICAgICAgIHNlbGYuZ2l0U3RyZWFtLmNsb3NlKCkKKyAgICAgICAgICAgICMgaWdub3JlIGVycm9ycywgYnV0IG1ha2Ugc3VyZSBpdCBleGl0cyBmaXJzdAorICAgICAgICAgICAgc2VsZi5pbXBvcnRQcm9jZXNzLndhaXQoKQorICAgICAgICAgICAgaWYgZjoKKyAgICAgICAgICAgICAgICBkaWUoIkVycm9yIGZyb20gcDQgcHJpbnQgZm9yICVzOiAlcyIgJSAoZiwgZXJyKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGllKCJFcnJvciBmcm9tIHA0IHByaW50OiAlcyIgJSBlcnIpCisKICAgICAgICAgaWYgbWFyc2hhbGxlZC5oYXNfa2V5KCdkZXBvdEZpbGUnKSBhbmQgc2VsZi5zdHJlYW1faGF2ZV9maWxlX2luZm86CiAgICAgICAgICAgICAjIHN0YXJ0IG9mIGEgbmV3IGZpbGUgLSBvdXRwdXQgdGhlIG9sZCBvbmUgZmlyc3QKICAgICAgICAgICAgIHNlbGYuc3RyZWFtT25lUDRGaWxlKHNlbGYuc3RyZWFtX2ZpbGUsIHNlbGYuc3RyZWFtX2NvbnRlbnRzKQpAQCAtMTk4OSwxMCArMjM2Myw5IEBACiAgICAgICAgIGdpdFN0cmVhbS53cml0ZShkZXNjcmlwdGlvbikKICAgICAgICAgZ2l0U3RyZWFtLndyaXRlKCJcbiIpCiAKLSAgICBkZWYgY29tbWl0KHNlbGYsIGRldGFpbHMsIGZpbGVzLCBicmFuY2gsIGJyYW5jaFByZWZpeGVzLCBwYXJlbnQgPSAiIik6CisgICAgZGVmIGNvbW1pdChzZWxmLCBkZXRhaWxzLCBmaWxlcywgYnJhbmNoLCBwYXJlbnQgPSAiIik6CiAgICAgICAgIGVwb2NoID0gZGV0YWlsc1sidGltZSJdCiAgICAgICAgIGF1dGhvciA9IGRldGFpbHNbInVzZXIiXQotICAgICAgICBzZWxmLmJyYW5jaFByZWZpeGVzID0gYnJhbmNoUHJlZml4ZXMKIAogICAgICAgICBpZiBzZWxmLnZlcmJvc2U6CiAgICAgICAgICAgICBwcmludCAiY29tbWl0IGludG8gJXMiICUgYnJhbmNoCkBAIC0yMDAxLDcgKzIzNzQsNyBAQAogICAgICAgICAjIGNyZWF0ZSBhIGNvbW1pdC4KICAgICAgICAgbmV3X2ZpbGVzID0gW10KICAgICAgICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgICAgICBpZiBbcCBmb3IgcCBpbiBicmFuY2hQcmVmaXhlcyBpZiBwNFBhdGhTdGFydHNXaXRoKGZbJ3BhdGgnXSwgcCldOgorICAgICAgICAgICAgaWYgW3AgZm9yIHAgaW4gc2VsZi5icmFuY2hQcmVmaXhlcyBpZiBwNFBhdGhTdGFydHNXaXRoKGZbJ3BhdGgnXSwgcCldOgogICAgICAgICAgICAgICAgIG5ld19maWxlcy5hcHBlbmQgKGYpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIklnbm9yaW5nIGZpbGUgb3V0c2lkZSBvZiBwcmVmaXg6ICVzXG4iICUgZlsncGF0aCddKQpAQCAtMjAxOCw4ICsyMzkxLDggQEAKIAogICAgICAgICBzZWxmLmdpdFN0cmVhbS53cml0ZSgiZGF0YSA8PEVPVFxuIikKICAgICAgICAgc2VsZi5naXRTdHJlYW0ud3JpdGUoZGV0YWlsc1siZGVzYyJdKQotICAgICAgICBzZWxmLmdpdFN0cmVhbS53cml0ZSgiXG5bZ2l0LXA0OiBkZXBvdC1wYXRocyA9IFwiJXNcIjogY2hhbmdlID0gJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKCcsJy5qb2luIChicmFuY2hQcmVmaXhlcyksIGRldGFpbHNbImNoYW5nZSJdKSkKKyAgICAgICAgc2VsZi5naXRTdHJlYW0ud3JpdGUoIlxuW2dpdC1wNDogZGVwb3QtcGF0aHMgPSBcIiVzXCI6IGNoYW5nZSA9ICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnLCcuam9pbihzZWxmLmJyYW5jaFByZWZpeGVzKSwgZGV0YWlsc1siY2hhbmdlIl0pKQogICAgICAgICBpZiBsZW4oZGV0YWlsc1snb3B0aW9ucyddKSA+IDA6CiAgICAgICAgICAgICBzZWxmLmdpdFN0cmVhbS53cml0ZSgiOiBvcHRpb25zID0gJXMiICUgZGV0YWlsc1snb3B0aW9ucyddKQogICAgICAgICBzZWxmLmdpdFN0cmVhbS53cml0ZSgiXVxuRU9UXG5cbiIpCkBAIC0yMDQyLDcgKzI0MTUsNyBAQAogICAgICAgICAgICAgICAgIHByaW50ICJDaGFuZ2UgJXMgaXMgbGFiZWxsZWQgJXMiICUgKGNoYW5nZSwgbGFiZWxEZXRhaWxzKQogCiAgICAgICAgICAgICBmaWxlcyA9IHA0Q21kTGlzdChbImZpbGVzIl0gKyBbIiVzLi4uQCVzIiAlIChwLCBjaGFuZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gYnJhbmNoUHJlZml4ZXNdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5icmFuY2hQcmVmaXhlc10pCiAKICAgICAgICAgICAgIGlmIGxlbihmaWxlcykgPT0gbGVuKGxhYmVsUmV2aXNpb25zKToKIApAQCAtMjEzNyw3ICsyNTEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgdG13aGVuID0gdGltZS5zdHJwdGltZShsYWJlbERldGFpbHNbJ1VwZGF0ZSddLCAiJVkvJW0vJWQgJUg6JU06JVMiKQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICJDb3VsZCBub3QgY29udmVydCBsYWJlbCB0aW1lICVzIiAlIGxhYmVsRGV0YWlsWydVcGRhdGUnXQorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIkNvdWxkIG5vdCBjb252ZXJ0IGxhYmVsIHRpbWUgJXMiICUgbGFiZWxEZXRhaWxzWydVcGRhdGUnXQogICAgICAgICAgICAgICAgICAgICAgICAgdG13aGVuID0gMQogCiAgICAgICAgICAgICAgICAgICAgIHdoZW4gPSBpbnQodGltZS5ta3RpbWUodG13aGVuKSkKQEAgLTIyMzQsMTMgKzI2MDcsNiBAQAogICAgICAgICAgICAgICAgIGJyYW5jaCA9IGJyYW5jaFtsZW4oc2VsZi5wcm9qZWN0TmFtZSk6XQogICAgICAgICAgICAgc2VsZi5rbm93bkJyYW5jaGVzW2JyYW5jaF0gPSBicmFuY2gKIAotICAgIGRlZiBsaXN0RXhpc3RpbmdQNEdpdEJyYW5jaGVzKHNlbGYpOgotICAgICAgICAjIGJyYW5jaGVzIGhvbGRzIG1hcHBpbmcgZnJvbSBuYW1lIHRvIGNvbW1pdAotICAgICAgICBicmFuY2hlcyA9IHA0QnJhbmNoZXNJbkdpdChzZWxmLmltcG9ydEludG9SZW1vdGVzKQotICAgICAgICBzZWxmLnA0QnJhbmNoZXNJbkdpdCA9IGJyYW5jaGVzLmtleXMoKQotICAgICAgICBmb3IgYnJhbmNoIGluIGJyYW5jaGVzLmtleXMoKToKLSAgICAgICAgICAgIHNlbGYuaW5pdGlhbFBhcmVudHNbc2VsZi5yZWZQcmVmaXggKyBicmFuY2hdID0gYnJhbmNoZXNbYnJhbmNoXQotCiAgICAgZGVmIHVwZGF0ZU9wdGlvbkRpY3Qoc2VsZiwgZCk6CiAgICAgICAgIG9wdGlvbl9rZXlzID0ge30KICAgICAgICAgaWYgc2VsZi5rZWVwUmVwb1BhdGg6CkBAIC0yMzI0LDcgKzI2OTAsOCBAQAogCiAgICAgZGVmIHNlYXJjaFBhcmVudChzZWxmLCBwYXJlbnQsIGJyYW5jaCwgdGFyZ2V0KToKICAgICAgICAgcGFyZW50Rm91bmQgPSBGYWxzZQotICAgICAgICBmb3IgYmxvYiBpbiByZWFkX3BpcGVfbGluZXMoWyJnaXQiLCAicmV2LWxpc3QiLCAiLS1yZXZlcnNlIiwgIi0tbm8tbWVyZ2VzIiwgcGFyZW50XSk6CisgICAgICAgIGZvciBibG9iIGluIHJlYWRfcGlwZV9saW5lcyhbImdpdCIsICJyZXYtbGlzdCIsICItLXJldmVyc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW5vLW1lcmdlcyIsIHBhcmVudF0pOgogICAgICAgICAgICAgYmxvYiA9IGJsb2Iuc3RyaXAoKQogICAgICAgICAgICAgaWYgbGVuKHJlYWRfcGlwZShbImdpdCIsICJkaWZmLXRyZWUiLCBibG9iLCB0YXJnZXRdKSkgPT0gMDoKICAgICAgICAgICAgICAgICBwYXJlbnRGb3VuZCA9IFRydWUKQEAgLTIzMzksNyArMjcwNiw3IEBACiAgICAgZGVmIGltcG9ydENoYW5nZXMoc2VsZiwgY2hhbmdlcyk6CiAgICAgICAgIGNudCA9IDEKICAgICAgICAgZm9yIGNoYW5nZSBpbiBjaGFuZ2VzOgotICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBwNENtZChbImRlc2NyaWJlIiwgc3RyKGNoYW5nZSldKQorICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBwNF9kZXNjcmliZShjaGFuZ2UpCiAgICAgICAgICAgICBzZWxmLnVwZGF0ZU9wdGlvbkRpY3QoZGVzY3JpcHRpb24pCiAKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNpbGVudDoKQEAgLTIzNTMsNiArMjcyMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZvciBicmFuY2ggaW4gYnJhbmNoZXMua2V5cygpOgogICAgICAgICAgICAgICAgICAgICAgICAgIyMgSEFDSyAgLS1od24KICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaFByZWZpeCA9IHNlbGYuZGVwb3RQYXRoc1swXSArIGJyYW5jaCArICIvIgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5icmFuY2hQcmVmaXhlcyA9IFsgYnJhbmNoUHJlZml4IF0KIAogICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gIiIKIApAQCAtMjM5NCwyMyArMjc2MiwyNCBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgICBibG9iID0gTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHBhcmVudCkgPiAwOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBCcmFuY2ggPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wQnJhbmNoTG9jYXRpb24sICIlZCIgJSAoY2hhbmdlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQnJhbmNoID0gIiVzLyVkIiAlIChzZWxmLnRlbXBCcmFuY2hMb2NhdGlvbiwgY2hhbmdlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIkNyZWF0aW5nIHRlbXBvcmFyeSBicmFuY2g6ICIgKyB0ZW1wQnJhbmNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21taXQoZGVzY3JpcHRpb24sIGZpbGVzRm9yQ29tbWl0LCB0ZW1wQnJhbmNoLCBbYnJhbmNoUHJlZml4XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1pdChkZXNjcmlwdGlvbiwgZmlsZXNGb3JDb21taXQsIHRlbXBCcmFuY2gpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50ZW1wQnJhbmNoZXMuYXBwZW5kKHRlbXBCcmFuY2gpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGVja3BvaW50KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9iID0gc2VsZi5zZWFyY2hQYXJlbnQocGFyZW50LCBicmFuY2gsIHRlbXBCcmFuY2gpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBibG9iOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWl0KGRlc2NyaXB0aW9uLCBmaWxlc0ZvckNvbW1pdCwgYnJhbmNoLCBbYnJhbmNoUHJlZml4XSwgYmxvYikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1pdChkZXNjcmlwdGlvbiwgZmlsZXNGb3JDb21taXQsIGJyYW5jaCwgYmxvYikKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi52ZXJib3NlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiUGFyZW50IG9mICVzIG5vdCBmb3VuZC4gQ29tbWl0dGluZyBpbnRvIGhlYWQgb2YgJXMiICUgKGJyYW5jaCwgcGFyZW50KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWl0KGRlc2NyaXB0aW9uLCBmaWxlc0ZvckNvbW1pdCwgYnJhbmNoLCBbYnJhbmNoUHJlZml4XSwgcGFyZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWl0KGRlc2NyaXB0aW9uLCBmaWxlc0ZvckNvbW1pdCwgYnJhbmNoLCBwYXJlbnQpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZmlsZXMgPSBzZWxmLmV4dHJhY3RGaWxlc0Zyb21Db21taXQoZGVzY3JpcHRpb24pCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWl0KGRlc2NyaXB0aW9uLCBmaWxlcywgc2VsZi5icmFuY2gsIHNlbGYuZGVwb3RQYXRocywKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21taXQoZGVzY3JpcHRpb24sIGZpbGVzLCBzZWxmLmJyYW5jaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbml0aWFsUGFyZW50KQorICAgICAgICAgICAgICAgICAgICAjIG9ubHkgbmVlZGVkIG9uY2UsIHRvIGNvbm5lY3QgdG8gdGhlIHByZXZpb3VzIGNvbW1pdAogICAgICAgICAgICAgICAgICAgICBzZWxmLmluaXRpYWxQYXJlbnQgPSAiIgogICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAgICAgICAgICAgICAgcHJpbnQgc2VsZi5naXRFcnJvci5yZWFkKCkKQEAgLTI0NjIsMTggKzI4MzEsMTIgQEAKIAogICAgICAgICAjIFVzZSB0aW1lIGZyb20gdG9wLW1vc3QgY2hhbmdlIHNvIHRoYXQgYWxsIGdpdCBwNCBjbG9uZXMgb2YKICAgICAgICAgIyB0aGUgc2FtZSBwNCByZXBvIGhhdmUgdGhlIHNhbWUgY29tbWl0IFNIQTFzLgotICAgICAgICByZXMgPSBwNENtZExpc3QoImRlc2NyaWJlIC1zICVkIiAlIG5ld2VzdFJldmlzaW9uKQotICAgICAgICBuZXdlc3RUaW1lID0gTm9uZQotICAgICAgICBmb3IgciBpbiByZXM6Ci0gICAgICAgICAgICBpZiByLmhhc19rZXkoJ3RpbWUnKToKLSAgICAgICAgICAgICAgICBuZXdlc3RUaW1lID0gaW50KHJbJ3RpbWUnXSkKLSAgICAgICAgaWYgbmV3ZXN0VGltZSBpcyBOb25lOgotICAgICAgICAgICAgZGllKCJcImRlc2NyaWJlIC1zXCIgb24gbmV3ZXN0IGNoYW5nZSAlZCBkaWQgbm90IGdpdmUgYSB0aW1lIikKLSAgICAgICAgZGV0YWlsc1sidGltZSJdID0gbmV3ZXN0VGltZQorICAgICAgICByZXMgPSBwNF9kZXNjcmliZShuZXdlc3RSZXZpc2lvbikKKyAgICAgICAgZGV0YWlsc1sidGltZSJdID0gcmVzWyJ0aW1lIl0KIAogICAgICAgICBzZWxmLnVwZGF0ZU9wdGlvbkRpY3QoZGV0YWlscykKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5jb21taXQoZGV0YWlscywgc2VsZi5leHRyYWN0RmlsZXNGcm9tQ29tbWl0KGRldGFpbHMpLCBzZWxmLmJyYW5jaCwgc2VsZi5kZXBvdFBhdGhzKQorICAgICAgICAgICAgc2VsZi5jb21taXQoZGV0YWlscywgc2VsZi5leHRyYWN0RmlsZXNGcm9tQ29tbWl0KGRldGFpbHMpLCBzZWxmLmJyYW5jaCkKICAgICAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAgICAgICAgICBwcmludCAiSU8gZXJyb3Igd2l0aCBnaXQgZmFzdC1pbXBvcnQuIElzIHlvdXIgZ2l0IHZlcnNpb24gcmVjZW50IGVub3VnaD8iCiAgICAgICAgICAgICBwcmludCBzZWxmLmdpdEVycm9yLnJlYWQoKQpAQCAtMjQ4Miw0MSArMjg0NSwzOCBAQAogICAgIGRlZiBydW4oc2VsZiwgYXJncyk6CiAgICAgICAgIHNlbGYuZGVwb3RQYXRocyA9IFtdCiAgICAgICAgIHNlbGYuY2hhbmdlUmFuZ2UgPSAiIgotICAgICAgICBzZWxmLmluaXRpYWxQYXJlbnQgPSAiIgogICAgICAgICBzZWxmLnByZXZpb3VzRGVwb3RQYXRocyA9IFtdCisgICAgICAgIHNlbGYuaGFzT3JpZ2luID0gRmFsc2UKIAogICAgICAgICAjIG1hcCBmcm9tIGJyYW5jaCBkZXBvdCBwYXRoIHRvIHBhcmVudCBicmFuY2gKICAgICAgICAgc2VsZi5rbm93bkJyYW5jaGVzID0ge30KICAgICAgICAgc2VsZi5pbml0aWFsUGFyZW50cyA9IHt9Ci0gICAgICAgIHNlbGYuaGFzT3JpZ2luID0gb3JpZ2luUDRCcmFuY2hlc0V4aXN0KCkKLSAgICAgICAgaWYgbm90IHNlbGYuc3luY1dpdGhPcmlnaW46Ci0gICAgICAgICAgICBzZWxmLmhhc09yaWdpbiA9IEZhbHNlCiAKICAgICAgICAgaWYgc2VsZi5pbXBvcnRJbnRvUmVtb3RlczoKICAgICAgICAgICAgIHNlbGYucmVmUHJlZml4ID0gInJlZnMvcmVtb3Rlcy9wNC8iCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnJlZlByZWZpeCA9ICJyZWZzL2hlYWRzL3A0LyIKIAotICAgICAgICBpZiBzZWxmLnN5bmNXaXRoT3JpZ2luIGFuZCBzZWxmLmhhc09yaWdpbjoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNpbGVudDoKLSAgICAgICAgICAgICAgICBwcmludCAiU3luY2luZyB3aXRoIG9yaWdpbiBmaXJzdCBieSBjYWxsaW5nIGdpdCBmZXRjaCBvcmlnaW4iCi0gICAgICAgICAgICBzeXN0ZW0oImdpdCBmZXRjaCBvcmlnaW4iKQorICAgICAgICBpZiBzZWxmLnN5bmNXaXRoT3JpZ2luOgorICAgICAgICAgICAgc2VsZi5oYXNPcmlnaW4gPSBvcmlnaW5QNEJyYW5jaGVzRXhpc3QoKQorICAgICAgICAgICAgaWYgc2VsZi5oYXNPcmlnaW46CisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuc2lsZW50OgorICAgICAgICAgICAgICAgICAgICBwcmludCAnU3luY2luZyB3aXRoIG9yaWdpbiBmaXJzdCwgdXNpbmcgImdpdCBmZXRjaCBvcmlnaW4iJworICAgICAgICAgICAgICAgIHN5c3RlbSgiZ2l0IGZldGNoIG9yaWdpbiIpCiAKKyAgICAgICAgYnJhbmNoX2FyZ19naXZlbiA9IGJvb2woc2VsZi5icmFuY2gpCiAgICAgICAgIGlmIGxlbihzZWxmLmJyYW5jaCkgPT0gMDoKICAgICAgICAgICAgIHNlbGYuYnJhbmNoID0gc2VsZi5yZWZQcmVmaXggKyAibWFzdGVyIgogICAgICAgICAgICAgaWYgZ2l0QnJhbmNoRXhpc3RzKCJyZWZzL2hlYWRzL3A0IikgYW5kIHNlbGYuaW1wb3J0SW50b1JlbW90ZXM6CiAgICAgICAgICAgICAgICAgc3lzdGVtKCJnaXQgdXBkYXRlLXJlZiAlcyByZWZzL2hlYWRzL3A0IiAlIHNlbGYuYnJhbmNoKQotICAgICAgICAgICAgICAgIHN5c3RlbSgiZ2l0IGJyYW5jaCAtRCBwNCIpOwotICAgICAgICAgICAgIyBjcmVhdGUgaXQgL2FmdGVyLyBpbXBvcnRpbmcsIHdoZW4gbWFzdGVyIGV4aXN0cwotICAgICAgICAgICAgaWYgbm90IGdpdEJyYW5jaEV4aXN0cyhzZWxmLnJlZlByZWZpeCArICJIRUFEIikgYW5kIHNlbGYuaW1wb3J0SW50b1JlbW90ZXMgYW5kIGdpdEJyYW5jaEV4aXN0cyhzZWxmLmJyYW5jaCk6Ci0gICAgICAgICAgICAgICAgc3lzdGVtKCJnaXQgc3ltYm9saWMtcmVmICVzSEVBRCAlcyIgJSAoc2VsZi5yZWZQcmVmaXgsIHNlbGYuYnJhbmNoKSkKKyAgICAgICAgICAgICAgICBzeXN0ZW0oImdpdCBicmFuY2ggLUQgcDQiKQogCiAgICAgICAgICMgYWNjZXB0IGVpdGhlciB0aGUgY29tbWFuZC1saW5lIG9wdGlvbiwgb3IgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUKICAgICAgICAgaWYgc2VsZi51c2VDbGllbnRTcGVjOgogICAgICAgICAgICAgIyB3aWxsIHVzZSB0aGlzIGFmdGVyIGNsb25lIHRvIHNldCB0aGUgdmFyaWFibGUKICAgICAgICAgICAgIHNlbGYudXNlQ2xpZW50U3BlY19mcm9tX29wdGlvbnMgPSBUcnVlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBnaXRDb25maWcoImdpdC1wNC51c2VjbGllbnRzcGVjIiwgIi0tYm9vbCIpID09ICJ0cnVlIjoKKyAgICAgICAgICAgIGlmIGdpdENvbmZpZ0Jvb2woImdpdC1wNC51c2VjbGllbnRzcGVjIik6CiAgICAgICAgICAgICAgICAgc2VsZi51c2VDbGllbnRTcGVjID0gVHJ1ZQogICAgICAgICBpZiBzZWxmLnVzZUNsaWVudFNwZWM6CiAgICAgICAgICAgICBzZWxmLmNsaWVudFNwZWNEaXJzID0gZ2V0Q2xpZW50U3BlYygpCkBAIC0yNTI2LDEyICsyODg2LDI1IEBACiAgICAgICAgIGlmIGFyZ3MgPT0gW106CiAgICAgICAgICAgICBpZiBzZWxmLmhhc09yaWdpbjoKICAgICAgICAgICAgICAgICBjcmVhdGVPclVwZGF0ZUJyYW5jaGVzRnJvbU9yaWdpbihzZWxmLnJlZlByZWZpeCwgc2VsZi5zaWxlbnQpCi0gICAgICAgICAgICBzZWxmLmxpc3RFeGlzdGluZ1A0R2l0QnJhbmNoZXMoKQorCisgICAgICAgICAgICAjIGJyYW5jaGVzIGhvbGRzIG1hcHBpbmcgZnJvbSBicmFuY2ggbmFtZSB0byBzaGExCisgICAgICAgICAgICBicmFuY2hlcyA9IHA0QnJhbmNoZXNJbkdpdChzZWxmLmltcG9ydEludG9SZW1vdGVzKQorCisgICAgICAgICAgICAjIHJlc3RyaWN0IHRvIGp1c3QgdGhpcyBvbmUsIGRpc2FibGluZyBkZXRlY3QtYnJhbmNoZXMKKyAgICAgICAgICAgIGlmIGJyYW5jaF9hcmdfZ2l2ZW46CisgICAgICAgICAgICAgICAgc2hvcnQgPSBzZWxmLmJyYW5jaC5zcGxpdCgiLyIpWy0xXQorICAgICAgICAgICAgICAgIGlmIHNob3J0IGluIGJyYW5jaGVzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnA0QnJhbmNoZXNJbkdpdCA9IFsgc2hvcnQgXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnA0QnJhbmNoZXNJbkdpdCA9IGJyYW5jaGVzLmtleXMoKQogCiAgICAgICAgICAgICBpZiBsZW4oc2VsZi5wNEJyYW5jaGVzSW5HaXQpID4gMToKICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5zaWxlbnQ6CiAgICAgICAgICAgICAgICAgICAgIHByaW50ICJJbXBvcnRpbmcgZnJvbS9pbnRvIG11bHRpcGxlIGJyYW5jaGVzIgogICAgICAgICAgICAgICAgIHNlbGYuZGV0ZWN0QnJhbmNoZXMgPSBUcnVlCisgICAgICAgICAgICAgICAgZm9yIGJyYW5jaCBpbiBicmFuY2hlcy5rZXlzKCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5pdGlhbFBhcmVudHNbc2VsZi5yZWZQcmVmaXggKyBicmFuY2hdID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoZXNbYnJhbmNoXQogCiAgICAgICAgICAgICBpZiBzZWxmLnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgcHJpbnQgImJyYW5jaGVzOiAlcyIgJSBzZWxmLnA0QnJhbmNoZXNJbkdpdApAQCAtMjU2OCwxMyArMjk0MSwyMSBAQAogICAgICAgICAgICAgaWYgcDRDaGFuZ2UgPiAwOgogICAgICAgICAgICAgICAgIHNlbGYuZGVwb3RQYXRocyA9IHNvcnRlZChzZWxmLnByZXZpb3VzRGVwb3RQYXRocykKICAgICAgICAgICAgICAgICBzZWxmLmNoYW5nZVJhbmdlID0gIkAlcywjaGVhZCIgJSBwNENoYW5nZQotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmRldGVjdEJyYW5jaGVzOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmluaXRpYWxQYXJlbnQgPSBwYXJzZVJldmlzaW9uKHNlbGYuYnJhbmNoKQogICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNpbGVudCBhbmQgbm90IHNlbGYuZGV0ZWN0QnJhbmNoZXM6CiAgICAgICAgICAgICAgICAgICAgIHByaW50ICJQZXJmb3JtaW5nIGluY3JlbWVudGFsIGltcG9ydCBpbnRvICVzIGdpdCBicmFuY2giICUgc2VsZi5icmFuY2gKIAorICAgICAgICAjIGFjY2VwdCBtdWx0aXBsZSByZWYgbmFtZSBhYmJyZXZpYXRpb25zOgorICAgICAgICAjICAgIHJlZnMvZm9vL2Jhci9icmFuY2ggLT4gdXNlIGl0IGV4YWN0bHkKKyAgICAgICAgIyAgICBwNC9icmFuY2ggLT4gcHJlcGVuZCByZWZzL3JlbW90ZXMvIG9yIHJlZnMvaGVhZHMvCisgICAgICAgICMgICAgYnJhbmNoIC0+IHByZXBlbmQgcmVmcy9yZW1vdGVzL3A0LyBvciByZWZzL2hlYWRzL3A0LwogICAgICAgICBpZiBub3Qgc2VsZi5icmFuY2guc3RhcnRzd2l0aCgicmVmcy8iKToKLSAgICAgICAgICAgIHNlbGYuYnJhbmNoID0gInJlZnMvaGVhZHMvIiArIHNlbGYuYnJhbmNoCisgICAgICAgICAgICBpZiBzZWxmLmltcG9ydEludG9SZW1vdGVzOgorICAgICAgICAgICAgICAgIHByZXBlbmQgPSAicmVmcy9yZW1vdGVzLyIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJlcGVuZCA9ICJyZWZzL2hlYWRzLyIKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmJyYW5jaC5zdGFydHN3aXRoKCJwNC8iKToKKyAgICAgICAgICAgICAgICBwcmVwZW5kICs9ICJwNC8iCisgICAgICAgICAgICBzZWxmLmJyYW5jaCA9IHByZXBlbmQgKyBzZWxmLmJyYW5jaAogCiAgICAgICAgIGlmIGxlbihhcmdzKSA9PSAwIGFuZCBzZWxmLmRlcG90UGF0aHM6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5zaWxlbnQ6CkBAIC0yNjMxLDYgKzMwMTIsOSBAQAogCiAgICAgICAgIHNlbGYuZGVwb3RQYXRocyA9IG5ld1BhdGhzCiAKKyAgICAgICAgIyAtLWRldGVjdC1icmFuY2hlcyBtYXkgY2hhbmdlIHRoaXMgZm9yIGVhY2ggYnJhbmNoCisgICAgICAgIHNlbGYuYnJhbmNoUHJlZml4ZXMgPSBzZWxmLmRlcG90UGF0aHMKKwogICAgICAgICBzZWxmLmxvYWRVc2VyTWFwRnJvbUNhY2hlKCkKICAgICAgICAgc2VsZi5sYWJlbHMgPSB7fQogICAgICAgICBpZiBzZWxmLmRldGVjdExhYmVsczoKQEAgLTI2NTYsMTIgKzMwNDAsMTMgQEAKIAogICAgICAgICBzZWxmLnR6ID0gIiUrMDNkJTAyZCIgJSAoLSB0aW1lLnRpbWV6b25lIC8gMzYwMCwgKCgtIHRpbWUudGltZXpvbmUgJSAzNjAwKSAvIDYwKSkKIAotICAgICAgICBpbXBvcnRQcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbImdpdCIsICJmYXN0LWltcG9ydCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpOwotICAgICAgICBzZWxmLmdpdE91dHB1dCA9IGltcG9ydFByb2Nlc3Muc3Rkb3V0Ci0gICAgICAgIHNlbGYuZ2l0U3RyZWFtID0gaW1wb3J0UHJvY2Vzcy5zdGRpbgotICAgICAgICBzZWxmLmdpdEVycm9yID0gaW1wb3J0UHJvY2Vzcy5zdGRlcnIKKyAgICAgICAgc2VsZi5pbXBvcnRQcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbImdpdCIsICJmYXN0LWltcG9ydCJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpOworICAgICAgICBzZWxmLmdpdE91dHB1dCA9IHNlbGYuaW1wb3J0UHJvY2Vzcy5zdGRvdXQKKyAgICAgICAgc2VsZi5naXRTdHJlYW0gPSBzZWxmLmltcG9ydFByb2Nlc3Muc3RkaW4KKyAgICAgICAgc2VsZi5naXRFcnJvciA9IHNlbGYuaW1wb3J0UHJvY2Vzcy5zdGRlcnIKIAogICAgICAgICBpZiByZXZpc2lvbjoKICAgICAgICAgICAgIHNlbGYuaW1wb3J0SGVhZFJldmlzaW9uKHJldmlzaW9uKQpAQCAtMjY4MSw4ICszMDY2LDIxIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgY2F0Y2ggImdpdCBwNCBzeW5jIiB3aXRoIG5vIG5ldyBicmFuY2hlcywgaW4gYSByZXBvIHRoYXQKICAgICAgICAgICAgICAgICAjIGRvZXMgbm90IGhhdmUgYW55IGV4aXN0aW5nIHA0IGJyYW5jaGVzCi0gICAgICAgICAgICAgICAgaWYgbGVuKGFyZ3MpID09IDAgYW5kIG5vdCBzZWxmLnA0QnJhbmNoZXNJbkdpdDoKLSAgICAgICAgICAgICAgICAgICAgZGllKCJObyByZW1vdGUgcDQgYnJhbmNoZXMuICBQZXJoYXBzIHlvdSBuZXZlciBkaWQgXCJnaXQgcDQgY2xvbmVcIiBpbiBoZXJlLiIpOworICAgICAgICAgICAgICAgIGlmIGxlbihhcmdzKSA9PSAwOgorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5wNEJyYW5jaGVzSW5HaXQ6CisgICAgICAgICAgICAgICAgICAgICAgICBkaWUoIk5vIHJlbW90ZSBwNCBicmFuY2hlcy4gIFBlcmhhcHMgeW91IG5ldmVyIGRpZCBcImdpdCBwNCBjbG9uZVwiIGluIGhlcmUuIikKKworICAgICAgICAgICAgICAgICAgICAjIFRoZSBkZWZhdWx0IGJyYW5jaCBpcyBtYXN0ZXIsIHVubGVzcyAtLWJyYW5jaCBpcyB1c2VkIHRvCisgICAgICAgICAgICAgICAgICAgICMgc3BlY2lmeSBzb21ldGhpbmcgZWxzZS4gIE1ha2Ugc3VyZSBpdCBleGlzdHMsIG9yIGNvbXBsYWluCisgICAgICAgICAgICAgICAgICAgICMgbmljZWx5IGFib3V0IGhvdyB0byB1c2UgLS1icmFuY2guCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmRldGVjdEJyYW5jaGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJyYW5jaF9leGlzdHMoc2VsZi5icmFuY2gpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJyYW5jaF9hcmdfZ2l2ZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZSgiRXJyb3I6IGJyYW5jaCAlcyBkb2VzIG5vdCBleGlzdC4iICUgc2VsZi5icmFuY2gpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGllKCJFcnJvcjogbm8gYnJhbmNoICVzOyBwZXJoYXBzIHNwZWNpZnkgb25lIHdpdGggLS1icmFuY2guIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJyYW5jaCkKKwogICAgICAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zZToKICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIkdldHRpbmcgcDQgY2hhbmdlcyBmb3IgJXMuLi4lcyIgJSAoJywgJy5qb2luKHNlbGYuZGVwb3RQYXRocyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2hhbmdlUmFuZ2UpCkBAIC0yNzAwLDYgKzMwOTgsMTQgQEAKIAogICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlZEJyYW5jaGVzID0gc2V0KCkKIAorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmRldGVjdEJyYW5jaGVzOgorICAgICAgICAgICAgICAgICAgICBpZiBhcmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBzdGFydCBhIG5ldyBicmFuY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5pdGlhbFBhcmVudCA9ICIiCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGJ1aWxkIG9uIGEgcHJldmlvdXMgcmV2aXNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5pdGlhbFBhcmVudCA9IHBhcnNlUmV2aXNpb24oc2VsZi5icmFuY2gpCisKICAgICAgICAgICAgICAgICBzZWxmLmltcG9ydENoYW5nZXMoY2hhbmdlcykKIAogICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNpbGVudDoKQEAgLTI3MTAsNyArMzExNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiJXMgIiAlIGIpCiAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCiAKLSAgICAgICAgaWYgZ2l0Q29uZmlnKCJnaXQtcDQuaW1wb3J0TGFiZWxzIiwgIi0tYm9vbCIpID09ICJ0cnVlIjoKKyAgICAgICAgaWYgZ2l0Q29uZmlnQm9vbCgiZ2l0LXA0LmltcG9ydExhYmVscyIpOgogICAgICAgICAgICAgc2VsZi5pbXBvcnRMYWJlbHMgPSBUcnVlCiAKICAgICAgICAgaWYgc2VsZi5pbXBvcnRMYWJlbHM6CkBAIC0yNzIxLDcgKzMxMjcsNyBAQAogICAgICAgICAgICAgc2VsZi5pbXBvcnRQNExhYmVscyhzZWxmLmdpdFN0cmVhbSwgbWlzc2luZ1A0TGFiZWxzKQogCiAgICAgICAgIHNlbGYuZ2l0U3RyZWFtLmNsb3NlKCkKLSAgICAgICAgaWYgaW1wb3J0UHJvY2Vzcy53YWl0KCkgIT0gMDoKKyAgICAgICAgaWYgc2VsZi5pbXBvcnRQcm9jZXNzLndhaXQoKSAhPSAwOgogICAgICAgICAgICAgZGllKCJmYXN0LWltcG9ydCBmYWlsZWQ6ICVzIiAlIHNlbGYuZ2l0RXJyb3IucmVhZCgpKQogICAgICAgICBzZWxmLmdpdE91dHB1dC5jbG9zZSgpCiAgICAgICAgIHNlbGYuZ2l0RXJyb3IuY2xvc2UoKQpAQCAtMjczMiw2ICszMTM4LDEzIEBACiAgICAgICAgICAgICAgICAgcmVhZF9waXBlKCJnaXQgdXBkYXRlLXJlZiAtZCAlcyIgJSBicmFuY2gpCiAgICAgICAgICAgICBvcy5ybWRpcihvcy5wYXRoLmpvaW4ob3MuZW52aXJvbi5nZXQoIkdJVF9ESVIiLCAiLmdpdCIpLCBzZWxmLnRlbXBCcmFuY2hMb2NhdGlvbikpCiAKKyAgICAgICAgIyBDcmVhdGUgYSBzeW1ib2xpYyByZWYgcDQvSEVBRCBwb2ludGluZyB0byBwNC88YnJhbmNoPiB0byBhbGxvdworICAgICAgICAjIGEgY29udmVuaWVudCBzaG9ydGN1dCByZWZuYW1lICJwNCIuCisgICAgICAgIGlmIHNlbGYuaW1wb3J0SW50b1JlbW90ZXM6CisgICAgICAgICAgICBoZWFkX3JlZiA9IHNlbGYucmVmUHJlZml4ICsgIkhFQUQiCisgICAgICAgICAgICBpZiBub3QgZ2l0QnJhbmNoRXhpc3RzKGhlYWRfcmVmKSBhbmQgZ2l0QnJhbmNoRXhpc3RzKHNlbGYuYnJhbmNoKToKKyAgICAgICAgICAgICAgICBzeXN0ZW0oWyJnaXQiLCAic3ltYm9saWMtcmVmIiwgaGVhZF9yZWYsIHNlbGYuYnJhbmNoXSkKKwogICAgICAgICByZXR1cm4gVHJ1ZQogCiBjbGFzcyBQNFJlYmFzZShDb21tYW5kKToKQEAgLTI4MjEsNiArMzIzNCw3IEBACiAgICAgICAgIHNlbGYuY2xvbmVFeGNsdWRlID0gWyIvIitwIGZvciBwIGluIHNlbGYuY2xvbmVFeGNsdWRlXQogICAgICAgICBmb3IgcCBpbiBkZXBvdFBhdGhzOgogICAgICAgICAgICAgaWYgbm90IHAuc3RhcnRzd2l0aCgiLy8iKToKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdEZXBvdCBwYXRocyBtdXN0IHN0YXJ0IHdpdGggIi8vIjogJXNcbicgJSBwKQogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgIGlmIG5vdCBzZWxmLmNsb25lRGVzdGluYXRpb246CkBAIC0yODM1LDIxICszMjQ5LDIxIEBACiAgICAgICAgIGluaXRfY21kID0gWyAiZ2l0IiwgImluaXQiIF0KICAgICAgICAgaWYgc2VsZi5jbG9uZUJhcmU6CiAgICAgICAgICAgICBpbml0X2NtZC5hcHBlbmQoIi0tYmFyZSIpCi0gICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChpbml0X2NtZCkKKyAgICAgICAgcmV0Y29kZSA9IHN1YnByb2Nlc3MuY2FsbChpbml0X2NtZCkKKyAgICAgICAgaWYgcmV0Y29kZToKKyAgICAgICAgICAgIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvcihyZXRjb2RlLCBpbml0X2NtZCkKIAogICAgICAgICBpZiBub3QgUDRTeW5jLnJ1bihzZWxmLCBkZXBvdFBhdGhzKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBzZWxmLmJyYW5jaCAhPSAibWFzdGVyIjoKLSAgICAgICAgICAgIGlmIHNlbGYuaW1wb3J0SW50b1JlbW90ZXM6Ci0gICAgICAgICAgICAgICAgbWFzdGVyYnJhbmNoID0gInJlZnMvcmVtb3Rlcy9wNC9tYXN0ZXIiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1hc3RlcmJyYW5jaCA9ICJyZWZzL2hlYWRzL3A0L21hc3RlciIKLSAgICAgICAgICAgIGlmIGdpdEJyYW5jaEV4aXN0cyhtYXN0ZXJicmFuY2gpOgotICAgICAgICAgICAgICAgIHN5c3RlbSgiZ2l0IGJyYW5jaCBtYXN0ZXIgJXMiICUgbWFzdGVyYnJhbmNoKQotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsb25lQmFyZToKLSAgICAgICAgICAgICAgICAgICAgc3lzdGVtKCJnaXQgY2hlY2tvdXQgLWYiKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcmludCAiQ291bGQgbm90IGRldGVjdCBtYWluIGJyYW5jaC4gTm8gY2hlY2tvdXQvbWFzdGVyIGJyYW5jaCBjcmVhdGVkLiIKKworICAgICAgICAjIGNyZWF0ZSBhIG1hc3RlciBicmFuY2ggYW5kIGNoZWNrIG91dCBhIHdvcmsgdHJlZQorICAgICAgICBpZiBnaXRCcmFuY2hFeGlzdHMoc2VsZi5icmFuY2gpOgorICAgICAgICAgICAgc3lzdGVtKFsgImdpdCIsICJicmFuY2giLCAibWFzdGVyIiwgc2VsZi5icmFuY2ggXSkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsb25lQmFyZToKKyAgICAgICAgICAgICAgICBzeXN0ZW0oWyAiZ2l0IiwgImNoZWNrb3V0IiwgIi1mIiBdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJpbnQgJ05vdCBjaGVja2luZyBvdXQgYW55IGJyYW5jaCwgdXNlICcgXAorICAgICAgICAgICAgICAgICAgJyJnaXQgY2hlY2tvdXQgLXEgLWIgbWFzdGVyIDxicmFuY2g+IicKIAogICAgICAgICAjIGF1dG8tc2V0IHRoaXMgdmFyaWFibGUgaWYgaW52b2tlZCB3aXRoIC0tdXNlLWNsaWVudC1zcGVjCiAgICAgICAgIGlmIHNlbGYudXNlQ2xpZW50U3BlY19mcm9tX29wdGlvbnM6CkBAIC0yOTIwLDcgKzMzMzQsNiBAQAogICAgICAgICBwcmludFVzYWdlKGNvbW1hbmRzLmtleXMoKSkKICAgICAgICAgc3lzLmV4aXQoMikKIAotICAgIGNtZCA9ICIiCiAgICAgY21kTmFtZSA9IHN5cy5hcmd2WzFdCiAgICAgdHJ5OgogICAgICAgICBrbGFzcyA9IGNvbW1hbmRzW2NtZE5hbWVdCkBAIC0yOTM2LDcgKzMzNDksNyBAQAogCiAgICAgYXJncyA9IHN5cy5hcmd2WzI6XQogCi0gICAgb3B0aW9ucy5hcHBlbmQob3B0cGFyc2UubWFrZV9vcHRpb24oIi0tdmVyYm9zZSIsIGRlc3Q9InZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiKSkKKyAgICBvcHRpb25zLmFwcGVuZChvcHRwYXJzZS5tYWtlX29wdGlvbigiLS12ZXJib3NlIiwgIi12IiwgZGVzdD0idmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpKQogICAgIGlmIGNtZC5uZWVkc0dpdDoKICAgICAgICAgb3B0aW9ucy5hcHBlbmQob3B0cGFyc2UubWFrZV9vcHRpb24oIi0tZ2l0LWRpciIsIGRlc3Q9ImdpdGRpciIpKQogCmRpZmYgLS1naXQgYS9naXQtcGFyc2UtcmVtb3RlLnNoIGIvZ2l0LXBhcnNlLXJlbW90ZS5zaAppbmRleCA0ODRiMmU2Li4wZTg3ZTA5IDEwMDY0NAotLS0gYS9naXQtcGFyc2UtcmVtb3RlLnNoCisrKyBiL2dpdC1wYXJzZS1yZW1vdGUuc2gKQEAgLTgwLDcgKzgwLDcgQEAKIAogSWYgeW91IHdpc2ggdG8gc2V0IHRyYWNraW5nIGluZm9ybWF0aW9uIGZvciB0aGlzIGJyYW5jaCB5b3UgY2FuIGRvIHNvIHdpdGg6CiAKLSAgICBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtICR7YnJhbmNoX25hbWUjcmVmcy9oZWFkcy99ICRyZW1vdGUvPGJyYW5jaD4KKyAgICBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvPSRyZW1vdGUvPGJyYW5jaD4gJHticmFuY2hfbmFtZSNyZWZzL2hlYWRzL30KICIKIAlmaQogCWV4aXQgMQpkaWZmIC0tZ2l0IGEvZ2l0LXB1bGwuc2ggYi9naXQtcHVsbC5zaAppbmRleCAyYTEwMDQ3Li42ODI4ZTJjIDEwMDc1NQotLS0gYS9naXQtcHVsbC5zaAorKysgYi9naXQtcHVsbC5zaApAQCAtMzksNyArMzksNyBAQAogdGVzdCAtZiAiJEdJVF9ESVIvTUVSR0VfSEVBRCIgJiYgZGllX21lcmdlCiAKIHN0cmF0ZWd5X2FyZ3M9IGRpZmZzdGF0PSBub19jb21taXQ9IHNxdWFzaD0gbm9fZmY9IGZmX29ubHk9Ci1sb2dfYXJnPSB2ZXJib3NpdHk9IHByb2dyZXNzPSByZWN1cnNlX3N1Ym1vZHVsZXM9Citsb2dfYXJnPSB2ZXJib3NpdHk9IHByb2dyZXNzPSByZWN1cnNlX3N1Ym1vZHVsZXM9IHZlcmlmeV9zaWduYXR1cmVzPQogbWVyZ2VfYXJncz0gZWRpdD0KIGN1cnJfYnJhbmNoPSQoZ2l0IHN5bWJvbGljLXJlZiAtcSBIRUFEKQogY3Vycl9icmFuY2hfc2hvcnQ9IiR7Y3Vycl9icmFuY2gjcmVmcy9oZWFkcy99IgpAQCAtMTI1LDYgKzEyNSwxMiBAQAogCS0tbm8tcmVjdXJzZS1zdWJtb2R1bGVzKQogCQlyZWN1cnNlX3N1Ym1vZHVsZXM9LS1uby1yZWN1cnNlLXN1Ym1vZHVsZXMKIAkJOzsKKwktLXZlcmlmeS1zaWduYXR1cmVzKQorCQl2ZXJpZnlfc2lnbmF0dXJlcz0tLXZlcmlmeS1zaWduYXR1cmVzCisJCTs7CisJLS1uby12ZXJpZnktc2lnbmF0dXJlcykKKwkJdmVyaWZ5X3NpZ25hdHVyZXM9LS1uby12ZXJpZnktc2lnbmF0dXJlcworCQk7OwogCS0tZHwtLWRyfC0tZHJ5fC0tZHJ5LXwtLWRyeS1yfC0tZHJ5LXJ1fC0tZHJ5LXJ1bikKIAkJZHJ5X3J1bj0tLWRyeS1ydW4KIAkJOzsKQEAgLTIwMCw2ICsyMDYsNyBAQAogCQlyZXF1aXJlX2NsZWFuX3dvcmtfdHJlZSAicHVsbCB3aXRoIHJlYmFzZSIgIlBsZWFzZSBjb21taXQgb3Igc3Rhc2ggdGhlbS4iCiAJZmkKIAlvbGRyZW1vdGVyZWY9ICYmCisJdGVzdCAtbiAiJGN1cnJfYnJhbmNoIiAmJgogCS4gZ2l0LXBhcnNlLXJlbW90ZSAmJgogCXJlbW90ZXJlZj0iJChnZXRfcmVtb3RlX21lcmdlX2JyYW5jaCAiJEAiIDI+L2Rldi9udWxsKSIgJiYKIAlvbGRyZW1vdGVyZWY9IiQoZ2l0IHJldi1wYXJzZSAtcSAtLXZlcmlmeSAiJHJlbW90ZXJlZiIpIiAmJgpAQCAtMjU5LDEwICsyNjYsMTcgQEAKIAk7OwogZXNhYwogCisjIFB1bGxpbmcgaW50byB1bmJvcm4gYnJhbmNoOiBhIHNob3J0aGFuZCBmb3IgYnJhbmNoaW5nIG9mZgorIyBGRVRDSF9IRUFELCBmb3IgbGF6eSB0eXBlcnMuCiBpZiB0ZXN0IC16ICIkb3JpZ19oZWFkIgogdGhlbgotCWdpdCB1cGRhdGUtcmVmIC1tICJpbml0aWFsIHB1bGwiIEhFQUQgJG1lcmdlX2hlYWQgIiRjdXJyX2hlYWQiICYmCi0JZ2l0IHJlYWQtdHJlZSAtbSAtdSBIRUFEIHx8IGV4aXQgMQorCSMgVHdvLXdheSBtZXJnZTogd2UgY2xhaW0gdGhlIGluZGV4IGlzIGJhc2VkIG9uIGFuIGVtcHR5IHRyZWUsCisJIyBhbmQgdHJ5IHRvIGZhc3QtZm9yd2FyZCB0byBIRUFELiAgVGhpcyBlbnN1cmVzIHdlIHdpbGwgbm90CisJIyBsb3NlIGluZGV4L3dvcmt0cmVlIGNoYW5nZXMgdGhhdCB0aGUgdXNlciBhbHJlYWR5IG1hZGUgb24KKwkjIHRoZSB1bmJvcm4gYnJhbmNoLgorCWVtcHR5X3RyZWU9NGI4MjVkYzY0MmNiNmViOWEwNjBlNTRiZjhkNjkyODhmYmVlNDkwNAorCWdpdCByZWFkLXRyZWUgLW0gLXUgJGVtcHR5X3RyZWUgJG1lcmdlX2hlYWQgJiYKKwlnaXQgdXBkYXRlLXJlZiAtbSAiaW5pdGlhbCBwdWxsIiBIRUFEICRtZXJnZV9oZWFkICIkY3Vycl9oZWFkIgogCWV4aXQKIGZpCiAKQEAgLTI3OCwxMSArMjkyLDExIEBACiBtZXJnZV9uYW1lPSQoZ2l0IGZtdC1tZXJnZS1tc2cgJGxvZ19hcmcgPCIkR0lUX0RJUi9GRVRDSF9IRUFEIikgfHwgZXhpdAogY2FzZSAiJHJlYmFzZSIgaW4KIHRydWUpCi0JZXZhbD0iZ2l0LXJlYmFzZSAkZGlmZnN0YXQgJHN0cmF0ZWd5X2FyZ3MgJG1lcmdlX2FyZ3MiCisJZXZhbD0iZ2l0LXJlYmFzZSAkZGlmZnN0YXQgJHN0cmF0ZWd5X2FyZ3MgJG1lcmdlX2FyZ3MgJHZlcmJvc2l0eSIKIAlldmFsPSIkZXZhbCAtLW9udG8gJG1lcmdlX2hlYWQgJHtvbGRyZW1vdGVyZWY6LSRtZXJnZV9oZWFkfSIKIAk7OwogKikKLQlldmFsPSJnaXQtbWVyZ2UgJGRpZmZzdGF0ICRub19jb21taXQgJGVkaXQgJHNxdWFzaCAkbm9fZmYgJGZmX29ubHkiCisJZXZhbD0iZ2l0LW1lcmdlICRkaWZmc3RhdCAkbm9fY29tbWl0ICR2ZXJpZnlfc2lnbmF0dXJlcyAkZWRpdCAkc3F1YXNoICRub19mZiAkZmZfb25seSIKIAlldmFsPSIkZXZhbCAgJGxvZ19hcmcgJHN0cmF0ZWd5X2FyZ3MgJG1lcmdlX2FyZ3MgJHZlcmJvc2l0eSAkcHJvZ3Jlc3MiCiAJZXZhbD0iJGV2YWwgXCJcJG1lcmdlX25hbWVcIiBIRUFEICRtZXJnZV9oZWFkIgogCTs7CmRpZmYgLS1naXQgYS9naXQtcXVpbHRpbXBvcnQuc2ggYi9naXQtcXVpbHRpbXBvcnQuc2gKaW5kZXggOWE2YmEyYi4uOGUxNzUyNSAxMDA3NTUKLS0tIGEvZ2l0LXF1aWx0aW1wb3J0LnNoCisrKyBiL2dpdC1xdWlsdGltcG9ydC5zaApAQCAtNTksNyArNTksNyBAQAogdG1wX2luZm89IiR0bXBfZGlyL2luZm8iCiAKIAotIyBGaW5kIHRoZSBpbnRpYWwgY29tbWl0CisjIEZpbmQgdGhlIGluaXRpYWwgY29tbWl0CiBjb21taXQ9JChnaXQgcmV2LXBhcnNlIEhFQUQpCiAKIG1rZGlyICR0bXBfZGlyIHx8IGV4aXQgMgpkaWZmIC0tZ2l0IGEvZ2l0LXJlYmFzZS0tYW0uc2ggYi9naXQtcmViYXNlLS1hbS5zaAppbmRleCAwNGQ4OTQxLi5mODQ4NTRmIDEwMDY0NAotLS0gYS9naXQtcmViYXNlLS1hbS5zaAorKysgYi9naXQtcmViYXNlLS1hbS5zaApAQCAtMyw4ICszLDYgQEAKICMgQ29weXJpZ2h0IChjKSAyMDEwIEp1bmlvIEMgSGFtYW5vLgogIwogCi0uIGdpdC1zaC1zZXR1cAotCiBjYXNlICIkYWN0aW9uIiBpbgogY29udGludWUpCiAJZ2l0IGFtIC0tcmVzb2x2ZWQgLS1yZXNvbHZlbXNnPSIkcmVzb2x2ZW1zZyIgJiYKQEAgLTIwLDYgKzE4LDcgQEAKIAogdGVzdCAtbiAiJHJlYmFzZV9yb290IiAmJiByb290X2ZsYWc9LS1yb290CiAKK3JldD0wCiBpZiB0ZXN0IC1uICIka2VlcF9lbXB0eSIKIHRoZW4KIAkjIHdlIGhhdmUgdG8gZG8gdGhpcyB0aGUgaGFyZCB3YXkuICBnaXQgZm9ybWF0LXBhdGNoIGNvbXBsZXRlbHkgc3F1YXNoZXMKQEAgLTI3LDEzICsyNiw0OSBAQAogCSMgaXRzZWxmIHdlbGwgdG8gcmVjb3JkaW5nIGVtcHR5IHBhdGNoZXMuICBmb3J0dW5hdGVseSwgY2hlcnJ5LXBpY2sKIAkjIG1ha2VzIHRoaXMgZWFzeQogCWdpdCBjaGVycnktcGljayAtLWFsbG93LWVtcHR5ICIkcmV2aXNpb25zIgorCXJldD0kPwogZWxzZQotCWdpdCBmb3JtYXQtcGF0Y2ggLWsgLS1zdGRvdXQgLS1mdWxsLWluZGV4IC0taWdub3JlLWlmLWluLXVwc3RyZWFtIFwKLQkJLS1zcmMtcHJlZml4PWEvIC0tZHN0LXByZWZpeD1iLyBcCi0JCS0tbm8tcmVuYW1lcyAkcm9vdF9mbGFnICIkcmV2aXNpb25zIiB8Ci0JZ2l0IGFtICRnaXRfYW1fb3B0IC0tcmViYXNpbmcgLS1yZXNvbHZlbXNnPSIkcmVzb2x2ZW1zZyIKLWZpICYmIG1vdmVfdG9fb3JpZ2luYWxfYnJhbmNoCisJcm0gLWYgIiRHSVRfRElSL3JlYmFzZWQtcGF0Y2hlcyIKIAotcmV0PSQ/Ci10ZXN0IDAgIT0gJHJldCAtYSAtZCAiJHN0YXRlX2RpciIgJiYgd3JpdGVfYmFzaWNfc3RhdGUKLWV4aXQgJHJldAorCWdpdCBmb3JtYXQtcGF0Y2ggLWsgLS1zdGRvdXQgLS1mdWxsLWluZGV4IC0taWdub3JlLWlmLWluLXVwc3RyZWFtIFwKKwkJLS1zcmMtcHJlZml4PWEvIC0tZHN0LXByZWZpeD1iLyAtLW5vLXJlbmFtZXMgLS1uby1jb3Zlci1sZXR0ZXIgXAorCQkkcm9vdF9mbGFnICIkcmV2aXNpb25zIiA+IiRHSVRfRElSL3JlYmFzZWQtcGF0Y2hlcyIKKwlyZXQ9JD8KKworCWlmIHRlc3QgMCAhPSAkcmV0CisJdGhlbgorCQlybSAtZiAiJEdJVF9ESVIvcmViYXNlZC1wYXRjaGVzIgorCQljYXNlICIkaGVhZF9uYW1lIiBpbgorCQlyZWZzL2hlYWRzLyopCisJCQlnaXQgY2hlY2tvdXQgLXEgIiRoZWFkX25hbWUiCisJCQk7OworCQkqKQorCQkJZ2l0IGNoZWNrb3V0IC1xICIkb3JpZ19oZWFkIgorCQkJOzsKKwkJZXNhYworCisJCWNhdCA+JjIgPDwtRU9GCisKKwkJZ2l0IGVuY291bnRlcmVkIGFuIGVycm9yIHdoaWxlIHByZXBhcmluZyB0aGUgcGF0Y2hlcyB0byByZXBsYXkKKwkJdGhlc2UgcmV2aXNpb25zOgorCisJCSAgICAkcmV2aXNpb25zCisKKwkJQXMgYSByZXN1bHQsIGdpdCBjYW5ub3QgcmViYXNlIHRoZW0uCisJCUVPRgorCQlleGl0ICQ/CisJZmkKKworCWdpdCBhbSAkZ2l0X2FtX29wdCAtLXJlYmFzaW5nIC0tcmVzb2x2ZW1zZz0iJHJlc29sdmVtc2ciIDwiJEdJVF9ESVIvcmViYXNlZC1wYXRjaGVzIgorCXJldD0kPworCisJcm0gLWYgIiRHSVRfRElSL3JlYmFzZWQtcGF0Y2hlcyIKK2ZpCisKK2lmIHRlc3QgMCAhPSAkcmV0Cit0aGVuCisJdGVzdCAtZCAiJHN0YXRlX2RpciIgJiYgd3JpdGVfYmFzaWNfc3RhdGUKKwlleGl0ICRyZXQKK2ZpCisKK21vdmVfdG9fb3JpZ2luYWxfYnJhbmNoCmRpZmYgLS1naXQgYS9naXQtcmViYXNlLS1pbnRlcmFjdGl2ZS5zaCBiL2dpdC1yZWJhc2UtLWludGVyYWN0aXZlLnNoCmluZGV4IDBjMTliN2MuLjU4MjJiMmMgMTAwNjQ0Ci0tLSBhL2dpdC1yZWJhc2UtLWludGVyYWN0aXZlLnNoCisrKyBiL2dpdC1yZWJhc2UtLWludGVyYWN0aXZlLnNoCkBAIC05LDkgKzksNyBAQAogIwogIyBUaGUgb3JpZ2luYWwgaWRlYSBjb21lcyBmcm9tIEVyaWMgVy4gQmllZGVybWFuLCBpbgogIyBodHRwOi8vYXJ0aWNsZS5nbWFuZS5vcmcvZ21hbmUuY29tcC52ZXJzaW9uLWNvbnRyb2wuZ2l0LzIyNDA3Ci0KLS4gZ2l0LXNoLXNldHVwCi0KKyMKICMgVGhlIGZpbGUgY29udGFpbmluZyByZWJhc2UgY29tbWFuZHMsIGNvbW1lbnRzLCBhbmQgZW1wdHkgbGluZXMuCiAjIFRoaXMgZmlsZSBpcyBjcmVhdGVkIGJ5ICJnaXQgcmViYXNlIC1pIiB0aGVuIGVkaXRlZCBieSB0aGUgdXNlci4gIEFzCiAjIHRoZSBsaW5lcyBhcmUgcHJvY2Vzc2VkLCB0aGV5IGFyZSByZW1vdmVkIGZyb20gdGhlIGZyb250IG9mIHRoaXMKQEAgLTU5LDYgKzU3LDkgQEAKIAogZHJvcHBlZD0iJHN0YXRlX2RpciIvZHJvcHBlZAogCitlbmQ9IiRzdGF0ZV9kaXIiL2VuZAorbXNnbnVtPSIkc3RhdGVfZGlyIi9tc2dudW0KKwogIyBBIHNjcmlwdCB0byBzZXQgdGhlIEdJVF9BVVRIT1JfTkFNRSwgR0lUX0FVVEhPUl9FTUFJTCwgYW5kCiAjIEdJVF9BVVRIT1JfREFURSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIGNvbW1pdCB0aGF0IGlzIGN1cnJlbnRseQogIyBiZWluZyByZWJhc2VkLgpAQCAtODIsNiArODMsOSBAQAogR0lUX0NIRVJSWV9QSUNLX0hFTFA9IiRyZXNvbHZlbXNnIgogZXhwb3J0IEdJVF9DSEVSUllfUElDS19IRUxQCiAKK2NvbW1lbnRfY2hhcj0kKGdpdCBjb25maWcgLS1nZXQgY29yZS5jb21tZW50Y2hhciAyPi9kZXYvbnVsbCB8IGN1dCAtYzEpCis6ICR7Y29tbWVudF9jaGFyOj0jfQorCiB3YXJuICgpIHsKIAlwcmludGYgJyVzXG4nICIkKiIgPiYyCiB9CkBAIC0xMDcsOCArMTExLDEwIEBACiAJc2VkIC1lIDFxIDwgIiR0b2RvIiA+PiAiJGRvbmUiCiAJc2VkIC1lIDFkIDwgIiR0b2RvIiA+PiAiJHRvZG8iLm5ldwogCW12IC1mICIkdG9kbyIubmV3ICIkdG9kbyIKLQluZXdfY291bnQ9JChzYW5lX2dyZXAgLWMgJ15bXiNdJyA8ICIkZG9uZSIpCi0JdG90YWw9JCgoJG5ld19jb3VudCskKHNhbmVfZ3JlcCAtYyAnXlteI10nIDwgIiR0b2RvIikpKQorCW5ld19jb3VudD0kKGdpdCBzdHJpcHNwYWNlIC0tc3RyaXAtY29tbWVudHMgPCIkZG9uZSIgfCB3YyAtbCkKKwllY2hvICRuZXdfY291bnQgPiIkbXNnbnVtIgorCXRvdGFsPSQoKCRuZXdfY291bnQgKyAkKGdpdCBzdHJpcHNwYWNlIC0tc3RyaXAtY29tbWVudHMgPCIkdG9kbyIgfCB3YyAtbCkpKQorCWVjaG8gJHRvdGFsID4iJGVuZCIKIAlpZiB0ZXN0ICIkbGFzdF9jb3VudCIgIT0gIiRuZXdfY291bnQiCiAJdGhlbgogCQlsYXN0X2NvdW50PSRuZXdfY291bnQKQEAgLTExNyw2ICsxMjMsMjMgQEAKIAlmaQogfQogCithcHBlbmRfdG9kb19oZWxwICgpIHsKKwlnaXQgc3RyaXBzcGFjZSAtLWNvbW1lbnQtbGluZXMgPj4iJHRvZG8iIDw8XEVPRgorCitDb21tYW5kczoKKyBwLCBwaWNrID0gdXNlIGNvbW1pdAorIHIsIHJld29yZCA9IHVzZSBjb21taXQsIGJ1dCBlZGl0IHRoZSBjb21taXQgbWVzc2FnZQorIGUsIGVkaXQgPSB1c2UgY29tbWl0LCBidXQgc3RvcCBmb3IgYW1lbmRpbmcKKyBzLCBzcXVhc2ggPSB1c2UgY29tbWl0LCBidXQgbWVsZCBpbnRvIHByZXZpb3VzIGNvbW1pdAorIGYsIGZpeHVwID0gbGlrZSAic3F1YXNoIiwgYnV0IGRpc2NhcmQgdGhpcyBjb21taXQncyBsb2cgbWVzc2FnZQorIHgsIGV4ZWMgPSBydW4gY29tbWFuZCAodGhlIHJlc3Qgb2YgdGhlIGxpbmUpIHVzaW5nIHNoZWxsCisKK1RoZXNlIGxpbmVzIGNhbiBiZSByZS1vcmRlcmVkOyB0aGV5IGFyZSBleGVjdXRlZCBmcm9tIHRvcCB0byBib3R0b20uCisKK0lmIHlvdSByZW1vdmUgYSBsaW5lIGhlcmUgVEhBVCBDT01NSVQgV0lMTCBCRSBMT1NULgorRU9GCit9CisKIG1ha2VfcGF0Y2ggKCkgewogCXNoYTFfYW5kX3BhcmVudHM9IiQoZ2l0IHJldi1saXN0IC0tcGFyZW50cyAtMSAiJDEiKSIKIAljYXNlICIkc2hhMV9hbmRfcGFyZW50cyIgaW4KQEAgLTE2NCw3ICsxODcsNyBAQAogfQogCiBoYXNfYWN0aW9uICgpIHsKLQlzYW5lX2dyZXAgJ15bXiNdJyAiJDEiID4vZGV2L251bGwKKwl0ZXN0IC1uICIkKGdpdCBzdHJpcHNwYWNlIC0tc3RyaXAtY29tbWVudHMgPCIkMSIpIgogfQogCiBpc19lbXB0eV9jb21taXQoKSB7CkBAIC0xNzUsNiArMTk4LDExIEBACiAJdGVzdCAiJHRyZWUiID0gIiRwdHJlZSIKIH0KIAoraXNfbWVyZ2VfY29tbWl0KCkKK3sKKwlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IC0tcXVpZXQgIiQxIl4yID4vZGV2L251bGwgMj4mMQorfQorCiAjIFJ1biBjb21tYW5kIHdpdGggR0lUX0FVVEhPUl9OQU1FLCBHSVRfQVVUSE9SX0VNQUlMLCBhbmQKICMgR0lUX0FVVEhPUl9EQVRFIGV4cG9ydGVkIGZyb20gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCiBkb193aXRoX2F1dGhvciAoKSB7CkBAIC0zNDMsMTAgKzM3MSwxMCBAQAogCWlmIHRlc3QgLWYgIiRzcXVhc2hfbXNnIjsgdGhlbgogCQltdiAiJHNxdWFzaF9tc2ciICIkc3F1YXNoX21zZyIuYmFrIHx8IGV4aXQKIAkJY291bnQ9JCgoJChzZWQgLW4gXAotCQkJLWUgIjFzL14jIFRoaXMgaXMgYSBjb21iaW5hdGlvbiBvZiBcKC4qXCkgY29tbWl0c1wuL1wxL3AiIFwKKwkJCS1lICIxcy9eLiBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgXCguKlwpIGNvbW1pdHNcLi9cMS9wIiBcCiAJCQktZSAicSIgPCAiJHNxdWFzaF9tc2ciLmJhaykrMSkpCiAJCXsKLQkJCWVjaG8gIiMgVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mICRjb3VudCBjb21taXRzLiIKKwkJCXByaW50ZiAnJXNcbicgIiRjb21tZW50X2NoYXIgVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mICRjb3VudCBjb21taXRzLiIKIAkJCXNlZCAtZSAxZCAtZSAnMiwvXi4vewogCQkJCS9eJC9kCiAJCQl9JyA8IiRzcXVhc2hfbXNnIi5iYWsKQEAgLTM1NSw4ICszODMsOCBAQAogCQljb21taXRfbWVzc2FnZSBIRUFEID4gIiRmaXh1cF9tc2ciIHx8IGRpZSAiQ2Fubm90IHdyaXRlICRmaXh1cF9tc2ciCiAJCWNvdW50PTIKIAkJewotCQkJZWNobyAiIyBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgMiBjb21taXRzLiIKLQkJCWVjaG8gIiMgVGhlIGZpcnN0IGNvbW1pdCdzIG1lc3NhZ2UgaXM6IgorCQkJcHJpbnRmICclc1xuJyAiJGNvbW1lbnRfY2hhciBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgMiBjb21taXRzLiIKKwkJCXByaW50ZiAnJXNcbicgIiRjb21tZW50X2NoYXIgVGhlIGZpcnN0IGNvbW1pdCdzIG1lc3NhZ2UgaXM6IgogCQkJZWNobwogCQkJY2F0ICIkZml4dXBfbXNnIgogCQl9ID4iJHNxdWFzaF9tc2ciCkBAIC0zNjUsMjEgKzM5MywyMiBAQAogCXNxdWFzaCkKIAkJcm0gLWYgIiRmaXh1cF9tc2ciCiAJCWVjaG8KLQkJZWNobyAiIyBUaGlzIGlzIHRoZSAkKG50aF9zdHJpbmcgJGNvdW50KSBjb21taXQgbWVzc2FnZToiCisJCXByaW50ZiAnJXNcbicgIiRjb21tZW50X2NoYXIgVGhpcyBpcyB0aGUgJChudGhfc3RyaW5nICRjb3VudCkgY29tbWl0IG1lc3NhZ2U6IgogCQllY2hvCiAJCWNvbW1pdF9tZXNzYWdlICQyCiAJCTs7CiAJZml4dXApCiAJCWVjaG8KLQkJZWNobyAiIyBUaGUgJChudGhfc3RyaW5nICRjb3VudCkgY29tbWl0IG1lc3NhZ2Ugd2lsbCBiZSBza2lwcGVkOiIKKwkJcHJpbnRmICclc1xuJyAiJGNvbW1lbnRfY2hhciBUaGUgJChudGhfc3RyaW5nICRjb3VudCkgY29tbWl0IG1lc3NhZ2Ugd2lsbCBiZSBza2lwcGVkOiIKIAkJZWNobwotCQljb21taXRfbWVzc2FnZSAkMiB8IHNlZCAtZSAncy9eLyMJLycKKwkJIyBDaGFuZ2UgdGhlIHNwYWNlIGFmdGVyIHRoZSBjb21tZW50IGNoYXJhY3RlciB0byBUQUI6CisJCWNvbW1pdF9tZXNzYWdlICQyIHwgZ2l0IHN0cmlwc3BhY2UgLS1jb21tZW50LWxpbmVzIHwgc2VkIC1lICdzLyAvCS8nCiAJCTs7CiAJZXNhYyA+PiIkc3F1YXNoX21zZyIKIH0KIAogcGVla19uZXh0X2NvbW1hbmQgKCkgewotCXNlZCAtbiAtZSAiL14jL2QiIC1lICcvXiQvZCcgLWUgInMvIC4qLy9wIiAtZSAicSIgPCAiJHRvZG8iCisJZ2l0IHN0cmlwc3BhY2UgLS1zdHJpcC1jb21tZW50cyA8IiR0b2RvIiB8IHNlZCAtbiAtZSAncy8gLiovL3AnIC1lIHEKIH0KIAogIyBBIHNxdWFzaC9maXh1cCBoYXMgZmFpbGVkLiAgUHJlcGFyZSB0aGUgbG9uZyB2ZXJzaW9uIG9mIHRoZSBzcXVhc2gKQEAgLTQxNywyNyArNDQ2LDQ4IEBACiAJZXNhYwogfQogCitkb19waWNrICgpIHsKKwlpZiB0ZXN0ICIkKGdpdCByZXYtcGFyc2UgSEVBRCkiID0gIiRzcXVhc2hfb250byIKKwl0aGVuCisJCSMgU2V0IHRoZSBjb3JyZWN0IGNvbW1pdCBtZXNzYWdlIGFuZCBhdXRob3IgaW5mbyBvbiB0aGUKKwkJIyBzZW50aW5lbCByb290IGJlZm9yZSBjaGVycnktcGlja2luZyB0aGUgb3JpZ2luYWwgY2hhbmdlcworCQkjIHdpdGhvdXQgY29tbWl0dGluZyAoLW4pLiAgRmluYWxseSwgdXBkYXRlIHRoZSBzZW50aW5lbCBhZ2FpbgorCQkjIHRvIGluY2x1ZGUgdGhlc2UgY2hhbmdlcy4gIElmIHRoZSBjaGVycnktcGljayByZXN1bHRzIGluIGEKKwkJIyBjb25mbGljdCwgdGhpcyBtZWFucyBvdXIgYmVoYXZpb3VyIGlzIHNpbWlsYXIgdG8gYSBzdGFuZGFyZAorCQkjIGZhaWxlZCBjaGVycnktcGljayBkdXJpbmcgcmViYXNlLCB3aXRoIGEgZGlydHkgaW5kZXggdG8KKwkJIyByZXNvbHZlIGJlZm9yZSBtYW51YWxseSBydW5uaW5nIGdpdCBjb21taXQgLS1hbWVuZCB0aGVuIGdpdAorCQkjIHJlYmFzZSAtLWNvbnRpbnVlLgorCQlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLS1hbGxvdy1lbXB0eS1tZXNzYWdlIC0tYW1lbmQgXAorCQkJICAgLS1uby1wb3N0LXJld3JpdGUgLW4gLXEgLUMgJDEgJiYKKwkJCXBpY2tfb25lIC1uICQxICYmCisJCQlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLS1hbGxvdy1lbXB0eS1tZXNzYWdlIFwKKwkJCQkgICAtLWFtZW5kIC0tbm8tcG9zdC1yZXdyaXRlIC1uIC1xIC1DICQxIHx8CisJCQlkaWVfd2l0aF9wYXRjaCAkMSAiQ291bGQgbm90IGFwcGx5ICQxLi4uICQyIgorCWVsc2UKKwkJcGlja19vbmUgJDEgfHwKKwkJCWRpZV93aXRoX3BhdGNoICQxICJDb3VsZCBub3QgYXBwbHkgJDEuLi4gJDIiCisJZmkKK30KKwogZG9fbmV4dCAoKSB7CiAJcm0gLWYgIiRtc2ciICIkYXV0aG9yX3NjcmlwdCIgIiRhbWVuZCIgfHwgZXhpdAogCXJlYWQgLXIgY29tbWFuZCBzaGExIHJlc3QgPCAiJHRvZG8iCiAJY2FzZSAiJGNvbW1hbmQiIGluCi0JJyMnKnwnJ3xub29wKQorCSIkY29tbWVudF9jaGFyIip8Jyd8bm9vcCkKIAkJbWFya19hY3Rpb25fZG9uZQogCQk7OwogCXBpY2t8cCkKIAkJY29tbWVudF9mb3JfcmVmbG9nIHBpY2sKIAogCQltYXJrX2FjdGlvbl9kb25lCi0JCXBpY2tfb25lICRzaGExIHx8Ci0JCQlkaWVfd2l0aF9wYXRjaCAkc2hhMSAiQ291bGQgbm90IGFwcGx5ICRzaGExLi4uICRyZXN0IgorCQlkb19waWNrICRzaGExICIkcmVzdCIKIAkJcmVjb3JkX2luX3Jld3JpdHRlbiAkc2hhMQogCQk7OwogCXJld29yZHxyKQogCQljb21tZW50X2Zvcl9yZWZsb2cgcmV3b3JkCiAKIAkJbWFya19hY3Rpb25fZG9uZQotCQlwaWNrX29uZSAkc2hhMSB8fAotCQkJZGllX3dpdGhfcGF0Y2ggJHNoYTEgIkNvdWxkIG5vdCBhcHBseSAkc2hhMS4uLiAkcmVzdCIKKwkJZG9fcGljayAkc2hhMSAiJHJlc3QiCiAJCWdpdCBjb21taXQgLS1hbWVuZCAtLW5vLXBvc3QtcmV3cml0ZSB8fCB7CiAJCQl3YXJuICJDb3VsZCBub3QgYW1lbmQgY29tbWl0IGFmdGVyIHN1Y2Nlc3NmdWxseSBwaWNraW5nICRzaGExLi4uICRyZXN0IgogCQkJd2FybiAiVGhpcyBpcyBtb3N0IGxpa2VseSBkdWUgdG8gYW4gZW1wdHkgY29tbWl0IG1lc3NhZ2UsIG9yIHRoZSBwcmUtY29tbWl0IGhvb2siCkBAIC00NTEsOCArNTAxLDcgQEAKIAkJY29tbWVudF9mb3JfcmVmbG9nIGVkaXQKIAogCQltYXJrX2FjdGlvbl9kb25lCi0JCXBpY2tfb25lICRzaGExIHx8Ci0JCQlkaWVfd2l0aF9wYXRjaCAkc2hhMSAiQ291bGQgbm90IGFwcGx5ICRzaGExLi4uICRyZXN0IgorCQlkb19waWNrICRzaGExICIkcmVzdCIKIAkJd2FybiAiU3RvcHBlZCBhdCAkc2hhMS4uLiAkcmVzdCIKIAkJZXhpdF93aXRoX3BhdGNoICRzaGExIDAKIAkJOzsKQEAgLTQ3NSwyNSArNTI0LDI4IEBACiAJCWF1dGhvcl9zY3JpcHRfY29udGVudD0kKGdldF9hdXRob3JfaWRlbnRfZnJvbV9jb21taXQgSEVBRCkKIAkJZWNobyAiJGF1dGhvcl9zY3JpcHRfY29udGVudCIgPiAiJGF1dGhvcl9zY3JpcHQiCiAJCWV2YWwgIiRhdXRob3Jfc2NyaXB0X2NvbnRlbnQiCi0JCW91dHB1dCBnaXQgcmVzZXQgLS1zb2Z0IEhFQUReCi0JCXBpY2tfb25lIC1uICRzaGExIHx8IGRpZV9mYWlsZWRfc3F1YXNoICRzaGExICIkcmVzdCIKKwkJaWYgISBwaWNrX29uZSAtbiAkc2hhMQorCQl0aGVuCisJCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQgPiIkYW1lbmQiCisJCQlkaWVfZmFpbGVkX3NxdWFzaCAkc2hhMSAiJHJlc3QiCisJCWZpCiAJCWNhc2UgIiQocGVla19uZXh0X2NvbW1hbmQpIiBpbgogCQlzcXVhc2h8c3xmaXh1cHxmKQogCQkJIyBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBjb21taXQ7IGl0cyBtZXNzYWdlIHdpbGwgb25seSBiZQogCQkJIyB1c2VkIGluIGNhc2Ugb2YgdHJvdWJsZS4gIFNvIHVzZSB0aGUgbG9uZyB2ZXJzaW9uOgotCQkJZG9fd2l0aF9hdXRob3Igb3V0cHV0IGdpdCBjb21taXQgLS1uby12ZXJpZnkgLUYgIiRzcXVhc2hfbXNnIiB8fAorCQkJZG9fd2l0aF9hdXRob3Igb3V0cHV0IGdpdCBjb21taXQgLS1hbWVuZCAtLW5vLXZlcmlmeSAtRiAiJHNxdWFzaF9tc2ciIHx8CiAJCQkJZGllX2ZhaWxlZF9zcXVhc2ggJHNoYTEgIiRyZXN0IgogCQkJOzsKIAkJKikKIAkJCSMgVGhpcyBpcyB0aGUgZmluYWwgY29tbWFuZCBvZiB0aGlzIHNxdWFzaC9maXh1cCBncm91cAogCQkJaWYgdGVzdCAtZiAiJGZpeHVwX21zZyIKIAkJCXRoZW4KLQkJCQlkb193aXRoX2F1dGhvciBnaXQgY29tbWl0IC0tbm8tdmVyaWZ5IC1GICIkZml4dXBfbXNnIiB8fAorCQkJCWRvX3dpdGhfYXV0aG9yIGdpdCBjb21taXQgLS1hbWVuZCAtLW5vLXZlcmlmeSAtRiAiJGZpeHVwX21zZyIgfHwKIAkJCQkJZGllX2ZhaWxlZF9zcXVhc2ggJHNoYTEgIiRyZXN0IgogCQkJZWxzZQogCQkJCWNwICIkc3F1YXNoX21zZyIgIiRHSVRfRElSIi9TUVVBU0hfTVNHIHx8IGV4aXQKIAkJCQlybSAtZiAiJEdJVF9ESVIiL01FUkdFX01TRwotCQkJCWRvX3dpdGhfYXV0aG9yIGdpdCBjb21taXQgLS1uby12ZXJpZnkgLWUgfHwKKwkJCQlkb193aXRoX2F1dGhvciBnaXQgY29tbWl0IC0tYW1lbmQgLS1uby12ZXJpZnkgLUYgIiRHSVRfRElSIi9TUVVBU0hfTVNHIC1lIHx8CiAJCQkJCWRpZV9mYWlsZWRfc3F1YXNoICRzaGExICIkcmVzdCIKIAkJCWZpCiAJCQlybSAtZiAiJHNxdWFzaF9tc2ciICIkZml4dXBfbXNnIgpAQCAtNTIzLDYgKzU3NSwxMCBAQAogCQkJd2FybgogCQkJd2FybiAiCWdpdCByZWJhc2UgLS1jb250aW51ZSIKIAkJCXdhcm4KKwkJCWlmIHRlc3QgJHN0YXR1cyAtZXEgMTI3CQkjIGNvbW1hbmQgbm90IGZvdW5kCisJCQl0aGVuCisJCQkJc3RhdHVzPTEKKwkJCWZpCiAJCQlleGl0ICIkc3RhdHVzIgogCQllbGlmIHRlc3QgIiRkaXJ0eSIgPSB0CiAJCXRoZW4KQEAgLTUzNywyMiArNTkzLDIyIEBACiAJCTs7CiAJKikKIAkJd2FybiAiVW5rbm93biBjb21tYW5kOiAkY29tbWFuZCAkc2hhMSAkcmVzdCIKKwkJZml4dG9kbz0iUGxlYXNlIGZpeCB0aGlzIHVzaW5nICdnaXQgcmViYXNlIC0tZWRpdC10b2RvJy4iCiAJCWlmIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgLXEgIiRzaGExIiA+L2Rldi9udWxsCiAJCXRoZW4KLQkJCWRpZV93aXRoX3BhdGNoICRzaGExICJQbGVhc2UgZml4IHRoaXMgaW4gdGhlIGZpbGUgJHRvZG8uIgorCQkJZGllX3dpdGhfcGF0Y2ggJHNoYTEgIiRmaXh0b2RvIgogCQllbHNlCi0JCQlkaWUgIlBsZWFzZSBmaXggdGhpcyBpbiB0aGUgZmlsZSAkdG9kby4iCisJCQlkaWUgIiRmaXh0b2RvIgogCQlmaQogCQk7OwogCWVzYWMKIAl0ZXN0IC1zICIkdG9kbyIgJiYgcmV0dXJuCiAKIAljb21tZW50X2Zvcl9yZWZsb2cgZmluaXNoICYmCi0Jc2hvcnRvbnRvPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICRvbnRvKSAmJgogCW5ld2hlYWQ9JChnaXQgcmV2LXBhcnNlIEhFQUQpICYmCiAJY2FzZSAkaGVhZF9uYW1lIGluCiAJcmVmcy8qKQotCQltZXNzYWdlPSIkR0lUX1JFRkxPR19BQ1RJT046ICRoZWFkX25hbWUgb250byAkc2hvcnRvbnRvIiAmJgorCQltZXNzYWdlPSIkR0lUX1JFRkxPR19BQ1RJT046ICRoZWFkX25hbWUgb250byAkb250byIgJiYKIAkJZ2l0IHVwZGF0ZS1yZWYgLW0gIiRtZXNzYWdlIiAkaGVhZF9uYW1lICRuZXdoZWFkICRvcmlnX2hlYWQgJiYKIAkJZ2l0IHN5bWJvbGljLXJlZiBcCiAJCSAgLW0gIiRHSVRfUkVGTE9HX0FDVElPTjogcmV0dXJuaW5nIHRvICRoZWFkX25hbWUiIFwKQEAgLTY4NCw2ICs3NDAsMjcgQEAKIAlybSAtZiAiJDEuc3EiICIkMS5yZWFycmFuZ2VkIgogfQogCisjIEFkZCBjb21tYW5kcyBhZnRlciBhIHBpY2sgb3IgYWZ0ZXIgYSBzcXVhc2gvZml4dXAgc2VyaWUKKyMgaW4gdGhlIHRvZG8gbGlzdC4KK2FkZF9leGVjX2NvbW1hbmRzICgpIHsKKwl7CisJCWZpcnN0PXQKKwkJd2hpbGUgcmVhZCAtciBpbnNuIHJlc3QKKwkJZG8KKwkJCWNhc2UgJGluc24gaW4KKwkJCXBpY2spCisJCQkJdGVzdCAtbiAiJGZpcnN0IiB8fAorCQkJCXByaW50ZiAiJXMiICIkY21kIgorCQkJCTs7CisJCQllc2FjCisJCQlwcmludGYgIiVzICVzXG4iICIkaW5zbiIgIiRyZXN0IgorCQkJZmlyc3Q9CisJCWRvbmUKKwkJcHJpbnRmICIlcyIgIiRjbWQiCisJfSA8IiQxIiA+IiQxLm5ldyIgJiYKKwltdiAiJDEubmV3IiAiJDEiCit9CisKIGNhc2UgIiRhY3Rpb24iIGluCiBjb250aW51ZSkKIAkjIGRvIHdlIGhhdmUgYW55dGhpbmcgdG8gY29tbWl0PwpAQCAtNzA5LDcgKzc4Niw2IEBACiAJCWZpCiAJCS4gIiRhdXRob3Jfc2NyaXB0IiB8fAogCQkJZGllICJFcnJvciB0cnlpbmcgdG8gZmluZCB0aGUgYXV0aG9yIGlkZW50aXR5IHRvIGFtZW5kIGNvbW1pdCIKLQkJY3VycmVudF9oZWFkPQogCQlpZiB0ZXN0IC1mICIkYW1lbmQiCiAJCXRoZW4KIAkJCWN1cnJlbnRfaGVhZD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkKQEAgLTcxNywxMyArNzkzLDEyIEBACiAJCQlkaWUgIlwKIFlvdSBoYXZlIHVuY29tbWl0dGVkIGNoYW5nZXMgaW4geW91ciB3b3JraW5nIHRyZWUuIFBsZWFzZSwgY29tbWl0IHRoZW0KIGZpcnN0IGFuZCB0aGVuIHJ1biAnZ2l0IHJlYmFzZSAtLWNvbnRpbnVlJyBhZ2Fpbi4iCi0JCQlnaXQgcmVzZXQgLS1zb2Z0IEhFQUReIHx8Ci0JCQlkaWUgIkNhbm5vdCByZXdpbmQgdGhlIEhFQUQiCisJCQlkb193aXRoX2F1dGhvciBnaXQgY29tbWl0IC0tYW1lbmQgLS1uby12ZXJpZnkgLUYgIiRtc2ciIC1lIHx8CisJCQkJZGllICJDb3VsZCBub3QgY29tbWl0IHN0YWdlZCBjaGFuZ2VzLiIKKwkJZWxzZQorCQkJZG9fd2l0aF9hdXRob3IgZ2l0IGNvbW1pdCAtLW5vLXZlcmlmeSAtRiAiJG1zZyIgLWUgfHwKKwkJCQlkaWUgIkNvdWxkIG5vdCBjb21taXQgc3RhZ2VkIGNoYW5nZXMuIgogCQlmaQotCQlkb193aXRoX2F1dGhvciBnaXQgY29tbWl0IC0tbm8tdmVyaWZ5IC1GICIkbXNnIiAtZSB8fCB7Ci0JCQl0ZXN0IC1uICIkY3VycmVudF9oZWFkIiAmJiBnaXQgcmVzZXQgLS1zb2Z0ICRjdXJyZW50X2hlYWQKLQkJCWRpZSAiQ291bGQgbm90IGNvbW1pdCBzdGFnZWQgY2hhbmdlcy4iCi0JCX0KIAlmaQogCiAJcmVjb3JkX2luX3Jld3JpdHRlbiAiJChjYXQgIiRzdGF0ZV9kaXIiL3N0b3BwZWQtc2hhKSIKQEAgLTczNiw2ICs4MTEsMjMgQEAKIAogCWRvX3Jlc3QKIAk7OworZWRpdC10b2RvKQorCWdpdCBzdHJpcHNwYWNlIC0tc3RyaXAtY29tbWVudHMgPCIkdG9kbyIgPiIkdG9kbyIubmV3CisJbXYgLWYgIiR0b2RvIi5uZXcgIiR0b2RvIgorCWFwcGVuZF90b2RvX2hlbHAKKwlnaXQgc3RyaXBzcGFjZSAtLWNvbW1lbnQtbGluZXMgPj4iJHRvZG8iIDw8XEVPRgorCitZb3UgYXJlIGVkaXRpbmcgdGhlIHRvZG8gZmlsZSBvZiBhbiBvbmdvaW5nIGludGVyYWN0aXZlIHJlYmFzZS4KK1RvIGNvbnRpbnVlIHJlYmFzZSBhZnRlciBlZGl0aW5nLCBydW46CisgICAgZ2l0IHJlYmFzZSAtLWNvbnRpbnVlCisKK0VPRgorCisJZ2l0X3NlcXVlbmNlX2VkaXRvciAiJHRvZG8iIHx8CisJCWRpZSAiQ291bGQgbm90IGV4ZWN1dGUgZWRpdG9yIgorCisJZXhpdAorCTs7CiBlc2FjCiAKIGdpdCB2YXIgR0lUX0NPTU1JVFRFUl9JREVOVCA+L2Rldi9udWxsIHx8CkBAIC03OTYsOSArODg4LDkgQEAKIHdoaWxlIHJlYWQgLXIgc2hvcnRzaGExIHJlc3QKIGRvCiAKLQlpZiB0ZXN0IC16ICIka2VlcF9lbXB0eSIgJiYgaXNfZW1wdHlfY29tbWl0ICRzaG9ydHNoYTEKKwlpZiB0ZXN0IC16ICIka2VlcF9lbXB0eSIgJiYgaXNfZW1wdHlfY29tbWl0ICRzaG9ydHNoYTEgJiYgISBpc19tZXJnZV9jb21taXQgJHNob3J0c2hhMQogCXRoZW4KLQkJY29tbWVudF9vdXQ9IiMgIgorCQljb21tZW50X291dD0iJGNvbW1lbnRfY2hhciAiCiAJZWxzZQogCQljb21tZW50X291dD0KIAlmaQpAQCAtODU3LDI4ICs5NDksMjIgQEAKIAogdGVzdCAtcyAiJHRvZG8iIHx8IGVjaG8gbm9vcCA+PiAiJHRvZG8iCiB0ZXN0IC1uICIkYXV0b3NxdWFzaCIgJiYgcmVhcnJhbmdlX3NxdWFzaCAiJHRvZG8iCi1jYXQgPj4gIiR0b2RvIiA8PCBFT0YKK3Rlc3QgLW4gIiRjbWQiICYmIGFkZF9leGVjX2NvbW1hbmRzICIkdG9kbyIKIAotIyBSZWJhc2UgJHNob3J0cmV2aXNpb25zIG9udG8gJHNob3J0b250bwotIwotIyBDb21tYW5kczoKLSMgIHAsIHBpY2sgPSB1c2UgY29tbWl0Ci0jICByLCByZXdvcmQgPSB1c2UgY29tbWl0LCBidXQgZWRpdCB0aGUgY29tbWl0IG1lc3NhZ2UKLSMgIGUsIGVkaXQgPSB1c2UgY29tbWl0LCBidXQgc3RvcCBmb3IgYW1lbmRpbmcKLSMgIHMsIHNxdWFzaCA9IHVzZSBjb21taXQsIGJ1dCBtZWxkIGludG8gcHJldmlvdXMgY29tbWl0Ci0jICBmLCBmaXh1cCA9IGxpa2UgInNxdWFzaCIsIGJ1dCBkaXNjYXJkIHRoaXMgY29tbWl0J3MgbG9nIG1lc3NhZ2UKLSMgIHgsIGV4ZWMgPSBydW4gY29tbWFuZCAodGhlIHJlc3Qgb2YgdGhlIGxpbmUpIHVzaW5nIHNoZWxsCi0jCi0jIFRoZXNlIGxpbmVzIGNhbiBiZSByZS1vcmRlcmVkOyB0aGV5IGFyZSBleGVjdXRlZCBmcm9tIHRvcCB0byBib3R0b20uCi0jCi0jIElmIHlvdSByZW1vdmUgYSBsaW5lIGhlcmUgVEhBVCBDT01NSVQgV0lMTCBCRSBMT1NULgotIyBIb3dldmVyLCBpZiB5b3UgcmVtb3ZlIGV2ZXJ5dGhpbmcsIHRoZSByZWJhc2Ugd2lsbCBiZSBhYm9ydGVkLgotIworY2F0ID4+IiR0b2RvIiA8PEVPRgorCiskY29tbWVudF9jaGFyIFJlYmFzZSAkc2hvcnRyZXZpc2lvbnMgb250byAkc2hvcnRvbnRvCitFT0YKK2FwcGVuZF90b2RvX2hlbHAKK2dpdCBzdHJpcHNwYWNlIC0tY29tbWVudC1saW5lcyA+PiIkdG9kbyIgPDxcRU9GCisKK0hvd2V2ZXIsIGlmIHlvdSByZW1vdmUgZXZlcnl0aGluZywgdGhlIHJlYmFzZSB3aWxsIGJlIGFib3J0ZWQuCisKIEVPRgogCiBpZiB0ZXN0IC16ICIka2VlcF9lbXB0eSIKIHRoZW4KLQllY2hvICIjIE5vdGUgdGhhdCBlbXB0eSBjb21taXRzIGFyZSBjb21tZW50ZWQgb3V0IiA+PiIkdG9kbyIKKwlwcmludGYgJyVzXG4nICIkY29tbWVudF9jaGFyIE5vdGUgdGhhdCBlbXB0eSBjb21taXRzIGFyZSBjb21tZW50ZWQgb3V0IiA+PiIkdG9kbyIKIGZpCiAKIApkaWZmIC0tZ2l0IGEvZ2l0LXJlYmFzZS0tbWVyZ2Uuc2ggYi9naXQtcmViYXNlLS1tZXJnZS5zaAppbmRleCBkYzU5OTA3Li5iMTBmMmNmIDEwMDY0NAotLS0gYS9naXQtcmViYXNlLS1tZXJnZS5zaAorKysgYi9naXQtcmViYXNlLS1tZXJnZS5zaApAQCAtMyw4ICszLDYgQEAKICMgQ29weXJpZ2h0IChjKSAyMDEwIEp1bmlvIEMgSGFtYW5vLgogIwogCi0uIGdpdC1zaC1zZXR1cAotCiBwcmVjPTQKIAogcmVhZF9zdGF0ZSAoKSB7CmRpZmYgLS1naXQgYS9naXQtcmViYXNlLnNoIGIvZ2l0LXJlYmFzZS5zaAppbmRleCBlNjE2NzM3Li4yYzY5MmMzIDEwMDc1NQotLS0gYS9naXQtcmViYXNlLnNoCisrKyBiL2dpdC1yZWJhc2Uuc2gKQEAgLTMsMzYgKzMsMTIgQEAKICMgQ29weXJpZ2h0IChjKSAyMDA1IEp1bmlvIEMgSGFtYW5vLgogIwogCi1VU0FHRT0nWy0taW50ZXJhY3RpdmUgfCAtaV0gWy12XSBbLS1mb3JjZS1yZWJhc2UgfCAtZl0gWy0tbm8tZmZdIFstLW9udG8gPG5ld2Jhc2U+XSBbPHVwc3RyZWFtPnwtLXJvb3RdIFs8YnJhbmNoPl0gWy0tcXVpZXQgfCAtcV0nCi1MT05HX1VTQUdFPSdnaXQtcmViYXNlIHJlcGxhY2VzIDxicmFuY2g+IHdpdGggYSBuZXcgYnJhbmNoIG9mIHRoZQotc2FtZSBuYW1lLiAgV2hlbiB0aGUgLS1vbnRvIG9wdGlvbiBpcyBwcm92aWRlZCB0aGUgbmV3IGJyYW5jaCBzdGFydHMKLW91dCB3aXRoIGEgSEVBRCBlcXVhbCB0byA8bmV3YmFzZT4sIG90aGVyd2lzZSBpdCBpcyBlcXVhbCB0byA8dXBzdHJlYW0+Ci1JdCB0aGVuIGF0dGVtcHRzIHRvIGNyZWF0ZSBhIG5ldyBjb21taXQgZm9yIGVhY2ggY29tbWl0IGZyb20gdGhlIG9yaWdpbmFsCi08YnJhbmNoPiB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoZSA8dXBzdHJlYW0+IGJyYW5jaC4KLQotSXQgaXMgcG9zc2libGUgdGhhdCBhIG1lcmdlIGZhaWx1cmUgd2lsbCBwcmV2ZW50IHRoaXMgcHJvY2VzcyBmcm9tIGJlaW5nCi1jb21wbGV0ZWx5IGF1dG9tYXRpYy4gIFlvdSB3aWxsIGhhdmUgdG8gcmVzb2x2ZSBhbnkgc3VjaCBtZXJnZSBmYWlsdXJlCi1hbmQgcnVuIGdpdCByZWJhc2UgLS1jb250aW51ZS4gIEFub3RoZXIgb3B0aW9uIGlzIHRvIGJ5cGFzcyB0aGUgY29tbWl0Ci10aGF0IGNhdXNlZCB0aGUgbWVyZ2UgZmFpbHVyZSB3aXRoIGdpdCByZWJhc2UgLS1za2lwLiAgVG8gY2hlY2sgb3V0IHRoZQotb3JpZ2luYWwgPGJyYW5jaD4gYW5kIHJlbW92ZSB0aGUgLmdpdC9yZWJhc2UtYXBwbHkgd29ya2luZyBmaWxlcywgdXNlIHRoZQotY29tbWFuZCBnaXQgcmViYXNlIC0tYWJvcnQgaW5zdGVhZC4KLQotTm90ZSB0aGF0IGlmIDxicmFuY2g+IGlzIG5vdCBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZSwgdGhlCi1jdXJyZW50bHkgY2hlY2tlZCBvdXQgYnJhbmNoIGlzIHVzZWQuCi0KLUV4YW1wbGU6ICAgICAgIGdpdC1yZWJhc2UgbWFzdGVyfjEgdG9waWMKLQotCUEtLS1CLS0tQyB0b3BpYyAgICAgICAgICAgICAgICAgICBBJ1wnJy0tQidcJyctLUMnXCcnIHRvcGljCi0gICAgICAgLyAgICAgICAgICAgICAgICAgICAtLT4gICAgICAgICAgIC8KLSAgRC0tLUUtLS1GLS0tRyBtYXN0ZXIgICAgICAgICAgRC0tLUUtLS1GLS0tRyBtYXN0ZXIKLScKLQogU1VCRElSRUNUT1JZX09LPVllcwogT1BUSU9OU19LRUVQREFTSERBU0g9CiBPUFRJT05TX1NQRUM9IlwKLWdpdCByZWJhc2UgWy1pXSBbb3B0aW9uc10gWy0tb250byA8bmV3YmFzZT5dIFs8dXBzdHJlYW0+XSBbPGJyYW5jaD5dCi1naXQgcmViYXNlIFstaV0gW29wdGlvbnNdIC0tb250byA8bmV3YmFzZT4gLS1yb290IFs8YnJhbmNoPl0KLWdpdC1yZWJhc2UgWy1pXSAtLWNvbnRpbnVlIHwgLS1hYm9ydCB8IC0tc2tpcAorZ2l0IHJlYmFzZSBbLWldIFtvcHRpb25zXSBbLS1leGVjIDxjbWQ+XSBbLS1vbnRvIDxuZXdiYXNlPl0gWzx1cHN0cmVhbT5dIFs8YnJhbmNoPl0KK2dpdCByZWJhc2UgWy1pXSBbb3B0aW9uc10gWy0tZXhlYyA8Y21kPl0gWy0tb250byA8bmV3YmFzZT5dIC0tcm9vdCBbPGJyYW5jaD5dCitnaXQtcmViYXNlIC0tY29udGludWUgfCAtLWFib3J0IHwgLS1za2lwIHwgLS1lZGl0LXRvZG8KIC0tCiAgQXZhaWxhYmxlIG9wdGlvbnMgYXJlCiB2LHZlcmJvc2UhICAgICAgICAgZGlzcGxheSBhIGRpZmZzdGF0IG9mIHdoYXQgY2hhbmdlZCB1cHN0cmVhbQpAQCAtNDMsNiArMTksNyBAQAogbm8tZmYhICAgICAgICAgICAgIGNoZXJyeS1waWNrIGFsbCBjb21taXRzLCBldmVuIGlmIHVuY2hhbmdlZAogbSxtZXJnZSEgICAgICAgICAgIHVzZSBtZXJnaW5nIHN0cmF0ZWdpZXMgdG8gcmViYXNlCiBpLGludGVyYWN0aXZlISAgICAgbGV0IHRoZSB1c2VyIGVkaXQgdGhlIGxpc3Qgb2YgY29tbWl0cyB0byByZWJhc2UKK3gsZXhlYz0hICAgICAgICAgICBhZGQgZXhlYyBsaW5lcyBhZnRlciBlYWNoIGNvbW1pdCBvZiB0aGUgZWRpdGFibGUgbGlzdAogayxrZWVwLWVtcHR5CSAgIHByZXNlcnZlIGVtcHR5IGNvbW1pdHMgZHVyaW5nIHJlYmFzZQogZixmb3JjZS1yZWJhc2UhICAgIGZvcmNlIHJlYmFzZSBldmVuIGlmIGJyYW5jaCBpcyB1cCB0byBkYXRlCiBYLHN0cmF0ZWd5LW9wdGlvbj0hIHBhc3MgdGhlIGFyZ3VtZW50IHRocm91Z2ggdG8gdGhlIG1lcmdlIHN0cmF0ZWd5CkBAIC02MSw4ICszOCwxMCBAQAogY29udGludWUhICAgICAgICAgIGNvbnRpbnVlCiBhYm9ydCEgICAgICAgICAgICAgYWJvcnQgYW5kIGNoZWNrIG91dCB0aGUgb3JpZ2luYWwgYnJhbmNoCiBza2lwISAgICAgICAgICAgICAgc2tpcCBjdXJyZW50IHBhdGNoIGFuZCBjb250aW51ZQorZWRpdC10b2RvISAgICAgICAgIGVkaXQgdGhlIHRvZG8gbGlzdCBkdXJpbmcgYW4gaW50ZXJhY3RpdmUgcmViYXNlCiAiCiAuIGdpdC1zaC1zZXR1cAorLiBnaXQtc2gtaTE4bgogc2V0X3JlZmxvZ19hY3Rpb24gcmViYXNlCiByZXF1aXJlX3dvcmtfdHJlZV9leGlzdHMKIGNkX3RvX3RvcGxldmVsCkBAIC03MSwxMSArNTAsMTIgQEAKICcKIG9rX3RvX3NraXBfcHJlX3JlYmFzZT0KIHJlc29sdmVtc2c9IgotV2hlbiB5b3UgaGF2ZSByZXNvbHZlZCB0aGlzIHByb2JsZW0gcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIuCi1JZiB5b3Ugd291bGQgcHJlZmVyIHRvIHNraXAgdGhpcyBwYXRjaCwgaW5zdGVhZCBydW4gXCJnaXQgcmViYXNlIC0tc2tpcFwiLgotVG8gY2hlY2sgb3V0IHRoZSBvcmlnaW5hbCBicmFuY2ggYW5kIHN0b3AgcmViYXNpbmcgcnVuIFwiZ2l0IHJlYmFzZSAtLWFib3J0XCIuCiskKGdldHRleHQgJ1doZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtLCBydW4gImdpdCByZWJhc2UgLS1jb250aW51ZSIuCitJZiB5b3UgcHJlZmVyIHRvIHNraXAgdGhpcyBwYXRjaCwgcnVuICJnaXQgcmViYXNlIC0tc2tpcCIgaW5zdGVhZC4KK1RvIGNoZWNrIG91dCB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBzdG9wIHJlYmFzaW5nLCBydW4gImdpdCByZWJhc2UgLS1hYm9ydCIuJykKICIKIHVuc2V0IG9udG8KK2NtZD0KIHN0cmF0ZWd5PQogc3RyYXRlZ3lfb3B0cz0KIGRvX21lcmdlPQpAQCAtMTU4LDcgKzEzOCw3IEBACiAJCWdpdCBzeW1ib2xpYy1yZWYgXAogCQkJLW0gInJlYmFzZSBmaW5pc2hlZDogcmV0dXJuaW5nIHRvICRoZWFkX25hbWUiIFwKIAkJCUhFQUQgJGhlYWRfbmFtZSB8fAotCQlkaWUgIkNvdWxkIG5vdCBtb3ZlIGJhY2sgdG8gJGhlYWRfbmFtZSIKKwkJZGllICIkKGdldHRleHQgIkNvdWxkIG5vdCBtb3ZlIGJhY2sgdG8gJGhlYWRfbmFtZSIpIgogCQk7OwogCWVzYWMKIH0KQEAgLTE3NywxMiArMTU3LDEyIEBACiAJICAgdGVzdCAteCAiJEdJVF9ESVIvaG9va3MvcHJlLXJlYmFzZSIKIAl0aGVuCiAJCSIkR0lUX0RJUi9ob29rcy9wcmUtcmViYXNlIiAkezErIiRAIn0gfHwKLQkJZGllICJUaGUgcHJlLXJlYmFzZSBob29rIHJlZnVzZWQgdG8gcmViYXNlLiIKKwkJZGllICIkKGdldHRleHQgIlRoZSBwcmUtcmViYXNlIGhvb2sgcmVmdXNlZCB0byByZWJhc2UuIikiCiAJZmkKIH0KIAogdGVzdCAtZiAiJGFwcGx5X2RpciIvYXBwbHlpbmcgJiYKLQlkaWUgJ0l0IGxvb2tzIGxpa2UgZ2l0LWFtIGlzIGluIHByb2dyZXNzLiBDYW5ub3QgcmViYXNlLicKKwlkaWUgIiQoZ2V0dGV4dCAiSXQgbG9va3MgbGlrZSBnaXQtYW0gaXMgaW4gcHJvZ3Jlc3MuIENhbm5vdCByZWJhc2UuIikiCiAKIGlmIHRlc3QgLWQgIiRhcHBseV9kaXIiCiB0aGVuCkBAIC0yMTEsNyArMTkxLDcgQEAKIAktLXZlcmlmeSkKIAkJb2tfdG9fc2tpcF9wcmVfcmViYXNlPQogCQk7OwotCS0tY29udGludWV8LS1za2lwfC0tYWJvcnQpCisJLS1jb250aW51ZXwtLXNraXB8LS1hYm9ydHwtLWVkaXQtdG9kbykKIAkJdGVzdCAkdG90YWxfYXJnYyAtZXEgMiB8fCB1c2FnZQogCQlhY3Rpb249JHsxIyMtLX0KIAkJOzsKQEAgLTIyMCw2ICsyMDAsMTEgQEAKIAkJb250bz0iJDIiCiAJCXNoaWZ0CiAJCTs7CisJLXgpCisJCXRlc3QgMiAtbGUgIiQjIiB8fCB1c2FnZQorCQljbWQ9IiR7Y21kfWV4ZWMgJDIke0xGfSIKKwkJc2hpZnQKKwkJOzsKIAktaSkKIAkJaW50ZXJhY3RpdmVfcmViYXNlPWV4cGxpY2l0CiAJCTs7CkBAIC0zMDUsOSArMjkwLDE1IEBACiBkb25lCiB0ZXN0ICQjIC1ndCAyICYmIHVzYWdlCiAKK2lmIHRlc3QgLW4gIiRjbWQiICYmCisgICB0ZXN0ICIkaW50ZXJhY3RpdmVfcmViYXNlIiAhPSBleHBsaWNpdAordGhlbgorCWRpZSAiJChnZXR0ZXh0ICJUaGUgLS1leGVjIG9wdGlvbiBtdXN0IGJlIHVzZWQgd2l0aCB0aGUgLS1pbnRlcmFjdGl2ZSBvcHRpb24iKSIKK2ZpCisKIGlmIHRlc3QgLW4gIiRhY3Rpb24iCiB0aGVuCi0JdGVzdCAteiAiJGluX3Byb2dyZXNzIiAmJiBkaWUgIk5vIHJlYmFzZSBpbiBwcm9ncmVzcz8iCisJdGVzdCAteiAiJGluX3Byb2dyZXNzIiAmJiBkaWUgIiQoZ2V0dGV4dCAiTm8gcmViYXNlIGluIHByb2dyZXNzPyIpIgogCSMgT25seSBpbnRlcmFjdGl2ZSByZWJhc2UgdXNlcyBkZXRhaWxlZCByZWZsb2cgbWVzc2FnZXMKIAlpZiB0ZXN0ICIkdHlwZSIgPSBpbnRlcmFjdGl2ZSAmJiB0ZXN0ICIkR0lUX1JFRkxPR19BQ1RJT04iID0gcmViYXNlCiAJdGhlbgpAQCAtMzE2LDE1ICszMDcsMjAgQEAKIAlmaQogZmkKIAoraWYgdGVzdCAiJGFjdGlvbiIgPSAiZWRpdC10b2RvIiAmJiB0ZXN0ICIkdHlwZSIgIT0gImludGVyYWN0aXZlIgordGhlbgorCWRpZSAiJChnZXR0ZXh0ICJUaGUgLS1lZGl0LXRvZG8gYWN0aW9uIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIGludGVyYWN0aXZlIHJlYmFzZS4iKSIKK2ZpCisKIGNhc2UgIiRhY3Rpb24iIGluCiBjb250aW51ZSkKIAkjIFNhbml0eSBjaGVjawogCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCA+L2Rldi9udWxsIHx8Ci0JCWRpZSAiQ2Fubm90IHJlYWQgSEVBRCIKKwkJZGllICIkKGdldHRleHQgIkNhbm5vdCByZWFkIEhFQUQiKSIKIAlnaXQgdXBkYXRlLWluZGV4IC0taWdub3JlLXN1Ym1vZHVsZXMgLS1yZWZyZXNoICYmCiAJZ2l0IGRpZmYtZmlsZXMgLS1xdWlldCAtLWlnbm9yZS1zdWJtb2R1bGVzIHx8IHsKLQkJZWNobyAiWW91IG11c3QgZWRpdCBhbGwgbWVyZ2UgY29uZmxpY3RzIGFuZCB0aGVuIgotCQllY2hvICJtYXJrIHRoZW0gYXMgcmVzb2x2ZWQgdXNpbmcgZ2l0IGFkZCIKKwkJZWNobyAiJChnZXR0ZXh0ICJZb3UgbXVzdCBlZGl0IGFsbCBtZXJnZSBjb25mbGljdHMgYW5kIHRoZW4KK21hcmsgdGhlbSBhcyByZXNvbHZlZCB1c2luZyBnaXQgYWRkIikiCiAJCWV4aXQgMQogCX0KIAlyZWFkX2Jhc2ljX3N0YXRlCkBAIC0zNDEsMjcgKzMzNywzOCBAQAogCWNhc2UgIiRoZWFkX25hbWUiIGluCiAJcmVmcy8qKQogCQlnaXQgc3ltYm9saWMtcmVmIC1tICJyZWJhc2U6IGFib3J0aW5nIiBIRUFEICRoZWFkX25hbWUgfHwKLQkJZGllICJDb3VsZCBub3QgbW92ZSBiYWNrIHRvICRoZWFkX25hbWUiCisJCWRpZSAiJChldmFsX2dldHRleHQgIkNvdWxkIG5vdCBtb3ZlIGJhY2sgdG8gXCRoZWFkX25hbWUiKSIKIAkJOzsKIAllc2FjCiAJb3V0cHV0IGdpdCByZXNldCAtLWhhcmQgJG9yaWdfaGVhZAogCXJtIC1yICIkc3RhdGVfZGlyIgogCWV4aXQKIAk7OworZWRpdC10b2RvKQorCXJ1bl9zcGVjaWZpY19yZWJhc2UKKwk7OwogZXNhYwogCiAjIE1ha2Ugc3VyZSBubyByZWJhc2UgaXMgaW4gcHJvZ3Jlc3MKIGlmIHRlc3QgLW4gIiRpbl9wcm9ncmVzcyIKIHRoZW4KLQlkaWUgJwotSXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBhbHJlYWR5IGEgJyIke3N0YXRlX2RpciMjKi99IicgZGlyZWN0b3J5LCBhbmQKKwlzdGF0ZV9kaXJfYmFzZT0ke3N0YXRlX2RpciMjKi99CisJY21kX2xpdmVfcmViYXNlPSJnaXQgcmViYXNlICgtLWNvbnRpbnVlIHwgLS1hYm9ydCB8IC0tc2tpcCkiCisJY21kX2NsZWFyX3N0YWxlX3JlYmFzZT0icm0gLWZyIFwiJHN0YXRlX2RpclwiIgorCWRpZSAiCiskKGV2YWxfZ2V0dGV4dCAnSXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBhbHJlYWR5IGEgJHN0YXRlX2Rpcl9iYXNlIGRpcmVjdG9yeSwgYW5kCiBJIHdvbmRlciBpZiB5b3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYW5vdGhlciByZWJhc2UuICBJZiB0aGF0IGlzIHRoZQogY2FzZSwgcGxlYXNlIHRyeQotCWdpdCByZWJhc2UgKC0tY29udGludWUgfCAtLWFib3J0IHwgLS1za2lwKQorCSRjbWRfbGl2ZV9yZWJhc2UKIElmIHRoYXQgaXMgbm90IHRoZSBjYXNlLCBwbGVhc2UKLQlybSAtZnIgJyIkc3RhdGVfZGlyIicKKwkkY21kX2NsZWFyX3N0YWxlX3JlYmFzZQogYW5kIHJ1biBtZSBhZ2Fpbi4gIEkgYW0gc3RvcHBpbmcgaW4gY2FzZSB5b3Ugc3RpbGwgaGF2ZSBzb21ldGhpbmcKLXZhbHVhYmxlIHRoZXJlLicKK3ZhbHVhYmxlIHRoZXJlLicpIgorZmkKKworaWYgdGVzdCAtbiAiJHJlYmFzZV9yb290IiAmJiB0ZXN0IC16ICIkb250byIKK3RoZW4KKwl0ZXN0IC16ICIkaW50ZXJhY3RpdmVfcmViYXNlIiAmJiBpbnRlcmFjdGl2ZV9yZWJhc2U9aW1wbGllZAogZmkKIAogaWYgdGVzdCAtbiAiJGludGVyYWN0aXZlX3JlYmFzZSIKQEAgLTM5NCwxMiArNDAxLDE4IEBACiAJCTs7CiAJZXNhYwogCXVwc3RyZWFtPWBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICIke3Vwc3RyZWFtX25hbWV9XjAiYCB8fAotCWRpZSAiaW52YWxpZCB1cHN0cmVhbSAkdXBzdHJlYW1fbmFtZSIKKwlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJpbnZhbGlkIHVwc3RyZWFtIFwkdXBzdHJlYW1fbmFtZSIpIgogCXVwc3RyZWFtX2FyZz0iJHVwc3RyZWFtX25hbWUiCiBlbHNlCi0JdGVzdCAteiAiJG9udG8iICYmIGRpZSAiWW91IG11c3Qgc3BlY2lmeSAtLW9udG8gd2hlbiB1c2luZyAtLXJvb3QiCisJaWYgdGVzdCAteiAiJG9udG8iCisJdGhlbgorCQllbXB0eV90cmVlPWBnaXQgaGFzaC1vYmplY3QgLXQgdHJlZSAvZGV2L251bGxgCisJCW9udG89YGdpdCBjb21taXQtdHJlZSAkZW1wdHlfdHJlZSA8L2Rldi9udWxsYAorCQlzcXVhc2hfb250bz0iJG9udG8iCisJZmkKIAl1bnNldCB1cHN0cmVhbV9uYW1lCiAJdW5zZXQgdXBzdHJlYW0KKwl0ZXN0ICQjIC1ndCAxICYmIHVzYWdlCiAJdXBzdHJlYW1fYXJnPS0tcm9vdAogZmkKIApAQCAtNDEyLDE5ICs0MjUsMTkgQEAKIAl0aGVuCiAJCWNhc2UgIiRvbnRvIiBpbgogCQk/KiIkTEYiPyopCi0JCQlkaWUgIiRvbnRvX25hbWU6IHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIG1lcmdlIGJhc2VzIgorCQkJZGllICIkKGV2YWxfZ2V0dGV4dCAiXCRvbnRvX25hbWU6IHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIG1lcmdlIGJhc2VzIikiCiAJCQk7OwogCQknJykKLQkJCWRpZSAiJG9udG9fbmFtZTogdGhlcmUgaXMgbm8gbWVyZ2UgYmFzZSIKKwkJCWRpZSAiJChldmFsX2dldHRleHQgIlwkb250b19uYW1lOiB0aGVyZSBpcyBubyBtZXJnZSBiYXNlIikiCiAJCQk7OwogCQllc2FjCiAJZWxzZQotCQlkaWUgIiRvbnRvX25hbWU6IHRoZXJlIGlzIG5vIG1lcmdlIGJhc2UiCisJCWRpZSAiJChldmFsX2dldHRleHQgIlwkb250b19uYW1lOiB0aGVyZSBpcyBubyBtZXJnZSBiYXNlIikiCiAJZmkKIAk7OwogKikKIAlvbnRvPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJHtvbnRvX25hbWV9XjAiKSB8fAotCWRpZSAiRG9lcyBub3QgcG9pbnQgdG8gYSB2YWxpZCBjb21taXQ6ICRvbnRvX25hbWUiCisJZGllICIkKGV2YWxfZ2V0dGV4dCAiRG9lcyBub3QgcG9pbnQgdG8gYSB2YWxpZCBjb21taXQ6IFwkb250b19uYW1lIikiCiAJOzsKIGVzYWMKIApAQCAtNDQ3LDEwICs0NjAsMTAgQEAKIAl0aGVuCiAJCWhlYWRfbmFtZT0iZGV0YWNoZWQgSEVBRCIKIAllbHNlCi0JCWRpZSAiZmF0YWw6IG5vIHN1Y2ggYnJhbmNoOiAkMSIKKwkJZGllICIkKGV2YWxfZ2V0dGV4dCAiZmF0YWw6IG5vIHN1Y2ggYnJhbmNoOiBcJGJyYW5jaF9uYW1lIikiCiAJZmkKIAk7OwotKikKKzApCiAJIyBEbyBub3QgbmVlZCB0byBzd2l0Y2ggYnJhbmNoZXMsIHdlIGFyZSBhbHJlYWR5IG9uIGl0LgogCWlmIGJyYW5jaF9uYW1lPWBnaXQgc3ltYm9saWMtcmVmIC1xIEhFQURgCiAJdGhlbgpAQCAtNDYwLDExICs0NzMsMTQgQEAKIAkJaGVhZF9uYW1lPSJkZXRhY2hlZCBIRUFEIgogCQlicmFuY2hfbmFtZT1IRUFEIDsjIGRldGFjaGVkCiAJZmkKLQlvcmlnX2hlYWQ9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICIke2JyYW5jaF9uYW1lfV4wIikgfHwgZXhpdAorCW9yaWdfaGVhZD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkgfHwgZXhpdAorCTs7CisqKQorCWRpZSAiQlVHOiB1bmV4cGVjdGVkIG51bWJlciBvZiBhcmd1bWVudHMgbGVmdCB0byBwYXJzZSIKIAk7OwogZXNhYwogCi1yZXF1aXJlX2NsZWFuX3dvcmtfdHJlZSAicmViYXNlIiAiUGxlYXNlIGNvbW1pdCBvciBzdGFzaCB0aGVtLiIKK3JlcXVpcmVfY2xlYW5fd29ya190cmVlICJyZWJhc2UiICIkKGdldHRleHQgIlBsZWFzZSBjb21taXQgb3Igc3Rhc2ggdGhlbS4iKSIKIAogIyBOb3cgd2UgYXJlIHJlYmFzaW5nIGNvbW1pdHMgJHVwc3RyZWFtLi4kb3JpZ19oZWFkIChvciB3aXRoIC0tcm9vdCwKICMgZXZlcnl0aGluZyBsZWFkaW5nIHVwIHRvICRvcmlnX2hlYWQpIG9uIHRvcCBvZiAkb250bwpAQCAtNDgyLDEwICs0OTgsMTAgQEAKIAl0aGVuCiAJCSMgTGF6aWx5IHN3aXRjaCB0byB0aGUgdGFyZ2V0IGJyYW5jaCBpZiBuZWVkZWQuLi4KIAkJdGVzdCAteiAiJHN3aXRjaF90byIgfHwgZ2l0IGNoZWNrb3V0ICIkc3dpdGNoX3RvIiAtLQotCQlzYXkgIkN1cnJlbnQgYnJhbmNoICRicmFuY2hfbmFtZSBpcyB1cCB0byBkYXRlLiIKKwkJc2F5ICIkKGV2YWxfZ2V0dGV4dCAiQ3VycmVudCBicmFuY2ggXCRicmFuY2hfbmFtZSBpcyB1cCB0byBkYXRlLiIpIgogCQlleGl0IDAKIAllbHNlCi0JCXNheSAiQ3VycmVudCBicmFuY2ggJGJyYW5jaF9uYW1lIGlzIHVwIHRvIGRhdGUsIHJlYmFzZSBmb3JjZWQuIgorCQlzYXkgIiQoZXZhbF9nZXR0ZXh0ICJDdXJyZW50IGJyYW5jaCBcJGJyYW5jaF9uYW1lIGlzIHVwIHRvIGRhdGUsIHJlYmFzZSBmb3JjZWQuIikiCiAJZmkKIGZpCiAKQEAgLTQ5Niw3ICs1MTIsNyBAQAogdGhlbgogCWlmIHRlc3QgLW4gIiR2ZXJib3NlIgogCXRoZW4KLQkJZWNobyAiQ2hhbmdlcyBmcm9tICRtYiB0byAkb250bzoiCisJCWVjaG8gIiQoZXZhbF9nZXR0ZXh0ICJDaGFuZ2VzIGZyb20gXCRtYiB0byBcJG9udG86IikiCiAJZmkKIAkjIFdlIHdhbnQgY29sb3IgKGlmIHNldCksIGJ1dCBubyBwYWdlcgogCUdJVF9QQUdFUj0nJyBnaXQgZGlmZiAtLXN0YXQgLS1zdW1tYXJ5ICIkbWIiICIkb250byIKQEAgLTUwNSw3ICs1MjEsNyBAQAogdGVzdCAiJHR5cGUiID0gaW50ZXJhY3RpdmUgJiYgcnVuX3NwZWNpZmljX3JlYmFzZQogCiAjIERldGFjaCBIRUFEIGFuZCByZXNldCB0aGUgdHJlZQotc2F5ICJGaXJzdCwgcmV3aW5kaW5nIGhlYWQgdG8gcmVwbGF5IHlvdXIgd29yayBvbiB0b3Agb2YgaXQuLi4iCitzYXkgIiQoZ2V0dGV4dCAiRmlyc3QsIHJld2luZGluZyBoZWFkIHRvIHJlcGxheSB5b3VyIHdvcmsgb24gdG9wIG9mIGl0Li4uIikiCiBnaXQgY2hlY2tvdXQgLXEgIiRvbnRvXjAiIHx8IGRpZSAiY291bGQgbm90IGRldGFjaCBIRUFEIgogZ2l0IHVwZGF0ZS1yZWYgT1JJR19IRUFEICRvcmlnX2hlYWQKIApAQCAtNTEzLDcgKzUyOSw3IEBACiAjIHdlIGp1c3QgZmFzdC1mb3J3YXJkZWQuCiBpZiB0ZXN0ICIkbWIiID0gIiRvcmlnX2hlYWQiCiB0aGVuCi0Jc2F5ICJGYXN0LWZvcndhcmRlZCAkYnJhbmNoX25hbWUgdG8gJG9udG9fbmFtZS4iCisJc2F5ICIkKGV2YWxfZ2V0dGV4dCAiRmFzdC1mb3J3YXJkZWQgXCRicmFuY2hfbmFtZSB0byBcJG9udG9fbmFtZS4iKSIKIAltb3ZlX3RvX29yaWdpbmFsX2JyYW5jaAogCWV4aXQgMAogZmkKZGlmZiAtLWdpdCBhL2dpdC1yZWxpbmsucGVybCBiL2dpdC1yZWxpbmsucGVybAppbmRleCBmMjkyODVjLi4yMzZhMzUyIDEwMDc1NQotLS0gYS9naXQtcmVsaW5rLnBlcmwKKysrIGIvZ2l0LXJlbGluay5wZXJsCkBAIC0xNjMsNyArMTYzLDcgQEAKIAogCiBzdWIgdXNhZ2UoKSB7Ci0JcHJpbnQoIlVzYWdlOiBnaXQgcmVsaW5rIFstLXNhZmVdIDxkaXI+Li4uIDxtYXN0ZXJfZGlyPiBcbiIpOworCXByaW50KCJ1c2FnZTogZ2l0IHJlbGluayBbLS1zYWZlXSA8ZGlyPi4uLiA8bWFzdGVyX2Rpcj4gXG4iKTsKIAlwcmludCgiQWxsIGRpcmVjdG9yaWVzIHNob3VsZCBjb250YWluIGEgLmdpdC9vYmplY3RzLyBzdWJkaXJlY3RvcnkuXG4iKTsKIAlwcmludCgiT3B0aW9uc1xuIik7CiAJcHJpbnQoIlx0LS1zYWZlXHQiIC4KZGlmZiAtLWdpdCBhL2dpdC1yZW1vdGUtdGVzdGdpdCBiL2dpdC1yZW1vdGUtdGVzdGdpdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lN2VkM2EzCi0tLSAvZGV2L251bGwKKysrIGIvZ2l0LXJlbW90ZS10ZXN0Z2l0CkBAIC0wLDAgKzEsOTEgQEAKKyMhL3Vzci9iaW4vZW52IGJhc2gKKyMgQ29weXJpZ2h0IChjKSAyMDEyIEZlbGlwZSBDb250cmVyYXMKKworYWxpYXM9JDEKK3VybD0kMgorCitkaXI9IiRHSVRfRElSL3Rlc3RnaXQvJGFsaWFzIgorcHJlZml4PSJyZWZzL3Rlc3RnaXQvJGFsaWFzIgorCitkZWZhdWx0X3JlZnNwZWM9InJlZnMvaGVhZHMvKjoke3ByZWZpeH0vaGVhZHMvKiIKKworcmVmc3BlYz0iJHtHSVRfUkVNT1RFX1RFU1RHSVRfUkVGU1BFQy0kZGVmYXVsdF9yZWZzcGVjfSIKKwordGVzdCAteiAiJHJlZnNwZWMiICYmIHByZWZpeD0icmVmcyIKKworZXhwb3J0IEdJVF9ESVI9IiR1cmwvLmdpdCIKKworbWtkaXIgLXAgIiRkaXIiCisKK2lmIHRlc3QgLXogIiRHSVRfUkVNT1RFX1RFU1RHSVRfTk9fTUFSS1MiCit0aGVuCisJZ2l0bWFya3M9IiRkaXIvZ2l0Lm1hcmtzIgorCXRlc3RnaXRtYXJrcz0iJGRpci90ZXN0Z2l0Lm1hcmtzIgorCXRlc3QgLWUgIiRnaXRtYXJrcyIgfHwgPiIkZ2l0bWFya3MiCisJdGVzdCAtZSAiJHRlc3RnaXRtYXJrcyIgfHwgPiIkdGVzdGdpdG1hcmtzIgorCXRlc3RnaXRtYXJrc19hcmdzPSggIi0tIntpbXBvcnQsZXhwb3J0fSItbWFya3M9JHRlc3RnaXRtYXJrcyIgKQorZmkKKword2hpbGUgcmVhZCBsaW5lCitkbworCWNhc2UgJGxpbmUgaW4KKwljYXBhYmlsaXRpZXMpCisJCWVjaG8gJ2ltcG9ydCcKKwkJZWNobyAnZXhwb3J0JworCQl0ZXN0IC1uICIkcmVmc3BlYyIgJiYgZWNobyAicmVmc3BlYyAkcmVmc3BlYyIKKwkJaWYgdGVzdCAtbiAiJGdpdG1hcmtzIgorCQl0aGVuCisJCQllY2hvICIqaW1wb3J0LW1hcmtzICRnaXRtYXJrcyIKKwkJCWVjaG8gIipleHBvcnQtbWFya3MgJGdpdG1hcmtzIgorCQlmaQorCQl0ZXN0IC1uICIkR0lUX1JFTU9URV9URVNUR0lUX1NJR05FRF9UQUdTIiAmJiBlY2hvICJzaWduZWQtdGFncyIKKwkJZWNobworCQk7OworCWxpc3QpCisJCWdpdCBmb3ItZWFjaC1yZWYgLS1mb3JtYXQ9Jz8gJShyZWZuYW1lKScgJ3JlZnMvaGVhZHMvJworCQloZWFkPSQoZ2l0IHN5bWJvbGljLXJlZiBIRUFEKQorCQllY2hvICJAJGhlYWQgSEVBRCIKKwkJZWNobworCQk7OworCWltcG9ydCopCisJCSMgcmVhZCBhbGwgaW1wb3J0IGxpbmVzCisJCXdoaWxlIHRydWUKKwkJZG8KKwkJCXJlZj0iJHtsaW5lIyogfSIKKwkJCXJlZnM9IiRyZWZzICRyZWYiCisJCQlyZWFkIGxpbmUKKwkJCXRlc3QgIiR7bGluZSUlICp9IiAhPSAiaW1wb3J0IiAmJiBicmVhaworCQlkb25lCisKKwkJaWYgdGVzdCAtbiAiJGdpdG1hcmtzIgorCQl0aGVuCisJCQllY2hvICJmZWF0dXJlIGltcG9ydC1tYXJrcz0kZ2l0bWFya3MiCisJCQllY2hvICJmZWF0dXJlIGV4cG9ydC1tYXJrcz0kZ2l0bWFya3MiCisJCWZpCisJCWVjaG8gImZlYXR1cmUgZG9uZSIKKwkJZ2l0IGZhc3QtZXhwb3J0ICIke3Rlc3RnaXRtYXJrc19hcmdzW0BdfSIgJHJlZnMgfAorCQlzZWQgLWUgInMjcmVmcy9oZWFkcy8jJHtwcmVmaXh9L2hlYWRzLyNnIgorCQllY2hvICJkb25lIgorCQk7OworCWV4cG9ydCkKKwkJYmVmb3JlPSQoZ2l0IGZvci1lYWNoLXJlZiAtLWZvcm1hdD0nJShyZWZuYW1lKSAlKG9iamVjdG5hbWUpJykKKworCQlnaXQgZmFzdC1pbXBvcnQgIiR7dGVzdGdpdG1hcmtzX2FyZ3NbQF19IiAtLXF1aWV0CisKKwkJYWZ0ZXI9JChnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSclKHJlZm5hbWUpICUob2JqZWN0bmFtZSknKQorCisJCSMgZmlndXJlIG91dCB3aGljaCByZWZzIHdlcmUgdXBkYXRlZAorCQlqb2luIC1lIDAgLW8gJzAgMS4yIDIuMicgLWEgMiA8KGVjaG8gIiRiZWZvcmUiKSA8KGVjaG8gIiRhZnRlciIpIHwKKwkJd2hpbGUgcmVhZCByZWYgYSBiCisJCWRvCisJCQl0ZXN0ICRhID09ICRiICYmIGNvbnRpbnVlCisJCQllY2hvICJvayAkcmVmIgorCQlkb25lCisKKwkJZWNobworCQk7OworCScnKQorCQlleGl0CisJCTs7CisJZXNhYworZG9uZQpkaWZmIC0tZ2l0IGEvZ2l0LXJlbW90ZS10ZXN0Z2l0LnB5IGIvZ2l0LXJlbW90ZS10ZXN0cHkucHkKc2ltaWxhcml0eSBpbmRleCA3NiUKcmVuYW1lIGZyb20gZ2l0LXJlbW90ZS10ZXN0Z2l0LnB5CnJlbmFtZSB0byBnaXQtcmVtb3RlLXRlc3RweS5weQppbmRleCA1ZjNlYmQyLi5jYTY3ODk5IDEwMDY0NAotLS0gYS9naXQtcmVtb3RlLXRlc3RnaXQucHkKKysrIGIvZ2l0LXJlbW90ZS10ZXN0cHkucHkKQEAgLTMxLDYgKzMxLDI3IEBACiBmcm9tIGdpdF9yZW1vdGVfaGVscGVycy5naXQuaW1wb3J0ZXIgaW1wb3J0IEdpdEltcG9ydGVyCiBmcm9tIGdpdF9yZW1vdGVfaGVscGVycy5naXQubm9uX2xvY2FsIGltcG9ydCBOb25Mb2NhbEdpdAogCitpZiBzeXMuaGV4dmVyc2lvbiA8IDB4MDIwMDAwMDA6CisgICAgIyBzdHJpbmcuZW5jb2RlKCkgaXMgdGhlIGxpbWl0ZXIKKyAgICBzeXMuc3RkZXJyLndyaXRlKCJnaXQtcmVtb3RlLXRlc3RnaXQ6IHJlcXVpcmVzIFB5dGhvbiAyLjAgb3IgbGF0ZXIuXG4iKQorICAgIHN5cy5leGl0KDEpCisKKworZGVmIGVuY29kZV9maWxlcGF0aChwYXRoKToKKyAgICAiIiJFbmNvZGVzIGEgVW5pY29kZSBmaWxlIHBhdGggdG8gYSBieXRlIHN0cmluZy4KKworICAgIE9uIFB5dGhvbiAyIHRoaXMgaXMgYSBuby1vcDsgb24gUHl0aG9uIDMgd2UgZW5jb2RlIHRoZSBzdHJpbmcgYXMKKyAgICBzdWdnZXN0ZWQgYnkgWzFdIHdoaWNoIGFsbG93cyBhbiBleGFjdCByb3VuZC10cmlwIGZyb20gdGhlIGNvbW1hbmQgbGluZQorICAgIHRvIHRoZSBmaWxlc3lzdGVtLgorCisgICAgWzFdIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy9jLWFwaS91bmljb2RlLmh0bWwjZmlsZS1zeXN0ZW0tZW5jb2RpbmcKKworICAgICIiIgorICAgIGlmIHN5cy5oZXh2ZXJzaW9uIDwgMHgwMzAwMDAwMDoKKyAgICAgICAgcmV0dXJuIHBhdGgKKyAgICByZXR1cm4gcGF0aC5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpLCAnc3Vycm9nYXRlZXNjYXBlJykKKworCiBkZWYgZ2V0X3JlcG8oYWxpYXMsIHVybCk6CiAgICAgIiIiUmV0dXJucyBhIGdpdCByZXBvc2l0b3J5IG9iamVjdCBpbml0aWFsaXplZCBmb3IgdXNhZ2UuCiAgICAgIiIiCkBAIC00MCw3ICs2MSw3IEBACiAgICAgcmVwby5nZXRfaGVhZCgpCiAKICAgICBoYXNoZXIgPSBfZGlnZXN0KCkKLSAgICBoYXNoZXIudXBkYXRlKHJlcG8ucGF0aCkKKyAgICBoYXNoZXIudXBkYXRlKGVuY29kZV9maWxlcGF0aChyZXBvLnBhdGgpKQogICAgIHJlcG8uaGFzaCA9IGhhc2hlci5oZXhkaWdlc3QoKQogCiAgICAgcmVwby5nZXRfYmFzZV9wYXRoID0gbGFtYmRhIGJhc2U6IG9zLnBhdGguam9pbigKQEAgLTgyLDIyICsxMDMsMjIgQEAKICAgICAiIiJQcmludHMgdGhlIHN1cHBvcnRlZCBjYXBhYmlsaXRpZXMuCiAgICAgIiIiCiAKLSAgICBwcmludCAiaW1wb3J0IgotICAgIHByaW50ICJleHBvcnQiCi0gICAgcHJpbnQgInJlZnNwZWMgcmVmcy9oZWFkcy8qOiVzKiIgJSByZXBvLnByZWZpeAorICAgIHByaW50KCJpbXBvcnQiKQorICAgIHByaW50KCJleHBvcnQiKQorICAgIHByaW50KCJyZWZzcGVjIHJlZnMvaGVhZHMvKjolcyoiICUgcmVwby5wcmVmaXgpCiAKICAgICBkaXJuYW1lID0gcmVwby5nZXRfYmFzZV9wYXRoKHJlcG8uZ2l0ZGlyKQogCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRpcm5hbWUpOgogICAgICAgICBvcy5tYWtlZGlycyhkaXJuYW1lKQogCi0gICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXJuYW1lLCAndGVzdGdpdC5tYXJrcycpCisgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXJuYW1lLCAnZ2l0Lm1hcmtzJykKIAotICAgIHByaW50ICIqZXhwb3J0LW1hcmtzICVzIiAlIHBhdGgKKyAgICBwcmludCgiKmV4cG9ydC1tYXJrcyAlcyIgJSBwYXRoKQogICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgotICAgICAgICBwcmludCAiKmltcG9ydC1tYXJrcyAlcyIgJSBwYXRoCisgICAgICAgIHByaW50KCIqaW1wb3J0LW1hcmtzICVzIiAlIHBhdGgpCiAKLSAgICBwcmludCAjIGVuZCBjYXBhYmlsaXRpZXMKKyAgICBwcmludCgnJykgIyBlbmQgY2FwYWJpbGl0aWVzCiAKIAogZGVmIGRvX2xpc3QocmVwbywgYXJncyk6CkBAIC0xMTAsMTYgKzEzMSwxNiBAQAogCiAgICAgZm9yIHJlZiBpbiByZXBvLnJldnM6CiAgICAgICAgIGRlYnVnKCI/IHJlZnMvaGVhZHMvJXMiLCByZWYpCi0gICAgICAgIHByaW50ICI/IHJlZnMvaGVhZHMvJXMiICUgcmVmCisgICAgICAgIHByaW50KCI/IHJlZnMvaGVhZHMvJXMiICUgcmVmKQogCiAgICAgaWYgcmVwby5oZWFkOgogICAgICAgICBkZWJ1ZygiQHJlZnMvaGVhZHMvJXMgSEVBRCIgJSByZXBvLmhlYWQpCi0gICAgICAgIHByaW50ICJAcmVmcy9oZWFkcy8lcyBIRUFEIiAlIHJlcG8uaGVhZAorICAgICAgICBwcmludCgiQHJlZnMvaGVhZHMvJXMgSEVBRCIgJSByZXBvLmhlYWQpCiAgICAgZWxzZToKICAgICAgICAgZGVidWcoIkByZWZzL2hlYWRzL21hc3RlciBIRUFEIikKLSAgICAgICAgcHJpbnQgIkByZWZzL2hlYWRzL21hc3RlciBIRUFEIgorICAgICAgICBwcmludCgiQHJlZnMvaGVhZHMvbWFzdGVyIEhFQUQiKQogCi0gICAgcHJpbnQgIyBlbmQgbGlzdAorICAgIHByaW50KCcnKSAjIGVuZCBsaXN0CiAKIAogZGVmIHVwZGF0ZV9sb2NhbF9yZXBvKHJlcG8pOgpAQCAtMTQ5LDcgKzE3MCw3IEBACiAgICAgcmVmcyA9IFtyZWZdCiAKICAgICB3aGlsZSBUcnVlOgotICAgICAgICBsaW5lID0gc3lzLnN0ZGluLnJlYWRsaW5lKCkKKyAgICAgICAgbGluZSA9IHN5cy5zdGRpbi5yZWFkbGluZSgpLmRlY29kZSgpCiAgICAgICAgIGlmIGxpbmUgPT0gJ1xuJzoKICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIGlmIG5vdCBsaW5lLnN0YXJ0c3dpdGgoJ2ltcG9ydCAnKToKQEAgLTE1OSwxMCArMTgwLDE1IEBACiAgICAgICAgIHJlZiA9IGxpbmVbNzpdLnN0cmlwKCkKICAgICAgICAgcmVmcy5hcHBlbmQocmVmKQogCisgICAgcHJpbnQoImZlYXR1cmUgZG9uZSIpCisKKyAgICBpZiBvcy5lbnZpcm9uLmdldCgiR0lUX1JFTU9URV9URVNUR0lUX0ZBSUxVUkUiKToKKyAgICAgICAgZGllKCdUb2xkIHRvIGZhaWwnKQorCiAgICAgcmVwbyA9IHVwZGF0ZV9sb2NhbF9yZXBvKHJlcG8pCiAgICAgcmVwby5leHBvcnRlci5leHBvcnRfcmVwbyhyZXBvLmdpdGRpciwgcmVmcykKIAotICAgIHByaW50ICJkb25lIgorICAgIHByaW50KCJkb25lIikKIAogCiBkZWYgZG9fZXhwb3J0KHJlcG8sIGFyZ3MpOgpAQCAtMTcyLDYgKzE5OCw5IEBACiAgICAgaWYgbm90IHJlcG8uZ2l0ZGlyOgogICAgICAgICBkaWUoIk5lZWQgZ2l0ZGlyIHRvIGV4cG9ydCIpCiAKKyAgICBpZiBvcy5lbnZpcm9uLmdldCgiR0lUX1JFTU9URV9URVNUR0lUX0ZBSUxVUkUiKToKKyAgICAgICAgZGllKCdUb2xkIHRvIGZhaWwnKQorCiAgICAgdXBkYXRlX2xvY2FsX3JlcG8ocmVwbykKICAgICBjaGFuZ2VkID0gcmVwby5pbXBvcnRlci5kb19pbXBvcnQocmVwby5naXRkaXIpCiAKQEAgLTE3OSw4ICsyMDgsOCBAQAogICAgICAgICByZXBvLm5vbl9sb2NhbC5wdXNoKHJlcG8uZ2l0ZGlyKQogCiAgICAgZm9yIHJlZiBpbiBjaGFuZ2VkOgotICAgICAgICBwcmludCAib2sgJXMiICUgcmVmCi0gICAgcHJpbnQKKyAgICAgICAgcHJpbnQoIm9rICVzIiAlIHJlZikKKyAgICBwcmludCgnJykKIAogCiBDT01NQU5EUyA9IHsKQEAgLTIxMiw3ICsyNDEsNyBAQAogCiAgICAgbGluZSA9IHN5cy5zdGRpbi5yZWFkbGluZSgpCiAKLSAgICBjbWRsaW5lID0gbGluZQorICAgIGNtZGxpbmUgPSBsaW5lLmRlY29kZSgpCiAKICAgICBpZiBub3QgY21kbGluZToKICAgICAgICAgd2FybigiVW5leHBlY3RlZCBFT0YiKQpAQCAtMjY0LDcgKzI5MywxMSBAQAogCiAgICAgbW9yZSA9IFRydWUKIAotICAgIHN5cy5zdGRpbiA9IG9zLmZkb3BlbihzeXMuc3RkaW4uZmlsZW5vKCksICdyJywgMCkKKyAgICAjIFVzZSBiaW5hcnkgbW9kZSBzaW5jZSBQeXRob24gMyBkb2VzIG5vdCBwZXJtaXQgdW5idWZmZXJlZCBJL08gaW4gdGV4dAorICAgICMgbW9kZS4gIFVuYnVmZmVyZWQgSS9PIGlzIHJlcXVpcmVkIHRvIGF2b2lkIGRhdGEgdGhhdCBzaG91bGQgYmUgZ29pbmcKKyAgICAjIHRvIGdpdC1mYXN0LWltcG9ydCBhZnRlciBhbiAiZXhwb3J0IiBjb21tYW5kIGdldHRpbmcgY2F1Z2h0IGluIG91cgorICAgICMgc3RkaW4gYnVmZmVyIGluc3RlYWQuCisgICAgc3lzLnN0ZGluID0gb3MuZmRvcGVuKHN5cy5zdGRpbi5maWxlbm8oKSwgJ3JiJywgMCkKICAgICB3aGlsZSAobW9yZSk6CiAgICAgICAgIG1vcmUgPSByZWFkX29uZV9saW5lKHJlcG8pCiAKZGlmZiAtLWdpdCBhL2dpdC1yZXF1ZXN0LXB1bGwuc2ggYi9naXQtcmVxdWVzdC1wdWxsLnNoCmluZGV4IGU2NDM4ZTIuLmQ1NjYwMTUgMTAwNzU1Ci0tLSBhL2dpdC1yZXF1ZXN0LXB1bGwuc2gKKysrIGIvZ2l0LXJlcXVlc3QtcHVsbC5zaApAQCAtNTcsOSArNTcsMTMgQEAKIG1lcmdlX2Jhc2U9JChnaXQgbWVyZ2UtYmFzZSAkYmFzZXJldiAkaGVhZHJldikgfHwKIGRpZSAiZmF0YWw6IE5vIGNvbW1pdHMgaW4gY29tbW9uIGJldHdlZW4gJGJhc2UgYW5kICRoZWFkIgogCi0jICRoZWFkIGlzIHRoZSB0b2tlbiBnaXZlbiBmcm9tIHRoZSBjb21tYW5kIGxpbmUuIElmIGEgcmVmIHdpdGggdGhhdAotIyBuYW1lIGV4aXN0cyBhdCB0aGUgcmVtb3RlIGFuZCB0aGVpciB2YWx1ZXMgbWF0Y2gsIHdlIHNob3VsZCB1c2UgaXQuCi0jIE90aGVyd2lzZSBmaW5kIGEgcmVmIHRoYXQgbWF0Y2hlcyAkaGVhZHJldi4KKyMgJGhlYWQgaXMgdGhlIHRva2VuIGdpdmVuIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYW5kICR0YWdfbmFtZSwgaWYKKyMgZXhpc3RzLCBpcyB0aGUgdGFnIHdlIGFyZSBnb2luZyB0byBzaG93IHRoZSBjb21taXQgaW5mb3JtYXRpb24gZm9yLgorIyBJZiB0aGF0IHRhZyBleGlzdHMgYXQgdGhlIHJlbW90ZSBhbmQgaXQgcG9pbnRzIGF0IHRoZSBjb21taXQsIHVzZSBpdC4KKyMgT3RoZXJ3aXNlLCBpZiBhIGJyYW5jaCB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgJGhlYWQgZXhpc3RzIGF0IHRoZSByZW1vdGUKKyMgYW5kIHRoZWlyIHZhbHVlcyBtYXRjaCwgdXNlIHRoYXQgaW5zdGVhZC4KKyMKKyMgT3RoZXJ3aXNlIGZpbmQgYSByYW5kb20gcmVmIHRoYXQgbWF0Y2hlcyAkaGVhZHJldi4KIGZpbmRfbWF0Y2hpbmdfcmVmPScKIAlzdWIgYWJiciB7CiAJCW15ICRyZWYgPSBzaGlmdDsKQEAgLTcwLDI0ICs3NCwyOSBAQAogCQl9CiAJfQogCi0JbXkgKCRleGFjdCwgJGZvdW5kKTsKKwlteSAoJHRhZ2dlZCwgJGJyYW5jaCwgJGZvdW5kKTsKIAl3aGlsZSAoPFNURElOPikgewogCQlteSAoJHNoYTEsICRyZWYsICRkZXJlZikgPSAvXihcUyspXHMrKFxTKz8pKFxeXHtcfSk/JC87CiAJCW5leHQgdW5sZXNzICgkc2hhMSBlcSAkQVJHVlsxXSk7CiAJCSRmb3VuZCA9IGFiYnIoJHJlZik7Ci0JCWlmICgkcmVmID1+IG18L1xRJEFSR1ZbMF1cRSR8KSB7Ci0JCQkkZXhhY3QgPSAkZm91bmQ7CisJCWlmICgkZGVyZWYgJiYgJHJlZiBlcSAidGFncy8kQVJHVlsyXSIpIHsKKwkJCSR0YWdnZWQgPSAkZm91bmQ7CiAJCQlsYXN0OwogCQl9CisJCWlmICgkcmVmID1+IG18L1xRJEFSR1ZbMF1cRSR8KSB7CisJCQkkZXhhY3QgPSAkZm91bmQ7CisJCX0KIAl9Ci0JaWYgKCRleGFjdCkgeworCWlmICgkdGFnZ2VkKSB7CisJCXByaW50ICIkdGFnZ2VkXG4iOworCX0gZWxzaWYgKCRleGFjdCkgewogCQlwcmludCAiJGV4YWN0XG4iOwogCX0gZWxzaWYgKCRmb3VuZCkgewogCQlwcmludCAiJGZvdW5kXG4iOwogCX0KICcKIAotcmVmPSQoZ2l0IGxzLXJlbW90ZSAiJHVybCIgfCBwZXJsIC1lICIkZmluZF9tYXRjaGluZ19yZWYiICIkaGVhZCIgIiRoZWFkcmV2IikKK3JlZj0kKGdpdCBscy1yZW1vdGUgIiR1cmwiIHwgcGVybCAtZSAiJGZpbmRfbWF0Y2hpbmdfcmVmIiAiJGhlYWQiICIkaGVhZHJldiIgIiR0YWdfbmFtZSIpCiAKIHVybD0kKGdpdCBscy1yZW1vdGUgLS1nZXQtdXJsICIkdXJsIikKIApAQCAtMTE0LDYgKzEyMywxMiBAQAogCiBpZiB0ZXN0IC1uICIkdGFnX25hbWUiCiB0aGVuCisJaWYgdGVzdCAteiAiJHJlZiIgfHwgdGVzdCAiJHJlZiIgIT0gInRhZ3MvJHRhZ19uYW1lIgorCXRoZW4KKwkJZWNobyA+JjIgIndhcm46IFlvdSBsb2NhbGx5IGhhdmUgJHRhZ19uYW1lIGJ1dCBpdCBkb2VzIG5vdCAoeWV0KSIKKwkJZWNobyA+JjIgIndhcm46IGFwcGVhciB0byBiZSBhdCAkdXJsIgorCQllY2hvID4mMiAid2FybjogRG8geW91IHdhbnQgdG8gcHVzaCBpdCB0aGVyZSwgcGVyaGFwcz8iCisJZmkKIAlnaXQgY2F0LWZpbGUgdGFnICIkdGFnX25hbWUiIHwKIAlzZWQgLW4gLWUgJzEsL14kL2QnIC1lICcvXi0tLS0tQkVHSU4gUEdQIC9xJyAtZSBwCiAJZWNobwpkaWZmIC0tZ2l0IGEvZ2l0LXNlbmQtZW1haWwucGVybCBiL2dpdC1zZW5kLWVtYWlsLnBlcmwKaW5kZXggZWYzMGM1NS4uY2Q5MzQ5MCAxMDA3NTUKLS0tIGEvZ2l0LXNlbmQtZW1haWwucGVybAorKysgYi9naXQtc2VuZC1lbWFpbC5wZXJsCkBAIC01NCw4ICs1NCw5IEBACiAgICAgLS1bbm8tXWJjYyAgICAgICAgICAgICAgPHN0cj4gICogRW1haWwgQmNjOgogICAgIC0tc3ViamVjdCAgICAgICAgICAgICAgIDxzdHI+ICAqIEVtYWlsICJTdWJqZWN0OiIKICAgICAtLWluLXJlcGx5LXRvICAgICAgICAgICA8c3RyPiAgKiBFbWFpbCAiSW4tUmVwbHktVG86IgotICAgIC0tYW5ub3RhdGUgICAgICAgICAgICAgICAgICAgICAqIFJldmlldyBlYWNoIHBhdGNoIHRoYXQgd2lsbCBiZSBzZW50IGluIGFuIGVkaXRvci4KKyAgICAtLVtuby1dYW5ub3RhdGUgICAgICAgICAgICAgICAgKiBSZXZpZXcgZWFjaCBwYXRjaCB0aGF0IHdpbGwgYmUgc2VudCBpbiBhbiBlZGl0b3IuCiAgICAgLS1jb21wb3NlICAgICAgICAgICAgICAgICAgICAgICogT3BlbiBhbiBlZGl0b3IgZm9yIGludHJvZHVjdGlvbi4KKyAgICAtLWNvbXBvc2UtZW5jb2RpbmcgICAgICA8c3RyPiAgKiBFbmNvZGluZyB0byBhc3N1bWUgZm9yIGludHJvZHVjdGlvbi4KICAgICAtLThiaXQtZW5jb2RpbmcgICAgICAgICA8c3RyPiAgKiBFbmNvZGluZyB0byBhc3N1bWUgOGJpdCBtYWlscyBpZiB1bmRlY2xhcmVkCiAKICAgU2VuZGluZzoKQEAgLTE5OCw2ICsxOTksNyBAQAogbXkgKCR2YWxpZGF0ZSwgJGNvbmZpcm0pOwogbXkgKEBzdXBwcmVzc19jYyk7CiBteSAoJGF1dG9fOGJpdF9lbmNvZGluZyk7CitteSAoJGNvbXBvc2VfZW5jb2RpbmcpOwogCiBteSAoJGRlYnVnX25ldF9zbXRwKSA9IDA7CQkjIE5ldDo6U01UUCwgc2VlIHNlbmRfbWVzc2FnZSgpCiAKQEAgLTIxMCw3ICsyMTIsOCBAQAogICAgICJzaWduZWRvZmZieWNjIiA9PiBbXCRzaWduZWRfb2ZmX2J5X2NjLCB1bmRlZl0sCiAgICAgInNpZ25lZG9mZmNjIiA9PiBbXCRzaWduZWRfb2ZmX2J5X2NjLCB1bmRlZl0sICAgICAgIyBEZXByZWNhdGVkCiAgICAgInZhbGlkYXRlIiA9PiBbXCR2YWxpZGF0ZSwgMV0sCi0gICAgIm11bHRpZWRpdCIgPT4gW1wkbXVsdGllZGl0LCB1bmRlZl0KKyAgICAibXVsdGllZGl0IiA9PiBbXCRtdWx0aWVkaXQsIHVuZGVmXSwKKyAgICAiYW5ub3RhdGUiID0+IFtcJGFubm90YXRlLCB1bmRlZl0KICk7CiAKIG15ICVjb25maWdfc2V0dGluZ3MgPSAoCkBAIC0yMzEsNiArMjM0LDcgQEAKICAgICAiY29uZmlybSIgICA9PiBcJGNvbmZpcm0sCiAgICAgImZyb20iID0+IFwkc2VuZGVyLAogICAgICJhc3N1bWU4Yml0ZW5jb2RpbmciID0+IFwkYXV0b184Yml0X2VuY29kaW5nLAorICAgICJjb21wb3NlZW5jb2RpbmciID0+IFwkY29tcG9zZV9lbmNvZGluZywKICk7CiAKIG15ICVjb25maWdfcGF0aF9zZXR0aW5ncyA9ICgKQEAgLTMwMSw3ICszMDUsNyBAQAogCQkgICAgInNtdHAtZGVidWc6aSIgPT4gXCRkZWJ1Z19uZXRfc210cCwKIAkJICAgICJzbXRwLWRvbWFpbjpzIiA9PiBcJHNtdHBfZG9tYWluLAogCQkgICAgImlkZW50aXR5PXMiID0+IFwkaWRlbnRpdHksCi0JCSAgICAiYW5ub3RhdGUiID0+IFwkYW5ub3RhdGUsCisJCSAgICAiYW5ub3RhdGUhIiA9PiBcJGFubm90YXRlLAogCQkgICAgImNvbXBvc2UiID0+IFwkY29tcG9zZSwKIAkJICAgICJxdWlldCIgPT4gXCRxdWlldCwKIAkJICAgICJjYy1jbWQ9cyIgPT4gXCRjY19jbWQsCkBAIC0zMTUsNiArMzE5LDcgQEAKIAkJICAgICJ2YWxpZGF0ZSEiID0+IFwkdmFsaWRhdGUsCiAJCSAgICAiZm9ybWF0LXBhdGNoISIgPT4gXCRmb3JtYXRfcGF0Y2gsCiAJCSAgICAiOGJpdC1lbmNvZGluZz1zIiA9PiBcJGF1dG9fOGJpdF9lbmNvZGluZywKKwkJICAgICJjb21wb3NlLWVuY29kaW5nPXMiID0+IFwkY29tcG9zZV9lbmNvZGluZywKIAkJICAgICJmb3JjZSIgPT4gXCRmb3JjZSwKIAkgKTsKIApAQCAtNTA4LDggKzUxMyw5IEBACiAKICgkc2VuZGVyKSA9IGV4cGFuZF9hbGlhc2VzKCRzZW5kZXIpIGlmIGRlZmluZWQgJHNlbmRlcjsKIAotIyByZXR1cm5zIDEgaWYgdGhlIGNvbmZsaWN0IG11c3QgYmUgc29sdmVkIHVzaW5nIGl0IGFzIGEgZm9ybWF0LXBhdGNoIGFyZ3VtZW50Ci1zdWIgY2hlY2tfZmlsZV9yZXZfY29uZmxpY3QoJCkgeworIyBpc19mb3JtYXRfcGF0Y2hfYXJnKCRmKSByZXR1cm5zIDAgaWYgJGYgbmFtZXMgYSBwYXRjaCwgb3IgMSBpZgorIyAkZiBpcyBhIHJldmlzaW9uIGxpc3Qgc3BlY2lmaWNhdGlvbiB0byBiZSBwYXNzZWQgdG8gZm9ybWF0LXBhdGNoLgorc3ViIGlzX2Zvcm1hdF9wYXRjaF9hcmcgewogCXJldHVybiB1bmxlc3MgJHJlcG87CiAJbXkgJGYgPSBzaGlmdDsKIAl0cnkgewpAQCAtNTI1LDYgKzUzMSw3IEBACiAgICAgKiBHaXZpbmcgLS1mb3JtYXQtcGF0Y2ggb3B0aW9uIGlmIHlvdSBtZWFuIGEgcmFuZ2UuCiBFT0YKIAl9IGNhdGNoIEdpdDo6RXJyb3I6OkNvbW1hbmQgd2l0aCB7CisJCSMgTm90IGEgdmFsaWQgcmV2aXNpb24uICBUcmVhdCBpdCBhcyBhIGZpbGVuYW1lLgogCQlyZXR1cm4gMDsKIAl9CiB9CkBAIC01MzYsMTQgKzU0MywxNCBAQAogCWlmICgkZiBlcSAiLS0iKSB7CiAJCXB1c2ggQHJldl9saXN0X29wdHMsICItLSIsIEBBUkdWOwogCQlAQVJHViA9ICgpOwotCX0gZWxzaWYgKC1kICRmIGFuZCAhY2hlY2tfZmlsZV9yZXZfY29uZmxpY3QoJGYpKSB7CisJfSBlbHNpZiAoLWQgJGYgYW5kICFpc19mb3JtYXRfcGF0Y2hfYXJnKCRmKSkgewogCQlvcGVuZGlyIG15ICRkaCwgJGYKIAkJCW9yIGRpZSAiRmFpbGVkIHRvIG9wZW5kaXIgJGY6ICQhIjsKIAogCQlwdXNoIEBmaWxlcywgZ3JlcCB7IC1mICRfIH0gbWFwIHsgY2F0ZmlsZSgkZiwgJF8pIH0KIAkJCQlzb3J0IHJlYWRkaXIgJGRoOwogCQljbG9zZWRpciAkZGg7Ci0JfSBlbHNpZiAoKC1mICRmIG9yIC1wICRmKSBhbmQgIWNoZWNrX2ZpbGVfcmV2X2NvbmZsaWN0KCRmKSkgeworCX0gZWxzaWYgKCgtZiAkZiBvciAtcCAkZikgYW5kICFpc19mb3JtYXRfcGF0Y2hfYXJnKCRmKSkgewogCQlwdXNoIEBmaWxlcywgJGY7CiAJfSBlbHNlIHsKIAkJcHVzaCBAcmV2X2xpc3Rfb3B0cywgJGY7CkBAIC02MzIsNiArNjM5LDkgQEAKIAlteSAkbmVlZF84Yml0X2N0ZSA9IGZpbGVfaGFzX25vbmFzY2lpKCRjb21wb3NlX2ZpbGVuYW1lKTsKIAlteSAkaW5fYm9keSA9IDA7CiAJbXkgJHN1bW1hcnlfZW1wdHkgPSAxOworCWlmICghZGVmaW5lZCAkY29tcG9zZV9lbmNvZGluZykgeworCQkkY29tcG9zZV9lbmNvZGluZyA9ICJVVEYtOCI7CisJfQogCXdoaWxlKDwkYz4pIHsKIAkJbmV4dCBpZiBtL15HSVQ6LzsKIAkJaWYgKCRpbl9ib2R5KSB7CkBAIC02NDEsNyArNjUxLDcgQEAKIAkJCWlmICgkbmVlZF84Yml0X2N0ZSkgewogCQkJCXByaW50ICRjMiAiTUlNRS1WZXJzaW9uOiAxLjBcbiIsCiAJCQkJCSAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyAiLAotCQkJCQkgICAiY2hhcnNldD1VVEYtOFxuIiwKKwkJCQkJICAgImNoYXJzZXQ9JGNvbXBvc2VfZW5jb2RpbmdcbiIsCiAJCQkJCSAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIjsKIAkJCX0KIAkJfSBlbHNpZiAoL15NSU1FLVZlcnNpb246L2kpIHsKQEAgLTY1MCw5ICs2NjAsNyBAQAogCQkJJGluaXRpYWxfc3ViamVjdCA9ICQxOwogCQkJbXkgJHN1YmplY3QgPSAkaW5pdGlhbF9zdWJqZWN0OwogCQkJJF8gPSAiU3ViamVjdDogIiAuCi0JCQkJKCRzdWJqZWN0ID1+IC9bXls6YXNjaWk6XV0vID8KLQkJCQkgcXVvdGVfcmZjMjA0Nygkc3ViamVjdCkgOgotCQkJCSAkc3ViamVjdCkgLgorCQkJCXF1b3RlX3N1YmplY3QoJHN1YmplY3QsICRjb21wb3NlX2VuY29kaW5nKSAuCiAJCQkJIlxuIjsKIAkJfSBlbHNpZiAoL15Jbi1SZXBseS1UbzpccyooLispXHMqJC9pKSB7CiAJCQkkaW5pdGlhbF9yZXBseV90byA9ICQxOwpAQCAtNjgxLDYgKzY4OSw3IEBACiAJbXkgKCRwcm9tcHQsICVhcmcpID0gQF87CiAJbXkgJHZhbGlkX3JlID0gJGFyZ3t2YWxpZF9yZX07CiAJbXkgJGRlZmF1bHQgPSAkYXJne2RlZmF1bHR9OworCW15ICRjb25maXJtX29ubHkgPSAkYXJne2NvbmZpcm1fb25seX07CiAJbXkgJHJlc3A7CiAJbXkgJGkgPSAwOwogCXJldHVybiBkZWZpbmVkICRkZWZhdWx0ID8gJGRlZmF1bHQgOiB1bmRlZgpAQCAtNjk4LDggKzcwNywxNCBAQAogCQlpZiAoIWRlZmluZWQgJHZhbGlkX3JlIG9yICRyZXNwID1+IC8kdmFsaWRfcmUvKSB7CiAJCQlyZXR1cm4gJHJlc3A7CiAJCX0KKwkJaWYgKCRjb25maXJtX29ubHkpIHsKKwkJCW15ICR5ZXNubyA9ICR0ZXJtLT5yZWFkbGluZSgiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVzZSA8JHJlc3A+IFt5L05dPyAiKTsKKwkJCWlmIChkZWZpbmVkICR5ZXNubyAmJiAkeWVzbm8gPX4gL3kvaSkgeworCQkJCXJldHVybiAkcmVzcDsKKwkJCX0KKwkJfQogCX0KLQlyZXR1cm4gdW5kZWY7CisJcmV0dXJuOwogfQogCiBteSAlYnJva2VuX2VuY29kaW5nOwpAQCAtNzQxLDE3ICs3NTYsMjAgQEAKIAl9CiB9CiAKLW15ICRwcm9tcHRpbmcgPSAwOwogaWYgKCFkZWZpbmVkICRzZW5kZXIpIHsKIAkkc2VuZGVyID0gJHJlcG9hdXRob3IgfHwgJHJlcG9jb21taXR0ZXIgfHwgJyc7Ci0JJHNlbmRlciA9IGFzaygiV2hvIHNob3VsZCB0aGUgZW1haWxzIGFwcGVhciB0byBiZSBmcm9tPyBbJHNlbmRlcl0gIiwKLQkgICAgICAgICAgICAgIGRlZmF1bHQgPT4gJHNlbmRlcik7Ci0JcHJpbnQgIkVtYWlscyB3aWxsIGJlIHNlbnQgZnJvbTogIiwgJHNlbmRlciwgIlxuIjsKLQkkcHJvbXB0aW5nKys7CiB9CiAKKyMgJHNlbmRlciBjb3VsZCBiZSBhbiBhbHJlYWR5IHNhbml0aXplZCBhZGRyZXNzCisjIChlLmcuIHNlbmRlbWFpbC5mcm9tIGNvdWxkIGJlIG1hbnVhbGx5IHNhbml0aXplZCBieSB1c2VyKS4KKyMgQnV0IGl0J3MgYSBuby1vcCB0byBydW4gc2FuaXRpemVfYWRkcmVzcyBvbiBhbiBhbHJlYWR5IHNhbml0aXplZCBhZGRyZXNzLgorJHNlbmRlciA9IHNhbml0aXplX2FkZHJlc3MoJHNlbmRlcik7CisKK215ICRwcm9tcHRpbmcgPSAwOwogaWYgKCFAaW5pdGlhbF90byAmJiAhZGVmaW5lZCAkdG9fY21kKSB7Ci0JbXkgJHRvID0gYXNrKCJXaG8gc2hvdWxkIHRoZSBlbWFpbHMgYmUgc2VudCB0bz8gIik7CisJbXkgJHRvID0gYXNrKCJXaG8gc2hvdWxkIHRoZSBlbWFpbHMgYmUgc2VudCB0byAoaWYgYW55KT8gIiwKKwkJICAgICBkZWZhdWx0ID0+ICIiLAorCQkgICAgIHZhbGlkX3JlID0+IHFyL1xALipcLi8sIGNvbmZpcm1fb25seSA9PiAxKTsKIAlwdXNoIEBpbml0aWFsX3RvLCBwYXJzZV9hZGRyZXNzX2xpbmUoJHRvKSBpZiBkZWZpbmVkICR0bzsgIyBzYW5pdGl6ZWQvdmFsaWRhdGVkIGxhdGVyCiAJJHByb21wdGluZysrOwogfQpAQCAtNzcxLDEzICs3ODksMTcgQEAKIH0KIAogQGluaXRpYWxfdG8gPSBleHBhbmRfYWxpYXNlcyhAaW5pdGlhbF90byk7Ci1AaW5pdGlhbF90byA9IChtYXAgeyBzYW5pdGl6ZV9hZGRyZXNzKCRfKSB9IEBpbml0aWFsX3RvKTsKK0Bpbml0aWFsX3RvID0gdmFsaWRhdGVfYWRkcmVzc19saXN0KHNhbml0aXplX2FkZHJlc3NfbGlzdChAaW5pdGlhbF90bykpOwogQGluaXRpYWxfY2MgPSBleHBhbmRfYWxpYXNlcyhAaW5pdGlhbF9jYyk7CitAaW5pdGlhbF9jYyA9IHZhbGlkYXRlX2FkZHJlc3NfbGlzdChzYW5pdGl6ZV9hZGRyZXNzX2xpc3QoQGluaXRpYWxfY2MpKTsKIEBiY2NsaXN0ID0gZXhwYW5kX2FsaWFzZXMoQGJjY2xpc3QpOworQGJjY2xpc3QgPSB2YWxpZGF0ZV9hZGRyZXNzX2xpc3Qoc2FuaXRpemVfYWRkcmVzc19saXN0KEBiY2NsaXN0KSk7CiAKIGlmICgkdGhyZWFkICYmICFkZWZpbmVkICRpbml0aWFsX3JlcGx5X3RvICYmICRwcm9tcHRpbmcpIHsKIAkkaW5pdGlhbF9yZXBseV90byA9IGFzaygKLQkJIk1lc3NhZ2UtSUQgdG8gYmUgdXNlZCBhcyBJbi1SZXBseS1UbyBmb3IgdGhlIGZpcnN0IGVtYWlsPyAiKTsKKwkJIk1lc3NhZ2UtSUQgdG8gYmUgdXNlZCBhcyBJbi1SZXBseS1UbyBmb3IgdGhlIGZpcnN0IGVtYWlsIChpZiBhbnkpPyAiLAorCQlkZWZhdWx0ID0+ICIiLAorCQl2YWxpZF9yZSA9PiBxci9cQC4qXC4vLCBjb25maXJtX29ubHkgPT4gMSk7CiB9CiBpZiAoZGVmaW5lZCAkaW5pdGlhbF9yZXBseV90bykgewogCSRpbml0aWFsX3JlcGx5X3RvID1+IHMvXlxzKjw/Ly87CkBAIC04MTQsMTIgKzgzNiw0NSBAQAogCSRhZGRyZXNzID1+IHMvXlxzKjwoLiopPlxzKiQvJDEvOwogCWlmICgkaGF2ZV9lbWFpbF92YWxpZCkgewogCQlyZXR1cm4gc2NhbGFyIEVtYWlsOjpWYWxpZC0+YWRkcmVzcygkYWRkcmVzcyk7Ci0JfSBlbHNlIHsKLQkJIyBsZXNzIHJvYnVzdC9jb3JyZWN0IHRoYW4gdGhlIG1vbnN0ZXIgcmVnZXhwIGluIEVtYWlsOjpWYWxpZCwKLQkJIyBidXQgc3RpbGwgZG9lcyBhIDk5JSBqb2IsIGFuZCBvbmUgbGVzcyBkZXBlbmRlbmN5Ci0JCSRhZGRyZXNzID1+IC8oJGxvY2FsX3BhcnRfcmVnZXhwXEAkZG9tYWluX3JlZ2V4cCkvOwotCQlyZXR1cm4gJDE7CiAJfQorCisJIyBsZXNzIHJvYnVzdC9jb3JyZWN0IHRoYW4gdGhlIG1vbnN0ZXIgcmVnZXhwIGluIEVtYWlsOjpWYWxpZCwKKwkjIGJ1dCBzdGlsbCBkb2VzIGEgOTklIGpvYiwgYW5kIG9uZSBsZXNzIGRlcGVuZGVuY3kKKwlyZXR1cm4gJDEgaWYgJGFkZHJlc3MgPX4gLygkbG9jYWxfcGFydF9yZWdleHBcQCRkb21haW5fcmVnZXhwKS87CisJcmV0dXJuOworfQorCitzdWIgZXh0cmFjdF92YWxpZF9hZGRyZXNzX29yX2RpZSB7CisJbXkgJGFkZHJlc3MgPSBzaGlmdDsKKwkkYWRkcmVzcyA9IGV4dHJhY3RfdmFsaWRfYWRkcmVzcygkYWRkcmVzcyk7CisJZGllICJlcnJvcjogdW5hYmxlIHRvIGV4dHJhY3QgYSB2YWxpZCBhZGRyZXNzIGZyb206ICRhZGRyZXNzXG4iCisJCWlmICEkYWRkcmVzczsKKwlyZXR1cm4gJGFkZHJlc3M7Cit9CisKK3N1YiB2YWxpZGF0ZV9hZGRyZXNzIHsKKwlteSAkYWRkcmVzcyA9IHNoaWZ0OworCXdoaWxlICghZXh0cmFjdF92YWxpZF9hZGRyZXNzKCRhZGRyZXNzKSkgeworCQlwcmludCBTVERFUlIgImVycm9yOiB1bmFibGUgdG8gZXh0cmFjdCBhIHZhbGlkIGFkZHJlc3MgZnJvbTogJGFkZHJlc3NcbiI7CisJCSRfID0gYXNrKCJXaGF0IHRvIGRvIHdpdGggdGhpcyBhZGRyZXNzPyAoW3FddWl0fFtkXXJvcHxbZV1kaXQpOiAiLAorCQkJdmFsaWRfcmUgPT4gcXIvXig/OnF1aXR8cXxkcm9wfGR8ZWRpdHxlKS9pLAorCQkJZGVmYXVsdCA9PiAncScpOworCQlpZiAoL15kL2kpIHsKKwkJCXJldHVybiB1bmRlZjsKKwkJfSBlbHNpZiAoL15xL2kpIHsKKwkJCWNsZWFudXBfY29tcG9zZV9maWxlcygpOworCQkJZXhpdCgwKTsKKwkJfQorCQkkYWRkcmVzcyA9IGFzaygiV2hvIHNob3VsZCB0aGUgZW1haWwgYmUgc2VudCB0byAoaWYgYW55KT8gIiwKKwkJCWRlZmF1bHQgPT4gIiIsCisJCQl2YWxpZF9yZSA9PiBxci9cQC4qXC4vLCBjb25maXJtX29ubHkgPT4gMSk7CisJfQorCXJldHVybiAkYWRkcmVzczsKK30KKworc3ViIHZhbGlkYXRlX2FkZHJlc3NfbGlzdCB7CisJcmV0dXJuIChncmVwIHsgZGVmaW5lZCAkXyB9CisJCW1hcCB7IHZhbGlkYXRlX2FkZHJlc3MoJF8pIH0gQF8pOwogfQogCiAjIFVzdWFsbHkgZG9uJ3QgbmVlZCB0byBjaGFuZ2UgYW55dGhpbmcgYmVsb3cgaGVyZS4KQEAgLTg2MiwxMSArOTE3LDEzIEBACiBzdWIgdW5xdW90ZV9yZmMyMDQ3IHsKIAlsb2NhbCAoJF8pID0gQF87CiAJbXkgJGVuY29kaW5nOwotCWlmIChzLz1cPyhbXj9dKylcP3FcPyguKilcPz0vJDIvZykgeworCXN7PVw/KFteP10rKVw/cVw/KC4qPylcPz19ewogCQkkZW5jb2RpbmcgPSAkMTsKLQkJcy9fLyAvZzsKLQkJcy89KFswLTlBLUZdezJ9KS9jaHIoaGV4KCQxKSkvZWc7Ci0JfQorCQlteSAkZSA9ICQyOworCQkkZSA9fiBzL18vIC9nOworCQkkZSA9fiBzLz0oWzAtOUEtRl17Mn0pL2NocihoZXgoJDEpKS9lZzsKKwkJJGU7CisJfWVnOwogCXJldHVybiB3YW50YXJyYXkgPyAoJF8sICRlbmNvZGluZykgOiAkXzsKIH0KIApAQCAtODg2LDkgKzk0MywyOSBAQAogCSRzID1+IG0vXig/OiJbWzphc2NpaTpdXSoifD1cPyR0b2tlblw/JHRva2VuXD8kZW5jb2RlZF90ZXh0XD89KSQvbzsKIH0KIAorc3ViIHN1YmplY3RfbmVlZHNfcmZjMjA0N19xdW90aW5nIHsKKwlteSAkcyA9IHNoaWZ0OworCisJcmV0dXJuICgkcyA9fiAvW15bOmFzY2lpOl1dLykgfHwgKCRzID1+IC89XD8vKTsKK30KKworc3ViIHF1b3RlX3N1YmplY3QgeworCWxvY2FsICRzdWJqZWN0ID0gc2hpZnQ7CisJbXkgJGVuY29kaW5nID0gc2hpZnQgfHwgJ1VURi04JzsKKworCWlmIChzdWJqZWN0X25lZWRzX3JmYzIwNDdfcXVvdGluZygkc3ViamVjdCkpIHsKKwkJcmV0dXJuIHF1b3RlX3JmYzIwNDcoJHN1YmplY3QsICRlbmNvZGluZyk7CisJfQorCXJldHVybiAkc3ViamVjdDsKK30KKwogIyB1c2UgdGhlIHNpbXBsZXN0IHF1b3RpbmcgYmVpbmcgYWJsZSB0byBoYW5kbGUgdGhlIHJlY2lwaWVudAogc3ViIHNhbml0aXplX2FkZHJlc3MgewogCW15ICgkcmVjaXBpZW50KSA9IEBfOworCisJIyByZW1vdmUgZ2FyYmFnZSBhZnRlciBlbWFpbCBhZGRyZXNzCisJJHJlY2lwaWVudCA9fiBzLyguKj4pLiokLyQxLzsKKwogCW15ICgkcmVjaXBpZW50X25hbWUsICRyZWNpcGllbnRfYWRkcikgPSAoJHJlY2lwaWVudCA9fiAvXiguKj8pXHMqKDwuKikvKTsKIAogCWlmIChub3QgJHJlY2lwaWVudF9uYW1lKSB7CkBAIC05MTYsNiArOTkzLDEwIEBACiAKIH0KIAorc3ViIHNhbml0aXplX2FkZHJlc3NfbGlzdCB7CisJcmV0dXJuIChtYXAgeyBzYW5pdGl6ZV9hZGRyZXNzKCRfKSB9IEBfKTsKK30KKwogIyBSZXR1cm5zIHRoZSBsb2NhbCBGdWxseSBRdWFsaWZpZWQgRG9tYWluIE5hbWUgKEZRRE4pIGlmIGF2YWlsYWJsZS4KICMKICMgVGlnaHRseSBjb25maWd1cmVkIE1UQWEgcmVxdWlyZSB0aGF0IGEgY2FsbGVyIHNlbmRzIGEgcmVhbCBETlMKQEAgLTk3MiwyMCArMTA1Myw2MCBAQAogCXJldHVybiBtYWlsZG9tYWluX25ldCgpIHx8IG1haWxkb21haW5fbXRhKCkgfHwgJ2xvY2FsaG9zdC5sb2NhbGRvbWFpbic7CiB9CiAKK3N1YiBzbXRwX2hvc3Rfc3RyaW5nIHsKKwlpZiAoZGVmaW5lZCAkc210cF9zZXJ2ZXJfcG9ydCkgeworCQlyZXR1cm4gIiRzbXRwX3NlcnZlcjokc210cF9zZXJ2ZXJfcG9ydCI7CisJfSBlbHNlIHsKKwkJcmV0dXJuICRzbXRwX3NlcnZlcjsKKwl9Cit9CisKKyMgUmV0dXJucyAxIGlmIGF1dGhlbnRpY2F0aW9uIHN1Y2NlZWRlZCBvciB3YXMgbm90IG5lY2Vzc2FyeQorIyAoc210cF91c2VyIHdhcyBub3Qgc3BlY2lmaWVkKSwgYW5kIDAgb3RoZXJ3aXNlLgorCitzdWIgc210cF9hdXRoX21heWJlIHsKKwlpZiAoIWRlZmluZWQgJHNtdHBfYXV0aHVzZXIgfHwgJGF1dGgpIHsKKwkJcmV0dXJuIDE7CisJfQorCisJIyBXb3JrYXJvdW5kIEFVVEggUExBSU4vTE9HSU4gaW50ZXJhY3Rpb24gZGVmZWN0CisJIyB3aXRoIEF1dGhlbjo6U0FTTDo6Q3lydXMKKwlldmFsIHsKKwkJcmVxdWlyZSBBdXRoZW46OlNBU0w7CisJCUF1dGhlbjo6U0FTTC0+aW1wb3J0KHF3KFBlcmwpKTsKKwl9OworCisJIyBUT0RPOiBBdXRoZW50aWNhdGlvbiBtYXkgZmFpbCBub3QgYmVjYXVzZSBjcmVkZW50aWFscyB3ZXJlCisJIyBpbnZhbGlkIGJ1dCBkdWUgdG8gb3RoZXIgcmVhc29ucywgaW4gd2hpY2ggd2Ugc2hvdWxkIG5vdAorCSMgcmVqZWN0IGNyZWRlbnRpYWxzLgorCSRhdXRoID0gR2l0OjpjcmVkZW50aWFsKHsKKwkJJ3Byb3RvY29sJyA9PiAnc210cCcsCisJCSdob3N0JyA9PiBzbXRwX2hvc3Rfc3RyaW5nKCksCisJCSd1c2VybmFtZScgPT4gJHNtdHBfYXV0aHVzZXIsCisJCSMgaWYgdGhlcmUncyBubyBwYXNzd29yZCwgImdpdCBjcmVkZW50aWFsIGZpbGwiIHdpbGwKKwkJIyBnaXZlIHVzIG9uZSwgb3RoZXJ3aXNlIGl0J2xsIGp1c3QgcGFzcyB0aGlzIG9uZS4KKwkJJ3Bhc3N3b3JkJyA9PiAkc210cF9hdXRocGFzcworCX0sIHN1YiB7CisJCW15ICRjcmVkID0gc2hpZnQ7CisJCXJldHVybiAhISRzbXRwLT5hdXRoKCRjcmVkLT57J3VzZXJuYW1lJ30sICRjcmVkLT57J3Bhc3N3b3JkJ30pOworCX0pOworCisJcmV0dXJuICRhdXRoOworfQorCiAjIFJldHVybnMgMSBpZiB0aGUgbWVzc2FnZSB3YXMgc2VudCwgYW5kIDAgb3RoZXJ3aXNlLgogIyBJbiBhY3R1YWxpdHksIHRoZSB3aG9sZSBwcm9ncmFtIGRpZXMgd2hlbiB0aGVyZQogIyBpcyBhbiBlcnJvciBzZW5kaW5nIGEgbWVzc2FnZS4KIAogc3ViIHNlbmRfbWVzc2FnZSB7CiAJbXkgQHJlY2lwaWVudHMgPSB1bmlxdWVfZW1haWxfbGlzdChAdG8pOwotCUBjYyA9IChncmVwIHsgbXkgJGNjID0gZXh0cmFjdF92YWxpZF9hZGRyZXNzKCRfKTsKKwlAY2MgPSAoZ3JlcCB7IG15ICRjYyA9IGV4dHJhY3RfdmFsaWRfYWRkcmVzc19vcl9kaWUoJF8pOwogCQkgICAgICBub3QgZ3JlcCB7ICRjYyBlcSAkXyB8fCAkXyA9fiAvPFxRJHtjY31cRT4kLyB9IEByZWNpcGllbnRzCiAJCSAgICB9Ci0JICAgICAgIG1hcCB7IHNhbml0aXplX2FkZHJlc3MoJF8pIH0KIAkgICAgICAgQGNjKTsKIAlteSAkdG8gPSBqb2luICgiLFxuXHQiLCBAcmVjaXBpZW50cyk7CiAJQHJlY2lwaWVudHMgPSB1bmlxdWVfZW1haWxfbGlzdChAcmVjaXBpZW50cyxAY2MsQGJjY2xpc3QpOwotCUByZWNpcGllbnRzID0gKG1hcCB7IGV4dHJhY3RfdmFsaWRfYWRkcmVzcygkXykgfSBAcmVjaXBpZW50cyk7CisJQHJlY2lwaWVudHMgPSAobWFwIHsgZXh0cmFjdF92YWxpZF9hZGRyZXNzX29yX2RpZSgkXykgfSBAcmVjaXBpZW50cyk7CiAJbXkgJGRhdGUgPSBmb3JtYXRfMjgyMl90aW1lKCR0aW1lKyspOwogCW15ICRnaXR2ZXJzaW9uID0gJ0BAR0lUX1ZFUlNJT05AQCc7CiAJaWYgKCRnaXR2ZXJzaW9uID1+IG0vLi5HSVRfVkVSU0lPTi4uLykgewpAQCAtOTk3LDEwICsxMTE4LDkgQEAKIAlpZiAoJGNjIG5lICcnKSB7CiAJCSRjY2xpbmUgPSAiXG5DYzogJGNjIjsKIAl9Ci0JbXkgJHNhbml0aXplZF9zZW5kZXIgPSBzYW5pdGl6ZV9hZGRyZXNzKCRzZW5kZXIpOwogCW1ha2VfbWVzc2FnZV9pZCgpIHVubGVzcyBkZWZpbmVkKCRtZXNzYWdlX2lkKTsKIAotCW15ICRoZWFkZXIgPSAiRnJvbTogJHNhbml0aXplZF9zZW5kZXIKKwlteSAkaGVhZGVyID0gIkZyb206ICRzZW5kZXIKIFRvOiAkdG8ke2NjbGluZX0KIFN1YmplY3Q6ICRzdWJqZWN0CiBEYXRlOiAkZGF0ZQpAQCAtMTAxNyw3ICsxMTM3LDcgQEAKIAl9CiAKIAlteSBAc2VuZG1haWxfcGFyYW1ldGVycyA9ICgnLWknLCBAcmVjaXBpZW50cyk7Ci0JbXkgJHJhd19mcm9tID0gJHNhbml0aXplZF9zZW5kZXI7CisJbXkgJHJhd19mcm9tID0gJHNlbmRlcjsKIAlpZiAoZGVmaW5lZCAkZW52ZWxvcGVfc2VuZGVyICYmICRlbnZlbG9wZV9zZW5kZXIgbmUgImF1dG8iKSB7CiAJCSRyYXdfZnJvbSA9ICRlbnZlbG9wZV9zZW5kZXI7CiAJfQpAQCAtMTA4Myw5ICsxMjAzLDcgQEAKIAkJZWxzZSB7CiAJCQlyZXF1aXJlIE5ldDo6U01UUDsKIAkJCSRzbXRwX2RvbWFpbiB8fD0gbWFpbGRvbWFpbigpOwotCQkJJHNtdHAgfHw9IE5ldDo6U01UUC0+bmV3KChkZWZpbmVkICRzbXRwX3NlcnZlcl9wb3J0KQotCQkJCQkJID8gIiRzbXRwX3NlcnZlcjokc210cF9zZXJ2ZXJfcG9ydCIKLQkJCQkJCSA6ICRzbXRwX3NlcnZlciwKKwkJCSRzbXRwIHx8PSBOZXQ6OlNNVFAtPm5ldyhzbXRwX2hvc3Rfc3RyaW5nKCksCiAJCQkJCQkgSGVsbG8gPT4gJHNtdHBfZG9tYWluLAogCQkJCQkJIERlYnVnID0+ICRkZWJ1Z19uZXRfc210cCk7CiAJCQlpZiAoJHNtdHBfZW5jcnlwdGlvbiBlcSAndGxzJyAmJiAkc210cCkgewpAQCAtMTExMywzMSArMTIzMSw3IEBACiAJCQkgICAgZGVmaW5lZCAkc210cF9zZXJ2ZXJfcG9ydCA/ICIgcG9ydD0kc210cF9zZXJ2ZXJfcG9ydCIgOiAiIjsKIAkJfQogCi0JCWlmIChkZWZpbmVkICRzbXRwX2F1dGh1c2VyKSB7Ci0JCQkjIFdvcmthcm91bmQgQVVUSCBQTEFJTi9MT0dJTiBpbnRlcmFjdGlvbiBkZWZlY3QKLQkJCSMgd2l0aCBBdXRoZW46OlNBU0w6OkN5cnVzCi0JCQlldmFsIHsKLQkJCQlyZXF1aXJlIEF1dGhlbjo6U0FTTDsKLQkJCQlBdXRoZW46OlNBU0wtPmltcG9ydChxdyhQZXJsKSk7Ci0JCQl9OwotCi0JCQlpZiAoIWRlZmluZWQgJHNtdHBfYXV0aHBhc3MpIHsKLQotCQkJCXN5c3RlbSAic3R0eSAtZWNobyI7Ci0KLQkJCQlkbyB7Ci0JCQkJCXByaW50ICJQYXNzd29yZDogIjsKLQkJCQkJJF8gPSA8U1RESU4+OwotCQkJCQlwcmludCAiXG4iOwotCQkJCX0gd2hpbGUgKCFkZWZpbmVkICRfKTsKLQotCQkJCWNob21wKCRzbXRwX2F1dGhwYXNzID0gJF8pOwotCi0JCQkJc3lzdGVtICJzdHR5IGVjaG8iOwotCQkJfQotCi0JCQkkYXV0aCB8fD0gJHNtdHAtPmF1dGgoICRzbXRwX2F1dGh1c2VyLCAkc210cF9hdXRocGFzcyApIG9yIGRpZSAkc210cC0+bWVzc2FnZTsKLQkJfQorCQlzbXRwX2F1dGhfbWF5YmUgb3IgZGllICRzbXRwLT5tZXNzYWdlOwogCiAJCSRzbXRwLT5tYWlsKCAkcmF3X2Zyb20gKSBvciBkaWUgJHNtdHAtPm1lc3NhZ2U7CiAJCSRzbXRwLT50byggQHJlY2lwaWVudHMgKSBvciBkaWUgJHNtdHAtPm1lc3NhZ2U7CkBAIC0xMTgwLDYgKzEyNzQsNyBAQAogCW9wZW4gbXkgJGZoLCAiPCIsICR0IG9yIGRpZSAiY2FuJ3Qgb3BlbiBmaWxlICR0IjsKIAogCW15ICRhdXRob3IgPSB1bmRlZjsKKwlteSAkc2F1dGhvciA9IHVuZGVmOwogCW15ICRhdXRob3JfZW5jb2Rpbmc7CiAJbXkgJGhhc19jb250ZW50X3R5cGU7CiAJbXkgJGJvZHlfZW5jb2Rpbmc7CkBAIC0xMjEzLDI3ICsxMzA4LDMwIEBACiAJCX0KIAogCQlpZiAoZGVmaW5lZCAkaW5wdXRfZm9ybWF0ICYmICRpbnB1dF9mb3JtYXQgZXEgJ21ib3gnKSB7Ci0JCQlpZiAoL15TdWJqZWN0OlxzKyguKikkLykgeworCQkJaWYgKC9eU3ViamVjdDpccysoLiopJC9pKSB7CiAJCQkJJHN1YmplY3QgPSAkMTsKIAkJCX0KLQkJCWVsc2lmICgvXkZyb206XHMrKC4qKSQvKSB7CisJCQllbHNpZiAoL15Gcm9tOlxzKyguKikkL2kpIHsKIAkJCQkoJGF1dGhvciwgJGF1dGhvcl9lbmNvZGluZykgPSB1bnF1b3RlX3JmYzIwNDcoJDEpOworCQkJCSRzYXV0aG9yID0gc2FuaXRpemVfYWRkcmVzcygkYXV0aG9yKTsKIAkJCQluZXh0IGlmICRzdXBwcmVzc19jY3snYXV0aG9yJ307Ci0JCQkJbmV4dCBpZiAkc3VwcHJlc3NfY2N7J3NlbGYnfSBhbmQgJGF1dGhvciBlcSAkc2VuZGVyOworCQkJCW5leHQgaWYgJHN1cHByZXNzX2NjeydzZWxmJ30gYW5kICRzYXV0aG9yIGVxICRzZW5kZXI7CiAJCQkJcHJpbnRmKCIobWJveCkgQWRkaW5nIGNjOiAlcyBmcm9tIGxpbmUgJyVzJ1xuIiwKIAkJCQkJJDEsICRfKSB1bmxlc3MgJHF1aWV0OwogCQkJCXB1c2ggQGNjLCAkMTsKIAkJCX0KLQkJCWVsc2lmICgvXlRvOlxzKyguKikkLykgeworCQkJZWxzaWYgKC9eVG86XHMrKC4qKSQvaSkgewogCQkJCWZvcmVhY2ggbXkgJGFkZHIgKHBhcnNlX2FkZHJlc3NfbGluZSgkMSkpIHsKIAkJCQkJcHJpbnRmKCIobWJveCkgQWRkaW5nIHRvOiAlcyBmcm9tIGxpbmUgJyVzJ1xuIiwKIAkJCQkJCSRhZGRyLCAkXykgdW5sZXNzICRxdWlldDsKLQkJCQkJcHVzaCBAdG8sIHNhbml0aXplX2FkZHJlc3MoJGFkZHIpOworCQkJCQlwdXNoIEB0bywgJGFkZHI7CiAJCQkJfQogCQkJfQotCQkJZWxzaWYgKC9eQ2M6XHMrKC4qKSQvKSB7CisJCQllbHNpZiAoL15DYzpccysoLiopJC9pKSB7CiAJCQkJZm9yZWFjaCBteSAkYWRkciAocGFyc2VfYWRkcmVzc19saW5lKCQxKSkgewotCQkJCQlpZiAodW5xdW90ZV9yZmMyMDQ3KCRhZGRyKSBlcSAkc2VuZGVyKSB7CisJCQkJCW15ICRxYWRkciA9IHVucXVvdGVfcmZjMjA0NygkYWRkcik7CisJCQkJCW15ICRzYWRkciA9IHNhbml0aXplX2FkZHJlc3MoJHFhZGRyKTsKKwkJCQkJaWYgKCRzYWRkciBlcSAkc2VuZGVyKSB7CiAJCQkJCQluZXh0IGlmICgkc3VwcHJlc3NfY2N7J3NlbGYnfSk7CiAJCQkJCX0gZWxzZSB7CiAJCQkJCQluZXh0IGlmICgkc3VwcHJlc3NfY2N7J2NjJ30pOwpAQCAtMTI1Myw3ICsxMzUxLDcgQEAKIAkJCWVsc2lmICgvXk1lc3NhZ2UtSWQ6ICguKikvaSkgewogCQkJCSRtZXNzYWdlX2lkID0gJDE7CiAJCQl9Ci0JCQllbHNpZiAoIS9eRGF0ZTpccy8gJiYgL15bLUEtWmEtel0rOlxzK1xTLykgeworCQkJZWxzaWYgKCEvXkRhdGU6XHMvaSAmJiAvXlstQS1aYS16XSs6XHMrXFMvKSB7CiAJCQkJcHVzaCBAeGgsICRfOwogCQkJfQogCkBAIC0xMjgwLDcgKzEzNzgsOCBAQAogCQkJY2hvbXA7CiAJCQlteSAoJHdoYXQsICRjKSA9ICgkMSwgJDIpOwogCQkJY2hvbXAgJGM7Ci0JCQlpZiAoJGMgZXEgJHNlbmRlcikgeworCQkJbXkgJHNjID0gc2FuaXRpemVfYWRkcmVzcygkYyk7CisJCQlpZiAoJHNjIGVxICRzZW5kZXIpIHsKIAkJCQluZXh0IGlmICgkc3VwcHJlc3NfY2N7J3NlbGYnfSk7CiAJCQl9IGVsc2UgewogCQkJCW5leHQgaWYgJHN1cHByZXNzX2Njeydzb2InfSBhbmQgJHdoYXQgPX4gL1NpZ25lZC1vZmYtYnkvaTsKQEAgLTEzMDcsMTAgKzE0MDYsMTAgQEAKIAl9CiAKIAlpZiAoJGJyb2tlbl9lbmNvZGluZ3skdH0gJiYgIWlzX3JmYzIwNDdfcXVvdGVkKCRzdWJqZWN0KSkgewotCQkkc3ViamVjdCA9IHF1b3RlX3JmYzIwNDcoJHN1YmplY3QsICRhdXRvXzhiaXRfZW5jb2RpbmcpOworCQkkc3ViamVjdCA9IHF1b3RlX3N1YmplY3QoJHN1YmplY3QsICRhdXRvXzhiaXRfZW5jb2RpbmcpOwogCX0KIAotCWlmIChkZWZpbmVkICRhdXRob3IgYW5kICRhdXRob3IgbmUgJHNlbmRlcikgeworCWlmIChkZWZpbmVkICRzYXV0aG9yIGFuZCAkc2F1dGhvciBuZSAkc2VuZGVyKSB7CiAJCSRtZXNzYWdlID0gIkZyb206ICRhdXRob3JcblxuJG1lc3NhZ2UiOwogCQlpZiAoZGVmaW5lZCAkYXV0aG9yX2VuY29kaW5nKSB7CiAJCQlpZiAoJGhhc19jb250ZW50X3R5cGUpIHsKQEAgLTEzMzcsNiArMTQzNiw5IEBACiAJCSgkY29uZmlybSA9fiAvXig/OmF1dG98Y29tcG9zZSkkLyAmJiAkY29tcG9zZSAmJiAkbWVzc2FnZV9udW0gPT0gMSkpOwogCSRuZWVkc19jb25maXJtID0gImluZm9ybSIgaWYgKCRuZWVkc19jb25maXJtICYmICRjb25maXJtX3VuY29uZmlndXJlZCAmJiBAY2MpOwogCisJQHRvID0gdmFsaWRhdGVfYWRkcmVzc19saXN0KHNhbml0aXplX2FkZHJlc3NfbGlzdChAdG8pKTsKKwlAY2MgPSB2YWxpZGF0ZV9hZGRyZXNzX2xpc3Qoc2FuaXRpemVfYWRkcmVzc19saXN0KEBjYykpOworCiAJQHRvID0gKEBpbml0aWFsX3RvLCBAdG8pOwogCUBjYyA9IChAaW5pdGlhbF9jYywgQGNjKTsKIApAQCAtMTM2MSwxNSArMTQ2MywxNCBAQAogc3ViIHJlY2lwaWVudHNfY21kIHsKIAlteSAoJHByZWZpeCwgJHdoYXQsICRjbWQsICRmaWxlKSA9IEBfOwogCi0JbXkgJHNhbml0aXplZF9zZW5kZXIgPSBzYW5pdGl6ZV9hZGRyZXNzKCRzZW5kZXIpOwogCW15IEBhZGRyZXNzZXMgPSAoKTsKLQlvcGVuIG15ICRmaCwgIiRjbWQgXFEkZmlsZVxFIHwiCisJb3BlbiBteSAkZmgsICItfCIsICIkY21kIFxRJGZpbGVcRSIKIAkgICAgb3IgZGllICIoJHByZWZpeCkgQ291bGQgbm90IGV4ZWN1dGUgJyRjbWQnIjsKIAl3aGlsZSAobXkgJGFkZHJlc3MgPSA8JGZoPikgewogCQkkYWRkcmVzcyA9fiBzL15ccyovL2c7CiAJCSRhZGRyZXNzID1+IHMvXHMqJC8vZzsKIAkJJGFkZHJlc3MgPSBzYW5pdGl6ZV9hZGRyZXNzKCRhZGRyZXNzKTsKLQkJbmV4dCBpZiAoJGFkZHJlc3MgZXEgJHNhbml0aXplZF9zZW5kZXIgYW5kICRzdXBwcmVzc19mcm9tKTsKKwkJbmV4dCBpZiAoJGFkZHJlc3MgZXEgJHNlbmRlciBhbmQgJHN1cHByZXNzX2NjeydzZWxmJ30pOwogCQlwdXNoIEBhZGRyZXNzZXMsICRhZGRyZXNzOwogCQlwcmludGYoIigkcHJlZml4KSBBZGRpbmcgJXM6ICVzIGZyb206ICclcydcbiIsCiAJCSAgICAgICAkd2hhdCwgJGFkZHJlc3MsICRjbWQpIHVubGVzcyAkcXVpZXQ7CkBAIC0xMzkyLDE0ICsxNDkzLDEwIEBACiAJbXkgQGVtYWlsczsKIAogCWZvcmVhY2ggbXkgJGVudHJ5IChAXykgewotCQlpZiAobXkgJGNsZWFuID0gZXh0cmFjdF92YWxpZF9hZGRyZXNzKCRlbnRyeSkpIHsKLQkJCSRzZWVueyRjbGVhbn0gfHw9IDA7Ci0JCQluZXh0IGlmICRzZWVueyRjbGVhbn0rKzsKLQkJCXB1c2ggQGVtYWlscywgJGVudHJ5OwotCQl9IGVsc2UgewotCQkJcHJpbnQgU1RERVJSICJXOiB1bmFibGUgdG8gZXh0cmFjdCBhIHZhbGlkIGFkZHJlc3MiLAotCQkJCQkiIGZyb206ICRlbnRyeVxuIjsKLQkJfQorCQlteSAkY2xlYW4gPSBleHRyYWN0X3ZhbGlkX2FkZHJlc3Nfb3JfZGllKCRlbnRyeSk7CisJCSRzZWVueyRjbGVhbn0gfHw9IDA7CisJCW5leHQgaWYgJHNlZW57JGNsZWFufSsrOworCQlwdXNoIEBlbWFpbHMsICRlbnRyeTsKIAl9CiAJcmV0dXJuIEBlbWFpbHM7CiB9CkBAIC0xNDEzLDcgKzE1MTAsNyBAQAogCQkJcmV0dXJuICIkLjogcGF0Y2ggY29udGFpbnMgYSBsaW5lIGxvbmdlciB0aGFuIDk5OCBjaGFyYWN0ZXJzIjsKIAkJfQogCX0KLQlyZXR1cm4gdW5kZWY7CisJcmV0dXJuOwogfQogCiBzdWIgZmlsZV9oYXNfbm9uYXNjaWkgewpkaWZmIC0tZ2l0IGEvZ2l0LXNoLXNldHVwLnNoIGIvZ2l0LXNoLXNldHVwLnNoCmluZGV4IDc3MGE4NmUuLjJmNzgzNTkgMTAwNjQ0Ci0tLSBhL2dpdC1zaC1zZXR1cC5zaAorKysgYi9naXQtc2gtc2V0dXAuc2gKQEAgLTksOCArOSwxNSBAQAogIyB5b3Ugd291bGQgY2F1c2UgImNkIiB0byBiZSB0YWtlbiB0byB1bmV4cGVjdGVkIHBsYWNlcy4gIElmIHlvdQogIyBsaWtlIENEUEFUSCwgZGVmaW5lIGl0IGZvciB5b3VyIGludGVyYWN0aXZlIHNoZWxsIHNlc3Npb25zIHdpdGhvdXQKICMgZXhwb3J0aW5nIGl0LgorIyBCdXQgd2UgcHJvdGVjdCBvdXJzZWx2ZXMgZnJvbSBzdWNoIGEgdXNlciBtaXN0YWtlIG5ldmVydGhlbGVzcy4KIHVuc2V0IENEUEFUSAogCisjIFNpbWlsYXJseSBmb3IgSUZTLCBidXQgc29tZSBzaGVsbHMgKGUuZy4gRnJlZUJTRCA3LjIpIGFyZSBidWdneSBhbmQKKyMgZG8gbm90IGVxdWF0ZSBhbiB1bnNldCBJRlMgd2l0aCBJRlMgd2l0aCB0aGUgZGVmYXVsdCwgc28gaGVyZSBpcworIyBhbiBleHBsaWNpdCBTUCBIVCBMRi4KK0lGUz0nIAkKKycKKwogZ2l0X2Jyb2tlbl9wYXRoX2ZpeCAoKSB7CiAJY2FzZSAiOiRQQVRIOiIgaW4KIAkqOiQxOiopIDogb2sgOzsKQEAgLTc3LDE0ICs4NCwxNCBAQAogZWxzZQogCWRhc2hsZXNzPSQoYmFzZW5hbWUgIiQwIiB8IHNlZCAtZSAncy8tLyAvJykKIAl1c2FnZSgpIHsKLQkJZGllICJVc2FnZTogJGRhc2hsZXNzICRVU0FHRSIKKwkJZGllICJ1c2FnZTogJGRhc2hsZXNzICRVU0FHRSIKIAl9CiAKIAlpZiBbIC16ICIkTE9OR19VU0FHRSIgXQogCXRoZW4KLQkJTE9OR19VU0FHRT0iVXNhZ2U6ICRkYXNobGVzcyAkVVNBR0UiCisJCUxPTkdfVVNBR0U9InVzYWdlOiAkZGFzaGxlc3MgJFVTQUdFIgogCWVsc2UKLQkJTE9OR19VU0FHRT0iVXNhZ2U6ICRkYXNobGVzcyAkVVNBR0UKKwkJTE9OR19VU0FHRT0idXNhZ2U6ICRkYXNobGVzcyAkVVNBR0UKIAogJExPTkdfVVNBR0UiCiAJZmkKQEAgLTE4NywyOCArMTk0LDUyIEBACiAJZmkKIH0KIAorIyBHZW5lcmF0ZSBhIHNlZCBzY3JpcHQgdG8gcGFyc2UgaWRlbnRpdGllcyBmcm9tIGEgY29tbWl0LgorIworIyBSZWFkcyB0aGUgY29tbWl0IGZyb20gc3RkaW4sIHdoaWNoIHNob3VsZCBiZSBpbiByYXcgZm9ybWF0IChlLmcuLCBmcm9tCisjIGNhdC1maWxlIG9yICItLXByZXR0eT1yYXciKS4KKyMKKyMgVGhlIGZpcnN0IGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgaWRlbnQgbGluZSB0byBwYXJzZSAoZS5nLiwgImF1dGhvciIpLCBhbmQKKyMgdGhlIHNlY29uZCBzcGVjaWZpZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHB1dCBpdCBpbiAoZS5nLiwgIkFVVEhPUiIKKyMgZm9yICJHSVRfQVVUSE9SXyoiKS4gTXVsdGlwbGUgcGFpcnMgY2FuIGJlIGdpdmVuIHRvIHBhcnNlIGF1dGhvciBhbmQKKyMgY29tbWl0dGVyLgorcGlja19pZGVudF9zY3JpcHQgKCkgeworCXdoaWxlIHRlc3QgJCMgLWd0IDAKKwlkbworCQlsaWQ9JDE7IHNoaWZ0CisJCXVpZD0kMTsgc2hpZnQKKwkJcHJpbnRmICclcycgIgorCQkvXiRsaWQgL3sKKwkJCXMvJy8nXFxcXCcnL2cKKwkJCWgKKwkJCXMvXiRsaWQgIidcKFtePF0qXCkgPFtePl0qPiAuKiQvXDEvJyIKKwkJCXMvLiovR0lUXyR7dWlkfV9OQU1FPScmJy9wCisKKwkJCWcKKwkJCXMvXiRsaWQgIidbXjxdKiA8XChbXj5dKlwpPiAuKiQvXDEvJyIKKwkJCXMvLiovR0lUXyR7dWlkfV9FTUFJTD0nJicvcAorCisJCQlnCisJCQlzL14kbGlkICInW148XSogPFtePl0qPiBcKC4qXCkkL0BcMS8nIgorCQkJcy8uKi9HSVRfJHt1aWR9X0RBVEU9JyYnL3AKKwkJfQorCQkiCisJZG9uZQorCWVjaG8gJy9eJC9xJworfQorCisjIENyZWF0ZSBhIHBpY2stc2NyaXB0IGFzIGFib3ZlIGFuZCBmZWVkIGl0IHRvIHNlZC4gU3Rkb3V0IGlzIHN1aXRhYmxlIGZvcgorIyBmZWVkaW5nIHRvIGV2YWwuCitwYXJzZV9pZGVudF9mcm9tX2NvbW1pdCAoKSB7CisJTEFORz1DIExDX0FMTD1DIHNlZCAtbmUgIiQocGlja19pZGVudF9zY3JpcHQgIiRAIikiCit9CisKKyMgUGFyc2UgdGhlIGF1dGhvciBmcm9tIGEgY29tbWl0IGdpdmVuIGFzIGFuIGFyZ3VtZW50LiBTdGRvdXQgaXMgc3VpdGFibGUgZm9yCisjIGZlZWRpbmcgdG8gZXZhbCB0byBzZXQgdGhlIHVzdWFsIEdJVF8qIGlkZW50IHZhcmlhYmxlcy4KIGdldF9hdXRob3JfaWRlbnRfZnJvbV9jb21taXQgKCkgewotCXBpY2tfYXV0aG9yX3NjcmlwdD0nCi0JL15hdXRob3IgL3sKLQkJcy8nXCcnLydcJydcXCdcJ1wnJy9nCi0JCWgKLQkJcy9eYXV0aG9yIFwoW148XSpcKSA8W14+XSo+IC4qJC9cMS8KLQkJcy8uKi9HSVRfQVVUSE9SX05BTUU9J1wnJyYnXCcnL3AKLQotCQlnCi0JCXMvXmF1dGhvciBbXjxdKiA8XChbXj5dKlwpPiAuKiQvXDEvCi0JCXMvLiovR0lUX0FVVEhPUl9FTUFJTD0nXCcnJidcJycvcAotCi0JCWcKLQkJcy9eYXV0aG9yIFtePF0qIDxbXj5dKj4gXCguKlwpJC9AXDEvCi0JCXMvLiovR0lUX0FVVEhPUl9EQVRFPSdcJycmJ1wnJy9wCi0KLQkJcQotCX0KLQknCiAJZW5jb2Rpbmc9JChnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgfHwgZWNobyBVVEYtOCkKIAlnaXQgc2hvdyAtcyAtLXByZXR0eT1yYXcgLS1lbmNvZGluZz0iJGVuY29kaW5nIiAiJDEiIC0tIHwKLQlMQU5HPUMgTENfQUxMPUMgc2VkIC1uZSAiJHBpY2tfYXV0aG9yX3NjcmlwdCIKKwlwYXJzZV9pZGVudF9mcm9tX2NvbW1pdCBhdXRob3IgQVVUSE9SCiB9CiAKICMgQ2xlYXIgcmVwby1sb2NhbCBHSVRfKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIFVzZWZ1bCB3aGVuIHN3aXRjaGluZyB0bwpAQCAtMjE4LDYgKzI0OSwxOCBAQAogCXVuc2V0ICQoZ2l0IHJldi1wYXJzZSAtLWxvY2FsLWVudi12YXJzKQogfQogCisjIEdlbmVyYXRlIGEgdmlydHVhbCBiYXNlIGZpbGUgZm9yIGEgdHdvLWZpbGUgbWVyZ2UuIFVzZXMgZ2l0IGFwcGx5IHRvCisjIHJlbW92ZSBsaW5lcyBmcm9tICQxIHRoYXQgYXJlIG5vdCBpbiAkMiwgbGVhdmluZyBvbmx5IGNvbW1vbiBsaW5lcy4KK2NyZWF0ZV92aXJ0dWFsX2Jhc2UoKSB7CisJc3owPSQod2MgLWMgPCIkMSIpCisJQEBESUZGQEAgLXUgLUxhLyIkMSIgLUxiLyIkMSIgIiQxIiAiJDIiIHwgZ2l0IGFwcGx5IC0tbm8tYWRkCisJc3oxPSQod2MgLWMgPCIkMSIpCisKKwkjIElmIHdlIGRvIG5vdCBoYXZlIGVub3VnaCBjb21tb24gbWF0ZXJpYWwsIGl0IGlzIG5vdAorCSMgd29ydGggdHJ5aW5nIHR3by1maWxlIG1lcmdlIHVzaW5nIGNvbW1vbiBzdWJzZWN0aW9ucy4KKwlleHByICRzejAgXDwgJHN6MSBcKiAyID4vZGV2L251bGwgfHwgOiA+IiQxIgorfQorCiAKICMgUGxhdGZvcm0gc3BlY2lmaWMgdHdlYWtzIHRvIHdvcmsgYXJvdW5kIHNvbWUgY29tbWFuZHMKIGNhc2UgJCh1bmFtZSAtcykgaW4KZGlmZiAtLWdpdCBhL2dpdC1zdGFzaC5zaCBiL2dpdC1zdGFzaC5zaAppbmRleCA0ZTJjN2Y4Li5iYmVmZGY2IDEwMDc1NQotLS0gYS9naXQtc3Rhc2guc2gKKysrIGIvZ2l0LXN0YXNoLnNoCkBAIC00NjksNiArNDY5LDcgQEAKIAllbHNlCiAJCSMgTWVyZ2UgY29uZmxpY3Q7IGtlZXAgdGhlIGV4aXQgc3RhdHVzIGZyb20gbWVyZ2UtcmVjdXJzaXZlCiAJCXN0YXR1cz0kPworCQlnaXQgcmVyZXJlCiAJCWlmIHRlc3QgLW4gIiRJTkRFWF9PUFRJT04iCiAJCXRoZW4KIAkJCWdldHRleHRsbiAiSW5kZXggd2FzIG5vdCB1bnN0YXNoZWQuIiA+JjIKZGlmZiAtLWdpdCBhL2dpdC1zdWJtb2R1bGUuc2ggYi9naXQtc3VibW9kdWxlLnNoCmluZGV4IDVjNjFhZTIuLjQ4YmRmODQgMTAwNzU1Ci0tLSBhL2dpdC1zdWJtb2R1bGUuc2gKKysrIGIvZ2l0LXN1Ym1vZHVsZS5zaApAQCAtMSwxNyArMSwxOCBAQAogIyEvYmluL3NoCiAjCi0jIGdpdC1zdWJtb2R1bGVzLnNoOiBhZGQsIGluaXQsIHVwZGF0ZSBvciBsaXN0IGdpdCBzdWJtb2R1bGVzCisjIGdpdC1zdWJtb2R1bGUuc2g6IGFkZCwgaW5pdCwgdXBkYXRlIG9yIGxpc3QgZ2l0IHN1Ym1vZHVsZXMKICMKICMgQ29weXJpZ2h0IChjKSAyMDA3IExhcnMgSGplbWxpCiAKIGRhc2hsZXNzPSQoYmFzZW5hbWUgIiQwIiB8IHNlZCAtZSAncy8tLyAvJykKLVVTQUdFPSJbLS1xdWlldF0gYWRkIFstYiBicmFuY2hdIFstZnwtLWZvcmNlXSBbLS1yZWZlcmVuY2UgPHJlcG9zaXRvcnk+XSBbLS1dIDxyZXBvc2l0b3J5PiBbPHBhdGg+XQorVVNBR0U9IlstLXF1aWV0XSBhZGQgWy1iIDxicmFuY2g+XSBbLWZ8LS1mb3JjZV0gWy0tbmFtZSA8bmFtZT5dIFstLXJlZmVyZW5jZSA8cmVwb3NpdG9yeT5dIFstLV0gPHJlcG9zaXRvcnk+IFs8cGF0aD5dCiAgICBvcjogJGRhc2hsZXNzIFstLXF1aWV0XSBzdGF0dXMgWy0tY2FjaGVkXSBbLS1yZWN1cnNpdmVdIFstLV0gWzxwYXRoPi4uLl0KICAgIG9yOiAkZGFzaGxlc3MgWy0tcXVpZXRdIGluaXQgWy0tXSBbPHBhdGg+Li4uXQotICAgb3I6ICRkYXNobGVzcyBbLS1xdWlldF0gdXBkYXRlIFstLWluaXRdIFstTnwtLW5vLWZldGNoXSBbLWZ8LS1mb3JjZV0gWy0tcmViYXNlXSBbLS1yZWZlcmVuY2UgPHJlcG9zaXRvcnk+XSBbLS1tZXJnZV0gWy0tcmVjdXJzaXZlXSBbLS1dIFs8cGF0aD4uLi5dCisgICBvcjogJGRhc2hsZXNzIFstLXF1aWV0XSBkZWluaXQgWy1mfC0tZm9yY2VdIFstLV0gPHBhdGg+Li4uCisgICBvcjogJGRhc2hsZXNzIFstLXF1aWV0XSB1cGRhdGUgWy0taW5pdF0gWy0tcmVtb3RlXSBbLU58LS1uby1mZXRjaF0gWy1mfC0tZm9yY2VdIFstLXJlYmFzZV0gWy0tcmVmZXJlbmNlIDxyZXBvc2l0b3J5Pl0gWy0tbWVyZ2VdIFstLXJlY3Vyc2l2ZV0gWy0tXSBbPHBhdGg+Li4uXQogICAgb3I6ICRkYXNobGVzcyBbLS1xdWlldF0gc3VtbWFyeSBbLS1jYWNoZWR8LS1maWxlc10gWy0tc3VtbWFyeS1saW1pdCA8bj5dIFtjb21taXRdIFstLV0gWzxwYXRoPi4uLl0KICAgIG9yOiAkZGFzaGxlc3MgWy0tcXVpZXRdIGZvcmVhY2ggWy0tcmVjdXJzaXZlXSA8Y29tbWFuZD4KLSAgIG9yOiAkZGFzaGxlc3MgWy0tcXVpZXRdIHN5bmMgWy0tXSBbPHBhdGg+Li4uXSIKKyAgIG9yOiAkZGFzaGxlc3MgWy0tcXVpZXRdIHN5bmMgWy0tcmVjdXJzaXZlXSBbLS1dIFs8cGF0aD4uLi5dIgogT1BUSU9OU19TUEVDPQogLiBnaXQtc2gtc2V0dXAKIC4gZ2l0LXNoLWkxOG4KQEAgLTI2LDExICsyNywyOCBAQAogcmVjdXJzaXZlPQogaW5pdD0KIGZpbGVzPQorcmVtb3RlPQogbm9mZXRjaD0KIHVwZGF0ZT0KIHByZWZpeD0KK2N1c3RvbV9uYW1lPQogCi0jIFJlc29sdmUgcmVsYXRpdmUgdXJsIGJ5IGFwcGVuZGluZyB0byBwYXJlbnQncyB1cmwKKyMgVGhlIGZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMiBhcmd1bWVudHMuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUKKyMgVVJMIHRoYXQgbmF2aWdhdGVzIHRvIHRoZSBzdWJtb2R1bGUgb3JpZ2luIHJlcG8uIFdoZW4gcmVsYXRpdmUsIHRoaXMgVVJMCisjIGlzIHJlbGF0aXZlIHRvIHRoZSBzdXBlcnByb2plY3Qgb3JpZ2luIFVSTCByZXBvLiBUaGUgc2Vjb25kIHVwX3BhdGgKKyMgYXJndW1lbnQsIGlmIHNwZWNpZmllZCwgaXMgdGhlIHJlbGF0aXZlIHBhdGggdGhhdCBuYXZpZ2F0ZXMKKyMgZnJvbSB0aGUgc3VibW9kdWxlIHdvcmtpbmcgdHJlZSB0byB0aGUgc3VwZXJwcm9qZWN0IHdvcmtpbmcgdHJlZS4KKyMKKyMgVGhlIG91dHB1dCBvZiB0aGUgZnVuY3Rpb24gaXMgdGhlIG9yaWdpbiBVUkwgb2YgdGhlIHN1Ym1vZHVsZS4KKyMKKyMgVGhlIG91dHB1dCB3aWxsIGVpdGhlciBiZSBhbiBhYnNvbHV0ZSBVUkwgb3IgZmlsZXN5c3RlbSBwYXRoIChpZiB0aGUKKyMgc3VwZXJwcm9qZWN0IG9yaWdpbiBVUkwgaXMgYW4gYWJzb2x1dGUgVVJMIG9yIGZpbGVzeXN0ZW0gcGF0aCwKKyMgcmVzcGVjdGl2ZWx5KSBvciBhIHJlbGF0aXZlIGZpbGUgc3lzdGVtIHBhdGggKGlmIHRoZSBzdXBlcnByb2plY3QKKyMgb3JpZ2luIFVSTCBpcyBhIHJlbGF0aXZlIGZpbGUgc3lzdGVtIHBhdGgpLgorIworIyBXaGVuIHRoZSBvdXRwdXQgaXMgYSByZWxhdGl2ZSBmaWxlIHN5c3RlbSBwYXRoLCB0aGUgcGF0aCBpcyBlaXRoZXIKKyMgcmVsYXRpdmUgdG8gdGhlIHN1Ym1vZHVsZSB3b3JraW5nIHRyZWUsIGlmIHVwX3BhdGggaXMgc3BlY2lmaWVkLCBvciB0bworIyB0aGUgc3VwZXJwcm9qZWN0IHdvcmtpbmcgdHJlZSBvdGhlcndpc2UuCiByZXNvbHZlX3JlbGF0aXZlX3VybCAoKQogewogCXJlbW90ZT0kKGdldF9kZWZhdWx0X3JlbW90ZSkKQEAgLTM5LDYgKzU3LDIxIEBACiAJdXJsPSIkMSIKIAlyZW1vdGV1cmw9JHtyZW1vdGV1cmwlL30KIAlzZXA9LworCXVwX3BhdGg9IiQyIgorCisJY2FzZSAiJHJlbW90ZXVybCIgaW4KKwkqOip8LyopCisJCWlzX3JlbGF0aXZlPQorCQk7OworCS4vKnwuLi8qKQorCQlpc19yZWxhdGl2ZT10CisJCTs7CisJKikKKwkJaXNfcmVsYXRpdmU9dAorCQlyZW1vdGV1cmw9Ii4vJHJlbW90ZXVybCIKKwkJOzsKKwllc2FjCisKIAl3aGlsZSB0ZXN0IC1uICIkdXJsIgogCWRvCiAJCWNhc2UgIiR1cmwiIGluCkBAIC01Myw3ICs4NiwxMiBAQAogCQkJCXNlcD06CiAJCQkJOzsKIAkJCSopCi0JCQkJZGllICIkKGV2YWxfZ2V0dGV4dCAiY2Fubm90IHN0cmlwIG9uZSBjb21wb25lbnQgb2ZmIHVybCAnXCRyZW1vdGV1cmwnIikiCisJCQkJaWYgdGVzdCAteiAiJGlzX3JlbGF0aXZlIiB8fCB0ZXN0ICIuIiA9ICIkcmVtb3RldXJsIgorCQkJCXRoZW4KKwkJCQkJZGllICIkKGV2YWxfZ2V0dGV4dCAiY2Fubm90IHN0cmlwIG9uZSBjb21wb25lbnQgb2ZmIHVybCAnXCRyZW1vdGV1cmwnIikiCisJCQkJZWxzZQorCQkJCQlyZW1vdGV1cmw9LgorCQkJCWZpCiAJCQkJOzsKIAkJCWVzYWMKIAkJCTs7CkBAIC02NCw3ICsxMDIsOCBAQAogCQkJYnJlYWs7OwogCQllc2FjCiAJZG9uZQotCWVjaG8gIiRyZW1vdGV1cmwkc2VwJHt1cmwlL30iCisJcmVtb3RldXJsPSIkcmVtb3RldXJsJHNlcCR7dXJsJS99IgorCWVjaG8gIiR7aXNfcmVsYXRpdmU6KyR7dXBfcGF0aH19JHtyZW1vdGV1cmwjLi99IgogfQogCiAjCkBAIC03MywyNiArMTEyLDc1IEBACiAjCiBtb2R1bGVfbGlzdCgpCiB7Ci0JZ2l0IGxzLWZpbGVzIC0tZXJyb3ItdW5tYXRjaCAtLXN0YWdlIC0tICIkQCIgfAorCSgKKwkJZ2l0IGxzLWZpbGVzIC16IC0tZXJyb3ItdW5tYXRjaCAtLXN0YWdlIC0tICIkQCIgfHwKKwkJZWNobyAidW5tYXRjaGVkIHBhdGhzcGVjIGV4aXN0cyIKKwkpIHwKIAlwZXJsIC1lICcKIAlteSAldW5tZXJnZWQgPSAoKTsKIAlteSAoJG51bGxfc2hhMSkgPSAoIjAiIHggNDApOworCW15IEBvdXQgPSAoKTsKKwlteSAkdW5tYXRjaGVkID0gMDsKKwkkLyA9ICJcMCI7CiAJd2hpbGUgKDxTVERJTj4pIHsKKwkJaWYgKC9edW5tYXRjaGVkIHBhdGhzcGVjLykgeworCQkJJHVubWF0Y2hlZCA9IDE7CisJCQluZXh0OworCQl9CiAJCWNob21wOwogCQlteSAoJG1vZGUsICRzaGExLCAkc3RhZ2UsICRwYXRoKSA9CiAJCQkvXihbMC03XSspIChbMC05YS1mXXs0MH0pIChbMC0zXSlcdCguKikkLzsKIAkJbmV4dCB1bmxlc3MgJG1vZGUgZXEgIjE2MDAwMCI7CiAJCWlmICgkc3RhZ2UgbmUgIjAiKSB7CiAJCQlpZiAoISR1bm1lcmdlZHskcGF0aH0rKykgewotCQkJCXByaW50ICIkbW9kZSAkbnVsbF9zaGExIFVcdCRwYXRoXG4iOworCQkJCXB1c2ggQG91dCwgIiRtb2RlICRudWxsX3NoYTEgVVx0JHBhdGhcbiI7CiAJCQl9CiAJCQluZXh0OwogCQl9Ci0JCXByaW50ICIkX1xuIjsKKwkJcHVzaCBAb3V0LCAiJF9cbiI7CisJfQorCWlmICgkdW5tYXRjaGVkKSB7CisJCXByaW50ICIjdW5tYXRjaGVkXG4iOworCX0gZWxzZSB7CisJCXByaW50IGZvciAoQG91dCk7CiAJfQogCScKIH0KIAorZGllX2lmX3VubWF0Y2hlZCAoKQoreworCWlmIHRlc3QgIiQxIiA9ICIjdW5tYXRjaGVkIgorCXRoZW4KKwkJZXhpdCAxCisJZmkKK30KKworIworIyBQcmludCBhIHN1Ym1vZHVsZSBjb25maWd1cmF0aW9uIHNldHRpbmcKKyMKKyMgJDEgPSBzdWJtb2R1bGUgbmFtZQorIyAkMiA9IG9wdGlvbiBuYW1lCisjICQzID0gZGVmYXVsdCB2YWx1ZQorIworIyBDaGVja3MgaW4gdGhlIHVzdWFsIGdpdC1jb25maWcgcGxhY2VzIGZpcnN0IChmb3Igb3ZlcnJpZGVzKSwKKyMgb3RoZXJ3aXNlIGl0IGZhbGxzIGJhY2sgb24gLmdpdG1vZHVsZXMuICBUaGlzIGFsbG93cyB5b3UgdG8KKyMgZGlzdHJpYnV0ZSBwcm9qZWN0LXdpZGUgZGVmYXVsdHMgaW4gLmdpdG1vZHVsZXMsIHdoaWxlIHN0aWxsCisjIGN1c3RvbWl6aW5nIGluZGl2aWR1YWwgcmVwb3NpdG9yaWVzIGlmIG5lY2Vzc2FyeS4gIElmIHRoZSBvcHRpb24gaXMKKyMgbm90IGluIC5naXRtb2R1bGVzIGVpdGhlciwgcHJpbnQgYSBkZWZhdWx0IHZhbHVlLgorIworZ2V0X3N1Ym1vZHVsZV9jb25maWcgKCkgeworCW5hbWU9IiQxIgorCW9wdGlvbj0iJDIiCisJZGVmYXVsdD0iJDMiCisJdmFsdWU9JChnaXQgY29uZmlnIHN1Ym1vZHVsZS4iJG5hbWUiLiIkb3B0aW9uIikKKwlpZiB0ZXN0IC16ICIkdmFsdWUiCisJdGhlbgorCQl2YWx1ZT0kKGdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLiIkbmFtZSIuIiRvcHRpb24iKQorCWZpCisJcHJpbnRmICclcycgIiR7dmFsdWU6LSRkZWZhdWx0fSIKK30KKworCiAjCiAjIE1hcCBzdWJtb2R1bGUgcGF0aCB0byBzdWJtb2R1bGUgbmFtZQogIwpAQCAtMTIxLDggKzIwOSw5IEBACiBtb2R1bGVfY2xvbmUoKQogewogCXNtX3BhdGg9JDEKLQl1cmw9JDIKLQlyZWZlcmVuY2U9IiQzIgorCW5hbWU9JDIKKwl1cmw9JDMKKwlyZWZlcmVuY2U9IiQ0IgogCXF1aWV0PQogCWlmIHRlc3QgLW4gIiRHSVRfUVVJRVQiCiAJdGhlbgpAQCAtMTMxLDggKzIyMCw2IEBACiAKIAlnaXRkaXI9CiAJZ2l0ZGlyX2Jhc2U9Ci0JbmFtZT0kKG1vZHVsZV9uYW1lICIkc21fcGF0aCIgMj4vZGV2L251bGwpCi0JdGVzdCAtbiAiJG5hbWUiIHx8IG5hbWU9IiRzbV9wYXRoIgogCWJhc2VfbmFtZT0kKGRpcm5hbWUgIiRuYW1lIikKIAogCWdpdGRpcj0kKGdpdCByZXYtcGFyc2UgLS1naXQtZGlyKQpAQCAtMTQ1LDEzICsyMzIsMTggQEAKIAkJcm0gLWYgIiRnaXRkaXIvaW5kZXgiCiAJZWxzZQogCQlta2RpciAtcCAiJGdpdGRpcl9iYXNlIgotCQlnaXQgY2xvbmUgJHF1aWV0IC1uICR7cmVmZXJlbmNlOisiJHJlZmVyZW5jZSJ9IFwKLQkJCS0tc2VwYXJhdGUtZ2l0LWRpciAiJGdpdGRpciIgIiR1cmwiICIkc21fcGF0aCIgfHwKKwkJKAorCQkJY2xlYXJfbG9jYWxfZ2l0X2VudgorCQkJZ2l0IGNsb25lICRxdWlldCAtbiAke3JlZmVyZW5jZTorIiRyZWZlcmVuY2UifSBcCisJCQkJLS1zZXBhcmF0ZS1naXQtZGlyICIkZ2l0ZGlyIiAiJHVybCIgIiRzbV9wYXRoIgorCQkpIHx8CiAJCWRpZSAiJChldmFsX2dldHRleHQgIkNsb25lIG9mICdcJHVybCcgaW50byBzdWJtb2R1bGUgcGF0aCAnXCRzbV9wYXRoJyBmYWlsZWQiKSIKIAlmaQogCi0JYT0kKGNkICIkZ2l0ZGlyIiAmJiBwd2QpLwotCWI9JChjZCAiJHNtX3BhdGgiICYmIHB3ZCkvCisJIyBXZSBhbHJlYWR5IGFyZSBhdCB0aGUgcm9vdCBvZiB0aGUgd29yayB0cmVlIGJ1dCBjZF90b190b3BsZXZlbCB3aWxsCisJIyByZXNvbHZlIGFueSBzeW1saW5rcyB0aGF0IG1pZ2h0IGJlIHByZXNlbnQgaW4gJFBXRAorCWE9JChjZF90b190b3BsZXZlbCAmJiBjZCAiJGdpdGRpciIgJiYgcHdkKS8KKwliPSQoY2RfdG9fdG9wbGV2ZWwgJiYgY2QgIiRzbV9wYXRoIiAmJiBwd2QpLwogCSMgbm9ybWFsaXplIFdpbmRvd3Mtc3R5bGUgYWJzb2x1dGUgcGF0aHMgdG8gUE9TSVgtc3R5bGUgYWJzb2x1dGUgcGF0aHMKIAljYXNlICRhIGluIFthLXpBLVpdOi8qKSBhPS8ke2ElJToqfSR7YSMqOn0gOzsgZXNhYwogCWNhc2UgJGIgaW4gW2EtekEtWl06LyopIGI9LyR7YiUlOip9JHtiIyo6fSA7OyBlc2FjCkBAIC0xNzYsNiArMjY4LDExIEBACiAJKGNsZWFyX2xvY2FsX2dpdF9lbnY7IGNkICIkc21fcGF0aCIgJiYgR0lUX1dPUktfVFJFRT0uIGdpdCBjb25maWcgY29yZS53b3JrdHJlZSAiJHJlbC8kYiIpCiB9CiAKK2lzbnVtYmVyKCkKK3sKKwluPSQoKCQxICsgMCkpIDI+L2Rldi9udWxsICYmIHRlc3QgIiRuIiA9ICIkMSIKK30KKwogIwogIyBBZGQgYSBuZXcgc3VibW9kdWxlIHRvIHRoZSB3b3JraW5nIHRyZWUsIC5naXRtb2R1bGVzIGFuZCB0aGUgaW5kZXgKICMKQEAgLTIwNyw2ICszMDQsMTAgQEAKIAkJCTs7CiAJCS0tcmVmZXJlbmNlPSopCiAJCQlyZWZlcmVuY2U9IiQxIgorCQkJOzsKKwkJLS1uYW1lKQorCQkJY2FzZSAiJDIiIGluICcnKSB1c2FnZSA7OyBlc2FjCisJCQljdXN0b21fbmFtZT0kMgogCQkJc2hpZnQKIAkJCTs7CiAJCS0tKQpAQCAtMjczLDYgKzM3NCwxMyBAQAogCQlleGl0IDEKIAlmaQogCisJaWYgdGVzdCAtbiAiJGN1c3RvbV9uYW1lIgorCXRoZW4KKwkJc21fbmFtZT0iJGN1c3RvbV9uYW1lIgorCWVsc2UKKwkJc21fbmFtZT0iJHNtX3BhdGgiCisJZmkKKwogCSMgcGVyaGFwcyB0aGUgcGF0aCBleGlzdHMgYW5kIGlzIGFscmVhZHkgYSBnaXQgcmVwbywgZWxzZSBjbG9uZSBpdAogCWlmIHRlc3QgLWUgIiRzbV9wYXRoIgogCXRoZW4KQEAgLTI4NCw4ICszOTIsMjEgQEAKIAkJZmkKIAogCWVsc2UKLQotCQltb2R1bGVfY2xvbmUgIiRzbV9wYXRoIiAiJHJlYWxyZXBvIiAiJHJlZmVyZW5jZSIgfHwgZXhpdAorCQlpZiB0ZXN0IC1kICIuZ2l0L21vZHVsZXMvJHNtX25hbWUiCisJCXRoZW4KKwkJCWlmIHRlc3QgLXogIiRmb3JjZSIKKwkJCXRoZW4KKwkJCQllY2hvID4mMiAiJChldmFsX2dldHRleHQgIkEgZ2l0IGRpcmVjdG9yeSBmb3IgJ1wkc21fbmFtZScgaXMgZm91bmQgbG9jYWxseSB3aXRoIHJlbW90ZShzKToiKSIKKwkJCQlHSVRfRElSPSIuZ2l0L21vZHVsZXMvJHNtX25hbWUiIEdJVF9XT1JLX1RSRUU9LiBnaXQgcmVtb3RlIC12IHwgZ3JlcCAnKGZldGNoKScgfCBzZWQgLWUgcyxeLCIgICIsIC1lIHMsJyAoZmV0Y2gpJywsID4mMgorCQkJCWVjaG8gPiYyICIkKGV2YWxfZ2V0dGV4dCAiSWYgeW91IHdhbnQgdG8gcmV1c2UgdGhpcyBsb2NhbCBnaXQgZGlyZWN0b3J5IGluc3RlYWQgb2YgY2xvbmluZyBhZ2FpbiBmcm9tIikiCisJCQkJZWNobyA+JjIgIiAgJHJlYWxyZXBvIgorCQkJCWVjaG8gPiYyICIkKGV2YWxfZ2V0dGV4dCAidXNlIHRoZSAnLS1mb3JjZScgb3B0aW9uLiBJZiB0aGUgbG9jYWwgZ2l0IGRpcmVjdG9yeSBpcyBub3QgdGhlIGNvcnJlY3QgcmVwbyIpIgorCQkJCWRpZSAiJChldmFsX2dldHRleHQgIm9yIHlvdSBhcmUgdW5zdXJlIHdoYXQgdGhpcyBtZWFucyBjaG9vc2UgYW5vdGhlciBuYW1lIHdpdGggdGhlICctLW5hbWUnIG9wdGlvbi4iKSIKKwkJCWVsc2UKKwkJCQllY2hvICIkKGV2YWxfZ2V0dGV4dCAiUmVhY3RpdmF0aW5nIGxvY2FsIGdpdCBkaXJlY3RvcnkgZm9yIHN1Ym1vZHVsZSAnXCRzbV9uYW1lJy4iKSIKKwkJCWZpCisJCWZpCisJCW1vZHVsZV9jbG9uZSAiJHNtX3BhdGgiICIkc21fbmFtZSIgIiRyZWFscmVwbyIgIiRyZWZlcmVuY2UiIHx8IGV4aXQKIAkJKAogCQkJY2xlYXJfbG9jYWxfZ2l0X2VudgogCQkJY2QgIiRzbV9wYXRoIiAmJgpAQCAtMjk2LDEzICs0MTcsMTcgQEAKIAkJCWVzYWMKIAkJKSB8fCBkaWUgIiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gY2hlY2tvdXQgc3VibW9kdWxlICdcJHNtX3BhdGgnIikiCiAJZmkKLQlnaXQgY29uZmlnIHN1Ym1vZHVsZS4iJHNtX3BhdGgiLnVybCAiJHJlYWxyZXBvIgorCWdpdCBjb25maWcgc3VibW9kdWxlLiIkc21fbmFtZSIudXJsICIkcmVhbHJlcG8iCiAKIAlnaXQgYWRkICRmb3JjZSAiJHNtX3BhdGgiIHx8CiAJZGllICIkKGV2YWxfZ2V0dGV4dCAiRmFpbGVkIHRvIGFkZCBzdWJtb2R1bGUgJ1wkc21fcGF0aCciKSIKIAotCWdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLiIkc21fcGF0aCIucGF0aCAiJHNtX3BhdGgiICYmCi0JZ2l0IGNvbmZpZyAtZiAuZ2l0bW9kdWxlcyBzdWJtb2R1bGUuIiRzbV9wYXRoIi51cmwgIiRyZXBvIiAmJgorCWdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLiIkc21fbmFtZSIucGF0aCAiJHNtX3BhdGgiICYmCisJZ2l0IGNvbmZpZyAtZiAuZ2l0bW9kdWxlcyBzdWJtb2R1bGUuIiRzbV9uYW1lIi51cmwgIiRyZXBvIiAmJgorCWlmIHRlc3QgLW4gIiRicmFuY2giCisJdGhlbgorCQlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS4iJHNtX25hbWUiLmJyYW5jaCAiJGJyYW5jaCIKKwlmaSAmJgogCWdpdCBhZGQgLS1mb3JjZSAuZ2l0bW9kdWxlcyB8fAogCWRpZSAiJChldmFsX2dldHRleHQgIkZhaWxlZCB0byByZWdpc3RlciBzdWJtb2R1bGUgJ1wkc21fcGF0aCciKSIKIH0KQEAgLTM0NCw2ICs0NjksNyBAQAogCW1vZHVsZV9saXN0IHwKIAl3aGlsZSByZWFkIG1vZGUgc2hhMSBzdGFnZSBzbV9wYXRoCiAJZG8KKwkJZGllX2lmX3VubWF0Y2hlZCAiJG1vZGUiCiAJCWlmIHRlc3QgLWUgIiRzbV9wYXRoIi8uZ2l0CiAJCXRoZW4KIAkJCXNheSAiJChldmFsX2dldHRleHQgIkVudGVyaW5nICdcJHByZWZpeFwkc21fcGF0aCciKSIKQEAgLTM5Niw2ICs1MjIsNyBAQAogCW1vZHVsZV9saXN0ICIkQCIgfAogCXdoaWxlIHJlYWQgbW9kZSBzaGExIHN0YWdlIHNtX3BhdGgKIAlkbworCQlkaWVfaWZfdW5tYXRjaGVkICIkbW9kZSIKIAkJbmFtZT0kKG1vZHVsZV9uYW1lICIkc21fcGF0aCIpIHx8IGV4aXQKIAogCQkjIENvcHkgdXJsIHNldHRpbmcgd2hlbiBpdCBpcyBub3Qgc2V0IHlldApAQCAtNDI3LDYgKzU1NCw4MiBAQAogfQogCiAjCisjIFVucmVnaXN0ZXIgc3VibW9kdWxlcyBmcm9tIC5naXQvY29uZmlnIGFuZCByZW1vdmUgdGhlaXIgd29yayB0cmVlCisjCisjICRAID0gcmVxdWVzdGVkIHBhdGhzICh1c2UgJy4nIHRvIGRlaW5pdCBhbGwgc3VibW9kdWxlcykKKyMKK2NtZF9kZWluaXQoKQoreworCSMgcGFyc2UgJGFyZ3MgYWZ0ZXIgInN1Ym1vZHVsZSAuLi4gZGVpbml0Ii4KKwl3aGlsZSB0ZXN0ICQjIC1uZSAwCisJZG8KKwkJY2FzZSAiJDEiIGluCisJCS1mfC0tZm9yY2UpCisJCQlmb3JjZT0kMQorCQkJOzsKKwkJLXF8LS1xdWlldCkKKwkJCUdJVF9RVUlFVD0xCisJCQk7OworCQktLSkKKwkJCXNoaWZ0CisJCQlicmVhaworCQkJOzsKKwkJLSopCisJCQl1c2FnZQorCQkJOzsKKwkJKikKKwkJCWJyZWFrCisJCQk7OworCQllc2FjCisJCXNoaWZ0CisJZG9uZQorCisJaWYgdGVzdCAkIyA9IDAKKwl0aGVuCisJCWRpZSAiJChldmFsX2dldHRleHQgIlVzZSAnLicgaWYgeW91IHJlYWxseSB3YW50IHRvIGRlaW5pdGlhbGl6ZSBhbGwgc3VibW9kdWxlcyIpIgorCWZpCisKKwltb2R1bGVfbGlzdCAiJEAiIHwKKwl3aGlsZSByZWFkIG1vZGUgc2hhMSBzdGFnZSBzbV9wYXRoCisJZG8KKwkJZGllX2lmX3VubWF0Y2hlZCAiJG1vZGUiCisJCW5hbWU9JChtb2R1bGVfbmFtZSAiJHNtX3BhdGgiKSB8fCBleGl0CisKKwkJIyBSZW1vdmUgdGhlIHN1Ym1vZHVsZSB3b3JrIHRyZWUgKHVubGVzcyB0aGUgdXNlciBhbHJlYWR5IGRpZCBpdCkKKwkJaWYgdGVzdCAtZCAiJHNtX3BhdGgiCisJCXRoZW4KKwkJCSMgUHJvdGVjdCBzdWJtb2R1bGVzIGNvbnRhaW5pbmcgYSAuZ2l0IGRpcmVjdG9yeQorCQkJaWYgdGVzdCAtZCAiJHNtX3BhdGgvLmdpdCIKKwkJCXRoZW4KKwkJCQllY2hvID4mMiAiJChldmFsX2dldHRleHQgIlN1Ym1vZHVsZSB3b3JrIHRyZWUgJ1wkc21fcGF0aCcgY29udGFpbnMgYSAuZ2l0IGRpcmVjdG9yeSIpIgorCQkJCWRpZSAiJChldmFsX2dldHRleHQgIih1c2UgJ3JtIC1yZicgaWYgeW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSBpdCBpbmNsdWRpbmcgYWxsIG9mIGl0cyBoaXN0b3J5KSIpIgorCQkJZmkKKworCQkJaWYgdGVzdCAteiAiJGZvcmNlIgorCQkJdGhlbgorCQkJCWdpdCBybSAtcW4gIiRzbV9wYXRoIiB8fAorCQkJCWRpZSAiJChldmFsX2dldHRleHQgIlN1Ym1vZHVsZSB3b3JrIHRyZWUgJ1wkc21fcGF0aCcgY29udGFpbnMgbG9jYWwgbW9kaWZpY2F0aW9uczsgdXNlICctZicgdG8gZGlzY2FyZCB0aGVtIikiCisJCQlmaQorCQkJcm0gLXJmICIkc21fcGF0aCIgJiYKKwkJCXNheSAiJChldmFsX2dldHRleHQgIkNsZWFyZWQgZGlyZWN0b3J5ICdcJHNtX3BhdGgnIikiIHx8CisJCQlzYXkgIiQoZXZhbF9nZXR0ZXh0ICJDb3VsZCBub3QgcmVtb3ZlIHN1Ym1vZHVsZSB3b3JrIHRyZWUgJ1wkc21fcGF0aCciKSIKKwkJZmkKKworCQlta2RpciAiJHNtX3BhdGgiIHx8IHNheSAiJChldmFsX2dldHRleHQgIkNvdWxkIG5vdCBjcmVhdGUgZW1wdHkgc3VibW9kdWxlIGRpcmVjdG9yeSAnXCRzbV9wYXRoJyIpIgorCisJCSMgUmVtb3ZlIHRoZSAuZ2l0L2NvbmZpZyBlbnRyaWVzICh1bmxlc3MgdGhlIHVzZXIgYWxyZWFkeSBkaWQgaXQpCisJCWlmIHRlc3QgLW4gIiQoZ2l0IGNvbmZpZyAtLWdldC1yZWdleHAgc3VibW9kdWxlLiIkbmFtZVwuIikiCisJCXRoZW4KKwkJCSMgUmVtb3ZlIHRoZSB3aG9sZSBzZWN0aW9uIHNvIHdlIGhhdmUgYSBjbGVhbiBzdGF0ZSB3aGVuCisJCQkjIHRoZSB1c2VyIGxhdGVyIGRlY2lkZXMgdG8gaW5pdCB0aGlzIHN1Ym1vZHVsZSBhZ2FpbgorCQkJdXJsPSQoZ2l0IGNvbmZpZyBzdWJtb2R1bGUuIiRuYW1lIi51cmwpCisJCQlnaXQgY29uZmlnIC0tcmVtb3ZlLXNlY3Rpb24gc3VibW9kdWxlLiIkbmFtZSIgMj4vZGV2L251bGwgJiYKKwkJCXNheSAiJChldmFsX2dldHRleHQgIlN1Ym1vZHVsZSAnXCRuYW1lJyAoXCR1cmwpIHVucmVnaXN0ZXJlZCBmb3IgcGF0aCAnXCRzbV9wYXRoJyIpIgorCQlmaQorCWRvbmUKK30KKworIwogIyBVcGRhdGUgZWFjaCBzdWJtb2R1bGUgcGF0aCB0byBjb3JyZWN0IHJldmlzaW9uLCB1c2luZyBjbG9uZSBhbmQgY2hlY2tvdXQgYXMgbmVlZGVkCiAjCiAjICRAID0gcmVxdWVzdGVkIHBhdGhzIChkZWZhdWx0IHRvIGFsbCkKQEAgLTQ0NCw2ICs2NDcsOSBAQAogCQktaXwtLWluaXQpCiAJCQlpbml0PTEKIAkJCTs7CisJCS0tcmVtb3RlKQorCQkJcmVtb3RlPTEKKwkJCTs7CiAJCS1OfC0tbm8tZmV0Y2gpCiAJCQlub2ZldGNoPTEKIAkJCTs7CkBAIC00OTYsMTMgKzcwMiwxNSBAQAogCWVycj0KIAl3aGlsZSByZWFkIG1vZGUgc2hhMSBzdGFnZSBzbV9wYXRoCiAJZG8KKwkJZGllX2lmX3VubWF0Y2hlZCAiJG1vZGUiCiAJCWlmIHRlc3QgIiRzdGFnZSIgPSBVCiAJCXRoZW4KLQkJCWVjaG8gPiYyICJTa2lwcGluZyB1bm1lcmdlZCBzdWJtb2R1bGUgJHNtX3BhdGgiCisJCQllY2hvID4mMiAiU2tpcHBpbmcgdW5tZXJnZWQgc3VibW9kdWxlICRwcmVmaXgkc21fcGF0aCIKIAkJCWNvbnRpbnVlCiAJCWZpCiAJCW5hbWU9JChtb2R1bGVfbmFtZSAiJHNtX3BhdGgiKSB8fCBleGl0CiAJCXVybD0kKGdpdCBjb25maWcgc3VibW9kdWxlLiIkbmFtZSIudXJsKQorCQlicmFuY2g9JChnZXRfc3VibW9kdWxlX2NvbmZpZyAiJG5hbWUiIGJyYW5jaCBtYXN0ZXIpCiAJCWlmICEgdGVzdCAteiAiJHVwZGF0ZSIKIAkJdGhlbgogCQkJdXBkYXRlX21vZHVsZT0kdXBkYXRlCkBAIC01MTIsNyArNzIwLDcgQEAKIAogCQlpZiB0ZXN0ICIkdXBkYXRlX21vZHVsZSIgPSAibm9uZSIKIAkJdGhlbgotCQkJZWNobyAiU2tpcHBpbmcgc3VibW9kdWxlICckc21fcGF0aCciCisJCQllY2hvICJTa2lwcGluZyBzdWJtb2R1bGUgJyRwcmVmaXgkc21fcGF0aCciCiAJCQljb250aW51ZQogCQlmaQogCkBAIC01MjEsMjMgKzcyOSwzNyBAQAogCQkJIyBPbmx5IG1lbnRpb24gdW5pbml0aWFsaXplZCBzdWJtb2R1bGVzIHdoZW4gaXRzCiAJCQkjIHBhdGggaGF2ZSBiZWVuIHNwZWNpZmllZAogCQkJdGVzdCAiJCMiICE9ICIwIiAmJgotCQkJc2F5ICIkKGV2YWxfZ2V0dGV4dCAiU3VibW9kdWxlIHBhdGggJ1wkc21fcGF0aCcgbm90IGluaXRpYWxpemVkCisJCQlzYXkgIiQoZXZhbF9nZXR0ZXh0ICJTdWJtb2R1bGUgcGF0aCAnXCRwcmVmaXhcJHNtX3BhdGgnIG5vdCBpbml0aWFsaXplZAogTWF5YmUgeW91IHdhbnQgdG8gdXNlICd1cGRhdGUgLS1pbml0Jz8iKSIKIAkJCWNvbnRpbnVlCiAJCWZpCiAKIAkJaWYgISB0ZXN0IC1kICIkc21fcGF0aCIvLmdpdCAtbyAtZiAiJHNtX3BhdGgiLy5naXQKIAkJdGhlbgotCQkJbW9kdWxlX2Nsb25lICIkc21fcGF0aCIgIiR1cmwiICIkcmVmZXJlbmNlInx8IGV4aXQKKwkJCW1vZHVsZV9jbG9uZSAiJHNtX3BhdGgiICIkbmFtZSIgIiR1cmwiICIkcmVmZXJlbmNlIiB8fCBleGl0CiAJCQljbG9uZWRfbW9kdWxlcz0iJGNsb25lZF9tb2R1bGVzOyRuYW1lIgogCQkJc3Vic2hhMT0KIAkJZWxzZQogCQkJc3Vic2hhMT0kKGNsZWFyX2xvY2FsX2dpdF9lbnY7IGNkICIkc21fcGF0aCIgJiYKIAkJCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpIHx8Ci0JCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gZmluZCBjdXJyZW50IHJldmlzaW9uIGluIHN1Ym1vZHVsZSBwYXRoICdcJHNtX3BhdGgnIikiCisJCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gZmluZCBjdXJyZW50IHJldmlzaW9uIGluIHN1Ym1vZHVsZSBwYXRoICdcJHByZWZpeFwkc21fcGF0aCciKSIKIAkJZmkKIAotCQlpZiB0ZXN0ICIkc3Vic2hhMSIgIT0gIiRzaGExIgorCQlpZiB0ZXN0IC1uICIkcmVtb3RlIgorCQl0aGVuCisJCQlpZiB0ZXN0IC16ICIkbm9mZXRjaCIKKwkJCXRoZW4KKwkJCQkjIEZldGNoIHJlbW90ZSBiZWZvcmUgZGV0ZXJtaW5pbmcgdHJhY2tpbmcgJHNoYTEKKwkJCQkoY2xlYXJfbG9jYWxfZ2l0X2VudjsgY2QgIiRzbV9wYXRoIiAmJiBnaXQtZmV0Y2gpIHx8CisJCQkJZGllICIkKGV2YWxfZ2V0dGV4dCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICdcJHNtX3BhdGgnIikiCisJCQlmaQorCQkJcmVtb3RlX25hbWU9JChjbGVhcl9sb2NhbF9naXRfZW52OyBjZCAiJHNtX3BhdGgiICYmIGdldF9kZWZhdWx0X3JlbW90ZSkKKwkJCXNoYTE9JChjbGVhcl9sb2NhbF9naXRfZW52OyBjZCAiJHNtX3BhdGgiICYmCisJCQkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJHtyZW1vdGVfbmFtZX0vJHticmFuY2h9IikgfHwKKwkJCWRpZSAiJChldmFsX2dldHRleHQgIlVuYWJsZSB0byBmaW5kIGN1cnJlbnQgJHtyZW1vdGVfbmFtZX0vJHticmFuY2h9IHJldmlzaW9uIGluIHN1Ym1vZHVsZSBwYXRoICdcJHNtX3BhdGgnIikiCisJCWZpCisKKwkJaWYgdGVzdCAiJHN1YnNoYTEiICE9ICIkc2hhMSIgLW8gLW4gIiRmb3JjZSIKIAkJdGhlbgogCQkJc3ViZm9yY2U9JGZvcmNlCiAJCQkjIElmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBhIC1mIGZsYWcgYW5kIHRoZSBzdWJtb2R1bGUgaGFzIG5ldmVyIGJlZW4gY2hlY2tlZCBvdXQKQEAgLTU1Myw3ICs3NzUsNyBAQAogCQkJCShjbGVhcl9sb2NhbF9naXRfZW52OyBjZCAiJHNtX3BhdGgiICYmCiAJCQkJCSggKHJldj0kKGdpdCByZXYtbGlzdCAtbiAxICRzaGExIC0tbm90IC0tYWxsIDI+L2Rldi9udWxsKSAmJgogCQkJCQkgdGVzdCAteiAiJHJldiIpIHx8IGdpdC1mZXRjaCkpIHx8Ci0JCQkJZGllICIkKGV2YWxfZ2V0dGV4dCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICdcJHNtX3BhdGgnIikiCisJCQkJZGllICIkKGV2YWxfZ2V0dGV4dCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICdcJHByZWZpeFwkc21fcGF0aCciKSIKIAkJCWZpCiAKIAkJCSMgSXMgdGhpcyBzb21ldGhpbmcgd2UganVzdCBjbG9uZWQ/CkBAIC01NjcsMjAgKzc4OSwyMCBAQAogCQkJY2FzZSAiJHVwZGF0ZV9tb2R1bGUiIGluCiAJCQlyZWJhc2UpCiAJCQkJY29tbWFuZD0iZ2l0IHJlYmFzZSIKLQkJCQlkaWVfbXNnPSIkKGV2YWxfZ2V0dGV4dCAiVW5hYmxlIHRvIHJlYmFzZSAnXCRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnXCRzbV9wYXRoJyIpIgotCQkJCXNheV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJTdWJtb2R1bGUgcGF0aCAnXCRzbV9wYXRoJzogcmViYXNlZCBpbnRvICdcJHNoYTEnIikiCisJCQkJZGllX21zZz0iJChldmFsX2dldHRleHQgIlVuYWJsZSB0byByZWJhc2UgJ1wkc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJ1wkcHJlZml4XCRzbV9wYXRoJyIpIgorCQkJCXNheV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJTdWJtb2R1bGUgcGF0aCAnXCRwcmVmaXhcJHNtX3BhdGgnOiByZWJhc2VkIGludG8gJ1wkc2hhMSciKSIKIAkJCQltdXN0X2RpZV9vbl9mYWlsdXJlPXllcwogCQkJCTs7CiAJCQltZXJnZSkKIAkJCQljb21tYW5kPSJnaXQgbWVyZ2UiCi0JCQkJZGllX21zZz0iJChldmFsX2dldHRleHQgIlVuYWJsZSB0byBtZXJnZSAnXCRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnXCRzbV9wYXRoJyIpIgotCQkJCXNheV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJTdWJtb2R1bGUgcGF0aCAnXCRzbV9wYXRoJzogbWVyZ2VkIGluICdcJHNoYTEnIikiCisJCQkJZGllX21zZz0iJChldmFsX2dldHRleHQgIlVuYWJsZSB0byBtZXJnZSAnXCRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnXCRwcmVmaXhcJHNtX3BhdGgnIikiCisJCQkJc2F5X21zZz0iJChldmFsX2dldHRleHQgIlN1Ym1vZHVsZSBwYXRoICdcJHByZWZpeFwkc21fcGF0aCc6IG1lcmdlZCBpbiAnXCRzaGExJyIpIgogCQkJCW11c3RfZGllX29uX2ZhaWx1cmU9eWVzCiAJCQkJOzsKIAkJCSopCiAJCQkJY29tbWFuZD0iZ2l0IGNoZWNrb3V0ICRzdWJmb3JjZSAtcSIKLQkJCQlkaWVfbXNnPSIkKGV2YWxfZ2V0dGV4dCAiVW5hYmxlIHRvIGNoZWNrb3V0ICdcJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICdcJHNtX3BhdGgnIikiCi0JCQkJc2F5X21zZz0iJChldmFsX2dldHRleHQgIlN1Ym1vZHVsZSBwYXRoICdcJHNtX3BhdGgnOiBjaGVja2VkIG91dCAnXCRzaGExJyIpIgorCQkJCWRpZV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gY2hlY2tvdXQgJ1wkc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJ1wkcHJlZml4XCRzbV9wYXRoJyIpIgorCQkJCXNheV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJTdWJtb2R1bGUgcGF0aCAnXCRwcmVmaXhcJHNtX3BhdGgnOiBjaGVja2VkIG91dCAnXCRzaGExJyIpIgogCQkJCTs7CiAJCQllc2FjCiAKQEAgLTU5OCwxMSArODIwLDE2IEBACiAKIAkJaWYgdGVzdCAtbiAiJHJlY3Vyc2l2ZSIKIAkJdGhlbgotCQkJKGNsZWFyX2xvY2FsX2dpdF9lbnY7IGNkICIkc21fcGF0aCIgJiYgZXZhbCBjbWRfdXBkYXRlICIkb3JpZ19mbGFncyIpCisJCQkoCisJCQkJcHJlZml4PSIkcHJlZml4JHNtX3BhdGgvIgorCQkJCWNsZWFyX2xvY2FsX2dpdF9lbnYKKwkJCQljZCAiJHNtX3BhdGgiICYmCisJCQkJZXZhbCBjbWRfdXBkYXRlICIkb3JpZ19mbGFncyIKKwkJCSkKIAkJCXJlcz0kPwogCQkJaWYgdGVzdCAkcmVzIC1ndCAwCiAJCQl0aGVuCi0JCQkJZGllX21zZz0iJChldmFsX2dldHRleHQgIkZhaWxlZCB0byByZWN1cnNlIGludG8gc3VibW9kdWxlIHBhdGggJ1wkc21fcGF0aCciKSIKKwkJCQlkaWVfbXNnPSIkKGV2YWxfZ2V0dGV4dCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnXCRwcmVmaXhcJHNtX3BhdGgnIikiCiAJCQkJaWYgdGVzdCAkcmVzIC1lcSAxCiAJCQkJdGhlbgogCQkJCQllcnI9IiR7ZXJyfTskZGllX21zZyIKQEAgLTY3MCwxNCArODk3LDE0IEBACiAJCQlmb3Jfc3RhdHVzPSIkMSIKIAkJCTs7CiAJCS1ufC0tc3VtbWFyeS1saW1pdCkKLQkJCWlmIHN1bW1hcnlfbGltaXQ9JCgoJDIgKyAwKSkgMj4vZGV2L251bGwgJiYgdGVzdCAiJHN1bW1hcnlfbGltaXQiID0gIiQyIgotCQkJdGhlbgotCQkJCToKLQkJCWVsc2UKLQkJCQl1c2FnZQotCQkJZmkKKwkJCXN1bW1hcnlfbGltaXQ9IiQyIgorCQkJaXNudW1iZXIgIiRzdW1tYXJ5X2xpbWl0IiB8fCB1c2FnZQogCQkJc2hpZnQKIAkJCTs7CisJCS0tc3VtbWFyeS1saW1pdD0qKQorCQkJc3VtbWFyeV9saW1pdD0iJHsxIy0tc3VtbWFyeS1saW1pdD19IgorCQkJaXNudW1iZXIgIiRzdW1tYXJ5X2xpbWl0IiB8fCB1c2FnZQorCQkJOzsKIAkJLS0pCiAJCQlzaGlmdAogCQkJYnJlYWsKQEAgLTcxMCw3ICs5MzcsNyBAQAogCWlmIFsgLW4gIiRmaWxlcyIgXQogCXRoZW4KIAkJdGVzdCAtbiAiJGNhY2hlZCIgJiYKLQkJZGllICIkKGdldHRleHQgLS0gIi0tY2FjaGVkIGNhbm5vdCBiZSB1c2VkIHdpdGggLS1maWxlcyIpIgorCQlkaWUgIiQoZ2V0dGV4dCAiVGhlIC0tY2FjaGVkIG9wdGlvbiBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSAtLWZpbGVzIG9wdGlvbiIpIgogCQlkaWZmX2NtZD1kaWZmLWZpbGVzCiAJCWhlYWQ9CiAJZmkKQEAgLTgzNywxMiArMTA2NCwxMiBAQAogCWRvbmUgfAogCWlmIHRlc3QgLW4gIiRmb3Jfc3RhdHVzIjsgdGhlbgogCQlpZiBbIC1uICIkZmlsZXMiIF07IHRoZW4KLQkJCWdldHRleHRsbiAiIyBTdWJtb2R1bGVzIGNoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOiIKKwkJCWdldHRleHRsbiAiU3VibW9kdWxlcyBjaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoiIHwgZ2l0IHN0cmlwc3BhY2UgLWMKIAkJZWxzZQotCQkJZ2V0dGV4dGxuICIjIFN1Ym1vZHVsZSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCisJCQlnZXR0ZXh0bG4gIlN1Ym1vZHVsZSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiIHwgZ2l0IHN0cmlwc3BhY2UgLWMKIAkJZmkKLQkJZWNobyAiIyIKLQkJc2VkIC1lICdzfF58IyB8JyAtZSAnc3xeIyAkfCN8JworCQlwcmludGYgIlxuIiB8IGdpdCBzdHJpcHNwYWNlIC1jCisJCWdpdCBzdHJpcHNwYWNlIC1jCiAJZWxzZQogCQljYXQKIAlmaQpAQCAtODYwLDcgKzEwODcsNiBAQAogY21kX3N0YXR1cygpCiB7CiAJIyBwYXJzZSAkYXJncyBhZnRlciAic3VibW9kdWxlIC4uLiBzdGF0dXMiLgotCW9yaWdfZmxhZ3M9CiAJd2hpbGUgdGVzdCAkIyAtbmUgMAogCWRvCiAJCWNhc2UgIiQxIiBpbgpAQCAtODg0LDEzICsxMTEwLDEzIEBACiAJCQlicmVhawogCQkJOzsKIAkJZXNhYwotCQlvcmlnX2ZsYWdzPSIkb3JpZ19mbGFncyAkKGdpdCByZXYtcGFyc2UgLS1zcS1xdW90ZSAiJDEiKSIKIAkJc2hpZnQKIAlkb25lCiAKIAltb2R1bGVfbGlzdCAiJEAiIHwKIAl3aGlsZSByZWFkIG1vZGUgc2hhMSBzdGFnZSBzbV9wYXRoCiAJZG8KKwkJZGllX2lmX3VubWF0Y2hlZCAiJG1vZGUiCiAJCW5hbWU9JChtb2R1bGVfbmFtZSAiJHNtX3BhdGgiKSB8fCBleGl0CiAJCXVybD0kKGdpdCBjb25maWcgc3VibW9kdWxlLiIkbmFtZSIudXJsKQogCQlkaXNwbGF5cGF0aD0iJHByZWZpeCRzbV9wYXRoIgpAQCAtOTIzLDcgKzExNDksNyBAQAogCQkJCXByZWZpeD0iJGRpc3BsYXlwYXRoLyIKIAkJCQljbGVhcl9sb2NhbF9naXRfZW52CiAJCQkJY2QgIiRzbV9wYXRoIiAmJgotCQkJCWV2YWwgY21kX3N0YXR1cyAiJG9yaWdfYXJncyIKKwkJCQlldmFsIGNtZF9zdGF0dXMKIAkJCSkgfHwKIAkJCWRpZSAiJChldmFsX2dldHRleHQgIkZhaWxlZCB0byByZWN1cnNlIGludG8gc3VibW9kdWxlIHBhdGggJ1wkc21fcGF0aCciKSIKIAkJZmkKQEAgLTk0Myw2ICsxMTY5LDEwIEBACiAJCQlHSVRfUVVJRVQ9MQogCQkJc2hpZnQKIAkJCTs7CisJCS0tcmVjdXJzaXZlKQorCQkJcmVjdXJzaXZlPTEKKwkJCXNoaWZ0CisJCQk7OwogCQktLSkKIAkJCXNoaWZ0CiAJCQlicmVhawpAQCAtOTU5LDIwICsxMTg5LDMzIEBACiAJbW9kdWxlX2xpc3QgIiRAIiB8CiAJd2hpbGUgcmVhZCBtb2RlIHNoYTEgc3RhZ2Ugc21fcGF0aAogCWRvCisJCWRpZV9pZl91bm1hdGNoZWQgIiRtb2RlIgogCQluYW1lPSQobW9kdWxlX25hbWUgIiRzbV9wYXRoIikKIAkJdXJsPSQoZ2l0IGNvbmZpZyAtZiAuZ2l0bW9kdWxlcyAtLWdldCBzdWJtb2R1bGUuIiRuYW1lIi51cmwpCiAKIAkJIyBQb3NzaWJseSBhIHVybCByZWxhdGl2ZSB0byBwYXJlbnQKIAkJY2FzZSAiJHVybCIgaW4KIAkJLi8qfC4uLyopCi0JCQl1cmw9JChyZXNvbHZlX3JlbGF0aXZlX3VybCAiJHVybCIpIHx8IGV4aXQKKwkJCSMgcmV3cml0ZSBmb28vYmFyIGFzIC4uLy4uIHRvIGZpbmQgcGF0aCBmcm9tCisJCQkjIHN1Ym1vZHVsZSB3b3JrIHRyZWUgdG8gc3VwZXJwcm9qZWN0IHdvcmsgdHJlZQorCQkJdXBfcGF0aD0iJChlY2hvICIkc21fcGF0aCIgfCBzZWQgInMvW14vXVteL10qLy4uL2ciKSIgJiYKKwkJCSMgZ3VhcmFudGVlIGEgdHJhaWxpbmcgLworCQkJdXBfcGF0aD0ke3VwX3BhdGglL30vICYmCisJCQkjIHBhdGggZnJvbSBzdWJtb2R1bGUgd29yayB0cmVlIHRvIHN1Ym1vZHVsZSBvcmlnaW4gcmVwbworCQkJc3ViX29yaWdpbl91cmw9JChyZXNvbHZlX3JlbGF0aXZlX3VybCAiJHVybCIgIiR1cF9wYXRoIikgJiYKKwkJCSMgcGF0aCBmcm9tIHN1cGVycHJvamVjdCB3b3JrIHRyZWUgdG8gc3VibW9kdWxlIG9yaWdpbiByZXBvCisJCQlzdXBlcl9jb25maWdfdXJsPSQocmVzb2x2ZV9yZWxhdGl2ZV91cmwgIiR1cmwiKSB8fCBleGl0CisJCQk7OworCQkqKQorCQkJc3ViX29yaWdpbl91cmw9IiR1cmwiCisJCQlzdXBlcl9jb25maWdfdXJsPSIkdXJsIgogCQkJOzsKIAkJZXNhYwogCiAJCWlmIGdpdCBjb25maWcgInN1Ym1vZHVsZS4kbmFtZS51cmwiID4vZGV2L251bGwgMj4vZGV2L251bGwKIAkJdGhlbgotCQkJc2F5ICIkKGV2YWxfZ2V0dGV4dCAiU3luY2hyb25pemluZyBzdWJtb2R1bGUgdXJsIGZvciAnXCRuYW1lJyIpIgotCQkJZ2l0IGNvbmZpZyBzdWJtb2R1bGUuIiRuYW1lIi51cmwgIiR1cmwiCisJCQlzYXkgIiQoZXZhbF9nZXR0ZXh0ICJTeW5jaHJvbml6aW5nIHN1Ym1vZHVsZSB1cmwgZm9yICdcJHByZWZpeFwkc21fcGF0aCciKSIKKwkJCWdpdCBjb25maWcgc3VibW9kdWxlLiIkbmFtZSIudXJsICIkc3VwZXJfY29uZmlnX3VybCIKIAogCQkJaWYgdGVzdCAtZSAiJHNtX3BhdGgiLy5naXQKIAkJCXRoZW4KQEAgLTk4MCw3ICsxMjIzLDEzIEBACiAJCQkJY2xlYXJfbG9jYWxfZ2l0X2VudgogCQkJCWNkICIkc21fcGF0aCIKIAkJCQlyZW1vdGU9JChnZXRfZGVmYXVsdF9yZW1vdGUpCi0JCQkJZ2l0IGNvbmZpZyByZW1vdGUuIiRyZW1vdGUiLnVybCAiJHVybCIKKwkJCQlnaXQgY29uZmlnIHJlbW90ZS4iJHJlbW90ZSIudXJsICIkc3ViX29yaWdpbl91cmwiCisKKwkJCQlpZiB0ZXN0IC1uICIkcmVjdXJzaXZlIgorCQkJCXRoZW4KKwkJCQkJcHJlZml4PSIkcHJlZml4JHNtX3BhdGgvIgorCQkJCQlldmFsIGNtZF9zeW5jCisJCQkJZmkKIAkJCSkKIAkJCWZpCiAJCWZpCkBAIC05OTYsNyArMTI0NSw3IEBACiB3aGlsZSB0ZXN0ICQjICE9IDAgJiYgdGVzdCAteiAiJGNvbW1hbmQiCiBkbwogCWNhc2UgIiQxIiBpbgotCWFkZCB8IGZvcmVhY2ggfCBpbml0IHwgdXBkYXRlIHwgc3RhdHVzIHwgc3VtbWFyeSB8IHN5bmMpCisJYWRkIHwgZm9yZWFjaCB8IGluaXQgfCBkZWluaXQgfCB1cGRhdGUgfCBzdGF0dXMgfCBzdW1tYXJ5IHwgc3luYykKIAkJY29tbWFuZD0kMQogCQk7OwogCS1xfC0tcXVpZXQpCkBAIC0xMDI3LDcgKzEyNzYsMTUgQEAKIGRvbmUKIAogIyBObyBjb21tYW5kIHdvcmQgZGVmYXVsdHMgdG8gInN0YXR1cyIKLXRlc3QgLW4gIiRjb21tYW5kIiB8fCBjb21tYW5kPXN0YXR1cworaWYgdGVzdCAteiAiJGNvbW1hbmQiCit0aGVuCisgICAgaWYgdGVzdCAkIyA9IDAKKyAgICB0aGVuCisJY29tbWFuZD1zdGF0dXMKKyAgICBlbHNlCisJdXNhZ2UKKyAgICBmaQorZmkKIAogIyAiLWIgYnJhbmNoIiBpcyBhY2NlcHRlZCBvbmx5IGJ5ICJhZGQiCiBpZiB0ZXN0IC1uICIkYnJhbmNoIiAmJiB0ZXN0ICIkY29tbWFuZCIgIT0gYWRkCmRpZmYgLS1naXQgYS9naXQtc3ZuLnBlcmwgYi9naXQtc3ZuLnBlcmwKaW5kZXggMGIwNzRjNC4uZDA3MGRlMCAxMDA3NTUKLS0tIGEvZ2l0LXN2bi5wZXJsCisrKyBiL2dpdC1zdm4ucGVybApAQCAtMTAsMTcgKzEwLDU4IEBACiAkQVVUSE9SID0gJ0VyaWMgV29uZyA8bm9ybWFscGVyc29uQHloYnQubmV0Pic7CiAkVkVSU0lPTiA9ICdAQEdJVF9WRVJTSU9OQEAnOwogCit1c2UgQ2FycCBxdy9jcm9hay87Cit1c2UgRGlnZXN0OjpNRDU7Cit1c2UgSU86OkZpbGUgcXcvLzsKK3VzZSBGaWxlOjpCYXNlbmFtZSBxdy9kaXJuYW1lIGJhc2VuYW1lLzsKK3VzZSBGaWxlOjpQYXRoIHF3L21rcGF0aC87Cit1c2UgRmlsZTo6U3BlYzsKK3VzZSBGaWxlOjpGaW5kOwordXNlIEdldG9wdDo6TG9uZyBxdy86Y29uZmlnIGdudV9nZXRvcHQgbm9faWdub3JlX2Nhc2UgYXV0b19hYmJyZXYvOwordXNlIElQQzo6T3BlbjM7Cit1c2UgTWVtb2l6ZTsKKwordXNlIEdpdDo6U1ZOOwordXNlIEdpdDo6U1ZOOjpFZGl0b3I7Cit1c2UgR2l0OjpTVk46OkZldGNoZXI7Cit1c2UgR2l0OjpTVk46OlJhOwordXNlIEdpdDo6U1ZOOjpQcm9tcHQ7Cit1c2UgR2l0OjpTVk46OkxvZzsKK3VzZSBHaXQ6OlNWTjo6TWlncmF0aW9uOworCit1c2UgR2l0OjpTVk46OlV0aWxzIHF3KAorCWZhdGFsCisJY2FuX2NvbXByZXNzCisJY2Fub25pY2FsaXplX3BhdGgKKwljYW5vbmljYWxpemVfdXJsCisJam9pbl9wYXRocworCWFkZF9wYXRoX3RvX3VybAorCWpvaW5fcGF0aHMKKyk7CisKK3VzZSBHaXQgcXcoCisJZ2l0X2NtZF90cnkKKwljb21tYW5kCisJY29tbWFuZF9vbmVsaW5lCisJY29tbWFuZF9ub2lzeQorCWNvbW1hbmRfb3V0cHV0X3BpcGUKKwljb21tYW5kX2Nsb3NlX3BpcGUKKwljb21tYW5kX2JpZGlfcGlwZQorCWNvbW1hbmRfY2xvc2VfYmlkaV9waXBlCispOworCitCRUdJTiB7CisJTWVtb2l6ZTo6bWVtb2l6ZSAnR2l0Ojpjb25maWcnOworCU1lbW9pemU6Om1lbW9pemUgJ0dpdDo6Y29uZmlnX2Jvb2wnOworfQorCisKICMgRnJvbSB3aGljaCBzdWJkaXIgaGF2ZSB3ZSBiZWVuIGludm9rZWQ/CiBteSAkY21kX2Rpcl9wcmVmaXggPSBldmFsIHsKIAljb21tYW5kX29uZWxpbmUoW3F3L3Jldi1wYXJzZSAtLXNob3ctcHJlZml4L10sIFNUREVSUiA9PiAwKQogfSB8fCAnJzsKIAotbXkgJGdpdF9kaXJfdXNlcl9zZXQgPSAxIGlmIGRlZmluZWQgJEVOVntHSVRfRElSfTsKLSRFTlZ7R0lUX0RJUn0gfHw9ICcuZ2l0JzsKLSRHaXQ6OlNWTjo6ZGVmYXVsdF9yZXBvX2lkID0gJ3N2bic7Ci0kR2l0OjpTVk46OmRlZmF1bHRfcmVmX2lkID0gJEVOVntHSVRfU1ZOX0lEfSB8fCAnZ2l0LXN2bic7CiAkR2l0OjpTVk46OlJhOjpfbG9nX3dpbmRvd19zaXplID0gMTAwOwotJEdpdDo6U1ZOOjpfbWluaW1pemVfdXJsID0gJ3Vuc2V0JzsKIAogaWYgKCEgZXhpc3RzICRFTlZ7U1ZOX1NTSH0gJiYgZXhpc3RzICRFTlZ7R0lUX1NTSH0pIHsKIAkkRU5We1NWTl9TU0h9ID0gJEVOVntHSVRfU1NIfTsKQEAgLTM1LDggKzc2LDYgQEAKICRFTlZ7VFp9ID0gJ1VUQyc7CiAkfCA9IDE7ICMgdW5idWZmZXIgU1RET1VUCiAKLXN1YiBmYXRhbCAoQCkgeyBwcmludCBTVERFUlIgIkBfXG4iOyBleGl0IDEgfQotCiAjIEFsbCBTVk4gY29tbWFuZHMgZG8gaXQuICBPdGhlcndpc2Ugd2UgbWF5IGRpZSBvbiBTSUdQSVBFIHdoZW4gdGhlIHJlbW90ZQogIyByZXBvc2l0b3J5IGRlY2lkZXMgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24gd2hpY2ggd2UgZXhwZWN0IHRvIGJlIGtlcHQgYWxpdmUuCiAkU0lHe1BJUEV9ID0gJ0lHTk9SRSc7CkBAIC02NiwzOSArMTA1LDYgQEAKIAkJZmF0YWwgIk5lZWQgU1ZOOjpDb3JlIDEuMS4wIG9yIGJldHRlciAoZ290ICRTVk46OkNvcmU6OlZFUlNJT04pIjsKIAl9CiB9Ci1teSAkY2FuX2NvbXByZXNzID0gZXZhbCB7IHJlcXVpcmUgQ29tcHJlc3M6OlpsaWI7IDF9OwotdXNlIENhcnAgcXcvY3JvYWsvOwotdXNlIERpZ2VzdDo6TUQ1OwotdXNlIElPOjpGaWxlIHF3Ly87Ci11c2UgRmlsZTo6QmFzZW5hbWUgcXcvZGlybmFtZSBiYXNlbmFtZS87Ci11c2UgRmlsZTo6UGF0aCBxdy9ta3BhdGgvOwotdXNlIEZpbGU6OlNwZWM7Ci11c2UgRmlsZTo6RmluZDsKLXVzZSBHZXRvcHQ6OkxvbmcgcXcvOmNvbmZpZyBnbnVfZ2V0b3B0IG5vX2lnbm9yZV9jYXNlIGF1dG9fYWJicmV2LzsKLXVzZSBJUEM6Ok9wZW4zOwotdXNlIEdpdDsKLXVzZSBHaXQ6OlNWTjo6RWRpdG9yIHF3Ly87Ci11c2UgR2l0OjpTVk46OkZldGNoZXIgcXcvLzsKLXVzZSBHaXQ6OlNWTjo6UmEgcXcvLzsKLXVzZSBHaXQ6OlNWTjo6UHJvbXB0IHF3Ly87Ci11c2UgTWVtb2l6ZTsgICMgY29yZSBzaW5jZSA1LjguMCwgSnVsIDIwMDIKLQotQkVHSU4gewotCSMgaW1wb3J0IGZ1bmN0aW9ucyBmcm9tIEdpdCBpbnRvIG91ciBwYWNrYWdlcywgZW4gbWFzc2UKLQlubyBzdHJpY3QgJ3JlZnMnOwotCWZvcmVhY2ggKHF3L2NvbW1hbmQgY29tbWFuZF9vbmVsaW5lIGNvbW1hbmRfbm9pc3kgY29tbWFuZF9vdXRwdXRfcGlwZQotCSAgICAgICAgICAgIGNvbW1hbmRfaW5wdXRfcGlwZSBjb21tYW5kX2Nsb3NlX3BpcGUKLQkgICAgICAgICAgICBjb21tYW5kX2JpZGlfcGlwZSBjb21tYW5kX2Nsb3NlX2JpZGlfcGlwZS8pIHsKLQkJZm9yIG15ICRwYWNrYWdlICggcXcoR2l0OjpTVk46Ok1pZ3JhdGlvbiBHaXQ6OlNWTjo6TG9nIEdpdDo6U1ZOKSwKLQkJCV9fUEFDS0FHRV9fKSB7Ci0JCQkqeyIke3BhY2thZ2V9OjokXyJ9ID0gXCZ7IkdpdDo6JF8ifTsKLQkJfQotCX0KLQlNZW1vaXplOjptZW1vaXplICdHaXQ6OmNvbmZpZyc7Ci0JTWVtb2l6ZTo6bWVtb2l6ZSAnR2l0Ojpjb25maWdfYm9vbCc7Ci19Ci0KLW15ICgkU1ZOKTsKIAogJHNoYTEgPSBxci9bYS1mXGRdezQwfS87CiAkc2hhMV9zaG9ydCA9IHFyL1thLWZcZF17NCw0MH0vOwpAQCAtMTA2LDE2ICsxMTIsMjEgQEAKIAkkX21lc3NhZ2UsICRfZmlsZSwgJF9icmFuY2hfZGVzdCwKIAkkX3RlbXBsYXRlLCAkX3NoYXJlZCwKIAkkX3ZlcnNpb24sICRfZmV0Y2hfYWxsLCAkX25vX3JlYmFzZSwgJF9mZXRjaF9wYXJlbnQsCi0JJF9tZXJnZSwgJF9zdHJhdGVneSwgJF9wcmVzZXJ2ZV9tZXJnZXMsICRfZHJ5X3J1biwgJF9sb2NhbCwKKwkkX2JlZm9yZSwgJF9hZnRlciwKKwkkX21lcmdlLCAkX3N0cmF0ZWd5LCAkX3ByZXNlcnZlX21lcmdlcywgJF9kcnlfcnVuLCAkX3BhcmVudHMsICRfbG9jYWwsCiAJJF9wcmVmaXgsICRfbm9fY2hlY2tvdXQsICRfdXJsLCAkX3ZlcmJvc2UsCi0JJF9naXRfZm9ybWF0LCAkX2NvbW1pdF91cmwsICRfdGFnLCAkX21lcmdlX2luZm8sICRfaW50ZXJhY3RpdmUpOwotJEdpdDo6U1ZOOjpfZm9sbG93X3BhcmVudCA9IDE7CisJJF9jb21taXRfdXJsLCAkX3RhZywgJF9tZXJnZV9pbmZvLCAkX2ludGVyYWN0aXZlKTsKKworIyBUaGlzIGlzIGEgcmVmYWN0b3JpbmcgYXJ0aWZhY3Qgc28gR2l0OjpTVk4gY2FuIGdldCBhdCB0aGlzIGdpdC1zdm4gc3dpdGNoLgorc3ViIG9wdF9wcmVmaXggeyByZXR1cm4gJF9wcmVmaXggfHwgJycgfQorCiAkR2l0OjpTVk46OkZldGNoZXI6Ol9wbGFjZWhvbGRlcl9maWxlbmFtZSA9ICIuZ2l0aWdub3JlIjsKICRfcSB8fD0gMDsKIG15ICVyZW1vdGVfb3B0cyA9ICggJ3VzZXJuYW1lPXMnID0+IFwkR2l0OjpTVk46OlByb21wdDo6X3VzZXJuYW1lLAogICAgICAgICAgICAgICAgICAgICAnY29uZmlnLWRpcj1zJyA9PiBcJEdpdDo6U1ZOOjpSYTo6Y29uZmlnX2RpciwKICAgICAgICAgICAgICAgICAgICAgJ25vLWF1dGgtY2FjaGUnID0+IFwkR2l0OjpTVk46OlByb21wdDo6X25vX2F1dGhfY2FjaGUsCiAgICAgICAgICAgICAgICAgICAgICdpZ25vcmUtcGF0aHM9cycgPT4gXCRHaXQ6OlNWTjo6RmV0Y2hlcjo6X2lnbm9yZV9yZWdleCwKKyAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUtcGF0aHM9cycgPT4gXCRHaXQ6OlNWTjo6RmV0Y2hlcjo6X2luY2x1ZGVfcmVnZXgsCiAgICAgICAgICAgICAgICAgICAgICdpZ25vcmUtcmVmcz1zJyA9PiBcJEdpdDo6U1ZOOjpSYTo6X2lnbm9yZV9yZWZzX3JlZ2V4ICk7CiBteSAlZmNfb3B0cyA9ICggJ2ZvbGxvdy1wYXJlbnR8Zm9sbG93IScgPT4gXCRHaXQ6OlNWTjo6X2ZvbGxvd19wYXJlbnQsCiAJCSdhdXRob3JzLWZpbGV8QT1zJyA9PiBcJF9hdXRob3JzLApAQCAtMTkyLDYgKzIwMyw3IEBACiAJICAgICAgICAgICAgeyAnbWVzc2FnZXxtPXMnID0+IFwkX21lc3NhZ2UsCiAJICAgICAgICAgICAgICAnZGVzdGluYXRpb258ZD1zJyA9PiBcJF9icmFuY2hfZGVzdCwKIAkgICAgICAgICAgICAgICdkcnktcnVufG4nID0+IFwkX2RyeV9ydW4sCisJICAgICAgICAgICAgICAncGFyZW50cycgPT4gXCRfcGFyZW50cywKIAkgICAgICAgICAgICAgICd0YWd8dCcgPT4gXCRfdGFnLAogCSAgICAgICAgICAgICAgJ3VzZXJuYW1lPXMnID0+IFwkR2l0OjpTVk46OlByb21wdDo6X3VzZXJuYW1lLAogCSAgICAgICAgICAgICAgJ2NvbW1pdC11cmw9cycgPT4gXCRfY29tbWl0X3VybCB9IF0sCkBAIC0yMDAsNiArMjEyLDcgQEAKIAkgICAgICAgICB7ICdtZXNzYWdlfG09cycgPT4gXCRfbWVzc2FnZSwKIAkgICAgICAgICAgICdkZXN0aW5hdGlvbnxkPXMnID0+IFwkX2JyYW5jaF9kZXN0LAogCSAgICAgICAgICAgJ2RyeS1ydW58bicgPT4gXCRfZHJ5X3J1biwKKwkgICAgICAgICAgICdwYXJlbnRzJyA9PiBcJF9wYXJlbnRzLAogCSAgICAgICAgICAgJ3VzZXJuYW1lPXMnID0+IFwkR2l0OjpTVk46OlByb21wdDo6X3VzZXJuYW1lLAogCSAgICAgICAgICAgJ2NvbW1pdC11cmw9cycgPT4gXCRfY29tbWl0X3VybCB9IF0sCiAJJ3NldC10cmVlJyA9PiBbIFwmY21kX3NldF90cmVlLApAQCAtMjQ3LDcgKzI2MCw4IEBACiAJCQl9IF0sCiAJJ2ZpbmQtcmV2JyA9PiBbIFwmY21kX2ZpbmRfcmV2LAogCSAgICAgICAgICAgICAgICAiVHJhbnNsYXRlIGJldHdlZW4gU1ZOIHJldmlzaW9uIG51bWJlcnMgYW5kIHRyZWUtaXNoIiwKLQkJCXt9IF0sCisJCQl7ICdiZWZvcmUnID0+IFwkX2JlZm9yZSwKKwkJCSAgJ2FmdGVyJyA9PiBcJF9hZnRlciB9IF0sCiAJJ3JlYmFzZScgPT4gWyBcJmNtZF9yZWJhc2UsICJGZXRjaCBhbmQgcmViYXNlIHlvdXIgd29ya2luZyBkaXJlY3RvcnkiLAogCQkJeyAnbWVyZ2V8bXxNJyA9PiBcJF9tZXJnZSwKIAkJCSAgJ3ZlcmJvc2V8dicgPT4gXCRfdmVyYm9zZSwKQEAgLTI2OSw3ICsyODMsNyBAQAogCQkgICAgeyAndXJsJyA9PiBcJF91cmwsIH0gXSwKIAknYmxhbWUnID0+IFsgXCZHaXQ6OlNWTjo6TG9nOjpjbWRfYmxhbWUsCiAJICAgICAgICAgICAgIlNob3cgd2hhdCByZXZpc2lvbiBhbmQgYXV0aG9yIGxhc3QgbW9kaWZpZWQgZWFjaCBsaW5lIG9mIGEgZmlsZSIsCi0JCSAgICB7ICdnaXQtZm9ybWF0JyA9PiBcJF9naXRfZm9ybWF0IH0gXSwKKwkJICAgIHsgJ2dpdC1mb3JtYXQnID0+IFwkR2l0OjpTVk46OkxvZzo6X2dpdF9mb3JtYXQgfSBdLAogCSdyZXNldCcgPT4gWyBcJmNtZF9yZXNldCwKIAkJICAgICAiVW5kbyBmZXRjaGVzIGJhY2sgdG8gdGhlIHNwZWNpZmllZCBTVk4gcmV2aXNpb24iLAogCQkgICAgIHsgJ3JldmlzaW9ufHI9cycgPT4gXCRfcmV2aXNpb24sCkBAIC0zMTQsMjcgKzMyOCwyMCBAQAogfTsKIAogIyBtYWtlIHN1cmUgd2UncmUgYWx3YXlzIHJ1bm5pbmcgYXQgdGhlIHRvcC1sZXZlbCB3b3JraW5nIGRpcmVjdG9yeQotdW5sZXNzICgkY21kICYmICRjbWQgPX4gLyg/OmNsb25lfGluaXR8bXVsdGktaW5pdCkkLykgewotCXVubGVzcyAoLWQgJEVOVntHSVRfRElSfSkgewotCQlpZiAoJGdpdF9kaXJfdXNlcl9zZXQpIHsKLQkJCWRpZSAiR0lUX0RJUj0kRU5We0dJVF9ESVJ9IGV4cGxpY2l0bHkgc2V0LCAiLAotCQkJICAgICJidXQgaXQgaXMgbm90IGEgZGlyZWN0b3J5XG4iOwotCQl9Ci0JCW15ICRnaXRfZGlyID0gZGVsZXRlICRFTlZ7R0lUX0RJUn07Ci0JCW15ICRjZHVwID0gdW5kZWY7Ci0JCWdpdF9jbWRfdHJ5IHsKLQkJCSRjZHVwID0gY29tbWFuZF9vbmVsaW5lKHF3L3Jldi1wYXJzZSAtLXNob3ctY2R1cC8pOwotCQkJJGdpdF9kaXIgPSAnLicgdW5sZXNzICgkY2R1cCk7Ci0JCQljaG9tcCAkY2R1cCBpZiAoJGNkdXApOwotCQkJJGNkdXAgPSAiLiIgdW5sZXNzICgkY2R1cCAmJiBsZW5ndGggJGNkdXApOwotCQl9ICJBbHJlYWR5IGF0IHRvcGxldmVsLCBidXQgJGdpdF9kaXIgbm90IGZvdW5kXG4iOwotCQljaGRpciAkY2R1cCBvciBkaWUgIlVuYWJsZSB0byBjaGRpciB1cCB0byAnJGNkdXAnXG4iOwotCQl1bmxlc3MgKC1kICRnaXRfZGlyKSB7Ci0JCQlkaWUgIiRnaXRfZGlyIHN0aWxsIG5vdCBmb3VuZCBhZnRlciBnb2luZyB0byAiLAotCQkJICAgICInJGNkdXAnXG4iOwotCQl9Ci0JCSRFTlZ7R0lUX0RJUn0gPSAkZ2l0X2RpcjsKLQl9CitpZiAoJGNtZCAmJiAkY21kID1+IC8oPzpjbG9uZXxpbml0fG11bHRpLWluaXQpJC8pIHsKKwkkRU5We0dJVF9ESVJ9IHx8PSAiLmdpdCI7Cit9IGVsc2UgeworCW15ICgkZ2l0X2RpciwgJGNkdXApOworCWdpdF9jbWRfdHJ5IHsKKwkJJGdpdF9kaXIgPSBjb21tYW5kX29uZWxpbmUoW3F3L3Jldi1wYXJzZSAtLWdpdC1kaXIvXSk7CisJfSAiVW5hYmxlIHRvIGZpbmQgLmdpdCBkaXJlY3RvcnlcbiI7CisJZ2l0X2NtZF90cnkgeworCQkkY2R1cCA9IGNvbW1hbmRfb25lbGluZShxdy9yZXYtcGFyc2UgLS1zaG93LWNkdXAvKTsKKwkJY2hvbXAgJGNkdXAgaWYgKCRjZHVwKTsKKwkJJGNkdXAgPSAiLiIgdW5sZXNzICgkY2R1cCAmJiBsZW5ndGggJGNkdXApOworCX0gIkFscmVhZHkgYXQgdG9wbGV2ZWwsIGJ1dCAkZ2l0X2RpciBub3QgZm91bmRcbiI7CisJJEVOVntHSVRfRElSfSA9ICRnaXRfZGlyOworCWNoZGlyICRjZHVwIG9yIGRpZSAiVW5hYmxlIHRvIGNoZGlyIHVwIHRvICckY2R1cCdcbiI7CiAJJF9yZXBvc2l0b3J5ID0gR2l0LT5yZXBvc2l0b3J5KFJlcG9zaXRvcnkgPT4gJEVOVntHSVRfRElSfSk7CiB9CiAKQEAgLTM2Nyw5ICszNzQsOSBAQAogZXZhbCB7CiAJR2l0OjpTVk46OnZlcmlmeV9yZW1vdGVzX3Nhbml0eSgpOwogCSRjbWR7JGNtZH0tPlswXS0+KEBBUkdWKTsKKwlwb3N0X2ZldGNoX2NoZWNrb3V0KCk7CiB9OwogZmF0YWwgJEAgaWYgJEA7Ci1wb3N0X2ZldGNoX2NoZWNrb3V0KCk7CiBleGl0IDA7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIHByaW1hcnkgZnVuY3Rpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTM3OCw3ICszODUsNyBAQAogCW15ICRmZCA9ICRleGl0ID8gXCpTVERFUlIgOiBcKlNURE9VVDsKIAlwcmludCAkZmQgPDwiIjsKIGdpdC1zdm4gLSBiaWRpcmVjdGlvbmFsIG9wZXJhdGlvbnMgYmV0d2VlbiBhIHNpbmdsZSBTdWJ2ZXJzaW9uIHRyZWUgYW5kIGdpdAotVXNhZ2U6IGdpdCBzdm4gPGNvbW1hbmQ+IFtvcHRpb25zXSBbYXJndW1lbnRzXVxuCit1c2FnZTogZ2l0IHN2biA8Y29tbWFuZD4gW29wdGlvbnNdIFthcmd1bWVudHNdXG4KIAogCXByaW50ICRmZCAiQXZhaWxhYmxlIGNvbW1hbmRzOlxuIiB1bmxlc3MgJGNtZDsKIApAQCAtNDY2LDYgKzQ3Myw5IEBACiAJbXkgJGlnbm9yZV9wYXRoc19yZWdleCA9IFwkR2l0OjpTVk46OkZldGNoZXI6Ol9pZ25vcmVfcmVnZXg7CiAJY29tbWFuZF9ub2lzeSgnY29uZmlnJywgIiRwZnguaWdub3JlLXBhdGhzIiwgJCRpZ25vcmVfcGF0aHNfcmVnZXgpCiAJCWlmIGRlZmluZWQgJCRpZ25vcmVfcGF0aHNfcmVnZXg7CisJbXkgJGluY2x1ZGVfcGF0aHNfcmVnZXggPSBcJEdpdDo6U1ZOOjpGZXRjaGVyOjpfaW5jbHVkZV9yZWdleDsKKwljb21tYW5kX25vaXN5KCdjb25maWcnLCAiJHBmeC5pbmNsdWRlLXBhdGhzIiwgJCRpbmNsdWRlX3BhdGhzX3JlZ2V4KQorCQlpZiBkZWZpbmVkICQkaW5jbHVkZV9wYXRoc19yZWdleDsKIAlteSAkaWdub3JlX3JlZnNfcmVnZXggPSBcJEdpdDo6U1ZOOjpSYTo6X2lnbm9yZV9yZWZzX3JlZ2V4OwogCWNvbW1hbmRfbm9pc3koJ2NvbmZpZycsICIkcGZ4Lmlnbm9yZS1yZWZzIiwgJCRpZ25vcmVfcmVmc19yZWdleCkKIAkJaWYgZGVmaW5lZCAkJGlnbm9yZV9yZWZzX3JlZ2V4OwpAQCAtNTMwLDcgKzU0MCw3IEBACiAJfQogCW15ICgkcmVtb3RlKSA9IEBfOwogCWlmIChAXyA+IDEpIHsKLQkJZGllICJVc2FnZTogJDAgZmV0Y2ggWy0tYWxsXSBbLS1wYXJlbnRdIFtzdm4tcmVtb3RlXVxuIjsKKwkJZGllICJ1c2FnZTogJDAgZmV0Y2ggWy0tYWxsXSBbLS1wYXJlbnRdIFtzdm4tcmVtb3RlXVxuIjsKIAl9CiAJJEdpdDo6U1ZOOjpub19yZXVzZV9leGlzdGluZyA9IHVuZGVmOwogCWlmICgkX2ZldGNoX3BhcmVudCkgewpAQCAtNjY1LDEyICs2NzUsMTQgQEAKIH0KIAogc3ViIG1lcmdlX21lcmdlX2luZm8gewotCW15ICgkbWVyZ2VpbmZvX29uZSwgJG1lcmdlaW5mb190d28pID0gQF87CisJbXkgKCRtZXJnZWluZm9fb25lLCAkbWVyZ2VpbmZvX3R3bywgJGlnbm9yZV9icmFuY2gpID0gQF87CiAJbXkgJXJlc3VsdF9oYXNoID0gKCk7CiAKIAltZXJnZV9yZXZzX2ludG9faGFzaChcJXJlc3VsdF9oYXNoLCAkbWVyZ2VpbmZvX29uZSk7CiAJbWVyZ2VfcmV2c19pbnRvX2hhc2goXCVyZXN1bHRfaGFzaCwgJG1lcmdlaW5mb190d28pOwogCisJZGVsZXRlICRyZXN1bHRfaGFzaHskaWdub3JlX2JyYW5jaH0gaWYgJGlnbm9yZV9icmFuY2g7CisKIAlteSAkcmVzdWx0ID0gJyc7CiAJIyBTb3J0IGJlbG93IGlzIGZvciBjb25zaXN0ZW5jeSdzIHNha2UKIAlmb3IgbXkgJGJyYW5jaG5hbWUgKHNvcnQga2V5cyglcmVzdWx0X2hhc2gpKSB7CkBAIC02OTEsNiArNzAzLDcgQEAKIAkJbXkgJGFsbF9wYXJlbnRzX29rID0gMTsKIAkJbXkgJGFnZ3JlZ2F0ZV9tZXJnZWluZm8gPSAnJzsKIAkJbXkgJHJvb3R1cmwgPSAkZ3MtPnJlcG9zX3Jvb3Q7CisJCW15ICgkdGFyZ2V0X2JyYW5jaCkgPSAkZ3MtPmZ1bGxfcHVzaHVybCA9fiAvXlxRJHJvb3R1cmxcRSguKikvOwogCiAJCWlmIChkZWZpbmVkKCRyZXdyaXR0ZW5fcGFyZW50KSkgewogCQkJIyBSZXBsYWNlIGZpcnN0IHBhcmVudCB3aXRoIG5ld2x5LXJld3JpdHRlbiB2ZXJzaW9uCkBAIC03MjIsNyArNzM1LDggQEAKIAkJCSMgTWVyZ2UgcHJldmlvdXMgbWVyZ2VpbmZvIHZhbHVlcwogCQkJJGFnZ3JlZ2F0ZV9tZXJnZWluZm8gPQogCQkJCW1lcmdlX21lcmdlX2luZm8oJGFnZ3JlZ2F0ZV9tZXJnZWluZm8sCi0JCQkJCQkJCSAkcGFyX21lcmdlaW5mbywgMCk7CisJCQkJCQkJCSRwYXJfbWVyZ2VpbmZvLAorCQkJCQkJCQkkdGFyZ2V0X2JyYW5jaCk7CiAKIAkJCW5leHQgaWYgJHBhcmVudCBlcSAkcGFyZW50c1swXTsgIyBTa2lwIGZpcnN0IHBhcmVudAogCQkJIyBBZGQgbmV3IGNoYW5nZXMgYmVpbmcgcGxhY2VkIGluIHRyZWUgYnkgbWVyZ2UKQEAgLTc2NSw3ICs3NzksOCBAQAogCQkJbXkgJG5ld21lcmdlaW5mbyA9ICIkYnJhbmNocGF0aDoiIC4gam9pbignLCcsIEByZXZzaW4pOwogCQkJJGFnZ3JlZ2F0ZV9tZXJnZWluZm8gPQogCQkJCW1lcmdlX21lcmdlX2luZm8oJGFnZ3JlZ2F0ZV9tZXJnZWluZm8sCi0JCQkJCQkJCSAkbmV3bWVyZ2VpbmZvLCAxKTsKKwkJCQkJCQkJJG5ld21lcmdlaW5mbywKKwkJCQkJCQkJJHRhcmdldF9icmFuY2gpOwogCQl9CiAJCWlmICgkYWxsX3BhcmVudHNfb2sgYW5kICRhZ2dyZWdhdGVfbWVyZ2VpbmZvKSB7CiAJCQlyZXR1cm4gJGFnZ3JlZ2F0ZV9tZXJnZWluZm87CkBAIC03NzUsNiArNzkwLDQ0IEBACiAJcmV0dXJuIHVuZGVmOwogfQogCitzdWIgZGNvbW1pdF9yZWJhc2UgeworCW15ICgkaXNfbGFzdCwgJGN1cnJlbnQsICRmZXRjaGVkX3JlZiwgJHN2bl9lcnJvcikgPSBAXzsKKwlteSBAZGlmZjsKKworCWlmICgkc3ZuX2Vycm9yKSB7CisJCXByaW50IFNUREVSUiAiXG5FUlJPUiBmcm9tIFNWTjpcbiIsCisJCQkJJHN2bl9lcnJvci0+ZXhwYW5kZWRfbWVzc2FnZSwgIlxuIjsKKwl9CisJdW5sZXNzICgkX25vX3JlYmFzZSkgeworCQkjIHdlIGFsd2F5cyB3YW50IHRvIHJlYmFzZSBhZ2FpbnN0IHRoZSBjdXJyZW50IEhFQUQsCisJCSMgbm90IGFueSBoZWFkIHRoYXQgd2FzIHBhc3NlZCB0byB1cworCQlAZGlmZiA9IGNvbW1hbmQoJ2RpZmYtdHJlZScsICRjdXJyZW50LAorCSAgICAgICAgICAgICAgICAgICAkZmV0Y2hlZF9yZWYsICctLScpOworCQlteSBAZmluaXNoOworCQlpZiAoQGRpZmYpIHsKKwkJCUBmaW5pc2ggPSByZWJhc2VfY21kKCk7CisJCQlwcmludCBTVERFUlIgIlc6ICRjdXJyZW50IGFuZCAiLCAkZmV0Y2hlZF9yZWYsCisJCQkgICAgICAgICAgICAgIiBkaWZmZXIsIHVzaW5nIEBmaW5pc2g6XG4iLAorCQkJICAgICAgICAgICAgIGpvaW4oIlxuIiwgQGRpZmYpLCAiXG4iOworCQl9IGVsc2lmICgkaXNfbGFzdCkgeworCQkJcHJpbnQgIk5vIGNoYW5nZXMgYmV0d2VlbiAiLCAkY3VycmVudCwgIiBhbmQgIiwKKwkJCSAgICAgICRmZXRjaGVkX3JlZiwKKwkJCSAgICAgICJcblJlc2V0dGluZyB0byB0aGUgbGF0ZXN0ICIsCisJCQkgICAgICAkZmV0Y2hlZF9yZWYsICJcbiI7CisJCQlAZmluaXNoID0gcXcvcmVzZXQgLS1taXhlZC87CisJCX0KKwkJY29tbWFuZF9ub2lzeShAZmluaXNoLCAkZmV0Y2hlZF9yZWYpIGlmIEBmaW5pc2g7CisJfQorCWlmICgkc3ZuX2Vycm9yKSB7CisJCWRpZSAiRVJST1I6IE5vdCBhbGwgY2hhbmdlcyBoYXZlIGJlZW4gY29tbWl0dGVkIGludG8gU1ZOIgorCQkJLigkX25vX3JlYmFzZSA/ICIuXG4iIDogIiwgaG93ZXZlciB0aGUgY29tbWl0dGVkXG4iCisJCQkuIm9uZXMgKGlmIGFueSkgc2VlbSB0byBiZSBzdWNjZXNzZnVsbHkgaW50ZWdyYXRlZCAiCisJCQkuImludG8gdGhlIHdvcmtpbmcgdHJlZS5cbiIpCisJCQkuIlBsZWFzZSBzZWUgdGhlIGFib3ZlIG1lc3NhZ2VzIGZvciBkZXRhaWxzLlxuIjsKKwl9CisJcmV0dXJuIEBkaWZmOworfQorCiBzdWIgY21kX2Rjb21taXQgewogCW15ICRoZWFkID0gc2hpZnQ7CiAJY29tbWFuZF9ub2lzeShxdy91cGRhdGUtaW5kZXggLS1yZWZyZXNoLyk7CkBAIC05MDIsNiArOTU1LDcgQEAKIAl9CiAKIAlteSAkcmV3cml0dGVuX3BhcmVudDsKKwlteSAkY3VycmVudF9oZWFkID0gY29tbWFuZF9vbmVsaW5lKHF3L3Jldi1wYXJzZSBIRUFELyk7CiAJR2l0OjpTVk46OnJlbW92ZV91c2VybmFtZSgkZXhwZWN0X3VybCk7CiAJaWYgKGRlZmluZWQoJF9tZXJnZV9pbmZvKSkgewogCQkkX21lcmdlX2luZm8gPX4gdHJ7IH17XG59OwpAQCAtOTQxLDYgKzk5NSwxNCBAQAogCQkJICAgICAgICAgICAgICAgIH0sCiAJCQkJCW1lcmdlaW5mbyA9PiAkX21lcmdlX2luZm8sCiAJCQkgICAgICAgICAgICAgICAgc3ZuX3BhdGggPT4gJycpOworCisJCQlteSAkZXJyX2hhbmRsZXIgPSAkU1ZOOjpFcnJvcjo6aGFuZGxlcjsKKwkJCSRTVk46OkVycm9yOjpoYW5kbGVyID0gc3ViIHsKKwkJCQlteSAkZXJyID0gc2hpZnQ7CisJCQkJZGNvbW1pdF9yZWJhc2UoMSwgJGN1cnJlbnRfaGVhZCwgJGdzLT5yZWZuYW1lLAorCQkJCQkkZXJyKTsKKwkJCX07CisKIAkJCWlmICghR2l0OjpTVk46OkVkaXRvci0+bmV3KFwlZWRfb3B0cyktPmFwcGx5X2RpZmYpIHsKIAkJCQlwcmludCAiTm8gY2hhbmdlc1xuJGR+MSA9PSAkZFxuIjsKIAkJCX0gZWxzaWYgKCRwYXJlbnRzLT57JGR9ICYmIEB7JHBhcmVudHMtPnskZH19KSB7CkBAIC05NDgsMzEgKzEwMTAsMTkgQEAKIAkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmVudHMtPnskZH07CiAJCQl9CiAJCQkkX2ZldGNoX2FsbCA/ICRncy0+ZmV0Y2hfYWxsIDogJGdzLT5mZXRjaDsKKwkJCSRTVk46OkVycm9yOjpoYW5kbGVyID0gJGVycl9oYW5kbGVyOwogCQkJJGxhc3RfcmV2ID0gJGNtdF9yZXY7CiAJCQluZXh0IGlmICRfbm9fcmViYXNlOwogCi0JCQkjIHdlIGFsd2F5cyB3YW50IHRvIHJlYmFzZSBhZ2FpbnN0IHRoZSBjdXJyZW50IEhFQUQsCi0JCQkjIG5vdCBhbnkgaGVhZCB0aGF0IHdhcyBwYXNzZWQgdG8gdXMKLQkJCW15IEBkaWZmID0gY29tbWFuZCgnZGlmZi10cmVlJywgJGQsCi0JCQkgICAgICAgICAgICAgICAgICAgJGdzLT5yZWZuYW1lLCAnLS0nKTsKLQkJCW15IEBmaW5pc2g7Ci0JCQlpZiAoQGRpZmYpIHsKLQkJCQlAZmluaXNoID0gcmViYXNlX2NtZCgpOwotCQkJCXByaW50IFNUREVSUiAiVzogJGQgYW5kICIsICRncy0+cmVmbmFtZSwKLQkJCQkgICAgICAgICAgICAgIiBkaWZmZXIsIHVzaW5nIEBmaW5pc2g6XG4iLAotCQkJCSAgICAgICAgICAgICBqb2luKCJcbiIsIEBkaWZmKSwgIlxuIjsKLQkJCX0gZWxzZSB7Ci0JCQkJcHJpbnQgIk5vIGNoYW5nZXMgYmV0d2VlbiBjdXJyZW50IEhFQUQgYW5kICIsCi0JCQkJICAgICAgJGdzLT5yZWZuYW1lLAotCQkJCSAgICAgICJcblJlc2V0dGluZyB0byB0aGUgbGF0ZXN0ICIsCi0JCQkJICAgICAgJGdzLT5yZWZuYW1lLCAiXG4iOwotCQkJCUBmaW5pc2ggPSBxdy9yZXNldCAtLW1peGVkLzsKLQkJCX0KLQkJCWNvbW1hbmRfbm9pc3koQGZpbmlzaCwgJGdzLT5yZWZuYW1lKTsKKwkJCW15IEBkaWZmID0gZGNvbW1pdF9yZWJhc2UoQCRsaW5lYXJfcmVmcyA9PSAwLCAkZCwKKwkJCQkJCSRncy0+cmVmbmFtZSwgdW5kZWYpOwogCi0JCQkkcmV3cml0dGVuX3BhcmVudCA9IGNvbW1hbmRfb25lbGluZShxdy9yZXYtcGFyc2UgSEVBRC8pOworCQkJJHJld3JpdHRlbl9wYXJlbnQgPSBjb21tYW5kX29uZWxpbmUocXcvcmV2LXBhcnNlLywKKwkJCQkJCQkkZ3MtPnJlZm5hbWUpOwogCiAJCQlpZiAoQGRpZmYpIHsKKwkJCQkkY3VycmVudF9oZWFkID0gY29tbWFuZF9vbmVsaW5lKHF3L3Jldi1wYXJzZQorCQkJCQkJCQlIRUFELyk7CiAJCQkJQHJlZnMgPSAoKTsKIAkJCQlteSAoJHVybF8sICRyZXZfLCAkdXVpZF8sICRnc18pID0KIAkJCQkgICAgICAgICAgICAgIHdvcmtpbmdfaGVhZF9pbmZvKCdIRUFEJywgXEByZWZzKTsKQEAgLTEwMTcsNiArMTA2Nyw3IEBACiAJCQkJfQogCQkJCSRwYXJlbnRzID0gXCVwOwogCQkJCSRsaW5lYXJfcmVmcyA9IFxAbDsKKwkJCQl1bmRlZiAkbGFzdF9yZXY7CiAJCQl9CiAJCX0KIAl9CkBAIC0xMTIzLDYgKzExNzQsMTAgQEAKIAkJJGN0eC0+bHMoJGRzdCwgJ0hFQUQnLCAwKTsKIAl9IGFuZCBkaWUgImJyYW5jaCAke2JyYW5jaF9uYW1lfSBhbHJlYWR5IGV4aXN0c1xuIjsKIAorCWlmICgkX3BhcmVudHMpIHsKKwkJbWtfcGFyZW50X2RpcnMoJGN0eCwgJGRzdCk7CisJfQorCiAJcHJpbnQgIkNvcHlpbmcgJHtzcmN9IGF0IHIke3Jldn0gdG8gJHtkc3R9Li4uXG4iOwogCSRjdHgtPmNvcHkoJHNyYywgJHJldiwgJGRzdCkKIAkJdW5sZXNzICRfZHJ5X3J1bjsKQEAgLTExMzAsNiArMTE4NSwxNyBAQAogCSRncy0+ZmV0Y2hfYWxsOwogfQogCitzdWIgbWtfcGFyZW50X2RpcnMgeworCW15ICgkY3R4LCAkcGFyZW50KSA9IEBfOworCSRwYXJlbnQgPX4gc3svW14vXSokfXt9OworCisJaWYgKCFldmFseyRjdHgtPmxzKCRwYXJlbnQsICdIRUFEJywgMCl9KSB7CisJCW1rX3BhcmVudF9kaXJzKCRjdHgsICRwYXJlbnQpOworCQlwcmludCAiQ3JlYXRpbmcgcGFyZW50IGZvbGRlciAke3BhcmVudH0gLi4uXG4iOworCQkkY3R4LT5ta2RpcigkcGFyZW50KSB1bmxlc3MgJF9kcnlfcnVuOworCX0KK30KKwogc3ViIGNtZF9maW5kX3JldiB7CiAJbXkgJHJldmlzaW9uX29yX2hhc2ggPSBzaGlmdCBvciBkaWUgIlNWTiBvciBnaXQgcmV2aXNpb24gcmVxdWlyZWQgIiwKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXMgYSBjb21tYW5kLWxpbmUgYXJndW1lbnRcbiI7CkBAIC0xMTQ0LDcgKzEyMTAsMTMgQEAKIAkJCSAgICAiJGhlYWQgaGlzdG9yeVxuIjsKIAkJfQogCQlteSAkZGVzaXJlZF9yZXZpc2lvbiA9IHN1YnN0cigkcmV2aXNpb25fb3JfaGFzaCwgMSk7Ci0JCSRyZXN1bHQgPSAkZ3MtPnJldl9tYXBfZ2V0KCRkZXNpcmVkX3JldmlzaW9uLCAkdXVpZCk7CisJCWlmICgkX2JlZm9yZSkgeworCQkJJHJlc3VsdCA9ICRncy0+ZmluZF9yZXZfYmVmb3JlKCRkZXNpcmVkX3JldmlzaW9uLCAxKTsKKwkJfSBlbHNpZiAoJF9hZnRlcikgeworCQkJJHJlc3VsdCA9ICRncy0+ZmluZF9yZXZfYWZ0ZXIoJGRlc2lyZWRfcmV2aXNpb24sIDEpOworCQl9IGVsc2UgeworCQkJJHJlc3VsdCA9ICRncy0+cmV2X21hcF9nZXQoJGRlc2lyZWRfcmV2aXNpb24sICR1dWlkKTsKKwkJfQogCX0gZWxzZSB7CiAJCW15ICh1bmRlZiwgJHJldiwgdW5kZWYpID0gY210X21ldGFkYXRhKCRyZXZpc2lvbl9vcl9oYXNoKTsKIAkJJHJlc3VsdCA9ICRyZXY7CkBAIC0xMTkzLDcgKzEyNjUsNyBAQAogCW15ICgkdXJsLCAkcmV2LCAkdXVpZCwgJGdzKSA9IHdvcmtpbmdfaGVhZF9pbmZvKCdIRUFEJyk7CiAJJGdzIHx8PSBHaXQ6OlNWTi0+bmV3OwogCW15ICRyID0gKGRlZmluZWQgJF9yZXZpc2lvbiA/ICRfcmV2aXNpb24gOiAkZ3MtPnJhLT5nZXRfbGF0ZXN0X3Jldm51bSk7Ci0JJGdzLT5wcm9wX3dhbGsoJGdzLT57cGF0aH0sICRyLCBzdWIgeworCSRncy0+cHJvcF93YWxrKCRncy0+cGF0aCwgJHIsIHN1YiB7CiAJCW15ICgkZ3MsICRwYXRoLCAkcHJvcHMpID0gQF87CiAJCXByaW50IFNURE9VVCAiXG4jICRwYXRoXG4iOwogCQlteSAkcyA9ICRwcm9wcy0+eydzdm46aWdub3JlJ30gb3IgcmV0dXJuOwpAQCAtMTIwOSw3ICsxMjgxLDcgQEAKIAlteSAoJHVybCwgJHJldiwgJHV1aWQsICRncykgPSB3b3JraW5nX2hlYWRfaW5mbygnSEVBRCcpOwogCSRncyB8fD0gR2l0OjpTVk4tPm5ldzsKIAlteSAkciA9IChkZWZpbmVkICRfcmV2aXNpb24gPyAkX3JldmlzaW9uIDogJGdzLT5yYS0+Z2V0X2xhdGVzdF9yZXZudW0pOwotCSRncy0+cHJvcF93YWxrKCRncy0+e3BhdGh9LCAkciwgc3ViIHsKKwkkZ3MtPnByb3Bfd2FsaygkZ3MtPnBhdGgsICRyLCBzdWIgewogCQlteSAoJGdzLCAkcGF0aCwgJHByb3BzKSA9IEBfOwogCQlwcmludCBTVERPVVQgIlxuIyAkcGF0aFxuIjsKIAkJbXkgJHMgPSAkcHJvcHMtPnsnc3ZuOmV4dGVybmFscyd9IG9yIHJldHVybjsKQEAgLTEyMjQsNyArMTI5Niw3IEBACiAJbXkgKCR1cmwsICRyZXYsICR1dWlkLCAkZ3MpID0gd29ya2luZ19oZWFkX2luZm8oJ0hFQUQnKTsKIAkkZ3MgfHw9IEdpdDo6U1ZOLT5uZXc7CiAJbXkgJHIgPSAoZGVmaW5lZCAkX3JldmlzaW9uID8gJF9yZXZpc2lvbiA6ICRncy0+cmEtPmdldF9sYXRlc3RfcmV2bnVtKTsKLQkkZ3MtPnByb3Bfd2FsaygkZ3MtPntwYXRofSwgJHIsIHN1YiB7CisJJGdzLT5wcm9wX3dhbGsoJGdzLT5wYXRoLCAkciwgc3ViIHsKIAkJbXkgKCRncywgJHBhdGgsICRwcm9wcykgPSBAXzsKIAkJIyAkcGF0aCBpcyBvZiB0aGUgZm9ybSAvcGF0aC90by9kaXIvCiAJCSRwYXRoID0gJy4nIC4gJHBhdGg7CkBAIC0xMjU0LDMxICsxMzI2LDYgQEAKIAkkZ3MtPm1rZW1wdHlkaXJzKCRfcmV2aXNpb24pOwogfQogCi1zdWIgY2Fub25pY2FsaXplX3BhdGggewotCW15ICgkcGF0aCkgPSBAXzsKLQlteSAkZG90X3NsYXNoX2FkZGVkID0gMDsKLQlpZiAoc3Vic3RyKCRwYXRoLCAwLCAxKSBuZSAiLyIpIHsKLQkJJHBhdGggPSAiLi8iIC4gJHBhdGg7Ci0JCSRkb3Rfc2xhc2hfYWRkZWQgPSAxOwotCX0KLQkjIEZpbGU6OlNwZWMtPmNhbm9ucGF0aCBkb2Vzbid0IGNvbGxhcHNlIHgvLi4veSBpbnRvIHkgKGZvciBhCi0JIyBnb29kIHJlYXNvbiksIHNvIGxldCdzIGRvIHRoaXMgbWFudWFsbHkuCi0JJHBhdGggPX4gcyMvKyMvI2c7Ci0JJHBhdGggPX4gcyMvXC4oPzovfCQpIy8jZzsKLQkkcGF0aCA9fiBzIy9bXi9dKy9cLlwuIyNnOwotCSRwYXRoID1+IHMjLyQjI2c7Ci0JJHBhdGggPX4gcyNeXC4vIyMgaWYgJGRvdF9zbGFzaF9hZGRlZDsKLQkkcGF0aCA9fiBzI14vIyM7Ci0JJHBhdGggPX4gcyNeXC4kIyM7Ci0JcmV0dXJuICRwYXRoOwotfQotCi1zdWIgY2Fub25pY2FsaXplX3VybCB7Ci0JbXkgKCR1cmwpID0gQF87Ci0JJHVybCA9fiBzI14oW146XSs6Ly9bXi9dKi8pKC4qKSQjJDEgLiBjYW5vbmljYWxpemVfcGF0aCgkMikjZTsKLQlyZXR1cm4gJHVybDsKLX0KLQogIyBnZXRfc3ZucHJvcHMoUEFUSCkKICMgLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEhlbHBlciBmb3IgY21kX3Byb3BnZXQgYW5kIGNtZF9wcm9wbGlzdCBiZWxvdy4KQEAgLTEyOTIsNyArMTMzOSw3IEBACiAJJHBhdGggPSAkY21kX2Rpcl9wcmVmaXggLiAkcGF0aDsKIAlmYXRhbCgiTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeTogJHBhdGgiKSB1bmxlc3MgLWUgJHBhdGg7CiAJbXkgJGlzX2RpciA9IC1kICRwYXRoID8gMSA6IDA7Ci0JJHBhdGggPSAkZ3MtPntwYXRofSAuICcvJyAuICRwYXRoOworCSRwYXRoID0gam9pbl9wYXRocygkZ3MtPnBhdGgsICRwYXRoKTsKIAogCSMgY2Fub25pY2FsaXplIHRoZSBwYXRoIChvdGhlcndpc2UgbGlic3ZuIHdpbGwgYWJvcnQgb3IgZmFpbCB0bwogCSMgZmluZCB0aGUgZmlsZSkKQEAgLTEzODMsNyArMTQzMCw3IEBACiAjIHRoaXMgY29tbWFuZCBpcyBzcGVjaWFsIGJlY2F1c2UgaXQgcmVxdWlyZXMgbm8gbWV0YWRhdGEKIHN1YiBjbWRfY29tbWl0X2RpZmYgewogCW15ICgkdGEsICR0YiwgJHVybCkgPSBAXzsKLQlteSAkdXNhZ2UgPSAiVXNhZ2U6ICQwIGNvbW1pdC1kaWZmIC1yPHJldmlzaW9uPiAiLgorCW15ICR1c2FnZSA9ICJ1c2FnZTogJDAgY29tbWl0LWRpZmYgLXI8cmV2aXNpb24+ICIuCiAJICAgICAgICAgICAgIjx0cmVlLWlzaD4gPHRyZWUtaXNoPiBbPFVSTD5dIjsKIAlmYXRhbCgkdXNhZ2UpIGlmICghZGVmaW5lZCAkdGEgfHwgIWRlZmluZWQgJHRiKTsKIAlteSAkc3ZuX3BhdGggPSAnJzsKQEAgLTEzOTMsOCArMTQ0MCw4IEBACiAJCQlmYXRhbCgiTmVlZGVkIFVSTCBvciB1c2FibGUgZ2l0LXN2biAtLWlkIGluICIsCiAJCQkgICAgICAidGhlIGNvbW1hbmQtbGluZVxuIiwgJHVzYWdlKTsKIAkJfQotCQkkdXJsID0gJGdzLT57dXJsfTsKLQkJJHN2bl9wYXRoID0gJGdzLT57cGF0aH07CisJCSR1cmwgPSAkZ3MtPnVybDsKKwkJJHN2bl9wYXRoID0gJGdzLT5wYXRoOwogCX0KIAl1bmxlc3MgKGRlZmluZWQgJF9yZXZpc2lvbikgewogCQlmYXRhbCgiLXJ8LS1yZXZpc2lvbiBpcyBhIHJlcXVpcmVkIGFyZ3VtZW50XG4iLCAkdXNhZ2UpOwpAQCAtMTQyOCwyNCArMTQ3NSw2IEBACiAJfQogfQogCi1zdWIgZXNjYXBlX3VyaV9vbmx5IHsKLQlteSAoJHVyaSkgPSBAXzsKLQlteSBAdG1wOwotCWZvcmVhY2ggKHNwbGl0IG17L30sICR1cmkpIHsKLQkJcy8oW15+XHcuJSstXXwlKD8hW2EtZkEtRjAtOV17Mn0pKS9zcHJpbnRmKCIlJSUwMlgiLG9yZCgkMSkpL2VnOwotCQlwdXNoIEB0bXAsICRfOwotCX0KLQlqb2luKCcvJywgQHRtcCk7Ci19Ci0KLXN1YiBlc2NhcGVfdXJsIHsKLQlteSAoJHVybCkgPSBAXzsKLQlpZiAoJHVybCA9fiBtI14oW146XSspOi8vKFteL10qKSguKikkIykgewotCQlteSAoJHNjaGVtZSwgJGRvbWFpbiwgJHVyaSkgPSAoJDEsICQyLCBlc2NhcGVfdXJpX29ubHkoJDMpKTsKLQkJJHVybCA9ICIkc2NoZW1lOi8vJGRvbWFpbiR1cmkiOwotCX0KLQkkdXJsOwotfQogCiBzdWIgY21kX2luZm8gewogCW15ICRwYXRoID0gY2Fub25pY2FsaXplX3BhdGgoZGVmaW5lZCgkX1swXSkgPyAkX1swXSA6ICIuIik7CkBAIC0xNDcwLDIxICsxNDk5LDIxIEBACiAJIyBjYW5vbmljYWxpemVfcGF0aCgpIHdpbGwgcmV0dXJuICIiIHRvIG1ha2UgbGlic3ZuIDEuNS54IGhhcHB5LAogCSRwYXRoID0gIi4iIGlmICRwYXRoIGVxICIiOwogCi0JbXkgJGZ1bGxfdXJsID0gJHVybCAuICgkZnVsbHBhdGggZXEgIiIgPyAiIiA6ICIvJGZ1bGxwYXRoIik7CisJbXkgJGZ1bGxfdXJsID0gY2Fub25pY2FsaXplX3VybCggYWRkX3BhdGhfdG9fdXJsKCAkdXJsLCAkZnVsbHBhdGggKSApOwogCiAJaWYgKCRfdXJsKSB7Ci0JCXByaW50IGVzY2FwZV91cmwoJGZ1bGxfdXJsKSwgIlxuIjsKKwkJcHJpbnQgIiRmdWxsX3VybFxuIjsKIAkJcmV0dXJuOwogCX0KIAogCW15ICRyZXN1bHQgPSAiUGF0aDogJHBhdGhcbiI7CiAJJHJlc3VsdCAuPSAiTmFtZTogIiAuIGJhc2VuYW1lKCRwYXRoKSAuICJcbiIgaWYgJGZpbGVfdHlwZSBuZSAiZGlyIjsKLQkkcmVzdWx0IC49ICJVUkw6ICIgLiBlc2NhcGVfdXJsKCRmdWxsX3VybCkgLiAiXG4iOworCSRyZXN1bHQgLj0gIlVSTDogJGZ1bGxfdXJsXG4iOwogCiAJZXZhbCB7CiAJCW15ICRyZXBvc19yb290ID0gJGdzLT5yZXBvc19yb290OwogCQlHaXQ6OlNWTjo6cmVtb3ZlX3VzZXJuYW1lKCRyZXBvc19yb290KTsKLQkJJHJlc3VsdCAuPSAiUmVwb3NpdG9yeSBSb290OiAiIC4gZXNjYXBlX3VybCgkcmVwb3Nfcm9vdCkgLiAiXG4iOworCQkkcmVzdWx0IC49ICJSZXBvc2l0b3J5IFJvb3Q6ICIgLiBjYW5vbmljYWxpemVfdXJsKCRyZXBvc19yb290KSAuICJcbiI7CiAJfTsKIAlpZiAoJEApIHsKIAkJJHJlc3VsdCAuPSAiUmVwb3NpdG9yeSBSb290OiAob2ZmbGluZSlcbiI7CkBAIC0xNTc4LDcgKzE2MDcsNyBAQAogfQogCiBzdWIgY21kX2djIHsKLQlpZiAoISRjYW5fY29tcHJlc3MpIHsKKwlpZiAoIWNhbl9jb21wcmVzcygpKSB7CiAJCXdhcm4gIkNvbXByZXNzOjpabGliIGNvdWxkIG5vdCBiZSBmb3VuZDsgdW5oYW5kbGVkLmxvZyAiIC4KIAkJICAgICAiZmlsZXMgd2lsbCBub3QgYmUgY29tcHJlc3NlZC5cbiI7CiAJfQpAQCAtMTU5OCw4ICsxNjI3LDggQEAKIAogc3ViIHBvc3RfZmV0Y2hfY2hlY2tvdXQgewogCXJldHVybiBpZiAkX25vX2NoZWNrb3V0OworCXJldHVybiBpZiB2ZXJpZnlfcmVmKCdIRUFEXjAnKTsKIAlteSAkZ3MgPSAkR2l0OjpTVk46Ol9oZWFkIG9yIHJldHVybjsKLQlyZXR1cm4gaWYgdmVyaWZ5X3JlZigncmVmcy9oZWFkcy9tYXN0ZXJeMCcpOwogCiAJIyBsb29rIGZvciAidHJ1bmsiIHJlZiBpZiBpdCBleGlzdHMKIAlteSAkcmVtb3RlID0gR2l0OjpTVk46OnJlYWRfYWxsX3JlbW90ZXMoKS0+eyRncy0+e3JlcG9faWR9fTsKQEAgLTE2MTIsOSArMTY0MSw4IEBACiAJCX0KIAl9CiAKLQlteSAkdmFsaWRfaGVhZCA9IHZlcmlmeV9yZWYoJ0hFQUReMCcpOwotCWNvbW1hbmRfbm9pc3kocXcodXBkYXRlLXJlZiByZWZzL2hlYWRzL21hc3RlciksICRncy0+cmVmbmFtZSk7Ci0JcmV0dXJuIGlmICgkdmFsaWRfaGVhZCB8fCAhdmVyaWZ5X3JlZignSEVBRF4wJykpOworCWNvbW1hbmRfbm9pc3kocXcodXBkYXRlLXJlZiBIRUFEKSwgJGdzLT5yZWZuYW1lKTsKKwlyZXR1cm4gdW5sZXNzIHZlcmlmeV9yZWYoJ0hFQUReMCcpOwogCiAJcmV0dXJuIGlmICRFTlZ7R0lUX0RJUn0gIX4gbSNeKD86LiovKT9cLmdpdCQjOwogCW15ICRpbmRleCA9ICRFTlZ7R0lUX0lOREVYX0ZJTEV9IHx8ICIkRU5We0dJVF9ESVJ9L2luZGV4IjsKQEAgLTE2MzIsNyArMTY2MCw5IEBACiAKIHN1YiBjb21wbGV0ZV9zdm5fdXJsIHsKIAlteSAoJHVybCwgJHBhdGgpID0gQF87Ci0JJHBhdGggPX4gcyMvKyQjIzsKKwkkcGF0aCA9IGNhbm9uaWNhbGl6ZV9wYXRoKCRwYXRoKTsKKworCSMgSWYgdGhlIHBhdGggaXMgbm90IGEgVVJMLi4uCiAJaWYgKCRwYXRoICF+IG0jXlthLXpcK10rOi8vIykgewogCQlpZiAoIWRlZmluZWQgJHVybCB8fCAkdXJsICF+IG0jXlthLXpcK10rOi8vIykgewogCQkJZmF0YWwoIkU6ICckcGF0aCcgaXMgbm90IGEgY29tcGxldGUgVVJMICIsCkBAIC0xNjQ5LDcgKzE2NzksNyBAQAogCQlwcmludCBTVERFUlIgIlc6ICRzd2l0Y2ggbm90IHNwZWNpZmllZFxuIjsKIAkJcmV0dXJuOwogCX0KLQkkcmVwb19wYXRoID1+IHMjLyskIyM7CisJJHJlcG9fcGF0aCA9IGNhbm9uaWNhbGl6ZV9wYXRoKCRyZXBvX3BhdGgpOwogCWlmICgkcmVwb19wYXRoID1+IG0jXlthLXpcK10rOi8vIykgewogCQkkcmEgPSBHaXQ6OlNWTjo6UmEtPm5ldygkcmVwb19wYXRoKTsKIAkJJHJlcG9fcGF0aCA9ICcnOwpAQCAtMTY2MCwxOCArMTY5MCwxOCBAQAogCQkJICAgICAgImFuZCBhIHNlcGFyYXRlIFVSTCBpcyBub3Qgc3BlY2lmaWVkIik7CiAJCX0KIAl9Ci0JbXkgJHVybCA9ICRyYS0+e3VybH07CisJbXkgJHVybCA9ICRyYS0+dXJsOwogCW15ICRncyA9IEdpdDo6U1ZOLT5pbml0KCR1cmwsIHVuZGVmLCB1bmRlZiwgdW5kZWYsIDEpOwogCW15ICRrID0gInN2bi1yZW1vdGUuJGdzLT57cmVwb19pZH0udXJsIjsKIAlteSAkb3JpZ191cmwgPSBldmFsIHsgY29tbWFuZF9vbmVsaW5lKHF3L2NvbmZpZyAtLWdldC8sICRrKSB9OwotCWlmICgkb3JpZ191cmwgJiYgKCRvcmlnX3VybCBuZSAkZ3MtPnt1cmx9KSkgeworCWlmICgkb3JpZ191cmwgJiYgKCRvcmlnX3VybCBuZSAkZ3MtPnVybCkpIHsKIAkJZGllICIkayBhbHJlYWR5IHNldDogJG9yaWdfdXJsXG4iLAotCQkgICAgIndhbnRlZCB0byBzZXQgdG86ICRncy0+e3VybH1cbiI7CisJCSAgICAid2FudGVkIHRvIHNldCB0bzogJGdzLT51cmxcbiI7CiAJfQotCWNvbW1hbmRfb25lbGluZSgnY29uZmlnJywgJGssICRncy0+e3VybH0pIHVubGVzcyAkb3JpZ191cmw7Ci0JbXkgJHJlbW90ZV9wYXRoID0gIiRncy0+e3BhdGh9LyRyZXBvX3BhdGgiOworCWNvbW1hbmRfb25lbGluZSgnY29uZmlnJywgJGssICRncy0+dXJsKSB1bmxlc3MgJG9yaWdfdXJsOworCisJbXkgJHJlbW90ZV9wYXRoID0gam9pbl9wYXRocyggJGdzLT5wYXRoLCAkcmVwb19wYXRoICk7CiAJJHJlbW90ZV9wYXRoID1+IHN7JShbMC05QS1GXXsyfSl9e2NociBoZXgoJDEpfWllZzsKLQkkcmVtb3RlX3BhdGggPX4gcyMvKyMvI2c7CiAJJHJlbW90ZV9wYXRoID1+IHMjXi8jI2c7CiAJJHJlbW90ZV9wYXRoIC49ICIvKiIgaWYgJHJlbW90ZV9wYXRoICF+IC9cKi87CiAJbXkgKCRuKSA9ICgkc3dpdGNoID1+IC9eLS0oXHcrKS8pOwpAQCAtMjAxNCwxMyArMjA0NCwxMyBAQAogCX0gZWxzaWYgKCEkcmVmKSB7CiAJCSRtZDUtPmFkZCgkYXJnKSBvciBjcm9hayAkITsKIAl9IGVsc2UgewotCQk6OmZhdGFsICJDYW4ndCBwcm92aWRlIE1ENSBoYXNoIGZvciB1bmtub3duIHJlZiB0eXBlOiAnIiwgJHJlZiwgIiciOworCQlmYXRhbCAiQ2FuJ3QgcHJvdmlkZSBNRDUgaGFzaCBmb3IgdW5rbm93biByZWYgdHlwZTogJyIsICRyZWYsICInIjsKIAl9CiAJcmV0dXJuICRtZDUtPmhleGRpZ2VzdCgpOwogfQogCiBzdWIgZ2NfZGlyZWN0b3J5IHsKLQlpZiAoJGNhbl9jb21wcmVzcyAmJiAtZiAkXyAmJiBiYXNlbmFtZSgkXykgZXEgInVuaGFuZGxlZC5sb2ciKSB7CisJaWYgKGNhbl9jb21wcmVzcygpICYmIC1mICRfICYmIGJhc2VuYW1lKCRfKSBlcSAidW5oYW5kbGVkLmxvZyIpIHsKIAkJbXkgJG91dF9maWxlbmFtZSA9ICRfIC4gIi5neiI7CiAJCW9wZW4gbXkgJGluX2ZoLCAiPCIsICRfIG9yIGRpZSAiVW5hYmxlIHRvIG9wZW4gJF86ICQhXG4iOwogCQliaW5tb2RlICRpbl9maDsKQEAgLTIwMzgsMzAzNSArMjA2OCw2IEBACiAJfQogfQogCi1wYWNrYWdlIEdpdDo6U1ZOOwotdXNlIHN0cmljdDsKLXVzZSB3YXJuaW5nczsKLXVzZSBGY250bCBxdy86REVGQVVMVCA6c2Vlay87Ci11c2UgY29uc3RhbnQgcmV2X21hcF9mbXQgPT4gJ05INDAnOwotdXNlIHZhcnMgcXcvJGRlZmF1bHRfcmVwb19pZCAkZGVmYXVsdF9yZWZfaWQgJF9ub19tZXRhZGF0YSAkX2ZvbGxvd19wYXJlbnQKLSAgICAgICAgICAgICRfcmVwYWNrICRfcmVwYWNrX2ZsYWdzICRfdXNlX3N2bV9wcm9wcyAkX2hlYWQKLSAgICAgICAgICAgICRfdXNlX3N2bnN5bmNfcHJvcHMgJG5vX3JldXNlX2V4aXN0aW5nICRfbWluaW1pemVfdXJsCi0JICAgICRfdXNlX2xvZ19hdXRob3IgJF9hZGRfYXV0aG9yX2Zyb20gJF9sb2NhbHRpbWUvOwotdXNlIENhcnAgcXcvY3JvYWsvOwotdXNlIEZpbGU6OlBhdGggcXcvbWtwYXRoLzsKLXVzZSBGaWxlOjpDb3B5IHF3L2NvcHkvOwotdXNlIElQQzo6T3BlbjM7Ci11c2UgVGltZTo6TG9jYWw7Ci11c2UgTWVtb2l6ZTsgICMgY29yZSBzaW5jZSA1LjguMCwgSnVsIDIwMDIKLXVzZSBNZW1vaXplOjpTdG9yYWJsZTsKLXVzZSBQT1NJWCBxdyg6c2lnbmFsX2gpOwotbXkgJGNhbl91c2VfeWFtbDsKLUJFR0lOIHsKLQkkY2FuX3VzZV95YW1sID0gZXZhbCB7IHJlcXVpcmUgR2l0OjpTVk46Ok1lbW9pemU6OllBTUw7IDF9OwotfQotCi1teSAoJF9nY19uciwgJF9nY19wZXJpb2QpOwotCi0jIHByb3BlcnRpZXMgdGhhdCB3ZSBkbyBub3QgbG9nOgotbXkgJVNLSVBfUFJPUDsKLUJFR0lOIHsKLQklU0tJUF9QUk9QID0gbWFwIHsgJF8gPT4gMSB9IHF3L3N2bjp3YzpyYV9kYXY6dmVyc2lvbi11cmwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2bjpzcGVjaWFsIHN2bjpleGVjdXRhYmxlCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdm46ZW50cnk6Y29tbWl0dGVkLXJldgotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZuOmVudHJ5Omxhc3QtYXV0aG9yCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdm46ZW50cnk6dXVpZAotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZuOmVudHJ5OmNvbW1pdHRlZC1kYXRlLzsKLQotCSMgc29tZSBvcHRpb25zIGFyZSByZWFkIGdsb2JhbGx5LCBidXQgY2FuIGJlIG92ZXJyaWRkZW4gbG9jYWxseQotCSMgcGVyIFtzdm4tcmVtb3RlICIuLi4iXSBzZWN0aW9uLiAgQ29tbWFuZC1saW5lIG9wdGlvbnMgd2lsbCAqTk9UKgotCSMgb3ZlcnJpZGUgb3B0aW9ucyBzZXQgaW4gYW4gW3N2bi1yZW1vdGUgIi4uLiJdIHNlY3Rpb24KLQlubyBzdHJpY3QgJ3JlZnMnOwotCWZvciBteSAkb3B0aW9uIChxdy9mb2xsb3dfcGFyZW50IG5vX21ldGFkYXRhIHVzZV9zdm1fcHJvcHMKLQkJCSAgIHVzZV9zdm5zeW5jX3Byb3BzLykgewotCQlteSAka2V5ID0gJG9wdGlvbjsKLQkJJGtleSA9fiB0ci9fLy9kOwotCQlteSAkcHJvcCA9ICItJG9wdGlvbiI7Ci0JCSokb3B0aW9uID0gc3ViIHsKLQkJCW15ICgkc2VsZikgPSBAXzsKLQkJCXJldHVybiAkc2VsZi0+eyRwcm9wfSBpZiBleGlzdHMgJHNlbGYtPnskcHJvcH07Ci0JCQlteSAkayA9ICJzdm4tcmVtb3RlLiRzZWxmLT57cmVwb19pZH0uJGtleSI7Ci0JCQlldmFsIHsgY29tbWFuZF9vbmVsaW5lKHF3L2NvbmZpZyAtLWdldC8sICRrKSB9OwotCQkJaWYgKCRAKSB7Ci0JCQkJJHNlbGYtPnskcHJvcH0gPSAkeyJHaXQ6OlNWTjo6XyRvcHRpb24ifTsKLQkJCX0gZWxzZSB7Ci0JCQkJbXkgJHYgPSBjb21tYW5kX29uZWxpbmUocXcvY29uZmlnIC0tYm9vbC8sJGspOwotCQkJCSRzZWxmLT57JHByb3B9ID0gJHYgZXEgJ2ZhbHNlJyA/IDAgOiAxOwotCQkJfQotCQkJcmV0dXJuICRzZWxmLT57JHByb3B9OwotCQl9Ci0JfQotfQotCi0KLW15ICglTE9DS0ZJTEVTLCAlSU5ERVhfRklMRVMpOwotRU5EIHsKLQl1bmxpbmsga2V5cyAlTE9DS0ZJTEVTIGlmICVMT0NLRklMRVM7Ci0JdW5saW5rIGtleXMgJUlOREVYX0ZJTEVTIGlmICVJTkRFWF9GSUxFUzsKLX0KLQotc3ViIHJlc29sdmVfbG9jYWxfZ2xvYnMgewotCW15ICgkdXJsLCAkZmV0Y2gsICRnbG9iX3NwZWMpID0gQF87Ci0JcmV0dXJuIHVubGVzcyBkZWZpbmVkICRnbG9iX3NwZWM7Ci0JbXkgJHJlZiA9ICRnbG9iX3NwZWMtPntyZWZ9OwotCW15ICRwYXRoID0gJGdsb2Jfc3BlYy0+e3BhdGh9OwotCWZvcmVhY2ggKGNvbW1hbmQocXcjZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSUocmVmbmFtZSkgcmVmcy8jKSkgewotCQluZXh0IHVubGVzcyBtI14kcmVmLT57cmVnZXh9JCM7Ci0JCW15ICRwID0gJDE7Ci0JCW15ICRwYXRobmFtZSA9IGRlc2FuaXRpemVfcmVmbmFtZSgkcGF0aC0+ZnVsbF9wYXRoKCRwKSk7Ci0JCW15ICRyZWZuYW1lID0gZGVzYW5pdGl6ZV9yZWZuYW1lKCRyZWYtPmZ1bGxfcGF0aCgkcCkpOwotCQlpZiAobXkgJGV4aXN0aW5nID0gJGZldGNoLT57JHBhdGhuYW1lfSkgewotCQkJaWYgKCRleGlzdGluZyBuZSAkcmVmbmFtZSkgewotCQkJCWRpZSAiUmVmc3BlYyBjb25mbGljdDpcbiIsCi0JCQkJICAgICJleGlzdGluZzogJGV4aXN0aW5nXG4iLAotCQkJCSAgICAiIGdsb2JiZWQ6ICRyZWZuYW1lXG4iOwotCQkJfQotCQkJbXkgJHUgPSAoOjpjbXRfbWV0YWRhdGEoIiRyZWZuYW1lIikpWzBdOwotCQkJJHUgPX4gcyFeXFEkdXJsXEUoL3wkKSEhIG9yIGRpZQotCQkJICAiJHJlZm5hbWU6ICckdXJsJyBub3QgZm91bmQgaW4gJyR1J1xuIjsKLQkJCWlmICgkcGF0aG5hbWUgbmUgJHUpIHsKLQkJCQl3YXJuICJXOiBSZWZzcGVjIGdsb2IgY29uZmxpY3QgIiwKLQkJCQkgICAgICIocmVmOiAkcmVmbmFtZSk6XG4iLAotCQkJCSAgICAgImV4cGVjdGVkIHBhdGg6ICRwYXRobmFtZVxuIiwKLQkJCQkgICAgICIgICAgcmVhbCBwYXRoOiAkdVxuIiwKLQkJCQkgICAgICJDb250aW51aW5nIGFoZWFkIHdpdGggJHVcbiI7Ci0JCQkJbmV4dDsKLQkJCX0KLQkJfSBlbHNlIHsKLQkJCSRmZXRjaC0+eyRwYXRobmFtZX0gPSAkcmVmbmFtZTsKLQkJfQotCX0KLX0KLQotc3ViIHBhcnNlX3JldmlzaW9uX2FyZ3VtZW50IHsKLQlteSAoJGJhc2UsICRoZWFkKSA9IEBfOwotCWlmICghZGVmaW5lZCAkOjpfcmV2aXNpb24gfHwgJDo6X3JldmlzaW9uIGVxICdCQVNFOkhFQUQnKSB7Ci0JCXJldHVybiAoJGJhc2UsICRoZWFkKTsKLQl9Ci0JcmV0dXJuICgkMSwgJDIpIGlmICgkOjpfcmV2aXNpb24gPX4gL14oXGQrKTooXGQrKSQvKTsKLQlyZXR1cm4gKCQ6Ol9yZXZpc2lvbiwgJDo6X3JldmlzaW9uKSBpZiAoJDo6X3JldmlzaW9uID1+IC9eXGQrJC8pOwotCXJldHVybiAoJGhlYWQsICRoZWFkKSBpZiAoJDo6X3JldmlzaW9uIGVxICdIRUFEJyk7Ci0JcmV0dXJuICgkYmFzZSwgJDEpIGlmICgkOjpfcmV2aXNpb24gPX4gL15CQVNFOihcZCspJC8pOwotCXJldHVybiAoJDEsICRoZWFkKSBpZiAoJDo6X3JldmlzaW9uID1+IC9eKFxkKyk6SEVBRCQvKTsKLQlkaWUgInJldmlzaW9uIGFyZ3VtZW50OiAkOjpfcmV2aXNpb24gbm90IHVuZGVyc3Rvb2QgYnkgZ2l0LXN2blxuIjsKLX0KLQotc3ViIGZldGNoX2FsbCB7Ci0JbXkgKCRyZXBvX2lkLCAkcmVtb3RlcykgPSBAXzsKLQlpZiAocmVmICRyZXBvX2lkKSB7Ci0JCW15ICRncyA9ICRyZXBvX2lkOwotCQkkcmVwb19pZCA9IHVuZGVmOwotCQkkcmVwb19pZCA9ICRncy0+e3JlcG9faWR9OwotCX0KLQkkcmVtb3RlcyB8fD0gcmVhZF9hbGxfcmVtb3RlcygpOwotCW15ICRyZW1vdGUgPSAkcmVtb3Rlcy0+eyRyZXBvX2lkfSBvcgotCSAgICAgICAgICAgICBkaWUgIltzdm4tcmVtb3RlIFwiJHJlcG9faWRcIl0gdW5rbm93blxuIjsKLQlteSAkZmV0Y2ggPSAkcmVtb3RlLT57ZmV0Y2h9OwotCW15ICR1cmwgPSAkcmVtb3RlLT57dXJsfSBvciBkaWUgInN2bi1yZW1vdGUuJHJlcG9faWQudXJsIG5vdCBkZWZpbmVkXG4iOwotCW15IChAZ3MsIEBnbG9icyk7Ci0JbXkgJHJhID0gR2l0OjpTVk46OlJhLT5uZXcoJHVybCk7Ci0JbXkgJHV1aWQgPSAkcmEtPmdldF91dWlkOwotCW15ICRoZWFkID0gJHJhLT5nZXRfbGF0ZXN0X3Jldm51bTsKLQotCSMgaWdub3JlIGVycm9ycywgJGhlYWQgcmV2aXNpb24gbWF5IG5vdCBldmVuIGV4aXN0IGFueW1vcmUKLQlldmFsIHsgJHJhLT5nZXRfbG9nKCIiLCAkaGVhZCwgMCwgMSwgMCwgMSwgc3ViIHsgJGhlYWQgPSAkX1sxXSB9KSB9OwotCXdhcm4gIlc6ICRAXG4iIGlmICRAOwotCi0JbXkgJGJhc2UgPSBkZWZpbmVkICRmZXRjaCA/ICRoZWFkIDogMDsKLQotCSMgcmVhZCB0aGUgbWF4IHJldnMgZm9yIHdpbGRjYXJkIGV4cGFuc2lvbiAoYnJhbmNoZXMvKiwgdGFncy8qKQotCWZvcmVhY2ggbXkgJHQgKHF3L2JyYW5jaGVzIHRhZ3MvKSB7Ci0JCWRlZmluZWQgJHJlbW90ZS0+eyR0fSBvciBuZXh0OwotCQlwdXNoIEBnbG9icywgQHskcmVtb3RlLT57JHR9fTsKLQotCQlteSAkbWF4X3JldiA9IGV2YWwgeyB0bXBfY29uZmlnKHF3Ly0taW50IC0tZ2V0LywKLQkJICAgICAgICAgICAgICAgICAgICAgICAgICJzdm4tcmVtb3RlLiRyZXBvX2lkLiR7dH0tbWF4UmV2IikgfTsKLQkJaWYgKGRlZmluZWQgJG1heF9yZXYgJiYgKCRtYXhfcmV2IDwgJGJhc2UpKSB7Ci0JCQkkYmFzZSA9ICRtYXhfcmV2OwotCQl9IGVsc2lmICghZGVmaW5lZCAkbWF4X3JldikgewotCQkJJGJhc2UgPSAwOwotCQl9Ci0JfQotCi0JaWYgKCRmZXRjaCkgewotCQlmb3JlYWNoIG15ICRwIChzb3J0IGtleXMgJSRmZXRjaCkgewotCQkJbXkgJGdzID0gR2l0OjpTVk4tPm5ldygkZmV0Y2gtPnskcH0sICRyZXBvX2lkLCAkcCk7Ci0JCQlteSAkbHIgPSAkZ3MtPnJldl9tYXBfbWF4OwotCQkJaWYgKGRlZmluZWQgJGxyKSB7Ci0JCQkJJGJhc2UgPSAkbHIgaWYgKCRsciA8ICRiYXNlKTsKLQkJCX0KLQkJCXB1c2ggQGdzLCAkZ3M7Ci0JCX0KLQl9Ci0KLQkoJGJhc2UsICRoZWFkKSA9IHBhcnNlX3JldmlzaW9uX2FyZ3VtZW50KCRiYXNlLCAkaGVhZCk7Ci0JJHJhLT5nc19mZXRjaF9sb29wX2NvbW1vbigkYmFzZSwgJGhlYWQsIFxAZ3MsIFxAZ2xvYnMpOwotfQotCi1zdWIgcmVhZF9hbGxfcmVtb3RlcyB7Ci0JbXkgJHIgPSB7fTsKLQlteSAkdXNlX3N2bV9wcm9wcyA9IGV2YWwgeyBjb21tYW5kX29uZWxpbmUocXcvY29uZmlnIC0tYm9vbAotCSAgICBzdm4udXNlU3ZtUHJvcHMvKSB9OwotCSR1c2Vfc3ZtX3Byb3BzID0gJHVzZV9zdm1fcHJvcHMgZXEgJ3RydWUnIGlmICR1c2Vfc3ZtX3Byb3BzOwotCW15ICRzdm5fcmVmc3BlYyA9IHFye1xzKiguKj8pXHMqOlxzKiguKz8pXHMqfTsKLQlmb3JlYWNoIChncmVwIHsgcy9ec3ZuLXJlbW90ZVwuLy8gfSBjb21tYW5kKHF3L2NvbmZpZyAtbC8pKSB7Ci0JCWlmIChtIV4oLispXC5mZXRjaD0kc3ZuX3JlZnNwZWMkISkgewotCQkJbXkgKCRyZW1vdGUsICRsb2NhbF9yZWYsICRyZW1vdGVfcmVmKSA9ICgkMSwgJDIsICQzKTsKLQkJCWRpZSgic3ZuLXJlbW90ZS4kcmVtb3RlOiByZW1vdGUgcmVmICckcmVtb3RlX3JlZicgIgotCQkJICAgIC4gIm11c3Qgc3RhcnQgd2l0aCAncmVmcy8nXG4iKQotCQkJCXVubGVzcyAkcmVtb3RlX3JlZiA9fiBte15yZWZzL307Ci0JCQkkbG9jYWxfcmVmID0gdXJpX2RlY29kZSgkbG9jYWxfcmVmKTsKLQkJCSRyLT57JHJlbW90ZX0tPntmZXRjaH0tPnskbG9jYWxfcmVmfSA9ICRyZW1vdGVfcmVmOwotCQkJJHItPnskcmVtb3RlfS0+e3N2bX0gPSB7fSBpZiAkdXNlX3N2bV9wcm9wczsKLQkJfSBlbHNpZiAobSFeKC4rKVwudXNlc3ZtcHJvcHM9XHMqKC4qKVxzKiQhKSB7Ci0JCQkkci0+eyQxfS0+e3N2bX0gPSB7fTsKLQkJfSBlbHNpZiAobSFeKC4rKVwudXJsPVxzKiguKilccyokISkgewotCQkJJHItPnskMX0tPnt1cmx9ID0gJDI7Ci0JCX0gZWxzaWYgKG0hXiguKylcLnB1c2h1cmw9XHMqKC4qKVxzKiQhKSB7Ci0JCQkkci0+eyQxfS0+e3B1c2h1cmx9ID0gJDI7Ci0JCX0gZWxzaWYgKG0hXiguKylcLmlnbm9yZS1yZWZzPVxzKiguKilccyokISkgewotCQkJJHItPnskMX0tPntpZ25vcmVfcmVmc19yZWdleH0gPSAkMjsKLQkJfSBlbHNpZiAobSFeKC4rKVwuKGJyYW5jaGVzfHRhZ3MpPSRzdm5fcmVmc3BlYyQhKSB7Ci0JCQlteSAoJHJlbW90ZSwgJHQsICRsb2NhbF9yZWYsICRyZW1vdGVfcmVmKSA9Ci0JCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCQxLCAkMiwgJDMsICQ0KTsKLQkJCWRpZSgic3ZuLXJlbW90ZS4kcmVtb3RlOiByZW1vdGUgcmVmICckcmVtb3RlX3JlZicgKCR0KSAiCi0JCQkgICAgLiAibXVzdCBzdGFydCB3aXRoICdyZWZzLydcbiIpCi0JCQkJdW5sZXNzICRyZW1vdGVfcmVmID1+IG17XnJlZnMvfTsKLQkJCSRsb2NhbF9yZWYgPSB1cmlfZGVjb2RlKCRsb2NhbF9yZWYpOwotCQkJbXkgJHJzID0gewotCQkJICAgIHQgPT4gJHQsCi0JCQkgICAgcmVtb3RlID0+ICRyZW1vdGUsCi0JCQkgICAgcGF0aCA9PiBHaXQ6OlNWTjo6R2xvYlNwZWMtPm5ldygkbG9jYWxfcmVmLCAxKSwKLQkJCSAgICByZWYgPT4gR2l0OjpTVk46Okdsb2JTcGVjLT5uZXcoJHJlbW90ZV9yZWYsIDApIH07Ci0JCQlpZiAobGVuZ3RoKCRycy0+e3JlZn0tPntyaWdodH0pICE9IDApIHsKLQkJCQlkaWUgIlRoZSAnKicgZ2xvYiBjaGFyYWN0ZXIgbXVzdCBiZSB0aGUgbGFzdCAiLAotCQkJCSAgICAiY2hhcmFjdGVyIG9mICckcmVtb3RlX3JlZidcbiI7Ci0JCQl9Ci0JCQlwdXNoIEB7ICRyLT57JHJlbW90ZX0tPnskdH0gfSwgJHJzOwotCQl9Ci0JfQotCi0JbWFwIHsKLQkJaWYgKGRlZmluZWQgJHItPnskX30tPntzdm19KSB7Ci0JCQlteSAkc3ZtOwotCQkJZXZhbCB7Ci0JCQkJbXkgJHNlY3Rpb24gPSAic3ZuLXJlbW90ZS4kXyI7Ci0JCQkJJHN2bSA9IHsKLQkJCQkJc291cmNlID0+IHRtcF9jb25maWcoJy0tZ2V0JywKLQkJCQkJICAgICIkc2VjdGlvbi5zdm0tc291cmNlIiksCi0JCQkJCXJlcGxhY2UgPT4gdG1wX2NvbmZpZygnLS1nZXQnLAotCQkJCQkgICAgIiRzZWN0aW9uLnN2bS1yZXBsYWNlIiksCi0JCQkJfQotCQkJfTsKLQkJCSRyLT57JF99LT57c3ZtfSA9ICRzdm07Ci0JCX0KLQl9IGtleXMgJSRyOwotCi0JZm9yZWFjaCBteSAkcmVtb3RlIChrZXlzICUkcikgewotCQlmb3JlYWNoICggZ3JlcCB7IGRlZmluZWQgJF8gfQotCQkJICBtYXAgeyAkci0+eyRyZW1vdGV9LT57JF99IH0gcXcoYnJhbmNoZXMgdGFncykgKSB7Ci0JCQlmb3JlYWNoIG15ICRycyAoIEAkXyApIHsKLQkJCQkkcnMtPntpZ25vcmVfcmVmc19yZWdleH0gPQotCQkJCSAgICAkci0+eyRyZW1vdGV9LT57aWdub3JlX3JlZnNfcmVnZXh9OwotCQkJfQotCQl9Ci0JfQotCi0JJHI7Ci19Ci0KLXN1YiBpbml0X3ZhcnMgewotCSRfZ2NfbnIgPSAkX2djX3BlcmlvZCA9IDEwMDA7Ci0JaWYgKGRlZmluZWQgJF9yZXBhY2sgfHwgZGVmaW5lZCAkX3JlcGFja19mbGFncykgewotCSAgICAgICB3YXJuICJSZXBhY2sgb3B0aW9ucyBhcmUgb2Jzb2xldGU7IHRoZXkgaGF2ZSBubyBlZmZlY3QuXG4iOwotCX0KLX0KLQotc3ViIHZlcmlmeV9yZW1vdGVzX3Nhbml0eSB7Ci0JcmV0dXJuIHVubGVzcyAtZCAkRU5We0dJVF9ESVJ9OwotCW15ICVzZWVuOwotCWZvcmVhY2ggKGNvbW1hbmQocXcvY29uZmlnIC1sLykpIHsKLQkJaWYgKG0hXnN2bi1yZW1vdGVcLig/Oi4rKVwuZmV0Y2g9Lio6cmVmcy9yZW1vdGVzLyhcUyspXHMqJCEpIHsKLQkJCWlmICgkc2VlbnskMX0pIHsKLQkJCQlkaWUgIlJlbW90ZSByZWYgcmVmcy9yZW1vdGUvJDEgaXMgdHJhY2tlZCBieSIsCi0JCQkJICAgICJcbiAgXCIkX1wiXG5hbmRcbiAgXCIkc2VlbnskMX1cIlxuIiwKLQkJCQkgICAgIlBsZWFzZSByZXNvbHZlIHRoaXMgYW1iaWd1aXR5IGluICIsCi0JCQkJICAgICJ5b3VyIGdpdCBjb25maWd1cmF0aW9uIGZpbGUgYmVmb3JlICIsCi0JCQkJICAgICJjb250aW51aW5nXG4iOwotCQkJfQotCQkJJHNlZW57JDF9ID0gJF87Ci0JCX0KLQl9Ci19Ci0KLXN1YiBmaW5kX2V4aXN0aW5nX3JlbW90ZSB7Ci0JbXkgKCR1cmwsICRyZW1vdGVzKSA9IEBfOwotCXJldHVybiB1bmRlZiBpZiAkbm9fcmV1c2VfZXhpc3Rpbmc7Ci0JbXkgJGV4aXN0aW5nOwotCWZvcmVhY2ggbXkgJHJlcG9faWQgKGtleXMgJSRyZW1vdGVzKSB7Ci0JCW15ICR1ID0gJHJlbW90ZXMtPnskcmVwb19pZH0tPnt1cmx9IG9yIG5leHQ7Ci0JCW5leHQgaWYgJHUgbmUgJHVybDsKLQkJJGV4aXN0aW5nID0gJHJlcG9faWQ7Ci0JCWxhc3Q7Ci0JfQotCSRleGlzdGluZzsKLX0KLQotc3ViIGluaXRfcmVtb3RlX2NvbmZpZyB7Ci0JbXkgKCRzZWxmLCAkdXJsLCAkbm9fd3JpdGUpID0gQF87Ci0JJHVybCA9fiBzIS8rJCEhOyAjIHN0cmlwIHRyYWlsaW5nIHNsYXNoCi0JbXkgJHIgPSByZWFkX2FsbF9yZW1vdGVzKCk7Ci0JbXkgJGV4aXN0aW5nID0gZmluZF9leGlzdGluZ19yZW1vdGUoJHVybCwgJHIpOwotCWlmICgkZXhpc3RpbmcpIHsKLQkJdW5sZXNzICgkbm9fd3JpdGUpIHsKLQkJCXByaW50IFNUREVSUiAiVXNpbmcgZXhpc3RpbmcgIiwKLQkJCQkgICAgICJbc3ZuLXJlbW90ZSBcIiRleGlzdGluZ1wiXVxuIjsKLQkJfQotCQkkc2VsZi0+e3JlcG9faWR9ID0gJGV4aXN0aW5nOwotCX0gZWxzaWYgKCRfbWluaW1pemVfdXJsKSB7Ci0JCW15ICRtaW5fdXJsID0gR2l0OjpTVk46OlJhLT5uZXcoJHVybCktPm1pbmltaXplX3VybDsKLQkJJGV4aXN0aW5nID0gZmluZF9leGlzdGluZ19yZW1vdGUoJG1pbl91cmwsICRyKTsKLQkJaWYgKCRleGlzdGluZykgewotCQkJdW5sZXNzICgkbm9fd3JpdGUpIHsKLQkJCQlwcmludCBTVERFUlIgIlVzaW5nIGV4aXN0aW5nICIsCi0JCQkJCSAgICAgIltzdm4tcmVtb3RlIFwiJGV4aXN0aW5nXCJdXG4iOwotCQkJfQotCQkJJHNlbGYtPntyZXBvX2lkfSA9ICRleGlzdGluZzsKLQkJfQotCQlpZiAoJG1pbl91cmwgbmUgJHVybCkgewotCQkJdW5sZXNzICgkbm9fd3JpdGUpIHsKLQkJCQlwcmludCBTVERFUlIgIlVzaW5nIGhpZ2hlciBsZXZlbCBvZiBVUkw6ICIsCi0JCQkJCSAgICAgIiR1cmwgPT4gJG1pbl91cmxcbiI7Ci0JCQl9Ci0JCQlteSAkb2xkX3BhdGggPSAkc2VsZi0+e3BhdGh9OwotCQkJJHNlbGYtPntwYXRofSA9ICR1cmw7Ci0JCQkkc2VsZi0+e3BhdGh9ID1+IHMhXlxRJG1pbl91cmxcRSgvfCQpISE7Ci0JCQlpZiAobGVuZ3RoICRvbGRfcGF0aCkgewotCQkJCSRzZWxmLT57cGF0aH0gLj0gIi8kb2xkX3BhdGgiOwotCQkJfQotCQkJJHVybCA9ICRtaW5fdXJsOwotCQl9Ci0JfQotCW15ICRvcmlnX3VybDsKLQlpZiAoISRleGlzdGluZykgewotCQkjIHZlcmlmeSB0aGF0IHdlIGFyZW4ndCBvdmVyd3JpdGluZyBhbnl0aGluZzoKLQkJJG9yaWdfdXJsID0gZXZhbCB7Ci0JCQljb21tYW5kX29uZWxpbmUoJ2NvbmZpZycsICctLWdldCcsCi0JCQkJCSJzdm4tcmVtb3RlLiRzZWxmLT57cmVwb19pZH0udXJsIikKLQkJfTsKLQkJaWYgKCRvcmlnX3VybCAmJiAoJG9yaWdfdXJsIG5lICR1cmwpKSB7Ci0JCQlkaWUgInN2bi1yZW1vdGUuJHNlbGYtPntyZXBvX2lkfS51cmwgYWxyZWFkeSBzZXQ6ICIsCi0JCQkgICAgIiRvcmlnX3VybFxud2FudGVkIHRvIHNldCB0bzogJHVybFxuIjsKLQkJfQotCX0KLQlteSAoJHhyZXBvX2lkLCAkeHBhdGgpID0gZmluZF9yZWYoJHNlbGYtPnJlZm5hbWUpOwotCWlmICghJG5vX3dyaXRlICYmIGRlZmluZWQgJHhwYXRoKSB7Ci0JCWRpZSAic3ZuLXJlbW90ZS4keHJlcG9faWQuZmV0Y2ggYWxyZWFkeSBzZXQgdG8gdHJhY2sgIiwKLQkJICAgICIkeHBhdGg6IiwgJHNlbGYtPnJlZm5hbWUsICJcbiI7Ci0JfQotCXVubGVzcyAoJG5vX3dyaXRlKSB7Ci0JCWNvbW1hbmRfbm9pc3koJ2NvbmZpZycsCi0JCQkgICAgICAic3ZuLXJlbW90ZS4kc2VsZi0+e3JlcG9faWR9LnVybCIsICR1cmwpOwotCQkkc2VsZi0+e3BhdGh9ID1+IHN7Xi99e307Ci0JCSRzZWxmLT57cGF0aH0gPX4gc3slKFswLTlBLUZdezJ9KX17Y2hyIGhleCgkMSl9aWVnOwotCQljb21tYW5kX25vaXN5KCdjb25maWcnLCAnLS1hZGQnLAotCQkJICAgICAgInN2bi1yZW1vdGUuJHNlbGYtPntyZXBvX2lkfS5mZXRjaCIsCi0JCQkgICAgICAiJHNlbGYtPntwYXRofToiLiRzZWxmLT5yZWZuYW1lKTsKLQl9Ci0JJHNlbGYtPnt1cmx9ID0gJHVybDsKLX0KLQotc3ViIGZpbmRfYnlfdXJsIHsgIyByZXBvc19yb290IGFuZCwgcGF0aCBhcmUgb3B0aW9uYWwKLQlteSAoJGNsYXNzLCAkZnVsbF91cmwsICRyZXBvc19yb290LCAkcGF0aCkgPSBAXzsKLQotCXJldHVybiB1bmRlZiB1bmxlc3MgZGVmaW5lZCAkZnVsbF91cmw7Ci0JcmVtb3ZlX3VzZXJuYW1lKCRmdWxsX3VybCk7Ci0JcmVtb3ZlX3VzZXJuYW1lKCRyZXBvc19yb290KSBpZiBkZWZpbmVkICRyZXBvc19yb290OwotCW15ICRyZW1vdGVzID0gcmVhZF9hbGxfcmVtb3RlcygpOwotCWlmIChkZWZpbmVkICRmdWxsX3VybCAmJiBkZWZpbmVkICRyZXBvc19yb290ICYmICFkZWZpbmVkICRwYXRoKSB7Ci0JCSRwYXRoID0gJGZ1bGxfdXJsOwotCQkkcGF0aCA9fiBzI15cUSRyZXBvc19yb290XEUoPzovfCQpIyM7Ci0JfQotCWZvcmVhY2ggbXkgJHJlcG9faWQgKGtleXMgJSRyZW1vdGVzKSB7Ci0JCW15ICR1ID0gJHJlbW90ZXMtPnskcmVwb19pZH0tPnt1cmx9IG9yIG5leHQ7Ci0JCXJlbW92ZV91c2VybmFtZSgkdSk7Ci0JCW5leHQgaWYgZGVmaW5lZCAkcmVwb3Nfcm9vdCAmJiAkcmVwb3Nfcm9vdCBuZSAkdTsKLQotCQlteSAkZmV0Y2ggPSAkcmVtb3Rlcy0+eyRyZXBvX2lkfS0+e2ZldGNofSB8fCB7fTsKLQkJZm9yZWFjaCBteSAkdCAocXcvYnJhbmNoZXMgdGFncy8pIHsKLQkJCWZvcmVhY2ggbXkgJGdsb2JzcGVjIChAeyRyZW1vdGVzLT57JHJlcG9faWR9LT57JHR9fSkgewotCQkJCXJlc29sdmVfbG9jYWxfZ2xvYnMoJHUsICRmZXRjaCwgJGdsb2JzcGVjKTsKLQkJCX0KLQkJfQotCQlteSAkcCA9ICRwYXRoOwotCQlteSAkcndyID0gcmV3cml0ZV9yb290KHtyZXBvX2lkID0+ICRyZXBvX2lkfSk7Ci0JCW15ICRzdm0gPSAkcmVtb3Rlcy0+eyRyZXBvX2lkfS0+e3N2bX0KLQkJCWlmIGRlZmluZWQgJHJlbW90ZXMtPnskcmVwb19pZH0tPntzdm19OwotCQl1bmxlc3MgKGRlZmluZWQgJHApIHsKLQkJCSRwID0gJGZ1bGxfdXJsOwotCQkJbXkgJHogPSAkdTsKLQkJCW15ICRwcmVmaXggPSAnJzsKLQkJCWlmICgkcndyKSB7Ci0JCQkJJHogPSAkcndyOwotCQkJCXJlbW92ZV91c2VybmFtZSgkeik7Ci0JCQl9IGVsc2lmIChkZWZpbmVkICRzdm0pIHsKLQkJCQkkeiA9ICRzdm0tPntzb3VyY2V9OwotCQkJCSRwcmVmaXggPSAkc3ZtLT57cmVwbGFjZX07Ci0JCQkJJHByZWZpeCA9fiBzI15cUSR1XEUoPzovfCQpIyM7Ci0JCQkJJHByZWZpeCA9fiBzIy8kIyM7Ci0JCQl9Ci0JCQkkcCA9fiBzI15cUSR6XEUoPzovfCQpIyRwcmVmaXgjIG9yIG5leHQ7Ci0JCX0KLQkJZm9yZWFjaCBteSAkZiAoa2V5cyAlJGZldGNoKSB7Ci0JCQluZXh0IGlmICRmIG5lICRwOwotCQkJcmV0dXJuIEdpdDo6U1ZOLT5uZXcoJGZldGNoLT57JGZ9LCAkcmVwb19pZCwgJGYpOwotCQl9Ci0JfQotCXVuZGVmOwotfQotCi1zdWIgaW5pdCB7Ci0JbXkgKCRjbGFzcywgJHVybCwgJHBhdGgsICRyZXBvX2lkLCAkcmVmX2lkLCAkbm9fd3JpdGUpID0gQF87Ci0JbXkgJHNlbGYgPSBfbmV3KCRjbGFzcywgJHJlcG9faWQsICRyZWZfaWQsICRwYXRoKTsKLQlpZiAoZGVmaW5lZCAkdXJsKSB7Ci0JCSRzZWxmLT5pbml0X3JlbW90ZV9jb25maWcoJHVybCwgJG5vX3dyaXRlKTsKLQl9Ci0JJHNlbGY7Ci19Ci0KLXN1YiBmaW5kX3JlZiB7Ci0JbXkgKCRyZWZfaWQpID0gQF87Ci0JZm9yZWFjaCAoY29tbWFuZChxdy9jb25maWcgLWwvKSkgewotCQluZXh0IHVubGVzcyBtIV5zdm4tcmVtb3RlXC4oLispXC5mZXRjaD0KLQkJICAgICAgICAgICAgICBccyooLio/KVxzKjpccyooLis/KVxzKiQheDsKLQkJbXkgKCRyZXBvX2lkLCAkcGF0aCwgJHJlZikgPSAoJDEsICQyLCAkMyk7Ci0JCWlmICgkcmVmIGVxICRyZWZfaWQpIHsKLQkJCSRwYXRoID0gJycgaWYgKCRwYXRoID1+IG0jXlwuLz8jKTsKLQkJCXJldHVybiAoJHJlcG9faWQsICRwYXRoKTsKLQkJfQotCX0KLQkodW5kZWYsIHVuZGVmLCB1bmRlZik7Ci19Ci0KLXN1YiBuZXcgewotCW15ICgkY2xhc3MsICRyZWZfaWQsICRyZXBvX2lkLCAkcGF0aCkgPSBAXzsKLQlpZiAoZGVmaW5lZCAkcmVmX2lkICYmICFkZWZpbmVkICRyZXBvX2lkICYmICFkZWZpbmVkICRwYXRoKSB7Ci0JCSgkcmVwb19pZCwgJHBhdGgpID0gZmluZF9yZWYoJHJlZl9pZCk7Ci0JCWlmICghZGVmaW5lZCAkcmVwb19pZCkgewotCQkJZGllICJDb3VsZCBub3QgZmluZCBhIFwic3ZuLXJlbW90ZS4qLmZldGNoXCIga2V5ICIsCi0JCQkgICAgImluIHRoZSByZXBvc2l0b3J5IGNvbmZpZ3VyYXRpb24gbWF0Y2hpbmc6ICIsCi0JCQkgICAgIiRyZWZfaWRcbiI7Ci0JCX0KLQl9Ci0JbXkgJHNlbGYgPSBfbmV3KCRjbGFzcywgJHJlcG9faWQsICRyZWZfaWQsICRwYXRoKTsKLQlpZiAoIWRlZmluZWQgJHNlbGYtPntwYXRofSB8fCAhbGVuZ3RoICRzZWxmLT57cGF0aH0pIHsKLQkJbXkgJGZldGNoID0gY29tbWFuZF9vbmVsaW5lKCdjb25maWcnLCAnLS1nZXQnLAotCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN2bi1yZW1vdGUuJHJlcG9faWQuZmV0Y2giLAotCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjokcmVmX2lkXCQiKSBvcgotCQkgICAgIGRpZSAiRmFpbGVkIHRvIHJlYWQgXCJzdm4tcmVtb3RlLiRyZXBvX2lkLmZldGNoXCIgIiwKLQkJICAgICAgICAgIlwiOiRyZWZfaWRcJFwiIGluIGNvbmZpZ1xuIjsKLQkJKCRzZWxmLT57cGF0aH0sIHVuZGVmKSA9IHNwbGl0KC9ccyo6XHMqLywgJGZldGNoKTsKLQl9Ci0JJHNlbGYtPntwYXRofSA9fiBzey8rfXsvfWc7Ci0JJHNlbGYtPntwYXRofSA9fiBze1xBL317fTsKLQkkc2VsZi0+e3BhdGh9ID1+IHN7L1x6fXt9OwotCSRzZWxmLT57dXJsfSA9IGNvbW1hbmRfb25lbGluZSgnY29uZmlnJywgJy0tZ2V0JywKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN2bi1yZW1vdGUuJHJlcG9faWQudXJsIikgb3IKLSAgICAgICAgICAgICAgICAgIGRpZSAiRmFpbGVkIHRvIHJlYWQgXCJzdm4tcmVtb3RlLiRyZXBvX2lkLnVybFwiIGluIGNvbmZpZ1xuIjsKLQkkc2VsZi0+e3B1c2h1cmx9ID0gZXZhbCB7IGNvbW1hbmRfb25lbGluZSgnY29uZmlnJywgJy0tZ2V0JywKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICJzdm4tcmVtb3RlLiRyZXBvX2lkLnB1c2h1cmwiKSB9OwotCSRzZWxmLT5yZWJ1aWxkOwotCSRzZWxmOwotfQotCi1zdWIgcmVmbmFtZSB7Ci0JbXkgKCRyZWZuYW1lKSA9ICRfWzBdLT57cmVmX2lkfSA7Ci0KLQkjIEl0IGNhbm5vdCBlbmQgd2l0aCBhIHNsYXNoIC8sIHdlJ2xsIHRocm93IHVwIG9uIHRoaXMgYmVjYXVzZQotCSMgU1ZOIGNhbid0IGhhdmUgZGlyZWN0b3JpZXMgd2l0aCBhIHNsYXNoIGluIHRoZWlyIG5hbWUsIGVpdGhlcjoKLQlpZiAoJHJlZm5hbWUgPX4gbXsvJH0pIHsKLQkJZGllICJyZWY6ICckcmVmbmFtZScgZW5kcyB3aXRoIGEgdHJhaWxpbmcgc2xhc2gsIHRoaXMgaXMgIiwKLQkJICAgICJub3QgcGVybWl0dGVkIGJ5IGdpdCBub3IgU3VidmVyc2lvblxuIjsKLQl9Ci0KLQkjIEl0IGNhbm5vdCBoYXZlIEFTQ0lJIGNvbnRyb2wgY2hhcmFjdGVyIHNwYWNlLCB0aWxkZSB+LCBjYXJldCBeLAotCSMgY29sb24gOiwgcXVlc3Rpb24tbWFyayA/LCBhc3RlcmlzayAqLCBzcGFjZSwgb3Igb3BlbiBicmFja2V0IFsKLQkjIGFueXdoZXJlLgotCSMKLQkjIEFkZGl0aW9uYWxseSwgJSBtdXN0IGJlIGVzY2FwZWQgYmVjYXVzZSBpdCBpcyB1c2VkIGZvciBlc2NhcGluZwotCSMgYW5kIHdlIHdhbnQgb3VyIGVzY2FwZWQgcmVmbmFtZSB0byBiZSByZXZlcnNpYmxlCi0JJHJlZm5hbWUgPX4gc3soWyBcJX5cXjpcP1wqXFtcdF0pfXt1YyBzcHJpbnRmKCclJSUwMngnLG9yZCgkMSkpfWVnOwotCi0JIyBubyBzbGFzaC1zZXBhcmF0ZWQgY29tcG9uZW50IGNhbiBiZWdpbiB3aXRoIGEgZG90IC4KLQkjIC8uKiBiZWNvbWVzIC8lMkUqCi0JJHJlZm5hbWUgPX4gc3svXC59ey8lMkV9ZzsKLQotCSMgSXQgY2Fubm90IGhhdmUgdHdvIGNvbnNlY3V0aXZlIGRvdHMgLi4gYW55d2hlcmUKLQkjIC4uIGJlY29tZXMgJTJFJTJFCi0JJHJlZm5hbWUgPX4gc3tcLlwufXslMkUlMkV9ZzsKLQotCSMgdHJhaWxpbmcgZG90cyBhbmQgLmxvY2sgYXJlIG5vdCBhbGxvd2VkCi0JIyAuJCBiZWNvbWVzICUyRSBhbmQgLmxvY2sgYmVjb21lcyAlMkVsb2NrCi0JJHJlZm5hbWUgPX4gc3tcLig/PSR8bG9jayQpfXslMkV9OwotCi0JIyB0aGUgc2VxdWVuY2UgQHsgaXMgdXNlZCB0byBhY2Nlc3MgdGhlIHJlZmxvZwotCSMgQHsgYmVjb21lcyAlNDB7Ci0JJHJlZm5hbWUgPX4gc3tcQFx7fXslNDBce31nOwotCi0JcmV0dXJuICRyZWZuYW1lOwotfQotCi1zdWIgZGVzYW5pdGl6ZV9yZWZuYW1lIHsKLQlteSAoJHJlZm5hbWUpID0gQF87Ci0JJHJlZm5hbWUgPX4gc3slKD86KFswLTlBLUZdezJ9KSl9e2NociBoZXgoJDEpfWVnOwotCXJldHVybiAkcmVmbmFtZTsKLX0KLQotc3ViIHN2bV91dWlkIHsKLQlteSAoJHNlbGYpID0gQF87Ci0JcmV0dXJuICRzZWxmLT57c3ZtfS0+e3V1aWR9IGlmICRzZWxmLT5zdm07Ci0JJHNlbGYtPnJhOwotCXVubGVzcyAoJHNlbGYtPntzdm19KSB7Ci0JCWRpZSAiU1ZNIFVVSUQgbm90IGNhY2hlZCwgYW5kIHJlYWRpbmcgcmVtb3RlbHkgZmFpbGVkXG4iOwotCX0KLQkkc2VsZi0+e3N2bX0tPnt1dWlkfTsKLX0KLQotc3ViIHN2bSB7Ci0JbXkgKCRzZWxmKSA9IEBfOwotCXJldHVybiAkc2VsZi0+e3N2bX0gaWYgJHNlbGYtPntzdm19OwotCW15ICRzdm07Ci0JIyBzZWUgaWYgd2UgaGF2ZSBpdCBpbiBvdXIgY29uZmlnLCBmaXJzdDoKLQlldmFsIHsKLQkJbXkgJHNlY3Rpb24gPSAic3ZuLXJlbW90ZS4kc2VsZi0+e3JlcG9faWR9IjsKLQkJJHN2bSA9IHsKLQkJICBzb3VyY2UgPT4gdG1wX2NvbmZpZygnLS1nZXQnLCAiJHNlY3Rpb24uc3ZtLXNvdXJjZSIpLAotCQkgIHV1aWQgPT4gdG1wX2NvbmZpZygnLS1nZXQnLCAiJHNlY3Rpb24uc3ZtLXV1aWQiKSwKLQkJICByZXBsYWNlID0+IHRtcF9jb25maWcoJy0tZ2V0JywgIiRzZWN0aW9uLnN2bS1yZXBsYWNlIiksCi0JCX0KLQl9OwotCWlmICgkc3ZtICYmICRzdm0tPntzb3VyY2V9ICYmICRzdm0tPnt1dWlkfSAmJiAkc3ZtLT57cmVwbGFjZX0pIHsKLQkJJHNlbGYtPntzdm19ID0gJHN2bTsKLQl9Ci0JJHNlbGYtPntzdm19OwotfQotCi1zdWIgX3NldF9zdm1fdmFycyB7Ci0JbXkgKCRzZWxmLCAkcmEpID0gQF87Ci0JcmV0dXJuICRyYSBpZiAkc2VsZi0+c3ZtOwotCi0JbXkgQGVyciA9ICggInVzZVN2bVByb3BzIHNldCwgYnV0IGZhaWxlZCB0byByZWFkIFNWTSBwcm9wZXJ0aWVzXG4iLAotCQkgICAgIihzdm06c291cmNlLCBzdm06dXVpZCkgIiwKLQkJICAgICJmcm9tIHRoZSBmb2xsb3dpbmcgVVJMczpcbiIgKTsKLQlzdWIgcmVhZF9zdm1fcHJvcHMgewotCQlteSAoJHNlbGYsICRyYSwgJHBhdGgsICRyKSA9IEBfOwotCQlteSAkcHJvcHMgPSAoJHJhLT5nZXRfZGlyKCRwYXRoLCAkcikpWzJdOwotCQlteSAkc3JjID0gJHByb3BzLT57J3N2bTpzb3VyY2UnfTsKLQkJbXkgJHV1aWQgPSAkcHJvcHMtPnsnc3ZtOnV1aWQnfTsKLQkJcmV0dXJuIHVuZGVmIGlmICghJHNyYyB8fCAhJHV1aWQpOwotCi0JCWNob21wKCRzcmMsICR1dWlkKTsKLQotCQkkdXVpZCA9fiBte15bMC05YS1mXC1dezMwLH0kfWkKLQkJICAgIG9yIGRpZSAiZG9lc24ndCBsb29rIHJpZ2h0IC0gc3ZtOnV1aWQgaXMgJyR1dWlkJ1xuIjsKLQotCQkjIHRoZSAnIScgaXMgdXNlZCB0byBtYXJrIHRoZSByZXBvc19yb290IS9yZWxhdGl2ZS9wYXRoCi0JCSRzcmMgPX4gc3svPyEvP317L307Ci0JCSRzcmMgPX4gc3svKyR9e307ICMgbm8gdHJhaWxpbmcgc2xhc2hlcyBwbGVhc2UKLQkJIyB1c2VybmFtZSBpcyBvZiBubyBpbnRlcmVzdAotCQkkc3JjID1+IHN7KF5bYS16XCtdKjovLylbXi9AXSpAfXskMX07Ci0KLQkJbXkgJHJlcGxhY2UgPSAkcmEtPnt1cmx9OwotCQkkcmVwbGFjZSAuPSAiLyRwYXRoIiBpZiBsZW5ndGggJHBhdGg7Ci0KLQkJbXkgJHNlY3Rpb24gPSAic3ZuLXJlbW90ZS4kc2VsZi0+e3JlcG9faWR9IjsKLQkJdG1wX2NvbmZpZygiJHNlY3Rpb24uc3ZtLXNvdXJjZSIsICRzcmMpOwotCQl0bXBfY29uZmlnKCIkc2VjdGlvbi5zdm0tcmVwbGFjZSIsICRyZXBsYWNlKTsKLQkJdG1wX2NvbmZpZygiJHNlY3Rpb24uc3ZtLXV1aWQiLCAkdXVpZCk7Ci0JCSRzZWxmLT57c3ZtfSA9IHsKLQkJCXNvdXJjZSA9PiAkc3JjLAotCQkJdXVpZCA9PiAkdXVpZCwKLQkJCXJlcGxhY2UgPT4gJHJlcGxhY2UKLQkJfTsKLQl9Ci0KLQlteSAkciA9ICRyYS0+Z2V0X2xhdGVzdF9yZXZudW07Ci0JbXkgJHBhdGggPSAkc2VsZi0+e3BhdGh9OwotCW15ICV0cmllZDsKLQl3aGlsZSAobGVuZ3RoICRwYXRoKSB7Ci0JCXVubGVzcyAoJHRyaWVkeyIkc2VsZi0+e3VybH0vJHBhdGgifSkgewotCQkJcmV0dXJuICRyYSBpZiAkc2VsZi0+cmVhZF9zdm1fcHJvcHMoJHJhLCAkcGF0aCwgJHIpOwotCQkJJHRyaWVkeyIkc2VsZi0+e3VybH0vJHBhdGgifSA9IDE7Ci0JCX0KLQkJJHBhdGggPX4gcyMvP1teL10rJCMjOwotCX0KLQlkaWUgIlBhdGg6ICckcGF0aCcgc2hvdWxkIGJlICcnXG4iIGlmICRwYXRoIG5lICcnOwotCXJldHVybiAkcmEgaWYgJHNlbGYtPnJlYWRfc3ZtX3Byb3BzKCRyYSwgJHBhdGgsICRyKTsKLQkkdHJpZWR7IiRzZWxmLT57dXJsfS8kcGF0aCJ9ID0gMTsKLQotCWlmICgkcmEtPntyZXBvc19yb290fSBlcSAkc2VsZi0+e3VybH0pIHsKLQkJZGllIEBlcnIsIChtYXAgeyAiICAkX1xuIiB9IGtleXMgJXRyaWVkKSwgIlxuIjsKLQl9Ci0KLQkjIG5vcGUsIG1ha2Ugc3VyZSB3ZSdyZSBjb25uZWN0ZWQgdG8gdGhlIHJlcG9zaXRvcnkgcm9vdDoKLQlteSAkb2s7Ci0JbXkgQHRyaWVkX2I7Ci0JJHBhdGggPSAkcmEtPntzdm5fcGF0aH07Ci0JJHJhID0gR2l0OjpTVk46OlJhLT5uZXcoJHJhLT57cmVwb3Nfcm9vdH0pOwotCXdoaWxlIChsZW5ndGggJHBhdGgpIHsKLQkJdW5sZXNzICgkdHJpZWR7IiRyYS0+e3VybH0vJHBhdGgifSkgewotCQkJJG9rID0gJHNlbGYtPnJlYWRfc3ZtX3Byb3BzKCRyYSwgJHBhdGgsICRyKTsKLQkJCWxhc3QgaWYgJG9rOwotCQkJJHRyaWVkeyIkcmEtPnt1cmx9LyRwYXRoIn0gPSAxOwotCQl9Ci0JCSRwYXRoID1+IHMjLz9bXi9dKyQjIzsKLQl9Ci0JZGllICJQYXRoOiAnJHBhdGgnIHNob3VsZCBiZSAnJ1xuIiBpZiAkcGF0aCBuZSAnJzsKLQkkb2sgfHw9ICRzZWxmLT5yZWFkX3N2bV9wcm9wcygkcmEsICRwYXRoLCAkcik7Ci0JJHRyaWVkeyIkcmEtPnt1cmx9LyRwYXRoIn0gPSAxOwotCWlmICghJG9rKSB7Ci0JCWRpZSBAZXJyLCAobWFwIHsgIiAgJF9cbiIgfSBrZXlzICV0cmllZCksICJcbiI7Ci0JfQotCUdpdDo6U1ZOOjpSYS0+bmV3KCRzZWxmLT57dXJsfSk7Ci19Ci0KLXN1YiBzdm5zeW5jIHsKLQlteSAoJHNlbGYpID0gQF87Ci0JcmV0dXJuICRzZWxmLT57c3Zuc3luY30gaWYgJHNlbGYtPntzdm5zeW5jfTsKLQotCWlmICgkc2VsZi0+bm9fbWV0YWRhdGEpIHsKLQkJZGllICJDYW4ndCBoYXZlIGJvdGggJ25vTWV0YWRhdGEnIGFuZCAiLAotCQkgICAgIid1c2VTdm5zeW5jUHJvcHMnIG9wdGlvbnMgc2V0IVxuIjsKLQl9Ci0JaWYgKCRzZWxmLT5yZXdyaXRlX3Jvb3QpIHsKLQkJZGllICJDYW4ndCBoYXZlIGJvdGggJ3VzZVN2bnN5bmNQcm9wcycgYW5kICdyZXdyaXRlUm9vdCcgIiwKLQkJICAgICJvcHRpb25zIHNldCFcbiI7Ci0JfQotCWlmICgkc2VsZi0+cmV3cml0ZV91dWlkKSB7Ci0JCWRpZSAiQ2FuJ3QgaGF2ZSBib3RoICd1c2VTdm5zeW5jUHJvcHMnIGFuZCAncmV3cml0ZVVVSUQnICIsCi0JCSAgICAib3B0aW9ucyBzZXQhXG4iOwotCX0KLQotCW15ICRzdm5zeW5jOwotCSMgc2VlIGlmIHdlIGhhdmUgaXQgaW4gb3VyIGNvbmZpZywgZmlyc3Q6Ci0JZXZhbCB7Ci0JCW15ICRzZWN0aW9uID0gInN2bi1yZW1vdGUuJHNlbGYtPntyZXBvX2lkfSI7Ci0KLQkJbXkgJHVybCA9IHRtcF9jb25maWcoJy0tZ2V0JywgIiRzZWN0aW9uLnN2bnN5bmMtdXJsIik7Ci0JCSgkdXJsKSA9ICgkdXJsID1+IG17XihbYS16XCtdKzovL1xTKykkfSkgb3IKLQkJICAgZGllICJkb2Vzbid0IGxvb2sgcmlnaHQgLSBzdm46c3luYy1mcm9tLXVybCBpcyAnJHVybCdcbiI7Ci0KLQkJbXkgJHV1aWQgPSB0bXBfY29uZmlnKCctLWdldCcsICIkc2VjdGlvbi5zdm5zeW5jLXV1aWQiKTsKLQkJKCR1dWlkKSA9ICgkdXVpZCA9fiBte14oWzAtOWEtZlwtXXszMCx9KSR9aSkgb3IKLQkJICAgZGllICJkb2Vzbid0IGxvb2sgcmlnaHQgLSBzdm46c3luYy1mcm9tLXV1aWQgaXMgJyR1dWlkJ1xuIjsKLQotCQkkc3Zuc3luYyA9IHsgdXJsID0+ICR1cmwsIHV1aWQgPT4gJHV1aWQgfQotCX07Ci0JaWYgKCRzdm5zeW5jICYmICRzdm5zeW5jLT57dXJsfSAmJiAkc3Zuc3luYy0+e3V1aWR9KSB7Ci0JCXJldHVybiAkc2VsZi0+e3N2bnN5bmN9ID0gJHN2bnN5bmM7Ci0JfQotCi0JbXkgJGVyciA9ICJ1c2VTdm5zeW5jUHJvcHMgc2V0LCBidXQgZmFpbGVkIHRvIHJlYWQgIiAuCi0JICAgICAgICAgICJzdm5zeW5jIHByb3BlcnR5OiBzdm46c3luYy1mcm9tLSI7Ci0JbXkgJHJwID0gJHNlbGYtPnJhLT5yZXZfcHJvcGxpc3QoMCk7Ci0KLQlteSAkdXJsID0gJHJwLT57J3N2bjpzeW5jLWZyb20tdXJsJ30gb3IgZGllICRlcnIgLiAidXJsXG4iOwotCSgkdXJsKSA9ICgkdXJsID1+IG17XihbYS16XCtdKzovL1xTKykkfSkgb3IKLQkgICAgICAgICAgIGRpZSAiZG9lc24ndCBsb29rIHJpZ2h0IC0gc3ZuOnN5bmMtZnJvbS11cmwgaXMgJyR1cmwnXG4iOwotCi0JbXkgJHV1aWQgPSAkcnAtPnsnc3ZuOnN5bmMtZnJvbS11dWlkJ30gb3IgZGllICRlcnIgLiAidXVpZFxuIjsKLQkoJHV1aWQpID0gKCR1dWlkID1+IG17XihbMC05YS1mXC1dezMwLH0pJH1pKSBvcgotCSAgICAgICAgICAgZGllICJkb2Vzbid0IGxvb2sgcmlnaHQgLSBzdm46c3luYy1mcm9tLXV1aWQgaXMgJyR1dWlkJ1xuIjsKLQotCW15ICRzZWN0aW9uID0gInN2bi1yZW1vdGUuJHNlbGYtPntyZXBvX2lkfSI7Ci0JdG1wX2NvbmZpZygnLS1hZGQnLCAiJHNlY3Rpb24uc3Zuc3luYy11dWlkIiwgJHV1aWQpOwotCXRtcF9jb25maWcoJy0tYWRkJywgIiRzZWN0aW9uLnN2bnN5bmMtdXJsIiwgJHVybCk7Ci0JcmV0dXJuICRzZWxmLT57c3Zuc3luY30gPSB7IHVybCA9PiAkdXJsLCB1dWlkID0+ICR1dWlkIH07Ci19Ci0KLSMgdGhpcyBhbGxvd3MgdXMgdG8gbWVtb2l6ZSBvdXIgU1ZOOjpSYSBVVUlEIGxvY2FsbHkgYW5kIGF2b2lkIGEKLSMgcmVtb3RlIGxvb2t1cCAodXNlZnVsIGZvciAnZ2l0IHN2biBsb2cnKS4KLXN1YiByYV91dWlkIHsKLQlteSAoJHNlbGYpID0gQF87Ci0JdW5sZXNzICgkc2VsZi0+e3JhX3V1aWR9KSB7Ci0JCW15ICRrZXkgPSAic3ZuLXJlbW90ZS4kc2VsZi0+e3JlcG9faWR9LnV1aWQiOwotCQlteSAkdXVpZCA9IGV2YWwgeyB0bXBfY29uZmlnKCctLWdldCcsICRrZXkpIH07Ci0JCWlmICghJEAgJiYgJHV1aWQgJiYgJHV1aWQgPX4gL14oW2EtZlxkXC1dezMwLH0pJC9pKSB7Ci0JCQkkc2VsZi0+e3JhX3V1aWR9ID0gJHV1aWQ7Ci0JCX0gZWxzZSB7Ci0JCQlkaWUgInJhX3V1aWQgY2FsbGVkIHdpdGhvdXQgVVJMXG4iIHVubGVzcyAkc2VsZi0+e3VybH07Ci0JCQkkc2VsZi0+e3JhX3V1aWR9ID0gJHNlbGYtPnJhLT5nZXRfdXVpZDsKLQkJCXRtcF9jb25maWcoJy0tYWRkJywgJGtleSwgJHNlbGYtPntyYV91dWlkfSk7Ci0JCX0KLQl9Ci0JJHNlbGYtPntyYV91dWlkfTsKLX0KLQotc3ViIF9zZXRfcmVwb3Nfcm9vdCB7Ci0JbXkgKCRzZWxmLCAkcmVwb3Nfcm9vdCkgPSBAXzsKLQlteSAkayA9ICJzdm4tcmVtb3RlLiRzZWxmLT57cmVwb19pZH0ucmVwb3NSb290IjsKLQkkcmVwb3Nfcm9vdCB8fD0gJHNlbGYtPnJhLT57cmVwb3Nfcm9vdH07Ci0JdG1wX2NvbmZpZygkaywgJHJlcG9zX3Jvb3QpOwotCSRyZXBvc19yb290OwotfQotCi1zdWIgcmVwb3Nfcm9vdCB7Ci0JbXkgKCRzZWxmKSA9IEBfOwotCW15ICRrID0gInN2bi1yZW1vdGUuJHNlbGYtPntyZXBvX2lkfS5yZXBvc1Jvb3QiOwotCWV2YWwgeyB0bXBfY29uZmlnKCctLWdldCcsICRrKSB9IHx8ICRzZWxmLT5fc2V0X3JlcG9zX3Jvb3Q7Ci19Ci0KLXN1YiByYSB7Ci0JbXkgKCRzZWxmKSA9IHNoaWZ0OwotCW15ICRyYSA9IEdpdDo6U1ZOOjpSYS0+bmV3KCRzZWxmLT57dXJsfSk7Ci0JJHNlbGYtPl9zZXRfcmVwb3Nfcm9vdCgkcmEtPntyZXBvc19yb290fSk7Ci0JaWYgKCRzZWxmLT51c2Vfc3ZtX3Byb3BzICYmICEkc2VsZi0+e3N2bX0pIHsKLQkJaWYgKCRzZWxmLT5ub19tZXRhZGF0YSkgewotCQkJZGllICJDYW4ndCBoYXZlIGJvdGggJ25vTWV0YWRhdGEnIGFuZCAiLAotCQkJICAgICIndXNlU3ZtUHJvcHMnIG9wdGlvbnMgc2V0IVxuIjsKLQkJfSBlbHNpZiAoJHNlbGYtPnVzZV9zdm5zeW5jX3Byb3BzKSB7Ci0JCQlkaWUgIkNhbid0IGhhdmUgYm90aCAndXNlU3Zuc3luY1Byb3BzJyBhbmQgIiwKLQkJCSAgICAiJ3VzZVN2bVByb3BzJyBvcHRpb25zIHNldCFcbiI7Ci0JCX0KLQkJJHJhID0gJHNlbGYtPl9zZXRfc3ZtX3ZhcnMoJHJhKTsKLQkJJHNlbGYtPnstd2FudF9yZXZwcm9wc30gPSAxOwotCX0KLQkkcmE7Ci19Ci0KLSMgcHJvcF93YWxrKFBBVEgsIFJFViwgU1VCKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFJlY3Vyc2l2ZWx5IHRyYXZlcnNlIFBBVEggYXQgcmV2aXNpb24gUkVWIGFuZCBpbnZva2UgU1VCIGZvciBlYWNoCi0jIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGEgU1ZOIHByb3BlcnR5LiAgU1VCIHdpbGwgYmUgaW52b2tlZCBhcwotIyBmb2xsb3dzOiAgJlNVQihncywgcGF0aCwgcHJvcHMpOyAgd2hlcmUgYGdzJyBpcyB0aGlzIGluc3RhbmNlIG9mCi0jIEdpdDo6U1ZOLCBgcGF0aCcgdGhlIHBhdGggdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgcHJvcGVydGllcwotIyBgcHJvcHMnIHdlcmUgZm91bmQuICBUaGUgYHBhdGgnIHdpbGwgYmUgcmVsYXRpdmUgdG8gcG9pbnQgb2YgY2hlY2tvdXQsCi0jIHRoYXQgaXMsIGlmIHVybDovL3JlcG8vdHJ1bmsgaXMgdGhlIGN1cnJlbnQgR2l0IGJyYW5jaCwgYW5kIHRoYXQKLSMgZGlyZWN0b3J5IGNvbnRhaW5zIGEgc3ViLWRpcmVjdG9yeSBgZCcsIFNVQiB3aWxsIGJlIGludm9rZWQgd2l0aCBgL2QvJwotIyBhcyBgcGF0aCcgKG5vdGUgdGhlIHRyYWlsaW5nIGAvJykuCi1zdWIgcHJvcF93YWxrIHsKLQlteSAoJHNlbGYsICRwYXRoLCAkcmV2LCAkc3ViKSA9IEBfOwotCi0JJHBhdGggPX4gcyNeLyMjOwotCW15ICgkZGlyZW50LCB1bmRlZiwgJHByb3BzKSA9ICRzZWxmLT5yYS0+Z2V0X2RpcigkcGF0aCwgJHJldik7Ci0JJHBhdGggPX4gcyNeLyojLyNnOwotCW15ICRwID0gJHBhdGg7Ci0JIyBTdHJpcCB0aGUgaXJyZWxldmFudCBwYXJ0IG9mIHRoZSBwYXRoLgotCSRwID1+IHMjXi8rXFEkc2VsZi0+e3BhdGh9XEUoL3wkKSMvIzsKLQkjIEVuc3VyZSB0aGUgcGF0aCBpcyB0ZXJtaW5hdGVkIGJ5IGEgYC8nLgotCSRwID1+IHMjLyokIy8jOwotCi0JIyBUaGUgcHJvcGVydGllcyBjb250YWluIGFsbCB0aGUgaW50ZXJuYWwgU1ZOIHN0dWZmIG5vYm9keQotCSMgKHVzdWFsbHkpIGNhcmVzIGFib3V0LgotCW15ICRpbnRlcmVzdGluZ19wcm9wcyA9IDA7Ci0JZm9yZWFjaCAoa2V5cyAleyRwcm9wc30pIHsKLQkJIyBJZiBpdCBkb2Vzbid0IHN0YXJ0IHdpdGggYHN2bjonLCBpdCBtdXN0IGJlIGEKLQkJIyB1c2VyLWRlZmluZWQgcHJvcGVydHkuCi0JCSsrJGludGVyZXN0aW5nX3Byb3BzIGFuZCBuZXh0IGlmICRfICF+IC9ec3ZuOi87Ci0JCSMgRklYTUU6IEZyYWdpbGUsIGlmIFNWTiBhZGRzIG5ldyBwdWJsaWMgcHJvcGVydGllcywKLQkJIyB0aGlzIG5lZWRzIHRvIGJlIHVwZGF0ZWQuCi0JCSsrJGludGVyZXN0aW5nX3Byb3BzIGlmIC9ec3ZuOig/Omlnbm9yZXxrZXl3b3Jkc3xleGVjdXRhYmxlCi0JCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxlb2wtc3R5bGV8bWltZS10eXBlCi0JCQkJCQkgfGV4dGVybmFsc3xuZWVkcy1sb2NrKSQveDsKLQl9Ci0JJiRzdWIoJHNlbGYsICRwLCAkcHJvcHMpIGlmICRpbnRlcmVzdGluZ19wcm9wczsKLQotCWZvcmVhY2ggKHNvcnQga2V5cyAlJGRpcmVudCkgewotCQluZXh0IGlmICRkaXJlbnQtPnskX30tPntraW5kfSAhPSAkU1ZOOjpOb2RlOjpkaXI7Ci0JCSRzZWxmLT5wcm9wX3dhbGsoJHNlbGYtPntwYXRofSAuICRwIC4gJF8sICRyZXYsICRzdWIpOwotCX0KLX0KLQotc3ViIGxhc3RfcmV2IHsgKCRfWzBdLT5sYXN0X3Jldl9jb21taXQpWzBdIH0KLXN1YiBsYXN0X2NvbW1pdCB7ICgkX1swXS0+bGFzdF9yZXZfY29tbWl0KVsxXSB9Ci0KLSMgcmV0dXJucyB0aGUgbmV3ZXN0IFNWTiByZXZpc2lvbiBudW1iZXIgYW5kIG5ld2VzdCBjb21taXQgU0hBMQotc3ViIGxhc3RfcmV2X2NvbW1pdCB7Ci0JbXkgKCRzZWxmKSA9IEBfOwotCWlmIChkZWZpbmVkICRzZWxmLT57bGFzdF9yZXZ9ICYmIGRlZmluZWQgJHNlbGYtPntsYXN0X2NvbW1pdH0pIHsKLQkJcmV0dXJuICgkc2VsZi0+e2xhc3RfcmV2fSwgJHNlbGYtPntsYXN0X2NvbW1pdH0pOwotCX0KLQlteSAkYyA9IDo6dmVyaWZ5X3JlZigkc2VsZi0+cmVmbmFtZS4nXjAnKTsKLQlpZiAoJGMgJiYgISRzZWxmLT51c2Vfc3ZtX3Byb3BzICYmICEkc2VsZi0+bm9fbWV0YWRhdGEpIHsKLQkJbXkgJHJldiA9ICg6OmNtdF9tZXRhZGF0YSgkYykpWzFdOwotCQlpZiAoZGVmaW5lZCAkcmV2KSB7Ci0JCQkoJHNlbGYtPntsYXN0X3Jldn0sICRzZWxmLT57bGFzdF9jb21taXR9KSA9ICgkcmV2LCAkYyk7Ci0JCQlyZXR1cm4gKCRyZXYsICRjKTsKLQkJfQotCX0KLQlteSAkbWFwX3BhdGggPSAkc2VsZi0+bWFwX3BhdGg7Ci0JdW5sZXNzICgtZSAkbWFwX3BhdGgpIHsKLQkJKCRzZWxmLT57bGFzdF9yZXZ9LCAkc2VsZi0+e2xhc3RfY29tbWl0fSkgPSAodW5kZWYsIHVuZGVmKTsKLQkJcmV0dXJuICh1bmRlZiwgdW5kZWYpOwotCX0KLQlteSAoJHJldiwgJGNvbW1pdCkgPSAkc2VsZi0+cmV2X21hcF9tYXgoMSk7Ci0JKCRzZWxmLT57bGFzdF9yZXZ9LCAkc2VsZi0+e2xhc3RfY29tbWl0fSkgPSAoJHJldiwgJGNvbW1pdCk7Ci0JcmV0dXJuICgkcmV2LCAkY29tbWl0KTsKLX0KLQotc3ViIGdldF9mZXRjaF9yYW5nZSB7Ci0JbXkgKCRzZWxmLCAkbWluLCAkbWF4KSA9IEBfOwotCSRtYXggfHw9ICRzZWxmLT5yYS0+Z2V0X2xhdGVzdF9yZXZudW07Ci0JJG1pbiB8fD0gJHNlbGYtPnJldl9tYXBfbWF4OwotCSgrKyRtaW4sICRtYXgpOwotfQotCi1zdWIgdG1wX2NvbmZpZyB7Ci0JbXkgKEBhcmdzKSA9IEBfOwotCW15ICRvbGRfZGVmX2NvbmZpZyA9ICIkRU5We0dJVF9ESVJ9L3N2bi9jb25maWciOwotCW15ICRjb25maWcgPSAiJEVOVntHSVRfRElSfS9zdm4vLm1ldGFkYXRhIjsKLQlpZiAoISAtZiAkY29uZmlnICYmIC1mICRvbGRfZGVmX2NvbmZpZykgewotCQlyZW5hbWUgJG9sZF9kZWZfY29uZmlnLCAkY29uZmlnIG9yCi0JCSAgICAgICBkaWUgIkZhaWxlZCByZW5hbWUgJG9sZF9kZWZfY29uZmlnID0+ICRjb25maWc6ICQhXG4iOwotCX0KLQlteSAkb2xkX2NvbmZpZyA9ICRFTlZ7R0lUX0NPTkZJR307Ci0JJEVOVntHSVRfQ09ORklHfSA9ICRjb25maWc7Ci0JJEAgPSB1bmRlZjsKLQlteSBAcmV0ID0gZXZhbCB7Ci0JCXVubGVzcyAoLWYgJGNvbmZpZykgewotCQkJbWtmaWxlKCRjb25maWcpOwotCQkJb3BlbiBteSAkZmgsICc+JywgJGNvbmZpZyBvcgotCQkJICAgIGRpZSAiQ2FuJ3Qgb3BlbiAkY29uZmlnOiAkIVxuIjsKLQkJCXByaW50ICRmaCAiOyBUaGlzIGZpbGUgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5ICIsCi0JCQkgICAgICAgICAgImdpdC1zdm5cbiIgb3IgZGllCi0JCQkJICAiQ291bGRuJ3Qgd3JpdGUgdG8gJGNvbmZpZzogJCFcbiI7Ci0JCQlwcmludCAkZmggIjsgWW91IHNob3VsZCBub3QgaGF2ZSB0byBlZGl0IGl0XG4iIG9yCi0JCQkgICAgICBkaWUgIkNvdWxkbid0IHdyaXRlIHRvICRjb25maWc6ICQhXG4iOwotCQkJY2xvc2UgJGZoIG9yIGRpZSAiQ291bGRuJ3QgY2xvc2UgJGNvbmZpZzogJCFcbiI7Ci0JCX0KLQkJY29tbWFuZCgnY29uZmlnJywgQGFyZ3MpOwotCX07Ci0JbXkgJGVyciA9ICRAOwotCWlmIChkZWZpbmVkICRvbGRfY29uZmlnKSB7Ci0JCSRFTlZ7R0lUX0NPTkZJR30gPSAkb2xkX2NvbmZpZzsKLQl9IGVsc2UgewotCQlkZWxldGUgJEVOVntHSVRfQ09ORklHfTsKLQl9Ci0JZGllICRlcnIgaWYgJGVycjsKLQl3YW50YXJyYXkgPyBAcmV0IDogJHJldFswXTsKLX0KLQotc3ViIHRtcF9pbmRleF9kbyB7Ci0JbXkgKCRzZWxmLCAkc3ViKSA9IEBfOwotCW15ICRvbGRfaW5kZXggPSAkRU5We0dJVF9JTkRFWF9GSUxFfTsKLQkkRU5We0dJVF9JTkRFWF9GSUxFfSA9ICRzZWxmLT57aW5kZXh9OwotCSRAID0gdW5kZWY7Ci0JbXkgQHJldCA9IGV2YWwgewotCQlteSAoJGRpciwgJGJhc2UpID0gKCRzZWxmLT57aW5kZXh9ID1+IG0jXiguKj8pLz8oW14vXSspJCMpOwotCQlta3BhdGgoWyRkaXJdKSB1bmxlc3MgLWQgJGRpcjsKLQkJJiRzdWI7Ci0JfTsKLQlteSAkZXJyID0gJEA7Ci0JaWYgKGRlZmluZWQgJG9sZF9pbmRleCkgewotCQkkRU5We0dJVF9JTkRFWF9GSUxFfSA9ICRvbGRfaW5kZXg7Ci0JfSBlbHNlIHsKLQkJZGVsZXRlICRFTlZ7R0lUX0lOREVYX0ZJTEV9OwotCX0KLQlkaWUgJGVyciBpZiAkZXJyOwotCXdhbnRhcnJheSA/IEByZXQgOiAkcmV0WzBdOwotfQotCi1zdWIgYXNzZXJ0X2luZGV4X2NsZWFuIHsKLQlteSAoJHNlbGYsICR0cmVlaXNoKSA9IEBfOwotCi0JJHNlbGYtPnRtcF9pbmRleF9kbyhzdWIgewotCQljb21tYW5kX25vaXN5KCdyZWFkLXRyZWUnLCAkdHJlZWlzaCkgdW5sZXNzIC1lICRzZWxmLT57aW5kZXh9OwotCQlteSAkeCA9IGNvbW1hbmRfb25lbGluZSgnd3JpdGUtdHJlZScpOwotCQlteSAoJHkpID0gKGNvbW1hbmQocXcvY2F0LWZpbGUgY29tbWl0LywgJHRyZWVpc2gpID1+Ci0JCSAgICAgICAgICAgL150cmVlICgkOjpzaGExKS9tbyk7Ci0JCXJldHVybiBpZiAkeSBlcSAkeDsKLQotCQl3YXJuICJJbmRleCBtaXNtYXRjaDogJHkgIT0gJHhcbnJlcmVhZGluZyAkdHJlZWlzaFxuIjsKLQkJdW5saW5rICRzZWxmLT57aW5kZXh9IG9yIGRpZSAidW5saW5rICRzZWxmLT57aW5kZXh9OiAkIVxuIjsKLQkJY29tbWFuZF9ub2lzeSgncmVhZC10cmVlJywgJHRyZWVpc2gpOwotCQkkeCA9IGNvbW1hbmRfb25lbGluZSgnd3JpdGUtdHJlZScpOwotCQlpZiAoJHkgbmUgJHgpIHsKLQkJCTo6ZmF0YWwgInRyZWVzICgkdHJlZWlzaCkgJHkgIT0gJHhcbiIsCi0JCQkgICAgICAgICJTb21ldGhpbmcgaXMgc2VyaW91c2x5IHdyb25nLi4uIjsKLQkJfQotCX0pOwotfQotCi1zdWIgZ2V0X2NvbW1pdF9wYXJlbnRzIHsKLQlteSAoJHNlbGYsICRsb2dfZW50cnkpID0gQF87Ci0JbXkgKCVzZWVuLCBAcmV0LCBAdG1wKTsKLQkjIGxlZ2FjeSBzdXBwb3J0IGZvciAnc2V0LXRyZWUnOyB0aGlzIGlzIG9ubHkgdXNlZCBieSBzZXRfdHJlZV9jYjoKLQlpZiAobXkgJGlwID0gJHNlbGYtPntpbmplY3RfcGFyZW50c30pIHsKLQkJaWYgKG15ICRjb21taXQgPSBkZWxldGUgJGlwLT57JGxvZ19lbnRyeS0+e3JldmlzaW9ufX0pIHsKLQkJCXB1c2ggQHRtcCwgJGNvbW1pdDsKLQkJfQotCX0KLQlpZiAobXkgJGN1ciA9IDo6dmVyaWZ5X3JlZigkc2VsZi0+cmVmbmFtZS4nXjAnKSkgewotCQlwdXNoIEB0bXAsICRjdXI7Ci0JfQotCWlmIChteSAkaXBkID0gJHNlbGYtPntpbmplY3RfcGFyZW50c19kY29tbWl0fSkgewotCQlpZiAobXkgJGNvbW1pdCA9IGRlbGV0ZSAkaXBkLT57JGxvZ19lbnRyeS0+e3JldmlzaW9ufX0pIHsKLQkJCXB1c2ggQHRtcCwgQCRjb21taXQ7Ci0JCX0KLQl9Ci0JcHVzaCBAdG1wLCAkXyBmb3JlYWNoIChAeyRsb2dfZW50cnktPntwYXJlbnRzfX0sIEB0bXApOwotCXdoaWxlIChteSAkcCA9IHNoaWZ0IEB0bXApIHsKLQkJbmV4dCBpZiAkc2VlbnskcH07Ci0JCSRzZWVueyRwfSA9IDE7Ci0JCXB1c2ggQHJldCwgJHA7Ci0JfQotCUByZXQ7Ci19Ci0KLXN1YiByZXdyaXRlX3Jvb3QgewotCW15ICgkc2VsZikgPSBAXzsKLQlyZXR1cm4gJHNlbGYtPnstcmV3cml0ZV9yb290fSBpZiBleGlzdHMgJHNlbGYtPnstcmV3cml0ZV9yb290fTsKLQlteSAkayA9ICJzdm4tcmVtb3RlLiRzZWxmLT57cmVwb19pZH0ucmV3cml0ZVJvb3QiOwotCW15ICRyd3IgPSBldmFsIHsgY29tbWFuZF9vbmVsaW5lKHF3L2NvbmZpZyAtLWdldC8sICRrKSB9OwotCWlmICgkcndyKSB7Ci0JCSRyd3IgPX4gcyMvKyQjIzsKLQkJaWYgKCRyd3IgIX4gbSNeW2EtelwrXSs6Ly8jKSB7Ci0JCQlkaWUgIiRyd3IgaXMgbm90IGEgdmFsaWQgVVJMIChrZXk6ICRrKVxuIjsKLQkJfQotCX0KLQkkc2VsZi0+ey1yZXdyaXRlX3Jvb3R9ID0gJHJ3cjsKLX0KLQotc3ViIHJld3JpdGVfdXVpZCB7Ci0JbXkgKCRzZWxmKSA9IEBfOwotCXJldHVybiAkc2VsZi0+ey1yZXdyaXRlX3V1aWR9IGlmIGV4aXN0cyAkc2VsZi0+ey1yZXdyaXRlX3V1aWR9OwotCW15ICRrID0gInN2bi1yZW1vdGUuJHNlbGYtPntyZXBvX2lkfS5yZXdyaXRlVVVJRCI7Ci0JbXkgJHJ3aWQgPSBldmFsIHsgY29tbWFuZF9vbmVsaW5lKHF3L2NvbmZpZyAtLWdldC8sICRrKSB9OwotCWlmICgkcndpZCkgewotCQkkcndpZCA9fiBzIy8rJCMjOwotCQlpZiAoJHJ3aWQgIX4gbSNeW2EtZjAtOV17OH0tKD86W2EtZjAtOV17NH0tKXszfVthLWYwLTldezEyfSQjKSB7Ci0JCQlkaWUgIiRyd2lkIGlzIG5vdCBhIHZhbGlkIFVVSUQgKGtleTogJGspXG4iOwotCQl9Ci0JfQotCSRzZWxmLT57LXJld3JpdGVfdXVpZH0gPSAkcndpZDsKLX0KLQotc3ViIG1ldGFkYXRhX3VybCB7Ci0JbXkgKCRzZWxmKSA9IEBfOwotCSgkc2VsZi0+cmV3cml0ZV9yb290IHx8ICRzZWxmLT57dXJsfSkgLgotCSAgIChsZW5ndGggJHNlbGYtPntwYXRofSA/ICcvJyAuICRzZWxmLT57cGF0aH0gOiAnJyk7Ci19Ci0KLXN1YiBmdWxsX3VybCB7Ci0JbXkgKCRzZWxmKSA9IEBfOwotCSRzZWxmLT57dXJsfSAuIChsZW5ndGggJHNlbGYtPntwYXRofSA/ICcvJyAuICRzZWxmLT57cGF0aH0gOiAnJyk7Ci19Ci0KLXN1YiBmdWxsX3B1c2h1cmwgewotCW15ICgkc2VsZikgPSBAXzsKLQlpZiAoJHNlbGYtPntwdXNodXJsfSkgewotCQlyZXR1cm4gJHNlbGYtPntwdXNodXJsfSAuIChsZW5ndGggJHNlbGYtPntwYXRofSA/ICcvJyAuCi0JCSAgICAgICAkc2VsZi0+e3BhdGh9IDogJycpOwotCX0gZWxzZSB7Ci0JCXJldHVybiAkc2VsZi0+ZnVsbF91cmw7Ci0JfQotfQotCi1zdWIgc2V0X2NvbW1pdF9oZWFkZXJfZW52IHsKLQlteSAoJGxvZ19lbnRyeSkgPSBAXzsKLQlteSAlZW52OwotCWZvcmVhY2ggbXkgJG5lZCAocXcvTkFNRSBFTUFJTCBEQVRFLykgewotCQlmb3JlYWNoIG15ICRhYyAocXcvQVVUSE9SIENPTU1JVFRFUi8pIHsKLQkJCSRlbnZ7IkdJVF8ke2FjfV8ke25lZH0ifSA9ICRFTlZ7IkdJVF8ke2FjfV8ke25lZH0ifTsKLQkJfQotCX0KLQotCSRFTlZ7R0lUX0FVVEhPUl9OQU1FfSA9ICRsb2dfZW50cnktPntuYW1lfTsKLQkkRU5We0dJVF9BVVRIT1JfRU1BSUx9ID0gJGxvZ19lbnRyeS0+e2VtYWlsfTsKLQkkRU5We0dJVF9BVVRIT1JfREFURX0gPSAkRU5We0dJVF9DT01NSVRURVJfREFURX0gPSAkbG9nX2VudHJ5LT57ZGF0ZX07Ci0KLQkkRU5We0dJVF9DT01NSVRURVJfTkFNRX0gPSAoZGVmaW5lZCAkbG9nX2VudHJ5LT57Y29tbWl0X25hbWV9KQotCQkJCQkJPyAkbG9nX2VudHJ5LT57Y29tbWl0X25hbWV9Ci0JCQkJCQk6ICRsb2dfZW50cnktPntuYW1lfTsKLQkkRU5We0dJVF9DT01NSVRURVJfRU1BSUx9ID0gKGRlZmluZWQgJGxvZ19lbnRyeS0+e2NvbW1pdF9lbWFpbH0pCi0JCQkJCQk/ICRsb2dfZW50cnktPntjb21taXRfZW1haWx9Ci0JCQkJCQk6ICRsb2dfZW50cnktPntlbWFpbH07Ci0JXCVlbnY7Ci19Ci0KLXN1YiByZXN0b3JlX2NvbW1pdF9oZWFkZXJfZW52IHsKLQlteSAoJGVudikgPSBAXzsKLQlmb3JlYWNoIG15ICRuZWQgKHF3L05BTUUgRU1BSUwgREFURS8pIHsKLQkJZm9yZWFjaCBteSAkYWMgKHF3L0FVVEhPUiBDT01NSVRURVIvKSB7Ci0JCQlteSAkayA9ICJHSVRfJHthY31fJHtuZWR9IjsKLQkJCWlmIChkZWZpbmVkICRlbnYtPnska30pIHsKLQkJCQkkRU5WeyRrfSA9ICRlbnYtPnska307Ci0JCQl9IGVsc2UgewotCQkJCWRlbGV0ZSAkRU5WeyRrfTsKLQkJCX0KLQkJfQotCX0KLX0KLQotc3ViIGdjIHsKLQljb21tYW5kX25vaXN5KCdnYycsICctLWF1dG8nKTsKLX07Ci0KLXN1YiBkb19naXRfY29tbWl0IHsKLQlteSAoJHNlbGYsICRsb2dfZW50cnkpID0gQF87Ci0JbXkgJGxyID0gJHNlbGYtPmxhc3RfcmV2OwotCWlmIChkZWZpbmVkICRsciAmJiAkbHIgPj0gJGxvZ19lbnRyeS0+e3JldmlzaW9ufSkgewotCQlkaWUgIkxhc3QgZmV0Y2hlZCByZXZpc2lvbiBvZiAiLCAkc2VsZi0+cmVmbmFtZSwKLQkJICAgICIgd2FzIHIkbHIsIGJ1dCB3ZSBhcmUgYWJvdXQgdG8gZmV0Y2g6ICIsCi0JCSAgICAiciRsb2dfZW50cnktPntyZXZpc2lvbn0hXG4iOwotCX0KLQlpZiAobXkgJGMgPSAkc2VsZi0+cmV2X21hcF9nZXQoJGxvZ19lbnRyeS0+e3JldmlzaW9ufSkpIHsKLQkJY3JvYWsgIiRsb2dfZW50cnktPntyZXZpc2lvbn0gPSAkYyBhbHJlYWR5IGV4aXN0cyEgIiwKLQkJICAgICAgIldoeSBhcmUgd2UgcmVmZXRjaGluZyBpdD9cbiI7Ci0JfQotCW15ICRvbGRfZW52ID0gc2V0X2NvbW1pdF9oZWFkZXJfZW52KCRsb2dfZW50cnkpOwotCW15ICR0cmVlID0gJGxvZ19lbnRyeS0+e3RyZWV9OwotCWlmICghZGVmaW5lZCAkdHJlZSkgewotCQkkdHJlZSA9ICRzZWxmLT50bXBfaW5kZXhfZG8oc3ViIHsKLQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRfb25lbGluZSgnd3JpdGUtdHJlZScpIH0pOwotCX0KLQlkaWUgIlRyZWUgaXMgbm90IGEgdmFsaWQgc2hhMTogJHRyZWVcbiIgaWYgJHRyZWUgIX4gL14kOjpzaGExJC9vOwotCi0JbXkgQGV4ZWMgPSAoJ2dpdCcsICdjb21taXQtdHJlZScsICR0cmVlKTsKLQlmb3JlYWNoICgkc2VsZi0+Z2V0X2NvbW1pdF9wYXJlbnRzKCRsb2dfZW50cnkpKSB7Ci0JCXB1c2ggQGV4ZWMsICctcCcsICRfOwotCX0KLQlkZWZpbmVkKG15ICRwaWQgPSBvcGVuMyhteSAkbXNnX2ZoLCBteSAkb3V0X2ZoLCAnPiZTVERFUlInLCBAZXhlYykpCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBjcm9hayAkITsKLQliaW5tb2RlICRtc2dfZmg7Ci0KLQkjIHdlIGFsd2F5cyBnZXQgVVRGLTggZnJvbSBTVk4sIGJ1dCB3ZSBtYXkgd2FudCBvdXIgY29tbWl0cyBpbgotCSMgYSBkaWZmZXJlbnQgZW5jb2RpbmcuCi0JaWYgKG15ICRlbmMgPSBHaXQ6OmNvbmZpZygnaTE4bi5jb21taXRlbmNvZGluZycpKSB7Ci0JCXJlcXVpcmUgRW5jb2RlOwotCQlFbmNvZGU6OmZyb21fdG8oJGxvZ19lbnRyeS0+e2xvZ30sICdVVEYtOCcsICRlbmMpOwotCX0KLQlwcmludCAkbXNnX2ZoICRsb2dfZW50cnktPntsb2d9IG9yIGNyb2FrICQhOwotCXJlc3RvcmVfY29tbWl0X2hlYWRlcl9lbnYoJG9sZF9lbnYpOwotCXVubGVzcyAoJHNlbGYtPm5vX21ldGFkYXRhKSB7Ci0JCXByaW50ICRtc2dfZmggIlxuZ2l0LXN2bi1pZDogJGxvZ19lbnRyeS0+e21ldGFkYXRhfVxuIgotCQkgICAgICAgICAgICAgIG9yIGNyb2FrICQhOwotCX0KLQkkbXNnX2ZoLT5mbHVzaCA9PSAwIG9yIGNyb2FrICQhOwotCWNsb3NlICRtc2dfZmggb3IgY3JvYWsgJCE7Ci0JY2hvbXAobXkgJGNvbW1pdCA9IGRvIHsgbG9jYWwgJC87IDwkb3V0X2ZoPiB9KTsKLQljbG9zZSAkb3V0X2ZoIG9yIGNyb2FrICQhOwotCXdhaXRwaWQgJHBpZCwgMDsKLQljcm9hayAkPyBpZiAkPzsKLQlpZiAoJGNvbW1pdCAhfiAvXiQ6OnNoYTEkL28pIHsKLQkJZGllICJGYWlsZWQgdG8gY29tbWl0LCBpbnZhbGlkIHNoYTE6ICRjb21taXRcbiI7Ci0JfQotCi0JJHNlbGYtPnJldl9tYXBfc2V0KCRsb2dfZW50cnktPntyZXZpc2lvbn0sICRjb21taXQsIDEpOwotCi0JJHNlbGYtPntsYXN0X3Jldn0gPSAkbG9nX2VudHJ5LT57cmV2aXNpb259OwotCSRzZWxmLT57bGFzdF9jb21taXR9ID0gJGNvbW1pdDsKLQlwcmludCAiciRsb2dfZW50cnktPntyZXZpc2lvbn0iIHVubGVzcyAkOjpfcSA+IDE7Ci0JaWYgKGRlZmluZWQgJGxvZ19lbnRyeS0+e3N2bV9yZXZpc2lvbn0pIHsKLQkJIHByaW50ICIgKFxAJGxvZ19lbnRyeS0+e3N2bV9yZXZpc2lvbn0pIiB1bmxlc3MgJDo6X3EgPiAxOwotCQkgJHNlbGYtPnJldl9tYXBfc2V0KCRsb2dfZW50cnktPntzdm1fcmV2aXNpb259LCAkY29tbWl0LAotCQkgICAgICAgICAgICAgICAgICAgMCwgJHNlbGYtPnN2bV91dWlkKTsKLQl9Ci0JcHJpbnQgIiA9ICRjb21taXQgKCRzZWxmLT57cmVmX2lkfSlcbiIgdW5sZXNzICQ6Ol9xID4gMTsKLQlpZiAoLS0kX2djX25yID09IDApIHsKLQkJJF9nY19uciA9ICRfZ2NfcGVyaW9kOwotCQlnYygpOwotCX0KLQlyZXR1cm4gJGNvbW1pdDsKLX0KLQotc3ViIG1hdGNoX3BhdGhzIHsKLQlteSAoJHNlbGYsICRwYXRocywgJHIpID0gQF87Ci0JcmV0dXJuIDEgaWYgJHNlbGYtPntwYXRofSBlcSAnJzsKLQlpZiAobXkgJHBhdGggPSAkcGF0aHMtPnsiLyRzZWxmLT57cGF0aH0ifSkgewotCQlyZXR1cm4gKCRwYXRoLT57YWN0aW9ufSBlcSAnRCcpID8gMCA6IDE7Ci0JfQotCSRzZWxmLT57cGF0aF9yZWdleH0gfHw9IHFyL15cL1xRJHNlbGYtPntwYXRofVxFXC8vOwotCWlmIChncmVwIC8kc2VsZi0+e3BhdGhfcmVnZXh9Lywga2V5cyAlJHBhdGhzKSB7Ci0JCXJldHVybiAxOwotCX0KLQlteSAkYyA9ICcnOwotCWZvcmVhY2ggKHNwbGl0IG0jLyMsICRzZWxmLT57cGF0aH0pIHsKLQkJJGMgLj0gIi8kXyI7Ci0JCW5leHQgdW5sZXNzICgkcGF0aHMtPnskY30gJiYKLQkJICAgICAgICAgICAgICgkcGF0aHMtPnskY30tPnthY3Rpb259ID1+IC9eW0FSXSQvKSk7Ci0JCWlmICgkc2VsZi0+cmEtPmNoZWNrX3BhdGgoJHNlbGYtPntwYXRofSwgJHIpID09Ci0JCSAgICAkU1ZOOjpOb2RlOjpkaXIpIHsKLQkJCXJldHVybiAxOwotCQl9Ci0JfQotCXJldHVybiAwOwotfQotCi1zdWIgZmluZF9wYXJlbnRfYnJhbmNoIHsKLQlteSAoJHNlbGYsICRwYXRocywgJHJldikgPSBAXzsKLQlyZXR1cm4gdW5kZWYgdW5sZXNzICRzZWxmLT5mb2xsb3dfcGFyZW50OwotCXVubGVzcyAoZGVmaW5lZCAkcGF0aHMpIHsKLQkJbXkgJGVycl9oYW5kbGVyID0gJFNWTjo6RXJyb3I6OmhhbmRsZXI7Ci0JCSRTVk46OkVycm9yOjpoYW5kbGVyID0gXCZHaXQ6OlNWTjo6UmE6OnNraXBfdW5rbm93bl9yZXZzOwotCQkkc2VsZi0+cmEtPmdldF9sb2coWyRzZWxmLT57cGF0aH1dLCAkcmV2LCAkcmV2LCAwLCAxLCAxLAotCQkJCSAgIHN1YiB7ICRwYXRocyA9ICRfWzBdIH0pOwotCQkkU1ZOOjpFcnJvcjo6aGFuZGxlciA9ICRlcnJfaGFuZGxlcjsKLQl9Ci0JcmV0dXJuIHVuZGVmIHVubGVzcyBkZWZpbmVkICRwYXRoczsKLQotCSMgbG9vayBmb3IgYSBwYXJlbnQgZnJvbSBhbm90aGVyIGJyYW5jaDoKLQlteSBAYl9wYXRoX2NvbXBvbmVudHMgPSBzcGxpdCBtIy8jLCAkc2VsZi0+e3BhdGh9OwotCW15IEBhX3BhdGhfY29tcG9uZW50czsKLQlteSAkaTsKLQl3aGlsZSAoQGJfcGF0aF9jb21wb25lbnRzKSB7Ci0JCSRpID0gJHBhdGhzLT57Jy8nLmpvaW4oJy8nLCBAYl9wYXRoX2NvbXBvbmVudHMpfTsKLQkJbGFzdCBpZiAkaSAmJiBkZWZpbmVkICRpLT57Y29weWZyb21fcGF0aH07Ci0JCXVuc2hpZnQoQGFfcGF0aF9jb21wb25lbnRzLCBwb3AoQGJfcGF0aF9jb21wb25lbnRzKSk7Ci0JfQotCXJldHVybiB1bmRlZiB1bmxlc3MgZGVmaW5lZCAkaSAmJiBkZWZpbmVkICRpLT57Y29weWZyb21fcGF0aH07Ci0JbXkgJGJyYW5jaF9mcm9tID0gJGktPntjb3B5ZnJvbV9wYXRofTsKLQlpZiAoQGFfcGF0aF9jb21wb25lbnRzKSB7Ci0JCXByaW50IFNUREVSUiAiYnJhbmNoX2Zyb206ICRicmFuY2hfZnJvbSA9PiAiOwotCQkkYnJhbmNoX2Zyb20gLj0gJy8nLmpvaW4oJy8nLCBAYV9wYXRoX2NvbXBvbmVudHMpOwotCQlwcmludCBTVERFUlIgJGJyYW5jaF9mcm9tLCAiXG4iOwotCX0KLQlteSAkciA9ICRpLT57Y29weWZyb21fcmV2fTsKLQlteSAkcmVwb3Nfcm9vdCA9ICRzZWxmLT5yYS0+e3JlcG9zX3Jvb3R9OwotCW15ICR1cmwgPSAkc2VsZi0+cmEtPnt1cmx9OwotCW15ICRuZXdfdXJsID0gJHVybCAuICRicmFuY2hfZnJvbTsKLQlwcmludCBTVERFUlIgICJGb3VuZCBwb3NzaWJsZSBicmFuY2ggcG9pbnQ6ICIsCi0JICAgICAgICAgICAgICAiJG5ld191cmwgPT4gIiwgJHNlbGYtPmZ1bGxfdXJsLCAiLCAkclxuIgotCSAgICAgICAgICAgICAgdW5sZXNzICQ6Ol9xID4gMTsKLQkkYnJhbmNoX2Zyb20gPX4gcyNeLyMjOwotCW15ICRncyA9ICRzZWxmLT5vdGhlcl9ncygkbmV3X3VybCwgJHVybCwKLQkJICAgICAgICAgICAgICAgICAkYnJhbmNoX2Zyb20sICRyLCAkc2VsZi0+e3JlZl9pZH0pOwotCW15ICgkcjAsICRwYXJlbnQpID0gJGdzLT5maW5kX3Jldl9iZWZvcmUoJHIsIDEpOwotCXsKLQkJbXkgKCRiYXNlLCAkaGVhZCk7Ci0JCWlmICghZGVmaW5lZCAkcjAgfHwgIWRlZmluZWQgJHBhcmVudCkgewotCQkJKCRiYXNlLCAkaGVhZCkgPSBwYXJzZV9yZXZpc2lvbl9hcmd1bWVudCgwLCAkcik7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoJHIwIDwgJHIpIHsKLQkJCQkkZ3MtPnJhLT5nZXRfbG9nKFskZ3MtPntwYXRofV0sICRyMCArIDEsICRyLCAxLAotCQkJCQkwLCAxLCBzdWIgeyAkYmFzZSA9ICRfWzFdIC0gMSB9KTsKLQkJCX0KLQkJfQotCQlpZiAoZGVmaW5lZCAkYmFzZSAmJiAkYmFzZSA8PSAkcikgewotCQkJJGdzLT5mZXRjaCgkYmFzZSwgJHIpOwotCQl9Ci0JCSgkcjAsICRwYXJlbnQpID0gJGdzLT5maW5kX3Jldl9iZWZvcmUoJHIsIDEpOwotCX0KLQlpZiAoZGVmaW5lZCAkcjAgJiYgZGVmaW5lZCAkcGFyZW50KSB7Ci0JCXByaW50IFNUREVSUiAiRm91bmQgYnJhbmNoIHBhcmVudDogKCRzZWxmLT57cmVmX2lkfSkgJHBhcmVudFxuIgotCQkgICAgICAgICAgICAgdW5sZXNzICQ6Ol9xID4gMTsKLQkJbXkgJGVkOwotCQlpZiAoJHNlbGYtPnJhLT5jYW5fZG9fc3dpdGNoKSB7Ci0JCQkkc2VsZi0+YXNzZXJ0X2luZGV4X2NsZWFuKCRwYXJlbnQpOwotCQkJcHJpbnQgU1RERVJSICJGb2xsb3dpbmcgcGFyZW50IHdpdGggZG9fc3dpdGNoXG4iCi0JCQkgICAgICAgICAgICAgdW5sZXNzICQ6Ol9xID4gMTsKLQkJCSMgZG9fc3dpdGNoIHdvcmtzIHdpdGggc3ZuL3RydW5rID49IHIyMjMxMiwgYnV0IHRoYXQKLQkJCSMgaXMgbm90IGluY2x1ZGVkIHdpdGggU1ZOIDEuNC4zICh0aGUgbGF0ZXN0IHZlcnNpb24KLQkJCSMgYXQgdGhlIG1vbWVudCksIHNvIHdlIGNhbid0IHJlbHkgb24gaXQKLQkJCSRzZWxmLT57bGFzdF9yZXZ9ID0gJHIwOwotCQkJJHNlbGYtPntsYXN0X2NvbW1pdH0gPSAkcGFyZW50OwotCQkJJGVkID0gR2l0OjpTVk46OkZldGNoZXItPm5ldygkc2VsZiwgJGdzLT57cGF0aH0pOwotCQkJJGdzLT5yYS0+Z3NfZG9fc3dpdGNoKCRyMCwgJHJldiwgJGdzLAotCQkJCQkgICAgICAkc2VsZi0+ZnVsbF91cmwsICRlZCkKLQkJCSAgb3IgZGllICJTVk4gY29ubmVjdGlvbiBmYWlsZWQgc29tZXdoZXJlLi4uXG4iOwotCQl9IGVsc2lmICgkc2VsZi0+cmEtPnRyZWVzX21hdGNoKCRuZXdfdXJsLCAkcjAsCi0JCQkgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+ZnVsbF91cmwsICRyZXYpKSB7Ci0JCQlwcmludCBTVERFUlIgIlRyZWVzIG1hdGNoOlxuIiwKLQkJCSAgICAgICAgICAgICAiICAkbmV3X3VybFxAJHIwXG4iLAotCQkJICAgICAgICAgICAgICIgICR7XCRzZWxmLT5mdWxsX3VybH1cQCRyZXZcbiIsCi0JCQkgICAgICAgICAgICAgIkZvbGxvd2luZyBwYXJlbnQgd2l0aCBubyBjaGFuZ2VzXG4iCi0JCQkgICAgICAgICAgICAgdW5sZXNzICQ6Ol9xID4gMTsKLQkJCSRzZWxmLT50bXBfaW5kZXhfZG8oc3ViIHsKLQkJCSAgICBjb21tYW5kX25vaXN5KCdyZWFkLXRyZWUnLCAkcGFyZW50KTsKLQkJCX0pOwotCQkJJHNlbGYtPntsYXN0X2NvbW1pdH0gPSAkcGFyZW50OwotCQl9IGVsc2UgewotCQkJcHJpbnQgU1RERVJSICJGb2xsb3dpbmcgcGFyZW50IHdpdGggZG9fdXBkYXRlXG4iCi0JCQkgICAgICAgICAgICAgdW5sZXNzICQ6Ol9xID4gMTsKLQkJCSRlZCA9IEdpdDo6U1ZOOjpGZXRjaGVyLT5uZXcoJHNlbGYpOwotCQkJJHNlbGYtPnJhLT5nc19kb191cGRhdGUoJHJldiwgJHJldiwgJHNlbGYsICRlZCkKLQkJCSAgb3IgZGllICJTVk4gY29ubmVjdGlvbiBmYWlsZWQgc29tZXdoZXJlLi4uXG4iOwotCQl9Ci0JCXByaW50IFNUREVSUiAiU3VjY2Vzc2Z1bGx5IGZvbGxvd2VkIHBhcmVudFxuIiB1bmxlc3MgJDo6X3EgPiAxOwotCQlyZXR1cm4gJHNlbGYtPm1ha2VfbG9nX2VudHJ5KCRyZXYsIFskcGFyZW50XSwgJGVkKTsKLQl9Ci0JcmV0dXJuIHVuZGVmOwotfQotCi1zdWIgZG9fZmV0Y2ggewotCW15ICgkc2VsZiwgJHBhdGhzLCAkcmV2KSA9IEBfOwotCW15ICRlZDsKLQlteSAoJGxhc3RfcmV2LCBAcGFyZW50cyk7Ci0JaWYgKG15ICRsYyA9ICRzZWxmLT5sYXN0X2NvbW1pdCkgewotCQkjIHdlIGNhbiBoYXZlIGEgYnJhbmNoIHRoYXQgd2FzIGRlbGV0ZWQsIHRoZW4gcmUtYWRkZWQKLQkJIyB1bmRlciB0aGUgc2FtZSBuYW1lIGJ1dCBjb3BpZWQgZnJvbSBhbm90aGVyIHBhdGgsIGluCi0JCSMgd2hpY2ggY2FzZSB3ZSdsbCBoYXZlIG11bHRpcGxlIHBhcmVudHMgKHdlIGRvbid0Ci0JCSMgd2FudCB0byBicmVhayB0aGUgb3JpZ2luYWwgcmVmLCBub3IgbG9zZSBjb3B5cGF0aCBpbmZvKToKLQkJaWYgKG15ICRsb2dfZW50cnkgPSAkc2VsZi0+ZmluZF9wYXJlbnRfYnJhbmNoKCRwYXRocywgJHJldikpIHsKLQkJCXB1c2ggQHskbG9nX2VudHJ5LT57cGFyZW50c319LCAkbGM7Ci0JCQlyZXR1cm4gJGxvZ19lbnRyeTsKLQkJfQotCQkkZWQgPSBHaXQ6OlNWTjo6RmV0Y2hlci0+bmV3KCRzZWxmKTsKLQkJJGxhc3RfcmV2ID0gJHNlbGYtPntsYXN0X3Jldn07Ci0JCSRlZC0+e2N9ID0gJGxjOwotCQlAcGFyZW50cyA9ICgkbGMpOwotCX0gZWxzZSB7Ci0JCSRsYXN0X3JldiA9ICRyZXY7Ci0JCWlmIChteSAkbG9nX2VudHJ5ID0gJHNlbGYtPmZpbmRfcGFyZW50X2JyYW5jaCgkcGF0aHMsICRyZXYpKSB7Ci0JCQlyZXR1cm4gJGxvZ19lbnRyeTsKLQkJfQotCQkkZWQgPSBHaXQ6OlNWTjo6RmV0Y2hlci0+bmV3KCRzZWxmKTsKLQl9Ci0JdW5sZXNzICgkc2VsZi0+cmEtPmdzX2RvX3VwZGF0ZSgkbGFzdF9yZXYsICRyZXYsICRzZWxmLCAkZWQpKSB7Ci0JCWRpZSAiU1ZOIGNvbm5lY3Rpb24gZmFpbGVkIHNvbWV3aGVyZS4uLlxuIjsKLQl9Ci0JJHNlbGYtPm1ha2VfbG9nX2VudHJ5KCRyZXYsIFxAcGFyZW50cywgJGVkKTsKLX0KLQotc3ViIG1rZW1wdHlkaXJzIHsKLQlteSAoJHNlbGYsICRyKSA9IEBfOwotCi0Jc3ViIHNjYW4gewotCQlteSAoJHIsICRlbXB0eV9kaXJzLCAkbGluZSkgPSBAXzsKLQkJaWYgKGRlZmluZWQgJHIgJiYgJGxpbmUgPX4gL15yKFxkKykkLykgewotCQkJcmV0dXJuIDAgaWYgJDEgPiAkcjsKLQkJfSBlbHNpZiAoJGxpbmUgPX4gL14gIFwrZW1wdHlfZGlyOiAoLispJC8pIHsKLQkJCSRlbXB0eV9kaXJzLT57JDF9ID0gMTsKLQkJfSBlbHNpZiAoJGxpbmUgPX4gL14gIFwtZW1wdHlfZGlyOiAoLispJC8pIHsKLQkJCW15IEBkID0gZ3JlcCB7bVteXFEkMVxFKC98JCldfSAoa2V5cyAlJGVtcHR5X2RpcnMpOwotCQkJZGVsZXRlIEAkZW1wdHlfZGlyc3tAZH07Ci0JCX0KLQkJMTsgIyBjb250aW51ZQotCX07Ci0KLQlteSAlZW1wdHlfZGlycyA9ICgpOwotCW15ICRnel9maWxlID0gIiRzZWxmLT57ZGlyfS91bmhhbmRsZWQubG9nLmd6IjsKLQlpZiAoLWYgJGd6X2ZpbGUpIHsKLQkJaWYgKCEkY2FuX2NvbXByZXNzKSB7Ci0JCQl3YXJuICJDb21wcmVzczo6WmxpYiBjb3VsZCBub3QgYmUgZm91bmQ7ICIsCi0JCQkgICAgICJlbXB0eSBkaXJlY3RvcmllcyBpbiAkZ3pfZmlsZSB3aWxsIG5vdCBiZSByZWFkXG4iOwotCQl9IGVsc2UgewotCQkJbXkgJGd6ID0gQ29tcHJlc3M6OlpsaWI6Omd6b3BlbigkZ3pfZmlsZSwgInJiIikgb3IKLQkJCQlkaWUgIlVuYWJsZSB0byBvcGVuICRnel9maWxlOiAkIVxuIjsKLQkJCW15ICRsaW5lOwotCQkJd2hpbGUgKCRnei0+Z3pyZWFkbGluZSgkbGluZSkgPiAwKSB7Ci0JCQkJc2NhbigkciwgXCVlbXB0eV9kaXJzLCAkbGluZSkgb3IgbGFzdDsKLQkJCX0KLQkJCSRnei0+Z3pjbG9zZTsKLQkJfQotCX0KLQotCWlmIChvcGVuIG15ICRmaCwgJzwnLCAiJHNlbGYtPntkaXJ9L3VuaGFuZGxlZC5sb2ciKSB7Ci0JCWJpbm1vZGUgJGZoIG9yIGNyb2FrICJiaW5tb2RlOiAkISI7Ci0JCXdoaWxlICg8JGZoPikgewotCQkJc2NhbigkciwgXCVlbXB0eV9kaXJzLCAkXykgb3IgbGFzdDsKLQkJfQotCQljbG9zZSAkZmg7Ci0JfQotCi0JbXkgJHN0cmlwID0gcXIvXEFcUSRzZWxmLT57cGF0aH1cRSg/OlwvfCQpLzsKLQlmb3JlYWNoIG15ICRkIChzb3J0IGtleXMgJWVtcHR5X2RpcnMpIHsKLQkJJGQgPSB1cmlfZGVjb2RlKCRkKTsKLQkJJGQgPX4gcy8kc3RyaXAvLzsKLQkJbmV4dCB1bmxlc3MgbGVuZ3RoKCRkKTsKLQkJbmV4dCBpZiAtZCAkZDsKLQkJaWYgKC1lICRkKSB7Ci0JCQl3YXJuICIkZCBleGlzdHMgYnV0IGlzIG5vdCBhIGRpcmVjdG9yeVxuIjsKLQkJfSBlbHNlIHsKLQkJCXByaW50ICJjcmVhdGluZyBlbXB0eSBkaXJlY3Rvcnk6ICRkXG4iOwotCQkJbWtwYXRoKFskZF0pOwotCQl9Ci0JfQotfQotCi1zdWIgZ2V0X3VudHJhY2tlZCB7Ci0JbXkgKCRzZWxmLCAkZWQpID0gQF87Ci0JbXkgQG91dDsKLQlteSAkaCA9ICRlZC0+e2VtcHR5fTsKLQlmb3JlYWNoIChzb3J0IGtleXMgJSRoKSB7Ci0JCW15ICRhY3QgPSAkaC0+eyRffSA/ICcrZW1wdHlfZGlyJyA6ICctZW1wdHlfZGlyJzsKLQkJcHVzaCBAb3V0LCAiICAkYWN0OiAiIC4gdXJpX2VuY29kZSgkXyk7Ci0JCXdhcm4gIlc6ICRhY3Q6ICRfXG4iOwotCX0KLQlmb3JlYWNoIG15ICR0IChxdy9kaXJfcHJvcCBmaWxlX3Byb3AvKSB7Ci0JCSRoID0gJGVkLT57JHR9IG9yIG5leHQ7Ci0JCWZvcmVhY2ggbXkgJHBhdGggKHNvcnQga2V5cyAlJGgpIHsKLQkJCW15ICRwcGF0aCA9ICRwYXRoIGVxICcnID8gJy4nIDogJHBhdGg7Ci0JCQlmb3JlYWNoIG15ICRwcm9wIChzb3J0IGtleXMgJXskaC0+eyRwYXRofX0pIHsKLQkJCQluZXh0IGlmICRTS0lQX1BST1B7JHByb3B9OwotCQkJCW15ICR2ID0gJGgtPnskcGF0aH0tPnskcHJvcH07Ci0JCQkJbXkgJHRfcHBhdGhfcHJvcCA9ICIkdDogIiAuCi0JCQkJICAgICAgICAgICAgICAgICAgICB1cmlfZW5jb2RlKCRwcGF0aCkgLiAnICcgLgotCQkJCSAgICAgICAgICAgICAgICAgICAgdXJpX2VuY29kZSgkcHJvcCk7Ci0JCQkJaWYgKGRlZmluZWQgJHYpIHsKLQkJCQkJcHVzaCBAb3V0LCAiICArJHRfcHBhdGhfcHJvcCAiIC4KLQkJCQkJICAgICAgICAgICB1cmlfZW5jb2RlKCR2KTsKLQkJCQl9IGVsc2UgewotCQkJCQlwdXNoIEBvdXQsICIgIC0kdF9wcGF0aF9wcm9wIjsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9Ci0JZm9yZWFjaCBteSAkdCAocXcvYWJzZW50X2ZpbGUgYWJzZW50X2RpcmVjdG9yeS8pIHsKLQkJJGggPSAkZWQtPnskdH0gb3IgbmV4dDsKLQkJZm9yZWFjaCBteSAkcGFyZW50IChzb3J0IGtleXMgJSRoKSB7Ci0JCQlmb3JlYWNoIG15ICRwYXRoIChzb3J0IEB7JGgtPnskcGFyZW50fX0pIHsKLQkJCQlwdXNoIEBvdXQsICIgICR0OiAiIC4KLQkJCQkgICAgICAgICAgIHVyaV9lbmNvZGUoIiRwYXJlbnQvJHBhdGgiKTsKLQkJCQl3YXJuICJXOiAkdDogJHBhcmVudC8kcGF0aCAiLAotCQkJCSAgICAgIkluc3VmZmljaWVudCBwZXJtaXNzaW9ucz9cbiI7Ci0JCQl9Ci0JCX0KLQl9Ci0JXEBvdXQ7Ci19Ci0KLXN1YiBnZXRfdHogewotCSMgc29tZSBzeXN0bWVzIGRvbid0IGhhbmRsZSBvciBtaXNoYW5kbGUgJXosIHNvIGJlIGNyZWF0aXZlLgotCW15ICR0ID0gc2hpZnQgfHwgdGltZTsKLQlteSAkZ20gPSB0aW1lbG9jYWwoZ210aW1lKCR0KSk7Ci0JbXkgJHNpZ24gPSBxdyggKyArIC0gKVsgJHQgPD0+ICRnbSBdOwotCXJldHVybiBzcHJpbnRmKCIlcyUwMmQlMDJkIiwgJHNpZ24sIChnbXRpbWUoYWJzKCR0IC0gJGdtKSkpWzIsMV0pOwotfQotCi0jIHBhcnNlX3N2bl9kYXRlKERBVEUpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEdpdmVuIGEgZGF0ZSAoaW4gVVRDKSBmcm9tIFN1YnZlcnNpb24sIHJldHVybiBhIHN0cmluZyBpbiB0aGUgZm9ybWF0Ci0jICI8VFogT2Zmc2V0PiA8bG9jYWwgZGF0ZS90aW1lPiIgdGhhdCBHaXQgd2lsbCB1c2UuCi0jCi0jIEJ5IGRlZmF1bHQgdGhlIHBhcnNlZCBkYXRlIHdpbGwgYmUgaW4gVVRDOyBpZiAkR2l0OjpTVk46Ol9sb2NhbHRpbWUKLSMgaXMgdHJ1ZSB3ZSdsbCBjb252ZXJ0IGl0IHRvIHRoZSBsb2NhbCB0aW1lem9uZSBpbnN0ZWFkLgotc3ViIHBhcnNlX3N2bl9kYXRlIHsKLQlteSAkZGF0ZSA9IHNoaWZ0IHx8IHJldHVybiAnKzAwMDAgMTk3MC0wMS0wMSAwMDowMDowMCc7Ci0JbXkgKCRZLCRtLCRkLCRILCRNLCRTKSA9ICgkZGF0ZSA9fiAvXihcZHs0fSlcLShcZFxkKVwtKFxkXGQpVAotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcZFxkKVw6KFxkXGQpXDooXGRcZClcLlxkKlokL3gpIG9yCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JvYWsgIlVuYWJsZSB0byBwYXJzZSBkYXRlOiAkZGF0ZVxuIjsKLQlteSAkcGFyc2VkX2RhdGU7ICAgICMgU2V0IG5leHQuCi0KLQlpZiAoJEdpdDo6U1ZOOjpfbG9jYWx0aW1lKSB7Ci0JCSMgVHJhbnNsYXRlIHRoZSBTdWJ2ZXJzaW9uIGRhdGV0aW1lIHRvIGFuIGVwb2NoIHRpbWUuCi0JCSMgQmVnaW4gYnkgc3dpdGNoaW5nIG91cnNlbHZlcyB0byAkZGF0ZSdzIHRpbWV6b25lLCBVVEMuCi0JCW15ICRvbGRfZW52X1RaID0gJEVOVntUWn07Ci0JCSRFTlZ7VFp9ID0gJ1VUQyc7Ci0KLQkJbXkgJGVwb2NoX2luX1VUQyA9Ci0JCSAgICBQT1NJWDo6c3RyZnRpbWUoJyVzJywgJFMsICRNLCAkSCwgJGQsICRtIC0gMSwgJFkgLSAxOTAwKTsKLQotCQkjIERldGVybWluZSBvdXIgbG9jYWwgdGltZXpvbmUgKGluY2x1ZGluZyBEU1QpIGF0IHRoZQotCQkjIHRpbWUgb2YgJGVwb2NoX2luX1VUQy4gICRHaXQ6OlNWTjo6TG9nOjpUWiBzdG9yZWQgdGhlCi0JCSMgdmFsdWUgb2YgVFosIGlmIGFueSwgYXQgdGhlIHRpbWUgd2Ugd2VyZSBydW4uCi0JCWlmIChkZWZpbmVkICRHaXQ6OlNWTjo6TG9nOjpUWikgewotCQkJJEVOVntUWn0gPSAkR2l0OjpTVk46OkxvZzo6VFo7Ci0JCX0gZWxzZSB7Ci0JCQlkZWxldGUgJEVOVntUWn07Ci0JCX0KLQotCQlteSAkb3VyX1RaID0gZ2V0X3R6KCk7Ci0KLQkJIyBUaGlzIGNvbnZlcnRzICRlcG9jaF9pbl9VVEMgaW50byBvdXIgbG9jYWwgdGltZXpvbmUuCi0JCW15ICgkc2VjLCAkbWluLCAkaG91ciwgJG1kYXksICRtb24sICR5ZWFyLAotCQkgICAgJHdkYXksICR5ZGF5LCAkaXNkc3QpID0gbG9jYWx0aW1lKCRlcG9jaF9pbl9VVEMpOwotCi0JCSRwYXJzZWRfZGF0ZSA9IHNwcmludGYoJyVzICUwNGQtJTAyZC0lMDJkICUwMmQ6JTAyZDolMDJkJywKLQkJCQkgICAgICAgJG91cl9UWiwgJHllYXIgKyAxOTAwLCAkbW9uICsgMSwKLQkJCQkgICAgICAgJG1kYXksICRob3VyLCAkbWluLCAkc2VjKTsKLQotCQkjIFJlc2V0IHVzIHRvIHRoZSB0aW1lem9uZSBpbiBlZmZlY3Qgd2hlbiB3ZSBlbnRlcmVkCi0JCSMgdGhpcyByb3V0aW5lLgotCQlpZiAoZGVmaW5lZCAkb2xkX2Vudl9UWikgewotCQkJJEVOVntUWn0gPSAkb2xkX2Vudl9UWjsKLQkJfSBlbHNlIHsKLQkJCWRlbGV0ZSAkRU5We1RafTsKLQkJfQotCX0gZWxzZSB7Ci0JCSRwYXJzZWRfZGF0ZSA9ICIrMDAwMCAkWS0kbS0kZCAkSDokTTokUyI7Ci0JfQotCi0JcmV0dXJuICRwYXJzZWRfZGF0ZTsKLX0KLQotc3ViIG90aGVyX2dzIHsKLQlteSAoJHNlbGYsICRuZXdfdXJsLCAkdXJsLAotCSAgICAkYnJhbmNoX2Zyb20sICRyLCAkb2xkX3JlZl9pZCkgPSBAXzsKLQlteSAkZ3MgPSBHaXQ6OlNWTi0+ZmluZF9ieV91cmwoJG5ld191cmwsICR1cmwsICRicmFuY2hfZnJvbSk7Ci0JdW5sZXNzICgkZ3MpIHsKLQkJbXkgJHJlZl9pZCA9ICRvbGRfcmVmX2lkOwotCQkkcmVmX2lkID1+IHMvXEBcZCstKiQvLzsKLQkJJHJlZl9pZCAuPSAiXEAkciI7Ci0JCSMganVzdCBncm93IGEgdGFpbCBpZiB3ZSdyZSBub3QgdW5pcXVlIGVub3VnaCA6eAotCQkkcmVmX2lkIC49ICctJyB3aGlsZSBmaW5kX3JlZigkcmVmX2lkKTsKLQkJbXkgKCR1LCAkcCwgJHJlcG9faWQpID0gKCRuZXdfdXJsLCAnJywgJHJlZl9pZCk7Ci0JCWlmICgkdSA9fiBzI15cUSR1cmxcRSgvfCQpIyMpIHsKLQkJCSRwID0gJHU7Ci0JCQkkdSA9ICR1cmw7Ci0JCQkkcmVwb19pZCA9ICRzZWxmLT57cmVwb19pZH07Ci0JCX0KLQkJd2hpbGUgKDEpIHsKLQkJCSMgSXQgaXMgcG9zc2libGUgdG8gdGFnIHR3byBkaWZmZXJlbnQgc3ViZGlyZWN0b3JpZXMgYXQKLQkJCSMgdGhlIHNhbWUgcmV2aXNpb24uICBJZiB0aGUgdXJsIGZvciBhbiBleGlzdGluZyByZWYKLQkJCSMgZG9lcyBub3QgbWF0Y2gsIHdlIG11c3QgZWl0aGVyIGZpbmQgYSByZWYgd2l0aCBhCi0JCQkjIG1hdGNoaW5nIHVybCBvciBjcmVhdGUgYSBuZXcgcmVmIGJ5IGdyb3dpbmcgYSB0YWlsLgotCQkJJGdzID0gR2l0OjpTVk4tPmluaXQoJHUsICRwLCAkcmVwb19pZCwgJHJlZl9pZCwgMSk7Ci0JCQlteSAodW5kZWYsICRtYXhfY29tbWl0KSA9ICRncy0+cmV2X21hcF9tYXgoMSk7Ci0JCQlsYXN0IGlmICghJG1heF9jb21taXQpOwotCQkJbXkgKCR1cmwpID0gOjpjbXRfbWV0YWRhdGEoJG1heF9jb21taXQpOwotCQkJbGFzdCBpZiAoJHVybCBlcSAkZ3MtPm1ldGFkYXRhX3VybCk7Ci0JCQkkcmVmX2lkIC49ICctJzsKLQkJfQotCQlwcmludCBTVERFUlIgIkluaXRpYWxpemluZyBwYXJlbnQ6ICRyZWZfaWRcbiIgdW5sZXNzICQ6Ol9xID4gMTsKLQl9Ci0JJGdzCi19Ci0KLXN1YiBjYWxsX2F1dGhvcnNfcHJvZyB7Ci0JbXkgKCRvcmlnX2F1dGhvcikgPSBAXzsKLQkkb3JpZ19hdXRob3IgPSBjb21tYW5kX29uZWxpbmUoJ3Jldi1wYXJzZScsICctLXNxLXF1b3RlJywgJG9yaWdfYXV0aG9yKTsKLQlteSAkYXV0aG9yID0gYCQ6Ol9hdXRob3JzX3Byb2cgJG9yaWdfYXV0aG9yYDsKLQlpZiAoJD8gIT0gMCkgewotCQlkaWUgIiQ6Ol9hdXRob3JzX3Byb2cgZmFpbGVkIHdpdGggZXhpdCBjb2RlICQ/XG4iCi0JfQotCWlmICgkYXV0aG9yID1+IC9eXHMqKC4rPylccyo8KC4qKT5ccyokLykgewotCQlteSAoJG5hbWUsICRlbWFpbCkgPSAoJDEsICQyKTsKLQkJJGVtYWlsID0gdW5kZWYgaWYgbGVuZ3RoICQyID09IDA7Ci0JCXJldHVybiBbJG5hbWUsICRlbWFpbF07Ci0JfSBlbHNlIHsKLQkJZGllICJBdXRob3I6ICRvcmlnX2F1dGhvcjogJDo6X2F1dGhvcnNfcHJvZyByZXR1cm5lZCAiCi0JCQkuICJpbnZhbGlkIGF1dGhvciBmb3JtYXQ6ICRhdXRob3JcbiI7Ci0JfQotfQotCi1zdWIgY2hlY2tfYXV0aG9yIHsKLQlteSAoJGF1dGhvcikgPSBAXzsKLQlpZiAoIWRlZmluZWQgJGF1dGhvciB8fCBsZW5ndGggJGF1dGhvciA9PSAwKSB7Ci0JCSRhdXRob3IgPSAnKG5vIGF1dGhvciknOwotCX0KLQlpZiAoIWRlZmluZWQgJDo6dXNlcnN7JGF1dGhvcn0pIHsKLQkJaWYgKGRlZmluZWQgJDo6X2F1dGhvcnNfcHJvZykgewotCQkJJDo6dXNlcnN7JGF1dGhvcn0gPSBjYWxsX2F1dGhvcnNfcHJvZygkYXV0aG9yKTsKLQkJfSBlbHNpZiAoZGVmaW5lZCAkOjpfYXV0aG9ycykgewotCQkJZGllICJBdXRob3I6ICRhdXRob3Igbm90IGRlZmluZWQgaW4gJDo6X2F1dGhvcnMgZmlsZVxuIjsKLQkJfQotCX0KLQkkYXV0aG9yOwotfQotCi1zdWIgZmluZF9leHRyYV9zdmtfcGFyZW50cyB7Ci0JbXkgKCRzZWxmLCAkZWQsICR0aWNrZXRzLCAkcGFyZW50cykgPSBAXzsKLQkjIGFoYSEgIHN2azptZXJnZSBwcm9wZXJ0eSBjaGFuZ2VkLi4uCi0JbXkgQHRpY2tldHMgPSBzcGxpdCAiXG4iLCAkdGlja2V0czsKLQlteSBAa25vd25fcGFyZW50czsKLQlmb3IgbXkgJHRpY2tldCAoIEB0aWNrZXRzICkgewotCQlteSAoJHV1aWQsICRwYXRoLCAkcmV2KSA9IHNwbGl0IC86LywgJHRpY2tldDsKLQkJaWYgKCAkdXVpZCBlcSAkc2VsZi0+cmFfdXVpZCApIHsKLQkJCW15ICR1cmwgPSAkc2VsZi0+e3VybH07Ci0JCQlteSAkcmVwb3Nfcm9vdCA9ICR1cmw7Ci0JCQlteSAkYnJhbmNoX2Zyb20gPSAkcGF0aDsKLQkJCSRicmFuY2hfZnJvbSA9fiBze14vfXt9OwotCQkJbXkgJGdzID0gJHNlbGYtPm90aGVyX2dzKCRyZXBvc19yb290LiIvIi4kYnJhbmNoX2Zyb20sCi0JCQkgICAgICAgICAgICAgICAgICAgICAgICAgJHVybCwKLQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAkYnJhbmNoX2Zyb20sCi0JCQkgICAgICAgICAgICAgICAgICAgICAgICAgJHJldiwKLQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+e3JlZl9pZH0pOwotCQkJaWYgKCBteSAkY29tbWl0ID0gJGdzLT5yZXZfbWFwX2dldCgkcmV2LCAkdXVpZCkgKSB7Ci0JCQkJIyB3YWhleSEgIHdlIGZvdW5kIGl0LCBidXQgaXQgbWlnaHQgYmUKLQkJCQkjIGFuIG9sZCBvbmUgKCEpCi0JCQkJcHVzaCBAa25vd25fcGFyZW50cywgWyAkcmV2LCAkY29tbWl0IF07Ci0JCQl9Ci0JCX0KLQl9Ci0JIyBPcmRlcmluZyBtYXR0ZXJzOyBoaWdoZXN0LW51bWJlcmVkIGNvbW1pdCBtZXJnZSB0aWNrZXRzCi0JIyBmaXJzdCwgYXMgdGhleSBtYXkgYWNjb3VudCBmb3IgbGF0ZXIgbWVyZ2UgdGlja2V0IGFkZGl0aW9ucwotCSMgb3IgY2hhbmdlcy4KLQlAa25vd25fcGFyZW50cyA9IG1hcCB7JF8tPlsxXX0gc29ydCB7JGItPlswXSA8PT4gJGEtPlswXX0gQGtub3duX3BhcmVudHM7Ci0JZm9yIG15ICRwYXJlbnQgKCBAa25vd25fcGFyZW50cyApIHsKLQkJbXkgQGNtZCA9ICgncmV2LWxpc3QnLCAkcGFyZW50LCBtYXAgeyAiXiRfIiB9IEAkcGFyZW50cyApOwotCQlteSAoJG1zZ19maCwgJGN0eCkgPSBjb21tYW5kX291dHB1dF9waXBlKEBjbWQpOwotCQlteSAkbmV3OwotCQl3aGlsZSAoIDwkbXNnX2ZoPiApIHsKLQkJCSRuZXc9MTtsYXN0OwotCQl9Ci0JCWNvbW1hbmRfY2xvc2VfcGlwZSgkbXNnX2ZoLCAkY3R4KTsKLQkJaWYgKCAkbmV3ICkgewotCQkJcHJpbnQgU1RERVJSCi0JCQkgICAgIkZvdW5kIG1lcmdlIHBhcmVudCAoc3ZrOm1lcmdlIHRpY2tldCk6ICRwYXJlbnRcbiI7Ci0JCQlwdXNoIEAkcGFyZW50cywgJHBhcmVudDsKLQkJfQotCX0KLX0KLQotc3ViIGxvb2t1cF9zdm5fbWVyZ2UgewotCW15ICR1dWlkID0gc2hpZnQ7Ci0JbXkgJHVybCA9IHNoaWZ0OwotCW15ICRtZXJnZSA9IHNoaWZ0OwotCi0JbXkgKCRzb3VyY2UsICRyZXZzKSA9IHNwbGl0ICI6IiwgJG1lcmdlOwotCW15ICRwYXRoID0gJHNvdXJjZTsKLQkkcGF0aCA9fiBze14vfXt9OwotCW15ICRncyA9IEdpdDo6U1ZOLT5maW5kX2J5X3VybCgkdXJsLiRzb3VyY2UsICR1cmwsICRwYXRoKTsKLQlpZiAoICEkZ3MgKSB7Ci0JCXdhcm4gIkNvdWxkbid0IGZpbmQgcmV2bWFwIGZvciAkdXJsJHNvdXJjZVxuIjsKLQkJcmV0dXJuOwotCX0KLQlteSBAcmFuZ2VzID0gc3BsaXQgIiwiLCAkcmV2czsKLQlteSAoJHRpcCwgJHRpcF9jb21taXQpOwotCW15IEBtZXJnZWRfY29tbWl0X3JhbmdlczsKLQkjIGZpbmQgdGhlIHRpcAotCWZvciBteSAkcmFuZ2UgKCBAcmFuZ2VzICkgewotCQlteSAoJGJvdHRvbSwgJHRvcCkgPSBzcGxpdCAiLSIsICRyYW5nZTsKLQkJJHRvcCB8fD0gJGJvdHRvbTsKLQkJbXkgJGJvdHRvbV9jb21taXQgPSAkZ3MtPmZpbmRfcmV2X2FmdGVyKCAkYm90dG9tLCAxLCAkdG9wICk7Ci0JCW15ICR0b3BfY29tbWl0ID0gJGdzLT5maW5kX3Jldl9iZWZvcmUoICR0b3AsIDEsICRib3R0b20gKTsKLQotCQl1bmxlc3MgKCR0b3BfY29tbWl0IGFuZCAkYm90dG9tX2NvbW1pdCkgewotCQkJd2FybiAiVzp1bmtub3duIHBhdGgvcmV2IGluIHN2bjptZXJnZWluZm8gIgotCQkJCS4iZGlycHJvcDogJHNvdXJjZTokcmFuZ2VcbiI7Ci0JCQluZXh0OwotCQl9Ci0KLQkJaWYgKHNjYWxhcihjb21tYW5kKCdyZXYtcGFyc2UnLCAiJGJvdHRvbV9jb21taXReQCIpKSkgewotCQkJcHVzaCBAbWVyZ2VkX2NvbW1pdF9yYW5nZXMsCi0JCQkgICAgICIkYm90dG9tX2NvbW1pdF4uLiR0b3BfY29tbWl0IjsKLQkJfSBlbHNlIHsKLQkJCXB1c2ggQG1lcmdlZF9jb21taXRfcmFuZ2VzLCAiJHRvcF9jb21taXQiOwotCQl9Ci0KLQkJaWYgKCAhZGVmaW5lZCAkdGlwIG9yICR0b3AgPiAkdGlwICkgewotCQkJJHRpcCA9ICR0b3A7Ci0JCQkkdGlwX2NvbW1pdCA9ICR0b3BfY29tbWl0OwotCQl9Ci0JfQotCXJldHVybiAoJHRpcF9jb21taXQsIEBtZXJnZWRfY29tbWl0X3Jhbmdlcyk7Ci19Ci0KLXN1YiBfcmV2X2xpc3QgewotCW15ICgkbXNnX2ZoLCAkY3R4KSA9IGNvbW1hbmRfb3V0cHV0X3BpcGUoCi0JCSJyZXYtbGlzdCIsIEBfLAotCSAgICAgICApOwotCW15IEBydjsKLQl3aGlsZSAoIDwkbXNnX2ZoPiApIHsKLQkJY2hvbXA7Ci0JCXB1c2ggQHJ2LCAkXzsKLQl9Ci0JY29tbWFuZF9jbG9zZV9waXBlKCRtc2dfZmgsICRjdHgpOwotCUBydjsKLX0KLQotc3ViIGNoZWNrX2NoZXJyeV9waWNrIHsKLQlteSAkYmFzZSA9IHNoaWZ0OwotCW15ICR0aXAgPSBzaGlmdDsKLQlteSAkcGFyZW50cyA9IHNoaWZ0OwotCW15IEByYW5nZXMgPSBAXzsKLQlteSAlY29tbWl0cyA9IG1hcCB7ICRfID0+IDEgfQotCQlfcmV2X2xpc3QoIi0tbm8tbWVyZ2VzIiwgJHRpcCwgIi0tbm90IiwgJGJhc2UsIEAkcGFyZW50cywgIi0tIik7Ci0JZm9yIG15ICRyYW5nZSAoIEByYW5nZXMgKSB7Ci0JCWRlbGV0ZSBAY29tbWl0c3tfcmV2X2xpc3QoJHJhbmdlLCAiLS0iKX07Ci0JfQotCWZvciBteSAkY29tbWl0IChrZXlzICVjb21taXRzKSB7Ci0JCWlmIChoYXNfbm9fY2hhbmdlcygkY29tbWl0KSkgewotCQkJZGVsZXRlICRjb21taXRzeyRjb21taXR9OwotCQl9Ci0JfQotCXJldHVybiAoa2V5cyAlY29tbWl0cyk7Ci19Ci0KLXN1YiBoYXNfbm9fY2hhbmdlcyB7Ci0JbXkgJGNvbW1pdCA9IHNoaWZ0OwotCi0JbXkgQHJldnMgPSBzcGxpdCAvIC8sIGNvbW1hbmRfb25lbGluZSgKLQkJcXcocmV2LWxpc3QgLS1wYXJlbnRzIC0xIC1tKSwgJGNvbW1pdCk7Ci0KLQkjIENvbW1pdHMgd2l0aCBubyBwYXJlbnRzLCBlLmcuIHRoZSBzdGFydCBvZiBhIHBhcnRpYWwgYnJhbmNoLAotCSMgaGF2ZSBjaGFuZ2VzIGJ5IGRlZmluaXRpb24uCi0JcmV0dXJuIDEgaWYgKEByZXZzIDwgMik7Ci0KLQkjIENvbW1pdHMgd2l0aCBtdWx0aXBsZSBwYXJlbnRzLCBlLmcgYSBtZXJnZSwgaGF2ZSBubyBjaGFuZ2VzCi0JIyBieSBkZWZpbml0aW9uLgotCXJldHVybiAwIGlmIChAcmV2cyA+IDIpOwotCi0JcmV0dXJuIChjb21tYW5kX29uZWxpbmUoInJldi1wYXJzZSIsICIkY29tbWl0Xnt0cmVlfSIpIGVxCi0JCWNvbW1hbmRfb25lbGluZSgicmV2LXBhcnNlIiwgIiRjb21taXR+MV57dHJlZX0iKSk7Ci19Ci0KLXN1YiB0aWVfZm9yX3BlcnNpc3RlbnRfbWVtb2l6YXRpb24gewotCW15ICRoYXNoID0gc2hpZnQ7Ci0JbXkgJHBhdGggPSBzaGlmdDsKLQotCWlmICgkY2FuX3VzZV95YW1sKSB7Ci0JCXRpZSAlJGhhc2ggPT4gJ0dpdDo6U1ZOOjpNZW1vaXplOjpZQU1MJywgIiRwYXRoLnlhbWwiOwotCX0gZWxzZSB7Ci0JCXRpZSAlJGhhc2ggPT4gJ01lbW9pemU6OlN0b3JhYmxlJywgIiRwYXRoLmRiIiwgJ25zdG9yZSc7Ci0JfQotfQotCi0jIFRoZSBHSVRfRElSIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBhbHdheXMgc2V0IHVudGlsIGFmdGVyIHRoZSBjb21tYW5kCi0jIGxpbmUgYXJndW1lbnRzIGFyZSBwcm9jZXNzZWQsIHNvIHdlIGNhbid0IG1lbW9pemUgaW4gYSBCRUdJTiBibG9jay4KLXsKLQlteSAkbWVtb2l6ZWQgPSAwOwotCi0Jc3ViIG1lbW9pemVfc3ZuX21lcmdlaW5mb19mdW5jdGlvbnMgewotCQlyZXR1cm4gaWYgJG1lbW9pemVkOwotCQkkbWVtb2l6ZWQgPSAxOwotCi0JCW15ICRjYWNoZV9wYXRoID0gIiRFTlZ7R0lUX0RJUn0vc3ZuLy5jYWNoZXMvIjsKLQkJbWtwYXRoKFskY2FjaGVfcGF0aF0pIHVubGVzcyAtZCAkY2FjaGVfcGF0aDsKLQotCQlteSAlbG9va3VwX3N2bl9tZXJnZV9jYWNoZTsKLQkJbXkgJWNoZWNrX2NoZXJyeV9waWNrX2NhY2hlOwotCQlteSAlaGFzX25vX2NoYW5nZXNfY2FjaGU7Ci0KLQkJdGllX2Zvcl9wZXJzaXN0ZW50X21lbW9pemF0aW9uKFwlbG9va3VwX3N2bl9tZXJnZV9jYWNoZSwKLQkJICAgICIkY2FjaGVfcGF0aC9sb29rdXBfc3ZuX21lcmdlIik7Ci0JCW1lbW9pemUgJ2xvb2t1cF9zdm5fbWVyZ2UnLAotCQkJU0NBTEFSX0NBQ0hFID0+ICdGQVVMVCcsCi0JCQlMSVNUX0NBQ0hFID0+IFsnSEFTSCcgPT4gXCVsb29rdXBfc3ZuX21lcmdlX2NhY2hlXSwKLQkJOwotCi0JCXRpZV9mb3JfcGVyc2lzdGVudF9tZW1vaXphdGlvbihcJWNoZWNrX2NoZXJyeV9waWNrX2NhY2hlLAotCQkgICAgIiRjYWNoZV9wYXRoL2NoZWNrX2NoZXJyeV9waWNrIik7Ci0JCW1lbW9pemUgJ2NoZWNrX2NoZXJyeV9waWNrJywKLQkJCVNDQUxBUl9DQUNIRSA9PiAnRkFVTFQnLAotCQkJTElTVF9DQUNIRSA9PiBbJ0hBU0gnID0+IFwlY2hlY2tfY2hlcnJ5X3BpY2tfY2FjaGVdLAotCQk7Ci0KLQkJdGllX2Zvcl9wZXJzaXN0ZW50X21lbW9pemF0aW9uKFwlaGFzX25vX2NoYW5nZXNfY2FjaGUsCi0JCSAgICAiJGNhY2hlX3BhdGgvaGFzX25vX2NoYW5nZXMiKTsKLQkJbWVtb2l6ZSAnaGFzX25vX2NoYW5nZXMnLAotCQkJU0NBTEFSX0NBQ0hFID0+IFsnSEFTSCcgPT4gXCVoYXNfbm9fY2hhbmdlc19jYWNoZV0sCi0JCQlMSVNUX0NBQ0hFID0+ICdGQVVMVCcsCi0JCTsKLQl9Ci0KLQlzdWIgdW5tZW1vaXplX3N2bl9tZXJnZWluZm9fZnVuY3Rpb25zIHsKLQkJcmV0dXJuIGlmIG5vdCAkbWVtb2l6ZWQ7Ci0JCSRtZW1vaXplZCA9IDA7Ci0KLQkJTWVtb2l6ZTo6dW5tZW1vaXplICdsb29rdXBfc3ZuX21lcmdlJzsKLQkJTWVtb2l6ZTo6dW5tZW1vaXplICdjaGVja19jaGVycnlfcGljayc7Ci0JCU1lbW9pemU6OnVubWVtb2l6ZSAnaGFzX25vX2NoYW5nZXMnOwotCX0KLQotCU1lbW9pemU6Om1lbW9pemUgJ0dpdDo6U1ZOOjpyZXBvc19yb290JzsKLX0KLQotRU5EIHsKLQkjIEZvcmNlIGNhY2hlIHdyaXRlb3V0IGV4cGxpY2l0bHkgaW5zdGVhZCBvZiB3YWl0aW5nIGZvcgotCSMgZ2xvYmFsIGRlc3RydWN0aW9uIHRvIGF2b2lkIHNlZ2ZhdWx0IGluIFN0b3JhYmxlOgotCSMgaHR0cDovL3J0LmNwYW4ub3JnL1B1YmxpYy9CdWcvRGlzcGxheS5odG1sP2lkPTM2MDg3Ci0JdW5tZW1vaXplX3N2bl9tZXJnZWluZm9fZnVuY3Rpb25zKCk7Ci19Ci0KLXN1YiBwYXJlbnRzX2V4Y2x1ZGUgewotCW15ICRwYXJlbnRzID0gc2hpZnQ7Ci0JbXkgQGNvbW1pdHMgPSBAXzsKLQlyZXR1cm4gdW5sZXNzIEBjb21taXRzOwotCi0JbXkgQGV4Y2x1ZGVkOwotCW15ICRleGNsdWRlZDsKLQlkbyB7Ci0JCW15IEBjbWQgPSAoJ3Jldi1saXN0JywgIi0xIiwgQGNvbW1pdHMsICItLW5vdCIsIEAkcGFyZW50cyApOwotCQkkZXhjbHVkZWQgPSBjb21tYW5kX29uZWxpbmUoQGNtZCk7Ci0JCWlmICggJGV4Y2x1ZGVkICkgewotCQkJbXkgQG5ldzsKLQkJCW15ICRmb3VuZDsKLQkJCWZvciBteSAkY29tbWl0ICggQGNvbW1pdHMgKSB7Ci0JCQkJaWYgKCAkY29tbWl0IGVxICRleGNsdWRlZCApIHsKLQkJCQkJcHVzaCBAZXhjbHVkZWQsICRjb21taXQ7Ci0JCQkJCSRmb3VuZCsrOwotCQkJCQlsYXN0OwotCQkJCX0KLQkJCQllbHNlIHsKLQkJCQkJcHVzaCBAbmV3LCAkY29tbWl0OwotCQkJCX0KLQkJCX0KLQkJCWRpZSAic2F3IGNvbW1pdCAnJGV4Y2x1ZGVkJyBpbiByZXYtbGlzdCBvdXRwdXQsICIKLQkJCQkuImJ1dCB3ZSBkaWRuJ3QgYXNrIGZvciB0aGF0IGNvbW1pdCAod2FudGVkOiBAY29tbWl0cyAtLW5vdCBAJHBhcmVudHMpIgotCQkJCQl1bmxlc3MgJGZvdW5kOwotCQkJQGNvbW1pdHMgPSBAbmV3OwotCQl9Ci0JfQotCQl3aGlsZSAoJGV4Y2x1ZGVkIGFuZCBAY29tbWl0cyk7Ci0KLQlyZXR1cm4gQGV4Y2x1ZGVkOwotfQotCi0KLSMgbm90ZTogdGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxsZWQgaWYgdGhlIHZhcmlvdXMgZGlycHJvcHMKLSMgaGF2ZSBhY3R1YWxseSBjaGFuZ2VkCi1zdWIgZmluZF9leHRyYV9zdm5fcGFyZW50cyB7Ci0JbXkgKCRzZWxmLCAkZWQsICRtZXJnZWluZm8sICRwYXJlbnRzKSA9IEBfOwotCSMgYWhhISAgc3ZrOm1lcmdlIHByb3BlcnR5IGNoYW5nZWQuLi4KLQotCW1lbW9pemVfc3ZuX21lcmdlaW5mb19mdW5jdGlvbnMoKTsKLQotCSMgV2UgZmlyc3Qgc2VhcmNoIGZvciBtZXJnZWQgdGlwcyB3aGljaCBhcmUgbm90IGluIG91cgotCSMgaGlzdG9yeS4gIFRoZW4sIHdlIGZpZ3VyZSBvdXQgd2hpY2ggZ2l0IHJldmlzaW9ucyBhcmUgaW4KLQkjIHRoYXQgdGlwLCBidXQgbm90IHRoaXMgcmV2aXNpb24uICBJZiBhbGwgb2YgdGhvc2UgcmV2aXNpb25zCi0JIyBhcmUgbm93IG1hcmtlZCBhcyBtZXJnZSwgd2UgY2FuIGFkZCB0aGUgdGlwIGFzIGEgcGFyZW50LgotCW15IEBtZXJnZXMgPSBzcGxpdCAiXG4iLCAkbWVyZ2VpbmZvOwotCW15IEBtZXJnZV90aXBzOwotCW15ICR1cmwgPSAkc2VsZi0+e3VybH07Ci0JbXkgJHV1aWQgPSAkc2VsZi0+cmFfdXVpZDsKLQlteSAlcmFuZ2VzOwotCWZvciBteSAkbWVyZ2UgKCBAbWVyZ2VzICkgewotCQlteSAoJHRpcF9jb21taXQsIEByYW5nZXMpID0KLQkJCWxvb2t1cF9zdm5fbWVyZ2UoICR1dWlkLCAkdXJsLCAkbWVyZ2UgKTsKLQkJdW5sZXNzICghJHRpcF9jb21taXQgb3IKLQkJCQlncmVwIHsgJF8gZXEgJHRpcF9jb21taXQgfSBAJHBhcmVudHMgKSB7Ci0JCQlwdXNoIEBtZXJnZV90aXBzLCAkdGlwX2NvbW1pdDsKLQkJCSRyYW5nZXN7JHRpcF9jb21taXR9ID0gXEByYW5nZXM7Ci0JCX0gZWxzZSB7Ci0JCQlwdXNoIEBtZXJnZV90aXBzLCB1bmRlZjsKLQkJfQotCX0KLQotCW15ICVleGNsdWRlZCA9IG1hcCB7ICRfID0+IDEgfQotCQlwYXJlbnRzX2V4Y2x1ZGUoJHBhcmVudHMsIGdyZXAgeyBkZWZpbmVkIH0gQG1lcmdlX3RpcHMpOwotCi0JIyBjaGVjayBtZXJnZSB0aXBzIGZvciBuZXcgcGFyZW50cwotCW15IEBuZXdfcGFyZW50czsKLQlmb3IgbXkgJG1lcmdlX3RpcCAoIEBtZXJnZV90aXBzICkgewotCQlteSAkc3BlYyA9IHNoaWZ0IEBtZXJnZXM7Ci0JCW5leHQgdW5sZXNzICRtZXJnZV90aXAgYW5kICRleGNsdWRlZHskbWVyZ2VfdGlwfTsKLQotCQlteSAkcmFuZ2VzID0gJHJhbmdlc3skbWVyZ2VfdGlwfTsKLQotCQkjIGNoZWNrIG91dCAnbmV3JyB0aXBzCi0JCW15ICRtZXJnZV9iYXNlOwotCQlldmFsIHsKLQkJCSRtZXJnZV9iYXNlID0gY29tbWFuZF9vbmVsaW5lKAotCQkJCSJtZXJnZS1iYXNlIiwKLQkJCQlAJHBhcmVudHMsICRtZXJnZV90aXAsCi0JCQkpOwotCQl9OwotCQlpZiAoJEApIHsKLQkJCWRpZSAiQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIG1lcmdlLWJhc2UiCi0JCQkJdW5sZXNzICRALT5pc2EoIkdpdDo6RXJyb3I6OkNvbW1hbmQiKTsKLQotCQkJd2FybiAiVzogQ2Fubm90IGZpbmQgY29tbW9uIGFuY2VzdG9yIGJldHdlZW4gIi4KLQkJCSAgICAgIkAkcGFyZW50cyBhbmQgJG1lcmdlX3RpcC4gSWdub3JpbmcgbWVyZ2UgaW5mby5cbiI7Ci0JCQluZXh0OwotCQl9Ci0KLQkJIyBkb3VibGUgY2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gbWlzc2luZyBub24tbWVyZ2UgY29tbWl0cwotCQlteSAoQGluY29tcGxldGUpID0gY2hlY2tfY2hlcnJ5X3BpY2soCi0JCQkkbWVyZ2VfYmFzZSwgJG1lcmdlX3RpcCwKLQkJCSRwYXJlbnRzLAotCQkJQCRyYW5nZXMsCi0JCSAgICAgICApOwotCi0JCWlmICggQGluY29tcGxldGUgKSB7Ci0JCQl3YXJuICJXOnN2biBjaGVycnktcGljayBpZ25vcmVkICgkc3BlYykgLSBtaXNzaW5nICIKLQkJCQkuQGluY29tcGxldGUuIiBjb21taXQocykgKGVnICRpbmNvbXBsZXRlWzBdKVxuIjsKLQkJfSBlbHNlIHsKLQkJCXdhcm4KLQkJCQkiRm91bmQgbWVyZ2UgcGFyZW50IChzdm46bWVyZ2VpbmZvIHByb3ApOiAiLAotCQkJCQkkbWVyZ2VfdGlwLCAiXG4iOwotCQkJcHVzaCBAbmV3X3BhcmVudHMsICRtZXJnZV90aXA7Ci0JCX0KLQl9Ci0KLQkjIGNhdGVyIGZvciBtZXJnZXMgd2hpY2ggbWVyZ2UgY29tbWl0cyBmcm9tIG11bHRpcGxlIGJyYW5jaGVzCi0JaWYgKCBAbmV3X3BhcmVudHMgPiAxICkgewotCQlmb3IgKCBteSAkaSA9IDA7ICRpIDw9ICQjbmV3X3BhcmVudHM7ICRpKysgKSB7Ci0JCQlmb3IgKCBteSAkaiA9IDA7ICRqIDw9ICQjbmV3X3BhcmVudHM7ICRqKysgKSB7Ci0JCQkJbmV4dCBpZiAkaSA9PSAkajsKLQkJCQluZXh0IHVubGVzcyAkbmV3X3BhcmVudHNbJGldOwotCQkJCW5leHQgdW5sZXNzICRuZXdfcGFyZW50c1skal07Ci0JCQkJbXkgJHJldnMgPSBjb21tYW5kX29uZWxpbmUoCi0JCQkJCSJyZXYtbGlzdCIsICItMSIsCi0JCQkJCSIkbmV3X3BhcmVudHNbJGldLi4kbmV3X3BhcmVudHNbJGpdIiwKLQkJCQkgICAgICAgKTsKLQkJCQlpZiAoICEkcmV2cyApIHsKLQkJCQkJdW5kZWYoJG5ld19wYXJlbnRzWyRqXSk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCXB1c2ggQCRwYXJlbnRzLCBncmVwIHsgZGVmaW5lZCB9IEBuZXdfcGFyZW50czsKLX0KLQotc3ViIG1ha2VfbG9nX2VudHJ5IHsKLQlteSAoJHNlbGYsICRyZXYsICRwYXJlbnRzLCAkZWQpID0gQF87Ci0JbXkgJHVudHJhY2tlZCA9ICRzZWxmLT5nZXRfdW50cmFja2VkKCRlZCk7Ci0KLQlteSBAcGFyZW50cyA9IEAkcGFyZW50czsKLQlteSAkcHMgPSAkZWQtPntwYXRoX3N0cmlwfSB8fCAiIjsKLQlmb3IgbXkgJHBhdGggKCBncmVwIHsgbS8kcHMvIH0gJXskZWQtPntkaXJfcHJvcH19ICkgewotCQlteSAkcHJvcHMgPSAkZWQtPntkaXJfcHJvcH17JHBhdGh9OwotCQlpZiAoICRwcm9wcy0+eyJzdms6bWVyZ2UifSApIHsKLQkJCSRzZWxmLT5maW5kX2V4dHJhX3N2a19wYXJlbnRzCi0JCQkJKCRlZCwgJHByb3BzLT57InN2azptZXJnZSJ9LCBcQHBhcmVudHMpOwotCQl9Ci0JCWlmICggJHByb3BzLT57InN2bjptZXJnZWluZm8ifSApIHsKLQkJCSRzZWxmLT5maW5kX2V4dHJhX3N2bl9wYXJlbnRzCi0JCQkJKCRlZCwKLQkJCQkgJHByb3BzLT57InN2bjptZXJnZWluZm8ifSwKLQkJCQkgXEBwYXJlbnRzKTsKLQkJfQotCX0KLQotCW9wZW4gbXkgJHVuLCAnPj4nLCAiJHNlbGYtPntkaXJ9L3VuaGFuZGxlZC5sb2ciIG9yIGNyb2FrICQhOwotCXByaW50ICR1biAiciRyZXZcbiIgb3IgY3JvYWsgJCE7Ci0JcHJpbnQgJHVuICRfLCAiXG4iIGZvcmVhY2ggQCR1bnRyYWNrZWQ7Ci0JbXkgJWxvZ19lbnRyeSA9ICggcGFyZW50cyA9PiBcQHBhcmVudHMsIHJldmlzaW9uID0+ICRyZXYsCi0JICAgICAgICAgICAgICAgICAgbG9nID0+ICcnKTsKLQotCW15ICRoZWFkcmV2OwotCW15ICRsb2dnZWQgPSBkZWxldGUgJHNlbGYtPntsb2dnZWRfcmV2X3Byb3BzfTsKLQlpZiAoISRsb2dnZWQgfHwgJHNlbGYtPnstd2FudF9yZXZwcm9wc30pIHsKLQkJbXkgJHJwID0gJHNlbGYtPnJhLT5yZXZfcHJvcGxpc3QoJHJldik7Ci0JCWZvcmVhY2ggKHNvcnQga2V5cyAlJHJwKSB7Ci0JCQlteSAkdiA9ICRycC0+eyRffTsKLQkJCWlmICgvXnN2bjooYXV0aG9yfGRhdGV8bG9nKSQvKSB7Ci0JCQkJJGxvZ19lbnRyeXskMX0gPSAkdjsKLQkJCX0gZWxzaWYgKCRfIGVxICdzdm06aGVhZHJldicpIHsKLQkJCQkkaGVhZHJldiA9ICR2OwotCQkJfSBlbHNlIHsKLQkJCQlwcmludCAkdW4gIiAgcmV2X3Byb3A6ICIsIHVyaV9lbmNvZGUoJF8pLCAnICcsCi0JCQkJCSAgdXJpX2VuY29kZSgkdiksICJcbiI7Ci0JCQl9Ci0JCX0KLQl9IGVsc2UgewotCQltYXAgeyAkbG9nX2VudHJ5eyRffSA9ICRsb2dnZWQtPnskX30gfSBrZXlzICUkbG9nZ2VkOwotCX0KLQljbG9zZSAkdW4gb3IgY3JvYWsgJCE7Ci0KLQkkbG9nX2VudHJ5e2RhdGV9ID0gcGFyc2Vfc3ZuX2RhdGUoJGxvZ19lbnRyeXtkYXRlfSk7Ci0JJGxvZ19lbnRyeXtsb2d9IC49ICJcbiI7Ci0JbXkgJGF1dGhvciA9ICRsb2dfZW50cnl7YXV0aG9yfSA9IGNoZWNrX2F1dGhvcigkbG9nX2VudHJ5e2F1dGhvcn0pOwotCW15ICgkbmFtZSwgJGVtYWlsKSA9IGRlZmluZWQgJDo6dXNlcnN7JGF1dGhvcn0gPyBAeyQ6OnVzZXJzeyRhdXRob3J9fQotCQkJCQkJICAgICAgIDogKCRhdXRob3IsIHVuZGVmKTsKLQotCW15ICgkY29tbWl0X25hbWUsICRjb21taXRfZW1haWwpID0gKCRuYW1lLCAkZW1haWwpOwotCWlmICgkX3VzZV9sb2dfYXV0aG9yKSB7Ci0JCW15ICRuYW1lX2ZpZWxkOwotCQlpZiAoJGxvZ19lbnRyeXtsb2d9ID1+IC9Gcm9tOlxzKyguKlxTKVxzKlxuL2kpIHsKLQkJCSRuYW1lX2ZpZWxkID0gJDE7Ci0JCX0gZWxzaWYgKCRsb2dfZW50cnl7bG9nfSA9fiAvU2lnbmVkLW9mZi1ieTpccysoLipcUylccypcbi9pKSB7Ci0JCQkkbmFtZV9maWVsZCA9ICQxOwotCQl9Ci0JCWlmICghZGVmaW5lZCAkbmFtZV9maWVsZCkgewotCQkJaWYgKCFkZWZpbmVkICRlbWFpbCkgewotCQkJCSRlbWFpbCA9ICRuYW1lOwotCQkJfQotCQl9IGVsc2lmICgkbmFtZV9maWVsZCA9fiAvKC4qPylccys8KC4qKT4vKSB7Ci0JCQkoJG5hbWUsICRlbWFpbCkgPSAoJDEsICQyKTsKLQkJfSBlbHNpZiAoJG5hbWVfZmllbGQgPX4gLyguKilALykgewotCQkJKCRuYW1lLCAkZW1haWwpID0gKCQxLCAkbmFtZV9maWVsZCk7Ci0JCX0gZWxzZSB7Ci0JCQkoJG5hbWUsICRlbWFpbCkgPSAoJG5hbWVfZmllbGQsICRuYW1lX2ZpZWxkKTsKLQkJfQotCX0KLQlpZiAoZGVmaW5lZCAkaGVhZHJldiAmJiAkc2VsZi0+dXNlX3N2bV9wcm9wcykgewotCQlpZiAoJHNlbGYtPnJld3JpdGVfcm9vdCkgewotCQkJZGllICJDYW4ndCBoYXZlIGJvdGggJ3VzZVN2bVByb3BzJyBhbmQgJ3Jld3JpdGVSb290JyAiLAotCQkJICAgICJvcHRpb25zIHNldCFcbiI7Ci0JCX0KLQkJaWYgKCRzZWxmLT5yZXdyaXRlX3V1aWQpIHsKLQkJCWRpZSAiQ2FuJ3QgaGF2ZSBib3RoICd1c2VTdm1Qcm9wcycgYW5kICdyZXdyaXRlVVVJRCcgIiwKLQkJCSAgICAib3B0aW9ucyBzZXQhXG4iOwotCQl9Ci0JCW15ICgkdXVpZCwgJHIpID0gJGhlYWRyZXYgPX4gbXteKFthLWZcZFwtXXszMCx9KTooXGQrKSR9aTsKLQkJIyB3ZSBkb24ndCB3YW50ICJTVk06IGluaXRpYWxpemluZyBtaXJyb3IgZm9yIGp1bmsiIC4uLgotCQlyZXR1cm4gdW5kZWYgaWYgJHIgPT0gMDsKLQkJbXkgJHN2bSA9ICRzZWxmLT5zdm07Ci0JCWlmICgkdXVpZCBuZSAkc3ZtLT57dXVpZH0pIHsKLQkJCWRpZSAiVVVJRCBtaXNtYXRjaCBvbiBTVk0gcGF0aDpcbiIsCi0JCQkgICAgImV4cGVjdGVkOiAkc3ZtLT57dXVpZH1cbiIsCi0JCQkgICAgIiAgICAgZ290OiAkdXVpZFxuIjsKLQkJfQotCQlteSAkZnVsbF91cmwgPSAkc2VsZi0+ZnVsbF91cmw7Ci0JCSRmdWxsX3VybCA9fiBzI15cUSRzdm0tPntyZXBsYWNlfVxFKC98JCkjJHN2bS0+e3NvdXJjZX0kMSMgb3IKLQkJICAgICAgICAgICAgIGRpZSAiRmFpbGVkIHRvIHJlcGxhY2UgJyRzdm0tPntyZXBsYWNlfScgd2l0aCAiLAotCQkgICAgICAgICAgICAgICAgICInJHN2bS0+e3NvdXJjZX0nIGluICRmdWxsX3VybFxuIjsKLQkJIyB0aHJvdyBhd2F5IHVzZXJuYW1lIGZvciBzdG9yaW5nIGluIHJlY29yZHMKLQkJcmVtb3ZlX3VzZXJuYW1lKCRmdWxsX3VybCk7Ci0JCSRsb2dfZW50cnl7bWV0YWRhdGF9ID0gIiRmdWxsX3VybFxAJHIgJHV1aWQiOwotCQkkbG9nX2VudHJ5e3N2bV9yZXZpc2lvbn0gPSAkcjsKLQkJJGVtYWlsIHx8PSAiJGF1dGhvclxAJHV1aWQiOwotCQkkY29tbWl0X2VtYWlsIHx8PSAiJGF1dGhvclxAJHV1aWQiOwotCX0gZWxzaWYgKCRzZWxmLT51c2Vfc3Zuc3luY19wcm9wcykgewotCQlteSAkZnVsbF91cmwgPSAkc2VsZi0+c3Zuc3luYy0+e3VybH07Ci0JCSRmdWxsX3VybCAuPSAiLyRzZWxmLT57cGF0aH0iIGlmIGxlbmd0aCAkc2VsZi0+e3BhdGh9OwotCQlyZW1vdmVfdXNlcm5hbWUoJGZ1bGxfdXJsKTsKLQkJbXkgJHV1aWQgPSAkc2VsZi0+c3Zuc3luYy0+e3V1aWR9OwotCQkkbG9nX2VudHJ5e21ldGFkYXRhfSA9ICIkZnVsbF91cmxcQCRyZXYgJHV1aWQiOwotCQkkZW1haWwgfHw9ICIkYXV0aG9yXEAkdXVpZCI7Ci0JCSRjb21taXRfZW1haWwgfHw9ICIkYXV0aG9yXEAkdXVpZCI7Ci0JfSBlbHNlIHsKLQkJbXkgJHVybCA9ICRzZWxmLT5tZXRhZGF0YV91cmw7Ci0JCXJlbW92ZV91c2VybmFtZSgkdXJsKTsKLQkJbXkgJHV1aWQgPSAkc2VsZi0+cmV3cml0ZV91dWlkIHx8ICRzZWxmLT5yYS0+Z2V0X3V1aWQ7Ci0JCSRsb2dfZW50cnl7bWV0YWRhdGF9ID0gIiR1cmxcQCRyZXYgIiAuICR1dWlkOwotCQkkZW1haWwgfHw9ICIkYXV0aG9yXEAiIC4gJHV1aWQ7Ci0JCSRjb21taXRfZW1haWwgfHw9ICIkYXV0aG9yXEAiIC4gJHV1aWQ7Ci0JfQotCSRsb2dfZW50cnl7bmFtZX0gPSAkbmFtZTsKLQkkbG9nX2VudHJ5e2VtYWlsfSA9ICRlbWFpbDsKLQkkbG9nX2VudHJ5e2NvbW1pdF9uYW1lfSA9ICRjb21taXRfbmFtZTsKLQkkbG9nX2VudHJ5e2NvbW1pdF9lbWFpbH0gPSAkY29tbWl0X2VtYWlsOwotCVwlbG9nX2VudHJ5OwotfQotCi1zdWIgZmV0Y2ggewotCW15ICgkc2VsZiwgJG1pbl9yZXYsICRtYXhfcmV2LCBAcGFyZW50cykgPSBAXzsKLQlteSAoJGxhc3RfcmV2LCAkbGFzdF9jb21taXQpID0gJHNlbGYtPmxhc3RfcmV2X2NvbW1pdDsKLQlteSAoJGJhc2UsICRoZWFkKSA9ICRzZWxmLT5nZXRfZmV0Y2hfcmFuZ2UoJG1pbl9yZXYsICRtYXhfcmV2KTsKLQkkc2VsZi0+cmEtPmdzX2ZldGNoX2xvb3BfY29tbW9uKCRiYXNlLCAkaGVhZCwgWyRzZWxmXSk7Ci19Ci0KLXN1YiBzZXRfdHJlZV9jYiB7Ci0JbXkgKCRzZWxmLCAkbG9nX2VudHJ5LCAkdHJlZSwgJHJldiwgJGRhdGUsICRhdXRob3IpID0gQF87Ci0JJHNlbGYtPntpbmplY3RfcGFyZW50c30gPSB7ICRyZXYgPT4gJHRyZWUgfTsKLQkkc2VsZi0+ZmV0Y2godW5kZWYsIHVuZGVmKTsKLX0KLQotc3ViIHNldF90cmVlIHsKLQlteSAoJHNlbGYsICR0cmVlKSA9IChzaGlmdCwgc2hpZnQpOwotCW15ICRsb2dfZW50cnkgPSA6OmdldF9jb21taXRfZW50cnkoJHRyZWUpOwotCXVubGVzcyAoJHNlbGYtPntsYXN0X3Jldn0pIHsKLQkJOjpmYXRhbCgiTXVzdCBoYXZlIGFuIGV4aXN0aW5nIHJldmlzaW9uIHRvIGNvbW1pdCIpOwotCX0KLQlteSAlZWRfb3B0cyA9ICggciA9PiAkc2VsZi0+e2xhc3RfcmV2fSwKLQkgICAgICAgICAgICAgICAgbG9nID0+ICRsb2dfZW50cnktPntsb2d9LAotCSAgICAgICAgICAgICAgICByYSA9PiAkc2VsZi0+cmEsCi0JICAgICAgICAgICAgICAgIHRyZWVfYSA9PiAkc2VsZi0+e2xhc3RfY29tbWl0fSwKLQkgICAgICAgICAgICAgICAgdHJlZV9iID0+ICR0cmVlLAotCSAgICAgICAgICAgICAgICBlZGl0b3JfY2IgPT4gc3ViIHsKLQkJCSAgICAgICAkc2VsZi0+c2V0X3RyZWVfY2IoJGxvZ19lbnRyeSwgJHRyZWUsIEBfKSB9LAotCSAgICAgICAgICAgICAgICBzdm5fcGF0aCA9PiAkc2VsZi0+e3BhdGh9ICk7Ci0JaWYgKCFHaXQ6OlNWTjo6RWRpdG9yLT5uZXcoXCVlZF9vcHRzKS0+YXBwbHlfZGlmZikgewotCQlwcmludCAiTm8gY2hhbmdlc1xuciRzZWxmLT57bGFzdF9yZXZ9ID0gJHRyZWVcbiI7Ci0JfQotfQotCi1zdWIgcmVidWlsZF9mcm9tX3Jldl9kYiB7Ci0JbXkgKCRzZWxmLCAkcGF0aCkgPSBAXzsKLQlteSAkciA9IC0xOwotCW9wZW4gbXkgJGZoLCAnPCcsICRwYXRoIG9yIGNyb2FrICJvcGVuOiAkISI7Ci0JYmlubW9kZSAkZmggb3IgY3JvYWsgImJpbm1vZGU6ICQhIjsKLQl3aGlsZSAoPCRmaD4pIHsKLQkJbGVuZ3RoKCRfKSA9PSA0MSBvciBjcm9hayAiaW5jb25zaXN0ZW50IHNpemUgaW4gKCRfKSAhPSA0MSI7Ci0JCWNob21wKCRfKTsKLQkJKyskcjsKLQkJbmV4dCBpZiAkXyBlcSAoJzAnIHggNDApOwotCQkkc2VsZi0+cmV2X21hcF9zZXQoJHIsICRfKTsKLQkJcHJpbnQgInIkciA9ICRfXG4iOwotCX0KLQljbG9zZSAkZmggb3IgY3JvYWsgImNsb3NlOiAkISI7Ci0JdW5saW5rICRwYXRoIG9yIGNyb2FrICJ1bmxpbms6ICQhIjsKLX0KLQotc3ViIHJlYnVpbGQgewotCW15ICgkc2VsZikgPSBAXzsKLQlteSAkbWFwX3BhdGggPSAkc2VsZi0+bWFwX3BhdGg7Ci0JbXkgJHBhcnRpYWwgPSAoLWUgJG1hcF9wYXRoICYmICEgLXogJG1hcF9wYXRoKTsKLQlyZXR1cm4gdW5sZXNzIDo6dmVyaWZ5X3JlZigkc2VsZi0+cmVmbmFtZS4nXjAnKTsKLQlpZiAoISRwYXJ0aWFsICYmICgkc2VsZi0+dXNlX3N2bV9wcm9wcyB8fCAkc2VsZi0+bm9fbWV0YWRhdGEpKSB7Ci0JCW15ICRyZXZfZGIgPSAkc2VsZi0+cmV2X2RiX3BhdGg7Ci0JCSRzZWxmLT5yZWJ1aWxkX2Zyb21fcmV2X2RiKCRyZXZfZGIpOwotCQlpZiAoJHNlbGYtPnVzZV9zdm1fcHJvcHMpIHsKLQkJCW15ICRzdm1fcmV2X2RiID0gJHNlbGYtPnJldl9kYl9wYXRoKCRzZWxmLT5zdm1fdXVpZCk7Ci0JCQkkc2VsZi0+cmVidWlsZF9mcm9tX3Jldl9kYigkc3ZtX3Jldl9kYik7Ci0JCX0KLQkJJHNlbGYtPnVubGlua19yZXZfZGJfc3ltbGluazsKLQkJcmV0dXJuOwotCX0KLQlwcmludCAiUmVidWlsZGluZyAkbWFwX3BhdGggLi4uXG4iIGlmICghJHBhcnRpYWwpOwotCW15ICgkYmFzZV9yZXYsICRoZWFkKSA9ICgkcGFydGlhbCA/ICRzZWxmLT5yZXZfbWFwX21heF9ub3JlYnVpbGQoMSkgOgotCQkodW5kZWYsIHVuZGVmKSk7Ci0JbXkgKCRsb2csICRjdHgpID0KLQkgICAgY29tbWFuZF9vdXRwdXRfcGlwZShxdy9yZXYtbGlzdCAtLXByZXR0eT1yYXcgLS1yZXZlcnNlLywKLQkJCQkoJGhlYWQgPyAiJGhlYWQuLiIgOiAiIikgLiAkc2VsZi0+cmVmbmFtZSwKLQkJCQknLS0nKTsKLQlteSAkbWV0YWRhdGFfdXJsID0gJHNlbGYtPm1ldGFkYXRhX3VybDsKLQlyZW1vdmVfdXNlcm5hbWUoJG1ldGFkYXRhX3VybCk7Ci0JbXkgJHN2bl91dWlkID0gJHNlbGYtPnJld3JpdGVfdXVpZCB8fCAkc2VsZi0+cmFfdXVpZDsKLQlteSAkYzsKLQl3aGlsZSAoPCRsb2c+KSB7Ci0JCWlmICggbXteY29tbWl0ICgkOjpzaGExKSR9ICkgewotCQkJJGMgPSAkMTsKLQkJCW5leHQ7Ci0JCX0KLQkJbmV4dCB1bmxlc3Mgc3teXHMqKGdpdC1zdm4taWQ6KX17JDF9OwotCQlteSAoJHVybCwgJHJldiwgJHV1aWQpID0gOjpleHRyYWN0X21ldGFkYXRhKCRfKTsKLQkJcmVtb3ZlX3VzZXJuYW1lKCR1cmwpOwotCi0JCSMgaWdub3JlIG1lcmdlcyAoZnJvbSBzZXQtdHJlZSkKLQkJbmV4dCBpZiAoIWRlZmluZWQgJHJldiB8fCAhJHV1aWQpOwotCi0JCSMgaWYgd2UgbWVyZ2VkIG9yIG90aGVyd2lzZSBzdGFydGVkIGVsc2V3aGVyZSwgdGhpcyBpcwotCQkjIGhvdyB3ZSBicmVhayBvdXQgb2YgaXQKLQkJaWYgKCgkdXVpZCBuZSAkc3ZuX3V1aWQpIHx8Ci0JCSAgICAoJG1ldGFkYXRhX3VybCAmJiAkdXJsICYmICgkdXJsIG5lICRtZXRhZGF0YV91cmwpKSkgewotCQkJbmV4dDsKLQkJfQotCQlpZiAoJHBhcnRpYWwgJiYgJGhlYWQpIHsKLQkJCXByaW50ICJQYXJ0aWFsLXJlYnVpbGRpbmcgJG1hcF9wYXRoIC4uLlxuIjsKLQkJCXByaW50ICJDdXJyZW50bHkgYXQgJGJhc2VfcmV2ID0gJGhlYWRcbiI7Ci0JCQkkaGVhZCA9IHVuZGVmOwotCQl9Ci0KLQkJJHNlbGYtPnJldl9tYXBfc2V0KCRyZXYsICRjKTsKLQkJcHJpbnQgInIkcmV2ID0gJGNcbiI7Ci0JfQotCWNvbW1hbmRfY2xvc2VfcGlwZSgkbG9nLCAkY3R4KTsKLQlwcmludCAiRG9uZSByZWJ1aWxkaW5nICRtYXBfcGF0aFxuIiBpZiAoISRwYXJ0aWFsIHx8ICEkaGVhZCk7Ci0JbXkgJHJldl9kYl9wYXRoID0gJHNlbGYtPnJldl9kYl9wYXRoOwotCWlmICgtZiAkc2VsZi0+cmV2X2RiX3BhdGgpIHsKLQkJdW5saW5rICRzZWxmLT5yZXZfZGJfcGF0aCBvciBjcm9hayAidW5saW5rOiAkISI7Ci0JfQotCSRzZWxmLT51bmxpbmtfcmV2X2RiX3N5bWxpbms7Ci19Ci0KLSMgcmV2X21hcDoKLSMgVGllOjpGaWxlIHNlZW1zIHRvIGJlIHByb25lIHRvIG9mZnNldCBlcnJvcnMgaWYgcmV2aXNpb25zIGdldCBzcGFyc2UsCi0jIGl0J3Mgbm90IHRoYXQgZmFzdCwgZWl0aGVyLiAgVGllOjpGaWxlIGlzIGFsc28gbm90IGluIFBlcmwgNS42LiAgU28KLSMgb25lIG9mIG15IGZhdm9yaXRlIG1vZHVsZXMgaXMgb3V0IDo8ICBOZXh0IHVwIHdvdWxkIGJlIG9uZSBvZiB0aGUgREJNCi0jIG1vZHVsZXMsIGJ1dCBJJ20gbm90IHN1cmUgd2hpY2ggaXMgbW9zdCBwb3J0YWJsZS4uLgotIwotIyBUaGlzIGlzIHRoZSByZXBsYWNlbWVudCBmb3IgdGhlIHJldl9kYiBmb3JtYXQsIHdoaWNoIHdhcyB0b28gYmlnCi0jIGFuZCBpbmVmZmljaWVudCBmb3IgbGFyZ2UgcmVwb3NpdG9yaWVzIHdpdGggYSBsb3Qgb2Ygc3BhcnNlIGhpc3RvcnkKLSMgKG1haW5seSB0YWdzKQotIwotIyBUaGUgZm9ybWF0IGlzIHRoaXM6Ci0jICAgLSAyNCBieXRlcyBmb3IgZXZlcnkgcmVjb3JkLAotIyAgICAgKiA0IGJ5dGVzIGZvciB0aGUgaW50ZWdlciByZXByZXNlbnRpbmcgYW4gU1ZOIHJldmlzaW9uIG51bWJlcgotIyAgICAgKiAyMCBieXRlcyByZXByZXNlbnRpbmcgdGhlIHNoYTEgb2YgYSBnaXQgY29tbWl0Ci0jICAgLSBObyBlbXB0eSBwYWRkaW5nIHJlY29yZHMgbGlrZSB0aGUgb2xkIGZvcm1hdAotIyAgICAgKGV4Y2VwdCB0aGUgbGFzdCByZWNvcmQsIHdoaWNoIGNhbiBiZSBvdmVyd3JpdHRlbikKLSMgICAtIG5ldyByZWNvcmRzIGFyZSB3cml0dGVuIGFwcGVuZC1vbmx5IHNpbmNlIFNWTiByZXZpc2lvbiBudW1iZXJzCi0jICAgICBpbmNyZWFzZSBtb25vdG9uaWNhbGx5Ci0jICAgLSBsb29rdXBzIG9uIFNWTiByZXZpc2lvbiBudW1iZXIgYXJlIGRvbmUgdmlhIGEgYmluYXJ5IHNlYXJjaAotIyAgIC0gUGlwaW5nIHRoZSBmaWxlIHRvIHh4ZCAtYzI0IGlzIGEgZ29vZCB3YXkgb2YgZHVtcGluZyBpdCBmb3IKLSMgICAgIHZpZXdpbmcgb3IgZWRpdGluZyAocGlwZWQgYmFjayB0aHJvdWdoIHh4ZCAtciksIHNob3VsZCB0aGUgbmVlZAotIyAgICAgZXZlciBhcmlzZS4KLSMgICAtIFRoZSBsYXN0IHJlY29yZCBjYW4gYmUgcGFkZGluZyByZXZpc2lvbiB3aXRoIGFuIGFsbC16ZXJvIHNoYTEKLSMgICAgIFRoaXMgaXMgdXNlZCB0byBvcHRpbWl6ZSBmZXRjaCBwZXJmb3JtYW5jZSB3aGVuIHVzaW5nIG11bHRpcGxlCi0jICAgICAiZmV0Y2giIGRpcmVjdGl2ZXMgaW4gLmdpdC9jb25maWcKLSMKLSMgVGhlc2UgZmlsZXMgYXJlIGRpc3Bvc2FibGUgdW5sZXNzIG5vTWV0YWRhdGEgb3IgdXNlU3ZtUHJvcHMgaXMgc2V0Ci0KLXN1YiBfcmV2X21hcF9zZXQgewotCW15ICgkZmgsICRyZXYsICRjb21taXQpID0gQF87Ci0KLQliaW5tb2RlICRmaCBvciBjcm9hayAiYmlubW9kZTogJCEiOwotCW15ICRzaXplID0gKHN0YXQoJGZoKSlbN107Ci0JKCRzaXplICUgMjQpID09IDAgb3IgY3JvYWsgImluY29uc2lzdGVudCBzaXplOiAkc2l6ZSI7Ci0KLQlteSAkd3Jfb2Zmc2V0ID0gMDsKLQlpZiAoJHNpemUgPiAwKSB7Ci0JCXN5c3NlZWsoJGZoLCAtMjQsIFNFRUtfRU5EKSBvciBjcm9hayAic2VlazogJCEiOwotCQlteSAkcmVhZCA9IHN5c3JlYWQoJGZoLCBteSAkYnVmLCAyNCkgb3IgY3JvYWsgInJlYWQ6ICQhIjsKLQkJJHJlYWQgPT0gMjQgb3IgY3JvYWsgInJlYWQgb25seSAkcmVhZCBieXRlcyAoIT0gMjQpIjsKLQkJbXkgKCRsYXN0X3JldiwgJGxhc3RfY29tbWl0KSA9IHVucGFjayhyZXZfbWFwX2ZtdCwgJGJ1Zik7Ci0JCWlmICgkbGFzdF9jb21taXQgZXEgKCcwJyB4NDApKSB7Ci0JCQlpZiAoJHNpemUgPj0gNDgpIHsKLQkJCQlzeXNzZWVrKCRmaCwgLTQ4LCBTRUVLX0VORCkgb3IgY3JvYWsgInNlZWs6ICQhIjsKLQkJCQkkcmVhZCA9IHN5c3JlYWQoJGZoLCAkYnVmLCAyNCkgb3IKLQkJCQkgICAgY3JvYWsgInJlYWQ6ICQhIjsKLQkJCQkkcmVhZCA9PSAyNCBvcgotCQkJCSAgICBjcm9hayAicmVhZCBvbmx5ICRyZWFkIGJ5dGVzICghPSAyNCkiOwotCQkJCSgkbGFzdF9yZXYsICRsYXN0X2NvbW1pdCkgPQotCQkJCSAgICB1bnBhY2socmV2X21hcF9mbXQsICRidWYpOwotCQkJCWlmICgkbGFzdF9jb21taXQgZXEgKCcwJyB4NDApKSB7Ci0JCQkJCWNyb2FrICJpbmNvbnNpc3RlbnQgLnJldl9tYXBcbiI7Ci0JCQkJfQotCQkJfQotCQkJaWYgKCRsYXN0X3JldiA+PSAkcmV2KSB7Ci0JCQkJY3JvYWsgImxhc3RfcmV2IGlzIGhpZ2hlciE6ICRsYXN0X3JldiA+PSAkcmV2IjsKLQkJCX0KLQkJCSR3cl9vZmZzZXQgPSAtMjQ7Ci0JCX0KLQl9Ci0Jc3lzc2VlaygkZmgsICR3cl9vZmZzZXQsIFNFRUtfRU5EKSBvciBjcm9hayAic2VlazogJCEiOwotCXN5c3dyaXRlKCRmaCwgcGFjayhyZXZfbWFwX2ZtdCwgJHJldiwgJGNvbW1pdCksIDI0KSA9PSAyNCBvcgotCSAgY3JvYWsgIndyaXRlOiAkISI7Ci19Ci0KLXN1YiBfcmV2X21hcF9yZXNldCB7Ci0JbXkgKCRmaCwgJHJldiwgJGNvbW1pdCkgPSBAXzsKLQlteSAkYyA9IF9yZXZfbWFwX2dldCgkZmgsICRyZXYpOwotCSRjIGVxICRjb21taXQgb3IgZGllICJfcmV2X21hcF9yZXNldChAXykgY29tbWl0ICRjIGRvZXMgbm90IG1hdGNoIVxuIjsKLQlteSAkb2Zmc2V0ID0gc3lzc2VlaygkZmgsIDAsIFNFRUtfQ1VSKSBvciBjcm9hayAic2VlazogJCEiOwotCXRydW5jYXRlICRmaCwgJG9mZnNldCBvciBjcm9hayAidHJ1bmNhdGU6ICQhIjsKLX0KLQotc3ViIG1rZmlsZSB7Ci0JbXkgKCRwYXRoKSA9IEBfOwotCXVubGVzcyAoLWUgJHBhdGgpIHsKLQkJbXkgKCRkaXIsICRiYXNlKSA9ICgkcGF0aCA9fiBtI14oLio/KS8/KFteL10rKSQjKTsKLQkJbWtwYXRoKFskZGlyXSkgdW5sZXNzIC1kICRkaXI7Ci0JCW9wZW4gbXkgJGZoLCAnPj4nLCAkcGF0aCBvciBkaWUgIkNvdWxkbid0IGNyZWF0ZSAkcGF0aDogJCFcbiI7Ci0JCWNsb3NlICRmaCBvciBkaWUgIkNvdWxkbid0IGNsb3NlIChjcmVhdGUpICRwYXRoOiAkIVxuIjsKLQl9Ci19Ci0KLXN1YiByZXZfbWFwX3NldCB7Ci0JbXkgKCRzZWxmLCAkcmV2LCAkY29tbWl0LCAkdXBkYXRlX3JlZiwgJHV1aWQpID0gQF87Ci0JZGVmaW5lZCAkY29tbWl0IG9yIGRpZSAibWlzc2luZyBhcmczXG4iOwotCWxlbmd0aCAkY29tbWl0ID09IDQwIG9yIGRpZSAiYXJnMyBtdXN0IGJlIGEgZnVsbCBTSEExIGhleHN1bVxuIjsKLQlteSAkZGIgPSAkc2VsZi0+bWFwX3BhdGgoJHV1aWQpOwotCW15ICRkYl9sb2NrID0gIiRkYi5sb2NrIjsKLQlteSAkc2lnbWFzazsKLQkkdXBkYXRlX3JlZiB8fD0gMDsKLQlpZiAoJHVwZGF0ZV9yZWYpIHsKLQkJJHNpZ21hc2sgPSBQT1NJWDo6U2lnU2V0LT5uZXcoKTsKLQkJbXkgJHNpZ25ldyA9IFBPU0lYOjpTaWdTZXQtPm5ldyhTSUdJTlQsIFNJR0hVUCwgU0lHVEVSTSwKLQkJCVNJR0FMUk0sIFNJR1VTUjEsIFNJR1VTUjIpOwotCQlzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICRzaWduZXcsICRzaWdtYXNrKSBvcgotCQkJY3JvYWsgIkNhbid0IGJsb2NrIHNpZ25hbHM6ICQhIjsKLQl9Ci0JbWtmaWxlKCRkYik7Ci0KLQkkTE9DS0ZJTEVTeyRkYl9sb2NrfSA9IDE7Ci0JbXkgJHN5bmM7Ci0JIyBib3RoIG9mIHRoZXNlIG9wdGlvbnMgbWFrZSBvdXIgLnJldl9kYiBmaWxlIHZlcnksIHZlcnkgaW1wb3J0YW50Ci0JIyBhbmQgd2UgY2FuJ3QgYWZmb3JkIHRvIGxvc2UgaXQgYmVjYXVzZSByZWJ1aWxkKCkgd29uJ3Qgd29yawotCWlmICgkc2VsZi0+dXNlX3N2bV9wcm9wcyB8fCAkc2VsZi0+bm9fbWV0YWRhdGEpIHsKLQkJJHN5bmMgPSAxOwotCQljb3B5KCRkYiwgJGRiX2xvY2spIG9yIGRpZSAicmV2X21hcF9zZXQoQF8pOiAiLAotCQkJCQkgICAiRmFpbGVkIHRvIGNvcHk6ICIsCi0JCQkJCSAgICIkZGIgPT4gJGRiX2xvY2sgKCQhKVxuIjsKLQl9IGVsc2UgewotCQlyZW5hbWUgJGRiLCAkZGJfbG9jayBvciBkaWUgInJldl9tYXBfc2V0KEBfKTogIiwKLQkJCQkJICAgICJGYWlsZWQgdG8gcmVuYW1lOiAiLAotCQkJCQkgICAgIiRkYiA9PiAkZGJfbG9jayAoJCEpXG4iOwotCX0KLQotCXN5c29wZW4obXkgJGZoLCAkZGJfbG9jaywgT19SRFdSIHwgT19DUkVBVCkKLQkgICAgIG9yIGNyb2FrICJDb3VsZG4ndCBvcGVuICRkYl9sb2NrOiAkIVxuIjsKLQkkdXBkYXRlX3JlZiBlcSAncmVzZXQnID8gX3Jldl9tYXBfcmVzZXQoJGZoLCAkcmV2LCAkY29tbWl0KSA6Ci0JCQkJIF9yZXZfbWFwX3NldCgkZmgsICRyZXYsICRjb21taXQpOwotCWlmICgkc3luYykgewotCQkkZmgtPmZsdXNoIG9yIGRpZSAiQ291bGRuJ3QgZmx1c2ggJGRiX2xvY2s6ICQhXG4iOwotCQkkZmgtPnN5bmMgb3IgZGllICJDb3VsZG4ndCBzeW5jICRkYl9sb2NrOiAkIVxuIjsKLQl9Ci0JY2xvc2UgJGZoIG9yIGNyb2FrICQhOwotCWlmICgkdXBkYXRlX3JlZikgewotCQkkX2hlYWQgPSAkc2VsZjsKLQkJbXkgJG5vdGUgPSAiIjsKLQkJJG5vdGUgPSAiICgkdXBkYXRlX3JlZikiIGlmICgkdXBkYXRlX3JlZiAhfiAvXlxkKiQvKTsKLQkJY29tbWFuZF9ub2lzeSgndXBkYXRlLXJlZicsICctbScsICJyJHJldiRub3RlIiwKLQkJICAgICAgICAgICAgICAkc2VsZi0+cmVmbmFtZSwgJGNvbW1pdCk7Ci0JfQotCXJlbmFtZSAkZGJfbG9jaywgJGRiIG9yIGRpZSAicmV2X21hcF9zZXQoQF8pOiAiLCAiRmFpbGVkIHRvIHJlbmFtZTogIiwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRkYl9sb2NrID0+ICRkYiAoJCEpXG4iOwotCWRlbGV0ZSAkTE9DS0ZJTEVTeyRkYl9sb2NrfTsKLQlpZiAoJHVwZGF0ZV9yZWYpIHsKLQkJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICRzaWdtYXNrKSBvcgotCQkJY3JvYWsgIkNhbid0IHJlc3RvcmUgc2lnbmFsIG1hc2s6ICQhIjsKLQl9Ci19Ci0KLSMgSWYgd2FudF9jb21taXQsIHRoaXMgd2lsbCByZXR1cm4gYW4gYXJyYXkgb2YgKHJldiwgY29tbWl0KSB3aGVyZQotIyBjb21taXQgX211c3RfIGJlIGEgdmFsaWQgY29tbWl0IGluIHRoZSBhcmNoaXZlLgotIyBPdGhlcndpc2UsIGl0J2xsIHJldHVybiB0aGUgbWF4IHJldmlzaW9uICh3aGV0aGVyIG9yIG5vdCB0aGUKLSMgY29tbWl0IGlzIHZhbGlkIG9yIGp1c3QgYSAweDQwIHBsYWNlaG9sZGVyKS4KLXN1YiByZXZfbWFwX21heCB7Ci0JbXkgKCRzZWxmLCAkd2FudF9jb21taXQpID0gQF87Ci0JJHNlbGYtPnJlYnVpbGQ7Ci0JbXkgKCRyLCAkYykgPSAkc2VsZi0+cmV2X21hcF9tYXhfbm9yZWJ1aWxkKCR3YW50X2NvbW1pdCk7Ci0JJHdhbnRfY29tbWl0ID8gKCRyLCAkYykgOiAkcjsKLX0KLQotc3ViIHJldl9tYXBfbWF4X25vcmVidWlsZCB7Ci0JbXkgKCRzZWxmLCAkd2FudF9jb21taXQpID0gQF87Ci0JbXkgJG1hcF9wYXRoID0gJHNlbGYtPm1hcF9wYXRoOwotCXN0YXQgJG1hcF9wYXRoIG9yIHJldHVybiAkd2FudF9jb21taXQgPyAoMCwgdW5kZWYpIDogMDsKLQlzeXNvcGVuKG15ICRmaCwgJG1hcF9wYXRoLCBPX1JET05MWSkgb3IgY3JvYWsgIm9wZW46ICQhIjsKLQliaW5tb2RlICRmaCBvciBjcm9hayAiYmlubW9kZTogJCEiOwotCW15ICRzaXplID0gKHN0YXQoJGZoKSlbN107Ci0JKCRzaXplICUgMjQpID09IDAgb3IgY3JvYWsgImluY29uc2lzdGVudCBzaXplOiAkc2l6ZSI7Ci0KLQlpZiAoJHNpemUgPT0gMCkgewotCQljbG9zZSAkZmggb3IgY3JvYWsgImNsb3NlOiAkISI7Ci0JCXJldHVybiAkd2FudF9jb21taXQgPyAoMCwgdW5kZWYpIDogMDsKLQl9Ci0KLQlzeXNzZWVrKCRmaCwgLTI0LCBTRUVLX0VORCkgb3IgY3JvYWsgInNlZWs6ICQhIjsKLQlzeXNyZWFkKCRmaCwgbXkgJGJ1ZiwgMjQpID09IDI0IG9yIGNyb2FrICJyZWFkOiAkISI7Ci0JbXkgKCRyLCAkYykgPSB1bnBhY2socmV2X21hcF9mbXQsICRidWYpOwotCWlmICgkd2FudF9jb21taXQgJiYgJGMgZXEgKCcwJyB4NDApKSB7Ci0JCWlmICgkc2l6ZSA8IDQ4KSB7Ci0JCQlyZXR1cm4gJHdhbnRfY29tbWl0ID8gKDAsIHVuZGVmKSA6IDA7Ci0JCX0KLQkJc3lzc2VlaygkZmgsIC00OCwgU0VFS19FTkQpIG9yIGNyb2FrICJzZWVrOiAkISI7Ci0JCXN5c3JlYWQoJGZoLCAkYnVmLCAyNCkgPT0gMjQgb3IgY3JvYWsgInJlYWQ6ICQhIjsKLQkJKCRyLCAkYykgPSB1bnBhY2socmV2X21hcF9mbXQsICRidWYpOwotCQlpZiAoJGMgZXEgKCcwJ3g0MCkpIHsKLQkJCWNyb2FrICJQZW51bHRpbWF0ZSByZWNvcmQgaXMgYWxsLXplcm9lcyBpbiAkbWFwX3BhdGgiOwotCQl9Ci0JfQotCWNsb3NlICRmaCBvciBjcm9hayAiY2xvc2U6ICQhIjsKLQkkd2FudF9jb21taXQgPyAoJHIsICRjKSA6ICRyOwotfQotCi1zdWIgcmV2X21hcF9nZXQgewotCW15ICgkc2VsZiwgJHJldiwgJHV1aWQpID0gQF87Ci0JbXkgJG1hcF9wYXRoID0gJHNlbGYtPm1hcF9wYXRoKCR1dWlkKTsKLQlyZXR1cm4gdW5kZWYgdW5sZXNzIC1lICRtYXBfcGF0aDsKLQotCXN5c29wZW4obXkgJGZoLCAkbWFwX3BhdGgsIE9fUkRPTkxZKSBvciBjcm9hayAib3BlbjogJCEiOwotCW15ICRjID0gX3Jldl9tYXBfZ2V0KCRmaCwgJHJldik7Ci0JY2xvc2UoJGZoKSBvciBjcm9hayAiY2xvc2U6ICQhIjsKLQkkYwotfQotCi1zdWIgX3Jldl9tYXBfZ2V0IHsKLQlteSAoJGZoLCAkcmV2KSA9IEBfOwotCi0JYmlubW9kZSAkZmggb3IgY3JvYWsgImJpbm1vZGU6ICQhIjsKLQlteSAkc2l6ZSA9IChzdGF0KCRmaCkpWzddOwotCSgkc2l6ZSAlIDI0KSA9PSAwIG9yIGNyb2FrICJpbmNvbnNpc3RlbnQgc2l6ZTogJHNpemUiOwotCi0JaWYgKCRzaXplID09IDApIHsKLQkJcmV0dXJuIHVuZGVmOwotCX0KLQotCW15ICgkbCwgJHUpID0gKDAsICRzaXplIC0gMjQpOwotCW15ICgkciwgJGMsICRidWYpOwotCi0Jd2hpbGUgKCRsIDw9ICR1KSB7Ci0JCW15ICRpID0gaW50KCgkbC8yNCArICR1LzI0KSAvIDIpICogMjQ7Ci0JCXN5c3NlZWsoJGZoLCAkaSwgU0VFS19TRVQpIG9yIGNyb2FrICJzZWVrOiAkISI7Ci0JCXN5c3JlYWQoJGZoLCBteSAkYnVmLCAyNCkgPT0gMjQgb3IgY3JvYWsgInJlYWQ6ICQhIjsKLQkJbXkgKCRyLCAkYykgPSB1bnBhY2socmV2X21hcF9mbXQsICRidWYpOwotCi0JCWlmICgkciA8ICRyZXYpIHsKLQkJCSRsID0gJGkgKyAyNDsKLQkJfSBlbHNpZiAoJHIgPiAkcmV2KSB7Ci0JCQkkdSA9ICRpIC0gMjQ7Ci0JCX0gZWxzZSB7ICMgJHIgPT0gJHJldgotCQkJcmV0dXJuICRjIGVxICgnMCcgeCA0MCkgPyB1bmRlZiA6ICRjOwotCQl9Ci0JfQotCXVuZGVmOwotfQotCi0jIEZpbmRzIHRoZSBmaXJzdCBzdm4gcmV2aXNpb24gdGhhdCBleGlzdHMgb24gKGlmICRlcV9vayBpcyB0cnVlKSBvcgotIyBiZWZvcmUgJHJldiBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLiAgSXQgd2lsbCBub3Qgc2VhcmNoIGFueSBsb3dlcgotIyB0aGFuICRtaW5fcmV2LiAgUmV0dXJucyB0aGUgZ2l0IGNvbW1pdCBoYXNoIGFuZCBzdm4gcmV2aXNpb24gbnVtYmVyCi0jIGlmIGZvdW5kLCBlbHNlICh1bmRlZiwgdW5kZWYpLgotc3ViIGZpbmRfcmV2X2JlZm9yZSB7Ci0JbXkgKCRzZWxmLCAkcmV2LCAkZXFfb2ssICRtaW5fcmV2KSA9IEBfOwotCS0tJHJldiB1bmxlc3MgJGVxX29rOwotCSRtaW5fcmV2IHx8PSAxOwotCW15ICRtYXhfcmV2ID0gJHNlbGYtPnJldl9tYXBfbWF4OwotCSRyZXYgPSAkbWF4X3JldiBpZiAoJHJldiA+ICRtYXhfcmV2KTsKLQl3aGlsZSAoJHJldiA+PSAkbWluX3JldikgewotCQlpZiAobXkgJGMgPSAkc2VsZi0+cmV2X21hcF9nZXQoJHJldikpIHsKLQkJCXJldHVybiAoJHJldiwgJGMpOwotCQl9Ci0JCS0tJHJldjsKLQl9Ci0JcmV0dXJuICh1bmRlZiwgdW5kZWYpOwotfQotCi0jIEZpbmRzIHRoZSBmaXJzdCBzdm4gcmV2aXNpb24gdGhhdCBleGlzdHMgb24gKGlmICRlcV9vayBpcyB0cnVlKSBvcgotIyBhZnRlciAkcmV2IGZvciB0aGUgY3VycmVudCBicmFuY2guICBJdCB3aWxsIG5vdCBzZWFyY2ggYW55IGhpZ2hlcgotIyB0aGFuICRtYXhfcmV2LiAgUmV0dXJucyB0aGUgZ2l0IGNvbW1pdCBoYXNoIGFuZCBzdm4gcmV2aXNpb24gbnVtYmVyCi0jIGlmIGZvdW5kLCBlbHNlICh1bmRlZiwgdW5kZWYpLgotc3ViIGZpbmRfcmV2X2FmdGVyIHsKLQlteSAoJHNlbGYsICRyZXYsICRlcV9vaywgJG1heF9yZXYpID0gQF87Ci0JKyskcmV2IHVubGVzcyAkZXFfb2s7Ci0JJG1heF9yZXYgfHw9ICRzZWxmLT5yZXZfbWFwX21heDsKLQl3aGlsZSAoJHJldiA8PSAkbWF4X3JldikgewotCQlpZiAobXkgJGMgPSAkc2VsZi0+cmV2X21hcF9nZXQoJHJldikpIHsKLQkJCXJldHVybiAoJHJldiwgJGMpOwotCQl9Ci0JCSsrJHJldjsKLQl9Ci0JcmV0dXJuICh1bmRlZiwgdW5kZWYpOwotfQotCi1zdWIgX25ldyB7Ci0JbXkgKCRjbGFzcywgJHJlcG9faWQsICRyZWZfaWQsICRwYXRoKSA9IEBfOwotCXVubGVzcyAoZGVmaW5lZCAkcmVwb19pZCAmJiBsZW5ndGggJHJlcG9faWQpIHsKLQkJJHJlcG9faWQgPSAkR2l0OjpTVk46OmRlZmF1bHRfcmVwb19pZDsKLQl9Ci0JdW5sZXNzIChkZWZpbmVkICRyZWZfaWQgJiYgbGVuZ3RoICRyZWZfaWQpIHsKLQkJJF9wcmVmaXggPSAnJyB1bmxlc3MgZGVmaW5lZCgkX3ByZWZpeCk7Ci0JCSRfWzJdID0gJHJlZl9pZCA9Ci0JCSAgICAgICAgICAgICAicmVmcy9yZW1vdGVzLyRfcHJlZml4JEdpdDo6U1ZOOjpkZWZhdWx0X3JlZl9pZCI7Ci0JfQotCSRfWzFdID0gJHJlcG9faWQ7Ci0JbXkgJGRpciA9ICIkRU5We0dJVF9ESVJ9L3N2bi8kcmVmX2lkIjsKLQotCSMgT2xkZXIgcmVwb3MgaW1wb3J0ZWQgYnkgdXMgdXNlZCAkR0lUX0RJUi9zdm4vZm9vIGluc3RlYWQgb2YKLQkjICRHSVRfRElSL3N2bi9yZWZzL3JlbW90ZXMvZm9vIHdoZW4gdHJhY2tpbmcgcmVmcy9yZW1vdGVzL2ZvbwotCWlmICgkcmVmX2lkID1+IG17XnJlZnMvcmVtb3Rlcy8oLiopfSkgewotCQlteSAkb2xkX2RpciA9ICIkRU5We0dJVF9ESVJ9L3N2bi8kMSI7Ci0JCWlmICgtZCAkb2xkX2RpciAmJiAhIC1kICRkaXIpIHsKLQkJCSRkaXIgPSAkb2xkX2RpcjsKLQkJfQotCX0KLQotCSRfWzNdID0gJHBhdGggPSAnJyB1bmxlc3MgKGRlZmluZWQgJHBhdGgpOwotCW1rcGF0aChbJGRpcl0pOwotCWJsZXNzIHsKLQkJcmVmX2lkID0+ICRyZWZfaWQsIGRpciA9PiAkZGlyLCBpbmRleCA9PiAiJGRpci9pbmRleCIsCi0JICAgICAgICBwYXRoID0+ICRwYXRoLCBjb25maWcgPT4gIiRFTlZ7R0lUX0RJUn0vc3ZuL2NvbmZpZyIsCi0JICAgICAgICBtYXBfcm9vdCA9PiAiJGRpci8ucmV2X21hcCIsIHJlcG9faWQgPT4gJHJlcG9faWQgfSwgJGNsYXNzOwotfQotCi0jIGZvciByZWFkLW9ubHkgYWNjZXNzIG9mIG9sZCAucmV2X2RiIGZvcm1hdHMKLXN1YiB1bmxpbmtfcmV2X2RiX3N5bWxpbmsgewotCW15ICgkc2VsZikgPSBAXzsKLQlteSAkbGluayA9ICRzZWxmLT5yZXZfZGJfcGF0aDsKLQkkbGluayA9fiBzL1wuW1x3LV0rJC8vIG9yIGNyb2FrICJtaXNzaW5nIFVVSUQgYXQgdGhlIGVuZCBvZiAkbGluayI7Ci0JaWYgKC1sICRsaW5rKSB7Ci0JCXVubGluayAkbGluayBvciBjcm9hayAidW5saW5rOiAkbGluayBmYWlsZWQhIjsKLQl9Ci19Ci0KLXN1YiByZXZfZGJfcGF0aCB7Ci0JbXkgKCRzZWxmLCAkdXVpZCkgPSBAXzsKLQlteSAkZGJfcGF0aCA9ICRzZWxmLT5tYXBfcGF0aCgkdXVpZCk7Ci0JJGRiX3BhdGggPX4gc3svXC5yZXZfbWFwXC59ey9cLnJldl9kYlwufQotCSAgICBvciBjcm9hayAibWFwX3BhdGg6ICRkYl9wYXRoIGRvZXMgbm90IGNvbnRhaW4gJy8ucmV2X21hcC4nICEiOwotCSRkYl9wYXRoOwotfQotCi0jIHRoZSBuZXcgcmVwbGFjZW1lbnQgZm9yIC5yZXZfZGIKLXN1YiBtYXBfcGF0aCB7Ci0JbXkgKCRzZWxmLCAkdXVpZCkgPSBAXzsKLQkkdXVpZCB8fD0gJHNlbGYtPnJhX3V1aWQ7Ci0JIiRzZWxmLT57bWFwX3Jvb3R9LiR1dWlkIjsKLX0KLQotc3ViIHVyaV9lbmNvZGUgewotCW15ICgkZikgPSBAXzsKLQkkZiA9fiBzIyhbXmEtekEtWjAtOVwqIVw6X1wuL1wtXSkjdWMgc3ByaW50ZigiJSUlMDJ4IixvcmQoJDEpKSNlZzsKLQkkZgotfQotCi1zdWIgdXJpX2RlY29kZSB7Ci0JbXkgKCRmKSA9IEBfOwotCSRmID1+IHMjJShbMC05YS1mQS1GXXsyfSkjY2hyKGhleCgkMSkpI2VnOwotCSRmCi19Ci0KLXN1YiByZW1vdmVfdXNlcm5hbWUgewotCSRfWzBdID1+IHN7XihbXjpdKjovLylbXkBdK0B9eyQxfTsKLX0KLQotcGFja2FnZSBHaXQ6OlNWTjo6TG9nOwotdXNlIHN0cmljdDsKLXVzZSB3YXJuaW5nczsKLXVzZSBQT1NJWCBxdy9zdHJmdGltZS87Ci11c2UgY29uc3RhbnQgY29tbWl0X2xvZ19zZXBhcmF0b3IgPT4gKCctJyB4IDcyKSAuICJcbiI7Ci11c2UgdmFycyBxdy8kVFogJGxpbWl0ICRjb2xvciAkcGFnZXIgJG5vbl9yZWN1cnNpdmUgJHZlcmJvc2UgJG9uZWxpbmUKLSAgICAgICAgICAgICVydXNlcnMgJHNob3dfY29tbWl0ICRpbmNyZW1lbnRhbC87Ci1teSAkbF9mbXQ7Ci0KLXN1YiBjbXRfc2hvd2FibGUgewotCW15ICgkYykgPSBAXzsKLQlyZXR1cm4gMSBpZiBkZWZpbmVkICRjLT57cn07Ci0KLQkjIGJpZyBjb21taXQgbWVzc2FnZSBnb3QgdHJ1bmNhdGVkIGJ5IHRoZSAxNmsgcHJldHR5IGJ1ZmZlciBpbiByZXYtbGlzdAotCWlmICgkYy0+e2x9ICYmICRjLT57bH0tPlstMV0gZXEgIi4uLlxuIiAmJgotCQkJCSRjLT57YV9yYXd9ID1+IC9cQChbYS1mXGRcLV0rKT4kLykgewotCQlAeyRjLT57bH19ID0gKCk7Ci0JCW15IEBsb2cgPSBjb21tYW5kKHF3L2NhdC1maWxlIGNvbW1pdC8sICRjLT57Y30pOwotCi0JCSMgc2hpZnQgb2ZmIHRoZSBoZWFkZXJzCi0JCXNoaWZ0IEBsb2cgd2hpbGUgKCRsb2dbMF0gbmUgJycpOwotCQlzaGlmdCBAbG9nOwotCi0JCSMgVE9ETzogbWFrZSAkYy0+e2x9IG5vdCBoYXZlIGEgdHJhaWxpbmcgbmV3bGluZSBpbiB0aGUgZnV0dXJlCi0JCUB7JGMtPntsfX0gPSBtYXAgeyAiJF9cbiIgfSBncmVwICEvXmdpdC1zdm4taWQ6IC8sIEBsb2c7Ci0KLQkJKHVuZGVmLCAkYy0+e3J9LCB1bmRlZikgPSA6OmV4dHJhY3RfbWV0YWRhdGEoCi0JCQkJKGdyZXAoL15naXQtc3ZuLWlkOiAvLCBAbG9nKSlbLTFdKTsKLQl9Ci0JcmV0dXJuIGRlZmluZWQgJGMtPntyfTsKLX0KLQotc3ViIGxvZ191c2VfY29sb3IgewotCXJldHVybiAkY29sb3IgfHwgR2l0LT5yZXBvc2l0b3J5LT5nZXRfY29sb3Jib29sKCdjb2xvci5kaWZmJyk7Ci19Ci0KLXN1YiBnaXRfc3ZuX2xvZ19jbWQgewotCW15ICgkcl9taW4sICRyX21heCwgQGFyZ3MpID0gQF87Ci0JbXkgJGhlYWQgPSAnSEVBRCc7Ci0JbXkgKEBmaWxlcywgQGxvZ19vcHRzKTsKLQlmb3JlYWNoIG15ICR4IChAYXJncykgewotCQlpZiAoJHggZXEgJy0tJyB8fCBAZmlsZXMpIHsKLQkJCXB1c2ggQGZpbGVzLCAkeDsKLQkJfSBlbHNlIHsKLQkJCWlmICg6OnZlcmlmeV9yZWYoIiR4XjAiKSkgewotCQkJCSRoZWFkID0gJHg7Ci0JCQl9IGVsc2UgewotCQkJCXB1c2ggQGxvZ19vcHRzLCAkeDsKLQkJCX0KLQkJfQotCX0KLQotCW15ICgkdXJsLCAkcmV2LCAkdXVpZCwgJGdzKSA9IDo6d29ya2luZ19oZWFkX2luZm8oJGhlYWQpOwotCSRncyB8fD0gR2l0OjpTVk4tPl9uZXc7Ci0JbXkgQGNtZCA9IChxdy9sb2cgLS1hYmJyZXYtY29tbWl0IC0tcHJldHR5PXJhdyAtLWRlZmF1bHQvLAotCSAgICAgICAgICAgJGdzLT5yZWZuYW1lKTsKLQlwdXNoIEBjbWQsICctcicgdW5sZXNzICRub25fcmVjdXJzaXZlOwotCXB1c2ggQGNtZCwgcXcvLS1yYXcgLS1uYW1lLXN0YXR1cy8gaWYgJHZlcmJvc2U7Ci0JcHVzaCBAY21kLCAnLS1jb2xvcicgaWYgbG9nX3VzZV9jb2xvcigpOwotCXB1c2ggQGNtZCwgQGxvZ19vcHRzOwotCWlmIChkZWZpbmVkICRyX21heCAmJiAkcl9tYXggPT0gJHJfbWluKSB7Ci0JCXB1c2ggQGNtZCwgJy0tbWF4LWNvdW50PTEnOwotCQlpZiAobXkgJGMgPSAkZ3MtPnJldl9tYXBfZ2V0KCRyX21heCkpIHsKLQkJCXB1c2ggQGNtZCwgJGM7Ci0JCX0KLQl9IGVsc2lmIChkZWZpbmVkICRyX21heCkgewotCQlpZiAoJHJfbWF4IDwgJHJfbWluKSB7Ci0JCQkoJHJfbWluLCAkcl9tYXgpID0gKCRyX21heCwgJHJfbWluKTsKLQkJfQotCQlteSAodW5kZWYsICRjX21heCkgPSAkZ3MtPmZpbmRfcmV2X2JlZm9yZSgkcl9tYXgsIDEsICRyX21pbik7Ci0JCW15ICh1bmRlZiwgJGNfbWluKSA9ICRncy0+ZmluZF9yZXZfYWZ0ZXIoJHJfbWluLCAxLCAkcl9tYXgpOwotCQkjIElmIHRoZXJlIGFyZSBubyBjb21taXRzIGluIHRoZSByYW5nZSwgYm90aCAkY19tYXggYW5kICRjX21pbgotCQkjIHdpbGwgYmUgdW5kZWZpbmVkLiAgSWYgdGhlcmUgaXMgYXQgbGVhc3QgMSBjb21taXQgaW4gdGhlCi0JCSMgcmFuZ2UsIGJvdGggd2lsbCBiZSBkZWZpbmVkLgotCQlyZXR1cm4gKCkgaWYgIWRlZmluZWQgJGNfbWluIHx8ICFkZWZpbmVkICRjX21heDsKLQkJaWYgKCRjX21pbiBlcSAkY19tYXgpIHsKLQkJCXB1c2ggQGNtZCwgJy0tbWF4LWNvdW50PTEnLCAkY19taW47Ci0JCX0gZWxzZSB7Ci0JCQlwdXNoIEBjbWQsICctLWJvdW5kYXJ5JywgIiRjX21pbi4uJGNfbWF4IjsKLQkJfQotCX0KLQlyZXR1cm4gKEBjbWQsIEBmaWxlcyk7Ci19Ci0KLSMgYWRhcHRlZCBmcm9tIHBhZ2VyLmMKLXN1YiBjb25maWdfcGFnZXIgewotCWlmICghIC10ICpTVERPVVQpIHsKLQkJJEVOVntHSVRfUEFHRVJfSU5fVVNFfSA9ICdmYWxzZSc7Ci0JCSRwYWdlciA9IHVuZGVmOwotCQlyZXR1cm47Ci0JfQotCWNob21wKCRwYWdlciA9IGNvbW1hbmRfb25lbGluZShxdyh2YXIgR0lUX1BBR0VSKSkpOwotCWlmICgkcGFnZXIgZXEgJ2NhdCcpIHsKLQkJJHBhZ2VyID0gdW5kZWY7Ci0JfQotCSRFTlZ7R0lUX1BBR0VSX0lOX1VTRX0gPSBkZWZpbmVkKCRwYWdlcik7Ci19Ci0KLXN1YiBydW5fcGFnZXIgewotCXJldHVybiB1bmxlc3MgZGVmaW5lZCAkcGFnZXI7Ci0JcGlwZSBteSAoJHJmZCwgJHdmZCkgb3IgcmV0dXJuOwotCWRlZmluZWQobXkgJHBpZCA9IGZvcmspIG9yIDo6ZmF0YWwgIkNhbid0IGZvcms6ICQhIjsKLQlpZiAoISRwaWQpIHsKLQkJb3BlbiBTVERPVVQsICc+JicsICR3ZmQgb3IKLQkJICAgICAgICAgICAgICAgICAgICAgOjpmYXRhbCAiQ2FuJ3QgcmVkaXJlY3QgdG8gc3Rkb3V0OiAkISI7Ci0JCXJldHVybjsKLQl9Ci0Jb3BlbiBTVERJTiwgJzwmJywgJHJmZCBvciA6OmZhdGFsICJDYW4ndCByZWRpcmVjdCBzdGRpbjogJCEiOwotCSRFTlZ7TEVTU30gfHw9ICdGUlNYJzsKLQlleGVjICRwYWdlciBvciA6OmZhdGFsICJDYW4ndCBydW4gcGFnZXI6ICQhICgkcGFnZXIpIjsKLX0KLQotc3ViIGZvcm1hdF9zdm5fZGF0ZSB7Ci0JbXkgJHQgPSBzaGlmdCB8fCB0aW1lOwotCW15ICRnbW9mZiA9IEdpdDo6U1ZOOjpnZXRfdHooJHQpOwotCXJldHVybiBzdHJmdGltZSgiJVktJW0tJWQgJUg6JU06JVMgJGdtb2ZmICglYSwgJWQgJWIgJVkpIiwgbG9jYWx0aW1lKCR0KSk7Ci19Ci0KLXN1YiBwYXJzZV9naXRfZGF0ZSB7Ci0JbXkgKCR0LCAkdHopID0gQF87Ci0JIyBEYXRlOjpQYXJzZSBpc24ndCBpbiB0aGUgc3RhbmRhcmQgUGVybCBkaXN0cm8gOigKLQlpZiAoJHR6ID1+IHMvXlwrLy8pIHsKLQkJJHQgKz0gdHpfdG9fc19vZmZzZXQoJHR6KTsKLQl9IGVsc2lmICgkdHogPX4gcy9eXC0vLykgewotCQkkdCAtPSB0el90b19zX29mZnNldCgkdHopOwotCX0KLQlyZXR1cm4gJHQ7Ci19Ci0KLXN1YiBzZXRfbG9jYWxfdGltZXpvbmUgewotCWlmIChkZWZpbmVkICRUWikgewotCQkkRU5We1RafSA9ICRUWjsKLQl9IGVsc2UgewotCQlkZWxldGUgJEVOVntUWn07Ci0JfQotfQotCi1zdWIgdHpfdG9fc19vZmZzZXQgewotCW15ICgkdHopID0gQF87Ci0JJHR6ID1+IHMvKFxkXGQpJC8vOwotCXJldHVybiAoJDEgKiA2MCkgKyAoJHR6ICogMzYwMCk7Ci19Ci0KLXN1YiBnZXRfYXV0aG9yX2luZm8gewotCW15ICgkZGVzdCwgJGF1dGhvciwgJHQsICR0eikgPSBAXzsKLQkkYXV0aG9yID1+IHMvKD86XlxzKnxccyokKS8vZzsKLQkkZGVzdC0+e2FfcmF3fSA9ICRhdXRob3I7Ci0JbXkgJGF1OwotCWlmICgkOjpfYXV0aG9ycykgewotCQkkYXUgPSAkcnVzZXJzeyRhdXRob3J9IHx8IHVuZGVmOwotCX0KLQlpZiAoISRhdSkgewotCQkoJGF1KSA9ICgkYXV0aG9yID1+IC88KFtePl0rKVxAW14+XSs+JC8pOwotCX0KLQkkZGVzdC0+e3R9ID0gJHQ7Ci0JJGRlc3QtPnt0en0gPSAkdHo7Ci0JJGRlc3QtPnthfSA9ICRhdTsKLQkkZGVzdC0+e3RfdXRjfSA9IHBhcnNlX2dpdF9kYXRlKCR0LCAkdHopOwotfQotCi1zdWIgcHJvY2Vzc19jb21taXQgewotCW15ICgkYywgJHJfbWluLCAkcl9tYXgsICRkZWZlcikgPSBAXzsKLQlpZiAoZGVmaW5lZCAkcl9taW4gJiYgZGVmaW5lZCAkcl9tYXgpIHsKLQkJaWYgKCRyX21pbiA9PSAkYy0+e3J9ICYmICRyX21pbiA9PSAkcl9tYXgpIHsKLQkJCXNob3dfY29tbWl0KCRjKTsKLQkJCXJldHVybiAwOwotCQl9Ci0JCXJldHVybiAxIGlmICRyX21pbiA9PSAkcl9tYXg7Ci0JCWlmICgkcl9taW4gPCAkcl9tYXgpIHsKLQkJCSMgd2UgbmVlZCB0byByZXZlcnNlIHRoZSBwcmludCBvcmRlcgotCQkJcmV0dXJuIDAgaWYgKGRlZmluZWQgJGxpbWl0ICYmIC0tJGxpbWl0IDwgMCk7Ci0JCQlwdXNoIEAkZGVmZXIsICRjOwotCQkJcmV0dXJuIDE7Ci0JCX0KLQkJaWYgKCRyX21pbiAhPSAkcl9tYXgpIHsKLQkJCXJldHVybiAxIGlmICgkcl9taW4gPCAkYy0+e3J9KTsKLQkJCXJldHVybiAxIGlmICgkcl9tYXggPiAkYy0+e3J9KTsKLQkJfQotCX0KLQlyZXR1cm4gMCBpZiAoZGVmaW5lZCAkbGltaXQgJiYgLS0kbGltaXQgPCAwKTsKLQlzaG93X2NvbW1pdCgkYyk7Ci0JcmV0dXJuIDE7Ci19Ci0KLXN1YiBzaG93X2NvbW1pdCB7Ci0JbXkgJGMgPSBzaGlmdDsKLQlpZiAoJG9uZWxpbmUpIHsKLQkJbXkgJHggPSAiXG4iOwotCQlpZiAobXkgJGwgPSAkYy0+e2x9KSB7Ci0JCQl3aGlsZSAoJGwtPlswXSA9fiAvXlxzKiQvKSB7IHNoaWZ0IEAkbCB9Ci0JCQkkeCA9ICRsLT5bMF07Ci0JCX0KLQkJJGxfZm10IHx8PSAnQScgLiBsZW5ndGgoJGMtPntyfSk7Ci0JCXByaW50ICdyJyxwYWNrKCRsX2ZtdCwgJGMtPntyfSksJyB8ICc7Ci0JCXByaW50ICIkYy0+e2N9IHwgIiBpZiAkc2hvd19jb21taXQ7Ci0JCXByaW50ICR4OwotCX0gZWxzZSB7Ci0JCXNob3dfY29tbWl0X25vcm1hbCgkYyk7Ci0JfQotfQotCi1zdWIgc2hvd19jb21taXRfY2hhbmdlZF9wYXRocyB7Ci0JbXkgKCRjKSA9IEBfOwotCXJldHVybiB1bmxlc3MgJGMtPntjaGFuZ2VkfTsKLQlwcmludCAiQ2hhbmdlZCBwYXRoczpcbiIsIEB7JGMtPntjaGFuZ2VkfX07Ci19Ci0KLXN1YiBzaG93X2NvbW1pdF9ub3JtYWwgewotCW15ICgkYykgPSBAXzsKLQlwcmludCBjb21taXRfbG9nX3NlcGFyYXRvciwgInIkYy0+e3J9IHwgIjsKLQlwcmludCAiJGMtPntjfSB8ICIgaWYgJHNob3dfY29tbWl0OwotCXByaW50ICIkYy0+e2F9IHwgIiwgZm9ybWF0X3N2bl9kYXRlKCRjLT57dF91dGN9KSwgJyB8ICc7Ci0JbXkgJG5yX2xpbmUgPSAwOwotCi0JaWYgKG15ICRsID0gJGMtPntsfSkgewotCQl3aGlsZSAoJGwtPlskIyRsXSBlcSAiXG4iICYmICQjJGwgPiAwCi0JCSAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGwtPlsoJCMkbCAtIDEpXSBlcSAiXG4iKSB7Ci0JCQlwb3AgQCRsOwotCQl9Ci0JCSRucl9saW5lID0gc2NhbGFyIEAkbDsKLQkJaWYgKCEkbnJfbGluZSkgewotCQkJcHJpbnQgIjEgbGluZVxuXG5cbiI7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoJG5yX2xpbmUgPT0gMSkgewotCQkJCSRucl9saW5lID0gJzEgbGluZSc7Ci0JCQl9IGVsc2UgewotCQkJCSRucl9saW5lIC49ICcgbGluZXMnOwotCQkJfQotCQkJcHJpbnQgJG5yX2xpbmUsICJcbiI7Ci0JCQlzaG93X2NvbW1pdF9jaGFuZ2VkX3BhdGhzKCRjKTsKLQkJCXByaW50ICJcbiI7Ci0JCQlwcmludCAkXyBmb3JlYWNoIEAkbDsKLQkJfQotCX0gZWxzZSB7Ci0JCXByaW50ICIxIGxpbmVcbiI7Ci0JCXNob3dfY29tbWl0X2NoYW5nZWRfcGF0aHMoJGMpOwotCQlwcmludCAiXG4iOwotCi0JfQotCWZvcmVhY2ggbXkgJHggKHF3L3JhdyBzdGF0IGRpZmYvKSB7Ci0JCWlmICgkYy0+eyR4fSkgewotCQkJcHJpbnQgIlxuIjsKLQkJCXByaW50ICRfIGZvcmVhY2ggQHskYy0+eyR4fX0KLQkJfQotCX0KLX0KLQotc3ViIGNtZF9zaG93X2xvZyB7Ci0JbXkgKEBhcmdzKSA9IEBfOwotCW15ICgkcl9taW4sICRyX21heCk7Ci0JbXkgJHJfbGFzdCA9IC0xOyAjIHByZXZlbnQgZHVwZXMKLQlzZXRfbG9jYWxfdGltZXpvbmUoKTsKLQlpZiAoZGVmaW5lZCAkOjpfcmV2aXNpb24pIHsKLQkJaWYgKCQ6Ol9yZXZpc2lvbiA9fiAvXihcZCspOihcZCspJC8pIHsKLQkJCSgkcl9taW4sICRyX21heCkgPSAoJDEsICQyKTsKLQkJfSBlbHNpZiAoJDo6X3JldmlzaW9uID1+IC9eXGQrJC8pIHsKLQkJCSRyX21pbiA9ICRyX21heCA9ICQ6Ol9yZXZpc2lvbjsKLQkJfSBlbHNlIHsKLQkJCTo6ZmF0YWwgIi1yJDo6X3JldmlzaW9uIGlzIG5vdCBzdXBwb3J0ZWQsIHVzZSAiLAotCQkJCSJzdGFuZGFyZCAnZ2l0IGxvZycgYXJndW1lbnRzIGluc3RlYWQiOwotCQl9Ci0JfQotCi0JY29uZmlnX3BhZ2VyKCk7Ci0JQGFyZ3MgPSBnaXRfc3ZuX2xvZ19jbWQoJHJfbWluLCAkcl9tYXgsIEBhcmdzKTsKLQlpZiAoIUBhcmdzKSB7Ci0JCXByaW50IGNvbW1pdF9sb2dfc2VwYXJhdG9yIHVubGVzcyAkaW5jcmVtZW50YWwgfHwgJG9uZWxpbmU7Ci0JCXJldHVybjsKLQl9Ci0JbXkgJGxvZyA9IGNvbW1hbmRfb3V0cHV0X3BpcGUoQGFyZ3MpOwotCXJ1bl9wYWdlcigpOwotCW15IChAaywgJGMsICRkLCAkc3RhdCk7Ci0JbXkgJGVzY19jb2xvciA9IHFyLyg/OlwwMzNcWyg/Oig/OlxkKzspKlxkKik/bSkqLzsKLQl3aGlsZSAoPCRsb2c+KSB7Ci0JCWlmICgvXiR7ZXNjX2NvbG9yfWNvbW1pdCAoPzotICk/KCQ6OnNoYTFfc2hvcnQpL28pIHsKLQkJCW15ICRjbXQgPSAkMTsKLQkJCWlmICgkYyAmJiBjbXRfc2hvd2FibGUoJGMpICYmICRjLT57cn0gIT0gJHJfbGFzdCkgewotCQkJCSRyX2xhc3QgPSAkYy0+e3J9OwotCQkJCXByb2Nlc3NfY29tbWl0KCRjLCAkcl9taW4sICRyX21heCwgXEBrKSBvcgotCQkJCQkJCQlnb3RvIG91dDsKLQkJCX0KLQkJCSRkID0gdW5kZWY7Ci0JCQkkYyA9IHsgYyA9PiAkY210IH07Ci0JCX0gZWxzaWYgKC9eJHtlc2NfY29sb3J9YXV0aG9yICguKykgKFxkKykgKFtcLVwrXT9cZCspJC9vKSB7Ci0JCQlnZXRfYXV0aG9yX2luZm8oJGMsICQxLCAkMiwgJDMpOwotCQl9IGVsc2lmICgvXiR7ZXNjX2NvbG9yfSg/OnRyZWV8cGFyZW50fGNvbW1pdHRlcikgL28pIHsKLQkJCSMgaWdub3JlCi0JCX0gZWxzaWYgKC9eJHtlc2NfY29sb3J9OlxkezZ9IFxkezZ9ICQ6OnNoYTFfc2hvcnQvbykgewotCQkJcHVzaCBAeyRjLT57cmF3fX0sICRfOwotCQl9IGVsc2lmICgvXiR7ZXNjX2NvbG9yfVtBQ1JNRFRdXHQvKSB7Ci0JCQkjIHdlIGNvdWxkIGFkZCAkU1ZOLT57c3ZuX3BhdGh9IGhlcmUsIGJ1dCB0aGF0IHJlcXVpcmVzCi0JCQkjIHJlbW90ZSBhY2Nlc3MgYXQgdGhlIG1vbWVudCAocmVwb19wYXRoX3NwbGl0KS4uLgotCQkJcyNeKCR7ZXNjX2NvbG9yfSkoW0FDUk1EVF0pXHQjJDEgICAkMiAjbzsKLQkJCXB1c2ggQHskYy0+e2NoYW5nZWR9fSwgJF87Ci0JCX0gZWxzaWYgKC9eJHtlc2NfY29sb3J9ZGlmZiAvbykgewotCQkJJGQgPSAxOwotCQkJcHVzaCBAeyRjLT57ZGlmZn19LCAkXzsKLQkJfSBlbHNpZiAoJGQpIHsKLQkJCXB1c2ggQHskYy0+e2RpZmZ9fSwgJF87Ci0JCX0gZWxzaWYgKC9eXCAuK1wgXHxccypcZCtcICRlc2NfY29sb3JbXCtcLV0qCi0JCSAgICAgICAgICAkZXNjX2NvbG9yKltcK1wtXSokZXNjX2NvbG9yJC94KSB7Ci0JCQkkc3RhdCA9IDE7Ci0JCQlwdXNoIEB7JGMtPntzdGF0fX0sICRfOwotCQl9IGVsc2lmICgkc3RhdCAmJiAvXiBcZCsgZmlsZXMgY2hhbmdlZCwgXGQrIGluc2VydGlvbnMvKSB7Ci0JCQlwdXNoIEB7JGMtPntzdGF0fX0sICRfOwotCQkJJHN0YXQgPSB1bmRlZjsKLQkJfSBlbHNpZiAoL14ke2VzY19jb2xvcn0gICAgKGdpdC1zdm4taWQ6LispJC9vKSB7Ci0JCQkoJGMtPnt1cmx9LCAkYy0+e3J9LCB1bmRlZikgPSA6OmV4dHJhY3RfbWV0YWRhdGEoJDEpOwotCQl9IGVsc2lmIChzL14ke2VzY19jb2xvcn0gICAgLy9vKSB7Ci0JCQlwdXNoIEB7JGMtPntsfX0sICRfOwotCQl9Ci0JfQotCWlmICgkYyAmJiBkZWZpbmVkICRjLT57cn0gJiYgJGMtPntyfSAhPSAkcl9sYXN0KSB7Ci0JCSRyX2xhc3QgPSAkYy0+e3J9OwotCQlwcm9jZXNzX2NvbW1pdCgkYywgJHJfbWluLCAkcl9tYXgsIFxAayk7Ci0JfQotCWlmIChAaykgewotCQkoJHJfbWluLCAkcl9tYXgpID0gKCRyX21heCwgJHJfbWluKTsKLQkJcHJvY2Vzc19jb21taXQoJF8sICRyX21pbiwgJHJfbWF4KSBmb3JlYWNoIHJldmVyc2UgQGs7Ci0JfQotb3V0OgotCWNsb3NlICRsb2c7Ci0JcHJpbnQgY29tbWl0X2xvZ19zZXBhcmF0b3IgdW5sZXNzICRpbmNyZW1lbnRhbCB8fCAkb25lbGluZTsKLX0KLQotc3ViIGNtZF9ibGFtZSB7Ci0JbXkgJHBhdGggPSBwb3A7Ci0KLQljb25maWdfcGFnZXIoKTsKLQlydW5fcGFnZXIoKTsKLQotCW15ICgkZmgsICRjdHgsICRyZXYpOwotCi0JaWYgKCRfZ2l0X2Zvcm1hdCkgewotCQkoJGZoLCAkY3R4KSA9IGNvbW1hbmRfb3V0cHV0X3BpcGUoJ2JsYW1lJywgQF8sICRwYXRoKTsKLQkJd2hpbGUgKG15ICRsaW5lID0gPCRmaD4pIHsKLQkJCWlmICgkbGluZSA9fiAvXlxePyhbWzp4ZGlnaXQ6XV0rKVxzLykgewotCQkJCSMgVW5jb21taXR0ZWQgZWRpdHMgc2hvdyB1cCBhcyBhIHJldiBJRCBvZgotCQkJCSMgYWxsIHplcm9zLCB3aGljaCB3ZSBjYW4ndCBsb29rIHVwIHdpdGgKLQkJCQkjIGNtdF9tZXRhZGF0YQotCQkJCWlmICgkMSAhfiAvXjArJC8pIHsKLQkJCQkJKHVuZGVmLCAkcmV2LCB1bmRlZikgPQotCQkJCQkJOjpjbXRfbWV0YWRhdGEoJDEpOwotCQkJCQkkcmV2ID0gJzAnIGlmICghJHJldik7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJJHJldiA9ICcwJzsKLQkJCQl9Ci0JCQkJJHJldiA9IHNwcmludGYoJyUtMTBzJywgJHJldik7Ci0JCQkJJGxpbmUgPX4gcy9eXF4/W1s6eGRpZ2l0Ol1dKyhccykvJHJldiQxLzsKLQkJCX0KLQkJCXByaW50ICRsaW5lOwotCQl9Ci0JfSBlbHNlIHsKLQkJKCRmaCwgJGN0eCkgPSBjb21tYW5kX291dHB1dF9waXBlKCdibGFtZScsICctcCcsIEBfLCAnSEVBRCcsCi0JCQkJCQkgICctLScsICRwYXRoKTsKLQkJbXkgKCRzaGExKTsKLQkJbXkgJWF1dGhvcnM7Ci0JCW15IEBidWZmZXI7Ci0JCW15ICVkc2hhOyAjZGlzdGluY3Qgc2hhIGtleXMKLQotCQl3aGlsZSAobXkgJGxpbmUgPSA8JGZoPikgewotCQkJcHVzaCBAYnVmZmVyLCAkbGluZTsKLQkJCWlmICgkbGluZSA9fiAvXihbWzp4ZGlnaXQ6XV17NDB9KVxzXGQrXHNcZCsvKSB7Ci0JCQkJJGRzaGF7JDF9ID0gMTsKLQkJCX0KLQkJfQotCi0JCW15ICRzMnIgPSA6OmNtdF9zaGEycmV2X2JhdGNoKFtrZXlzICVkc2hhXSk7Ci0KLQkJZm9yZWFjaCBteSAkbGluZSAoQGJ1ZmZlcikgewotCQkJaWYgKCRsaW5lID1+IC9eKFtbOnhkaWdpdDpdXXs0MH0pXHNcZCtcc1xkKy8pIHsKLQkJCQkkcmV2ID0gJHMyci0+eyQxfTsKLQkJCQkkcmV2ID0gJzAnIGlmICghJHJldikKLQkJCX0KLQkJCWVsc2lmICgkbGluZSA9fiAvXmF1dGhvciAoLiopLykgewotCQkJCSRhdXRob3JzeyRyZXZ9ID0gJDE7Ci0JCQkJJGF1dGhvcnN7JHJldn0gPX4gcy9ccy9fL2c7Ci0JCQl9Ci0JCQllbHNpZiAoJGxpbmUgPX4gL15cdCguKikkLykgewotCQkJCXByaW50ZigiJTZzICUxMHMgJXNcbiIsICRyZXYsICRhdXRob3JzeyRyZXZ9LCAkMSk7Ci0JCQl9Ci0JCX0KLQl9Ci0JY29tbWFuZF9jbG9zZV9waXBlKCRmaCwgJGN0eCk7Ci19Ci0KLXBhY2thZ2UgR2l0OjpTVk46Ok1pZ3JhdGlvbjsKLSMgdGhlc2UgdmVyc2lvbiBudW1iZXJzIGRvIE5PVCBjb3JyZXNwb25kIHRvIGFjdHVhbCB2ZXJzaW9uIG51bWJlcnMKLSMgb2YgZ2l0IG5vciBnaXQtc3ZuLiAgVGhleSBhcmUganVzdCByZWxhdGl2ZS4KLSMKLSMgdjAgbGF5b3V0OiAuZ2l0LyRpZC9pbmZvL3VybCwgcmVmcy9oZWFkcy8kaWQtSEVBRAotIwotIyB2MSBsYXlvdXQ6IC5naXQvJGlkL2luZm8vdXJsLCByZWZzL3JlbW90ZXMvJGlkCi0jCi0jIHYyIGxheW91dDogLmdpdC9zdm4vJGlkL2luZm8vdXJsLCByZWZzL3JlbW90ZXMvJGlkCi0jCi0jIHYzIGxheW91dDogLmdpdC9zdm4vJGlkLCByZWZzL3JlbW90ZXMvJGlkCi0jICAgICAgICAgICAgLSBpbmZvL3VybCBtYXkgcmVtYWluIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQotIyAgICAgICAgICAgIC0gdGhpcyBpcyB3aGF0IHdlIG1pZ3JhdGUgdXAgdG8gdGhpcyBsYXlvdXQgYXV0b21hdGljYWxseSwKLSMgICAgICAgICAgICAtIHRoaXMgd2lsbCBiZSB1c2VkIGJ5IGdpdCBzdm4gaW5pdCBvbiBzaW5nbGUgYnJhbmNoZXMKLSMgdjMuMSBsYXlvdXQgKGF1dG8gbWlncmF0ZWQpOgotIyAgICAgICAgICAgIC0gLnJldl9kYiA9PiAucmV2X2RiLiRVVUlELCAucmV2X2RiIHdpbGwgcmVtYWluIGFzIGEgc3ltbGluawotIyAgICAgICAgICAgICAgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5Ci0jCi0jIHY0IGxheW91dDogLmdpdC9zdm4vJHJlcG9faWQvJGlkLCByZWZzL3JlbW90ZXMvJHJlcG9faWQvJGlkCi0jICAgICAgICAgICAgLSB0aGlzIGlzIG9ubHkgY3JlYXRlZCBmb3IgbmV3bHkgbXVsdGktaW5pdC1lZAotIyAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLiAgU2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlCi0jICAgICAgICAgICAgICAtLXVzZS1zZXBhcmF0ZS1yZW1vdGVzIG9wdGlvbiBpbiBnaXQtY2xvbmUgKG5vdyBkZWZhdWx0KQotIyAgICAgICAgICAgIC0gd2UgZG8gbm90IGF1dG9tYXRpY2FsbHkgbWlncmF0ZSB0byB0aGlzIChmb2xsb3dpbmcKLSMgICAgICAgICAgICAgIHRoZSBleGFtcGxlIHNldCBieSBjb3JlIGdpdCkKLSMKLSMgdjUgbGF5b3V0OiAucmV2X2RiLiRVVUlEID0+IC5yZXZfbWFwLiRVVUlECi0jICAgICAgICAgICAgLSBuZXdlciwgbW9yZS1lZmZpY2llbnQgZm9ybWF0IHRoYXQgdXNlcyAyNC1ieXRlcyBwZXIgcmVjb3JkCi0jICAgICAgICAgICAgICB3aXRoIG5vIGZpbGxlciBzcGFjZS4KLSMgICAgICAgICAgICAtIHVzZSB4eGQgLWMyNCA8IC5yZXZfbWFwLiRVVUlEIHRvIHZpZXcgYW5kIGRlYnVnCi0jICAgICAgICAgICAgLSBUaGlzIGlzIGEgb25lLXdheSBtaWdyYXRpb24sIHJlcG9zaXRvcmllcyB1cGRhdGVkIHRvIHRoZQotIyAgICAgICAgICAgICAgbmV3IGZvcm1hdCB3aWxsIG5vdCBiZSBhYmxlIHRvIHVzZSBvbGQgZ2l0LXN2biB3aXRob3V0Ci0jICAgICAgICAgICAgICByZWJ1aWxkaW5nIHRoZSAucmV2X2RiLiAgUmVidWlsZGluZyB0aGUgcmV2X2RiIGlzIG5vdAotIyAgICAgICAgICAgICAgcG9zc2libGUgaWYgbm9NZXRhZGF0YSBvciB1c2VTdm1Qcm9wcyBhcmUgc2V0OyBidXQgc2hvdWxkCi0jICAgICAgICAgICAgICBiZSBubyBwcm9ibGVtIGZvciB1c2VycyB0aGF0IHVzZSB0aGUgKHNlbnNpYmxlKSBkZWZhdWx0cy4KLXVzZSBzdHJpY3Q7Ci11c2Ugd2FybmluZ3M7Ci11c2UgQ2FycCBxdy9jcm9hay87Ci11c2UgRmlsZTo6UGF0aCBxdy9ta3BhdGgvOwotdXNlIEZpbGU6OkJhc2VuYW1lIHF3L2Rpcm5hbWUgYmFzZW5hbWUvOwotdXNlIHZhcnMgcXcvJF9taW5pbWl6ZS87Ci0KLXN1YiBtaWdyYXRlX2Zyb21fdjAgewotCW15ICRnaXRfZGlyID0gJEVOVntHSVRfRElSfTsKLQlyZXR1cm4gdW5kZWYgdW5sZXNzIC1kICRnaXRfZGlyOwotCW15ICgkZmgsICRjdHgpID0gY29tbWFuZF9vdXRwdXRfcGlwZShxdy9yZXYtcGFyc2UgLS1zeW1ib2xpYyAtLWFsbC8pOwotCW15ICRtaWdyYXRlZCA9IDA7Ci0Jd2hpbGUgKDwkZmg+KSB7Ci0JCWNob21wOwotCQlteSAoJGlkLCAkb3JpZ19yZWYpID0gKCRfLCAkXyk7Ci0JCW5leHQgdW5sZXNzICRpZCA9fiBzI15yZWZzL2hlYWRzLyguKyktSEVBRCQjJDEjOwotCQluZXh0IHVubGVzcyAtZiAiJGdpdF9kaXIvJGlkL2luZm8vdXJsIjsKLQkJbXkgJG5ld19yZWYgPSAicmVmcy9yZW1vdGVzLyRpZCI7Ci0JCWlmICg6OnZlcmlmeV9yZWYoIiRuZXdfcmVmXjAiKSkgewotCQkJcHJpbnQgU1RERVJSICJXOiAkb3JpZ19yZWYgaXMgcHJvYmFibHkgYW4gb2xkICIsCi0JCQkgICAgICAgICAgICAgImJyYW5jaCB1c2VkIGJ5IGFuIGFuY2llbnQgdmVyc2lvbiBvZiAiLAotCQkJCSAgICAgImdpdC1zdm4uXG4iLAotCQkJCSAgICAgIkhvd2V2ZXIsICRuZXdfcmVmIGFsc28gZXhpc3RzLlxuIiwKLQkJCQkgICAgICJXZSB3aWxsIG5vdCBiZSBhYmxlICIsCi0JCQkJICAgICAidG8gdXNlIHRoaXMgYnJhbmNoIHVudGlsIHRoaXMgIiwKLQkJCQkgICAgICJhbWJpZ3VpdHkgaXMgcmVzb2x2ZWQuXG4iOwotCQkJbmV4dDsKLQkJfQotCQlwcmludCBTVERFUlIgIk1pZ3JhdGluZyBmcm9tIHYwIGxheW91dC4uLlxuIiBpZiAhJG1pZ3JhdGVkOwotCQlwcmludCBTVERFUlIgIlJlbmFtaW5nIHJlZjogJG9yaWdfcmVmID0+ICRuZXdfcmVmXG4iOwotCQljb21tYW5kX25vaXN5KCd1cGRhdGUtcmVmJywgJG5ld19yZWYsICRvcmlnX3JlZik7Ci0JCWNvbW1hbmRfbm9pc3koJ3VwZGF0ZS1yZWYnLCAnLWQnLCAkb3JpZ19yZWYsICRvcmlnX3JlZik7Ci0JCSRtaWdyYXRlZCsrOwotCX0KLQljb21tYW5kX2Nsb3NlX3BpcGUoJGZoLCAkY3R4KTsKLQlwcmludCBTVERFUlIgIkRvbmUgbWlncmF0aW5nIGZyb20gdjAgbGF5b3V0Li4uXG4iIGlmICRtaWdyYXRlZDsKLQkkbWlncmF0ZWQ7Ci19Ci0KLXN1YiBtaWdyYXRlX2Zyb21fdjEgewotCW15ICRnaXRfZGlyID0gJEVOVntHSVRfRElSfTsKLQlteSAkbWlncmF0ZWQgPSAwOwotCXJldHVybiAkbWlncmF0ZWQgdW5sZXNzIC1kICRnaXRfZGlyOwotCW15ICRzdm5fZGlyID0gIiRnaXRfZGlyL3N2biI7Ci0KLQkjIGp1c3QgaW4gY2FzZSBzb21lYm9keSB1c2VkICdzdm4nIGFzIHRoZWlyICRpZCBhdCBzb21lIHBvaW50Li4uCi0JcmV0dXJuICRtaWdyYXRlZCBpZiAtZCAkc3ZuX2RpciAmJiAhIC1mICIkc3ZuX2Rpci9pbmZvL3VybCI7Ci0KLQlwcmludCBTVERFUlIgIk1pZ3JhdGluZyBmcm9tIGEgZ2l0LXN2biB2MSBsYXlvdXQuLi5cbiI7Ci0JbWtwYXRoKFskc3ZuX2Rpcl0pOwotCXByaW50IFNUREVSUiAiRGF0YSBmcm9tIGEgcHJldmlvdXMgdmVyc2lvbiBvZiBnaXQtc3ZuIGV4aXN0cywgYnV0XG5cdCIsCi0JICAgICAgICAgICAgICIkc3ZuX2RpclxuXHQocmVxdWlyZWQgZm9yIHRoaXMgdmVyc2lvbiAiLAotCSAgICAgICAgICAgICAiKCQ6OlZFUlNJT04pIG9mIGdpdC1zdm4pIGRvZXMgbm90IGV4aXN0LlxuIjsKLQlteSAoJGZoLCAkY3R4KSA9IGNvbW1hbmRfb3V0cHV0X3BpcGUocXcvcmV2LXBhcnNlIC0tc3ltYm9saWMgLS1hbGwvKTsKLQl3aGlsZSAoPCRmaD4pIHsKLQkJbXkgJHggPSAkXzsKLQkJbmV4dCB1bmxlc3MgJHggPX4gcyNecmVmcy9yZW1vdGVzLyMjOwotCQljaG9tcCAkeDsKLQkJbmV4dCB1bmxlc3MgLWYgIiRnaXRfZGlyLyR4L2luZm8vdXJsIjsKLQkJbXkgJHUgPSBldmFsIHsgOjpmaWxlX3RvX3MoIiRnaXRfZGlyLyR4L2luZm8vdXJsIikgfTsKLQkJbmV4dCB1bmxlc3MgJHU7Ci0JCW15ICRkbiA9IGRpcm5hbWUoIiRnaXRfZGlyL3N2bi8keCIpOwotCQlta3BhdGgoWyRkbl0pIHVubGVzcyAtZCAkZG47Ci0JCWlmICgkeCBlcSAnc3ZuJykgeyAjIHRoZXkgdXNlZCAnc3ZuJyBhcyBHSVRfU1ZOX0lEOgotCQkJbWtwYXRoKFsiJGdpdF9kaXIvc3ZuL3N2biJdKTsKLQkJCXByaW50IFNUREVSUiAiIC0gJGdpdF9kaXIvJHgvaW5mbyA9PiAiLAotCQkJICAgICAgICAgICAgICAgICIkZ2l0X2Rpci9zdm4vJHgvaW5mb1xuIjsKLQkJCXJlbmFtZSAiJGdpdF9kaXIvJHgvaW5mbyIsICIkZ2l0X2Rpci9zdm4vJHgvaW5mbyIgb3IKLQkJCSAgICAgICBjcm9hayAiJCE6ICR4IjsKLQkJCSMgZG9uJ3Qgd29ycnkgdG9vIG11Y2ggYWJvdXQgdGhlc2UsIHRoZXkgcHJvYmFibHkKLQkJCSMgZG9uJ3QgZXhpc3Qgd2l0aCByZXBvcyB0aGlzIG9sZCAoc2F2ZSBmb3IgaW5kZXgsCi0JCQkjIGFuZCB3ZSBjYW4gZWFzaWx5IHJlZ2VuZXJhdGUgdGhhdCkKLQkJCWZvcmVhY2ggbXkgJGYgKHF3L3VuaGFuZGxlZC5sb2cgaW5kZXggLnJldl9kYi8pIHsKLQkJCQlyZW5hbWUgIiRnaXRfZGlyLyR4LyRmIiwgIiRnaXRfZGlyL3N2bi8keC8kZiI7Ci0JCQl9Ci0JCX0gZWxzZSB7Ci0JCQlwcmludCBTVERFUlIgIiAtICRnaXRfZGlyLyR4ID0+ICRnaXRfZGlyL3N2bi8keFxuIjsKLQkJCXJlbmFtZSAiJGdpdF9kaXIvJHgiLCAiJGdpdF9kaXIvc3ZuLyR4IiBvcgotCQkJICAgICAgIGNyb2FrICIkITogJHgiOwotCQl9Ci0JCSRtaWdyYXRlZCsrOwotCX0KLQljb21tYW5kX2Nsb3NlX3BpcGUoJGZoLCAkY3R4KTsKLQlwcmludCBTVERFUlIgIkRvbmUgbWlncmF0aW5nIGZyb20gYSBnaXQtc3ZuIHYxIGxheW91dFxuIjsKLQkkbWlncmF0ZWQ7Ci19Ci0KLXN1YiByZWFkX29sZF91cmxzIHsKLQlteSAoJGxfbWFwLCAkcGZ4LCAkcGF0aCkgPSBAXzsKLQlteSBAZGlyOwotCWZvcmVhY2ggKDwkcGF0aC8qPikgewotCQlpZiAoLXIgIiRfL2luZm8vdXJsIikgewotCQkJJHBmeCAuPSAnLycgaWYgJHBmeCAmJiAkcGZ4ICF+IG0hLyQhOwotCQkJbXkgJHJlZl9pZCA9ICRwZnggLiBiYXNlbmFtZSAkXzsKLQkJCW15ICR1cmwgPSA6OmZpbGVfdG9fcygiJF8vaW5mby91cmwiKTsKLQkJCSRsX21hcC0+eyRyZWZfaWR9ID0gJHVybDsKLQkJfSBlbHNpZiAoLWQgJF8pIHsKLQkJCXB1c2ggQGRpciwgJF87Ci0JCX0KLQl9Ci0JZm9yZWFjaCAoQGRpcikgewotCQlteSAkeCA9ICRfOwotCQkkeCA9fiBzIV5cUSRFTlZ7R0lUX0RJUn1cRS9zdm4vISFvOwotCQlyZWFkX29sZF91cmxzKCRsX21hcCwgJHgsICRfKTsKLQl9Ci19Ci0KLXN1YiBtaWdyYXRlX2Zyb21fdjIgewotCW15IEBjZmcgPSBjb21tYW5kKHF3L2NvbmZpZyAtbC8pOwotCXJldHVybiBpZiBncmVwIC9ec3ZuLXJlbW90ZVwuLitcLnVybD0vLCBAY2ZnOwotCW15ICVsX21hcDsKLQlyZWFkX29sZF91cmxzKFwlbF9tYXAsICcnLCAiJEVOVntHSVRfRElSfS9zdm4iKTsKLQlteSAkbWlncmF0ZWQgPSAwOwotCi0JZm9yZWFjaCBteSAkcmVmX2lkIChzb3J0IGtleXMgJWxfbWFwKSB7Ci0JCWV2YWwgeyBHaXQ6OlNWTi0+aW5pdCgkbF9tYXB7JHJlZl9pZH0sICcnLCB1bmRlZiwgJHJlZl9pZCkgfTsKLQkJaWYgKCRAKSB7Ci0JCQlHaXQ6OlNWTi0+aW5pdCgkbF9tYXB7JHJlZl9pZH0sICcnLCAkcmVmX2lkLCAkcmVmX2lkKTsKLQkJfQotCQkkbWlncmF0ZWQrKzsKLQl9Ci0JJG1pZ3JhdGVkOwotfQotCi1zdWIgbWluaW1pemVfY29ubmVjdGlvbnMgewotCW15ICRyID0gR2l0OjpTVk46OnJlYWRfYWxsX3JlbW90ZXMoKTsKLQlteSAkbmV3X3VybHMgPSB7fTsKLQlteSAkcm9vdF9yZXBvcyA9IHt9OwotCWZvcmVhY2ggbXkgJHJlcG9faWQgKGtleXMgJSRyKSB7Ci0JCW15ICR1cmwgPSAkci0+eyRyZXBvX2lkfS0+e3VybH0gb3IgbmV4dDsKLQkJbXkgJGZldGNoID0gJHItPnskcmVwb19pZH0tPntmZXRjaH0gb3IgbmV4dDsKLQkJbXkgJHJhID0gR2l0OjpTVk46OlJhLT5uZXcoJHVybCk7Ci0KLQkJIyBza2lwIGV4aXN0aW5nIGNhc2VzIHdoZXJlIHdlIGFscmVhZHkgY29ubmVjdCB0byB0aGUgcm9vdAotCQlpZiAoKCRyYS0+e3VybH0gZXEgJHJhLT57cmVwb3Nfcm9vdH0pIHx8Ci0JCSAgICAoJHJhLT57cmVwb3Nfcm9vdH0gZXEgJHJlcG9faWQpKSB7Ci0JCQkkcm9vdF9yZXBvcy0+eyRyYS0+e3VybH19ID0gJHJlcG9faWQ7Ci0JCQluZXh0OwotCQl9Ci0KLQkJbXkgJHJvb3RfcmEgPSBHaXQ6OlNWTjo6UmEtPm5ldygkcmEtPntyZXBvc19yb290fSk7Ci0JCW15ICRyb290X3BhdGggPSAkcmEtPnt1cmx9OwotCQkkcm9vdF9wYXRoID1+IHMjXlxRJHJhLT57cmVwb3Nfcm9vdH1cRSgvfCQpIyM7Ci0JCWZvcmVhY2ggbXkgJHBhdGggKGtleXMgJSRmZXRjaCkgewotCQkJbXkgJHJlZl9pZCA9ICRmZXRjaC0+eyRwYXRofTsKLQkJCW15ICRncyA9IEdpdDo6U1ZOLT5uZXcoJHJlZl9pZCwgJHJlcG9faWQsICRwYXRoKTsKLQotCQkJIyBtYWtlIHN1cmUgd2UgY2FuIHJlYWQgd2hlbiBjb25uZWN0aW5nIHRvCi0JCQkjIGEgaGlnaGVyIGxldmVsIG9mIGEgcmVwb3NpdG9yeQotCQkJbXkgKCRsYXN0X3JldiwgdW5kZWYpID0gJGdzLT5sYXN0X3Jldl9jb21taXQ7Ci0JCQlpZiAoIWRlZmluZWQgJGxhc3RfcmV2KSB7Ci0JCQkJJGxhc3RfcmV2ID0gZXZhbCB7Ci0JCQkJCSRyb290X3JhLT5nZXRfbGF0ZXN0X3Jldm51bTsKLQkJCQl9OwotCQkJCW5leHQgaWYgJEA7Ci0JCQl9Ci0JCQlteSAkbmV3ID0gJHJvb3RfcGF0aDsKLQkJCSRuZXcgLj0gbGVuZ3RoICRwYXRoID8gIi8kcGF0aCIgOiAnJzsKLQkJCWV2YWwgewotCQkJCSRyb290X3JhLT5nZXRfbG9nKFskbmV3XSwgJGxhc3RfcmV2LCAkbGFzdF9yZXYsCi0JCQkgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDEsIHN1YiB7IH0pOwotCQkJfTsKLQkJCW5leHQgaWYgJEA7Ci0JCQkkbmV3X3VybHMtPnskcmEtPntyZXBvc19yb290fX0tPnskbmV3fSA9Ci0JCQkgICAgICAgIHsgcmVmX2lkID0+ICRyZWZfaWQsCi0JCQkJICBvbGRfcmVwb19pZCA9PiAkcmVwb19pZCwKLQkJCQkgIG9sZF9wYXRoID0+ICRwYXRoIH07Ci0JCX0KLQl9Ci0KLQlteSBAZW1wdGllZDsKLQlmb3JlYWNoIG15ICR1cmwgKGtleXMgJSRuZXdfdXJscykgewotCQkjIHNlZSBpZiB3ZSBjYW4gcmUtdXNlIGFuIGV4aXN0aW5nIFtzdm4tcmVtb3RlICJyZXBvX2lkIl0KLQkJIyBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEobiB1Z2x5KSBuZXcgc2VjdGlvbjoKLQkJbXkgJHJlcG9faWQgPSAkcm9vdF9yZXBvcy0+eyR1cmx9IHx8ICR1cmw7Ci0KLQkJbXkgJGZldGNoID0gJG5ld191cmxzLT57JHVybH07Ci0JCWZvcmVhY2ggbXkgJHBhdGggKGtleXMgJSRmZXRjaCkgewotCQkJbXkgJHggPSAkZmV0Y2gtPnskcGF0aH07Ci0JCQlHaXQ6OlNWTi0+aW5pdCgkdXJsLCAkcGF0aCwgJHJlcG9faWQsICR4LT57cmVmX2lkfSk7Ci0JCQlteSAkcGZ4ID0gInN2bi1yZW1vdGUuJHgtPntvbGRfcmVwb19pZH0iOwotCi0JCQlteSAkb2xkX2ZldGNoID0gcXVvdGVtZXRhKCIkeC0+e29sZF9wYXRofToiLgotCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAiJHgtPntyZWZfaWR9Iik7Ci0JCQljb21tYW5kX25vaXN5KHF3L2NvbmZpZyAtLXVuc2V0LywKLQkJCSAgICAgICAgICAgICAgIiRwZnguZmV0Y2giLCAnXicuICRvbGRfZmV0Y2ggLiAnJCcpOwotCQkJZGVsZXRlICRyLT57JHgtPntvbGRfcmVwb19pZH19LT4KLQkJCSAgICAgICB7ZmV0Y2h9LT57JHgtPntvbGRfcGF0aH19OwotCQkJaWYgKCFrZXlzICV7JHItPnskeC0+e29sZF9yZXBvX2lkfX0tPntmZXRjaH19KSB7Ci0JCQkJY29tbWFuZF9ub2lzeShxdy9jb25maWcgLS11bnNldC8sCi0JCQkJICAgICAgICAgICAgICAiJHBmeC51cmwiKTsKLQkJCQlwdXNoIEBlbXB0aWVkLCAkeC0+e29sZF9yZXBvX2lkfQotCQkJfQotCQl9Ci0JfQotCWlmIChAZW1wdGllZCkgewotCQlteSAkZmlsZSA9ICRFTlZ7R0lUX0NPTkZJR30gfHwgIiRFTlZ7R0lUX0RJUn0vY29uZmlnIjsKLQkJcHJpbnQgU1RERVJSIDw8RU9GOwotVGhlIGZvbGxvd2luZyBbc3ZuLXJlbW90ZV0gc2VjdGlvbnMgaW4geW91ciBjb25maWcgZmlsZSAoJGZpbGUpIGFyZSBlbXB0eQotYW5kIGNhbiBiZSBzYWZlbHkgcmVtb3ZlZDoKLUVPRgotCQlwcmludCBTVERFUlIgIltzdm4tcmVtb3RlIFwiJF9cIl1cbiIgZm9yZWFjaCBAZW1wdGllZDsKLQl9Ci19Ci0KLXN1YiBtaWdyYXRpb25fY2hlY2sgewotCW1pZ3JhdGVfZnJvbV92MCgpOwotCW1pZ3JhdGVfZnJvbV92MSgpOwotCW1pZ3JhdGVfZnJvbV92MigpOwotCW1pbmltaXplX2Nvbm5lY3Rpb25zKCkgaWYgJF9taW5pbWl6ZTsKLX0KLQotcGFja2FnZSBHaXQ6OkluZGV4SW5mbzsKLXVzZSBzdHJpY3Q7Ci11c2Ugd2FybmluZ3M7Ci11c2UgR2l0IHF3L2NvbW1hbmRfaW5wdXRfcGlwZSBjb21tYW5kX2Nsb3NlX3BpcGUvOwotCi1zdWIgbmV3IHsKLQlteSAoJGNsYXNzKSA9IEBfOwotCW15ICgkZ3VpLCAkY3R4KSA9IGNvbW1hbmRfaW5wdXRfcGlwZShxdy91cGRhdGUtaW5kZXggLXogLS1pbmRleC1pbmZvLyk7Ci0JYmxlc3MgeyBndWkgPT4gJGd1aSwgY3R4ID0+ICRjdHgsIG5yID0+IDB9LCAkY2xhc3M7Ci19Ci0KLXN1YiByZW1vdmUgewotCW15ICgkc2VsZiwgJHBhdGgpID0gQF87Ci0JaWYgKHByaW50IHsgJHNlbGYtPntndWl9IH0gJzAgJywgMCB4IDQwLCAiXHQiLCAkcGF0aCwgIlwwIikgewotCQlyZXR1cm4gKyskc2VsZi0+e25yfTsKLQl9Ci0JdW5kZWY7Ci19Ci0KLXN1YiB1cGRhdGUgewotCW15ICgkc2VsZiwgJG1vZGUsICRoYXNoLCAkcGF0aCkgPSBAXzsKLQlpZiAocHJpbnQgeyAkc2VsZi0+e2d1aX0gfSAkbW9kZSwgJyAnLCAkaGFzaCwgIlx0IiwgJHBhdGgsICJcMCIpIHsKLQkJcmV0dXJuICsrJHNlbGYtPntucn07Ci0JfQotCXVuZGVmOwotfQotCi1zdWIgREVTVFJPWSB7Ci0JbXkgKCRzZWxmKSA9IEBfOwotCWNvbW1hbmRfY2xvc2VfcGlwZSgkc2VsZi0+e2d1aX0sICRzZWxmLT57Y3R4fSk7Ci19Ci0KLXBhY2thZ2UgR2l0OjpTVk46Okdsb2JTcGVjOwotdXNlIHN0cmljdDsKLXVzZSB3YXJuaW5nczsKLQotc3ViIG5ldyB7Ci0JbXkgKCRjbGFzcywgJGdsb2IsICRwYXR0ZXJuX29rKSA9IEBfOwotCW15ICRyZSA9ICRnbG9iOwotCSRyZSA9fiBzIS8rJCEhZzsgIyBubyBuZWVkIGZvciB0cmFpbGluZyBzbGFzaGVzCi0JbXkgKEBsZWZ0LCBAcmlnaHQsIEBwYXR0ZXJucyk7Ci0JbXkgJHN0YXRlID0gImxlZnQiOwotCW15ICRkaWVfbXNnID0gIk9ubHkgb25lIHNldCBvZiB3aWxkY2FyZCBkaXJlY3RvcmllcyAiIC4KLQkJCQkiKGUuZy4gJyonIG9yICcqLyovKicpIGlzIHN1cHBvcnRlZDogJyRnbG9iJ1xuIjsKLQlmb3IgbXkgJHBhcnQgKHNwbGl0KG18L3wsICRnbG9iKSkgewotCQlpZiAoJHBhcnQgPX4gL1wqLyAmJiAkcGFydCBuZSAiKiIpIHsKLQkJCWRpZSAiSW52YWxpZCBwYXR0ZXJuIGluICckZ2xvYic6ICRwYXJ0XG4iOwotCQl9IGVsc2lmICgkcGF0dGVybl9vayAmJiAkcGFydCA9fiAvW3t9XS8gJiYKLQkJCSAkcGFydCAhfiAvXlx7W157fV0rXH0vKSB7Ci0JCQlkaWUgIkludmFsaWQgcGF0dGVybiBpbiAnJGdsb2InOiAkcGFydFxuIjsKLQkJfQotCQlpZiAoJHBhcnQgZXEgIioiKSB7Ci0JCQlkaWUgJGRpZV9tc2cgaWYgJHN0YXRlIGVxICJyaWdodCI7Ci0JCQkkc3RhdGUgPSAicGF0dGVybiI7Ci0JCQlwdXNoKEBwYXR0ZXJucywgIlteL10qIik7Ci0JCX0gZWxzaWYgKCRwYXR0ZXJuX29rICYmICRwYXJ0ID1+IC9eXHsoLiopXH0kLykgewotCQkJZGllICRkaWVfbXNnIGlmICRzdGF0ZSBlcSAicmlnaHQiOwotCQkJJHN0YXRlID0gInBhdHRlcm4iOwotCQkJbXkgJHAgPSBxdW90ZW1ldGEoJDEpOwotCQkJJHAgPX4gcy9cXCwvfC9nOwotCQkJcHVzaChAcGF0dGVybnMsICIoPzokcCkiKTsKLQkJfSBlbHNlIHsKLQkJCWlmICgkc3RhdGUgZXEgImxlZnQiKSB7Ci0JCQkJcHVzaChAbGVmdCwgJHBhcnQpOwotCQkJfSBlbHNlIHsKLQkJCQlwdXNoKEByaWdodCwgJHBhcnQpOwotCQkJCSRzdGF0ZSA9ICJyaWdodCI7Ci0JCQl9Ci0JCX0KLQl9Ci0JbXkgJGRlcHRoID0gQHBhdHRlcm5zOwotCWlmICgkZGVwdGggPT0gMCkgewotCQlkaWUgIk9uZSAnKicgaXMgbmVlZGVkIGluIGdsb2I6ICckZ2xvYidcbiI7Ci0JfQotCW15ICRsZWZ0ID0gam9pbignLycsIEBsZWZ0KTsKLQlteSAkcmlnaHQgPSBqb2luKCcvJywgQHJpZ2h0KTsKLQkkcmUgPSBqb2luKCcvJywgQHBhdHRlcm5zKTsKLQkkcmUgPSBqb2luKCdcLycsCi0JCSAgIGdyZXAobGVuZ3RoLCBxdW90ZW1ldGEoJGxlZnQpLCAiKCRyZSkiLCBxdW90ZW1ldGEoJHJpZ2h0KSkpOwotCW15ICRsZWZ0X3JlID0gcXIvXlwvXFEkbGVmdFxFKFwvfCQpLzsKLQlibGVzcyB7IGxlZnQgPT4gJGxlZnQsIHJpZ2h0ID0+ICRyaWdodCwgbGVmdF9yZWdleCA9PiAkbGVmdF9yZSwKLQkgICAgICAgIHJlZ2V4ID0+IHFyLyRyZS8sIGdsb2IgPT4gJGdsb2IsIGRlcHRoID0+ICRkZXB0aCB9LCAkY2xhc3M7Ci19Ci0KLXN1YiBmdWxsX3BhdGggewotCW15ICgkc2VsZiwgJHBhdGgpID0gQF87Ci0JcmV0dXJuIChsZW5ndGggJHNlbGYtPntsZWZ0fSA/ICIkc2VsZi0+e2xlZnR9LyIgOiAnJykgLgotCSAgICAgICAkcGF0aCAuIChsZW5ndGggJHNlbGYtPntyaWdodH0gPyAiLyRzZWxmLT57cmlnaHR9IiA6ICcnKTsKLX0KLQogX19FTkRfXwogCiBEYXRhIHN0cnVjdHVyZXM6CmRpZmYgLS1naXQgYS9naXQtd2ViLS1icm93c2Uuc2ggYi9naXQtd2ViLS1icm93c2Uuc2gKaW5kZXggMWU4MjcyNi4uOWY0NDY3OSAxMDA3NTUKLS0tIGEvZ2l0LXdlYi0tYnJvd3NlLnNoCisrKyBiL2dpdC13ZWItLWJyb3dzZS5zaApAQCAtMTE5LDggKzExOSw4IEBACiAJCWJyb3dzZXJfY2FuZGlkYXRlcz0idzNtIGVsaW5rcyBsaW5rcyBseW54IgogCWZpCiAJIyBTRUNVUklUWVNFU1NJT05JRCBpbmRpY2F0ZXMgYW4gT1MgWCBHVUkgbG9naW4gc2Vzc2lvbgotCWlmIHRlc3QgLW4gIiRTRUNVUklUWVNFU1NJT05JRCIgXAotCQktbyAiJFRFUk1fUFJPR1JBTSIgPSAiQXBwbGVfVGVybWluYWwiIDsgdGhlbgorCWlmIHRlc3QgLW4gIiRTRUNVUklUWVNFU1NJT05JRCIgfHwgdGVzdCAtbiAiJFRFUk1fUFJPR1JBTSIKKwl0aGVuCiAJCWJyb3dzZXJfY2FuZGlkYXRlcz0ib3BlbiAkYnJvd3Nlcl9jYW5kaWRhdGVzIgogCWZpCiAJIyAvYmluL3N0YXJ0IGluZGljYXRlcyBNaW5HVwpkaWZmIC0tZ2l0IGEvZ2l0LmMgYi9naXQuYwppbmRleCBkMjMyZGU5Li44OGVlZjVhIDEwMDY0NAotLS0gYS9naXQuYworKysgYi9naXQuYwpAQCAtNCw1MiArNCwyMiBAQAogI2luY2x1ZGUgImhlbHAuaCIKICNpbmNsdWRlICJxdW90ZS5oIgogI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCisjaW5jbHVkZSAiY29tbWl0LmgiCiAKIGNvbnN0IGNoYXIgZ2l0X3VzYWdlX3N0cmluZ1tdID0KLQkiZ2l0IFstLXZlcnNpb25dIFstLWV4ZWMtcGF0aFs9PHBhdGg+XV0gWy0taHRtbC1wYXRoXSBbLS1tYW4tcGF0aF0gWy0taW5mby1wYXRoXVxuIgorCSJnaXQgWy0tdmVyc2lvbl0gWy0taGVscF0gWy1jIG5hbWU9dmFsdWVdXG4iCisJIiAgICAgICAgICAgWy0tZXhlYy1wYXRoWz08cGF0aD5dXSBbLS1odG1sLXBhdGhdIFstLW1hbi1wYXRoXSBbLS1pbmZvLXBhdGhdXG4iCiAJIiAgICAgICAgICAgWy1wfC0tcGFnaW5hdGV8LS1uby1wYWdlcl0gWy0tbm8tcmVwbGFjZS1vYmplY3RzXSBbLS1iYXJlXVxuIgogCSIgICAgICAgICAgIFstLWdpdC1kaXI9PHBhdGg+XSBbLS13b3JrLXRyZWU9PHBhdGg+XSBbLS1uYW1lc3BhY2U9PG5hbWU+XVxuIgotCSIgICAgICAgICAgIFstYyBuYW1lPXZhbHVlXSBbLS1oZWxwXVxuIgogCSIgICAgICAgICAgIDxjb21tYW5kPiBbPGFyZ3M+XSI7CiAKIGNvbnN0IGNoYXIgZ2l0X21vcmVfaW5mb19zdHJpbmdbXSA9Ci0JTl8oIlNlZSAnZ2l0IGhlbHAgPGNvbW1hbmQ+JyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuIik7CisJTl8oIidnaXQgaGVscCAtYScgYW5kICdnaXQgaGVscCAtZycgbGlzdHMgYXZhaWxhYmxlIHN1YmNvbW1hbmRzIGFuZCBzb21lXG4iCisJICAgImNvbmNlcHQgZ3VpZGVzLiBTZWUgJ2dpdCBoZWxwIDxjb21tYW5kPicgb3IgJ2dpdCBoZWxwIDxjb25jZXB0PidcbiIKKwkgICAidG8gcmVhZCBhYm91dCBhIHNwZWNpZmljIHN1YmNvbW1hbmQgb3IgY29uY2VwdC4iKTsKIAogc3RhdGljIHN0cnVjdCBzdGFydHVwX2luZm8gZ2l0X3N0YXJ0dXBfaW5mbzsKIHN0YXRpYyBpbnQgdXNlX3BhZ2VyID0gLTE7Ci1zdHJ1Y3QgcGFnZXJfY29uZmlnIHsKLQljb25zdCBjaGFyICpjbWQ7Ci0JaW50IHdhbnQ7Ci0JY2hhciAqdmFsdWU7Ci19OwotCi1zdGF0aWMgaW50IHBhZ2VyX2NvbW1hbmRfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmRhdGEpCi17Ci0Jc3RydWN0IHBhZ2VyX2NvbmZpZyAqYyA9IGRhdGE7Ci0JaWYgKCFwcmVmaXhjbXAodmFyLCAicGFnZXIuIikgJiYgIXN0cmNtcCh2YXIgKyA2LCBjLT5jbWQpKSB7Ci0JCWludCBiID0gZ2l0X2NvbmZpZ19tYXliZV9ib29sKHZhciwgdmFsdWUpOwotCQlpZiAoYiA+PSAwKQotCQkJYy0+d2FudCA9IGI7Ci0JCWVsc2UgewotCQkJYy0+d2FudCA9IDE7Ci0JCQljLT52YWx1ZSA9IHhzdHJkdXAodmFsdWUpOwotCQl9Ci0JfQotCXJldHVybiAwOwotfQotCi0vKiByZXR1cm5zIDAgZm9yICJubyBwYWdlciIsIDEgZm9yICJ1c2UgcGFnZXIiLCBhbmQgLTEgZm9yICJub3Qgc3BlY2lmaWVkIiAqLwotaW50IGNoZWNrX3BhZ2VyX2NvbmZpZyhjb25zdCBjaGFyICpjbWQpCi17Ci0Jc3RydWN0IHBhZ2VyX2NvbmZpZyBjOwotCWMuY21kID0gY21kOwotCWMud2FudCA9IC0xOwotCWMudmFsdWUgPSBOVUxMOwotCWdpdF9jb25maWcocGFnZXJfY29tbWFuZF9jb25maWcsICZjKTsKLQlpZiAoYy52YWx1ZSkKLQkJcGFnZXJfcHJvZ3JhbSA9IGMudmFsdWU7Ci0JcmV0dXJuIGMud2FudDsKLX0KIAogc3RhdGljIHZvaWQgY29tbWl0X3BhZ2VyX2Nob2ljZSh2b2lkKSB7CiAJc3dpdGNoICh1c2VfcGFnZXIpIHsKQEAgLTE1OCw2ICsxMjgsNyBAQAogCQkJc3RhdGljIGNoYXIgZ2l0X2RpcltQQVRIX01BWCsxXTsKIAkJCWlzX2JhcmVfcmVwb3NpdG9yeV9jZmcgPSAxOwogCQkJc2V0ZW52KEdJVF9ESVJfRU5WSVJPTk1FTlQsIGdldGN3ZChnaXRfZGlyLCBzaXplb2YoZ2l0X2RpcikpLCAwKTsKKwkJCXNldGVudihHSVRfSU1QTElDSVRfV09SS19UUkVFX0VOVklST05NRU5ULCAiMCIsIDEpOwogCQkJaWYgKGVudmNoYW5nZWQpCiAJCQkJKmVudmNoYW5nZWQgPSAxOwogCQl9IGVsc2UgaWYgKCFzdHJjbXAoY21kLCAiLWMiKSkgewpAQCAtMTY4LDYgKzEzOSwyMCBAQAogCQkJZ2l0X2NvbmZpZ19wdXNoX3BhcmFtZXRlcigoKmFyZ3YpWzFdKTsKIAkJCSgqYXJndikrKzsKIAkJCSgqYXJnYyktLTsKKwkJfSBlbHNlIGlmICghc3RyY21wKGNtZCwgIi0tbGl0ZXJhbC1wYXRoc3BlY3MiKSkgeworCQkJc2V0ZW52KEdJVF9MSVRFUkFMX1BBVEhTUEVDU19FTlZJUk9OTUVOVCwgIjEiLCAxKTsKKwkJCWlmIChlbnZjaGFuZ2VkKQorCQkJCSplbnZjaGFuZ2VkID0gMTsKKwkJfSBlbHNlIGlmICghc3RyY21wKGNtZCwgIi0tbm8tbGl0ZXJhbC1wYXRoc3BlY3MiKSkgeworCQkJc2V0ZW52KEdJVF9MSVRFUkFMX1BBVEhTUEVDU19FTlZJUk9OTUVOVCwgIjAiLCAxKTsKKwkJCWlmIChlbnZjaGFuZ2VkKQorCQkJCSplbnZjaGFuZ2VkID0gMTsKKwkJfSBlbHNlIGlmICghc3RyY21wKGNtZCwgIi0tc2hhbGxvdy1maWxlIikpIHsKKwkJCSgqYXJndikrKzsKKwkJCSgqYXJnYyktLTsKKwkJCXNldF9hbHRlcm5hdGVfc2hhbGxvd19maWxlKCgqYXJndilbMF0pOworCQkJaWYgKGVudmNoYW5nZWQpCisJCQkJKmVudmNoYW5nZWQgPSAxOwogCQl9IGVsc2UgewogCQkJZnByaW50ZihzdGRlcnIsICJVbmtub3duIG9wdGlvbjogJXNcbiIsIGNtZCk7CiAJCQl1c2FnZShnaXRfdXNhZ2Vfc3RyaW5nKTsKQEAgLTI1Niw4ICsyNDEsNiBAQAogCXJldHVybiByZXQ7CiB9CiAKLWNvbnN0IGNoYXIgZ2l0X3ZlcnNpb25fc3RyaW5nW10gPSBHSVRfVkVSU0lPTjsKLQogI2RlZmluZSBSVU5fU0VUVVAJCSgxPDwwKQogI2RlZmluZSBSVU5fU0VUVVBfR0VOVExZCSgxPDwxKQogI2RlZmluZSBVU0VfUEFHRVIJCSgxPDwyKQpAQCAtMzQwLDYgKzMyMyw3IEBACiAJCXsgImJ1bmRsZSIsIGNtZF9idW5kbGUsIFJVTl9TRVRVUF9HRU5UTFkgfSwKIAkJeyAiY2F0LWZpbGUiLCBjbWRfY2F0X2ZpbGUsIFJVTl9TRVRVUCB9LAogCQl7ICJjaGVjay1hdHRyIiwgY21kX2NoZWNrX2F0dHIsIFJVTl9TRVRVUCB9LAorCQl7ICJjaGVjay1pZ25vcmUiLCBjbWRfY2hlY2tfaWdub3JlLCBSVU5fU0VUVVAgfCBORUVEX1dPUktfVFJFRSB9LAogCQl7ICJjaGVjay1yZWYtZm9ybWF0IiwgY21kX2NoZWNrX3JlZl9mb3JtYXQgfSwKIAkJeyAiY2hlY2tvdXQiLCBjbWRfY2hlY2tvdXQsIFJVTl9TRVRVUCB8IE5FRURfV09SS19UUkVFIH0sCiAJCXsgImNoZWNrb3V0LWluZGV4IiwgY21kX2NoZWNrb3V0X2luZGV4LApAQCAtMzUzLDYgKzMzNyw3IEBACiAJCXsgImNvbW1pdC10cmVlIiwgY21kX2NvbW1pdF90cmVlLCBSVU5fU0VUVVAgfSwKIAkJeyAiY29uZmlnIiwgY21kX2NvbmZpZywgUlVOX1NFVFVQX0dFTlRMWSB9LAogCQl7ICJjb3VudC1vYmplY3RzIiwgY21kX2NvdW50X29iamVjdHMsIFJVTl9TRVRVUCB9LAorCQl7ICJjcmVkZW50aWFsIiwgY21kX2NyZWRlbnRpYWwsIFJVTl9TRVRVUF9HRU5UTFkgfSwKIAkJeyAiZGVzY3JpYmUiLCBjbWRfZGVzY3JpYmUsIFJVTl9TRVRVUCB9LAogCQl7ICJkaWZmIiwgY21kX2RpZmYgfSwKIAkJeyAiZGlmZi1maWxlcyIsIGNtZF9kaWZmX2ZpbGVzLCBSVU5fU0VUVVAgfCBORUVEX1dPUktfVFJFRSB9LApAQCAtNTcwLDcgKzU1NSw3IEBACiAJCWNvbW1pdF9wYWdlcl9jaG9pY2UoKTsKIAkJcHJpbnRmKCJ1c2FnZTogJXNcblxuIiwgZ2l0X3VzYWdlX3N0cmluZyk7CiAJCWxpc3RfY29tbW9uX2NtZHNfaGVscCgpOwotCQlwcmludGYoIlxuJXNcbiIsIGdpdF9tb3JlX2luZm9fc3RyaW5nKTsKKwkJcHJpbnRmKCJcbiVzXG4iLCBfKGdpdF9tb3JlX2luZm9fc3RyaW5nKSk7CiAJCWV4aXQoMSk7CiAJfQogCWNtZCA9IGFyZ3ZbMF07CmRpZmYgLS1naXQgYS9naXRfcmVtb3RlX2hlbHBlcnMvLmdpdGlnbm9yZSBiL2dpdF9yZW1vdGVfaGVscGVycy8uZ2l0aWdub3JlCmluZGV4IDIyNDdkNWYuLmNmMDQwYWYgMTAwNjQ0Ci0tLSBhL2dpdF9yZW1vdGVfaGVscGVycy8uZ2l0aWdub3JlCisrKyBiL2dpdF9yZW1vdGVfaGVscGVycy8uZ2l0aWdub3JlCkBAIC0xLDIgKzEsMyBAQAorL0dJVC1QWVRIT04tVkVSU0lPTgogL2J1aWxkCiAvZGlzdApkaWZmIC0tZ2l0IGEvZ2l0X3JlbW90ZV9oZWxwZXJzL01ha2VmaWxlIGIvZ2l0X3JlbW90ZV9oZWxwZXJzL01ha2VmaWxlCmluZGV4IDc0YjA1ZGMuLjNkMTIyMzIgMTAwNjQ0Ci0tLSBhL2dpdF9yZW1vdGVfaGVscGVycy9NYWtlZmlsZQorKysgYi9naXRfcmVtb3RlX2hlbHBlcnMvTWFrZWZpbGUKQEAgLTIzLDEwICsyMywxNiBAQAogCiBQWUxJQkRJUj0kKHNoZWxsICQoUFlUSE9OX1BBVEgpIC1jIFwKIAkgImltcG9ydCBzeXM7IFwKLQkgcHJpbnQgJ2xpYi9weXRob24laS4laS9zaXRlLXBhY2thZ2VzJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdIikKKwkgcHJpbnQoJ2xpYi9weXRob24laS4laS9zaXRlLXBhY2thZ2VzJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKSIpCisKK3B5X3ZlcnNpb249JChzaGVsbCAkKFBZVEhPTl9QQVRIKSAtYyBcCisJJ2ltcG9ydCBzeXM7IHByaW50KCIlaS4laSIgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSknKQogCiBhbGw6ICQocHlzZXR1cGZpbGUpCi0JJChRVUlFVCkkKFBZVEhPTl9QQVRIKSAkKHB5c2V0dXBmaWxlKSAkKFFVSUVUU0VUVVApIGJ1aWxkCisJJChRVUlFVCl0ZXN0ICIkJChjYXQgR0lULVBZVEhPTi1WRVJTSU9OIDI+L2Rldi9udWxsKSIgPSAiJChweV92ZXJzaW9uKSIgfHwgXAorCWZsYWdzPS0tZm9yY2U7IFwKKwkkKFBZVEhPTl9QQVRIKSAkKHB5c2V0dXBmaWxlKSAkKFFVSUVUU0VUVVApIGJ1aWxkICQkZmxhZ3MKKwkkKFFVSUVUKWVjaG8gIiQocHlfdmVyc2lvbikiID5HSVQtUFlUSE9OLVZFUlNJT04KIAogaW5zdGFsbDogJChweXNldHVwZmlsZSkKIAkkKFBZVEhPTl9QQVRIKSAkKHB5c2V0dXBmaWxlKSBpbnN0YWxsIC0tcHJlZml4ICQoREVTVERJUl9TUSkkKHByZWZpeCkKQEAgLTM2LDQgKzQyLDQgQEAKIAogY2xlYW46CiAJJChRVUlFVCkkKFBZVEhPTl9QQVRIKSAkKHB5c2V0dXBmaWxlKSAkKFFVSUVUU0VUVVApIGNsZWFuIC1hCi0JJChSTSkgKi5weW8gKi5weWMKKwkkKFJNKSAqLnB5byAqLnB5YyBHSVQtUFlUSE9OLVZFUlNJT04KZGlmZiAtLWdpdCBhL2dpdF9yZW1vdGVfaGVscGVycy9naXQvX19pbml0X18ucHkgYi9naXRfcmVtb3RlX2hlbHBlcnMvZ2l0L19faW5pdF9fLnB5CmluZGV4IGU2OWRlMjkuLjFkYmIxYjAgMTAwNjQ0Ci0tLSBhL2dpdF9yZW1vdGVfaGVscGVycy9naXQvX19pbml0X18ucHkKKysrIGIvZ2l0X3JlbW90ZV9oZWxwZXJzL2dpdC9fX2luaXRfXy5weQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBzeXMKK2lmIHN5cy5oZXh2ZXJzaW9uIDwgMHgwMjA0MDAwMDoKKyAgICAjIFRoZSBsaW1pdGVyIGlzIHRoZSBzdWJwcm9jZXNzIG1vZHVsZQorICAgIHN5cy5zdGRlcnIud3JpdGUoImdpdF9yZW1vdGVfaGVscGVyczogcmVxdWlyZXMgUHl0aG9uIDIuNCBvciBsYXRlci5cbiIpCisgICAgc3lzLmV4aXQoMSkKZGlmZiAtLWdpdCBhL2dpdF9yZW1vdGVfaGVscGVycy9naXQvaW1wb3J0ZXIucHkgYi9naXRfcmVtb3RlX2hlbHBlcnMvZ2l0L2ltcG9ydGVyLnB5CmluZGV4IDVjNmI1OTUuLmQzZjkwZTEgMTAwNjQ0Ci0tLSBhL2dpdF9yZW1vdGVfaGVscGVycy9naXQvaW1wb3J0ZXIucHkKKysrIGIvZ2l0X3JlbW90ZV9oZWxwZXJzL2dpdC9pbXBvcnRlci5weQpAQCAtMTgsMTMgKzE4LDE2IEBACiAKICAgICBkZWYgZ2V0X3JlZnMoc2VsZiwgZ2l0ZGlyKToKICAgICAgICAgIiIiUmV0dXJucyBhIGRpY3Rpb25hcnkgd2l0aCByZWZzLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUga2V5cyBpbiB0aGUgcmV0dXJuZWQgZGljdGlvbmFyeSBhcmUgYnl0ZSBzdHJpbmdzIGFzCisgICAgICAgIHJlYWQgZnJvbSBnaXQuCiAgICAgICAgICIiIgogICAgICAgICBhcmdzID0gWyJnaXQiLCAiLS1naXQtZGlyPSIgKyBnaXRkaXIsICJmb3ItZWFjaC1yZWYiLCAicmVmcy9oZWFkcyJdCi0gICAgICAgIGxpbmVzID0gY2hlY2tfb3V0cHV0KGFyZ3MpLnN0cmlwKCkuc3BsaXQoJ1xuJykKKyAgICAgICAgbGluZXMgPSBjaGVja19vdXRwdXQoYXJncykuc3RyaXAoKS5zcGxpdCgnXG4nLmVuY29kZSgnYXNjaWknKSkKICAgICAgICAgcmVmcyA9IHt9CiAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICAgICAgdmFsdWUsIG5hbWUgPSBsaW5lLnNwbGl0KCcgJykKLSAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN0cmlwKCdjb21taXRcdCcpCisgICAgICAgICAgICB2YWx1ZSwgbmFtZSA9IGxpbmUuc3BsaXQoJyAnLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN0cmlwKCdjb21taXRcdCcuZW5jb2RlKCdhc2NpaScpKQogICAgICAgICAgICAgcmVmc1tuYW1lXSA9IHZhbHVlCiAgICAgICAgIHJldHVybiByZWZzCiAKQEAgLTM5LDcgKzQyLDcgQEAKICAgICAgICAgICAgIGdpdGRpciA9IHNlbGYucmVwby5naXRwYXRoCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBnaXRkaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGRpcm5hbWUsICcuZ2l0JykpCi0gICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGRpcm5hbWUsICdnaXQubWFya3MnKSkKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ3Rlc3RnaXQubWFya3MnKSkKIAogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlybmFtZSk6CiAgICAgICAgICAgICBvcy5tYWtlZGlycyhkaXJuYW1lKQpkaWZmIC0tZ2l0IGEvZ2l0X3JlbW90ZV9oZWxwZXJzL3NldHVwLnB5IGIvZ2l0X3JlbW90ZV9oZWxwZXJzL3NldHVwLnB5CmluZGV4IDRkNDM0YjYuLjZkZTQxZGUgMTAwNjQ0Ci0tLSBhL2dpdF9yZW1vdGVfaGVscGVycy9zZXR1cC5weQorKysgYi9naXRfcmVtb3RlX2hlbHBlcnMvc2V0dXAucHkKQEAgLTQsNiArNCwxNSBAQAogCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBzZXR1cAogCisjIElmIGJ1aWxkaW5nIHVuZGVyIFB5dGhvbjMgd2UgbmVlZCB0byBydW4gMnRvMyBvbiB0aGUgY29kZSwgZG8gdGhpcyBieQorIyB0cnlpbmcgdG8gaW1wb3J0IGRpc3R1dGlscycgMnRvMyBidWlsZGVyLCB3aGljaCBpcyBvbmx5IGF2YWlsYWJsZSBpbgorIyBQeXRob24zLgordHJ5OgorICAgIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfcHkgaW1wb3J0IGJ1aWxkX3B5XzJ0bzMgYXMgYnVpbGRfcHkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAjIDIueAorICAgIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfcHkgaW1wb3J0IGJ1aWxkX3B5CisKIHNldHVwKAogICAgIG5hbWUgPSAnZ2l0X3JlbW90ZV9oZWxwZXJzJywKICAgICB2ZXJzaW9uID0gJzAuMS4wJywKQEAgLTE0LDQgKzIzLDUgQEAKICAgICB1cmwgPSAnaHR0cDovL3d3dy5naXQtc2NtLmNvbS8nLAogICAgIHBhY2thZ2VfZGlyID0geydnaXRfcmVtb3RlX2hlbHBlcnMnOiAnJ30sCiAgICAgcGFja2FnZXMgPSBbJ2dpdF9yZW1vdGVfaGVscGVycycsICdnaXRfcmVtb3RlX2hlbHBlcnMuZ2l0J10sCisgICAgY21kY2xhc3MgPSB7J2J1aWxkX3B5JzogYnVpbGRfcHl9LAogKQpkaWZmIC0tZ2l0IGEvZ2l0ay1naXQvLmdpdGlnbm9yZSBiL2dpdGstZ2l0Ly5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdlYmNhZgotLS0gL2Rldi9udWxsCisrKyBiL2dpdGstZ2l0Ly5naXRpZ25vcmUKQEAgLTAsMCArMSwyIEBACisvR0lULVRDTFRLLVZBUlMKKy9naXRrLXdpc2gKZGlmZiAtLWdpdCBhL2dpdGstZ2l0L01ha2VmaWxlIGIvZ2l0ay1naXQvTWFrZWZpbGUKaW5kZXggZTFiNjA0NS4uNWFjZGM5MCAxMDA2NDQKLS0tIGEvZ2l0ay1naXQvTWFrZWZpbGUKKysrIGIvZ2l0ay1naXQvTWFrZWZpbGUKQEAgLTE3LDYgKzE3LDE2IEBACiBiaW5kaXJfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKGJpbmRpcikpCiBUQ0xUS19QQVRIX1NRID0gJChzdWJzdCAnLCdcJycsJChUQ0xUS19QQVRIKSkKIAorIyMjIERldGVjdCBUY2svVGsgaW50ZXJwcmV0ZXIgcGF0aCBjaGFuZ2VzCitUUkFDS19UQ0xUSyA9ICQoc3Vic3QgJywnXCcnLC1EVENMVEtfUEFUSD0nJChUQ0xUS19QQVRIX1NRKScpCisKK0dJVC1UQ0xUSy1WQVJTOiBGT1JDRQorCUBWQVJTPSckKFRSQUNLX1RDTFRLKSc7IFwKKwkJaWYgdGVzdCB4IiQkVkFSUyIgIT0geCJgY2F0ICRAIDI+L2Rldi9udWxsYCIgOyB0aGVuIFwKKwkJCWVjaG8gMT4mMiAiICAgICogbmV3IFRjbC9UayBpbnRlcnByZXRlciBsb2NhdGlvbiI7IFwKKwkJCWVjaG8gIiQkVkFSUyIgPiRAOyBcCisJCWZpCisKICMjIHBvLWZpbGUgY3JlYXRpb24gcnVsZXMKIFhHRVRURVhUICAgPz0geGdldHRleHQKIGlmZGVmIE5PX01TR0ZNVApAQCAtNDksOSArNTksOSBAQAogCSQoUk0pICckKERFU1RESVJfU1EpJChiaW5kaXJfU1EpJy9naXRrCiAKIGNsZWFuOjoKLQkkKFJNKSBnaXRrLXdpc2ggcG8vKi5tc2cKKwkkKFJNKSBnaXRrLXdpc2ggcG8vKi5tc2cgR0lULVRDTFRLLVZBUlMKIAotZ2l0ay13aXNoOiBnaXRrCitnaXRrLXdpc2g6IGdpdGsgR0lULVRDTFRLLVZBUlMKIAkkKFFVSUVUX0dFTikkKFJNKSAkQCAkQCsgJiYgXAogCXNlZCAtZSAnMSwzc3xeZXhlYyAuKiAiJCQwInxleGVjICQoc3Vic3QgfCwnXHwnLCQoVENMVEtfUEFUSF9TUSkpICIkJDAifCcgPGdpdGsgPiRAKyAmJiBcCiAJY2htb2QgK3ggJEArICYmIFwKQEAgLTY1LDMgKzc1LDUgQEAKIAlAZWNobyBHZW5lcmF0aW5nIGNhdGFsb2cgJEAKIAkkKE1TR0ZNVCkgLS1zdGF0aXN0aWNzIC0tdGNsICQ8IC1sICQoYmFzZW5hbWUgJChub3RkaXIgJDwpKSAtZCAkKGRpciAkQCkKIAorLlBIT05ZOiBhbGwgaW5zdGFsbCB1bmluc3RhbGwgY2xlYW4gdXBkYXRlLXBvCisuUEhPTlk6IEZPUkNFCmRpZmYgLS1naXQgYS9naXRrLWdpdC9naXRrIGIvZ2l0ay1naXQvZ2l0awppbmRleCAyMjI3MGNlLi41Y2QwMGQ4IDEwMDc1NQotLS0gYS9naXRrLWdpdC9naXRrCisrKyBiL2dpdGstZ2l0L2dpdGsKQEAgLTE5OTgsNiArMTk5OCw5IEBACiAgICAgcmV0dXJuIFtzdHJpbmcgbWFwIHsmJiAmICYge319IFttYyAkc3RyXV0KIH0KIAorcHJvYyBjbGVhcmRyb3BzZWwge3d9IHsKKyAgICAkdyBzZWxlY3Rpb24gY2xlYXIKK30KIHByb2MgbWFrZWRyb3BsaXN0IHt3IHZhcm5hbWUgYXJnc30gewogICAgIGdsb2JhbCB1c2VfdHRrCiAgICAgaWYgeyR1c2VfdHRrfSB7CkBAIC0yMDA3LDcgKzIwMTAsOSBAQAogICAgICAgICAgICAgaWYgeyRjeCA+ICR3aWR0aH0ge3NldCB3aWR0aCAkY3h9CiAgICAgICAgIH0KIAlzZXQgZ20gW3R0azo6Y29tYm9ib3ggJHcgLXdpZHRoICR3aWR0aCAtc3RhdGUgcmVhZG9ubHlcCi0JCSAgICAtdGV4dHZhcmlhYmxlICR2YXJuYW1lIC12YWx1ZXMgJGFyZ3NdCisJCSAgICAtdGV4dHZhcmlhYmxlICR2YXJuYW1lIC12YWx1ZXMgJGFyZ3MgXAorCQkgICAgLWV4cG9ydHNlbGVjdGlvbiBmYWxzZV0KKwliaW5kICRnbSA8PENvbWJvYm94U2VsZWN0ZWQ+PiBbbGlzdCAkZ20gc2VsZWN0aW9uIGNsZWFyXQogICAgIH0gZWxzZSB7CiAJc2V0IGdtIFtldmFsIFtsaW5zZXJ0ICRhcmdzIDAgdGtfb3B0aW9uTWVudSAkdyAkdmFybmFtZV1dCiAgICAgfQpAQCAtMjAyNiw2ICsyMDMxLDkgQEAKICAgICBnbG9iYWwgaGlnaGxpZ2h0X2ZpbGVzIGdkdHR5cGUKICAgICBnbG9iYWwgc2VhcmNoc3RyaW5nIHNzdHJpbmcKICAgICBnbG9iYWwgYmdjb2xvciBmZ2NvbG9yIGJnbGlzdCBmZ2xpc3QgZGlmZmNvbG9ycyBzZWxlY3RiZ2NvbG9yCisgICAgZ2xvYmFsIHVpZmdjb2xvciB1aWZnZGlzYWJsZWRjb2xvcgorICAgIGdsb2JhbCBmaWxlc2VwYmdjb2xvciBmaWxlc2VwZmdjb2xvcgorICAgIGdsb2JhbCBtZXJnZWNvbG9ycyBmb3VuZGJnY29sb3IgY3VycmVudHNlYXJjaGhpdGJnY29sb3IKICAgICBnbG9iYWwgaGVhZGN0eG1lbnUgcHJvZ3Jlc3NjYW52IHByb2dyZXNzaXRlbSBwcm9ncmVzc2Nvb3JkcyBzdGF0dXN3CiAgICAgZ2xvYmFsIGZwcm9naXRlbSBmcHJvZ2Nvb3JkIGxhc3Rwcm9ndXBkYXRlIHByb2d1cGRhdGVwZW5kaW5nCiAgICAgZ2xvYmFsIHJwcm9naXRlbSBycHJvZ2Nvb3JkIHJvd251bXNlbCBudW1jb21taXRzCkBAIC0yMDM4LDcgKzIwNDYsNyBAQAogICAgIHNldCBmaWxlIHsKIAltYyAiRmlsZSIgY2FzY2FkZSB7CiAJICAgIHttYyAiVXBkYXRlIiBjb21tYW5kIHVwZGF0ZWNvbW1pdHMgLWFjY2VsZXJhdG9yIEY1fQotCSAgICB7bWMgIlJlbG9hZCIgY29tbWFuZCByZWxvYWRjb21taXRzIC1hY2NlbGVyYXRvciBNZXRhMS1GNX0KKwkgICAge21jICJSZWxvYWQiIGNvbW1hbmQgcmVsb2FkY29tbWl0cyAtYWNjZWxlcmF0b3IgU2hpZnQtRjV9CiAJICAgIHttYyAiUmVyZWFkIHJlZmVyZW5jZXMiIGNvbW1hbmQgcmVyZWFkcmVmc30KIAkgICAge21jICJMaXN0IHJlZmVyZW5jZXMiIGNvbW1hbmQgc2hvd3JlZnMgLWFjY2VsZXJhdG9yIEYyfQogCSAgICB7eHggIiIgc2VwYXJhdG9yfQpAQCAtMjE2MSw3ICsyMTY5LDcgQEAKICAgICB0cmFjZSBhZGQgdmFyaWFibGUgc2hhMXN0cmluZyB3cml0ZSBzaGExY2hhbmdlCiAgICAgcGFjayAkc2hhMWVudHJ5IC1zaWRlIGxlZnQgLXBhZHkgMgogCi0gICAgaW1hZ2UgY3JlYXRlIGJpdG1hcCBibS1sZWZ0IC1kYXRhIHsKKyAgICBzZXQgYm1fbGVmdF9kYXRhIHsKIAkjZGVmaW5lIGxlZnRfd2lkdGggMTYKIAkjZGVmaW5lIGxlZnRfaGVpZ2h0IDE2CiAJc3RhdGljIHVuc2lnbmVkIGNoYXIgbGVmdF9iaXRzW10gPSB7CkBAIC0yMTY5LDcgKzIxNzcsNyBAQAogCTB4MGUsIDB4MDAsIDB4ZmYsIDB4N2YsIDB4ZmYsIDB4N2YsIDB4ZmYsIDB4N2YsIDB4MGUsIDB4MDAsIDB4MWMsIDB4MDAsCiAJMHgzOCwgMHgwMCwgMHg3MCwgMHgwMCwgMHhlMCwgMHgwMCwgMHhjMCwgMHgwMX07CiAgICAgfQotICAgIGltYWdlIGNyZWF0ZSBiaXRtYXAgYm0tcmlnaHQgLWRhdGEgeworICAgIHNldCBibV9yaWdodF9kYXRhIHsKIAkjZGVmaW5lIHJpZ2h0X3dpZHRoIDE2CiAJI2RlZmluZSByaWdodF9oZWlnaHQgMTYKIAlzdGF0aWMgdW5zaWduZWQgY2hhciByaWdodF9iaXRzW10gPSB7CkBAIC0yMTc3LDExICsyMTg1LDI0IEBACiAJMHgwMCwgMHgzOCwgMHhmZiwgMHg3ZiwgMHhmZiwgMHg3ZiwgMHhmZiwgMHg3ZiwgMHgwMCwgMHgzOCwgMHgwMCwgMHgxYywKIAkweDAwLCAweDBlLCAweDAwLCAweDA3LCAweDgwLCAweDAzLCAweGMwLCAweDAxfTsKICAgICB9Ci0gICAgJHtOU306OmJ1dHRvbiAudGYuYmFyLmxlZnRidXQgLWltYWdlIGJtLWxlZnQgLWNvbW1hbmQgZ29iYWNrIFwKLQktc3RhdGUgZGlzYWJsZWQgLXdpZHRoIDI2CisgICAgaW1hZ2UgY3JlYXRlIGJpdG1hcCBibS1sZWZ0IC1kYXRhICRibV9sZWZ0X2RhdGEgLWZvcmVncm91bmQgJHVpZmdjb2xvcgorICAgIGltYWdlIGNyZWF0ZSBiaXRtYXAgYm0tbGVmdC1ncmF5IC1kYXRhICRibV9sZWZ0X2RhdGEgLWZvcmVncm91bmQgJHVpZmdkaXNhYmxlZGNvbG9yCisgICAgaW1hZ2UgY3JlYXRlIGJpdG1hcCBibS1yaWdodCAtZGF0YSAkYm1fcmlnaHRfZGF0YSAtZm9yZWdyb3VuZCAkdWlmZ2NvbG9yCisgICAgaW1hZ2UgY3JlYXRlIGJpdG1hcCBibS1yaWdodC1ncmF5IC1kYXRhICRibV9yaWdodF9kYXRhIC1mb3JlZ3JvdW5kICR1aWZnZGlzYWJsZWRjb2xvcgorCisgICAgJHtOU306OmJ1dHRvbiAudGYuYmFyLmxlZnRidXQgLWNvbW1hbmQgZ29iYWNrIC1zdGF0ZSBkaXNhYmxlZCAtd2lkdGggMjYKKyAgICBpZiB7JHVzZV90dGt9IHsKKwkudGYuYmFyLmxlZnRidXQgY29uZmlndXJlIC1pbWFnZSBbbGlzdCBibS1sZWZ0IGRpc2FibGVkIGJtLWxlZnQtZ3JheV0KKyAgICB9IGVsc2UgeworCS50Zi5iYXIubGVmdGJ1dCBjb25maWd1cmUgLWltYWdlIGJtLWxlZnQKKyAgICB9CiAgICAgcGFjayAudGYuYmFyLmxlZnRidXQgLXNpZGUgbGVmdCAtZmlsbCB5Ci0gICAgJHtOU306OmJ1dHRvbiAudGYuYmFyLnJpZ2h0YnV0IC1pbWFnZSBibS1yaWdodCAtY29tbWFuZCBnb2ZvcncgXAotCS1zdGF0ZSBkaXNhYmxlZCAtd2lkdGggMjYKKyAgICAke05TfTo6YnV0dG9uIC50Zi5iYXIucmlnaHRidXQgLWNvbW1hbmQgZ29mb3J3IC1zdGF0ZSBkaXNhYmxlZCAtd2lkdGggMjYKKyAgICBpZiB7JHVzZV90dGt9IHsKKwkudGYuYmFyLnJpZ2h0YnV0IGNvbmZpZ3VyZSAtaW1hZ2UgW2xpc3QgYm0tcmlnaHQgZGlzYWJsZWQgYm0tcmlnaHQtZ3JheV0KKyAgICB9IGVsc2UgeworCS50Zi5iYXIucmlnaHRidXQgY29uZmlndXJlIC1pbWFnZSBibS1yaWdodAorICAgIH0KICAgICBwYWNrIC50Zi5iYXIucmlnaHRidXQgLXNpZGUgbGVmdCAtZmlsbCB5CiAKICAgICAke05TfTo6bGFiZWwgLnRmLmJhci5yb3dsYWJlbCAtdGV4dCBbbWMgIlJvdyJdCkBAIC0yMjMyLDcgKzIyNTMsOCBAQAogICAgIHNldCBnbSBbbWFrZWRyb3BsaXN0IC50Zi5sYmFyLmdkdHR5cGUgZ2R0dHlwZSBcCiAJCVttYyAiY29udGFpbmluZzoiXSBcCiAJCVttYyAidG91Y2hpbmcgcGF0aHM6Il0gXAotCQlbbWMgImFkZGluZy9yZW1vdmluZyBzdHJpbmc6Il1dCisJCVttYyAiYWRkaW5nL3JlbW92aW5nIHN0cmluZzoiXSBcCisJCVttYyAiY2hhbmdpbmcgbGluZXMgbWF0Y2hpbmc6Il1dCiAgICAgdHJhY2UgYWRkIHZhcmlhYmxlIGdkdHR5cGUgd3JpdGUgZ2R0dHlwZV9jaGFuZ2UKICAgICBwYWNrIC50Zi5sYmFyLmdkdHR5cGUgLXNpZGUgbGVmdCAtZmlsbCB5CiAKQEAgLTIzMzYsMzEgKzIzNTgsMzMgQEAKICAgICBsYXBwZW5kIGZnbGlzdCAkY3RleHQKIAogICAgICRjdGV4dCB0YWcgY29uZiBjb21tZW50IC13cmFwICR3cmFwY29tbWVudAotICAgICRjdGV4dCB0YWcgY29uZiBmaWxlc2VwIC1mb250IHRleHRmb250Ym9sZCAtYmFjayAiI2FhYWFhYSIKKyAgICAkY3RleHQgdGFnIGNvbmYgZmlsZXNlcCAtZm9udCB0ZXh0Zm9udGJvbGQgLWZvcmUgJGZpbGVzZXBmZ2NvbG9yIC1iYWNrICRmaWxlc2VwYmdjb2xvcgogICAgICRjdGV4dCB0YWcgY29uZiBodW5rc2VwIC1mb3JlIFtsaW5kZXggJGRpZmZjb2xvcnMgMl0KICAgICAkY3RleHQgdGFnIGNvbmYgZDAgLWZvcmUgW2xpbmRleCAkZGlmZmNvbG9ycyAwXQogICAgICRjdGV4dCB0YWcgY29uZiBkcmVzdWx0IC1mb3JlIFtsaW5kZXggJGRpZmZjb2xvcnMgMV0KLSAgICAkY3RleHQgdGFnIGNvbmYgbTAgLWZvcmUgcmVkCi0gICAgJGN0ZXh0IHRhZyBjb25mIG0xIC1mb3JlIGJsdWUKLSAgICAkY3RleHQgdGFnIGNvbmYgbTIgLWZvcmUgZ3JlZW4KLSAgICAkY3RleHQgdGFnIGNvbmYgbTMgLWZvcmUgcHVycGxlCi0gICAgJGN0ZXh0IHRhZyBjb25mIG00IC1mb3JlIGJyb3duCi0gICAgJGN0ZXh0IHRhZyBjb25mIG01IC1mb3JlICIjMDA5MDkwIgotICAgICRjdGV4dCB0YWcgY29uZiBtNiAtZm9yZSBtYWdlbnRhCi0gICAgJGN0ZXh0IHRhZyBjb25mIG03IC1mb3JlICIjODA4MDAwIgotICAgICRjdGV4dCB0YWcgY29uZiBtOCAtZm9yZSAiIzAwOTAwMCIKLSAgICAkY3RleHQgdGFnIGNvbmYgbTkgLWZvcmUgIiNmZjAwODAiCi0gICAgJGN0ZXh0IHRhZyBjb25mIG0xMCAtZm9yZSBjeWFuCi0gICAgJGN0ZXh0IHRhZyBjb25mIG0xMSAtZm9yZSAiI2IwNzA3MCIKLSAgICAkY3RleHQgdGFnIGNvbmYgbTEyIC1mb3JlICIjNzBiMGYwIgotICAgICRjdGV4dCB0YWcgY29uZiBtMTMgLWZvcmUgIiM3MGYwYjAiCi0gICAgJGN0ZXh0IHRhZyBjb25mIG0xNCAtZm9yZSAiI2YwYjA3MCIKLSAgICAkY3RleHQgdGFnIGNvbmYgbTE1IC1mb3JlICIjZmY3MGIwIgorICAgICRjdGV4dCB0YWcgY29uZiBtMCAtZm9yZSBbbGluZGV4ICRtZXJnZWNvbG9ycyAwXQorICAgICRjdGV4dCB0YWcgY29uZiBtMSAtZm9yZSBbbGluZGV4ICRtZXJnZWNvbG9ycyAxXQorICAgICRjdGV4dCB0YWcgY29uZiBtMiAtZm9yZSBbbGluZGV4ICRtZXJnZWNvbG9ycyAyXQorICAgICRjdGV4dCB0YWcgY29uZiBtMyAtZm9yZSBbbGluZGV4ICRtZXJnZWNvbG9ycyAzXQorICAgICRjdGV4dCB0YWcgY29uZiBtNCAtZm9yZSBbbGluZGV4ICRtZXJnZWNvbG9ycyA0XQorICAgICRjdGV4dCB0YWcgY29uZiBtNSAtZm9yZSBbbGluZGV4ICRtZXJnZWNvbG9ycyA1XQorICAgICRjdGV4dCB0YWcgY29uZiBtNiAtZm9yZSBbbGluZGV4ICRtZXJnZWNvbG9ycyA2XQorICAgICRjdGV4dCB0YWcgY29uZiBtNyAtZm9yZSBbbGluZGV4ICRtZXJnZWNvbG9ycyA3XQorICAgICRjdGV4dCB0YWcgY29uZiBtOCAtZm9yZSBbbGluZGV4ICRtZXJnZWNvbG9ycyA4XQorICAgICRjdGV4dCB0YWcgY29uZiBtOSAtZm9yZSBbbGluZGV4ICRtZXJnZWNvbG9ycyA5XQorICAgICRjdGV4dCB0YWcgY29uZiBtMTAgLWZvcmUgW2xpbmRleCAkbWVyZ2Vjb2xvcnMgMTBdCisgICAgJGN0ZXh0IHRhZyBjb25mIG0xMSAtZm9yZSBbbGluZGV4ICRtZXJnZWNvbG9ycyAxMV0KKyAgICAkY3RleHQgdGFnIGNvbmYgbTEyIC1mb3JlIFtsaW5kZXggJG1lcmdlY29sb3JzIDEyXQorICAgICRjdGV4dCB0YWcgY29uZiBtMTMgLWZvcmUgW2xpbmRleCAkbWVyZ2Vjb2xvcnMgMTNdCisgICAgJGN0ZXh0IHRhZyBjb25mIG0xNCAtZm9yZSBbbGluZGV4ICRtZXJnZWNvbG9ycyAxNF0KKyAgICAkY3RleHQgdGFnIGNvbmYgbTE1IC1mb3JlIFtsaW5kZXggJG1lcmdlY29sb3JzIDE1XQogICAgICRjdGV4dCB0YWcgY29uZiBtbWF4IC1mb3JlIGRhcmtncmV5CiAgICAgc2V0IG1lcmdlbWF4IDE2CiAgICAgJGN0ZXh0IHRhZyBjb25mIG1yZXN1bHQgLWZvbnQgdGV4dGZvbnRib2xkCiAgICAgJGN0ZXh0IHRhZyBjb25mIG1zZXAgLWZvbnQgdGV4dGZvbnRib2xkCi0gICAgJGN0ZXh0IHRhZyBjb25mIGZvdW5kIC1iYWNrIHllbGxvdworICAgICRjdGV4dCB0YWcgY29uZiBmb3VuZCAtYmFjayAkZm91bmRiZ2NvbG9yCisgICAgJGN0ZXh0IHRhZyBjb25mIGN1cnJlbnRzZWFyY2hoaXQgLWJhY2sgJGN1cnJlbnRzZWFyY2hoaXRiZ2NvbG9yCisgICAgJGN0ZXh0IHRhZyBjb25mIHd3cmFwIC13cmFwIHdvcmQKIAogICAgIC5wd2JvdHRvbSBhZGQgLmJsZWZ0CiAgICAgaWYgeyEkdXNlX3R0a30gewpAQCAtMjQ5NSwxMCArMjUxOSw5IEBACiAgICAgYmluZGtleSA/IHtkb2ZpbmQgLTEgMX0KICAgICBiaW5ka2V5IGYgbmV4dGZpbGUKICAgICBiaW5kIC4gPEY1PiB1cGRhdGVjb21taXRzCi0gICAgYmluZCAuIDwkTTFCLUY1PiByZWxvYWRjb21taXRzCisgICAgYmluZG1vZGZ1bmN0aW9ua2V5IFNoaWZ0IDUgcmVsb2FkY29tbWl0cwogICAgIGJpbmQgLiA8RjI+IHNob3dyZWZzCi0gICAgYmluZCAuIDxTaGlmdC1GND4ge25ld3ZpZXcgMH0KLSAgICBjYXRjaCB7IGJpbmQgLiA8U2hpZnQtS2V5LVhGODZfU3dpdGNoX1ZUXzQ+IHtuZXd2aWV3IDB9IH0KKyAgICBiaW5kbW9kZnVuY3Rpb25rZXkgU2hpZnQgNCB7bmV3dmlldyAwfQogICAgIGJpbmQgLiA8RjQ+IGVkaXRfb3JfbmV3dmlldwogICAgIGJpbmQgLiA8JE0xQi1xPiBkb3F1aXQKICAgICBiaW5kIC4gPCRNMUItZj4ge2RvZmluZCAxIDF9CkBAIC0yNTIzLDYgKzI1NDYsNyBAQAogICAgIGJpbmQgJGNmbGlzdCAkY3R4YnV0IHtwb3BfZmxpc3RfbWVudSAlVyAlWCAlWSAleCAleX0KICAgICBiaW5kICRjdGV4dCAkY3R4YnV0IHtwb3BfZGlmZl9tZW51ICVXICVYICVZICV4ICV5fQogICAgIGJpbmQgJGN0ZXh0IDxCdXR0b24tMT4ge2ZvY3VzICVXfQorICAgIGJpbmQgJGN0ZXh0IDw8U2VsZWN0aW9uPj4gcmVoaWdobGlnaHRfc2VhcmNoX3Jlc3VsdHMKIAogICAgIHNldCBtYWluY3Vyc29yIFsuIGNnZXQgLWN1cnNvcl0KICAgICBzZXQgdGV4dGN1cnNvciBbJGN0ZXh0IGNnZXQgLWN1cnNvcl0KQEAgLTI1NDQsNiArMjU2OCw3IEBACiAJe21jICJDb21wYXJlIHdpdGggbWFya2VkIGNvbW1pdCIgY29tbWFuZCBjb21wYXJlX2NvbW1pdHN9CiAJe21jICJEaWZmIHRoaXMgLT4gbWFya2VkIGNvbW1pdCIgY29tbWFuZCB7ZGlmZnZzbWFyayAwfX0KIAl7bWMgIkRpZmYgbWFya2VkIGNvbW1pdCAtPiB0aGlzIiBjb21tYW5kIHtkaWZmdnNtYXJrIDF9fQorCXttYyAiUmV2ZXJ0IHRoaXMgY29tbWl0IiBjb21tYW5kIHJldmVydH0KICAgICB9CiAgICAgJHJvd2N0eG1lbnUgY29uZmlndXJlIC10ZWFyb2ZmIDAKIApAQCAtMjY0Niw2ICsyNjcxLDExIEBACiAgICAgfQogfQogCitwcm9jIGJpbmRtb2RmdW5jdGlvbmtleSB7bW9kIG4gc2NyaXB0fSB7CisgICAgYmluZCAuIDwkbW9kLUYkbj4gJHNjcmlwdAorICAgIGNhdGNoIHsgYmluZCAuIDwkbW9kLVhGODZfU3dpdGNoX1ZUXyRuPiAkc2NyaXB0IH0KK30KKwogIyBzZXQgdGhlIGZvY3VzIGJhY2sgdG8gdGhlIHRvcGxldmVsIGZvciBhbnkgY2xpY2sgb3V0c2lkZQogIyB0aGUgZW50cnkgd2lkZ2V0cwogcHJvYyBjbGljayB7d30gewpAQCAtMjcwMSw4ICsyNzMxLDE2IEBACiAgICAgZ2xvYmFsIHZpZXduYW1lIHZpZXdmaWxlcyB2aWV3YXJncyB2aWV3YXJnc2NtZCB2aWV3cGVybSBuZXh0dmlld251bQogICAgIGdsb2JhbCBjbWl0bW9kZSB3cmFwY29tbWVudCBkYXRldGltZWZvcm1hdCBsaW1pdGRpZmZzCiAgICAgZ2xvYmFsIGNvbG9ycyB1aWNvbG9yIGJnY29sb3IgZmdjb2xvciBkaWZmY29sb3JzIGRpZmZjb250ZXh0IHNlbGVjdGJnY29sb3IKKyAgICBnbG9iYWwgdWlmZ2NvbG9yIHVpZmdkaXNhYmxlZGNvbG9yCisgICAgZ2xvYmFsIGhlYWRiZ2NvbG9yIGhlYWRmZ2NvbG9yIGhlYWRvdXRsaW5lY29sb3IgcmVtb3RlYmdjb2xvcgorICAgIGdsb2JhbCB0YWdiZ2NvbG9yIHRhZ2ZnY29sb3IgdGFnb3V0bGluZWNvbG9yCisgICAgZ2xvYmFsIHJlZmxpbmVjb2xvciBmaWxlc2VwYmdjb2xvciBmaWxlc2VwZmdjb2xvcgorICAgIGdsb2JhbCBtZXJnZWNvbG9ycyBmb3VuZGJnY29sb3IgY3VycmVudHNlYXJjaGhpdGJnY29sb3IKKyAgICBnbG9iYWwgbGluZWhvdmVyYmdjb2xvciBsaW5laG92ZXJmZ2NvbG9yIGxpbmVob3Zlcm91dGxpbmVjb2xvciBjaXJjbGVjb2xvcnMKKyAgICBnbG9iYWwgbWFpbmhlYWRjaXJjbGVjb2xvciB3b3JraW5nZmlsZXNjaXJjbGVjb2xvciBpbmRleGNpcmNsZWNvbG9yCisgICAgZ2xvYmFsIGxpbmtmZ2NvbG9yIGNpcmNsZW91dGxpbmVjb2xvcgogICAgIGdsb2JhbCBhdXRvc2VsZWN0IGF1dG9zZWxsZW4gZXh0ZGlmZnRvb2wgcGVyZmlsZV9hdHRycyBtYXJrYmdjb2xvciB1c2VfdHRrCi0gICAgZ2xvYmFsIGhpZGVyZW1vdGVzIHdhbnRfdHRrCisgICAgZ2xvYmFsIGhpZGVyZW1vdGVzIHdhbnRfdHRrIG1heHJlZnMKIAogICAgIGlmIHskc3R1ZmZzYXZlZH0gcmV0dXJuCiAgICAgaWYgeyFbd2luZm8gdmlld2FibGUgLl19IHJldHVybgpAQCAtMjcyNCw2ICsyNzYyLDcgQEAKIAlwdXRzICRmIFtsaXN0IHNldCBhdXRvc2VsZWN0ICRhdXRvc2VsZWN0XQogCXB1dHMgJGYgW2xpc3Qgc2V0IGF1dG9zZWxsZW4gJGF1dG9zZWxsZW5dCiAJcHV0cyAkZiBbbGlzdCBzZXQgc2hvd25lYXJ0YWdzICRzaG93bmVhcnRhZ3NdCisJcHV0cyAkZiBbbGlzdCBzZXQgbWF4cmVmcyAkbWF4cmVmc10KIAlwdXRzICRmIFtsaXN0IHNldCBoaWRlcmVtb3RlcyAkaGlkZXJlbW90ZXNdCiAJcHV0cyAkZiBbbGlzdCBzZXQgc2hvd2xvY2FsY2hhbmdlcyAkc2hvd2xvY2FsY2hhbmdlc10KIAlwdXRzICRmIFtsaXN0IHNldCBkYXRldGltZWZvcm1hdCAkZGF0ZXRpbWVmb3JtYXRdCkBAIC0yNzMyLDEzICsyNzcxLDM3IEBACiAJcHV0cyAkZiBbbGlzdCBzZXQgd2FudF90dGsgJHdhbnRfdHRrXQogCXB1dHMgJGYgW2xpc3Qgc2V0IGJnY29sb3IgJGJnY29sb3JdCiAJcHV0cyAkZiBbbGlzdCBzZXQgZmdjb2xvciAkZmdjb2xvcl0KKwlwdXRzICRmIFtsaXN0IHNldCB1aWZnY29sb3IgJHVpZmdjb2xvcl0KKwlwdXRzICRmIFtsaXN0IHNldCB1aWZnZGlzYWJsZWRjb2xvciAkdWlmZ2Rpc2FibGVkY29sb3JdCiAJcHV0cyAkZiBbbGlzdCBzZXQgY29sb3JzICRjb2xvcnNdCiAJcHV0cyAkZiBbbGlzdCBzZXQgZGlmZmNvbG9ycyAkZGlmZmNvbG9yc10KKwlwdXRzICRmIFtsaXN0IHNldCBtZXJnZWNvbG9ycyAkbWVyZ2Vjb2xvcnNdCiAJcHV0cyAkZiBbbGlzdCBzZXQgbWFya2JnY29sb3IgJG1hcmtiZ2NvbG9yXQogCXB1dHMgJGYgW2xpc3Qgc2V0IGRpZmZjb250ZXh0ICRkaWZmY29udGV4dF0KIAlwdXRzICRmIFtsaXN0IHNldCBzZWxlY3RiZ2NvbG9yICRzZWxlY3RiZ2NvbG9yXQorCXB1dHMgJGYgW2xpc3Qgc2V0IGZvdW5kYmdjb2xvciAkZm91bmRiZ2NvbG9yXQorCXB1dHMgJGYgW2xpc3Qgc2V0IGN1cnJlbnRzZWFyY2hoaXRiZ2NvbG9yICRjdXJyZW50c2VhcmNoaGl0Ymdjb2xvcl0KIAlwdXRzICRmIFtsaXN0IHNldCBleHRkaWZmdG9vbCAkZXh0ZGlmZnRvb2xdCiAJcHV0cyAkZiBbbGlzdCBzZXQgcGVyZmlsZV9hdHRycyAkcGVyZmlsZV9hdHRyc10KKwlwdXRzICRmIFtsaXN0IHNldCBoZWFkYmdjb2xvciAkaGVhZGJnY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgaGVhZGZnY29sb3IgJGhlYWRmZ2NvbG9yXQorCXB1dHMgJGYgW2xpc3Qgc2V0IGhlYWRvdXRsaW5lY29sb3IgJGhlYWRvdXRsaW5lY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgcmVtb3RlYmdjb2xvciAkcmVtb3RlYmdjb2xvcl0KKwlwdXRzICRmIFtsaXN0IHNldCB0YWdiZ2NvbG9yICR0YWdiZ2NvbG9yXQorCXB1dHMgJGYgW2xpc3Qgc2V0IHRhZ2ZnY29sb3IgJHRhZ2ZnY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgdGFnb3V0bGluZWNvbG9yICR0YWdvdXRsaW5lY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgcmVmbGluZWNvbG9yICRyZWZsaW5lY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgZmlsZXNlcGJnY29sb3IgJGZpbGVzZXBiZ2NvbG9yXQorCXB1dHMgJGYgW2xpc3Qgc2V0IGZpbGVzZXBmZ2NvbG9yICRmaWxlc2VwZmdjb2xvcl0KKwlwdXRzICRmIFtsaXN0IHNldCBsaW5laG92ZXJiZ2NvbG9yICRsaW5laG92ZXJiZ2NvbG9yXQorCXB1dHMgJGYgW2xpc3Qgc2V0IGxpbmVob3ZlcmZnY29sb3IgJGxpbmVob3ZlcmZnY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgbGluZWhvdmVyb3V0bGluZWNvbG9yICRsaW5laG92ZXJvdXRsaW5lY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgbWFpbmhlYWRjaXJjbGVjb2xvciAkbWFpbmhlYWRjaXJjbGVjb2xvcl0KKwlwdXRzICRmIFtsaXN0IHNldCB3b3JraW5nZmlsZXNjaXJjbGVjb2xvciAkd29ya2luZ2ZpbGVzY2lyY2xlY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgaW5kZXhjaXJjbGVjb2xvciAkaW5kZXhjaXJjbGVjb2xvcl0KKwlwdXRzICRmIFtsaXN0IHNldCBjaXJjbGVjb2xvcnMgJGNpcmNsZWNvbG9yc10KKwlwdXRzICRmIFtsaXN0IHNldCBsaW5rZmdjb2xvciAkbGlua2ZnY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgY2lyY2xlb3V0bGluZWNvbG9yICRjaXJjbGVvdXRsaW5lY29sb3JdCiAKIAlwdXRzICRmICJzZXQgZ2VvbWV0cnkobWFpbikgW3dtIGdlb21ldHJ5IC5dIgogCXB1dHMgJGYgInNldCBnZW9tZXRyeShzdGF0ZSkgW3dtIHN0YXRlIC5dIgpAQCAtMzMwOSw2ICszMzcyLDcgQEAKICAgICB9IGVsc2UgewogCWNhdGNoIHskY3RleHQgeXZpZXcgW2xpbmRleCAkZGlmZmZpbGVzdGFydCBbZXhwciB7JGwgLSAyfV1dfQogICAgIH0KKyAgICBzdXBwcmVzc19oaWdobGlnaHRpbmdfZmlsZV9mb3JfY3VycmVudF9zY3JvbGxwb3MKIH0KIAogcHJvYyBwb3BfZmxpc3RfbWVudSB7dyBYIFkgeCB5fSB7CkBAIC00NTk1LDYgKzQ2NTksOCBAQAogCXNldCBnZHRhcmdzIFtjb25jYXQgLS0gJHJlbGF0aXZlX3BhdGhzXQogICAgIH0gZWxzZWlmIHskZ2R0dHlwZSBlcSBbbWMgImFkZGluZy9yZW1vdmluZyBzdHJpbmc6Il19IHsKIAlzZXQgZ2R0YXJncyBbbGlzdCAiLVMkaGlnaGxpZ2h0X2ZpbGVzIl0KKyAgICB9IGVsc2VpZiB7JGdkdHR5cGUgZXEgW21jICJjaGFuZ2luZyBsaW5lcyBtYXRjaGluZzoiXX0geworCXNldCBnZHRhcmdzIFtsaXN0ICItRyRoaWdobGlnaHRfZmlsZXMiXQogICAgIH0gZWxzZSB7CiAJIyBtdXN0IGJlICJjb250YWluaW5nOiIsIGkuZS4gd2UncmUgc2VhcmNoaW5nIGNvbW1pdCBpbmZvCiAJcmV0dXJuCkBAIC01OTAzLDE1ICs1OTY5LDE3IEBACiAgICAgZ2xvYmFsIGxpbmVodGFnIGxpbmVudGFnIGxpbmVkdGFnIHNlbGVjdGVkbGluZQogICAgIGdsb2JhbCBjYW52eG1heCBib2xkaWRzIGJvbGRuYW1laWRzIGZnY29sb3IgbWFya2VkaWQKICAgICBnbG9iYWwgbWFpbmhlYWRpZCBudWxsaWQgbnVsbGlkMiBjaXJjbGVpdGVtIGNpcmNsZWNvbG9ycyBjdHhidXQKKyAgICBnbG9iYWwgbWFpbmhlYWRjaXJjbGVjb2xvciB3b3JraW5nZmlsZXNjaXJjbGVjb2xvciBpbmRleGNpcmNsZWNvbG9yCisgICAgZ2xvYmFsIGNpcmNsZW91dGxpbmVjb2xvcgogCiAgICAgIyBsaXN0ZWQgaXMgMCBmb3IgYm91bmRhcnksIDEgZm9yIG5vcm1hbCwgMiBmb3IgbmVnYXRpdmUsIDMgZm9yIGxlZnQsIDQgZm9yIHJpZ2h0CiAgICAgc2V0IGxpc3RlZCAkY21pdGxpc3RlZCgkY3VydmlldywkaWQpCiAgICAgaWYgeyRpZCBlcSAkbnVsbGlkfSB7Ci0Jc2V0IG9maWxsIHJlZAorCXNldCBvZmlsbCAkd29ya2luZ2ZpbGVzY2lyY2xlY29sb3IKICAgICB9IGVsc2VpZiB7JGlkIGVxICRudWxsaWQyfSB7Ci0Jc2V0IG9maWxsIGdyZWVuCisJc2V0IG9maWxsICRpbmRleGNpcmNsZWNvbG9yCiAgICAgfSBlbHNlaWYgeyRpZCBlcSAkbWFpbmhlYWRpZH0gewotCXNldCBvZmlsbCB5ZWxsb3cKKwlzZXQgb2ZpbGwgJG1haW5oZWFkY2lyY2xlY29sb3IKICAgICB9IGVsc2UgewogCXNldCBvZmlsbCBbbGluZGV4ICRjaXJjbGVjb2xvcnMgJGxpc3RlZF0KICAgICB9CkBAIC01OTIxLDIxICs1OTg5LDIxIEBACiAgICAgaWYgeyRsaXN0ZWQgPD0gMn0gewogCXNldCB0IFskY2FudiBjcmVhdGUgb3ZhbCBbZXhwciB7JHggLSAkb3JhZH1dIFtleHByIHskeSAtICRvcmFkfV0gXAogCQkgICBbZXhwciB7JHggKyAkb3JhZCAtIDF9XSBbZXhwciB7JHkgKyAkb3JhZCAtIDF9XSBcCi0JCSAgIC1maWxsICRvZmlsbCAtb3V0bGluZSAkZmdjb2xvciAtd2lkdGggMSAtdGFncyBjaXJjbGVdCisJCSAgIC1maWxsICRvZmlsbCAtb3V0bGluZSAkY2lyY2xlb3V0bGluZWNvbG9yIC13aWR0aCAxIC10YWdzIGNpcmNsZV0KICAgICB9IGVsc2VpZiB7JGxpc3RlZCA9PSAzfSB7CiAJIyB0cmlhbmdsZSBwb2ludGluZyBsZWZ0IGZvciBsZWZ0LXNpZGUgY29tbWl0cwogCXNldCB0IFskY2FudiBjcmVhdGUgcG9seWdvbiBcCiAJCSAgIFtleHByIHskeCAtICRvcmFkfV0gJHkgXAogCQkgICBbZXhwciB7JHggKyAkb3JhZCAtIDF9XSBbZXhwciB7JHkgLSAkb3JhZH1dIFwKIAkJICAgW2V4cHIgeyR4ICsgJG9yYWQgLSAxfV0gW2V4cHIgeyR5ICsgJG9yYWQgLSAxfV0gXAotCQkgICAtZmlsbCAkb2ZpbGwgLW91dGxpbmUgJGZnY29sb3IgLXdpZHRoIDEgLXRhZ3MgY2lyY2xlXQorCQkgICAtZmlsbCAkb2ZpbGwgLW91dGxpbmUgJGNpcmNsZW91dGxpbmVjb2xvciAtd2lkdGggMSAtdGFncyBjaXJjbGVdCiAgICAgfSBlbHNlIHsKIAkjIHRyaWFuZ2xlIHBvaW50aW5nIHJpZ2h0IGZvciByaWdodC1zaWRlIGNvbW1pdHMKIAlzZXQgdCBbJGNhbnYgY3JlYXRlIHBvbHlnb24gXAogCQkgICBbZXhwciB7JHggKyAkb3JhZCAtIDF9XSAkeSBcCiAJCSAgIFtleHByIHskeCAtICRvcmFkfV0gW2V4cHIgeyR5IC0gJG9yYWR9XSBcCiAJCSAgIFtleHByIHskeCAtICRvcmFkfV0gW2V4cHIgeyR5ICsgJG9yYWQgLSAxfV0gXAotCQkgICAtZmlsbCAkb2ZpbGwgLW91dGxpbmUgJGZnY29sb3IgLXdpZHRoIDEgLXRhZ3MgY2lyY2xlXQorCQkgICAtZmlsbCAkb2ZpbGwgLW91dGxpbmUgJGNpcmNsZW91dGxpbmVjb2xvciAtd2lkdGggMSAtdGFncyBjaXJjbGVdCiAgICAgfQogICAgIHNldCBjaXJjbGVpdGVtKCRyb3cpICR0CiAgICAgJGNhbnYgcmFpc2UgJHQKQEAgLTYzMjMsNiArNjM5MSw5IEBACiAgICAgZ2xvYmFsIGlkdGFncyBpZGhlYWRzIGlkb3RoZXJyZWZzIG1haW5oZWFkCiAgICAgZ2xvYmFsIGxpbmVzcGMgbHRoaWNrbmVzcwogICAgIGdsb2JhbCBjYW52IHJvd3RleHR4IGN1cnZpZXcgZmdjb2xvciBiZ2NvbG9yIGN0eGJ1dAorICAgIGdsb2JhbCBoZWFkYmdjb2xvciBoZWFkZmdjb2xvciBoZWFkb3V0bGluZWNvbG9yIHJlbW90ZWJnY29sb3IKKyAgICBnbG9iYWwgdGFnYmdjb2xvciB0YWdmZ2NvbG9yIHRhZ291dGxpbmVjb2xvcgorICAgIGdsb2JhbCByZWZsaW5lY29sb3IKIAogICAgIHNldCBtYXJrcyB7fQogICAgIHNldCBudGFncyAwCkBAIC02MzYwLDcgKzY0MzEsNyBAQAogCXNldCB4dCBbZXhwciB7JHh0ICsgJGRlbHRhICsgJHdpZCArICRsdGhpY2tuZXNzICsgJGxpbmVzcGN9XQogICAgIH0KICAgICBzZXQgdCBbJGNhbnYgY3JlYXRlIGxpbmUgJHggJHkxIFtsaW5kZXggJHh2YWxzIGVuZF0gJHkxIFwKLQkgICAgICAgLXdpZHRoICRsdGhpY2tuZXNzIC1maWxsIGJsYWNrIC10YWdzIHRhZy4kaWRdCisJICAgICAgIC13aWR0aCAkbHRoaWNrbmVzcyAtZmlsbCAkcmVmbGluZWNvbG9yIC10YWdzIHRhZy4kaWRdCiAgICAgJGNhbnYgbG93ZXIgJHQKICAgICBmb3JlYWNoIHRhZyAkbWFya3MgeCAkeHZhbHMgd2lkICR3dmFscyB7CiAJc2V0IHRhZ19xdW90ZWQgW3N0cmluZyBtYXAgeyUgJSV9ICR0YWddCkBAIC02MzcxLDEzICs2NDQyLDE0IEBACiAJICAgICMgZHJhdyBhIHRhZwogCSAgICBzZXQgdCBbJGNhbnYgY3JlYXRlIHBvbHlnb24gJHggW2V4cHIgeyR5dCArICRkZWx0YX1dICR4bCAkeXQgXAogCQkgICAgICAgJHhyICR5dCAkeHIgJHliICR4bCAkeWIgJHggW2V4cHIgeyR5YiAtICRkZWx0YX1dIFwKLQkJICAgICAgIC13aWR0aCAxIC1vdXRsaW5lIGJsYWNrIC1maWxsIHllbGxvdyAtdGFncyB0YWcuJGlkXQorCQkgICAgICAgLXdpZHRoIDEgLW91dGxpbmUgJHRhZ291dGxpbmVjb2xvciAtZmlsbCAkdGFnYmdjb2xvciBcCisJCSAgICAgICAtdGFncyB0YWcuJGlkXQogCSAgICAkY2FudiBiaW5kICR0IDwxPiBbbGlzdCBzaG93dGFnICR0YWdfcXVvdGVkIDFdCiAJICAgIHNldCByb3d0ZXh0eChbcm93b2Zjb21taXQgJGlkXSkgW2V4cHIgeyR4ciArICRsaW5lc3BjfV0KIAl9IGVsc2UgewogCSAgICAjIGRyYXcgYSBoZWFkIG9yIG90aGVyIHJlZgogCSAgICBpZiB7W2luY3IgbmhlYWRzIC0xXSA+PSAwfSB7Ci0JCXNldCBjb2wgZ3JlZW4KKwkJc2V0IGNvbCAkaGVhZGJnY29sb3IKIAkJaWYgeyR0YWcgZXEgJG1haW5oZWFkfSB7CiAJCSAgICBzZXQgZm9udCBtYWluZm9udGJvbGQKIAkJfQpAQCAtNjM5MywxMCArNjQ2NSwxMCBAQAogCQlzZXQgeXRpIFtleHByIHskeXQgKyAxfV0KIAkJc2V0IHhyaSBbZXhwciB7JHggKyAkcndpZH1dCiAJCSRjYW52IGNyZWF0ZSBwb2x5Z29uICR4aSAkeXRpICR4cmkgJHl0aSAkeHJpICR5YiAkeGkgJHliIFwKLQkJCS13aWR0aCAwIC1maWxsICIjZmZkZGFhIiAtdGFncyB0YWcuJGlkCisJCQktd2lkdGggMCAtZmlsbCAkcmVtb3RlYmdjb2xvciAtdGFncyB0YWcuJGlkCiAJICAgIH0KIAl9Ci0Jc2V0IHQgWyRjYW52IGNyZWF0ZSB0ZXh0ICR4bCAkeTEgLWFuY2hvciB3IC10ZXh0ICR0YWcgLWZpbGwgJGZnY29sb3IgXAorCXNldCB0IFskY2FudiBjcmVhdGUgdGV4dCAkeGwgJHkxIC1hbmNob3IgdyAtdGV4dCAkdGFnIC1maWxsICRoZWFkZmdjb2xvciBcCiAJCSAgIC1mb250ICRmb250IC10YWdzIFtsaXN0IHRhZy4kaWQgdGV4dF1dCiAJaWYgeyRudGFncyA+PSAwfSB7CiAJICAgICRjYW52IGJpbmQgJHQgPDE+IFtsaXN0IHNob3d0YWcgJHRhZ19xdW90ZWQgMV0KQEAgLTY3NzcsNiArNjg0OSw3IEBACiAKIHByb2Mgc2V0bGluayB7aWQgbGt9IHsKICAgICBnbG9iYWwgY3VydmlldyBjdGV4dCBwZW5kaW5nbGlua3MKKyAgICBnbG9iYWwgbGlua2ZnY29sb3IKIAogICAgIGlmIHtbc3RyaW5nIHJhbmdlICRpZCAwIDFdIGVxICItZyJ9IHsKICAgICAgIHNldCBpZCBbc3RyaW5nIHJhbmdlICRpZCAyIGVuZF0KQEAgLTY3OTQsNyArNjg2Nyw3IEBACiAJc2V0IGtub3duIFtjb21taXRpbnZpZXcgJGlkICRjdXJ2aWV3XQogICAgIH0KICAgICBpZiB7JGtub3dufSB7Ci0JJGN0ZXh0IHRhZyBjb25mICRsayAtZm9yZWdyb3VuZCBibHVlIC11bmRlcmxpbmUgMQorCSRjdGV4dCB0YWcgY29uZiAkbGsgLWZvcmVncm91bmQgJGxpbmtmZ2NvbG9yIC11bmRlcmxpbmUgMQogCSRjdGV4dCB0YWcgYmluZCAkbGsgPDE+IFtsaXN0IHNlbGJ5aWQgJGlkXQogCSRjdGV4dCB0YWcgYmluZCAkbGsgPEVudGVyPiB7bGlua2N1cnNvciAlVyAxfQogCSRjdGV4dCB0YWcgYmluZCAkbGsgPExlYXZlPiB7bGlua2N1cnNvciAlVyAtMX0KQEAgLTY4NTcsNyArNjkzMCw3IEBACiAjIGFkZCBhIGxpc3Qgb2YgdGFnIG9yIGJyYW5jaCBuYW1lcyBhdCBwb3NpdGlvbiBwb3MKICMgcmV0dXJucyB0aGUgbnVtYmVyIG9mIG5hbWVzIGluc2VydGVkCiBwcm9jIGFwcGVuZHJlZnMge3BvcyBpZHMgdmFyfSB7Ci0gICAgZ2xvYmFsIGN0ZXh0IGxpbmtudW0gY3VydmlldyAkdmFyIG1heHJlZnMKKyAgICBnbG9iYWwgY3RleHQgbGlua251bSBjdXJ2aWV3ICR2YXIgbWF4cmVmcyBtYWluaGVhZGlkCiAKICAgICBpZiB7W2NhdGNoIHskY3RleHQgaW5kZXggJHBvc31dfSB7CiAJcmV0dXJuIDAKQEAgLTY4NzAsMjQgKzY5NDMsNTQgQEAKIAkgICAgbGFwcGVuZCB0YWdzIFtsaXN0ICR0YWcgJGlkXQogCX0KICAgICB9CisKKyAgICBzZXQgc2VwIHt9CisgICAgc2V0IHRhZ3MgW2xzb3J0IC1pbmRleCAwIC1kZWNyZWFzaW5nICR0YWdzXQorICAgIHNldCBudXRhZ3MgMAorCiAgICAgaWYge1tsbGVuZ3RoICR0YWdzXSA+ICRtYXhyZWZzfSB7Ci0JJGN0ZXh0IGluc2VydCAkcG9zICJbbWMgIm1hbnkiXSAoW2xsZW5ndGggJHRhZ3NdKSIKLSAgICB9IGVsc2UgewotCXNldCB0YWdzIFtsc29ydCAtaW5kZXggMCAtZGVjcmVhc2luZyAkdGFnc10KLQlzZXQgc2VwIHt9Ci0JZm9yZWFjaCB0aSAkdGFncyB7Ci0JICAgIHNldCBpZCBbbGluZGV4ICR0aSAxXQotCSAgICBzZXQgbGsgbGluayRsaW5rbnVtCi0JICAgIGluY3IgbGlua251bQotCSAgICAkY3RleHQgdGFnIGRlbGV0ZSAkbGsKLQkgICAgJGN0ZXh0IGluc2VydCAkcG9zICRzZXAKLQkgICAgJGN0ZXh0IGluc2VydCAkcG9zIFtsaW5kZXggJHRpIDBdICRsawotCSAgICBzZXRsaW5rICRpZCAkbGsKLQkgICAgc2V0IHNlcCAiLCAiCisJIyBJZiB3ZSBhcmUgZGlzcGxheWluZyBoZWFkcywgYW5kIHRoZXJlIGFyZSB0b28gbWFueSwKKwkjIHNlZSBpZiB0aGVyZSBhcmUgc29tZSBpbXBvcnRhbnQgaGVhZHMgdG8gZGlzcGxheS4KKwkjIEN1cnJlbnRseSB0aGlzIG1lYW5zICJtYXN0ZXIiIGFuZCB0aGUgY3VycmVudCBoZWFkLgorCXNldCBpdGFncyB7fQorCWlmIHskdmFyIGVxICJpZGhlYWRzIn0geworCSAgICBzZXQgdXRhZ3Mge30KKwkgICAgZm9yZWFjaCB0aSAkdGFncyB7CisJCXNldCBobmFtZSBbbGluZGV4ICR0aSAwXQorCQlzZXQgaWQgW2xpbmRleCAkdGkgMV0KKwkJaWYgeygkaG5hbWUgZXEgIm1hc3RlciIgfHwgJGlkIGVxICRtYWluaGVhZGlkKSAmJgorCQkgICAgW2xsZW5ndGggJGl0YWdzXSA8ICRtYXhyZWZzfSB7CisJCSAgICBsYXBwZW5kIGl0YWdzICR0aQorCQl9IGVsc2UgeworCQkgICAgbGFwcGVuZCB1dGFncyAkdGkKKwkJfQorCSAgICB9CisJICAgIHNldCB0YWdzICR1dGFncwogCX0KKwlpZiB7JGl0YWdzIG5lIHt9fSB7CisJICAgIHNldCBzdHIgW21jICJhbmQgbWFueSBtb3JlIl0KKwkgICAgc2V0IHNlcCAiICIKKwl9IGVsc2UgeworCSAgICBzZXQgc3RyIFttYyAibWFueSJdCisJfQorCSRjdGV4dCBpbnNlcnQgJHBvcyAiJHN0ciAoW2xsZW5ndGggJHRhZ3NdKSIKKwlzZXQgbnV0YWdzIFtsbGVuZ3RoICR0YWdzXQorCXNldCB0YWdzICRpdGFncwogICAgIH0KKworICAgIGZvcmVhY2ggdGkgJHRhZ3MgeworCXNldCBpZCBbbGluZGV4ICR0aSAxXQorCXNldCBsayBsaW5rJGxpbmtudW0KKwlpbmNyIGxpbmtudW0KKwkkY3RleHQgdGFnIGRlbGV0ZSAkbGsKKwkkY3RleHQgaW5zZXJ0ICRwb3MgJHNlcAorCSRjdGV4dCBpbnNlcnQgJHBvcyBbbGluZGV4ICR0aSAwXSAkbGsKKwlzZXRsaW5rICRpZCAkbGsKKwlzZXQgc2VwICIsICIKKyAgICB9CisgICAgJGN0ZXh0IHRhZyBhZGQgd3dyYXAgIiRwb3MgbGluZXN0YXJ0IiAiJHBvcyBsaW5lZW5kIgogICAgICRjdGV4dCBjb25mIC1zdGF0ZSBkaXNhYmxlZAotICAgIHJldHVybiBbbGxlbmd0aCAkdGFnc10KKyAgICByZXR1cm4gW2V4cHIge1tsbGVuZ3RoICR0YWdzXSArICRudXRhZ3N9XQogfQogCiAjIGNhbGxlZCB3aGVuIHdlIGhhdmUgZmluaXNoZWQgY29tcHV0aW5nIHRoZSBuZWFyYnkgdGFncwpAQCAtNzUxOSw5ICs3NjIyLDEzIEBACiB9CiAKIHByb2MgZ2V0dHJlZWRpZmZzIHtpZHN9IHsKLSAgICBnbG9iYWwgdHJlZWRpZmYgdHJlZXBlbmRpbmcKKyAgICBnbG9iYWwgdHJlZWRpZmYgdHJlZXBlbmRpbmcgbGltaXRkaWZmcyB2ZmlsZWxpbWl0IGN1cnZpZXcKIAotICAgIGlmIHtbY2F0Y2gge3NldCBnZHRmIFtvcGVuIFtkaWZmY21kICRpZHMgey0tbm8tY29tbWl0LWlkfV0gcl19XX0gcmV0dXJuCisgICAgc2V0IGNtZCBbZGlmZmNtZCAkaWRzIHstLW5vLWNvbW1pdC1pZH1dCisgICAgaWYgeyRsaW1pdGRpZmZzICYmICR2ZmlsZWxpbWl0KCRjdXJ2aWV3KSBuZSB7fX0geworCSAgICBzZXQgY21kIFtjb25jYXQgJGNtZCAtLSAkdmZpbGVsaW1pdCgkY3VydmlldyldCisgICAgfQorICAgIGlmIHtbY2F0Y2gge3NldCBnZHRmIFtvcGVuICRjbWQgcl19XX0gcmV0dXJuCiAKICAgICBzZXQgdHJlZXBlbmRpbmcgJGlkcwogICAgIHNldCB0cmVlZGlmZiB7fQpAQCAtNzU2NSwxNyArNzY3Miw3IEBACiAJcmV0dXJuIFtleHByIHskbnIgPj0gJG1heD8gMjogMX1dCiAgICAgfQogICAgIGNsb3NlICRnZHRmCi0gICAgaWYgeyRsaW1pdGRpZmZzICYmICR2ZmlsZWxpbWl0KCRjdXJ2aWV3KSBuZSB7fX0gewotCXNldCBmbGlzdCB7fQotCWZvcmVhY2ggZiAkdHJlZWRpZmYgewotCSAgICBpZiB7W3BhdGhfZmlsdGVyICR2ZmlsZWxpbWl0KCRjdXJ2aWV3KSAkZl19IHsKLQkJbGFwcGVuZCBmbGlzdCAkZgotCSAgICB9Ci0JfQotCXNldCB0cmVlZGlmZnMoJGlkcykgJGZsaXN0Ci0gICAgfSBlbHNlIHsKLQlzZXQgdHJlZWRpZmZzKCRpZHMpICR0cmVlZGlmZgotICAgIH0KKyAgICBzZXQgdHJlZWRpZmZzKCRpZHMpICR0cmVlZGlmZgogICAgIHVuc2V0IHRyZWVwZW5kaW5nCiAgICAgaWYgeyRjbWl0bW9kZSBlcSAidHJlZSIgJiYgW2xsZW5ndGggJGRpZmZpZHNdID09IDF9IHsKIAlnZXR0cmVlICRkaWZmaWRzCkBAIC03OTQ3LDMyICs4MDQ0LDQ1IEBACiAgICAgJGN0ZXh0IHRhZyBjb25mIGRyZXN1bHQgLWVsaWRlIFtsaW5kZXggJGRpZmZlbGlkZSAxXQogfQogCi1wcm9jIGhpZ2hsaWdodGZpbGUge2xvYyBjbGluZX0gewotICAgIGdsb2JhbCBjdGV4dCBjZmxpc3QgY2ZsaXN0X3RvcAorcHJvYyBoaWdobGlnaHRmaWxlIHtjbGluZX0geworICAgIGdsb2JhbCBjZmxpc3QgY2ZsaXN0X3RvcAogCi0gICAgJGN0ZXh0IHl2aWV3ICRsb2MKKyAgICBpZiB7IVtpbmZvIGV4aXN0cyBjZmxpc3RfdG9wXX0gcmV0dXJuCisKICAgICAkY2ZsaXN0IHRhZyByZW1vdmUgaGlnaGxpZ2h0ICRjZmxpc3RfdG9wLjAgIiRjZmxpc3RfdG9wLjAgbGluZWVuZCIKICAgICAkY2ZsaXN0IHRhZyBhZGQgaGlnaGxpZ2h0ICRjbGluZS4wICIkY2xpbmUuMCBsaW5lZW5kIgogICAgICRjZmxpc3Qgc2VlICRjbGluZS4wCiAgICAgc2V0IGNmbGlzdF90b3AgJGNsaW5lCiB9CiAKK3Byb2MgaGlnaGxpZ2h0ZmlsZV9mb3Jfc2Nyb2xscG9zIHt0b3BpZHh9IHsKKyAgICBnbG9iYWwgY21pdG1vZGUgZGlmZmZpbGVzdGFydAorCisgICAgaWYgeyRjbWl0bW9kZSBlcSAidHJlZSJ9IHJldHVybgorICAgIGlmIHshW2luZm8gZXhpc3RzIGRpZmZmaWxlc3RhcnRdfSByZXR1cm4KKworICAgIHNldCB0b3AgW2xpbmRleCBbc3BsaXQgJHRvcGlkeCAuXSAwXQorICAgIGlmIHskZGlmZmZpbGVzdGFydCBlcSB7fSB8fCAkdG9wIDwgW2xpbmRleCAkZGlmZmZpbGVzdGFydCAwXX0geworCWhpZ2hsaWdodGZpbGUgMAorICAgIH0gZWxzZSB7CisJaGlnaGxpZ2h0ZmlsZSBbZXhwciB7W2JzZWFyY2ggJGRpZmZmaWxlc3RhcnQgJHRvcF0gKyAyfV0KKyAgICB9Cit9CisKIHByb2MgcHJldmZpbGUge30gewogICAgIGdsb2JhbCBkaWZmZmlsZXN0YXJ0IGN0ZXh0IGNtaXRtb2RlCiAKICAgICBpZiB7JGNtaXRtb2RlIGVxICJ0cmVlIn0gcmV0dXJuCiAgICAgc2V0IHByZXYgMC4wCi0gICAgc2V0IHByZXZsaW5lIDEKICAgICBzZXQgaGVyZSBbJGN0ZXh0IGluZGV4IEAwLDBdCiAgICAgZm9yZWFjaCBsb2MgJGRpZmZmaWxlc3RhcnQgewogCWlmIHtbJGN0ZXh0IGNvbXBhcmUgJGxvYyA+PSAkaGVyZV19IHsKLQkgICAgaGlnaGxpZ2h0ZmlsZSAkcHJldiAkcHJldmxpbmUKKwkgICAgJGN0ZXh0IHl2aWV3ICRwcmV2CiAJICAgIHJldHVybgogCX0KIAlzZXQgcHJldiAkbG9jCi0JaW5jciBwcmV2bGluZQogICAgIH0KLSAgICBoaWdobGlnaHRmaWxlICRwcmV2ICRwcmV2bGluZQorICAgICRjdGV4dCB5dmlldyAkcHJldgogfQogCiBwcm9jIG5leHRmaWxlIHt9IHsKQEAgLTc5ODAsMTEgKzgwOTAsOSBAQAogCiAgICAgaWYgeyRjbWl0bW9kZSBlcSAidHJlZSJ9IHJldHVybgogICAgIHNldCBoZXJlIFskY3RleHQgaW5kZXggQDAsMF0KLSAgICBzZXQgbGluZSAxCiAgICAgZm9yZWFjaCBsb2MgJGRpZmZmaWxlc3RhcnQgewotCWluY3IgbGluZQogCWlmIHtbJGN0ZXh0IGNvbXBhcmUgJGxvYyA+ICRoZXJlXX0gewotCSAgICBoaWdobGlnaHRmaWxlICRsb2MgJGxpbmUKKwkgICAgJGN0ZXh0IHl2aWV3ICRsb2MKIAkgICAgcmV0dXJuCiAJfQogICAgIH0KQEAgLTgwMzAsNyArODEzOCw2IEBACiBwcm9jIGluY3JzZWFyY2gge25hbWUgaXggb3B9IHsKICAgICBnbG9iYWwgY3RleHQgc2VhcmNoc3RyaW5nIHNlYXJjaGRpcm4KIAotICAgICRjdGV4dCB0YWcgcmVtb3ZlIGZvdW5kIDEuMCBlbmQKICAgICBpZiB7W2NhdGNoIHskY3RleHQgaW5kZXggYW5jaG9yfV19IHsKIAkjIG5vIGFuY2hvciBzZXQsIHVzZSBzdGFydCBvZiBzZWxlY3Rpb24sIG9yIG9mIHZpc2libGUgYXJlYQogCXNldCBzZWwgWyRjdGV4dCB0YWcgcmFuZ2VzIHNlbF0KQEAgLTgwNDMsMTIgKzgxNTAsMTcgQEAKIAl9CiAgICAgfQogICAgIGlmIHskc2VhcmNoc3RyaW5nIG5lIHt9fSB7Ci0Jc2V0IGhlcmUgWyRjdGV4dCBzZWFyY2ggJHNlYXJjaGRpcm4gLS0gJHNlYXJjaHN0cmluZyBhbmNob3JdCisJc2V0IGhlcmUgWyRjdGV4dCBzZWFyY2ggLWNvdW50IG1sZW4gJHNlYXJjaGRpcm4gLS0gJHNlYXJjaHN0cmluZyBhbmNob3JdCiAJaWYgeyRoZXJlIG5lIHt9fSB7CiAJICAgICRjdGV4dCBzZWUgJGhlcmUKKwkgICAgc2V0IG1lbmQgIiRoZXJlICsgJG1sZW4gYyIKKwkgICAgJGN0ZXh0IHRhZyByZW1vdmUgc2VsIDEuMCBlbmQKKwkgICAgJGN0ZXh0IHRhZyBhZGQgc2VsICRoZXJlICRtZW5kCisJICAgIHN1cHByZXNzX2hpZ2hsaWdodGluZ19maWxlX2Zvcl9jdXJyZW50X3Njcm9sbHBvcworCSAgICBoaWdobGlnaHRmaWxlX2Zvcl9zY3JvbGxwb3MgJGhlcmUKIAl9Ci0Jc2VhcmNobWFya3Zpc2libGUgMQogICAgIH0KKyAgICByZWhpZ2hsaWdodF9zZWFyY2hfcmVzdWx0cwogfQogCiBwcm9jIGRvc2VhcmNoIHt9IHsKQEAgLTgwNzEsOSArODE4MywxMiBAQAogCSAgICByZXR1cm4KIAl9CiAJJGN0ZXh0IHNlZSAkbWF0Y2gKKwlzdXBwcmVzc19oaWdobGlnaHRpbmdfZmlsZV9mb3JfY3VycmVudF9zY3JvbGxwb3MKKwloaWdobGlnaHRmaWxlX2Zvcl9zY3JvbGxwb3MgJG1hdGNoCiAJc2V0IG1lbmQgIiRtYXRjaCArICRtbGVuIGMiCiAJJGN0ZXh0IHRhZyBhZGQgc2VsICRtYXRjaCAkbWVuZAogCSRjdGV4dCBtYXJrIHVuc2V0IGFuY2hvcgorCXJlaGlnaGxpZ2h0X3NlYXJjaF9yZXN1bHRzCiAgICAgfQogfQogCkBAIC04MDk3LDIxICs4MjEyLDQxIEBACiAJICAgIHJldHVybgogCX0KIAkkY3RleHQgc2VlICRtYXRjaAorCXN1cHByZXNzX2hpZ2hsaWdodGluZ19maWxlX2Zvcl9jdXJyZW50X3Njcm9sbHBvcworCWhpZ2hsaWdodGZpbGVfZm9yX3Njcm9sbHBvcyAkbWF0Y2gKIAlzZXQgbWVuZCAiJG1hdGNoICsgJG1sIGMiCiAJJGN0ZXh0IHRhZyBhZGQgc2VsICRtYXRjaCAkbWVuZAogCSRjdGV4dCBtYXJrIHVuc2V0IGFuY2hvcgorCXJlaGlnaGxpZ2h0X3NlYXJjaF9yZXN1bHRzCisgICAgfQorfQorCitwcm9jIHJlaGlnaGxpZ2h0X3NlYXJjaF9yZXN1bHRzIHt9IHsKKyAgICBnbG9iYWwgY3RleHQgc2VhcmNoc3RyaW5nCisKKyAgICAkY3RleHQgdGFnIHJlbW92ZSBmb3VuZCAxLjAgZW5kCisgICAgJGN0ZXh0IHRhZyByZW1vdmUgY3VycmVudHNlYXJjaGhpdCAxLjAgZW5kCisKKyAgICBpZiB7JHNlYXJjaHN0cmluZyBuZSB7fX0geworCXNlYXJjaG1hcmt2aXNpYmxlIDEKICAgICB9CiB9CiAKIHByb2Mgc2VhcmNobWFyayB7Zmlyc3QgbGFzdH0gewogICAgIGdsb2JhbCBjdGV4dCBzZWFyY2hzdHJpbmcKIAorICAgIHNldCBzZWwgWyRjdGV4dCB0YWcgcmFuZ2VzIHNlbF0KKwogICAgIHNldCBtZW5kICRmaXJzdC4wCiAgICAgd2hpbGUgezF9IHsKIAlzZXQgbWF0Y2ggWyRjdGV4dCBzZWFyY2ggLWNvdW50IG1sZW4gLS0gJHNlYXJjaHN0cmluZyAkbWVuZCAkbGFzdC5lbmRdCiAJaWYgeyRtYXRjaCBlcSB7fX0gYnJlYWsKIAlzZXQgbWVuZCAiJG1hdGNoICsgJG1sZW4gYyIKLQkkY3RleHQgdGFnIGFkZCBmb3VuZCAkbWF0Y2ggJG1lbmQKKwlpZiB7JHNlbCBuZSB7fSAmJiBbJGN0ZXh0IGNvbXBhcmUgJG1hdGNoID09IFtsaW5kZXggJHNlbCAwXV19IHsKKwkgICAgJGN0ZXh0IHRhZyBhZGQgY3VycmVudHNlYXJjaGhpdCAkbWF0Y2ggJG1lbmQKKwl9IGVsc2UgeworCSAgICAkY3RleHQgdGFnIGFkZCBmb3VuZCAkbWF0Y2ggJG1lbmQKKwl9CiAgICAgfQogfQogCkBAIC04MTM3LDggKzgyNzIsMjMgQEAKICAgICB9CiB9CiAKK3Byb2Mgc3VwcHJlc3NfaGlnaGxpZ2h0aW5nX2ZpbGVfZm9yX2N1cnJlbnRfc2Nyb2xscG9zIHt9IHsKKyAgICBnbG9iYWwgY3RleHQgc3VwcHJlc3NfaGlnaGxpZ2h0aW5nX2ZpbGVfZm9yX3RoaXNfc2Nyb2xscG9zCisKKyAgICBzZXQgc3VwcHJlc3NfaGlnaGxpZ2h0aW5nX2ZpbGVfZm9yX3RoaXNfc2Nyb2xscG9zIFskY3RleHQgaW5kZXggQDAsMF0KK30KKwogcHJvYyBzY3JvbGx0ZXh0IHtmMCBmMX0gewotICAgIGdsb2JhbCBzZWFyY2hzdHJpbmcKKyAgICBnbG9iYWwgc2VhcmNoc3RyaW5nIGNtaXRtb2RlIGN0ZXh0CisgICAgZ2xvYmFsIHN1cHByZXNzX2hpZ2hsaWdodGluZ19maWxlX2Zvcl90aGlzX3Njcm9sbHBvcworCisgICAgc2V0IHRvcGlkeCBbJGN0ZXh0IGluZGV4IEAwLDBdCisgICAgaWYgeyFbaW5mbyBleGlzdHMgc3VwcHJlc3NfaGlnaGxpZ2h0aW5nX2ZpbGVfZm9yX3RoaXNfc2Nyb2xscG9zXQorCXx8ICR0b3BpZHggbmUgJHN1cHByZXNzX2hpZ2hsaWdodGluZ19maWxlX2Zvcl90aGlzX3Njcm9sbHBvc30geworCWhpZ2hsaWdodGZpbGVfZm9yX3Njcm9sbHBvcyAkdG9waWR4CisgICAgfQorCisgICAgY2F0Y2gge3Vuc2V0IHN1cHByZXNzX2hpZ2hsaWdodGluZ19maWxlX2Zvcl90aGlzX3Njcm9sbHBvc30KIAogICAgIC5ibGVmdC5ib3R0b20uc2Igc2V0ICRmMCAkZjEKICAgICBpZiB7JHNlYXJjaHN0cmluZyBuZSB7fX0gewpAQCAtODM1NCw2ICs4NTA0LDggQEAKIHByb2MgbGluZWhvdmVyIHt9IHsKICAgICBnbG9iYWwgaG92ZXJ4IGhvdmVyeSBob3ZlcmlkIGhvdmVydGltZXIKICAgICBnbG9iYWwgY2FudiBsaW5lc3BjIGx0aGlja25lc3MKKyAgICBnbG9iYWwgbGluZWhvdmVyYmdjb2xvciBsaW5laG92ZXJmZ2NvbG9yIGxpbmVob3Zlcm91dGxpbmVjb2xvcgorCiAgICAgZ2xvYmFsIGNvbW1pdGluZm8KIAogICAgIHNldCB0ZXh0IFtsaW5kZXggJGNvbW1pdGluZm8oJGhvdmVyaWQpIDBdCkBAIC04MzY3LDEwICs4NTE5LDExIEBACiAgICAgc2V0IHgxIFtleHByIHskeCArIFtmb250IG1lYXN1cmUgbWFpbmZvbnQgJHRleHRdICsgMiAqICRsdGhpY2tuZXNzfV0KICAgICBzZXQgeTEgW2V4cHIgeyR5ICsgJGxpbmVzcGMgKyAyICogJGx0aGlja25lc3N9XQogICAgIHNldCB0IFskY2FudiBjcmVhdGUgcmVjdGFuZ2xlICR4MCAkeTAgJHgxICR5MSBcCi0JICAgICAgIC1maWxsIFwjZmZmZjgwIC1vdXRsaW5lIGJsYWNrIC13aWR0aCAxIC10YWdzIGhvdmVyXQorCSAgICAgICAtZmlsbCAkbGluZWhvdmVyYmdjb2xvciAtb3V0bGluZSAkbGluZWhvdmVyb3V0bGluZWNvbG9yIFwKKwkgICAgICAgLXdpZHRoIDEgLXRhZ3MgaG92ZXJdCiAgICAgJGNhbnYgcmFpc2UgJHQKICAgICBzZXQgdCBbJGNhbnYgY3JlYXRlIHRleHQgJHggJHkgLWFuY2hvciBudyAtdGV4dCAkdGV4dCAtdGFncyBob3ZlciBcCi0JICAgICAgIC1mb250IG1haW5mb250XQorCSAgICAgICAtZm9udCBtYWluZm9udCAtZmlsbCAkbGluZWhvdmVyZmdjb2xvcl0KICAgICAkY2FudiByYWlzZSAkdAogfQogCkBAIC04OTM0LDEyICs5MDg3LDEzIEBACiBwcm9jIHJlZHJhd3RhZ3Mge2lkfSB7CiAgICAgZ2xvYmFsIGNhbnYgbGluZWh0YWcgaWRwb3MgY3VycmVudGlkIGN1cnZpZXcgY21pdGxpc3RlZCBtYXJrZWRpZAogICAgIGdsb2JhbCBjYW52eG1heCBpZGRyYXduIGNpcmNsZWl0ZW0gbWFpbmhlYWRpZCBjaXJjbGVjb2xvcnMKKyAgICBnbG9iYWwgbWFpbmhlYWRjaXJjbGVjb2xvcgogCiAgICAgaWYgeyFbY29tbWl0aW52aWV3ICRpZCAkY3Vydmlld119IHJldHVybgogICAgIGlmIHshW2luZm8gZXhpc3RzIGlkZHJhd24oJGlkKV19IHJldHVybgogICAgIHNldCByb3cgW3Jvd29mY29tbWl0ICRpZF0KICAgICBpZiB7JGlkIGVxICRtYWluaGVhZGlkfSB7Ci0Jc2V0IG9maWxsIHllbGxvdworCXNldCBvZmlsbCAkbWFpbmhlYWRjaXJjbGVjb2xvcgogICAgIH0gZWxzZSB7CiAJc2V0IG9maWxsIFtsaW5kZXggJGNpcmNsZWNvbG9ycyAkY21pdGxpc3RlZCgkY3VydmlldywkaWQpXQogICAgIH0KQEAgLTkxOTYsNiArOTM1MCw2NyBAQAogICAgIG5vdGJ1c3kgY2hlcnJ5cGljawogfQogCitwcm9jIHJldmVydCB7fSB7CisgICAgZ2xvYmFsIHJvd21lbnVpZCBjdXJ2aWV3CisgICAgZ2xvYmFsIG1haW5oZWFkIG1haW5oZWFkaWQKKyAgICBnbG9iYWwgZ2l0ZGlyCisKKyAgICBzZXQgb2xkaGVhZCBbZXhlYyBnaXQgcmV2LXBhcnNlIEhFQURdCisgICAgc2V0IGRoZWFkcyBbZGVzY2hlYWRzICRyb3dtZW51aWRdCisgICAgaWYgeyAkZGhlYWRzIGVxIHt9IHx8IFtsc2VhcmNoIC1leGFjdCAkZGhlYWRzICRvbGRoZWFkXSA9PSAtMSB9IHsKKyAgICAgICBzZXQgb2sgW2NvbmZpcm1fcG9wdXAgW21jICJDb21taXQgJXMgaXMgbm90XAorICAgICAgICAgICBpbmNsdWRlZCBpbiBicmFuY2ggJXMgLS0gcmVhbGx5IHJldmVydCBpdD8iIFwKKyAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nIHJhbmdlICRyb3dtZW51aWQgMCA3XSAkbWFpbmhlYWRdXQorICAgICAgIGlmIHshJG9rfSByZXR1cm4KKyAgICB9CisgICAgbm93YnVzeSByZXZlcnQgW21jICJSZXZlcnRpbmciXQorICAgIHVwZGF0ZQorCisgICAgaWYgW2NhdGNoIHtleGVjIGdpdCByZXZlcnQgLS1uby1lZGl0ICRyb3dtZW51aWR9IGVycl0geworICAgICAgICBub3RidXN5IHJldmVydAorICAgICAgICBpZiBbcmVnZXhwIHtmaWxlcyB3b3VsZCBiZSBvdmVyd3JpdHRlbiBieSBtZXJnZTooXG4oKCB8XHQpK1teXG5dK1xuKSspfVwKKyAgICAgICAgICAgICAgICAkZXJyIG1hdGNoIGZpbGVzXSB7CisgICAgICAgICAgICByZWdzdWIge1xuKCB8XHQpK30gJGZpbGVzICJcbiIgZmlsZXMKKyAgICAgICAgICAgIGVycm9yX3BvcHVwIFttYyAiUmV2ZXJ0IGZhaWxlZCBiZWNhdXNlIG9mIGxvY2FsIGNoYW5nZXMgdG9cCisgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBmaWxlczolcyBQbGVhc2UgY29tbWl0LCByZXNldCBvciBzdGFzaCBcCisgICAgICAgICAgICAgICAgeW91ciBjaGFuZ2VzIGFuZCB0cnkgYWdhaW4uIiAkZmlsZXNdCisgICAgICAgIH0gZWxzZWlmIFtyZWdleHAge2Vycm9yOiBjb3VsZCBub3QgcmV2ZXJ0fSAkZXJyXSB7CisgICAgICAgICAgICBpZiBbY29uZmlybV9wb3B1cCBbbWMgIlJldmVydCBmYWlsZWQgYmVjYXVzZSBvZiBtZXJnZSBjb25mbGljdC5cblwKKyAgICAgICAgICAgICAgICBEbyB5b3Ugd2lzaCB0byBydW4gZ2l0IGNpdG9vbCB0byByZXNvbHZlIGl0PyJdXSB7CisgICAgICAgICAgICAgICAgIyBGb3JjZSBjaXRvb2wgdG8gcmVhZCBNRVJHRV9NU0cKKyAgICAgICAgICAgICAgICBmaWxlIGRlbGV0ZSBbZmlsZSBqb2luICRnaXRkaXIgIkdJVEdVSV9NU0ciXQorICAgICAgICAgICAgICAgIGV4ZWNfY2l0b29sIHt9ICRyb3dtZW51aWQKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsgZXJyb3JfcG9wdXAgJGVyciB9CisgICAgICAgIHJ1biB1cGRhdGVjb21taXRzCisgICAgICAgIHJldHVybgorICAgIH0KKworICAgIHNldCBuZXdoZWFkIFtleGVjIGdpdCByZXYtcGFyc2UgSEVBRF0KKyAgICBpZiB7ICRuZXdoZWFkIGVxICRvbGRoZWFkIH0geworICAgICAgICBub3RidXN5IHJldmVydAorICAgICAgICBlcnJvcl9wb3B1cCBbbWMgIk5vIGNoYW5nZXMgY29tbWl0dGVkIl0KKyAgICAgICAgcmV0dXJuCisgICAgfQorCisgICAgYWRkbmV3Y2hpbGQgJG5ld2hlYWQgJG9sZGhlYWQKKworICAgIGlmIFtjb21taXRpbnZpZXcgJG9sZGhlYWQgJGN1cnZpZXddIHsKKyAgICAgICAgIyBYWFggdGhpcyBpc24ndCByaWdodCBpZiB3ZSBoYXZlIGEgcGF0aCBsaW1pdC4uLgorICAgICAgICBpbnNlcnRyb3cgJG5ld2hlYWQgJG9sZGhlYWQgJGN1cnZpZXcKKyAgICAgICAgaWYgeyRtYWluaGVhZCBuZSB7fX0geworICAgICAgICAgICAgbW92ZWhlYWQgJG5ld2hlYWQgJG1haW5oZWFkCisgICAgICAgICAgICBtb3ZlZGhlYWQgJG5ld2hlYWQgJG1haW5oZWFkCisgICAgICAgIH0KKyAgICAgICAgc2V0IG1haW5oZWFkaWQgJG5ld2hlYWQKKyAgICAgICAgcmVkcmF3dGFncyAkb2xkaGVhZAorICAgICAgICByZWRyYXd0YWdzICRuZXdoZWFkCisgICAgICAgIHNlbGJ5aWQgJG5ld2hlYWQKKyAgICB9CisKKyAgICBub3RidXN5IHJldmVydAorfQorCiBwcm9jIHJlc2V0aGVhZCB7fSB7CiAgICAgZ2xvYmFsIG1haW5oZWFkIHJvd21lbnVpZCBjb25maXJtX29rIHJlc2V0dHlwZSBOUwogCkBAIC0xMDUwOSwxMyArMTA3MjQsMTMgQEAKICMgaW5jbHVkaW5nIGlkIGl0c2VsZiBpZiBpdCBoYXMgYSBoZWFkLgogcHJvYyBkZXNjaGVhZHMge2lkfSB7CiAgICAgZ2xvYmFsIGFyY25vcyBhcmNzdGFydCBhcmNpZHMgYXJjaGVhZHMgaWRoZWFkcyBjYWNoZWRfZGhlYWRzCi0gICAgZ2xvYmFsIGFsbHBhcmVudHMKKyAgICBnbG9iYWwgYWxscGFyZW50cyBhcmNvdXQKIAogICAgIGlmIHshW2luZm8gZXhpc3RzIGFsbHBhcmVudHMoJGlkKV19IHsKIAlyZXR1cm4ge30KICAgICB9CiAgICAgc2V0IGFyZXQge30KLSAgICBpZiB7W2xsZW5ndGggJGFyY25vcygkaWQpXSA9PSAxICYmIFtsbGVuZ3RoICRhbGxwYXJlbnRzKCRpZCldID09IDF9IHsKKyAgICBpZiB7IVtpbmZvIGV4aXN0cyBhcmNvdXQoJGlkKV19IHsKIAkjIHBhcnQtd2F5IGFsb25nIGFuIGFyYzsgY2hlY2sgaXQgZmlyc3QKIAlzZXQgYSBbbGluZGV4ICRhcmNub3MoJGlkKSAwXQogCWlmIHskYXJjaGVhZHMoJGEpIG5lIHt9fSB7CkBAIC0xMDU5OSw3ICsxMDgxNCw3IEBACiB9CiAKIHByb2MgY2hhbmdlZHJlZnMge30gewotICAgIGdsb2JhbCBjYWNoZWRfZGhlYWRzIGNhY2hlZF9kdGFncyBjYWNoZWRfYXRhZ3MKKyAgICBnbG9iYWwgY2FjaGVkX2RoZWFkcyBjYWNoZWRfZHRhZ3MgY2FjaGVkX2F0YWdzIGNhY2hlZF90YWdjb250ZW50CiAgICAgZ2xvYmFsIGFyY3RhZ3MgYXJjaGVhZHMgYXJjbm9zIGFyY291dCBpZGhlYWRzIGlkdGFncwogCiAgICAgZm9yZWFjaCBpZCBbY29uY2F0IFthcnJheSBuYW1lcyBpZGhlYWRzXSBbYXJyYXkgbmFtZXMgaWR0YWdzXV0gewpAQCAtMTA2MTEsNiArMTA4MjYsNyBAQAogCSAgICB9CiAJfQogICAgIH0KKyAgICBjYXRjaCB7dW5zZXQgY2FjaGVkX3RhZ2NvbnRlbnR9CiAgICAgY2F0Y2gge3Vuc2V0IGNhY2hlZF9kdGFnc30KICAgICBjYXRjaCB7dW5zZXQgY2FjaGVkX2F0YWdzfQogICAgIGNhdGNoIHt1bnNldCBjYWNoZWRfZGhlYWRzfQpAQCAtMTA2NjMsNyArMTA4NzksNyBAQAogfQogCiBwcm9jIHNob3d0YWcge3RhZyBpc25ld30gewotICAgIGdsb2JhbCBjdGV4dCB0YWdjb250ZW50cyB0YWdpZHMgbGlua251bSB0YWdvYmppZAorICAgIGdsb2JhbCBjdGV4dCBjYWNoZWRfdGFnY29udGVudCB0YWdpZHMgbGlua251bSB0YWdvYmppZAogCiAgICAgaWYgeyRpc25ld30gewogCWFkZHRvaGlzdG9yeSBbbGlzdCBzaG93dGFnICR0YWcgMF0gc2F2ZWN0ZXh0cG9zCkBAIC0xMDY3MiwxMyArMTA4ODgsMTMgQEAKICAgICBjbGVhcl9jdGV4dAogICAgIHNldHRhYnMgMAogICAgIHNldCBsaW5rbnVtIDAKLSAgICBpZiB7IVtpbmZvIGV4aXN0cyB0YWdjb250ZW50cygkdGFnKV19IHsKKyAgICBpZiB7IVtpbmZvIGV4aXN0cyBjYWNoZWRfdGFnY29udGVudCgkdGFnKV19IHsKIAljYXRjaCB7Ci0gICAgICAgICAgIHNldCB0YWdjb250ZW50cygkdGFnKSBbZXhlYyBnaXQgY2F0LWZpbGUgdGFnICR0YWddCisgICAgICAgICAgIHNldCBjYWNoZWRfdGFnY29udGVudCgkdGFnKSBbZXhlYyBnaXQgY2F0LWZpbGUgLXAgJHRhZ10KIAl9CiAgICAgfQotICAgIGlmIHtbaW5mbyBleGlzdHMgdGFnY29udGVudHMoJHRhZyldfSB7Ci0Jc2V0IHRleHQgJHRhZ2NvbnRlbnRzKCR0YWcpCisgICAgaWYge1tpbmZvIGV4aXN0cyBjYWNoZWRfdGFnY29udGVudCgkdGFnKV19IHsKKwlzZXQgdGV4dCAkY2FjaGVkX3RhZ2NvbnRlbnQoJHRhZykKICAgICB9IGVsc2UgewogCXNldCB0ZXh0ICJbbWMgIlRhZyJdOiAkdGFnXG5bbWMgIklkIl06ICAkdGFnaWRzKCR0YWcpIgogICAgIH0KQEAgLTEwODYzLDcgKzExMDc5LDcgQEAKIHByb2MgcHJlZnNwYWdlX2dlbmVyYWwge25vdGVib29rfSB7CiAgICAgZ2xvYmFsIE5TIG1heHdpZHRoIG1heGdyYXBocGN0IHNob3duZWFydGFncyBzaG93bG9jYWxjaGFuZ2VzCiAgICAgZ2xvYmFsIHRhYnN0b3AgbGltaXRkaWZmcyBhdXRvc2VsZWN0IGF1dG9zZWxsZW4gZXh0ZGlmZnRvb2wgcGVyZmlsZV9hdHRycwotICAgIGdsb2JhbCBoaWRlcmVtb3RlcyB3YW50X3R0ayBoYXZlX3R0aworICAgIGdsb2JhbCBoaWRlcmVtb3RlcyB3YW50X3R0ayBoYXZlX3R0ayBtYXhyZWZzCiAKICAgICBzZXQgcGFnZSBbY3JlYXRlX3ByZWZzX3BhZ2UgJG5vdGVib29rLmdlbmVyYWxdCiAKQEAgLTEwODkyLDkgKzExMTA4LDEyIEBACiAgICAgJHtOU306OmxhYmVsICRwYWdlLnRhYnN0b3BsIC10ZXh0IFttYyAiVGFiIHNwYWNpbmciXQogICAgIHNwaW5ib3ggJHBhZ2UudGFic3RvcCAtZnJvbSAxIC10byAyMCAtd2lkdGggNCAtdGV4dHZhcmlhYmxlIHRhYnN0b3AKICAgICBncmlkIHggJHBhZ2UudGFic3RvcGwgJHBhZ2UudGFic3RvcCAtc3RpY2t5IHcKLSAgICAke05TfTo6Y2hlY2tidXR0b24gJHBhZ2UubnRhZyAtdGV4dCBbbWMgIkRpc3BsYXkgbmVhcmJ5IHRhZ3MiXSBcCisgICAgJHtOU306OmNoZWNrYnV0dG9uICRwYWdlLm50YWcgLXRleHQgW21jICJEaXNwbGF5IG5lYXJieSB0YWdzL2hlYWRzIl0gXAogCS12YXJpYWJsZSBzaG93bmVhcnRhZ3MKICAgICBncmlkIHggJHBhZ2UubnRhZyAtc3RpY2t5IHcKKyAgICAke05TfTo6bGFiZWwgJHBhZ2UubWF4cmVmc2wgLXRleHQgW21jICJNYXhpbXVtICMgdGFncy9oZWFkcyB0byBzaG93Il0KKyAgICBzcGluYm94ICRwYWdlLm1heHJlZnMgLWZyb20gMSAtdG8gMTAwMCAtd2lkdGggNCAtdGV4dHZhcmlhYmxlIG1heHJlZnMKKyAgICBncmlkIHggJHBhZ2UubWF4cmVmc2wgJHBhZ2UubWF4cmVmcyAtc3RpY2t5IHcKICAgICAke05TfTo6Y2hlY2tidXR0b24gJHBhZ2UubGRpZmYgLXRleHQgW21jICJMaW1pdCBkaWZmcyB0byBsaXN0ZWQgcGF0aHMiXSBcCiAJLXZhcmlhYmxlIGxpbWl0ZGlmZnMKICAgICBncmlkIHggJHBhZ2UubGRpZmYgLXN0aWNreSB3CkBAIC0xMTUzMiw2ICsxMTc1MSwyMCBAQAogICAgIGV4aXQgMQogfQogCisjIG9uIE9TWCBicmluZyB0aGUgY3VycmVudCBXaXNoIHByb2Nlc3Mgd2luZG93IHRvIGZyb250CitpZiB7W3RrIHdpbmRvd2luZ3N5c3RlbV0gZXEgImFxdWEifSB7CisgICAgZXhlYyBvc2FzY3JpcHQgLWUgW2Zvcm1hdCB7CisgICAgICAgIHRlbGwgYXBwbGljYXRpb24gIlN5c3RlbSBFdmVudHMiCisgICAgICAgICAgICBzZXQgZnJvbnRtb3N0IG9mIHByb2Nlc3NlcyB3aG9zZSB1bml4IGlkIGlzICVkIHRvIHRydWUKKyAgICAgICAgZW5kIHRlbGwKKyAgICB9IFtwaWRdIF0KK30KKworIyBVbnNldCBHSVRfVFJBQ0UgdmFyIGlmIHNldAoraWYgeyBbaW5mbyBleGlzdHMgOjplbnYoR0lUX1RSQUNFKV0gfSB7CisgICAgdW5zZXQgOjplbnYoR0lUX1RSQUNFKQorfQorCiAjIGRlZmF1bHRzLi4uCiBzZXQgd3Jjb21jbWQgImdpdCBkaWZmLXRyZWUgLS1zdGRpbiAtcCAtLXByZXR0eSIKIApAQCAtMTE2MTQsMjIgKzExODQ3LDQ3IEBACiBzZXQgY29sb3JzIHtncmVlbiByZWQgYmx1ZSBtYWdlbnRhIGRhcmtncmV5IGJyb3duIG9yYW5nZX0KIGlmIHtbdGsgd2luZG93aW5nc3lzdGVtXSBlcSAid2luMzIifSB7CiAgICAgc2V0IHVpY29sb3IgU3lzdGVtQnV0dG9uRmFjZQorICAgIHNldCB1aWZnY29sb3IgU3lzdGVtQnV0dG9uVGV4dAorICAgIHNldCB1aWZnZGlzYWJsZWRjb2xvciBTeXN0ZW1EaXNhYmxlZFRleHQKICAgICBzZXQgYmdjb2xvciBTeXN0ZW1XaW5kb3cKLSAgICBzZXQgZmdjb2xvciBTeXN0ZW1CdXR0b25UZXh0CisgICAgc2V0IGZnY29sb3IgU3lzdGVtV2luZG93VGV4dAogICAgIHNldCBzZWxlY3RiZ2NvbG9yIFN5c3RlbUhpZ2hsaWdodAogfSBlbHNlIHsKICAgICBzZXQgdWljb2xvciBncmV5ODUKKyAgICBzZXQgdWlmZ2NvbG9yIGJsYWNrCisgICAgc2V0IHVpZmdkaXNhYmxlZGNvbG9yICIjOTk5IgogICAgIHNldCBiZ2NvbG9yIHdoaXRlCiAgICAgc2V0IGZnY29sb3IgYmxhY2sKICAgICBzZXQgc2VsZWN0Ymdjb2xvciBncmF5ODUKIH0KIHNldCBkaWZmY29sb3JzIHtyZWQgIiMwMGEwMDAiIGJsdWV9CiBzZXQgZGlmZmNvbnRleHQgMworc2V0IG1lcmdlY29sb3JzIHtyZWQgYmx1ZSBncmVlbiBwdXJwbGUgYnJvd24gIiMwMDkwOTAiIG1hZ2VudGEgIiM4MDgwMDAiICIjMDA5MDAwIiAiI2ZmMDA4MCIgY3lhbiAiI2IwNzA3MCIgIiM3MGIwZjAiICIjNzBmMGIwIiAiI2YwYjA3MCIgIiNmZjcwYjAifQogc2V0IGlnbm9yZXNwYWNlIDAKIHNldCB3b3JkZGlmZiAiIgogc2V0IG1hcmtiZ2NvbG9yICIjZTBlMGZmIgogCitzZXQgaGVhZGJnY29sb3IgZ3JlZW4KK3NldCBoZWFkZmdjb2xvciBibGFjaworc2V0IGhlYWRvdXRsaW5lY29sb3IgYmxhY2sKK3NldCByZW1vdGViZ2NvbG9yICNmZmRkYWEKK3NldCB0YWdiZ2NvbG9yIHllbGxvdworc2V0IHRhZ2ZnY29sb3IgYmxhY2sKK3NldCB0YWdvdXRsaW5lY29sb3IgYmxhY2sKK3NldCByZWZsaW5lY29sb3IgYmxhY2sKK3NldCBmaWxlc2VwYmdjb2xvciAjYWFhYWFhCitzZXQgZmlsZXNlcGZnY29sb3IgYmxhY2sKK3NldCBsaW5laG92ZXJiZ2NvbG9yICNmZmZmODAKK3NldCBsaW5laG92ZXJmZ2NvbG9yIGJsYWNrCitzZXQgbGluZWhvdmVyb3V0bGluZWNvbG9yIGJsYWNrCitzZXQgbWFpbmhlYWRjaXJjbGVjb2xvciB5ZWxsb3cKK3NldCB3b3JraW5nZmlsZXNjaXJjbGVjb2xvciByZWQKK3NldCBpbmRleGNpcmNsZWNvbG9yIGdyZWVuCiBzZXQgY2lyY2xlY29sb3JzIHt3aGl0ZSBibHVlIGdyYXkgYmx1ZSBibHVlfQorc2V0IGxpbmtmZ2NvbG9yIGJsdWUKK3NldCBjaXJjbGVvdXRsaW5lY29sb3IgJGZnY29sb3IKK3NldCBmb3VuZGJnY29sb3IgeWVsbG93CitzZXQgY3VycmVudHNlYXJjaGhpdGJnY29sb3Igb3JhbmdlCiAKICMgYnV0dG9uIGZvciBwb3BwaW5nIHVwIGNvbnRleHQgbWVudXMKIGlmIHtbdGsgd2luZG93aW5nc3lzdGVtXSBlcSAiYXF1YSJ9IHsKZGlmZiAtLWdpdCBhL2dpdGstZ2l0L3BvL3N2LnBvIGIvZ2l0ay1naXQvcG8vc3YucG8KaW5kZXggMmYwN2EyZS4uZGY5NWUwMSAxMDA2NDQKLS0tIGEvZ2l0ay1naXQvcG8vc3YucG8KKysrIGIvZ2l0ay1naXQvcG8vc3YucG8KQEAgLTEsNDAgKzEsNTAgQEAKICMgU3dlZGlzaCB0cmFuc2xhdGlvbiBmb3IgZ2l0awotIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMCBQYXVsIE1hY2tlcnJhcworIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMyBQYXVsIE1hY2tlcnJhcwogIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgZ2l0ayBwYWNrYWdlLgogIwotIyBQZXRlciBLcmVmdGluZyA8cGV0ZXJAc29mdHdvbHZlcy5wcC5zZT4sIDIwMDgtMjAxMC4KICMgTWlrYWVsIE1hZ251c3NvbiA8bWlrYWNodUBnbWFpbC5jb20+LCAyMDA4LgorIyBQZXRlciBLcmVmdGluZyA8cGV0ZXJAc29mdHdvbHZlcy5wcC5zZT4sIDIwMDgsIDIwMDksIDIwMTAsIDIwMTIsIDIwMTMuCisjCiBtc2dpZCAiIgogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBzdlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMC0wOS0xMiAyMToxNCswMTAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAxMC0wOS0xMiAyMToxNiswMTAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTMtMDUtMTYgMDg6MDYrMDEwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMTMtMDUtMTYgMDg6MTIrMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogUGV0ZXIgS3JlZnRpbmcgPHBldGVyQHNvZnR3b2x2ZXMucHAuc2U+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogU3dlZGlzaCA8dHAtc3ZAbGlzdG9yLnRwLXN2LnNlPlxuIgorIkxhbmd1YWdlOiBzdlxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCi0iQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdCIKKyJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAKLSM6IGdpdGs6MTE1CisjOiBnaXRrOjE0MAogbXNnaWQgIkNvdWxkbid0IGdldCBsaXN0IG9mIHVubWVyZ2VkIGZpbGVzOiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBow6RtdGEgbGlzdGEgw7Z2ZXIgZWogc2FtbWFuc2xhZ25hIGZpbGVyOiIKIAotIzogZ2l0azoyNzQKKyM6IGdpdGs6MjEwIGdpdGs6MjMzNAorbXNnaWQgIkNvbG9yIHdvcmRzIgorbXNnc3RyICJGw6RyZ2Egb3JkIgorCisjOiBnaXRrOjIxNSBnaXRrOjIzMzQgZ2l0azo3OTc3IGdpdGs6ODAxMAorbXNnaWQgIk1hcmt1cCB3b3JkcyIKK21zZ3N0ciAiTcOkcmsgdXBwIG9yZCIKKworIzogZ2l0azozMTIKIG1zZ2lkICJFcnJvciBwYXJzaW5nIHJldmlzaW9uczoiCiBtc2dzdHIgIkZlbCB2aWQgdG9sa25pbmcgYXYgcmV2aXNpb25lcjoiCiAKLSM6IGdpdGs6MzMwCisjOiBnaXRrOjM2OAogbXNnaWQgIkVycm9yIGV4ZWN1dGluZyAtLWFyZ3NjbWQgY29tbWFuZDoiCiBtc2dzdHIgIkZlbCB2aWQga8O2cm5pbmcgYXYgLS1hcmdzY21kLWtvbW1hbmRvOiIKIAotIzogZ2l0azozNDMKKyM6IGdpdGs6MzgxCiBtc2dpZCAiTm8gZmlsZXMgc2VsZWN0ZWQ6IC0tbWVyZ2Ugc3BlY2lmaWVkIGJ1dCBubyBmaWxlcyBhcmUgdW5tZXJnZWQuIgogbXNnc3RyICIiCiAiSW5nYSBmaWxlciB2YWxkZXM6IC0tbWVyZ2UgYW5nYXZzIG1lbiBkZXQgZmlubnMgaW5nYSBmaWxlciBzb20gaW50ZSBoYXIgIgogInNsYWdpdHMgc2FtbWFuLiIKIAotIzogZ2l0azozNDYKKyM6IGdpdGs6Mzg0CiBtc2dpZCAiIgogIk5vIGZpbGVzIHNlbGVjdGVkOiAtLW1lcmdlIHNwZWNpZmllZCBidXQgbm8gdW5tZXJnZWQgZmlsZXMgYXJlIHdpdGhpbiBmaWxlICIKICJsaW1pdC4iCkBAIC00Miw2MDUgKzUyLDYyNSBAQAogIkluZ2EgZmlsZXIgdmFsZGVzOiAtLW1lcmdlIGFuZ2F2cyBtZW4gZGV0IGZpbm5zIGluZ2EgZmlsZXIgaW5vbSAiCiAiZmlsYmVncsOkbnNuaW5nZW4uIgogCi0jOiBnaXRrOjM2OCBnaXRrOjUxNgorIzogZ2l0azo0MDYgZ2l0azo1NTQKIG1zZ2lkICJFcnJvciBleGVjdXRpbmcgZ2l0IGxvZzoiCiBtc2dzdHIgIkZlbCB2aWQga8O2cm5pbmcgYXYgZ2l0IGxvZzoiCiAKLSM6IGdpdGs6Mzg2IGdpdGs6NTMyCisjOiBnaXRrOjQyNCBnaXRrOjU3MAogbXNnaWQgIlJlYWRpbmciCiBtc2dzdHIgIkzDpHNlciIKIAotIzogZ2l0azo0NDYgZ2l0azo0MjcxCisjOiBnaXRrOjQ4NCBnaXRrOjQ0MDkKIG1zZ2lkICJSZWFkaW5nIGNvbW1pdHMuLi4iCiBtc2dzdHIgIkzDpHNlciBpbmNoZWNrbmluZ2FyLi4uIgogCi0jOiBnaXRrOjQ0OSBnaXRrOjE1ODAgZ2l0azo0Mjc0CisjOiBnaXRrOjQ4NyBnaXRrOjE2MjUgZ2l0azo0NDEyCiBtc2dpZCAiTm8gY29tbWl0cyBzZWxlY3RlZCIKIG1zZ3N0ciAiSW5nYSBpbmNoZWNrbmluZ2FyIG1hcmtlcmFkZSIKIAotIzogZ2l0azoxNDU2CisjOiBnaXRrOjE0OTkKIG1zZ2lkICJDYW4ndCBwYXJzZSBnaXQgbG9nIG91dHB1dDoiCiBtc2dzdHIgIkthbiBpbnRlIHRvbGthIHV0ZGF0YSBmcsOlbiBnaXQgbG9nOiIKIAotIzogZ2l0azoxNjc2CisjOiBnaXRrOjE3MTkKIG1zZ2lkICJObyBjb21taXQgaW5mb3JtYXRpb24gYXZhaWxhYmxlIgogbXNnc3RyICJJbmdlbiBpbmNoZWNrbmluZ3NpbmZvcm1hdGlvbiDDpHIgdGlsbGfDpG5nbGlnIgogCi0jOiBnaXRrOjE4MTgKKyM6IGdpdGs6MTg3NgogbXNnaWQgIm1jIgogbXNnc3RyICJtYyIKIAotIzogZ2l0azoxODUzIGdpdGs6NDA2NCBnaXRrOjkwNjcgZ2l0azoxMDYwNyBnaXRrOjEwODE3CisjOiBnaXRrOjE5MTEgZ2l0azo0MjAyIGdpdGs6OTQzNyBnaXRrOjEwOTc5IGdpdGs6MTEyNTgKIG1zZ2lkICJPSyIKIG1zZ3N0ciAiT0siCiAKLSM6IGdpdGs6MTg1NSBnaXRrOjQwNjYgZ2l0azo4NjU3IGdpdGs6ODczNiBnaXRrOjg4NTEgZ2l0azo4OTAwIGdpdGs6OTA2OQotIzogZ2l0azoxMDYwOCBnaXRrOjEwODE4CisjOiBnaXRrOjE5MTMgZ2l0azo0MjA0IGdpdGs6ODk2NCBnaXRrOjkwNDMgZ2l0azo5MTU5IGdpdGs6OTIwOCBnaXRrOjk0MzkKKyM6IGdpdGs6MTA5ODAgZ2l0azoxMTI1OQogbXNnaWQgIkNhbmNlbCIKIG1zZ3N0ciAiQXZicnl0IgogCi0jOiBnaXRrOjE5ODAKKyM6IGdpdGs6MjA0OAogbXNnaWQgIlVwZGF0ZSIKIG1zZ3N0ciAiVXBwZGF0ZXJhIgogCi0jOiBnaXRrOjE5ODEKKyM6IGdpdGs6MjA0OQogbXNnaWQgIlJlbG9hZCIKIG1zZ3N0ciAiTGFkZGEgb20iCiAKLSM6IGdpdGs6MTk4MgorIzogZ2l0azoyMDUwCiBtc2dpZCAiUmVyZWFkIHJlZmVyZW5jZXMiCiBtc2dzdHIgIkzDpHMgb20gcmVmZXJlbnNlciIKIAotIzogZ2l0azoxOTgzCisjOiBnaXRrOjIwNTEKIG1zZ2lkICJMaXN0IHJlZmVyZW5jZXMiCiBtc2dzdHIgIlZpc2EgcmVmZXJlbnNlciIKIAotIzogZ2l0azoxOTg1CisjOiBnaXRrOjIwNTMKIG1zZ2lkICJTdGFydCBnaXQgZ3VpIgogbXNnc3RyICJTdGFydGEgZ2l0IGd1aSIKIAotIzogZ2l0azoxOTg3CisjOiBnaXRrOjIwNTUKIG1zZ2lkICJRdWl0IgogbXNnc3RyICJBdnNsdXRhIgogCi0jOiBnaXRrOjE5NzkKKyM6IGdpdGs6MjA0NwogbXNnaWQgIkZpbGUiCiBtc2dzdHIgIkFya2l2IgogCi0jOiBnaXRrOjE5OTEKKyM6IGdpdGs6MjA1OQogbXNnaWQgIlByZWZlcmVuY2VzIgogbXNnc3RyICJJbnN0w6RsbG5pbmdhciIKIAotIzogZ2l0azoxOTkwCisjOiBnaXRrOjIwNTgKIG1zZ2lkICJFZGl0IgogbXNnc3RyICJSZWRpZ2VyYSIKIAotIzogZ2l0azoxOTk1CisjOiBnaXRrOjIwNjMKIG1zZ2lkICJOZXcgdmlldy4uLiIKIG1zZ3N0ciAiTnkgdnkuLi4iCiAKLSM6IGdpdGs6MTk5NgorIzogZ2l0azoyMDY0CiBtc2dpZCAiRWRpdCB2aWV3Li4uIgogbXNnc3RyICLDhG5kcmEgdnkuLi4iCiAKLSM6IGdpdGs6MTk5NworIzogZ2l0azoyMDY1CiBtc2dpZCAiRGVsZXRlIHZpZXciCiBtc2dzdHIgIlRhIGJvcnQgdnkiCiAKLSM6IGdpdGs6MTk5OQorIzogZ2l0azoyMDY3CiBtc2dpZCAiQWxsIGZpbGVzIgogbXNnc3RyICJBbGxhIGZpbGVyIgogCi0jOiBnaXRrOjE5OTQgZ2l0azozODE3CisjOiBnaXRrOjIwNjIgZ2l0azozOTU1CiBtc2dpZCAiVmlldyIKIG1zZ3N0ciAiVmlzYSIKIAotIzogZ2l0azoyMDA0IGdpdGs6MjAxNCBnaXRrOjI3ODcKKyM6IGdpdGs6MjA3MiBnaXRrOjIwODIgZ2l0azoyOTI1CiBtc2dpZCAiQWJvdXQgZ2l0ayIKIG1zZ3N0ciAiT20gZ2l0ayIKIAotIzogZ2l0azoyMDA1IGdpdGs6MjAxOQorIzogZ2l0azoyMDczIGdpdGs6MjA4NwogbXNnaWQgIktleSBiaW5kaW5ncyIKIG1zZ3N0ciAiVGFuZ2VudGJvcmRzYmluZG5pbmdhciIKIAotIzogZ2l0azoyMDAzIGdpdGs6MjAxOAorIzogZ2l0azoyMDcxIGdpdGs6MjA4NgogbXNnaWQgIkhlbHAiCiBtc2dzdHIgIkhqw6RscCIKIAotIzogZ2l0azoyMDk2IGdpdGs6ODEzMgorIzogZ2l0azoyMTY0IGdpdGs6ODQyMAogbXNnaWQgIlNIQTEgSUQ6IgogbXNnc3RyICJTSEExLWlkOiIKIAotIzogZ2l0azoyMTI3CisjOiBnaXRrOjIyMDgKIG1zZ2lkICJSb3ciCiBtc2dzdHIgIlJhZCIKIAotIzogZ2l0azoyMTY1CisjOiBnaXRrOjIyNDYKIG1zZ2lkICJGaW5kIgogbXNnc3RyICJTw7ZrIgogCi0jOiBnaXRrOjIxNjYKKyM6IGdpdGs6MjI0NwogbXNnaWQgIm5leHQiCiBtc2dzdHIgIm7DpHN0YSIKIAotIzogZ2l0azoyMTY3CisjOiBnaXRrOjIyNDgKIG1zZ2lkICJwcmV2IgogbXNnc3RyICJmw7ZyZWciCiAKLSM6IGdpdGs6MjE2OAorIzogZ2l0azoyMjQ5CiBtc2dpZCAiY29tbWl0IgogbXNnc3RyICJpbmNoZWNrbmluZyIKIAotIzogZ2l0azoyMTcxIGdpdGs6MjE3MyBnaXRrOjQ0MzIgZ2l0azo0NDU1IGdpdGs6NDQ3OSBnaXRrOjY0MjAgZ2l0azo2NDkyCi0jOiBnaXRrOjY1NzYKKyM6IGdpdGs6MjI1MiBnaXRrOjIyNTQgZ2l0azo0NTcwIGdpdGs6NDU5MyBnaXRrOjQ2MTcgZ2l0azo2NTkyIGdpdGs6NjY2NAorIzogZ2l0azo2NzQ5CiBtc2dpZCAiY29udGFpbmluZzoiCiBtc2dzdHIgInNvbSBpbm5laMOlbGxlcjoiCiAKLSM6IGdpdGs6MjE3NCBnaXRrOjMyOTggZ2l0azozMzAzIGdpdGs6NDUwNworIzogZ2l0azoyMjU1IGdpdGs6MzQzNyBnaXRrOjM0NDIgZ2l0azo0NjQ2CiBtc2dpZCAidG91Y2hpbmcgcGF0aHM6IgogbXNnc3RyICJzb20gcsO2ciBzw7ZrdsOkZzoiCiAKLSM6IGdpdGs6MjE3NSBnaXRrOjQ1MTIKKyM6IGdpdGs6MjI1NiBnaXRrOjQ2NjAKIG1zZ2lkICJhZGRpbmcvcmVtb3Zpbmcgc3RyaW5nOiIKIG1zZ3N0ciAic29tIGzDpGdnZXIvdGlsbCB0YXIgYm9ydCBzdHLDpG5nOiIKIAotIzogZ2l0azoyMTg0IGdpdGs6MjE4NgorIzogZ2l0azoyMjU3IGdpdGs6NDY2MgorbXNnaWQgImNoYW5naW5nIGxpbmVzIG1hdGNoaW5nOiIKK21zZ3N0ciAiw6RuZHJhciByYWRlciBzb20gbWF0Y2hhcjoiCisKKyM6IGdpdGs6MjI2NiBnaXRrOjIyNjggZ2l0azo0NjQ5CiBtc2dpZCAiRXhhY3QiCiBtc2dzdHIgIkV4YWt0IgogCi0jOiBnaXRrOjIxODYgZ2l0azo0NTg3IGdpdGs6NjM4OAorIzogZ2l0azoyMjY4IGdpdGs6NDczNyBnaXRrOjY1NjAKIG1zZ2lkICJJZ25DYXNlIgogbXNnc3RyICJJZ25WZXJzYWxlciIKIAotIzogZ2l0azoyMTg2IGdpdGs6NDQ4MSBnaXRrOjQ1ODUgZ2l0azo2Mzg0CisjOiBnaXRrOjIyNjggZ2l0azo0NjE5IGdpdGs6NDczNSBnaXRrOjY1NTYKIG1zZ2lkICJSZWdleHAiCiBtc2dzdHIgIlJlZy51dHRyLiIKIAotIzogZ2l0azoyMTg4IGdpdGs6MjE4OSBnaXRrOjQ2MDYgZ2l0azo0NjM2IGdpdGs6NDY0MyBnaXRrOjY1MTIgZ2l0azo2NTgwCisjOiBnaXRrOjIyNzAgZ2l0azoyMjcxIGdpdGs6NDc1NyBnaXRrOjQ3ODcgZ2l0azo0Nzk0IGdpdGs6NjY4NSBnaXRrOjY3NTMKIG1zZ2lkICJBbGwgZmllbGRzIgogbXNnc3RyICJBbGxhIGbDpGx0IgogCi0jOiBnaXRrOjIxODkgZ2l0azo0NjA0IGdpdGs6NDYzNiBnaXRrOjY0NTEKKyM6IGdpdGs6MjI3MSBnaXRrOjQ3NTQgZ2l0azo0Nzg3IGdpdGs6NjYyMwogbXNnaWQgIkhlYWRsaW5lIgogbXNnc3RyICJSdWJyaWsiCiAKLSM6IGdpdGs6MjE5MCBnaXRrOjQ2MDQgZ2l0azo2NDUxIGdpdGs6NjU4MCBnaXRrOjcwMTMKKyM6IGdpdGs6MjI3MiBnaXRrOjQ3NTQgZ2l0azo2NjIzIGdpdGs6Njc1MyBnaXRrOjcyMjEKIG1zZ2lkICJDb21tZW50cyIKIG1zZ3N0ciAiS29tbWVudGFyZXIiCiAKLSM6IGdpdGs6MjE5MCBnaXRrOjQ2MDQgZ2l0azo0NjA4IGdpdGs6NDY0MyBnaXRrOjY0NTEgZ2l0azo2OTQ4IGdpdGs6ODMwNwotIzogZ2l0azo4MzIyCisjOiBnaXRrOjIyNzIgZ2l0azo0NzU0IGdpdGs6NDc1OSBnaXRrOjQ3OTQgZ2l0azo2NjIzIGdpdGs6NzE1NiBnaXRrOjg1OTgKKyM6IGdpdGs6ODYxMwogbXNnaWQgIkF1dGhvciIKIG1zZ3N0ciAiRsO2cmZhdHRhcmUiCiAKLSM6IGdpdGs6MjE5MCBnaXRrOjQ2MDQgZ2l0azo2NDUxIGdpdGs6Njk1MAorIzogZ2l0azoyMjcyIGdpdGs6NDc1NCBnaXRrOjY2MjMgZ2l0azo3MTU4CiBtc2dpZCAiQ29tbWl0dGVyIgogbXNnc3RyICJJbmNoZWNrYXJlIgogCi0jOiBnaXRrOjIyMjEKKyM6IGdpdGs6MjMwMwogbXNnaWQgIlNlYXJjaCIKIG1zZ3N0ciAiU8O2ayIKIAotIzogZ2l0azoyMjI5CisjOiBnaXRrOjIzMTEKIG1zZ2lkICJEaWZmIgogbXNnc3RyICJEaWZmIgogCi0jOiBnaXRrOjIyMzEKKyM6IGdpdGs6MjMxMwogbXNnaWQgIk9sZCB2ZXJzaW9uIgogbXNnc3RyICJHYW1tYWwgdmVyc2lvbiIKIAotIzogZ2l0azoyMjMzCisjOiBnaXRrOjIzMTUKIG1zZ2lkICJOZXcgdmVyc2lvbiIKIG1zZ3N0ciAiTnkgdmVyc2lvbiIKIAotIzogZ2l0azoyMjM1CisjOiBnaXRrOjIzMTcKIG1zZ2lkICJMaW5lcyBvZiBjb250ZXh0IgogbXNnc3RyICJSYWRlciBzYW1tYW5oYW5nIgogCi0jOiBnaXRrOjIyNDUKKyM6IGdpdGs6MjMyNwogbXNnaWQgIklnbm9yZSBzcGFjZSBjaGFuZ2UiCiBtc2dzdHIgIklnbm9yZXJhIMOkbmRyaW5nYXIgaSBibGFua3N0ZWciCiAKLSM6IGdpdGs6MjMwNAorIzogZ2l0azoyMzMxIGdpdGs6MjMzMyBnaXRrOjc3MzUgZ2l0azo3OTYzCittc2dpZCAiTGluZSBkaWZmIgorbXNnc3RyICJSYWQtZGlmZiIKKworIzogZ2l0azoyMzk3CiBtc2dpZCAiUGF0Y2giCiBtc2dzdHIgIlBhdGNoIgogCi0jOiBnaXRrOjIzMDYKKyM6IGdpdGs6MjM5OQogbXNnaWQgIlRyZWUiCiBtc2dzdHIgIlRyw6RkIgogCi0jOiBnaXRrOjI0NjMgZ2l0azoyNDgwCisjOiBnaXRrOjI1NTcgZ2l0azoyNTc3CiBtc2dpZCAiRGlmZiB0aGlzIC0+IHNlbGVjdGVkIgogbXNnc3RyICJEaWZmIGRlbm5hIC0+IG1hcmtlcmFkIgogCi0jOiBnaXRrOjI0NjQgZ2l0azoyNDgxCisjOiBnaXRrOjI1NTggZ2l0azoyNTc4CiBtc2dpZCAiRGlmZiBzZWxlY3RlZCAtPiB0aGlzIgogbXNnc3RyICJEaWZmIG1hcmtlcmFkIC0+IGRlbm5hIgogCi0jOiBnaXRrOjI0NjUgZ2l0azoyNDgyCisjOiBnaXRrOjI1NTkgZ2l0azoyNTc5CiBtc2dpZCAiTWFrZSBwYXRjaCIKIG1zZ3N0ciAiU2thcGEgcGF0Y2giCiAKLSM6IGdpdGs6MjQ2NiBnaXRrOjg3MTUKKyM6IGdpdGs6MjU2MCBnaXRrOjkwMjIKIG1zZ2lkICJDcmVhdGUgdGFnIgogbXNnc3RyICJTa2FwYSB0YWdnIgogCi0jOiBnaXRrOjI0NjcgZ2l0azo4ODMxCisjOiBnaXRrOjI1NjEgZ2l0azo5MTM5CiBtc2dpZCAiV3JpdGUgY29tbWl0IHRvIGZpbGUiCiBtc2dzdHIgIlNrcml2IGluY2hlY2tuaW5nIHRpbGwgZmlsIgogCi0jOiBnaXRrOjI0NjggZ2l0azo4ODg4CisjOiBnaXRrOjI1NjIgZ2l0azo5MTk2CiBtc2dpZCAiQ3JlYXRlIG5ldyBicmFuY2giCiBtc2dzdHIgIlNrYXBhIG55IGdyZW4iCiAKLSM6IGdpdGs6MjQ2OQorIzogZ2l0azoyNTYzCiBtc2dpZCAiQ2hlcnJ5LXBpY2sgdGhpcyBjb21taXQiCiBtc2dzdHIgIlBsb2NrYSBkZW5uYSBpbmNoZWNrbmluZyIKIAotIzogZ2l0azoyNDcwCisjOiBnaXRrOjI1NjQKIG1zZ2lkICJSZXNldCBIRUFEIGJyYW5jaCB0byBoZXJlIgogbXNnc3RyICLDhXRlcnN0w6RsbCBIRUFELWdyZW5lbiBoaXQiCiAKLSM6IGdpdGs6MjQ3MQorIzogZ2l0azoyNTY1CiBtc2dpZCAiTWFyayB0aGlzIGNvbW1pdCIKIG1zZ3N0ciAiTWFya2VyYSBkZW5uYSBpbmNoZWNrbmluZyIKIAotIzogZ2l0azoyNDcyCisjOiBnaXRrOjI1NjYKIG1zZ2lkICJSZXR1cm4gdG8gbWFyayIKIG1zZ3N0ciAiw4V0ZXJnw6UgdGlsbCBtYXJrZXJpbmciCiAKLSM6IGdpdGs6MjQ3MworIzogZ2l0azoyNTY3CiBtc2dpZCAiRmluZCBkZXNjZW5kYW50IG9mIHRoaXMgYW5kIG1hcmsiCiBtc2dzdHIgIkhpdHRhIGVmdGVyZsO2bGphcmUgdGlsbCBkZW5uYSBvY2ggbWFya2VyYSIKIAotIzogZ2l0azoyNDc0CisjOiBnaXRrOjI1NjgKIG1zZ2lkICJDb21wYXJlIHdpdGggbWFya2VkIGNvbW1pdCIKIG1zZ3N0ciAiSsOkbWbDtnIgbWVkIG1hcmtlcmFkIGluY2hlY2tuaW5nIgogCi0jOiBnaXRrOjI0ODgKKyM6IGdpdGs6MjU2OSBnaXRrOjI1ODAKK21zZ2lkICJEaWZmIHRoaXMgLT4gbWFya2VkIGNvbW1pdCIKK21zZ3N0ciAiRGlmZiBkZW5uYSAtPiBtYXJrZXJhZCBpbmNoZWNrbmluZyIKKworIzogZ2l0azoyNTcwIGdpdGs6MjU4MQorbXNnaWQgIkRpZmYgbWFya2VkIGNvbW1pdCAtPiB0aGlzIgorbXNnc3RyICJEaWZmIG1hcmtlcmFkIGluY2hlY2tuaW5nIC0+IGRlbm5hIgorCisjOiBnaXRrOjI1NzEKK21zZ2lkICJSZXZlcnQgdGhpcyBjb21taXQiCittc2dzdHIgIsOFbmdyYSBkZW5uYSBpbmNoZWNrbmluZyIKKworIzogZ2l0azoyNTg3CiBtc2dpZCAiQ2hlY2sgb3V0IHRoaXMgYnJhbmNoIgogbXNnc3RyICJDaGVja2EgdXQgZGVubmEgZ3JlbiIKIAotIzogZ2l0azoyNDg5CisjOiBnaXRrOjI1ODgKIG1zZ2lkICJSZW1vdmUgdGhpcyBicmFuY2giCiBtc2dzdHIgIlRhIGJvcnQgZGVubmEgZ3JlbiIKIAotIzogZ2l0azoyNDk2CisjOiBnaXRrOjI1OTUKIG1zZ2lkICJIaWdobGlnaHQgdGhpcyB0b28iCiBtc2dzdHIgIk1hcmtlcmEgw6R2ZW4gZGV0dGEiCiAKLSM6IGdpdGs6MjQ5NworIzogZ2l0azoyNTk2CiBtc2dpZCAiSGlnaGxpZ2h0IHRoaXMgb25seSIKIG1zZ3N0ciAiTWFya2VyYSBiYXJhIGRldHRhIgogCi0jOiBnaXRrOjI0OTgKKyM6IGdpdGs6MjU5NwogbXNnaWQgIkV4dGVybmFsIGRpZmYiCiBtc2dzdHIgIkV4dGVybiBkaWZmIgogCi0jOiBnaXRrOjI0OTkKKyM6IGdpdGs6MjU5OAogbXNnaWQgIkJsYW1lIHBhcmVudCBjb21taXQiCiBtc2dzdHIgIktsYW5kcmEgZsO2csOkbGRyYWluY2hlY2tuaW5nIgogCi0jOiBnaXRrOjI1MDYKKyM6IGdpdGs6MjYwNQogbXNnaWQgIlNob3cgb3JpZ2luIG9mIHRoaXMgbGluZSIKIG1zZ3N0ciAiVmlzYSB1cnNwcnVuZ2V0IGbDtnIgZGVuIGjDpHIgcmFkZW4iCiAKLSM6IGdpdGs6MjUwNworIzogZ2l0azoyNjA2CiBtc2dpZCAiUnVuIGdpdCBndWkgYmxhbWUgb24gdGhpcyBsaW5lIgogbXNnc3RyICJLw7ZyIGdpdCBndWkgYmxhbWUgcMOlIGRlbiBow6RyIHJhZGVuIgogCi0jOiBnaXRrOjI3ODkKKyM6IGdpdGs6MjkyNwogbXNnaWQgIiIKICJcbiIKICJHaXRrIC0gYSBjb21taXQgdmlld2VyIGZvciBnaXRcbiIKICJcbiIKLSJDb3B5cmlnaHQgwqk5IDIwMDUtMjAxMCBQYXVsIE1hY2tlcnJhc1xuIgorIkNvcHlyaWdodCDCqTkgMjAwNS0yMDExIFBhdWwgTWFja2VycmFzXG4iCiAiXG4iCiAiVXNlIGFuZCByZWRpc3RyaWJ1dGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSIKIG1zZ3N0ciAiIgogIlxuIgogIkdpdGsgLSBlbiBpbmNoZWNrbmluZ3N2aXNhcmUgZsO2ciBnaXRcbiIKICJcbiIKLSJDb3B5cmlnaHQgwqk5IDIwMDUtMjAxMCBQYXVsIE1hY2tlcnJhc1xuIgorIkNvcHlyaWdodCDCqTkgMjAwNS0yMDExIFBhdWwgTWFja2VycmFzXG4iCiAiXG4iCiAiQW52w6RuZCBvY2ggdmlkYXJlZsO2cm1lZGxhIGVubGlndCB2aWxsa29yZW4gaSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSIKIAotIzogZ2l0azoyNzk3IGdpdGs6Mjg2MiBnaXRrOjkyNTMKKyM6IGdpdGs6MjkzNSBnaXRrOjMwMDAgZ2l0azo5NjIzCiBtc2dpZCAiQ2xvc2UiCiBtc2dzdHIgIlN0w6RuZyIKIAotIzogZ2l0azoyODE4CisjOiBnaXRrOjI5NTYKIG1zZ2lkICJHaXRrIGtleSBiaW5kaW5ncyIKIG1zZ3N0ciAiVGFuZ2VudGJvcmRzYmluZG5pbmdhciBmw7ZyIEdpdGsiCiAKLSM6IGdpdGs6MjgyMQorIzogZ2l0azoyOTU5CiBtc2dpZCAiR2l0ayBrZXkgYmluZGluZ3M6IgogbXNnc3RyICJUYW5nZW50Ym9yZHNiaW5kbmluZ2FyIGbDtnIgR2l0azoiCiAKLSM6IGdpdGs6MjgyMworIzogZ2l0azoyOTYxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVE+XHRcdFF1aXQiCiBtc2dzdHIgIjwlcy1RPlx0XHRBdnNsdXRhIgogCi0jOiBnaXRrOjI4MjQKKyM6IGdpdGs6Mjk2MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1XPlx0XHRDbG9zZSB3aW5kb3ciCiBtc2dzdHIgIjwlcy1XPlx0XHRTdMOkbmcgZsO2bnN0ZXIiCiAKLSM6IGdpdGs6MjgyNQorIzogZ2l0azoyOTYzCiBtc2dpZCAiPEhvbWU+XHRcdE1vdmUgdG8gZmlyc3QgY29tbWl0IgogbXNnc3RyICI8SG9tZT5cdFx0R8OlIHRpbGwgZsO2cnN0YSBpbmNoZWNrbmluZyIKIAotIzogZ2l0azoyODI2CisjOiBnaXRrOjI5NjQKIG1zZ2lkICI8RW5kPlx0XHRNb3ZlIHRvIGxhc3QgY29tbWl0IgogbXNnc3RyICI8RW5kPlx0XHRHw6UgdGlsbCBzaXN0YSBpbmNoZWNrbmluZyIKIAotIzogZ2l0azoyODI3Ci1tc2dpZCAiPFVwPiwgcCwgaVx0TW92ZSB1cCBvbmUgY29tbWl0IgotbXNnc3RyICI8VXBwPiwgcCwgaVx0R8OlIGVuIGluY2hlY2tuaW5nIHVwcCIKKyM6IGdpdGs6Mjk2NQorbXNnaWQgIjxVcD4sIHAsIGtcdE1vdmUgdXAgb25lIGNvbW1pdCIKK21zZ3N0ciAiPFVwcD4sIHAsIGtcdEfDpSBlbiBpbmNoZWNrbmluZyB1cHAiCiAKLSM6IGdpdGs6MjgyOAotbXNnaWQgIjxEb3duPiwgbiwga1x0TW92ZSBkb3duIG9uZSBjb21taXQiCi1tc2dzdHIgIjxOZWQ+LCBuLCBrXHRHw6UgZW4gaW5jaGVja25pbmcgbmVkIgorIzogZ2l0azoyOTY2Cittc2dpZCAiPERvd24+LCBuLCBqXHRNb3ZlIGRvd24gb25lIGNvbW1pdCIKK21zZ3N0ciAiPE5lZD4sIG4sIGpcdEfDpSBlbiBpbmNoZWNrbmluZyBuZWQiCiAKLSM6IGdpdGs6MjgyOQotbXNnaWQgIjxMZWZ0Piwgeiwgalx0R28gYmFjayBpbiBoaXN0b3J5IGxpc3QiCi1tc2dzdHIgIjxWw6Ruc3Rlcj4sIHosIGpcdEfDpSBiYWvDpXQgaSBoaXN0b3Jpa2VuIgorIzogZ2l0azoyOTY3Cittc2dpZCAiPExlZnQ+LCB6LCBoXHRHbyBiYWNrIGluIGhpc3RvcnkgbGlzdCIKK21zZ3N0ciAiPFbDpG5zdGVyPiwgeiwgaFx0R8OlIGJha8OldCBpIGhpc3RvcmlrZW4iCiAKLSM6IGdpdGs6MjgzMAorIzogZ2l0azoyOTY4CiBtc2dpZCAiPFJpZ2h0PiwgeCwgbFx0R28gZm9yd2FyZCBpbiBoaXN0b3J5IGxpc3QiCiBtc2dzdHIgIjxIw7ZnZXI+LCB4LCBsXHRHw6UgZnJhbcOldCBpIGhpc3RvcmlrZW4iCiAKLSM6IGdpdGs6MjgzMQorIzogZ2l0azoyOTY5CiBtc2dpZCAiPFBhZ2VVcD5cdE1vdmUgdXAgb25lIHBhZ2UgaW4gY29tbWl0IGxpc3QiCiBtc2dzdHIgIjxQYWdlVXA+XHRHw6UgdXBwIGVuIHNpZGEgaSBpbmNoZWNrbmluZ3NsaXN0YW4iCiAKLSM6IGdpdGs6MjgzMgorIzogZ2l0azoyOTcwCiBtc2dpZCAiPFBhZ2VEb3duPlx0TW92ZSBkb3duIG9uZSBwYWdlIGluIGNvbW1pdCBsaXN0IgogbXNnc3RyICI8UGFnZURvd24+XHRHw6UgbmVkIGVuIHNpZGEgaSBpbmNoZWNrbmluZ3NsaXN0YW4iCiAKLSM6IGdpdGs6MjgzMworIzogZ2l0azoyOTcxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUhvbWU+XHRTY3JvbGwgdG8gdG9wIG9mIGNvbW1pdCBsaXN0IgogbXNnc3RyICI8JXMtSG9tZT5cdFJ1bGxhIHRpbGwgYsO2cmphbiBhdiBpbmNoZWNrbmluZ3NsaXN0YW4iCiAKLSM6IGdpdGs6MjgzNAorIzogZ2l0azoyOTcyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUVuZD5cdFNjcm9sbCB0byBib3R0b20gb2YgY29tbWl0IGxpc3QiCiBtc2dzdHIgIjwlcy1FbmQ+XHRSdWxsYSB0aWxsIHNsdXRldCBhdiBpbmNoZWNrbmluZ3NsaXN0YW4iCiAKLSM6IGdpdGs6MjgzNQorIzogZ2l0azoyOTczCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVVwPlx0U2Nyb2xsIGNvbW1pdCBsaXN0IHVwIG9uZSBsaW5lIgogbXNnc3RyICI8JXMtVXBwPlx0UnVsbGEgaW5jaGVja25pbmdzbGlzdGFuIHVwcCBldHQgc3RlZyIKIAotIzogZ2l0azoyODM2CisjOiBnaXRrOjI5NzQKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtRG93bj5cdFNjcm9sbCBjb21taXQgbGlzdCBkb3duIG9uZSBsaW5lIgogbXNnc3RyICI8JXMtTmVkPlx0UnVsbGEgaW5jaGVja25pbmdzbGlzdGFuIG5lZCBldHQgc3RlZyIKIAotIzogZ2l0azoyODM3CisjOiBnaXRrOjI5NzUKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtUGFnZVVwPlx0U2Nyb2xsIGNvbW1pdCBsaXN0IHVwIG9uZSBwYWdlIgogbXNnc3RyICI8JXMtUGFnZVVwPlx0UnVsbGEgaW5jaGVja25pbmdzbGlzdGFuIHVwcCBlbiBzaWRhIgogCi0jOiBnaXRrOjI4MzgKKyM6IGdpdGs6Mjk3NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1QYWdlRG93bj5cdFNjcm9sbCBjb21taXQgbGlzdCBkb3duIG9uZSBwYWdlIgogbXNnc3RyICI8JXMtUGFnZURvd24+XHRSdWxsYSBpbmNoZWNrbmluZ3NsaXN0YW4gbmVkIGVuIHNpZGEiCiAKLSM6IGdpdGs6MjgzOQorIzogZ2l0azoyOTc3CiBtc2dpZCAiPFNoaWZ0LVVwPlx0RmluZCBiYWNrd2FyZHMgKHVwd2FyZHMsIGxhdGVyIGNvbW1pdHMpIgogbXNnc3RyICI8U2tpZnQtVXBwPlx0U8O2ayBiYWvDpXQgKHVwcMOldCwgc2VuYXJlIGluY2hlY2tuaW5nYXIpIgogCi0jOiBnaXRrOjI4NDAKKyM6IGdpdGs6Mjk3OAogbXNnaWQgIjxTaGlmdC1Eb3duPlx0RmluZCBmb3J3YXJkcyAoZG93bndhcmRzLCBlYXJsaWVyIGNvbW1pdHMpIgogbXNnc3RyICI8U2tpZnQtTmVkPlx0U8O2ayBmcmFtw6V0IChuZWTDpXQsIHRpZGlnYXJlIGluY2hlY2tuaW5nYXIpIgogCi0jOiBnaXRrOjI4NDEKKyM6IGdpdGs6Mjk3OQogbXNnaWQgIjxEZWxldGU+LCBiXHRTY3JvbGwgZGlmZiB2aWV3IHVwIG9uZSBwYWdlIgogbXNnc3RyICI8RGVsZXRlPiwgYlx0UnVsbGEgZGlmZnZpc25pbmdlbiB1cHAgZW4gc2lkYSIKIAotIzogZ2l0azoyODQyCisjOiBnaXRrOjI5ODAKIG1zZ2lkICI8QmFja3NwYWNlPlx0U2Nyb2xsIGRpZmYgdmlldyB1cCBvbmUgcGFnZSIKIG1zZ3N0ciAiPEJha3N0ZWc+XHRSdWxsYSBkaWZmdmlzbmluZ2VuIHVwcCBlbiBzaWRhIgogCi0jOiBnaXRrOjI4NDMKKyM6IGdpdGs6Mjk4MQogbXNnaWQgIjxTcGFjZT5cdFx0U2Nyb2xsIGRpZmYgdmlldyBkb3duIG9uZSBwYWdlIgogbXNnc3RyICI8QmxhbmtzdGVnPlx0UnVsbGEgZGlmZnZpc25pbmdlbiBuZWQgZW4gc2lkYSIKIAotIzogZ2l0azoyODQ0CisjOiBnaXRrOjI5ODIKIG1zZ2lkICJ1XHRcdFNjcm9sbCBkaWZmIHZpZXcgdXAgMTggbGluZXMiCiBtc2dzdHIgInVcdFx0UnVsbGEgZGlmZnZpc25pbmdlbiB1cHAgMTggcmFkZXIiCiAKLSM6IGdpdGs6Mjg0NQorIzogZ2l0azoyOTgzCiBtc2dpZCAiZFx0XHRTY3JvbGwgZGlmZiB2aWV3IGRvd24gMTggbGluZXMiCiBtc2dzdHIgImRcdFx0UnVsbGEgZGlmZnZpc25pbmdlbiBuZWQgMTggcmFkZXIiCiAKLSM6IGdpdGs6Mjg0NgorIzogZ2l0azoyOTg0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUY+XHRcdEZpbmQiCiBtc2dzdHIgIjwlcy1GPlx0XHRTw7ZrIgogCi0jOiBnaXRrOjI4NDcKKyM6IGdpdGs6Mjk4NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1HPlx0XHRNb3ZlIHRvIG5leHQgZmluZCBoaXQiCiBtc2dzdHIgIjwlcy1HPlx0XHRHw6UgdGlsbCBuw6RzdGEgc8O2a3Ryw6RmZiIKIAotIzogZ2l0azoyODQ4CisjOiBnaXRrOjI5ODYKIG1zZ2lkICI8UmV0dXJuPlx0TW92ZSB0byBuZXh0IGZpbmQgaGl0IgogbXNnc3RyICI8UmV0dXJuPlx0XHRHw6UgdGlsbCBuw6RzdGEgc8O2a3Ryw6RmZiIKIAotIzogZ2l0azoyODQ5CisjOiBnaXRrOjI5ODcKIG1zZ2lkICIvXHRcdEZvY3VzIHRoZSBzZWFyY2ggYm94IgogbXNnc3RyICIvXHRcdEZva3VzZXJhIHPDtmtydXRhbiIKIAotIzogZ2l0azoyODUwCisjOiBnaXRrOjI5ODgKIG1zZ2lkICI/XHRcdE1vdmUgdG8gcHJldmlvdXMgZmluZCBoaXQiCiBtc2dzdHIgIj9cdFx0R8OlIHRpbGwgZsO2cmVnw6VlbmRlIHPDtmt0csOkZmYiCiAKLSM6IGdpdGs6Mjg1MQorIzogZ2l0azoyOTg5CiBtc2dpZCAiZlx0XHRTY3JvbGwgZGlmZiB2aWV3IHRvIG5leHQgZmlsZSIKIG1zZ3N0ciAiZlx0XHRSdWxsYSBkaWZmdmlzbmluZ2VuIHRpbGwgbsOkc3RhIGZpbCIKIAotIzogZ2l0azoyODUyCisjOiBnaXRrOjI5OTAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtUz5cdFx0U2VhcmNoIGZvciBuZXh0IGhpdCBpbiBkaWZmIHZpZXciCiBtc2dzdHIgIjwlcy1TPlx0XHRHw6UgdGlsbCBuw6RzdGEgc8O2a3Ryw6RmZiBpIGRpZmZ2aXNuaW5nZW4iCiAKLSM6IGdpdGs6Mjg1MworIzogZ2l0azoyOTkxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVI+XHRcdFNlYXJjaCBmb3IgcHJldmlvdXMgaGl0IGluIGRpZmYgdmlldyIKIG1zZ3N0ciAiPCVzLVI+XHRcdEfDpSB0aWxsIGbDtnJlZ8OlZW5kZSBzw7ZrdHLDpGZmIGkgZGlmZnZpc25pbmdlbiIKIAotIzogZ2l0azoyODU0CisjOiBnaXRrOjI5OTIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtS1ArPlx0SW5jcmVhc2UgZm9udCBzaXplIgogbXNnc3RyICI8JXMtTnVtKz5cdMOWa2EgdGVja2Vuc3RvcmxlayIKIAotIzogZ2l0azoyODU1CisjOiBnaXRrOjI5OTMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtcGx1cz5cdEluY3JlYXNlIGZvbnQgc2l6ZSIKIG1zZ3N0ciAiPCVzLXBsdXM+XHTDlmthIHRlY2tlbnN0b3JsZWsiCiAKLSM6IGdpdGs6Mjg1NgorIzogZ2l0azoyOTk0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUtQLT5cdERlY3JlYXNlIGZvbnQgc2l6ZSIKIG1zZ3N0ciAiPCVzLU51bS0+XHRNaW5za2EgdGVja2Vuc3RvcmxlayIKIAotIzogZ2l0azoyODU3CisjOiBnaXRrOjI5OTUKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtbWludXM+XHREZWNyZWFzZSBmb250IHNpemUiCiBtc2dzdHIgIjwlcy1taW51cz5cdE1pbnNrYSB0ZWNrZW5zdG9ybGVrIgogCi0jOiBnaXRrOjI4NTgKKyM6IGdpdGs6Mjk5NgogbXNnaWQgIjxGNT5cdFx0VXBkYXRlIgogbXNnc3RyICI8RjU+XHRcdFVwcGRhdGVyYSIKIAotIzogZ2l0azozMzEzIGdpdGs6MzMyMgorIzogZ2l0azozNDUxIGdpdGs6MzQ2MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkVycm9yIGNyZWF0aW5nIHRlbXBvcmFyeSBkaXJlY3RvcnkgJXM6IgogbXNnc3RyICJGZWwgdmlkIHNrYXBhbmRlIGF2IHRlbXBvcsOkciBrYXRhbG9nICVzOiIKIAotIzogZ2l0azozMzM1CisjOiBnaXRrOjM0NzMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJFcnJvciBnZXR0aW5nIFwiJXNcIiBmcm9tICVzOiIKIG1zZ3N0ciAiRmVsIHZpZCBow6RtdG5pbmcgYXYgIFwiJXNcIiBmcsOlbiAlczoiCiAKLSM6IGdpdGs6MzM5OAorIzogZ2l0azozNTM2CiBtc2dpZCAiY29tbWFuZCBmYWlsZWQ6IgogbXNnc3RyICJrb21tYW5kbyBtaXNzbHlja2FkZXM6IgogCi0jOiBnaXRrOjM1NDcKKyM6IGdpdGs6MzY4NQogbXNnaWQgIk5vIHN1Y2ggY29tbWl0IgogbXNnc3RyICJJbmNoZWNrbmluZyBzYWtuYXMiCiAKLSM6IGdpdGs6MzU2MQorIzogZ2l0azozNjk5CiBtc2dpZCAiZ2l0IGd1aSBibGFtZTogY29tbWFuZCBmYWlsZWQ6IgogbXNnc3RyICJnaXQgZ3VpIGJsYW1lOiBrb21tYW5kbyBtaXNzbHlja2FkZXM6IgogCi0jOiBnaXRrOjM1OTIKKyM6IGdpdGs6MzczMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNvdWxkbid0IHJlYWQgbWVyZ2UgaGVhZDogJXMiCiBtc2dzdHIgIkt1bmRlIGludGUgbMOkc2Egc2FtbWFuc2xhZ25pbmdzaHV2dWQ6ICVzIgogCi0jOiBnaXRrOjM2MDAKKyM6IGdpdGs6MzczOAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkVycm9yIHJlYWRpbmcgaW5kZXg6ICVzIgogbXNnc3RyICJGZWwgdmlkIGzDpHNuaW5nIGF2IGluZGV4OiAlcyIKIAotIzogZ2l0azozNjI1CisjOiBnaXRrOjM3NjMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDb3VsZG4ndCBzdGFydCBnaXQgYmxhbWU6ICVzIgogbXNnc3RyICJLdW5kZSBpbnRlIHN0YXJ0YSBnaXQgYmxhbWU6ICVzIgogCi0jOiBnaXRrOjM2MjggZ2l0azo2NDE5CisjOiBnaXRrOjM3NjYgZ2l0azo2NTkxCiBtc2dpZCAiU2VhcmNoaW5nIgogbXNnc3RyICJTw7ZrZXIiCiAKLSM6IGdpdGs6MzY2MAorIzogZ2l0azozNzk4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRXJyb3IgcnVubmluZyBnaXQgYmxhbWU6ICVzIgogbXNnc3RyICJGZWwgdmlkIGvDtnJuaW5nIGF2IGdpdCBibGFtZTogJXMiCiAKLSM6IGdpdGs6MzY4OAorIzogZ2l0azozODI2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVGhhdCBsaW5lIGNvbWVzIGZyb20gY29tbWl0ICVzLCAgd2hpY2ggaXMgbm90IGluIHRoaXMgdmlldyIKIG1zZ3N0ciAiUmFkZW4ga29tbWVyIGZyw6VuIGluY2hlY2tuaW5nZW4gJXMsIHNvbSBpbnRlIGZpbm5zIGkgZGVubmEgdnkiCiAKLSM6IGdpdGs6MzcwMgorIzogZ2l0azozODQwCiBtc2dpZCAiRXh0ZXJuYWwgZGlmZiB2aWV3ZXIgZmFpbGVkOiIKIG1zZ3N0ciAiRXh0ZXJudCBkaWZmLXZlcmt0eWcgbWlzc2x5Y2thZGVzOiIKIAotIzogZ2l0azozODIwCisjOiBnaXRrOjM5NTgKIG1zZ2lkICJHaXRrIHZpZXcgZGVmaW5pdGlvbiIKIG1zZ3N0ciAiRGVmaW5pdGlvbiBhdiBHaXRrLXZ5IgogCi0jOiBnaXRrOjM4MjQKKyM6IGdpdGs6Mzk2MgogbXNnaWQgIlJlbWVtYmVyIHRoaXMgdmlldyIKIG1zZ3N0ciAiU3BhcmEgZGVubmEgdnkiCiAKLSM6IGdpdGs6MzgyNQorIzogZ2l0azozOTYzCiBtc2dpZCAiUmVmZXJlbmNlcyAoc3BhY2Ugc2VwYXJhdGVkIGxpc3QpOiIKIG1zZ3N0ciAiUmVmZXJlbnNlciAoYmxhbmtzdGVnc2F2ZGVsYWQgbGlzdGEpOiIKIAotIzogZ2l0azozODI2CisjOiBnaXRrOjM5NjQKIG1zZ2lkICJCcmFuY2hlcyAmIHRhZ3M6IgogbXNnc3RyICJHcmVuYXIgJiB0YWdnYXI6IgogCi0jOiBnaXRrOjM4MjcKKyM6IGdpdGs6Mzk2NQogbXNnaWQgIkFsbCByZWZzIgogbXNnc3RyICJBbGxhIHJlZmVyZW5zZXIiCiAKLSM6IGdpdGs6MzgyOAorIzogZ2l0azozOTY2CiBtc2dpZCAiQWxsIChsb2NhbCkgYnJhbmNoZXMiCiBtc2dzdHIgIkFsbGEgKGxva2FsYSkgZ3JlbmFyIgogCi0jOiBnaXRrOjM4MjkKKyM6IGdpdGs6Mzk2NwogbXNnaWQgIkFsbCB0YWdzIgogbXNnc3RyICJBbGxhIHRhZ2dhciIKIAotIzogZ2l0azozODMwCisjOiBnaXRrOjM5NjgKIG1zZ2lkICJBbGwgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzIgogbXNnc3RyICJBbGxhIGZqw6RycnNww6VyYW5kZSBncmVuYXIiCiAKLSM6IGdpdGs6MzgzMQorIzogZ2l0azozOTY5CiBtc2dpZCAiQ29tbWl0IEluZm8gKHJlZ3VsYXIgZXhwcmVzc2lvbnMpOiIKIG1zZ3N0ciAiSW5jaGVja25pbmdzaW5mbyAocmVndWxqw6RyYSB1dHRyeWNrKToiCiAKLSM6IGdpdGs6MzgzMgorIzogZ2l0azozOTcwCiBtc2dpZCAiQXV0aG9yOiIKIG1zZ3N0ciAiRsO2cmZhdHRhcmU6IgogCi0jOiBnaXRrOjM4MzMKKyM6IGdpdGs6Mzk3MQogbXNnaWQgIkNvbW1pdHRlcjoiCiBtc2dzdHIgIkluY2hlY2thcmU6IgogCi0jOiBnaXRrOjM4MzQKKyM6IGdpdGs6Mzk3MgogbXNnaWQgIkNvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiSW5jaGVja25pbmdzbWVkZGVsYW5kZToiCiAKLSM6IGdpdGs6MzgzNQorIzogZ2l0azozOTczCiBtc2dpZCAiTWF0Y2hlcyBhbGwgQ29tbWl0IEluZm8gY3JpdGVyaWEiCiBtc2dzdHIgIk1vdHN2YXJhciBhbGxhIGtyaXRlcmllciBmw7ZyIGluY2hlY2tuaW5nc2luZm8iCiAKLSM6IGdpdGs6MzgzNgorIzogZ2l0azozOTc0CiBtc2dpZCAiQ2hhbmdlcyB0byBGaWxlczoiCiBtc2dzdHIgIsOEbmRyaW5nYXIgYXYgZmlsZXI6IgogCi0jOiBnaXRrOjM4MzcKKyM6IGdpdGs6Mzk3NQogbXNnaWQgIkZpeGVkIFN0cmluZyIKIG1zZ3N0ciAiRmFzdCBzdHLDpG5nIgogCi0jOiBnaXRrOjM4MzgKKyM6IGdpdGs6Mzk3NgogbXNnaWQgIlJlZ3VsYXIgRXhwcmVzc2lvbiIKIG1zZ3N0ciAiUmVndWxqw6RydCB1dHRyeWNrIgogCi0jOiBnaXRrOjM4MzkKKyM6IGdpdGs6Mzk3NwogbXNnaWQgIlNlYXJjaCBzdHJpbmc6IgogbXNnc3RyICJTw7Zrc3Ryw6RuZzoiCiAKLSM6IGdpdGs6Mzg0MAorIzogZ2l0azozOTc4CiBtc2dpZCAiIgogIkNvbW1pdCBEYXRlcyAoXCIyIHdlZWtzIGFnb1wiLCBcIjIwMDktMDMtMTcgMTU6Mjc6MzhcIiwgXCJNYXJjaCAxNywgMjAwOSAiCiAiMTU6Mjc6MzhcIik6IgpAQCAtNjQ4LDIwMSArNjc4LDIwMSBAQAogIkluY2hlY2tpbmdzZGF0dW0gKFwiMiB3ZWVrcyBhZ29cIiwgXCIyMDA5LTAzLTE3IDE1OjI3OjM4XCIsIFwiTWFyY2ggMTcsIDIwMDkgIgogIjE1OjI3OjM4XCIpOiIKIAotIzogZ2l0azozODQxCisjOiBnaXRrOjM5NzkKIG1zZ2lkICJTaW5jZToiCiBtc2dzdHIgIkZyw6VuOiIKIAotIzogZ2l0azozODQyCisjOiBnaXRrOjM5ODAKIG1zZ2lkICJVbnRpbDoiCiBtc2dzdHIgIlRpbGw6IgogCi0jOiBnaXRrOjM4NDMKKyM6IGdpdGs6Mzk4MQogbXNnaWQgIkxpbWl0IGFuZC9vciBza2lwIGEgbnVtYmVyIG9mIHJldmlzaW9ucyAocG9zaXRpdmUgaW50ZWdlcik6IgogbXNnc3RyICJCZWdyw6Ruc2Egb2NoL2VsbGVyIGhvcHBhIMO2dmVyIGV0dCBhbnRhbCByZXZpc2lvbmVyIChwb3NpdGl2dCBoZWx0YWwpOiIKIAotIzogZ2l0azozODQ0CisjOiBnaXRrOjM5ODIKIG1zZ2lkICJOdW1iZXIgdG8gc2hvdzoiCiBtc2dzdHIgIkFudGFsIGF0dCB2aXNhOiIKIAotIzogZ2l0azozODQ1CisjOiBnaXRrOjM5ODMKIG1zZ2lkICJOdW1iZXIgdG8gc2tpcDoiCiBtc2dzdHIgIkFudGFsIGF0dCBob3BwYSDDtnZlcjoiCiAKLSM6IGdpdGs6Mzg0NgorIzogZ2l0azozOTg0CiBtc2dpZCAiTWlzY2VsbGFuZW91cyBvcHRpb25zOiIKIG1zZ3N0ciAiRGl2ZXJzZSBhbHRlcm5hdGl2OiIKIAotIzogZ2l0azozODQ3CisjOiBnaXRrOjM5ODUKIG1zZ2lkICJTdHJpY3RseSBzb3J0IGJ5IGRhdGUiCiBtc2dzdHIgIlN0cmlrdCBkYXR1bXNvcnRlcmluZyIKIAotIzogZ2l0azozODQ4CisjOiBnaXRrOjM5ODYKIG1zZ2lkICJNYXJrIGJyYW5jaCBzaWRlcyIKIG1zZ3N0ciAiTWFya2VyYSBzaWRvZ3JlbmFyIgogCi0jOiBnaXRrOjM4NDkKKyM6IGdpdGs6Mzk4NwogbXNnaWQgIkxpbWl0IHRvIGZpcnN0IHBhcmVudCIKIG1zZ3N0ciAiQmVncsOkbnNhIHRpbGwgZsO2cnN0YSBmw7Zyw6RsZGVyIgogCi0jOiBnaXRrOjM4NTAKKyM6IGdpdGs6Mzk4OAogbXNnaWQgIlNpbXBsZSBoaXN0b3J5IgogbXNnc3RyICJFbmtlbCBoaXN0b3JpayIKIAotIzogZ2l0azozODUxCisjOiBnaXRrOjM5ODkKIG1zZ2lkICJBZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBnaXQgbG9nOiIKIG1zZ3N0ciAiWXR0ZXJsaWdhcmUgYXJndW1lbnQgdGlsbCBnaXQgbG9nOiIKIAotIzogZ2l0azozODUyCisjOiBnaXRrOjM5OTAKIG1zZ2lkICJFbnRlciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gaW5jbHVkZSwgb25lIHBlciBsaW5lOiIKIG1zZ3N0ciAiQW5nZSBmaWxlciBvY2gga2F0YWxvZ2VyIGF0dCB0YSBtZWQsIGVuIHBlciByYWQ6IgogCi0jOiBnaXRrOjM4NTMKKyM6IGdpdGs6Mzk5MQogbXNnaWQgIkNvbW1hbmQgdG8gZ2VuZXJhdGUgbW9yZSBjb21taXRzIHRvIGluY2x1ZGU6IgogbXNnc3RyICJLb21tYW5kbyBmw7ZyIGF0dCBnZW5lcmVyYSBmbGVyIGluY2hlY2tuaW5nYXIgYXR0IHRhIG1lZDoiCiAKLSM6IGdpdGs6Mzk3NworIzogZ2l0azo0MTE1CiBtc2dpZCAiR2l0azogZWRpdCB2aWV3IgogbXNnc3RyICJHaXRrOiByZWRpZ2VyYSB2eSIKIAotIzogZ2l0azozOTg1CisjOiBnaXRrOjQxMjMKIG1zZ2lkICItLSBjcml0ZXJpYSBmb3Igc2VsZWN0aW5nIHJldmlzaW9ucyIKIG1zZ3N0ciAiIC0ga3JpdGVyaWVyIGbDtnIgdmFsIGF2IHJldmlzaW9uZXIiCiAKLSM6IGdpdGs6Mzk5MAorIzogZ2l0azo0MTI4CiBtc2dpZCAiVmlldyBOYW1lIgogbXNnc3RyICJOYW1uIHDDpSB2eSIKIAotIzogZ2l0azo0MDY1CisjOiBnaXRrOjQyMDMKIG1zZ2lkICJBcHBseSAoRjUpIgogbXNnc3RyICJBbnbDpG5kIChGNSkiCiAKLSM6IGdpdGs6NDEwMworIzogZ2l0azo0MjQxCiBtc2dpZCAiRXJyb3IgaW4gY29tbWl0IHNlbGVjdGlvbiBhcmd1bWVudHM6IgogbXNnc3RyICJGZWwgaSBhcmd1bWVudCBmw7ZyIHZhbCBhdiBpbmNoZWNrbmluZ2FyOiIKIAotIzogZ2l0azo0MTU2IGdpdGs6NDIwOCBnaXRrOjQ2NTYgZ2l0azo0NjcwIGdpdGs6NTkzMSBnaXRrOjExNTUxIGdpdGs6MTE1NTIKKyM6IGdpdGs6NDI5NCBnaXRrOjQzNDYgZ2l0azo0ODA3IGdpdGs6NDgyMSBnaXRrOjYwODcgZ2l0azoxMjA0MSBnaXRrOjEyMDQyCiBtc2dpZCAiTm9uZSIKIG1zZ3N0ciAiSW5nZXQiCiAKLSM6IGdpdGs6NDYwNCBnaXRrOjY0NTEgZ2l0azo4MzA5IGdpdGs6ODMyNAotbXNnaWQgIkRhdGUiCi1tc2dzdHIgIkRhdHVtIgotCi0jOiBnaXRrOjQ2MDQgZ2l0azo2NDUxCi1tc2dpZCAiQ0RhdGUiCi1tc2dzdHIgIlNrYXBhdCBkYXR1bSIKLQotIzogZ2l0azo0NzUzIGdpdGs6NDc1OAorIzogZ2l0azo0OTA0IGdpdGs6NDkwOQogbXNnaWQgIkRlc2NlbmRhbnQiCiBtc2dzdHIgIkF2a29tbGluZyIKIAotIzogZ2l0azo0NzU0CisjOiBnaXRrOjQ5MDUKIG1zZ2lkICJOb3QgZGVzY2VuZGFudCIKIG1zZ3N0ciAiSW50ZSBhdmtvbWxpbmciCiAKLSM6IGdpdGs6NDc2MSBnaXRrOjQ3NjYKKyM6IGdpdGs6NDkxMiBnaXRrOjQ5MTcKIG1zZ2lkICJBbmNlc3RvciIKIG1zZ3N0ciAiRsO2cmZhZGVyIgogCi0jOiBnaXRrOjQ3NjIKKyM6IGdpdGs6NDkxMwogbXNnaWQgIk5vdCBhbmNlc3RvciIKIG1zZ3N0ciAiSW50ZSBmw7ZyZmFkZXIiCiAKLSM6IGdpdGs6NTA1MgorIzogZ2l0azo1MjAzCiBtc2dpZCAiTG9jYWwgY2hhbmdlcyBjaGVja2VkIGluIHRvIGluZGV4IGJ1dCBub3QgY29tbWl0dGVkIgogbXNnc3RyICJMb2thbGEgw6RuZHJpbmdhciBzcGFyYWRlIGkgaW5kZXhldCBtZW4gaW50ZSBpbmNoZWNrYWRlIgogCi0jOiBnaXRrOjUwODgKKyM6IGdpdGs6NTIzOQogbXNnaWQgIkxvY2FsIHVuY29tbWl0dGVkIGNoYW5nZXMsIG5vdCBjaGVja2VkIGluIHRvIGluZGV4IgogbXNnc3RyICJMb2thbGEgw6RuZHJpbmdhciwgZWogc3BhcmFkZSBpIGluZGV4ZXQiCiAKLSM6IGdpdGs6Njc2OQorIzogZ2l0azo2OTcxCittc2dpZCAiYW5kIG1hbnkgbW9yZSIKK21zZ3N0ciAibWVkIG3DpW5nYSBmbGVyYSIKKworIzogZ2l0azo2OTc0CiBtc2dpZCAibWFueSIKIG1zZ3N0ciAibcOlbmdhIgogCi0jOiBnaXRrOjY5NTIKKyM6IGdpdGs6NzE2MAogbXNnaWQgIlRhZ3M6IgogbXNnc3RyICJUYWdnYXI6IgogCi0jOiBnaXRrOjY5NjkgZ2l0azo2OTc1IGdpdGs6ODMwMgorIzogZ2l0azo3MTc3IGdpdGs6NzE4MyBnaXRrOjg1OTMKIG1zZ2lkICJQYXJlbnQiCiBtc2dzdHIgIkbDtnLDpGxkZXIiCiAKLSM6IGdpdGs6Njk4MAorIzogZ2l0azo3MTg4CiBtc2dpZCAiQ2hpbGQiCiBtc2dzdHIgIkJhcm4iCiAKLSM6IGdpdGs6Njk4OQorIzogZ2l0azo3MTk3CiBtc2dpZCAiQnJhbmNoIgogbXNnc3RyICJHcmVuIgogCi0jOiBnaXRrOjY5OTIKKyM6IGdpdGs6NzIwMAogbXNnaWQgIkZvbGxvd3MiCiBtc2dzdHIgIkbDtmxqZXIiCiAKLSM6IGdpdGs6Njk5NQorIzogZ2l0azo3MjAzCiBtc2dpZCAiUHJlY2VkZXMiCiBtc2dzdHIgIkbDtnJlZ8OlciIKIAotIzogZ2l0azo3NTMyCisjOiBnaXRrOjc3NDIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJFcnJvciBnZXR0aW5nIGRpZmZzOiAlcyIKIG1zZ3N0ciAiRmVsIHZpZCBow6RtdG5pbmcgYXYgZGlmZjogJXMiCiAKLSM6IGdpdGs6ODEzMAorIzogZ2l0azo4NDE4CiBtc2dpZCAiR290bzoiCiBtc2dzdHIgIkfDpSB0aWxsOiIKIAotIzogZ2l0azo4MTUxCisjOiBnaXRrOjg0MzkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJTaG9ydCBTSEExIGlkICVzIGlzIGFtYmlndW91cyIKIG1zZ3N0ciAiRsO2cmtvcnRhdCBTSEExLWlkICVzIMOkciB0dmV0eWRpZ3QiCiAKLSM6IGdpdGs6ODE1OAorIzogZ2l0azo4NDQ2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmV2aXNpb24gJXMgaXMgbm90IGtub3duIgogbXNnc3RyICJSZXZpc2lvbmVuICVzIMOkciBpbnRlIGvDpG5kIgogCi0jOiBnaXRrOjgxNjgKKyM6IGdpdGs6ODQ1NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlNIQTEgaWQgJXMgaXMgbm90IGtub3duIgogbXNnc3RyICJTSEEtaWQ6dCAlcyDDpHIgaW50ZSBrw6RudCIKIAotIzogZ2l0azo4MTcwCisjOiBnaXRrOjg0NTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXZpc2lvbiAlcyBpcyBub3QgaW4gdGhlIGN1cnJlbnQgdmlldyIKIG1zZ3N0ciAiUmV2aXNpb25lbiAlcyBmaW5ucyBpbnRlIGkgZGVuIG51dmFyYW5kZSB2eW4iCiAKLSM6IGdpdGs6ODMxMgorIzogZ2l0azo4NjAwIGdpdGs6ODYxNQorbXNnaWQgIkRhdGUiCittc2dzdHIgIkRhdHVtIgorCisjOiBnaXRrOjg2MDMKIG1zZ2lkICJDaGlsZHJlbiIKIG1zZ3N0ciAiQmFybiIKIAotIzogZ2l0azo4MzcwCisjOiBnaXRrOjg2NjYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXNldCAlcyBicmFuY2ggdG8gaGVyZSIKIG1zZ3N0ciAiw4V0ZXJzdMOkbGwgZ3JlbmVuICVzIGhpdCIKIAotIzogZ2l0azo4MzcyCisjOiBnaXRrOjg2NjgKIG1zZ2lkICJEZXRhY2hlZCBoZWFkOiBjYW4ndCByZXNldCIKIG1zZ3N0ciAiRnLDpW5rb3BwbGFkIGhlYWQ6IGthbiBpbnRlIMOldGVyc3TDpGxsYSIKIAotIzogZ2l0azo4NDgxIGdpdGs6ODQ4NworIzogZ2l0azo4NzczIGdpdGs6ODc3OQogbXNnaWQgIlNraXBwaW5nIG1lcmdlIGNvbW1pdCAiCiBtc2dzdHIgIkhvcHBhciDDtnZlciBzYW1tYW5zbGFnbmluZ3NpbmNoZWNrbmluZyAiCiAKLSM6IGdpdGs6ODQ5NiBnaXRrOjg1MDEKKyM6IGdpdGs6ODc4OCBnaXRrOjg3OTMKIG1zZ2lkICJFcnJvciBnZXR0aW5nIHBhdGNoIElEIGZvciAiCiBtc2dzdHIgIkZlbCB2aWQgaMOkbXRuaW5nIGF2IHBhdGNoLWlkIGbDtnIgIgogCi0jOiBnaXRrOjg0OTcgZ2l0azo4NTAyCisjOiBnaXRrOjg3ODkgZ2l0azo4Nzk0CiBtc2dpZCAiIC0gc3RvcHBpbmdcbiIKIG1zZ3N0ciAiIC0gc3Rhbm5hclxuIgogCi0jOiBnaXRrOjg1MDcgZ2l0azo4NTEwIGdpdGs6ODUxOCBnaXRrOjg1MzIgZ2l0azo4NTQxCisjOiBnaXRrOjg3OTkgZ2l0azo4ODAyIGdpdGs6ODgxMCBnaXRrOjg4MjQgZ2l0azo4ODMzCiBtc2dpZCAiQ29tbWl0ICIKIG1zZ3N0ciAiSW5jaGVja25pbmcgIgogCi0jOiBnaXRrOjg1MTEKKyM6IGdpdGs6ODgwMwogbXNnaWQgIiIKICIgaXMgdGhlIHNhbWUgcGF0Y2ggYXNcbiIKICIgICAgICAgIgpAQCAtODUwLDcgKzg4MCw3IEBACiAiIMOkciBzYW1tYSBwYXRjaCBzb21cbiIKICIgICAgICAgIgogCi0jOiBnaXRrOjg1MTkKKyM6IGdpdGs6ODgxMQogbXNnaWQgIiIKICIgZGlmZmVycyBmcm9tXG4iCiAiICAgICAgICIKQEAgLTg1OCw3ICs4ODgsNyBAQAogIiBza2lsamVyIHNpZyBmcsOlblxuIgogIiAgICAgICAiCiAKLSM6IGdpdGs6ODUyMQorIzogZ2l0azo4ODEzCiBtc2dpZCAiIgogIkRpZmYgb2YgY29tbWl0czpcbiIKICJcbiIKQEAgLTg2NiwxMzEgKzg5NiwxMzEgQEAKICJTa2lsbG5hZCBtZWxsYW4gaW5jaGVja25pbmdhcjpcbiIKICJcbiIKIAotIzogZ2l0azo4NTMzIGdpdGs6ODU0MgorIzogZ2l0azo4ODI1IGdpdGs6ODgzNAogIywgdGNsLWZvcm1hdAogbXNnaWQgIiBoYXMgJXMgY2hpbGRyZW4gLSBzdG9wcGluZ1xuIgogbXNnc3RyICIgaGFyICVzIGJhcm4gLSBzdGFubmFyXG4iCiAKLSM6IGdpdGs6ODU2MQorIzogZ2l0azo4ODUzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRXJyb3Igd3JpdGluZyBjb21taXQgdG8gZmlsZTogJXMiCiBtc2dzdHIgIkZlbCB2aWQgc2tyaXZuaW5nIGF2IGluY2hlY2tuaW5nIHRpbGwgZmlsOiAlcyIKIAotIzogZ2l0azo4NTY3CisjOiBnaXRrOjg4NTkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJFcnJvciBkaWZmaW5nIGNvbW1pdHM6ICVzIgogbXNnc3RyICJGZWwgdmlkIGrDpG1mw7ZyZWxzZSBhdiBpbmNoZWNrbmluZ2FyOiAlcyIKIAotIzogZ2l0azo4NTk4CisjOiBnaXRrOjg5MDUKIG1zZ2lkICJUb3AiCiBtc2dzdHIgIlRvcHAiCiAKLSM6IGdpdGs6ODU5OQorIzogZ2l0azo4OTA2CiBtc2dpZCAiRnJvbSIKIG1zZ3N0ciAiRnLDpW4iCiAKLSM6IGdpdGs6ODYwNAorIzogZ2l0azo4OTExCiBtc2dpZCAiVG8iCiBtc2dzdHIgIlRpbGwiCiAKLSM6IGdpdGs6ODYyOAorIzogZ2l0azo4OTM1CiBtc2dpZCAiR2VuZXJhdGUgcGF0Y2giCiBtc2dzdHIgIkdlbmVyZXJhIHBhdGNoIgogCi0jOiBnaXRrOjg2MzAKKyM6IGdpdGs6ODkzNwogbXNnaWQgIkZyb206IgogbXNnc3RyICJGcsOlbjoiCiAKLSM6IGdpdGs6ODYzOQorIzogZ2l0azo4OTQ2CiBtc2dpZCAiVG86IgogbXNnc3RyICJUaWxsOiIKIAotIzogZ2l0azo4NjQ4CisjOiBnaXRrOjg5NTUKIG1zZ2lkICJSZXZlcnNlIgogbXNnc3RyICJWw6RuZCIKIAotIzogZ2l0azo4NjUwIGdpdGs6ODg0NQorIzogZ2l0azo4OTU3IGdpdGs6OTE1MwogbXNnaWQgIk91dHB1dCBmaWxlOiIKIG1zZ3N0ciAiVXRkYXRhZmlsOiIKIAotIzogZ2l0azo4NjU2CisjOiBnaXRrOjg5NjMKIG1zZ2lkICJHZW5lcmF0ZSIKIG1zZ3N0ciAiR2VuZXJlcmEiCiAKLSM6IGdpdGs6ODY5NAorIzogZ2l0azo5MDAxCiBtc2dpZCAiRXJyb3IgY3JlYXRpbmcgcGF0Y2g6IgogbXNnc3RyICJGZWwgdmlkIGdlbmVyZXJpbmcgYXYgcGF0Y2g6IgogCi0jOiBnaXRrOjg3MTcgZ2l0azo4ODMzIGdpdGs6ODg5MAorIzogZ2l0azo5MDI0IGdpdGs6OTE0MSBnaXRrOjkxOTgKIG1zZ2lkICJJRDoiCiBtc2dzdHIgIklkOiIKIAotIzogZ2l0azo4NzI2CisjOiBnaXRrOjkwMzMKIG1zZ2lkICJUYWcgbmFtZToiCiBtc2dzdHIgIlRhZ2duYW1uOiIKIAotIzogZ2l0azo4NzI5CisjOiBnaXRrOjkwMzYKIG1zZ2lkICJUYWcgbWVzc2FnZSBpcyBvcHRpb25hbCIKIG1zZ3N0ciAiVGFnZ21lZGRlbGFuZGV0IMOkciB2YWxmcml0dCIKIAotIzogZ2l0azo4NzMxCisjOiBnaXRrOjkwMzgKIG1zZ2lkICJUYWcgbWVzc2FnZToiCiBtc2dzdHIgIlRhZ2dtZWRkZWxhbmRlOiIKIAotIzogZ2l0azo4NzM1IGdpdGs6ODg5OQorIzogZ2l0azo5MDQyIGdpdGs6OTIwNwogbXNnaWQgIkNyZWF0ZSIKIG1zZ3N0ciAiU2thcGEiCiAKLSM6IGdpdGs6ODc1MworIzogZ2l0azo5MDYwCiBtc2dpZCAiTm8gdGFnIG5hbWUgc3BlY2lmaWVkIgogbXNnc3RyICJJbmdldCB0YWdnbmFtbiBhbmdhdnMiCiAKLSM6IGdpdGs6ODc1NworIzogZ2l0azo5MDY0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVGFnIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIKIG1zZ3N0ciAiVGFnZ2VuIFwiJXNcIiBmaW5ucyByZWRhbiIKIAotIzogZ2l0azo4NzY3CisjOiBnaXRrOjkwNzQKIG1zZ2lkICJFcnJvciBjcmVhdGluZyB0YWc6IgogbXNnc3RyICJGZWwgdmlkIHNrYXBhbmRlIGF2IHRhZ2c6IgogCi0jOiBnaXRrOjg4NDIKKyM6IGdpdGs6OTE1MAogbXNnaWQgIkNvbW1hbmQ6IgogbXNnc3RyICJLb21tYW5kbzoiCiAKLSM6IGdpdGs6ODg1MAorIzogZ2l0azo5MTU4CiBtc2dpZCAiV3JpdGUiCiBtc2dzdHIgIlNrcml2IgogCi0jOiBnaXRrOjg4NjgKKyM6IGdpdGs6OTE3NgogbXNnaWQgIkVycm9yIHdyaXRpbmcgY29tbWl0OiIKIG1zZ3N0ciAiRmVsIHZpZCBza3Jpdm5pbmcgYXYgaW5jaGVja25pbmc6IgogCi0jOiBnaXRrOjg4OTUKKyM6IGdpdGs6OTIwMwogbXNnaWQgIk5hbWU6IgogbXNnc3RyICJOYW1uOiIKIAotIzogZ2l0azo4OTE4CisjOiBnaXRrOjkyMjYKIG1zZ2lkICJQbGVhc2Ugc3BlY2lmeSBhIG5hbWUgZm9yIHRoZSBuZXcgYnJhbmNoIgogbXNnc3RyICJBbmdlIGV0dCBuYW1uIGbDtnIgZGVuIG55YSBncmVuZW4iCiAKLSM6IGdpdGs6ODkyMworIzogZ2l0azo5MjMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQnJhbmNoICclcycgYWxyZWFkeSBleGlzdHMuIE92ZXJ3cml0ZT8iCiBtc2dzdHIgIkdyZW5lbiBcIiVzXCIgZmlubnMgcmVkYW4uIFNrcml2YSDDtnZlcj8iCiAKLSM6IGdpdGs6ODk4OQorIzogZ2l0azo5Mjk4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGlzIGFscmVhZHkgaW5jbHVkZWQgaW4gYnJhbmNoICVzIC0tIHJlYWxseSByZS1hcHBseSBpdD8iCiBtc2dzdHIgIiIKICJJbmNoZWNrbmluZ2VuICVzIGZpbm5zIHJlZGFuIHDDpSBncmVuZW4gJXMgLS0gc2thbGwgZGVuIHZlcmtsaWdlbiBhcHBsaWNlcmFzICIKICJww6Ugbnl0dD8iCiAKLSM6IGdpdGs6ODk5NAorIzogZ2l0azo5MzAzCiBtc2dpZCAiQ2hlcnJ5LXBpY2tpbmciCiBtc2dzdHIgIlBsb2NrYXIiCiAKLSM6IGdpdGs6OTAwMworIzogZ2l0azo5MzEyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIkNoZXJyeS1waWNrIGZhaWxlZCBiZWNhdXNlIG9mIGxvY2FsIGNoYW5nZXMgdG8gZmlsZSAnJXMnLlxuIgpAQCAtMTAwMCw3ICsxMDMwLDcgQEAKICJDaGVja2EgaW4sIMOldGVyc3TDpGxsIGVsbGVyIHNwYXJhIHVuZGFuIChzdGFzaCkgZGluYSDDpG5kcmluZ2FyIG9jaCBmw7Zyc8O2ayAiCiAiaWdlbi4iCiAKLSM6IGdpdGs6OTAwOQorIzogZ2l0azo5MzE4CiBtc2dpZCAiIgogIkNoZXJyeS1waWNrIGZhaWxlZCBiZWNhdXNlIG9mIG1lcmdlIGNvbmZsaWN0LlxuIgogIkRvIHlvdSB3aXNoIHRvIHJ1biBnaXQgY2l0b29sIHRvIHJlc29sdmUgaXQ/IgpAQCAtMTAwOCwzMiArMTAzOCw1OSBAQAogIkNoZXJyeS1waWNrIG1pc3NseWNrYWRlcyBww6UgZ3J1bmQgYXYgZW4gc2FtbWFuc2xhZ25pbmdza29uZmxpa3QuXG4iCiAiVmlsbCBkdSBrw7ZyYSBnaXQgY2l0b29sIGbDtnIgYXR0IGzDtnNhIGRlbj8iCiAKLSM6IGdpdGs6OTAyNQorIzogZ2l0azo5MzM0IGdpdGs6OTM5MgogbXNnaWQgIk5vIGNoYW5nZXMgY29tbWl0dGVkIgogbXNnc3RyICJJbmdhIMOkbmRyaW5nYXIgaW5jaGVja2FkZSIKIAotIzogZ2l0azo5MDUxCisjOiBnaXRrOjkzNjEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJDb21taXQgJXMgaXMgbm90IGluY2x1ZGVkIGluIGJyYW5jaCAlcyAtLSByZWFsbHkgcmV2ZXJ0IGl0PyIKK21zZ3N0ciAiSW5jaGVja25pbmdlbiAlcyBmaW5ucyBpbnRlIHDDpSBncmVuZW4gJXMgLS0gdmlsbCBkdSB2ZXJrbGlnZW4gw6VuZ3JhPyIKKworIzogZ2l0azo5MzY2Cittc2dpZCAiUmV2ZXJ0aW5nIgorbXNnc3RyICLDhW5ncmFyIgorCisjOiBnaXRrOjkzNzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiUmV2ZXJ0IGZhaWxlZCBiZWNhdXNlIG9mIGxvY2FsIGNoYW5nZXMgdG8gdGhlIGZvbGxvd2luZyBmaWxlczolcyBQbGVhc2UgIgorImNvbW1pdCwgcmVzZXQgb3Igc3Rhc2ggIHlvdXIgY2hhbmdlcyBhbmQgdHJ5IGFnYWluLiIKK21zZ3N0ciAiIgorIk1pc3NseWNrYWRlcyBtZWQgYXR0IMOlbmdyYSBww6UgZ3J1bmQgYXYgbG9rYWxhIMOkbmRyaW5nYXIgaSBmw7ZsamFuZGUgZmlsZXI6JXMuICIKKyJDaGVja2EgaW4sIMOldGVyc3TDpGxsIGVsbGVyIHNwYXJhIHVuZGFuIChzdGFzaCkgZGluYSDDpG5kcmluZ2FyIG9jaCBmw7Zyc8O2ayAiCisiaWdlbi4iCisKKyM6IGdpdGs6OTM3OAorbXNnaWQgIiIKKyJSZXZlcnQgZmFpbGVkIGJlY2F1c2Ugb2YgbWVyZ2UgY29uZmxpY3QuXG4iCisiIERvIHlvdSB3aXNoIHRvIHJ1biBnaXQgY2l0b29sIHRvIHJlc29sdmUgaXQ/IgorbXNnc3RyICIiCisiTWlzc2x5Y2thZGVzIG1lZCBhdHQgw6VuZ3JhIHDDpSBncnVuZCBhdiBlbiBzYW1tYW5zbGFnbmluZ3Nrb25mbGlrdC5cbiIKKyIgVmlsbCBkdSBrw7ZyYSBnaXQgY2l0b29sIGbDtnIgYXR0IGzDtnNhIGRlbj8iCisKKyM6IGdpdGs6OTQyMQogbXNnaWQgIkNvbmZpcm0gcmVzZXQiCiBtc2dzdHIgIkJla3LDpGZ0YSDDpXRlcnN0w6RsbG5pbmciCiAKLSM6IGdpdGs6OTA1MworIzogZ2l0azo5NDIzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVzZXQgYnJhbmNoICVzIHRvICVzPyIKIG1zZ3N0ciAiw4V0ZXJzdMOkbGxhIGdyZW5lbiAlcyB0aWxsICVzPyIKIAotIzogZ2l0azo5MDU1CisjOiBnaXRrOjk0MjUKIG1zZ2lkICJSZXNldCB0eXBlOiIKIG1zZ3N0ciAiVHlwIGF2IMOldGVyc3TDpGxsbmluZzoiCiAKLSM6IGdpdGs6OTA1OAorIzogZ2l0azo5NDI4CiBtc2dpZCAiU29mdDogTGVhdmUgd29ya2luZyB0cmVlIGFuZCBpbmRleCB1bnRvdWNoZWQiCiBtc2dzdHIgIk1qdWs6IFLDtnIgaW50ZSB1dGNoZWNrbmluZyBvY2ggaW5kZXgiCiAKLSM6IGdpdGs6OTA2MQorIzogZ2l0azo5NDMxCiBtc2dpZCAiTWl4ZWQ6IExlYXZlIHdvcmtpbmcgdHJlZSB1bnRvdWNoZWQsIHJlc2V0IGluZGV4IgogbXNnc3RyICJCbGFuZGFkOiBSw7ZyIGludGUgdXRjaGVja25pbmcsIMOldGVyc3TDpGxsIGluZGV4IgogCi0jOiBnaXRrOjkwNjQKKyM6IGdpdGs6OTQzNAogbXNnaWQgIiIKICJIYXJkOiBSZXNldCB3b3JraW5nIHRyZWUgYW5kIGluZGV4XG4iCiAiKGRpc2NhcmQgQUxMIGxvY2FsIGNoYW5nZXMpIgpAQCAtMTA0MSwxOSArMTA5OCwxOSBAQAogIkjDpXJkOiDDhXRlcnN0w6RsbCB1dGNoZWNrbmluZyBvY2ggaW5kZXhcbiIKICIoZsO2cmthc3RhciBBTExBIGxva2FsYSDDpG5kcmluZ2FyKSIKIAotIzogZ2l0azo5MDgxCisjOiBnaXRrOjk0NTEKIG1zZ2lkICJSZXNldHRpbmciCiBtc2dzdHIgIsOFdGVyc3TDpGxsZXIiCiAKLSM6IGdpdGs6OTE0MQorIzogZ2l0azo5NTExCiBtc2dpZCAiQ2hlY2tpbmcgb3V0IgogbXNnc3RyICJDaGVja2FyIHV0IgogCi0jOiBnaXRrOjkxOTQKKyM6IGdpdGs6OTU2NAogbXNnaWQgIkNhbm5vdCBkZWxldGUgdGhlIGN1cnJlbnRseSBjaGVja2VkLW91dCBicmFuY2giCiBtc2dzdHIgIkthbiBpbnRlIHRhIGJvcnQgZGVuIGp1c3QgbnUgdXRjaGVja2FkZSBncmVuZW4iCiAKLSM6IGdpdGs6OTIwMAorIzogZ2l0azo5NTcwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSBjb21taXRzIG9uIGJyYW5jaCAlcyBhcmVuJ3Qgb24gYW55IG90aGVyIGJyYW5jaC5cbiIKQEAgLTEwNjIsMTYgKzExMTksMTYgQEAKICJJbmNoZWNrbmluZ2FybmEgcMOlIGdyZW5lbiAlcyBleGlzdGVyYXIgaW50ZSBww6UgbsOlZ29uIGFubmFuIGdyZW4uXG4iCiAiVmlsbCBkdSB2ZXJrbGlnZW4gdGEgYm9ydCBncmVuZW4gJXM/IgogCi0jOiBnaXRrOjkyMzEKKyM6IGdpdGs6OTYwMQogIywgdGNsLWZvcm1hdAogbXNnaWQgIlRhZ3MgYW5kIGhlYWRzOiAlcyIKIG1zZ3N0ciAiVGFnZ2FyIG9jaCBodXZ1ZGVuOiAlcyIKIAotIzogZ2l0azo5MjQ2CisjOiBnaXRrOjk2MTYKIG1zZ2lkICJGaWx0ZXIiCiBtc2dzdHIgIkZpbHRlciIKIAotIzogZ2l0azo5NTQxCisjOiBnaXRrOjk5MTIKIG1zZ2lkICIiCiAiRXJyb3IgcmVhZGluZyBjb21taXQgdG9wb2xvZ3kgaW5mb3JtYXRpb247IGJyYW5jaCBhbmQgcHJlY2VkaW5nL2ZvbGxvd2luZyAiCiAidGFnIGluZm9ybWF0aW9uIHdpbGwgYmUgaW5jb21wbGV0ZS4iCkBAIC0xMDc5LDIwNiArMTEzNiwyMjMgQEAKICJGZWwgdmlkIGzDpHNuaW5nIGF2IGluZm9ybWF0aW9uIG9tIGluY2hlY2tuaW5nc3RvcG9sb2dpOyBpbmZvcm1hdGlvbiBvbSAiCiAiZ3JlbmFyIG9jaCBmw7ZyZWfDpWVuZGUvc2VuYXJlIHRhZ2dhciBrb21tZXIgaW50ZSB2YXJhIGtvbXBsZXR0LiIKIAotIzogZ2l0azoxMDUyNworIzogZ2l0azoxMDg5OQogbXNnaWQgIlRhZyIKIG1zZ3N0ciAiVGFnZyIKIAotIzogZ2l0azoxMDUyNworIzogZ2l0azoxMDg5OQogbXNnaWQgIklkIgogbXNnc3RyICJJZCIKIAotIzogZ2l0azoxMDU3NgorIzogZ2l0azoxMDk0OAogbXNnaWQgIkdpdGsgZm9udCBjaG9vc2VyIgogbXNnc3RyICJUZWNrZW5zbml0dHN2w6RsamFyZSBmw7ZyIEdpdGsiCiAKLSM6IGdpdGs6MTA1OTMKKyM6IGdpdGs6MTA5NjUKIG1zZ2lkICJCIgogbXNnc3RyICJGIgogCi0jOiBnaXRrOjEwNTk2CisjOiBnaXRrOjEwOTY4CiBtc2dpZCAiSSIKIG1zZ3N0ciAiSyIKIAotIzogZ2l0azoxMDcxNAotbXNnaWQgIkdpdGsgcHJlZmVyZW5jZXMiCi1tc2dzdHIgIkluc3TDpGxsbmluZ2FyIGbDtnIgR2l0ayIKLQotIzogZ2l0azoxMDcxNgorIzogZ2l0azoxMTA4NgogbXNnaWQgIkNvbW1pdCBsaXN0IGRpc3BsYXkgb3B0aW9ucyIKIG1zZ3N0ciAiQWx0ZXJuYXRpdiBmw7ZyIGluY2hlY2tuaW5nc2xpc3R2eSIKIAotIzogZ2l0azoxMDcxOQorIzogZ2l0azoxMTA4OQogbXNnaWQgIk1heGltdW0gZ3JhcGggd2lkdGggKGxpbmVzKSIKIG1zZ3N0ciAiTWF4aW1hbCBncmFmYnJlZGQgKHJhZGVyKSIKIAotIzogZ2l0azoxMDcyMgorIzogZ2l0azoxMTA5MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1heGltdW0gZ3JhcGggd2lkdGggKCUgb2YgcGFuZSkiCiBtc2dzdHIgIk1heGltYWwgZ3JhZmJyZWRkICglIGF2IHJ1dGEpIgogCi0jOiBnaXRrOjEwNzI1CisjOiBnaXRrOjExMDk1CiBtc2dpZCAiU2hvdyBsb2NhbCBjaGFuZ2VzIgogbXNnc3RyICJWaXNhIGxva2FsYSDDpG5kcmluZ2FyIgogCi0jOiBnaXRrOjEwNzI4Ci1tc2dpZCAiQXV0by1zZWxlY3QgU0hBMSIKLW1zZ3N0ciAiVsOkbGogU0hBMSBhdXRvbWF0aXNrdCIKKyM6IGdpdGs6MTEwOTgKK21zZ2lkICJBdXRvLXNlbGVjdCBTSEExIChsZW5ndGgpIgorbXNnc3RyICJWw6RsaiBTSEExIChsw6RuZ2QpIGF1dG9tYXRpc2t0IgogCi0jOiBnaXRrOjEwNzMxCisjOiBnaXRrOjExMTAyCiBtc2dpZCAiSGlkZSByZW1vdGUgcmVmcyIKIG1zZ3N0ciAiRMO2bGogZmrDpHJyLXJlZmVyZW5zZXIiCiAKLSM6IGdpdGs6MTA3MzUKKyM6IGdpdGs6MTExMDYKIG1zZ2lkICJEaWZmIGRpc3BsYXkgb3B0aW9ucyIKIG1zZ3N0ciAiQWx0ZXJuYXRpdiBmw7ZyIGRpZmZ2eSIKIAotIzogZ2l0azoxMDczNworIzogZ2l0azoxMTEwOAogbXNnaWQgIlRhYiBzcGFjaW5nIgogbXNnc3RyICJCbGFua3N0ZWcgZsO2ciB0YWJ1bGF0b3J0ZWNrZW4iCiAKLSM6IGdpdGs6MTA3NDAKLW1zZ2lkICJEaXNwbGF5IG5lYXJieSB0YWdzIgotbXNnc3RyICJWaXNhIG7DpHJsaWdnYW5kZSB0YWdnYXIiCisjOiBnaXRrOjExMTExCittc2dpZCAiRGlzcGxheSBuZWFyYnkgdGFncy9oZWFkcyIKK21zZ3N0ciAiVmlzYSBuw6RybGlnZ2FuZGUgdGFnZ2FyL2h1dnVkZW4iCiAKLSM6IGdpdGs6MTA3NDMKKyM6IGdpdGs6MTExMTQKK21zZ2lkICJNYXhpbXVtICMgdGFncy9oZWFkcyB0byBzaG93IgorbXNnc3RyICJNYXhpbWFsdCBhbnRhbCB0YWdnYXIvaHV2dWRlbiBhdHQgdmlzYSIKKworIzogZ2l0azoxMTExNwogbXNnaWQgIkxpbWl0IGRpZmZzIHRvIGxpc3RlZCBwYXRocyIKIG1zZ3N0ciAiQmVncsOkbnNhIGRpZmYgdGlsbCBsaXN0YWRlIHPDtmt2w6RnYXIiCiAKLSM6IGdpdGs6MTA3NDYKKyM6IGdpdGs6MTExMjAKIG1zZ2lkICJTdXBwb3J0IHBlci1maWxlIGVuY29kaW5ncyIKIG1zZ3N0ciAiU3TDtmQgZsO2ciBmaWxzcGVjaWZpa2EgdGVja2Vua29kbmluZ2FyIgogCi0jOiBnaXRrOjEwNzUyIGdpdGs6MTA4MzIKKyM6IGdpdGs6MTExMjYgZ2l0azoxMTI3MwogbXNnaWQgIkV4dGVybmFsIGRpZmYgdG9vbCIKIG1zZ3N0ciAiRXh0ZXJudCBkaWZmLXZlcmt0eWciCiAKLSM6IGdpdGs6MTA3NTMKKyM6IGdpdGs6MTExMjcKIG1zZ2lkICJDaG9vc2UuLi4iCiBtc2dzdHIgIlbDpGxqLi4uIgogCi0jOiBnaXRrOjEwNzU4CisjOiBnaXRrOjExMTMyCiBtc2dpZCAiR2VuZXJhbCBvcHRpb25zIgogbXNnc3RyICJBbGxtw6RubmEgaW5zdMOkbGxuaW5nYXIiCiAKLSM6IGdpdGs6MTA3NjEKKyM6IGdpdGs6MTExMzUKIG1zZ2lkICJVc2UgdGhlbWVkIHdpZGdldHMiCiBtc2dzdHIgIkFudsOkbmQgdGVtYSBww6UgZsO2bnN0ZXJlbGVtZW50IgogCi0jOiBnaXRrOjEwNzYzCisjOiBnaXRrOjExMTM3CiBtc2dpZCAiKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KSIKIG1zZ3N0ciAiKMOkbmRyaW5nZW4ga3LDpHZlciBvbXN0YXJ0KSIKIAotIzogZ2l0azoxMDc2NQorIzogZ2l0azoxMTEzOQogbXNnaWQgIihjdXJyZW50bHkgdW5hdmFpbGFibGUpIgogbXNnc3RyICIoZsO2ciBuw6RydmFyYW5kZSBpbnRlIHRpbGxnw6RuZ2xpZ3QpIgogCi0jOiBnaXRrOjEwNzY5CisjOiBnaXRrOjExMTUwCiBtc2dpZCAiQ29sb3JzOiBwcmVzcyB0byBjaG9vc2UiCiBtc2dzdHIgIkbDpHJnZXI6IHRyeWNrIGbDtnIgYXR0IHbDpGxqYSIKIAotIzogZ2l0azoxMDc3MgorIzogZ2l0azoxMTE1MwogbXNnaWQgIkludGVyZmFjZSIKIG1zZ3N0ciAiR3LDpG5zc25pdHQiCiAKLSM6IGdpdGs6MTA3NzMKKyM6IGdpdGs6MTExNTQKIG1zZ2lkICJpbnRlcmZhY2UiCiBtc2dzdHIgImdyw6Ruc3NuaXR0IgogCi0jOiBnaXRrOjEwNzc2CisjOiBnaXRrOjExMTU3CiBtc2dpZCAiQmFja2dyb3VuZCIKIG1zZ3N0ciAiQmFrZ3J1bmQiCiAKLSM6IGdpdGs6MTA3NzcgZ2l0azoxMDgwNworIzogZ2l0azoxMTE1OCBnaXRrOjExMTg4CiBtc2dpZCAiYmFja2dyb3VuZCIKIG1zZ3N0ciAiYmFrZ3J1bmQiCiAKLSM6IGdpdGs6MTA3ODAKKyM6IGdpdGs6MTExNjEKIG1zZ2lkICJGb3JlZ3JvdW5kIgogbXNnc3RyICJGw7ZyZ3J1bmQiCiAKLSM6IGdpdGs6MTA3ODEKKyM6IGdpdGs6MTExNjIKIG1zZ2lkICJmb3JlZ3JvdW5kIgogbXNnc3RyICJmw7ZyZ3J1bmQiCiAKLSM6IGdpdGs6MTA3ODQKKyM6IGdpdGs6MTExNjUKIG1zZ2lkICJEaWZmOiBvbGQgbGluZXMiCiBtc2dzdHIgIkRpZmY6IGdhbWxhIHJhZGVyIgogCi0jOiBnaXRrOjEwNzg1CisjOiBnaXRrOjExMTY2CiBtc2dpZCAiZGlmZiBvbGQgbGluZXMiCiBtc2dzdHIgImRpZmYgZ2FtbGEgcmFkZXIiCiAKLSM6IGdpdGs6MTA3ODkKKyM6IGdpdGs6MTExNzAKIG1zZ2lkICJEaWZmOiBuZXcgbGluZXMiCiBtc2dzdHIgIkRpZmY6IG55YSByYWRlciIKIAotIzogZ2l0azoxMDc5MAorIzogZ2l0azoxMTE3MQogbXNnaWQgImRpZmYgbmV3IGxpbmVzIgogbXNnc3RyICJkaWZmIG55YSByYWRlciIKIAotIzogZ2l0azoxMDc5NAorIzogZ2l0azoxMTE3NQogbXNnaWQgIkRpZmY6IGh1bmsgaGVhZGVyIgogbXNnc3RyICJEaWZmOiBkZWxodXZ1ZCIKIAotIzogZ2l0azoxMDc5NgorIzogZ2l0azoxMTE3NwogbXNnaWQgImRpZmYgaHVuayBoZWFkZXIiCiBtc2dzdHIgImRpZmYgZGVsaHV2dWQiCiAKLSM6IGdpdGs6MTA4MDAKKyM6IGdpdGs6MTExODEKIG1zZ2lkICJNYXJrZWQgbGluZSBiZyIKIG1zZ3N0ciAiTWFya2VyYWQgcmFkIGJha2dydW5kIgogCi0jOiBnaXRrOjEwODAyCisjOiBnaXRrOjExMTgzCiBtc2dpZCAibWFya2VkIGxpbmUgYmFja2dyb3VuZCIKIG1zZ3N0ciAibWFya2VyYWQgcmFkIGJha2dydW5kIgogCi0jOiBnaXRrOjEwODA2CisjOiBnaXRrOjExMTg3CiBtc2dpZCAiU2VsZWN0IGJnIgogbXNnc3RyICJNYXJrZXJhZCBiYWtncnVuZCIKIAotIzogZ2l0azoxMDgxMAorIzogZ2l0azoxMTE5NgogbXNnaWQgIkZvbnRzOiBwcmVzcyB0byBjaG9vc2UiCiBtc2dzdHIgIlRlY2tlbnNuaXR0OiB0cnljayBmw7ZyIGF0dCB2w6RsamEiCiAKLSM6IGdpdGs6MTA4MTIKKyM6IGdpdGs6MTExOTgKIG1zZ2lkICJNYWluIGZvbnQiCiBtc2dzdHIgIkh1dnVkdGVja2Vuc25pdHQiCiAKLSM6IGdpdGs6MTA4MTMKKyM6IGdpdGs6MTExOTkKIG1zZ2lkICJEaWZmIGRpc3BsYXkgZm9udCIKIG1zZ3N0ciAiVGVja2Vuc25pdHQgZsO2ciBkaWZmdmlzbmluZyIKIAotIzogZ2l0azoxMDgxNAorIzogZ2l0azoxMTIwMAogbXNnaWQgIlVzZXIgaW50ZXJmYWNlIGZvbnQiCiBtc2dzdHIgIlRlY2tlbnNuaXR0IGbDtnIgYW52w6RuZGFyZ3LDpG5zc25pdHQiCiAKLSM6IGdpdGs6MTA4NDIKKyM6IGdpdGs6MTEyMjIKK21zZ2lkICJHaXRrIHByZWZlcmVuY2VzIgorbXNnc3RyICJJbnN0w6RsbG5pbmdhciBmw7ZyIEdpdGsiCisKKyM6IGdpdGs6MTEyMzEKK21zZ2lkICJHZW5lcmFsIgorbXNnc3RyICJBbGxtw6RudCIKKworIzogZ2l0azoxMTIzMgorbXNnaWQgIkNvbG9ycyIKK21zZ3N0ciAiRsOkcmdlciIKKworIzogZ2l0azoxMTIzMworbXNnaWQgIkZvbnRzIgorbXNnc3RyICJUZWNrZW5zbml0dCIKKworIzogZ2l0azoxMTI4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkdpdGs6IGNob29zZSBjb2xvciBmb3IgJXMiCiBtc2dzdHIgIkdpdGs6IHbDpGxqIGbDpHJnIGbDtnIgJXMiCiAKLSM6IGdpdGs6MTE0NDUKKyM6IGdpdGs6MTE5MzcKIG1zZ2lkICJDYW5ub3QgZmluZCBhIGdpdCByZXBvc2l0b3J5IGhlcmUuIgogbXNnc3RyICJIaXR0YXIgaW5nZXQgZ2l0LWFya2l2IGjDpHIuIgogCi0jOiBnaXRrOjExNDQ5Ci0jLCB0Y2wtZm9ybWF0Ci1tc2dpZCAiQ2Fubm90IGZpbmQgdGhlIGdpdCBkaXJlY3RvcnkgXCIlc1wiLiIKLW1zZ3N0ciAiSGl0dGFyIGludGUgZ2l0LWthdGFsb2dlbiBcIiVzXCIuIgotCi0jOiBnaXRrOjExNDk2CisjOiBnaXRrOjExOTg0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQW1iaWd1b3VzIGFyZ3VtZW50ICclcyc6IGJvdGggcmV2aXNpb24gYW5kIGZpbGVuYW1lIgogbXNnc3RyICJUdmV0eWRpZ3QgYXJndW1lbnQgXCIlc1wiOiBiw6VkZSByZXZpc2lvbiBvY2ggZmlsbmFtbiIKIAotIzogZ2l0azoxMTUwOAorIzogZ2l0azoxMTk5NgogbXNnaWQgIkJhZCBhcmd1bWVudHMgdG8gZ2l0azoiCiBtc2dzdHIgIkZlbGFrdGlnYSBhcmd1bWVudCB0aWxsIGdpdGs6IgogCi0jOiBnaXRrOjExNjA0CisjOiBnaXRrOjEyMDk5CiBtc2dpZCAiQ29tbWFuZCBsaW5lIgogbXNnc3RyICJLb21tYW5kb3JhZCIKIAorI34gbXNnaWQgIkNEYXRlIgorI34gbXNnc3RyICJTa2FwYXQgZGF0dW0iCisKKyN+IG1zZ2lkICJDYW5ub3QgZmluZCB0aGUgZ2l0IGRpcmVjdG9yeSBcIiVzXCIuIgorI34gbXNnc3RyICJIaXR0YXIgaW50ZSBnaXQta2F0YWxvZ2VuIFwiJXNcIi4iCisKICN+IG1zZ2lkICJTSEExIElEOiAiCiAjfiBtc2dzdHIgIlNIQTEtaWQ6ICIKIApkaWZmIC0tZ2l0IGEvZ2l0d2ViL0lOU1RBTEwgYi9naXR3ZWIvSU5TVEFMTAppbmRleCA2ZDQ1NDA2Li40MDhmMjg1IDEwMDY0NAotLS0gYS9naXR3ZWIvSU5TVEFMTAorKysgYi9naXR3ZWIvSU5TVEFMTApAQCAtMjQzLDE0ICsyNDMsMTEgQEAKICAgR0lUV0VCX0NPTkZJR19TWVNURU0gYnVpbGQgY29uZmlndXJhdGlvbiB2YXJpYWJsZSwgYW5kIG92ZXJyaWRlIGl0CiAgIHRocm91Z2ggdGhlIEdJVFdFQl9DT05GSUdfU1lTVEVNIGVudmlyb25tZW50IHZhcmlhYmxlLgogCi0gIE5vdGUgdGhhdCBpZiBwZXItaW5zdGFuY2UgY29uZmlndXJhdGlvbiBmaWxlIGV4aXN0cywgdGhlbiBzeXN0ZW0td2lkZQotICBjb25maWd1cmF0aW9uIGlzIF9ub3QgdXNlZCBhdCBhbGxfLiAgVGhpcyBpcyBxdWl0ZSB1bnR5cGljYWwgYW5kIHN1cHJpc2luZwotICBiZWhhdmlvci4gIE9uIHRoZSBvdGhlciBoYW5kIGNoYW5naW5nIGN1cnJlbnQgYmVoYXZpb3Igd291bGQgYnJlYWsgYmFja3dhcmRzCi0gIGNvbXBhdGliaWxpdHkgYW5kIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgY2hhbmdlcyBpbiBnaXR3ZWIgYmVoYXZpb3IuCi0gIFRoZXJlZm9yZSBnaXR3ZWIgYWxzbyBsb29rcyBmb3IgY29tbW9uIHN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24gZmlsZSwKLSAgbm9ybWFsbHkgL2V0Yy9naXR3ZWItY29tbW9uLmNvbmYgKHNldCBkdXJpbmcgYnVpbGQgdGltZSB1c2luZyBidWlsZCB0aW1lCi0gIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgR0lUV0VCX0NPTkZJR19DT01NT04sIHNldCBpdCBhdCBydW50aW1lIHVzaW5nCi0gIGVudmlyb25tZW50IHZhcmlhYmxlIHdpdGggdGhlIHNhbWUgbmFtZSkuICBTZXR0aW5ncyBmcm9tIHBlci1pbnN0YW5jZSBvcgorICBOb3RlIHRoYXQgdGhlIEdJVFdFQl9DT05GSUdfU1lTVEVNIHN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24gZmlsZSBpcworICBvbmx5IHVzZWQgZm9yIGluc3RhbmNlcyB0aGF0IGxhY2sgcGVyLWluc3RhbmNlIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgWW91IGNhbiB1c2UgR0lUV0VCX0NPTkZJR19DT01NT04gY29tbW9uIHN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24KKyAgZmlsZSAobm9ybWFsbHkgL2V0Yy9naXR3ZWItY29tbW9uLmNvbmYpIHRvIGtlZXAgY29tbW9uIGRlZmF1bHQKKyAgc2V0dGluZ3MgdGhhdCBhcHBseSB0byBhbGwgaW5zdGFuY2VzLiAgU2V0dGluZ3MgZnJvbSBwZXItaW5zdGFuY2Ugb3IKICAgc3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbiBmaWxlIG92ZXJyaWRlIHRob3NlIGZyb20gY29tbW9uIHN5c3RlbS13aWRlCiAgIGNvbmZpZ3VyYXRpb24gZmlsZS4KIApkaWZmIC0tZ2l0IGEvZ2l0d2ViL1JFQURNRSBiL2dpdHdlYi9SRUFETUUKaW5kZXggNmRhNDc3OC4uNDcxZGNmYiAxMDA2NDQKLS0tIGEvZ2l0d2ViL1JFQURNRQorKysgYi9naXR3ZWIvUkVBRE1FCkBAIC0xLDkgKzEsNiBAQAogR0lUIHdlYiBJbnRlcmZhY2UKID09PT09PT09PT09PT09PT09CiAKLVRoZSBvbmUgd29ya2luZyBvbjoKLSAgaHR0cDovL2dpdC5rZXJuZWwub3JnLwotCiBGcm9tIHRoZSBnaXQgdmVyc2lvbiAxLjQuMCBnaXR3ZWIgaXMgYnVuZGxlZCB3aXRoIGdpdC4KIAogCmRpZmYgLS1naXQgYS9naXR3ZWIvZ2l0d2ViLnBlcmwgYi9naXR3ZWIvZ2l0d2ViLnBlcmwKaW5kZXggNTVlMGU5ZS4uOGQ2OWFkYSAxMDA3NTUKLS0tIGEvZ2l0d2ViL2dpdHdlYi5wZXJsCisrKyBiL2dpdHdlYi9naXR3ZWIucGVybApAQCAtNTQsNiArNTQsMTEgQEAKIAkjIHRvIGJ1aWxkIHRoZSBiYXNlIFVSTCBvdXJzZWx2ZXM6CiAJb3VyICRwYXRoX2luZm8gPSBkZWNvZGVfdXRmOCgkRU5WeyJQQVRIX0lORk8ifSk7CiAJaWYgKCRwYXRoX2luZm8pIHsKKwkJIyAkcGF0aF9pbmZvIGhhcyBhbHJlYWR5IGJlZW4gVVJMLWRlY29kZWQgYnkgdGhlIHdlYiBzZXJ2ZXIsIGJ1dAorCQkjICRteV91cmwgYW5kICRteV91cmkgaGF2ZSBub3QuIFVSTC1kZWNvZGUgdGhlbSBzbyB3ZSBjYW4gcHJvcGVybHkKKwkJIyBzdHJpcCAkcGF0aF9pbmZvLgorCQkkbXlfdXJsID0gdW5lc2NhcGUoJG15X3VybCk7CisJCSRteV91cmkgPSB1bmVzY2FwZSgkbXlfdXJpKTsKIAkJaWYgKCRteV91cmwgPX4gcyxcUSRwYXRoX2luZm9cRSQsLCAmJgogCQkgICAgJG15X3VyaSA9fiBzLFxRJHBhdGhfaW5mb1xFJCwsICYmCiAJCSAgICBkZWZpbmVkICRFTlZ7J1NDUklQVF9OQU1FJ30pIHsKQEAgLTI2NSwxNiArMjcwLDE1IEBACiBvdXIgJWhpZ2hsaWdodF9leHQgPSAoCiAJIyBtYWluIGV4dGVuc2lvbnMsIGRlZmluaW5nIG5hbWUgb2Ygc3ludGF4OwogCSMgc2VlIGZpbGVzIGluIC91c3Ivc2hhcmUvaGlnaGxpZ2h0L2xhbmdEZWZzLyBkaXJlY3RvcnkKLQltYXAgeyAkXyA9PiAkXyB9Ci0JCXF3KHB5IGMgY3BwIHJiIGphdmEgY3NzIHBocCBzaCBwbCBqcyB0ZXggYmliIHhtbCBhd2sgYmF0IGluaSBzcGVjIHRjbCBzcWwgbWFrZSksCisJKG1hcCB7ICRfID0+ICRfIH0gcXcocHkgcmIgamF2YSBjc3MganMgdGV4IGJpYiB4bWwgYXdrIGJhdCBpbmkgc3BlYyB0Y2wgc3FsKSksCiAJIyBhbHRlcm5hdGUgZXh0ZW5zaW9ucywgc2VlIC9ldGMvaGlnaGxpZ2h0L2ZpbGV0eXBlcy5jb25mCi0JJ2gnID0+ICdjJywKLQltYXAgeyAkXyA9PiAnc2gnICB9IHF3KGJhc2ggenNoIGtzaCksCi0JbWFwIHsgJF8gPT4gJ2NwcCcgfSBxdyhjeHggYysrIGNjKSwKLQltYXAgeyAkXyA9PiAncGhwJyB9IHF3KHBocDMgcGhwNCBwaHA1IHBocHMpLAotCW1hcCB7ICRfID0+ICdwbCcgIH0gcXcocGVybCBwbSksICMgcGVyaGFwcyBhbHNvICdjZ2knCi0JbWFwIHsgJF8gPT4gJ21ha2UnfSBxdyhtYWsgbWspLAotCW1hcCB7ICRfID0+ICd4bWwnIH0gcXcoeGh0bWwgaHRtbCBodG0pLAorCShtYXAgeyAkXyA9PiAnYycgICB9IHF3KGMgaCkpLAorCShtYXAgeyAkXyA9PiAnc2gnICB9IHF3KHNoIGJhc2ggenNoIGtzaCkpLAorCShtYXAgeyAkXyA9PiAnY3BwJyB9IHF3KGNwcCBjeHggYysrIGNjKSksCisJKG1hcCB7ICRfID0+ICdwaHAnIH0gcXcocGhwIHBocDMgcGhwNCBwaHA1IHBocHMpKSwKKwkobWFwIHsgJF8gPT4gJ3BsJyAgfSBxdyhwbCBwZXJsIHBtKSksICMgcGVyaGFwcyBhbHNvICdjZ2knCisJKG1hcCB7ICRfID0+ICdtYWtlJ30gcXcobWFrZSBtYWsgbWspKSwKKwkobWFwIHsgJF8gPT4gJ3htbCcgfSBxdyh4bWwgeGh0bWwgaHRtbCBodG0pKSwKICk7CiAKICMgWW91IGRlZmluZSBzaXRlLXdpZGUgZmVhdHVyZSBkZWZhdWx0cyBoZXJlOyBvdmVycmlkZSB0aGVtIHdpdGgKQEAgLTUzNiw3ICs1NDAsNyBAQAogCSMgJGZlYXR1cmV7J3JlbW90ZV9oZWFkcyd9eydkZWZhdWx0J30gPSBbMV07CiAJIyBUbyBoYXZlIHByb2plY3Qgc3BlY2lmaWMgY29uZmlnIGVuYWJsZSBvdmVycmlkZSBpbiAkR0lUV0VCX0NPTkZJRwogCSMgJGZlYXR1cmV7J3JlbW90ZV9oZWFkcyd9eydvdmVycmlkZSd9ID0gMTsKLQkjIGFuZCBpbiBwcm9qZWN0IGNvbmZpZyBnaXR3ZWIucmVtb3RlX2hlYWRzID0gMHwxOworCSMgYW5kIGluIHByb2plY3QgY29uZmlnIGdpdHdlYi5yZW1vdGVoZWFkcyA9IDB8MTsKIAkncmVtb3RlX2hlYWRzJyA9PiB7CiAJCSdzdWInID0+IHN1YiB7IGZlYXR1cmVfYm9vbCgncmVtb3RlX2hlYWRzJywgQF8pIH0sCiAJCSdvdmVycmlkZScgPT4gMCwKQEAgLTY3OSw3ICs2ODMsNyBAQAogCW91ciAkR0lUV0VCX0NPTkZJR19TWVNURU0gPSAkRU5WeydHSVRXRUJfQ09ORklHX1NZU1RFTSd9IHx8ICIrK0dJVFdFQl9DT05GSUdfU1lTVEVNKysiOwogCW91ciAkR0lUV0VCX0NPTkZJR19DT01NT04gPSAkRU5WeydHSVRXRUJfQ09ORklHX0NPTU1PTid9IHx8ICIrK0dJVFdFQl9DT05GSUdfQ09NTU9OKysiOwogCi0JIyBQcm90ZWN0IGFnYWlucyBkdXBsaWNhdGlvbnMgb2YgZmlsZSBuYW1lcywgdG8gbm90IHJlYWQgY29uZmlnIHR3aWNlLgorCSMgUHJvdGVjdCBhZ2FpbnN0IGR1cGxpY2F0aW9ucyBvZiBmaWxlIG5hbWVzLCB0byBub3QgcmVhZCBjb25maWcgdHdpY2UuCiAJIyBPbmx5IG9uZSBvZiAkR0lUV0VCX0NPTkZJRyBhbmQgJEdJVFdFQl9DT05GSUdfU1lTVEVNIGlzIHVzZWQsIHNvCiAJIyB0aGVyZSBwb3NzaWJpbGl0eSBvZiBkdXBsaWNhdGlvbiBvZiBmaWxlbmFtZSB0aGVyZSBkb2Vzbid0IG1hdHRlci4KIAkkR0lUV0VCX0NPTkZJRyA9ICIiICAgICAgICBpZiAoJEdJVFdFQl9DT05GSUcgZXEgJEdJVFdFQl9DT05GSUdfQ09NTU9OKTsKQEAgLTEwODIsNyArMTA4Niw3IEBACiAJb3VyICRzZWFyY2hfdXNlX3JlZ2V4cCA9ICRpbnB1dF9wYXJhbXN7J3NlYXJjaF91c2VfcmVnZXhwJ307CiAKIAlvdXIgJHNlYXJjaHRleHQgPSAkaW5wdXRfcGFyYW1zeydzZWFyY2h0ZXh0J307Ci0Jb3VyICRzZWFyY2hfcmVnZXhwOworCW91ciAkc2VhcmNoX3JlZ2V4cCA9IHVuZGVmOwogCWlmIChkZWZpbmVkICRzZWFyY2h0ZXh0KSB7CiAJCWlmIChsZW5ndGgoJHNlYXJjaHRleHQpIDwgMikgewogCQkJZGllX2Vycm9yKDQwMywgIkF0IGxlYXN0IHR3byBjaGFyYWN0ZXJzIGFyZSByZXF1aXJlZCBmb3Igc2VhcmNoIHBhcmFtZXRlciIpOwpAQCAtMTEzMiw3ICsxMTM2LDcgQEAKIAogCSMgdG8gYXZvaWQgaW5maW5pdGUgbG9vcCB3aGVyZSBlcnJvciBvY2N1cnMgaW4gZGllX2Vycm9yLAogCSMgY2hhbmdlIGhhbmRsZXIgdG8gZGVmYXVsdCBoYW5kbGVyLCBkaXNhYmxpbmcgaGFuZGxlX2Vycm9yc19odG1sCi0Jc2V0X21lc3NhZ2UoIkVycm9yIG9jY3VyZWQgd2hlbiBpbnNpZGUgZGllX2Vycm9yOlxuJG1zZyIpOworCXNldF9tZXNzYWdlKCJFcnJvciBvY2N1cnJlZCB3aGVuIGluc2lkZSBkaWVfZXJyb3I6XG4kbXNnIik7CiAKIAkjIHlvdSBjYW5ub3QganVtcCBvdXQgb2YgZGllX2Vycm9yIHdoZW4gY2FsbGVkIGFzIGVycm9yIGhhbmRsZXI7CiAJIyB0aGUgc3Vicm91dGluZSBzZXQgdmlhIENHSTo6Q2FycDo6c2V0X21lc3NhZ2UgaXMgY2FsbGVkIF9hZnRlcl8KQEAgLTE1NTIsNyArMTU1Niw3IEBACiAJcmV0dXJuIHVuZGVmIHVubGVzcyBkZWZpbmVkICRzdHI7CiAKIAkkc3RyID0gdG9fdXRmOCgkc3RyKTsKLQkkc3RyID1+IHN8KFtbOmNudHJsOl1dKXwoJDEgPX4gL1tcdFxuXHJdLyA/ICQxIDogcXVvdF9jZWMoJDEpKXxlZzsKKwkkc3RyID1+IHN8KFtbOmNudHJsOl1dKXwoaW5kZXgoIlx0XG5cciIsICQxKSAhPSAtMSA/ICQxIDogcXVvdF9jZWMoJDEpKXxlZzsKIAlyZXR1cm4gJHN0cjsKIH0KIApAQCAtMjA2NCw3ICsyMDY4LDcgQEAKIAlpZiAoISRhdmF0YXJfY2FjaGV7JGVtYWlsfSkgewogCQlteSAoJHVzZXIsICRkb21haW4pID0gc3BsaXQoJ0AnLCAkZW1haWwpOwogCQkkYXZhdGFyX2NhY2hleyRlbWFpbH0gPQotCQkJImh0dHA6Ly93d3cuY3MuaW5kaWFuYS5lZHUvY2dpLXB1Yi9raW56bGVyL3BpY29uc2VhcmNoLmNnaS8iIC4KKwkJCSIvL3d3dy5jcy5pbmRpYW5hLmVkdS9jZ2ktcHViL2tpbnpsZXIvcGljb25zZWFyY2guY2dpLyIgLgogCQkJIiRkb21haW4vJHVzZXIvIiAuCiAJCQkidXNlcnMrZG9tYWlucyt1bmtub3duL3VwL3NpbmdsZSI7CiAJfQpAQCAtMjA3OSw3ICsyMDgzLDcgQEAKIAlteSAkZW1haWwgPSBsYyBzaGlmdDsKIAlteSAkc2l6ZSA9IHNoaWZ0OwogCSRhdmF0YXJfY2FjaGV7JGVtYWlsfSB8fD0KLQkJImh0dHA6Ly93d3cuZ3JhdmF0YXIuY29tL2F2YXRhci8iIC4KKwkJIi8vd3d3LmdyYXZhdGFyLmNvbS9hdmF0YXIvIiAuCiAJCQlEaWdlc3Q6Ok1ENTo6bWQ1X2hleCgkZW1haWwpIC4gIj9zPSI7CiAJcmV0dXJuICRhdmF0YXJfY2FjaGV7JGVtYWlsfSAuICRzaXplOwogfQpAQCAtMjY5MiwxMiArMjY5NiwxNSBAQAogCSMgb25seSBzdWJzZWN0aW9uLCBpZiBleGlzdHMsIGlzIGNhc2Ugc2Vuc2l0aXZlLAogCSMgYW5kIG5vdCBsb3dlcmNhc2VkIGJ5ICdnaXQgY29uZmlnIC16IC1sJwogCWlmIChteSAoJGhpLCAkbWksICRsbykgPSAoJGtleSA9fiAvXihbXi5dKilcLiguKilcLihbXi5dKikkLykpIHsKKwkJJGxvID1+IHMvXy8vZzsKIAkJJGtleSA9IGpvaW4oIi4iLCBsYygkaGkpLCAkbWksIGxjKCRsbykpOworCQlyZXR1cm4gaWYgKCRsbyA9fiAvXFcvIHx8ICRoaSA9fiAvXFcvKTsKIAl9IGVsc2UgewogCQkka2V5ID0gbGMoJGtleSk7CisJCSRrZXkgPX4gcy9fLy9nOworCQlyZXR1cm4gaWYgKCRrZXkgPX4gL1xXLyk7CiAJfQogCSRrZXkgPX4gcy9eZ2l0d2ViXC4vLzsKLQlyZXR1cm4gaWYgKCRrZXkgPX4gbS9cVy8pOwogCiAJIyB0eXBlIHNhbml0eSBjaGVjawogCWlmIChkZWZpbmVkICR0eXBlKSB7CkBAIC00NDg0LDMwICs0NDkxLDMzIEBACiAJfQogCiAJIyBwcmludCBsb2cKLQlteSAkc2lnbm9mZiA9IDA7Ci0JbXkgJGVtcHR5ID0gMDsKKwlteSAkc2tpcF9ibGFua19saW5lID0gMDsKIAlmb3JlYWNoIG15ICRsaW5lIChAJGxvZykgewotCQlpZiAoJGxpbmUgPX4gbS9eICooc2lnbmVkWyBcLV1vZmZbIFwtXWJ5WyA6XXxhY2tlZFsgXC1dYnlbIDpdfGNjWyA6XSkvaSkgewotCQkJJHNpZ25vZmYgPSAxOwotCQkJJGVtcHR5ID0gMDsKKwkJaWYgKCRsaW5lID1+IG0vXlxzKihbQS1aXVstQS1aYS16XSotW0JiXXl8Q1tDY10pOiAvKSB7CiAJCQlpZiAoISAkb3B0c3snLXJlbW92ZV9zaWdub2ZmJ30pIHsKIAkJCQlwcmludCAiPHNwYW4gY2xhc3M9XCJzaWdub2ZmXCI+IiAuIGVzY19odG1sKCRsaW5lKSAuICI8L3NwYW4+PGJyLz5cbiI7Ci0JCQkJbmV4dDsKLQkJCX0gZWxzZSB7Ci0JCQkJIyByZW1vdmUgc2lnbm9mZiBsaW5lcwotCQkJCW5leHQ7CisJCQkJJHNraXBfYmxhbmtfbGluZSA9IDE7CiAJCQl9Ci0JCX0gZWxzZSB7Ci0JCQkkc2lnbm9mZiA9IDA7CisJCQluZXh0OworCQl9CisKKwkJaWYgKCRsaW5lID1+IG0sXHMqKFthLXpdKmxpbmspOiAoaHR0cHM/Oi8vXFMrKSxpKSB7CisJCQlpZiAoISAkb3B0c3snLXJlbW92ZV9zaWdub2ZmJ30pIHsKKwkJCQlwcmludCAiPHNwYW4gY2xhc3M9XCJzaWdub2ZmXCI+IiAuIGVzY19odG1sKCQxKSAuICI6ICIgLgorCQkJCQkiPGEgaHJlZj1cIiIgLiBlc2NfaHRtbCgkMikgLiAiXCI+IiAuIGVzY19odG1sKCQyKSAuICI8L2E+IiAuCisJCQkJCSI8L3NwYW4+PGJyLz5cbiI7CisJCQkJJHNraXBfYmxhbmtfbGluZSA9IDE7CisJCQl9CisJCQluZXh0OwogCQl9CiAKIAkJIyBwcmludCBvbmx5IG9uZSBlbXB0eSBsaW5lCiAJCSMgZG8gbm90IHByaW50IGVtcHR5IGxpbmUgYWZ0ZXIgc2lnbm9mZgogCQlpZiAoJGxpbmUgZXEgIiIpIHsKLQkJCW5leHQgaWYgKCRlbXB0eSB8fCAkc2lnbm9mZik7Ci0JCQkkZW1wdHkgPSAxOworCQkJbmV4dCBpZiAoJHNraXBfYmxhbmtfbGluZSk7CisJCQkkc2tpcF9ibGFua19saW5lID0gMTsKIAkJfSBlbHNlIHsKLQkJCSRlbXB0eSA9IDA7CisJCQkkc2tpcF9ibGFua19saW5lID0gMDsKIAkJfQogCiAJCXByaW50IGZvcm1hdF9sb2dfbGluZV9odG1sKCRsaW5lKSAuICI8YnIvPlxuIjsKQEAgLTQ1MTUsNyArNDUyNSw3IEBACiAKIAlpZiAoJG9wdHN7Jy1maW5hbF9lbXB0eV9saW5lJ30pIHsKIAkJIyBlbmQgd2l0aCBzaW5nbGUgZW1wdHkgbGluZQotCQlwcmludCAiPGJyLz5cbiIgdW5sZXNzICRlbXB0eTsKKwkJcHJpbnQgIjxici8+XG4iIHVubGVzcyAkc2tpcF9ibGFua19saW5lOwogCX0KIH0KIApAQCAtNTUxOCwyMyArNTUyOCwzMCBAQAogCiBzdWIgc29ydF9wcm9qZWN0c19saXN0IHsKIAlteSAoJHByb2psaXN0LCAkb3JkZXIpID0gQF87Ci0JbXkgQHByb2plY3RzOwogCi0JbXkgJW9yZGVyX2luZm8gPSAoCi0JCXByb2plY3QgPT4geyBrZXkgPT4gJ3BhdGgnLCB0eXBlID0+ICdzdHInIH0sCi0JCWRlc2NyID0+IHsga2V5ID0+ICdkZXNjcl9sb25nJywgdHlwZSA9PiAnc3RyJyB9LAotCQlvd25lciA9PiB7IGtleSA9PiAnb3duZXInLCB0eXBlID0+ICdzdHInIH0sCi0JCWFnZSA9PiB7IGtleSA9PiAnYWdlJywgdHlwZSA9PiAnbnVtJyB9Ci0JKTsKLQlteSAkb2kgPSAkb3JkZXJfaW5mb3skb3JkZXJ9OwotCXJldHVybiBAJHByb2psaXN0IHVubGVzcyBkZWZpbmVkICRvaTsKLQlpZiAoJG9pLT57J3R5cGUnfSBlcSAnc3RyJykgewotCQlAcHJvamVjdHMgPSBzb3J0IHskYS0+eyRvaS0+eydrZXknfX0gY21wICRiLT57JG9pLT57J2tleSd9fX0gQCRwcm9qbGlzdDsKLQl9IGVsc2UgewotCQlAcHJvamVjdHMgPSBzb3J0IHskYS0+eyRvaS0+eydrZXknfX0gPD0+ICRiLT57JG9pLT57J2tleSd9fX0gQCRwcm9qbGlzdDsKKwlzdWIgb3JkZXJfc3RyIHsKKwkJbXkgJGtleSA9IHNoaWZ0OworCQlyZXR1cm4gc3ViIHsgJGEtPnska2V5fSBjbXAgJGItPnska2V5fSB9OwogCX0KIAotCXJldHVybiBAcHJvamVjdHM7CisJc3ViIG9yZGVyX251bV90aGVuX3VuZGVmIHsKKwkJbXkgJGtleSA9IHNoaWZ0OworCQlyZXR1cm4gc3ViIHsKKwkJCWRlZmluZWQgJGEtPnska2V5fSA/CisJCQkJKGRlZmluZWQgJGItPnska2V5fSA/ICRhLT57JGtleX0gPD0+ICRiLT57JGtleX0gOiAtMSkgOgorCQkJCShkZWZpbmVkICRiLT57JGtleX0gPyAxIDogMCkKKwkJfTsKKwl9CisKKwlteSAlb3JkZXJpbmdzID0gKAorCQlwcm9qZWN0ID0+IG9yZGVyX3N0cigncGF0aCcpLAorCQlkZXNjciA9PiBvcmRlcl9zdHIoJ2Rlc2NyX2xvbmcnKSwKKwkJb3duZXIgPT4gb3JkZXJfc3RyKCdvd25lcicpLAorCQlhZ2UgPT4gb3JkZXJfbnVtX3RoZW5fdW5kZWYoJ2FnZScpLAorCSk7CisKKwlteSAkb3JkZXJpbmcgPSAkb3JkZXJpbmdzeyRvcmRlcn07CisJcmV0dXJuIGRlZmluZWQgJG9yZGVyaW5nID8gc29ydCAkb3JkZXJpbmcgQCRwcm9qbGlzdCA6IEAkcHJvamxpc3Q7CiB9CiAKICMgcmV0dXJucyBhIGhhc2ggb2YgY2F0ZWdvcmllcywgY29udGFpbmluZyB0aGUgbGlzdCBvZiBwcm9qZWN0CkBAIC03NDY4LDcgKzc0ODUsNyBAQAogCQlzeXN0ZW0oZ2l0X2NtZCgpLCAiY2F0LWZpbGUiLCAnLWUnLCAkaGFzaF9iYXNlKSA9PSAwCiAJCQlvciBkaWVfZXJyb3IoNDA0LCAiQmFzZSBvYmplY3QgZG9lcyBub3QgZXhpc3QiKTsKIAotCQkjIGhlcmUgZXJyb3JzIHNob3VsZCBub3QgaGFwZW4KKwkJIyBoZXJlIGVycm9ycyBzaG91bGQgbm90IGhhcHBlbgogCQlvcGVuIG15ICRmZCwgIi18IiwgZ2l0X2NtZCgpLCAibHMtdHJlZSIsICRoYXNoX2Jhc2UsICItLSIsICRmaWxlX25hbWUKIAkJCW9yIGRpZV9lcnJvcig1MDAsICJPcGVuIGdpdC1scy10cmVlIGZhaWxlZCIpOwogCQlteSAkbGluZSA9IDwkZmQ+OwpAQCAtODAyMCw3ICs4MDM3LDcgQEAKIAkJJWxhdGVzdF9jb21taXQgPSAleyRjb21taXRsaXN0WzBdfTsKIAkJbXkgJGxhdGVzdF9lcG9jaCA9ICRsYXRlc3RfY29tbWl0eydjb21taXR0ZXJfZXBvY2gnfTsKIAkJZXhpdF9pZl91bm1vZGlmaWVkX3NpbmNlKCRsYXRlc3RfZXBvY2gpOwotCQklbGF0ZXN0X2RhdGUgPSBwYXJzZV9kYXRlKCRsYXRlc3RfZXBvY2gsICRsYXRlc3RfY29tbWl0eydjb21pdHRlcl90eid9KTsKKwkJJWxhdGVzdF9kYXRlID0gcGFyc2VfZGF0ZSgkbGF0ZXN0X2Vwb2NoLCAkbGF0ZXN0X2NvbW1pdHsnY29tbWl0dGVyX3R6J30pOwogCX0KIAlwcmludCAkY2dpLT5oZWFkZXIoCiAJCS10eXBlID0+ICRjb250ZW50X3R5cGUsCkBAIC04MDQ3LDYgKzgwNjQsNyBAQAogCQkkZmVlZF90eXBlID0gJ2hpc3RvcnknOwogCX0KIAkkdGl0bGUgLj0gIiAkZmVlZF90eXBlIjsKKwkkdGl0bGUgPSBlc2NfaHRtbCgkdGl0bGUpOwogCW15ICRkZXNjciA9IGdpdF9nZXRfcHJvamVjdF9kZXNjcmlwdGlvbigkcHJvamVjdCk7CiAJaWYgKGRlZmluZWQgJGRlc2NyKSB7CiAJCSRkZXNjciA9IGVzY19odG1sKCRkZXNjcik7CmRpZmYgLS1naXQgYS9ncGctaW50ZXJmYWNlLmMgYi9ncGctaW50ZXJmYWNlLmMKaW5kZXggMDg2M2M2MS4uOGIwZTg3NCAxMDA2NDQKLS0tIGEvZ3BnLWludGVyZmFjZS5jCisrKyBiL2dwZy1pbnRlcmZhY2UuYwpAQCAtOTYsNDUgKzk2LDU5IEBACiAvKgogICogUnVuICJncGciIHRvIHNlZSBpZiB0aGUgcGF5bG9hZCBtYXRjaGVzIHRoZSBkZXRhY2hlZCBzaWduYXR1cmUuCiAgKiBncGdfb3V0cHV0LCB3aGVuIHNldCwgcmVjZWl2ZXMgdGhlIGRpYWdub3N0aWMgb3V0cHV0IGZyb20gR1BHLgorICogZ3BnX3N0YXR1cywgd2hlbiBzZXQsIHJlY2VpdmVzIHRoZSBzdGF0dXMgb3V0cHV0IGZyb20gR1BHLgogICovCiBpbnQgdmVyaWZ5X3NpZ25lZF9idWZmZXIoY29uc3QgY2hhciAqcGF5bG9hZCwgc2l6ZV90IHBheWxvYWRfc2l6ZSwKIAkJCSBjb25zdCBjaGFyICpzaWduYXR1cmUsIHNpemVfdCBzaWduYXR1cmVfc2l6ZSwKLQkJCSBzdHJ1Y3Qgc3RyYnVmICpncGdfb3V0cHV0KQorCQkJIHN0cnVjdCBzdHJidWYgKmdwZ19vdXRwdXQsIHN0cnVjdCBzdHJidWYgKmdwZ19zdGF0dXMpCiB7CiAJc3RydWN0IGNoaWxkX3Byb2Nlc3MgZ3BnOwotCWNvbnN0IGNoYXIgKmFyZ3NfZ3BnW10gPSB7TlVMTCwgIi0tdmVyaWZ5IiwgIkZJTEUiLCAiLSIsIE5VTEx9OworCWNvbnN0IGNoYXIgKmFyZ3NfZ3BnW10gPSB7TlVMTCwgIi0tc3RhdHVzLWZkPTEiLCAiLS12ZXJpZnkiLCAiRklMRSIsICItIiwgTlVMTH07CiAJY2hhciBwYXRoW1BBVEhfTUFYXTsKIAlpbnQgZmQsIHJldDsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBzdHJidWYgKnBidWYgPSAmYnVmOwogCiAJYXJnc19ncGdbMF0gPSBncGdfcHJvZ3JhbTsKIAlmZCA9IGdpdF9ta3N0ZW1wKHBhdGgsIFBBVEhfTUFYLCAiLmdpdF92dGFnX3RtcFhYWFhYWCIpOwogCWlmIChmZCA8IDApCi0JCXJldHVybiBlcnJvcigiY291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZSAnJXMnOiAlcyIsCisJCXJldHVybiBlcnJvcihfKCJjb3VsZCBub3QgY3JlYXRlIHRlbXBvcmFyeSBmaWxlICclcyc6ICVzIiksCiAJCQkgICAgIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CiAJaWYgKHdyaXRlX2luX2Z1bGwoZmQsIHNpZ25hdHVyZSwgc2lnbmF0dXJlX3NpemUpIDwgMCkKLQkJcmV0dXJuIGVycm9yKCJmYWlsZWQgd3JpdGluZyBkZXRhY2hlZCBzaWduYXR1cmUgdG8gJyVzJzogJXMiLAorCQlyZXR1cm4gZXJyb3IoXygiZmFpbGVkIHdyaXRpbmcgZGV0YWNoZWQgc2lnbmF0dXJlIHRvICclcyc6ICVzIiksCiAJCQkgICAgIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CiAJY2xvc2UoZmQpOwogCiAJbWVtc2V0KCZncGcsIDAsIHNpemVvZihncGcpKTsKIAlncGcuYXJndiA9IGFyZ3NfZ3BnOwogCWdwZy5pbiA9IC0xOworCWdwZy5vdXQgPSAtMTsKIAlpZiAoZ3BnX291dHB1dCkKIAkJZ3BnLmVyciA9IC0xOwotCWFyZ3NfZ3BnWzJdID0gcGF0aDsKKwlhcmdzX2dwZ1szXSA9IHBhdGg7CiAJaWYgKHN0YXJ0X2NvbW1hbmQoJmdwZykpIHsKIAkJdW5saW5rKHBhdGgpOwotCQlyZXR1cm4gZXJyb3IoImNvdWxkIG5vdCBydW4gZ3BnLiIpOworCQlyZXR1cm4gZXJyb3IoXygiY291bGQgbm90IHJ1biBncGcuIikpOwogCX0KIAogCXdyaXRlX2luX2Z1bGwoZ3BnLmluLCBwYXlsb2FkLCBwYXlsb2FkX3NpemUpOwogCWNsb3NlKGdwZy5pbik7CiAKLQlpZiAoZ3BnX291dHB1dCkKKwlpZiAoZ3BnX291dHB1dCkgewogCQlzdHJidWZfcmVhZChncGdfb3V0cHV0LCBncGcuZXJyLCAwKTsKKwkJY2xvc2UoZ3BnLmVycik7CisJfQorCWlmIChncGdfc3RhdHVzKQorCQlwYnVmID0gZ3BnX3N0YXR1czsKKwlzdHJidWZfcmVhZChwYnVmLCBncGcub3V0LCAwKTsKKwljbG9zZShncGcub3V0KTsKKwogCXJldCA9IGZpbmlzaF9jb21tYW5kKCZncGcpOwogCiAJdW5saW5rX29yX3dhcm4ocGF0aCk7CiAKKwlyZXQgfD0gIXN0cnN0cihwYnVmLT5idWYsICJcbltHTlVQRzpdIEdPT0RTSUcgIik7CisJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7IC8qIG5vIG1hdHRlciBpdCB3YXMgdXNlZCBvciBub3QgKi8KKwogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9ncGctaW50ZXJmYWNlLmggYi9ncGctaW50ZXJmYWNlLmgKaW5kZXggYjljMzYwOC4uYTg1Y2I1YiAxMDA2NDQKLS0tIGEvZ3BnLWludGVyZmFjZS5oCisrKyBiL2dwZy1pbnRlcmZhY2UuaApAQCAtMSw4ICsxLDIwIEBACiAjaWZuZGVmIEdQR19JTlRFUkZBQ0VfSAogI2RlZmluZSBHUEdfSU5URVJGQUNFX0gKIAorc3RydWN0IHNpZ25hdHVyZV9jaGVjayB7CisJY2hhciAqZ3BnX291dHB1dDsKKwljaGFyICpncGdfc3RhdHVzOworCWNoYXIgcmVzdWx0OyAvKiAwIChub3QgY2hlY2tlZCksCisJCSAgICAgICogTiAoY2hlY2tlZCBidXQgbm8gZnVydGhlciByZXN1bHQpLAorCQkgICAgICAqIFUgKHVudHJ1c3RlZCBnb29kKSwKKwkJICAgICAgKiBHIChnb29kKQorCQkgICAgICAqIEIgKGJhZCkgKi8KKwljaGFyICpzaWduZXI7CisJY2hhciAqa2V5OworfTsKKwogZXh0ZXJuIGludCBzaWduX2J1ZmZlcihzdHJ1Y3Qgc3RyYnVmICpidWZmZXIsIHN0cnVjdCBzdHJidWYgKnNpZ25hdHVyZSwgY29uc3QgY2hhciAqc2lnbmluZ19rZXkpOwotZXh0ZXJuIGludCB2ZXJpZnlfc2lnbmVkX2J1ZmZlcihjb25zdCBjaGFyICpwYXlsb2FkLCBzaXplX3QgcGF5bG9hZF9zaXplLCBjb25zdCBjaGFyICpzaWduYXR1cmUsIHNpemVfdCBzaWduYXR1cmVfc2l6ZSwgc3RydWN0IHN0cmJ1ZiAqZ3BnX291dHB1dCk7CitleHRlcm4gaW50IHZlcmlmeV9zaWduZWRfYnVmZmVyKGNvbnN0IGNoYXIgKnBheWxvYWQsIHNpemVfdCBwYXlsb2FkX3NpemUsIGNvbnN0IGNoYXIgKnNpZ25hdHVyZSwgc2l6ZV90IHNpZ25hdHVyZV9zaXplLCBzdHJ1Y3Qgc3RyYnVmICpncGdfb3V0cHV0LCBzdHJ1Y3Qgc3RyYnVmICpncGdfc3RhdHVzKTsKIGV4dGVybiBpbnQgZ2l0X2dwZ19jb25maWcoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZvaWQgKik7CiBleHRlcm4gdm9pZCBzZXRfc2lnbmluZ19rZXkoY29uc3QgY2hhciAqKTsKIGV4dGVybiBjb25zdCBjaGFyICpnZXRfc2lnbmluZ19rZXkodm9pZCk7CmRpZmYgLS1naXQgYS9ncmFwaC5jIGIvZ3JhcGguYwppbmRleCA3ZTBhMDk5Li5iMjRkMDRjIDEwMDY0NAotLS0gYS9ncmFwaC5jCisrKyBiL2dyYXBoLmMKQEAgLTExOTksNyArMTE5OSwxNyBAQAogCWlmICghZ3JhcGgpCiAJCXJldHVybjsKIAotCXdoaWxlICghc2hvd25fY29tbWl0X2xpbmUpIHsKKwkvKgorCSAqIFdoZW4gc2hvd2luZyBhIGRpZmYgb2YgYSBtZXJnZSBhZ2FpbnN0IGVhY2ggb2YgaXRzIHBhcmVudHMsIHdlCisJICogYXJlIGNhbGxlZCBvbmNlIGZvciBlYWNoIHBhcmVudCB3aXRob3V0IGdyYXBoX3VwZGF0ZSBoYXZpbmcgYmVlbgorCSAqIGNhbGxlZC4gIEluIHRoaXMgY2FzZSwgc2ltcGx5IG91dHB1dCBhIHNpbmdsZSBwYWRkaW5nIGxpbmUuCisJICovCisJaWYgKGdyYXBoX2lzX2NvbW1pdF9maW5pc2hlZChncmFwaCkpIHsKKwkJZ3JhcGhfc2hvd19wYWRkaW5nKGdyYXBoKTsKKwkJc2hvd25fY29tbWl0X2xpbmUgPSAxOworCX0KKworCXdoaWxlICghc2hvd25fY29tbWl0X2xpbmUgJiYgIWdyYXBoX2lzX2NvbW1pdF9maW5pc2hlZChncmFwaCkpIHsKIAkJc2hvd25fY29tbWl0X2xpbmUgPSBncmFwaF9uZXh0X2xpbmUoZ3JhcGgsICZtc2didWYpOwogCQlmd3JpdGUobXNnYnVmLmJ1Ziwgc2l6ZW9mKGNoYXIpLCBtc2didWYubGVuLCBzdGRvdXQpOwogCQlpZiAoIXNob3duX2NvbW1pdF9saW5lKQpkaWZmIC0tZ2l0IGEvZ3JhcGguaCBiL2dyYXBoLmgKaW5kZXggYWZmOTYwYy4uMGJlNjJiZCAxMDA2NDQKLS0tIGEvZ3JhcGguaAorKysgYi9ncmFwaC5oCkBAIC0xOCw2ICsxOCw5IEBACiAgKiBUaGUgJ2NvbG9yc19tYXgnIGFyZ3VtZW50IGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCAicmVzZXQiIGVudHJ5LgogICoKICAqIFRoaXMgZnVuY3Rpb25zIG11c3QgYmUgY2FsbGVkIEJFRk9SRSBncmFwaF9pbml0KCkgaXMgY2FsbGVkLgorICoKKyAqIE5PVEU6IFRoaXMgZnVuY3Rpb24gaXNuJ3QgdXNlZCBpbiBHaXQgb3V0c2lkZSBncmFwaC5jIGJ1dCBpdCBpcyB1c2VkCisgKiBieSBDR2l0IChodHRwOi8vZ2l0Lnp4MmM0LmNvbS9jZ2l0LykgdG8gdXNlIEhUTUwgZm9yIGNvbG9ycy4KICAqLwogdm9pZCBncmFwaF9zZXRfY29sdW1uX2NvbG9ycyhjb25zdCBjaGFyICoqY29sb3JzLCB1bnNpZ25lZCBzaG9ydCBjb2xvcnNfbWF4KTsKIApAQCAtNTcsNiArNjAsOSBAQAogICogUmV0dXJucyAxIGlmIHRoZSBsaW5lIGluY2x1ZGVzIHRoZSBjdXJyZW50IGNvbW1pdCwgYW5kIDAgb3RoZXJ3aXNlLgogICogZ3JhcGhfbmV4dF9saW5lKCkgd2lsbCByZXR1cm4gMSBleGFjdGx5IG9uY2UgZm9yIGVhY2ggdGltZQogICogZ3JhcGhfdXBkYXRlKCkgaXMgY2FsbGVkLgorICoKKyAqIE5PVEU6IFRoaXMgZnVuY3Rpb24gaXNuJ3QgdXNlZCBpbiBHaXQgb3V0c2lkZSBncmFwaC5jIGJ1dCBpdCBpcyB1c2VkCisgKiBieSBDR2l0IChodHRwOi8vZ2l0Lnp4MmM0LmNvbS9jZ2l0LykgdG8gd3JhcCBIVE1MIGFyb3VuZCBncmFwaCBsaW5lcy4KICAqLwogaW50IGdyYXBoX25leHRfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwgc3RydWN0IHN0cmJ1ZiAqc2IpOwogCmRpZmYgLS1naXQgYS9ncmVwLmMgYi9ncmVwLmMKaW5kZXggMDRlM2VjNi4uYmI1NDhjYSAxMDA2NDQKLS0tIGEvZ3JlcC5jCisrKyBiL2dyZXAuYwpAQCAtMyw2ICszLDE4NyBAQAogI2luY2x1ZGUgInVzZXJkaWZmLmgiCiAjaW5jbHVkZSAieGRpZmYtaW50ZXJmYWNlLmgiCiAKK3N0YXRpYyBpbnQgZ3JlcF9zb3VyY2VfbG9hZChzdHJ1Y3QgZ3JlcF9zb3VyY2UgKmdzKTsKK3N0YXRpYyBpbnQgZ3JlcF9zb3VyY2VfaXNfYmluYXJ5KHN0cnVjdCBncmVwX3NvdXJjZSAqZ3MpOworCitzdGF0aWMgc3RydWN0IGdyZXBfb3B0IGdyZXBfZGVmYXVsdHM7CisKKy8qCisgKiBJbml0aWFsaXplIHRoZSBncmVwX2RlZmF1bHRzIHRlbXBsYXRlIHdpdGggaGFyZGNvZGVkIGRlZmF1bHRzLgorICogV2UgY291bGQgbGV0IHRoZSBjb21waWxlciBkbyB0aGlzLCBidXQgd2l0aG91dCBDOTkgaW5pdGlhbGl6ZXJzCisgKiB0aGUgY29kZSBnZXRzIHVud2llbGR5IGFuZCB1bnJlYWRhYmxlLCBzby4uLgorICovCit2b2lkIGluaXRfZ3JlcF9kZWZhdWx0cyh2b2lkKQoreworCXN0cnVjdCBncmVwX29wdCAqb3B0ID0gJmdyZXBfZGVmYXVsdHM7CisJc3RhdGljIGludCBydW5fb25jZTsKKworCWlmIChydW5fb25jZSkKKwkJcmV0dXJuOworCXJ1bl9vbmNlKys7CisKKwltZW1zZXQob3B0LCAwLCBzaXplb2YoKm9wdCkpOworCW9wdC0+cmVsYXRpdmUgPSAxOworCW9wdC0+cGF0aG5hbWUgPSAxOworCW9wdC0+cmVnZmxhZ3MgPSBSRUdfTkVXTElORTsKKwlvcHQtPm1heF9kZXB0aCA9IC0xOworCW9wdC0+cGF0dGVybl90eXBlX29wdGlvbiA9IEdSRVBfUEFUVEVSTl9UWVBFX1VOU1BFQ0lGSUVEOworCW9wdC0+ZXh0ZW5kZWRfcmVnZXhwX29wdGlvbiA9IDA7CisJc3RyY3B5KG9wdC0+Y29sb3JfY29udGV4dCwgIiIpOworCXN0cmNweShvcHQtPmNvbG9yX2ZpbGVuYW1lLCAiIik7CisJc3RyY3B5KG9wdC0+Y29sb3JfZnVuY3Rpb24sICIiKTsKKwlzdHJjcHkob3B0LT5jb2xvcl9saW5lbm8sICIiKTsKKwlzdHJjcHkob3B0LT5jb2xvcl9tYXRjaCwgR0lUX0NPTE9SX0JPTERfUkVEKTsKKwlzdHJjcHkob3B0LT5jb2xvcl9zZWxlY3RlZCwgIiIpOworCXN0cmNweShvcHQtPmNvbG9yX3NlcCwgR0lUX0NPTE9SX0NZQU4pOworCW9wdC0+Y29sb3IgPSAtMTsKK30KKworc3RhdGljIGludCBwYXJzZV9wYXR0ZXJuX3R5cGVfYXJnKGNvbnN0IGNoYXIgKm9wdCwgY29uc3QgY2hhciAqYXJnKQoreworCWlmICghc3RyY21wKGFyZywgImRlZmF1bHQiKSkKKwkJcmV0dXJuIEdSRVBfUEFUVEVSTl9UWVBFX1VOU1BFQ0lGSUVEOworCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiYmFzaWMiKSkKKwkJcmV0dXJuIEdSRVBfUEFUVEVSTl9UWVBFX0JSRTsKKwllbHNlIGlmICghc3RyY21wKGFyZywgImV4dGVuZGVkIikpCisJCXJldHVybiBHUkVQX1BBVFRFUk5fVFlQRV9FUkU7CisJZWxzZSBpZiAoIXN0cmNtcChhcmcsICJmaXhlZCIpKQorCQlyZXR1cm4gR1JFUF9QQVRURVJOX1RZUEVfRklYRUQ7CisJZWxzZSBpZiAoIXN0cmNtcChhcmcsICJwZXJsIikpCisJCXJldHVybiBHUkVQX1BBVFRFUk5fVFlQRV9QQ1JFOworCWRpZSgiYmFkICVzIGFyZ3VtZW50OiAlcyIsIG9wdCwgYXJnKTsKK30KKworLyoKKyAqIFJlYWQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBvbmNlIGFuZCBzdG9yZSBpdCBpbgorICogdGhlIGdyZXBfZGVmYXVsdHMgdGVtcGxhdGUuCisgKi8KK2ludCBncmVwX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKK3sKKwlzdHJ1Y3QgZ3JlcF9vcHQgKm9wdCA9ICZncmVwX2RlZmF1bHRzOworCWNoYXIgKmNvbG9yID0gTlVMTDsKKworCWlmICh1c2VyZGlmZl9jb25maWcodmFyLCB2YWx1ZSkgPCAwKQorCQlyZXR1cm4gLTE7CisKKwlpZiAoIXN0cmNtcCh2YXIsICJncmVwLmV4dGVuZGVkcmVnZXhwIikpIHsKKwkJaWYgKGdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKSkKKwkJCW9wdC0+ZXh0ZW5kZWRfcmVnZXhwX29wdGlvbiA9IDE7CisJCWVsc2UKKwkJCW9wdC0+ZXh0ZW5kZWRfcmVnZXhwX29wdGlvbiA9IDA7CisJCXJldHVybiAwOworCX0KKworCWlmICghc3RyY21wKHZhciwgImdyZXAucGF0dGVybnR5cGUiKSkgeworCQlvcHQtPnBhdHRlcm5fdHlwZV9vcHRpb24gPSBwYXJzZV9wYXR0ZXJuX3R5cGVfYXJnKHZhciwgdmFsdWUpOworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoIXN0cmNtcCh2YXIsICJncmVwLmxpbmVudW1iZXIiKSkgeworCQlvcHQtPmxpbmVudW0gPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7CisJCXJldHVybiAwOworCX0KKworCWlmICghc3RyY21wKHZhciwgImNvbG9yLmdyZXAiKSkKKwkJb3B0LT5jb2xvciA9IGdpdF9jb25maWdfY29sb3Jib29sKHZhciwgdmFsdWUpOworCWVsc2UgaWYgKCFzdHJjbXAodmFyLCAiY29sb3IuZ3JlcC5jb250ZXh0IikpCisJCWNvbG9yID0gb3B0LT5jb2xvcl9jb250ZXh0OworCWVsc2UgaWYgKCFzdHJjbXAodmFyLCAiY29sb3IuZ3JlcC5maWxlbmFtZSIpKQorCQljb2xvciA9IG9wdC0+Y29sb3JfZmlsZW5hbWU7CisJZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJjb2xvci5ncmVwLmZ1bmN0aW9uIikpCisJCWNvbG9yID0gb3B0LT5jb2xvcl9mdW5jdGlvbjsKKwllbHNlIGlmICghc3RyY21wKHZhciwgImNvbG9yLmdyZXAubGluZW51bWJlciIpKQorCQljb2xvciA9IG9wdC0+Y29sb3JfbGluZW5vOworCWVsc2UgaWYgKCFzdHJjbXAodmFyLCAiY29sb3IuZ3JlcC5tYXRjaCIpKQorCQljb2xvciA9IG9wdC0+Y29sb3JfbWF0Y2g7CisJZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJjb2xvci5ncmVwLnNlbGVjdGVkIikpCisJCWNvbG9yID0gb3B0LT5jb2xvcl9zZWxlY3RlZDsKKwllbHNlIGlmICghc3RyY21wKHZhciwgImNvbG9yLmdyZXAuc2VwYXJhdG9yIikpCisJCWNvbG9yID0gb3B0LT5jb2xvcl9zZXA7CisKKwlpZiAoY29sb3IpIHsKKwkJaWYgKCF2YWx1ZSkKKwkJCXJldHVybiBjb25maWdfZXJyb3Jfbm9uYm9vbCh2YXIpOworCQljb2xvcl9wYXJzZSh2YWx1ZSwgdmFyLCBjb2xvcik7CisJfQorCXJldHVybiAwOworfQorCisvKgorICogSW5pdGlhbGl6ZSBvbmUgaW5zdGFuY2Ugb2YgZ3JlcF9vcHQgYW5kIGNvcHkgdGhlCisgKiBkZWZhdWx0IHZhbHVlcyBmcm9tIHRoZSB0ZW1wbGF0ZSB3ZSByZWFkIHRoZSBjb25maWd1cmF0aW9uCisgKiBpbmZvcm1hdGlvbiBpbiBhbiBlYXJsaWVyIGNhbGwgdG8gZ2l0X2NvbmZpZyhncmVwX2NvbmZpZykuCisgKi8KK3ZvaWQgZ3JlcF9pbml0KHN0cnVjdCBncmVwX29wdCAqb3B0LCBjb25zdCBjaGFyICpwcmVmaXgpCit7CisJc3RydWN0IGdyZXBfb3B0ICpkZWYgPSAmZ3JlcF9kZWZhdWx0czsKKworCW1lbXNldChvcHQsIDAsIHNpemVvZigqb3B0KSk7CisJb3B0LT5wcmVmaXggPSBwcmVmaXg7CisJb3B0LT5wcmVmaXhfbGVuZ3RoID0gKHByZWZpeCAmJiAqcHJlZml4KSA/IHN0cmxlbihwcmVmaXgpIDogMDsKKwlvcHQtPnBhdHRlcm5fdGFpbCA9ICZvcHQtPnBhdHRlcm5fbGlzdDsKKwlvcHQtPmhlYWRlcl90YWlsID0gJm9wdC0+aGVhZGVyX2xpc3Q7CisKKwlvcHQtPmNvbG9yID0gZGVmLT5jb2xvcjsKKwlvcHQtPmV4dGVuZGVkX3JlZ2V4cF9vcHRpb24gPSBkZWYtPmV4dGVuZGVkX3JlZ2V4cF9vcHRpb247CisJb3B0LT5wYXR0ZXJuX3R5cGVfb3B0aW9uID0gZGVmLT5wYXR0ZXJuX3R5cGVfb3B0aW9uOworCW9wdC0+bGluZW51bSA9IGRlZi0+bGluZW51bTsKKwlvcHQtPm1heF9kZXB0aCA9IGRlZi0+bWF4X2RlcHRoOworCW9wdC0+cGF0aG5hbWUgPSBkZWYtPnBhdGhuYW1lOworCW9wdC0+cmVnZmxhZ3MgPSBkZWYtPnJlZ2ZsYWdzOworCW9wdC0+cmVsYXRpdmUgPSBkZWYtPnJlbGF0aXZlOworCisJc3RyY3B5KG9wdC0+Y29sb3JfY29udGV4dCwgZGVmLT5jb2xvcl9jb250ZXh0KTsKKwlzdHJjcHkob3B0LT5jb2xvcl9maWxlbmFtZSwgZGVmLT5jb2xvcl9maWxlbmFtZSk7CisJc3RyY3B5KG9wdC0+Y29sb3JfZnVuY3Rpb24sIGRlZi0+Y29sb3JfZnVuY3Rpb24pOworCXN0cmNweShvcHQtPmNvbG9yX2xpbmVubywgZGVmLT5jb2xvcl9saW5lbm8pOworCXN0cmNweShvcHQtPmNvbG9yX21hdGNoLCBkZWYtPmNvbG9yX21hdGNoKTsKKwlzdHJjcHkob3B0LT5jb2xvcl9zZWxlY3RlZCwgZGVmLT5jb2xvcl9zZWxlY3RlZCk7CisJc3RyY3B5KG9wdC0+Y29sb3Jfc2VwLCBkZWYtPmNvbG9yX3NlcCk7Cit9CisKK3ZvaWQgZ3JlcF9jb21taXRfcGF0dGVybl90eXBlKGVudW0gZ3JlcF9wYXR0ZXJuX3R5cGUgcGF0dGVybl90eXBlLCBzdHJ1Y3QgZ3JlcF9vcHQgKm9wdCkKK3sKKwlpZiAocGF0dGVybl90eXBlICE9IEdSRVBfUEFUVEVSTl9UWVBFX1VOU1BFQ0lGSUVEKQorCQlncmVwX3NldF9wYXR0ZXJuX3R5cGVfb3B0aW9uKHBhdHRlcm5fdHlwZSwgb3B0KTsKKwllbHNlIGlmIChvcHQtPnBhdHRlcm5fdHlwZV9vcHRpb24gIT0gR1JFUF9QQVRURVJOX1RZUEVfVU5TUEVDSUZJRUQpCisJCWdyZXBfc2V0X3BhdHRlcm5fdHlwZV9vcHRpb24ob3B0LT5wYXR0ZXJuX3R5cGVfb3B0aW9uLCBvcHQpOworCWVsc2UgaWYgKG9wdC0+ZXh0ZW5kZWRfcmVnZXhwX29wdGlvbikKKwkJZ3JlcF9zZXRfcGF0dGVybl90eXBlX29wdGlvbihHUkVQX1BBVFRFUk5fVFlQRV9FUkUsIG9wdCk7Cit9CisKK3ZvaWQgZ3JlcF9zZXRfcGF0dGVybl90eXBlX29wdGlvbihlbnVtIGdyZXBfcGF0dGVybl90eXBlIHBhdHRlcm5fdHlwZSwgc3RydWN0IGdyZXBfb3B0ICpvcHQpCit7CisJc3dpdGNoIChwYXR0ZXJuX3R5cGUpIHsKKwljYXNlIEdSRVBfUEFUVEVSTl9UWVBFX1VOU1BFQ0lGSUVEOgorCQkvKiBmYWxsIHRocm91Z2ggKi8KKworCWNhc2UgR1JFUF9QQVRURVJOX1RZUEVfQlJFOgorCQlvcHQtPmZpeGVkID0gMDsKKwkJb3B0LT5wY3JlID0gMDsKKwkJb3B0LT5yZWdmbGFncyAmPSB+UkVHX0VYVEVOREVEOworCQlicmVhazsKKworCWNhc2UgR1JFUF9QQVRURVJOX1RZUEVfRVJFOgorCQlvcHQtPmZpeGVkID0gMDsKKwkJb3B0LT5wY3JlID0gMDsKKwkJb3B0LT5yZWdmbGFncyB8PSBSRUdfRVhURU5ERUQ7CisJCWJyZWFrOworCisJY2FzZSBHUkVQX1BBVFRFUk5fVFlQRV9GSVhFRDoKKwkJb3B0LT5maXhlZCA9IDE7CisJCW9wdC0+cGNyZSA9IDA7CisJCW9wdC0+cmVnZmxhZ3MgJj0gflJFR19FWFRFTkRFRDsKKwkJYnJlYWs7CisKKwljYXNlIEdSRVBfUEFUVEVSTl9UWVBFX1BDUkU6CisJCW9wdC0+Zml4ZWQgPSAwOworCQlvcHQtPnBjcmUgPSAxOworCQlvcHQtPnJlZ2ZsYWdzICY9IH5SRUdfRVhURU5ERUQ7CisJCWJyZWFrOworCX0KK30KKwogc3RhdGljIHN0cnVjdCBncmVwX3BhdCAqY3JlYXRlX2dyZXBfcGF0KGNvbnN0IGNoYXIgKnBhdCwgc2l6ZV90IHBhdGxlbiwKIAkJCQkJY29uc3QgY2hhciAqb3JpZ2luLCBpbnQgbm8sCiAJCQkJCWVudW0gZ3JlcF9wYXRfdG9rZW4gdCwKQEAgLTYwLDYgKzI0MSw4IEBACiB7CiAJc3RydWN0IGdyZXBfcGF0ICpwID0gY3JlYXRlX2dyZXBfcGF0KHBhdCwgc3RybGVuKHBhdCksICJoZWFkZXIiLCAwLAogCQkJCQkgICAgIEdSRVBfUEFUVEVSTl9IRUFELCBmaWVsZCk7CisJaWYgKGZpZWxkID09IEdSRVBfSEVBREVSX1JFRkxPRykKKwkJb3B0LT51c2VfcmVmbG9nX2ZpbHRlciA9IDE7CiAJZG9fYXBwZW5kX2dyZXBfcGF0KCZvcHQtPmhlYWRlcl90YWlsLCBwKTsKIH0KIApAQCAtMzMyLDYgKzUxNSw4NyBAQAogCXJldHVybiBjb21waWxlX3BhdHRlcm5fb3IobGlzdCk7CiB9CiAKK3N0YXRpYyB2b2lkIGluZGVudChpbnQgaW4pCit7CisJd2hpbGUgKGluLS0gPiAwKQorCQlmcHV0YygnICcsIHN0ZGVycik7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBfZ3JlcF9wYXQoc3RydWN0IGdyZXBfcGF0ICpwKQoreworCXN3aXRjaCAocC0+dG9rZW4pIHsKKwljYXNlIEdSRVBfQU5EOiBmcHJpbnRmKHN0ZGVyciwgIiphbmQqIik7IGJyZWFrOworCWNhc2UgR1JFUF9PUEVOX1BBUkVOOiBmcHJpbnRmKHN0ZGVyciwgIiooKiIpOyBicmVhazsKKwljYXNlIEdSRVBfQ0xPU0VfUEFSRU46IGZwcmludGYoc3RkZXJyLCAiKikqIik7IGJyZWFrOworCWNhc2UgR1JFUF9OT1Q6IGZwcmludGYoc3RkZXJyLCAiKm5vdCoiKTsgYnJlYWs7CisJY2FzZSBHUkVQX09SOiBmcHJpbnRmKHN0ZGVyciwgIipvcioiKTsgYnJlYWs7CisKKwljYXNlIEdSRVBfUEFUVEVSTjogZnByaW50ZihzdGRlcnIsICJwYXR0ZXJuIik7IGJyZWFrOworCWNhc2UgR1JFUF9QQVRURVJOX0hFQUQ6IGZwcmludGYoc3RkZXJyLCAicGF0dGVybl9oZWFkIik7IGJyZWFrOworCWNhc2UgR1JFUF9QQVRURVJOX0JPRFk6IGZwcmludGYoc3RkZXJyLCAicGF0dGVybl9ib2R5Iik7IGJyZWFrOworCX0KKworCXN3aXRjaCAocC0+dG9rZW4pIHsKKwlkZWZhdWx0OiBicmVhazsKKwljYXNlIEdSRVBfUEFUVEVSTl9IRUFEOgorCQlmcHJpbnRmKHN0ZGVyciwgIjxoZWFkICVkPiIsIHAtPmZpZWxkKTsgYnJlYWs7CisJY2FzZSBHUkVQX1BBVFRFUk5fQk9EWToKKwkJZnByaW50ZihzdGRlcnIsICI8Ym9keT4iKTsgYnJlYWs7CisJfQorCXN3aXRjaCAocC0+dG9rZW4pIHsKKwlkZWZhdWx0OiBicmVhazsKKwljYXNlIEdSRVBfUEFUVEVSTl9IRUFEOgorCWNhc2UgR1JFUF9QQVRURVJOX0JPRFk6CisJY2FzZSBHUkVQX1BBVFRFUk46CisJCWZwcmludGYoc3RkZXJyLCAiJS4qcyIsIChpbnQpcC0+cGF0dGVybmxlbiwgcC0+cGF0dGVybik7CisJCWJyZWFrOworCX0KKwlmcHV0YygnXG4nLCBzdGRlcnIpOworfQorCitzdGF0aWMgdm9pZCBkdW1wX2dyZXBfZXhwcmVzc2lvbl8xKHN0cnVjdCBncmVwX2V4cHIgKngsIGludCBpbikKK3sKKwlpbmRlbnQoaW4pOworCXN3aXRjaCAoeC0+bm9kZSkgeworCWNhc2UgR1JFUF9OT0RFX1RSVUU6CisJCWZwcmludGYoc3RkZXJyLCAidHJ1ZVxuIik7CisJCWJyZWFrOworCWNhc2UgR1JFUF9OT0RFX0FUT006CisJCWR1bXBfZ3JlcF9wYXQoeC0+dS5hdG9tKTsKKwkJYnJlYWs7CisJY2FzZSBHUkVQX05PREVfTk9UOgorCQlmcHJpbnRmKHN0ZGVyciwgIihub3RcbiIpOworCQlkdW1wX2dyZXBfZXhwcmVzc2lvbl8xKHgtPnUudW5hcnksIGluKzEpOworCQlpbmRlbnQoaW4pOworCQlmcHJpbnRmKHN0ZGVyciwgIilcbiIpOworCQlicmVhazsKKwljYXNlIEdSRVBfTk9ERV9BTkQ6CisJCWZwcmludGYoc3RkZXJyLCAiKGFuZFxuIik7CisJCWR1bXBfZ3JlcF9leHByZXNzaW9uXzEoeC0+dS5iaW5hcnkubGVmdCwgaW4rMSk7CisJCWR1bXBfZ3JlcF9leHByZXNzaW9uXzEoeC0+dS5iaW5hcnkucmlnaHQsIGluKzEpOworCQlpbmRlbnQoaW4pOworCQlmcHJpbnRmKHN0ZGVyciwgIilcbiIpOworCQlicmVhazsKKwljYXNlIEdSRVBfTk9ERV9PUjoKKwkJZnByaW50ZihzdGRlcnIsICIob3JcbiIpOworCQlkdW1wX2dyZXBfZXhwcmVzc2lvbl8xKHgtPnUuYmluYXJ5LmxlZnQsIGluKzEpOworCQlkdW1wX2dyZXBfZXhwcmVzc2lvbl8xKHgtPnUuYmluYXJ5LnJpZ2h0LCBpbisxKTsKKwkJaW5kZW50KGluKTsKKwkJZnByaW50ZihzdGRlcnIsICIpXG4iKTsKKwkJYnJlYWs7CisJfQorfQorCitzdGF0aWMgdm9pZCBkdW1wX2dyZXBfZXhwcmVzc2lvbihzdHJ1Y3QgZ3JlcF9vcHQgKm9wdCkKK3sKKwlzdHJ1Y3QgZ3JlcF9leHByICp4ID0gb3B0LT5wYXR0ZXJuX2V4cHJlc3Npb247CisKKwlpZiAob3B0LT5hbGxfbWF0Y2gpCisJCWZwcmludGYoc3RkZXJyLCAiW2FsbC1tYXRjaF1cbiIpOworCWR1bXBfZ3JlcF9leHByZXNzaW9uXzEoeCwgMCk7CisJZmZsdXNoKE5VTEwpOworfQorCiBzdGF0aWMgc3RydWN0IGdyZXBfZXhwciAqZ3JlcF90cnVlX2V4cHIodm9pZCkKIHsKIAlzdHJ1Y3QgZ3JlcF9leHByICp6ID0geGNhbGxvYygxLCBzaXplb2YoKnopKTsKQEAgLTM2MSw3ICs2MjUsOCBAQAogCWZvciAocCA9IG9wdC0+aGVhZGVyX2xpc3Q7IHA7IHAgPSBwLT5uZXh0KSB7CiAJCWlmIChwLT50b2tlbiAhPSBHUkVQX1BBVFRFUk5fSEVBRCkKIAkJCWRpZSgiYnVnOiBhIG5vbi1oZWFkZXIgcGF0dGVybiBpbiBncmVwIGhlYWRlciBsaXN0LiIpOwotCQlpZiAocC0+ZmllbGQgPCAwIHx8IEdSRVBfSEVBREVSX0ZJRUxEX01BWCA8PSBwLT5maWVsZCkKKwkJaWYgKHAtPmZpZWxkIDwgR1JFUF9IRUFERVJfRklFTERfTUlOIHx8CisJCSAgICBHUkVQX0hFQURFUl9GSUVMRF9NQVggPD0gcC0+ZmllbGQpCiAJCQlkaWUoImJ1ZzogdW5rbm93biBoZWFkZXIgZmllbGQgJWQiLCBwLT5maWVsZCk7CiAJCWNvbXBpbGVfcmVnZXhwKHAsIG9wdCk7CiAJfQpAQCAtMzk1LDcgKzY2MCwyMyBAQAogCXJldHVybiBoZWFkZXJfZXhwcjsKIH0KIAotdm9pZCBjb21waWxlX2dyZXBfcGF0dGVybnMoc3RydWN0IGdyZXBfb3B0ICpvcHQpCitzdGF0aWMgc3RydWN0IGdyZXBfZXhwciAqZ3JlcF9zcGxpY2Vfb3Ioc3RydWN0IGdyZXBfZXhwciAqeCwgc3RydWN0IGdyZXBfZXhwciAqeSkKK3sKKwlzdHJ1Y3QgZ3JlcF9leHByICp6ID0geDsKKworCXdoaWxlICh4KSB7CisJCWFzc2VydCh4LT5ub2RlID09IEdSRVBfTk9ERV9PUik7CisJCWlmICh4LT51LmJpbmFyeS5yaWdodCAmJgorCQkgICAgeC0+dS5iaW5hcnkucmlnaHQtPm5vZGUgPT0gR1JFUF9OT0RFX1RSVUUpIHsKKwkJCXgtPnUuYmluYXJ5LnJpZ2h0ID0geTsKKwkJCWJyZWFrOworCQl9CisJCXggPSB4LT51LmJpbmFyeS5yaWdodDsKKwl9CisJcmV0dXJuIHo7Cit9CisKK3N0YXRpYyB2b2lkIGNvbXBpbGVfZ3JlcF9wYXR0ZXJuc19yZWFsKHN0cnVjdCBncmVwX29wdCAqb3B0KQogewogCXN0cnVjdCBncmVwX3BhdCAqcDsKIAlzdHJ1Y3QgZ3JlcF9leHByICpoZWFkZXJfZXhwciA9IHByZXBfaGVhZGVyX3BhdHRlcm5zKG9wdCk7CkBAIC00MTUsNyArNjk2LDcgQEAKIAogCWlmIChvcHQtPmFsbF9tYXRjaCB8fCBoZWFkZXJfZXhwcikKIAkJb3B0LT5leHRlbmRlZCA9IDE7Ci0JZWxzZSBpZiAoIW9wdC0+ZXh0ZW5kZWQpCisJZWxzZSBpZiAoIW9wdC0+ZXh0ZW5kZWQgJiYgIW9wdC0+ZGVidWcpCiAJCXJldHVybjsKIAogCXAgPSBvcHQtPnBhdHRlcm5fbGlzdDsKQEAgLTQyOSwxMiArNzEwLDIyIEBACiAKIAlpZiAoIW9wdC0+cGF0dGVybl9leHByZXNzaW9uKQogCQlvcHQtPnBhdHRlcm5fZXhwcmVzc2lvbiA9IGhlYWRlcl9leHByOworCWVsc2UgaWYgKG9wdC0+YWxsX21hdGNoKQorCQlvcHQtPnBhdHRlcm5fZXhwcmVzc2lvbiA9IGdyZXBfc3BsaWNlX29yKGhlYWRlcl9leHByLAorCQkJCQkJCSBvcHQtPnBhdHRlcm5fZXhwcmVzc2lvbik7CiAJZWxzZQogCQlvcHQtPnBhdHRlcm5fZXhwcmVzc2lvbiA9IGdyZXBfb3JfZXhwcihvcHQtPnBhdHRlcm5fZXhwcmVzc2lvbiwKIAkJCQkJCSAgICAgICBoZWFkZXJfZXhwcik7CiAJb3B0LT5hbGxfbWF0Y2ggPSAxOwogfQogCit2b2lkIGNvbXBpbGVfZ3JlcF9wYXR0ZXJucyhzdHJ1Y3QgZ3JlcF9vcHQgKm9wdCkKK3sKKwljb21waWxlX2dyZXBfcGF0dGVybnNfcmVhbChvcHQpOworCWlmIChvcHQtPmRlYnVnKQorCQlkdW1wX2dyZXBfZXhwcmVzc2lvbihvcHQpOworfQorCiBzdGF0aWMgdm9pZCBmcmVlX3BhdHRlcm5fZXhwcihzdHJ1Y3QgZ3JlcF9leHByICp4KQogewogCXN3aXRjaCAoeC0+bm9kZSkgewpAQCAtNTg2LDYgKzg3Nyw3IEBACiB9IGhlYWRlcl9maWVsZFtdID0gewogCXsgImF1dGhvciAiLCA3IH0sCiAJeyAiY29tbWl0dGVyICIsIDEwIH0sCisJeyAicmVmbG9nICIsIDcgfSwKIH07CiAKIHN0YXRpYyBpbnQgbWF0Y2hfb25lX3BhdHRlcm4oc3RydWN0IGdyZXBfcGF0ICpwLCBjaGFyICpib2wsIGNoYXIgKmVvbCwKQEAgLTYwOSw3ICs5MDEsMTQgQEAKIAkJaWYgKHN0cm5jbXAoYm9sLCBmaWVsZCwgbGVuKSkKIAkJCXJldHVybiAwOwogCQlib2wgKz0gbGVuOwotCQlzYXZlZF9jaCA9IHN0cmlwX3RpbWVzdGFtcChib2wsICZlb2wpOworCQlzd2l0Y2ggKHAtPmZpZWxkKSB7CisJCWNhc2UgR1JFUF9IRUFERVJfQVVUSE9SOgorCQljYXNlIEdSRVBfSEVBREVSX0NPTU1JVFRFUjoKKwkJCXNhdmVkX2NoID0gc3RyaXBfdGltZXN0YW1wKGJvbCwgJmVvbCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWJyZWFrOworCQl9CiAJfQogCiAgYWdhaW46CkBAIC0xMjUyLDcgKzE1NTEsNyBAQAogCXN0cnVjdCBncmVwX3NvdXJjZSBnczsKIAlpbnQgcjsKIAotCWdyZXBfc291cmNlX2luaXQoJmdzLCBHUkVQX1NPVVJDRV9CVUYsIE5VTEwsIE5VTEwpOworCWdyZXBfc291cmNlX2luaXQoJmdzLCBHUkVQX1NPVVJDRV9CVUYsIE5VTEwsIE5VTEwsIE5VTEwpOwogCWdzLmJ1ZiA9IGJ1ZjsKIAlncy5zaXplID0gc2l6ZTsKIApAQCAtMTI2MywxMCArMTU2MiwxMiBAQAogfQogCiB2b2lkIGdyZXBfc291cmNlX2luaXQoc3RydWN0IGdyZXBfc291cmNlICpncywgZW51bSBncmVwX3NvdXJjZV90eXBlIHR5cGUsCi0JCSAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaWQgKmlkZW50aWZpZXIpCisJCSAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnBhdGgsCisJCSAgICAgIGNvbnN0IHZvaWQgKmlkZW50aWZpZXIpCiB7CiAJZ3MtPnR5cGUgPSB0eXBlOwogCWdzLT5uYW1lID0gbmFtZSA/IHhzdHJkdXAobmFtZSkgOiBOVUxMOworCWdzLT5wYXRoID0gcGF0aCA/IHhzdHJkdXAocGF0aCkgOiBOVUxMOwogCWdzLT5idWYgPSBOVUxMOwogCWdzLT5zaXplID0gMDsKIAlncy0+ZHJpdmVyID0gTlVMTDsKQEAgLTEyODgsNiArMTU4OSw4IEBACiB7CiAJZnJlZShncy0+bmFtZSk7CiAJZ3MtPm5hbWUgPSBOVUxMOworCWZyZWUoZ3MtPnBhdGgpOworCWdzLT5wYXRoID0gTlVMTDsKIAlmcmVlKGdzLT5pZGVudGlmaWVyKTsKIAlncy0+aWRlbnRpZmllciA9IE5VTEw7CiAJZ3JlcF9zb3VyY2VfY2xlYXJfZGF0YShncyk7CkBAIC0xMzU4LDcgKzE2NjEsNyBAQAogCXJldHVybiAwOwogfQogCi1pbnQgZ3JlcF9zb3VyY2VfbG9hZChzdHJ1Y3QgZ3JlcF9zb3VyY2UgKmdzKQorc3RhdGljIGludCBncmVwX3NvdXJjZV9sb2FkKHN0cnVjdCBncmVwX3NvdXJjZSAqZ3MpCiB7CiAJaWYgKGdzLT5idWYpCiAJCXJldHVybiAwOwpAQCAtMTM4MCwxMyArMTY4MywxNCBAQAogCQlyZXR1cm47CiAKIAlncmVwX2F0dHJfbG9jaygpOwotCWdzLT5kcml2ZXIgPSB1c2VyZGlmZl9maW5kX2J5X3BhdGgoZ3MtPm5hbWUpOworCWlmIChncy0+cGF0aCkKKwkJZ3MtPmRyaXZlciA9IHVzZXJkaWZmX2ZpbmRfYnlfcGF0aChncy0+cGF0aCk7CiAJaWYgKCFncy0+ZHJpdmVyKQogCQlncy0+ZHJpdmVyID0gdXNlcmRpZmZfZmluZF9ieV9uYW1lKCJkZWZhdWx0Iik7CiAJZ3JlcF9hdHRyX3VubG9jaygpOwogfQogCi1pbnQgZ3JlcF9zb3VyY2VfaXNfYmluYXJ5KHN0cnVjdCBncmVwX3NvdXJjZSAqZ3MpCitzdGF0aWMgaW50IGdyZXBfc291cmNlX2lzX2JpbmFyeShzdHJ1Y3QgZ3JlcF9zb3VyY2UgKmdzKQogewogCWdyZXBfc291cmNlX2xvYWRfZHJpdmVyKGdzKTsKIAlpZiAoZ3MtPmRyaXZlci0+YmluYXJ5ICE9IC0xKQpkaWZmIC0tZ2l0IGEvZ3JlcC5oIGIvZ3JlcC5oCmluZGV4IGVkN2RlNmIuLmU0YTFkZjUgMTAwNjQ0Ci0tLSBhL2dyZXAuaAorKysgYi9ncmVwLmgKQEAgLTI4LDEwICsyOCwxNCBAQAogfTsKIAogZW51bSBncmVwX2hlYWRlcl9maWVsZCB7Ci0JR1JFUF9IRUFERVJfQVVUSE9SID0gMCwKLQlHUkVQX0hFQURFUl9DT01NSVRURVIKKwlHUkVQX0hFQURFUl9GSUVMRF9NSU4gPSAwLAorCUdSRVBfSEVBREVSX0FVVEhPUiA9IEdSRVBfSEVBREVSX0ZJRUxEX01JTiwKKwlHUkVQX0hFQURFUl9DT01NSVRURVIsCisJR1JFUF9IRUFERVJfUkVGTE9HLAorCisJLyogTXVzdCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBlbnVtICovCisJR1JFUF9IRUFERVJfRklFTERfTUFYCiB9OwotI2RlZmluZSBHUkVQX0hFQURFUl9GSUVMRF9NQVggKEdSRVBfSEVBREVSX0NPTU1JVFRFUiArIDEpCiAKIHN0cnVjdCBncmVwX3BhdCB7CiAJc3RydWN0IGdyZXBfcGF0ICpuZXh0OwpAQCAtNTgsNiArNjIsMTQgQEAKIAlHUkVQX05PREVfT1IKIH07CiAKK2VudW0gZ3JlcF9wYXR0ZXJuX3R5cGUgeworCUdSRVBfUEFUVEVSTl9UWVBFX1VOU1BFQ0lGSUVEID0gMCwKKwlHUkVQX1BBVFRFUk5fVFlQRV9CUkUsCisJR1JFUF9QQVRURVJOX1RZUEVfRVJFLAorCUdSRVBfUEFUVEVSTl9UWVBFX0ZJWEVELAorCUdSRVBfUEFUVEVSTl9UWVBFX1BDUkUKK307CisKIHN0cnVjdCBncmVwX2V4cHIgewogCWVudW0gZ3JlcF9leHByX25vZGUgbm9kZTsKIAl1bnNpZ25lZCBoaXQ7CkBAIC05MCwxMSArMTAyLDEzIEBACiAJaW50IHdvcmRfcmVnZXhwOwogCWludCBmaXhlZDsKIAlpbnQgYWxsX21hdGNoOworCWludCBkZWJ1ZzsKICNkZWZpbmUgR1JFUF9CSU5BUllfREVGQVVMVAkwCiAjZGVmaW5lIEdSRVBfQklOQVJZX05PTUFUQ0gJMQogI2RlZmluZSBHUkVQX0JJTkFSWV9URVhUCTIKIAlpbnQgYmluYXJ5OwogCWludCBleHRlbmRlZDsKKwlpbnQgdXNlX3JlZmxvZ19maWx0ZXI7CiAJaW50IHBjcmU7CiAJaW50IHJlbGF0aXZlOwogCWludCBwYXRobmFtZTsKQEAgLTEwMyw2ICsxMTcsOCBAQAogCWludCBtYXhfZGVwdGg7CiAJaW50IGZ1bmNuYW1lOwogCWludCBmdW5jYm9keTsKKwlpbnQgZXh0ZW5kZWRfcmVnZXhwX29wdGlvbjsKKwlpbnQgcGF0dGVybl90eXBlX29wdGlvbjsKIAljaGFyIGNvbG9yX2NvbnRleHRbQ09MT1JfTUFYTEVOXTsKIAljaGFyIGNvbG9yX2ZpbGVuYW1lW0NPTE9SX01BWExFTl07CiAJY2hhciBjb2xvcl9mdW5jdGlvbltDT0xPUl9NQVhMRU5dOwpAQCAtMTIzLDYgKzEzOSwxMiBAQAogCXZvaWQgKm91dHB1dF9wcml2OwogfTsKIAorZXh0ZXJuIHZvaWQgaW5pdF9ncmVwX2RlZmF1bHRzKHZvaWQpOworZXh0ZXJuIGludCBncmVwX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICopOworZXh0ZXJuIHZvaWQgZ3JlcF9pbml0KHN0cnVjdCBncmVwX29wdCAqLCBjb25zdCBjaGFyICpwcmVmaXgpOwordm9pZCBncmVwX3NldF9wYXR0ZXJuX3R5cGVfb3B0aW9uKGVudW0gZ3JlcF9wYXR0ZXJuX3R5cGUsIHN0cnVjdCBncmVwX29wdCAqb3B0KTsKK3ZvaWQgZ3JlcF9jb21taXRfcGF0dGVybl90eXBlKGVudW0gZ3JlcF9wYXR0ZXJuX3R5cGUsIHN0cnVjdCBncmVwX29wdCAqb3B0KTsKKwogZXh0ZXJuIHZvaWQgYXBwZW5kX2dyZXBfcGF0KHN0cnVjdCBncmVwX29wdCAqb3B0LCBjb25zdCBjaGFyICpwYXQsIHNpemVfdCBwYXRsZW4sIGNvbnN0IGNoYXIgKm9yaWdpbiwgaW50IG5vLCBlbnVtIGdyZXBfcGF0X3Rva2VuIHQpOwogZXh0ZXJuIHZvaWQgYXBwZW5kX2dyZXBfcGF0dGVybihzdHJ1Y3QgZ3JlcF9vcHQgKm9wdCwgY29uc3QgY2hhciAqcGF0LCBjb25zdCBjaGFyICpvcmlnaW4sIGludCBubywgZW51bSBncmVwX3BhdF90b2tlbiB0KTsKIGV4dGVybiB2b2lkIGFwcGVuZF9oZWFkZXJfZ3JlcF9wYXR0ZXJuKHN0cnVjdCBncmVwX29wdCAqLCBlbnVtIGdyZXBfaGVhZGVyX2ZpZWxkLCBjb25zdCBjaGFyICopOwpAQCAtMTQzLDE2ICsxNjUsMTcgQEAKIAljaGFyICpidWY7CiAJdW5zaWduZWQgbG9uZyBzaXplOwogCisJY2hhciAqcGF0aDsgLyogZm9yIGF0dHJpYnV0ZSBsb29rdXBzICovCiAJc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqZHJpdmVyOwogfTsKIAogdm9pZCBncmVwX3NvdXJjZV9pbml0KHN0cnVjdCBncmVwX3NvdXJjZSAqZ3MsIGVudW0gZ3JlcF9zb3VyY2VfdHlwZSB0eXBlLAotCQkgICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCB2b2lkICppZGVudGlmaWVyKTsKLWludCBncmVwX3NvdXJjZV9sb2FkKHN0cnVjdCBncmVwX3NvdXJjZSAqZ3MpOworCQkgICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpwYXRoLAorCQkgICAgICBjb25zdCB2b2lkICppZGVudGlmaWVyKTsKIHZvaWQgZ3JlcF9zb3VyY2VfY2xlYXJfZGF0YShzdHJ1Y3QgZ3JlcF9zb3VyY2UgKmdzKTsKIHZvaWQgZ3JlcF9zb3VyY2VfY2xlYXIoc3RydWN0IGdyZXBfc291cmNlICpncyk7CiB2b2lkIGdyZXBfc291cmNlX2xvYWRfZHJpdmVyKHN0cnVjdCBncmVwX3NvdXJjZSAqZ3MpOwotaW50IGdyZXBfc291cmNlX2lzX2JpbmFyeShzdHJ1Y3QgZ3JlcF9zb3VyY2UgKmdzKTsKKwogCiBpbnQgZ3JlcF9zb3VyY2Uoc3RydWN0IGdyZXBfb3B0ICpvcHQsIHN0cnVjdCBncmVwX3NvdXJjZSAqZ3MpOwogCmRpZmYgLS1naXQgYS9oYXNoLmggYi9oYXNoLmgKaW5kZXggYjg3NWNlNi4uMWQ0M2FjMCAxMDA2NDQKLS0tIGEvaGFzaC5oCisrKyBiL2hhc2guaApAQCAtNDAsNCArNDAsMTEgQEAKIAl0YWJsZS0+YXJyYXkgPSBOVUxMOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgcHJlYWxsb2NhdGVfaGFzaChzdHJ1Y3QgaGFzaF90YWJsZSAqdGFibGUsIHVuc2lnbmVkIGludCBlbHRzKQoreworCWFzc2VydCh0YWJsZS0+c2l6ZSA9PSAwICYmIHRhYmxlLT5uciA9PSAwICYmIHRhYmxlLT5hcnJheSA9PSBOVUxMKTsKKwl0YWJsZS0+c2l6ZSA9IGVsdHMgKiAyOworCXRhYmxlLT5hcnJheSA9IHhjYWxsb2Moc2l6ZW9mKHN0cnVjdCBoYXNoX3RhYmxlX2VudHJ5KSwgdGFibGUtPnNpemUpOworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2hlbHAuYyBiL2hlbHAuYwppbmRleCA2MDEyYzA3Li5iZWJmY2U5IDEwMDY0NAotLS0gYS9oZWxwLmMKKysrIGIvaGVscC5jCkBAIC02LDYgKzYsOCBAQAogI2luY2x1ZGUgImNvbW1vbi1jbWRzLmgiCiAjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKICNpbmNsdWRlICJjb2x1bW4uaCIKKyNpbmNsdWRlICJ2ZXJzaW9uLmgiCisjaW5jbHVkZSAicmVmcy5oIgogCiB2b2lkIGFkZF9jbWRuYW1lKHN0cnVjdCBjbWRuYW1lcyAqY21kcywgY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbikKIHsKQEAgLTQzLDkgKzQ1LDEyIEBACiAJaWYgKCFjbWRzLT5jbnQpCiAJCXJldHVybjsKIAotCWZvciAoaSA9IGogPSAxOyBpIDwgY21kcy0+Y250OyBpKyspCi0JCWlmIChzdHJjbXAoY21kcy0+bmFtZXNbaV0tPm5hbWUsIGNtZHMtPm5hbWVzW2ktMV0tPm5hbWUpKQorCWZvciAoaSA9IGogPSAxOyBpIDwgY21kcy0+Y250OyBpKyspIHsKKwkJaWYgKCFzdHJjbXAoY21kcy0+bmFtZXNbaV0tPm5hbWUsIGNtZHMtPm5hbWVzW2otMV0tPm5hbWUpKQorCQkJZnJlZShjbWRzLT5uYW1lc1tpXSk7CisJCWVsc2UKIAkJCWNtZHMtPm5hbWVzW2orK10gPSBjbWRzLT5uYW1lc1tpXTsKKwl9CiAKIAljbWRzLT5jbnQgPSBqOwogfQpAQCAtNjAsOSArNjUsMTAgQEAKIAkJY21wID0gc3RyY21wKGNtZHMtPm5hbWVzW2NpXS0+bmFtZSwgZXhjbHVkZXMtPm5hbWVzW2VpXS0+bmFtZSk7CiAJCWlmIChjbXAgPCAwKQogCQkJY21kcy0+bmFtZXNbY2orK10gPSBjbWRzLT5uYW1lc1tjaSsrXTsKLQkJZWxzZSBpZiAoY21wID09IDApCi0JCQljaSsrLCBlaSsrOwotCQllbHNlIGlmIChjbXAgPiAwKQorCQllbHNlIGlmIChjbXAgPT0gMCkgeworCQkJZWkrKzsKKwkJCWZyZWUoY21kcy0+bmFtZXNbY2krK10pOworCQl9IGVsc2UgaWYgKGNtcCA+IDApCiAJCQllaSsrOwogCX0KIApAQCAtMjE4LDYgKzIyNCwyMyBAQAogCX0KIH0KIAordm9pZCBsaXN0X2NvbW1vbl9jbWRzX2hlbHAodm9pZCkKK3sKKwlpbnQgaSwgbG9uZ2VzdCA9IDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb21tb25fY21kcyk7IGkrKykgeworCQlpZiAobG9uZ2VzdCA8IHN0cmxlbihjb21tb25fY21kc1tpXS5uYW1lKSkKKwkJCWxvbmdlc3QgPSBzdHJsZW4oY29tbW9uX2NtZHNbaV0ubmFtZSk7CisJfQorCisJcHV0cyhfKCJUaGUgbW9zdCBjb21tb25seSB1c2VkIGdpdCBjb21tYW5kcyBhcmU6IikpOworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNvbW1vbl9jbWRzKTsgaSsrKSB7CisJCXByaW50ZigiICAgJXMgICAiLCBjb21tb25fY21kc1tpXS5uYW1lKTsKKwkJbXB1dF9jaGFyKCcgJywgbG9uZ2VzdCAtIHN0cmxlbihjb21tb25fY21kc1tpXS5uYW1lKSk7CisJCXB1dHMoXyhjb21tb25fY21kc1tpXS5oZWxwKSk7CisJfQorfQorCiBpbnQgaXNfaW5fY21kbGlzdChzdHJ1Y3QgY21kbmFtZXMgKmMsIGNvbnN0IGNoYXIgKnMpCiB7CiAJaW50IGk7CkBAIC0zNzUsNiArMzk4LDU5IEBACiAKIGludCBjbWRfdmVyc2lvbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKKwkvKgorCSAqIFRoZSBmb3JtYXQgb2YgdGhpcyBzdHJpbmcgc2hvdWxkIGJlIGtlcHQgc3RhYmxlIGZvciBjb21wYXRpYmlsaXR5CisJICogd2l0aCBleHRlcm5hbCBwcm9qZWN0cyB0aGF0IHJlbHkgb24gdGhlIG91dHB1dCBvZiAiZ2l0IHZlcnNpb24iLgorCSAqLwogCXByaW50ZigiZ2l0IHZlcnNpb24gJXNcbiIsIGdpdF92ZXJzaW9uX3N0cmluZyk7CiAJcmV0dXJuIDA7CiB9CisKK3N0cnVjdCBzaW1pbGFyX3JlZl9jYiB7CisJY29uc3QgY2hhciAqYmFzZV9yZWY7CisJc3RydWN0IHN0cmluZ19saXN0ICpzaW1pbGFyX3JlZnM7Cit9OworCitzdGF0aWMgaW50IGFwcGVuZF9zaW1pbGFyX3JlZihjb25zdCBjaGFyICpyZWZuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAorCQkJICAgICAgaW50IGZsYWdzLCB2b2lkICpjYl9kYXRhKQoreworCXN0cnVjdCBzaW1pbGFyX3JlZl9jYiAqY2IgPSAoc3RydWN0IHNpbWlsYXJfcmVmX2NiICopKGNiX2RhdGEpOworCWNoYXIgKmJyYW5jaCA9IHN0cnJjaHIocmVmbmFtZSwgJy8nKSArIDE7CisJLyogQSByZW1vdGUgYnJhbmNoIG9mIHRoZSBzYW1lIG5hbWUgaXMgZGVlbWVkIHNpbWlsYXIgKi8KKwlpZiAoIXByZWZpeGNtcChyZWZuYW1lLCAicmVmcy9yZW1vdGVzLyIpICYmCisJICAgICFzdHJjbXAoYnJhbmNoLCBjYi0+YmFzZV9yZWYpKQorCQlzdHJpbmdfbGlzdF9hcHBlbmQoY2ItPnNpbWlsYXJfcmVmcywKKwkJCQkgICByZWZuYW1lICsgc3RybGVuKCJyZWZzL3JlbW90ZXMvIikpOworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHN0cmluZ19saXN0IGd1ZXNzX3JlZnMoY29uc3QgY2hhciAqcmVmKQoreworCXN0cnVjdCBzaW1pbGFyX3JlZl9jYiByZWZfY2I7CisJc3RydWN0IHN0cmluZ19saXN0IHNpbWlsYXJfcmVmcyA9IFNUUklOR19MSVNUX0lOSVRfTk9EVVA7CisKKwlyZWZfY2IuYmFzZV9yZWYgPSByZWY7CisJcmVmX2NiLnNpbWlsYXJfcmVmcyA9ICZzaW1pbGFyX3JlZnM7CisJZm9yX2VhY2hfcmVmKGFwcGVuZF9zaW1pbGFyX3JlZiwgJnJlZl9jYik7CisJcmV0dXJuIHNpbWlsYXJfcmVmczsKK30KKwordm9pZCBoZWxwX3Vua25vd25fcmVmKGNvbnN0IGNoYXIgKnJlZiwgY29uc3QgY2hhciAqY21kLCBjb25zdCBjaGFyICplcnJvcikKK3sKKwlpbnQgaTsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3Qgc3VnZ2VzdGVkX3JlZnMgPSBndWVzc19yZWZzKHJlZik7CisKKwlmcHJpbnRmX2xuKHN0ZGVyciwgXygiJXM6ICVzIC0gJXMiKSwgY21kLCByZWYsIGVycm9yKTsKKworCWlmIChzdWdnZXN0ZWRfcmVmcy5uciA+IDApIHsKKwkJZnByaW50Zl9sbihzdGRlcnIsCisJCQkgICBRXygiXG5EaWQgeW91IG1lYW4gdGhpcz8iLAorCQkJICAgICAgIlxuRGlkIHlvdSBtZWFuIG9uZSBvZiB0aGVzZT8iLAorCQkJICAgICAgc3VnZ2VzdGVkX3JlZnMubnIpKTsKKwkJZm9yIChpID0gMDsgaSA8IHN1Z2dlc3RlZF9yZWZzLm5yOyBpKyspCisJCQlmcHJpbnRmKHN0ZGVyciwgIlx0JXNcbiIsIHN1Z2dlc3RlZF9yZWZzLml0ZW1zW2ldLnN0cmluZyk7CisJfQorCisJc3RyaW5nX2xpc3RfY2xlYXIoJnN1Z2dlc3RlZF9yZWZzLCAwKTsKKwlleGl0KDEpOworfQpkaWZmIC0tZ2l0IGEvaGVscC5oIGIvaGVscC5oCmluZGV4IDBhZTVhMTIuLmIyMWQ3YzkgMTAwNjQ0Ci0tLSBhL2hlbHAuaAorKysgYi9oZWxwLmgKQEAgLTI3LDQgKzI3LDkgQEAKIGV4dGVybiBpbnQgaXNfaW5fY21kbGlzdChzdHJ1Y3QgY21kbmFtZXMgKmNtZHMsIGNvbnN0IGNoYXIgKm5hbWUpOwogZXh0ZXJuIHZvaWQgbGlzdF9jb21tYW5kcyh1bnNpZ25lZCBpbnQgY29sb3B0cywgc3RydWN0IGNtZG5hbWVzICptYWluX2NtZHMsIHN0cnVjdCBjbWRuYW1lcyAqb3RoZXJfY21kcyk7CiAKKy8qCisgKiBjYWxsIHRoaXMgdG8gZGllKCksIHdoZW4gaXQgaXMgc3VzcGVjdGVkIHRoYXQgdGhlIHVzZXIgbWlzdHlwZWQgYQorICogcmVmIHRvIHRoZSBjb21tYW5kLCB0byBnaXZlIHN1Z2dlc3RlZCAiY29ycmVjdCIgcmVmcy4KKyAqLworZXh0ZXJuIHZvaWQgaGVscF91bmtub3duX3JlZihjb25zdCBjaGFyICpyZWYsIGNvbnN0IGNoYXIgKmNtZCwgY29uc3QgY2hhciAqZXJyb3IpOwogI2VuZGlmIC8qIEhFTFBfSCAqLwpkaWZmIC0tZ2l0IGEvaHR0cC1iYWNrZW5kLmMgYi9odHRwLWJhY2tlbmQuYwppbmRleCBmNTBlNzdmLi42Yjg1ZmZhIDEwMDY0NAotLS0gYS9odHRwLWJhY2tlbmQuYworKysgYi9odHRwLWJhY2tlbmQuYwpAQCAtNzAsNyArNzAsNyBAQAogCWlmIChuID49IHNpemVvZihidWZmZXIpKQogCQlkaWUoInByb3RvY29sIGVycm9yOiBpbXBvc3NpYmx5IGxvbmcgbGluZSIpOwogCi0Jc2FmZV93cml0ZShmZCwgYnVmZmVyLCBuKTsKKwl3cml0ZV9vcl9kaWUoZmQsIGJ1ZmZlciwgbik7CiB9CiAKIHN0YXRpYyB2b2lkIGh0dHBfc3RhdHVzKHVuc2lnbmVkIGNvZGUsIGNvbnN0IGNoYXIgKm1zZykKQEAgLTExMSw3ICsxMTEsNyBAQAogCiBzdGF0aWMgdm9pZCBlbmRfaGVhZGVycyh2b2lkKQogewotCXNhZmVfd3JpdGUoMSwgIlxyXG4iLCAyKTsKKwl3cml0ZV9vcl9kaWUoMSwgIlxyXG4iLCAyKTsKIH0KIAogX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsIDEsIDIpKSkKQEAgLTE1Nyw3ICsxNTcsNyBAQAogCWhkcl9pbnQoY29udGVudF9sZW5ndGgsIGJ1Zi0+bGVuKTsKIAloZHJfc3RyKGNvbnRlbnRfdHlwZSwgdHlwZSk7CiAJZW5kX2hlYWRlcnMoKTsKLQlzYWZlX3dyaXRlKDEsIGJ1Zi0+YnVmLCBidWYtPmxlbik7CisJd3JpdGVfb3JfZGllKDEsIGJ1Zi0+YnVmLCBidWYtPmxlbik7CiB9CiAKIHN0YXRpYyB2b2lkIHNlbmRfbG9jYWxfZmlsZShjb25zdCBjaGFyICp0aGVfdHlwZSwgY29uc3QgY2hhciAqbmFtZSkKQEAgLTE4NSw3ICsxODUsNyBAQAogCQkJZGllX2Vycm5vKCJDYW5ub3QgcmVhZCAnJXMnIiwgcCk7CiAJCWlmICghbikKIAkJCWJyZWFrOwotCQlzYWZlX3dyaXRlKDEsIGJ1Ziwgbik7CisJCXdyaXRlX29yX2RpZSgxLCBidWYsIG4pOwogCX0KIAljbG9zZShmZCk7CiAJZnJlZShidWYpOwpAQCAtMzYxLDE3ICszNjEsMTkgQEAKIHN0YXRpYyBpbnQgc2hvd190ZXh0X3JlZihjb25zdCBjaGFyICpuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAogCWludCBmbGFnLCB2b2lkICpjYl9kYXRhKQogeworCWNvbnN0IGNoYXIgKm5hbWVfbm9ucyA9IHN0cmlwX25hbWVzcGFjZShuYW1lKTsKIAlzdHJ1Y3Qgc3RyYnVmICpidWYgPSBjYl9kYXRhOwogCXN0cnVjdCBvYmplY3QgKm8gPSBwYXJzZV9vYmplY3Qoc2hhMSk7CiAJaWYgKCFvKQogCQlyZXR1cm4gMDsKIAotCXN0cmJ1Zl9hZGRmKGJ1ZiwgIiVzXHQlc1xuIiwgc2hhMV90b19oZXgoc2hhMSksIG5hbWUpOworCXN0cmJ1Zl9hZGRmKGJ1ZiwgIiVzXHQlc1xuIiwgc2hhMV90b19oZXgoc2hhMSksIG5hbWVfbm9ucyk7CiAJaWYgKG8tPnR5cGUgPT0gT0JKX1RBRykgewogCQlvID0gZGVyZWZfdGFnKG8sIG5hbWUsIDApOwogCQlpZiAoIW8pCiAJCQlyZXR1cm4gMDsKLQkJc3RyYnVmX2FkZGYoYnVmLCAiJXNcdCVzXnt9XG4iLCBzaGExX3RvX2hleChvLT5zaGExKSwgbmFtZSk7CisJCXN0cmJ1Zl9hZGRmKGJ1ZiwgIiVzXHQlc157fVxuIiwgc2hhMV90b19oZXgoby0+c2hhMSksCisJCQkgICAgbmFtZV9ub25zKTsKIAl9CiAJcmV0dXJuIDA7CiB9CkBAIC00MDIsMTIgKzQwNCw0MCBAQAogCiAJfSBlbHNlIHsKIAkJc2VsZWN0X2dldGFueWZpbGUoKTsKLQkJZm9yX2VhY2hfcmVmKHNob3dfdGV4dF9yZWYsICZidWYpOworCQlmb3JfZWFjaF9uYW1lc3BhY2VkX3JlZihzaG93X3RleHRfcmVmLCAmYnVmKTsKIAkJc2VuZF9zdHJidWYoInRleHQvcGxhaW4iLCAmYnVmKTsKIAl9CiAJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CiB9CiAKK3N0YXRpYyBpbnQgc2hvd19oZWFkX3JlZihjb25zdCBjaGFyICpuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAorCWludCBmbGFnLCB2b2lkICpjYl9kYXRhKQoreworCXN0cnVjdCBzdHJidWYgKmJ1ZiA9IGNiX2RhdGE7CisKKwlpZiAoZmxhZyAmIFJFRl9JU1NZTVJFRikgeworCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOworCQljb25zdCBjaGFyICp0YXJnZXQgPSByZXNvbHZlX3JlZl91bnNhZmUobmFtZSwgc2hhMSwgMSwgTlVMTCk7CisJCWNvbnN0IGNoYXIgKnRhcmdldF9ub25zID0gc3RyaXBfbmFtZXNwYWNlKHRhcmdldCk7CisKKwkJc3RyYnVmX2FkZGYoYnVmLCAicmVmOiAlc1xuIiwgdGFyZ2V0X25vbnMpOworCX0gZWxzZSB7CisJCXN0cmJ1Zl9hZGRmKGJ1ZiwgIiVzXG4iLCBzaGExX3RvX2hleChzaGExKSk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGdldF9oZWFkKGNoYXIgKmFyZykKK3sKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCisJc2VsZWN0X2dldGFueWZpbGUoKTsKKwloZWFkX3JlZl9uYW1lc3BhY2VkKHNob3dfaGVhZF9yZWYsICZidWYpOworCXNlbmRfc3RyYnVmKCJ0ZXh0L3BsYWluIiwgJmJ1Zik7CisJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7Cit9CisKIHN0YXRpYyB2b2lkIGdldF9pbmZvX3BhY2tzKGNoYXIgKmFyZykKIHsKIAlzaXplX3Qgb2JqZGlybGVuID0gc3RybGVuKGdldF9vYmplY3RfZGlyZWN0b3J5KCkpOwpAQCAtNTIwLDcgKzU1MCw3IEBACiAJY29uc3QgY2hhciAqcGF0dGVybjsKIAl2b2lkICgqaW1wKShjaGFyICopOwogfSBzZXJ2aWNlc1tdID0gewotCXsiR0VUIiwgIi9IRUFEJCIsIGdldF90ZXh0X2ZpbGV9LAorCXsiR0VUIiwgIi9IRUFEJCIsIGdldF9oZWFkfSwKIAl7IkdFVCIsICIvaW5mby9yZWZzJCIsIGdldF9pbmZvX3JlZnN9LAogCXsiR0VUIiwgIi9vYmplY3RzL2luZm8vYWx0ZXJuYXRlcyQiLCBnZXRfdGV4dF9maWxlfSwKIAl7IkdFVCIsICIvb2JqZWN0cy9pbmZvL2h0dHAtYWx0ZXJuYXRlcyQiLCBnZXRfdGV4dF9maWxlfSwKZGlmZiAtLWdpdCBhL2h0dHAtcHVzaC5jIGIvaHR0cC1wdXNoLmMKaW5kZXggYTgzMmNhNy4uMzk1YThjZiAxMDA2NDQKLS0tIGEvaHR0cC1wdXNoLmMKKysrIGIvaHR0cC1wdXNoLmMKQEAgLTExLDcgKzExLDExIEBACiAjaW5jbHVkZSAibGlzdC1vYmplY3RzLmgiCiAjaW5jbHVkZSAic2lnY2hhaW4uaCIKIAorI2lmZGVmIEVYUEFUX05FRURTX1hNTFBBUlNFX0gKKyNpbmNsdWRlIDx4bWxwYXJzZS5oPgorI2Vsc2UKICNpbmNsdWRlIDxleHBhdC5oPgorI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBjaGFyIGh0dHBfcHVzaF91c2FnZVtdID0KICJnaXQgaHR0cC1wdXNoIFstLWFsbF0gWy0tZHJ5LXJ1bl0gWy0tZm9yY2VdIFstLXZlcmJvc2VdIDxyZW1vdGU+IFs8aGVhZD4uLi5dXG4iOwpAQCAtMTcyLDI4ICsxNzYsNyBAQAogc3RhdGljIGNoYXIgKnhtbF9lbnRpdGllcyhjb25zdCBjaGFyICpzKQogewogCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7Ci0Jd2hpbGUgKCpzKSB7Ci0JCXNpemVfdCBsZW4gPSBzdHJjc3BuKHMsICJcIjw+JiIpOwotCQlzdHJidWZfYWRkKCZidWYsIHMsIGxlbik7Ci0JCXMgKz0gbGVuOwotCQlzd2l0Y2ggKCpzKSB7Ci0JCWNhc2UgJyInOgotCQkJc3RyYnVmX2FkZHN0cigmYnVmLCAiJnF1b3Q7Iik7Ci0JCQlicmVhazsKLQkJY2FzZSAnPCc6Ci0JCQlzdHJidWZfYWRkc3RyKCZidWYsICImbHQ7Iik7Ci0JCQlicmVhazsKLQkJY2FzZSAnPic6Ci0JCQlzdHJidWZfYWRkc3RyKCZidWYsICImZ3Q7Iik7Ci0JCQlicmVhazsKLQkJY2FzZSAnJic6Ci0JCQlzdHJidWZfYWRkc3RyKCZidWYsICImYW1wOyIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgMDoKLQkJCXJldHVybiBzdHJidWZfZGV0YWNoKCZidWYsIE5VTEwpOwotCQl9Ci0JCXMrKzsKLQl9CisJc3RyYnVmX2FkZHN0cl94bWxfcXVvdGVkKCZidWYsIHMpOwogCXJldHVybiBzdHJidWZfZGV0YWNoKCZidWYsIE5VTEwpOwogfQogCkBAIC0xNTYwLDcgKzE1NDMsNyBAQAogCiAJc3ByaW50Zih1cmwsICIlcyVzIiwgcmVwby0+dXJsLCBwYXRoKTsKIAotCXN3aXRjaCAoaHR0cF9nZXRfc3RyYnVmKHVybCwgTlVMTCwgMCkpIHsKKwlzd2l0Y2ggKGh0dHBfZ2V0X3N0cmJ1Zih1cmwsIE5VTEwsIE5VTEwsIDApKSB7CiAJY2FzZSBIVFRQX09LOgogCQlyZXQgPSAxOwogCQlicmVhazsKQEAgLTE1NjgsNyArMTU1MSw3IEBACiAJCXJldCA9IDA7CiAJCWJyZWFrOwogCWNhc2UgSFRUUF9FUlJPUjoKLQkJaHR0cF9lcnJvcih1cmwsIEhUVFBfRVJST1IpOworCQllcnJvcigidW5hYmxlIHRvIGFjY2VzcyAnJXMnOiAlcyIsIHVybCwgY3VybF9lcnJvcnN0cik7CiAJZGVmYXVsdDoKIAkJcmV0ID0gLTE7CiAJfQpAQCAtMTU4NCw3ICsxNTY3LDcgQEAKIAl1cmwgPSB4bWFsbG9jKHN0cmxlbihyZXBvLT51cmwpICsgc3RybGVuKHBhdGgpICsgMSk7CiAJc3ByaW50Zih1cmwsICIlcyVzIiwgcmVwby0+dXJsLCBwYXRoKTsKIAotCWlmIChodHRwX2dldF9zdHJidWYodXJsLCAmYnVmZmVyLCAwKSAhPSBIVFRQX09LKQorCWlmIChodHRwX2dldF9zdHJidWYodXJsLCBOVUxMLCAmYnVmZmVyLCAwKSAhPSBIVFRQX09LKQogCQlkaWUoIkNvdWxkbid0IGdldCAlcyBmb3IgcmVtb3RlIHN5bXJlZlxuJXMiLCB1cmwsCiAJCSAgICBjdXJsX2Vycm9yc3RyKTsKIAlmcmVlKHVybCk7CkBAIC0xNjEwLDkgKzE1OTMsOCBAQAogewogCXN0cnVjdCBjb21taXQgKmhlYWQgPSBsb29rdXBfY29tbWl0X29yX2RpZShoZWFkX3NoYTEsICJIRUFEIik7CiAJc3RydWN0IGNvbW1pdCAqYnJhbmNoID0gbG9va3VwX2NvbW1pdF9vcl9kaWUocmVtb3RlLT5vbGRfc2hhMSwgcmVtb3RlLT5uYW1lKTsKLQlzdHJ1Y3QgY29tbWl0X2xpc3QgKm1lcmdlX2Jhc2VzID0gZ2V0X21lcmdlX2Jhc2VzKGhlYWQsIGJyYW5jaCwgMSk7CiAKLQlyZXR1cm4gKG1lcmdlX2Jhc2VzICYmICFtZXJnZV9iYXNlcy0+bmV4dCAmJiBtZXJnZV9iYXNlcy0+aXRlbSA9PSBicmFuY2gpOworCXJldHVybiBpbl9tZXJnZV9iYXNlcyhicmFuY2gsIGhlYWQpOwogfQogCiBzdGF0aWMgaW50IGRlbGV0ZV9yZW1vdGVfYnJhbmNoKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGludCBmb3JjZSkKZGlmZiAtLWdpdCBhL2h0dHAtd2Fsa2VyLmMgYi9odHRwLXdhbGtlci5jCmluZGV4IDUxYTkwNmUuLjE1MTZjNWUgMTAwNjQ0Ci0tLSBhL2h0dHAtd2Fsa2VyLmMKKysrIGIvaHR0cC13YWxrZXIuYwpAQCAtMzk2LDcgKzM5Niw3IEBACiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBmZXRjaF9wYWNrKHN0cnVjdCB3YWxrZXIgKndhbGtlciwgc3RydWN0IGFsdF9iYXNlICpyZXBvLCB1bnNpZ25lZCBjaGFyICpzaGExKQorc3RhdGljIGludCBodHRwX2ZldGNoX3BhY2soc3RydWN0IHdhbGtlciAqd2Fsa2VyLCBzdHJ1Y3QgYWx0X2Jhc2UgKnJlcG8sIHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7CiAJc3RydWN0IHBhY2tlZF9naXQgKnRhcmdldDsKIAlpbnQgcmV0OwpAQCAtNTI0LDcgKzUyNCw3IEBACiAJaWYgKCFmZXRjaF9vYmplY3Qod2Fsa2VyLCBhbHRiYXNlLCBzaGExKSkKIAkJcmV0dXJuIDA7CiAJd2hpbGUgKGFsdGJhc2UpIHsKLQkJaWYgKCFmZXRjaF9wYWNrKHdhbGtlciwgYWx0YmFzZSwgc2hhMSkpCisJCWlmICghaHR0cF9mZXRjaF9wYWNrKHdhbGtlciwgYWx0YmFzZSwgc2hhMSkpCiAJCQlyZXR1cm4gMDsKIAkJZmV0Y2hfYWx0ZXJuYXRlcyh3YWxrZXIsIGRhdGEtPmFsdC0+YmFzZSk7CiAJCWFsdGJhc2UgPSBhbHRiYXNlLT5uZXh0OwpkaWZmIC0tZ2l0IGEvaHR0cC5jIGIvaHR0cC5jCmluZGV4IDVjYjg3ZjEuLjJkMDg2YWUgMTAwNjQ0Ci0tLSBhL2h0dHAuYworKysgYi9odHRwLmMKQEAgLTQsNiArNCw4IEBACiAjaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKICNpbmNsdWRlICJ1cmwuaCIKICNpbmNsdWRlICJjcmVkZW50aWFsLmgiCisjaW5jbHVkZSAidmVyc2lvbi5oIgorI2luY2x1ZGUgInBrdC1saW5lLmgiCiAKIGludCBhY3RpdmVfcmVxdWVzdHM7CiBpbnQgaHR0cF9pc192ZXJib3NlOwpAQCAtMjksNiArMzEsNyBAQAogY2hhciBjdXJsX2Vycm9yc3RyW0NVUkxfRVJST1JfU0laRV07CiAKIHN0YXRpYyBpbnQgY3VybF9zc2xfdmVyaWZ5ID0gLTE7CitzdGF0aWMgaW50IGN1cmxfc3NsX3RyeTsKIHN0YXRpYyBjb25zdCBjaGFyICpzc2xfY2VydDsKICNpZiBMSUJDVVJMX1ZFUlNJT05fTlVNID49IDB4MDcwOTAzCiBzdGF0aWMgY29uc3QgY2hhciAqc3NsX2tleTsKQEAgLTE2MSw2ICsxNjQsMTAgQEAKIAkJCXNzbF9jZXJ0X3Bhc3N3b3JkX3JlcXVpcmVkID0gMTsKIAkJcmV0dXJuIDA7CiAJfQorCWlmICghc3RyY21wKCJodHRwLnNzbHRyeSIsIHZhcikpIHsKKwkJY3VybF9zc2xfdHJ5ID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOworCQlyZXR1cm4gMDsKKwl9CiAJaWYgKCFzdHJjbXAoImh0dHAubWluc2Vzc2lvbnMiLCB2YXIpKSB7CiAJCW1pbl9jdXJsX3Nlc3Npb25zID0gZ2l0X2NvbmZpZ19pbnQodmFyLCB2YWx1ZSk7CiAjaWZuZGVmIFVTRV9DVVJMX01VTFRJCkBAIC0yMjEsOSArMjI4LDE1IEBACiAjZWxzZQogCXsKIAkJc3RhdGljIHN0cnVjdCBzdHJidWYgdXAgPSBTVFJCVUZfSU5JVDsKLQkJc3RyYnVmX3Jlc2V0KCZ1cCk7Ci0JCXN0cmJ1Zl9hZGRmKCZ1cCwgIiVzOiVzIiwKLQkJCSAgICBodHRwX2F1dGgudXNlcm5hbWUsIGh0dHBfYXV0aC5wYXNzd29yZCk7CisJCS8qCisJCSAqIE5vdGUgdGhhdCB3ZSBhc3N1bWUgd2Ugb25seSBldmVyIGhhdmUgYSBzaW5nbGUgc2V0IG9mCisJCSAqIGNyZWRlbnRpYWxzIGluIGEgZ2l2ZW4gcHJvZ3JhbSBydW4sIHNvIHdlIGRvIG5vdCBoYXZlCisJCSAqIHRvIHdvcnJ5IGFib3V0IHVwZGF0aW5nIHRoaXMgYnVmZmVyLCBvbmx5IHNldHRpbmcgaXRzCisJCSAqIGluaXRpYWwgdmFsdWUuCisJCSAqLworCQlpZiAoIXVwLmxlbikKKwkJCXN0cmJ1Zl9hZGRmKCZ1cCwgIiVzOiVzIiwKKwkJCQlodHRwX2F1dGgudXNlcm5hbWUsIGh0dHBfYXV0aC5wYXNzd29yZCk7CiAJCWN1cmxfZWFzeV9zZXRvcHQocmVzdWx0LCBDVVJMT1BUX1VTRVJQV0QsIHVwLmJ1Zik7CiAJfQogI2VuZGlmCkBAIC0yMzUsNiArMjQ4LDcgQEAKIAkJcmV0dXJuIDA7CiAJaWYgKCFjZXJ0X2F1dGgucGFzc3dvcmQpIHsKIAkJY2VydF9hdXRoLnByb3RvY29sID0geHN0cmR1cCgiY2VydCIpOworCQljZXJ0X2F1dGgudXNlcm5hbWUgPSB4c3RyZHVwKCIiKTsKIAkJY2VydF9hdXRoLnBhdGggPSB4c3RyZHVwKHNzbF9jZXJ0KTsKIAkJY3JlZGVudGlhbF9maWxsKCZjZXJ0X2F1dGgpOwogCX0KQEAgLTI3OSw3ICsyOTMsNiBAQAogI2VuZGlmCiAJaWYgKHNzbF9jYWluZm8gIT0gTlVMTCkKIAkJY3VybF9lYXN5X3NldG9wdChyZXN1bHQsIENVUkxPUFRfQ0FJTkZPLCBzc2xfY2FpbmZvKTsKLQljdXJsX2Vhc3lfc2V0b3B0KHJlc3VsdCwgQ1VSTE9QVF9GQUlMT05FUlJPUiwgMSk7CiAKIAlpZiAoY3VybF9sb3dfc3BlZWRfbGltaXQgPiAwICYmIGN1cmxfbG93X3NwZWVkX3RpbWUgPiAwKSB7CiAJCWN1cmxfZWFzeV9zZXRvcHQocmVzdWx0LCBDVVJMT1BUX0xPV19TUEVFRF9MSU1JVCwKQEAgLTI5OSwxMSArMzEyLDE2IEBACiAJCWN1cmxfZWFzeV9zZXRvcHQocmVzdWx0LCBDVVJMT1BUX1ZFUkJPU0UsIDEpOwogCiAJY3VybF9lYXN5X3NldG9wdChyZXN1bHQsIENVUkxPUFRfVVNFUkFHRU5ULAotCQl1c2VyX2FnZW50ID8gdXNlcl9hZ2VudCA6IEdJVF9IVFRQX1VTRVJfQUdFTlQpOworCQl1c2VyX2FnZW50ID8gdXNlcl9hZ2VudCA6IGdpdF91c2VyX2FnZW50KCkpOwogCiAJaWYgKGN1cmxfZnRwX25vX2Vwc3YpCiAJCWN1cmxfZWFzeV9zZXRvcHQocmVzdWx0LCBDVVJMT1BUX0ZUUF9VU0VfRVBTViwgMCk7CiAKKyNpZmRlZiBDVVJMT1BUX1VTRV9TU0wKKwlpZiAoY3VybF9zc2xfdHJ5KQorCQljdXJsX2Vhc3lfc2V0b3B0KHJlc3VsdCwgQ1VSTE9QVF9VU0VfU1NMLCBDVVJMVVNFU1NMX1RSWSk7CisjZW5kaWYKKwogCWlmIChjdXJsX2h0dHBfcHJveHkpIHsKIAkJY3VybF9lYXN5X3NldG9wdChyZXN1bHQsIENVUkxPUFRfUFJPWFksIGN1cmxfaHR0cF9wcm94eSk7CiAJCWN1cmxfZWFzeV9zZXRvcHQocmVzdWx0LCBDVVJMT1BUX1BST1hZQVVUSCwgQ1VSTEFVVEhfQU5ZKTsKQEAgLTUwMyw2ICs1MjEsNyBAQAogCWN1cmxfZWFzeV9zZXRvcHQoc2xvdC0+Y3VybCwgQ1VSTE9QVF9QT1NURklFTERTLCBOVUxMKTsKIAljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfVVBMT0FELCAwKTsKIAljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfSFRUUEdFVCwgMSk7CisJY3VybF9lYXN5X3NldG9wdChzbG90LT5jdXJsLCBDVVJMT1BUX0ZBSUxPTkVSUk9SLCAxKTsKIAlpZiAoaHR0cF9hdXRoLnBhc3N3b3JkKQogCQlpbml0X2N1cmxfaHR0cF9hdXRoKHNsb3QtPmN1cmwpOwogCkBAIC02MzAsNiArNjQ5LDE4IEBACiAJCQlGRF9aRVJPKCZleGNmZHMpOwogCQkJY3VybF9tdWx0aV9mZHNldChjdXJsbSwgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2ZkcywgJm1heF9mZCk7CiAKKwkJCS8qCisJCQkgKiBJdCBjYW4gaGFwcGVuIHRoYXQgY3VybF9tdWx0aV90aW1lb3V0IHJldHVybnMgYSBwYXRob2xvZ2ljYWxseQorCQkJICogbG9uZyB0aW1lb3V0IHdoZW4gY3VybF9tdWx0aV9mZHNldCByZXR1cm5zIG5vIGZpbGUgZGVzY3JpcHRvcnMKKwkJCSAqIHRvIHJlYWQuICBTZWUgY29tbWl0IG1lc3NhZ2UgZm9yIG1vcmUgZGV0YWlscy4KKwkJCSAqLworCQkJaWYgKG1heF9mZCA8IDAgJiYKKwkJCSAgICAoc2VsZWN0X3RpbWVvdXQudHZfc2VjID4gMCB8fAorCQkJICAgICBzZWxlY3RfdGltZW91dC50dl91c2VjID4gNTAwMDApKSB7CisJCQkJc2VsZWN0X3RpbWVvdXQudHZfc2VjICA9IDA7CisJCQkJc2VsZWN0X3RpbWVvdXQudHZfdXNlYyA9IDUwMDAwOworCQkJfQorCiAJCQlzZWxlY3QobWF4X2ZkKzEsICZyZWFkZmRzLCAmd3JpdGVmZHMsICZleGNmZHMsICZzZWxlY3RfdGltZW91dCk7CiAJCX0KIAl9CkBAIC03NDQsMTEgKzc3NSw1NyBAQAogCXJldHVybiBzdHJidWZfZGV0YWNoKCZidWYsIE5VTEwpOwogfQogCitpbnQgaGFuZGxlX2N1cmxfcmVzdWx0KHN0cnVjdCBzbG90X3Jlc3VsdHMgKnJlc3VsdHMpCit7CisJLyoKKwkgKiBJZiB3ZSBzZWUgYSBmYWlsaW5nIGh0dHAgY29kZSB3aXRoIENVUkxFX09LLCB3ZSBoYXZlIHR1cm5lZCBvZmYKKwkgKiBGQUlMT05FUlJPUiAodG8ga2VlcCB0aGUgc2VydmVyJ3MgY3VzdG9tIGVycm9yIHJlc3BvbnNlKSwgYW5kIHNob3VsZAorCSAqIHRyYW5zbGF0ZSB0aGUgY29kZSBpbnRvIGZhaWx1cmUgaGVyZS4KKwkgKi8KKwlpZiAocmVzdWx0cy0+Y3VybF9yZXN1bHQgPT0gQ1VSTEVfT0sgJiYKKwkgICAgcmVzdWx0cy0+aHR0cF9jb2RlID49IDQwMCkgeworCQlyZXN1bHRzLT5jdXJsX3Jlc3VsdCA9IENVUkxFX0hUVFBfUkVUVVJORURfRVJST1I7CisJCS8qCisJCSAqIE5vcm1hbGx5IGN1cmwgd2lsbCBhbHJlYWR5IGhhdmUgcHV0IHRoZSAicmVhc29uIHBocmFzZSIKKwkJICogZnJvbSB0aGUgc2VydmVyIGludG8gY3VybF9lcnJvcnN0cjsgdW5mb3J0dW5hdGVseSB3aXRob3V0CisJCSAqIEZBSUxPTkVSUk9SIGl0IGlzIGxvc3QsIHNvIHdlIGNhbiBnaXZlIG9ubHkgdGhlIG51bWVyaWMKKwkJICogc3RhdHVzIGNvZGUuCisJCSAqLworCQlzbnByaW50ZihjdXJsX2Vycm9yc3RyLCBzaXplb2YoY3VybF9lcnJvcnN0ciksCisJCQkgIlRoZSByZXF1ZXN0ZWQgVVJMIHJldHVybmVkIGVycm9yOiAlbGQiLAorCQkJIHJlc3VsdHMtPmh0dHBfY29kZSk7CisJfQorCisJaWYgKHJlc3VsdHMtPmN1cmxfcmVzdWx0ID09IENVUkxFX09LKSB7CisJCWNyZWRlbnRpYWxfYXBwcm92ZSgmaHR0cF9hdXRoKTsKKwkJcmV0dXJuIEhUVFBfT0s7CisJfSBlbHNlIGlmIChtaXNzaW5nX3RhcmdldChyZXN1bHRzKSkKKwkJcmV0dXJuIEhUVFBfTUlTU0lOR19UQVJHRVQ7CisJZWxzZSBpZiAocmVzdWx0cy0+aHR0cF9jb2RlID09IDQwMSkgeworCQlpZiAoaHR0cF9hdXRoLnVzZXJuYW1lICYmIGh0dHBfYXV0aC5wYXNzd29yZCkgeworCQkJY3JlZGVudGlhbF9yZWplY3QoJmh0dHBfYXV0aCk7CisJCQlyZXR1cm4gSFRUUF9OT0FVVEg7CisJCX0gZWxzZSB7CisJCQljcmVkZW50aWFsX2ZpbGwoJmh0dHBfYXV0aCk7CisJCQlyZXR1cm4gSFRUUF9SRUFVVEg7CisJCX0KKwl9IGVsc2UgeworI2lmIExJQkNVUkxfVkVSU0lPTl9OVU0gPj0gMHgwNzBjMDAKKwkJaWYgKCFjdXJsX2Vycm9yc3RyWzBdKQorCQkJc3RybGNweShjdXJsX2Vycm9yc3RyLAorCQkJCWN1cmxfZWFzeV9zdHJlcnJvcihyZXN1bHRzLT5jdXJsX3Jlc3VsdCksCisJCQkJc2l6ZW9mKGN1cmxfZXJyb3JzdHIpKTsKKyNlbmRpZgorCQlyZXR1cm4gSFRUUF9FUlJPUjsKKwl9Cit9CisKIC8qIGh0dHBfcmVxdWVzdCgpIHRhcmdldHMgKi8KICNkZWZpbmUgSFRUUF9SRVFVRVNUX1NUUkJVRgkwCiAjZGVmaW5lIEhUVFBfUkVRVUVTVF9GSUxFCTEKIAotc3RhdGljIGludCBodHRwX3JlcXVlc3QoY29uc3QgY2hhciAqdXJsLCB2b2lkICpyZXN1bHQsIGludCB0YXJnZXQsIGludCBvcHRpb25zKQorc3RhdGljIGludCBodHRwX3JlcXVlc3QoY29uc3QgY2hhciAqdXJsLCBzdHJ1Y3Qgc3RyYnVmICp0eXBlLAorCQkJdm9pZCAqcmVzdWx0LCBpbnQgdGFyZ2V0LCBpbnQgb3B0aW9ucykKIHsKIAlzdHJ1Y3QgYWN0aXZlX3JlcXVlc3Rfc2xvdCAqc2xvdDsKIAlzdHJ1Y3Qgc2xvdF9yZXN1bHRzIHJlc3VsdHM7CkBAIC03ODMsNjAgKzg2MCw3MSBAQAogCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgIlByYWdtYToiKTsKIAlpZiAob3B0aW9ucyAmIEhUVFBfTk9fQ0FDSEUpCiAJCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgIiBuby1jYWNoZSIpOworCWlmIChvcHRpb25zICYgSFRUUF9LRUVQX0VSUk9SKQorCQljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfRkFJTE9ORVJST1IsIDApOwogCiAJaGVhZGVycyA9IGN1cmxfc2xpc3RfYXBwZW5kKGhlYWRlcnMsIGJ1Zi5idWYpOwogCiAJY3VybF9lYXN5X3NldG9wdChzbG90LT5jdXJsLCBDVVJMT1BUX1VSTCwgdXJsKTsKIAljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfSFRUUEhFQURFUiwgaGVhZGVycyk7CisJY3VybF9lYXN5X3NldG9wdChzbG90LT5jdXJsLCBDVVJMT1BUX0VOQ09ESU5HLCAiZ3ppcCIpOwogCiAJaWYgKHN0YXJ0X2FjdGl2ZV9zbG90KHNsb3QpKSB7CiAJCXJ1bl9hY3RpdmVfc2xvdChzbG90KTsKLQkJaWYgKHJlc3VsdHMuY3VybF9yZXN1bHQgPT0gQ1VSTEVfT0spCi0JCQlyZXQgPSBIVFRQX09LOwotCQllbHNlIGlmIChtaXNzaW5nX3RhcmdldCgmcmVzdWx0cykpCi0JCQlyZXQgPSBIVFRQX01JU1NJTkdfVEFSR0VUOwotCQllbHNlIGlmIChyZXN1bHRzLmh0dHBfY29kZSA9PSA0MDEpIHsKLQkJCWlmIChodHRwX2F1dGgudXNlcm5hbWUgJiYgaHR0cF9hdXRoLnBhc3N3b3JkKSB7Ci0JCQkJY3JlZGVudGlhbF9yZWplY3QoJmh0dHBfYXV0aCk7Ci0JCQkJcmV0ID0gSFRUUF9OT0FVVEg7Ci0JCQl9IGVsc2UgewotCQkJCWNyZWRlbnRpYWxfZmlsbCgmaHR0cF9hdXRoKTsKLQkJCQlpbml0X2N1cmxfaHR0cF9hdXRoKHNsb3QtPmN1cmwpOwotCQkJCXJldCA9IEhUVFBfUkVBVVRIOwotCQkJfQotCQl9IGVsc2UgewotCQkJaWYgKCFjdXJsX2Vycm9yc3RyWzBdKQotCQkJCXN0cmxjcHkoY3VybF9lcnJvcnN0ciwKLQkJCQkJY3VybF9lYXN5X3N0cmVycm9yKHJlc3VsdHMuY3VybF9yZXN1bHQpLAotCQkJCQlzaXplb2YoY3VybF9lcnJvcnN0cikpOwotCQkJcmV0ID0gSFRUUF9FUlJPUjsKLQkJfQorCQlyZXQgPSBoYW5kbGVfY3VybF9yZXN1bHQoJnJlc3VsdHMpOwogCX0gZWxzZSB7Ci0JCWVycm9yKCJVbmFibGUgdG8gc3RhcnQgSFRUUCByZXF1ZXN0IGZvciAlcyIsIHVybCk7CisJCXNucHJpbnRmKGN1cmxfZXJyb3JzdHIsIHNpemVvZihjdXJsX2Vycm9yc3RyKSwKKwkJCSAiZmFpbGVkIHRvIHN0YXJ0IEhUVFAgcmVxdWVzdCIpOwogCQlyZXQgPSBIVFRQX1NUQVJUX0ZBSUxFRDsKIAl9CiAKKwlpZiAodHlwZSkgeworCQljaGFyICp0OworCQlzdHJidWZfcmVzZXQodHlwZSk7CisJCWN1cmxfZWFzeV9nZXRpbmZvKHNsb3QtPmN1cmwsIENVUkxJTkZPX0NPTlRFTlRfVFlQRSwgJnQpOworCQlpZiAodCkKKwkJCXN0cmJ1Zl9hZGRzdHIodHlwZSwgdCk7CisJfQorCiAJY3VybF9zbGlzdF9mcmVlX2FsbChoZWFkZXJzKTsKIAlzdHJidWZfcmVsZWFzZSgmYnVmKTsKIAotCWlmIChyZXQgPT0gSFRUUF9PSykKLQkJY3JlZGVudGlhbF9hcHByb3ZlKCZodHRwX2F1dGgpOwotCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBodHRwX3JlcXVlc3RfcmVhdXRoKGNvbnN0IGNoYXIgKnVybCwgdm9pZCAqcmVzdWx0LCBpbnQgdGFyZ2V0LAorc3RhdGljIGludCBodHRwX3JlcXVlc3RfcmVhdXRoKGNvbnN0IGNoYXIgKnVybCwKKwkJCSAgICAgICBzdHJ1Y3Qgc3RyYnVmICp0eXBlLAorCQkJICAgICAgIHZvaWQgKnJlc3VsdCwgaW50IHRhcmdldCwKIAkJCSAgICAgICBpbnQgb3B0aW9ucykKIHsKLQlpbnQgcmV0ID0gaHR0cF9yZXF1ZXN0KHVybCwgcmVzdWx0LCB0YXJnZXQsIG9wdGlvbnMpOworCWludCByZXQgPSBodHRwX3JlcXVlc3QodXJsLCB0eXBlLCByZXN1bHQsIHRhcmdldCwgb3B0aW9ucyk7CiAJaWYgKHJldCAhPSBIVFRQX1JFQVVUSCkKIAkJcmV0dXJuIHJldDsKLQlyZXR1cm4gaHR0cF9yZXF1ZXN0KHVybCwgcmVzdWx0LCB0YXJnZXQsIG9wdGlvbnMpOworCisJLyoKKwkgKiBJZiB3ZSBhcmUgdXNpbmcgS0VFUF9FUlJPUiwgdGhlIHByZXZpb3VzIHJlcXVlc3QgbWF5IGhhdmUKKwkgKiBwdXQgY3J1ZnQgaW50byBvdXIgb3V0cHV0IHN0cmVhbTsgd2Ugc2hvdWxkIGNsZWFyIGl0IG91dCBiZWZvcmUKKwkgKiBtYWtpbmcgb3VyIG5leHQgcmVxdWVzdC4gV2Ugb25seSBrbm93IGhvdyB0byBkbyB0aGlzIGZvcgorCSAqIHRoZSBzdHJidWYgY2FzZSwgYnV0IHRoYXQgaXMgZW5vdWdoIHRvIHNhdGlzZnkgY3VycmVudCBjYWxsZXJzLgorCSAqLworCWlmIChvcHRpb25zICYgSFRUUF9LRUVQX0VSUk9SKSB7CisJCXN3aXRjaCAodGFyZ2V0KSB7CisJCWNhc2UgSFRUUF9SRVFVRVNUX1NUUkJVRjoKKwkJCXN0cmJ1Zl9yZXNldChyZXN1bHQpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlkaWUoIkJVRzogSFRUUF9LRUVQX0VSUk9SIGlzIG9ubHkgc3VwcG9ydGVkIHdpdGggc3RyYnVmcyIpOworCQl9CisJfQorCXJldHVybiBodHRwX3JlcXVlc3QodXJsLCB0eXBlLCByZXN1bHQsIHRhcmdldCwgb3B0aW9ucyk7CiB9CiAKLWludCBodHRwX2dldF9zdHJidWYoY29uc3QgY2hhciAqdXJsLCBzdHJ1Y3Qgc3RyYnVmICpyZXN1bHQsIGludCBvcHRpb25zKQoraW50IGh0dHBfZ2V0X3N0cmJ1Zihjb25zdCBjaGFyICp1cmwsCisJCSAgICBzdHJ1Y3Qgc3RyYnVmICp0eXBlLAorCQkgICAgc3RydWN0IHN0cmJ1ZiAqcmVzdWx0LCBpbnQgb3B0aW9ucykKIHsKLQlyZXR1cm4gaHR0cF9yZXF1ZXN0X3JlYXV0aCh1cmwsIHJlc3VsdCwgSFRUUF9SRVFVRVNUX1NUUkJVRiwgb3B0aW9ucyk7CisJcmV0dXJuIGh0dHBfcmVxdWVzdF9yZWF1dGgodXJsLCB0eXBlLCByZXN1bHQsCisJCQkJICAgSFRUUF9SRVFVRVNUX1NUUkJVRiwgb3B0aW9ucyk7CiB9CiAKIC8qCkBAIC04NTksNyArOTQ3LDcgQEAKIAkJZ290byBjbGVhbnVwOwogCX0KIAotCXJldCA9IGh0dHBfcmVxdWVzdF9yZWF1dGgodXJsLCByZXN1bHQsIEhUVFBfUkVRVUVTVF9GSUxFLCBvcHRpb25zKTsKKwlyZXQgPSBodHRwX3JlcXVlc3RfcmVhdXRoKHVybCwgTlVMTCwgcmVzdWx0LCBIVFRQX1JFUVVFU1RfRklMRSwgb3B0aW9ucyk7CiAJZmNsb3NlKHJlc3VsdCk7CiAKIAlpZiAoKHJldCA9PSBIVFRQX09LKSAmJiBtb3ZlX3RlbXBfdG9fZmlsZSh0bXBmaWxlLmJ1ZiwgZmlsZW5hbWUpKQpAQCAtODY5LDE1ICs5NTcsNiBAQAogCXJldHVybiByZXQ7CiB9CiAKLWludCBodHRwX2Vycm9yKGNvbnN0IGNoYXIgKnVybCwgaW50IHJldCkKLXsKLQkvKiBodHRwX3JlcXVlc3QgaGFzIGFscmVhZHkgaGFuZGxlZCBIVFRQX1NUQVJUX0ZBSUxFRC4gKi8KLQlpZiAocmV0ICE9IEhUVFBfU1RBUlRfRkFJTEVEKQotCQllcnJvcigiJXMgd2hpbGUgYWNjZXNzaW5nICVzIiwgY3VybF9lcnJvcnN0ciwgdXJsKTsKLQotCXJldHVybiByZXQ7Ci19Ci0KIGludCBodHRwX2ZldGNoX3JlZihjb25zdCBjaGFyICpiYXNlLCBzdHJ1Y3QgcmVmICpyZWYpCiB7CiAJY2hhciAqdXJsOwpAQCAtODg1LDcgKzk2NCw3IEBACiAJaW50IHJldCA9IC0xOwogCiAJdXJsID0gcXVvdGVfcmVmX3VybChiYXNlLCByZWYtPm5hbWUpOwotCWlmIChodHRwX2dldF9zdHJidWYodXJsLCAmYnVmZmVyLCBIVFRQX05PX0NBQ0hFKSA9PSBIVFRQX09LKSB7CisJaWYgKGh0dHBfZ2V0X3N0cmJ1Zih1cmwsIE5VTEwsICZidWZmZXIsIEhUVFBfTk9fQ0FDSEUpID09IEhUVFBfT0spIHsKIAkJc3RyYnVmX3J0cmltKCZidWZmZXIpOwogCQlpZiAoYnVmZmVyLmxlbiA9PSA0MCkKIAkJCXJldCA9IGdldF9zaGExX2hleChidWZmZXIuYnVmLCByZWYtPm9sZF9zaGExKTsKQEAgLTk3OCw3ICsxMDU3LDcgQEAKIAlzdHJidWZfYWRkc3RyKCZidWYsICJvYmplY3RzL2luZm8vcGFja3MiKTsKIAl1cmwgPSBzdHJidWZfZGV0YWNoKCZidWYsIE5VTEwpOwogCi0JcmV0ID0gaHR0cF9nZXRfc3RyYnVmKHVybCwgJmJ1ZiwgSFRUUF9OT19DQUNIRSk7CisJcmV0ID0gaHR0cF9nZXRfc3RyYnVmKHVybCwgTlVMTCwgJmJ1ZiwgSFRUUF9OT19DQUNIRSk7CiAJaWYgKHJldCAhPSBIVFRQX09LKQogCQlnb3RvIGNsZWFudXA7CiAKZGlmZiAtLWdpdCBhL2h0dHAuaCBiL2h0dHAuaAppbmRleCA5MTVjMjg2Li5kNzdjMWI1IDEwMDY0NAotLS0gYS9odHRwLmgKKysrIGIvaHR0cC5oCkBAIC00Miw2ICs0MiwxNSBAQAogI2RlZmluZSBOT19DVVJMX0lPQ1RMCiAjZW5kaWYKIAorLyoKKyAqIENVUkxPUFRfVVNFX1NTTCB3YXMga25vd24gYXMgQ1VSTE9QVF9GVFBfU1NMIHVwIHRvIDcuMTYuNCwKKyAqIGFuZCB0aGUgY29uc3RhbnRzIHdlcmUga25vd24gYXMgQ1VSTEZUUFNTTF8qCisqLworI2lmICFkZWZpbmVkKENVUkxPUFRfVVNFX1NTTCkgJiYgZGVmaW5lZChDVVJMT1BUX0ZUUF9TU0wpCisjZGVmaW5lIENVUkxPUFRfVVNFX1NTTCBDVVJMT1BUX0ZUUF9TU0wKKyNkZWZpbmUgQ1VSTFVTRVNTTF9UUlkgQ1VSTEZUUFNTTF9UUlkKKyNlbmRpZgorCiBzdHJ1Y3Qgc2xvdF9yZXN1bHRzIHsKIAlDVVJMY29kZSBjdXJsX3Jlc3VsdDsKIAlsb25nIGh0dHBfY29kZTsKQEAgLTc4LDYgKzg3LDcgQEAKIGV4dGVybiB2b2lkIHJ1bl9hY3RpdmVfc2xvdChzdHJ1Y3QgYWN0aXZlX3JlcXVlc3Rfc2xvdCAqc2xvdCk7CiBleHRlcm4gdm9pZCBmaW5pc2hfYWN0aXZlX3Nsb3Qoc3RydWN0IGFjdGl2ZV9yZXF1ZXN0X3Nsb3QgKnNsb3QpOwogZXh0ZXJuIHZvaWQgZmluaXNoX2FsbF9hY3RpdmVfc2xvdHModm9pZCk7CitleHRlcm4gaW50IGhhbmRsZV9jdXJsX3Jlc3VsdChzdHJ1Y3Qgc2xvdF9yZXN1bHRzICpyZXN1bHRzKTsKIAogI2lmZGVmIFVTRV9DVVJMX01VTFRJCiBleHRlcm4gdm9pZCBmaWxsX2FjdGl2ZV9zbG90cyh2b2lkKTsKQEAgLTExNyw2ICsxMjcsNyBAQAogCiAvKiBPcHRpb25zIGZvciBodHRwX3JlcXVlc3RfKigpICovCiAjZGVmaW5lIEhUVFBfTk9fQ0FDSEUJCTEKKyNkZWZpbmUgSFRUUF9LRUVQX0VSUk9SCQkyCiAKIC8qIFJldHVybiB2YWx1ZXMgZm9yIGh0dHBfcmVxdWVzdF8qKCkgKi8KICNkZWZpbmUgSFRUUF9PSwkJCTAKQEAgLTEzMSwxMyArMTQyLDcgQEAKICAqCiAgKiBJZiB0aGUgcmVzdWx0IHBvaW50ZXIgaXMgTlVMTCwgYSBIVFRQIEhFQUQgcmVxdWVzdCBpcyBtYWRlIGluc3RlYWQgb2YgR0VULgogICovCi1pbnQgaHR0cF9nZXRfc3RyYnVmKGNvbnN0IGNoYXIgKnVybCwgc3RydWN0IHN0cmJ1ZiAqcmVzdWx0LCBpbnQgb3B0aW9ucyk7Ci0KLS8qCi0gKiBQcmludHMgYW4gZXJyb3IgbWVzc2FnZSB1c2luZyBlcnJvcigpIGNvbnRhaW5pbmcgdXJsIGFuZCBjdXJsX2Vycm9yc3RyLAotICogYW5kIHJldHVybnMgcmV0LgotICovCi1pbnQgaHR0cF9lcnJvcihjb25zdCBjaGFyICp1cmwsIGludCByZXQpOworaW50IGh0dHBfZ2V0X3N0cmJ1Zihjb25zdCBjaGFyICp1cmwsIHN0cnVjdCBzdHJidWYgKmNvbnRlbnRfdHlwZSwgc3RydWN0IHN0cmJ1ZiAqcmVzdWx0LCBpbnQgb3B0aW9ucyk7CiAKIGV4dGVybiBpbnQgaHR0cF9mZXRjaF9yZWYoY29uc3QgY2hhciAqYmFzZSwgc3RydWN0IHJlZiAqcmVmKTsKIApkaWZmIC0tZ2l0IGEvaWRlbnQuYyBiL2lkZW50LmMKaW5kZXggNDQzYzA3NS4uMWMxMjNlNiAxMDA2NDQKLS0tIGEvaWRlbnQuYworKysgYi9pZGVudC5jCkBAIC0xMCw3ICsxMCwxMiBAQAogc3RhdGljIHN0cnVjdCBzdHJidWYgZ2l0X2RlZmF1bHRfbmFtZSA9IFNUUkJVRl9JTklUOwogc3RhdGljIHN0cnVjdCBzdHJidWYgZ2l0X2RlZmF1bHRfZW1haWwgPSBTVFJCVUZfSU5JVDsKIHN0YXRpYyBjaGFyIGdpdF9kZWZhdWx0X2RhdGVbNTBdOwotaW50IHVzZXJfaWRlbnRfZXhwbGljaXRseV9naXZlbjsKKworI2RlZmluZSBJREVOVF9OQU1FX0dJVkVOIDAxCisjZGVmaW5lIElERU5UX01BSUxfR0lWRU4gMDIKKyNkZWZpbmUgSURFTlRfQUxMX0dJVkVOIChJREVOVF9OQU1FX0dJVkVOfElERU5UX01BSUxfR0lWRU4pCitzdGF0aWMgaW50IGNvbW1pdHRlcl9pZGVudF9leHBsaWNpdGx5X2dpdmVuOworc3RhdGljIGludCBhdXRob3JfaWRlbnRfZXhwbGljaXRseV9naXZlbjsKIAogI2lmZGVmIE5PX0dFQ09TX0lOX1BXRU5UCiAjZGVmaW5lIGdldF9nZWNvcyhpZ25vcmVkKSAiJiIKQEAgLTQxLDYgKzQ2LDcgQEAKIHN0YXRpYyBpbnQgYWRkX21haWxuYW1lX2hvc3Qoc3RydWN0IHN0cmJ1ZiAqYnVmKQogewogCUZJTEUgKm1haWxuYW1lOworCXN0cnVjdCBzdHJidWYgbWFpbG5hbWVidWYgPSBTVFJCVUZfSU5JVDsKIAogCW1haWxuYW1lID0gZm9wZW4oIi9ldGMvbWFpbG5hbWUiLCAiciIpOwogCWlmICghbWFpbG5hbWUpIHsKQEAgLTQ5LDE0ICs1NSwxNyBAQAogCQkJCXN0cmVycm9yKGVycm5vKSk7CiAJCXJldHVybiAtMTsKIAl9Ci0JaWYgKHN0cmJ1Zl9nZXRsaW5lKGJ1ZiwgbWFpbG5hbWUsICdcbicpID09IEVPRikgeworCWlmIChzdHJidWZfZ2V0bGluZSgmbWFpbG5hbWVidWYsIG1haWxuYW1lLCAnXG4nKSA9PSBFT0YpIHsKIAkJaWYgKGZlcnJvcihtYWlsbmFtZSkpCiAJCQl3YXJuaW5nKCJjYW5ub3QgcmVhZCAvZXRjL21haWxuYW1lOiAlcyIsCiAJCQkJc3RyZXJyb3IoZXJybm8pKTsKKwkJc3RyYnVmX3JlbGVhc2UoJm1haWxuYW1lYnVmKTsKIAkJZmNsb3NlKG1haWxuYW1lKTsKIAkJcmV0dXJuIC0xOwogCX0KIAkvKiBzdWNjZXNzISAqLworCXN0cmJ1Zl9hZGRidWYoYnVmLCAmbWFpbG5hbWVidWYpOworCXN0cmJ1Zl9yZWxlYXNlKCZtYWlsbmFtZWJ1Zik7CiAJZmNsb3NlKG1haWxuYW1lKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTkzLDcgKzEwMiw3IEBACiAJYWRkX2RvbWFpbm5hbWUoZW1haWwpOwogfQogCi1jb25zdCBjaGFyICppZGVudF9kZWZhdWx0X25hbWUodm9pZCkKK3N0YXRpYyBjb25zdCBjaGFyICppZGVudF9kZWZhdWx0X25hbWUodm9pZCkKIHsKIAlpZiAoIWdpdF9kZWZhdWx0X25hbWUubGVuKSB7CiAJCWNvcHlfZ2Vjb3MoeGdldHB3dWlkX3NlbGYoKSwgJmdpdF9kZWZhdWx0X25hbWUpOwpAQCAtMTA5LDcgKzExOCw4IEBACiAKIAkJaWYgKGVtYWlsICYmIGVtYWlsWzBdKSB7CiAJCQlzdHJidWZfYWRkc3RyKCZnaXRfZGVmYXVsdF9lbWFpbCwgZW1haWwpOwotCQkJdXNlcl9pZGVudF9leHBsaWNpdGx5X2dpdmVuIHw9IElERU5UX01BSUxfR0lWRU47CisJCQljb21taXR0ZXJfaWRlbnRfZXhwbGljaXRseV9naXZlbiB8PSBJREVOVF9NQUlMX0dJVkVOOworCQkJYXV0aG9yX2lkZW50X2V4cGxpY2l0bHlfZ2l2ZW4gfD0gSURFTlRfTUFJTF9HSVZFTjsKIAkJfSBlbHNlCiAJCQljb3B5X2VtYWlsKHhnZXRwd3VpZF9zZWxmKCksICZnaXRfZGVmYXVsdF9lbWFpbCk7CiAJCXN0cmJ1Zl90cmltKCZnaXRfZGVmYXVsdF9lbWFpbCk7CkBAIC0xMTcsNyArMTI3LDcgQEAKIAlyZXR1cm4gZ2l0X2RlZmF1bHRfZW1haWwuYnVmOwogfQogCi1jb25zdCBjaGFyICppZGVudF9kZWZhdWx0X2RhdGUodm9pZCkKK3N0YXRpYyBjb25zdCBjaGFyICppZGVudF9kZWZhdWx0X2RhdGUodm9pZCkKIHsKIAlpZiAoIWdpdF9kZWZhdWx0X2RhdGVbMF0pCiAJCWRhdGVzdGFtcChnaXRfZGVmYXVsdF9kYXRlLCBzaXplb2YoZ2l0X2RlZmF1bHRfZGF0ZSkpOwpAQCAtMjEwLDggKzIyMCwxMCBAQAogCQkJc3BsaXQtPm5hbWVfZW5kID0gY3AgKyAxOwogCQkJYnJlYWs7CiAJCX0KLQlpZiAoIXNwbGl0LT5uYW1lX2VuZCkKLQkJcmV0dXJuIHN0YXR1czsKKwlpZiAoIXNwbGl0LT5uYW1lX2VuZCkgeworCQkvKiBubyBodW1hbiByZWFkYWJsZSBuYW1lICovCisJCXNwbGl0LT5uYW1lX2VuZCA9IHNwbGl0LT5uYW1lX2JlZ2luOworCX0KIAogCWZvciAoY3AgPSBzcGxpdC0+bWFpbF9iZWdpbjsgY3AgPCBsaW5lICsgbGVuOyBjcCsrKQogCQlpZiAoKmNwID09ICc+JykgewpAQCAtMzI1LDYgKzMzNywxMCBAQAogCiBjb25zdCBjaGFyICpnaXRfYXV0aG9yX2luZm8oaW50IGZsYWcpCiB7CisJaWYgKGdldGVudigiR0lUX0FVVEhPUl9OQU1FIikpCisJCWF1dGhvcl9pZGVudF9leHBsaWNpdGx5X2dpdmVuIHw9IElERU5UX05BTUVfR0lWRU47CisJaWYgKGdldGVudigiR0lUX0FVVEhPUl9FTUFJTCIpKQorCQlhdXRob3JfaWRlbnRfZXhwbGljaXRseV9naXZlbiB8PSBJREVOVF9NQUlMX0dJVkVOOwogCXJldHVybiBmbXRfaWRlbnQoZ2V0ZW52KCJHSVRfQVVUSE9SX05BTUUiKSwKIAkJCSBnZXRlbnYoIkdJVF9BVVRIT1JfRU1BSUwiKSwKIAkJCSBnZXRlbnYoIkdJVF9BVVRIT1JfREFURSIpLApAQCAtMzM0LDE2ICszNTAsMTYgQEAKIGNvbnN0IGNoYXIgKmdpdF9jb21taXR0ZXJfaW5mbyhpbnQgZmxhZykKIHsKIAlpZiAoZ2V0ZW52KCJHSVRfQ09NTUlUVEVSX05BTUUiKSkKLQkJdXNlcl9pZGVudF9leHBsaWNpdGx5X2dpdmVuIHw9IElERU5UX05BTUVfR0lWRU47CisJCWNvbW1pdHRlcl9pZGVudF9leHBsaWNpdGx5X2dpdmVuIHw9IElERU5UX05BTUVfR0lWRU47CiAJaWYgKGdldGVudigiR0lUX0NPTU1JVFRFUl9FTUFJTCIpKQotCQl1c2VyX2lkZW50X2V4cGxpY2l0bHlfZ2l2ZW4gfD0gSURFTlRfTUFJTF9HSVZFTjsKKwkJY29tbWl0dGVyX2lkZW50X2V4cGxpY2l0bHlfZ2l2ZW4gfD0gSURFTlRfTUFJTF9HSVZFTjsKIAlyZXR1cm4gZm10X2lkZW50KGdldGVudigiR0lUX0NPTU1JVFRFUl9OQU1FIiksCiAJCQkgZ2V0ZW52KCJHSVRfQ09NTUlUVEVSX0VNQUlMIiksCiAJCQkgZ2V0ZW52KCJHSVRfQ09NTUlUVEVSX0RBVEUiKSwKIAkJCSBmbGFnKTsKIH0KIAotaW50IHVzZXJfaWRlbnRfc3VmZmljaWVudGx5X2dpdmVuKHZvaWQpCitzdGF0aWMgaW50IGlkZW50X2lzX3N1ZmZpY2llbnQoaW50IHVzZXJfaWRlbnRfZXhwbGljaXRseV9naXZlbikKIHsKICNpZm5kZWYgV0lORE9XUwogCXJldHVybiAodXNlcl9pZGVudF9leHBsaWNpdGx5X2dpdmVuICYgSURFTlRfTUFJTF9HSVZFTik7CkBAIC0zNTIsNiArMzY4LDE2IEBACiAjZW5kaWYKIH0KIAoraW50IGNvbW1pdHRlcl9pZGVudF9zdWZmaWNpZW50bHlfZ2l2ZW4odm9pZCkKK3sKKwlyZXR1cm4gaWRlbnRfaXNfc3VmZmljaWVudChjb21taXR0ZXJfaWRlbnRfZXhwbGljaXRseV9naXZlbik7Cit9CisKK2ludCBhdXRob3JfaWRlbnRfc3VmZmljaWVudGx5X2dpdmVuKHZvaWQpCit7CisJcmV0dXJuIGlkZW50X2lzX3N1ZmZpY2llbnQoYXV0aG9yX2lkZW50X2V4cGxpY2l0bHlfZ2l2ZW4pOworfQorCiBpbnQgZ2l0X2lkZW50X2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpkYXRhKQogewogCWlmICghc3RyY21wKHZhciwgInVzZXIubmFtZSIpKSB7CkBAIC0zNTksNyArMzg1LDggQEAKIAkJCXJldHVybiBjb25maWdfZXJyb3Jfbm9uYm9vbCh2YXIpOwogCQlzdHJidWZfcmVzZXQoJmdpdF9kZWZhdWx0X25hbWUpOwogCQlzdHJidWZfYWRkc3RyKCZnaXRfZGVmYXVsdF9uYW1lLCB2YWx1ZSk7Ci0JCXVzZXJfaWRlbnRfZXhwbGljaXRseV9naXZlbiB8PSBJREVOVF9OQU1FX0dJVkVOOworCQljb21taXR0ZXJfaWRlbnRfZXhwbGljaXRseV9naXZlbiB8PSBJREVOVF9OQU1FX0dJVkVOOworCQlhdXRob3JfaWRlbnRfZXhwbGljaXRseV9naXZlbiB8PSBJREVOVF9OQU1FX0dJVkVOOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTM2OCw3ICszOTUsOCBAQAogCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKHZhcik7CiAJCXN0cmJ1Zl9yZXNldCgmZ2l0X2RlZmF1bHRfZW1haWwpOwogCQlzdHJidWZfYWRkc3RyKCZnaXRfZGVmYXVsdF9lbWFpbCwgdmFsdWUpOwotCQl1c2VyX2lkZW50X2V4cGxpY2l0bHlfZ2l2ZW4gfD0gSURFTlRfTUFJTF9HSVZFTjsKKwkJY29tbWl0dGVyX2lkZW50X2V4cGxpY2l0bHlfZ2l2ZW4gfD0gSURFTlRfTUFJTF9HSVZFTjsKKwkJYXV0aG9yX2lkZW50X2V4cGxpY2l0bHlfZ2l2ZW4gfD0gSURFTlRfTUFJTF9HSVZFTjsKIAkJcmV0dXJuIDA7CiAJfQogCmRpZmYgLS1naXQgYS9pbWFwLXNlbmQuYyBiL2ltYXAtc2VuZC5jCmluZGV4IGQ0MmU0NzEuLmQ2YjY1ZTIgMTAwNjQ0Ci0tLSBhL2ltYXAtc2VuZC5jCisrKyBiL2ltYXAtc2VuZC5jCkBAIC0yOSw1MCArMjksMjAgQEAKICNpZmRlZiBOT19PUEVOU1NMCiB0eXBlZGVmIHZvaWQgKlNTTDsKICNlbHNlCisjaWZkZWYgQVBQTEVfQ09NTU9OX0NSWVBUTworI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25ITUFDLmg+CisjZGVmaW5lIEhNQUNfQ1RYIENDSG1hY0NvbnRleHQKKyNkZWZpbmUgSE1BQ19Jbml0KGhtYWMsIGtleSwgbGVuLCBhbGdvKSBDQ0htYWNJbml0KGhtYWMsIGFsZ28sIGtleSwgbGVuKQorI2RlZmluZSBITUFDX1VwZGF0ZSBDQ0htYWNVcGRhdGUKKyNkZWZpbmUgSE1BQ19GaW5hbChobWFjLCBoYXNoLCBwdHIpIENDSG1hY0ZpbmFsKGhtYWMsIGhhc2gpCisjZGVmaW5lIEhNQUNfQ1RYX2NsZWFudXAoaWdub3JlKQorI2RlZmluZSBFVlBfbWQ1KCkga0NDSG1hY0FsZ01ENQorI2Vsc2UKICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgogI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgogI2VuZGlmCi0KLXN0cnVjdCBzdG9yZV9jb25mIHsKLQljaGFyICpuYW1lOwotCWNvbnN0IGNoYXIgKnBhdGg7IC8qIHNob3VsZCB0aGlzIGJlIGhlcmU/IGl0cyBpbnRlcnByZXRhdGlvbiBpcyBkcml2ZXItc3BlY2lmaWMgKi8KLQljaGFyICptYXBfaW5ib3g7Ci0JY2hhciAqdHJhc2g7Ci0JdW5zaWduZWQgbWF4X3NpemU7IC8qIG9mZl90IGlzIG92ZXJraWxsICovCi0JdW5zaWduZWQgdHJhc2hfcmVtb3RlX25ldzoxLCB0cmFzaF9vbmx5X25ldzoxOwotfTsKLQotLyogRm9yIG1lc3NhZ2UtPnN0YXR1cyAqLwotI2RlZmluZSBNX1JFQ0VOVCAgICAgICAoMTw8MCkgLyogdW5zeW5jYWJsZSBmbGFnOyBtYWlsZGlyXyogZGVwZW5kIG9uIHRoaXMgYmVpbmcgMTw8MCAqLwotI2RlZmluZSBNX0RFQUQgICAgICAgICAoMTw8MSkgLyogZXhwdW5nZWQgKi8KLSNkZWZpbmUgTV9GTEFHUyAgICAgICAgKDE8PDIpIC8qIGZsYWdzIGZldGNoZWQgKi8KLQotc3RydWN0IG1lc3NhZ2UgewotCXN0cnVjdCBtZXNzYWdlICpuZXh0OwotCXNpemVfdCBzaXplOyAvKiB6ZXJvIGltcGxpZXMgIm5vdCBmZXRjaGVkIiAqLwotCWludCB1aWQ7Ci0JdW5zaWduZWQgY2hhciBmbGFncywgc3RhdHVzOwotfTsKLQotc3RydWN0IHN0b3JlIHsKLQlzdHJ1Y3Qgc3RvcmVfY29uZiAqY29uZjsgLyogZm9yZWlnbiAqLwotCi0JLyogY3VycmVudGx5IG9wZW4gbWFpbGJveCAqLwotCWNvbnN0IGNoYXIgKm5hbWU7IC8qIGZvcmVpZ24hIG1heWJlIHByZXNldD8gKi8KLQljaGFyICpwYXRoOyAvKiBvd24gKi8KLQlzdHJ1Y3QgbWVzc2FnZSAqbXNnczsgLyogb3duICovCi0JaW50IHVpZHZhbGlkaXR5OwotCXVuc2lnbmVkIGNoYXIgb3B0czsgLyogbWF5YmUgcHJlc2V0PyAqLwotCS8qIG5vdGUgdGhhdCB0aGUgZm9sbG93aW5nIGRvIF9ub3RfIHJlZmxlY3Qgc3RhdHMgZnJvbSBtc2dzLCBidXQgbWFpbGJveCB0b3RhbHMgKi8KLQlpbnQgY291bnQ7IC8qICMgb2YgbWVzc2FnZXMgKi8KLQlpbnQgcmVjZW50OyAvKiAjIG9mIHJlY2VudCBtZXNzYWdlcyAtIGRvbid0IHRydXN0IHRoaXMgYmV5b25kIHRoZSBpbml0aWFsIHJlYWQgKi8KLX07Ci0KLXN0cnVjdCBtc2dfZGF0YSB7Ci0JY2hhciAqZGF0YTsKLQlpbnQgbGVuOwotCXVuc2lnbmVkIGNoYXIgZmxhZ3M7Ci19OworI2luY2x1ZGUgPG9wZW5zc2wveDUwOXYzLmg+CisjZW5kaWYKIAogc3RhdGljIGNvbnN0IGNoYXIgaW1hcF9zZW5kX3VzYWdlW10gPSAiZ2l0IGltYXAtc2VuZCA8IDxtYm94PiI7CiAKQEAgLTkxLDggKzYxLDYgQEAKIAogc3RhdGljIGNoYXIgKm5leHRfYXJnKGNoYXIgKiopOwogCi1zdGF0aWMgdm9pZCBmcmVlX2dlbmVyaWNfbWVzc2FnZXMoc3RydWN0IG1lc3NhZ2UgKik7Ci0KIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpCiBzdGF0aWMgaW50IG5mc25wcmludGYoY2hhciAqYnVmLCBpbnQgYmxlbiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwogCkBAIC0xMzYsMjAgKzEwNCw2IEBACiAJTlVMTCwJLyogYXV0aF9tZXRob2QgKi8KIH07CiAKLXN0cnVjdCBpbWFwX3N0b3JlX2NvbmYgewotCXN0cnVjdCBzdG9yZV9jb25mIGdlbjsKLQlzdHJ1Y3QgaW1hcF9zZXJ2ZXJfY29uZiAqc2VydmVyOwotfTsKLQotI2RlZmluZSBOSUwJKHZvaWQgKikweDEKLSNkZWZpbmUgTElTVAkodm9pZCAqKTB4MgotCi1zdHJ1Y3QgaW1hcF9saXN0IHsKLQlzdHJ1Y3QgaW1hcF9saXN0ICpuZXh0LCAqY2hpbGQ7Ci0JY2hhciAqdmFsOwotCWludCBsZW47Ci19OwotCiBzdHJ1Y3QgaW1hcF9zb2NrZXQgewogCWludCBmZFsyXTsKIAlTU0wgKnNzbDsKQEAgLTE2Niw3ICsxMjAsNiBAQAogCiBzdHJ1Y3QgaW1hcCB7CiAJaW50IHVpZG5leHQ7IC8qIGZyb20gU0VMRUNUIHJlc3BvbnNlcyAqLwotCXN0cnVjdCBpbWFwX2xpc3QgKm5zX3BlcnNvbmFsLCAqbnNfb3RoZXIsICpuc19zaGFyZWQ7IC8qIE5BTUVTUEFDRSBpbmZvICovCiAJdW5zaWduZWQgY2FwcywgcmNhcHM7IC8qIENBUEFCSUxJVFkgcmVzdWx0cyAqLwogCS8qIGNvbW1hbmQgcXVldWUgKi8KIAlpbnQgbmV4dHRhZywgbnVtX2luX3Byb2dyZXNzLCBsaXRlcmFsX3BlbmRpbmc7CkBAIC0xNzUsMTEgKzEyOCwxMSBAQAogfTsKIAogc3RydWN0IGltYXBfc3RvcmUgewotCXN0cnVjdCBzdG9yZSBnZW47CisJLyogY3VycmVudGx5IG9wZW4gbWFpbGJveCAqLworCWNvbnN0IGNoYXIgKm5hbWU7IC8qIGZvcmVpZ24hIG1heWJlIHByZXNldD8gKi8KIAlpbnQgdWlkdmFsaWRpdHk7CiAJc3RydWN0IGltYXAgKmltYXA7CiAJY29uc3QgY2hhciAqcHJlZml4OwotCXVuc2lnbmVkIC8qY3VycmVudG5jOjEsKi8gdHJhc2huYzoxOwogfTsKIAogc3RydWN0IGltYXBfY21kX2NiIHsKQEAgLTIyNiwxNCArMTc5LDYgQEAKIHN0YXRpYyBpbnQgZ2V0X2NtZF9yZXN1bHQoc3RydWN0IGltYXBfc3RvcmUgKmN0eCwgc3RydWN0IGltYXBfY21kICp0Y21kKTsKIAogCi1zdGF0aWMgY29uc3QgY2hhciAqRmxhZ3NbXSA9IHsKLQkiRHJhZnQiLAotCSJGbGFnZ2VkIiwKLQkiQW5zd2VyZWQiLAotCSJTZWVuIiwKLQkiRGVsZXRlZCIsCi19OwotCiAjaWZuZGVmIE5PX09QRU5TU0wKIHN0YXRpYyB2b2lkIHNzbF9zb2NrZXRfcGVycm9yKGNvbnN0IGNoYXIgKmZ1bmMpCiB7CkBAIC0yNjYsMTIgKzIxMSw2NCBAQAogCX0KIH0KIAorI2lmZGVmIE5PX09QRU5TU0wKIHN0YXRpYyBpbnQgc3NsX3NvY2tldF9jb25uZWN0KHN0cnVjdCBpbWFwX3NvY2tldCAqc29jaywgaW50IHVzZV90bHNfb25seSwgaW50IHZlcmlmeSkKIHsKLSNpZmRlZiBOT19PUEVOU1NMCiAJZnByaW50ZihzdGRlcnIsICJTU0wgcmVxdWVzdGVkIGJ1dCBTU0wgc3VwcG9ydCBub3QgY29tcGlsZWQgaW5cbiIpOwogCXJldHVybiAtMTsKK30KKwogI2Vsc2UKKworc3RhdGljIGludCBob3N0X21hdGNoZXMoY29uc3QgY2hhciAqaG9zdCwgY29uc3QgY2hhciAqcGF0dGVybikKK3sKKwlpZiAocGF0dGVyblswXSA9PSAnKicgJiYgcGF0dGVyblsxXSA9PSAnLicpIHsKKwkJcGF0dGVybiArPSAyOworCQlpZiAoIShob3N0ID0gc3RyY2hyKGhvc3QsICcuJykpKQorCQkJcmV0dXJuIDA7CisJCWhvc3QrKzsKKwl9CisKKwlyZXR1cm4gKmhvc3QgJiYgKnBhdHRlcm4gJiYgIXN0cmNhc2VjbXAoaG9zdCwgcGF0dGVybik7Cit9CisKK3N0YXRpYyBpbnQgdmVyaWZ5X2hvc3RuYW1lKFg1MDkgKmNlcnQsIGNvbnN0IGNoYXIgKmhvc3RuYW1lKQoreworCWludCBsZW47CisJWDUwOV9OQU1FICpzdWJqOworCWNoYXIgY25hbWVbMTAwMF07CisJaW50IGksIGZvdW5kOworCVNUQUNLX09GKEdFTkVSQUxfTkFNRSkgKnN1YmpfYWx0X25hbWVzOworCisJLyogdHJ5IHRoZSBETlMgc3ViamVjdEFsdE5hbWVzICovCisJZm91bmQgPSAwOworCWlmICgoc3Vial9hbHRfbmFtZXMgPSBYNTA5X2dldF9leHRfZDJpKGNlcnQsIE5JRF9zdWJqZWN0X2FsdF9uYW1lLCBOVUxMLCBOVUxMKSkpIHsKKwkJaW50IG51bV9zdWJqX2FsdF9uYW1lcyA9IHNrX0dFTkVSQUxfTkFNRV9udW0oc3Vial9hbHRfbmFtZXMpOworCQlmb3IgKGkgPSAwOyAhZm91bmQgJiYgaSA8IG51bV9zdWJqX2FsdF9uYW1lczsgaSsrKSB7CisJCQlHRU5FUkFMX05BTUUgKnN1YmpfYWx0X25hbWUgPSBza19HRU5FUkFMX05BTUVfdmFsdWUoc3Vial9hbHRfbmFtZXMsIGkpOworCQkJaWYgKHN1YmpfYWx0X25hbWUtPnR5cGUgPT0gR0VOX0ROUyAmJgorCQkJICAgIHN0cmxlbigoY29uc3QgY2hhciAqKXN1YmpfYWx0X25hbWUtPmQuaWE1LT5kYXRhKSA9PSAoc2l6ZV90KXN1YmpfYWx0X25hbWUtPmQuaWE1LT5sZW5ndGggJiYKKwkJCSAgICBob3N0X21hdGNoZXMoaG9zdG5hbWUsIChjb25zdCBjaGFyICopKHN1YmpfYWx0X25hbWUtPmQuaWE1LT5kYXRhKSkpCisJCQkJZm91bmQgPSAxOworCQl9CisJCXNrX0dFTkVSQUxfTkFNRV9wb3BfZnJlZShzdWJqX2FsdF9uYW1lcywgR0VORVJBTF9OQU1FX2ZyZWUpOworCX0KKwlpZiAoZm91bmQpCisJCXJldHVybiAwOworCisJLyogdHJ5IHRoZSBjb21tb24gbmFtZSAqLworCWlmICghKHN1YmogPSBYNTA5X2dldF9zdWJqZWN0X25hbWUoY2VydCkpKQorCQlyZXR1cm4gZXJyb3IoImNhbm5vdCBnZXQgY2VydGlmaWNhdGUgc3ViamVjdCIpOworCWlmICgobGVuID0gWDUwOV9OQU1FX2dldF90ZXh0X2J5X05JRChzdWJqLCBOSURfY29tbW9uTmFtZSwgY25hbWUsIHNpemVvZihjbmFtZSkpKSA8IDApCisJCXJldHVybiBlcnJvcigiY2Fubm90IGdldCBjZXJ0aWZpY2F0ZSBjb21tb24gbmFtZSIpOworCWlmIChzdHJsZW4oY25hbWUpID09IChzaXplX3QpbGVuICYmIGhvc3RfbWF0Y2hlcyhob3N0bmFtZSwgY25hbWUpKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gZXJyb3IoImNlcnRpZmljYXRlIG93bmVyICclcycgZG9lcyBub3QgbWF0Y2ggaG9zdG5hbWUgJyVzJyIsCisJCSAgICAgY25hbWUsIGhvc3RuYW1lKTsKK30KKworc3RhdGljIGludCBzc2xfc29ja2V0X2Nvbm5lY3Qoc3RydWN0IGltYXBfc29ja2V0ICpzb2NrLCBpbnQgdXNlX3Rsc19vbmx5LCBpbnQgdmVyaWZ5KQorewogI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDAwMDBMKQogCWNvbnN0IFNTTF9NRVRIT0QgKm1ldGg7CiAjZWxzZQpAQCAtMjc5LDYgKzI3Niw3IEBACiAjZW5kaWYKIAlTU0xfQ1RYICpjdHg7CiAJaW50IHJldDsKKwlYNTA5ICpjZXJ0OwogCiAJU1NMX2xpYnJhcnlfaW5pdCgpOwogCVNTTF9sb2FkX2Vycm9yX3N0cmluZ3MoKTsKQEAgLTMxNiwxNSArMzE0LDM1IEBACiAJCXJldHVybiAtMTsKIAl9CiAKKyNpZmRlZiBTU0xfQ1RSTF9TRVRfVExTRVhUX0hPU1ROQU1FCisJLyoKKwkgKiBTTkkgKFJGQzQzNjYpCisJICogT3BlblNTTCBkb2VzIG5vdCBkb2N1bWVudCB0aGlzIGZ1bmN0aW9uLCBidXQgdGhlIGltcGxlbWVudGF0aW9uCisJICogcmV0dXJucyAxIG9uIHN1Y2Nlc3MsIDAgb24gZmFpbHVyZSBhZnRlciBjYWxsaW5nIFNTTGVycigpLgorCSAqLworCXJldCA9IFNTTF9zZXRfdGxzZXh0X2hvc3RfbmFtZShzb2NrLT5zc2wsIHNlcnZlci5ob3N0KTsKKwlpZiAocmV0ICE9IDEpCisJCXdhcm5pbmcoIlNTTF9zZXRfdGxzZXh0X2hvc3RfbmFtZSglcykgZmFpbGVkLiIsIHNlcnZlci5ob3N0KTsKKyNlbmRpZgorCiAJcmV0ID0gU1NMX2Nvbm5lY3Qoc29jay0+c3NsKTsKIAlpZiAocmV0IDw9IDApIHsKIAkJc29ja2V0X3BlcnJvcigiU1NMX2Nvbm5lY3QiLCBzb2NrLCByZXQpOwogCQlyZXR1cm4gLTE7CiAJfQogCisJaWYgKHZlcmlmeSkgeworCQkvKiBtYWtlIHN1cmUgdGhlIGhvc3RuYW1lIG1hdGNoZXMgdGhhdCBvZiB0aGUgY2VydGlmaWNhdGUgKi8KKwkJY2VydCA9IFNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShzb2NrLT5zc2wpOworCQlpZiAoIWNlcnQpCisJCQlyZXR1cm4gZXJyb3IoInVuYWJsZSB0byBnZXQgcGVlciBjZXJ0aWZpY2F0ZS4iKTsKKwkJaWYgKHZlcmlmeV9ob3N0bmFtZShjZXJ0LCBzZXJ2ZXIuaG9zdCkgPCAwKQorCQkJcmV0dXJuIC0xOworCX0KKwogCXJldHVybiAwOwotI2VuZGlmCiB9CisjZW5kaWYKIAogc3RhdGljIGludCBzb2NrZXRfcmVhZChzdHJ1Y3QgaW1hcF9zb2NrZXQgKnNvY2ssIGNoYXIgKmJ1ZiwgaW50IGxlbikKIHsKQEAgLTQ3NywxNiArNDk1LDYgQEAKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCBmcmVlX2dlbmVyaWNfbWVzc2FnZXMoc3RydWN0IG1lc3NhZ2UgKm1zZ3MpCi17Ci0Jc3RydWN0IG1lc3NhZ2UgKnRtc2c7Ci0KLQlmb3IgKDsgbXNnczsgbXNncyA9IHRtc2cpIHsKLQkJdG1zZyA9IG1zZ3MtPm5leHQ7Ci0JCWZyZWUobXNncyk7Ci0JfQotfQotCiBzdGF0aWMgaW50IG5mc25wcmludGYoY2hhciAqYnVmLCBpbnQgYmxlbiwgY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAJaW50IHJldDsKQEAgLTYxNCwzNSArNjIyLDkgQEAKIAl9CiB9CiAKLXN0YXRpYyBpbnQgaXNfYXRvbShzdHJ1Y3QgaW1hcF9saXN0ICpsaXN0KQorc3RhdGljIGludCBza2lwX2ltYXBfbGlzdF9sKGNoYXIgKipzcCwgaW50IGxldmVsKQogewotCXJldHVybiBsaXN0ICYmIGxpc3QtPnZhbCAmJiBsaXN0LT52YWwgIT0gTklMICYmIGxpc3QtPnZhbCAhPSBMSVNUOwotfQotCi1zdGF0aWMgaW50IGlzX2xpc3Qoc3RydWN0IGltYXBfbGlzdCAqbGlzdCkKLXsKLQlyZXR1cm4gbGlzdCAmJiBsaXN0LT52YWwgPT0gTElTVDsKLX0KLQotc3RhdGljIHZvaWQgZnJlZV9saXN0KHN0cnVjdCBpbWFwX2xpc3QgKmxpc3QpCi17Ci0Jc3RydWN0IGltYXBfbGlzdCAqdG1wOwotCi0JZm9yICg7IGxpc3Q7IGxpc3QgPSB0bXApIHsKLQkJdG1wID0gbGlzdC0+bmV4dDsKLQkJaWYgKGlzX2xpc3QobGlzdCkpCi0JCQlmcmVlX2xpc3QobGlzdC0+Y2hpbGQpOwotCQllbHNlIGlmIChpc19hdG9tKGxpc3QpKQotCQkJZnJlZShsaXN0LT52YWwpOwotCQlmcmVlKGxpc3QpOwotCX0KLX0KLQotc3RhdGljIGludCBwYXJzZV9pbWFwX2xpc3RfbChzdHJ1Y3QgaW1hcCAqaW1hcCwgY2hhciAqKnNwLCBzdHJ1Y3QgaW1hcF9saXN0ICoqY3VycCwgaW50IGxldmVsKQotewotCXN0cnVjdCBpbWFwX2xpc3QgKmN1cjsKLQljaGFyICpzID0gKnNwLCAqcDsKLQlpbnQgbiwgYnl0ZXM7CisJY2hhciAqcyA9ICpzcDsKIAogCWZvciAoOzspIHsKIAkJd2hpbGUgKGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpKnMpKQpAQCAtNjUxLDY4ICs2MzMsMjMgQEAKIAkJCXMrKzsKIAkJCWJyZWFrOwogCQl9Ci0JCSpjdXJwID0gY3VyID0geG1hbGxvYyhzaXplb2YoKmN1cikpOwotCQljdXJwID0gJmN1ci0+bmV4dDsKLQkJY3VyLT52YWwgPSBOVUxMOyAvKiBmb3IgY2xlYW4gYmFpbCAqLwogCQlpZiAoKnMgPT0gJygnKSB7CiAJCQkvKiBzdWJsaXN0ICovCiAJCQlzKys7Ci0JCQljdXItPnZhbCA9IExJU1Q7Ci0JCQlpZiAocGFyc2VfaW1hcF9saXN0X2woaW1hcCwgJnMsICZjdXItPmNoaWxkLCBsZXZlbCArIDEpKQotCQkJCWdvdG8gYmFpbDsKLQkJfSBlbHNlIGlmIChpbWFwICYmICpzID09ICd7JykgewotCQkJLyogbGl0ZXJhbCAqLwotCQkJYnl0ZXMgPSBjdXItPmxlbiA9IHN0cnRvbChzICsgMSwgJnMsIDEwKTsKLQkJCWlmICgqcyAhPSAnfScpCi0JCQkJZ290byBiYWlsOwotCi0JCQlzID0gY3VyLT52YWwgPSB4bWFsbG9jKGN1ci0+bGVuKTsKLQotCQkJLyogZHVtcCB3aGF0cyBsZWZ0IG92ZXIgaW4gdGhlIGlucHV0IGJ1ZmZlciAqLwotCQkJbiA9IGltYXAtPmJ1Zi5ieXRlcyAtIGltYXAtPmJ1Zi5vZmZzZXQ7Ci0KLQkJCWlmIChuID4gYnl0ZXMpCi0JCQkJLyogdGhlIGVudGlyZSBtZXNzYWdlIGZpdCBpbiB0aGUgYnVmZmVyICovCi0JCQkJbiA9IGJ5dGVzOwotCi0JCQltZW1jcHkocywgaW1hcC0+YnVmLmJ1ZiArIGltYXAtPmJ1Zi5vZmZzZXQsIG4pOwotCQkJcyArPSBuOwotCQkJYnl0ZXMgLT0gbjsKLQotCQkJLyogbWFyayB0aGF0IHdlIHVzZWQgcGFydCBvZiB0aGUgYnVmZmVyICovCi0JCQlpbWFwLT5idWYub2Zmc2V0ICs9IG47Ci0KLQkJCS8qIG5vdyByZWFkIHRoZSByZXN0IG9mIHRoZSBtZXNzYWdlICovCi0JCQl3aGlsZSAoYnl0ZXMgPiAwKSB7Ci0JCQkJaWYgKChuID0gc29ja2V0X3JlYWQoJmltYXAtPmJ1Zi5zb2NrLCBzLCBieXRlcykpIDw9IDApCi0JCQkJCWdvdG8gYmFpbDsKLQkJCQlzICs9IG47Ci0JCQkJYnl0ZXMgLT0gbjsKLQkJCX0KLQotCQkJaWYgKGJ1ZmZlcl9nZXRzKCZpbWFwLT5idWYsICZzKSkKKwkJCWlmIChza2lwX2ltYXBfbGlzdF9sKCZzLCBsZXZlbCArIDEpKQogCQkJCWdvdG8gYmFpbDsKIAkJfSBlbHNlIGlmICgqcyA9PSAnIicpIHsKIAkJCS8qIHF1b3RlZCBzdHJpbmcgKi8KIAkJCXMrKzsKLQkJCXAgPSBzOwogCQkJZm9yICg7ICpzICE9ICciJzsgcysrKQogCQkJCWlmICghKnMpCiAJCQkJCWdvdG8gYmFpbDsKLQkJCWN1ci0+bGVuID0gcyAtIHA7CiAJCQlzKys7Ci0JCQljdXItPnZhbCA9IHhtZW1kdXB6KHAsIGN1ci0+bGVuKTsKIAkJfSBlbHNlIHsKIAkJCS8qIGF0b20gKi8KLQkJCXAgPSBzOwogCQkJZm9yICg7ICpzICYmICFpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSpzKTsgcysrKQogCQkJCWlmIChsZXZlbCAmJiAqcyA9PSAnKScpCiAJCQkJCWJyZWFrOwotCQkJY3VyLT5sZW4gPSBzIC0gcDsKLQkJCWlmIChjdXItPmxlbiA9PSAzICYmICFtZW1jbXAoIk5JTCIsIHAsIDMpKQotCQkJCWN1ci0+dmFsID0gTklMOwotCQkJZWxzZQotCQkJCWN1ci0+dmFsID0geG1lbWR1cHoocCwgY3VyLT5sZW4pOwogCQl9CiAKIAkJaWYgKCFsZXZlbCkKQEAgLTcyMSwyNyArNjU4LDE1IEBACiAJCQlnb3RvIGJhaWw7CiAJfQogCSpzcCA9IHM7Ci0JKmN1cnAgPSBOVUxMOwogCXJldHVybiAwOwogCiBiYWlsOgotCSpjdXJwID0gTlVMTDsKIAlyZXR1cm4gLTE7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaW1hcF9saXN0ICpwYXJzZV9pbWFwX2xpc3Qoc3RydWN0IGltYXAgKmltYXAsIGNoYXIgKipzcCkKK3N0YXRpYyB2b2lkIHNraXBfbGlzdChjaGFyICoqc3ApCiB7Ci0Jc3RydWN0IGltYXBfbGlzdCAqaGVhZDsKLQotCWlmICghcGFyc2VfaW1hcF9saXN0X2woaW1hcCwgc3AsICZoZWFkLCAwKSkKLQkJcmV0dXJuIGhlYWQ7Ci0JZnJlZV9saXN0KGhlYWQpOwotCXJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgc3RydWN0IGltYXBfbGlzdCAqcGFyc2VfbGlzdChjaGFyICoqc3ApCi17Ci0JcmV0dXJuIHBhcnNlX2ltYXBfbGlzdChOVUxMLCBzcCk7CisJc2tpcF9pbWFwX2xpc3RfbChzcCwgMCk7CiB9CiAKIHN0YXRpYyB2b2lkIHBhcnNlX2NhcGFiaWxpdHkoc3RydWN0IGltYXAgKmltYXAsIGNoYXIgKmNtZCkKQEAgLTc3Myw3ICs2OTgsNyBAQAogCSpwKysgPSAwOwogCWFyZyA9IG5leHRfYXJnKCZzKTsKIAlpZiAoIXN0cmNtcCgiVUlEVkFMSURJVFkiLCBhcmcpKSB7Ci0JCWlmICghKGFyZyA9IG5leHRfYXJnKCZzKSkgfHwgIShjdHgtPmdlbi51aWR2YWxpZGl0eSA9IGF0b2koYXJnKSkpIHsKKwkJaWYgKCEoYXJnID0gbmV4dF9hcmcoJnMpKSB8fCAhKGN0eC0+dWlkdmFsaWRpdHkgPSBhdG9pKGFyZykpKSB7CiAJCQlmcHJpbnRmKHN0ZGVyciwgIklNQVAgZXJyb3I6IG1hbGZvcm1lZCBVSURWQUxJRElUWSBzdGF0dXNcbiIpOwogCQkJcmV0dXJuIFJFU1BfQkFEOwogCQl9CkBAIC03OTEsNyArNzE2LDcgQEAKIAkJZm9yICg7IGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpKnApOyBwKyspOwogCQlmcHJpbnRmKHN0ZGVyciwgIioqKiBJTUFQIEFMRVJUICoqKiAlc1xuIiwgcCk7CiAJfSBlbHNlIGlmIChjYiAmJiBjYi0+Y3R4ICYmICFzdHJjbXAoIkFQUEVORFVJRCIsIGFyZykpIHsKLQkJaWYgKCEoYXJnID0gbmV4dF9hcmcoJnMpKSB8fCAhKGN0eC0+Z2VuLnVpZHZhbGlkaXR5ID0gYXRvaShhcmcpKSB8fAorCQlpZiAoIShhcmcgPSBuZXh0X2FyZygmcykpIHx8ICEoY3R4LT51aWR2YWxpZGl0eSA9IGF0b2koYXJnKSkgfHwKIAkJICAgICEoYXJnID0gbmV4dF9hcmcoJnMpKSB8fCAhKCooaW50ICopY2ItPmN0eCA9IGF0b2koYXJnKSkpIHsKIAkJCWZwcmludGYoc3RkZXJyLCAiSU1BUCBlcnJvcjogbWFsZm9ybWVkIEFQUEVORFVJRCBzdGF0dXNcbiIpOwogCQkJcmV0dXJuIFJFU1BfQkFEOwpAQCAtODIwLDIwICs3NDUsMjggQEAKIAkJCX0KIAogCQkJaWYgKCFzdHJjbXAoIk5BTUVTUEFDRSIsIGFyZykpIHsKLQkJCQlpbWFwLT5uc19wZXJzb25hbCA9IHBhcnNlX2xpc3QoJmNtZCk7Ci0JCQkJaW1hcC0+bnNfb3RoZXIgPSBwYXJzZV9saXN0KCZjbWQpOwotCQkJCWltYXAtPm5zX3NoYXJlZCA9IHBhcnNlX2xpc3QoJmNtZCk7CisJCQkJLyogcmZjMjM0MiBOQU1FU1BBQ0UgcmVzcG9uc2UuICovCisJCQkJc2tpcF9saXN0KCZjbWQpOyAvKiBQZXJzb25hbCBtYWlsYm94ZXMgKi8KKwkJCQlza2lwX2xpc3QoJmNtZCk7IC8qIE90aGVycycgbWFpbGJveGVzICovCisJCQkJc2tpcF9saXN0KCZjbWQpOyAvKiBTaGFyZWQgbWFpbGJveGVzICovCiAJCQl9IGVsc2UgaWYgKCFzdHJjbXAoIk9LIiwgYXJnKSB8fCAhc3RyY21wKCJCQUQiLCBhcmcpIHx8CiAJCQkJICAgIXN0cmNtcCgiTk8iLCBhcmcpIHx8ICFzdHJjbXAoIkJZRSIsIGFyZykpIHsKIAkJCQlpZiAoKHJlc3AgPSBwYXJzZV9yZXNwb25zZV9jb2RlKGN0eCwgTlVMTCwgY21kKSkgIT0gUkVTUF9PSykKIAkJCQkJcmV0dXJuIHJlc3A7Ci0JCQl9IGVsc2UgaWYgKCFzdHJjbXAoIkNBUEFCSUxJVFkiLCBhcmcpKQorCQkJfSBlbHNlIGlmICghc3RyY21wKCJDQVBBQklMSVRZIiwgYXJnKSkgewogCQkJCXBhcnNlX2NhcGFiaWxpdHkoaW1hcCwgY21kKTsKLQkJCWVsc2UgaWYgKChhcmcxID0gbmV4dF9hcmcoJmNtZCkpKSB7Ci0JCQkJaWYgKCFzdHJjbXAoIkVYSVNUUyIsIGFyZzEpKQotCQkJCQljdHgtPmdlbi5jb3VudCA9IGF0b2koYXJnKTsKLQkJCQllbHNlIGlmICghc3RyY21wKCJSRUNFTlQiLCBhcmcxKSkKLQkJCQkJY3R4LT5nZW4ucmVjZW50ID0gYXRvaShhcmcpOworCQkJfSBlbHNlIGlmICgoYXJnMSA9IG5leHRfYXJnKCZjbWQpKSkgeworCQkJCTsgLyoKKwkJCQkgICAqIFVuaGFuZGxlZCByZXNwb25zZS1kYXRhIHdpdGggYXQgbGVhc3QgdHdvIHdvcmRzLgorCQkJCSAgICogSWdub3JlIGl0LgorCQkJCSAgICoKKwkJCQkgICAqIE5FRURTV09SSzogUHJldmlvdXNseSB0aGlzIGNhc2UgaGFuZGxlZCAnPG51bT4gRVhJU1RTJworCQkJCSAgICogYW5kICc8bnVtPiBSRUNFTlQnIGJ1dCBhcyBhIHByb2JhYmx5LXVuaW50ZW5kZWQgc2lkZQorCQkJCSAgICogZWZmZWN0IGl0IGlnbm9yZXMgb3RoZXIgdW5yZWNvZ25pemVkIHR3by13b3JkCisJCQkJICAgKiByZXNwb25zZXMuICBpbWFwLXNlbmQgZG9lc24ndCBldmVyIHRyeSB0byByZWFkCisJCQkJICAgKiBtZXNzYWdlcyBvciBtYWlsYm94ZXMgdGhlc2UgZGF5cywgc28gY29uc2lkZXIKKwkJCQkgICAqIGVsaW1pbmF0aW5nIHRoaXMgY2FzZS4KKwkJCQkgICAqLwogCQkJfSBlbHNlIHsKIAkJCQlmcHJpbnRmKHN0ZGVyciwgIklNQVAgZXJyb3I6IHVuYWJsZSB0byBwYXJzZSB1bnRhZ2dlZCByZXNwb25zZVxuIik7CiAJCQkJcmV0dXJuIFJFU1BfQkFEOwpAQCAtOTM1LDE2ICs4NjgsMTIgQEAKIAkJaW1hcF9leGVjKGljdHgsIE5VTEwsICJMT0dPVVQiKTsKIAkJc29ja2V0X3NodXRkb3duKCZpbWFwLT5idWYuc29jayk7CiAJfQotCWZyZWVfbGlzdChpbWFwLT5uc19wZXJzb25hbCk7Ci0JZnJlZV9saXN0KGltYXAtPm5zX290aGVyKTsKLQlmcmVlX2xpc3QoaW1hcC0+bnNfc2hhcmVkKTsKIAlmcmVlKGltYXApOwogfQogCi1zdGF0aWMgdm9pZCBpbWFwX2Nsb3NlX3N0b3JlKHN0cnVjdCBzdG9yZSAqY3R4KQorc3RhdGljIHZvaWQgaW1hcF9jbG9zZV9zdG9yZShzdHJ1Y3QgaW1hcF9zdG9yZSAqY3R4KQogewotCWltYXBfY2xvc2Vfc2VydmVyKChzdHJ1Y3QgaW1hcF9zdG9yZSAqKWN0eCk7Ci0JZnJlZV9nZW5lcmljX21lc3NhZ2VzKGN0eC0+bXNncyk7CisJaW1hcF9jbG9zZV9zZXJ2ZXIoY3R4KTsKIAlmcmVlKGN0eCk7CiB9CiAKQEAgLTEwMjksNyArOTU4LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHN0cnVjdCBzdG9yZSAqaW1hcF9vcGVuX3N0b3JlKHN0cnVjdCBpbWFwX3NlcnZlcl9jb25mICpzcnZjKQorc3RhdGljIHN0cnVjdCBpbWFwX3N0b3JlICppbWFwX29wZW5fc3RvcmUoc3RydWN0IGltYXBfc2VydmVyX2NvbmYgKnNydmMpCiB7CiAJc3RydWN0IGltYXBfc3RvcmUgKmN0eDsKIAlzdHJ1Y3QgaW1hcCAqaW1hcDsKQEAgLTEyMzksMTczICsxMTY4LDExMyBAQAogCX0gLyogIXByZWF1dGggKi8KIAogCWN0eC0+cHJlZml4ID0gIiI7Ci0JY3R4LT50cmFzaG5jID0gMTsKLQlyZXR1cm4gKHN0cnVjdCBzdG9yZSAqKWN0eDsKKwlyZXR1cm4gY3R4OwogCiBiYWlsOgotCWltYXBfY2xvc2Vfc3RvcmUoJmN0eC0+Z2VuKTsKKwlpbWFwX2Nsb3NlX3N0b3JlKGN0eCk7CiAJcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBpbnQgaW1hcF9tYWtlX2ZsYWdzKGludCBmbGFncywgY2hhciAqYnVmKQotewotCWNvbnN0IGNoYXIgKnM7Ci0JdW5zaWduZWQgaSwgZDsKLQotCWZvciAoaSA9IGQgPSAwOyBpIDwgQVJSQVlfU0laRShGbGFncyk7IGkrKykKLQkJaWYgKGZsYWdzICYgKDEgPDwgaSkpIHsKLQkJCWJ1ZltkKytdID0gJyAnOwotCQkJYnVmW2QrK10gPSAnXFwnOwotCQkJZm9yIChzID0gRmxhZ3NbaV07ICpzOyBzKyspCi0JCQkJYnVmW2QrK10gPSAqczsKLQkJfQotCWJ1ZlswXSA9ICcoJzsKLQlidWZbZCsrXSA9ICcpJzsKLQlyZXR1cm4gZDsKLX0KLQotc3RhdGljIHZvaWQgbGZfdG9fY3JsZihzdHJ1Y3QgbXNnX2RhdGEgKm1zZykKKy8qCisgKiBJbnNlcnQgQ1IgY2hhcmFjdGVycyBhcyBuZWNlc3NhcnkgaW4gKm1zZyB0byBlbnN1cmUgdGhhdCBldmVyeSBMRgorICogY2hhcmFjdGVyIGluICptc2cgaXMgcHJlY2VkZWQgYnkgYSBDUi4KKyAqLworc3RhdGljIHZvaWQgbGZfdG9fY3JsZihzdHJ1Y3Qgc3RyYnVmICptc2cpCiB7CiAJY2hhciAqbmV3OwotCWludCBpLCBqLCBsZm51bSA9IDA7CisJc2l6ZV90IGksIGo7CisJY2hhciBsYXN0YzsKIAotCWlmIChtc2ctPmRhdGFbMF0gPT0gJ1xuJykKLQkJbGZudW0rKzsKLQlmb3IgKGkgPSAxOyBpIDwgbXNnLT5sZW47IGkrKykgewotCQlpZiAobXNnLT5kYXRhW2kgLSAxXSAhPSAnXHInICYmIG1zZy0+ZGF0YVtpXSA9PSAnXG4nKQotCQkJbGZudW0rKzsKKwkvKiBGaXJzdCBwYXNzOiB0YWxseSwgaW4gaiwgdGhlIHNpemUgb2YgdGhlIG5ldyBzdHJpbmc6ICovCisJZm9yIChpID0gaiA9IDAsIGxhc3RjID0gJ1wwJzsgaSA8IG1zZy0+bGVuOyBpKyspIHsKKwkJaWYgKG1zZy0+YnVmW2ldID09ICdcbicgJiYgbGFzdGMgIT0gJ1xyJykKKwkJCWorKzsgLyogYSBDUiB3aWxsIG5lZWQgdG8gYmUgYWRkZWQgaGVyZSAqLworCQlsYXN0YyA9IG1zZy0+YnVmW2ldOworCQlqKys7CiAJfQogCi0JbmV3ID0geG1hbGxvYyhtc2ctPmxlbiArIGxmbnVtKTsKLQlpZiAobXNnLT5kYXRhWzBdID09ICdcbicpIHsKLQkJbmV3WzBdID0gJ1xyJzsKLQkJbmV3WzFdID0gJ1xuJzsKLQkJaSA9IDE7Ci0JCWogPSAyOwotCX0gZWxzZSB7Ci0JCW5ld1swXSA9IG1zZy0+ZGF0YVswXTsKLQkJaSA9IDE7Ci0JCWogPSAxOwotCX0KLQlmb3IgKCA7IGkgPCBtc2ctPmxlbjsgaSsrKSB7Ci0JCWlmIChtc2ctPmRhdGFbaV0gIT0gJ1xuJykgewotCQkJbmV3W2orK10gPSBtc2ctPmRhdGFbaV07Ci0JCQljb250aW51ZTsKLQkJfQotCQlpZiAobXNnLT5kYXRhW2kgLSAxXSAhPSAnXHInKQorCW5ldyA9IHhtYWxsb2MoaiArIDEpOworCisJLyoKKwkgKiBTZWNvbmQgcGFzczogd3JpdGUgdGhlIG5ldyBzdHJpbmcuICBOb3RlIHRoYXQgdGhpcyBsb29wIGlzCisJICogb3RoZXJ3aXNlIGlkZW50aWNhbCB0byB0aGUgZmlyc3QgcGFzcy4KKwkgKi8KKwlmb3IgKGkgPSBqID0gMCwgbGFzdGMgPSAnXDAnOyBpIDwgbXNnLT5sZW47IGkrKykgeworCQlpZiAobXNnLT5idWZbaV0gPT0gJ1xuJyAmJiBsYXN0YyAhPSAnXHInKQogCQkJbmV3W2orK10gPSAnXHInOwotCQkvKiBvdGhlcndpc2UgaXQgYWxyZWFkeSBoYWQgQ1IgYmVmb3JlICovCi0JCW5ld1tqKytdID0gJ1xuJzsKKwkJbGFzdGMgPSBuZXdbaisrXSA9IG1zZy0+YnVmW2ldOwogCX0KLQltc2ctPmxlbiArPSBsZm51bTsKLQlmcmVlKG1zZy0+ZGF0YSk7Ci0JbXNnLT5kYXRhID0gbmV3OworCXN0cmJ1Zl9hdHRhY2gobXNnLCBuZXcsIGosIGogKyAxKTsKIH0KIAotc3RhdGljIGludCBpbWFwX3N0b3JlX21zZyhzdHJ1Y3Qgc3RvcmUgKmdjdHgsIHN0cnVjdCBtc2dfZGF0YSAqZGF0YSkKKy8qCisgKiBTdG9yZSBtc2cgdG8gSU1BUC4gIEFsc28gZGV0YWNoIGFuZCBmcmVlIHRoZSBkYXRhIGZyb20gbXNnLT5kYXRhLAorICogbGVhdmluZyBtc2ctPmRhdGEgZW1wdHkuCisgKi8KK3N0YXRpYyBpbnQgaW1hcF9zdG9yZV9tc2coc3RydWN0IGltYXBfc3RvcmUgKmN0eCwgc3RydWN0IHN0cmJ1ZiAqbXNnKQogewotCXN0cnVjdCBpbWFwX3N0b3JlICpjdHggPSAoc3RydWN0IGltYXBfc3RvcmUgKilnY3R4OwogCXN0cnVjdCBpbWFwICppbWFwID0gY3R4LT5pbWFwOwogCXN0cnVjdCBpbWFwX2NtZF9jYiBjYjsKIAljb25zdCBjaGFyICpwcmVmaXgsICpib3g7Ci0JaW50IHJldCwgZDsKLQljaGFyIGZsYWdzdHJbMTI4XTsKKwlpbnQgcmV0OwogCi0JbGZfdG9fY3JsZihkYXRhKTsKKwlsZl90b19jcmxmKG1zZyk7CiAJbWVtc2V0KCZjYiwgMCwgc2l6ZW9mKGNiKSk7CiAKLQljYi5kbGVuID0gZGF0YS0+bGVuOwotCWNiLmRhdGEgPSB4bWFsbG9jKGNiLmRsZW4pOwotCW1lbWNweShjYi5kYXRhLCBkYXRhLT5kYXRhLCBkYXRhLT5sZW4pOworCWNiLmRsZW4gPSBtc2ctPmxlbjsKKwljYi5kYXRhID0gc3RyYnVmX2RldGFjaChtc2csIE5VTEwpOwogCi0JZCA9IDA7Ci0JaWYgKGRhdGEtPmZsYWdzKSB7Ci0JCWQgPSBpbWFwX21ha2VfZmxhZ3MoZGF0YS0+ZmxhZ3MsIGZsYWdzdHIpOwotCQlmbGFnc3RyW2QrK10gPSAnICc7Ci0JfQotCWZsYWdzdHJbZF0gPSAwOwotCi0JYm94ID0gZ2N0eC0+bmFtZTsKKwlib3ggPSBjdHgtPm5hbWU7CiAJcHJlZml4ID0gIXN0cmNtcChib3gsICJJTkJPWCIpID8gIiIgOiBjdHgtPnByZWZpeDsKIAljYi5jcmVhdGUgPSAwOwotCXJldCA9IGltYXBfZXhlY19tKGN0eCwgJmNiLCAiQVBQRU5EIFwiJXMlc1wiICVzIiwgcHJlZml4LCBib3gsIGZsYWdzdHIpOworCXJldCA9IGltYXBfZXhlY19tKGN0eCwgJmNiLCAiQVBQRU5EIFwiJXMlc1wiICIsIHByZWZpeCwgYm94KTsKIAlpbWFwLT5jYXBzID0gaW1hcC0+cmNhcHM7CiAJaWYgKHJldCAhPSBEUlZfT0spCiAJCXJldHVybiByZXQ7Ci0JZ2N0eC0+Y291bnQrKzsKIAogCXJldHVybiBEUlZfT0s7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZV9odG1sX2NoYXJzKHN0cnVjdCBzdHJidWYgKnApCi17Ci0JaW50IGk7Ci0JZm9yIChpID0gMDsgaSA8IHAtPmxlbjsgaSsrKSB7Ci0JCWlmIChwLT5idWZbaV0gPT0gJyYnKQotCQkJc3RyYnVmX3NwbGljZShwLCBpLCAxLCAiJmFtcDsiLCA1KTsKLQkJaWYgKHAtPmJ1ZltpXSA9PSAnPCcpCi0JCQlzdHJidWZfc3BsaWNlKHAsIGksIDEsICImbHQ7IiwgNCk7Ci0JCWlmIChwLT5idWZbaV0gPT0gJz4nKQotCQkJc3RyYnVmX3NwbGljZShwLCBpLCAxLCAiJmd0OyIsIDQpOwotCQlpZiAocC0+YnVmW2ldID09ICciJykKLQkJCXN0cmJ1Zl9zcGxpY2UocCwgaSwgMSwgIiZxdW90OyIsIDYpOwotCX0KLX0KLXN0YXRpYyB2b2lkIHdyYXBfaW5faHRtbChzdHJ1Y3QgbXNnX2RhdGEgKm1zZykKK3N0YXRpYyB2b2lkIHdyYXBfaW5faHRtbChzdHJ1Y3Qgc3RyYnVmICptc2cpCiB7CiAJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKLQlzdHJ1Y3Qgc3RyYnVmICoqbGluZXM7Ci0Jc3RydWN0IHN0cmJ1ZiAqKnA7CiAJc3RhdGljIGNoYXIgKmNvbnRlbnRfdHlwZSA9ICJDb250ZW50LVR5cGU6IHRleHQvaHRtbDtcbiI7CiAJc3RhdGljIGNoYXIgKnByZV9vcGVuID0gIjxwcmU+XG4iOwogCXN0YXRpYyBjaGFyICpwcmVfY2xvc2UgPSAiPC9wcmU+XG4iOwotCWludCBhZGRlZF9oZWFkZXIgPSAwOworCWNvbnN0IGNoYXIgKmJvZHkgPSBzdHJzdHIobXNnLT5idWYsICJcblxuIik7CiAKLQlzdHJidWZfYXR0YWNoKCZidWYsIG1zZy0+ZGF0YSwgbXNnLT5sZW4sIG1zZy0+bGVuKTsKLQlsaW5lcyA9IHN0cmJ1Zl9zcGxpdCgmYnVmLCAnXG4nKTsKLQlzdHJidWZfcmVsZWFzZSgmYnVmKTsKLQlmb3IgKHAgPSBsaW5lczsgKnA7IHArKykgewotCQlpZiAoISBhZGRlZF9oZWFkZXIpIHsKLQkJCWlmICgoKnApLT5sZW4gPT0gMSAmJiAqKCgqcCktPmJ1ZikgPT0gJ1xuJykgewotCQkJCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgY29udGVudF90eXBlKTsKLQkJCQlzdHJidWZfYWRkYnVmKCZidWYsICpwKTsKLQkJCQlzdHJidWZfYWRkc3RyKCZidWYsIHByZV9vcGVuKTsKLQkJCQlhZGRlZF9oZWFkZXIgPSAxOwotCQkJCWNvbnRpbnVlOwotCQkJfQotCQl9Ci0JCWVsc2UKLQkJCWVuY29kZV9odG1sX2NoYXJzKCpwKTsKLQkJc3RyYnVmX2FkZGJ1ZigmYnVmLCAqcCk7Ci0JfQorCWlmICghYm9keSkKKwkJcmV0dXJuOyAvKiBIZWFkZXJzIGJ1dCBubyBib2R5OyBubyB3cmFwcGluZyBuZWVkZWQgKi8KKworCWJvZHkgKz0gMjsKKworCXN0cmJ1Zl9hZGQoJmJ1ZiwgbXNnLT5idWYsIGJvZHkgLSBtc2ctPmJ1ZiAtIDEpOworCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgY29udGVudF90eXBlKTsKKwlzdHJidWZfYWRkY2goJmJ1ZiwgJ1xuJyk7CisJc3RyYnVmX2FkZHN0cigmYnVmLCBwcmVfb3Blbik7CisJc3RyYnVmX2FkZHN0cl94bWxfcXVvdGVkKCZidWYsIGJvZHkpOwogCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgcHJlX2Nsb3NlKTsKLQlzdHJidWZfbGlzdF9mcmVlKGxpbmVzKTsKLQltc2ctPmxlbiAgPSBidWYubGVuOwotCW1zZy0+ZGF0YSA9IHN0cmJ1Zl9kZXRhY2goJmJ1ZiwgTlVMTCk7CisKKwlzdHJidWZfcmVsZWFzZShtc2cpOworCSptc2cgPSBidWY7CiB9CiAKICNkZWZpbmUgQ0hVTktTSVpFIDB4MTAwMAogCi1zdGF0aWMgaW50IHJlYWRfbWVzc2FnZShGSUxFICpmLCBzdHJ1Y3QgbXNnX2RhdGEgKm1zZykKK3N0YXRpYyBpbnQgcmVhZF9tZXNzYWdlKEZJTEUgKmYsIHN0cnVjdCBzdHJidWYgKmFsbF9tc2dzKQogewotCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7Ci0KLQltZW1zZXQobXNnLCAwLCBzaXplb2YoKm1zZykpOwotCiAJZG8gewotCQlpZiAoc3RyYnVmX2ZyZWFkKCZidWYsIENIVU5LU0laRSwgZikgPD0gMCkKKwkJaWYgKHN0cmJ1Zl9mcmVhZChhbGxfbXNncywgQ0hVTktTSVpFLCBmKSA8PSAwKQogCQkJYnJlYWs7CiAJfSB3aGlsZSAoIWZlb2YoZikpOwogCi0JbXNnLT5sZW4gID0gYnVmLmxlbjsKLQltc2ctPmRhdGEgPSBzdHJidWZfZGV0YWNoKCZidWYsIE5VTEwpOwotCXJldHVybiBtc2ctPmxlbjsKKwlyZXR1cm4gZmVycm9yKGYpID8gLTEgOiAwOwogfQogCi1zdGF0aWMgaW50IGNvdW50X21lc3NhZ2VzKHN0cnVjdCBtc2dfZGF0YSAqbXNnKQorc3RhdGljIGludCBjb3VudF9tZXNzYWdlcyhzdHJ1Y3Qgc3RyYnVmICphbGxfbXNncykKIHsKIAlpbnQgY291bnQgPSAwOwotCWNoYXIgKnAgPSBtc2ctPmRhdGE7CisJY2hhciAqcCA9IGFsbF9tc2dzLT5idWY7CiAKIAl3aGlsZSAoMSkgewogCQlpZiAoIXByZWZpeGNtcChwLCAiRnJvbSAiKSkgewpAQCAtMTQyNiwzNCArMTI5NSwzOSBAQAogCXJldHVybiBjb3VudDsKIH0KIAotc3RhdGljIGludCBzcGxpdF9tc2coc3RydWN0IG1zZ19kYXRhICphbGxfbXNncywgc3RydWN0IG1zZ19kYXRhICptc2csIGludCAqb2ZzKQorLyoKKyAqIENvcHkgdGhlIG5leHQgbWVzc2FnZSBmcm9tIGFsbF9tc2dzLCBzdGFydGluZyBhdCBvZmZzZXQgKm9mcywgdG8KKyAqIG1zZy4gIFVwZGF0ZSAqb2ZzIHRvIHRoZSBzdGFydCBvZiB0aGUgZm9sbG93aW5nIG1lc3NhZ2UuICBSZXR1cm4KKyAqIHRydWUgaWZmIGEgbWVzc2FnZSB3YXMgc3VjY2Vzc2Z1bGx5IGNvcGllZC4KKyAqLworc3RhdGljIGludCBzcGxpdF9tc2coc3RydWN0IHN0cmJ1ZiAqYWxsX21zZ3MsIHN0cnVjdCBzdHJidWYgKm1zZywgaW50ICpvZnMpCiB7CiAJY2hhciAqcCwgKmRhdGE7CisJc2l6ZV90IGxlbjsKIAotCW1lbXNldChtc2csIDAsIHNpemVvZiAqbXNnKTsKIAlpZiAoKm9mcyA+PSBhbGxfbXNncy0+bGVuKQogCQlyZXR1cm4gMDsKIAotCWRhdGEgPSAmYWxsX21zZ3MtPmRhdGFbKm9mc107Ci0JbXNnLT5sZW4gPSBhbGxfbXNncy0+bGVuIC0gKm9mczsKKwlkYXRhID0gJmFsbF9tc2dzLT5idWZbKm9mc107CisJbGVuID0gYWxsX21zZ3MtPmxlbiAtICpvZnM7CiAKLQlpZiAobXNnLT5sZW4gPCA1IHx8IHByZWZpeGNtcChkYXRhLCAiRnJvbSAiKSkKKwlpZiAobGVuIDwgNSB8fCBwcmVmaXhjbXAoZGF0YSwgIkZyb20gIikpCiAJCXJldHVybiAwOwogCiAJcCA9IHN0cmNocihkYXRhLCAnXG4nKTsKIAlpZiAocCkgewotCQlwID0gJnBbMV07Ci0JCW1zZy0+bGVuIC09IHAtZGF0YTsKLQkJKm9mcyArPSBwLWRhdGE7CisJCXArKzsKKwkJbGVuIC09IHAgLSBkYXRhOworCQkqb2ZzICs9IHAgLSBkYXRhOwogCQlkYXRhID0gcDsKIAl9CiAKIAlwID0gc3Ryc3RyKGRhdGEsICJcbkZyb20gIik7CiAJaWYgKHApCi0JCW1zZy0+bGVuID0gJnBbMV0gLSBkYXRhOworCQlsZW4gPSAmcFsxXSAtIGRhdGE7CiAKLQltc2ctPmRhdGEgPSB4bWVtZHVweihkYXRhLCBtc2ctPmxlbik7Ci0JKm9mcyArPSBtc2ctPmxlbjsKKwlzdHJidWZfYWRkKG1zZywgZGF0YSwgbGVuKTsKKwkqb2ZzICs9IGxlbjsKIAlyZXR1cm4gMTsKIH0KIApAQCAtMTUwNCw4ICsxMzc4LDkgQEAKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewotCXN0cnVjdCBtc2dfZGF0YSBhbGxfbXNncywgbXNnOwotCXN0cnVjdCBzdG9yZSAqY3R4ID0gTlVMTDsKKwlzdHJ1Y3Qgc3RyYnVmIGFsbF9tc2dzID0gU1RSQlVGX0lOSVQ7CisJc3RydWN0IHN0cmJ1ZiBtc2cgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3QgaW1hcF9zdG9yZSAqY3R4ID0gTlVMTDsKIAlpbnQgb2ZzID0gMDsKIAlpbnQgcjsKIAlpbnQgdG90YWwsIG4gPSAwOwpAQCAtMTUzNyw3ICsxNDEyLDEyIEBACiAJfQogCiAJLyogcmVhZCB0aGUgbWVzc2FnZXMgKi8KLQlpZiAoIXJlYWRfbWVzc2FnZShzdGRpbiwgJmFsbF9tc2dzKSkgeworCWlmIChyZWFkX21lc3NhZ2Uoc3RkaW4sICZhbGxfbXNncykpIHsKKwkJZnByaW50ZihzdGRlcnIsICJlcnJvciByZWFkaW5nIGlucHV0XG4iKTsKKwkJcmV0dXJuIDE7CisJfQorCisJaWYgKGFsbF9tc2dzLmxlbiA9PSAwKSB7CiAJCWZwcmludGYoc3RkZXJyLCAibm90aGluZyB0byBzZW5kXG4iKTsKIAkJcmV0dXJuIDE7CiAJfQpAQCAtMTU1OSw2ICsxNDM5LDcgQEAKIAljdHgtPm5hbWUgPSBpbWFwX2ZvbGRlcjsKIAl3aGlsZSAoMSkgewogCQl1bnNpZ25lZCBwZXJjZW50ID0gbiAqIDEwMCAvIHRvdGFsOworCiAJCWZwcmludGYoc3RkZXJyLCAiJTR1JSUgKCVkLyVkKSBkb25lXHIiLCBwZXJjZW50LCBuLCB0b3RhbCk7CiAJCWlmICghc3BsaXRfbXNnKCZhbGxfbXNncywgJm1zZywgJm9mcykpCiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL2t3c2V0LmMgYi9rd3NldC5jCmluZGV4IDUxYjJhYjYuLjU4MDA5OTkgMTAwNjQ0Ci0tLSBhL2t3c2V0LmMKKysrIGIva3dzZXQuYwpAQCAtMjYsNyArMjYsNyBAQAogICAgVGhlIGF1dGhvciBtYXkgYmUgcmVhY2hlZCAoRW1haWwpIGF0IHRoZSBhZGRyZXNzIG1pa2VAYWkubWl0LmVkdSwKICAgIG9yIChVUyBtYWlsKSBhcyBNaWtlIEhhZXJ0ZWwgYy9vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gKi8KIAotLyogVGhlIGFsZ29yaXRobSBpbXBsZW1lbnRlZCBieSB0aGVzZSByb3V0aW5lcyBiZWFycyBhIHN0YXJ0bGluZyByZXNlbWJsZW5jZQorLyogVGhlIGFsZ29yaXRobSBpbXBsZW1lbnRlZCBieSB0aGVzZSByb3V0aW5lcyBiZWFycyBhIHN0YXJ0bGluZyByZXNlbWJsYW5jZQogICAgdG8gb25lIGRpc2NvdmVyZWQgYnkgQmVhdGUgQ29tbWVudHotV2FsdGVyLCBhbHRob3VnaCBpdCBpcyBub3QgaWRlbnRpY2FsLgogICAgU2VlICJBIFN0cmluZyBNYXRjaGluZyBBbGdvcml0aG0gRmFzdCBvbiB0aGUgQXZlcmFnZSwiIFRlY2huaWNhbCBSZXBvcnQsCiAgICBJQk0tR2VybWFueSwgU2NpZW50aWZpYyBDZW50ZXIgSGVpZGVsYmVyZywgVGllcmdhcnRlbnN0cmFzc2UgMTUsIEQtNjkwMApAQCAtNDM1LDcgKzQzNSw3IEBACiAJICAvKiBVcGRhdGUgdGhlIGRlbHRhIHRhYmxlIGZvciB0aGUgZGVzY2VuZGVudHMgb2YgdGhpcyBub2RlLiAqLwogCSAgdHJlZWRlbHRhKGN1cnItPmxpbmtzLCBjdXJyLT5kZXB0aCwgZGVsdGEpOwogCi0JICAvKiBDb21wdXRlIHRoZSBmYWlsdXJlIGZ1bmN0aW9uIGZvciB0aGUgZGVjZW5kZW50cyBvZiB0aGlzIG5vZGUuICovCisJICAvKiBDb21wdXRlIHRoZSBmYWlsdXJlIGZ1bmN0aW9uIGZvciB0aGUgZGVzY2VuZGFudHMgb2YgdGhpcyBub2RlLiAqLwogCSAgdHJlZWZhaWxzKGN1cnItPmxpbmtzLCBjdXJyLT5mYWlsLCBrd3NldC0+dHJpZSk7CiAKIAkgIC8qIFVwZGF0ZSB0aGUgc2hpZnRzIGF0IGVhY2ggbm9kZSBpbiB0aGUgY3VycmVudCBub2RlJ3MgY2hhaW4KZGlmZiAtLWdpdCBhL2xsLW1lcmdlLmMgYi9sbC1tZXJnZS5jCmluZGV4IGYzZjc2OTIuLmZiNjFlYTYgMTAwNjQ0Ci0tLSBhL2xsLW1lcmdlLmMKKysrIGIvbGwtbWVyZ2UuYwpAQCAtMzUsNyArMzUsNyBAQAogICovCiBzdGF0aWMgaW50IGxsX2JpbmFyeV9tZXJnZShjb25zdCBzdHJ1Y3QgbGxfbWVyZ2VfZHJpdmVyICpkcnZfdW51c2VkLAogCQkJICAgbW1idWZmZXJfdCAqcmVzdWx0LAotCQkJICAgY29uc3QgY2hhciAqcGF0aF91bnVzZWQsCisJCQkgICBjb25zdCBjaGFyICpwYXRoLAogCQkJICAgbW1maWxlX3QgKm9yaWcsIGNvbnN0IGNoYXIgKm9yaWdfbmFtZSwKIAkJCSAgIG1tZmlsZV90ICpzcmMxLCBjb25zdCBjaGFyICpuYW1lMSwKIAkJCSAgIG1tZmlsZV90ICpzcmMyLCBjb25zdCBjaGFyICpuYW1lMiwKQEAgLTQ2LDE2ICs0NiwzNCBAQAogCWFzc2VydChvcHRzKTsKIAogCS8qCi0JICogVGhlIHRlbnRhdGl2ZSBtZXJnZSByZXN1bHQgaXMgIm91cnMiIGZvciB0aGUgZmluYWwgcm91bmQsCi0JICogb3IgY29tbW9uIGFuY2VzdG9yIGZvciBhbiBpbnRlcm5hbCBtZXJnZS4gIFN0aWxsIHJldHVybgotCSAqICJjb25mbGljdGVkIG1lcmdlIiBzdGF0dXMuCisJICogVGhlIHRlbnRhdGl2ZSBtZXJnZSByZXN1bHQgaXMgdGhlIG9yIGNvbW1vbiBhbmNlc3RvciBmb3IgYW4gaW50ZXJuYWwgbWVyZ2UuCiAJICovCi0Jc3RvbGVuID0gb3B0cy0+dmlydHVhbF9hbmNlc3RvciA/IG9yaWcgOiBzcmMxOworCWlmIChvcHRzLT52aXJ0dWFsX2FuY2VzdG9yKSB7CisJCXN0b2xlbiA9IG9yaWc7CisJfSBlbHNlIHsKKwkJc3dpdGNoIChvcHRzLT52YXJpYW50KSB7CisJCWRlZmF1bHQ6CisJCQl3YXJuaW5nKCJDYW5ub3QgbWVyZ2UgYmluYXJ5IGZpbGVzOiAlcyAoJXMgdnMuICVzKSIsCisJCQkJcGF0aCwgbmFtZTEsIG5hbWUyKTsKKwkJCS8qIGZhbGx0aHJ1ICovCisJCWNhc2UgWERMX01FUkdFX0ZBVk9SX09VUlM6CisJCQlzdG9sZW4gPSBzcmMxOworCQkJYnJlYWs7CisJCWNhc2UgWERMX01FUkdFX0ZBVk9SX1RIRUlSUzoKKwkJCXN0b2xlbiA9IHNyYzI7CisJCQlicmVhazsKKwkJfQorCX0KIAogCXJlc3VsdC0+cHRyID0gc3RvbGVuLT5wdHI7CiAJcmVzdWx0LT5zaXplID0gc3RvbGVuLT5zaXplOwogCXN0b2xlbi0+cHRyID0gTlVMTDsKLQlyZXR1cm4gMTsKKworCS8qCisJICogV2l0aCAtWHRoZWlycyBvciAtWG91cnMsIHdlIGhhdmUgY2xlYW5seSBtZXJnZWQ7CisJICogb3RoZXJ3aXNlIHdlIGdvdCBhIGNvbmZsaWN0LgorCSAqLworCXJldHVybiAob3B0cy0+dmFyaWFudCA/IDAgOiAxKTsKIH0KIAogc3RhdGljIGludCBsbF94ZGxfbWVyZ2UoY29uc3Qgc3RydWN0IGxsX21lcmdlX2RyaXZlciAqZHJ2X3VudXNlZCwKQEAgLTczLDggKzkxLDYgQEAKIAlpZiAoYnVmZmVyX2lzX2JpbmFyeShvcmlnLT5wdHIsIG9yaWctPnNpemUpIHx8CiAJICAgIGJ1ZmZlcl9pc19iaW5hcnkoc3JjMS0+cHRyLCBzcmMxLT5zaXplKSB8fAogCSAgICBidWZmZXJfaXNfYmluYXJ5KHNyYzItPnB0ciwgc3JjMi0+c2l6ZSkpIHsKLQkJd2FybmluZygiQ2Fubm90IG1lcmdlIGJpbmFyeSBmaWxlczogJXMgKCVzIHZzLiAlcykiLAotCQkJcGF0aCwgbmFtZTEsIG5hbWUyKTsKIAkJcmV0dXJuIGxsX2JpbmFyeV9tZXJnZShkcnZfdW51c2VkLCByZXN1bHQsCiAJCQkJICAgICAgIHBhdGgsCiAJCQkJICAgICAgIG9yaWcsIG9yaWdfbmFtZSwKQEAgLTIwNiw3ICsyMjIsNyBAQAogc3RhdGljIGludCByZWFkX21lcmdlX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKIHsKIAlzdHJ1Y3QgbGxfbWVyZ2VfZHJpdmVyICpmbjsKLQljb25zdCBjaGFyICplcCwgKm5hbWU7CisJY29uc3QgY2hhciAqa2V5LCAqbmFtZTsKIAlpbnQgbmFtZWxlbjsKIAogCWlmICghc3RyY21wKHZhciwgIm1lcmdlLmRlZmF1bHQiKSkgewpAQCAtMjIwLDE1ICsyMzYsMTMgQEAKIAkgKiBlc3BlY2lhbGx5LCB3ZSBkbyBub3Qgd2FudCB0byBsb29rIGF0IHZhcmlhYmxlcyBzdWNoIGFzCiAJICogIm1lcmdlLnN1bW1hcnkiLCAibWVyZ2UudG9vbCIsIGFuZCAibWVyZ2UudmVyYm9zaXR5Ii4KIAkgKi8KLQlpZiAocHJlZml4Y21wKHZhciwgIm1lcmdlLiIpIHx8IChlcCA9IHN0cnJjaHIodmFyLCAnLicpKSA9PSB2YXIgKyA1KQorCWlmIChwYXJzZV9jb25maWdfa2V5KHZhciwgIm1lcmdlIiwgJm5hbWUsICZuYW1lbGVuLCAma2V5KSA8IDAgfHwgIW5hbWUpCiAJCXJldHVybiAwOwogCiAJLyoKIAkgKiBGaW5kIGV4aXN0aW5nIG9uZSBhcyB3ZSBtaWdodCBiZSBwcm9jZXNzaW5nIG1lcmdlLjxuYW1lPi52YXIyCiAJICogYWZ0ZXIgc2VlaW5nIG1lcmdlLjxuYW1lPi52YXIxLgogCSAqLwotCW5hbWUgPSB2YXIgKyA2OwotCW5hbWVsZW4gPSBlcCAtIG5hbWU7CiAJZm9yIChmbiA9IGxsX3VzZXJfbWVyZ2U7IGZuOyBmbiA9IGZuLT5uZXh0KQogCQlpZiAoIXN0cm5jbXAoZm4tPm5hbWUsIG5hbWUsIG5hbWVsZW4pICYmICFmbi0+bmFtZVtuYW1lbGVuXSkKIAkJCWJyZWFrOwpAQCAtMjQwLDE2ICsyNTQsMTQgQEAKIAkJbGxfdXNlcl9tZXJnZV90YWlsID0gJihmbi0+bmV4dCk7CiAJfQogCi0JZXArKzsKLQotCWlmICghc3RyY21wKCJuYW1lIiwgZXApKSB7CisJaWYgKCFzdHJjbXAoIm5hbWUiLCBrZXkpKSB7CiAJCWlmICghdmFsdWUpCiAJCQlyZXR1cm4gZXJyb3IoIiVzOiBsYWNrcyB2YWx1ZSIsIHZhcik7CiAJCWZuLT5kZXNjcmlwdGlvbiA9IHhzdHJkdXAodmFsdWUpOwogCQlyZXR1cm4gMDsKIAl9CiAKLQlpZiAoIXN0cmNtcCgiZHJpdmVyIiwgZXApKSB7CisJaWYgKCFzdHJjbXAoImRyaXZlciIsIGtleSkpIHsKIAkJaWYgKCF2YWx1ZSkKIAkJCXJldHVybiBlcnJvcigiJXM6IGxhY2tzIHZhbHVlIiwgdmFyKTsKIAkJLyoKQEAgLTI3Myw3ICsyODUsNyBAQAogCQlyZXR1cm4gMDsKIAl9CiAKLQlpZiAoIXN0cmNtcCgicmVjdXJzaXZlIiwgZXApKSB7CisJaWYgKCFzdHJjbXAoInJlY3Vyc2l2ZSIsIGtleSkpIHsKIAkJaWYgKCF2YWx1ZSkKIAkJCXJldHVybiBlcnJvcigiJXM6IGxhY2tzIHZhbHVlIiwgdmFyKTsKIAkJZm4tPnJlY3Vyc2l2ZSA9IHhzdHJkdXAodmFsdWUpOwpkaWZmIC0tZ2l0IGEvbG9nLXRyZWUuYyBiL2xvZy10cmVlLmMKaW5kZXggYzg5NDkzMC4uMTk0NmU5YyAxMDA2NDQKLS0tIGEvbG9nLXRyZWUuYworKysgYi9sb2ctdHJlZS5jCkBAIC05LDYgKzksNyBAQAogI2luY2x1ZGUgInN0cmluZy1saXN0LmgiCiAjaW5jbHVkZSAiY29sb3IuaCIKICNpbmNsdWRlICJncGctaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAic2VxdWVuY2VyLmgiCiAKIHN0cnVjdCBkZWNvcmF0aW9uIG5hbWVfZGVjb3JhdGlvbiA9IHsgIm9iamVjdCBuYW1lcyIgfTsKIApAQCAtMTc0LDExOSArMTc1LDUyIEBACiAJfQogfQogCi12b2lkIHNob3dfZGVjb3JhdGlvbnMoc3RydWN0IHJldl9pbmZvICpvcHQsIHN0cnVjdCBjb21taXQgKmNvbW1pdCkKKy8qCisgKiBUaGUgY2FsbGVyIG1ha2VzIHN1cmUgdGhlcmUgaXMgbm8gZnVubnkgY29sb3IgYmVmb3JlCisgKiBjYWxsaW5nLiBmb3JtYXRfZGVjb3JhdGlvbnMgbWFrZXMgc3VyZSB0aGUgc2FtZSBhZnRlciByZXR1cm4uCisgKi8KK3ZvaWQgZm9ybWF0X2RlY29yYXRpb25zKHN0cnVjdCBzdHJidWYgKnNiLAorCQkJY29uc3Qgc3RydWN0IGNvbW1pdCAqY29tbWl0LAorCQkJaW50IHVzZV9jb2xvcikKIHsKIAljb25zdCBjaGFyICpwcmVmaXg7CiAJc3RydWN0IG5hbWVfZGVjb3JhdGlvbiAqZGVjb3JhdGlvbjsKIAljb25zdCBjaGFyICpjb2xvcl9jb21taXQgPQotCQlkaWZmX2dldF9jb2xvcl9vcHQoJm9wdC0+ZGlmZm9wdCwgRElGRl9DT01NSVQpOworCQlkaWZmX2dldF9jb2xvcih1c2VfY29sb3IsIERJRkZfQ09NTUlUKTsKIAljb25zdCBjaGFyICpjb2xvcl9yZXNldCA9Ci0JCWRlY29yYXRlX2dldF9jb2xvcl9vcHQoJm9wdC0+ZGlmZm9wdCwgREVDT1JBVElPTl9OT05FKTsKKwkJZGVjb3JhdGVfZ2V0X2NvbG9yKHVzZV9jb2xvciwgREVDT1JBVElPTl9OT05FKTsKIAotCWlmIChvcHQtPnNob3dfc291cmNlICYmIGNvbW1pdC0+dXRpbCkKLQkJcHJpbnRmKCJcdCVzIiwgKGNoYXIgKikgY29tbWl0LT51dGlsKTsKLQlpZiAoIW9wdC0+c2hvd19kZWNvcmF0aW9ucykKLQkJcmV0dXJuOwogCWRlY29yYXRpb24gPSBsb29rdXBfZGVjb3JhdGlvbigmbmFtZV9kZWNvcmF0aW9uLCAmY29tbWl0LT5vYmplY3QpOwogCWlmICghZGVjb3JhdGlvbikKIAkJcmV0dXJuOwogCXByZWZpeCA9ICIgKCI7CiAJd2hpbGUgKGRlY29yYXRpb24pIHsKLQkJcHJpbnRmKCIlcyIsIHByZWZpeCk7Ci0JCWZwdXRzKGRlY29yYXRlX2dldF9jb2xvcl9vcHQoJm9wdC0+ZGlmZm9wdCwgZGVjb3JhdGlvbi0+dHlwZSksCi0JCSAgICAgIHN0ZG91dCk7CisJCXN0cmJ1Zl9hZGRzdHIoc2IsIGNvbG9yX2NvbW1pdCk7CisJCXN0cmJ1Zl9hZGRzdHIoc2IsIHByZWZpeCk7CisJCXN0cmJ1Zl9hZGRzdHIoc2IsIGRlY29yYXRlX2dldF9jb2xvcih1c2VfY29sb3IsIGRlY29yYXRpb24tPnR5cGUpKTsKIAkJaWYgKGRlY29yYXRpb24tPnR5cGUgPT0gREVDT1JBVElPTl9SRUZfVEFHKQotCQkJZnB1dHMoInRhZzogIiwgc3Rkb3V0KTsKLQkJcHJpbnRmKCIlcyIsIGRlY29yYXRpb24tPm5hbWUpOwotCQlmcHV0cyhjb2xvcl9yZXNldCwgc3Rkb3V0KTsKLQkJZnB1dHMoY29sb3JfY29tbWl0LCBzdGRvdXQpOworCQkJc3RyYnVmX2FkZHN0cihzYiwgInRhZzogIik7CisJCXN0cmJ1Zl9hZGRzdHIoc2IsIGRlY29yYXRpb24tPm5hbWUpOworCQlzdHJidWZfYWRkc3RyKHNiLCBjb2xvcl9yZXNldCk7CiAJCXByZWZpeCA9ICIsICI7CiAJCWRlY29yYXRpb24gPSBkZWNvcmF0aW9uLT5uZXh0OwogCX0KLQlwdXRjaGFyKCcpJyk7CisJc3RyYnVmX2FkZHN0cihzYiwgY29sb3JfY29tbWl0KTsKKwlzdHJidWZfYWRkY2goc2IsICcpJyk7CisJc3RyYnVmX2FkZHN0cihzYiwgY29sb3JfcmVzZXQpOwogfQogCi0vKgotICogU2VhcmNoIGZvciAiXlstQS1aYS16XSs6IFteQF0rQCIgcGF0dGVybi4gSXQgdXN1YWxseSBtYXRjaGVzCi0gKiBTaWduZWQtb2ZmLWJ5OiBhbmQgQWNrZWQtYnk6IGxpbmVzLgotICovCi1zdGF0aWMgaW50IGRldGVjdF9hbnlfc2lnbm9mZihjaGFyICpsZXR0ZXIsIGludCBzaXplKQordm9pZCBzaG93X2RlY29yYXRpb25zKHN0cnVjdCByZXZfaW5mbyAqb3B0LCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCiB7Ci0JY2hhciAqY3A7Ci0JaW50IHNlZW5fY29sb24gPSAwOwotCWludCBzZWVuX2F0ID0gMDsKLQlpbnQgc2Vlbl9uYW1lID0gMDsKLQlpbnQgc2Vlbl9oZWFkID0gMDsKKwlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CiAKLQljcCA9IGxldHRlciArIHNpemU7Ci0Jd2hpbGUgKGxldHRlciA8PSAtLWNwICYmICpjcCA9PSAnXG4nKQotCQljb250aW51ZTsKLQotCXdoaWxlIChsZXR0ZXIgPD0gY3ApIHsKLQkJY2hhciBjaCA9ICpjcC0tOwotCQlpZiAoY2ggPT0gJ1xuJykKLQkJCWJyZWFrOwotCi0JCWlmICghc2Vlbl9hdCkgewotCQkJaWYgKGNoID09ICdAJykKLQkJCQlzZWVuX2F0ID0gMTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0JCWlmICghc2Vlbl9jb2xvbikgewotCQkJaWYgKGNoID09ICdAJykKLQkJCQlyZXR1cm4gMDsKLQkJCWVsc2UgaWYgKGNoID09ICc6JykKLQkJCQlzZWVuX2NvbG9uID0gMTsKLQkJCWVsc2UKLQkJCQlzZWVuX25hbWUgPSAxOwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKCgnQScgPD0gY2ggJiYgY2ggPD0gJ1onKSB8fAotCQkgICAgKCdhJyA8PSBjaCAmJiBjaCA8PSAneicpIHx8Ci0JCSAgICBjaCA9PSAnLScpIHsKLQkJCXNlZW5faGVhZCA9IDE7Ci0JCQljb250aW51ZTsKLQkJfQotCQkvKiBubyBlbXB0eSBsYXN0IGxpbmUgZG9lc24ndCBtYXRjaCAqLwotCQlyZXR1cm4gMDsKLQl9Ci0JcmV0dXJuIHNlZW5faGVhZCAmJiBzZWVuX25hbWU7Ci19Ci0KLXN0YXRpYyB2b2lkIGFwcGVuZF9zaWdub2ZmKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpzaWdub2ZmKQotewotCXN0YXRpYyBjb25zdCBjaGFyIHNpZ25lZF9vZmZfYnlbXSA9ICJTaWduZWQtb2ZmLWJ5OiAiOwotCXNpemVfdCBzaWdub2ZmX2xlbiA9IHN0cmxlbihzaWdub2ZmKTsKLQlpbnQgaGFzX3NpZ25vZmYgPSAwOwotCWNoYXIgKmNwOwotCi0JY3AgPSBzYi0+YnVmOwotCi0JLyogRmlyc3Qgc2VlIGlmIHdlIGFscmVhZHkgaGF2ZSB0aGUgc2lnbi1vZmYgYnkgdGhlIHNpZ25lciAqLwotCXdoaWxlICgoY3AgPSBzdHJzdHIoY3AsIHNpZ25lZF9vZmZfYnkpKSkgewotCi0JCWhhc19zaWdub2ZmID0gMTsKLQotCQljcCArPSBzdHJsZW4oc2lnbmVkX29mZl9ieSk7Ci0JCWlmIChjcCArIHNpZ25vZmZfbGVuID49IHNiLT5idWYgKyBzYi0+bGVuKQotCQkJYnJlYWs7Ci0JCWlmIChzdHJuY21wKGNwLCBzaWdub2ZmLCBzaWdub2ZmX2xlbikpCi0JCQljb250aW51ZTsKLQkJaWYgKCFpc3NwYWNlKGNwW3NpZ25vZmZfbGVuXSkpCi0JCQljb250aW51ZTsKLQkJLyogd2UgYWxyZWFkeSBoYXZlIGhpbSAqLworCWlmIChvcHQtPnNob3dfc291cmNlICYmIGNvbW1pdC0+dXRpbCkKKwkJcHJpbnRmKCJcdCVzIiwgKGNoYXIgKikgY29tbWl0LT51dGlsKTsKKwlpZiAoIW9wdC0+c2hvd19kZWNvcmF0aW9ucykKIAkJcmV0dXJuOwotCX0KLQotCWlmICghaGFzX3NpZ25vZmYpCi0JCWhhc19zaWdub2ZmID0gZGV0ZWN0X2FueV9zaWdub2ZmKHNiLT5idWYsIHNiLT5sZW4pOwotCi0JaWYgKCFoYXNfc2lnbm9mZikKLQkJc3RyYnVmX2FkZGNoKHNiLCAnXG4nKTsKLQotCXN0cmJ1Zl9hZGRzdHIoc2IsIHNpZ25lZF9vZmZfYnkpOwotCXN0cmJ1Zl9hZGQoc2IsIHNpZ25vZmYsIHNpZ25vZmZfbGVuKTsKLQlzdHJidWZfYWRkY2goc2IsICdcbicpOworCWZvcm1hdF9kZWNvcmF0aW9ucygmc2IsIGNvbW1pdCwgb3B0LT5kaWZmb3B0LnVzZV9jb2xvcik7CisJZnB1dHMoc2IuYnVmLCBzdGRvdXQpOworCXN0cmJ1Zl9yZWxlYXNlKCZzYik7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgZGlnaXRzX2luX251bWJlcih1bnNpZ25lZCBpbnQgbnVtYmVyKQpAQCAtMjk5LDI2ICsyMzMsMzQgQEAKIAlyZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIGdldF9wYXRjaF9maWxlbmFtZShzdHJ1Y3QgY29tbWl0ICpjb21taXQsIGNvbnN0IGNoYXIgKnN1YmplY3QsIGludCBuciwKLQkJCWNvbnN0IGNoYXIgKnN1ZmZpeCwgc3RydWN0IHN0cmJ1ZiAqYnVmKQordm9pZCBmbXRfb3V0cHV0X3N1YmplY3Qoc3RydWN0IHN0cmJ1ZiAqZmlsZW5hbWUsCisJCQljb25zdCBjaGFyICpzdWJqZWN0LAorCQkJc3RydWN0IHJldl9pbmZvICppbmZvKQogewotCWludCBzdWZmaXhfbGVuID0gc3RybGVuKHN1ZmZpeCkgKyAxOwotCWludCBzdGFydF9sZW4gPSBidWYtPmxlbjsKKwljb25zdCBjaGFyICpzdWZmaXggPSBpbmZvLT5wYXRjaF9zdWZmaXg7CisJaW50IG5yID0gaW5mby0+bnI7CisJaW50IHN0YXJ0X2xlbiA9IGZpbGVuYW1lLT5sZW47CisJaW50IG1heF9sZW4gPSBzdGFydF9sZW4gKyBGT1JNQVRfUEFUQ0hfTkFNRV9NQVggLSAoc3RybGVuKHN1ZmZpeCkgKyAxKTsKIAotCXN0cmJ1Zl9hZGRmKGJ1ZiwgY29tbWl0IHx8IHN1YmplY3QgPyAiJTA0ZC0iIDogIiVkIiwgbnIpOwotCWlmIChjb21taXQgfHwgc3ViamVjdCkgewotCQlpbnQgbWF4X2xlbiA9IHN0YXJ0X2xlbiArIEZPUk1BVF9QQVRDSF9OQU1FX01BWCAtIHN1ZmZpeF9sZW47Ci0JCXN0cnVjdCBwcmV0dHlfcHJpbnRfY29udGV4dCBjdHggPSB7MH07CisJaWYgKDAgPCBpbmZvLT5yZXJvbGxfY291bnQpCisJCXN0cmJ1Zl9hZGRmKGZpbGVuYW1lLCAidiVkLSIsIGluZm8tPnJlcm9sbF9jb3VudCk7CisJc3RyYnVmX2FkZGYoZmlsZW5hbWUsICIlMDRkLSVzIiwgbnIsIHN1YmplY3QpOwogCi0JCWlmIChzdWJqZWN0KQotCQkJc3RyYnVmX2FkZHN0cihidWYsIHN1YmplY3QpOwotCQllbHNlIGlmIChjb21taXQpCi0JCQlmb3JtYXRfY29tbWl0X21lc3NhZ2UoY29tbWl0LCAiJWYiLCBidWYsICZjdHgpOworCWlmIChtYXhfbGVuIDwgZmlsZW5hbWUtPmxlbikKKwkJc3RyYnVmX3NldGxlbihmaWxlbmFtZSwgbWF4X2xlbik7CisJc3RyYnVmX2FkZHN0cihmaWxlbmFtZSwgc3VmZml4KTsKK30KIAotCQlpZiAobWF4X2xlbiA8IGJ1Zi0+bGVuKQotCQkJc3RyYnVmX3NldGxlbihidWYsIG1heF9sZW4pOwotCQlzdHJidWZfYWRkc3RyKGJ1Ziwgc3VmZml4KTsKLQl9Cit2b2lkIGZtdF9vdXRwdXRfY29tbWl0KHN0cnVjdCBzdHJidWYgKmZpbGVuYW1lLAorCQkgICAgICAgc3RydWN0IGNvbW1pdCAqY29tbWl0LAorCQkgICAgICAgc3RydWN0IHJldl9pbmZvICppbmZvKQoreworCXN0cnVjdCBwcmV0dHlfcHJpbnRfY29udGV4dCBjdHggPSB7MH07CisJc3RydWN0IHN0cmJ1ZiBzdWJqZWN0ID0gU1RSQlVGX0lOSVQ7CisKKwlmb3JtYXRfY29tbWl0X21lc3NhZ2UoY29tbWl0LCAiJWYiLCAmc3ViamVjdCwgJmN0eCk7CisJZm10X291dHB1dF9zdWJqZWN0KGZpbGVuYW1lLCBzdWJqZWN0LmJ1ZiwgaW5mbyk7CisJc3RyYnVmX3JlbGVhc2UoJnN1YmplY3QpOwogfQogCiB2b2lkIGxvZ193cml0ZV9lbWFpbF9oZWFkZXJzKHN0cnVjdCByZXZfaW5mbyAqb3B0LCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsCkBAIC0zODcsOCArMzI5LDEwIEBACiAJCQkgbWltZV9ib3VuZGFyeV9sZWFkZXIsIG9wdC0+bWltZV9ib3VuZGFyeSk7CiAJCWV4dHJhX2hlYWRlcnMgPSBzdWJqZWN0X2J1ZmZlcjsKIAotCQlnZXRfcGF0Y2hfZmlsZW5hbWUob3B0LT5udW1iZXJlZF9maWxlcyA/IE5VTEwgOiBjb21taXQsIE5VTEwsCi0JCQkJICAgb3B0LT5uciwgb3B0LT5wYXRjaF9zdWZmaXgsICZmaWxlbmFtZSk7CisJCWlmIChvcHQtPm51bWJlcmVkX2ZpbGVzKQorCQkJc3RyYnVmX2FkZGYoJmZpbGVuYW1lLCAiJWQiLCBvcHQtPm5yKTsKKwkJZWxzZQorCQkJZm10X291dHB1dF9jb21taXQoJmZpbGVuYW1lLCBjb21taXQsIG9wdCk7CiAJCXNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikgLSAxLAogCQkJICJcbi0tJXMlc1xuIgogCQkJICJDb250ZW50LVR5cGU6IHRleHQveC1wYXRjaDsiCkBAIC00MzQsNyArMzc4LDcgQEAKIAogCXN0YXR1cyA9IHZlcmlmeV9zaWduZWRfYnVmZmVyKHBheWxvYWQuYnVmLCBwYXlsb2FkLmxlbiwKIAkJCQkgICAgICBzaWduYXR1cmUuYnVmLCBzaWduYXR1cmUubGVuLAotCQkJCSAgICAgICZncGdfb3V0cHV0KTsKKwkJCQkgICAgICAmZ3BnX291dHB1dCwgTlVMTCk7CiAJaWYgKHN0YXR1cyAmJiAhZ3BnX291dHB1dC5sZW4pCiAJCXN0cmJ1Zl9hZGRzdHIoJmdwZ19vdXRwdXQsICJObyBzaWduYXR1cmVcbiIpOwogCkBAIC00OTgsMjAgKzQ0MiwxNyBAQAogCWdwZ19tZXNzYWdlX29mZnNldCA9IHZlcmlmeV9tZXNzYWdlLmxlbjsKIAogCXBheWxvYWRfc2l6ZSA9IHBhcnNlX3NpZ25hdHVyZShleHRyYS0+dmFsdWUsIGV4dHJhLT5sZW4pOwotCWlmICgoZXh0cmEtPmxlbiA8PSBwYXlsb2FkX3NpemUpIHx8Ci0JICAgICh2ZXJpZnlfc2lnbmVkX2J1ZmZlcihleHRyYS0+dmFsdWUsIHBheWxvYWRfc2l6ZSwKLQkJCQkgIGV4dHJhLT52YWx1ZSArIHBheWxvYWRfc2l6ZSwKLQkJCQkgIGV4dHJhLT5sZW4gLSBwYXlsb2FkX3NpemUsCi0JCQkJICAmdmVyaWZ5X21lc3NhZ2UpICYmCi0JICAgICB2ZXJpZnlfbWVzc2FnZS5sZW4gPD0gZ3BnX21lc3NhZ2Vfb2Zmc2V0KSkgewotCQlzdHJidWZfYWRkc3RyKCZ2ZXJpZnlfbWVzc2FnZSwgIk5vIHNpZ25hdHVyZVxuIik7Ci0JCXN0YXR1cyA9IC0xOwotCX0KLQllbHNlIGlmIChzdHJzdHIodmVyaWZ5X21lc3NhZ2UuYnVmICsgZ3BnX21lc3NhZ2Vfb2Zmc2V0LAotCQkJIjogR29vZCBzaWduYXR1cmUgZnJvbSAiKSkKLQkJc3RhdHVzID0gMDsKLQllbHNlCi0JCXN0YXR1cyA9IC0xOworCXN0YXR1cyA9IC0xOworCWlmIChleHRyYS0+bGVuID4gcGF5bG9hZF9zaXplKQorCQlpZiAodmVyaWZ5X3NpZ25lZF9idWZmZXIoZXh0cmEtPnZhbHVlLCBwYXlsb2FkX3NpemUsCisJCQkJCSBleHRyYS0+dmFsdWUgKyBwYXlsb2FkX3NpemUsCisJCQkJCSBleHRyYS0+bGVuIC0gcGF5bG9hZF9zaXplLAorCQkJCQkgJnZlcmlmeV9tZXNzYWdlLCBOVUxMKSkgeworCQkJaWYgKHZlcmlmeV9tZXNzYWdlLmxlbiA8PSBncGdfbWVzc2FnZV9vZmZzZXQpCisJCQkJc3RyYnVmX2FkZHN0cigmdmVyaWZ5X21lc3NhZ2UsICJObyBzaWduYXR1cmVcbiIpOworCQkJZWxzZQorCQkJCXN0YXR1cyA9IDA7CisJCX0KIAogCXNob3dfc2lnX2xpbmVzKG9wdCwgc3RhdHVzLCB2ZXJpZnlfbWVzc2FnZS5idWYpOwogCXN0cmJ1Zl9yZWxlYXNlKCZ2ZXJpZnlfbWVzc2FnZSk7CkBAIC01NDAsNyArNDgxLDYgQEAKIAlzdHJ1Y3QgcHJldHR5X3ByaW50X2NvbnRleHQgY3R4ID0gezB9OwogCiAJb3B0LT5sb2dpbmZvID0gTlVMTDsKLQljdHguc2hvd19ub3RlcyA9IG9wdC0+c2hvd19ub3RlczsKIAlpZiAoIW9wdC0+dmVyYm9zZV9oZWFkZXIpIHsKIAkJZ3JhcGhfc2hvd19jb21taXQob3B0LT5ncmFwaCk7CiAKQEAgLTYxNiw4ICs1NTYsOCBAQAogCQkJcHJpbnRmKCIgKGZyb20gJXMpIiwKIAkJCSAgICAgICBmaW5kX3VuaXF1ZV9hYmJyZXYocGFyZW50LT5vYmplY3Quc2hhMSwKIAkJCQkJCSAgYWJicmV2X2NvbW1pdCkpOworCQlmcHV0cyhkaWZmX2dldF9jb2xvcl9vcHQoJm9wdC0+ZGlmZm9wdCwgRElGRl9SRVNFVCksIHN0ZG91dCk7CiAJCXNob3dfZGVjb3JhdGlvbnMob3B0LCBjb21taXQpOwotCQlwcmludGYoIiVzIiwgZGlmZl9nZXRfY29sb3Jfb3B0KCZvcHQtPmRpZmZvcHQsIERJRkZfUkVTRVQpKTsKIAkJaWYgKG9wdC0+Y29tbWl0X2Zvcm1hdCA9PSBDTUlUX0ZNVF9PTkVMSU5FKSB7CiAJCQlwdXRjaGFyKCcgJyk7CiAJCX0gZWxzZSB7CkBAIC02NDgsMTEgKzU4OCwyNSBAQAogCWlmICghY29tbWl0LT5idWZmZXIpCiAJCXJldHVybjsKIAorCWlmIChvcHQtPnNob3dfbm90ZXMpIHsKKwkJaW50IHJhdzsKKwkJc3RydWN0IHN0cmJ1ZiBub3RlYnVmID0gU1RSQlVGX0lOSVQ7CisKKwkJcmF3ID0gKG9wdC0+Y29tbWl0X2Zvcm1hdCA9PSBDTUlUX0ZNVF9VU0VSRk9STUFUKTsKKwkJZm9ybWF0X2Rpc3BsYXlfbm90ZXMoY29tbWl0LT5vYmplY3Quc2hhMSwgJm5vdGVidWYsCisJCQkJICAgICBnZXRfbG9nX291dHB1dF9lbmNvZGluZygpLCByYXcpOworCQljdHgubm90ZXNfbWVzc2FnZSA9IG5vdGVidWYubGVuCisJCQk/IHN0cmJ1Zl9kZXRhY2goJm5vdGVidWYsIE5VTEwpCisJCQk6IHhjYWxsb2MoMSwgMSk7CisJfQorCiAJLyoKIAkgKiBBbmQgdGhlbiB0aGUgcHJldHR5LXByaW50ZWQgbWVzc2FnZSBpdHNlbGYKIAkgKi8KLQlpZiAoY3R4Lm5lZWRfOGJpdF9jdGUgPj0gMCkKLQkJY3R4Lm5lZWRfOGJpdF9jdGUgPSBoYXNfbm9uX2FzY2lpKG9wdC0+YWRkX3NpZ25vZmYpOworCWlmIChjdHgubmVlZF84Yml0X2N0ZSA+PSAwICYmIG9wdC0+YWRkX3NpZ25vZmYpCisJCWN0eC5uZWVkXzhiaXRfY3RlID0KKwkJCWhhc19ub25fYXNjaWkoZm10X25hbWUoZ2V0ZW52KCJHSVRfQ09NTUlUVEVSX05BTUUiKSwKKwkJCQkJICAgICAgIGdldGVudigiR0lUX0NPTU1JVFRFUl9FTUFJTCIpKSk7CiAJY3R4LmRhdGVfbW9kZSA9IG9wdC0+ZGF0ZV9tb2RlOwogCWN0eC5kYXRlX21vZGVfZXhwbGljaXQgPSBvcHQtPmRhdGVfbW9kZV9leHBsaWNpdDsKIAljdHguYWJicmV2ID0gb3B0LT5kaWZmb3B0LmFiYnJldjsKQEAgLTY2MCwxMCArNjE0LDIyIEBACiAJY3R4LnByZXNlcnZlX3N1YmplY3QgPSBvcHQtPnByZXNlcnZlX3N1YmplY3Q7CiAJY3R4LnJlZmxvZ19pbmZvID0gb3B0LT5yZWZsb2dfaW5mbzsKIAljdHguZm10ID0gb3B0LT5jb21taXRfZm9ybWF0OworCWN0eC5tYWlsbWFwID0gb3B0LT5tYWlsbWFwOworCWN0eC5jb2xvciA9IG9wdC0+ZGlmZm9wdC51c2VfY29sb3I7CiAJcHJldHR5X3ByaW50X2NvbW1pdCgmY3R4LCBjb21taXQsICZtc2didWYpOwogCiAJaWYgKG9wdC0+YWRkX3NpZ25vZmYpCi0JCWFwcGVuZF9zaWdub2ZmKCZtc2didWYsIG9wdC0+YWRkX3NpZ25vZmYpOworCQlhcHBlbmRfc2lnbm9mZigmbXNnYnVmLCAwLCBBUFBFTkRfU0lHTk9GRl9ERURVUCk7CisKKwlpZiAoKGN0eC5mbXQgIT0gQ01JVF9GTVRfVVNFUkZPUk1BVCkgJiYKKwkgICAgY3R4Lm5vdGVzX21lc3NhZ2UgJiYgKmN0eC5ub3Rlc19tZXNzYWdlKSB7CisJCWlmIChjdHguZm10ID09IENNSVRfRk1UX0VNQUlMKSB7CisJCQlzdHJidWZfYWRkc3RyKCZtc2didWYsICItLS1cbiIpOworCQkJb3B0LT5zaG93bl9kYXNoZXMgPSAxOworCQl9CisJCXN0cmJ1Zl9hZGRzdHIoJm1zZ2J1ZiwgY3R4Lm5vdGVzX21lc3NhZ2UpOworCX0KKwogCWlmIChvcHQtPnNob3dfbG9nX3NpemUpIHsKIAkJcHJpbnRmKCJsb2cgc2l6ZSAlaVxuIiwgKGludCltc2didWYubGVuKTsKIAkJZ3JhcGhfc2hvd19vbmVsaW5lKG9wdC0+Z3JhcGgpOwpAQCAtNjg5LDEwICs2NTUsMTIgQEAKIAl9CiAKIAlzdHJidWZfcmVsZWFzZSgmbXNnYnVmKTsKKwlmcmVlKGN0eC5ub3Rlc19tZXNzYWdlKTsKIH0KIAogaW50IGxvZ190cmVlX2RpZmZfZmx1c2goc3RydWN0IHJldl9pbmZvICpvcHQpCiB7CisJb3B0LT5zaG93bl9kYXNoZXMgPSAwOwogCWRpZmZjb3JlX3N0ZCgmb3B0LT5kaWZmb3B0KTsKIAogCWlmIChkaWZmX3F1ZXVlX2lzX2VtcHR5KCkpIHsKQEAgLTcwNCwxNSArNjcyLDE2IEBACiAJfQogCiAJaWYgKG9wdC0+bG9naW5mbyAmJiAhb3B0LT5ub19jb21taXRfaWQpIHsKLQkJLyogV2hlbiBzaG93aW5nIGEgdmVyYm9zZSBoZWFkZXIgKGkuZS4gbG9nIG1lc3NhZ2UpLAotCQkgKiBhbmQgbm90IGluIC0tcHJldHR5PW9uZWxpbmUgZm9ybWF0LCB3ZSB3b3VsZCB3YW50Ci0JCSAqIGFuIGV4dHJhIG5ld2xpbmUgYmV0d2VlbiB0aGUgZW5kIG9mIGxvZyBhbmQgdGhlCi0JCSAqIG91dHB1dCBmb3IgcmVhZGFiaWxpdHkuCi0JCSAqLwogCQlzaG93X2xvZyhvcHQpOwogCQlpZiAoKG9wdC0+ZGlmZm9wdC5vdXRwdXRfZm9ybWF0ICYgfkRJRkZfRk9STUFUX05PX09VVFBVVCkgJiYKIAkJICAgIG9wdC0+dmVyYm9zZV9oZWFkZXIgJiYKIAkJICAgIG9wdC0+Y29tbWl0X2Zvcm1hdCAhPSBDTUlUX0ZNVF9PTkVMSU5FKSB7CisJCQkvKgorCQkJICogV2hlbiBzaG93aW5nIGEgdmVyYm9zZSBoZWFkZXIgKGkuZS4gbG9nIG1lc3NhZ2UpLAorCQkJICogYW5kIG5vdCBpbiAtLXByZXR0eT1vbmVsaW5lIGZvcm1hdCwgd2Ugd291bGQgd2FudAorCQkJICogYW4gZXh0cmEgbmV3bGluZSBiZXR3ZWVuIHRoZSBlbmQgb2YgbG9nIGFuZCB0aGUKKwkJCSAqIGRpZmYvZGlmZnN0YXQgb3V0cHV0IGZvciByZWFkYWJpbGl0eS4KKwkJCSAqLwogCQkJaW50IHBjaCA9IERJRkZfRk9STUFUX0RJRkZTVEFUIHwgRElGRl9GT1JNQVRfUEFUQ0g7CiAJCQlpZiAob3B0LT5kaWZmb3B0Lm91dHB1dF9wcmVmaXgpIHsKIAkJCQlzdHJ1Y3Qgc3RyYnVmICptc2cgPSBOVUxMOwpAQCAtNzIwLDkgKzY4OSwyMCBAQAogCQkJCQlvcHQtPmRpZmZvcHQub3V0cHV0X3ByZWZpeF9kYXRhKTsKIAkJCQlmd3JpdGUobXNnLT5idWYsIG1zZy0+bGVuLCAxLCBzdGRvdXQpOwogCQkJfQotCQkJaWYgKChwY2ggJiBvcHQtPmRpZmZvcHQub3V0cHV0X2Zvcm1hdCkgPT0gcGNoKSB7CisKKwkJCS8qCisJCQkgKiBXZSBtYXkgaGF2ZSBzaG93biB0aHJlZS1kYXNoZXMgbGluZSBlYXJseQorCQkJICogYmV0d2VlbiBub3RlcyBhbmQgdGhlIGxvZyBtZXNzYWdlLCBpbiB3aGljaAorCQkJICogY2FzZSB3ZSBvbmx5IHdhbnQgYSBibGFuayBsaW5lIGFmdGVyIHRoZQorCQkJICogbm90ZXMgd2l0aG91dCAoYW4gZXh0cmEpIHRocmVlLWRhc2hlcyBsaW5lLgorCQkJICogT3RoZXJ3aXNlLCB3ZSBzaG93IHRoZSB0aHJlZS1kYXNoZXMgbGluZSBpZgorCQkJICogd2UgYXJlIHNob3dpbmcgdGhlIHBhdGNoIHdpdGggZGlmZnN0YXQsIGJ1dAorCQkJICogaW4gdGhhdCBjYXNlLCB0aGVyZSBpcyBubyBleHRyYSBibGFuayBsaW5lCisJCQkgKiBhZnRlciB0aGUgdGhyZWUtZGFzaGVzIGxpbmUuCisJCQkgKi8KKwkJCWlmICghb3B0LT5zaG93bl9kYXNoZXMgJiYKKwkJCSAgICAocGNoICYgb3B0LT5kaWZmb3B0Lm91dHB1dF9mb3JtYXQpID09IHBjaCkKIAkJCQlwcmludGYoIi0tLSIpOwotCQkJfQogCQkJcHV0Y2hhcignXG4nKTsKIAkJfQogCX0KQEAgLTc0NSwxMSArNzI1LDE0IEBACiB7CiAJaW50IHNob3dlZF9sb2c7CiAJc3RydWN0IGNvbW1pdF9saXN0ICpwYXJlbnRzOwotCXVuc2lnbmVkIGNvbnN0IGNoYXIgKnNoYTEgPSBjb21taXQtPm9iamVjdC5zaGExOworCXVuc2lnbmVkIGNvbnN0IGNoYXIgKnNoYTE7CiAKIAlpZiAoIW9wdC0+ZGlmZiAmJiAhRElGRl9PUFRfVFNUKCZvcHQtPmRpZmZvcHQsIEVYSVRfV0lUSF9TVEFUVVMpKQogCQlyZXR1cm4gMDsKIAorCXBhcnNlX2NvbW1pdChjb21taXQpOworCXNoYTEgPSBjb21taXQtPnRyZWUtPm9iamVjdC5zaGExOworCiAJLyogUm9vdCBjb21taXQ/ICovCiAJcGFyZW50cyA9IGNvbW1pdC0+cGFyZW50czsKIAlpZiAoIXBhcmVudHMpIHsKQEAgLTc3Miw3ICs3NTUsOSBAQAogCQkJICogcGFyZW50LCBzaG93aW5nIHN1bW1hcnkgZGlmZiBvZiB0aGUgb3RoZXJzCiAJCQkgKiB3ZSBtZXJnZWQgX2luXy4KIAkJCSAqLwotCQkJZGlmZl90cmVlX3NoYTEocGFyZW50cy0+aXRlbS0+b2JqZWN0LnNoYTEsIHNoYTEsICIiLCAmb3B0LT5kaWZmb3B0KTsKKwkJCXBhcnNlX2NvbW1pdChwYXJlbnRzLT5pdGVtKTsKKwkJCWRpZmZfdHJlZV9zaGExKHBhcmVudHMtPml0ZW0tPnRyZWUtPm9iamVjdC5zaGExLAorCQkJCSAgICAgICBzaGExLCAiIiwgJm9wdC0+ZGlmZm9wdCk7CiAJCQlsb2dfdHJlZV9kaWZmX2ZsdXNoKG9wdCk7CiAJCQlyZXR1cm4gIW9wdC0+bG9naW5mbzsKIAkJfQpAQCAtNzg1LDcgKzc3MCw5IEBACiAJZm9yICg7OykgewogCQlzdHJ1Y3QgY29tbWl0ICpwYXJlbnQgPSBwYXJlbnRzLT5pdGVtOwogCi0JCWRpZmZfdHJlZV9zaGExKHBhcmVudC0+b2JqZWN0LnNoYTEsIHNoYTEsICIiLCAmb3B0LT5kaWZmb3B0KTsKKwkJcGFyc2VfY29tbWl0KHBhcmVudCk7CisJCWRpZmZfdHJlZV9zaGExKHBhcmVudC0+dHJlZS0+b2JqZWN0LnNoYTEsCisJCQkgICAgICAgc2hhMSwgIiIsICZvcHQtPmRpZmZvcHQpOwogCQlsb2dfdHJlZV9kaWZmX2ZsdXNoKG9wdCk7CiAKIAkJc2hvd2VkX2xvZyB8PSAhb3B0LT5sb2dpbmZvOwpkaWZmIC0tZ2l0IGEvbG9nLXRyZWUuaCBiL2xvZy10cmVlLmgKaW5kZXggZjVhYzIzOC4uZDZlY2Q0ZCAxMDA2NDQKLS0tIGEvbG9nLXRyZWUuaAorKysgYi9sb2ctdHJlZS5oCkBAIC0xMyw2ICsxMyw3IEBACiBpbnQgbG9nX3RyZWVfY29tbWl0KHN0cnVjdCByZXZfaW5mbyAqLCBzdHJ1Y3QgY29tbWl0ICopOwogaW50IGxvZ190cmVlX29wdF9wYXJzZShzdHJ1Y3QgcmV2X2luZm8gKiwgY29uc3QgY2hhciAqKiwgaW50KTsKIHZvaWQgc2hvd19sb2coc3RydWN0IHJldl9pbmZvICpvcHQpOwordm9pZCBmb3JtYXRfZGVjb3JhdGlvbnMoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwgaW50IHVzZV9jb2xvcik7CiB2b2lkIHNob3dfZGVjb3JhdGlvbnMoc3RydWN0IHJldl9pbmZvICpvcHQsIHN0cnVjdCBjb21taXQgKmNvbW1pdCk7CiB2b2lkIGxvZ193cml0ZV9lbWFpbF9oZWFkZXJzKHN0cnVjdCByZXZfaW5mbyAqb3B0LCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsCiAJCQkgICAgIGNvbnN0IGNoYXIgKipzdWJqZWN0X3AsCkBAIC0yMSw3ICsyMiw3IEBACiB2b2lkIGxvYWRfcmVmX2RlY29yYXRpb25zKGludCBmbGFncyk7CiAKICNkZWZpbmUgRk9STUFUX1BBVENIX05BTUVfTUFYIDY0Ci12b2lkIGdldF9wYXRjaF9maWxlbmFtZShzdHJ1Y3QgY29tbWl0ICpjb21taXQsIGNvbnN0IGNoYXIgKnN1YmplY3QsIGludCBuciwKLQkJCWNvbnN0IGNoYXIgKnN1ZmZpeCwgc3RydWN0IHN0cmJ1ZiAqYnVmKTsKK3ZvaWQgZm10X291dHB1dF9jb21taXQoc3RydWN0IHN0cmJ1ZiAqLCBzdHJ1Y3QgY29tbWl0ICosIHN0cnVjdCByZXZfaW5mbyAqKTsKK3ZvaWQgZm10X291dHB1dF9zdWJqZWN0KHN0cnVjdCBzdHJidWYgKiwgY29uc3QgY2hhciAqc3ViamVjdCwgc3RydWN0IHJldl9pbmZvICopOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL21haWxtYXAuYyBiL21haWxtYXAuYwppbmRleCA0N2FhNDE5Li4yYTdiMzY2IDEwMDY0NAotLS0gYS9tYWlsbWFwLmMKKysrIGIvbWFpbG1hcC5jCkBAIC0xMCw2ICsxMCw3IEBACiAjZW5kaWYKIAogY29uc3QgY2hhciAqZ2l0X21haWxtYXBfZmlsZTsKK2NvbnN0IGNoYXIgKmdpdF9tYWlsbWFwX2Jsb2I7CiAKIHN0cnVjdCBtYWlsbWFwX2luZm8gewogCWNoYXIgKm5hbWU7CkBAIC0xMTgsNyArMTE5LDcgQEAKIAl3aGlsZSAoaXNzcGFjZSgqbnN0YXJ0KSAmJiBuc3RhcnQgPCBsZWZ0KQogCQkrK25zdGFydDsKIAluZW5kID0gbGVmdC0xOwotCXdoaWxlIChpc3NwYWNlKCpuZW5kKSAmJiBuZW5kID4gbnN0YXJ0KQorCXdoaWxlIChuZW5kID4gbnN0YXJ0ICYmIGlzc3BhY2UoKm5lbmQpKQogCQktLW5lbmQ7CiAKIAkqbmFtZSA9IChuc3RhcnQgPCBuZW5kID8gbnN0YXJ0IDogTlVMTCk7CkBAIC0xMjksNTQgKzEzMCwxMjAgQEAKIAlyZXR1cm4gKCpyaWdodCA9PSAnXDAnID8gTlVMTCA6IHJpZ2h0KTsKIH0KIAotc3RhdGljIGludCByZWFkX3NpbmdsZV9tYWlsbWFwKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY2hhciAqKnJlcG9fYWJicmV2KQorc3RhdGljIHZvaWQgcmVhZF9tYWlsbWFwX2xpbmUoc3RydWN0IHN0cmluZ19saXN0ICptYXAsIGNoYXIgKmJ1ZmZlciwKKwkJCSAgICAgIGNoYXIgKipyZXBvX2FiYnJldikKK3sKKwljaGFyICpuYW1lMSA9IE5VTEwsICplbWFpbDEgPSBOVUxMLCAqbmFtZTIgPSBOVUxMLCAqZW1haWwyID0gTlVMTDsKKwlpZiAoYnVmZmVyWzBdID09ICcjJykgeworCQlzdGF0aWMgY29uc3QgY2hhciBhYmJyZXZbXSA9ICIjIHJlcG8tYWJicmV2OiI7CisJCWludCBhYmJsZW4gPSBzaXplb2YoYWJicmV2KSAtIDE7CisJCWludCBsZW4gPSBzdHJsZW4oYnVmZmVyKTsKKworCQlpZiAoIXJlcG9fYWJicmV2KQorCQkJcmV0dXJuOworCisJCWlmIChsZW4gJiYgYnVmZmVyW2xlbiAtIDFdID09ICdcbicpCisJCQlidWZmZXJbLS1sZW5dID0gMDsKKwkJaWYgKCFzdHJuY21wKGJ1ZmZlciwgYWJicmV2LCBhYmJsZW4pKSB7CisJCQljaGFyICpjcDsKKworCQkJaWYgKHJlcG9fYWJicmV2KQorCQkJCWZyZWUoKnJlcG9fYWJicmV2KTsKKwkJCSpyZXBvX2FiYnJldiA9IHhtYWxsb2MobGVuKTsKKworCQkJZm9yIChjcCA9IGJ1ZmZlciArIGFiYmxlbjsgaXNzcGFjZSgqY3ApOyBjcCsrKQorCQkJCTsgLyogbm90aGluZyAqLworCQkJc3RyY3B5KCpyZXBvX2FiYnJldiwgY3ApOworCQl9CisJCXJldHVybjsKKwl9CisJaWYgKChuYW1lMiA9IHBhcnNlX25hbWVfYW5kX2VtYWlsKGJ1ZmZlciwgJm5hbWUxLCAmZW1haWwxLCAwKSkgIT0gTlVMTCkKKwkJcGFyc2VfbmFtZV9hbmRfZW1haWwobmFtZTIsICZuYW1lMiwgJmVtYWlsMiwgMSk7CisKKwlpZiAoZW1haWwxKQorCQlhZGRfbWFwcGluZyhtYXAsIG5hbWUxLCBlbWFpbDEsIG5hbWUyLCBlbWFpbDIpOworfQorCitzdGF0aWMgaW50IHJlYWRfbWFpbG1hcF9maWxlKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwLCBjb25zdCBjaGFyICpmaWxlbmFtZSwKKwkJCSAgICAgY2hhciAqKnJlcG9fYWJicmV2KQogewogCWNoYXIgYnVmZmVyWzEwMjRdOwotCUZJTEUgKmYgPSAoZmlsZW5hbWUgPT0gTlVMTCA/IE5VTEwgOiBmb3BlbihmaWxlbmFtZSwgInIiKSk7CisJRklMRSAqZjsKIAotCWlmIChmID09IE5VTEwpCi0JCXJldHVybiAxOwotCXdoaWxlIChmZ2V0cyhidWZmZXIsIHNpemVvZihidWZmZXIpLCBmKSAhPSBOVUxMKSB7Ci0JCWNoYXIgKm5hbWUxID0gTlVMTCwgKmVtYWlsMSA9IE5VTEwsICpuYW1lMiA9IE5VTEwsICplbWFpbDIgPSBOVUxMOwotCQlpZiAoYnVmZmVyWzBdID09ICcjJykgewotCQkJc3RhdGljIGNvbnN0IGNoYXIgYWJicmV2W10gPSAiIyByZXBvLWFiYnJldjoiOwotCQkJaW50IGFiYmxlbiA9IHNpemVvZihhYmJyZXYpIC0gMTsKLQkJCWludCBsZW4gPSBzdHJsZW4oYnVmZmVyKTsKKwlpZiAoIWZpbGVuYW1lKQorCQlyZXR1cm4gMDsKIAotCQkJaWYgKCFyZXBvX2FiYnJldikKLQkJCQljb250aW51ZTsKLQotCQkJaWYgKGxlbiAmJiBidWZmZXJbbGVuIC0gMV0gPT0gJ1xuJykKLQkJCQlidWZmZXJbLS1sZW5dID0gMDsKLQkJCWlmICghc3RybmNtcChidWZmZXIsIGFiYnJldiwgYWJibGVuKSkgewotCQkJCWNoYXIgKmNwOwotCi0JCQkJaWYgKHJlcG9fYWJicmV2KQotCQkJCQlmcmVlKCpyZXBvX2FiYnJldik7Ci0JCQkJKnJlcG9fYWJicmV2ID0geG1hbGxvYyhsZW4pOwotCi0JCQkJZm9yIChjcCA9IGJ1ZmZlciArIGFiYmxlbjsgaXNzcGFjZSgqY3ApOyBjcCsrKQotCQkJCQk7IC8qIG5vdGhpbmcgKi8KLQkJCQlzdHJjcHkoKnJlcG9fYWJicmV2LCBjcCk7Ci0JCQl9Ci0JCQljb250aW51ZTsKLQkJfQotCQlpZiAoKG5hbWUyID0gcGFyc2VfbmFtZV9hbmRfZW1haWwoYnVmZmVyLCAmbmFtZTEsICZlbWFpbDEsIDApKSAhPSBOVUxMKQotCQkJcGFyc2VfbmFtZV9hbmRfZW1haWwobmFtZTIsICZuYW1lMiwgJmVtYWlsMiwgMSk7Ci0KLQkJaWYgKGVtYWlsMSkKLQkJCWFkZF9tYXBwaW5nKG1hcCwgbmFtZTEsIGVtYWlsMSwgbmFtZTIsIGVtYWlsMik7CisJZiA9IGZvcGVuKGZpbGVuYW1lLCAiciIpOworCWlmICghZikgeworCQlpZiAoZXJybm8gPT0gRU5PRU5UKQorCQkJcmV0dXJuIDA7CisJCXJldHVybiBlcnJvcigidW5hYmxlIHRvIG9wZW4gbWFpbG1hcCBhdCAlczogJXMiLAorCQkJICAgICBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKIAl9CisKKwl3aGlsZSAoZmdldHMoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgZikgIT0gTlVMTCkKKwkJcmVhZF9tYWlsbWFwX2xpbmUobWFwLCBidWZmZXIsIHJlcG9fYWJicmV2KTsKIAlmY2xvc2UoZik7CiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIHJlYWRfbWFpbG1hcF9idWYoc3RydWN0IHN0cmluZ19saXN0ICptYXAsCisJCQkgICAgIGNvbnN0IGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBsZW4sCisJCQkgICAgIGNoYXIgKipyZXBvX2FiYnJldikKK3sKKwl3aGlsZSAobGVuKSB7CisJCWNvbnN0IGNoYXIgKmVuZCA9IHN0cmNocm51bChidWYsICdcbicpOworCQl1bnNpZ25lZCBsb25nIGxpbmVsZW4gPSBlbmQgLSBidWYgKyAxOworCQljaGFyICpsaW5lID0geG1lbWR1cHooYnVmLCBsaW5lbGVuKTsKKworCQlyZWFkX21haWxtYXBfbGluZShtYXAsIGxpbmUsIHJlcG9fYWJicmV2KTsKKworCQlmcmVlKGxpbmUpOworCQlidWYgKz0gbGluZWxlbjsKKwkJbGVuIC09IGxpbmVsZW47CisJfQorfQorCitzdGF0aWMgaW50IHJlYWRfbWFpbG1hcF9ibG9iKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwLAorCQkJICAgICBjb25zdCBjaGFyICpuYW1lLAorCQkJICAgICBjaGFyICoqcmVwb19hYmJyZXYpCit7CisJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKKwljaGFyICpidWY7CisJdW5zaWduZWQgbG9uZyBzaXplOworCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKKworCWlmICghbmFtZSkKKwkJcmV0dXJuIDA7CisJaWYgKGdldF9zaGExKG5hbWUsIHNoYTEpIDwgMCkKKwkJcmV0dXJuIDA7CisKKwlidWYgPSByZWFkX3NoYTFfZmlsZShzaGExLCAmdHlwZSwgJnNpemUpOworCWlmICghYnVmKQorCQlyZXR1cm4gZXJyb3IoInVuYWJsZSB0byByZWFkIG1haWxtYXAgb2JqZWN0IGF0ICVzIiwgbmFtZSk7CisJaWYgKHR5cGUgIT0gT0JKX0JMT0IpCisJCXJldHVybiBlcnJvcigibWFpbG1hcCBpcyBub3QgYSBibG9iOiAlcyIsIG5hbWUpOworCisJcmVhZF9tYWlsbWFwX2J1ZihtYXAsIGJ1Ziwgc2l6ZSwgcmVwb19hYmJyZXYpOworCisJZnJlZShidWYpOworCXJldHVybiAwOworfQorCiBpbnQgcmVhZF9tYWlsbWFwKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwLCBjaGFyICoqcmVwb19hYmJyZXYpCiB7CisJaW50IGVyciA9IDA7CisKIAltYXAtPnN0cmR1cF9zdHJpbmdzID0gMTsKLQkvKiBlYWNoIGZhaWx1cmUgcmV0dXJucyAxLCBzbyA+MSBtZWFucyBib3RoIGNhbGxzIGZhaWxlZCAqLwotCXJldHVybiByZWFkX3NpbmdsZV9tYWlsbWFwKG1hcCwgIi5tYWlsbWFwIiwgcmVwb19hYmJyZXYpICsKLQkgICAgICAgcmVhZF9zaW5nbGVfbWFpbG1hcChtYXAsIGdpdF9tYWlsbWFwX2ZpbGUsIHJlcG9fYWJicmV2KSA+IDE7CisJbWFwLT5jbXAgPSBzdHJjYXNlY21wOworCisJaWYgKCFnaXRfbWFpbG1hcF9ibG9iICYmIGlzX2JhcmVfcmVwb3NpdG9yeSgpKQorCQlnaXRfbWFpbG1hcF9ibG9iID0gIkhFQUQ6Lm1haWxtYXAiOworCisJZXJyIHw9IHJlYWRfbWFpbG1hcF9maWxlKG1hcCwgIi5tYWlsbWFwIiwgcmVwb19hYmJyZXYpOworCWVyciB8PSByZWFkX21haWxtYXBfYmxvYihtYXAsIGdpdF9tYWlsbWFwX2Jsb2IsIHJlcG9fYWJicmV2KTsKKwllcnIgfD0gcmVhZF9tYWlsbWFwX2ZpbGUobWFwLCBnaXRfbWFpbG1hcF9maWxlLCByZXBvX2FiYnJldik7CisJcmV0dXJuIGVycjsKIH0KIAogdm9pZCBjbGVhcl9tYWlsbWFwKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwKQpAQCAtMTg3LDYwICsyNTQsOTUgQEAKIAlkZWJ1Z19tbSgibWFpbG1hcDogY2xlYXJlZFxuIik7CiB9CiAKLWludCBtYXBfdXNlcihzdHJ1Y3Qgc3RyaW5nX2xpc3QgKm1hcCwKLQkgICAgIGNoYXIgKmVtYWlsLCBpbnQgbWF4bGVuX2VtYWlsLCBjaGFyICpuYW1lLCBpbnQgbWF4bGVuX25hbWUpCisvKgorICogTG9vayBmb3IgYW4gZW50cnkgaW4gbWFwIHRoYXQgbWF0Y2ggc3RyaW5nWzA6bGVuXTsgc3RyaW5nW2xlbl0KKyAqIGRvZXMgbm90IGhhdmUgdG8gYmUgTlVMIChidXQgaXQgY291bGQgYmUpLgorICovCitzdGF0aWMgc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKmxvb2t1cF9wcmVmaXgoc3RydWN0IHN0cmluZ19saXN0ICptYXAsCisJCQkJCSAgICAgIGNvbnN0IGNoYXIgKnN0cmluZywgc2l6ZV90IGxlbikKIHsKLQljaGFyICplbmRfb2ZfZW1haWw7CisJaW50IGkgPSBzdHJpbmdfbGlzdF9maW5kX2luc2VydF9pbmRleChtYXAsIHN0cmluZywgMSk7CisJaWYgKGkgPCAwKSB7CisJCS8qIGV4YWN0IG1hdGNoICovCisJCWkgPSAtMSAtIGk7CisJCWlmICghc3RyaW5nW2xlbl0pCisJCQlyZXR1cm4gJm1hcC0+aXRlbXNbaV07CisJCS8qCisJCSAqIHRoYXQgbWFwIGVudHJ5IG1hdGNoZXMgZXhhY3RseSB0byB0aGUgc3RyaW5nLCBpbmNsdWRpbmcKKwkJICogdGhlIGNydWZ0IGF0IHRoZSBlbmQgYmV5b25kICJsZW4iLiAgVGhhdCBpcyBub3QgYSBtYXRjaAorCQkgKiB3aXRoIHN0cmluZ1swOmxlbl0gdGhhdCB3ZSBhcmUgbG9va2luZyBmb3IuCisJCSAqLworCX0gZWxzZSBpZiAoIXN0cmluZ1tsZW5dKSB7CisJCS8qCisJCSAqIGFza2VkIHdpdGggdGhlIHdob2xlIHN0cmluZywgYW5kIGdvdCBub3RoaW5nLiAgTm8KKwkJICogbWF0Y2hpbmcgZW50cnkgY2FuIGV4aXN0IGluIHRoZSBtYXAuCisJCSAqLworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKgorCSAqIGkgaXMgYXQgdGhlIGV4YWN0IG1hdGNoIHRvIGFuIG92ZXJsb25nIGtleSwgb3IgbG9jYXRpb24gdGhlCisJICogb3Zlcmxvbmcga2V5IHdvdWxkIGJlIGluc2VydGVkLCB3aGljaCBtdXN0IGNvbWUgYWZ0ZXIgdGhlCisJICogcmVhbCBsb2NhdGlvbiBvZiB0aGUga2V5IGlmIG9uZSBleGlzdHMuCisJICovCisJd2hpbGUgKDAgPD0gLS1pICYmIGkgPCBtYXAtPm5yKSB7CisJCWludCBjbXAgPSBzdHJuY2FzZWNtcChtYXAtPml0ZW1zW2ldLnN0cmluZywgc3RyaW5nLCBsZW4pOworCQlpZiAoY21wIDwgMCkKKwkJCS8qCisJCQkgKiAiaSIgcG9pbnRzIGF0IGEga2V5IGRlZmluaXRlbHkgYmVsb3cgdGhlIHByZWZpeDsKKwkJCSAqIHRoZSBtYXAgZG9lcyBub3QgaGF2ZSBzdHJpbmdbMDpsZW5dIGluIGl0LgorCQkJICovCisJCQlicmVhazsKKwkJZWxzZSBpZiAoIWNtcCAmJiAhbWFwLT5pdGVtc1tpXS5zdHJpbmdbbGVuXSkKKwkJCS8qIGZvdW5kIGl0ICovCisJCQlyZXR1cm4gJm1hcC0+aXRlbXNbaV07CisJCS8qCisJCSAqIG90aGVyd2lzZSwgdGhlIHN0cmluZyBhdCAiaSIgbWF5IGJlIHN0cmluZ1swOmxlbl0KKwkJICogZm9sbG93ZWQgYnkgYSBzdHJpbmcgdGhhdCBzb3J0cyBsYXRlciB0aGFuIHN0cmluZ1tsZW46XTsKKwkJICoga2VlcCB0cnlpbmcuCisJCSAqLworCX0KKwlyZXR1cm4gTlVMTDsKK30KKworaW50IG1hcF91c2VyKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwLAorCQkJIGNvbnN0IGNoYXIgKiplbWFpbCwgc2l6ZV90ICplbWFpbGxlbiwKKwkJCSBjb25zdCBjaGFyICoqbmFtZSwgc2l6ZV90ICpuYW1lbGVuKQorewogCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOwogCXN0cnVjdCBtYWlsbWFwX2VudHJ5ICptZTsKLQljaGFyIGJ1ZlsxMDI0XSwgKm1haWxidWY7Ci0JaW50IGk7CiAKLQkvKiBmaWd1cmUgb3V0IHNwYWNlIHJlcXVpcmVtZW50IGZvciBlbWFpbCAqLwotCWVuZF9vZl9lbWFpbCA9IHN0cmNocihlbWFpbCwgJz4nKTsKLQlpZiAoIWVuZF9vZl9lbWFpbCkgewotCQkvKiBlbWFpbCBwYXNzZWQgaW4gbWlnaHQgbm90IGJlIHdyYXBwZWQgaW4gPD4sIGJ1dCBlbmQgd2l0aCBhIFwwICovCi0JCWVuZF9vZl9lbWFpbCA9IG1lbWNocihlbWFpbCwgJ1wwJywgbWF4bGVuX2VtYWlsKTsKLQkJaWYgKCFlbmRfb2ZfZW1haWwpCi0JCQlyZXR1cm4gMDsKLQl9Ci0JaWYgKGVuZF9vZl9lbWFpbCAtIGVtYWlsICsgMSA8IHNpemVvZihidWYpKQotCQltYWlsYnVmID0gYnVmOwotCWVsc2UKLQkJbWFpbGJ1ZiA9IHhtYWxsb2MoZW5kX29mX2VtYWlsIC0gZW1haWwgKyAxKTsKKwlkZWJ1Z19tbSgibWFwX3VzZXI6IG1hcCAnJS4qcycgPCUuKnM+XG4iLAorCQkgKm5hbWUsICpuYW1lbGVuLCAqZW1haWxsZW4sICplbWFpbCk7CiAKLQkvKiBkb3duY2FzZSB0aGUgZW1haWwgYWRkcmVzcyAqLwotCWZvciAoaSA9IDA7IGkgPCBlbmRfb2ZfZW1haWwgLSBlbWFpbDsgaSsrKQotCQltYWlsYnVmW2ldID0gdG9sb3dlcihlbWFpbFtpXSk7Ci0JbWFpbGJ1ZltpXSA9IDA7Ci0KLQlkZWJ1Z19tbSgibWFwX3VzZXI6IG1hcCAnJXMnIDwlcz5cbiIsIG5hbWUsIG1haWxidWYpOwotCWl0ZW0gPSBzdHJpbmdfbGlzdF9sb29rdXAobWFwLCBtYWlsYnVmKTsKKwlpdGVtID0gbG9va3VwX3ByZWZpeChtYXAsICplbWFpbCwgKmVtYWlsbGVuKTsKIAlpZiAoaXRlbSAhPSBOVUxMKSB7CiAJCW1lID0gKHN0cnVjdCBtYWlsbWFwX2VudHJ5ICopaXRlbS0+dXRpbDsKIAkJaWYgKG1lLT5uYW1lbWFwLm5yKSB7CiAJCQkvKiBUaGUgaXRlbSBoYXMgbXVsdGlwbGUgaXRlbXMsIHNvIHdlJ2xsIGxvb2sgdXAgb24gbmFtZSB0b28gKi8KIAkJCS8qIElmIHRoZSBuYW1lIGlzIG5vdCBmb3VuZCwgd2UgY2hvb3NlIHRoZSBzaW1wbGUgZW50cnkgICAgICAqLwotCQkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKnN1Yml0ZW0gPSBzdHJpbmdfbGlzdF9sb29rdXAoJm1lLT5uYW1lbWFwLCBuYW1lKTsKKwkJCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICpzdWJpdGVtOworCQkJc3ViaXRlbSA9IGxvb2t1cF9wcmVmaXgoJm1lLT5uYW1lbWFwLCAqbmFtZSwgKm5hbWVsZW4pOwogCQkJaWYgKHN1Yml0ZW0pCiAJCQkJaXRlbSA9IHN1Yml0ZW07CiAJCX0KIAl9Ci0JaWYgKG1haWxidWYgIT0gYnVmKQotCQlmcmVlKG1haWxidWYpOwogCWlmIChpdGVtICE9IE5VTEwpIHsKIAkJc3RydWN0IG1haWxtYXBfaW5mbyAqbWkgPSAoc3RydWN0IG1haWxtYXBfaW5mbyAqKWl0ZW0tPnV0aWw7Ci0JCWlmIChtaS0+bmFtZSA9PSBOVUxMICYmIChtaS0+ZW1haWwgPT0gTlVMTCB8fCBtYXhsZW5fZW1haWwgPT0gMCkpIHsKKwkJaWYgKG1pLT5uYW1lID09IE5VTEwgJiYgbWktPmVtYWlsID09IE5VTEwpIHsKIAkJCWRlYnVnX21tKCJtYXBfdXNlcjogIC0tIChubyBzaW1wbGUgbWFwcGluZylcbiIpOwogCQkJcmV0dXJuIDA7CiAJCX0KLQkJaWYgKG1heGxlbl9lbWFpbCAmJiBtaS0+ZW1haWwpCi0JCQlzdHJsY3B5KGVtYWlsLCBtaS0+ZW1haWwsIG1heGxlbl9lbWFpbCk7Ci0JCWVsc2UKLQkJCSplbmRfb2ZfZW1haWwgPSAnXDAnOwotCQlpZiAobWF4bGVuX25hbWUgJiYgbWktPm5hbWUpCi0JCQlzdHJsY3B5KG5hbWUsIG1pLT5uYW1lLCBtYXhsZW5fbmFtZSk7Ci0JCWRlYnVnX21tKCJtYXBfdXNlcjogIHRvICclcycgPCVzPlxuIiwgbmFtZSwgbWktPmVtYWlsID8gbWktPmVtYWlsIDogIiIpOworCQlpZiAobWktPmVtYWlsKSB7CisJCQkJKmVtYWlsID0gbWktPmVtYWlsOworCQkJCSplbWFpbGxlbiA9IHN0cmxlbigqZW1haWwpOworCQl9CisJCWlmIChtaS0+bmFtZSkgeworCQkJCSpuYW1lID0gbWktPm5hbWU7CisJCQkJKm5hbWVsZW4gPSBzdHJsZW4oKm5hbWUpOworCQl9CisJCWRlYnVnX21tKCJtYXBfdXNlcjogIHRvICclLipzJyA8Liolcz5cbiIsICpuYW1lbGVuLCAqbmFtZSwKKwkJCQkgKmVtYWlsbGVuLCAqZW1haWwpOwogCQlyZXR1cm4gMTsKIAl9CiAJZGVidWdfbW0oIm1hcF91c2VyOiAgLS1cbiIpOwpkaWZmIC0tZ2l0IGEvbWFpbG1hcC5oIGIvbWFpbG1hcC5oCmluZGV4IGQ1YzM2NjQuLmVkN2M5M2IgMTAwNjQ0Ci0tLSBhL21haWxtYXAuaAorKysgYi9tYWlsbWFwLmgKQEAgLTQsNyArNCw3IEBACiBpbnQgcmVhZF9tYWlsbWFwKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwLCBjaGFyICoqcmVwb19hYmJyZXYpOwogdm9pZCBjbGVhcl9tYWlsbWFwKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwKTsKIAotaW50IG1hcF91c2VyKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFpbG1hcCwKLQkgICAgIGNoYXIgKmVtYWlsLCBpbnQgbWF4bGVuX2VtYWlsLCBjaGFyICpuYW1lLCBpbnQgbWF4bGVuX25hbWUpOworaW50IG1hcF91c2VyKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwLAorCQkJIGNvbnN0IGNoYXIgKiplbWFpbCwgc2l6ZV90ICplbWFpbGxlbiwgY29uc3QgY2hhciAqKm5hbWUsIHNpemVfdCAqbmFtZWxlbik7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbWF0Y2gtdHJlZXMuYyBiL21hdGNoLXRyZWVzLmMKaW5kZXggMjZmN2VkMS4uMmJiNzM0ZCAxMDA2NDQKLS0tIGEvbWF0Y2gtdHJlZXMuYworKysgYi9tYXRjaC10cmVlcy5jCkBAIC00Nyw2ICs0NywxMyBAQAogCXJldHVybiBzY29yZTsKIH0KIAorc3RhdGljIGludCBiYXNlX25hbWVfZW50cmllc19jb21wYXJlKGNvbnN0IHN0cnVjdCBuYW1lX2VudHJ5ICphLAorCQkJCSAgICAgY29uc3Qgc3RydWN0IG5hbWVfZW50cnkgKmIpCit7CisJcmV0dXJuIGJhc2VfbmFtZV9jb21wYXJlKGEtPnBhdGgsIHRyZWVfZW50cnlfbGVuKGEpLCBhLT5tb2RlLAorCQkJCSBiLT5wYXRoLCB0cmVlX2VudHJ5X2xlbihiKSwgYi0+bW9kZSk7Cit9CisKIC8qCiAgKiBJbnNwZWN0IHR3byB0cmVlcywgYW5kIGdpdmUgYSBzY29yZSB0aGF0IHRlbGxzIGhvdyBzaW1pbGFyIHRoZXkgYXJlLgogICovCkBAIC03MSw1NCArNzgsMzUgQEAKIAlpZiAodHlwZSAhPSBPQkpfVFJFRSkKIAkJZGllKCIlcyBpcyBub3QgYSB0cmVlIiwgc2hhMV90b19oZXgoaGFzaDIpKTsKIAlpbml0X3RyZWVfZGVzYygmdHdvLCB0d29fYnVmLCBzaXplKTsKLQl3aGlsZSAob25lLnNpemUgfCB0d28uc2l6ZSkgewotCQljb25zdCB1bnNpZ25lZCBjaGFyICplbGVtMSA9IGVsZW0xOwotCQljb25zdCB1bnNpZ25lZCBjaGFyICplbGVtMiA9IGVsZW0yOwotCQljb25zdCBjaGFyICpwYXRoMSA9IHBhdGgxOwotCQljb25zdCBjaGFyICpwYXRoMiA9IHBhdGgyOwotCQl1bnNpZ25lZCBtb2RlMSA9IG1vZGUxOwotCQl1bnNpZ25lZCBtb2RlMiA9IG1vZGUyOworCWZvciAoOzspIHsKKwkJc3RydWN0IG5hbWVfZW50cnkgZTEsIGUyOworCQlpbnQgZ290X2VudHJ5X2Zyb21fb25lID0gdHJlZV9lbnRyeSgmb25lLCAmZTEpOworCQlpbnQgZ290X2VudHJ5X2Zyb21fdHdvID0gdHJlZV9lbnRyeSgmdHdvLCAmZTIpOwogCQlpbnQgY21wOwogCi0JCWlmIChvbmUuc2l6ZSkKLQkJCWVsZW0xID0gdHJlZV9lbnRyeV9leHRyYWN0KCZvbmUsICZwYXRoMSwgJm1vZGUxKTsKLQkJaWYgKHR3by5zaXplKQotCQkJZWxlbTIgPSB0cmVlX2VudHJ5X2V4dHJhY3QoJnR3bywgJnBhdGgyLCAmbW9kZTIpOwotCi0JCWlmICghb25lLnNpemUpIHsKLQkJCS8qIHR3byBoYXMgbW9yZSBlbnRyaWVzICovCi0JCQlzY29yZSArPSBzY29yZV9taXNzaW5nKG1vZGUyLCBwYXRoMik7Ci0JCQl1cGRhdGVfdHJlZV9lbnRyeSgmdHdvKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0JCWlmICghdHdvLnNpemUpIHsKKwkJaWYgKGdvdF9lbnRyeV9mcm9tX29uZSAmJiBnb3RfZW50cnlfZnJvbV90d28pCisJCQljbXAgPSBiYXNlX25hbWVfZW50cmllc19jb21wYXJlKCZlMSwgJmUyKTsKKwkJZWxzZSBpZiAoZ290X2VudHJ5X2Zyb21fb25lKQogCQkJLyogdHdvIGxhY2tzIHRoaXMgZW50cnkgKi8KLQkJCXNjb3JlICs9IHNjb3JlX21pc3NpbmcobW9kZTEsIHBhdGgxKTsKLQkJCXVwZGF0ZV90cmVlX2VudHJ5KCZvbmUpOwotCQkJY29udGludWU7Ci0JCX0KLQkJY21wID0gYmFzZV9uYW1lX2NvbXBhcmUocGF0aDEsIHN0cmxlbihwYXRoMSksIG1vZGUxLAotCQkJCQlwYXRoMiwgc3RybGVuKHBhdGgyKSwgbW9kZTIpOwotCQlpZiAoY21wIDwgMCkgeworCQkJY21wID0gLTE7CisJCWVsc2UgaWYgKGdvdF9lbnRyeV9mcm9tX3R3bykKKwkJCS8qIHR3byBoYXMgbW9yZSBlbnRyaWVzICovCisJCQljbXAgPSAxOworCQllbHNlCisJCQlicmVhazsKKworCQlpZiAoY21wIDwgMCkKIAkJCS8qIHBhdGgxIGRvZXMgbm90IGFwcGVhciBpbiB0d28gKi8KLQkJCXNjb3JlICs9IHNjb3JlX21pc3NpbmcobW9kZTEsIHBhdGgxKTsKLQkJCXVwZGF0ZV90cmVlX2VudHJ5KCZvbmUpOwotCQkJY29udGludWU7Ci0JCX0KLQkJZWxzZSBpZiAoY21wID4gMCkgeworCQkJc2NvcmUgKz0gc2NvcmVfbWlzc2luZyhlMS5tb2RlLCBlMS5wYXRoKTsKKwkJZWxzZSBpZiAoY21wID4gMCkKIAkJCS8qIHBhdGgyIGRvZXMgbm90IGFwcGVhciBpbiBvbmUgKi8KLQkJCXNjb3JlICs9IHNjb3JlX21pc3NpbmcobW9kZTIsIHBhdGgyKTsKLQkJCXVwZGF0ZV90cmVlX2VudHJ5KCZ0d28pOwotCQkJY29udGludWU7Ci0JCX0KLQkJZWxzZSBpZiAoaGFzaGNtcChlbGVtMSwgZWxlbTIpKQorCQkJc2NvcmUgKz0gc2NvcmVfbWlzc2luZyhlMi5tb2RlLCBlMi5wYXRoKTsKKwkJZWxzZSBpZiAoaGFzaGNtcChlMS5zaGExLCBlMi5zaGExKSkKIAkJCS8qIHRoZXkgYXJlIGRpZmZlcmVudCAqLwotCQkJc2NvcmUgKz0gc2NvcmVfZGlmZmVycyhtb2RlMSwgbW9kZTIsIHBhdGgxKTsKKwkJCXNjb3JlICs9IHNjb3JlX2RpZmZlcnMoZTEubW9kZSwgZTIubW9kZSwgZTEucGF0aCk7CiAJCWVsc2UKIAkJCS8qIHNhbWUgc3VidHJlZSBvciBibG9iICovCi0JCQlzY29yZSArPSBzY29yZV9tYXRjaGVzKG1vZGUxLCBtb2RlMiwgcGF0aDEpOwotCQl1cGRhdGVfdHJlZV9lbnRyeSgmb25lKTsKLQkJdXBkYXRlX3RyZWVfZW50cnkoJnR3byk7CisJCQlzY29yZSArPSBzY29yZV9tYXRjaGVzKGUxLm1vZGUsIGUyLm1vZGUsIGUxLnBhdGgpOwogCX0KIAlmcmVlKG9uZV9idWYpOwogCWZyZWUodHdvX2J1Zik7CmRpZmYgLS1naXQgYS9tZXJnZS1maWxlLmMgYi9tZXJnZS1ibG9icy5jCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIG1lcmdlLWZpbGUuYwpyZW5hbWUgdG8gbWVyZ2UtYmxvYnMuYwppbmRleCA3ODQ1NTI4Li41NzIxMWJjIDEwMDY0NAotLS0gYS9tZXJnZS1maWxlLmMKKysrIGIvbWVyZ2UtYmxvYnMuYwpAQCAtMyw3ICszLDcgQEAKICNpbmNsdWRlICJ4ZGlmZi1pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJsbC1tZXJnZS5oIgogI2luY2x1ZGUgImJsb2IuaCIKLSNpbmNsdWRlICJtZXJnZS1maWxlLmgiCisjaW5jbHVkZSAibWVyZ2UtYmxvYnMuaCIKIAogc3RhdGljIGludCBmaWxsX21tZmlsZV9ibG9iKG1tZmlsZV90ICpmLCBzdHJ1Y3QgYmxvYiAqb2JqKQogewpAQCAtODAsNyArODAsNyBAQAogCXJldHVybiB4ZGlfZGlmZihmMSwgZjIsICZ4cHAsICZ4ZWNmZywgJmVjYik7CiB9CiAKLXZvaWQgKm1lcmdlX2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGJsb2IgKmJhc2UsIHN0cnVjdCBibG9iICpvdXIsIHN0cnVjdCBibG9iICp0aGVpciwgdW5zaWduZWQgbG9uZyAqc2l6ZSkKK3ZvaWQgKm1lcmdlX2Jsb2JzKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBibG9iICpiYXNlLCBzdHJ1Y3QgYmxvYiAqb3VyLCBzdHJ1Y3QgYmxvYiAqdGhlaXIsIHVuc2lnbmVkIGxvbmcgKnNpemUpCiB7CiAJdm9pZCAqcmVzID0gTlVMTDsKIAltbWZpbGVfdCBmMSwgZjIsIGNvbW1vbjsKZGlmZiAtLWdpdCBhL21lcmdlLWJsb2JzLmggYi9tZXJnZS1ibG9icy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyYjU2OWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXJnZS1ibG9icy5oCkBAIC0wLDAgKzEsOCBAQAorI2lmbmRlZiBNRVJHRV9CTE9CU19ICisjZGVmaW5lIE1FUkdFX0JMT0JTX0gKKworI2luY2x1ZGUgImJsb2IuaCIKKworZXh0ZXJuIHZvaWQgKm1lcmdlX2Jsb2JzKGNvbnN0IGNoYXIgKiwgc3RydWN0IGJsb2IgKiwgc3RydWN0IGJsb2IgKiwgc3RydWN0IGJsb2IgKiwgdW5zaWduZWQgbG9uZyAqKTsKKworI2VuZGlmIC8qIE1FUkdFX0JMT0JTX0ggKi8KZGlmZiAtLWdpdCBhL21lcmdlLWZpbGUuaCBiL21lcmdlLWZpbGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWIzYjgzYS4uMDAwMDAwMAotLS0gYS9tZXJnZS1maWxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLSNpZm5kZWYgTUVSR0VfRklMRV9ICi0jZGVmaW5lIE1FUkdFX0ZJTEVfSAotCi1leHRlcm4gdm9pZCAqbWVyZ2VfZmlsZShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgYmxvYiAqYmFzZSwgc3RydWN0IGJsb2IgKm91ciwKLQkJCXN0cnVjdCBibG9iICp0aGVpciwgdW5zaWduZWQgbG9uZyAqc2l6ZSk7Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVyZ2UtcmVjdXJzaXZlLmMgYi9tZXJnZS1yZWN1cnNpdmUuYwppbmRleCA2ODA5MzdjLi5lYTlkYmQzIDEwMDY0NAotLS0gYS9tZXJnZS1yZWN1cnNpdmUuYworKysgYi9tZXJnZS1yZWN1cnNpdmUuYwpAQCAtMTg3LDcgKzE4Nyw3IEBACiAJZWxzZSB7CiAJCXByaW50ZigiJXMgIiwgZmluZF91bmlxdWVfYWJicmV2KGNvbW1pdC0+b2JqZWN0LnNoYTEsIERFRkFVTFRfQUJCUkVWKSk7CiAJCWlmIChwYXJzZV9jb21taXQoY29tbWl0KSAhPSAwKQotCQkJcHJpbnRmKCIoYmFkIGNvbW1pdClcbiIpOworCQkJcHJpbnRmKF8oIihiYWQgY29tbWl0KVxuIikpOwogCQllbHNlIHsKIAkJCWNvbnN0IGNoYXIgKnRpdGxlOwogCQkJaW50IGxlbiA9IGZpbmRfY29tbWl0X3N1YmplY3QoY29tbWl0LT5idWZmZXIsICZ0aXRsZSk7CkBAIC0yMDMsNyArMjAzLDcgQEAKIAlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOwogCWNlID0gbWFrZV9jYWNoZV9lbnRyeShtb2RlLCBzaGExID8gc2hhMSA6IG51bGxfc2hhMSwgcGF0aCwgc3RhZ2UsIHJlZnJlc2gpOwogCWlmICghY2UpCi0JCXJldHVybiBlcnJvcigiYWRkaW5mb19jYWNoZSBmYWlsZWQgZm9yIHBhdGggJyVzJyIsIHBhdGgpOworCQlyZXR1cm4gZXJyb3IoXygiYWRkaW5mb19jYWNoZSBmYWlsZWQgZm9yIHBhdGggJyVzJyIpLCBwYXRoKTsKIAlyZXR1cm4gYWRkX2NhY2hlX2VudHJ5KGNlLCBvcHRpb25zKTsKIH0KIApAQCAtMjY1LDcgKzI2NSw3IEBACiAJaWYgKCFjYWNoZV90cmVlX2Z1bGx5X3ZhbGlkKGFjdGl2ZV9jYWNoZV90cmVlKSAmJgogCSAgICBjYWNoZV90cmVlX3VwZGF0ZShhY3RpdmVfY2FjaGVfdHJlZSwKIAkJCSAgICAgIGFjdGl2ZV9jYWNoZSwgYWN0aXZlX25yLCAwKSA8IDApCi0JCWRpZSgiZXJyb3IgYnVpbGRpbmcgdHJlZXMiKTsKKwkJZGllKF8oImVycm9yIGJ1aWxkaW5nIHRyZWVzIikpOwogCiAJcmVzdWx0ID0gbG9va3VwX3RyZWUoYWN0aXZlX2NhY2hlX3RyZWUtPnNoYTEpOwogCkBAIC00OTMsOCArNDkzLDcgQEAKIAlvcHRzLnJlbmFtZV9zY29yZSA9IG8tPnJlbmFtZV9zY29yZTsKIAlvcHRzLnNob3dfcmVuYW1lX3Byb2dyZXNzID0gby0+c2hvd19yZW5hbWVfcHJvZ3Jlc3M7CiAJb3B0cy5vdXRwdXRfZm9ybWF0ID0gRElGRl9GT1JNQVRfTk9fT1VUUFVUOwotCWlmIChkaWZmX3NldHVwX2RvbmUoJm9wdHMpIDwgMCkKLQkJZGllKCJkaWZmIHNldHVwIGZhaWxlZCIpOworCWRpZmZfc2V0dXBfZG9uZSgmb3B0cyk7CiAJZGlmZl90cmVlX3NoYTEob190cmVlLT5vYmplY3Quc2hhMSwgdHJlZS0+b2JqZWN0LnNoYTEsICIiLCAmb3B0cyk7CiAJZGlmZmNvcmVfc3RkKCZvcHRzKTsKIAlpZiAob3B0cy5uZWVkZWRfcmVuYW1lX2xpbWl0ID4gby0+bmVlZGVkX3JlbmFtZV9saW1pdCkKQEAgLTYxNCwyMyArNjEzLDYgQEAKIAlyZXR1cm4gbmV3cGF0aDsKIH0KIAotc3RhdGljIHZvaWQgZmx1c2hfYnVmZmVyKGludCBmZCwgY29uc3QgY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nIHNpemUpCi17Ci0Jd2hpbGUgKHNpemUgPiAwKSB7Ci0JCWxvbmcgcmV0ID0gd3JpdGVfaW5fZnVsbChmZCwgYnVmLCBzaXplKTsKLQkJaWYgKHJldCA8IDApIHsKLQkJCS8qIElnbm9yZSBlcGlwZSAqLwotCQkJaWYgKGVycm5vID09IEVQSVBFKQotCQkJCWJyZWFrOwotCQkJZGllX2Vycm5vKCJtZXJnZS1yZWN1cnNpdmUiKTsKLQkJfSBlbHNlIGlmICghcmV0KSB7Ci0JCQlkaWUoIm1lcmdlLXJlY3Vyc2l2ZTogZGlzayBmdWxsPyIpOwotCQl9Ci0JCXNpemUgLT0gcmV0OwotCQlidWYgKz0gcmV0OwotCX0KLX0KLQogc3RhdGljIGludCBkaXJfaW5fd2F5KGNvbnN0IGNoYXIgKnBhdGgsIGludCBjaGVja193b3JraW5nX2NvcHkpCiB7CiAJaW50IHBvcywgcGF0aGxlbiA9IHN0cmxlbihwYXRoKTsKQEAgLTY4Nyw3ICs2NjksNyBAQAogc3RhdGljIGludCBtYWtlX3Jvb21fZm9yX3BhdGgoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8sIGNvbnN0IGNoYXIgKnBhdGgpCiB7CiAJaW50IHN0YXR1cywgaTsKLQljb25zdCBjaGFyICptc2cgPSAiZmFpbGVkIHRvIGNyZWF0ZSBwYXRoICclcyclcyI7CisJY29uc3QgY2hhciAqbXNnID0gXygiZmFpbGVkIHRvIGNyZWF0ZSBwYXRoICclcyclcyIpOwogCiAJLyogVW5saW5rIGFueSBEL0YgY29uZmxpY3QgZmlsZXMgdGhhdCBhcmUgaW4gdGhlIHdheSAqLwogCWZvciAoaSA9IDA7IGkgPCBvLT5kZl9jb25mbGljdF9maWxlX3NldC5ucjsgaSsrKSB7CkBAIC02OTgsNyArNjgwLDcgQEAKIAkJICAgIHBhdGhbZGZfcGF0aGxlbl0gPT0gJy8nICYmCiAJCSAgICBzdHJuY21wKHBhdGgsIGRmX3BhdGgsIGRmX3BhdGhsZW4pID09IDApIHsKIAkJCW91dHB1dChvLCAzLAotCQkJICAgICAgICJSZW1vdmluZyAlcyB0byBtYWtlIHJvb20gZm9yIHN1YmRpcmVjdG9yeVxuIiwKKwkJCSAgICAgICBfKCJSZW1vdmluZyAlcyB0byBtYWtlIHJvb20gZm9yIHN1YmRpcmVjdG9yeVxuIiksCiAJCQkgICAgICAgZGZfcGF0aCk7CiAJCQl1bmxpbmsoZGZfcGF0aCk7CiAJCQl1bnNvcnRlZF9zdHJpbmdfbGlzdF9kZWxldGVfaXRlbSgmby0+ZGZfY29uZmxpY3RfZmlsZV9zZXQsCkBAIC03MTIsNyArNjk0LDcgQEAKIAlpZiAoc3RhdHVzKSB7CiAJCWlmIChzdGF0dXMgPT0gLTMpIHsKIAkJCS8qIHNvbWV0aGluZyBlbHNlIGV4aXN0cyAqLwotCQkJZXJyb3IobXNnLCBwYXRoLCAiOiBwZXJoYXBzIGEgRC9GIGNvbmZsaWN0PyIpOworCQkJZXJyb3IobXNnLCBwYXRoLCBfKCI6IHBlcmhhcHMgYSBEL0YgY29uZmxpY3Q/IikpOwogCQkJcmV0dXJuIC0xOwogCQl9CiAJCWRpZShtc2csIHBhdGgsICIiKTsKQEAgLTcyMyw3ICs3MDUsNyBAQAogCSAqIHRyYWNraW5nIGl0LgogCSAqLwogCWlmICh3b3VsZF9sb3NlX3VudHJhY2tlZChwYXRoKSkKLQkJcmV0dXJuIGVycm9yKCJyZWZ1c2luZyB0byBsb3NlIHVudHJhY2tlZCBmaWxlIGF0ICclcyciLAorCQlyZXR1cm4gZXJyb3IoXygicmVmdXNpbmcgdG8gbG9zZSB1bnRyYWNrZWQgZmlsZSBhdCAnJXMnIiksCiAJCQkgICAgIHBhdGgpOwogCiAJLyogU3VjY2Vzc2Z1bCB1bmxpbmsgaXMgZ29vZC4uICovCkBAIC03MzMsNyArNzE1LDcgQEAKIAlpZiAoZXJybm8gPT0gRU5PRU5UKQogCQlyZXR1cm4gMDsKIAkvKiAuLiBidXQgbm90IHNvbWUgb3RoZXIgZXJyb3IgKHdobyByZWFsbHkgY2FyZXMgd2hhdD8pICovCi0JcmV0dXJuIGVycm9yKG1zZywgcGF0aCwgIjogcGVyaGFwcyBhIEQvRiBjb25mbGljdD8iKTsKKwlyZXR1cm4gZXJyb3IobXNnLCBwYXRoLCBfKCI6IHBlcmhhcHMgYSBEL0YgY29uZmxpY3Q/IikpOwogfQogCiBzdGF0aWMgdm9pZCB1cGRhdGVfZmlsZV9mbGFncyhzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywKQEAgLTc2Myw5ICs3NDUsOSBAQAogCiAJCWJ1ZiA9IHJlYWRfc2hhMV9maWxlKHNoYSwgJnR5cGUsICZzaXplKTsKIAkJaWYgKCFidWYpCi0JCQlkaWUoImNhbm5vdCByZWFkIG9iamVjdCAlcyAnJXMnIiwgc2hhMV90b19oZXgoc2hhKSwgcGF0aCk7CisJCQlkaWUoXygiY2Fubm90IHJlYWQgb2JqZWN0ICVzICclcyciKSwgc2hhMV90b19oZXgoc2hhKSwgcGF0aCk7CiAJCWlmICh0eXBlICE9IE9CSl9CTE9CKQotCQkJZGllKCJibG9iIGV4cGVjdGVkIGZvciAlcyAnJXMnIiwgc2hhMV90b19oZXgoc2hhKSwgcGF0aCk7CisJCQlkaWUoXygiYmxvYiBleHBlY3RlZCBmb3IgJXMgJyVzJyIpLCBzaGExX3RvX2hleChzaGEpLCBwYXRoKTsKIAkJaWYgKFNfSVNSRUcobW9kZSkpIHsKIAkJCXN0cnVjdCBzdHJidWYgc3RyYnVmID0gU1RSQlVGX0lOSVQ7CiAJCQlpZiAoY29udmVydF90b193b3JraW5nX3RyZWUocGF0aCwgYnVmLCBzaXplLCAmc3RyYnVmKSkgewpAQCAtNzg4LDE4ICs3NzAsMTggQEAKIAkJCQltb2RlID0gMDY2NjsKIAkJCWZkID0gb3BlbihwYXRoLCBPX1dST05MWSB8IE9fVFJVTkMgfCBPX0NSRUFULCBtb2RlKTsKIAkJCWlmIChmZCA8IDApCi0JCQkJZGllX2Vycm5vKCJmYWlsZWQgdG8gb3BlbiAnJXMnIiwgcGF0aCk7Ci0JCQlmbHVzaF9idWZmZXIoZmQsIGJ1Ziwgc2l6ZSk7CisJCQkJZGllX2Vycm5vKF8oImZhaWxlZCB0byBvcGVuICclcyciKSwgcGF0aCk7CisJCQl3cml0ZV9pbl9mdWxsKGZkLCBidWYsIHNpemUpOwogCQkJY2xvc2UoZmQpOwogCQl9IGVsc2UgaWYgKFNfSVNMTksobW9kZSkpIHsKIAkJCWNoYXIgKmxuayA9IHhtZW1kdXB6KGJ1Ziwgc2l6ZSk7CiAJCQlzYWZlX2NyZWF0ZV9sZWFkaW5nX2RpcmVjdG9yaWVzX2NvbnN0KHBhdGgpOwogCQkJdW5saW5rKHBhdGgpOwogCQkJaWYgKHN5bWxpbmsobG5rLCBwYXRoKSkKLQkJCQlkaWVfZXJybm8oImZhaWxlZCB0byBzeW1saW5rICclcyciLCBwYXRoKTsKKwkJCQlkaWVfZXJybm8oXygiZmFpbGVkIHRvIHN5bWxpbmsgJyVzJyIpLCBwYXRoKTsKIAkJCWZyZWUobG5rKTsKIAkJfSBlbHNlCi0JCQlkaWUoImRvIG5vdCBrbm93IHdoYXQgdG8gZG8gd2l0aCAlMDZvICVzICclcyciLAorCQkJZGllKF8oImRvIG5vdCBrbm93IHdoYXQgdG8gZG8gd2l0aCAlMDZvICVzICclcyciKSwKIAkJCSAgICBtb2RlLCBzaGExX3RvX2hleChzaGEpLCBwYXRoKTsKIAkJZnJlZShidWYpOwogCX0KQEAgLTg2MiwxNCArODQ0LDE0IEBACiAJaWYgKHN0cmNtcChhLT5wYXRoLCBiLT5wYXRoKSB8fAogCSAgICAoby0+YW5jZXN0b3IgIT0gTlVMTCAmJiBzdHJjbXAoYS0+cGF0aCwgb25lLT5wYXRoKSAhPSAwKSkgewogCQliYXNlX25hbWUgPSBvLT5hbmNlc3RvciA9PSBOVUxMID8gTlVMTCA6Ci0JCQl4c3RyZHVwKG1rcGF0aCgiJXM6JXMiLCBvLT5hbmNlc3Rvciwgb25lLT5wYXRoKSk7Ci0JCW5hbWUxID0geHN0cmR1cChta3BhdGgoIiVzOiVzIiwgYnJhbmNoMSwgYS0+cGF0aCkpOwotCQluYW1lMiA9IHhzdHJkdXAobWtwYXRoKCIlczolcyIsIGJyYW5jaDIsIGItPnBhdGgpKTsKKwkJCW1rcGF0aGR1cCgiJXM6JXMiLCBvLT5hbmNlc3Rvciwgb25lLT5wYXRoKTsKKwkJbmFtZTEgPSBta3BhdGhkdXAoIiVzOiVzIiwgYnJhbmNoMSwgYS0+cGF0aCk7CisJCW5hbWUyID0gbWtwYXRoZHVwKCIlczolcyIsIGJyYW5jaDIsIGItPnBhdGgpOwogCX0gZWxzZSB7CiAJCWJhc2VfbmFtZSA9IG8tPmFuY2VzdG9yID09IE5VTEwgPyBOVUxMIDoKLQkJCXhzdHJkdXAobWtwYXRoKCIlcyIsIG8tPmFuY2VzdG9yKSk7Ci0JCW5hbWUxID0geHN0cmR1cChta3BhdGgoIiVzIiwgYnJhbmNoMSkpOwotCQluYW1lMiA9IHhzdHJkdXAobWtwYXRoKCIlcyIsIGJyYW5jaDIpKTsKKwkJCW1rcGF0aGR1cCgiJXMiLCBvLT5hbmNlc3Rvcik7CisJCW5hbWUxID0gbWtwYXRoZHVwKCIlcyIsIGJyYW5jaDEpOworCQluYW1lMiA9IG1rcGF0aGR1cCgiJXMiLCBicmFuY2gyKTsKIAl9CiAKIAlyZWFkX21tYmxvYigmb3JpZywgb25lLT5zaGExKTsKQEAgLTg3OSw2ICs4NjEsNyBAQAogCW1lcmdlX3N0YXR1cyA9IGxsX21lcmdlKHJlc3VsdF9idWYsIGEtPnBhdGgsICZvcmlnLCBiYXNlX25hbWUsCiAJCQkJJnNyYzEsIG5hbWUxLCAmc3JjMiwgbmFtZTIsICZsbF9vcHRzKTsKIAorCWZyZWUoYmFzZV9uYW1lKTsKIAlmcmVlKG5hbWUxKTsKIAlmcmVlKG5hbWUyKTsKIAlmcmVlKG9yaWcucHRyKTsKQEAgLTkzNiwxMSArOTE5LDExIEBACiAJCQkJCQkgIGJyYW5jaDEsIGJyYW5jaDIpOwogCiAJCQlpZiAoKG1lcmdlX3N0YXR1cyA8IDApIHx8ICFyZXN1bHRfYnVmLnB0cikKLQkJCQlkaWUoIkZhaWxlZCB0byBleGVjdXRlIGludGVybmFsIG1lcmdlIik7CisJCQkJZGllKF8oIkZhaWxlZCB0byBleGVjdXRlIGludGVybmFsIG1lcmdlIikpOwogCiAJCQlpZiAod3JpdGVfc2hhMV9maWxlKHJlc3VsdF9idWYucHRyLCByZXN1bHRfYnVmLnNpemUsCiAJCQkJCSAgICBibG9iX3R5cGUsIHJlc3VsdC5zaGEpKQotCQkJCWRpZSgiVW5hYmxlIHRvIGFkZCAlcyB0byBkYXRhYmFzZSIsCisJCQkJZGllKF8oIlVuYWJsZSB0byBhZGQgJXMgdG8gZGF0YWJhc2UiKSwKIAkJCQkgICAgYS0+cGF0aCk7CiAKIAkJCWZyZWUocmVzdWx0X2J1Zi5wdHIpOwpAQCAtOTU2LDcgKzkzOSw3IEBACiAJCQlpZiAoIXNoYV9lcShhLT5zaGExLCBiLT5zaGExKSkKIAkJCQlyZXN1bHQuY2xlYW4gPSAwOwogCQl9IGVsc2UgewotCQkJZGllKCJ1bnN1cHBvcnRlZCBvYmplY3QgdHlwZSBpbiB0aGUgdHJlZSIpOworCQkJZGllKF8oInVuc3VwcG9ydGVkIG9iamVjdCB0eXBlIGluIHRoZSB0cmVlIikpOwogCQl9CiAJfQogCkBAIC05OTMsNyArOTc2LDcgQEAKIAlyZXR1cm4gbWZpOwogfQogCi1zdGF0aWMgc3RydWN0IG1lcmdlX2ZpbGVfaW5mbyBtZXJnZV9maWxlKHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLAorc3RhdGljIHN0cnVjdCBtZXJnZV9maWxlX2luZm8gbWVyZ2VfZmlsZV9vbmUoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8sCiAJCQkJCSBjb25zdCBjaGFyICpwYXRoLAogCQkJCQkgY29uc3QgdW5zaWduZWQgY2hhciAqb19zaGEsIGludCBvX21vZGUsCiAJCQkJCSBjb25zdCB1bnNpZ25lZCBjaGFyICphX3NoYSwgaW50IGFfbW9kZSwKQEAgLTEwMzQsMjIgKzEwMTcsMzIgQEAKIAkJcmVtb3ZlX2ZpbGVfZnJvbV9jYWNoZShwYXRoKTsKIAkJdXBkYXRlX2ZpbGUobywgMCwgb19zaGEsIG9fbW9kZSwgcmVuYW1lZCA/IHJlbmFtZWQgOiBwYXRoKTsKIAl9IGVsc2UgaWYgKCFhX3NoYSkgewotCQlvdXRwdXQobywgMSwgIkNPTkZMSUNUICglcy9kZWxldGUpOiAlcyBkZWxldGVkIGluICVzICIKLQkJICAgICAgICJhbmQgJXMgaW4gJXMuIFZlcnNpb24gJXMgb2YgJXMgbGVmdCBpbiB0cmVlJXMlcy4iLAotCQkgICAgICAgY2hhbmdlLCBwYXRoLCBvLT5icmFuY2gxLAotCQkgICAgICAgY2hhbmdlX3Bhc3QsIG8tPmJyYW5jaDIsIG8tPmJyYW5jaDIsIHBhdGgsCi0JCSAgICAgICBOVUxMID09IHJlbmFtZWQgPyAiIiA6ICIgYXQgIiwKLQkJICAgICAgIE5VTEwgPT0gcmVuYW1lZCA/ICIiIDogcmVuYW1lZCk7Ci0JCXVwZGF0ZV9maWxlKG8sIDAsIGJfc2hhLCBiX21vZGUsIHJlbmFtZWQgPyByZW5hbWVkIDogcGF0aCk7CisJCWlmICghcmVuYW1lZCkgeworCQkJb3V0cHV0KG8sIDEsIF8oIkNPTkZMSUNUICglcy9kZWxldGUpOiAlcyBkZWxldGVkIGluICVzICIKKwkJCSAgICAgICAiYW5kICVzIGluICVzLiBWZXJzaW9uICVzIG9mICVzIGxlZnQgaW4gdHJlZS4iKSwKKwkJCSAgICAgICBjaGFuZ2UsIHBhdGgsIG8tPmJyYW5jaDEsIGNoYW5nZV9wYXN0LAorCQkJICAgICAgIG8tPmJyYW5jaDIsIG8tPmJyYW5jaDIsIHBhdGgpOworCQkJdXBkYXRlX2ZpbGUobywgMCwgYl9zaGEsIGJfbW9kZSwgcGF0aCk7CisJCX0gZWxzZSB7CisJCQlvdXRwdXQobywgMSwgXygiQ09ORkxJQ1QgKCVzL2RlbGV0ZSk6ICVzIGRlbGV0ZWQgaW4gJXMgIgorCQkJICAgICAgICJhbmQgJXMgaW4gJXMuIFZlcnNpb24gJXMgb2YgJXMgbGVmdCBpbiB0cmVlIGF0ICVzLiIpLAorCQkJICAgICAgIGNoYW5nZSwgcGF0aCwgby0+YnJhbmNoMSwgY2hhbmdlX3Bhc3QsCisJCQkgICAgICAgby0+YnJhbmNoMiwgby0+YnJhbmNoMiwgcGF0aCwgcmVuYW1lZCk7CisJCQl1cGRhdGVfZmlsZShvLCAwLCBiX3NoYSwgYl9tb2RlLCByZW5hbWVkKTsKKwkJfQogCX0gZWxzZSB7Ci0JCW91dHB1dChvLCAxLCAiQ09ORkxJQ1QgKCVzL2RlbGV0ZSk6ICVzIGRlbGV0ZWQgaW4gJXMgIgotCQkgICAgICAgImFuZCAlcyBpbiAlcy4gVmVyc2lvbiAlcyBvZiAlcyBsZWZ0IGluIHRyZWUlcyVzLiIsCi0JCSAgICAgICBjaGFuZ2UsIHBhdGgsIG8tPmJyYW5jaDIsCi0JCSAgICAgICBjaGFuZ2VfcGFzdCwgby0+YnJhbmNoMSwgby0+YnJhbmNoMSwgcGF0aCwKLQkJICAgICAgIE5VTEwgPT0gcmVuYW1lZCA/ICIiIDogIiBhdCAiLAotCQkgICAgICAgTlVMTCA9PSByZW5hbWVkID8gIiIgOiByZW5hbWVkKTsKLQkJaWYgKHJlbmFtZWQpCisJCWlmICghcmVuYW1lZCkgeworCQkJb3V0cHV0KG8sIDEsIF8oIkNPTkZMSUNUICglcy9kZWxldGUpOiAlcyBkZWxldGVkIGluICVzICIKKwkJCSAgICAgICAiYW5kICVzIGluICVzLiBWZXJzaW9uICVzIG9mICVzIGxlZnQgaW4gdHJlZS4iKSwKKwkJCSAgICAgICBjaGFuZ2UsIHBhdGgsIG8tPmJyYW5jaDIsIGNoYW5nZV9wYXN0LAorCQkJICAgICAgIG8tPmJyYW5jaDEsIG8tPmJyYW5jaDEsIHBhdGgpOworCQl9IGVsc2UgeworCQkJb3V0cHV0KG8sIDEsIF8oIkNPTkZMSUNUICglcy9kZWxldGUpOiAlcyBkZWxldGVkIGluICVzICIKKwkJCSAgICAgICAiYW5kICVzIGluICVzLiBWZXJzaW9uICVzIG9mICVzIGxlZnQgaW4gdHJlZSBhdCAlcy4iKSwKKwkJCSAgICAgICBjaGFuZ2UsIHBhdGgsIG8tPmJyYW5jaDIsIGNoYW5nZV9wYXN0LAorCQkJICAgICAgIG8tPmJyYW5jaDEsIG8tPmJyYW5jaDEsIHBhdGgsIHJlbmFtZWQpOwogCQkJdXBkYXRlX2ZpbGUobywgMCwgYV9zaGEsIGFfbW9kZSwgcmVuYW1lZCk7CisJCX0KIAkJLyoKIAkJICogTm8gbmVlZCB0byBjYWxsIHVwZGF0ZV9maWxlKCkgb24gcGF0aCB3aGVuICFyZW5hbWVkLCBzaW5jZQogCQkgKiB0aGF0IHdvdWxkIG5lZWRsZXNzbHkgdG91Y2ggcGF0aC4gIFdlIGNvdWxkIGNhbGwKQEAgLTEwODUsNyArMTA3OCw3IEBACiAJCQkgICAgIG9yaWctPnNoYTEsIG9yaWctPm1vZGUsCiAJCQkgICAgIGFfc2hhLCBhX21vZGUsCiAJCQkgICAgIGJfc2hhLCBiX21vZGUsCi0JCQkgICAgICJyZW5hbWUiLCAicmVuYW1lZCIpOworCQkJICAgICBfKCJyZW5hbWUiKSwgXygicmVuYW1lZCIpKTsKIAogCWlmIChvLT5jYWxsX2RlcHRoKSB7CiAJCXJlbW92ZV9maWxlX2Zyb21fY2FjaGUoZGVzdC0+cGF0aCk7CkBAIC0xMTQxLDcgKzExMzQsNyBAQAogCX0gZWxzZSB7CiAJCWlmIChkaXJfaW5fd2F5KHJlbmFtZS0+cGF0aCwgIW8tPmNhbGxfZGVwdGgpKSB7CiAJCQlkc3RfbmFtZSA9IHVuaXF1ZV9wYXRoKG8sIHJlbmFtZS0+cGF0aCwgY3VyX2JyYW5jaCk7Ci0JCQlvdXRwdXQobywgMSwgIiVzIGlzIGEgZGlyZWN0b3J5IGluICVzIGFkZGluZyBhcyAlcyBpbnN0ZWFkIiwKKwkJCW91dHB1dChvLCAxLCBfKCIlcyBpcyBhIGRpcmVjdG9yeSBpbiAlcyBhZGRpbmcgYXMgJXMgaW5zdGVhZCIpLAogCQkJICAgICAgIHJlbmFtZS0+cGF0aCwgb3RoZXJfYnJhbmNoLCBkc3RfbmFtZSk7CiAJCX0KIAl9CkBAIC0xMTYzLDE3ICsxMTU2LDE3IEBACiAJc3RydWN0IGRpZmZfZmlsZXNwZWMgKmEgPSBjaS0+cGFpcjEtPnR3bzsKIAlzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqYiA9IGNpLT5wYWlyMi0+dHdvOwogCi0Jb3V0cHV0KG8sIDEsICJDT05GTElDVCAocmVuYW1lL3JlbmFtZSk6ICIKKwlvdXRwdXQobywgMSwgXygiQ09ORkxJQ1QgKHJlbmFtZS9yZW5hbWUpOiAiCiAJICAgICAgICJSZW5hbWUgXCIlc1wiLT5cIiVzXCIgaW4gYnJhbmNoIFwiJXNcIiAiCi0JICAgICAgICJyZW5hbWUgXCIlc1wiLT5cIiVzXCIgaW4gXCIlc1wiJXMiLAorCSAgICAgICAicmVuYW1lIFwiJXNcIi0+XCIlc1wiIGluIFwiJXNcIiVzIiksCiAJICAgICAgIG9uZS0+cGF0aCwgYS0+cGF0aCwgY2ktPmJyYW5jaDEsCiAJICAgICAgIG9uZS0+cGF0aCwgYi0+cGF0aCwgY2ktPmJyYW5jaDIsCi0JICAgICAgIG8tPmNhbGxfZGVwdGggPyAiIChsZWZ0IHVucmVzb2x2ZWQpIiA6ICIiKTsKKwkgICAgICAgby0+Y2FsbF9kZXB0aCA/IF8oIiAobGVmdCB1bnJlc29sdmVkKSIpIDogIiIpOwogCWlmIChvLT5jYWxsX2RlcHRoKSB7CiAJCXN0cnVjdCBtZXJnZV9maWxlX2luZm8gbWZpOwogCQlzdHJ1Y3QgZGlmZl9maWxlc3BlYyBvdGhlcjsKIAkJc3RydWN0IGRpZmZfZmlsZXNwZWMgKmFkZDsKLQkJbWZpID0gbWVyZ2VfZmlsZShvLCBvbmUtPnBhdGgsCisJCW1maSA9IG1lcmdlX2ZpbGVfb25lKG8sIG9uZS0+cGF0aCwKIAkJCQkgb25lLT5zaGExLCBvbmUtPm1vZGUsCiAJCQkJIGEtPnNoYTEsIGEtPm1vZGUsCiAJCQkJIGItPnNoYTEsIGItPm1vZGUsCkBAIC0xMjIyLDkgKzEyMTUsOSBAQAogCXN0cnVjdCBtZXJnZV9maWxlX2luZm8gbWZpX2MxOwogCXN0cnVjdCBtZXJnZV9maWxlX2luZm8gbWZpX2MyOwogCi0Jb3V0cHV0KG8sIDEsICJDT05GTElDVCAocmVuYW1lL3JlbmFtZSk6ICIKKwlvdXRwdXQobywgMSwgXygiQ09ORkxJQ1QgKHJlbmFtZS9yZW5hbWUpOiAiCiAJICAgICAgICJSZW5hbWUgJXMtPiVzIGluICVzLiAiCi0JICAgICAgICJSZW5hbWUgJXMtPiVzIGluICVzIiwKKwkgICAgICAgIlJlbmFtZSAlcy0+JXMgaW4gJXMiKSwKIAkgICAgICAgYS0+cGF0aCwgYzEtPnBhdGgsIGNpLT5icmFuY2gxLAogCSAgICAgICBiLT5wYXRoLCBjMi0+cGF0aCwgY2ktPmJyYW5jaDIpOwogCkBAIC0xMjUyLDcgKzEyNDUsNyBAQAogCX0gZWxzZSB7CiAJCWNoYXIgKm5ld19wYXRoMSA9IHVuaXF1ZV9wYXRoKG8sIHBhdGgsIGNpLT5icmFuY2gxKTsKIAkJY2hhciAqbmV3X3BhdGgyID0gdW5pcXVlX3BhdGgobywgcGF0aCwgY2ktPmJyYW5jaDIpOwotCQlvdXRwdXQobywgMSwgIlJlbmFtaW5nICVzIHRvICVzIGFuZCAlcyB0byAlcyBpbnN0ZWFkIiwKKwkJb3V0cHV0KG8sIDEsIF8oIlJlbmFtaW5nICVzIHRvICVzIGFuZCAlcyB0byAlcyBpbnN0ZWFkIiksCiAJCSAgICAgICBhLT5wYXRoLCBuZXdfcGF0aDEsIGItPnBhdGgsIG5ld19wYXRoMik7CiAJCXJlbW92ZV9maWxlKG8sIDAsIHBhdGgsIDApOwogCQl1cGRhdGVfZmlsZShvLCAwLCBtZmlfYzEuc2hhLCBtZmlfYzEubW9kZSwgbmV3X3BhdGgxKTsKQEAgLTE0NTEsMjIgKzE0NDQsMjIgQEAKIAkJCX0gZWxzZSBpZiAoIXNoYV9lcShkc3Rfb3RoZXIuc2hhMSwgbnVsbF9zaGExKSkgewogCQkJCWNsZWFuX21lcmdlID0gMDsKIAkJCQl0cnlfbWVyZ2UgPSAxOwotCQkJCW91dHB1dChvLCAxLCAiQ09ORkxJQ1QgKHJlbmFtZS9hZGQpOiBSZW5hbWUgJXMtPiVzIGluICVzLiAiCi0JCQkJICAgICAgICIlcyBhZGRlZCBpbiAlcyIsCisJCQkJb3V0cHV0KG8sIDEsIF8oIkNPTkZMSUNUIChyZW5hbWUvYWRkKTogUmVuYW1lICVzLT4lcyBpbiAlcy4gIgorCQkJCSAgICAgICAiJXMgYWRkZWQgaW4gJXMiKSwKIAkJCQkgICAgICAgcmVuMV9zcmMsIHJlbjFfZHN0LCBicmFuY2gxLAogCQkJCSAgICAgICByZW4xX2RzdCwgYnJhbmNoMik7CiAJCQkJaWYgKG8tPmNhbGxfZGVwdGgpIHsKIAkJCQkJc3RydWN0IG1lcmdlX2ZpbGVfaW5mbyBtZmk7Ci0JCQkJCW1maSA9IG1lcmdlX2ZpbGUobywgcmVuMV9kc3QsIG51bGxfc2hhMSwgMCwKKwkJCQkJbWZpID0gbWVyZ2VfZmlsZV9vbmUobywgcmVuMV9kc3QsIG51bGxfc2hhMSwgMCwKIAkJCQkJCQkgcmVuMS0+cGFpci0+dHdvLT5zaGExLCByZW4xLT5wYWlyLT50d28tPm1vZGUsCiAJCQkJCQkJIGRzdF9vdGhlci5zaGExLCBkc3Rfb3RoZXIubW9kZSwKIAkJCQkJCQkgYnJhbmNoMSwgYnJhbmNoMik7Ci0JCQkJCW91dHB1dChvLCAxLCAiQWRkaW5nIG1lcmdlZCAlcyIsIHJlbjFfZHN0KTsKKwkJCQkJb3V0cHV0KG8sIDEsIF8oIkFkZGluZyBtZXJnZWQgJXMiKSwgcmVuMV9kc3QpOwogCQkJCQl1cGRhdGVfZmlsZShvLCAwLCBtZmkuc2hhLCBtZmkubW9kZSwgcmVuMV9kc3QpOwogCQkJCQl0cnlfbWVyZ2UgPSAwOwogCQkJCX0gZWxzZSB7CiAJCQkJCWNoYXIgKm5ld19wYXRoID0gdW5pcXVlX3BhdGgobywgcmVuMV9kc3QsIGJyYW5jaDIpOwotCQkJCQlvdXRwdXQobywgMSwgIkFkZGluZyBhcyAlcyBpbnN0ZWFkIiwgbmV3X3BhdGgpOworCQkJCQlvdXRwdXQobywgMSwgXygiQWRkaW5nIGFzICVzIGluc3RlYWQiKSwgbmV3X3BhdGgpOwogCQkJCQl1cGRhdGVfZmlsZShvLCAwLCBkc3Rfb3RoZXIuc2hhMSwgZHN0X290aGVyLm1vZGUsIG5ld19wYXRoKTsKIAkJCQkJZnJlZShuZXdfcGF0aCk7CiAJCQkJfQpAQCAtMTUxNywxMCArMTUxMCwxMCBAQAogCXVuc2lnbmVkIGxvbmcgc2l6ZTsKIAlidWYgPSByZWFkX3NoYTFfZmlsZShzaGExLCAmdHlwZSwgJnNpemUpOwogCWlmICghYnVmKQotCQlyZXR1cm4gZXJyb3IoImNhbm5vdCByZWFkIG9iamVjdCAlcyIsIHNoYTFfdG9faGV4KHNoYTEpKTsKKwkJcmV0dXJuIGVycm9yKF8oImNhbm5vdCByZWFkIG9iamVjdCAlcyIpLCBzaGExX3RvX2hleChzaGExKSk7CiAJaWYgKHR5cGUgIT0gT0JKX0JMT0IpIHsKIAkJZnJlZShidWYpOwotCQlyZXR1cm4gZXJyb3IoIm9iamVjdCAlcyBpcyBub3QgYSBibG9iIiwgc2hhMV90b19oZXgoc2hhMSkpOworCQlyZXR1cm4gZXJyb3IoXygib2JqZWN0ICVzIGlzIG5vdCBhIGJsb2IiKSwgc2hhMV90b19oZXgoc2hhMSkpOwogCX0KIAlzdHJidWZfYXR0YWNoKGRzdCwgYnVmLCBzaXplLCBzaXplICsgMSk7CiAJcmV0dXJuIDA7CkBAIC0xNTY4LDcgKzE1NjEsNyBAQAogCQkJICAgICBvX3NoYSwgb19tb2RlLAogCQkJICAgICBhX3NoYSwgYV9tb2RlLAogCQkJICAgICBiX3NoYSwgYl9tb2RlLAotCQkJICAgICAibW9kaWZ5IiwgIm1vZGlmaWVkIik7CisJCQkgICAgIF8oIm1vZGlmeSIpLCBfKCJtb2RpZmllZCIpKTsKIH0KIAogc3RhdGljIGludCBtZXJnZV9jb250ZW50KHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLApAQCAtMTU3OCwxNCArMTU3MSwxNCBAQAogCQkJIHVuc2lnbmVkIGNoYXIgKmJfc2hhLCBpbnQgYl9tb2RlLAogCQkJIHN0cnVjdCByZW5hbWVfY29uZmxpY3RfaW5mbyAqcmVuYW1lX2NvbmZsaWN0X2luZm8pCiB7Ci0JY29uc3QgY2hhciAqcmVhc29uID0gImNvbnRlbnQiOworCWNvbnN0IGNoYXIgKnJlYXNvbiA9IF8oImNvbnRlbnQiKTsKIAljb25zdCBjaGFyICpwYXRoMSA9IE5VTEwsICpwYXRoMiA9IE5VTEw7CiAJc3RydWN0IG1lcmdlX2ZpbGVfaW5mbyBtZmk7CiAJc3RydWN0IGRpZmZfZmlsZXNwZWMgb25lLCBhLCBiOwogCXVuc2lnbmVkIGRmX2NvbmZsaWN0X3JlbWFpbnMgPSAwOwogCiAJaWYgKCFvX3NoYSkgewotCQlyZWFzb24gPSAiYWRkL2FkZCI7CisJCXJlYXNvbiA9IF8oImFkZC9hZGQiKTsKIAkJb19zaGEgPSAodW5zaWduZWQgY2hhciAqKW51bGxfc2hhMTsKIAl9CiAJb25lLnBhdGggPSBhLnBhdGggPSBiLnBhdGggPSAoY2hhciAqKXBhdGg7CkBAIC0xNjE5LDcgKzE2MTIsNyBAQAogCWlmIChtZmkuY2xlYW4gJiYgIWRmX2NvbmZsaWN0X3JlbWFpbnMgJiYKIAkgICAgc2hhX2VxKG1maS5zaGEsIGFfc2hhKSAmJiBtZmkubW9kZSA9PSBhX21vZGUpIHsKIAkJaW50IHBhdGhfcmVuYW1lZF9vdXRzaWRlX0hFQUQ7Ci0JCW91dHB1dChvLCAzLCAiU2tpcHBlZCAlcyAobWVyZ2VkIHNhbWUgYXMgZXhpc3RpbmcpIiwgcGF0aCk7CisJCW91dHB1dChvLCAzLCBfKCJTa2lwcGVkICVzIChtZXJnZWQgc2FtZSBhcyBleGlzdGluZykiKSwgcGF0aCk7CiAJCS8qCiAJCSAqIFRoZSBjb250ZW50IG1lcmdlIHJlc3VsdGVkIGluIHRoZSBzYW1lIGZpbGUgY29udGVudHMgd2UKIAkJICogYWxyZWFkeSBoYWQuICBXZSBjYW4gcmV0dXJuIGVhcmx5IGlmIHRob3NlIGZpbGUgY29udGVudHMKQEAgLTE2MzMsMTIgKzE2MjYsMTIgQEAKIAkJCXJldHVybiBtZmkuY2xlYW47CiAJCX0KIAl9IGVsc2UKLQkJb3V0cHV0KG8sIDIsICJBdXRvLW1lcmdpbmcgJXMiLCBwYXRoKTsKKwkJb3V0cHV0KG8sIDIsIF8oIkF1dG8tbWVyZ2luZyAlcyIpLCBwYXRoKTsKIAogCWlmICghbWZpLmNsZWFuKSB7CiAJCWlmIChTX0lTR0lUTElOSyhtZmkubW9kZSkpCi0JCQlyZWFzb24gPSAic3VibW9kdWxlIjsKLQkJb3V0cHV0KG8sIDEsICJDT05GTElDVCAoJXMpOiBNZXJnZSBjb25mbGljdCBpbiAlcyIsCisJCQlyZWFzb24gPSBfKCJzdWJtb2R1bGUiKTsKKwkJb3V0cHV0KG8sIDEsIF8oIkNPTkZMSUNUICglcyk6IE1lcmdlIGNvbmZsaWN0IGluICVzIiksCiAJCQkJcmVhc29uLCBwYXRoKTsKIAkJaWYgKHJlbmFtZV9jb25mbGljdF9pbmZvICYmICFkZl9jb25mbGljdF9yZW1haW5zKQogCQkJdXBkYXRlX3N0YWdlcyhwYXRoLCAmb25lLCAmYSwgJmIpOwpAQCAtMTY2NCw3ICsxNjU3LDcgQEAKIAogCQl9CiAJCW5ld19wYXRoID0gdW5pcXVlX3BhdGgobywgcGF0aCwgcmVuYW1lX2NvbmZsaWN0X2luZm8tPmJyYW5jaDEpOwotCQlvdXRwdXQobywgMSwgIkFkZGluZyBhcyAlcyBpbnN0ZWFkIiwgbmV3X3BhdGgpOworCQlvdXRwdXQobywgMSwgXygiQWRkaW5nIGFzICVzIGluc3RlYWQiKSwgbmV3X3BhdGgpOwogCQl1cGRhdGVfZmlsZShvLCAwLCBtZmkuc2hhLCBtZmkubW9kZSwgbmV3X3BhdGgpOwogCQlmcmVlKG5ld19wYXRoKTsKIAkJbWZpLmNsZWFuID0gMDsKQEAgLTE3MjgsNyArMTcyMSw3IEBACiAJCQkvKiBEZWxldGVkIGluIGJvdGggb3IgZGVsZXRlZCBpbiBvbmUgYW5kCiAJCQkgKiB1bmNoYW5nZWQgaW4gdGhlIG90aGVyICovCiAJCQlpZiAoYV9zaGEpCi0JCQkJb3V0cHV0KG8sIDIsICJSZW1vdmluZyAlcyIsIHBhdGgpOworCQkJCW91dHB1dChvLCAyLCBfKCJSZW1vdmluZyAlcyIpLCBwYXRoKTsKIAkJCS8qIGRvIG5vdCB0b3VjaCB3b3JraW5nIGZpbGUgaWYgaXQgZGlkIG5vdCBleGlzdCAqLwogCQkJcmVtb3ZlX2ZpbGUobywgMSwgcGF0aCwgIWFfc2hhKTsKIAkJfSBlbHNlIHsKQEAgLTE3NTMsMTkgKzE3NDYsMTkgQEAKIAkJCW90aGVyX2JyYW5jaCA9IG8tPmJyYW5jaDI7CiAJCQltb2RlID0gYV9tb2RlOwogCQkJc2hhID0gYV9zaGE7Ci0JCQljb25mID0gImZpbGUvZGlyZWN0b3J5IjsKKwkJCWNvbmYgPSBfKCJmaWxlL2RpcmVjdG9yeSIpOwogCQl9IGVsc2UgewogCQkJYWRkX2JyYW5jaCA9IG8tPmJyYW5jaDI7CiAJCQlvdGhlcl9icmFuY2ggPSBvLT5icmFuY2gxOwogCQkJbW9kZSA9IGJfbW9kZTsKIAkJCXNoYSA9IGJfc2hhOwotCQkJY29uZiA9ICJkaXJlY3RvcnkvZmlsZSI7CisJCQljb25mID0gXygiZGlyZWN0b3J5L2ZpbGUiKTsKIAkJfQogCQlpZiAoZGlyX2luX3dheShwYXRoLCAhby0+Y2FsbF9kZXB0aCkpIHsKIAkJCWNoYXIgKm5ld19wYXRoID0gdW5pcXVlX3BhdGgobywgcGF0aCwgYWRkX2JyYW5jaCk7CiAJCQljbGVhbl9tZXJnZSA9IDA7Ci0JCQlvdXRwdXQobywgMSwgIkNPTkZMSUNUICglcyk6IFRoZXJlIGlzIGEgZGlyZWN0b3J5IHdpdGggbmFtZSAlcyBpbiAlcy4gIgotCQkJICAgICAgICJBZGRpbmcgJXMgYXMgJXMiLAorCQkJb3V0cHV0KG8sIDEsIF8oIkNPTkZMSUNUICglcyk6IFRoZXJlIGlzIGEgZGlyZWN0b3J5IHdpdGggbmFtZSAlcyBpbiAlcy4gIgorCQkJICAgICAgICJBZGRpbmcgJXMgYXMgJXMiKSwKIAkJCSAgICAgICBjb25mLCBwYXRoLCBvdGhlcl9icmFuY2gsIHBhdGgsIG5ld19wYXRoKTsKIAkJCWlmIChvLT5jYWxsX2RlcHRoKQogCQkJCXJlbW92ZV9maWxlX2Zyb21fY2FjaGUocGF0aCk7CkBAIC0xNzc0LDcgKzE3NjcsNyBAQAogCQkJCXJlbW92ZV9maWxlX2Zyb21fY2FjaGUocGF0aCk7CiAJCQlmcmVlKG5ld19wYXRoKTsKIAkJfSBlbHNlIHsKLQkJCW91dHB1dChvLCAyLCAiQWRkaW5nICVzIiwgcGF0aCk7CisJCQlvdXRwdXQobywgMiwgXygiQWRkaW5nICVzIiksIHBhdGgpOwogCQkJLyogZG8gbm90IG92ZXJ3cml0ZSBmaWxlIGlmIGFscmVhZHkgcHJlc2VudCAqLwogCQkJdXBkYXRlX2ZpbGVfZmxhZ3Mobywgc2hhLCBtb2RlLCBwYXRoLCAxLCAhYV9zaGEpOwogCQl9CkBAIC0xNzkxLDcgKzE3ODQsNyBAQAogCQkgKi8KIAkJcmVtb3ZlX2ZpbGUobywgMSwgcGF0aCwgIWFfbW9kZSk7CiAJfSBlbHNlCi0JCWRpZSgiRmF0YWwgbWVyZ2UgZmFpbHVyZSwgc2hvdWxkbid0IGhhcHBlbi4iKTsKKwkJZGllKF8oIkZhdGFsIG1lcmdlIGZhaWx1cmUsIHNob3VsZG4ndCBoYXBwZW4uIikpOwogCiAJcmV0dXJuIGNsZWFuX21lcmdlOwogfQpAQCAtMTgxMCw3ICsxODAzLDcgQEAKIAl9CiAKIAlpZiAoc2hhX2VxKGNvbW1vbi0+b2JqZWN0LnNoYTEsIG1lcmdlLT5vYmplY3Quc2hhMSkpIHsKLQkJb3V0cHV0KG8sIDAsICJBbHJlYWR5IHVwLXRvLWRhdGUhIik7CisJCW91dHB1dChvLCAwLCBfKCJBbHJlYWR5IHVwLXRvLWRhdGUhIikpOwogCQkqcmVzdWx0ID0gaGVhZDsKIAkJcmV0dXJuIDE7CiAJfQpAQCAtMTgxOSw3ICsxODEyLDcgQEAKIAogCWlmIChjb2RlICE9IDApIHsKIAkJaWYgKHNob3cobywgNCkgfHwgby0+Y2FsbF9kZXB0aCkKLQkJCWRpZSgibWVyZ2luZyBvZiB0cmVlcyAlcyBhbmQgJXMgZmFpbGVkIiwKKwkJCWRpZShfKCJtZXJnaW5nIG9mIHRyZWVzICVzIGFuZCAlcyBmYWlsZWQiKSwKIAkJCSAgICBzaGExX3RvX2hleChoZWFkLT5vYmplY3Quc2hhMSksCiAJCQkgICAgc2hhMV90b19oZXgobWVyZ2UtPm9iamVjdC5zaGExKSk7CiAJCWVsc2UKQEAgLTE4NDksNyArMTg0Miw3IEBACiAJCWZvciAoaSA9IDA7IGkgPCBlbnRyaWVzLT5ucjsgaSsrKSB7CiAJCQlzdHJ1Y3Qgc3RhZ2VfZGF0YSAqZSA9IGVudHJpZXMtPml0ZW1zW2ldLnV0aWw7CiAJCQlpZiAoIWUtPnByb2Nlc3NlZCkKLQkJCQlkaWUoIlVucHJvY2Vzc2VkIHBhdGg/Pz8gJXMiLAorCQkJCWRpZShfKCJVbnByb2Nlc3NlZCBwYXRoPz8/ICVzIiksCiAJCQkJICAgIGVudHJpZXMtPml0ZW1zW2ldLnN0cmluZyk7CiAJCX0KIApAQCAtMTg5NCw3ICsxODg3LDcgQEAKIAlpbnQgY2xlYW47CiAKIAlpZiAoc2hvdyhvLCA0KSkgewotCQlvdXRwdXQobywgNCwgIk1lcmdpbmc6Iik7CisJCW91dHB1dChvLCA0LCBfKCJNZXJnaW5nOiIpKTsKIAkJb3V0cHV0X2NvbW1pdF90aXRsZShvLCBoMSk7CiAJCW91dHB1dF9jb21taXRfdGl0bGUobywgaDIpOwogCX0KQEAgLTE5MDUsNyArMTg5OCwxMCBAQAogCX0KIAogCWlmIChzaG93KG8sIDUpKSB7Ci0JCW91dHB1dChvLCA1LCAiZm91bmQgJXUgY29tbW9uIGFuY2VzdG9yKHMpOiIsIGNvbW1pdF9saXN0X2NvdW50KGNhKSk7CisJCXVuc2lnbmVkIGNudCA9IGNvbW1pdF9saXN0X2NvdW50KGNhKTsKKworCQlvdXRwdXQobywgNSwgUV8oImZvdW5kICV1IGNvbW1vbiBhbmNlc3RvcjoiLAorCQkJCSJmb3VuZCAldSBjb21tb24gYW5jZXN0b3JzOiIsIGNudCksIGNudCk7CiAJCWZvciAoaXRlciA9IGNhOyBpdGVyOyBpdGVyID0gaXRlci0+bmV4dCkKIAkJCW91dHB1dF9jb21taXRfdGl0bGUobywgaXRlci0+aXRlbSk7CiAJfQpAQCAtMTk0MSw3ICsxOTM3LDcgQEAKIAkJby0+Y2FsbF9kZXB0aC0tOwogCiAJCWlmICghbWVyZ2VkX2NvbW1vbl9hbmNlc3RvcnMpCi0JCQlkaWUoIm1lcmdlIHJldHVybmVkIG5vIGNvbW1pdCIpOworCQkJZGllKF8oIm1lcmdlIHJldHVybmVkIG5vIGNvbW1pdCIpKTsKIAl9CiAKIAlkaXNjYXJkX2NhY2hlKCk7CkBAIC0xOTk4LDcgKzE5OTQsNyBAQAogCQlmb3IgKGkgPSAwOyBpIDwgbnVtX2Jhc2VfbGlzdDsgKytpKSB7CiAJCQlzdHJ1Y3QgY29tbWl0ICpiYXNlOwogCQkJaWYgKCEoYmFzZSA9IGdldF9yZWYoYmFzZV9saXN0W2ldLCBzaGExX3RvX2hleChiYXNlX2xpc3RbaV0pKSkpCi0JCQkJcmV0dXJuIGVycm9yKCJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcyciLAorCQkJCXJldHVybiBlcnJvcihfKCJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcyciKSwKIAkJCQkJc2hhMV90b19oZXgoYmFzZV9saXN0W2ldKSk7CiAJCQljb21taXRfbGlzdF9pbnNlcnQoYmFzZSwgJmNhKTsKIAkJfQpAQCAtMjAxMCw3ICsyMDA2LDcgQEAKIAlpZiAoYWN0aXZlX2NhY2hlX2NoYW5nZWQgJiYKIAkJCSh3cml0ZV9jYWNoZShpbmRleF9mZCwgYWN0aXZlX2NhY2hlLCBhY3RpdmVfbnIpIHx8CiAJCQkgY29tbWl0X2xvY2tlZF9pbmRleChsb2NrKSkpCi0JCXJldHVybiBlcnJvcigiVW5hYmxlIHRvIHdyaXRlIGluZGV4LiIpOworCQlyZXR1cm4gZXJyb3IoXygiVW5hYmxlIHRvIHdyaXRlIGluZGV4LiIpKTsKIAogCXJldHVybiBjbGVhbiA/IDAgOiAxOwogfQpAQCAtMjA3Miw2ICsyMDY4LDE1IEBACiAJCW8tPnhkbF9vcHRzID0gRElGRl9XSVRIX0FMRyhvLCBQQVRJRU5DRV9ESUZGKTsKIAllbHNlIGlmICghc3RyY21wKHMsICJoaXN0b2dyYW0iKSkKIAkJby0+eGRsX29wdHMgPSBESUZGX1dJVEhfQUxHKG8sIEhJU1RPR1JBTV9ESUZGKTsKKwllbHNlIGlmICghc3RyY21wKHMsICJkaWZmLWFsZ29yaXRobT0iKSkgeworCQlsb25nIHZhbHVlID0gcGFyc2VfYWxnb3JpdGhtX3ZhbHVlKHMrMTUpOworCQlpZiAodmFsdWUgPCAwKQorCQkJcmV0dXJuIC0xOworCQkvKiBjbGVhciBvdXQgcHJldmlvdXMgc2V0dGluZ3MgKi8KKwkJRElGRl9YRExfQ0xSKG8sIE5FRURfTUlOSU1BTCk7CisJCW8tPnhkbF9vcHRzICY9IH5YREZfRElGRl9BTEdPUklUSE1fTUFTSzsKKwkJby0+eGRsX29wdHMgfD0gdmFsdWU7CisJfQogCWVsc2UgaWYgKCFzdHJjbXAocywgImlnbm9yZS1zcGFjZS1jaGFuZ2UiKSkKIAkJby0+eGRsX29wdHMgfD0gWERGX0lHTk9SRV9XSElURVNQQUNFX0NIQU5HRTsKIAllbHNlIGlmICghc3RyY21wKHMsICJpZ25vcmUtYWxsLXNwYWNlIikpCmRpZmYgLS1naXQgYS9tZXJnZS1yZWN1cnNpdmUuaCBiL21lcmdlLXJlY3Vyc2l2ZS5oCmluZGV4IDU4ZjM0MzUuLjllMDkwYTMgMTAwNjQ0Ci0tLSBhL21lcmdlLXJlY3Vyc2l2ZS5oCisrKyBiL21lcmdlLXJlY3Vyc2l2ZS5oCkBAIC01OSw5ICs1OSw0IEBACiAKIGludCBwYXJzZV9tZXJnZV9vcHQoc3RydWN0IG1lcmdlX29wdGlvbnMgKm91dCwgY29uc3QgY2hhciAqcyk7CiAKLS8qIGJ1aWx0aW4vbWVyZ2UuYyAqLwotaW50IHRyeV9tZXJnZV9jb21tYW5kKGNvbnN0IGNoYXIgKnN0cmF0ZWd5LCBzaXplX3QgeG9wdHNfbnIsCi0JCWNvbnN0IGNoYXIgKip4b3B0cywgc3RydWN0IGNvbW1pdF9saXN0ICpjb21tb24sCi0JCWNvbnN0IGNoYXIgKmhlYWRfYXJnLCBzdHJ1Y3QgY29tbWl0X2xpc3QgKnJlbW90ZXMpOwotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL21lcmdlLmMgYi9tZXJnZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwZjEwMDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXJnZS5jCkBAIC0wLDAgKzEsMTEyIEBACisjaW5jbHVkZSAiY2FjaGUuaCIKKyNpbmNsdWRlICJjb21taXQuaCIKKyNpbmNsdWRlICJydW4tY29tbWFuZC5oIgorI2luY2x1ZGUgInJlc29sdmUtdW5kby5oIgorI2luY2x1ZGUgInRyZWUtd2Fsay5oIgorI2luY2x1ZGUgInVucGFjay10cmVlcy5oIgorI2luY2x1ZGUgImRpci5oIgorCitzdGF0aWMgY29uc3QgY2hhciAqbWVyZ2VfYXJndW1lbnQoc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCWlmIChjb21taXQpCisJCXJldHVybiBzaGExX3RvX2hleChjb21taXQtPm9iamVjdC5zaGExKTsKKwllbHNlCisJCXJldHVybiBFTVBUWV9UUkVFX1NIQTFfSEVYOworfQorCitpbnQgdHJ5X21lcmdlX2NvbW1hbmQoY29uc3QgY2hhciAqc3RyYXRlZ3ksIHNpemVfdCB4b3B0c19uciwKKwkJICAgICAgY29uc3QgY2hhciAqKnhvcHRzLCBzdHJ1Y3QgY29tbWl0X2xpc3QgKmNvbW1vbiwKKwkJICAgICAgY29uc3QgY2hhciAqaGVhZF9hcmcsIHN0cnVjdCBjb21taXRfbGlzdCAqcmVtb3RlcykKK3sKKwljb25zdCBjaGFyICoqYXJnczsKKwlpbnQgaSA9IDAsIHggPSAwLCByZXQ7CisJc3RydWN0IGNvbW1pdF9saXN0ICpqOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisKKwlhcmdzID0geG1hbGxvYygoNCArIHhvcHRzX25yICsgY29tbWl0X2xpc3RfY291bnQoY29tbW9uKSArCisJCQljb21taXRfbGlzdF9jb3VudChyZW1vdGVzKSkgKiBzaXplb2YoY2hhciAqKSk7CisJc3RyYnVmX2FkZGYoJmJ1ZiwgIm1lcmdlLSVzIiwgc3RyYXRlZ3kpOworCWFyZ3NbaSsrXSA9IGJ1Zi5idWY7CisJZm9yICh4ID0gMDsgeCA8IHhvcHRzX25yOyB4KyspIHsKKwkJY2hhciAqcyA9IHhtYWxsb2Moc3RybGVuKHhvcHRzW3hdKSsyKzEpOworCQlzdHJjcHkocywgIi0tIik7CisJCXN0cmNweShzKzIsIHhvcHRzW3hdKTsKKwkJYXJnc1tpKytdID0gczsKKwl9CisJZm9yIChqID0gY29tbW9uOyBqOyBqID0gai0+bmV4dCkKKwkJYXJnc1tpKytdID0geHN0cmR1cChtZXJnZV9hcmd1bWVudChqLT5pdGVtKSk7CisJYXJnc1tpKytdID0gIi0tIjsKKwlhcmdzW2krK10gPSBoZWFkX2FyZzsKKwlmb3IgKGogPSByZW1vdGVzOyBqOyBqID0gai0+bmV4dCkKKwkJYXJnc1tpKytdID0geHN0cmR1cChtZXJnZV9hcmd1bWVudChqLT5pdGVtKSk7CisJYXJnc1tpXSA9IE5VTEw7CisJcmV0ID0gcnVuX2NvbW1hbmRfdl9vcHQoYXJncywgUlVOX0dJVF9DTUQpOworCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOworCWkgPSAxOworCWZvciAoeCA9IDA7IHggPCB4b3B0c19ucjsgeCsrKQorCQlmcmVlKCh2b2lkICopYXJnc1tpKytdKTsKKwlmb3IgKGogPSBjb21tb247IGo7IGogPSBqLT5uZXh0KQorCQlmcmVlKCh2b2lkICopYXJnc1tpKytdKTsKKwlpICs9IDI7CisJZm9yIChqID0gcmVtb3RlczsgajsgaiA9IGotPm5leHQpCisJCWZyZWUoKHZvaWQgKilhcmdzW2krK10pOworCWZyZWUoYXJncyk7CisJZGlzY2FyZF9jYWNoZSgpOworCWlmIChyZWFkX2NhY2hlKCkgPCAwKQorCQlkaWUoXygiZmFpbGVkIHRvIHJlYWQgdGhlIGNhY2hlIikpOworCXJlc29sdmVfdW5kb19jbGVhcigpOworCisJcmV0dXJuIHJldDsKK30KKworaW50IGNoZWNrb3V0X2Zhc3RfZm9yd2FyZChjb25zdCB1bnNpZ25lZCBjaGFyICpoZWFkLAorCQkJICBjb25zdCB1bnNpZ25lZCBjaGFyICpyZW1vdGUsCisJCQkgIGludCBvdmVyd3JpdGVfaWdub3JlKQoreworCXN0cnVjdCB0cmVlICp0cmVlc1tNQVhfVU5QQUNLX1RSRUVTXTsKKwlzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgb3B0czsKKwlzdHJ1Y3QgdHJlZV9kZXNjIHRbTUFYX1VOUEFDS19UUkVFU107CisJaW50IGksIGZkLCBucl90cmVlcyA9IDA7CisJc3RydWN0IGRpcl9zdHJ1Y3QgZGlyOworCXN0cnVjdCBsb2NrX2ZpbGUgKmxvY2tfZmlsZSA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBsb2NrX2ZpbGUpKTsKKworCXJlZnJlc2hfY2FjaGUoUkVGUkVTSF9RVUlFVCk7CisKKwlmZCA9IGhvbGRfbG9ja2VkX2luZGV4KGxvY2tfZmlsZSwgMSk7CisKKwltZW1zZXQoJnRyZWVzLCAwLCBzaXplb2YodHJlZXMpKTsKKwltZW1zZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CisJbWVtc2V0KCZ0LCAwLCBzaXplb2YodCkpOworCWlmIChvdmVyd3JpdGVfaWdub3JlKSB7CisJCW1lbXNldCgmZGlyLCAwLCBzaXplb2YoZGlyKSk7CisJCWRpci5mbGFncyB8PSBESVJfU0hPV19JR05PUkVEOworCQlzZXR1cF9zdGFuZGFyZF9leGNsdWRlcygmZGlyKTsKKwkJb3B0cy5kaXIgPSAmZGlyOworCX0KKworCW9wdHMuaGVhZF9pZHggPSAxOworCW9wdHMuc3JjX2luZGV4ID0gJnRoZV9pbmRleDsKKwlvcHRzLmRzdF9pbmRleCA9ICZ0aGVfaW5kZXg7CisJb3B0cy51cGRhdGUgPSAxOworCW9wdHMudmVyYm9zZV91cGRhdGUgPSAxOworCW9wdHMubWVyZ2UgPSAxOworCW9wdHMuZm4gPSB0d293YXlfbWVyZ2U7CisJc2V0dXBfdW5wYWNrX3RyZWVzX3BvcmNlbGFpbigmb3B0cywgIm1lcmdlIik7CisKKwl0cmVlc1tucl90cmVlc10gPSBwYXJzZV90cmVlX2luZGlyZWN0KGhlYWQpOworCWlmICghdHJlZXNbbnJfdHJlZXMrK10pCisJCXJldHVybiAtMTsKKwl0cmVlc1tucl90cmVlc10gPSBwYXJzZV90cmVlX2luZGlyZWN0KHJlbW90ZSk7CisJaWYgKCF0cmVlc1tucl90cmVlcysrXSkKKwkJcmV0dXJuIC0xOworCWZvciAoaSA9IDA7IGkgPCBucl90cmVlczsgaSsrKSB7CisJCXBhcnNlX3RyZWUodHJlZXNbaV0pOworCQlpbml0X3RyZWVfZGVzYyh0K2ksIHRyZWVzW2ldLT5idWZmZXIsIHRyZWVzW2ldLT5zaXplKTsKKwl9CisJaWYgKHVucGFja190cmVlcyhucl90cmVlcywgdCwgJm9wdHMpKQorCQlyZXR1cm4gLTE7CisJaWYgKHdyaXRlX2NhY2hlKGZkLCBhY3RpdmVfY2FjaGUsIGFjdGl2ZV9ucikgfHwKKwkJY29tbWl0X2xvY2tlZF9pbmRleChsb2NrX2ZpbGUpKQorCQlkaWUoXygidW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIikpOworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvbWVyZ2V0b29scy9jb2RlY29tcGFyZSBiL21lcmdldG9vbHMvY29kZWNvbXBhcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2YwNDg2YgotLS0gL2Rldi9udWxsCisrKyBiL21lcmdldG9vbHMvY29kZWNvbXBhcmUKQEAgLTAsMCArMSwyNSBAQAorZGlmZl9jbWQgKCkgeworCSIkbWVyZ2VfdG9vbF9wYXRoIiAiJExPQ0FMIiAiJFJFTU9URSIKK30KKworbWVyZ2VfY21kICgpIHsKKwl0b3VjaCAiJEJBQ0tVUCIKKwlpZiAkYmFzZV9wcmVzZW50CisJdGhlbgorCQkiJG1lcmdlX3Rvb2xfcGF0aCIgLU1GPSIkTE9DQUwiIC1URj0iJFJFTU9URSIgLUJGPSIkQkFTRSIgXAorCQkJLVJGPSIkTUVSR0VEIgorCWVsc2UKKwkJIiRtZXJnZV90b29sX3BhdGgiIC1NRj0iJExPQ0FMIiAtVEY9IiRSRU1PVEUiIFwKKwkJCS1SRj0iJE1FUkdFRCIKKwlmaQorCWNoZWNrX3VuY2hhbmdlZAorfQorCit0cmFuc2xhdGVfbWVyZ2VfdG9vbF9wYXRoKCkgeworCWlmIG1lcmdlX21vZGUKKwl0aGVuCisJCWVjaG8gQ29kZU1lcmdlCisJZWxzZQorCQllY2hvIENvZGVDb21wYXJlCisJZmkKK30KZGlmZiAtLWdpdCBhL21lcmdldG9vbHMvZGVmYXVsdHMgYi9tZXJnZXRvb2xzL2RlZmF1bHRzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDhmMmEzLi4wMDAwMDAwCi0tLSBhL21lcmdldG9vbHMvZGVmYXVsdHMKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0jIFJlZGVmaW5lZCBieSBidWlsdGluIHRvb2xzCi1jYW5fbWVyZ2UgKCkgewotCXJldHVybiAwCi19Ci0KLWNhbl9kaWZmICgpIHsKLQlyZXR1cm4gMAotfQotCi1kaWZmX2NtZCAoKSB7Ci0JbWVyZ2VfdG9vbF9jbWQ9IiQoZ2V0X21lcmdlX3Rvb2xfY21kICIkMSIpIgotCWlmIHRlc3QgLXogIiRtZXJnZV90b29sX2NtZCIKLQl0aGVuCi0JCXN0YXR1cz0xCi0JCWJyZWFrCi0JZmkKLQkoIGV2YWwgJG1lcmdlX3Rvb2xfY21kICkKLQlzdGF0dXM9JD8KLQlyZXR1cm4gJHN0YXR1cwotfQotCi1tZXJnZV9jbWQgKCkgewotCW1lcmdlX3Rvb2xfY21kPSIkKGdldF9tZXJnZV90b29sX2NtZCAiJDEiKSIKLQlpZiB0ZXN0IC16ICIkbWVyZ2VfdG9vbF9jbWQiCi0JdGhlbgotCQlzdGF0dXM9MQotCQlicmVhawotCWZpCi0JdHJ1c3RfZXhpdF9jb2RlPSIkKGdpdCBjb25maWcgLS1ib29sIFwKLQkJbWVyZ2V0b29sLiIkMSIudHJ1c3RFeGl0Q29kZSB8fCBlY2hvIGZhbHNlKSIKLQlpZiB0ZXN0ICIkdHJ1c3RfZXhpdF9jb2RlIiA9ICJmYWxzZSIKLQl0aGVuCi0JCXRvdWNoICIkQkFDS1VQIgotCQkoIGV2YWwgJG1lcmdlX3Rvb2xfY21kICkKLQkJc3RhdHVzPSQ/Ci0JCWNoZWNrX3VuY2hhbmdlZAotCWVsc2UKLQkJKCBldmFsICRtZXJnZV90b29sX2NtZCApCi0JCXN0YXR1cz0kPwotCWZpCi0JcmV0dXJuICRzdGF0dXMKLX0KLQotdHJhbnNsYXRlX21lcmdlX3Rvb2xfcGF0aCAoKSB7Ci0JZWNobyAiJDEiCi19CmRpZmYgLS1naXQgYS9tZXJnZXRvb2xzL2d2aW1kaWZmIGIvbWVyZ2V0b29scy9ndmltZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGE1YmIwCi0tLSAvZGV2L251bGwKKysrIGIvbWVyZ2V0b29scy9ndmltZGlmZgpAQCAtMCwwICsxIEBACisuICIkTUVSR0VfVE9PTFNfRElSL3ZpbWRpZmYiCmRpZmYgLS1naXQgYS9tZXJnZXRvb2xzL2d2aW1kaWZmMiBiL21lcmdldG9vbHMvZ3ZpbWRpZmYyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0YTViYjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXJnZXRvb2xzL2d2aW1kaWZmMgpAQCAtMCwwICsxIEBACisuICIkTUVSR0VfVE9PTFNfRElSL3ZpbWRpZmYiCmRpZmYgLS1naXQgYS9tZXJnZXRvb2xzL2tkaWZmMyBiL21lcmdldG9vbHMva2RpZmYzCmluZGV4IDI4ZmVhZDQuLmEzMDAzNGYgMTAwNjQ0Ci0tLSBhL21lcmdldG9vbHMva2RpZmYzCisrKyBiL21lcmdldG9vbHMva2RpZmYzCkBAIC0xLDUgKzEsNSBAQAogZGlmZl9jbWQgKCkgewotCSIkbWVyZ2VfdG9vbF9wYXRoIiAtLWF1dG8gXAorCSIkbWVyZ2VfdG9vbF9wYXRoIiBcCiAJCS0tTDEgIiRNRVJHRUQgKEEpIiAtLUwyICIkTUVSR0VEIChCKSIgXAogCQkiJExPQ0FMIiAiJFJFTU9URSIgPi9kZXYvbnVsbCAyPiYxCiB9CmRpZmYgLS1naXQgYS9tZXJnZXRvb2xzL3A0bWVyZ2UgYi9tZXJnZXRvb2xzL3A0bWVyZ2UKaW5kZXggMWE0NWMxYi4uNWE2MDhhYiAxMDA2NDQKLS0tIGEvbWVyZ2V0b29scy9wNG1lcmdlCisrKyBiL21lcmdldG9vbHMvcDRtZXJnZQpAQCAtMSwxMCArMSwzOCBAQAogZGlmZl9jbWQgKCkgeworCWVtcHR5X2ZpbGU9CisKKwkjIHA0bWVyZ2UgZG9lcyBub3QgbGlrZSAvZGV2L251bGwKKwlpZiB0ZXN0ICIvZGV2L251bGwiID0gIiRMT0NBTCIKKwl0aGVuCisJCUxPQ0FMPSIkKGNyZWF0ZV9lbXB0eV9maWxlKSIKKwlmaQorCWlmIHRlc3QgIi9kZXYvbnVsbCIgPSAiJFJFTU9URSIKKwl0aGVuCisJCVJFTU9URT0iJChjcmVhdGVfZW1wdHlfZmlsZSkiCisJZmkKKwogCSIkbWVyZ2VfdG9vbF9wYXRoIiAiJExPQ0FMIiAiJFJFTU9URSIKKworCWlmIHRlc3QgLW4gIiRlbXB0eV9maWxlIgorCXRoZW4KKwkJcm0gLWYgIiRlbXB0eV9maWxlIgorCWZpCiB9CiAKIG1lcmdlX2NtZCAoKSB7CiAJdG91Y2ggIiRCQUNLVVAiCi0JJGJhc2VfcHJlc2VudCB8fCA+IiRCQVNFIgotCSIkbWVyZ2VfdG9vbF9wYXRoIiAiJEJBU0UiICIkTE9DQUwiICIkUkVNT1RFIiAiJE1FUkdFRCIKKwlpZiAhICRiYXNlX3ByZXNlbnQKKwl0aGVuCisJCWNwIC0tICIkTE9DQUwiICIkQkFTRSIKKwkJY3JlYXRlX3ZpcnR1YWxfYmFzZSAiJEJBU0UiICIkUkVNT1RFIgorCWZpCisJIiRtZXJnZV90b29sX3BhdGgiICIkQkFTRSIgIiRSRU1PVEUiICIkTE9DQUwiICIkTUVSR0VEIgogCWNoZWNrX3VuY2hhbmdlZAogfQorCitjcmVhdGVfZW1wdHlfZmlsZSAoKSB7CisJZW1wdHlfZmlsZT0iJHtUTVBESVI6LS90bXB9L2dpdC1kaWZmdG9vbC1wNG1lcmdlLWVtcHR5LWZpbGUuJCQiCisJPiIkZW1wdHlfZmlsZSIKKworCXByaW50ZiAiJXMiICIkZW1wdHlfZmlsZSIKK30KZGlmZiAtLWdpdCBhL21lcmdldG9vbHMvdG9ydG9pc2VtZXJnZSBiL21lcmdldG9vbHMvdG9ydG9pc2VtZXJnZQppbmRleCBlZDdkYjQ5Li4zYjg5ZjFjIDEwMDY0NAotLS0gYS9tZXJnZXRvb2xzL3RvcnRvaXNlbWVyZ2UKKysrIGIvbWVyZ2V0b29scy90b3J0b2lzZW1lcmdlCkBAIC02LDEyICs2LDI5IEBACiAJaWYgJGJhc2VfcHJlc2VudAogCXRoZW4KIAkJdG91Y2ggIiRCQUNLVVAiCi0JCSIkbWVyZ2VfdG9vbF9wYXRoIiBcCi0JCQktYmFzZToiJEJBU0UiIC1taW5lOiIkTE9DQUwiIFwKLQkJCS10aGVpcnM6IiRSRU1PVEUiIC1tZXJnZWQ6IiRNRVJHRUQiCisJCWJhc2VuYW1lPSIkKGJhc2VuYW1lICIkbWVyZ2VfdG9vbF9wYXRoIiAuZXhlKSIKKwkJaWYgdGVzdCAiJGJhc2VuYW1lIiA9ICJ0b3J0b2lzZWdpdG1lcmdlIgorCQl0aGVuCisJCQkiJG1lcmdlX3Rvb2xfcGF0aCIgXAorCQkJCS1iYXNlICIkQkFTRSIgLW1pbmUgIiRMT0NBTCIgXAorCQkJCS10aGVpcnMgIiRSRU1PVEUiIC1tZXJnZWQgIiRNRVJHRUQiCisJCWVsc2UKKwkJCSIkbWVyZ2VfdG9vbF9wYXRoIiBcCisJCQkJLWJhc2U6IiRCQVNFIiAtbWluZToiJExPQ0FMIiBcCisJCQkJLXRoZWlyczoiJFJFTU9URSIgLW1lcmdlZDoiJE1FUkdFRCIKKwkJZmkKIAkJY2hlY2tfdW5jaGFuZ2VkCiAJZWxzZQotCQllY2hvICJUb3J0b2lzZU1lcmdlIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgYSBiYXNlIiAxPiYyCisJCWVjaG8gIiRtZXJnZV90b29sX3BhdGggY2Fubm90IGJlIHVzZWQgd2l0aG91dCBhIGJhc2UiIDE+JjIKIAkJcmV0dXJuIDEKIAlmaQogfQorCit0cmFuc2xhdGVfbWVyZ2VfdG9vbF9wYXRoKCkgeworCWlmIHR5cGUgdG9ydG9pc2VnaXRtZXJnZSA+L2Rldi9udWxsIDI+L2Rldi9udWxsCisJdGhlbgorCQllY2hvIHRvcnRvaXNlZ2l0bWVyZ2UKKwllbHNlCisJCWVjaG8gdG9ydG9pc2VtZXJnZQorCWZpCit9CmRpZmYgLS1naXQgYS9tZXJnZXRvb2xzL3ZpbSBiL21lcmdldG9vbHMvdmltZGlmZgpzaW1pbGFyaXR5IGluZGV4IDY4JQpyZW5hbWUgZnJvbSBtZXJnZXRvb2xzL3ZpbQpyZW5hbWUgdG8gbWVyZ2V0b29scy92aW1kaWZmCmluZGV4IDYxOTU5NGEuLjM5ZDAzMjcgMTAwNjQ0Ci0tLSBhL21lcmdldG9vbHMvdmltCisrKyBiL21lcmdldG9vbHMvdmltZGlmZgpAQCAtMSwxNCArMSw2IEBACiBkaWZmX2NtZCAoKSB7Ci0JY2FzZSAiJDEiIGluCi0JZ3ZpbWRpZmZ8dmltZGlmZikKLQkJIiRtZXJnZV90b29sX3BhdGgiIC1SIC1mIC1kIFwKLQkJCS1jICd3aW5jbWQgbCcgLWMgJ2NkICRHSVRfUFJFRklYJyAiJExPQ0FMIiAiJFJFTU9URSIKLQkJOzsKLQlndmltZGlmZjJ8dmltZGlmZjIpCi0JCSIkbWVyZ2VfdG9vbF9wYXRoIiAtUiAtZiAtZCBcCi0JCQktYyAnd2luY21kIGwnIC1jICdjZCAkR0lUX1BSRUZJWCcgIiRMT0NBTCIgIiRSRU1PVEUiCi0JCTs7Ci0JZXNhYworCSIkbWVyZ2VfdG9vbF9wYXRoIiAtUiAtZiAtZCBcCisJCS1jICd3aW5jbWQgbCcgLWMgJ2NkICRHSVRfUFJFRklYJyAiJExPQ0FMIiAiJFJFTU9URSIKIH0KIAogbWVyZ2VfY21kICgpIHsKZGlmZiAtLWdpdCBhL21lcmdldG9vbHMvdmltZGlmZjIgYi9tZXJnZXRvb2xzL3ZpbWRpZmYyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0YTViYjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXJnZXRvb2xzL3ZpbWRpZmYyCkBAIC0wLDAgKzEgQEAKKy4gIiRNRVJHRV9UT09MU19ESVIvdmltZGlmZiIKZGlmZiAtLWdpdCBhL25hbWUtaGFzaC5jIGIvbmFtZS1oYXNoLmMKaW5kZXggZDhkMjVjMi4uNjE3Yzg2YyAxMDA2NDQKLS0tIGEvbmFtZS1oYXNoLmMKKysrIGIvbmFtZS1oYXNoLmMKQEAgLTI0LDQ2ICsyNCwxMDQgQEAKIHsKIAl1bnNpZ25lZCBpbnQgaGFzaCA9IDB4MTIzOwogCi0JZG8geworCXdoaWxlIChuYW1lbGVuLS0pIHsKIAkJdW5zaWduZWQgY2hhciBjID0gKm5hbWUrKzsKIAkJYyA9IGljYXNlX2hhc2goYyk7CiAJCWhhc2ggPSBoYXNoKjEwMSArIGM7Ci0JfSB3aGlsZSAoLS1uYW1lbGVuKTsKKwl9CiAJcmV0dXJuIGhhc2g7CiB9CiAKLXN0YXRpYyB2b2lkIGhhc2hfaW5kZXhfZW50cnlfZGlyZWN0b3JpZXMoc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUsIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpCitzdHJ1Y3QgZGlyX2VudHJ5IHsKKwlzdHJ1Y3QgZGlyX2VudHJ5ICpuZXh0OworCXN0cnVjdCBkaXJfZW50cnkgKnBhcmVudDsKKwlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOworCWludCBucjsKKwl1bnNpZ25lZCBpbnQgbmFtZWxlbjsKK307CisKK3N0YXRpYyBzdHJ1Y3QgZGlyX2VudHJ5ICpmaW5kX2Rpcl9lbnRyeShzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSwKKwkJY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IG5hbWVsZW4pCit7CisJdW5zaWduZWQgaW50IGhhc2ggPSBoYXNoX25hbWUobmFtZSwgbmFtZWxlbik7CisJc3RydWN0IGRpcl9lbnRyeSAqZGlyOworCisJZm9yIChkaXIgPSBsb29rdXBfaGFzaChoYXNoLCAmaXN0YXRlLT5kaXJfaGFzaCk7IGRpcjsgZGlyID0gZGlyLT5uZXh0KQorCQlpZiAoZGlyLT5uYW1lbGVuID09IG5hbWVsZW4gJiYKKwkJICAgICFzdHJuY2FzZWNtcChkaXItPmNlLT5uYW1lLCBuYW1lLCBuYW1lbGVuKSkKKwkJCXJldHVybiBkaXI7CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGlyX2VudHJ5ICpoYXNoX2Rpcl9lbnRyeShzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSwKKwkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgaW50IG5hbWVsZW4pCiB7CiAJLyoKIAkgKiBUaHJvdyBlYWNoIGRpcmVjdG9yeSBjb21wb25lbnQgaW4gdGhlIGhhc2ggZm9yIHF1aWNrIGxvb2t1cAogCSAqIGR1cmluZyBhIGdpdCBzdGF0dXMuIERpcmVjdG9yeSBjb21wb25lbnRzIGFyZSBzdG9yZWQgd2l0aCB0aGVpcgogCSAqIGNsb3Npbmcgc2xhc2guICBEZXNwaXRlIHN1Ym1vZHVsZXMgYmVpbmcgYSBkaXJlY3RvcnksIHRoZXkgbmV2ZXIKIAkgKiByZWFjaCB0aGlzIHBvaW50LCBiZWNhdXNlIHRoZXkgYXJlIHN0b3JlZCB3aXRob3V0IGEgY2xvc2luZyBzbGFzaAotCSAqIGluIHRoZSBjYWNoZS4KKwkgKiBpbiBpbmRleF9zdGF0ZS5uYW1lX2hhc2ggKGFzIG9yZGluYXJ5IGNhY2hlX2VudHJpZXMpLgogCSAqCi0JICogTm90ZSB0aGF0IHRoZSBjYWNoZV9lbnRyeSBzdG9yZWQgd2l0aCB0aGUgZGlyZWN0b3J5IGRvZXMgbm90Ci0JICogcmVwcmVzZW50IHRoZSBkaXJlY3RvcnkgaXRzZWxmLiAgSXQgaXMgYSBwb2ludGVyIHRvIGFuIGV4aXN0aW5nCi0JICogZmlsZW5hbWUsIGFuZCBpdHMgb25seSBwdXJwb3NlIGlzIHRvIHJlcHJlc2VudCBleGlzdGVuY2Ugb2YgdGhlCi0JICogZGlyZWN0b3J5IGluIHRoZSBjYWNoZS4gIEl0IGlzIHZlcnkgcG9zc2libGUgbXVsdGlwbGUgZGlyZWN0b3J5Ci0JICogaGFzaCBlbnRyaWVzIG1heSBwb2ludCB0byB0aGUgc2FtZSBjYWNoZV9lbnRyeS4KKwkgKiBOb3RlIHRoYXQgdGhlIGNhY2hlX2VudHJ5IHN0b3JlZCB3aXRoIHRoZSBkaXJfZW50cnkgbWVyZWx5CisJICogc3VwcGxpZXMgdGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSAodXAgdG8gZGlyX2VudHJ5Lm5hbWVsZW4pLiBXZQorCSAqIHRyYWNrIHRoZSBudW1iZXIgb2YgJ2FjdGl2ZScgZmlsZXMgaW4gYSBkaXJlY3RvcnkgaW4gZGlyX2VudHJ5Lm5yLAorCSAqIHNvIHdlIGNhbiB0ZWxsIGlmIHRoZSBkaXJlY3RvcnkgaXMgc3RpbGwgcmVsZXZhbnQsIGUuZy4gZm9yIGdpdAorCSAqIHN0YXR1cy4gSG93ZXZlciwgaWYgY2FjaGVfZW50cmllcyBhcmUgcmVtb3ZlZCwgd2UgY2Fubm90IHBpbnBvaW50CisJICogYW4gZXhhY3QgY2FjaGVfZW50cnkgdGhhdCdzIHN0aWxsIGFjdGl2ZS4gSXQgaXMgdmVyeSBwb3NzaWJsZSB0aGF0CisJICogbXVsdGlwbGUgZGlyX2VudHJpZXMgcG9pbnQgdG8gdGhlIHNhbWUgY2FjaGVfZW50cnkuCiAJICovCi0JdW5zaWduZWQgaW50IGhhc2g7Ci0Jdm9pZCAqKnBvczsKKwlzdHJ1Y3QgZGlyX2VudHJ5ICpkaXI7CiAKLQljb25zdCBjaGFyICpwdHIgPSBjZS0+bmFtZTsKLQl3aGlsZSAoKnB0cikgewotCQl3aGlsZSAoKnB0ciAmJiAqcHRyICE9ICcvJykKLQkJCSsrcHRyOwotCQlpZiAoKnB0ciA9PSAnLycpIHsKLQkJCSsrcHRyOwotCQkJaGFzaCA9IGhhc2hfbmFtZShjZS0+bmFtZSwgcHRyIC0gY2UtPm5hbWUpOwotCQkJcG9zID0gaW5zZXJ0X2hhc2goaGFzaCwgY2UsICZpc3RhdGUtPm5hbWVfaGFzaCk7Ci0JCQlpZiAocG9zKSB7Ci0JCQkJY2UtPmRpcl9uZXh0ID0gKnBvczsKLQkJCQkqcG9zID0gY2U7Ci0JCQl9CisJLyogZ2V0IGxlbmd0aCBvZiBwYXJlbnQgZGlyZWN0b3J5ICovCisJd2hpbGUgKG5hbWVsZW4gPiAwICYmICFpc19kaXJfc2VwKGNlLT5uYW1lW25hbWVsZW4gLSAxXSkpCisJCW5hbWVsZW4tLTsKKwlpZiAobmFtZWxlbiA8PSAwKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIGxvb2t1cCBleGlzdGluZyBlbnRyeSBmb3IgdGhhdCBkaXJlY3RvcnkgKi8KKwlkaXIgPSBmaW5kX2Rpcl9lbnRyeShpc3RhdGUsIGNlLT5uYW1lLCBuYW1lbGVuKTsKKwlpZiAoIWRpcikgeworCQkvKiBub3QgZm91bmQsIGNyZWF0ZSBpdCBhbmQgYWRkIHRvIGhhc2ggdGFibGUgKi8KKwkJdm9pZCAqKnBkaXI7CisJCXVuc2lnbmVkIGludCBoYXNoID0gaGFzaF9uYW1lKGNlLT5uYW1lLCBuYW1lbGVuKTsKKworCQlkaXIgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgZGlyX2VudHJ5KSk7CisJCWRpci0+bmFtZWxlbiA9IG5hbWVsZW47CisJCWRpci0+Y2UgPSBjZTsKKworCQlwZGlyID0gaW5zZXJ0X2hhc2goaGFzaCwgZGlyLCAmaXN0YXRlLT5kaXJfaGFzaCk7CisJCWlmIChwZGlyKSB7CisJCQlkaXItPm5leHQgPSAqcGRpcjsKKwkJCSpwZGlyID0gZGlyOwogCQl9CisKKwkJLyogcmVjdXJzaXZlbHkgYWRkIG1pc3NpbmcgcGFyZW50IGRpcmVjdG9yaWVzICovCisJCWRpci0+cGFyZW50ID0gaGFzaF9kaXJfZW50cnkoaXN0YXRlLCBjZSwgbmFtZWxlbiAtIDEpOwogCX0KKwlyZXR1cm4gZGlyOworfQorCitzdGF0aWMgdm9pZCBhZGRfZGlyX2VudHJ5KHN0cnVjdCBpbmRleF9zdGF0ZSAqaXN0YXRlLCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlKQoreworCS8qIEFkZCByZWZlcmVuY2UgdG8gdGhlIGRpcmVjdG9yeSBlbnRyeSAoYW5kIHBhcmVudHMgaWYgMCkuICovCisJc3RydWN0IGRpcl9lbnRyeSAqZGlyID0gaGFzaF9kaXJfZW50cnkoaXN0YXRlLCBjZSwgY2VfbmFtZWxlbihjZSkpOworCXdoaWxlIChkaXIgJiYgIShkaXItPm5yKyspKQorCQlkaXIgPSBkaXItPnBhcmVudDsKK30KKworc3RhdGljIHZvaWQgcmVtb3ZlX2Rpcl9lbnRyeShzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKK3sKKwkvKgorCSAqIFJlbGVhc2UgcmVmZXJlbmNlIHRvIHRoZSBkaXJlY3RvcnkgZW50cnkgKGFuZCBwYXJlbnRzIGlmIDApLgorCSAqCisJICogTm90ZTogd2UgZG8gbm90IHJlbW92ZSAvIGZyZWUgdGhlIGVudHJ5IGJlY2F1c2UgdGhlcmUncyBubworCSAqIGhhc2guW2NoXTo6cmVtb3ZlX2hhc2ggYW5kIGRpci0+bmV4dCBtYXkgcG9pbnQgdG8gb3RoZXIgZW50cmllcworCSAqIHRoYXQgYXJlIHN0aWxsIHZhbGlkLCBzbyB3ZSBtdXN0IG5vdCBmcmVlIHRoZSBtZW1vcnkuCisJICovCisJc3RydWN0IGRpcl9lbnRyeSAqZGlyID0gaGFzaF9kaXJfZW50cnkoaXN0YXRlLCBjZSwgY2VfbmFtZWxlbihjZSkpOworCXdoaWxlIChkaXIgJiYgZGlyLT5uciAmJiAhKC0tZGlyLT5ucikpCisJCWRpciA9IGRpci0+cGFyZW50OwogfQogCiBzdGF0aWMgdm9pZCBoYXNoX2luZGV4X2VudHJ5KHN0cnVjdCBpbmRleF9zdGF0ZSAqaXN0YXRlLCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlKQpAQCAtNzQsNyArMTMyLDcgQEAKIAlpZiAoY2UtPmNlX2ZsYWdzICYgQ0VfSEFTSEVEKQogCQlyZXR1cm47CiAJY2UtPmNlX2ZsYWdzIHw9IENFX0hBU0hFRDsKLQljZS0+bmV4dCA9IGNlLT5kaXJfbmV4dCA9IE5VTEw7CisJY2UtPm5leHQgPSBOVUxMOwogCWhhc2ggPSBoYXNoX25hbWUoY2UtPm5hbWUsIGNlX25hbWVsZW4oY2UpKTsKIAlwb3MgPSBpbnNlcnRfaGFzaChoYXNoLCBjZSwgJmlzdGF0ZS0+bmFtZV9oYXNoKTsKIAlpZiAocG9zKSB7CkBAIC04Miw4ICsxNDAsOCBAQAogCQkqcG9zID0gY2U7CiAJfQogCi0JaWYgKGlnbm9yZV9jYXNlKQotCQloYXNoX2luZGV4X2VudHJ5X2RpcmVjdG9yaWVzKGlzdGF0ZSwgY2UpOworCWlmIChpZ25vcmVfY2FzZSAmJiAhKGNlLT5jZV9mbGFncyAmIENFX1VOSEFTSEVEKSkKKwkJYWRkX2Rpcl9lbnRyeShpc3RhdGUsIGNlKTsKIH0KIAogc3RhdGljIHZvaWQgbGF6eV9pbml0X25hbWVfaGFzaChzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSkKQEAgLTkyLDYgKzE1MCw4IEBACiAKIAlpZiAoaXN0YXRlLT5uYW1lX2hhc2hfaW5pdGlhbGl6ZWQpCiAJCXJldHVybjsKKwlpZiAoaXN0YXRlLT5jYWNoZV9ucikKKwkJcHJlYWxsb2NhdGVfaGFzaCgmaXN0YXRlLT5uYW1lX2hhc2gsIGlzdGF0ZS0+Y2FjaGVfbnIpOwogCWZvciAobnIgPSAwOyBuciA8IGlzdGF0ZS0+Y2FjaGVfbnI7IG5yKyspCiAJCWhhc2hfaW5kZXhfZW50cnkoaXN0YXRlLCBpc3RhdGUtPmNhY2hlW25yXSk7CiAJaXN0YXRlLT5uYW1lX2hhc2hfaW5pdGlhbGl6ZWQgPSAxOwpAQCAtOTksMTEgKzE1OSwzMyBAQAogCiB2b2lkIGFkZF9uYW1lX2hhc2goc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUsIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpCiB7CisJLyogaWYgYWxyZWFkeSBoYXNoZWQsIGFkZCByZWZlcmVuY2UgdG8gZGlyZWN0b3J5IGVudHJpZXMgKi8KKwlpZiAoaWdub3JlX2Nhc2UgJiYgKGNlLT5jZV9mbGFncyAmIENFX1NUQVRFX01BU0spID09IENFX1NUQVRFX01BU0spCisJCWFkZF9kaXJfZW50cnkoaXN0YXRlLCBjZSk7CisKIAljZS0+Y2VfZmxhZ3MgJj0gfkNFX1VOSEFTSEVEOwogCWlmIChpc3RhdGUtPm5hbWVfaGFzaF9pbml0aWFsaXplZCkKIAkJaGFzaF9pbmRleF9lbnRyeShpc3RhdGUsIGNlKTsKIH0KIAorLyoKKyAqIFdlIGRvbid0IGFjdHVhbGx5ICpyZW1vdmUqIGl0LCB3ZSBjYW4ganVzdCBtYXJrIGl0IGludmFsaWQgc28gdGhhdAorICogd2Ugd29uJ3QgZmluZCBpdCBpbiBsb29rdXBzLgorICoKKyAqIE5vdCBvbmx5IHdvdWxkIHdlIGhhdmUgdG8gc2VhcmNoIHRoZSBsaXN0cyAoc2ltcGxlIGVub3VnaCksIGJ1dAorICogd2UnZCBhbHNvIGhhdmUgdG8gcmVoYXNoIG90aGVyIGhhc2ggYnVja2V0cyBpbiBjYXNlIHRoaXMgbWFrZXMgdGhlCisgKiBoYXNoIGJ1Y2tldCBlbXB0eSAoY29tbW9uKS4gU28gaXQncyBtdWNoIGJldHRlciB0byBqdXN0IG1hcmsKKyAqIGl0LgorICovCit2b2lkIHJlbW92ZV9uYW1lX2hhc2goc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUsIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpCit7CisJLyogaWYgYWxyZWFkeSBoYXNoZWQsIHJlbGVhc2UgcmVmZXJlbmNlIHRvIGRpcmVjdG9yeSBlbnRyaWVzICovCisJaWYgKGlnbm9yZV9jYXNlICYmIChjZS0+Y2VfZmxhZ3MgJiBDRV9TVEFURV9NQVNLKSA9PSBDRV9IQVNIRUQpCisJCXJlbW92ZV9kaXJfZW50cnkoaXN0YXRlLCBjZSk7CisKKwljZS0+Y2VfZmxhZ3MgfD0gQ0VfVU5IQVNIRUQ7Cit9CisKIHN0YXRpYyBpbnQgc2xvd19zYW1lX25hbWUoY29uc3QgY2hhciAqbmFtZTEsIGludCBsZW4xLCBjb25zdCBjaGFyICpuYW1lMiwgaW50IGxlbjIpCiB7CiAJaWYgKGxlbjEgIT0gbGVuMikKQEAgLTEzNywxOCArMjE5LDcgQEAKIAlpZiAoIWljYXNlKQogCQlyZXR1cm4gMDsKIAotCS8qCi0JICogSWYgdGhlIGVudHJ5IHdlJ3JlIGNvbXBhcmluZyBpcyBhIGZpbGVuYW1lIChubyB0cmFpbGluZyBzbGFzaCksIHRoZW4gY29tcGFyZQotCSAqIHRoZSBsZW5ndGhzIGV4YWN0bHkuCi0JICovCi0JaWYgKG5hbWVbbmFtZWxlbiAtIDFdICE9ICcvJykKLQkJcmV0dXJuIHNsb3dfc2FtZV9uYW1lKG5hbWUsIG5hbWVsZW4sIGNlLT5uYW1lLCBsZW4pOwotCi0JLyoKLQkgKiBGb3IgYSBkaXJlY3RvcnksIHdlIHBvaW50IHRvIGFuIGFyYml0cmFyeSBjYWNoZV9lbnRyeSBmaWxlbmFtZS4gIEp1c3QKLQkgKiBtYWtlIHN1cmUgdGhlIGRpcmVjdG9yeSBwb3J0aW9uIG1hdGNoZXMuCi0JICovCi0JcmV0dXJuIHNsb3dfc2FtZV9uYW1lKG5hbWUsIG5hbWVsZW4sIGNlLT5uYW1lLCBuYW1lbGVuIDwgbGVuID8gbmFtZWxlbiA6IGxlbik7CisJcmV0dXJuIHNsb3dfc2FtZV9uYW1lKG5hbWUsIG5hbWVsZW4sIGNlLT5uYW1lLCBsZW4pOwogfQogCiBzdHJ1Y3QgY2FjaGVfZW50cnkgKmluZGV4X25hbWVfZXhpc3RzKHN0cnVjdCBpbmRleF9zdGF0ZSAqaXN0YXRlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbmFtZWxlbiwgaW50IGljYXNlKQpAQCAtMTY0LDI3ICsyMzUsNTQgQEAKIAkJCWlmIChzYW1lX25hbWUoY2UsIG5hbWUsIG5hbWVsZW4sIGljYXNlKSkKIAkJCQlyZXR1cm4gY2U7CiAJCX0KLQkJaWYgKGljYXNlICYmIG5hbWVbbmFtZWxlbiAtIDFdID09ICcvJykKLQkJCWNlID0gY2UtPmRpcl9uZXh0OwotCQllbHNlCi0JCQljZSA9IGNlLT5uZXh0OworCQljZSA9IGNlLT5uZXh0OwogCX0KIAogCS8qCi0JICogTWlnaHQgYmUgYSBzdWJtb2R1bGUuICBEZXNwaXRlIHN1Ym1vZHVsZXMgYmVpbmcgZGlyZWN0b3JpZXMsCisJICogV2hlbiBsb29raW5nIGZvciBhIGRpcmVjdG9yeSAodHJhaWxpbmcgJy8nKSwgaXQgbWlnaHQgYmUgYQorCSAqIHN1Ym1vZHVsZSBvciBhIGRpcmVjdG9yeS4gRGVzcGl0ZSBzdWJtb2R1bGVzIGJlaW5nIGRpcmVjdG9yaWVzLAogCSAqIHRoZXkgYXJlIHN0b3JlZCBpbiB0aGUgbmFtZSBoYXNoIHdpdGhvdXQgYSBjbG9zaW5nIHNsYXNoLgotCSAqIFdoZW4gaWdub3JlX2Nhc2UgaXMgMSwgZGlyZWN0b3JpZXMgYXJlIHN0b3JlZCBpbiB0aGUgbmFtZSBoYXNoCi0JICogd2l0aCB0aGVpciBjbG9zaW5nIHNsYXNoLgorCSAqIFdoZW4gaWdub3JlX2Nhc2UgaXMgMSwgZGlyZWN0b3JpZXMgYXJlIHN0b3JlZCBpbiBhIHNlcGFyYXRlIGhhc2gKKwkgKiB0YWJsZSAqd2l0aCogdGhlaXIgY2xvc2luZyBzbGFzaC4KIAkgKgogCSAqIFRoZSBzaWRlIGVmZmVjdCBvZiB0aGlzIHN0b3JhZ2UgdGVjaG5pcXVlIGlzIHdlIGhhdmUgbmVlZCB0bworCSAqIGxvb2t1cCB0aGUgZGlyZWN0b3J5IGluIGEgc2VwYXJhdGUgaGFzaCB0YWJsZSwgYW5kIGlmIG5vdCBmb3VuZAogCSAqIHJlbW92ZSB0aGUgc2xhc2ggZnJvbSBuYW1lIGFuZCBwZXJmb3JtIHRoZSBsb29rdXAgYWdhaW4gd2l0aG91dAogCSAqIHRoZSBzbGFzaC4gIElmIGEgbWF0Y2ggaXMgbWFkZSwgU19JU0dJVExJTksoY2UtPm1vZGUpIHdpbGwgYmUKIAkgKiB0cnVlLgogCSAqLwogCWlmIChpY2FzZSAmJiBuYW1lW25hbWVsZW4gLSAxXSA9PSAnLycpIHsKKwkJc3RydWN0IGRpcl9lbnRyeSAqZGlyID0gZmluZF9kaXJfZW50cnkoaXN0YXRlLCBuYW1lLCBuYW1lbGVuKTsKKwkJaWYgKGRpciAmJiBkaXItPm5yKQorCQkJcmV0dXJuIGRpci0+Y2U7CisKIAkJY2UgPSBpbmRleF9uYW1lX2V4aXN0cyhpc3RhdGUsIG5hbWUsIG5hbWVsZW4gLSAxLCBpY2FzZSk7CiAJCWlmIChjZSAmJiBTX0lTR0lUTElOSyhjZS0+Y2VfbW9kZSkpCiAJCQlyZXR1cm4gY2U7CiAJfQogCXJldHVybiBOVUxMOwogfQorCitzdGF0aWMgaW50IGZyZWVfZGlyX2VudHJ5KHZvaWQgKmVudHJ5LCB2b2lkICp1bnVzZWQpCit7CisJc3RydWN0IGRpcl9lbnRyeSAqZGlyID0gZW50cnk7CisJd2hpbGUgKGRpcikgeworCQlzdHJ1Y3QgZGlyX2VudHJ5ICpuZXh0ID0gZGlyLT5uZXh0OworCQlmcmVlKGRpcik7CisJCWRpciA9IG5leHQ7CisJfQorCXJldHVybiAwOworfQorCit2b2lkIGZyZWVfbmFtZV9oYXNoKHN0cnVjdCBpbmRleF9zdGF0ZSAqaXN0YXRlKQoreworCWlmICghaXN0YXRlLT5uYW1lX2hhc2hfaW5pdGlhbGl6ZWQpCisJCXJldHVybjsKKwlpc3RhdGUtPm5hbWVfaGFzaF9pbml0aWFsaXplZCA9IDA7CisJaWYgKGlnbm9yZV9jYXNlKQorCQkvKiBmcmVlIGRpcmVjdG9yeSBlbnRyaWVzICovCisJCWZvcl9lYWNoX2hhc2goJmlzdGF0ZS0+ZGlyX2hhc2gsIGZyZWVfZGlyX2VudHJ5LCBOVUxMKTsKKworCWZyZWVfaGFzaCgmaXN0YXRlLT5uYW1lX2hhc2gpOworCWZyZWVfaGFzaCgmaXN0YXRlLT5kaXJfaGFzaCk7Cit9CmRpZmYgLS1naXQgYS9ub3Rlcy1tZXJnZS5jIGIvbm90ZXMtbWVyZ2UuYwppbmRleCA3NGFhNzdjLi4wZjY3YmQzIDEwMDY0NAotLS0gYS9ub3Rlcy1tZXJnZS5jCisrKyBiL25vdGVzLW1lcmdlLmMKQEAgLTEyNiw4ICsxMjYsNyBAQAogCWRpZmZfc2V0dXAoJm9wdCk7CiAJRElGRl9PUFRfU0VUKCZvcHQsIFJFQ1VSU0lWRSk7CiAJb3B0Lm91dHB1dF9mb3JtYXQgPSBESUZGX0ZPUk1BVF9OT19PVVRQVVQ7Ci0JaWYgKGRpZmZfc2V0dXBfZG9uZSgmb3B0KSA8IDApCi0JCWRpZSgiZGlmZl9zZXR1cF9kb25lIGZhaWxlZCIpOworCWRpZmZfc2V0dXBfZG9uZSgmb3B0KTsKIAlkaWZmX3RyZWVfc2hhMShiYXNlLCByZW1vdGUsICIiLCAmb3B0KTsKIAlkaWZmY29yZV9zdGQoJm9wdCk7CiAKQEAgLTE5MCw4ICsxODksNyBAQAogCWRpZmZfc2V0dXAoJm9wdCk7CiAJRElGRl9PUFRfU0VUKCZvcHQsIFJFQ1VSU0lWRSk7CiAJb3B0Lm91dHB1dF9mb3JtYXQgPSBESUZGX0ZPUk1BVF9OT19PVVRQVVQ7Ci0JaWYgKGRpZmZfc2V0dXBfZG9uZSgmb3B0KSA8IDApCi0JCWRpZSgiZGlmZl9zZXR1cF9kb25lIGZhaWxlZCIpOworCWRpZmZfc2V0dXBfZG9uZSgmb3B0KTsKIAlkaWZmX3RyZWVfc2hhMShiYXNlLCBsb2NhbCwgIiIsICZvcHQpOwogCWRpZmZjb3JlX3N0ZCgmb3B0KTsKIApAQCAtNTI0LDggKzUyMiwxMCBAQAogCWZyZWUoY2hhbmdlcyk7CiAKIAlpZiAoby0+dmVyYm9zaXR5ID49IDQpCi0JCXByaW50ZigiTWVyZ2UgcmVzdWx0OiAlaSB1bm1lcmdlZCBub3RlcyBhbmQgYSAlcyBub3RlcyB0cmVlXG4iLAotCQkJY29uZmxpY3RzLCB0LT5kaXJ0eSA/ICJkaXJ0eSIgOiAiY2xlYW4iKTsKKwkJcHJpbnRmKHQtPmRpcnR5ID8KKwkJICAgICAgICJNZXJnZSByZXN1bHQ6ICVpIHVubWVyZ2VkIG5vdGVzIGFuZCBhIGRpcnR5IG5vdGVzIHRyZWVcbiIgOgorCQkgICAgICAgIk1lcmdlIHJlc3VsdDogJWkgdW5tZXJnZWQgbm90ZXMgYW5kIGEgY2xlYW4gbm90ZXMgdHJlZVxuIiwKKwkJICAgICAgIGNvbmZsaWN0cyk7CiAKIAlyZXR1cm4gY29uZmxpY3RzID8gLTEgOiAxOwogfQpkaWZmIC0tZ2l0IGEvbm90ZXMuYyBiL25vdGVzLmMKaW5kZXggOTNlOTg2OC4uZjYzZmQ1NyAxMDA2NDQKLS0tIGEvbm90ZXMuYworKysgYi9ub3Rlcy5jCkBAIC04NDgsMTUgKzg0OCwxNiBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHN0cmluZ19saXN0X2FkZF9ub3RlX2xpbmVzKHN0cnVjdCBzdHJpbmdfbGlzdCAqc29ydF91bmlxX2xpc3QsCisvKgorICogQWRkIHRoZSBsaW5lcyBmcm9tIHRoZSBuYW1lZCBvYmplY3QgdG8gbGlzdCwgd2l0aCB0cmFpbGluZworICogbmV3bGluZXMgcmVtb3ZlZC4KKyAqLworc3RhdGljIGludCBzdHJpbmdfbGlzdF9hZGRfbm90ZV9saW5lcyhzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmxpc3QsCiAJCQkJICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSkKIHsKIAljaGFyICpkYXRhOwogCXVuc2lnbmVkIGxvbmcgbGVuOwogCWVudW0gb2JqZWN0X3R5cGUgdDsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwotCXN0cnVjdCBzdHJidWYgKipsaW5lcyA9IE5VTEw7Ci0JaW50IGksIGxpc3RfaW5kZXg7CiAKIAlpZiAoaXNfbnVsbF9zaGExKHNoYTEpKQogCQlyZXR1cm4gMDsKQEAgLTg2OCwyNCArODY5LDE0IEBACiAJCXJldHVybiB0ICE9IE9CSl9CTE9CIHx8ICFkYXRhOwogCX0KIAotCXN0cmJ1Zl9hdHRhY2goJmJ1ZiwgZGF0YSwgbGVuLCBsZW4gKyAxKTsKLQlsaW5lcyA9IHN0cmJ1Zl9zcGxpdCgmYnVmLCAnXG4nKTsKLQotCWZvciAoaSA9IDA7IGxpbmVzW2ldOyBpKyspIHsKLQkJaWYgKGxpbmVzW2ldLT5idWZbbGluZXNbaV0tPmxlbiAtIDFdID09ICdcbicpCi0JCQlzdHJidWZfc2V0bGVuKGxpbmVzW2ldLCBsaW5lc1tpXS0+bGVuIC0gMSk7Ci0JCWlmICghbGluZXNbaV0tPmxlbikKLQkJCWNvbnRpbnVlOyAvKiBza2lwIGVtcHR5IGxpbmVzICovCi0JCWxpc3RfaW5kZXggPSBzdHJpbmdfbGlzdF9maW5kX2luc2VydF9pbmRleChzb3J0X3VuaXFfbGlzdCwKLQkJCQkJCQkgICBsaW5lc1tpXS0+YnVmLCAwKTsKLQkJaWYgKGxpc3RfaW5kZXggPCAwKQotCQkJY29udGludWU7IC8qIHNraXAgZHVwbGljYXRlIGxpbmVzICovCi0JCXN0cmluZ19saXN0X2luc2VydF9hdF9pbmRleChzb3J0X3VuaXFfbGlzdCwgbGlzdF9pbmRleCwKLQkJCQkJICAgIGxpbmVzW2ldLT5idWYpOwotCX0KLQotCXN0cmJ1Zl9saXN0X2ZyZWUobGluZXMpOwotCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOworCS8qCisJICogSWYgdGhlIGxhc3QgbGluZSBvZiB0aGUgZmlsZSBpcyBFT0wtdGVybWluYXRlZCwgdGhpcyB3aWxsCisJICogYWRkIGFuIGVtcHR5IHN0cmluZyB0byB0aGUgbGlzdC4gIEJ1dCBpdCB3aWxsIGJlIHJlbW92ZWQKKwkgKiBsYXRlciwgYWxvbmcgd2l0aCBhbnkgZW1wdHkgc3RyaW5ncyB0aGF0IGNhbWUgZnJvbSBlbXB0eQorCSAqIGxpbmVzIHdpdGhpbiB0aGUgZmlsZS4KKwkgKi8KKwlzdHJpbmdfbGlzdF9zcGxpdChsaXN0LCBkYXRhLCAnXG4nLCAtMSk7CisJZnJlZShkYXRhKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtOTAxLDcgKzg5Miw3IEBACiBpbnQgY29tYmluZV9ub3Rlc19jYXRfc29ydF91bmlxKHVuc2lnbmVkIGNoYXIgKmN1cl9zaGExLAogCQljb25zdCB1bnNpZ25lZCBjaGFyICpuZXdfc2hhMSkKIHsKLQlzdHJ1Y3Qgc3RyaW5nX2xpc3Qgc29ydF91bmlxX2xpc3QgPSB7IE5VTEwsIDAsIDAsIDEgfTsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3Qgc29ydF91bmlxX2xpc3QgPSBTVFJJTkdfTElTVF9JTklUX0RVUDsKIAlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCWludCByZXQgPSAxOwogCkBAIC05MTAsNiArOTAxLDkgQEAKIAkJZ290byBvdXQ7CiAJaWYgKHN0cmluZ19saXN0X2FkZF9ub3RlX2xpbmVzKCZzb3J0X3VuaXFfbGlzdCwgbmV3X3NoYTEpKQogCQlnb3RvIG91dDsKKwlzdHJpbmdfbGlzdF9yZW1vdmVfZW1wdHlfaXRlbXMoJnNvcnRfdW5pcV9saXN0LCAwKTsKKwlzb3J0X3N0cmluZ19saXN0KCZzb3J0X3VuaXFfbGlzdCk7CisJc3RyaW5nX2xpc3RfcmVtb3ZlX2R1cGxpY2F0ZXMoJnNvcnRfdW5pcV9saXN0LCAwKTsKIAogCS8qIGNyZWF0ZSBhIG5ldyBibG9iIG9iamVjdCBmcm9tIHNvcnRfdW5pcV9saXN0ICovCiAJaWYgKGZvcl9lYWNoX3N0cmluZ19saXN0KCZzb3J0X3VuaXFfbGlzdCwKQEAgLTk0OSwyMyArOTQzLDE4IEBACiB2b2lkIHN0cmluZ19saXN0X2FkZF9yZWZzX2Zyb21fY29sb25fc2VwKHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCwKIAkJCQkJIGNvbnN0IGNoYXIgKmdsb2JzKQogewotCXN0cnVjdCBzdHJidWYgZ2xvYmJ1ZiA9IFNUUkJVRl9JTklUOwotCXN0cnVjdCBzdHJidWYgKipzcGxpdDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3Qgc3BsaXQgPSBTVFJJTkdfTElTVF9JTklUX05PRFVQOworCWNoYXIgKmdsb2JzX2NvcHkgPSB4c3RyZHVwKGdsb2JzKTsKIAlpbnQgaTsKIAotCXN0cmJ1Zl9hZGRzdHIoJmdsb2JidWYsIGdsb2JzKTsKLQlzcGxpdCA9IHN0cmJ1Zl9zcGxpdCgmZ2xvYmJ1ZiwgJzonKTsKKwlzdHJpbmdfbGlzdF9zcGxpdF9pbl9wbGFjZSgmc3BsaXQsIGdsb2JzX2NvcHksICc6JywgLTEpOworCXN0cmluZ19saXN0X3JlbW92ZV9lbXB0eV9pdGVtcygmc3BsaXQsIDApOwogCi0JZm9yIChpID0gMDsgc3BsaXRbaV07IGkrKykgewotCQlpZiAoIXNwbGl0W2ldLT5sZW4pCi0JCQljb250aW51ZTsKLQkJaWYgKHNwbGl0W2ldLT5idWZbc3BsaXRbaV0tPmxlbi0xXSA9PSAnOicpCi0JCQlzdHJidWZfc2V0bGVuKHNwbGl0W2ldLCBzcGxpdFtpXS0+bGVuLTEpOwotCQlzdHJpbmdfbGlzdF9hZGRfcmVmc19ieV9nbG9iKGxpc3QsIHNwbGl0W2ldLT5idWYpOwotCX0KKwlmb3IgKGkgPSAwOyBpIDwgc3BsaXQubnI7IGkrKykKKwkJc3RyaW5nX2xpc3RfYWRkX3JlZnNfYnlfZ2xvYihsaXN0LCBzcGxpdC5pdGVtc1tpXS5zdHJpbmcpOwogCi0Jc3RyYnVmX2xpc3RfZnJlZShzcGxpdCk7Ci0Jc3RyYnVmX3JlbGVhc2UoJmdsb2JidWYpOworCXN0cmluZ19saXN0X2NsZWFyKCZzcGxpdCwgMCk7CisJZnJlZShnbG9ic19jb3B5KTsKIH0KIAogc3RhdGljIGludCBub3Rlc19kaXNwbGF5X2NvbmZpZyhjb25zdCBjaGFyICprLCBjb25zdCBjaGFyICp2LCB2b2lkICpjYikKQEAgLTExOTYsOCArMTE4NSwxOSBAQAogCW1lbXNldCh0LCAwLCBzaXplb2Yoc3RydWN0IG5vdGVzX3RyZWUpKTsKIH0KIAotdm9pZCBmb3JtYXRfbm90ZShzdHJ1Y3Qgbm90ZXNfdHJlZSAqdCwgY29uc3QgdW5zaWduZWQgY2hhciAqb2JqZWN0X3NoYTEsCi0JCXN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpvdXRwdXRfZW5jb2RpbmcsIGludCBmbGFncykKKy8qCisgKiBGaWxsIHRoZSBnaXZlbiBzdHJidWYgd2l0aCB0aGUgbm90ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBvYmplY3QuCisgKgorICogSWYgdGhlIGdpdmVuIG5vdGVzX3RyZWUgc3RydWN0dXJlIGlzIG5vdCBpbml0aWFsaXplZCwgaXQgd2lsbCBiZSBhdXRvLQorICogaW5pdGlhbGl6ZWQgdG8gdGhlIGRlZmF1bHQgdmFsdWUgKHNlZSBkb2N1bWVudGF0aW9uIGZvciBpbml0X25vdGVzKCkgYWJvdmUpLgorICogSWYgdGhlIGdpdmVuIG5vdGVzX3RyZWUgaXMgTlVMTCwgdGhlIGludGVybmFsL2RlZmF1bHQgbm90ZXNfdHJlZSB3aWxsIGJlCisgKiB1c2VkIGluc3RlYWQuCisgKgorICogKHJhdyAhPSAwKSBnaXZlcyB0aGUgJU4gdXNlcmZvcm1hdDsgb3RoZXJ3aXNlLCB0aGUgbm90ZSBtZXNzYWdlIGlzIGdpdmVuCisgKiBmb3IgaHVtYW4gY29uc3VtcHRpb24uCisgKi8KK3N0YXRpYyB2b2lkIGZvcm1hdF9ub3RlKHN0cnVjdCBub3Rlc190cmVlICp0LCBjb25zdCB1bnNpZ25lZCBjaGFyICpvYmplY3Rfc2hhMSwKKwkJCXN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpvdXRwdXRfZW5jb2RpbmcsIGludCByYXcpCiB7CiAJc3RhdGljIGNvbnN0IGNoYXIgdXRmOFtdID0gInV0Zi04IjsKIAljb25zdCB1bnNpZ25lZCBjaGFyICpzaGExOwpAQCAtMTIyMSw3ICsxMjIxLDcgQEAKIAl9CiAKIAlpZiAob3V0cHV0X2VuY29kaW5nICYmICpvdXRwdXRfZW5jb2RpbmcgJiYKLQkJCXN0cmNtcCh1dGY4LCBvdXRwdXRfZW5jb2RpbmcpKSB7CisJICAgICFpc19lbmNvZGluZ191dGY4KG91dHB1dF9lbmNvZGluZykpIHsKIAkJY2hhciAqcmVlbmNvZGVkID0gcmVlbmNvZGVfc3RyaW5nKG1zZywgb3V0cHV0X2VuY29kaW5nLCB1dGY4KTsKIAkJaWYgKHJlZW5jb2RlZCkgewogCQkJZnJlZShtc2cpOwpAQCAtMTIzNCw3ICsxMjM0LDcgQEAKIAlpZiAobXNnbGVuICYmIG1zZ1ttc2dsZW4gLSAxXSA9PSAnXG4nKQogCQltc2dsZW4tLTsKIAotCWlmIChmbGFncyAmIE5PVEVTX1NIT1dfSEVBREVSKSB7CisJaWYgKCFyYXcpIHsKIAkJY29uc3QgY2hhciAqcmVmID0gdC0+cmVmOwogCQlpZiAoIXJlZiB8fCAhc3RyY21wKHJlZiwgR0lUX05PVEVTX0RFRkFVTFRfUkVGKSkgewogCQkJc3RyYnVmX2FkZHN0cihzYiwgIlxuTm90ZXM6XG4iKTsKQEAgLTEyNTAsNyArMTI1MCw3IEBACiAJZm9yIChtc2dfcCA9IG1zZzsgbXNnX3AgPCBtc2cgKyBtc2dsZW47IG1zZ19wICs9IGxpbmVsZW4gKyAxKSB7CiAJCWxpbmVsZW4gPSBzdHJjaHJudWwobXNnX3AsICdcbicpIC0gbXNnX3A7CiAKLQkJaWYgKGZsYWdzICYgTk9URVNfSU5ERU5UKQorCQlpZiAoIXJhdykKIAkJCXN0cmJ1Zl9hZGRzdHIoc2IsICIgICAgIik7CiAJCXN0cmJ1Zl9hZGQoc2IsIG1zZ19wLCBsaW5lbGVuKTsKIAkJc3RyYnVmX2FkZGNoKHNiLCAnXG4nKTsKQEAgLTEyNjAsMTMgKzEyNjAsMTMgQEAKIH0KIAogdm9pZCBmb3JtYXRfZGlzcGxheV9ub3Rlcyhjb25zdCB1bnNpZ25lZCBjaGFyICpvYmplY3Rfc2hhMSwKLQkJCSAgc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKm91dHB1dF9lbmNvZGluZywgaW50IGZsYWdzKQorCQkJICBzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqb3V0cHV0X2VuY29kaW5nLCBpbnQgcmF3KQogewogCWludCBpOwogCWFzc2VydChkaXNwbGF5X25vdGVzX3RyZWVzKTsKIAlmb3IgKGkgPSAwOyBkaXNwbGF5X25vdGVzX3RyZWVzW2ldOyBpKyspCiAJCWZvcm1hdF9ub3RlKGRpc3BsYXlfbm90ZXNfdHJlZXNbaV0sIG9iamVjdF9zaGExLCBzYiwKLQkJCSAgICBvdXRwdXRfZW5jb2RpbmcsIGZsYWdzKTsKKwkJCSAgICBvdXRwdXRfZW5jb2RpbmcsIHJhdyk7CiB9CiAKIGludCBjb3B5X25vdGUoc3RydWN0IG5vdGVzX3RyZWUgKnQsCmRpZmYgLS1naXQgYS9ub3Rlcy5oIGIvbm90ZXMuaAppbmRleCBjNzE2Njk0Li4zMzI0YzQ4IDEwMDY0NAotLS0gYS9ub3Rlcy5oCisrKyBiL25vdGVzLmgKQEAgLTIzNywyNCArMjM3LDYgQEAKICAqLwogdm9pZCBmcmVlX25vdGVzKHN0cnVjdCBub3Rlc190cmVlICp0KTsKIAotLyogRmxhZ3MgY29udHJvbGxpbmcgaG93IG5vdGVzIGFyZSBmb3JtYXR0ZWQgKi8KLSNkZWZpbmUgTk9URVNfU0hPV19IRUFERVIgMQotI2RlZmluZSBOT1RFU19JTkRFTlQgMgotCi0vKgotICogRmlsbCB0aGUgZ2l2ZW4gc3RyYnVmIHdpdGggdGhlIG5vdGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gb2JqZWN0LgotICoKLSAqIElmIHRoZSBnaXZlbiBub3Rlc190cmVlIHN0cnVjdHVyZSBpcyBub3QgaW5pdGlhbGl6ZWQsIGl0IHdpbGwgYmUgYXV0by0KLSAqIGluaXRpYWxpemVkIHRvIHRoZSBkZWZhdWx0IHZhbHVlIChzZWUgZG9jdW1lbnRhdGlvbiBmb3IgaW5pdF9ub3RlcygpIGFib3ZlKS4KLSAqIElmIHRoZSBnaXZlbiBub3Rlc190cmVlIGlzIE5VTEwsIHRoZSBpbnRlcm5hbC9kZWZhdWx0IG5vdGVzX3RyZWUgd2lsbCBiZQotICogdXNlZCBpbnN0ZWFkLgotICoKLSAqICdmbGFncycgaXMgYSBiaXR3aXNlIGNvbWJpbmF0aW9uIG9mIHRoZSBhYm92ZSBmb3JtYXR0aW5nIGZsYWdzLgotICovCi12b2lkIGZvcm1hdF9ub3RlKHN0cnVjdCBub3Rlc190cmVlICp0LCBjb25zdCB1bnNpZ25lZCBjaGFyICpvYmplY3Rfc2hhMSwKLQkJc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKm91dHB1dF9lbmNvZGluZywgaW50IGZsYWdzKTsKLQotCiBzdHJ1Y3Qgc3RyaW5nX2xpc3Q7CiAKIHN0cnVjdCBkaXNwbGF5X25vdGVzX29wdCB7CkBAIC0yODgsNyArMjcwLDcgQEAKICAqIFlvdSAqbXVzdCogY2FsbCBpbml0X2Rpc3BsYXlfbm90ZXMoKSBiZWZvcmUgdXNpbmcgdGhpcyBmdW5jdGlvbi4KICAqLwogdm9pZCBmb3JtYXRfZGlzcGxheV9ub3Rlcyhjb25zdCB1bnNpZ25lZCBjaGFyICpvYmplY3Rfc2hhMSwKLQkJCSAgc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKm91dHB1dF9lbmNvZGluZywgaW50IGZsYWdzKTsKKwkJCSAgc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKm91dHB1dF9lbmNvZGluZywgaW50IHJhdyk7CiAKIC8qCiAgKiBMb2FkIHRoZSBub3RlcyB0cmVlIGZyb20gZWFjaCByZWYgbGlzdGVkIGluICdyZWZzJy4gIFRoZSBvdXRwdXQgaXMKZGlmZiAtLWdpdCBhL29iamVjdC5jIGIvb2JqZWN0LmMKaW5kZXggNGFmMzQ1MS4uMjA3MDNmNSAxMDA2NDQKLS0tIGEvb2JqZWN0LmMKKysrIGIvb2JqZWN0LmMKQEAgLTE4NSw2ICsxODUsMTYgQEAKIAlyZXR1cm4gb2JqOwogfQogCitzdHJ1Y3Qgb2JqZWN0ICpwYXJzZV9vYmplY3Rfb3JfZGllKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsCisJCQkJICAgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlzdHJ1Y3Qgb2JqZWN0ICpvID0gcGFyc2Vfb2JqZWN0KHNoYTEpOworCWlmIChvKQorCQlyZXR1cm4gbzsKKworCWRpZShfKCJ1bmFibGUgdG8gcGFyc2Ugb2JqZWN0OiAlcyIpLCBuYW1lID8gbmFtZSA6IHNoYTFfdG9faGV4KHNoYTEpKTsKK30KKwogc3RydWN0IG9iamVjdCAqcGFyc2Vfb2JqZWN0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7CiAJdW5zaWduZWQgbG9uZyBzaXplOwpkaWZmIC0tZ2l0IGEvb2JqZWN0LmggYi9vYmplY3QuaAppbmRleCA2YTk3YjZiLi45N2QzODRiIDEwMDY0NAotLS0gYS9vYmplY3QuaAorKysgYi9vYmplY3QuaApAQCAtNTQsOSArNTQsMjAgQEAKIAogZXh0ZXJuIHZvaWQgKmNyZWF0ZV9vYmplY3QoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgaW50IHR5cGUsIHZvaWQgKm9iaik7CiAKLS8qKiBSZXR1cm5zIHRoZSBvYmplY3QsIGhhdmluZyBwYXJzZWQgaXQgdG8gZmluZCBvdXQgd2hhdCBpdCBpcy4gKiovCisvKgorICogUmV0dXJucyB0aGUgb2JqZWN0LCBoYXZpbmcgcGFyc2VkIGl0IHRvIGZpbmQgb3V0IHdoYXQgaXQgaXMuCisgKgorICogUmV0dXJucyBOVUxMIGlmIHRoZSBvYmplY3QgaXMgbWlzc2luZyBvciBjb3JydXB0LgorICovCiBzdHJ1Y3Qgb2JqZWN0ICpwYXJzZV9vYmplY3QoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSk7CiAKKy8qCisgKiBMaWtlIHBhcnNlX29iamVjdCwgYnV0IHdpbGwgZGllKCkgaW5zdGVhZCBvZiByZXR1cm5pbmcgTlVMTC4gSWYgdGhlCisgKiAibmFtZSIgcGFyYW1ldGVyIGlzIG5vdCBOVUxMLCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgZXJyb3IgbWVzc2FnZQorICogKG90aGVyd2lzZSwgdGhlIHNoYTEgaGV4IGlzIGdpdmVuKS4KKyAqLworc3RydWN0IG9iamVjdCAqcGFyc2Vfb2JqZWN0X29yX2RpZShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBjb25zdCBjaGFyICpuYW1lKTsKKwogLyogR2l2ZW4gdGhlIHJlc3VsdCBvZiByZWFkX3NoYTFfZmlsZSgpLCByZXR1cm5zIHRoZSBvYmplY3QgYWZ0ZXIKICAqIHBhcnNpbmcgaXQuICBlYXRlbl9wIGluZGljYXRlcyBpZiB0aGUgb2JqZWN0IGhhcyBhIGJvcnJvd2VkIGNvcHkKICAqIG9mIGJ1ZmZlciBhbmQgdGhlIGNhbGxlciBzaG91bGQgbm90IGZyZWUoKSBpdC4KZGlmZiAtLWdpdCBhL3BhY2stcmVmcy5jIGIvcGFjay1yZWZzLmMKaW5kZXggZjA5YTA1NC4uNDQ2MWY3MSAxMDA2NDQKLS0tIGEvcGFjay1yZWZzLmMKKysrIGIvcGFjay1yZWZzLmMKQEAgLTI3LDYgKzI3LDcgQEAKIAkJCSAgaW50IGZsYWdzLCB2b2lkICpjYl9kYXRhKQogewogCXN0cnVjdCBwYWNrX3JlZnNfY2JfZGF0YSAqY2IgPSBjYl9kYXRhOworCXN0cnVjdCBvYmplY3QgKm87CiAJaW50IGlzX3RhZ19yZWY7CiAKIAkvKiBEbyBub3QgcGFjayB0aGUgc3ltYm9saWMgcmVmcyAqLwpAQCAtMzksMTQgKzQwLDEzIEBACiAJCXJldHVybiAwOwogCiAJZnByaW50ZihjYi0+cmVmc19maWxlLCAiJXMgJXNcbiIsIHNoYTFfdG9faGV4KHNoYTEpLCBwYXRoKTsKLQlpZiAoaXNfdGFnX3JlZikgewotCQlzdHJ1Y3Qgb2JqZWN0ICpvID0gcGFyc2Vfb2JqZWN0KHNoYTEpOwotCQlpZiAoby0+dHlwZSA9PSBPQkpfVEFHKSB7Ci0JCQlvID0gZGVyZWZfdGFnKG8sIHBhdGgsIDApOwotCQkJaWYgKG8pCi0JCQkJZnByaW50ZihjYi0+cmVmc19maWxlLCAiXiVzXG4iLAotCQkJCQlzaGExX3RvX2hleChvLT5zaGExKSk7Ci0JCX0KKworCW8gPSBwYXJzZV9vYmplY3Rfb3JfZGllKHNoYTEsIHBhdGgpOworCWlmIChvLT50eXBlID09IE9CSl9UQUcpIHsKKwkJbyA9IGRlcmVmX3RhZyhvLCBwYXRoLCAwKTsKKwkJaWYgKG8pCisJCQlmcHJpbnRmKGNiLT5yZWZzX2ZpbGUsICJeJXNcbiIsCisJCQkJc2hhMV90b19oZXgoby0+c2hhMSkpOwogCX0KIAogCWlmICgoY2ItPmZsYWdzICYgUEFDS19SRUZTX1BSVU5FKSAmJiAhZG9fbm90X3BydW5lKGZsYWdzKSkgewpAQCAtMTI4LDcgKzEyOCw3IEBACiAJCWRpZV9lcnJubygidW5hYmxlIHRvIGNyZWF0ZSByZWYtcGFjayBmaWxlIHN0cnVjdHVyZSIpOwogCiAJLyogcGVyaGFwcyBvdGhlciB0cmFpdHMgbGF0ZXIgYXMgd2VsbCAqLwotCWZwcmludGYoY2JkYXRhLnJlZnNfZmlsZSwgIiMgcGFjay1yZWZzIHdpdGg6IHBlZWxlZCBcbiIpOworCWZwcmludGYoY2JkYXRhLnJlZnNfZmlsZSwgIiMgcGFjay1yZWZzIHdpdGg6IHBlZWxlZCBmdWxseS1wZWVsZWQgXG4iKTsKIAogCWZvcl9lYWNoX3JlZihoYW5kbGVfb25lX3JlZiwgJmNiZGF0YSk7CiAJaWYgKGZlcnJvcihjYmRhdGEucmVmc19maWxlKSkKZGlmZiAtLWdpdCBhL3BhZ2VyLmMgYi9wYWdlci5jCmluZGV4IDRkY2IwOGQuLmMxZWNmNjUgMTAwNjQ0Ci0tLSBhL3BhZ2VyLmMKKysrIGIvcGFnZXIuYwpAQCAtNiwyNiArNiwxNyBAQAogI2RlZmluZSBERUZBVUxUX1BBR0VSICJsZXNzIgogI2VuZGlmCiAKK3N0cnVjdCBwYWdlcl9jb25maWcgeworCWNvbnN0IGNoYXIgKmNtZDsKKwlpbnQgd2FudDsKKwljaGFyICp2YWx1ZTsKK307CisKIC8qCiAgKiBUaGlzIGlzIHNwbGl0IHVwIGZyb20gdGhlIHJlc3Qgb2YgZ2l0IHNvIHRoYXQgd2UgY2FuIGRvCiAgKiBzb21ldGhpbmcgZGlmZmVyZW50IG9uIFdpbmRvd3MuCiAgKi8KIAotI2lmbmRlZiBXSU4zMgotc3RhdGljIHZvaWQgcGFnZXJfcHJlZXhlYyh2b2lkKQotewotCS8qCi0JICogV29yayBhcm91bmQgYnVnIGluICJsZXNzIiBieSBub3Qgc3RhcnRpbmcgaXQgdW50aWwgd2UKLQkgKiBoYXZlIHJlYWwgaW5wdXQKLQkgKi8KLQlmZF9zZXQgaW47Ci0KLQlGRF9aRVJPKCZpbik7Ci0JRkRfU0VUKDAsICZpbik7Ci0Jc2VsZWN0KDEsICZpbiwgTlVMTCwgJmluLCBOVUxMKTsKLX0KLSNlbmRpZgotCiBzdGF0aWMgY29uc3QgY2hhciAqcGFnZXJfYXJndltdID0geyBOVUxMLCBOVUxMIH07CiBzdGF0aWMgc3RydWN0IGNoaWxkX3Byb2Nlc3MgcGFnZXJfcHJvY2VzczsKIApAQCAtOTMsOSArODQsNiBAQAogCQlzdGF0aWMgY29uc3QgY2hhciAqZW52W10gPSB7ICJMRVNTPUZSU1giLCBOVUxMIH07CiAJCXBhZ2VyX3Byb2Nlc3MuZW52ID0gZW52OwogCX0KLSNpZm5kZWYgV0lOMzIKLQlwYWdlcl9wcm9jZXNzLnByZWV4ZWNfY2IgPSBwYWdlcl9wcmVleGVjOwotI2VuZGlmCiAJaWYgKHN0YXJ0X2NvbW1hbmQoJnBhZ2VyX3Byb2Nlc3MpKQogCQlyZXR1cm47CiAKQEAgLTE1OSwzICsxNDcsMzEgQEAKIAkJaSAqPSAxMDsKIAlyZXR1cm4gd2lkdGg7CiB9CisKK3N0YXRpYyBpbnQgcGFnZXJfY29tbWFuZF9jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgcGFnZXJfY29uZmlnICpjID0gZGF0YTsKKwlpZiAoIXByZWZpeGNtcCh2YXIsICJwYWdlci4iKSAmJiAhc3RyY21wKHZhciArIDYsIGMtPmNtZCkpIHsKKwkJaW50IGIgPSBnaXRfY29uZmlnX21heWJlX2Jvb2wodmFyLCB2YWx1ZSk7CisJCWlmIChiID49IDApCisJCQljLT53YW50ID0gYjsKKwkJZWxzZSB7CisJCQljLT53YW50ID0gMTsKKwkJCWMtPnZhbHVlID0geHN0cmR1cCh2YWx1ZSk7CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qIHJldHVybnMgMCBmb3IgIm5vIHBhZ2VyIiwgMSBmb3IgInVzZSBwYWdlciIsIGFuZCAtMSBmb3IgIm5vdCBzcGVjaWZpZWQiICovCitpbnQgY2hlY2tfcGFnZXJfY29uZmlnKGNvbnN0IGNoYXIgKmNtZCkKK3sKKwlzdHJ1Y3QgcGFnZXJfY29uZmlnIGM7CisJYy5jbWQgPSBjbWQ7CisJYy53YW50ID0gLTE7CisJYy52YWx1ZSA9IE5VTEw7CisJZ2l0X2NvbmZpZyhwYWdlcl9jb21tYW5kX2NvbmZpZywgJmMpOworCWlmIChjLnZhbHVlKQorCQlwYWdlcl9wcm9ncmFtID0gYy52YWx1ZTsKKwlyZXR1cm4gYy53YW50OworfQpkaWZmIC0tZ2l0IGEvcGFyc2Utb3B0aW9ucy5jIGIvcGFyc2Utb3B0aW9ucy5jCmluZGV4IGFiNzBjMjkuLmMyY2JjYTIgMTAwNjQ0Ci0tLSBhL3BhcnNlLW9wdGlvbnMuYworKysgYi9wYXJzZS1vcHRpb25zLmMKQEAgLTMsNiArMyw3IEBACiAjaW5jbHVkZSAiY2FjaGUuaCIKICNpbmNsdWRlICJjb21taXQuaCIKICNpbmNsdWRlICJjb2xvci5oIgorI2luY2x1ZGUgInV0ZjguaCIKIAogc3RhdGljIGludCBwYXJzZV9vcHRpb25zX3VzYWdlKHN0cnVjdCBwYXJzZV9vcHRfY3R4X3QgKmN0eCwKIAkJCSAgICAgICBjb25zdCBjaGFyICogY29uc3QgKnVzYWdlc3RyLApAQCAtMTgsMTUgKzE5LDYgQEAKIAlyZXR1cm4gZXJyb3IoIkJVRzogc3dpdGNoICclYycgJXMiLCBvcHQtPnNob3J0X25hbWUsIHJlYXNvbik7CiB9CiAKLWludCBvcHRlcnJvcihjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHQsIGNvbnN0IGNoYXIgKnJlYXNvbiwgaW50IGZsYWdzKQotewotCWlmIChmbGFncyAmIE9QVF9TSE9SVCkKLQkJcmV0dXJuIGVycm9yKCJzd2l0Y2ggYCVjJyAlcyIsIG9wdC0+c2hvcnRfbmFtZSwgcmVhc29uKTsKLQlpZiAoZmxhZ3MgJiBPUFRfVU5TRVQpCi0JCXJldHVybiBlcnJvcigib3B0aW9uIGBuby0lcycgJXMiLCBvcHQtPmxvbmdfbmFtZSwgcmVhc29uKTsKLQlyZXR1cm4gZXJyb3IoIm9wdGlvbiBgJXMnICVzIiwgb3B0LT5sb25nX25hbWUsIHJlYXNvbik7Ci19Ci0KIHN0YXRpYyBpbnQgZ2V0X2FyZyhzdHJ1Y3QgcGFyc2Vfb3B0X2N0eF90ICpwLCBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHQsCiAJCSAgIGludCBmbGFncywgY29uc3QgY2hhciAqKmFyZykKIHsKQEAgLTQ3MCwxMiArNDYyLDE2IEBACiAJZGVmYXVsdDogLyogUEFSU0VfT1BUX1VOS05PV04gKi8KIAkJaWYgKGN0eC5hcmd2WzBdWzFdID09ICctJykgewogCQkJZXJyb3IoInVua25vd24gb3B0aW9uIGAlcyciLCBjdHguYXJndlswXSArIDIpOwotCQl9IGVsc2UgeworCQl9IGVsc2UgaWYgKGlzYXNjaWkoKmN0eC5vcHQpKSB7CiAJCQllcnJvcigidW5rbm93biBzd2l0Y2ggYCVjJyIsICpjdHgub3B0KTsKKwkJfSBlbHNlIHsKKwkJCWVycm9yKCJ1bmtub3duIG5vbi1hc2NpaSBvcHRpb24gaW4gc3RyaW5nOiBgJXMnIiwKKwkJCSAgICAgIGN0eC5hcmd2WzBdKTsKIAkJfQogCQl1c2FnZV93aXRoX29wdGlvbnModXNhZ2VzdHIsIG9wdGlvbnMpOwogCX0KIAorCXByZWNvbXBvc2VfYXJndihhcmdjLCBhcmd2KTsKIAlyZXR1cm4gcGFyc2Vfb3B0aW9uc19lbmQoJmN0eCk7CiB9CiAKQEAgLTQ5MCw3ICs0ODYsNyBAQAogCQkJcyA9IGxpdGVyYWwgPyAiWyVzXSIgOiAiWzwlcz5dIjsKIAllbHNlCiAJCXMgPSBsaXRlcmFsID8gIiAlcyIgOiAiIDwlcz4iOwotCXJldHVybiBmcHJpbnRmKG91dGZpbGUsIHMsIG9wdHMtPmFyZ2ggPyBfKG9wdHMtPmFyZ2gpIDogXygiLi4uIikpOworCXJldHVybiB1dGY4X2ZwcmludGYob3V0ZmlsZSwgcywgb3B0cy0+YXJnaCA/IF8ob3B0cy0+YXJnaCkgOiBfKCIuLi4iKSk7CiB9CiAKICNkZWZpbmUgVVNBR0VfT1BUU19XSURUSCAyNApAQCAtNTQ5LDcgKzU0NSw3IEBACiAJCWlmIChvcHRzLT5sb25nX25hbWUpCiAJCQlwb3MgKz0gZnByaW50ZihvdXRmaWxlLCAiLS0lcyIsIG9wdHMtPmxvbmdfbmFtZSk7CiAJCWlmIChvcHRzLT50eXBlID09IE9QVElPTl9OVU1CRVIpCi0JCQlwb3MgKz0gZnByaW50ZihvdXRmaWxlLCAiLU5VTSIpOworCQkJcG9zICs9IHV0ZjhfZnByaW50ZihvdXRmaWxlLCBfKCItTlVNIikpOwogCiAJCWlmICgob3B0cy0+ZmxhZ3MgJiBQQVJTRV9PUFRfTElURVJBTF9BUkdIRUxQKSB8fAogCQkgICAgIShvcHRzLT5mbGFncyAmIFBBUlNFX09QVF9OT0FSRykpCkBAIC01OTMsMyArNTg5LDEyIEBACiAJcmV0dXJuIHVzYWdlX3dpdGhfb3B0aW9uc19pbnRlcm5hbChjdHgsIHVzYWdlc3RyLCBvcHRzLCAwLCBlcnIpOwogfQogCisjdW5kZWYgb3B0ZXJyb3IKK2ludCBvcHRlcnJvcihjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHQsIGNvbnN0IGNoYXIgKnJlYXNvbiwgaW50IGZsYWdzKQoreworCWlmIChmbGFncyAmIE9QVF9TSE9SVCkKKwkJcmV0dXJuIGVycm9yKCJzd2l0Y2ggYCVjJyAlcyIsIG9wdC0+c2hvcnRfbmFtZSwgcmVhc29uKTsKKwlpZiAoZmxhZ3MgJiBPUFRfVU5TRVQpCisJCXJldHVybiBlcnJvcigib3B0aW9uIGBuby0lcycgJXMiLCBvcHQtPmxvbmdfbmFtZSwgcmVhc29uKTsKKwlyZXR1cm4gZXJyb3IoIm9wdGlvbiBgJXMnICVzIiwgb3B0LT5sb25nX25hbWUsIHJlYXNvbik7Cit9CmRpZmYgLS1naXQgYS9wYXJzZS1vcHRpb25zLmggYi9wYXJzZS1vcHRpb25zLmgKaW5kZXggNzdhNGE4Yi4uMWM4YmQ4ZCAxMDA2NDQKLS0tIGEvcGFyc2Utb3B0aW9ucy5oCisrKyBiL3BhcnNlLW9wdGlvbnMuaApAQCAtMTc3LDYgKzE3NywxMCBAQAogCiBleHRlcm4gaW50IG9wdGJ1Zyhjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHQsIGNvbnN0IGNoYXIgKnJlYXNvbik7CiBleHRlcm4gaW50IG9wdGVycm9yKGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdCwgY29uc3QgY2hhciAqcmVhc29uLCBpbnQgZmxhZ3MpOworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICEgZGVmaW5lZChjbGFuZykKKyNkZWZpbmUgb3B0ZXJyb3IobyxyLGYpIChvcHRlcnJvcigobyksKHIpLChmKSksIC0xKQorI2VuZGlmCisKIC8qLS0tLS0gaW5jcmVtZW50YWwgYWR2YW5jZWQgQVBJcyAtLS0tLSovCiAKIGVudW0gewpAQCAtMjM4LDYgKzI0Miw2IEBACiAjZGVmaW5lIE9QVF9fQ09MT1IodmFyLCBoKSBcCiAJT1BUX0NPTE9SX0ZMQUcoMCwgImNvbG9yIiwgKHZhciksIChoKSkKICNkZWZpbmUgT1BUX0NPTFVNTihzLCBsLCB2LCBoKSBcCi0JeyBPUFRJT05fQ0FMTEJBQ0ssIChzKSwgKGwpLCAodiksICJzdHlsZSIsIChoKSwgUEFSU0VfT1BUX09QVEFSRywgcGFyc2VvcHRfY29sdW1uX2NhbGxiYWNrIH0KKwl7IE9QVElPTl9DQUxMQkFDSywgKHMpLCAobCksICh2KSwgTl8oInN0eWxlIiksIChoKSwgUEFSU0VfT1BUX09QVEFSRywgcGFyc2VvcHRfY29sdW1uX2NhbGxiYWNrIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9wYXRjaC1pZHMuYyBiL3BhdGNoLWlkcy5jCmluZGV4IDU3MTcyNTcuLmJjOGEyOGYgMTAwNjQ0Ci0tLSBhL3BhdGNoLWlkcy5jCisrKyBiL3BhdGNoLWlkcy5jCkBAIC0zOSw4ICszOSw3IEBACiAJbWVtc2V0KGlkcywgMCwgc2l6ZW9mKCppZHMpKTsKIAlkaWZmX3NldHVwKCZpZHMtPmRpZmZvcHRzKTsKIAlESUZGX09QVF9TRVQoJmlkcy0+ZGlmZm9wdHMsIFJFQ1VSU0lWRSk7Ci0JaWYgKGRpZmZfc2V0dXBfZG9uZSgmaWRzLT5kaWZmb3B0cykgPCAwKQotCQlyZXR1cm4gZXJyb3IoImRpZmZfc2V0dXBfZG9uZSBmYWlsZWQiKTsKKwlkaWZmX3NldHVwX2RvbmUoJmlkcy0+ZGlmZm9wdHMpOwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9wYXRoLmMgYi9wYXRoLmMKaW5kZXggNmYyYWE2OS4uMDRmZjE0OCAxMDA2NDQKLS0tIGEvcGF0aC5jCisrKyBiL3BhdGguYwpAQCAtMSwxNyArMSwyNSBAQAogLyoKLSAqIEknbSB0aXJlZCBvZiBkb2luZyAidnNucHJpbnRmKCkiIGV0YyBqdXN0IHRvIG9wZW4gYQotICogZmlsZSwgc28gaGVyZSdzIGEgInJldHVybiBzdGF0aWMgYnVmZmVyIHdpdGggcHJpbnRmIgotICogaW50ZXJmYWNlIGZvciBwYXRocy4KLSAqCi0gKiBJdCdzIG9idmlvdXNseSBub3QgdGhyZWFkLXNhZmUuIFN1ZSBtZS4gQnV0IGl0J3MgcXVpdGUKLSAqIHVzZWZ1bCBmb3IgZG9pbmcgdGhpbmdzIGxpa2UKLSAqCi0gKiAgIGYgPSBvcGVuKG1rcGF0aCgiJXMvJXMuZ2l0IiwgYmFzZSwgbmFtZSksIE9fUkRPTkxZKTsKLSAqCi0gKiB3aGljaCBpcyB3aGF0IGl0J3MgZGVzaWduZWQgZm9yLgorICogVXRpbGl0aWVzIGZvciBwYXRocyBhbmQgcGF0aG5hbWVzCiAgKi8KICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgInN0cmJ1Zi5oIgorI2luY2x1ZGUgInN0cmluZy1saXN0LmgiCisKKyNpZm5kZWYgZ2V0X3N0X21vZGVfYml0cworLyoKKyAqIFRoZSByZXBsYWNlbWVudCBsc3RhdCgyKSB3ZSB1c2Ugb24gQ3lnd2luIGlzIGluY29tcGxldGUgYW5kCisgKiBtYXkgcmV0dXJuIHdyb25nIHBlcm1pc3Npb24gYml0cy4gTW9zdCBvZiB0aGUgdGltZSB3ZSBkbyBub3QgY2FyZSwKKyAqIGJ1dCB0aGUgY2FsbHNpdGVzIG9mIHRoaXMgd3JhcHBlciBkbyBjYXJlLgorICovCitpbnQgZ2V0X3N0X21vZGVfYml0cyhjb25zdCBjaGFyICpwYXRoLCBpbnQgKm1vZGUpCit7CisJc3RydWN0IHN0YXQgc3Q7CisJaWYgKGxzdGF0KHBhdGgsICZzdCkgPCAwKQorCQlyZXR1cm4gLTE7CisJKm1vZGUgPSBzdC5zdF9tb2RlOworCXJldHVybiAwOworfQorI2VuZGlmCiAKIHN0YXRpYyBjaGFyIGJhZF9wYXRoW10gPSAiL2JhZC1wYXRoLyI7CiAKQEAgLTQ4LDcgKzU2LDcgQEAKIAlyZXR1cm4gY2xlYW51cF9wYXRoKGJ1Zik7CiB9CiAKLXN0YXRpYyBjaGFyICpnaXRfdnNucGF0aChjaGFyICpidWYsIHNpemVfdCBuLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncykKK3N0YXRpYyBjaGFyICp2c25wYXRoKGNoYXIgKmJ1Ziwgc2l6ZV90IG4sIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKQogewogCWNvbnN0IGNoYXIgKmdpdF9kaXIgPSBnZXRfZ2l0X2RpcigpOwogCXNpemVfdCBsZW47CkBAIC03MCwyMSArNzgsMzcgQEAKIAogY2hhciAqZ2l0X3NucGF0aChjaGFyICpidWYsIHNpemVfdCBuLCBjb25zdCBjaGFyICpmbXQsIC4uLikKIHsKKwljaGFyICpyZXQ7CiAJdmFfbGlzdCBhcmdzOwogCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7Ci0JKHZvaWQpZ2l0X3ZzbnBhdGgoYnVmLCBuLCBmbXQsIGFyZ3MpOworCXJldCA9IHZzbnBhdGgoYnVmLCBuLCBmbXQsIGFyZ3MpOwogCXZhX2VuZChhcmdzKTsKLQlyZXR1cm4gYnVmOworCXJldHVybiByZXQ7CiB9CiAKIGNoYXIgKmdpdF9wYXRoZHVwKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewotCWNoYXIgcGF0aFtQQVRIX01BWF07CisJY2hhciBwYXRoW1BBVEhfTUFYXSwgKnJldDsKIAl2YV9saXN0IGFyZ3M7CiAJdmFfc3RhcnQoYXJncywgZm10KTsKLQkodm9pZClnaXRfdnNucGF0aChwYXRoLCBzaXplb2YocGF0aCksIGZtdCwgYXJncyk7CisJcmV0ID0gdnNucGF0aChwYXRoLCBzaXplb2YocGF0aCksIGZtdCwgYXJncyk7CiAJdmFfZW5kKGFyZ3MpOwotCXJldHVybiB4c3RyZHVwKHBhdGgpOworCXJldHVybiB4c3RyZHVwKHJldCk7Cit9CisKK2NoYXIgKm1rcGF0aGR1cChjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwljaGFyICpwYXRoOworCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKKwl2YV9saXN0IGFyZ3M7CisKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCXN0cmJ1Zl92YWRkZigmc2IsIGZtdCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOworCXBhdGggPSB4c3RyZHVwKGNsZWFudXBfcGF0aChzYi5idWYpKTsKKworCXN0cmJ1Zl9yZWxlYXNlKCZzYik7CisJcmV0dXJuIHBhdGg7CiB9CiAKIGNoYXIgKm1rcGF0aChjb25zdCBjaGFyICpmbXQsIC4uLikKQEAgLTEwMywyMyArMTI3LDQwIEBACiAKIGNoYXIgKmdpdF9wYXRoKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewotCWNvbnN0IGNoYXIgKmdpdF9kaXIgPSBnZXRfZ2l0X2RpcigpOwogCWNoYXIgKnBhdGhuYW1lID0gZ2V0X3BhdGhuYW1lKCk7CiAJdmFfbGlzdCBhcmdzOwotCXVuc2lnbmVkIGxlbjsKKwljaGFyICpyZXQ7CiAKLQlsZW4gPSBzdHJsZW4oZ2l0X2Rpcik7Ci0JaWYgKGxlbiA+IFBBVEhfTUFYLTEwMCkKLQkJcmV0dXJuIGJhZF9wYXRoOwotCW1lbWNweShwYXRobmFtZSwgZ2l0X2RpciwgbGVuKTsKLQlpZiAobGVuICYmIGdpdF9kaXJbbGVuLTFdICE9ICcvJykKLQkJcGF0aG5hbWVbbGVuKytdID0gJy8nOwogCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7Ci0JbGVuICs9IHZzbnByaW50ZihwYXRobmFtZSArIGxlbiwgUEFUSF9NQVggLSBsZW4sIGZtdCwgYXJncyk7CisJcmV0ID0gdnNucGF0aChwYXRobmFtZSwgUEFUSF9NQVgsIGZtdCwgYXJncyk7CiAJdmFfZW5kKGFyZ3MpOwotCWlmIChsZW4gPj0gUEFUSF9NQVgpCi0JCXJldHVybiBiYWRfcGF0aDsKLQlyZXR1cm4gY2xlYW51cF9wYXRoKHBhdGhuYW1lKTsKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIGhvbWVfY29uZmlnX3BhdGhzKGNoYXIgKipnbG9iYWwsIGNoYXIgKip4ZGcsIGNoYXIgKmZpbGUpCit7CisJY2hhciAqeGRnX2hvbWUgPSBnZXRlbnYoIlhER19DT05GSUdfSE9NRSIpOworCWNoYXIgKmhvbWUgPSBnZXRlbnYoIkhPTUUiKTsKKwljaGFyICp0b19mcmVlID0gTlVMTDsKKworCWlmICghaG9tZSkgeworCQlpZiAoZ2xvYmFsKQorCQkJKmdsb2JhbCA9IE5VTEw7CisJfSBlbHNlIHsKKwkJaWYgKCF4ZGdfaG9tZSkgeworCQkJdG9fZnJlZSA9IG1rcGF0aGR1cCgiJXMvLmNvbmZpZyIsIGhvbWUpOworCQkJeGRnX2hvbWUgPSB0b19mcmVlOworCQl9CisJCWlmIChnbG9iYWwpCisJCQkqZ2xvYmFsID0gbWtwYXRoZHVwKCIlcy8uZ2l0Y29uZmlnIiwgaG9tZSk7CisJfQorCisJaWYgKCF4ZGdfaG9tZSkKKwkJKnhkZyA9IE5VTEw7CisJZWxzZQorCQkqeGRnID0gbWtwYXRoZHVwKCIlcy9naXQvJXMiLCB4ZGdfaG9tZSwgZmlsZSk7CisKKwlmcmVlKHRvX2ZyZWUpOwogfQogCiBjaGFyICpnaXRfcGF0aF9zdWJtb2R1bGUoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqZm10LCAuLi4pCkBAIC0zNTUsMjggKzM5NiwxNCBAQAogCXJldHVybiBOVUxMOwogfQogCi1pbnQgc2V0X3NoYXJlZF9wZXJtKGNvbnN0IGNoYXIgKnBhdGgsIGludCBtb2RlKQorc3RhdGljIGludCBjYWxjX3NoYXJlZF9wZXJtKGludCBtb2RlKQogewotCXN0cnVjdCBzdGF0IHN0OwotCWludCB0d2Vhaywgc2hhcmVkLCBvcmlnX21vZGU7CisJaW50IHR3ZWFrOwogCi0JaWYgKCFzaGFyZWRfcmVwb3NpdG9yeSkgewotCQlpZiAobW9kZSkKLQkJCXJldHVybiBjaG1vZChwYXRoLCBtb2RlICYgflNfSUZNVCk7Ci0JCXJldHVybiAwOwotCX0KLQlpZiAoIW1vZGUpIHsKLQkJaWYgKGxzdGF0KHBhdGgsICZzdCkgPCAwKQotCQkJcmV0dXJuIC0xOwotCQltb2RlID0gc3Quc3RfbW9kZTsKLQkJb3JpZ19tb2RlID0gbW9kZTsKLQl9IGVsc2UKLQkJb3JpZ19tb2RlID0gMDsKIAlpZiAoc2hhcmVkX3JlcG9zaXRvcnkgPCAwKQotCQlzaGFyZWQgPSAtc2hhcmVkX3JlcG9zaXRvcnk7CisJCXR3ZWFrID0gLXNoYXJlZF9yZXBvc2l0b3J5OwogCWVsc2UKLQkJc2hhcmVkID0gc2hhcmVkX3JlcG9zaXRvcnk7Ci0JdHdlYWsgPSBzaGFyZWQ7CisJCXR3ZWFrID0gc2hhcmVkX3JlcG9zaXRvcnk7CiAKIAlpZiAoIShtb2RlICYgU19JV1VTUikpCiAJCXR3ZWFrICY9IH4wMjIyOwpAQCAtMzg4LDE2ICs0MTUsMjggQEAKIAllbHNlCiAJCW1vZGUgfD0gdHdlYWs7CiAKLQlpZiAoU19JU0RJUihtb2RlKSkgeworCXJldHVybiBtb2RlOworfQorCisKK2ludCBhZGp1c3Rfc2hhcmVkX3Blcm0oY29uc3QgY2hhciAqcGF0aCkKK3sKKwlpbnQgb2xkX21vZGUsIG5ld19tb2RlOworCisJaWYgKCFzaGFyZWRfcmVwb3NpdG9yeSkKKwkJcmV0dXJuIDA7CisJaWYgKGdldF9zdF9tb2RlX2JpdHMocGF0aCwgJm9sZF9tb2RlKSA8IDApCisJCXJldHVybiAtMTsKKworCW5ld19tb2RlID0gY2FsY19zaGFyZWRfcGVybShvbGRfbW9kZSk7CisJaWYgKFNfSVNESVIob2xkX21vZGUpKSB7CiAJCS8qIENvcHkgcmVhZCBiaXRzIHRvIGV4ZWN1dGUgYml0cyAqLwotCQltb2RlIHw9IChzaGFyZWQgJiAwNDQ0KSA+PiAyOwotCQltb2RlIHw9IEZPUkNFX0RJUl9TRVRfR0lEOworCQluZXdfbW9kZSB8PSAobmV3X21vZGUgJiAwNDQ0KSA+PiAyOworCQluZXdfbW9kZSB8PSBGT1JDRV9ESVJfU0VUX0dJRDsKIAl9CiAKLQlpZiAoKChzaGFyZWRfcmVwb3NpdG9yeSA8IDAKLQkgICAgICA/IChvcmlnX21vZGUgJiAoRk9SQ0VfRElSX1NFVF9HSUQgfCAwNzc3KSkKLQkgICAgICA6IChvcmlnX21vZGUgJiBtb2RlKSkgIT0gbW9kZSkgJiYKLQkgICAgY2htb2QocGF0aCwgKG1vZGUgJiB+U19JRk1UKSkgPCAwKQorCWlmICgoKG9sZF9tb2RlIF4gbmV3X21vZGUpICYgflNfSUZNVCkgJiYKKwkJCWNobW9kKHBhdGgsIChuZXdfbW9kZSAmIH5TX0lGTVQpKSA8IDApCiAJCXJldHVybiAtMjsKIAlyZXR1cm4gMDsKIH0KQEAgLTUzNiw0MyArNTc1LDM4IEBACiAKIC8qCiAgKiBwYXRoID0gQ2Fub25pY2FsIGFic29sdXRlIHBhdGgKLSAqIHByZWZpeF9saXN0ID0gQ29sb24tc2VwYXJhdGVkIGxpc3Qgb2YgYWJzb2x1dGUgcGF0aHMKKyAqIHByZWZpeGVzID0gc3RyaW5nX2xpc3QgY29udGFpbmluZyBub3JtYWxpemVkLCBhYnNvbHV0ZSBwYXRocyB3aXRob3V0CisgKiB0cmFpbGluZyBzbGFzaGVzIChleGNlcHQgZm9yIHRoZSByb290IGRpcmVjdG9yeSwgd2hpY2ggaXMgZGVub3RlZCBieSAiLyIpLgogICoKLSAqIERldGVybWluZXMsIGZvciBlYWNoIHBhdGggaW4gcHJlZml4X2xpc3QsIHdoZXRoZXIgdGhlICJwcmVmaXgiIHJlYWxseQorICogRGV0ZXJtaW5lcywgZm9yIGVhY2ggcGF0aCBpbiBwcmVmaXhlcywgd2hldGhlciB0aGUgInByZWZpeCIKICAqIGlzIGFuIGFuY2VzdG9yIGRpcmVjdG9yeSBvZiBwYXRoLiAgUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0CiAgKiBhbmNlc3RvciBkaXJlY3RvcnksIGV4Y2x1ZGluZyBhbnkgdHJhaWxpbmcgc2xhc2hlcywgb3IgLTEgaWYgbm8gcHJlZml4Ci0gKiBpcyBhbiBhbmNlc3Rvci4gIChOb3RlIHRoYXQgdGhpcyBtZWFucyAwIGlzIHJldHVybmVkIGlmIHByZWZpeF9saXN0IGlzCi0gKiAiLyIuKSAiL2ZvbyIgaXMgbm90IGNvbnNpZGVyZWQgYW4gYW5jZXN0b3Igb2YgIi9mb29iYXIiLiAgRGlyZWN0b3JpZXMKKyAqIGlzIGFuIGFuY2VzdG9yLiAgKE5vdGUgdGhhdCB0aGlzIG1lYW5zIDAgaXMgcmV0dXJuZWQgaWYgcHJlZml4ZXMgaXMKKyAqIFsiLyJdLikgIi9mb28iIGlzIG5vdCBjb25zaWRlcmVkIGFuIGFuY2VzdG9yIG9mICIvZm9vYmFyIi4gIERpcmVjdG9yaWVzCiAgKiBhcmUgbm90IGNvbnNpZGVyZWQgdG8gYmUgdGhlaXIgb3duIGFuY2VzdG9ycy4gIHBhdGggbXVzdCBiZSBpbiBhCiAgKiBjYW5vbmljYWwgZm9ybTogZW1wdHkgY29tcG9uZW50cywgb3IgIi4iIG9yICIuLiIgY29tcG9uZW50cyBhcmUgbm90Ci0gKiBhbGxvd2VkLiAgcHJlZml4X2xpc3QgbWF5IGJlIG51bGwsIHdoaWNoIGlzIGxpa2UgIiIuCisgKiBhbGxvd2VkLgogICovCi1pbnQgbG9uZ2VzdF9hbmNlc3Rvcl9sZW5ndGgoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqcHJlZml4X2xpc3QpCitpbnQgbG9uZ2VzdF9hbmNlc3Rvcl9sZW5ndGgoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0cmluZ19saXN0ICpwcmVmaXhlcykKIHsKLQljaGFyIGJ1ZltQQVRIX01BWCsxXTsKLQljb25zdCBjaGFyICpjZWlsLCAqY29sb247Ci0JaW50IGxlbiwgbWF4X2xlbiA9IC0xOworCWludCBpLCBtYXhfbGVuID0gLTE7CiAKLQlpZiAocHJlZml4X2xpc3QgPT0gTlVMTCB8fCAhc3RyY21wKHBhdGgsICIvIikpCisJaWYgKCFzdHJjbXAocGF0aCwgIi8iKSkKIAkJcmV0dXJuIC0xOwogCi0JZm9yIChjb2xvbiA9IGNlaWwgPSBwcmVmaXhfbGlzdDsgKmNvbG9uOyBjZWlsID0gY29sb24rMSkgewotCQlmb3IgKGNvbG9uID0gY2VpbDsgKmNvbG9uICYmICpjb2xvbiAhPSBQQVRIX1NFUDsgY29sb24rKyk7Ci0JCWxlbiA9IGNvbG9uIC0gY2VpbDsKLQkJaWYgKGxlbiA9PSAwIHx8IGxlbiA+IFBBVEhfTUFYIHx8ICFpc19hYnNvbHV0ZV9wYXRoKGNlaWwpKQotCQkJY29udGludWU7Ci0JCXN0cmxjcHkoYnVmLCBjZWlsLCBsZW4rMSk7Ci0JCWlmIChub3JtYWxpemVfcGF0aF9jb3B5KGJ1ZiwgYnVmKSA8IDApCi0JCQljb250aW51ZTsKLQkJbGVuID0gc3RybGVuKGJ1Zik7Ci0JCWlmIChsZW4gPiAwICYmIGJ1ZltsZW4tMV0gPT0gJy8nKQotCQkJYnVmWy0tbGVuXSA9ICdcMCc7CisJZm9yIChpID0gMDsgaSA8IHByZWZpeGVzLT5ucjsgaSsrKSB7CisJCWNvbnN0IGNoYXIgKmNlaWwgPSBwcmVmaXhlcy0+aXRlbXNbaV0uc3RyaW5nOworCQlpbnQgbGVuID0gc3RybGVuKGNlaWwpOwogCi0JCWlmICghc3RybmNtcChwYXRoLCBidWYsIGxlbikgJiYKLQkJICAgIHBhdGhbbGVuXSA9PSAnLycgJiYKLQkJICAgIGxlbiA+IG1heF9sZW4pIHsKKwkJaWYgKGxlbiA9PSAxICYmIGNlaWxbMF0gPT0gJy8nKQorCQkJbGVuID0gMDsgLyogcm9vdCBtYXRjaGVzIGFueXRoaW5nLCB3aXRoIGxlbmd0aCAwICovCisJCWVsc2UgaWYgKCFzdHJuY21wKHBhdGgsIGNlaWwsIGxlbikgJiYgcGF0aFtsZW5dID09ICcvJykKKwkJCTsgLyogbWF0Y2ggb2YgbGVuZ3RoIGxlbiAqLworCQllbHNlCisJCQljb250aW51ZTsgLyogbm8gbWF0Y2ggKi8KKworCQlpZiAobGVuID4gbWF4X2xlbikKIAkJCW1heF9sZW4gPSBsZW47Ci0JCX0KIAl9CiAKIAlyZXR1cm4gbWF4X2xlbjsKZGlmZiAtLWdpdCBhL3BhdGhzcGVjLmMgYi9wYXRoc3BlYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NGYzOTcKLS0tIC9kZXYvbnVsbAorKysgYi9wYXRoc3BlYy5jCkBAIC0wLDAgKzEsMTAxIEBACisjaW5jbHVkZSAiY2FjaGUuaCIKKyNpbmNsdWRlICJkaXIuaCIKKyNpbmNsdWRlICJwYXRoc3BlYy5oIgorCisvKgorICogRmluZHMgd2hpY2ggb2YgdGhlIGdpdmVuIHBhdGhzcGVjcyBtYXRjaCBpdGVtcyBpbiB0aGUgaW5kZXguCisgKgorICogRm9yIGVhY2ggcGF0aHNwZWMsIHNldHMgdGhlIGNvcnJlc3BvbmRpbmcgZW50cnkgaW4gdGhlIHNlZW5bXSBhcnJheQorICogKHdoaWNoIHNob3VsZCBiZSBzcGVjcyBpdGVtcyBsb25nLCBpLmUuIHRoZSBzYW1lIHNpemUgYXMgcGF0aHNwZWMpCisgKiB0byB0aGUgbmF0dXJlIG9mIHRoZSAiY2xvc2VzdCIgKGkuZS4gbW9zdCBzcGVjaWZpYykgbWF0Y2ggZm91bmQgZm9yCisgKiB0aGF0IHBhdGhzcGVjIGluIHRoZSBpbmRleCwgaWYgaXQgd2FzIGEgY2xvc2VyIHR5cGUgb2YgbWF0Y2ggdGhhbgorICogdGhlIGV4aXN0aW5nIGVudHJ5LiAgQXMgYW4gb3B0aW1pemF0aW9uLCBtYXRjaGluZyBpcyBza2lwcGVkCisgKiBhbHRvZ2V0aGVyIGlmIHNlZW5bXSBhbHJlYWR5IG9ubHkgY29udGFpbnMgbm9uLXplcm8gZW50cmllcy4KKyAqCisgKiBJZiBzZWVuW10gaGFzIG5vdCBhbHJlYWR5IGJlZW4gd3JpdHRlbiB0bywgaXQgbWF5IG1ha2Ugc2Vuc2UKKyAqIHRvIHVzZSBmaW5kX3BhdGhzcGVjc19tYXRjaGluZ19hZ2FpbnN0X2luZGV4KCkgaW5zdGVhZC4KKyAqLwordm9pZCBhZGRfcGF0aHNwZWNfbWF0Y2hlc19hZ2FpbnN0X2luZGV4KGNvbnN0IGNoYXIgKipwYXRoc3BlYywKKwkJCQkJY2hhciAqc2VlbiwgaW50IHNwZWNzKQoreworCWludCBudW1fdW5tYXRjaGVkID0gMCwgaTsKKworCS8qCisJICogU2luY2Ugd2UgYXJlIHdhbGtpbmcgdGhlIGluZGV4IGFzIGlmIHdlIHdlcmUgd2Fsa2luZyB0aGUgZGlyZWN0b3J5LAorCSAqIHdlIGhhdmUgdG8gbWFyayB0aGUgbWF0Y2hlZCBwYXRoc3BlYyBhcyBzZWVuOyBvdGhlcndpc2Ugd2Ugd2lsbAorCSAqIG1pc3Rha2VubHkgdGhpbmsgdGhhdCB0aGUgdXNlciBnYXZlIGEgcGF0aHNwZWMgdGhhdCBkaWQgbm90IG1hdGNoCisJICogYW55dGhpbmcuCisJICovCisJZm9yIChpID0gMDsgaSA8IHNwZWNzOyBpKyspCisJCWlmICghc2VlbltpXSkKKwkJCW51bV91bm1hdGNoZWQrKzsKKwlpZiAoIW51bV91bm1hdGNoZWQpCisJCXJldHVybjsKKwlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOyBpKyspIHsKKwkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpXTsKKwkJbWF0Y2hfcGF0aHNwZWMocGF0aHNwZWMsIGNlLT5uYW1lLCBjZV9uYW1lbGVuKGNlKSwgMCwgc2Vlbik7CisJfQorfQorCisvKgorICogRmluZHMgd2hpY2ggb2YgdGhlIGdpdmVuIHBhdGhzcGVjcyBtYXRjaCBpdGVtcyBpbiB0aGUgaW5kZXguCisgKgorICogVGhpcyBpcyBhIG9uZS1zaG90IHdyYXBwZXIgYXJvdW5kIGFkZF9wYXRoc3BlY19tYXRjaGVzX2FnYWluc3RfaW5kZXgoKQorICogd2hpY2ggYWxsb2NhdGVzLCBwb3B1bGF0ZXMsIGFuZCByZXR1cm5zIGEgc2VlbltdIGFycmF5IGluZGljYXRpbmcgdGhlCisgKiBuYXR1cmUgb2YgdGhlICJjbG9zZXN0IiAoaS5lLiBtb3N0IHNwZWNpZmljKSBtYXRjaGVzIHdoaWNoIGVhY2ggb2YgdGhlCisgKiBnaXZlbiBwYXRoc3BlY3MgYWNoaWV2ZXMgYWdhaW5zdCBhbGwgaXRlbXMgaW4gdGhlIGluZGV4LgorICovCitjaGFyICpmaW5kX3BhdGhzcGVjc19tYXRjaGluZ19hZ2FpbnN0X2luZGV4KGNvbnN0IGNoYXIgKipwYXRoc3BlYykKK3sKKwljaGFyICpzZWVuOworCWludCBpOworCisJZm9yIChpID0gMDsgcGF0aHNwZWNbaV07ICBpKyspCisJCTsgLyoganVzdCBjb3VudGluZyAqLworCXNlZW4gPSB4Y2FsbG9jKGksIDEpOworCWFkZF9wYXRoc3BlY19tYXRjaGVzX2FnYWluc3RfaW5kZXgocGF0aHNwZWMsIHNlZW4sIGkpOworCXJldHVybiBzZWVuOworfQorCisvKgorICogQ2hlY2sgdGhlIGluZGV4IHRvIHNlZSB3aGV0aGVyIHBhdGggcmVmZXJzIHRvIGEgc3VibW9kdWxlLCBvcgorICogc29tZXRoaW5nIGluc2lkZSBhIHN1Ym1vZHVsZS4gIElmIHRoZSBmb3JtZXIsIHJldHVybnMgdGhlIHBhdGggd2l0aAorICogYW55IHRyYWlsaW5nIHNsYXNoIHN0cmlwcGVkLiAgSWYgdGhlIGxhdHRlciwgZGllcyB3aXRoIGFuIGVycm9yCisgKiBtZXNzYWdlLgorICovCitjb25zdCBjaGFyICpjaGVja19wYXRoX2Zvcl9naXRsaW5rKGNvbnN0IGNoYXIgKnBhdGgpCit7CisJaW50IGksIHBhdGhfbGVuID0gc3RybGVuKHBhdGgpOworCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7IGkrKykgeworCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOworCQlpZiAoU19JU0dJVExJTksoY2UtPmNlX21vZGUpKSB7CisJCQlpbnQgY2VfbGVuID0gY2VfbmFtZWxlbihjZSk7CisJCQlpZiAocGF0aF9sZW4gPD0gY2VfbGVuIHx8IHBhdGhbY2VfbGVuXSAhPSAnLycgfHwKKwkJCSAgICBtZW1jbXAoY2UtPm5hbWUsIHBhdGgsIGNlX2xlbikpCisJCQkJLyogcGF0aCBkb2VzIG5vdCByZWZlciB0byB0aGlzCisJCQkJICogc3VibW9kdWxlIG9yIGFueXRoaW5nIGluc2lkZSBpdCAqLworCQkJCWNvbnRpbnVlOworCQkJaWYgKHBhdGhfbGVuID09IGNlX2xlbiArIDEpIHsKKwkJCQkvKiBwYXRoIHJlZmVycyB0byBzdWJtb2R1bGU7CisJCQkJICogc3RyaXAgdHJhaWxpbmcgc2xhc2ggKi8KKwkJCQlyZXR1cm4geHN0cm5kdXAoY2UtPm5hbWUsIGNlX2xlbik7CisJCQl9IGVsc2UgeworCQkJCWRpZSAoXygiUGF0aCAnJXMnIGlzIGluIHN1Ym1vZHVsZSAnJS4qcyciKSwKKwkJCQkgICAgIHBhdGgsIGNlX2xlbiwgY2UtPm5hbWUpOworCQkJfQorCQl9CisJfQorCXJldHVybiBwYXRoOworfQorCisvKgorICogRGllcyBpZiB0aGUgZ2l2ZW4gcGF0aCByZWZlcnMgdG8gYSBmaWxlIGluc2lkZSBhIHN5bWxpbmtlZAorICogZGlyZWN0b3J5IGluIHRoZSBpbmRleC4KKyAqLwordm9pZCBkaWVfaWZfcGF0aF9iZXlvbmRfc3ltbGluayhjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICpwcmVmaXgpCit7CisJaWYgKGhhc19zeW1saW5rX2xlYWRpbmdfcGF0aChwYXRoLCBzdHJsZW4ocGF0aCkpKSB7CisJCWludCBsZW4gPSBwcmVmaXggPyBzdHJsZW4ocHJlZml4KSA6IDA7CisJCWRpZShfKCInJXMnIGlzIGJleW9uZCBhIHN5bWJvbGljIGxpbmsiKSwgcGF0aCArIGxlbik7CisJfQorfQpkaWZmIC0tZ2l0IGEvcGF0aHNwZWMuaCBiL3BhdGhzcGVjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGIwMTg0YQotLS0gL2Rldi9udWxsCisrKyBiL3BhdGhzcGVjLmgKQEAgLTAsMCArMSw5IEBACisjaWZuZGVmIFBBVEhTUEVDX0gKKyNkZWZpbmUgUEFUSFNQRUNfSAorCitleHRlcm4gY2hhciAqZmluZF9wYXRoc3BlY3NfbWF0Y2hpbmdfYWdhaW5zdF9pbmRleChjb25zdCBjaGFyICoqcGF0aHNwZWMpOworZXh0ZXJuIHZvaWQgYWRkX3BhdGhzcGVjX21hdGNoZXNfYWdhaW5zdF9pbmRleChjb25zdCBjaGFyICoqcGF0aHNwZWMsIGNoYXIgKnNlZW4sIGludCBzcGVjcyk7CitleHRlcm4gY29uc3QgY2hhciAqY2hlY2tfcGF0aF9mb3JfZ2l0bGluayhjb25zdCBjaGFyICpwYXRoKTsKK2V4dGVybiB2b2lkIGRpZV9pZl9wYXRoX2JleW9uZF9zeW1saW5rKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKnByZWZpeCk7CisKKyNlbmRpZiAvKiBQQVRIU1BFQ19IICovCmRpZmYgLS1naXQgYS9wZXJsLy5naXRpZ25vcmUgYi9wZXJsLy5naXRpZ25vcmUKaW5kZXggZDVjNmUyMi4uMGYxZmMyNyAxMDA2NDQKLS0tIGEvcGVybC8uZ2l0aWdub3JlCisrKyBiL3BlcmwvLmdpdGlnbm9yZQpAQCAtNSwzICs1LDQgQEAKIGJsaWIKIGJsaWJkaXJzCiBwbV90b19ibGliCitQTS5zdGFtcApkaWZmIC0tZ2l0IGEvcGVybC9HaXQucG0gYi9wZXJsL0dpdC5wbQppbmRleCA0OTdmNDIwLi43YTI1MmVmIDEwMDY0NAotLS0gYS9wZXJsL0dpdC5wbQorKysgYi9wZXJsL0dpdC5wbQpAQCAtNTgsNyArNTgsOSBAQAogICAgICAgICAgICAgICAgIGNvbW1hbmRfb3V0cHV0X3BpcGUgY29tbWFuZF9pbnB1dF9waXBlIGNvbW1hbmRfY2xvc2VfcGlwZQogICAgICAgICAgICAgICAgIGNvbW1hbmRfYmlkaV9waXBlIGNvbW1hbmRfY2xvc2VfYmlkaV9waXBlCiAgICAgICAgICAgICAgICAgdmVyc2lvbiBleGVjX3BhdGggaHRtbF9wYXRoIGhhc2hfb2JqZWN0IGdpdF9jbWRfdHJ5Ci0gICAgICAgICAgICAgICAgcmVtb3RlX3JlZnMKKyAgICAgICAgICAgICAgICByZW1vdGVfcmVmcyBwcm9tcHQKKyAgICAgICAgICAgICAgICBnZXRfdHpfb2Zmc2V0CisgICAgICAgICAgICAgICAgY3JlZGVudGlhbCBjcmVkZW50aWFsX3JlYWQgY3JlZGVudGlhbF93cml0ZQogICAgICAgICAgICAgICAgIHRlbXBfYWNxdWlyZSB0ZW1wX3JlbGVhc2UgdGVtcF9yZXNldCB0ZW1wX3BhdGgpOwogCiAKQEAgLTEwMiw2ICsxMDQsNyBAQAogdXNlIEN3ZCBxdyhhYnNfcGF0aCBjd2QpOwogdXNlIElQQzo6T3BlbjIgcXcob3BlbjIpOwogdXNlIEZjbnRsIHF3KFNFRUtfU0VUIFNFRUtfQ1VSKTsKK3VzZSBUaW1lOjpMb2NhbCBxdyh0aW1lZ20pOwogfQogCiAKQEAgLTI2NywxMyArMjcwLDEzIEBACiAKIAlpZiAobm90IGRlZmluZWQgd2FudGFycmF5KSB7CiAJCSMgTm90aGluZyB0byBwZXBwZXIgdGhlIHBvc3NpYmxlIGV4Y2VwdGlvbiB3aXRoLgotCQlfY21kX2Nsb3NlKCRmaCwgJGN0eCk7CisJCV9jbWRfY2xvc2UoJGN0eCwgJGZoKTsKIAogCX0gZWxzaWYgKG5vdCB3YW50YXJyYXkpIHsKIAkJbG9jYWwgJC87CiAJCW15ICR0ZXh0ID0gPCRmaD47CiAJCXRyeSB7Ci0JCQlfY21kX2Nsb3NlKCRmaCwgJGN0eCk7CisJCQlfY21kX2Nsb3NlKCRjdHgsICRmaCk7CiAJCX0gY2F0Y2ggR2l0OjpFcnJvcjo6Q29tbWFuZCB3aXRoIHsKIAkJCSMgUGVwcGVyIHdpdGggdGhlIG91dHB1dDoKIAkJCW15ICRFID0gc2hpZnQ7CkBAIC0yODYsNyArMjg5LDcgQEAKIAkJbXkgQGxpbmVzID0gPCRmaD47CiAJCWRlZmluZWQgYW5kIGNob21wIGZvciBAbGluZXM7CiAJCXRyeSB7Ci0JCQlfY21kX2Nsb3NlKCRmaCwgJGN0eCk7CisJCQlfY21kX2Nsb3NlKCRjdHgsICRmaCk7CiAJCX0gY2F0Y2ggR2l0OjpFcnJvcjo6Q29tbWFuZCB3aXRoIHsKIAkJCW15ICRFID0gc2hpZnQ7CiAJCQkkRS0+eyctb3V0cHV0cmVmJ30gPSBcQGxpbmVzOwpAQCAtMzEzLDcgKzMxNiw3IEBACiAJbXkgJGxpbmUgPSA8JGZoPjsKIAlkZWZpbmVkICRsaW5lIGFuZCBjaG9tcCAkbGluZTsKIAl0cnkgewotCQlfY21kX2Nsb3NlKCRmaCwgJGN0eCk7CisJCV9jbWRfY2xvc2UoJGN0eCwgJGZoKTsKIAl9IGNhdGNoIEdpdDo6RXJyb3I6OkNvbW1hbmQgd2l0aCB7CiAJCSMgUGVwcGVyIHdpdGggdGhlIG91dHB1dDoKIAkJbXkgJEUgPSBzaGlmdDsKQEAgLTM4MSw3ICszODQsNyBAQAogc3ViIGNvbW1hbmRfY2xvc2VfcGlwZSB7CiAJbXkgKCRzZWxmLCAkZmgsICRjdHgpID0gX21heWJlX3NlbGYoQF8pOwogCSRjdHggfHw9ICc8dW5rbm93bj4nOwotCV9jbWRfY2xvc2UoJGZoLCAkY3R4KTsKKwlfY21kX2Nsb3NlKCRjdHgsICRmaCk7CiB9CiAKID1pdGVtIGNvbW1hbmRfYmlkaV9waXBlICggQ09NTUFORCBbLCBBUkdVTUVOVFMuLi4gXSApCkBAIC00MTgsNyArNDIxLDcgQEAKIGlzOgogCiAJbXkgKCRwaWQsICRpbiwgJG91dCwgJGN0eCkgPSAkci0+Y29tbWFuZF9iaWRpX3BpcGUoJ2NhdC1maWxlIC0tYmF0Y2gtY2hlY2snKTsKLQlwcmludCAiMDAwMDAwMDAwXG4iICRvdXQ7CisJcHJpbnQgJG91dCAiMDAwMDAwMDAwXG4iOwogCXdoaWxlICg8JGluPikgeyAuLi4gfQogCSRyLT5jb21tYW5kX2Nsb3NlX2JpZGlfcGlwZSgkcGlkLCAkaW4sICRvdXQsICRjdHgpOwogCkBAIC00MjYsMjMgKzQyOSwyNiBAQAogY3VycmVudGx5IGl0IGlzIHNpbXBseSB0aGUgY29tbWFuZCBuYW1lIGJ1dCBpbiBmdXR1cmUgdGhlIGNvbnRleHQgbWlnaHQKIGhhdmUgbW9yZSBjb21wbGljYXRlZCBzdHJ1Y3R1cmUuCiAKK0M8UElQRV9JTj4gYW5kIEM8UElQRV9PVVQ+IG1heSBiZSBDPHVuZGVmPiBpZiB0aGV5IGhhdmUgYmVlbiBjbG9zZWQgcHJpb3IgdG8KK2NhbGxpbmcgdGhpcyBmdW5jdGlvbi4gIFRoaXMgbWF5IGJlIHVzZWZ1bCBpbiBhIHF1ZXJ5LXJlc3BvbnNlIHR5cGUgb2YKK2NvbW1hbmRzIHdoZXJlIGNhbGxlciBmaXJzdCB3cml0ZXMgYSBxdWVyeSBhbmQgbGF0ZXIgcmVhZHMgcmVzcG9uc2UsIGVnOgorCisJbXkgKCRwaWQsICRpbiwgJG91dCwgJGN0eCkgPSAkci0+Y29tbWFuZF9iaWRpX3BpcGUoJ2NhdC1maWxlIC0tYmF0Y2gtY2hlY2snKTsKKwlwcmludCAkb3V0ICIwMDAwMDAwMDBcbiI7CisJY2xvc2UgJG91dDsKKwl3aGlsZSAoPCRpbj4pIHsgLi4uIH0KKwkkci0+Y29tbWFuZF9jbG9zZV9iaWRpX3BpcGUoJHBpZCwgJGluLCB1bmRlZiwgJGN0eCk7CisKK1RoaXMgaWRpb20gbWF5IHByZXZlbnQgcG90ZW50aWFsIGRlYWQgbG9ja3MgY2F1c2VkIGJ5IGRhdGEgc2VudCB0byB0aGUgb3V0cHV0CitwaXBlIG5vdCBiZWluZyBmbHVzaGVkIGFuZCB0aHVzIG5vdCByZWFjaGluZyB0aGUgZXhlY3V0ZWQgY29tbWFuZC4KKwogPWN1dAogCiBzdWIgY29tbWFuZF9jbG9zZV9iaWRpX3BpcGUgewogCWxvY2FsICQ/OwotCW15ICgkcGlkLCAkaW4sICRvdXQsICRjdHgpID0gQF87Ci0JZm9yZWFjaCBteSAkZmggKCRpbiwgJG91dCkgewotCQl1bmxlc3MgKGNsb3NlICRmaCkgewotCQkJaWYgKCQhKSB7Ci0JCQkJY2FycCAiZXJyb3IgY2xvc2luZyBwaXBlOiAkISI7Ci0JCQl9IGVsc2lmICgkPyA+PiA4KSB7Ci0JCQkJdGhyb3cgR2l0OjpFcnJvcjo6Q29tbWFuZCgkY3R4LCAkPyA+PjgpOwotCQkJfQotCQl9Ci0JfQotCisJbXkgKCRzZWxmLCAkcGlkLCAkaW4sICRvdXQsICRjdHgpID0gX21heWJlX3NlbGYoQF8pOworCV9jbWRfY2xvc2UoJGN0eCwgKGdyZXAgeyBkZWZpbmVkIH0gKCRpbiwgJG91dCkpKTsKIAl3YWl0cGlkICRwaWQsIDA7Ci0KIAlpZiAoJD8gPj4gOCkgewogCQl0aHJvdyBHaXQ6OkVycm9yOjpDb21tYW5kKCRjdHgsICQ/ID4+OCk7CiAJfQpAQCAtNTEyLDYgKzUxOCw3OSBAQAogc3ViIGh0bWxfcGF0aCB7IGNvbW1hbmRfb25lbGluZSgnLS1odG1sLXBhdGgnKSB9CiAKIAorPWl0ZW0gZ2V0X3R6X29mZnNldCAoIFRJTUUgKQorCitSZXR1cm4gdGhlIHRpbWUgem9uZSBvZmZzZXQgZnJvbSBHTVQgaW4gdGhlIGZvcm0gKy8tSEhNTSB3aGVyZSBISCBpcwordGhlIG51bWJlciBvZiBob3VycyBmcm9tIEdNVCBhbmQgTU0gaXMgdGhlIG51bWJlciBvZiBtaW51dGVzLiAgVGhpcyBpcwordGhlIGVxdWl2YWxlbnQgb2Ygd2hhdCBzdHJmdGltZSgiJXoiLCAuLi4pIHdvdWxkIHByb3ZpZGUgb24gYSBHTlUKK3BsYXRmb3JtLgorCitJZiBUSU1FIGlzIG5vdCBzdXBwbGllZCwgdGhlIGN1cnJlbnQgbG9jYWwgdGltZSBpcyB1c2VkLgorCis9Y3V0CisKK3N1YiBnZXRfdHpfb2Zmc2V0IHsKKwkjIHNvbWUgc3lzdG1lcyBkb24ndCBoYW5kbGUgb3IgbWlzaGFuZGxlICV6LCBzbyBiZSBjcmVhdGl2ZS4KKwlteSAkdCA9IHNoaWZ0IHx8IHRpbWU7CisJbXkgJGdtID0gdGltZWdtKGxvY2FsdGltZSgkdCkpOworCW15ICRzaWduID0gcXcoICsgKyAtIClbICRnbSA8PT4gJHQgXTsKKwlyZXR1cm4gc3ByaW50ZigiJXMlMDJkJTAyZCIsICRzaWduLCAoZ210aW1lKGFicygkdCAtICRnbSkpKVsyLDFdKTsKK30KKworCis9aXRlbSBwcm9tcHQgKCBQUk9NUFQgLCBJU1BBU1NXT1JEICApCisKK1F1ZXJ5IHVzZXIgQzxQUk9NUFQ+IGFuZCByZXR1cm4gYW5zd2VyIGZyb20gdXNlci4KKworSG9ub3VycyBHSVRfQVNLUEFTUyBhbmQgU1NIX0FTS1BBU1MgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciBxdWVyeWluZwordGhlIHVzZXIuIElmIG5vICpfQVNLUEFTUyB2YXJpYWJsZSBpcyBzZXQgb3IgYW4gZXJyb3Igb2Njb3VyZWQsCit0aGUgdGVybWluYWwgaXMgdHJpZWQgYXMgYSBmYWxsYmFjay4KK0lmIEM8SVNQQVNTV09SRD4gaXMgc2V0IGFuZCB0cnVlLCB0aGUgdGVybWluYWwgZGlzYWJsZXMgZWNoby4KKworPWN1dAorCitzdWIgcHJvbXB0IHsKKwlteSAoJHByb21wdCwgJGlzUGFzc3dvcmQpID0gQF87CisJbXkgJHJldDsKKwlpZiAoZXhpc3RzICRFTlZ7J0dJVF9BU0tQQVNTJ30pIHsKKwkJJHJldCA9IF9wcm9tcHQoJEVOVnsnR0lUX0FTS1BBU1MnfSwgJHByb21wdCk7CisJfQorCWlmICghZGVmaW5lZCAkcmV0ICYmIGV4aXN0cyAkRU5WeydTU0hfQVNLUEFTUyd9KSB7CisJCSRyZXQgPSBfcHJvbXB0KCRFTlZ7J1NTSF9BU0tQQVNTJ30sICRwcm9tcHQpOworCX0KKwlpZiAoIWRlZmluZWQgJHJldCkgeworCQlwcmludCBTVERFUlIgJHByb21wdDsKKwkJU1RERVJSLT5mbHVzaDsKKwkJaWYgKGRlZmluZWQgJGlzUGFzc3dvcmQgJiYgJGlzUGFzc3dvcmQpIHsKKwkJCXJlcXVpcmUgVGVybTo6UmVhZEtleTsKKwkJCVRlcm06OlJlYWRLZXk6OlJlYWRNb2RlKCdub2VjaG8nKTsKKwkJCSRyZXQgPSAnJzsKKwkJCXdoaWxlIChkZWZpbmVkKG15ICRrZXkgPSBUZXJtOjpSZWFkS2V5OjpSZWFkS2V5KDApKSkgeworCQkJCWxhc3QgaWYgJGtleSA9fiAvW1wwMTJcMDE1XS87ICMgXG5ccgorCQkJCSRyZXQgLj0gJGtleTsKKwkJCX0KKwkJCVRlcm06OlJlYWRLZXk6OlJlYWRNb2RlKCdyZXN0b3JlJyk7CisJCQlwcmludCBTVERFUlIgIlxuIjsKKwkJCVNUREVSUi0+Zmx1c2g7CisJCX0gZWxzZSB7CisJCQljaG9tcCgkcmV0ID0gPFNURElOPik7CisJCX0KKwl9CisJcmV0dXJuICRyZXQ7Cit9CisKK3N1YiBfcHJvbXB0IHsKKwlteSAoJGFza3Bhc3MsICRwcm9tcHQpID0gQF87CisJcmV0dXJuIHVubGVzcyBsZW5ndGggJGFza3Bhc3M7CisJJHByb21wdCA9fiBzL1xuLyAvZzsKKwlteSAkcmV0OworCW9wZW4gbXkgJGZoLCAiLXwiLCAkYXNrcGFzcywgJHByb21wdCBvciByZXR1cm47CisJJHJldCA9IDwkZmg+OworCSRyZXQgPX4gcy9bXDAxNVwwMTJdLy9nOyAjIHN0cmlwIFxyXG4sIGNob21wIGRvZXMgbm90IHdvcmsgb24gYWxsIHN5c3RlbXMgKGkuZS4gd2luZG93cykgYXMgZXhwZWN0ZWQKKwljbG9zZSAoJGZoKTsKKwlyZXR1cm4gJHJldDsKK30KKwogPWl0ZW0gcmVwb19wYXRoICgpCiAKIFJldHVybiBwYXRoIHRvIHRoZSBnaXQgcmVwb3NpdG9yeS4gTXVzdCBiZSBjYWxsZWQgb24gYSByZXBvc2l0b3J5IGluc3RhbmNlLgpAQCAtODkwLDIwICs5NjksMjIgQEAKIAlteSAkc2l6ZSA9ICQxOwogCiAJbXkgJGJsb2I7Ci0JbXkgJGJ5dGVzUmVhZCA9IDA7CisJbXkgJGJ5dGVzTGVmdCA9ICRzaXplOwogCiAJd2hpbGUgKDEpIHsKLQkJbXkgJGJ5dGVzTGVmdCA9ICRzaXplIC0gJGJ5dGVzUmVhZDsKIAkJbGFzdCB1bmxlc3MgJGJ5dGVzTGVmdDsKIAogCQlteSAkYnl0ZXNUb1JlYWQgPSAkYnl0ZXNMZWZ0IDwgMTAyNCA/ICRieXRlc0xlZnQgOiAxMDI0OwotCQlteSAkcmVhZCA9IHJlYWQoJGluLCAkYmxvYiwgJGJ5dGVzVG9SZWFkLCAkYnl0ZXNSZWFkKTsKKwkJbXkgJHJlYWQgPSByZWFkKCRpbiwgJGJsb2IsICRieXRlc1RvUmVhZCk7CiAJCXVubGVzcyAoZGVmaW5lZCgkcmVhZCkpIHsKIAkJCSRzZWxmLT5fY2xvc2VfY2F0X2Jsb2IoKTsKIAkJCXRocm93IEVycm9yOjpTaW1wbGUoImluIHBpcGUgd2VudCBiYWQiKTsKIAkJfQotCi0JCSRieXRlc1JlYWQgKz0gJHJlYWQ7CisJCXVubGVzcyAocHJpbnQgJGZoICRibG9iKSB7CisJCQkkc2VsZi0+X2Nsb3NlX2NhdF9ibG9iKCk7CisJCQl0aHJvdyBFcnJvcjo6U2ltcGxlKCJjb3VsZG4ndCB3cml0ZSB0byBwYXNzZWQgaW4gZmlsZWhhbmRsZSIpOworCQl9CisJCSRieXRlc0xlZnQgLT0gJHJlYWQ7CiAJfQogCiAJIyBTa2lwIHBhc3QgdGhlIHRyYWlsaW5nIG5ld2xpbmUuCkBAIC05MTgsMTEgKzk5OSw2IEBACiAJCXRocm93IEVycm9yOjpTaW1wbGUoImRpZG4ndCBmaW5kIG5ld2xpbmUgYWZ0ZXIgYmxvYiIpOwogCX0KIAotCXVubGVzcyAocHJpbnQgJGZoICRibG9iKSB7Ci0JCSRzZWxmLT5fY2xvc2VfY2F0X2Jsb2IoKTsKLQkJdGhyb3cgRXJyb3I6OlNpbXBsZSgiY291bGRuJ3Qgd3JpdGUgdG8gcGFzc2VkIGluIGZpbGVoYW5kbGUiKTsKLQl9Ci0KIAlyZXR1cm4gJHNpemU7CiB9CiAKQEAgLTk0OCwxMyArMTAyNCwxNjMgQEAKIH0KIAogCis9aXRlbSBjcmVkZW50aWFsX3JlYWQoIEZJTEVIQU5ETEUgKQorCitSZWFkcyBjcmVkZW50aWFsIGtleS12YWx1ZSBwYWlycyBmcm9tIEM8RklMRUhBTkRMRT4uICBSZWFkaW5nIHN0b3BzIGF0IEVPRiBvcgord2hlbiBhbiBlbXB0eSBsaW5lIGlzIGVuY291bnRlcmVkLiAgRWFjaCBsaW5lIG11c3QgYmUgb2YgdGhlIGZvcm0gQzxrZXk9dmFsdWU+Cit3aXRoIGEgbm9uLWVtcHR5IGtleS4gIEZ1bmN0aW9uIHJldHVybnMgaGFzaCB3aXRoIGFsbCByZWFkIHZhbHVlcy4gIEFueSB3aGl0ZQorc3BhY2UgKG90aGVyIHRoYW4gbmV3LWxpbmUgY2hhcmFjdGVyKSBpcyBwcmVzZXJ2ZWQuCisKKz1jdXQKKworc3ViIGNyZWRlbnRpYWxfcmVhZCB7CisJbXkgKCRzZWxmLCAkcmVhZGVyKSA9IF9tYXliZV9zZWxmKEBfKTsKKwlteSAlY3JlZGVudGlhbDsKKwl3aGlsZSAoPCRyZWFkZXI+KSB7CisJCWNob21wOworCQlpZiAoJF8gZXEgJycpIHsKKwkJCWxhc3Q7CisJCX0gZWxzaWYgKCEvXihbXj1dKyk9KC4qKSQvKSB7CisJCQl0aHJvdyBFcnJvcjo6U2ltcGxlKCJ1bmFibGUgdG8gcGFyc2UgZ2l0IGNyZWRlbnRpYWwgZGF0YTpcbiRfIik7CisJCX0KKwkJJGNyZWRlbnRpYWx7JDF9ID0gJDI7CisJfQorCXJldHVybiAlY3JlZGVudGlhbDsKK30KKworPWl0ZW0gY3JlZGVudGlhbF93cml0ZSggRklMRUhBTkRMRSwgQ1JFREVOVElBTF9IQVNIUkVGICkKKworV3JpdGVzIGNyZWRlbnRpYWwga2V5LXZhbHVlIHBhaXJzIGZyb20gaGFzaCByZWZlcmVuY2VkIGJ5CitDPENSRURFTlRJQUxfSEFTSFJFRj4gdG8gQzxGSUxFSEFORExFPi4gIEtleXMgYW5kIHZhbHVlcyBjYW5ub3QgY29udGFpbgorbmV3LWxpbmVzIG9yIE5VTCBieXRlcyBjaGFyYWN0ZXJzLCBhbmQga2V5IGNhbm5vdCBjb250YWluIGVxdWFsIHNpZ25zIG5vciBiZQorZW1wdHkgKGlmIHRoZXkgZG8gRXJyb3I6OlNpbXBsZSBpcyB0aHJvd24pLiAgQW55IHdoaXRlIHNwYWNlIGlzIHByZXNlcnZlZC4gIElmCit2YWx1ZSBmb3IgYSBrZXkgaXMgQzx1bmRlZj4sIGl0IHdpbGwgYmUgc2tpcHBlZC4KKworSWYgQzwndXJsJz4ga2V5IGV4aXN0cyBpdCB3aWxsIGJlIHdyaXR0ZW4gZmlyc3QuICAoQWxsIHRoZSBvdGhlciBrZXktdmFsdWUKK3BhaXJzIGFyZSB3cml0dGVuIGluIHNvcnRlZCBvcmRlciBidXQgeW91IHNob3VsZCBub3QgZGVwZW5kIG9uIHRoYXQpLiAgT25jZQorYWxsIGxpbmVzIGFyZSB3cml0dGVuLCBhbiBlbXB0eSBsaW5lIGlzIHByaW50ZWQuCisKKz1jdXQKKworc3ViIGNyZWRlbnRpYWxfd3JpdGUgeworCW15ICgkc2VsZiwgJHdyaXRlciwgJGNyZWRlbnRpYWwpID0gX21heWJlX3NlbGYoQF8pOworCW15ICgka2V5LCAkdmFsdWUpOworCisJIyBDaGVjayBpZiAkY3JlZGVudGlhbCBpcyB2YWxpZCBwcmlvciB0byB3cml0aW5nIGFueXRoaW5nCisJd2hpbGUgKCgka2V5LCAkdmFsdWUpID0gZWFjaCAlJGNyZWRlbnRpYWwpIHsKKwkJaWYgKCFkZWZpbmVkICRrZXkgfHwgIWxlbmd0aCAka2V5KSB7CisJCQl0aHJvdyBFcnJvcjo6U2ltcGxlKCJjcmVkZW50aWFsIGtleSBlbXB0eSBvciB1bmRlZmluZWQiKTsKKwkJfSBlbHNpZiAoJGtleSA9fiAvWz1cblwwXS8pIHsKKwkJCXRocm93IEVycm9yOjpTaW1wbGUoImNyZWRlbnRpYWwga2V5IGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyczogJGtleSIpOworCQl9IGVsc2lmIChkZWZpbmVkICR2YWx1ZSAmJiAkdmFsdWUgPX4gL1tcblwwXS8pIHsKKwkJCXRocm93IEVycm9yOjpTaW1wbGUoImNyZWRlbnRpYWwgdmFsdWUgZm9yIGtleT0ka2V5IGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyczogJHZhbHVlIik7CisJCX0KKwl9CisKKwlmb3IgJGtleSAoc29ydCB7CisJCSMgdXJsIG92ZXJ3cml0ZXMgb3RoZXIgZmllbGRzLCBzbyBpdCBtdXN0IGNvbWUgZmlyc3QKKwkJcmV0dXJuIC0xIGlmICRhIGVxICd1cmwnOworCQlyZXR1cm4gIDEgaWYgJGIgZXEgJ3VybCc7CisJCXJldHVybiAkYSBjbXAgJGI7CisJfSBrZXlzICUkY3JlZGVudGlhbCkgeworCQlpZiAoZGVmaW5lZCAkY3JlZGVudGlhbC0+eyRrZXl9KSB7CisJCQlwcmludCAkd3JpdGVyICRrZXksICc9JywgJGNyZWRlbnRpYWwtPnska2V5fSwgIlxuIjsKKwkJfQorCX0KKwlwcmludCAkd3JpdGVyICJcbiI7Cit9CisKK3N1YiBfY3JlZGVudGlhbF9ydW4geworCW15ICgkc2VsZiwgJGNyZWRlbnRpYWwsICRvcCkgPSBfbWF5YmVfc2VsZihAXyk7CisJbXkgKCRwaWQsICRyZWFkZXIsICR3cml0ZXIsICRjdHgpID0gY29tbWFuZF9iaWRpX3BpcGUoJ2NyZWRlbnRpYWwnLCAkb3ApOworCisJY3JlZGVudGlhbF93cml0ZSAkd3JpdGVyLCAkY3JlZGVudGlhbDsKKwljbG9zZSAkd3JpdGVyOworCisJaWYgKCRvcCBlcSAiZmlsbCIpIHsKKwkJJSRjcmVkZW50aWFsID0gY3JlZGVudGlhbF9yZWFkICRyZWFkZXI7CisJfQorCWlmICg8JHJlYWRlcj4pIHsKKwkJdGhyb3cgRXJyb3I6OlNpbXBsZSgidW5leHBlY3RlZCBvdXRwdXQgZnJvbSBnaXQgY3JlZGVudGlhbCAkb3AgcmVzcG9uc2U6XG4kX1xuIik7CisJfQorCisJY29tbWFuZF9jbG9zZV9iaWRpX3BpcGUoJHBpZCwgJHJlYWRlciwgdW5kZWYsICRjdHgpOworfQorCis9aXRlbSBjcmVkZW50aWFsKCBDUkVERU5USUFMX0hBU0hSRUYgWywgT1BFUkFUSU9OIF0gKQorCis9aXRlbSBjcmVkZW50aWFsKCBDUkVERU5USUFMX0hBU0hSRUYsIENPREUgKQorCitFeGVjdXRlcyBDPGdpdCBjcmVkZW50aWFsPiBmb3IgYSBnaXZlbiBzZXQgb2YgY3JlZGVudGlhbHMgYW5kIHNwZWNpZmllZAorb3BlcmF0aW9uLiAgSW4gYm90aCBmb3JtcyBDPENSRURFTlRJQUxfSEFTSFJFRj4gbmVlZHMgdG8gYmUgYSByZWZlcmVuY2UgdG8KK2EgaGFzaCB3aGljaCBzdG9yZXMgY3JlZGVudGlhbHMuICBVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMgdGhlIGhhc2ggY2FuCitjaGFuZ2UuCisKK0luIHRoZSBmaXJzdCBmb3JtLCBDPE9QRVJBVElPTj4gY2FuIGJlIEM8J2ZpbGwnPiwgQzwnYXBwcm92ZSc+IG9yIEM8J3JlamVjdCc+LAorYW5kIGZ1bmN0aW9uIHdpbGwgZXhlY3V0ZSBjb3JyZXNwb25kaW5nIEM8Z2l0IGNyZWRlbnRpYWw+IHN1Yi1jb21tYW5kLiAgSWYKK2l0J3Mgb21pdHRlZCBDPCdmaWxsJz4gaXMgYXNzdW1lZC4gIEluIGNhc2Ugb2YgQzwnZmlsbCc+IHRoZSB2YWx1ZXMgc3RvcmVkIGluCitDPENSRURFTlRJQUxfSEFTSFJFRj4gd2lsbCBiZSBjaGFuZ2VkIHRvIHRoZSBvbmVzIHJldHVybmVkIGJ5IHRoZSBDPGdpdAorY3JlZGVudGlhbCBmaWxsPiBjb21tYW5kLiAgVGhlIHVzdWFsIHVzYWdlIHdvdWxkIGxvb2sgc29tZXRoaW5nIGxpa2U6CisKKwlteSAlY3JlZCA9ICgKKwkJJ3Byb3RvY29sJyA9PiAnaHR0cHMnLAorCQknaG9zdCcgPT4gJ2V4YW1wbGUuY29tJywKKwkJJ3VzZXJuYW1lJyA9PiAnYm9iJworCSk7CisJR2l0OjpjcmVkZW50aWFsIFwlY3JlZDsKKwlpZiAodHJ5X3RvX2F1dGhlbnRpY2F0ZSgkY3JlZHsndXNlcm5hbWUnfSwgJGNyZWR7J3Bhc3N3b3JkJ30pKSB7CisJCUdpdDo6Y3JlZGVudGlhbCBcJWNyZWQsICdhcHByb3ZlJzsKKwkJLi4uIGRvIG1vcmUgc3R1ZmYgLi4uCisJfSBlbHNlIHsKKwkJR2l0OjpjcmVkZW50aWFsIFwlY3JlZCwgJ3JlamVjdCc7CisJfQorCitJbiB0aGUgc2Vjb25kIGZvcm0sIEM8Q09ERT4gbmVlZHMgdG8gYmUgYSByZWZlcmVuY2UgdG8gYSBzdWJyb3V0aW5lLiAgVGhlCitmdW5jdGlvbiB3aWxsIGV4ZWN1dGUgQzxnaXQgY3JlZGVudGlhbCBmaWxsPiB0byBmaWxsIHRoZSBwcm92aWRlZCBjcmVkZW50aWFsCitoYXNoLCB0aGVuIGNhbGwgQzxDT0RFPiB3aXRoIEM8Q1JFREVOVElBTF9IQVNIUkVGPiBhcyB0aGUgc29sZSBhcmd1bWVudC4gIElmCitDPENPREU+J3MgcmV0dXJuIHZhbHVlIGlzIGRlZmluZWQsIHRoZSBmdW5jdGlvbiB3aWxsIGV4ZWN1dGUgQzxnaXQgY3JlZGVudGlhbAorYXBwcm92ZT4gKGlmIHJldHVybiB2YWx1ZSB5aWVsZHMgdHJ1ZSkgb3IgQzxnaXQgY3JlZGVudGlhbCByZWplY3Q+IChpZiByZXR1cm4KK3ZhbHVlIGlzIGZhbHNlKS4gIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgdW5kZWYsIG5vdGhpbmcgYXQgYWxsIGlzIGV4ZWN1dGVkOwordGhpcyBpcyB1c2VmdWwsIGZvciBleGFtcGxlLCBpZiB0aGUgY3JlZGVudGlhbCBjb3VsZCBuZWl0aGVyIGJlIHZlcmlmaWVkIG5vcgorcmVqZWN0ZWQgZHVlIHRvIGFuIHVucmVsYXRlZCBuZXR3b3JrIGVycm9yLiAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgc2FtZSBhcword2hhdCBDPENPREU+IHJldHVybnMuICBXaXRoIHRoaXMgZm9ybSwgdGhlIHVzYWdlIG1pZ2h0IGxvb2sgYXMgZm9sbG93czoKKworCWlmIChHaXQ6OmNyZWRlbnRpYWwgeworCQkncHJvdG9jb2wnID0+ICdodHRwcycsCisJCSdob3N0JyA9PiAnZXhhbXBsZS5jb20nLAorCQkndXNlcm5hbWUnID0+ICdib2InCisJfSwgc3ViIHsKKwkJbXkgJGNyZWQgPSBzaGlmdDsKKwkJcmV0dXJuICEhdHJ5X3RvX2F1dGhlbnRpY2F0ZSgkY3JlZC0+eyd1c2VybmFtZSd9LAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjcmVkLT57J3Bhc3N3b3JkJ30pOworCX0pIHsKKwkJLi4uIGRvIG1vcmUgc3R1ZmYgLi4uCisJfQorCis9Y3V0CisKK3N1YiBjcmVkZW50aWFsIHsKKwlteSAoJHNlbGYsICRjcmVkZW50aWFsLCAkb3Bfb3JfY29kZSkgPSAoX21heWJlX3NlbGYoQF8pLCAnZmlsbCcpOworCisJaWYgKCdDT0RFJyBlcSByZWYgJG9wX29yX2NvZGUpIHsKKwkJX2NyZWRlbnRpYWxfcnVuICRjcmVkZW50aWFsLCAnZmlsbCc7CisJCW15ICRyZXQgPSAkb3Bfb3JfY29kZS0+KCRjcmVkZW50aWFsKTsKKwkJaWYgKGRlZmluZWQgJHJldCkgeworCQkJX2NyZWRlbnRpYWxfcnVuICRjcmVkZW50aWFsLCAkcmV0ID8gJ2FwcHJvdmUnIDogJ3JlamVjdCc7CisJCX0KKwkJcmV0dXJuICRyZXQ7CisJfSBlbHNlIHsKKwkJX2NyZWRlbnRpYWxfcnVuICRjcmVkZW50aWFsLCAkb3Bfb3JfY29kZTsKKwl9Cit9CisKIHsgIyAlVEVNUF8qIExleGljYWwgQ29udGV4dAogCiBteSAoJVRFTVBfRklMRU1BUCwgJVRFTVBfRklMRVMpOwogCiA9aXRlbSB0ZW1wX2FjcXVpcmUgKCBOQU1FICkKIAotQXR0ZW1wdHMgdG8gcmV0cmVpdmUgdGhlIHRlbXBvcmFyeSBmaWxlIG1hcHBlZCB0byB0aGUgc3RyaW5nIEM8TkFNRT4uIElmIGFuCitBdHRlbXB0cyB0byByZXRyaWV2ZSB0aGUgdGVtcG9yYXJ5IGZpbGUgbWFwcGVkIHRvIHRoZSBzdHJpbmcgQzxOQU1FPi4gSWYgYW4KIGFzc29jaWF0ZWQgdGVtcCBmaWxlIGhhcyBub3QgYmVlbiBjcmVhdGVkIHRoaXMgc2Vzc2lvbiBvciB3YXMgY2xvc2VkLCBpdCBpcwogY3JlYXRlZCwgY2FjaGVkLCBhbmQgc2V0IGZvciBhdXRvZmx1c2ggYW5kIGJpbm1vZGUuCiAKQEAgLTEwMzksNyArMTI2NSw3IEBACiAJCQkkdG1wZGlyID0gJHNlbGYtPnJlcG9fcGF0aCgpOwogCQl9CiAKLQkJKCQkdGVtcF9mZCwgJGZuYW1lKSA9IEZpbGU6OlRlbXAtPnRlbXBmaWxlKAorCQkoJCR0ZW1wX2ZkLCAkZm5hbWUpID0gRmlsZTo6VGVtcDo6dGVtcGZpbGUoCiAJCQknR2l0X1hYWFhYWCcsIFVOTElOSyA9PiAxLCBESVIgPT4gJHRtcGRpciwKIAkJCSkgb3IgdGhyb3cgRXJyb3I6OlNpbXBsZSgiY291bGRuJ3Qgb3BlbiBuZXcgdGVtcCBmaWxlIik7CiAKQEAgLTEyNjMsMTIgKzE0ODksMTIgQEAKIAkJaWYgKG5vdCBkZWZpbmVkICRwaWQpIHsKIAkJCXRocm93IEVycm9yOjpTaW1wbGUoIm9wZW4gZmFpbGVkOiAkISIpOwogCQl9IGVsc2lmICgkcGlkID09IDApIHsKLQkJCWlmIChkZWZpbmVkICRvcHRze1NUREVSUn0pIHsKLQkJCQljbG9zZSBTVERFUlI7Ci0JCQl9CiAJCQlpZiAoJG9wdHN7U1RERVJSfSkgewogCQkJCW9wZW4gKFNUREVSUiwgJz4mJywgJG9wdHN7U1RERVJSfSkKIAkJCQkJb3IgZGllICJkdXAgZmFpbGVkOiAkISI7CisJCQl9IGVsc2lmIChkZWZpbmVkICRvcHRze1NUREVSUn0pIHsKKwkJCQlvcGVuIChTVERFUlIsICc+JywgJy9kZXYvbnVsbCcpCisJCQkJCW9yIGRpZSAib3BlbmluZyAvZGV2L251bGwgZmFpbGVkOiAkISI7CiAJCQl9CiAJCQlfY21kX2V4ZWMoJHNlbGYsICRjbWQsIEBhcmdzKTsKIAkJfQpAQCAtMTMwMyw5ICsxNTI5LDExIEBACiAKICMgQ2xvc2UgcGlwZSB0byBhIHN1YnByb2Nlc3MuCiBzdWIgX2NtZF9jbG9zZSB7Ci0JbXkgKCRmaCwgJGN0eCkgPSBAXzsKLQlpZiAobm90IGNsb3NlICRmaCkgewotCQlpZiAoJCEpIHsKKwlteSAkY3R4ID0gc2hpZnQgQF87CisJZm9yZWFjaCBteSAkZmggKEBfKSB7CisJCWlmIChjbG9zZSAkZmgpIHsKKwkJCSMgbm9wCisJCX0gZWxzaWYgKCQhKSB7CiAJCQkjIEl0J3MganVzdCBjbG9zZSwgbm8gcG9pbnQgaW4gZmF0YWxpdGllcwogCQkJY2FycCAiZXJyb3IgY2xvc2luZyBwaXBlOiAkISI7CiAJCX0gZWxzaWYgKCQ/ID4+IDgpIHsKZGlmZiAtLWdpdCBhL3BlcmwvR2l0L0kxOE4ucG0gYi9wZXJsL0dpdC9JMThOLnBtCmluZGV4IDQwZGQ4OTcuLmY4ODlmZDYgMTAwNjQ0Ci0tLSBhL3BlcmwvR2l0L0kxOE4ucG0KKysrIGIvcGVybC9HaXQvSTE4Ti5wbQpAQCAtNjgsNyArNjgsNyBAQAogCiAJcHJpbnQgX18oIldlbGNvbWUgdG8gR2l0IVxuIik7CiAKLQlwcmludGYgX18oIlRoZSBmb2xsb3dpbmcgZXJyb3Igb2NjdXJlZDogJXNcbiIpLCAkZXJyb3I7CisJcHJpbnRmIF9fKCJUaGUgZm9sbG93aW5nIGVycm9yIG9jY3VycmVkOiAlc1xuIiksICRlcnJvcjsKIAogPWhlYWQxIERFU0NSSVBUSU9OCiAKZGlmZiAtLWdpdCBhL3BlcmwvR2l0L0luZGV4SW5mby5wbSBiL3BlcmwvR2l0L0luZGV4SW5mby5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDMxMDhjCi0tLSAvZGV2L251bGwKKysrIGIvcGVybC9HaXQvSW5kZXhJbmZvLnBtCkBAIC0wLDAgKzEsMzMgQEAKK3BhY2thZ2UgR2l0OjpJbmRleEluZm87Cit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIEdpdCBxdy9jb21tYW5kX2lucHV0X3BpcGUgY29tbWFuZF9jbG9zZV9waXBlLzsKKworc3ViIG5ldyB7CisJbXkgKCRjbGFzcykgPSBAXzsKKwlteSAoJGd1aSwgJGN0eCkgPSBjb21tYW5kX2lucHV0X3BpcGUocXcvdXBkYXRlLWluZGV4IC16IC0taW5kZXgtaW5mby8pOworCWJsZXNzIHsgZ3VpID0+ICRndWksIGN0eCA9PiAkY3R4LCBuciA9PiAwfSwgJGNsYXNzOworfQorCitzdWIgcmVtb3ZlIHsKKwlteSAoJHNlbGYsICRwYXRoKSA9IEBfOworCWlmIChwcmludCB7ICRzZWxmLT57Z3VpfSB9ICcwICcsIDAgeCA0MCwgIlx0IiwgJHBhdGgsICJcMCIpIHsKKwkJcmV0dXJuICsrJHNlbGYtPntucn07CisJfQorCXVuZGVmOworfQorCitzdWIgdXBkYXRlIHsKKwlteSAoJHNlbGYsICRtb2RlLCAkaGFzaCwgJHBhdGgpID0gQF87CisJaWYgKHByaW50IHsgJHNlbGYtPntndWl9IH0gJG1vZGUsICcgJywgJGhhc2gsICJcdCIsICRwYXRoLCAiXDAiKSB7CisJCXJldHVybiArKyRzZWxmLT57bnJ9OworCX0KKwl1bmRlZjsKK30KKworc3ViIERFU1RST1kgeworCW15ICgkc2VsZikgPSBAXzsKKwljb21tYW5kX2Nsb3NlX3BpcGUoJHNlbGYtPntndWl9LCAkc2VsZi0+e2N0eH0pOworfQorCisxOwpkaWZmIC0tZ2l0IGEvcGVybC9HaXQvU1ZOLnBtIGIvcGVybC9HaXQvU1ZOLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNzNlZTgKLS0tIC9kZXYvbnVsbAorKysgYi9wZXJsL0dpdC9TVk4ucG0KQEAgLTAsMCArMSwyMzkxIEBACitwYWNrYWdlIEdpdDo6U1ZOOwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBGY250bCBxdy86REVGQVVMVCA6c2Vlay87Cit1c2UgY29uc3RhbnQgcmV2X21hcF9mbXQgPT4gJ05INDAnOwordXNlIHZhcnMgcXcvJF9ub19tZXRhZGF0YQorICAgICAgICAgICAgJF9yZXBhY2sgJF9yZXBhY2tfZmxhZ3MgJF91c2Vfc3ZtX3Byb3BzICRfaGVhZAorICAgICAgICAgICAgJF91c2Vfc3Zuc3luY19wcm9wcyAkbm9fcmV1c2VfZXhpc3RpbmcKKwkgICAgJF91c2VfbG9nX2F1dGhvciAkX2FkZF9hdXRob3JfZnJvbSAkX2xvY2FsdGltZS87Cit1c2UgQ2FycCBxdy9jcm9hay87Cit1c2UgRmlsZTo6UGF0aCBxdy9ta3BhdGgvOwordXNlIEZpbGU6OkNvcHkgcXcvY29weS87Cit1c2UgSVBDOjpPcGVuMzsKK3VzZSBNZW1vaXplOyAgIyBjb3JlIHNpbmNlIDUuOC4wLCBKdWwgMjAwMgordXNlIE1lbW9pemU6OlN0b3JhYmxlOwordXNlIFBPU0lYIHF3KDpzaWduYWxfaCk7CisKK3VzZSBHaXQgcXcoCisgICAgY29tbWFuZAorICAgIGNvbW1hbmRfb25lbGluZQorICAgIGNvbW1hbmRfbm9pc3kKKyAgICBjb21tYW5kX291dHB1dF9waXBlCisgICAgY29tbWFuZF9jbG9zZV9waXBlCisgICAgZ2V0X3R6X29mZnNldAorKTsKK3VzZSBHaXQ6OlNWTjo6VXRpbHMgcXcoCisJZmF0YWwKKwljYW5fY29tcHJlc3MKKwlqb2luX3BhdGhzCisJY2Fub25pY2FsaXplX3BhdGgKKwljYW5vbmljYWxpemVfdXJsCisJYWRkX3BhdGhfdG9fdXJsCispOworCitteSAkY2FuX3VzZV95YW1sOworQkVHSU4geworCSRjYW5fdXNlX3lhbWwgPSBldmFsIHsgcmVxdWlyZSBHaXQ6OlNWTjo6TWVtb2l6ZTo6WUFNTDsgMX07Cit9CisKK291ciAkX2ZvbGxvd19wYXJlbnQgID0gMTsKK291ciAkX21pbmltaXplX3VybCAgID0gJ3Vuc2V0JzsKK291ciAkZGVmYXVsdF9yZXBvX2lkID0gJ3N2bic7CitvdXIgJGRlZmF1bHRfcmVmX2lkICA9ICRFTlZ7R0lUX1NWTl9JRH0gfHwgJ2dpdC1zdm4nOworCitteSAoJF9nY19uciwgJF9nY19wZXJpb2QpOworCisjIHByb3BlcnRpZXMgdGhhdCB3ZSBkbyBub3QgbG9nOgorbXkgJVNLSVBfUFJPUDsKK0JFR0lOIHsKKwklU0tJUF9QUk9QID0gbWFwIHsgJF8gPT4gMSB9IHF3L3N2bjp3YzpyYV9kYXY6dmVyc2lvbi11cmwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2bjpzcGVjaWFsIHN2bjpleGVjdXRhYmxlCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdm46ZW50cnk6Y29tbWl0dGVkLXJldgorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZuOmVudHJ5Omxhc3QtYXV0aG9yCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdm46ZW50cnk6dXVpZAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZuOmVudHJ5OmNvbW1pdHRlZC1kYXRlLzsKKworCSMgc29tZSBvcHRpb25zIGFyZSByZWFkIGdsb2JhbGx5LCBidXQgY2FuIGJlIG92ZXJyaWRkZW4gbG9jYWxseQorCSMgcGVyIFtzdm4tcmVtb3RlICIuLi4iXSBzZWN0aW9uLiAgQ29tbWFuZC1saW5lIG9wdGlvbnMgd2lsbCAqTk9UKgorCSMgb3ZlcnJpZGUgb3B0aW9ucyBzZXQgaW4gYW4gW3N2bi1yZW1vdGUgIi4uLiJdIHNlY3Rpb24KKwlubyBzdHJpY3QgJ3JlZnMnOworCWZvciBteSAkb3B0aW9uIChxdy9mb2xsb3dfcGFyZW50IG5vX21ldGFkYXRhIHVzZV9zdm1fcHJvcHMKKwkJCSAgIHVzZV9zdm5zeW5jX3Byb3BzLykgeworCQlteSAka2V5ID0gJG9wdGlvbjsKKwkJJGtleSA9fiB0ci9fLy9kOworCQlteSAkcHJvcCA9ICItJG9wdGlvbiI7CisJCSokb3B0aW9uID0gc3ViIHsKKwkJCW15ICgkc2VsZikgPSBAXzsKKwkJCXJldHVybiAkc2VsZi0+eyRwcm9wfSBpZiBleGlzdHMgJHNlbGYtPnskcHJvcH07CisJCQlteSAkayA9ICJzdm4tcmVtb3RlLiRzZWxmLT57cmVwb19pZH0uJGtleSI7CisJCQlldmFsIHsgY29tbWFuZF9vbmVsaW5lKHF3L2NvbmZpZyAtLWdldC8sICRrKSB9OworCQkJaWYgKCRAKSB7CisJCQkJJHNlbGYtPnskcHJvcH0gPSAkeyJHaXQ6OlNWTjo6XyRvcHRpb24ifTsKKwkJCX0gZWxzZSB7CisJCQkJbXkgJHYgPSBjb21tYW5kX29uZWxpbmUocXcvY29uZmlnIC0tYm9vbC8sJGspOworCQkJCSRzZWxmLT57JHByb3B9ID0gJHYgZXEgJ2ZhbHNlJyA/IDAgOiAxOworCQkJfQorCQkJcmV0dXJuICRzZWxmLT57JHByb3B9OworCQl9CisJfQorfQorCisKK215ICglTE9DS0ZJTEVTLCAlSU5ERVhfRklMRVMpOworRU5EIHsKKwl1bmxpbmsga2V5cyAlTE9DS0ZJTEVTIGlmICVMT0NLRklMRVM7CisJdW5saW5rIGtleXMgJUlOREVYX0ZJTEVTIGlmICVJTkRFWF9GSUxFUzsKK30KKworc3ViIHJlc29sdmVfbG9jYWxfZ2xvYnMgeworCW15ICgkdXJsLCAkZmV0Y2gsICRnbG9iX3NwZWMpID0gQF87CisJcmV0dXJuIHVubGVzcyBkZWZpbmVkICRnbG9iX3NwZWM7CisJbXkgJHJlZiA9ICRnbG9iX3NwZWMtPntyZWZ9OworCW15ICRwYXRoID0gJGdsb2Jfc3BlYy0+e3BhdGh9OworCWZvcmVhY2ggKGNvbW1hbmQocXcjZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSUocmVmbmFtZSkgcmVmcy8jKSkgeworCQluZXh0IHVubGVzcyBtI14kcmVmLT57cmVnZXh9JCM7CisJCW15ICRwID0gJDE7CisJCW15ICRwYXRobmFtZSA9IGRlc2FuaXRpemVfcmVmbmFtZSgkcGF0aC0+ZnVsbF9wYXRoKCRwKSk7CisJCW15ICRyZWZuYW1lID0gZGVzYW5pdGl6ZV9yZWZuYW1lKCRyZWYtPmZ1bGxfcGF0aCgkcCkpOworCQlpZiAobXkgJGV4aXN0aW5nID0gJGZldGNoLT57JHBhdGhuYW1lfSkgeworCQkJaWYgKCRleGlzdGluZyBuZSAkcmVmbmFtZSkgeworCQkJCWRpZSAiUmVmc3BlYyBjb25mbGljdDpcbiIsCisJCQkJICAgICJleGlzdGluZzogJGV4aXN0aW5nXG4iLAorCQkJCSAgICAiIGdsb2JiZWQ6ICRyZWZuYW1lXG4iOworCQkJfQorCQkJbXkgJHUgPSAoOjpjbXRfbWV0YWRhdGEoIiRyZWZuYW1lIikpWzBdOworCQkJJHUgPX4gcyFeXFEkdXJsXEUoL3wkKSEhIG9yIGRpZQorCQkJICAiJHJlZm5hbWU6ICckdXJsJyBub3QgZm91bmQgaW4gJyR1J1xuIjsKKwkJCWlmICgkcGF0aG5hbWUgbmUgJHUpIHsKKwkJCQl3YXJuICJXOiBSZWZzcGVjIGdsb2IgY29uZmxpY3QgIiwKKwkJCQkgICAgICIocmVmOiAkcmVmbmFtZSk6XG4iLAorCQkJCSAgICAgImV4cGVjdGVkIHBhdGg6ICRwYXRobmFtZVxuIiwKKwkJCQkgICAgICIgICAgcmVhbCBwYXRoOiAkdVxuIiwKKwkJCQkgICAgICJDb250aW51aW5nIGFoZWFkIHdpdGggJHVcbiI7CisJCQkJbmV4dDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCSRmZXRjaC0+eyRwYXRobmFtZX0gPSAkcmVmbmFtZTsKKwkJfQorCX0KK30KKworc3ViIHBhcnNlX3JldmlzaW9uX2FyZ3VtZW50IHsKKwlteSAoJGJhc2UsICRoZWFkKSA9IEBfOworCWlmICghZGVmaW5lZCAkOjpfcmV2aXNpb24gfHwgJDo6X3JldmlzaW9uIGVxICdCQVNFOkhFQUQnKSB7CisJCXJldHVybiAoJGJhc2UsICRoZWFkKTsKKwl9CisJcmV0dXJuICgkMSwgJDIpIGlmICgkOjpfcmV2aXNpb24gPX4gL14oXGQrKTooXGQrKSQvKTsKKwlyZXR1cm4gKCQ6Ol9yZXZpc2lvbiwgJDo6X3JldmlzaW9uKSBpZiAoJDo6X3JldmlzaW9uID1+IC9eXGQrJC8pOworCXJldHVybiAoJGhlYWQsICRoZWFkKSBpZiAoJDo6X3JldmlzaW9uIGVxICdIRUFEJyk7CisJcmV0dXJuICgkYmFzZSwgJDEpIGlmICgkOjpfcmV2aXNpb24gPX4gL15CQVNFOihcZCspJC8pOworCXJldHVybiAoJDEsICRoZWFkKSBpZiAoJDo6X3JldmlzaW9uID1+IC9eKFxkKyk6SEVBRCQvKTsKKwlkaWUgInJldmlzaW9uIGFyZ3VtZW50OiAkOjpfcmV2aXNpb24gbm90IHVuZGVyc3Rvb2QgYnkgZ2l0LXN2blxuIjsKK30KKworc3ViIGZldGNoX2FsbCB7CisJbXkgKCRyZXBvX2lkLCAkcmVtb3RlcykgPSBAXzsKKwlpZiAocmVmICRyZXBvX2lkKSB7CisJCW15ICRncyA9ICRyZXBvX2lkOworCQkkcmVwb19pZCA9IHVuZGVmOworCQkkcmVwb19pZCA9ICRncy0+e3JlcG9faWR9OworCX0KKwkkcmVtb3RlcyB8fD0gcmVhZF9hbGxfcmVtb3RlcygpOworCW15ICRyZW1vdGUgPSAkcmVtb3Rlcy0+eyRyZXBvX2lkfSBvcgorCSAgICAgICAgICAgICBkaWUgIltzdm4tcmVtb3RlIFwiJHJlcG9faWRcIl0gdW5rbm93blxuIjsKKwlteSAkZmV0Y2ggPSAkcmVtb3RlLT57ZmV0Y2h9OworCW15ICR1cmwgPSAkcmVtb3RlLT57dXJsfSBvciBkaWUgInN2bi1yZW1vdGUuJHJlcG9faWQudXJsIG5vdCBkZWZpbmVkXG4iOworCW15IChAZ3MsIEBnbG9icyk7CisJbXkgJHJhID0gR2l0OjpTVk46OlJhLT5uZXcoJHVybCk7CisJbXkgJHV1aWQgPSAkcmEtPmdldF91dWlkOworCW15ICRoZWFkID0gJHJhLT5nZXRfbGF0ZXN0X3Jldm51bTsKKworCSMgaWdub3JlIGVycm9ycywgJGhlYWQgcmV2aXNpb24gbWF5IG5vdCBldmVuIGV4aXN0IGFueW1vcmUKKwlldmFsIHsgJHJhLT5nZXRfbG9nKCIiLCAkaGVhZCwgMCwgMSwgMCwgMSwgc3ViIHsgJGhlYWQgPSAkX1sxXSB9KSB9OworCXdhcm4gIlc6ICRAXG4iIGlmICRAOworCisJbXkgJGJhc2UgPSBkZWZpbmVkICRmZXRjaCA/ICRoZWFkIDogMDsKKworCSMgcmVhZCB0aGUgbWF4IHJldnMgZm9yIHdpbGRjYXJkIGV4cGFuc2lvbiAoYnJhbmNoZXMvKiwgdGFncy8qKQorCWZvcmVhY2ggbXkgJHQgKHF3L2JyYW5jaGVzIHRhZ3MvKSB7CisJCWRlZmluZWQgJHJlbW90ZS0+eyR0fSBvciBuZXh0OworCQlwdXNoIEBnbG9icywgQHskcmVtb3RlLT57JHR9fTsKKworCQlteSAkbWF4X3JldiA9IGV2YWwgeyB0bXBfY29uZmlnKHF3Ly0taW50IC0tZ2V0LywKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICJzdm4tcmVtb3RlLiRyZXBvX2lkLiR7dH0tbWF4UmV2IikgfTsKKwkJaWYgKGRlZmluZWQgJG1heF9yZXYgJiYgKCRtYXhfcmV2IDwgJGJhc2UpKSB7CisJCQkkYmFzZSA9ICRtYXhfcmV2OworCQl9IGVsc2lmICghZGVmaW5lZCAkbWF4X3JldikgeworCQkJJGJhc2UgPSAwOworCQl9CisJfQorCisJaWYgKCRmZXRjaCkgeworCQlmb3JlYWNoIG15ICRwIChzb3J0IGtleXMgJSRmZXRjaCkgeworCQkJbXkgJGdzID0gR2l0OjpTVk4tPm5ldygkZmV0Y2gtPnskcH0sICRyZXBvX2lkLCAkcCk7CisJCQlteSAkbHIgPSAkZ3MtPnJldl9tYXBfbWF4OworCQkJaWYgKGRlZmluZWQgJGxyKSB7CisJCQkJJGJhc2UgPSAkbHIgaWYgKCRsciA8ICRiYXNlKTsKKwkJCX0KKwkJCXB1c2ggQGdzLCAkZ3M7CisJCX0KKwl9CisKKwkoJGJhc2UsICRoZWFkKSA9IHBhcnNlX3JldmlzaW9uX2FyZ3VtZW50KCRiYXNlLCAkaGVhZCk7CisJJHJhLT5nc19mZXRjaF9sb29wX2NvbW1vbigkYmFzZSwgJGhlYWQsIFxAZ3MsIFxAZ2xvYnMpOworfQorCitzdWIgcmVhZF9hbGxfcmVtb3RlcyB7CisJbXkgJHIgPSB7fTsKKwlteSAkdXNlX3N2bV9wcm9wcyA9IGV2YWwgeyBjb21tYW5kX29uZWxpbmUocXcvY29uZmlnIC0tYm9vbAorCSAgICBzdm4udXNlU3ZtUHJvcHMvKSB9OworCSR1c2Vfc3ZtX3Byb3BzID0gJHVzZV9zdm1fcHJvcHMgZXEgJ3RydWUnIGlmICR1c2Vfc3ZtX3Byb3BzOworCW15ICRzdm5fcmVmc3BlYyA9IHFye1xzKiguKj8pXHMqOlxzKiguKz8pXHMqfTsKKwlmb3JlYWNoIChncmVwIHsgcy9ec3ZuLXJlbW90ZVwuLy8gfSBjb21tYW5kKHF3L2NvbmZpZyAtbC8pKSB7CisJCWlmIChtIV4oLispXC5mZXRjaD0kc3ZuX3JlZnNwZWMkISkgeworCQkJbXkgKCRyZW1vdGUsICRsb2NhbF9yZWYsICRyZW1vdGVfcmVmKSA9ICgkMSwgJDIsICQzKTsKKwkJCWRpZSgic3ZuLXJlbW90ZS4kcmVtb3RlOiByZW1vdGUgcmVmICckcmVtb3RlX3JlZicgIgorCQkJICAgIC4gIm11c3Qgc3RhcnQgd2l0aCAncmVmcy8nXG4iKQorCQkJCXVubGVzcyAkcmVtb3RlX3JlZiA9fiBte15yZWZzL307CisJCQkkbG9jYWxfcmVmID0gdXJpX2RlY29kZSgkbG9jYWxfcmVmKTsKKwkJCSRyLT57JHJlbW90ZX0tPntmZXRjaH0tPnskbG9jYWxfcmVmfSA9ICRyZW1vdGVfcmVmOworCQkJJHItPnskcmVtb3RlfS0+e3N2bX0gPSB7fSBpZiAkdXNlX3N2bV9wcm9wczsKKwkJfSBlbHNpZiAobSFeKC4rKVwudXNlc3ZtcHJvcHM9XHMqKC4qKVxzKiQhKSB7CisJCQkkci0+eyQxfS0+e3N2bX0gPSB7fTsKKwkJfSBlbHNpZiAobSFeKC4rKVwudXJsPVxzKiguKilccyokISkgeworCQkJJHItPnskMX0tPnt1cmx9ID0gY2Fub25pY2FsaXplX3VybCgkMik7CisJCX0gZWxzaWYgKG0hXiguKylcLnB1c2h1cmw9XHMqKC4qKVxzKiQhKSB7CisJCQkkci0+eyQxfS0+e3B1c2h1cmx9ID0gY2Fub25pY2FsaXplX3VybCgkMik7CisJCX0gZWxzaWYgKG0hXiguKylcLmlnbm9yZS1yZWZzPVxzKiguKilccyokISkgeworCQkJJHItPnskMX0tPntpZ25vcmVfcmVmc19yZWdleH0gPSAkMjsKKwkJfSBlbHNpZiAobSFeKC4rKVwuKGJyYW5jaGVzfHRhZ3MpPSRzdm5fcmVmc3BlYyQhKSB7CisJCQlteSAoJHJlbW90ZSwgJHQsICRsb2NhbF9yZWYsICRyZW1vdGVfcmVmKSA9CisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCQxLCAkMiwgJDMsICQ0KTsKKwkJCWRpZSgic3ZuLXJlbW90ZS4kcmVtb3RlOiByZW1vdGUgcmVmICckcmVtb3RlX3JlZicgKCR0KSAiCisJCQkgICAgLiAibXVzdCBzdGFydCB3aXRoICdyZWZzLydcbiIpCisJCQkJdW5sZXNzICRyZW1vdGVfcmVmID1+IG17XnJlZnMvfTsKKwkJCSRsb2NhbF9yZWYgPSB1cmlfZGVjb2RlKCRsb2NhbF9yZWYpOworCisJCQlyZXF1aXJlIEdpdDo6U1ZOOjpHbG9iU3BlYzsKKwkJCW15ICRycyA9IHsKKwkJCSAgICB0ID0+ICR0LAorCQkJICAgIHJlbW90ZSA9PiAkcmVtb3RlLAorCQkJICAgIHBhdGggPT4gR2l0OjpTVk46Okdsb2JTcGVjLT5uZXcoJGxvY2FsX3JlZiwgMSksCisJCQkgICAgcmVmID0+IEdpdDo6U1ZOOjpHbG9iU3BlYy0+bmV3KCRyZW1vdGVfcmVmLCAwKSB9OworCQkJaWYgKGxlbmd0aCgkcnMtPntyZWZ9LT57cmlnaHR9KSAhPSAwKSB7CisJCQkJZGllICJUaGUgJyonIGdsb2IgY2hhcmFjdGVyIG11c3QgYmUgdGhlIGxhc3QgIiwKKwkJCQkgICAgImNoYXJhY3RlciBvZiAnJHJlbW90ZV9yZWYnXG4iOworCQkJfQorCQkJcHVzaCBAeyAkci0+eyRyZW1vdGV9LT57JHR9IH0sICRyczsKKwkJfQorCX0KKworCW1hcCB7CisJCWlmIChkZWZpbmVkICRyLT57JF99LT57c3ZtfSkgeworCQkJbXkgJHN2bTsKKwkJCWV2YWwgeworCQkJCW15ICRzZWN0aW9uID0gInN2bi1yZW1vdGUuJF8iOworCQkJCSRzdm0gPSB7CisJCQkJCXNvdXJjZSA9PiB0bXBfY29uZmlnKCctLWdldCcsCisJCQkJCSAgICAiJHNlY3Rpb24uc3ZtLXNvdXJjZSIpLAorCQkJCQlyZXBsYWNlID0+IHRtcF9jb25maWcoJy0tZ2V0JywKKwkJCQkJICAgICIkc2VjdGlvbi5zdm0tcmVwbGFjZSIpLAorCQkJCX0KKwkJCX07CisJCQkkci0+eyRffS0+e3N2bX0gPSAkc3ZtOworCQl9CisJfSBrZXlzICUkcjsKKworCWZvcmVhY2ggbXkgJHJlbW90ZSAoa2V5cyAlJHIpIHsKKwkJZm9yZWFjaCAoIGdyZXAgeyBkZWZpbmVkICRfIH0KKwkJCSAgbWFwIHsgJHItPnskcmVtb3RlfS0+eyRffSB9IHF3KGJyYW5jaGVzIHRhZ3MpICkgeworCQkJZm9yZWFjaCBteSAkcnMgKCBAJF8gKSB7CisJCQkJJHJzLT57aWdub3JlX3JlZnNfcmVnZXh9ID0KKwkJCQkgICAgJHItPnskcmVtb3RlfS0+e2lnbm9yZV9yZWZzX3JlZ2V4fTsKKwkJCX0KKwkJfQorCX0KKworCSRyOworfQorCitzdWIgaW5pdF92YXJzIHsKKwkkX2djX25yID0gJF9nY19wZXJpb2QgPSAxMDAwOworCWlmIChkZWZpbmVkICRfcmVwYWNrIHx8IGRlZmluZWQgJF9yZXBhY2tfZmxhZ3MpIHsKKwkgICAgICAgd2FybiAiUmVwYWNrIG9wdGlvbnMgYXJlIG9ic29sZXRlOyB0aGV5IGhhdmUgbm8gZWZmZWN0LlxuIjsKKwl9Cit9CisKK3N1YiB2ZXJpZnlfcmVtb3Rlc19zYW5pdHkgeworCXJldHVybiB1bmxlc3MgLWQgJEVOVntHSVRfRElSfTsKKwlteSAlc2VlbjsKKwlmb3JlYWNoIChjb21tYW5kKHF3L2NvbmZpZyAtbC8pKSB7CisJCWlmIChtIV5zdm4tcmVtb3RlXC4oPzouKylcLmZldGNoPS4qOnJlZnMvcmVtb3Rlcy8oXFMrKVxzKiQhKSB7CisJCQlpZiAoJHNlZW57JDF9KSB7CisJCQkJZGllICJSZW1vdGUgcmVmIHJlZnMvcmVtb3RlLyQxIGlzIHRyYWNrZWQgYnkiLAorCQkJCSAgICAiXG4gIFwiJF9cIlxuYW5kXG4gIFwiJHNlZW57JDF9XCJcbiIsCisJCQkJICAgICJQbGVhc2UgcmVzb2x2ZSB0aGlzIGFtYmlndWl0eSBpbiAiLAorCQkJCSAgICAieW91ciBnaXQgY29uZmlndXJhdGlvbiBmaWxlIGJlZm9yZSAiLAorCQkJCSAgICAiY29udGludWluZ1xuIjsKKwkJCX0KKwkJCSRzZWVueyQxfSA9ICRfOworCQl9CisJfQorfQorCitzdWIgZmluZF9leGlzdGluZ19yZW1vdGUgeworCW15ICgkdXJsLCAkcmVtb3RlcykgPSBAXzsKKwlyZXR1cm4gdW5kZWYgaWYgJG5vX3JldXNlX2V4aXN0aW5nOworCW15ICRleGlzdGluZzsKKwlmb3JlYWNoIG15ICRyZXBvX2lkIChrZXlzICUkcmVtb3RlcykgeworCQlteSAkdSA9ICRyZW1vdGVzLT57JHJlcG9faWR9LT57dXJsfSBvciBuZXh0OworCQluZXh0IGlmICR1IG5lICR1cmw7CisJCSRleGlzdGluZyA9ICRyZXBvX2lkOworCQlsYXN0OworCX0KKwkkZXhpc3Rpbmc7Cit9CisKK3N1YiBpbml0X3JlbW90ZV9jb25maWcgeworCW15ICgkc2VsZiwgJHVybCwgJG5vX3dyaXRlKSA9IEBfOworCSR1cmwgPSBjYW5vbmljYWxpemVfdXJsKCR1cmwpOworCW15ICRyID0gcmVhZF9hbGxfcmVtb3RlcygpOworCW15ICRleGlzdGluZyA9IGZpbmRfZXhpc3RpbmdfcmVtb3RlKCR1cmwsICRyKTsKKwlpZiAoJGV4aXN0aW5nKSB7CisJCXVubGVzcyAoJG5vX3dyaXRlKSB7CisJCQlwcmludCBTVERFUlIgIlVzaW5nIGV4aXN0aW5nICIsCisJCQkJICAgICAiW3N2bi1yZW1vdGUgXCIkZXhpc3RpbmdcIl1cbiI7CisJCX0KKwkJJHNlbGYtPntyZXBvX2lkfSA9ICRleGlzdGluZzsKKwl9IGVsc2lmICgkX21pbmltaXplX3VybCkgeworCQlteSAkbWluX3VybCA9IEdpdDo6U1ZOOjpSYS0+bmV3KCR1cmwpLT5taW5pbWl6ZV91cmw7CisJCSRleGlzdGluZyA9IGZpbmRfZXhpc3RpbmdfcmVtb3RlKCRtaW5fdXJsLCAkcik7CisJCWlmICgkZXhpc3RpbmcpIHsKKwkJCXVubGVzcyAoJG5vX3dyaXRlKSB7CisJCQkJcHJpbnQgU1RERVJSICJVc2luZyBleGlzdGluZyAiLAorCQkJCQkgICAgICJbc3ZuLXJlbW90ZSBcIiRleGlzdGluZ1wiXVxuIjsKKwkJCX0KKwkJCSRzZWxmLT57cmVwb19pZH0gPSAkZXhpc3Rpbmc7CisJCX0KKwkJaWYgKCRtaW5fdXJsIG5lICR1cmwpIHsKKwkJCXVubGVzcyAoJG5vX3dyaXRlKSB7CisJCQkJcHJpbnQgU1RERVJSICJVc2luZyBoaWdoZXIgbGV2ZWwgb2YgVVJMOiAiLAorCQkJCQkgICAgICIkdXJsID0+ICRtaW5fdXJsXG4iOworCQkJfQorCQkJbXkgJG9sZF9wYXRoID0gJHNlbGYtPnBhdGg7CisJCQkkdXJsID1+IHMhXlxRJG1pbl91cmxcRSgvfCQpISE7CisJCQkkdXJsID0gam9pbl9wYXRocygkdXJsLCAkb2xkX3BhdGgpOworCQkJJHNlbGYtPnBhdGgoJHVybCk7CisJCQkkdXJsID0gJG1pbl91cmw7CisJCX0KKwl9CisJbXkgJG9yaWdfdXJsOworCWlmICghJGV4aXN0aW5nKSB7CisJCSMgdmVyaWZ5IHRoYXQgd2UgYXJlbid0IG92ZXJ3cml0aW5nIGFueXRoaW5nOgorCQkkb3JpZ191cmwgPSBldmFsIHsKKwkJCWNvbW1hbmRfb25lbGluZSgnY29uZmlnJywgJy0tZ2V0JywKKwkJCQkJInN2bi1yZW1vdGUuJHNlbGYtPntyZXBvX2lkfS51cmwiKQorCQl9OworCQlpZiAoJG9yaWdfdXJsICYmICgkb3JpZ191cmwgbmUgJHVybCkpIHsKKwkJCWRpZSAic3ZuLXJlbW90ZS4kc2VsZi0+e3JlcG9faWR9LnVybCBhbHJlYWR5IHNldDogIiwKKwkJCSAgICAiJG9yaWdfdXJsXG53YW50ZWQgdG8gc2V0IHRvOiAkdXJsXG4iOworCQl9CisJfQorCW15ICgkeHJlcG9faWQsICR4cGF0aCkgPSBmaW5kX3JlZigkc2VsZi0+cmVmbmFtZSk7CisJaWYgKCEkbm9fd3JpdGUgJiYgZGVmaW5lZCAkeHBhdGgpIHsKKwkJZGllICJzdm4tcmVtb3RlLiR4cmVwb19pZC5mZXRjaCBhbHJlYWR5IHNldCB0byB0cmFjayAiLAorCQkgICAgIiR4cGF0aDoiLCAkc2VsZi0+cmVmbmFtZSwgIlxuIjsKKwl9CisJdW5sZXNzICgkbm9fd3JpdGUpIHsKKwkJY29tbWFuZF9ub2lzeSgnY29uZmlnJywKKwkJCSAgICAgICJzdm4tcmVtb3RlLiRzZWxmLT57cmVwb19pZH0udXJsIiwgJHVybCk7CisJCW15ICRwYXRoID0gJHNlbGYtPnBhdGg7CisJCSRwYXRoID1+IHN7Xi99e307CisJCSRwYXRoID1+IHN7JShbMC05QS1GXXsyfSl9e2NociBoZXgoJDEpfWllZzsKKwkJJHNlbGYtPnBhdGgoJHBhdGgpOworCQljb21tYW5kX25vaXN5KCdjb25maWcnLCAnLS1hZGQnLAorCQkJICAgICAgInN2bi1yZW1vdGUuJHNlbGYtPntyZXBvX2lkfS5mZXRjaCIsCisJCQkgICAgICAkc2VsZi0+cGF0aC4iOiIuJHNlbGYtPnJlZm5hbWUpOworCX0KKwkkc2VsZi0+dXJsKCR1cmwpOworfQorCitzdWIgZmluZF9ieV91cmwgeyAjIHJlcG9zX3Jvb3QgYW5kLCBwYXRoIGFyZSBvcHRpb25hbAorCW15ICgkY2xhc3MsICRmdWxsX3VybCwgJHJlcG9zX3Jvb3QsICRwYXRoKSA9IEBfOworCisJJGZ1bGxfdXJsID0gY2Fub25pY2FsaXplX3VybCgkZnVsbF91cmwpOworCisJcmV0dXJuIHVuZGVmIHVubGVzcyBkZWZpbmVkICRmdWxsX3VybDsKKwlyZW1vdmVfdXNlcm5hbWUoJGZ1bGxfdXJsKTsKKwlyZW1vdmVfdXNlcm5hbWUoJHJlcG9zX3Jvb3QpIGlmIGRlZmluZWQgJHJlcG9zX3Jvb3Q7CisJbXkgJHJlbW90ZXMgPSByZWFkX2FsbF9yZW1vdGVzKCk7CisJaWYgKGRlZmluZWQgJGZ1bGxfdXJsICYmIGRlZmluZWQgJHJlcG9zX3Jvb3QgJiYgIWRlZmluZWQgJHBhdGgpIHsKKwkJJHBhdGggPSAkZnVsbF91cmw7CisJCSRwYXRoID1+IHMjXlxRJHJlcG9zX3Jvb3RcRSg/Oi98JCkjIzsKKwl9CisJZm9yZWFjaCBteSAkcmVwb19pZCAoa2V5cyAlJHJlbW90ZXMpIHsKKwkJbXkgJHUgPSAkcmVtb3Rlcy0+eyRyZXBvX2lkfS0+e3VybH0gb3IgbmV4dDsKKwkJcmVtb3ZlX3VzZXJuYW1lKCR1KTsKKwkJbmV4dCBpZiBkZWZpbmVkICRyZXBvc19yb290ICYmICRyZXBvc19yb290IG5lICR1OworCisJCW15ICRmZXRjaCA9ICRyZW1vdGVzLT57JHJlcG9faWR9LT57ZmV0Y2h9IHx8IHt9OworCQlmb3JlYWNoIG15ICR0IChxdy9icmFuY2hlcyB0YWdzLykgeworCQkJZm9yZWFjaCBteSAkZ2xvYnNwZWMgKEB7JHJlbW90ZXMtPnskcmVwb19pZH0tPnskdH19KSB7CisJCQkJcmVzb2x2ZV9sb2NhbF9nbG9icygkdSwgJGZldGNoLCAkZ2xvYnNwZWMpOworCQkJfQorCQl9CisJCW15ICRwID0gJHBhdGg7CisJCW15ICRyd3IgPSByZXdyaXRlX3Jvb3Qoe3JlcG9faWQgPT4gJHJlcG9faWR9KTsKKwkJbXkgJHN2bSA9ICRyZW1vdGVzLT57JHJlcG9faWR9LT57c3ZtfQorCQkJaWYgZGVmaW5lZCAkcmVtb3Rlcy0+eyRyZXBvX2lkfS0+e3N2bX07CisJCXVubGVzcyAoZGVmaW5lZCAkcCkgeworCQkJJHAgPSAkZnVsbF91cmw7CisJCQlteSAkeiA9ICR1OworCQkJbXkgJHByZWZpeCA9ICcnOworCQkJaWYgKCRyd3IpIHsKKwkJCQkkeiA9ICRyd3I7CisJCQkJcmVtb3ZlX3VzZXJuYW1lKCR6KTsKKwkJCX0gZWxzaWYgKGRlZmluZWQgJHN2bSkgeworCQkJCSR6ID0gJHN2bS0+e3NvdXJjZX07CisJCQkJJHByZWZpeCA9ICRzdm0tPntyZXBsYWNlfTsKKwkJCQkkcHJlZml4ID1+IHMjXlxRJHVcRSg/Oi98JCkjIzsKKwkJCQkkcHJlZml4ID1+IHMjLyQjIzsKKwkJCX0KKwkJCSRwID1+IHMjXlxRJHpcRSg/Oi98JCkjJHByZWZpeCMgb3IgbmV4dDsKKwkJfQorCisJCSMgcmVtb3RlIGZldGNoIHBhdGhzIGFyZSBub3QgVVJJIGVzY2FwZWQuICBEZWNvZGUgb3VycworCQkjIHNvIHRoZXkgbWF0Y2gKKwkJJHAgPSB1cmlfZGVjb2RlKCRwKTsKKworCQlmb3JlYWNoIG15ICRmIChrZXlzICUkZmV0Y2gpIHsKKwkJCW5leHQgaWYgJGYgbmUgJHA7CisJCQlyZXR1cm4gR2l0OjpTVk4tPm5ldygkZmV0Y2gtPnskZn0sICRyZXBvX2lkLCAkZik7CisJCX0KKwl9CisJdW5kZWY7Cit9CisKK3N1YiBpbml0IHsKKwlteSAoJGNsYXNzLCAkdXJsLCAkcGF0aCwgJHJlcG9faWQsICRyZWZfaWQsICRub193cml0ZSkgPSBAXzsKKwlteSAkc2VsZiA9IF9uZXcoJGNsYXNzLCAkcmVwb19pZCwgJHJlZl9pZCwgJHBhdGgpOworCWlmIChkZWZpbmVkICR1cmwpIHsKKwkJJHNlbGYtPmluaXRfcmVtb3RlX2NvbmZpZygkdXJsLCAkbm9fd3JpdGUpOworCX0KKwkkc2VsZjsKK30KKworc3ViIGZpbmRfcmVmIHsKKwlteSAoJHJlZl9pZCkgPSBAXzsKKwlmb3JlYWNoIChjb21tYW5kKHF3L2NvbmZpZyAtbC8pKSB7CisJCW5leHQgdW5sZXNzIG0hXnN2bi1yZW1vdGVcLiguKylcLmZldGNoPQorCQkgICAgICAgICAgICAgIFxzKiguKj8pXHMqOlxzKiguKz8pXHMqJCF4OworCQlteSAoJHJlcG9faWQsICRwYXRoLCAkcmVmKSA9ICgkMSwgJDIsICQzKTsKKwkJaWYgKCRyZWYgZXEgJHJlZl9pZCkgeworCQkJJHBhdGggPSAnJyBpZiAoJHBhdGggPX4gbSNeXC4vPyMpOworCQkJcmV0dXJuICgkcmVwb19pZCwgJHBhdGgpOworCQl9CisJfQorCSh1bmRlZiwgdW5kZWYsIHVuZGVmKTsKK30KKworc3ViIG5ldyB7CisJbXkgKCRjbGFzcywgJHJlZl9pZCwgJHJlcG9faWQsICRwYXRoKSA9IEBfOworCWlmIChkZWZpbmVkICRyZWZfaWQgJiYgIWRlZmluZWQgJHJlcG9faWQgJiYgIWRlZmluZWQgJHBhdGgpIHsKKwkJKCRyZXBvX2lkLCAkcGF0aCkgPSBmaW5kX3JlZigkcmVmX2lkKTsKKwkJaWYgKCFkZWZpbmVkICRyZXBvX2lkKSB7CisJCQlkaWUgIkNvdWxkIG5vdCBmaW5kIGEgXCJzdm4tcmVtb3RlLiouZmV0Y2hcIiBrZXkgIiwKKwkJCSAgICAiaW4gdGhlIHJlcG9zaXRvcnkgY29uZmlndXJhdGlvbiBtYXRjaGluZzogIiwKKwkJCSAgICAiJHJlZl9pZFxuIjsKKwkJfQorCX0KKwlteSAkc2VsZiA9IF9uZXcoJGNsYXNzLCAkcmVwb19pZCwgJHJlZl9pZCwgJHBhdGgpOworCWlmICghZGVmaW5lZCAkc2VsZi0+cGF0aCB8fCAhbGVuZ3RoICRzZWxmLT5wYXRoKSB7CisJCW15ICRmZXRjaCA9IGNvbW1hbmRfb25lbGluZSgnY29uZmlnJywgJy0tZ2V0JywKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdm4tcmVtb3RlLiRyZXBvX2lkLmZldGNoIiwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6JHJlZl9pZFwkIikgb3IKKwkJICAgICBkaWUgIkZhaWxlZCB0byByZWFkIFwic3ZuLXJlbW90ZS4kcmVwb19pZC5mZXRjaFwiICIsCisJCSAgICAgICAgICJcIjokcmVmX2lkXCRcIiBpbiBjb25maWdcbiI7CisJCW15KCRwYXRoKSA9IHNwbGl0KC9ccyo6XHMqLywgJGZldGNoKTsKKwkJJHNlbGYtPnBhdGgoJHBhdGgpOworCX0KKwl7CisJCW15ICRwYXRoID0gJHNlbGYtPnBhdGg7CisJCSRwYXRoID1+IHN7XEEvfXt9OworCQkkcGF0aCA9fiBzey9cen17fTsKKwkJJHNlbGYtPnBhdGgoJHBhdGgpOworCX0KKwlteSAkdXJsID0gY29tbWFuZF9vbmVsaW5lKCdjb25maWcnLCAnLS1nZXQnLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgInN2bi1yZW1vdGUuJHJlcG9faWQudXJsIikgb3IKKyAgICAgICAgICAgICAgICAgIGRpZSAiRmFpbGVkIHRvIHJlYWQgXCJzdm4tcmVtb3RlLiRyZXBvX2lkLnVybFwiIGluIGNvbmZpZ1xuIjsKKwkkc2VsZi0+dXJsKCR1cmwpOworCSRzZWxmLT57cHVzaHVybH0gPSBldmFsIHsgY29tbWFuZF9vbmVsaW5lKCdjb25maWcnLCAnLS1nZXQnLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgInN2bi1yZW1vdGUuJHJlcG9faWQucHVzaHVybCIpIH07CisJJHNlbGYtPnJlYnVpbGQ7CisJJHNlbGY7Cit9CisKK3N1YiByZWZuYW1lIHsKKwlteSAoJHJlZm5hbWUpID0gJF9bMF0tPntyZWZfaWR9IDsKKworCSMgSXQgY2Fubm90IGVuZCB3aXRoIGEgc2xhc2ggLywgd2UnbGwgdGhyb3cgdXAgb24gdGhpcyBiZWNhdXNlCisJIyBTVk4gY2FuJ3QgaGF2ZSBkaXJlY3RvcmllcyB3aXRoIGEgc2xhc2ggaW4gdGhlaXIgbmFtZSwgZWl0aGVyOgorCWlmICgkcmVmbmFtZSA9fiBtey8kfSkgeworCQlkaWUgInJlZjogJyRyZWZuYW1lJyBlbmRzIHdpdGggYSB0cmFpbGluZyBzbGFzaCwgdGhpcyBpcyAiLAorCQkgICAgIm5vdCBwZXJtaXR0ZWQgYnkgZ2l0IG5vciBTdWJ2ZXJzaW9uXG4iOworCX0KKworCSMgSXQgY2Fubm90IGhhdmUgQVNDSUkgY29udHJvbCBjaGFyYWN0ZXIgc3BhY2UsIHRpbGRlIH4sIGNhcmV0IF4sCisJIyBjb2xvbiA6LCBxdWVzdGlvbi1tYXJrID8sIGFzdGVyaXNrICosIHNwYWNlLCBvciBvcGVuIGJyYWNrZXQgWworCSMgYW55d2hlcmUuCisJIworCSMgQWRkaXRpb25hbGx5LCAlIG11c3QgYmUgZXNjYXBlZCBiZWNhdXNlIGl0IGlzIHVzZWQgZm9yIGVzY2FwaW5nCisJIyBhbmQgd2Ugd2FudCBvdXIgZXNjYXBlZCByZWZuYW1lIHRvIGJlIHJldmVyc2libGUKKwkkcmVmbmFtZSA9fiBzeyhbIFwlflxeOlw/XCpcW1x0XSl9e3NwcmludGYoJyUlJTAyWCcsb3JkKCQxKSl9ZWc7CisKKwkjIG5vIHNsYXNoLXNlcGFyYXRlZCBjb21wb25lbnQgY2FuIGJlZ2luIHdpdGggYSBkb3QgLgorCSMgLy4qIGJlY29tZXMgLyUyRSoKKwkkcmVmbmFtZSA9fiBzey9cLn17LyUyRX1nOworCisJIyBJdCBjYW5ub3QgaGF2ZSB0d28gY29uc2VjdXRpdmUgZG90cyAuLiBhbnl3aGVyZQorCSMgLi4gYmVjb21lcyAlMkUlMkUKKwkkcmVmbmFtZSA9fiBze1wuXC59eyUyRSUyRX1nOworCisJIyB0cmFpbGluZyBkb3RzIGFuZCAubG9jayBhcmUgbm90IGFsbG93ZWQKKwkjIC4kIGJlY29tZXMgJTJFIGFuZCAubG9jayBiZWNvbWVzICUyRWxvY2sKKwkkcmVmbmFtZSA9fiBze1wuKD89JHxsb2NrJCl9eyUyRX07CisKKwkjIHRoZSBzZXF1ZW5jZSBAeyBpcyB1c2VkIHRvIGFjY2VzcyB0aGUgcmVmbG9nCisJIyBAeyBiZWNvbWVzICU0MHsKKwkkcmVmbmFtZSA9fiBze1xAXHt9eyU0MFx7fWc7CisKKwlyZXR1cm4gJHJlZm5hbWU7Cit9CisKK3N1YiBkZXNhbml0aXplX3JlZm5hbWUgeworCW15ICgkcmVmbmFtZSkgPSBAXzsKKwkkcmVmbmFtZSA9fiBzeyUoPzooWzAtOUEtRl17Mn0pKX17Y2hyIGhleCgkMSl9ZWc7CisJcmV0dXJuICRyZWZuYW1lOworfQorCitzdWIgc3ZtX3V1aWQgeworCW15ICgkc2VsZikgPSBAXzsKKwlyZXR1cm4gJHNlbGYtPntzdm19LT57dXVpZH0gaWYgJHNlbGYtPnN2bTsKKwkkc2VsZi0+cmE7CisJdW5sZXNzICgkc2VsZi0+e3N2bX0pIHsKKwkJZGllICJTVk0gVVVJRCBub3QgY2FjaGVkLCBhbmQgcmVhZGluZyByZW1vdGVseSBmYWlsZWRcbiI7CisJfQorCSRzZWxmLT57c3ZtfS0+e3V1aWR9OworfQorCitzdWIgc3ZtIHsKKwlteSAoJHNlbGYpID0gQF87CisJcmV0dXJuICRzZWxmLT57c3ZtfSBpZiAkc2VsZi0+e3N2bX07CisJbXkgJHN2bTsKKwkjIHNlZSBpZiB3ZSBoYXZlIGl0IGluIG91ciBjb25maWcsIGZpcnN0OgorCWV2YWwgeworCQlteSAkc2VjdGlvbiA9ICJzdm4tcmVtb3RlLiRzZWxmLT57cmVwb19pZH0iOworCQkkc3ZtID0geworCQkgIHNvdXJjZSA9PiB0bXBfY29uZmlnKCctLWdldCcsICIkc2VjdGlvbi5zdm0tc291cmNlIiksCisJCSAgdXVpZCA9PiB0bXBfY29uZmlnKCctLWdldCcsICIkc2VjdGlvbi5zdm0tdXVpZCIpLAorCQkgIHJlcGxhY2UgPT4gdG1wX2NvbmZpZygnLS1nZXQnLCAiJHNlY3Rpb24uc3ZtLXJlcGxhY2UiKSwKKwkJfQorCX07CisJaWYgKCRzdm0gJiYgJHN2bS0+e3NvdXJjZX0gJiYgJHN2bS0+e3V1aWR9ICYmICRzdm0tPntyZXBsYWNlfSkgeworCQkkc2VsZi0+e3N2bX0gPSAkc3ZtOworCX0KKwkkc2VsZi0+e3N2bX07Cit9CisKK3N1YiBfc2V0X3N2bV92YXJzIHsKKwlteSAoJHNlbGYsICRyYSkgPSBAXzsKKwlyZXR1cm4gJHJhIGlmICRzZWxmLT5zdm07CisKKwlteSBAZXJyID0gKCAidXNlU3ZtUHJvcHMgc2V0LCBidXQgZmFpbGVkIHRvIHJlYWQgU1ZNIHByb3BlcnRpZXNcbiIsCisJCSAgICAiKHN2bTpzb3VyY2UsIHN2bTp1dWlkKSAiLAorCQkgICAgImZyb20gdGhlIGZvbGxvd2luZyBVUkxzOlxuIiApOworCXN1YiByZWFkX3N2bV9wcm9wcyB7CisJCW15ICgkc2VsZiwgJHJhLCAkcGF0aCwgJHIpID0gQF87CisJCW15ICRwcm9wcyA9ICgkcmEtPmdldF9kaXIoJHBhdGgsICRyKSlbMl07CisJCW15ICRzcmMgPSAkcHJvcHMtPnsnc3ZtOnNvdXJjZSd9OworCQlteSAkdXVpZCA9ICRwcm9wcy0+eydzdm06dXVpZCd9OworCQlyZXR1cm4gdW5kZWYgaWYgKCEkc3JjIHx8ICEkdXVpZCk7CisKKwkJY2hvbXAoJHNyYywgJHV1aWQpOworCisJCSR1dWlkID1+IG17XlswLTlhLWZcLV17MzAsfSR9aQorCQkgICAgb3IgZGllICJkb2Vzbid0IGxvb2sgcmlnaHQgLSBzdm06dXVpZCBpcyAnJHV1aWQnXG4iOworCisJCSMgdGhlICchJyBpcyB1c2VkIHRvIG1hcmsgdGhlIHJlcG9zX3Jvb3QhL3JlbGF0aXZlL3BhdGgKKwkJJHNyYyA9fiBzey8/IS8/fXsvfTsKKwkJJHNyYyA9fiBzey8rJH17fTsgIyBubyB0cmFpbGluZyBzbGFzaGVzIHBsZWFzZQorCQkjIHVzZXJuYW1lIGlzIG9mIG5vIGludGVyZXN0CisJCSRzcmMgPX4gc3soXlthLXpcK10qOi8vKVteL0BdKkB9eyQxfTsKKworCQlteSAkcmVwbGFjZSA9IGFkZF9wYXRoX3RvX3VybCgkcmEtPnVybCwgJHBhdGgpOworCisJCW15ICRzZWN0aW9uID0gInN2bi1yZW1vdGUuJHNlbGYtPntyZXBvX2lkfSI7CisJCXRtcF9jb25maWcoIiRzZWN0aW9uLnN2bS1zb3VyY2UiLCAkc3JjKTsKKwkJdG1wX2NvbmZpZygiJHNlY3Rpb24uc3ZtLXJlcGxhY2UiLCAkcmVwbGFjZSk7CisJCXRtcF9jb25maWcoIiRzZWN0aW9uLnN2bS11dWlkIiwgJHV1aWQpOworCQkkc2VsZi0+e3N2bX0gPSB7CisJCQlzb3VyY2UgPT4gJHNyYywKKwkJCXV1aWQgPT4gJHV1aWQsCisJCQlyZXBsYWNlID0+ICRyZXBsYWNlCisJCX07CisJfQorCisJbXkgJHIgPSAkcmEtPmdldF9sYXRlc3RfcmV2bnVtOworCW15ICRwYXRoID0gJHNlbGYtPnBhdGg7CisJbXkgJXRyaWVkOworCXdoaWxlIChsZW5ndGggJHBhdGgpIHsKKwkJbXkgJHRyeSA9IGFkZF9wYXRoX3RvX3VybCgkc2VsZi0+dXJsLCAkcGF0aCk7CisJCXVubGVzcyAoJHRyaWVkeyR0cnl9KSB7CisJCQlyZXR1cm4gJHJhIGlmICRzZWxmLT5yZWFkX3N2bV9wcm9wcygkcmEsICRwYXRoLCAkcik7CisJCQkkdHJpZWR7JHRyeX0gPSAxOworCQl9CisJCSRwYXRoID1+IHMjLz9bXi9dKyQjIzsKKwl9CisJZGllICJQYXRoOiAnJHBhdGgnIHNob3VsZCBiZSAnJ1xuIiBpZiAkcGF0aCBuZSAnJzsKKwlyZXR1cm4gJHJhIGlmICRzZWxmLT5yZWFkX3N2bV9wcm9wcygkcmEsICRwYXRoLCAkcik7CisJJHRyaWVkeyBhZGRfcGF0aF90b191cmwoJHNlbGYtPnVybCwgJHBhdGgpIH0gPSAxOworCisJaWYgKCRyYS0+e3JlcG9zX3Jvb3R9IGVxICRzZWxmLT51cmwpIHsKKwkJZGllIEBlcnIsIChtYXAgeyAiICAkX1xuIiB9IGtleXMgJXRyaWVkKSwgIlxuIjsKKwl9CisKKwkjIG5vcGUsIG1ha2Ugc3VyZSB3ZSdyZSBjb25uZWN0ZWQgdG8gdGhlIHJlcG9zaXRvcnkgcm9vdDoKKwlteSAkb2s7CisJbXkgQHRyaWVkX2I7CisJJHBhdGggPSAkcmEtPntzdm5fcGF0aH07CisJJHJhID0gR2l0OjpTVk46OlJhLT5uZXcoJHJhLT57cmVwb3Nfcm9vdH0pOworCXdoaWxlIChsZW5ndGggJHBhdGgpIHsKKwkJbXkgJHRyeSA9IGFkZF9wYXRoX3RvX3VybCgkcmEtPnVybCwgJHBhdGgpOworCQl1bmxlc3MgKCR0cmllZHskdHJ5fSkgeworCQkJJG9rID0gJHNlbGYtPnJlYWRfc3ZtX3Byb3BzKCRyYSwgJHBhdGgsICRyKTsKKwkJCWxhc3QgaWYgJG9rOworCQkJJHRyaWVkeyR0cnl9ID0gMTsKKwkJfQorCQkkcGF0aCA9fiBzIy8/W14vXSskIyM7CisJfQorCWRpZSAiUGF0aDogJyRwYXRoJyBzaG91bGQgYmUgJydcbiIgaWYgJHBhdGggbmUgJyc7CisJJG9rIHx8PSAkc2VsZi0+cmVhZF9zdm1fcHJvcHMoJHJhLCAkcGF0aCwgJHIpOworCSR0cmllZHsgYWRkX3BhdGhfdG9fdXJsKCRyYS0+dXJsLCAkcGF0aCkgfSA9IDE7CisJaWYgKCEkb2spIHsKKwkJZGllIEBlcnIsIChtYXAgeyAiICAkX1xuIiB9IGtleXMgJXRyaWVkKSwgIlxuIjsKKwl9CisJR2l0OjpTVk46OlJhLT5uZXcoJHNlbGYtPnVybCk7Cit9CisKK3N1YiBzdm5zeW5jIHsKKwlteSAoJHNlbGYpID0gQF87CisJcmV0dXJuICRzZWxmLT57c3Zuc3luY30gaWYgJHNlbGYtPntzdm5zeW5jfTsKKworCWlmICgkc2VsZi0+bm9fbWV0YWRhdGEpIHsKKwkJZGllICJDYW4ndCBoYXZlIGJvdGggJ25vTWV0YWRhdGEnIGFuZCAiLAorCQkgICAgIid1c2VTdm5zeW5jUHJvcHMnIG9wdGlvbnMgc2V0IVxuIjsKKwl9CisJaWYgKCRzZWxmLT5yZXdyaXRlX3Jvb3QpIHsKKwkJZGllICJDYW4ndCBoYXZlIGJvdGggJ3VzZVN2bnN5bmNQcm9wcycgYW5kICdyZXdyaXRlUm9vdCcgIiwKKwkJICAgICJvcHRpb25zIHNldCFcbiI7CisJfQorCWlmICgkc2VsZi0+cmV3cml0ZV91dWlkKSB7CisJCWRpZSAiQ2FuJ3QgaGF2ZSBib3RoICd1c2VTdm5zeW5jUHJvcHMnIGFuZCAncmV3cml0ZVVVSUQnICIsCisJCSAgICAib3B0aW9ucyBzZXQhXG4iOworCX0KKworCW15ICRzdm5zeW5jOworCSMgc2VlIGlmIHdlIGhhdmUgaXQgaW4gb3VyIGNvbmZpZywgZmlyc3Q6CisJZXZhbCB7CisJCW15ICRzZWN0aW9uID0gInN2bi1yZW1vdGUuJHNlbGYtPntyZXBvX2lkfSI7CisKKwkJbXkgJHVybCA9IHRtcF9jb25maWcoJy0tZ2V0JywgIiRzZWN0aW9uLnN2bnN5bmMtdXJsIik7CisJCSgkdXJsKSA9ICgkdXJsID1+IG17XihbYS16XCtdKzovL1xTKykkfSkgb3IKKwkJICAgZGllICJkb2Vzbid0IGxvb2sgcmlnaHQgLSBzdm46c3luYy1mcm9tLXVybCBpcyAnJHVybCdcbiI7CisKKwkJbXkgJHV1aWQgPSB0bXBfY29uZmlnKCctLWdldCcsICIkc2VjdGlvbi5zdm5zeW5jLXV1aWQiKTsKKwkJKCR1dWlkKSA9ICgkdXVpZCA9fiBte14oWzAtOWEtZlwtXXszMCx9KSR9aSkgb3IKKwkJICAgZGllICJkb2Vzbid0IGxvb2sgcmlnaHQgLSBzdm46c3luYy1mcm9tLXV1aWQgaXMgJyR1dWlkJ1xuIjsKKworCQkkc3Zuc3luYyA9IHsgdXJsID0+ICR1cmwsIHV1aWQgPT4gJHV1aWQgfQorCX07CisJaWYgKCRzdm5zeW5jICYmICRzdm5zeW5jLT57dXJsfSAmJiAkc3Zuc3luYy0+e3V1aWR9KSB7CisJCXJldHVybiAkc2VsZi0+e3N2bnN5bmN9ID0gJHN2bnN5bmM7CisJfQorCisJbXkgJGVyciA9ICJ1c2VTdm5zeW5jUHJvcHMgc2V0LCBidXQgZmFpbGVkIHRvIHJlYWQgIiAuCisJICAgICAgICAgICJzdm5zeW5jIHByb3BlcnR5OiBzdm46c3luYy1mcm9tLSI7CisJbXkgJHJwID0gJHNlbGYtPnJhLT5yZXZfcHJvcGxpc3QoMCk7CisKKwlteSAkdXJsID0gJHJwLT57J3N2bjpzeW5jLWZyb20tdXJsJ30gb3IgZGllICRlcnIgLiAidXJsXG4iOworCSgkdXJsKSA9ICgkdXJsID1+IG17XihbYS16XCtdKzovL1xTKykkfSkgb3IKKwkgICAgICAgICAgIGRpZSAiZG9lc24ndCBsb29rIHJpZ2h0IC0gc3ZuOnN5bmMtZnJvbS11cmwgaXMgJyR1cmwnXG4iOworCisJbXkgJHV1aWQgPSAkcnAtPnsnc3ZuOnN5bmMtZnJvbS11dWlkJ30gb3IgZGllICRlcnIgLiAidXVpZFxuIjsKKwkoJHV1aWQpID0gKCR1dWlkID1+IG17XihbMC05YS1mXC1dezMwLH0pJH1pKSBvcgorCSAgICAgICAgICAgZGllICJkb2Vzbid0IGxvb2sgcmlnaHQgLSBzdm46c3luYy1mcm9tLXV1aWQgaXMgJyR1dWlkJ1xuIjsKKworCW15ICRzZWN0aW9uID0gInN2bi1yZW1vdGUuJHNlbGYtPntyZXBvX2lkfSI7CisJdG1wX2NvbmZpZygnLS1hZGQnLCAiJHNlY3Rpb24uc3Zuc3luYy11dWlkIiwgJHV1aWQpOworCXRtcF9jb25maWcoJy0tYWRkJywgIiRzZWN0aW9uLnN2bnN5bmMtdXJsIiwgJHVybCk7CisJcmV0dXJuICRzZWxmLT57c3Zuc3luY30gPSB7IHVybCA9PiAkdXJsLCB1dWlkID0+ICR1dWlkIH07Cit9CisKKyMgdGhpcyBhbGxvd3MgdXMgdG8gbWVtb2l6ZSBvdXIgU1ZOOjpSYSBVVUlEIGxvY2FsbHkgYW5kIGF2b2lkIGEKKyMgcmVtb3RlIGxvb2t1cCAodXNlZnVsIGZvciAnZ2l0IHN2biBsb2cnKS4KK3N1YiByYV91dWlkIHsKKwlteSAoJHNlbGYpID0gQF87CisJdW5sZXNzICgkc2VsZi0+e3JhX3V1aWR9KSB7CisJCW15ICRrZXkgPSAic3ZuLXJlbW90ZS4kc2VsZi0+e3JlcG9faWR9LnV1aWQiOworCQlteSAkdXVpZCA9IGV2YWwgeyB0bXBfY29uZmlnKCctLWdldCcsICRrZXkpIH07CisJCWlmICghJEAgJiYgJHV1aWQgJiYgJHV1aWQgPX4gL14oW2EtZlxkXC1dezMwLH0pJC9pKSB7CisJCQkkc2VsZi0+e3JhX3V1aWR9ID0gJHV1aWQ7CisJCX0gZWxzZSB7CisJCQlkaWUgInJhX3V1aWQgY2FsbGVkIHdpdGhvdXQgVVJMXG4iIHVubGVzcyAkc2VsZi0+dXJsOworCQkJJHNlbGYtPntyYV91dWlkfSA9ICRzZWxmLT5yYS0+Z2V0X3V1aWQ7CisJCQl0bXBfY29uZmlnKCctLWFkZCcsICRrZXksICRzZWxmLT57cmFfdXVpZH0pOworCQl9CisJfQorCSRzZWxmLT57cmFfdXVpZH07Cit9CisKK3N1YiBfc2V0X3JlcG9zX3Jvb3QgeworCW15ICgkc2VsZiwgJHJlcG9zX3Jvb3QpID0gQF87CisJbXkgJGsgPSAic3ZuLXJlbW90ZS4kc2VsZi0+e3JlcG9faWR9LnJlcG9zUm9vdCI7CisJJHJlcG9zX3Jvb3QgfHw9ICRzZWxmLT5yYS0+e3JlcG9zX3Jvb3R9OworCXRtcF9jb25maWcoJGssICRyZXBvc19yb290KTsKKwkkcmVwb3Nfcm9vdDsKK30KKworc3ViIHJlcG9zX3Jvb3QgeworCW15ICgkc2VsZikgPSBAXzsKKwlteSAkayA9ICJzdm4tcmVtb3RlLiRzZWxmLT57cmVwb19pZH0ucmVwb3NSb290IjsKKwlldmFsIHsgdG1wX2NvbmZpZygnLS1nZXQnLCAkaykgfSB8fCAkc2VsZi0+X3NldF9yZXBvc19yb290OworfQorCitzdWIgcmEgeworCW15ICgkc2VsZikgPSBzaGlmdDsKKwlteSAkcmEgPSBHaXQ6OlNWTjo6UmEtPm5ldygkc2VsZi0+dXJsKTsKKwkkc2VsZi0+X3NldF9yZXBvc19yb290KCRyYS0+e3JlcG9zX3Jvb3R9KTsKKwlpZiAoJHNlbGYtPnVzZV9zdm1fcHJvcHMgJiYgISRzZWxmLT57c3ZtfSkgeworCQlpZiAoJHNlbGYtPm5vX21ldGFkYXRhKSB7CisJCQlkaWUgIkNhbid0IGhhdmUgYm90aCAnbm9NZXRhZGF0YScgYW5kICIsCisJCQkgICAgIid1c2VTdm1Qcm9wcycgb3B0aW9ucyBzZXQhXG4iOworCQl9IGVsc2lmICgkc2VsZi0+dXNlX3N2bnN5bmNfcHJvcHMpIHsKKwkJCWRpZSAiQ2FuJ3QgaGF2ZSBib3RoICd1c2VTdm5zeW5jUHJvcHMnIGFuZCAiLAorCQkJICAgICIndXNlU3ZtUHJvcHMnIG9wdGlvbnMgc2V0IVxuIjsKKwkJfQorCQkkcmEgPSAkc2VsZi0+X3NldF9zdm1fdmFycygkcmEpOworCQkkc2VsZi0+ey13YW50X3JldnByb3BzfSA9IDE7CisJfQorCSRyYTsKK30KKworIyBwcm9wX3dhbGsoUEFUSCwgUkVWLCBTVUIpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmVjdXJzaXZlbHkgdHJhdmVyc2UgUEFUSCBhdCByZXZpc2lvbiBSRVYgYW5kIGludm9rZSBTVUIgZm9yIGVhY2gKKyMgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgYSBTVk4gcHJvcGVydHkuICBTVUIgd2lsbCBiZSBpbnZva2VkIGFzCisjIGZvbGxvd3M6ICAmU1VCKGdzLCBwYXRoLCBwcm9wcyk7ICB3aGVyZSBgZ3MnIGlzIHRoaXMgaW5zdGFuY2Ugb2YKKyMgR2l0OjpTVk4sIGBwYXRoJyB0aGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBwcm9wZXJ0aWVzCisjIGBwcm9wcycgd2VyZSBmb3VuZC4gIFRoZSBgcGF0aCcgd2lsbCBiZSByZWxhdGl2ZSB0byBwb2ludCBvZiBjaGVja291dCwKKyMgdGhhdCBpcywgaWYgdXJsOi8vcmVwby90cnVuayBpcyB0aGUgY3VycmVudCBHaXQgYnJhbmNoLCBhbmQgdGhhdAorIyBkaXJlY3RvcnkgY29udGFpbnMgYSBzdWItZGlyZWN0b3J5IGBkJywgU1VCIHdpbGwgYmUgaW52b2tlZCB3aXRoIGAvZC8nCisjIGFzIGBwYXRoJyAobm90ZSB0aGUgdHJhaWxpbmcgYC8nKS4KK3N1YiBwcm9wX3dhbGsgeworCW15ICgkc2VsZiwgJHBhdGgsICRyZXYsICRzdWIpID0gQF87CisKKwkkcGF0aCA9fiBzI14vIyM7CisJbXkgKCRkaXJlbnQsIHVuZGVmLCAkcHJvcHMpID0gJHNlbGYtPnJhLT5nZXRfZGlyKCRwYXRoLCAkcmV2KTsKKwkkcGF0aCA9fiBzI14vKiMvI2c7CisJbXkgJHAgPSAkcGF0aDsKKwkjIFN0cmlwIHRoZSBpcnJlbGV2YW50IHBhcnQgb2YgdGhlIHBhdGguCisJJHAgPX4gcyNeLytcUUB7WyRzZWxmLT5wYXRoXX1cRSgvfCQpIy8jOworCSMgRW5zdXJlIHRoZSBwYXRoIGlzIHRlcm1pbmF0ZWQgYnkgYSBgLycuCisJJHAgPX4gcyMvKiQjLyM7CisKKwkjIFRoZSBwcm9wZXJ0aWVzIGNvbnRhaW4gYWxsIHRoZSBpbnRlcm5hbCBTVk4gc3R1ZmYgbm9ib2R5CisJIyAodXN1YWxseSkgY2FyZXMgYWJvdXQuCisJbXkgJGludGVyZXN0aW5nX3Byb3BzID0gMDsKKwlmb3JlYWNoIChrZXlzICV7JHByb3BzfSkgeworCQkjIElmIGl0IGRvZXNuJ3Qgc3RhcnQgd2l0aCBgc3ZuOicsIGl0IG11c3QgYmUgYQorCQkjIHVzZXItZGVmaW5lZCBwcm9wZXJ0eS4KKwkJKyskaW50ZXJlc3RpbmdfcHJvcHMgYW5kIG5leHQgaWYgJF8gIX4gL15zdm46LzsKKwkJIyBGSVhNRTogRnJhZ2lsZSwgaWYgU1ZOIGFkZHMgbmV3IHB1YmxpYyBwcm9wZXJ0aWVzLAorCQkjIHRoaXMgbmVlZHMgdG8gYmUgdXBkYXRlZC4KKwkJKyskaW50ZXJlc3RpbmdfcHJvcHMgaWYgL15zdm46KD86aWdub3JlfGtleXdvcmRzfGV4ZWN1dGFibGUKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfGVvbC1zdHlsZXxtaW1lLXR5cGUKKwkJCQkJCSB8ZXh0ZXJuYWxzfG5lZWRzLWxvY2spJC94OworCX0KKwkmJHN1Yigkc2VsZiwgJHAsICRwcm9wcykgaWYgJGludGVyZXN0aW5nX3Byb3BzOworCisJZm9yZWFjaCAoc29ydCBrZXlzICUkZGlyZW50KSB7CisJCW5leHQgaWYgJGRpcmVudC0+eyRffS0+e2tpbmR9ICE9ICRTVk46Ok5vZGU6OmRpcjsKKwkJJHNlbGYtPnByb3Bfd2Fsaygkc2VsZi0+cGF0aCAuICRwIC4gJF8sICRyZXYsICRzdWIpOworCX0KK30KKworc3ViIGxhc3RfcmV2IHsgKCRfWzBdLT5sYXN0X3Jldl9jb21taXQpWzBdIH0KK3N1YiBsYXN0X2NvbW1pdCB7ICgkX1swXS0+bGFzdF9yZXZfY29tbWl0KVsxXSB9CisKKyMgcmV0dXJucyB0aGUgbmV3ZXN0IFNWTiByZXZpc2lvbiBudW1iZXIgYW5kIG5ld2VzdCBjb21taXQgU0hBMQorc3ViIGxhc3RfcmV2X2NvbW1pdCB7CisJbXkgKCRzZWxmKSA9IEBfOworCWlmIChkZWZpbmVkICRzZWxmLT57bGFzdF9yZXZ9ICYmIGRlZmluZWQgJHNlbGYtPntsYXN0X2NvbW1pdH0pIHsKKwkJcmV0dXJuICgkc2VsZi0+e2xhc3RfcmV2fSwgJHNlbGYtPntsYXN0X2NvbW1pdH0pOworCX0KKwlteSAkYyA9IDo6dmVyaWZ5X3JlZigkc2VsZi0+cmVmbmFtZS4nXjAnKTsKKwlpZiAoJGMgJiYgISRzZWxmLT51c2Vfc3ZtX3Byb3BzICYmICEkc2VsZi0+bm9fbWV0YWRhdGEpIHsKKwkJbXkgJHJldiA9ICg6OmNtdF9tZXRhZGF0YSgkYykpWzFdOworCQlpZiAoZGVmaW5lZCAkcmV2KSB7CisJCQkoJHNlbGYtPntsYXN0X3Jldn0sICRzZWxmLT57bGFzdF9jb21taXR9KSA9ICgkcmV2LCAkYyk7CisJCQlyZXR1cm4gKCRyZXYsICRjKTsKKwkJfQorCX0KKwlteSAkbWFwX3BhdGggPSAkc2VsZi0+bWFwX3BhdGg7CisJdW5sZXNzICgtZSAkbWFwX3BhdGgpIHsKKwkJKCRzZWxmLT57bGFzdF9yZXZ9LCAkc2VsZi0+e2xhc3RfY29tbWl0fSkgPSAodW5kZWYsIHVuZGVmKTsKKwkJcmV0dXJuICh1bmRlZiwgdW5kZWYpOworCX0KKwlteSAoJHJldiwgJGNvbW1pdCkgPSAkc2VsZi0+cmV2X21hcF9tYXgoMSk7CisJKCRzZWxmLT57bGFzdF9yZXZ9LCAkc2VsZi0+e2xhc3RfY29tbWl0fSkgPSAoJHJldiwgJGNvbW1pdCk7CisJcmV0dXJuICgkcmV2LCAkY29tbWl0KTsKK30KKworc3ViIGdldF9mZXRjaF9yYW5nZSB7CisJbXkgKCRzZWxmLCAkbWluLCAkbWF4KSA9IEBfOworCSRtYXggfHw9ICRzZWxmLT5yYS0+Z2V0X2xhdGVzdF9yZXZudW07CisJJG1pbiB8fD0gJHNlbGYtPnJldl9tYXBfbWF4OworCSgrKyRtaW4sICRtYXgpOworfQorCitzdWIgdG1wX2NvbmZpZyB7CisJbXkgKEBhcmdzKSA9IEBfOworCW15ICRvbGRfZGVmX2NvbmZpZyA9ICIkRU5We0dJVF9ESVJ9L3N2bi9jb25maWciOworCW15ICRjb25maWcgPSAiJEVOVntHSVRfRElSfS9zdm4vLm1ldGFkYXRhIjsKKwlpZiAoISAtZiAkY29uZmlnICYmIC1mICRvbGRfZGVmX2NvbmZpZykgeworCQlyZW5hbWUgJG9sZF9kZWZfY29uZmlnLCAkY29uZmlnIG9yCisJCSAgICAgICBkaWUgIkZhaWxlZCByZW5hbWUgJG9sZF9kZWZfY29uZmlnID0+ICRjb25maWc6ICQhXG4iOworCX0KKwlteSAkb2xkX2NvbmZpZyA9ICRFTlZ7R0lUX0NPTkZJR307CisJJEVOVntHSVRfQ09ORklHfSA9ICRjb25maWc7CisJJEAgPSB1bmRlZjsKKwlteSBAcmV0ID0gZXZhbCB7CisJCXVubGVzcyAoLWYgJGNvbmZpZykgeworCQkJbWtmaWxlKCRjb25maWcpOworCQkJb3BlbiBteSAkZmgsICc+JywgJGNvbmZpZyBvcgorCQkJICAgIGRpZSAiQ2FuJ3Qgb3BlbiAkY29uZmlnOiAkIVxuIjsKKwkJCXByaW50ICRmaCAiOyBUaGlzIGZpbGUgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5ICIsCisJCQkgICAgICAgICAgImdpdC1zdm5cbiIgb3IgZGllCisJCQkJICAiQ291bGRuJ3Qgd3JpdGUgdG8gJGNvbmZpZzogJCFcbiI7CisJCQlwcmludCAkZmggIjsgWW91IHNob3VsZCBub3QgaGF2ZSB0byBlZGl0IGl0XG4iIG9yCisJCQkgICAgICBkaWUgIkNvdWxkbid0IHdyaXRlIHRvICRjb25maWc6ICQhXG4iOworCQkJY2xvc2UgJGZoIG9yIGRpZSAiQ291bGRuJ3QgY2xvc2UgJGNvbmZpZzogJCFcbiI7CisJCX0KKwkJY29tbWFuZCgnY29uZmlnJywgQGFyZ3MpOworCX07CisJbXkgJGVyciA9ICRAOworCWlmIChkZWZpbmVkICRvbGRfY29uZmlnKSB7CisJCSRFTlZ7R0lUX0NPTkZJR30gPSAkb2xkX2NvbmZpZzsKKwl9IGVsc2UgeworCQlkZWxldGUgJEVOVntHSVRfQ09ORklHfTsKKwl9CisJZGllICRlcnIgaWYgJGVycjsKKwl3YW50YXJyYXkgPyBAcmV0IDogJHJldFswXTsKK30KKworc3ViIHRtcF9pbmRleF9kbyB7CisJbXkgKCRzZWxmLCAkc3ViKSA9IEBfOworCW15ICRvbGRfaW5kZXggPSAkRU5We0dJVF9JTkRFWF9GSUxFfTsKKwkkRU5We0dJVF9JTkRFWF9GSUxFfSA9ICRzZWxmLT57aW5kZXh9OworCSRAID0gdW5kZWY7CisJbXkgQHJldCA9IGV2YWwgeworCQlteSAoJGRpciwgJGJhc2UpID0gKCRzZWxmLT57aW5kZXh9ID1+IG0jXiguKj8pLz8oW14vXSspJCMpOworCQlta3BhdGgoWyRkaXJdKSB1bmxlc3MgLWQgJGRpcjsKKwkJJiRzdWI7CisJfTsKKwlteSAkZXJyID0gJEA7CisJaWYgKGRlZmluZWQgJG9sZF9pbmRleCkgeworCQkkRU5We0dJVF9JTkRFWF9GSUxFfSA9ICRvbGRfaW5kZXg7CisJfSBlbHNlIHsKKwkJZGVsZXRlICRFTlZ7R0lUX0lOREVYX0ZJTEV9OworCX0KKwlkaWUgJGVyciBpZiAkZXJyOworCXdhbnRhcnJheSA/IEByZXQgOiAkcmV0WzBdOworfQorCitzdWIgYXNzZXJ0X2luZGV4X2NsZWFuIHsKKwlteSAoJHNlbGYsICR0cmVlaXNoKSA9IEBfOworCisJJHNlbGYtPnRtcF9pbmRleF9kbyhzdWIgeworCQljb21tYW5kX25vaXN5KCdyZWFkLXRyZWUnLCAkdHJlZWlzaCkgdW5sZXNzIC1lICRzZWxmLT57aW5kZXh9OworCQlteSAkeCA9IGNvbW1hbmRfb25lbGluZSgnd3JpdGUtdHJlZScpOworCQlteSAoJHkpID0gKGNvbW1hbmQocXcvY2F0LWZpbGUgY29tbWl0LywgJHRyZWVpc2gpID1+CisJCSAgICAgICAgICAgL150cmVlICgkOjpzaGExKS9tbyk7CisJCXJldHVybiBpZiAkeSBlcSAkeDsKKworCQl3YXJuICJJbmRleCBtaXNtYXRjaDogJHkgIT0gJHhcbnJlcmVhZGluZyAkdHJlZWlzaFxuIjsKKwkJdW5saW5rICRzZWxmLT57aW5kZXh9IG9yIGRpZSAidW5saW5rICRzZWxmLT57aW5kZXh9OiAkIVxuIjsKKwkJY29tbWFuZF9ub2lzeSgncmVhZC10cmVlJywgJHRyZWVpc2gpOworCQkkeCA9IGNvbW1hbmRfb25lbGluZSgnd3JpdGUtdHJlZScpOworCQlpZiAoJHkgbmUgJHgpIHsKKwkJCWZhdGFsICJ0cmVlcyAoJHRyZWVpc2gpICR5ICE9ICR4XG4iLAorCQkJICAgICAgIlNvbWV0aGluZyBpcyBzZXJpb3VzbHkgd3JvbmcuLi4iOworCQl9CisJfSk7Cit9CisKK3N1YiBnZXRfY29tbWl0X3BhcmVudHMgeworCW15ICgkc2VsZiwgJGxvZ19lbnRyeSkgPSBAXzsKKwlteSAoJXNlZW4sIEByZXQsIEB0bXApOworCSMgbGVnYWN5IHN1cHBvcnQgZm9yICdzZXQtdHJlZSc7IHRoaXMgaXMgb25seSB1c2VkIGJ5IHNldF90cmVlX2NiOgorCWlmIChteSAkaXAgPSAkc2VsZi0+e2luamVjdF9wYXJlbnRzfSkgeworCQlpZiAobXkgJGNvbW1pdCA9IGRlbGV0ZSAkaXAtPnskbG9nX2VudHJ5LT57cmV2aXNpb259fSkgeworCQkJcHVzaCBAdG1wLCAkY29tbWl0OworCQl9CisJfQorCWlmIChteSAkY3VyID0gOjp2ZXJpZnlfcmVmKCRzZWxmLT5yZWZuYW1lLideMCcpKSB7CisJCXB1c2ggQHRtcCwgJGN1cjsKKwl9CisJaWYgKG15ICRpcGQgPSAkc2VsZi0+e2luamVjdF9wYXJlbnRzX2Rjb21taXR9KSB7CisJCWlmIChteSAkY29tbWl0ID0gZGVsZXRlICRpcGQtPnskbG9nX2VudHJ5LT57cmV2aXNpb259fSkgeworCQkJcHVzaCBAdG1wLCBAJGNvbW1pdDsKKwkJfQorCX0KKwlwdXNoIEB0bXAsICRfIGZvcmVhY2ggKEB7JGxvZ19lbnRyeS0+e3BhcmVudHN9fSwgQHRtcCk7CisJd2hpbGUgKG15ICRwID0gc2hpZnQgQHRtcCkgeworCQluZXh0IGlmICRzZWVueyRwfTsKKwkJJHNlZW57JHB9ID0gMTsKKwkJcHVzaCBAcmV0LCAkcDsKKwl9CisJQHJldDsKK30KKworc3ViIHJld3JpdGVfcm9vdCB7CisJbXkgKCRzZWxmKSA9IEBfOworCXJldHVybiAkc2VsZi0+ey1yZXdyaXRlX3Jvb3R9IGlmIGV4aXN0cyAkc2VsZi0+ey1yZXdyaXRlX3Jvb3R9OworCW15ICRrID0gInN2bi1yZW1vdGUuJHNlbGYtPntyZXBvX2lkfS5yZXdyaXRlUm9vdCI7CisJbXkgJHJ3ciA9IGV2YWwgeyBjb21tYW5kX29uZWxpbmUocXcvY29uZmlnIC0tZ2V0LywgJGspIH07CisJaWYgKCRyd3IpIHsKKwkJJHJ3ciA9fiBzIy8rJCMjOworCQlpZiAoJHJ3ciAhfiBtI15bYS16XCtdKzovLyMpIHsKKwkJCWRpZSAiJHJ3ciBpcyBub3QgYSB2YWxpZCBVUkwgKGtleTogJGspXG4iOworCQl9CisJfQorCSRzZWxmLT57LXJld3JpdGVfcm9vdH0gPSAkcndyOworfQorCitzdWIgcmV3cml0ZV91dWlkIHsKKwlteSAoJHNlbGYpID0gQF87CisJcmV0dXJuICRzZWxmLT57LXJld3JpdGVfdXVpZH0gaWYgZXhpc3RzICRzZWxmLT57LXJld3JpdGVfdXVpZH07CisJbXkgJGsgPSAic3ZuLXJlbW90ZS4kc2VsZi0+e3JlcG9faWR9LnJld3JpdGVVVUlEIjsKKwlteSAkcndpZCA9IGV2YWwgeyBjb21tYW5kX29uZWxpbmUocXcvY29uZmlnIC0tZ2V0LywgJGspIH07CisJaWYgKCRyd2lkKSB7CisJCSRyd2lkID1+IHMjLyskIyM7CisJCWlmICgkcndpZCAhfiBtI15bYS1mMC05XXs4fS0oPzpbYS1mMC05XXs0fS0pezN9W2EtZjAtOV17MTJ9JCMpIHsKKwkJCWRpZSAiJHJ3aWQgaXMgbm90IGEgdmFsaWQgVVVJRCAoa2V5OiAkaylcbiI7CisJCX0KKwl9CisJJHNlbGYtPnstcmV3cml0ZV91dWlkfSA9ICRyd2lkOworfQorCitzdWIgbWV0YWRhdGFfdXJsIHsKKwlteSAoJHNlbGYpID0gQF87CisJbXkgJHVybCA9ICRzZWxmLT5yZXdyaXRlX3Jvb3QgfHwgJHNlbGYtPnVybDsKKwlyZXR1cm4gY2Fub25pY2FsaXplX3VybCggYWRkX3BhdGhfdG9fdXJsKCAkdXJsLCAkc2VsZi0+cGF0aCApICk7Cit9CisKK3N1YiBmdWxsX3VybCB7CisJbXkgKCRzZWxmKSA9IEBfOworCXJldHVybiBjYW5vbmljYWxpemVfdXJsKCBhZGRfcGF0aF90b191cmwoICRzZWxmLT51cmwsICRzZWxmLT5wYXRoICkgKTsKK30KKworc3ViIGZ1bGxfcHVzaHVybCB7CisJbXkgKCRzZWxmKSA9IEBfOworCWlmICgkc2VsZi0+e3B1c2h1cmx9KSB7CisJCXJldHVybiBjYW5vbmljYWxpemVfdXJsKCBhZGRfcGF0aF90b191cmwoICRzZWxmLT57cHVzaHVybH0sICRzZWxmLT5wYXRoICkgKTsKKwl9IGVsc2UgeworCQlyZXR1cm4gJHNlbGYtPmZ1bGxfdXJsOworCX0KK30KKworc3ViIHNldF9jb21taXRfaGVhZGVyX2VudiB7CisJbXkgKCRsb2dfZW50cnkpID0gQF87CisJbXkgJWVudjsKKwlmb3JlYWNoIG15ICRuZWQgKHF3L05BTUUgRU1BSUwgREFURS8pIHsKKwkJZm9yZWFjaCBteSAkYWMgKHF3L0FVVEhPUiBDT01NSVRURVIvKSB7CisJCQkkZW52eyJHSVRfJHthY31fJHtuZWR9In0gPSAkRU5WeyJHSVRfJHthY31fJHtuZWR9In07CisJCX0KKwl9CisKKwkkRU5We0dJVF9BVVRIT1JfTkFNRX0gPSAkbG9nX2VudHJ5LT57bmFtZX07CisJJEVOVntHSVRfQVVUSE9SX0VNQUlMfSA9ICRsb2dfZW50cnktPntlbWFpbH07CisJJEVOVntHSVRfQVVUSE9SX0RBVEV9ID0gJEVOVntHSVRfQ09NTUlUVEVSX0RBVEV9ID0gJGxvZ19lbnRyeS0+e2RhdGV9OworCisJJEVOVntHSVRfQ09NTUlUVEVSX05BTUV9ID0gKGRlZmluZWQgJGxvZ19lbnRyeS0+e2NvbW1pdF9uYW1lfSkKKwkJCQkJCT8gJGxvZ19lbnRyeS0+e2NvbW1pdF9uYW1lfQorCQkJCQkJOiAkbG9nX2VudHJ5LT57bmFtZX07CisJJEVOVntHSVRfQ09NTUlUVEVSX0VNQUlMfSA9IChkZWZpbmVkICRsb2dfZW50cnktPntjb21taXRfZW1haWx9KQorCQkJCQkJPyAkbG9nX2VudHJ5LT57Y29tbWl0X2VtYWlsfQorCQkJCQkJOiAkbG9nX2VudHJ5LT57ZW1haWx9OworCVwlZW52OworfQorCitzdWIgcmVzdG9yZV9jb21taXRfaGVhZGVyX2VudiB7CisJbXkgKCRlbnYpID0gQF87CisJZm9yZWFjaCBteSAkbmVkIChxdy9OQU1FIEVNQUlMIERBVEUvKSB7CisJCWZvcmVhY2ggbXkgJGFjIChxdy9BVVRIT1IgQ09NTUlUVEVSLykgeworCQkJbXkgJGsgPSAiR0lUXyR7YWN9XyR7bmVkfSI7CisJCQlpZiAoZGVmaW5lZCAkZW52LT57JGt9KSB7CisJCQkJJEVOVnska30gPSAkZW52LT57JGt9OworCQkJfSBlbHNlIHsKKwkJCQlkZWxldGUgJEVOVnska307CisJCQl9CisJCX0KKwl9Cit9CisKK3N1YiBnYyB7CisJY29tbWFuZF9ub2lzeSgnZ2MnLCAnLS1hdXRvJyk7Cit9OworCitzdWIgZG9fZ2l0X2NvbW1pdCB7CisJbXkgKCRzZWxmLCAkbG9nX2VudHJ5KSA9IEBfOworCW15ICRsciA9ICRzZWxmLT5sYXN0X3JldjsKKwlpZiAoZGVmaW5lZCAkbHIgJiYgJGxyID49ICRsb2dfZW50cnktPntyZXZpc2lvbn0pIHsKKwkJZGllICJMYXN0IGZldGNoZWQgcmV2aXNpb24gb2YgIiwgJHNlbGYtPnJlZm5hbWUsCisJCSAgICAiIHdhcyByJGxyLCBidXQgd2UgYXJlIGFib3V0IHRvIGZldGNoOiAiLAorCQkgICAgInIkbG9nX2VudHJ5LT57cmV2aXNpb259IVxuIjsKKwl9CisJaWYgKG15ICRjID0gJHNlbGYtPnJldl9tYXBfZ2V0KCRsb2dfZW50cnktPntyZXZpc2lvbn0pKSB7CisJCWNyb2FrICIkbG9nX2VudHJ5LT57cmV2aXNpb259ID0gJGMgYWxyZWFkeSBleGlzdHMhICIsCisJCSAgICAgICJXaHkgYXJlIHdlIHJlZmV0Y2hpbmcgaXQ/XG4iOworCX0KKwlteSAkb2xkX2VudiA9IHNldF9jb21taXRfaGVhZGVyX2VudigkbG9nX2VudHJ5KTsKKwlteSAkdHJlZSA9ICRsb2dfZW50cnktPnt0cmVlfTsKKwlpZiAoIWRlZmluZWQgJHRyZWUpIHsKKwkJJHRyZWUgPSAkc2VsZi0+dG1wX2luZGV4X2RvKHN1YiB7CisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kX29uZWxpbmUoJ3dyaXRlLXRyZWUnKSB9KTsKKwl9CisJZGllICJUcmVlIGlzIG5vdCBhIHZhbGlkIHNoYTE6ICR0cmVlXG4iIGlmICR0cmVlICF+IC9eJDo6c2hhMSQvbzsKKworCW15IEBleGVjID0gKCdnaXQnLCAnY29tbWl0LXRyZWUnLCAkdHJlZSk7CisJZm9yZWFjaCAoJHNlbGYtPmdldF9jb21taXRfcGFyZW50cygkbG9nX2VudHJ5KSkgeworCQlwdXNoIEBleGVjLCAnLXAnLCAkXzsKKwl9CisJZGVmaW5lZChteSAkcGlkID0gb3BlbjMobXkgJG1zZ19maCwgbXkgJG91dF9maCwgJz4mU1RERVJSJywgQGV4ZWMpKQorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgY3JvYWsgJCE7CisJYmlubW9kZSAkbXNnX2ZoOworCisJIyB3ZSBhbHdheXMgZ2V0IFVURi04IGZyb20gU1ZOLCBidXQgd2UgbWF5IHdhbnQgb3VyIGNvbW1pdHMgaW4KKwkjIGEgZGlmZmVyZW50IGVuY29kaW5nLgorCWlmIChteSAkZW5jID0gR2l0Ojpjb25maWcoJ2kxOG4uY29tbWl0ZW5jb2RpbmcnKSkgeworCQlyZXF1aXJlIEVuY29kZTsKKwkJRW5jb2RlOjpmcm9tX3RvKCRsb2dfZW50cnktPntsb2d9LCAnVVRGLTgnLCAkZW5jKTsKKwl9CisJcHJpbnQgJG1zZ19maCAkbG9nX2VudHJ5LT57bG9nfSBvciBjcm9hayAkITsKKwlyZXN0b3JlX2NvbW1pdF9oZWFkZXJfZW52KCRvbGRfZW52KTsKKwl1bmxlc3MgKCRzZWxmLT5ub19tZXRhZGF0YSkgeworCQlwcmludCAkbXNnX2ZoICJcbmdpdC1zdm4taWQ6ICRsb2dfZW50cnktPnttZXRhZGF0YX1cbiIKKwkJICAgICAgICAgICAgICBvciBjcm9hayAkITsKKwl9CisJJG1zZ19maC0+Zmx1c2ggPT0gMCBvciBjcm9hayAkITsKKwljbG9zZSAkbXNnX2ZoIG9yIGNyb2FrICQhOworCWNob21wKG15ICRjb21taXQgPSBkbyB7IGxvY2FsICQvOyA8JG91dF9maD4gfSk7CisJY2xvc2UgJG91dF9maCBvciBjcm9hayAkITsKKwl3YWl0cGlkICRwaWQsIDA7CisJY3JvYWsgJD8gaWYgJD87CisJaWYgKCRjb21taXQgIX4gL14kOjpzaGExJC9vKSB7CisJCWRpZSAiRmFpbGVkIHRvIGNvbW1pdCwgaW52YWxpZCBzaGExOiAkY29tbWl0XG4iOworCX0KKworCSRzZWxmLT5yZXZfbWFwX3NldCgkbG9nX2VudHJ5LT57cmV2aXNpb259LCAkY29tbWl0LCAxKTsKKworCSRzZWxmLT57bGFzdF9yZXZ9ID0gJGxvZ19lbnRyeS0+e3JldmlzaW9ufTsKKwkkc2VsZi0+e2xhc3RfY29tbWl0fSA9ICRjb21taXQ7CisJcHJpbnQgInIkbG9nX2VudHJ5LT57cmV2aXNpb259IiB1bmxlc3MgJDo6X3EgPiAxOworCWlmIChkZWZpbmVkICRsb2dfZW50cnktPntzdm1fcmV2aXNpb259KSB7CisJCSBwcmludCAiIChcQCRsb2dfZW50cnktPntzdm1fcmV2aXNpb259KSIgdW5sZXNzICQ6Ol9xID4gMTsKKwkJICRzZWxmLT5yZXZfbWFwX3NldCgkbG9nX2VudHJ5LT57c3ZtX3JldmlzaW9ufSwgJGNvbW1pdCwKKwkJICAgICAgICAgICAgICAgICAgIDAsICRzZWxmLT5zdm1fdXVpZCk7CisJfQorCXByaW50ICIgPSAkY29tbWl0ICgkc2VsZi0+e3JlZl9pZH0pXG4iIHVubGVzcyAkOjpfcSA+IDE7CisJaWYgKC0tJF9nY19uciA9PSAwKSB7CisJCSRfZ2NfbnIgPSAkX2djX3BlcmlvZDsKKwkJZ2MoKTsKKwl9CisJcmV0dXJuICRjb21taXQ7Cit9CisKK3N1YiBtYXRjaF9wYXRocyB7CisJbXkgKCRzZWxmLCAkcGF0aHMsICRyKSA9IEBfOworCXJldHVybiAxIGlmICRzZWxmLT5wYXRoIGVxICcnOworCWlmIChteSAkcGF0aCA9ICRwYXRocy0+eyIvIi4kc2VsZi0+cGF0aH0pIHsKKwkJcmV0dXJuICgkcGF0aC0+e2FjdGlvbn0gZXEgJ0QnKSA/IDAgOiAxOworCX0KKwkkc2VsZi0+e3BhdGhfcmVnZXh9IHx8PSBxcnteL1xRQHtbJHNlbGYtPnBhdGhdfVxFL307CisJaWYgKGdyZXAgLyRzZWxmLT57cGF0aF9yZWdleH0vLCBrZXlzICUkcGF0aHMpIHsKKwkJcmV0dXJuIDE7CisJfQorCW15ICRjID0gJyc7CisJZm9yZWFjaCAoc3BsaXQgbSMvIywgJHNlbGYtPnBhdGgpIHsKKwkJJGMgLj0gIi8kXyI7CisJCW5leHQgdW5sZXNzICgkcGF0aHMtPnskY30gJiYKKwkJICAgICAgICAgICAgICgkcGF0aHMtPnskY30tPnthY3Rpb259ID1+IC9eW0FSXSQvKSk7CisJCWlmICgkc2VsZi0+cmEtPmNoZWNrX3BhdGgoJHNlbGYtPnBhdGgsICRyKSA9PQorCQkgICAgJFNWTjo6Tm9kZTo6ZGlyKSB7CisJCQlyZXR1cm4gMTsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKworc3ViIGZpbmRfcGFyZW50X2JyYW5jaCB7CisJbXkgKCRzZWxmLCAkcGF0aHMsICRyZXYpID0gQF87CisJcmV0dXJuIHVuZGVmIHVubGVzcyAkc2VsZi0+Zm9sbG93X3BhcmVudDsKKwl1bmxlc3MgKGRlZmluZWQgJHBhdGhzKSB7CisJCW15ICRlcnJfaGFuZGxlciA9ICRTVk46OkVycm9yOjpoYW5kbGVyOworCQkkU1ZOOjpFcnJvcjo6aGFuZGxlciA9IFwmR2l0OjpTVk46OlJhOjpza2lwX3Vua25vd25fcmV2czsKKwkJJHNlbGYtPnJhLT5nZXRfbG9nKFskc2VsZi0+cGF0aF0sICRyZXYsICRyZXYsIDAsIDEsIDEsCisJCQkJICAgc3ViIHsgJHBhdGhzID0gJF9bMF0gfSk7CisJCSRTVk46OkVycm9yOjpoYW5kbGVyID0gJGVycl9oYW5kbGVyOworCX0KKwlyZXR1cm4gdW5kZWYgdW5sZXNzIGRlZmluZWQgJHBhdGhzOworCisJIyBsb29rIGZvciBhIHBhcmVudCBmcm9tIGFub3RoZXIgYnJhbmNoOgorCW15IEBiX3BhdGhfY29tcG9uZW50cyA9IHNwbGl0IG0jLyMsICRzZWxmLT5wYXRoOworCW15IEBhX3BhdGhfY29tcG9uZW50czsKKwlteSAkaTsKKwl3aGlsZSAoQGJfcGF0aF9jb21wb25lbnRzKSB7CisJCSRpID0gJHBhdGhzLT57Jy8nLmpvaW4oJy8nLCBAYl9wYXRoX2NvbXBvbmVudHMpfTsKKwkJbGFzdCBpZiAkaSAmJiBkZWZpbmVkICRpLT57Y29weWZyb21fcGF0aH07CisJCXVuc2hpZnQoQGFfcGF0aF9jb21wb25lbnRzLCBwb3AoQGJfcGF0aF9jb21wb25lbnRzKSk7CisJfQorCXJldHVybiB1bmRlZiB1bmxlc3MgZGVmaW5lZCAkaSAmJiBkZWZpbmVkICRpLT57Y29weWZyb21fcGF0aH07CisJbXkgJGJyYW5jaF9mcm9tID0gJGktPntjb3B5ZnJvbV9wYXRofTsKKwlpZiAoQGFfcGF0aF9jb21wb25lbnRzKSB7CisJCXByaW50IFNUREVSUiAiYnJhbmNoX2Zyb206ICRicmFuY2hfZnJvbSA9PiAiOworCQkkYnJhbmNoX2Zyb20gLj0gJy8nLmpvaW4oJy8nLCBAYV9wYXRoX2NvbXBvbmVudHMpOworCQlwcmludCBTVERFUlIgJGJyYW5jaF9mcm9tLCAiXG4iOworCX0KKwlteSAkciA9ICRpLT57Y29weWZyb21fcmV2fTsKKwlteSAkcmVwb3Nfcm9vdCA9ICRzZWxmLT5yYS0+e3JlcG9zX3Jvb3R9OworCW15ICR1cmwgPSAkc2VsZi0+cmEtPnVybDsKKwlteSAkbmV3X3VybCA9IGNhbm9uaWNhbGl6ZV91cmwoIGFkZF9wYXRoX3RvX3VybCggJHVybCwgJGJyYW5jaF9mcm9tICkgKTsKKwlwcmludCBTVERFUlIgICJGb3VuZCBwb3NzaWJsZSBicmFuY2ggcG9pbnQ6ICIsCisJICAgICAgICAgICAgICAiJG5ld191cmwgPT4gIiwgJHNlbGYtPmZ1bGxfdXJsLCAiLCAkclxuIgorCSAgICAgICAgICAgICAgdW5sZXNzICQ6Ol9xID4gMTsKKwkkYnJhbmNoX2Zyb20gPX4gcyNeLyMjOworCW15ICRncyA9ICRzZWxmLT5vdGhlcl9ncygkbmV3X3VybCwgJHVybCwKKwkJICAgICAgICAgICAgICAgICAkYnJhbmNoX2Zyb20sICRyLCAkc2VsZi0+e3JlZl9pZH0pOworCW15ICgkcjAsICRwYXJlbnQpID0gJGdzLT5maW5kX3Jldl9iZWZvcmUoJHIsIDEpOworCXsKKwkJbXkgKCRiYXNlLCAkaGVhZCk7CisJCWlmICghZGVmaW5lZCAkcjAgfHwgIWRlZmluZWQgJHBhcmVudCkgeworCQkJKCRiYXNlLCAkaGVhZCkgPSBwYXJzZV9yZXZpc2lvbl9hcmd1bWVudCgwLCAkcik7CisJCX0gZWxzZSB7CisJCQlpZiAoJHIwIDwgJHIpIHsKKwkJCQkkZ3MtPnJhLT5nZXRfbG9nKFskZ3MtPnBhdGhdLCAkcjAgKyAxLCAkciwgMSwKKwkJCQkJMCwgMSwgc3ViIHsgJGJhc2UgPSAkX1sxXSAtIDEgfSk7CisJCQl9CisJCX0KKwkJaWYgKGRlZmluZWQgJGJhc2UgJiYgJGJhc2UgPD0gJHIpIHsKKwkJCSRncy0+ZmV0Y2goJGJhc2UsICRyKTsKKwkJfQorCQkoJHIwLCAkcGFyZW50KSA9ICRncy0+ZmluZF9yZXZfYmVmb3JlKCRyLCAxKTsKKwl9CisJaWYgKGRlZmluZWQgJHIwICYmIGRlZmluZWQgJHBhcmVudCkgeworCQlwcmludCBTVERFUlIgIkZvdW5kIGJyYW5jaCBwYXJlbnQ6ICgkc2VsZi0+e3JlZl9pZH0pICRwYXJlbnRcbiIKKwkJICAgICAgICAgICAgIHVubGVzcyAkOjpfcSA+IDE7CisJCW15ICRlZDsKKwkJaWYgKCRzZWxmLT5yYS0+Y2FuX2RvX3N3aXRjaCkgeworCQkJJHNlbGYtPmFzc2VydF9pbmRleF9jbGVhbigkcGFyZW50KTsKKwkJCXByaW50IFNUREVSUiAiRm9sbG93aW5nIHBhcmVudCB3aXRoIGRvX3N3aXRjaFxuIgorCQkJICAgICAgICAgICAgIHVubGVzcyAkOjpfcSA+IDE7CisJCQkjIGRvX3N3aXRjaCB3b3JrcyB3aXRoIHN2bi90cnVuayA+PSByMjIzMTIsIGJ1dCB0aGF0CisJCQkjIGlzIG5vdCBpbmNsdWRlZCB3aXRoIFNWTiAxLjQuMyAodGhlIGxhdGVzdCB2ZXJzaW9uCisJCQkjIGF0IHRoZSBtb21lbnQpLCBzbyB3ZSBjYW4ndCByZWx5IG9uIGl0CisJCQkkc2VsZi0+e2xhc3RfcmV2fSA9ICRyMDsKKwkJCSRzZWxmLT57bGFzdF9jb21taXR9ID0gJHBhcmVudDsKKwkJCSRlZCA9IEdpdDo6U1ZOOjpGZXRjaGVyLT5uZXcoJHNlbGYsICRncy0+cGF0aCk7CisJCQkkZ3MtPnJhLT5nc19kb19zd2l0Y2goJHIwLCAkcmV2LCAkZ3MsCisJCQkJCSAgICAgICRzZWxmLT5mdWxsX3VybCwgJGVkKQorCQkJICBvciBkaWUgIlNWTiBjb25uZWN0aW9uIGZhaWxlZCBzb21ld2hlcmUuLi5cbiI7CisJCX0gZWxzaWYgKCRzZWxmLT5yYS0+dHJlZXNfbWF0Y2goJG5ld191cmwsICRyMCwKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5mdWxsX3VybCwgJHJldikpIHsKKwkJCXByaW50IFNUREVSUiAiVHJlZXMgbWF0Y2g6XG4iLAorCQkJICAgICAgICAgICAgICIgICRuZXdfdXJsXEAkcjBcbiIsCisJCQkgICAgICAgICAgICAgIiAgJHtcJHNlbGYtPmZ1bGxfdXJsfVxAJHJldlxuIiwKKwkJCSAgICAgICAgICAgICAiRm9sbG93aW5nIHBhcmVudCB3aXRoIG5vIGNoYW5nZXNcbiIKKwkJCSAgICAgICAgICAgICB1bmxlc3MgJDo6X3EgPiAxOworCQkJJHNlbGYtPnRtcF9pbmRleF9kbyhzdWIgeworCQkJICAgIGNvbW1hbmRfbm9pc3koJ3JlYWQtdHJlZScsICRwYXJlbnQpOworCQkJfSk7CisJCQkkc2VsZi0+e2xhc3RfY29tbWl0fSA9ICRwYXJlbnQ7CisJCX0gZWxzZSB7CisJCQlwcmludCBTVERFUlIgIkZvbGxvd2luZyBwYXJlbnQgd2l0aCBkb191cGRhdGVcbiIKKwkJCSAgICAgICAgICAgICB1bmxlc3MgJDo6X3EgPiAxOworCQkJJGVkID0gR2l0OjpTVk46OkZldGNoZXItPm5ldygkc2VsZik7CisJCQkkc2VsZi0+cmEtPmdzX2RvX3VwZGF0ZSgkcmV2LCAkcmV2LCAkc2VsZiwgJGVkKQorCQkJICBvciBkaWUgIlNWTiBjb25uZWN0aW9uIGZhaWxlZCBzb21ld2hlcmUuLi5cbiI7CisJCX0KKwkJcHJpbnQgU1RERVJSICJTdWNjZXNzZnVsbHkgZm9sbG93ZWQgcGFyZW50XG4iIHVubGVzcyAkOjpfcSA+IDE7CisJCXJldHVybiAkc2VsZi0+bWFrZV9sb2dfZW50cnkoJHJldiwgWyRwYXJlbnRdLCAkZWQpOworCX0KKwlyZXR1cm4gdW5kZWY7Cit9CisKK3N1YiBkb19mZXRjaCB7CisJbXkgKCRzZWxmLCAkcGF0aHMsICRyZXYpID0gQF87CisJbXkgJGVkOworCW15ICgkbGFzdF9yZXYsIEBwYXJlbnRzKTsKKwlpZiAobXkgJGxjID0gJHNlbGYtPmxhc3RfY29tbWl0KSB7CisJCSMgd2UgY2FuIGhhdmUgYSBicmFuY2ggdGhhdCB3YXMgZGVsZXRlZCwgdGhlbiByZS1hZGRlZAorCQkjIHVuZGVyIHRoZSBzYW1lIG5hbWUgYnV0IGNvcGllZCBmcm9tIGFub3RoZXIgcGF0aCwgaW4KKwkJIyB3aGljaCBjYXNlIHdlJ2xsIGhhdmUgbXVsdGlwbGUgcGFyZW50cyAod2UgZG9uJ3QKKwkJIyB3YW50IHRvIGJyZWFrIHRoZSBvcmlnaW5hbCByZWYsIG5vciBsb3NlIGNvcHlwYXRoIGluZm8pOgorCQlpZiAobXkgJGxvZ19lbnRyeSA9ICRzZWxmLT5maW5kX3BhcmVudF9icmFuY2goJHBhdGhzLCAkcmV2KSkgeworCQkJcHVzaCBAeyRsb2dfZW50cnktPntwYXJlbnRzfX0sICRsYzsKKwkJCXJldHVybiAkbG9nX2VudHJ5OworCQl9CisJCSRlZCA9IEdpdDo6U1ZOOjpGZXRjaGVyLT5uZXcoJHNlbGYpOworCQkkbGFzdF9yZXYgPSAkc2VsZi0+e2xhc3RfcmV2fTsKKwkJJGVkLT57Y30gPSAkbGM7CisJCUBwYXJlbnRzID0gKCRsYyk7CisJfSBlbHNlIHsKKwkJJGxhc3RfcmV2ID0gJHJldjsKKwkJaWYgKG15ICRsb2dfZW50cnkgPSAkc2VsZi0+ZmluZF9wYXJlbnRfYnJhbmNoKCRwYXRocywgJHJldikpIHsKKwkJCXJldHVybiAkbG9nX2VudHJ5OworCQl9CisJCSRlZCA9IEdpdDo6U1ZOOjpGZXRjaGVyLT5uZXcoJHNlbGYpOworCX0KKwl1bmxlc3MgKCRzZWxmLT5yYS0+Z3NfZG9fdXBkYXRlKCRsYXN0X3JldiwgJHJldiwgJHNlbGYsICRlZCkpIHsKKwkJZGllICJTVk4gY29ubmVjdGlvbiBmYWlsZWQgc29tZXdoZXJlLi4uXG4iOworCX0KKwkkc2VsZi0+bWFrZV9sb2dfZW50cnkoJHJldiwgXEBwYXJlbnRzLCAkZWQpOworfQorCitzdWIgbWtlbXB0eWRpcnMgeworCW15ICgkc2VsZiwgJHIpID0gQF87CisKKwlzdWIgc2NhbiB7CisJCW15ICgkciwgJGVtcHR5X2RpcnMsICRsaW5lKSA9IEBfOworCQlpZiAoZGVmaW5lZCAkciAmJiAkbGluZSA9fiAvXnIoXGQrKSQvKSB7CisJCQlyZXR1cm4gMCBpZiAkMSA+ICRyOworCQl9IGVsc2lmICgkbGluZSA9fiAvXiAgXCtlbXB0eV9kaXI6ICguKykkLykgeworCQkJJGVtcHR5X2RpcnMtPnskMX0gPSAxOworCQl9IGVsc2lmICgkbGluZSA9fiAvXiAgXC1lbXB0eV9kaXI6ICguKykkLykgeworCQkJbXkgQGQgPSBncmVwIHttW15cUSQxXEUoL3wkKV19IChrZXlzICUkZW1wdHlfZGlycyk7CisJCQlkZWxldGUgQCRlbXB0eV9kaXJze0BkfTsKKwkJfQorCQkxOyAjIGNvbnRpbnVlCisJfTsKKworCW15ICVlbXB0eV9kaXJzID0gKCk7CisJbXkgJGd6X2ZpbGUgPSAiJHNlbGYtPntkaXJ9L3VuaGFuZGxlZC5sb2cuZ3oiOworCWlmICgtZiAkZ3pfZmlsZSkgeworCQlpZiAoIWNhbl9jb21wcmVzcygpKSB7CisJCQl3YXJuICJDb21wcmVzczo6WmxpYiBjb3VsZCBub3QgYmUgZm91bmQ7ICIsCisJCQkgICAgICJlbXB0eSBkaXJlY3RvcmllcyBpbiAkZ3pfZmlsZSB3aWxsIG5vdCBiZSByZWFkXG4iOworCQl9IGVsc2UgeworCQkJbXkgJGd6ID0gQ29tcHJlc3M6OlpsaWI6Omd6b3BlbigkZ3pfZmlsZSwgInJiIikgb3IKKwkJCQlkaWUgIlVuYWJsZSB0byBvcGVuICRnel9maWxlOiAkIVxuIjsKKwkJCW15ICRsaW5lOworCQkJd2hpbGUgKCRnei0+Z3pyZWFkbGluZSgkbGluZSkgPiAwKSB7CisJCQkJc2NhbigkciwgXCVlbXB0eV9kaXJzLCAkbGluZSkgb3IgbGFzdDsKKwkJCX0KKwkJCSRnei0+Z3pjbG9zZTsKKwkJfQorCX0KKworCWlmIChvcGVuIG15ICRmaCwgJzwnLCAiJHNlbGYtPntkaXJ9L3VuaGFuZGxlZC5sb2ciKSB7CisJCWJpbm1vZGUgJGZoIG9yIGNyb2FrICJiaW5tb2RlOiAkISI7CisJCXdoaWxlICg8JGZoPikgeworCQkJc2NhbigkciwgXCVlbXB0eV9kaXJzLCAkXykgb3IgbGFzdDsKKwkJfQorCQljbG9zZSAkZmg7CisJfQorCisJbXkgJHN0cmlwID0gcXIvXEFcUUB7WyRzZWxmLT5wYXRoXX1cRSg/OlwvfCQpLzsKKwlmb3JlYWNoIG15ICRkIChzb3J0IGtleXMgJWVtcHR5X2RpcnMpIHsKKwkJJGQgPSB1cmlfZGVjb2RlKCRkKTsKKwkJJGQgPX4gcy8kc3RyaXAvLzsKKwkJbmV4dCB1bmxlc3MgbGVuZ3RoKCRkKTsKKwkJbmV4dCBpZiAtZCAkZDsKKwkJaWYgKC1lICRkKSB7CisJCQl3YXJuICIkZCBleGlzdHMgYnV0IGlzIG5vdCBhIGRpcmVjdG9yeVxuIjsKKwkJfSBlbHNlIHsKKwkJCXByaW50ICJjcmVhdGluZyBlbXB0eSBkaXJlY3Rvcnk6ICRkXG4iOworCQkJbWtwYXRoKFskZF0pOworCQl9CisJfQorfQorCitzdWIgZ2V0X3VudHJhY2tlZCB7CisJbXkgKCRzZWxmLCAkZWQpID0gQF87CisJbXkgQG91dDsKKwlteSAkaCA9ICRlZC0+e2VtcHR5fTsKKwlmb3JlYWNoIChzb3J0IGtleXMgJSRoKSB7CisJCW15ICRhY3QgPSAkaC0+eyRffSA/ICcrZW1wdHlfZGlyJyA6ICctZW1wdHlfZGlyJzsKKwkJcHVzaCBAb3V0LCAiICAkYWN0OiAiIC4gdXJpX2VuY29kZSgkXyk7CisJCXdhcm4gIlc6ICRhY3Q6ICRfXG4iOworCX0KKwlmb3JlYWNoIG15ICR0IChxdy9kaXJfcHJvcCBmaWxlX3Byb3AvKSB7CisJCSRoID0gJGVkLT57JHR9IG9yIG5leHQ7CisJCWZvcmVhY2ggbXkgJHBhdGggKHNvcnQga2V5cyAlJGgpIHsKKwkJCW15ICRwcGF0aCA9ICRwYXRoIGVxICcnID8gJy4nIDogJHBhdGg7CisJCQlmb3JlYWNoIG15ICRwcm9wIChzb3J0IGtleXMgJXskaC0+eyRwYXRofX0pIHsKKwkJCQluZXh0IGlmICRTS0lQX1BST1B7JHByb3B9OworCQkJCW15ICR2ID0gJGgtPnskcGF0aH0tPnskcHJvcH07CisJCQkJbXkgJHRfcHBhdGhfcHJvcCA9ICIkdDogIiAuCisJCQkJICAgICAgICAgICAgICAgICAgICB1cmlfZW5jb2RlKCRwcGF0aCkgLiAnICcgLgorCQkJCSAgICAgICAgICAgICAgICAgICAgdXJpX2VuY29kZSgkcHJvcCk7CisJCQkJaWYgKGRlZmluZWQgJHYpIHsKKwkJCQkJcHVzaCBAb3V0LCAiICArJHRfcHBhdGhfcHJvcCAiIC4KKwkJCQkJICAgICAgICAgICB1cmlfZW5jb2RlKCR2KTsKKwkJCQl9IGVsc2UgeworCQkJCQlwdXNoIEBvdXQsICIgIC0kdF9wcGF0aF9wcm9wIjsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisJZm9yZWFjaCBteSAkdCAocXcvYWJzZW50X2ZpbGUgYWJzZW50X2RpcmVjdG9yeS8pIHsKKwkJJGggPSAkZWQtPnskdH0gb3IgbmV4dDsKKwkJZm9yZWFjaCBteSAkcGFyZW50IChzb3J0IGtleXMgJSRoKSB7CisJCQlmb3JlYWNoIG15ICRwYXRoIChzb3J0IEB7JGgtPnskcGFyZW50fX0pIHsKKwkJCQlwdXNoIEBvdXQsICIgICR0OiAiIC4KKwkJCQkgICAgICAgICAgIHVyaV9lbmNvZGUoIiRwYXJlbnQvJHBhdGgiKTsKKwkJCQl3YXJuICJXOiAkdDogJHBhcmVudC8kcGF0aCAiLAorCQkJCSAgICAgIkluc3VmZmljaWVudCBwZXJtaXNzaW9ucz9cbiI7CisJCQl9CisJCX0KKwl9CisJXEBvdXQ7Cit9CisKKyMgcGFyc2Vfc3ZuX2RhdGUoREFURSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgR2l2ZW4gYSBkYXRlIChpbiBVVEMpIGZyb20gU3VidmVyc2lvbiwgcmV0dXJuIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQKKyMgIjxUWiBPZmZzZXQ+IDxsb2NhbCBkYXRlL3RpbWU+IiB0aGF0IEdpdCB3aWxsIHVzZS4KKyMKKyMgQnkgZGVmYXVsdCB0aGUgcGFyc2VkIGRhdGUgd2lsbCBiZSBpbiBVVEM7IGlmICRHaXQ6OlNWTjo6X2xvY2FsdGltZQorIyBpcyB0cnVlIHdlJ2xsIGNvbnZlcnQgaXQgdG8gdGhlIGxvY2FsIHRpbWV6b25lIGluc3RlYWQuCitzdWIgcGFyc2Vfc3ZuX2RhdGUgeworCW15ICRkYXRlID0gc2hpZnQgfHwgcmV0dXJuICcrMDAwMCAxOTcwLTAxLTAxIDAwOjAwOjAwJzsKKwlteSAoJFksJG0sJGQsJEgsJE0sJFMpID0gKCRkYXRlID1+IC9eKFxkezR9KVwtKFxkXGQpXC0oXGRcZClUCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxkXGQpXDooXGRcZClcOihcZFxkKVwuXGQqWiQveCkgb3IKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9hayAiVW5hYmxlIHRvIHBhcnNlIGRhdGU6ICRkYXRlXG4iOworCW15ICRwYXJzZWRfZGF0ZTsgICAgIyBTZXQgbmV4dC4KKworCWlmICgkR2l0OjpTVk46Ol9sb2NhbHRpbWUpIHsKKwkJIyBUcmFuc2xhdGUgdGhlIFN1YnZlcnNpb24gZGF0ZXRpbWUgdG8gYW4gZXBvY2ggdGltZS4KKwkJIyBCZWdpbiBieSBzd2l0Y2hpbmcgb3Vyc2VsdmVzIHRvICRkYXRlJ3MgdGltZXpvbmUsIFVUQy4KKwkJbXkgJG9sZF9lbnZfVFogPSAkRU5We1RafTsKKwkJJEVOVntUWn0gPSAnVVRDJzsKKworCQlteSAkZXBvY2hfaW5fVVRDID0KKwkJICAgIFBPU0lYOjpzdHJmdGltZSgnJXMnLCAkUywgJE0sICRILCAkZCwgJG0gLSAxLCAkWSAtIDE5MDApOworCisJCSMgRGV0ZXJtaW5lIG91ciBsb2NhbCB0aW1lem9uZSAoaW5jbHVkaW5nIERTVCkgYXQgdGhlCisJCSMgdGltZSBvZiAkZXBvY2hfaW5fVVRDLiAgJEdpdDo6U1ZOOjpMb2c6OlRaIHN0b3JlZCB0aGUKKwkJIyB2YWx1ZSBvZiBUWiwgaWYgYW55LCBhdCB0aGUgdGltZSB3ZSB3ZXJlIHJ1bi4KKwkJaWYgKGRlZmluZWQgJEdpdDo6U1ZOOjpMb2c6OlRaKSB7CisJCQkkRU5We1RafSA9ICRHaXQ6OlNWTjo6TG9nOjpUWjsKKwkJfSBlbHNlIHsKKwkJCWRlbGV0ZSAkRU5We1RafTsKKwkJfQorCisJCW15ICRvdXJfVFogPSBnZXRfdHpfb2Zmc2V0KCk7CisKKwkJIyBUaGlzIGNvbnZlcnRzICRlcG9jaF9pbl9VVEMgaW50byBvdXIgbG9jYWwgdGltZXpvbmUuCisJCW15ICgkc2VjLCAkbWluLCAkaG91ciwgJG1kYXksICRtb24sICR5ZWFyLAorCQkgICAgJHdkYXksICR5ZGF5LCAkaXNkc3QpID0gbG9jYWx0aW1lKCRlcG9jaF9pbl9VVEMpOworCisJCSRwYXJzZWRfZGF0ZSA9IHNwcmludGYoJyVzICUwNGQtJTAyZC0lMDJkICUwMmQ6JTAyZDolMDJkJywKKwkJCQkgICAgICAgJG91cl9UWiwgJHllYXIgKyAxOTAwLCAkbW9uICsgMSwKKwkJCQkgICAgICAgJG1kYXksICRob3VyLCAkbWluLCAkc2VjKTsKKworCQkjIFJlc2V0IHVzIHRvIHRoZSB0aW1lem9uZSBpbiBlZmZlY3Qgd2hlbiB3ZSBlbnRlcmVkCisJCSMgdGhpcyByb3V0aW5lLgorCQlpZiAoZGVmaW5lZCAkb2xkX2Vudl9UWikgeworCQkJJEVOVntUWn0gPSAkb2xkX2Vudl9UWjsKKwkJfSBlbHNlIHsKKwkJCWRlbGV0ZSAkRU5We1RafTsKKwkJfQorCX0gZWxzZSB7CisJCSRwYXJzZWRfZGF0ZSA9ICIrMDAwMCAkWS0kbS0kZCAkSDokTTokUyI7CisJfQorCisJcmV0dXJuICRwYXJzZWRfZGF0ZTsKK30KKworc3ViIG90aGVyX2dzIHsKKwlteSAoJHNlbGYsICRuZXdfdXJsLCAkdXJsLAorCSAgICAkYnJhbmNoX2Zyb20sICRyLCAkb2xkX3JlZl9pZCkgPSBAXzsKKwlteSAkZ3MgPSBHaXQ6OlNWTi0+ZmluZF9ieV91cmwoJG5ld191cmwsICR1cmwsICRicmFuY2hfZnJvbSk7CisJdW5sZXNzICgkZ3MpIHsKKwkJbXkgJHJlZl9pZCA9ICRvbGRfcmVmX2lkOworCQkkcmVmX2lkID1+IHMvXEBcZCstKiQvLzsKKwkJJHJlZl9pZCAuPSAiXEAkciI7CisJCSMganVzdCBncm93IGEgdGFpbCBpZiB3ZSdyZSBub3QgdW5pcXVlIGVub3VnaCA6eAorCQkkcmVmX2lkIC49ICctJyB3aGlsZSBmaW5kX3JlZigkcmVmX2lkKTsKKwkJbXkgKCR1LCAkcCwgJHJlcG9faWQpID0gKCRuZXdfdXJsLCAnJywgJHJlZl9pZCk7CisJCWlmICgkdSA9fiBzI15cUSR1cmxcRSgvfCQpIyMpIHsKKwkJCSRwID0gJHU7CisJCQkkdSA9ICR1cmw7CisJCQkkcmVwb19pZCA9ICRzZWxmLT57cmVwb19pZH07CisJCX0KKwkJd2hpbGUgKDEpIHsKKwkJCSMgSXQgaXMgcG9zc2libGUgdG8gdGFnIHR3byBkaWZmZXJlbnQgc3ViZGlyZWN0b3JpZXMgYXQKKwkJCSMgdGhlIHNhbWUgcmV2aXNpb24uICBJZiB0aGUgdXJsIGZvciBhbiBleGlzdGluZyByZWYKKwkJCSMgZG9lcyBub3QgbWF0Y2gsIHdlIG11c3QgZWl0aGVyIGZpbmQgYSByZWYgd2l0aCBhCisJCQkjIG1hdGNoaW5nIHVybCBvciBjcmVhdGUgYSBuZXcgcmVmIGJ5IGdyb3dpbmcgYSB0YWlsLgorCQkJJGdzID0gR2l0OjpTVk4tPmluaXQoJHUsICRwLCAkcmVwb19pZCwgJHJlZl9pZCwgMSk7CisJCQlteSAodW5kZWYsICRtYXhfY29tbWl0KSA9ICRncy0+cmV2X21hcF9tYXgoMSk7CisJCQlsYXN0IGlmICghJG1heF9jb21taXQpOworCQkJbXkgKCR1cmwpID0gOjpjbXRfbWV0YWRhdGEoJG1heF9jb21taXQpOworCQkJbGFzdCBpZiAoJHVybCBlcSAkZ3MtPm1ldGFkYXRhX3VybCk7CisJCQkkcmVmX2lkIC49ICctJzsKKwkJfQorCQlwcmludCBTVERFUlIgIkluaXRpYWxpemluZyBwYXJlbnQ6ICRyZWZfaWRcbiIgdW5sZXNzICQ6Ol9xID4gMTsKKwl9CisJJGdzCit9CisKK3N1YiBjYWxsX2F1dGhvcnNfcHJvZyB7CisJbXkgKCRvcmlnX2F1dGhvcikgPSBAXzsKKwkkb3JpZ19hdXRob3IgPSBjb21tYW5kX29uZWxpbmUoJ3Jldi1wYXJzZScsICctLXNxLXF1b3RlJywgJG9yaWdfYXV0aG9yKTsKKwlteSAkYXV0aG9yID0gYCQ6Ol9hdXRob3JzX3Byb2cgJG9yaWdfYXV0aG9yYDsKKwlpZiAoJD8gIT0gMCkgeworCQlkaWUgIiQ6Ol9hdXRob3JzX3Byb2cgZmFpbGVkIHdpdGggZXhpdCBjb2RlICQ/XG4iCisJfQorCWlmICgkYXV0aG9yID1+IC9eXHMqKC4rPylccyo8KC4qKT5ccyokLykgeworCQlteSAoJG5hbWUsICRlbWFpbCkgPSAoJDEsICQyKTsKKwkJJGVtYWlsID0gdW5kZWYgaWYgbGVuZ3RoICQyID09IDA7CisJCXJldHVybiBbJG5hbWUsICRlbWFpbF07CisJfSBlbHNlIHsKKwkJZGllICJBdXRob3I6ICRvcmlnX2F1dGhvcjogJDo6X2F1dGhvcnNfcHJvZyByZXR1cm5lZCAiCisJCQkuICJpbnZhbGlkIGF1dGhvciBmb3JtYXQ6ICRhdXRob3JcbiI7CisJfQorfQorCitzdWIgY2hlY2tfYXV0aG9yIHsKKwlteSAoJGF1dGhvcikgPSBAXzsKKwlpZiAoIWRlZmluZWQgJGF1dGhvciB8fCBsZW5ndGggJGF1dGhvciA9PSAwKSB7CisJCSRhdXRob3IgPSAnKG5vIGF1dGhvciknOworCX0KKwlpZiAoIWRlZmluZWQgJDo6dXNlcnN7JGF1dGhvcn0pIHsKKwkJaWYgKGRlZmluZWQgJDo6X2F1dGhvcnNfcHJvZykgeworCQkJJDo6dXNlcnN7JGF1dGhvcn0gPSBjYWxsX2F1dGhvcnNfcHJvZygkYXV0aG9yKTsKKwkJfSBlbHNpZiAoZGVmaW5lZCAkOjpfYXV0aG9ycykgeworCQkJZGllICJBdXRob3I6ICRhdXRob3Igbm90IGRlZmluZWQgaW4gJDo6X2F1dGhvcnMgZmlsZVxuIjsKKwkJfQorCX0KKwkkYXV0aG9yOworfQorCitzdWIgZmluZF9leHRyYV9zdmtfcGFyZW50cyB7CisJbXkgKCRzZWxmLCAkZWQsICR0aWNrZXRzLCAkcGFyZW50cykgPSBAXzsKKwkjIGFoYSEgIHN2azptZXJnZSBwcm9wZXJ0eSBjaGFuZ2VkLi4uCisJbXkgQHRpY2tldHMgPSBzcGxpdCAiXG4iLCAkdGlja2V0czsKKwlteSBAa25vd25fcGFyZW50czsKKwlmb3IgbXkgJHRpY2tldCAoIEB0aWNrZXRzICkgeworCQlteSAoJHV1aWQsICRwYXRoLCAkcmV2KSA9IHNwbGl0IC86LywgJHRpY2tldDsKKwkJaWYgKCAkdXVpZCBlcSAkc2VsZi0+cmFfdXVpZCApIHsKKwkJCW15ICRyZXBvc19yb290ID0gJHNlbGYtPnVybDsKKwkJCW15ICRicmFuY2hfZnJvbSA9ICRwYXRoOworCQkJJGJyYW5jaF9mcm9tID1+IHN7Xi99e307CisJCQlteSAkZ3MgPSAkc2VsZi0+b3RoZXJfZ3MoYWRkX3BhdGhfdG9fdXJsKCAkcmVwb3Nfcm9vdCwgJGJyYW5jaF9mcm9tICksCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgJHJlcG9zX3Jvb3QsCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgJGJyYW5jaF9mcm9tLAorCQkJICAgICAgICAgICAgICAgICAgICAgICAgICRyZXYsCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPntyZWZfaWR9KTsKKwkJCWlmICggbXkgJGNvbW1pdCA9ICRncy0+cmV2X21hcF9nZXQoJHJldiwgJHV1aWQpICkgeworCQkJCSMgd2FoZXkhICB3ZSBmb3VuZCBpdCwgYnV0IGl0IG1pZ2h0IGJlCisJCQkJIyBhbiBvbGQgb25lICghKQorCQkJCXB1c2ggQGtub3duX3BhcmVudHMsIFsgJHJldiwgJGNvbW1pdCBdOworCQkJfQorCQl9CisJfQorCSMgT3JkZXJpbmcgbWF0dGVyczsgaGlnaGVzdC1udW1iZXJlZCBjb21taXQgbWVyZ2UgdGlja2V0cworCSMgZmlyc3QsIGFzIHRoZXkgbWF5IGFjY291bnQgZm9yIGxhdGVyIG1lcmdlIHRpY2tldCBhZGRpdGlvbnMKKwkjIG9yIGNoYW5nZXMuCisJQGtub3duX3BhcmVudHMgPSBtYXAgeyRfLT5bMV19IHNvcnQgeyRiLT5bMF0gPD0+ICRhLT5bMF19IEBrbm93bl9wYXJlbnRzOworCWZvciBteSAkcGFyZW50ICggQGtub3duX3BhcmVudHMgKSB7CisJCW15IEBjbWQgPSAoJ3Jldi1saXN0JywgJHBhcmVudCwgbWFwIHsgIl4kXyIgfSBAJHBhcmVudHMgKTsKKwkJbXkgKCRtc2dfZmgsICRjdHgpID0gY29tbWFuZF9vdXRwdXRfcGlwZShAY21kKTsKKwkJbXkgJG5ldzsKKwkJd2hpbGUgKCA8JG1zZ19maD4gKSB7CisJCQkkbmV3PTE7bGFzdDsKKwkJfQorCQljb21tYW5kX2Nsb3NlX3BpcGUoJG1zZ19maCwgJGN0eCk7CisJCWlmICggJG5ldyApIHsKKwkJCXByaW50IFNUREVSUgorCQkJICAgICJGb3VuZCBtZXJnZSBwYXJlbnQgKHN2azptZXJnZSB0aWNrZXQpOiAkcGFyZW50XG4iOworCQkJcHVzaCBAJHBhcmVudHMsICRwYXJlbnQ7CisJCX0KKwl9Cit9CisKK3N1YiBsb29rdXBfc3ZuX21lcmdlIHsKKwlteSAkdXVpZCA9IHNoaWZ0OworCW15ICR1cmwgPSBzaGlmdDsKKwlteSAkbWVyZ2UgPSBzaGlmdDsKKworCW15ICgkc291cmNlLCAkcmV2cykgPSBzcGxpdCAiOiIsICRtZXJnZTsKKwlteSAkcGF0aCA9ICRzb3VyY2U7CisJJHBhdGggPX4gc3teL317fTsKKwlteSAkZ3MgPSBHaXQ6OlNWTi0+ZmluZF9ieV91cmwoJHVybC4kc291cmNlLCAkdXJsLCAkcGF0aCk7CisJaWYgKCAhJGdzICkgeworCQl3YXJuICJDb3VsZG4ndCBmaW5kIHJldm1hcCBmb3IgJHVybCRzb3VyY2VcbiI7CisJCXJldHVybjsKKwl9CisJbXkgQHJhbmdlcyA9IHNwbGl0ICIsIiwgJHJldnM7CisJbXkgKCR0aXAsICR0aXBfY29tbWl0KTsKKwlteSBAbWVyZ2VkX2NvbW1pdF9yYW5nZXM7CisJIyBmaW5kIHRoZSB0aXAKKwlmb3IgbXkgJHJhbmdlICggQHJhbmdlcyApIHsKKwkJaWYgKCRyYW5nZSA9fiAvWypdJC8pIHsKKwkJCXdhcm4gIlc6IElnbm9yaW5nIHBhcnRpYWwgbWVyZ2UgaW4gc3ZuOm1lcmdlaW5mbyAiCisJCQkJLiJkaXJwcm9wOiAkc291cmNlOiRyYW5nZVxuIjsKKwkJCW5leHQ7CisJCX0KKwkJbXkgKCRib3R0b20sICR0b3ApID0gc3BsaXQgIi0iLCAkcmFuZ2U7CisJCSR0b3AgfHw9ICRib3R0b207CisJCW15ICRib3R0b21fY29tbWl0ID0gJGdzLT5maW5kX3Jldl9hZnRlciggJGJvdHRvbSwgMSwgJHRvcCApOworCQlteSAkdG9wX2NvbW1pdCA9ICRncy0+ZmluZF9yZXZfYmVmb3JlKCAkdG9wLCAxLCAkYm90dG9tICk7CisKKwkJdW5sZXNzICgkdG9wX2NvbW1pdCBhbmQgJGJvdHRvbV9jb21taXQpIHsKKwkJCXdhcm4gIlc6IHVua25vd24gcGF0aC9yZXYgaW4gc3ZuOm1lcmdlaW5mbyAiCisJCQkJLiJkaXJwcm9wOiAkc291cmNlOiRyYW5nZVxuIjsKKwkJCW5leHQ7CisJCX0KKworCQlpZiAoc2NhbGFyKGNvbW1hbmQoJ3Jldi1wYXJzZScsICIkYm90dG9tX2NvbW1pdF5AIikpKSB7CisJCQlwdXNoIEBtZXJnZWRfY29tbWl0X3JhbmdlcywKKwkJCSAgICAgIiRib3R0b21fY29tbWl0Xi4uJHRvcF9jb21taXQiOworCQl9IGVsc2UgeworCQkJcHVzaCBAbWVyZ2VkX2NvbW1pdF9yYW5nZXMsICIkdG9wX2NvbW1pdCI7CisJCX0KKworCQlpZiAoICFkZWZpbmVkICR0aXAgb3IgJHRvcCA+ICR0aXAgKSB7CisJCQkkdGlwID0gJHRvcDsKKwkJCSR0aXBfY29tbWl0ID0gJHRvcF9jb21taXQ7CisJCX0KKwl9CisJcmV0dXJuICgkdGlwX2NvbW1pdCwgQG1lcmdlZF9jb21taXRfcmFuZ2VzKTsKK30KKworc3ViIF9yZXZfbGlzdCB7CisJbXkgKCRtc2dfZmgsICRjdHgpID0gY29tbWFuZF9vdXRwdXRfcGlwZSgKKwkJInJldi1saXN0IiwgQF8sCisJICAgICAgICk7CisJbXkgQHJ2OworCXdoaWxlICggPCRtc2dfZmg+ICkgeworCQljaG9tcDsKKwkJcHVzaCBAcnYsICRfOworCX0KKwljb21tYW5kX2Nsb3NlX3BpcGUoJG1zZ19maCwgJGN0eCk7CisJQHJ2OworfQorCitzdWIgY2hlY2tfY2hlcnJ5X3BpY2sgeworCW15ICRiYXNlID0gc2hpZnQ7CisJbXkgJHRpcCA9IHNoaWZ0OworCW15ICRwYXJlbnRzID0gc2hpZnQ7CisJbXkgQHJhbmdlcyA9IEBfOworCW15ICVjb21taXRzID0gbWFwIHsgJF8gPT4gMSB9CisJCV9yZXZfbGlzdCgiLS1uby1tZXJnZXMiLCAkdGlwLCAiLS1ub3QiLCAkYmFzZSwgQCRwYXJlbnRzLCAiLS0iKTsKKwlmb3IgbXkgJHJhbmdlICggQHJhbmdlcyApIHsKKwkJZGVsZXRlIEBjb21taXRze19yZXZfbGlzdCgkcmFuZ2UsICItLSIpfTsKKwl9CisJZm9yIG15ICRjb21taXQgKGtleXMgJWNvbW1pdHMpIHsKKwkJaWYgKGhhc19ub19jaGFuZ2VzKCRjb21taXQpKSB7CisJCQlkZWxldGUgJGNvbW1pdHN7JGNvbW1pdH07CisJCX0KKwl9CisJcmV0dXJuIChrZXlzICVjb21taXRzKTsKK30KKworc3ViIGhhc19ub19jaGFuZ2VzIHsKKwlteSAkY29tbWl0ID0gc2hpZnQ7CisKKwlteSBAcmV2cyA9IHNwbGl0IC8gLywgY29tbWFuZF9vbmVsaW5lKAorCQlxdyhyZXYtbGlzdCAtLXBhcmVudHMgLTEgLW0pLCAkY29tbWl0KTsKKworCSMgQ29tbWl0cyB3aXRoIG5vIHBhcmVudHMsIGUuZy4gdGhlIHN0YXJ0IG9mIGEgcGFydGlhbCBicmFuY2gsCisJIyBoYXZlIGNoYW5nZXMgYnkgZGVmaW5pdGlvbi4KKwlyZXR1cm4gMSBpZiAoQHJldnMgPCAyKTsKKworCSMgQ29tbWl0cyB3aXRoIG11bHRpcGxlIHBhcmVudHMsIGUuZyBhIG1lcmdlLCBoYXZlIG5vIGNoYW5nZXMKKwkjIGJ5IGRlZmluaXRpb24uCisJcmV0dXJuIDAgaWYgKEByZXZzID4gMik7CisKKwlyZXR1cm4gKGNvbW1hbmRfb25lbGluZSgicmV2LXBhcnNlIiwgIiRjb21taXRee3RyZWV9IikgZXEKKwkJY29tbWFuZF9vbmVsaW5lKCJyZXYtcGFyc2UiLCAiJGNvbW1pdH4xXnt0cmVlfSIpKTsKK30KKworc3ViIHRpZV9mb3JfcGVyc2lzdGVudF9tZW1vaXphdGlvbiB7CisJbXkgJGhhc2ggPSBzaGlmdDsKKwlteSAkcGF0aCA9IHNoaWZ0OworCisJaWYgKCRjYW5fdXNlX3lhbWwpIHsKKwkJdGllICUkaGFzaCA9PiAnR2l0OjpTVk46Ok1lbW9pemU6OllBTUwnLCAiJHBhdGgueWFtbCI7CisJfSBlbHNlIHsKKwkJdGllICUkaGFzaCA9PiAnTWVtb2l6ZTo6U3RvcmFibGUnLCAiJHBhdGguZGIiLCAnbnN0b3JlJzsKKwl9Cit9CisKKyMgVGhlIEdJVF9ESVIgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGFsd2F5cyBzZXQgdW50aWwgYWZ0ZXIgdGhlIGNvbW1hbmQKKyMgbGluZSBhcmd1bWVudHMgYXJlIHByb2Nlc3NlZCwgc28gd2UgY2FuJ3QgbWVtb2l6ZSBpbiBhIEJFR0lOIGJsb2NrLgoreworCW15ICRtZW1vaXplZCA9IDA7CisKKwlzdWIgbWVtb2l6ZV9zdm5fbWVyZ2VpbmZvX2Z1bmN0aW9ucyB7CisJCXJldHVybiBpZiAkbWVtb2l6ZWQ7CisJCSRtZW1vaXplZCA9IDE7CisKKwkJbXkgJGNhY2hlX3BhdGggPSAiJEVOVntHSVRfRElSfS9zdm4vLmNhY2hlcy8iOworCQlta3BhdGgoWyRjYWNoZV9wYXRoXSkgdW5sZXNzIC1kICRjYWNoZV9wYXRoOworCisJCW15ICVsb29rdXBfc3ZuX21lcmdlX2NhY2hlOworCQlteSAlY2hlY2tfY2hlcnJ5X3BpY2tfY2FjaGU7CisJCW15ICVoYXNfbm9fY2hhbmdlc19jYWNoZTsKKworCQl0aWVfZm9yX3BlcnNpc3RlbnRfbWVtb2l6YXRpb24oXCVsb29rdXBfc3ZuX21lcmdlX2NhY2hlLAorCQkgICAgIiRjYWNoZV9wYXRoL2xvb2t1cF9zdm5fbWVyZ2UiKTsKKwkJbWVtb2l6ZSAnbG9va3VwX3N2bl9tZXJnZScsCisJCQlTQ0FMQVJfQ0FDSEUgPT4gJ0ZBVUxUJywKKwkJCUxJU1RfQ0FDSEUgPT4gWydIQVNIJyA9PiBcJWxvb2t1cF9zdm5fbWVyZ2VfY2FjaGVdLAorCQk7CisKKwkJdGllX2Zvcl9wZXJzaXN0ZW50X21lbW9pemF0aW9uKFwlY2hlY2tfY2hlcnJ5X3BpY2tfY2FjaGUsCisJCSAgICAiJGNhY2hlX3BhdGgvY2hlY2tfY2hlcnJ5X3BpY2siKTsKKwkJbWVtb2l6ZSAnY2hlY2tfY2hlcnJ5X3BpY2snLAorCQkJU0NBTEFSX0NBQ0hFID0+ICdGQVVMVCcsCisJCQlMSVNUX0NBQ0hFID0+IFsnSEFTSCcgPT4gXCVjaGVja19jaGVycnlfcGlja19jYWNoZV0sCisJCTsKKworCQl0aWVfZm9yX3BlcnNpc3RlbnRfbWVtb2l6YXRpb24oXCVoYXNfbm9fY2hhbmdlc19jYWNoZSwKKwkJICAgICIkY2FjaGVfcGF0aC9oYXNfbm9fY2hhbmdlcyIpOworCQltZW1vaXplICdoYXNfbm9fY2hhbmdlcycsCisJCQlTQ0FMQVJfQ0FDSEUgPT4gWydIQVNIJyA9PiBcJWhhc19ub19jaGFuZ2VzX2NhY2hlXSwKKwkJCUxJU1RfQ0FDSEUgPT4gJ0ZBVUxUJywKKwkJOworCX0KKworCXN1YiB1bm1lbW9pemVfc3ZuX21lcmdlaW5mb19mdW5jdGlvbnMgeworCQlyZXR1cm4gaWYgbm90ICRtZW1vaXplZDsKKwkJJG1lbW9pemVkID0gMDsKKworCQlNZW1vaXplOjp1bm1lbW9pemUgJ2xvb2t1cF9zdm5fbWVyZ2UnOworCQlNZW1vaXplOjp1bm1lbW9pemUgJ2NoZWNrX2NoZXJyeV9waWNrJzsKKwkJTWVtb2l6ZTo6dW5tZW1vaXplICdoYXNfbm9fY2hhbmdlcyc7CisJfQorCisJc3ViIGNsZWFyX21lbW9pemVkX21lcmdlaW5mb19jYWNoZXMgeworCQlkaWUgIk9ubHkgY2FsbCB0aGlzIG1ldGhvZCBpbiBub24tbWVtb2l6ZWQgY29udGV4dCIgaWYgKCRtZW1vaXplZCk7CisKKwkJbXkgJGNhY2hlX3BhdGggPSAiJEVOVntHSVRfRElSfS9zdm4vLmNhY2hlcy8iOworCQlyZXR1cm4gdW5sZXNzIC1kICRjYWNoZV9wYXRoOworCisJCWZvciBteSAkY2FjaGVfZmlsZSAoKCIkY2FjaGVfcGF0aC9sb29rdXBfc3ZuX21lcmdlIiwKKwkJCQkgICAgICIkY2FjaGVfcGF0aC9jaGVja19jaGVycnlfcGljayIsCisJCQkJICAgICAiJGNhY2hlX3BhdGgvaGFzX25vX2NoYW5nZXMiKSkgeworCQkJZm9yIG15ICRzdWZmaXggKHF3KHlhbWwgZGIpKSB7CisJCQkJbXkgJGZpbGUgPSAiJGNhY2hlX2ZpbGUuJHN1ZmZpeCI7CisJCQkJbmV4dCB1bmxlc3MgLWUgJGZpbGU7CisJCQkJdW5saW5rKCRmaWxlKSBvciBkaWUgInVubGluaygkZmlsZSkgZmFpbGVkOiAkIVxuIjsKKwkJCX0KKwkJfQorCX0KKworCisJTWVtb2l6ZTo6bWVtb2l6ZSAnR2l0OjpTVk46OnJlcG9zX3Jvb3QnOworfQorCitFTkQgeworCSMgRm9yY2UgY2FjaGUgd3JpdGVvdXQgZXhwbGljaXRseSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yCisJIyBnbG9iYWwgZGVzdHJ1Y3Rpb24gdG8gYXZvaWQgc2VnZmF1bHQgaW4gU3RvcmFibGU6CisJIyBodHRwOi8vcnQuY3Bhbi5vcmcvUHVibGljL0J1Zy9EaXNwbGF5Lmh0bWw/aWQ9MzYwODcKKwl1bm1lbW9pemVfc3ZuX21lcmdlaW5mb19mdW5jdGlvbnMoKTsKK30KKworc3ViIHBhcmVudHNfZXhjbHVkZSB7CisJbXkgJHBhcmVudHMgPSBzaGlmdDsKKwlteSBAY29tbWl0cyA9IEBfOworCXJldHVybiB1bmxlc3MgQGNvbW1pdHM7CisKKwlteSBAZXhjbHVkZWQ7CisJbXkgJGV4Y2x1ZGVkOworCWRvIHsKKwkJbXkgQGNtZCA9ICgncmV2LWxpc3QnLCAiLTEiLCBAY29tbWl0cywgIi0tbm90IiwgQCRwYXJlbnRzICk7CisJCSRleGNsdWRlZCA9IGNvbW1hbmRfb25lbGluZShAY21kKTsKKwkJaWYgKCAkZXhjbHVkZWQgKSB7CisJCQlteSBAbmV3OworCQkJbXkgJGZvdW5kOworCQkJZm9yIG15ICRjb21taXQgKCBAY29tbWl0cyApIHsKKwkJCQlpZiAoICRjb21taXQgZXEgJGV4Y2x1ZGVkICkgeworCQkJCQlwdXNoIEBleGNsdWRlZCwgJGNvbW1pdDsKKwkJCQkJJGZvdW5kKys7CisJCQkJfQorCQkJCWVsc2UgeworCQkJCQlwdXNoIEBuZXcsICRjb21taXQ7CisJCQkJfQorCQkJfQorCQkJZGllICJzYXcgY29tbWl0ICckZXhjbHVkZWQnIGluIHJldi1saXN0IG91dHB1dCwgIgorCQkJCS4iYnV0IHdlIGRpZG4ndCBhc2sgZm9yIHRoYXQgY29tbWl0ICh3YW50ZWQ6IEBjb21taXRzIC0tbm90IEAkcGFyZW50cykiCisJCQkJCXVubGVzcyAkZm91bmQ7CisJCQlAY29tbWl0cyA9IEBuZXc7CisJCX0KKwl9CisJCXdoaWxlICgkZXhjbHVkZWQgYW5kIEBjb21taXRzKTsKKworCXJldHVybiBAZXhjbHVkZWQ7Cit9CisKKworIyBub3RlOiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiB0aGUgdmFyaW91cyBkaXJwcm9wcworIyBoYXZlIGFjdHVhbGx5IGNoYW5nZWQKK3N1YiBmaW5kX2V4dHJhX3N2bl9wYXJlbnRzIHsKKwlteSAoJHNlbGYsICRlZCwgJG1lcmdlaW5mbywgJHBhcmVudHMpID0gQF87CisJIyBhaGEhICBzdms6bWVyZ2UgcHJvcGVydHkgY2hhbmdlZC4uLgorCisJbWVtb2l6ZV9zdm5fbWVyZ2VpbmZvX2Z1bmN0aW9ucygpOworCisJIyBXZSBmaXJzdCBzZWFyY2ggZm9yIG1lcmdlZCB0aXBzIHdoaWNoIGFyZSBub3QgaW4gb3VyCisJIyBoaXN0b3J5LiAgVGhlbiwgd2UgZmlndXJlIG91dCB3aGljaCBnaXQgcmV2aXNpb25zIGFyZSBpbgorCSMgdGhhdCB0aXAsIGJ1dCBub3QgdGhpcyByZXZpc2lvbi4gIElmIGFsbCBvZiB0aG9zZSByZXZpc2lvbnMKKwkjIGFyZSBub3cgbWFya2VkIGFzIG1lcmdlLCB3ZSBjYW4gYWRkIHRoZSB0aXAgYXMgYSBwYXJlbnQuCisJbXkgQG1lcmdlcyA9IHNwbGl0ICJcbiIsICRtZXJnZWluZm87CisJbXkgQG1lcmdlX3RpcHM7CisJbXkgJHVybCA9ICRzZWxmLT51cmw7CisJbXkgJHV1aWQgPSAkc2VsZi0+cmFfdXVpZDsKKwlteSBAYWxsX3JhbmdlczsKKwlmb3IgbXkgJG1lcmdlICggQG1lcmdlcyApIHsKKwkJbXkgKCR0aXBfY29tbWl0LCBAcmFuZ2VzKSA9CisJCQlsb29rdXBfc3ZuX21lcmdlKCAkdXVpZCwgJHVybCwgJG1lcmdlICk7CisJCXVubGVzcyAoISR0aXBfY29tbWl0IG9yCisJCQkJZ3JlcCB7ICRfIGVxICR0aXBfY29tbWl0IH0gQCRwYXJlbnRzICkgeworCQkJcHVzaCBAbWVyZ2VfdGlwcywgJHRpcF9jb21taXQ7CisJCQlwdXNoIEBhbGxfcmFuZ2VzLCBAcmFuZ2VzOworCQl9IGVsc2UgeworCQkJcHVzaCBAbWVyZ2VfdGlwcywgdW5kZWY7CisJCX0KKwl9CisKKwlteSAlZXhjbHVkZWQgPSBtYXAgeyAkXyA9PiAxIH0KKwkJcGFyZW50c19leGNsdWRlKCRwYXJlbnRzLCBncmVwIHsgZGVmaW5lZCB9IEBtZXJnZV90aXBzKTsKKworCSMgY2hlY2sgbWVyZ2UgdGlwcyBmb3IgbmV3IHBhcmVudHMKKwlteSBAbmV3X3BhcmVudHM7CisJZm9yIG15ICRtZXJnZV90aXAgKCBAbWVyZ2VfdGlwcyApIHsKKwkJbXkgJHNwZWMgPSBzaGlmdCBAbWVyZ2VzOworCQluZXh0IHVubGVzcyAkbWVyZ2VfdGlwIGFuZCAkZXhjbHVkZWR7JG1lcmdlX3RpcH07CisKKwkJIyBjaGVjayBvdXQgJ25ldycgdGlwcworCQlteSAkbWVyZ2VfYmFzZTsKKwkJZXZhbCB7CisJCQkkbWVyZ2VfYmFzZSA9IGNvbW1hbmRfb25lbGluZSgKKwkJCQkibWVyZ2UtYmFzZSIsCisJCQkJQCRwYXJlbnRzLCAkbWVyZ2VfdGlwLAorCQkJKTsKKwkJfTsKKwkJaWYgKCRAKSB7CisJCQlkaWUgIkFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBtZXJnZS1iYXNlIgorCQkJCXVubGVzcyAkQC0+aXNhKCJHaXQ6OkVycm9yOjpDb21tYW5kIik7CisKKwkJCXdhcm4gIlc6IENhbm5vdCBmaW5kIGNvbW1vbiBhbmNlc3RvciBiZXR3ZWVuICIuCisJCQkgICAgICJAJHBhcmVudHMgYW5kICRtZXJnZV90aXAuIElnbm9yaW5nIG1lcmdlIGluZm8uXG4iOworCQkJbmV4dDsKKwkJfQorCisJCSMgZG91YmxlIGNoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIG1pc3Npbmcgbm9uLW1lcmdlIGNvbW1pdHMKKwkJbXkgKEBpbmNvbXBsZXRlKSA9IGNoZWNrX2NoZXJyeV9waWNrKAorCQkJJG1lcmdlX2Jhc2UsICRtZXJnZV90aXAsCisJCQkkcGFyZW50cywKKwkJCUBhbGxfcmFuZ2VzLAorCQkgICAgICAgKTsKKworCQlpZiAoIEBpbmNvbXBsZXRlICkgeworCQkJd2FybiAiVzpzdm4gY2hlcnJ5LXBpY2sgaWdub3JlZCAoJHNwZWMpIC0gbWlzc2luZyAiCisJCQkJLkBpbmNvbXBsZXRlLiIgY29tbWl0KHMpIChlZyAkaW5jb21wbGV0ZVswXSlcbiI7CisJCX0gZWxzZSB7CisJCQl3YXJuCisJCQkJIkZvdW5kIG1lcmdlIHBhcmVudCAoc3ZuOm1lcmdlaW5mbyBwcm9wKTogIiwKKwkJCQkJJG1lcmdlX3RpcCwgIlxuIjsKKwkJCXB1c2ggQG5ld19wYXJlbnRzLCAkbWVyZ2VfdGlwOworCQl9CisJfQorCisJIyBjYXRlciBmb3IgbWVyZ2VzIHdoaWNoIG1lcmdlIGNvbW1pdHMgZnJvbSBtdWx0aXBsZSBicmFuY2hlcworCWlmICggQG5ld19wYXJlbnRzID4gMSApIHsKKwkJZm9yICggbXkgJGkgPSAwOyAkaSA8PSAkI25ld19wYXJlbnRzOyAkaSsrICkgeworCQkJZm9yICggbXkgJGogPSAwOyAkaiA8PSAkI25ld19wYXJlbnRzOyAkaisrICkgeworCQkJCW5leHQgaWYgJGkgPT0gJGo7CisJCQkJbmV4dCB1bmxlc3MgJG5ld19wYXJlbnRzWyRpXTsKKwkJCQluZXh0IHVubGVzcyAkbmV3X3BhcmVudHNbJGpdOworCQkJCW15ICRyZXZzID0gY29tbWFuZF9vbmVsaW5lKAorCQkJCQkicmV2LWxpc3QiLCAiLTEiLAorCQkJCQkiJG5ld19wYXJlbnRzWyRpXS4uJG5ld19wYXJlbnRzWyRqXSIsCisJCQkJICAgICAgICk7CisJCQkJaWYgKCAhJHJldnMgKSB7CisJCQkJCXVuZGVmKCRuZXdfcGFyZW50c1skal0pOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKwlwdXNoIEAkcGFyZW50cywgZ3JlcCB7IGRlZmluZWQgfSBAbmV3X3BhcmVudHM7Cit9CisKK3N1YiBtYWtlX2xvZ19lbnRyeSB7CisJbXkgKCRzZWxmLCAkcmV2LCAkcGFyZW50cywgJGVkKSA9IEBfOworCW15ICR1bnRyYWNrZWQgPSAkc2VsZi0+Z2V0X3VudHJhY2tlZCgkZWQpOworCisJbXkgQHBhcmVudHMgPSBAJHBhcmVudHM7CisJbXkgJHBzID0gJGVkLT57cGF0aF9zdHJpcH0gfHwgIiI7CisJZm9yIG15ICRwYXRoICggZ3JlcCB7IG0vJHBzLyB9ICV7JGVkLT57ZGlyX3Byb3B9fSApIHsKKwkJbXkgJHByb3BzID0gJGVkLT57ZGlyX3Byb3B9eyRwYXRofTsKKwkJaWYgKCAkcHJvcHMtPnsic3ZrOm1lcmdlIn0gKSB7CisJCQkkc2VsZi0+ZmluZF9leHRyYV9zdmtfcGFyZW50cworCQkJCSgkZWQsICRwcm9wcy0+eyJzdms6bWVyZ2UifSwgXEBwYXJlbnRzKTsKKwkJfQorCQlpZiAoICRwcm9wcy0+eyJzdm46bWVyZ2VpbmZvIn0gKSB7CisJCQkkc2VsZi0+ZmluZF9leHRyYV9zdm5fcGFyZW50cworCQkJCSgkZWQsCisJCQkJICRwcm9wcy0+eyJzdm46bWVyZ2VpbmZvIn0sCisJCQkJIFxAcGFyZW50cyk7CisJCX0KKwl9CisKKwlvcGVuIG15ICR1biwgJz4+JywgIiRzZWxmLT57ZGlyfS91bmhhbmRsZWQubG9nIiBvciBjcm9hayAkITsKKwlwcmludCAkdW4gInIkcmV2XG4iIG9yIGNyb2FrICQhOworCXByaW50ICR1biAkXywgIlxuIiBmb3JlYWNoIEAkdW50cmFja2VkOworCW15ICVsb2dfZW50cnkgPSAoIHBhcmVudHMgPT4gXEBwYXJlbnRzLCByZXZpc2lvbiA9PiAkcmV2LAorCSAgICAgICAgICAgICAgICAgIGxvZyA9PiAnJyk7CisKKwlteSAkaGVhZHJldjsKKwlteSAkbG9nZ2VkID0gZGVsZXRlICRzZWxmLT57bG9nZ2VkX3Jldl9wcm9wc307CisJaWYgKCEkbG9nZ2VkIHx8ICRzZWxmLT57LXdhbnRfcmV2cHJvcHN9KSB7CisJCW15ICRycCA9ICRzZWxmLT5yYS0+cmV2X3Byb3BsaXN0KCRyZXYpOworCQlmb3JlYWNoIChzb3J0IGtleXMgJSRycCkgeworCQkJbXkgJHYgPSAkcnAtPnskX307CisJCQlpZiAoL15zdm46KGF1dGhvcnxkYXRlfGxvZykkLykgeworCQkJCSRsb2dfZW50cnl7JDF9ID0gJHY7CisJCQl9IGVsc2lmICgkXyBlcSAnc3ZtOmhlYWRyZXYnKSB7CisJCQkJJGhlYWRyZXYgPSAkdjsKKwkJCX0gZWxzZSB7CisJCQkJcHJpbnQgJHVuICIgIHJldl9wcm9wOiAiLCB1cmlfZW5jb2RlKCRfKSwgJyAnLAorCQkJCQkgIHVyaV9lbmNvZGUoJHYpLCAiXG4iOworCQkJfQorCQl9CisJfSBlbHNlIHsKKwkJbWFwIHsgJGxvZ19lbnRyeXskX30gPSAkbG9nZ2VkLT57JF99IH0ga2V5cyAlJGxvZ2dlZDsKKwl9CisJY2xvc2UgJHVuIG9yIGNyb2FrICQhOworCisJJGxvZ19lbnRyeXtkYXRlfSA9IHBhcnNlX3N2bl9kYXRlKCRsb2dfZW50cnl7ZGF0ZX0pOworCSRsb2dfZW50cnl7bG9nfSAuPSAiXG4iOworCW15ICRhdXRob3IgPSAkbG9nX2VudHJ5e2F1dGhvcn0gPSBjaGVja19hdXRob3IoJGxvZ19lbnRyeXthdXRob3J9KTsKKwlteSAoJG5hbWUsICRlbWFpbCkgPSBkZWZpbmVkICQ6OnVzZXJzeyRhdXRob3J9ID8gQHskOjp1c2Vyc3skYXV0aG9yfX0KKwkJCQkJCSAgICAgICA6ICgkYXV0aG9yLCB1bmRlZik7CisKKwlteSAoJGNvbW1pdF9uYW1lLCAkY29tbWl0X2VtYWlsKSA9ICgkbmFtZSwgJGVtYWlsKTsKKwlpZiAoJF91c2VfbG9nX2F1dGhvcikgeworCQlteSAkbmFtZV9maWVsZDsKKwkJaWYgKCRsb2dfZW50cnl7bG9nfSA9fiAvRnJvbTpccysoLipcUylccypcbi9pKSB7CisJCQkkbmFtZV9maWVsZCA9ICQxOworCQl9IGVsc2lmICgkbG9nX2VudHJ5e2xvZ30gPX4gL1NpZ25lZC1vZmYtYnk6XHMrKC4qXFMpXHMqXG4vaSkgeworCQkJJG5hbWVfZmllbGQgPSAkMTsKKwkJfQorCQlpZiAoIWRlZmluZWQgJG5hbWVfZmllbGQpIHsKKwkJCWlmICghZGVmaW5lZCAkZW1haWwpIHsKKwkJCQkkZW1haWwgPSAkbmFtZTsKKwkJCX0KKwkJfSBlbHNpZiAoJG5hbWVfZmllbGQgPX4gLyguKj8pXHMrPCguKik+LykgeworCQkJKCRuYW1lLCAkZW1haWwpID0gKCQxLCAkMik7CisJCX0gZWxzaWYgKCRuYW1lX2ZpZWxkID1+IC8oLiopQC8pIHsKKwkJCSgkbmFtZSwgJGVtYWlsKSA9ICgkMSwgJG5hbWVfZmllbGQpOworCQl9IGVsc2UgeworCQkJKCRuYW1lLCAkZW1haWwpID0gKCRuYW1lX2ZpZWxkLCAkbmFtZV9maWVsZCk7CisJCX0KKwl9CisJaWYgKGRlZmluZWQgJGhlYWRyZXYgJiYgJHNlbGYtPnVzZV9zdm1fcHJvcHMpIHsKKwkJaWYgKCRzZWxmLT5yZXdyaXRlX3Jvb3QpIHsKKwkJCWRpZSAiQ2FuJ3QgaGF2ZSBib3RoICd1c2VTdm1Qcm9wcycgYW5kICdyZXdyaXRlUm9vdCcgIiwKKwkJCSAgICAib3B0aW9ucyBzZXQhXG4iOworCQl9CisJCWlmICgkc2VsZi0+cmV3cml0ZV91dWlkKSB7CisJCQlkaWUgIkNhbid0IGhhdmUgYm90aCAndXNlU3ZtUHJvcHMnIGFuZCAncmV3cml0ZVVVSUQnICIsCisJCQkgICAgIm9wdGlvbnMgc2V0IVxuIjsKKwkJfQorCQlteSAoJHV1aWQsICRyKSA9ICRoZWFkcmV2ID1+IG17XihbYS1mXGRcLV17MzAsfSk6KFxkKykkfWk7CisJCSMgd2UgZG9uJ3Qgd2FudCAiU1ZNOiBpbml0aWFsaXppbmcgbWlycm9yIGZvciBqdW5rIiAuLi4KKwkJcmV0dXJuIHVuZGVmIGlmICRyID09IDA7CisJCW15ICRzdm0gPSAkc2VsZi0+c3ZtOworCQlpZiAoJHV1aWQgbmUgJHN2bS0+e3V1aWR9KSB7CisJCQlkaWUgIlVVSUQgbWlzbWF0Y2ggb24gU1ZNIHBhdGg6XG4iLAorCQkJICAgICJleHBlY3RlZDogJHN2bS0+e3V1aWR9XG4iLAorCQkJICAgICIgICAgIGdvdDogJHV1aWRcbiI7CisJCX0KKwkJbXkgJGZ1bGxfdXJsID0gJHNlbGYtPmZ1bGxfdXJsOworCQkkZnVsbF91cmwgPX4gcyNeXFEkc3ZtLT57cmVwbGFjZX1cRSgvfCQpIyRzdm0tPntzb3VyY2V9JDEjIG9yCisJCSAgICAgICAgICAgICBkaWUgIkZhaWxlZCB0byByZXBsYWNlICckc3ZtLT57cmVwbGFjZX0nIHdpdGggIiwKKwkJICAgICAgICAgICAgICAgICAiJyRzdm0tPntzb3VyY2V9JyBpbiAkZnVsbF91cmxcbiI7CisJCSMgdGhyb3cgYXdheSB1c2VybmFtZSBmb3Igc3RvcmluZyBpbiByZWNvcmRzCisJCXJlbW92ZV91c2VybmFtZSgkZnVsbF91cmwpOworCQkkbG9nX2VudHJ5e21ldGFkYXRhfSA9ICIkZnVsbF91cmxcQCRyICR1dWlkIjsKKwkJJGxvZ19lbnRyeXtzdm1fcmV2aXNpb259ID0gJHI7CisJCSRlbWFpbCB8fD0gIiRhdXRob3JcQCR1dWlkIjsKKwkJJGNvbW1pdF9lbWFpbCB8fD0gIiRhdXRob3JcQCR1dWlkIjsKKwl9IGVsc2lmICgkc2VsZi0+dXNlX3N2bnN5bmNfcHJvcHMpIHsKKwkJbXkgJGZ1bGxfdXJsID0gY2Fub25pY2FsaXplX3VybCgKKwkJCWFkZF9wYXRoX3RvX3VybCggJHNlbGYtPnN2bnN5bmMtPnt1cmx9LCAkc2VsZi0+cGF0aCApCisJCSk7CisJCXJlbW92ZV91c2VybmFtZSgkZnVsbF91cmwpOworCQlteSAkdXVpZCA9ICRzZWxmLT5zdm5zeW5jLT57dXVpZH07CisJCSRsb2dfZW50cnl7bWV0YWRhdGF9ID0gIiRmdWxsX3VybFxAJHJldiAkdXVpZCI7CisJCSRlbWFpbCB8fD0gIiRhdXRob3JcQCR1dWlkIjsKKwkJJGNvbW1pdF9lbWFpbCB8fD0gIiRhdXRob3JcQCR1dWlkIjsKKwl9IGVsc2UgeworCQlteSAkdXJsID0gJHNlbGYtPm1ldGFkYXRhX3VybDsKKwkJcmVtb3ZlX3VzZXJuYW1lKCR1cmwpOworCQlteSAkdXVpZCA9ICRzZWxmLT5yZXdyaXRlX3V1aWQgfHwgJHNlbGYtPnJhLT5nZXRfdXVpZDsKKwkJJGxvZ19lbnRyeXttZXRhZGF0YX0gPSAiJHVybFxAJHJldiAiIC4gJHV1aWQ7CisJCSRlbWFpbCB8fD0gIiRhdXRob3JcQCIgLiAkdXVpZDsKKwkJJGNvbW1pdF9lbWFpbCB8fD0gIiRhdXRob3JcQCIgLiAkdXVpZDsKKwl9CisJJGxvZ19lbnRyeXtuYW1lfSA9ICRuYW1lOworCSRsb2dfZW50cnl7ZW1haWx9ID0gJGVtYWlsOworCSRsb2dfZW50cnl7Y29tbWl0X25hbWV9ID0gJGNvbW1pdF9uYW1lOworCSRsb2dfZW50cnl7Y29tbWl0X2VtYWlsfSA9ICRjb21taXRfZW1haWw7CisJXCVsb2dfZW50cnk7Cit9CisKK3N1YiBmZXRjaCB7CisJbXkgKCRzZWxmLCAkbWluX3JldiwgJG1heF9yZXYsIEBwYXJlbnRzKSA9IEBfOworCW15ICgkbGFzdF9yZXYsICRsYXN0X2NvbW1pdCkgPSAkc2VsZi0+bGFzdF9yZXZfY29tbWl0OworCW15ICgkYmFzZSwgJGhlYWQpID0gJHNlbGYtPmdldF9mZXRjaF9yYW5nZSgkbWluX3JldiwgJG1heF9yZXYpOworCSRzZWxmLT5yYS0+Z3NfZmV0Y2hfbG9vcF9jb21tb24oJGJhc2UsICRoZWFkLCBbJHNlbGZdKTsKK30KKworc3ViIHNldF90cmVlX2NiIHsKKwlteSAoJHNlbGYsICRsb2dfZW50cnksICR0cmVlLCAkcmV2LCAkZGF0ZSwgJGF1dGhvcikgPSBAXzsKKwkkc2VsZi0+e2luamVjdF9wYXJlbnRzfSA9IHsgJHJldiA9PiAkdHJlZSB9OworCSRzZWxmLT5mZXRjaCh1bmRlZiwgdW5kZWYpOworfQorCitzdWIgc2V0X3RyZWUgeworCW15ICgkc2VsZiwgJHRyZWUpID0gKHNoaWZ0LCBzaGlmdCk7CisJbXkgJGxvZ19lbnRyeSA9IDo6Z2V0X2NvbW1pdF9lbnRyeSgkdHJlZSk7CisJdW5sZXNzICgkc2VsZi0+e2xhc3RfcmV2fSkgeworCQlmYXRhbCgiTXVzdCBoYXZlIGFuIGV4aXN0aW5nIHJldmlzaW9uIHRvIGNvbW1pdCIpOworCX0KKwlteSAlZWRfb3B0cyA9ICggciA9PiAkc2VsZi0+e2xhc3RfcmV2fSwKKwkgICAgICAgICAgICAgICAgbG9nID0+ICRsb2dfZW50cnktPntsb2d9LAorCSAgICAgICAgICAgICAgICByYSA9PiAkc2VsZi0+cmEsCisJICAgICAgICAgICAgICAgIHRyZWVfYSA9PiAkc2VsZi0+e2xhc3RfY29tbWl0fSwKKwkgICAgICAgICAgICAgICAgdHJlZV9iID0+ICR0cmVlLAorCSAgICAgICAgICAgICAgICBlZGl0b3JfY2IgPT4gc3ViIHsKKwkJCSAgICAgICAkc2VsZi0+c2V0X3RyZWVfY2IoJGxvZ19lbnRyeSwgJHRyZWUsIEBfKSB9LAorCSAgICAgICAgICAgICAgICBzdm5fcGF0aCA9PiAkc2VsZi0+cGF0aCApOworCWlmICghR2l0OjpTVk46OkVkaXRvci0+bmV3KFwlZWRfb3B0cyktPmFwcGx5X2RpZmYpIHsKKwkJcHJpbnQgIk5vIGNoYW5nZXNcbnIkc2VsZi0+e2xhc3RfcmV2fSA9ICR0cmVlXG4iOworCX0KK30KKworc3ViIHJlYnVpbGRfZnJvbV9yZXZfZGIgeworCW15ICgkc2VsZiwgJHBhdGgpID0gQF87CisJbXkgJHIgPSAtMTsKKwlvcGVuIG15ICRmaCwgJzwnLCAkcGF0aCBvciBjcm9hayAib3BlbjogJCEiOworCWJpbm1vZGUgJGZoIG9yIGNyb2FrICJiaW5tb2RlOiAkISI7CisJd2hpbGUgKDwkZmg+KSB7CisJCWxlbmd0aCgkXykgPT0gNDEgb3IgY3JvYWsgImluY29uc2lzdGVudCBzaXplIGluICgkXykgIT0gNDEiOworCQljaG9tcCgkXyk7CisJCSsrJHI7CisJCW5leHQgaWYgJF8gZXEgKCcwJyB4IDQwKTsKKwkJJHNlbGYtPnJldl9tYXBfc2V0KCRyLCAkXyk7CisJCXByaW50ICJyJHIgPSAkX1xuIjsKKwl9CisJY2xvc2UgJGZoIG9yIGNyb2FrICJjbG9zZTogJCEiOworCXVubGluayAkcGF0aCBvciBjcm9hayAidW5saW5rOiAkISI7Cit9CisKK3N1YiByZWJ1aWxkIHsKKwlteSAoJHNlbGYpID0gQF87CisJbXkgJG1hcF9wYXRoID0gJHNlbGYtPm1hcF9wYXRoOworCW15ICRwYXJ0aWFsID0gKC1lICRtYXBfcGF0aCAmJiAhIC16ICRtYXBfcGF0aCk7CisJcmV0dXJuIHVubGVzcyA6OnZlcmlmeV9yZWYoJHNlbGYtPnJlZm5hbWUuJ14wJyk7CisJaWYgKCEkcGFydGlhbCAmJiAoJHNlbGYtPnVzZV9zdm1fcHJvcHMgfHwgJHNlbGYtPm5vX21ldGFkYXRhKSkgeworCQlteSAkcmV2X2RiID0gJHNlbGYtPnJldl9kYl9wYXRoOworCQkkc2VsZi0+cmVidWlsZF9mcm9tX3Jldl9kYigkcmV2X2RiKTsKKwkJaWYgKCRzZWxmLT51c2Vfc3ZtX3Byb3BzKSB7CisJCQlteSAkc3ZtX3Jldl9kYiA9ICRzZWxmLT5yZXZfZGJfcGF0aCgkc2VsZi0+c3ZtX3V1aWQpOworCQkJJHNlbGYtPnJlYnVpbGRfZnJvbV9yZXZfZGIoJHN2bV9yZXZfZGIpOworCQl9CisJCSRzZWxmLT51bmxpbmtfcmV2X2RiX3N5bWxpbms7CisJCXJldHVybjsKKwl9CisJcHJpbnQgIlJlYnVpbGRpbmcgJG1hcF9wYXRoIC4uLlxuIiBpZiAoISRwYXJ0aWFsKTsKKwlteSAoJGJhc2VfcmV2LCAkaGVhZCkgPSAoJHBhcnRpYWwgPyAkc2VsZi0+cmV2X21hcF9tYXhfbm9yZWJ1aWxkKDEpIDoKKwkJKHVuZGVmLCB1bmRlZikpOworCW15ICgkbG9nLCAkY3R4KSA9CisJICAgIGNvbW1hbmRfb3V0cHV0X3BpcGUocXcvcmV2LWxpc3QgLS1wcmV0dHk9cmF3IC0tcmV2ZXJzZS8sCisJCQkJKCRoZWFkID8gIiRoZWFkLi4iIDogIiIpIC4gJHNlbGYtPnJlZm5hbWUsCisJCQkJJy0tJyk7CisJbXkgJG1ldGFkYXRhX3VybCA9ICRzZWxmLT5tZXRhZGF0YV91cmw7CisJcmVtb3ZlX3VzZXJuYW1lKCRtZXRhZGF0YV91cmwpOworCW15ICRzdm5fdXVpZCA9ICRzZWxmLT5yZXdyaXRlX3V1aWQgfHwgJHNlbGYtPnJhX3V1aWQ7CisJbXkgJGM7CisJd2hpbGUgKDwkbG9nPikgeworCQlpZiAoIG17XmNvbW1pdCAoJDo6c2hhMSkkfSApIHsKKwkJCSRjID0gJDE7CisJCQluZXh0OworCQl9CisJCW5leHQgdW5sZXNzIHN7XlxzKihnaXQtc3ZuLWlkOil9eyQxfTsKKwkJbXkgKCR1cmwsICRyZXYsICR1dWlkKSA9IDo6ZXh0cmFjdF9tZXRhZGF0YSgkXyk7CisJCXJlbW92ZV91c2VybmFtZSgkdXJsKTsKKworCQkjIGlnbm9yZSBtZXJnZXMgKGZyb20gc2V0LXRyZWUpCisJCW5leHQgaWYgKCFkZWZpbmVkICRyZXYgfHwgISR1dWlkKTsKKworCQkjIGlmIHdlIG1lcmdlZCBvciBvdGhlcndpc2Ugc3RhcnRlZCBlbHNld2hlcmUsIHRoaXMgaXMKKwkJIyBob3cgd2UgYnJlYWsgb3V0IG9mIGl0CisJCWlmICgoJHV1aWQgbmUgJHN2bl91dWlkKSB8fAorCQkgICAgKCRtZXRhZGF0YV91cmwgJiYgJHVybCAmJiAoJHVybCBuZSAkbWV0YWRhdGFfdXJsKSkpIHsKKwkJCW5leHQ7CisJCX0KKwkJaWYgKCRwYXJ0aWFsICYmICRoZWFkKSB7CisJCQlwcmludCAiUGFydGlhbC1yZWJ1aWxkaW5nICRtYXBfcGF0aCAuLi5cbiI7CisJCQlwcmludCAiQ3VycmVudGx5IGF0ICRiYXNlX3JldiA9ICRoZWFkXG4iOworCQkJJGhlYWQgPSB1bmRlZjsKKwkJfQorCisJCSRzZWxmLT5yZXZfbWFwX3NldCgkcmV2LCAkYyk7CisJCXByaW50ICJyJHJldiA9ICRjXG4iOworCX0KKwljb21tYW5kX2Nsb3NlX3BpcGUoJGxvZywgJGN0eCk7CisJcHJpbnQgIkRvbmUgcmVidWlsZGluZyAkbWFwX3BhdGhcbiIgaWYgKCEkcGFydGlhbCB8fCAhJGhlYWQpOworCW15ICRyZXZfZGJfcGF0aCA9ICRzZWxmLT5yZXZfZGJfcGF0aDsKKwlpZiAoLWYgJHNlbGYtPnJldl9kYl9wYXRoKSB7CisJCXVubGluayAkc2VsZi0+cmV2X2RiX3BhdGggb3IgY3JvYWsgInVubGluazogJCEiOworCX0KKwkkc2VsZi0+dW5saW5rX3Jldl9kYl9zeW1saW5rOworfQorCisjIHJldl9tYXA6CisjIFRpZTo6RmlsZSBzZWVtcyB0byBiZSBwcm9uZSB0byBvZmZzZXQgZXJyb3JzIGlmIHJldmlzaW9ucyBnZXQgc3BhcnNlLAorIyBpdCdzIG5vdCB0aGF0IGZhc3QsIGVpdGhlci4gIFRpZTo6RmlsZSBpcyBhbHNvIG5vdCBpbiBQZXJsIDUuNi4gIFNvCisjIG9uZSBvZiBteSBmYXZvcml0ZSBtb2R1bGVzIGlzIG91dCA6PCAgTmV4dCB1cCB3b3VsZCBiZSBvbmUgb2YgdGhlIERCTQorIyBtb2R1bGVzLCBidXQgSSdtIG5vdCBzdXJlIHdoaWNoIGlzIG1vc3QgcG9ydGFibGUuLi4KKyMKKyMgVGhpcyBpcyB0aGUgcmVwbGFjZW1lbnQgZm9yIHRoZSByZXZfZGIgZm9ybWF0LCB3aGljaCB3YXMgdG9vIGJpZworIyBhbmQgaW5lZmZpY2llbnQgZm9yIGxhcmdlIHJlcG9zaXRvcmllcyB3aXRoIGEgbG90IG9mIHNwYXJzZSBoaXN0b3J5CisjIChtYWlubHkgdGFncykKKyMKKyMgVGhlIGZvcm1hdCBpcyB0aGlzOgorIyAgIC0gMjQgYnl0ZXMgZm9yIGV2ZXJ5IHJlY29yZCwKKyMgICAgICogNCBieXRlcyBmb3IgdGhlIGludGVnZXIgcmVwcmVzZW50aW5nIGFuIFNWTiByZXZpc2lvbiBudW1iZXIKKyMgICAgICogMjAgYnl0ZXMgcmVwcmVzZW50aW5nIHRoZSBzaGExIG9mIGEgZ2l0IGNvbW1pdAorIyAgIC0gTm8gZW1wdHkgcGFkZGluZyByZWNvcmRzIGxpa2UgdGhlIG9sZCBmb3JtYXQKKyMgICAgIChleGNlcHQgdGhlIGxhc3QgcmVjb3JkLCB3aGljaCBjYW4gYmUgb3ZlcndyaXR0ZW4pCisjICAgLSBuZXcgcmVjb3JkcyBhcmUgd3JpdHRlbiBhcHBlbmQtb25seSBzaW5jZSBTVk4gcmV2aXNpb24gbnVtYmVycworIyAgICAgaW5jcmVhc2UgbW9ub3RvbmljYWxseQorIyAgIC0gbG9va3VwcyBvbiBTVk4gcmV2aXNpb24gbnVtYmVyIGFyZSBkb25lIHZpYSBhIGJpbmFyeSBzZWFyY2gKKyMgICAtIFBpcGluZyB0aGUgZmlsZSB0byB4eGQgLWMyNCBpcyBhIGdvb2Qgd2F5IG9mIGR1bXBpbmcgaXQgZm9yCisjICAgICB2aWV3aW5nIG9yIGVkaXRpbmcgKHBpcGVkIGJhY2sgdGhyb3VnaCB4eGQgLXIpLCBzaG91bGQgdGhlIG5lZWQKKyMgICAgIGV2ZXIgYXJpc2UuCisjICAgLSBUaGUgbGFzdCByZWNvcmQgY2FuIGJlIHBhZGRpbmcgcmV2aXNpb24gd2l0aCBhbiBhbGwtemVybyBzaGExCisjICAgICBUaGlzIGlzIHVzZWQgdG8gb3B0aW1pemUgZmV0Y2ggcGVyZm9ybWFuY2Ugd2hlbiB1c2luZyBtdWx0aXBsZQorIyAgICAgImZldGNoIiBkaXJlY3RpdmVzIGluIC5naXQvY29uZmlnCisjCisjIFRoZXNlIGZpbGVzIGFyZSBkaXNwb3NhYmxlIHVubGVzcyBub01ldGFkYXRhIG9yIHVzZVN2bVByb3BzIGlzIHNldAorCitzdWIgX3Jldl9tYXBfc2V0IHsKKwlteSAoJGZoLCAkcmV2LCAkY29tbWl0KSA9IEBfOworCisJYmlubW9kZSAkZmggb3IgY3JvYWsgImJpbm1vZGU6ICQhIjsKKwlteSAkc2l6ZSA9IChzdGF0KCRmaCkpWzddOworCSgkc2l6ZSAlIDI0KSA9PSAwIG9yIGNyb2FrICJpbmNvbnNpc3RlbnQgc2l6ZTogJHNpemUiOworCisJbXkgJHdyX29mZnNldCA9IDA7CisJaWYgKCRzaXplID4gMCkgeworCQlzeXNzZWVrKCRmaCwgLTI0LCBTRUVLX0VORCkgb3IgY3JvYWsgInNlZWs6ICQhIjsKKwkJbXkgJHJlYWQgPSBzeXNyZWFkKCRmaCwgbXkgJGJ1ZiwgMjQpIG9yIGNyb2FrICJyZWFkOiAkISI7CisJCSRyZWFkID09IDI0IG9yIGNyb2FrICJyZWFkIG9ubHkgJHJlYWQgYnl0ZXMgKCE9IDI0KSI7CisJCW15ICgkbGFzdF9yZXYsICRsYXN0X2NvbW1pdCkgPSB1bnBhY2socmV2X21hcF9mbXQsICRidWYpOworCQlpZiAoJGxhc3RfY29tbWl0IGVxICgnMCcgeDQwKSkgeworCQkJaWYgKCRzaXplID49IDQ4KSB7CisJCQkJc3lzc2VlaygkZmgsIC00OCwgU0VFS19FTkQpIG9yIGNyb2FrICJzZWVrOiAkISI7CisJCQkJJHJlYWQgPSBzeXNyZWFkKCRmaCwgJGJ1ZiwgMjQpIG9yCisJCQkJICAgIGNyb2FrICJyZWFkOiAkISI7CisJCQkJJHJlYWQgPT0gMjQgb3IKKwkJCQkgICAgY3JvYWsgInJlYWQgb25seSAkcmVhZCBieXRlcyAoIT0gMjQpIjsKKwkJCQkoJGxhc3RfcmV2LCAkbGFzdF9jb21taXQpID0KKwkJCQkgICAgdW5wYWNrKHJldl9tYXBfZm10LCAkYnVmKTsKKwkJCQlpZiAoJGxhc3RfY29tbWl0IGVxICgnMCcgeDQwKSkgeworCQkJCQljcm9hayAiaW5jb25zaXN0ZW50IC5yZXZfbWFwXG4iOworCQkJCX0KKwkJCX0KKwkJCWlmICgkbGFzdF9yZXYgPj0gJHJldikgeworCQkJCWNyb2FrICJsYXN0X3JldiBpcyBoaWdoZXIhOiAkbGFzdF9yZXYgPj0gJHJldiI7CisJCQl9CisJCQkkd3Jfb2Zmc2V0ID0gLTI0OworCQl9CisJfQorCXN5c3NlZWsoJGZoLCAkd3Jfb2Zmc2V0LCBTRUVLX0VORCkgb3IgY3JvYWsgInNlZWs6ICQhIjsKKwlzeXN3cml0ZSgkZmgsIHBhY2socmV2X21hcF9mbXQsICRyZXYsICRjb21taXQpLCAyNCkgPT0gMjQgb3IKKwkgIGNyb2FrICJ3cml0ZTogJCEiOworfQorCitzdWIgX3Jldl9tYXBfcmVzZXQgeworCW15ICgkZmgsICRyZXYsICRjb21taXQpID0gQF87CisJbXkgJGMgPSBfcmV2X21hcF9nZXQoJGZoLCAkcmV2KTsKKwkkYyBlcSAkY29tbWl0IG9yIGRpZSAiX3Jldl9tYXBfcmVzZXQoQF8pIGNvbW1pdCAkYyBkb2VzIG5vdCBtYXRjaCFcbiI7CisJbXkgJG9mZnNldCA9IHN5c3NlZWsoJGZoLCAwLCBTRUVLX0NVUikgb3IgY3JvYWsgInNlZWs6ICQhIjsKKwl0cnVuY2F0ZSAkZmgsICRvZmZzZXQgb3IgY3JvYWsgInRydW5jYXRlOiAkISI7Cit9CisKK3N1YiBta2ZpbGUgeworCW15ICgkcGF0aCkgPSBAXzsKKwl1bmxlc3MgKC1lICRwYXRoKSB7CisJCW15ICgkZGlyLCAkYmFzZSkgPSAoJHBhdGggPX4gbSNeKC4qPykvPyhbXi9dKykkIyk7CisJCW1rcGF0aChbJGRpcl0pIHVubGVzcyAtZCAkZGlyOworCQlvcGVuIG15ICRmaCwgJz4+JywgJHBhdGggb3IgZGllICJDb3VsZG4ndCBjcmVhdGUgJHBhdGg6ICQhXG4iOworCQljbG9zZSAkZmggb3IgZGllICJDb3VsZG4ndCBjbG9zZSAoY3JlYXRlKSAkcGF0aDogJCFcbiI7CisJfQorfQorCitzdWIgcmV2X21hcF9zZXQgeworCW15ICgkc2VsZiwgJHJldiwgJGNvbW1pdCwgJHVwZGF0ZV9yZWYsICR1dWlkKSA9IEBfOworCWRlZmluZWQgJGNvbW1pdCBvciBkaWUgIm1pc3NpbmcgYXJnM1xuIjsKKwlsZW5ndGggJGNvbW1pdCA9PSA0MCBvciBkaWUgImFyZzMgbXVzdCBiZSBhIGZ1bGwgU0hBMSBoZXhzdW1cbiI7CisJbXkgJGRiID0gJHNlbGYtPm1hcF9wYXRoKCR1dWlkKTsKKwlteSAkZGJfbG9jayA9ICIkZGIubG9jayI7CisJbXkgJHNpZ21hc2s7CisJJHVwZGF0ZV9yZWYgfHw9IDA7CisJaWYgKCR1cGRhdGVfcmVmKSB7CisJCSRzaWdtYXNrID0gUE9TSVg6OlNpZ1NldC0+bmV3KCk7CisJCW15ICRzaWduZXcgPSBQT1NJWDo6U2lnU2V0LT5uZXcoU0lHSU5ULCBTSUdIVVAsIFNJR1RFUk0sCisJCQlTSUdBTFJNLCBTSUdVU1IxLCBTSUdVU1IyKTsKKwkJc2lncHJvY21hc2soU0lHX0JMT0NLLCAkc2lnbmV3LCAkc2lnbWFzaykgb3IKKwkJCWNyb2FrICJDYW4ndCBibG9jayBzaWduYWxzOiAkISI7CisJfQorCW1rZmlsZSgkZGIpOworCisJJExPQ0tGSUxFU3skZGJfbG9ja30gPSAxOworCW15ICRzeW5jOworCSMgYm90aCBvZiB0aGVzZSBvcHRpb25zIG1ha2Ugb3VyIC5yZXZfZGIgZmlsZSB2ZXJ5LCB2ZXJ5IGltcG9ydGFudAorCSMgYW5kIHdlIGNhbid0IGFmZm9yZCB0byBsb3NlIGl0IGJlY2F1c2UgcmVidWlsZCgpIHdvbid0IHdvcmsKKwlpZiAoJHNlbGYtPnVzZV9zdm1fcHJvcHMgfHwgJHNlbGYtPm5vX21ldGFkYXRhKSB7CisJCSRzeW5jID0gMTsKKwkJY29weSgkZGIsICRkYl9sb2NrKSBvciBkaWUgInJldl9tYXBfc2V0KEBfKTogIiwKKwkJCQkJICAgIkZhaWxlZCB0byBjb3B5OiAiLAorCQkJCQkgICAiJGRiID0+ICRkYl9sb2NrICgkISlcbiI7CisJfSBlbHNlIHsKKwkJcmVuYW1lICRkYiwgJGRiX2xvY2sgb3IgZGllICJyZXZfbWFwX3NldChAXyk6ICIsCisJCQkJCSAgICAiRmFpbGVkIHRvIHJlbmFtZTogIiwKKwkJCQkJICAgICIkZGIgPT4gJGRiX2xvY2sgKCQhKVxuIjsKKwl9CisKKwlzeXNvcGVuKG15ICRmaCwgJGRiX2xvY2ssIE9fUkRXUiB8IE9fQ1JFQVQpCisJICAgICBvciBjcm9hayAiQ291bGRuJ3Qgb3BlbiAkZGJfbG9jazogJCFcbiI7CisJaWYgKCR1cGRhdGVfcmVmIGVxICdyZXNldCcpIHsKKwkJY2xlYXJfbWVtb2l6ZWRfbWVyZ2VpbmZvX2NhY2hlcygpOworCQlfcmV2X21hcF9yZXNldCgkZmgsICRyZXYsICRjb21taXQpOworCX0gZWxzZSB7CisJCV9yZXZfbWFwX3NldCgkZmgsICRyZXYsICRjb21taXQpOworCX0KKworCWlmICgkc3luYykgeworCQkkZmgtPmZsdXNoIG9yIGRpZSAiQ291bGRuJ3QgZmx1c2ggJGRiX2xvY2s6ICQhXG4iOworCQkkZmgtPnN5bmMgb3IgZGllICJDb3VsZG4ndCBzeW5jICRkYl9sb2NrOiAkIVxuIjsKKwl9CisJY2xvc2UgJGZoIG9yIGNyb2FrICQhOworCWlmICgkdXBkYXRlX3JlZikgeworCQkkX2hlYWQgPSAkc2VsZjsKKwkJbXkgJG5vdGUgPSAiIjsKKwkJJG5vdGUgPSAiICgkdXBkYXRlX3JlZikiIGlmICgkdXBkYXRlX3JlZiAhfiAvXlxkKiQvKTsKKwkJY29tbWFuZF9ub2lzeSgndXBkYXRlLXJlZicsICctbScsICJyJHJldiRub3RlIiwKKwkJICAgICAgICAgICAgICAkc2VsZi0+cmVmbmFtZSwgJGNvbW1pdCk7CisJfQorCXJlbmFtZSAkZGJfbG9jaywgJGRiIG9yIGRpZSAicmV2X21hcF9zZXQoQF8pOiAiLCAiRmFpbGVkIHRvIHJlbmFtZTogIiwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRkYl9sb2NrID0+ICRkYiAoJCEpXG4iOworCWRlbGV0ZSAkTE9DS0ZJTEVTeyRkYl9sb2NrfTsKKwlpZiAoJHVwZGF0ZV9yZWYpIHsKKwkJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICRzaWdtYXNrKSBvcgorCQkJY3JvYWsgIkNhbid0IHJlc3RvcmUgc2lnbmFsIG1hc2s6ICQhIjsKKwl9Cit9CisKKyMgSWYgd2FudF9jb21taXQsIHRoaXMgd2lsbCByZXR1cm4gYW4gYXJyYXkgb2YgKHJldiwgY29tbWl0KSB3aGVyZQorIyBjb21taXQgX211c3RfIGJlIGEgdmFsaWQgY29tbWl0IGluIHRoZSBhcmNoaXZlLgorIyBPdGhlcndpc2UsIGl0J2xsIHJldHVybiB0aGUgbWF4IHJldmlzaW9uICh3aGV0aGVyIG9yIG5vdCB0aGUKKyMgY29tbWl0IGlzIHZhbGlkIG9yIGp1c3QgYSAweDQwIHBsYWNlaG9sZGVyKS4KK3N1YiByZXZfbWFwX21heCB7CisJbXkgKCRzZWxmLCAkd2FudF9jb21taXQpID0gQF87CisJJHNlbGYtPnJlYnVpbGQ7CisJbXkgKCRyLCAkYykgPSAkc2VsZi0+cmV2X21hcF9tYXhfbm9yZWJ1aWxkKCR3YW50X2NvbW1pdCk7CisJJHdhbnRfY29tbWl0ID8gKCRyLCAkYykgOiAkcjsKK30KKworc3ViIHJldl9tYXBfbWF4X25vcmVidWlsZCB7CisJbXkgKCRzZWxmLCAkd2FudF9jb21taXQpID0gQF87CisJbXkgJG1hcF9wYXRoID0gJHNlbGYtPm1hcF9wYXRoOworCXN0YXQgJG1hcF9wYXRoIG9yIHJldHVybiAkd2FudF9jb21taXQgPyAoMCwgdW5kZWYpIDogMDsKKwlzeXNvcGVuKG15ICRmaCwgJG1hcF9wYXRoLCBPX1JET05MWSkgb3IgY3JvYWsgIm9wZW46ICQhIjsKKwliaW5tb2RlICRmaCBvciBjcm9hayAiYmlubW9kZTogJCEiOworCW15ICRzaXplID0gKHN0YXQoJGZoKSlbN107CisJKCRzaXplICUgMjQpID09IDAgb3IgY3JvYWsgImluY29uc2lzdGVudCBzaXplOiAkc2l6ZSI7CisKKwlpZiAoJHNpemUgPT0gMCkgeworCQljbG9zZSAkZmggb3IgY3JvYWsgImNsb3NlOiAkISI7CisJCXJldHVybiAkd2FudF9jb21taXQgPyAoMCwgdW5kZWYpIDogMDsKKwl9CisKKwlzeXNzZWVrKCRmaCwgLTI0LCBTRUVLX0VORCkgb3IgY3JvYWsgInNlZWs6ICQhIjsKKwlzeXNyZWFkKCRmaCwgbXkgJGJ1ZiwgMjQpID09IDI0IG9yIGNyb2FrICJyZWFkOiAkISI7CisJbXkgKCRyLCAkYykgPSB1bnBhY2socmV2X21hcF9mbXQsICRidWYpOworCWlmICgkd2FudF9jb21taXQgJiYgJGMgZXEgKCcwJyB4NDApKSB7CisJCWlmICgkc2l6ZSA8IDQ4KSB7CisJCQlyZXR1cm4gJHdhbnRfY29tbWl0ID8gKDAsIHVuZGVmKSA6IDA7CisJCX0KKwkJc3lzc2VlaygkZmgsIC00OCwgU0VFS19FTkQpIG9yIGNyb2FrICJzZWVrOiAkISI7CisJCXN5c3JlYWQoJGZoLCAkYnVmLCAyNCkgPT0gMjQgb3IgY3JvYWsgInJlYWQ6ICQhIjsKKwkJKCRyLCAkYykgPSB1bnBhY2socmV2X21hcF9mbXQsICRidWYpOworCQlpZiAoJGMgZXEgKCcwJ3g0MCkpIHsKKwkJCWNyb2FrICJQZW51bHRpbWF0ZSByZWNvcmQgaXMgYWxsLXplcm9lcyBpbiAkbWFwX3BhdGgiOworCQl9CisJfQorCWNsb3NlICRmaCBvciBjcm9hayAiY2xvc2U6ICQhIjsKKwkkd2FudF9jb21taXQgPyAoJHIsICRjKSA6ICRyOworfQorCitzdWIgcmV2X21hcF9nZXQgeworCW15ICgkc2VsZiwgJHJldiwgJHV1aWQpID0gQF87CisJbXkgJG1hcF9wYXRoID0gJHNlbGYtPm1hcF9wYXRoKCR1dWlkKTsKKwlyZXR1cm4gdW5kZWYgdW5sZXNzIC1lICRtYXBfcGF0aDsKKworCXN5c29wZW4obXkgJGZoLCAkbWFwX3BhdGgsIE9fUkRPTkxZKSBvciBjcm9hayAib3BlbjogJCEiOworCW15ICRjID0gX3Jldl9tYXBfZ2V0KCRmaCwgJHJldik7CisJY2xvc2UoJGZoKSBvciBjcm9hayAiY2xvc2U6ICQhIjsKKwkkYworfQorCitzdWIgX3Jldl9tYXBfZ2V0IHsKKwlteSAoJGZoLCAkcmV2KSA9IEBfOworCisJYmlubW9kZSAkZmggb3IgY3JvYWsgImJpbm1vZGU6ICQhIjsKKwlteSAkc2l6ZSA9IChzdGF0KCRmaCkpWzddOworCSgkc2l6ZSAlIDI0KSA9PSAwIG9yIGNyb2FrICJpbmNvbnNpc3RlbnQgc2l6ZTogJHNpemUiOworCisJaWYgKCRzaXplID09IDApIHsKKwkJcmV0dXJuIHVuZGVmOworCX0KKworCW15ICgkbCwgJHUpID0gKDAsICRzaXplIC0gMjQpOworCW15ICgkciwgJGMsICRidWYpOworCisJd2hpbGUgKCRsIDw9ICR1KSB7CisJCW15ICRpID0gaW50KCgkbC8yNCArICR1LzI0KSAvIDIpICogMjQ7CisJCXN5c3NlZWsoJGZoLCAkaSwgU0VFS19TRVQpIG9yIGNyb2FrICJzZWVrOiAkISI7CisJCXN5c3JlYWQoJGZoLCBteSAkYnVmLCAyNCkgPT0gMjQgb3IgY3JvYWsgInJlYWQ6ICQhIjsKKwkJbXkgKCRyLCAkYykgPSB1bnBhY2socmV2X21hcF9mbXQsICRidWYpOworCisJCWlmICgkciA8ICRyZXYpIHsKKwkJCSRsID0gJGkgKyAyNDsKKwkJfSBlbHNpZiAoJHIgPiAkcmV2KSB7CisJCQkkdSA9ICRpIC0gMjQ7CisJCX0gZWxzZSB7ICMgJHIgPT0gJHJldgorCQkJcmV0dXJuICRjIGVxICgnMCcgeCA0MCkgPyB1bmRlZiA6ICRjOworCQl9CisJfQorCXVuZGVmOworfQorCisjIEZpbmRzIHRoZSBmaXJzdCBzdm4gcmV2aXNpb24gdGhhdCBleGlzdHMgb24gKGlmICRlcV9vayBpcyB0cnVlKSBvcgorIyBiZWZvcmUgJHJldiBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLiAgSXQgd2lsbCBub3Qgc2VhcmNoIGFueSBsb3dlcgorIyB0aGFuICRtaW5fcmV2LiAgUmV0dXJucyB0aGUgZ2l0IGNvbW1pdCBoYXNoIGFuZCBzdm4gcmV2aXNpb24gbnVtYmVyCisjIGlmIGZvdW5kLCBlbHNlICh1bmRlZiwgdW5kZWYpLgorc3ViIGZpbmRfcmV2X2JlZm9yZSB7CisJbXkgKCRzZWxmLCAkcmV2LCAkZXFfb2ssICRtaW5fcmV2KSA9IEBfOworCS0tJHJldiB1bmxlc3MgJGVxX29rOworCSRtaW5fcmV2IHx8PSAxOworCW15ICRtYXhfcmV2ID0gJHNlbGYtPnJldl9tYXBfbWF4OworCSRyZXYgPSAkbWF4X3JldiBpZiAoJHJldiA+ICRtYXhfcmV2KTsKKwl3aGlsZSAoJHJldiA+PSAkbWluX3JldikgeworCQlpZiAobXkgJGMgPSAkc2VsZi0+cmV2X21hcF9nZXQoJHJldikpIHsKKwkJCXJldHVybiAoJHJldiwgJGMpOworCQl9CisJCS0tJHJldjsKKwl9CisJcmV0dXJuICh1bmRlZiwgdW5kZWYpOworfQorCisjIEZpbmRzIHRoZSBmaXJzdCBzdm4gcmV2aXNpb24gdGhhdCBleGlzdHMgb24gKGlmICRlcV9vayBpcyB0cnVlKSBvcgorIyBhZnRlciAkcmV2IGZvciB0aGUgY3VycmVudCBicmFuY2guICBJdCB3aWxsIG5vdCBzZWFyY2ggYW55IGhpZ2hlcgorIyB0aGFuICRtYXhfcmV2LiAgUmV0dXJucyB0aGUgZ2l0IGNvbW1pdCBoYXNoIGFuZCBzdm4gcmV2aXNpb24gbnVtYmVyCisjIGlmIGZvdW5kLCBlbHNlICh1bmRlZiwgdW5kZWYpLgorc3ViIGZpbmRfcmV2X2FmdGVyIHsKKwlteSAoJHNlbGYsICRyZXYsICRlcV9vaywgJG1heF9yZXYpID0gQF87CisJKyskcmV2IHVubGVzcyAkZXFfb2s7CisJJG1heF9yZXYgfHw9ICRzZWxmLT5yZXZfbWFwX21heDsKKwl3aGlsZSAoJHJldiA8PSAkbWF4X3JldikgeworCQlpZiAobXkgJGMgPSAkc2VsZi0+cmV2X21hcF9nZXQoJHJldikpIHsKKwkJCXJldHVybiAoJHJldiwgJGMpOworCQl9CisJCSsrJHJldjsKKwl9CisJcmV0dXJuICh1bmRlZiwgdW5kZWYpOworfQorCitzdWIgX25ldyB7CisJbXkgKCRjbGFzcywgJHJlcG9faWQsICRyZWZfaWQsICRwYXRoKSA9IEBfOworCXVubGVzcyAoZGVmaW5lZCAkcmVwb19pZCAmJiBsZW5ndGggJHJlcG9faWQpIHsKKwkJJHJlcG9faWQgPSAkZGVmYXVsdF9yZXBvX2lkOworCX0KKwl1bmxlc3MgKGRlZmluZWQgJHJlZl9pZCAmJiBsZW5ndGggJHJlZl9pZCkgeworCQkjIEFjY2VzcyB0aGUgcHJlZml4IG9wdGlvbiBmcm9tIHRoZSBnaXQtc3ZuIG1haW4gcHJvZ3JhbSBpZiBpdCdzIGxvYWRlZC4KKwkJbXkgJHByZWZpeCA9IGRlZmluZWQgJjo6b3B0X3ByZWZpeCA/IDo6b3B0X3ByZWZpeCgpIDogIiI7CisJCSRfWzJdID0gJHJlZl9pZCA9CisJCSAgICAgICAgICAgICAicmVmcy9yZW1vdGVzLyRwcmVmaXgkZGVmYXVsdF9yZWZfaWQiOworCX0KKwkkX1sxXSA9ICRyZXBvX2lkOworCW15ICRkaXIgPSAiJEVOVntHSVRfRElSfS9zdm4vJHJlZl9pZCI7CisKKwkjIE9sZGVyIHJlcG9zIGltcG9ydGVkIGJ5IHVzIHVzZWQgJEdJVF9ESVIvc3ZuL2ZvbyBpbnN0ZWFkIG9mCisJIyAkR0lUX0RJUi9zdm4vcmVmcy9yZW1vdGVzL2ZvbyB3aGVuIHRyYWNraW5nIHJlZnMvcmVtb3Rlcy9mb28KKwlpZiAoJHJlZl9pZCA9fiBte15yZWZzL3JlbW90ZXMvKC4qKX0pIHsKKwkJbXkgJG9sZF9kaXIgPSAiJEVOVntHSVRfRElSfS9zdm4vJDEiOworCQlpZiAoLWQgJG9sZF9kaXIgJiYgISAtZCAkZGlyKSB7CisJCQkkZGlyID0gJG9sZF9kaXI7CisJCX0KKwl9CisKKwkkX1szXSA9ICRwYXRoID0gJycgdW5sZXNzIChkZWZpbmVkICRwYXRoKTsKKwlta3BhdGgoWyRkaXJdKTsKKwlteSAkb2JqID0gYmxlc3MgeworCQlyZWZfaWQgPT4gJHJlZl9pZCwgZGlyID0+ICRkaXIsIGluZGV4ID0+ICIkZGlyL2luZGV4IiwKKwkgICAgICAgIGNvbmZpZyA9PiAiJEVOVntHSVRfRElSfS9zdm4vY29uZmlnIiwKKwkgICAgICAgIG1hcF9yb290ID0+ICIkZGlyLy5yZXZfbWFwIiwgcmVwb19pZCA9PiAkcmVwb19pZCB9LCAkY2xhc3M7CisKKwkjIEVuc3VyZSBpdCBnZXRzIGNhbm9uaWNhbGl6ZWQKKwkkb2JqLT5wYXRoKCRwYXRoKTsKKworCXJldHVybiAkb2JqOworfQorCitzdWIgcGF0aCB7CisJbXkgJHNlbGYgPSBzaGlmdDsKKworCWlmIChAXykgeworCQlteSAkcGF0aCA9IHNoaWZ0OworCQkkc2VsZi0+e19wYXRofSA9IGNhbm9uaWNhbGl6ZV9wYXRoKCRwYXRoKTsKKwkJcmV0dXJuOworCX0KKworCXJldHVybiAkc2VsZi0+e19wYXRofTsKK30KKworc3ViIHVybCB7CisJbXkgJHNlbGYgPSBzaGlmdDsKKworCWlmIChAXykgeworCQlteSAkdXJsID0gc2hpZnQ7CisJCSRzZWxmLT57dXJsfSA9IGNhbm9uaWNhbGl6ZV91cmwoJHVybCk7CisJCXJldHVybjsKKwl9CisKKwlyZXR1cm4gJHNlbGYtPnt1cmx9OworfQorCisjIGZvciByZWFkLW9ubHkgYWNjZXNzIG9mIG9sZCAucmV2X2RiIGZvcm1hdHMKK3N1YiB1bmxpbmtfcmV2X2RiX3N5bWxpbmsgeworCW15ICgkc2VsZikgPSBAXzsKKwlteSAkbGluayA9ICRzZWxmLT5yZXZfZGJfcGF0aDsKKwkkbGluayA9fiBzL1wuW1x3LV0rJC8vIG9yIGNyb2FrICJtaXNzaW5nIFVVSUQgYXQgdGhlIGVuZCBvZiAkbGluayI7CisJaWYgKC1sICRsaW5rKSB7CisJCXVubGluayAkbGluayBvciBjcm9hayAidW5saW5rOiAkbGluayBmYWlsZWQhIjsKKwl9Cit9CisKK3N1YiByZXZfZGJfcGF0aCB7CisJbXkgKCRzZWxmLCAkdXVpZCkgPSBAXzsKKwlteSAkZGJfcGF0aCA9ICRzZWxmLT5tYXBfcGF0aCgkdXVpZCk7CisJJGRiX3BhdGggPX4gc3svXC5yZXZfbWFwXC59ey9cLnJldl9kYlwufQorCSAgICBvciBjcm9hayAibWFwX3BhdGg6ICRkYl9wYXRoIGRvZXMgbm90IGNvbnRhaW4gJy8ucmV2X21hcC4nICEiOworCSRkYl9wYXRoOworfQorCisjIHRoZSBuZXcgcmVwbGFjZW1lbnQgZm9yIC5yZXZfZGIKK3N1YiBtYXBfcGF0aCB7CisJbXkgKCRzZWxmLCAkdXVpZCkgPSBAXzsKKwkkdXVpZCB8fD0gJHNlbGYtPnJhX3V1aWQ7CisJIiRzZWxmLT57bWFwX3Jvb3R9LiR1dWlkIjsKK30KKworc3ViIHVyaV9lbmNvZGUgeworCW15ICgkZikgPSBAXzsKKwkkZiA9fiBzIyhbXmEtekEtWjAtOVwqIVw6X1wuL1wtXSkjc3ByaW50ZigiJSUlMDJYIixvcmQoJDEpKSNlZzsKKwkkZgorfQorCitzdWIgdXJpX2RlY29kZSB7CisJbXkgKCRmKSA9IEBfOworCSRmID1+IHMjJShbMC05YS1mQS1GXXsyfSkjY2hyKGhleCgkMSkpI2VnOworCSRmCit9CisKK3N1YiByZW1vdmVfdXNlcm5hbWUgeworCSRfWzBdID1+IHN7XihbXjpdKjovLylbXkBdK0B9eyQxfTsKK30KKworMTsKZGlmZiAtLWdpdCBhL3BlcmwvR2l0L1NWTi9FZGl0b3IucG0gYi9wZXJsL0dpdC9TVk4vRWRpdG9yLnBtCmluZGV4IDc1NTA5MmYuLmIzYmNkNDcgMTAwNjQ0Ci0tLSBhL3BlcmwvR2l0L1NWTi9FZGl0b3IucG0KKysrIGIvcGVybC9HaXQvU1ZOL0VkaXRvci5wbQpAQCAtMTQ1LDcgKzE0NSw4IEBACiBzdWIgdXJsX3BhdGggewogCW15ICgkc2VsZiwgJHBhdGgpID0gQF87CiAJaWYgKCRzZWxmLT57dXJsfSA9fiBtI15odHRwcz86Ly8jKSB7Ci0JCSRwYXRoID1+IHMhKFtefmEtekEtWjAtOV8uLy1dKSF1YyBzcHJpbnRmKCIlJSUwMngiLG9yZCgkMSkpIWVnOworCQkjIGNoYXJhY3RlcnMgYXJlIHRha2VuIGZyb20gc3VidmVyc2lvbi9saWJzdm5fc3Vici9wYXRoLmMKKwkJJHBhdGggPX4gcyMoW15+YS16QS1aMC05Xy4vISQmJygpKissLV0pI3NwcmludGYoIiUlJTAyWCIsb3JkKCQxKSkjZWc7CiAJfQogCSRzZWxmLT57dXJsfSAuICcvJyAuICRzZWxmLT5yZXBvX3BhdGgoJHBhdGgpOwogfQpAQCAtMzQ1LDcgKzM0NiwzMCBAQAogCSRzZWxmLT5jbG9zZV9maWxlKCRmYmF0LHVuZGVmLCRzZWxmLT57cG9vbH0pOwogfQogCi1zdWIgVCB7IHNoaWZ0LT5NKEBfKSB9CitzdWIgVCB7CisJbXkgKCRzZWxmLCAkbSwgJGRlbGV0aW9ucykgPSBAXzsKKworCSMgV29yayBhcm91bmQgc3VidmVyc2lvbiBpc3N1ZSA0MDkxOiB0b2dnbGluZyB0aGUgImlzIGEKKwkjIHN5bWxpbmsiIHByb3BlcnR5IHJlcXVpcmVzIHJlbW92aW5nIGFuZCByZS1hZGRpbmcgYQorCSMgZmlsZSBvciBlbHNlICJzdm4gdXAiIG9uIGFmZmVjdGVkIGNsaWVudHMgdHJpcHMgYW4KKwkjIGFzc2VydGlvbiBhbmQgYWJvcnRzLgorCWlmICgoJG0tPnttb2RlX2J9ID1+IC9eMTIwLyAmJiAkbS0+e21vZGVfYX0gIX4gL14xMjAvKSB8fAorCSAgICAoJG0tPnttb2RlX2J9ICF+IC9eMTIwLyAmJiAkbS0+e21vZGVfYX0gPX4gL14xMjAvKSkgeworCQkkc2VsZi0+RCh7CisJCQltb2RlX2EgPT4gJG0tPnttb2RlX2F9LCBtb2RlX2IgPT4gJzAwMDAwMCcsCisJCQlzaGExX2EgPT4gJG0tPntzaGExX2F9LCBzaGExX2IgPT4gJzAnIHggNDAsCisJCQljaGcgPT4gJ0QnLCBmaWxlX2IgPT4gJG0tPntmaWxlX2J9CisJCX0sICRkZWxldGlvbnMpOworCQkkc2VsZi0+QSh7CisJCQltb2RlX2EgPT4gJzAwMDAwMCcsIG1vZGVfYiA9PiAkbS0+e21vZGVfYn0sCisJCQlzaGExX2EgPT4gJzAnIHggNDAsIHNoYTFfYiA9PiAkbS0+e3NoYTFfYn0sCisJCQljaGcgPT4gJ0EnLCBmaWxlX2IgPT4gJG0tPntmaWxlX2J9CisJCX0sICRkZWxldGlvbnMpOworCQlyZXR1cm47CisJfQorCisJJHNlbGYtPk0oJG0sICRkZWxldGlvbnMpOworfQogCiBzdWIgY2hhbmdlX2ZpbGVfcHJvcCB7CiAJbXkgKCRzZWxmLCAkZmJhdCwgJHBuYW1lLCAkcHZhbCkgPSBAXzsKQEAgLTQ3NSw2ICs0OTksOCBAQAogMTsKIF9fRU5EX18KIAorPWhlYWQxIE5BTUUKKwogR2l0OjpTVk46OkVkaXRvciAtIGNvbW1pdCBkcml2ZXIgZm9yICJnaXQgc3ZuIHNldC10cmVlIiBhbmQgZGNvbW1pdAogCiA9aGVhZDEgU1lOT1BTSVMKZGlmZiAtLWdpdCBhL3BlcmwvR2l0L1NWTi9GZXRjaGVyLnBtIGIvcGVybC9HaXQvU1ZOL0ZldGNoZXIucG0KaW5kZXggZWY4ZTllZC4uYmQxNzQxOCAxMDA2NDQKLS0tIGEvcGVybC9HaXQvU1ZOL0ZldGNoZXIucG0KKysrIGIvcGVybC9HaXQvU1ZOL0ZldGNoZXIucG0KQEAgLTEsNiArMSw3IEBACiBwYWNrYWdlIEdpdDo6U1ZOOjpGZXRjaGVyOwotdXNlIHZhcnMgcXcvQElTQSAkX2lnbm9yZV9yZWdleCAkX3ByZXNlcnZlX2VtcHR5X2RpcnMgJF9wbGFjZWhvbGRlcl9maWxlbmFtZQotICAgICAgICAgICAgQGRlbGV0ZWRfZ3BhdGggJWFkZGVkX3BsYWNlaG9sZGVyICRyZXBvX2lkLzsKK3VzZSB2YXJzIHF3L0BJU0EgJF9pZ25vcmVfcmVnZXggJF9pbmNsdWRlX3JlZ2V4ICRfcHJlc2VydmVfZW1wdHlfZGlycworICAgICAgICAgICAgJF9wbGFjZWhvbGRlcl9maWxlbmFtZSBAZGVsZXRlZF9ncGF0aCAlYWRkZWRfcGxhY2Vob2xkZXIKKyAgICAgICAgICAgICRyZXBvX2lkLzsKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiB1c2UgU1ZOOjpEZWx0YTsKQEAgLTMzLDYgKzM0LDEwIEBACiAJbXkgJHYgPSBldmFsIHsgY29tbWFuZF9vbmVsaW5lKCdjb25maWcnLCAnLS1nZXQnLCAkaykgfTsKIAkkc2VsZi0+e2lnbm9yZV9yZWdleH0gPSAkdjsKIAorCSRrID0gInN2bi1yZW1vdGUuJHJlcG9faWQuaW5jbHVkZS1wYXRocyI7CisJJHYgPSBldmFsIHsgY29tbWFuZF9vbmVsaW5lKCdjb25maWcnLCAnLS1nZXQnLCAkaykgfTsKKwkkc2VsZi0+e2luY2x1ZGVfcmVnZXh9ID0gJHY7CisKIAkkayA9ICJzdm4tcmVtb3RlLiRyZXBvX2lkLnByZXNlcnZlLWVtcHR5LWRpcnMiOwogCSR2ID0gZXZhbCB7IGNvbW1hbmRfb25lbGluZSgnY29uZmlnJywgJy0tZ2V0JywgJy0tYm9vbCcsICRrKSB9OwogCWlmICgkdiAmJiAkdiBlcSAndHJ1ZScpIHsKQEAgLTU3LDYgKzYyLDcgQEAKIAkkc2VsZi0+e2ZpbGVfcHJvcH0gPSB7fTsKIAkkc2VsZi0+e2Fic2VudF9kaXJ9ID0ge307CiAJJHNlbGYtPnthYnNlbnRfZmlsZX0gPSB7fTsKKwlyZXF1aXJlIEdpdDo6SW5kZXhJbmZvOwogCSRzZWxmLT57Z2lpfSA9ICRnaXRfc3ZuLT50bXBfaW5kZXhfZG8oc3ViIHsgR2l0OjpJbmRleEluZm8tPm5ldyB9KTsKIAkkc2VsZi0+e3BhdGhuYW1lZW5jb2Rpbmd9ID0gR2l0Ojpjb25maWcoJ3N2bi5wYXRobmFtZWVuY29kaW5nJyk7CiAJJHNlbGY7CkBAIC04Miw3ICs4OCw3IEBACiAJY2hvbXAobXkgJGVtcHR5X2Jsb2IgPSBgZ2l0IGhhc2gtb2JqZWN0IC10IGJsb2IgLS1zdGRpbiA8IC9kZXYvbnVsbGApOwogCW15ICgkbHMsICRjdHgpID0gY29tbWFuZF9vdXRwdXRfcGlwZShxdy9scy10cmVlIC1yIC16LywgJGNtdCk7CiAJbG9jYWwgJC8gPSAiXDAiOwotCW15ICRwZnggPSBkZWZpbmVkKCRzd2l0Y2hfcGF0aCkgPyAkc3dpdGNoX3BhdGggOiAkZ2l0X3N2bi0+e3BhdGh9OworCW15ICRwZnggPSBkZWZpbmVkKCRzd2l0Y2hfcGF0aCkgPyAkc3dpdGNoX3BhdGggOiAkZ2l0X3N2bi0+cGF0aDsKIAkkcGZ4IC49ICcvJyBpZiBsZW5ndGgoJHBmeCk7CiAJd2hpbGUgKDwkbHM+KSB7CiAJCWNob21wOwpAQCAtMTE2LDExICsxMjIsMTggQEAKIH0KIAogIyByZXR1cm4gdmFsdWU6IDAgLS0gZG9uJ3QgaWdub3JlLCAxIC0tIGlnbm9yZQorIyBUaGlzIHdpbGwgYWxzbyBjaGVjayB3aGV0aGVyIHRoZSBwYXRoIGlzIGV4cGxpY2l0bHkgaW5jbHVkZWQKIHN1YiBpc19wYXRoX2lnbm9yZWQgewogCW15ICgkc2VsZiwgJHBhdGgpID0gQF87CiAJcmV0dXJuIDEgaWYgaW5fZG90X2dpdCgkcGF0aCk7CiAJcmV0dXJuIDEgaWYgZGVmaW5lZCgkc2VsZi0+e2lnbm9yZV9yZWdleH0pICYmCiAJICAgICAgICAgICAgJHBhdGggPX4gbSEkc2VsZi0+e2lnbm9yZV9yZWdleH0hOworCXJldHVybiAwIGlmIGRlZmluZWQoJHNlbGYtPntpbmNsdWRlX3JlZ2V4fSkgJiYKKwkgICAgICAgICAgICAkcGF0aCA9fiBtISRzZWxmLT57aW5jbHVkZV9yZWdleH0hOworCXJldHVybiAwIGlmIGRlZmluZWQoJF9pbmNsdWRlX3JlZ2V4KSAmJgorCSAgICAgICAgICAgICRwYXRoID1+IG0hJF9pbmNsdWRlX3JlZ2V4ITsKKwlyZXR1cm4gMSBpZiBkZWZpbmVkKCRzZWxmLT57aW5jbHVkZV9yZWdleH0pOworCXJldHVybiAxIGlmIGRlZmluZWQoJF9pbmNsdWRlX3JlZ2V4KTsKIAlyZXR1cm4gMCB1bmxlc3MgZGVmaW5lZCgkX2lnbm9yZV9yZWdleCk7CiAJcmV0dXJuIDEgaWYgJHBhdGggPX4gbSEkX2lnbm9yZV9yZWdleCFvOwogCXJldHVybiAwOwpAQCAtNTExLDYgKzUyNCw4IEBACiAxOwogX19FTkRfXwogCis9aGVhZDEgTkFNRQorCiBHaXQ6OlNWTjo6RmV0Y2hlciAtIHRyZWUgZGVsdGEgY29uc3VtZXIgZm9yICJnaXQgc3ZuIGZldGNoIgogCiA9aGVhZDEgU1lOT1BTSVMKZGlmZiAtLWdpdCBhL3BlcmwvR2l0L1NWTi9HbG9iU3BlYy5wbSBiL3BlcmwvR2l0L1NWTi9HbG9iU3BlYy5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTVmNWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvcGVybC9HaXQvU1ZOL0dsb2JTcGVjLnBtCkBAIC0wLDAgKzEsNjEgQEAKK3BhY2thZ2UgR2l0OjpTVk46Okdsb2JTcGVjOwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKworc3ViIG5ldyB7CisJbXkgKCRjbGFzcywgJGdsb2IsICRwYXR0ZXJuX29rKSA9IEBfOworCW15ICRyZSA9ICRnbG9iOworCSRyZSA9fiBzIS8rJCEhZzsgIyBubyBuZWVkIGZvciB0cmFpbGluZyBzbGFzaGVzCisJbXkgKEBsZWZ0LCBAcmlnaHQsIEBwYXR0ZXJucyk7CisJbXkgJHN0YXRlID0gImxlZnQiOworCW15ICRkaWVfbXNnID0gIk9ubHkgb25lIHNldCBvZiB3aWxkY2FyZCBkaXJlY3RvcmllcyAiIC4KKwkJCQkiKGUuZy4gJyonIG9yICcqLyovKicpIGlzIHN1cHBvcnRlZDogJyRnbG9iJ1xuIjsKKwlmb3IgbXkgJHBhcnQgKHNwbGl0KG18L3wsICRnbG9iKSkgeworCQlpZiAoJHBhcnQgPX4gL1wqLyAmJiAkcGFydCBuZSAiKiIpIHsKKwkJCWRpZSAiSW52YWxpZCBwYXR0ZXJuIGluICckZ2xvYic6ICRwYXJ0XG4iOworCQl9IGVsc2lmICgkcGF0dGVybl9vayAmJiAkcGFydCA9fiAvW3t9XS8gJiYKKwkJCSAkcGFydCAhfiAvXlx7W157fV0rXH0vKSB7CisJCQlkaWUgIkludmFsaWQgcGF0dGVybiBpbiAnJGdsb2InOiAkcGFydFxuIjsKKwkJfQorCQlpZiAoJHBhcnQgZXEgIioiKSB7CisJCQlkaWUgJGRpZV9tc2cgaWYgJHN0YXRlIGVxICJyaWdodCI7CisJCQkkc3RhdGUgPSAicGF0dGVybiI7CisJCQlwdXNoKEBwYXR0ZXJucywgIlteL10qIik7CisJCX0gZWxzaWYgKCRwYXR0ZXJuX29rICYmICRwYXJ0ID1+IC9eXHsoLiopXH0kLykgeworCQkJZGllICRkaWVfbXNnIGlmICRzdGF0ZSBlcSAicmlnaHQiOworCQkJJHN0YXRlID0gInBhdHRlcm4iOworCQkJbXkgJHAgPSBxdW90ZW1ldGEoJDEpOworCQkJJHAgPX4gcy9cXCwvfC9nOworCQkJcHVzaChAcGF0dGVybnMsICIoPzokcCkiKTsKKwkJfSBlbHNlIHsKKwkJCWlmICgkc3RhdGUgZXEgImxlZnQiKSB7CisJCQkJcHVzaChAbGVmdCwgJHBhcnQpOworCQkJfSBlbHNlIHsKKwkJCQlwdXNoKEByaWdodCwgJHBhcnQpOworCQkJCSRzdGF0ZSA9ICJyaWdodCI7CisJCQl9CisJCX0KKwl9CisJbXkgJGRlcHRoID0gQHBhdHRlcm5zOworCWlmICgkZGVwdGggPT0gMCkgeworCQlkaWUgIk9uZSAnKicgaXMgbmVlZGVkIGluIGdsb2I6ICckZ2xvYidcbiI7CisJfQorCW15ICRsZWZ0ID0gam9pbignLycsIEBsZWZ0KTsKKwlteSAkcmlnaHQgPSBqb2luKCcvJywgQHJpZ2h0KTsKKwkkcmUgPSBqb2luKCcvJywgQHBhdHRlcm5zKTsKKwkkcmUgPSBqb2luKCdcLycsCisJCSAgIGdyZXAobGVuZ3RoLCBxdW90ZW1ldGEoJGxlZnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCRyZSkoPz0vfFwkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlbWV0YSgkcmlnaHQpKSk7CisJbXkgJGxlZnRfcmUgPSBxci9eXC9cUSRsZWZ0XEUoXC98JCkvOworCWJsZXNzIHsgbGVmdCA9PiAkbGVmdCwgcmlnaHQgPT4gJHJpZ2h0LCBsZWZ0X3JlZ2V4ID0+ICRsZWZ0X3JlLAorCSAgICAgICAgcmVnZXggPT4gcXIvJHJlLywgZ2xvYiA9PiAkZ2xvYiwgZGVwdGggPT4gJGRlcHRoIH0sICRjbGFzczsKK30KKworc3ViIGZ1bGxfcGF0aCB7CisJbXkgKCRzZWxmLCAkcGF0aCkgPSBAXzsKKwlyZXR1cm4gKGxlbmd0aCAkc2VsZi0+e2xlZnR9ID8gIiRzZWxmLT57bGVmdH0vIiA6ICcnKSAuCisJICAgICAgICRwYXRoIC4gKGxlbmd0aCAkc2VsZi0+e3JpZ2h0fSA/ICIvJHNlbGYtPntyaWdodH0iIDogJycpOworfQorCisxOwpkaWZmIC0tZ2l0IGEvcGVybC9HaXQvU1ZOL0xvZy5wbSBiL3BlcmwvR2l0L1NWTi9Mb2cucG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y4MzUwYQotLS0gL2Rldi9udWxsCisrKyBiL3BlcmwvR2l0L1NWTi9Mb2cucG0KQEAgLTAsMCArMSwzOTkgQEAKK3BhY2thZ2UgR2l0OjpTVk46OkxvZzsKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgR2l0OjpTVk46OlV0aWxzIHF3KGZhdGFsKTsKK3VzZSBHaXQgcXcoY29tbWFuZAorICAgICAgICAgICBjb21tYW5kX29uZWxpbmUKKyAgICAgICAgICAgY29tbWFuZF9vdXRwdXRfcGlwZQorICAgICAgICAgICBjb21tYW5kX2Nsb3NlX3BpcGUKKyAgICAgICAgICAgZ2V0X3R6X29mZnNldCk7Cit1c2UgUE9TSVggcXcvc3RyZnRpbWUvOwordXNlIGNvbnN0YW50IGNvbW1pdF9sb2dfc2VwYXJhdG9yID0+ICgnLScgeCA3MikgLiAiXG4iOwordXNlIHZhcnMgcXcvJFRaICRsaW1pdCAkY29sb3IgJHBhZ2VyICRub25fcmVjdXJzaXZlICR2ZXJib3NlICRvbmVsaW5lCisgICAgICAgICAgICAlcnVzZXJzICRzaG93X2NvbW1pdCAkaW5jcmVtZW50YWwvOworCisjIE9wdGlvbiBzZXQgaW4gZ2l0LXN2bgorb3VyICRfZ2l0X2Zvcm1hdDsKKworc3ViIGNtdF9zaG93YWJsZSB7CisJbXkgKCRjKSA9IEBfOworCXJldHVybiAxIGlmIGRlZmluZWQgJGMtPntyfTsKKworCSMgYmlnIGNvbW1pdCBtZXNzYWdlIGdvdCB0cnVuY2F0ZWQgYnkgdGhlIDE2ayBwcmV0dHkgYnVmZmVyIGluIHJldi1saXN0CisJaWYgKCRjLT57bH0gJiYgJGMtPntsfS0+Wy0xXSBlcSAiLi4uXG4iICYmCisJCQkJJGMtPnthX3Jhd30gPX4gL1xAKFthLWZcZFwtXSspPiQvKSB7CisJCUB7JGMtPntsfX0gPSAoKTsKKwkJbXkgQGxvZyA9IGNvbW1hbmQocXcvY2F0LWZpbGUgY29tbWl0LywgJGMtPntjfSk7CisKKwkJIyBzaGlmdCBvZmYgdGhlIGhlYWRlcnMKKwkJc2hpZnQgQGxvZyB3aGlsZSAoJGxvZ1swXSBuZSAnJyk7CisJCXNoaWZ0IEBsb2c7CisKKwkJIyBUT0RPOiBtYWtlICRjLT57bH0gbm90IGhhdmUgYSB0cmFpbGluZyBuZXdsaW5lIGluIHRoZSBmdXR1cmUKKwkJQHskYy0+e2x9fSA9IG1hcCB7ICIkX1xuIiB9IGdyZXAgIS9eZ2l0LXN2bi1pZDogLywgQGxvZzsKKworCQkodW5kZWYsICRjLT57cn0sIHVuZGVmKSA9IDo6ZXh0cmFjdF9tZXRhZGF0YSgKKwkJCQkoZ3JlcCgvXmdpdC1zdm4taWQ6IC8sIEBsb2cpKVstMV0pOworCX0KKwlyZXR1cm4gZGVmaW5lZCAkYy0+e3J9OworfQorCitzdWIgbG9nX3VzZV9jb2xvciB7CisJcmV0dXJuICRjb2xvciB8fCBHaXQtPnJlcG9zaXRvcnktPmdldF9jb2xvcmJvb2woJ2NvbG9yLmRpZmYnKTsKK30KKworc3ViIGdpdF9zdm5fbG9nX2NtZCB7CisJbXkgKCRyX21pbiwgJHJfbWF4LCBAYXJncykgPSBAXzsKKwlteSAkaGVhZCA9ICdIRUFEJzsKKwlteSAoQGZpbGVzLCBAbG9nX29wdHMpOworCWZvcmVhY2ggbXkgJHggKEBhcmdzKSB7CisJCWlmICgkeCBlcSAnLS0nIHx8IEBmaWxlcykgeworCQkJcHVzaCBAZmlsZXMsICR4OworCQl9IGVsc2UgeworCQkJaWYgKDo6dmVyaWZ5X3JlZigiJHheMCIpKSB7CisJCQkJJGhlYWQgPSAkeDsKKwkJCX0gZWxzZSB7CisJCQkJcHVzaCBAbG9nX29wdHMsICR4OworCQkJfQorCQl9CisJfQorCisJbXkgKCR1cmwsICRyZXYsICR1dWlkLCAkZ3MpID0gOjp3b3JraW5nX2hlYWRfaW5mbygkaGVhZCk7CisKKwlyZXF1aXJlIEdpdDo6U1ZOOworCSRncyB8fD0gR2l0OjpTVk4tPl9uZXc7CisJbXkgQGNtZCA9IChxdy9sb2cgLS1hYmJyZXYtY29tbWl0IC0tcHJldHR5PXJhdyAtLWRlZmF1bHQvLAorCSAgICAgICAgICAgJGdzLT5yZWZuYW1lKTsKKwlwdXNoIEBjbWQsICctcicgdW5sZXNzICRub25fcmVjdXJzaXZlOworCXB1c2ggQGNtZCwgcXcvLS1yYXcgLS1uYW1lLXN0YXR1cy8gaWYgJHZlcmJvc2U7CisJcHVzaCBAY21kLCAnLS1jb2xvcicgaWYgbG9nX3VzZV9jb2xvcigpOworCXB1c2ggQGNtZCwgQGxvZ19vcHRzOworCWlmIChkZWZpbmVkICRyX21heCAmJiAkcl9tYXggPT0gJHJfbWluKSB7CisJCXB1c2ggQGNtZCwgJy0tbWF4LWNvdW50PTEnOworCQlpZiAobXkgJGMgPSAkZ3MtPnJldl9tYXBfZ2V0KCRyX21heCkpIHsKKwkJCXB1c2ggQGNtZCwgJGM7CisJCX0KKwl9IGVsc2lmIChkZWZpbmVkICRyX21heCkgeworCQlpZiAoJHJfbWF4IDwgJHJfbWluKSB7CisJCQkoJHJfbWluLCAkcl9tYXgpID0gKCRyX21heCwgJHJfbWluKTsKKwkJfQorCQlteSAodW5kZWYsICRjX21heCkgPSAkZ3MtPmZpbmRfcmV2X2JlZm9yZSgkcl9tYXgsIDEsICRyX21pbik7CisJCW15ICh1bmRlZiwgJGNfbWluKSA9ICRncy0+ZmluZF9yZXZfYWZ0ZXIoJHJfbWluLCAxLCAkcl9tYXgpOworCQkjIElmIHRoZXJlIGFyZSBubyBjb21taXRzIGluIHRoZSByYW5nZSwgYm90aCAkY19tYXggYW5kICRjX21pbgorCQkjIHdpbGwgYmUgdW5kZWZpbmVkLiAgSWYgdGhlcmUgaXMgYXQgbGVhc3QgMSBjb21taXQgaW4gdGhlCisJCSMgcmFuZ2UsIGJvdGggd2lsbCBiZSBkZWZpbmVkLgorCQlyZXR1cm4gKCkgaWYgIWRlZmluZWQgJGNfbWluIHx8ICFkZWZpbmVkICRjX21heDsKKwkJaWYgKCRjX21pbiBlcSAkY19tYXgpIHsKKwkJCXB1c2ggQGNtZCwgJy0tbWF4LWNvdW50PTEnLCAkY19taW47CisJCX0gZWxzZSB7CisJCQlwdXNoIEBjbWQsICctLWJvdW5kYXJ5JywgIiRjX21pbi4uJGNfbWF4IjsKKwkJfQorCX0KKwlyZXR1cm4gKEBjbWQsIEBmaWxlcyk7Cit9CisKKyMgYWRhcHRlZCBmcm9tIHBhZ2VyLmMKK3N1YiBjb25maWdfcGFnZXIgeworCWlmICghIC10ICpTVERPVVQpIHsKKwkJJEVOVntHSVRfUEFHRVJfSU5fVVNFfSA9ICdmYWxzZSc7CisJCSRwYWdlciA9IHVuZGVmOworCQlyZXR1cm47CisJfQorCWNob21wKCRwYWdlciA9IGNvbW1hbmRfb25lbGluZShxdyh2YXIgR0lUX1BBR0VSKSkpOworCWlmICgkcGFnZXIgZXEgJ2NhdCcpIHsKKwkJJHBhZ2VyID0gdW5kZWY7CisJfQorCSRFTlZ7R0lUX1BBR0VSX0lOX1VTRX0gPSBkZWZpbmVkKCRwYWdlcik7Cit9CisKK3N1YiBydW5fcGFnZXIgeworCXJldHVybiB1bmxlc3MgZGVmaW5lZCAkcGFnZXI7CisJcGlwZSBteSAoJHJmZCwgJHdmZCkgb3IgcmV0dXJuOworCWRlZmluZWQobXkgJHBpZCA9IGZvcmspIG9yIGZhdGFsICJDYW4ndCBmb3JrOiAkISI7CisJaWYgKCEkcGlkKSB7CisJCW9wZW4gU1RET1VULCAnPiYnLCAkd2ZkIG9yCisJCSAgICAgICAgICAgICAgICAgICAgIGZhdGFsICJDYW4ndCByZWRpcmVjdCB0byBzdGRvdXQ6ICQhIjsKKwkJcmV0dXJuOworCX0KKwlvcGVuIFNURElOLCAnPCYnLCAkcmZkIG9yIGZhdGFsICJDYW4ndCByZWRpcmVjdCBzdGRpbjogJCEiOworCSRFTlZ7TEVTU30gfHw9ICdGUlNYJzsKKwlleGVjICRwYWdlciBvciBmYXRhbCAiQ2FuJ3QgcnVuIHBhZ2VyOiAkISAoJHBhZ2VyKSI7Cit9CisKK3N1YiBmb3JtYXRfc3ZuX2RhdGUgeworCW15ICR0ID0gc2hpZnQgfHwgdGltZTsKKwlyZXF1aXJlIEdpdDo6U1ZOOworCW15ICRnbW9mZiA9IGdldF90el9vZmZzZXQoJHQpOworCXJldHVybiBzdHJmdGltZSgiJVktJW0tJWQgJUg6JU06JVMgJGdtb2ZmICglYSwgJWQgJWIgJVkpIiwgbG9jYWx0aW1lKCR0KSk7Cit9CisKK3N1YiBwYXJzZV9naXRfZGF0ZSB7CisJbXkgKCR0LCAkdHopID0gQF87CisJIyBEYXRlOjpQYXJzZSBpc24ndCBpbiB0aGUgc3RhbmRhcmQgUGVybCBkaXN0cm8gOigKKwlpZiAoJHR6ID1+IHMvXlwrLy8pIHsKKwkJJHQgKz0gdHpfdG9fc19vZmZzZXQoJHR6KTsKKwl9IGVsc2lmICgkdHogPX4gcy9eXC0vLykgeworCQkkdCAtPSB0el90b19zX29mZnNldCgkdHopOworCX0KKwlyZXR1cm4gJHQ7Cit9CisKK3N1YiBzZXRfbG9jYWxfdGltZXpvbmUgeworCWlmIChkZWZpbmVkICRUWikgeworCQkkRU5We1RafSA9ICRUWjsKKwl9IGVsc2UgeworCQlkZWxldGUgJEVOVntUWn07CisJfQorfQorCitzdWIgdHpfdG9fc19vZmZzZXQgeworCW15ICgkdHopID0gQF87CisJJHR6ID1+IHMvKFxkXGQpJC8vOworCXJldHVybiAoJDEgKiA2MCkgKyAoJHR6ICogMzYwMCk7Cit9CisKK3N1YiBnZXRfYXV0aG9yX2luZm8geworCW15ICgkZGVzdCwgJGF1dGhvciwgJHQsICR0eikgPSBAXzsKKwkkYXV0aG9yID1+IHMvKD86XlxzKnxccyokKS8vZzsKKwkkZGVzdC0+e2FfcmF3fSA9ICRhdXRob3I7CisJbXkgJGF1OworCWlmICgkOjpfYXV0aG9ycykgeworCQkkYXUgPSAkcnVzZXJzeyRhdXRob3J9IHx8IHVuZGVmOworCX0KKwlpZiAoISRhdSkgeworCQkoJGF1KSA9ICgkYXV0aG9yID1+IC88KFtePl0rKVxAW14+XSs+JC8pOworCX0KKwkkZGVzdC0+e3R9ID0gJHQ7CisJJGRlc3QtPnt0en0gPSAkdHo7CisJJGRlc3QtPnthfSA9ICRhdTsKKwkkZGVzdC0+e3RfdXRjfSA9IHBhcnNlX2dpdF9kYXRlKCR0LCAkdHopOworfQorCitzdWIgcHJvY2Vzc19jb21taXQgeworCW15ICgkYywgJHJfbWluLCAkcl9tYXgsICRkZWZlcikgPSBAXzsKKwlpZiAoZGVmaW5lZCAkcl9taW4gJiYgZGVmaW5lZCAkcl9tYXgpIHsKKwkJaWYgKCRyX21pbiA9PSAkYy0+e3J9ICYmICRyX21pbiA9PSAkcl9tYXgpIHsKKwkJCXNob3dfY29tbWl0KCRjKTsKKwkJCXJldHVybiAwOworCQl9CisJCXJldHVybiAxIGlmICRyX21pbiA9PSAkcl9tYXg7CisJCWlmICgkcl9taW4gPCAkcl9tYXgpIHsKKwkJCSMgd2UgbmVlZCB0byByZXZlcnNlIHRoZSBwcmludCBvcmRlcgorCQkJcmV0dXJuIDAgaWYgKGRlZmluZWQgJGxpbWl0ICYmIC0tJGxpbWl0IDwgMCk7CisJCQlwdXNoIEAkZGVmZXIsICRjOworCQkJcmV0dXJuIDE7CisJCX0KKwkJaWYgKCRyX21pbiAhPSAkcl9tYXgpIHsKKwkJCXJldHVybiAxIGlmICgkcl9taW4gPCAkYy0+e3J9KTsKKwkJCXJldHVybiAxIGlmICgkcl9tYXggPiAkYy0+e3J9KTsKKwkJfQorCX0KKwlyZXR1cm4gMCBpZiAoZGVmaW5lZCAkbGltaXQgJiYgLS0kbGltaXQgPCAwKTsKKwlzaG93X2NvbW1pdCgkYyk7CisJcmV0dXJuIDE7Cit9CisKK215ICRsX2ZtdDsKK3N1YiBzaG93X2NvbW1pdCB7CisJbXkgJGMgPSBzaGlmdDsKKwlpZiAoJG9uZWxpbmUpIHsKKwkJbXkgJHggPSAiXG4iOworCQlpZiAobXkgJGwgPSAkYy0+e2x9KSB7CisJCQl3aGlsZSAoJGwtPlswXSA9fiAvXlxzKiQvKSB7IHNoaWZ0IEAkbCB9CisJCQkkeCA9ICRsLT5bMF07CisJCX0KKwkJJGxfZm10IHx8PSAnQScgLiBsZW5ndGgoJGMtPntyfSk7CisJCXByaW50ICdyJyxwYWNrKCRsX2ZtdCwgJGMtPntyfSksJyB8ICc7CisJCXByaW50ICIkYy0+e2N9IHwgIiBpZiAkc2hvd19jb21taXQ7CisJCXByaW50ICR4OworCX0gZWxzZSB7CisJCXNob3dfY29tbWl0X25vcm1hbCgkYyk7CisJfQorfQorCitzdWIgc2hvd19jb21taXRfY2hhbmdlZF9wYXRocyB7CisJbXkgKCRjKSA9IEBfOworCXJldHVybiB1bmxlc3MgJGMtPntjaGFuZ2VkfTsKKwlwcmludCAiQ2hhbmdlZCBwYXRoczpcbiIsIEB7JGMtPntjaGFuZ2VkfX07Cit9CisKK3N1YiBzaG93X2NvbW1pdF9ub3JtYWwgeworCW15ICgkYykgPSBAXzsKKwlwcmludCBjb21taXRfbG9nX3NlcGFyYXRvciwgInIkYy0+e3J9IHwgIjsKKwlwcmludCAiJGMtPntjfSB8ICIgaWYgJHNob3dfY29tbWl0OworCXByaW50ICIkYy0+e2F9IHwgIiwgZm9ybWF0X3N2bl9kYXRlKCRjLT57dF91dGN9KSwgJyB8ICc7CisJbXkgJG5yX2xpbmUgPSAwOworCisJaWYgKG15ICRsID0gJGMtPntsfSkgeworCQl3aGlsZSAoJGwtPlskIyRsXSBlcSAiXG4iICYmICQjJGwgPiAwCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGwtPlsoJCMkbCAtIDEpXSBlcSAiXG4iKSB7CisJCQlwb3AgQCRsOworCQl9CisJCSRucl9saW5lID0gc2NhbGFyIEAkbDsKKwkJaWYgKCEkbnJfbGluZSkgeworCQkJcHJpbnQgIjEgbGluZVxuXG5cbiI7CisJCX0gZWxzZSB7CisJCQlpZiAoJG5yX2xpbmUgPT0gMSkgeworCQkJCSRucl9saW5lID0gJzEgbGluZSc7CisJCQl9IGVsc2UgeworCQkJCSRucl9saW5lIC49ICcgbGluZXMnOworCQkJfQorCQkJcHJpbnQgJG5yX2xpbmUsICJcbiI7CisJCQlzaG93X2NvbW1pdF9jaGFuZ2VkX3BhdGhzKCRjKTsKKwkJCXByaW50ICJcbiI7CisJCQlwcmludCAkXyBmb3JlYWNoIEAkbDsKKwkJfQorCX0gZWxzZSB7CisJCXByaW50ICIxIGxpbmVcbiI7CisJCXNob3dfY29tbWl0X2NoYW5nZWRfcGF0aHMoJGMpOworCQlwcmludCAiXG4iOworCisJfQorCWZvcmVhY2ggbXkgJHggKHF3L3JhdyBzdGF0IGRpZmYvKSB7CisJCWlmICgkYy0+eyR4fSkgeworCQkJcHJpbnQgIlxuIjsKKwkJCXByaW50ICRfIGZvcmVhY2ggQHskYy0+eyR4fX0KKwkJfQorCX0KK30KKworc3ViIGNtZF9zaG93X2xvZyB7CisJbXkgKEBhcmdzKSA9IEBfOworCW15ICgkcl9taW4sICRyX21heCk7CisJbXkgJHJfbGFzdCA9IC0xOyAjIHByZXZlbnQgZHVwZXMKKwlzZXRfbG9jYWxfdGltZXpvbmUoKTsKKwlpZiAoZGVmaW5lZCAkOjpfcmV2aXNpb24pIHsKKwkJaWYgKCQ6Ol9yZXZpc2lvbiA9fiAvXihcZCspOihcZCspJC8pIHsKKwkJCSgkcl9taW4sICRyX21heCkgPSAoJDEsICQyKTsKKwkJfSBlbHNpZiAoJDo6X3JldmlzaW9uID1+IC9eXGQrJC8pIHsKKwkJCSRyX21pbiA9ICRyX21heCA9ICQ6Ol9yZXZpc2lvbjsKKwkJfSBlbHNlIHsKKwkJCWZhdGFsICItciQ6Ol9yZXZpc2lvbiBpcyBub3Qgc3VwcG9ydGVkLCB1c2UgIiwKKwkJCQkic3RhbmRhcmQgJ2dpdCBsb2cnIGFyZ3VtZW50cyBpbnN0ZWFkIjsKKwkJfQorCX0KKworCWNvbmZpZ19wYWdlcigpOworCUBhcmdzID0gZ2l0X3N2bl9sb2dfY21kKCRyX21pbiwgJHJfbWF4LCBAYXJncyk7CisJaWYgKCFAYXJncykgeworCQlwcmludCBjb21taXRfbG9nX3NlcGFyYXRvciB1bmxlc3MgJGluY3JlbWVudGFsIHx8ICRvbmVsaW5lOworCQlyZXR1cm47CisJfQorCW15ICRsb2cgPSBjb21tYW5kX291dHB1dF9waXBlKEBhcmdzKTsKKwlydW5fcGFnZXIoKTsKKwlteSAoQGssICRjLCAkZCwgJHN0YXQpOworCW15ICRlc2NfY29sb3IgPSBxci8oPzpcMDMzXFsoPzooPzpcZCs7KSpcZCopP20pKi87CisJd2hpbGUgKDwkbG9nPikgeworCQlpZiAoL14ke2VzY19jb2xvcn1jb21taXQgKD86LSApPygkOjpzaGExX3Nob3J0KS9vKSB7CisJCQlteSAkY210ID0gJDE7CisJCQlpZiAoJGMgJiYgY210X3Nob3dhYmxlKCRjKSAmJiAkYy0+e3J9ICE9ICRyX2xhc3QpIHsKKwkJCQkkcl9sYXN0ID0gJGMtPntyfTsKKwkJCQlwcm9jZXNzX2NvbW1pdCgkYywgJHJfbWluLCAkcl9tYXgsIFxAaykgb3IKKwkJCQkJCQkJZ290byBvdXQ7CisJCQl9CisJCQkkZCA9IHVuZGVmOworCQkJJGMgPSB7IGMgPT4gJGNtdCB9OworCQl9IGVsc2lmICgvXiR7ZXNjX2NvbG9yfWF1dGhvciAoLispIChcZCspIChbXC1cK10/XGQrKSQvbykgeworCQkJZ2V0X2F1dGhvcl9pbmZvKCRjLCAkMSwgJDIsICQzKTsKKwkJfSBlbHNpZiAoL14ke2VzY19jb2xvcn0oPzp0cmVlfHBhcmVudHxjb21taXR0ZXIpIC9vKSB7CisJCQkjIGlnbm9yZQorCQl9IGVsc2lmICgvXiR7ZXNjX2NvbG9yfTpcZHs2fSBcZHs2fSAkOjpzaGExX3Nob3J0L28pIHsKKwkJCXB1c2ggQHskYy0+e3Jhd319LCAkXzsKKwkJfSBlbHNpZiAoL14ke2VzY19jb2xvcn1bQUNSTURUXVx0LykgeworCQkJIyB3ZSBjb3VsZCBhZGQgJFNWTi0+e3N2bl9wYXRofSBoZXJlLCBidXQgdGhhdCByZXF1aXJlcworCQkJIyByZW1vdGUgYWNjZXNzIGF0IHRoZSBtb21lbnQgKHJlcG9fcGF0aF9zcGxpdCkuLi4KKwkJCXMjXigke2VzY19jb2xvcn0pKFtBQ1JNRFRdKVx0IyQxICAgJDIgI287CisJCQlwdXNoIEB7JGMtPntjaGFuZ2VkfX0sICRfOworCQl9IGVsc2lmICgvXiR7ZXNjX2NvbG9yfWRpZmYgL28pIHsKKwkJCSRkID0gMTsKKwkJCXB1c2ggQHskYy0+e2RpZmZ9fSwgJF87CisJCX0gZWxzaWYgKCRkKSB7CisJCQlwdXNoIEB7JGMtPntkaWZmfX0sICRfOworCQl9IGVsc2lmICgvXlwgLitcIFx8XHMqXGQrXCAkZXNjX2NvbG9yW1wrXC1dKgorCQkgICAgICAgICAgJGVzY19jb2xvcipbXCtcLV0qJGVzY19jb2xvciQveCkgeworCQkJJHN0YXQgPSAxOworCQkJcHVzaCBAeyRjLT57c3RhdH19LCAkXzsKKwkJfSBlbHNpZiAoJHN0YXQgJiYgL14gXGQrIGZpbGVzIGNoYW5nZWQsIFxkKyBpbnNlcnRpb25zLykgeworCQkJcHVzaCBAeyRjLT57c3RhdH19LCAkXzsKKwkJCSRzdGF0ID0gdW5kZWY7CisJCX0gZWxzaWYgKC9eJHtlc2NfY29sb3J9ICAgIChnaXQtc3ZuLWlkOi4rKSQvbykgeworCQkJKCRjLT57dXJsfSwgJGMtPntyfSwgdW5kZWYpID0gOjpleHRyYWN0X21ldGFkYXRhKCQxKTsKKwkJfSBlbHNpZiAocy9eJHtlc2NfY29sb3J9ICAgIC8vbykgeworCQkJcHVzaCBAeyRjLT57bH19LCAkXzsKKwkJfQorCX0KKwlpZiAoJGMgJiYgZGVmaW5lZCAkYy0+e3J9ICYmICRjLT57cn0gIT0gJHJfbGFzdCkgeworCQkkcl9sYXN0ID0gJGMtPntyfTsKKwkJcHJvY2Vzc19jb21taXQoJGMsICRyX21pbiwgJHJfbWF4LCBcQGspOworCX0KKwlpZiAoQGspIHsKKwkJKCRyX21pbiwgJHJfbWF4KSA9ICgkcl9tYXgsICRyX21pbik7CisJCXByb2Nlc3NfY29tbWl0KCRfLCAkcl9taW4sICRyX21heCkgZm9yZWFjaCByZXZlcnNlIEBrOworCX0KK291dDoKKwljbG9zZSAkbG9nOworCXByaW50IGNvbW1pdF9sb2dfc2VwYXJhdG9yIHVubGVzcyAkaW5jcmVtZW50YWwgfHwgJG9uZWxpbmU7Cit9CisKK3N1YiBjbWRfYmxhbWUgeworCW15ICRwYXRoID0gcG9wOworCisJY29uZmlnX3BhZ2VyKCk7CisJcnVuX3BhZ2VyKCk7CisKKwlteSAoJGZoLCAkY3R4LCAkcmV2KTsKKworCWlmICgkX2dpdF9mb3JtYXQpIHsKKwkJKCRmaCwgJGN0eCkgPSBjb21tYW5kX291dHB1dF9waXBlKCdibGFtZScsIEBfLCAkcGF0aCk7CisJCXdoaWxlIChteSAkbGluZSA9IDwkZmg+KSB7CisJCQlpZiAoJGxpbmUgPX4gL15cXj8oW1s6eGRpZ2l0Ol1dKylccy8pIHsKKwkJCQkjIFVuY29tbWl0dGVkIGVkaXRzIHNob3cgdXAgYXMgYSByZXYgSUQgb2YKKwkJCQkjIGFsbCB6ZXJvcywgd2hpY2ggd2UgY2FuJ3QgbG9vayB1cCB3aXRoCisJCQkJIyBjbXRfbWV0YWRhdGEKKwkJCQlpZiAoJDEgIX4gL14wKyQvKSB7CisJCQkJCSh1bmRlZiwgJHJldiwgdW5kZWYpID0KKwkJCQkJCTo6Y210X21ldGFkYXRhKCQxKTsKKwkJCQkJJHJldiA9ICcwJyBpZiAoISRyZXYpOworCQkJCX0gZWxzZSB7CisJCQkJCSRyZXYgPSAnMCc7CisJCQkJfQorCQkJCSRyZXYgPSBzcHJpbnRmKCclLTEwcycsICRyZXYpOworCQkJCSRsaW5lID1+IHMvXlxeP1tbOnhkaWdpdDpdXSsoXHMpLyRyZXYkMS87CisJCQl9CisJCQlwcmludCAkbGluZTsKKwkJfQorCX0gZWxzZSB7CisJCSgkZmgsICRjdHgpID0gY29tbWFuZF9vdXRwdXRfcGlwZSgnYmxhbWUnLCAnLXAnLCBAXywgJ0hFQUQnLAorCQkJCQkJICAnLS0nLCAkcGF0aCk7CisJCW15ICgkc2hhMSk7CisJCW15ICVhdXRob3JzOworCQlteSBAYnVmZmVyOworCQlteSAlZHNoYTsgI2Rpc3RpbmN0IHNoYSBrZXlzCisKKwkJd2hpbGUgKG15ICRsaW5lID0gPCRmaD4pIHsKKwkJCXB1c2ggQGJ1ZmZlciwgJGxpbmU7CisJCQlpZiAoJGxpbmUgPX4gL14oW1s6eGRpZ2l0Ol1dezQwfSlcc1xkK1xzXGQrLykgeworCQkJCSRkc2hheyQxfSA9IDE7CisJCQl9CisJCX0KKworCQlteSAkczJyID0gOjpjbXRfc2hhMnJldl9iYXRjaChba2V5cyAlZHNoYV0pOworCisJCWZvcmVhY2ggbXkgJGxpbmUgKEBidWZmZXIpIHsKKwkJCWlmICgkbGluZSA9fiAvXihbWzp4ZGlnaXQ6XV17NDB9KVxzXGQrXHNcZCsvKSB7CisJCQkJJHJldiA9ICRzMnItPnskMX07CisJCQkJJHJldiA9ICcwJyBpZiAoISRyZXYpCisJCQl9CisJCQllbHNpZiAoJGxpbmUgPX4gL15hdXRob3IgKC4qKS8pIHsKKwkJCQkkYXV0aG9yc3skcmV2fSA9ICQxOworCQkJCSRhdXRob3JzeyRyZXZ9ID1+IHMvXHMvXy9nOworCQkJfQorCQkJZWxzaWYgKCRsaW5lID1+IC9eXHQoLiopJC8pIHsKKwkJCQlwcmludGYoIiU2cyAlMTBzICVzXG4iLCAkcmV2LCAkYXV0aG9yc3skcmV2fSwgJDEpOworCQkJfQorCQl9CisJfQorCWNvbW1hbmRfY2xvc2VfcGlwZSgkZmgsICRjdHgpOworfQorCisxOwpkaWZmIC0tZ2l0IGEvcGVybC9HaXQvU1ZOL01pZ3JhdGlvbi5wbSBiL3BlcmwvR2l0L1NWTi9NaWdyYXRpb24ucG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBkYWYzNQotLS0gL2Rldi9udWxsCisrKyBiL3BlcmwvR2l0L1NWTi9NaWdyYXRpb24ucG0KQEAgLTAsMCArMSwyNTggQEAKK3BhY2thZ2UgR2l0OjpTVk46Ok1pZ3JhdGlvbjsKKyMgdGhlc2UgdmVyc2lvbiBudW1iZXJzIGRvIE5PVCBjb3JyZXNwb25kIHRvIGFjdHVhbCB2ZXJzaW9uIG51bWJlcnMKKyMgb2YgZ2l0IG5vciBnaXQtc3ZuLiAgVGhleSBhcmUganVzdCByZWxhdGl2ZS4KKyMKKyMgdjAgbGF5b3V0OiAuZ2l0LyRpZC9pbmZvL3VybCwgcmVmcy9oZWFkcy8kaWQtSEVBRAorIworIyB2MSBsYXlvdXQ6IC5naXQvJGlkL2luZm8vdXJsLCByZWZzL3JlbW90ZXMvJGlkCisjCisjIHYyIGxheW91dDogLmdpdC9zdm4vJGlkL2luZm8vdXJsLCByZWZzL3JlbW90ZXMvJGlkCisjCisjIHYzIGxheW91dDogLmdpdC9zdm4vJGlkLCByZWZzL3JlbW90ZXMvJGlkCisjICAgICAgICAgICAgLSBpbmZvL3VybCBtYXkgcmVtYWluIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorIyAgICAgICAgICAgIC0gdGhpcyBpcyB3aGF0IHdlIG1pZ3JhdGUgdXAgdG8gdGhpcyBsYXlvdXQgYXV0b21hdGljYWxseSwKKyMgICAgICAgICAgICAtIHRoaXMgd2lsbCBiZSB1c2VkIGJ5IGdpdCBzdm4gaW5pdCBvbiBzaW5nbGUgYnJhbmNoZXMKKyMgdjMuMSBsYXlvdXQgKGF1dG8gbWlncmF0ZWQpOgorIyAgICAgICAgICAgIC0gLnJldl9kYiA9PiAucmV2X2RiLiRVVUlELCAucmV2X2RiIHdpbGwgcmVtYWluIGFzIGEgc3ltbGluaworIyAgICAgICAgICAgICAgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CisjCisjIHY0IGxheW91dDogLmdpdC9zdm4vJHJlcG9faWQvJGlkLCByZWZzL3JlbW90ZXMvJHJlcG9faWQvJGlkCisjICAgICAgICAgICAgLSB0aGlzIGlzIG9ubHkgY3JlYXRlZCBmb3IgbmV3bHkgbXVsdGktaW5pdC1lZAorIyAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLiAgU2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlCisjICAgICAgICAgICAgICAtLXVzZS1zZXBhcmF0ZS1yZW1vdGVzIG9wdGlvbiBpbiBnaXQtY2xvbmUgKG5vdyBkZWZhdWx0KQorIyAgICAgICAgICAgIC0gd2UgZG8gbm90IGF1dG9tYXRpY2FsbHkgbWlncmF0ZSB0byB0aGlzIChmb2xsb3dpbmcKKyMgICAgICAgICAgICAgIHRoZSBleGFtcGxlIHNldCBieSBjb3JlIGdpdCkKKyMKKyMgdjUgbGF5b3V0OiAucmV2X2RiLiRVVUlEID0+IC5yZXZfbWFwLiRVVUlECisjICAgICAgICAgICAgLSBuZXdlciwgbW9yZS1lZmZpY2llbnQgZm9ybWF0IHRoYXQgdXNlcyAyNC1ieXRlcyBwZXIgcmVjb3JkCisjICAgICAgICAgICAgICB3aXRoIG5vIGZpbGxlciBzcGFjZS4KKyMgICAgICAgICAgICAtIHVzZSB4eGQgLWMyNCA8IC5yZXZfbWFwLiRVVUlEIHRvIHZpZXcgYW5kIGRlYnVnCisjICAgICAgICAgICAgLSBUaGlzIGlzIGEgb25lLXdheSBtaWdyYXRpb24sIHJlcG9zaXRvcmllcyB1cGRhdGVkIHRvIHRoZQorIyAgICAgICAgICAgICAgbmV3IGZvcm1hdCB3aWxsIG5vdCBiZSBhYmxlIHRvIHVzZSBvbGQgZ2l0LXN2biB3aXRob3V0CisjICAgICAgICAgICAgICByZWJ1aWxkaW5nIHRoZSAucmV2X2RiLiAgUmVidWlsZGluZyB0aGUgcmV2X2RiIGlzIG5vdAorIyAgICAgICAgICAgICAgcG9zc2libGUgaWYgbm9NZXRhZGF0YSBvciB1c2VTdm1Qcm9wcyBhcmUgc2V0OyBidXQgc2hvdWxkCisjICAgICAgICAgICAgICBiZSBubyBwcm9ibGVtIGZvciB1c2VycyB0aGF0IHVzZSB0aGUgKHNlbnNpYmxlKSBkZWZhdWx0cy4KK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgQ2FycCBxdy9jcm9hay87Cit1c2UgRmlsZTo6UGF0aCBxdy9ta3BhdGgvOwordXNlIEZpbGU6OkJhc2VuYW1lIHF3L2Rpcm5hbWUgYmFzZW5hbWUvOworCitvdXIgJF9taW5pbWl6ZTsKK3VzZSBHaXQgcXcoCisJY29tbWFuZAorCWNvbW1hbmRfbm9pc3kKKwljb21tYW5kX291dHB1dF9waXBlCisJY29tbWFuZF9jbG9zZV9waXBlCispOworCitzdWIgbWlncmF0ZV9mcm9tX3YwIHsKKwlteSAkZ2l0X2RpciA9ICRFTlZ7R0lUX0RJUn07CisJcmV0dXJuIHVuZGVmIHVubGVzcyAtZCAkZ2l0X2RpcjsKKwlteSAoJGZoLCAkY3R4KSA9IGNvbW1hbmRfb3V0cHV0X3BpcGUocXcvcmV2LXBhcnNlIC0tc3ltYm9saWMgLS1hbGwvKTsKKwlteSAkbWlncmF0ZWQgPSAwOworCXdoaWxlICg8JGZoPikgeworCQljaG9tcDsKKwkJbXkgKCRpZCwgJG9yaWdfcmVmKSA9ICgkXywgJF8pOworCQluZXh0IHVubGVzcyAkaWQgPX4gcyNecmVmcy9oZWFkcy8oLispLUhFQUQkIyQxIzsKKwkJbmV4dCB1bmxlc3MgLWYgIiRnaXRfZGlyLyRpZC9pbmZvL3VybCI7CisJCW15ICRuZXdfcmVmID0gInJlZnMvcmVtb3Rlcy8kaWQiOworCQlpZiAoOjp2ZXJpZnlfcmVmKCIkbmV3X3JlZl4wIikpIHsKKwkJCXByaW50IFNUREVSUiAiVzogJG9yaWdfcmVmIGlzIHByb2JhYmx5IGFuIG9sZCAiLAorCQkJICAgICAgICAgICAgICJicmFuY2ggdXNlZCBieSBhbiBhbmNpZW50IHZlcnNpb24gb2YgIiwKKwkJCQkgICAgICJnaXQtc3ZuLlxuIiwKKwkJCQkgICAgICJIb3dldmVyLCAkbmV3X3JlZiBhbHNvIGV4aXN0cy5cbiIsCisJCQkJICAgICAiV2Ugd2lsbCBub3QgYmUgYWJsZSAiLAorCQkJCSAgICAgInRvIHVzZSB0aGlzIGJyYW5jaCB1bnRpbCB0aGlzICIsCisJCQkJICAgICAiYW1iaWd1aXR5IGlzIHJlc29sdmVkLlxuIjsKKwkJCW5leHQ7CisJCX0KKwkJcHJpbnQgU1RERVJSICJNaWdyYXRpbmcgZnJvbSB2MCBsYXlvdXQuLi5cbiIgaWYgISRtaWdyYXRlZDsKKwkJcHJpbnQgU1RERVJSICJSZW5hbWluZyByZWY6ICRvcmlnX3JlZiA9PiAkbmV3X3JlZlxuIjsKKwkJY29tbWFuZF9ub2lzeSgndXBkYXRlLXJlZicsICRuZXdfcmVmLCAkb3JpZ19yZWYpOworCQljb21tYW5kX25vaXN5KCd1cGRhdGUtcmVmJywgJy1kJywgJG9yaWdfcmVmLCAkb3JpZ19yZWYpOworCQkkbWlncmF0ZWQrKzsKKwl9CisJY29tbWFuZF9jbG9zZV9waXBlKCRmaCwgJGN0eCk7CisJcHJpbnQgU1RERVJSICJEb25lIG1pZ3JhdGluZyBmcm9tIHYwIGxheW91dC4uLlxuIiBpZiAkbWlncmF0ZWQ7CisJJG1pZ3JhdGVkOworfQorCitzdWIgbWlncmF0ZV9mcm9tX3YxIHsKKwlteSAkZ2l0X2RpciA9ICRFTlZ7R0lUX0RJUn07CisJbXkgJG1pZ3JhdGVkID0gMDsKKwlyZXR1cm4gJG1pZ3JhdGVkIHVubGVzcyAtZCAkZ2l0X2RpcjsKKwlteSAkc3ZuX2RpciA9ICIkZ2l0X2Rpci9zdm4iOworCisJIyBqdXN0IGluIGNhc2Ugc29tZWJvZHkgdXNlZCAnc3ZuJyBhcyB0aGVpciAkaWQgYXQgc29tZSBwb2ludC4uLgorCXJldHVybiAkbWlncmF0ZWQgaWYgLWQgJHN2bl9kaXIgJiYgISAtZiAiJHN2bl9kaXIvaW5mby91cmwiOworCisJcHJpbnQgU1RERVJSICJNaWdyYXRpbmcgZnJvbSBhIGdpdC1zdm4gdjEgbGF5b3V0Li4uXG4iOworCW1rcGF0aChbJHN2bl9kaXJdKTsKKwlwcmludCBTVERFUlIgIkRhdGEgZnJvbSBhIHByZXZpb3VzIHZlcnNpb24gb2YgZ2l0LXN2biBleGlzdHMsIGJ1dFxuXHQiLAorCSAgICAgICAgICAgICAiJHN2bl9kaXJcblx0KHJlcXVpcmVkIGZvciB0aGlzIHZlcnNpb24gIiwKKwkgICAgICAgICAgICAgIigkOjpWRVJTSU9OKSBvZiBnaXQtc3ZuKSBkb2VzIG5vdCBleGlzdC5cbiI7CisJbXkgKCRmaCwgJGN0eCkgPSBjb21tYW5kX291dHB1dF9waXBlKHF3L3Jldi1wYXJzZSAtLXN5bWJvbGljIC0tYWxsLyk7CisJd2hpbGUgKDwkZmg+KSB7CisJCW15ICR4ID0gJF87CisJCW5leHQgdW5sZXNzICR4ID1+IHMjXnJlZnMvcmVtb3Rlcy8jIzsKKwkJY2hvbXAgJHg7CisJCW5leHQgdW5sZXNzIC1mICIkZ2l0X2Rpci8keC9pbmZvL3VybCI7CisJCW15ICR1ID0gZXZhbCB7IDo6ZmlsZV90b19zKCIkZ2l0X2Rpci8keC9pbmZvL3VybCIpIH07CisJCW5leHQgdW5sZXNzICR1OworCQlteSAkZG4gPSBkaXJuYW1lKCIkZ2l0X2Rpci9zdm4vJHgiKTsKKwkJbWtwYXRoKFskZG5dKSB1bmxlc3MgLWQgJGRuOworCQlpZiAoJHggZXEgJ3N2bicpIHsgIyB0aGV5IHVzZWQgJ3N2bicgYXMgR0lUX1NWTl9JRDoKKwkJCW1rcGF0aChbIiRnaXRfZGlyL3N2bi9zdm4iXSk7CisJCQlwcmludCBTVERFUlIgIiAtICRnaXRfZGlyLyR4L2luZm8gPT4gIiwKKwkJCSAgICAgICAgICAgICAgICAiJGdpdF9kaXIvc3ZuLyR4L2luZm9cbiI7CisJCQlyZW5hbWUgIiRnaXRfZGlyLyR4L2luZm8iLCAiJGdpdF9kaXIvc3ZuLyR4L2luZm8iIG9yCisJCQkgICAgICAgY3JvYWsgIiQhOiAkeCI7CisJCQkjIGRvbid0IHdvcnJ5IHRvbyBtdWNoIGFib3V0IHRoZXNlLCB0aGV5IHByb2JhYmx5CisJCQkjIGRvbid0IGV4aXN0IHdpdGggcmVwb3MgdGhpcyBvbGQgKHNhdmUgZm9yIGluZGV4LAorCQkJIyBhbmQgd2UgY2FuIGVhc2lseSByZWdlbmVyYXRlIHRoYXQpCisJCQlmb3JlYWNoIG15ICRmIChxdy91bmhhbmRsZWQubG9nIGluZGV4IC5yZXZfZGIvKSB7CisJCQkJcmVuYW1lICIkZ2l0X2Rpci8keC8kZiIsICIkZ2l0X2Rpci9zdm4vJHgvJGYiOworCQkJfQorCQl9IGVsc2UgeworCQkJcHJpbnQgU1RERVJSICIgLSAkZ2l0X2Rpci8keCA9PiAkZ2l0X2Rpci9zdm4vJHhcbiI7CisJCQlyZW5hbWUgIiRnaXRfZGlyLyR4IiwgIiRnaXRfZGlyL3N2bi8keCIgb3IKKwkJCSAgICAgICBjcm9hayAiJCE6ICR4IjsKKwkJfQorCQkkbWlncmF0ZWQrKzsKKwl9CisJY29tbWFuZF9jbG9zZV9waXBlKCRmaCwgJGN0eCk7CisJcHJpbnQgU1RERVJSICJEb25lIG1pZ3JhdGluZyBmcm9tIGEgZ2l0LXN2biB2MSBsYXlvdXRcbiI7CisJJG1pZ3JhdGVkOworfQorCitzdWIgcmVhZF9vbGRfdXJscyB7CisJbXkgKCRsX21hcCwgJHBmeCwgJHBhdGgpID0gQF87CisJbXkgQGRpcjsKKwlmb3JlYWNoICg8JHBhdGgvKj4pIHsKKwkJaWYgKC1yICIkXy9pbmZvL3VybCIpIHsKKwkJCSRwZnggLj0gJy8nIGlmICRwZnggJiYgJHBmeCAhfiBtIS8kITsKKwkJCW15ICRyZWZfaWQgPSAkcGZ4IC4gYmFzZW5hbWUgJF87CisJCQlteSAkdXJsID0gOjpmaWxlX3RvX3MoIiRfL2luZm8vdXJsIik7CisJCQkkbF9tYXAtPnskcmVmX2lkfSA9ICR1cmw7CisJCX0gZWxzaWYgKC1kICRfKSB7CisJCQlwdXNoIEBkaXIsICRfOworCQl9CisJfQorCWZvcmVhY2ggKEBkaXIpIHsKKwkJbXkgJHggPSAkXzsKKwkJJHggPX4gcyFeXFEkRU5We0dJVF9ESVJ9XEUvc3ZuLyEhbzsKKwkJcmVhZF9vbGRfdXJscygkbF9tYXAsICR4LCAkXyk7CisJfQorfQorCitzdWIgbWlncmF0ZV9mcm9tX3YyIHsKKwlteSBAY2ZnID0gY29tbWFuZChxdy9jb25maWcgLWwvKTsKKwlyZXR1cm4gaWYgZ3JlcCAvXnN2bi1yZW1vdGVcLi4rXC51cmw9LywgQGNmZzsKKwlteSAlbF9tYXA7CisJcmVhZF9vbGRfdXJscyhcJWxfbWFwLCAnJywgIiRFTlZ7R0lUX0RJUn0vc3ZuIik7CisJbXkgJG1pZ3JhdGVkID0gMDsKKworCXJlcXVpcmUgR2l0OjpTVk47CisJZm9yZWFjaCBteSAkcmVmX2lkIChzb3J0IGtleXMgJWxfbWFwKSB7CisJCWV2YWwgeyBHaXQ6OlNWTi0+aW5pdCgkbF9tYXB7JHJlZl9pZH0sICcnLCB1bmRlZiwgJHJlZl9pZCkgfTsKKwkJaWYgKCRAKSB7CisJCQlHaXQ6OlNWTi0+aW5pdCgkbF9tYXB7JHJlZl9pZH0sICcnLCAkcmVmX2lkLCAkcmVmX2lkKTsKKwkJfQorCQkkbWlncmF0ZWQrKzsKKwl9CisJJG1pZ3JhdGVkOworfQorCitzdWIgbWluaW1pemVfY29ubmVjdGlvbnMgeworCXJlcXVpcmUgR2l0OjpTVk47CisJcmVxdWlyZSBHaXQ6OlNWTjo6UmE7CisKKwlteSAkciA9IEdpdDo6U1ZOOjpyZWFkX2FsbF9yZW1vdGVzKCk7CisJbXkgJG5ld191cmxzID0ge307CisJbXkgJHJvb3RfcmVwb3MgPSB7fTsKKwlmb3JlYWNoIG15ICRyZXBvX2lkIChrZXlzICUkcikgeworCQlteSAkdXJsID0gJHItPnskcmVwb19pZH0tPnt1cmx9IG9yIG5leHQ7CisJCW15ICRmZXRjaCA9ICRyLT57JHJlcG9faWR9LT57ZmV0Y2h9IG9yIG5leHQ7CisJCW15ICRyYSA9IEdpdDo6U1ZOOjpSYS0+bmV3KCR1cmwpOworCisJCSMgc2tpcCBleGlzdGluZyBjYXNlcyB3aGVyZSB3ZSBhbHJlYWR5IGNvbm5lY3QgdG8gdGhlIHJvb3QKKwkJaWYgKCgkcmEtPnVybCBlcSAkcmEtPntyZXBvc19yb290fSkgfHwKKwkJICAgICgkcmEtPntyZXBvc19yb290fSBlcSAkcmVwb19pZCkpIHsKKwkJCSRyb290X3JlcG9zLT57JHJhLT51cmx9ID0gJHJlcG9faWQ7CisJCQluZXh0OworCQl9CisKKwkJbXkgJHJvb3RfcmEgPSBHaXQ6OlNWTjo6UmEtPm5ldygkcmEtPntyZXBvc19yb290fSk7CisJCW15ICRyb290X3BhdGggPSAkcmEtPnVybDsKKwkJJHJvb3RfcGF0aCA9fiBzI15cUSRyYS0+e3JlcG9zX3Jvb3R9XEUoL3wkKSMjOworCQlmb3JlYWNoIG15ICRwYXRoIChrZXlzICUkZmV0Y2gpIHsKKwkJCW15ICRyZWZfaWQgPSAkZmV0Y2gtPnskcGF0aH07CisJCQlteSAkZ3MgPSBHaXQ6OlNWTi0+bmV3KCRyZWZfaWQsICRyZXBvX2lkLCAkcGF0aCk7CisKKwkJCSMgbWFrZSBzdXJlIHdlIGNhbiByZWFkIHdoZW4gY29ubmVjdGluZyB0bworCQkJIyBhIGhpZ2hlciBsZXZlbCBvZiBhIHJlcG9zaXRvcnkKKwkJCW15ICgkbGFzdF9yZXYsIHVuZGVmKSA9ICRncy0+bGFzdF9yZXZfY29tbWl0OworCQkJaWYgKCFkZWZpbmVkICRsYXN0X3JldikgeworCQkJCSRsYXN0X3JldiA9IGV2YWwgeworCQkJCQkkcm9vdF9yYS0+Z2V0X2xhdGVzdF9yZXZudW07CisJCQkJfTsKKwkJCQluZXh0IGlmICRAOworCQkJfQorCQkJbXkgJG5ldyA9ICRyb290X3BhdGg7CisJCQkkbmV3IC49IGxlbmd0aCAkcGF0aCA/ICIvJHBhdGgiIDogJyc7CisJCQlldmFsIHsKKwkJCQkkcm9vdF9yYS0+Z2V0X2xvZyhbJG5ld10sICRsYXN0X3JldiwgJGxhc3RfcmV2LAorCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAxLCBzdWIgeyB9KTsKKwkJCX07CisJCQluZXh0IGlmICRAOworCQkJJG5ld191cmxzLT57JHJhLT57cmVwb3Nfcm9vdH19LT57JG5ld30gPQorCQkJICAgICAgICB7IHJlZl9pZCA9PiAkcmVmX2lkLAorCQkJCSAgb2xkX3JlcG9faWQgPT4gJHJlcG9faWQsCisJCQkJICBvbGRfcGF0aCA9PiAkcGF0aCB9OworCQl9CisJfQorCisJbXkgQGVtcHRpZWQ7CisJZm9yZWFjaCBteSAkdXJsIChrZXlzICUkbmV3X3VybHMpIHsKKwkJIyBzZWUgaWYgd2UgY2FuIHJlLXVzZSBhbiBleGlzdGluZyBbc3ZuLXJlbW90ZSAicmVwb19pZCJdCisJCSMgaW5zdGVhZCBvZiBjcmVhdGluZyBhKG4gdWdseSkgbmV3IHNlY3Rpb246CisJCW15ICRyZXBvX2lkID0gJHJvb3RfcmVwb3MtPnskdXJsfSB8fCAkdXJsOworCisJCW15ICRmZXRjaCA9ICRuZXdfdXJscy0+eyR1cmx9OworCQlmb3JlYWNoIG15ICRwYXRoIChrZXlzICUkZmV0Y2gpIHsKKwkJCW15ICR4ID0gJGZldGNoLT57JHBhdGh9OworCQkJR2l0OjpTVk4tPmluaXQoJHVybCwgJHBhdGgsICRyZXBvX2lkLCAkeC0+e3JlZl9pZH0pOworCQkJbXkgJHBmeCA9ICJzdm4tcmVtb3RlLiR4LT57b2xkX3JlcG9faWR9IjsKKworCQkJbXkgJG9sZF9mZXRjaCA9IHF1b3RlbWV0YSgiJHgtPntvbGRfcGF0aH06Ii4KKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIiR4LT57cmVmX2lkfSIpOworCQkJY29tbWFuZF9ub2lzeShxdy9jb25maWcgLS11bnNldC8sCisJCQkgICAgICAgICAgICAgICIkcGZ4LmZldGNoIiwgJ14nLiAkb2xkX2ZldGNoIC4gJyQnKTsKKwkJCWRlbGV0ZSAkci0+eyR4LT57b2xkX3JlcG9faWR9fS0+CisJCQkgICAgICAge2ZldGNofS0+eyR4LT57b2xkX3BhdGh9fTsKKwkJCWlmICgha2V5cyAleyRyLT57JHgtPntvbGRfcmVwb19pZH19LT57ZmV0Y2h9fSkgeworCQkJCWNvbW1hbmRfbm9pc3kocXcvY29uZmlnIC0tdW5zZXQvLAorCQkJCSAgICAgICAgICAgICAgIiRwZngudXJsIik7CisJCQkJcHVzaCBAZW1wdGllZCwgJHgtPntvbGRfcmVwb19pZH0KKwkJCX0KKwkJfQorCX0KKwlpZiAoQGVtcHRpZWQpIHsKKwkJbXkgJGZpbGUgPSAkRU5We0dJVF9DT05GSUd9IHx8ICIkRU5We0dJVF9ESVJ9L2NvbmZpZyI7CisJCXByaW50IFNUREVSUiA8PEVPRjsKK1RoZSBmb2xsb3dpbmcgW3N2bi1yZW1vdGVdIHNlY3Rpb25zIGluIHlvdXIgY29uZmlnIGZpbGUgKCRmaWxlKSBhcmUgZW1wdHkKK2FuZCBjYW4gYmUgc2FmZWx5IHJlbW92ZWQ6CitFT0YKKwkJcHJpbnQgU1RERVJSICJbc3ZuLXJlbW90ZSBcIiRfXCJdXG4iIGZvcmVhY2ggQGVtcHRpZWQ7CisJfQorfQorCitzdWIgbWlncmF0aW9uX2NoZWNrIHsKKwltaWdyYXRlX2Zyb21fdjAoKTsKKwltaWdyYXRlX2Zyb21fdjEoKTsKKwltaWdyYXRlX2Zyb21fdjIoKTsKKwltaW5pbWl6ZV9jb25uZWN0aW9ucygpIGlmICRfbWluaW1pemU7Cit9CisKKzE7CmRpZmYgLS1naXQgYS9wZXJsL0dpdC9TVk4vUHJvbXB0LnBtIGIvcGVybC9HaXQvU1ZOL1Byb21wdC5wbQppbmRleCAzYTZmOGFmLi5lOTQwYjA4IDEwMDY0NAotLS0gYS9wZXJsL0dpdC9TVk4vUHJvbXB0LnBtCisrKyBiL3BlcmwvR2l0L1NWTi9Qcm9tcHQucG0KQEAgLTYyLDE2ICs2MiwxNiBAQAogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZXJfZG5hbWUgZmluZ2VycHJpbnQpOwogCW15ICRjaG9pY2U7CiBwcm9tcHQ6Ci0JcHJpbnQgU1RERVJSICRtYXlfc2F2ZSA/CisJbXkgJG9wdGlvbnMgPSAkbWF5X3NhdmUgPwogCSAgICAgICIoUillamVjdCwgYWNjZXB0ICh0KWVtcG9yYXJpbHkgb3IgYWNjZXB0IChwKWVybWFuZW50bHk/ICIgOgogCSAgICAgICIoUillamVjdCBvciBhY2NlcHQgKHQpZW1wb3JhcmlseT8gIjsKIAlTVERFUlItPmZsdXNoOwotCSRjaG9pY2UgPSBsYyhzdWJzdHIoPFNURElOPiB8fCAnUicsIDAsIDEpKTsKLQlpZiAoJGNob2ljZSA9fiAvXnQkL2kpIHsKKwkkY2hvaWNlID0gbGMoc3Vic3RyKEdpdDo6cHJvbXB0KCJDZXJ0aWZpY2F0ZSBwcm9ibGVtLlxuIiAuICRvcHRpb25zKSB8fCAnUicsIDAsIDEpKTsKKwlpZiAoJGNob2ljZSBlcSAndCcpIHsKIAkJJGNyZWQtPm1heV9zYXZlKHVuZGVmKTsKLQl9IGVsc2lmICgkY2hvaWNlID1+IC9eciQvaSkgeworCX0gZWxzaWYgKCRjaG9pY2UgZXEgJ3InKSB7CiAJCXJldHVybiAtMTsKLQl9IGVsc2lmICgkbWF5X3NhdmUgJiYgJGNob2ljZSA9fiAvXnAkL2kpIHsKKwl9IGVsc2lmICgkbWF5X3NhdmUgJiYgJGNob2ljZSBlcSAncCcpIHsKIAkJJGNyZWQtPm1heV9zYXZlKCRtYXlfc2F2ZSk7CiAJfSBlbHNlIHsKIAkJZ290byBwcm9tcHQ7CkBAIC0xMDksOSArMTA5LDcgQEAKIAlpZiAoZGVmaW5lZCAkX3VzZXJuYW1lKSB7CiAJCSR1c2VybmFtZSA9ICRfdXNlcm5hbWU7CiAJfSBlbHNlIHsKLQkJcHJpbnQgU1RERVJSICJVc2VybmFtZTogIjsKLQkJU1RERVJSLT5mbHVzaDsKLQkJY2hvbXAoJHVzZXJuYW1lID0gPFNURElOPik7CisJCSR1c2VybmFtZSA9IEdpdDo6cHJvbXB0KCJVc2VybmFtZTogIik7CiAJfQogCSRjcmVkLT51c2VybmFtZSgkdXNlcm5hbWUpOwogCSRjcmVkLT5tYXlfc2F2ZSgkbWF5X3NhdmUpOwpAQCAtMTIwLDMxICsxMTgsMTUgQEAKIAogc3ViIF9yZWFkX3Bhc3N3b3JkIHsKIAlteSAoJHByb21wdCwgJHJlYWxtKSA9IEBfOwotCW15ICRwYXNzd29yZCA9ICcnOwotCWlmIChleGlzdHMgJEVOVntHSVRfQVNLUEFTU30pIHsKLQkJb3BlbihQSCwgIi18IiwgJEVOVntHSVRfQVNLUEFTU30sICRwcm9tcHQpOwotCQkkcGFzc3dvcmQgPSA8UEg+OwotCQkkcGFzc3dvcmQgPX4gcy9bXDAxMlwwMTVdLy87ICMgXG5ccgotCQljbG9zZShQSCk7Ci0JfSBlbHNlIHsKLQkJcHJpbnQgU1RERVJSICRwcm9tcHQ7Ci0JCVNUREVSUi0+Zmx1c2g7Ci0JCXJlcXVpcmUgVGVybTo6UmVhZEtleTsKLQkJVGVybTo6UmVhZEtleTo6UmVhZE1vZGUoJ25vZWNobycpOwotCQl3aGlsZSAoZGVmaW5lZChteSAka2V5ID0gVGVybTo6UmVhZEtleTo6UmVhZEtleSgwKSkpIHsKLQkJCWxhc3QgaWYgJGtleSA9fiAvW1wwMTJcMDE1XS87ICMgXG5ccgotCQkJJHBhc3N3b3JkIC49ICRrZXk7Ci0JCX0KLQkJVGVybTo6UmVhZEtleTo6UmVhZE1vZGUoJ3Jlc3RvcmUnKTsKLQkJcHJpbnQgU1RERVJSICJcbiI7Ci0JCVNUREVSUi0+Zmx1c2g7Ci0JfQorCW15ICRwYXNzd29yZCA9IEdpdDo6cHJvbXB0KCRwcm9tcHQsIDEpOwogCSRwYXNzd29yZDsKIH0KIAogMTsKIF9fRU5EX18KIAorPWhlYWQxIE5BTUUKKwogR2l0OjpTVk46OlByb21wdCAtIGF1dGhlbnRpY2F0aW9uIGNhbGxiYWNrcyBmb3IgZ2l0LXN2bgogCiA9aGVhZDEgU1lOT1BTSVMKZGlmZiAtLWdpdCBhL3BlcmwvR2l0L1NWTi9SYS5wbSBiL3BlcmwvR2l0L1NWTi9SYS5wbQppbmRleCAyM2ZmNDNlLi43NWVjYzQyIDEwMDY0NAotLS0gYS9wZXJsL0dpdC9TVk4vUmEucG0KKysrIGIvcGVybC9HaXQvU1ZOL1JhLnBtCkBAIC0zLDYgKzMsMTIgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiB1c2UgU1ZOOjpDbGllbnQ7Cit1c2UgR2l0OjpTVk46OlV0aWxzIHF3KAorCWNhbm9uaWNhbGl6ZV91cmwKKwljYW5vbmljYWxpemVfcGF0aAorCWFkZF9wYXRoX3RvX3VybAorKTsKKwogdXNlIFNWTjo6UmE7CiBCRUdJTiB7CiAJQElTQSA9IHF3KFNWTjo6UmEpOwpAQCAtNjIsMjkgKzY4LDExIEBACiAJXEBydjsKIH0KIAotc3ViIGVzY2FwZV91cmlfb25seSB7Ci0JbXkgKCR1cmkpID0gQF87Ci0JbXkgQHRtcDsKLQlmb3JlYWNoIChzcGxpdCBtey99LCAkdXJpKSB7Ci0JCXMvKFteflx3LiUrLV18JSg/IVthLWZBLUYwLTldezJ9KSkvc3ByaW50ZigiJSUlMDJYIixvcmQoJDEpKS9lZzsKLQkJcHVzaCBAdG1wLCAkXzsKLQl9Ci0Jam9pbignLycsIEB0bXApOwotfQotCi1zdWIgZXNjYXBlX3VybCB7Ci0JbXkgKCR1cmwpID0gQF87Ci0JaWYgKCR1cmwgPX4gbSNeKGh0dHBzPyk6Ly8oW14vXSspKC4qKSQjKSB7Ci0JCW15ICgkc2NoZW1lLCAkZG9tYWluLCAkdXJpKSA9ICgkMSwgJDIsIGVzY2FwZV91cmlfb25seSgkMykpOwotCQkkdXJsID0gIiRzY2hlbWU6Ly8kZG9tYWluJHVyaSI7Ci0JfQotCSR1cmw7Ci19CiAKIHN1YiBuZXcgewogCW15ICgkY2xhc3MsICR1cmwpID0gQF87Ci0JJHVybCA9fiBzIS8rJCEhOwotCXJldHVybiAkUkEgaWYgKCRSQSAmJiAkUkEtPnt1cmx9IGVxICR1cmwpOworCSR1cmwgPSBjYW5vbmljYWxpemVfdXJsKCR1cmwpOworCXJldHVybiAkUkEgaWYgKCRSQSAmJiAkUkEtPnVybCBlcSAkdXJsKTsKIAogCTo6X3JlcV9zdm4oKTsKIApAQCAtMTE1LDE3ICsxMDMsMzQgQEAKIAkJCSRHaXQ6OlNWTjo6UHJvbXB0Ojpfbm9fYXV0aF9jYWNoZSA9IDE7CiAJCX0KIAl9ICMgbm8gd2FybmluZ3MgJ29uY2UnCi0JbXkgJHNlbGYgPSBTVk46OlJhLT5uZXcodXJsID0+IGVzY2FwZV91cmwoJHVybCksIGF1dGggPT4gJGJhdG9uLAorCisJbXkgJHNlbGYgPSBTVk46OlJhLT5uZXcodXJsID0+ICR1cmwsIGF1dGggPT4gJGJhdG9uLAogCSAgICAgICAgICAgICAgICAgICAgICBjb25maWcgPT4gJGNvbmZpZywKIAkJCSAgICAgIHBvb2wgPT4gU1ZOOjpQb29sLT5uZXcsCiAJICAgICAgICAgICAgICAgICAgICAgIGF1dGhfcHJvdmlkZXJfY2FsbGJhY2tzID0+ICRjYWxsYmFja3MpOwotCSRzZWxmLT57dXJsfSA9ICR1cmw7CisJJFJBID0gYmxlc3MgJHNlbGYsICRjbGFzczsKKworCSMgTWFrZSBzdXJlIGl0cyBjYW5vbmljYWxpemVkCisJJHNlbGYtPnVybCgkdXJsKTsKIAkkc2VsZi0+e3N2bl9wYXRofSA9ICR1cmw7CiAJJHNlbGYtPntyZXBvc19yb290fSA9ICRzZWxmLT5nZXRfcmVwb3Nfcm9vdDsKIAkkc2VsZi0+e3N2bl9wYXRofSA9fiBzI15cUSRzZWxmLT57cmVwb3Nfcm9vdH1cRSgvfCQpIyM7CiAJJHNlbGYtPntjYWNoZX0gPSB7IGNoZWNrX3BhdGggPT4geyByID0+IDAsIGRhdGEgPT4ge30gfSwKIAkgICAgICAgICAgICAgICAgICAgZ2V0X2RpciA9PiB7IHIgPT4gMCwgZGF0YSA9PiB7fSB9IH07Ci0JJFJBID0gYmxlc3MgJHNlbGYsICRjbGFzczsKKworCXJldHVybiAkUkE7Cit9CisKK3N1YiB1cmwgeworCW15ICRzZWxmID0gc2hpZnQ7CisKKwlpZiAoQF8pIHsKKwkJbXkgJHVybCA9IHNoaWZ0OworCQkkc2VsZi0+e3VybH0gPSBjYW5vbmljYWxpemVfdXJsKCR1cmwpOworCQlyZXR1cm47CisJfQorCisJcmV0dXJuICRzZWxmLT57dXJsfTsKIH0KIAogc3ViIGNoZWNrX3BhdGggewpAQCAtMTk1LDYgKzIwMCw3IEBACiAJCQkJcXcvY29weWZyb21fcGF0aCBjb3B5ZnJvbV9yZXYgYWN0aW9uLzsKIAkJCWlmICgkc3snY29weWZyb21fcGF0aCd9KSB7CiAJCQkJJHN7J2NvcHlmcm9tX3BhdGgnfSA9fiBzLyRwcmVmaXhfcmVnZXgvLzsKKwkJCQkkc3snY29weWZyb21fcGF0aCd9ID0gY2Fub25pY2FsaXplX3BhdGgoJHN7J2NvcHlmcm9tX3BhdGgnfSk7CiAJCQl9CiAJCQkkX1swXXskcH0gPSBcJXM7CiAJCX0KQEAgLTI0Niw3ICsyNTIsNyBAQAogc3ViIGdzX2RvX3VwZGF0ZSB7CiAJbXkgKCRzZWxmLCAkcmV2X2EsICRyZXZfYiwgJGdzLCAkZWRpdG9yKSA9IEBfOwogCW15ICRuZXcgPSAoJHJldl9hID09ICRyZXZfYik7Ci0JbXkgJHBhdGggPSAkZ3MtPntwYXRofTsKKwlteSAkcGF0aCA9ICRncy0+cGF0aDsKIAogCWlmICgkbmV3ICYmIC1lICRncy0+e2luZGV4fSkgewogCQl1bmxpbmsgJGdzLT57aW5kZXh9IG9yIGRpZQpAQCAtMjgyLDMwICsyODgsMzMgQEAKICMgc3ZuX3JhX3JlcGFyZW50IGRpZG4ndCB3b3JrIGJlZm9yZSAxLjQpCiBzdWIgZ3NfZG9fc3dpdGNoIHsKIAlteSAoJHNlbGYsICRyZXZfYSwgJHJldl9iLCAkZ3MsICR1cmxfYiwgJGVkaXRvcikgPSBAXzsKLQlteSAkcGF0aCA9ICRncy0+e3BhdGh9OworCW15ICRwYXRoID0gJGdzLT5wYXRoOwogCW15ICRwb29sID0gU1ZOOjpQb29sLT5uZXc7CiAKLQlteSAkZnVsbF91cmwgPSAkc2VsZi0+e3VybH07Ci0JbXkgJG9sZF91cmwgPSAkZnVsbF91cmw7Ci0JJGZ1bGxfdXJsIC49ICcvJyAuICRwYXRoIGlmIGxlbmd0aCAkcGF0aDsKKwlteSAkb2xkX3VybCA9ICRzZWxmLT51cmw7CisJbXkgJGZ1bGxfdXJsID0gYWRkX3BhdGhfdG9fdXJsKCAkc2VsZi0+dXJsLCAkcGF0aCApOwogCW15ICgkcmEsICRyZXBhcmVudGVkKTsKIAotCWlmICgkb2xkX3VybCA9fiBtI15zdm4oXCtzc2gpPzovLyMgfHwKKwlpZiAoJG9sZF91cmwgPX4gbSNec3ZuKFwrXHcrKT86Ly8jIHx8CiAJICAgICgkZnVsbF91cmwgPX4gbSNeaHR0cHM/Oi8vIyAmJgotCSAgICAgZXNjYXBlX3VybCgkZnVsbF91cmwpIG5lICRmdWxsX3VybCkpIHsKKwkgICAgIGNhbm9uaWNhbGl6ZV91cmwoJGZ1bGxfdXJsKSBuZSAkZnVsbF91cmwpKSB7CiAJCSRfWzBdID0gdW5kZWY7CiAJCSRzZWxmID0gdW5kZWY7CiAJCSRSQSA9IHVuZGVmOwogCQkkcmEgPSBHaXQ6OlNWTjo6UmEtPm5ldygkZnVsbF91cmwpOwogCQkkcmFfaW52YWxpZCA9IDE7CiAJfSBlbHNpZiAoJG9sZF91cmwgbmUgJGZ1bGxfdXJsKSB7Ci0JCVNWTjo6X1JhOjpzdm5fcmFfcmVwYXJlbnQoJHNlbGYtPntzZXNzaW9ufSwgJGZ1bGxfdXJsLCAkcG9vbCk7Ci0JCSRzZWxmLT57dXJsfSA9ICRmdWxsX3VybDsKKwkJU1ZOOjpfUmE6OnN2bl9yYV9yZXBhcmVudCgKKwkJCSRzZWxmLT57c2Vzc2lvbn0sCisJCQljYW5vbmljYWxpemVfdXJsKCRmdWxsX3VybCksCisJCQkkcG9vbAorCQkpOworCQkkc2VsZi0+dXJsKCRmdWxsX3VybCk7CiAJCSRyZXBhcmVudGVkID0gMTsKIAl9CiAKIAkkcmEgfHw9ICRzZWxmOwotCSR1cmxfYiA9IGVzY2FwZV91cmwoJHVybF9iKTsKKwkkdXJsX2IgPSBjYW5vbmljYWxpemVfdXJsKCR1cmxfYik7CiAJbXkgJHJlcG9ydGVyID0gJHJhLT5kb19zd2l0Y2goJHJldl9iLCAnJywgMSwgJHVybF9iLCAkZWRpdG9yLCAkcG9vbCk7CiAJbXkgQGxvY2sgPSAoOjpjb21wYXJlX3N2bl92ZXJzaW9uKCcxLjIuMCcpID49IDApID8gKHVuZGVmKSA6ICgpOwogCSRyZXBvcnRlci0+c2V0X3BhdGgoJycsICRyZXZfYSwgMCwgQGxvY2ssICRwb29sKTsKQEAgLTMxMyw3ICszMjIsNyBAQAogCiAJaWYgKCRyZXBhcmVudGVkKSB7CiAJCVNWTjo6X1JhOjpzdm5fcmFfcmVwYXJlbnQoJHNlbGYtPntzZXNzaW9ufSwgJG9sZF91cmwsICRwb29sKTsKLQkJJHNlbGYtPnt1cmx9ID0gJG9sZF91cmw7CisJCSRzZWxmLT51cmwoJG9sZF91cmwpOwogCX0KIAogCSRwb29sLT5jbGVhcjsKQEAgLTMyNiw3ICszMzUsNyBAQAogCW15ICRjb21tb25fbWF4ID0gc2NhbGFyIEAkZ3N2OwogCiAJZm9yZWFjaCBteSAkZ3MgKEAkZ3N2KSB7Ci0JCW15IEB0bXAgPSBzcGxpdCBtIy8jLCAkZ3MtPntwYXRofTsKKwkJbXkgQHRtcCA9IHNwbGl0IG0jLyMsICRncy0+cGF0aDsKIAkJbXkgJHAgPSAnJzsKIAkJZm9yZWFjaCAoQHRtcCkgewogCQkJJHAgLj0gbGVuZ3RoKCRwKSA/ICIvJF8iIDogJF87CkBAIC0zNjIsNyArMzcxLDcgQEAKIAlteSAkaW5jID0gJF9sb2dfd2luZG93X3NpemU7CiAJbXkgKCRtaW4sICRtYXgpID0gKCRiYXNlLCAkaGVhZCA8ICRiYXNlICsgJGluYyA/ICRoZWFkIDogJGJhc2UgKyAkaW5jKTsKIAlteSAkbG9uZ2VzdF9wYXRoID0gbG9uZ2VzdF9jb21tb25fcGF0aCgkZ3N2LCAkZ2xvYnMpOwotCW15ICRyYV91cmwgPSAkc2VsZi0+e3VybH07CisJbXkgJHJhX3VybCA9ICRzZWxmLT51cmw7CiAJbXkgJGZpbmRfdHJhaWxpbmdfZWRnZTsKIAl3aGlsZSAoMSkgewogCQlteSAlcmV2czsKQEAgLTQwNyw3ICs0MTYsNyBAQAogCQl9CiAJCSRTVk46OkVycm9yOjpoYW5kbGVyID0gJGVycl9oYW5kbGVyOwogCi0JCW15ICVleGlzdHMgPSBtYXAgeyAkXy0+e3BhdGh9ID0+ICRfIH0gQCRnc3Y7CisJCW15ICVleGlzdHMgPSBtYXAgeyAkXy0+cGF0aCA9PiAkXyB9IEAkZ3N2OwogCQlmb3JlYWNoIG15ICRyIChzb3J0IHskYSA8PT4gJGJ9IGtleXMgJXJldnMpIHsKIAkJCW15ICgkcGF0aHMsICRsb2dnZWQpID0gQHskcmV2c3skcn19OwogCkBAIC01MDgsNyArNTE3LDcgQEAKIAkJCQkgKCRzZWxmLT5jaGVja19wYXRoKCRwLCAkcikgIT0KIAkJCQkgICRTVk46Ok5vZGU6OmRpcikpOwogCQkJbmV4dCB1bmxlc3MgJHAgPX4gLyRnLT57cGF0aH0tPntyZWdleH0vOwotCQkJJGV4aXN0cy0+eyRwfSA9IEdpdDo6U1ZOLT5pbml0KCRzZWxmLT57dXJsfSwgJHAsIHVuZGVmLAorCQkJJGV4aXN0cy0+eyRwfSA9IEdpdDo6U1ZOLT5pbml0KCRzZWxmLT51cmwsICRwLCB1bmRlZiwKIAkJCQkJICRnLT57cmVmfS0+ZnVsbF9wYXRoKCRkZSksIDEpOwogCQl9CiAJfQpAQCAtNTMyLDcgKzU0MSw3IEBACiAJCQluZXh0IGlmICgkc2VsZi0+Y2hlY2tfcGF0aCgkcGF0aG5hbWUsICRyKSAhPQogCQkJICAgICAgICAgJFNWTjo6Tm9kZTo6ZGlyKTsKIAkJCSRleGlzdHMtPnskcGF0aG5hbWV9ID0gR2l0OjpTVk4tPmluaXQoCi0JCQkgICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnt1cmx9LCAkcGF0aG5hbWUsIHVuZGVmLAorCQkJICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT51cmwsICRwYXRobmFtZSwgdW5kZWYsCiAJCQkgICAgICAgICAgICAgICAgICAgICAgJGctPntyZWZ9LT5mdWxsX3BhdGgoJHApLCAxKTsKIAkJfQogCQlteSAkYyA9ICcnOwpAQCAtNTQ4LDE5ICs1NTcsMjAgQEAKIAogc3ViIG1pbmltaXplX3VybCB7CiAJbXkgKCRzZWxmKSA9IEBfOwotCXJldHVybiAkc2VsZi0+e3VybH0gaWYgKCRzZWxmLT57dXJsfSBlcSAkc2VsZi0+e3JlcG9zX3Jvb3R9KTsKKwlyZXR1cm4gJHNlbGYtPnVybCBpZiAoJHNlbGYtPnVybCBlcSAkc2VsZi0+e3JlcG9zX3Jvb3R9KTsKIAlteSAkdXJsID0gJHNlbGYtPntyZXBvc19yb290fTsKIAlteSBAY29tcG9uZW50cyA9IHNwbGl0KG0hLyEsICRzZWxmLT57c3ZuX3BhdGh9KTsKIAlteSAkYyA9ICcnOwogCWRvIHsKLQkJJHVybCAuPSAiLyRjIiBpZiBsZW5ndGggJGM7CisJCSR1cmwgPSBhZGRfcGF0aF90b191cmwoJHVybCwgJGMpOwogCQlldmFsIHsKIAkJCW15ICRyYSA9IChyZWYgJHNlbGYpLT5uZXcoJHVybCk7CiAJCQlteSAkbGF0ZXN0ID0gJHJhLT5nZXRfbGF0ZXN0X3Jldm51bTsKIAkJCSRyYS0+Z2V0X2xvZygiIiwgJGxhdGVzdCwgMCwgMSwgMCwgMSwgc3ViIHt9KTsKIAkJfTsKIAl9IHdoaWxlICgkQCAmJiAoJGMgPSBzaGlmdCBAY29tcG9uZW50cykpOwotCSR1cmw7CisKKwlyZXR1cm4gY2Fub25pY2FsaXplX3VybCgkdXJsKTsKIH0KIAogc3ViIGNhbl9kb19zd2l0Y2ggewpAQCAtNTY4LDcgKzU3OCw3IEBACiAJdW5sZXNzIChkZWZpbmVkICRjYW5fZG9fc3dpdGNoKSB7CiAJCW15ICRwb29sID0gU1ZOOjpQb29sLT5uZXc7CiAJCW15ICRyZXAgPSBldmFsIHsKLQkJCSRzZWxmLT5kb19zd2l0Y2goMSwgJycsIDAsICRzZWxmLT57dXJsfSwKKwkJCSRzZWxmLT5kb19zd2l0Y2goMSwgJycsIDAsICRzZWxmLT51cmwsCiAJCQkgICAgICAgICAgICAgICAgIFNWTjo6RGVsdGE6OkVkaXRvci0+bmV3LCAkcG9vbCk7CiAJCX07CiAJCWlmICgkQCkgewpAQCAtNjE3LDYgKzYyNyw4IEBACiAxOwogX19FTkRfXwogCis9aGVhZDEgTkFNRQorCiBHaXQ6OlNWTjo6UmEgLSBTdWJ2ZXJzaW9uIHJlbW90ZSBhY2Nlc3MgZnVuY3Rpb25zIGZvciBnaXQtc3ZuCiAKID1oZWFkMSBTWU5PUFNJUwpkaWZmIC0tZ2l0IGEvcGVybC9HaXQvU1ZOL1V0aWxzLnBtIGIvcGVybC9HaXQvU1ZOL1V0aWxzLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMWEwOTMKLS0tIC9kZXYvbnVsbAorKysgYi9wZXJsL0dpdC9TVk4vVXRpbHMucG0KQEAgLTAsMCArMSwyMzIgQEAKK3BhY2thZ2UgR2l0OjpTVk46OlV0aWxzOworCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgU1ZOOjpDb3JlOworCit1c2UgYmFzZSBxdyhFeHBvcnRlcik7CisKK291ciBARVhQT1JUX09LID0gcXcoCisJZmF0YWwKKwljYW5fY29tcHJlc3MKKwljYW5vbmljYWxpemVfcGF0aAorCWNhbm9uaWNhbGl6ZV91cmwKKwlqb2luX3BhdGhzCisJYWRkX3BhdGhfdG9fdXJsCispOworCisKKz1oZWFkMSBOQU1FCisKK0dpdDo6U1ZOOjpVdGlscyAtIHV0aWxpdHkgZnVuY3Rpb25zIHVzZWQgYWNyb3NzIEdpdDo6U1ZOCisKKz1oZWFkMSBTWU5PUFNJUworCisgICAgdXNlIEdpdDo6U1ZOOjpVdGlscyBxdyhmdW5jdGlvbnMgdG8gaW1wb3J0KTsKKworPWhlYWQxIERFU0NSSVBUSU9OCisKK1RoaXMgbW9kdWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyB3aGljaCBhcmUgdXNlZnVsIGFjcm9zcyBtYW55IGRpZmZlcmVudAorcGFydHMgb2YgR2l0OjpTVk4uICBNb3N0bHkgaXQncyBhIHBsYWNlIHRvIHB1dCB1dGlsaXR5IGZ1bmN0aW9ucworcmF0aGVyIHRoYW4gZHVwbGljYXRlIHRoZSBjb2RlIG9yIGhhdmUgY2xhc3NlcyBncmFiYmluZyBhdCBvdGhlcgorY2xhc3Nlcy4KKworPWhlYWQxIEZVTkNUSU9OUworCitBbGwgZnVuY3Rpb25zIGNhbiBiZSBpbXBvcnRlZCBvbmx5IG9uIHJlcXVlc3QuCisKKz1oZWFkMyBmYXRhbAorCisgICAgZmF0YWwoQG1lc3NhZ2UpOworCitEaXNwbGF5IGEgbWVzc2FnZSBhbmQgZXhpdCB3aXRoIGEgZmF0YWwgZXJyb3IgY29kZS4KKworPWN1dAorCisjIE5vdGU6IG5vdCBjZXJ0YWluIHdoeSB0aGlzIGlzIGluIHVzZSBpbnN0ZWFkIG9mIGRpZS4gIFByb2JhYmx5IGJlY2F1c2UKKyMgdGhlIGV4aXQgY29kZSBvZiBkaWUgaXMgMjU1PyAgRG9lc24ndCBhcHBlYXIgdG8gYmUgdXNlZCBjb25zaXN0ZW50bHkuCitzdWIgZmF0YWwgKEApIHsgcHJpbnQgU1RERVJSICJAX1xuIjsgZXhpdCAxIH0KKworCis9aGVhZDMgY2FuX2NvbXByZXNzCisKKyAgICBteSAkY2FuX2NvbXByZXNzID0gY2FuX2NvbXByZXNzOworCitSZXR1cm5zIHRydWUgaWYgQ29tcHJlc3M6OlpsaWIgaXMgYXZhaWxhYmxlLCBmYWxzZSBvdGhlcndpc2UuCisKKz1jdXQKKworbXkgJGNhbl9jb21wcmVzczsKK3N1YiBjYW5fY29tcHJlc3MgeworCXJldHVybiAkY2FuX2NvbXByZXNzIGlmIGRlZmluZWQgJGNhbl9jb21wcmVzczsKKworCXJldHVybiAkY2FuX2NvbXByZXNzID0gZXZhbCB7IHJlcXVpcmUgQ29tcHJlc3M6OlpsaWI7IH07Cit9CisKKworPWhlYWQzIGNhbm9uaWNhbGl6ZV9wYXRoCisKKyAgICBteSAkY2Fub25jYWxpemVkX3BhdGggPSBjYW5vbmljYWxpemVfcGF0aCgkcGF0aCk7CisKK0NvbnZlcnRzICRwYXRoIGludG8gYSBjYW5vbmljYWwgZm9ybSB3aGljaCBpcyBzYWZlIHRvIHBhc3MgdG8gdGhlIFNWTgorQVBJIGFzIGEgZmlsZSBwYXRoLgorCis9Y3V0CisKKyMgVHVybiBmb28vLi4vYmFyIGludG8gYmFyCitzdWIgX2NvbGxhcHNlX2RvdGRvdCB7CisJbXkgJHBhdGggPSBzaGlmdDsKKworCTEgd2hpbGUgJHBhdGggPX4gc3svW14vXSsvK1wuXC59e307CisJMSB3aGlsZSAkcGF0aCA9fiBze1teL10rLytcLlwuL317fTsKKwkxIHdoaWxlICRwYXRoID1+IHN7W14vXSsvK1wuXC59e307CisKKwlyZXR1cm4gJHBhdGg7Cit9CisKKworc3ViIGNhbm9uaWNhbGl6ZV9wYXRoIHsKKwlteSAkcGF0aCA9IHNoaWZ0OworCW15ICRydjsKKworCSMgVGhlIDEuNyB3YXkgdG8gZG8gaXQKKwlpZiAoIGRlZmluZWQgJlNWTjo6X0NvcmU6OnN2bl9kaXJlbnRfY2Fub25pY2FsaXplICkgeworCQkkcGF0aCA9IF9jb2xsYXBzZV9kb3Rkb3QoJHBhdGgpOworCQkkcnYgPSBTVk46Ol9Db3JlOjpzdm5fZGlyZW50X2Nhbm9uaWNhbGl6ZSgkcGF0aCk7CisJfQorCSMgVGhlIDEuNiB3YXkgdG8gZG8gaXQKKwkjIFRoaXMgY2FuIHJldHVybiB1bmRlZiBvbiBzdWJ2ZXJzaW9uLXBlcmwtMS40LjItMi5lbDUgKENlbnRPUyA1LjIpCisJZWxzaWYgKCBkZWZpbmVkICZTVk46Ol9Db3JlOjpzdm5fcGF0aF9jYW5vbmljYWxpemUgKSB7CisJCSRwYXRoID0gX2NvbGxhcHNlX2RvdGRvdCgkcGF0aCk7CisJCSRydiA9IFNWTjo6X0NvcmU6OnN2bl9wYXRoX2Nhbm9uaWNhbGl6ZSgkcGF0aCk7CisJfQorCisJcmV0dXJuICRydiBpZiBkZWZpbmVkICRydjsKKworCSMgTm8gU1ZOIEFQSSBjYW5vbmljYWxpemF0aW9uIGlzIGF2YWlsYWJsZSwgb3IgdGhlIFNWTiBBUEkKKwkjIGRpZG4ndCByZXR1cm4gYSBzdWNjZXNzZnVsIHJlc3VsdCwgZG8gaXQgb3Vyc2VsdmVzCisJcmV0dXJuIF9jYW5vbmljYWxpemVfcGF0aF9vdXJzZWx2ZXMoJHBhdGgpOworfQorCisKK3N1YiBfY2Fub25pY2FsaXplX3BhdGhfb3Vyc2VsdmVzIHsKKwlteSAoJHBhdGgpID0gQF87CisJbXkgJGRvdF9zbGFzaF9hZGRlZCA9IDA7CisJaWYgKHN1YnN0cigkcGF0aCwgMCwgMSkgbmUgIi8iKSB7CisJCSRwYXRoID0gIi4vIiAuICRwYXRoOworCQkkZG90X3NsYXNoX2FkZGVkID0gMTsKKwl9CisJJHBhdGggPX4gcyMvKyMvI2c7CisJJHBhdGggPX4gcyMvXC4oPzovfCQpIy8jZzsKKwkkcGF0aCA9IF9jb2xsYXBzZV9kb3Rkb3QoJHBhdGgpOworCSRwYXRoID1+IHMjLyQjI2c7CisJJHBhdGggPX4gcyNeXC4vIyMgaWYgJGRvdF9zbGFzaF9hZGRlZDsKKwkkcGF0aCA9fiBzI15cLiQjIzsKKwlyZXR1cm4gJHBhdGg7Cit9CisKKworPWhlYWQzIGNhbm9uaWNhbGl6ZV91cmwKKworICAgIG15ICRjYW5vbmljYWxpemVkX3VybCA9IGNhbm9uaWNhbGl6ZV91cmwoJHVybCk7CisKK0NvbnZlcnRzICR1cmwgaW50byBhIGNhbm9uaWNhbCBmb3JtIHdoaWNoIGlzIHNhZmUgdG8gcGFzcyB0byB0aGUgU1ZOCitBUEkgYXMgYSBVUkwuCisKKz1jdXQKKworc3ViIGNhbm9uaWNhbGl6ZV91cmwgeworCW15ICR1cmwgPSBzaGlmdDsKKworCSMgVGhlIDEuNyB3YXkgdG8gZG8gaXQKKwlpZiAoIGRlZmluZWQgJlNWTjo6X0NvcmU6OnN2bl91cmlfY2Fub25pY2FsaXplICkgeworCQlyZXR1cm4gU1ZOOjpfQ29yZTo6c3ZuX3VyaV9jYW5vbmljYWxpemUoJHVybCk7CisJfQorCSMgVGhlcmUgd2Fzbid0IGEgMS42IHdheSB0byBkbyBpdCwgc28gd2UgZG8gaXQgb3Vyc2VsZi4KKwllbHNlIHsKKwkJcmV0dXJuIF9jYW5vbmljYWxpemVfdXJsX291cnNlbHZlcygkdXJsKTsKKwl9Cit9CisKKworc3ViIF9jYW5vbmljYWxpemVfdXJsX3BhdGggeworCW15ICgkdXJpX3BhdGgpID0gQF87CisKKwlteSBAcGFydHM7CisJZm9yZWFjaCBteSAkcGFydCAoc3BsaXQgbXsvK30sICR1cmlfcGF0aCkgeworCQkkcGFydCA9fiBzLyhbXiFcJCUmJygpKissLlwvXHc6PVxAX2B+LV18JSg/IVthLWZBLUYwLTldezJ9KSkvc3ByaW50ZigiJSUlMDJYIixvcmQoJDEpKS9lZzsKKwkJcHVzaCBAcGFydHMsICRwYXJ0OworCX0KKworCXJldHVybiBqb2luKCcvJywgQHBhcnRzKTsKK30KKworc3ViIF9jYW5vbmljYWxpemVfdXJsX291cnNlbHZlcyB7CisJbXkgKCR1cmwpID0gQF87CisJaWYgKCR1cmwgPX4gbSNeKFteOl0rKTovLyhbXi9dKikoLiopJCMpIHsKKwkJbXkgKCRzY2hlbWUsICRkb21haW4sICR1cmkpID0gKCQxLCAkMiwgX2Nhbm9uaWNhbGl6ZV91cmxfcGF0aChjYW5vbmljYWxpemVfcGF0aCgkMykpKTsKKwkJJHVybCA9ICIkc2NoZW1lOi8vJGRvbWFpbiR1cmkiOworCX0KKwkkdXJsOworfQorCisKKz1oZWFkMyBqb2luX3BhdGhzCisKKyAgICBteSAkbmV3X3BhdGggPSBqb2luX3BhdGhzKEBwYXRocyk7CisKK0FwcGVuZHMgQHBhdGhzIHRvZ2V0aGVyIGludG8gYSBzaW5nbGUgcGF0aC4gIEFueSBlbXB0eSBwYXRocyBhcmUgaWdub3JlZC4KKworPWN1dAorCitzdWIgam9pbl9wYXRocyB7CisJbXkgQHBhdGhzID0gQF87CisKKwlAcGF0aHMgPSBncmVwIHsgZGVmaW5lZCAkXyAmJiBsZW5ndGggJF8gfSBAcGF0aHM7CisKKwlyZXR1cm4gJycgdW5sZXNzIEBwYXRoczsKKwlyZXR1cm4gJHBhdGhzWzBdIGlmIEBwYXRocyA9PSAxOworCisJbXkgJG5ld19wYXRoID0gc2hpZnQgQHBhdGhzOworCSRuZXdfcGF0aCA9fiBzey8rJH17fTsKKworCW15ICRsYXN0X3BhdGggPSBwb3AgQHBhdGhzOworCSRsYXN0X3BhdGggPX4gc3teLyt9e307CisKKwlmb3IgbXkgJHBhdGggKEBwYXRocykgeworCQkkcGF0aCA9fiBze14vK317fTsKKwkJJHBhdGggPX4gc3svKyR9e307CisJCSRuZXdfcGF0aCAuPSAiLyRwYXRoIjsKKwl9CisKKwlyZXR1cm4gJG5ld19wYXRoIC49ICIvJGxhc3RfcGF0aCI7Cit9CisKKworPWhlYWQzIGFkZF9wYXRoX3RvX3VybAorCisgICAgbXkgJG5ld191cmwgPSBhZGRfcGF0aF90b191cmwoJHVybCwgJHBhdGgpOworCitBcHBlbmRzICRwYXRoIG9udG8gdGhlICR1cmwuICBJZiAkcGF0aCBpcyBlbXB0eSwgJHVybCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuCisKKz1jdXQKKworc3ViIGFkZF9wYXRoX3RvX3VybCB7CisJbXkoJHVybCwgJHBhdGgpID0gQF87CisKKwlyZXR1cm4gJHVybCBpZiAhZGVmaW5lZCAkcGF0aCBvciAhbGVuZ3RoICRwYXRoOworCisJIyBTdHJpcCB0cmFpbGluZyBhbmQgbGVhZGluZyBzbGFzaGVzIHNvIHdlIGRvbid0CisJIyB3aW5kIHVwIHdpdGggaHR0cDovL3guY29tLy8vcGF0aAorCSR1cmwgID1+IHN7LyskfXt9OworCSRwYXRoID1+IHN7Xi8rfXt9OworCisJIyBJZiBhIHBhdGggaGFzIGEgJSBpbiBpdCwgVVJJIGVzY2FwZSBpdCBzbyBpdCdzIG5vdAorCSMgbWlzdGFrZW4gZm9yIGEgVVJJIGVzY2FwZSBsYXRlci4KKwkkcGF0aCA9fiBzeyV9eyUyNX1nOworCisJcmV0dXJuIGpvaW4gJy8nLCAkdXJsLCAkcGF0aDsKK30KKworMTsKZGlmZiAtLWdpdCBhL3BlcmwvTWFrZWZpbGUgYi9wZXJsL01ha2VmaWxlCmluZGV4IGZlN2E0ODYuLjE1ZDk2ZmMgMTAwNjQ0Ci0tLSBhL3BlcmwvTWFrZWZpbGUKKysrIGIvcGVybC9NYWtlZmlsZQpAQCAtMjAsMzYgKzIwLDU3IEBACiAJJChSTSkgcHBwb3J0LmgKIAkkKFJNKSAkKG1ha2ZpbGUpCiAJJChSTSkgJChtYWtmaWxlKS5vbGQKKwkkKFJNKSBQTS5zdGFtcAorCiskKG1ha2ZpbGUpOiBQTS5zdGFtcAogCiBpZmRlZiBOT19QRVJMX01BS0VNQUtFUgogaW5zdGRpcl9TUSA9ICQoc3Vic3QgJywnXCcnLCQocHJlZml4KS9saWIpCiAKIG1vZHVsZXMgKz0gR2l0CiBtb2R1bGVzICs9IEdpdC9JMThOCittb2R1bGVzICs9IEdpdC9JbmRleEluZm8KK21vZHVsZXMgKz0gR2l0L1NWTgogbW9kdWxlcyArPSBHaXQvU1ZOL01lbW9pemUvWUFNTAogbW9kdWxlcyArPSBHaXQvU1ZOL0ZldGNoZXIKIG1vZHVsZXMgKz0gR2l0L1NWTi9FZGl0b3IKK21vZHVsZXMgKz0gR2l0L1NWTi9HbG9iU3BlYworbW9kdWxlcyArPSBHaXQvU1ZOL0xvZworbW9kdWxlcyArPSBHaXQvU1ZOL01pZ3JhdGlvbgogbW9kdWxlcyArPSBHaXQvU1ZOL1Byb21wdAogbW9kdWxlcyArPSBHaXQvU1ZOL1JhCittb2R1bGVzICs9IEdpdC9TVk4vVXRpbHMKIAogJChtYWtmaWxlKTogLi4vR0lULUNGTEFHUyBNYWtlZmlsZQogCWVjaG8gYWxsOiBwcml2YXRlLUVycm9yLnBtIEdpdC5wbSBHaXQvSTE4Ti5wbSA+ICRACi0JZWNobyAnCW1rZGlyIC1wIGJsaWIvbGliL0dpdC9TVk4vTWVtb2l6ZScgPj4gJEAKIAlzZXQgLWU7IFwKIAlmb3IgaSBpbiAkKG1vZHVsZXMpOyBcCiAJZG8gXAorCQlpZiB0ZXN0ICQkaSA9ICQke2klLyp9OyBcCisJCXRoZW4gXAorCQkJc3ViZGlyPTsgXAorCQllbHNlIFwKKwkJCXN1YmRpcj0vJCR7aSUvKn07IFwKKwkJZmk7IFwKIAkJZWNobyAnCSQoUk0pIGJsaWIvbGliLyckJGknLnBtJyA+PiAkQDsgXAorCQllY2hvICcJbWtkaXIgLXAgYmxpYi9saWInJCRzdWJkaXIgPj4gJEA7IFwKIAkJZWNobyAnCWNwICckJGknLnBtIGJsaWIvbGliLyckJGknLnBtJyA+PiAkQDsgXAogCWRvbmUKIAllY2hvICcJJChSTSkgYmxpYi9saWIvRXJyb3IucG0nID4+ICRACiAJJyQoUEVSTF9QQVRIX1NRKScgLU1FcnJvciAtZSAnZXhpdCgkJEVycm9yOjpWRVJTSU9OIDwgMC4xNTAwOSknIHx8IFwKIAllY2hvICcJY3AgcHJpdmF0ZS1FcnJvci5wbSBibGliL2xpYi9FcnJvci5wbScgPj4gJEAKIAllY2hvIGluc3RhbGw6ID4+ICRACi0JZWNobyAnCW1rZGlyIC1wICIkJChERVNURElSKSQoaW5zdGRpcl9TUSkvR2l0L1NWTi9NZW1vaXplIicgPj4gJEAKIAlzZXQgLWU7IFwKIAlmb3IgaSBpbiAkKG1vZHVsZXMpOyBcCiAJZG8gXAorCQlpZiB0ZXN0ICQkaSA9ICQke2klLyp9OyBcCisJCXRoZW4gXAorCQkJc3ViZGlyPTsgXAorCQllbHNlIFwKKwkJCXN1YmRpcj0vJCR7aSUvKn07IFwKKwkJZmk7IFwKIAkJZWNobyAnCSQoUk0pICIkJChERVNURElSKSQoaW5zdGRpcl9TUSkvJyQkaScucG0iJyA+PiAkQDsgXAorCQllY2hvICcJbWtkaXIgLXAgIiQkKERFU1RESVIpJChpbnN0ZGlyX1NRKSckJHN1YmRpciciJyA+PiAkQDsgXAogCQllY2hvICcJY3AgJyQkaScucG0gIiQkKERFU1RESVIpJChpbnN0ZGlyX1NRKS8nJCRpJy5wbSInID4+ICRAOyBcCiAJZG9uZQogCWVjaG8gJwkkKFJNKSAiJCQoREVTVERJUikkKGluc3RkaXJfU1EpL0Vycm9yLnBtIicgPj4gJEAKZGlmZiAtLWdpdCBhL3BlcmwvTWFrZWZpbGUuUEwgYi9wZXJsL01ha2VmaWxlLlBMCmluZGV4IGI1NGIwNGEuLjNmMjliYTkgMTAwNjQ0Ci0tLSBhL3BlcmwvTWFrZWZpbGUuUEwKKysrIGIvcGVybC9NYWtlZmlsZS5QTApAQCAtMiwxMSArMiwxNiBAQAogdXNlIHdhcm5pbmdzOwogdXNlIEV4dFV0aWxzOjpNYWtlTWFrZXI7CiB1c2UgR2V0b3B0OjpMb25nOwordXNlIEZpbGU6OkZpbmQ7CisKKyMgRG9uJ3QgZm9yZ2V0IHRvIHVwZGF0ZSB0aGUgcGVybC9NYWtlZmlsZSwgdG9vLgorIyBEb24ndCBmb3JnZXQgdG8gdGVzdCB3aXRoIE5PX1BFUkxfTUFLRU1BS0VSPVllc1BsZWFzZQogCiAjIFNhbml0eTogZGllIGF0IGZpcnN0IHVua25vd24gb3B0aW9uCiBHZXRvcHQ6Okxvbmc6OkNvbmZpZ3VyZSBxdy8gcGFzc190aHJvdWdoIC87CiAKLUdldE9wdGlvbnMoImxvY2FsZWRpcj1zIiA9PiBcbXkgJGxvY2FsZWRpcik7CitteSAkbG9jYWxlZGlyID0gJyc7CitHZXRPcHRpb25zKCJsb2NhbGVkaXI9cyIgPT4gXCRsb2NhbGVkaXIpOwogCiBzdWIgTVk6OnBvc3RhbWJsZSB7CiAJcmV0dXJuIDw8J01BS0VfRlJBRyc7CkBAIC0yNCwyNCArMjksMjIgQEAKIE1BS0VfRlJBRwogfQogCi0jIFhYWC4gV2hlbiBlZGl0aW5nIHRoaXMgbGlzdDoKLSMKLSMgKiBQbGVhc2UgdXBkYXRlIHBlcmwvTWFrZWZpbGUsIHRvby4KLSMgKiBEb24ndCBmb3JnZXQgdG8gdGVzdCB3aXRoIE5PX1BFUkxfTUFLRU1BS0VSPVllc1BsZWFzZQotbXkgJXBtID0gKAotCSdHaXQucG0nID0+ICckKElOU1RfTElCRElSKS9HaXQucG0nLAotCSdHaXQvSTE4Ti5wbScgPT4gJyQoSU5TVF9MSUJESVIpL0dpdC9JMThOLnBtJywKLQknR2l0L1NWTi9NZW1vaXplL1lBTUwucG0nID0+ICckKElOU1RfTElCRElSKS9HaXQvU1ZOL01lbW9pemUvWUFNTC5wbScsCi0JJ0dpdC9TVk4vRmV0Y2hlci5wbScgPT4gJyQoSU5TVF9MSUJESVIpL0dpdC9TVk4vRmV0Y2hlci5wbScsCi0JJ0dpdC9TVk4vRWRpdG9yLnBtJyA9PiAnJChJTlNUX0xJQkRJUikvR2l0L1NWTi9FZGl0b3IucG0nLAotCSdHaXQvU1ZOL1Byb21wdC5wbScgPT4gJyQoSU5TVF9MSUJESVIpL0dpdC9TVk4vUHJvbXB0LnBtJywKLQknR2l0L1NWTi9SYS5wbScgPT4gJyQoSU5TVF9MSUJESVIpL0dpdC9TVk4vUmEucG0nLAotKTsKKyMgRmluZCBhbGwgdGhlIC5wbSBmaWxlcyBpbiAiR2l0LyIgYW5kIEdpdC5wbQorbXkgJXBtOworZmluZCBzdWIgeworCXJldHVybiB1bmxlc3MgL1wucG0kLzsKKworCSMgc29tZXRpbWVzIEZpbGU6OkZpbmQgcHJlcGVuZHMgYSAuLyAgU3RyaXAgaXQuCisJbXkgJHBtX3BhdGggPSAkRmlsZTo6RmluZDo6bmFtZTsKKwkkcG1fcGF0aCA9fiBze15cLi99e307CisKKwkkcG17JHBtX3BhdGh9ID0gJyQoSU5TVF9MSUJESVIpLycuJHBtX3BhdGg7Cit9LCAiR2l0IiwgIkdpdC5wbSI7CisKIAogIyBXZSBjb21lIHdpdGggb3VyIG93biBidW5kbGVkIEVycm9yLnBtLiBJdCdzIG5vdCBpbiB0aGUgc2V0IG9mIGRlZmF1bHQKICMgUGVybCBtb2R1bGVzIHNvIGluc3RhbGwgaXQgaWYgaXQncyBub3QgYXZhaWxhYmxlIG9uIHRoZSBzeXN0ZW0geWV0LgotZXZhbCB7IHJlcXVpcmUgRXJyb3IgfTsKLWlmICgkQCB8fCAkRXJyb3I6OlZFUlNJT04gPCAwLjE1MDA5KSB7CitpZiAoICFldmFsIHsgcmVxdWlyZSBFcnJvciB9IHx8ICRFcnJvcjo6VkVSU0lPTiA8IDAuMTUwMDkpIHsKIAkkcG17J3ByaXZhdGUtRXJyb3IucG0nfSA9ICckKElOU1RfTElCRElSKS9FcnJvci5wbSc7CiB9CiAKZGlmZiAtLWdpdCBhL3BlcmwvcHJpdmF0ZS1FcnJvci5wbSBiL3BlcmwvcHJpdmF0ZS1FcnJvci5wbQppbmRleCAxMWU5Y2Q5Li42MDk4MTM1IDEwMDY0NAotLS0gYS9wZXJsL3ByaXZhdGUtRXJyb3IucG0KKysrIGIvcGVybC9wcml2YXRlLUVycm9yLnBtCkBAIC02MzAsNyArNjMwLDcgQEAKID1oZWFkMiBDT05TVFJVQ1RPUlMKIAogVGhlIEM8RXJyb3I+IG9iamVjdCBpcyBpbXBsZW1lbnRlZCBhcyBhIEhBU0guIFRoaXMgSEFTSCBpcyBpbml0aWFsaXplZAotd2l0aCB0aGUgYXJndW1lbnRzIHRoYXQgYXJlIHBhc3NlZCB0byBpdCdzIGNvbnN0cnVjdG9yLiBUaGUgZWxlbWVudHMKK3dpdGggdGhlIGFyZ3VtZW50cyB0aGF0IGFyZSBwYXNzZWQgdG8gaXRzIGNvbnN0cnVjdG9yLiBUaGUgZWxlbWVudHMKIHRoYXQgYXJlIHVzZWQgYnksIG9yIGFyZSByZXRyaWV2YWJsZSBieSB0aGUgQzxFcnJvcj4gY2xhc3MgYXJlIGxpc3RlZAogYmVsb3csIG90aGVyIGNsYXNzZXMgbWF5IGFkZCB0byB0aGVzZS4KIApAQCAtNzYzLDEzICs3NjMsMTMgQEAKIAogPWl0ZW0gRXJyb3I6OlNpbXBsZQogCi1UaGlzIGNsYXNzIGNhbiBiZSB1c2VkIHRvIGhvbGQgc2ltcGxlIGVycm9yIHN0cmluZ3MgYW5kIHZhbHVlcy4gSXQncworVGhpcyBjbGFzcyBjYW4gYmUgdXNlZCB0byBob2xkIHNpbXBsZSBlcnJvciBzdHJpbmdzIGFuZCB2YWx1ZXMuIEl0cwogY29uc3RydWN0b3IgdGFrZXMgdHdvIGFyZ3VtZW50cy4gVGhlIGZpcnN0IGlzIGEgdGV4dCB2YWx1ZSwgdGhlIHNlY29uZAogaXMgYSBudW1lcmljIHZhbHVlLiBUaGVzZSB2YWx1ZXMgYXJlIHdoYXQgd2lsbCBiZSByZXR1cm5lZCBieSB0aGUKIG92ZXJsb2FkIG1ldGhvZHMuCiAKIElmIHRoZSB0ZXh0IHZhbHVlIGVuZHMgd2l0aCBDPGF0IGZpbGUgbGluZSAxPiBhcyAkQCBzdHJpbmdzIGRvLCB0aGVuCi10aGlzIGluZm9tYXRpb24gd2lsbCBiZSB1c2VkIHRvIHNldCB0aGUgQzwtZmlsZT4gYW5kIEM8LWxpbmU+IGFyZ3VtZW50cwordGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJlIHVzZWQgdG8gc2V0IHRoZSBDPC1maWxlPiBhbmQgQzwtbGluZT4gYXJndW1lbnRzCiBvZiB0aGUgZXJyb3Igb2JqZWN0LgogCiBUaGlzIGNsYXNzIGlzIHVzZWQgaW50ZXJuYWxseSBpZiBhbiBldmFsJ2QgYmxvY2sgZGllJ3Mgd2l0aCBhbiBlcnJvcgpkaWZmIC0tZ2l0IGEvcGt0LWxpbmUuYyBiL3BrdC1saW5lLmMKaW5kZXggNWEwNDk4NC4uNzBmMTk1MCAxMDA2NDQKLS0tIGEvcGt0LWxpbmUuYworKysgYi9wa3QtbGluZS5jCkBAIC0xLDYgKzEsNyBAQAogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAicGt0LWxpbmUuaCIKIAorY2hhciBwYWNrZXRfYnVmZmVyW0xBUkdFX1BBQ0tFVF9NQVhdOwogc3RhdGljIGNvbnN0IGNoYXIgKnBhY2tldF90cmFjZV9wcmVmaXggPSAiZ2l0IjsKIHN0YXRpYyBjb25zdCBjaGFyIHRyYWNlX2tleVtdID0gIkdJVF9UUkFDRV9QQUNLRVQiOwogCkBAIC00Nyw0NSArNDgsMTMgQEAKIH0KIAogLyoKLSAqIFdyaXRlIGEgcGFja2V0aXplZCBzdHJlYW0sIHdoZXJlIGVhY2ggbGluZSBpcyBwcmVjZWRlZCBieQotICogaXRzIGxlbmd0aCAoaW5jbHVkaW5nIHRoZSBoZWFkZXIpIGFzIGEgNC1ieXRlIGhleCBudW1iZXIuCi0gKiBBIGxlbmd0aCBvZiAnemVybycgbWVhbnMgZW5kIG9mIHN0cmVhbSAoYW5kIGEgbGVuZ3RoIG9mIDEtMwotICogd291bGQgYmUgYW4gZXJyb3IpLgotICoKLSAqIFRoaXMgaXMgYWxsIHByZXR0eSBzdHVwaWQsIGJ1dCB3ZSB1c2UgdGhpcyBwYWNrZXRpemVkIGxpbmUKLSAqIGZvcm1hdCB0byBtYWtlIGEgc3RyZWFtaW5nIGZvcm1hdCBwb3NzaWJsZSB3aXRob3V0IGV2ZXIKLSAqIG92ZXItcnVubmluZyB0aGUgcmVhZCBidWZmZXJzLiBUaGF0IHdheSB3ZSdsbCBuZXZlciByZWFkCi0gKiBpbnRvIHdoYXQgbWlnaHQgYmUgdGhlIHBhY2sgZGF0YSAod2hpY2ggc2hvdWxkIGdvIHRvIGFub3RoZXIKLSAqIHByb2Nlc3MgZW50aXJlbHkpLgotICoKLSAqIFRoZSB3cml0aW5nIHNpZGUgY291bGQgdXNlIHN0ZGlvLCBidXQgc2luY2UgdGhlIHJlYWRpbmcKLSAqIHNpZGUgY2FuJ3QsIHdlIHN0YXkgd2l0aCBwdXJlIHJlYWQvd3JpdGUgaW50ZXJmYWNlcy4KLSAqLwotc3NpemVfdCBzYWZlX3dyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzc2l6ZV90IG4pCi17Ci0Jc3NpemVfdCBubiA9IG47Ci0Jd2hpbGUgKG4pIHsKLQkJaW50IHJldCA9IHh3cml0ZShmZCwgYnVmLCBuKTsKLQkJaWYgKHJldCA+IDApIHsKLQkJCWJ1ZiA9IChjaGFyICopIGJ1ZiArIHJldDsKLQkJCW4gLT0gcmV0OwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKCFyZXQpCi0JCQlkaWUoIndyaXRlIGVycm9yIChkaXNrIGZ1bGw/KSIpOwotCQlkaWVfZXJybm8oIndyaXRlIGVycm9yIik7Ci0JfQotCXJldHVybiBubjsKLX0KLQotLyoKICAqIElmIHdlIGJ1ZmZlcmVkIHRoaW5ncyB1cCBhYm92ZSAod2UgZG9uJ3QsIGJ1dCB3ZSBzaG91bGQpLAogICogd2UnZCBmbHVzaCBpdCBoZXJlCiAgKi8KIHZvaWQgcGFja2V0X2ZsdXNoKGludCBmZCkKIHsKIAlwYWNrZXRfdHJhY2UoIjAwMDAiLCA0LCAxKTsKLQlzYWZlX3dyaXRlKGZkLCAiMDAwMCIsIDQpOworCXdyaXRlX29yX2RpZShmZCwgIjAwMDAiLCA0KTsKIH0KIAogdm9pZCBwYWNrZXRfYnVmX2ZsdXNoKHN0cnVjdCBzdHJidWYgKmJ1ZikKQEAgLTEyMSw3ICs5MCw3IEBACiAJdmFfc3RhcnQoYXJncywgZm10KTsKIAluID0gZm9ybWF0X3BhY2tldChmbXQsIGFyZ3MpOwogCXZhX2VuZChhcmdzKTsKLQlzYWZlX3dyaXRlKGZkLCBidWZmZXIsIG4pOworCXdyaXRlX29yX2RpZShmZCwgYnVmZmVyLCBuKTsKIH0KIAogdm9pZCBwYWNrZXRfYnVmX3dyaXRlKHN0cnVjdCBzdHJidWYgKmJ1ZiwgY29uc3QgY2hhciAqZm10LCAuLi4pCkBAIC0xMzUsMTMgKzEwNCwzNSBAQAogCXN0cmJ1Zl9hZGQoYnVmLCBidWZmZXIsIG4pOwogfQogCi1zdGF0aWMgdm9pZCBzYWZlX3JlYWQoaW50IGZkLCB2b2lkICpidWZmZXIsIHVuc2lnbmVkIHNpemUpCitzdGF0aWMgaW50IGdldF9wYWNrZXRfZGF0YShpbnQgZmQsIGNoYXIgKipzcmNfYnVmLCBzaXplX3QgKnNyY19zaXplLAorCQkJICAgdm9pZCAqZHN0LCB1bnNpZ25lZCBzaXplLCBpbnQgb3B0aW9ucykKIHsKLQlzc2l6ZV90IHJldCA9IHJlYWRfaW5fZnVsbChmZCwgYnVmZmVyLCBzaXplKTsKLQlpZiAocmV0IDwgMCkKLQkJZGllX2Vycm5vKCJyZWFkIGVycm9yIik7Ci0JZWxzZSBpZiAocmV0IDwgc2l6ZSkKKwlzc2l6ZV90IHJldDsKKworCWlmIChmZCA+PSAwICYmIHNyY19idWYgJiYgKnNyY19idWYpCisJCWRpZSgiQlVHOiBtdWx0aXBsZSBzb3VyY2VzIGdpdmVuIHRvIHBhY2tldF9yZWFkIik7CisKKwkvKiBSZWFkIHVwIHRvICJzaXplIiBieXRlcyBmcm9tIG91ciBzb3VyY2UsIHdoYXRldmVyIGl0IGlzLiAqLworCWlmIChzcmNfYnVmICYmICpzcmNfYnVmKSB7CisJCXJldCA9IHNpemUgPCAqc3JjX3NpemUgPyBzaXplIDogKnNyY19zaXplOworCQltZW1jcHkoZHN0LCAqc3JjX2J1ZiwgcmV0KTsKKwkJKnNyY19idWYgKz0gcmV0OworCQkqc3JjX3NpemUgLT0gcmV0OworCX0gZWxzZSB7CisJCXJldCA9IHJlYWRfaW5fZnVsbChmZCwgZHN0LCBzaXplKTsKKwkJaWYgKHJldCA8IDApCisJCQlkaWVfZXJybm8oInJlYWQgZXJyb3IiKTsKKwl9CisKKwkvKiBBbmQgY29tcGxhaW4gaWYgd2UgZGlkbid0IGdldCBlbm91Z2ggYnl0ZXMgdG8gc2F0aXNmeSB0aGUgcmVhZC4gKi8KKwlpZiAocmV0IDwgc2l6ZSkgeworCQlpZiAob3B0aW9ucyAmIFBBQ0tFVF9SRUFEX0dFTlRMRV9PTl9FT0YpCisJCQlyZXR1cm4gLTE7CisKIAkJZGllKCJUaGUgcmVtb3RlIGVuZCBodW5nIHVwIHVuZXhwZWN0ZWRseSIpOworCX0KKworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgcGFja2V0X2xlbmd0aChjb25zdCBjaGFyICpsaW5lbGVuKQpAQCAtMTY5LDEyICsxNjAsMTUgQEAKIAlyZXR1cm4gbGVuOwogfQogCi1pbnQgcGFja2V0X3JlYWRfbGluZShpbnQgZmQsIGNoYXIgKmJ1ZmZlciwgdW5zaWduZWQgc2l6ZSkKK2ludCBwYWNrZXRfcmVhZChpbnQgZmQsIGNoYXIgKipzcmNfYnVmLCBzaXplX3QgKnNyY19sZW4sCisJCWNoYXIgKmJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgaW50IG9wdGlvbnMpCiB7Ci0JaW50IGxlbjsKKwlpbnQgbGVuLCByZXQ7CiAJY2hhciBsaW5lbGVuWzRdOwogCi0Jc2FmZV9yZWFkKGZkLCBsaW5lbGVuLCA0KTsKKwlyZXQgPSBnZXRfcGFja2V0X2RhdGEoZmQsIHNyY19idWYsIHNyY19sZW4sIGxpbmVsZW4sIDQsIG9wdGlvbnMpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OwogCWxlbiA9IHBhY2tldF9sZW5ndGgobGluZWxlbik7CiAJaWYgKGxlbiA8IDApCiAJCWRpZSgicHJvdG9jb2wgZXJyb3I6IGJhZCBsaW5lIGxlbmd0aCBjaGFyYWN0ZXI6ICUuNHMiLCBsaW5lbGVuKTsKQEAgLTE4NSwzOCArMTc5LDM3IEBACiAJbGVuIC09IDQ7CiAJaWYgKGxlbiA+PSBzaXplKQogCQlkaWUoInByb3RvY29sIGVycm9yOiBiYWQgbGluZSBsZW5ndGggJWQiLCBsZW4pOwotCXNhZmVfcmVhZChmZCwgYnVmZmVyLCBsZW4pOworCXJldCA9IGdldF9wYWNrZXRfZGF0YShmZCwgc3JjX2J1Ziwgc3JjX2xlbiwgYnVmZmVyLCBsZW4sIG9wdGlvbnMpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJaWYgKChvcHRpb25zICYgUEFDS0VUX1JFQURfQ0hPTVBfTkVXTElORSkgJiYKKwkgICAgbGVuICYmIGJ1ZmZlcltsZW4tMV0gPT0gJ1xuJykKKwkJbGVuLS07CisKIAlidWZmZXJbbGVuXSA9IDA7CiAJcGFja2V0X3RyYWNlKGJ1ZmZlciwgbGVuLCAwKTsKIAlyZXR1cm4gbGVuOwogfQogCi1pbnQgcGFja2V0X2dldF9saW5lKHN0cnVjdCBzdHJidWYgKm91dCwKLQljaGFyICoqc3JjX2J1Ziwgc2l6ZV90ICpzcmNfbGVuKQorc3RhdGljIGNoYXIgKnBhY2tldF9yZWFkX2xpbmVfZ2VuZXJpYyhpbnQgZmQsCisJCQkJICAgICAgY2hhciAqKnNyYywgc2l6ZV90ICpzcmNfbGVuLAorCQkJCSAgICAgIGludCAqZHN0X2xlbikKIHsKLQlpbnQgbGVuOworCWludCBsZW4gPSBwYWNrZXRfcmVhZChmZCwgc3JjLCBzcmNfbGVuLAorCQkJICAgICAgcGFja2V0X2J1ZmZlciwgc2l6ZW9mKHBhY2tldF9idWZmZXIpLAorCQkJICAgICAgUEFDS0VUX1JFQURfQ0hPTVBfTkVXTElORSk7CisJaWYgKGRzdF9sZW4pCisJCSpkc3RfbGVuID0gbGVuOworCXJldHVybiBsZW4gPyBwYWNrZXRfYnVmZmVyIDogTlVMTDsKK30KIAotCWlmICgqc3JjX2xlbiA8IDQpCi0JCXJldHVybiAtMTsKLQlsZW4gPSBwYWNrZXRfbGVuZ3RoKCpzcmNfYnVmKTsKLQlpZiAobGVuIDwgMCkKLQkJcmV0dXJuIC0xOwotCWlmICghbGVuKSB7Ci0JCSpzcmNfYnVmICs9IDQ7Ci0JCSpzcmNfbGVuIC09IDQ7Ci0JCXBhY2tldF90cmFjZSgiMDAwMCIsIDQsIDApOwotCQlyZXR1cm4gMDsKLQl9Ci0JaWYgKCpzcmNfbGVuIDwgbGVuKQotCQlyZXR1cm4gLTI7CitjaGFyICpwYWNrZXRfcmVhZF9saW5lKGludCBmZCwgaW50ICpsZW5fcCkKK3sKKwlyZXR1cm4gcGFja2V0X3JlYWRfbGluZV9nZW5lcmljKGZkLCBOVUxMLCBOVUxMLCBsZW5fcCk7Cit9CiAKLQkqc3JjX2J1ZiArPSA0OwotCSpzcmNfbGVuIC09IDQ7Ci0JbGVuIC09IDQ7Ci0KLQlzdHJidWZfYWRkKG91dCwgKnNyY19idWYsIGxlbik7Ci0JKnNyY19idWYgKz0gbGVuOwotCSpzcmNfbGVuIC09IGxlbjsKLQlwYWNrZXRfdHJhY2Uob3V0LT5idWYsIG91dC0+bGVuLCAwKTsKLQlyZXR1cm4gbGVuOworY2hhciAqcGFja2V0X3JlYWRfbGluZV9idWYoY2hhciAqKnNyYywgc2l6ZV90ICpzcmNfbGVuLCBpbnQgKmRzdF9sZW4pCit7CisJcmV0dXJuIHBhY2tldF9yZWFkX2xpbmVfZ2VuZXJpYygtMSwgc3JjLCBzcmNfbGVuLCBkc3RfbGVuKTsKIH0KZGlmZiAtLWdpdCBhL3BrdC1saW5lLmggYi9wa3QtbGluZS5oCmluZGV4IDFlNWRjZmUuLjBhODM4ZDEgMTAwNjQ0Ci0tLSBhL3BrdC1saW5lLmgKKysrIGIvcGt0LWxpbmUuaApAQCAtNSwxNSArNSw3OCBAQAogI2luY2x1ZGUgInN0cmJ1Zi5oIgogCiAvKgotICogU2lsbHkgcGFja2V0aXplZCBsaW5lIHdyaXRpbmcgaW50ZXJmYWNlCisgKiBXcml0ZSBhIHBhY2tldGl6ZWQgc3RyZWFtLCB3aGVyZSBlYWNoIGxpbmUgaXMgcHJlY2VkZWQgYnkKKyAqIGl0cyBsZW5ndGggKGluY2x1ZGluZyB0aGUgaGVhZGVyKSBhcyBhIDQtYnl0ZSBoZXggbnVtYmVyLgorICogQSBsZW5ndGggb2YgJ3plcm8nIG1lYW5zIGVuZCBvZiBzdHJlYW0gKGFuZCBhIGxlbmd0aCBvZiAxLTMKKyAqIHdvdWxkIGJlIGFuIGVycm9yKS4KKyAqCisgKiBUaGlzIGlzIGFsbCBwcmV0dHkgc3R1cGlkLCBidXQgd2UgdXNlIHRoaXMgcGFja2V0aXplZCBsaW5lCisgKiBmb3JtYXQgdG8gbWFrZSBhIHN0cmVhbWluZyBmb3JtYXQgcG9zc2libGUgd2l0aG91dCBldmVyCisgKiBvdmVyLXJ1bm5pbmcgdGhlIHJlYWQgYnVmZmVycy4gVGhhdCB3YXkgd2UnbGwgbmV2ZXIgcmVhZAorICogaW50byB3aGF0IG1pZ2h0IGJlIHRoZSBwYWNrIGRhdGEgKHdoaWNoIHNob3VsZCBnbyB0byBhbm90aGVyCisgKiBwcm9jZXNzIGVudGlyZWx5KS4KKyAqCisgKiBUaGUgd3JpdGluZyBzaWRlIGNvdWxkIHVzZSBzdGRpbywgYnV0IHNpbmNlIHRoZSByZWFkaW5nCisgKiBzaWRlIGNhbid0LCB3ZSBzdGF5IHdpdGggcHVyZSByZWFkL3dyaXRlIGludGVyZmFjZXMuCiAgKi8KIHZvaWQgcGFja2V0X2ZsdXNoKGludCBmZCk7CiB2b2lkIHBhY2tldF93cml0ZShpbnQgZmQsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwgMiwgMykpKTsKIHZvaWQgcGFja2V0X2J1Zl9mbHVzaChzdHJ1Y3Qgc3RyYnVmICpidWYpOwogdm9pZCBwYWNrZXRfYnVmX3dyaXRlKHN0cnVjdCBzdHJidWYgKmJ1ZiwgY29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAyLCAzKSkpOwogCi1pbnQgcGFja2V0X3JlYWRfbGluZShpbnQgZmQsIGNoYXIgKmJ1ZmZlciwgdW5zaWduZWQgc2l6ZSk7Ci1pbnQgcGFja2V0X2dldF9saW5lKHN0cnVjdCBzdHJidWYgKm91dCwgY2hhciAqKnNyY19idWYsIHNpemVfdCAqc3JjX2xlbik7Ci1zc2l6ZV90IHNhZmVfd3JpdGUoaW50LCBjb25zdCB2b2lkICosIHNzaXplX3QpOworLyoKKyAqIFJlYWQgYSBwYWNrZXRpemVkIGxpbmUgaW50byB0aGUgYnVmZmVyLCB3aGljaCBtdXN0IGJlIGF0IGxlYXN0IHNpemUgYnl0ZXMKKyAqIGxvbmcuIFRoZSByZXR1cm4gdmFsdWUgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCBpbnRvIHRoZSBidWZmZXIuCisgKgorICogSWYgc3JjX2J1ZmZlciBpcyBub3QgTlVMTCAoYW5kIG5vciBpcyAqc3JjX2J1ZmZlciksIGl0IHNob3VsZCBwb2ludCB0byBhCisgKiBidWZmZXIgY29udGFpbmluZyB0aGUgcGFja2V0IGRhdGEgdG8gcGFyc2UsIG9mIGF0IGxlYXN0ICpzcmNfbGVuIGJ5dGVzLgorICogQWZ0ZXIgdGhlIGZ1bmN0aW9uIHJldHVybnMsIHNyY19idWYgd2lsbCBiZSBpbmNyZW1lbnRlZCBhbmQgc3JjX2xlbgorICogZGVjcmVtZW50ZWQgYnkgdGhlIG51bWJlciBvZiBieXRlcyBjb25zdW1lZC4KKyAqCisgKiBJZiBzcmNfYnVmZmVyIChvciAqc3JjX2J1ZmZlcikgaXMgTlVMTCwgdGhlbiBkYXRhIGlzIHJlYWQgZnJvbSB0aGUKKyAqIGRlc2NyaXB0b3IgImZkIi4KKyAqCisgKiBJZiBvcHRpb25zIGRvZXMgbm90IGNvbnRhaW4gUEFDS0VUX1JFQURfR0VOVExFX09OX0VPRiwgd2Ugd2lsbCBkaWUgdW5kZXIgYW55CisgKiBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogICAxLiBSZWFkIGVycm9yIGZyb20gZGVzY3JpcHRvci4KKyAqCisgKiAgIDIuIFByb3RvY29sIGVycm9yIGZyb20gdGhlIHJlbW90ZSAoZS5nLiwgYm9ndXMgbGVuZ3RoIGNoYXJhY3RlcnMpLgorICoKKyAqICAgMy4gUmVjZWl2aW5nIGEgcGFja2V0IGxhcmdlciB0aGFuICJzaXplIiBieXRlcy4KKyAqCisgKiAgIDQuIFRydW5jYXRlZCBvdXRwdXQgZnJvbSB0aGUgcmVtb3RlIChlLmcuLCB3ZSBleHBlY3RlZCBhIHBhY2tldCBidXQgZ290CisgKiAgICAgIEVPRiwgb3Igd2UgZ290IGEgcGFydGlhbCBwYWNrZXQgZm9sbG93ZWQgYnkgRU9GKS4KKyAqCisgKiBJZiBvcHRpb25zIGRvZXMgY29udGFpbiBQQUNLRVRfUkVBRF9HRU5UTEVfT05fRU9GLCB3ZSB3aWxsIG5vdCBkaWUgb24KKyAqIGNvbmRpdGlvbiA0ICh0cnVuY2F0ZWQgaW5wdXQpLCBidXQgaW5zdGVhZCByZXR1cm4gLTEuIEhvd2V2ZXIsIHdlIHdpbGwgc3RpbGwKKyAqIGRpZSBmb3IgdGhlIG90aGVyIDMgY29uZGl0aW9ucy4KKyAqCisgKiBJZiBvcHRpb25zIGNvbnRhaW5zIFBBQ0tFVF9SRUFEX0NIT01QX05FV0xJTkUsIGEgdHJhaWxpbmcgbmV3bGluZSAoaWYKKyAqIHByZXNlbnQpIGlzIHJlbW92ZWQgZnJvbSB0aGUgYnVmZmVyIGJlZm9yZSByZXR1cm5pbmcuCisgKi8KKyNkZWZpbmUgUEFDS0VUX1JFQURfR0VOVExFX09OX0VPRiAoMXU8PDApCisjZGVmaW5lIFBBQ0tFVF9SRUFEX0NIT01QX05FV0xJTkUgKDF1PDwxKQoraW50IHBhY2tldF9yZWFkKGludCBmZCwgY2hhciAqKnNyY19idWZmZXIsIHNpemVfdCAqc3JjX2xlbiwgY2hhcgorCQkqYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBpbnQgb3B0aW9ucyk7CisKKy8qCisgKiBDb252ZW5pZW5jZSB3cmFwcGVyIGZvciBwYWNrZXRfcmVhZCB0aGF0IGlzIG5vdCBnZW50bGUsIGFuZCBzZXRzIHRoZQorICogQ0hPTVBfTkVXTElORSBvcHRpb24uIFRoZSByZXR1cm4gdmFsdWUgaXMgTlVMTCBmb3IgYSBmbHVzaCBwYWNrZXQsCisgKiBhbmQgb3RoZXJ3aXNlIHBvaW50cyB0byBhIHN0YXRpYyBidWZmZXIgKHRoYXQgbWF5IGJlIG92ZXJ3cml0dGVuIGJ5CisgKiBzdWJzZXF1ZW50IGNhbGxzKS4gSWYgdGhlIHNpemUgcGFyYW1ldGVyIGlzIG5vdCBOVUxMLCB0aGUgbGVuZ3RoIG9mIHRoZQorICogcGFja2V0IGlzIHdyaXR0ZW4gdG8gaXQuCisgKi8KK2NoYXIgKnBhY2tldF9yZWFkX2xpbmUoaW50IGZkLCBpbnQgKnNpemUpOworCisvKgorICogU2FtZSBhcyBwYWNrZXRfcmVhZF9saW5lLCBidXQgcmVhZCBmcm9tIGEgYnVmIHJhdGhlciB0aGFuIGEgZGVzY3JpcHRvcjsKKyAqIHNlZSBwYWNrZXRfcmVhZCBmb3IgZGV0YWlscyBvbiBob3cgc3JjXyogaXMgdXNlZC4KKyAqLworY2hhciAqcGFja2V0X3JlYWRfbGluZV9idWYoY2hhciAqKnNyY19idWYsIHNpemVfdCAqc3JjX2xlbiwgaW50ICpzaXplKTsKKworI2RlZmluZSBERUZBVUxUX1BBQ0tFVF9NQVggMTAwMAorI2RlZmluZSBMQVJHRV9QQUNLRVRfTUFYIDY1NTIwCitleHRlcm4gY2hhciBwYWNrZXRfYnVmZmVyW0xBUkdFX1BBQ0tFVF9NQVhdOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3BvL1JFQURNRSBiL3BvL1JFQURNRQppbmRleCBjMTUyMGU4Li5kOGM5MTExIDEwMDY0NAotLS0gYS9wby9SRUFETUUKKysrIGIvcG8vUkVBRE1FCkBAIC0yMzIsNyArMjMyLDcgQEAKIAogICAgICAgICMgVG8gaW50ZXJwb2xhdGUgdmFyaWFibGVzOgogICAgICAgIGRldGFpbHM9Im9oIG5vZXMiCi0gICAgICAgZXZhbF9nZXR0ZXh0ICJBbiBlcnJvciBvY2N1cmVkOiBcJGRldGFpbHMiOyBlY2hvCisgICAgICAgZXZhbF9nZXR0ZXh0ICJBbiBlcnJvciBvY2N1cnJlZDogXCRkZXRhaWxzIjsgZWNobwogCiAgICBJbiBhZGRpdGlvbiB3ZSBoYXZlIHdyYXBwZXJzIGZvciBtZXNzYWdlcyB0aGF0IGVuZCB3aXRoIGEgdHJhaWxpbmcKICAgIG5ld2xpbmUuIEkuZS4geW91IGNvdWxkIHdyaXRlIHRoZSBhYm92ZSBhczoKQEAgLTI0Miw3ICsyNDIsNyBAQAogCiAgICAgICAgIyBUbyBpbnRlcnBvbGF0ZSB2YXJpYWJsZXM6CiAgICAgICAgZGV0YWlscz0ib2ggbm9lcyIKLSAgICAgICBldmFsX2dldHRleHRsbiAiQW4gZXJyb3Igb2NjdXJlZDogXCRkZXRhaWxzIgorICAgICAgIGV2YWxfZ2V0dGV4dGxuICJBbiBlcnJvciBvY2N1cnJlZDogXCRkZXRhaWxzIgogCiAgICBNb3JlIGRvY3VtZW50YXRpb24gYWJvdXQgdGhlIGludGVyZmFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIEdOVSBpbmZvCiAgICBwYWdlOiBgaW5mbyAnKGdldHRleHQpc2gnYC4gTG9va2luZyBhdCBnaXQtYW0uc2ggKHRoZSBmaXJzdCBzaGVsbApAQCAtMjU3LDcgKzI1Nyw3IEBACiAKICAgICAgICB1c2UgR2l0OjpJMThOOwogICAgICAgIHByaW50IF9fKCJXZWxjb21lIHRvIEdpdCFcbiIpOwotICAgICAgIHByaW50ZiBfXygiVGhlIGZvbGxvd2luZyBlcnJvciBvY2N1cmVkOiAlc1xuIiksICRlcnJvcjsKKyAgICAgICBwcmludGYgX18oIlRoZSBmb2xsb3dpbmcgZXJyb3Igb2NjdXJyZWQ6ICVzXG4iKSwgJGVycm9yOwogCiAgICBSdW4gYHBlcmxkb2MgcGVybC9HaXQvSTE4Ti5wbWAgZm9yIG1vcmUgaW5mby4KIApkaWZmIC0tZ2l0IGEvcG8vVEVBTVMgYi9wby9URUFNUwppbmRleCBlOWViYzhjLi41ZWI1YWFkIDEwMDY0NAotLS0gYS9wby9URUFNUworKysgYi9wby9URUFNUwpAQCAtMzMsOCArMzMsOSBAQAogTGVhZGVyOgkJUGV0ZXIgS3JlZnRpbmcgPHBldGVyQHNvZnR3b2x2ZXMucHAuc2U+CiAKIExhbmd1YWdlOgl2aSAoVmlldG5hbWVzZSkKLVJlcG9zaXRvcnk6CWh0dHBzOi8vZ2l0aHViLmNvbS92bndpbGRtYW4vZ2l0LmdpdAorUmVwb3NpdG9yeToJaHR0cHM6Ly9naXRodWIuY29tL3Zud2lsZG1hbi9naXQvCiBMZWFkZXI6CQlUcuG6p24gTmfhu41jIFF1w6JuIDx2bndpbGRtYW4gQVQgZ21haWwuY29tPgorTWVtYmVyczoJTmd1eeG7hW4gVGjDoWkgTmfhu41jIER1eSA8cGNsb3VkcyBBVCBnbWFpbC5jb20+CiAKIExhbmd1YWdlOgl6aF9DTiAoU2ltcGxpZmllZCBDaGluZXNlKQogUmVwb3NpdG9yeToJaHR0cHM6Ly9naXRodWIuY29tL2dvdGdpdC9naXQtcG8temhfQ04vCkBAIC00NSwzICs0Niw0IEBACiAJCVlpY2hhbyBZdSA8eXljMTk5MiBBVCBnbWFpbC5jb20+CiAJCXdzMzM4OSA8d2lsbHNtaXRoMzM4OSBBVCBnbWFpbC5jb20+CiAJCVRoeW5zb24gPGxhbnhpbmdjYW4gQVQgZ21haWwuY29tPgorCQlXYW5nIFNoZW5nIDx3YW5nc2hlbmcyMDA4bG92ZUAxNjMuY29tPgpkaWZmIC0tZ2l0IGEvcG8vZGUucG8gYi9wby9kZS5wbwppbmRleCA3MGQ4NDE4Li40OTAxNDg4IDEwMDY0NAotLS0gYS9wby9kZS5wbworKysgYi9wby9kZS5wbwpAQCAtMSwyMyArMSwyMyBAQAogIyBHZXJtYW4gdHJhbnNsYXRpb25zIGZvciBHaXQuCi0jIENvcHlyaWdodCAoQykgMjAxMC0yMDEyIFJhbGYgVGhpZWxvdyA8cmFsZi50aGllbG93QGdvb2dsZW1haWwuY29tPgorIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMiBSYWxmIFRoaWVsb3cgPHJhbGYudGhpZWxvd0BnbWFpbC5jb20+CiAjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBHaXQgcGFja2FnZS4KLSMgUmFsZiBUaGllbG93IDxyYWxmLnRoaWVsb3dAZ29vZ2xlbWFpbC5jb20+LCAyMDEwLCAyMDExLCAyMDEyLgorIyBSYWxmIFRoaWVsb3cgPHJhbGYudGhpZWxvd0BnbWFpbC5jb20+LCAyMDEwLCAyMDExLCAyMDEyLgogIwogbXNnaWQgIiIKIG1zZ3N0ciAiIgotIlByb2plY3QtSWQtVmVyc2lvbjogZ2l0IDEuNy4xMVxuIgorIlByb2plY3QtSWQtVmVyc2lvbjogZ2l0IDEuOC4zXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IEdpdCBNYWlsaW5nIExpc3QgPGdpdEB2Z2VyLmtlcm5lbC5vcmc+XG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTItMDYtMDggMTA6MjArMDgwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMTItMDMtMjggMTg6NDYrMDIwMFxuIgotIkxhc3QtVHJhbnNsYXRvcjogUmFsZiBUaGllbG93IDxyYWxmLnRoaWVsb3dAZ29vZ2xlbWFpbC5jb20+XG4iCi0iTGFuZ3VhZ2UtVGVhbTogR2VybWFuXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTMtMDQtMzAgMDg6MjUrMDgwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMTItMTAtMDIgMTk6MzUrMDIwMFxuIgorIkxhc3QtVHJhbnNsYXRvcjogUmFsZiBUaGllbG93IDxyYWxmLnRoaWVsb3dAZ21haWwuY29tPlxuIgorIkxhbmd1YWdlLVRlYW06IEdlcm1hbiA8PlxuIgogIkxhbmd1YWdlOiBkZVxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgotIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPShuICE9IDEpO1xuIgorIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPShuIT0xKTtcbiIKIAotIzogYWR2aWNlLmM6NDAKKyM6IGFkdmljZS5jOjUzCiAjLCBjLWZvcm1hdAogbXNnaWQgImhpbnQ6ICUuKnNcbiIKIG1zZ3N0ciAiSGlud2VpczogJS4qc1xuIgpAQCAtMjYsMTcgKzI2LDI0MCBAQAogIy4gKiBNZXNzYWdlIHVzZWQgYm90aCB3aGVuICdnaXQgY29tbWl0JyBmYWlscyBhbmQgd2hlbgogIy4gKiBvdGhlciBjb21tYW5kcyBkb2luZyBhIG1lcmdlIGRvLgogIy4KLSM6IGFkdmljZS5jOjcwCisjOiBhZHZpY2UuYzo4MwogbXNnaWQgIiIKICJGaXggdGhlbSB1cCBpbiB0aGUgd29yayB0cmVlLFxuIgogImFuZCB0aGVuIHVzZSAnZ2l0IGFkZC9ybSA8ZmlsZT4nIGFzXG4iCiAiYXBwcm9wcmlhdGUgdG8gbWFyayByZXNvbHV0aW9uIGFuZCBtYWtlIGEgY29tbWl0LFxuIgogIm9yIHVzZSAnZ2l0IGNvbW1pdCAtYScuIgogbXNnc3RyICIiCi0iS29ycmlnaWVyZSBkaWVzIGltIEFyYmVpdHNiYXVtLFxuIgotInVuZCBiZW51dHplIGRhbm4gJ2dpdCBhZGQvcm0gPERhdGVpPidcbiIKKyJLb3JyaWdpZXJlbiBTaWUgZGllcyBpbSBBcmJlaXRzYmF1bSxcbiIKKyJ1bmQgYmVudXR6ZW4gU2llIGRhbm4gJ2dpdCBhZGQvcm0gPERhdGVpPidcbiIKICJ1bSBkaWUgQXVmbMO2c3VuZyBlbnRzcHJlY2hlbmQgenUgbWFya2llcmVuIHVuZCBlaW56dXRyYWdlbixcbiIKLSJvZGVyIGJlbnV0emUgJ2dpdCBjb21taXQgLWEnLiIKKyJvZGVyIGJlbnV0emVuIFNpZSAnZ2l0IGNvbW1pdCAtYScuIgorCisjOiBhcmNoaXZlLmM6MTAKK21zZ2lkICJnaXQgYXJjaGl2ZSBbb3B0aW9uc10gPHRyZWUtaXNoPiBbPHBhdGg+Li4uXSIKK21zZ3N0ciAiZ2l0IGFyY2hpdmUgW09wdGlvbmVuXSA8VmVyc2lvbnNyZWZlcmVuej4gWzxQZmFkPi4uLl0iCisKKyM6IGFyY2hpdmUuYzoxMQorbXNnaWQgImdpdCBhcmNoaXZlIC0tbGlzdCIKK21zZ3N0ciAiZ2l0IGFyY2hpdmUgLS1saXN0IgorCisjOiBhcmNoaXZlLmM6MTIKK21zZ2lkICIiCisiZ2l0IGFyY2hpdmUgLS1yZW1vdGUgPHJlcG8+IFstLWV4ZWMgPGNtZD5dIFtvcHRpb25zXSA8dHJlZS1pc2g+IFs8cGF0aD4uLi5dIgorbXNnc3RyICIiCisiZ2l0IGFyY2hpdmUgLS1yZW1vdGUgPFByb2pla3RhcmNoaXY+IFstLWV4ZWMgPFByb2dyYW1tPl0gW09wdGlvbmVuXSAiCisiPFZlcnNpb25zcmVmZXJlbno+IFtQZmFkLi4uXSIKKworIzogYXJjaGl2ZS5jOjEzCittc2dpZCAiZ2l0IGFyY2hpdmUgLS1yZW1vdGUgPHJlcG8+IFstLWV4ZWMgPGNtZD5dIC0tbGlzdCIKK21zZ3N0ciAiZ2l0IGFyY2hpdmUgLS1yZW1vdGUgPFByb2pla3RhcmNoaXY+IFstLWV4ZWMgPFByb2dyYW1tPl0gLS1saXN0IgorCisjOiBhcmNoaXZlLmM6MzIzCittc2dpZCAiZm10IgorbXNnc3RyICJGb3JtYXQiCisKKyM6IGFyY2hpdmUuYzozMjMKK21zZ2lkICJhcmNoaXZlIGZvcm1hdCIKK21zZ3N0ciAiQXVzZ2FiZWZvcm1hdCIKKworIzogYXJjaGl2ZS5jOjMyNCBidWlsdGluL2xvZy5jOjExMjYKK21zZ2lkICJwcmVmaXgiCittc2dzdHIgIlByZWZpeCIKKworIzogYXJjaGl2ZS5jOjMyNQorbXNnaWQgInByZXBlbmQgcHJlZml4IHRvIGVhY2ggcGF0aG5hbWUgaW4gdGhlIGFyY2hpdmUiCittc2dzdHIgInN0ZWxsdCBlaW5lbiBQcsOkZml4IHZvciBqZWRlbiBQZmFkbmFtZW4gaW4gZGVyIEF1c2dhYmUiCisKKyM6IGFyY2hpdmUuYzozMjYgYnVpbHRpbi9hcmNoaXZlLmM6ODggYnVpbHRpbi9ibGFtZS5jOjIzNzEKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcyIGJ1aWx0aW4vY29uZmlnLmM6NTUgYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NQorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NyBidWlsdGluL2dyZXAuYzo3MTUgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc3CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDkwIGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTMgYnVpbHRpbi9ub3Rlcy5jOjUzNgorIzogYnVpbHRpbi9ub3Rlcy5jOjY5MyBidWlsdGluL3JlYWQtdHJlZS5jOjEwNyBwYXJzZS1vcHRpb25zLmg6MTQ5Cittc2dpZCAiZmlsZSIKK21zZ3N0ciAiRGF0ZWkiCisKKyM6IGFyY2hpdmUuYzozMjcgYnVpbHRpbi9hcmNoaXZlLmM6ODkKK21zZ2lkICJ3cml0ZSB0aGUgYXJjaGl2ZSB0byB0aGlzIGZpbGUiCittc2dzdHIgInNjaHJlaWJ0IGRpZSBBdXNnYWJlIGluIGRpZXNlIERhdGVpIgorCisjOiBhcmNoaXZlLmM6MzI5Cittc2dpZCAicmVhZCAuZ2l0YXR0cmlidXRlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAibGllc3QgLmdpdGF0dHJpYnV0ZXMgYXVzIGRlbSBBcmJlaXRzdmVyemVpY2huaXMiCisKKyM6IGFyY2hpdmUuYzozMzAKK21zZ2lkICJyZXBvcnQgYXJjaGl2ZWQgZmlsZXMgb24gc3RkZXJyIgorbXNnc3RyICJnaWJ0IGFyY2hpdmllcnRlIERhdGVpZW4gaW4gZGVyIFN0YW5kYXJkLUZlaGxlcmF1c2dhYmUgYXVzIgorCisjOiBhcmNoaXZlLmM6MzMxCittc2dpZCAic3RvcmUgb25seSIKK21zZ3N0ciAibnVyIHNwZWljaGVybiIKKworIzogYXJjaGl2ZS5jOjMzMgorbXNnaWQgImNvbXByZXNzIGZhc3RlciIKK21zZ3N0ciAic2NobmVsbGVyIGtvbXByaW1pZXJlbiIKKworIzogYXJjaGl2ZS5jOjM0MAorbXNnaWQgImNvbXByZXNzIGJldHRlciIKK21zZ3N0ciAiYmVzc2VyIGtvbXByaW1pZXJlbiIKKworIzogYXJjaGl2ZS5jOjM0MworbXNnaWQgImxpc3Qgc3VwcG9ydGVkIGFyY2hpdmUgZm9ybWF0cyIKK21zZ3N0ciAibGlzdGV0IHVudGVyc3TDvHR6dGUgQXVzZ2FiZWZvcm1hdGUgYXVmIgorCisjOiBhcmNoaXZlLmM6MzQ1IGJ1aWx0aW4vYXJjaGl2ZS5jOjkwIGJ1aWx0aW4vY2xvbmUuYzo4NgorbXNnaWQgInJlcG8iCittc2dzdHIgIlByb2pla3RhcmNoaXYiCisKKyM6IGFyY2hpdmUuYzozNDYgYnVpbHRpbi9hcmNoaXZlLmM6OTEKK21zZ2lkICJyZXRyaWV2ZSB0aGUgYXJjaGl2ZSBmcm9tIHJlbW90ZSByZXBvc2l0b3J5IDxyZXBvPiIKK21zZ3N0ciAicnVmdCBkYXMgQXJjaGl2IHZvbiBleHRlcm5lbSBQcm9qZWt0YXJjaGl2IDxQcm9qZWt0YXJjaGl2PiBhYiIKKworIzogYXJjaGl2ZS5jOjM0NyBidWlsdGluL2FyY2hpdmUuYzo5MiBidWlsdGluL25vdGVzLmM6NjE1Cittc2dpZCAiY29tbWFuZCIKK21zZ3N0ciAiUHJvZ3JhbW0iCisKKyM6IGFyY2hpdmUuYzozNDggYnVpbHRpbi9hcmNoaXZlLmM6OTMKK21zZ2lkICJwYXRoIHRvIHRoZSByZW1vdGUgZ2l0LXVwbG9hZC1hcmNoaXZlIGNvbW1hbmQiCittc2dzdHIgIlBmYWQgenVtIGV4dGVybmVuIFwiZ2l0LXVwbG9hZC1hcmNoaXZlXCItUHJvZ3JhbW0iCisKKyM6IGF0dHIuYzoyNTkKK21zZ2lkICIiCisiTmVnYXRpdmUgcGF0dGVybnMgYXJlIGlnbm9yZWQgaW4gZ2l0IGF0dHJpYnV0ZXNcbiIKKyJVc2UgJ1xcIScgZm9yIGxpdGVyYWwgbGVhZGluZyBleGNsYW1hdGlvbi4iCittc2dzdHIgIiIKKyJWZXJuZWluZW5kZSBNdXN0ZXIgd2VyZGVuIGluIEdpdC1BdHRyaWJ1dGVuIGlnbm9yaWVydC5cbiIKKyJCZW51dHplbiBTaWUgJ1xcIScgZsO8ciBmw7xocmVuZGUgQXVzcnVmZXplaWNoZW4uIgorCisjOiBicmFuY2guYzo2MAorIywgYy1mb3JtYXQKK21zZ2lkICJOb3Qgc2V0dGluZyBicmFuY2ggJXMgYXMgaXRzIG93biB1cHN0cmVhbS4iCittc2dzdHIgIlp3ZWlnICVzIGthbm4gbmljaHQgc2VpbiBlaWdlbmVyIMOcYmVybmFobWV6d2VpZyBzZWluLiIKKworIzogYnJhbmNoLmM6ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgYnJhbmNoICVzIGZyb20gJXMgYnkgcmViYXNpbmcuIgorbXNnc3RyICJad2VpZyAlcyBrb25maWd1cmllcnQgenVtIEZvbGdlbiB2b24gZXh0ZXJuZW0gWndlaWcgJXMgdm9uICVzIGR1cmNoICIKKyJOZXVhdWZiYXUuIgorCisjOiBicmFuY2guYzo4MworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSBicmFuY2ggJXMgZnJvbSAlcy4iCittc2dzdHIgIlp3ZWlnICVzIGtvbmZpZ3VyaWVydCB6dW0gRm9sZ2VuIHZvbiBleHRlcm5lbSBad2VpZyAlcyB2b24gJXMuIgorCisjOiBicmFuY2guYzo4NworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIGxvY2FsIGJyYW5jaCAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIlp3ZWlnICVzIGtvbmZpZ3VyaWVydCB6dW0gRm9sZ2VuIHZvbiBsb2thbGVtIFp3ZWlnICVzIGR1cmNoIE5ldWF1ZmJhdS4iCisKKyM6IGJyYW5jaC5jOjg4CisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgbG9jYWwgYnJhbmNoICVzLiIKK21zZ3N0ciAiWndlaWcgJXMga29uZmlndXJpZXJ0IHp1bSBGb2xnZW4gdm9uIGxva2FsZW0gWndlaWcgJXMuIgorCisjOiBicmFuY2guYzo5MgorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSByZWYgJXMgYnkgcmViYXNpbmcuIgorbXNnc3RyICJad2VpZyAlcyBrb25maWd1cmllcnQgenVtIEZvbGdlbiB2b24gZXh0ZXJuZXIgUmVmZXJlbnogJXMgZHVyY2ggIgorIk5ldWF1ZmJhdS4iCisKKyM6IGJyYW5jaC5jOjkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgcmVtb3RlIHJlZiAlcy4iCittc2dzdHIgIlp3ZWlnICVzIGtvbmZpZ3VyaWVydCB6dW0gRm9sZ2VuIHZvbiBleHRlcm5lciBSZWZlcmVueiAlcy4iCisKKyM6IGJyYW5jaC5jOjk3CisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgbG9jYWwgcmVmICVzIGJ5IHJlYmFzaW5nLiIKK21zZ3N0ciAiWndlaWcgJXMga29uZmlndXJpZXJ0IHp1bSBGb2xnZW4gdm9uIGxva2FsZXIgUmVmZXJlbnogJXMgZHVyY2ggIgorIk5ldWF1ZmJhdS4iCisKKyM6IGJyYW5jaC5jOjk4CisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgbG9jYWwgcmVmICVzLiIKK21zZ3N0ciAiWndlaWcgJXMga29uZmlndXJpZXJ0IHp1bSBGb2xnZW4gdm9uIGxva2FsZXIgUmVmZXJlbnogJXMuIgorCisjOiBicmFuY2guYzoxMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVHJhY2tpbmcgbm90IHNldCB1cDogbmFtZSB0b28gbG9uZzogJXMiCittc2dzdHIgIktvbmZpZ3VyYXRpb24genVtIEZvbGdlbiB2b24gWndlaWcgbmljaHQgZWluZ2VyaWNodGV0LiBOYW1lIHp1IGxhbmc6ICVzIgorCisjOiBicmFuY2guYzoxMzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm90IHRyYWNraW5nOiBhbWJpZ3VvdXMgaW5mb3JtYXRpb24gZm9yIHJlZiAlcyIKK21zZ3N0ciAiS29uZmlndXJhdGlvbiB6dW0gRm9sZ2VuIHZvbiBad2VpZyBuaWNodCBlaW5nZXJpY2h0ZXQuIFJlZmVyZW56ICVzIGlzdCBtZWhyZGV1dGlnLiIKKworIzogYnJhbmNoLmM6MTgyCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgaXMgbm90IGEgdmFsaWQgYnJhbmNoIG5hbWUuIgorbXNnc3RyICInJXMnIGlzdCBrZWluIGfDvGx0aWdlciBad2VpZ25hbWUuIgorCisjOiBicmFuY2guYzoxODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQSBicmFuY2ggbmFtZWQgJyVzJyBhbHJlYWR5IGV4aXN0cy4iCittc2dzdHIgIlp3ZWlnICclcycgZXhpc3RpZXJ0IGJlcmVpdHMuIgorCisjOiBicmFuY2guYzoxOTUKK21zZ2lkICJDYW5ub3QgZm9yY2UgdXBkYXRlIHRoZSBjdXJyZW50IGJyYW5jaC4iCittc2dzdHIgIkthbm4gQWt0dWFsaXNpZXJ1bmcgZGVzIGFrdHVlbGxlbiBad2VpZ2VzIG5pY2h0IGVyendpbmdlbi4iCisKKyM6IGJyYW5jaC5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc2V0dXAgdHJhY2tpbmcgaW5mb3JtYXRpb247IHN0YXJ0aW5nIHBvaW50ICclcycgaXMgbm90IGEgYnJhbmNoLiIKK21zZ3N0ciAiIgorIkthbm4gSW5mb3JtYXRpb25lbiB6dW0gw5xiZXJuYWhtZXp3ZWlnIG5pY2h0IGVpbnJpY2h0ZW47IFN0YXJ0cHVua3QgJyVzJyBpc3QgIgorImtlaW4gWndlaWcuIgorCisjOiBicmFuY2guYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAidGhlIHJlcXVlc3RlZCB1cHN0cmVhbSBicmFuY2ggJyVzJyBkb2VzIG5vdCBleGlzdCIKK21zZ3N0ciAiZGVyIGFuZ2Vmb3JkZXJ0ZSBleHRlcm5lIMOcYmVybmFobWV6d2VpZyAnJXMnIGV4aXN0aWVydCBuaWNodCIKKworIzogYnJhbmNoLmM6MjA1Cittc2dpZCAiIgorIlxuIgorIklmIHlvdSBhcmUgcGxhbm5pbmcgb24gYmFzaW5nIHlvdXIgd29yayBvbiBhbiB1cHN0cmVhbVxuIgorImJyYW5jaCB0aGF0IGFscmVhZHkgZXhpc3RzIGF0IHRoZSByZW1vdGUsIHlvdSBtYXkgbmVlZCB0b1xuIgorInJ1biBcImdpdCBmZXRjaFwiIHRvIHJldHJpZXZlIGl0LlxuIgorIlxuIgorIklmIHlvdSBhcmUgcGxhbm5pbmcgdG8gcHVzaCBvdXQgYSBuZXcgbG9jYWwgYnJhbmNoIHRoYXRcbiIKKyJ3aWxsIHRyYWNrIGl0cyByZW1vdGUgY291bnRlcnBhcnQsIHlvdSBtYXkgd2FudCB0byB1c2VcbiIKKyJcImdpdCBwdXNoIC11XCIgdG8gc2V0IHRoZSB1cHN0cmVhbSBjb25maWcgYXMgeW91IHB1c2guIgorbXNnc3RyICIiCisiXG4iCisiRmFsbHMgU2llIHZvcmhhYmVuLCBJaHJlIEFyYmVpdCBhdWYgZWluZW0gYmVyZWl0cyBleGlzdGllcmVuZGVuLFxuIgorImV4dGVybmVuIMOcYmVybmFobWV6d2VpZyBhdWZ6dWJhdWVuLCBzb2xsdGVuIFNpZSBcImdpdCBmZXRjaFwiXG4iCisiYXVzZsO8aHJlbiwgdW0gZGllc2VuIGFienVydWZlbi5cbiIKKyJcbiIKKyJGYWxscyBTaWUgdm9yaGFiZW4sIGVpbmVuIG5ldWVuIGxva2FsZW4gWndlaWcgenUgdmVyc2VuZGVuXG4iCisiZGVyIHNlaW5lbSBleHRlcm5lbiBHZWdlbnN0w7xjayBmb2xnZW4gc29sbCwga8O2bm5lbiBTaWVcbiIKKyJcImdpdCBwdXNoIC11XCIgdmVyd2VuZGVuLCB1bSBkZW4gZXh0ZXJuZW4gw5xiZXJuYWhtZXp3ZWlnXG4iCisiYmVpbSBWZXJzYW5kIHp1IGtvbmZpZ3VyaWVyZW4uIgorCisjOiBicmFuY2guYzoyNTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm90IGEgdmFsaWQgb2JqZWN0IG5hbWU6ICclcycuIgorbXNnc3RyICJVbmfDvGx0aWdlciBPYmpla3QtTmFtZTogJyVzJyIKKworIzogYnJhbmNoLmM6MjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkFtYmlndW91cyBvYmplY3QgbmFtZTogJyVzJy4iCittc2dzdHIgIm1laHJkZXV0aWdlciBPYmpla3QtTmFtZTogJyVzJyIKKworIzogYnJhbmNoLmM6Mjc1CisjLCBjLWZvcm1hdAorbXNnaWQgIk5vdCBhIHZhbGlkIGJyYW5jaCBwb2ludDogJyVzJy4iCittc2dzdHIgIlVuZ8O8bHRpZ2VyIFZlcnp3ZWlndW5nc3B1bmt0OiAnJXMnIgorCisjOiBicmFuY2guYzoyODEKK21zZ2lkICJGYWlsZWQgdG8gbG9jayByZWYgZm9yIHVwZGF0ZSIKK21zZ3N0ciAiRmVobGVyIGJlaW0gU3BlcnJlbiBkZXIgUmVmZXJlbnogenVyIEFrdHVhbGlzaWVydW5nLiIKKworIzogYnJhbmNoLmM6Mjk5Cittc2dpZCAiRmFpbGVkIHRvIHdyaXRlIHJlZiIKK21zZ3N0ciAiRmVobGVyIGJlaW0gU2NocmVpYmVuIGRlciBSZWZlcmVuei4iCiAKICM6IGJ1bmRsZS5jOjM2CiAjLCBjLWZvcm1hdApAQCAtNDgsNzYgKzI3MSw4MCBAQAogbXNnaWQgInVucmVjb2duaXplZCBoZWFkZXI6ICVzJXMgKCVkKSIKIG1zZ3N0ciAibmljaHQgZXJrYW5udGVyIEtvcGZiZXJlaWNoOiAlcyVzICglZCkiCiAKLSM6IGJ1bmRsZS5jOjg5IGJ1aWx0aW4vY29tbWl0LmM6Njk2CisjOiBidW5kbGUuYzo4OSBidWlsdGluL2NvbW1pdC5jOjY3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiAnJXMnIgogbXNnc3RyICJLb25udGUgJyVzJyBuaWNodCDDtmZmbmVuIgogCiAjOiBidW5kbGUuYzoxNDAKIG1zZ2lkICJSZXBvc2l0b3J5IGxhY2tzIHRoZXNlIHByZXJlcXVpc2l0ZSBjb21taXRzOiIKLW1zZ3N0ciAiRGVtIFByb2pla3RhcmNoaXYgZmVobGVuIGZvbGdlbmRlIHZvcnJhdXNnZXNldHp0ZSBWZXJzaW9uZW46IgorbXNnc3RyICJEZW0gUHJvamVrdGFyY2hpdiBmZWhsZW4gZm9sZ2VuZGUgdm9yYXVzZ2VzZXR6dGUgVmVyc2lvbmVuOiIKIAotIzogYnVuZGxlLmM6MTY0IHNlcXVlbmNlci5jOjU1MCBzZXF1ZW5jZXIuYzo5ODIgYnVpbHRpbi9sb2cuYzoyODkKLSM6IGJ1aWx0aW4vbG9nLmM6NzIwIGJ1aWx0aW4vbG9nLmM6MTMwOSBidWlsdGluL2xvZy5jOjE1MjggYnVpbHRpbi9tZXJnZS5jOjM0NwotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjE4MQorIzogYnVuZGxlLmM6MTY0IHNlcXVlbmNlci5jOjY1MSBzZXF1ZW5jZXIuYzoxMTAxIGJ1aWx0aW4vbG9nLmM6MzAwCisjOiBidWlsdGluL2xvZy5jOjc3MCBidWlsdGluL2xvZy5jOjEzNDQgYnVpbHRpbi9sb2cuYzoxNTcwIGJ1aWx0aW4vbWVyZ2UuYzozNDkKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxNTUKIG1zZ2lkICJyZXZpc2lvbiB3YWxrIHNldHVwIGZhaWxlZCIKIG1zZ3N0ciAiRWlucmljaHR1bmcgZGVzIFJldmlzaW9uc2dhbmdzIGZlaGxnZXNjaGxhZ2VuIgogCiAjOiBidW5kbGUuYzoxODYKICMsIGMtZm9ybWF0Ci1tc2dpZCAiVGhlIGJ1bmRsZSBjb250YWlucyAlZCByZWYiCi1tc2dpZF9wbHVyYWwgIlRoZSBidW5kbGUgY29udGFpbnMgJWQgcmVmcyIKLW1zZ3N0clswXSAiRGFzIFBha2V0IGVudGjDpGx0ICVkIFJlZmVyZW56IgotbXNnc3RyWzFdICJEYXMgUGFrZXQgZW50aMOkbHQgJWQgUmVmZXJlbnplbiIKK21zZ2lkICJUaGUgYnVuZGxlIGNvbnRhaW5zIHRoaXMgcmVmOiIKK21zZ2lkX3BsdXJhbCAiVGhlIGJ1bmRsZSBjb250YWlucyB0aGVzZSAlZCByZWZzOiIKK21zZ3N0clswXSAiRGFzIFBha2V0IGVudGjDpGx0IGRpZXNlIFJlZmVyZW56OiIKK21zZ3N0clsxXSAiRGFzIFBha2V0IGVudGjDpGx0IGRpZXNlICVkIFJlZmVyZW56ZW46IgogCi0jOiBidW5kbGUuYzoxOTIKKyM6IGJ1bmRsZS5jOjE5MworbXNnaWQgIlRoZSBidW5kbGUgcmVjb3JkcyBhIGNvbXBsZXRlIGhpc3RvcnkuIgorbXNnc3RyICJEYXMgUGFrZXQgc3BlaWNoZXJ0IGVpbmUga29tcGxldHRlIEhpc3RvcmllLiIKKworIzogYnVuZGxlLmM6MTk1CiAjLCBjLWZvcm1hdAotbXNnaWQgIlRoZSBidW5kbGUgcmVxdWlyZXMgdGhpcyByZWYiCi1tc2dpZF9wbHVyYWwgIlRoZSBidW5kbGUgcmVxdWlyZXMgdGhlc2UgJWQgcmVmcyIKLW1zZ3N0clswXSAiRGFzIFBha2V0IGJlbsO2dGlndCBkaWVzZSBSZWZlcmVueiIKLW1zZ3N0clsxXSAiRGFzIFBha2V0IGJlbsO2dGlndCBkaWVzZSAlZCBSZWZlcmVuemVuIgorbXNnaWQgIlRoZSBidW5kbGUgcmVxdWlyZXMgdGhpcyByZWY6IgorbXNnaWRfcGx1cmFsICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoZXNlICVkIHJlZnM6IgorbXNnc3RyWzBdICJEYXMgUGFrZXQgYmVuw7Z0aWd0IGRpZXNlIFJlZmVyZW56OiIKK21zZ3N0clsxXSAiRGFzIFBha2V0IGJlbsO2dGlndCBkaWVzZSAlZCBSZWZlcmVuemVuOiIKIAotIzogYnVuZGxlLmM6MjkwCisjOiBidW5kbGUuYzoyOTQKIG1zZ2lkICJyZXYtbGlzdCBkaWVkIgogbXNnc3RyICJcInJldi1saXN0XCIgYWJnZWJyb2NoZW4iCiAKLSM6IGJ1bmRsZS5jOjI5NiBidWlsdGluL2xvZy5jOjEyMDUgYnVpbHRpbi9zaG9ydGxvZy5jOjI4NAorIzogYnVuZGxlLmM6MzAwIGJ1aWx0aW4vbG9nLmM6MTI1NSBidWlsdGluL3Nob3J0bG9nLmM6MjU4CiAjLCBjLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXplZCBhcmd1bWVudDogJXMiCiBtc2dzdHIgIm5pY2h0IGVya2FubnRlcyBBcmd1bWVudDogJXMiCiAKLSM6IGJ1bmRsZS5jOjMzMQorIzogYnVuZGxlLmM6MzM1CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZiAnJXMnIGlzIGV4Y2x1ZGVkIGJ5IHRoZSByZXYtbGlzdCBvcHRpb25zIgogbXNnc3RyICJSZWZlcmVueiAnJXMnIHdpcmQgZHVyY2ggXCJyZXYtbGlzdFwiIE9wdGlvbmVuIGF1c2dlc2NobG9zc2VuIgogCi0jOiBidW5kbGUuYzozNzYKKyM6IGJ1bmRsZS5jOjM4MAogbXNnaWQgIlJlZnVzaW5nIHRvIGNyZWF0ZSBlbXB0eSBidW5kbGUuIgogbXNnc3RyICJFcnN0ZWxsdW5nIGVpbmVzIGxlZXJlbiBQYWtldHMgenVyw7xja2dld2llc2VuLiIKIAotIzogYnVuZGxlLmM6Mzk0CisjOiBidW5kbGUuYzozOTgKIG1zZ2lkICJDb3VsZCBub3Qgc3Bhd24gcGFjay1vYmplY3RzIgogbXNnc3RyICJLb25udGUgUGFrZXRvYmpla3RlIG5pY2h0IGVyc3RlbGxlbiIKIAotIzogYnVuZGxlLmM6NDEyCisjOiBidW5kbGUuYzo0MTYKIG1zZ2lkICJwYWNrLW9iamVjdHMgZGllZCIKIG1zZ3N0ciAiRXJzdGVsbHVuZyBkZXIgUGFrZXRvYmpla3RlIGFiZ2Vicm9jaGVuIgogCi0jOiBidW5kbGUuYzo0MTUKKyM6IGJ1bmRsZS5jOjQxOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgY3JlYXRlICclcyciCiBtc2dzdHIgImthbm4gJyVzJyBuaWNodCBlcnN0ZWxsZW4iCiAKLSM6IGJ1bmRsZS5jOjQzNworIzogYnVuZGxlLmM6NDQxCiBtc2dpZCAiaW5kZXgtcGFjayBkaWVkIgogbXNnc3RyICJFcnN0ZWxsdW5nIGRlciBQYWtldGluZGV4ZGF0ZWkgYWJnZWJyb2NoZW4iCiAKLSM6IGNvbW1pdC5jOjQ4CisjOiBjb21taXQuYzo1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgcGFyc2UgJXMiCiBtc2dzdHIgImtvbm50ZSAlcyBuaWNodCBwYXJzZW4iCiAKLSM6IGNvbW1pdC5jOjUwCisjOiBjb21taXQuYzo1MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyAlcyBpcyBub3QgYSBjb21taXQhIgogbXNnc3RyICIlcyAlcyBpc3Qga2VpbmUgVmVyc2lvbiEiCkBAIC0yMDcsMTkgKzQzNCwyNCBAQAogbXNnc3RyWzBdICJ2b3IgJWx1IEphaHIiCiBtc2dzdHJbMV0gInZvciAlbHUgSmFocmVuIgogCi0jOiBkaWZmLmM6MTA1CisjOiBkaWZmLmM6MTEyCiAjLCBjLWZvcm1hdAotbXNnaWQgIiAgRmFpbGVkIHRvIHBhcnNlIGRpcnN0YXQgY3V0LW9mZiBwZXJjZW50YWdlICclLipzJ1xuIgorbXNnaWQgIiAgRmFpbGVkIHRvIHBhcnNlIGRpcnN0YXQgY3V0LW9mZiBwZXJjZW50YWdlICclcydcbiIKIG1zZ3N0ciAiIgotIiAgRmVobGVyIGJlaW0gUGFyc2VuIGRlcyBhYmdlc2Nobml0dGVuZW4gXCJkaXJzdGF0XCIgUHJvemVudHNhdHplcyAnJS4qcydcbiIKKyIgIEZlaGxlciBiZWltIFBhcnNlbiBkZXMgYWJnZXNjaG5pdHRlbmVuIFwiZGlyc3RhdFwiIFByb3plbnRzYXR6ZXMgJyVzJ1xuIgogCi0jOiBkaWZmLmM6MTEwCisjOiBkaWZmLmM6MTE3CiAjLCBjLWZvcm1hdAotbXNnaWQgIiAgVW5rbm93biBkaXJzdGF0IHBhcmFtZXRlciAnJS4qcydcbiIKLW1zZ3N0ciAiICBVbmJla2FubnRlciBcImRpcnN0YXRcIiBQYXJhbWV0ZXIgJyUuKnMnXG4iCittc2dpZCAiICBVbmtub3duIGRpcnN0YXQgcGFyYW1ldGVyICclcydcbiIKK21zZ3N0ciAiICBVbmJla2FubnRlciBcImRpcnN0YXRcIiBQYXJhbWV0ZXIgJyVzJ1xuIgogCiAjOiBkaWZmLmM6MjEwCiAjLCBjLWZvcm1hdAorbXNnaWQgIlVua25vd24gdmFsdWUgZm9yICdkaWZmLnN1Ym1vZHVsZScgY29uZmlnIHZhcmlhYmxlOiAnJXMnIgorbXNnc3RyICJVbmJla2FubnRlciBXZXJ0IGluIEtvbmZpZ3VyYXRpb25zdmFyaWFibGUgJ2RpZmYuZGlyc3RhdCc6ICclcyciCisKKyM6IGRpZmYuYzoyNjAKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkZvdW5kIGVycm9ycyBpbiAnZGlmZi5kaXJzdGF0JyBjb25maWcgdmFyaWFibGU6XG4iCiAiJXMiCkBAIC0yMjcsMzIgKzQ1OSw3IEBACiAiRmVobGVyIGluICdkaWZmLmRpcnN0YXQnIEtvbmZpZ3VyYXRpb25zdmFyaWFibGUgZ2VmdW5kZW46XG4iCiAiJXMiCiAKLSM6IGRpZmYuYzoxNDAwCi1tc2dpZCAiIDAgZmlsZXMgY2hhbmdlZFxuIgotbXNnc3RyICIgMCBEYXRlaWVuIGdlw6RuZGVydFxuIgotCi0jOiBkaWZmLmM6MTQwNAotIywgYy1mb3JtYXQKLW1zZ2lkICIgJWQgZmlsZSBjaGFuZ2VkIgotbXNnaWRfcGx1cmFsICIgJWQgZmlsZXMgY2hhbmdlZCIKLW1zZ3N0clswXSAiICVkIERhdGVpIGdlw6RuZGVydCIKLW1zZ3N0clsxXSAiICVkIERhdGVpZW4gZ2XDpG5kZXJ0IgotCi0jOiBkaWZmLmM6MTQyMQotIywgYy1mb3JtYXQKLW1zZ2lkICIsICVkIGluc2VydGlvbigrKSIKLW1zZ2lkX3BsdXJhbCAiLCAlZCBpbnNlcnRpb25zKCspIgotbXNnc3RyWzBdICIsICVkIFplaWxlIGhpbnp1Z2Vmw7xndCgrKSIKLW1zZ3N0clsxXSAiLCAlZCBaZWlsZW4gaGluenVnZWbDvGd0KCspIgotCi0jOiBkaWZmLmM6MTQzMgotIywgYy1mb3JtYXQKLW1zZ2lkICIsICVkIGRlbGV0aW9uKC0pIgotbXNnaWRfcGx1cmFsICIsICVkIGRlbGV0aW9ucygtKSIKLW1zZ3N0clswXSAiLCAlZCBaZWlsZSBlbnRmZXJudCgtKSIKLW1zZ3N0clsxXSAiLCAlZCBaZWlsZW4gZW50ZmVybnQoLSkiCi0KLSM6IGRpZmYuYzozNDc4CisjOiBkaWZmLmM6MzQ4MQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiRmFpbGVkIHRvIHBhcnNlIC0tZGlyc3RhdC8tWCBvcHRpb24gcGFyYW1ldGVyOlxuIgpAQCAtMjYxLDcgKzQ2OCwxMiBAQAogIkZlaGxlciBiZWltIFBhcnNlbiBkZXMgLS1kaXJzdGF0Ly1YIE9wdGlvbnNwYXJhbWV0ZXJzOlxuIgogIiVzIgogCi0jOiBncGctaW50ZXJmYWNlLmM6NTkKKyM6IGRpZmYuYzozNDk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBwYXJzZSAtLXN1Ym1vZHVsZSBvcHRpb24gcGFyYW1ldGVyOiAnJXMnIgorbXNnc3RyICJGZWhsZXIgYmVpbSBQYXJzZW4gZGVzIC0tc3VibW9kdWxlIE9wdGlvbnNwYXJhbWV0ZXJzOiAnJXMnIgorCisjOiBncGctaW50ZXJmYWNlLmM6NTkgZ3BnLWludGVyZmFjZS5jOjEzMQogbXNnaWQgImNvdWxkIG5vdCBydW4gZ3BnLiIKIG1zZ3N0ciAia29ubnRlIGdwZyBuaWNodCBhdXNmw7xocmVuIgogCkBAIC0yNzMsMzEgKzQ4NSw0NSBAQAogbXNnaWQgImdwZyBmYWlsZWQgdG8gc2lnbiB0aGUgZGF0YSIKIG1zZ3N0ciAiZ3BnIGJlaW0gU2lnbmllcmVuIGRlciBEYXRlbiBmZWhsZ2VzY2hsYWdlbiIKIAotIzogZ3JlcC5jOjEzMjAKKyM6IGdwZy1pbnRlcmZhY2UuYzoxMTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiY291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZSAnJXMnOiAlcyIKK21zZ3N0ciAia29ubnRlIHRlbXBvcsOkcmUgRGF0ZWkgJyVzJyBuaWNodCBlcnN0ZWxsZW46ICVzIgorCisjOiBncGctaW50ZXJmYWNlLmM6MTE4CisjLCBjLWZvcm1hdAorbXNnaWQgImZhaWxlZCB3cml0aW5nIGRldGFjaGVkIHNpZ25hdHVyZSB0byAnJXMnOiAlcyIKK21zZ3N0ciAiRmVobGVyIGJlaW0gU2NocmVpYmVuIGRlciBTaWduYXR1ciBuYWNoICclcyc6ICVzIgorCisjOiBncmVwLmM6MTYyMwogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiB1bmFibGUgdG8gcmVhZCAlcyIKIG1zZ3N0ciAiJyVzJzoga29ubnRlIG5pY2h0IGxlc2VuICVzIgogCi0jOiBncmVwLmM6MTMzNworIzogZ3JlcC5jOjE2NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJzogJXMiCiBtc2dzdHIgIiclcyc6ICVzIgogCi0jOiBncmVwLmM6MTM0OAorIzogZ3JlcC5jOjE2NTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJzogc2hvcnQgcmVhZCAlcyIKIG1zZ3N0ciAiJyVzJzogcmVhZCgpIHp1IGt1cnogJXMiCiAKLSM6IGhlbHAuYzoyMDcKKyM6IGhlbHAuYzoyMTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiYXZhaWxhYmxlIGdpdCBjb21tYW5kcyBpbiAnJXMnIgogbXNnc3RyICJWb3JoYW5kZW5lIEdpdC1Lb21tYW5kb3MgaW4gJyVzJyIKIAotIzogaGVscC5jOjIxNAorIzogaGVscC5jOjIxOQogbXNnaWQgImdpdCBjb21tYW5kcyBhdmFpbGFibGUgZnJvbSBlbHNld2hlcmUgb24geW91ciAkUEFUSCIKLW1zZ3N0ciAiVm9yaGFuZGVuZSBHaXQtS29tbWFuZG9zIGlyZ2VuZHdvIGluIGRlaW5lbSAkUEFUSCIKK21zZ3N0ciAiVm9yaGFuZGVuZSBHaXQtS29tbWFuZG9zIGlyZ2VuZHdvIGluIElocmVtICRQQVRIIgogCi0jOiBoZWxwLmM6MjcwCisjOiBoZWxwLmM6MjM1Cittc2dpZCAiVGhlIG1vc3QgY29tbW9ubHkgdXNlZCBnaXQgY29tbWFuZHMgYXJlOiIKK21zZ3N0ciAiRGllIGFsbGdlbWVpbiB2ZXJ3ZW5kZXRlbiBHaXQtS29tbWFuZG9zIHNpbmQ6IgorCisjOiBoZWxwLmM6MjkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnIGFwcGVhcnMgdG8gYmUgYSBnaXQgY29tbWFuZCwgYnV0IHdlIHdlcmUgbm90XG4iCkBAIC0zMDYsMzAgKzUzMiwzMCBAQAogIiclcycgc2NoZWludCBlaW4gZ2l0LUtvbW1hbmRvIHp1IHNlaW4sIGtvbm50ZSBhYmVyXG4iCiAibmljaHQgYXVzZ2Vmw7xocnQgd2VyZGVuLiBWaWVsbGVpY2h0IGlzdCBnaXQtJXMgZmVobGVyaGFmdD8iCiAKLSM6IGhlbHAuYzozMjcKLW1zZ2lkICJVaCBvaC4gWW91ciBzeXN0ZW0gcmVwb3J0cyBubyBHaXQgY29tbWFuZHMgYXQgYWxsLiIKLW1zZ3N0ciAiVWggb2guIEtlaW5lIEdpdC1Lb21tYW5kb3MgYXVmIGRlaW5lbSBTeXN0ZW0gdm9yaGFuZGVuLiIKLQogIzogaGVscC5jOjM0OQorbXNnaWQgIlVoIG9oLiBZb3VyIHN5c3RlbSByZXBvcnRzIG5vIEdpdCBjb21tYW5kcyBhdCBhbGwuIgorbXNnc3RyICJVaCBvaC4gS2VpbmUgR2l0LUtvbW1hbmRvcyBhdWYgSWhyZW0gU3lzdGVtIHZvcmhhbmRlbi4iCisKKyM6IGhlbHAuYzozNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIldBUk5JTkc6IFlvdSBjYWxsZWQgYSBHaXQgY29tbWFuZCBuYW1lZCAnJXMnLCB3aGljaCBkb2VzIG5vdCBleGlzdC5cbiIKICJDb250aW51aW5nIHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRoYXQgeW91IG1lYW50ICclcyciCiBtc2dzdHIgIiIKLSJXYXJudW5nOiBEdSBoYXN0IGRhcyBuaWNodCBleGlzdGllcmVuZGUgR2l0LUtvbW1hbmRvICclcycgYXVzZ2Vmw7xocnQuXG4iCi0iU2V0emUgZm9ydCB1bnRlciBkZXIgQW5uYWhtZSBkYXMgZHUgJyVzJyBnZW1laW50IGhhc3QiCisiV2FybnVuZzogU2llIGhhYmVuIGRhcyBuaWNodCBleGlzdGllcmVuZGUgR2l0LUtvbW1hbmRvICclcycgYXVzZ2Vmw7xocnQuXG4iCisiU2V0emUgZm9ydCB1bnRlciBkZXIgQW5uYWhtZSwgZGFzcyBTaWUgJyVzJyBnZW1laW50IGhhYmVuIgogCi0jOiBoZWxwLmM6MzU0CisjOiBoZWxwLmM6Mzc2CiAjLCBjLWZvcm1hdAogbXNnaWQgImluICUwLjFmIHNlY29uZHMgYXV0b21hdGljYWxseS4uLiIKIG1zZ3N0ciAiYXV0b21hdGlzY2ggaW4gJTAuMWYgU2VrdW5kZW4uLi4iCiAKLSM6IGhlbHAuYzozNjEKKyM6IGhlbHAuYzozODMKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0OiAnJXMnIGlzIG5vdCBhIGdpdCBjb21tYW5kLiBTZWUgJ2dpdCAtLWhlbHAnLiIKIG1zZ3N0ciAiZ2l0OiAnJXMnIGlzdCBrZWluIEdpdC1Lb21tYW5kby4gU2llaGUgJ2dpdCAtLWhlbHAnLiIKIAotIzogaGVscC5jOjM2NQorIzogaGVscC5jOjM4NwogbXNnaWQgIiIKICJcbiIKICJEaWQgeW91IG1lYW4gdGhpcz8iCkBAIC0zMzgsNTEgKzU2NCwzNDYgQEAKICJEaWQgeW91IG1lYW4gb25lIG9mIHRoZXNlPyIKIG1zZ3N0clswXSAiIgogIlxuIgotIkhhc3QgZHUgZGFzIGdlbWVpbnQ/IgorIkhhYmVuIFNpZSBkYXMgZ2VtZWludD8iCiBtc2dzdHJbMV0gIiIKICJcbiIKLSJIYXN0IGR1IGVpbmVzIHZvbiBkaWVzZW4gZ2VtZWludD8iCisiSGFiZW4gU2llIGVpbmVzIHZvbiBkaWVzZW4gZ2VtZWludD8iCiAKLSM6IHBhcnNlLW9wdGlvbnMuYzo0OTMKKyM6IG1lcmdlLmM6NTYKK21zZ2lkICJmYWlsZWQgdG8gcmVhZCB0aGUgY2FjaGUiCittc2dzdHIgIkxlc2VuIGRlcyBad2lzY2hlbnNwZWljaGVycyBmZWhsZ2VzY2hsYWdlbiIKKworIzogbWVyZ2UuYzoxMTAgYnVpbHRpbi9jaGVja291dC5jOjM2NSBidWlsdGluL2NoZWNrb3V0LmM6NTY2CisjOiBidWlsdGluL2Nsb25lLmM6NjQ1Cittc2dpZCAidW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgorbXNnc3RyICJLb25udGUgbmV1ZSBCZXJlaXRzdGVsbHVuZ3NkYXRlaSBuaWNodCBzY2hyZWliZW4uIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiKGJhZCBjb21taXQpXG4iCittc2dzdHIgIih1bmfDvGx0aWdlIFZlcnNpb24pXG4iCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjIwNgorIywgYy1mb3JtYXQKK21zZ2lkICJhZGRpbmZvX2NhY2hlIGZhaWxlZCBmb3IgcGF0aCAnJXMnIgorbXNnc3RyICJhZGRpbmZvX2NhY2hlIGbDvHIgUGZhZCAnJXMnIGZlaGxnZXNjaGxhZ2VuIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoyNjgKK21zZ2lkICJlcnJvciBidWlsZGluZyB0cmVlcyIKK21zZ3N0ciAiRmVobGVyIGJlaW0gRXJzdGVsbGVuIGRlciBCw6R1bWUiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjY3MgorIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgdG8gY3JlYXRlIHBhdGggJyVzJyVzIgorbXNnc3RyICJGZWhsZXIgYmVpbSBFcnN0ZWxsZW4gZGVzIFBmYWRlcyAnJXMnJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjY4MworIywgYy1mb3JtYXQKK21zZ2lkICJSZW1vdmluZyAlcyB0byBtYWtlIHJvb20gZm9yIHN1YmRpcmVjdG9yeVxuIgorbXNnc3RyICJFbnRmZXJuZSAlcyB1bSBQbGF0eiBmw7xyIFVudGVydmVyemVpY2huaXMgenUgc2NoYWZmZW5cbiIKKworIy4gc29tZXRoaW5nIGVsc2UgZXhpc3RzCisjLiAuLiBidXQgbm90IHNvbWUgb3RoZXIgZXJyb3IgKHdobyByZWFsbHkgY2FyZXMgd2hhdD8pCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo2OTcgbWVyZ2UtcmVjdXJzaXZlLmM6NzE4Cittc2dpZCAiOiBwZXJoYXBzIGEgRC9GIGNvbmZsaWN0PyIKK21zZ3N0ciAiOiB2aWVsbGVpY2h0IGVpbiBWZXJ6ZWljaG5pcy9EYXRlaS1Lb25mbGlrdD8iCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjcwOAorIywgYy1mb3JtYXQKK21zZ2lkICJyZWZ1c2luZyB0byBsb3NlIHVudHJhY2tlZCBmaWxlIGF0ICclcyciCittc2dzdHIgInZlcndlaWdlcmUsIGRhIHVuYmVvYmFjaHRldGUgRGF0ZWllbiBpbiAnJXMnIHZlcmxvcmVuIGdlaGVuIHfDvHJkZW4iCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc0OAorIywgYy1mb3JtYXQKK21zZ2lkICJjYW5ub3QgcmVhZCBvYmplY3QgJXMgJyVzJyIKK21zZ3N0ciAia2FubiBPYmpla3QgJXMgJyVzJyBuaWNodCBsZXNlbiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzUwCisjLCBjLWZvcm1hdAorbXNnaWQgImJsb2IgZXhwZWN0ZWQgZm9yICVzICclcyciCittc2dzdHIgIkJsb2IgZXJ3YXJ0ZXQgZsO8ciAlcyAnJXMnIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NzMgYnVpbHRpbi9jbG9uZS5jOjMxMworIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgdG8gb3BlbiAnJXMnIgorbXNnc3RyICJGZWhsZXIgYmVpbSDDlmZmbmVuIHZvbiAnJXMnIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmFpbGVkIHRvIHN5bWxpbmsgJyVzJyIKK21zZ3N0ciAiRmVobGVyIGJlaW0gRXJzdGVsbGVuIGVpbmVyIHN5bWJvbGlzY2hlbiBWZXJrbsO8cGZ1bmcgZsO8ciAnJXMnIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiZG8gbm90IGtub3cgd2hhdCB0byBkbyB3aXRoICUwNm8gJXMgJyVzJyIKK21zZ3N0ciAid2Vpw58gbmljaHQgd2FzIG1pdCAlMDZvICVzICclcycgenUgbWFjaGVuIGlzdCIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6OTIyCittc2dpZCAiRmFpbGVkIHRvIGV4ZWN1dGUgaW50ZXJuYWwgbWVyZ2UiCittc2dzdHIgIkZlaGxlciBiZWkgQXVzZsO8aHJ1bmcgZGVyIGludGVybmVuIFp1c2FtbWVuZsO8aHJ1bmciCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjkyNgorIywgYy1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gYWRkICVzIHRvIGRhdGFiYXNlIgorbXNnc3RyICJLb25udGUgJXMgbmljaHQgenVyIERhdGVuYmFuayBoaW56dWbDvGdlbiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6OTQyCittc2dpZCAidW5zdXBwb3J0ZWQgb2JqZWN0IHR5cGUgaW4gdGhlIHRyZWUiCittc2dzdHIgIm5pY2h0IHVudGVyc3TDvHR6dGVyIE9iamVrdHR5cCBpbSBCYXVtIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDIxIG1lcmdlLXJlY3Vyc2l2ZS5jOjEwMzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNPTkZMSUNUICglcy9kZWxldGUpOiAlcyBkZWxldGVkIGluICVzIGFuZCAlcyBpbiAlcy4gVmVyc2lvbiAlcyBvZiAlcyBsZWZ0ICIKKyJpbiB0cmVlLiIKK21zZ3N0ciAiIgorIktPTkZMSUtUICglcy9sw7ZzY2hlbik6ICVzIGdlbMO2c2NodCBpbiAlcyB1bmQgJXMgaW4gJXMuIFN0YW5kICVzIHZvbiAlcyB3dXJkZSAiCisiaW0gQXJiZWl0c2JlcmVpY2ggZ2VsYXNzZW4uIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDI3IG1lcmdlLXJlY3Vyc2l2ZS5jOjEwNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNPTkZMSUNUICglcy9kZWxldGUpOiAlcyBkZWxldGVkIGluICVzIGFuZCAlcyBpbiAlcy4gVmVyc2lvbiAlcyBvZiAlcyBsZWZ0ICIKKyJpbiB0cmVlIGF0ICVzLiIKK21zZ3N0ciAiIgorIktPTkZMSUtUICglcy9sw7ZzY2hlbik6ICVzIGdlbMO2c2NodCBpbiAlcyB1bmQgJXMgaW4gJXMuIFN0YW5kICVzIHZvbiAlcyB3dXJkZSAiCisiaW0gQXJiZWl0c2JlcmVpY2ggYmVpICVzIGdlbGFzc2VuLiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTA4MQorbXNnaWQgInJlbmFtZSIKK21zZ3N0ciAidW1iZW5lbm5lbiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTA4MQorbXNnaWQgInJlbmFtZWQiCittc2dzdHIgInVtYmVuYW5udCIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTEzNworIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBhIGRpcmVjdG9yeSBpbiAlcyBhZGRpbmcgYXMgJXMgaW5zdGVhZCIKK21zZ3N0ciAiJXMgaXN0IGVpbiBWZXJ6ZWljaG5pcyBpbiAlcywgZsO8Z2UgZXMgc3RhdHRkZXNzZW4gYWxzICVzIGhpbnp1IgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMTU5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDT05GTElDVCAocmVuYW1lL3JlbmFtZSk6IFJlbmFtZSBcIiVzXCItPlwiJXNcIiBpbiBicmFuY2ggXCIlc1wiIHJlbmFtZSBcIiVzIgorIlwiLT5cIiVzXCIgaW4gXCIlc1wiJXMiCittc2dzdHIgIiIKKyJLT05GTElLVCAodW1iZW5lbm5lbi91bWJlbmVubmVuKTogQmVuZW5uZSB1bSBcIiVzXCItPlwiJXNcIiBpbiBad2VpZyBcIiVzXCIgIgorInVuZCBcIiVzXCItPlwiJXNcIiBpbiBad2VpZyBcIiVzXCIlcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTE2NAorbXNnaWQgIiAobGVmdCB1bnJlc29sdmVkKSIKK21zZ3N0ciAiIChibGVpYnQgdW5hdWZnZWzDtnN0KSIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTIxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDT05GTElDVCAocmVuYW1lL3JlbmFtZSk6IFJlbmFtZSAlcy0+JXMgaW4gJXMuIFJlbmFtZSAlcy0+JXMgaW4gJXMiCittc2dzdHIgIiIKKyJLT05GTElLVCAodW1iZW5lbm5lbi91bWJlbmVubmVuKTogQmVuZW5uZSB1bSAlcy0+JXMgaW4gJXMuIEJlbmVubmUgdW0gJXMtPiVzICIKKyJpbiAlcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTI0OAorIywgYy1mb3JtYXQKK21zZ2lkICJSZW5hbWluZyAlcyB0byAlcyBhbmQgJXMgdG8gJXMgaW5zdGVhZCIKK21zZ3N0ciAiQmVuZW5uZSBzdGF0dGRlc3NlbiAlcyBuYWNoICVzIHVuZCAlcyBuYWNoICVzIHVtIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNDQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNPTkZMSUNUIChyZW5hbWUvYWRkKTogUmVuYW1lICVzLT4lcyBpbiAlcy4gJXMgYWRkZWQgaW4gJXMiCittc2dzdHIgIiIKKyJLT05GTElLVCAodW1iZW5lbm5lbi9oaW56dWbDvGdlbik6IEJlbmVubmUgdW0gJXMtPiVzIGluICVzLiAlcyBoaW56dWdlZsO8Z3QgaW4gIgorIiVzIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNDU3CisjLCBjLWZvcm1hdAorbXNnaWQgIkFkZGluZyBtZXJnZWQgJXMiCittc2dzdHIgIkbDvGdlIHp1c2FtbWVuZ2Vmw7xocnRlIERhdGVpICVzIGhpbnp1IgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNDYyIG1lcmdlLXJlY3Vyc2l2ZS5jOjE2NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQWRkaW5nIGFzICVzIGluc3RlYWQiCittc2dzdHIgIkbDvGdlIHN0YXR0ZGVzc2VuIGFscyAlcyBoaW56dSIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTUxMworIywgYy1mb3JtYXQKK21zZ2lkICJjYW5ub3QgcmVhZCBvYmplY3QgJXMiCittc2dzdHIgImthbm4gT2JqZWt0ICVzIG5pY2h0IGxlc2VuIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTE2CisjLCBjLWZvcm1hdAorbXNnaWQgIm9iamVjdCAlcyBpcyBub3QgYSBibG9iIgorbXNnc3RyICJPYmpla3QgJXMgaXN0IGtlaW4gQmxvYiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTU2NAorbXNnaWQgIm1vZGlmeSIKK21zZ3N0ciAiw6RuZGVybiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTU2NAorbXNnaWQgIm1vZGlmaWVkIgorbXNnc3RyICJnZcOkbmRlcnQiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1NzQKK21zZ2lkICJjb250ZW50IgorbXNnc3RyICJJbmhhbHQiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1ODEKK21zZ2lkICJhZGQvYWRkIgorbXNnc3RyICJoaW56dWbDvGdlbi9oaW56dWbDvGdlbiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYxNQorIywgYy1mb3JtYXQKK21zZ2lkICJTa2lwcGVkICVzIChtZXJnZWQgc2FtZSBhcyBleGlzdGluZykiCittc2dzdHIgIiVzIGF1c2dlbGFzc2VuIChFcmdlYm5pcyBkZXIgWnVzYW1tZW5mw7xocnVuZyBleGlzdGllcnQgYmVyZWl0cykiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQXV0by1tZXJnaW5nICVzIgorbXNnc3RyICJhdXRvbWF0aXNjaGUgWnVzYW1tZW5mw7xocnVuZyB2b24gJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzMgZ2l0LXN1Ym1vZHVsZS5zaDoxMDI5Cittc2dpZCAic3VibW9kdWxlIgorbXNnc3RyICJVbnRlcnByb2pla3QiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ09ORkxJQ1QgKCVzKTogTWVyZ2UgY29uZmxpY3QgaW4gJXMiCittc2dzdHIgIktPTkZMSUtUICglcyk6IFp1c2FtbWVuZsO8aHJ1bmdza29uZmxpa3QgaW4gJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVtb3ZpbmcgJXMiCittc2dzdHIgIkVudGZlcm5lICVzIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzQ5Cittc2dpZCAiZmlsZS9kaXJlY3RvcnkiCittc2dzdHIgIkRhdGVpL1ZlcnplaWNobmlzIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzU1Cittc2dpZCAiZGlyZWN0b3J5L2ZpbGUiCittc2dzdHIgIlZlcnplaWNobmlzL0RhdGVpIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzYwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNPTkZMSUNUICglcyk6IFRoZXJlIGlzIGEgZGlyZWN0b3J5IHdpdGggbmFtZSAlcyBpbiAlcy4gQWRkaW5nICVzIGFzICVzIgorbXNnc3RyICIiCisiS09ORkxJS1QgKCVzKTogRXMgZXhpc3RpZXJ0IGJlcmVpdHMgZWluIFZlcnplaWNobmlzICVzIGluICVzLiBGw7xnZSAlcyBhbHMgJXMgIgorImhpbnp1LiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTc3MAorIywgYy1mb3JtYXQKK21zZ2lkICJBZGRpbmcgJXMiCittc2dzdHIgIkbDvGdlICVzIGhpbnp1IgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzg3Cittc2dpZCAiRmF0YWwgbWVyZ2UgZmFpbHVyZSwgc2hvdWxkbid0IGhhcHBlbi4iCittc2dzdHIgIkZhdGFsZXIgRmVobGVyIGJlaSBkZXIgWnVzYW1tZW5mw7xocnVuZy4gU29sbHRlIG5pY2h0IHBhc3NpZXJlbi4iCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE4MDYKK21zZ2lkICJBbHJlYWR5IHVwLXRvLWRhdGUhIgorbXNnc3RyICJCZXJlaXRzIGFrdHVlbGwhIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODE1CisjLCBjLWZvcm1hdAorbXNnaWQgIm1lcmdpbmcgb2YgdHJlZXMgJXMgYW5kICVzIGZhaWxlZCIKK21zZ3N0ciAiWnVzYW1tZW5mw7xocmVuIGRlciBCw6R1bWUgJXMgdW5kICVzIGZlaGxnZXNjaGxhZ2VuIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVucHJvY2Vzc2VkIHBhdGg/Pz8gJXMiCittc2dzdHIgInVudmVyYXJiZWl0ZXRlciBQZmFkPz8/ICVzIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODkwCittc2dpZCAiTWVyZ2luZzoiCittc2dzdHIgIlp1c2FtbWVuZsO8aHJ1bmc6IgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTAzCisjLCBjLWZvcm1hdAorbXNnaWQgImZvdW5kICV1IGNvbW1vbiBhbmNlc3RvcjoiCittc2dpZF9wbHVyYWwgImZvdW5kICV1IGNvbW1vbiBhbmNlc3RvcnM6IgorbXNnc3RyWzBdICIldSBnZW1laW5zYW1lbiBWb3JmYWhyZW4gZ2VmdW5kZW4iCittc2dzdHJbMV0gIiV1IGdlbWVpbnNhbWUgVm9yZmFocmVuIGdlZnVuZGVuIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTQwCittc2dpZCAibWVyZ2UgcmV0dXJuZWQgbm8gY29tbWl0IgorbXNnc3RyICJadXNhbW1lbmbDvGhydW5nIGhhdCBrZWluZSBWZXJzaW9uIHp1csO8Y2tnZWdlYmVuIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBvYmplY3QgJyVzJyIKK21zZ3N0ciAiS29ubnRlIE9iamVrdCAnJXMnIG5pY2h0IHBhcnNlbi4iCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjIwMDkgYnVpbHRpbi9tZXJnZS5jOjY1OAorbXNnaWQgIlVuYWJsZSB0byB3cml0ZSBpbmRleC4iCittc2dzdHIgIktvbm50ZSBCZXJlaXRzdGVsbHVuZyBuaWNodCBzY2hyZWliZW4uIgorCisjOiBvYmplY3QuYzoxOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHBhcnNlIG9iamVjdDogJXMiCittc2dzdHIgIktvbm50ZSBPYmpla3QgJyVzJyBuaWNodCBwYXJzZW4uIgorCisjOiBwYXJzZS1vcHRpb25zLmM6NDg5CiBtc2dpZCAiLi4uIgogbXNnc3RyICIuLi4iCiAKLSM6IHBhcnNlLW9wdGlvbnMuYzo1MTEKKyM6IHBhcnNlLW9wdGlvbnMuYzo1MDcKICMsIGMtZm9ybWF0CiBtc2dpZCAidXNhZ2U6ICVzIgogbXNnc3RyICJWZXJ3ZW5kdW5nOiAlcyIKIAogIy4gVFJBTlNMQVRPUlM6IHRoZSBjb2xvbiBoZXJlIHNob3VsZCBhbGlnbiB3aXRoIHRoZQogIy4gb25lIGluICJ1c2FnZTogJXMiIHRyYW5zbGF0aW9uCi0jOiBwYXJzZS1vcHRpb25zLmM6NTE1CisjOiBwYXJzZS1vcHRpb25zLmM6NTExCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgIG9yOiAlcyIKIG1zZ3N0ciAiICAgICAgb2RlcjogJXMiCiAKLSM6IHBhcnNlLW9wdGlvbnMuYzo1MTgKKyM6IHBhcnNlLW9wdGlvbnMuYzo1MTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgICVzIgogbXNnc3RyICIgICAgJXMiCiAKLSM6IHJlbW90ZS5jOjE2MjkKKyM6IHBhcnNlLW9wdGlvbnMuYzo1NDgKK21zZ2lkICItTlVNIgorbXNnc3RyICItTlVNIgorCisjOiBwYXRoc3BlYy5jOjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIlBhdGggJyVzJyBpcyBpbiBzdWJtb2R1bGUgJyUuKnMnIgorbXNnc3RyICJQZmFkICclcycgYmVmaW5kZXQgc2ljaCBpbiBVbnRlcnByb2pla3QgJyUuKnMnIgorCisjOiBwYXRoc3BlYy5jOjk5CisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgaXMgYmV5b25kIGEgc3ltYm9saWMgbGluayIKK21zZ3N0ciAiJyVzJyBpc3Qgw7xiZXIgZWluZW0gc3ltYm9saXNjaGVuIExpbmsiCisKKyM6IHJlbW90ZS5jOjE3ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAiWW91ciBicmFuY2ggaXMgYWhlYWQgb2YgJyVzJyBieSAlZCBjb21taXQuXG4iCiBtc2dpZF9wbHVyYWwgIllvdXIgYnJhbmNoIGlzIGFoZWFkIG9mICclcycgYnkgJWQgY29tbWl0cy5cbiIKLW1zZ3N0clswXSAiRGVpbiBad2VpZyBpc3Qgdm9yICclcycgdW0gJWQgVmVyc2lvbi5cbiIKLW1zZ3N0clsxXSAiRGVpbiBad2VpZyBpc3Qgdm9yICclcycgdW0gJWQgVmVyc2lvbmVuLlxuIgorbXNnc3RyWzBdICJJaHIgWndlaWcgaXN0IHZvciAnJXMnIHVtICVkIFZlcnNpb24uXG4iCittc2dzdHJbMV0gIklociBad2VpZyBpc3Qgdm9yICclcycgdW0gJWQgVmVyc2lvbmVuLlxuIgogCi0jOiByZW1vdGUuYzoxNjM1CisjOiByZW1vdGUuYzoxNzg3Cittc2dpZCAiICAodXNlIFwiZ2l0IHB1c2hcIiB0byBwdWJsaXNoIHlvdXIgbG9jYWwgY29tbWl0cylcbiIKK21zZ3N0ciAiICAoYmVudXR6ZW4gU2llIFwiZ2l0IHB1c2hcIiB1bSBsb2thbGVuIFZlcnNpb25lbiBoZXJhdXN6dWJyaW5nZW4pXG4iCisKKyM6IHJlbW90ZS5jOjE3OTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiWW91ciBicmFuY2ggaXMgYmVoaW5kICclcycgYnkgJWQgY29tbWl0LCBhbmQgY2FuIGJlIGZhc3QtZm9yd2FyZGVkLlxuIgogbXNnaWRfcGx1cmFsICIiCiAiWW91ciBicmFuY2ggaXMgYmVoaW5kICclcycgYnkgJWQgY29tbWl0cywgYW5kIGNhbiBiZSBmYXN0LWZvcndhcmRlZC5cbiIKIG1zZ3N0clswXSAiIgotIkRlaW4gWndlaWcgaXN0IHp1ICclcycgdW0gJWQgVmVyc2lvbiBoaW50ZXJoZXIsIHVuZCBrYW5uIHZvcmdlc3B1bHQgd2VyZGVuLlxuIgorIklociBad2VpZyBpc3QgenUgJyVzJyB1bSAlZCBWZXJzaW9uIGhpbnRlcmhlciwgdW5kIGthbm4gdm9yZ2VzcHVsdCB3ZXJkZW4uXG4iCiBtc2dzdHJbMV0gIiIKLSJEZWluIFp3ZWlnIGlzdCB6dSAnJXMnIHVtICVkIFZlcnNpb25lbiBoaW50ZXJoZXIsIHVuZCBrYW5uIHZvcmdlc3B1bHQgIgorIklociBad2VpZyBpc3QgenUgJyVzJyB1bSAlZCBWZXJzaW9uZW4gaGludGVyaGVyLCB1bmQga2FubiB2b3JnZXNwdWx0ICIKICJ3ZXJkZW4uXG4iCiAKLSM6IHJlbW90ZS5jOjE2NDMKKyM6IHJlbW90ZS5jOjE3OTgKK21zZ2lkICIgICh1c2UgXCJnaXQgcHVsbFwiIHRvIHVwZGF0ZSB5b3VyIGxvY2FsIGJyYW5jaClcbiIKK21zZ3N0ciAiIgorIiAgKGJlbnV0emVuIFNpZSBcImdpdCBwdWxsXCIgdW0gSWhyZW4gbG9rYWxlbiBad2VpZyB6dSBha3R1YWxpc2llcmVuKVxuIgorCisjOiByZW1vdGUuYzoxODAxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJZb3VyIGJyYW5jaCBhbmQgJyVzJyBoYXZlIGRpdmVyZ2VkLFxuIgpAQCAtMzkxLDExMCArOTEyLDExMyBAQAogIllvdXIgYnJhbmNoIGFuZCAnJXMnIGhhdmUgZGl2ZXJnZWQsXG4iCiAiYW5kIGhhdmUgJWQgYW5kICVkIGRpZmZlcmVudCBjb21taXRzIGVhY2gsIHJlc3BlY3RpdmVseS5cbiIKIG1zZ3N0clswXSAiIgotIkRlaW4gWndlaWcgdW5kICclcycgc2luZCBkaXZlcmdpZXJ0LFxuIgorIklociBad2VpZyB1bmQgJyVzJyBzaW5kIGRpdmVyZ2llcnQsXG4iCiAidW5kIGhhYmVuIGpld2VpbHMgJWQgdW5kICVkIHVudGVyc2NoaWVkbGljaGUgVmVyc2lvbmVuLlxuIgogbXNnc3RyWzFdICIiCi0iRGVpbiBad2VpZyB1bmQgJyVzJyBzaW5kIGRpdmVyZ2llcnQsXG4iCisiSWhyIFp3ZWlnIHVuZCAnJXMnIHNpbmQgZGl2ZXJnaWVydCxcbiIKICJ1bmQgaGFiZW4gamV3ZWlscyAlZCB1bmQgJWQgdW50ZXJzY2hpZWRsaWNoZSBWZXJzaW9uZW4uXG4iCiAKLSM6IHNlcXVlbmNlci5jOjEyMSBidWlsdGluL21lcmdlLmM6ODY1IGJ1aWx0aW4vbWVyZ2UuYzo5NzgKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDg4IGJ1aWx0aW4vbWVyZ2UuYzoxMDk4CisjOiByZW1vdGUuYzoxODExCittc2dpZCAiICAodXNlIFwiZ2l0IHB1bGxcIiB0byBtZXJnZSB0aGUgcmVtb3RlIGJyYW5jaCBpbnRvIHlvdXJzKVxuIgorbXNnc3RyICIiCisiICAoYmVudXR6ZW4gU2llIFwiZ2l0IHB1bGxcIiB1bSBJaHJlbiBad2VpZyBtaXQgZGVtIGV4dGVybmVuICIKKyJ6dXNhbW1lbnp1ZsO8aHJlbilcbiIKKworIzogc2VxdWVuY2VyLmM6MjA2IGJ1aWx0aW4vbWVyZ2UuYzo3NzYgYnVpbHRpbi9tZXJnZS5jOjg4OSBidWlsdGluL21lcmdlLmM6OTk5CisjOiBidWlsdGluL21lcmdlLmM6MTAwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiAnJXMnIGZvciB3cml0aW5nIgogbXNnc3RyICJLb25udGUgJyVzJyBuaWNodCB6dW0gU2NocmVpYmVuIMO2ZmZuZW4uIgogCi0jOiBzZXF1ZW5jZXIuYzoxMjMgYnVpbHRpbi9tZXJnZS5jOjMzMyBidWlsdGluL21lcmdlLmM6ODY4Ci0jOiBidWlsdGluL21lcmdlLmM6MTA5MCBidWlsdGluL21lcmdlLmM6MTEwMworIzogc2VxdWVuY2VyLmM6MjA4IGJ1aWx0aW4vbWVyZ2UuYzozMzUgYnVpbHRpbi9tZXJnZS5jOjc3OQorIzogYnVpbHRpbi9tZXJnZS5jOjEwMDEgYnVpbHRpbi9tZXJnZS5jOjEwMTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHdyaXRlIHRvICclcyciCiBtc2dzdHIgIktvbm50ZSBuaWNodCBuYWNoICclcycgc2NocmVpYmVuLiIKIAotIzogc2VxdWVuY2VyLmM6MTQ0CisjOiBzZXF1ZW5jZXIuYzoyMjkKIG1zZ2lkICIiCiAiYWZ0ZXIgcmVzb2x2aW5nIHRoZSBjb25mbGljdHMsIG1hcmsgdGhlIGNvcnJlY3RlZCBwYXRoc1xuIgogIndpdGggJ2dpdCBhZGQgPHBhdGhzPicgb3IgJ2dpdCBybSA8cGF0aHM+JyIKIG1zZ3N0ciAiIgotIm5hY2ggQXVmbMO2c3VuZyBkZXIgS29uZmxpa3RlLCBtYXJraWVyZSBkaWUga29ycmlnaWVydGVuIFBmYWRlXG4iCisibmFjaCBBdWZsw7ZzdW5nIGRlciBLb25mbGlrdGUsIG1hcmtpZXJlbiBTaWUgZGllIGtvcnJpZ2llcnRlbiBQZmFkZVxuIgogIm1pdCAnZ2l0IGFkZCA8UGZhZGU+JyBvZGVyICdnaXQgcm0gPFBmYWRlPiciCiAKLSM6IHNlcXVlbmNlci5jOjE0NworIzogc2VxdWVuY2VyLmM6MjMyCiBtc2dpZCAiIgogImFmdGVyIHJlc29sdmluZyB0aGUgY29uZmxpY3RzLCBtYXJrIHRoZSBjb3JyZWN0ZWQgcGF0aHNcbiIKICJ3aXRoICdnaXQgYWRkIDxwYXRocz4nIG9yICdnaXQgcm0gPHBhdGhzPidcbiIKICJhbmQgY29tbWl0IHRoZSByZXN1bHQgd2l0aCAnZ2l0IGNvbW1pdCciCiBtc2dzdHIgIiIKLSJuYWNoIEF1ZmzDtnN1bmcgZGVyIEtvbmZsaWt0ZSwgbWFya2llcmUgZGllIGtvcnJpZ2llcnRlbiBQZmFkZVxuIgotIm1pdCAnZ2l0IGFkZCA8UGZhZGU+JyBvZGVyICdnaXQgcm0gPFBmYWRlPid1bmQgdHJhZ2UgZGFzIEVyZ2VibmlzIGVpbiBtaXQgIgotIidnaXQgY29tbWl0JyIKKyJuYWNoIEF1ZmzDtnN1bmcgZGVyIEtvbmZsaWt0ZSwgbWFya2llcmVuIFNpZSBkaWUga29ycmlnaWVydGVuIFBmYWRlXG4iCisibWl0ICdnaXQgYWRkIDxQZmFkZT4nIG9kZXIgJ2dpdCBybSA8UGZhZGU+J3VuZCB0cmFnZW4gU2llIGRhcyBFcmdlYm5pcyBtaXRcbiIKKyInZ2l0IGNvbW1pdCcgZWluIgogCi0jOiBzZXF1ZW5jZXIuYzoxNjAgc2VxdWVuY2VyLmM6NzU4IHNlcXVlbmNlci5jOjg0MQorIzogc2VxdWVuY2VyLmM6MjQ1IHNlcXVlbmNlci5jOjg1OSBzZXF1ZW5jZXIuYzo5NDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHdyaXRlIHRvICVzIgogbXNnc3RyICJLb25udGUgbmljaHQgbmFjaCAlcyBzY2hyZWliZW4iCiAKLSM6IHNlcXVlbmNlci5jOjE2MworIzogc2VxdWVuY2VyLmM6MjQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkVycm9yIHdyYXBwaW5nIHVwICVzIgogbXNnc3RyICJGZWhsZXIgYmVpIE5hY2hiZXJlaXR1bmcgdm9uICVzIgogCi0jOiBzZXF1ZW5jZXIuYzoxNzgKKyM6IHNlcXVlbmNlci5jOjI2MwogbXNnaWQgIllvdXIgbG9jYWwgY2hhbmdlcyB3b3VsZCBiZSBvdmVyd3JpdHRlbiBieSBjaGVycnktcGljay4iCiBtc2dzdHIgIiIKLSJEZWluZSBsb2thbGVuIMOEbmRlcnVuZ2VuIHfDvHJkZW4gdm9uIFwiY2hlcnJ5LXBpY2tcIiDDvGJlcnNjaHJpZWJlbiB3ZXJkZW4uIgorIklocmUgbG9rYWxlbiDDhG5kZXJ1bmdlbiB3w7xyZGVuIHZvbiBcImNoZXJyeS1waWNrXCIgw7xiZXJzY2hyaWViZW4gd2VyZGVuLiIKIAotIzogc2VxdWVuY2VyLmM6MTgwCisjOiBzZXF1ZW5jZXIuYzoyNjUKIG1zZ2lkICJZb3VyIGxvY2FsIGNoYW5nZXMgd291bGQgYmUgb3ZlcndyaXR0ZW4gYnkgcmV2ZXJ0LiIKLW1zZ3N0ciAiRGVpbmUgbG9rYWxlbiDDhG5kZXJ1bmdlbiB3w7xyZGVuIHZvbiBcInJldmVydFwiIMO8YmVyc2NocmllYmVuIHdlcmRlbi4iCittc2dzdHIgIklocmUgbG9rYWxlbiDDhG5kZXJ1bmdlbiB3w7xyZGVuIHZvbiBcInJldmVydFwiIMO8YmVyc2NocmllYmVuIHdlcmRlbi4iCiAKLSM6IHNlcXVlbmNlci5jOjE4MworIzogc2VxdWVuY2VyLmM6MjY4CiBtc2dpZCAiQ29tbWl0IHlvdXIgY2hhbmdlcyBvciBzdGFzaCB0aGVtIHRvIHByb2NlZWQuIgotbXNnc3RyICJUcmFnZSBkZWluZSDDhG5kZXJ1bmdlbiBlaW4gb2RlciBiZW51dHplIFwic3Rhc2hcIiB1bSBmb3J0enVmYWhyZW4uIgorbXNnc3RyICIiCisiVHJhZ2VuIFNpZSBJaHJlIMOEbmRlcnVuZ2VuIGVpbiBvZGVyIGJlbnV0emVuIFNpZSBcInN0YXNoXCIgdW0gZm9ydHp1ZmFocmVuLiIKIAogIy4gVFJBTlNMQVRPUlM6ICVzIHdpbGwgYmUgInJldmVydCIgb3IgImNoZXJyeS1waWNrIgotIzogc2VxdWVuY2VyLmM6MjMzCisjOiBzZXF1ZW5jZXIuYzozMTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IFVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIKIG1zZ3N0ciAiJXM6IEtvbm50ZSBuZXVlIEJlcmVpdHN0ZWxsdW5nc2RhdGVpIG5pY2h0IHNjaHJlaWJlbiIKIAotIzogc2VxdWVuY2VyLmM6MjYxCisjOiBzZXF1ZW5jZXIuYzozNTAKIG1zZ2lkICJDb3VsZCBub3QgcmVzb2x2ZSBIRUFEIGNvbW1pdFxuIgogbXNnc3RyICJLb25udGUgVmVyc2lvbiBkZXIgWndlaWdzcGl0emUgKEhFQUQpIG5pY2h0IGF1ZmzDtnNlblxuIgogCi0jOiBzZXF1ZW5jZXIuYzoyODIKKyM6IHNlcXVlbmNlci5jOjM3MQogbXNnaWQgIlVuYWJsZSB0byB1cGRhdGUgY2FjaGUgdHJlZVxuIgogbXNnc3RyICJLb25udGUgendpc2NoZW5nZXNwZWljaGVydGVuIEJhdW0gbmljaHQgYWt0dWFsaXNpZXJlblxuIgogCi0jOiBzZXF1ZW5jZXIuYzozMjQKKyM6IHNlcXVlbmNlci5jOjQxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2UgY29tbWl0ICVzXG4iCiBtc2dzdHIgIktvbm50ZSBWZXJzaW9uICVzIG5pY2h0IHBhcnNlblxuIgogCi0jOiBzZXF1ZW5jZXIuYzozMjkKKyM6IHNlcXVlbmNlci5jOjQyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2UgcGFyZW50IGNvbW1pdCAlc1xuIgogbXNnc3RyICJLb25udGUgRWx0ZXJudmVyc2lvbiAlcyBuaWNodCBwYXJzZW5cbiIKIAotIzogc2VxdWVuY2VyLmM6Mzk1CisjOiBzZXF1ZW5jZXIuYzo0ODcKIG1zZ2lkICJZb3VyIGluZGV4IGZpbGUgaXMgdW5tZXJnZWQuIgotbXNnc3RyICJEZWluZSBCZXJlaXRzdGVsbHVuZ3NkYXRlaSBpc3QgbmljaHQgenVzYW1tZW5nZWbDvGhydC4iCittc2dzdHIgIklocmUgQmVyZWl0c3RlbGx1bmdzZGF0ZWkgaXN0IG5pY2h0IHp1c2FtbWVuZ2Vmw7xocnQuIgogCi0jOiBzZXF1ZW5jZXIuYzozOTgKLW1zZ2lkICJZb3UgZG8gbm90IGhhdmUgYSB2YWxpZCBIRUFEIgotbXNnc3RyICJEdSBoYXN0IGtlaW5lIGfDvGx0aWdlIFp3ZWlnc3BpdHplIChIRUFEKSIKLQotIzogc2VxdWVuY2VyLmM6NDEzCisjOiBzZXF1ZW5jZXIuYzo1MDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGlzIGEgbWVyZ2UgYnV0IG5vIC1tIG9wdGlvbiB3YXMgZ2l2ZW4uIgogbXNnc3RyICIiCiAiVmVyc2lvbiAlcyBpc3QgZWluZSBadXNhbW1lbmbDvGhydW5nLCBhYmVyIGRpZSBPcHRpb24gLW0gd3VyZGUgbmljaHQgIgogImFuZ2VnZWJlbi4iCiAKLSM6IHNlcXVlbmNlci5jOjQyMQorIzogc2VxdWVuY2VyLmM6NTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBkb2VzIG5vdCBoYXZlIHBhcmVudCAlZCIKIG1zZ3N0ciAiVmVyc2lvbiAlcyBoYXQga2VpbmVuIEVsdGVybnRlaWwgJWQiCiAKLSM6IHNlcXVlbmNlci5jOjQyNQorIzogc2VxdWVuY2VyLmM6NTE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1haW5saW5lIHdhcyBzcGVjaWZpZWQgYnV0IGNvbW1pdCAlcyBpcyBub3QgYSBtZXJnZS4iCiBtc2dzdHIgIiIKQEAgLTUwMiw1ODkgKzEwMjYsOTM0IEBACiAKICMuIFRSQU5TTEFUT1JTOiBUaGUgZmlyc3QgJXMgd2lsbCBiZSAicmV2ZXJ0IiBvcgogIy4gImNoZXJyeS1waWNrIiwgdGhlIHNlY29uZCAlcyBhIFNIQTEKLSM6IHNlcXVlbmNlci5jOjQzNgorIzogc2VxdWVuY2VyLmM6NTMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjYW5ub3QgcGFyc2UgcGFyZW50IGNvbW1pdCAlcyIKIG1zZ3N0ciAiJXM6IGthbm4gRWx0ZXJudmVyc2lvbiAlcyBuaWNodCBwYXJzZW4iCiAKLSM6IHNlcXVlbmNlci5jOjQ0MAorIzogc2VxdWVuY2VyLmM6NTM1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBnZXQgY29tbWl0IG1lc3NhZ2UgZm9yICVzIgogbXNnc3RyICJLYW5uIGtlaW5lIFZlcnNpb25zYmVzY2hyZWlidW5nIGbDvHIgJXMgYmVrb21tZW4iCiAKLSM6IHNlcXVlbmNlci5jOjUyNAorIzogc2VxdWVuY2VyLmM6NjIxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZXZlcnQgJXMuLi4gJXMiCi1tc2dzdHIgIktvbm50ZSAlcyBuaWNodCB6dXLDvGNrc2V0emVuLi4uICVzIgorbXNnc3RyICJLb25udGUgJXMgbmljaHQgenVyw7xja25laG1lbi4uLiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NTI1CisjOiBzZXF1ZW5jZXIuYzo2MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGFwcGx5ICVzLi4uICVzIgogbXNnc3RyICJLb25udGUgJXMgbmljaHQgYW53ZW5kZW4uLi4gJXMiCiAKLSM6IHNlcXVlbmNlci5jOjU1MworIzogc2VxdWVuY2VyLmM6NjU0CiBtc2dpZCAiZW1wdHkgY29tbWl0IHNldCBwYXNzZWQiCiBtc2dzdHIgImxlZXJlIE1lbmdlIHZvbiBWZXJzaW9uZW4gw7xiZXJnZWJlbiIKIAotIzogc2VxdWVuY2VyLmM6NTYxCisjOiBzZXF1ZW5jZXIuYzo2NjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0ICVzOiBmYWlsZWQgdG8gcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgImdpdCAlczogRmVobGVyIGJlaW0gTGVzZW4gZGVyIEJlcmVpdHN0ZWxsdW5nIgogCi0jOiBzZXF1ZW5jZXIuYzo1NjYKKyM6IHNlcXVlbmNlci5jOjY2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgJXM6IGZhaWxlZCB0byByZWZyZXNoIHRoZSBpbmRleCIKIG1zZ3N0ciAiZ2l0ICVzOiBGZWhsZXIgYmVpbSBBa3R1YWxpc2llcmVuIGRlciBCZXJlaXRzdGVsbHVuZyIKIAotIzogc2VxdWVuY2VyLmM6NjI0CisjOiBzZXF1ZW5jZXIuYzo3MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90ICVzIGR1cmluZyBhICVzIgogbXNnc3RyICJLYW5uICVzIG5pY2h0IHfDpGhyZW5kIGVpbmVzICVzIGR1cmNoZsO8aHJlbiIKIAotIzogc2VxdWVuY2VyLmM6NjQ2CisjOiBzZXF1ZW5jZXIuYzo3NDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIGxpbmUgJWQuIgogbXNnc3RyICJLb25udGUgWmVpbGUgJWQgbmljaHQgcGFyc2VuLiIKIAotIzogc2VxdWVuY2VyLmM6NjUxCisjOiBzZXF1ZW5jZXIuYzo3NTIKIG1zZ2lkICJObyBjb21taXRzIHBhcnNlZC4iCiBtc2dzdHIgIktlaW5lIFZlcnNpb25lbiBnZXBhcnN0LiIKIAotIzogc2VxdWVuY2VyLmM6NjY0CisjOiBzZXF1ZW5jZXIuYzo3NjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gJXMiCiBtc2dzdHIgIktvbm50ZSAlcyBuaWNodCDDtmZmbmVuIgogCi0jOiBzZXF1ZW5jZXIuYzo2NjgKKyM6IHNlcXVlbmNlci5jOjc2OQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCAlcy4iCiBtc2dzdHIgIktvbm50ZSAlcyBuaWNodCBsZXNlbi4iCiAKLSM6IHNlcXVlbmNlci5jOjY3NQorIzogc2VxdWVuY2VyLmM6Nzc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVudXNhYmxlIGluc3RydWN0aW9uIHNoZWV0OiAlcyIKIG1zZ3N0ciAiVW5iZW51dHpiYXJlcyBJbnN0cnVrdGlvbnNibGF0dDogJXMiCiAKLSM6IHNlcXVlbmNlci5jOjcwMworIzogc2VxdWVuY2VyLmM6ODA0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQga2V5OiAlcyIKIG1zZ3N0ciAiVW5nw7xsdGlnZXIgU2NobMO8c3NlbDogJXMiCiAKLSM6IHNlcXVlbmNlci5jOjcwNgorIzogc2VxdWVuY2VyLmM6ODA3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgdmFsdWUgZm9yICVzOiAlcyIKIG1zZ3N0ciAiVW5nw7xsdGlnZXIgV2VydCBmw7xyICVzOiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NzE4CisjOiBzZXF1ZW5jZXIuYzo4MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFsZm9ybWVkIG9wdGlvbnMgc2hlZXQ6ICVzIgogbXNnc3RyICJGZWhsZXJoYWZ0ZXMgT3B0aW9uc2JsYXR0OiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NzM5CisjOiBzZXF1ZW5jZXIuYzo4NDAKIG1zZ2lkICJhIGNoZXJyeS1waWNrIG9yIHJldmVydCBpcyBhbHJlYWR5IGluIHByb2dyZXNzIgogbXNnc3RyICJcImNoZXJyeS1waWNrXCIgb2RlciBcInJldmVydFwiIGlzdCBiZXJlaXRzIGltIEdhbmciCiAKLSM6IHNlcXVlbmNlci5jOjc0MAorIzogc2VxdWVuY2VyLmM6ODQxCiBtc2dpZCAidHJ5IFwiZ2l0IGNoZXJyeS1waWNrICgtLWNvbnRpbnVlIHwgLS1xdWl0IHwgLS1hYm9ydClcIiIKLW1zZ3N0ciAidmVyc3VjaGUgXCJnaXQgY2hlcnJ5LXBpY2sgKC0tY29udGludWUgfCAtLXF1aXQgfCAtLWFib3J0KVwiIgorbXNnc3RyICJ2ZXJzdWNoZW4gU2llIFwiZ2l0IGNoZXJyeS1waWNrICgtLWNvbnRpbnVlIHwgLS1xdWl0IHwgLS1hYm9ydClcIiIKIAotIzogc2VxdWVuY2VyLmM6NzQ0CisjOiBzZXF1ZW5jZXIuYzo4NDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBzZXF1ZW5jZXIgZGlyZWN0b3J5ICVzIgogbXNnc3RyICJLb25udGUgXCJzZXF1ZW5jZXJcIi1WZXJ6ZWljaG5pcyAlcyBuaWNodCBlcnN0ZWxsZW4iCiAKLSM6IHNlcXVlbmNlci5jOjc2MCBzZXF1ZW5jZXIuYzo4NDUKKyM6IHNlcXVlbmNlci5jOjg2MSBzZXF1ZW5jZXIuYzo5NDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3Igd3JhcHBpbmcgdXAgJXMuIgogbXNnc3RyICJGZWhsZXIgYmVpbSBFaW5wYWNrZW4gdm9uICVzLiIKIAotIzogc2VxdWVuY2VyLmM6Nzc5IHNlcXVlbmNlci5jOjkxMworIzogc2VxdWVuY2VyLmM6ODgwIHNlcXVlbmNlci5jOjEwMTQKIG1zZ2lkICJubyBjaGVycnktcGljayBvciByZXZlcnQgaW4gcHJvZ3Jlc3MiCiBtc2dzdHIgImtlaW4gXCJjaGVycnktcGlja1wiIG9kZXIgXCJyZXZlcnRcIiBpbSBHYW5nIgogCi0jOiBzZXF1ZW5jZXIuYzo3ODEKKyM6IHNlcXVlbmNlci5jOjg4MgogbXNnaWQgImNhbm5vdCByZXNvbHZlIEhFQUQiCiBtc2dzdHIgImthbm4gWndlaWdzcGl0emUgKEhFQUQpIG5pY2h0IGF1ZmzDtnNlbiIKIAotIzogc2VxdWVuY2VyLmM6NzgzCisjOiBzZXF1ZW5jZXIuYzo4ODQKIG1zZ2lkICJjYW5ub3QgYWJvcnQgZnJvbSBhIGJyYW5jaCB5ZXQgdG8gYmUgYm9ybiIKIG1zZ3N0ciAia2FubiBuaWNodCBhYmJyZWNoZW46IGJpbiBhdWYgZWluZW0gWndlaWcsIGRlciBub2NoIGdlYm9yZW4gd2lyZCIKIAotIzogc2VxdWVuY2VyLmM6ODA1IGJ1aWx0aW4vYXBwbHkuYzozNjk3CisjOiBzZXF1ZW5jZXIuYzo5MDYgYnVpbHRpbi9hcHBseS5jOjQwNjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gJXM6ICVzIgogbXNnc3RyICJLYW5uICVzIG5pY2h0IMO2ZmZuZW46ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo4MDgKKyM6IHNlcXVlbmNlci5jOjkwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCAlczogJXMiCiBtc2dzdHIgIkthbm4gJXMgbmljaHQgbGVzZW46ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo4MDkKKyM6IHNlcXVlbmNlci5jOjkxMAogbXNnaWQgInVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiCiBtc2dzdHIgIlVuZXJ3YXJ0ZXRlcyBEYXRlaWVuZGUiCiAKLSM6IHNlcXVlbmNlci5jOjgxNQorIzogc2VxdWVuY2VyLmM6OTE2CiAjLCBjLWZvcm1hdAogbXNnaWQgInN0b3JlZCBwcmUtY2hlcnJ5LXBpY2sgSEVBRCBmaWxlICclcycgaXMgY29ycnVwdCIKIG1zZ3N0ciAiIgogImdlc3BlaWNoZXJ0ZSBcInByZS1jaGVycnktcGlja1wiIERhdGVpIGRlciBad2VpZ3NwaXR6ZSAoSEVBRCkgJyVzJyBpc3QgIgogImJlc2Now6RkaWd0IgogCi0jOiBzZXF1ZW5jZXIuYzo4MzgKKyM6IHNlcXVlbmNlci5jOjkzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgZm9ybWF0ICVzLiIKIG1zZ3N0ciAiS29ubnRlICVzIG5pY2h0IGZvcm1hdGllcmVuLiIKIAotIzogc2VxdWVuY2VyLmM6MTAwMAorIzogc2VxdWVuY2VyLmM6MTA4MworIywgYy1mb3JtYXQKK21zZ2lkICIlczogY2FuJ3QgY2hlcnJ5LXBpY2sgYSAlcyIKK21zZ3N0ciAiJXM6ICVzIGthbm4gbmljaHQgaW4gXCJjaGVycnktcGlja1wiIGJlbnV0enQgd2VyZGVuIgorCisjOiBzZXF1ZW5jZXIuYzoxMDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBiYWQgcmV2aXNpb24iCittc2dzdHIgIiVzOiB1bmfDvGx0aWdlIFJldmlzaW9uIgorCisjOiBzZXF1ZW5jZXIuYzoxMTE5CiBtc2dpZCAiQ2FuJ3QgcmV2ZXJ0IGFzIGluaXRpYWwgY29tbWl0IgotbXNnc3RyICJLYW5uIG5pY2h0IHp1IGluaXRpYWxlciBWZXJzaW9uIHp1csO8Y2tzZXR6ZW4uIgorbXNnc3RyICJSw7xja25haG1lLVZlcnNpb24ga2FubiBuaWNodCBpbml0aWFsIHNlaW4uIgogCi0jOiBzZXF1ZW5jZXIuYzoxMDAxCisjOiBzZXF1ZW5jZXIuYzoxMTIwCiBtc2dpZCAiQ2FuJ3QgY2hlcnJ5LXBpY2sgaW50byBlbXB0eSBoZWFkIgotbXNnc3RyICJLYW5uIFwiY2hlcnJ5LXBpY2tcIiBuaWNodCBpbiBlaW5lbSBsZWVyZW0gS29wZiBhdXNmw7xocmVuLiIKK21zZ3N0ciAiS2FubiBcImNoZXJyeS1waWNrXCIgbmljaHQgaW4gZWluZW0gbGVlcmVuIFp3ZWlnIGF1c2bDvGhyZW4uIgogCi0jOiBzaGExX25hbWUuYzo4NjQKKyM6IHNoYTFfbmFtZS5jOjEwMzYKIG1zZ2lkICJIRUFEIGRvZXMgbm90IHBvaW50IHRvIGEgYnJhbmNoIgogbXNnc3RyICJad2VpZ3NwaXR6ZSAoSEVBRCkgemVpZ3QgYXVmIGtlaW5lbiBad2VpZyIKIAotIzogc2hhMV9uYW1lLmM6ODY3CisjOiBzaGExX25hbWUuYzoxMDM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHN1Y2ggYnJhbmNoOiAnJXMnIgogbXNnc3RyICJLZWluIHNvbGNoZXIgWndlaWcgJyVzJyIKIAotIzogc2hhMV9uYW1lLmM6ODY5CisjOiBzaGExX25hbWUuYzoxMDQxCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHVwc3RyZWFtIGNvbmZpZ3VyZWQgZm9yIGJyYW5jaCAnJXMnIgogbXNnc3RyICJLZWluIGVudGZlcm50ZXMgUHJvamVrdGFyY2hpdiBmw7xyIFp3ZWlnICclcycga29uZmlndXJpZXJ0LiIKIAotIzogc2hhMV9uYW1lLmM6ODcyCisjOiBzaGExX25hbWUuYzoxMDQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVwc3RyZWFtIGJyYW5jaCAnJXMnIG5vdCBzdG9yZWQgYXMgYSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoIgogbXNnc3RyICIiCiAiWndlaWcgJyVzJyBkZXMgZW50ZmVybnRlbiBQcm9qZWt0YXJjaGl2cyBpc3Qga2VpbiBnZWZvbGd0ZXIgw5xiZXJuYWhtZXp3ZWlnIgogCi0jOiB3cmFwcGVyLmM6NDEzCisjOiB3cmFwcGVyLmM6NDA4CisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBhY2Nlc3MgJyVzJzogJXMiCittc2dzdHIgImtvbm50ZSBuaWNodCBhdWYgJyVzJyB6dWdyZWlmZW46ICVzIgorCisjOiB3cmFwcGVyLmM6NDIzCisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBhY2Nlc3MgJyVzJyIKK21zZ3N0ciAia29ubnRlIG5pY2h0IGF1ZiAnJXMnIHp1Z3JlaWZlbiIKKworIzogd3JhcHBlci5jOjQzNAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gbG9vayB1cCBjdXJyZW50IHVzZXIgaW4gdGhlIHBhc3N3ZCBmaWxlOiAlcyIKIG1zZ3N0ciAia29ubnRlIGFrdHVlbGxlbiBCZW51dHplciBuaWNodCBpbiBQYXNzd29ydC1EYXRlaSBmaW5kZW46ICVzIgogCi0jOiB3cmFwcGVyLmM6NDE0CisjOiB3cmFwcGVyLmM6NDM1CiBtc2dpZCAibm8gc3VjaCB1c2VyIgogbXNnc3RyICJrZWluIHNvbGNoZXIgQmVudXR6ZXIiCiAKLSM6IHd0LXN0YXR1cy5jOjEzNQorIzogd3Qtc3RhdHVzLmM6MTQwCiBtc2dpZCAiVW5tZXJnZWQgcGF0aHM6IgogbXNnc3RyICJOaWNodCB6dXNhbW1lbmdlZsO8aHJ0ZSBQZmFkZToiCiAKLSM6IHd0LXN0YXR1cy5jOjE0MSB3dC1zdGF0dXMuYzoxNTgKKyM6IHd0LXN0YXR1cy5jOjE2NyB3dC1zdGF0dXMuYzoxOTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAodXNlIFwiZ2l0IHJlc2V0ICVzIDxmaWxlPi4uLlwiIHRvIHVuc3RhZ2UpIgogbXNnc3RyICIiCi0iICAoYmVudXR6ZSBcImdpdCByZXNldCAlcyA8RGF0ZWk+Li4uXCIgenVtIEhlcmF1c25laG1lbiBhdXMgZGVyICIKKyIgIChiZW51dHplbiBTaWUgXCJnaXQgcmVzZXQgJXMgPERhdGVpPi4uLlwiIHp1bSBIZXJhdXNuZWhtZW4gYXVzIGRlciAiCiAiQmVyZWl0c3RlbGx1bmcpIgogCi0jOiB3dC1zdGF0dXMuYzoxNDMgd3Qtc3RhdHVzLmM6MTYwCisjOiB3dC1zdGF0dXMuYzoxNjkgd3Qtc3RhdHVzLmM6MTk2CiBtc2dpZCAiICAodXNlIFwiZ2l0IHJtIC0tY2FjaGVkIDxmaWxlPi4uLlwiIHRvIHVuc3RhZ2UpIgogbXNnc3RyICIiCi0iICAoYmVudXR6ZSBcImdpdCBybSAtLWNhY2hlZCA8RGF0ZWk+Li4uXCIgenVtIEhlcmF1c25laG1lbiBhdXMgZGVyICIKKyIgIChiZW51dHplbiBTaWUgXCJnaXQgcm0gLS1jYWNoZWQgPERhdGVpPi4uLlwiIHp1bSBIZXJhdXNuZWhtZW4gYXVzIGRlciAiCiAiQmVyZWl0c3RlbGx1bmcpIgogCi0jOiB3dC1zdGF0dXMuYzoxNDQKKyM6IHd0LXN0YXR1cy5jOjE3MworbXNnaWQgIiAgKHVzZSBcImdpdCBhZGQgPGZpbGU+Li4uXCIgdG8gbWFyayByZXNvbHV0aW9uKSIKK21zZ3N0ciAiIgorIiAgKGJlbnV0emVuIFNpZSBcImdpdCBhZGQvcm0gPERhdGVpPi4uLlwiIHVtIGRpZSBBdWZsw7ZzdW5nIHp1IG1hcmtpZXJlbikiCisKKyM6IHd0LXN0YXR1cy5jOjE3NSB3dC1zdGF0dXMuYzoxNzkKIG1zZ2lkICIgICh1c2UgXCJnaXQgYWRkL3JtIDxmaWxlPi4uLlwiIGFzIGFwcHJvcHJpYXRlIHRvIG1hcmsgcmVzb2x1dGlvbikiCiBtc2dzdHIgIiIKLSIgIChiZW51dHplIFwiZ2l0IGFkZC9ybSA8RGF0ZWk+Li4uXCIgdW0gZGllIEF1ZmzDtnN1bmcgZW50c3ByZWNoZW5kIHp1ICIKKyIgIChiZW51dHplbiBTaWUgXCJnaXQgYWRkL3JtIDxEYXRlaT4uLi5cIiB1bSBkaWUgQXVmbMO2c3VuZyBlbnRzcHJlY2hlbmQgenUgIgogIm1hcmtpZXJlbikiCiAKLSM6IHd0LXN0YXR1cy5jOjE1MgorIzogd3Qtc3RhdHVzLmM6MTc3Cittc2dpZCAiICAodXNlIFwiZ2l0IHJtIDxmaWxlPi4uLlwiIHRvIG1hcmsgcmVzb2x1dGlvbikiCittc2dzdHIgIiIKKyIgIChiZW51dHplbiBTaWUgXCJnaXQgYWRkL3JtIDxEYXRlaT4uLi5cIiB1bSBkaWUgQXVmbMO2c3VuZyB6dSBtYXJraWVyZW4pIgorCisjOiB3dC1zdGF0dXMuYzoxODgKIG1zZ2lkICJDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCiBtc2dzdHIgInp1bSBFaW50cmFnZW4gYmVyZWl0Z2VzdGVsbHRlIMOEbmRlcnVuZ2VuOiIKIAotIzogd3Qtc3RhdHVzLmM6MTcwCisjOiB3dC1zdGF0dXMuYzoyMDYKIG1zZ2lkICJDaGFuZ2VzIG5vdCBzdGFnZWQgZm9yIGNvbW1pdDoiCiBtc2dzdHIgIsOEbmRlcnVuZ2VuLCBkaWUgbmljaHQgenVtIEVpbnRyYWdlbiBiZXJlaXRnZXN0ZWxsdCBzaW5kOiIKIAotIzogd3Qtc3RhdHVzLmM6MTc0CisjOiB3dC1zdGF0dXMuYzoyMTAKIG1zZ2lkICIgICh1c2UgXCJnaXQgYWRkIDxmaWxlPi4uLlwiIHRvIHVwZGF0ZSB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKSIKLW1zZ3N0ciAiICAoYmVudXR6ZSBcImdpdCBhZGQgPERhdGVpPi4uLlwiIHp1bSBCZXJlaXRzdGVsbGVuKSIKK21zZ3N0ciAiICAoYmVudXR6ZW4gU2llIFwiZ2l0IGFkZCA8RGF0ZWk+Li4uXCIgenVtIEJlcmVpdHN0ZWxsZW4pIgogCi0jOiB3dC1zdGF0dXMuYzoxNzYKKyM6IHd0LXN0YXR1cy5jOjIxMgogbXNnaWQgIiAgKHVzZSBcImdpdCBhZGQvcm0gPGZpbGU+Li4uXCIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpIgotbXNnc3RyICIgIChiZW51dHplIFwiZ2l0IGFkZC9ybSA8RGF0ZWk+Li4uXCIgenVtIEJlcmVpdHN0ZWxsZW4pIgorbXNnc3RyICIgIChiZW51dHplbiBTaWUgXCJnaXQgYWRkL3JtIDxEYXRlaT4uLi5cIiB6dW0gQmVyZWl0c3RlbGxlbikiCiAKLSM6IHd0LXN0YXR1cy5jOjE3NworIzogd3Qtc3RhdHVzLmM6MjEzCiBtc2dpZCAiIgogIiAgKHVzZSBcImdpdCBjaGVja291dCAtLSA8ZmlsZT4uLi5cIiB0byBkaXNjYXJkIGNoYW5nZXMgaW4gd29ya2luZyBkaXJlY3RvcnkpIgogbXNnc3RyICIiCi0iICAoYmVudXR6ZSBcImdpdCBjaGVja291dCAtLSA8RGF0ZWk+Li4uXCIgdW0gZGllIMOEbmRlcnVuZ2VuIGltICIKKyIgIChiZW51dHplbiBTaWUgXCJnaXQgY2hlY2tvdXQgLS0gPERhdGVpPi4uLlwiIHVtIGRpZSDDhG5kZXJ1bmdlbiBpbSAiCiAiQXJiZWl0c3ZlcnplaWNobmlzIHp1IHZlcndlcmZlbikiCiAKLSM6IHd0LXN0YXR1cy5jOjE3OQorIzogd3Qtc3RhdHVzLmM6MjE1CiBtc2dpZCAiICAoY29tbWl0IG9yIGRpc2NhcmQgdGhlIHVudHJhY2tlZCBvciBtb2RpZmllZCBjb250ZW50IGluIHN1Ym1vZHVsZXMpIgogbXNnc3RyICIiCi0iICAodHJhZ2UgZWluIG9kZXIgdmVyd2VyZmUgZGVuIHVuYmVvYmFjaHRldGVuIG9kZXIgZ2XDpG5kZXJ0ZW4gSW5oYWx0IGluIGRlbiAiCi0iVW50ZXJwcm9qZWt0ZW4pIgorIiAgKHRyYWdlbiBTaWUgZWluIG9kZXIgdmVyd2VyZmVuIFNpZSBkZW4gdW5iZW9iYWNodGV0ZW4gb2RlciBnZcOkbmRlcnRlbiAiCisiSW5oYWx0IGluIGRlbiBVbnRlcnByb2pla3RlbikiCiAKLSM6IHd0LXN0YXR1cy5jOjE4OAotIywgYy1mb3JtYXQKLW1zZ2lkICIlcyBmaWxlczoiCi1tc2dzdHIgIiVzIERhdGVpZW46IgotCi0jOiB3dC1zdGF0dXMuYzoxOTEKKyM6IHd0LXN0YXR1cy5jOjIyNwogIywgYy1mb3JtYXQKIG1zZ2lkICIgICh1c2UgXCJnaXQgJXMgPGZpbGU+Li4uXCIgdG8gaW5jbHVkZSBpbiB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKSIKLW1zZ3N0ciAiICAoYmVudXR6ZSBcImdpdCAlcyA8RGF0ZWk+Li4uXCIgenVtIEVpbmbDvGdlbiBpbiBkaWUgRWludHJhZ3VuZykiCittc2dzdHIgIiAgKGJlbnV0emVuIFNpZSBcImdpdCAlcyA8RGF0ZWk+Li4uXCIgenVtIEVpbmbDvGdlbiBpbiBkaWUgRWludHJhZ3VuZykiCiAKLSM6IHd0LXN0YXR1cy5jOjIwOAorIzogd3Qtc3RhdHVzLmM6MjQ0CiBtc2dpZCAiYnVnIgogbXNnc3RyICJGZWhsZXIiCiAKLSM6IHd0LXN0YXR1cy5jOjIxMworIzogd3Qtc3RhdHVzLmM6MjQ5CiBtc2dpZCAiYm90aCBkZWxldGVkOiIKIG1zZ3N0ciAiYmVpZGUgZ2Vsw7ZzY2h0OiIKIAotIzogd3Qtc3RhdHVzLmM6MjE0CisjOiB3dC1zdGF0dXMuYzoyNTAKIG1zZ2lkICJhZGRlZCBieSB1czoiCiBtc2dzdHIgInZvbiB1bnMgaGluenVnZWbDvGd0OiIKIAotIzogd3Qtc3RhdHVzLmM6MjE1CisjOiB3dC1zdGF0dXMuYzoyNTEKIG1zZ2lkICJkZWxldGVkIGJ5IHRoZW06IgogbXNnc3RyICJ2b24gZGVuZW4gZ2Vsw7ZzY2h0OiIKIAotIzogd3Qtc3RhdHVzLmM6MjE2CisjOiB3dC1zdGF0dXMuYzoyNTIKIG1zZ2lkICJhZGRlZCBieSB0aGVtOiIKIG1zZ3N0ciAidm9uIGRlbmVuIGhpbnp1Z2Vmw7xndDoiCiAKLSM6IHd0LXN0YXR1cy5jOjIxNworIzogd3Qtc3RhdHVzLmM6MjUzCiBtc2dpZCAiZGVsZXRlZCBieSB1czoiCiBtc2dzdHIgInZvbiB1bnMgZ2Vsw7ZzY2h0OiIKIAotIzogd3Qtc3RhdHVzLmM6MjE4CisjOiB3dC1zdGF0dXMuYzoyNTQKIG1zZ2lkICJib3RoIGFkZGVkOiIKIG1zZ3N0ciAidm9uIGJlaWRlbiBoaW56dWdlZsO8Z3Q6IgogCi0jOiB3dC1zdGF0dXMuYzoyMTkKKyM6IHd0LXN0YXR1cy5jOjI1NQogbXNnaWQgImJvdGggbW9kaWZpZWQ6IgogbXNnc3RyICJ2b24gYmVpZGVuIGdlw6RuZGVydDoiCiAKLSM6IHd0LXN0YXR1cy5jOjI0OQorIzogd3Qtc3RhdHVzLmM6Mjg1CiBtc2dpZCAibmV3IGNvbW1pdHMsICIKIG1zZ3N0ciAibmV1ZSBWZXJzaW9uZW4sICIKIAotIzogd3Qtc3RhdHVzLmM6MjUxCisjOiB3dC1zdGF0dXMuYzoyODcKIG1zZ2lkICJtb2RpZmllZCBjb250ZW50LCAiCiBtc2dzdHIgImdlw6RuZGVydGVyIEluaGFsdCwgIgogCi0jOiB3dC1zdGF0dXMuYzoyNTMKKyM6IHd0LXN0YXR1cy5jOjI4OQogbXNnaWQgInVudHJhY2tlZCBjb250ZW50LCAiCiBtc2dzdHIgInVuYmVvYmFjaHRldGVyIEluaGFsdCwgIgogCi0jOiB3dC1zdGF0dXMuYzoyNjcKKyM6IHd0LXN0YXR1cy5jOjMwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgZmlsZTogICAlcyIKIG1zZ3N0ciAibmV1ZSBEYXRlaTogICAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MjcwCisjOiB3dC1zdGF0dXMuYzozMDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29waWVkOiAgICAgJXMgLT4gJXMiCiBtc2dzdHIgImtvcGllcnQ6ICAgICAlcyAtPiAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MjczCisjOiB3dC1zdGF0dXMuYzozMTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZGVsZXRlZDogICAgJXMiCiBtc2dzdHIgImdlbMO2c2NodDogICAgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjI3NgorIzogd3Qtc3RhdHVzLmM6MzE1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1vZGlmaWVkOiAgICVzIgogbXNnc3RyICJnZcOkbmRlcnQ6ICAgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjI3OQorIzogd3Qtc3RhdHVzLmM6MzE4CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlbmFtZWQ6ICAgICVzIC0+ICVzIgogbXNnc3RyICJ1bWJlbmFubnQ6ICAgICVzIC0+ICVzIgogCi0jOiB3dC1zdGF0dXMuYzoyODIKKyM6IHd0LXN0YXR1cy5jOjMyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJ0eXBlY2hhbmdlOiAlcyIKIG1zZ3N0ciAiVHlww6RuZGVydW5nOiAlcyIKIAotIzogd3Qtc3RhdHVzLmM6Mjg1CisjOiB3dC1zdGF0dXMuYzozMjQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93bjogICAgJXMiCiBtc2dzdHIgInVuYmVrYW5udDogICAgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjI4OAorIzogd3Qtc3RhdHVzLmM6MzI3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVubWVyZ2VkOiAgICVzIgogbXNnc3RyICJuaWNodCB6dXNhbW1lbmdlZsO8aHJ0OiAgICVzIgogCi0jOiB3dC1zdGF0dXMuYzoyOTEKKyM6IHd0LXN0YXR1cy5jOjMzMAogIywgYy1mb3JtYXQKIG1zZ2lkICJidWc6IHVuaGFuZGxlZCBkaWZmIHN0YXR1cyAlYyIKIG1zZ3N0ciAiRmVobGVyOiB1bmJlaGFuZGVsdGVyIERpZmZlcmVuei1TdGF0dXMgJWMiCiAKLSM6IHd0LXN0YXR1cy5jOjczNworIzogd3Qtc3RhdHVzLmM6ODAzCittc2dpZCAiWW91IGhhdmUgdW5tZXJnZWQgcGF0aHMuIgorbXNnc3RyICJTaWUgaGFiZW4gbmljaHQgenVzYW1tZW5nZWbDvGhydGUgUGZhZGUuIgorCisjOiB3dC1zdGF0dXMuYzo4MDYgd3Qtc3RhdHVzLmM6OTU4Cittc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuIFwiZ2l0IGNvbW1pdFwiKSIKK21zZ3N0ciAiIChiZWhlYmVuIFNpZSBkaWUgS29uZmxpa3RlIHVuZCBmw7xocmVuIFNpZSBcImdpdCBjb21taXRcIiBhdXMpIgorCisjOiB3dC1zdGF0dXMuYzo4MDkKK21zZ2lkICJBbGwgY29uZmxpY3RzIGZpeGVkIGJ1dCB5b3UgYXJlIHN0aWxsIG1lcmdpbmcuIgorbXNnc3RyICIiCisiQWxsZSBLb25mbGlrdGUgc2luZCBiZWhvYmVuLCBhYmVyIFNpZSBzaW5kIGltbWVyIG5vY2ggYmVpbSBadXNhbW1lbmbDvGhyZW4uIgorCisjOiB3dC1zdGF0dXMuYzo4MTIKK21zZ2lkICIgICh1c2UgXCJnaXQgY29tbWl0XCIgdG8gY29uY2x1ZGUgbWVyZ2UpIgorbXNnc3RyICIgIChiZW51dHplbiBTaWUgXCJnaXQgY29tbWl0XCIgdW0gZGllIFp1c2FtbWVuZsO8aHJ1bmcgYWJ6dXNjaGxpZcOfZW4pIgorCisjOiB3dC1zdGF0dXMuYzo4MjIKK21zZ2lkICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYW4gYW0gc2Vzc2lvbi4iCittc2dzdHIgIkVpbmUgXCJhbVwiLVNpdHp1bmcgaXN0IGltIEdhbmdlLiIKKworIzogd3Qtc3RhdHVzLmM6ODI1Cittc2dpZCAiVGhlIGN1cnJlbnQgcGF0Y2ggaXMgZW1wdHkuIgorbXNnc3RyICJEZXIgYWt0dWVsbGUgUGF0Y2ggaXN0IGxlZXIuIgorCisjOiB3dC1zdGF0dXMuYzo4MjkKK21zZ2lkICIgIChmaXggY29uZmxpY3RzIGFuZCB0aGVuIHJ1biBcImdpdCBhbSAtLXJlc29sdmVkXCIpIgorbXNnc3RyICIiCisiICAoYmVoZWJlbiBTaWUgZGllIEtvbmZsaWt0ZSB1bmQgZsO8aHJlbiBTaWUgZGFubiBcImdpdCBhbSAtLXJlc29sdmVkXCIgYXVzKSIKKworIzogd3Qtc3RhdHVzLmM6ODMxCittc2dpZCAiICAodXNlIFwiZ2l0IGFtIC0tc2tpcFwiIHRvIHNraXAgdGhpcyBwYXRjaCkiCittc2dzdHIgIiAoYmVudXR6ZW4gU2llIFwiZ2l0IGFtIC0tc2tpcFwiIHVtIGRpZXNlbiBQYXRjaCBhdXN6dWxhc3NlbikiCisKKyM6IHd0LXN0YXR1cy5jOjgzMworbXNnaWQgIiAgKHVzZSBcImdpdCBhbSAtLWFib3J0XCIgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoKSIKK21zZ3N0ciAiIgorIiAgKGJlbnV0emVuIFNpZSBcImdpdCBhbSAtLWFib3J0XCIgdW0gZGVuIHVyc3Byw7xuZ2xpY2hlbiBad2VpZyAiCisid2llZGVyaGVyenVzdGVsbGVuKSIKKworIzogd3Qtc3RhdHVzLmM6ODkzIHd0LXN0YXR1cy5jOjkxMAorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZyBicmFuY2ggJyVzJyBvbiAnJXMnLiIKK21zZ3N0ciAiU2llIHNpbmQgZ2VyYWRlIGJlaW0gTmV1YXVmYmF1IHZvbiBad2VpZyAnJXMnIGF1ZiAnJXMnLiIKKworIzogd3Qtc3RhdHVzLmM6ODk4IHd0LXN0YXR1cy5jOjkxNQorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nLiIKK21zZ3N0ciAiU2llIHNpbmQgZ2VyYWRlIGJlaW0gTmV1YXVmYmF1LiIKKworIzogd3Qtc3RhdHVzLmM6OTAxCittc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIikiCittc2dzdHIgIiIKKyIgIChiZWhlYmVuIFNpZSBkaWUgS29uZmxpa3RlIHVuZCBmw7xocmVuIFNpZSBkYW5uIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIgIgorImF1cykiCisKKyM6IHd0LXN0YXR1cy5jOjkwMworbXNnaWQgIiAgKHVzZSBcImdpdCByZWJhc2UgLS1za2lwXCIgdG8gc2tpcCB0aGlzIHBhdGNoKSIKK21zZ3N0ciAiICAoYmVudXR6ZW4gU2llIFwiZ2l0IHJlYmFzZSAtLXNraXBcIiB1bSBkaWVzZW4gUGF0Y2ggYXVzenVsYXNzZW4pIgorCisjOiB3dC1zdGF0dXMuYzo5MDUKK21zZ2lkICIgICh1c2UgXCJnaXQgcmViYXNlIC0tYWJvcnRcIiB0byBjaGVjayBvdXQgdGhlIG9yaWdpbmFsIGJyYW5jaCkiCittc2dzdHIgIiIKKyIgIChiZW51dHplbiBTaWUgXCJnaXQgcmViYXNlIC0tYWJvcnRcIiB1bSBkZW4gdXJzcHLDvG5nbGljaGVuIFp3ZWlnICIKKyJhdXN6dWNoZWNrZW4pIgorCisjOiB3dC1zdGF0dXMuYzo5MTgKK21zZ2lkICIgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIikiCittc2dzdHIgIiAgKGFsbGUgS29uZmxpa3RlIGJlaG9iZW46IGbDvGhyZW4gU2llIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIgYXVzKSIKKworIzogd3Qtc3RhdHVzLmM6OTIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iCittc2dzdHIgIiIKKyJTaWUgdGVpbGVuIGdlcmFkZSBlaW5lIFZlcnNpb24gYXVmLCB3w6RocmVuZCBlaW4gTmV1YXVmYmF1IHZvbiBad2VpZyAnJXMnIGF1ZiAiCisiJyVzJyBpbSBHYW5nZSBpc3QuIgorCisjOiB3dC1zdGF0dXMuYzo5MjcKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLiIKK21zZ3N0ciAiU2llIHRlaWxlbiBnZXJhZGUgZWluZSBWZXJzaW9uIHfDpGhyZW5kIGVpbmVzIE5ldWF1ZmJhdXMgYXVmLiIKKworIzogd3Qtc3RhdHVzLmM6OTMwCittc2dpZCAiICAoT25jZSB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IGlzIGNsZWFuLCBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIikiCittc2dzdHIgIiIKKyIgIChTb2JhbGQgSWhyIEFyYmVpdHN2ZXJ6ZWljaG5pcyBzYXViZXIgaXN0LCBmw7xocmVuIFNpZSBcImdpdCByZWJhc2UgLS0iCisiY29udGludWVcIiBhdXMpIgorCisjOiB3dC1zdGF0dXMuYzo5MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJyVzJyBvbiAnJXMnLiIKK21zZ3N0ciAiIgorIlNpZSBlZGl0aWVyZW4gZ2VyYWRlIGVpbmUgVmVyc2lvbiB3w6RocmVuZCBlaW5lcyBOZXVhdWZiYXVzIHZvbiBad2VpZyAnJXMnICIKKyJhdWYgJyVzJy4iCisKKyM6IHd0LXN0YXR1cy5jOjkzOQorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLiIKK21zZ3N0ciAiU2llIGVkaXRpZXJlbiBnZXJhZGUgZWluZSBWZXJzaW9uIHfDpGhyZW5kIGVpbmVzIE5ldWF1ZmJhdXMuIgorCisjOiB3dC1zdGF0dXMuYzo5NDIKK21zZ2lkICIgICh1c2UgXCJnaXQgY29tbWl0IC0tYW1lbmRcIiB0byBhbWVuZCB0aGUgY3VycmVudCBjb21taXQpIgorbXNnc3RyICIiCisiICAoYmVudXR6ZW4gU2llIFwiZ2l0IGNvbW1pdCAtLWFtZW5kXCIgdW0gZGllIGFrdHVlbGxlIFZlcnNpb24gbmFjaHp1YmVzc2VybikiCisKKyM6IHd0LXN0YXR1cy5jOjk0NAorbXNnaWQgIiIKKyIgICh1c2UgXCJnaXQgcmViYXNlIC0tY29udGludWVcIiBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzKSIKK21zZ3N0ciAiIgorIiAgKGJlbnV0emVuIFNpZSBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiIHNvYmFsZCBJaHJlIMOEbmRlcnVuZ2VuICIKKyJhYmdlc2NobG9zc2VuIHNpbmQpIgorCisjOiB3dC1zdGF0dXMuYzo5NTQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBjaGVycnktcGlja2luZy4iCittc2dzdHIgIlNpZSBmw7xocmVuIGdlcmFkZSBcImNoZXJyeS1waWNrXCIgYXVzLiIKKworIzogd3Qtc3RhdHVzLmM6OTYxCittc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IGNvbW1pdFwiKSIKK21zZ3N0ciAiICAoYWxsZSBLb25mbGlrdGUgYmVob2JlbjogZsO8aHJlbiBTaWUgXCJnaXQgY29tbWl0XCIgYXVzKSIKKworIzogd3Qtc3RhdHVzLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IHJldmVydGluZyBjb21taXQgJXMuIgorbXNnc3RyICJTaWUgbmVobWVuIGdlcmFkZSBWZXJzaW9uICclcycgenVyw7xjay4iCisKKyM6IHd0LXN0YXR1cy5jOjk3NQorbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKK21zZ3N0ciAiIgorIiAgKGJlaGViZW4gU2llIGRpZSBLb25mbGlrdGUgdW5kIGbDvGhyZW4gU2llIGRhbm4gXCJnaXQgcmV2ZXJ0IC0tY29udGludWVcIiAiCisiYXVzKSIKKworIzogd3Qtc3RhdHVzLmM6OTc4Cittc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCIpIgorbXNnc3RyICIgIChhbGxlIEtvbmZsaWt0ZSBiZWhvYmVuOiBmw7xocmVuIFNpZSBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiIGF1cykiCisKKyM6IHd0LXN0YXR1cy5jOjk4MAorbXNnaWQgIiAgKHVzZSBcImdpdCByZXZlcnQgLS1hYm9ydFwiIHRvIGNhbmNlbCB0aGUgcmV2ZXJ0IG9wZXJhdGlvbikiCittc2dzdHIgIiIKKyIgIChiZW51dHplbiBTaWUgXCJnaXQgcmV2ZXJ0IC0tYWJvcnRcIiB1bSBkaWUgVW1rZWhyb3BlcmF0aW9uIGFienVicmVjaGVuKSIKKworIzogd3Qtc3RhdHVzLmM6OTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGJpc2VjdGluZywgc3RhcnRlZCBmcm9tIGJyYW5jaCAnJXMnLiIKK21zZ3N0ciAiU2llIHNpbmQgZ2VyYWRlIGJlaSBlaW5lciBiaW7DpHJlbiBTdWNoZSwgZ2VzdGFydGV0IHZvbiBad2VpZyAnJXMnLiIKKworIzogd3Qtc3RhdHVzLmM6OTk1Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLiIKK21zZ3N0ciAiU2llIHNpbmQgZ2VyYWRlIGJlaSBlaW5lciBiaW7DpHJlbiBTdWNoZS4iCisKKyM6IHd0LXN0YXR1cy5jOjk5OAorbXNnaWQgIiAgKHVzZSBcImdpdCBiaXNlY3QgcmVzZXRcIiB0byBnZXQgYmFjayB0byB0aGUgb3JpZ2luYWwgYnJhbmNoKSIKK21zZ3N0ciAiIgorIiAgKGJlbnV0emVuIFNpZSBcImdpdCBiaXNlY3QgcmVzZXRcIiB1bSB6dW0gdXJzcHLDvG5nbGljaGVuIFp3ZWlnICIKKyJ6dXLDvGNrenVrZWhyZW4pIgorCisjOiB3dC1zdGF0dXMuYzoxMTczCiBtc2dpZCAiT24gYnJhbmNoICIKIG1zZ3N0ciAiQXVmIFp3ZWlnICIKIAotIzogd3Qtc3RhdHVzLmM6NzQ0CisjOiB3dC1zdGF0dXMuYzoxMTg0Cittc2dpZCAiSEVBRCBkZXRhY2hlZCBhdCAiCittc2dzdHIgIlp3ZWlnc3BpdHplIChIRUFEKSBsb3NnZWzDtnN0IGJlaSAiCisKKyM6IHd0LXN0YXR1cy5jOjExODYKK21zZ2lkICJIRUFEIGRldGFjaGVkIGZyb20gIgorbXNnc3RyICJad2VpZ3NwaXR6ZSAoSEVBRCkgbG9zZ2Vsw7ZzdCB2b24gIgorCisjOiB3dC1zdGF0dXMuYzoxMTg5CiBtc2dpZCAiTm90IGN1cnJlbnRseSBvbiBhbnkgYnJhbmNoLiIKIG1zZ3N0ciAiSW0gTW9tZW50IGF1ZiBrZWluZW0gWndlaWcuIgogCi0jOiB3dC1zdGF0dXMuYzo3NTUKKyM6IHd0LXN0YXR1cy5jOjEyMDYKIG1zZ2lkICJJbml0aWFsIGNvbW1pdCIKIG1zZ3N0ciAiSW5pdGlhbGUgVmVyc2lvbiIKIAotIzogd3Qtc3RhdHVzLmM6NzY5Ci1tc2dpZCAiVW50cmFja2VkIgotbXNnc3RyICJVbmJlb2JhY2h0ZXRlIgorIzogd3Qtc3RhdHVzLmM6MTIyMAorbXNnaWQgIlVudHJhY2tlZCBmaWxlcyIKK21zZ3N0ciAiVW5iZW9iYWNodGV0ZSBEYXRlaWVuIgogCi0jOiB3dC1zdGF0dXMuYzo3NzEKLW1zZ2lkICJJZ25vcmVkIgotbXNnc3RyICJJZ25vcmllcnRlIgorIzogd3Qtc3RhdHVzLmM6MTIyMgorbXNnaWQgIklnbm9yZWQgZmlsZXMiCittc2dzdHIgIklnbm9yaWVydGUgRGF0ZWllbiIKIAotIzogd3Qtc3RhdHVzLmM6NzczCisjOiB3dC1zdGF0dXMuYzoxMjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJJdCB0b29rICUuMmYgc2Vjb25kcyB0byBlbnVtZXJhdGUgdW50cmFja2VkIGZpbGVzLiAnc3RhdHVzIC11bm8nXG4iCisibWF5IHNwZWVkIGl0IHVwLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gZm9yZ2V0IHRvIGFkZFxuIgorIm5ldyBmaWxlcyB5b3Vyc2VsZiAoc2VlICdnaXQgaGVscCBzdGF0dXMnKS4iCittc2dzdHIgIiIKKyJFcyBkYXVlcnRlICUuMmYgU2VrdW5kZW4gZGllIHVuYmVvYmFjaHRldGVuIERhdGVpZW4genUgYmVzdGltbWVuLlxuIgorIidzdGF0dXMgLXVubycga8O2bm50ZSBkYXMgYmVzY2hsZXVuaWdlbiwgYWJlciBTaWUgbcO8c3NlbiBkYXJhdWYgYWNodGVuLFxuIgorIm5ldWUgRGF0ZWllbiBzZWxic3RzdMOkbmRpZyBoaW56dXp1ZsO8Z2VuIChzaWVoZSAnZ2l0IGhlbHAgc3RhdHVzJykuIgorCisjOiB3dC1zdGF0dXMuYzoxMjMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVudHJhY2tlZCBmaWxlcyBub3QgbGlzdGVkJXMiCiBtc2dzdHIgIlVuYmVvYmFjaHRldGUgRGF0ZWllbiBuaWNodCBhdWZnZWxpc3RldCVzIgogCi0jOiB3dC1zdGF0dXMuYzo3NzUKKyM6IHd0LXN0YXR1cy5jOjEyMzQKIG1zZ2lkICIgKHVzZSAtdSBvcHRpb24gdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpIgotbXNnc3RyICIgKGJlbnV0emUgZGllIE9wdGlvbiAtdSB1bSB1bmJlb2JhY2h0ZXRlbiBEYXRlaWVuIGFuenV6ZWlnZW4pIgorbXNnc3RyICIgKGJlbnV0emVuIFNpZSBkaWUgT3B0aW9uIC11IHVtIHVuYmVvYmFjaHRldGVuIERhdGVpZW4gYW56dXplaWdlbikiCiAKLSM6IHd0LXN0YXR1cy5jOjc4MQorIzogd3Qtc3RhdHVzLmM6MTI0MAogbXNnaWQgIk5vIGNoYW5nZXMiCiBtc2dzdHIgIktlaW5lIMOEbmRlcnVuZ2VuIgogCi0jOiB3dC1zdGF0dXMuYzo3ODUKKyM6IHd0LXN0YXR1cy5jOjEyNDUKICMsIGMtZm9ybWF0Ci1tc2dpZCAibm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXQlc1xuIgotbXNnc3RyICJrZWluZSDDhG5kZXJ1bmdlbiB6dW0gRWludHJhZ2VuIGhpbnp1Z2Vmw7xndCVzXG4iCi0KLSM6IHd0LXN0YXR1cy5jOjc4NwotbXNnaWQgIiAodXNlIFwiZ2l0IGFkZFwiIGFuZC9vciBcImdpdCBjb21taXQgLWFcIikiCi1tc2dzdHIgIiAoYmVudXR6ZSBcImdpdCBhZGRcIiB1bmQvb2RlciBcImdpdCBjb21taXQgLWFcIikiCi0KLSM6IHd0LXN0YXR1cy5jOjc4OQotIywgYy1mb3JtYXQKLW1zZ2lkICJub3RoaW5nIGFkZGVkIHRvIGNvbW1pdCBidXQgdW50cmFja2VkIGZpbGVzIHByZXNlbnQlc1xuIgorbXNnaWQgIm5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0ICh1c2UgXCJnaXQgYWRkXCIgYW5kL29yIFwiZ2l0IGNvbW1pdCAtYVwiKVxuIgogbXNnc3RyICIiCi0ibmljaHRzIHp1bSBFaW50cmFnZW4gaGluenVnZWbDvGd0LCBhYmVyIGVzIGdpYnQgdW5iZW9iYWNodGV0ZSBEYXRlaWVuJXNcbiIKKyJrZWluZSDDhG5kZXJ1bmdlbiB6dW0gRWludHJhZ2VuIGhpbnp1Z2Vmw7xndCAoYmVudXR6ZW4gU2llIFwiZ2l0IGFkZFwiIHVuZC8iCisib2RlciBcImdpdCBjb21taXQgLWFcIilcbiIKIAotIzogd3Qtc3RhdHVzLmM6NzkxCi1tc2dpZCAiICh1c2UgXCJnaXQgYWRkXCIgdG8gdHJhY2spIgotbXNnc3RyICIgKGJlbnV0emUgXCJnaXQgYWRkXCIgenVtIEJlb2JhY2h0ZW4pIgotCi0jOiB3dC1zdGF0dXMuYzo3OTMgd3Qtc3RhdHVzLmM6Nzk2IHd0LXN0YXR1cy5jOjc5OQorIzogd3Qtc3RhdHVzLmM6MTI0OAogIywgYy1mb3JtYXQKLW1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCVzXG4iCi1tc2dzdHIgIm5pY2h0cyB6dW0gRWludHJhZ2VuJXNcbiIKK21zZ2lkICJubyBjaGFuZ2VzIGFkZGVkIHRvIGNvbW1pdFxuIgorbXNnc3RyICJrZWluZSDDhG5kZXJ1bmdlbiB6dW0gRWludHJhZ2VuIGhpbnp1Z2Vmw7xndFxuIgogCi0jOiB3dC1zdGF0dXMuYzo3OTQKLW1zZ2lkICIgKGNyZWF0ZS9jb3B5IGZpbGVzIGFuZCB1c2UgXCJnaXQgYWRkXCIgdG8gdHJhY2spIgotbXNnc3RyICIgKEVyc3RlbGxlL0tvcGllcmUgRGF0ZWllbiB1bmQgYmVudXR6ZSBcImdpdCBhZGRcIiB6dW0gQmVvYmFjaHRlbikiCisjOiB3dC1zdGF0dXMuYzoxMjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJub3RoaW5nIGFkZGVkIHRvIGNvbW1pdCBidXQgdW50cmFja2VkIGZpbGVzIHByZXNlbnQgKHVzZSBcImdpdCBhZGRcIiB0byAiCisidHJhY2spXG4iCittc2dzdHIgIiIKKyJuaWNodHMgenVtIEVpbnRyYWdlbiBoaW56dWdlZsO8Z3QsIGFiZXIgZXMgZ2lidCB1bmJlb2JhY2h0ZXRlIERhdGVpZW4gIgorIihiZW51dHplbiBTaWUgXCJnaXQgYWRkXCIgenVtIEJlb2JhY2h0ZW4pXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjc5NwotbXNnaWQgIiAodXNlIC11IHRvIHNob3cgdW50cmFja2VkIGZpbGVzKSIKLW1zZ3N0ciAiIChiZW51dHplIGRpZSBPcHRpb24gLXUgdW0gdW5iZW9iYWNodGV0ZSBEYXRlaWVuIGFuenV6ZWlnZW4pIgorIzogd3Qtc3RhdHVzLmM6MTI1NAorIywgYy1mb3JtYXQKK21zZ2lkICJub3RoaW5nIGFkZGVkIHRvIGNvbW1pdCBidXQgdW50cmFja2VkIGZpbGVzIHByZXNlbnRcbiIKK21zZ3N0ciAibmljaHRzIHp1bSBFaW50cmFnZW4gaGluenVnZWbDvGd0LCBhYmVyIGVzIGdpYnQgdW5iZW9iYWNodGV0ZSBEYXRlaWVuXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjgwMAotbXNnaWQgIiAod29ya2luZyBkaXJlY3RvcnkgY2xlYW4pIgotbXNnc3RyICIgKEFyYmVpdHN2ZXJ6ZWljaG5pcyBzYXViZXIpIgorIzogd3Qtc3RhdHVzLmM6MTI1NworIywgYy1mb3JtYXQKK21zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCAoY3JlYXRlL2NvcHkgZmlsZXMgYW5kIHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaylcbiIKK21zZ3N0ciAiIgorIm5pY2h0cyBlaW56dXRyYWdlbiAoRXJzdGVsbGVuL0tvcGllcmVuIFNpZSBEYXRlaWVuIHVuZCBiZW51dHplbiBTaWUgXCJnaXQgYWRkIgorIlwiIHp1bSBCZW9iYWNodGVuKVxuIgogCi0jOiB3dC1zdGF0dXMuYzo5MDgKKyM6IHd0LXN0YXR1cy5jOjEyNjAgd3Qtc3RhdHVzLmM6MTI2NQorIywgYy1mb3JtYXQKK21zZ2lkICJub3RoaW5nIHRvIGNvbW1pdFxuIgorbXNnc3RyICJuaWNodHMgZWluenV0cmFnZW5cbiIKKworIzogd3Qtc3RhdHVzLmM6MTI2MworIywgYy1mb3JtYXQKK21zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCAodXNlIC11IHRvIHNob3cgdW50cmFja2VkIGZpbGVzKVxuIgorbXNnc3RyICIiCisibmljaHRzIGVpbnp1dHJhZ2VuIChiZW51dHplbiBTaWUgZGllIE9wdGlvbiAtdSwgdW0gdW5iZW9iYWNodGV0ZSBEYXRlaWVuICIKKyJhbnp1emVpZ2VuKVxuIgorCisjOiB3dC1zdGF0dXMuYzoxMjY3CisjLCBjLWZvcm1hdAorbXNnaWQgIm5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIGRpcmVjdG9yeSBjbGVhblxuIgorbXNnc3RyICJuaWNodHMgZWluenV0cmFnZW4sIEFyYmVpdHN2ZXJ6ZWljaG5pcyBzYXViZXJcbiIKKworIzogd3Qtc3RhdHVzLmM6MTM3NQogbXNnaWQgIkhFQUQgKG5vIGJyYW5jaCkiCiBtc2dzdHIgIkhFQUQgKGtlaW4gWndlaWcpIgogCi0jOiB3dC1zdGF0dXMuYzo5MTQKKyM6IHd0LXN0YXR1cy5jOjEzODEKIG1zZ2lkICJJbml0aWFsIGNvbW1pdCBvbiAiCiBtc2dzdHIgIkluaXRpYWxlIFZlcnNpb24gYXVmICIKIAotIzogd3Qtc3RhdHVzLmM6OTI5CisjOiB3dC1zdGF0dXMuYzoxMzk2CiBtc2dpZCAiYmVoaW5kICIKIG1zZ3N0ciAiaGludGVyaGVyICIKIAotIzogd3Qtc3RhdHVzLmM6OTMyIHd0LXN0YXR1cy5jOjkzNQorIzogd3Qtc3RhdHVzLmM6MTM5OSB3dC1zdGF0dXMuYzoxNDAyCiBtc2dpZCAiYWhlYWQgIgogbXNnc3RyICJ2b3JhdXMgIgogCi0jOiB3dC1zdGF0dXMuYzo5MzcKKyM6IHd0LXN0YXR1cy5jOjE0MDQKIG1zZ2lkICIsIGJlaGluZCAiCiBtc2dzdHIgIiwgaGludGVyaGVyICIKIAotIzogYnVpbHRpbi9hZGQuYzo2MgorIzogY29tcGF0L3ByZWNvbXBvc2VfdXRmOC5jOjU4IGJ1aWx0aW4vY2xvbmUuYzozNTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmFpbGVkIHRvIHVubGluayAnJXMnIgorbXNnc3RyICJLb25udGUgJyVzJyBuaWNodCBlbnRmZXJuZW4uIgorCisjOiBidWlsdGluL2FkZC5jOjIwCittc2dpZCAiZ2l0IGFkZCBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICJnaXQgYWRkIFtPcHRpb25lbl0gWy0tXSBbPFBmYWRzcGV6aWZpa2F0aW9uPi4uLl0iCisKKyMuCisjLiAqIFRvIGJlIGNvbnNpc3RlbnQgd2l0aCAiZ2l0IGFkZCAtcCIgYW5kIG1vc3QgR2l0CisjLiAqIGNvbW1hbmRzLCB3ZSBzaG91bGQgZGVmYXVsdCB0byBiZWluZyB0cmVlLXdpZGUsIGJ1dAorIy4gKiB0aGlzIGlzIG5vdCB0aGUgb3JpZ2luYWwgYmVoYXZpb3IgYW5kIGNhbid0IGJlCisjLiAqIGNoYW5nZWQgdW50aWwgdXNlcnMgdHJhaW5lZCB0aGVtc2VsdmVzIG5vdCB0byB0eXBlCisjLiAqICJnaXQgYWRkIC11IiBvciAiZ2l0IGFkZCAtQSIuIEZvciBub3csIHdlIHdhcm4gYW5kCisjLiAqIGtlZXAgdGhlIG9sZCBiZWhhdmlvci4gTGF0ZXIsIHRoZSBiZWhhdmlvciBjYW4gYmUgY2hhbmdlZAorIy4gKiB0byB0cmVlLXdpZGUsIGtlZXBpbmcgdGhlIHdhcm5pbmcgZm9yIGEgd2hpbGUsIGFuZAorIy4gKiBldmVudHVhbGx5IHdlIGNhbiBkcm9wIHRoZSB3YXJuaW5nLgorIy4KKyM6IGJ1aWx0aW4vYWRkLmM6NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBiZWhhdmlvciBvZiAnZ2l0IGFkZCAlcyAob3IgJXMpJyB3aXRoIG5vIHBhdGggYXJndW1lbnQgZnJvbSBhXG4iCisic3ViZGlyZWN0b3J5IG9mIHRoZSB0cmVlIHdpbGwgY2hhbmdlIGluIEdpdCAyLjAgYW5kIHNob3VsZCBub3QgYmUgdXNlZCAiCisiYW55bW9yZS5cbiIKKyJUbyBhZGQgY29udGVudCBmb3IgdGhlIHdob2xlIHRyZWUsIHJ1bjpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgOi9cbiIKKyIgIChvciBnaXQgYWRkICVzIDovKVxuIgorIlxuIgorIlRvIHJlc3RyaWN0IHRoZSBjb21tYW5kIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgcnVuOlxuIgorIlxuIgorIiAgZ2l0IGFkZCAlcyAuXG4iCisiICAob3IgZ2l0IGFkZCAlcyAuKVxuIgorIlxuIgorIldpdGggdGhlIGN1cnJlbnQgR2l0IHZlcnNpb24sIHRoZSBjb21tYW5kIGlzIHJlc3RyaWN0ZWQgdG8gdGhlIGN1cnJlbnQgIgorImRpcmVjdG9yeS5cbiIKK21zZ3N0ciAiIgorIkRhcyBWZXJoYWx0ZW4gdm9uICdnaXQgYWRkICVzIChvZGVyICVzKScgb2huZSBlaW4gUGZhZC1Bcmd1bWVudCB2b25cbiIKKyJlaW5lbSBVbnRlcnZlcnplaWNobmlzIGF1cyB3aXJkIGluIEdpdCAyLjAgZ2XDpG5kZXJ0IHVuZCBzb2xsdGUgbmljaHRcbiIKKyJtZWhyIHZlcndlbmRldCB3ZXJkZW4uXG4iCisiVW0gRGF0ZWllbiBkZXMgZ2VzYW10ZW4gUHJvamVrdHZlcnplaWNobmlzc2VzIGhpbnp1enVmw7xnZW4sIGbDvGhyZW4gU2llIGF1czpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgOi9cbiIKKyIgIChvZGVyIGdpdCBhZGQgJXMgOi8pXG4iCisiXG4iCisiWnVyIEVpbnNjaHLDpG5rdW5nIGF1ZiBkYXMgYWt0dWVsbGUgVmVyemVpY2huaXMgZsO8aHJlbiBTaWUgYXVzOlxuIgorIlxuIgorIiAgZ2l0IGFkZCAlcyAuXG4iCisiICAob2RlciBnaXQgYWRkICVzIC4pXG4iCisiXG4iCisiTWl0IGRlciBha3R1ZWxsZW4gVmVyc2lvbiB2b24gR2l0IGlzdCBkYXMgS29tbWFuZG8gYXVmIGRhcyBha3R1ZWxsZVxuIgorIlZlcnplaWNobmlzIGJlc2NocsOkbmt0LlxuIgorCisjOiBidWlsdGluL2FkZC5jOjEwMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiWW91IHJhbiAnZ2l0IGFkZCcgd2l0aCBuZWl0aGVyICctQSAoLS1hbGwpJyBvciAnLS1pZ25vcmUtcmVtb3ZhbCcsXG4iCisid2hvc2UgYmVoYXZpb3VyIHdpbGwgY2hhbmdlIGluIEdpdCAyLjAgd2l0aCByZXNwZWN0IHRvIHBhdGhzIHlvdSByZW1vdmVkLlxuIgorIlBhdGhzIGxpa2UgJyVzJyB0aGF0IGFyZVxuIgorInJlbW92ZWQgZnJvbSB5b3VyIHdvcmtpbmcgdHJlZSBhcmUgaWdub3JlZCB3aXRoIHRoaXMgdmVyc2lvbiBvZiBHaXQuXG4iCisiXG4iCisiKiAnZ2l0IGFkZCAtLWlnbm9yZS1yZW1vdmFsIDxwYXRoc3BlYz4nLCB3aGljaCBpcyB0aGUgY3VycmVudCBkZWZhdWx0LFxuIgorIiAgaWdub3JlcyBwYXRocyB5b3UgcmVtb3ZlZCBmcm9tIHlvdXIgd29ya2luZyB0cmVlLlxuIgorIlxuIgorIiogJ2dpdCBhZGQgLS1hbGwgPHBhdGhzcGVjPicgd2lsbCBsZXQgeW91IGFsc28gcmVjb3JkIHRoZSByZW1vdmFscy5cbiIKKyJcbiIKKyJSdW4gJ2dpdCBzdGF0dXMnIHRvIGNoZWNrIHRoZSBwYXRocyB5b3UgcmVtb3ZlZCBmcm9tIHlvdXIgd29ya2luZyB0cmVlLlxuIgorbXNnc3RyICIiCisiU2llIGhhYmVuICdnaXQgYWRkJyB3ZWRlciBtaXQgJy1BICgtLWFsbCknIG5vY2ggbWl0ICctLWlnbm9yZS1yZW1vdmFsJ1xuIgorImF1c2dlZsO8aHJ0LiBEYXMgVmVyaGFsdGVuIGRlcyBLb21tYW5kb3Mgw6RuZGVydCBzaWNoIGluIEdpdCAyLjAgZHVyY2hcbiIKKyJCZXLDvGNrc2ljaHRpZ3VuZyBkZXIgZ2Vsw7ZzY2h0ZW4gUGZhZGUuXG4iCisiUGZhZGUgd2llICclcycsIGRpZSBpbSBBcmJlaXRzdmVyemVpY2huaXMgZ2Vsw7ZzY2h0IHd1cmRlbiwgd2VyZGVuIGluXG4iCisiZGllc2VyIFZlcnNpb24gdm9uIEdpdCBpZ25vcmllcnQuXG4iCisiXG4iCisiKiAnZ2l0IGFkZCAtLWlnbm9yZS1yZW1vdmFsIDxQZmFkc3BlemlmaWthdGlvbj4nLCB3YXMgZGVyIGFrdHVlbGxlXG4iCisiICBTdGFuZGFyZHdlcnQgaXN0LCBpZ25vcmllcnQgZ2Vsw7ZzY2h0ZSBQZmFkZSBpbSBBcmJlaXRzdmVyemVpY2huaXMuIgorIlxuIgorIiogJ2dpdCBhZGQgLS1hbGwgPFBmYWRzcGV6aWZpa2F0aW9uPicgYmVyw7xja3NpY2h0aWd0IGViZW5mYWxscyBnZWzDtnNjaHRlXG4iCisiICBQZmFkZS4iCisiXG4iCisiRsO8aHJlbiBTaWUgJ2dpdCBzdGF0dXMnIGF1cywgdW0gZGllIGdlbMO2c2NodGVuIFBmYWRlIHp1IMO8YmVycHLDvGZlbi5cbiIKKworIzogYnVpbHRpbi9hZGQuYzoxNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5leHBlY3RlZCBkaWZmIHN0YXR1cyAlYyIKIG1zZ3N0ciAidW5lcndhcnRldGVyIERpZmZlcmVuei1TdGF0dXMgJWMiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NjcgYnVpbHRpbi9jb21taXQuYzoyMjYKKyM6IGJ1aWx0aW4vYWRkLmM6MTQ5IGJ1aWx0aW4vY29tbWl0LmM6MjMzCiBtc2dpZCAidXBkYXRpbmcgZmlsZXMgZmFpbGVkIgogbXNnc3RyICJBa3R1YWxpc2llcnVuZyBkZXIgRGF0ZWllbiBmZWhsZ2VzY2hsYWdlbiIKIAotIzogYnVpbHRpbi9hZGQuYzo3NworIzogYnVpbHRpbi9hZGQuYzoxNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVtb3ZlICclcydcbiIKLW1zZ3N0ciAiZW50ZmVybmUgJyVzJ1xuIgorbXNnc3RyICJsw7ZzY2hlICclcydcbiIKIAotIzogYnVpbHRpbi9hZGQuYzoxNzYKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiUGF0aCAnJXMnIGlzIGluIHN1Ym1vZHVsZSAnJS4qcyciCi1tc2dzdHIgIlBmYWQgJyVzJyBiZWZpbmRldCBzaWNoIGluIFVudGVycHJvamVrdCAnJS4qcyciCi0KLSM6IGJ1aWx0aW4vYWRkLmM6MTkyCisjOiBidWlsdGluL2FkZC5jOjI1MwogbXNnaWQgIlVuc3RhZ2VkIGNoYW5nZXMgYWZ0ZXIgcmVmcmVzaGluZyB0aGUgaW5kZXg6IgogbXNnc3RyICIiCiAiTmljaHQgYmVyZWl0Z2VzdGVsbHRlIMOEbmRlcnVuZ2VuIG5hY2ggQWt0dWFsaXNpZXJ1bmcgZGVyIEJlcmVpdHN0ZWxsdW5nOiIKIAotIzogYnVpbHRpbi9hZGQuYzoxOTUgYnVpbHRpbi9hZGQuYzo0NTYgYnVpbHRpbi9ybS5jOjE4NgorIzogYnVpbHRpbi9hZGQuYzoyNTYgYnVpbHRpbi9hZGQuYzo1NzIgYnVpbHRpbi9ybS5jOjI3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoc3BlYyAnJXMnIGRpZCBub3QgbWF0Y2ggYW55IGZpbGVzIgogbXNnc3RyICJQZmFkc3BlemlmaWthdGlvbiAnJXMnIHN0aW1tdCBtaXQga2VpbmVuIERhdGVpZW4gw7xiZXJlaW4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MjA5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIiclcycgaXMgYmV5b25kIGEgc3ltYm9saWMgbGluayIKLW1zZ3N0ciAiJyVzJyBpc3Qgw7xiZXIgZWluZW0gc3ltYm9saXNjaGVuIExpbmsiCi0KLSM6IGJ1aWx0aW4vYWRkLmM6Mjc2CisjOiBidWlsdGluL2FkZC5jOjMzOQogbXNnaWQgIkNvdWxkIG5vdCByZWFkIHRoZSBpbmRleCIKIG1zZ3N0ciAiS29ubnRlIGRpZSBCZXJlaXRzdGVsbHVuZyBuaWNodCBsZXNlbiIKIAotIzogYnVpbHRpbi9hZGQuYzoyODYKKyM6IGJ1aWx0aW4vYWRkLmM6MzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmcuIgogbXNnc3RyICJLb25udGUgJyVzJyBuaWNodCB6dW0gU2NocmVpYmVuIMO2ZmZuZW4uIgogCi0jOiBidWlsdGluL2FkZC5jOjI5MAorIzogYnVpbHRpbi9hZGQuYzozNTMKIG1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgcGF0Y2giCiBtc2dzdHIgIktvbm50ZSBQYXRjaCBuaWNodCBzY2hyZWliZW4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mjk1CisjOiBidWlsdGluL2FkZC5jOjM1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgc3RhdCAnJXMnIgogbXNnc3RyICJLb25udGUgVmVyemVpY2huaXMgJyVzJyBuaWNodCBsZXNlbiIKIAotIzogYnVpbHRpbi9hZGQuYzoyOTcKKyM6IGJ1aWx0aW4vYWRkLmM6MzYwCiBtc2dpZCAiRW1wdHkgcGF0Y2guIEFib3J0ZWQuIgogbXNnc3RyICJMZWVyZXIgUGF0Y2guIEFiZ2Vicm9jaGVuLiIKIAotIzogYnVpbHRpbi9hZGQuYzozMDMKKyM6IGJ1aWx0aW4vYWRkLmM6MzY2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBhcHBseSAnJXMnIgogbXNnc3RyICJLb25udGUgJyVzJyBuaWNodCBhbndlbmRlbi4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzEyCisjOiBidWlsdGluL2FkZC5jOjM3NgogbXNnaWQgIlRoZSBmb2xsb3dpbmcgcGF0aHMgYXJlIGlnbm9yZWQgYnkgb25lIG9mIHlvdXIgLmdpdGlnbm9yZSBmaWxlczpcbiIKIG1zZ3N0ciAiIgotIkRpZSBmb2xnZW5kZW4gUGZhZGUgd2VyZGVuIGR1cmNoIGVpbmUgZGVpbmVyIFwiLmdpdGlnbm9yZVwiIERhdGVpZW4gIgorIkRpZSBmb2xnZW5kZW4gUGZhZGUgd2VyZGVuIGR1cmNoIGVpbmUgSWhyZXIgXCIuZ2l0aWdub3JlXCIgRGF0ZWllbiAiCiAiaWdub3JpZXJ0OlxuIgogCi0jOiBidWlsdGluL2FkZC5jOjM1MgorIzogYnVpbHRpbi9hZGQuYzozOTMgYnVpbHRpbi9jbGVhbi5jOjE2MSBidWlsdGluL2ZldGNoLmM6NzggYnVpbHRpbi9tdi5jOjYzCisjOiBidWlsdGluL3BydW5lLXBhY2tlZC5jOjc2IGJ1aWx0aW4vcHVzaC5jOjQyNSBidWlsdGluL3JlbW90ZS5jOjEyNTMKKyM6IGJ1aWx0aW4vcm0uYzoyMDYKK21zZ2lkICJkcnkgcnVuIgorbXNnc3RyICJQcm9iZWxhdWYiCisKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk0IGJ1aWx0aW4vYXBwbHkuYzo0NDA5IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1MiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo5NSBidWlsdGluL2ZzY2suYzo2MTMKKyM6IGJ1aWx0aW4vbG9nLmM6MTUxOCBidWlsdGluL212LmM6NjIgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTIKK21zZ2lkICJiZSB2ZXJib3NlIgorbXNnc3RyICJlcndlaXRlcnRlIEF1c2dhYmVuIgorCisjOiBidWlsdGluL2FkZC5jOjM5NgorbXNnaWQgImludGVyYWN0aXZlIHBpY2tpbmciCittc2dzdHIgImludGVyYWt0aXZlcyBBdXN3w6RobGVuIgorCisjOiBidWlsdGluL2FkZC5jOjM5NyBidWlsdGluL2NoZWNrb3V0LmM6MTA2MyBidWlsdGluL3Jlc2V0LmM6MjU4Cittc2dpZCAic2VsZWN0IGh1bmtzIGludGVyYWN0aXZlbHkiCittc2dzdHIgImludGVyYWt0aXYgQmVyZWljaGUgYXVzd8OkaGxlbiIKKworIzogYnVpbHRpbi9hZGQuYzozOTgKK21zZ2lkICJlZGl0IGN1cnJlbnQgZGlmZiBhbmQgYXBwbHkiCittc2dzdHIgImFrdHVlbGxlIFVudGVyc2NoaWVkZSBlZGl0aWVyZW4gdW5kIGFud2VuZGVuIgorCisjOiBidWlsdGluL2FkZC5jOjM5OQorbXNnaWQgImFsbG93IGFkZGluZyBvdGhlcndpc2UgaWdub3JlZCBmaWxlcyIKK21zZ3N0ciAiZXJsYXVidCBkYXMgSGluenVmw7xnZW4gYW5kZXJuZmFsbHMgaWdub3JpZXJ0ZXIgRGF0ZWllbiIKKworIzogYnVpbHRpbi9hZGQuYzo0MDAKK21zZ2lkICJ1cGRhdGUgdHJhY2tlZCBmaWxlcyIKK21zZ3N0ciAiYWt0dWFsaXNpZXJ0IGJlb2JhY2h0ZXRlIERhdGVpZW4iCisKKyM6IGJ1aWx0aW4vYWRkLmM6NDAxCittc2dpZCAicmVjb3JkIG9ubHkgdGhlIGZhY3QgdGhhdCB0aGUgcGF0aCB3aWxsIGJlIGFkZGVkIGxhdGVyIgorbXNnc3RyICJzcGVpY2hlcnQgbnVyLCBkYXNzIGRlciBQZmFkIHNww6R0ZXIgaGluenVnZWbDvGd0IHdlcmRlbiBzb2xsIgorCisjOiBidWlsdGluL2FkZC5jOjQwMgorbXNnaWQgImFkZCBjaGFuZ2VzIGZyb20gYWxsIHRyYWNrZWQgYW5kIHVudHJhY2tlZCBmaWxlcyIKK21zZ3N0ciAiIgorImbDvGd0IMOEbmRlcnVuZ2VuIHZvbiBhbGxlbiBiZW9iYWNodGV0ZW4gdW5kIHVuYmVvYmFjaHRldGVuIERhdGVpZW4gaGluenUiCisKKyMuIHRha2VzIG5vIGFyZ3VtZW50cworIzogYnVpbHRpbi9hZGQuYzo0MDUKK21zZ2lkICJpZ25vcmUgcGF0aHMgcmVtb3ZlZCBpbiB0aGUgd29ya2luZyB0cmVlIChzYW1lIGFzIC0tbm8tYWxsKSIKK21zZ3N0ciAiaWdub3JpZXJ0IGdlbMO2c2NodGUgUGZhZGUgaW0gQXJiZWl0c3ZlcnplaWNobmlzIChnZW5hdSB3aWUgIgorIi0tbm8tYWxsKSIKKworIzogYnVpbHRpbi9hZGQuYzo0MDcKK21zZ2lkICJkb24ndCBhZGQsIG9ubHkgcmVmcmVzaCB0aGUgaW5kZXgiCittc2dzdHIgImbDvGd0IG5pY2h0cyBoaW56dSwgYWt0dWFsaXNpZXJ0IG51ciBkaWUgQmVyZWl0c3RlbGx1bmciCisKKyM6IGJ1aWx0aW4vYWRkLmM6NDA4Cittc2dpZCAianVzdCBza2lwIGZpbGVzIHdoaWNoIGNhbm5vdCBiZSBhZGRlZCBiZWNhdXNlIG9mIGVycm9ycyIKK21zZ3N0ciAiIgorIsO8YmVyc3ByaW5ndCBEYXRlaWVuLCBkaWUgYXVmZ3J1bmQgdm9uIEZlaGxlcm4gbmljaHQgaGluenVnZWbDvGd0IHdlcmRlbiAiCisia29ubnRlbiIKKworIzogYnVpbHRpbi9hZGQuYzo0MDkKK21zZ2lkICJjaGVjayBpZiAtIGV2ZW4gbWlzc2luZyAtIGZpbGVzIGFyZSBpZ25vcmVkIGluIGRyeSBydW4iCittc2dzdHIgInByw7xmdCBvYiAtIGF1Y2ggZmVobGVuZGUgLSBEYXRlaWVuIGltIFByb2JlbGF1ZiBpZ25vcmllcnQgd2VyZGVuIgorCisjOiBidWlsdGluL2FkZC5jOjQzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2UgLWYgaWYgeW91IHJlYWxseSB3YW50IHRvIGFkZCB0aGVtLlxuIgotbXNnc3RyICJWZXJ3ZW5kZSAtZiB3ZW5uIGR1IGRpZXNlIHdpcmtsaWNoIGhpbnp1ZsO8Z2VuIG3DtmNodGVzdC5cbiIKK21zZ3N0ciAiVmVyd2VuZGVuIFNpZSAtZiB3ZW5uIFNpZSBkaWVzZSB3aXJrbGljaCBoaW56dWbDvGdlbiBtw7ZjaHRlbi5cbiIKIAotIzogYnVpbHRpbi9hZGQuYzozNTMKKyM6IGJ1aWx0aW4vYWRkLmM6NDMyCiBtc2dpZCAibm8gZmlsZXMgYWRkZWQiCiBtc2dzdHIgImtlaW5lIERhdGVpZW4gaGluenVnZWbDvGd0IgogCi0jOiBidWlsdGluL2FkZC5jOjM1OQorIzogYnVpbHRpbi9hZGQuYzo0MzgKIG1zZ2lkICJhZGRpbmcgZmlsZXMgZmFpbGVkIgogbXNnc3RyICJIaW56dWbDvGdlbiB2b24gRGF0ZWllbiBmZWhsZ2VzY2hsYWdlbiIKIAotIzogYnVpbHRpbi9hZGQuYzozOTEKKyM6IGJ1aWx0aW4vYWRkLmM6NDc3CiBtc2dpZCAiLUEgYW5kIC11IGFyZSBtdXR1YWxseSBpbmNvbXBhdGlibGUiCi1tc2dzdHIgIi1BIHVuZCAtdSBzaW5kIHp1ZWluYW5kZXIgaW5rb21wYXRpYmVsIgorbXNnc3RyICJEaWUgT3B0aW9uZW4gLUEgdW5kIC11IHNpbmQgenVlaW5hbmRlciBpbmtvbXBhdGliZWwuIgogCi0jOiBidWlsdGluL2FkZC5jOjM5MworIzogYnVpbHRpbi9hZGQuYzo0OTUKIG1zZ2lkICJPcHRpb24gLS1pZ25vcmUtbWlzc2luZyBjYW4gb25seSBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggLS1kcnktcnVuIgogbXNnc3RyICIiCi0iRGllIE9wdGlvbiAtLWlnbm9yZS1taXNzaW5nIGthbm4gbnVyIHp1c2FtbWVuIG1pdCAtLWRyeS1ydW4gYmVudXR6dCB3ZXJkZW4uIgorIkRpZSBPcHRpb24gLS1pZ25vcmUtbWlzc2luZyBrYW5uIG51ciB6dXNhbW1lbiBtaXQgLS1kcnktcnVuIHZlcndlbmRldCB3ZXJkZW4uIgogCi0jOiBidWlsdGluL2FkZC5jOjQxMworIzogYnVpbHRpbi9hZGQuYzo1MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90aGluZyBzcGVjaWZpZWQsIG5vdGhpbmcgYWRkZWQuXG4iCiBtc2dzdHIgIk5pY2h0cyBzcGV6aWZpemllcnQsIG5pY2h0cyBoaW56dWdlZsO8Z3QuXG4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDE0CisjOiBidWlsdGluL2FkZC5jOjUyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJNYXliZSB5b3Ugd2FudGVkIHRvIHNheSAnZ2l0IGFkZCAuJz9cbiIKLW1zZ3N0ciAiV29sbHRlc3QgZHUgdmllbGxlaWNodCAnZ2l0IGFkZCAuJyBzYWdlbj9cbiIKK21zZ3N0ciAiV29sbHRlbiBTaWUgdmllbGxlaWNodCAnZ2l0IGFkZCAuJyBzYWdlbj9cbiIKIAotIzogYnVpbHRpbi9hZGQuYzo0MjAgYnVpbHRpbi9jbGVhbi5jOjk1IGJ1aWx0aW4vY29tbWl0LmM6Mjg2IGJ1aWx0aW4vbXYuYzo4MgotIzogYnVpbHRpbi9ybS5jOjE2MgorIzogYnVpbHRpbi9hZGQuYzo1MzIgYnVpbHRpbi9jaGVjay1pZ25vcmUuYzo2NiBidWlsdGluL2NsZWFuLmM6MjA0CisjOiBidWlsdGluL2NvbW1pdC5jOjI5MyBidWlsdGluL212LmM6ODIgYnVpbHRpbi9ybS5jOjIzNQogbXNnaWQgImluZGV4IGZpbGUgY29ycnVwdCIKIG1zZ3N0ciAiQmVyZWl0c3RlbGx1bmdzZGF0ZWkgYmVzY2jDpGRpZ3QiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDc2IGJ1aWx0aW4vYXBwbHkuYzo0MTA4IGJ1aWx0aW4vbXYuYzoyMjkgYnVpbHRpbi9ybS5jOjI2MAorIzogYnVpbHRpbi9hZGQuYzo2MDQgYnVpbHRpbi9hcHBseS5jOjQ1MDUgYnVpbHRpbi9tdi5jOjIyOSBidWlsdGluL3JtLmM6MzcwCiBtc2dpZCAiVW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgogbXNnc3RyICJLb25udGUgbmV1ZSBCZXJlaXRzdGVsbHVuZ3NkYXRlaSBuaWNodCBzY2hyZWliZW4uIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NTMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo1NwogbXNnaWQgImdpdCBhcHBseSBbb3B0aW9uc10gWzxwYXRjaD4uLi5dIgogbXNnc3RyICJnaXQgYXBwbHkgW09wdGlvbmVuXSBbPFBhdGNoPi4uLl0iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxMDYKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxMTAKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIHdoaXRlc3BhY2Ugb3B0aW9uICclcyciCiBtc2dzdHIgIm5pY2h0IGVya2FubnRlIE9wdGlvbiBmw7xyIExlZXJ6ZWljaGVuOiAnJXMnIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTIxCisjOiBidWlsdGluL2FwcGx5LmM6MTI1CiAjLCBjLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXplZCB3aGl0ZXNwYWNlIGlnbm9yZSBvcHRpb24gJyVzJyIKIG1zZ3N0ciAibmljaHQgZXJrYW5udGUgT3B0aW9uIHp1bSBJZ25vcmllcmVuIHZvbiBMZWVyemVpY2hlbjogJyVzJyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjgxNQorIzogYnVpbHRpbi9hcHBseS5jOjgyMwogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgcHJlcGFyZSB0aW1lc3RhbXAgcmVnZXhwICVzIgogbXNnc3RyICJLYW5uIHJlZ3Vsw6RyZW4gQXVzZHJ1Y2sgZsO8ciBaZWl0c3RlbXBlbCAlcyBuaWNodCB2ZXJhcmJlaXRlbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjgyNAorIzogYnVpbHRpbi9hcHBseS5jOjgzMgogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWdleGVjIHJldHVybmVkICVkIGZvciBpbnB1dDogJXMiCiBtc2dzdHIgIkF1c2bDvGhydW5nIGRlcyByZWd1bMOkcmVuIEF1c2RydWNrcyBnYWIgJWQgenVyw7xjay4gRWluZ2FiZTogJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo5MDUKKyM6IGJ1aWx0aW4vYXBwbHkuYzo5MTMKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGZpbmQgZmlsZW5hbWUgaW4gcGF0Y2ggYXQgbGluZSAlZCIKIG1zZ3N0ciAiS29ubnRlIGtlaW5lbiBEYXRlaW5hbWVuIGluIFplaWxlICVkIGRlcyBQYXRjaGVzIGZpbmRlbi4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo5MzcKKyM6IGJ1aWx0aW4vYXBwbHkuYzo5NDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0IGFwcGx5OiBiYWQgZ2l0LWRpZmYgLSBleHBlY3RlZCAvZGV2L251bGwsIGdvdCAlcyBvbiBsaW5lICVkIgogbXNnc3RyICIiCiAiZ2l0IGFwcGx5OiB1bmfDvGx0aWdlcyAnZ2l0LWRpZmYnIC0gZXJ3YXJ0ZXRlIC9kZXYvbnVsbCwgZXJoaWVsdCAlcyBpbiBaZWlsZSAiCiAiJWQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo5NDEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo5NDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0IGFwcGx5OiBiYWQgZ2l0LWRpZmYgLSBpbmNvbnNpc3RlbnQgbmV3IGZpbGVuYW1lIG9uIGxpbmUgJWQiCiBtc2dzdHIgIiIKICJnaXQgYXBwbHk6IHVuZ8O8bHRpZ2VzICdnaXQtZGlmZicgLSBJbmtvbnNpc3RlbnRlciBuZXVlciBEYXRlaW5hbWUgaW4gWmVpbGUgJWQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo5NDIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo5NTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0IGFwcGx5OiBiYWQgZ2l0LWRpZmYgLSBpbmNvbnNpc3RlbnQgb2xkIGZpbGVuYW1lIG9uIGxpbmUgJWQiCiBtc2dzdHIgIiIKICJnaXQgYXBwbHk6IHVuZ8O8bHRpZ2VzICdnaXQtZGlmZicgLSBJbmtvbnNpc3RlbnRlciBhbHRlciBEYXRlaW5hbWUgaW4gWmVpbGUgJWQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo5NDkKKyM6IGJ1aWx0aW4vYXBwbHkuYzo5NTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0IGFwcGx5OiBiYWQgZ2l0LWRpZmYgLSBleHBlY3RlZCAvZGV2L251bGwgb24gbGluZSAlZCIKIG1zZ3N0ciAiZ2l0IGFwcGx5OiB1bmfDvGx0aWdlcyAnZ2l0LWRpZmYnIC0gZXJ3YXJ0ZXRlIC9kZXYvbnVsbCBpbiBaZWlsZSAlZCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjEzOTQKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNDIyCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlY291bnQ6IHVuZXhwZWN0ZWQgbGluZTogJS4qcyIKIG1zZ3N0ciAicmVjb3VudDogdW5lcndhcnRldGUgWmVpbGU6ICUuKnMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNDUxCisjOiBidWlsdGluL2FwcGx5LmM6MTQ3OQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRjaCBmcmFnbWVudCB3aXRob3V0IGhlYWRlciBhdCBsaW5lICVkOiAlLipzIgogbXNnc3RyICJQYXRjaC1GcmFnbWVudCBvaG5lIEtvcGZiZXJlaWNoIGJlaSBaZWlsZSAlZDogJS4qcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE0NjgKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNDk2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJnaXQgZGlmZiBoZWFkZXIgbGFja3MgZmlsZW5hbWUgaW5mb3JtYXRpb24gd2hlbiByZW1vdmluZyAlZCBsZWFkaW5nIHBhdGhuYW1lICIKQEAgLTEwOTksNzAgKzE5NjgsNjYgQEAKICJEZW0gS29wZmJlcmVpY2ggdm9uIFwiZ2l0IGRpZmZcIiBmZWhsZW4gSW5mb3JtYXRpb25lbiB6dW0gRGF0ZWluYW1lbiwgd2VubiAiCiAiJWQgdm9yYW5nZXN0ZWxsdGUgVGVpbGUgZGVzIFBmYWRlcyBlbnRmZXJudCB3ZXJkZW4gKFplaWxlICVkKSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE2MjgKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU2CiBtc2dpZCAibmV3IGZpbGUgZGVwZW5kcyBvbiBvbGQgY29udGVudHMiCiBtc2dzdHIgIm5ldWUgRGF0ZWkgaMOkbmd0IHZvbiBhbHRlbiBJbmhhbHRlbiBhYiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE2MzAKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU4CiBtc2dpZCAiZGVsZXRlZCBmaWxlIHN0aWxsIGhhcyBjb250ZW50cyIKIG1zZ3N0ciAiZW50ZmVybnRlIERhdGVpIGhhdCBub2NoIEluaGFsdGUiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU2CisjOiBidWlsdGluL2FwcGx5LmM6MTY4NAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3JydXB0IHBhdGNoIGF0IGxpbmUgJWQiCiBtc2dzdHIgImZlaGxlcmhhZnRlciBQYXRjaCBiZWkgWmVpbGUgJWQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNjkyCisjOiBidWlsdGluL2FwcGx5LmM6MTcyMAogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgZmlsZSAlcyBkZXBlbmRzIG9uIG9sZCBjb250ZW50cyIKIG1zZ3N0ciAibmV1ZSBEYXRlaSAlcyBow6RuZ3Qgdm9uIGFsdGVuIEluaGFsdGVuIGFiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTY5NAorIzogYnVpbHRpbi9hcHBseS5jOjE3MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZGVsZXRlZCBmaWxlICVzIHN0aWxsIGhhcyBjb250ZW50cyIKIG1zZ3N0ciAiZW50ZmVybnRlIERhdGVpICVzIGhhdCBub2NoIEluaGFsdGUiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNjk3CisjOiBidWlsdGluL2FwcGx5LmM6MTcyNQogIywgYy1mb3JtYXQKIG1zZ2lkICIqKiB3YXJuaW5nOiBmaWxlICVzIGJlY29tZXMgZW1wdHkgYnV0IGlzIG5vdCBkZWxldGVkIgogbXNnc3RyICIqKiBXYXJudW5nOiBEYXRlaSAlcyB3aXJkIGxlZXIsIGFiZXIgbmljaHQgZW50ZmVybnQuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTg0MworIzogYnVpbHRpbi9hcHBseS5jOjE4NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29ycnVwdCBiaW5hcnkgcGF0Y2ggYXQgbGluZSAlZDogJS4qcyIKIG1zZ3N0ciAiZmVobGVyaGFmdGVyIEJpbsOkci1QYXRjaCBiZWkgWmVpbGUgJWQ6ICUuKnMiCiAKICMuIHRoZXJlIGhhcyB0byBiZSBvbmUgaHVuayAoZm9yd2FyZCBodW5rKQotIzogYnVpbHRpbi9hcHBseS5jOjE4NzIKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxOTAwCiAjLCBjLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXplZCBiaW5hcnkgcGF0Y2ggYXQgbGluZSAlZCIKIG1zZ3N0ciAibmljaHQgZXJrYW5udGVyIEJpbsOkci1QYXRjaCBiZWkgWmVpbGUgJWQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxOTU4CisjOiBidWlsdGluL2FwcGx5LmM6MTk4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRjaCB3aXRoIG9ubHkgZ2FyYmFnZSBhdCBsaW5lICVkIgogbXNnc3RyICJQYXRjaCBtaXQgbnV0emxvc2VuIEluZm9ybWF0aW9uZW4gYmVpIFplaWxlICVkIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjA0OAorIzogYnVpbHRpbi9hcHBseS5jOjIwNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHJlYWQgc3ltbGluayAlcyIKIG1zZ3N0ciAia29ubnRlIHN5bWJvbGlzY2hlIFZlcmtuw7xwZnVuZyAlcyBuaWNodCBsZXNlbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjIwNTIKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyMDgwCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBvcGVuIG9yIHJlYWQgJXMiCiBtc2dzdHIgImtvbm50ZSAlcyBuaWNodCDDtmZmbmVuIG9kZXIgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyMTIzCi1tc2dpZCAib29wcyIKLW1zZ3N0ciAiVXBzIgotCi0jOiBidWlsdGluL2FwcGx5LmM6MjY0NQorIzogYnVpbHRpbi9hcHBseS5jOjI2ODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBzdGFydCBvZiBsaW5lOiAnJWMnIgogbXNnc3RyICJVbmfDvGx0aWdlciBaZWlsZW5hbmZhbmc6ICclYyciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyNzYzCisjOiBidWlsdGluL2FwcGx5LmM6MjgwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJIdW5rICMlZCBzdWNjZWVkZWQgYXQgJWQgKG9mZnNldCAlZCBsaW5lKS4iCiBtc2dpZF9wbHVyYWwgIkh1bmsgIyVkIHN1Y2NlZWRlZCBhdCAlZCAob2Zmc2V0ICVkIGxpbmVzKS4iCkBAIC0xMTcwLDEyICsyMDM1LDEyIEBACiBtc2dzdHJbMV0gIiIKICJQYXRjaC1CZXJlaWNoICMlZCBlcmZvbGdyZWljaCBhbmdld2VuZGV0IGJlaSAlZCAoJWQgWmVpbGVuIHZlcnNldHp0KSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI3NzUKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbnRleHQgcmVkdWNlZCB0byAoJWxkLyVsZCkgdG8gYXBwbHkgZnJhZ21lbnQgYXQgJWQiCiBtc2dzdHIgIktvbnRleHQgcmVkdXppZXJ0IHp1ICglbGQvJWxkKSB1bSBQYXRjaC1CZXJlaWNoIGJlaSAlZCBhbnp1d2VuZGVuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mjc4MQorIzogYnVpbHRpbi9hcHBseS5jOjI4MjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIndoaWxlIHNlYXJjaGluZyBmb3I6XG4iCkBAIC0xMTg0LDMyOSArMjA0OSwzNDAgQEAKICJiZWkgZGVyIFN1Y2hlIG5hY2g6XG4iCiAiJS4qcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI4MDAKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODQzCiAjLCBjLWZvcm1hdAogbXNnaWQgIm1pc3NpbmcgYmluYXJ5IHBhdGNoIGRhdGEgZm9yICclcyciCiBtc2dzdHIgImtlaW5lIERhdGVuIGluIEJpbsOkci1QYXRjaCBmw7xyICclcyciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyOTAzCisjOiBidWlsdGluL2FwcGx5LmM6Mjk0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJiaW5hcnkgcGF0Y2ggZG9lcyBub3QgYXBwbHkgdG8gJyVzJyIKIG1zZ3N0ciAiS29ubnRlIEJpbsOkci1QYXRjaCBuaWNodCBhdWYgJyVzJyBhbndlbmRlbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI5MDkKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyOTUyCiAjLCBjLWZvcm1hdAogbXNnaWQgImJpbmFyeSBwYXRjaCB0byAnJXMnIGNyZWF0ZXMgaW5jb3JyZWN0IHJlc3VsdCAoZXhwZWN0aW5nICVzLCBnb3QgJXMpIgogbXNnc3RyICIiCiAiQmluw6RyLVBhdGNoIGbDvHIgJyVzJyBlcnpldWd0IGZhbHNjaGVzIEVyZ2VibmlzIChlcndhcnRldGUgJXMsIGJla2FtICVzKSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI5MzAKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyOTczCiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGNoIGZhaWxlZDogJXM6JWxkIgogbXNnc3RyICJBbndlbmR1bmcgZGVzIFBhdGNoZXMgZmVobGdlc2NobGFnZW46ICVzOiVsZCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMwNDUKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMDk1CiAjLCBjLWZvcm1hdAotbXNnaWQgInBhdGNoICVzIGhhcyBiZWVuIHJlbmFtZWQvZGVsZXRlZCIKLW1zZ3N0ciAiUGF0Y2ggJXMgd3VyZGUgdW1iZW5hbm50L2dlbMO2c2NodCIKK21zZ2lkICJjYW5ub3QgY2hlY2tvdXQgJXMiCittc2dzdHIgImthbm4gJXMgbmljaHQgYXVzY2hlY2tlbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMwNTIgYnVpbHRpbi9hcHBseS5jOjMwNjkKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMTQwIGJ1aWx0aW4vYXBwbHkuYzozMTQ5IGJ1aWx0aW4vYXBwbHkuYzozMTkzCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlYWQgb2YgJXMgZmFpbGVkIgogbXNnc3RyICJLb25udGUgJXMgbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMDg0Ci1tc2dpZCAicmVtb3ZhbCBwYXRjaCBsZWF2ZXMgZmlsZSBjb250ZW50cyIKLW1zZ3N0ciAiTMO2c2NoLVBhdGNoIGhpbnRlcmzDpHNzdCBEYXRlaWluaGFsdGUiCi0KLSM6IGJ1aWx0aW4vYXBwbHkuYzozMTA1CisjOiBidWlsdGluL2FwcGx5LmM6MzE3MyBidWlsdGluL2FwcGx5LmM6MzM5NQogIywgYy1mb3JtYXQKLW1zZ2lkICIlczogYWxyZWFkeSBleGlzdHMgaW4gd29ya2luZyBkaXJlY3RvcnkiCi1tc2dzdHIgIiVzIGV4aXN0aWVydCBiZXJlaXRzIGltIEFyYmVpdHN2ZXJ6ZWljaG5pcyIKK21zZ2lkICJwYXRoICVzIGhhcyBiZWVuIHJlbmFtZWQvZGVsZXRlZCIKK21zZ3N0ciAiUGZhZCAlcyB3dXJkZSB1bWJlbmFubnQvZ2Vsw7ZzY2h0IgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzE0MwotIywgYy1mb3JtYXQKLW1zZ2lkICIlczogaGFzIGJlZW4gZGVsZXRlZC9yZW5hbWVkIgotbXNnc3RyICIlcyB3dXJkZSBnZWzDtnNjaHQvdW1iZW5hbm50IgotCi0jOiBidWlsdGluL2FwcGx5LmM6MzE0OCBidWlsdGluL2FwcGx5LmM6MzE3OQotIywgYy1mb3JtYXQKLW1zZ2lkICIlczogJXMiCi1tc2dzdHIgIiVzOiAlcyIKLQotIzogYnVpbHRpbi9hcHBseS5jOjMxNTkKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMjU0IGJ1aWx0aW4vYXBwbHkuYzozNDA5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBkb2VzIG5vdCBleGlzdCBpbiBpbmRleCIKIG1zZ3N0ciAiJXMgaXN0IG5pY2h0IGJlcmVpdGdlc3RlbGx0IgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzE3MworIzogYnVpbHRpbi9hcHBseS5jOjMyNTggYnVpbHRpbi9hcHBseS5jOjM0MDEgYnVpbHRpbi9hcHBseS5jOjM0MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIgorbXNnc3RyICIlczogJXMiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMjYzIGJ1aWx0aW4vYXBwbHkuYzozNDE3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBkb2VzIG5vdCBtYXRjaCBpbmRleCIKIG1zZ3N0ciAiJXMgZW50c3ByaWNodCBuaWNodCBkZXIgQmVyZWl0c3RlbGx1bmciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMTkwCisjOiBidWlsdGluL2FwcGx5LmM6MzM2NQorbXNnaWQgInJlbW92YWwgcGF0Y2ggbGVhdmVzIGZpbGUgY29udGVudHMiCittc2dzdHIgIkzDtnNjaC1QYXRjaCBoaW50ZXJsw6Rzc3QgRGF0ZWlpbmhhbHRlIgorCisjOiBidWlsdGluL2FwcGx5LmM6MzQzNAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogd3JvbmcgdHlwZSIKIG1zZ3N0ciAiJXM6IGZhbHNjaGVyIFR5cCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMxOTIKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNDM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGhhcyB0eXBlICVvLCBleHBlY3RlZCAlbyIKIG1zZ3N0ciAiJXMgaXN0IHZvbSBUeXAgJW8sIGVyd2FydGV0ZSAlbyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyNDcKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTM3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBhbHJlYWR5IGV4aXN0cyBpbiBpbmRleCIKIG1zZ3N0ciAiJXMgaXN0IGJlcmVpdHMgYmVyZWl0Z2VzdGVsbHQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMjY3CisjOiBidWlsdGluL2FwcGx5LmM6MzU0MAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogYWxyZWFkeSBleGlzdHMgaW4gd29ya2luZyBkaXJlY3RvcnkiCittc2dzdHIgIiVzIGV4aXN0aWVydCBiZXJlaXRzIGltIEFyYmVpdHN2ZXJ6ZWljaG5pcyIKKworIzogYnVpbHRpbi9hcHBseS5jOjM1NjAKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IG1vZGUgKCVvKSBvZiAlcyBkb2VzIG5vdCBtYXRjaCBvbGQgbW9kZSAoJW8pIgogbXNnc3RyICJuZXVlciBNb2R1cyAoJW8pIHZvbiAlcyBlbnRzcHJpY2h0IG5pY2h0IGRlbSBhbHRlbiBNb2R1cyAoJW8pIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzI3MgorIzogYnVpbHRpbi9hcHBseS5jOjM1NjUKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IG1vZGUgKCVvKSBvZiAlcyBkb2VzIG5vdCBtYXRjaCBvbGQgbW9kZSAoJW8pIG9mICVzIgogbXNnc3RyICJuZXVlciBNb2R1cyAoJW8pIHZvbiAlcyBlbnRzcHJpY2h0IG5pY2h0IGRlbSBhbHRlbiBNb2R1cyAoJW8pIHZvbiAlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyODAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTczCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBwYXRjaCBkb2VzIG5vdCBhcHBseSIKIG1zZ3N0ciAiJXM6IFBhdGNoIGtvbm50ZSBuaWNodCBhbmdld2VuZGV0IHdlcmRlbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyOTMKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNoZWNraW5nIHBhdGNoICVzLi4uIgogbXNnc3RyICJQcsO8ZmUgUGF0Y2ggJXMuLi4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMzQ4IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTIgYnVpbHRpbi9yZXNldC5jOjE1OAorIzogYnVpbHRpbi9hcHBseS5jOjM2NzkgYnVpbHRpbi9jaGVja291dC5jOjIxNiBidWlsdGluL3Jlc2V0LmM6MTI0CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1ha2VfY2FjaGVfZW50cnkgZmFpbGVkIGZvciBwYXRoICclcyciCiBtc2dzdHIgIm1ha2VfY2FjaGVfZW50cnkgZsO8ciBQZmFkICclcycgZmVobGdlc2NobGFnZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNDkxCisjOiBidWlsdGluL2FwcGx5LmM6MzgyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcmVtb3ZlICVzIGZyb20gaW5kZXgiCiBtc2dzdHIgImtvbm50ZSAlcyBuaWNodCBhdXMgZGVyIEJlcmVpdHN0ZWxsdW5nIGVudGZlcm5lbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1MTgKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODUwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvcnJ1cHQgcGF0Y2ggZm9yIHN1YnByb2plY3QgJXMiCiBtc2dzdHIgImZlaGxlcmhhZnRlciBQYXRjaCBmw7xyIFVudGVycHJvamVrdCAlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1MjIKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODU0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBzdGF0IG5ld2x5IGNyZWF0ZWQgZmlsZSAnJXMnIgogbXNnc3RyICJrb25udGUgbmV1IGVyc3RlbGx0ZSBEYXRlaSAnJXMnIG5pY2h0IGxlc2VuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzUyNworIzogYnVpbHRpbi9hcHBseS5jOjM4NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGNyZWF0ZSBiYWNraW5nIHN0b3JlIGZvciBuZXdseSBjcmVhdGVkIGZpbGUgJXMiCiBtc2dzdHIgImthbm4gaW50ZXJuZW4gU3BlaWNoZXIgZsO8ciBlYmVuIGVyc3RlbGx0ZSBEYXRlaSAlcyBuaWNodCBlcnpldWdlbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1MzAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODYyIGJ1aWx0aW4vYXBwbHkuYzozOTcwCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBhZGQgY2FjaGUgZW50cnkgZm9yICVzIgogbXNnc3RyICJrYW5uIGbDvHIgJXMga2VpbmVuIEVpbnRyYWcgaW4gZGVuIFp3aXNjaGVuc3BlaWNoZXIgaGluenVmw7xnZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTYzCisjOiBidWlsdGluL2FwcGx5LmM6Mzg5NQogIywgYy1mb3JtYXQKIG1zZ2lkICJjbG9zaW5nIGZpbGUgJyVzJyIKIG1zZ3N0ciAic2NobGllw59lIERhdGVpICclcyciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNjEyCisjOiBidWlsdGluL2FwcGx5LmM6Mzk0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgZmlsZSAnJXMnIG1vZGUgJW8iCiBtc2dzdHIgImtvbm50ZSBEYXRlaSAnJXMnIG1pdCBNb2R1cyAlbyBuaWNodCBzY2hyZWliZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNjY4CisjOiBidWlsdGluL2FwcGx5LmM6NDAzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJBcHBsaWVkIHBhdGNoICVzIGNsZWFubHkuIgogbXNnc3RyICJQYXRjaCAlcyBzYXViZXIgYW5nZXdlbmRldCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM2NzYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDM5CiBtc2dpZCAiaW50ZXJuYWwgZXJyb3IiCiBtc2dzdHIgImludGVybmVyIEZlaGxlciIKIAogIy4gU2F5IHRoaXMgZXZlbiB3aXRob3V0IC0tdmVyYm9zZQotIzogYnVpbHRpbi9hcHBseS5jOjM2NzkKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFwcGx5aW5nIHBhdGNoICUlcyB3aXRoICVkIHJlamVjdC4uLiIKIG1zZ2lkX3BsdXJhbCAiQXBwbHlpbmcgcGF0Y2ggJSVzIHdpdGggJWQgcmVqZWN0cy4uLiIKIG1zZ3N0clswXSAiV2VuZGUgUGF0Y2ggJSVzIG1pdCAlZCBadXLDvGNrd2Vpc3VuZyBhbi4uLiIKIG1zZ3N0clsxXSAiV2VuZGUgUGF0Y2ggJSVzIG1pdCAlZCBadXLDvGNrd2Vpc3VuZ2VuIGFuLi4uIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzY4OQorIzogYnVpbHRpbi9hcHBseS5jOjQwNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAidHJ1bmNhdGluZyAucmVqIGZpbGVuYW1lIHRvICUuKnMucmVqIgogbXNnc3RyICJWZXJrw7xyemUgTmFtZSB2b24gLnJlaiBEYXRlaSB6dSAlLipzLnJlaiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM3MTAKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDczCiAjLCBjLWZvcm1hdAogbXNnaWQgIkh1bmsgIyVkIGFwcGxpZWQgY2xlYW5seS4iCiBtc2dzdHIgIlBhdGNoLUJlcmVpY2ggIyVkIHNhdWJlciBhbmdld2VuZGV0LiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM3MTMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlamVjdGVkIGh1bmsgIyVkLiIKIG1zZ3N0ciAiUGF0Y2gtQmVyZWljaCAjJWQgenVyw7xja2dld2llc2VuLiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4NDQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MjI2CiBtc2dpZCAidW5yZWNvZ25pemVkIGlucHV0IgogbXNnc3RyICJuaWNodCBlcmthbm50ZSBFaW5nYWJlIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzg1NQorIzogYnVpbHRpbi9hcHBseS5jOjQyMzcKIG1zZ2lkICJ1bmFibGUgdG8gcmVhZCBpbmRleCBmaWxlIgogbXNnc3RyICJLb25udGUgQmVyZWl0c3RlbGx1bmdzZGF0ZWkgbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTcwIGJ1aWx0aW4vYXBwbHkuYzozOTczCisjOiBidWlsdGluL2FwcGx5LmM6NDM1NiBidWlsdGluL2FwcGx5LmM6NDM1OSBidWlsdGluL2Nsb25lLmM6OTIKKyM6IGJ1aWx0aW4vZmV0Y2guYzo2MwogbXNnaWQgInBhdGgiCiBtc2dzdHIgIlBmYWQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTcxCisjOiBidWlsdGluL2FwcGx5LmM6NDM1NwogbXNnaWQgImRvbid0IGFwcGx5IGNoYW5nZXMgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhdGgiCiBtc2dzdHIgIndlbmRldCBrZWluZSDDhG5kZXJ1bmdlbiBpbSBhbmdlZ2ViZW5lbiBQZmFkIGFuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk3NAorIzogYnVpbHRpbi9hcHBseS5jOjQzNjAKIG1zZ2lkICJhcHBseSBjaGFuZ2VzIG1hdGNoaW5nIHRoZSBnaXZlbiBwYXRoIgogbXNnc3RyICJ3ZW5kZXQgw4RuZGVydW5nZW4gbnVyIGltIGFuZ2VnZWJlbmVuIFBmYWQgYW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTc2CisjOiBidWlsdGluL2FwcGx5LmM6NDM2MgogbXNnaWQgIm51bSIKIG1zZ3N0ciAiQW56YWhsIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk3NworIzogYnVpbHRpbi9hcHBseS5jOjQzNjMKIG1zZ2lkICJyZW1vdmUgPG51bT4gbGVhZGluZyBzbGFzaGVzIGZyb20gdHJhZGl0aW9uYWwgZGlmZiBwYXRocyIKIG1zZ3N0ciAiIgotImVudGZlcm50IDxBbnphaGw+IHZvcnJhbmdlc3RlbGx0ZSBTY2hyw6Rnc3RyaWNoZSB2b24gaGVya8O2bW1saWNoZW4gIgorImVudGZlcm50IDxBbnphaGw+IHZvcmFuZ2VzdGVsbHRlIFNjaHLDpGdzdHJpY2hlIHZvbiBoZXJrw7ZtbWxpY2hlbiAiCiAiRGlmZmVyZW56cGZhZGVuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk4MAorIzogYnVpbHRpbi9hcHBseS5jOjQzNjYKIG1zZ2lkICJpZ25vcmUgYWRkaXRpb25zIG1hZGUgYnkgdGhlIHBhdGNoIgogbXNnc3RyICJpZ25vcmllcnQgaGluenVnZWbDvGd0ZSBaZWlsZW4gZGVzIFBhdGNoZXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTgyCisjOiBidWlsdGluL2FwcGx5LmM6NDM2OAogbXNnaWQgImluc3RlYWQgb2YgYXBwbHlpbmcgdGhlIHBhdGNoLCBvdXRwdXQgZGlmZnN0YXQgZm9yIHRoZSBpbnB1dCIKIG1zZ3N0ciAiIgogImFuc3RhdHQgZGVyIEFud2VuZHVuZyBkZXMgUGF0Y2hlcywgd2lyZCBkZXIgXCJkaWZmc3RhdFwiIGbDvHIgZGllIEVpbmdhYmUgIgogImF1c2dlZ2ViZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTg2Ci1tc2dpZCAic2hvd3MgbnVtYmVyIG9mIGFkZGVkIGFuZCBkZWxldGVkIGxpbmVzIGluIGRlY2ltYWwgbm90YXRpb24iCisjOiBidWlsdGluL2FwcGx5LmM6NDM3MgorbXNnaWQgInNob3cgbnVtYmVyIG9mIGFkZGVkIGFuZCBkZWxldGVkIGxpbmVzIGluIGRlY2ltYWwgbm90YXRpb24iCiBtc2dzdHIgIiIKICJ6ZWlndCBkaWUgQW56YWhsIHZvbiBoaW56dWdlZsO8Z3Rlbi9lbnRmZXJudGVuIFplaWxlbiBpbiBEZXppbWFsbm90YXRpb24iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTg4CisjOiBidWlsdGluL2FwcGx5LmM6NDM3NAogbXNnaWQgImluc3RlYWQgb2YgYXBwbHlpbmcgdGhlIHBhdGNoLCBvdXRwdXQgYSBzdW1tYXJ5IGZvciB0aGUgaW5wdXQiCiBtc2dzdHIgIiIKICJhbnN0YXR0IGRlciBBbndlbmR1bmcgZGVzIFBhdGNoZXMsIHdpcmQgZWluZSBadXNhbW1lbmZhc3N1bmcgZsO8ciBkaWUgRWluZ2FiZSAiCiAiYXVzZ2VnZWJlbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5OTAKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzc2CiBtc2dpZCAiaW5zdGVhZCBvZiBhcHBseWluZyB0aGUgcGF0Y2gsIHNlZSBpZiB0aGUgcGF0Y2ggaXMgYXBwbGljYWJsZSIKIG1zZ3N0ciAiIgogImFuc3RhdHQgZGVyIEFud2VuZHVuZyBkZXMgUGF0Y2hlcywgemVpZ2Ugb2IgUGF0Y2ggYW5nZXdlbmRldCB3ZXJkZW4ga2FubiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5OTIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzc4CiBtc2dpZCAibWFrZSBzdXJlIHRoZSBwYXRjaCBpcyBhcHBsaWNhYmxlIHRvIHRoZSBjdXJyZW50IGluZGV4IgogbXNnc3RyICIiCiAic3RlbGx0IHNpY2hlciwgZGFzcyBkZXIgUGF0Y2ggaW4gZGVyIGFrdHVlbGxlbiBCZXJlaXRzdGVsbHVuZyBhbmdld2VuZGV0ICIKICJ3ZXJkZW4ga2FubiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5OTQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzgwCiBtc2dpZCAiYXBwbHkgYSBwYXRjaCB3aXRob3V0IHRvdWNoaW5nIHRoZSB3b3JraW5nIHRyZWUiCiBtc2dzdHIgIndlbmRldCBlaW5lbiBQYXRjaCBhbiwgb2huZSDDhG5kZXJ1bmdlbiBpbSBBcmJlaXRzendlaWcgdm9yenVuZWhtZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTk2CisjOiBidWlsdGluL2FwcGx5LmM6NDM4MgogbXNnaWQgImFsc28gYXBwbHkgdGhlIHBhdGNoICh1c2Ugd2l0aCAtLXN0YXQvLS1zdW1tYXJ5Ly0tY2hlY2spIgogbXNnc3RyICJ3ZW5kZXQgZGVuIFBhdGNoIGFuIChCZW51dHp1bmcgbWl0IC0tc3RhdC8tLXN1bW1hcnkvLS1jaGVjaykiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTk4CisjOiBidWlsdGluL2FwcGx5LmM6NDM4NAorbXNnaWQgImF0dGVtcHQgdGhyZWUtd2F5IG1lcmdlIGlmIGEgcGF0Y2ggZG9lcyBub3QgYXBwbHkiCittc2dzdHIgIiIKKyJ2ZXJzdWNodCAzLVdlZ2UtWnVzYW1tZW5mw7xocnVuZywgd2VubiBkZXIgUGF0Y2ggbmljaHQgYW5nZXdlbmRldCB3ZXJkZW4gIgorImtvbm50ZSIKKworIzogYnVpbHRpbi9hcHBseS5jOjQzODYKIG1zZ2lkICJidWlsZCBhIHRlbXBvcmFyeSBpbmRleCBiYXNlZCBvbiBlbWJlZGRlZCBpbmRleCBpbmZvcm1hdGlvbiIKIG1zZ3N0ciAiIgogImVyc3RlbGx0IGVpbmUgdGVtcG9yw6RyZSBCZXJlaXRzdGVsbHVuZyBiYXNpZXJlbmQgYXVmIGRlbiBpbnRlZ3JpZXJ0ZW4gIgogIkJlcmVpdHN0ZWxsdW5nc2luZm9ybWF0aW9uZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDAwCisjOiBidWlsdGluL2FwcGx5LmM6NDM4OCBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTk3IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NTYKIG1zZ2lkICJwYXRocyBhcmUgc2VwYXJhdGVkIHdpdGggTlVMIGNoYXJhY3RlciIKIG1zZ3N0ciAiUGZhZGUgc2luZCBnZXRyZW5udCBkdXJjaCBOVUwgWmVpY2hlbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMDMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkxCiBtc2dpZCAiZW5zdXJlIGF0IGxlYXN0IDxuPiBsaW5lcyBvZiBjb250ZXh0IG1hdGNoIgotbXNnc3RyICIiCi0ic3RlbGx0IHNpY2hlciwgZGFzcyBtaW5kZXN0ZW5zIDxBbnphaGw+IFplaWxlbiBkZXMgS29udGV4dGVzIMO8YmVyZWluc3RpbW1lbiIKK21zZ3N0ciAic3RlbGx0IHNpY2hlciwgZGFzcyBtaW5kZXN0ZW5zIDxuPiBaZWlsZW4gZGVzIEtvbnRleHRlcyDDvGJlcmVpbnN0aW1tZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDA0CisjOiBidWlsdGluL2FwcGx5LmM6NDM5MgogbXNnaWQgImFjdGlvbiIKIG1zZ3N0ciAiQWt0aW9uIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAwNQorIzogYnVpbHRpbi9hcHBseS5jOjQzOTMKIG1zZ2lkICJkZXRlY3QgbmV3IG9yIG1vZGlmaWVkIGxpbmVzIHRoYXQgaGF2ZSB3aGl0ZXNwYWNlIGVycm9ycyIKIG1zZ3N0ciAiZXJtaXR0ZWx0IG5ldWUgb2RlciBnZcOkbmRlcnRlIFplaWxlbiBkaWUgRmVobGVyIGluIExlZXJ6ZWljaGVuIGhhYmVuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAwOCBidWlsdGluL2FwcGx5LmM6NDAxMQorIzogYnVpbHRpbi9hcHBseS5jOjQzOTYgYnVpbHRpbi9hcHBseS5jOjQzOTkKIG1zZ2lkICJpZ25vcmUgY2hhbmdlcyBpbiB3aGl0ZXNwYWNlIHdoZW4gZmluZGluZyBjb250ZXh0IgogbXNnc3RyICJpZ25vcmllcnQgw4RuZGVydW5nZW4gaW4gTGVlcnplaWNoZW4gYmVpIGRlciBTdWNoZSBkZXMgS29udGV4dGVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAxNAorIzogYnVpbHRpbi9hcHBseS5jOjQ0MDIKIG1zZ2lkICJhcHBseSB0aGUgcGF0Y2ggaW4gcmV2ZXJzZSIKIG1zZ3N0ciAid2VuZGV0IGRlbiBQYXRjaCBpbiB1bWdla2VocnRlciBSZWloZW5mb2xnZSBhbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMTYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDA0CiBtc2dpZCAiZG9uJ3QgZXhwZWN0IGF0IGxlYXN0IG9uZSBsaW5lIG9mIGNvbnRleHQiCiBtc2dzdHIgImVyd2FydGV0IGtlaW5lbiBLb250ZXh0IgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAxOAorIzogYnVpbHRpbi9hcHBseS5jOjQ0MDYKIG1zZ2lkICJsZWF2ZSB0aGUgcmVqZWN0ZWQgaHVua3MgaW4gY29ycmVzcG9uZGluZyAqLnJlaiBmaWxlcyIKIG1zZ3N0ciAiIgogImhpbnRlcmzDpHNzdCB6dXLDvGNrZ2V3aWVzZW5lIFBhdGNoLUJlcmVpY2hlIGluIGRlbiBlbnRzcHJlY2hlbmRlbiAqLnJlaiAiCiAiRGF0ZWllbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMjAKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDA4CiBtc2dpZCAiYWxsb3cgb3ZlcmxhcHBpbmcgaHVua3MiCiBtc2dzdHIgImVybGF1YnQgc2ljaCDDvGJlcmxhcHBlbmRlIFBhdGNoLUJlcmVpY2hlIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAyMQotbXNnaWQgImJlIHZlcmJvc2UiCi1tc2dzdHIgImVyd2VpdGVydGUgQXVzZ2FiZW4iCi0KLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDIzCisjOiBidWlsdGluL2FwcGx5LmM6NDQxMQogbXNnaWQgInRvbGVyYXRlIGluY29ycmVjdGx5IGRldGVjdGVkIG1pc3NpbmcgbmV3LWxpbmUgYXQgdGhlIGVuZCBvZiBmaWxlIgogbXNnc3RyICJ0b2xlcmllcnQgZmVobGVyaGFmdCBlcmthbm50ZW4gZmVobGVuZGVuIFplaWxlbnVtYnJ1Y2ggYW0gRGF0ZWllbmRlIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAyNgorIzogYnVpbHRpbi9hcHBseS5jOjQ0MTQKIG1zZ2lkICJkbyBub3QgdHJ1c3QgdGhlIGxpbmUgY291bnRzIGluIHRoZSBodW5rIGhlYWRlcnMiCiBtc2dzdHIgInZlcnRyYXV0IG5pY2h0IGRlbiBaZWlsZW5udW1tZXJuIGltIEtvcGYgZGVzIFBhdGNoLUJlcmVpY2hlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMjgKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDE2CiBtc2dpZCAicm9vdCIKIG1zZ3N0ciAiV3VyemVsdmVyemVpY2huaXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDI5CisjOiBidWlsdGluL2FwcGx5LmM6NDQxNwogbXNnaWQgInByZXBlbmQgPHJvb3Q+IHRvIGFsbCBmaWxlbmFtZXMiCiBtc2dzdHIgInN0ZWxsdCA8V3VyemVsdmVyemVpY2huaXM+IHZvciBhbGxlIERhdGVpbmFtZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDUwCisjOiBidWlsdGluL2FwcGx5LmM6NDQzOQorbXNnaWQgIi0tM3dheSBvdXRzaWRlIGEgcmVwb3NpdG9yeSIKK21zZ3N0ciAiIgorIkRpZSBPcHRpb24gLS0zd2F5IGthbm4gbmljaHQgYXXDn2VyaGFsYiBlaW5lcyBQcm9qZWt0YXJjaGl2cyB2ZXJ3ZW5kZXQgd2VyZGVuLiIKKworIzogYnVpbHRpbi9hcHBseS5jOjQ0NDcKIG1zZ2lkICItLWluZGV4IG91dHNpZGUgYSByZXBvc2l0b3J5IgotbXNnc3RyICItLWluZGV4IGF1w59lcmhhbGIgZWluZXMgUHJvamVrdGFyY2hpdnMiCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uIC0taW5kZXgga2FubiBuaWNodCBhdcOfZXJoYWxiIGVpbmVzIFByb2pla3RhcmNoaXZzIHZlcndlbmRldCAiCisid2VyZGVuLiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwNTMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDUwCiBtc2dpZCAiLS1jYWNoZWQgb3V0c2lkZSBhIHJlcG9zaXRvcnkiCi1tc2dzdHIgIi0tY2FjaGVkIGF1w59lcmhhbGIgZWluZXMgUHJvamVrdGFyY2hpdnMiCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uIC0tY2FjaGVkIGthbm4gbmljaHQgYXXDn2VyaGFsYiBlaW5lcyBQcm9qZWt0YXJjaGl2cyB2ZXJ3ZW5kZXQgIgorIndlcmRlbi4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDY5CisjOiBidWlsdGluL2FwcGx5LmM6NDQ2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW4ndCBvcGVuIHBhdGNoICclcyciCiBtc2dzdHIgImthbm4gUGF0Y2ggJyVzJyBuaWNodCDDtmZmbmVuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDA4MworIzogYnVpbHRpbi9hcHBseS5jOjQ0ODAKICMsIGMtZm9ybWF0CiBtc2dpZCAic3F1ZWxjaGVkICVkIHdoaXRlc3BhY2UgZXJyb3IiCiBtc2dpZF9wbHVyYWwgInNxdWVsY2hlZCAlZCB3aGl0ZXNwYWNlIGVycm9ycyIKIG1zZ3N0clswXSAidW50ZXJkcsO8Y2t0ZSAlZCBGZWhsZXIgaW4gTGVlcnplaWNoZW4iCiBtc2dzdHJbMV0gInVudGVyZHLDvGNrdGUgJWQgRmVobGVyIGluIExlZXJ6ZWljaGVuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDA4OSBidWlsdGluL2FwcGx5LmM6NDA5OQorIzogYnVpbHRpbi9hcHBseS5jOjQ0ODYgYnVpbHRpbi9hcHBseS5jOjQ0OTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJWQgbGluZSBhZGRzIHdoaXRlc3BhY2UgZXJyb3JzLiIKIG1zZ2lkX3BsdXJhbCAiJWQgbGluZXMgYWRkIHdoaXRlc3BhY2UgZXJyb3JzLiIKQEAgLTE1MzAsMjUgKzI0MDYsMTU0IEBACiBtc2dpZCAiZ2l0IGFyY2hpdmU6IGV4cGVjdGVkIEFDSy9OQUssIGdvdCBFT0YiCiBtc2dzdHIgImdpdCBhcmNoaXZlOiBoYWJlIEFDSy9OQUsgZXJ3YXJ0ZXQsIGFiZXIgRU9GIGJla29tbWVuIgogCi0jOiBidWlsdGluL2FyY2hpdmUuYzo2MworIzogYnVpbHRpbi9hcmNoaXZlLmM6NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0IGFyY2hpdmU6IE5BQ0sgJXMiCiBtc2dzdHIgImdpdCBhcmNoaXZlOiBOQUNLICVzIgogCi0jOiBidWlsdGluL2FyY2hpdmUuYzo2NQorIzogYnVpbHRpbi9hcmNoaXZlLmM6NjMKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVtb3RlIGVycm9yOiAlcyIKIG1zZ3N0ciAiRmVobGVyIGFtIGFuZGVyZW4gRW5kZTogJXMiCiAKLSM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjY2CisjOiBidWlsdGluL2FyY2hpdmUuYzo2NAogbXNnaWQgImdpdCBhcmNoaXZlOiBwcm90b2NvbCBlcnJvciIKIG1zZ3N0ciAiZ2l0IGFyY2hpdmU6IFByb3Rva29sbGZlaGxlciIKIAotIzogYnVpbHRpbi9hcmNoaXZlLmM6NzEKKyM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjY4CiBtc2dpZCAiZ2l0IGFyY2hpdmU6IGV4cGVjdGVkIGEgZmx1c2giCiBtc2dzdHIgImdpdCBhcmNoaXZlOiBlcndhcnRldGUgZWluZSBTcMO8bHVuZyAoZmx1c2gpIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjE0NAorIzogYnVpbHRpbi9iaXNlY3QtLWhlbHBlci5jOjcKK21zZ2lkICJnaXQgYmlzZWN0LS1oZWxwZXIgLS1uZXh0LWFsbCBbLS1uby1jaGVja291dF0iCittc2dzdHIgImdpdCBiaXNlY3QtLWhlbHBlciAtLW5leHQtYWxsIFstLW5vLWNoZWNrb3V0XSIKKworIzogYnVpbHRpbi9iaXNlY3QtLWhlbHBlci5jOjE3Cittc2dpZCAicGVyZm9ybSAnZ2l0IGJpc2VjdCBuZXh0JyIKK21zZ3N0ciAiZsO8aHJ0ICdnaXQgYmlzZWN0IG5leHQnIGF1cyIKKworIzogYnVpbHRpbi9iaXNlY3QtLWhlbHBlci5jOjE5Cittc2dpZCAidXBkYXRlIEJJU0VDVF9IRUFEIGluc3RlYWQgb2YgY2hlY2tpbmcgb3V0IHRoZSBjdXJyZW50IGNvbW1pdCIKK21zZ3N0ciAiYWt0dWFsaXNpZXJ0IEJJU0VDVF9IRUFELCBhbnN0YXR0IGRpZSBha3R1ZWxsZSBWZXJzaW9uIGF1c3p1Y2hlY2tlbiIKKworIzogYnVpbHRpbi9ibGFtZS5jOjI1Cittc2dpZCAiZ2l0IGJsYW1lIFtvcHRpb25zXSBbcmV2LW9wdHNdIFtyZXZdIFstLV0gZmlsZSIKK21zZ3N0ciAiZ2l0IGJsYW1lIFtPcHRpb25lbl0gW3Jldi1vcHRzXSBbcmV2XSBbLS1dIERhdGVpIgorCisjOiBidWlsdGluL2JsYW1lLmM6MzAKK21zZ2lkICJbcmV2LW9wdHNdIGFyZSBkb2N1bWVudGVkIGluIGdpdC1yZXYtbGlzdCgxKSIKK21zZ3N0ciAiW3Jldi1vcHRzXSBzaW5kIGRva3VtZW50aWVydCBpbiBnaXQtcmV2LWxpc3QoMSkiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU1Cittc2dpZCAiU2hvdyBibGFtZSBlbnRyaWVzIGFzIHdlIGZpbmQgdGhlbSwgaW5jcmVtZW50YWxseSIKK21zZ3N0ciAiWmVpZ3QgXCJibGFtZVwiLUVpbnRyw6RnZSBzY2hyaXR0d2Vpc2UsIHfDpGhyZW5kIHdpciBzaWUgZ2VuZXJpZXJlbiIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTYKK21zZ2lkICJTaG93IGJsYW5rIFNIQS0xIGZvciBib3VuZGFyeSBjb21taXRzIChEZWZhdWx0OiBvZmYpIgorbXNnc3RyICJaZWlndCBsZWVyZSBTSEEtMSBmw7xyIEdyZW56dmVyc2lvbmVuIChTdGFuZGFyZDogYXVzKSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTcKK21zZ2lkICJEbyBub3QgdHJlYXQgcm9vdCBjb21taXRzIGFzIGJvdW5kYXJpZXMgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIkJlaGFuZGVsdCBVcnNwcnVuZ3N2ZXJzaW9uZW4gbmljaHQgYWxzIEdyZW56ZW4gKFN0YW5kYXJkOiBhdXMpIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM1OAorbXNnaWQgIlNob3cgd29yayBjb3N0IHN0YXRpc3RpY3MiCittc2dzdHIgIlplaWd0IFN0YXRpc3Rpa2VuIHp1bSBBcmJlaXRzYXVmd2FuZCIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTkKK21zZ2lkICJTaG93IG91dHB1dCBzY29yZSBmb3IgYmxhbWUgZW50cmllcyIKK21zZ3N0ciAiWmVpZ3QgQXVzZ2FiZWJld2VydHVuZyBmw7xyIFwiYmxhbWVcIi1FaW50csOkZ2UiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYwCittc2dpZCAiU2hvdyBvcmlnaW5hbCBmaWxlbmFtZSAoRGVmYXVsdDogYXV0bykiCittc2dzdHIgIlplaWd0IHVyc3Byw7xuZ2xpY2hlbiBEYXRlaW5hbWVuIChTdGFuZGFyZDogYXV0bykiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYxCittc2dpZCAiU2hvdyBvcmlnaW5hbCBsaW5lbnVtYmVyIChEZWZhdWx0OiBvZmYpIgorbXNnc3RyICJaZWlndCB1cnNwcsO8bmdsaWNoZSBaZWlsZW5udW1tZXIgKFN0YW5kYXJkOiBhdXMpIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2MgorbXNnaWQgIlNob3cgaW4gYSBmb3JtYXQgZGVzaWduZWQgZm9yIG1hY2hpbmUgY29uc3VtcHRpb24iCittc2dzdHIgIkFuemVpZ2UgaW4gZWluZW0gRm9ybWF0IGbDvHIgbWFzY2hpbmVsbGUgQXVzd2VydHVuZyIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjMKK21zZ2lkICJTaG93IHBvcmNlbGFpbiBmb3JtYXQgd2l0aCBwZXItbGluZSBjb21taXQgaW5mb3JtYXRpb24iCittc2dzdHIgIiIKKyJBbnplaWdlIGluIEZvcm1hdCBmw7xyIEZyZW1kcHJvZ3JhbW1lIG1pdCBWZXJzaW9uc2luZm9ybWF0aW9uZW4gcHJvIFplaWxlIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2NAorbXNnaWQgIlVzZSB0aGUgc2FtZSBvdXRwdXQgbW9kZSBhcyBnaXQtYW5ub3RhdGUgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIkJlbnV0enQgZGVuIGdsZWljaGVuIEF1c2dhYmVtb2R1cyB3aWUgXCJnaXQtYW5ub3RhdGVcIiAoU3RhbmRhcmQ6IGF1cykiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY1Cittc2dpZCAiU2hvdyByYXcgdGltZXN0YW1wIChEZWZhdWx0OiBvZmYpIgorbXNnc3RyICJaZWlndCB1bmJlYXJiZWl0ZXRlbiBaZWl0c3RlbXBlbCAoU3RhbmRhcmQ6IGF1cykiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY2Cittc2dpZCAiU2hvdyBsb25nIGNvbW1pdCBTSEExIChEZWZhdWx0OiBvZmYpIgorbXNnc3RyICJaZWlndCBsYW5nZW4gVmVyc2lvbnMtU0hBMSAoU3RhbmRhcmQ6IGF1cykiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY3Cittc2dpZCAiU3VwcHJlc3MgYXV0aG9yIG5hbWUgYW5kIHRpbWVzdGFtcCAoRGVmYXVsdDogb2ZmKSIKK21zZ3N0ciAiVW50ZXJkcsO8Y2t0IGRlbiBOYW1lbiBkZXMgQXV0b3JzIHVuZCBkZW4gWmVpdHN0ZW1wZWwgKFN0YW5kYXJkOiBhdXMpIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2OAorbXNnaWQgIlNob3cgYXV0aG9yIGVtYWlsIGluc3RlYWQgb2YgbmFtZSAoRGVmYXVsdDogb2ZmKSIKK21zZ3N0ciAiWmVpZ3QgYW5zdGF0dCBkZXMgTmFtZW5zIGRpZSBFbWFpbC1BZHJlc3NlIGRlcyBBdXRvcnMgKFN0YW5kYXJkOiBhdXMpIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2OQorbXNnaWQgIklnbm9yZSB3aGl0ZXNwYWNlIGRpZmZlcmVuY2VzIgorbXNnc3RyICJJZ25vcmllcnQgVW50ZXJzY2hpZWRlIGluIExlZXJ6ZWljaGVuIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MAorbXNnaWQgIlNwZW5kIGV4dHJhIGN5Y2xlcyB0byBmaW5kIGJldHRlciBtYXRjaCIKK21zZ3N0ciAiYXJiZWl0ZSBsw6RuZ2VyLCB1bSBiZXNzZXJlIMOcYmVyZWluc3RpbW11bmdlbiB6dSBmaW5kZW4iCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcxCittc2dpZCAiVXNlIHJldmlzaW9ucyBmcm9tIDxmaWxlPiBpbnN0ZWFkIG9mIGNhbGxpbmcgZ2l0LXJldi1saXN0IgorbXNnc3RyICJCZW51dHp0IFJldmlzaW9uZW4gdm9uIDxEYXRlaT4gYW5zdGF0dCBcImdpdC1yZXYtbGlzdFwiIGF1Znp1cnVmZW4iCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcyCittc2dpZCAiVXNlIDxmaWxlPidzIGNvbnRlbnRzIGFzIHRoZSBmaW5hbCBpbWFnZSIKK21zZ3N0ciAiQmVudXR6dCBJbmhhbHRlIGRlciA8RGF0ZWk+ZW4gYWxzIGVudGfDvGx0aWdlcyBBYmJpbGQiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzczIGJ1aWx0aW4vYmxhbWUuYzoyMzc0Cittc2dpZCAic2NvcmUiCittc2dzdHIgIkJld2VydHVuZyIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNzMKK21zZ2lkICJGaW5kIGxpbmUgY29waWVzIHdpdGhpbiBhbmQgYWNyb3NzIGZpbGVzIgorbXNnc3RyICJGaW5kZXQga29waWVydGUgWmVpbGVuIGlubmVyaGFsYiBvZGVyIHp3aXNjaGVuIERhdGVpZW4iCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc0Cittc2dpZCAiRmluZCBsaW5lIG1vdmVtZW50cyB3aXRoaW4gYW5kIGFjcm9zcyBmaWxlcyIKK21zZ3N0ciAiRmluZGV0IHZlcnNjaG9iZW5lIFplaWxlbiBpbm5lcmhhbGIgb2RlciB6d2lzY2hlbiBEYXRlaWVuIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3NQorbXNnaWQgIm4sbSIKK21zZ3N0ciAibixtIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3NQorbXNnaWQgIlByb2Nlc3Mgb25seSBsaW5lIHJhbmdlIG4sbSwgY291bnRpbmcgZnJvbSAxIgorbXNnc3RyICJWZXJhcmJlaXRldCBudXIgWmVpbGVuIGltIEJlcmVpY2ggbixtLCBnZXrDpGhsdCB2b24gMSIKKworIzogYnVpbHRpbi9icmFuY2guYzoyNAorbXNnaWQgImdpdCBicmFuY2ggW29wdGlvbnNdIFstciB8IC1hXSBbLS1tZXJnZWQgfCAtLW5vLW1lcmdlZF0iCittc2dzdHIgImdpdCBicmFuY2ggW09wdGlvbmVuXSBbLXIgfCAtYV0gWy0tbWVyZ2VkIHwgLS1uby1tZXJnZWRdIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI1Cittc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1sXSBbLWZdIDxicmFuY2huYW1lPiBbPHN0YXJ0LXBvaW50Pl0iCittc2dzdHIgImdpdCBicmFuY2ggW09wdGlvbmVuXSBbLWxdIFstZl0gPFp3ZWlnbmFtZT4gWzxTdGFydHB1bmt0Pl0iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjYKK21zZ2lkICJnaXQgYnJhbmNoIFtvcHRpb25zXSBbLXJdICgtZCB8IC1EKSA8YnJhbmNobmFtZT4uLi4iCittc2dzdHIgImdpdCBicmFuY2ggW09wdGlvbmVuXSBbLXJdICgtZCB8IC1EKSA8WndlaWduYW1lPi4uLiIKKworIzogYnVpbHRpbi9icmFuY2guYzoyNworbXNnaWQgImdpdCBicmFuY2ggW29wdGlvbnNdICgtbSB8IC1NKSBbPG9sZGJyYW5jaD5dIDxuZXdicmFuY2g+IgorbXNnc3RyICJnaXQgYnJhbmNoIFtPcHRpb25lbl0gKC1tIHwgLU0pIFs8YWx0ZXJad2VpZz5dIDxuZXVlclp3ZWlnPiIKKworIzogYnVpbHRpbi9icmFuY2guYzoxNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogImRlbGV0aW5nIGJyYW5jaCAnJXMnIHRoYXQgaGFzIGJlZW4gbWVyZ2VkIHRvXG4iCkBAIC0xNTU4LDcgKzI1NjMsNyBAQAogIiAgICAgICAgICclcycsIGFiZXIgbm9jaCBuaWNodCBtaXQgZGVyIFp3ZWlnc3BpdHplIChIRUFEKSB6dXNhbW1lbmdlZsO8aHJ0ICIKICJ3dXJkZS4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MTQ4CisjOiBidWlsdGluL2JyYW5jaC5jOjE1NAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibm90IGRlbGV0aW5nIGJyYW5jaCAnJXMnIHRoYXQgaXMgbm90IHlldCBtZXJnZWQgdG9cbiIKQEAgLTE1NjcsMTY4ICsyNTcyLDM4MyBAQAogImVudGZlcm5lIFp3ZWlnICclcycgbmljaHQsIGRlciBub2NoIG5pY2h0IHp1c2FtbWVuZ2Vmw7xocnQgd3VyZGUgbWl0XG4iCiAiICAgICAgICAgJyVzJywgb2J3b2hsIGVyIG1pdCBkZXIgWndlaWdzcGl0emUgKEhFQUQpIHp1c2FtbWVuZ2Vmw7xocnQgd3VyZGUuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjE4MAotbXNnaWQgImNhbm5vdCB1c2UgLWEgd2l0aCAtZCIKLW1zZ3N0ciAia2FubiAtYSBuaWNodCBtaXQgLWQgYmVudXR6ZW4iCi0KLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MTg2Ci1tc2dpZCAiQ291bGRuJ3QgbG9vayB1cCBjb21taXQgb2JqZWN0IGZvciBIRUFEIgotbXNnc3RyICJLb25udGUgVmVyc2lvbnNvYmpla3QgZsO8ciBad2VpZ3NwaXR6ZSAoSEVBRCkgbmljaHQgbmFjaHNjaGxhZ2VuLiIKLQotIzogYnVpbHRpbi9icmFuY2guYzoxOTEKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiQ2Fubm90IGRlbGV0ZSB0aGUgYnJhbmNoICclcycgd2hpY2ggeW91IGFyZSBjdXJyZW50bHkgb24uIgotbXNnc3RyICIiCi0iS2FubiBad2VpZyAnJXMnIG5pY2h0IGVudGZlcm5lbiwgZGEgZHUgZGljaCBnZXJhZGUgYXVmIGRpZXNlbSBiZWZpbmRlc3QuIgotCi0jOiBidWlsdGluL2JyYW5jaC5jOjIwMgotIywgYy1mb3JtYXQKLW1zZ2lkICJyZW1vdGUgYnJhbmNoICclcycgbm90IGZvdW5kLiIKLW1zZ3N0ciAiZXh0ZXJuZXIgWndlaWcgJyVzJyBuaWNodCBnZWZ1bmRlbiIKLQotIzogYnVpbHRpbi9icmFuY2guYzoyMDMKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiYnJhbmNoICclcycgbm90IGZvdW5kLiIKLW1zZ3N0ciAiWndlaWcgJyVzJyBuaWNodCBnZWZ1bmRlbi4iCi0KLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjEwCisjOiBidWlsdGluL2JyYW5jaC5jOjE2OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZG4ndCBsb29rIHVwIGNvbW1pdCBvYmplY3QgZm9yICclcyciCiBtc2dzdHIgIktvbm50ZSBWZXJzaW9uc29iamVrdCBmw7xyICclcycgbmljaHQgbmFjaHNjaGxhZ2VuLiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyMTYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgYnJhbmNoICclcycgaXMgbm90IGZ1bGx5IG1lcmdlZC5cbiIKICJJZiB5b3UgYXJlIHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGl0LCBydW4gJ2dpdCBicmFuY2ggLUQgJXMnLiIKIG1zZ3N0ciAiIgogIkRlciBad2VpZyAnJXMnIGlzdCBuaWNodCB2b2xsc3TDpG5kaWcgenVzYW1tZW5nZWbDvGhydC5cbiIKLSJXZW5uIGR1IHNpY2hlciBiaXN0IGRpZXNlbiBad2VpZyB6dSBlbnRmZXJuZW4sIGbDvGhyZSAnZ2l0IGJyYW5jaCAtRCAlcycgYXVzLiIKKyJXZW5uIFNpZSBzaWNoZXIgc2luZCBkaWVzZW4gWndlaWcgenUgZW50ZmVybmVuLCBmw7xocmVuIFNpZSAnZ2l0IGJyYW5jaCAtRCAiCisiJXMnIGF1cy4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjI1CisjOiBidWlsdGluL2JyYW5jaC5jOjE4NQorbXNnaWQgIlVwZGF0ZSBvZiBjb25maWctZmlsZSBmYWlsZWQiCittc2dzdHIgIkFrdHVhbGlzaWVydW5nIGRlciBLb25maWd1cmF0aW9uc2RhdGVpIGZlaGxnZXNjaGxhZ2VuLiIKKworIzogYnVpbHRpbi9icmFuY2guYzoyMTMKK21zZ2lkICJjYW5ub3QgdXNlIC1hIHdpdGggLWQiCittc2dzdHIgImthbm4gLWEgbmljaHQgbWl0IC1kIGJlbnV0emVuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjIxOQorbXNnaWQgIkNvdWxkbid0IGxvb2sgdXAgY29tbWl0IG9iamVjdCBmb3IgSEVBRCIKK21zZ3N0ciAiS29ubnRlIFZlcnNpb25zb2JqZWt0IGbDvHIgWndlaWdzcGl0emUgKEhFQUQpIG5pY2h0IG5hY2hzY2hsYWdlbi4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjI3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBkZWxldGUgdGhlIGJyYW5jaCAnJXMnIHdoaWNoIHlvdSBhcmUgY3VycmVudGx5IG9uLiIKK21zZ3N0ciAiIgorIkthbm4gWndlaWcgJyVzJyBuaWNodCBlbnRmZXJuZW4sIGRhIFNpZSBzaWNoIGdlcmFkZSBhdWYgZGllc2VtIGJlZmluZGVuLiIKKworIzogYnVpbHRpbi9icmFuY2guYzoyNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVtb3RlIGJyYW5jaCAnJXMnIG5vdCBmb3VuZC4iCittc2dzdHIgImV4dGVybmVyIFp3ZWlnICclcycgbmljaHQgZ2VmdW5kZW4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjQxCisjLCBjLWZvcm1hdAorbXNnaWQgImJyYW5jaCAnJXMnIG5vdCBmb3VuZC4iCittc2dzdHIgIlp3ZWlnICclcycgbmljaHQgZ2VmdW5kZW4uIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvciBkZWxldGluZyByZW1vdGUgYnJhbmNoICclcyciCiBtc2dzdHIgIkZlaGxlciBiZWltIEVudGZlcm5lbiBkZXMgZXh0ZXJuZW4gWndlaWdlcyAnJXMnIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIyNgorIzogYnVpbHRpbi9icmFuY2guYzoyNTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3IgZGVsZXRpbmcgYnJhbmNoICclcyciCiBtc2dzdHIgIkZlaGxlciBiZWltIEVudGZlcm5lbiBkZXMgWndlaWdlcyAnJXMnIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIzMworIzogYnVpbHRpbi9icmFuY2guYzoyNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiRGVsZXRlZCByZW1vdGUgYnJhbmNoICVzICh3YXMgJXMpLlxuIgogbXNnc3RyICJFeHRlcm5lciBad2VpZyAlcyBlbnRmZXJudCAod2FyICVzKS5cbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyMzQKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkRlbGV0ZWQgYnJhbmNoICVzICh3YXMgJXMpLlxuIgogbXNnc3RyICJad2VpZyAlcyBlbnRmZXJudCAod2FyICVzKS5cbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyMzkKLW1zZ2lkICJVcGRhdGUgb2YgY29uZmlnLWZpbGUgZmFpbGVkIgotbXNnc3RyICJBa3R1YWxpc2llcnVuZyBkZXIgS29uZmlndXJhdGlvbnNkYXRlaSBmZWhsZ2VzY2hsYWdlbi4iCi0KLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MzM3CisjOiBidWlsdGluL2JyYW5jaC5jOjM2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJicmFuY2ggJyVzJyBkb2VzIG5vdCBwb2ludCBhdCBhIGNvbW1pdCIKIG1zZ3N0ciAiWndlaWcgJyVzJyB6ZWlndCBhdWYga2VpbmUgVmVyc2lvbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0MDkKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlslczogYmVoaW5kICVkXSIKIG1zZ3N0ciAiWyVzOiAlZCBoaW50ZXJoZXJdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQxMQorIzogYnVpbHRpbi9icmFuY2guYzo0NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiW2JlaGluZCAlZF0iCiBtc2dzdHIgIlslZCBoaW50ZXJoZXJdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQxNQorIzogYnVpbHRpbi9icmFuY2guYzo0NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiWyVzOiBhaGVhZCAlZF0iCiBtc2dzdHIgIlslczogJWQgdm9yYXVzXSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0MTcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDYxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlthaGVhZCAlZF0iCiBtc2dzdHIgIlslZCB2b3JhdXNdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQyMAorIzogYnVpbHRpbi9icmFuY2guYzo0NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiWyVzOiBhaGVhZCAlZCwgYmVoaW5kICVkXSIKIG1zZ3N0ciAiWyVzOiAlZCB2b3JhdXMsICVkIGhpbnRlcmhlcl0iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NDIzCisjOiBidWlsdGluL2JyYW5jaC5jOjQ2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJbYWhlYWQgJWQsIGJlaGluZCAlZF0iCiBtc2dzdHIgIlslZCB2b3JhdXMsICVkIGhpbnRlcmhlcl0iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NTM1CisjOiBidWlsdGluL2JyYW5jaC5jOjQ5MAorbXNnaWQgIiAqKioqIGludmFsaWQgcmVmICoqKioiCittc2dzdHIgIiAqKioqIHVuZ8O8bHRpZ2UgUmVmZXJlbnogKioqKiIKKworIzogYnVpbHRpbi9icmFuY2guYzo1ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiKG5vIGJyYW5jaCwgcmViYXNpbmcgJXMpIgorbXNnc3RyICIoa2VpbiBad2VpZywgTmV1YXVmYmF1IHZvbiBad2VpZyAlcyBpbSBHYW5nZSkiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NTg1CisjLCBjLWZvcm1hdAorbXNnaWQgIihubyBicmFuY2gsIGJpc2VjdCBzdGFydGVkIG9uICVzKSIKK21zZ3N0ciAiKGtlaW4gWndlaWcsIE5ldWF1ZmJhdSBiZWdvbm5lbiBiZWkgJXMpIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjU4OAorIywgYy1mb3JtYXQKK21zZ2lkICIoZGV0YWNoZWQgZnJvbSAlcykiCittc2dzdHIgIihsb3NnZWzDtnN0IHZvbiAlcykiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NTkxCiBtc2dpZCAiKG5vIGJyYW5jaCkiCiBtc2dzdHIgIihrZWluIFp3ZWlnKSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2MDAKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NjM3CisjLCBjLWZvcm1hdAorbXNnaWQgIm9iamVjdCAnJXMnIGRvZXMgbm90IHBvaW50IHRvIGEgY29tbWl0IgorbXNnc3RyICJPYmpla3QgJyVzJyB6ZWlndCBhdWYga2VpbmUgVmVyc2lvbiIKKworIzogYnVpbHRpbi9icmFuY2guYzo2NjkKIG1zZ2lkICJzb21lIHJlZnMgY291bGQgbm90IGJlIHJlYWQiCiBtc2dzdHIgIktvbm50ZSBlaW5pZ2UgUmVmZXJlbnplbiBuaWNodCBsZXNlbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2MTMKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NjgyCiBtc2dpZCAiY2Fubm90IHJlbmFtZSB0aGUgY3VycmVudCBicmFuY2ggd2hpbGUgbm90IG9uIGFueS4iCiBtc2dzdHIgIiIKLSJLYW5uIGFrdHVlbGxlbiBad2VpZyBuaWNodCB1bWJlbm5lbiwgc29sYW5nZSBkdSBkaWNoIGF1ZiBrZWluZW0gYmVmaW5kZXN0LiIKKyJLYW5uIGFrdHVlbGxlbiBad2VpZyBuaWNodCB1bWJlbmVubmVuLCBzb2xhbmdlIFNpZSBzaWNoIGF1ZiBrZWluZW0gYmVmaW5kZW4uIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjYyMworIzogYnVpbHRpbi9icmFuY2guYzo2OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBicmFuY2ggbmFtZTogJyVzJyIKIG1zZ3N0ciAiVW5nw7xsdGlnZXIgWndlaWctTmFtZTogJyVzJyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2MzgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzA3CiBtc2dpZCAiQnJhbmNoIHJlbmFtZSBmYWlsZWQiCiBtc2dzdHIgIlVtYmVuZW5udW5nIGRlcyBad2VpZ2VzIGZlaGxnZXNjaGxhZ2VuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjY0MgorIzogYnVpbHRpbi9icmFuY2guYzo3MTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVuYW1lZCBhIG1pc25hbWVkIGJyYW5jaCAnJXMnIGF3YXkiCiBtc2dzdHIgImZhbHNjaCBiZW5hbm50ZW4gWndlaWcgJyVzJyB1bWJlbmFubnQiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjQ2CisjOiBidWlsdGluL2JyYW5jaC5jOjcxNQogIywgYy1mb3JtYXQKIG1zZ2lkICJCcmFuY2ggcmVuYW1lZCB0byAlcywgYnV0IEhFQUQgaXMgbm90IHVwZGF0ZWQhIgogbXNnc3RyICJad2VpZyB1bWJlbmFubnQgenUgJXMsIGFiZXIgWndlaWdzcGl0emUgKEhFQUQpIGlzdCBuaWNodCBha3R1YWxpc2llcnQhIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjY1MworIzogYnVpbHRpbi9icmFuY2guYzo3MjIKIG1zZ2lkICJCcmFuY2ggaXMgcmVuYW1lZCwgYnV0IHVwZGF0ZSBvZiBjb25maWctZmlsZSBmYWlsZWQiCiBtc2dzdHIgIiIKICJad2VpZyBpc3QgdW1iZW5hbm50LCBhYmVyIGRpZSBBa3R1YWxpc2llcnVuZyBkZXIgS29uZmlndXJhdGlvbnNkYXRlaSBpc3QgIgogImZlaGxnZXNjaGxhZ2VuLiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NjgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzM3CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1hbGZvcm1lZCBvYmplY3QgbmFtZSAlcyIKIG1zZ3N0ciAiTWlzc2dlYmlsZGV0ZXIgT2JqZWt0bmFtZSAlcyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2OTIKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzYxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCB3cml0ZSBicmFuY2ggZGVzY3JpcHRpb24gdGVtcGxhdGU6ICVzIgogbXNnc3RyICJLb25udGUgQmVzY2hyZWlidW5nc3ZvcmxhZ2UgZsO8ciBad2VpZyBuaWNodCBzY2hyZWliZW46ICVzIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc4MworIzogYnVpbHRpbi9icmFuY2guYzo3OTEKK21zZ2lkICJHZW5lcmljIG9wdGlvbnMiCittc2dzdHIgIkFsbGdlbWVpbmUgT3B0aW9uZW4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzkzCittc2dpZCAic2hvdyBoYXNoIGFuZCBzdWJqZWN0LCBnaXZlIHR3aWNlIGZvciB1cHN0cmVhbSBicmFuY2giCittc2dzdHIgIlplaWd0IEhhc2ggdW5kIEJldHJlZmY7IC12djogenVzw6R0emxpY2ggZXh0ZXJuZW4gw5xiZXJuYWhtZXp3ZWlnIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjc5NAorbXNnaWQgInN1cHByZXNzIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMiCittc2dzdHIgInVudGVyZHLDvGNrdCBJbmZvcm1hdGlvbnNtZWxkdW5nZW4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzk1Cittc2dpZCAic2V0IHVwIHRyYWNraW5nIG1vZGUgKHNlZSBnaXQtcHVsbCgxKSkiCittc2dzdHIgInN0ZWxsdCBkZW4gw5xiZXJuYWhtZW1vZHVzIGVpbiAoc2llaGUgZ2l0LXB1bGwoMSkpIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjc5NworbXNnaWQgImNoYW5nZSB1cHN0cmVhbSBpbmZvIgorbXNnc3RyICLDpG5kZXJ0IEluZm9ybWF0aW9uZW4genVtIGV4dGVybmVuIMOcYmVybmFobWV6d2VpZyIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MDEKK21zZ2lkICJ1c2UgY29sb3JlZCBvdXRwdXQiCittc2dzdHIgInZlcndlbmRldCBmYXJibGljaGUgQXVzZ2FiZW4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODAyCittc2dpZCAiYWN0IG9uIHJlbW90ZS10cmFja2luZyBicmFuY2hlcyIKK21zZ3N0ciAid2lya3QgYXVmIGV4dGVybmUgw5xiZXJuYWhtZXp3ZWlnZSIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MDUgYnVpbHRpbi9icmFuY2guYzo4MTEgYnVpbHRpbi9icmFuY2guYzo4MzIKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODM4IGJ1aWx0aW4vY29tbWl0LmM6MTM2OCBidWlsdGluL2NvbW1pdC5jOjEzNjkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MCBidWlsdGluL2NvbW1pdC5jOjEzNzEgYnVpbHRpbi90YWcuYzo0NjgKK21zZ2lkICJjb21taXQiCittc2dzdHIgIlZlcnNpb24iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODA2IGJ1aWx0aW4vYnJhbmNoLmM6ODEyCittc2dpZCAicHJpbnQgb25seSBicmFuY2hlcyB0aGF0IGNvbnRhaW4gdGhlIGNvbW1pdCIKK21zZ3N0ciAiZ2lidCBudXIgWndlaWdlIGF1cywgd2VsY2hlIGRpZXNlIFZlcnNpb24gYmVpbmhhbHRlbiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MTgKK21zZ2lkICJTcGVjaWZpYyBnaXQtYnJhbmNoIGFjdGlvbnM6IgorbXNnc3RyICJzcGV6aWZpc2NoZSBBa3Rpb25lbiBmw7xyIFwiZ2l0LWJyYW5jaFwiOiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MTkKK21zZ2lkICJsaXN0IGJvdGggcmVtb3RlLXRyYWNraW5nIGFuZCBsb2NhbCBicmFuY2hlcyIKK21zZ3N0ciAibGlzdGV0IGV4dGVybmUgw5xiZXJuYWhtZXp3ZWlnZSB1bmQgbG9rYWxlIFp3ZWlnZSBhdWYiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODIxCittc2dpZCAiZGVsZXRlIGZ1bGx5IG1lcmdlZCBicmFuY2giCittc2dzdHIgImVudGZlcm50IHZvbGxzdMOkbmRpZyB6dXNhbW1lbmdlZsO8aHJ0ZW4gWndlaWciCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODIyCittc2dpZCAiZGVsZXRlIGJyYW5jaCAoZXZlbiBpZiBub3QgbWVyZ2VkKSIKK21zZ3N0ciAibMO2c2NodCBad2VpZyAoYXVjaCB3ZW5uIG5pY2h0IHp1c2FtbWVuZ2Vmw7xocnQpIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgyMworbXNnaWQgIm1vdmUvcmVuYW1lIGEgYnJhbmNoIGFuZCBpdHMgcmVmbG9nIgorbXNnc3RyICJ2ZXJzY2hpZWJ0L2JlbmVubnQgZWluZW4gWndlaWcgdW5kIGRlc3NlbiBSZWZlcmVuenByb3Rva29sbCB1bSIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MjQKK21zZ2lkICJtb3ZlL3JlbmFtZSBhIGJyYW5jaCwgZXZlbiBpZiB0YXJnZXQgZXhpc3RzIgorbXNnc3RyICIiCisidmVyc2NoaWVidC9iZW5lbm50IGVpbmVuIFp3ZWlnIHVtLCBhdWNoIHdlbm4gZGFzIFppZWwgYmVyZWl0cyBleGlzdGllcnQiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI1Cittc2dpZCAibGlzdCBicmFuY2ggbmFtZXMiCittc2dzdHIgImxpc3RldCBad2VpZ25hbWVuIGF1ZiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MjYKK21zZ2lkICJjcmVhdGUgdGhlIGJyYW5jaCdzIHJlZmxvZyIKK21zZ3N0ciAiZXJ6ZXVndCBkYXMgUmVmZXJlbnpwcm90b2tvbGwgZGVzIFp3ZWlnZXMiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI4Cittc2dpZCAiZWRpdCB0aGUgZGVzY3JpcHRpb24gZm9yIHRoZSBicmFuY2giCittc2dzdHIgImJlYXJiZWl0ZXQgZGllIEJlc2NocmVpYnVuZyBmw7xyIGRlbiBad2VpZyIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MjkKK21zZ2lkICJmb3JjZSBjcmVhdGlvbiAod2hlbiBhbHJlYWR5IGV4aXN0cykiCittc2dzdHIgImVyemV1Z2UgYXVjaCwgd2VubiBkZXIgWndlaWcgYmVyZWl0cyBleGlzdGllcnQiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODMyCittc2dpZCAicHJpbnQgb25seSBub3QgbWVyZ2VkIGJyYW5jaGVzIgorbXNnc3RyICJnaWJ0IG51ciBad2VpZ2UgYXVzLCBkaWUgbmljaHQgenVzYW1tZW5nZWbDvGhydCBzaW5kIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgzOAorbXNnaWQgInByaW50IG9ubHkgbWVyZ2VkIGJyYW5jaGVzIgorbXNnc3RyICJnaWJ0IG51ciBad2VpZ2UgYXVzLCBkaWUgenVzYW1tZW5nZWbDvGhydCBzaW5kIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjg0MgorbXNnaWQgImxpc3QgYnJhbmNoZXMgaW4gY29sdW1ucyIKK21zZ3N0ciAibGlzdGV0IFp3ZWlnZSBpbiBTcGFsdGVuIGF1ZiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4NTUKIG1zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSBIRUFEIGFzIGEgdmFsaWQgcmVmLiIKIG1zZ3N0ciAiS29ubnRlIFp3ZWlnc3BpdHplIChIRUFEKSBuaWNodCBhbHMgZ8O8bHRpZ2UgUmVmZXJlbnogYXVmbMO2c2VuLiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3ODggYnVpbHRpbi9jbG9uZS5jOjU1OAorIzogYnVpbHRpbi9icmFuY2guYzo4NjAgYnVpbHRpbi9jbG9uZS5jOjYxOQogbXNnaWQgIkhFQUQgbm90IGZvdW5kIGJlbG93IHJlZnMvaGVhZHMhIgogbXNnc3RyICJad2VpZ3NwaXR6ZSAoSEVBRCkgd3VyZGUgbmljaHQgdW50ZXIgXCJyZWZzL2hlYWRzXCIgZ2VmdW5kZW4hIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjgwOAorIzogYnVpbHRpbi9icmFuY2guYzo4ODMKIG1zZ2lkICItLWNvbHVtbiBhbmQgLS12ZXJib3NlIGFyZSBpbmNvbXBhdGlibGUiCi1tc2dzdHIgIi0tY29sdW1uIHVuZCAtLXZlcmJvc2Ugc2luZCBpbmtvbXBhdGliZWwiCittc2dzdHIgIkRpZSBPcHRpb25lbiAtLWNvbHVtbiB1bmQgLS12ZXJib3NlIHNpbmQgaW5rb21wYXRpYmVsLiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo4NTcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODg5IGJ1aWx0aW4vYnJhbmNoLmM6OTI4Cittc2dpZCAiYnJhbmNoIG5hbWUgcmVxdWlyZWQiCittc2dzdHIgIlp3ZWlnbmFtZSBlcmZvcmRlcmxpY2giCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTA0Cittc2dpZCAiQ2Fubm90IGdpdmUgZGVzY3JpcHRpb24gdG8gZGV0YWNoZWQgSEVBRCIKK21zZ3N0ciAiIgorInp1IGxvc2dlbMO2c3RlciBad2VpZ3NwaXR6ZSAoSEVBRCkga2FubiBrZWluZSBCZXNjaHJlaWJ1bmcgaGludGVybGVndCB3ZXJkZW4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTA5Cittc2dpZCAiY2Fubm90IGVkaXQgZGVzY3JpcHRpb24gb2YgbW9yZSB0aGFuIG9uZSBicmFuY2giCittc2dzdHIgIkJlc2NocmVpYnVuZyB2b24gbWVociBhbHMgZWluZW0gWndlaWcga2FubiBuaWNodCBiZWFyYmVpdGV0IHdlcmRlbiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm8gY29tbWl0IG9uIGJyYW5jaCAnJXMnIHlldC4iCittc2dzdHIgIk5vY2gga2VpbmUgVmVyc2lvbiBpbiBad2VpZyAnJXMnLiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm8gYnJhbmNoIG5hbWVkICclcycuIgorbXNnc3RyICJad2VpZyAnJXMnIG5pY2h0IHZvcmhhbmRlbi4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTM0Cittc2dpZCAidG9vIG1hbnkgYnJhbmNoZXMgZm9yIGEgcmVuYW1lIG9wZXJhdGlvbiIKK21zZ3N0ciAienUgdmllbGUgWndlaWdlIGbDvHIgZWluZSBVbWJlbmVubmVuLU9wZXJhdGlvbiBhbmdlZ2ViZW4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTM5Cittc2dpZCAidG9vIG1hbnkgYnJhbmNoZXMgdG8gc2V0IG5ldyB1cHN0cmVhbSIKK21zZ3N0ciAienUgdmllbGUgWndlaWdlIGFuZ2VnZWJlbiB1bSBuZXVlbiDDnGJlcm5haG1lendlaWcgenUgc2V0emVuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk0MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiY291bGQgbm90IHNldCB1cHN0cmVhbSBvZiBIRUFEIHRvICVzIHdoZW4gaXQgZG9lcyBub3QgcG9pbnQgdG8gYW55IGJyYW5jaC4iCittc2dzdHIgIiIKKyJLb25udGUga2VpbmVuIG5ldWVuIMOcYmVybmFobWV6d2VpZyB2b24gWndlaWdzcGl0emUgKEhFQUQpIHp1ICVzIHNldHplbixcbiIKKyJkYSBkaWVzZSBhdWYga2VpbmVuIFp3ZWlnIHplaWd0LiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NDYgYnVpbHRpbi9icmFuY2guYzo5NjggYnVpbHRpbi9icmFuY2guYzo5OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAibm8gc3VjaCBicmFuY2ggJyVzJyIKK21zZ3N0ciAiS2VpbiBzb2xjaGVyIFp3ZWlnICclcyciCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTUwCisjLCBjLWZvcm1hdAorbXNnaWQgImJyYW5jaCAnJXMnIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICJad2VpZyAnJXMnIGV4aXN0aWVydCBuaWNodCIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NjIKK21zZ2lkICJ0b28gbWFueSBicmFuY2hlcyB0byB1bnNldCB1cHN0cmVhbSIKK21zZ3N0ciAiIgorInp1IHZpZWxlIFp3ZWlnZSBhbmdlZ2ViZW4gdW0gS29uZmlndXJhdGlvbiB6dSDDnGJlcm5haG1lendlaWcgenUgZW50ZmVybmVuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk2NgorbXNnaWQgImNvdWxkIG5vdCB1bnNldCB1cHN0cmVhbSBvZiBIRUFEIHdoZW4gaXQgZG9lcyBub3QgcG9pbnQgdG8gYW55IGJyYW5jaC4iCittc2dzdHIgIiIKKyJLb25udGUgS29uZmlndXJhdGlvbiB6dW0gw5xiZXJuYWhtZXp3ZWlnIHZvbiBad2VpZ3NwaXR6ZSAoSEVBRCkgbmljaHRcbiIKKyJlbnRmZXJuZW4sIGRhIGRpZXNlIGF1ZiBrZWluZW4gWndlaWcgemVpZ3QuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk3MgorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJyVzJyBoYXMgbm8gdXBzdHJlYW0gaW5mb3JtYXRpb24iCittc2dzdHIgIlp3ZWlnICclcycgaGF0IGtlaW5lbiBleHRlcm5lbiDDnGJlcm5haG1lendlaWcgZ2VzZXR6dCIKKworIzogYnVpbHRpbi9icmFuY2guYzo5ODcKK21zZ2lkICJpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGNyZWF0ZSAnSEVBRCcgbWFudWFsbHkiCittc2dzdHIgIidIRUFEJyBkYXJmIG5pY2h0IG1hbnVlbGwgZXJzdGVsbHQgd2VyZGVuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk5MwogbXNnaWQgIi1hIGFuZCAtciBvcHRpb25zIHRvICdnaXQgYnJhbmNoJyBkbyBub3QgbWFrZSBzZW5zZSB3aXRoIGEgYnJhbmNoIG5hbWUiCiBtc2dzdHIgIiIKLSJEaWUgT3B0aW9uZW4gLWEgdW5kIC1yIGJlaSAnZ2l0IGJyYW5jaCcgbWFjaGVuIG1pdCBlaW5lbSBad2VpZ25hbWVuIGtlaW5lbiAiCi0iU2lubi4iCisiRGllIE9wdGlvbmVuIC1hIHVuZCAtciBiZWkgJ2dpdCBicmFuY2gnIGvDtm5uZW4gbmljaHQgZ2VtZWltc2FtIG1pdCBlaW5lbSAiCisiWndlaWduYW1lbiB2ZXJ3ZW5kZXQgd2VyZGVuLiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5OTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSAtLXNldC11cHN0cmVhbSBmbGFnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gQ29uc2lkZXIgdXNpbmcgLS0iCisidHJhY2sgb3IgLS1zZXQtdXBzdHJlYW0tdG9cbiIKK21zZ3N0ciAiIgorIkRpZSAtLXNldC11cHN0cmVhbSBPcHRpb24gaXN0IHZlcmFsdGV0IHVuZCB3aXJkIGVudGZlcm50LiBCZW51dHplbiBTaWUgLS0iCisidHJhY2sgb2RlciAtLXNldC11cHN0cmVhbS10b1xuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjEwMTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIklmIHlvdSB3YW50ZWQgdG8gbWFrZSAnJXMnIHRyYWNrICclcycsIGRvIHRoaXM6XG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJXZW5uIFNpZSB3b2xsdGVuLCBkYXNzICclcycgZGVuIFp3ZWlnICclcycgYWxzIGV4dGVybmVuIMOcYmVybmFobWV6d2VpZyBoYXQsICIKKyJmw7xocmVuIFNpZSBhdXM6XG4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTAxNAorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgZ2l0IGJyYW5jaCAtZCAlc1xuIgorbXNnc3RyICIgICAgZ2l0IGJyYW5jaCAtZCAlc1xuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjEwMTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgIGdpdCBicmFuY2ggLS1zZXQtdXBzdHJlYW0tdG8gJXNcbiIKK21zZ3N0ciAiICAgIGdpdCBicmFuY2ggLS1zZXQtdXBzdHJlYW0tdG8gJXNcbiIKIAogIzogYnVpbHRpbi9idW5kbGUuYzo0NwogIywgYy1mb3JtYXQKQEAgLTE3NDMsOTkgKzI5NjMsMjU0IEBACiBtc2dpZCAiTmVlZCBhIHJlcG9zaXRvcnkgdG8gdW5idW5kbGUuIgogbXNnc3RyICJadW0gRW50cGFja2VuIHdpcmQgZWluIFByb2pla3RhcmNoaXYgYmVuw7Z0aWd0LiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExMyBidWlsdGluL2NoZWNrb3V0LmM6MTQ2CisjOiBidWlsdGluL2NhdC1maWxlLmM6MTc2Cittc2dpZCAiZ2l0IGNhdC1maWxlICgtdHwtc3wtZXwtcHw8dHlwZT58LS10ZXh0Y29udikgPG9iamVjdD4iCittc2dzdHIgImdpdCBjYXQtZmlsZSAoLXR8LXN8LWV8LXB8PEFydD58LS10ZXh0Y29udikgPE9iamVrdD4iCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxNzcKK21zZ2lkICJnaXQgY2F0LWZpbGUgKC0tYmF0Y2h8LS1iYXRjaC1jaGVjaykgPCA8bGlzdF9vZl9vYmplY3RzPiIKK21zZ3N0ciAiZ2l0IGNhdC1maWxlICgtLWJhdGNofC0tYmF0Y2gtY2hlY2spIDwgPExpc3RlX3Zvbl9PYmpla3Rlbj4iCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTUKK21zZ2lkICI8dHlwZT4gY2FuIGJlIG9uZSBvZjogYmxvYiwgdHJlZSwgY29tbWl0LCB0YWciCittc2dzdHIgIjxBcnQ+IGthbm4gc2VpbjogYmxvYiwgdHJlZSwgY29tbWl0LCB0YWciCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTYKK21zZ2lkICJzaG93IG9iamVjdCB0eXBlIgorbXNnc3RyICJ6ZWlndCBPYmpla3RhcnQiCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTcKK21zZ2lkICJzaG93IG9iamVjdCBzaXplIgorbXNnc3RyICJ6ZWlndCBPYmpla3RncsO2w59lIgorCisjOiBidWlsdGluL2NhdC1maWxlLmM6MTk5Cittc2dpZCAiZXhpdCB3aXRoIHplcm8gd2hlbiB0aGVyZSdzIG5vIGVycm9yIgorbXNnc3RyICJiZWVuZGV0IG1pdCBSw7xja2dhYmV3ZXJ0IDAsIHdlbm4ga2VpbiBGZWhsZXIgYXVmZ2V0cmV0ZW4gaXN0IgorCisjOiBidWlsdGluL2NhdC1maWxlLmM6MjAwCittc2dpZCAicHJldHR5LXByaW50IG9iamVjdCdzIGNvbnRlbnQiCittc2dzdHIgImFuc3ByZWNoZW5kZSBBbnplaWdlIGRlcyBPYmpla3RpbmhhbHRlcyIKKworIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwMgorbXNnaWQgImZvciBibG9iIG9iamVjdHMsIHJ1biB0ZXh0Y29udiBvbiBvYmplY3QncyBjb250ZW50IgorbXNnc3RyICJmw7xocnQgZWluZSBUZXh0a29udmVydGllcnVuZyBhdWYgZGVuIEluaGFsdCB2b24gQmxvYi1PYmpla3RlbiBhdXMiCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDQKK21zZ2lkICJzaG93IGluZm8gYW5kIGNvbnRlbnQgb2Ygb2JqZWN0cyBmZWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCittc2dzdHIgIiIKKyJBbnplaWdlIHZvbiBJbmZvcm1hdGlvbmVuIHVuZCBJbmhhbHQgdm9uIE9iamVrdGVuLCBnZWxlc2VuIHZvbiBkZXIgU3RhbmRhcmQtIgorIkVpbmdhYmUiCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDcKK21zZ2lkICJzaG93IGluZm8gYWJvdXQgb2JqZWN0cyBmZWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCittc2dzdHIgIiIKKyJBbnplaWdlIHZvbiBJbmZvcm1hdGlvbmVuIMO8YmVyIE9iamVrdGUsIGdlbGVzZW4gdm9uIGRlciBTdGFuZGFyZC1FaW5nYWJlIgorCisjOiBidWlsdGluL2NoZWNrLWF0dHIuYzoxMQorbXNnaWQgImdpdCBjaGVjay1hdHRyIFstYSB8IC0tYWxsIHwgYXR0ci4uLl0gWy0tXSBwYXRobmFtZS4uLiIKK21zZ3N0ciAiZ2l0IGNoZWNrLWF0dHIgWy1hIHwgLS1hbGwgfCBBdHRyaWJ1dC4uLl0gWy0tXSBQZmFkbmFtZS4uLiIKKworIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MTIKK21zZ2lkICJnaXQgY2hlY2stYXR0ciAtLXN0ZGluIFstel0gWy1hIHwgLS1hbGwgfCBhdHRyLi4uXSA8IDxsaXN0LW9mLXBhdGhzPiIKK21zZ3N0ciAiIgorImdpdCBjaGVjay1hdHRyIC0tc3RkaW4gWy16XSBbLWEgfCAtLWFsbCB8IEF0dHJpYnV0Li4uXSA8IDxMaXN0ZS12b24tUGZhZGVuPiIKKworIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MTkKK21zZ2lkICJyZXBvcnQgYWxsIGF0dHJpYnV0ZXMgc2V0IG9uIGZpbGUiCittc2dzdHIgImdpYnQgYWxsZSBBdHRyaWJ1dGUgZWluZXIgRGF0ZWkgYXVzIgorCisjOiBidWlsdGluL2NoZWNrLWF0dHIuYzoyMAorbXNnaWQgInVzZSAuZ2l0YXR0cmlidXRlcyBvbmx5IGZyb20gdGhlIGluZGV4IgorbXNnc3RyICJ2ZXJ3ZW5kZXQgLmdpdGF0dHJpYnV0ZXMgbnVyIHZvbiBkZXIgQmVyZWl0c3RlbGx1bmciCisKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIxIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MjIgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc1Cittc2dpZCAicmVhZCBmaWxlIG5hbWVzIGZyb20gc3RkaW4iCittc2dzdHIgImxpZXN0IERhdGVpbmFtZW4gdm9uIGRlciBTdGFuZGFyZC1FaW5nYWJlIgorCisjOiBidWlsdGluL2NoZWNrLWF0dHIuYzoyMyBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjI0Cittc2dpZCAiaW5wdXQgcGF0aHMgYXJlIHRlcm1pbmF0ZWQgYnkgYSBudWxsIGNoYXJhY3RlciIKK21zZ3N0ciAiRWluZ2FiZXBmYWRlIHNpbmQgZHVyY2ggZWluIE5VTCBaZWljaGVuIGFiZ2VzY2hsb3NzZW4iCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTggYnVpbHRpbi9jaGVja291dC5jOjEwNDQgYnVpbHRpbi9nYy5jOjE3NworbXNnaWQgInN1cHByZXNzIHByb2dyZXNzIHJlcG9ydGluZyIKK21zZ3N0ciAidW50ZXJkcsO8Y2t0IEZvcnRzY2hyaXR0c2FuemVpZ2UiCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTQ2Cittc2dpZCAiY2Fubm90IHNwZWNpZnkgcGF0aG5hbWVzIHdpdGggLS1zdGRpbiIKK21zZ3N0ciAiQW5nYWJlIHZvbiBQZmFkbmFtZW4ga2FubiBuaWNodCBnZW1laW5zYW0gbWl0IC0tc3RkaW4gdmVyd2VuZGV0IHdlcmRlbiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNDkKK21zZ2lkICIteiBvbmx5IG1ha2VzIHNlbnNlIHdpdGggLS1zdGRpbiIKK21zZ3N0ciAiRGllIE9wdGlvbiAteiBrYW5uIG51ciBtaXQgLS1zdGRpbiB2ZXJ3ZW5kZXQgd2VyZGVuLiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTEKK21zZ2lkICJubyBwYXRoIHNwZWNpZmllZCIKK21zZ3N0ciAia2VpbiBQZmFkIGFuZ2VnZWJlbiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTUKK21zZ2lkICItLXF1aWV0IGlzIG9ubHkgdmFsaWQgd2l0aCBhIHNpbmdsZSBwYXRobmFtZSIKK21zZ3N0ciAiRGllIE9wdGlvbiAtLXF1aWV0IGlzdCBudXIgbWl0IGVpbmVtIGVpbnplbG5lbiBQZmFkbmFtZW4gZ8O8bHRpZy4iCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTU3Cittc2dpZCAiY2Fubm90IGhhdmUgYm90aCAtLXF1aWV0IGFuZCAtLXZlcmJvc2UiCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uZW4gLS1xdWlldCB1bmQgLS12ZXJib3NlIGvDtm5uZW4gbmljaHQgZ2VtZWluc2FtIHZlcndlbmRldCB3ZXJkZW4uIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTI2Cittc2dpZCAiZ2l0IGNoZWNrb3V0LWluZGV4IFtvcHRpb25zXSBbLS1dIFs8ZmlsZT4uLi5dIgorbXNnc3RyICJnaXQgY2hlY2tvdXQtaW5kZXggW09wdGlvbmVuXSBbLS1dIFs8RGF0ZWk+Li4uXSIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE4NworbXNnaWQgImNoZWNrIG91dCBhbGwgZmlsZXMgaW4gdGhlIGluZGV4IgorbXNnc3RyICJjaGVja3QgYWxsZSBEYXRlaWVuIGluIGRlciBCZXJlaXRzdGVsbHVuZyBhdXMiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxODgKK21zZ2lkICJmb3JjZSBvdmVyd3JpdGUgb2YgZXhpc3RpbmcgZmlsZXMiCittc2dzdHIgImVyendpbmd0IGRhcyDDnGJlcnNjaHJlaWJlbiBiZXJlaXRzIGV4aXN0aWVyZW5kZXIgRGF0ZWllbiIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE5MAorbXNnaWQgIm5vIHdhcm5pbmcgZm9yIGV4aXN0aW5nIGZpbGVzIGFuZCBmaWxlcyBub3QgaW4gaW5kZXgiCittc2dzdHIgIiIKKyJrZWluZSBXYXJudW5nIGbDvHIgZXhpc3RpZXJlbmRlIERhdGVpZW4sIHVuZCBEYXRlaWVuLCBkaWUgc2ljaCBuaWNodCBpbiBkZXIgIgorIkJlcmVpdHN0ZWxsdW5nIGJlZmluZGVuIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTkyCittc2dpZCAiZG9uJ3QgY2hlY2tvdXQgbmV3IGZpbGVzIgorbXNnc3RyICJjaGVja3Qga2VpbmUgbmV1ZW4gRGF0ZWllbiBhdXMiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxOTQKK21zZ2lkICJ1cGRhdGUgc3RhdCBpbmZvcm1hdGlvbiBpbiB0aGUgaW5kZXggZmlsZSIKK21zZ3N0ciAiYWt0dWFsaXNpZXJ0IERhdGVpaW5mb3JtYXRpb25lbiBpbiBkZXIgQmVyZWl0c3RlbGx1bmdzZGF0ZWkiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoyMDAKK21zZ2lkICJyZWFkIGxpc3Qgb2YgcGF0aHMgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCittc2dzdHIgImxpZXN0IGVpbmUgTGlzdGUgdm9uIFBmYWRlbiB2b24gZGVyIFN0YW5kYXJkLUVpbmdhYmUiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoyMDIKK21zZ2lkICJ3cml0ZSB0aGUgY29udGVudCB0byB0ZW1wb3JhcnkgZmlsZXMiCittc2dzdHIgInNjaHJlaWJ0IGRlbiBJbmhhbHQgaW4gdGVtcG9yw6RyZSBEYXRlaWVuIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MjAzIGJ1aWx0aW4vY29sdW1uLmM6MzAKK21zZ2lkICJzdHJpbmciCittc2dzdHIgIlplaWNoZW5rZXR0ZSIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjIwNAorbXNnaWQgIndoZW4gY3JlYXRpbmcgZmlsZXMsIHByZXBlbmQgPHN0cmluZz4iCittc2dzdHIgIiIKKyJ3ZW5uIERhdGVpZW4gZXJ6ZXVndCB3ZXJkZW4sIHN0ZWxsZSA8WmVpY2hlbmtldHRlPiBkZW0gRGF0ZWluYW1lbiB2b3JhbiIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjIwNworbXNnaWQgImNvcHkgb3V0IHRoZSBmaWxlcyBmcm9tIG5hbWVkIHN0YWdlIgorbXNnc3RyICJrb3BpZXJ0IERhdGVpZW4gdm9uIGRlbSBiZW5hbm50ZW4gU3RhbmQiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNQorbXNnaWQgImdpdCBjaGVja291dCBbb3B0aW9uc10gPGJyYW5jaD4iCittc2dzdHIgImdpdCBjaGVja291dCBbT3B0aW9uZW5dIDxad2VpZz4iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNgorbXNnaWQgImdpdCBjaGVja291dCBbb3B0aW9uc10gWzxicmFuY2g+XSAtLSA8ZmlsZT4uLi4iCittc2dzdHIgImdpdCBjaGVja291dCBbT3B0aW9uZW5dIFtad2VpZz5dIC0tIDxEYXRlaT4uLi4iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTcgYnVpbHRpbi9jaGVja291dC5jOjE1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgZG9lcyBub3QgaGF2ZSBvdXIgdmVyc2lvbiIKIG1zZ3N0ciAiUGZhZCAnJXMnIGhhdCBuaWNodCB1bnNlcmUgVmVyc2lvbi4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTUgYnVpbHRpbi9jaGVja291dC5jOjE0OAorIzogYnVpbHRpbi9jaGVja291dC5jOjExOSBidWlsdGluL2NoZWNrb3V0LmM6MTUyCiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJyBkb2VzIG5vdCBoYXZlIHRoZWlyIHZlcnNpb24iCiBtc2dzdHIgIlBmYWQgJyVzJyBoYXQgbmljaHQgZGVyZW4gVmVyc2lvbi4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMzEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMzUKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgYWxsIG5lY2Vzc2FyeSB2ZXJzaW9ucyIKIG1zZ3N0ciAiUGZhZCAnJXMnIGhhdCBuaWNodCBhbGxlIG5vdHdlbmRpZ2VuIFZlcnNpb25lbi4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNzUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNzkKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgbmVjZXNzYXJ5IHZlcnNpb25zIgogbXNnc3RyICJQZmFkICclcycgaGF0IG5pY2h0IGRpZSBub3R3ZW5kaWdlbiBWZXJzaW9uZW4uIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTkyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTk2CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJzogY2Fubm90IG1lcmdlIgogbXNnc3RyICJQZmFkICclcyc6IGthbm4gbmljaHQgenVzYW1tZW5mw7xocmVuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjA5CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBhZGQgbWVyZ2UgcmVzdWx0IGZvciAnJXMnIgogbXNnc3RyICJLb25udGUgRXJnZWJuaXMgZGVyIFp1c2FtbWVuZsO8aHJ1bmcgdm9uICclcycgbmljaHQgaGluenVmw7xnZW4uIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjM0IGJ1aWx0aW4vY2hlY2tvdXQuYzozOTIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMzcgYnVpbHRpbi9jaGVja291dC5jOjI0MCBidWlsdGluL2NoZWNrb3V0LmM6MjQzCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCB1cGRhdGluZyBwYXRocyIKK21zZ3N0ciAiJyVzJyBrYW5uIG5pY2h0IG1pdCBQZmFkZW4gdmVyd2VuZGV0IHdlcmRlbiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjI0OSBidWlsdGluL2NoZWNrb3V0LmM6MjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIKK21zZ3N0ciAiJyVzJyBrYW5uIG5pY2h0IG1pdCAnJXMnIHZlcndlbmRldCB3ZXJkZW4iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHVwZGF0ZSBwYXRocyBhbmQgc3dpdGNoIHRvIGJyYW5jaCAnJXMnIGF0IHRoZSBzYW1lIHRpbWUuIgorbXNnc3RyICJLYW5uIG5pY2h0IGdsZWljaHplaXRpZyBQZmFkZSBha3R1YWxpc2llcmVuIHVuZCB6dSBad2VpZyAnJXMnIHdlY2hzZWxuIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjY2IGJ1aWx0aW4vY2hlY2tvdXQuYzo0NTgKIG1zZ2lkICJjb3JydXB0IGluZGV4IGZpbGUiCiBtc2dzdHIgImJlc2Now6RkaWd0ZSBCZXJlaXRzdGVsbHVuZ3NkYXRlaSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjI2NCBidWlsdGluL2NoZWNrb3V0LmM6MjcxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MzI5IGJ1aWx0aW4vY2hlY2tvdXQuYzozMzYKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGlzIHVubWVyZ2VkIgogbXNnc3RyICJQZmFkICclcycgaXN0IG5pY2h0IHp1c2FtbWVuZ2Vmw7xocnQuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MzAyIGJ1aWx0aW4vY2hlY2tvdXQuYzo0OTggYnVpbHRpbi9jbG9uZS5jOjU4MwotIzogYnVpbHRpbi9tZXJnZS5jOjgxMgotbXNnaWQgInVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIKLW1zZ3N0ciAiS29ubnRlIG5ldWUgQmVyZWl0c3RlbGx1bmdzZGF0ZWkgbmljaHQgc2NocmVpYmVuLiIKLQotIzogYnVpbHRpbi9jaGVja291dC5jOjMxOSBidWlsdGluL2RpZmYuYzozMDIgYnVpbHRpbi9tZXJnZS5jOjQwOAotbXNnaWQgImRpZmZfc2V0dXBfZG9uZSBmYWlsZWQiCi1tc2dzdHIgImRpZmZfc2V0dXBfZG9uZSBmZWhsZ2VzY2hsYWdlbiIKLQotIzogYnVpbHRpbi9jaGVja291dC5jOjQxNAorIzogYnVpbHRpbi9jaGVja291dC5jOjQ4MAogbXNnaWQgInlvdSBuZWVkIHRvIHJlc29sdmUgeW91ciBjdXJyZW50IGluZGV4IGZpcnN0IgotbXNnc3RyICJEdSBtdXNzdCB6dWVyc3QgZGVpbmUgYWt0dWVsbGUgQmVyZWl0c3RlbGx1bmcgYXVmbMO2c2VuLiIKK21zZ3N0ciAiU2llIG3DvHNzZW4genVlcnN0IElocmUgYWt0dWVsbGUgQmVyZWl0c3RlbGx1bmcgYXVmbMO2c2VuLiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjUzMworIzogYnVpbHRpbi9jaGVja291dC5jOjYwMQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW4gbm90IGRvIHJlZmxvZyBmb3IgJyVzJ1xuIgogbXNnc3RyICJLb25udGUgXCJyZWZsb2dcIiBmw7xyICclcycgbmljaHQgZHVyY2hmw7xocmVuXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo1NjYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MzQKIG1zZ2lkICJIRUFEIGlzIG5vdyBhdCIKIG1zZ3N0ciAiWndlaWdzcGl0emUgKEhFQUQpIGlzdCBqZXR6dCBiZWkiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo1NzMKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVzZXQgYnJhbmNoICclcydcbiIKLW1zZ3N0ciAiU2V0emUgWndlaWcgJyVzJyB6dXLDvGNrXG4iCittc2dzdHIgIlNldHplIFp3ZWlnICclcycgbmV1XG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo1NzYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWxyZWFkeSBvbiAnJXMnXG4iCiBtc2dzdHIgIkJlcmVpdHMgYXVmICclcydcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU4MAorIzogYnVpbHRpbi9jaGVja291dC5jOjY0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJTd2l0Y2hlZCB0byBhbmQgcmVzZXQgYnJhbmNoICclcydcbiIKLW1zZ3N0ciAiR2V3ZWNoc2VsdCB6dSB6dXLDvGNrZ2VzZXR6dGVtIFp3ZWlnICclcydcbiIKK21zZ3N0ciAiR2V3ZWNoc2VsdCB6dSBuZXUgZ2VzZXR6dGVtIFp3ZWlnICclcydcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU4MgorIzogYnVpbHRpbi9jaGVja291dC5jOjY1MCBidWlsdGluL2NoZWNrb3V0LmM6OTg3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIkdld2VjaHNlbHQgenUgZWluZW0gbmV1ZW4gWndlaWcgJyVzJ1xuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NTg0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIkdld2VjaHNlbHQgenUgWndlaWcgJyVzJ1xuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjQwCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzA4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAuLi4gYW5kICVkIG1vcmUuXG4iCiBtc2dzdHIgIiAuLi4gdW5kICVkIHdlaXRlcmUuXG4iCiAKICMuIFRoZSBzaW5ndWxhciB2ZXJzaW9uCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJXYXJuaW5nOiB5b3UgYXJlIGxlYXZpbmcgJWQgY29tbWl0IGJlaGluZCwgbm90IGNvbm5lY3RlZCB0b1xuIgpAQCAtMTg0OCwxNyArMzIyMywxNyBAQAogIlxuIgogIiVzXG4iCiBtc2dzdHJbMF0gIiIKLSJXYXJudW5nOiBEdSBiaXN0IHVtICVkIFZlcnNpb24gaGludGVyaGVyLCBuaWNodCB2ZXJidW5kZW4genVcbiIKLSJlaW5lbSBkZWluZXIgWndlaWdlOlxuIgorIldhcm51bmc6IFNpZSBzaW5kIHVtICVkIFZlcnNpb24gaGludGVyaGVyLCBuaWNodCB2ZXJidW5kZW4genVcbiIKKyJlaW5lbSBJaHJlciBad2VpZ2U6XG4iCiAiXG4iCiAiJXNcbiIKIG1zZ3N0clsxXSAiIgotIldhcm51bmc6IER1IGJpc3QgdW0gJWQgVmVyc2lvbmVuIGhpbnRlcmhlciwgbmljaHQgdmVyYnVuZGVuIHp1XG4iCi0iZWluZW0gZGVpbmVyIFp3ZWlnZTpcbiIKKyJXYXJudW5nOiBTaWUgc2luZCB1bSAlZCBWZXJzaW9uZW4gaGludGVyaGVyLCBuaWNodCB2ZXJidW5kZW4genVcbiIKKyJlaW5lbSBJaHJlciBad2VpZ2U6XG4iCiAiXG4iCiAiJXNcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjY2NAorIzogYnVpbHRpbi9jaGVja291dC5jOjczMgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiSWYgeW91IHdhbnQgdG8ga2VlcCB0aGVtIGJ5IGNyZWF0aW5nIGEgbmV3IGJyYW5jaCwgdGhpcyBtYXkgYmUgYSBnb29kIHRpbWVcbiIKQEAgLTE4NjcsMTI1ICszMjQyLDIzNCBAQAogIiBnaXQgYnJhbmNoIG5ld19icmFuY2hfbmFtZSAlc1xuIgogIlxuIgogbXNnc3RyICIiCi0iV2VubiBkdSBkaWVzZSBkdXJjaCBlaW5lbiBuZXVlbiBad2VpZyBiZWhhbHRlbiBtw7ZjaHRlc3QsIGRhbm4ga8O2bm50ZSBqZXR6dFxuIgorIldlbm4gU2llIGRpZXNlIGR1cmNoIGVpbmVuIG5ldWVuIFp3ZWlnIGJlaGFsdGVuIG3DtmNodGVuLCBkYW5uIGvDtm5udGUgamV0enRcbiIKICJlaW4gZ3V0ZXIgWmVpdHB1bmt0IHNlaW4gZGllcyB6dSB0dW4gbWl0OlxuIgogIlxuIgogIiBnaXQgYnJhbmNoIG5ldWVyX3p3ZWlnX25hbWUgJXNcbiIKICJcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjY5NAorIzogYnVpbHRpbi9jaGVja291dC5jOjc2MgogbXNnaWQgImludGVybmFsIGVycm9yIGluIHJldmlzaW9uIHdhbGsiCiBtc2dzdHIgImludGVybmVyIEZlaGxlciBpbSBSZXZpc2lvbnNnYW5nIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6Njk4CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzY2CiBtc2dpZCAiUHJldmlvdXMgSEVBRCBwb3NpdGlvbiB3YXMiCiBtc2dzdHIgIlZvcmhlcmlnZSBQb3NpdGlvbiBkZXIgWndlaWdzcGl0emUgKEhFQUQpIHdhciIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjcyNAorIzogYnVpbHRpbi9jaGVja291dC5jOjc5MyBidWlsdGluL2NoZWNrb3V0LmM6OTgyCiBtc2dpZCAiWW91IGFyZSBvbiBhIGJyYW5jaCB5ZXQgdG8gYmUgYm9ybiIKLW1zZ3N0ciAiZHUgYmlzdCBhdWYgZWluZW0gWndlaWcsIGRlciBub2NoIGdlYm9yZW4gd2lyZCIKK21zZ3N0ciAiU2llIHNpbmQgYXVmIGVpbmVtIFp3ZWlnLCBkZXIgbm9jaCBnZWJvcmVuIHdpcmQiCiAKICMuIGNhc2UgKDEpCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6ODU1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6OTE4CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgcmVmZXJlbmNlOiAlcyIKIG1zZ3N0ciAiVW5nw7xsdGlnZSBSZWZlcmVuejogJXMiCiAKICMuIGNhc2UgKDEpOiB3YW50IGEgdHJlZQotIzogYnVpbHRpbi9jaGVja291dC5jOjg5NAorIzogYnVpbHRpbi9jaGVja291dC5jOjk1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWZlcmVuY2UgaXMgbm90IGEgdHJlZTogJXMiCiBtc2dzdHIgIlJlZmVyZW56IGlzdCBrZWluIEJhdW06ICVzIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTc0Ci1tc2dpZCAiLUIgY2Fubm90IGJlIHVzZWQgd2l0aCAtYiIKLW1zZ3N0ciAiLUIga2FubiBuaWNodCBtaXQgLWIgYmVudXR6dCB3ZXJkZW4iCisjOiBidWlsdGluL2NoZWNrb3V0LmM6OTk2Cittc2dpZCAicGF0aHMgY2Fubm90IGJlIHVzZWQgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMiCittc2dzdHIgIlBmYWRlIGvDtm5uZW4gbmljaHQgYmVpbSBXZWNoc2VsbiB2b24gWndlaWdlbiB2ZXJ3ZW5kZXQgd2VyZGVuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTgzCi1tc2dpZCAiLS1wYXRjaCBpcyBpbmNvbXBhdGlibGUgd2l0aCBhbGwgb3RoZXIgb3B0aW9ucyIKLW1zZ3N0ciAiLS1wYXRjaCBpc3QgaW5rb21wYXRpYmVsIG1pdCBhbGxlbiBhbmRlcmVuIE9wdGlvbmVuIgorIzogYnVpbHRpbi9jaGVja291dC5jOjk5OSBidWlsdGluL2NoZWNrb3V0LmM6MTAwMworIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzIgorbXNnc3RyICInJXMnIGthbm4gbmljaHQgYmVpbSBXZWNoc2VsbiB2b24gWndlaWdlbiB2ZXJ3ZW5kZXQgd2VyZGVuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTg2Ci1tc2dpZCAiLS1kZXRhY2ggY2Fubm90IGJlIHVzZWQgd2l0aCAtYi8tQi8tLW9ycGhhbiIKLW1zZ3N0ciAiLS1kZXRhY2gga2FubiBuaWNodCBtaXQgLWIvLUIvLS1vcnBoYW4gYmVudXR6dCB3ZXJkZW4iCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAwNyBidWlsdGluL2NoZWNrb3V0LmM6MTAxMCBidWlsdGluL2NoZWNrb3V0LmM6MTAxNQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoICclcyciCittc2dzdHIgIiclcycga2FubiBuaWNodCBtaXQgJyVzJyB2ZXJ3ZW5kZXQgd2VyZGVuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTg4Ci1tc2dpZCAiLS1kZXRhY2ggY2Fubm90IGJlIHVzZWQgd2l0aCAtdCIKLW1zZ3N0ciAiLS1kZXRhY2gga2FubiBuaWNodCBtaXQgLXQgYmVudXR6dCB3ZXJkZW4iCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyMworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc3dpdGNoIGJyYW5jaCB0byBhIG5vbi1jb21taXQgJyVzJyIKK21zZ3N0ciAiS2FubiBad2VpZyBuaWNodCB6dSBOaWNodC1WZXJzaW9uICclcycgd2VjaHNlbG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5OTQKLW1zZ2lkICItLXRyYWNrIG5lZWRzIGEgYnJhbmNoIG5hbWUiCi1tc2dzdHIgIi0tdHJhY2sgYmVuw7Z0aWd0IGVpbmVuIFp3ZWlnbmFtZW4iCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA0NSBidWlsdGluL2NoZWNrb3V0LmM6MTA0NyBidWlsdGluL2Nsb25lLmM6OTAKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTY5IGJ1aWx0aW4vcmVtb3RlLmM6MTcxCittc2dpZCAiYnJhbmNoIgorbXNnc3RyICJad2VpZyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMDEKLW1zZ2lkICJNaXNzaW5nIGJyYW5jaCBuYW1lOyB0cnkgLWIiCi1tc2dzdHIgIlZlcm1pc3NlIFp3ZWlnbmFtZW47IHZlcnN1Y2hlIC1iIgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDYKK21zZ2lkICJjcmVhdGUgYW5kIGNoZWNrb3V0IGEgbmV3IGJyYW5jaCIKK21zZ3N0ciAiZXJ6ZXVndCB1bmQgY2hlY2t0IGVpbmVuIG5ldWVuIFp3ZWlnIGF1cyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMDcKLW1zZ2lkICItLW9ycGhhbiBhbmQgLWJ8LUIgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSIKLW1zZ3N0ciAiLS1vcnBoYW4gdW5kIC1ifC1CIHNpbmQgZ2VnZW5zZWl0aWcgZXhrbHVzaXYiCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA0OAorbXNnaWQgImNyZWF0ZS9yZXNldCBhbmQgY2hlY2tvdXQgYSBicmFuY2giCittc2dzdHIgImVyemV1Z3Qvc2V0enQgbmV1IHVuZCBjaGVja3QgZWluZW4gWndlaWcgYXVzIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAwOQotbXNnaWQgIi0tb3JwaGFuIGNhbm5vdCBiZSB1c2VkIHdpdGggLXQiCi1tc2dzdHIgIi0tb3JwaGFuIGthbm4gbmljaHQgbWl0IC10IGJlbnV0enQgd2VyZGVuIgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDkKK21zZ2lkICJjcmVhdGUgcmVmbG9nIGZvciBuZXcgYnJhbmNoIgorbXNnc3RyICJlcnpldWd0IFJlZmVyZW56cHJvdG9rb2xsIGbDvHIgZGVuIG5ldWVuIFp3ZWlnIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxOQotbXNnaWQgImdpdCBjaGVja291dDogLWYgYW5kIC1tIGFyZSBpbmNvbXBhdGlibGUiCi1tc2dzdHIgImdpdCBjaGVja291dDogLWYgdW5kIC1tIHNpbmQgaW5rb21wYXRpYmVsIgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTAKK21zZ2lkICJkZXRhY2ggdGhlIEhFQUQgYXQgbmFtZWQgY29tbWl0IgorbXNnc3RyICJzZXR6dCBkaWUgWndlaWdzcGl0emUgKEhFQUQpIHp1IGJlbmFubnRlciBWZXJzaW9uIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MQorbXNnaWQgInNldCB1cHN0cmVhbSBpbmZvIGZvciBuZXcgYnJhbmNoIgorbXNnc3RyICJzZXR6dCBJbmZvcm1hdGlvbmVuIHp1bSBleHRlcm5lbiDDnGJlcm5haG1lendlaWcgZsO8ciBkZW4gbmV1ZW4gWndlaWciCiAKICM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDUzCittc2dpZCAibmV3IGJyYW5jaCIKK21zZ3N0ciAibmV1ZXIgWndlaWciCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDUzCittc2dpZCAibmV3IHVucGFyZW50ZWQgYnJhbmNoIgorbXNnc3RyICJuZXVlciBad2VpZyBvaG5lIEVsdGVybnZlcnNpb24iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU0Cittc2dpZCAiY2hlY2tvdXQgb3VyIHZlcnNpb24gZm9yIHVubWVyZ2VkIGZpbGVzIgorbXNnc3RyICJjaGVja3QgdW5zZXJlIFZhcmlhbnRlIGbDvHIgbmljaHQgenVzYW1tZW5nZWbDvGhydGUgRGF0ZWllbiBhdXMiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU2Cittc2dpZCAiY2hlY2tvdXQgdGhlaXIgdmVyc2lvbiBmb3IgdW5tZXJnZWQgZmlsZXMiCittc2dzdHIgImNoZWNrdCBpaHJlIFZhcmlhbnRlIGbDvHIgbmljaHQgenVzYW1tZW5nZWbDvGhydGUgRGF0ZWllbiBhdXMiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU4Cittc2dpZCAiZm9yY2UgY2hlY2tvdXQgKHRocm93IGF3YXkgbG9jYWwgbW9kaWZpY2F0aW9ucykiCittc2dzdHIgImVyendpbmd0IEF1c2NoZWNrZW4gKHZlcndpcmZ0IGxva2FsZSDDhG5kZXJ1bmdlbikiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU5Cittc2dpZCAicGVyZm9ybSBhIDMtd2F5IG1lcmdlIHdpdGggdGhlIG5ldyBicmFuY2giCittc2dzdHIgImbDvGhydCBlaW5lIDMtV2VnZS1adXNhbW1lbmbDvGhydW5nIG1pdCBkZW0gbmV1ZW4gWndlaWcgYXVzIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MCBidWlsdGluL21lcmdlLmM6MjE3Cittc2dpZCAidXBkYXRlIGlnbm9yZWQgZmlsZXMgKGRlZmF1bHQpIgorbXNnc3RyICJha3R1YWxpc2llcnQgaWdub3JpZXJ0ZSBEYXRlaWVuIChTdGFuZGFyZCkiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYxIGJ1aWx0aW4vbG9nLmM6MTE1OCBwYXJzZS1vcHRpb25zLmg6MjQ1Cittc2dpZCAic3R5bGUiCittc2dzdHIgIlN0aWwiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYyCittc2dpZCAiY29uZmxpY3Qgc3R5bGUgKG1lcmdlIG9yIGRpZmYzKSIKK21zZ3N0ciAiS29uZmxpa3RzdGlsIChtZXJnZSBvZGVyIGRpZmYzKSIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjUKK21zZ2lkICJkbyBub3QgbGltaXQgcGF0aHNwZWNzIHRvIHNwYXJzZSBlbnRyaWVzIG9ubHkiCittc2dzdHIgIlBmYWRzcGV6aWZpa2F0aW9uZW4gaWdub3JpZXJlbiBFaW5zdGVsbHVuZ2VuIHp1bSBwYXJ0aWVsbGVuIEF1c2NoZWNrZW4iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDY3Cittc2dpZCAic2Vjb25kIGd1ZXNzICdnaXQgY2hlY2tvdXQgbm8tc3VjaC1icmFuY2gnIgorbXNnc3RyICJzZWNvbmQgZ3Vlc3MgJ2dpdCBjaGVja291dCBuby1zdWNoLWJyYW5jaCciCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDkxCittc2dpZCAiLWIsIC1CIGFuZCAtLW9ycGhhbiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIgorbXNnc3RyICJEaWUgT3B0aW9uZW4gLWIsIC1CIHVuZCAtLW9ycGhhbiBzY2hsaWXDn2VuIHNpY2ggZ2VnZW5zZWl0aWcgYXVzLiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjExMDgKK21zZ2lkICItLXRyYWNrIG5lZWRzIGEgYnJhbmNoIG5hbWUiCittc2dzdHIgIkJlaSBkZXIgT3B0aW9uIC0tdHJhY2sgbXVzcyBlaW4gWndlaWduYW1lIGFuZ2VnZWJlbiB3ZXJkZW4uIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTExNQorbXNnaWQgIk1pc3NpbmcgYnJhbmNoIG5hbWU7IHRyeSAtYiIKK21zZ3N0ciAiVmVybWlzc2UgWndlaWduYW1lbjsgdmVyc3VjaGVuIFNpZSAtYiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjExNTAKIG1zZ2lkICJpbnZhbGlkIHBhdGggc3BlY2lmaWNhdGlvbiIKIG1zZ3N0ciAidW5nw7xsdGlnZSBQZmFkc3BlemlmaWthdGlvbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKLSJnaXQgY2hlY2tvdXQ6IHVwZGF0aW5nIHBhdGhzIGlzIGluY29tcGF0aWJsZSB3aXRoIHN3aXRjaGluZyBicmFuY2hlcy5cbiIKKyJDYW5ub3QgdXBkYXRlIHBhdGhzIGFuZCBzd2l0Y2ggdG8gYnJhbmNoICclcycgYXQgdGhlIHNhbWUgdGltZS5cbiIKICJEaWQgeW91IGludGVuZCB0byBjaGVja291dCAnJXMnIHdoaWNoIGNhbiBub3QgYmUgcmVzb2x2ZWQgYXMgY29tbWl0PyIKIG1zZ3N0ciAiIgotImdpdCBjaGVja291dDogRGllIEFrdHVhbGlzaWVydW5nIHZvbiBQZmFkZW4gaXN0IGlua29tcGF0aWJlbCBtaXQgZGVtIFdlY2hzZWwgIgotInZvbiBad2VpZ2VuLlxuIgotIkhhc3QgZHUgYmVhYnNpY2h0aWd0ICclcycgYXVzenVjaGVja2VuLCB3ZWxjaGVyIG5pY2h0IGFscyBWZXJzaW9uIGF1ZmdlbMO2c3QgIgotIndlcmRlbiBrYW5uPyIKKyJLYW5uIG5pY2h0IGdsZWljaHplaXRpZyBQZmFkZSBha3R1YWxpc2llcmVuIHVuZCB6dSBad2VpZyAnJXMnIHdlY2hzZWxuLlxuIgorIkhhYmVuIFNpZSBiZWFic2ljaHRpZ3QgJyVzJyBhdXN6dWNoZWNrZW4sIHdlbGNoZXIgbmljaHQgYWxzIFZlcnNpb24gIgorImF1ZmdlbMO2c3Qgd2VyZGVuIGthbm4/IgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MwotbXNnaWQgImdpdCBjaGVja291dDogdXBkYXRpbmcgcGF0aHMgaXMgaW5jb21wYXRpYmxlIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzLiIKLW1zZ3N0ciAiIgotImdpdCBjaGVja291dDogRGllIEFrdHVhbGlzaWVydW5nIHZvbiBQZmFkZW4gaXN0IGlua29tcGF0aWJlbCBtaXQgZGVtIFdlY2hzZWwgIgotInZvbiBad2VpZ2VuLiIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTYyCisjLCBjLWZvcm1hdAorbXNnaWQgImdpdCBjaGVja291dDogLS1kZXRhY2ggZG9lcyBub3QgdGFrZSBhIHBhdGggYXJndW1lbnQgJyVzJyIKK21zZ3N0ciAiZ2l0IGNoZWNrb3V0OiAtLWRldGFjaCBuaW1tdCBrZWluIFBmYWQtQXJndW1lbnQgJyVzJyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjgKLW1zZ2lkICJnaXQgY2hlY2tvdXQ6IC0tZGV0YWNoIGRvZXMgbm90IHRha2UgYSBwYXRoIGFyZ3VtZW50IgotbXNnc3RyICJnaXQgY2hlY2tvdXQ6IC0tZGV0YWNoIG5pbW10IGtlaW4gUGZhZC1Bcmd1bWVudCIKLQotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNzEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTY2CiBtc2dpZCAiIgogImdpdCBjaGVja291dDogLS1vdXJzLy0tdGhlaXJzLCAtLWZvcmNlIGFuZCAtLW1lcmdlIGFyZSBpbmNvbXBhdGlibGUgd2hlblxuIgogImNoZWNraW5nIG91dCBvZiB0aGUgaW5kZXguIgogbXNnc3RyICIiCi0iZ2l0IGNoZWNrb3V0OiAtLW91cnMvLS10aGVpcnMsIC0tZm9yY2UgYW5kIC0tbWVyZ2Ugc2luZCBpbmtvbXBhdGliZWwgd2VublxuIgotImR1IGF1cyBkZXIgQmVyZWl0c3RlbGx1bmcgYXVzY2hlY2tzdC4iCisiZ2l0IGNoZWNrb3V0OiAtLW91cnMvLS10aGVpcnMsIC0tZm9yY2UgdW5kIC0tbWVyZ2Ugc2luZCBpbmtvbXBhdGliZWwgd2VublxuIgorIlNpZSBhdXMgZGVyIEJlcmVpdHN0ZWxsdW5nIGF1c2NoZWNrZW4uIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA5MAotbXNnaWQgIkNhbm5vdCBzd2l0Y2ggYnJhbmNoIHRvIGEgbm9uLWNvbW1pdC4iCi1tc2dzdHIgIkthbm4gWndlaWcgbnVyIHp1IGVpbmVyIFZlcnNpb24gd2VjaHNlbG4uIgorIzogYnVpbHRpbi9jbGVhbi5jOjIwCittc2dpZCAiZ2l0IGNsZWFuIFstZF0gWy1mXSBbLW5dIFstcV0gWy1lIDxwYXR0ZXJuPl0gWy14IHwgLVhdIFstLV0gPHBhdGhzPi4uLiIKK21zZ3N0ciAiZ2l0IGNsZWFuIFstZF0gWy1mXSBbLW5dIFstcV0gWy1lIDxNdXN0ZXI+XSBbLXggfCAtWF0gWy0tXSA8UGZhZGU+Li4uIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA5MwotbXNnaWQgIi0tb3Vycy8tLXRoZWlycyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMuIgotbXNnc3RyICItLW91cnMvLS10aGVpcnMgaXN0IGlua29tcGF0aWJlbCBtaXQgZGVuIFdlY2hzZWxuIHZvbiBad2VpZ2VuLiIKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNAorIywgYy1mb3JtYXQKK21zZ2lkICJSZW1vdmluZyAlc1xuIgorbXNnc3RyICJMw7ZzY2hlICVzXG4iCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo3OAorIzogYnVpbHRpbi9jbGVhbi5jOjI1CisjLCBjLWZvcm1hdAorbXNnaWQgIldvdWxkIHJlbW92ZSAlc1xuIgorbXNnc3RyICJXw7xyZGUgJXMgbMO2c2NoZW5cbiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIlNraXBwaW5nIHJlcG9zaXRvcnkgJXNcbiIKK21zZ3N0ciAiw5xiZXJzcHJpbmdlIFByb2pla3RhcmNoaXYgJXNcbiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjI3CisjLCBjLWZvcm1hdAorbXNnaWQgIldvdWxkIHNraXAgcmVwb3NpdG9yeSAlc1xuIgorbXNnc3RyICJXw7xyZGUgUHJvamVrdGFyY2hpdiAlcyDDvGJlcnNwcmluZ2VuXG4iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyOAorIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgdG8gcmVtb3ZlICVzIgorbXNnc3RyICJGZWhsZXIgYmVpbSBMw7ZzY2hlbiB2b24gJXMiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjAKK21zZ2lkICJkbyBub3QgcHJpbnQgbmFtZXMgb2YgZmlsZXMgcmVtb3ZlZCIKK21zZ3N0ciAiZ2lidCBrZWluZSBOYW1lbiB2b24gZ2Vsw7ZzY2h0ZW4gRGF0ZWllbiBhdXMiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjIKK21zZ2lkICJmb3JjZSIKK21zZ3N0ciAiZXJ6d2luZ3QgQWt0aW9uIgorCisjOiBidWlsdGluL2NsZWFuLmM6MTY0Cittc2dpZCAicmVtb3ZlIHdob2xlIGRpcmVjdG9yaWVzIgorbXNnc3RyICJsw7ZzY2h0IGdhbnplIFZlcnplaWNobmlzc2UiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjUgYnVpbHRpbi9kZXNjcmliZS5jOjQxMiBidWlsdGluL2dyZXAuYzo3MTcKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODcgYnVpbHRpbi9uYW1lLXJldi5jOjIzMSBidWlsdGluL3Nob3ctcmVmLmM6MTgyCittc2dpZCAicGF0dGVybiIKK21zZ3N0ciAiTXVzdGVyIgorCisjOiBidWlsdGluL2NsZWFuLmM6MTY2Cittc2dpZCAiYWRkIDxwYXR0ZXJuPiB0byBpZ25vcmUgcnVsZXMiCittc2dzdHIgImbDvGd0IDxNdXN0ZXI+IHp1IGRlbiBSZWdlbG4gZsO8ciBpZ25vcmllcnRlIFBmYWRlIGhpbnp1IgorCisjOiBidWlsdGluL2NsZWFuLmM6MTY3Cittc2dpZCAicmVtb3ZlIGlnbm9yZWQgZmlsZXMsIHRvbyIKK21zZ3N0ciAibMO2c2NodCBhdWNoIGlnbm9yaWVydGUgRGF0ZWllbiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjE2OQorbXNnaWQgInJlbW92ZSBvbmx5IGlnbm9yZWQgZmlsZXMiCittc2dzdHIgImzDtnNjaHQgbnVyIGlnbm9yaWVydGUgRGF0ZWllbiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjE4NwogbXNnaWQgIi14IGFuZCAtWCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIKLW1zZ3N0ciAiLXggdW5kIC1YIGvDtm5uZW4gbmljaHQgenVzYW1tZW4gYmVudXR6dCB3ZXJkZW4iCittc2dzdHIgIkRpZSBPcHRpb25lbiAteCB1bmQgLVgga8O2bm5lbiBuaWNodCBnZW1laW5zYW0gdmVyd2VuZGV0IHdlcmRlbi4iCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo4MgorIzogYnVpbHRpbi9jbGVhbi5jOjE5MQogbXNnaWQgIiIKICJjbGVhbi5yZXF1aXJlRm9yY2Ugc2V0IHRvIHRydWUgYW5kIG5laXRoZXIgLW4gbm9yIC1mIGdpdmVuOyByZWZ1c2luZyB0byBjbGVhbiIKIG1zZ3N0ciAiIgogImNsZWFuLnJlcXVpcmVGb3JjZSBhdWYgXCJ0cnVlXCIgZ2VzZXR6dCB1bmQgd2VkZXIgLW4gbm9jaCAtZiBnZWdlYmVuOyAiCiAiU8OkdWJlcnVuZyB2ZXJ3ZWlnZXJ0IgogCi0jOiBidWlsdGluL2NsZWFuLmM6ODUKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxOTQKIG1zZ2lkICIiCiAiY2xlYW4ucmVxdWlyZUZvcmNlIGRlZmF1bHRzIHRvIHRydWUgYW5kIG5laXRoZXIgLW4gbm9yIC1mIGdpdmVuOyByZWZ1c2luZyB0byAiCiAiY2xlYW4iCkBAIC0xOTkzLDE2MyArMzQ3NywyODIgQEAKICJjbGVhbi5yZXF1aXJlRm9yY2Ugc3RhbmRhcmRtw6TDn2lnIGF1ZiBcInRydWVcIiBnZXNldHp0IHVuZCB3ZWRlciAtbiBub2NoIC1mICIKICJnZWdlYmVuOyBTw6R1YmVydW5nIHZlcndlaWdlcnQiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNTUgYnVpbHRpbi9jbGVhbi5jOjE3NgotIywgYy1mb3JtYXQKLW1zZ2lkICJXb3VsZCByZW1vdmUgJXNcbiIKLW1zZ3N0ciAiV8O8cmRlICVzIGVudGZlcm5lblxuIgorIzogYnVpbHRpbi9jbG9uZS5jOjM3Cittc2dpZCAiZ2l0IGNsb25lIFtvcHRpb25zXSBbLS1dIDxyZXBvPiBbPGRpcj5dIgorbXNnc3RyICJnaXQgY2xvbmUgW09wdGlvbmVuXSBbLS1dIDxQcm9qZWt0YXJjaGl2PiBbPFZlcnplaWNobmlzPl0iCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNTkgYnVpbHRpbi9jbGVhbi5jOjE3OQotIywgYy1mb3JtYXQKLW1zZ2lkICJSZW1vdmluZyAlc1xuIgotbXNnc3RyICJFbnRmZXJuZSAlc1xuIgorIzogYnVpbHRpbi9jbG9uZS5jOjY1IGJ1aWx0aW4vZmV0Y2guYzo4MiBidWlsdGluL21lcmdlLmM6MjE0CisjOiBidWlsdGluL3B1c2guYzo0MzYKK21zZ2lkICJmb3JjZSBwcm9ncmVzcyByZXBvcnRpbmciCittc2dzdHIgImVyendpbmd0IEZvcnRzY2hyaXR0c2FuemVpZ2UiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjIgYnVpbHRpbi9jbGVhbi5jOjE4MgotIywgYy1mb3JtYXQKLW1zZ2lkICJmYWlsZWQgdG8gcmVtb3ZlICVzIgotbXNnc3RyICJGZWhsZXIgYmVpbSBFbnRmZXJuZW4gdm9uICVzIgorIzogYnVpbHRpbi9jbG9uZS5jOjY3Cittc2dpZCAiZG9uJ3QgY3JlYXRlIGEgY2hlY2tvdXQiCittc2dzdHIgImtlaW4gQXVzY2hlY2tlbiIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjE2NgotIywgYy1mb3JtYXQKLW1zZ2lkICJXb3VsZCBub3QgcmVtb3ZlICVzXG4iCi1tc2dzdHIgIlfDvHJkZSBuaWNodCBlbnRmZXJuZW4gJXNcbiIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2OCBidWlsdGluL2Nsb25lLmM6NzAgYnVpbHRpbi9pbml0LWRiLmM6NDg4Cittc2dpZCAiY3JlYXRlIGEgYmFyZSByZXBvc2l0b3J5IgorbXNnc3RyICJlcnN0ZWxsdCBlaW4gYmxvw59lcyBQcm9qZWt0YXJjaGl2IgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTY4Ci0jLCBjLWZvcm1hdAotbXNnaWQgIk5vdCByZW1vdmluZyAlc1xuIgotbXNnc3RyICJFbnRmZXJuZSBuaWNodCAlc1xuIgorIzogYnVpbHRpbi9jbG9uZS5jOjczCittc2dpZCAiY3JlYXRlIGEgbWlycm9yIHJlcG9zaXRvcnkgKGltcGxpZXMgYmFyZSkiCittc2dzdHIgImVyc3RlbGx0IGVpbiBTcGllZ2VsYXJjaGl2IChpbXBsaXppZXJ0IGJsb8OfZXMgUHJvamVrdGFyY2hpdikiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzoyNDMKLSMsIGMtZm9ybWF0Ci1tc2dpZCAicmVmZXJlbmNlIHJlcG9zaXRvcnkgJyVzJyBpcyBub3QgYSBsb2NhbCBkaXJlY3RvcnkuIgotbXNnc3RyICJSZWZlcmVuemllcnRlcyBQcm9qZWt0YXJjaGl2ICclcycgaXN0IGtlaW4gbG9rYWxlcyBWZXJ6ZWljaG5pcy4iCisjOiBidWlsdGluL2Nsb25lLmM6NzUKK21zZ2lkICJ0byBjbG9uZSBmcm9tIGEgbG9jYWwgcmVwb3NpdG9yeSIKK21zZ3N0ciAidW0gdm9uIGVpbmVtIGxva2FsZW4gUHJvamVrdGFyY2hpdiB6dSBrbG9uZW4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMDIKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiZmFpbGVkIHRvIG9wZW4gJyVzJyIKLW1zZ3N0ciAiRmVobGVyIGJlaW0gw5ZmZm5lbiB2b24gJyVzJyIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NworbXNnaWQgImRvbid0IHVzZSBsb2NhbCBoYXJkbGlua3MsIGFsd2F5cyBjb3B5IgorbXNnc3RyICJ2ZXJ3ZW5kZXQgbG9rYWwga2VpbmUgaGFydGVuIExpbmtzLCBpbW1lciBLb3BpZW4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMDYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3OQorbXNnaWQgInNldHVwIGFzIHNoYXJlZCByZXBvc2l0b3J5IgorbXNnc3RyICJFaW5yaWNodHVuZyBhbHMgdmVydGVpbHRlcyBQcm9qZWt0YXJjaGl2IgorCisjOiBidWlsdGluL2Nsb25lLmM6ODEgYnVpbHRpbi9jbG9uZS5jOjgzCittc2dpZCAiaW5pdGlhbGl6ZSBzdWJtb2R1bGVzIGluIHRoZSBjbG9uZSIKK21zZ3N0ciAiaW5pdGlhbGlzaWVydCBVbnRlcnByb2pla3RlIGltIEtsb24iCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NCBidWlsdGluL2luaXQtZGIuYzo0ODUKK21zZ2lkICJ0ZW1wbGF0ZS1kaXJlY3RvcnkiCittc2dzdHIgIlZvcmxhZ2VudmVyemVpY2huaXMiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NSBidWlsdGluL2luaXQtZGIuYzo0ODYKK21zZ2lkICJkaXJlY3RvcnkgZnJvbSB3aGljaCB0ZW1wbGF0ZXMgd2lsbCBiZSB1c2VkIgorbXNnc3RyICJWZXJ6ZWljaG5pcywgdm9uIHdlbGNoZW0gZGllIFZvcmxhZ2VuIHZlcndlbmRldCB3ZXJkZW4iCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NworbXNnaWQgInJlZmVyZW5jZSByZXBvc2l0b3J5IgorbXNnc3RyICJyZWZlcmVuemllcnQgUHJvamVrdGFyY2hpdiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjg4IGJ1aWx0aW4vY29sdW1uLmM6MjYgYnVpbHRpbi9tZXJnZS1maWxlLmM6NDQKK21zZ2lkICJuYW1lIgorbXNnc3RyICJOYW1lIgorCisjOiBidWlsdGluL2Nsb25lLmM6ODkKK21zZ2lkICJ1c2UgPG5hbWU+IGluc3RlYWQgb2YgJ29yaWdpbicgdG8gdHJhY2sgdXBzdHJlYW0iCittc2dzdHIgInZlcndlbmRldCA8TmFtZT4gc3RhdHQgJ29yaWdpbicgZsO8ciBleHRlcm5lcyBQcm9qZWt0YXJjaGl2IgorCisjOiBidWlsdGluL2Nsb25lLmM6OTEKK21zZ2lkICJjaGVja291dCA8YnJhbmNoPiBpbnN0ZWFkIG9mIHRoZSByZW1vdGUncyBIRUFEIgorbXNnc3RyICIiCisiY2hlY2t0IDxad2VpZz4gYXVzLCBhbnN0YXR0IFp3ZWlnc3BpdHplIChIRUFEKSBkZXMgZXh0ZXJuZW4gUHJvamVrdGFyY2hpdnMiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MworbXNnaWQgInBhdGggdG8gZ2l0LXVwbG9hZC1wYWNrIG9uIHRoZSByZW1vdGUiCittc2dzdHIgIlBmYWQgenUgXCJnaXQtdXBsb2FkLXBhY2tcIiBhdWYgZGVyIEdlZ2Vuc2VpdGUiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5NCBidWlsdGluL2ZldGNoLmM6ODMgYnVpbHRpbi9ncmVwLmM6NjYyCittc2dpZCAiZGVwdGgiCittc2dzdHIgIlRpZWZlIgorCisjOiBidWlsdGluL2Nsb25lLmM6OTUKK21zZ2lkICJjcmVhdGUgYSBzaGFsbG93IGNsb25lIG9mIHRoYXQgZGVwdGgiCittc2dzdHIgImVyc3RlbGx0IGVpbmVuIGZsYWNoZW4gS2xvbiBtaXQgZGllc2VyIFRpZWZlIgorCisjOiBidWlsdGluL2Nsb25lLmM6OTcKK21zZ2lkICJjbG9uZSBvbmx5IG9uZSBicmFuY2gsIEhFQUQgb3IgLS1icmFuY2giCittc2dzdHIgImtsb250IG51ciBlaW5lbiBad2VpZywgWndlaWdzcGl0emUgKEhFQUQpIG9kZXIgLS1icmFuY2giCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5OCBidWlsdGluL2luaXQtZGIuYzo0OTQKK21zZ2lkICJnaXRkaXIiCittc2dzdHIgIi5naXQtVmVyemVpY2huaXMiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5OSBidWlsdGluL2luaXQtZGIuYzo0OTUKK21zZ2lkICJzZXBhcmF0ZSBnaXQgZGlyIGZyb20gd29ya2luZyB0cmVlIgorbXNnc3RyICJzZXBhcmllcnQgR2l0LVZlcnplaWNobmlzIHZvbSBBcmJlaXRzYmF1bSIKKworIzogYnVpbHRpbi9jbG9uZS5jOjEwMAorbXNnaWQgImtleT12YWx1ZSIKK21zZ3N0ciAiU2NobMO8c3NlbD1XZXJ0IgorCisjOiBidWlsdGluL2Nsb25lLmM6MTAxCittc2dpZCAic2V0IGNvbmZpZyBpbnNpZGUgdGhlIG5ldyByZXBvc2l0b3J5IgorbXNnc3RyICJzZXR6dCBLb25maWd1cmF0aW9uIGlubmVyaGFsYiBkZXMgbmV1ZW4gUHJvamVrdGFyY2hpdnMiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzoyNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVmZXJlbmNlIHJlcG9zaXRvcnkgJyVzJyBpcyBub3QgYSBsb2NhbCByZXBvc2l0b3J5LiIKK21zZ3N0ciAiUmVmZXJlbnppZXJ0ZXMgUHJvamVrdGFyY2hpdiAnJXMnIGlzdCBrZWluIGxva2FsZXMgUHJvamVrdGFyY2hpdi4iCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJyVzJyIKIG1zZ3N0ciAiRmVobGVyIGJlaW0gRXJzdGVsbGVuIHZvbiBWZXJ6ZWljaG5pcyAnJXMnIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzA4IGJ1aWx0aW4vZGlmZi5jOjc1CisjOiBidWlsdGluL2Nsb25lLmM6MzE5IGJ1aWx0aW4vZGlmZi5jOjc3CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBzdGF0ICclcyciCiBtc2dzdHIgIktvbm50ZSAnJXMnIG5pY2h0IGxlc2VuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzEwCisjOiBidWlsdGluL2Nsb25lLmM6MzIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGV4aXN0cyBhbmQgaXMgbm90IGEgZGlyZWN0b3J5IgogbXNnc3RyICIlcyBleGlzdGllcnQgdW5kIGlzdCBrZWluIFZlcnplaWNobmlzIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzI0CisjOiBidWlsdGluL2Nsb25lLmM6MzM1CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBzdGF0ICVzXG4iCiBtc2dzdHIgIktvbm50ZSAlcyBuaWNodCBsZXNlblxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzQxCi0jLCBjLWZvcm1hdAotbXNnaWQgImZhaWxlZCB0byB1bmxpbmsgJyVzJyIKLW1zZ3N0ciAiS29ubnRlICclcycgbmljaHQgZW50ZmVybmVuIgotCi0jOiBidWlsdGluL2Nsb25lLmM6MzQ2CisjOiBidWlsdGluL2Nsb25lLmM6MzU3CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjcmVhdGUgbGluayAnJXMnIgogbXNnc3RyICJLb25udGUgVmVya27DvHBmdW5nICclcycgbmljaHQgZXJzdGVsbGVuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzUwCisjOiBidWlsdGluL2Nsb25lLmM6MzYxCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjb3B5IGZpbGUgdG8gJyVzJyIKIG1zZ3N0ciAiS29ubnRlIERhdGVpIG5pY2h0IG5hY2ggJyVzJyBrb3BpZXJlbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjM3MworIzogYnVpbHRpbi9jbG9uZS5jOjM4NAogIywgYy1mb3JtYXQKIG1zZ2lkICJkb25lLlxuIgogbXNnc3RyICJGZXJ0aWcuXG4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo0NDAKKyM6IGJ1aWx0aW4vY2xvbmUuYzozOTcKK21zZ2lkICIiCisiQ2xvbmUgc3VjY2VlZGVkLCBidXQgY2hlY2tvdXQgZmFpbGVkLlxuIgorIllvdSBjYW4gaW5zcGVjdCB3aGF0IHdhcyBjaGVja2VkIG91dCB3aXRoICdnaXQgc3RhdHVzJ1xuIgorImFuZCByZXRyeSB0aGUgY2hlY2tvdXQgd2l0aCAnZ2l0IGNoZWNrb3V0IC1mIEhFQUQnXG4iCittc2dzdHIgIiIKKyJLbG9uZW4gZXJmb2xncmVpY2gsIEF1c2NoZWNrZW4gaXN0IGFiZXIgZmVobGdlc2NobGFnZW4uXG4iCisiU2llIGvDtm5uZW4gbWl0ICdnaXQgc3RhdHVzJyBwcsO8ZmVuLCB3YXMgYXVzZ2VjaGVja3Qgd29yZGVuIGlzdFxuIgorInVuZCBkYXMgQXVzY2hlY2tlbiBtaXQgJ2dpdCBjaGVja291dCAtZiBIRUFEJyBlcm5ldXQgdmVyc3VjaGVuLlxuIgorCisjOiBidWlsdGluL2Nsb25lLmM6NDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmaW5kIHJlbW90ZSBicmFuY2ggJXMgdG8gY2xvbmUuIgogbXNnc3RyICJLb25udGUgenUga2xvbmVuZGVuIGV4dGVybmVyIFp3ZWlnICVzIG5pY2h0IGZpbmRlbi4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo1NDkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo1NTAKK21zZ2lkICJyZW1vdGUgZGlkIG5vdCBzZW5kIGFsbCBuZWNlc3Nhcnkgb2JqZWN0cyIKK21zZ3N0ciAiRmVybmFyY2hpdiBoYXQgbmljaHQgYWxsZSBlcmZvcmRlcmxpY2hlbiBPYmpla3RlIGdlc2VuZGV0LiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjYxMAogbXNnaWQgInJlbW90ZSBIRUFEIHJlZmVycyB0byBub25leGlzdGVudCByZWYsIHVuYWJsZSB0byBjaGVja291dC5cbiIKIG1zZ3N0ciAiIgogIkV4dGVybmUgWndlaWdzcGl0emUgKEhFQUQpIGJlemllaHQgc2ljaCBhdWYgZWluZSBuaWNodCBleGlzdGllcmVuZGUgUmVmZXJlbnogIgogInVuZCBrYW5uIG5pY2h0IGF1c2dlY2hlY2t0IHdlcmRlbi5cbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjYzOQorIzogYnVpbHRpbi9jbG9uZS5jOjY0MQorbXNnaWQgInVuYWJsZSB0byBjaGVja291dCB3b3JraW5nIHRyZWUiCittc2dzdHIgIkFyYmVpdHNiYXVtIGtvbm50ZSBuaWNodCBhdXNnZWNoZWNrdCB3ZXJkZW4iCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NDkKIG1zZ2lkICJUb28gbWFueSBhcmd1bWVudHMuIgogbXNnc3RyICJadSB2aWVsZSBBcmd1bWVudGUuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjQzCisjOiBidWlsdGluL2Nsb25lLmM6NzUzCiBtc2dpZCAiWW91IG11c3Qgc3BlY2lmeSBhIHJlcG9zaXRvcnkgdG8gY2xvbmUuIgotbXNnc3RyICJEdSBtdXNzdCBlaW4gUHJvamVrdGFyY2hpdiB6dW0gS2xvbmVuIGFuZ2ViZW4uIgorbXNnc3RyICJTaWUgbcO8c3NlbiBlaW4gUHJvamVrdGFyY2hpdiB6dW0gS2xvbmVuIGFuZ2ViZW4uIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjU0CisjOiBidWlsdGluL2Nsb25lLmM6NzY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIi0tYmFyZSBhbmQgLS1vcmlnaW4gJXMgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKLW1zZ3N0ciAiLS1iYXJlIHVuZCAtLW9yaWdpbiAlcyBPcHRpb25lbiBzaW5kIGlua29tcGF0aWJlbC4iCittc2dzdHIgIkRpZSBPcHRpb25lbiAtLWJhcmUgdW5kIC0tb3JpZ2luICVzIHNpbmQgaW5rb21wYXRpYmVsLiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY2OAorIzogYnVpbHRpbi9jbG9uZS5jOjc2NworbXNnaWQgIi0tYmFyZSBhbmQgLS1zZXBhcmF0ZS1naXQtZGlyIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJEaWUgT3B0aW9uZW4gLS1iYXJlIHVuZCAtLXNlcGFyYXRlLWdpdC1kaXIgc2luZCBpbmtvbXBhdGliZWwuIgorCisjOiBidWlsdGluL2Nsb25lLmM6NzgwCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlcG9zaXRvcnkgJyVzJyBkb2VzIG5vdCBleGlzdCIKIG1zZ3N0ciAiUHJvamVrdGFyY2hpdiAnJXMnIGV4aXN0aWVydCBuaWNodC4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NzMKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3ODUKIG1zZ2lkICItLWRlcHRoIGlzIGlnbm9yZWQgaW4gbG9jYWwgY2xvbmVzOyB1c2UgZmlsZTovLyBpbnN0ZWFkLiIKLW1zZ3N0ciAiLS1kZXB0aCB3aXJkIGluIGxva2FsZW4gS2xvbmVuIGlnbm9yaWVydDsgYmVudXR6ZSBzdGF0dGRlc3NlbiBmaWxlOi8vLiIKK21zZ3N0ciAiIgorIkRpZSBPcHRpb24gLS1kZXB0aCB3aXJkIGluIGxva2FsZW4gS2xvbmVuIGlnbm9yaWVydDsgYmVudXR6ZW4gU2llICIKKyJzdGF0dGRlc3NlbiBmaWxlOi8vIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjgzCisjOiBidWlsdGluL2Nsb25lLmM6Nzk1CiAjLCBjLWZvcm1hdAogbXNnaWQgImRlc3RpbmF0aW9uIHBhdGggJyVzJyBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90IGFuIGVtcHR5IGRpcmVjdG9yeS4iCiBtc2dzdHIgIlppZWxwZmFkICclcycgZXhpc3RpZXJ0IGJlcmVpdHMgdW5kIGlzdCBrZWluIGxlZXJlcyBWZXJ6ZWljaG5pcy4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2OTMKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MDUKICMsIGMtZm9ybWF0CiBtc2dpZCAid29ya2luZyB0cmVlICclcycgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJBcmJlaXRzYmF1bSAnJXMnIGV4aXN0aWVydCBiZXJlaXRzLiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjcwNiBidWlsdGluL2Nsb25lLmM6NzIwCisjOiBidWlsdGluL2Nsb25lLmM6ODE4IGJ1aWx0aW4vY2xvbmUuYzo4MzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGNyZWF0ZSBsZWFkaW5nIGRpcmVjdG9yaWVzIG9mICclcyciCiBtc2dzdHIgIktvbm50ZSBmw7xocmVuZGUgVmVyemVpY2huaXNzZSB2b24gJyVzJyBuaWNodCBlcnN0ZWxsZW4uIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzA5CisjOiBidWlsdGluL2Nsb25lLmM6ODIxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgd29yayB0cmVlIGRpciAnJXMnLiIKIG1zZ3N0ciAiS29ubnRlIEFyYmVpdHN2ZXJ6ZWljaG5pcyAnJXMnIG5pY2h0IGVyc3RlbGxlbi4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3MjgKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2xvbmluZyBpbnRvIGJhcmUgcmVwb3NpdG9yeSAnJXMnLi4uXG4iCiBtc2dzdHIgIktsb25lIGluIGJsb8OfZXMgUHJvamVrdGFyY2hpdiAnJXMnLi4uXG4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3MzAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2xvbmluZyBpbnRvICclcycuLi5cbiIKIG1zZ3N0ciAiS2xvbmUgbmFjaCAnJXMnLi4uXG4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3ODYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiRG9uJ3Qga25vdyBob3cgdG8gY2xvbmUgJXMiCiBtc2dzdHIgIldlacOfIG5pY2h0IHdpZSAlcyB6dSBrbG9uZW4gaXN0LiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjgzNQorIzogYnVpbHRpbi9jbG9uZS5jOjkyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJSZW1vdGUgYnJhbmNoICVzIG5vdCBmb3VuZCBpbiB1cHN0cmVhbSAlcyIKIG1zZ3N0ciAiZXh0ZXJuZXIgWndlaWcgJXMgbmljaHQgaW0gYW5kZXJlbiBQcm9qZWt0YXJjaGl2ICVzIGdlZnVuZGVuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODQyCisjOiBidWlsdGluL2Nsb25lLmM6OTMzCiBtc2dpZCAiWW91IGFwcGVhciB0byBoYXZlIGNsb25lZCBhbiBlbXB0eSByZXBvc2l0b3J5LiIKLW1zZ3N0ciAiRHUgc2NoZWluc3QgZWluIGxlZXJlcyBQcm9qZWt0YXJjaGl2IGdla2xvbnQgenUgaGFiZW4uIgorbXNnc3RyICJTaWUgc2NoZWluZW4gZWluIGxlZXJlcyBQcm9qZWt0YXJjaGl2IGdla2xvbnQgenUgaGFiZW4uIgorCisjOiBidWlsdGluL2NvbHVtbi5jOjkKK21zZ2lkICJnaXQgY29sdW1uIFtvcHRpb25zXSIKK21zZ3N0ciAiZ2l0IGNvbHVtbiBbT3B0aW9uZW5dIgorCisjOiBidWlsdGluL2NvbHVtbi5jOjI2Cittc2dpZCAibG9va3VwIGNvbmZpZyB2YXJzIgorbXNnc3RyICJzY2hsw6RndCBLb25maWd1cmF0aW9uc3ZhcmlhYmxlbiBuYWNoIgorCisjOiBidWlsdGluL2NvbHVtbi5jOjI3IGJ1aWx0aW4vY29sdW1uLmM6MjgKK21zZ2lkICJsYXlvdXQgdG8gdXNlIgorbXNnc3RyICJ6dSB2ZXJ3ZW5kZW5kZSBBbm9yZG51bmciCisKKyM6IGJ1aWx0aW4vY29sdW1uLmM6MjkKK21zZ2lkICJNYXhpbXVtIHdpZHRoIgorbXNnc3RyICJtYXhpbWFsZSBCcmVpdGUiCisKKyM6IGJ1aWx0aW4vY29sdW1uLmM6MzAKK21zZ2lkICJQYWRkaW5nIHNwYWNlIG9uIGxlZnQgYm9yZGVyIgorbXNnc3RyICJBYnN0YW5kIHp1bSBsaW5rZW4gUmFuZCIKKworIzogYnVpbHRpbi9jb2x1bW4uYzozMQorbXNnaWQgIlBhZGRpbmcgc3BhY2Ugb24gcmlnaHQgYm9yZGVyIgorbXNnc3RyICJBYnN0YW5kIHp1ciByZWNodGVuIFJhbmQiCisKKyM6IGJ1aWx0aW4vY29sdW1uLmM6MzIKK21zZ2lkICJQYWRkaW5nIHNwYWNlIGJldHdlZW4gY29sdW1ucyIKK21zZ3N0ciAiQWJzdGFuZCB6d2lzY2hlbiBTcGFsdGVuIgogCiAjOiBidWlsdGluL2NvbHVtbi5jOjUxCiBtc2dpZCAiLS1jb21tYW5kIG11c3QgYmUgdGhlIGZpcnN0IGFyZ3VtZW50IgotbXNnc3RyICJPcHRpb24gLS1jb21tYW5kIG11c3MgenVlcnN0IGFuZ2VnZWJlbiB3ZXJkZW4iCittc2dzdHIgIkRpZSBPcHRpb24gLS1jb21tYW5kIG11c3MgYW4gZXJzdGVyIFN0ZWxsZSBzdGVoZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjQzCisjOiBidWlsdGluL2NvbW1pdC5jOjM0Cittc2dpZCAiZ2l0IGNvbW1pdCBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICJnaXQgY29tbWl0IFtPcHRpb25lbl0gWy0tXSA8UGZhZHNwZXppZmlrYXRpb24+Li4uIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjM5Cittc2dpZCAiZ2l0IHN0YXR1cyBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICJnaXQgc3RhdHVzIFtPcHRpb25lbl0gWy0tXSA8UGZhZHNwZXppZmlrYXRpb24+Li4uIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjQ0CiBtc2dpZCAiIgogIllvdXIgbmFtZSBhbmQgZW1haWwgYWRkcmVzcyB3ZXJlIGNvbmZpZ3VyZWQgYXV0b21hdGljYWxseSBiYXNlZFxuIgogIm9uIHlvdXIgdXNlcm5hbWUgYW5kIGhvc3RuYW1lLiBQbGVhc2UgY2hlY2sgdGhhdCB0aGV5IGFyZSBhY2N1cmF0ZS5cbiIKQEAgLTIxNjIsMzAgKzM3NjUsMzAgQEAKICJcbiIKICIgICAgZ2l0IGNvbW1pdCAtLWFtZW5kIC0tcmVzZXQtYXV0aG9yXG4iCiBtc2dzdHIgIiIKLSJEZWluIE5hbWUgdW5kIEUtTWFpbCBBZHJlc3NlIHd1cmRlbiBhdXRvbWF0aXNjaCBhdWYgQmFzaXNcbiIKLSJkZWluZXMgQmVudXR6ZXItIHVuZCBSZWNobmVybmFtZW5zIGtvbmZpZ3VyaWVydC4gQml0dGUgcHLDvGZlLCBkYXNzIGRpZXNlXG4iCi0ienV0cmVmZmVuZCBzaW5kLiBEdSBrYW5uc3QgZGllc2UgTWVsZHVuZyB1bnRlcmRyw7xja2VuLCBpbmRlbSBkdSBkaWVzZVxuIgotImV4cGxpeml0IHNldHp0OlxuIgorIklociBOYW1lIHVuZCBFLU1haWwgQWRyZXNzZSB3dXJkZW4gYXV0b21hdGlzY2ggYXVmIEJhc2lzXG4iCisiSWhyZXMgQmVudXR6ZXItIHVuZCBSZWNobmVybmFtZW5zIGtvbmZpZ3VyaWVydC4gQml0dGUgcHLDvGZlbiBTaWUsIGRhc3NcbiIKKyJkaWVzZSB6dXRyZWZmZW5kIHNpbmQuIFNpZSBrw7ZubmVuIGRpZXNlIE1lbGR1bmcgdW50ZXJkcsO8Y2tlbiwgaW5kZW0gU2llXG4iCisiZGllc2UgZXhwbGl6aXQgc2V0emVuOlxuIgogIlxuIgotIiAgICBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIubmFtZSBcIkRlaW4gTmFtZVwiXG4iCi0iICAgIGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCBkZWluZUBlbWFpbGFkcmVzc2UuZGVcbiIKKyIgICAgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUgXCJJaHIgTmFtZVwiXG4iCisiICAgIGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCBpaHJlQGVtYWlsYWRyZXNzZS5kZVxuIgogIlxuIgotIk5hY2hkZW0gZHUgZGFzIGdldGFuIGhhc3QsIGthbm5zdCBkdSBkZWluZSBJZGVudGl0w6R0IGbDvHIgZGllc2UgVmVyc2lvbiAiCisiTmFjaGRlbSBTaWUgZGFzIGdldGFuIGhhc3QsIGvDtm5uZW4gU2llIElocmUgSWRlbnRpdMOkdCBmw7xyIGRpZXNlIFZlcnNpb24gIgogIsOkbmRlcm4gbWl0OlxuIgogIlxuIgogIiAgICBnaXQgY29tbWl0IC0tYW1lbmQgLS1yZXNldC1hdXRob3JcbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1NQorIzogYnVpbHRpbi9jb21taXQuYzo1NgogbXNnaWQgIiIKICJZb3UgYXNrZWQgdG8gYW1lbmQgdGhlIG1vc3QgcmVjZW50IGNvbW1pdCwgYnV0IGRvaW5nIHNvIHdvdWxkIG1ha2VcbiIKICJpdCBlbXB0eS4gWW91IGNhbiByZXBlYXQgeW91ciBjb21tYW5kIHdpdGggLS1hbGxvdy1lbXB0eSwgb3IgeW91IGNhblxuIgogInJlbW92ZSB0aGUgY29tbWl0IGVudGlyZWx5IHdpdGggXCJnaXQgcmVzZXQgSEVBRF5cIi5cbiIKIG1zZ3N0ciAiIgotIkR1IGZyYWd0ZXN0IGRpZSBqw7xuZ3N0ZSBWZXJzaW9uIG5hY2h6dWJlc3Nlcm4sIGFiZXIgZGFzIHfDvHJkZSBkaWVzZSBsZWVyXG4iCi0ibWFjaGVuLiBEdSBrYW5uc3QgRGVpbiBLb21tYW5kbyBtaXQgLS1hbGxvdy1lbXB0eSB3aWVkZXJob2xlbiwgb2RlciBkaWVcbiIKKyJTaWUgZnJhZ3RlbiBkaWUgasO8bmdzdGUgVmVyc2lvbiBuYWNoenViZXNzZXJuLCBhYmVyIGRhcyB3w7xyZGUgZGllc2UgbGVlclxuIgorIm1hY2hlbi4gU2llIGvDtm5uZW4gSWhyIEtvbW1hbmRvIG1pdCAtLWFsbG93LWVtcHR5IHdpZWRlcmhvbGVuLCBvZGVyIGRpZVxuIgogIlZlcnNpb24gbWl0IFwiZ2l0IHJlc2V0IEhFQUReXCIgdm9sbHN0w6RuZGlnIGVudGZlcm5lbi5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MAorIzogYnVpbHRpbi9jb21taXQuYzo2MQogbXNnaWQgIiIKICJUaGUgcHJldmlvdXMgY2hlcnJ5LXBpY2sgaXMgbm93IGVtcHR5LCBwb3NzaWJseSBkdWUgdG8gY29uZmxpY3QgcmVzb2x1dGlvbi5cbiIKICJJZiB5b3Ugd2lzaCB0byBjb21taXQgaXQgYW55d2F5LCB1c2U6XG4iCkBAIC0yMTk2LDEwMyArMzc5OSwxMDMgQEAKIG1zZ3N0ciAiIgogIkRlciBsZXR6dGUgXCJjaGVycnktcGlja1wiIGlzdCBqZXR6dCBsZWVyLCBtw7ZnbGljaGVyd2Vpc2UgZHVyY2ggZWluZSAiCiAiS29uZmxpa3RhdWZsw7ZzdW5nLlxuIgotIldlbm4gZHUgZGllcyB0cm90emRlbSBlaW50cmFnZW4gd2lsbHN0LCBiZW51dHplOlxuIgorIldlbm4gU2llIGRpZXMgdHJvdHpkZW0gZWludHJhZ2VuIHdvbGxlbiwgYmVudXR6ZW4gU2llOlxuIgogIlxuIgogIiAgICBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHlcbiIKICJcbiIKLSJBbmRlcm5mYWxscyBiZW51dHplIGJpdHRlICdnaXQgcmVzZXQnXG4iCisiQW5kZXJuZmFsbHMgYmVudXR6ZW4gU2llIGJpdHRlICdnaXQgcmVzZXQnXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MjUzCisjOiBidWlsdGluL2NvbW1pdC5jOjI2MAogbXNnaWQgImZhaWxlZCB0byB1bnBhY2sgSEVBRCB0cmVlIG9iamVjdCIKIG1zZ3N0ciAiRmVobGVyIGJlaW0gRW50cGFja2VuIGRlcyBCYXVtLU9iamVrdGVzIGRlciBad2VpZ3NwaXR6ZSAoSEVBRCkuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjI5NQorIzogYnVpbHRpbi9jb21taXQuYzozMDIKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlIHRlbXBvcmFyeSBpbmRleCIKIG1zZ3N0ciAiS29ubnRlIHRlbXBvcsOkcmUgQmVyZWl0c3RlbGx1bmcgbmljaHQgZXJzdGVsbGVuLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzozMDEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzA4CiBtc2dpZCAiaW50ZXJhY3RpdmUgYWRkIGZhaWxlZCIKIG1zZ3N0ciAiaW50ZXJha3RpdmVzIEhpbnp1ZsO8Z2VuIGZlaGxnZXNjaGxhZ2VuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjMzNCBidWlsdGluL2NvbW1pdC5jOjM1NSBidWlsdGluL2NvbW1pdC5jOjQwNQorIzogYnVpbHRpbi9jb21taXQuYzozNDEgYnVpbHRpbi9jb21taXQuYzozNjIgYnVpbHRpbi9jb21taXQuYzo0MTIKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbmV3X2luZGV4IGZpbGUiCiBtc2dzdHIgIktvbm50ZSBuZXdfaW5kZXggRGF0ZWkgbmljaHQgc2NocmVpYmVuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM4NgorIzogYnVpbHRpbi9jb21taXQuYzozOTMKIG1zZ2lkICJjYW5ub3QgZG8gYSBwYXJ0aWFsIGNvbW1pdCBkdXJpbmcgYSBtZXJnZS4iCiBtc2dzdHIgIiIKICJLYW5uIGtlaW5lIHBhcnRpZWxsZSBFaW50cmFndW5nIGR1cmNoZsO8aHJlbiwgd8OkaHJlbmQgZWluZSBadXNhbW1lbmbDvGhydW5nIGltICIKICJHYW5nZSBpc3QuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM4OAorIzogYnVpbHRpbi9jb21taXQuYzozOTUKIG1zZ2lkICJjYW5ub3QgZG8gYSBwYXJ0aWFsIGNvbW1pdCBkdXJpbmcgYSBjaGVycnktcGljay4iCiBtc2dzdHIgIiIKICJLYW5uIGtlaW5lIHBhcnRpZWxsZSBFaW50cmFndW5nIGR1cmNoZsO8aHJlbiwgd8OkaHJlbmQgXCJjaGVycnktcGlja1wiIGltICIKICJHYW5nZSBpc3QuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM5OAorIzogYnVpbHRpbi9jb21taXQuYzo0MDUKIG1zZ2lkICJjYW5ub3QgcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgIkthbm4gQmVyZWl0c3RlbGx1bmcgbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NDE4CisjOiBidWlsdGluL2NvbW1pdC5jOjQyNQogbXNnaWQgInVuYWJsZSB0byB3cml0ZSB0ZW1wb3JhcnkgaW5kZXggZmlsZSIKIG1zZ3N0ciAiS29ubnRlIHRlbXBvcsOkcmUgQmVyZWl0c3RlbGx1bmdzZGF0ZWkgbmljaHQgc2NocmVpYmVuLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo0OTMgYnVpbHRpbi9jb21taXQuYzo0OTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTEzIGJ1aWx0aW4vY29tbWl0LmM6NTE5CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgY29tbWl0OiAlcyIKIG1zZ3N0ciAiVW5nw7xsdGlnZSBWZXJzaW9uOiAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1MjIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTQyCiBtc2dpZCAibWFsZm9ybWVkIC0tYXV0aG9yIHBhcmFtZXRlciIKIG1zZ3N0ciAiRmVobGVyaGFmdGVyIC0tYXV0aG9yIFBhcmFtZXRlciIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1ODIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTYyCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1hbGZvcm1lZCBpZGVudCBzdHJpbmc6ICclcyciCiBtc2dzdHIgIkZlaGxlcmhhZnRlIElkZW50aWZpa2F0aW9ucy1TdHJpbmc6ICclcyciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjIwIGJ1aWx0aW4vY29tbWl0LmM6NjUzIGJ1aWx0aW4vY29tbWl0LmM6OTY3CisjOiBidWlsdGluL2NvbW1pdC5jOjYwMCBidWlsdGluL2NvbW1pdC5jOjYzMyBidWlsdGluL2NvbW1pdC5jOjk1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgbG9va3VwIGNvbW1pdCAlcyIKIG1zZ3N0ciAiS29ubnRlIFZlcnNpb24gJXMgbmljaHQgbmFjaHNjaGxhZ2VuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYzMiBidWlsdGluL3Nob3J0bG9nLmM6Mjk2CisjOiBidWlsdGluL2NvbW1pdC5jOjYxMiBidWlsdGluL3Nob3J0bG9nLmM6MjcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIihyZWFkaW5nIGxvZyBtZXNzYWdlIGZyb20gc3RhbmRhcmQgaW5wdXQpXG4iCiBtc2dzdHIgIihsZXNlIExvZy1OYWNocmljaHQgdm9uIFN0YW5kYXJkLUVpbmdhYmUpXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjM0CisjOiBidWlsdGluL2NvbW1pdC5jOjYxNAogbXNnaWQgImNvdWxkIG5vdCByZWFkIGxvZyBmcm9tIHN0YW5kYXJkIGlucHV0IgogbXNnc3RyICJLb25udGUgTG9nIG5pY2h0IHZvbiBTdGFuZGFyZC1FaW5nYWJlIGxlc2VuLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MzgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjE4CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkIGxvZyBmaWxlICclcyciCiBtc2dzdHIgIktvbm50ZSBMb2ctRGF0ZWkgJyVzJyBuaWNodCBsZXNlbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2NDQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjI0CiBtc2dpZCAiY29tbWl0IGhhcyBlbXB0eSBtZXNzYWdlIgogbXNnc3RyICJWZXJzaW9uIGhhdCBlaW5lIGxlZXJlIEJlc2NocmVpYnVuZyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2NjAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjQwCiBtc2dpZCAiY291bGQgbm90IHJlYWQgTUVSR0VfTVNHIgogbXNnc3RyICJLb25udGUgTUVSR0VfTVNHIG5pY2h0IGxlc2VuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjY2NAorIzogYnVpbHRpbi9jb21taXQuYzo2NDQKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBTUVVBU0hfTVNHIgogbXNnc3RyICJLb25udGUgU1FVQVNIX01TRyBuaWNodCBsZXNlbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2NjgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkICclcyciCiBtc2dzdHIgIktvbm50ZSAnJXMnIG5pY2h0IGxlc2VuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjcyMAorIzogYnVpbHRpbi9jb21taXQuYzo3MDkKIG1zZ2lkICJjb3VsZCBub3Qgd3JpdGUgY29tbWl0IHRlbXBsYXRlIgogbXNnc3RyICJLb25udGUgVmVyc2lvbnN2b3JsYWdlIG5pY2h0IHNjaHJlaWJlbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MzEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTIzMDIsMTIgKzM5MDUsMTIgQEAKICJhbmQgdHJ5IGFnYWluLlxuIgogbXNnc3RyICIiCiAiXG4iCi0iRXMgc2llaHQgc28gYXVzLCBhbHMgdHLDpGdzdCBkdSBlaW5lIFp1c2FtbWVuZsO8aHJ1bmcgZWluLlxuIgotIkZhbGxzIGRhcyBuaWNodCBrb3JyZWt0IGlzdCwgZW50ZmVybmUgYml0dGUgZGllIERhdGVpXG4iCisiRXMgc2llaHQgc28gYXVzLCBhbHMgdHJhZ2VuIFNpZSBlaW5lIFp1c2FtbWVuZsO8aHJ1bmcgZWluLlxuIgorIkZhbGxzIGRhcyBuaWNodCBrb3JyZWt0IGlzdCwgbMO2c2NoZW4gU2llIGJpdHRlIGRpZSBEYXRlaVxuIgogIlx0JXNcbiIKLSJ1bmQgdmVyc3VjaGUgZXMgZXJuZXV0LlxuIgorInVuZCB2ZXJzdWNoZW4gU2llIGVzIGVybmV1dC5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MzYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTIzMTcsMjYzICszOTIwLDYwNiBAQAogImFuZCB0cnkgYWdhaW4uXG4iCiBtc2dzdHIgIiIKICJcbiIKLSJFcyBzaWVodCBzbyBhdXMsIGFscyB0csOkZ3N0IGR1IGVpbiBcImNoZXJyeS1waWNrXCIgZWluLlxuIgotIkZhbGxzIGRhcyBuaWNodCBrb3JyZWt0IGlzdCwgZW50ZmVybmUgYml0dGUgZGllIERhdGVpXG4iCisiRXMgc2llaHQgc28gYXVzLCBhbHMgdHJhZ2VuIFNpZSBlaW4gXCJjaGVycnktcGlja1wiIGVpbi5cbiIKKyJGYWxscyBkYXMgbmljaHQga29ycmVrdCBpc3QsIGzDtnNjaGVuIFNpZSBiaXR0ZSBkaWUgRGF0ZWlcbiIKICJcdCVzXG4iCi0idW5kIHZlcnN1Y2hlIGVzIGVybmV1dC5cbiIKKyJ1bmQgdmVyc3VjaGVuIFNpZSBlcyBlcm5ldXQuXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzQ4CisjOiBidWlsdGluL2NvbW1pdC5jOjczNworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiUGxlYXNlIGVudGVyIHRoZSBjb21taXQgbWVzc2FnZSBmb3IgeW91ciBjaGFuZ2VzLiBMaW5lcyBzdGFydGluZ1xuIgotIndpdGggJyMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iCisid2l0aCAnJWMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iCiBtc2dzdHIgIiIKLSJCaXR0ZSBnZWJlIGVpbmUgVmVyc2lvbnNiZXNjaHJlaWJ1bmcgZsO8ciBkZWluZSDDhG5kZXJ1bmdlbiBlaW4uIFplaWxlbixcbiIKLSJkaWUgbWl0ICcjJyBiZWdpbm5lbiwgd2VyZGVuIGlnbm9yaWVydCwgdW5kIGVpbmUgbGVlcmUgVmVyc2lvbnNiZXNjaHJlaWJ1bmdcbiIKKyJCaXR0ZSBnZWJlbiBTaWUgZWluZSBWZXJzaW9uc2Jlc2NocmVpYnVuZyBmw7xyIElocmUgw4RuZGVydW5nZW4gZWluLiBaZWlsZW4sXG4iCisiZGllIG1pdCAnJWMnIGJlZ2lubmVuLCB3ZXJkZW4gaWdub3JpZXJ0LCB1bmQgZWluZSBsZWVyZSAiCisiVmVyc2lvbnNiZXNjaHJlaWJ1bmdcbiIKICJicmljaHQgZGllIEVpbnRyYWd1bmcgYWIuXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzUzCisjOiBidWlsdGluL2NvbW1pdC5jOjc0MgorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiUGxlYXNlIGVudGVyIHRoZSBjb21taXQgbWVzc2FnZSBmb3IgeW91ciBjaGFuZ2VzLiBMaW5lcyBzdGFydGluZ1xuIgotIndpdGggJyMnIHdpbGwgYmUga2VwdDsgeW91IG1heSByZW1vdmUgdGhlbSB5b3Vyc2VsZiBpZiB5b3Ugd2FudCB0by5cbiIKKyJ3aXRoICclYycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIHlvdXJzZWxmIGlmIHlvdSB3YW50IHRvLlxuIgogIkFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iCiBtc2dzdHIgIiIKLSJCaXR0ZSBnZWJlIGVpbmUgVmVyc2lvbnNiZXNjaHJlaWJ1bmcgZsO8ciBkZWluZSDDhG5kZXJ1bmdlbiBlaW4uIFplaWxlbiwgZGllXG4iCi0ibWl0ICcjJyBiZWdpbm5lbiwgd2VyZGVuIGJlaWJlaGFsdGVuOyB3ZW5uIGR1IG3DtmNodGVzdCwga2FubnN0IGR1IGRpZXNlICIKKyJCaXR0ZSBnZWJlbiBTaWUgZWluZSBWZXJzaW9uc2Jlc2NocmVpYnVuZyBmw7xyIElocmUgw4RuZGVydW5nZW4gZWluLiBaZWlsZW4sICIKKyJkaWVcbiIKKyJtaXQgJyVjJyBiZWdpbm5lbiwgd2VyZGVuIGJlaWJlaGFsdGVuOyB3ZW5uIFNpZSBtw7ZjaHRlbiwga8O2bm5lbiBTaWUgZGllc2UgIgogImVudGZlcm5lbi5cbiIKICJFaW5lIGxlZXJlIFZlcnNpb25zYmVzY2hyZWlidW5nIGJyaWNodCBkaWUgRWludHJhZ3VuZyBhYi5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3NjYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzQXV0aG9yOiAgICAlcyIKIG1zZ3N0ciAiJXNBdXRvcjogICAgJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzczCisjOiBidWlsdGluL2NvbW1pdC5jOjc2MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlc0NvbW1pdHRlcjogJXMiCiBtc2dzdHIgIiVzRWludHJhZ2VuZGVyOiAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3OTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzgyCiBtc2dpZCAiQ2Fubm90IHJlYWQgaW5kZXgiCiBtc2dzdHIgIkthbm4gQmVyZWl0c3RlbGx1bmcgbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODMwCisjOiBidWlsdGluL2NvbW1pdC5jOjgxOQogbXNnaWQgIkVycm9yIGJ1aWxkaW5nIHRyZWVzIgogbXNnc3RyICJGZWhsZXIgYmVpbSBFcnpldWdlbiBkZXIgWndlaWdlIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjg0NSBidWlsdGluL3RhZy5jOjM2MQorIzogYnVpbHRpbi9jb21taXQuYzo4MzQgYnVpbHRpbi90YWcuYzozNTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiUGxlYXNlIHN1cHBseSB0aGUgbWVzc2FnZSB1c2luZyBlaXRoZXIgLW0gb3IgLUYgb3B0aW9uLlxuIgogbXNnc3RyICJCaXR0ZSBsaWVmZXJlIGVpbmUgQmVzY2hyZWlidW5nIGVudHdlZGVyIG1pdCBkZXIgT3B0aW9uIC1tIG9kZXIgLUYuXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTQyCisjOiBidWlsdGluL2NvbW1pdC5jOjkzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBleGlzdGluZyBhdXRob3IgZm91bmQgd2l0aCAnJXMnIgogbXNnc3RyICJLZWluIGV4aXN0aWVyZW5kZXIgQXV0b3IgbWl0ICclcycgZ2VmdW5kZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk1NyBidWlsdGluL2NvbW1pdC5jOjExNTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTQ2IGJ1aWx0aW4vY29tbWl0LmM6MTE0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIHVudHJhY2tlZCBmaWxlcyBtb2RlICclcyciCiBtc2dzdHIgIlVuZ8O8bHRpZ2VyIE1vZHVzICclcycgZsO8ciB1bmJlb2JhY2h0ZXRlIERhdGVpZW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTk3CisjOiBidWlsdGluL2NvbW1pdC5jOjk3NgogbXNnaWQgIlVzaW5nIGJvdGggLS1yZXNldC1hdXRob3IgYW5kIC0tYXV0aG9yIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCi1tc2dzdHIgIlZlcndlbmR1bmcgdm9uIC0tcmVzZXQtYXV0aG9yIHVuZCAtLWF1dGhvciBtYWNodCBrZWluZW4gU2lubi4iCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uZW4gLS1yZXNldC1hdXRob3IgdW5kIC0tYXV0aG9yIGvDtm5uZW4gbmljaHQgZ2VtZWluc2FtIHZlcndlbmRldCAiCisid2VyZGVuLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDA4CisjOiBidWlsdGluL2NvbW1pdC5jOjk4NwogbXNnaWQgIllvdSBoYXZlIG5vdGhpbmcgdG8gYW1lbmQuIgotbXNnc3RyICJEdSBoYXN0IG5pY2h0cyB6dW0gbmFjaGJlc3Nlcm4uIgorbXNnc3RyICJTaWUgaGFiZW4gbmljaHRzIHp1bSBuYWNoYmVzc2Vybi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAxMQorIzogYnVpbHRpbi9jb21taXQuYzo5OTAKIG1zZ2lkICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBtZXJnZSAtLSBjYW5ub3QgYW1lbmQuIgogbXNnc3RyICJFaW5lIFp1c2FtbWVuZsO8aHJ1bmcgaXN0IGltIEdhbmdlIC0tIGthbm4gbmljaHQgbmFjaGJlc3Nlcm4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTkyCiBtc2dpZCAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgY2hlcnJ5LXBpY2sgLS0gY2Fubm90IGFtZW5kLiIKIG1zZ3N0ciAiXCJjaGVycnktcGlja1wiIGlzdCBpbSBHYW5nZSAtLSBrYW5uIG5pY2h0IG5hY2hiZXNzZXJuLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDE2CisjOiBidWlsdGluL2NvbW1pdC5jOjk5NQogbXNnaWQgIk9wdGlvbnMgLS1zcXVhc2ggYW5kIC0tZml4dXAgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiCiBtc2dzdHIgIiIKLSJEaWUgT3B0aW9uZW4gLS1zcXVhc2ggdW5kIC0tZml4dXAga8O2bm5lbiBuaWNodCBnZW1laW5zYW0gYmVudXR6dCB3ZXJkZW4uIgorIkRpZSBPcHRpb25lbiAtLXNxdWFzaCB1bmQgLS1maXh1cCBrw7ZubmVuIG5pY2h0IGdlbWVpbnNhbSB2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDI2CisjOiBidWlsdGluL2NvbW1pdC5jOjEwMDUKIG1zZ2lkICJPbmx5IG9uZSBvZiAtYy8tQy8tRi8tLWZpeHVwIGNhbiBiZSB1c2VkLiIKLW1zZ3N0ciAiTnVyIGVpbmVzIHZvbiAtYy8tQy8tRi8tLWZpeHVwIGthbm4gYmVudXR6dCB3ZXJkZW4uIgorbXNnc3RyICJFcyBrYW5uIG51ciBlaW5lIE9wdGlvbiB2b24gLWMvLUMvLUYvLS1maXh1cCB2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDI4CisjOiBidWlsdGluL2NvbW1pdC5jOjEwMDcKIG1zZ2lkICJPcHRpb24gLW0gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggLWMvLUMvLUYvLS1maXh1cC4iCi1tc2dzdHIgIk9wdGlvbiAtbSBrYW5uIG5pY2h0IG1pdCAtYy8tQy8tRi8tLWZpeHVwIGtvbWJpbmllcnQgd2VyZGVuIgorbXNnc3RyICJEaWUgT3B0aW9uIC1tIGthbm4gbmljaHQgbWl0IC1jLy1DLy1GLy0tZml4dXAga29tYmluaWVydCB3ZXJkZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMzYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAxNQogbXNnaWQgIi0tcmVzZXQtYXV0aG9yIGNhbiBiZSB1c2VkIG9ubHkgd2l0aCAtQywgLWMgb3IgLS1hbWVuZC4iCi1tc2dzdHIgIi0tcmVzZXQtLWF1dGhvciBrYW5uIG51ciBtaXQgLUMsIC1jIG9kZXIgLS1hbWVuZCBiZW51dHp0IHdlcmRlbiIKK21zZ3N0ciAiIgorIkRpZSBPcHRpb24gLS1yZXNldC0tYXV0aG9yIGthbm4gbnVyIG1pdCAtQywgLWMgb2RlciAtLWFtZW5kIHZlcndlbmRldCB3ZXJkZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzMgogbXNnaWQgIk9ubHkgb25lIG9mIC0taW5jbHVkZS8tLW9ubHkvLS1hbGwvLS1pbnRlcmFjdGl2ZS8tLXBhdGNoIGNhbiBiZSB1c2VkLiIKIG1zZ3N0ciAiIgotIk51ciBlaW5lcyB2b24gLS1pbmNsdWRlLy0tb25seS8tLWFsbC8tLWludGVyYWN0aXZlLy0tcGF0Y2gga2FubiBiZW51dHp0ICIKLSJ3ZXJkZW4uIgorIkVzIGthbm4gbnVyIGVpbmUgT3B0aW9uIHZvbiAtLWluY2x1ZGUvLS1vbmx5Ly0tYWxsLy0taW50ZXJhY3RpdmUvLS1wYXRjaCAiCisidmVyd2VuZGV0IHdlcmRlbi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1NQorIzogYnVpbHRpbi9jb21taXQuYzoxMDM0CiBtc2dpZCAiTm8gcGF0aHMgd2l0aCAtLWluY2x1ZGUvLS1vbmx5IGRvZXMgbm90IG1ha2Ugc2Vuc2UuIgotbXNnc3RyICItLWluY2x1ZGUvLS1vbmx5IG1hY2hlbiBvaG5lIFBmYWRlIGtlaW5lbiBTaW5uLiIKK21zZ3N0ciAiIgorIkRpZSBPcHRpb25lbiAtLWluY2x1ZGUgdW5kIC0tb25seSBrw7ZubmVuIG51ciBtaXQgZGVyIEFuZ2FiZSB2b24gUGZhZGVuICIKKyJ2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDU3CisjOiBidWlsdGluL2NvbW1pdC5jOjEwMzYKIG1zZ2lkICJDbGV2ZXIuLi4gYW1lbmRpbmcgdGhlIGxhc3Qgb25lIHdpdGggZGlydHkgaW5kZXguIgogbXNnc3RyICIiCiAiS2x1Zy4uLiBkaWUgbGV0enRlIFZlcnNpb24gbWl0IGVpbmVyIHVuc2F1YmVyZW4gQmVyZWl0c3RlbGx1bmcgbmFjaGJlc3Nlcm4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzOAogbXNnaWQgIkV4cGxpY2l0IHBhdGhzIHNwZWNpZmllZCB3aXRob3V0IC1pIG5vciAtbzsgYXNzdW1pbmcgLS1vbmx5IHBhdGhzLi4uIgogbXNnc3RyICIiCiAiRXhwbGl6aXRlIFBmYWRlIG9obmUgLWkgb2RlciAtbyBhbmdlZ2ViZW47IHVudGVyIGRlciBBbm5haG1lIHZvbiAtLW9ubHkgIgogIlBmYWRlbi4uLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDY5IGJ1aWx0aW4vdGFnLmM6NTc3CisjOiBidWlsdGluL2NvbW1pdC5jOjEwNDggYnVpbHRpbi90YWcuYzo1NzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBjbGVhbnVwIG1vZGUgJXMiCiBtc2dzdHIgIlVuZ8O8bHRpZ2VyIFwiY2xlYW51cFwiIE1vZHVzICVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNzQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1MwogbXNnaWQgIlBhdGhzIHdpdGggLWEgZG9lcyBub3QgbWFrZSBzZW5zZS4iCi1tc2dzdHIgIlBmYWRlIG1pdCAtYSBtYWNoZW4ga2VpbmVuIFNpbm4uIgorbXNnc3RyICJEaWUgT3B0aW9uIC1hIGthbm4gbnVyIG1pdCBkZXIgQW5nYWJlIHZvbiBQZmFkZW4gdmVyd2VuZGV0IHdlcmRlbi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTI1NworIzogYnVpbHRpbi9jb21taXQuYzoxMDU5IGJ1aWx0aW4vY29tbWl0LmM6MTE5NAorbXNnaWQgIi0tbG9uZyBhbmQgLXogYXJlIGluY29tcGF0aWJsZSIKK21zZ3N0ciAiRGllIE9wdGlvbmVuIC0tbG9uZyB1bmQgLXogc2luZCBpbmtvbXBhdGliZWwuIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNTQgYnVpbHRpbi9jb21taXQuYzoxMzkwCittc2dpZCAic2hvdyBzdGF0dXMgY29uY2lzZWx5IgorbXNnc3RyICJ6ZWlndCBTdGF0dXMgaW0gS3VyemZvcm1hdCIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTU2IGJ1aWx0aW4vY29tbWl0LmM6MTM5MgorbXNnaWQgInNob3cgYnJhbmNoIGluZm9ybWF0aW9uIgorbXNnc3RyICJ6ZWlndCBad2VpZ2luZm9ybWF0aW9uZW4iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1OCBidWlsdGluL2NvbW1pdC5jOjEzOTQgYnVpbHRpbi9wdXNoLmM6NDI2Cittc2dpZCAibWFjaGluZS1yZWFkYWJsZSBvdXRwdXQiCittc2dzdHIgIm1hc2NoaW5lbmxlc2JhcmUgQXVzZ2FiZSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTYxIGJ1aWx0aW4vY29tbWl0LmM6MTM5NgorbXNnaWQgInNob3cgc3RhdHVzIGluIGxvbmcgZm9ybWF0IChkZWZhdWx0KSIKK21zZ3N0ciAiemVpZ3QgU3RhdHVzIGltIExhbmdmb3JtYXQgKFN0YW5kYXJkKSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTY0IGJ1aWx0aW4vY29tbWl0LmM6MTM5OQorbXNnaWQgInRlcm1pbmF0ZSBlbnRyaWVzIHdpdGggTlVMIgorbXNnc3RyICJzY2hsaWXDn3QgRWludHLDpGdlIG1pdCBOVUwtWmVpY2hlbiBhYiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTY2IGJ1aWx0aW4vY29tbWl0LmM6MTQwMiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjU5CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYyIGJ1aWx0aW4vdGFnLmM6NDU5Cittc2dpZCAibW9kZSIKK21zZ3N0ciAiTW9kdXMiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2NyBidWlsdGluL2NvbW1pdC5jOjE0MDIKK21zZ2lkICJzaG93IHVudHJhY2tlZCBmaWxlcywgb3B0aW9uYWwgbW9kZXM6IGFsbCwgbm9ybWFsLCBuby4gKERlZmF1bHQ6IGFsbCkiCittc2dzdHIgIiIKKyJ6ZWlndCBuaWNodCBiZW9iYWNodGV0ZSBEYXRlaWVuLCBvcHRpb25hbGUgTW9kaTogYWxsLCBub3JtYWwsIG5vLiAoU3RhbmRhcmQ6ICIKKyJhbGwpIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNzAKK21zZ2lkICJzaG93IGlnbm9yZWQgZmlsZXMiCittc2dzdHIgInplaWd0IGlnbm9yaWVydGUgRGF0ZWllbiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTcxIHBhcnNlLW9wdGlvbnMuaDoxNTEKK21zZ2lkICJ3aGVuIgorbXNnc3RyICJ3YW5uIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNzIKK21zZ2lkICIiCisiaWdub3JlIGNoYW5nZXMgdG8gc3VibW9kdWxlcywgb3B0aW9uYWwgd2hlbjogYWxsLCBkaXJ0eSwgdW50cmFja2VkLiAiCisiKERlZmF1bHQ6IGFsbCkiCittc2dzdHIgIiIKKyJpZ25vcmllcnQgw4RuZGVydW5nZW4gaW4gVW50ZXJwcm9qZWt0ZW4sIG9wdGlvbmFsIHdlbm46IGFsbCwgZGlydHksICIKKyJ1bnRyYWNrZWQuIChTdGFuZGFyZDogYWxsKSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTc0Cittc2dpZCAibGlzdCB1bnRyYWNrZWQgZmlsZXMgaW4gY29sdW1ucyIKK21zZ3N0ciAibGlzdGV0IHVuYmVvYmFjaHRldGUgRGF0ZWllbiBpbiBTcGFsdGVuIGF1ZiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMjQ4CiBtc2dpZCAiY291bGRuJ3QgbG9vayB1cCBuZXdseSBjcmVhdGVkIGNvbW1pdCIKIG1zZ3N0ciAiS29ubnRlIG5ldSBlcnN0ZWxsdGUgVmVyc2lvbiBuaWNodCBuYWNoc2NobGFnZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyNTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI1MAogbXNnaWQgImNvdWxkIG5vdCBwYXJzZSBuZXdseSBjcmVhdGVkIGNvbW1pdCIKIG1zZ3N0ciAiS29ubnRlIG5ldWxpY2ggZXJzdGVsbHRlIFZlcnNpb24gbmljaHQgYW5hbHlzaWVyZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzMDAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI5MQogbXNnaWQgImRldGFjaGVkIEhFQUQiCiBtc2dzdHIgImxvc2dlbMO2c3RlIFp3ZWlnc3BpdHplIChIRUFEKSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzAyCisjOiBidWlsdGluL2NvbW1pdC5jOjEyOTMKIG1zZ2lkICIgKHJvb3QtY29tbWl0KSIKIG1zZ3N0ciAiIChCYXNpcy1WZXJzaW9uKSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDQ2CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjAKK21zZ2lkICJzdXBwcmVzcyBzdW1tYXJ5IGFmdGVyIHN1Y2Nlc3NmdWwgY29tbWl0IgorbXNnc3RyICJ1bnRlcmRyw7xja3QgWnVzYW1tZW5mYXNzdW5nIG5hY2ggZXJmb2xncmVpY2hlciBFaW50cmFndW5nIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjEKK21zZ2lkICJzaG93IGRpZmYgaW4gY29tbWl0IG1lc3NhZ2UgdGVtcGxhdGUiCittc2dzdHIgInplaWd0IFVudGVyc2NoaWVkZSBpbiBWZXJzaW9uc2Jlc2NocmVpYnVuZ3N2b3JsYWdlIGFuIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjMKK21zZ2lkICJDb21taXQgbWVzc2FnZSBvcHRpb25zIgorbXNnc3RyICJPcHRpb25lbiBmw7xyIFZlcnNpb25zYmVzY2hyZWlidW5nIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjQgYnVpbHRpbi90YWcuYzo0NTcKK21zZ2lkICJyZWFkIG1lc3NhZ2UgZnJvbSBmaWxlIgorbXNnc3RyICJsaWVzdCBCZXNjaHJlaWJ1bmcgdm9uIERhdGVpIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjUKK21zZ2lkICJhdXRob3IiCittc2dzdHIgIkF1dG9yIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjUKK21zZ2lkICJvdmVycmlkZSBhdXRob3IgZm9yIGNvbW1pdCIKK21zZ3N0ciAiw7xiZXJzY2hyZWlidCBBdXRvciB2b24gVmVyc2lvbiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzY2IGJ1aWx0aW4vZ2MuYzoxNzgKK21zZ2lkICJkYXRlIgorbXNnc3RyICJEYXR1bSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzY2Cittc2dpZCAib3ZlcnJpZGUgZGF0ZSBmb3IgY29tbWl0IgorbXNnc3RyICLDvGJlcnNjaHJlaWJ0IERhdHVtIHZvbiBWZXJzaW9uIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjcgYnVpbHRpbi9tZXJnZS5jOjIwOCBidWlsdGluL25vdGVzLmM6NTMzCisjOiBidWlsdGluL25vdGVzLmM6NjkwIGJ1aWx0aW4vdGFnLmM6NDU1Cittc2dpZCAibWVzc2FnZSIKK21zZ3N0ciAiQmVzY2hyZWlidW5nIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjcKK21zZ2lkICJjb21taXQgbWVzc2FnZSIKK21zZ3N0ciAiVmVyc2lvbnNiZXNjaHJlaWJ1bmciCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2OAorbXNnaWQgInJldXNlIGFuZCBlZGl0IG1lc3NhZ2UgZnJvbSBzcGVjaWZpZWQgY29tbWl0IgorbXNnc3RyICJ2ZXJ3ZW5kZXQgd2llZGVyIHVuZCBlZGl0aWVydCBCZXNjaHJlaWJ1bmcgdm9uIGRlciBhbmdlZ2ViZW5lbiBWZXJzaW9uIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjkKK21zZ2lkICJyZXVzZSBtZXNzYWdlIGZyb20gc3BlY2lmaWVkIGNvbW1pdCIKK21zZ3N0ciAidmVyd2VuZGV0IEJlc2NocmVpYnVuZyBkZXIgYW5nZWdlYmVuZW4gVmVyc2lvbiB3aWVkZXIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MAorbXNnaWQgInVzZSBhdXRvc3F1YXNoIGZvcm1hdHRlZCBtZXNzYWdlIHRvIGZpeHVwIHNwZWNpZmllZCBjb21taXQiCittc2dzdHIgIiIKKyJ2ZXJ3ZW5kZXQgZWluZSBhdXRvbWF0aXNjaCB6dXNhbW1lbmdlc2V0enRlIEJlc2NocmVpYnVuZyB6dW0gTmFjaGJlc3Nlcm4gZGVyICIKKyJhbmdlZ2ViZW5lbiBWZXJzaW9uIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzEKK21zZ2lkICJ1c2UgYXV0b3NxdWFzaCBmb3JtYXR0ZWQgbWVzc2FnZSB0byBzcXVhc2ggc3BlY2lmaWVkIGNvbW1pdCIKK21zZ3N0ciAiIgorInZlcndlbmRldCBlaW5lIGF1dG9tYXRpc2NoIHp1c2FtbWVuZ2VzZXR6dGUgQmVzY2hyZWlidW5nIHp1bSBadXNhbW1lbmbDvGhyZW4gIgorImRlciBhbmdlZ2ViZW5lbiBWZXJzaW9uIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzIKK21zZ2lkICJ0aGUgY29tbWl0IGlzIGF1dGhvcmVkIGJ5IG1lIG5vdyAodXNlZCB3aXRoIC1DLy1jLy0tYW1lbmQpIgorbXNnc3RyICJTZXR6dCBTaWUgYWxzIEF1dG9yIGRlciBWZXJzaW9uICh2ZXJ3ZW5kZXQgbWl0IC1DLy1jLy0tYW1lbmQpIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzMgYnVpbHRpbi9sb2cuYzoxMTEzIGJ1aWx0aW4vcmV2ZXJ0LmM6MTA5Cittc2dpZCAiYWRkIFNpZ25lZC1vZmYtYnk6IgorbXNnc3RyICJmw7xndCAnU2lnbmVkLW9mZi1ieTonLVplaWxlIGhpbnp1IgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzQKK21zZ2lkICJ1c2Ugc3BlY2lmaWVkIHRlbXBsYXRlIGZpbGUiCittc2dzdHIgInZlcndlbmRldCBhbmdlZ2ViZW5lIFZvcmxhZ2VuZGF0ZWkiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NQorbXNnaWQgImZvcmNlIGVkaXQgb2YgY29tbWl0IgorbXNnc3RyICJlcnp3aW5ndCBCZWFyYmVpdHVuZyBkZXIgVmVyc2lvbiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzc2Cittc2dpZCAiZGVmYXVsdCIKK21zZ3N0ciAiU3RhbmRhcmQiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NiBidWlsdGluL3RhZy5jOjQ2MAorbXNnaWQgImhvdyB0byBzdHJpcCBzcGFjZXMgYW5kICNjb21tZW50cyBmcm9tIG1lc3NhZ2UiCittc2dzdHIgIiIKKyJ3aWUgTGVlcnplaWNoZW4gdW5kICNLb21tZW50YXJlIHZvbiBkZXIgQmVzY2hyZWlidW5nIGdldHJlbm50IHdlcmRlbiBzb2xsZW4iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NworbXNnaWQgImluY2x1ZGUgc3RhdHVzIGluIGNvbW1pdCBtZXNzYWdlIHRlbXBsYXRlIgorbXNnc3RyICJmw7xndCBTdGF0dXMgaW4gZGllIFZlcnNpb25zYmVzY2hyZWlidW5nc3ZvcmxhZ2UgZWluIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzggYnVpbHRpbi9tZXJnZS5jOjIxNSBidWlsdGluL3RhZy5jOjQ2MQorbXNnaWQgImtleSBpZCIKK21zZ3N0ciAiU2NobMO8c3NlbC1JRCIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzc5IGJ1aWx0aW4vbWVyZ2UuYzoyMTYKK21zZ2lkICJHUEcgc2lnbiBjb21taXQiCittc2dzdHIgInNpZ25pZXJ0IFZlcnNpb24gbWl0IEdQRyIKKworIy4gZW5kIGNvbW1pdCBtZXNzYWdlIG9wdGlvbnMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4MgorbXNnaWQgIkNvbW1pdCBjb250ZW50cyBvcHRpb25zIgorbXNnc3RyICJPcHRpb25lbiBmw7xyIFZlcnNpb25zaW5oYWx0IgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODMKK21zZ2lkICJjb21taXQgYWxsIGNoYW5nZWQgZmlsZXMiCittc2dzdHIgInRyw6RndCBhbGxlIGdlw6RuZGVydGVuIERhdGVpZW4gZWluIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODQKK21zZ2lkICJhZGQgc3BlY2lmaWVkIGZpbGVzIHRvIGluZGV4IGZvciBjb21taXQiCittc2dzdHIgInRyw6RndCBkaWUgYW5nZWdlYmVuZW4gRGF0ZWllbiB6dXPDpHR6bGljaCB6dXIgQmVyZWl0c3RlbGx1bmcgZWluIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODUKK21zZ2lkICJpbnRlcmFjdGl2ZWx5IGFkZCBmaWxlcyIKK21zZ3N0ciAiaW50ZXJha3RpdmVzIEhpbnp1ZsO8Z2VuIHZvbiBEYXRlaWVuIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODYKK21zZ2lkICJpbnRlcmFjdGl2ZWx5IGFkZCBjaGFuZ2VzIgorbXNnc3RyICJpbnRlcmFrdGl2ZXMgSGluenVmw7xnZW4gdm9uIMOEbmRlcnVuZ2VuIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODcKK21zZ2lkICJjb21taXQgb25seSBzcGVjaWZpZWQgZmlsZXMiCittc2dzdHIgInRyw6RndCBudXIgZGllIGFuZ2VnZWJlbmVuIERhdGVpZW4gZWluIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODgKK21zZ2lkICJieXBhc3MgcHJlLWNvbW1pdCBob29rIgorbXNnc3RyICJ1bWdlaHQgXCJwcmUtY29tbWl0IGhvb2tcIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzg5Cittc2dpZCAic2hvdyB3aGF0IHdvdWxkIGJlIGNvbW1pdHRlZCIKK21zZ3N0ciAiemVpZ3QgYW4sIHdhcyBlaW5nZXRyYWdlbiB3ZXJkZW4gd8O8cmRlIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDAKK21zZ2lkICJhbWVuZCBwcmV2aW91cyBjb21taXQiCittc2dzdHIgIsOkbmRlcnQgdm9yaGVyaWdlIFZlcnNpb24iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwMQorbXNnaWQgImJ5cGFzcyBwb3N0LXJld3JpdGUgaG9vayIKK21zZ3N0ciAidW1nZWh0IFwicG9zdC1yZXdyaXRlIGhvb2tcIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxNDA2Cittc2dpZCAib2sgdG8gcmVjb3JkIGFuIGVtcHR5IGNoYW5nZSIKK21zZ3N0ciAiZXJsYXVidCBBdWZ6ZWljaG51bmcgZWluZXIgbGVlcmVuIMOEbmRlcnVuZyIKKworIzogYnVpbHRpbi9jb21taXQuYzoxNDA5Cittc2dpZCAib2sgdG8gcmVjb3JkIGEgY2hhbmdlIHdpdGggYW4gZW1wdHkgbWVzc2FnZSIKK21zZ3N0ciAiZXJsYXVidCBBdWZ6ZWljaG51bmcgZWluZXIgw4RuZGVydW5nIG1pdCBlaW5lciBsZWVyZW4gQmVzY2hyZWlidW5nIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjE0NDEKIG1zZ2lkICJjb3VsZCBub3QgcGFyc2UgSEVBRCBjb21taXQiCiBtc2dzdHIgIktvbm50ZSBWZXJzaW9uIGRlciBad2VpZ3NwaXR6ZSAoSEVBRCkgbmljaHQgYW5hbHlzaWVyZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0ODQgYnVpbHRpbi9tZXJnZS5jOjUwOQorIzogYnVpbHRpbi9jb21taXQuYzoxNDc5IGJ1aWx0aW4vbWVyZ2UuYzo1MTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IG9wZW4gJyVzJyBmb3IgcmVhZGluZyIKIG1zZ3N0ciAiS29ubnRlICclcycgbmljaHQgenVtIExlc2VuIMO2ZmZuZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0OTEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3JydXB0IE1FUkdFX0hFQUQgZmlsZSAoJXMpIgogbXNnc3RyICJCZXNjaMOkZGlndGUgTUVSR0VfSEVBRC1EYXRlaSAoJXMpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0OTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ5MwogbXNnaWQgImNvdWxkIG5vdCByZWFkIE1FUkdFX01PREUiCiBtc2dzdHIgIktvbm50ZSBNRVJHRV9NT0RFIG5pY2h0IGxlc2VuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1MTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTUxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBjb21taXQgbWVzc2FnZTogJXMiCiBtc2dzdHIgIktvbm50ZSBWZXJzaW9uc2Jlc2NocmVpYnVuZyBuaWNodCBsZXNlbjogJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUzMQorIzogYnVpbHRpbi9jb21taXQuYzoxNTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFib3J0aW5nIGNvbW1pdDsgeW91IGRpZCBub3QgZWRpdCB0aGUgbWVzc2FnZS5cbiIKLW1zZ3N0ciAiRWludHJhZ3VuZyBhYmdlYnJvY2hlbjsgZHUgaGFzdCBkaWUgQmVzY2hyZWlidW5nIG5pY2h0IGVkaXRpZXJ0LlxuIgorbXNnc3RyICJFaW50cmFndW5nIGFiZ2Vicm9jaGVuOyBTaWUgaGFiZW4gZGllIEJlc2NocmVpYnVuZyBuaWNodCBlZGl0aWVydC5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTM2CisjOiBidWlsdGluL2NvbW1pdC5jOjE1MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWJvcnRpbmcgY29tbWl0IGR1ZSB0byBlbXB0eSBjb21taXQgbWVzc2FnZS5cbiIKIG1zZ3N0ciAiRWludHJhZ3VuZyBhdWZncnVuZCBsZWVyZXIgVmVyc2lvbnNiZXNjaHJlaWJ1bmcgYWJnZWJyb2NoZW4uXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTU1MSBidWlsdGluL21lcmdlLmM6OTM2IGJ1aWx0aW4vbWVyZ2UuYzo5NjEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU0NiBidWlsdGluL21lcmdlLmM6ODQ3IGJ1aWx0aW4vbWVyZ2UuYzo4NzIKIG1zZ2lkICJmYWlsZWQgdG8gd3JpdGUgY29tbWl0IG9iamVjdCIKIG1zZ3N0ciAiRmVobGVyIGJlaW0gU2NocmVpYmVuIGRlcyBWZXJzaW9uc29iamVrdGVzLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTcyCisjOiBidWlsdGluL2NvbW1pdC5jOjE1NjcKIG1zZ2lkICJjYW5ub3QgbG9jayBIRUFEIHJlZiIKIG1zZ3N0ciAiS2FubiBSZWZlcmVueiBkZXIgWndlaWdzcGl0emUgKEhFQUQpIG5pY2h0IHNwZXJyZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1NzYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU3MQogbXNnaWQgImNhbm5vdCB1cGRhdGUgSEVBRCByZWYiCiBtc2dzdHIgIkthbm4gUmVmZXJlbnogZGVyIFp3ZWlnc3BpdHplIChIRUFEKSBuaWNodCBha3R1YWxpc2llcmVuLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTg3CisjOiBidWlsdGluL2NvbW1pdC5jOjE1ODIKIG1zZ2lkICIiCiAiUmVwb3NpdG9yeSBoYXMgYmVlbiB1cGRhdGVkLCBidXQgdW5hYmxlIHRvIHdyaXRlXG4iCiAibmV3X2luZGV4IGZpbGUuIENoZWNrIHRoYXQgZGlzayBpcyBub3QgZnVsbCBvciBxdW90YSBpc1xuIgogIm5vdCBleGNlZWRlZCwgYW5kIHRoZW4gXCJnaXQgcmVzZXQgSEVBRFwiIHRvIHJlY292ZXIuIgogbXNnc3RyICIiCiAiRGFzIFByb2pla3RhcmNoaXYgd3VyZGUgYWt0dWFsaXNpZXJ0LCBhYmVyIGRpZSBcIm5ld19pbmRleFwiLURhdGVpXG4iCi0ia29ubnRlIG5pY2h0IGdlc2NocmllYmVuIHdlcmRlbi4gUHLDvGZlLCBkYXNzIGRlaW4gU3BlaWNoZXIgbmljaHRcbiIKLSJ2b2xsIHVuZCBEZWluIEtvbnRpbmdlbnQgbmljaHQgYXVmZ2VicmF1Y2h0IGlzdCB1bmQgZsO8aHJlXG4iCisia29ubnRlIG5pY2h0IGdlc2NocmllYmVuIHdlcmRlbi4gUHLDvGZlbiBTaWUsIGRhc3MgSWhyZSBGZXN0cGxhdHRlIG5pY2h0XG4iCisidm9sbCB1bmQgSWhyIEtvbnRpbmdlbnQgbmljaHQgYXVmZ2VicmF1Y2h0IGlzdCB1bmQgZsO8aHJlbiBTaWVcbiIKICJhbnNjaGxpZcOfZW5kIFwiZ2l0IHJlc2V0IEhFQURcIiB6dSBXaWVkZXJoZXJzdGVsbHVuZyBhdXMuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjM0CisjOiBidWlsdGluL2NvbmZpZy5jOjcKK21zZ2lkICJnaXQgY29uZmlnIFtvcHRpb25zXSIKK21zZ3N0ciAiZ2l0IGNvbmZpZyBbT3B0aW9uZW5dIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjUxCittc2dpZCAiQ29uZmlnIGZpbGUgbG9jYXRpb24iCittc2dzdHIgIk9ydCBkZXIgS29uZmlndXJhdGlvbnNkYXRlaSIKKworIzogYnVpbHRpbi9jb25maWcuYzo1MgorbXNnaWQgInVzZSBnbG9iYWwgY29uZmlnIGZpbGUiCittc2dzdHIgInZlcndlbmRldCBnbG9iYWxlIEtvbmZpZ3VyYXRpb25zZGF0ZWkiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTMKK21zZ2lkICJ1c2Ugc3lzdGVtIGNvbmZpZyBmaWxlIgorbXNnc3RyICJ2ZXJ3ZW5kZXQgc3lzdGVtd2VpdGUgS29uZmlndXJhdGlvbnNkYXRlaSIKKworIzogYnVpbHRpbi9jb25maWcuYzo1NAorbXNnaWQgInVzZSByZXBvc2l0b3J5IGNvbmZpZyBmaWxlIgorbXNnc3RyICJ2ZXJ3ZW5kZXQgS29uZmlndXJhdGlvbnNkYXRlaSBkZXMgUHJvamVrdGFyY2hpdnMiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTUKK21zZ2lkICJ1c2UgZ2l2ZW4gY29uZmlnIGZpbGUiCittc2dzdHIgInZlcndlbmRldCBkaWUgYW5nZWdlYmVuZSBLb25maWd1cmF0aW9uc2RhdGVpIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjU2Cittc2dpZCAiQWN0aW9uIgorbXNnc3RyICJBa3Rpb24iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTcKK21zZ2lkICJnZXQgdmFsdWU6IG5hbWUgW3ZhbHVlLXJlZ2V4XSIKK21zZ3N0ciAiZ2lidCBXZXJ0IHp1csO8Y2s6IE5hbWUgW1dlcnQtcmVnZXhdIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjU4Cittc2dpZCAiZ2V0IGFsbCB2YWx1ZXM6IGtleSBbdmFsdWUtcmVnZXhdIgorbXNnc3RyICJnaWJ0IGFsbGUgV2VydGUgenVyw7xjazogU2NobMO8c3NlbCBbV2VydC1yZWdleF0iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTkKK21zZ2lkICJnZXQgdmFsdWVzIGZvciByZWdleHA6IG5hbWUtcmVnZXggW3ZhbHVlLXJlZ2V4XSIKK21zZ3N0ciAiZ2lidCBXZXJ0ZSBmw7xyIGRlbiByZWd1bMOkcmVuIEF1c2RydWNrIHp1csO8Y2s6IE5hbWUtcmVnZXggW1dlcnQtcmVnZXhdIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjYwCittc2dpZCAicmVwbGFjZSBhbGwgbWF0Y2hpbmcgdmFyaWFibGVzOiBuYW1lIHZhbHVlIFt2YWx1ZV9yZWdleF0iCittc2dzdHIgImVyc2V0enQgYWxsZSBwYXNzZW5kZW4gVmFyaWFibGVuOiBOYW1lIFdlcnQgW1dlcnQtcmVnZXhdICIKKworIzogYnVpbHRpbi9jb25maWcuYzo2MQorbXNnaWQgImFkZCBhIG5ldyB2YXJpYWJsZTogbmFtZSB2YWx1ZSIKK21zZ3N0ciAiZsO8Z3QgbmV1ZSBWYXJpYWJsZSBoaW56dTogTmFtZSBXZXJ0IgorCisjOiBidWlsdGluL2NvbmZpZy5jOjYyCittc2dpZCAicmVtb3ZlIGEgdmFyaWFibGU6IG5hbWUgW3ZhbHVlLXJlZ2V4XSIKK21zZ3N0ciAiZW50ZmVybnQgZWluZSBWYXJpYWJsZTogTmFtZSBbV2VydC1yZWdleF0iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjMKK21zZ2lkICJyZW1vdmUgYWxsIG1hdGNoZXM6IG5hbWUgW3ZhbHVlLXJlZ2V4XSIKK21zZ3N0ciAiZW50ZmVybnQgYWxsZSDDnGJlcmVpbnN0aW1tdW5nZW46IE5hbWUgW1dlcnQtcmVnZXhdIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjY0Cittc2dpZCAicmVuYW1lIHNlY3Rpb246IG9sZC1uYW1lIG5ldy1uYW1lIgorbXNnc3RyICJiZW5lbm50IGVpbmUgU2VrdGlvbiB1bTogYWx0ZXItTmFtZSBuZXVlci1OYW1lIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjY1Cittc2dpZCAicmVtb3ZlIGEgc2VjdGlvbjogbmFtZSIKK21zZ3N0ciAiZW50ZmVybnQgZWluZSBTZWt0aW9uOiBOYW1lIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjY2Cittc2dpZCAibGlzdCBhbGwiCittc2dzdHIgImxpc3RldCBhbGxlcyBhdWYiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjcKK21zZ2lkICJvcGVuIGFuIGVkaXRvciIKK21zZ3N0ciAiw7ZmZm5ldCBlaW5lbiBFZGl0b3IiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjggYnVpbHRpbi9jb25maWcuYzo2OQorbXNnaWQgInNsb3QiCittc2dzdHIgIlNsb3QiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjgKK21zZ2lkICJmaW5kIHRoZSBjb2xvciBjb25maWd1cmVkOiBbZGVmYXVsdF0iCittc2dzdHIgImZpbmRldCBkaWUga29uZmlndXJpZXJ0ZSBGYXJiZTogW1N0YW5kYXJkXSIKKworIzogYnVpbHRpbi9jb25maWcuYzo2OQorbXNnaWQgImZpbmQgdGhlIGNvbG9yIHNldHRpbmc6IFtzdGRvdXQtaXMtdHR5XSIKK21zZ3N0ciAiZmluZGV0IGRpZSBGYXJiZWluc3RlbGx1bmc6IFtTdGFuZGFyZC1BdXNnYWJlLWlzdC1UZXJtaW5hbF0iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzAKK21zZ2lkICJUeXBlIgorbXNnc3RyICJUeXAiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzEKK21zZ2lkICJ2YWx1ZSBpcyBcInRydWVcIiBvciBcImZhbHNlXCIiCittc2dzdHIgIldlcnQgaXN0IFwidHJ1ZVwiIG9kZXIgXCJmYWxzZVwiIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjcyCittc2dpZCAidmFsdWUgaXMgZGVjaW1hbCBudW1iZXIiCittc2dzdHIgIldlcnQgaXN0IGVpbmUgRGV6aW1hbHphaGwiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzMKK21zZ2lkICJ2YWx1ZSBpcyAtLWJvb2wgb3IgLS1pbnQiCittc2dzdHIgIldlcnQgaXN0IC0tYm9vbCBvZGVyIC0taW50IgorCisjOiBidWlsdGluL2NvbmZpZy5jOjc0Cittc2dpZCAidmFsdWUgaXMgYSBwYXRoIChmaWxlIG9yIGRpcmVjdG9yeSBuYW1lKSIKK21zZ3N0ciAiV2VydCBpc3QgZWluIFBmYWQgKERhdGVpIG9kZXIgVmVyemVpY2huaXNuYW1lKSIKKworIzogYnVpbHRpbi9jb25maWcuYzo3NQorbXNnaWQgIk90aGVyIgorbXNnc3RyICJTb25zdGlnZXMiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzYKK21zZ2lkICJ0ZXJtaW5hdGUgdmFsdWVzIHdpdGggTlVMIGJ5dGUiCittc2dzdHIgInNjaGxpZcOfdCBXZXJ0ZSBtaXQgTlVMLUJ5dGUgYWIiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzcKK21zZ2lkICJyZXNwZWN0IGluY2x1ZGUgZGlyZWN0aXZlcyBvbiBsb29rdXAiCittc2dzdHIgImJlYWNodGV0IFwiaW5jbHVkZVwiLURpcmVrdGl2ZW4gYmVpbSBOYWNoc2NobGFnZW4iCisKKyM6IGJ1aWx0aW4vY291bnQtb2JqZWN0cy5jOjgyCittc2dpZCAiZ2l0IGNvdW50LW9iamVjdHMgWy12XSBbLUggfCAtLWh1bWFuLXJlYWRhYmxlXSIKK21zZ3N0ciAiZ2l0IGNvdW50LW9iamVjdHMgWy12XSBbLUggfCAtLWh1bWFuLXJlYWRhYmxlXSIKKworIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6OTcKK21zZ2lkICJwcmludCBzaXplcyBpbiBodW1hbiByZWFkYWJsZSBmb3JtYXQiCittc2dzdHIgImdpYnQgR3LDtsOfZW5hbmdhYmVuIGluIG1lbnNjaGVubGVzYmFyZW4gRm9ybWF0IGF1cyIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjE1Cittc2dpZCAiZ2l0IGRlc2NyaWJlIFtvcHRpb25zXSA8Y29tbWl0dGlzaD4qIgorbXNnc3RyICJnaXQgZGVzY3JpYmUgW09wdGlvbmVuXSA8Y29tbWl0dGlzaD4qIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MTYKK21zZ2lkICJnaXQgZGVzY3JpYmUgW29wdGlvbnNdIC0tZGlydHkiCittc2dzdHIgImdpdCBkZXNjcmliZSBbT3B0aW9uZW5dIC0tZGlydHkiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiYW5ub3RhdGVkIHRhZyAlcyBub3QgYXZhaWxhYmxlIgogbXNnc3RyICJhbm5vdGllcnRlIE1hcmtpZXJ1bmcgJXMgaXN0IG5pY2h0IHZlcmbDvGdiYXIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzgKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiYW5ub3RhdGVkIHRhZyAlcyBoYXMgbm8gZW1iZWRkZWQgbmFtZSIKIG1zZ3N0ciAiYW5ub3RpZXJ0ZSBNYXJraWVydW5nICVzIGhhdCBrZWluZW4gZWluZ2ViZXR0ZXRlbiBOYW1lbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI0MAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJ0YWcgJyVzJyBpcyByZWFsbHkgJyVzJyBoZXJlIgogbXNnc3RyICJNYXJraWVydW5nICclcycgaXN0IGVpZ2VudGxpY2ggJyVzJyBoaWVyIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjY3CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjY2CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vdCBhIHZhbGlkIG9iamVjdCBuYW1lICVzIgogbXNnc3RyICIlcyBpc3Qga2VpbiBnw7xsdGlnZXIgT2JqZWt0LU5hbWUiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNzAKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgaXMgbm90IGEgdmFsaWQgJyVzJyBvYmplY3QiCiBtc2dzdHIgIiVzIGlzdCBrZWluIGfDvGx0aWdlcyAnJXMnIE9iamVrdCIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI4NworIzogYnVpbHRpbi9kZXNjcmliZS5jOjI4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJubyB0YWcgZXhhY3RseSBtYXRjaGVzICclcyciCiBtc2dzdHIgImtlaW4gTWFya2llcnVuZyBlbnRzcHJpY2h0IGV4YWt0ICclcyciCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODkKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODgKICMsIGMtZm9ybWF0CiBtc2dpZCAic2VhcmNoaW5nIHRvIGRlc2NyaWJlICVzXG4iCiBtc2dzdHIgInN1Y2hlIHp1ciBCZXNjaHJlaWJ1bmcgdm9uICVzXG4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozMjkKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozMjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmluaXNoZWQgc2VhcmNoIGF0ICVzXG4iCiBtc2dzdHIgImJlZW5kZXRlIFN1Y2hlIGJlaSAlc1xuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MzUzCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MzUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJObyBhbm5vdGF0ZWQgdGFncyBjYW4gZGVzY3JpYmUgJyVzJy5cbiIKICJIb3dldmVyLCB0aGVyZSB3ZXJlIHVuYW5ub3RhdGVkIHRhZ3M6IHRyeSAtLXRhZ3MuIgogbXNnc3RyICIiCiAiS2VpbmUgYW5ub3RpZXJ0ZW4gTWFya2llcnVuZ2VuIGvDtm5uZW4gJyVzJyBiZXNjaHJlaWJlbi5cbiIKLSJKZWRvY2ggZ2FiIGVzIG5pY2h0IGFubm90aWVydGUgTWFya2llcnVuZ2VuOiB2ZXJzdWNoZSAtLXRhZ3MuIgorIkplZG9jaCBnYWIgZXMgbmljaHQgYW5ub3RpZXJ0ZSBNYXJraWVydW5nZW46IHZlcnN1Y2hlbiBTaWUgLS10YWdzLiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjM1NworIzogYnVpbHRpbi9kZXNjcmliZS5jOjM1NgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiTm8gdGFncyBjYW4gZGVzY3JpYmUgJyVzJy5cbiIKICJUcnkgLS1hbHdheXMsIG9yIGNyZWF0ZSBzb21lIHRhZ3MuIgogbXNnc3RyICIiCiAiS2VpbmUgTWFya2llcnVuZ2VuIGvDtm5uZW4gJyVzJyBiZXNjaHJlaWJlbi5cbiIKLSJWZXJzdWNoZSAtLWFsd2F5cyBvZGVyIGVyc3RlbGxlIGVpbmlnZSBNYXJraWVydW5nZW4uIgorIlZlcnN1Y2hlbiBTaWUgLS1hbHdheXMgb2RlciBlcnN0ZWxsZW4gU2llIGVpbmlnZSBNYXJraWVydW5nZW4uIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6Mzc4CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6Mzc3CiAjLCBjLWZvcm1hdAogbXNnaWQgInRyYXZlcnNlZCAlbHUgY29tbWl0c1xuIgogbXNnc3RyICIlbHUgVmVyc2lvbmVuIGR1cmNobGF1ZmVuXG4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozODEKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozODAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIm1vcmUgdGhhbiAlaSB0YWdzIGZvdW5kOyBsaXN0ZWQgJWkgbW9zdCByZWNlbnRcbiIKQEAgLTI1ODIsMjExICs0NTI4LDUxMiBAQAogIm1laHIgYWxzICVpIE1hcmtpZXJ1bmdlbiBnZWZ1bmRlbjsgRsO8aHJlIGRpZSBlcnN0ZW4gJWkgYXVmXG4iCiAiU3VjaGUgYmVpICVzIGF1ZmdlZ2ViZW5cbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQzNgotbXNnaWQgIi0tbG9uZyBpcyBpbmNvbXBhdGlibGUgd2l0aCAtLWFiYnJldj0wIgotbXNnc3RyICItLWxvbmcgaXN0IGlua29tcGF0aWJlbCBtaXQgLS1hYmJyZXY9MCIKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDIKK21zZ2lkICJmaW5kIHRoZSB0YWcgdGhhdCBjb21lcyBhZnRlciB0aGUgY29tbWl0IgorbXNnc3RyICJmaW5kZXQgZGllIE1hcmtpZXJ1bmcsIGRpZSBuYWNoIGRlciBWZXJzaW9uIGtvbW10IgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDYyCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDAzCittc2dpZCAiZGVidWcgc2VhcmNoIHN0cmF0ZWd5IG9uIHN0ZGVyciIKK21zZ3N0ciAicHJvdG9rb2xsaWVydCBkaWUgU3VjaHN0cmF0ZWdpZSBpbiBkZXIgU3RhbmRhcmQtRmVobGVyYXVzZ2FiZSIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNAorbXNnaWQgInVzZSBhbnkgcmVmIgorbXNnc3RyICJ2ZXJ3ZW5kZXQgYWxsZSBSZWZlcmVuemVuIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA1Cittc2dpZCAidXNlIGFueSB0YWcsIGV2ZW4gdW5hbm5vdGF0ZWQiCittc2dzdHIgInZlcndlbmRldCBqZWRlIE1hcmtpZXJ1bmcsIGF1Y2ggbmljaHQtYW5ub3RpZXJ0ZSIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNgorbXNnaWQgImFsd2F5cyB1c2UgbG9uZyBmb3JtYXQiCittc2dzdHIgInZlcndlbmRldCBpbW1lciBsYW5nZXMgRm9ybWF0IgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA5Cittc2dpZCAib25seSBvdXRwdXQgZXhhY3QgbWF0Y2hlcyIKK21zZ3N0ciAiZ2lidCBudXIgZXhha3RlIMOcYmVyZWluc3RpbW11bmdlbiBhdXMiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTEKK21zZ2lkICJjb25zaWRlciA8bj4gbW9zdCByZWNlbnQgdGFncyAoZGVmYXVsdDogMTApIgorbXNnc3RyICJiZXRyYWNodGV0IGRpZSBqw7xuZ3N0ZW4gPG4+IE1hcmtpZXJ1bmdlbiAoU3RhbmRhcmQ6IDEwKSIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxMworbXNnaWQgIm9ubHkgY29uc2lkZXIgdGFncyBtYXRjaGluZyA8cGF0dGVybj4iCittc2dzdHIgImJldHJhY2h0ZXQgbnVyIE1hcmtpZXJ1bmdlbiBkaWUgPE11c3Rlcj4gZW50c3ByZWNoZW4iCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTUgYnVpbHRpbi9uYW1lLXJldi5jOjIzOAorbXNnaWQgInNob3cgYWJicmV2aWF0ZWQgY29tbWl0IG9iamVjdCBhcyBmYWxsYmFjayIKK21zZ3N0ciAiemVpZ3QgZ2Vrw7xyenRlcyBWZXJzaW9uc29iamVrdCwgd2VubiBzb25zdCBuaWNodHMgenV0cmlmZnQiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTYKK21zZ2lkICJtYXJrIgorbXNnc3RyICJLZW5uemVpY2hlbiIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxNworbXNnaWQgImFwcGVuZCA8bWFyaz4gb24gZGlydHkgd29ya2luZyB0cmVlIChkZWZhdWx0OiBcIi1kaXJ0eVwiKSIKK21zZ3N0ciAiIgorImbDvGd0IDxLZW5uemVpY2hlbj4gYmVpIGdlw6RuZGVydGVtIEFyYmVpdHNiYXVtIGhpbnp1IChTdGFuZGFyZDogXCItZGlydHlcIikiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MzUKK21zZ2lkICItLWxvbmcgaXMgaW5jb21wYXRpYmxlIHdpdGggLS1hYmJyZXY9MCIKK21zZ3N0ciAiRGllIE9wdGlvbmVuIC0tbG9uZyB1bmQgLS1hYmJyZXY9MCBzaW5kIGlua29tcGF0aWJlbC4iCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0NjEKIG1zZ2lkICJObyBuYW1lcyBmb3VuZCwgY2Fubm90IGRlc2NyaWJlIGFueXRoaW5nLiIKIG1zZ3N0ciAiS2VpbmUgTmFtZW4gZ2VmdW5kZW4sIGthbm4gbmljaHRzIGJlc2NocmVpYmVuLiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ4MgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ4MQogbXNnaWQgIi0tZGlydHkgaXMgaW5jb21wYXRpYmxlIHdpdGggY29tbWl0dGlzaGVzIgotbXNnc3RyICItLWRpcnR5IGlzdCBpbmtvbXBhdGliZWwgbWl0IFZlcnNpb25lbiIKK21zZ3N0ciAiRGllIE9wdGlvbiAtLWRpcnR5IGthbm4gbmljaHQgbWl0IFZlcnNpb25lbiB2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAotIzogYnVpbHRpbi9kaWZmLmM6NzcKKyM6IGJ1aWx0aW4vZGlmZi5jOjc5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6IG5vdCBhIHJlZ3VsYXIgZmlsZSBvciBzeW1saW5rIgogbXNnc3RyICInJXMnOiBrZWluZSByZWd1bMOkcmUgRGF0ZWkgb2RlciBzeW1ib2xpc2NoZXIgTGluayIKIAotIzogYnVpbHRpbi9kaWZmLmM6MjIwCisjOiBidWlsdGluL2RpZmYuYzoyMjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBvcHRpb246ICVzIgogbXNnc3RyICJVbmfDvGx0aWdlIE9wdGlvbjogJXMiCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjI5NworIzogYnVpbHRpbi9kaWZmLmM6MzA1CiBtc2dpZCAiTm90IGEgZ2l0IHJlcG9zaXRvcnkiCiBtc2dzdHIgIktlaW4gR2l0LVByb2pla3RhcmNoaXYiCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjM0NworIzogYnVpbHRpbi9kaWZmLmM6MzQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgb2JqZWN0ICclcycgZ2l2ZW4uIgogbXNnc3RyICJPYmpla3QgJyVzJyBpc3QgdW5nw7xsdGlnLiIKIAotIzogYnVpbHRpbi9kaWZmLmM6MzUyCisjOiBidWlsdGluL2RpZmYuYzozNTMKICMsIGMtZm9ybWF0CiBtc2dpZCAibW9yZSB0aGFuICVkIHRyZWVzIGdpdmVuOiAnJXMnIgogbXNnc3RyICJNZWhyIGFscyAlZCBad2VpZ2UgYW5nZWdlYmVuOiAnJXMnIgogCi0jOiBidWlsdGluL2RpZmYuYzozNjIKKyM6IGJ1aWx0aW4vZGlmZi5jOjM2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJtb3JlIHRoYW4gdHdvIGJsb2JzIGdpdmVuOiAnJXMnIgogbXNnc3RyICJNZWhyIGFscyB6d2VpIEJsb2JzIGFuZ2VnZWJlbjogJyVzJyIKIAotIzogYnVpbHRpbi9kaWZmLmM6MzcwCisjOiBidWlsdGluL2RpZmYuYzozNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5oYW5kbGVkIG9iamVjdCAnJXMnIGdpdmVuLiIKIG1zZ3N0ciAidW5iZWhhbmRlbHRlcyBPYmpla3QgJyVzJyBhbmdlZ2ViZW4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyMDAKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzoyMgorbXNnaWQgImdpdCBmYXN0LWV4cG9ydCBbcmV2LWxpc3Qtb3B0c10iCittc2dzdHIgImdpdCBmYXN0LWV4cG9ydCBbcmV2LWxpc3Qtb3B0c10iCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NTgKK21zZ2lkICJzaG93IHByb2dyZXNzIGFmdGVyIDxuPiBvYmplY3RzIgorbXNnc3RyICJ6ZWlndCBGb3J0c2Nocml0dCBuYWNoIDxuPiBPYmpla3RlbiBhbiIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2MAorbXNnaWQgInNlbGVjdCBoYW5kbGluZyBvZiBzaWduZWQgdGFncyIKK21zZ3N0ciAid8OkaGx0IEJlaGFuZGx1bmcgdm9uIHNpZ25pZXJ0ZW4gTWFya2llcnVuZ2VuIgorCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYzCittc2dpZCAic2VsZWN0IGhhbmRsaW5nIG9mIHRhZ3MgdGhhdCB0YWcgZmlsdGVyZWQgb2JqZWN0cyIKK21zZ3N0ciAid8OkaGx0IEJlaGFuZGx1bmcgdm9uIE1hcmtpZXJ1bmdlbiwgZGllIGdlZmlsdGVydGUgT2JqZWt0ZSBtYXJraWVyZW4iCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjYKK21zZ2lkICJEdW1wIG1hcmtzIHRvIHRoaXMgZmlsZSIKK21zZ3N0ciAiU2NocmVpYnQgS2VubnplaWNoZW4gaW4gZGllc2UgRGF0ZWkiCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjgKK21zZ2lkICJJbXBvcnQgbWFya3MgZnJvbSB0aGlzIGZpbGUiCittc2dzdHIgIkltcG9ydGllcnQgS2VubnplaWNoZW4gdm9uIGRpZXNlciBEYXRlaSIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3MAorbXNnaWQgIkZha2UgYSB0YWdnZXIgd2hlbiB0YWdzIGxhY2sgb25lIgorbXNnc3RyICIiCisiZXJ6ZXVndCBrw7xuc3RsaWNoIGVpbmVuIE1hcmtpZXJ1bmdzZXJzdGVsbGVyLCB3ZW5uIGRpZSBNYXJraWVydW5nIGtlaW5lbiBoYXQiCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzIKK21zZ2lkICJPdXRwdXQgZnVsbCB0cmVlIGZvciBlYWNoIGNvbW1pdCIKK21zZ3N0ciAiZ2lidCBmw7xyIGplZGUgVmVyc2lvbiBkZW4gZ2VzYW10ZW4gQmF1bSBhdXMiCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzQKK21zZ2lkICJVc2UgdGhlIGRvbmUgZmVhdHVyZSB0byB0ZXJtaW5hdGUgdGhlIHN0cmVhbSIKK21zZ3N0ciAiQmVudXR6dCBkaWUgXCJkb25lXCItRnVua3Rpb24gdW0gZGVuIFN0cm9tIGFienVzY2hsaWXDn2VuIgorCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc1Cittc2dpZCAiU2tpcCBvdXRwdXQgb2YgYmxvYiBkYXRhIgorbXNnc3RyICLDnGJlcnNwcmluZ3QgQXVzZ2FiZSB2b24gQmxvYi1EYXRlbiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjIwCittc2dpZCAiZ2l0IGZldGNoIFs8b3B0aW9ucz5dIFs8cmVwb3NpdG9yeT4gWzxyZWZzcGVjPi4uLl1dIgorbXNnc3RyICJnaXQgZmV0Y2ggWzxPcHRpb25lbj5dIFs8UHJvamVrdGFyY2hpdj4gWzxSZWZlcmVuenNwZXppZmlrYXRpb24+Li4uXV0iCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyMQorbXNnaWQgImdpdCBmZXRjaCBbPG9wdGlvbnM+XSA8Z3JvdXA+IgorbXNnc3RyICJnaXQgZmV0Y2ggWzxPcHRpb25lbj5dIDxHcnVwcGU+IgorCisjOiBidWlsdGluL2ZldGNoLmM6MjIKK21zZ2lkICJnaXQgZmV0Y2ggLS1tdWx0aXBsZSBbPG9wdGlvbnM+XSBbKDxyZXBvc2l0b3J5PiB8IDxncm91cD4pLi4uXSIKK21zZ3N0ciAiZ2l0IGZldGNoIC0tbXVsdGlwbGUgWzxPcHRpb25lbj5dIFsoPFByb2pla3RhcmNoaXY+IHwgPEdydXBwZT4pLi4uXSIKKworIzogYnVpbHRpbi9mZXRjaC5jOjIzCittc2dpZCAiZ2l0IGZldGNoIC0tYWxsIFs8b3B0aW9ucz5dIgorbXNnc3RyICJnaXQgZmV0Y2ggLS1hbGwgWzxPcHRpb25lbj5dIgorCisjOiBidWlsdGluL2ZldGNoLmM6NjAKK21zZ2lkICJmZXRjaCBmcm9tIGFsbCByZW1vdGVzIgorbXNnc3RyICJmb3JkZXJ0IHZvbiBhbGxlbiBleHRlcm5lbiBQcm9qZWt0YXJjaGl2ZW4gYW4iCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo2MgorbXNnaWQgImFwcGVuZCB0byAuZ2l0L0ZFVENIX0hFQUQgaW5zdGVhZCBvZiBvdmVyd3JpdGluZyIKK21zZ3N0ciAiaMOkbmd0IGFuIC5naXQvRkVUQ0hfSEVBRCBhbiwgYW5zdGF0dCB6dSDDvGJlcnNjaHJlaWJlbiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjY0Cittc2dpZCAicGF0aCB0byB1cGxvYWQgcGFjayBvbiByZW1vdGUgZW5kIgorbXNnc3RyICJQZmFkIGRlcyBQcm9ncmFtbXMgenVtIEhvY2hsYWRlbiB2b24gUGFrZXRlbiBhdWYgZGVyIEdlZ2Vuc2VpdGUiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo2NQorbXNnaWQgImZvcmNlIG92ZXJ3cml0ZSBvZiBsb2NhbCBicmFuY2giCittc2dzdHIgImVyendpbmd0IGRhcyDDnGJlcnNjaHJlaWJlbiB2b24gbG9rYWxlbiBad2VpZ2VuIgorCisjOiBidWlsdGluL2ZldGNoLmM6NjcKK21zZ2lkICJmZXRjaCBmcm9tIG11bHRpcGxlIHJlbW90ZXMiCittc2dzdHIgImZvcmRlcnQgdm9uIG1laHJlcmVuIGV4dGVybmVuIFByb2pla3RhcmNoaXZlbiBhbiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjY5Cittc2dpZCAiZmV0Y2ggYWxsIHRhZ3MgYW5kIGFzc29jaWF0ZWQgb2JqZWN0cyIKK21zZ3N0ciAiZm9yZGVydCBhbGxlIE1hcmtpZXJ1bmdlbiB1bmQgdmVyYnVuZGVuZSBPYmpla3RlIGFuIgorCisjOiBidWlsdGluL2ZldGNoLmM6NzEKK21zZ2lkICJkbyBub3QgZmV0Y2ggYWxsIHRhZ3MgKC0tbm8tdGFncykiCittc2dzdHIgImZvcmRlcnQgbmljaHQgYWxsZSBNYXJraWVydW5nZW4gYW4gKC0tbm8tdGFncykiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3MworbXNnaWQgInBydW5lIHJlbW90ZS10cmFja2luZyBicmFuY2hlcyBubyBsb25nZXIgb24gcmVtb3RlIgorbXNnc3RyICIiCisiZW50ZmVybnQgZXh0ZXJuZSDDnGJlcm5haG1lendlaWdlLCBkaWUgc2ljaCBuaWNodCBtZWhyIGltIEZlcm5hcmNoaXYgYmVmaW5kZW4iCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3NAorbXNnaWQgIm9uLWRlbWFuZCIKK21zZ3N0ciAiYmVpLUJlZGFyZiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjc1Cittc2dpZCAiY29udHJvbCByZWN1cnNpdmUgZmV0Y2hpbmcgb2Ygc3VibW9kdWxlcyIKK21zZ3N0ciAia29udHJvbGxpZXJ0IHJla3Vyc2l2ZSBBbmZvcmRlcnVuZ2VuIHZvbiBVbnRlcnByb2pla3RlbiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjc5Cittc2dpZCAia2VlcCBkb3dubG9hZGVkIHBhY2siCittc2dzdHIgImJlaMOkbHQgaGVydW50ZXJnZWxhZGVuZXMgUGFrZXQiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4MQorbXNnaWQgImFsbG93IHVwZGF0aW5nIG9mIEhFQUQgcmVmIgorbXNnc3RyICJlcmxhdWJ0IEFrdHVhbGlzaWVydW5nIGRlciBcIkhFQURcIi1SZWZlcmVueiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjg0Cittc2dpZCAiZGVlcGVuIGhpc3Rvcnkgb2Ygc2hhbGxvdyBjbG9uZSIKK21zZ3N0ciAidmVydGllZnQgZGllIEhpc3RvcmllIGVpbmVzIGZsYWNoZW4gS2xvbiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjg2Cittc2dpZCAiY29udmVydCB0byBhIGNvbXBsZXRlIHJlcG9zaXRvcnkiCittc2dzdHIgImtvbnZlcnRpZXJ0IHp1IGVpbmVtIHZvbGxzdMOkbmRpZ2VuIFByb2pla3RhcmNoaXYiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4OCBidWlsdGluL2xvZy5jOjExMzAKK21zZ2lkICJkaXIiCittc2dzdHIgIlZlcnplaWNobmlzIgorCisjOiBidWlsdGluL2ZldGNoLmM6ODkKK21zZ2lkICJwcmVwZW5kIHRoaXMgdG8gc3VibW9kdWxlIHBhdGggb3V0cHV0IgorbXNnc3RyICJzdGVsbHQgZGllcyBhbiBkaWUgQXVzZ2FiZSBkZXIgVW50ZXJwcm9qZWt0LVBmYWRlIHZvcmFuIgorCisjOiBidWlsdGluL2ZldGNoLmM6OTIKK21zZ2lkICJkZWZhdWx0IG1vZGUgZm9yIHJlY3Vyc2lvbiIKK21zZ3N0ciAiU3RhbmRhcmQtTW9kdXMgZsO8ciBSZWt1cnNpb24iCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyMDQKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIHJlbW90ZSByZWYgSEVBRCIKIG1zZ3N0ciAiS29ubnRlIGV4dGVybmUgUmVmZXJlbnogZGVyIFp3ZWlnc3BpdHplIChIRUFEKSBuaWNodCBmaW5kZW4uIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjUzCisjOiBidWlsdGluL2ZldGNoLmM6MjU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIm9iamVjdCAlcyBub3QgZm91bmQiCiBtc2dzdHIgIk9iamVrdCAlcyBuaWNodCBnZWZ1bmRlbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI1OQorIzogYnVpbHRpbi9mZXRjaC5jOjI2MgogbXNnaWQgIlt1cCB0byBkYXRlXSIKIG1zZ3N0ciAiW2FrdHVlbGxdIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjczCisjOiBidWlsdGluL2ZldGNoLmM6Mjc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiEgJS0qcyAlLSpzIC0+ICVzICAoY2FuJ3QgZmV0Y2ggaW4gY3VycmVudCBicmFuY2gpIgogbXNnc3RyICIhICUtKnMgJS0qcyAtPiAlcyAgKGthbm4gbmljaHQgaW0gYWt0dWVsbGVuIFp3ZWlnIGFuZm9yZGVybikiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNzQgYnVpbHRpbi9mZXRjaC5jOjM2MAorIzogYnVpbHRpbi9mZXRjaC5jOjI3NyBidWlsdGluL2ZldGNoLmM6MzYzCiBtc2dpZCAiW3JlamVjdGVkXSIKIG1zZ3N0ciAiW3p1csO8Y2tnZXdpZXNlbl0iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyODUKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyODgKIG1zZ2lkICJbdGFnIHVwZGF0ZV0iCiBtc2dzdHIgIltNYXJraWVydW5nc2FrdHVhbGlzaWVydW5nXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI4NyBidWlsdGluL2ZldGNoLmM6MzIyIGJ1aWx0aW4vZmV0Y2guYzozNDAKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyOTAgYnVpbHRpbi9mZXRjaC5jOjMyNSBidWlsdGluL2ZldGNoLmM6MzQzCiBtc2dpZCAiICAodW5hYmxlIHRvIHVwZGF0ZSBsb2NhbCByZWYpIgogbXNnc3RyICIgIChrYW5uIGxva2FsZSBSZWZlcmVueiBuaWNodCBha3R1YWxpc2llcmVuKSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjMwNQorIzogYnVpbHRpbi9mZXRjaC5jOjMwOAogbXNnaWQgIltuZXcgdGFnXSIKIG1zZ3N0ciAiW25ldWUgTWFya2llcnVuZ10iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMDgKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMTEKIG1zZ2lkICJbbmV3IGJyYW5jaF0iCiBtc2dzdHIgIltuZXVlciBad2VpZ10iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMTEKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMTQKIG1zZ2lkICJbbmV3IHJlZl0iCiBtc2dzdHIgIltuZXVlIFJlZmVyZW56XSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM1NgorIzogYnVpbHRpbi9mZXRjaC5jOjM1OQogbXNnaWQgInVuYWJsZSB0byB1cGRhdGUgbG9jYWwgcmVmIgogbXNnc3RyICJrYW5uIGxva2FsZSBSZWZlcmVueiBuaWNodCBha3R1YWxpc2llcmVuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzU2CisjOiBidWlsdGluL2ZldGNoLmM6MzU5CiBtc2dpZCAiZm9yY2VkIHVwZGF0ZSIKIG1zZ3N0ciAiQWt0dWFsaXNpZXJ1bmcgZXJ6d3VuZ2VuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzYyCisjOiBidWlsdGluL2ZldGNoLmM6MzY1CiBtc2dpZCAiKG5vbi1mYXN0LWZvcndhcmQpIgogbXNnc3RyICIoa2VpbiBWb3JzcHVsZW4pIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzkzIGJ1aWx0aW4vZmV0Y2guYzo2ODUKKyM6IGJ1aWx0aW4vZmV0Y2guYzozOTYgYnVpbHRpbi9mZXRjaC5jOjY4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiAlczogJXNcbiIKIG1zZ3N0ciAia2FubiAlcyBuaWNodCDDtmZmbmVuOiAlc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NDAyCisjOiBidWlsdGluL2ZldGNoLmM6NDA1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGRpZCBub3Qgc2VuZCBhbGwgbmVjZXNzYXJ5IG9iamVjdHNcbiIKIG1zZ3N0ciAiJXMgaGF0IG5pY2h0IGFsbGUgZXJmb3JkZXJsaWNoZW4gT2JqZWt0ZSBnZXNlbmRldFxuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NDg4CisjOiBidWlsdGluL2ZldGNoLmM6NDkxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkZyb20gJS4qc1xuIgogbXNnc3RyICJWb24gJS4qc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NDk5CisjOiBidWlsdGluL2ZldGNoLmM6NTAyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJzb21lIGxvY2FsIHJlZnMgY291bGQgbm90IGJlIHVwZGF0ZWQ7IHRyeSBydW5uaW5nXG4iCiAiICdnaXQgcmVtb3RlIHBydW5lICVzJyB0byByZW1vdmUgYW55IG9sZCwgY29uZmxpY3RpbmcgYnJhbmNoZXMiCiBtc2dzdHIgIiIKLSJFaW5pZ2UgbG9rYWxlIFJlZmVyZW56ZW4ga29ubnRlbiBuaWNodCBha3R1YWxpc2llcnQgd2VyZGVuOyB2ZXJzdWNoZVxuIgotIidnaXQgcmVtb3RlIHBydW5lICVzJyB1bSBqZWRlbiDDpGx0ZXJlbiwgd2lkZXJzcHLDvGNobGljaGVuIFp3ZWlnIHp1IGVudGZlcm5lbi4iCisiRWluaWdlIGxva2FsZSBSZWZlcmVuemVuIGtvbm50ZW4gbmljaHQgYWt0dWFsaXNpZXJ0IHdlcmRlbjsgdmVyc3VjaGVuIFNpZVxuIgorIidnaXQgcmVtb3RlIHBydW5lICVzJyB1bSBqZWRlbiDDpGx0ZXJlbiwgd2lkZXJzcHLDvGNobGljaGVuIFp3ZWlnIHp1IGzDtnNjaGVuLiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjU0OQorIzogYnVpbHRpbi9mZXRjaC5jOjU1MgogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAoJXMgd2lsbCBiZWNvbWUgZGFuZ2xpbmcpIgogbXNnc3RyICIgICAoJXMgd2lyZCB1bnJlZmVyZW56aWVydCkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NTAKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgKCVzIGhhcyBiZWNvbWUgZGFuZ2xpbmcpIgogbXNnc3RyICIgICAoJXMgd3VyZGUgdW5yZWZlcmVuemllcnQpIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTU3CisjOiBidWlsdGluL2ZldGNoLmM6NTYwCiBtc2dpZCAiW2RlbGV0ZWRdIgogbXNnc3RyICJbZ2Vsw7ZzY2h0XSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjU1OCBidWlsdGluL3JlbW90ZS5jOjEwNTUKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NjEgYnVpbHRpbi9yZW1vdGUuYzoxMDU1CiBtc2dpZCAiKG5vbmUpIgogbXNnc3RyICIobmljaHRzKSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjY3NQorIzogYnVpbHRpbi9mZXRjaC5jOjY3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJSZWZ1c2luZyB0byBmZXRjaCBpbnRvIGN1cnJlbnQgYnJhbmNoICVzIG9mIG5vbi1iYXJlIHJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKICJEYXMgQW5mb3JkZXJuIGluIGRlbiBha3R1ZWxsZW4gWndlaWcgJXMgdm9uIGVpbmVtIG5pY2h0LWJsb8OfZW4gUHJvamVrdGFyY2hpdiAiCiAid3VyZGUgdmVyd2VpZ2VydC4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo3MDkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3MTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRG9uJ3Qga25vdyBob3cgdG8gZmV0Y2ggZnJvbSAlcyIKIG1zZ3N0ciAiV2Vpw58gbmljaHQgd2llIHZvbiAlcyBhbmdlZm9yZGVydCB3aXJkLiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjc4NgorIzogYnVpbHRpbi9mZXRjaC5jOjc4OQogIywgYy1mb3JtYXQKIG1zZ2lkICJPcHRpb24gXCIlc1wiIHZhbHVlIFwiJXNcIiBpcyBub3QgdmFsaWQgZm9yICVzIgogbXNnc3RyICJPcHRpb24gXCIlc1wiIFdlcnQgXCIlc1wiIGlzdCBuaWNodCBnw7xsdGlnIGbDvHIgJXMiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo3ODkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3B0aW9uIFwiJXNcIiBpcyBpZ25vcmVkIGZvciAlc1xuIgogbXNnc3RyICJPcHRpb24gXCIlc1wiIHdpcmQgaWdub3JpZXJ0IGbDvHIgJXNcbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg4OAorIzogYnVpbHRpbi9mZXRjaC5jOjg5NAogIywgYy1mb3JtYXQKIG1zZ2lkICJGZXRjaGluZyAlc1xuIgogbXNnc3RyICJGb3JkZXJlIGFuIHZvbiAlc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6ODkwIGJ1aWx0aW4vcmVtb3RlLmM6MTAwCisjOiBidWlsdGluL2ZldGNoLmM6ODk2IGJ1aWx0aW4vcmVtb3RlLmM6MTAwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmZXRjaCAlcyIKIG1zZ3N0ciAiS29ubnRlIG5pY2h0IHZvbiAlcyBhbmZvcmRlcm4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5MDcKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5MTUKIG1zZ2lkICIiCiAiTm8gcmVtb3RlIHJlcG9zaXRvcnkgc3BlY2lmaWVkLiAgUGxlYXNlLCBzcGVjaWZ5IGVpdGhlciBhIFVSTCBvciBhXG4iCiAicmVtb3RlIG5hbWUgZnJvbSB3aGljaCBuZXcgcmV2aXNpb25zIHNob3VsZCBiZSBmZXRjaGVkLiIKIG1zZ3N0ciAiIgotIktlaW4gZXh0ZXJuZXMgUHJvamVrdGFyY2hpdiBhbmdlZ2ViZW4uIEJpdHRlIGdlYmUgZW50d2VkZXIgZWluZSBVUkxcbiIKKyJLZWluIGV4dGVybmVzIFByb2pla3RhcmNoaXYgYW5nZWdlYmVuLiBCaXR0ZSBnZWJlbiBTaWUgZW50d2VkZXIgZWluZSBVUkxcbiIKICJvZGVyIGRlbiBOYW1lbiBkZXMgZXh0ZXJuZW4gQXJjaGl2cyBhbiwgdm9uIHdlbGNoZW0gbmV1ZVxuIgotIlZlcnNpb25lbiBhbmdlZm9yZGVydCB3ZXJkZW4gc29sbGVuLiIKKyJSZXZpc2lvbmVuIGFuZ2Vmb3JkZXJ0IHdlcmRlbiBzb2xsZW4uIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTI3CisjOiBidWlsdGluL2ZldGNoLmM6OTM1CiBtc2dpZCAiWW91IG5lZWQgdG8gc3BlY2lmeSBhIHRhZyBuYW1lLiIKLW1zZ3N0ciAiRHUgbXVzc3QgZGVuIE5hbWVuIGRlciBNYXJraWVydW5nIGFuZ2ViZW4uIgorbXNnc3RyICJTaWUgbcO8c3NlbiBkZW4gTmFtZW4gZGVyIE1hcmtpZXJ1bmcgYW5nZWJlbi4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5NzkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5ODEKK21zZ2lkICItLWRlcHRoIGFuZCAtLXVuc2hhbGxvdyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIKK21zZ3N0ciAiIgorIkRpZSBPcHRpb25lbiAtLWRlcHRoIHVuZCAtLXVuc2hhbGxvdyBrw7ZubmVuIG5pY2h0IGdlbWVpbnNhbSB2ZXJ3ZW5kZXQgd2VyZGVuLiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjk4MworbXNnaWQgIi0tdW5zaGFsbG93IG9uIGEgY29tcGxldGUgcmVwb3NpdG9yeSBkb2VzIG5vdCBtYWtlIHNlbnNlIgorbXNnc3RyICIiCisiRGllIE9wdGlvbiAtLXVuc2hhbGxvdyBrYW5uIG5pY2h0IGluIGVpbmVtIHZvbGxzdMOkbmRpZ2VuIFByb2pla3RhcmNoaXYgIgorInZlcndlbmRldCB3ZXJkZW4uIgorCisjOiBidWlsdGluL2ZldGNoLmM6MTAwMgogbXNnaWQgImZldGNoIC0tYWxsIGRvZXMgbm90IHRha2UgYSByZXBvc2l0b3J5IGFyZ3VtZW50IgogbXNnc3RyICJmZXRjaCAtLWFsbCBha3plcHRpZXJ0IGtlaW4gUHJvamVrdGFyY2hpdiBhbHMgQXJndW1lbnQiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5ODEKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDA0CiBtc2dpZCAiZmV0Y2ggLS1hbGwgZG9lcyBub3QgbWFrZSBzZW5zZSB3aXRoIHJlZnNwZWNzIgotbXNnc3RyICJmZXRjaCAtLWFsbCBtYWNodCBrZWluZW4gU2lubiBtaXQgUmVmZXJlbnpzcGV6aWZpa2F0aW9uZW4iCittc2dzdHIgImZldGNoIC0tYWxsIGthbm4gbmljaHQgbWl0IFJlZmVyZW56c3BlemlmaWthdGlvbmVuIHZlcndlbmRldCB3ZXJkZW4uIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTkyCisjOiBidWlsdGluL2ZldGNoLmM6MTAxNQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBzdWNoIHJlbW90ZSBvciByZW1vdGUgZ3JvdXA6ICVzIgogbXNnc3RyICJLZWluIGV4dGVybmVzIEFyY2hpdiAoZWluemVsbiBvZGVyIEdydXBwZSk6ICVzIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MTAwMAorIzogYnVpbHRpbi9mZXRjaC5jOjEwMjMKIG1zZ2lkICJGZXRjaGluZyBhIGdyb3VwIGFuZCBzcGVjaWZ5aW5nIHJlZnNwZWNzIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIiIKLSJBYmhvbGVuIGVpbmVyIEdydXBwZSBtaXQgQW5nYWJlIHZvbiBSZWZlcmVuenNwZXppZmlrYXRpb25lbiBtYWNodCBrZWluZW4gIgotIlNpbm4uIgorIkRhcyBBYmhvbGVuIGVpbmVyIEdydXBwZSB2b24gZXh0ZXJuZW4gQXJjaGl2ZW4ga2FubiBuaWNodCBtaXQgZGVyIEFuZ2FiZVxuIgorInZvbiBSZWZlcmVuenNwZXppZmlrYXRpb25lbiB2ZXJ3ZW5kZXQgd2VyZGVuLiIKKworIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6MTMKK21zZ2lkICJnaXQgZm10LW1lcmdlLW1zZyBbLW0gPG1lc3NhZ2U+XSBbLS1sb2dbPTxuPl18LS1uby1sb2ddIFstLWZpbGUgPGZpbGU+XSIKK21zZ3N0ciAiIgorImdpdCBmbXQtbWVyZ2UtbXNnIFstbSA8QmVzY2hyZWlidW5nPl0gWy0tbG9nWz08bj5dfC0tbm8tbG9nXSBbLS1maWxlIDxEYXRlaT5dIgorCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjMgYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY2IGJ1aWx0aW4vZ3JlcC5jOjcwMQorIzogYnVpbHRpbi9tZXJnZS5jOjE4OCBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU1IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzUKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ2IHBhcnNlLW9wdGlvbnMuaDoxMzMgcGFyc2Utb3B0aW9ucy5oOjIzOQorbXNnaWQgIm4iCittc2dzdHIgIkFuemFobCIKKworIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY0Cittc2dpZCAicG9wdWxhdGUgbG9nIHdpdGggYXQgbW9zdCA8bj4gZW50cmllcyBmcm9tIHNob3J0bG9nIgorbXNnc3RyICJmw7xndCBIaXN0b3JpZSBtaXQgaMO2Y2hzdGVucyA8bj4gRWludHLDpGdlbiB2b24gXCJzaG9ydGxvZ1wiIGhpbnp1IgorCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjcKK21zZ2lkICJhbGlhcyBmb3IgLS1sb2cgKGRlcHJlY2F0ZWQpIgorbXNnc3RyICJBbGlhcyBmw7xyIC0tbG9nICh2ZXJhbHRldCkiCisKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY3MAorbXNnaWQgInRleHQiCittc2dzdHIgIlRleHQiCisKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY3MQorbXNnaWQgInVzZSA8dGV4dD4gYXMgc3RhcnQgb2YgbWVzc2FnZSIKK21zZ3N0ciAidmVyd2VuZGV0IDxUZXh0PiBhbHMgQmVzY2hyZWlidW5nc2FuZmFuZyIKKworIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjcyCittc2dpZCAiZmlsZSB0byByZWFkIGZyb20iCittc2dzdHIgIkRhdGVpIHp1bSBFaW5sZXNlbiIKKworIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzo5NzkKK21zZ2lkICJnaXQgZm9yLWVhY2gtcmVmIFtvcHRpb25zXSBbPHBhdHRlcm4+XSIKK21zZ3N0ciAiZ2l0IGZvci1lYWNoLXJlZiBbT3B0aW9uZW5dIFs8TXVzdGVyPl0iCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6OTk0Cittc2dpZCAicXVvdGUgcGxhY2Vob2xkZXJzIHN1aXRhYmx5IGZvciBzaGVsbHMiCittc2dzdHIgImZvcm1hdGllcnQgUGxhdHpoYWx0ZXIgYWxzIFNoZWxsLVN0cmluZyIKKworIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzo5OTYKK21zZ2lkICJxdW90ZSBwbGFjZWhvbGRlcnMgc3VpdGFibHkgZm9yIHBlcmwiCittc2dzdHIgImZvcm1hdGllcnQgUGxhdHpoYWx0ZXIgYWxzIFBlcmwtU3RyaW5nIgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjk5OAorbXNnaWQgInF1b3RlIHBsYWNlaG9sZGVycyBzdWl0YWJseSBmb3IgcHl0aG9uIgorbXNnc3RyICJmb3JtYXRpZXJ0IFBsYXR6aGFsdGVyIGFscyBQeXRob24tU3RyaW5nIgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjEwMDAKK21zZ2lkICJxdW90ZSBwbGFjZWhvbGRlcnMgc3VpdGFibHkgZm9yIHRjbCIKK21zZ3N0ciAiZm9ybWF0aWVydCBQbGF0emhhbHRlciBhbHMgVENMLVN0cmluZyIKKworIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzoxMDAzCittc2dpZCAic2hvdyBvbmx5IDxuPiBtYXRjaGVkIHJlZnMiCittc2dzdHIgInplaWd0IG51ciA8bj4gcGFzc2VuZGUgUmVmZXJlbnplbiIKKworIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzoxMDA0Cittc2dpZCAiZm9ybWF0IgorbXNnc3RyICJGb3JtYXQiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6MTAwNAorbXNnaWQgImZvcm1hdCB0byB1c2UgZm9yIHRoZSBvdXRwdXQiCittc2dzdHIgImbDvHIgZGllIEF1c2dhYmUgenUgdmVyd2VuZGVuZGVzIEZvcm1hdCIKKworIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzoxMDA1Cittc2dpZCAia2V5IgorbXNnc3RyICJTY2jDvHNzZWwiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6MTAwNgorbXNnaWQgImZpZWxkIG5hbWUgdG8gc29ydCBvbiIKK21zZ3N0ciAic29ydGllcmUgbmFjaCBkaWVzZW0gRmVsZCIKKworIzogYnVpbHRpbi9mc2NrLmM6NjA4Cittc2dpZCAiZ2l0IGZzY2sgW29wdGlvbnNdIFs8b2JqZWN0Pi4uLl0iCittc2dzdHIgImdpdCBmc2NrIFtPcHRpb25lbl0gWzxPYmpla3Q+Li4uXSIKKworIzogYnVpbHRpbi9mc2NrLmM6NjE0Cittc2dpZCAic2hvdyB1bnJlYWNoYWJsZSBvYmplY3RzIgorbXNnc3RyICJ6ZWlndCB1bmVycmVpY2hiYXJlIE9iamVrdGUiCisKKyM6IGJ1aWx0aW4vZnNjay5jOjYxNQorbXNnaWQgInNob3cgZGFuZ2xpbmcgb2JqZWN0cyIKK21zZ3N0ciAiemVpZ3QgdW5yZWZlcmVuemllcnRlIE9iamVrdGUiCisKKyM6IGJ1aWx0aW4vZnNjay5jOjYxNgorbXNnaWQgInJlcG9ydCB0YWdzIgorbXNnc3RyICJtZWxkZXQgTWFya2llcnVuZ2VuIgorCisjOiBidWlsdGluL2ZzY2suYzo2MTcKK21zZ2lkICJyZXBvcnQgcm9vdCBub2RlcyIKK21zZ3N0ciAibWVsZGV0IEhhdXB0d3VyemVsbiIKKworIzogYnVpbHRpbi9mc2NrLmM6NjE4Cittc2dpZCAibWFrZSBpbmRleCBvYmplY3RzIGhlYWQgbm9kZXMiCittc2dzdHIgImVyemV1Z3QgS29wZmtub3RlbiBkZXIgQmVyZWl0c3RlbGx1bmdzb2JqZWt0ZSIKKworIzogYnVpbHRpbi9mc2NrLmM6NjE5Cittc2dpZCAibWFrZSByZWZsb2dzIGhlYWQgbm9kZXMgKGRlZmF1bHQpIgorbXNnc3RyICJlcnpldWd0IEtvcGZrbm90ZW4gZGVzIFJlZmVyZW56cHJvdG9rb2xscyAoU3RhbmRhcmQpIgorCisjOiBidWlsdGluL2ZzY2suYzo2MjAKK21zZ2lkICJhbHNvIGNvbnNpZGVyIHBhY2tzIGFuZCBhbHRlcm5hdGUgb2JqZWN0cyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZzY2suYzo2MjEKK21zZ2lkICJlbmFibGUgbW9yZSBzdHJpY3QgY2hlY2tpbmciCittc2dzdHIgImFrdGl2aWVydCBnZW5hdWVyZSBQcsO8ZnVuZyIKKworIzogYnVpbHRpbi9mc2NrLmM6NjIzCittc2dpZCAid3JpdGUgZGFuZ2xpbmcgb2JqZWN0cyBpbiAuZ2l0L2xvc3QtZm91bmQiCittc2dzdHIgInNjaHJlaWJ0IHVucmVmZXJlbnppZXJ0ZSBPYmpla3RlIG5hY2ggLmdpdC9sb3N0LWZvdW5kIgorCisjOiBidWlsdGluL2ZzY2suYzo2MjQgYnVpbHRpbi9wcnVuZS5jOjEzNAorbXNnaWQgInNob3cgcHJvZ3Jlc3MiCittc2dzdHIgInplaWd0IEZvcnRzY2hyaXR0c2FuemVpZ2UiCisKKyM6IGJ1aWx0aW4vZ2MuYzoyMgorbXNnaWQgImdpdCBnYyBbb3B0aW9uc10iCittc2dzdHIgImdpdCBnYyBbT3B0aW9uZW5dIgogCiAjOiBidWlsdGluL2djLmM6NjMKICMsIGMtZm9ybWF0CkBAIC0yNzk4LDM5NCArNTA0NSw3MDUgQEAKIG1zZ2lkICJpbnNhbmVseSBsb25nIG9iamVjdCBkaXJlY3RvcnkgJS4qcyIKIG1zZ3N0ciAienUgbGFuZ2VzIE9iamVrdC1WZXJ6ZWljaG5pcyAlLipzIgogCi0jOiBidWlsdGluL2djLmM6MjIxCi0jLCBjLWZvcm1hdAotbXNnaWQgIkF1dG8gcGFja2luZyB0aGUgcmVwb3NpdG9yeSBmb3Igb3B0aW11bSBwZXJmb3JtYW5jZS5cbiIKLW1zZ3N0ciAiIgotIkRpZSBEYXRlbmJhbmsgZGVzIFByb2pla3RhcmNoaXZzIHdpcmQgZsO8ciBlaW5lIG9wdGltYWxlIFBlcmZvcm1hbmNlICIKLSJrb21wcmltaWVydC5cbiIKKyM6IGJ1aWx0aW4vZ2MuYzoxNzkKK21zZ2lkICJwcnVuZSB1bnJlZmVyZW5jZWQgb2JqZWN0cyIKK21zZ3N0ciAiZW50ZmVybnQgdW5yZWZlcmVuemllcnRlIE9iamVrdGUiCiAKLSM6IGJ1aWx0aW4vZ2MuYzoyMjQKKyM6IGJ1aWx0aW4vZ2MuYzoxODEKK21zZ2lkICJiZSBtb3JlIHRob3JvdWdoIChpbmNyZWFzZWQgcnVudGltZSkiCittc2dzdHIgIm1laHIgR3LDvG5kbGljaGtlaXQgKGVyaMO2aHQgTGF1ZnplaXQpIgorCisjOiBidWlsdGluL2djLmM6MTgyCittc2dpZCAiZW5hYmxlIGF1dG8tZ2MgbW9kZSIKK21zZ3N0ciAiYWt0aXZpZXJ0IFwiYXV0by1nY1wiIE1vZHVzIgorCisjOiBidWlsdGluL2djLmM6MjIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJBdXRvIHBhY2tpbmcgdGhlIHJlcG9zaXRvcnkgZm9yIG9wdGltdW0gcGVyZm9ybWFuY2UuIFlvdSBtYXkgYWxzb1xuIgogInJ1biBcImdpdCBnY1wiIG1hbnVhbGx5LiBTZWUgXCJnaXQgaGVscCBnY1wiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIgogbXNnc3RyICIiCiAiRGllIERhdGVuYmFuayBkZXMgUHJvamVrdGFyY2hpdnMgd2lyZCBmw7xyIGVpbmUgb3B0aW1hbGUgUGVyZm9ybWFuY2VcbiIKLSJrb21wcmltaWVydC4gRHUga2FubnN0IGF1Y2ggXCJnaXQgZ2NcIiBtYW51ZWxsIGF1c2bDvGhyZW4uXG4iCisia29tcHJpbWllcnQuIFNpZSBrw7ZubmVuIGF1Y2ggXCJnaXQgZ2NcIiBtYW51ZWxsIGF1c2bDvGhyZW4uXG4iCiAiU2llaGUgXCJnaXQgaGVscCBnY1wiIGbDvHIgd2VpdGVyZSBJbmZvcm1hdGlvbmVuLlxuIgogCi0jOiBidWlsdGluL2djLmM6MjUxCisjOiBidWlsdGluL2djLmM6MjQ5CiBtc2dpZCAiIgogIlRoZXJlIGFyZSB0b28gbWFueSB1bnJlYWNoYWJsZSBsb29zZSBvYmplY3RzOyBydW4gJ2dpdCBwcnVuZScgdG8gcmVtb3ZlIHRoZW0uIgogbXNnc3RyICIiCi0iRXMgZ2lidCB6dSB2aWVsZSB1bmVycmVpY2hiYXJlIGxvc2UgT2JqZWt0ZTsgZsO8aHJlICdnaXQgcHJ1bmUnIGF1cywgdW0gZGllc2UgIgotInp1IGVudGZlcm5lbi4iCisiRXMgZ2lidCB6dSB2aWVsZSB1bmVycmVpY2hiYXJlIGxvc2UgT2JqZWt0ZTsgZsO8aHJlbiBTaWUgJ2dpdCBwcnVuZScgYXVzLCB1bSAiCisiZGllc2UgenUgbMO2c2NoZW4uIgogCi0jOiBidWlsdGluL2dyZXAuYzoyMTYKKyM6IGJ1aWx0aW4vZ3JlcC5jOjIyCittc2dpZCAiZ2l0IGdyZXAgW29wdGlvbnNdIFstZV0gPHBhdHRlcm4+IFs8cmV2Pi4uLl0gW1stLV0gPHBhdGg+Li4uXSIKK21zZ3N0ciAiZ2l0IGdyZXAgW09wdGlvbmVuXSBbLWVdIDxNdXN0ZXI+IFs8UmV2aXNpb24+Li4uXSBbWy0tXSA8UGZhZD4uLi5dIgorCisjOiBidWlsdGluL2dyZXAuYzoyMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ3JlcDogZmFpbGVkIHRvIGNyZWF0ZSB0aHJlYWQ6ICVzIgogbXNnc3RyICJncmVwOiBGZWhsZXIgYmVpbSBFcnpldWdlbiBlaW5lcyBUaHJlYWQ6ICVzIgogCi0jOiBidWlsdGluL2dyZXAuYzo0MDIKKyM6IGJ1aWx0aW4vZ3JlcC5jOjM2NQogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gY2hkaXI6ICVzIgogbXNnc3RyICJGZWhsZXIgYmVpbSBWZXJ6ZWljaG5pc3dlY2hzZWw6ICVzIgogCi0jOiBidWlsdGluL2dyZXAuYzo0NzggYnVpbHRpbi9ncmVwLmM6NTEyCisjOiBidWlsdGluL2dyZXAuYzo0NDMgYnVpbHRpbi9ncmVwLmM6NDc4CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byByZWFkIHRyZWUgKCVzKSIKIG1zZ3N0ciAia29ubnRlIFp3ZWlnICglcykgbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjUyNgorIzogYnVpbHRpbi9ncmVwLmM6NDkzCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBncmVwIGZyb20gb2JqZWN0IG9mIHR5cGUgJXMiCiBtc2dzdHIgImthbm4gXCJncmVwXCIgbmljaHQgbWl0IE9iamVrdGVuIGRlcyBUeXBzICVzIGR1cmNoZsO8aHJlbiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NTg0CisjOiBidWlsdGluL2dyZXAuYzo1NTEKICMsIGMtZm9ybWF0CiBtc2dpZCAic3dpdGNoIGAlYycgZXhwZWN0cyBhIG51bWVyaWNhbCB2YWx1ZSIKIG1zZ3N0ciAiU2NoYWx0ZXIgJyVjJyBlcndhcnRldCBlaW5lbiBudW1lcmlzY2hlbiBXZXJ0IgogCi0jOiBidWlsdGluL2dyZXAuYzo2MDEKKyM6IGJ1aWx0aW4vZ3JlcC5jOjU2OAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiAnJXMnIgogbXNnc3RyICJrYW5uICclcycgbmljaHQgw7ZmZm5lbiIKIAotIzogYnVpbHRpbi9ncmVwLmM6ODg1CisjOiBidWlsdGluL2dyZXAuYzo2NDMKK21zZ2lkICJzZWFyY2ggaW4gaW5kZXggaW5zdGVhZCBvZiBpbiB0aGUgd29yayB0cmVlIgorbXNnc3RyICJzdWNodCBpbiBkZXIgQmVyZWl0c3RlbGx1bmcgYW5zdGF0dCBpbSBBcmJlaXRzYmF1bSIKKworIzogYnVpbHRpbi9ncmVwLmM6NjQ1Cittc2dpZCAiZmluZCBpbiBjb250ZW50cyBub3QgbWFuYWdlZCBieSBnaXQiCittc2dzdHIgImZpbmRldCBhdWNoIGluIEluaGFsdGVuLCBkaWUgbmljaHQgdm9uIEdpdCB2ZXJ3YWx0ZXQgd2VyZGVuIgorCisjOiBidWlsdGluL2dyZXAuYzo2NDcKK21zZ2lkICJzZWFyY2ggaW4gYm90aCB0cmFja2VkIGFuZCB1bnRyYWNrZWQgZmlsZXMiCittc2dzdHIgInN1Y2h0IGluIGJlb2JhY2h0ZXRlbiB1bmQgdW5iZW9iYWNodGV0ZW4gRGF0ZWllbiIKKworIzogYnVpbHRpbi9ncmVwLmM6NjQ5Cittc2dpZCAic2VhcmNoIGFsc28gaW4gaWdub3JlZCBmaWxlcyIKK21zZ3N0ciAic3VjaHQgYXVjaCBpbiBpZ25vcmllcnRlbiBEYXRlaWVuIgorCisjOiBidWlsdGluL2dyZXAuYzo2NTIKK21zZ2lkICJzaG93IG5vbi1tYXRjaGluZyBsaW5lcyIKK21zZ3N0ciAiemVpZ3QgWmVpbGVuIG9obmUgw5xiZXJlaW5zdGltbXVuZ2VuIgorCisjOiBidWlsdGluL2dyZXAuYzo2NTQKK21zZ2lkICJjYXNlIGluc2Vuc2l0aXZlIG1hdGNoaW5nIgorbXNnc3RyICJmaW5kZXQgw5xiZXJlaW5zdGltbXVuZ2VuIHVuYWJow6RuZ2lnIHZvbiBHcm/Dny0gdW5kIEtsZWluc2NocmVpYnVuZyIKKworIzogYnVpbHRpbi9ncmVwLmM6NjU2Cittc2dpZCAibWF0Y2ggcGF0dGVybnMgb25seSBhdCB3b3JkIGJvdW5kYXJpZXMiCittc2dzdHIgInN1Y2h0IG51ciBnYW56ZSBXw7ZydGVyIgorCisjOiBidWlsdGluL2dyZXAuYzo2NTgKK21zZ2lkICJwcm9jZXNzIGJpbmFyeSBmaWxlcyBhcyB0ZXh0IgorbXNnc3RyICJ2ZXJhcmJlaXRldCBiaW7DpHJlIERhdGVpZW4gYWxzIFRleHQiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY2MAorbXNnaWQgImRvbid0IG1hdGNoIHBhdHRlcm5zIGluIGJpbmFyeSBmaWxlcyIKK21zZ3N0ciAiZmluZGV0IGtlaW5lIE11c3RlciBpbiBCaW7DpHJkYXRlaWVuIgorCisjOiBidWlsdGluL2dyZXAuYzo2NjMKK21zZ2lkICJkZXNjZW5kIGF0IG1vc3QgPGRlcHRoPiBsZXZlbHMiCittc2dzdHIgImR1cmNobMOkdWZ0IGjDtmNoc3RlbnMgPFRpZWZlPiBFYmVuZW4iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY2NworbXNnaWQgInVzZSBleHRlbmRlZCBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb25zIgorbXNnc3RyICJ2ZXJ3ZW5kZXQgZXJ3ZWl0ZXJ0ZSByZWd1bMOkcmUgQXVzZHLDvGNrZSBhdXMgUE9TSVgiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY3MAorbXNnaWQgInVzZSBiYXNpYyBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb25zIChkZWZhdWx0KSIKK21zZ3N0ciAidmVyd2VuZGV0IGdydW5kbGVnZW5kZSByZWd1bMOkcmUgQXVzZHLDvGNrZSBhdXMgUE9TSVggKFN0YW5kYXJkKSIKKworIzogYnVpbHRpbi9ncmVwLmM6NjczCittc2dpZCAiaW50ZXJwcmV0IHBhdHRlcm5zIGFzIGZpeGVkIHN0cmluZ3MiCittc2dzdHIgImludGVycHJldGllcnQgTXVzdGVyIGFscyBmZXN0ZSBaZWljaGVua2V0dGVuIgorCisjOiBidWlsdGluL2dyZXAuYzo2NzYKK21zZ2lkICJ1c2UgUGVybC1jb21wYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCittc2dzdHIgInZlcndlbmRldCBQZXJsLWtvbXBhdGlibGUgcmVndWzDpHJlIEF1c2Ryw7xja2UiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY3OQorbXNnaWQgInNob3cgbGluZSBudW1iZXJzIgorbXNnc3RyICJ6ZWlndCBaZWlsZW5udW1tZXJuIgorCisjOiBidWlsdGluL2dyZXAuYzo2ODAKK21zZ2lkICJkb24ndCBzaG93IGZpbGVuYW1lcyIKK21zZ3N0ciAiemVpZ3Qga2VpbmUgRGF0ZWluYW1lbiIKKworIzogYnVpbHRpbi9ncmVwLmM6NjgxCittc2dpZCAic2hvdyBmaWxlbmFtZXMiCittc2dzdHIgInplaWd0IERhdGVpbmFtZW4iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4MworbXNnaWQgInNob3cgZmlsZW5hbWVzIHJlbGF0aXZlIHRvIHRvcCBkaXJlY3RvcnkiCittc2dzdHIgInplaWd0IERhdGVpbmFtZW4gcmVsYXRpdiB6dW0gUHJvamVrdHZlcnplaWNobmlzIgorCisjOiBidWlsdGluL2dyZXAuYzo2ODUKK21zZ2lkICJzaG93IG9ubHkgZmlsZW5hbWVzIGluc3RlYWQgb2YgbWF0Y2hpbmcgbGluZXMiCittc2dzdHIgInplaWd0IG51ciBEYXRlaW5hbWVuIGFuc3RhdHQgw7xiZXJlaW5zdGltbWVuZGUgWmVpbGVuIgorCisjOiBidWlsdGluL2dyZXAuYzo2ODcKK21zZ2lkICJzeW5vbnltIGZvciAtLWZpbGVzLXdpdGgtbWF0Y2hlcyIKK21zZ3N0ciAiU3lub255bSBmw7xyIC0tZmlsZXMtd2l0aC1tYXRjaGVzIgorCisjOiBidWlsdGluL2dyZXAuYzo2OTAKK21zZ2lkICJzaG93IG9ubHkgdGhlIG5hbWVzIG9mIGZpbGVzIHdpdGhvdXQgbWF0Y2giCittc2dzdHIgInplaWd0IG51ciBkaWUgRGF0ZWluYW1lbiBvaG5lIMOcYmVyZWluc3RpbW11bmdlbiIKKworIzogYnVpbHRpbi9ncmVwLmM6NjkyCittc2dpZCAicHJpbnQgTlVMIGFmdGVyIGZpbGVuYW1lcyIKK21zZ3N0ciAiZ2lidCBOVUwtWmVpY2hlbiBuYWNoIERhdGVpbmFtZW4gYXVzIgorCisjOiBidWlsdGluL2dyZXAuYzo2OTQKK21zZ2lkICJzaG93IHRoZSBudW1iZXIgb2YgbWF0Y2hlcyBpbnN0ZWFkIG9mIG1hdGNoaW5nIGxpbmVzIgorbXNnc3RyICJ6ZWlndCwgYW5zdGF0dCBkZXIgWmVpbGVuLCBkaWUgQW56YWhsIGRlciDDvGJlcmVpbnN0aW1tZW5kZW4gWmVpbGVuIgorCisjOiBidWlsdGluL2dyZXAuYzo2OTUKK21zZ2lkICJoaWdobGlnaHQgbWF0Y2hlcyIKK21zZ3N0ciAiaGVidCDDnGJlcmVpbnN0aW1tdW5nZW4gaGVydm9yIgorCisjOiBidWlsdGluL2dyZXAuYzo2OTcKK21zZ2lkICJwcmludCBlbXB0eSBsaW5lIGJldHdlZW4gbWF0Y2hlcyBmcm9tIGRpZmZlcmVudCBmaWxlcyIKK21zZ3N0ciAiIgorImdpYnQgZWluZSBMZWVyemVpbGUgendpc2NoZW4gw5xiZXJlaW5zdGltbXVuZ2VuIGluIHZlcnNjaGllZGVuZW4gRGF0ZWllbiBhdXMiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5OQorbXNnaWQgInNob3cgZmlsZW5hbWUgb25seSBvbmNlIGFib3ZlIG1hdGNoZXMgZnJvbSBzYW1lIGZpbGUiCittc2dzdHIgIiIKKyJ6ZWlndCBkZW4gRGF0ZWluYW1lbiBudXIgZWlubWFsIG9iZXJoYWxiIGRlciDDnGJlcmVpbnN0aW1tdW5nZW4gYXVzIGRpZXNlciAiCisiRGF0ZWkgYW4iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcwMgorbXNnaWQgInNob3cgPG4+IGNvbnRleHQgbGluZXMgYmVmb3JlIGFuZCBhZnRlciBtYXRjaGVzIgorbXNnc3RyICJ6ZWlndCA8bj4gWmVpbGVuIHZvciB1bmQgbmFjaCBkZW4gw5xiZXJlaW5zdGltbXVuZ2VuIGFuIgorCisjOiBidWlsdGluL2dyZXAuYzo3MDUKK21zZ2lkICJzaG93IDxuPiBjb250ZXh0IGxpbmVzIGJlZm9yZSBtYXRjaGVzIgorbXNnc3RyICJ6ZWlndCA8bj4gWmVpbGVuIHZvciBkZW4gw5xiZXJlaW5zdGltbXVuZ2VuIGFuIgorCisjOiBidWlsdGluL2dyZXAuYzo3MDcKK21zZ2lkICJzaG93IDxuPiBjb250ZXh0IGxpbmVzIGFmdGVyIG1hdGNoZXMiCittc2dzdHIgInplaWd0IDxuPiBaZWlsZW4gbmFjaCBkZW4gw5xiZXJlaW5zdGltbXVuZ2VuIGFuIgorCisjOiBidWlsdGluL2dyZXAuYzo3MDgKK21zZ2lkICJzaG9ydGN1dCBmb3IgLUMgTlVNIgorbXNnc3RyICJLdXJ6Zm9ybSBmw7xyIC1DIE5VTSIKKworIzogYnVpbHRpbi9ncmVwLmM6NzExCittc2dpZCAic2hvdyBhIGxpbmUgd2l0aCB0aGUgZnVuY3Rpb24gbmFtZSBiZWZvcmUgbWF0Y2hlcyIKK21zZ3N0ciAiemVpZ3QgZWluZSBaZWlsZSBtaXQgZGVtIEZ1bmt0aW9uc25hbWVuIHZvciDDnGJlcmVpbnN0aW1tdW5nZW4gYW4iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcxMworbXNnaWQgInNob3cgdGhlIHN1cnJvdW5kaW5nIGZ1bmN0aW9uIgorbXNnc3RyICJ6ZWlndCBkaWUgdW1nZWJlbmRlIEZ1bmt0aW9uIGFuIgorCisjOiBidWlsdGluL2dyZXAuYzo3MTYKK21zZ2lkICJyZWFkIHBhdHRlcm5zIGZyb20gZmlsZSIKK21zZ3N0ciAibGllc3QgTXVzdGVyIHZvbiBlaW5lciBEYXRlaSIKKworIzogYnVpbHRpbi9ncmVwLmM6NzE4Cittc2dpZCAibWF0Y2ggPHBhdHRlcm4+IgorbXNnc3RyICJmaW5kZXQgPE11c3Rlcj4iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcyMAorbXNnaWQgImNvbWJpbmUgcGF0dGVybnMgc3BlY2lmaWVkIHdpdGggLWUiCittc2dzdHIgImtvbWJpbmllcnQgTXVzdGVyLCBkaWUgbWl0IC1lIGFuZ2VnZWJlbiB3dXJkZW4iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjczMgorbXNnaWQgImluZGljYXRlIGhpdCB3aXRoIGV4aXQgc3RhdHVzIHdpdGhvdXQgb3V0cHV0IgorbXNnc3RyICJ6ZWlndCDDnGJlcmVpbnN0aW1tdW5nZW4gbnVyIGR1cmNoIEJlZW5kaWd1bmdzc3RhdHVzIGFuIgorCisjOiBidWlsdGluL2dyZXAuYzo3MzQKK21zZ2lkICJzaG93IG9ubHkgbWF0Y2hlcyBmcm9tIGZpbGVzIHRoYXQgbWF0Y2ggYWxsIHBhdHRlcm5zIgorbXNnc3RyICJ6ZWlndCBudXIgw5xiZXJlaW5zdGltbXVuZ2VuIHZvbiBEYXRlaWVuLCBkaWUgYWxsZW4gTXVzdGVybiBlbnRzcHJlY2hlbiIKKworIzogYnVpbHRpbi9ncmVwLmM6NzM2Cittc2dpZCAic2hvdyBwYXJzZSB0cmVlIGZvciBncmVwIGV4cHJlc3Npb24iCittc2dzdHIgInplaWd0IGdlcGFyc3RlbiBCYXVtIGbDvHIgXCJncmVwXCItQXVzZHJ1Y2siCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0MAorbXNnaWQgInBhZ2VyIgorbXNnc3RyICJBbnplaWdlcHJvZ3JhbW0iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0MAorbXNnaWQgInNob3cgbWF0Y2hpbmcgZmlsZXMgaW4gdGhlIHBhZ2VyIgorbXNnc3RyICJ6ZWlndCBEYXRlaWVuIG1pdCDDnGJlcmVpbnN0aW1tdW5nZW4gaW0gQW56ZWlnZXByb2dyYW1tIgorCisjOiBidWlsdGluL2dyZXAuYzo3NDMKK21zZ2lkICJhbGxvdyBjYWxsaW5nIG9mIGdyZXAoMSkgKGlnbm9yZWQgYnkgdGhpcyBidWlsZCkiCittc2dzdHIgImVybGF1YnQgZGVuIEF1ZnJ1ZiB2b24gZ3JlcCgxKSAodm9uIGRpZXNlciBQcm9ncmFtbXZlcnNpb24gaWdub3JpZXJ0KSIKKworIzogYnVpbHRpbi9ncmVwLmM6NzQ0IGJ1aWx0aW4vc2hvdy1yZWYuYzoxODQKK21zZ2lkICJzaG93IHVzYWdlIgorbXNnc3RyICJ6ZWlndCBWZXJ3ZW5kdW5nIgorCisjOiBidWlsdGluL2dyZXAuYzo4MTEKIG1zZ2lkICJubyBwYXR0ZXJuIGdpdmVuLiIKIG1zZ3N0ciAia2VpbmUgTXVzdGVyIGFuZ2VnZWJlbiIKIAotIzogYnVpbHRpbi9ncmVwLmM6ODk5Ci0jLCBjLWZvcm1hdAotbXNnaWQgImJhZCBvYmplY3QgJXMiCi1tc2dzdHIgInVuZ8O8bHRpZ2VzIE9iamVrdCAlcyIKLQotIzogYnVpbHRpbi9ncmVwLmM6OTQwCisjOiBidWlsdGluL2dyZXAuYzo4NjYKIG1zZ2lkICItLW9wZW4tZmlsZXMtaW4tcGFnZXIgb25seSB3b3JrcyBvbiB0aGUgd29ya3RyZWUiCi1tc2dzdHIgIi0tb3Blbi1maWxlcy1pbi1wYWdlciBhcmJlaXRldCBudXIgaW5uZXJoYWxiIGRlcyBBcmJlaXRzYmF1bXMiCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uIC0tb3Blbi1maWxlcy1pbi1wYWdlciBrYW5uIG51ciBpbm5lcmhhbGIgZGVzIEFyYmVpdHNiYXVtcyAiCisidmVyd2VuZGV0IHdlcmRlbi4iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjk2MworIzogYnVpbHRpbi9ncmVwLmM6ODg5CiBtc2dpZCAiLS1jYWNoZWQgb3IgLS11bnRyYWNrZWQgY2Fubm90IGJlIHVzZWQgd2l0aCAtLW5vLWluZGV4LiIKLW1zZ3N0ciAiLS1jYWNoZWQgb2RlciAtLXVudHJhY2tlZCBrYW5uIG5pY2h0IG1pdCAtLW5vLWluZGV4IGJlbnV0enQgd2VyZGVuIgorbXNnc3RyICIiCisiRGllIE9wdGlvbmVuIC0tY2FjaGVkIHVuZCAtLXVudHJhY2tlZCBrw7ZubmVuIG5pY2h0IG1pdCAtLW5vLWluZGV4IHZlcndlbmRldCAiCisid2VyZGVuLiIKIAotIzogYnVpbHRpbi9ncmVwLmM6OTY4CisjOiBidWlsdGluL2dyZXAuYzo4OTQKIG1zZ2lkICItLW5vLWluZGV4IG9yIC0tdW50cmFja2VkIGNhbm5vdCBiZSB1c2VkIHdpdGggcmV2cy4iCi1tc2dzdHIgIi0tbm8taW5kZXggb2RlciAtLXVudHJhY2tlZCBrYW5uIG5pY2h0IG1pdCBWZXJzaW9uZW4gYmVudXR6dCB3ZXJkZW4iCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uZW4gLS1uby1pbmRleCB1bmQgLS11bnRyYWNrZWQga8O2bm5lbiBuaWNodCBtaXQgVmVyc2lvbmVuIHZlcndlbmRldCAiCisid2VyZGVuLiIKIAotIzogYnVpbHRpbi9ncmVwLmM6OTcxCisjOiBidWlsdGluL2dyZXAuYzo4OTcKIG1zZ2lkICItLVtuby1dZXhjbHVkZS1zdGFuZGFyZCBjYW5ub3QgYmUgdXNlZCBmb3IgdHJhY2tlZCBjb250ZW50cy4iCiBtc2dzdHIgIiIKLSItLVtuby1dZXhsdWRlLXN0YW5kYXJkIGthbm4gbmljaHQgbWl0IGJlb2JhY2h0ZXRlbiBJbmhhbHRlbiBiZW51dHp0IHdlcmRlbiIKKyJEaWUgT3B0aW9uIC0tW25vLV1leGNsdWRlLXN0YW5kYXJkIGthbm4gbmljaHQgbWl0IGJlb2JhY2h0ZXRlbiBJbmhhbHRlbiAiCisidmVyd2VuZGV0IHdlcmRlbi4iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjk3OQorIzogYnVpbHRpbi9ncmVwLmM6OTA1CiBtc2dpZCAiYm90aCAtLWNhY2hlZCBhbmQgdHJlZXMgYXJlIGdpdmVuLiIKLW1zZ3N0ciAic293b2hsIC0tY2FjaGVkIGFscyBhdWNoIFp3ZWlnZSBnZWdlYmVuIgorbXNnc3RyICJEaWUgT3B0aW9uIC0tY2FjaGVkIGthbm4gbmljaHQgbWl0IFp3ZWlnZW4gdmVyd2VuZGV0IHdlcmRlbi4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjU5CisjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NjAKK21zZ2lkICIiCisiZ2l0IGhhc2gtb2JqZWN0IFstdCA8dHlwZT5dIFstd10gWy0tcGF0aD08ZmlsZT58LS1uby1maWx0ZXJzXSBbLS1zdGRpbl0gWy0tXSAiCisiPGZpbGU+Li4uIgorbXNnc3RyICIiCisiZ2l0IGhhc2gtb2JqZWN0IFstdCA8QXJ0Pl0gWy13XSBbLS1wYXRoPTxEYXRlaT58LS1uby1maWx0ZXJzXSBbLS1zdGRpbl0gWy0tXSAiCisiPERhdGVpPi4uLiIKKworIzogYnVpbHRpbi9oYXNoLW9iamVjdC5jOjYxCittc2dpZCAiZ2l0IGhhc2gtb2JqZWN0ICAtLXN0ZGluLXBhdGhzIDwgPGxpc3Qtb2YtcGF0aHM+IgorbXNnc3RyICJnaXQgaGFzaC1vYmplY3QgIC0tc3RkaW4tcGF0aHMgPCA8TGlzdGUtdm9uLVBmYWRlbj4iCisKKyM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3MgorbXNnaWQgInR5cGUiCittc2dzdHIgIkFydCIKKworIzogYnVpbHRpbi9oYXNoLW9iamVjdC5jOjcyCittc2dpZCAib2JqZWN0IHR5cGUiCittc2dzdHIgIkFydCBkZXMgT2JqZWt0ZXMiCisKKyM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3MworbXNnaWQgIndyaXRlIHRoZSBvYmplY3QgaW50byB0aGUgb2JqZWN0IGRhdGFiYXNlIgorbXNnc3RyICJzY2hyZWlidCBkYXMgT2JqZWt0IGluIGRpZSBPYmpla3RkYXRlbmJhbmsiCisKKyM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3NAorbXNnaWQgInJlYWQgdGhlIG9iamVjdCBmcm9tIHN0ZGluIgorbXNnc3RyICJsaWVzdCBkYXMgT2JqZWt0IHZvbiBkZXIgU3RhbmRhcmQtRWluZ2FiZSIKKworIzogYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc2Cittc2dpZCAic3RvcmUgZmlsZSBhcyBpcyB3aXRob3V0IGZpbHRlcnMiCittc2dzdHIgInNwZWljaGVydCBEYXRlaSB3aWUgc2llIGlzdCwgb2huZSBGaWx0ZXIiCisKKyM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3NworbXNnaWQgInByb2Nlc3MgZmlsZSBhcyBpdCB3ZXJlIGZyb20gdGhpcyBwYXRoIgorbXNnc3RyICJ2ZXJhcmJlaXRldCBEYXRlaSwgYWxzIG9iIHNpZSB2b24gZGllc2VtIFBmYWQgd8OkcmUiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQzCittc2dpZCAicHJpbnQgYWxsIGF2YWlsYWJsZSBjb21tYW5kcyIKK21zZ3N0ciAiQW56ZWlnZSBhbGxlciB2b3JoYW5kZW5lbiBLb21tYW5kb3MiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQ0Cittc2dpZCAicHJpbnQgbGlzdCBvZiB1c2VmdWwgZ3VpZGVzIgorbXNnc3RyICJ6ZWlndCBMaXN0ZSB2b24gYWxsZ2VtZWluIHZlcndlbmRldGVuIEFubGVpdHVuZ2VuIgorCisjOiBidWlsdGluL2hlbHAuYzo0NQorbXNnaWQgInNob3cgbWFuIHBhZ2UiCittc2dzdHIgInplaWd0IEhhbmRidWNoIgorCisjOiBidWlsdGluL2hlbHAuYzo0NgorbXNnaWQgInNob3cgbWFudWFsIGluIHdlYiBicm93c2VyIgorbXNnc3RyICJ6ZWlndCBIYW5kYnVjaCBpbiBlaW5lbSBXZWJicm93c2VyIgorCisjOiBidWlsdGluL2hlbHAuYzo0OAorbXNnaWQgInNob3cgaW5mbyBwYWdlIgorbXNnc3RyICJ6ZWlndCBJbmZvLVNlaXRlIgorCisjOiBidWlsdGluL2hlbHAuYzo1NAorbXNnaWQgImdpdCBoZWxwIFstLWFsbF0gWy0tZ3VpZGVzXSBbLS1tYW58LS13ZWJ8LS1pbmZvXSBbY29tbWFuZF0iCittc2dzdHIgImdpdCBoZWxwIFstLWFsbF0gWy0tZ3VpZGVzXSBbLS1tYW58LS13ZWJ8LS1pbmZvXSBbS29tbWFuZG9dIgorCisjOiBidWlsdGluL2hlbHAuYzo2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlY29nbml6ZWQgaGVscCBmb3JtYXQgJyVzJyIKIG1zZ3N0ciAibmljaHQgZXJrYW5udGVzIEhpbGZlZm9ybWF0OiAlcyIKIAotIzogYnVpbHRpbi9oZWxwLmM6ODcKKyM6IGJ1aWx0aW4vaGVscC5jOjk0CiBtc2dpZCAiRmFpbGVkIHRvIHN0YXJ0IGVtYWNzY2xpZW50LiIKIG1zZ3N0ciAiS29ubnRlIGVtYWNzY2xpZW50IG5pY2h0IHN0YXJ0ZW4uIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMDAKKyM6IGJ1aWx0aW4vaGVscC5jOjEwNwogbXNnaWQgIkZhaWxlZCB0byBwYXJzZSBlbWFjc2NsaWVudCB2ZXJzaW9uLiIKIG1zZ3N0ciAiS29ubnRlIFZlcnNpb24gZGVzIGVtYWNzY2xpZW50IG5pY2h0IHBhcnNlbi4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjEwOAorIzogYnVpbHRpbi9oZWxwLmM6MTE1CiAjLCBjLWZvcm1hdAogbXNnaWQgImVtYWNzY2xpZW50IHZlcnNpb24gJyVkJyB0b28gb2xkICg8IDIyKS4iCiBtc2dzdHIgIlZlcnNpb24gZGVzIGVtYWNzY2xpZW50ICclZCcgaXN0IHp1IGFsdCAoPCAyMikuIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMjYgYnVpbHRpbi9oZWxwLmM6MTU0IGJ1aWx0aW4vaGVscC5jOjE2MyBidWlsdGluL2hlbHAuYzoxNzEKKyM6IGJ1aWx0aW4vaGVscC5jOjEzMyBidWlsdGluL2hlbHAuYzoxNjEgYnVpbHRpbi9oZWxwLmM6MTcwIGJ1aWx0aW4vaGVscC5jOjE3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gZXhlYyAnJXMnOiAlcyIKIG1zZ3N0ciAiRmVobGVyIGJlaW0gQXVzZsO8aHJlbiB2b24gJyVzJzogJXMiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjIxMQorIzogYnVpbHRpbi9oZWxwLmM6MjE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnOiBwYXRoIGZvciB1bnN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgogIlBsZWFzZSBjb25zaWRlciB1c2luZyAnbWFuLjx0b29sPi5jbWQnIGluc3RlYWQuIgogbXNnc3RyICIiCiAiJyVzJzogUGZhZCBmw7xyIG5pY2h0IHVudGVyc3TDvHR6dGVuIEhhbmRidWNoYmV0cmFjaHRlci5cbiIKLSJEdSBrw7ZubnRlc3Qgc3RhdHRkZXNzZW4gJ21hbi48V2Vya3pldWc+LmNtZCcgYmVudXR6ZW4uIgorIlNpZSBrw7ZubnRlbiBzdGF0dGRlc3NlbiAnbWFuLjxXZXJremV1Zz4uY21kJyBiZW51dHplbi4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjIyMworIzogYnVpbHRpbi9oZWxwLmM6MjMwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnOiBjbWQgZm9yIHN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgogIlBsZWFzZSBjb25zaWRlciB1c2luZyAnbWFuLjx0b29sPi5wYXRoJyBpbnN0ZWFkLiIKIG1zZ3N0ciAiIgogIiclcyc6IEtvbW1hbmRvIGbDvHIgdW50ZXJzdMO8dHp0ZW4gSGFuZGJ1Y2hiZXRyYWNodGVyLlxuIgotIkR1IGvDtm5udGVzdCBzdGF0dGRlc3NlbiAnbWFuLjxXZXJremV1Zz4ucGF0aCcgYmVudXR6ZW4uIgorIlNpZSBrw7ZubnRlbiBzdGF0dGRlc3NlbiAnbWFuLjxXZXJremV1Zz4ucGF0aCcgYmVudXR6ZW4uIgogCi0jOiBidWlsdGluL2hlbHAuYzoyODcKLW1zZ2lkICJUaGUgbW9zdCBjb21tb25seSB1c2VkIGdpdCBjb21tYW5kcyBhcmU6IgotbXNnc3RyICJEaWUgYWxsZ2VtZWluIHZlcndlbmRldGVuIEdpdC1Lb21tYW5kb3Mgc2luZDoiCi0KLSM6IGJ1aWx0aW4vaGVscC5jOjM1NQorIzogYnVpbHRpbi9oZWxwLmM6MzUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6IHVua25vd24gbWFuIHZpZXdlci4iCiBtc2dzdHIgIiclcyc6IHVuYmVrYW5udGVyIEhhbmRidWNoLUJldHJhY2h0ZXIuIgogCi0jOiBidWlsdGluL2hlbHAuYzozNzIKKyM6IGJ1aWx0aW4vaGVscC5jOjM2OAogbXNnaWQgIm5vIG1hbiB2aWV3ZXIgaGFuZGxlZCB0aGUgcmVxdWVzdCIKIG1zZ3N0ciAia2VpbiBIYW5kYnVjaC1CZXRyYWNodGVyIGtvbm50ZSBtaXQgZGllc2VyIEFuZnJhZ2UgdW1nZWhlbiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MzgwCisjOiBidWlsdGluL2hlbHAuYzozNzYKIG1zZ2lkICJubyBpbmZvIHZpZXdlciBoYW5kbGVkIHRoZSByZXF1ZXN0IgogbXNnc3RyICJrZWluIEluZm9ybWF0aW9ucy1CZXRyYWNodGVyIGtvbm50ZSBtaXQgZGllc2VyIEFuZnJhZ2UgdW1nZWhlbiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MzkxCi0jLCBjLWZvcm1hdAotbXNnaWQgIiclcyc6IG5vdCBhIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5LiIKLW1zZ3N0ciAiJyVzJyBpc3Qga2VpbiBEb2t1bWVudGF0aW9uc3ZlcnplaWNobmlzIgorIzogYnVpbHRpbi9oZWxwLmM6NDIyCittc2dpZCAiRGVmaW5pbmcgYXR0cmlidXRlcyBwZXIgcGF0aCIKK21zZ3N0ciAiRGVmaW5pdGlvbiB2b24gQXR0cmlidXRlbiBwcm8gUGZhZCIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDMyIGJ1aWx0aW4vaGVscC5jOjQzOQorIzogYnVpbHRpbi9oZWxwLmM6NDIzCittc2dpZCAiQSBHaXQgZ2xvc3NhcnkiCittc2dzdHIgIkVpbiBHaXQtR2xvc3NhciIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI0Cittc2dpZCAiU3BlY2lmaWVzIGludGVudGlvbmFsbHkgdW50cmFja2VkIGZpbGVzIHRvIGlnbm9yZSIKK21zZ3N0ciAiU3BlemlmaWthdGlvbiB2b24gYmV3dXNzdCBpZ25vcmllcnRlbiwgdW5iZW9iYWNodGV0ZW4gRGF0ZWllbiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI1Cittc2dpZCAiRGVmaW5pbmcgc3VibW9kdWxlIHByb3BlcnRpZXMiCittc2dzdHIgIkRlZmluaXRpb24gdm9uIFVudGVycHJvamVrdC1FaWdlbnNjaGFmdGVuIgorCisjOiBidWlsdGluL2hlbHAuYzo0MjYKK21zZ2lkICJTcGVjaWZ5aW5nIHJldmlzaW9ucyBhbmQgcmFuZ2VzIGZvciBHaXQiCittc2dzdHIgIlNwZXppZmlrYXRpb24gdm9uIFJldmlzaW9uZW4gdW5kIEJlcmVpY2hlbiBmw7xyIEdpdCIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI3Cittc2dpZCAiQSB0dXRvcmlhbCBpbnRyb2R1Y3Rpb24gdG8gR2l0IChmb3IgdmVyc2lvbiAxLjUuMSBvciBuZXdlcikiCittc2dzdHIgIkVpbmUgZWluZsO8aHJlbmRlIEFubGVpdHVuZyB6dSBHaXQgKGbDvHIgVmVyc2lvbiAxLjUuMSBvZGVyIG5ldWVyKSIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI4Cittc2dpZCAiQW4gb3ZlcnZpZXcgb2YgcmVjb21tZW5kZWQgd29ya2Zsb3dzIHdpdGggR2l0IgorbXNnc3RyICJFaW5lIMOcYmVyc2ljaHQgw7xiZXIgZW1wZm9obGVuZSBBcmJlaXRzYWJsw6R1ZmUgbWl0IEdpdCIKKworIzogYnVpbHRpbi9oZWxwLmM6NDQwCittc2dpZCAiVGhlIGNvbW1vbiBHaXQgZ3VpZGVzIGFyZTpcbiIKK21zZ3N0ciAiRGllIGFsbGdlbWVpbiB2ZXJ3ZW5kZXRlbiBHaXQtQW5sZWl0dW5nZW4gc2luZDpcbiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDYyIGJ1aWx0aW4vaGVscC5jOjQ3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1c2FnZTogJXMlcyIKIG1zZ3N0ciAiVmVyd2VuZHVuZzogJXMlcyIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDUzCisjOiBidWlsdGluL2hlbHAuYzo0OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiYGdpdCAlcycgaXMgYWxpYXNlZCB0byBgJXMnIgogbXNnc3RyICJmw7xyIGBnaXQgJXMnIHd1cmRlIGRlciBBbGlhcyBgJXMnIGFuZ2VsZWd0IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNjkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE4MgogIywgYy1mb3JtYXQKIG1zZ2lkICJvYmplY3QgdHlwZSBtaXNtYXRjaCBhdCAlcyIKIG1zZ3N0ciAiT2JqZWt0LVR5cGVuIHBhc3NlbiBiZWkgJXMgbmljaHQgenVzYW1tZW4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE4OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjAyCiBtc2dpZCAib2JqZWN0IG9mIHVuZXhwZWN0ZWQgdHlwZSIKIG1zZ3N0ciAiT2JqZWt0IGhhdCB1bmVyd2FydGV0ZW4gVHlwIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyMjYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgZmlsbCAlZCBieXRlIgogbXNnaWRfcGx1cmFsICJjYW5ub3QgZmlsbCAlZCBieXRlcyIKIG1zZ3N0clswXSAia2FubiAlZCBCeXRlIG5pY2h0IGxlc2VuIgogbXNnc3RyWzFdICJrYW5uICVkIEJ5dGVzIG5pY2h0IGxlc2VuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyMzYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI0OQogbXNnaWQgImVhcmx5IEVPRiIKIG1zZ3N0ciAienUgZnLDvGhlcyBEYXRlaWVuZGUiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIzNworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjUwCiBtc2dpZCAicmVhZCBlcnJvciBvbiBpbnB1dCIKIG1zZ3N0ciAiRmVobGVyIGJlaW0gTGVzZW4gZGVyIEVpbmdhYmUiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI0OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjYyCiBtc2dpZCAidXNlZCBtb3JlIGJ5dGVzIHRoYW4gd2VyZSBhdmFpbGFibGUiCiBtc2dzdHIgInZlcndlbmRldGUgbWVociBCeXRlcyBhbHMgdmVyZsO8Z2JhciB3YXJlbiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjU2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNjkKIG1zZ2lkICJwYWNrIHRvbyBsYXJnZSBmb3IgY3VycmVudCBkZWZpbml0aW9uIG9mIG9mZl90IgogbXNnc3RyICJQYWtldCBpc3QgenUgZ3Jvw58gZsO8ciBkaWUgYWt0dWVsbGUgRGVmaW5pdGlvbiB2b24gb2ZmX3QiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI3MgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6Mjg1CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgJyVzJyIKIG1zZ3N0ciAia29ubnRlICclcycgbmljaHQgZXJzdGVsbGVuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNzcKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI5MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiBwYWNrZmlsZSAnJXMnIgogbXNnc3RyICJLYW5uIFBha2V0ZGF0ZWkgJyVzJyBuaWNodCDDtmZmbmVuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyOTEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMwNAogbXNnaWQgInBhY2sgc2lnbmF0dXJlIG1pc21hdGNoIgogbXNnc3RyICJQYWtldHNpZ25hdHVyIHN0aW1tdCBuaWNodCDDvGJlcmVpbiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzExCisjOiBidWlsdGluL2luZGV4LXBhY2suYzozMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAicGFjayB2ZXJzaW9uICU8UFJJdTMyPiB1bnN1cHBvcnRlZCIKK21zZ3N0ciAiUGFrZXR2ZXJzaW9uICU8UFJJdTMyPiBuaWNodCB1bnRlcnN0w7x0enQiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrIGhhcyBiYWQgb2JqZWN0IGF0IG9mZnNldCAlbHU6ICVzIgogbXNnc3RyICJQYWtldCBoYXQgZWluIHVuZ8O8bHRpZ2VzIE9iamVrdCBiZWkgVmVyc2F0eiAlbHU6ICVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0MDUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbmZsYXRlIHJldHVybmVkICVkIgogbXNnc3RyICJEZWtvbXByaW1pZXJ1bmcgZ2FiICVkIHp1csO8Y2siCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ1MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDk1CiBtc2dpZCAib2Zmc2V0IHZhbHVlIG92ZXJmbG93IGZvciBkZWx0YSBiYXNlIG9iamVjdCIKIG1zZ3N0ciAiV2VydCBmw7xyIFZlcnNhdHogYmVpIERpZmZlcmVuem9iamVrdCDDvGJlcmdlbGF1ZmVuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0NTgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUwMwogbXNnaWQgImRlbHRhIGJhc2Ugb2Zmc2V0IGlzIG91dCBvZiBib3VuZCIKIG1zZ3N0ciAiIgogIldlcnQgZsO8ciBWZXJzYXR6IGJlaSBEaWZmZXJlbnpvYmpla3QgbGllZ3QgYXXDn2VyaGFsYiBkZXMgZ8O8bHRpZ2VuIEJlcmVpY2hzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0NjYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUxMQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duIG9iamVjdCB0eXBlICVkIgogbXNnc3RyICJVbmJla2FubnRlciBPYmpla3QtVHlwICVkIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0OTUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU0MgogbXNnaWQgImNhbm5vdCBwcmVhZCBwYWNrIGZpbGUiCiBtc2dzdHIgIkthbm4gUGFrZXRkYXRlaSAlcyBuaWNodCBsZXNlbiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDk3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAicHJlbWF0dXJlIGVuZCBvZiBwYWNrIGZpbGUsICVsdSBieXRlIG1pc3NpbmciCiBtc2dpZF9wbHVyYWwgInByZW1hdHVyZSBlbmQgb2YgcGFjayBmaWxlLCAlbHUgYnl0ZXMgbWlzc2luZyIKIG1zZ3N0clswXSAiZnLDvGh6ZWl0aWdlcyBFbmRlIGRlciBQYWtldGRhdGVpLCB2ZXJtaXNzZSAlbHUgQnl0ZSIKIG1zZ3N0clsxXSAiZnLDvGh6ZWl0aWdlcyBFbmRlIGRlciBQYWtldGRhdGVpLCB2ZXJtaXNzZSAlbHUgQnl0ZXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUxMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTcwCiBtc2dpZCAic2VyaW91cyBpbmZsYXRlIGluY29uc2lzdGVuY3kiCiBtc2dzdHIgImVybnN0aGFmdGUgSW5rb25zaXN0ZW56IG5hY2ggRGVrb21wcmltaWVydW5nIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo1ODMKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiY2Fubm90IHJlYWQgZXhpc3Rpbmcgb2JqZWN0ICVzIgotbXNnc3RyICJLYW5uIGV4aXN0aWVyZW5kZXMgT2JqZWt0ICVzIG5pY2h0IGxlc2VuLiIKLQotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTg2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo2NjEgYnVpbHRpbi9pbmRleC1wYWNrLmM6NjY3IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY5MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzI0IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjczMwogIywgYy1mb3JtYXQKIG1zZ2lkICJTSEExIENPTExJU0lPTiBGT1VORCBXSVRIICVzICEiCiBtc2dzdHIgIlNIQTEgS09MTElTSU9OIE1JVCAlcyBHRUZVTkRFTiAhIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo1OTgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2NCBidWlsdGluL3BhY2stb2JqZWN0cy5jOjE3MAorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHJlYWQgJXMiCittc2dzdHIgImthbm4gJXMgbmljaHQgbGVzZW4iCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjczMAorIywgYy1mb3JtYXQKK21zZ2lkICJjYW5ub3QgcmVhZCBleGlzdGluZyBvYmplY3QgJXMiCittc2dzdHIgIkthbm4gZXhpc3RpZXJlbmRlcyBPYmpla3QgJXMgbmljaHQgbGVzZW4uIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBibG9iIG9iamVjdCAlcyIKIG1zZ3N0ciAidW5nw7xsdGlnZXMgQmxvYi1PYmpla3QgJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjYxMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzU5CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgJXMiCiBtc2dzdHIgIlVuZ8O8bHRpZ2VyIE9iamVrdC1UeXAgJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjYxMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzYxCiBtc2dpZCAiRXJyb3IgaW4gb2JqZWN0IgogbXNnc3RyICJGZWhsZXIgaW4gT2JqZWt0IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo2MTQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgYWxsIGNoaWxkIG9iamVjdHMgb2YgJXMgYXJlIHJlYWNoYWJsZSIKIG1zZ3N0ciAiTmljaHQgYWxsZSBLaW5kLU9iamVrdGUgdm9uICVzIHNpbmQgZXJyZWljaGJhciIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6Njg3IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjcxMworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODMzIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg2MwogbXNnaWQgImZhaWxlZCB0byBhcHBseSBkZWx0YSIKIG1zZ3N0ciAiS29ubnRlIERhdGVpdW50ZXJzY2hpZWQgbmljaHQgYW53ZW5kZW4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg1MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAwNAogbXNnaWQgIlJlY2VpdmluZyBvYmplY3RzIgogbXNnc3RyICJFbXBmYW5nZSBPYmpla3RlIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo4NTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMDQKIG1zZ2lkICJJbmRleGluZyBvYmplY3RzIgogbXNnc3RyICJJbmRpemllcmUgT2JqZWt0ZSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODcyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDMwCiBtc2dpZCAicGFjayBpcyBjb3JydXB0ZWQgKFNIQTEgbWlzbWF0Y2gpIgogbXNnc3RyICJQYWtldCBpc3QgYmVzY2jDpGRpZ3QgKFNIQTEgdW50ZXJzY2hpZWRsaWNoKSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODc3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDM1CiBtc2dpZCAiY2Fubm90IGZzdGF0IHBhY2tmaWxlIgogbXNnc3RyICJrYW5uIFBha2V0ZGF0ZWkgbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg4MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzOAogbXNnaWQgInBhY2sgaGFzIGp1bmsgYXQgdGhlIGVuZCIKIG1zZ3N0ciAiUGFrZXRlbmRlIGVudGjDpGx0IG5pY2h0IHZlcndlbmRiYXJlbiBJbmhhbHQiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjkwMworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA0OQorbXNnaWQgImNvbmZ1c2lvbiBiZXlvbmQgaW5zYW5pdHkgaW4gcGFyc2VfcGFja19vYmplY3RzKCkiCittc2dzdHIgIkZlaGxlciBiZWltIEF1c2bDvGhyZW4gdm9uIFwicGFyc2VfcGFja19vYmplY3RzKClcIiIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA3MgogbXNnaWQgIlJlc29sdmluZyBkZWx0YXMiCiBtc2dzdHIgIkzDtnNlIFVudGVyc2NoaWVkZSBhdWYiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjk1NAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA4MgorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gY3JlYXRlIHRocmVhZDogJXMiCittc2dzdHIgImthbm4gVGhyZWFkIG5pY2h0IGVyemV1Z2VuOiAlcyIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEyNAogbXNnaWQgImNvbmZ1c2lvbiBiZXlvbmQgaW5zYW5pdHkiCiBtc2dzdHIgIkZlaGxlciBiZWltIEF1ZmzDtnNlbiBkZXIgVW50ZXJzY2hpZWRlIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo5NzMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiY29tcGxldGVkIHdpdGggJWQgbG9jYWwgb2JqZWN0cyIKK21zZ3N0ciAidmVydm9sbHN0w6RuZGlndCBtaXQgJWQgbG9rYWxlbiBPYmpla3RlbiIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE0MgorIywgYy1mb3JtYXQKK21zZ2lkICJVbmV4cGVjdGVkIHRhaWwgY2hlY2tzdW0gZm9yICVzIChkaXNrIGNvcnJ1cHRpb24/KSIKK21zZ3N0ciAiVW5lcndhcnRldGUgUHLDvGZzdW1tZSBmw7xyICVzIChGZXN0cGxhdHRlbmZlaGxlcj8pIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhY2sgaGFzICVkIHVucmVzb2x2ZWQgZGVsdGEiCiBtc2dpZF9wbHVyYWwgInBhY2sgaGFzICVkIHVucmVzb2x2ZWQgZGVsdGFzIgogbXNnc3RyWzBdICJQYWtldCBoYXQgJWQgdW5hdWZnZWzDtnN0ZSBVbnRlcnNjaGllZCIKIG1zZ3N0clsxXSAiUGFrZXQgaGF0ICVkIHVuYXVmZ2Vsw7ZzdGUgVW50ZXJzY2hpZWRlIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo5OTgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGRlZmxhdGUgYXBwZW5kZWQgb2JqZWN0ICglZCkiCiBtc2dzdHIgIktvbm50ZSBhbmdlaMOkbmd0ZXMgT2JqZWt0ICglZCkgbmljaHQga29tcHJpbWllcmVuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDc3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjUwCiAjLCBjLWZvcm1hdAogbXNnaWQgImxvY2FsIG9iamVjdCAlcyBpcyBjb3JydXB0IgogbXNnc3RyICJsb2thbGVzIE9iamVrdCAlcyBpc3QgYmVzY2jDpGRpZ3QiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMDEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNzQKIG1zZ2lkICJlcnJvciB3aGlsZSBjbG9zaW5nIHBhY2sgZmlsZSIKIG1zZ3N0ciAiRmVobGVyIGJlaW0gU2NobGllw59lbiBkZXIgUGFrZXRkYXRlaSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTExNAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgd3JpdGUga2VlcCBmaWxlICclcyciCiBtc2dzdHIgIkthbm4gUGFrZXRiZXNjaHJlaWJ1bmdzZGF0ZWkgJyVzJyBuaWNodCBzY2hyZWliZW4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMjIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IGNsb3NlIHdyaXR0ZW4ga2VlcCBmaWxlICclcyciCiBtc2dzdHIgIkthbm4gZWJlbiBlcnN0ZWxsdGUgUGFrZXRiZXNjaHJlaWJ1bmdzZGF0ZWkgJyVzJyBuaWNodCBzY2hsaWXDn2VuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTM1CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzA4CiBtc2dpZCAiY2Fubm90IHN0b3JlIHBhY2sgZmlsZSIKIG1zZ3N0ciAiS2FubiBQYWtldGRhdGVpIG5pY2h0IHNwZWljaGVybiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE0NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMxOQogbXNnaWQgImNhbm5vdCBzdG9yZSBpbmRleCBmaWxlIgogbXNnc3RyICJLYW5uIEluZGV4ZGF0ZWkgbmljaHQgc3BlaWNoZXJuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjQ3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzUyCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBwYWNrLmluZGV4dmVyc2lvbj0lPFBSSXUzMj4iCittc2dzdHIgIlwicGFjay5pbmRleHZlcnNpb249JTxQUkl1MzI+XCIgaXN0IHVuZ8O8bHRpZyIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM1OAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIG51bWJlciBvZiB0aHJlYWRzIHNwZWNpZmllZCAoJWQpIgorbXNnc3RyICJ1bmfDvGx0aWdlIEFuemFobCB2b24gVGhyZWFkcyBhbmdlZ2ViZW4gKCVkKSIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM2MiBidWlsdGluL2luZGV4LXBhY2suYzoxNTM1CisjLCBjLWZvcm1hdAorbXNnaWQgIm5vIHRocmVhZHMgc3VwcG9ydCwgaWdub3JpbmcgJXMiCittc2dzdHIgImtlaW5lIFVudGVyc3TDvHR6dW5nIHZvbiBUaHJlYWRzLCAnJXMnIHdpcmQgaWdub3JpZXJ0IgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBvcGVuIGV4aXN0aW5nIHBhY2sgZmlsZSAnJXMnIgogbXNnc3RyICJLYW5uIGV4aXN0aWVyZW5kZSBQYWtldGRhdGVpICclcycgbmljaHQgw7ZmZm5lbiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI0OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3Qgb3BlbiBleGlzdGluZyBwYWNrIGlkeCBmaWxlIGZvciAnJXMnIgogbXNnc3RyICJLYW5uIGV4aXN0aWVyZW5kZSBJbmRleGRhdGVpIGbDvHIgUGFrZXQgJyVzJyBuaWNodCDDtmZmbmVuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjk2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vbiBkZWx0YTogJWQgb2JqZWN0IgogbXNnaWRfcGx1cmFsICJub24gZGVsdGE6ICVkIG9iamVjdHMiCiBtc2dzdHJbMF0gImtlaW4gVW50ZXJzY2hpZWQ6ICVkIE9iamVrdCIKIG1zZ3N0clsxXSAia2VpbiBVbnRlcnNjaGllZDogJWQgT2JqZWt0ZSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMwMworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQ3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjaGFpbiBsZW5ndGggPSAlZDogJWx1IG9iamVjdCIKIG1zZ2lkX3BsdXJhbCAiY2hhaW4gbGVuZ3RoID0gJWQ6ICVsdSBvYmplY3RzIgogbXNnc3RyWzBdICJMw6RuZ2UgZGVyIE9iamVrdC1MaXN0ZSA9ICVkOiAlbHUgT2JqZWt0IgogbXNnc3RyWzFdICJMw6RuZ2UgZGVyIE9iamVrdC1MaXN0ZSA9ICVkOiAlbHUgT2JqZWt0ZSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMzMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTUwMwogbXNnaWQgIkNhbm5vdCBjb21lIGJhY2sgdG8gY3dkIgogbXNnc3RyICJLYW5uIG5pY2h0IHp1csO8Y2sgenUgQXJiZWl0c3ZlcnplaWNobmlzIHdlY2hzZWxuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzc0IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNzcKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzODkgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM5MworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU0NyBidWlsdGluL2luZGV4LXBhY2suYzoxNTUwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTYyIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkICVzIgogbXNnc3RyICIlcyBpc3QgdW5nw7xsdGlnIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDA3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTgwCiBtc2dpZCAiLS1maXgtdGhpbiBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IC0tc3RkaW4iCi1tc2dzdHIgIi0tZml4LXRoaW4ga2FubiBuaWNodCBvaG5lIC0tc3RkaW4gYmVudXR6dCB3ZXJkZW4iCittc2dzdHIgIkRpZSBPcHRpb24gLS1maXgtdGhpbiBrYW5uIG5pY2h0IG9obmUgLS1zdGRpbiB2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQxMSBidWlsdGluL2luZGV4LXBhY2suYzoxNDIxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTg0IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAicGFja2ZpbGUgbmFtZSAnJXMnIGRvZXMgbm90IGVuZCB3aXRoICcucGFjayciCiBtc2dzdHIgIk5hbWUgZGVyIFBha2V0ZGF0ZWkgJyVzJyBlbmRldCBuaWNodCBtaXQgJy5wYWNrJyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQzMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTYwMwogbXNnaWQgIi0tdmVyaWZ5IHdpdGggbm8gcGFja2ZpbGUgbmFtZSBnaXZlbiIKLW1zZ3N0ciAiLS12ZXJpZnkgb2huZSBOYW1lIGRlciBQYWtldGRhdGVpIGFuZ2VnZWJlbiIKK21zZ3N0ciAiRGllIE9wdGlvbiAtLXZlcmlmeSB3dXJkZSBvaG5lIE5hbWVuIGRlciBQYWtldGRhdGVpIGFuZ2VnZWJlbi4iCiAKICM6IGJ1aWx0aW4vaW5pdC1kYi5jOjM1CiAjLCBjLWZvcm1hdApAQCAtMzI1Nyw2MyArNTgxNSw4NCBAQAogbXNnaWQgImluc2FuZSBnaXQgZGlyZWN0b3J5ICVzIgogbXNnc3RyICJ1bmfDvGx0aWdlcyBHaXQtVmVyemVpY2huaXMgJXMiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjMyMiBidWlsdGluL2luaXQtZGIuYzozMjUKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjMyMyBidWlsdGluL2luaXQtZGIuYzozMjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgYWxyZWFkeSBleGlzdHMiCiBtc2dzdHIgIiVzIGV4aXN0aWVydCBiZXJlaXRzIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzozNTQKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjM1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gaGFuZGxlIGZpbGUgdHlwZSAlZCIKIG1zZ3N0ciAia2FubiBuaWNodCBtaXQgRGF0ZWl0eXAgJWQgdW1nZWhlbiIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6MzU3CisjOiBidWlsdGluL2luaXQtZGIuYzozNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIG1vdmUgJXMgdG8gJXMiCiBtc2dzdHIgIktvbm50ZSAlcyBuaWNodCBuYWNoICVzIHZlcnNjaGllYmVuIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzozNjIKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjM2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGdpdCBsaW5rICVzIgotbXNnc3RyICJLb25udGUgZ2l0LVZlcmtuw7xmdW5nICVzIG5pY2h0IGVyc3RlbGxlbiIKK21zZ3N0ciAiS29ubnRlIGdpdC1WZXJrbsO8cGZ1bmcgJXMgbmljaHQgZXJzdGVsbGVuIgogCiAjLgogIy4gKiBUUkFOU0xBVE9SUzogVGhlIGZpcnN0ICclcycgaXMgZWl0aGVyICJSZWluaXRpYWxpemVkCiAjLiAqIGV4aXN0aW5nIiBvciAiSW5pdGlhbGl6ZWQgZW1wdHkiLCB0aGUgc2Vjb25kICIgc2hhcmVkIiBvcgogIy4gKiAiIiwgYW5kIHRoZSBsYXN0ICclcyVzJyBpcyB0aGUgdmVyYmF0aW0gZGlyZWN0b3J5IG5hbWUuCiAjLgotIzogYnVpbHRpbi9pbml0LWRiLmM6NDE5CisjOiBidWlsdGluL2luaXQtZGIuYzo0MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMlcyBHaXQgcmVwb3NpdG9yeSBpbiAlcyVzXG4iCiBtc2dzdHIgIiVzJXMgR2l0LVByb2pla3RhcmNoaXYgaW4gJXMlc1xuIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo0MjAKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQyMQogbXNnaWQgIlJlaW5pdGlhbGl6ZWQgZXhpc3RpbmciCiBtc2dzdHIgIlJlaW5pdGlhbGlzaWVydGUgZXhpc3RpZXJlbmRlcyIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6NDIwCisjOiBidWlsdGluL2luaXQtZGIuYzo0MjEKIG1zZ2lkICJJbml0aWFsaXplZCBlbXB0eSIKIG1zZ3N0ciAiSW5pdGlhbGlzaWVydGUgbGVlcmVzIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo0MjEKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQyMgogbXNnaWQgIiBzaGFyZWQiCiBtc2dzdHIgIiBnZW1laW5zYW1lcyIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6NDQwCisjOiBidWlsdGluL2luaXQtZGIuYzo0NDEKIG1zZ2lkICJjYW5ub3QgdGVsbCBjd2QiCiBtc2dzdHIgImthbm4gYWt0dWVsbGVzIEFyYmVpdHN2ZXJ6ZWljaG5pcyBuaWNodCBlcm1pdHRlbG4iCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjUyMSBidWlsdGluL2luaXQtZGIuYzo1MjgKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQ2NworbXNnaWQgIiIKKyJnaXQgaW5pdCBbLXEgfCAtLXF1aWV0XSBbLS1iYXJlXSBbLS10ZW1wbGF0ZT08dGVtcGxhdGUtZGlyZWN0b3J5Pl0gWy0tc2hhcmVkIgorIls9PHBlcm1pc3Npb25zPl1dIFtkaXJlY3RvcnldIgorbXNnc3RyICIiCisiZ2l0IGluaXQgWy1xIHwgLS1xdWlldF0gWy0tYmFyZV0gWy0tdGVtcGxhdGU9PFZvcmxhZ2VudmVyemVpY2huaXM+XSBbLS1zaGFyZWQiCisiWz08QmVyZWNodGlndW5nZW4+XV0gW1ZlcnplaWNobmlzXSIKKworIzogYnVpbHRpbi9pbml0LWRiLmM6NDkwCittc2dpZCAicGVybWlzc2lvbnMiCittc2dzdHIgIkJlcmVjaHRpZ3VuZ2VuIgorCisjOiBidWlsdGluL2luaXQtZGIuYzo0OTEKK21zZ2lkICJzcGVjaWZ5IHRoYXQgdGhlIGdpdCByZXBvc2l0b3J5IGlzIHRvIGJlIHNoYXJlZCBhbW9uZ3N0IHNldmVyYWwgdXNlcnMiCittc2dzdHIgIiIKKyJnaWJ0IGFuLCBkYXNzIGRhcyBHaXQtUHJvamVrdGFyY2hpdiBtaXQgbWVocmVyZW4gQmVudXR6ZXJuIGdldGVpbHQgd2lyZCIKKworIzogYnVpbHRpbi9pbml0LWRiLmM6NDkzIGJ1aWx0aW4vcHJ1bmUtcGFja2VkLmM6NzcKK21zZ2lkICJiZSBxdWlldCIKK21zZ3N0ciAid2VuaWdlciBBdXNnYWJlbiIKKworIzogYnVpbHRpbi9pbml0LWRiLmM6NTIyIGJ1aWx0aW4vaW5pdC1kYi5jOjUyOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgbWtkaXIgJXMiCiBtc2dzdHIgImthbm4gVmVyemVpY2huaXMgJXMgbmljaHQgZXJzdGVsbGVuIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo1MzIKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjUzMwogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgY2hkaXIgdG8gJXMiCiBtc2dzdHIgImthbm4gbmljaHQgaW4gVmVyemVpY2huaXMgJXMgd2VjaHNlbG4iCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjU1NAorIzogYnVpbHRpbi9pbml0LWRiLmM6NTU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICIlcyAob3IgLS13b3JrLXRyZWU9PGRpcmVjdG9yeT4pIG5vdCBhbGxvd2VkIHdpdGhvdXQgc3BlY2lmeWluZyAlcyAob3IgLS1naXQtIgpAQCAtMzMyMiwxMTUgKzU5MDEsNDEwIEBACiAiJXMgKG9kZXIgLS13b3JrLXRyZWU9PFZlcnplaWNobmlzPikgbmljaHQgZXJsYXVidCBvaG5lIFNwZXppZml6aWVydW5nIHZvbiAlcyAiCiAiKG9kZXIgLS1naXQtZGlyPTxWZXJ6ZWljaG5pcz4pIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo1NzgKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjU3OQogbXNnaWQgIkNhbm5vdCBhY2Nlc3MgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAiS2FubiBuaWNodCBhdWYgYWt0dWVsbGVzIEFyYmVpdHN2ZXJ6ZWljaG5pcyB6dWdyZWlmZW4uIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo1ODUKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjU4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgYWNjZXNzIHdvcmsgdHJlZSAnJXMnIgogbXNnc3RyICJLYW5uIG5pY2h0IGF1ZiBBcmJlaXRzYmF1bSAnJXMnIHp1Z3JlaWZlbi4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTg4CisjOiBidWlsdGluL2xvZy5jOjQwCittc2dpZCAiZ2l0IGxvZyBbPG9wdGlvbnM+XSBbPHJldmlzaW9uIHJhbmdlPl0gW1stLV0gPHBhdGg+Li4uXVxuIgorbXNnc3RyICJnaXQgbG9nIFs8T3B0aW9uZW4+XSBbUmV2aXNpb25zYmVyZWljaD5dIFtbLS1dIDxQZmFkPi4uLl1cbiIKKworIzogYnVpbHRpbi9sb2cuYzo0MQorbXNnaWQgIiAgIG9yOiBnaXQgc2hvdyBbb3B0aW9uc10gPG9iamVjdD4uLi4iCittc2dzdHIgIiAgIG9kZXI6IGdpdCBzaG93IFtPcHRpb25lbl0gPE9iamVrdD4uLi4iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTAzCittc2dpZCAic3VwcHJlc3MgZGlmZiBvdXRwdXQiCittc2dzdHIgInVudGVyZHLDvGNrdCBBdXNnYWJlIGRlciBVbnRlcnNjaGllZGUiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTA0Cittc2dpZCAic2hvdyBzb3VyY2UiCittc2dzdHIgInplaWd0IFF1ZWxsZSIKKworIzogYnVpbHRpbi9sb2cuYzoxMDUKK21zZ2lkICJVc2UgbWFpbCBtYXAgZmlsZSIKK21zZ3N0ciAidmVyd2VuZGV0IFwibWFpbG1hcFwiLURhdGVpIgorCisjOiBidWlsdGluL2xvZy5jOjEwNgorbXNnaWQgImRlY29yYXRlIG9wdGlvbnMiCittc2dzdHIgImRlY29yYXRlLU9wdGlvbmVuIgorCisjOiBidWlsdGluL2xvZy5jOjE5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJGaW5hbCBvdXRwdXQ6ICVkICVzXG4iCiBtc2dzdHIgImxldHp0ZSBBdXNnYWJlOiAlZCAlc1xuIgogCi0jOiBidWlsdGluL2xvZy5jOjQwMSBidWlsdGluL2xvZy5jOjQ4OQorIzogYnVpbHRpbi9sb2cuYzo0MjIgYnVpbHRpbi9sb2cuYzo1MTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlYWQgb2JqZWN0ICVzIgogbXNnc3RyICJLYW5uIE9iamVrdCAlcyBuaWNodCBsZXNlbi4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NTEzCisjOiBidWlsdGluL2xvZy5jOjUzOAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIHR5cGU6ICVkIgogbXNnc3RyICJVbmJla2FubnRlciBUeXA6ICVkIgogCi0jOiBidWlsdGluL2xvZy5jOjYwMgorIzogYnVpbHRpbi9sb2cuYzo2MzgKIG1zZ2lkICJmb3JtYXQuaGVhZGVycyB3aXRob3V0IHZhbHVlIgogbXNnc3RyICJmb3JtYXQuaGVhZGVycyBvaG5lIFdlcnQiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6Njc2CisjOiBidWlsdGluL2xvZy5jOjcyMAogbXNnaWQgIm5hbWUgb2Ygb3V0cHV0IGRpcmVjdG9yeSBpcyB0b28gbG9uZyIKIG1zZ3N0ciAiTmFtZSBkZXMgQXVzZ2FiZXZlcnplaWNobmlzc2VzIGlzdCB6dSBsYW5nLiIKIAotIzogYnVpbHRpbi9sb2cuYzo2ODcKKyM6IGJ1aWx0aW4vbG9nLmM6NzM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBvcGVuIHBhdGNoIGZpbGUgJXMiCiBtc2dzdHIgIkthbm4gUGF0Y2gtRGF0ZWkgJXMgbmljaHQgw7ZmZm5lbiIKIAotIzogYnVpbHRpbi9sb2cuYzo3MDEKKyM6IGJ1aWx0aW4vbG9nLmM6NzUwCiBtc2dpZCAiTmVlZCBleGFjdGx5IG9uZSByYW5nZS4iCiBtc2dzdHIgIkJyYXVjaGUgZ2VuYXUgZWluZW4gVmVyc2lvbnNiZXJlaWNoLiIKIAotIzogYnVpbHRpbi9sb2cuYzo3MDkKKyM6IGJ1aWx0aW4vbG9nLmM6NzU4CiBtc2dpZCAiTm90IGEgcmFuZ2UuIgogbXNnc3RyICJLZWluIFZlcnNpb25zYmVyZWljaC4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6Nzg2CisjOiBidWlsdGluL2xvZy5jOjg2MAogbXNnaWQgIkNvdmVyIGxldHRlciBuZWVkcyBlbWFpbCBmb3JtYXQiCiBtc2dzdHIgIkFuc2NocmVpYmVuIGJlbsO2dGlndCBFLU1haWwtRm9ybWF0IgogCi0jOiBidWlsdGluL2xvZy5jOjg1OQorIzogYnVpbHRpbi9sb2cuYzo5MzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW5zYW5lIGluLXJlcGx5LXRvOiAlcyIKIG1zZ3N0ciAidW5nw7xsdGlnZXMgaW4tcmVwbHktdG86ICVzIgogCi0jOiBidWlsdGluL2xvZy5jOjkzMgorIzogYnVpbHRpbi9sb2cuYzo5NjQKK21zZ2lkICJnaXQgZm9ybWF0LXBhdGNoIFtvcHRpb25zXSBbPHNpbmNlPiB8IDxyZXZpc2lvbiByYW5nZT5dIgorbXNnc3RyICJnaXQgZm9ybWF0LXBhdGNoIFtPcHRpb25lbl0gWzxzZWl0PiB8IDxSZXZpc2lvbnNiZXJlaWNoPl0iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTAwOQogbXNnaWQgIlR3byBvdXRwdXQgZGlyZWN0b3JpZXM/IgogbXNnc3RyICJad2VpIEF1c2dhYmV2ZXJ6ZWljaG5pc3NlPyIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTUzCi0jLCBjLWZvcm1hdAotbXNnaWQgImJvZ3VzIGNvbW1pdHRlciBpbmZvICVzIgotbXNnc3RyICJ1bmVjaHRlIEVpbnJlaWNoZXItSW5mb3JtYXRpb25lbiAlcyIKKyM6IGJ1aWx0aW4vbG9nLmM6MTEwOAorbXNnaWQgInVzZSBbUEFUQ0ggbi9tXSBldmVuIHdpdGggYSBzaW5nbGUgcGF0Y2giCittc2dzdHIgInZlcndlbmRldCBbUEFUQ0ggbi9tXSBhdWNoIG1pdCBlaW56ZWxuZW0gUGF0Y2giCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE5OAorIzogYnVpbHRpbi9sb2cuYzoxMTExCittc2dpZCAidXNlIFtQQVRDSF0gZXZlbiB3aXRoIG11bHRpcGxlIHBhdGNoZXMiCittc2dzdHIgInZlcndlbmRldCBbUEFUQ0hdIGF1Y2ggbWl0IG1laHJlcmVuIFBhdGNoZXMiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTExNQorbXNnaWQgInByaW50IHBhdGNoZXMgdG8gc3RhbmRhcmQgb3V0IgorbXNnc3RyICJBdXNnYWJlIGRlciBQYXRjaGVzIGluIFN0YW5kYXJkLUF1c2dhYmUiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTExNworbXNnaWQgImdlbmVyYXRlIGEgY292ZXIgbGV0dGVyIgorbXNnc3RyICJlcnpldWd0IGVpbiBEZWNrYmxhdHQiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTExOQorbXNnaWQgInVzZSBzaW1wbGUgbnVtYmVyIHNlcXVlbmNlIGZvciBvdXRwdXQgZmlsZSBuYW1lcyIKK21zZ3N0ciAidmVyd2VuZGV0IGVpbmZhY2hlIE51bW1lcm5mb2xnZSBmw7xyIGRpZSBOYW1lbiBkZXIgQXVzZ2FiZWRhdGVpZW4iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyMAorbXNnaWQgInNmeCIKK21zZ3N0ciAiRGF0ZWllbmR1bmciCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyMQorbXNnaWQgInVzZSA8c2Z4PiBpbnN0ZWFkIG9mICcucGF0Y2gnIgorbXNnc3RyICJ2ZXJ3ZW5kZXQgPERhdGVpZW5kdW5nPiBhbnN0YXR0ICcucGF0Y2gnIgorCisjOiBidWlsdGluL2xvZy5jOjExMjMKK21zZ2lkICJzdGFydCBudW1iZXJpbmcgcGF0Y2hlcyBhdCA8bj4gaW5zdGVhZCBvZiAxIgorbXNnc3RyICJiZWdpbm50IGRpZSBOdW1tZXJpZXJ1bmcgZGVyIFBhdGNoZXMgYmVpIDxuPiBhbnN0YXR0IGJlaSAxIgorCisjOiBidWlsdGluL2xvZy5jOjExMjUKK21zZ2lkICJtYXJrIHRoZSBzZXJpZXMgYXMgTnRoIHJlLXJvbGwiCittc2dzdHIgImtlbm56ZWljaG5ldCBkaWUgU2VyaWUgYWxzIG4tdGUgRmFzc3VuZyIKKworIzogYnVpbHRpbi9sb2cuYzoxMTI3Cittc2dpZCAiVXNlIFs8cHJlZml4Pl0gaW5zdGVhZCBvZiBbUEFUQ0hdIgorbXNnc3RyICJ2ZXJ3ZW5kZXQgWzxQcmVmaXg+XSBhbnN0YXR0IFtQQVRDSF0iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzMAorbXNnaWQgInN0b3JlIHJlc3VsdGluZyBmaWxlcyBpbiA8ZGlyPiIKK21zZ3N0ciAic3BlaWNoZXJ0IGVyemV1Z3RlIERhdGVpZW4gaW4gPFZlcnplaWNobmlzPiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTMzCittc2dpZCAiZG9uJ3Qgc3RyaXAvYWRkIFtQQVRDSF0iCittc2dzdHIgIltQQVRDSF0gd2lyZCBuaWNodCBlbnRmZXJudC9oaW56dWdlZsO8Z3QiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzNgorbXNnaWQgImRvbid0IG91dHB1dCBiaW5hcnkgZGlmZnMiCittc2dzdHIgImdpYnQga2VpbmUgYmluw6RyZW4gVW50ZXJzY2hpZWRlIGF1cyIKKworIzogYnVpbHRpbi9sb2cuYzoxMTM4Cittc2dpZCAiZG9uJ3QgaW5jbHVkZSBhIHBhdGNoIG1hdGNoaW5nIGEgY29tbWl0IHVwc3RyZWFtIgorbXNnc3RyICIiCisic2NobGllw590IGtlaW5lIFBhdGNoZXMgZWluLCBkaWUgZWluZXIgVmVyc2lvbiBpbSDDnGJlcm5haG1lendlaWcgZW50c3ByZWNoZW4iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0MAorbXNnaWQgInNob3cgcGF0Y2ggZm9ybWF0IGluc3RlYWQgb2YgZGVmYXVsdCAocGF0Y2ggKyBzdGF0KSIKK21zZ3N0ciAiemVpZ3QgUGF0Y2hmb3JtYXQgYW5zdGF0dCBkZXMgU3RhbmRhcmRzIChQYXRjaCArIFp1c2FtbWVuZmFzc3VuZykiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0MgorbXNnaWQgIk1lc3NhZ2luZyIKK21zZ3N0ciAiRW1haWwtRWluc3RlbGx1bmdlbiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQzCittc2dpZCAiaGVhZGVyIgorbXNnc3RyICJIZWFkZXIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0NAorbXNnaWQgImFkZCBlbWFpbCBoZWFkZXIiCittc2dzdHIgImbDvGd0IEVtYWlsLUhlYWRlciBoaW56dSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQ1IGJ1aWx0aW4vbG9nLmM6MTE0NworbXNnaWQgImVtYWlsIgorbXNnc3RyICJFbWFpbCIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQ1Cittc2dpZCAiYWRkIFRvOiBoZWFkZXIiCittc2dzdHIgImbDvGd0ICBcIlRvOlwiLUhlYWRlciBoaW56dSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQ3Cittc2dpZCAiYWRkIENjOiBoZWFkZXIiCittc2dzdHIgImbDvGd0IFwiQ2M6XCItSGVhZGVyIGhpbnp1IgorCisjOiBidWlsdGluL2xvZy5jOjExNDkKK21zZ2lkICJtZXNzYWdlLWlkIgorbXNnc3RyICJtZXNzYWdlLWlkIgorCisjOiBidWlsdGluL2xvZy5jOjExNTAKK21zZ2lkICJtYWtlIGZpcnN0IG1haWwgYSByZXBseSB0byA8bWVzc2FnZS1pZD4iCittc2dzdHIgIm1hY2h0IGF1cyBlcnN0ZXIgRW1haWwgZWluZSBBbnR3b3J0IHp1IDxtZXNzYWdlLWlkPiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTUxIGJ1aWx0aW4vbG9nLmM6MTE1NAorbXNnaWQgImJvdW5kYXJ5IgorbXNnc3RyICJHcmVuemUiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE1MgorbXNnaWQgImF0dGFjaCB0aGUgcGF0Y2giCittc2dzdHIgImjDpG5ndCBlaW5lbiBQYXRjaCBhbiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTU1Cittc2dpZCAiaW5saW5lIHRoZSBwYXRjaCIKK21zZ3N0ciAiZsO8Z3QgZGVuIFBhdGNoIGRpcmVrdCBpbiBkaWUgTmFjaHJpY2h0IGVpbiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTU5Cittc2dpZCAiZW5hYmxlIG1lc3NhZ2UgdGhyZWFkaW5nLCBzdHlsZXM6IHNoYWxsb3csIGRlZXAiCittc2dzdHIgImFrdGl2aWVydCBOYWNocmljaHRlbnZlcmtldHR1bmcsIFN0aWxlOiBzaGFsbG93LCBkZWVwIgorCisjOiBidWlsdGluL2xvZy5jOjExNjEKK21zZ2lkICJzaWduYXR1cmUiCittc2dzdHIgIlNpZ25hdHVyIgorCisjOiBidWlsdGluL2xvZy5jOjExNjIKK21zZ2lkICJhZGQgYSBzaWduYXR1cmUiCittc2dzdHIgImbDvGd0IGVpbmUgU2lnbmF0dXIgaGluenUiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE2NAorbXNnaWQgImRvbid0IHByaW50IHRoZSBwYXRjaCBmaWxlbmFtZXMiCittc2dzdHIgInplaWd0IGtlaW5lIERhdGVpbmFtZW4gZGVyIFBhdGNoZXMiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTI0OAogbXNnaWQgIi1uIGFuZCAtayBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiIKLW1zZ3N0ciAiLW4gdW5kIC1rIHNjaGxpZXNzZW4gc2ljaCBnZWdlbnNlaXRpZyBhdXMiCittc2dzdHIgIkRpZSBPcHRpb25lbiAtbiB1bmQgLWsgc2NobGllw59lbiBzaWNoIGdlZ2Vuc2VpdGlnIGF1cy4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIwMAorIzogYnVpbHRpbi9sb2cuYzoxMjUwCiBtc2dpZCAiLS1zdWJqZWN0LXByZWZpeCBhbmQgLWsgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4iCi1tc2dzdHIgIi0tc3ViamVjdC1wcmVmaXggdW5kIC1rIHNjaGxpZXNzZW4gc2ljaCBnZWdlbnNlaXRpZyBhdXMiCittc2dzdHIgIkRpZSBPcHRpb25lbiAtLXN1YmplY3QtcHJlZml4IHVuZCAtayBzY2hsaWXDn2VuIHNpY2ggZ2VnZW5zZWl0aWcgYXVzLiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjA4CisjOiBidWlsdGluL2xvZy5jOjEyNTgKIG1zZ2lkICItLW5hbWUtb25seSBkb2VzIG5vdCBtYWtlIHNlbnNlIgotbXNnc3RyICItLW5hbWUtb25seSBtYWNodCBrZWluZW4gU2lubiIKK21zZ3N0ciAiRGllIE9wdGlvbiAtLW5hbWUtb25seSBrYW5uIG5pY2h0IHZlcndlbmRldCB3ZXJkZW4uIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMTAKKyM6IGJ1aWx0aW4vbG9nLmM6MTI2MAogbXNnaWQgIi0tbmFtZS1zdGF0dXMgZG9lcyBub3QgbWFrZSBzZW5zZSIKLW1zZ3N0ciAiLS1uYW1lLXN0YXR1cyBtYWNodCBrZWluZW4gU2lubiIKK21zZ3N0ciAiRGllIE9wdGlvbiAtLW5hbWUtc3RhdHVzIGthbm4gbmljaHQgdmVyd2VuZGV0IHdlcmRlbi4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIxMgorIzogYnVpbHRpbi9sb2cuYzoxMjYyCiBtc2dpZCAiLS1jaGVjayBkb2VzIG5vdCBtYWtlIHNlbnNlIgotbXNnc3RyICItLWNoZWNrIG1hY2h0IGtlaW5lbiBTaW5uIgorbXNnc3RyICJEaWUgT3B0aW9uIC0tY2hlY2sga2FubiBuaWNodCB2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjM1CisjOiBidWlsdGluL2xvZy5jOjEyODUKIG1zZ2lkICJzdGFuZGFyZCBvdXRwdXQsIG9yIGRpcmVjdG9yeSwgd2hpY2ggb25lPyIKIG1zZ3N0ciAiU3RhbmRhcmQtQXVzZ2FiZSBvZGVyIFZlcnplaWNobmlzLCB3ZWxjaGVzIHZvbiBiZWlkZW0/IgogCi0jOiBidWlsdGluL2xvZy5jOjEyMzcKKyM6IGJ1aWx0aW4vbG9nLmM6MTI4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSAnJXMnIgogbXNnc3RyICJLb25udGUgVmVyemVpY2huaXMgJyVzJyBuaWNodCBlcnN0ZWxsZW4uIgogCi0jOiBidWlsdGluL2xvZy5jOjEzOTAKKyM6IGJ1aWx0aW4vbG9nLmM6MTQzNQogbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgb3V0cHV0IGZpbGVzIgogbXNnc3RyICJGZWhsZXIgYmVpbSBFcnN0ZWxsZW4gZGVyIEF1c2dhYmVkYXRlaWVuLiIKIAotIzogYnVpbHRpbi9sb2cuYzoxNDk0CisjOiBidWlsdGluL2xvZy5jOjE0ODQKK21zZ2lkICJnaXQgY2hlcnJ5IFstdl0gWzx1cHN0cmVhbT4gWzxoZWFkPiBbPGxpbWl0Pl1dXSIKK21zZ3N0ciAiZ2l0IGNoZXJyeSBbLXZdIFs8w5xiZXJuYWhtZXp3ZWlnPiBbPEFyYmVpdHN6d2VpZz4gWzxMaW1pdD5dXV0iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTUzOQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ291bGQgbm90IGZpbmQgYSB0cmFja2VkIHJlbW90ZSBicmFuY2gsIHBsZWFzZSBzcGVjaWZ5IDx1cHN0cmVhbT4gbWFudWFsbHkuXG4iCiBtc2dzdHIgIiIKLSJLb25udGUgZ2Vmb2xndGVuLCBleHRlcm5lbiBad2VpZyBuaWNodCBmaW5kZW4sIGJpdHRlIGdlYmUgPHVwc3RyZWFtPiBtYW51ZWxsICIKLSJhbi5cbiIKKyJLb25udGUgZ2Vmb2xndGVuLCBleHRlcm5lbiBad2VpZyBuaWNodCBmaW5kZW4sIGJpdHRlIGdlYmVuIFNpZSA8dXBzdHJlYW0+ICIKKyJtYW51ZWxsIGFuLlxuIgogCi0jOiBidWlsdGluL2xvZy5jOjE1MTAgYnVpbHRpbi9sb2cuYzoxNTEyIGJ1aWx0aW4vbG9nLmM6MTUyNAorIzogYnVpbHRpbi9sb2cuYzoxNTUyIGJ1aWx0aW4vbG9nLmM6MTU1NCBidWlsdGluL2xvZy5jOjE1NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biBjb21taXQgJXMiCiBtc2dzdHIgIlVuYmVrYW5udGUgVmVyc2lvbiAlcyIKIAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQwMgorbXNnaWQgImdpdCBscy1maWxlcyBbb3B0aW9uc10gWzxmaWxlPi4uLl0iCittc2dzdHIgImdpdCBscy1maWxlcyBbT3B0aW9uZW5dIFs8RGF0ZWk+Li4uXSIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ1OQorbXNnaWQgImlkZW50aWZ5IHRoZSBmaWxlIHN0YXR1cyB3aXRoIHRhZ3MiCittc2dzdHIgInplaWd0IGRlbiBEYXRlaXN0YXR1cyBtaXQgTWFya2llcnVuZ2VuIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDYxCittc2dpZCAidXNlIGxvd2VyY2FzZSBsZXR0ZXJzIGZvciAnYXNzdW1lIHVuY2hhbmdlZCcgZmlsZXMiCittc2dzdHIgIiIKKyJ2ZXJ3ZW5kZXQgS2xlaW5idWNoc3RhYmVuIGbDvHIgRGF0ZWllbiBtaXQgJ2Fzc3VtZSB1bmNoYW5nZWQnIE1hcmtpZXJ1bmciCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjMKK21zZ2lkICJzaG93IGNhY2hlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IChkZWZhdWx0KSIKK21zZ3N0ciAiemVpZ3Qgendpc2NoZW5nZXNwZWljaGVydGVuIERhdGVpZW4gaW4gZGVyIEF1c2dhYmUgYW4gKFN0YW5kYXJkKSIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NQorbXNnaWQgInNob3cgZGVsZXRlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgorbXNnc3RyICJ6ZWlndCBlbnRmZXJudGUgRGF0ZWllbiBpbiBkZXIgQXVzZ2FiZSBhbiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NworbXNnaWQgInNob3cgbW9kaWZpZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKK21zZ3N0ciAiemVpZ3QgZ2XDpG5kZXJ0ZSBEYXRlaWVuIGluIGRlciBBdXNnYWJlIGFuIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDY5Cittc2dpZCAic2hvdyBvdGhlciBmaWxlcyBpbiB0aGUgb3V0cHV0IgorbXNnc3RyICJ6ZWlndCBzb25zdGlnZSBEYXRlaWVuIGluIGRlciBBdXNnYWJlIGFuIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDcxCittc2dpZCAic2hvdyBpZ25vcmVkIGZpbGVzIGluIHRoZSBvdXRwdXQiCittc2dzdHIgInplaWd0IGlnbm9yaWVydGUgRGF0ZWllbiBpbiBkZXIgQXVzZ2FiZSBhbiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3NAorbXNnaWQgInNob3cgc3RhZ2VkIGNvbnRlbnRzJyBvYmplY3QgbmFtZSBpbiB0aGUgb3V0cHV0IgorbXNnc3RyICJ6ZWlndCBPYmpla3RuYW1lbiB2b24gSW5oYWx0ZW4gaW4gZGVyIEJlcmVpdHN0ZWxsdW5nIGluIGRlciBBdXNnYWJlIGFuIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc2Cittc2dpZCAic2hvdyBmaWxlcyBvbiB0aGUgZmlsZXN5c3RlbSB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZCIKK21zZ3N0ciAiemVpZ3QgRGF0ZWllbiBpbSBEYXRlaXN5c3RlbSwgZGllIGdlbMO2c2NodCB3ZXJkZW4gbcO8c3NlbiwgYW4iCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzgKK21zZ2lkICJzaG93ICdvdGhlcicgZGlyZWN0b3JpZXMnIG5hbWUgb25seSIKK21zZ3N0ciAiemVpZ3QgbnVyIE5hbWVuIHZvbiAnc29uc3RpZ2VuJyBWZXJ6ZWljaG5pc3NlbiBhbiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4MQorbXNnaWQgImRvbid0IHNob3cgZW1wdHkgZGlyZWN0b3JpZXMiCittc2dzdHIgInplaWd0IGtlaW5lIGxlZXJlbiBWZXJ6ZWljaG5pc3NlIGFuIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg0Cittc2dpZCAic2hvdyB1bm1lcmdlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgorbXNnc3RyICJ6ZWlndCBuaWNodCB6dXNhbW1lbmdlZsO8aHJ0ZSBEYXRlaWVuIGluIGRlciBBdXNnYWJlIGFuIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg2Cittc2dpZCAic2hvdyByZXNvbHZlLXVuZG8gaW5mb3JtYXRpb24iCittc2dzdHIgInplaWd0ICdyZXNvbHZlLXVuZG8nIEluZm9ybWF0aW9uZW4gYW4iCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODgKK21zZ2lkICJza2lwIGZpbGVzIG1hdGNoaW5nIHBhdHRlcm4iCittc2dzdHIgImzDpHNzdCBEYXRlaWVuIGF1cywgZGllIGVpbmVtIE11c3RlciBlbnRzcHJlY2hlbiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MQorbXNnaWQgImV4Y2x1ZGUgcGF0dGVybnMgYXJlIHJlYWQgZnJvbSA8ZmlsZT4iCittc2dzdHIgInNjaGxpZcOfdCBNdXN0ZXIsIGdlbGVzZW4gdm9uIDxEYXRlaT4sIGF1cyIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NAorbXNnaWQgInJlYWQgYWRkaXRpb25hbCBwZXItZGlyZWN0b3J5IGV4Y2x1ZGUgcGF0dGVybnMgaW4gPGZpbGU+IgorbXNnc3RyICJsaWVzdCB6dXPDpHR6bGljaGUgcHJvLVZlcnplaWNobmlzIEF1c2NobHVzc211c3RlciBhdXMgPERhdGVpPiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NgorbXNnaWQgImFkZCB0aGUgc3RhbmRhcmQgZ2l0IGV4Y2x1c2lvbnMiCittc2dzdHIgImbDvGd0IGRpZSBzdGFuZGFyZG3DpMOfaWdlbiBHaXQtQXVzc2NobMO8c3NlIGhpbnp1IgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDk5Cittc2dpZCAibWFrZSB0aGUgb3V0cHV0IHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHRvcCBkaXJlY3RvcnkiCittc2dzdHIgIkF1c2dhYmUgcmVsYXRpdiB6dW0gUHJvamVrdHZlcnplaWNobmlzIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTAyCittc2dpZCAiaWYgYW55IDxmaWxlPiBpcyBub3QgaW4gdGhlIGluZGV4LCB0cmVhdCB0aGlzIGFzIGFuIGVycm9yIgorbXNnc3RyICIiCisiYmVoYW5kbGUgZXMgYWxzIEZlaGxlciwgd2VubiBzaWNoIGVpbmUgPERhdGVpPiBuaWNodCBpbiBkZXIgQmVyZWl0c3RlbGx1bmcgIgorImJlZmluZGV0IgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTAzCittc2dpZCAidHJlZS1pc2giCittc2dzdHIgIlZlcnNpb25zcmVmZXJlbnoiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDQKK21zZ2lkICJwcmV0ZW5kIHRoYXQgcGF0aHMgcmVtb3ZlZCBzaW5jZSA8dHJlZS1pc2g+IGFyZSBzdGlsbCBwcmVzZW50IgorbXNnc3RyICIiCisiZ2lidCB2b3IsIGRhc3MgUGZhZGUsIGRpZSBzZWl0IDxWZXJzaW9uc3JlZmVyZW56PiBnZWzDtnNjaHQgd3VyZGVuLCBpbW1lciAiCisibm9jaCB2b3JoYW5kZW4gc2luZCIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjUwNgorbXNnaWQgInNob3cgZGVidWdnaW5nIGRhdGEiCittc2dzdHIgInplaWd0IEF1c2dhYmVuIHp1ciBGZWhsZXJzdWNoZSBhbiIKKworIzogYnVpbHRpbi9scy10cmVlLmM6MjcKK21zZ2lkICJnaXQgbHMtdHJlZSBbPG9wdGlvbnM+XSA8dHJlZS1pc2g+IFs8cGF0aD4uLi5dIgorbXNnc3RyICJnaXQgbHMtdHJlZSBbPE9wdGlvbmVuPl0gPFZlcnNpb25zcmVmZXJlbno+IFs8UGZhZD4uLi5dIgorCisjOiBidWlsdGluL2xzLXRyZWUuYzoxMjUKK21zZ2lkICJvbmx5IHNob3cgdHJlZXMiCittc2dzdHIgInplaWd0IG51ciBCw6R1bWUgYW4iCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjEyNworbXNnaWQgInJlY3Vyc2UgaW50byBzdWJ0cmVlcyIKK21zZ3N0ciAiZsO8aHJ0IFJla3Vyc2lvbiBpbiBUZWlsYsOkdW1lbiBkdXJjaCIKKworIzogYnVpbHRpbi9scy10cmVlLmM6MTI5Cittc2dpZCAic2hvdyB0cmVlcyB3aGVuIHJlY3Vyc2luZyIKK21zZ3N0ciAiemVpZ3QgQsOkdW1lIGJlaSBSZWt1cnNpb24gYW4iCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjEzMgorbXNnaWQgInRlcm1pbmF0ZSBlbnRyaWVzIHdpdGggTlVMIGJ5dGUiCittc2dzdHIgInNjaGxpZcOfdCBFaW50csOkZ2UgbWl0IE5VTC1CeXRlIGFiIgorCisjOiBidWlsdGluL2xzLXRyZWUuYzoxMzMKK21zZ2lkICJpbmNsdWRlIG9iamVjdCBzaXplIgorbXNnc3RyICJzY2hsaWXDn3QgT2JqZWt0Z3LDtsOfZSBlaW4iCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjEzNSBidWlsdGluL2xzLXRyZWUuYzoxMzcKK21zZ2lkICJsaXN0IG9ubHkgZmlsZW5hbWVzIgorbXNnc3RyICJsaXN0ZXQgbnVyIERhdGVpbmFtZW4gYXVmIgorCisjOiBidWlsdGluL2xzLXRyZWUuYzoxNDAKK21zZ2lkICJ1c2UgZnVsbCBwYXRoIG5hbWVzIgorbXNnc3RyICJ2ZXJ3ZW5kZXQgdm9sbHN0w6RuZGlnZSBQZmFkbmFtZW4iCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjE0MgorbXNnaWQgImxpc3QgZW50aXJlIHRyZWU7IG5vdCBqdXN0IGN1cnJlbnQgZGlyZWN0b3J5IChpbXBsaWVzIC0tZnVsbC1uYW1lKSIKK21zZ3N0ciAiIgorImxpc3RldCBkZW4gZ2VzYW10ZW4gQmF1bSBhdWY7IG5pY2h0IG51ciBkYXMgYWt0dWVsbGUgVmVyemVpY2huaXMgKGltcGxpemllcnQgIgorIi0tZnVsbC1uYW1lKSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjQzCittc2dpZCAiZ2l0IG1lcmdlIFtvcHRpb25zXSBbPGNvbW1pdD4uLi5dIgorbXNnc3RyICJnaXQgbWVyZ2UgW09wdGlvbmVuXSBbPFZlcnNpb24+Li4uXSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjQ0Cittc2dpZCAiZ2l0IG1lcmdlIFtvcHRpb25zXSA8bXNnPiBIRUFEIDxjb21taXQ+IgorbXNnc3RyICJnaXQgbWVyZ2UgW09wdGlvbmVuXSA8QmVzY2hyZWlidW5nPiBIRUFEIDxWZXJzaW9uPiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjQ1Cittc2dpZCAiZ2l0IG1lcmdlIC0tYWJvcnQiCittc2dzdHIgImdpdCBtZXJnZSAtLWFib3J0IgorCiAjOiBidWlsdGluL21lcmdlLmM6OTAKIG1zZ2lkICJzd2l0Y2ggYG0nIHJlcXVpcmVzIGEgdmFsdWUiCiBtc2dzdHIgIlNjaGFsdGVyICdtJyBlcmZvcmRlcnQgZWluZW4gV2VydC4iCkBAIC0zNDUwLDI2MSArNjMyNCw0NTEgQEAKIG1zZ2lkICJBdmFpbGFibGUgY3VzdG9tIHN0cmF0ZWdpZXMgYXJlOiIKIG1zZ3N0ciAiVmVyZsO8Z2JhcmUgYmVudXR6ZXJkZWZpbmllcnRlIFN0cmF0ZWdpZW4gc2luZDoiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxODMKK21zZ2lkICJkbyBub3Qgc2hvdyBhIGRpZmZzdGF0IGF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlIgorbXNnc3RyICIiCisiemVpZ3Qga2VpbmUgWnVzYW1tZW5mYXNzdW5nIGRlciBVbnRlcnNjaGllZGUgYW0gU2NobHVzcyBkZXIgWnVzYW1tZW5mw7xocnVuZyAiCisiYW4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxODYKK21zZ2lkICJzaG93IGEgZGlmZnN0YXQgYXQgdGhlIGVuZCBvZiB0aGUgbWVyZ2UiCittc2dzdHIgIiIKKyJ6ZWlndCBlaW5lIFp1c2FtbWVuZmFzc3VuZyBkZXIgVW50ZXJzY2hpZWRlIGFtIFNjaGx1c3MgZGVyIFp1c2FtbWVuZsO8aHJ1bmcgYW4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxODcKK21zZ2lkICIoc3lub255bSB0byAtLXN0YXQpIgorbXNnc3RyICIoU3lub255bSBmw7xyIC0tc3RhdCkiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxODkKK21zZ2lkICJhZGQgKGF0IG1vc3QgPG4+KSBlbnRyaWVzIGZyb20gc2hvcnRsb2cgdG8gbWVyZ2UgY29tbWl0IG1lc3NhZ2UiCittc2dzdHIgIiIKKyJmw7xndCAoaMO2Y2hzdGVucyA8bj4pIEVpbnRyw6RnZSB2b24gXCJzaG9ydGxvZ1wiIHp1ciBCZXNjaHJlaWJ1bmcgZGVyICIKKyJadXNhbW1lbmbDvGhydW5nIGhpbnp1IgorCisjOiBidWlsdGluL21lcmdlLmM6MTkyCittc2dpZCAiY3JlYXRlIGEgc2luZ2xlIGNvbW1pdCBpbnN0ZWFkIG9mIGRvaW5nIGEgbWVyZ2UiCittc2dzdHIgImVyemV1Z3QgZWluZSBlaW56ZWxuZSBWZXJzaW9uIGFuc3RhdHQgZWluZXIgWnVzYW1tZW5mw7xocnVuZyIKKworIzogYnVpbHRpbi9tZXJnZS5jOjE5NAorbXNnaWQgInBlcmZvcm0gYSBjb21taXQgaWYgdGhlIG1lcmdlIHN1Y2NlZWRzIChkZWZhdWx0KSIKK21zZ3N0ciAiIgorImbDvGhydCBlaW5lIEVpbnRyYWd1bmcgZHVyY2gsIHdlbm4gZGllIFp1c2FtbWVuZsO8aHJ1bmcgZXJmb2xncmVpY2ggd2FyICIKKyIoU3RhbmRhcmQpIgorCisjOiBidWlsdGluL21lcmdlLmM6MTk2Cittc2dpZCAiZWRpdCBtZXNzYWdlIGJlZm9yZSBjb21taXR0aW5nIgorbXNnc3RyICJCZWFyYmVpdHVuZyBkZXIgVmVyc2lvbnNiZXNjaHJlaWJ1bmcgdm9yIGRlciBFaW50cmFndW5nIgorCisjOiBidWlsdGluL21lcmdlLmM6MTk4Cittc2dpZCAiYWxsb3cgZmFzdC1mb3J3YXJkIChkZWZhdWx0KSIKK21zZ3N0ciAiZXJsYXVidCBWb3JzcHVsZW4gKFN0YW5kYXJkKSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjIwMAorbXNnaWQgImFib3J0IGlmIGZhc3QtZm9yd2FyZCBpcyBub3QgcG9zc2libGUiCittc2dzdHIgImJyaWNodCBhYiwgd2VubiBrZWluIFZvcnNwdWxlbiBtw7ZnbGljaCBpc3QiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDMKK21zZ2lkICJWZXJpZnkgdGhhdCB0aGUgbmFtZWQgY29tbWl0IGhhcyBhIHZhbGlkIEdQRyBzaWduYXR1cmUiCittc2dzdHIgIsO8YmVycHLDvGZ0IGRpZSBnZW5hbm50ZSBWZXJzaW9uIGF1ZiBlaW5lIGfDvGx0aWdlIEdQRy1TaWduYXR1ciIKKworIzogYnVpbHRpbi9tZXJnZS5jOjIwNCBidWlsdGluL25vdGVzLmM6ODY2IGJ1aWx0aW4vcmV2ZXJ0LmM6MTEyCittc2dpZCAic3RyYXRlZ3kiCittc2dzdHIgIlN0cmF0ZWdpZSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjIwNQorbXNnaWQgIm1lcmdlIHN0cmF0ZWd5IHRvIHVzZSIKK21zZ3N0ciAienUgdmVyd2VuZGVuZGUgWnVzYW1tZW5mw7xocnVuZ3NzdHJhdGVnaWUiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDYKK21zZ2lkICJvcHRpb249dmFsdWUiCittc2dzdHIgIk9wdGlvbj1XZXJ0IgorCisjOiBidWlsdGluL21lcmdlLmM6MjA3Cittc2dpZCAib3B0aW9uIGZvciBzZWxlY3RlZCBtZXJnZSBzdHJhdGVneSIKK21zZ3N0ciAiT3B0aW9uIGbDvHIgYXVzZ2V3w6RobHRlIFp1c2FtbWVuZsO8aHJ1bmdzc3RyYXRlZ2llIgorCisjOiBidWlsdGluL21lcmdlLmM6MjA5Cittc2dpZCAibWVyZ2UgY29tbWl0IG1lc3NhZ2UgKGZvciBhIG5vbi1mYXN0LWZvcndhcmQgbWVyZ2UpIgorbXNnc3RyICIiCisiZsO8aHJ0IFZlcnNpb25zYmVzY2hyZWlidW5nIHp1c2FtbWVuIChmw7xyIGVpbmUgWnVzYW1tZW5mw7xocnVuZywgZGllIGtlaW4gIgorIlZvcnNwdWxlbiB3YXIpIgorCisjOiBidWlsdGluL21lcmdlLmM6MjEzCittc2dpZCAiYWJvcnQgdGhlIGN1cnJlbnQgaW4tcHJvZ3Jlc3MgbWVyZ2UiCittc2dzdHIgImJyaWNodCBkaWUgc2ljaCBpbSBHYW5nZSBiZWZpbmRsaWNoZSBadXNhbW1lbmbDvGhydW5nIGFiIgorCisjOiBidWlsdGluL21lcmdlLmM6MjQyCiBtc2dpZCAiY291bGQgbm90IHJ1biBzdGFzaC4iCiBtc2dzdHIgIktvbm50ZSBcInN0YXNoXCIgbmljaHQgYXVzZsO8aHJlbi4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDcKIG1zZ2lkICJzdGFzaCBmYWlsZWQiCiBtc2dzdHIgIlwic3Rhc2hcIiBmZWhsZ2VzY2hsYWdlbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI1MAorIzogYnVpbHRpbi9tZXJnZS5jOjI1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJub3QgYSB2YWxpZCBvYmplY3Q6ICVzIgogbXNnc3RyICJrZWluIGfDvGx0aWdlcyBPYmpla3Q6ICVzIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjY5IGJ1aWx0aW4vbWVyZ2UuYzoyODYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNzEgYnVpbHRpbi9tZXJnZS5jOjI4OAogbXNnaWQgInJlYWQtdHJlZSBmYWlsZWQiCiBtc2dzdHIgInJlYWQtdHJlZSBmZWhsZ2VzY2hsYWdlbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjMxNgorIzogYnVpbHRpbi9tZXJnZS5jOjMxOAogbXNnaWQgIiAobm90aGluZyB0byBzcXVhc2gpIgogbXNnc3RyICIgKG5pY2h0cyB6dSBxdWV0c2NoZW4pIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzI5CisjOiBidWlsdGluL21lcmdlLmM6MzMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlNxdWFzaCBjb21taXQgLS0gbm90IHVwZGF0aW5nIEhFQURcbiIKIG1zZ3N0ciAiUXVldHNjaGUgVmVyc2lvbiAtLSBad2VpZ3NwaXR6ZSAoSEVBRCkgd2lyZCBuaWNodCBha3R1YWxpc2llcnRcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM2MQorIzogYnVpbHRpbi9tZXJnZS5jOjM2MwogbXNnaWQgIldyaXRpbmcgU1FVQVNIX01TRyIKIG1zZ3N0ciAiU2NocmVpYmUgU1FVQVNIX01TRyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM2MworIzogYnVpbHRpbi9tZXJnZS5jOjM2NQogbXNnaWQgIkZpbmlzaGluZyBTUVVBU0hfTVNHIgogbXNnc3RyICJTY2hsaWXDn2UgU1FVQVNIX01TRyBhYiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM4NgorIzogYnVpbHRpbi9tZXJnZS5jOjM4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBtZXJnZSBtZXNzYWdlIC0tIG5vdCB1cGRhdGluZyBIRUFEXG4iCiBtc2dzdHIgIiIKICJLZWluZSBadXNhbW1lbmbDvGhydW5nc2Jlc2NocmVpYnVuZyAtLSBad2VpZ3NwaXR6ZSAoSEVBRCkgd2lyZCBuaWNodCAiCiAiYWt0dWFsaXNpZXJ0XG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo0MzcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo0MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBkb2VzIG5vdCBwb2ludCB0byBhIGNvbW1pdCIKIG1zZ3N0ciAiJyVzJyB6ZWlndCBhdWYga2VpbmUgVmVyc2lvbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjUzNgorIzogYnVpbHRpbi9tZXJnZS5jOjU1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJCYWQgYnJhbmNoLiVzLm1lcmdlb3B0aW9ucyBzdHJpbmc6ICVzIgogbXNnc3RyICJVbmfDvGx0aWdlciBicmFuY2guJXMubWVyZ2VvcHRpb25zIFN0cmluZzogJXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo2MjkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo2NDMKIG1zZ2lkICJnaXQgd3JpdGUtdHJlZSBmYWlsZWQgdG8gd3JpdGUgYSB0cmVlIgogbXNnc3RyICJcImdpdCB3cml0ZS10cmVlXCIgc2NobHVnIGJlaW0gU2NocmVpYmVuIGVpbmVzIEJhdW1lcyBmZWhsIgogCi0jOiBidWlsdGluL21lcmdlLmM6Njc5Ci1tc2dpZCAiZmFpbGVkIHRvIHJlYWQgdGhlIGNhY2hlIgotbXNnc3RyICJMZXNlbiBkZXMgWndpc2NoZW5zcGVpY2hlcnMgZmVobGdlc2NobGFnZW4iCi0KLSM6IGJ1aWx0aW4vbWVyZ2UuYzo2OTcKLW1zZ2lkICJVbmFibGUgdG8gd3JpdGUgaW5kZXguIgotbXNnc3RyICJLb25udGUgQmVyZWl0c3RlbGx1bmcgbmljaHQgc2NocmVpYmVuLiIKLQotIzogYnVpbHRpbi9tZXJnZS5jOjcxMAorIzogYnVpbHRpbi9tZXJnZS5jOjY3MQogbXNnaWQgIk5vdCBoYW5kbGluZyBhbnl0aGluZyBvdGhlciB0aGFuIHR3byBoZWFkcyBtZXJnZS4iCiBtc2dzdHIgIkVzIHdpcmQgbnVyIGRpZSBadXNhbW1lbmbDvGhydW5nIHZvbiB6d2VpIFp3ZWlnZW4gYmVoYW5kZWx0LiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjcyNAorIzogYnVpbHRpbi9tZXJnZS5jOjY4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIG9wdGlvbiBmb3IgbWVyZ2UtcmVjdXJzaXZlOiAtWCVzIgogbXNnc3RyICJVbmJla2FubnRlIE9wdGlvbiBmw7xyIG1lcmdlLXJlY3Vyc2l2ZTogLVglcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjczOAorIzogYnVpbHRpbi9tZXJnZS5jOjY5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgJXMiCiBtc2dzdHIgImtvbm50ZSAlcyBuaWNodCBzY2hyZWliZW4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4NzcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo3ODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlYWQgZnJvbSAnJXMnIgogbXNnc3RyICJrb25udGUgbmljaHQgdm9uICclcycgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4ODYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo3OTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGNvbW1pdHRpbmcgbWVyZ2U7IHVzZSAnZ2l0IGNvbW1pdCcgdG8gY29tcGxldGUgdGhlIG1lcmdlLlxuIgogbXNnc3RyICIiCi0iWnVzYW1tZW5mw7xocnVuZyB3dXJkZSBuaWNodCBlaW5nZXRyYWdlbjsgYmVudXR6ZSAnZ2l0IGNvbW1pdCcgdW0gZGllICIKKyJadXNhbW1lbmbDvGhydW5nIHd1cmRlIG5pY2h0IGVpbmdldHJhZ2VuOyBiZW51dHplbiBTaWUgJ2dpdCBjb21taXQnIHVtIGRpZSAiCiAiWnVzYW1tZW5mw7xocnVuZyBhYnp1c2NobGllw59lbi5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjg5MgorIzogYnVpbHRpbi9tZXJnZS5jOjgwMworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiUGxlYXNlIGVudGVyIGEgY29tbWl0IG1lc3NhZ2UgdG8gZXhwbGFpbiB3aHkgdGhpcyBtZXJnZSBpcyBuZWNlc3NhcnksXG4iCiAiZXNwZWNpYWxseSBpZiBpdCBtZXJnZXMgYW4gdXBkYXRlZCB1cHN0cmVhbSBpbnRvIGEgdG9waWMgYnJhbmNoLlxuIgogIlxuIgotIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzXG4iCisiTGluZXMgc3RhcnRpbmcgd2l0aCAnJWMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzXG4iCiAidGhlIGNvbW1pdC5cbiIKIG1zZ3N0ciAiIgotIkJpdHRlIGdlYmUgZWluZSBWZXJzaW9uc2Jlc2NocmVpYnVuZyBlaW4gdW0genUgZXJrbMOkcmVuLCB3YXJ1bSBkaWVzZSAiCisiQml0dGUgZ2ViZW4gU2llIGVpbmUgVmVyc2lvbnNiZXNjaHJlaWJ1bmcgZWluIHVtIHp1IGVya2zDpHJlbiwgd2FydW0gZGllc2UgIgogIlp1c2FtbWVuZsO8aHJ1bmcgZXJmb3JkZXJsaWNoIGlzdCxcbiIKICJpbnNiZXNvbmRlcmUgd2VubiBlcyBlaW5lbiBha3R1YWxpc2llcnRlbiwgZXh0ZXJuZW4gWndlaWcgbWl0IGVpbmVtIFRoZW1hLSIKICJad2VpZyB6dXNhbW1lbmbDvGhydC5cbiIKICJcbiIKLSJaZWlsZW4gYmVnaW5uZW5kIG1pdCAnIycgd2VyZGVuIGlnbm9yaWVydCwgdW5kIGVpbmUgbGVlcmUgQmVzY2hyZWlidW5nICIKKyJaZWlsZW4gYmVnaW5uZW5kIG1pdCAnJWMnIHdlcmRlbiBpZ25vcmllcnQsIHVuZCBlaW5lIGxlZXJlIEJlc2NocmVpYnVuZyAiCiAiYnJpY2h0IGRpZSBFaW50cmFndW5nIGFiLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTE2CisjOiBidWlsdGluL21lcmdlLmM6ODI3CiBtc2dpZCAiRW1wdHkgY29tbWl0IG1lc3NhZ2UuIgogbXNnc3RyICJMZWVyZSBWZXJzaW9uc2Jlc2NocmVpYnVuZyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjkyOAorIzogYnVpbHRpbi9tZXJnZS5jOjgzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJXb25kZXJmdWwuXG4iCiBtc2dzdHIgIld1bmRlcmJhci5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjk5MworIzogYnVpbHRpbi9tZXJnZS5jOjkwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJBdXRvbWF0aWMgbWVyZ2UgZmFpbGVkOyBmaXggY29uZmxpY3RzIGFuZCB0aGVuIGNvbW1pdCB0aGUgcmVzdWx0LlxuIgogbXNnc3RyICIiCi0iQXV0b21hdGlzY2hlIFp1c2FtbWVuZsO8aHJ1bmcgZmVobGdlc2NobGFnZW47IGJlaGViZSBkaWUgS29uZmxpa3RlIHVuZCB0cmFnZSAiCi0iZGFubiBkYXMgRXJnZWJuaXMgZWluLlxuIgorIkF1dG9tYXRpc2NoZSBadXNhbW1lbmbDvGhydW5nIGZlaGxnZXNjaGxhZ2VuOyBiZWhlYmVuIFNpZSBkaWUgS29uZmxpa3RlIHVuZCAiCisidHJhZ2VuIFNpZSBkYW5uIGRhcyBFcmdlYm5pcyBlaW4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDA5CisjOiBidWlsdGluL21lcmdlLmM6OTIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgaXMgbm90IGEgY29tbWl0IgogbXNnc3RyICInJXMnIGlzdCBrZWluZSBWZXJzaW9uIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTA1MAorIzogYnVpbHRpbi9tZXJnZS5jOjk2MQogbXNnaWQgIk5vIGN1cnJlbnQgYnJhbmNoLiIKLW1zZ3N0ciAiRHUgYmVmaW5kZXN0IGRpY2ggYXVmIGtlaW5lbSBad2VpZy4iCittc2dzdHIgIlNpZSBiZWZpbmRlbiBzaWNoIGF1ZiBrZWluZW0gWndlaWcuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTA1MgorIzogYnVpbHRpbi9tZXJnZS5jOjk2MwogbXNnaWQgIk5vIHJlbW90ZSBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAiS2VpbiBleHRlcm5lcyBBcmNoaXYgZsO8ciBkZW4gYWt0dWVsbGVuIFp3ZWlnLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEwNTQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NjUKIG1zZ2lkICJObyBkZWZhdWx0IHVwc3RyZWFtIGRlZmluZWQgZm9yIHRoZSBjdXJyZW50IGJyYW5jaC4iCiBtc2dzdHIgIiIKICJFcyBpc3Qga2VpbiBleHRlcm5lcyBTdGFuZGFyZC1Qcm9qZWt0YXJjaGl2IGbDvHIgZGVuIGFrdHVlbGxlbiBad2VpZyAiCiAiZGVmaW5pZXJ0LiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEwNTkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gcmVtb3RlIHRyYWNraW5nIGJyYW5jaCBmb3IgJXMgZnJvbSAlcyIKIG1zZ3N0ciAiS2VpbiBleHRlcm5lciDDnGJlcm5haG1lendlaWcgZsO8ciAlcyB2b24gJXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQ2IGJ1aWx0aW4vbWVyZ2UuYzoxMzAzCisjOiBidWlsdGluL21lcmdlLmM6MTA1NyBidWlsdGluL21lcmdlLmM6MTIxNAogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyAtIG5vdCBzb21ldGhpbmcgd2UgY2FuIG1lcmdlIgogbXNnc3RyICIlcyAtIG5pY2h0cyB3YXMgd2lyIHp1c2FtbWVuZsO8aHJlbiBrw7ZubmVuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIxNAorIzogYnVpbHRpbi9tZXJnZS5jOjExMjUKIG1zZ2lkICJUaGVyZSBpcyBubyBtZXJnZSB0byBhYm9ydCAoTUVSR0VfSEVBRCBtaXNzaW5nKS4iCiBtc2dzdHIgIkVzIGdpYnQga2VpbmUgWnVzYW1tZW5mw7xocnVuZyB6dW0gQWJicmVjaGVuICh2ZXJtaXNzZSBNRVJHRV9IRUFEKSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyMzAgZ2l0LXB1bGwuc2g6MzEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQxIGdpdC1wdWxsLnNoOjMxCiBtc2dpZCAiIgogIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBtZXJnZSAoTUVSR0VfSEVBRCBleGlzdHMpLlxuIgogIlBsZWFzZSwgY29tbWl0IHlvdXIgY2hhbmdlcyBiZWZvcmUgeW91IGNhbiBtZXJnZS4iCiBtc2dzdHIgIiIKLSJEdSBoYXN0IGRlaW5lIFp1c2FtbWVuZsO8aHJ1bmcgbmljaHQgYWJnZXNjaGxvc3NlbiAoTUVSR0VfSEVBRCBleGlzdGllcnQpLlxuIgotIkJpdHRlIHRyYWdlIGRlaW5lIMOEbmRlcnVuZ2VuIGVpbiwgYmV2b3IgZHUgenVzYW1tZW5mw7xocmVuIGthbm5zdC4iCisiU2llIGhhYmVuIElocmUgWnVzYW1tZW5mw7xocnVuZyBuaWNodCBhYmdlc2NobG9zc2VuIChNRVJHRV9IRUFEIGV4aXN0aWVydCkuXG4iCisiQml0dGUgdHJhZ2VuIFNpZSBJaHJlIMOEbmRlcnVuZ2VuIGVpbiwgYmV2b3IgU2llIHp1c2FtbWVuZsO8aHJlbiBrw7ZubmVuLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyMzMgZ2l0LXB1bGwuc2g6MzQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQ0IGdpdC1wdWxsLnNoOjM0CiBtc2dpZCAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIG1lcmdlIChNRVJHRV9IRUFEIGV4aXN0cykuIgogbXNnc3RyICIiCi0iRHUgaGFzdCBkZWluZSBadXNhbW1lbmbDvGhydW5nIG5pY2h0IGFiZ2VzY2hsb3NzZW4gKE1FUkdFX0hFQUQgZXhpc3RpZXJ0KS4iCisiU2llIGhhYmVuIElocmUgWnVzYW1tZW5mw7xocnVuZyBuaWNodCBhYmdlc2NobG9zc2VuIChNRVJHRV9IRUFEIGV4aXN0aWVydCkuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIzNworIzogYnVpbHRpbi9tZXJnZS5jOjExNDgKIG1zZ2lkICIiCiAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIGNoZXJyeS1waWNrIChDSEVSUllfUElDS19IRUFEIGV4aXN0cykuXG4iCiAiUGxlYXNlLCBjb21taXQgeW91ciBjaGFuZ2VzIGJlZm9yZSB5b3UgY2FuIG1lcmdlLiIKIG1zZ3N0ciAiIgotIkR1IGhhc3QgXCJjaGVycnktcGlja1wiIG5pY2h0IGFiZ2VzY2hsb3NzZW4gKENIRVJSWV9QSUNLX0hFQUQgZXhpc3RpZXJ0KS5cbiIKLSJCaXR0ZSB0cmFnZSBkZWluZSDDhG5kZXJ1bmdlbiBlaW4sIGJldm9yIGR1IHp1c2FtbWVuZsO8aHJlbiBrYW5uc3QuIgorIlNpZSBoYWJlbiBcImNoZXJyeS1waWNrXCIgbmljaHQgYWJnZXNjaGxvc3NlbiAoQ0hFUlJZX1BJQ0tfSEVBRCBleGlzdGllcnQpLlxuIgorIkJpdHRlIHRyYWdlbiBTaWUgSWhyZSDDhG5kZXJ1bmdlbiBlaW4sIGJldm9yIFNpZSB6dXNhbW1lbmbDvGhyZW4ga8O2bm5lbi4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjQwCisjOiBidWlsdGluL21lcmdlLmM6MTE1MQogbXNnaWQgIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBjaGVycnktcGljayAoQ0hFUlJZX1BJQ0tfSEVBRCBleGlzdHMpLiIKIG1zZ3N0ciAiIgotIkR1IGhhc3QgXCJjaGVycnktcGlja1wiIG5pY2h0IGFiZ2VzY2hsb3NzZW4gKENIRVJSWV9QSUNLX0hFQUQgZXhpc3RpZXJ0KS4iCisiU2llIGhhYmVuIFwiY2hlcnJ5LXBpY2tcIiBuaWNodCBhYmdlc2NobG9zc2VuIChDSEVSUllfUElDS19IRUFEIGV4aXN0aWVydCkuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI0OQorIzogYnVpbHRpbi9tZXJnZS5jOjExNjAKIG1zZ2lkICJZb3UgY2Fubm90IGNvbWJpbmUgLS1zcXVhc2ggd2l0aCAtLW5vLWZmLiIKLW1zZ3N0ciAiRHUga2FubnN0IC0tc3F1YXNoIG5pY2h0IG1pdCAtLW5vLWZmIGtvbWJpbmllcmVuLiIKK21zZ3N0ciAiU2llIGvDtm5uZW4gLS1zcXVhc2ggbmljaHQgbWl0IC0tbm8tZmYga29tYmluaWVyZW4uIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI1NAorIzogYnVpbHRpbi9tZXJnZS5jOjExNjUKIG1zZ2lkICJZb3UgY2Fubm90IGNvbWJpbmUgLS1uby1mZiB3aXRoIC0tZmYtb25seS4iCi1tc2dzdHIgIkR1IGthbm5zdCAtLW5vLWZmIG5pY2h0IG1pdCAtLWZmLS1vbmx5IGtvbWJpbmllcmVuLiIKK21zZ3N0ciAiU2llIGvDtm5uZW4gLS1uby1mZiBuaWNodCBtaXQgLS1mZi0tb25seSBrb21iaW5pZXJlbi4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjYxCisjOiBidWlsdGluL21lcmdlLmM6MTE3MgogbXNnaWQgIk5vIGNvbW1pdCBzcGVjaWZpZWQgYW5kIG1lcmdlLmRlZmF1bHRUb1Vwc3RyZWFtIG5vdCBzZXQuIgogbXNnc3RyICJLZWluZSBWZXJzaW9uIGFuZ2VnZWJlbiB1bmQgbWVyZ2UuZGVmYXVsdFRvVXBzdHJlYW0gaXN0IG5pY2h0IGdlc2V0enQuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI5MworIzogYnVpbHRpbi9tZXJnZS5jOjEyMDQKIG1zZ2lkICJDYW4gbWVyZ2Ugb25seSBleGFjdGx5IG9uZSBjb21taXQgaW50byBlbXB0eSBoZWFkIgogbXNnc3RyICJLYW5uIG51ciBleGFrdCBlaW5lIFZlcnNpb24gaW4gZWluZW0gbGVlcmVuIFp3ZWlnIHp1c2FtbWVuZsO8aHJlbi4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjk2CisjOiBidWlsdGluL21lcmdlLmM6MTIwNwogbXNnaWQgIlNxdWFzaCBjb21taXQgaW50byBlbXB0eSBoZWFkIG5vdCBzdXBwb3J0ZWQgeWV0IgogbXNnc3RyICJCaW4gYXVmIGVpbmVtIFp3ZWlnLCBkZXIgbm9jaCBnZWJvcmVuIHdpcmQ7IGthbm4gbmljaHQgcXVldHNjaGVuLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyOTgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA5CiBtc2dpZCAiTm9uLWZhc3QtZm9yd2FyZCBjb21taXQgZG9lcyBub3QgbWFrZSBzZW5zZSBpbnRvIGFuIGVtcHR5IGhlYWQiCi1tc2dzdHIgIm5pY2h0IHZvcnp1c3B1bGVuZGUgVmVyc2lvbiBtYWNodCBpbiBlaW5lbSBsZWVyZW4gWndlaWcga2VpbmVuIFNpbm4iCittc2dzdHIgIiIKKyJOaWNodCB2b3J6dXNwdWxlbmRlIFZlcnNpb24ga2FubiBuaWNodCBpbiBlaW5lbSBsZWVyZW4gWndlaWcgdmVyd2VuZGV0ICIKKyJ3ZXJkZW4uIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQxMworIzogYnVpbHRpbi9tZXJnZS5jOjEyNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29tbWl0ICVzIGhhcyBhbiB1bnRydXN0ZWQgR1BHIHNpZ25hdHVyZSwgYWxsZWdlZGx5IGJ5ICVzLiIKK21zZ3N0ciAiIgorIlZlcnNpb24gJXMgaGF0IGVpbmUgbmljaHQgdmVydHJhdWVuc3fDvHJkaWdlIEdQRy1TaWduYXR1ciwgYW5nZWJsaWNoIHZvbiAlcy4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjY4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBoYXMgYSBiYWQgR1BHIHNpZ25hdHVyZSBhbGxlZ2VkbHkgYnkgJXMuIgorbXNnc3RyICJWZXJzaW9uICVzIGhhdCBlaW5lIHVuZ8O8bHRpZ2UgR1BHLVNpZ25hdHVyLCBhbmdlYmxpY2ggdm9uICVzLiIKKworIy4gJ04nCisjOiBidWlsdGluL21lcmdlLmM6MTI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJDb21taXQgJXMgZG9lcyBub3QgaGF2ZSBhIEdQRyBzaWduYXR1cmUuIgorbXNnc3RyICJWZXJzaW9uICVzIGhhdCBrZWluZSBHUEctU2lnbmF0dXIuIgorCisjOiBidWlsdGluL21lcmdlLmM6MTI3NAorIywgYy1mb3JtYXQKK21zZ2lkICJDb21taXQgJXMgaGFzIGEgZ29vZCBHUEcgc2lnbmF0dXJlIGJ5ICVzXG4iCittc2dzdHIgIlZlcnNpb24gJXMgaGF0IGVpbmUgZ8O8bHRpZ2UgR1BHLVNpZ25hdHVyIHZvbiAlc1xuIgorCisjOiBidWlsdGluL21lcmdlLmM6MTM1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJVcGRhdGluZyAlcy4uJXNcbiIKIG1zZ3N0ciAiQWt0dWFsaXNpZXJlICVzLi4lc1xuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQ1MQorIzogYnVpbHRpbi9tZXJnZS5jOjEzOTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiVHJ5aW5nIHJlYWxseSB0cml2aWFsIGluLWluZGV4IG1lcmdlLi4uXG4iCiBtc2dzdHIgIlByb2JpZXJlIHdpcmtsaWNoIHRyaXZpYWxlIFwiaW4taW5kZXhcIi1adXNhbW1lbmbDvGhydW5nLi4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDU4CisjOiBidWlsdGluL21lcmdlLmM6MTQwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3BlLlxuIgogbXNnc3RyICJOZWluLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQ5MAorIzogYnVpbHRpbi9tZXJnZS5jOjE0MzYKIG1zZ2lkICJOb3QgcG9zc2libGUgdG8gZmFzdC1mb3J3YXJkLCBhYm9ydGluZy4iCiBtc2dzdHIgIlZvcnNwdWxlbiBuaWNodCBtw7ZnbGljaCwgYnJlY2hlIGFiLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE1MTMgYnVpbHRpbi9tZXJnZS5jOjE1OTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDU5IGJ1aWx0aW4vbWVyZ2UuYzoxNTM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJld2luZGluZyB0aGUgdHJlZSB0byBwcmlzdGluZS4uLlxuIgogbXNnc3RyICJSw7xja2xhdWYgZGVzIFp3ZWlnZXMgYmlzIHp1bSBVcnNwcnVuZy4uLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTUxNworIzogYnVpbHRpbi9tZXJnZS5jOjE0NjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiVHJ5aW5nIG1lcmdlIHN0cmF0ZWd5ICVzLi4uXG4iCiBtc2dzdHIgIlByb2JpZXJlIFp1c2FtbWVuZsO8aHJ1bmdzc3RyYXRlZ2llICVzLi4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTgzCisjOiBidWlsdGluL21lcmdlLmM6MTUyOQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBtZXJnZSBzdHJhdGVneSBoYW5kbGVkIHRoZSBtZXJnZS5cbiIKIG1zZ3N0ciAiS2VpbmUgWnVzYW1tZW5mw7xocnVuZ3NzdHJhdGVnaWUgYmVoYW5kZWx0IGRpZXNlIFp1c2FtbWVuZsO8aHJ1bmcuXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTg1CisjOiBidWlsdGluL21lcmdlLmM6MTUzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJNZXJnZSB3aXRoIHN0cmF0ZWd5ICVzIGZhaWxlZC5cbiIKIG1zZ3N0ciAiWnVzYW1tZW5mw7xocnVuZyBtaXQgU3RyYXRlZ2llICVzIGZlaGxnZXNjaGxhZ2VuLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTU5NAorIzogYnVpbHRpbi9tZXJnZS5jOjE1NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNpbmcgdGhlICVzIHRvIHByZXBhcmUgcmVzb2x2aW5nIGJ5IGhhbmQuXG4iCi1tc2dzdHIgIkJlbnV0emUgXCIlc1wiIHVtIGRpZSBBdWZsw7ZzdW5nIHBlciBIYW5kIHZvcnp1YmVyZWl0ZW4uXG4iCittc2dzdHIgIkJlbnV0emVuIFNpZSBcIiVzXCIgdW0gZGllIEF1ZmzDtnN1bmcgcGVyIEhhbmQgdm9yenViZXJlaXRlbi5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE2MDYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkF1dG9tYXRpYyBtZXJnZSB3ZW50IHdlbGw7IHN0b3BwZWQgYmVmb3JlIGNvbW1pdHRpbmcgYXMgcmVxdWVzdGVkXG4iCiBtc2dzdHIgIiIKICJBdXRvbWF0aXNjaGUgWnVzYW1tZW5mw7xocnVuZyBhYmdlc2NobG9zc2VuOyBoYWx0ZSwgd2llIGdld8O8bnNjaHQsIHZvciBkZXIgIgogIkVpbnRyYWd1bmcgYW5cbiIKIAorIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6MjYKK21zZ2lkICJnaXQgbWVyZ2UtYmFzZSBbLWF8LS1hbGxdIDxjb21taXQ+IDxjb21taXQ+Li4uIgorbXNnc3RyICJnaXQgbWVyZ2UtYmFzZSBbLWF8LS1hbGxdIDxWZXJzaW9uPiA8VmVyc2lvbj4uLi4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjI3Cittc2dpZCAiZ2l0IG1lcmdlLWJhc2UgWy1hfC0tYWxsXSAtLW9jdG9wdXMgPGNvbW1pdD4uLi4iCittc2dzdHIgImdpdCBtZXJnZS1iYXNlIFstYXwtLWFsbF0gLS1vY3RvcHVzIDxWZXJzaW9uPi4uLiIKKworIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6MjgKK21zZ2lkICJnaXQgbWVyZ2UtYmFzZSAtLWluZGVwZW5kZW50IDxjb21taXQ+Li4uIgorbXNnc3RyICJnaXQgbWVyZ2UtYmFzZSAtLWluZGVwZW5kZW50IDxWZXJzaW9uPi4uLiIKKworIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6MjkKK21zZ2lkICJnaXQgbWVyZ2UtYmFzZSAtLWlzLWFuY2VzdG9yIDxjb21taXQ+IDxjb21taXQ+IgorbXNnc3RyICJnaXQgbWVyZ2UtYmFzZSAtLWlzLWFuY2VzdG9yIDxWZXJzaW9uPiA8VmVyc2lvbj4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjk4Cittc2dpZCAib3V0cHV0IGFsbCBjb21tb24gYW5jZXN0b3JzIgorbXNnc3RyICJBdXNnYWJlIGFsbGVyIGdlbWVpbnNhbWVuIFZvcmZhaHJlbiIKKworIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6OTkKK21zZ2lkICJmaW5kIGFuY2VzdG9ycyBmb3IgYSBzaW5nbGUgbi13YXkgbWVyZ2UiCittc2dzdHIgImZpbmRldCBWb3JmYWhyZW4gZsO8ciBlaW5lIGVpbnplbG5lIG4tV2VnZS1adXNhbW1lbmbDvGhydW5nIgorCisjOiBidWlsdGluL21lcmdlLWJhc2UuYzoxMDAKK21zZ2lkICJsaXN0IHJldnMgbm90IHJlYWNoYWJsZSBmcm9tIG90aGVycyIKK21zZ3N0ciAibGlzdGV0IFZlcnNpb25lbiBhdWYsIGRpZSBuaWNodCBkdXJjaCBBbmRlcmUgZXJyZWljaGJhciBzaW5kIgorCisjOiBidWlsdGluL21lcmdlLWJhc2UuYzoxMDIKK21zZ2lkICJpcyB0aGUgZmlyc3Qgb25lIGFuY2VzdG9yIG9mIHRoZSBvdGhlcj8iCittc2dzdHIgImlzdCBkZXIgRXJzdGUgZWluIFZvcmZhaHJlIHZvbiBkZW0gQW5kZXJlbj8iCisKKyM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjgKK21zZ2lkICIiCisiZ2l0IG1lcmdlLWZpbGUgW29wdGlvbnNdIFstTCBuYW1lMSBbLUwgb3JpZyBbLUwgbmFtZTJdXV0gZmlsZTEgb3JpZ19maWxlICIKKyJmaWxlMiIKK21zZ3N0ciAiIgorImdpdCBtZXJnZS1maWxlIFtPcHRpb25lbl0gWy1MIE5hbWUxIFstTCBvcmlnIFstTCBOYW1lMl1dXSBEYXRlaTEgb3JpZ19EYXRlaSAiCisiRGF0ZWkyIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzozMworbXNnaWQgInNlbmQgcmVzdWx0cyB0byBzdGFuZGFyZCBvdXRwdXQiCittc2dzdHIgInNlbmRldCBFcmdlYm5pc3NlIHp1ciBTdGFuZGFyZC1BdXNnYWJlIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzozNAorbXNnaWQgInVzZSBhIGRpZmYzIGJhc2VkIG1lcmdlIgorbXNnc3RyICJ2ZXJ3ZW5kZXQgZWluZSBkaWZmMyBiYXNpZXJ0ZSBadXNhbW1lbmbDvGhydW5nIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzozNQorbXNnaWQgImZvciBjb25mbGljdHMsIHVzZSBvdXIgdmVyc2lvbiIKK21zZ3N0ciAidmVyd2VuZGV0IGJlaSBLb25mbGlrdGVuIHVuc2VyZSBWYXJpYW50ZSIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6MzcKK21zZ2lkICJmb3IgY29uZmxpY3RzLCB1c2UgdGhlaXIgdmVyc2lvbiIKK21zZ3N0ciAidmVyd2VuZGV0IGJlaSBLb25mbGlrdGVuIGlocmUgVmFyaWFudGUiCisKKyM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjM5Cittc2dpZCAiZm9yIGNvbmZsaWN0cywgdXNlIGEgdW5pb24gdmVyc2lvbiIKK21zZ3N0ciAidmVyd2VuZGV0IGJlaSBLb25mbGlrdGVuIGVpbmUgZ2VtZWluc2FtZSBWYXJpYW50ZSIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6NDIKK21zZ2lkICJmb3IgY29uZmxpY3RzLCB1c2UgdGhpcyBtYXJrZXIgc2l6ZSIKK21zZ3N0ciAidmVyd2VuZGV0IGJlaSBLb25mbGlrdGVuIGRpZXNlIEtlbm56ZWljaG51bmdzbMOkbmdlIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzo0MworbXNnaWQgImRvIG5vdCB3YXJuIGFib3V0IGNvbmZsaWN0cyIKK21zZ3N0ciAia2VpbmUgV2FybnVuZyBiZWkgS29uZmxpa3RlbiIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6NDUKK21zZ2lkICJzZXQgbGFiZWxzIGZvciBmaWxlMS9vcmlnX2ZpbGUvZmlsZTIiCittc2dzdHIgInNldHp0IEJlc2NocmlmdHVuZyBmw7xyIERhdGVpMS9vcmlnX0RhdGVpL0RhdGVpMiIKKworIzogYnVpbHRpbi9ta3RyZWUuYzo2NworbXNnaWQgImdpdCBta3RyZWUgWy16XSBbLS1taXNzaW5nXSBbLS1iYXRjaF0iCittc2dzdHIgImdpdCBta3RyZWUgWy16XSBbLS1taXNzaW5nXSBbLS1iYXRjaF0iCisKKyM6IGJ1aWx0aW4vbWt0cmVlLmM6MTUzCittc2dpZCAiaW5wdXQgaXMgTlVMIHRlcm1pbmF0ZWQiCittc2dzdHIgIkVpbmdhYmUgaXN0IGR1cmNoIE5VTC1aZWljaGVuIGFiZ2VzY2hsb3NzZW4iCisKKyM6IGJ1aWx0aW4vbWt0cmVlLmM6MTU0IGJ1aWx0aW4vd3JpdGUtdHJlZS5jOjI0Cittc2dpZCAiYWxsb3cgbWlzc2luZyBvYmplY3RzIgorbXNnc3RyICJlcmxhdWJ0IGZlaGxlbmRlIE9iamVrdGUiCisKKyM6IGJ1aWx0aW4vbWt0cmVlLmM6MTU1Cittc2dpZCAiYWxsb3cgY3JlYXRpb24gb2YgbW9yZSB0aGFuIG9uZSB0cmVlIgorbXNnc3RyICJlcmxhdWJ0IGRpZSBFcnN0ZWxsdW5nIHZvbiBtZWhyIGFscyBlaW5lbSBCYXVtIgorCisjOiBidWlsdGluL212LmM6MTQKK21zZ2lkICJnaXQgbXYgW29wdGlvbnNdIDxzb3VyY2U+Li4uIDxkZXN0aW5hdGlvbj4iCittc2dzdHIgImdpdCBtdiBbT3B0aW9uZW5dIDxRdWVsbGU+Li4uIDxaaWVsPiIKKworIzogYnVpbHRpbi9tdi5jOjY0Cittc2dpZCAiZm9yY2UgbW92ZS9yZW5hbWUgZXZlbiBpZiB0YXJnZXQgZXhpc3RzIgorbXNnc3RyICJlcnp3aW5ndCBWZXJzY2hpZWJlbi9VbWJlbmVubmVuLCBhdWNoIHdlbm4gZGFzIFppZWwgZXhpc3RpZXJ0IgorCisjOiBidWlsdGluL212LmM6NjUKK21zZ2lkICJza2lwIG1vdmUvcmVuYW1lIGVycm9ycyIKK21zZ3N0ciAiw7xiZXJzcHJpbmd0IEZlaGxlciBiZWltIFZlcnNjaGllYmVuIG9kZXIgVW1iZW5lbm5lbiIKKwogIzogYnVpbHRpbi9tdi5jOjEwOAogIywgYy1mb3JtYXQKIG1zZ2lkICJDaGVja2luZyByZW5hbWUgb2YgJyVzJyB0byAnJXMnXG4iCkBAIC0zNzY3LDE5MiArNjgzMSw1OTkgQEAKIG1zZ2lkICJyZW5hbWluZyAnJXMnIGZhaWxlZCIKIG1zZ3N0ciAiVW1iZW5lbm51bmcgdm9uICclcycgZmVobGdlc2NobGFnZW4iCiAKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoxNzUKK21zZ2lkICJnaXQgbmFtZS1yZXYgW29wdGlvbnNdIDxjb21taXQ+Li4uIgorbXNnc3RyICJnaXQgbmFtZS1yZXYgW09wdGlvbmVuXSA8VmVyc2lvbj4uLi4iCisKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoxNzYKK21zZ2lkICJnaXQgbmFtZS1yZXYgW29wdGlvbnNdIC0tYWxsIgorbXNnc3RyICJnaXQgbmFtZS1yZXYgW09wdGlvbmVuXSAtLWFsbCIKKworIzogYnVpbHRpbi9uYW1lLXJldi5jOjE3NworbXNnaWQgImdpdCBuYW1lLXJldiBbb3B0aW9uc10gLS1zdGRpbiIKK21zZ3N0ciAiZ2l0IG5hbWUtcmV2IFtPcHRpb25lbl0gLS1zdGRpbiIKKworIzogYnVpbHRpbi9uYW1lLXJldi5jOjIyOQorbXNnaWQgInByaW50IG9ubHkgbmFtZXMgKG5vIFNIQS0xKSIKK21zZ3N0ciAiemVpZ3QgbnVyIE5hbWVuIGFuIChrZWluZSBTSEEtMSkiCisKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzAKK21zZ2lkICJvbmx5IHVzZSB0YWdzIHRvIG5hbWUgdGhlIGNvbW1pdHMiCittc2dzdHIgInZlcndlbmRldCBudXIgTWFya2llcnVuZ2VuIHVtIGRpZSBWZXJzaW9uZW4genUgYmVuZW5uZW4iCisKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzIKK21zZ2lkICJvbmx5IHVzZSByZWZzIG1hdGNoaW5nIDxwYXR0ZXJuPiIKK21zZ3N0ciAidmVyd2VuZGV0IG51ciBSZWZlcmVuemVuIGRpZSA8TXVzdGVyPiBlbnRzcHJlY2hlbiIKKworIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzNAorbXNnaWQgImxpc3QgYWxsIGNvbW1pdHMgcmVhY2hhYmxlIGZyb20gYWxsIHJlZnMiCittc2dzdHIgImxpc3RldCBhbGxlIFZlcnNpb25lbiBhdWYsIGRpZSB2b24gYWxsZW4gUmVmZXJlbnplbiBlcnJlaWNoYmFyIHNpbmQiCisKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzUKK21zZ2lkICJyZWFkIGZyb20gc3RkaW4iCittc2dzdHIgImxpZXN0IHZvbiBkZXIgU3RhbmRhcmQtRWluZ2FiZSIKKworIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzNgorbXNnaWQgImFsbG93IHRvIHByaW50IGB1bmRlZmluZWRgIG5hbWVzIgorbXNnc3RyICJlcmxhdWJ0IEF1c2dhYmUgdm9uIGB1bmRlZmluaWVydGVuYCBOYW1lbiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjI2Cittc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gW2xpc3QgWzxvYmplY3Q+XV0iCittc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPE5vdGl6LVJlZmVyZW56Pl0gW2xpc3QgWzxPYmpla3Q+XV0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNworbXNnaWQgIiIKKyJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBhZGQgWy1mXSBbLW0gPG1zZz4gfCAtRiA8ZmlsZT4gfCAoLWMgfCAtQykgIgorIjxvYmplY3Q+XSBbPG9iamVjdD5dIgorbXNnc3RyICIiCisiZ2l0IG5vdGVzIFstLXJlZiA8Tm90aXotUmVmZXJlbno+XSBhZGQgWy1mXSBbLW0gPE5hY2hyaWNodD4gfCAtRiA8RGF0ZWk+IHwgKC0iCisiYyB8IC1DKSA8T2JqZWt0Pl0gWzxPYmpla3Q+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjI4Cittc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gY29weSBbLWZdIDxmcm9tLW9iamVjdD4gPHRvLW9iamVjdD4iCittc2dzdHIgIiIKKyJnaXQgbm90ZXMgWy0tcmVmIDxOb3Rpei1SZWZlcmVuej5dIGNvcHkgWy1mXSA8dm9uLU9iamVrdD4gPG5hY2gtT2JqZWt0PiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjI5Cittc2dpZCAiIgorImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGFwcGVuZCBbLW0gPG1zZz4gfCAtRiA8ZmlsZT4gfCAoLWMgfCAtQykgIgorIjxvYmplY3Q+XSBbPG9iamVjdD5dIgorbXNnc3RyICIiCisiZ2l0IG5vdGVzIFstLXJlZiA8Tm90aXotUmVmZXJlbno+XSBhcHBlbmQgWy1tIDxOYWNocmljaHQ+IHwgLUYgPERhdGVpPiB8ICgtYyAiCisifCAtQykgPE9iamVrdD5dIFs8T2JqZWt0Pl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMAorbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGVkaXQgWzxvYmplY3Q+XSIKK21zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA8Tm90aXotUmVmZXJlbno+XSBlZGl0IFs8T2JqZWt0Pl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMQorbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHNob3cgWzxvYmplY3Q+XSIKK21zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA8Tm90aXotUmVmZXJlbno+XSBzaG93IFs8T2JqZWt0Pl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMgorbXNnaWQgIiIKKyJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBtZXJnZSBbLXYgfCAtcV0gWy1zIDxzdHJhdGVneT4gXSA8bm90ZXNfcmVmPiIKK21zZ3N0ciAiIgorImdpdCBub3RlcyBbLS1yZWYgPE5vdGl6LVJlZmVyZW56Pl0gbWVyZ2UgWy12IHwgLXFdIFstcyA8U3RyYXRlZ2llPiBdIDxOb3Rpei0iCisiUmVmZXJlbno+IgorCisjOiBidWlsdGluL25vdGVzLmM6MzMKK21zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgLS1jb21taXQgWy12IHwgLXFdIgorbXNnc3RyICJnaXQgbm90ZXMgbWVyZ2UgLS1jb21taXQgWy12IHwgLXFdIgorCisjOiBidWlsdGluL25vdGVzLmM6MzQKK21zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgLS1hYm9ydCBbLXYgfCAtcV0iCittc2dzdHIgImdpdCBub3RlcyBtZXJnZSAtLWFib3J0IFstdiB8IC1xXSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjM1Cittc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gcmVtb3ZlIFs8b2JqZWN0Pi4uLl0iCittc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPE5vdGl6LVJlZmVyZW56Pl0gcmVtb3ZlIFs8T2JqZWt0Pi4uLl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzozNgorbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHBydW5lIFstbiB8IC12XSIKK21zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA8Tm90aXotUmVmZXJlbno+XSBwcnVuZSBbLW4gfCAtdl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzozNworbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGdldC1yZWYiCittc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPE5vdGl6LVJlZmVyZW56Pl0gZ2V0LXJlZiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjQyCittc2dpZCAiZ2l0IG5vdGVzIFtsaXN0IFs8b2JqZWN0Pl1dIgorbXNnc3RyICJnaXQgbm90ZXMgW2xpc3QgWzxPYmpla3Q+XV0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0NworbXNnaWQgImdpdCBub3RlcyBhZGQgWzxvcHRpb25zPl0gWzxvYmplY3Q+XSIKK21zZ3N0ciAiZ2l0IG5vdGVzIGFkZCBbPE9wdGlvbmVuPl0gWzxPYmpla3Q+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjUyCittc2dpZCAiZ2l0IG5vdGVzIGNvcHkgWzxvcHRpb25zPl0gPGZyb20tb2JqZWN0PiA8dG8tb2JqZWN0PiIKK21zZ3N0ciAiZ2l0IG5vdGVzIGNvcHkgWzxPcHRpb25lbj5dIDx2b24tT2JqZWt0PiA8bmFjaC1PYmpla3Q+IgorCisjOiBidWlsdGluL25vdGVzLmM6NTMKK21zZ2lkICJnaXQgbm90ZXMgY29weSAtLXN0ZGluIFs8ZnJvbS1vYmplY3Q+IDx0by1vYmplY3Q+XS4uLiIKK21zZ3N0ciAiZ2l0IG5vdGVzIGNvcHkgLS1zdGRpbiBbPHZvbi1PYmpla3Q+IDxuYWNoLU9iamVrdD5dLi4uIgorCisjOiBidWlsdGluL25vdGVzLmM6NTgKK21zZ2lkICJnaXQgbm90ZXMgYXBwZW5kIFs8b3B0aW9ucz5dIFs8b2JqZWN0Pl0iCittc2dzdHIgImdpdCBub3RlcyBhcHBlbmQgWzxPcHRpb25lbj5dIFs8T2JqZWt0Pl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MworbXNnaWQgImdpdCBub3RlcyBlZGl0IFs8b2JqZWN0Pl0iCittc2dzdHIgImdpdCBub3RlcyBlZGl0IFs8T2JqZWt0Pl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2OAorbXNnaWQgImdpdCBub3RlcyBzaG93IFs8b2JqZWN0Pl0iCittc2dzdHIgImdpdCBub3RlcyBzaG93IFs8T2JqZWt0Pl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MworbXNnaWQgImdpdCBub3RlcyBtZXJnZSBbPG9wdGlvbnM+XSA8bm90ZXNfcmVmPiIKK21zZ3N0ciAiZ2l0IG5vdGVzIG1lcmdlIFs8T3B0aW9uZW4+XSA8Tm90aXotUmVmZXJlbno+IgorCisjOiBidWlsdGluL25vdGVzLmM6NzQKK21zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgLS1jb21taXQgWzxvcHRpb25zPl0iCittc2dzdHIgImdpdCBub3RlcyBtZXJnZSAtLWNvbW1pdCBbPE9wdGlvbmVuPl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3NQorbXNnaWQgImdpdCBub3RlcyBtZXJnZSAtLWFib3J0IFs8b3B0aW9ucz5dIgorbXNnc3RyICJnaXQgbm90ZXMgbWVyZ2UgLS1hYm9ydCBbPE9wdGlvbmVuPl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4MAorbXNnaWQgImdpdCBub3RlcyByZW1vdmUgWzxvYmplY3Q+XSIKK21zZ3N0ciAiZ2l0IG5vdGVzIHJlbW92ZSBbPE9iamVrdD5dIgorCisjOiBidWlsdGluL25vdGVzLmM6ODUKK21zZ2lkICJnaXQgbm90ZXMgcHJ1bmUgWzxvcHRpb25zPl0iCittc2dzdHIgImdpdCBub3RlcyBwcnVuZSBbPE9wdGlvbmVuPl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5MAorbXNnaWQgImdpdCBub3RlcyBnZXQtcmVmIgorbXNnc3RyICJnaXQgbm90ZXMgZ2V0LXJlZiIKKwogIzogYnVpbHRpbi9ub3Rlcy5jOjEzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gc3RhcnQgJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKIG1zZ3N0ciAia29ubnRlICdzaG93JyBmw7xyIE9iamVrdCAnJXMnIG5pY2h0IHN0YXJ0ZW4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNDUKLW1zZ2lkICJjYW4ndCBmZG9wZW4gJ3Nob3cnIG91dHB1dCBmZCIKLW1zZ3N0ciAia29ubnRlIERhdGVpLURlc2tyaXB0b3IgZsO8ciBBdXNnYWJlIHZvbiAnc2hvdycgbmljaHQgw7ZmZm5lbiIKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxNDMKK21zZ2lkICJjb3VsZCBub3QgcmVhZCAnc2hvdycgb3V0cHV0IgorbXNnc3RyICJLb25udGUgQXVzZ2FiZSB2b24gJ3Nob3cnIG5pY2h0IGxlc2VuLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjE1NQotIywgYy1mb3JtYXQKLW1zZ2lkICJmYWlsZWQgdG8gY2xvc2UgcGlwZSB0byAnc2hvdycgZm9yIG9iamVjdCAnJXMnIgotbXNnc3RyICJTY2hsaWXDn2VuIGRlciBWZXJiaW5kdW5nIHp1ICdzaG93JyBpc3QgZsO8ciBPYmpla3QgJyVzJyBmZWhsZ2VzY2hsYWdlbi4iCi0KLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxNTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGZpbmlzaCAnc2hvdycgZm9yIG9iamVjdCAnJXMnIgogbXNnc3RyICJrb25udGUgJ3Nob3cnIGbDvHIgT2JqZWt0ICclcycgbmljaHQgYWJzY2hsaWXDn2VuIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTc1IGJ1aWx0aW4vdGFnLmM6MzQ3CisjOiBidWlsdGluL25vdGVzLmM6MTY5IGJ1aWx0aW4vdGFnLmM6MzQxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgZmlsZSAnJXMnIgogbXNnc3RyICJrb25udGUgRGF0ZWkgJyVzJyBuaWNodCBlcnN0ZWxsZW4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxODkKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxODgKIG1zZ2lkICJQbGVhc2Ugc3VwcGx5IHRoZSBub3RlIGNvbnRlbnRzIHVzaW5nIGVpdGhlciAtbSBvciAtRiBvcHRpb24iCi1tc2dzdHIgIkJpdHRlIGxpZWZlcmUgZGVuIE5vdGl6LUluaGFsdCB1bnRlciBWZXJ3ZW5kdW5nIGRlciBPcHRpb24gLW0gb2RlciAtRi4iCittc2dzdHIgIiIKKyJCaXR0ZSBsaWVmZXJuIFNpZSBkZW4gTm90aXotSW5oYWx0IHVudGVyIFZlcndlbmR1bmcgZGVyIE9wdGlvbiAtbSBvZGVyIC1GLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjIxMCBidWlsdGluL25vdGVzLmM6OTczCisjOiBidWlsdGluL25vdGVzLmM6MjA5IGJ1aWx0aW4vbm90ZXMuYzo5NzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVtb3Zpbmcgbm90ZSBmb3Igb2JqZWN0ICVzXG4iCiBtc2dzdHIgIkVudGZlcm5lIE5vdGl6IGbDvHIgT2JqZWt0ICVzXG4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyMTUKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyMTQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbm90ZSBvYmplY3QiCiBtc2dzdHIgIktvbm50ZSBOb3Rpei1PYmpla3QgbmljaHQgc2NocmVpYmVuIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjE3CisjOiBidWlsdGluL25vdGVzLmM6MjE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlRoZSBub3RlIGNvbnRlbnRzIGhhcyBiZWVuIGxlZnQgaW4gJXMiCiBtc2dzdHIgIkRpZSBOb3Rpei1JbmhhbHRlIHd1cmRlbiBpbiAlcyBiZWxhc3NlbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI1MSBidWlsdGluL3RhZy5jOjU0MgorIzogYnVpbHRpbi9ub3Rlcy5jOjI1MCBidWlsdGluL3RhZy5jOjU0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCAnJXMnIgogbXNnc3RyICJrYW5uICclcycgbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNTMgYnVpbHRpbi90YWcuYzo1NDUKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNTIgYnVpbHRpbi90YWcuYzo1NDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IG9wZW4gb3IgcmVhZCAnJXMnIgogbXNnc3RyICJrb25udGUgJyVzJyBuaWNodCDDtmZmbmVuIG9kZXIgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNzIgYnVpbHRpbi9ub3Rlcy5jOjQ0NSBidWlsdGluL25vdGVzLmM6NDQ3Ci0jOiBidWlsdGluL25vdGVzLmM6NTA3IGJ1aWx0aW4vbm90ZXMuYzo1NjEgYnVpbHRpbi9ub3Rlcy5jOjY0NAotIzogYnVpbHRpbi9ub3Rlcy5jOjY0OSBidWlsdGluL25vdGVzLmM6NzI0IGJ1aWx0aW4vbm90ZXMuYzo3NjYKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5NjggYnVpbHRpbi9yZXNldC5jOjI5MyBidWlsdGluL3RhZy5jOjU1OAorIzogYnVpbHRpbi9ub3Rlcy5jOjI3MSBidWlsdGluL25vdGVzLmM6NDQ0IGJ1aWx0aW4vbm90ZXMuYzo0NDYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MDYgYnVpbHRpbi9ub3Rlcy5jOjU2MCBidWlsdGluL25vdGVzLmM6NjQzCisjOiBidWlsdGluL25vdGVzLmM6NjQ4IGJ1aWx0aW4vbm90ZXMuYzo3MjMgYnVpbHRpbi9ub3Rlcy5jOjc2NQorIzogYnVpbHRpbi9ub3Rlcy5jOjk2NyBidWlsdGluL3RhZy5jOjU1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgcmVmLiIKIG1zZ3N0ciAiS29ubnRlICclcycgbmljaHQgYWxzIGfDvGx0aWdlIFJlZmVyZW56IGF1ZmzDtnNlbi4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNzUKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlYWQgb2JqZWN0ICclcycuIgogbXNnc3RyICJGZWhsZXIgYmVpbSBMZXNlbiBkZXMgT2JqZWt0ZXMgJyVzJy4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyOTkKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyOTgKIG1zZ2lkICJDYW5ub3QgY29tbWl0IHVuaW5pdGlhbGl6ZWQvdW5yZWZlcmVuY2VkIG5vdGVzIHRyZWUiCiBtc2dzdHIgIkthbm4gdW5pbml0aWFsaXNpZXJ0ZW4vdW5yZWZlcmVuemllcnRlbiBOb3Rpei1CYXVtIG5pY2h0IGVpbnRyYWdlbi4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzozNDAKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkIG5vdGVzLnJld3JpdGVNb2RlIHZhbHVlOiAnJXMnIgogbXNnc3RyICJVbmfDvGx0aWdlciBub3Rlcy5yZXdyaXRlTW9kZSBXZXJ0OiAnJXMnIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzUwCisjOiBidWlsdGluL25vdGVzLmM6MzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlZnVzaW5nIHRvIHJld3JpdGUgbm90ZXMgaW4gJXMgKG91dHNpZGUgb2YgcmVmcy9ub3Rlcy8pIgogbXNnc3RyICIiCi0iTmV1c2NocmVpYmVuIGRlciBOb3RpemVuIGluICVzIHp1csO8Y2tnZXdpZXNlbiAoYXXDn2VyaGFsYiB2b24gcmVmcy9ub3Rlcy8pIgorIlVtc2NocmVpYmVuIGRlciBOb3RpemVuIGluICVzIHp1csO8Y2tnZXdpZXNlbiAoYXXDn2VyaGFsYiB2b24gcmVmcy9ub3Rlcy8pIgogCiAjLiBUUkFOU0xBVE9SUzogVGhlIGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIHRoZQogIy4gZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBzZWNvbmQgJXMgaXMgaXRzIHZhbHVlCi0jOiBidWlsdGluL25vdGVzLmM6Mzc3CisjOiBidWlsdGluL25vdGVzLmM6Mzc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJhZCAlcyB2YWx1ZTogJyVzJyIKIG1zZ3N0ciAiVW5nw7xsdGlnZXIgJXMgV2VydDogJyVzJyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQ0MQorIzogYnVpbHRpbi9ub3Rlcy5jOjQ0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWxmb3JtZWQgaW5wdXQgbGluZTogJyVzJy4iCiBtc2dzdHIgIkZlaGxlcmhhZnRlIEVpbmdhYmV6ZWlsZTogJyVzJy4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo0NTYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGNvcHkgbm90ZXMgZnJvbSAnJXMnIHRvICclcyciCiBtc2dzdHIgIkZlaGxlciBiZWltIEtvcGllcmVuIGRlciBOb3RpemVuIHZvbiAnJXMnIG5hY2ggJyVzJyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUwMCBidWlsdGluL25vdGVzLmM6NTU0IGJ1aWx0aW4vbm90ZXMuYzo2MjcKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MzkgYnVpbHRpbi9ub3Rlcy5jOjcxMiBidWlsdGluL25vdGVzLmM6NzU5Ci0jOiBidWlsdGluL25vdGVzLmM6MTAzMworIzogYnVpbHRpbi9ub3Rlcy5jOjQ5OSBidWlsdGluL25vdGVzLmM6NTUzIGJ1aWx0aW4vbm90ZXMuYzo2MjYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MzggYnVpbHRpbi9ub3Rlcy5jOjcxMSBidWlsdGluL25vdGVzLmM6NzU4CisjOiBidWlsdGluL25vdGVzLmM6MTAzMgogbXNnaWQgInRvbyBtYW55IHBhcmFtZXRlcnMiCiBtc2dzdHIgInp1IHZpZWxlIFBhcmFtZXRlciIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUxMyBidWlsdGluL25vdGVzLmM6NzcyCisjOiBidWlsdGluL25vdGVzLmM6NTEyIGJ1aWx0aW4vbm90ZXMuYzo3NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gbm90ZSBmb3VuZCBmb3Igb2JqZWN0ICVzLiIKIG1zZ3N0ciAiS2VpbiBOb3RpeiBmw7xyIE9iamVrdCAlcyBnZWZ1bmRlbi4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1ODAKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MzQgYnVpbHRpbi9ub3Rlcy5jOjY5MQorbXNnaWQgIm5vdGUgY29udGVudHMgYXMgYSBzdHJpbmciCittc2dzdHIgIk5vdGl6aW5oYWx0ZSBhbHMgWmVpY2hlbmtldHRlIgorCisjOiBidWlsdGluL25vdGVzLmM6NTM3IGJ1aWx0aW4vbm90ZXMuYzo2OTQKK21zZ2lkICJub3RlIGNvbnRlbnRzIGluIGEgZmlsZSIKK21zZ3N0ciAiTm90aXppbmhhbHRlIGluIGVpbmVyIERhdGVpIgorCisjOiBidWlsdGluL25vdGVzLmM6NTM5IGJ1aWx0aW4vbm90ZXMuYzo1NDIgYnVpbHRpbi9ub3Rlcy5jOjY5NgorIzogYnVpbHRpbi9ub3Rlcy5jOjY5OSBidWlsdGluL3RhZy5jOjQ3NAorbXNnaWQgIm9iamVjdCIKK21zZ3N0ciAiT2JqZWt0IgorCisjOiBidWlsdGluL25vdGVzLmM6NTQwIGJ1aWx0aW4vbm90ZXMuYzo2OTcKK21zZ2lkICJyZXVzZSBhbmQgZWRpdCBzcGVjaWZpZWQgbm90ZSBvYmplY3QiCittc2dzdHIgIldpZWRlcnZlcndlbmR1bmcgdW5kIEJlYXJiZWl0dW5nIGRlcyBhbmdlZ2ViZW5lbiBOb3Rpei1PYmpla3RlcyIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjU0MyBidWlsdGluL25vdGVzLmM6NzAwCittc2dpZCAicmV1c2Ugc3BlY2lmaWVkIG5vdGUgb2JqZWN0IgorbXNnc3RyICJXaWVkZXJ2ZXJ3ZW5kdW5nIGRlcyBhbmdlZ2ViZW5lbiBOb3Rpei1PYmpla3RlcyIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjU0NSBidWlsdGluL25vdGVzLmM6NjEzCittc2dpZCAicmVwbGFjZSBleGlzdGluZyBub3RlcyIKK21zZ3N0ciAiZXJzZXR6dCBleGlzdGllcmVuZGUgTm90aXplbiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjU3OQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ2Fubm90IGFkZCBub3Rlcy4gRm91bmQgZXhpc3Rpbmcgbm90ZXMgZm9yIG9iamVjdCAlcy4gVXNlICctZicgdG8gb3ZlcndyaXRlICIKICJleGlzdGluZyBub3RlcyIKIG1zZ3N0ciAiIgogIktvbm50ZSBOb3RpemVuIG5pY2h0IGhpbnp1ZsO8Z2VuLiBFeGlzdGllcmVuZGUgTm90aXplbiBmw7xyIE9iamVrdCAlcyAiCi0iZ2VmdW5kZW4uIFZlcndlbmRlICctZicgdW0gZGllIGV4aXN0aWVyZW5kZW4gTm90aXplbiB6dSDDvGJlcnNjaHJlaWJlbi4iCisiZ2VmdW5kZW4uIFZlcndlbmRlbiBTaWUgJy1mJyB1bSBkaWUgZXhpc3RpZXJlbmRlbiBOb3RpemVuIHp1IMO8YmVyc2NocmVpYmVuLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU4NSBidWlsdGluL25vdGVzLmM6NjYyCisjOiBidWlsdGluL25vdGVzLmM6NTg0IGJ1aWx0aW4vbm90ZXMuYzo2NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3ZlcndyaXRpbmcgZXhpc3Rpbmcgbm90ZXMgZm9yIG9iamVjdCAlc1xuIgogbXNnc3RyICLDnGJlcnNjaHJlaWJlIGV4aXN0aWVyZW5kZSBOb3RpemVuIGbDvHIgT2JqZWt0ICVzXG4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MzUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MTQKK21zZ2lkICJyZWFkIG9iamVjdHMgZnJvbSBzdGRpbiIKK21zZ3N0ciAibGllc3QgT2JqZWt0ZSB2b24gZGVyIFN0YW5kYXJkLUVpbmdhYmUiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MTYKK21zZ2lkICJsb2FkIHJld3JpdGluZyBjb25maWcgZm9yIDxjb21tYW5kPiAoaW1wbGllcyAtLXN0ZGluKSIKK21zZ3N0ciAiIgorImzDpGR0IEtvbmZpZ3VyYXRpb24gZsO8ciA8S29tbWFuZG8+IGJlaW0gVW1zY2hyZWliZW4gdm9uIFZlcnNpb25lbiAoaW1wbGl6aWVydCAiCisiLS1zdGRpbikiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MzQKIG1zZ2lkICJ0b28gZmV3IHBhcmFtZXRlcnMiCiBtc2dzdHIgInp1IHdlbmlnIFBhcmFtZXRlciIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjY1NgorIzogYnVpbHRpbi9ub3Rlcy5jOjY1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ2Fubm90IGNvcHkgbm90ZXMuIEZvdW5kIGV4aXN0aW5nIG5vdGVzIGZvciBvYmplY3QgJXMuIFVzZSAnLWYnIHRvIG92ZXJ3cml0ZSAiCiAiZXhpc3Rpbmcgbm90ZXMiCiBtc2dzdHIgIiIKICJLYW5uIE5vdGl6ZW4gbmljaHQga29waWVyZW4uIEV4aXN0aWVyZW5kZSBOb3RpemVuIGbDvHIgT2JqZWt0ICVzIGdlZnVuZGVuLiAiCi0iVmVyd2VuZGUgJy1mJyB1bSBkaWUgZXhpc3RpZXJlbmRlbiBOb3RpemVuIHp1IMO8YmVyc2NocmVpYmVuLiIKKyJWZXJ3ZW5kZW4gU2llICctZicgdW0gZGllIGV4aXN0aWVyZW5kZW4gTm90aXplbiB6dSDDvGJlcnNjaHJlaWJlbi4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NjgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWlzc2luZyBub3RlcyBvbiBzb3VyY2Ugb2JqZWN0ICVzLiBDYW5ub3QgY29weS4iCiBtc2dzdHIgIktlaW5lIE5vdGl6ZW4gZsO8ciBRdWVsbC1PYmpla3QgJXMuIEtvcGllIG5pY2h0IG3DtmdsaWNoLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjcxNworIzogYnVpbHRpbi9ub3Rlcy5jOjcxNgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIC1tLy1GLy1jLy1DIG9wdGlvbnMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgZm9yIHRoZSAnZWRpdCcgc3ViY29tbWFuZC5cbiIKICJQbGVhc2UgdXNlICdnaXQgbm90ZXMgYWRkIC1mIC1tLy1GLy1jLy1DJyBpbnN0ZWFkLlxuIgogbXNnc3RyICIiCiAiRGllIE9wdGlvbmVuIC1tLy1GLy1jLy1DIHNpbmQgZsO8ciBkYXMgVW50ZXJrb21tYW5kbyAnZWRpdCcgdmVyYWx0ZXQuXG4iCi0iQml0dGUgYmVudXR6ZSBzdGF0dGRlc3NlbiAnZ2l0IG5vdGVzIGFkZCAtZiAtbS8tRi8tYy8tQycuXG4iCisiQml0dGUgYmVudXR6ZW4gU2llIHN0YXR0ZGVzc2VuICdnaXQgbm90ZXMgYWRkIC1mIC1tLy1GLy1jLy1DJy5cbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjk3MQorIzogYnVpbHRpbi9ub3Rlcy5jOjg2MworbXNnaWQgIkdlbmVyYWwgb3B0aW9ucyIKK21zZ3N0ciAiQWxsZ2VtZWluZSBPcHRpb25lbiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjg2NQorbXNnaWQgIk1lcmdlIG9wdGlvbnMiCittc2dzdHIgIk9wdGlvbmVuIGbDvHIgWnVzYW1tZW5mw7xocnVuZyIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjg2NworbXNnaWQgIiIKKyJyZXNvbHZlIG5vdGVzIGNvbmZsaWN0cyB1c2luZyB0aGUgZ2l2ZW4gc3RyYXRlZ3kgKG1hbnVhbC9vdXJzL3RoZWlycy91bmlvbi8iCisiY2F0X3NvcnRfdW5pcSkiCittc2dzdHIgIiIKKyJsw7ZzdCBLb25mbGlrdGUgYmVpIE5vdGl6ZW4gbWl0IGRlciBhbmdlZ2ViZW5lbiBTdHJhdGVnaWUgYXVmIChtYW51YWwvb3Vycy8iCisidGhlaXJzL3VuaW9uL2NhdF9zb3J0X3VuaXEpIgorCisjOiBidWlsdGluL25vdGVzLmM6ODY5Cittc2dpZCAiQ29tbWl0dGluZyB1bm1lcmdlZCBub3RlcyIKK21zZ3N0ciAidHLDpGd0IG5pY2h0IHp1c2FtbWVuZ2Vmw7xocnRlIE5vdGl6ZW4gZWluIgorCisjOiBidWlsdGluL25vdGVzLmM6ODcxCittc2dpZCAiZmluYWxpemUgbm90ZXMgbWVyZ2UgYnkgY29tbWl0dGluZyB1bm1lcmdlZCBub3RlcyIKK21zZ3N0ciAiIgorInNjaGxpZcOfdCBadXNhbW1lbmbDvGhydW5nIHZvbiBOb3RpemVuIGFiLCBpbiBkZW0gbmljaHQgenVzYW1tZW5nZWbDvGhydGUgIgorIk5vdGl6ZW4gZWluZ2V0cmFnZW4gd2VyZGVuIgorCisjOiBidWlsdGluL25vdGVzLmM6ODczCittc2dpZCAiQWJvcnRpbmcgbm90ZXMgbWVyZ2UgcmVzb2x1dGlvbiIKK21zZ3N0ciAiYnJpY2h0IEtvbmZsaWt0YXVmbMO2c3VuZyBiZWkgWnVzYW1tZW5mw7xocnVuZyB2b24gTm90aXplbiBhYiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjg3NQorbXNnaWQgImFib3J0IG5vdGVzIG1lcmdlIgorbXNnc3RyICJicmljaHQgWnVzYW1tZW5mw7xocnVuZyB2b24gTm90aXplbiBhYiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjk3MAogIywgYy1mb3JtYXQKIG1zZ2lkICJPYmplY3QgJXMgaGFzIG5vIG5vdGVcbiIKIG1zZ3N0ciAiT2JqZWt0ICVzIGhhdCBrZWluZSBOb3RpelxuIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTEwMyBidWlsdGluL3JlbW90ZS5jOjE1OTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5ODIKK21zZ2lkICJhdHRlbXB0IHRvIHJlbW92ZSBub24tZXhpc3RlbnQgbm90ZSBpcyBub3QgYW4gZXJyb3IiCittc2dzdHIgImRlciBWZXJzdWNoLCBlaW5lIG5pY2h0IGV4aXN0aWVyZW5kZSBOb3RpeiB6dSBsw7ZzY2hlbiwgaXN0IGtlaW4gRmVobGVyIgorCisjOiBidWlsdGluL25vdGVzLmM6OTg1Cittc2dpZCAicmVhZCBvYmplY3QgbmFtZXMgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCittc2dzdHIgImxpZXN0IE9iamVrdG5hbWVuIHZvbiBkZXIgU3RhbmRhcmQtRWluZ2FiZSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjEwNjYKK21zZ2lkICJub3Rlc19yZWYiCittc2dzdHIgIk5vdGl6LVJlZmVyZW56IgorCisjOiBidWlsdGluL25vdGVzLmM6MTA2NworbXNnaWQgInVzZSBub3RlcyBmcm9tIDxub3Rlc19yZWY+IgorbXNnc3RyICJ2ZXJ3ZW5kZXQgTm90aXplbiB2b24gPE5vdGl6LVJlZmVyZW56PiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjExMDIgYnVpbHRpbi9yZW1vdGUuYzoxNTk4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gc3ViY29tbWFuZDogJXMiCiBtc2dzdHIgIlVuYmVrYW5udGVzIFVudGVya29tbWFuZG86ICVzIgogCi0jOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjIzMzcKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjMKK21zZ2lkICJnaXQgcGFjay1vYmplY3RzIC0tc3Rkb3V0IFtvcHRpb25zLi4uXSBbPCByZWYtbGlzdCB8IDwgb2JqZWN0LWxpc3RdIgorbXNnc3RyICIiCisiZ2l0IHBhY2stb2JqZWN0cyAtLXN0ZG91dCBbT3B0aW9uZW4uLi5dIFs8IFJlZmVyZW56bGlzdGUgfCA8IE9iamVrdGxpc3RlXSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNAorbXNnaWQgImdpdCBwYWNrLW9iamVjdHMgW29wdGlvbnMuLi5dIGJhc2UtbmFtZSBbPCByZWYtbGlzdCB8IDwgb2JqZWN0LWxpc3RdIgorbXNnc3RyICIiCisiZ2l0IHBhY2stb2JqZWN0cyBbT3B0aW9uZW4uLi5dIEJhc2lzLU5hbWUgWzwgUmVmZXJlbnpsaXN0ZSB8IDwgT2JqZWt0bGlzdGVdIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjE4MyBidWlsdGluL3BhY2stb2JqZWN0cy5jOjE4NgorIywgYy1mb3JtYXQKK21zZ2lkICJkZWZsYXRlIGVycm9yICglZCkiCittc2dzdHIgIkZlaGxlciBiZWltIEtvbXByaW1pZXJlbiAoJWQpIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjIzOTcKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5zdXBwb3J0ZWQgaW5kZXggdmVyc2lvbiAlcyIKIG1zZ3N0ciAiTmljaHQgdW50ZXJzdMO8dHp0ZSBCZXJlaXRzdGVsbHVuZ3N2ZXJzaW9uICVzIgogCi0jOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjIzNDEKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQwMQogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgaW5kZXggdmVyc2lvbiAnJXMnIgogbXNnc3RyICJVbmfDvGx0aWdlIEJlcmVpdHN0ZWxsdW5nc3ZlcnNpb24gJyVzJyIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyMzY0CisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0MjQKICMsIGMtZm9ybWF0CiBtc2dpZCAib3B0aW9uICVzIGRvZXMgbm90IGFjY2VwdCBuZWdhdGl2ZSBmb3JtIgogbXNnc3RyICJPcHRpb24gJXMgYWt6ZXB0aWVydCBrZWluZSBuZWdhdGl2ZSBGb3JtIgogCi0jOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjIzNjgKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcGFyc2UgdmFsdWUgJyVzJyBmb3Igb3B0aW9uICVzIgogbXNnc3RyICJrb25udGUgV2VydCAnJXMnIGbDvHIgT3B0aW9uICVzIG5pY2h0IHBhcnNlbiIKIAorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDQ3Cittc2dpZCAiZG8gbm90IHNob3cgcHJvZ3Jlc3MgbWV0ZXIiCittc2dzdHIgInplaWd0IGtlaW5lIEZvcnRzY2hyaXR0c2FuemVpZ2UiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ0OQorbXNnaWQgInNob3cgcHJvZ3Jlc3MgbWV0ZXIiCittc2dzdHIgInplaWd0IEZvcnRzY2hyaXR0c2FuemVpZ2UiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ1MQorbXNnaWQgInNob3cgcHJvZ3Jlc3MgbWV0ZXIgZHVyaW5nIG9iamVjdCB3cml0aW5nIHBoYXNlIgorbXNnc3RyICJ6ZWlndCBGb3JzY2hyaXR0c2FuemVpZ2Ugd8OkaHJlbmQgZGVyIFBoYXNlIGRlcyBTY2hyZWliZW5zIGRlciBPYmpla3RlIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NTQKK21zZ2lkICJzaW1pbGFyIHRvIC0tYWxsLXByb2dyZXNzIHdoZW4gcHJvZ3Jlc3MgbWV0ZXIgaXMgc2hvd24iCittc2dzdHIgIsOkaG5saWNoIHp1IC0tYWxsLXByb2dyZXNzIHdlbm4gRm9ydHNjaHJpdHRzYW56ZWlnZSBkYXJzdGVsbHQgd2lyZCIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDU1Cittc2dpZCAidmVyc2lvblssb2Zmc2V0XSIKK21zZ3N0ciAidmVyc2lvblssb2Zmc2V0XSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDU2Cittc2dpZCAid3JpdGUgdGhlIHBhY2sgaW5kZXggZmlsZSBpbiB0aGUgc3BlY2lmaWVkIGlkeCBmb3JtYXQgdmVyc2lvbiIKK21zZ3N0ciAiIgorInNjaHJlaWJ0IGRpZSBJbmRleC1EYXRlaSBkZXMgUGFrZXRlcyBpbiBkZXIgYW5nZWdlYmVuZW4gSW5kZXhmb3JtYXQtVmVyc2lvbiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDU5Cittc2dpZCAibWF4aW11bSBzaXplIG9mIGVhY2ggb3V0cHV0IHBhY2sgZmlsZSIKK21zZ3N0ciAibWF4aW1hbGUgR3LDtsOfZSBmw7xyIGplZGUgYXVzZ2VnZWJlbmUgUGFrZXRkYXRlaSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDYxCittc2dpZCAiaWdub3JlIGJvcnJvd2VkIG9iamVjdHMgZnJvbSBhbHRlcm5hdGUgb2JqZWN0IHN0b3JlIgorbXNnc3RyICJpZ25vcmllcnQgZ2VsaWVoZW5lIE9iamVrdGUgdm9uIGFsdGVybmF0aXZlbSBPYmpla3RzcGVpY2hlciIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDYzCittc2dpZCAiaWdub3JlIHBhY2tlZCBvYmplY3RzIgorbXNnc3RyICJpZ25vcmllcnQgZ2VwYWNrdGUgT2JqZWt0ZSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDY1Cittc2dpZCAibGltaXQgcGFjayB3aW5kb3cgYnkgb2JqZWN0cyIKK21zZ3N0ciAiYmVncmVuenQgUGFrZXRmZW5zdGVyIGR1cmNoIE9iamVrdGUiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ2NworbXNnaWQgImxpbWl0IHBhY2sgd2luZG93IGJ5IG1lbW9yeSBpbiBhZGRpdGlvbiB0byBvYmplY3QgbGltaXQiCittc2dzdHIgImJlZ3Jlbnp0IFBha2V0ZmVuc3RlciwgenVzw6R0emxpY2ggenVyIE9iamVrdGJlZ3Jlbnp1bmcsIGR1cmNoIFNwZWljaGVyIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NjkKK21zZ2lkICJtYXhpbXVtIGxlbmd0aCBvZiBkZWx0YSBjaGFpbiBhbGxvd2VkIGluIHRoZSByZXN1bHRpbmcgcGFjayIKK21zZ3N0ciAiIgorIm1heGltYWxlIEzDpG5nZSBkZXIgZXJsYXVidGVuIERpZmZlcmVuenZlcmtldHR1bmcgaW0gcmVzdWx0aWVyZW5kZW4gUGFrZXQiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ3MQorbXNnaWQgInJldXNlIGV4aXN0aW5nIGRlbHRhcyIKK21zZ3N0ciAidmVyd2VuZGV0IGV4aXN0aWVyZW5kZSBVbnRlcnNjaGllZGUgd2llZGVyIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NzMKK21zZ2lkICJyZXVzZSBleGlzdGluZyBvYmplY3RzIgorbXNnc3RyICJ2ZXJ3ZW5kZXQgZXhpc3RpZXJlbmRlIE9iamVrdGUgd2llZGVyIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NzUKK21zZ2lkICJ1c2UgT0ZTX0RFTFRBIG9iamVjdHMiCittc2dzdHIgInZlcndlbmRldCBPRlNfREVMVEEgT2JqZWt0ZSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDc3Cittc2dpZCAidXNlIHRocmVhZHMgd2hlbiBzZWFyY2hpbmcgZm9yIGJlc3QgZGVsdGEgbWF0Y2hlcyIKK21zZ3N0ciAiIgorInZlcndlbmRldCBUaHJlYWRzIGJlaSBkZXIgU3VjaGUgbmFjaCBkZW4gYmVzdGVuIMOcYmVyZWluc3RpbW11bmdlbiBiZWkgIgorIlVudGVyc2NoaWVkZW4iCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ3OQorbXNnaWQgImRvIG5vdCBjcmVhdGUgYW4gZW1wdHkgcGFjayBvdXRwdXQiCittc2dzdHIgImVyemV1Z3Qga2VpbmUgbGVlcmVuIFBha2V0ZSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDgxCittc2dpZCAicmVhZCByZXZpc2lvbiBhcmd1bWVudHMgZnJvbSBzdGFuZGFyZCBpbnB1dCIKK21zZ3N0ciAibGllc3QgQXJndW1lbnRlIGJlesO8Z2xpY2ggUmV2aXNpb25lbiB2b24gZGVyIFN0YW5kYXJkLUVpbmdhYmUiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ4MworbXNnaWQgImxpbWl0IHRoZSBvYmplY3RzIHRvIHRob3NlIHRoYXQgYXJlIG5vdCB5ZXQgcGFja2VkIgorbXNnc3RyICJiZWdyZW56dCBkaWUgT2JqZWt0ZSB6dSBzb2xjaGVuLCBkaWUgbm9jaCBuaWNodCBnZXBhY2t0IHd1cmRlbiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDg2Cittc2dpZCAiaW5jbHVkZSBvYmplY3RzIHJlYWNoYWJsZSBmcm9tIGFueSByZWZlcmVuY2UiCittc2dzdHIgInNjaGxpZcOfdCBPYmpla3RlIGVpbiwgZGllIHZvbiBqZWRlciBSZWZlcmVueiBlcnJlaWNoYmFyIHNpbmQiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ4OQorbXNnaWQgImluY2x1ZGUgb2JqZWN0cyByZWZlcnJlZCBieSByZWZsb2cgZW50cmllcyIKK21zZ3N0ciAiIgorInNjaGxpZcOfdCBPYmpla3RlIGVpbiwgZGllIHZvbiBFaW50csOkZ2VuIGRlcyBSZWZlcmVuenByb3Rva29sbHMgcmVmZXJlbnppZXJ0ICIKKyJ3ZXJkZW4iCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ5MgorbXNnaWQgIm91dHB1dCBwYWNrIHRvIHN0ZG91dCIKK21zZ3N0ciAic2NocmVpYnQgUGFrZXQgaW4gZGllIFN0YW5kYXJkLUF1c2dhYmUiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ5NAorbXNnaWQgImluY2x1ZGUgdGFnIG9iamVjdHMgdGhhdCByZWZlciB0byBvYmplY3RzIHRvIGJlIHBhY2tlZCIKK21zZ3N0ciAiIgorInNjaGxpZcOfdCBNYXJraWVydW5nc29iamVrdGUgZWluLCBkaWUgYXVmIGdlcGFja3RlIE9iamVrdGUgcmVmZXJlbnppZXJlbiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDk2Cittc2dpZCAia2VlcCB1bnJlYWNoYWJsZSBvYmplY3RzIgorbXNnc3RyICJiZWjDpGx0IG5pY2h0IGVycmVpY2hiYXJlIE9iamVrdGUiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ5NyBwYXJzZS1vcHRpb25zLmg6MTQxCittc2dpZCAidGltZSIKK21zZ3N0ciAiWmVpdCIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDk4Cittc2dpZCAidW5wYWNrIHVucmVhY2hhYmxlIG9iamVjdHMgbmV3ZXIgdGhhbiA8dGltZT4iCittc2dzdHIgImVudHBhY2t0IG5pY2h0IGVycmVpY2hiYXJlIE9iamVrdGUsIGRpZSBuZXVlciBhbHMgPFplaXQ+IHNpbmQiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjUwMQorbXNnaWQgImNyZWF0ZSB0aGluIHBhY2tzIgorbXNnc3RyICJlcnpldWd0IGTDvG5uZXJlIFBha2V0ZSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNTAzCittc2dpZCAiaWdub3JlIHBhY2tzIHRoYXQgaGF2ZSBjb21wYW5pb24gLmtlZXAgZmlsZSIKK21zZ3N0ciAiaWdub3JpZXJ0IFBha2V0ZSBkaWUgLmtlZXAgRGF0ZWllbiBoYWJlbiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNTA1Cittc2dpZCAicGFjayBjb21wcmVzc2lvbiBsZXZlbCIKK21zZ3N0ciAiS29tcHJpbWllcnVuZ3NncmFkIGbDvHIgUGFrZXRpZXJ1bmciCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjUwNworbXNnaWQgImRvIG5vdCBoaWRlIGNvbW1pdHMgYnkgZ3JhZnRzIgorbXNnc3RyICJ2ZXJiaXJndCBrZWluZSBWZXJzaW9uZW4gbWl0IGvDvG5zdGxpY2hlbiBWb3Jnw6RuZ2VybiAoXCJncmFmdHNcIikiCisKKyM6IGJ1aWx0aW4vcGFjay1yZWZzLmM6NgorbXNnaWQgImdpdCBwYWNrLXJlZnMgW29wdGlvbnNdIgorbXNnc3RyICJnaXQgcGFjay1yZWZzIFtPcHRpb25lbl0iCisKKyM6IGJ1aWx0aW4vcGFjay1yZWZzLmM6MTQKK21zZ2lkICJwYWNrIGV2ZXJ5dGhpbmciCittc2dzdHIgInBhY2t0IGFsbGVzIgorCisjOiBidWlsdGluL3BhY2stcmVmcy5jOjE1Cittc2dpZCAicHJ1bmUgbG9vc2UgcmVmcyAoZGVmYXVsdCkiCittc2dzdHIgImVudGZlcm50IGxvc2UgUmVmZXJlbnplbiAoU3RhbmRhcmQpIgorCisjOiBidWlsdGluL3BydW5lLXBhY2tlZC5jOjcKK21zZ2lkICJnaXQgcHJ1bmUtcGFja2VkIFstbnwtLWRyeS1ydW5dIFstcXwtLXF1aWV0XSIKK21zZ3N0ciAiZ2l0IHBydW5lLXBhY2tlZCBbLW58LS1kcnktcnVuXSBbLXF8LS1xdWlldF0iCisKKyM6IGJ1aWx0aW4vcHJ1bmUuYzoxMgorbXNnaWQgImdpdCBwcnVuZSBbLW5dIFstdl0gWy0tZXhwaXJlIDx0aW1lPl0gWy0tXSBbPGhlYWQ+Li4uXSIKK21zZ3N0ciAiZ2l0IHBydW5lIFstbl0gWy12XSBbLS1leHBpcmUgPFplaXQ+XSBbLS1dIFs8WndlaWdzcGl0emU+Li4uXSIKKworIzogYnVpbHRpbi9wcnVuZS5jOjEzMgorbXNnaWQgImRvIG5vdCByZW1vdmUsIHNob3cgb25seSIKK21zZ3N0ciAibmljaHQgbMO2c2NoZW4sIG51ciBhbnplaWdlbiIKKworIzogYnVpbHRpbi9wcnVuZS5jOjEzMworbXNnaWQgInJlcG9ydCBwcnVuZWQgb2JqZWN0cyIKK21zZ3N0ciAibWVsZGV0IGdlbMO2c2NodGUgT2JqZWt0ZSIKKworIzogYnVpbHRpbi9wcnVuZS5jOjEzNgorbXNnaWQgImV4cGlyZSBvYmplY3RzIG9sZGVyIHRoYW4gPHRpbWU+IgorbXNnc3RyICJsw6Rzc3QgT2JqZWt0ZSDDpGx0ZXIgYWxzIDxaZWl0PiB2ZXJmYWxsZW4iCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjE0Cittc2dpZCAiZ2l0IHB1c2ggWzxvcHRpb25zPl0gWzxyZXBvc2l0b3J5PiBbPHJlZnNwZWM+Li4uXV0iCittc2dzdHIgImdpdCBwdXNoIFs8T3B0aW9uZW4+XSBbPFByb2pla3RhcmNoaXY+IFs8UmVmZXJlbnpzcGV6aWZpa2F0aW9uPi4uLl1dIgorCiAjOiBidWlsdGluL3B1c2guYzo0NQogbXNnaWQgInRhZyBzaG9ydGhhbmQgd2l0aG91dCA8dGFnPiIKIG1zZ3N0ciAiS3VyenNjaHJpZnQgZsO8ciBNYXJraWVydW5nIG9obmUgPE1hcmtpZXJ1bmc+IgogCiAjOiBidWlsdGluL3B1c2guYzo2NAogbXNnaWQgIi0tZGVsZXRlIG9ubHkgYWNjZXB0cyBwbGFpbiB0YXJnZXQgcmVmIG5hbWVzIgotbXNnc3RyICItLWRlbGV0ZSBha3plcHRpZXJ0IG51ciByZWluZSBSZWZlcmVuei1OYW1lbiBhbHMgWmllbCIKK21zZ3N0ciAiRGllIE9wdGlvbiAtLWRlbGV0ZSBha3plcHRpZXJ0IG51ciByZWluZSBSZWZlcmVuem5hbWVuIGFscyBaaWVsLiIKIAogIzogYnVpbHRpbi9wdXNoLmM6OTkKIG1zZ2lkICIiCkBAIC0zOTc3LDE0ICs3NDQ4LDE0IEBACiAiICAgIGdpdCBwdXNoICVzICVzXG4iCiAiJXMiCiBtc2dzdHIgIiIKLSJEZXIgTmFtZSBkZXMgZXh0ZXJuZW4gw5xiZXJuYWhtZXp3ZWlnZXMgc3RpbW10IG5pY2h0IG1pdCBkZW0gTmFtZW4gZGVpbmVzXG4iCisiRGVyIE5hbWUgZGVzIGV4dGVybmVuIMOcYmVybmFobWV6d2VpZ2VzIHN0aW1tdCBuaWNodCBtaXQgZGVtIE5hbWVuIElocmVzXG4iCiAiYWt0dWVsbGVuIFp3ZWlnZXMgw7xiZXJlaW4uIFVtIGF1ZiBkZW4gw5xiZXJuYWhtZXp3ZWlnIGluIGRlbSBleHRlcm5lblxuIgotIlByb2pla3RhcmNoaXYgenUgdmVyc2VuZGVuLCBiZW51dHplOlxuIgorIlByb2pla3RhcmNoaXYgenUgdmVyc2VuZGVuLCBiZW51dHplbiBTaWU6XG4iCiAiXG4iCiAiICAgIGdpdCBwdXNoICVzIEhFQUQ6JXNcbiIKICJcbiIKICJVbSBhdWYgZGVuIFp3ZWlnIG1pdCBkZW0gc2VsYmVuIE5hbWVuIGluIGRlbSBleHRlcm5lbiBQcm9qZWthcmNoaXZcbiIKLSJ6dSB2ZXJzZW5kZW4sIGJlbnV0emU6XG4iCisienUgdmVyc2VuZGVuLCBiZW51dHplbiBTaWU6XG4iCiAiXG4iCiAiICAgIGdpdCBwdXNoICVzICVzXG4iCiAiJXMiCkBAIC0zOTk4LDkgKzc0NjksOSBAQAogIlxuIgogIiAgICBnaXQgcHVzaCAlcyBIRUFEOjxuYW1lLW9mLXJlbW90ZS1icmFuY2g+XG4iCiBtc2dzdHIgIiIKLSJEdSBiZWZpbmRlc3QgZGljaCBzaWNoIGltIE1vbWVudCBhdWYga2VpbmVtIFp3ZWlnLlxuIgorIlNpZSBiZWZpbmRlbiBzaWNoIGltIE1vbWVudCBhdWYga2VpbmVtIFp3ZWlnLlxuIgogIlVtIGRpZSBIaXN0b3JpZSwgZsO8aHJlbmQgenVtIGFrdHVlbGxlbiAoZnJlaXN0ZWhlbmRlIFp3ZWlnc3BpdHplIChIRUFEKSlcbiIKLSJTdGF0dXMgenUgdmVyc2VuZGVuLCBiZW51dHplXG4iCisiU3RhdHVzIHp1IHZlcnNlbmRlbiwgYmVudXR6ZW4gU2llXG4iCiAiXG4iCiAiICAgIGdpdCBwdXNoICVzIEhFQUQ6PE5hbWUtZGVzLWV4dGVybmVuLVp3ZWlnZXM+XG4iCiAKQEAgLTQwMTQsNyArNzQ4NSw3IEBACiBtc2dzdHIgIiIKICJEZXIgYWt0dWVsbGUgWndlaWcgJXMgaGF0IGtlaW5lbiBad2VpZyBpbSBleHRlcm5lbiBQcm9qZWt0YXJjaGl2LlxuIgogIlVtIGRlbiBha3R1ZWxsZW4gWndlaWcgenUgdmVyc2VuZGVuIHVuZCBkYXMgRmVybmFyY2hpdiBhbHMgZXh0ZXJuZXNcbiIKLSJQcm9qZWt0YXJjaGl2IHp1IHZlcndlbmRlbiwgYmVudXR6ZVxuIgorIlByb2pla3RhcmNoaXYgenUgdmVyd2VuZGVuLCBiZW51dHplbiBTaWVcbiIKICJcbiIKICIgICAgZ2l0IHB1c2ggLS1zZXQtdXBzdHJlYW0gJXMgJXNcbiIKIApAQCAtNDAzMCw0NiArNzUwMSw4MiBAQAogInlvdXIgY3VycmVudCBicmFuY2ggJyVzJywgd2l0aG91dCB0ZWxsaW5nIG1lIHdoYXQgdG8gcHVzaFxuIgogInRvIHVwZGF0ZSB3aGljaCByZW1vdGUgYnJhbmNoLiIKIG1zZ3N0ciAiIgotIkR1IHZlcnNlbmRlc3QgbmFjaCAnJXMnLCB3ZWxjaGVzIGtlaW4gZXh0ZXJuZXMgUHJvamVrdGFyY2hpdiBkZWluZXNcbiIKKyJTaWUgdmVyc2VuZGVuIG5hY2ggJyVzJywgd2VsY2hlcyBrZWluIGV4dGVybmVzIFByb2pla3RhcmNoaXYgSWhyZXNcbiIKICJha3R1ZWxsZW4gWndlaWdlcyAnJXMnIGlzdCwgb2huZSBtaXIgbWl0enV0ZWlsZW4sIHdhcyBpY2ggdmVyc2VuZGVuXG4iCiAic29sbCwgdW0gd2VsY2hlbiBleHRlcm5lbiBad2VpZyB6dSBha3R1YWxpc2llcmVuLiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MTc0CisjOiBidWlsdGluL3B1c2guYzoxNTEKK21zZ2lkICIiCisicHVzaC5kZWZhdWx0IGlzIHVuc2V0OyBpdHMgaW1wbGljaXQgdmFsdWUgaXMgY2hhbmdpbmcgaW5cbiIKKyJHaXQgMi4wIGZyb20gJ21hdGNoaW5nJyB0byAnc2ltcGxlJy4gVG8gc3F1ZWxjaCB0aGlzIG1lc3NhZ2VcbiIKKyJhbmQgbWFpbnRhaW4gdGhlIGN1cnJlbnQgYmVoYXZpb3IgYWZ0ZXIgdGhlIGRlZmF1bHQgY2hhbmdlcywgdXNlOlxuIgorIlxuIgorIiAgZ2l0IGNvbmZpZyAtLWdsb2JhbCBwdXNoLmRlZmF1bHQgbWF0Y2hpbmdcbiIKKyJcbiIKKyJUbyBzcXVlbGNoIHRoaXMgbWVzc2FnZSBhbmQgYWRvcHQgdGhlIG5ldyBiZWhhdmlvciBub3csIHVzZTpcbiIKKyJcbiIKKyIgIGdpdCBjb25maWcgLS1nbG9iYWwgcHVzaC5kZWZhdWx0IHNpbXBsZVxuIgorIlxuIgorIlNlZSAnZ2l0IGhlbHAgY29uZmlnJyBhbmQgc2VhcmNoIGZvciAncHVzaC5kZWZhdWx0JyBmb3IgZnVydGhlciAiCisiaW5mb3JtYXRpb24uXG4iCisiKHRoZSAnc2ltcGxlJyBtb2RlIHdhcyBpbnRyb2R1Y2VkIGluIEdpdCAxLjcuMTEuIFVzZSB0aGUgc2ltaWxhciBtb2RlXG4iCisiJ2N1cnJlbnQnIGluc3RlYWQgb2YgJ3NpbXBsZScgaWYgeW91IHNvbWV0aW1lcyB1c2Ugb2xkZXIgdmVyc2lvbnMgb2YgR2l0KSIKK21zZ3N0ciAiIgorIidwdXNoLmRlZmF1bHQnIGlzdCBuaWNodCBnZXNldHp0OyBkZXIgaW1wbGl6aXQgZ2VzZXR6dGUgV2VydFxuIgorIndpcmQgaW4gR2l0IDIuMCB2b24gJ21hdGNoaW5nJyBuYWNoICdzaW1wbGUnIGdlw6RuZGVydC4gVW0gZGllc2UgTWVsZHVuZyB6dVxuIgorInVudGVyZHLDvGNrZW4gdW5kIGRhcyBha3R1ZWxsZSBWZXJoYWx0ZW4gbmFjaCDDhG5kZXJ1bmcgZGVzIFN0YW5kYXJkd2VydGVzXG4iCisiYmVpenViZWhhbHRlbiwgYmVudXR6ZW4gU2llOlxuIgorIiAgZ2l0IGNvbmZpZyAtLWdsb2JhbCBwdXNoLmRlZmF1bHQgbWF0Y2hpbmdcbiIKKyJcbiIKKyJVbSBkaWVzZSBNZWxkdW5nIHp1IHVudGVyZHLDvGNrZW4gdW5kIGRhcyBuZXVlIFZlcmhhbHRlbiBqZXR6dCB6dSDDvGJlcm5laG1lbiwgIgorImJlbnV0emVuIFNpZTpcbiIKKyJcbiIKKyIgIGdpdCBjb25maWcgLS1nbG9iYWwgcHVzaC5kZWZhdWx0IHNpbXBsZVxuIgorIlxuIgorIkbDvGhyZW4gU2llICdnaXQgaGVscCBjb25maWcnIGF1cyB1bmQgc3VjaGVuIFNpZSBuYWNoICdwdXNoLmRlZmF1bHQnIGbDvHIgIgorIndlaXRlcmUgSW5mb3JtYXRpb25lbi5cbiIKKyIoRGVyIE1vZHVzICdzaW1wbGUnIHd1cmRlIGluIEdpdCAxLjcuMTEgZWluZ2Vmw7xocnQuIEJlbnV0emUgZGVuIMOkaG5saWNoZW4gIgorIk1vZHVzICdjdXJyZW50JyBhbnN0YXR0ICdzaW1wbGUnLCBmYWxscyBTaWUgZ2VsZWdlbnRsaWNoIMOkbHRlcmUgVmVyc2lvbmVuICIKKyJ2b24gR2l0IGJlbnV0emVuLikiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjE5OQogbXNnaWQgIiIKICJZb3UgZGlkbid0IHNwZWNpZnkgYW55IHJlZnNwZWNzIHRvIHB1c2gsIGFuZCBwdXNoLmRlZmF1bHQgaXMgXCJub3RoaW5nXCIuIgogbXNnc3RyICIiCi0iRHUgaGFzdCBrZWluZSBSZWZlcmVuenNwZXppZmlrYXRpb25lbiB6dW0gVmVyc2VuZGVuIGFuZ2VnZWJlbiwgdW5kIHB1c2guIgorIlNpZSBoYWJlbiBrZWluZSBSZWZlcmVuenNwZXppZmlrYXRpb25lbiB6dW0gVmVyc2VuZGVuIGFuZ2VnZWJlbiwgdW5kIHB1c2guIgogImRlZmF1bHQgaXN0IFwibm90aGluZ1wiLiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MTgxCisjOiBidWlsdGluL3B1c2guYzoyMDYKIG1zZ2lkICIiCiAiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgdGhlIHRpcCBvZiB5b3VyIGN1cnJlbnQgYnJhbmNoIGlzIGJlaGluZFxuIgogIml0cyByZW1vdGUgY291bnRlcnBhcnQuIE1lcmdlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLiAnZ2l0IHB1bGwnKVxuIgogImJlZm9yZSBwdXNoaW5nIGFnYWluLlxuIgogIlNlZSB0aGUgJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycgaW4gJ2dpdCBwdXNoIC0taGVscCcgZm9yIGRldGFpbHMuIgogbXNnc3RyICIiCi0iQWt0dWFsaXNpZXJ1bmdlbiB3dXJkZW4genVyw7xja2dld2llc2VuLCB3ZWlsIGRpZSBTcGl0emUgZGVpbmVzIGFrdHVlbGxlblxuIgotIlp3ZWlnZXMgaGludGVyIHNlaW5lbSBleHRlcm5lbiBHZWdlbnN0w7xjayB6dXLDvGNrZ2VmYWxsZW4gaXN0LiBGw7xocmUgZGllXG4iCi0iZXh0ZXJuZW4gw4RuZGVydW5nZW4genVzYW1tZW4gKHouQi4gJ2dpdCBwdWxsJykgYmV2b3IgZHUgZXJuZXV0IHZlcnNlbmRlc3QuXG4iCisiQWt0dWFsaXNpZXJ1bmdlbiB3dXJkZW4genVyw7xja2dld2llc2VuLCB3ZWlsIGRpZSBTcGl0emUgSWhyZXMgYWt0dWVsbGVuXG4iCisiWndlaWdlcyBoaW50ZXIgc2VpbmVtIGV4dGVybmVuIEdlZ2Vuc3TDvGNrIHp1csO8Y2tnZWZhbGxlbiBpc3QuIEbDvGhyZW4gU2llXG4iCisiZGllIGV4dGVybmVuIMOEbmRlcnVuZ2VuIHp1c2FtbWVuICh6LkIuICdnaXQgcHVsbCcpIGJldm9yIFNpZSBlcm5ldXRcbiIKKyJ2ZXJzZW5kZW4uXG4iCiAiU2llaGUgYXVjaCBkaWUgU2VrdGlvbiAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBpbiAnZ2l0IHB1c2ggLS1oZWxwJ1xuIgogImbDvHIgd2VpdGVyZSBEZXRhaWxzLiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MTg3CisjOiBidWlsdGluL3B1c2guYzoyMTIKIG1zZ2lkICIiCiAiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgYSBwdXNoZWQgYnJhbmNoIHRpcCBpcyBiZWhpbmQgaXRzIHJlbW90ZVxuIgogImNvdW50ZXJwYXJ0LiBJZiB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gcHVzaCB0aGF0IGJyYW5jaCwgeW91IG1heSB3YW50IHRvXG4iCi0ic3BlY2lmeSBicmFuY2hlcyB0byBwdXNoIG9yIHNldCB0aGUgJ3B1c2guZGVmYXVsdCcgY29uZmlndXJhdGlvblxuIgotInZhcmlhYmxlIHRvICdjdXJyZW50JyBvciAndXBzdHJlYW0nIHRvIHB1c2ggb25seSB0aGUgY3VycmVudCBicmFuY2guIgorInNwZWNpZnkgYnJhbmNoZXMgdG8gcHVzaCBvciBzZXQgdGhlICdwdXNoLmRlZmF1bHQnIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVcbiIKKyJ0byAnc2ltcGxlJywgJ2N1cnJlbnQnIG9yICd1cHN0cmVhbScgdG8gcHVzaCBvbmx5IHRoZSBjdXJyZW50IGJyYW5jaC4iCiBtc2dzdHIgIiIKICJBa3R1YWxpc2llcnVuZ2VuIHd1cmRlbiB6dXLDvGNrZ2V3aWVzZW4sIHdlaWwgZGllIFNwaXR6ZSBlaW5lcyB2ZXJzZW5kZXRlblxuIgotIlp3ZWlnZXMgaGludGVyIHNlaW5lbSBleHRlcm5lbiBHZWdlbnN0w7xjayB6dXLDvGNrZ2VmYWxsZW4gaXN0LiBXZW5uIGR1IG5pY2h0XG4iCi0iYmVhYnNpY2h0aWd0IGhhc3QsIGRpZXNlbiBad2VpZyB6dSB2ZXJzZW5kZW4sIGthbm5zdCBkdSBhdWNoIGRlbiB6dSAiCisiWndlaWdlcyBoaW50ZXIgc2VpbmVtIGV4dGVybmVuIEdlZ2Vuc3TDvGNrIHp1csO8Y2tnZWZhbGxlbiBpc3QuIFdlbm4gU2llICIKKyJuaWNodFxuIgorImJlYWJzaWNodGlndCBoYWJlbiwgZGllc2VuIFp3ZWlnIHp1IHZlcnNlbmRlbiwga8O2bm5lbiBTaWUgYXVjaCBkZW4genUgIgogInZlcnNlbmRlbmRlblxuIgogIlp3ZWlnIHNwZXppZml6aWVyZW4gb2RlciBkaWUgS29uZmlndXJhdGlvbnN2YXJpYWJsZSAncHVzaC5kZWZhdWx0JyB6dSAiCi0iJ2N1cnJlbnQnXG4iCisiJ3NpbXBsZScsICdjdXJyZW50J1xuIgogIm9kZXIgJ3Vwc3RyZWFtJyBzZXR6ZW4sIHVtIG51ciBkZW4gYWt0dWVsbGVuIFp3ZWlnIHp1IHZlcnNlbmRlbi4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjE5MworIzogYnVpbHRpbi9wdXNoLmM6MjE4CiBtc2dpZCAiIgogIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIGEgcHVzaGVkIGJyYW5jaCB0aXAgaXMgYmVoaW5kIGl0cyByZW1vdGVcbiIKICJjb3VudGVycGFydC4gQ2hlY2sgb3V0IHRoaXMgYnJhbmNoIGFuZCBtZXJnZSB0aGUgcmVtb3RlIGNoYW5nZXNcbiIKQEAgLTQwNzcsMjggKzc1ODQsNjQgQEAKICJTZWUgdGhlICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIGluICdnaXQgcHVzaCAtLWhlbHAnIGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAiIgogIkFrdHVhbGlzaWVydW5nZW4gd3VyZGVuIHp1csO8Y2tnZXdpZXNlbiwgd2VpbCBkaWUgU3BpdHplIGVpbmVzIHZlcnNlbmRldGVuXG4iCi0iWndlaWdlcyBoaW50ZXIgc2VpbmVtIGV4dGVybmVuIEdlZ2Vuc3TDvGNrIHp1csO8Y2tnZWZhbGxlbiBpc3QuIENoZWNrZSBkaWVzZW5cbiIKLSJad2VpZyBhdXMgdW5kIGbDvGhyZSBkaWUgZXh0ZXJuZW4gw4RuZGVydW5nZW4genVzYW1tZW4gKHouQi4gJ2dpdCBwdWxsJylcbiIKLSJiZXZvciBkdSBlcm5ldXQgdmVyc2VuZGVzdC5cbiIKKyJad2VpZ2VzIGhpbnRlciBzZWluZW0gZXh0ZXJuZW4gR2VnZW5zdMO8Y2sgenVyw7xja2dlZmFsbGVuIGlzdC4gQ2hlY2tlbiBTaWVcbiIKKyJkaWVzZW4gWndlaWcgYXVzIHVuZCBmw7xocmVuIFNpZSBkaWUgZXh0ZXJuZW4gw4RuZGVydW5nZW4genVzYW1tZW5cbiIKKyIoei5CLiAnZ2l0IHB1bGwnKSBiZXZvciBTaWUgZXJuZXV0IHZlcnNlbmRlbi5cbiIKICJTaWVoZSBhdWNoIGRpZSBTZWt0aW9uICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIGluICdnaXQgcHVzaCAtLWhlbHAnXG4iCiAiZsO8ciB3ZWl0ZXJlIERldGFpbHMuIgogCi0jOiBidWlsdGluL3B1c2guYzoyMzMKKyM6IGJ1aWx0aW4vcHVzaC5jOjIyNAorbXNnaWQgIiIKKyJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgcmVtb3RlIGNvbnRhaW5zIHdvcmsgdGhhdCB5b3UgZG9cbiIKKyJub3QgaGF2ZSBsb2NhbGx5LiBUaGlzIGlzIHVzdWFsbHkgY2F1c2VkIGJ5IGFub3RoZXIgcmVwb3NpdG9yeSBwdXNoaW5nXG4iCisidG8gdGhlIHNhbWUgcmVmLiBZb3UgbWF5IHdhbnQgdG8gZmlyc3QgbWVyZ2UgdGhlIHJlbW90ZSBjaGFuZ2VzIChlLmcuLFxuIgorIidnaXQgcHVsbCcpIGJlZm9yZSBwdXNoaW5nIGFnYWluLlxuIgorIlNlZSB0aGUgJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycgaW4gJ2dpdCBwdXNoIC0taGVscCcgZm9yIGRldGFpbHMuIgorbXNnc3RyICIiCisiQWt0dWFsaXNpZXJ1bmdlbiB3dXJkZW4genVyw7xja2dld2llc2VuLCB3ZWlsIGRhcyBGZXJuYXJjaGl2IFZlcnNpb25lbiAiCisiZW50aMOkbHQsXG4iCisiZGllIGxva2FsIG5pY2h0IHZvcmhhbmRlbiBzaW5kLiBEYXMgd2lyZCDDvGJsaWNoZXJ3ZWlzZSBkdXJjaCBkYXMgVmVyc2VuZGVuICIKKyJ2b25cbiIKKyJWZXJzaW9uZW4gYXVmIGRpZXNlbGJlIFJlZmVyZW56IHZvbiBlaW5lbSBhbmRlcmVuIFByb2pla3RhcmNoaXYgYXVzICIKKyJ2ZXJ1cnNhY2h0LlxuIgorIlZpZWxsZWljaHQgbcO8c3NlbiBTaWUgZGllIGV4dGVybmVuIMOEbmRlcnVuZ2VuIHp1c2FtbWVuenVmw7xocmVuICh6LkIuICdnaXQgIgorInB1bGwnKVxuIgorImJldm9yIFNpZSBlcm5ldXQgdmVyc2VuZGVuLlxuIgorIlNpZWhlIGF1Y2ggZGllIFNla3Rpb24gJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycgaW4gJ2dpdCBwdXNoIC0taGVscCdcbiIKKyJmw7xyIHdlaXRlcmUgRGV0YWlscy4iCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjIzMQorbXNnaWQgIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIHRoZSB0YWcgYWxyZWFkeSBleGlzdHMgaW4gdGhlIHJlbW90ZS4iCittc2dzdHIgIiIKKyJBa3R1YWxpc2llcnVuZ2VuIHd1cmRlbiB6dXLDvGNrZ2V3aWVzZW4sIHdlaWwgZGllIE1hcmtpZXJ1bmcgYmVyZWl0c1xuIgorImltIEZlcm5hcmNoaXYgZXhpc3RpZXJ0LiIKKworIzogYnVpbHRpbi9wdXNoLmM6MjM0Cittc2dpZCAiIgorIllvdSBjYW5ub3QgdXBkYXRlIGEgcmVtb3RlIHJlZiB0aGF0IHBvaW50cyBhdCBhIG5vbi1jb21taXQgb2JqZWN0LFxuIgorIm9yIHVwZGF0ZSBhIHJlbW90ZSByZWYgdG8gbWFrZSBpdCBwb2ludCBhdCBhIG5vbi1jb21taXQgb2JqZWN0LFxuIgorIndpdGhvdXQgdXNpbmcgdGhlICctLWZvcmNlJyBvcHRpb24uXG4iCittc2dzdHIgIiIKKyJTaWUga8O2bm5lbiBrZWluZSBleHRlcm5lIFJlZmVyZW56IGFrdHVhbGlzaWVyZW4sIGRpZSBhdWYgZWluIE9iamVrdCB6ZWlndCxcbiIKKyJkYXMga2VpbmUgVmVyc2lvbiBpc3QsIG9kZXIgZXMgYXVmIGVpbiBzb2xjaGVzIE9iamVrdCB6ZWlnZW4gbGFzc2VuLCBvaG5lXG4iCisiZGllIE9wdGlvbiAnLS1mb3JjZScgenUgdmVyd2VuZGVuLlxuIgorCisjOiBidWlsdGluL3B1c2guYzoyOTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiUHVzaGluZyB0byAlc1xuIgogbXNnc3RyICJWZXJzZW5kZSBuYWNoICVzXG4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjIzNworIzogYnVpbHRpbi9wdXNoLmM6Mjk4CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBwdXNoIHNvbWUgcmVmcyB0byAnJXMnIgogbXNnc3RyICJGZWhsZXIgYmVpbSBWZXJzZW5kZW4gZWluaWdlciBSZWZlcmVuemVuIG5hY2ggJyVzJyIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjY5CisjOiBidWlsdGluL3B1c2guYzozMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIHJlcG9zaXRvcnkgJyVzJyIKIG1zZ3N0ciAidW5nw7xsdGlnZXMgUHJvamVrdGFyY2hpdiAnJXMnIgogCi0jOiBidWlsdGluL3B1c2guYzoyNzAKKyM6IGJ1aWx0aW4vcHVzaC5jOjMzMgogbXNnaWQgIiIKICJObyBjb25maWd1cmVkIHB1c2ggZGVzdGluYXRpb24uXG4iCiAiRWl0aGVyIHNwZWNpZnkgdGhlIFVSTCBmcm9tIHRoZSBjb21tYW5kLWxpbmUgb3IgY29uZmlndXJlIGEgcmVtb3RlICIKQEAgLTQxMTEsNDIgKzc2NTQsMjU4IEBACiAiICAgIGdpdCBwdXNoIDxuYW1lPlxuIgogbXNnc3RyICIiCiAiS2VpbiBaaWVsIHp1bSBWZXJzZW5kZW4ga29uZmlndXJpZXJ0LlxuIgotIkVudHdlZGVyIHNwZXppZml6aWVyc3QgZHUgZGllIFVSTCB2b24gZGVyIEtvbW1hbmRvemVpbGUgb2RlciBrb25maWd1cmllcnN0ICIKKyJFbnR3ZWRlciBzcGV6aWZpemllcmVuIFNpZSBkaWUgVVJMIHZvbiBkZXIgS29tbWFuZG96ZWlsZSBvZGVyIGtvbmZpZ3VyaWVyZW4gIgogImVpbiBleHRlcm5lcyBQcm9qZWt0YXJjaGl2IHVudGVyIEJlbnV0enVuZyB2b25cbiIKICJcbiIKICIgICAgZ2l0IHJlbW90ZSBhZGQgPE5hbWU+IDxVUkw+XG4iCiAiXG4iCi0idW5kIHZlcnNlbmRlc3QgZGFubiB1bnRlciBCZW51dHp1bmcgZGllc2VzIE5hbWVuc1xuIgorInVuZCB2ZXJzZW5kZW4gZGFubiB1bnRlciBCZW51dHp1bmcgZGllc2VzIE5hbWVuc1xuIgogIlxuIgogIiAgICBnaXQgcHVzaCA8TmFtZT5cbiIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mjg1CisjOiBidWlsdGluL3B1c2guYzozNDcKIG1zZ2lkICItLWFsbCBhbmQgLS10YWdzIGFyZSBpbmNvbXBhdGlibGUiCi1tc2dzdHIgIi0tYWxsIHVuZCAtLXRhZ3Mgc2luZCBpbmtvbXBhdGliZWwiCittc2dzdHIgIkRpZSBPcHRpb25lbiAtLWFsbCB1bmQgLS10YWdzIHNpbmQgaW5rb21wYXRpYmVsLiIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mjg2CisjOiBidWlsdGluL3B1c2guYzozNDgKIG1zZ2lkICItLWFsbCBjYW4ndCBiZSBjb21iaW5lZCB3aXRoIHJlZnNwZWNzIgotbXNnc3RyICItLWFsbCBrYW5uIG5pY2h0IG1pdCBSZWZlcmVuenNwZXppZmlrYXRpb25lbiBrb21iaW5pZXJ0IHdlcmRlbiIKK21zZ3N0ciAiIgorIkRpZSBPcHRpb24gLS1hbGwga2FubiBuaWNodCBtaXQgUmVmZXJlbnpzcGV6aWZpa2F0aW9uZW4ga29tYmluaWVydCB3ZXJkZW4uIgogCi0jOiBidWlsdGluL3B1c2guYzoyOTEKKyM6IGJ1aWx0aW4vcHVzaC5jOjM1MwogbXNnaWQgIi0tbWlycm9yIGFuZCAtLXRhZ3MgYXJlIGluY29tcGF0aWJsZSIKLW1zZ3N0ciAiLS1taXJyb3IgdW5kIC0tdGFncyBzaW5kIGlua29tcGF0aWJlbCIKK21zZ3N0ciAiRGllIE9wdGlvbmVuIC0tbWlycm9yIHVuZCAtLXRhZ3Mgc2luZCBpbmtvbXBhdGliZWwuIgogCi0jOiBidWlsdGluL3B1c2guYzoyOTIKKyM6IGJ1aWx0aW4vcHVzaC5jOjM1NAogbXNnaWQgIi0tbWlycm9yIGNhbid0IGJlIGNvbWJpbmVkIHdpdGggcmVmc3BlY3MiCi1tc2dzdHIgIi0tbWlycm9yIGthbm4gbmljaHQgbWl0IFJlZmVyZW56c3BlemlmaWthdGlvbmVuIGtvbWJpbmllcnQgd2VyZGVuIgorbXNnc3RyICIiCisiRGllIE9wdGlvbiAtLW1pcnJvciBrYW5uIG5pY2h0IG1pdCBSZWZlcmVuenNwZXppZmlrYXRpb25lbiBrb21iaW5pZXJ0IHdlcmRlbi4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI5NworIzogYnVpbHRpbi9wdXNoLmM6MzU5CiBtc2dpZCAiLS1hbGwgYW5kIC0tbWlycm9yIGFyZSBpbmNvbXBhdGlibGUiCi1tc2dzdHIgIi0tYWxsIHVuZCAtLW1pcnJvciBzaW5kIGlua29tcGF0aWJlbCIKK21zZ3N0ciAiRGllIE9wdGlvbmVuIC0tYWxsIHVuZCAtLW1pcnJvciBzaW5kIGlua29tcGF0aWJlbC4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM4NQorIzogYnVpbHRpbi9wdXNoLmM6NDE5Cittc2dpZCAicmVwb3NpdG9yeSIKK21zZ3N0ciAiUHJvamVrdGFyY2hpdiIKKworIzogYnVpbHRpbi9wdXNoLmM6NDIwCittc2dpZCAicHVzaCBhbGwgcmVmcyIKK21zZ3N0ciAidmVyc2VuZGV0IGFsbGUgUmVmZXJlbnplbiIKKworIzogYnVpbHRpbi9wdXNoLmM6NDIxCittc2dpZCAibWlycm9yIGFsbCByZWZzIgorbXNnc3RyICJzcGllZ2VsdCBhbGxlIFJlZmVyZW56ZW4iCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyMworbXNnaWQgImRlbGV0ZSByZWZzIgorbXNnc3RyICJsw7ZzY2h0IFJlZmVyZW56ZW4iCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyNAorbXNnaWQgInB1c2ggdGFncyAoY2FuJ3QgYmUgdXNlZCB3aXRoIC0tYWxsIG9yIC0tbWlycm9yKSIKK21zZ3N0ciAiIgorInZlcnNlbmRldCBNYXJraWVydW5nZW4gKGthbm4gbmljaHQgbWl0IC0tYWxsIG9kZXIgLS1taXJyb3IgdmVyd2VuZGV0IHdlcmRlbikiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyNworbXNnaWQgImZvcmNlIHVwZGF0ZXMiCittc2dzdHIgImVyendpbmd0IEFrdHVhbGlzaWVydW5nIgorCisjOiBidWlsdGluL3B1c2guYzo0MjgKK21zZ2lkICJjaGVjayIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3B1c2guYzo0MjkKK21zZ2lkICJjb250cm9sIHJlY3Vyc2l2ZSBwdXNoaW5nIG9mIHN1Ym1vZHVsZXMiCittc2dzdHIgInN0ZXVlcnQgcmVrdXJzaXZlcyBWZXJzZW5kZW4gdm9uIFVudGVycHJvamVrdGVuIgorCisjOiBidWlsdGluL3B1c2guYzo0MzEKK21zZ2lkICJ1c2UgdGhpbiBwYWNrIgorbXNnc3RyICJ2ZXJ3ZW5kZXQga2xlaW5lcmUgUGFrZXRlIgorCisjOiBidWlsdGluL3B1c2guYzo0MzIgYnVpbHRpbi9wdXNoLmM6NDMzCittc2dpZCAicmVjZWl2ZSBwYWNrIHByb2dyYW0iCittc2dzdHIgIidyZWNlaXZlIHBhY2snIFByb2dyYW1tIgorCisjOiBidWlsdGluL3B1c2guYzo0MzQKK21zZ2lkICJzZXQgdXBzdHJlYW0gZm9yIGdpdCBwdWxsL3N0YXR1cyIKK21zZ3N0ciAic2V0enQgZXh0ZXJuZXMgUHJvamVrdGFyY2hpdiBmw7xyIFwiZ2l0IHB1bGwvc3RhdHVzXCIiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzNworbXNnaWQgInBydW5lIGxvY2FsbHkgcmVtb3ZlZCByZWZzIgorbXNnc3RyICJlbnRmZXJudCBsb2thbCBnZWzDtnNjaHRlIFJlZmVyZW56ZW4iCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzOQorbXNnaWQgImJ5cGFzcyBwcmUtcHVzaCBob29rIgorbXNnc3RyICJ1bWdlaHQgXCJwcmUtcHVzaCBob29rXCIiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ0MAorbXNnaWQgInB1c2ggbWlzc2luZyBidXQgcmVsZXZhbnQgdGFncyIKK21zZ3N0ciAidmVyc2VuZGV0IGZlaGxlbmRlLCBhYmVyIHJlbGV2YW50ZSBNYXJraWVydW5nZW4iCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ1MAogbXNnaWQgIi0tZGVsZXRlIGlzIGluY29tcGF0aWJsZSB3aXRoIC0tYWxsLCAtLW1pcnJvciBhbmQgLS10YWdzIgotbXNnc3RyICItLWRlbGV0ZSBpc3QgaW5rb21wYXRpYmVsIG1pdCAtLWFsbCwgLS1taXJyb3IgdW5kIC0tdGFncyIKK21zZ3N0ciAiRGllIE9wdGlvbiAtLWRlbGV0ZSBpc3QgaW5rb21wYXRpYmVsIG1pdCAtLWFsbCwgLS1taXJyb3IgdW5kIC0tdGFncy4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM4NworIzogYnVpbHRpbi9wdXNoLmM6NDUyCiBtc2dpZCAiLS1kZWxldGUgZG9lc24ndCBtYWtlIHNlbnNlIHdpdGhvdXQgYW55IHJlZnMiCi1tc2dzdHIgIi0tZGVsZXRlIG1hY2h0IG9obmUgaXJnZW5kZWluZSBSZWZlcmVueiBrZWluZW4gU2lubiIKK21zZ3N0ciAiRGllIE9wdGlvbiAtLWRlbGV0ZSBrYW5uIG51ciBtaXQgUmVmZXJlbnplbiB2ZXJ3ZW5kZXQgd2VyZGVuLiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzozNgorbXNnaWQgIiIKKyJnaXQgcmVhZC10cmVlIFtbLW0gWy0tdHJpdmlhbF0gWy0tYWdncmVzc2l2ZV0gfCAtLXJlc2V0IHwgLS1wcmVmaXg9PHByZWZpeD5dICIKKyJbLXUgWy0tZXhjbHVkZS1wZXItZGlyZWN0b3J5PTxnaXRpZ25vcmU+XSB8IC1pXV0gWy0tbm8tc3BhcnNlLWNoZWNrb3V0XSBbLS0iCisiaW5kZXgtb3V0cHV0PTxmaWxlPl0gKC0tZW1wdHkgfCA8dHJlZS1pc2gxPiBbPHRyZWUtaXNoMj4gWzx0cmVlLWlzaDM+XV0pIgorbXNnc3RyICIiCisiZ2l0IHJlYWQtdHJlZSBbWy1tIFstLXRyaXZpYWxdIFstLWFnZ3Jlc3NpdmVdIHwgLS1yZXNldCB8IC0tcHJlZml4PTxQcmVmaXg+XSAiCisiWy11IFstLWV4Y2x1ZGUtcGVyLWRpcmVjdG9yeT08Z2l0aWdub3JlPl0gfCAtaV1dIFstLW5vLXNwYXJzZS1jaGVja291dF0gWy0tIgorImluZGV4LW91dHB1dD08RGF0ZWk+XSAoLS1lbXB0eSB8IDxWZXJzaW9uc3JlZmVyZW56MT4gWzxWZXJzaW9uc3JlZmVyZW56Mj4gIgorIls8VmVyc2lvbnNyZWZlcmVuejM+XV0pIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEwOAorbXNnaWQgIndyaXRlIHJlc3VsdGluZyBpbmRleCB0byA8ZmlsZT4iCittc2dzdHIgInNjaHJlaWJ0IHJlc3VsdGllcmVuZGUgQmVyZWl0c3RlbGx1bmcgbmFjaCA8RGF0ZWk+IgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjExMQorbXNnaWQgIm9ubHkgZW1wdHkgdGhlIGluZGV4IgorbXNnc3RyICJsZWVydCBkaWUgQmVyZWl0c3RlbGx1bmciCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTEzCittc2dpZCAiTWVyZ2luZyIKK21zZ3N0ciAiWnVzYW1tZW5mw7xocnVuZyIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTUKK21zZ2lkICJwZXJmb3JtIGEgbWVyZ2UgaW4gYWRkaXRpb24gdG8gYSByZWFkIgorbXNnc3RyICJmw7xocnQgZWluZSBadXNhbW1lbmbDvGhydW5nIHp1c8OkdHpsaWNoIHp1bSBMZXNlbiBhdXMiCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTE3Cittc2dpZCAiMy13YXkgbWVyZ2UgaWYgbm8gZmlsZSBsZXZlbCBtZXJnaW5nIHJlcXVpcmVkIgorbXNnc3RyICIiCisiMy1XZWdlLVp1c2FtbWVuZsO8aHJ1bmcsIHdlbm4ga2VpbmUgWnVzYW1tZW5mw7xocnVuZyBhdWYgRGF0ZWllYmVuZSAiCisiZXJmb3JkZXJsaWNoIGlzdCIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTkKK21zZ2lkICIzLXdheSBtZXJnZSBpbiBwcmVzZW5jZSBvZiBhZGRzIGFuZCByZW1vdmVzIgorbXNnc3RyICIiCisiMy1XZWdlLVp1c2FtbWVuZsO8aHJ1bmcgYmVpIFZvcmhhbmRlbnNlaW4gdm9uIGhpbnp1Z2Vmw7xndGVuL2VudGZlcm50ZW4gWmVpbGVuIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyMQorbXNnaWQgInNhbWUgYXMgLW0sIGJ1dCBkaXNjYXJkIHVubWVyZ2VkIGVudHJpZXMiCittc2dzdHIgImdlbmF1IHdpZSAtbSwgdmVyd2lyZnQgYWJlciBuaWNodCB6dXNhbW1lbmdlZsO8aHJ0ZSBFaW50csOkZ2UiCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTIyCittc2dpZCAiPHN1YmRpcmVjdG9yeT4vIgorbXNnc3RyICI8VW50ZXJ2ZXJ6ZWljaG5pcz4vIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyMworbXNnaWQgInJlYWQgdGhlIHRyZWUgaW50byB0aGUgaW5kZXggdW5kZXIgPHN1YmRpcmVjdG9yeT4vIgorbXNnc3RyICJsaWVzdCBkZW4gQmF1bSBpbiBkaWUgQmVyZWl0c3RlbGx1bmcgdW50ZXIgPFVudGVydmVyemVpY2huaXM+LyIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjYKK21zZ2lkICJ1cGRhdGUgd29ya2luZyB0cmVlIHdpdGggbWVyZ2UgcmVzdWx0IgorbXNnc3RyICJha3R1YWxpc2llcnQgQXJiZWl0c2JhdW0gbWl0IEVyZ2VibmlzIGRlciBadXNhbW1lbmbDvGhydW5nIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyOAorbXNnaWQgImdpdGlnbm9yZSIKK21zZ3N0ciAiZ2l0aWdub3JlIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyOQorbXNnaWQgImFsbG93IGV4cGxpY2l0bHkgaWdub3JlZCBmaWxlcyB0byBiZSBvdmVyd3JpdHRlbiIKK21zZ3N0ciAiZXJsYXVidCBleHBsaXppdCBpZ25vcmllcnRlIERhdGVpZW4genUgw7xiZXJzY2hyZWliZW4iCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTMyCittc2dpZCAiZG9uJ3QgY2hlY2sgdGhlIHdvcmtpbmcgdHJlZSBhZnRlciBtZXJnaW5nIgorbXNnc3RyICJwcsO8ZnQgbmljaHQgZGVuIEFyYmVpdHNiYXVtIG5hY2ggZGVyIFp1c2FtbWVuZsO8aHJ1bmciCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTMzCittc2dpZCAiZG9uJ3QgdXBkYXRlIHRoZSBpbmRleCBvciB0aGUgd29yayB0cmVlIgorbXNnc3RyICJha3R1YWxpc2llcnQgd2VkZXIgZGllIEJlcmVpdHN0ZWxsdW5nLCBub2NoIGRlbiBBcmJlaXRzYmF1bSIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzUKK21zZ2lkICJza2lwIGFwcGx5aW5nIHNwYXJzZSBjaGVja291dCBmaWx0ZXIiCittc2dzdHIgIsO8YmVyc3ByaW5ndCBBbndlbmR1bmcgZGVzIEZpbHRlcnMgZsO8ciBzcMOkcmxpY2hlcyBBdXNjaGVja2VuIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzNworbXNnaWQgImRlYnVnIHVucGFjay10cmVlcyIKK21zZ3N0ciAicHJvdG9rb2xsaWVydCBFbnRwYWNrZW4gZGVyIELDpHVtZSIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxMQorbXNnaWQgImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBbLXYgfCAtLXZlcmJvc2VdIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjEyCittc2dpZCAiIgorImdpdCByZW1vdGUgYWRkIFstdCA8YnJhbmNoPl0gWy1tIDxtYXN0ZXI+XSBbLWZdIFstLXRhZ3N8LS1uby10YWdzXSBbLS0iCisibWlycm9yPTxmZXRjaHxwdXNoPl0gPG5hbWU+IDx1cmw+IgorbXNnc3RyICIiCisiZ2l0IHJlbW90ZSBhZGQgWy10IDxad2VpZz5dIFstbSA8bWFzdGVyPl0gWy1mXSBbLS10YWdzfC0tbm8tdGFnc10gWy0tIgorIm1pcnJvcj08ZmV0Y2h8cHVzaD5dIDxOYW1lPiA8VVJMPiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxMyBidWlsdGluL3JlbW90ZS5jOjMyCittc2dpZCAiZ2l0IHJlbW90ZSByZW5hbWUgPG9sZD4gPG5ldz4iCittc2dzdHIgImdpdCByZW1vdGUgcmVuYW1lIDxhbHQ+IDxuZXU+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE0IGJ1aWx0aW4vcmVtb3RlLmM6MzcKK21zZ2lkICJnaXQgcmVtb3RlIHJlbW92ZSA8bmFtZT4iCittc2dzdHIgImdpdCByZW1vdGUgcmVtb3ZlIDxOYW1lPiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNSBidWlsdGluL3JlbW90ZS5jOjQyCittc2dpZCAiZ2l0IHJlbW90ZSBzZXQtaGVhZCA8bmFtZT4gKC1hIHwgLWQgfCA8YnJhbmNoPikiCittc2dzdHIgImdpdCByZW1vdGUgc2V0LWhlYWQgPE5hbWU+ICgtYSB8IC1kIHwgPFp3ZWlnPikiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTYKK21zZ2lkICJnaXQgcmVtb3RlIFstdiB8IC0tdmVyYm9zZV0gc2hvdyBbLW5dIDxuYW1lPiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBbLXYgfCAtLXZlcmJvc2VdIHNob3cgWy1uXSA8TmFtZT4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTcKK21zZ2lkICJnaXQgcmVtb3RlIHBydW5lIFstbiB8IC0tZHJ5LXJ1bl0gPG5hbWU+IgorbXNnc3RyICJnaXQgcmVtb3RlIHBydW5lIFstbiB8IC0tZHJ5LXJ1bl0gPE5hbWU+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE4Cittc2dpZCAiIgorImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSB1cGRhdGUgWy1wIHwgLS1wcnVuZV0gWyg8Z3JvdXA+IHwgPHJlbW90ZT4pLi4uXSIKK21zZ3N0ciAiIgorImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSB1cGRhdGUgWy1wIHwgLS1wcnVuZV0gWyg8R3J1cHBlPiB8ICIKKyI8ZXh0ZXJuZXNQcm9qZWt0YXJjaGl2PikuLi5dIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE5Cittc2dpZCAiZ2l0IHJlbW90ZSBzZXQtYnJhbmNoZXMgWy0tYWRkXSA8bmFtZT4gPGJyYW5jaD4uLi4iCittc2dzdHIgImdpdCByZW1vdGUgc2V0LWJyYW5jaGVzIFstLWFkZF0gPE5hbWU+IDxad2VpZz4uLi4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MjAgYnVpbHRpbi9yZW1vdGUuYzo2OAorbXNnaWQgImdpdCByZW1vdGUgc2V0LXVybCBbLS1wdXNoXSA8bmFtZT4gPG5ld3VybD4gWzxvbGR1cmw+XSIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBzZXQtdXJsIFstLXB1c2hdIDxOYW1lPiA8bmV1ZVVSTD4gWzxhbHRlVVJMPl0iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MjEgYnVpbHRpbi9yZW1vdGUuYzo2OQorbXNnaWQgImdpdCByZW1vdGUgc2V0LXVybCAtLWFkZCA8bmFtZT4gPG5ld3VybD4iCittc2dzdHIgImdpdCByZW1vdGUgc2V0LXVybCAtLWFkZCA8TmFtZT4gPG5ldWVVUkw+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjIyIGJ1aWx0aW4vcmVtb3RlLmM6NzAKK21zZ2lkICJnaXQgcmVtb3RlIHNldC11cmwgLS1kZWxldGUgPG5hbWU+IDx1cmw+IgorbXNnc3RyICJnaXQgcmVtb3RlIHNldC11cmwgLS1kZWxldGUgPE5hbWU+IDxVUkw+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjI3Cittc2dpZCAiZ2l0IHJlbW90ZSBhZGQgWzxvcHRpb25zPl0gPG5hbWU+IDx1cmw+IgorbXNnc3RyICJnaXQgcmVtb3RlIGFkZCBbPE9wdGlvbmVuPl0gPE5hbWU+IDxVUkw+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjQ3Cittc2dpZCAiZ2l0IHJlbW90ZSBzZXQtYnJhbmNoZXMgPG5hbWU+IDxicmFuY2g+Li4uIgorbXNnc3RyICJnaXQgcmVtb3RlIHNldC1icmFuY2hlcyA8TmFtZT4gPFp3ZWlnPi4uLiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzo0OAorbXNnaWQgImdpdCByZW1vdGUgc2V0LWJyYW5jaGVzIC0tYWRkIDxuYW1lPiA8YnJhbmNoPi4uLiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBzZXQtYnJhbmNoZXMgLS1hZGQgPE5hbWU+IDxad2VpZz4uLi4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NTMKK21zZ2lkICJnaXQgcmVtb3RlIHNob3cgWzxvcHRpb25zPl0gPG5hbWU+IgorbXNnc3RyICJnaXQgcmVtb3RlIHNob3cgWzxPcHRpb25lbj5dIDxOYW1lPiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzo1OAorbXNnaWQgImdpdCByZW1vdGUgcHJ1bmUgWzxvcHRpb25zPl0gPG5hbWU+IgorbXNnc3RyICJnaXQgcmVtb3RlIHBydW5lIFs8T3B0aW9uZW4+XSA8TmFtZT4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NjMKK21zZ2lkICJnaXQgcmVtb3RlIHVwZGF0ZSBbPG9wdGlvbnM+XSBbPGdyb3VwPiB8IDxyZW1vdGU+XS4uLiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSB1cGRhdGUgWzxPcHRpb25lbj5dIFs8R3J1cHBlPiB8IDxleHRlcm5lc1Byb2pla3RhcmNoaXY+XS4uLiIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzo5OAogIywgYy1mb3JtYXQKQEAgLTQxNTksMjIgKzc5MTgsNTMgQEAKICJcdCB1c2UgLS1taXJyb3I9ZmV0Y2ggb3IgLS1taXJyb3I9cHVzaCBpbnN0ZWFkIgogbXNnc3RyICIiCiAiLS1taXJyb3IgaXN0IGdlZsOkaHJsaWNoIHVuZCB2ZXJhbHRldDsgYml0dGVcbiIKLSJcdCBiZW51dHplIHN0YXR0ZGVzc2VuIC0tbWlycm9yPWZldGNoIG9kZXIgLS1taXJyb3I9cHVzaCIKKyJcdCBiZW51dHplbiBTaWUgc3RhdHRkZXNzZW4gLS1taXJyb3I9ZmV0Y2ggb2RlciAtLW1pcnJvcj1wdXNoIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjE0NwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duIG1pcnJvciBhcmd1bWVudDogJXMiCiBtc2dzdHIgInVuYmVrYW5udGVzIEFyZ3VtZW50IGbDvHIgT3B0aW9uIC0tbWlycm9yOiAlcyIKIAorIzogYnVpbHRpbi9yZW1vdGUuYzoxNjMKK21zZ2lkICJmZXRjaCB0aGUgcmVtb3RlIGJyYW5jaGVzIgorbXNnc3RyICJmb3JkZXJ0IGRpZSBleHRlcm5lbiBad2VpZ2UgYW4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTY1Cittc2dpZCAiaW1wb3J0IGFsbCB0YWdzIGFuZCBhc3NvY2lhdGVkIG9iamVjdHMgd2hlbiBmZXRjaGluZyIKK21zZ3N0ciAiaW1wb3J0aWVydCBhbGxlIE1hcmtpZXJ1bmdlbiB1bmQgdmVyYnVuZGVuZSBPYmpla3RlIGJlaW0gQW5mb3JkZXJuIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE2OAorbXNnaWQgIm9yIGRvIG5vdCBmZXRjaCBhbnkgdGFnIGF0IGFsbCAoLS1uby10YWdzKSIKK21zZ3N0ciAib2RlciBmb3JkZXJlIGdhciBrZWluZSBad2VpZ2UgYW4gKC0tbm8tdGFncykiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTcwCittc2dpZCAiYnJhbmNoKGVzKSB0byB0cmFjayIKK21zZ3N0ciAiWndlaWdlIHp1ciDDnGJlcm5haG1lIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE3MQorbXNnaWQgIm1hc3RlciBicmFuY2giCittc2dzdHIgIkhhdXB0endlaWciCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTcyCittc2dpZCAicHVzaHxmZXRjaCIKK21zZ3N0ciAicHVzaHxmZXRjaCIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNzMKK21zZ2lkICJzZXQgdXAgcmVtb3RlIGFzIGEgbWlycm9yIHRvIHB1c2ggdG8gb3IgZmV0Y2ggZnJvbSIKK21zZ3N0ciAiIgorIkF1ZnNldHplbiBkZXMgRmVybmFyY2hpdnMgYWxzIFNwaWVnZWxhcmNoaXYgenVtIFZlcnNlbmRlbiB1bmQgQW5mb3JkZXJuIgorCiAjOiBidWlsdGluL3JlbW90ZS5jOjE4NQogbXNnaWQgInNwZWNpZnlpbmcgYSBtYXN0ZXIgYnJhbmNoIG1ha2VzIG5vIHNlbnNlIHdpdGggLS1taXJyb3IiCi1tc2dzdHIgIkFuZ2FiZSBlaW5lcyBIYXVwdHp3ZWlnZXMgbWFjaHQgbWl0IC0tbWlycm9yIGtlaW5lbiBTaW5uIgorbXNnc3RyICIiCisiRGllIE9wdGlvbiAtLW1pcnJvciBrYW5uIG5pY2h0IG1pdCBkZXIgQW5nYWJlIGVpbmVzIEhhdXB0endlaWdlcyB2ZXJ3ZW5kZXQgIgorIndlcmRlbi4iCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTg3CiBtc2dpZCAic3BlY2lmeWluZyBicmFuY2hlcyB0byB0cmFjayBtYWtlcyBzZW5zZSBvbmx5IHdpdGggZmV0Y2ggbWlycm9ycyIKIG1zZ3N0ciAiIgotImRpZSBBbmdhYmUgdm9uIHp1IGZvbGdlbmRlbiBad2VpZ2VuIG1hY2h0IG51ciBtaXQgZGVtIEFiaG9sZW4gdm9uICIKLSJTcGllZ2VsYXJjaGl2ZW4gU2lubiIKKyJEaWUgQW5nYWJlIHZvbiB6dSBmb2xnZW5kZW4gWndlaWdlbiBrYW5uIG51ciBtaXQgZGVtIEFuZm9yZGVybiB2b24gIgorIlNwaWVnZWxhcmNoaXZlbiB2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxOTUgYnVpbHRpbi9yZW1vdGUuYzo2NDYKICMsIGMtZm9ybWF0CkBAIC00MjM5LDcgKzgwMjksNyBAQAogIktlaW5lIEFrdHVhbGlzaWVydW5nIGRlciBuaWNodCBzdGFuZGFyZG3DpMOfaWdlbiBSZWZlcmVuenNwZXppZmlrYXRpb24genVtICIKICJBYmhvbGVuXG4iCiAiXHQlc1xuIgotIlx0Qml0dGUgYWt0dWFsaXNpZXJlLCBmYWxscyBub3R3ZW5kaWcsIGRpZSBLb25maWd1cmF0aW9uIG1hbnVlbGwuIgorIlx0Qml0dGUgYWt0dWFsaXNpZXJlbiBTaWUsIGZhbGxzIG5vdHdlbmRpZywgZGllIEtvbmZpZ3VyYXRpb24gbWFudWVsbC4iCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6NjgzCiAjLCBjLWZvcm1hdApAQCAtNDI2NCw3ICs4MDU0LDcgQEAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6NzY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCByZW1vdmUgYnJhbmNoICVzIgotbXNnc3RyICJLb25udGUgWndlaWcgJXMgbmljaHQgZW50ZmVybmVuIgorbXNnc3RyICJLb25udGUgWndlaWcgJXMgbmljaHQgbMO2c2NoZW4iCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6ODM0CiBtc2dpZCAiIgpAQCAtNDI3NSwxMiArODA2NSwxMiBAQAogInRvIGRlbGV0ZSB0aGVtLCB1c2U6IgogbXNnc3RyWzBdICIiCiAiSGlud2VpczogRWluIFp3ZWlnIGF1w59lcmhhbGIgZGVyIC9yZWZzL3JlbW90ZXMvIEhpZXJhY2hpZSB3dXJkZSBuaWNodCAiCi0iZW50ZmVybnQ7XG4iCi0idW0gZGllc2VuIHp1IGVudGZlcm5lbiwgYmVudXR6ZToiCisiZ2Vsw7ZzY2h0O1xuIgorInVtIGRpZXNlbiB6dSBsw7ZzY2hlbiwgYmVudXR6ZW4gU2llOiIKIG1zZ3N0clsxXSAiIgogIkhpbndlaXM6IEVpbmlnZSBad2VpZ2UgYXXDn2VyIGRlciAvcmVmcy9yZW1vdGVzLyBIaWVyYXJjaGllIHd1cmRlbiBuaWNodCAiCiAiZW50ZmVybnQ7XG4iCi0idW0gZGllc2UgenUgZW50ZmVybmVuLCBiZW51dHplOiIKKyJ1bSBkaWVzZSB6dSBlbnRmZXJuZW4sIGJlbnV0emVuIFNpZToiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6OTQzCiAjLCBjLWZvcm1hdApAQCAtNDI5Myw3ICs4MDgzLDcgQEAKIAogIzogYnVpbHRpbi9yZW1vdGUuYzo5NDgKIG1zZ2lkICIgc3RhbGUgKHVzZSAnZ2l0IHJlbW90ZSBwcnVuZScgdG8gcmVtb3ZlKSIKLW1zZ3N0ciAiIHZlcmFsdGV0IChiZW51dHplICdnaXQgcmVtb3RlIHBydW5lJyB6dW0gRW50ZmVybmVuKSIKK21zZ3N0ciAiIHZlcmFsdGV0IChiZW51dHplbiBTaWUgJ2dpdCByZW1vdGUgcHJ1bmUnIHp1bSBMw7ZzY2hlbikiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6OTUwCiBtc2dpZCAiID8/PyIKQEAgLTQzNjcsNiArODE1NywxMCBAQAogbXNnaWQgIiAgICAlLSpzIHB1c2hlcyB0byAlcyIKIG1zZ3N0ciAiICAgICUtKnMgdmVyc2VuZGV0IG5hY2ggJXMiCiAKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTA5MQorbXNnaWQgImRvIG5vdCBxdWVyeSByZW1vdGVzIgorbXNnc3RyICJrZWluZSBBYmZyYWdlIHZvbiBGZXJuYXJjaGl2ZW4iCisKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTExOAogIywgYy1mb3JtYXQKIG1zZ2lkICIqIHJlbW90ZSAlcyIKQEAgLTQ0MjcsNiArODIyMSwxNCBAQAogbXNnc3RyWzBdICIgIExva2FsZSBSZWZlcmVueiBrb25maWd1cmllcnQgZsO8ciAnZ2l0IHB1c2gnJXM6IgogbXNnc3RyWzFdICIgIExva2FsZSBSZWZlcmVuemVuIGtvbmZpZ3VyaWVydCBmw7xyICdnaXQgcHVzaCclczoiCiAKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTE5OQorbXNnaWQgInNldCByZWZzL3JlbW90ZXMvPG5hbWU+L0hFQUQgYWNjb3JkaW5nIHRvIHJlbW90ZSIKK21zZ3N0ciAic2V0enQgcmVmcy9yZW1vdGVzLzxOYW1lPi9IRUFEIGdlbcOkw58gZGVtIEZlcm5hcmNoaXYiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTIwMQorbXNnaWQgImRlbGV0ZSByZWZzL3JlbW90ZXMvPG5hbWU+L0hFQUQiCittc2dzdHIgImVudGZlcm50IHJlZnMvcmVtb3Rlcy88TmFtZT4vSEVBRCIKKwogIzogYnVpbHRpbi9yZW1vdGUuYzoxMjE2CiBtc2dpZCAiQ2Fubm90IGRldGVybWluZSByZW1vdGUgSEVBRCIKIG1zZ3N0ciAiS2FubiBIYXVwdHp3ZWlnIGRlcyBleHRlcm5lbiBQcm9qZWt0YXJjaGl2cyBuaWNodCBiZXN0aW1tZW4iCkBAIC00NDM0LDggKzgyMzYsOCBAQAogIzogYnVpbHRpbi9yZW1vdGUuYzoxMjE4CiBtc2dpZCAiTXVsdGlwbGUgcmVtb3RlIEhFQUQgYnJhbmNoZXMuIFBsZWFzZSBjaG9vc2Ugb25lIGV4cGxpY2l0bHkgd2l0aDoiCiBtc2dzdHIgIiIKLSJNZWhyZXJlIEhhdXB0endlaWdlIGltIGV4dGVybmVuIFByb2pla3RhcmNoaXYuIEJpdHRlIHfDpGhsZSBleHBsaXppdCBlaW5lbiAiCi0iYXVzIG1pdDoiCisiTWVocmVyZSBIYXVwdHp3ZWlnZSBpbSBleHRlcm5lbiBQcm9qZWt0YXJjaGl2LiBCaXR0ZSB3w6RobGVuIFNpZSBleHBsaXppdCAiCisiZWluZW4gYXVzIG1pdDoiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTIyOAogIywgYy1mb3JtYXQKQEAgLTQ0ODIsMTggKzgyODQsMzkgQEAKIG1zZ2lkICIgKiBbcHJ1bmVkXSAlcyIKIG1zZ3N0ciAiKiBbdmVyYWx0ZXRlbiBad2VpZyBlbnRmZXJudF0gJXMiCiAKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTMyMQorbXNnaWQgInBydW5lIHJlbW90ZXMgYWZ0ZXIgZmV0Y2hpbmciCittc2dzdHIgImVudGZlcm50IHZlcmFsdGV0ZSBad2VpZ2UgaW0gRmVybmFyY2hpdiBuYWNoIGRlbSBBYmhvbGVuIgorCiAjOiBidWlsdGluL3JlbW90ZS5jOjEzODcgYnVpbHRpbi9yZW1vdGUuYzoxNDYxCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHN1Y2ggcmVtb3RlICclcyciCiBtc2dzdHIgIktlaW4gc29sY2hlcyBleHRlcm5lcyBQcm9qZWt0YXJjaGl2ICclcyciCiAKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQwNworbXNnaWQgImFkZCBicmFuY2giCittc2dzdHIgImbDvGd0IFp3ZWlnIGhpbnp1IgorCiAjOiBidWlsdGluL3JlbW90ZS5jOjE0MTQKIG1zZ2lkICJubyByZW1vdGUgc3BlY2lmaWVkIgogbXNnc3RyICJrZWluIGV4dGVybmVzIFByb2pla3RhcmNoaXYgYW5nZWdlYmVuIgogCisjOiBidWlsdGluL3JlbW90ZS5jOjE0MzYKK21zZ2lkICJtYW5pcHVsYXRlIHB1c2ggVVJMcyIKK21zZ3N0ciAibWFuaXB1bGllcnQgVVJMcyB6dW0gVmVyc2VuZGVuIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE0MzgKK21zZ2lkICJhZGQgVVJMIgorbXNnc3RyICJmw7xndCBVUkwgaGluenUiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQ0MAorbXNnaWQgImRlbGV0ZSBVUkxzIgorbXNnc3RyICJsw7ZzY2h0IFVSTHMiCisKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQ0NwogbXNnaWQgIi0tYWRkIC0tZGVsZXRlIGRvZXNuJ3QgbWFrZSBzZW5zZSIKLW1zZ3N0ciAiLS1hZGQgLS1kZWxldGUgbWFjaHQga2VpbmVuIFNpbm4iCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uZW4gLS1hZGQgdW5kIC0tZGVsZXRlIGvDtm5uZW4gbmljaHQgZ2VtZWluc2FtIHZlcndlbmRldCB3ZXJkZW4uIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjE0ODcKICMsIGMtZm9ybWF0CkBAIC00NTA5LDYgKzgzMzIsNTYgQEAKIG1zZ2lkICJXaWxsIG5vdCBkZWxldGUgYWxsIG5vbi1wdXNoIFVSTHMiCiBtc2dzdHIgIldlcmRlIGtlaW5lIFVSTHMgZW50ZmVybmVuLCBkaWUgbmljaHQgZsO8ciBkZW4gVmVyc2FuZCBiZXN0aW1tdCBzaW5kIgogCisjOiBidWlsdGluL3JlbW90ZS5jOjE1NjkKK21zZ2lkICJiZSB2ZXJib3NlOyBtdXN0IGJlIHBsYWNlZCBiZWZvcmUgYSBzdWJjb21tYW5kIgorbXNnc3RyICJlcndlaXRlcnRlIEF1c2dhYmVuOyBtdXNzIHZvciBlaW5lbSBVbnRlcmtvbW1hbmRvIGFuZ2VnZWJlbiB3ZXJkZW4iCisKKyM6IGJ1aWx0aW4vcmVwbGFjZS5jOjE3Cittc2dpZCAiZ2l0IHJlcGxhY2UgWy1mXSA8b2JqZWN0PiA8cmVwbGFjZW1lbnQ+IgorbXNnc3RyICJnaXQgcmVwbGFjZSBbLWZdIDxPYmpla3Q+IDxFcnNldHp1bmc+IgorCisjOiBidWlsdGluL3JlcGxhY2UuYzoxOAorbXNnaWQgImdpdCByZXBsYWNlIC1kIDxvYmplY3Q+Li4uIgorbXNnc3RyICJnaXQgcmVwbGFjZSAtZCA8T2JqZWt0Pi4uLiIKKworIzogYnVpbHRpbi9yZXBsYWNlLmM6MTkKK21zZ2lkICJnaXQgcmVwbGFjZSAtbCBbPHBhdHRlcm4+XSIKK21zZ3N0ciAiZ2l0IHJlcGxhY2UgLWwgWzxNdXN0ZXI+XSIKKworIzogYnVpbHRpbi9yZXBsYWNlLmM6MTIxCittc2dpZCAibGlzdCByZXBsYWNlIHJlZnMiCittc2dzdHIgImxpc3RldCBlcnNldHplbmRlIFJlZmVyZW56ZW4gYXVmIgorCisjOiBidWlsdGluL3JlcGxhY2UuYzoxMjIKK21zZ2lkICJkZWxldGUgcmVwbGFjZSByZWZzIgorbXNnc3RyICJsw7ZzY2h0IGVyc2V0emVuZGUgUmVmZXJlbnplbiIKKworIzogYnVpbHRpbi9yZXBsYWNlLmM6MTIzCittc2dpZCAicmVwbGFjZSB0aGUgcmVmIGlmIGl0IGV4aXN0cyIKK21zZ3N0ciAiZXJzZXR6dCBkaWUgUmVmZXJlbnosIHdlbm4gc2llIGV4aXN0aWVydCIKKworIzogYnVpbHRpbi9yZXJlcmUuYzoxMQorbXNnaWQgImdpdCByZXJlcmUgW2NsZWFyIHwgZm9yZ2V0IHBhdGguLi4gfCBzdGF0dXMgfCByZW1haW5pbmcgfCBkaWZmIHwgZ2NdIgorbXNnc3RyICJnaXQgcmVyZXJlIFtjbGVhbiB8IGZvcmdldCBwYXRoLi4uIHwgc3RhdHVzIHwgcmVtYWluaW5nIHwgZGlmZiB8IGdjXSIKKworIzogYnVpbHRpbi9yZXJlcmUuYzo1NgorbXNnaWQgInJlZ2lzdGVyIGNsZWFuIHJlc29sdXRpb25zIGluIGluZGV4IgorbXNnc3RyICJyZWdpc3RyaWVydCBzYXViZXJlIEF1ZmzDtnN1bmdlbiBpbiBkZXIgQmVyZWl0c3RlbGx1bmciCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNQorbXNnaWQgIiIKKyJnaXQgcmVzZXQgWy0tbWl4ZWQgfCAtLXNvZnQgfCAtLWhhcmQgfCAtLW1lcmdlIHwgLS1rZWVwXSBbLXFdIFs8Y29tbWl0Pl0iCittc2dzdHIgIiIKKyJnaXQgcmVzZXQgWy0tbWl4ZWQgfCAtLXNvZnQgfCAtLWhhcmQgfCAtLW1lcmdlIHwgLS1rZWVwXSBbLXFdIFs8VmVyc2lvbj5dIgorCisjOiBidWlsdGluL3Jlc2V0LmM6MjYKK21zZ2lkICJnaXQgcmVzZXQgWy1xXSA8dHJlZS1pc2g+IFstLV0gPHBhdGhzPi4uLiIKK21zZ3N0ciAiZ2l0IHJlc2V0IFstcV0gPFZlcnNpb25zcmVmZXJlbno+IFstLV0gPFBmYWRlPi4uLiIKKworIzogYnVpbHRpbi9yZXNldC5jOjI3Cittc2dpZCAiZ2l0IHJlc2V0IC0tcGF0Y2ggWzx0cmVlLWlzaD5dIFstLV0gWzxwYXRocz4uLi5dIgorbXNnc3RyICJnaXQgcmVzZXQgLS1wYXRjaCBbPFZlcnNpb25zcmVmZXJlbno+XSBbLS1dIFs8UGZhZGU+Li4uXSIKKwogIzogYnVpbHRpbi9yZXNldC5jOjMzCiBtc2dpZCAibWl4ZWQiCiBtc2dzdHIgIm1peGVkIgpAQCAtNDUyOSwxMzMgKzg0MDIsNDk5IEBACiBtc2dpZCAia2VlcCIKIG1zZ3N0ciAia2VlcCIKIAotIzogYnVpbHRpbi9yZXNldC5jOjc3CisjOiBidWlsdGluL3Jlc2V0LmM6NzMKIG1zZ2lkICJZb3UgZG8gbm90IGhhdmUgYSB2YWxpZCBIRUFELiIKLW1zZ3N0ciAiRHUgaGFzdCBrZWluZSBnw7xsdGlnZSBad2VpZ3NwaXR6ZSAoSEVBRCkuIgorbXNnc3RyICJTaWUgaGFiZW4ga2VpbmUgZ8O8bHRpZ2UgWndlaWdzcGl0emUgKEhFQUQpLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjc5CisjOiBidWlsdGluL3Jlc2V0LmM6NzUKIG1zZ2lkICJGYWlsZWQgdG8gZmluZCB0cmVlIG9mIEhFQUQuIgogbXNnc3RyICJGZWhsZXIgYmVpbSBGaW5kZW4gZGVzIEJhdW1lcyBkZXIgWndlaWdzcGl0emUgKEhFQUQpLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjg1CisjOiBidWlsdGluL3Jlc2V0LmM6ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGZpbmQgdHJlZSBvZiAlcy4iCiBtc2dzdHIgIkZlaGxlciBiZWltIEZpbmRlbiBkZXMgQmF1bWVzIHZvbiAlcy4iCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzo5NgotbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSBuZXcgaW5kZXggZmlsZS4iCi1tc2dzdHIgIktvbm50ZSBuZXVlIEJlcmVpdHN0ZWxsdW5nc2RhdGVpIG5pY2h0IHNjaHJlaWJlbi4iCi0KLSM6IGJ1aWx0aW4vcmVzZXQuYzoxMDYKKyM6IGJ1aWx0aW4vcmVzZXQuYzo5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJIRUFEIGlzIG5vdyBhdCAlcyIKIG1zZ3N0ciAiWndlaWdzcGl0emUgKEhFQUQpIGlzdCBqZXR6dCBiZWkgJXMiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoxMzAKLW1zZ2lkICJDb3VsZCBub3QgcmVhZCBpbmRleCIKLW1zZ3N0ciAiS29ubnRlIEJlcmVpdHN0ZWxsdW5nIG5pY2h0IGxlc2VuIgotCi0jOiBidWlsdGluL3Jlc2V0LmM6MTMzCi1tc2dpZCAiVW5zdGFnZWQgY2hhbmdlcyBhZnRlciByZXNldDoiCi1tc2dzdHIgIk5pY2h0IGJlcmVpdGdlc3RlbGx0ZSDDhG5kZXJ1bmdlbiBuYWNoIFp1csO8Y2tzZXR6dW5nOiIKLQotIzogYnVpbHRpbi9yZXNldC5jOjIyMworIzogYnVpbHRpbi9yZXNldC5jOjE2OQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZG8gYSAlcyByZXNldCBpbiB0aGUgbWlkZGxlIG9mIGEgbWVyZ2UuIgogbXNnc3RyICIiCiAiS2FubiBrZWluZSAnJXMnIFp1csO8Y2tzZXR6dW5nIGR1cmNoZsO8aHJlbiwgd8OkaHJlbmQgZWluZSBadXNhbW1lbmbDvGhydW5nIGltICIKICJHYW5nZSBpc3QuIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6Mjk3CisjOiBidWlsdGluL3Jlc2V0LmM6MjQ4Cittc2dpZCAiYmUgcXVpZXQsIG9ubHkgcmVwb3J0IGVycm9ycyIKK21zZ3N0ciAid2VuaWdlciBBdXNnYWJlbiwgbWVsZGV0IG51ciBGZWhsZXIiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTAKK21zZ2lkICJyZXNldCBIRUFEIGFuZCBpbmRleCIKK21zZ3N0ciAic2V0enQgWndlaWdzcGl0emUgKEhFQUQpIHVuZCBCZXJlaXRzdGVsbHVuZyBuZXUiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTEKK21zZ2lkICJyZXNldCBvbmx5IEhFQUQiCittc2dzdHIgInNldHp0IG51ciBad2VpZ3NwaXR6ZSAoSEVBRCkgbmV1IgorCisjOiBidWlsdGluL3Jlc2V0LmM6MjUzIGJ1aWx0aW4vcmVzZXQuYzoyNTUKK21zZ2lkICJyZXNldCBIRUFELCBpbmRleCBhbmQgd29ya2luZyB0cmVlIgorbXNnc3RyICJzZXR6dCBad2VpZ3NwaXR6ZSAoSEVBRCksIEJlcmVpdHN0ZWxsdW5nIHVuZCBBcmJlaXRzYmF1bSBuZXUiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTcKK21zZ2lkICJyZXNldCBIRUFEIGJ1dCBrZWVwIGxvY2FsIGNoYW5nZXMiCittc2dzdHIgInNldHp0IFp3ZWlnc3BpdHplIChIRUFEKSBuZXUsIGJlaMOkbHQgYWJlciBsb2thbGUgw4RuZGVydW5nZW4iCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgJyVzJyBhcyBhIHZhbGlkIHJldmlzaW9uLiIKK21zZ3N0ciAiS29ubnRlICclcycgbmljaHQgYWxzIGfDvGx0aWdlIFJldmlzaW9uIGF1ZmzDtnNlbi4iCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNzggYnVpbHRpbi9yZXNldC5jOjI4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcycuIgogbXNnc3RyICJLb25udGUgT2JqZWt0ICclcycgbmljaHQgcGFyc2VuLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMwMgorIzogYnVpbHRpbi9yZXNldC5jOjI4MworIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgdHJlZS4iCittc2dzdHIgIktvbm50ZSAnJXMnIG5pY2h0IGFscyBnw7xsdGlnZW4gQmF1bSBhdWZsw7ZzZW4uIgorCisjOiBidWlsdGluL3Jlc2V0LmM6MjkyCiBtc2dpZCAiLS1wYXRjaCBpcyBpbmNvbXBhdGlibGUgd2l0aCAtLXtoYXJkLG1peGVkLHNvZnR9IgogbXNnc3RyICItLXBhdGNoIGlzdCBpbmtvbXBhdGliZWwgbWl0IC0te2hhcmQsbWl4ZWQsc29mdH0iCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzozMTEKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMDEKIG1zZ2lkICItLW1peGVkIHdpdGggcGF0aHMgaXMgZGVwcmVjYXRlZDsgdXNlICdnaXQgcmVzZXQgLS0gPHBhdGhzPicgaW5zdGVhZC4iCiBtc2dzdHIgIiIKLSItLW1peGVkIG1pdCBQZmFkZW4gaXN0IHZlcmFsdGV0OyBiZW51dHplIHN0YXR0ZGVzc2VuICdnaXQgcmVzZXQgLS0gPFBmYWRlPicuIgorIi0tbWl4ZWQgbWl0IFBmYWRlbiBpc3QgdmVyYWx0ZXQ7IGJlbnV0emVuIFNpZSBzdGF0dGRlc3NlbiAnZ2l0IHJlc2V0IC0tICIKKyI8UGZhZGU+Jy4iCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzozMTMKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGRvICVzIHJlc2V0IHdpdGggcGF0aHMuIgogbXNnc3RyICJFaW5lICclcycgWnVyw7xja3NldHp1bmcgbWl0IFBmYWRlbiBpc3QgbmljaHQgbcO2Z2xpY2guIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzI1CisjOiBidWlsdGluL3Jlc2V0LmM6MzEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIHJlc2V0IGlzIG5vdCBhbGxvd2VkIGluIGEgYmFyZSByZXBvc2l0b3J5IgogbXNnc3RyICInJXMnIFp1csO8Y2tzZXR6dW5nIGlzdCBpbiBlaW5lbSBibG/Dn2VuIFByb2pla3RhcmNoaXYgbmljaHQgZXJsYXVidCIKIAotIzogYnVpbHRpbi9yZXNldC5jOjM0MQorIzogYnVpbHRpbi9yZXNldC5jOjMzMwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVzZXQgaW5kZXggZmlsZSB0byByZXZpc2lvbiAnJXMnLiIKLW1zZ3N0ciAiS29ubnRlIEJlcmVpdHN0ZWxsdW5nc2RhdGVpIG5pY2h0IHp1IFZlcnNpb24gJyVzJyB6dXLDvGNrc2V0emVuLiIKK21zZ3N0ciAiS29ubnRlIEJlcmVpdHN0ZWxsdW5nc2RhdGVpIG5pY2h0IHp1IFJldmlzaW9uICclcycgc2V0emVuLiIKKworIzogYnVpbHRpbi9yZXNldC5jOjMzOQorbXNnaWQgIlVuc3RhZ2VkIGNoYW5nZXMgYWZ0ZXIgcmVzZXQ6IgorbXNnc3RyICJOaWNodCBiZXJlaXRnZXN0ZWxsdGUgw4RuZGVydW5nZW4gbmFjaCBadXLDvGNrc2V0enVuZzoiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzozNDQKK21zZ2lkICJDb3VsZCBub3Qgd3JpdGUgbmV3IGluZGV4IGZpbGUuIgorbXNnc3RyICJLb25udGUgbmV1ZSBCZXJlaXRzdGVsbHVuZ3NkYXRlaSBuaWNodCBzY2hyZWliZW4uIgorCisjOiBidWlsdGluL3Jldi1wYXJzZS5jOjMzOQorbXNnaWQgImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCBbb3B0aW9uc10gLS0gWzxhcmdzPi4uLl0iCittc2dzdHIgImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCBbT3B0aW9uZW5dIC0tIFs8QXJndW1lbnRlPi4uLl0iCisKKyM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzQ0Cittc2dpZCAia2VlcCB0aGUgYC0tYCBwYXNzZWQgYXMgYW4gYXJnIgorbXNnc3RyICJsw6Rzc3QgYC0tYCBhbHMgQXJndW1lbnQiCisKKyM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzQ2Cittc2dpZCAic3RvcCBwYXJzaW5nIGFmdGVyIHRoZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50IgorbXNnc3RyICJzdG9wcHQgZGFzIFBhcnNlbiBuYWNoIGRlbSBlcnN0ZW4gQXJndW1lbnQgd2FzIGtlaW5lIE9wdGlvbiBpc3QiCisKKyM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6NDY0Cittc2dpZCAiIgorImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCBbb3B0aW9uc10gLS0gWzxhcmdzPi4uLl1cbiIKKyIgICBvcjogZ2l0IHJldi1wYXJzZSAtLXNxLXF1b3RlIFs8YXJnPi4uLl1cbiIKKyIgICBvcjogZ2l0IHJldi1wYXJzZSBbb3B0aW9uc10gWzxhcmc+Li4uXVxuIgorIlxuIgorIlJ1biBcImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCAtaFwiIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBmaXJzdCB1c2FnZS4iCittc2dzdHIgIiIKKyJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgW09wdGlvbmVuXSAtLSBbPEFyZ3VtZW50ZT4uLi5dXG4iCisiICAgb2RlcjogZ2l0IHJldi1wYXJzZSAtLXNxLXF1b3RlIFs8QXJndW1lbnRlPi4uLl1cbiIKKyIgICBvZGVyOiBnaXQgcmV2LXBhcnNlIFtPcHRpb25lbl0gWzxBcmd1bWVudGU+Li4uXVxuIgorIlxuIgorIkbDvGhyZW4gU2llIFwiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IC1oXCIgZsO8ciB3ZWl0ZXJlIEluZm9ybWF0aW9uZW4gYmVpICIKKyJlcnN0ZXIgVmVyd2VuZHVuZyBhdXMuIgorCisjOiBidWlsdGluL3JldmVydC5jOjIyCittc2dpZCAiZ2l0IHJldmVydCBbb3B0aW9uc10gPGNvbW1pdC1pc2g+Li4uIgorbXNnc3RyICJnaXQgcmV2ZXJ0IFtPcHRpb25lbl0gPFZlcnNpb25zYW5nYWJlPi4uLiIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoyMworbXNnaWQgImdpdCByZXZlcnQgPHN1YmNvbW1hbmQ+IgorbXNnc3RyICJnaXQgcmV2ZXJ0IDxVbnRlcmtvbW1hbmRvPiIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoyOAorbXNnaWQgImdpdCBjaGVycnktcGljayBbb3B0aW9uc10gPGNvbW1pdC1pc2g+Li4uIgorbXNnc3RyICJnaXQgY2hlcnJ5LXBpY2sgW09wdGlvbmVuXSA8VmVyc2lvbnNhbmdhYmU+Li4uIgorCisjOiBidWlsdGluL3JldmVydC5jOjI5Cittc2dpZCAiZ2l0IGNoZXJyeS1waWNrIDxzdWJjb21tYW5kPiIKK21zZ3N0ciAiZ2l0IGNoZXJyeS1waWNrIDxVbnRlcmtvbW1hbmRvPiIKIAogIzogYnVpbHRpbi9yZXZlcnQuYzo3MCBidWlsdGluL3JldmVydC5jOjkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiAlcyBjYW5ub3QgYmUgdXNlZCB3aXRoICVzIgotbXNnc3RyICIlczogJXMga2FubiBuaWNodCBtaXQgJXMgYmVudXR6dCB3ZXJkZW4iCittc2dzdHIgIiVzOiAlcyBrYW5uIG5pY2h0IG1pdCAlcyB2ZXJ3ZW5kZXQgd2VyZGVuIgogCi0jOiBidWlsdGluL3JldmVydC5jOjEzMQorIzogYnVpbHRpbi9yZXZlcnQuYzoxMDMKK21zZ2lkICJlbmQgcmV2ZXJ0IG9yIGNoZXJyeS1waWNrIHNlcXVlbmNlIgorbXNnc3RyICJiZWVuZGV0IFwicmV2ZXJ0XCIgb2RlciBcImNoZXJyeS1waWNrXCIgQWJsYXVmIgorCisjOiBidWlsdGluL3JldmVydC5jOjEwNAorbXNnaWQgInJlc3VtZSByZXZlcnQgb3IgY2hlcnJ5LXBpY2sgc2VxdWVuY2UiCittc2dzdHIgInNldHp0IFwicmV2ZXJ0XCIgb2RlciBcImNoZXJyeS1waWNrXCIgQWJsYXVmIGZvcnQiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA1Cittc2dpZCAiY2FuY2VsIHJldmVydCBvciBjaGVycnktcGljayBzZXF1ZW5jZSIKK21zZ3N0ciAiYnJpY2h0IFwicmV2ZXJ0XCIgb2RlciBcImNoZXJyeS1waWNrXCIgQWJsYXVmIGFiIgorCisjOiBidWlsdGluL3JldmVydC5jOjEwNgorbXNnaWQgImRvbid0IGF1dG9tYXRpY2FsbHkgY29tbWl0IgorbXNnc3RyICJ0csOkZ3QgbmljaHQgYXV0b21hdGlzY2ggZWluIgorCisjOiBidWlsdGluL3JldmVydC5jOjEwNworbXNnaWQgImVkaXQgdGhlIGNvbW1pdCBtZXNzYWdlIgorbXNnc3RyICJCZWFyYmVpdHVuZyBkZXIgVmVyc2lvbnNiZXNjaHJlaWJ1bmciCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTEwCittc2dpZCAicGFyZW50IG51bWJlciIKK21zZ3N0ciAiTnVtbWVyIGRlcyBFbHRlcm50ZWlscyIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMTIKK21zZ2lkICJtZXJnZSBzdHJhdGVneSIKK21zZ3N0ciAiWnVzYW1tZW5mw7xocnVuZ3NzdHJhdGVnaWUiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTEzCittc2dpZCAib3B0aW9uIgorbXNnc3RyICJPcHRpb24iCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTE0Cittc2dpZCAib3B0aW9uIGZvciBtZXJnZSBzdHJhdGVneSIKK21zZ3N0ciAiT3B0aW9uIGbDvHIgWnVzYW1tZW5mw7xocnVuZ3NzdHJhdGVnaWUiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI1Cittc2dpZCAiYXBwZW5kIGNvbW1pdCBuYW1lIgorbXNnc3RyICJow6RuZ3QgVmVyc2lvbnNuYW1lbiBhbiIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMjYKK21zZ2lkICJhbGxvdyBmYXN0LWZvcndhcmQiCittc2dzdHIgImVybGF1YnQgVm9yc3B1bGVuIgorCisjOiBidWlsdGluL3JldmVydC5jOjEyNworbXNnaWQgInByZXNlcnZlIGluaXRpYWxseSBlbXB0eSBjb21taXRzIgorbXNnc3RyICJlcmjDpGx0IHVyc3Byw7xuZ2xpY2hlLCBsZWVyZSBWZXJzaW9uZW4iCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI4Cittc2dpZCAiYWxsb3cgY29tbWl0cyB3aXRoIGVtcHR5IG1lc3NhZ2VzIgorbXNnc3RyICJlcmxhdWJ0IFZlcnNpb24gbWl0IGxlZXJlciBCZXNjaHJlaWJ1bmciCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI5Cittc2dpZCAia2VlcCByZWR1bmRhbnQsIGVtcHR5IGNvbW1pdHMiCittc2dzdHIgImJlaMOkbHQgcmVkdW5kYW50ZSwgbGVlcmUgVmVyc2lvbmVuIgorCisjOiBidWlsdGluL3JldmVydC5jOjEzMwogbXNnaWQgInByb2dyYW0gZXJyb3IiCiBtc2dzdHIgIlByb2dyYW1tZmVobGVyIgogCi0jOiBidWlsdGluL3JldmVydC5jOjIyMQorIzogYnVpbHRpbi9yZXZlcnQuYzoyMjMKIG1zZ2lkICJyZXZlcnQgZmFpbGVkIgogbXNnc3RyICJcInJldmVydFwiIGZlaGxnZXNjaGxhZ2VuIgogCi0jOiBidWlsdGluL3JldmVydC5jOjIzNgorIzogYnVpbHRpbi9yZXZlcnQuYzoyMzgKIG1zZ2lkICJjaGVycnktcGljayBmYWlsZWQiCiBtc2dzdHIgIlwiY2hlcnJ5LXBpY2tcIiBmZWhsZ2VzY2hsYWdlbiIKIAotIzogYnVpbHRpbi9ybS5jOjEwOQorIzogYnVpbHRpbi9ybS5jOjE1Cittc2dpZCAiZ2l0IHJtIFtvcHRpb25zXSBbLS1dIDxmaWxlPi4uLiIKK21zZ3N0ciAiZ2l0IHJtIFtPcHRpb25lbl0gWy0tXSBbPERhdGVpPi4uLl0iCisKKyM6IGJ1aWx0aW4vcm0uYzo2NCBidWlsdGluL3JtLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJzdWJtb2R1bGUgJyVzJyAob3Igb25lIG9mIGl0cyBuZXN0ZWQgc3VibW9kdWxlcykgdXNlcyBhIC5naXQgZGlyZWN0b3J5XG4iCisiKHVzZSAncm0gLXJmJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIGl0IGluY2x1ZGluZyBhbGwgb2YgaXRzIGhpc3RvcnkpIgorbXNnc3RyICIiCisiVW50ZXJwcm9qZWt0ICclcycgKG9kZXIgZWluIGdlc2NoYWNodGVsdGVzIFVudGVycHJvamVrdCBoaWVydm9uKSB2ZXJ3ZW5kZXRcbiIKKyJlaW4gLmdpdC1WZXJ6ZWljaG5pcyAoYmVudXR6ZW4gU2llICdybSAtcmYnIHdlbm4gU2llIGRpZXNlcyB3aXJrbGljaCAiCisibWl0c2FtdFxuIgorInNlaW5lciBIaXN0b3JpZSBsw7ZzY2hlbiBtw7ZjaHRlbikiCisKKyM6IGJ1aWx0aW4vcm0uYzoxNzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgaGFzIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCBmcm9tIGJvdGggdGhlIGZpbGUgYW5kIHRoZSBIRUFEXG4iCiAiKHVzZSAtZiB0byBmb3JjZSByZW1vdmFsKSIKIG1zZ3N0ciAiIgogIiclcycgaGF0IGJlcmVpdGdlc3RlbGx0ZW4gSW5oYWx0IHVudGVyc2NoaWVkbGljaCB6dSBkZXIgRGF0ZWkgdW5kIGRlclxuIgotIlp3ZWlnc3BpdHplIChIRUFEKSAoYmVudXR6ZSAtZiB1bSBkaWUgRW50ZmVybnVuZyB6dSBlcnp3aW5nZW4pIgorIlp3ZWlnc3BpdHplIChIRUFEKSAoYmVudXR6ZW4gU2llIC1mIHVtIGRpZSBFbnRmZXJudW5nIHp1IGVyendpbmdlbikiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxMTUKKyM6IGJ1aWx0aW4vcm0uYzoxODAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgaGFzIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleFxuIgogIih1c2UgLS1jYWNoZWQgdG8ga2VlcCB0aGUgZmlsZSwgb3IgLWYgdG8gZm9yY2UgcmVtb3ZhbCkiCiBtc2dzdHIgIiIKICInJXMnIGhhdCDDhG5kZXJ1bmdlbiBpbiBkZXIgQmVyZWl0c3RlbGx1bmdcbiIKLSIoYmVudXR6ZSAtLWNhY2hlZCB1bSBkaWUgRGF0ZWkgenUgYmVoYWx0ZW4sIG9kZXIgLWYgdW0gZGllIEVudGZlcm51bmcgenUgIgotImVyendpbmdlbikiCisiKGJlbnV0emVuIFNpZSAtLWNhY2hlZCB1bSBkaWUgRGF0ZWkgenUgYmVoYWx0ZW4sIG9kZXIgLWYgdW0gZGllIEVudGZlcm51bmcgIgorInp1IGVyendpbmdlbikiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxMTkKKyM6IGJ1aWx0aW4vcm0uYzoxOTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgaGFzIGxvY2FsIG1vZGlmaWNhdGlvbnNcbiIKICIodXNlIC0tY2FjaGVkIHRvIGtlZXAgdGhlIGZpbGUsIG9yIC1mIHRvIGZvcmNlIHJlbW92YWwpIgogbXNnc3RyICIiCiAiJyVzJyBoYXQgbG9rYWxlIE1vZGlmaWthdGlvbmVuXG4iCi0iKGJlbnV0emUgLS1jYWNoZWQgdW0gZGllIERhdGVpIHp1IGJlaGFsdGVuLCBvZGVyIC1mIHVtIGRpZSBFbnRmZXJudW5nIHp1ICIKLSJlcnp3aW5nZW4pIgorIihiZW51dHplbiBTaWUgLS1jYWNoZWQgdW0gZGllIERhdGVpIHp1IGJlaGFsdGVuLCBvZGVyIC1mIHVtIGRpZSBFbnRmZXJudW5nICIKKyJ6dSBlcnp3aW5nZW4pIgogCi0jOiBidWlsdGluL3JtLmM6MTk0CisjOiBidWlsdGluL3JtLmM6MjA3Cittc2dpZCAiZG8gbm90IGxpc3QgcmVtb3ZlZCBmaWxlcyIKK21zZ3N0ciAibGlzdGV0IGtlaW5lIGdlbMO2c2NodGVuIERhdGVpZW4gYXVmIgorCisjOiBidWlsdGluL3JtLmM6MjA4Cittc2dpZCAib25seSByZW1vdmUgZnJvbSB0aGUgaW5kZXgiCittc2dzdHIgImVudGZlcm50IG51ciBhdXMgZGVyIEJlcmVpdHN0ZWxsdW5nIgorCisjOiBidWlsdGluL3JtLmM6MjA5Cittc2dpZCAib3ZlcnJpZGUgdGhlIHVwLXRvLWRhdGUgY2hlY2siCittc2dzdHIgIsO8YmVyc2NocmVpYnQgZGllIFwidXAtdG8tZGF0ZVwiIFByw7xmdW5nIgorCisjOiBidWlsdGluL3JtLmM6MjEwCittc2dpZCAiYWxsb3cgcmVjdXJzaXZlIHJlbW92YWwiCittc2dzdHIgImVybGF1YnQgcmVrdXJzaXZlIEVudGZlcm51bmciCisKKyM6IGJ1aWx0aW4vcm0uYzoyMTIKK21zZ2lkICJleGl0IHdpdGggYSB6ZXJvIHN0YXR1cyBldmVuIGlmIG5vdGhpbmcgbWF0Y2hlZCIKK21zZ3N0ciAiYmVlbmRldCBtaXQgUsO8Y2tnYWJld2VydCAwLCB3ZW5uIGtlaW5lIMOcYmVyZWluc3RpbW11bmcgZ2VmdW5kZW4gd3VyZGUiCisKKyM6IGJ1aWx0aW4vcm0uYzoyODMKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90IHJlbW92aW5nICclcycgcmVjdXJzaXZlbHkgd2l0aG91dCAtciIKIG1zZ3N0ciAiJyVzJyB3aXJkIG5pY2h0IG9obmUgLXIgcmVrdXJzaXYgZW50ZmVybnQiCiAKLSM6IGJ1aWx0aW4vcm0uYzoyMzAKKyM6IGJ1aWx0aW4vcm0uYzozMjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0IHJtOiB1bmFibGUgdG8gcmVtb3ZlICVzIgotbXNnc3RyICJnaXQgcm06IGtvbm50ZSAlcyBuaWNodCBlbnRmZXJuZW4iCittc2dzdHIgImdpdCBybToga29ubnRlICVzIG5pY2h0IGzDtnNjaGVuIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MTU3CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MTMKK21zZ2lkICJnaXQgc2hvcnRsb2cgWzxvcHRpb25zPl0gWzxyZXZpc2lvbiByYW5nZT5dIFtbLS1dIFs8cGF0aD4uLi5dXSIKK21zZ3N0ciAiZ2l0IHNob3J0bG9nIFs8T3B0aW9uZW4+XSBbUmV2aXNpb25zYmVyZWljaF0gW1stLV0gPFBmYWQ+Li4uXSIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjEzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJNaXNzaW5nIGF1dGhvcjogJXMiCiBtc2dzdHIgImZlaGxlbmRlciBBdXRvcjogJXMiCiAKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMjcKK21zZ2lkICJzb3J0IG91dHB1dCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiBjb21taXRzIHBlciBhdXRob3IiCittc2dzdHIgInNvcnRpZXJ0IGRpZSBBdXNnYWJlIGVudHNwcmVjaGVuZCBkZXIgQW56YWhsIHZvbiBWZXJzaW9uZW4gcHJvIEF1dG9yIgorCisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjI5Cittc2dpZCAiU3VwcHJlc3MgY29tbWl0IGRlc2NyaXB0aW9ucywgb25seSBwcm92aWRlcyBjb21taXQgY291bnQiCittc2dzdHIgIlVudGVyZHLDvGNrdCBWZXJzaW9uc2Jlc2NocmVpYnVuZ2VuLCBsaWVmZXJ0IG51ciBBbnphaGwgZGVyIFZlcnNpb25lbiIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMQorbXNnaWQgIlNob3cgdGhlIGVtYWlsIGFkZHJlc3Mgb2YgZWFjaCBhdXRob3IiCittc2dzdHIgIlplaWd0IGRpZSBFbWFpbC1BZHJlc3NlIHZvbiBqZWRlbSBBdXRvciIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMgorbXNnaWQgIndbLGkxWyxpMl1dIgorbXNnc3RyICJ3WyxpMVssaTJdXSIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMworbXNnaWQgIkxpbmV3cmFwIG91dHB1dCIKK21zZ3N0ciAiQXVzZ2FiZSBtaXQgWmVpbGVudW1icsO8Y2hlbiIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjkKK21zZ2lkICIiCisiZ2l0IHNob3ctYnJhbmNoIFstYXwtLWFsbF0gWy1yfC0tcmVtb3Rlc10gWy0tdG9wby1vcmRlciB8IC0tZGF0ZS1vcmRlcl0gWy0tIgorImN1cnJlbnRdIFstLWNvbG9yWz08d2hlbj5dIHwgLS1uby1jb2xvcl0gWy0tc3BhcnNlXSBbLS1tb3JlPTxuPiB8IC0tbGlzdCB8IC0tIgorImluZGVwZW5kZW50IHwgLS1tZXJnZS1iYXNlXSBbLS1uby1uYW1lIHwgLS1zaGExLW5hbWVdIFstLXRvcGljc10gWyg8cmV2PiB8ICIKKyI8Z2xvYj4pLi4uXSIKK21zZ3N0ciAiIgorImdpdCBzaG93LWJyYW5jaCBbLWF8LS1hbGxdIFstcnwtLXJlbW90ZXNdIFstLXRvcG8tb3JkZXIgfCAtLWRhdGUtb3JkZXJdIFstLSIKKyJjdXJyZW50XSBbLS1jb2xvcls9PFdhbm4+XSB8IC0tbm8tY29sb3JdIFstLXNwYXJzZV0gWy0tbW9yZT08bj4gfCAtLWxpc3QgfCAtLSIKKyJpbmRlcGVuZGVudCB8IC0tbWVyZ2UtYmFzZV0gWy0tbm8tbmFtZSB8IC0tc2hhMS1uYW1lXSBbLS10b3BpY3NdICIKKyJbKDxSZXZpc2lvbj4gfCA8Z2xvYj4pLi4uXSIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjEwCittc2dpZCAiZ2l0IHNob3ctYnJhbmNoICgtZ3wtLXJlZmxvZylbPTxuPlssPGJhc2U+XV0gWy0tbGlzdF0gWzxyZWY+XSIKK21zZ3N0ciAiZ2l0IHNob3ctYnJhbmNoICgtZ3wtLXJlZmxvZylbPTxuPlssPEJhc2lzPl1dIFstLWxpc3RdIFs8UmVmZXJlbno+XSIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1MAorbXNnaWQgInNob3cgcmVtb3RlLXRyYWNraW5nIGFuZCBsb2NhbCBicmFuY2hlcyIKK21zZ3N0ciAiemVpZ3QgZXh0ZXJuZSDDnGJlcm5haG1lendlaWdlIHVuZCBsb2thbGUgWndlaWdlIGFuIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjUyCittc2dpZCAic2hvdyByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMiCittc2dzdHIgInplaWd0IGV4dGVybmUgw5xiZXJuYWhtZXp3ZWlnZSBhbiIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1NAorbXNnaWQgImNvbG9yICcqISstJyBjb3JyZXNwb25kaW5nIHRvIHRoZSBicmFuY2giCittc2dzdHIgImbDpHJidCAnKiErLScgZW50c3ByZWNoZW5kIGRlcyBad2VpZ2VzIGVpbiIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1NgorbXNnaWQgInNob3cgPG4+IG1vcmUgY29tbWl0cyBhZnRlciB0aGUgY29tbW9uIGFuY2VzdG9yIgorbXNnc3RyICJ6ZWlndCA8bj4gd2VpdGVyZSBWZXJzaW9uZW4gbmFjaCBkZW0gZ2VtZWluc2FtZW4gVm9yZmFocmVuIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU4Cittc2dpZCAic3lub255bSB0byBtb3JlPS0xIgorbXNnc3RyICJTeW5vbnltIGbDvHIgbW9yZT0tMSIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1OQorbXNnaWQgInN1cHByZXNzIG5hbWluZyBzdHJpbmdzIgorbXNnc3RyICJ1bnRlcmRyw7xja3QgTmFtZW4iCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NjEKK21zZ2lkICJpbmNsdWRlIHRoZSBjdXJyZW50IGJyYW5jaCIKK21zZ3N0ciAiYmV6aWVodCBkZW4gYWt0dWVsbGVuIFp3ZWlnIGVpbiIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2MworbXNnaWQgIm5hbWUgY29tbWl0cyB3aXRoIHRoZWlyIG9iamVjdCBuYW1lcyIKK21zZ3N0ciAiYmVuZW5udCBWZXJzaW9uZW4gbmFjaCBpaHJlbiBPYmpla3RuYW1lbiIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2NQorbXNnaWQgInNob3cgcG9zc2libGUgbWVyZ2UgYmFzZXMiCittc2dzdHIgInplaWd0IG3DtmdsaWNoZSBCYXNlbiBmw7xyIFp1c2FtbWVuZsO8aHJ1bmciCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NjcKK21zZ2lkICJzaG93IHJlZnMgdW5yZWFjaGFibGUgZnJvbSBhbnkgb3RoZXIgcmVmIgorbXNnc3RyICJ6ZWlndCBSZWZlcmVuemVuIGRpZSB1bmVycmVpY2hiYXIgdm9uIGFsbGVuIGFuZGVyZW4gUmVmZXJlbnplbiBzaW5kIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY5Cittc2dpZCAic2hvdyBjb21taXRzIGluIHRvcG9sb2dpY2FsIG9yZGVyIgorbXNnc3RyICJ6ZWlndCBWZXJzaW9uZW4gaW4gdG9wb2xvZ2lzY2hlciBPcmRudW5nIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjcxCittc2dpZCAic2hvdyBvbmx5IGNvbW1pdHMgbm90IG9uIHRoZSBmaXJzdCBicmFuY2giCittc2dzdHIgInplaWd0IG51ciBWZXJzaW9uZW4sIGRpZSBzaWNoIG5pY2h0IGltIGVyc3RlbiBad2VpZyBiZWZpbmRlbiIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3MworbXNnaWQgInNob3cgbWVyZ2VzIHJlYWNoYWJsZSBmcm9tIG9ubHkgb25lIHRpcCIKK21zZ3N0ciAiIgorInplaWd0IFp1c2FtbWVuZsO8aHJ1bmdlbiwgZGllIG51ciB2b24gZWluZXIgWndlaWdzcGl0emUgYXVzIGVycmVpY2hiYXIgc2luZCIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3NQorbXNnaWQgInNob3cgY29tbWl0cyB3aGVyZSBubyBwYXJlbnQgY29tZXMgYmVmb3JlIGl0cyBjaGlsZHJlbiIKK21zZ3N0ciAiemVpZ3QgVmVyc2lvbmVuLCB3byBrZWluIEVsdGVybnRlaWwgdm9yIHNlaW5lbSBLaW5kIGtvbW10IgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc3Cittc2dpZCAiPG4+Wyw8YmFzZT5dIgorbXNnc3RyICI8bj5bLDxCYXNpcz5dIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc4Cittc2dpZCAic2hvdyA8bj4gbW9zdCByZWNlbnQgcmVmLWxvZyBlbnRyaWVzIHN0YXJ0aW5nIGF0IGJhc2UiCittc2dzdHIgIiIKKyJ6ZWlndCBkaWUgPG4+IGrDvG5nc3RlbiBFaW50csOkZ2UgaW0gUmVmZXJlbnpwcm90b2tvbGwgYmVnaW5uZW5kIGFuIGRlciBCYXNpcyIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjEwCittc2dpZCAiIgorImdpdCBzaG93LXJlZiBbLXF8LS1xdWlldF0gWy0tdmVyaWZ5XSBbLS1oZWFkXSBbLWR8LS1kZXJlZmVyZW5jZV0gWy1zfC0taGFzaCIKKyJbPTxuPl1dIFstLWFiYnJldls9PG4+XV0gWy0tdGFnc10gWy0taGVhZHNdIFstLV0gW3BhdHRlcm4qXSAiCittc2dzdHIgIiIKKyJnaXQgc2hvdy1yZWYgWy1xfC0tcXVpZXRdIFstLXZlcmlmeV0gWy0taGVhZF0gWy1kfC0tZGVyZWZlcmVuY2VdIFstc3wtLWhhc2giCisiWz08bj5dXSBbLS1hYmJyZXZbPTxuPl1dIFstLXRhZ3NdIFstLWhlYWRzXSBbLS1dIFtwYXR0ZXJuKl0gIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTEKK21zZ2lkICJnaXQgc2hvdy1yZWYgLS1leGNsdWRlLWV4aXN0aW5nWz1wYXR0ZXJuXSA8IHJlZi1saXN0IgorbXNnc3RyICJnaXQgc2hvdy1yZWYgLS1leGNsdWRlLWV4aXN0aW5nWz1NdXN0ZXJdIDwgcmVmLWxpc3QiCisKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNjUKK21zZ2lkICJvbmx5IHNob3cgdGFncyAoY2FuIGJlIGNvbWJpbmVkIHdpdGggaGVhZHMpIgorbXNnc3RyICJ6ZWlndCBudXIgTWFya2llcnVuZ2VuIChrYW5uIG1pdCBcImhlYWRzXCIga29tYmluaWVydCB3ZXJkZW4pIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTY2Cittc2dpZCAib25seSBzaG93IGhlYWRzIChjYW4gYmUgY29tYmluZWQgd2l0aCB0YWdzKSIKK21zZ3N0ciAiemVpZ3QgbnVyIFp3ZWlnc3BpdHplbiAoa2FubiBtaXQgXCJ0YWdzXCIga29tYmluaWVydCB3ZXJkZW4pIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTY3Cittc2dpZCAic3RyaWN0ZXIgcmVmZXJlbmNlIGNoZWNraW5nLCByZXF1aXJlcyBleGFjdCByZWYgcGF0aCIKK21zZ3N0ciAic3RyZW5nZXJlIFJlZmVyZW56cHLDvGZ1bmcsIGVyZm9yZGVydCBleGFrdGVuIFJlZmVyZW56cGZhZCIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE3MCBidWlsdGluL3Nob3ctcmVmLmM6MTcyCittc2dpZCAic2hvdyB0aGUgSEVBRCByZWZlcmVuY2UiCittc2dzdHIgInplaWd0IFJlZmVyZW56IGRlciBad2VpZ3NwaXR6ZSAoSEVBRCkiCisKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzQKK21zZ2lkICJkZXJlZmVyZW5jZSB0YWdzIGludG8gb2JqZWN0IElEcyIKK21zZ3N0ciAiZGVyZWZlcmVuemllcnQgTWFya2llcnVuZ2VuIGluIE9iamVrdC1JZGVudGlmaWthdGlvbmVuIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTc2Cittc2dpZCAib25seSBzaG93IFNIQTEgaGFzaCB1c2luZyA8bj4gZGlnaXRzIgorbXNnc3RyICJ6ZWlndCBudXIgU0hBMSBIYXNoIG1pdCA8bj4gWmlmZmVybiIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE4MAorbXNnaWQgImRvIG5vdCBwcmludCByZXN1bHRzIHRvIHN0ZG91dCAodXNlZnVsIHdpdGggLS12ZXJpZnkpIgorbXNnc3RyICIiCisia2VpbmUgQXVzZ2FiZSBkZXIgRXJnZWJuaXNzZSBpbiBkaWUgU3RhbmRhcmQtQXVzZ2FiZSAobsO8dHpsaWNoIG1pdCAtLXZlcmlmeSkiCisKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxODIKK21zZ2lkICJzaG93IHJlZnMgZnJvbSBzdGRpbiB0aGF0IGFyZW4ndCBpbiBsb2NhbCByZXBvc2l0b3J5IgorbXNnc3RyICIiCisiemVpZ3QgUmVmZXJlbnplbiB2b24gZGVyIFN0YW5kYXJkLUVpbmdhYmUsIGRpZSBzaWNoIG5pY2h0IGltIGxva2FsZW4gIgorIlByb2pla3RhcmNoaXYgYmVmaW5kZW4sIGFuIgorCisjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjcKK21zZ2lkICJnaXQgc3ltYm9saWMtcmVmIFtvcHRpb25zXSBuYW1lIFtyZWZdIgorbXNnc3RyICJnaXQgc3ltYm9saWMtcmVmIFtPcHRpb25lbl0gbmFtZSBbcmVmXSIKKworIzogYnVpbHRpbi9zeW1ib2xpYy1yZWYuYzo4Cittc2dpZCAiZ2l0IHN5bWJvbGljLXJlZiAtZCBbLXFdIG5hbWUiCittc2dzdHIgImdpdCBzeW1ib2xpYy1yZWYgLWQgWy1xXSBuYW1lIgorCisjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjQwCittc2dpZCAic3VwcHJlc3MgZXJyb3IgbWVzc2FnZSBmb3Igbm9uLXN5bWJvbGljIChkZXRhY2hlZCkgcmVmcyIKK21zZ3N0ciAiIgorInVudGVyZHLDvGNrdCBGZWhsZXJtZWxkdW5nZW4gZsO8ciBuaWNodC1zeW1ib2xpc2NoZSAobG9zZ2Vsw7ZzdGUpIFJlZmVyZW56ZW4iCisKKyM6IGJ1aWx0aW4vc3ltYm9saWMtcmVmLmM6NDEKK21zZ2lkICJkZWxldGUgc3ltYm9saWMgcmVmIgorbXNnc3RyICJsw7ZzY2h0IHN5bWJvbGlzY2hlIFJlZmVyZW56ZW4iCisKKyM6IGJ1aWx0aW4vc3ltYm9saWMtcmVmLmM6NDIKK21zZ2lkICJzaG9ydGVuIHJlZiBvdXRwdXQiCittc2dzdHIgInZlcmvDvHJ6dGUgQXVzZ2FiZSBkZXIgUmVmZXJlbnplbiIKKworIzogYnVpbHRpbi9zeW1ib2xpYy1yZWYuYzo0MyBidWlsdGluL3VwZGF0ZS1yZWYuYzoxOAorbXNnaWQgInJlYXNvbiIKK21zZ3N0ciAiR3J1bmQiCisKKyM6IGJ1aWx0aW4vc3ltYm9saWMtcmVmLmM6NDMgYnVpbHRpbi91cGRhdGUtcmVmLmM6MTgKK21zZ2lkICJyZWFzb24gb2YgdGhlIHVwZGF0ZSIKK21zZ3N0ciAiR3J1bmQgZsO8ciBkaWUgQWt0dWFsaXNpZXJ1bmciCisKKyM6IGJ1aWx0aW4vdGFnLmM6MjIKK21zZ2lkICIiCisiZ2l0IHRhZyBbLWF8LXN8LXUgPGtleS1pZD5dIFstZl0gWy1tIDxtc2c+fC1GIDxmaWxlPl0gPHRhZ25hbWU+IFs8aGVhZD5dIgorbXNnc3RyICIiCisiZ2l0IHRhZyBbLWF8LXN8LXUgPFNjaGzDvHNzZWwtaWQ+XSBbLWZdIFstbSA8TmFjaHJpY2h0PnwtRiA8RGF0ZWk+XSAiCisiPE1hcmtpZXJ1bmdzbmFtZT4gWzxad2VpZz5dIgorCisjOiBidWlsdGluL3RhZy5jOjIzCittc2dpZCAiZ2l0IHRhZyAtZCA8dGFnbmFtZT4uLi4iCittc2dzdHIgImdpdCB0YWcgLWQgPE1hcmtpZXJ1bmdzbmFtZT4uLi4iCisKKyM6IGJ1aWx0aW4vdGFnLmM6MjQKK21zZ2lkICIiCisiZ2l0IHRhZyAtbCBbLW5bPG51bT5dXSBbLS1jb250YWlucyA8Y29tbWl0Pl0gWy0tcG9pbnRzLWF0IDxvYmplY3Q+XSBcbiIKKyJcdFx0WzxwYXR0ZXJuPi4uLl0iCittc2dzdHIgIiIKKyJnaXQgdGFnIC1sIFstbls8TnVtbWVyPl1dIFstLWNvbnRhaW5zIDxWZXJzaW9uPl0gWy0tcG9pbnRzLWF0IDxPYmpla3Q+XSBcbiIKKyJcdFx0WzxNdXN0ZXI+Li4uXSIKKworIzogYnVpbHRpbi90YWcuYzoyNgorbXNnaWQgImdpdCB0YWcgLXYgPHRhZ25hbWU+Li4uIgorbXNnc3RyICJnaXQgdGFnIC12IDxNYXJraWVydW5nc25hbWU+Li4uIgorCiAjOiBidWlsdGluL3RhZy5jOjYwCiAjLCBjLWZvcm1hdAogbXNnaWQgIm1hbGZvcm1lZCBvYmplY3QgYXQgJyVzJyIKQEAgLTQ2ODIsMTUzICs4OTIxLDM3MiBAQAogbXNnc3RyICJLb25udGUgTWFya2llcnVuZyAnJXMnIG5pY2h0IHZlcmlmaXppZXJlbiIKIAogIzogYnVpbHRpbi90YWcuYzoyNDkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgotIiNcbiIKLSIjIFdyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKLSIjIExpbmVzIHN0YXJ0aW5nIHdpdGggJyMnIHdpbGwgYmUgaWdub3JlZC5cbiIKLSIjXG4iCisiV3JpdGUgYSB0YWcgbWVzc2FnZVxuIgorIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIGlnbm9yZWQuXG4iCiBtc2dzdHIgIiIKICJcbiIKLSIjXG4iCi0iIyBHZWJlIGVpbmUgTWFya2llcnVuZ3NiZXNjaHJlaWJ1bmcgZWluXG4iCi0iIyBaZWlsZW4sIGRpZSBtaXQgJyMnIGJlZ2lubmVuLCB3ZXJkZW4gaWdub3JpZXJ0LlxuIgotIiNcbiIKKyJHZWJlbiBTaWUgZWluZSBNYXJraWVydW5nc2Jlc2NocmVpYnVuZyBlaW4uXG4iCisiWmVpbGVuLCBkaWUgbWl0ICclYycgYmVnaW5uZW4sIHdlcmRlbiBpZ25vcmllcnQuXG4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MjU2CisjOiBidWlsdGluL3RhZy5jOjI1MworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCi0iI1xuIgotIiMgV3JpdGUgYSB0YWcgbWVzc2FnZVxuIgotIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAnIycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIHlvdXJzZWxmIGlmIHlvdSAiCisiV3JpdGUgYSB0YWcgbWVzc2FnZVxuIgorIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0geW91cnNlbGYgaWYgeW91ICIKICJ3YW50IHRvLlxuIgotIiNcbiIKIG1zZ3N0ciAiIgogIlxuIgotIiNcbiIKLSIjIEdlYmUgZWluZSBNYXJraWVydW5nc2Jlc2NocmVpYnVuZyBlaW5cbiIKLSIjIFplaWxlbiwgZGllIG1pdCAnIycgYmVnaW5uZW4sIHdlcmRlbiBiZWhhbHRlbjsgZHUgZGFyZnN0IGRpZXNlXG4iCi0iIyBzZWxic3QgZW50ZmVybmVuIHdlbm4gZHUgbcO2Y2h0ZXN0LlxuIgotIiNcbiIKKyJHZWJlbiBTaWUgZWluZSBNYXJraWVydW5nc2Jlc2NocmVpYnVuZyBlaW4uXG4iCisiWmVpbGVuLCBkaWUgbWl0ICclYycgYmVnaW5uZW4sIHdlcmRlbiBiZWhhbHRlbjsgU2llIGTDvHJmZW4gZGllc2VcbiIKKyJzZWxic3QgZW50ZmVybmVuIHdlbm4gU2llIG3DtmNodGVuLlxuIgogCi0jOiBidWlsdGluL3RhZy5jOjI5OAorIzogYnVpbHRpbi90YWcuYzoyOTIKIG1zZ2lkICJ1bmFibGUgdG8gc2lnbiB0aGUgdGFnIgogbXNnc3RyICJrb25udGUgTWFya2llcnVuZyBuaWNodCBzaWduaWVyZW4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MzAwCisjOiBidWlsdGluL3RhZy5jOjI5NAogbXNnaWQgInVuYWJsZSB0byB3cml0ZSB0YWcgZmlsZSIKIG1zZ3N0ciAia29ubnRlIE1hcmtpZXJ1bmdzZGF0ZWkgbmljaHQgc2NocmVpYmVuIgogCi0jOiBidWlsdGluL3RhZy5jOjMyNQorIzogYnVpbHRpbi90YWcuYzozMTkKIG1zZ2lkICJiYWQgb2JqZWN0IHR5cGUuIgogbXNnc3RyICJ1bmfDvGx0aWdlciBPYmpla3QtVHlwIgogCi0jOiBidWlsdGluL3RhZy5jOjMzOAorIzogYnVpbHRpbi90YWcuYzozMzIKIG1zZ2lkICJ0YWcgaGVhZGVyIHRvbyBiaWcuIgogbXNnc3RyICJNYXJraWVydW5nc2tvcGYgenUgZ3Jvw58uIgogCi0jOiBidWlsdGluL3RhZy5jOjM3MAorIzogYnVpbHRpbi90YWcuYzozNjgKIG1zZ2lkICJubyB0YWcgbWVzc2FnZT8iCiBtc2dzdHIgImtlaW5lIE1hcmtpZXJ1bmdzYmVzY2hyZWlidW5nPyIKIAotIzogYnVpbHRpbi90YWcuYzozNzYKKyM6IGJ1aWx0aW4vdGFnLmM6Mzc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlRoZSB0YWcgbWVzc2FnZSBoYXMgYmVlbiBsZWZ0IGluICVzXG4iCiBtc2dzdHIgIkRpZSBNYXJraWVydW5nc2Jlc2NocmVpYnVuZyB3dXJkZSBnZWxhc3NlbiBpbiAlc1xuIgogCi0jOiBidWlsdGluL3RhZy5jOjQyNQorIzogYnVpbHRpbi90YWcuYzo0MjMKIG1zZ2lkICJzd2l0Y2ggJ3BvaW50cy1hdCcgcmVxdWlyZXMgYW4gb2JqZWN0IgogbXNnc3RyICJPcHRpb24gJ3BvaW50cy1hdCcgZXJmb3JkZXJ0IGVpbiBPYmpla3QiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDI3CisjOiBidWlsdGluL3RhZy5jOjQyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJtYWxmb3JtZWQgb2JqZWN0IG5hbWUgJyVzJyIKIG1zZ3N0ciAiZmVobGVyaGFmdGVyIE9iamVrdC1OYW1lICclcyciCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTA2CisjOiBidWlsdGluL3RhZy5jOjQ0NQorbXNnaWQgImxpc3QgdGFnIG5hbWVzIgorbXNnc3RyICJsaXN0ZXQgTWFya2llcnVuZ3NuYW1lbiBhdWYiCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ3Cittc2dpZCAicHJpbnQgPG4+IGxpbmVzIG9mIGVhY2ggdGFnIG1lc3NhZ2UiCittc2dzdHIgInplaWd0IDxuPiBaZWlsZW4gamVkZXIgTWFya2llcnVuZ3NiZXNjaHJlaWJ1bmciCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ5Cittc2dpZCAiZGVsZXRlIHRhZ3MiCittc2dzdHIgImzDtnNjaHQgTWFya2llcnVuZ2VuIgorCisjOiBidWlsdGluL3RhZy5jOjQ1MAorbXNnaWQgInZlcmlmeSB0YWdzIgorbXNnc3RyICLDvGJlcnByw7xmdCBNYXJraWVydW5nZW4iCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDUyCittc2dpZCAiVGFnIGNyZWF0aW9uIG9wdGlvbnMiCittc2dzdHIgIk9wdGlvbmVuIGbDvHIgRXJzdGVsbHVuZyB2b24gTWFya2llcnVuZ2VuIgorCisjOiBidWlsdGluL3RhZy5jOjQ1NAorbXNnaWQgImFubm90YXRlZCB0YWcsIG5lZWRzIGEgbWVzc2FnZSIKK21zZ3N0ciAiYW5ub3RpZXJ0ZSBNYXJraWVydW5nLCBiZW7DtnRpZ3QgZWluZSBCZXNjaHJlaWJ1bmciCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDU2Cittc2dpZCAidGFnIG1lc3NhZ2UiCittc2dzdHIgIk1hcmtpZXJ1bmdzYmVzY2hyZWlidW5nIgorCisjOiBidWlsdGluL3RhZy5jOjQ1OAorbXNnaWQgImFubm90YXRlZCBhbmQgR1BHLXNpZ25lZCB0YWciCittc2dzdHIgImFubm90aWVydGUgdW5kIEdQRy1zaWduaWVydGUgTWFya2llcnVuZyIKKworIzogYnVpbHRpbi90YWcuYzo0NjIKK21zZ2lkICJ1c2UgYW5vdGhlciBrZXkgdG8gc2lnbiB0aGUgdGFnIgorbXNnc3RyICJ2ZXJ3ZW5kZXQgZWluZW4gYW5kZXJlbiBTY2hsw7xzc2VsIHVtIGRpZSBNYXJraWVydW5nIHp1IHNpZ25pZXJlbiIKKworIzogYnVpbHRpbi90YWcuYzo0NjMKK21zZ2lkICJyZXBsYWNlIHRoZSB0YWcgaWYgZXhpc3RzIgorbXNnc3RyICJlcnNldHp0IGRpZSBNYXJraWVydW5nLCB3ZW5uIHNpZSBleGlzdGllcnQiCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDY0Cittc2dpZCAic2hvdyB0YWcgbGlzdCBpbiBjb2x1bW5zIgorbXNnc3RyICJ6ZWlndCBMaXN0ZSBkZXIgTWFya2llcnVuZ2VuIGluIFNwYWx0ZW4iCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDY2Cittc2dpZCAiVGFnIGxpc3Rpbmcgb3B0aW9ucyIKK21zZ3N0ciAiT3B0aW9uZW4gZsO8ciBBdWZsaXN0dW5nIGRlciBNYXJraWVydW5nZW4iCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDY5Cittc2dpZCAicHJpbnQgb25seSB0YWdzIHRoYXQgY29udGFpbiB0aGUgY29tbWl0IgorbXNnc3RyICJnaWJ0IG51ciBNYXJraWVydW5nZW4gYXVzLCBkaWUgZGllc2UgVmVyc2lvbiBiZWluaGFsdGVuIgorCisjOiBidWlsdGluL3RhZy5jOjQ3NQorbXNnaWQgInByaW50IG9ubHkgdGFncyBvZiB0aGUgb2JqZWN0IgorbXNnc3RyICJnaWJ0IG51ciBNYXJraWVydW5nZW4gdm9uIGRlbSBPYmpla3QgYXVzIgorCisjOiBidWlsdGluL3RhZy5jOjUwNAogbXNnaWQgIi0tY29sdW1uIGFuZCAtbiBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLWNvbHVtbiB1bmQgLW4gc2luZCBpbmtvbXBhdGliZWwiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTIzCisjOiBidWlsdGluL3RhZy5jOjUyMQogbXNnaWQgIi1uIG9wdGlvbiBpcyBvbmx5IGFsbG93ZWQgd2l0aCAtbC4iCiBtc2dzdHIgIi1uIE9wdGlvbiBpc3QgbnVyIGVybGF1YnQgbWl0IC1sLiIKIAotIzogYnVpbHRpbi90YWcuYzo1MjUKKyM6IGJ1aWx0aW4vdGFnLmM6NTIzCiBtc2dpZCAiLS1jb250YWlucyBvcHRpb24gaXMgb25seSBhbGxvd2VkIHdpdGggLWwuIgogbXNnc3RyICItLWNvbnRhaW5zIE9wdGlvbiBpc3QgbnVyIGVybGF1YnQgbWl0IC1sLiIKIAotIzogYnVpbHRpbi90YWcuYzo1MjcKKyM6IGJ1aWx0aW4vdGFnLmM6NTI1CiBtc2dpZCAiLS1wb2ludHMtYXQgb3B0aW9uIGlzIG9ubHkgYWxsb3dlZCB3aXRoIC1sLiIKIG1zZ3N0ciAiLS1wb2ludHMtYXQgT3B0aW9uIGlzdCBudXIgZXJsYXVidCBtaXQgLWwuIgogCi0jOiBidWlsdGluL3RhZy5jOjUzNQorIzogYnVpbHRpbi90YWcuYzo1MzMKIG1zZ2lkICJvbmx5IG9uZSAtRiBvciAtbSBvcHRpb24gaXMgYWxsb3dlZC4iCiBtc2dzdHIgIm51ciBlaW5lIC1GIG9kZXIgLW0gT3B0aW9uIGlzdCBlcmxhdWJ0LiIKIAotIzogYnVpbHRpbi90YWcuYzo1NTUKKyM6IGJ1aWx0aW4vdGFnLmM6NTUzCiBtc2dpZCAidG9vIG1hbnkgcGFyYW1zIgogbXNnc3RyICJ6dSB2aWVsZSBQYXJhbWV0ZXIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTYxCisjOiBidWlsdGluL3RhZy5jOjU1OQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGlzIG5vdCBhIHZhbGlkIHRhZyBuYW1lLiIKIG1zZ3N0ciAiJyVzJyBpc3Qga2VpbiBnw7xsdGlnZXIgTWFya2llcnVuZ3NuYW1lLiIKIAotIzogYnVpbHRpbi90YWcuYzo1NjYKKyM6IGJ1aWx0aW4vdGFnLmM6NTY0CiAjLCBjLWZvcm1hdAogbXNnaWQgInRhZyAnJXMnIGFscmVhZHkgZXhpc3RzIgogbXNnc3RyICJNYXJraWVydW5nICclcycgZXhpc3RpZXJ0IGJlcmVpdHMiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTg0CisjOiBidWlsdGluL3RhZy5jOjU4MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2Fubm90IGxvY2sgdGhlIHJlZiIKIG1zZ3N0ciAiJXM6IGthbm4gUmVmZXJlbnogbmljaHQgc3BlcnJlbiIKIAotIzogYnVpbHRpbi90YWcuYzo1ODYKKyM6IGJ1aWx0aW4vdGFnLmM6NTg0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjYW5ub3QgdXBkYXRlIHRoZSByZWYiCiBtc2dzdHIgIiVzOiBrYW5uIFJlZmVyZW56IG5pY2h0IGFrdHVhbGlzaWVyZW4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTg4CisjOiBidWlsdGluL3RhZy5jOjU4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJVcGRhdGVkIHRhZyAnJXMnICh3YXMgJXMpXG4iCiBtc2dzdHIgIkFrdHVhbGlzaWVydGUgTWFya2llcnVuZyAnJXMnICh3YXIgJXMpXG4iCiAKLSM6IGdpdC5jOjE2Ci1tc2dpZCAiU2VlICdnaXQgaGVscCA8Y29tbWFuZD4nIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGEgc3BlY2lmaWMgY29tbWFuZC4iCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjQwMQorbXNnaWQgImdpdCB1cGRhdGUtaW5kZXggW29wdGlvbnNdIFstLV0gWzxmaWxlPi4uLl0iCittc2dzdHIgImdpdCB1cGRhdGUtaW5kZXggW09wdGlvbmVuXSBbLS1dIFs8RGF0ZWk+Li4uXSIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MTgKK21zZ2lkICJjb250aW51ZSByZWZyZXNoIGV2ZW4gd2hlbiBpbmRleCBuZWVkcyB1cGRhdGUiCiBtc2dzdHIgIiIKLSJTaWVoZSAnZ2l0IGhlbHAgPEtvbW1hbmRvPicgZsO8ciB3ZWl0ZXJlIEluZm9ybWF0aW9uZW4genUgZWluZW0gc3BlemlmaXNjaGVuICIKLSJLb21tYW5kbyIKKyJBa3R1YWxpc2llcnVuZyBmb3J0c2V0emVuLCBhdWNoIHdlbm4gZGllIEJlcmVpdHN0ZWxsdW5nIGFrdHVhbGlzaWVydCB3ZXJkZW4gIgorIm11c3MiCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoxMzMgcGFyc2Utb3B0aW9ucy5oOjIzNQotbXNnaWQgIm4iCi1tc2dzdHIgIkFuemFobCIKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzIxCittc2dpZCAicmVmcmVzaDogaWdub3JlIHN1Ym1vZHVsZXMiCittc2dzdHIgIkFrdHVhbGlzaWVydW5nOiBpZ25vcmllcnQgVW50ZXJwcm9qZWt0ZSIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjE0MQotbXNnaWQgInRpbWUiCi1tc2dzdHIgIlplaXQiCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcyNAorbXNnaWQgImRvIG5vdCBpZ25vcmUgbmV3IGZpbGVzIgorbXNnc3RyICJpZ25vcmllcnQga2VpbmUgbmV1ZW4gRGF0ZWllbiIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjE0OQotbXNnaWQgImZpbGUiCi1tc2dzdHIgIkRhdGVpIgorIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MjYKK21zZ2lkICJsZXQgZmlsZXMgcmVwbGFjZSBkaXJlY3RvcmllcyBhbmQgdmljZS12ZXJzYSIKK21zZ3N0ciAibMOkc3N0IERhdGVpZW4gVmVyemVpY2huaXNzZSBlcnNldHplbiwgdW5kIHVtZ2VkcmVodCIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjE1MQotbXNnaWQgIndoZW4iCi1tc2dzdHIgIndhbm4iCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcyOAorbXNnaWQgIm5vdGljZSBmaWxlcyBtaXNzaW5nIGZyb20gd29ya3RyZWUiCittc2dzdHIgImJlYWNodGV0IGZlaGxlbmRlIERhdGVpZW4gaW0gQXJiZWl0c2JhdW0iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzMwCittc2dpZCAicmVmcmVzaCBldmVuIGlmIGluZGV4IGNvbnRhaW5zIHVubWVyZ2VkIGVudHJpZXMiCittc2dzdHIgIiIKKyJha3R1YWxpc2llcnQsIGF1Y2ggd2VubiBkaWUgQmVyZWl0c3RlbGx1bmcgbmljaHQgenVzYW1tZW5nZWbDvGhydGUgRWludHLDpGdlICIKKyJiZWluaGFsdGV0IgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjczMworbXNnaWQgInJlZnJlc2ggc3RhdCBpbmZvcm1hdGlvbiIKK21zZ3N0ciAiYWt0dWFsaXNpZXJ0IERhdGVpaW5mb3JtYXRpb25lbiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MzcKK21zZ2lkICJsaWtlIC0tcmVmcmVzaCwgYnV0IGlnbm9yZSBhc3N1bWUtdW5jaGFuZ2VkIHNldHRpbmciCittc2dzdHIgIndpZSAtLXJlZnJlc2gsIGlnbm9yaWVydCBhYmVyIFwiYXNzdW1lLXVuY2hhbmdlZFwiIEVpbnN0ZWxsdW5nIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc0MQorbXNnaWQgIjxtb2RlPiA8b2JqZWN0PiA8cGF0aD4iCittc2dzdHIgIjxNb2R1cz4gPE9iamVrdD4gPFBmYWQ+IgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc0MgorbXNnaWQgImFkZCB0aGUgc3BlY2lmaWVkIGVudHJ5IHRvIHRoZSBpbmRleCIKK21zZ3N0ciAic3RlbGx0IGRlbiBhbmdlZ2ViZW5lbiBFaW50cmFnIHp1ciBFaW50cmFndW5nIGJlcmVpdCIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NDYKK21zZ2lkICIoKy8tKXgiCittc2dzdHIgIigrLy0peCIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NDcKK21zZ2lkICJvdmVycmlkZSB0aGUgZXhlY3V0YWJsZSBiaXQgb2YgdGhlIGxpc3RlZCBmaWxlcyIKK21zZ3N0ciAiw7xiZXJzY2hyZWlidCBkYXMgXCJhdXNmw7xocmJhclwiLUJpdCBkZXIgYXVmZ2VsaXN0ZXRlbiBEYXRlaWVuIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc1MQorbXNnaWQgIm1hcmsgZmlsZXMgYXMgXCJub3QgY2hhbmdpbmdcIiIKK21zZ3N0ciAiYmV0cmFjaHRlIGRpZXNlIERhdGVpIGltbWVyIGFscyB1bnZlcsOkbmRlcnQiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzU0Cittc2dpZCAiY2xlYXIgYXNzdW1lZC11bmNoYW5nZWQgYml0IgorbXNnc3RyICJsw7ZzY2h0IFwiYXNzdW1lZC11bmNoYW5nZWRcIi1CaXQiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzU3Cittc2dpZCAibWFyayBmaWxlcyBhcyBcImluZGV4LW9ubHlcIiIKK21zZ3N0ciAibWFya2llcnQgRGF0ZWllbiBhbHMgXCJpbmRleC1vbmx5XCIiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzYwCittc2dpZCAiY2xlYXIgc2tpcC13b3JrdHJlZSBiaXQiCittc2dzdHIgImzDtnNjaHQgXCJza2lwLXdvcmt0cmVlXCItQml0IgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc2MworbXNnaWQgImFkZCB0byBpbmRleCBvbmx5OyBkbyBub3QgYWRkIGNvbnRlbnQgdG8gb2JqZWN0IGRhdGFiYXNlIgorbXNnc3RyICIiCisiZsO8Z3QgbnVyIGRlciBCZXJlaXRzdGVsbHVuZyBoaW56dTsgSW5oYWx0IHdpcmQgbmljaHQgZGVyIE9iamVrdC1EYXRlbmJhbmsgIgorImhpbnp1Z2Vmw7xndCIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NjUKK21zZ2lkICJyZW1vdmUgbmFtZWQgcGF0aHMgZXZlbiBpZiBwcmVzZW50IGluIHdvcmt0cmVlIgorbXNnc3RyICJsw7ZzY2h0IGJlbmFubnRlIFBmYWRlLCBhdWNoIHdlbm4gc2llIHNpY2ggaW0gQXJiZWl0c2JhdW0gYmVmaW5kZW4iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzY3Cittc2dpZCAid2l0aCAtLXN0ZGluOiBpbnB1dCBsaW5lcyBhcmUgdGVybWluYXRlZCBieSBudWxsIGJ5dGVzIgorbXNnc3RyICJtaXQgLS1zdGRpbjogZWluZ2VnZWJlbmUgWmVpbGVuIHNpbmQgZHVyY2ggTlVMLUJ5dGVzIGFiZ2VzY2hsb3NzZW4iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzY5Cittc2dpZCAicmVhZCBsaXN0IG9mIHBhdGhzIHRvIGJlIHVwZGF0ZWQgZnJvbSBzdGFuZGFyZCBpbnB1dCIKK21zZ3N0ciAibGllc3QgTGlzdGUgZGVyIHp1IGFrdHVhbGlzaWVyZW5kZW4gUGZhZGUgdm9uIGRlciBTdGFuZGFyZC1FaW5nYWJlIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc3MworbXNnaWQgImFkZCBlbnRyaWVzIGZyb20gc3RhbmRhcmQgaW5wdXQgdG8gdGhlIGluZGV4IgorbXNnc3RyICJmw7xndCBFaW50csOkZ2Ugdm9uIGRlciBTdGFuZGFyZC1FaW5nYWJlIGRlciBCZXJlaXRzdGVsbHVuZyBoaW56dSIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NzcKK21zZ2lkICJyZXBvcHVsYXRlIHN0YWdlcyAjMiBhbmQgIzMgZm9yIHRoZSBsaXN0ZWQgcGF0aHMiCittc2dzdHIgIiIKKyJ3aWVkZXJob2x0ZXMgRWlucGZsZWdlbiBkZXIgWnVzdMOkbmRlICMyIHVuZCAjMyBmw7xyIGRpZSBhdWZnZWxpc3RldGVuIFBmYWRlIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc4MQorbXNnaWQgIm9ubHkgdXBkYXRlIGVudHJpZXMgdGhhdCBkaWZmZXIgZnJvbSBIRUFEIgorbXNnc3RyICIiCisiYWt0dWFsaXNpZXJ0IG51ciBFaW50csOkZ2UsIGRpZSB1bnRlcnNjaGllZGxpY2ggenVyIFp3ZWlnc3BpdHplIChIRUFEKSBzaW5kIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc4NQorbXNnaWQgImlnbm9yZSBmaWxlcyBtaXNzaW5nIGZyb20gd29ya3RyZWUiCittc2dzdHIgImlnbm9yaWVydCBmZWhsZW5kZSBEYXRlaWVuIGltIEFyYmVpdHNiYXVtIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc4OAorbXNnaWQgInJlcG9ydCBhY3Rpb25zIHRvIHN0YW5kYXJkIG91dHB1dCIKK21zZ3N0ciAiZ2lidCBkaWUgQWt0aW9uZW4gaW4gZGVyIFN0YW5kYXJkLUF1c2dhYmUgYXVzIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc5MAorbXNnaWQgIihmb3IgcG9yY2VsYWlucykgZm9yZ2V0IHNhdmVkIHVucmVzb2x2ZWQgY29uZmxpY3RzIgorbXNnc3RyICIoZsO8ciBGcmVtZHByb2dyYW1tZSkga2VpbmUgZ2VzcGVpY2hlcnRlbiwgbmljaHQgYXVmZ2Vsw7ZzdGUgS29uZmxpa3RlIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc5NAorbXNnaWQgIndyaXRlIGluZGV4IGluIHRoaXMgZm9ybWF0IgorbXNnc3RyICJzY2hyZWlidCBCZXJlaXRzdGVsbHVuZ3NkYXRlaSBpbiBkaWVzZW0gRm9ybWF0IgorCisjOiBidWlsdGluL3VwZGF0ZS1yZWYuYzo3Cittc2dpZCAiZ2l0IHVwZGF0ZS1yZWYgW29wdGlvbnNdIC1kIDxyZWZuYW1lPiBbPG9sZHZhbD5dIgorbXNnc3RyICJnaXQgdXBkYXRlLXJlZiBbT3B0aW9uZW5dIC1kIDxSZWZlcmVuem5hbWU+IFs8YWx0ZXJXZXJ0Pl0iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLXJlZi5jOjgKK21zZ2lkICJnaXQgdXBkYXRlLXJlZiBbb3B0aW9uc10gICAgPHJlZm5hbWU+IDxuZXd2YWw+IFs8b2xkdmFsPl0iCittc2dzdHIgImdpdCB1cGRhdGUtcmVmIFtPcHRpb25lbl0gICAgPFJlZmVyZW56bmFtZT4gPG5ldWVyV2VydD4gWzxhbHRlcldlcnQ+XSIKKworIzogYnVpbHRpbi91cGRhdGUtcmVmLmM6MTkKK21zZ2lkICJkZWxldGUgdGhlIHJlZmVyZW5jZSIKK21zZ3N0ciAibMO2c2NodCBkaWVzZSBSZWZlcmVueiIKKworIzogYnVpbHRpbi91cGRhdGUtcmVmLmM6MjEKK21zZ2lkICJ1cGRhdGUgPHJlZm5hbWU+IG5vdCB0aGUgb25lIGl0IHBvaW50cyB0byIKK21zZ3N0ciAiYWt0dWFsaXNpZXJ0IDxSZWZlcmVuem5hbWU+LCBuaWNodCBkZW4gVmVyd2VpcyIKKworIzogYnVpbHRpbi91cGRhdGUtc2VydmVyLWluZm8uYzo2Cittc2dpZCAiZ2l0IHVwZGF0ZS1zZXJ2ZXItaW5mbyBbLS1mb3JjZV0iCittc2dzdHIgImdpdCB1cGRhdGUtc2VydmVyLWluZm8gWy0tZm9yY2VdIgorCisjOiBidWlsdGluL3VwZGF0ZS1zZXJ2ZXItaW5mby5jOjE0Cittc2dpZCAidXBkYXRlIHRoZSBpbmZvIGZpbGVzIGZyb20gc2NyYXRjaCIKK21zZ3N0ciAiYWt0dWFsaXNpZXJ0IGRpZSBJbmZvcm1hdGlvbnNkYXRlaWVuIHZvbiBHcnVuZCBhdWYiCisKKyM6IGJ1aWx0aW4vdmVyaWZ5LXBhY2suYzo1NgorbXNnaWQgImdpdCB2ZXJpZnktcGFjayBbLXZ8LS12ZXJib3NlXSBbLXN8LS1zdGF0LW9ubHldIDxwYWNrPi4uLiIKK21zZ3N0ciAiZ2l0IHZlcmlmeS1wYWNrIFstdnwtLXZlcmJvc2VdIFstc3wtLXN0YXQtb25seV0gPFBha2V0Pi4uLiIKKworIzogYnVpbHRpbi92ZXJpZnktcGFjay5jOjY2Cittc2dpZCAidmVyYm9zZSIKK21zZ3N0ciAiZXJ3ZWl0ZXJ0ZSBBdXNnYWJlbiIKKworIzogYnVpbHRpbi92ZXJpZnktcGFjay5jOjY4Cittc2dpZCAic2hvdyBzdGF0aXN0aWNzIG9ubHkiCittc2dzdHIgInplaWd0IG51ciBTdGF0aXN0aWtlbiIKKworIzogYnVpbHRpbi92ZXJpZnktdGFnLmM6MTcKK21zZ2lkICJnaXQgdmVyaWZ5LXRhZyBbLXZ8LS12ZXJib3NlXSA8dGFnPi4uLiIKK21zZ3N0ciAiZ2l0IHZlcmlmeS10YWcgWy12fC0tdmVyYm9zZV0gPE1hcmtpZXJ1bmc+Li4uIgorCisjOiBidWlsdGluL3ZlcmlmeS10YWcuYzo3MworbXNnaWQgInByaW50IHRhZyBjb250ZW50cyIKK21zZ3N0ciAiZ2lidCBNYXJraWVydW5nc2luaGFsdGUgYXVzIgorCisjOiBidWlsdGluL3dyaXRlLXRyZWUuYzoxMworbXNnaWQgImdpdCB3cml0ZS10cmVlIFstLW1pc3Npbmctb2tdIFstLXByZWZpeD08cHJlZml4Pi9dIgorbXNnc3RyICJnaXQgd3JpdGUtdHJlZSBbLS1taXNzaW5nLW9rXSBbLS1wcmVmaXg9PFByZWZpeD4vXSIKKworIzogYnVpbHRpbi93cml0ZS10cmVlLmM6MjYKK21zZ2lkICI8cHJlZml4Pi8iCittc2dzdHIgIjxQcmVmaXg+LyIKKworIzogYnVpbHRpbi93cml0ZS10cmVlLmM6MjcKK21zZ2lkICJ3cml0ZSB0cmVlIG9iamVjdCBmb3IgYSBzdWJkaXJlY3RvcnkgPHByZWZpeD4iCittc2dzdHIgInNjaHJlaWJ0IGRhcyBCYXVtb2JqZWt0IGbDvHIgZWluIFVudGVydmVyemVpY2huaXMgPFByZWZpeD4iCisKKyM6IGJ1aWx0aW4vd3JpdGUtdHJlZS5jOjMwCittc2dpZCAib25seSB1c2VmdWwgZm9yIGRlYnVnZ2luZyIKK21zZ3N0ciAibnVyIG7DvHR6bGljaCBmw7xyIEZlaGxlcnN1Y2hlIgorCisjOiBnaXQuYzoxNgorbXNnaWQgIiIKKyInZ2l0IGhlbHAgLWEnIGFuZCAnZ2l0IGhlbHAgLWcnIGxpc3RzIGF2YWlsYWJsZSBzdWJjb21tYW5kcyBhbmQgc29tZVxuIgorImNvbmNlcHQgZ3VpZGVzLiBTZWUgJ2dpdCBoZWxwIDxjb21tYW5kPicgb3IgJ2dpdCBoZWxwIDxjb25jZXB0PidcbiIKKyJ0byByZWFkIGFib3V0IGEgc3BlY2lmaWMgc3ViY29tbWFuZCBvciBjb25jZXB0LiIKK21zZ3N0ciAiIgorIidnaXQgaGVscCAtYScgdW5kICdnaXQgaGVscCAtZycgbGlzdGV0IHZlcmbDvGdiYXJlIFVudGVya29tbWFuZG9zIHVuZFxuIgorImVpbmlnZSBBbmxlaXR1bmdlbiB6dSBHaXQtS29uemVwdGVuIGF1Zi4gQmVudXR6ZW4gU2llICdnaXQgaGVscCA8S29tbWFuZG8+J1xuIgorIm9kZXIgJ2dpdCBoZWxwIDxLb256ZXB0PicgdW0gbWVociDDvGJlciBlaW4gc3BlemlmaXNjaGVzIEtvbW1hbmRvIG9kZXJcbiIKKyJLb256ZXB0IHp1IGVyZmFocmVuLiIKIAogIzogcGFyc2Utb3B0aW9ucy5oOjE1NgogbXNnaWQgIm5vLW9wIChiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSIKIG1zZ3N0ciAiS2VpbiBFZmZla3QgKFLDvGNrd8OkcnRza29tcGF0aWJpbGl0w6R0KSIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjIyOAorIzogcGFyc2Utb3B0aW9ucy5oOjIzMgogbXNnaWQgImJlIG1vcmUgdmVyYm9zZSIKIG1zZ3N0ciAiZXJ3ZWl0ZXJ0ZSBBdXNnYWJlbiIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjIzMAorIzogcGFyc2Utb3B0aW9ucy5oOjIzNAogbXNnaWQgImJlIG1vcmUgcXVpZXQiCiBtc2dzdHIgIndlbmlnZXIgQXVzZ2FiZW4iCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyMzYKKyM6IHBhcnNlLW9wdGlvbnMuaDoyNDAKIG1zZ2lkICJ1c2UgPG4+IGRpZ2l0cyB0byBkaXNwbGF5IFNIQS0xcyIKIG1zZ3N0ciAiYmVudXR6ZSA8bj4gWmlmZmVybiB6dXIgQW56ZWlnZSB2b24gU0hBLTFzIgogCkBAIC00ODcwLDcgKzkzMjgsNyBAQAogbXNnc3RyICJTdGVsbHQgWmVpbGVuIGRhciwgZGllIGVpbmVtIE11c3RlciBlbnRzcHJlY2hlbiIKIAogIzogY29tbW9uLWNtZHMuaDoxNwotbXNnaWQgIkNyZWF0ZSBhbiBlbXB0eSBnaXQgcmVwb3NpdG9yeSBvciByZWluaXRpYWxpemUgYW4gZXhpc3Rpbmcgb25lIgorbXNnaWQgIkNyZWF0ZSBhbiBlbXB0eSBHaXQgcmVwb3NpdG9yeSBvciByZWluaXRpYWxpemUgYW4gZXhpc3Rpbmcgb25lIgogbXNnc3RyICIiCiAiRXJzdGVsbHQgZWluIGxlZXJlcyBHaXQtUHJvamVrdGFyY2hpdiBvZGVyIGluaXRpYWxpc2llcnQgZWluIGJlc3RlaGVuZGVzIG5ldSIKIApAQCAtNDkwNCw4ICs5MzYyLDcgQEAKIAogIzogY29tbW9uLWNtZHMuaDoyNAogbXNnaWQgIlJlc2V0IGN1cnJlbnQgSEVBRCB0byB0aGUgc3BlY2lmaWVkIHN0YXRlIgotbXNnc3RyICIiCi0iU2V0enQgZGllIGFrdHVlbGxlIFp3ZWlnc3BpdHplIChIRUFEKSB6dSBlaW5lbSBzcGV6aWZpemllcnRlbiBadXN0YW5kIHp1csO8Y2siCittc2dzdHIgIlNldHp0IGRpZSBha3R1ZWxsZSBad2VpZ3NwaXR6ZSAoSEVBRCkgenUgZWluZW0gc3BlemlmaXppZXJ0ZW4gWnVzdGFuZCIKIAogIzogY29tbW9uLWNtZHMuaDoyNQogbXNnaWQgIlJlbW92ZSBmaWxlcyBmcm9tIHRoZSB3b3JraW5nIHRyZWUgYW5kIGZyb20gdGhlIGluZGV4IgpAQCAtNDkyNywyOSArOTM4NCwyOSBAQAogCiAjOiBnaXQtYW0uc2g6NTAKIG1zZ2lkICJZb3UgbmVlZCB0byBzZXQgeW91ciBjb21taXR0ZXIgaW5mbyBmaXJzdCIKLW1zZ3N0ciAiRHUgbXVzc3QgenVlcnN0IGRpZSBJbmZvcm1hdGlvbmVuIGRlcyBFaW50cmFnZW5kZW4gc2V0emVuLiIKK21zZ3N0ciAiU2llIG3DvHNzZW4genVlcnN0IGRpZSBJbmZvcm1hdGlvbmVuIGRlcyBFaW50cmFnZW5kZW4gc2V0emVuLiIKIAogIzogZ2l0LWFtLnNoOjk1CiBtc2dpZCAiIgogIllvdSBzZWVtIHRvIGhhdmUgbW92ZWQgSEVBRCBzaW5jZSB0aGUgbGFzdCAnYW0nIGZhaWx1cmUuXG4iCiAiTm90IHJld2luZGluZyB0byBPUklHX0hFQUQiCiBtc2dzdHIgIiIKLSJEdSBzY2hlaW5zdCBzZWl0IGRlbSBsZXR6dGVuIGdlc2NoZWl0ZXJ0ZW4gJ2FtJyBkaWUgWndlaWdzcGl0emUgKEhFQUQpXG4iCisiU2llIHNjaGVpbmVuIHNlaXQgZGVtIGxldHp0ZW4gZ2VzY2hlaXRlcnRlbiAnYW0nIGRpZSBad2VpZ3NwaXR6ZSAoSEVBRClcbiIKICJnZcOkbmRlcnQgenUgaGFiZW4uXG4iCiAiS2VpbmUgWnVyw7xja3NldHp1bmcgenUgT1JJR19IRUFELiIKIAogIzogZ2l0LWFtLnNoOjEwNQogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgotIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtIHJ1biBcIiRjbWRsaW5lIC0tcmVzb2x2ZWRcIi5cbiIKLSJJZiB5b3Ugd291bGQgcHJlZmVyIHRvIHNraXAgdGhpcyBwYXRjaCwgaW5zdGVhZCBydW4gXCIkY21kbGluZSAtLXNraXBcIi5cbiIKLSJUbyByZXN0b3JlIHRoZSBvcmlnaW5hbCBicmFuY2ggYW5kIHN0b3AgcGF0Y2hpbmcgcnVuIFwiJGNtZGxpbmUgLS1hYm9ydFwiLiIKKyJXaGVuIHlvdSBoYXZlIHJlc29sdmVkIHRoaXMgcHJvYmxlbSwgcnVuIFwiJGNtZGxpbmUgLS1yZXNvbHZlZFwiLlxuIgorIklmIHlvdSBwcmVmZXIgdG8gc2tpcCB0aGlzIHBhdGNoLCBydW4gXCIkY21kbGluZSAtLXNraXBcIiBpbnN0ZWFkLlxuIgorIlRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGJyYW5jaCBhbmQgc3RvcCBwYXRjaGluZywgcnVuIFwiJGNtZGxpbmUgLS1hYm9ydFwiLiIKIG1zZ3N0ciAiIgotIldlbm4gZHUgZGFzIFByb2JsZW0gYXVmZ2Vsw7ZzdCBoYXN0LCBmw7xocmUgXCIkY21kbGluZSAtLXJlc29sdmVkXCIgYXVzLlxuIgotIkZhbGxzIGR1IGRpZXNlbiBQYXRjaCBhdXNsYXNzZW4gbcO2Y2h0ZXN0LCBmw7xocmUgc3RhdHRkZXNzZW4gIgorIldlbm4gU2llIGRhcyBQcm9ibGVtIGdlbMO2c3QgaGFiZW4sIGbDvGhyZW4gU2llIFwiJGNtZGxpbmUgLS1yZXNvbHZlZFwiIGF1cy5cbiIKKyJGYWxscyBTaWUgZGllc2VuIFBhdGNoIGF1c2xhc3NlbiBtw7ZjaHRlbiwgZsO8aHJlbiBTaWUgc3RhdHRkZXNzZW5cbiIKICJcIiRjbWRsaW5lIC0tc2tpcFwiIGF1cy5cbiIKLSJVbSBkZW4gdXJzcHLDvG5nbGljaGVuIFp3ZWlnIHdpZWRlcmhlcnp1c3RlbGxlbiB1bmQgZGllIEFud2VuZHVuZyBkZXIgUGF0Y2hlc1xuIgotImFienVicmVjaGVuLCBmw7xocmUgXCIkY21kbGluZSAtLWFib3J0XCIgYXVzLiIKKyJVbSBkZW4gdXJzcHLDvG5nbGljaGVuIFp3ZWlnIHdpZWRlcmhlcnp1c3RlbGxlbiB1bmQgZGllIEFud2VuZHVuZyBkZXJcbiIKKyJQYXRjaGVzIGFienVicmVjaGVuLCBmw7xocmVuIFNpZSBcIiRjbWRsaW5lIC0tYWJvcnRcIiBhdXMuIgogCiAjOiBnaXQtYW0uc2g6MTIxCiBtc2dpZCAiQ2Fubm90IGZhbGwgYmFjayB0byB0aHJlZS13YXkgbWVyZ2UuIgpAQCAtNDk2MSw1NyArOTQxOCw3MSBAQAogIkRlbSBQcm9qZWt0YXJjaGl2IGZlaGxlbiBub3R3ZW5kaWdlIEJsb2JzIHVtIGF1ZiBlaW5lIDMtV2VnZS1adXNhbW1lbmbDvGhydW5nICIKICJ6dXLDvGNrenVmYWxsZW4uIgogCisjOiBnaXQtYW0uc2g6MTM5Cittc2dpZCAiVXNpbmcgaW5kZXggaW5mbyB0byByZWNvbnN0cnVjdCBhIGJhc2UgdHJlZS4uLiIKK21zZ3N0ciAiIgorIlZlcndlbmRlIEluZm9ybWF0aW9uZW4gYXVzIGRlciBCZXJlaXRzdGVsbHVuZyB1bSBlaW5lbiBCYXNpc2JhdW0gIgorIm5hY2h6dXN0ZWxsZW4iCisKICM6IGdpdC1hbS5zaDoxNTQKIG1zZ2lkICIiCiAiRGlkIHlvdSBoYW5kIGVkaXQgeW91ciBwYXRjaD9cbiIKICJJdCBkb2VzIG5vdCBhcHBseSB0byBibG9icyByZWNvcmRlZCBpbiBpdHMgaW5kZXguIgogbXNnc3RyICIiCi0iSGFzdCBkdSBkZW4gUGF0Y2ggcGVyIEhhbmQgZWRpdGllcnQ/XG4iCisiSGFiZW4gU2llIGRlbiBQYXRjaCBwZXIgSGFuZCBlZGl0aWVydD9cbiIKICJFciBrYW5uIG5pY2h0IGF1ZiBkaWUgQmxvYnMgaW4gc2VpbmVyICdpbmRleCcgWmVpbGUgYW5nZXdlbmRldCB3ZXJkZW4uIgogCiAjOiBnaXQtYW0uc2g6MTYzCiBtc2dpZCAiRmFsbGluZyBiYWNrIHRvIHBhdGNoaW5nIGJhc2UgYW5kIDMtd2F5IG1lcmdlLi4uIgogbXNnc3RyICJGYWxsZSB6dXLDvGNrIHp1bSBQYXRjaGVuIGRlciBCYXNpcyB1bmQgZGVyIDMtV2VnZS1adXNhbW1lbmbDvGhydW5nLi4uIgogCi0jOiBnaXQtYW0uc2g6Mjc1CisjOiBnaXQtYW0uc2g6MTc5Cittc2dpZCAiRmFpbGVkIHRvIG1lcmdlIGluIHRoZSBjaGFuZ2VzLiIKK21zZ3N0ciAiWnVzYW1tZW5mw7xocnVuZyBkZXIgw4RuZGVydW5nZW4gZmVobGdlc2NobGFnZW4iCisKKyM6IGdpdC1hbS5zaDoyNzQKIG1zZ2lkICJPbmx5IG9uZSBTdEdJVCBwYXRjaCBzZXJpZXMgY2FuIGJlIGFwcGxpZWQgYXQgb25jZSIKIG1zZ3N0ciAiRXMga2FubiBudXIgZWluZSBTdEdJVCBQYXRjaC1TZXJpZSBhdWYgZWlubWFsIGFuZ2V3ZW5kZXQgd2VyZGVuLiIKIAotIzogZ2l0LWFtLnNoOjM2MgorIzogZ2l0LWFtLnNoOjM2MQogIywgc2gtZm9ybWF0CiBtc2dpZCAiUGF0Y2ggZm9ybWF0ICRwYXRjaF9mb3JtYXQgaXMgbm90IHN1cHBvcnRlZC4iCiBtc2dzdHIgIlBhdGNoLUZvcm1hdCAkcGF0Y2hfZm9ybWF0IHdpcmQgbmljaHQgdW50ZXJzdMO8dHp0LiIKIAotIzogZ2l0LWFtLnNoOjM2NAorIzogZ2l0LWFtLnNoOjM2MwogbXNnaWQgIlBhdGNoIGZvcm1hdCBkZXRlY3Rpb24gZmFpbGVkLiIKIG1zZ3N0ciAiUGF0Y2gtRm9ybWF0ZXJrZW5udW5nIGZlaGxnZXNjaGxhZ2VuLiIKIAotIzogZ2l0LWFtLnNoOjQxOAotbXNnaWQgIi1kIG9wdGlvbiBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiAgRG8gbm90IHVzZS4iCi1tc2dzdHIgIi1kIE9wdGlvbiB3aXJkIG5pY2h0IGzDpG5nZXIgdW50ZXJzdMO8dHp0LiBOaWNodCBiZW51dHplbi4iCisjOiBnaXQtYW0uc2g6Mzg5Cittc2dpZCAiIgorIlRoZSAtYi8tLWJpbmFyeSBvcHRpb24gaGFzIGJlZW4gYSBuby1vcCBmb3IgbG9uZyB0aW1lLCBhbmRcbiIKKyJpdCB3aWxsIGJlIHJlbW92ZWQuIFBsZWFzZSBkbyBub3QgdXNlIGl0IGFueW1vcmUuIgorbXNnc3RyICIiCisiRGllIC1iLy0tYmluYXJ5IE9wdGlvbiBoYXQgc2VpdCBMYW5nZW0ga2VpbmVuIEVmZmVrdCB1bmQgd2lyZFxuIgorImVudGZlcm50LiBCaXR0ZSBuaWNodCBtZWhyIHZlcndlbmRlbi4iCiAKLSM6IGdpdC1hbS5zaDo0ODEKKyM6IGdpdC1hbS5zaDo0NzcKICMsIHNoLWZvcm1hdAogbXNnaWQgInByZXZpb3VzIHJlYmFzZSBkaXJlY3RvcnkgJGRvdGVzdCBzdGlsbCBleGlzdHMgYnV0IG1ib3ggZ2l2ZW4uIgogbXNnc3RyICIiCiAiVm9yaGVyaWdlcyBWZXJ6ZWljaG5pcyBkZXMgTmV1YXVmYmF1cyAkZG90ZXN0IGV4aXN0aWVydCBub2NoLCBhYmVyIG1ib3ggIgogImdlZ2ViZW4uIgogCi0jOiBnaXQtYW0uc2g6NDg2CisjOiBnaXQtYW0uc2g6NDgyCiBtc2dpZCAiUGxlYXNlIG1ha2UgdXAgeW91ciBtaW5kLiAtLXNraXAgb3IgLS1hYm9ydD8iCi1tc2dzdHIgIkJpdHRlIHdlcmRlIGRpciBrbGFyLiAtLXNraXAgb2RlciAtLWFib3J0PyIKK21zZ3N0ciAiQml0dGUgd2VyZGVuIFNpZSBzaWNoIGtsYXIuIC0tc2tpcCBvZGVyIC0tYWJvcnQ/IgogCi0jOiBnaXQtYW0uc2g6NTEzCisjOiBnaXQtYW0uc2g6NTA5CiBtc2dpZCAiUmVzb2x2ZSBvcGVyYXRpb24gbm90IGluIHByb2dyZXNzLCB3ZSBhcmUgbm90IHJlc3VtaW5nLiIKIG1zZ3N0ciAiRXMgaXN0IGtlaW5lIEF1ZmzDtnN1bmcgaW0gR2FuZ2UsIGVzIHdpcmQgbmljaHQgZm9ydGdlc2V0enQuIgogCi0jOiBnaXQtYW0uc2g6NTc5CisjOiBnaXQtYW0uc2g6NTc1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJEaXJ0eSBpbmRleDogY2Fubm90IGFwcGx5IHBhdGNoZXMgKGRpcnR5OiAkZmlsZXMpIgogbXNnc3RyICIiCiAiVW5zYXViZXJlIEJlcmVpdHN0ZWxsdW5nOiBrYW5uIFBhdGNoZXMgbmljaHQgYW53ZW5kZW4gKHVuc2F1YmVyOiAkZmlsZXMpIgogCi0jOiBnaXQtYW0uc2g6NjcxCisjOiBnaXQtYW0uc2g6Njc5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiUGF0Y2ggaXMgZW1wdHkuICBXYXMgaXQgc3BsaXQgd3Jvbmc/XG4iCkBAIC01MDE5LDc5ICs5NDkwLDg5IEBACiAiVG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBzdG9wIHBhdGNoaW5nIHJ1biBcIiRjbWRsaW5lIC0tYWJvcnRcIi4iCiBtc2dzdHIgIiIKICJQYXRjaCBpc3QgbGVlci4gV3VyZGUgZXIgZmFsc2NoIGF1ZmdldGVpbHQ/XG4iCi0iV2VubiBkdSBkaWVzZW4gUGF0Y2ggYXVzbGFzc2VuIG3DtmNodGVzdCwgZsO8aHJlIHN0YXR0ZGVzc2VuICIKKyJXZW5uIFNpZSBkaWVzZW4gUGF0Y2ggYXVzbGFzc2VuIG3DtmNodGVuLCBmw7xocmVuIFNpZSBzdGF0dGRlc3NlblxuIgogIlwiJGNtZGxpbmUgLS1za2lwXCIgYXVzLlxuIgotIlVtIGRlbiB1cnNwcsO8bmdsaWNoZW4gWndlaWcgd2llZGVyaGVyenVzdGVsbGVuIHVuZCBkaWUgQW53ZW5kdW5nIGRlciBQYXRjaGVzXG4iCi0iYWJ6dWJyZWNoZW4sIGbDvGhyZSBcIiRjbWRsaW5lIC0tYWJvcnRcIiBhdXMuIgorIlVtIGRlbiB1cnNwcsO8bmdsaWNoZW4gWndlaWcgd2llZGVyaGVyenVzdGVsbGVuIHVuZCBkaWUgQW53ZW5kdW5nIGRlciAiCisiUGF0Y2hlc1xuIgorImFienVicmVjaGVuLCBmw7xocmVuIFNpZSBcIiRjbWRsaW5lIC0tYWJvcnRcIiBhdXMuIgogCi0jOiBnaXQtYW0uc2g6NzA4CisjOiBnaXQtYW0uc2g6NzA2CiBtc2dpZCAiUGF0Y2ggZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGUtbWFpbCBhZGRyZXNzLiIKLW1zZ3N0ciAiUGF0Y2ggZW50aMOkbHQga2VpbmUgZ8O8bHRpZ2UgZU1haWwtQWRyZXNzZS4iCittc2dzdHIgIlBhdGNoIGVudGjDpGx0IGtlaW5lIGfDvGx0aWdlIEVtYWlsLUFkcmVzc2UuIgogCi0jOiBnaXQtYW0uc2g6NzU1CisjOiBnaXQtYW0uc2g6NzUzCiBtc2dpZCAiY2Fubm90IGJlIGludGVyYWN0aXZlIHdpdGhvdXQgc3RkaW4gY29ubmVjdGVkIHRvIGEgdGVybWluYWwuIgogbXNnc3RyICIiCiAiS2FubiBuaWNodCBpbnRlcmFrdGl2IHNlaW4sIG9obmUgZGFzcyBkaWUgU3RhbmRhcmQtRWluZ2FiZSBtaXQgZWluZW0gIgogIlRlcm1pbmFsIHZlcmJ1bmRlbiBpc3QuIgogCi0jOiBnaXQtYW0uc2g6NzU5CisjOiBnaXQtYW0uc2g6NzU3CiBtc2dpZCAiQ29tbWl0IEJvZHkgaXM6IgogbXNnc3RyICJCZXNjaHJlaWJ1bmcgZGVyIEVpbnRyYWd1bmcgaXN0OiIKIAogIy4gVFJBTlNMQVRPUlM6IE1ha2Ugc3VyZSB0byBpbmNsdWRlIFt5XSwgW25dLCBbZV0sIFt2XSBhbmQgW2FdCiAjLiBpbiB5b3VyIHRyYW5zbGF0aW9uLiBUaGUgcHJvZ3JhbSB3aWxsIG9ubHkgYWNjZXB0IEVuZ2xpc2gKICMuIGlucHV0IGF0IHRoaXMgcG9pbnQuCi0jOiBnaXQtYW0uc2g6NzY2CisjOiBnaXQtYW0uc2g6NzY0CiBtc2dpZCAiQXBwbHk/IFt5XWVzL1tuXW8vW2VdZGl0L1t2XWlldyBwYXRjaC9bYV1jY2VwdCBhbGwgIgogbXNnc3RyICJBbndlbmRlbj8gW3ldZXMvW25dby9bZV1kaXQvW3ZdaWV3IHBhdGNoL1thXWNjZXB0IGFsbCAiCiAKLSM6IGdpdC1hbS5zaDo4MDIKKyM6IGdpdC1hbS5zaDo4MDAKICMsIHNoLWZvcm1hdAogbXNnaWQgIkFwcGx5aW5nOiAkRklSU1RMSU5FIgogbXNnc3RyICJXZW5kZSBhbjogJEZJUlNUTElORSIKIAotIzogZ2l0LWFtLnNoOjgyMworIzogZ2l0LWFtLnNoOjgyMQogbXNnaWQgIiIKICJObyBjaGFuZ2VzIC0gZGlkIHlvdSBmb3JnZXQgdG8gdXNlICdnaXQgYWRkJz9cbiIKICJJZiB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gc3RhZ2UsIGNoYW5jZXMgYXJlIHRoYXQgc29tZXRoaW5nIGVsc2VcbiIKICJhbHJlYWR5IGludHJvZHVjZWQgdGhlIHNhbWUgY2hhbmdlczsgeW91IG1pZ2h0IHdhbnQgdG8gc2tpcCB0aGlzIHBhdGNoLiIKIG1zZ3N0ciAiIgotIktlaW5lIMOEbmRlcnVuZ2VuIC0gaGFzdCBkdSB2ZXJnZXNzZW4gJ2dpdCBhZGQnIHp1IGJlbnV0emVuP1xuIgorIktlaW5lIMOEbmRlcnVuZ2VuIC0gaGFiZW4gU2llIHZlcmdlc3NlbiAnZ2l0IGFkZCcgenUgYmVudXR6ZW4/XG4iCiAiV2VubiBrZWluZSDDhG5kZXJ1bmdlbiBtZWhyIHp1bSBCZXJlaXRzdGVsbGVuIHZvcmhhbmRlbiBzaW5kLCBrw7ZubnRlblxuIgotImRpZXNlIGJlcmVpdHMgYW5kZXJ3ZWl0aWcgZWluZ2Vmw7xndCB3b3JkZW4gc2VpbjsgZHUga8O2bm50ZXN0IGRpZXNlbiBQYXRjaFxuIgorImRpZXNlIGJlcmVpdHMgYW5kZXJ3ZWl0aWcgZWluZ2Vmw7xndCB3b3JkZW4gc2VpbjsgU2llIGvDtm5udGVuIGRpZXNlbiBQYXRjaFxuIgogImF1c2xhc3Nlbi4iCiAKLSM6IGdpdC1hbS5zaDo4MzEKKyM6IGdpdC1hbS5zaDo4MjkKIG1zZ2lkICIiCiAiWW91IHN0aWxsIGhhdmUgdW5tZXJnZWQgcGF0aHMgaW4geW91ciBpbmRleFxuIgogImRpZCB5b3UgZm9yZ2V0IHRvIHVzZSAnZ2l0IGFkZCc/IgogbXNnc3RyICIiCi0iRHUgaGFzdCBpbW1lciBub2NoIG5pY2h0IHp1c2FtbWVuZ2Vmw7xocnRlIFBmYWRlIGluIGRlciBCZXJlaXRzdGVsbHVuZy5cbiIKLSJIYXN0IGR1IHZlcmdlc3NlbiAnZ2l0IGFkZCcgenUgYmVudXR6ZW4/IgorIlNpZSBoYWJlbiBpbW1lciBub2NoIG5pY2h0IHp1c2FtbWVuZ2Vmw7xocnRlIFBmYWRlIGluIGRlciBCZXJlaXRzdGVsbHVuZy5cbiIKKyJIYWJlbiBTaWUgdmVyZ2Vzc2VuICdnaXQgYWRkJyB6dSBiZW51dHplbj8iCiAKLSM6IGdpdC1hbS5zaDo4NDcKKyM6IGdpdC1hbS5zaDo4NDUKIG1zZ2lkICJObyBjaGFuZ2VzIC0tIFBhdGNoIGFscmVhZHkgYXBwbGllZC4iCiBtc2dzdHIgIktlaW5lIMOEbmRlcnVuZ2VuIC0tIFBhdGNoZXMgYmVyZWl0cyBhbmdld2VuZGV0LiIKIAotIzogZ2l0LWFtLnNoOjg1NworIzogZ2l0LWFtLnNoOjg1NQogIywgc2gtZm9ybWF0CiBtc2dpZCAiUGF0Y2ggZmFpbGVkIGF0ICRtc2dudW0gJEZJUlNUTElORSIKIG1zZ3N0ciAiQW53ZW5kdW5nIGRlcyBQYXRjaGVzIGZlaGxnZXNjaGxhZ2VuIGJlaSAkbXNnbnVtICRGSVJTVExJTkUiCiAKLSM6IGdpdC1hbS5zaDo4NzMKKyM6IGdpdC1hbS5zaDo4NTgKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgY29weSBvZiB0aGUgcGF0Y2ggdGhhdCBmYWlsZWQgaXMgZm91bmQgaW46XG4iCisiICAgJGRvdGVzdC9wYXRjaCIKK21zZ3N0ciAiIgorIkRpZSBLb3BpZSBkZXMgZmVobGdlc2NobGFnZW5lbiBQYXRjaGVzIGJlZmluZGV0IHNpY2ggaW46XG4iCisiICAgJGRvdGVzdC9wYXRjaCIKKworIzogZ2l0LWFtLnNoOjg3NgogbXNnaWQgImFwcGx5aW5nIHRvIGFuIGVtcHR5IGhpc3RvcnkiCiBtc2dzdHIgIndlbmRlIHp1IGxlZXJlciBIaXN0b3JpZSBhbiIKIAogIzogZ2l0LWJpc2VjdC5zaDo0OAogbXNnaWQgIllvdSBuZWVkIHRvIHN0YXJ0IGJ5IFwiZ2l0IGJpc2VjdCBzdGFydFwiIgotbXNnc3RyICJEdSBtdXNzdCBtaXQgXCJnaXQgYmlzZWN0IHN0YXJ0XCIgYmVnaW5uZW4uIgorbXNnc3RyICJTaWUgbcO8c3NlbiBtaXQgXCJnaXQgYmlzZWN0IHN0YXJ0XCIgYmVnaW5uZW4uIgogCiAjLiBUUkFOU0xBVE9SUzogTWFrZSBzdXJlIHRvIGluY2x1ZGUgW1ldIGFuZCBbbl0gaW4geW91cgogIy4gdHJhbnNsYXRpb24uIFRoZSBwcm9ncmFtIHdpbGwgb25seSBhY2NlcHQgRW5nbGlzaCBpbnB1dAogIy4gYXQgdGhpcyBwb2ludC4KICM6IGdpdC1iaXNlY3Quc2g6NTQKIG1zZ2lkICJEbyB5b3Ugd2FudCBtZSB0byBkbyBpdCBmb3IgeW91IFtZL25dPyAiCi1tc2dzdHIgIldpbGxzdCBkdSwgZGFzcyBpY2ggZXMgZsO8ciBkaWNoIG1hY2hlIFtZL25dPyAiCittc2dzdHIgIldvbGxlbiBTaWUsIGRhc3MgaWNoIGVzIGbDvHIgU2llIG1hY2hlIFtZL25dPyAiCiAKICM6IGdpdC1iaXNlY3Quc2g6OTUKICMsIHNoLWZvcm1hdApAQCAtNTEwMSw3ICs5NTgyLDcgQEAKICM6IGdpdC1iaXNlY3Quc2g6OTkKICMsIHNoLWZvcm1hdAogbXNnaWQgIickYXJnJyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSB2YWxpZCByZXZpc2lvbiIKLW1zZ3N0ciAiJyRhcmcnIHNjaGVpbnQga2VpbmUgZ8O8bHRpZ2UgVmVyc2lvbiB6dSBzZWluIgorbXNnc3RyICInJGFyZycgc2NoZWludCBrZWluZSBnw7xsdGlnZSBSZXZpc2lvbiB6dSBzZWluIgogCiAjOiBnaXQtYmlzZWN0LnNoOjExNwogbXNnaWQgIkJhZCBIRUFEIC0gSSBuZWVkIGEgSEVBRCIKQEAgLTUxMTIsMTIgKzk1OTMsMTIgQEAKIG1zZ2lkICIiCiAiQ2hlY2tpbmcgb3V0ICckc3RhcnRfaGVhZCcgZmFpbGVkLiBUcnkgJ2dpdCBiaXNlY3QgcmVzZXQgPHZhbGlkYnJhbmNoPicuIgogbXNnc3RyICIiCi0iQXVzY2hlY2tlbiB2b24gJyRzdGFydF9oZWFkJyBmZWhsZ2VzY2hsYWdlbi4gVmVyc3VjaGUgJ2dpdCBiaXNlY3QgcmVzZXQgIgorIkF1c2NoZWNrZW4gdm9uICckc3RhcnRfaGVhZCcgZmVobGdlc2NobGFnZW4uIFZlcnN1Y2hlbiBTaWUgJ2dpdCBiaXNlY3QgcmVzZXQgIgogIjxndWVsdGlnZXJ6d2VpZz4nLiIKIAogIzogZ2l0LWJpc2VjdC5zaDoxNDAKIG1zZ2lkICJ3b24ndCBiaXNlY3Qgb24gc2Vla2VkIHRyZWUiCi1tc2dzdHIgIlwiYmlzZWN0XCIgYXVmIGdlc3VjaHRlbSBad2VpZyBuaWNodCBtw7ZnbGljaCIKK21zZ3N0ciAiYmluw6RyZSBTdWNoZSBhdWYgZ2VzdWNodGVtIFp3ZWlnIG5pY2h0IG3DtmdsaWNoIgogCiAjOiBnaXQtYmlzZWN0LnNoOjE0NAogbXNnaWQgIkJhZCBIRUFEIC0gc3RyYW5nZSBzeW1ib2xpYyByZWYiCkBAIC01MTM1LDcgKzk2MTYsNyBAQAogCiAjOiBnaXQtYmlzZWN0LnNoOjIzMgogbXNnaWQgIlBsZWFzZSBjYWxsICdiaXNlY3Rfc3RhdGUnIHdpdGggYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIKLW1zZ3N0ciAiQml0dGUgcnVmZSAnYmlzZWN0X3N0YXRlJyBtaXQgbWluZGVzdGVucyBlaW5lbSBBcmd1bWVudCBhdWYuIgorbXNnc3RyICJCaXR0ZSBydWZlbiBTaWUgJ2Jpc2VjdF9zdGF0ZScgbWl0IG1pbmRlc3RlbnMgZWluZW0gQXJndW1lbnQgYXVmLiIKIAogIzogZ2l0LWJpc2VjdC5zaDoyNDQKICMsIHNoLWZvcm1hdApAQCAtNTE1MCwyMiArOTYzMSwyMiBAQAogIy4gdGhpcyBpcyBsZXNzIG9wdGltdW0uCiAjOiBnaXQtYmlzZWN0LnNoOjI3MwogbXNnaWQgIldhcm5pbmc6IGJpc2VjdGluZyBvbmx5IHdpdGggYSBiYWQgY29tbWl0LiIKLW1zZ3N0ciAiV2FybnVuZzogaGFsYmllcmUgbnVyIG1pdCBlaW5lciBmZWhsZXJoYWZ0ZW4gVmVyc2lvbiIKK21zZ3N0ciAiV2FybnVuZzogYmluw6RyZSBTdWNoZSBudXIgbWl0IGVpbmVyIGZlaGxlcmhhZnRlbiBWZXJzaW9uIgogCiAjLiBUUkFOU0xBVE9SUzogTWFrZSBzdXJlIHRvIGluY2x1ZGUgW1ldIGFuZCBbbl0gaW4geW91cgogIy4gdHJhbnNsYXRpb24uIFRoZSBwcm9ncmFtIHdpbGwgb25seSBhY2NlcHQgRW5nbGlzaCBpbnB1dAogIy4gYXQgdGhpcyBwb2ludC4KICM6IGdpdC1iaXNlY3Quc2g6Mjc5CiBtc2dpZCAiQXJlIHlvdSBzdXJlIFtZL25dPyAiCi1tc2dzdHIgIkJpc3QgZHUgc2ljaGVyIFtZL25dPyAiCittc2dzdHIgIlNpbmQgU2llIHNpY2hlciBbWS9uXT8gIgogCiAjOiBnaXQtYmlzZWN0LnNoOjI4OQogbXNnaWQgIiIKICJZb3UgbmVlZCB0byBnaXZlIG1lIGF0IGxlYXN0IG9uZSBnb29kIGFuZCBvbmUgYmFkIHJldmlzaW9ucy5cbiIKICIoWW91IGNhbiB1c2UgXCJnaXQgYmlzZWN0IGJhZFwiIGFuZCBcImdpdCBiaXNlY3QgZ29vZFwiIGZvciB0aGF0LikiCiBtc2dzdHIgIiIKLSJEdSBtdXNzdCBtaW5kZXN0ZW5zIGVpbmUga29ycmVrdGUgdW5kIGVpbmUgZmVobGVyaGFmdGUgVmVyc2lvbiBhbmdlYmVuLlxuIgotIihEdSBrYW5uc3QgZGFmw7xyIFwiZ2l0IGJpc2VjdCBiYWRcIiB1bmQgXCJnaXQgYmlzZWN0IGdvb2RcIiBiZW51dHplbi4pIgorIlNpZSBtw7xzc2VuIG1pbmRlc3RlbnMgZWluZSBrb3JyZWt0ZSB1bmQgZWluZSBmZWhsZXJoYWZ0ZSBSZXZpc2lvbiBhbmdlYmVuLlxuIgorIihTaWUga8O2bm5lbiBkYWbDvHIgXCJnaXQgYmlzZWN0IGJhZFwiIHVuZCBcImdpdCBiaXNlY3QgZ29vZFwiIGJlbnV0emVuLikiCiAKICM6IGdpdC1iaXNlY3Quc2g6MjkyCiBtc2dpZCAiIgpAQCAtNTE3Myw3MiArOTY1NCw3MiBAQAogIllvdSB0aGVuIG5lZWQgdG8gZ2l2ZSBtZSBhdCBsZWFzdCBvbmUgZ29vZCBhbmQgb25lIGJhZCByZXZpc2lvbnMuXG4iCiAiKFlvdSBjYW4gdXNlIFwiZ2l0IGJpc2VjdCBiYWRcIiBhbmQgXCJnaXQgYmlzZWN0IGdvb2RcIiBmb3IgdGhhdC4pIgogbXNnc3RyICIiCi0iRHUgbXVzc3QgbWl0IFwiZ2l0IGJpc2VjdCBzdGFydFwiIGJlZ2lubmVuLlxuIgotIkRhbmFjaCBtdXNzdCBkdSBtaW5kZXN0ZW5zIGVpbmUga29ycmVrdGUgdW5kIGVpbmUgZmVobGVyaGFmdGUgVmVyc2lvbiAiCisiU2llIG3DvHNzZW4gbWl0IFwiZ2l0IGJpc2VjdCBzdGFydFwiIGJlZ2lubmVuLlxuIgorIkRhbmFjaCBtw7xzc2VuIFNpZSBtaW5kZXN0ZW5zIGVpbmUga29ycmVrdGUgdW5kIGVpbmUgZmVobGVyaGFmdGUgUmV2aXNpb24gIgogImFuZ2ViZW4uXG4iCi0iKER1IGthbm5zdCBkYWbDvHIgXCJnaXQgYmlzZWN0IGJhZFwiIHVuZCBcImdpdCBiaXNlY3QgZ29vZFwiIGJlbnV0emVuLikiCisiKFNpZSBrw7ZubmVuIGRhZsO8ciBcImdpdCBiaXNlY3QgYmFkXCIgdW5kIFwiZ2l0IGJpc2VjdCBnb29kXCIgYmVudXR6ZW4uKSIKIAotIzogZ2l0LWJpc2VjdC5zaDozNDcgZ2l0LWJpc2VjdC5zaDo0NzQKKyM6IGdpdC1iaXNlY3Quc2g6MzYzIGdpdC1iaXNlY3Quc2g6NDkwCiBtc2dpZCAiV2UgYXJlIG5vdCBiaXNlY3RpbmcuIgotbXNnc3RyICJXaXIgc2luZCBuaWNodCBiZWltIEhhbGJpZXJlbi4iCittc2dzdHIgImtlaW5lIGJpbsOkcmUgU3VjaGUgaW0gR2FuZ2UiCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzU0CisjOiBnaXQtYmlzZWN0LnNoOjM3MAogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRpbnZhbGlkJyBpcyBub3QgYSB2YWxpZCBjb21taXQiCiBtc2dzdHIgIickaW52YWxpZCcgaXN0IGtlaW5lIGfDvGx0aWdlIFZlcnNpb24iCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzYzCisjOiBnaXQtYmlzZWN0LnNoOjM3OQogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIkNvdWxkIG5vdCBjaGVjayBvdXQgb3JpZ2luYWwgSEVBRCAnJGJyYW5jaCcuXG4iCiAiVHJ5ICdnaXQgYmlzZWN0IHJlc2V0IDxjb21taXQ+Jy4iCiBtc2dzdHIgIiIKICJLb25udGUgZGllIHVyc3Byw7xuZ2xpY2hlIFp3ZWlnc3BpdHplIChIRUFEKSAnJGJyYW5jaCcgbmljaHQgYXVzY2hlY2tlbi5cbiIKLSJWZXJzdWNoZSAnZ2l0IGJpc2VjdCByZXNldCA8VmVyc2lvbj4nLiIKKyJWZXJzdWNoZW4gU2llICdnaXQgYmlzZWN0IHJlc2V0IDxWZXJzaW9uPicuIgogCi0jOiBnaXQtYmlzZWN0LnNoOjM5MAorIzogZ2l0LWJpc2VjdC5zaDo0MDYKIG1zZ2lkICJObyBsb2dmaWxlIGdpdmVuIgogbXNnc3RyICJLZWluZSBMb2ctRGF0ZWkgZ2VnZWJlbiIKIAotIzogZ2l0LWJpc2VjdC5zaDozOTEKKyM6IGdpdC1iaXNlY3Quc2g6NDA3CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCAkZmlsZSBmb3IgcmVwbGF5aW5nIgogbXNnc3RyICJrYW5uICRmaWxlIG5pY2h0IGbDvHIgZGFzIEFic3BpZWxlbiBsZXNlbiIKIAotIzogZ2l0LWJpc2VjdC5zaDo0MDgKKyM6IGdpdC1iaXNlY3Quc2g6NDI0CiBtc2dpZCAiPz8gd2hhdCBhcmUgeW91IHRhbGtpbmcgYWJvdXQ/IgotbXNnc3RyICI/PyBXYXMgcmVkZXN0IGR1IGRhPyIKK21zZ3N0ciAiPz8gV2FzIHJlZGVuIFNpZSBkYT8iCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDIwCisjOiBnaXQtYmlzZWN0LnNoOjQzNgogIywgc2gtZm9ybWF0CiBtc2dpZCAicnVubmluZyAkY29tbWFuZCIKIG1zZ3N0ciAiZsO8aHJlICRjb21tYW5kIGF1cyIKIAotIzogZ2l0LWJpc2VjdC5zaDo0MjcKKyM6IGdpdC1iaXNlY3Quc2g6NDQzCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiYmlzZWN0IHJ1biBmYWlsZWQ6XG4iCiAiZXhpdCBjb2RlICRyZXMgZnJvbSAnJGNvbW1hbmQnIGlzIDwgMCBvciA+PSAxMjgiCiBtc2dzdHIgIiIKLSJBdXNmw7xocnVuZyBkZXIgSGFsYmllcnVuZyBmZWhsZ2VzY2hsYWdlbjpcbiIKKyInYmlzZWN0IHJ1bicgZmVobGdlc2NobGFnZW46XG4iCiAiUsO8Y2trZWhyd2VydCAkcmVzIHZvbiAnJGNvbW1hbmQnIGlzdCA8IDAgb2RlciA+PSAxMjgiCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDUzCisjOiBnaXQtYmlzZWN0LnNoOjQ2OQogbXNnaWQgImJpc2VjdCBydW4gY2Fubm90IGNvbnRpbnVlIGFueSBtb3JlIgotbXNnc3RyICJBdXNmw7xocnVuZyBkZXIgSGFsYmllcnVuZyBrYW5uIG5pY2h0IG1laHIgZm9ydGdlc2V0enQgd2VyZGVuIgorbXNnc3RyICInYmlzZWN0IHJ1bicga2FubiBuaWNodCBtZWhyIGZvcnRnZXNldHp0IHdlcmRlbiIKIAotIzogZ2l0LWJpc2VjdC5zaDo0NTkKKyM6IGdpdC1iaXNlY3Quc2g6NDc1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiYmlzZWN0IHJ1biBmYWlsZWQ6XG4iCiAiJ2Jpc2VjdF9zdGF0ZSAkc3RhdGUnIGV4aXRlZCB3aXRoIGVycm9yIGNvZGUgJHJlcyIKIG1zZ3N0ciAiIgotIkF1c2bDvGhydW5nIGRlciBIYWxiaWVydW5nIGZlaGxnZXNjaGxhZ2VuOlxuIgorIidiaXNlY3QgcnVuJyBmZWhsZ2VzY2hsYWdlbjpcbiIKICInYmlzZWN0X3N0YXRlICRzdGF0ZScgd3VyZGUgbWl0IEZlaGxlcndlcnQgJHJlcyBiZWVuZGV0IgogCi0jOiBnaXQtYmlzZWN0LnNoOjQ2NgorIzogZ2l0LWJpc2VjdC5zaDo0ODIKIG1zZ2lkICJiaXNlY3QgcnVuIHN1Y2Nlc3MiCi1tc2dzdHIgIkhhbGJpZXJ1bmcgZXJmb2xncmVpY2ggYXVzZ2Vmw7xocnQiCittc2dzdHIgIidiaXNlY3QgcnVuJyBlcmZvbGdyZWljaCBhdXNnZWbDvGhydCIKIAogIzogZ2l0LXB1bGwuc2g6MjEKIG1zZ2lkICIiCkBAIC01MjQ2LDE2ICs5NzI3LDE4IEBACiAiUGxlYXNlLCBmaXggdGhlbSB1cCBpbiB0aGUgd29yayB0cmVlLCBhbmQgdGhlbiB1c2UgJ2dpdCBhZGQvcm0gPGZpbGU+J1xuIgogImFzIGFwcHJvcHJpYXRlIHRvIG1hcmsgcmVzb2x1dGlvbiwgb3IgdXNlICdnaXQgY29tbWl0IC1hJy4iCiBtc2dzdHIgIiIKLSJcInB1bGxcIiBpc3QgbmljaHQgbcO2Z2xpY2gsIHdlaWwgZHUgbmljaHQgenVzYW1tZW5nZWbDvGhydGUgRGF0ZWllbiBoYXN0LlxuIgotIkJpdHRlIGtvcnJpZ2llcmUgZGllcyBpbSBBcmJlaXRzYmF1bSB1bmQgYmVudXR6ZSBkYW5uICdnaXQgYWRkL3JtIDxEYXRlaT4nXG4iCi0idW0gZGllIEF1ZmzDtnN1bmcgZW50c3ByZWNoZW5kIHp1IG1hcmtpZXJlbiwgb2RlciBiZW51dHplICdnaXQgY29tbWl0IC1hJy4iCisiXCJwdWxsXCIgaXN0IG5pY2h0IG3DtmdsaWNoLCB3ZWlsIFNpZSBuaWNodCB6dXNhbW1lbmdlZsO8aHJ0ZSBEYXRlaWVuIGhhYmVuLlxuIgorIkJpdHRlIGtvcnJpZ2llcmVuIFNpZSBkaWVzIGltIEFyYmVpdHNiYXVtIHVuZCBiZW51dHplbiBTaWUgZGFubiAnZ2l0IGFkZC9ybSAiCisiPERhdGVpPidcbiIKKyJ1bSBkaWUgQXVmbMO2c3VuZyBlbnRzcHJlY2hlbmQgenUgbWFya2llcmVuLCBvZGVyIGJlbnV0emVuIFNpZSAnZ2l0IGNvbW1pdCAtIgorImEnLiIKIAogIzogZ2l0LXB1bGwuc2g6MjUKIG1zZ2lkICJQdWxsIGlzIG5vdCBwb3NzaWJsZSBiZWNhdXNlIHlvdSBoYXZlIHVubWVyZ2VkIGZpbGVzLiIKIG1zZ3N0ciAiIgotIlwicHVsbFwiIGlzdCBuaWNodCBtw7ZnbGljaCwgd2VpbCBkdSBuaWNodCB6dXNhbW1lbmdlZsO8aHJ0ZSBEYXRlaWVuIGhhc3QuIgorIlwicHVsbFwiIGlzdCBuaWNodCBtw7ZnbGljaCwgd2VpbCBTaWUgbmljaHQgenVzYW1tZW5nZWbDvGhydGUgRGF0ZWllbiBoYWJlbi4iCiAKLSM6IGdpdC1wdWxsLnNoOjE5NworIzogZ2l0LXB1bGwuc2g6MjAzCiBtc2dpZCAidXBkYXRpbmcgYW4gdW5ib3JuIGJyYW5jaCB3aXRoIGNoYW5nZXMgYWRkZWQgdG8gdGhlIGluZGV4IgogbXNnc3RyICIiCiAiQWt0dWFsaXNpZXJlIGVpbmUgdW5nZWJvcmVuZW4gWndlaWcgbWl0IMOEbmRlcnVuZ2VuLCBkaWUgenVyIEJlcmVpdHN0ZWxsdW5nICIKQEAgLTUyNjUsNyArOTc0OCw3IEBACiAjLiBUaGUgd29ya2luZyB0cmVlIGFuZCB0aGUgaW5kZXggZmlsZSBpcyBzdGlsbCBiYXNlZCBvbiB0aGUKICMuICRvcmlnX2hlYWQgY29tbWl0LCBidXQgd2UgYXJlIG1lcmdpbmcgaW50byAkY3Vycl9oZWFkLgogIy4gRmlyc3QgdXBkYXRlIHRoZSB3b3JraW5nIHRyZWUgdG8gbWF0Y2ggJGN1cnJfaGVhZC4KLSM6IGdpdC1wdWxsLnNoOjIyOAorIzogZ2l0LXB1bGwuc2g6MjM1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiV2FybmluZzogZmV0Y2ggdXBkYXRlZCB0aGUgY3VycmVudCBicmFuY2ggaGVhZC5cbiIKQEAgLTUyNzMsMjMgKzk3NTYsMTU1IEBACiAiV2FybmluZzogY29tbWl0ICRvcmlnX2hlYWQuIgogbXNnc3RyICIiCiAiV2FybnVuZzogRGllIEFuZm9yZGVydW5nIGFrdHVhbGlzaWVydGUgZGllIFNwaXR6ZSBkZXMgYWt0dWVsbGVuIFp3ZWlnZXMuXG4iCi0iV2FybnVuZzogU3B1bGUgZGVpbmVuIEFyYmVpdHN6d2VpZyB2b24gVmVyc2lvbiAkb3JpZ19oZWFkIHZvci4iCisiV2FybnVuZzogU3B1bGUgSWhyZW4gQXJiZWl0c3p3ZWlnIHZvbiBWZXJzaW9uICRvcmlnX2hlYWQgdm9yLiIKIAotIzogZ2l0LXB1bGwuc2g6MjUzCisjOiBnaXQtcHVsbC5zaDoyNjAKIG1zZ2lkICJDYW5ub3QgbWVyZ2UgbXVsdGlwbGUgYnJhbmNoZXMgaW50byBlbXB0eSBoZWFkIgogbXNnc3RyICJLYW5uIG5pY2h0IG1laHJlcmUgWndlaWdlIGluIGVpbmVuIHVuZ2Vib3JlbmVuIFp3ZWlnIHp1c2FtbWVuZsO8aHJlbiIKIAotIzogZ2l0LXB1bGwuc2g6MjU3CisjOiBnaXQtcHVsbC5zaDoyNjQKIG1zZ2lkICJDYW5ub3QgcmViYXNlIG9udG8gbXVsdGlwbGUgYnJhbmNoZXMiCiBtc2dzdHIgImthbm4gbmljaHQgYXVmIG1laHJlcmUgWndlaWdlIG5ldSBhdWZiYXVlbiIKIAorIzogZ2l0LXJlYmFzZS5zaDo1MworbXNnaWQgIiIKKyJXaGVuIHlvdSBoYXZlIHJlc29sdmVkIHRoaXMgcHJvYmxlbSwgcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIuXG4iCisiSWYgeW91IHByZWZlciB0byBza2lwIHRoaXMgcGF0Y2gsIHJ1biBcImdpdCByZWJhc2UgLS1za2lwXCIgaW5zdGVhZC5cbiIKKyJUbyBjaGVjayBvdXQgdGhlIG9yaWdpbmFsIGJyYW5jaCBhbmQgc3RvcCByZWJhc2luZywgcnVuIFwiZ2l0IHJlYmFzZSAtLWFib3J0IgorIlwiLiIKK21zZ3N0ciAiIgorIldlbm4gU2llIGRhcyBQcm9ibGVtIGF1ZmdlbMO2c3QgaGFiZW4sIGbDvGhyZW4gU2llIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIgIgorImF1cy5cbiIKKyJGYWxscyBTaWUgZGllc2VuIFBhdGNoIGF1c2xhc3NlbiBtw7ZjaHRlbiwgZsO8aHJlbiBTaWUgc3RhdHRkZXNzZW4gXCJnaXQgIgorInJlYmFzZSAtLXNraXBcIiBhdXMuXG4iCisiVW0gZGVuIHVyc3Byw7xuZ2xpY2hlbiBad2VpZyB3aWVkZXJoZXJ6dXN0ZWxsZW4gdW5kIGRlbiBOZXVhdWZiYXUgIgorImFienVicmVjaGVuLFxuIgorImbDvGhyZW4gU2llIFwiZ2l0IHJlYmFzZSAtLWFib3J0XCIgYXVzLiIKKworIzogZ2l0LXJlYmFzZS5zaDoxNjAKK21zZ2lkICJUaGUgcHJlLXJlYmFzZSBob29rIHJlZnVzZWQgdG8gcmViYXNlLiIKK21zZ3N0ciAiRGVyIFwicHJlLXJlYmFzZSBob29rXCIgaGF0IGRlbiBOZXVhdWZiYXUgenVyw7xja2dld2llc2VuLiIKKworIzogZ2l0LXJlYmFzZS5zaDoxNjUKK21zZ2lkICJJdCBsb29rcyBsaWtlIGdpdC1hbSBpcyBpbiBwcm9ncmVzcy4gQ2Fubm90IHJlYmFzZS4iCittc2dzdHIgIlwiZ2l0LWFtXCIgc2NoZWludCBpbSBHYW5nZSB6dSBzZWluLiBLYW5uIG5pY2h0IG5ldSBhdWZiYXVlbi4iCisKKyM6IGdpdC1yZWJhc2Uuc2g6Mjk2Cittc2dpZCAiVGhlIC0tZXhlYyBvcHRpb24gbXVzdCBiZSB1c2VkIHdpdGggdGhlIC0taW50ZXJhY3RpdmUgb3B0aW9uIgorbXNnc3RyICJEaWUgT3B0aW9uIC0tZXhlYyBtdXNzIG1pdCAtLWludGVyYWN0aXZlIHZlcndlbmRldCB3ZXJkZW4uIgorCisjOiBnaXQtcmViYXNlLnNoOjMwMQorbXNnaWQgIk5vIHJlYmFzZSBpbiBwcm9ncmVzcz8iCittc2dzdHIgIktlaW4gTmV1YXVmYmF1IGltIEdhbmdlPyIKKworIzogZ2l0LXJlYmFzZS5zaDozMTIKK21zZ2lkICJUaGUgLS1lZGl0LXRvZG8gYWN0aW9uIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIGludGVyYWN0aXZlIHJlYmFzZS4iCittc2dzdHIgIiIKKyJEaWUgLS1lZGl0LXRvZG8gQWt0aW9uIGthbm4gbnVyIHfDpGhyZW5kIGVpbmVzIGludGVyYWt0aXZlbiBOZXVhdWZiYXVzICIKKyJ2ZXJ3ZW5kZXQgd2VyZGVuLiIKKworIzogZ2l0LXJlYmFzZS5zaDozMTkKK21zZ2lkICJDYW5ub3QgcmVhZCBIRUFEIgorbXNnc3RyICJLYW5uIFp3ZWlnc3BpdHplIChIRUFEKSBuaWNodCBsZXNlbiIKKworIzogZ2l0LXJlYmFzZS5zaDozMjIKK21zZ2lkICIiCisiWW91IG11c3QgZWRpdCBhbGwgbWVyZ2UgY29uZmxpY3RzIGFuZCB0aGVuXG4iCisibWFyayB0aGVtIGFzIHJlc29sdmVkIHVzaW5nIGdpdCBhZGQiCittc2dzdHIgIiIKKyJTaWUgbcO8c3NlbiBhbGxlIFp1c2FtbWVuZsO8aHJ1bmdza29uZmxpa3RlIGVkaXRpZXJlbiB1bmQgZGllc2UgZGFublxuIgorIm1pdHRlbHMgXCJnaXQgYWRkXCIgYWxzIGF1ZmdlbMO2c3QgbWFya2llcmVuIgorCisjOiBnaXQtcmViYXNlLnNoOjM0MAorIywgc2gtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IG1vdmUgYmFjayB0byAkaGVhZF9uYW1lIgorbXNnc3RyICJLb25udGUgbmljaHQgenUgJGhlYWRfbmFtZSB6dXLDvGNrZ2VoZW4iCisKKyM6IGdpdC1yZWJhc2Uuc2g6MzU5CisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiSXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBhbHJlYWR5IGEgJHN0YXRlX2Rpcl9iYXNlIGRpcmVjdG9yeSwgYW5kXG4iCisiSSB3b25kZXIgaWYgeW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGFub3RoZXIgcmViYXNlLiAgSWYgdGhhdCBpcyB0aGVcbiIKKyJjYXNlLCBwbGVhc2UgdHJ5XG4iCisiXHQkY21kX2xpdmVfcmViYXNlXG4iCisiSWYgdGhhdCBpcyBub3QgdGhlIGNhc2UsIHBsZWFzZVxuIgorIlx0JGNtZF9jbGVhcl9zdGFsZV9yZWJhc2VcbiIKKyJhbmQgcnVuIG1lIGFnYWluLiAgSSBhbSBzdG9wcGluZyBpbiBjYXNlIHlvdSBzdGlsbCBoYXZlIHNvbWV0aGluZ1xuIgorInZhbHVhYmxlIHRoZXJlLiIKK21zZ3N0ciAiIgorIkVzIHNpZWh0IHNvIGF1cywgYWxzIG9iIGVzIGRhcyBWZXJ6ZWljaG5pcyAkc3RhdGVfZGlyX2Jhc2UgYmVyZWl0cyBnaWJ0XG4iCisidW5kIGVzIGvDtm5udGUgZWluIGFuZGVyZXIgTmV1YXVmYmF1IGltIEdhbmdlIHNlaW4uIFdlbm4gZGFzIGRlciBGYWxsIGlzdCxcbiIKKyJwcm9iaWVyZW4gU2llIGJpdHRlXG4iCisiXHQkY21kX2xpdmVfcmViYXNlXG4iCisiV2VubiBkYXMgbmljaHQgZGVyIEZhbGwgaXN0LCBwcm9iaWVyZW4gU2llIGJpdHRlXG4iCisiXHQkY21kX2NsZWFyX3N0YWxlX3JlYmFzZVxuIgorInVuZCBmw7xocmVuIFNpZSBkaWVzZXMgS29tbWFuZG8gbm9jaG1hbCBhdXMuIEVzIHdpcmQgYW5nZWhhbHRlbiwgZmFsbHMgbm9jaFxuIgorImV0d2FzIFNjaMO8dHplbnN3ZXJ0ZXMgdm9yaGFuZGVuIGlzdC4iCisKKyM6IGdpdC1yZWJhc2Uuc2g6NDA0CisjLCBzaC1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHVwc3RyZWFtICR1cHN0cmVhbV9uYW1lIgorbXNnc3RyICJ1bmfDvGx0aWdlciDDnGJlcm5haG1lendlaWcgJHVwc3RyZWFtX25hbWUiCisKKyM6IGdpdC1yZWJhc2Uuc2g6NDI4CisjLCBzaC1mb3JtYXQKK21zZ2lkICIkb250b19uYW1lOiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBtZXJnZSBiYXNlcyIKK21zZ3N0ciAiJG9udG9fbmFtZTogZXMgZ2lidCBtZWhyIGFscyBlaW5lIFp1c2FtbWVuZsO8aHJ1bmdzYmFzaXMiCisKKyM6IGdpdC1yZWJhc2Uuc2g6NDMxIGdpdC1yZWJhc2Uuc2g6NDM1CisjLCBzaC1mb3JtYXQKK21zZ2lkICIkb250b19uYW1lOiB0aGVyZSBpcyBubyBtZXJnZSBiYXNlIgorbXNnc3RyICIkb250b19uYW1lOiBlcyBnaWJ0IGtlaW5lIFp1c2FtbWVuZsO8aHJ1bmdzYmFzaXMiCisKKyM6IGdpdC1yZWJhc2Uuc2g6NDQwCisjLCBzaC1mb3JtYXQKK21zZ2lkICJEb2VzIG5vdCBwb2ludCB0byBhIHZhbGlkIGNvbW1pdDogJG9udG9fbmFtZSIKK21zZ3N0ciAiJG9udG9fbmFtZSB6ZWlndCBhdWYga2VpbmUgZ8O8bHRpZ2UgVmVyc2lvbiIKKworIzogZ2l0LXJlYmFzZS5zaDo0NjMKKyMsIHNoLWZvcm1hdAorbXNnaWQgImZhdGFsOiBubyBzdWNoIGJyYW5jaDogJGJyYW5jaF9uYW1lIgorbXNnc3RyICJmYXRhbDogWndlaWcgJGJyYW5jaF9uYW1lIG5pY2h0IGdlZnVuZGVuIgorCisjOiBnaXQtcmViYXNlLnNoOjQ4MworbXNnaWQgIlBsZWFzZSBjb21taXQgb3Igc3Rhc2ggdGhlbS4iCittc2dzdHIgIkJpdHRlIHRyYWdlbiBTaWUgZGllIMOEbmRlcnVuZ2VuIGVpbiBvZGVyIGJlbnV0emVuIFNpZSBcInN0YXNoXCIuIgorCisjOiBnaXQtcmViYXNlLnNoOjUwMQorIywgc2gtZm9ybWF0Cittc2dpZCAiQ3VycmVudCBicmFuY2ggJGJyYW5jaF9uYW1lIGlzIHVwIHRvIGRhdGUuIgorbXNnc3RyICJBa3R1ZWxsZXIgWndlaWcgJGJyYW5jaF9uYW1lIGlzdCBhdWYgZGVtIG5ldXN0ZW4gU3RhbmQuIgorCisjOiBnaXQtcmViYXNlLnNoOjUwNAorIywgc2gtZm9ybWF0Cittc2dpZCAiQ3VycmVudCBicmFuY2ggJGJyYW5jaF9uYW1lIGlzIHVwIHRvIGRhdGUsIHJlYmFzZSBmb3JjZWQuIgorbXNnc3RyICIiCisiQWt0dWVsbGVyIFp3ZWlnICRicmFuY2hfbmFtZSBpc3QgYXVmIGRlbSBuZXVzdGVuIFN0YW5kLCBOZXVhdWZiYXUgZXJ6d3VuZ2VuLiIKKworIzogZ2l0LXJlYmFzZS5zaDo1MTUKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNoYW5nZXMgZnJvbSAkbWIgdG8gJG9udG86IgorbXNnc3RyICLDhG5kZXJ1bmdlbiB2b24gJG1iIHp1ICRvbnRvOiIKKworIy4gRGV0YWNoIEhFQUQgYW5kIHJlc2V0IHRoZSB0cmVlCisjOiBnaXQtcmViYXNlLnNoOjUyNAorbXNnaWQgIkZpcnN0LCByZXdpbmRpbmcgaGVhZCB0byByZXBsYXkgeW91ciB3b3JrIG9uIHRvcCBvZiBpdC4uLiIKK21zZ3N0ciAiIgorIlp1bsOkY2hzdCB3aXJkIGRpZSBad2VpZ3NwaXR6ZSB6dXLDvGNrZ2VzcHVsdCwgdW0gSWhyZSDDhG5kZXJ1bmdlblxuIgorImRhcmF1ZiBuZXUgYW56dXdlbmRlbi4uLiIKKworIzogZ2l0LXJlYmFzZS5zaDo1MzIKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhc3QtZm9yd2FyZGVkICRicmFuY2hfbmFtZSB0byAkb250b19uYW1lLiIKK21zZ3N0ciAiJGJyYW5jaF9uYW1lIHp1ICRvbnRvX25hbWUgdm9yZ2VzcHVsdC4iCisKICM6IGdpdC1zdGFzaC5zaDo1MQogbXNnaWQgImdpdCBzdGFzaCBjbGVhciB3aXRoIHBhcmFtZXRlcnMgaXMgdW5pbXBsZW1lbnRlZCIKIG1zZ3N0ciAiZ2l0IHN0YXNoIGNsZWFyIG1pdCBQYXJhbWV0ZXJuIGlzdCBuaWNodCBpbXBsZW1lbnRpZXJ0IgogCiAjOiBnaXQtc3Rhc2guc2g6NzQKIG1zZ2lkICJZb3UgZG8gbm90IGhhdmUgdGhlIGluaXRpYWwgY29tbWl0IHlldCIKLW1zZ3N0ciAiRHUgaGFzdCBiaXNoZXIgbm9jaCBrZWluZSBpbml0aWFsZSBWZXJzaW9uIgorbXNnc3RyICJTaWUgaGFiZW4gYmlzaGVyIG5vY2gga2VpbmUgaW5pdGlhbGUgVmVyc2lvbiIKIAogIzogZ2l0LXN0YXNoLnNoOjg5CiBtc2dpZCAiQ2Fubm90IHNhdmUgdGhlIGN1cnJlbnQgaW5kZXggc3RhdGUiCkBAIC01MzA1LDcgKzk5MjAsNyBAQAogCiAjOiBnaXQtc3Rhc2guc2g6MTQzCiBtc2dpZCAiQ2Fubm90IHJlbW92ZSB0ZW1wb3JhcnkgaW5kZXggKGNhbid0IGhhcHBlbikiCi1tc2dzdHIgIkthbm4gdGVtcG9yw6RyZSBCZXJlaXRzdGVsbHVuZyBuaWNodCBlbnRmZXJuZW4gKGthbm4gbmljaHQgcGFzc2llcmVuKSIKK21zZ3N0ciAiS2FubiB0ZW1wb3LDpHJlIEJlcmVpdHN0ZWxsdW5nIG5pY2h0IGzDtnNjaGVuIChrYW5uIG5pY2h0IHBhc3NpZXJlbikiCiAKICM6IGdpdC1zdGFzaC5zaDoxNTYKIG1zZ2lkICJDYW5ub3QgcmVjb3JkIHdvcmtpbmcgdHJlZSBzdGF0ZSIKQEAgLTUzMjgsNyArOTk0Myw3IEBACiAiICAgICAgIFRvIHByb3ZpZGUgYSBtZXNzYWdlLCB1c2UgZ2l0IHN0YXNoIHNhdmUgLS0gJyRvcHRpb24nIgogbXNnc3RyICIiCiAiRmVobGVyOiB1bmJla2FubnRlIE9wdGlvbiBmw7xyICdzdGFzaCBzYXZlJzogJG9wdGlvblxuIgotIiAgICAgICAgVW0gZWluZSBCZXNjaHJlaWJ1bmcgYW56dWdlYmVuLCBiZW51dHplIFwiZ2l0IHN0YXNoIHNhdmUgLS0gIgorIiAgICAgICAgVW0gZWluZSBCZXNjaHJlaWJ1bmcgYW56dWdlYmVuLCBiZW51dHplbiBTaWUgXCJnaXQgc3Rhc2ggc2F2ZSAtLSAiCiAiJyRvcHRpb24nXCIiCiAKICM6IGdpdC1zdGFzaC5zaDoyMjMKQEAgLTUzNDUsNyArOTk2MCw3IEBACiAKICM6IGdpdC1zdGFzaC5zaDoyNTMKIG1zZ2lkICJDYW5ub3QgcmVtb3ZlIHdvcmt0cmVlIGNoYW5nZXMiCi1tc2dzdHIgIkthbm4gw4RuZGVydW5nZW4gYW0gQXJiZWl0c2JhdW0gbmljaHQgZW50ZmVybmVuIgorbXNnc3RyICJLYW5uIMOEbmRlcnVuZ2VuIGFtIEFyYmVpdHNiYXVtIG5pY2h0IGzDtnNjaGVuIgogCiAjOiBnaXQtc3Rhc2guc2g6MzUyCiBtc2dpZCAiTm8gc3Rhc2ggZm91bmQuIgpAQCAtNTM4Miw3ICs5OTk3LDcgQEAKIAogIzogZ2l0LXN0YXNoLnNoOjQyNAogbXNnaWQgIkNvbmZsaWN0cyBpbiBpbmRleC4gVHJ5IHdpdGhvdXQgLS1pbmRleC4iCi1tc2dzdHIgIktvbmZsaWt0ZSBpbiBkZXIgQmVyZWl0c3RlbGx1bmcuIFZlcnN1Y2hlIGVzIG9obmUgLS1pbmRleC4iCittc2dzdHIgIktvbmZsaWt0ZSBpbiBkZXIgQmVyZWl0c3RlbGx1bmcuIFZlcnN1Y2hlbiBTaWUgZXMgb2huZSAtLWluZGV4LiIKIAogIzogZ2l0LXN0YXNoLnNoOjQyNgogbXNnaWQgIkNvdWxkIG5vdCBzYXZlIGluZGV4IHRyZWUiCkBAIC01MzkyLDIzMSArMTAwMDcsNDY1IEBACiBtc2dpZCAiQ2Fubm90IHVuc3RhZ2UgbW9kaWZpZWQgZmlsZXMiCiBtc2dzdHIgIkthbm4gZ2XDpG5kZXJ0ZSBEYXRlaWVuIG5pY2h0IGF1cyBkZXIgQmVyZWl0c3RlbGx1bmcgaGVyYXVzbmVobWVuIgogCi0jOiBnaXQtc3Rhc2guc2g6NDc0CisjOiBnaXQtc3Rhc2guc2g6NDc1CiBtc2dpZCAiSW5kZXggd2FzIG5vdCB1bnN0YXNoZWQuIgogbXNnc3RyICJCZXJlaXRzdGVsbHVuZyB3dXJkZSBuaWNodCBhdXNnZWxhZ2VydC4iCiAKLSM6IGdpdC1zdGFzaC5zaDo0OTEKKyM6IGdpdC1zdGFzaC5zaDo0OTIKICMsIHNoLWZvcm1hdAogbXNnaWQgIkRyb3BwZWQgJHtSRVZ9ICgkcykiCiBtc2dzdHIgIkdlbMO2c2NodCAke1JFVn0gKCRzKSIKIAotIzogZ2l0LXN0YXNoLnNoOjQ5MgorIzogZ2l0LXN0YXNoLnNoOjQ5MwogIywgc2gtZm9ybWF0CiBtc2dpZCAiJHtSRVZ9OiBDb3VsZCBub3QgZHJvcCBzdGFzaCBlbnRyeSIKIG1zZ3N0ciAiJHtSRVZ9OiBLb25udGUgXCJzdGFzaFwiLUVpbnRyYWcgbmljaHQgbMO2c2NoZW4iCiAKLSM6IGdpdC1zdGFzaC5zaDo0OTkKKyM6IGdpdC1zdGFzaC5zaDo1MDAKIG1zZ2lkICJObyBicmFuY2ggbmFtZSBzcGVjaWZpZWQiCiBtc2dzdHIgIktlaW4gWndlaWduYW1lIHNwZXppZml6aWVydCIKIAotIzogZ2l0LXN0YXNoLnNoOjU3MAorIzogZ2l0LXN0YXNoLnNoOjU3MQogbXNnaWQgIihUbyByZXN0b3JlIHRoZW0gdHlwZSBcImdpdCBzdGFzaCBhcHBseVwiKSIKLW1zZ3N0ciAiKFp1ciBXaWVkZXJoZXJzdGVsbHVuZyBnZWJlIFwiZ2l0IHN0YXNoIGFwcGx5XCIgZWluKSIKK21zZ3N0ciAiKFp1ciBXaWVkZXJoZXJzdGVsbHVuZyBnZWJlbiBTaWUgXCJnaXQgc3Rhc2ggYXBwbHlcIiBlaW4pIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU2CisjOiBnaXQtc3VibW9kdWxlLnNoOjkxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgc3RyaXAgb25lIGNvbXBvbmVudCBvZmYgdXJsICckcmVtb3RldXJsJyIKIG1zZ3N0ciAiS2FubiBlaW5lIEtvbXBvbmVudGUgdm9uIFVSTCAnJHJlbW90ZXVybCcgbmljaHQgZXh0cmFoaWVyZW4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTA5CisjOiBnaXQtc3VibW9kdWxlLnNoOjE5NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiTm8gc3VibW9kdWxlIG1hcHBpbmcgZm91bmQgaW4gLmdpdG1vZHVsZXMgZm9yIHBhdGggJyRzbV9wYXRoJyIKIG1zZ3N0ciAiIgogIktlaW5lIFVudGVycHJvamVrdC1adW9yZG51bmcgaW4gLmdpdG1vZHVsZXMgZsO8ciBQZmFkICckc21fcGF0aCcgZ2VmdW5kZW4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTUwCisjOiBnaXQtc3VibW9kdWxlLnNoOjIzOQogIywgc2gtZm9ybWF0CiBtc2dpZCAiQ2xvbmUgb2YgJyR1cmwnIGludG8gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyBmYWlsZWQiCiBtc2dzdHIgIktsb25lbiB2b24gJyR1cmwnIGluIFVudGVycHJvamVrdC1QZmFkICckc21fcGF0aCcgZmVobGdlc2NobGFnZW4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTYwCisjOiBnaXQtc3VibW9kdWxlLnNoOjI1MQogIywgc2gtZm9ybWF0CiBtc2dpZCAiR2l0ZGlyICckYScgaXMgcGFydCBvZiB0aGUgc3VibW9kdWxlIHBhdGggJyRiJyBvciB2aWNlIHZlcnNhIgogbXNnc3RyICIiCiAiR2l0LVZlcnplaWNobmlzICckYScgaXN0IFRlaWwgZGVzIFVudGVycHJvamVrdC1QZmFkZXMgJyRiJywgb2RlciB1bWdla2VocnQiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MjQ5CisjOiBnaXQtc3VibW9kdWxlLnNoOjM0OQogIywgc2gtZm9ybWF0CiBtc2dpZCAicmVwbyBVUkw6ICckcmVwbycgbXVzdCBiZSBhYnNvbHV0ZSBvciBiZWdpbiB3aXRoIC4vfC4uLyIKIG1zZ3N0ciAicmVwbyBVUkw6ICckcmVwbycgbXVzcyBhYnNvbHV0IHNlaW4gb2RlciBtaXQgLi98Li4vIGJlZ2lubmVuIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjI2NgorIzogZ2l0LXN1Ym1vZHVsZS5zaDozNjYKICMsIHNoLWZvcm1hdAogbXNnaWQgIickc21fcGF0aCcgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGluZGV4IgogbXNnc3RyICInJHNtX3BhdGgnIGV4aXN0aWVydCBiZXJlaXRzIGluIGRlciBCZXJlaXRzdGVsbHVuZyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyNzAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MzcwCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIGZvbGxvd2luZyBwYXRoIGlzIGlnbm9yZWQgYnkgb25lIG9mIHlvdXIgLmdpdGlnbm9yZSBmaWxlczpcbiIKICIkc21fcGF0aFxuIgogIlVzZSAtZiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gYWRkIGl0LiIKIG1zZ3N0ciAiIgotIkRlciBmb2xnZW5kZSBQZmFkIHdpcmQgZHVyY2ggZWluZSBkZWluZXIgXCIuZ2l0aWdub3JlXCIgRGF0ZWllbiAiCi0iaWdub3JpZXJ0OlxuIgorIkRlciBmb2xnZW5kZSBQZmFkIHdpcmQgZHVyY2ggZWluZSBJaHJlciBcIi5naXRpZ25vcmVcIiBEYXRlaWVuIGlnbm9yaWVydDpcbiIKICIkc21fcGF0aFxuIgotIkJlbnV0emUgLWYgd2VubiBkdSBkaWVzZW4gd2lya2xpY2ggaGluenVmw7xnZW4gbcO2Y2h0ZXN0LiIKKyJCZW51dHplbiBTaWUgLWYgd2VubiBTaWUgZGllc2VuIHdpcmtsaWNoIGhpbnp1ZsO8Z2VuIG3DtmNodGVuLiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyODEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Mzg4CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJBZGRpbmcgZXhpc3RpbmcgcmVwbyBhdCAnJHNtX3BhdGgnIHRvIHRoZSBpbmRleCIKLW1zZ3N0ciAiRsO8Z2UgZXhpc3RpZXJlbmRlcyBQcm9qZWt0YXJjaGl2IGluICckc21fcGF0aCcgZGVyIEJlcmVpdHN0ZWxsdW5nICIKLSJoaW56dS4iCittc2dzdHIgIiIKKyJGw7xnZSBleGlzdGllcmVuZGVzIFByb2pla3RhcmNoaXYgaW4gJyRzbV9wYXRoJyBkZXIgQmVyZWl0c3RlbGx1bmcgaGluenUuIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjI4MworIzogZ2l0LXN1Ym1vZHVsZS5zaDozOTAKICMsIHNoLWZvcm1hdAogbXNnaWQgIickc21fcGF0aCcgYWxyZWFkeSBleGlzdHMgYW5kIGlzIG5vdCBhIHZhbGlkIGdpdCByZXBvIgogbXNnc3RyICInJHNtX3BhdGgnIGV4aXN0aWVydCBiZXJlaXRzIHVuZCBpc3Qga2VpbiBnw7xsdGlnZXMgR2l0LVByb2pla3RhcmNoaXYiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Mjk3CisjOiBnaXQtc3VibW9kdWxlLnNoOjM5OAorIywgc2gtZm9ybWF0Cittc2dpZCAiQSBnaXQgZGlyZWN0b3J5IGZvciAnJHNtX25hbWUnIGlzIGZvdW5kIGxvY2FsbHkgd2l0aCByZW1vdGUocyk6IgorbXNnc3RyICIiCisiRWluIEdpdC1WZXJ6ZWljaG5pcyBmw7xyICckc21fbmFtZScgd3VyZGUgbG9rYWwgZ2VmdW5kZW4gbWl0IGRlbiBGZXJuYXJjaGl2IgorIihlbik6IgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjQwMAorIywgc2gtZm9ybWF0Cittc2dpZCAiIgorIklmIHlvdSB3YW50IHRvIHJldXNlIHRoaXMgbG9jYWwgZ2l0IGRpcmVjdG9yeSBpbnN0ZWFkIG9mIGNsb25pbmcgYWdhaW4gZnJvbSIKK21zZ3N0ciAiIgorIldlbm4gU2llIGRpZXNlcyBsb2thbGUgR2l0LVZlcnplaWNobmlzIHdpZWRlcnZlcndlbmRlbiBtw7ZjaHRlc3QsIGFuc3RhdHQgIgorImVybmV1dCB6dSBrbG9uZW4iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDAyCisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisidXNlIHRoZSAnLS1mb3JjZScgb3B0aW9uLiBJZiB0aGUgbG9jYWwgZ2l0IGRpcmVjdG9yeSBpcyBub3QgdGhlIGNvcnJlY3QgcmVwbyIKK21zZ3N0ciAiIgorImJlbnV0emVuIFNpZSBkaWUgT3B0aW9uICctLWZvcmNlJy4gV2VubiBkYXMgbG9rYWxlIEdpdC1WZXJ6ZWljaG5pcyBuaWNodCBkYXMgIgorImtvcnJla3RlIFByb2pla3RhcmNoaXYgaXN0IgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjQwMworIywgc2gtZm9ybWF0Cittc2dpZCAiIgorIm9yIHlvdSBhcmUgdW5zdXJlIHdoYXQgdGhpcyBtZWFucyBjaG9vc2UgYW5vdGhlciBuYW1lIHdpdGggdGhlICctLW5hbWUnICIKKyJvcHRpb24uIgorbXNnc3RyICIiCisib2RlciBTaWUgc2ljaCB1bnNpY2hlciBzaW5kLCB3YXMgZGFzIGJlZGV1dGV0LCB3w6RobGVuIFNpZSBlaW5lbiBhbmRlcmVuICIKKyJOYW1lbm1pdCBkZXIgT3B0aW9uICctLW5hbWUnLiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MDUKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlJlYWN0aXZhdGluZyBsb2NhbCBnaXQgZGlyZWN0b3J5IGZvciBzdWJtb2R1bGUgJyRzbV9uYW1lJy4iCittc2dzdHIgIlJlYWt0aXZpZXJlIGxva2FsZXMgR2l0LVZlcnplaWNobmlzIGbDvHIgVW50ZXJwcm9qZWt0ICckc21fbmFtZScuIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjQxNwogIywgc2gtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0IHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgogbXNnc3RyICJVbmbDpGhpZyBVbnRlcnByb2pla3QgJyRzbV9wYXRoJyBhdXN6dWNoZWNrZW4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzAyCisjOiBnaXQtc3VibW9kdWxlLnNoOjQyMgogIywgc2gtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGFkZCBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKIG1zZ3N0ciAiSGluenVmw7xnZW4gdm9uIFVudGVycHJvamVrdCAnJHNtX3BhdGgnIGZlaGxnZXNjaGxhZ2VuIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjMwNworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MzEKICMsIHNoLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKLW1zZ3N0ciAiUmVnaXN0aWVydW5nIHZvbiBVbnRlcnByb2pla3QgJyRzbV9wYXRoJyBmZWhsZ2VzY2hsYWdlbiIKK21zZ3N0ciAiIgorIkZlaGxlciBiZWltIEVpbnRyYWdlbiB2b24gVW50ZXJwcm9qZWt0ICckc21fcGF0aCcgaW4gZGllIEtvbmZpZ3VyYXRpb24uIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM0OQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NzQKICMsIHNoLWZvcm1hdAogbXNnaWQgIkVudGVyaW5nICckcHJlZml4JHNtX3BhdGgnIgogbXNnc3RyICJCZXRyZXRlICckcHJlZml4JHNtX3BhdGgnIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM2MworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0ODgKICMsIHNoLWZvcm1hdAogbXNnaWQgIlN0b3BwaW5nIGF0ICckc21fcGF0aCc7IHNjcmlwdCByZXR1cm5lZCBub24temVybyBzdGF0dXMuIgogbXNnc3RyICJTdG9wcGUgYmVpICckc21fcGF0aCc7IFNrcmlwdCBnYWIgbmljaHQtTnVsbCBTdGF0dXMgenVyw7xjay4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDA2CisjOiBnaXQtc3VibW9kdWxlLnNoOjUzMgogIywgc2gtZm9ybWF0CiBtc2dpZCAiTm8gdXJsIGZvdW5kIGZvciBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIGluIC5naXRtb2R1bGVzIgogbXNnc3RyICJLZWluZSBVUkwgZsO8ciBVbnRlcnByb2pla3QtUGZhZCAnJHNtX3BhdGgnIGluIC5naXRtb2R1bGVzIGdlZnVuZGVuIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQxNQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NDEKICMsIHNoLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciB1cmwgZm9yIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCi1tc2dzdHIgIlJlZ2lzdHJpZXJ1bmcgZGVyIFVSTCBmw7xyIFVudGVycHJvamVrdC1QZmFkICckc21fcGF0aCcgZmVobGdlc2NobGFnZW4iCittc2dzdHIgIiIKKyJGZWhsZXIgYmVpbSBFaW50cmFnZW4gZGVyIFVSTCBmw7xyIFVudGVycHJvamVrdC1QZmFkICckc21fcGF0aCcgaW4gZGllICIKKyJLb25maWd1cmF0aW9uLiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MTcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTQzCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJTdWJtb2R1bGUgJyRuYW1lJyAoJHVybCkgcmVnaXN0ZXJlZCBmb3IgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICJVbnRlcnByb2pla3QgJyRuYW1lJyAoJHVybCkgaXN0IGbDvHIgUGZhZCAnJHNtX3BhdGgnIHJlZ2lzdHJpZXJ0IgorbXNnc3RyICIiCisiVW50ZXJwcm9qZWt0ICckbmFtZScgKCR1cmwpIGbDvHIgUGZhZCAnJHNtX3BhdGgnIGluIGRpZSBLb25maWd1cmF0aW9uICIKKyJlaW5nZXRyYWdlbiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MjUKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTUxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXBkYXRlIG1vZGUgZm9yIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIiIKLSJSZWdpc3RyaWVydW5nIGRlcyBBa3R1YWxpc2llcnVuZ3Ntb2R1cyBmw7xyIFVudGVycHJvamVrdC1QZmFkICckc21fcGF0aCcgIgotImZlaGxnZXNjaGxhZ2VuIgorIkZlaGxlciBiZWkgw4RuZGVydW5nIGRlcyBBa3R1YWxpc2llcnVuZ3Ntb2R1cyBmw7xyIFVudGVycHJvamVrdC1QZmFkICIKKyInJHNtX3BhdGgnIGluIGRlciBLb25maWd1cmF0aW9uLiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1MjQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTg4CisjLCBzaC1mb3JtYXQKK21zZ2lkICJVc2UgJy4nIGlmIHlvdSByZWFsbHkgd2FudCB0byBkZWluaXRpYWxpemUgYWxsIHN1Ym1vZHVsZXMiCittc2dzdHIgIiIKKyJWZXJ3ZW5kZW4gU2llICcuJyB3ZW5uIFNpZSB3aXJrbGljaCBhbGxlIFVudGVycHJvamVrdGVcbiIKKyJkZWluaXRpYWxpc2llcmVuIG3DtmNodGVuLiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MDMKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlN1Ym1vZHVsZSB3b3JrIHRyZWUgJyRzbV9wYXRoJyBjb250YWlucyBhIC5naXQgZGlyZWN0b3J5IgorbXNnc3RyICIiCisiQXJiZWl0c2JhdW0gZGVzIFVudGVycHJvamVrdHMgaW4gJyRzbV9wYXRoJyBlbnRow6RsdCBlaW4gLmdpdC1WZXJ6ZWljaG5pcyIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MDQKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKLSJTdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIG5vdCBpbml0aWFsaXplZFxuIgorIih1c2UgJ3JtIC1yZicgaWYgeW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSBpdCBpbmNsdWRpbmcgYWxsIG9mIGl0cyBoaXN0b3J5KSIKK21zZ3N0ciAiIgorIihiZW51dHplbiBTaWUgJ3JtIC1yZicgd2VubiBTaWUgZGllc2VzIFVudGVycHJvamVrdCB3aXJrbGljaCBtaXRzYW10XG4iCisic2VpbmVyIEhpc3RvcmllIGzDtnNjaGVuIG3DtmNodGVuKSIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTAKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJTdWJtb2R1bGUgd29yayB0cmVlICckc21fcGF0aCcgY29udGFpbnMgbG9jYWwgbW9kaWZpY2F0aW9uczsgdXNlICctZicgdG8gIgorImRpc2NhcmQgdGhlbSIKK21zZ3N0ciAiIgorIkFyYmVpdHNiYXVtIHZvbiBVbnRlcnByb2pla3QgaW4gJyRzbV9wYXRoJyBlbnRow6RsdCBsb2thbGUgw4RuZGVydW5nZW47ICIKKyJ2ZXJ3ZW5kZW4gU2llICctZicgdW0gZGllc2UgenUgdmVyd2VyZmVuIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYxMworIywgc2gtZm9ybWF0Cittc2dpZCAiQ2xlYXJlZCBkaXJlY3RvcnkgJyRzbV9wYXRoJyIKK21zZ3N0ciAiVmVyemVpY2huaXMgJyRzbV9wYXRoJyBiZXJlaW5pZ3QuIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYxNAorIywgc2gtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IHJlbW92ZSBzdWJtb2R1bGUgd29yayB0cmVlICckc21fcGF0aCciCittc2dzdHIgIktvbm50ZSBBcmJlaXRzYmF1bSBkZXMgVW50ZXJwcm9qZWt0ZXMgaW4gJyRzbV9wYXRoJyBuaWNodCBsw7ZzY2hlbi4iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjE3CisjLCBzaC1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGVtcHR5IHN1Ym1vZHVsZSBkaXJlY3RvcnkgJyRzbV9wYXRoJyIKK21zZ3N0ciAiIgorIktvbm50ZSBrZWluIGxlZXJlcyBWZXJ6ZWljaG5pcyBmw7xyIFVudGVycHJvamVrdCBpbiAnJHNtX3BhdGgnIGVyc3RlbGxlbi4iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjI2CisjLCBzaC1mb3JtYXQKK21zZ2lkICJTdWJtb2R1bGUgJyRuYW1lJyAoJHVybCkgdW5yZWdpc3RlcmVkIGZvciBwYXRoICckc21fcGF0aCciCittc2dzdHIgIiIKKyJVbnRlcnByb2pla3QgJyRuYW1lJyAoJHVybCkgZsO8ciBQZmFkICckc21fcGF0aCcgd3VyZGUgYXVzIGRlciBLb25maWd1cmF0aW9uICIKKyJlbnRmZXJudC4iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzMxCisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCcgbm90IGluaXRpYWxpemVkXG4iCiAiTWF5YmUgeW91IHdhbnQgdG8gdXNlICd1cGRhdGUgLS1pbml0Jz8iCiBtc2dzdHIgIiIKLSJVbnRlcnByb2pla3QtUGZhZCAnJHNtX3BhdGgnIGlzdCBuaWNodCBpbml0aWFsaXNpZXJ0XG4iCi0iVmllbGxlaWNodCBtw7ZjaHRlc3QgZHUgJ3VwZGF0ZSAtLWluaXQnIGJlbnV0emVuPyIKKyJVbnRlcnByb2pla3QtUGZhZCAnJHByZWZpeCRzbV9wYXRoJyBpc3QgbmljaHQgaW5pdGlhbGlzaWVydC5cbiIKKyJWaWVsbGVpY2h0IG3DtmNodGVuIFNpZSAndXBkYXRlIC0taW5pdCcgYmVudXR6ZW4/IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjUzNworIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NDQKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byBmaW5kIGN1cnJlbnQgcmV2aXNpb24gaW4gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKLW1zZ3N0ciAiS29ubnRlIGFrdHVlbGxlIFZlcnNpb24gaW4gVW50ZXJwcm9qZWt0LVBmYWQgJyRzbV9wYXRoJyBuaWNodCBmaW5kZW4iCittc2dpZCAiVW5hYmxlIHRvIGZpbmQgY3VycmVudCByZXZpc2lvbiBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAiIgorIktvbm50ZSBha3R1ZWxsZSBSZXZpc2lvbiBpbiBVbnRlcnByb2pla3QtUGZhZCAnJHByZWZpeCRzbV9wYXRoJyBuaWNodCBmaW5kZW4uIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU1NgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NTMKICMsIHNoLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBmZXRjaCBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICJLb25udGUgaW4gVW50ZXJwcm9qZWt0LVBmYWQgJyRzbV9wYXRoJyBuaWNodCBhbmZvcmRlcm4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTcwCisjOiBnaXQtc3VibW9kdWxlLnNoOjc3NwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIHJlYmFzZSAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCi1tc2dzdHIgIk5ldWF1ZmJhdSB2b24gJyRzaGExJyBpbiBVbnRlcnByb2pla3QtUGZhZCAnJHNtX3BhdGgnIG5pY2h0IG3DtmdsaWNoIgorbXNnaWQgIlVuYWJsZSB0byBmZXRjaCBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAiS29ubnRlIGluIFVudGVycHJvamVrdC1QZmFkICckcHJlZml4JHNtX3BhdGgnIG5pY2h0IGFuZm9yZGVybiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NzEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzkxCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnOiByZWJhc2VkIGludG8gJyRzaGExJyIKLW1zZ3N0ciAiVW50ZXJwcm9qZWt0LVBmYWQgJyRzbV9wYXRoJzogbmV1IGF1ZmdlYmF1dCBpbiAnJHNoYTEnIgotCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU3NgotIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIG1lcmdlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKK21zZ2lkICJVbmFibGUgdG8gcmViYXNlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCiBtc2dzdHIgIiIKLSJadXNhbW1lbmbDvGhydW5nIHZvbiAnJHNoYTEnIGluIFVudGVycHJvamVrdC1QZmFkICckc21fcGF0aCcgZmVobGdlc2NobGFnZW4iCisiTmV1YXVmYmF1IHZvbiAnJHNoYTEnIGluIFVudGVycHJvamVrdC1QZmFkICckcHJlZml4JHNtX3BhdGgnIG5pY2h0IG3DtmdsaWNoIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU3NworIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTIKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCc6IG1lcmdlZCBpbiAnJHNoYTEnIgotbXNnc3RyICJVbnRlcnByb2pla3QtUGZhZCAnJHNtX3BhdGgnOiB6dXNhbW1lbmdlZsO8aHJ0IGluICckc2hhMSciCittc2dpZCAiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCc6IHJlYmFzZWQgaW50byAnJHNoYTEnIgorbXNnc3RyICJVbnRlcnByb2pla3QtUGZhZCAnJHByZWZpeCRzbV9wYXRoJzogbmV1IGF1ZmdlYmF1dCBpbiAnJHNoYTEnIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU4MgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTcKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byBjaGVja291dCAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCi1tc2dzdHIgIktvbm50ZSAnJHNoYTEnIGluIFVudGVycHJvamVrdC1QZmFkICckc21fcGF0aCcgbmljaHQgYXVzY2hlY2tlbi4iCittc2dpZCAiVW5hYmxlIHRvIG1lcmdlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIiIKKyJadXNhbW1lbmbDvGhydW5nIHZvbiAnJHNoYTEnIGluIFVudGVycHJvamVrdC1QZmFkICckcHJlZml4JHNtX3BhdGgnICIKKyJmZWhsZ2VzY2hsYWdlbiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1ODMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Nzk4CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnOiBjaGVja2VkIG91dCAnJHNoYTEnIgotbXNnc3RyICJVbnRlcnByb2pla3QtUGZhZDogJyRzbV9wYXRoJzogJyRzaGExJyBhdXNnZWNoZWNrdCIKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogbWVyZ2VkIGluICckc2hhMSciCittc2dzdHIgIlVudGVycHJvamVrdC1QZmFkICckcHJlZml4JHNtX3BhdGgnOiB6dXNhbW1lbmdlZsO8aHJ0IGluICckc2hhMSciCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjA1IGdpdC1zdWJtb2R1bGUuc2g6OTI4CisjOiBnaXQtc3VibW9kdWxlLnNoOjgwMwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICJGZWhsZXIgYmVpIFJla3Vyc2lvbiBpbiBVbnRlcnByb2pla3QtUGZhZCAnJHNtX3BhdGgnIgorbXNnaWQgIlVuYWJsZSB0byBjaGVja291dCAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICIiCisiS29ubnRlICckc2hhMScgaW4gVW50ZXJwcm9qZWt0LVBmYWQgJyRwcmVmaXgkc21fcGF0aCcgbmljaHQgYXVzY2hlY2tlbi4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NzEzCi1tc2dpZCAiLS1jYWNoZWQgY2Fubm90IGJlIHVzZWQgd2l0aCAtLWZpbGVzIgotbXNnc3RyICItLWNhY2hlZCBrYW5uIG5pY2h0IG1pdCAtLWZpbGVzIGJlbnV0enQgd2VyZGVuIgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MDQKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnOiBjaGVja2VkIG91dCAnJHNoYTEnIgorbXNnc3RyICJVbnRlcnByb2pla3QtUGZhZDogJyRwcmVmaXgkc21fcGF0aCc6ICckc2hhMScgYXVzZ2VjaGVja3QiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODMxCisjLCBzaC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICJGZWhsZXIgYmVpIFJla3Vyc2lvbiBpbiBVbnRlcnByb2pla3QtUGZhZCAnJHByZWZpeCRzbV9wYXRoJyIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo5MzkKK21zZ2lkICJUaGUgLS1jYWNoZWQgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggdGhlIC0tZmlsZXMgb3B0aW9uIgorbXNnc3RyICIiCisiRGllIE9wdGlvbmVuIC0tY2FjaGVkIHVuZCAtLWZpbGVzIGvDtm5uZW4gbmljaHQgZ2VtZWluc2FtIHZlcndlbmRldCB3ZXJkZW4uIgogCiAjLiB1bmV4cGVjdGVkIHR5cGUKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NzUzCisjOiBnaXQtc3VibW9kdWxlLnNoOjk3OQogIywgc2gtZm9ybWF0CiBtc2dpZCAidW5leHBlY3RlZCBtb2RlICRtb2RfZHN0IgogbXNnc3RyICJ1bmVyd2FydGV0ZXIgTW9kdXMgJG1vZF9kc3QiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NzcxCisjOiBnaXQtc3VibW9kdWxlLnNoOjk5NwogIywgc2gtZm9ybWF0CiBtc2dpZCAiICBXYXJuOiAkbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0ICRzaGExX3NyYyIKIG1zZ3N0ciAiICBXYXJudW5nOiAkbmFtZSBiZWluaGFsdGV0IG5pY2h0IFZlcnNpb24gJHNoYTFfc3JjIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjc3NAorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDAwCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIgIFdhcm46ICRuYW1lIGRvZXNuJ3QgY29udGFpbiBjb21taXQgJHNoYTFfZHN0IgogbXNnc3RyICIgIFdhcm51bmc6ICRuYW1lIGJlaW5oYWx0ZXQgbmljaHQgVmVyc2lvbiAkc2hhMV9kc3QiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Nzc3CisjOiBnaXQtc3VibW9kdWxlLnNoOjEwMDMKICMsIHNoLWZvcm1hdAogbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdHMgJHNoYTFfc3JjIGFuZCAkc2hhMV9kc3QiCiBtc2dzdHIgIiIKICIgIFdhcm51bmc6ICRuYW1lIGJlaW5oYWx0ZXQgbmljaHQgZGllIFZlcnNpb25lbiAkc2hhMV9zcmMgdW5kICRzaGExX2RzdCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MDIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTAyOAogbXNnaWQgImJsb2IiCiBtc2dzdHIgIkJsb2IiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODAzCi1tc2dpZCAic3VibW9kdWxlIgotbXNnc3RyICJVbnRlcnByb2pla3QiCisjOiBnaXQtc3VibW9kdWxlLnNoOjEwNjYKK21zZ2lkICJTdWJtb2R1bGVzIGNoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOiIKK21zZ3N0ciAiVW50ZXJwcm9qZWt0ZSBnZcOkbmRlcnQsIGFiZXIgbmljaHQgYWt0dWFsaXNpZXJ0OiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4NDAKLW1zZ2lkICIjIFN1Ym1vZHVsZXMgY2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6IgotbXNnc3RyICIjIFVudGVycHJvamVrdGUgZ2XDpG5kZXJ0LCBhYmVyIG5pY2h0IGFrdHVhbGlzaWVydDoiCisjOiBnaXQtc3VibW9kdWxlLnNoOjEwNjgKK21zZ2lkICJTdWJtb2R1bGUgY2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6IgorbXNnc3RyICLDhG5kZXJ1bmdlbiBpbiBVbnRlcnByb2pla3QgenVtIEVpbnRyYWdlbjoiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODQyCi1tc2dpZCAiIyBTdWJtb2R1bGUgY2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6IgotbXNnc3RyICIjIMOEbmRlcnVuZ2VuIGluIFVudGVycHJvamVrdCB6dW0gRWludHJhZ2VuOiIKLQotIzogZ2l0LXN1Ym1vZHVsZS5zaDo5NzQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTE1MwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3luY2hyb25pemluZyBzdWJtb2R1bGUgdXJsIGZvciAnJG5hbWUnIgotbXNnc3RyICJTeW5jaHJvbmlzaWVyZSBVbnRlcnByb2pla3QtVVJMIGbDvHIgJyRuYW1lJyIKK21zZ2lkICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCittc2dzdHIgIkZlaGxlciBiZWkgUmVrdXJzaW9uIGluIFVudGVycHJvamVrdC1QZmFkICckc21fcGF0aCciCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTIxNgorIywgc2gtZm9ybWF0Cittc2dpZCAiU3luY2hyb25pemluZyBzdWJtb2R1bGUgdXJsIGZvciAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAiU3luY2hyb25pc2llcmUgVW50ZXJwcm9qZWt0LVVSTCBmw7xyICckcHJlZml4JHNtX3BhdGgnIgorCisjfiBtc2dpZCAiSXQgdG9vayAlLjJmIHNlY29uZHMgdG8gZW51bWVyYXRlIHVudHJhY2tlZCBmaWxlcy4gICdzdGF0dXMgLXVubyciCisjfiBtc2dzdHIgIiIKKyN+ICJFcyBkYXVlcnRlICUuMmYgU2VrdW5kZW4gZGllIHVuYmVvYmFjaHRldGVuIERhdGVpZW4genUgYmVzdGltbWVuLidzdGF0dXMgLSIKKyN+ICJ1bm8nIgorCisjfiBtc2dpZCAibWF5IHNwZWVkIGl0IHVwLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gZm9yZ2V0IHRvIGFkZCIKKyN+IG1zZ3N0ciAia8O2bm50ZSBkYXMgYmVzY2hsZXVuaWdlbiwgYWJlciBTaWUgbcO8c3NlbiBkYXJhdWYgYWNodGVuLCBuZXVlIgorCisjfiBtc2dpZCAibmV3IGZpbGVzIHlvdXJzZWxmIChzZWUgJ2dpdCBoZWxwIHN0YXR1cycpLiIKKyN+IG1zZ3N0ciAiRGF0ZWllbiBzZWxic3RzdMOkbmRpZyBoaW56dXp1ZsO8Z2VuIChzaWVoZSAnZ2l0IGhlbHAgc3RhdHVzJykuIgorCisjfiBtc2dpZCAiZ2l0IHNob3J0bG9nIFstbl0gWy1zXSBbLWVdIFstd10gW3Jldi1vcHRzXSBbLS1dIFs8Y29tbWl0LWlkPi4uLiBdIgorI34gbXNnc3RyICIiCisjfiAiZ2l0IHNob3J0bG9nIFstbl0gWy1zXSBbLWVdIFstd10gW3Jldi1vcHRzXSBbLS1dICIKKyN+ICJbPFZlcnNpb25zaWRlbnRpZmlrYXRpb24+Li4uIF0iCisKKyN+IG1zZ2lkICJTZWUgJ2dpdCBoZWxwIDxjb21tYW5kPicgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYSBzcGVjaWZpYyBjb21tYW5kLiIKKyN+IG1zZ3N0ciAiIgorI34gIlNpZWhlICdnaXQgaGVscCA8S29tbWFuZG8+JyBmw7xyIHdlaXRlcmUgSW5mb3JtYXRpb25lbiB6dSBlaW5lbSAiCisjfiAic3BlemlmaXNjaGVuIEtvbW1hbmRvIgorCisjfiBtc2dpZCAidXNlIGFueSByZWYgaW4gLmdpdC9yZWZzIgorI34gbXNnc3RyICJ2ZXJ3ZW5kZXQgYWxsZSBSZWZlcmVuemVuIGluIC5naXQvcmVmcyIKKworI34gbXNnaWQgInVzZSBhbnkgdGFnIGluIC5naXQvcmVmcy90YWdzIgorI34gbXNnc3RyICJ2ZXJ3ZW5kZXQgYWxsZSBNYXJraWVydW5nZW4gaW4gLmdpdC9yZWZzL3RhZ3MiCisKKyN+IG1zZ2lkICJiYWQgb2JqZWN0ICVzIgorI34gbXNnc3RyICJ1bmfDvGx0aWdlcyBPYmpla3QgJXMiCisKKyN+IG1zZ2lkICJib2d1cyBjb21taXR0ZXIgaW5mbyAlcyIKKyN+IG1zZ3N0ciAidW5lY2h0ZSBFaW5yZWljaGVyLUluZm9ybWF0aW9uZW4gJXMiCisKKyN+IG1zZ2lkICJjYW4ndCBmZG9wZW4gJ3Nob3cnIG91dHB1dCBmZCIKKyN+IG1zZ3N0ciAia29ubnRlIERhdGVpLURlc2tyaXB0b3IgZsO8ciBBdXNnYWJlIHZvbiAnc2hvdycgbmljaHQgw7ZmZm5lbiIKKworI34gbXNnaWQgImZhaWxlZCB0byBjbG9zZSBwaXBlIHRvICdzaG93JyBmb3Igb2JqZWN0ICclcyciCisjfiBtc2dzdHIgIiIKKyN+ICJTY2hsaWXDn2VuIGRlciBWZXJiaW5kdW5nIHp1ICdzaG93JyBpc3QgZsO8ciBPYmpla3QgJyVzJyBmZWhsZ2VzY2hsYWdlbi4iCisKKyN+IG1zZ2lkICJZb3UgZG8gbm90IGhhdmUgYSB2YWxpZCBIRUFEIgorI34gbXNnc3RyICJTaWUgaGFiZW4ga2VpbmUgZ8O8bHRpZ2UgWndlaWdzcGl0emUgKEhFQUQpIgorCisjfiBtc2dpZCAib29wcyIKKyN+IG1zZ3N0ciAiVXBzIgorCisjfiBtc2dpZCAiV291bGQgbm90IHJlbW92ZSAlc1xuIgorI34gbXNnc3RyICJXw7xyZGUgJyVzJyBuaWNodCBsw7ZzY2hlblxuIgorCisjfiBtc2dpZCAiTm90IHJlbW92aW5nICVzXG4iCisjfiBtc2dzdHIgIkVudGZlcm5lIG5pY2h0ICVzXG4iCisKKyN+IG1zZ2lkICJDb3VsZCBub3QgcmVhZCBpbmRleCIKKyN+IG1zZ3N0ciAiS29ubnRlIEJlcmVpdHN0ZWxsdW5nIG5pY2h0IGxlc2VuIgorCisjfiBtc2dpZCAiIDAgZmlsZXMgY2hhbmdlZCIKKyN+IG1zZ3N0ciAiIDAgRGF0ZWllbiBnZcOkbmRlcnQiCisKKyN+IG1zZ2lkICIgJWQgZmlsZSBjaGFuZ2VkIgorI34gbXNnaWRfcGx1cmFsICIgJWQgZmlsZXMgY2hhbmdlZCIKKyN+IG1zZ3N0clswXSAiICVkIERhdGVpIGdlw6RuZGVydCIKKyN+IG1zZ3N0clsxXSAiICVkIERhdGVpZW4gZ2XDpG5kZXJ0IgorCisjfiBtc2dpZCAiLCAlZCBpbnNlcnRpb24oKykiCisjfiBtc2dpZF9wbHVyYWwgIiwgJWQgaW5zZXJ0aW9ucygrKSIKKyN+IG1zZ3N0clswXSAiLCAlZCBaZWlsZSBoaW56dWdlZsO8Z3QoKykiCisjfiBtc2dzdHJbMV0gIiwgJWQgWmVpbGVuIGhpbnp1Z2Vmw7xndCgrKSIKKworI34gbXNnaWQgIiwgJWQgZGVsZXRpb24oLSkiCisjfiBtc2dpZF9wbHVyYWwgIiwgJWQgZGVsZXRpb25zKC0pIgorI34gbXNnc3RyWzBdICIsICVkIFplaWxlIGVudGZlcm50KC0pIgorI34gbXNnc3RyWzFdICIsICVkIFplaWxlbiBlbnRmZXJudCgtKSIKKworI34gbXNnaWQgIkF1dG8gcGFja2luZyB0aGUgcmVwb3NpdG9yeSBmb3Igb3B0aW11bSBwZXJmb3JtYW5jZS5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIkRpZSBEYXRlbmJhbmsgZGVzIFByb2pla3RhcmNoaXZzIHdpcmQgZsO8ciBlaW5lIG9wdGltYWxlIFBlcmZvcm1hbmNlICIKKyN+ICJrb21wcmltaWVydC5cbiIKKworI34gbXNnaWQgImdpdCByZW1vdGUgc2V0LWhlYWQgPG5hbWU+ICgtYSB8IC1kIHwgPGJyYW5jaD5dKSIKKyN+IG1zZ3N0ciAiZ2l0IHJlbW90ZSBzZXQtaGVhZCA8TmFtZT4gKC1hIHwgLWQgfCA8WndlaWc+XSkiCisKKyN+IG1zZ2lkICIgKHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaykiCisjfiBtc2dzdHIgIiAoYmVudXR6ZSBcImdpdCBhZGRcIiB6dW0gQmVvYmFjaHRlbikiCisKKyN+IG1zZ2lkICItQiBjYW5ub3QgYmUgdXNlZCB3aXRoIC1iIgorI34gbXNnc3RyICItQiBrYW5uIG5pY2h0IG1pdCAtYiBiZW51dHp0IHdlcmRlbiIKKworI34gbXNnaWQgIi0tcGF0Y2ggaXMgaW5jb21wYXRpYmxlIHdpdGggYWxsIG90aGVyIG9wdGlvbnMiCisjfiBtc2dzdHIgIi0tcGF0Y2ggaXN0IGlua29tcGF0aWJlbCBtaXQgYWxsZW4gYW5kZXJlbiBPcHRpb25lbiIKKworI34gbXNnaWQgIi0tZGV0YWNoIGNhbm5vdCBiZSB1c2VkIHdpdGggLWIvLUIvLS1vcnBoYW4iCisjfiBtc2dzdHIgIi0tZGV0YWNoIGthbm4gbmljaHQgbWl0IC1iLy1CLy0tb3JwaGFuIGJlbnV0enQgd2VyZGVuIgorCisjfiBtc2dpZCAiLS1kZXRhY2ggY2Fubm90IGJlIHVzZWQgd2l0aCAtdCIKKyN+IG1zZ3N0ciAiLS1kZXRhY2gga2FubiBuaWNodCBtaXQgLXQgYmVudXR6dCB3ZXJkZW4iCisKKyN+IG1zZ2lkICItLW9ycGhhbiBhbmQgLWJ8LUIgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSIKKyN+IG1zZ3N0ciAiLS1vcnBoYW4gdW5kIC1ifC1CIHNpbmQgZ2VnZW5zZWl0aWcgZXhrbHVzaXYiCisKKyN+IG1zZ2lkICItLW9ycGhhbiBjYW5ub3QgYmUgdXNlZCB3aXRoIC10IgorI34gbXNnc3RyICItLW9ycGhhbiBrYW5uIG5pY2h0IG1pdCAtdCBiZW51dHp0IHdlcmRlbiIKKworI34gbXNnaWQgImdpdCBjaGVja291dDogLWYgYW5kIC1tIGFyZSBpbmNvbXBhdGlibGUiCisjfiBtc2dzdHIgImdpdCBjaGVja291dDogLWYgdW5kIC1tIHNpbmQgaW5rb21wYXRpYmVsIgorCisjfiBtc2dpZCAiIgorI34gImdpdCBjaGVja291dDogdXBkYXRpbmcgcGF0aHMgaXMgaW5jb21wYXRpYmxlIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzLiIKKyN+IG1zZ3N0ciAiIgorI34gImdpdCBjaGVja291dDogRGllIEFrdHVhbGlzaWVydW5nIHZvbiBQZmFkZW4gaXN0IGlua29tcGF0aWJlbCBtaXQgZGVtICIKKyN+ICJXZWNoc2VsIHZvbiBad2VpZ2VuLiIKKworI34gbXNnaWQgImRpZmYgc2V0dXAgZmFpbGVkIgorI34gbXNnc3RyICJkaWZmX3NldHVwX2RvbmUgZmVobGdlc2NobGFnZW4iCisKKyN+IG1zZ2lkICJtZXJnZS1yZWN1cnNpdmU6IGRpc2sgZnVsbD8iCisjfiBtc2dzdHIgIm1lcmdlLXJlY3Vyc2l2ZTogRmVzdHBsYXR0ZSB2b2xsPyIKKworI34gbXNnaWQgImRpZmZfc2V0dXBfZG9uZSBmYWlsZWQiCisjfiBtc2dzdHIgImRpZmZfc2V0dXBfZG9uZSBmZWhsZ2VzY2hsYWdlbiIKKworI34gbXNnaWQgIi1kIG9wdGlvbiBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiAgRG8gbm90IHVzZS4iCisjfiBtc2dzdHIgIi1kIE9wdGlvbiB3aXJkIG5pY2h0IGzDpG5nZXIgdW50ZXJzdMO8dHp0LiBOaWNodCBiZW51dHplbi4iCisKKyN+IG1zZ2lkICIlczogaGFzIGJlZW4gZGVsZXRlZC9yZW5hbWVkIgorI34gbXNnc3RyICIlcyB3dXJkZSBnZWzDtnNjaHQvdW1iZW5hbm50IgorCisjfiBtc2dpZCAiJyVzJzogbm90IGEgZG9jdW1lbnRhdGlvbiBkaXJlY3RvcnkuIgorI34gbXNnc3RyICInJXMnIGlzdCBrZWluIERva3VtZW50YXRpb25zdmVyemVpY2huaXMiCiAKICN+IG1zZ2lkICItLSIKICN+IG1zZ3N0ciAiLS0iCkBAIC01NjMwLDkgKzEwNDc5LDYgQEAKICN+IG1zZ2lkICJQbGVhc2UgZW50ZXIgdGhlIGNvbW1pdCBtZXNzYWdlIGZvciB5b3VyIGNoYW5nZXMuIgogI34gbXNnc3RyICJCaXR0ZSBnZWJlIGRpZSBWZXJzaW9uc2Jlc2NocmVpYnVuZyBmw7xyIGRlaW5lIMOEbmRlcnVuZ2VuIGVpbi4iCiAKLSN+IG1zZ2lkICJUb28gbWFueSBvcHRpb25zIHNwZWNpZmllZCIKLSN+IG1zZ3N0ciAiWnUgdmllbGUgT3B0aW9uZW4gYW5nZWdlYmVuIgotCiAjfiBtc2dpZCAiIgogI34gIlRvIHByZXZlbnQgeW91IGZyb20gbG9zaW5nIGhpc3RvcnksIG5vbi1mYXN0LWZvcndhcmQgdXBkYXRlcyB3ZXJlICIKICN+ICJyZWplY3RlZFxuIgpkaWZmIC0tZ2l0IGEvcG8vZ2l0LnBvdCBiL3BvL2dpdC5wb3QKaW5kZXggYjY2NjUwNi4uNGE5ZDRlZiAxMDA2NDQKLS0tIGEvcG8vZ2l0LnBvdAorKysgYi9wby9naXQucG90CkBAIC04LDcgKzgsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBQQUNLQUdFIFZFUlNJT05cbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogR2l0IE1haWxpbmcgTGlzdCA8Z2l0QHZnZXIua2VybmVsLm9yZz5cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMi0wNi0wOCAxMDoyMCswODAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTMtMDQtMzAgMDg6MjUrMDgwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IFlFQVItTU8tREEgSE86TUkrWk9ORVxuIgogIkxhc3QtVHJhbnNsYXRvcjogRlVMTCBOQU1FIDxFTUFJTEBBRERSRVNTPlxuIgogIkxhbmd1YWdlLVRlYW06IExBTkdVQUdFIDxMTEBsaS5vcmc+XG4iCkBAIC0xOCw3ICsxOCw3IEBACiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9SU5URUdFUjsgcGx1cmFsPUVYUFJFU1NJT047XG4iCiAKLSM6IGFkdmljZS5jOjQwCisjOiBhZHZpY2UuYzo1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJoaW50OiAlLipzXG4iCiBtc2dzdHIgIiIKQEAgLTI3LDcgKzI3LDcgQEAKICMuICogTWVzc2FnZSB1c2VkIGJvdGggd2hlbiAnZ2l0IGNvbW1pdCcgZmFpbHMgYW5kIHdoZW4KICMuICogb3RoZXIgY29tbWFuZHMgZG9pbmcgYSBtZXJnZSBkby4KICMuCi0jOiBhZHZpY2UuYzo3MAorIzogYWR2aWNlLmM6ODMKIG1zZ2lkICIiCiAiRml4IHRoZW0gdXAgaW4gdGhlIHdvcmsgdHJlZSxcbiIKICJhbmQgdGhlbiB1c2UgJ2dpdCBhZGQvcm0gPGZpbGU+JyBhc1xuIgpAQCAtMzUsNiArMzUsMjExIEBACiAib3IgdXNlICdnaXQgY29tbWl0IC1hJy4iCiBtc2dzdHIgIiIKIAorIzogYXJjaGl2ZS5jOjEwCittc2dpZCAiZ2l0IGFyY2hpdmUgW29wdGlvbnNdIDx0cmVlLWlzaD4gWzxwYXRoPi4uLl0iCittc2dzdHIgIiIKKworIzogYXJjaGl2ZS5jOjExCittc2dpZCAiZ2l0IGFyY2hpdmUgLS1saXN0IgorbXNnc3RyICIiCisKKyM6IGFyY2hpdmUuYzoxMgorbXNnaWQgIiIKKyJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA8cmVwbz4gWy0tZXhlYyA8Y21kPl0gW29wdGlvbnNdIDx0cmVlLWlzaD4gWzxwYXRoPi4uLl0iCittc2dzdHIgIiIKKworIzogYXJjaGl2ZS5jOjEzCittc2dpZCAiZ2l0IGFyY2hpdmUgLS1yZW1vdGUgPHJlcG8+IFstLWV4ZWMgPGNtZD5dIC0tbGlzdCIKK21zZ3N0ciAiIgorCisjOiBhcmNoaXZlLmM6MzIzCittc2dpZCAiZm10IgorbXNnc3RyICIiCisKKyM6IGFyY2hpdmUuYzozMjMKK21zZ2lkICJhcmNoaXZlIGZvcm1hdCIKK21zZ3N0ciAiIgorCisjOiBhcmNoaXZlLmM6MzI0IGJ1aWx0aW4vbG9nLmM6MTEyNgorbXNnaWQgInByZWZpeCIKK21zZ3N0ciAiIgorCisjOiBhcmNoaXZlLmM6MzI1Cittc2dpZCAicHJlcGVuZCBwcmVmaXggdG8gZWFjaCBwYXRobmFtZSBpbiB0aGUgYXJjaGl2ZSIKK21zZ3N0ciAiIgorCisjOiBhcmNoaXZlLmM6MzI2IGJ1aWx0aW4vYXJjaGl2ZS5jOjg4IGJ1aWx0aW4vYmxhbWUuYzoyMzcxCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MiBidWlsdGluL2NvbmZpZy5jOjU1IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjUKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjcgYnVpbHRpbi9ncmVwLmM6NzE1IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3NworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MCBidWlsdGluL2xzLWZpbGVzLmM6NDkzIGJ1aWx0aW4vbm90ZXMuYzo1MzYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2OTMgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMDcgcGFyc2Utb3B0aW9ucy5oOjE0OQorbXNnaWQgImZpbGUiCittc2dzdHIgIiIKKworIzogYXJjaGl2ZS5jOjMyNyBidWlsdGluL2FyY2hpdmUuYzo4OQorbXNnaWQgIndyaXRlIHRoZSBhcmNoaXZlIHRvIHRoaXMgZmlsZSIKK21zZ3N0ciAiIgorCisjOiBhcmNoaXZlLmM6MzI5Cittc2dpZCAicmVhZCAuZ2l0YXR0cmlidXRlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAiIgorCisjOiBhcmNoaXZlLmM6MzMwCittc2dpZCAicmVwb3J0IGFyY2hpdmVkIGZpbGVzIG9uIHN0ZGVyciIKK21zZ3N0ciAiIgorCisjOiBhcmNoaXZlLmM6MzMxCittc2dpZCAic3RvcmUgb25seSIKK21zZ3N0ciAiIgorCisjOiBhcmNoaXZlLmM6MzMyCittc2dpZCAiY29tcHJlc3MgZmFzdGVyIgorbXNnc3RyICIiCisKKyM6IGFyY2hpdmUuYzozNDAKK21zZ2lkICJjb21wcmVzcyBiZXR0ZXIiCittc2dzdHIgIiIKKworIzogYXJjaGl2ZS5jOjM0MworbXNnaWQgImxpc3Qgc3VwcG9ydGVkIGFyY2hpdmUgZm9ybWF0cyIKK21zZ3N0ciAiIgorCisjOiBhcmNoaXZlLmM6MzQ1IGJ1aWx0aW4vYXJjaGl2ZS5jOjkwIGJ1aWx0aW4vY2xvbmUuYzo4NgorbXNnaWQgInJlcG8iCittc2dzdHIgIiIKKworIzogYXJjaGl2ZS5jOjM0NiBidWlsdGluL2FyY2hpdmUuYzo5MQorbXNnaWQgInJldHJpZXZlIHRoZSBhcmNoaXZlIGZyb20gcmVtb3RlIHJlcG9zaXRvcnkgPHJlcG8+IgorbXNnc3RyICIiCisKKyM6IGFyY2hpdmUuYzozNDcgYnVpbHRpbi9hcmNoaXZlLmM6OTIgYnVpbHRpbi9ub3Rlcy5jOjYxNQorbXNnaWQgImNvbW1hbmQiCittc2dzdHIgIiIKKworIzogYXJjaGl2ZS5jOjM0OCBidWlsdGluL2FyY2hpdmUuYzo5MworbXNnaWQgInBhdGggdG8gdGhlIHJlbW90ZSBnaXQtdXBsb2FkLWFyY2hpdmUgY29tbWFuZCIKK21zZ3N0ciAiIgorCisjOiBhdHRyLmM6MjU5Cittc2dpZCAiIgorIk5lZ2F0aXZlIHBhdHRlcm5zIGFyZSBpZ25vcmVkIGluIGdpdCBhdHRyaWJ1dGVzXG4iCisiVXNlICdcXCEnIGZvciBsaXRlcmFsIGxlYWRpbmcgZXhjbGFtYXRpb24uIgorbXNnc3RyICIiCisKKyM6IGJyYW5jaC5jOjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIk5vdCBzZXR0aW5nIGJyYW5jaCAlcyBhcyBpdHMgb3duIHVwc3RyZWFtLiIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzo4MgorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSBicmFuY2ggJXMgZnJvbSAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgYnJhbmNoICVzIGZyb20gJXMuIgorbXNnc3RyICIiCisKKyM6IGJyYW5jaC5jOjg3CisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgbG9jYWwgYnJhbmNoICVzIGJ5IHJlYmFzaW5nLiIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzo4OAorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIGxvY2FsIGJyYW5jaCAlcy4iCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6OTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgcmVmICVzIGJ5IHJlYmFzaW5nLiIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzo5MworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSByZWYgJXMuIgorbXNnc3RyICIiCisKKyM6IGJyYW5jaC5jOjk3CisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgbG9jYWwgcmVmICVzIGJ5IHJlYmFzaW5nLiIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIGxvY2FsIHJlZiAlcy4iCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6MTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIlRyYWNraW5nIG5vdCBzZXQgdXA6IG5hbWUgdG9vIGxvbmc6ICVzIgorbXNnc3RyICIiCisKKyM6IGJyYW5jaC5jOjEzNworIywgYy1mb3JtYXQKK21zZ2lkICJOb3QgdHJhY2tpbmc6IGFtYmlndW91cyBpbmZvcm1hdGlvbiBmb3IgcmVmICVzIgorbXNnc3RyICIiCisKKyM6IGJyYW5jaC5jOjE4MgorIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIGlzIG5vdCBhIHZhbGlkIGJyYW5jaCBuYW1lLiIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzoxODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQSBicmFuY2ggbmFtZWQgJyVzJyBhbHJlYWR5IGV4aXN0cy4iCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6MTk1Cittc2dpZCAiQ2Fubm90IGZvcmNlIHVwZGF0ZSB0aGUgY3VycmVudCBicmFuY2guIgorbXNnc3RyICIiCisKKyM6IGJyYW5jaC5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc2V0dXAgdHJhY2tpbmcgaW5mb3JtYXRpb247IHN0YXJ0aW5nIHBvaW50ICclcycgaXMgbm90IGEgYnJhbmNoLiIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAidGhlIHJlcXVlc3RlZCB1cHN0cmVhbSBicmFuY2ggJyVzJyBkb2VzIG5vdCBleGlzdCIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzoyMDUKK21zZ2lkICIiCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyBvbiBiYXNpbmcgeW91ciB3b3JrIG9uIGFuIHVwc3RyZWFtXG4iCisiYnJhbmNoIHRoYXQgYWxyZWFkeSBleGlzdHMgYXQgdGhlIHJlbW90ZSwgeW91IG1heSBuZWVkIHRvXG4iCisicnVuIFwiZ2l0IGZldGNoXCIgdG8gcmV0cmlldmUgaXQuXG4iCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyB0byBwdXNoIG91dCBhIG5ldyBsb2NhbCBicmFuY2ggdGhhdFxuIgorIndpbGwgdHJhY2sgaXRzIHJlbW90ZSBjb3VudGVycGFydCwgeW91IG1heSB3YW50IHRvIHVzZVxuIgorIlwiZ2l0IHB1c2ggLXVcIiB0byBzZXQgdGhlIHVwc3RyZWFtIGNvbmZpZyBhcyB5b3UgcHVzaC4iCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6MjUwCisjLCBjLWZvcm1hdAorbXNnaWQgIk5vdCBhIHZhbGlkIG9iamVjdCBuYW1lOiAnJXMnLiIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzoyNzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQW1iaWd1b3VzIG9iamVjdCBuYW1lOiAnJXMnLiIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzoyNzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm90IGEgdmFsaWQgYnJhbmNoIHBvaW50OiAnJXMnLiIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzoyODEKK21zZ2lkICJGYWlsZWQgdG8gbG9jayByZWYgZm9yIHVwZGF0ZSIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzoyOTkKK21zZ2lkICJGYWlsZWQgdG8gd3JpdGUgcmVmIgorbXNnc3RyICIiCisKICM6IGJ1bmRsZS5jOjM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgZG9lcyBub3QgbG9vayBsaWtlIGEgdjIgYnVuZGxlIGZpbGUiCkBAIC00NSw3ICsyNTAsNyBAQAogbXNnaWQgInVucmVjb2duaXplZCBoZWFkZXI6ICVzJXMgKCVkKSIKIG1zZ3N0ciAiIgogCi0jOiBidW5kbGUuYzo4OSBidWlsdGluL2NvbW1pdC5jOjY5NgorIzogYnVuZGxlLmM6ODkgYnVpbHRpbi9jb21taXQuYzo2NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IG9wZW4gJyVzJyIKIG1zZ3N0ciAiIgpAQCAtNTQsNjcgKzI1OSw3MSBAQAogbXNnaWQgIlJlcG9zaXRvcnkgbGFja3MgdGhlc2UgcHJlcmVxdWlzaXRlIGNvbW1pdHM6IgogbXNnc3RyICIiCiAKLSM6IGJ1bmRsZS5jOjE2NCBzZXF1ZW5jZXIuYzo1NTAgc2VxdWVuY2VyLmM6OTgyIGJ1aWx0aW4vbG9nLmM6Mjg5Ci0jOiBidWlsdGluL2xvZy5jOjcyMCBidWlsdGluL2xvZy5jOjEzMDkgYnVpbHRpbi9sb2cuYzoxNTI4IGJ1aWx0aW4vbWVyZ2UuYzozNDcKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxODEKKyM6IGJ1bmRsZS5jOjE2NCBzZXF1ZW5jZXIuYzo2NTEgc2VxdWVuY2VyLmM6MTEwMSBidWlsdGluL2xvZy5jOjMwMAorIzogYnVpbHRpbi9sb2cuYzo3NzAgYnVpbHRpbi9sb2cuYzoxMzQ0IGJ1aWx0aW4vbG9nLmM6MTU3MCBidWlsdGluL21lcmdlLmM6MzQ5CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MTU1CiBtc2dpZCAicmV2aXNpb24gd2FsayBzZXR1cCBmYWlsZWQiCiBtc2dzdHIgIiIKIAogIzogYnVuZGxlLmM6MTg2CiAjLCBjLWZvcm1hdAotbXNnaWQgIlRoZSBidW5kbGUgY29udGFpbnMgJWQgcmVmIgotbXNnaWRfcGx1cmFsICJUaGUgYnVuZGxlIGNvbnRhaW5zICVkIHJlZnMiCittc2dpZCAiVGhlIGJ1bmRsZSBjb250YWlucyB0aGlzIHJlZjoiCittc2dpZF9wbHVyYWwgIlRoZSBidW5kbGUgY29udGFpbnMgdGhlc2UgJWQgcmVmczoiCiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBidW5kbGUuYzoxOTIKKyM6IGJ1bmRsZS5jOjE5MworbXNnaWQgIlRoZSBidW5kbGUgcmVjb3JkcyBhIGNvbXBsZXRlIGhpc3RvcnkuIgorbXNnc3RyICIiCisKKyM6IGJ1bmRsZS5jOjE5NQogIywgYy1mb3JtYXQKLW1zZ2lkICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoaXMgcmVmIgotbXNnaWRfcGx1cmFsICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoZXNlICVkIHJlZnMiCittc2dpZCAiVGhlIGJ1bmRsZSByZXF1aXJlcyB0aGlzIHJlZjoiCittc2dpZF9wbHVyYWwgIlRoZSBidW5kbGUgcmVxdWlyZXMgdGhlc2UgJWQgcmVmczoiCiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBidW5kbGUuYzoyOTAKKyM6IGJ1bmRsZS5jOjI5NAogbXNnaWQgInJldi1saXN0IGRpZWQiCiBtc2dzdHIgIiIKIAotIzogYnVuZGxlLmM6Mjk2IGJ1aWx0aW4vbG9nLmM6MTIwNSBidWlsdGluL3Nob3J0bG9nLmM6Mjg0CisjOiBidW5kbGUuYzozMDAgYnVpbHRpbi9sb2cuYzoxMjU1IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGFyZ3VtZW50OiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidW5kbGUuYzozMzEKKyM6IGJ1bmRsZS5jOjMzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWYgJyVzJyBpcyBleGNsdWRlZCBieSB0aGUgcmV2LWxpc3Qgb3B0aW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBidW5kbGUuYzozNzYKKyM6IGJ1bmRsZS5jOjM4MAogbXNnaWQgIlJlZnVzaW5nIHRvIGNyZWF0ZSBlbXB0eSBidW5kbGUuIgogbXNnc3RyICIiCiAKLSM6IGJ1bmRsZS5jOjM5NAorIzogYnVuZGxlLmM6Mzk4CiBtc2dpZCAiQ291bGQgbm90IHNwYXduIHBhY2stb2JqZWN0cyIKIG1zZ3N0ciAiIgogCi0jOiBidW5kbGUuYzo0MTIKKyM6IGJ1bmRsZS5jOjQxNgogbXNnaWQgInBhY2stb2JqZWN0cyBkaWVkIgogbXNnc3RyICIiCiAKLSM6IGJ1bmRsZS5jOjQxNQorIzogYnVuZGxlLmM6NDE5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBjcmVhdGUgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidW5kbGUuYzo0MzcKKyM6IGJ1bmRsZS5jOjQ0MQogbXNnaWQgImluZGV4LXBhY2sgZGllZCIKIG1zZ3N0ciAiIgogCi0jOiBjb21taXQuYzo0OAorIzogY29tbWl0LmM6NTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHBhcnNlICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbW1pdC5jOjUwCisjOiBjb21taXQuYzo1MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyAlcyBpcyBub3QgYSBjb21taXQhIgogbXNnc3RyICIiCkBAIC0yMDQsNTYgKzQxMyw0MSBAQAogbXNnc3RyWzBdICIiCiBtc2dzdHJbMV0gIiIKIAotIzogZGlmZi5jOjEwNQorIzogZGlmZi5jOjExMgogIywgYy1mb3JtYXQKLW1zZ2lkICIgIEZhaWxlZCB0byBwYXJzZSBkaXJzdGF0IGN1dC1vZmYgcGVyY2VudGFnZSAnJS4qcydcbiIKK21zZ2lkICIgIEZhaWxlZCB0byBwYXJzZSBkaXJzdGF0IGN1dC1vZmYgcGVyY2VudGFnZSAnJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogZGlmZi5jOjExMAorIzogZGlmZi5jOjExNwogIywgYy1mb3JtYXQKLW1zZ2lkICIgIFVua25vd24gZGlyc3RhdCBwYXJhbWV0ZXIgJyUuKnMnXG4iCittc2dpZCAiICBVbmtub3duIGRpcnN0YXQgcGFyYW1ldGVyICclcydcbiIKIG1zZ3N0ciAiIgogCiAjOiBkaWZmLmM6MjEwCiAjLCBjLWZvcm1hdAorbXNnaWQgIlVua25vd24gdmFsdWUgZm9yICdkaWZmLnN1Ym1vZHVsZScgY29uZmlnIHZhcmlhYmxlOiAnJXMnIgorbXNnc3RyICIiCisKKyM6IGRpZmYuYzoyNjAKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkZvdW5kIGVycm9ycyBpbiAnZGlmZi5kaXJzdGF0JyBjb25maWcgdmFyaWFibGU6XG4iCiAiJXMiCiBtc2dzdHIgIiIKIAotIzogZGlmZi5jOjE0MDAKLW1zZ2lkICIgMCBmaWxlcyBjaGFuZ2VkXG4iCi1tc2dzdHIgIiIKLQotIzogZGlmZi5jOjE0MDQKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiICVkIGZpbGUgY2hhbmdlZCIKLW1zZ2lkX3BsdXJhbCAiICVkIGZpbGVzIGNoYW5nZWQiCi1tc2dzdHJbMF0gIiIKLW1zZ3N0clsxXSAiIgotCi0jOiBkaWZmLmM6MTQyMQotIywgYy1mb3JtYXQKLW1zZ2lkICIsICVkIGluc2VydGlvbigrKSIKLW1zZ2lkX3BsdXJhbCAiLCAlZCBpbnNlcnRpb25zKCspIgotbXNnc3RyWzBdICIiCi1tc2dzdHJbMV0gIiIKLQotIzogZGlmZi5jOjE0MzIKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiLCAlZCBkZWxldGlvbigtKSIKLW1zZ2lkX3BsdXJhbCAiLCAlZCBkZWxldGlvbnMoLSkiCi1tc2dzdHJbMF0gIiIKLW1zZ3N0clsxXSAiIgotCi0jOiBkaWZmLmM6MzQ3OAorIzogZGlmZi5jOjM0ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkZhaWxlZCB0byBwYXJzZSAtLWRpcnN0YXQvLVggb3B0aW9uIHBhcmFtZXRlcjpcbiIKICIlcyIKIG1zZ3N0ciAiIgogCi0jOiBncGctaW50ZXJmYWNlLmM6NTkKKyM6IGRpZmYuYzozNDk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBwYXJzZSAtLXN1Ym1vZHVsZSBvcHRpb24gcGFyYW1ldGVyOiAnJXMnIgorbXNnc3RyICIiCisKKyM6IGdwZy1pbnRlcmZhY2UuYzo1OSBncGctaW50ZXJmYWNlLmM6MTMxCiBtc2dpZCAiY291bGQgbm90IHJ1biBncGcuIgogbXNnc3RyICIiCiAKQEAgLTI2NSw1OSArNDU5LDczIEBACiBtc2dpZCAiZ3BnIGZhaWxlZCB0byBzaWduIHRoZSBkYXRhIgogbXNnc3RyICIiCiAKLSM6IGdyZXAuYzoxMzIwCisjOiBncGctaW50ZXJmYWNlLmM6MTE1CisjLCBjLWZvcm1hdAorbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUgJyVzJzogJXMiCittc2dzdHIgIiIKKworIzogZ3BnLWludGVyZmFjZS5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgd3JpdGluZyBkZXRhY2hlZCBzaWduYXR1cmUgdG8gJyVzJzogJXMiCittc2dzdHIgIiIKKworIzogZ3JlcC5jOjE2MjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJzogdW5hYmxlIHRvIHJlYWQgJXMiCiBtc2dzdHIgIiIKIAotIzogZ3JlcC5jOjEzMzcKKyM6IGdyZXAuYzoxNjQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6ICVzIgogbXNnc3RyICIiCiAKLSM6IGdyZXAuYzoxMzQ4CisjOiBncmVwLmM6MTY1MQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiBzaG9ydCByZWFkICVzIgogbXNnc3RyICIiCiAKLSM6IGhlbHAuYzoyMDcKKyM6IGhlbHAuYzoyMTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiYXZhaWxhYmxlIGdpdCBjb21tYW5kcyBpbiAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGhlbHAuYzoyMTQKKyM6IGhlbHAuYzoyMTkKIG1zZ2lkICJnaXQgY29tbWFuZHMgYXZhaWxhYmxlIGZyb20gZWxzZXdoZXJlIG9uIHlvdXIgJFBBVEgiCiBtc2dzdHIgIiIKIAotIzogaGVscC5jOjI3MAorIzogaGVscC5jOjIzNQorbXNnaWQgIlRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZ2l0IGNvbW1hbmRzIGFyZToiCittc2dzdHIgIiIKKworIzogaGVscC5jOjI5MgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJyVzJyBhcHBlYXJzIHRvIGJlIGEgZ2l0IGNvbW1hbmQsIGJ1dCB3ZSB3ZXJlIG5vdFxuIgogImFibGUgdG8gZXhlY3V0ZSBpdC4gTWF5YmUgZ2l0LSVzIGlzIGJyb2tlbj8iCiBtc2dzdHIgIiIKIAotIzogaGVscC5jOjMyNworIzogaGVscC5jOjM0OQogbXNnaWQgIlVoIG9oLiBZb3VyIHN5c3RlbSByZXBvcnRzIG5vIEdpdCBjb21tYW5kcyBhdCBhbGwuIgogbXNnc3RyICIiCiAKLSM6IGhlbHAuYzozNDkKKyM6IGhlbHAuYzozNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIldBUk5JTkc6IFlvdSBjYWxsZWQgYSBHaXQgY29tbWFuZCBuYW1lZCAnJXMnLCB3aGljaCBkb2VzIG5vdCBleGlzdC5cbiIKICJDb250aW51aW5nIHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRoYXQgeW91IG1lYW50ICclcyciCiBtc2dzdHIgIiIKIAotIzogaGVscC5jOjM1NAorIzogaGVscC5jOjM3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbiAlMC4xZiBzZWNvbmRzIGF1dG9tYXRpY2FsbHkuLi4iCiBtc2dzdHIgIiIKIAotIzogaGVscC5jOjM2MQorIzogaGVscC5jOjM4MwogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQ6ICclcycgaXMgbm90IGEgZ2l0IGNvbW1hbmQuIFNlZSAnZ2l0IC0taGVscCcuIgogbXNnc3RyICIiCiAKLSM6IGhlbHAuYzozNjUKKyM6IGhlbHAuYzozODcKIG1zZ2lkICIiCiAiXG4iCiAiRGlkIHlvdSBtZWFuIHRoaXM/IgpAQCAtMzI3LDM1ICs1MzUsMzEzIEBACiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBwYXJzZS1vcHRpb25zLmM6NDkzCisjOiBtZXJnZS5jOjU2Cittc2dpZCAiZmFpbGVkIHRvIHJlYWQgdGhlIGNhY2hlIgorbXNnc3RyICIiCisKKyM6IG1lcmdlLmM6MTEwIGJ1aWx0aW4vY2hlY2tvdXQuYzozNjUgYnVpbHRpbi9jaGVja291dC5jOjU2NgorIzogYnVpbHRpbi9jbG9uZS5jOjY0NQorbXNnaWQgInVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiKGJhZCBjb21taXQpXG4iCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MjA2CisjLCBjLWZvcm1hdAorbXNnaWQgImFkZGluZm9fY2FjaGUgZmFpbGVkIGZvciBwYXRoICclcyciCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MjY4Cittc2dpZCAiZXJyb3IgYnVpbGRpbmcgdHJlZXMiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6NjcyCisjLCBjLWZvcm1hdAorbXNnaWQgImZhaWxlZCB0byBjcmVhdGUgcGF0aCAnJXMnJXMiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6NjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlbW92aW5nICVzIHRvIG1ha2Ugcm9vbSBmb3Igc3ViZGlyZWN0b3J5XG4iCittc2dzdHIgIiIKKworIy4gc29tZXRoaW5nIGVsc2UgZXhpc3RzCisjLiAuLiBidXQgbm90IHNvbWUgb3RoZXIgZXJyb3IgKHdobyByZWFsbHkgY2FyZXMgd2hhdD8pCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo2OTcgbWVyZ2UtcmVjdXJzaXZlLmM6NzE4Cittc2dpZCAiOiBwZXJoYXBzIGEgRC9GIGNvbmZsaWN0PyIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3MDgKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVmdXNpbmcgdG8gbG9zZSB1bnRyYWNrZWQgZmlsZSBhdCAnJXMnIgorbXNnc3RyICIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc0OAorIywgYy1mb3JtYXQKK21zZ2lkICJjYW5ub3QgcmVhZCBvYmplY3QgJXMgJyVzJyIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmxvYiBleHBlY3RlZCBmb3IgJXMgJyVzJyIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NzMgYnVpbHRpbi9jbG9uZS5jOjMxMworIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgdG8gb3BlbiAnJXMnIgorbXNnc3RyICIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc4MQorIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgdG8gc3ltbGluayAnJXMnIgorbXNnc3RyICIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc4NAorIywgYy1mb3JtYXQKK21zZ2lkICJkbyBub3Qga25vdyB3aGF0IHRvIGRvIHdpdGggJTA2byAlcyAnJXMnIgorbXNnc3RyICIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjkyMgorbXNnaWQgIkZhaWxlZCB0byBleGVjdXRlIGludGVybmFsIG1lcmdlIgorbXNnc3RyICIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjkyNgorIywgYy1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gYWRkICVzIHRvIGRhdGFiYXNlIgorbXNnc3RyICIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjk0MgorbXNnaWQgInVuc3VwcG9ydGVkIG9iamVjdCB0eXBlIGluIHRoZSB0cmVlIgorbXNnc3RyICIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEwMjEgbWVyZ2UtcmVjdXJzaXZlLmM6MTAzNQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ09ORkxJQ1QgKCVzL2RlbGV0ZSk6ICVzIGRlbGV0ZWQgaW4gJXMgYW5kICVzIGluICVzLiBWZXJzaW9uICVzIG9mICVzIGxlZnQgIgorImluIHRyZWUuIgorbXNnc3RyICIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEwMjcgbWVyZ2UtcmVjdXJzaXZlLmM6MTA0MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ09ORkxJQ1QgKCVzL2RlbGV0ZSk6ICVzIGRlbGV0ZWQgaW4gJXMgYW5kICVzIGluICVzLiBWZXJzaW9uICVzIG9mICVzIGxlZnQgIgorImluIHRyZWUgYXQgJXMuIgorbXNnc3RyICIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEwODEKK21zZ2lkICJyZW5hbWUiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTA4MQorbXNnaWQgInJlbmFtZWQiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTEzNworIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBhIGRpcmVjdG9yeSBpbiAlcyBhZGRpbmcgYXMgJXMgaW5zdGVhZCIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMTU5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDT05GTElDVCAocmVuYW1lL3JlbmFtZSk6IFJlbmFtZSBcIiVzXCItPlwiJXNcIiBpbiBicmFuY2ggXCIlc1wiIHJlbmFtZSBcIiVzIgorIlwiLT5cIiVzXCIgaW4gXCIlc1wiJXMiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTE2NAorbXNnaWQgIiAobGVmdCB1bnJlc29sdmVkKSIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMjE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNPTkZMSUNUIChyZW5hbWUvcmVuYW1lKTogUmVuYW1lICVzLT4lcyBpbiAlcy4gUmVuYW1lICVzLT4lcyBpbiAlcyIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMjQ4CisjLCBjLWZvcm1hdAorbXNnaWQgIlJlbmFtaW5nICVzIHRvICVzIGFuZCAlcyB0byAlcyBpbnN0ZWFkIgorbXNnc3RyICIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE0NDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ09ORkxJQ1QgKHJlbmFtZS9hZGQpOiBSZW5hbWUgJXMtPiVzIGluICVzLiAlcyBhZGRlZCBpbiAlcyIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNDU3CisjLCBjLWZvcm1hdAorbXNnaWQgIkFkZGluZyBtZXJnZWQgJXMiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTQ2MiBtZXJnZS1yZWN1cnNpdmUuYzoxNjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIkFkZGluZyBhcyAlcyBpbnN0ZWFkIgorbXNnc3RyICIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2Fubm90IHJlYWQgb2JqZWN0ICVzIgorbXNnc3RyICIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1MTYKKyMsIGMtZm9ybWF0Cittc2dpZCAib2JqZWN0ICVzIGlzIG5vdCBhIGJsb2IiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTU2NAorbXNnaWQgIm1vZGlmeSIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTY0Cittc2dpZCAibW9kaWZpZWQiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTU3NAorbXNnaWQgImNvbnRlbnQiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTU4MQorbXNnaWQgImFkZC9hZGQiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYxNQorIywgYy1mb3JtYXQKK21zZ2lkICJTa2lwcGVkICVzIChtZXJnZWQgc2FtZSBhcyBleGlzdGluZykiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYyOQorIywgYy1mb3JtYXQKK21zZ2lkICJBdXRvLW1lcmdpbmcgJXMiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYzMyBnaXQtc3VibW9kdWxlLnNoOjEwMjkKK21zZ2lkICJzdWJtb2R1bGUiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYzNAorIywgYy1mb3JtYXQKK21zZ2lkICJDT05GTElDVCAoJXMpOiBNZXJnZSBjb25mbGljdCBpbiAlcyIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzI0CisjLCBjLWZvcm1hdAorbXNnaWQgIlJlbW92aW5nICVzIgorbXNnc3RyICIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NDkKK21zZ2lkICJmaWxlL2RpcmVjdG9yeSIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzU1Cittc2dpZCAiZGlyZWN0b3J5L2ZpbGUiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTc2MAorIywgYy1mb3JtYXQKK21zZ2lkICJDT05GTElDVCAoJXMpOiBUaGVyZSBpcyBhIGRpcmVjdG9yeSB3aXRoIG5hbWUgJXMgaW4gJXMuIEFkZGluZyAlcyBhcyAlcyIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkFkZGluZyAlcyIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzg3Cittc2dpZCAiRmF0YWwgbWVyZ2UgZmFpbHVyZSwgc2hvdWxkbid0IGhhcHBlbi4iCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTgwNgorbXNnaWQgIkFscmVhZHkgdXAtdG8tZGF0ZSEiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTgxNQorIywgYy1mb3JtYXQKK21zZ2lkICJtZXJnaW5nIG9mIHRyZWVzICVzIGFuZCAlcyBmYWlsZWQiCittc2dzdHIgIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTg0NQorIywgYy1mb3JtYXQKK21zZ2lkICJVbnByb2Nlc3NlZCBwYXRoPz8/ICVzIgorbXNnc3RyICIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE4OTAKK21zZ2lkICJNZXJnaW5nOiIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTAzCisjLCBjLWZvcm1hdAorbXNnaWQgImZvdW5kICV1IGNvbW1vbiBhbmNlc3RvcjoiCittc2dpZF9wbHVyYWwgImZvdW5kICV1IGNvbW1vbiBhbmNlc3RvcnM6IgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTk0MAorbXNnaWQgIm1lcmdlIHJldHVybmVkIG5vIGNvbW1pdCIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBvYmplY3QgJyVzJyIKK21zZ3N0ciAiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoyMDA5IGJ1aWx0aW4vbWVyZ2UuYzo2NTgKK21zZ2lkICJVbmFibGUgdG8gd3JpdGUgaW5kZXguIgorbXNnc3RyICIiCisKKyM6IG9iamVjdC5jOjE5NQorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gcGFyc2Ugb2JqZWN0OiAlcyIKK21zZ3N0ciAiIgorCisjOiBwYXJzZS1vcHRpb25zLmM6NDg5CiBtc2dpZCAiLi4uIgogbXNnc3RyICIiCiAKLSM6IHBhcnNlLW9wdGlvbnMuYzo1MTEKKyM6IHBhcnNlLW9wdGlvbnMuYzo1MDcKICMsIGMtZm9ybWF0CiBtc2dpZCAidXNhZ2U6ICVzIgogbXNnc3RyICIiCiAKICMuIFRSQU5TTEFUT1JTOiB0aGUgY29sb24gaGVyZSBzaG91bGQgYWxpZ24gd2l0aCB0aGUKICMuIG9uZSBpbiAidXNhZ2U6ICVzIiB0cmFuc2xhdGlvbgotIzogcGFyc2Utb3B0aW9ucy5jOjUxNQorIzogcGFyc2Utb3B0aW9ucy5jOjUxMQogIywgYy1mb3JtYXQKIG1zZ2lkICIgICBvcjogJXMiCiBtc2dzdHIgIiIKIAotIzogcGFyc2Utb3B0aW9ucy5jOjUxOAorIzogcGFyc2Utb3B0aW9ucy5jOjUxNAogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAgJXMiCiBtc2dzdHIgIiIKIAotIzogcmVtb3RlLmM6MTYyOQorIzogcGFyc2Utb3B0aW9ucy5jOjU0OAorbXNnaWQgIi1OVU0iCittc2dzdHIgIiIKKworIzogcGF0aHNwZWMuYzo4MworIywgYy1mb3JtYXQKK21zZ2lkICJQYXRoICclcycgaXMgaW4gc3VibW9kdWxlICclLipzJyIKK21zZ3N0ciAiIgorCisjOiBwYXRoc3BlYy5jOjk5CisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgaXMgYmV5b25kIGEgc3ltYm9saWMgbGluayIKK21zZ3N0ciAiIgorCisjOiByZW1vdGUuYzoxNzgxCiAjLCBjLWZvcm1hdAogbXNnaWQgIllvdXIgYnJhbmNoIGlzIGFoZWFkIG9mICclcycgYnkgJWQgY29tbWl0LlxuIgogbXNnaWRfcGx1cmFsICJZb3VyIGJyYW5jaCBpcyBhaGVhZCBvZiAnJXMnIGJ5ICVkIGNvbW1pdHMuXG4iCiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiByZW1vdGUuYzoxNjM1CisjOiByZW1vdGUuYzoxNzg3Cittc2dpZCAiICAodXNlIFwiZ2l0IHB1c2hcIiB0byBwdWJsaXNoIHlvdXIgbG9jYWwgY29tbWl0cylcbiIKK21zZ3N0ciAiIgorCisjOiByZW1vdGUuYzoxNzkwCiAjLCBjLWZvcm1hdAogbXNnaWQgIllvdXIgYnJhbmNoIGlzIGJlaGluZCAnJXMnIGJ5ICVkIGNvbW1pdCwgYW5kIGNhbiBiZSBmYXN0LWZvcndhcmRlZC5cbiIKIG1zZ2lkX3BsdXJhbCAiIgpAQCAtMzYzLDcgKzg0OSwxMSBAQAogbXNnc3RyWzBdICIiCiBtc2dzdHJbMV0gIiIKIAotIzogcmVtb3RlLmM6MTY0MworIzogcmVtb3RlLmM6MTc5OAorbXNnaWQgIiAgKHVzZSBcImdpdCBwdWxsXCIgdG8gdXBkYXRlIHlvdXIgbG9jYWwgYnJhbmNoKVxuIgorbXNnc3RyICIiCisKKyM6IHJlbW90ZS5jOjE4MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIllvdXIgYnJhbmNoIGFuZCAnJXMnIGhhdmUgZGl2ZXJnZWQsXG4iCkBAIC0zNzQsNjYzICs4NjQsOTQyIEBACiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBzZXF1ZW5jZXIuYzoxMjEgYnVpbHRpbi9tZXJnZS5jOjg2NSBidWlsdGluL21lcmdlLmM6OTc4Ci0jOiBidWlsdGluL21lcmdlLmM6MTA4OCBidWlsdGluL21lcmdlLmM6MTA5OAorIzogcmVtb3RlLmM6MTgxMQorbXNnaWQgIiAgKHVzZSBcImdpdCBwdWxsXCIgdG8gbWVyZ2UgdGhlIHJlbW90ZSBicmFuY2ggaW50byB5b3VycylcbiIKK21zZ3N0ciAiIgorCisjOiBzZXF1ZW5jZXIuYzoyMDYgYnVpbHRpbi9tZXJnZS5jOjc3NiBidWlsdGluL21lcmdlLmM6ODg5IGJ1aWx0aW4vbWVyZ2UuYzo5OTkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDA5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmciCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6MTIzIGJ1aWx0aW4vbWVyZ2UuYzozMzMgYnVpbHRpbi9tZXJnZS5jOjg2OAotIzogYnVpbHRpbi9tZXJnZS5jOjEwOTAgYnVpbHRpbi9tZXJnZS5jOjExMDMKKyM6IHNlcXVlbmNlci5jOjIwOCBidWlsdGluL21lcmdlLmM6MzM1IGJ1aWx0aW4vbWVyZ2UuYzo3NzkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDAxIGJ1aWx0aW4vbWVyZ2UuYzoxMDE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSB0byAnJXMnIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjE0NAorIzogc2VxdWVuY2VyLmM6MjI5CiBtc2dpZCAiIgogImFmdGVyIHJlc29sdmluZyB0aGUgY29uZmxpY3RzLCBtYXJrIHRoZSBjb3JyZWN0ZWQgcGF0aHNcbiIKICJ3aXRoICdnaXQgYWRkIDxwYXRocz4nIG9yICdnaXQgcm0gPHBhdGhzPiciCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6MTQ3CisjOiBzZXF1ZW5jZXIuYzoyMzIKIG1zZ2lkICIiCiAiYWZ0ZXIgcmVzb2x2aW5nIHRoZSBjb25mbGljdHMsIG1hcmsgdGhlIGNvcnJlY3RlZCBwYXRoc1xuIgogIndpdGggJ2dpdCBhZGQgPHBhdGhzPicgb3IgJ2dpdCBybSA8cGF0aHM+J1xuIgogImFuZCBjb21taXQgdGhlIHJlc3VsdCB3aXRoICdnaXQgY29tbWl0JyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzoxNjAgc2VxdWVuY2VyLmM6NzU4IHNlcXVlbmNlci5jOjg0MQorIzogc2VxdWVuY2VyLmM6MjQ1IHNlcXVlbmNlci5jOjg1OSBzZXF1ZW5jZXIuYzo5NDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHdyaXRlIHRvICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjE2MworIzogc2VxdWVuY2VyLmM6MjQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkVycm9yIHdyYXBwaW5nIHVwICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjE3OAorIzogc2VxdWVuY2VyLmM6MjYzCiBtc2dpZCAiWW91ciBsb2NhbCBjaGFuZ2VzIHdvdWxkIGJlIG92ZXJ3cml0dGVuIGJ5IGNoZXJyeS1waWNrLiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzoxODAKKyM6IHNlcXVlbmNlci5jOjI2NQogbXNnaWQgIllvdXIgbG9jYWwgY2hhbmdlcyB3b3VsZCBiZSBvdmVyd3JpdHRlbiBieSByZXZlcnQuIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjE4MworIzogc2VxdWVuY2VyLmM6MjY4CiBtc2dpZCAiQ29tbWl0IHlvdXIgY2hhbmdlcyBvciBzdGFzaCB0aGVtIHRvIHByb2NlZWQuIgogbXNnc3RyICIiCiAKICMuIFRSQU5TTEFUT1JTOiAlcyB3aWxsIGJlICJyZXZlcnQiIG9yICJjaGVycnktcGljayIKLSM6IHNlcXVlbmNlci5jOjIzMworIzogc2VxdWVuY2VyLmM6MzE5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBVbmFibGUgdG8gd3JpdGUgbmV3IGluZGV4IGZpbGUiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6MjYxCisjOiBzZXF1ZW5jZXIuYzozNTAKIG1zZ2lkICJDb3VsZCBub3QgcmVzb2x2ZSBIRUFEIGNvbW1pdFxuIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjI4MgorIzogc2VxdWVuY2VyLmM6MzcxCiBtc2dpZCAiVW5hYmxlIHRvIHVwZGF0ZSBjYWNoZSB0cmVlXG4iCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6MzI0CisjOiBzZXF1ZW5jZXIuYzo0MTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIGNvbW1pdCAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjMyOQorIzogc2VxdWVuY2VyLmM6NDIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBwYXJlbnQgY29tbWl0ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6Mzk1CisjOiBzZXF1ZW5jZXIuYzo0ODcKIG1zZ2lkICJZb3VyIGluZGV4IGZpbGUgaXMgdW5tZXJnZWQuIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjM5OAotbXNnaWQgIllvdSBkbyBub3QgaGF2ZSBhIHZhbGlkIEhFQUQiCi1tc2dzdHIgIiIKLQotIzogc2VxdWVuY2VyLmM6NDEzCisjOiBzZXF1ZW5jZXIuYzo1MDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGlzIGEgbWVyZ2UgYnV0IG5vIC1tIG9wdGlvbiB3YXMgZ2l2ZW4uIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjQyMQorIzogc2VxdWVuY2VyLmM6NTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBkb2VzIG5vdCBoYXZlIHBhcmVudCAlZCIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo0MjUKKyM6IHNlcXVlbmNlci5jOjUxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWlubGluZSB3YXMgc3BlY2lmaWVkIGJ1dCBjb21taXQgJXMgaXMgbm90IGEgbWVyZ2UuIgogbXNnc3RyICIiCiAKICMuIFRSQU5TTEFUT1JTOiBUaGUgZmlyc3QgJXMgd2lsbCBiZSAicmV2ZXJ0IiBvcgogIy4gImNoZXJyeS1waWNrIiwgdGhlIHNlY29uZCAlcyBhIFNIQTEKLSM6IHNlcXVlbmNlci5jOjQzNgorIzogc2VxdWVuY2VyLmM6NTMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjYW5ub3QgcGFyc2UgcGFyZW50IGNvbW1pdCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo0NDAKKyM6IHNlcXVlbmNlci5jOjUzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZ2V0IGNvbW1pdCBtZXNzYWdlIGZvciAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo1MjQKKyM6IHNlcXVlbmNlci5jOjYyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgcmV2ZXJ0ICVzLi4uICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjUyNQorIzogc2VxdWVuY2VyLmM6NjIyCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBhcHBseSAlcy4uLiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo1NTMKKyM6IHNlcXVlbmNlci5jOjY1NAogbXNnaWQgImVtcHR5IGNvbW1pdCBzZXQgcGFzc2VkIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjU2MQorIzogc2VxdWVuY2VyLmM6NjYyCiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCAlczogZmFpbGVkIHRvIHJlYWQgdGhlIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjU2NgorIzogc2VxdWVuY2VyLmM6NjY3CiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCAlczogZmFpbGVkIHRvIHJlZnJlc2ggdGhlIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjYyNAorIzogc2VxdWVuY2VyLmM6NzI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCAlcyBkdXJpbmcgYSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo2NDYKKyM6IHNlcXVlbmNlci5jOjc0NwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2UgbGluZSAlZC4iCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NjUxCisjOiBzZXF1ZW5jZXIuYzo3NTIKIG1zZ2lkICJObyBjb21taXRzIHBhcnNlZC4iCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NjY0CisjOiBzZXF1ZW5jZXIuYzo3NjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gJXMiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NjY4CisjOiBzZXF1ZW5jZXIuYzo3NjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlYWQgJXMuIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjY3NQorIzogc2VxdWVuY2VyLmM6Nzc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVudXNhYmxlIGluc3RydWN0aW9uIHNoZWV0OiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo3MDMKKyM6IHNlcXVlbmNlci5jOjgwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGtleTogJXMiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NzA2CisjOiBzZXF1ZW5jZXIuYzo4MDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCB2YWx1ZSBmb3IgJXM6ICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjcxOAorIzogc2VxdWVuY2VyLmM6ODE5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1hbGZvcm1lZCBvcHRpb25zIHNoZWV0OiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo3MzkKKyM6IHNlcXVlbmNlci5jOjg0MAogbXNnaWQgImEgY2hlcnJ5LXBpY2sgb3IgcmV2ZXJ0IGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NzQwCisjOiBzZXF1ZW5jZXIuYzo4NDEKIG1zZ2lkICJ0cnkgXCJnaXQgY2hlcnJ5LXBpY2sgKC0tY29udGludWUgfCAtLXF1aXQgfCAtLWFib3J0KVwiIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjc0NAorIzogc2VxdWVuY2VyLmM6ODQ1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBjcmVhdGUgc2VxdWVuY2VyIGRpcmVjdG9yeSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo3NjAgc2VxdWVuY2VyLmM6ODQ1CisjOiBzZXF1ZW5jZXIuYzo4NjEgc2VxdWVuY2VyLmM6OTQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkVycm9yIHdyYXBwaW5nIHVwICVzLiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo3Nzkgc2VxdWVuY2VyLmM6OTEzCisjOiBzZXF1ZW5jZXIuYzo4ODAgc2VxdWVuY2VyLmM6MTAxNAogbXNnaWQgIm5vIGNoZXJyeS1waWNrIG9yIHJldmVydCBpbiBwcm9ncmVzcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo3ODEKKyM6IHNlcXVlbmNlci5jOjg4MgogbXNnaWQgImNhbm5vdCByZXNvbHZlIEhFQUQiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NzgzCisjOiBzZXF1ZW5jZXIuYzo4ODQKIG1zZ2lkICJjYW5ub3QgYWJvcnQgZnJvbSBhIGJyYW5jaCB5ZXQgdG8gYmUgYm9ybiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo4MDUgYnVpbHRpbi9hcHBseS5jOjM2OTcKKyM6IHNlcXVlbmNlci5jOjkwNiBidWlsdGluL2FwcGx5LmM6NDA2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiAlczogJXMiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6ODA4CisjOiBzZXF1ZW5jZXIuYzo5MDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgJXM6ICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjgwOQorIzogc2VxdWVuY2VyLmM6OTEwCiBtc2dpZCAidW5leHBlY3RlZCBlbmQgb2YgZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo4MTUKKyM6IHNlcXVlbmNlci5jOjkxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJzdG9yZWQgcHJlLWNoZXJyeS1waWNrIEhFQUQgZmlsZSAnJXMnIGlzIGNvcnJ1cHQiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6ODM4CisjOiBzZXF1ZW5jZXIuYzo5MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZvcm1hdCAlcy4iCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6MTAwMAorIzogc2VxdWVuY2VyLmM6MTA4MworIywgYy1mb3JtYXQKK21zZ2lkICIlczogY2FuJ3QgY2hlcnJ5LXBpY2sgYSAlcyIKK21zZ3N0ciAiIgorCisjOiBzZXF1ZW5jZXIuYzoxMDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBiYWQgcmV2aXNpb24iCittc2dzdHIgIiIKKworIzogc2VxdWVuY2VyLmM6MTExOQogbXNnaWQgIkNhbid0IHJldmVydCBhcyBpbml0aWFsIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzoxMDAxCisjOiBzZXF1ZW5jZXIuYzoxMTIwCiBtc2dpZCAiQ2FuJ3QgY2hlcnJ5LXBpY2sgaW50byBlbXB0eSBoZWFkIgogbXNnc3RyICIiCiAKLSM6IHNoYTFfbmFtZS5jOjg2NAorIzogc2hhMV9uYW1lLmM6MTAzNgogbXNnaWQgIkhFQUQgZG9lcyBub3QgcG9pbnQgdG8gYSBicmFuY2giCiBtc2dzdHIgIiIKIAotIzogc2hhMV9uYW1lLmM6ODY3CisjOiBzaGExX25hbWUuYzoxMDM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHN1Y2ggYnJhbmNoOiAnJXMnIgogbXNnc3RyICIiCiAKLSM6IHNoYTFfbmFtZS5jOjg2OQorIzogc2hhMV9uYW1lLmM6MTA0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyB1cHN0cmVhbSBjb25maWd1cmVkIGZvciBicmFuY2ggJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBzaGExX25hbWUuYzo4NzIKKyM6IHNoYTFfbmFtZS5jOjEwNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXBzdHJlYW0gYnJhbmNoICclcycgbm90IHN0b3JlZCBhcyBhIHJlbW90ZS10cmFja2luZyBicmFuY2giCiBtc2dzdHIgIiIKIAotIzogd3JhcHBlci5jOjQxMworIzogd3JhcHBlci5jOjQwOAorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gYWNjZXNzICclcyc6ICVzIgorbXNnc3RyICIiCisKKyM6IHdyYXBwZXIuYzo0MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIGFjY2VzcyAnJXMnIgorbXNnc3RyICIiCisKKyM6IHdyYXBwZXIuYzo0MzQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGxvb2sgdXAgY3VycmVudCB1c2VyIGluIHRoZSBwYXNzd2QgZmlsZTogJXMiCiBtc2dzdHIgIiIKIAotIzogd3JhcHBlci5jOjQxNAorIzogd3JhcHBlci5jOjQzNQogbXNnaWQgIm5vIHN1Y2ggdXNlciIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxMzUKKyM6IHd0LXN0YXR1cy5jOjE0MAogbXNnaWQgIlVubWVyZ2VkIHBhdGhzOiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxNDEgd3Qtc3RhdHVzLmM6MTU4CisjOiB3dC1zdGF0dXMuYzoxNjcgd3Qtc3RhdHVzLmM6MTk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgKHVzZSBcImdpdCByZXNldCAlcyA8ZmlsZT4uLi5cIiB0byB1bnN0YWdlKSIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxNDMgd3Qtc3RhdHVzLmM6MTYwCisjOiB3dC1zdGF0dXMuYzoxNjkgd3Qtc3RhdHVzLmM6MTk2CiBtc2dpZCAiICAodXNlIFwiZ2l0IHJtIC0tY2FjaGVkIDxmaWxlPi4uLlwiIHRvIHVuc3RhZ2UpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjE0NAorIzogd3Qtc3RhdHVzLmM6MTczCittc2dpZCAiICAodXNlIFwiZ2l0IGFkZCA8ZmlsZT4uLi5cIiB0byBtYXJrIHJlc29sdXRpb24pIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjE3NSB3dC1zdGF0dXMuYzoxNzkKIG1zZ2lkICIgICh1c2UgXCJnaXQgYWRkL3JtIDxmaWxlPi4uLlwiIGFzIGFwcHJvcHJpYXRlIHRvIG1hcmsgcmVzb2x1dGlvbikiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MTUyCisjOiB3dC1zdGF0dXMuYzoxNzcKK21zZ2lkICIgICh1c2UgXCJnaXQgcm0gPGZpbGU+Li4uXCIgdG8gbWFyayByZXNvbHV0aW9uKSIKK21zZ3N0ciAiIgorCisjOiB3dC1zdGF0dXMuYzoxODgKIG1zZ2lkICJDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MTcwCisjOiB3dC1zdGF0dXMuYzoyMDYKIG1zZ2lkICJDaGFuZ2VzIG5vdCBzdGFnZWQgZm9yIGNvbW1pdDoiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MTc0CisjOiB3dC1zdGF0dXMuYzoyMTAKIG1zZ2lkICIgICh1c2UgXCJnaXQgYWRkIDxmaWxlPi4uLlwiIHRvIHVwZGF0ZSB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKSIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxNzYKKyM6IHd0LXN0YXR1cy5jOjIxMgogbXNnaWQgIiAgKHVzZSBcImdpdCBhZGQvcm0gPGZpbGU+Li4uXCIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjE3NworIzogd3Qtc3RhdHVzLmM6MjEzCiBtc2dpZCAiIgogIiAgKHVzZSBcImdpdCBjaGVja291dCAtLSA8ZmlsZT4uLi5cIiB0byBkaXNjYXJkIGNoYW5nZXMgaW4gd29ya2luZyBkaXJlY3RvcnkpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjE3OQorIzogd3Qtc3RhdHVzLmM6MjE1CiBtc2dpZCAiICAoY29tbWl0IG9yIGRpc2NhcmQgdGhlIHVudHJhY2tlZCBvciBtb2RpZmllZCBjb250ZW50IGluIHN1Ym1vZHVsZXMpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjE4OAotIywgYy1mb3JtYXQKLW1zZ2lkICIlcyBmaWxlczoiCi1tc2dzdHIgIiIKLQotIzogd3Qtc3RhdHVzLmM6MTkxCisjOiB3dC1zdGF0dXMuYzoyMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAodXNlIFwiZ2l0ICVzIDxmaWxlPi4uLlwiIHRvIGluY2x1ZGUgaW4gd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MjA4CisjOiB3dC1zdGF0dXMuYzoyNDQKIG1zZ2lkICJidWciCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MjEzCisjOiB3dC1zdGF0dXMuYzoyNDkKIG1zZ2lkICJib3RoIGRlbGV0ZWQ6IgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjIxNAorIzogd3Qtc3RhdHVzLmM6MjUwCiBtc2dpZCAiYWRkZWQgYnkgdXM6IgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjIxNQorIzogd3Qtc3RhdHVzLmM6MjUxCiBtc2dpZCAiZGVsZXRlZCBieSB0aGVtOiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoyMTYKKyM6IHd0LXN0YXR1cy5jOjI1MgogbXNnaWQgImFkZGVkIGJ5IHRoZW06IgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjIxNworIzogd3Qtc3RhdHVzLmM6MjUzCiBtc2dpZCAiZGVsZXRlZCBieSB1czoiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MjE4CisjOiB3dC1zdGF0dXMuYzoyNTQKIG1zZ2lkICJib3RoIGFkZGVkOiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoyMTkKKyM6IHd0LXN0YXR1cy5jOjI1NQogbXNnaWQgImJvdGggbW9kaWZpZWQ6IgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjI0OQorIzogd3Qtc3RhdHVzLmM6Mjg1CiBtc2dpZCAibmV3IGNvbW1pdHMsICIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoyNTEKKyM6IHd0LXN0YXR1cy5jOjI4NwogbXNnaWQgIm1vZGlmaWVkIGNvbnRlbnQsICIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoyNTMKKyM6IHd0LXN0YXR1cy5jOjI4OQogbXNnaWQgInVudHJhY2tlZCBjb250ZW50LCAiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MjY3CisjOiB3dC1zdGF0dXMuYzozMDYKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IGZpbGU6ICAgJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MjcwCisjOiB3dC1zdGF0dXMuYzozMDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29waWVkOiAgICAgJXMgLT4gJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MjczCisjOiB3dC1zdGF0dXMuYzozMTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZGVsZXRlZDogICAgJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6Mjc2CisjOiB3dC1zdGF0dXMuYzozMTUKICMsIGMtZm9ybWF0CiBtc2dpZCAibW9kaWZpZWQ6ICAgJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6Mjc5CisjOiB3dC1zdGF0dXMuYzozMTgKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVuYW1lZDogICAgJXMgLT4gJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MjgyCisjOiB3dC1zdGF0dXMuYzozMjEKICMsIGMtZm9ybWF0CiBtc2dpZCAidHlwZWNoYW5nZTogJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6Mjg1CisjOiB3dC1zdGF0dXMuYzozMjQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93bjogICAgJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6Mjg4CisjOiB3dC1zdGF0dXMuYzozMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5tZXJnZWQ6ICAgJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MjkxCisjOiB3dC1zdGF0dXMuYzozMzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiYnVnOiB1bmhhbmRsZWQgZGlmZiBzdGF0dXMgJWMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6NzM3CisjOiB3dC1zdGF0dXMuYzo4MDMKK21zZ2lkICJZb3UgaGF2ZSB1bm1lcmdlZCBwYXRocy4iCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6ODA2IHd0LXN0YXR1cy5jOjk1OAorbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCBjb21taXRcIikiCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6ODA5Cittc2dpZCAiQWxsIGNvbmZsaWN0cyBmaXhlZCBidXQgeW91IGFyZSBzdGlsbCBtZXJnaW5nLiIKK21zZ3N0ciAiIgorCisjOiB3dC1zdGF0dXMuYzo4MTIKK21zZ2lkICIgICh1c2UgXCJnaXQgY29tbWl0XCIgdG8gY29uY2x1ZGUgbWVyZ2UpIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjgyMgorbXNnaWQgIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhbiBhbSBzZXNzaW9uLiIKK21zZ3N0ciAiIgorCisjOiB3dC1zdGF0dXMuYzo4MjUKK21zZ2lkICJUaGUgY3VycmVudCBwYXRjaCBpcyBlbXB0eS4iCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6ODI5Cittc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBydW4gXCJnaXQgYW0gLS1yZXNvbHZlZFwiKSIKK21zZ3N0ciAiIgorCisjOiB3dC1zdGF0dXMuYzo4MzEKK21zZ2lkICIgICh1c2UgXCJnaXQgYW0gLS1za2lwXCIgdG8gc2tpcCB0aGlzIHBhdGNoKSIKK21zZ3N0ciAiIgorCisjOiB3dC1zdGF0dXMuYzo4MzMKK21zZ2lkICIgICh1c2UgXCJnaXQgYW0gLS1hYm9ydFwiIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGJyYW5jaCkiCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6ODkzIHd0LXN0YXR1cy5jOjkxMAorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZyBicmFuY2ggJyVzJyBvbiAnJXMnLiIKK21zZ3N0ciAiIgorCisjOiB3dC1zdGF0dXMuYzo4OTggd3Qtc3RhdHVzLmM6OTE1Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcuIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjkwMQorbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjkwMworbXNnaWQgIiAgKHVzZSBcImdpdCByZWJhc2UgLS1za2lwXCIgdG8gc2tpcCB0aGlzIHBhdGNoKSIKK21zZ3N0ciAiIgorCisjOiB3dC1zdGF0dXMuYzo5MDUKK21zZ2lkICIgICh1c2UgXCJnaXQgcmViYXNlIC0tYWJvcnRcIiB0byBjaGVjayBvdXQgdGhlIG9yaWdpbmFsIGJyYW5jaCkiCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6OTE4Cittc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjkyMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiWW91IGFyZSBjdXJyZW50bHkgc3BsaXR0aW5nIGEgY29tbWl0IHdoaWxlIHJlYmFzaW5nIGJyYW5jaCAnJXMnIG9uICclcycuIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjkyNworbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IHNwbGl0dGluZyBhIGNvbW1pdCBkdXJpbmcgYSByZWJhc2UuIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjkzMAorbXNnaWQgIiAgKE9uY2UgeW91ciB3b3JraW5nIGRpcmVjdG9yeSBpcyBjbGVhbiwgcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjkzNAorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIGEgY29tbWl0IHdoaWxlIHJlYmFzaW5nIGJyYW5jaCAnJXMnIG9uICclcycuIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjkzOQorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLiIKK21zZ3N0ciAiIgorCisjOiB3dC1zdGF0dXMuYzo5NDIKK21zZ2lkICIgICh1c2UgXCJnaXQgY29tbWl0IC0tYW1lbmRcIiB0byBhbWVuZCB0aGUgY3VycmVudCBjb21taXQpIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjk0NAorbXNnaWQgIiIKKyIgICh1c2UgXCJnaXQgcmViYXNlIC0tY29udGludWVcIiBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzKSIKK21zZ3N0ciAiIgorCisjOiB3dC1zdGF0dXMuYzo5NTQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBjaGVycnktcGlja2luZy4iCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6OTYxCittc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IGNvbW1pdFwiKSIKK21zZ3N0ciAiIgorCisjOiB3dC1zdGF0dXMuYzo5NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgcmV2ZXJ0aW5nIGNvbW1pdCAlcy4iCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6OTc1Cittc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCIpIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjk3OAorbXNnaWQgIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKK21zZ3N0ciAiIgorCisjOiB3dC1zdGF0dXMuYzo5ODAKK21zZ2lkICIgICh1c2UgXCJnaXQgcmV2ZXJ0IC0tYWJvcnRcIiB0byBjYW5jZWwgdGhlIHJldmVydCBvcGVyYXRpb24pIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjk5MQorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBiaXNlY3RpbmcsIHN0YXJ0ZWQgZnJvbSBicmFuY2ggJyVzJy4iCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6OTk1Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLiIKK21zZ3N0ciAiIgorCisjOiB3dC1zdGF0dXMuYzo5OTgKK21zZ2lkICIgICh1c2UgXCJnaXQgYmlzZWN0IHJlc2V0XCIgdG8gZ2V0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIGJyYW5jaCkiCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6MTE3MwogbXNnaWQgIk9uIGJyYW5jaCAiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6NzQ0CisjOiB3dC1zdGF0dXMuYzoxMTg0Cittc2dpZCAiSEVBRCBkZXRhY2hlZCBhdCAiCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6MTE4NgorbXNnaWQgIkhFQUQgZGV0YWNoZWQgZnJvbSAiCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6MTE4OQogbXNnaWQgIk5vdCBjdXJyZW50bHkgb24gYW55IGJyYW5jaC4iCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6NzU1CisjOiB3dC1zdGF0dXMuYzoxMjA2CiBtc2dpZCAiSW5pdGlhbCBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6NzY5Ci1tc2dpZCAiVW50cmFja2VkIgorIzogd3Qtc3RhdHVzLmM6MTIyMAorbXNnaWQgIlVudHJhY2tlZCBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo3NzEKLW1zZ2lkICJJZ25vcmVkIgorIzogd3Qtc3RhdHVzLmM6MTIyMgorbXNnaWQgIklnbm9yZWQgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6NzczCisjOiB3dC1zdGF0dXMuYzoxMjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJJdCB0b29rICUuMmYgc2Vjb25kcyB0byBlbnVtZXJhdGUgdW50cmFja2VkIGZpbGVzLiAnc3RhdHVzIC11bm8nXG4iCisibWF5IHNwZWVkIGl0IHVwLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gZm9yZ2V0IHRvIGFkZFxuIgorIm5ldyBmaWxlcyB5b3Vyc2VsZiAoc2VlICdnaXQgaGVscCBzdGF0dXMnKS4iCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6MTIzMgogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnRyYWNrZWQgZmlsZXMgbm90IGxpc3RlZCVzIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjc3NQorIzogd3Qtc3RhdHVzLmM6MTIzNAogbXNnaWQgIiAodXNlIC11IG9wdGlvbiB0byBzaG93IHVudHJhY2tlZCBmaWxlcykiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6NzgxCisjOiB3dC1zdGF0dXMuYzoxMjQwCiBtc2dpZCAiTm8gY2hhbmdlcyIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo3ODUKKyM6IHd0LXN0YXR1cy5jOjEyNDUKICMsIGMtZm9ybWF0Ci1tc2dpZCAibm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXQlc1xuIgorbXNnaWQgIm5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0ICh1c2UgXCJnaXQgYWRkXCIgYW5kL29yIFwiZ2l0IGNvbW1pdCAtYVwiKVxuIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjc4NwotbXNnaWQgIiAodXNlIFwiZ2l0IGFkZFwiIGFuZC9vciBcImdpdCBjb21taXQgLWFcIikiCi1tc2dzdHIgIiIKLQotIzogd3Qtc3RhdHVzLmM6Nzg5CisjOiB3dC1zdGF0dXMuYzoxMjQ4CiAjLCBjLWZvcm1hdAotbXNnaWQgIm5vdGhpbmcgYWRkZWQgdG8gY29tbWl0IGJ1dCB1bnRyYWNrZWQgZmlsZXMgcHJlc2VudCVzXG4iCittc2dpZCAibm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXRcbiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo3OTEKLW1zZ2lkICIgKHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaykiCi1tc2dzdHIgIiIKLQotIzogd3Qtc3RhdHVzLmM6NzkzIHd0LXN0YXR1cy5jOjc5NiB3dC1zdGF0dXMuYzo3OTkKKyM6IHd0LXN0YXR1cy5jOjEyNTEKICMsIGMtZm9ybWF0Ci1tc2dpZCAibm90aGluZyB0byBjb21taXQlc1xuIgorbXNnaWQgIiIKKyJub3RoaW5nIGFkZGVkIHRvIGNvbW1pdCBidXQgdW50cmFja2VkIGZpbGVzIHByZXNlbnQgKHVzZSBcImdpdCBhZGRcIiB0byAiCisidHJhY2spXG4iCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6Nzk0Ci1tc2dpZCAiIChjcmVhdGUvY29weSBmaWxlcyBhbmQgdXNlIFwiZ2l0IGFkZFwiIHRvIHRyYWNrKSIKKyM6IHd0LXN0YXR1cy5jOjEyNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAibm90aGluZyBhZGRlZCB0byBjb21taXQgYnV0IHVudHJhY2tlZCBmaWxlcyBwcmVzZW50XG4iCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6Nzk3Ci1tc2dpZCAiICh1c2UgLXUgdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpIgorIzogd3Qtc3RhdHVzLmM6MTI1NworIywgYy1mb3JtYXQKK21zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCAoY3JlYXRlL2NvcHkgZmlsZXMgYW5kIHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaylcbiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo4MDAKLW1zZ2lkICIgKHdvcmtpbmcgZGlyZWN0b3J5IGNsZWFuKSIKKyM6IHd0LXN0YXR1cy5jOjEyNjAgd3Qtc3RhdHVzLmM6MTI2NQorIywgYy1mb3JtYXQKK21zZ2lkICJub3RoaW5nIHRvIGNvbW1pdFxuIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjkwOAorIzogd3Qtc3RhdHVzLmM6MTI2MworIywgYy1mb3JtYXQKK21zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCAodXNlIC11IHRvIHNob3cgdW50cmFja2VkIGZpbGVzKVxuIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjEyNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAibm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgZGlyZWN0b3J5IGNsZWFuXG4iCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6MTM3NQogbXNnaWQgIkhFQUQgKG5vIGJyYW5jaCkiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6OTE0CisjOiB3dC1zdGF0dXMuYzoxMzgxCiBtc2dpZCAiSW5pdGlhbCBjb21taXQgb24gIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjkyOQorIzogd3Qtc3RhdHVzLmM6MTM5NgogbXNnaWQgImJlaGluZCAiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6OTMyIHd0LXN0YXR1cy5jOjkzNQorIzogd3Qtc3RhdHVzLmM6MTM5OSB3dC1zdGF0dXMuYzoxNDAyCiBtc2dpZCAiYWhlYWQgIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjkzNworIzogd3Qtc3RhdHVzLmM6MTQwNAogbXNnaWQgIiwgYmVoaW5kICIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjYyCisjOiBjb21wYXQvcHJlY29tcG9zZV91dGY4LmM6NTggYnVpbHRpbi9jbG9uZS5jOjM1MgorIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgdG8gdW5saW5rICclcyciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9hZGQuYzoyMAorbXNnaWQgImdpdCBhZGQgW29wdGlvbnNdIFstLV0gPHBhdGhzcGVjPi4uLiIKK21zZ3N0ciAiIgorCisjLgorIy4gKiBUbyBiZSBjb25zaXN0ZW50IHdpdGggImdpdCBhZGQgLXAiIGFuZCBtb3N0IEdpdAorIy4gKiBjb21tYW5kcywgd2Ugc2hvdWxkIGRlZmF1bHQgdG8gYmVpbmcgdHJlZS13aWRlLCBidXQKKyMuICogdGhpcyBpcyBub3QgdGhlIG9yaWdpbmFsIGJlaGF2aW9yIGFuZCBjYW4ndCBiZQorIy4gKiBjaGFuZ2VkIHVudGlsIHVzZXJzIHRyYWluZWQgdGhlbXNlbHZlcyBub3QgdG8gdHlwZQorIy4gKiAiZ2l0IGFkZCAtdSIgb3IgImdpdCBhZGQgLUEiLiBGb3Igbm93LCB3ZSB3YXJuIGFuZAorIy4gKiBrZWVwIHRoZSBvbGQgYmVoYXZpb3IuIExhdGVyLCB0aGUgYmVoYXZpb3IgY2FuIGJlIGNoYW5nZWQKKyMuICogdG8gdHJlZS13aWRlLCBrZWVwaW5nIHRoZSB3YXJuaW5nIGZvciBhIHdoaWxlLCBhbmQKKyMuICogZXZlbnR1YWxseSB3ZSBjYW4gZHJvcCB0aGUgd2FybmluZy4KKyMuCisjOiBidWlsdGluL2FkZC5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgYmVoYXZpb3Igb2YgJ2dpdCBhZGQgJXMgKG9yICVzKScgd2l0aCBubyBwYXRoIGFyZ3VtZW50IGZyb20gYVxuIgorInN1YmRpcmVjdG9yeSBvZiB0aGUgdHJlZSB3aWxsIGNoYW5nZSBpbiBHaXQgMi4wIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgIgorImFueW1vcmUuXG4iCisiVG8gYWRkIGNvbnRlbnQgZm9yIHRoZSB3aG9sZSB0cmVlLCBydW46XG4iCisiXG4iCisiICBnaXQgYWRkICVzIDovXG4iCisiICAob3IgZ2l0IGFkZCAlcyA6LylcbiIKKyJcbiIKKyJUbyByZXN0cmljdCB0aGUgY29tbWFuZCB0byB0aGUgY3VycmVudCBkaXJlY3RvcnksIHJ1bjpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgLlxuIgorIiAgKG9yIGdpdCBhZGQgJXMgLilcbiIKKyJcbiIKKyJXaXRoIHRoZSBjdXJyZW50IEdpdCB2ZXJzaW9uLCB0aGUgY29tbWFuZCBpcyByZXN0cmljdGVkIHRvIHRoZSBjdXJyZW50ICIKKyJkaXJlY3RvcnkuXG4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9hZGQuYzoxMDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIllvdSByYW4gJ2dpdCBhZGQnIHdpdGggbmVpdGhlciAnLUEgKC0tYWxsKScgb3IgJy0taWdub3JlLXJlbW92YWwnLFxuIgorIndob3NlIGJlaGF2aW91ciB3aWxsIGNoYW5nZSBpbiBHaXQgMi4wIHdpdGggcmVzcGVjdCB0byBwYXRocyB5b3UgcmVtb3ZlZC5cbiIKKyJQYXRocyBsaWtlICclcycgdGhhdCBhcmVcbiIKKyJyZW1vdmVkIGZyb20geW91ciB3b3JraW5nIHRyZWUgYXJlIGlnbm9yZWQgd2l0aCB0aGlzIHZlcnNpb24gb2YgR2l0LlxuIgorIlxuIgorIiogJ2dpdCBhZGQgLS1pZ25vcmUtcmVtb3ZhbCA8cGF0aHNwZWM+Jywgd2hpY2ggaXMgdGhlIGN1cnJlbnQgZGVmYXVsdCxcbiIKKyIgIGlnbm9yZXMgcGF0aHMgeW91IHJlbW92ZWQgZnJvbSB5b3VyIHdvcmtpbmcgdHJlZS5cbiIKKyJcbiIKKyIqICdnaXQgYWRkIC0tYWxsIDxwYXRoc3BlYz4nIHdpbGwgbGV0IHlvdSBhbHNvIHJlY29yZCB0aGUgcmVtb3ZhbHMuXG4iCisiXG4iCisiUnVuICdnaXQgc3RhdHVzJyB0byBjaGVjayB0aGUgcGF0aHMgeW91IHJlbW92ZWQgZnJvbSB5b3VyIHdvcmtpbmcgdHJlZS5cbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2FkZC5jOjE0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmV4cGVjdGVkIGRpZmYgc3RhdHVzICVjIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NjcgYnVpbHRpbi9jb21taXQuYzoyMjYKKyM6IGJ1aWx0aW4vYWRkLmM6MTQ5IGJ1aWx0aW4vY29tbWl0LmM6MjMzCiBtc2dpZCAidXBkYXRpbmcgZmlsZXMgZmFpbGVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NzcKKyM6IGJ1aWx0aW4vYWRkLmM6MTYzCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlbW92ZSAnJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzoxNzYKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiUGF0aCAnJXMnIGlzIGluIHN1Ym1vZHVsZSAnJS4qcyciCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9hZGQuYzoxOTIKKyM6IGJ1aWx0aW4vYWRkLmM6MjUzCiBtc2dpZCAiVW5zdGFnZWQgY2hhbmdlcyBhZnRlciByZWZyZXNoaW5nIHRoZSBpbmRleDoiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzoxOTUgYnVpbHRpbi9hZGQuYzo0NTYgYnVpbHRpbi9ybS5jOjE4NgorIzogYnVpbHRpbi9hZGQuYzoyNTYgYnVpbHRpbi9hZGQuYzo1NzIgYnVpbHRpbi9ybS5jOjI3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoc3BlYyAnJXMnIGRpZCBub3QgbWF0Y2ggYW55IGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MjA5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIiclcycgaXMgYmV5b25kIGEgc3ltYm9saWMgbGluayIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2FkZC5jOjI3NgorIzogYnVpbHRpbi9hZGQuYzozMzkKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzoyODYKKyM6IGJ1aWx0aW4vYWRkLmM6MzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmcuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MjkwCisjOiBidWlsdGluL2FkZC5jOjM1MwogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSBwYXRjaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjI5NQorIzogYnVpbHRpbi9hZGQuYzozNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHN0YXQgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjI5NworIzogYnVpbHRpbi9hZGQuYzozNjAKIG1zZ2lkICJFbXB0eSBwYXRjaC4gQWJvcnRlZC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzozMDMKKyM6IGJ1aWx0aW4vYWRkLmM6MzY2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBhcHBseSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzEyCisjOiBidWlsdGluL2FkZC5jOjM3NgogbXNnaWQgIlRoZSBmb2xsb3dpbmcgcGF0aHMgYXJlIGlnbm9yZWQgYnkgb25lIG9mIHlvdXIgLmdpdGlnbm9yZSBmaWxlczpcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjM1MgorIzogYnVpbHRpbi9hZGQuYzozOTMgYnVpbHRpbi9jbGVhbi5jOjE2MSBidWlsdGluL2ZldGNoLmM6NzggYnVpbHRpbi9tdi5jOjYzCisjOiBidWlsdGluL3BydW5lLXBhY2tlZC5jOjc2IGJ1aWx0aW4vcHVzaC5jOjQyNSBidWlsdGluL3JlbW90ZS5jOjEyNTMKKyM6IGJ1aWx0aW4vcm0uYzoyMDYKK21zZ2lkICJkcnkgcnVuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk0IGJ1aWx0aW4vYXBwbHkuYzo0NDA5IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1MiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo5NSBidWlsdGluL2ZzY2suYzo2MTMKKyM6IGJ1aWx0aW4vbG9nLmM6MTUxOCBidWlsdGluL212LmM6NjIgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTIKK21zZ2lkICJiZSB2ZXJib3NlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk2Cittc2dpZCAiaW50ZXJhY3RpdmUgcGlja2luZyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2FkZC5jOjM5NyBidWlsdGluL2NoZWNrb3V0LmM6MTA2MyBidWlsdGluL3Jlc2V0LmM6MjU4Cittc2dpZCAic2VsZWN0IGh1bmtzIGludGVyYWN0aXZlbHkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9hZGQuYzozOTgKK21zZ2lkICJlZGl0IGN1cnJlbnQgZGlmZiBhbmQgYXBwbHkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9hZGQuYzozOTkKK21zZ2lkICJhbGxvdyBhZGRpbmcgb3RoZXJ3aXNlIGlnbm9yZWQgZmlsZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9hZGQuYzo0MDAKK21zZ2lkICJ1cGRhdGUgdHJhY2tlZCBmaWxlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2FkZC5jOjQwMQorbXNnaWQgInJlY29yZCBvbmx5IHRoZSBmYWN0IHRoYXQgdGhlIHBhdGggd2lsbCBiZSBhZGRlZCBsYXRlciIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2FkZC5jOjQwMgorbXNnaWQgImFkZCBjaGFuZ2VzIGZyb20gYWxsIHRyYWNrZWQgYW5kIHVudHJhY2tlZCBmaWxlcyIKK21zZ3N0ciAiIgorCisjLiB0YWtlcyBubyBhcmd1bWVudHMKKyM6IGJ1aWx0aW4vYWRkLmM6NDA1Cittc2dpZCAiaWdub3JlIHBhdGhzIHJlbW92ZWQgaW4gdGhlIHdvcmtpbmcgdHJlZSAoc2FtZSBhcyAtLW5vLWFsbCkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9hZGQuYzo0MDcKK21zZ2lkICJkb24ndCBhZGQsIG9ubHkgcmVmcmVzaCB0aGUgaW5kZXgiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9hZGQuYzo0MDgKK21zZ2lkICJqdXN0IHNraXAgZmlsZXMgd2hpY2ggY2Fubm90IGJlIGFkZGVkIGJlY2F1c2Ugb2YgZXJyb3JzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYWRkLmM6NDA5Cittc2dpZCAiY2hlY2sgaWYgLSBldmVuIG1pc3NpbmcgLSBmaWxlcyBhcmUgaWdub3JlZCBpbiBkcnkgcnVuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYWRkLmM6NDMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVzZSAtZiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gYWRkIHRoZW0uXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzozNTMKKyM6IGJ1aWx0aW4vYWRkLmM6NDMyCiBtc2dpZCAibm8gZmlsZXMgYWRkZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzozNTkKKyM6IGJ1aWx0aW4vYWRkLmM6NDM4CiBtc2dpZCAiYWRkaW5nIGZpbGVzIGZhaWxlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjM5MQorIzogYnVpbHRpbi9hZGQuYzo0NzcKIG1zZ2lkICItQSBhbmQgLXUgYXJlIG11dHVhbGx5IGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjM5MworIzogYnVpbHRpbi9hZGQuYzo0OTUKIG1zZ2lkICJPcHRpb24gLS1pZ25vcmUtbWlzc2luZyBjYW4gb25seSBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggLS1kcnktcnVuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDEzCisjOiBidWlsdGluL2FkZC5jOjUyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3RoaW5nIHNwZWNpZmllZCwgbm90aGluZyBhZGRlZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjQxNAorIzogYnVpbHRpbi9hZGQuYzo1MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWF5YmUgeW91IHdhbnRlZCB0byBzYXkgJ2dpdCBhZGQgLic/XG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzo0MjAgYnVpbHRpbi9jbGVhbi5jOjk1IGJ1aWx0aW4vY29tbWl0LmM6Mjg2IGJ1aWx0aW4vbXYuYzo4MgotIzogYnVpbHRpbi9ybS5jOjE2MgorIzogYnVpbHRpbi9hZGQuYzo1MzIgYnVpbHRpbi9jaGVjay1pZ25vcmUuYzo2NiBidWlsdGluL2NsZWFuLmM6MjA0CisjOiBidWlsdGluL2NvbW1pdC5jOjI5MyBidWlsdGluL212LmM6ODIgYnVpbHRpbi9ybS5jOjIzNQogbXNnaWQgImluZGV4IGZpbGUgY29ycnVwdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjQ3NiBidWlsdGluL2FwcGx5LmM6NDEwOCBidWlsdGluL212LmM6MjI5IGJ1aWx0aW4vcm0uYzoyNjAKKyM6IGJ1aWx0aW4vYWRkLmM6NjA0IGJ1aWx0aW4vYXBwbHkuYzo0NTA1IGJ1aWx0aW4vbXYuYzoyMjkgYnVpbHRpbi9ybS5jOjM3MAogbXNnaWQgIlVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NTMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo1NwogbXNnaWQgImdpdCBhcHBseSBbb3B0aW9uc10gWzxwYXRjaD4uLi5dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxMDYKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxMTAKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIHdoaXRlc3BhY2Ugb3B0aW9uICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjEyMQorIzogYnVpbHRpbi9hcHBseS5jOjEyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlY29nbml6ZWQgd2hpdGVzcGFjZSBpZ25vcmUgb3B0aW9uICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjgxNQorIzogYnVpbHRpbi9hcHBseS5jOjgyMwogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgcHJlcGFyZSB0aW1lc3RhbXAgcmVnZXhwICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo4MjQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo4MzIKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVnZXhlYyByZXR1cm5lZCAlZCBmb3IgaW5wdXQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo5MDUKKyM6IGJ1aWx0aW4vYXBwbHkuYzo5MTMKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGZpbmQgZmlsZW5hbWUgaW4gcGF0Y2ggYXQgbGluZSAlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6OTM3CisjOiBidWlsdGluL2FwcGx5LmM6OTQ1CiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCBhcHBseTogYmFkIGdpdC1kaWZmIC0gZXhwZWN0ZWQgL2Rldi9udWxsLCBnb3QgJXMgb24gbGluZSAlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6OTQxCisjOiBidWlsdGluL2FwcGx5LmM6OTQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCBhcHBseTogYmFkIGdpdC1kaWZmIC0gaW5jb25zaXN0ZW50IG5ldyBmaWxlbmFtZSBvbiBsaW5lICVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo5NDIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo5NTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0IGFwcGx5OiBiYWQgZ2l0LWRpZmYgLSBpbmNvbnNpc3RlbnQgb2xkIGZpbGVuYW1lIG9uIGxpbmUgJWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjk0OQorIzogYnVpbHRpbi9hcHBseS5jOjk1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgYXBwbHk6IGJhZCBnaXQtZGlmZiAtIGV4cGVjdGVkIC9kZXYvbnVsbCBvbiBsaW5lICVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxMzk0CisjOiBidWlsdGluL2FwcGx5LmM6MTQyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWNvdW50OiB1bmV4cGVjdGVkIGxpbmU6ICUuKnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE0NTEKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNDc5CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGNoIGZyYWdtZW50IHdpdGhvdXQgaGVhZGVyIGF0IGxpbmUgJWQ6ICUuKnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE0NjgKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNDk2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJnaXQgZGlmZiBoZWFkZXIgbGFja3MgZmlsZW5hbWUgaW5mb3JtYXRpb24gd2hlbiByZW1vdmluZyAlZCBsZWFkaW5nIHBhdGhuYW1lICIKQEAgLTEwNDEsMzk1ICsxODEwLDM5NiBAQAogbXNnc3RyWzBdICIiCiBtc2dzdHJbMV0gIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE2MjgKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU2CiBtc2dpZCAibmV3IGZpbGUgZGVwZW5kcyBvbiBvbGQgY29udGVudHMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE2MzAKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU4CiBtc2dpZCAiZGVsZXRlZCBmaWxlIHN0aWxsIGhhcyBjb250ZW50cyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTY1NgorIzogYnVpbHRpbi9hcHBseS5jOjE2ODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29ycnVwdCBwYXRjaCBhdCBsaW5lICVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNjkyCisjOiBidWlsdGluL2FwcGx5LmM6MTcyMAogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgZmlsZSAlcyBkZXBlbmRzIG9uIG9sZCBjb250ZW50cyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTY5NAorIzogYnVpbHRpbi9hcHBseS5jOjE3MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZGVsZXRlZCBmaWxlICVzIHN0aWxsIGhhcyBjb250ZW50cyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTY5NworIzogYnVpbHRpbi9hcHBseS5jOjE3MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiKiogd2FybmluZzogZmlsZSAlcyBiZWNvbWVzIGVtcHR5IGJ1dCBpcyBub3QgZGVsZXRlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTg0MworIzogYnVpbHRpbi9hcHBseS5jOjE4NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29ycnVwdCBiaW5hcnkgcGF0Y2ggYXQgbGluZSAlZDogJS4qcyIKIG1zZ3N0ciAiIgogCiAjLiB0aGVyZSBoYXMgdG8gYmUgb25lIGh1bmsgKGZvcndhcmQgaHVuaykKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxODcyCisjOiBidWlsdGluL2FwcGx5LmM6MTkwMAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlY29nbml6ZWQgYmluYXJ5IHBhdGNoIGF0IGxpbmUgJWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE5NTgKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxOTg2CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGNoIHdpdGggb25seSBnYXJiYWdlIGF0IGxpbmUgJWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjIwNDgKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyMDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byByZWFkIHN5bWxpbmsgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjIwNTIKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyMDgwCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBvcGVuIG9yIHJlYWQgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjIxMjMKLW1zZ2lkICJvb3BzIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vYXBwbHkuYzoyNjQ1CisjOiBidWlsdGluL2FwcGx5LmM6MjY4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIHN0YXJ0IG9mIGxpbmU6ICclYyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI3NjMKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkh1bmsgIyVkIHN1Y2NlZWRlZCBhdCAlZCAob2Zmc2V0ICVkIGxpbmUpLiIKIG1zZ2lkX3BsdXJhbCAiSHVuayAjJWQgc3VjY2VlZGVkIGF0ICVkIChvZmZzZXQgJWQgbGluZXMpLiIKIG1zZ3N0clswXSAiIgogbXNnc3RyWzFdICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyNzc1CisjOiBidWlsdGluL2FwcGx5LmM6MjgxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb250ZXh0IHJlZHVjZWQgdG8gKCVsZC8lbGQpIHRvIGFwcGx5IGZyYWdtZW50IGF0ICVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyNzgxCisjOiBidWlsdGluL2FwcGx5LmM6MjgyNAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAid2hpbGUgc2VhcmNoaW5nIGZvcjpcbiIKICIlLipzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyODAwCisjOiBidWlsdGluL2FwcGx5LmM6Mjg0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJtaXNzaW5nIGJpbmFyeSBwYXRjaCBkYXRhIGZvciAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyOTAzCisjOiBidWlsdGluL2FwcGx5LmM6Mjk0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJiaW5hcnkgcGF0Y2ggZG9lcyBub3QgYXBwbHkgdG8gJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjkwOQorIzogYnVpbHRpbi9hcHBseS5jOjI5NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmluYXJ5IHBhdGNoIHRvICclcycgY3JlYXRlcyBpbmNvcnJlY3QgcmVzdWx0IChleHBlY3RpbmcgJXMsIGdvdCAlcykiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI5MzAKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyOTczCiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGNoIGZhaWxlZDogJXM6JWxkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMDQ1CisjOiBidWlsdGluL2FwcGx5LmM6MzA5NQogIywgYy1mb3JtYXQKLW1zZ2lkICJwYXRjaCAlcyBoYXMgYmVlbiByZW5hbWVkL2RlbGV0ZWQiCittc2dpZCAiY2Fubm90IGNoZWNrb3V0ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMDUyIGJ1aWx0aW4vYXBwbHkuYzozMDY5CisjOiBidWlsdGluL2FwcGx5LmM6MzE0MCBidWlsdGluL2FwcGx5LmM6MzE0OSBidWlsdGluL2FwcGx5LmM6MzE5MwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWFkIG9mICVzIGZhaWxlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzA4NAotbXNnaWQgInJlbW92YWwgcGF0Y2ggbGVhdmVzIGZpbGUgY29udGVudHMiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9hcHBseS5jOjMxMDUKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMTczIGJ1aWx0aW4vYXBwbHkuYzozMzk1CiAjLCBjLWZvcm1hdAotbXNnaWQgIiVzOiBhbHJlYWR5IGV4aXN0cyBpbiB3b3JraW5nIGRpcmVjdG9yeSIKK21zZ2lkICJwYXRoICVzIGhhcyBiZWVuIHJlbmFtZWQvZGVsZXRlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzE0MwotIywgYy1mb3JtYXQKLW1zZ2lkICIlczogaGFzIGJlZW4gZGVsZXRlZC9yZW5hbWVkIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vYXBwbHkuYzozMTQ4IGJ1aWx0aW4vYXBwbHkuYzozMTc5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIiVzOiAlcyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2FwcGx5LmM6MzE1OQorIzogYnVpbHRpbi9hcHBseS5jOjMyNTQgYnVpbHRpbi9hcHBseS5jOjM0MDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMTczCisjOiBidWlsdGluL2FwcGx5LmM6MzI1OCBidWlsdGluL2FwcGx5LmM6MzQwMSBidWlsdGluL2FwcGx5LmM6MzQyMworIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9hcHBseS5jOjMyNjMgYnVpbHRpbi9hcHBseS5jOjM0MTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGRvZXMgbm90IG1hdGNoIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMTkwCisjOiBidWlsdGluL2FwcGx5LmM6MzM2NQorbXNnaWQgInJlbW92YWwgcGF0Y2ggbGVhdmVzIGZpbGUgY29udGVudHMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9hcHBseS5jOjM0MzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHdyb25nIHR5cGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMxOTIKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNDM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGhhcyB0eXBlICVvLCBleHBlY3RlZCAlbyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzI0NworIzogYnVpbHRpbi9hcHBseS5jOjM1MzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGFscmVhZHkgZXhpc3RzIGluIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMjY3CisjOiBidWlsdGluL2FwcGx5LmM6MzU0MAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogYWxyZWFkeSBleGlzdHMgaW4gd29ya2luZyBkaXJlY3RvcnkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9hcHBseS5jOjM1NjAKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IG1vZGUgKCVvKSBvZiAlcyBkb2VzIG5vdCBtYXRjaCBvbGQgbW9kZSAoJW8pIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMjcyCisjOiBidWlsdGluL2FwcGx5LmM6MzU2NQogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgbW9kZSAoJW8pIG9mICVzIGRvZXMgbm90IG1hdGNoIG9sZCBtb2RlICglbykgb2YgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyODAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTczCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBwYXRjaCBkb2VzIG5vdCBhcHBseSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzI5MworIzogYnVpbHRpbi9hcHBseS5jOjM1ODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2hlY2tpbmcgcGF0Y2ggJXMuLi4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMzNDggYnVpbHRpbi9jaGVja291dC5jOjIxMiBidWlsdGluL3Jlc2V0LmM6MTU4CisjOiBidWlsdGluL2FwcGx5LmM6MzY3OSBidWlsdGluL2NoZWNrb3V0LmM6MjE2IGJ1aWx0aW4vcmVzZXQuYzoxMjQKICMsIGMtZm9ybWF0CiBtc2dpZCAibWFrZV9jYWNoZV9lbnRyeSBmYWlsZWQgZm9yIHBhdGggJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzQ5MQorIzogYnVpbHRpbi9hcHBseS5jOjM4MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHJlbW92ZSAlcyBmcm9tIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTE4CisjOiBidWlsdGluL2FwcGx5LmM6Mzg1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3JydXB0IHBhdGNoIGZvciBzdWJwcm9qZWN0ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTIyCisjOiBidWlsdGluL2FwcGx5LmM6Mzg1NAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gc3RhdCBuZXdseSBjcmVhdGVkIGZpbGUgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzUyNworIzogYnVpbHRpbi9hcHBseS5jOjM4NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGNyZWF0ZSBiYWNraW5nIHN0b3JlIGZvciBuZXdseSBjcmVhdGVkIGZpbGUgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1MzAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODYyIGJ1aWx0aW4vYXBwbHkuYzozOTcwCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBhZGQgY2FjaGUgZW50cnkgZm9yICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTYzCisjOiBidWlsdGluL2FwcGx5LmM6Mzg5NQogIywgYy1mb3JtYXQKIG1zZ2lkICJjbG9zaW5nIGZpbGUgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzYxMgorIzogYnVpbHRpbi9hcHBseS5jOjM5NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIGZpbGUgJyVzJyBtb2RlICVvIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNjY4CisjOiBidWlsdGluL2FwcGx5LmM6NDAzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJBcHBsaWVkIHBhdGNoICVzIGNsZWFubHkuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNjc2CisjOiBidWlsdGluL2FwcGx5LmM6NDAzOQogbXNnaWQgImludGVybmFsIGVycm9yIgogbXNnc3RyICIiCiAKICMuIFNheSB0aGlzIGV2ZW4gd2l0aG91dCAtLXZlcmJvc2UKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNjc5CisjOiBidWlsdGluL2FwcGx5LmM6NDA0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJBcHBseWluZyBwYXRjaCAlJXMgd2l0aCAlZCByZWplY3QuLi4iCiBtc2dpZF9wbHVyYWwgIkFwcGx5aW5nIHBhdGNoICUlcyB3aXRoICVkIHJlamVjdHMuLi4iCiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzY4OQorIzogYnVpbHRpbi9hcHBseS5jOjQwNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAidHJ1bmNhdGluZyAucmVqIGZpbGVuYW1lIHRvICUuKnMucmVqIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNzEwCisjOiBidWlsdGluL2FwcGx5LmM6NDA3MwogIywgYy1mb3JtYXQKIG1zZ2lkICJIdW5rICMlZCBhcHBsaWVkIGNsZWFubHkuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNzEzCisjOiBidWlsdGluL2FwcGx5LmM6NDA3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJSZWplY3RlZCBodW5rICMlZC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4NDQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MjI2CiBtc2dpZCAidW5yZWNvZ25pemVkIGlucHV0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozODU1CisjOiBidWlsdGluL2FwcGx5LmM6NDIzNwogbXNnaWQgInVuYWJsZSB0byByZWFkIGluZGV4IGZpbGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5NzAgYnVpbHRpbi9hcHBseS5jOjM5NzMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU2IGJ1aWx0aW4vYXBwbHkuYzo0MzU5IGJ1aWx0aW4vY2xvbmUuYzo5MgorIzogYnVpbHRpbi9mZXRjaC5jOjYzCiBtc2dpZCAicGF0aCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk3MQorIzogYnVpbHRpbi9hcHBseS5jOjQzNTcKIG1zZ2lkICJkb24ndCBhcHBseSBjaGFuZ2VzIG1hdGNoaW5nIHRoZSBnaXZlbiBwYXRoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTc0CisjOiBidWlsdGluL2FwcGx5LmM6NDM2MAogbXNnaWQgImFwcGx5IGNoYW5nZXMgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhdGgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5NzYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYyCiBtc2dpZCAibnVtIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTc3CisjOiBidWlsdGluL2FwcGx5LmM6NDM2MwogbXNnaWQgInJlbW92ZSA8bnVtPiBsZWFkaW5nIHNsYXNoZXMgZnJvbSB0cmFkaXRpb25hbCBkaWZmIHBhdGhzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTgwCisjOiBidWlsdGluL2FwcGx5LmM6NDM2NgogbXNnaWQgImlnbm9yZSBhZGRpdGlvbnMgbWFkZSBieSB0aGUgcGF0Y2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5ODIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzY4CiBtc2dpZCAiaW5zdGVhZCBvZiBhcHBseWluZyB0aGUgcGF0Y2gsIG91dHB1dCBkaWZmc3RhdCBmb3IgdGhlIGlucHV0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTg2Ci1tc2dpZCAic2hvd3MgbnVtYmVyIG9mIGFkZGVkIGFuZCBkZWxldGVkIGxpbmVzIGluIGRlY2ltYWwgbm90YXRpb24iCisjOiBidWlsdGluL2FwcGx5LmM6NDM3MgorbXNnaWQgInNob3cgbnVtYmVyIG9mIGFkZGVkIGFuZCBkZWxldGVkIGxpbmVzIGluIGRlY2ltYWwgbm90YXRpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5ODgKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzc0CiBtc2dpZCAiaW5zdGVhZCBvZiBhcHBseWluZyB0aGUgcGF0Y2gsIG91dHB1dCBhIHN1bW1hcnkgZm9yIHRoZSBpbnB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk5MAorIzogYnVpbHRpbi9hcHBseS5jOjQzNzYKIG1zZ2lkICJpbnN0ZWFkIG9mIGFwcGx5aW5nIHRoZSBwYXRjaCwgc2VlIGlmIHRoZSBwYXRjaCBpcyBhcHBsaWNhYmxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTkyCisjOiBidWlsdGluL2FwcGx5LmM6NDM3OAogbXNnaWQgIm1ha2Ugc3VyZSB0aGUgcGF0Y2ggaXMgYXBwbGljYWJsZSB0byB0aGUgY3VycmVudCBpbmRleCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk5NAorIzogYnVpbHRpbi9hcHBseS5jOjQzODAKIG1zZ2lkICJhcHBseSBhIHBhdGNoIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHdvcmtpbmcgdHJlZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk5NgorIzogYnVpbHRpbi9hcHBseS5jOjQzODIKIG1zZ2lkICJhbHNvIGFwcGx5IHRoZSBwYXRjaCAodXNlIHdpdGggLS1zdGF0Ly0tc3VtbWFyeS8tLWNoZWNrKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk5OAorIzogYnVpbHRpbi9hcHBseS5jOjQzODQKK21zZ2lkICJhdHRlbXB0IHRocmVlLXdheSBtZXJnZSBpZiBhIHBhdGNoIGRvZXMgbm90IGFwcGx5IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg2CiBtc2dpZCAiYnVpbGQgYSB0ZW1wb3JhcnkgaW5kZXggYmFzZWQgb24gZW1iZWRkZWQgaW5kZXggaW5mb3JtYXRpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMDAKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg4IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxOTcgYnVpbHRpbi9scy1maWxlcy5jOjQ1NgogbXNnaWQgInBhdGhzIGFyZSBzZXBhcmF0ZWQgd2l0aCBOVUwgY2hhcmFjdGVyIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDAzCisjOiBidWlsdGluL2FwcGx5LmM6NDM5MQogbXNnaWQgImVuc3VyZSBhdCBsZWFzdCA8bj4gbGluZXMgb2YgY29udGV4dCBtYXRjaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAwNAorIzogYnVpbHRpbi9hcHBseS5jOjQzOTIKIG1zZ2lkICJhY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMDUKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkzCiBtc2dpZCAiZGV0ZWN0IG5ldyBvciBtb2RpZmllZCBsaW5lcyB0aGF0IGhhdmUgd2hpdGVzcGFjZSBlcnJvcnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMDggYnVpbHRpbi9hcHBseS5jOjQwMTEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzk2IGJ1aWx0aW4vYXBwbHkuYzo0Mzk5CiBtc2dpZCAiaWdub3JlIGNoYW5nZXMgaW4gd2hpdGVzcGFjZSB3aGVuIGZpbmRpbmcgY29udGV4dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAxNAorIzogYnVpbHRpbi9hcHBseS5jOjQ0MDIKIG1zZ2lkICJhcHBseSB0aGUgcGF0Y2ggaW4gcmV2ZXJzZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAxNgorIzogYnVpbHRpbi9hcHBseS5jOjQ0MDQKIG1zZ2lkICJkb24ndCBleHBlY3QgYXQgbGVhc3Qgb25lIGxpbmUgb2YgY29udGV4dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAxOAorIzogYnVpbHRpbi9hcHBseS5jOjQ0MDYKIG1zZ2lkICJsZWF2ZSB0aGUgcmVqZWN0ZWQgaHVua3MgaW4gY29ycmVzcG9uZGluZyAqLnJlaiBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAyMAorIzogYnVpbHRpbi9hcHBseS5jOjQ0MDgKIG1zZ2lkICJhbGxvdyBvdmVybGFwcGluZyBodW5rcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAyMQotbXNnaWQgImJlIHZlcmJvc2UiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9hcHBseS5jOjQwMjMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDExCiBtc2dpZCAidG9sZXJhdGUgaW5jb3JyZWN0bHkgZGV0ZWN0ZWQgbWlzc2luZyBuZXctbGluZSBhdCB0aGUgZW5kIG9mIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMjYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDE0CiBtc2dpZCAiZG8gbm90IHRydXN0IHRoZSBsaW5lIGNvdW50cyBpbiB0aGUgaHVuayBoZWFkZXJzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDI4CisjOiBidWlsdGluL2FwcGx5LmM6NDQxNgogbXNnaWQgInJvb3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMjkKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDE3CiBtc2dpZCAicHJlcGVuZCA8cm9vdD4gdG8gYWxsIGZpbGVuYW1lcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDA1MAorIzogYnVpbHRpbi9hcHBseS5jOjQ0MzkKK21zZ2lkICItLTN3YXkgb3V0c2lkZSBhIHJlcG9zaXRvcnkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9hcHBseS5jOjQ0NDcKIG1zZ2lkICItLWluZGV4IG91dHNpZGUgYSByZXBvc2l0b3J5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDUzCisjOiBidWlsdGluL2FwcGx5LmM6NDQ1MAogbXNnaWQgIi0tY2FjaGVkIG91dHNpZGUgYSByZXBvc2l0b3J5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDY5CisjOiBidWlsdGluL2FwcGx5LmM6NDQ2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW4ndCBvcGVuIHBhdGNoICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwODMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDgwCiAjLCBjLWZvcm1hdAogbXNnaWQgInNxdWVsY2hlZCAlZCB3aGl0ZXNwYWNlIGVycm9yIgogbXNnaWRfcGx1cmFsICJzcXVlbGNoZWQgJWQgd2hpdGVzcGFjZSBlcnJvcnMiCiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDA4OSBidWlsdGluL2FwcGx5LmM6NDA5OQorIzogYnVpbHRpbi9hcHBseS5jOjQ0ODYgYnVpbHRpbi9hcHBseS5jOjQ0OTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJWQgbGluZSBhZGRzIHdoaXRlc3BhY2UgZXJyb3JzLiIKIG1zZ2lkX3BsdXJhbCAiJWQgbGluZXMgYWRkIHdoaXRlc3BhY2UgZXJyb3JzLiIKQEAgLTE0NTMsMTkzICsyMjIzLDUyMyBAQAogbXNnaWQgImdpdCBhcmNoaXZlOiBleHBlY3RlZCBBQ0svTkFLLCBnb3QgRU9GIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjYzCisjOiBidWlsdGluL2FyY2hpdmUuYzo2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgYXJjaGl2ZTogTkFDSyAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FyY2hpdmUuYzo2NQorIzogYnVpbHRpbi9hcmNoaXZlLmM6NjMKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVtb3RlIGVycm9yOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FyY2hpdmUuYzo2NgorIzogYnVpbHRpbi9hcmNoaXZlLmM6NjQKIG1zZ2lkICJnaXQgYXJjaGl2ZTogcHJvdG9jb2wgZXJyb3IiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcmNoaXZlLmM6NzEKKyM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjY4CiBtc2dpZCAiZ2l0IGFyY2hpdmU6IGV4cGVjdGVkIGEgZmx1c2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoxNDQKKyM6IGJ1aWx0aW4vYmlzZWN0LS1oZWxwZXIuYzo3Cittc2dpZCAiZ2l0IGJpc2VjdC0taGVscGVyIC0tbmV4dC1hbGwgWy0tbm8tY2hlY2tvdXRdIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYmlzZWN0LS1oZWxwZXIuYzoxNworbXNnaWQgInBlcmZvcm0gJ2dpdCBiaXNlY3QgbmV4dCciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9iaXNlY3QtLWhlbHBlci5jOjE5Cittc2dpZCAidXBkYXRlIEJJU0VDVF9IRUFEIGluc3RlYWQgb2YgY2hlY2tpbmcgb3V0IHRoZSBjdXJyZW50IGNvbW1pdCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjUKK21zZ2lkICJnaXQgYmxhbWUgW29wdGlvbnNdIFtyZXYtb3B0c10gW3Jldl0gWy0tXSBmaWxlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzozMAorbXNnaWQgIltyZXYtb3B0c10gYXJlIGRvY3VtZW50ZWQgaW4gZ2l0LXJldi1saXN0KDEpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU1Cittc2dpZCAiU2hvdyBibGFtZSBlbnRyaWVzIGFzIHdlIGZpbmQgdGhlbSwgaW5jcmVtZW50YWxseSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM1NgorbXNnaWQgIlNob3cgYmxhbmsgU0hBLTEgZm9yIGJvdW5kYXJ5IGNvbW1pdHMgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTcKK21zZ2lkICJEbyBub3QgdHJlYXQgcm9vdCBjb21taXRzIGFzIGJvdW5kYXJpZXMgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTgKK21zZ2lkICJTaG93IHdvcmsgY29zdCBzdGF0aXN0aWNzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU5Cittc2dpZCAiU2hvdyBvdXRwdXQgc2NvcmUgZm9yIGJsYW1lIGVudHJpZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjAKK21zZ2lkICJTaG93IG9yaWdpbmFsIGZpbGVuYW1lIChEZWZhdWx0OiBhdXRvKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2MQorbXNnaWQgIlNob3cgb3JpZ2luYWwgbGluZW51bWJlciAoRGVmYXVsdDogb2ZmKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2MgorbXNnaWQgIlNob3cgaW4gYSBmb3JtYXQgZGVzaWduZWQgZm9yIG1hY2hpbmUgY29uc3VtcHRpb24iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjMKK21zZ2lkICJTaG93IHBvcmNlbGFpbiBmb3JtYXQgd2l0aCBwZXItbGluZSBjb21taXQgaW5mb3JtYXRpb24iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjQKK21zZ2lkICJVc2UgdGhlIHNhbWUgb3V0cHV0IG1vZGUgYXMgZ2l0LWFubm90YXRlIChEZWZhdWx0OiBvZmYpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY1Cittc2dpZCAiU2hvdyByYXcgdGltZXN0YW1wIChEZWZhdWx0OiBvZmYpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY2Cittc2dpZCAiU2hvdyBsb25nIGNvbW1pdCBTSEExIChEZWZhdWx0OiBvZmYpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY3Cittc2dpZCAiU3VwcHJlc3MgYXV0aG9yIG5hbWUgYW5kIHRpbWVzdGFtcCAoRGVmYXVsdDogb2ZmKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2OAorbXNnaWQgIlNob3cgYXV0aG9yIGVtYWlsIGluc3RlYWQgb2YgbmFtZSAoRGVmYXVsdDogb2ZmKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2OQorbXNnaWQgIklnbm9yZSB3aGl0ZXNwYWNlIGRpZmZlcmVuY2VzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcwCittc2dpZCAiU3BlbmQgZXh0cmEgY3ljbGVzIHRvIGZpbmQgYmV0dGVyIG1hdGNoIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcxCittc2dpZCAiVXNlIHJldmlzaW9ucyBmcm9tIDxmaWxlPiBpbnN0ZWFkIG9mIGNhbGxpbmcgZ2l0LXJldi1saXN0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcyCittc2dpZCAiVXNlIDxmaWxlPidzIGNvbnRlbnRzIGFzIHRoZSBmaW5hbCBpbWFnZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MyBidWlsdGluL2JsYW1lLmM6MjM3NAorbXNnaWQgInNjb3JlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzczCittc2dpZCAiRmluZCBsaW5lIGNvcGllcyB3aXRoaW4gYW5kIGFjcm9zcyBmaWxlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3NAorbXNnaWQgIkZpbmQgbGluZSBtb3ZlbWVudHMgd2l0aGluIGFuZCBhY3Jvc3MgZmlsZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNzUKK21zZ2lkICJuLG0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNzUKK21zZ2lkICJQcm9jZXNzIG9ubHkgbGluZSByYW5nZSBuLG0sIGNvdW50aW5nIGZyb20gMSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI0Cittc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1yIHwgLWFdIFstLW1lcmdlZCB8IC0tbm8tbWVyZ2VkXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI1Cittc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1sXSBbLWZdIDxicmFuY2huYW1lPiBbPHN0YXJ0LXBvaW50Pl0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzoyNgorbXNnaWQgImdpdCBicmFuY2ggW29wdGlvbnNdIFstcl0gKC1kIHwgLUQpIDxicmFuY2huYW1lPi4uLiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI3Cittc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gKC1tIHwgLU0pIFs8b2xkYnJhbmNoPl0gPG5ld2JyYW5jaD4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzoxNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogImRlbGV0aW5nIGJyYW5jaCAnJXMnIHRoYXQgaGFzIGJlZW4gbWVyZ2VkIHRvXG4iCiAiICAgICAgICAgJyVzJywgYnV0IG5vdCB5ZXQgbWVyZ2VkIHRvIEhFQUQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MTQ4CisjOiBidWlsdGluL2JyYW5jaC5jOjE1NAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibm90IGRlbGV0aW5nIGJyYW5jaCAnJXMnIHRoYXQgaXMgbm90IHlldCBtZXJnZWQgdG9cbiIKICIgICAgICAgICAnJXMnLCBldmVuIHRob3VnaCBpdCBpcyBtZXJnZWQgdG8gSEVBRC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoxODAKLW1zZ2lkICJjYW5ub3QgdXNlIC1hIHdpdGggLWQiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9icmFuY2guYzoxODYKLW1zZ2lkICJDb3VsZG4ndCBsb29rIHVwIGNvbW1pdCBvYmplY3QgZm9yIEhFQUQiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9icmFuY2guYzoxOTEKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiQ2Fubm90IGRlbGV0ZSB0aGUgYnJhbmNoICclcycgd2hpY2ggeW91IGFyZSBjdXJyZW50bHkgb24uIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjAyCi0jLCBjLWZvcm1hdAotbXNnaWQgInJlbW90ZSBicmFuY2ggJyVzJyBub3QgZm91bmQuIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjAzCi0jLCBjLWZvcm1hdAotbXNnaWQgImJyYW5jaCAnJXMnIG5vdCBmb3VuZC4iCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9icmFuY2guYzoyMTAKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTY4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkbid0IGxvb2sgdXAgY29tbWl0IG9iamVjdCBmb3IgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIxNgorIzogYnVpbHRpbi9icmFuY2guYzoxNzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSBicmFuY2ggJyVzJyBpcyBub3QgZnVsbHkgbWVyZ2VkLlxuIgogIklmIHlvdSBhcmUgc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgaXQsIHJ1biAnZ2l0IGJyYW5jaCAtRCAlcycuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjI1CisjOiBidWlsdGluL2JyYW5jaC5jOjE4NQorbXNnaWQgIlVwZGF0ZSBvZiBjb25maWctZmlsZSBmYWlsZWQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzoyMTMKK21zZ2lkICJjYW5ub3QgdXNlIC1hIHdpdGggLWQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzoyMTkKK21zZ2lkICJDb3VsZG4ndCBsb29rIHVwIGNvbW1pdCBvYmplY3QgZm9yIEhFQUQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzoyMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGRlbGV0ZSB0aGUgYnJhbmNoICclcycgd2hpY2ggeW91IGFyZSBjdXJyZW50bHkgb24uIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjQwCisjLCBjLWZvcm1hdAorbXNnaWQgInJlbW90ZSBicmFuY2ggJyVzJyBub3QgZm91bmQuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjQxCisjLCBjLWZvcm1hdAorbXNnaWQgImJyYW5jaCAnJXMnIG5vdCBmb3VuZC4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzoyNTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3IgZGVsZXRpbmcgcmVtb3RlIGJyYW5jaCAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjI2CisjOiBidWlsdGluL2JyYW5jaC5jOjI1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvciBkZWxldGluZyBicmFuY2ggJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIzMworIzogYnVpbHRpbi9icmFuY2guYzoyNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiRGVsZXRlZCByZW1vdGUgYnJhbmNoICVzICh3YXMgJXMpLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjM0CisjOiBidWlsdGluL2JyYW5jaC5jOjI2NAogIywgYy1mb3JtYXQKIG1zZ2lkICJEZWxldGVkIGJyYW5jaCAlcyAod2FzICVzKS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIzOQotbXNnaWQgIlVwZGF0ZSBvZiBjb25maWctZmlsZSBmYWlsZWQiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9icmFuY2guYzozMzcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MzY2CiAjLCBjLWZvcm1hdAogbXNnaWQgImJyYW5jaCAnJXMnIGRvZXMgbm90IHBvaW50IGF0IGEgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NDA5CisjOiBidWlsdGluL2JyYW5jaC5jOjQ1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJbJXM6IGJlaGluZCAlZF0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0MTEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIltiZWhpbmQgJWRdIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NDE1CisjOiBidWlsdGluL2JyYW5jaC5jOjQ1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJbJXM6IGFoZWFkICVkXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQxNworIzogYnVpbHRpbi9icmFuY2guYzo0NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiW2FoZWFkICVkXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQyMAorIzogYnVpbHRpbi9icmFuY2guYzo0NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiWyVzOiBhaGVhZCAlZCwgYmVoaW5kICVkXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQyMworIzogYnVpbHRpbi9icmFuY2guYzo0NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiW2FoZWFkICVkLCBiZWhpbmQgJWRdIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NTM1CisjOiBidWlsdGluL2JyYW5jaC5jOjQ5MAorbXNnaWQgIiAqKioqIGludmFsaWQgcmVmICoqKioiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo1ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiKG5vIGJyYW5jaCwgcmViYXNpbmcgJXMpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NTg1CisjLCBjLWZvcm1hdAorbXNnaWQgIihubyBicmFuY2gsIGJpc2VjdCBzdGFydGVkIG9uICVzKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjU4OAorIywgYy1mb3JtYXQKK21zZ2lkICIoZGV0YWNoZWQgZnJvbSAlcykiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo1OTEKIG1zZ2lkICIobm8gYnJhbmNoKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjYwMAorIzogYnVpbHRpbi9icmFuY2guYzo2MzcKKyMsIGMtZm9ybWF0Cittc2dpZCAib2JqZWN0ICclcycgZG9lcyBub3QgcG9pbnQgdG8gYSBjb21taXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo2NjkKIG1zZ2lkICJzb21lIHJlZnMgY291bGQgbm90IGJlIHJlYWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2MTMKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NjgyCiBtc2dpZCAiY2Fubm90IHJlbmFtZSB0aGUgY3VycmVudCBicmFuY2ggd2hpbGUgbm90IG9uIGFueS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2MjMKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiSW52YWxpZCBicmFuY2ggbmFtZTogJyVzJyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2JyYW5jaC5jOjYzOAotbXNnaWQgIkJyYW5jaCByZW5hbWUgZmFpbGVkIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjQyCi0jLCBjLWZvcm1hdAotbXNnaWQgIlJlbmFtZWQgYSBtaXNuYW1lZCBicmFuY2ggJyVzJyBhd2F5IgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjQ2Ci0jLCBjLWZvcm1hdAotbXNnaWQgIkJyYW5jaCByZW5hbWVkIHRvICVzLCBidXQgSEVBRCBpcyBub3QgdXBkYXRlZCEiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9icmFuY2guYzo2NTMKLW1zZ2lkICJCcmFuY2ggaXMgcmVuYW1lZCwgYnV0IHVwZGF0ZSBvZiBjb25maWctZmlsZSBmYWlsZWQiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9icmFuY2guYzo2NjgKLSMsIGMtZm9ybWF0Ci1tc2dpZCAibWFsZm9ybWVkIG9iamVjdCBuYW1lICVzIgotbXNnc3RyICIiCi0KICM6IGJ1aWx0aW4vYnJhbmNoLmM6NjkyCiAjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgYnJhbmNoIG5hbWU6ICclcyciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo3MDcKK21zZ2lkICJCcmFuY2ggcmVuYW1lIGZhaWxlZCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjcxMQorIywgYy1mb3JtYXQKK21zZ2lkICJSZW5hbWVkIGEgbWlzbmFtZWQgYnJhbmNoICclcycgYXdheSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjcxNQorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggcmVuYW1lZCB0byAlcywgYnV0IEhFQUQgaXMgbm90IHVwZGF0ZWQhIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzIyCittc2dpZCAiQnJhbmNoIGlzIHJlbmFtZWQsIGJ1dCB1cGRhdGUgb2YgY29uZmlnLWZpbGUgZmFpbGVkIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzM3CisjLCBjLWZvcm1hdAorbXNnaWQgIm1hbGZvcm1lZCBvYmplY3QgbmFtZSAlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjc2MQorIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgd3JpdGUgYnJhbmNoIGRlc2NyaXB0aW9uIHRlbXBsYXRlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc4MworIzogYnVpbHRpbi9icmFuY2guYzo3OTEKK21zZ2lkICJHZW5lcmljIG9wdGlvbnMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo3OTMKK21zZ2lkICJzaG93IGhhc2ggYW5kIHN1YmplY3QsIGdpdmUgdHdpY2UgZm9yIHVwc3RyZWFtIGJyYW5jaCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjc5NAorbXNnaWQgInN1cHByZXNzIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo3OTUKK21zZ2lkICJzZXQgdXAgdHJhY2tpbmcgbW9kZSAoc2VlIGdpdC1wdWxsKDEpKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjc5NworbXNnaWQgImNoYW5nZSB1cHN0cmVhbSBpbmZvIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODAxCittc2dpZCAidXNlIGNvbG9yZWQgb3V0cHV0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODAyCittc2dpZCAiYWN0IG9uIHJlbW90ZS10cmFja2luZyBicmFuY2hlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgwNSBidWlsdGluL2JyYW5jaC5jOjgxMSBidWlsdGluL2JyYW5jaC5jOjgzMgorIzogYnVpbHRpbi9icmFuY2guYzo4MzggYnVpbHRpbi9jb21taXQuYzoxMzY4IGJ1aWx0aW4vY29tbWl0LmM6MTM2OQorIzogYnVpbHRpbi9jb21taXQuYzoxMzcwIGJ1aWx0aW4vY29tbWl0LmM6MTM3MSBidWlsdGluL3RhZy5jOjQ2OAorbXNnaWQgImNvbW1pdCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgwNiBidWlsdGluL2JyYW5jaC5jOjgxMgorbXNnaWQgInByaW50IG9ubHkgYnJhbmNoZXMgdGhhdCBjb250YWluIHRoZSBjb21taXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MTgKK21zZ2lkICJTcGVjaWZpYyBnaXQtYnJhbmNoIGFjdGlvbnM6IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODE5Cittc2dpZCAibGlzdCBib3RoIHJlbW90ZS10cmFja2luZyBhbmQgbG9jYWwgYnJhbmNoZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MjEKK21zZ2lkICJkZWxldGUgZnVsbHkgbWVyZ2VkIGJyYW5jaCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgyMgorbXNnaWQgImRlbGV0ZSBicmFuY2ggKGV2ZW4gaWYgbm90IG1lcmdlZCkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MjMKK21zZ2lkICJtb3ZlL3JlbmFtZSBhIGJyYW5jaCBhbmQgaXRzIHJlZmxvZyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgyNAorbXNnaWQgIm1vdmUvcmVuYW1lIGEgYnJhbmNoLCBldmVuIGlmIHRhcmdldCBleGlzdHMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MjUKK21zZ2lkICJsaXN0IGJyYW5jaCBuYW1lcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgyNgorbXNnaWQgImNyZWF0ZSB0aGUgYnJhbmNoJ3MgcmVmbG9nIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI4Cittc2dpZCAiZWRpdCB0aGUgZGVzY3JpcHRpb24gZm9yIHRoZSBicmFuY2giCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MjkKK21zZ2lkICJmb3JjZSBjcmVhdGlvbiAod2hlbiBhbHJlYWR5IGV4aXN0cykiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MzIKK21zZ2lkICJwcmludCBvbmx5IG5vdCBtZXJnZWQgYnJhbmNoZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MzgKK21zZ2lkICJwcmludCBvbmx5IG1lcmdlZCBicmFuY2hlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjg0MgorbXNnaWQgImxpc3QgYnJhbmNoZXMgaW4gY29sdW1ucyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjg1NQogbXNnaWQgIkZhaWxlZCB0byByZXNvbHZlIEhFQUQgYXMgYSB2YWxpZCByZWYuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzg4IGJ1aWx0aW4vY2xvbmUuYzo1NTgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODYwIGJ1aWx0aW4vY2xvbmUuYzo2MTkKIG1zZ2lkICJIRUFEIG5vdCBmb3VuZCBiZWxvdyByZWZzL2hlYWRzISIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjgwOAorIzogYnVpbHRpbi9icmFuY2guYzo4ODMKIG1zZ2lkICItLWNvbHVtbiBhbmQgLS12ZXJib3NlIGFyZSBpbmNvbXBhdGlibGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo4NTcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODg5IGJ1aWx0aW4vYnJhbmNoLmM6OTI4Cittc2dpZCAiYnJhbmNoIG5hbWUgcmVxdWlyZWQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MDQKK21zZ2lkICJDYW5ub3QgZ2l2ZSBkZXNjcmlwdGlvbiB0byBkZXRhY2hlZCBIRUFEIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTA5Cittc2dpZCAiY2Fubm90IGVkaXQgZGVzY3JpcHRpb24gb2YgbW9yZSB0aGFuIG9uZSBicmFuY2giCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm8gY29tbWl0IG9uIGJyYW5jaCAnJXMnIHlldC4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm8gYnJhbmNoIG5hbWVkICclcycuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTM0Cittc2dpZCAidG9vIG1hbnkgYnJhbmNoZXMgZm9yIGEgcmVuYW1lIG9wZXJhdGlvbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkzOQorbXNnaWQgInRvbyBtYW55IGJyYW5jaGVzIHRvIHNldCBuZXcgdXBzdHJlYW0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImNvdWxkIG5vdCBzZXQgdXBzdHJlYW0gb2YgSEVBRCB0byAlcyB3aGVuIGl0IGRvZXMgbm90IHBvaW50IHRvIGFueSBicmFuY2guIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTQ2IGJ1aWx0aW4vYnJhbmNoLmM6OTY4IGJ1aWx0aW4vYnJhbmNoLmM6OTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIm5vIHN1Y2ggYnJhbmNoICclcyciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiYnJhbmNoICclcycgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NjIKK21zZ2lkICJ0b28gbWFueSBicmFuY2hlcyB0byB1bnNldCB1cHN0cmVhbSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk2NgorbXNnaWQgImNvdWxkIG5vdCB1bnNldCB1cHN0cmVhbSBvZiBIRUFEIHdoZW4gaXQgZG9lcyBub3QgcG9pbnQgdG8gYW55IGJyYW5jaC4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICclcycgaGFzIG5vIHVwc3RyZWFtIGluZm9ybWF0aW9uIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTg3Cittc2dpZCAiaXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byBjcmVhdGUgJ0hFQUQnIG1hbnVhbGx5IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTkzCiBtc2dpZCAiLWEgYW5kIC1yIG9wdGlvbnMgdG8gJ2dpdCBicmFuY2gnIGRvIG5vdCBtYWtlIHNlbnNlIHdpdGggYSBicmFuY2ggbmFtZSIKIG1zZ3N0ciAiIgogCisjOiBidWlsdGluL2JyYW5jaC5jOjk5NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIC0tc2V0LXVwc3RyZWFtIGZsYWcgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBDb25zaWRlciB1c2luZyAtLSIKKyJ0cmFjayBvciAtLXNldC11cHN0cmVhbS10b1xuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTAxMworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiSWYgeW91IHdhbnRlZCB0byBtYWtlICclcycgdHJhY2sgJyVzJywgZG8gdGhpczpcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjEwMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgIGdpdCBicmFuY2ggLWQgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjEwMTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgIGdpdCBicmFuY2ggLS1zZXQtdXBzdHJlYW0tdG8gJXNcbiIKK21zZ3N0ciAiIgorCiAjOiBidWlsdGluL2J1bmRsZS5jOjQ3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGlzIG9rYXlcbiIKQEAgLTE2NTMsOTkgKzI3NTMsMjQ2IEBACiBtc2dpZCAiTmVlZCBhIHJlcG9zaXRvcnkgdG8gdW5idW5kbGUuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTMgYnVpbHRpbi9jaGVja291dC5jOjE0NgorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE3NgorbXNnaWQgImdpdCBjYXQtZmlsZSAoLXR8LXN8LWV8LXB8PHR5cGU+fC0tdGV4dGNvbnYpIDxvYmplY3Q+IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxNzcKK21zZ2lkICJnaXQgY2F0LWZpbGUgKC0tYmF0Y2h8LS1iYXRjaC1jaGVjaykgPCA8bGlzdF9vZl9vYmplY3RzPiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NhdC1maWxlLmM6MTk1Cittc2dpZCAiPHR5cGU+IGNhbiBiZSBvbmUgb2Y6IGJsb2IsIHRyZWUsIGNvbW1pdCwgdGFnIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTYKK21zZ2lkICJzaG93IG9iamVjdCB0eXBlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTcKK21zZ2lkICJzaG93IG9iamVjdCBzaXplIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTkKK21zZ2lkICJleGl0IHdpdGggemVybyB3aGVuIHRoZXJlJ3Mgbm8gZXJyb3IiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwMAorbXNnaWQgInByZXR0eS1wcmludCBvYmplY3QncyBjb250ZW50IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDIKK21zZ2lkICJmb3IgYmxvYiBvYmplY3RzLCBydW4gdGV4dGNvbnYgb24gb2JqZWN0J3MgY29udGVudCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NhdC1maWxlLmM6MjA0Cittc2dpZCAic2hvdyBpbmZvIGFuZCBjb250ZW50IG9mIG9iamVjdHMgZmVkIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDcKK21zZ2lkICJzaG93IGluZm8gYWJvdXQgb2JqZWN0cyBmZWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MTEKK21zZ2lkICJnaXQgY2hlY2stYXR0ciBbLWEgfCAtLWFsbCB8IGF0dHIuLi5dIFstLV0gcGF0aG5hbWUuLi4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MTIKK21zZ2lkICJnaXQgY2hlY2stYXR0ciAtLXN0ZGluIFstel0gWy1hIHwgLS1hbGwgfCBhdHRyLi4uXSA8IDxsaXN0LW9mLXBhdGhzPiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrLWF0dHIuYzoxOQorbXNnaWQgInJlcG9ydCBhbGwgYXR0cmlidXRlcyBzZXQgb24gZmlsZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrLWF0dHIuYzoyMAorbXNnaWQgInVzZSAuZ2l0YXR0cmlidXRlcyBvbmx5IGZyb20gdGhlIGluZGV4IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIxIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MjIgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc1Cittc2dpZCAicmVhZCBmaWxlIG5hbWVzIGZyb20gc3RkaW4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MjMgYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoyNAorbXNnaWQgImlucHV0IHBhdGhzIGFyZSB0ZXJtaW5hdGVkIGJ5IGEgbnVsbCBjaGFyYWN0ZXIiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxOCBidWlsdGluL2NoZWNrb3V0LmM6MTA0NCBidWlsdGluL2djLmM6MTc3Cittc2dpZCAic3VwcHJlc3MgcHJvZ3Jlc3MgcmVwb3J0aW5nIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTQ2Cittc2dpZCAiY2Fubm90IHNwZWNpZnkgcGF0aG5hbWVzIHdpdGggLS1zdGRpbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE0OQorbXNnaWQgIi16IG9ubHkgbWFrZXMgc2Vuc2Ugd2l0aCAtLXN0ZGluIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTUxCittc2dpZCAibm8gcGF0aCBzcGVjaWZpZWQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTUKK21zZ2lkICItLXF1aWV0IGlzIG9ubHkgdmFsaWQgd2l0aCBhIHNpbmdsZSBwYXRobmFtZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE1NworbXNnaWQgImNhbm5vdCBoYXZlIGJvdGggLS1xdWlldCBhbmQgLS12ZXJib3NlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxMjYKK21zZ2lkICJnaXQgY2hlY2tvdXQtaW5kZXggW29wdGlvbnNdIFstLV0gWzxmaWxlPi4uLl0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE4NworbXNnaWQgImNoZWNrIG91dCBhbGwgZmlsZXMgaW4gdGhlIGluZGV4IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxODgKK21zZ2lkICJmb3JjZSBvdmVyd3JpdGUgb2YgZXhpc3RpbmcgZmlsZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE5MAorbXNnaWQgIm5vIHdhcm5pbmcgZm9yIGV4aXN0aW5nIGZpbGVzIGFuZCBmaWxlcyBub3QgaW4gaW5kZXgiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE5MgorbXNnaWQgImRvbid0IGNoZWNrb3V0IG5ldyBmaWxlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTk0Cittc2dpZCAidXBkYXRlIHN0YXQgaW5mb3JtYXRpb24gaW4gdGhlIGluZGV4IGZpbGUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjIwMAorbXNnaWQgInJlYWQgbGlzdCBvZiBwYXRocyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MjAyCittc2dpZCAid3JpdGUgdGhlIGNvbnRlbnQgdG8gdGVtcG9yYXJ5IGZpbGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoyMDMgYnVpbHRpbi9jb2x1bW4uYzozMAorbXNnaWQgInN0cmluZyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MjA0Cittc2dpZCAid2hlbiBjcmVhdGluZyBmaWxlcywgcHJlcGVuZCA8c3RyaW5nPiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MjA3Cittc2dpZCAiY29weSBvdXQgdGhlIGZpbGVzIGZyb20gbmFtZWQgc3RhZ2UiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjI1Cittc2dpZCAiZ2l0IGNoZWNrb3V0IFtvcHRpb25zXSA8YnJhbmNoPiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjYKK21zZ2lkICJnaXQgY2hlY2tvdXQgW29wdGlvbnNdIFs8YnJhbmNoPl0gLS0gPGZpbGU+Li4uIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTcgYnVpbHRpbi9jaGVja291dC5jOjE1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgZG9lcyBub3QgaGF2ZSBvdXIgdmVyc2lvbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTE1IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNDgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTkgYnVpbHRpbi9jaGVja291dC5jOjE1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgZG9lcyBub3QgaGF2ZSB0aGVpciB2ZXJzaW9uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMzEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMzUKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgYWxsIG5lY2Vzc2FyeSB2ZXJzaW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTc1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTc5CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJyBkb2VzIG5vdCBoYXZlIG5lY2Vzc2FyeSB2ZXJzaW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTkyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTk2CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJzogY2Fubm90IG1lcmdlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMDkKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGFkZCBtZXJnZSByZXN1bHQgZm9yICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjIzNCBidWlsdGluL2NoZWNrb3V0LmM6MzkyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjM3IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDAgYnVpbHRpbi9jaGVja291dC5jOjI0MworIzogYnVpbHRpbi9jaGVja291dC5jOjI0NgorIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggdXBkYXRpbmcgcGF0aHMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjI0OSBidWlsdGluL2NoZWNrb3V0LmM6MjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjU1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCB1cGRhdGUgcGF0aHMgYW5kIHN3aXRjaCB0byBicmFuY2ggJyVzJyBhdCB0aGUgc2FtZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjY2IGJ1aWx0aW4vY2hlY2tvdXQuYzo0NTgKIG1zZ2lkICJjb3JydXB0IGluZGV4IGZpbGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjI2NCBidWlsdGluL2NoZWNrb3V0LmM6MjcxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MzI5IGJ1aWx0aW4vY2hlY2tvdXQuYzozMzYKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGlzIHVubWVyZ2VkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzozMDIgYnVpbHRpbi9jaGVja291dC5jOjQ5OCBidWlsdGluL2Nsb25lLmM6NTgzCi0jOiBidWlsdGluL21lcmdlLmM6ODEyCi1tc2dpZCAidW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzozMTkgYnVpbHRpbi9kaWZmLmM6MzAyIGJ1aWx0aW4vbWVyZ2UuYzo0MDgKLW1zZ2lkICJkaWZmX3NldHVwX2RvbmUgZmFpbGVkIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo0MTQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo0ODAKIG1zZ2lkICJ5b3UgbmVlZCB0byByZXNvbHZlIHlvdXIgY3VycmVudCBpbmRleCBmaXJzdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NTMzCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjAxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbiBub3QgZG8gcmVmbG9nIGZvciAnJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU2NgorIzogYnVpbHRpbi9jaGVja291dC5jOjYzNAogbXNnaWQgIkhFQUQgaXMgbm93IGF0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo1NzMKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVzZXQgYnJhbmNoICclcydcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NTc2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFscmVhZHkgb24gJyVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo1ODAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiU3dpdGNoZWQgdG8gYW5kIHJlc2V0IGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU4MgorIzogYnVpbHRpbi9jaGVja291dC5jOjY1MCBidWlsdGluL2NoZWNrb3V0LmM6OTg3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU4NAorIzogYnVpbHRpbi9jaGVja291dC5jOjY1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJTd2l0Y2hlZCB0byBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiIC4uLiBhbmQgJWQgbW9yZS5cbiIKIG1zZ3N0ciAiIgogCiAjLiBUaGUgc2luZ3VsYXIgdmVyc2lvbgotIzogYnVpbHRpbi9jaGVja291dC5jOjY0NgorIzogYnVpbHRpbi9jaGVja291dC5jOjcxNAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiV2FybmluZzogeW91IGFyZSBsZWF2aW5nICVkIGNvbW1pdCBiZWhpbmQsIG5vdCBjb25uZWN0ZWQgdG9cbiIKQEAgLTE3NjAsNyArMzAwNyw3IEBACiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjY0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJJZiB5b3Ugd2FudCB0byBrZWVwIHRoZW0gYnkgY3JlYXRpbmcgYSBuZXcgYnJhbmNoLCB0aGlzIG1heSBiZSBhIGdvb2QgdGltZVxuIgpAQCAtMTc3MCwyNjkgKzMwMTcsNDk0IEBACiAiXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjY5NAorIzogYnVpbHRpbi9jaGVja291dC5jOjc2MgogbXNnaWQgImludGVybmFsIGVycm9yIGluIHJldmlzaW9uIHdhbGsiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjY5OAorIzogYnVpbHRpbi9jaGVja291dC5jOjc2NgogbXNnaWQgIlByZXZpb3VzIEhFQUQgcG9zaXRpb24gd2FzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MjQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3OTMgYnVpbHRpbi9jaGVja291dC5jOjk4MgogbXNnaWQgIllvdSBhcmUgb24gYSBicmFuY2ggeWV0IHRvIGJlIGJvcm4iCiBtc2dzdHIgIiIKIAogIy4gY2FzZSAoMSkKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo4NTUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCByZWZlcmVuY2U6ICVzIgogbXNnc3RyICIiCiAKICMuIGNhc2UgKDEpOiB3YW50IGEgdHJlZQotIzogYnVpbHRpbi9jaGVja291dC5jOjg5NAorIzogYnVpbHRpbi9jaGVja291dC5jOjk1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWZlcmVuY2UgaXMgbm90IGEgdHJlZTogJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjk3NAotbXNnaWQgIi1CIGNhbm5vdCBiZSB1c2VkIHdpdGggLWIiCisjOiBidWlsdGluL2NoZWNrb3V0LmM6OTk2Cittc2dpZCAicGF0aHMgY2Fubm90IGJlIHVzZWQgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjk4MwotbXNnaWQgIi0tcGF0Y2ggaXMgaW5jb21wYXRpYmxlIHdpdGggYWxsIG90aGVyIG9wdGlvbnMiCisjOiBidWlsdGluL2NoZWNrb3V0LmM6OTk5IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjk4NgotbXNnaWQgIi0tZGV0YWNoIGNhbm5vdCBiZSB1c2VkIHdpdGggLWIvLUIvLS1vcnBoYW4iCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAwNyBidWlsdGluL2NoZWNrb3V0LmM6MTAxMCBidWlsdGluL2NoZWNrb3V0LmM6MTAxNQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjk4OAotbXNnaWQgIi0tZGV0YWNoIGNhbm5vdCBiZSB1c2VkIHdpdGggLXQiCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyMworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc3dpdGNoIGJyYW5jaCB0byBhIG5vbi1jb21taXQgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTk0Ci1tc2dpZCAiLS10cmFjayBuZWVkcyBhIGJyYW5jaCBuYW1lIgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDUgYnVpbHRpbi9jaGVja291dC5jOjEwNDcgYnVpbHRpbi9jbG9uZS5jOjkwCisjOiBidWlsdGluL3JlbW90ZS5jOjE2OSBidWlsdGluL3JlbW90ZS5jOjE3MQorbXNnaWQgImJyYW5jaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAwMQotbXNnaWQgIk1pc3NpbmcgYnJhbmNoIG5hbWU7IHRyeSAtYiIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ2Cittc2dpZCAiY3JlYXRlIGFuZCBjaGVja291dCBhIG5ldyBicmFuY2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMDcKLW1zZ2lkICItLW9ycGhhbiBhbmQgLWJ8LUIgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ4Cittc2dpZCAiY3JlYXRlL3Jlc2V0IGFuZCBjaGVja291dCBhIGJyYW5jaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAwOQotbXNnaWQgIi0tb3JwaGFuIGNhbm5vdCBiZSB1c2VkIHdpdGggLXQiCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA0OQorbXNnaWQgImNyZWF0ZSByZWZsb2cgZm9yIG5ldyBicmFuY2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTkKLW1zZ2lkICJnaXQgY2hlY2tvdXQ6IC1mIGFuZCAtbSBhcmUgaW5jb21wYXRpYmxlIgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTAKK21zZ2lkICJkZXRhY2ggdGhlIEhFQUQgYXQgbmFtZWQgY29tbWl0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDUxCittc2dpZCAic2V0IHVwc3RyZWFtIGluZm8gZm9yIG5ldyBicmFuY2giCiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTMKK21zZ2lkICJuZXcgYnJhbmNoIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDUzCittc2dpZCAibmV3IHVucGFyZW50ZWQgYnJhbmNoIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU0Cittc2dpZCAiY2hlY2tvdXQgb3VyIHZlcnNpb24gZm9yIHVubWVyZ2VkIGZpbGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU2Cittc2dpZCAiY2hlY2tvdXQgdGhlaXIgdmVyc2lvbiBmb3IgdW5tZXJnZWQgZmlsZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTgKK21zZ2lkICJmb3JjZSBjaGVja291dCAodGhyb3cgYXdheSBsb2NhbCBtb2RpZmljYXRpb25zKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OQorbXNnaWQgInBlcmZvcm0gYSAzLXdheSBtZXJnZSB3aXRoIHRoZSBuZXcgYnJhbmNoIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYwIGJ1aWx0aW4vbWVyZ2UuYzoyMTcKK21zZ2lkICJ1cGRhdGUgaWdub3JlZCBmaWxlcyAoZGVmYXVsdCkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjEgYnVpbHRpbi9sb2cuYzoxMTU4IHBhcnNlLW9wdGlvbnMuaDoyNDUKK21zZ2lkICJzdHlsZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MgorbXNnaWQgImNvbmZsaWN0IHN0eWxlIChtZXJnZSBvciBkaWZmMykiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjUKK21zZ2lkICJkbyBub3QgbGltaXQgcGF0aHNwZWNzIHRvIHNwYXJzZSBlbnRyaWVzIG9ubHkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjcKK21zZ2lkICJzZWNvbmQgZ3Vlc3MgJ2dpdCBjaGVja291dCBuby1zdWNoLWJyYW5jaCciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwOTEKK21zZ2lkICItYiwgLUIgYW5kIC0tb3JwaGFuIGFyZSBtdXR1YWxseSBleGNsdXNpdmUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjExMDgKK21zZ2lkICItLXRyYWNrIG5lZWRzIGEgYnJhbmNoIG5hbWUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjExMTUKK21zZ2lkICJNaXNzaW5nIGJyYW5jaCBuYW1lOyB0cnkgLWIiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjExNTAKIG1zZ2lkICJpbnZhbGlkIHBhdGggc3BlY2lmaWNhdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MQorIzogYnVpbHRpbi9jaGVja291dC5jOjExNTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgotImdpdCBjaGVja291dDogdXBkYXRpbmcgcGF0aHMgaXMgaW5jb21wYXRpYmxlIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzLlxuIgorIkNhbm5vdCB1cGRhdGUgcGF0aHMgYW5kIHN3aXRjaCB0byBicmFuY2ggJyVzJyBhdCB0aGUgc2FtZSB0aW1lLlxuIgogIkRpZCB5b3UgaW50ZW5kIHRvIGNoZWNrb3V0ICclcycgd2hpY2ggY2FuIG5vdCBiZSByZXNvbHZlZCBhcyBjb21taXQ/IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYzCi1tc2dpZCAiZ2l0IGNoZWNrb3V0OiB1cGRhdGluZyBwYXRocyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMuIgorIzogYnVpbHRpbi9jaGVja291dC5jOjExNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZ2l0IGNoZWNrb3V0OiAtLWRldGFjaCBkb2VzIG5vdCB0YWtlIGEgcGF0aCBhcmd1bWVudCAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDY4Ci1tc2dpZCAiZ2l0IGNoZWNrb3V0OiAtLWRldGFjaCBkb2VzIG5vdCB0YWtlIGEgcGF0aCBhcmd1bWVudCIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA3MQorIzogYnVpbHRpbi9jaGVja291dC5jOjExNjYKIG1zZ2lkICIiCiAiZ2l0IGNoZWNrb3V0OiAtLW91cnMvLS10aGVpcnMsIC0tZm9yY2UgYW5kIC0tbWVyZ2UgYXJlIGluY29tcGF0aWJsZSB3aGVuXG4iCiAiY2hlY2tpbmcgb3V0IG9mIHRoZSBpbmRleC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwOTAKLW1zZ2lkICJDYW5ub3Qgc3dpdGNoIGJyYW5jaCB0byBhIG5vbi1jb21taXQuIgorIzogYnVpbHRpbi9jbGVhbi5jOjIwCittc2dpZCAiZ2l0IGNsZWFuIFstZF0gWy1mXSBbLW5dIFstcV0gWy1lIDxwYXR0ZXJuPl0gWy14IHwgLVhdIFstLV0gPHBhdGhzPi4uLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA5MwotbXNnaWQgIi0tb3Vycy8tLXRoZWlycyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMuIgorIzogYnVpbHRpbi9jbGVhbi5jOjI0CisjLCBjLWZvcm1hdAorbXNnaWQgIlJlbW92aW5nICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjc4CisjOiBidWlsdGluL2NsZWFuLmM6MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiV291bGQgcmVtb3ZlICVzXG4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIlNraXBwaW5nIHJlcG9zaXRvcnkgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NsZWFuLmM6MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiV291bGQgc2tpcCByZXBvc2l0b3J5ICVzXG4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjI4CisjLCBjLWZvcm1hdAorbXNnaWQgImZhaWxlZCB0byByZW1vdmUgJXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjE2MAorbXNnaWQgImRvIG5vdCBwcmludCBuYW1lcyBvZiBmaWxlcyByZW1vdmVkIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjIKK21zZ2lkICJmb3JjZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NsZWFuLmM6MTY0Cittc2dpZCAicmVtb3ZlIHdob2xlIGRpcmVjdG9yaWVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjUgYnVpbHRpbi9kZXNjcmliZS5jOjQxMiBidWlsdGluL2dyZXAuYzo3MTcKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODcgYnVpbHRpbi9uYW1lLXJldi5jOjIzMSBidWlsdGluL3Nob3ctcmVmLmM6MTgyCittc2dpZCAicGF0dGVybiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NsZWFuLmM6MTY2Cittc2dpZCAiYWRkIDxwYXR0ZXJuPiB0byBpZ25vcmUgcnVsZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjE2NworbXNnaWQgInJlbW92ZSBpZ25vcmVkIGZpbGVzLCB0b28iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjE2OQorbXNnaWQgInJlbW92ZSBvbmx5IGlnbm9yZWQgZmlsZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjE4NwogbXNnaWQgIi14IGFuZCAtWCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6ODIKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxOTEKIG1zZ2lkICIiCiAiY2xlYW4ucmVxdWlyZUZvcmNlIHNldCB0byB0cnVlIGFuZCBuZWl0aGVyIC1uIG5vciAtZiBnaXZlbjsgcmVmdXNpbmcgdG8gY2xlYW4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjg1CisjOiBidWlsdGluL2NsZWFuLmM6MTk0CiBtc2dpZCAiIgogImNsZWFuLnJlcXVpcmVGb3JjZSBkZWZhdWx0cyB0byB0cnVlIGFuZCBuZWl0aGVyIC1uIG5vciAtZiBnaXZlbjsgcmVmdXNpbmcgdG8gIgogImNsZWFuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNTUgYnVpbHRpbi9jbGVhbi5jOjE3NgotIywgYy1mb3JtYXQKLW1zZ2lkICJXb3VsZCByZW1vdmUgJXNcbiIKKyM6IGJ1aWx0aW4vY2xvbmUuYzozNworbXNnaWQgImdpdCBjbG9uZSBbb3B0aW9uc10gWy0tXSA8cmVwbz4gWzxkaXI+XSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTU5IGJ1aWx0aW4vY2xlYW4uYzoxNzkKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiUmVtb3ZpbmcgJXNcbiIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NSBidWlsdGluL2ZldGNoLmM6ODIgYnVpbHRpbi9tZXJnZS5jOjIxNAorIzogYnVpbHRpbi9wdXNoLmM6NDM2Cittc2dpZCAiZm9yY2UgcHJvZ3Jlc3MgcmVwb3J0aW5nIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjIgYnVpbHRpbi9jbGVhbi5jOjE4MgotIywgYy1mb3JtYXQKLW1zZ2lkICJmYWlsZWQgdG8gcmVtb3ZlICVzIgorIzogYnVpbHRpbi9jbG9uZS5jOjY3Cittc2dpZCAiZG9uJ3QgY3JlYXRlIGEgY2hlY2tvdXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjE2NgotIywgYy1mb3JtYXQKLW1zZ2lkICJXb3VsZCBub3QgcmVtb3ZlICVzXG4iCisjOiBidWlsdGluL2Nsb25lLmM6NjggYnVpbHRpbi9jbG9uZS5jOjcwIGJ1aWx0aW4vaW5pdC1kYi5jOjQ4OAorbXNnaWQgImNyZWF0ZSBhIGJhcmUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTY4Ci0jLCBjLWZvcm1hdAotbXNnaWQgIk5vdCByZW1vdmluZyAlc1xuIgorIzogYnVpbHRpbi9jbG9uZS5jOjczCittc2dpZCAiY3JlYXRlIGEgbWlycm9yIHJlcG9zaXRvcnkgKGltcGxpZXMgYmFyZSkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjI0MwotIywgYy1mb3JtYXQKLW1zZ2lkICJyZWZlcmVuY2UgcmVwb3NpdG9yeSAnJXMnIGlzIG5vdCBhIGxvY2FsIGRpcmVjdG9yeS4iCisjOiBidWlsdGluL2Nsb25lLmM6NzUKK21zZ2lkICJ0byBjbG9uZSBmcm9tIGEgbG9jYWwgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzAyCi0jLCBjLWZvcm1hdAotbXNnaWQgImZhaWxlZCB0byBvcGVuICclcyciCisjOiBidWlsdGluL2Nsb25lLmM6NzcKK21zZ2lkICJkb24ndCB1c2UgbG9jYWwgaGFyZGxpbmtzLCBhbHdheXMgY29weSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzA2CisjOiBidWlsdGluL2Nsb25lLmM6NzkKK21zZ2lkICJzZXR1cCBhcyBzaGFyZWQgcmVwb3NpdG9yeSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Nsb25lLmM6ODEgYnVpbHRpbi9jbG9uZS5jOjgzCittc2dpZCAiaW5pdGlhbGl6ZSBzdWJtb2R1bGVzIGluIHRoZSBjbG9uZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Nsb25lLmM6ODQgYnVpbHRpbi9pbml0LWRiLmM6NDg1Cittc2dpZCAidGVtcGxhdGUtZGlyZWN0b3J5IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NSBidWlsdGluL2luaXQtZGIuYzo0ODYKK21zZ2lkICJkaXJlY3RvcnkgZnJvbSB3aGljaCB0ZW1wbGF0ZXMgd2lsbCBiZSB1c2VkIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NworbXNnaWQgInJlZmVyZW5jZSByZXBvc2l0b3J5IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4OCBidWlsdGluL2NvbHVtbi5jOjI2IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjQ0Cittc2dpZCAibmFtZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Nsb25lLmM6ODkKK21zZ2lkICJ1c2UgPG5hbWU+IGluc3RlYWQgb2YgJ29yaWdpbicgdG8gdHJhY2sgdXBzdHJlYW0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjkxCittc2dpZCAiY2hlY2tvdXQgPGJyYW5jaD4gaW5zdGVhZCBvZiB0aGUgcmVtb3RlJ3MgSEVBRCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Nsb25lLmM6OTMKK21zZ2lkICJwYXRoIHRvIGdpdC11cGxvYWQtcGFjayBvbiB0aGUgcmVtb3RlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5NCBidWlsdGluL2ZldGNoLmM6ODMgYnVpbHRpbi9ncmVwLmM6NjYyCittc2dpZCAiZGVwdGgiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjk1Cittc2dpZCAiY3JlYXRlIGEgc2hhbGxvdyBjbG9uZSBvZiB0aGF0IGRlcHRoIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5NworbXNnaWQgImNsb25lIG9ubHkgb25lIGJyYW5jaCwgSEVBRCBvciAtLWJyYW5jaCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Nsb25lLmM6OTggYnVpbHRpbi9pbml0LWRiLmM6NDk0Cittc2dpZCAiZ2l0ZGlyIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5OSBidWlsdGluL2luaXQtZGIuYzo0OTUKK21zZ2lkICJzZXBhcmF0ZSBnaXQgZGlyIGZyb20gd29ya2luZyB0cmVlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzoxMDAKK21zZ2lkICJrZXk9dmFsdWUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjEwMQorbXNnaWQgInNldCBjb25maWcgaW5zaWRlIHRoZSBuZXcgcmVwb3NpdG9yeSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Nsb25lLmM6MjU0CisjLCBjLWZvcm1hdAorbXNnaWQgInJlZmVyZW5jZSByZXBvc2l0b3J5ICclcycgaXMgbm90IGEgbG9jYWwgcmVwb3NpdG9yeS4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjMxNwogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMDggYnVpbHRpbi9kaWZmLmM6NzUKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMTkgYnVpbHRpbi9kaWZmLmM6NzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHN0YXQgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzEwCisjOiBidWlsdGluL2Nsb25lLmM6MzIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGV4aXN0cyBhbmQgaXMgbm90IGEgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMjQKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHN0YXQgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzQxCi0jLCBjLWZvcm1hdAotbXNnaWQgImZhaWxlZCB0byB1bmxpbmsgJyVzJyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2Nsb25lLmM6MzQ2CisjOiBidWlsdGluL2Nsb25lLmM6MzU3CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjcmVhdGUgbGluayAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozNTAKKyM6IGJ1aWx0aW4vY2xvbmUuYzozNjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGNvcHkgZmlsZSB0byAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozNzMKKyM6IGJ1aWx0aW4vY2xvbmUuYzozODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiZG9uZS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NDQwCisjOiBidWlsdGluL2Nsb25lLmM6Mzk3Cittc2dpZCAiIgorIkNsb25lIHN1Y2NlZWRlZCwgYnV0IGNoZWNrb3V0IGZhaWxlZC5cbiIKKyJZb3UgY2FuIGluc3BlY3Qgd2hhdCB3YXMgY2hlY2tlZCBvdXQgd2l0aCAnZ2l0IHN0YXR1cydcbiIKKyJhbmQgcmV0cnkgdGhlIGNoZWNrb3V0IHdpdGggJ2dpdCBjaGVja291dCAtZiBIRUFEJ1xuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo0NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZpbmQgcmVtb3RlIGJyYW5jaCAlcyB0byBjbG9uZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjU0OQorIzogYnVpbHRpbi9jbG9uZS5jOjU1MAorbXNnaWQgInJlbW90ZSBkaWQgbm90IHNlbmQgYWxsIG5lY2Vzc2FyeSBvYmplY3RzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2MTAKIG1zZ2lkICJyZW1vdGUgSEVBRCByZWZlcnMgdG8gbm9uZXhpc3RlbnQgcmVmLCB1bmFibGUgdG8gY2hlY2tvdXQuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjYzOQorIzogYnVpbHRpbi9jbG9uZS5jOjY0MQorbXNnaWQgInVuYWJsZSB0byBjaGVja291dCB3b3JraW5nIHRyZWUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjc0OQogbXNnaWQgIlRvbyBtYW55IGFyZ3VtZW50cy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY0MworIzogYnVpbHRpbi9jbG9uZS5jOjc1MwogbXNnaWQgIllvdSBtdXN0IHNwZWNpZnkgYSByZXBvc2l0b3J5IHRvIGNsb25lLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjU0CisjOiBidWlsdGluL2Nsb25lLmM6NzY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIi0tYmFyZSBhbmQgLS1vcmlnaW4gJXMgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjY4CisjOiBidWlsdGluL2Nsb25lLmM6NzY3Cittc2dpZCAiLS1iYXJlIGFuZCAtLXNlcGFyYXRlLWdpdC1kaXIgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjc4MAogIywgYy1mb3JtYXQKIG1zZ2lkICJyZXBvc2l0b3J5ICclcycgZG9lcyBub3QgZXhpc3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY3MworIzogYnVpbHRpbi9jbG9uZS5jOjc4NQogbXNnaWQgIi0tZGVwdGggaXMgaWdub3JlZCBpbiBsb2NhbCBjbG9uZXM7IHVzZSBmaWxlOi8vIGluc3RlYWQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2ODMKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3OTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiZGVzdGluYXRpb24gcGF0aCAnJXMnIGFscmVhZHkgZXhpc3RzIGFuZCBpcyBub3QgYW4gZW1wdHkgZGlyZWN0b3J5LiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjkzCisjOiBidWlsdGluL2Nsb25lLmM6ODA1CiAjLCBjLWZvcm1hdAogbXNnaWQgIndvcmtpbmcgdHJlZSAnJXMnIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzA2IGJ1aWx0aW4vY2xvbmUuYzo3MjAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MTggYnVpbHRpbi9jbG9uZS5jOjgzMAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIGxlYWRpbmcgZGlyZWN0b3JpZXMgb2YgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzA5CisjOiBidWlsdGluL2Nsb25lLmM6ODIxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgd29yayB0cmVlIGRpciAnJXMnLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzI4CisjOiBidWlsdGluL2Nsb25lLmM6ODQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNsb25pbmcgaW50byBiYXJlIHJlcG9zaXRvcnkgJyVzJy4uLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3MzAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2xvbmluZyBpbnRvICclcycuLi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6Nzg2CisjOiBidWlsdGluL2Nsb25lLmM6ODc3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkRvbid0IGtub3cgaG93IHRvIGNsb25lICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4MzUKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVtb3RlIGJyYW5jaCAlcyBub3QgZm91bmQgaW4gdXBzdHJlYW0gJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg0MgorIzogYnVpbHRpbi9jbG9uZS5jOjkzMwogbXNnaWQgIllvdSBhcHBlYXIgdG8gaGF2ZSBjbG9uZWQgYW4gZW1wdHkgcmVwb3NpdG9yeS4iCiBtc2dzdHIgIiIKIAorIzogYnVpbHRpbi9jb2x1bW4uYzo5Cittc2dpZCAiZ2l0IGNvbHVtbiBbb3B0aW9uc10iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb2x1bW4uYzoyNgorbXNnaWQgImxvb2t1cCBjb25maWcgdmFycyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbHVtbi5jOjI3IGJ1aWx0aW4vY29sdW1uLmM6MjgKK21zZ2lkICJsYXlvdXQgdG8gdXNlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29sdW1uLmM6MjkKK21zZ2lkICJNYXhpbXVtIHdpZHRoIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29sdW1uLmM6MzAKK21zZ2lkICJQYWRkaW5nIHNwYWNlIG9uIGxlZnQgYm9yZGVyIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29sdW1uLmM6MzEKK21zZ2lkICJQYWRkaW5nIHNwYWNlIG9uIHJpZ2h0IGJvcmRlciIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbHVtbi5jOjMyCittc2dpZCAiUGFkZGluZyBzcGFjZSBiZXR3ZWVuIGNvbHVtbnMiCittc2dzdHIgIiIKKwogIzogYnVpbHRpbi9jb2x1bW4uYzo1MQogbXNnaWQgIi0tY29tbWFuZCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjQzCisjOiBidWlsdGluL2NvbW1pdC5jOjM0Cittc2dpZCAiZ2l0IGNvbW1pdCBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzkKK21zZ2lkICJnaXQgc3RhdHVzIFtvcHRpb25zXSBbLS1dIDxwYXRoc3BlYz4uLi4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzo0NAogbXNnaWQgIiIKICJZb3VyIG5hbWUgYW5kIGVtYWlsIGFkZHJlc3Mgd2VyZSBjb25maWd1cmVkIGF1dG9tYXRpY2FsbHkgYmFzZWRcbiIKICJvbiB5b3VyIHVzZXJuYW1lIGFuZCBob3N0bmFtZS4gUGxlYXNlIGNoZWNrIHRoYXQgdGhleSBhcmUgYWNjdXJhdGUuXG4iCkBAIC0yMDQ2LDE0ICszNTE4LDE0IEBACiAiICAgIGdpdCBjb21taXQgLS1hbWVuZCAtLXJlc2V0LWF1dGhvclxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTYKIG1zZ2lkICIiCiAiWW91IGFza2VkIHRvIGFtZW5kIHRoZSBtb3N0IHJlY2VudCBjb21taXQsIGJ1dCBkb2luZyBzbyB3b3VsZCBtYWtlXG4iCiAiaXQgZW1wdHkuIFlvdSBjYW4gcmVwZWF0IHlvdXIgY29tbWFuZCB3aXRoIC0tYWxsb3ctZW1wdHksIG9yIHlvdSBjYW5cbiIKICJyZW1vdmUgdGhlIGNvbW1pdCBlbnRpcmVseSB3aXRoIFwiZ2l0IHJlc2V0IEhFQUReXCIuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MAorIzogYnVpbHRpbi9jb21taXQuYzo2MQogbXNnaWQgIiIKICJUaGUgcHJldmlvdXMgY2hlcnJ5LXBpY2sgaXMgbm93IGVtcHR5LCBwb3NzaWJseSBkdWUgdG8gY29uZmxpY3QgcmVzb2x1dGlvbi5cbiIKICJJZiB5b3Ugd2lzaCB0byBjb21taXQgaXQgYW55d2F5LCB1c2U6XG4iCkBAIC0yMDYzLDkzICszNTM1LDkzIEBACiAiT3RoZXJ3aXNlLCBwbGVhc2UgdXNlICdnaXQgcmVzZXQnXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoyNTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MjYwCiBtc2dpZCAiZmFpbGVkIHRvIHVucGFjayBIRUFEIHRyZWUgb2JqZWN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6Mjk1CisjOiBidWlsdGluL2NvbW1pdC5jOjMwMgogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzAxCisjOiBidWlsdGluL2NvbW1pdC5jOjMwOAogbXNnaWQgImludGVyYWN0aXZlIGFkZCBmYWlsZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzozMzQgYnVpbHRpbi9jb21taXQuYzozNTUgYnVpbHRpbi9jb21taXQuYzo0MDUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzQxIGJ1aWx0aW4vY29tbWl0LmM6MzYyIGJ1aWx0aW4vY29tbWl0LmM6NDEyCiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIG5ld19pbmRleCBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6Mzg2CisjOiBidWlsdGluL2NvbW1pdC5jOjM5MwogbXNnaWQgImNhbm5vdCBkbyBhIHBhcnRpYWwgY29tbWl0IGR1cmluZyBhIG1lcmdlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM4OAorIzogYnVpbHRpbi9jb21taXQuYzozOTUKIG1zZ2lkICJjYW5ub3QgZG8gYSBwYXJ0aWFsIGNvbW1pdCBkdXJpbmcgYSBjaGVycnktcGljay4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzozOTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDA1CiBtc2dpZCAiY2Fubm90IHJlYWQgdGhlIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NDE4CisjOiBidWlsdGluL2NvbW1pdC5jOjQyNQogbXNnaWQgInVuYWJsZSB0byB3cml0ZSB0ZW1wb3JhcnkgaW5kZXggZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjQ5MyBidWlsdGluL2NvbW1pdC5jOjQ5OQorIzogYnVpbHRpbi9jb21taXQuYzo1MTMgYnVpbHRpbi9jb21taXQuYzo1MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBjb21taXQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTIyCisjOiBidWlsdGluL2NvbW1pdC5jOjU0MgogbXNnaWQgIm1hbGZvcm1lZCAtLWF1dGhvciBwYXJhbWV0ZXIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1ODIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTYyCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1hbGZvcm1lZCBpZGVudCBzdHJpbmc6ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MjAgYnVpbHRpbi9jb21taXQuYzo2NTMgYnVpbHRpbi9jb21taXQuYzo5NjcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjAwIGJ1aWx0aW4vY29tbWl0LmM6NjMzIGJ1aWx0aW4vY29tbWl0LmM6OTU2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBsb29rdXAgY29tbWl0ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjMyIGJ1aWx0aW4vc2hvcnRsb2cuYzoyOTYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjEyIGJ1aWx0aW4vc2hvcnRsb2cuYzoyNzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiKHJlYWRpbmcgbG9nIG1lc3NhZ2UgZnJvbSBzdGFuZGFyZCBpbnB1dClcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYzNAorIzogYnVpbHRpbi9jb21taXQuYzo2MTQKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBsb2cgZnJvbSBzdGFuZGFyZCBpbnB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYzOAorIzogYnVpbHRpbi9jb21taXQuYzo2MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgbG9nIGZpbGUgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjY0NAorIzogYnVpbHRpbi9jb21taXQuYzo2MjQKIG1zZ2lkICJjb21taXQgaGFzIGVtcHR5IG1lc3NhZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2NjAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjQwCiBtc2dpZCAiY291bGQgbm90IHJlYWQgTUVSR0VfTVNHIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjY0CisjOiBidWlsdGluL2NvbW1pdC5jOjY0NAogbXNnaWQgImNvdWxkIG5vdCByZWFkIFNRVUFTSF9NU0ciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2NjgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MjAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzA5CiBtc2dpZCAiY291bGQgbm90IHdyaXRlIGNvbW1pdCB0ZW1wbGF0ZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjczMQorIzogYnVpbHRpbi9jb21taXQuYzo3MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtMjE1OSw3ICszNjMxLDcgQEAKICJhbmQgdHJ5IGFnYWluLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzM2CisjOiBidWlsdGluL2NvbW1pdC5jOjcyNQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC0yMTY5LDQ0MCArMzY0MSwxMDYxIEBACiAiYW5kIHRyeSBhZ2Fpbi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjc0OAorIzogYnVpbHRpbi9jb21taXQuYzo3MzcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBsZWFzZSBlbnRlciB0aGUgY29tbWl0IG1lc3NhZ2UgZm9yIHlvdXIgY2hhbmdlcy4gTGluZXMgc3RhcnRpbmdcbiIKLSJ3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0cyB0aGUgY29tbWl0LlxuIgorIndpdGggJyVjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0cyB0aGUgY29tbWl0LlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzUzCisjOiBidWlsdGluL2NvbW1pdC5jOjc0MgorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiUGxlYXNlIGVudGVyIHRoZSBjb21taXQgbWVzc2FnZSBmb3IgeW91ciBjaGFuZ2VzLiBMaW5lcyBzdGFydGluZ1xuIgotIndpdGggJyMnIHdpbGwgYmUga2VwdDsgeW91IG1heSByZW1vdmUgdGhlbSB5b3Vyc2VsZiBpZiB5b3Ugd2FudCB0by5cbiIKKyJ3aXRoICclYycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIHlvdXJzZWxmIGlmIHlvdSB3YW50IHRvLlxuIgogIkFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3NjYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzQXV0aG9yOiAgICAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjc3MworIzogYnVpbHRpbi9jb21taXQuYzo3NjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXNDb21taXR0ZXI6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzkzCisjOiBidWlsdGluL2NvbW1pdC5jOjc4MgogbXNnaWQgIkNhbm5vdCByZWFkIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODMwCisjOiBidWlsdGluL2NvbW1pdC5jOjgxOQogbXNnaWQgIkVycm9yIGJ1aWxkaW5nIHRyZWVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODQ1IGJ1aWx0aW4vdGFnLmM6MzYxCisjOiBidWlsdGluL2NvbW1pdC5jOjgzNCBidWlsdGluL3RhZy5jOjM1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJQbGVhc2Ugc3VwcGx5IHRoZSBtZXNzYWdlIHVzaW5nIGVpdGhlciAtbSBvciAtRiBvcHRpb24uXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo5NDIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIGV4aXN0aW5nIGF1dGhvciBmb3VuZCB3aXRoICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo5NTcgYnVpbHRpbi9jb21taXQuYzoxMTU3CisjOiBidWlsdGluL2NvbW1pdC5jOjk0NiBidWlsdGluL2NvbW1pdC5jOjExNDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCB1bnRyYWNrZWQgZmlsZXMgbW9kZSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTk3CisjOiBidWlsdGluL2NvbW1pdC5jOjk3NgogbXNnaWQgIlVzaW5nIGJvdGggLS1yZXNldC1hdXRob3IgYW5kIC0tYXV0aG9yIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDA4CisjOiBidWlsdGluL2NvbW1pdC5jOjk4NwogbXNnaWQgIllvdSBoYXZlIG5vdGhpbmcgdG8gYW1lbmQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAxMQorIzogYnVpbHRpbi9jb21taXQuYzo5OTAKIG1zZ2lkICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBtZXJnZSAtLSBjYW5ub3QgYW1lbmQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAxMworIzogYnVpbHRpbi9jb21taXQuYzo5OTIKIG1zZ2lkICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjaGVycnktcGljayAtLSBjYW5ub3QgYW1lbmQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAxNgorIzogYnVpbHRpbi9jb21taXQuYzo5OTUKIG1zZ2lkICJPcHRpb25zIC0tc3F1YXNoIGFuZCAtLWZpeHVwIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAyNgorIzogYnVpbHRpbi9jb21taXQuYzoxMDA1CiBtc2dpZCAiT25seSBvbmUgb2YgLWMvLUMvLUYvLS1maXh1cCBjYW4gYmUgdXNlZC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDI4CisjOiBidWlsdGluL2NvbW1pdC5jOjEwMDcKIG1zZ2lkICJPcHRpb24gLW0gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggLWMvLUMvLUYvLS1maXh1cC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDM2CisjOiBidWlsdGluL2NvbW1pdC5jOjEwMTUKIG1zZ2lkICItLXJlc2V0LWF1dGhvciBjYW4gYmUgdXNlZCBvbmx5IHdpdGggLUMsIC1jIG9yIC0tYW1lbmQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1MworIzogYnVpbHRpbi9jb21taXQuYzoxMDMyCiBtc2dpZCAiT25seSBvbmUgb2YgLS1pbmNsdWRlLy0tb25seS8tLWFsbC8tLWludGVyYWN0aXZlLy0tcGF0Y2ggY2FuIGJlIHVzZWQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1NQorIzogYnVpbHRpbi9jb21taXQuYzoxMDM0CiBtc2dpZCAiTm8gcGF0aHMgd2l0aCAtLWluY2x1ZGUvLS1vbmx5IGRvZXMgbm90IG1ha2Ugc2Vuc2UuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1NworIzogYnVpbHRpbi9jb21taXQuYzoxMDM2CiBtc2dpZCAiQ2xldmVyLi4uIGFtZW5kaW5nIHRoZSBsYXN0IG9uZSB3aXRoIGRpcnR5IGluZGV4LiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzOAogbXNnaWQgIkV4cGxpY2l0IHBhdGhzIHNwZWNpZmllZCB3aXRob3V0IC1pIG5vciAtbzsgYXNzdW1pbmcgLS1vbmx5IHBhdGhzLi4uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA2OSBidWlsdGluL3RhZy5jOjU3NworIzogYnVpbHRpbi9jb21taXQuYzoxMDQ4IGJ1aWx0aW4vdGFnLmM6NTc1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgY2xlYW51cCBtb2RlICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA3NAorIzogYnVpbHRpbi9jb21taXQuYzoxMDUzCiBtc2dpZCAiUGF0aHMgd2l0aCAtYSBkb2VzIG5vdCBtYWtlIHNlbnNlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyNTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1OSBidWlsdGluL2NvbW1pdC5jOjExOTQKK21zZ2lkICItLWxvbmcgYW5kIC16IGFyZSBpbmNvbXBhdGlibGUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTU0IGJ1aWx0aW4vY29tbWl0LmM6MTM5MAorbXNnaWQgInNob3cgc3RhdHVzIGNvbmNpc2VseSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNTYgYnVpbHRpbi9jb21taXQuYzoxMzkyCittc2dpZCAic2hvdyBicmFuY2ggaW5mb3JtYXRpb24iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTU4IGJ1aWx0aW4vY29tbWl0LmM6MTM5NCBidWlsdGluL3B1c2guYzo0MjYKK21zZ2lkICJtYWNoaW5lLXJlYWRhYmxlIG91dHB1dCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNjEgYnVpbHRpbi9jb21taXQuYzoxMzk2Cittc2dpZCAic2hvdyBzdGF0dXMgaW4gbG9uZyBmb3JtYXQgKGRlZmF1bHQpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2NCBidWlsdGluL2NvbW1pdC5jOjEzOTkKK21zZ2lkICJ0ZXJtaW5hdGUgZW50cmllcyB3aXRoIE5VTCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNjYgYnVpbHRpbi9jb21taXQuYzoxNDAyIGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NTkKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjIgYnVpbHRpbi90YWcuYzo0NTkKK21zZ2lkICJtb2RlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2NyBidWlsdGluL2NvbW1pdC5jOjE0MDIKK21zZ2lkICJzaG93IHVudHJhY2tlZCBmaWxlcywgb3B0aW9uYWwgbW9kZXM6IGFsbCwgbm9ybWFsLCBuby4gKERlZmF1bHQ6IGFsbCkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTcwCittc2dpZCAic2hvdyBpZ25vcmVkIGZpbGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3MSBwYXJzZS1vcHRpb25zLmg6MTUxCittc2dpZCAid2hlbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNzIKK21zZ2lkICIiCisiaWdub3JlIGNoYW5nZXMgdG8gc3VibW9kdWxlcywgb3B0aW9uYWwgd2hlbjogYWxsLCBkaXJ0eSwgdW50cmFja2VkLiAiCisiKERlZmF1bHQ6IGFsbCkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTc0Cittc2dpZCAibGlzdCB1bnRyYWNrZWQgZmlsZXMgaW4gY29sdW1ucyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEyNDgKIG1zZ2lkICJjb3VsZG4ndCBsb29rIHVwIG5ld2x5IGNyZWF0ZWQgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTI1OQorIzogYnVpbHRpbi9jb21taXQuYzoxMjUwCiBtc2dpZCAiY291bGQgbm90IHBhcnNlIG5ld2x5IGNyZWF0ZWQgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTMwMAorIzogYnVpbHRpbi9jb21taXQuYzoxMjkxCiBtc2dpZCAiZGV0YWNoZWQgSEVBRCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzMDIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI5MwogbXNnaWQgIiAocm9vdC1jb21taXQpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ0NgorIzogYnVpbHRpbi9jb21taXQuYzoxMzYwCittc2dpZCAic3VwcHJlc3Mgc3VtbWFyeSBhZnRlciBzdWNjZXNzZnVsIGNvbW1pdCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjEKK21zZ2lkICJzaG93IGRpZmYgaW4gY29tbWl0IG1lc3NhZ2UgdGVtcGxhdGUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzYzCittc2dpZCAiQ29tbWl0IG1lc3NhZ2Ugb3B0aW9ucyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjQgYnVpbHRpbi90YWcuYzo0NTcKK21zZ2lkICJyZWFkIG1lc3NhZ2UgZnJvbSBmaWxlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NQorbXNnaWQgImF1dGhvciIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjUKK21zZ2lkICJvdmVycmlkZSBhdXRob3IgZm9yIGNvbW1pdCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjYgYnVpbHRpbi9nYy5jOjE3OAorbXNnaWQgImRhdGUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzY2Cittc2dpZCAib3ZlcnJpZGUgZGF0ZSBmb3IgY29tbWl0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NyBidWlsdGluL21lcmdlLmM6MjA4IGJ1aWx0aW4vbm90ZXMuYzo1MzMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2OTAgYnVpbHRpbi90YWcuYzo0NTUKK21zZ2lkICJtZXNzYWdlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NworbXNnaWQgImNvbW1pdCBtZXNzYWdlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2OAorbXNnaWQgInJldXNlIGFuZCBlZGl0IG1lc3NhZ2UgZnJvbSBzcGVjaWZpZWQgY29tbWl0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2OQorbXNnaWQgInJldXNlIG1lc3NhZ2UgZnJvbSBzcGVjaWZpZWQgY29tbWl0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MAorbXNnaWQgInVzZSBhdXRvc3F1YXNoIGZvcm1hdHRlZCBtZXNzYWdlIHRvIGZpeHVwIHNwZWNpZmllZCBjb21taXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzcxCittc2dpZCAidXNlIGF1dG9zcXVhc2ggZm9ybWF0dGVkIG1lc3NhZ2UgdG8gc3F1YXNoIHNwZWNpZmllZCBjb21taXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzcyCittc2dpZCAidGhlIGNvbW1pdCBpcyBhdXRob3JlZCBieSBtZSBub3cgKHVzZWQgd2l0aCAtQy8tYy8tLWFtZW5kKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzMgYnVpbHRpbi9sb2cuYzoxMTEzIGJ1aWx0aW4vcmV2ZXJ0LmM6MTA5Cittc2dpZCAiYWRkIFNpZ25lZC1vZmYtYnk6IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NAorbXNnaWQgInVzZSBzcGVjaWZpZWQgdGVtcGxhdGUgZmlsZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzUKK21zZ2lkICJmb3JjZSBlZGl0IG9mIGNvbW1pdCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzYKK21zZ2lkICJkZWZhdWx0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NiBidWlsdGluL3RhZy5jOjQ2MAorbXNnaWQgImhvdyB0byBzdHJpcCBzcGFjZXMgYW5kICNjb21tZW50cyBmcm9tIG1lc3NhZ2UiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzc3Cittc2dpZCAiaW5jbHVkZSBzdGF0dXMgaW4gY29tbWl0IG1lc3NhZ2UgdGVtcGxhdGUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzc4IGJ1aWx0aW4vbWVyZ2UuYzoyMTUgYnVpbHRpbi90YWcuYzo0NjEKK21zZ2lkICJrZXkgaWQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzc5IGJ1aWx0aW4vbWVyZ2UuYzoyMTYKK21zZ2lkICJHUEcgc2lnbiBjb21taXQiCittc2dzdHIgIiIKKworIy4gZW5kIGNvbW1pdCBtZXNzYWdlIG9wdGlvbnMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4MgorbXNnaWQgIkNvbW1pdCBjb250ZW50cyBvcHRpb25zIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4MworbXNnaWQgImNvbW1pdCBhbGwgY2hhbmdlZCBmaWxlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODQKK21zZ2lkICJhZGQgc3BlY2lmaWVkIGZpbGVzIHRvIGluZGV4IGZvciBjb21taXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzg1Cittc2dpZCAiaW50ZXJhY3RpdmVseSBhZGQgZmlsZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzg2Cittc2dpZCAiaW50ZXJhY3RpdmVseSBhZGQgY2hhbmdlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODcKK21zZ2lkICJjb21taXQgb25seSBzcGVjaWZpZWQgZmlsZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzg4Cittc2dpZCAiYnlwYXNzIHByZS1jb21taXQgaG9vayIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODkKK21zZ2lkICJzaG93IHdoYXQgd291bGQgYmUgY29tbWl0dGVkIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwMAorbXNnaWQgImFtZW5kIHByZXZpb3VzIGNvbW1pdCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDEKK21zZ2lkICJieXBhc3MgcG9zdC1yZXdyaXRlIGhvb2siCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxNDA2Cittc2dpZCAib2sgdG8gcmVjb3JkIGFuIGVtcHR5IGNoYW5nZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDkKK21zZ2lkICJvayB0byByZWNvcmQgYSBjaGFuZ2Ugd2l0aCBhbiBlbXB0eSBtZXNzYWdlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ0MQogbXNnaWQgImNvdWxkIG5vdCBwYXJzZSBIRUFEIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0ODQgYnVpbHRpbi9tZXJnZS5jOjUwOQorIzogYnVpbHRpbi9jb21taXQuYzoxNDc5IGJ1aWx0aW4vbWVyZ2UuYzo1MTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IG9wZW4gJyVzJyBmb3IgcmVhZGluZyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0OTEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3JydXB0IE1FUkdFX0hFQUQgZmlsZSAoJXMpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ5OAorIzogYnVpbHRpbi9jb21taXQuYzoxNDkzCiBtc2dpZCAiY291bGQgbm90IHJlYWQgTUVSR0VfTU9ERSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1MTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTUxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBjb21taXQgbWVzc2FnZTogJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTMxCisjOiBidWlsdGluL2NvbW1pdC5jOjE1MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWJvcnRpbmcgY29tbWl0OyB5b3UgZGlkIG5vdCBlZGl0IHRoZSBtZXNzYWdlLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUzNgorIzogYnVpbHRpbi9jb21taXQuYzoxNTMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFib3J0aW5nIGNvbW1pdCBkdWUgdG8gZW1wdHkgY29tbWl0IG1lc3NhZ2UuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTUxIGJ1aWx0aW4vbWVyZ2UuYzo5MzYgYnVpbHRpbi9tZXJnZS5jOjk2MQorIzogYnVpbHRpbi9jb21taXQuYzoxNTQ2IGJ1aWx0aW4vbWVyZ2UuYzo4NDcgYnVpbHRpbi9tZXJnZS5jOjg3MgogbXNnaWQgImZhaWxlZCB0byB3cml0ZSBjb21taXQgb2JqZWN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTU3MgorIzogYnVpbHRpbi9jb21taXQuYzoxNTY3CiBtc2dpZCAiY2Fubm90IGxvY2sgSEVBRCByZWYiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTc2CisjOiBidWlsdGluL2NvbW1pdC5jOjE1NzEKIG1zZ2lkICJjYW5ub3QgdXBkYXRlIEhFQUQgcmVmIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTU4NworIzogYnVpbHRpbi9jb21taXQuYzoxNTgyCiBtc2dpZCAiIgogIlJlcG9zaXRvcnkgaGFzIGJlZW4gdXBkYXRlZCwgYnV0IHVuYWJsZSB0byB3cml0ZVxuIgogIm5ld19pbmRleCBmaWxlLiBDaGVjayB0aGF0IGRpc2sgaXMgbm90IGZ1bGwgb3IgcXVvdGEgaXNcbiIKICJub3QgZXhjZWVkZWQsIGFuZCB0aGVuIFwiZ2l0IHJlc2V0IEhFQURcIiB0byByZWNvdmVyLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjM0CisjOiBidWlsdGluL2NvbmZpZy5jOjcKK21zZ2lkICJnaXQgY29uZmlnIFtvcHRpb25zXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjUxCittc2dpZCAiQ29uZmlnIGZpbGUgbG9jYXRpb24iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb25maWcuYzo1MgorbXNnaWQgInVzZSBnbG9iYWwgY29uZmlnIGZpbGUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb25maWcuYzo1MworbXNnaWQgInVzZSBzeXN0ZW0gY29uZmlnIGZpbGUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb25maWcuYzo1NAorbXNnaWQgInVzZSByZXBvc2l0b3J5IGNvbmZpZyBmaWxlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTUKK21zZ2lkICJ1c2UgZ2l2ZW4gY29uZmlnIGZpbGUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb25maWcuYzo1NgorbXNnaWQgIkFjdGlvbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjU3Cittc2dpZCAiZ2V0IHZhbHVlOiBuYW1lIFt2YWx1ZS1yZWdleF0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb25maWcuYzo1OAorbXNnaWQgImdldCBhbGwgdmFsdWVzOiBrZXkgW3ZhbHVlLXJlZ2V4XSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjU5Cittc2dpZCAiZ2V0IHZhbHVlcyBmb3IgcmVnZXhwOiBuYW1lLXJlZ2V4IFt2YWx1ZS1yZWdleF0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb25maWcuYzo2MAorbXNnaWQgInJlcGxhY2UgYWxsIG1hdGNoaW5nIHZhcmlhYmxlczogbmFtZSB2YWx1ZSBbdmFsdWVfcmVnZXhdIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjEKK21zZ2lkICJhZGQgYSBuZXcgdmFyaWFibGU6IG5hbWUgdmFsdWUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb25maWcuYzo2MgorbXNnaWQgInJlbW92ZSBhIHZhcmlhYmxlOiBuYW1lIFt2YWx1ZS1yZWdleF0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb25maWcuYzo2MworbXNnaWQgInJlbW92ZSBhbGwgbWF0Y2hlczogbmFtZSBbdmFsdWUtcmVnZXhdIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjQKK21zZ2lkICJyZW5hbWUgc2VjdGlvbjogb2xkLW5hbWUgbmV3LW5hbWUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb25maWcuYzo2NQorbXNnaWQgInJlbW92ZSBhIHNlY3Rpb246IG5hbWUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb25maWcuYzo2NgorbXNnaWQgImxpc3QgYWxsIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjcKK21zZ2lkICJvcGVuIGFuIGVkaXRvciIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjY4IGJ1aWx0aW4vY29uZmlnLmM6NjkKK21zZ2lkICJzbG90IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjgKK21zZ2lkICJmaW5kIHRoZSBjb2xvciBjb25maWd1cmVkOiBbZGVmYXVsdF0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb25maWcuYzo2OQorbXNnaWQgImZpbmQgdGhlIGNvbG9yIHNldHRpbmc6IFtzdGRvdXQtaXMtdHR5XSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjcwCittc2dpZCAiVHlwZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjcxCittc2dpZCAidmFsdWUgaXMgXCJ0cnVlXCIgb3IgXCJmYWxzZVwiIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzIKK21zZ2lkICJ2YWx1ZSBpcyBkZWNpbWFsIG51bWJlciIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjczCittc2dpZCAidmFsdWUgaXMgLS1ib29sIG9yIC0taW50IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzQKK21zZ2lkICJ2YWx1ZSBpcyBhIHBhdGggKGZpbGUgb3IgZGlyZWN0b3J5IG5hbWUpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzUKK21zZ2lkICJPdGhlciIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjc2Cittc2dpZCAidGVybWluYXRlIHZhbHVlcyB3aXRoIE5VTCBieXRlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzcKK21zZ2lkICJyZXNwZWN0IGluY2x1ZGUgZGlyZWN0aXZlcyBvbiBsb29rdXAiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6ODIKK21zZ2lkICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIFstSCB8IC0taHVtYW4tcmVhZGFibGVdIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY291bnQtb2JqZWN0cy5jOjk3Cittc2dpZCAicHJpbnQgc2l6ZXMgaW4gaHVtYW4gcmVhZGFibGUgZm9ybWF0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoxNQorbXNnaWQgImdpdCBkZXNjcmliZSBbb3B0aW9uc10gPGNvbW1pdHRpc2g+KiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MTYKK21zZ2lkICJnaXQgZGVzY3JpYmUgW29wdGlvbnNdIC0tZGlydHkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzMwogIywgYy1mb3JtYXQKIG1zZ2lkICJhbm5vdGF0ZWQgdGFnICVzIG5vdCBhdmFpbGFibGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzOAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJhbm5vdGF0ZWQgdGFnICVzIGhhcyBubyBlbWJlZGRlZCBuYW1lIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNDAKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAidGFnICclcycgaXMgcmVhbGx5ICclcycgaGVyZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjY3CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjY2CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vdCBhIHZhbGlkIG9iamVjdCBuYW1lICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNzAKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgaXMgbm90IGEgdmFsaWQgJyVzJyBvYmplY3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI4NworIzogYnVpbHRpbi9kZXNjcmliZS5jOjI4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJubyB0YWcgZXhhY3RseSBtYXRjaGVzICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI4OQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjI4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJzZWFyY2hpbmcgdG8gZGVzY3JpYmUgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MzI5CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MzI4CiAjLCBjLWZvcm1hdAogbXNnaWQgImZpbmlzaGVkIHNlYXJjaCBhdCAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTMKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIk5vIGFubm90YXRlZCB0YWdzIGNhbiBkZXNjcmliZSAnJXMnLlxuIgogIkhvd2V2ZXIsIHRoZXJlIHdlcmUgdW5hbm5vdGF0ZWQgdGFnczogdHJ5IC0tdGFncy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjM1NworIzogYnVpbHRpbi9kZXNjcmliZS5jOjM1NgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiTm8gdGFncyBjYW4gZGVzY3JpYmUgJyVzJy5cbiIKICJUcnkgLS1hbHdheXMsIG9yIGNyZWF0ZSBzb21lIHRhZ3MuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNzgKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNzcKICMsIGMtZm9ybWF0CiBtc2dpZCAidHJhdmVyc2VkICVsdSBjb21taXRzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjM4MQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjM4MAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibW9yZSB0aGFuICVpIHRhZ3MgZm91bmQ7IGxpc3RlZCAlaSBtb3N0IHJlY2VudFxuIgogImdhdmUgdXAgc2VhcmNoIGF0ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQzNgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwMgorbXNnaWQgImZpbmQgdGhlIHRhZyB0aGF0IGNvbWVzIGFmdGVyIHRoZSBjb21taXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwMworbXNnaWQgImRlYnVnIHNlYXJjaCBzdHJhdGVneSBvbiBzdGRlcnIiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNAorbXNnaWQgInVzZSBhbnkgcmVmIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDUKK21zZ2lkICJ1c2UgYW55IHRhZywgZXZlbiB1bmFubm90YXRlZCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA2Cittc2dpZCAiYWx3YXlzIHVzZSBsb25nIGZvcm1hdCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA5Cittc2dpZCAib25seSBvdXRwdXQgZXhhY3QgbWF0Y2hlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDExCittc2dpZCAiY29uc2lkZXIgPG4+IG1vc3QgcmVjZW50IHRhZ3MgKGRlZmF1bHQ6IDEwKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDEzCittc2dpZCAib25seSBjb25zaWRlciB0YWdzIG1hdGNoaW5nIDxwYXR0ZXJuPiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE1IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzgKK21zZ2lkICJzaG93IGFiYnJldmlhdGVkIGNvbW1pdCBvYmplY3QgYXMgZmFsbGJhY2siCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxNgorbXNnaWQgIm1hcmsiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxNworbXNnaWQgImFwcGVuZCA8bWFyaz4gb24gZGlydHkgd29ya2luZyB0cmVlIChkZWZhdWx0OiBcIi1kaXJ0eVwiKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDM1CiBtc2dpZCAiLS1sb25nIGlzIGluY29tcGF0aWJsZSB3aXRoIC0tYWJicmV2PTAiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ2MgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ2MQogbXNnaWQgIk5vIG5hbWVzIGZvdW5kLCBjYW5ub3QgZGVzY3JpYmUgYW55dGhpbmcuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0ODIKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0ODEKIG1zZ2lkICItLWRpcnR5IGlzIGluY29tcGF0aWJsZSB3aXRoIGNvbW1pdHRpc2hlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2RpZmYuYzo3NworIzogYnVpbHRpbi9kaWZmLmM6NzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJzogbm90IGEgcmVndWxhciBmaWxlIG9yIHN5bWxpbmsiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kaWZmLmM6MjIwCisjOiBidWlsdGluL2RpZmYuYzoyMjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBvcHRpb246ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjI5NworIzogYnVpbHRpbi9kaWZmLmM6MzA1CiBtc2dpZCAiTm90IGEgZ2l0IHJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kaWZmLmM6MzQ3CisjOiBidWlsdGluL2RpZmYuYzozNDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBvYmplY3QgJyVzJyBnaXZlbi4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kaWZmLmM6MzUyCisjOiBidWlsdGluL2RpZmYuYzozNTMKICMsIGMtZm9ybWF0CiBtc2dpZCAibW9yZSB0aGFuICVkIHRyZWVzIGdpdmVuOiAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjM2MgorIzogYnVpbHRpbi9kaWZmLmM6MzYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIm1vcmUgdGhhbiB0d28gYmxvYnMgZ2l2ZW46ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kaWZmLmM6MzcwCisjOiBidWlsdGluL2RpZmYuYzozNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5oYW5kbGVkIG9iamVjdCAnJXMnIGdpdmVuLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjAwCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6MjIKK21zZ2lkICJnaXQgZmFzdC1leHBvcnQgW3Jldi1saXN0LW9wdHNdIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NTgKK21zZ2lkICJzaG93IHByb2dyZXNzIGFmdGVyIDxuPiBvYmplY3RzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjAKK21zZ2lkICJzZWxlY3QgaGFuZGxpbmcgb2Ygc2lnbmVkIHRhZ3MiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2MworbXNnaWQgInNlbGVjdCBoYW5kbGluZyBvZiB0YWdzIHRoYXQgdGFnIGZpbHRlcmVkIG9iamVjdHMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NgorbXNnaWQgIkR1bXAgbWFya3MgdG8gdGhpcyBmaWxlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjgKK21zZ2lkICJJbXBvcnQgbWFya3MgZnJvbSB0aGlzIGZpbGUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3MAorbXNnaWQgIkZha2UgYSB0YWdnZXIgd2hlbiB0YWdzIGxhY2sgb25lIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzIKK21zZ2lkICJPdXRwdXQgZnVsbCB0cmVlIGZvciBlYWNoIGNvbW1pdCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc0Cittc2dpZCAiVXNlIHRoZSBkb25lIGZlYXR1cmUgdG8gdGVybWluYXRlIHRoZSBzdHJlYW0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3NQorbXNnaWQgIlNraXAgb3V0cHV0IG9mIGJsb2IgZGF0YSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZldGNoLmM6MjAKK21zZ2lkICJnaXQgZmV0Y2ggWzxvcHRpb25zPl0gWzxyZXBvc2l0b3J5PiBbPHJlZnNwZWM+Li4uXV0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjIxCittc2dpZCAiZ2l0IGZldGNoIFs8b3B0aW9ucz5dIDxncm91cD4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjIyCittc2dpZCAiZ2l0IGZldGNoIC0tbXVsdGlwbGUgWzxvcHRpb25zPl0gWyg8cmVwb3NpdG9yeT4gfCA8Z3JvdXA+KS4uLl0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjIzCittc2dpZCAiZ2l0IGZldGNoIC0tYWxsIFs8b3B0aW9ucz5dIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo2MAorbXNnaWQgImZldGNoIGZyb20gYWxsIHJlbW90ZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjYyCittc2dpZCAiYXBwZW5kIHRvIC5naXQvRkVUQ0hfSEVBRCBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo2NAorbXNnaWQgInBhdGggdG8gdXBsb2FkIHBhY2sgb24gcmVtb3RlIGVuZCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZldGNoLmM6NjUKK21zZ2lkICJmb3JjZSBvdmVyd3JpdGUgb2YgbG9jYWwgYnJhbmNoIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo2NworbXNnaWQgImZldGNoIGZyb20gbXVsdGlwbGUgcmVtb3RlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZldGNoLmM6NjkKK21zZ2lkICJmZXRjaCBhbGwgdGFncyBhbmQgYXNzb2NpYXRlZCBvYmplY3RzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3MQorbXNnaWQgImRvIG5vdCBmZXRjaCBhbGwgdGFncyAoLS1uby10YWdzKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZldGNoLmM6NzMKK21zZ2lkICJwcnVuZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMgbm8gbG9uZ2VyIG9uIHJlbW90ZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZldGNoLmM6NzQKK21zZ2lkICJvbi1kZW1hbmQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjc1Cittc2dpZCAiY29udHJvbCByZWN1cnNpdmUgZmV0Y2hpbmcgb2Ygc3VibW9kdWxlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZldGNoLmM6NzkKK21zZ2lkICJrZWVwIGRvd25sb2FkZWQgcGFjayIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZldGNoLmM6ODEKK21zZ2lkICJhbGxvdyB1cGRhdGluZyBvZiBIRUFEIHJlZiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZldGNoLmM6ODQKK21zZ2lkICJkZWVwZW4gaGlzdG9yeSBvZiBzaGFsbG93IGNsb25lIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4NgorbXNnaWQgImNvbnZlcnQgdG8gYSBjb21wbGV0ZSByZXBvc2l0b3J5IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4OCBidWlsdGluL2xvZy5jOjExMzAKK21zZ2lkICJkaXIiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjg5Cittc2dpZCAicHJlcGVuZCB0aGlzIHRvIHN1Ym1vZHVsZSBwYXRoIG91dHB1dCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZldGNoLmM6OTIKK21zZ2lkICJkZWZhdWx0IG1vZGUgZm9yIHJlY3Vyc2lvbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZldGNoLmM6MjA0CiBtc2dpZCAiQ291bGRuJ3QgZmluZCByZW1vdGUgcmVmIEhFQUQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI1MworIzogYnVpbHRpbi9mZXRjaC5jOjI1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJvYmplY3QgJXMgbm90IGZvdW5kIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNTkKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyNjIKIG1zZ2lkICJbdXAgdG8gZGF0ZV0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI3MworIzogYnVpbHRpbi9mZXRjaC5jOjI3NgogIywgYy1mb3JtYXQKIG1zZ2lkICIhICUtKnMgJS0qcyAtPiAlcyAgKGNhbid0IGZldGNoIGluIGN1cnJlbnQgYnJhbmNoKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Mjc0IGJ1aWx0aW4vZmV0Y2guYzozNjAKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyNzcgYnVpbHRpbi9mZXRjaC5jOjM2MwogbXNnaWQgIltyZWplY3RlZF0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI4NQorIzogYnVpbHRpbi9mZXRjaC5jOjI4OAogbXNnaWQgIlt0YWcgdXBkYXRlXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Mjg3IGJ1aWx0aW4vZmV0Y2guYzozMjIgYnVpbHRpbi9mZXRjaC5jOjM0MAorIzogYnVpbHRpbi9mZXRjaC5jOjI5MCBidWlsdGluL2ZldGNoLmM6MzI1IGJ1aWx0aW4vZmV0Y2guYzozNDMKIG1zZ2lkICIgICh1bmFibGUgdG8gdXBkYXRlIGxvY2FsIHJlZikiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjMwNQorIzogYnVpbHRpbi9mZXRjaC5jOjMwOAogbXNnaWQgIltuZXcgdGFnXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzA4CisjOiBidWlsdGluL2ZldGNoLmM6MzExCiBtc2dpZCAiW25ldyBicmFuY2hdIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMTEKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMTQKIG1zZ2lkICJbbmV3IHJlZl0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM1NgorIzogYnVpbHRpbi9mZXRjaC5jOjM1OQogbXNnaWQgInVuYWJsZSB0byB1cGRhdGUgbG9jYWwgcmVmIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozNTYKKyM6IGJ1aWx0aW4vZmV0Y2guYzozNTkKIG1zZ2lkICJmb3JjZWQgdXBkYXRlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozNjIKKyM6IGJ1aWx0aW4vZmV0Y2guYzozNjUKIG1zZ2lkICIobm9uLWZhc3QtZm9yd2FyZCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM5MyBidWlsdGluL2ZldGNoLmM6Njg1CisjOiBidWlsdGluL2ZldGNoLmM6Mzk2IGJ1aWx0aW4vZmV0Y2guYzo2ODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gJXM6ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjQwMgorIzogYnVpbHRpbi9mZXRjaC5jOjQwNQogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBkaWQgbm90IHNlbmQgYWxsIG5lY2Vzc2FyeSBvYmplY3RzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjQ4OAorIzogYnVpbHRpbi9mZXRjaC5jOjQ5MQogIywgYy1mb3JtYXQKIG1zZ2lkICJGcm9tICUuKnNcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NDk5CisjOiBidWlsdGluL2ZldGNoLmM6NTAyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJzb21lIGxvY2FsIHJlZnMgY291bGQgbm90IGJlIHVwZGF0ZWQ7IHRyeSBydW5uaW5nXG4iCiAiICdnaXQgcmVtb3RlIHBydW5lICVzJyB0byByZW1vdmUgYW55IG9sZCwgY29uZmxpY3RpbmcgYnJhbmNoZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjU0OQorIzogYnVpbHRpbi9mZXRjaC5jOjU1MgogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAoJXMgd2lsbCBiZWNvbWUgZGFuZ2xpbmcpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NTAKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgKCVzIGhhcyBiZWNvbWUgZGFuZ2xpbmcpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NTcKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NjAKIG1zZ2lkICJbZGVsZXRlZF0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjU1OCBidWlsdGluL3JlbW90ZS5jOjEwNTUKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NjEgYnVpbHRpbi9yZW1vdGUuYzoxMDU1CiBtc2dpZCAiKG5vbmUpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo2NzUKKyM6IGJ1aWx0aW4vZmV0Y2guYzo2NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVmdXNpbmcgdG8gZmV0Y2ggaW50byBjdXJyZW50IGJyYW5jaCAlcyBvZiBub24tYmFyZSByZXBvc2l0b3J5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo3MDkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3MTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRG9uJ3Qga25vdyBob3cgdG8gZmV0Y2ggZnJvbSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Nzg2CisjOiBidWlsdGluL2ZldGNoLmM6Nzg5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk9wdGlvbiBcIiVzXCIgdmFsdWUgXCIlc1wiIGlzIG5vdCB2YWxpZCBmb3IgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjc4OQorIzogYnVpbHRpbi9mZXRjaC5jOjc5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJPcHRpb24gXCIlc1wiIGlzIGlnbm9yZWQgZm9yICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg4OAorIzogYnVpbHRpbi9mZXRjaC5jOjg5NAogIywgYy1mb3JtYXQKIG1zZ2lkICJGZXRjaGluZyAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo4OTAgYnVpbHRpbi9yZW1vdGUuYzoxMDAKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4OTYgYnVpbHRpbi9yZW1vdGUuYzoxMDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZldGNoICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5MDcKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5MTUKIG1zZ2lkICIiCiAiTm8gcmVtb3RlIHJlcG9zaXRvcnkgc3BlY2lmaWVkLiAgUGxlYXNlLCBzcGVjaWZ5IGVpdGhlciBhIFVSTCBvciBhXG4iCiAicmVtb3RlIG5hbWUgZnJvbSB3aGljaCBuZXcgcmV2aXNpb25zIHNob3VsZCBiZSBmZXRjaGVkLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTI3CisjOiBidWlsdGluL2ZldGNoLmM6OTM1CiBtc2dpZCAiWW91IG5lZWQgdG8gc3BlY2lmeSBhIHRhZyBuYW1lLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTc5CisjOiBidWlsdGluL2ZldGNoLmM6OTgxCittc2dpZCAiLS1kZXB0aCBhbmQgLS11bnNoYWxsb3cgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjk4MworbXNnaWQgIi0tdW5zaGFsbG93IG9uIGEgY29tcGxldGUgcmVwb3NpdG9yeSBkb2VzIG5vdCBtYWtlIHNlbnNlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDAyCiBtc2dpZCAiZmV0Y2ggLS1hbGwgZG9lcyBub3QgdGFrZSBhIHJlcG9zaXRvcnkgYXJndW1lbnQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjk4MQorIzogYnVpbHRpbi9mZXRjaC5jOjEwMDQKIG1zZ2lkICJmZXRjaCAtLWFsbCBkb2VzIG5vdCBtYWtlIHNlbnNlIHdpdGggcmVmc3BlY3MiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjk5MgorIzogYnVpbHRpbi9mZXRjaC5jOjEwMTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gc3VjaCByZW1vdGUgb3IgcmVtb3RlIGdyb3VwOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MTAwMAorIzogYnVpbHRpbi9mZXRjaC5jOjEwMjMKIG1zZ2lkICJGZXRjaGluZyBhIGdyb3VwIGFuZCBzcGVjaWZ5aW5nIHJlZnNwZWNzIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIiIKIAorIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6MTMKK21zZ2lkICJnaXQgZm10LW1lcmdlLW1zZyBbLW0gPG1lc3NhZ2U+XSBbLS1sb2dbPTxuPl18LS1uby1sb2ddIFstLWZpbGUgPGZpbGU+XSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjMgYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY2IGJ1aWx0aW4vZ3JlcC5jOjcwMQorIzogYnVpbHRpbi9tZXJnZS5jOjE4OCBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU1IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzUKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ2IHBhcnNlLW9wdGlvbnMuaDoxMzMgcGFyc2Utb3B0aW9ucy5oOjIzOQorbXNnaWQgIm4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY0Cittc2dpZCAicG9wdWxhdGUgbG9nIHdpdGggYXQgbW9zdCA8bj4gZW50cmllcyBmcm9tIHNob3J0bG9nIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2NworbXNnaWQgImFsaWFzIGZvciAtLWxvZyAoZGVwcmVjYXRlZCkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjcwCittc2dpZCAidGV4dCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NzEKK21zZ2lkICJ1c2UgPHRleHQ+IGFzIHN0YXJ0IG9mIG1lc3NhZ2UiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjcyCittc2dpZCAiZmlsZSB0byByZWFkIGZyb20iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzo5NzkKK21zZ2lkICJnaXQgZm9yLWVhY2gtcmVmIFtvcHRpb25zXSBbPHBhdHRlcm4+XSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjk5NAorbXNnaWQgInF1b3RlIHBsYWNlaG9sZGVycyBzdWl0YWJseSBmb3Igc2hlbGxzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6OTk2Cittc2dpZCAicXVvdGUgcGxhY2Vob2xkZXJzIHN1aXRhYmx5IGZvciBwZXJsIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6OTk4Cittc2dpZCAicXVvdGUgcGxhY2Vob2xkZXJzIHN1aXRhYmx5IGZvciBweXRob24iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzoxMDAwCittc2dpZCAicXVvdGUgcGxhY2Vob2xkZXJzIHN1aXRhYmx5IGZvciB0Y2wiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzoxMDAzCittc2dpZCAic2hvdyBvbmx5IDxuPiBtYXRjaGVkIHJlZnMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzoxMDA0Cittc2dpZCAiZm9ybWF0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6MTAwNAorbXNnaWQgImZvcm1hdCB0byB1c2UgZm9yIHRoZSBvdXRwdXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzoxMDA1Cittc2dpZCAia2V5IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6MTAwNgorbXNnaWQgImZpZWxkIG5hbWUgdG8gc29ydCBvbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZzY2suYzo2MDgKK21zZ2lkICJnaXQgZnNjayBbb3B0aW9uc10gWzxvYmplY3Q+Li4uXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZzY2suYzo2MTQKK21zZ2lkICJzaG93IHVucmVhY2hhYmxlIG9iamVjdHMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mc2NrLmM6NjE1Cittc2dpZCAic2hvdyBkYW5nbGluZyBvYmplY3RzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZnNjay5jOjYxNgorbXNnaWQgInJlcG9ydCB0YWdzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZnNjay5jOjYxNworbXNnaWQgInJlcG9ydCByb290IG5vZGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZnNjay5jOjYxOAorbXNnaWQgIm1ha2UgaW5kZXggb2JqZWN0cyBoZWFkIG5vZGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZnNjay5jOjYxOQorbXNnaWQgIm1ha2UgcmVmbG9ncyBoZWFkIG5vZGVzIChkZWZhdWx0KSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZzY2suYzo2MjAKK21zZ2lkICJhbHNvIGNvbnNpZGVyIHBhY2tzIGFuZCBhbHRlcm5hdGUgb2JqZWN0cyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZzY2suYzo2MjEKK21zZ2lkICJlbmFibGUgbW9yZSBzdHJpY3QgY2hlY2tpbmciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mc2NrLmM6NjIzCittc2dpZCAid3JpdGUgZGFuZ2xpbmcgb2JqZWN0cyBpbiAuZ2l0L2xvc3QtZm91bmQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9mc2NrLmM6NjI0IGJ1aWx0aW4vcHJ1bmUuYzoxMzQKK21zZ2lkICJzaG93IHByb2dyZXNzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ2MuYzoyMgorbXNnaWQgImdpdCBnYyBbb3B0aW9uc10iCittc2dzdHIgIiIKKwogIzogYnVpbHRpbi9nYy5jOjYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgJXM6ICclcyciCkBAIC0yNjEzLDM3OSArNDcwNiw2ODAgQEAKIG1zZ2lkICJpbnNhbmVseSBsb25nIG9iamVjdCBkaXJlY3RvcnkgJS4qcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2djLmM6MjIxCi0jLCBjLWZvcm1hdAotbXNnaWQgIkF1dG8gcGFja2luZyB0aGUgcmVwb3NpdG9yeSBmb3Igb3B0aW11bSBwZXJmb3JtYW5jZS5cbiIKKyM6IGJ1aWx0aW4vZ2MuYzoxNzkKK21zZ2lkICJwcnVuZSB1bnJlZmVyZW5jZWQgb2JqZWN0cyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2djLmM6MjI0CisjOiBidWlsdGluL2djLmM6MTgxCittc2dpZCAiYmUgbW9yZSB0aG9yb3VnaCAoaW5jcmVhc2VkIHJ1bnRpbWUpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ2MuYzoxODIKK21zZ2lkICJlbmFibGUgYXV0by1nYyBtb2RlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ2MuYzoyMjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkF1dG8gcGFja2luZyB0aGUgcmVwb3NpdG9yeSBmb3Igb3B0aW11bSBwZXJmb3JtYW5jZS4gWW91IG1heSBhbHNvXG4iCiAicnVuIFwiZ2l0IGdjXCIgbWFudWFsbHkuIFNlZSBcImdpdCBoZWxwIGdjXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9nYy5jOjI1MQorIzogYnVpbHRpbi9nYy5jOjI0OQogbXNnaWQgIiIKICJUaGVyZSBhcmUgdG9vIG1hbnkgdW5yZWFjaGFibGUgbG9vc2Ugb2JqZWN0czsgcnVuICdnaXQgcHJ1bmUnIHRvIHJlbW92ZSB0aGVtLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2dyZXAuYzoyMTYKKyM6IGJ1aWx0aW4vZ3JlcC5jOjIyCittc2dpZCAiZ2l0IGdyZXAgW29wdGlvbnNdIFstZV0gPHBhdHRlcm4+IFs8cmV2Pi4uLl0gW1stLV0gPHBhdGg+Li4uXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2dyZXAuYzoyMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ3JlcDogZmFpbGVkIHRvIGNyZWF0ZSB0aHJlYWQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjQwMgorIzogYnVpbHRpbi9ncmVwLmM6MzY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBjaGRpcjogJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NDc4IGJ1aWx0aW4vZ3JlcC5jOjUxMgorIzogYnVpbHRpbi9ncmVwLmM6NDQzIGJ1aWx0aW4vZ3JlcC5jOjQ3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcmVhZCB0cmVlICglcykiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NTI2CisjOiBidWlsdGluL2dyZXAuYzo0OTMKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGdyZXAgZnJvbSBvYmplY3Qgb2YgdHlwZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2dyZXAuYzo1ODQKKyM6IGJ1aWx0aW4vZ3JlcC5jOjU1MQogIywgYy1mb3JtYXQKIG1zZ2lkICJzd2l0Y2ggYCVjJyBleHBlY3RzIGEgbnVtZXJpY2FsIHZhbHVlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjYwMQorIzogYnVpbHRpbi9ncmVwLmM6NTY4CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBvcGVuICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6ODg1CisjOiBidWlsdGluL2dyZXAuYzo2NDMKK21zZ2lkICJzZWFyY2ggaW4gaW5kZXggaW5zdGVhZCBvZiBpbiB0aGUgd29yayB0cmVlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY0NQorbXNnaWQgImZpbmQgaW4gY29udGVudHMgbm90IG1hbmFnZWQgYnkgZ2l0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY0NworbXNnaWQgInNlYXJjaCBpbiBib3RoIHRyYWNrZWQgYW5kIHVudHJhY2tlZCBmaWxlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2dyZXAuYzo2NDkKK21zZ2lkICJzZWFyY2ggYWxzbyBpbiBpZ25vcmVkIGZpbGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY1MgorbXNnaWQgInNob3cgbm9uLW1hdGNoaW5nIGxpbmVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY1NAorbXNnaWQgImNhc2UgaW5zZW5zaXRpdmUgbWF0Y2hpbmciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ncmVwLmM6NjU2Cittc2dpZCAibWF0Y2ggcGF0dGVybnMgb25seSBhdCB3b3JkIGJvdW5kYXJpZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ncmVwLmM6NjU4Cittc2dpZCAicHJvY2VzcyBiaW5hcnkgZmlsZXMgYXMgdGV4dCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2dyZXAuYzo2NjAKK21zZ2lkICJkb24ndCBtYXRjaCBwYXR0ZXJucyBpbiBiaW5hcnkgZmlsZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ncmVwLmM6NjYzCittc2dpZCAiZGVzY2VuZCBhdCBtb3N0IDxkZXB0aD4gbGV2ZWxzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY2NworbXNnaWQgInVzZSBleHRlbmRlZCBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb25zIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY3MAorbXNnaWQgInVzZSBiYXNpYyBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb25zIChkZWZhdWx0KSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2dyZXAuYzo2NzMKK21zZ2lkICJpbnRlcnByZXQgcGF0dGVybnMgYXMgZml4ZWQgc3RyaW5ncyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2dyZXAuYzo2NzYKK21zZ2lkICJ1c2UgUGVybC1jb21wYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ncmVwLmM6Njc5Cittc2dpZCAic2hvdyBsaW5lIG51bWJlcnMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ncmVwLmM6NjgwCittc2dpZCAiZG9uJ3Qgc2hvdyBmaWxlbmFtZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ncmVwLmM6NjgxCittc2dpZCAic2hvdyBmaWxlbmFtZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ncmVwLmM6NjgzCittc2dpZCAic2hvdyBmaWxlbmFtZXMgcmVsYXRpdmUgdG8gdG9wIGRpcmVjdG9yeSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2dyZXAuYzo2ODUKK21zZ2lkICJzaG93IG9ubHkgZmlsZW5hbWVzIGluc3RlYWQgb2YgbWF0Y2hpbmcgbGluZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ncmVwLmM6Njg3Cittc2dpZCAic3lub255bSBmb3IgLS1maWxlcy13aXRoLW1hdGNoZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ncmVwLmM6NjkwCittc2dpZCAic2hvdyBvbmx5IHRoZSBuYW1lcyBvZiBmaWxlcyB3aXRob3V0IG1hdGNoIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5MgorbXNnaWQgInByaW50IE5VTCBhZnRlciBmaWxlbmFtZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ncmVwLmM6Njk0Cittc2dpZCAic2hvdyB0aGUgbnVtYmVyIG9mIG1hdGNoZXMgaW5zdGVhZCBvZiBtYXRjaGluZyBsaW5lcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2dyZXAuYzo2OTUKK21zZ2lkICJoaWdobGlnaHQgbWF0Y2hlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2dyZXAuYzo2OTcKK21zZ2lkICJwcmludCBlbXB0eSBsaW5lIGJldHdlZW4gbWF0Y2hlcyBmcm9tIGRpZmZlcmVudCBmaWxlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2dyZXAuYzo2OTkKK21zZ2lkICJzaG93IGZpbGVuYW1lIG9ubHkgb25jZSBhYm92ZSBtYXRjaGVzIGZyb20gc2FtZSBmaWxlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcwMgorbXNnaWQgInNob3cgPG4+IGNvbnRleHQgbGluZXMgYmVmb3JlIGFuZCBhZnRlciBtYXRjaGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcwNQorbXNnaWQgInNob3cgPG4+IGNvbnRleHQgbGluZXMgYmVmb3JlIG1hdGNoZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ncmVwLmM6NzA3Cittc2dpZCAic2hvdyA8bj4gY29udGV4dCBsaW5lcyBhZnRlciBtYXRjaGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcwOAorbXNnaWQgInNob3J0Y3V0IGZvciAtQyBOVU0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ncmVwLmM6NzExCittc2dpZCAic2hvdyBhIGxpbmUgd2l0aCB0aGUgZnVuY3Rpb24gbmFtZSBiZWZvcmUgbWF0Y2hlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2dyZXAuYzo3MTMKK21zZ2lkICJzaG93IHRoZSBzdXJyb3VuZGluZyBmdW5jdGlvbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2dyZXAuYzo3MTYKK21zZ2lkICJyZWFkIHBhdHRlcm5zIGZyb20gZmlsZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2dyZXAuYzo3MTgKK21zZ2lkICJtYXRjaCA8cGF0dGVybj4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ncmVwLmM6NzIwCittc2dpZCAiY29tYmluZSBwYXR0ZXJucyBzcGVjaWZpZWQgd2l0aCAtZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2dyZXAuYzo3MzIKK21zZ2lkICJpbmRpY2F0ZSBoaXQgd2l0aCBleGl0IHN0YXR1cyB3aXRob3V0IG91dHB1dCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2dyZXAuYzo3MzQKK21zZ2lkICJzaG93IG9ubHkgbWF0Y2hlcyBmcm9tIGZpbGVzIHRoYXQgbWF0Y2ggYWxsIHBhdHRlcm5zIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjczNgorbXNnaWQgInNob3cgcGFyc2UgdHJlZSBmb3IgZ3JlcCBleHByZXNzaW9uIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0MAorbXNnaWQgInBhZ2VyIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0MAorbXNnaWQgInNob3cgbWF0Y2hpbmcgZmlsZXMgaW4gdGhlIHBhZ2VyIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0MworbXNnaWQgImFsbG93IGNhbGxpbmcgb2YgZ3JlcCgxKSAoaWdub3JlZCBieSB0aGlzIGJ1aWxkKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2dyZXAuYzo3NDQgYnVpbHRpbi9zaG93LXJlZi5jOjE4NAorbXNnaWQgInNob3cgdXNhZ2UiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ncmVwLmM6ODExCiBtc2dpZCAibm8gcGF0dGVybiBnaXZlbi4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6ODk5Ci0jLCBjLWZvcm1hdAotbXNnaWQgImJhZCBvYmplY3QgJXMiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9ncmVwLmM6OTQwCisjOiBidWlsdGluL2dyZXAuYzo4NjYKIG1zZ2lkICItLW9wZW4tZmlsZXMtaW4tcGFnZXIgb25seSB3b3JrcyBvbiB0aGUgd29ya3RyZWUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6OTYzCisjOiBidWlsdGluL2dyZXAuYzo4ODkKIG1zZ2lkICItLWNhY2hlZCBvciAtLXVudHJhY2tlZCBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tbm8taW5kZXguIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjk2OAorIzogYnVpbHRpbi9ncmVwLmM6ODk0CiBtc2dpZCAiLS1uby1pbmRleCBvciAtLXVudHJhY2tlZCBjYW5ub3QgYmUgdXNlZCB3aXRoIHJldnMuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjk3MQorIzogYnVpbHRpbi9ncmVwLmM6ODk3CiBtc2dpZCAiLS1bbm8tXWV4Y2x1ZGUtc3RhbmRhcmQgY2Fubm90IGJlIHVzZWQgZm9yIHRyYWNrZWQgY29udGVudHMuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjk3OQorIzogYnVpbHRpbi9ncmVwLmM6OTA1CiBtc2dpZCAiYm90aCAtLWNhY2hlZCBhbmQgdHJlZXMgYXJlIGdpdmVuLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzo1OQorIzogYnVpbHRpbi9oYXNoLW9iamVjdC5jOjYwCittc2dpZCAiIgorImdpdCBoYXNoLW9iamVjdCBbLXQgPHR5cGU+XSBbLXddIFstLXBhdGg9PGZpbGU+fC0tbm8tZmlsdGVyc10gWy0tc3RkaW5dIFstLV0gIgorIjxmaWxlPi4uLiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NjEKK21zZ2lkICJnaXQgaGFzaC1vYmplY3QgIC0tc3RkaW4tcGF0aHMgPCA8bGlzdC1vZi1wYXRocz4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9oYXNoLW9iamVjdC5jOjcyCittc2dpZCAidHlwZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzIKK21zZ2lkICJvYmplY3QgdHlwZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzMKK21zZ2lkICJ3cml0ZSB0aGUgb2JqZWN0IGludG8gdGhlIG9iamVjdCBkYXRhYmFzZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzQKK21zZ2lkICJyZWFkIHRoZSBvYmplY3QgZnJvbSBzdGRpbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzYKK21zZ2lkICJzdG9yZSBmaWxlIGFzIGlzIHdpdGhvdXQgZmlsdGVycyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzcKK21zZ2lkICJwcm9jZXNzIGZpbGUgYXMgaXQgd2VyZSBmcm9tIHRoaXMgcGF0aCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2hlbHAuYzo0MworbXNnaWQgInByaW50IGFsbCBhdmFpbGFibGUgY29tbWFuZHMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDQKK21zZ2lkICJwcmludCBsaXN0IG9mIHVzZWZ1bCBndWlkZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDUKK21zZ2lkICJzaG93IG1hbiBwYWdlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQ2Cittc2dpZCAic2hvdyBtYW51YWwgaW4gd2ViIGJyb3dzZXIiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDgKK21zZ2lkICJzaG93IGluZm8gcGFnZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2hlbHAuYzo1NAorbXNnaWQgImdpdCBoZWxwIFstLWFsbF0gWy0tZ3VpZGVzXSBbLS1tYW58LS13ZWJ8LS1pbmZvXSBbY29tbWFuZF0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9oZWxwLmM6NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGhlbHAgZm9ybWF0ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6ODcKKyM6IGJ1aWx0aW4vaGVscC5jOjk0CiBtc2dpZCAiRmFpbGVkIHRvIHN0YXJ0IGVtYWNzY2xpZW50LiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMDAKKyM6IGJ1aWx0aW4vaGVscC5jOjEwNwogbXNnaWQgIkZhaWxlZCB0byBwYXJzZSBlbWFjc2NsaWVudCB2ZXJzaW9uLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMDgKKyM6IGJ1aWx0aW4vaGVscC5jOjExNQogIywgYy1mb3JtYXQKIG1zZ2lkICJlbWFjc2NsaWVudCB2ZXJzaW9uICclZCcgdG9vIG9sZCAoPCAyMikuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjEyNiBidWlsdGluL2hlbHAuYzoxNTQgYnVpbHRpbi9oZWxwLmM6MTYzIGJ1aWx0aW4vaGVscC5jOjE3MQorIzogYnVpbHRpbi9oZWxwLmM6MTMzIGJ1aWx0aW4vaGVscC5jOjE2MSBidWlsdGluL2hlbHAuYzoxNzAgYnVpbHRpbi9oZWxwLmM6MTc4CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBleGVjICclcyc6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjIxMQorIzogYnVpbHRpbi9oZWxwLmM6MjE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnOiBwYXRoIGZvciB1bnN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgogIlBsZWFzZSBjb25zaWRlciB1c2luZyAnbWFuLjx0b29sPi5jbWQnIGluc3RlYWQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjIyMworIzogYnVpbHRpbi9oZWxwLmM6MjMwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnOiBjbWQgZm9yIHN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgogIlBsZWFzZSBjb25zaWRlciB1c2luZyAnbWFuLjx0b29sPi5wYXRoJyBpbnN0ZWFkLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzoyODcKLW1zZ2lkICJUaGUgbW9zdCBjb21tb25seSB1c2VkIGdpdCBjb21tYW5kcyBhcmU6IgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vaGVscC5jOjM1NQorIzogYnVpbHRpbi9oZWxwLmM6MzUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6IHVua25vd24gbWFuIHZpZXdlci4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MzcyCisjOiBidWlsdGluL2hlbHAuYzozNjgKIG1zZ2lkICJubyBtYW4gdmlld2VyIGhhbmRsZWQgdGhlIHJlcXVlc3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MzgwCisjOiBidWlsdGluL2hlbHAuYzozNzYKIG1zZ2lkICJubyBpbmZvIHZpZXdlciBoYW5kbGVkIHRoZSByZXF1ZXN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjM5MQotIywgYy1mb3JtYXQKLW1zZ2lkICInJXMnOiBub3QgYSBkb2N1bWVudGF0aW9uIGRpcmVjdG9yeS4iCisjOiBidWlsdGluL2hlbHAuYzo0MjIKK21zZ2lkICJEZWZpbmluZyBhdHRyaWJ1dGVzIHBlciBwYXRoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQzMiBidWlsdGluL2hlbHAuYzo0MzkKKyM6IGJ1aWx0aW4vaGVscC5jOjQyMworbXNnaWQgIkEgR2l0IGdsb3NzYXJ5IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNAorbXNnaWQgIlNwZWNpZmllcyBpbnRlbnRpb25hbGx5IHVudHJhY2tlZCBmaWxlcyB0byBpZ25vcmUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI1Cittc2dpZCAiRGVmaW5pbmcgc3VibW9kdWxlIHByb3BlcnRpZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI2Cittc2dpZCAiU3BlY2lmeWluZyByZXZpc2lvbnMgYW5kIHJhbmdlcyBmb3IgR2l0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNworbXNnaWQgIkEgdHV0b3JpYWwgaW50cm9kdWN0aW9uIHRvIEdpdCAoZm9yIHZlcnNpb24gMS41LjEgb3IgbmV3ZXIpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyOAorbXNnaWQgIkFuIG92ZXJ2aWV3IG9mIHJlY29tbWVuZGVkIHdvcmtmbG93cyB3aXRoIEdpdCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2hlbHAuYzo0NDAKK21zZ2lkICJUaGUgY29tbW9uIEdpdCBndWlkZXMgYXJlOlxuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQ2MiBidWlsdGluL2hlbHAuYzo0NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAidXNhZ2U6ICVzJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDUzCisjOiBidWlsdGluL2hlbHAuYzo0OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiYGdpdCAlcycgaXMgYWxpYXNlZCB0byBgJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE2OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTgyCiAjLCBjLWZvcm1hdAogbXNnaWQgIm9iamVjdCB0eXBlIG1pc21hdGNoIGF0ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE4OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjAyCiBtc2dpZCAib2JqZWN0IG9mIHVuZXhwZWN0ZWQgdHlwZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyMjYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgZmlsbCAlZCBieXRlIgogbXNnaWRfcGx1cmFsICJjYW5ub3QgZmlsbCAlZCBieXRlcyIKIG1zZ3N0clswXSAiIgogbXNnc3RyWzFdICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIzNgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjQ5CiBtc2dpZCAiZWFybHkgRU9GIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIzNworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjUwCiBtc2dpZCAicmVhZCBlcnJvciBvbiBpbnB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNDkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI2MgogbXNnaWQgInVzZWQgbW9yZSBieXRlcyB0aGFuIHdlcmUgYXZhaWxhYmxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI1NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjY5CiBtc2dpZCAicGFjayB0b28gbGFyZ2UgZm9yIGN1cnJlbnQgZGVmaW5pdGlvbiBvZiBvZmZfdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNzIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6Mjc3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyOTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gcGFja2ZpbGUgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyOTEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMwNAogbXNnaWQgInBhY2sgc2lnbmF0dXJlIG1pc21hdGNoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMxMQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzA2CisjLCBjLWZvcm1hdAorbXNnaWQgInBhY2sgdmVyc2lvbiAlPFBSSXUzMj4gdW5zdXBwb3J0ZWQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzI0CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhY2sgaGFzIGJhZCBvYmplY3QgYXQgb2Zmc2V0ICVsdTogJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDA1CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo0NDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW5mbGF0ZSByZXR1cm5lZCAlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0NTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ5NQogbXNnaWQgIm9mZnNldCB2YWx1ZSBvdmVyZmxvdyBmb3IgZGVsdGEgYmFzZSBvYmplY3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDU4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1MDMKIG1zZ2lkICJkZWx0YSBiYXNlIG9mZnNldCBpcyBvdXQgb2YgYm91bmQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDY2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1MTEKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93biBvYmplY3QgdHlwZSAlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0OTUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU0MgogbXNnaWQgImNhbm5vdCBwcmVhZCBwYWNrIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDk3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAicHJlbWF0dXJlIGVuZCBvZiBwYWNrIGZpbGUsICVsdSBieXRlIG1pc3NpbmciCiBtc2dpZF9wbHVyYWwgInByZW1hdHVyZSBlbmQgb2YgcGFjayBmaWxlLCAlbHUgYnl0ZXMgbWlzc2luZyIKIG1zZ3N0clswXSAiIgogbXNnc3RyWzFdICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUxMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTcwCiBtc2dpZCAic2VyaW91cyBpbmZsYXRlIGluY29uc2lzdGVuY3kiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTgzCi0jLCBjLWZvcm1hdAotbXNnaWQgImNhbm5vdCByZWFkIGV4aXN0aW5nIG9iamVjdCAlcyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo1ODYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2MSBidWlsdGluL2luZGV4LXBhY2suYzo2NjcgYnVpbHRpbi9pbmRleC1wYWNrLmM6NjkwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3MjQgYnVpbHRpbi9pbmRleC1wYWNrLmM6NzMzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlNIQTEgQ09MTElTSU9OIEZPVU5EIFdJVEggJXMgISIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo1OTgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2NCBidWlsdGluL3BhY2stb2JqZWN0cy5jOjE3MAorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHJlYWQgJXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzMwCisjLCBjLWZvcm1hdAorbXNnaWQgImNhbm5vdCByZWFkIGV4aXN0aW5nIG9iamVjdCAlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBibG9iIG9iamVjdCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo2MTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjYxMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzYxCiBtc2dpZCAiRXJyb3IgaW4gb2JqZWN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjYxNAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vdCBhbGwgY2hpbGQgb2JqZWN0cyBvZiAlcyBhcmUgcmVhY2hhYmxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY4NyBidWlsdGluL2luZGV4LXBhY2suYzo3MTMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjgzMyBidWlsdGluL2luZGV4LXBhY2suYzo4NjMKIG1zZ2lkICJmYWlsZWQgdG8gYXBwbHkgZGVsdGEiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODUwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDA0CiBtc2dpZCAiUmVjZWl2aW5nIG9iamVjdHMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODUwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDA0CiBtc2dpZCAiSW5kZXhpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo4NzIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzAKIG1zZ2lkICJwYWNrIGlzIGNvcnJ1cHRlZCAoU0hBMSBtaXNtYXRjaCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODc3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDM1CiBtc2dpZCAiY2Fubm90IGZzdGF0IHBhY2tmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg4MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzOAogbXNnaWQgInBhY2sgaGFzIGp1bmsgYXQgdGhlIGVuZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo5MDMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNDkKK21zZ2lkICJjb25mdXNpb24gYmV5b25kIGluc2FuaXR5IGluIHBhcnNlX3BhY2tfb2JqZWN0cygpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNzIKIG1zZ2lkICJSZXNvbHZpbmcgZGVsdGFzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjk1NAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA4MgorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gY3JlYXRlIHRocmVhZDogJXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEyNAogbXNnaWQgImNvbmZ1c2lvbiBiZXlvbmQgaW5zYW5pdHkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6OTczCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTMyCisjLCBjLWZvcm1hdAorbXNnaWQgImNvbXBsZXRlZCB3aXRoICVkIGxvY2FsIG9iamVjdHMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE0MgorIywgYy1mb3JtYXQKK21zZ2lkICJVbmV4cGVjdGVkIHRhaWwgY2hlY2tzdW0gZm9yICVzIChkaXNrIGNvcnJ1cHRpb24/KSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhY2sgaGFzICVkIHVucmVzb2x2ZWQgZGVsdGEiCiBtc2dpZF9wbHVyYWwgInBhY2sgaGFzICVkIHVucmVzb2x2ZWQgZGVsdGFzIgogbXNnc3RyWzBdICIiCiBtc2dzdHJbMV0gIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6OTk4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTcxCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBkZWZsYXRlIGFwcGVuZGVkIG9iamVjdCAoJWQpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNzcKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAibG9jYWwgb2JqZWN0ICVzIGlzIGNvcnJ1cHQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEwMQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI3NAogbXNnaWQgImVycm9yIHdoaWxlIGNsb3NpbmcgcGFjayBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMTQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyODcKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHdyaXRlIGtlZXAgZmlsZSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMjIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IGNsb3NlIHdyaXR0ZW4ga2VlcCBmaWxlICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEzNQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMwOAogbXNnaWQgImNhbm5vdCBzdG9yZSBwYWNrIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE0NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMxOQogbXNnaWQgImNhbm5vdCBzdG9yZSBpbmRleCBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNDcKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHBhY2suaW5kZXh2ZXJzaW9uPSU8UFJJdTMyPiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzU4CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgbnVtYmVyIG9mIHRocmVhZHMgc3BlY2lmaWVkICglZCkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM2MiBidWlsdGluL2luZGV4LXBhY2suYzoxNTM1CisjLCBjLWZvcm1hdAorbXNnaWQgIm5vIHRocmVhZHMgc3VwcG9ydCwgaWdub3JpbmcgJXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQyMAogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3Qgb3BlbiBleGlzdGluZyBwYWNrIGZpbGUgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjQ5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBvcGVuIGV4aXN0aW5nIHBhY2sgaWR4IGZpbGUgZm9yICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI5NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQ2OQogIywgYy1mb3JtYXQKIG1zZ2lkICJub24gZGVsdGE6ICVkIG9iamVjdCIKIG1zZ2lkX3BsdXJhbCAibm9uIGRlbHRhOiAlZCBvYmplY3RzIgogbXNnc3RyWzBdICIiCiBtc2dzdHJbMV0gIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMwMworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQ3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjaGFpbiBsZW5ndGggPSAlZDogJWx1IG9iamVjdCIKIG1zZ2lkX3BsdXJhbCAiY2hhaW4gbGVuZ3RoID0gJWQ6ICVsdSBvYmplY3RzIgogbXNnc3RyWzBdICIiCiBtc2dzdHJbMV0gIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMzMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTUwMwogbXNnaWQgIkNhbm5vdCBjb21lIGJhY2sgdG8gY3dkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNzQgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM3NwotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM4OSBidWlsdGluL2luZGV4LXBhY2suYzoxMzkzCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTQ3IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NjIgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQwNworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU4MAogbXNnaWQgIi0tZml4LXRoaW4gY2Fubm90IGJlIHVzZWQgd2l0aG91dCAtLXN0ZGluIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MTEgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQyMQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU4NCBidWlsdGluL2luZGV4LXBhY2suYzoxNTk0CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhY2tmaWxlIG5hbWUgJyVzJyBkb2VzIG5vdCBlbmQgd2l0aCAnLnBhY2snIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MzAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE2MDMKIG1zZ2lkICItLXZlcmlmeSB3aXRoIG5vIHBhY2tmaWxlIG5hbWUgZ2l2ZW4iCiBtc2dzdHIgIiIKIApAQCAtMzA1OSwyMiArNTQ1MywyMiBAQAogbXNnaWQgImluc2FuZSBnaXQgZGlyZWN0b3J5ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjMyMiBidWlsdGluL2luaXQtZGIuYzozMjUKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjMyMyBidWlsdGluL2luaXQtZGIuYzozMjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgYWxyZWFkeSBleGlzdHMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6MzU0CisjOiBidWlsdGluL2luaXQtZGIuYzozNTUKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGhhbmRsZSBmaWxlIHR5cGUgJWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6MzU3CisjOiBidWlsdGluL2luaXQtZGIuYzozNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIG1vdmUgJXMgdG8gJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6MzYyCisjOiBidWlsdGluL2luaXQtZGIuYzozNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBnaXQgbGluayAlcyIKIG1zZ3N0ciAiIgpAQCAtMzA4NCwxNTEgKzU0NzgsNDU2IEBACiAjLiAqIGV4aXN0aW5nIiBvciAiSW5pdGlhbGl6ZWQgZW1wdHkiLCB0aGUgc2Vjb25kICIgc2hhcmVkIiBvcgogIy4gKiAiIiwgYW5kIHRoZSBsYXN0ICclcyVzJyBpcyB0aGUgdmVyYmF0aW0gZGlyZWN0b3J5IG5hbWUuCiAjLgotIzogYnVpbHRpbi9pbml0LWRiLmM6NDE5CisjOiBidWlsdGluL2luaXQtZGIuYzo0MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMlcyBHaXQgcmVwb3NpdG9yeSBpbiAlcyVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6NDIwCisjOiBidWlsdGluL2luaXQtZGIuYzo0MjEKIG1zZ2lkICJSZWluaXRpYWxpemVkIGV4aXN0aW5nIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQyMAorIzogYnVpbHRpbi9pbml0LWRiLmM6NDIxCiBtc2dpZCAiSW5pdGlhbGl6ZWQgZW1wdHkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6NDIxCisjOiBidWlsdGluL2luaXQtZGIuYzo0MjIKIG1zZ2lkICIgc2hhcmVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQ0MAorIzogYnVpbHRpbi9pbml0LWRiLmM6NDQxCiBtc2dpZCAiY2Fubm90IHRlbGwgY3dkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjUyMSBidWlsdGluL2luaXQtZGIuYzo1MjgKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQ2NworbXNnaWQgIiIKKyJnaXQgaW5pdCBbLXEgfCAtLXF1aWV0XSBbLS1iYXJlXSBbLS10ZW1wbGF0ZT08dGVtcGxhdGUtZGlyZWN0b3J5Pl0gWy0tIgorInNoYXJlZFs9PHBlcm1pc3Npb25zPl1dIFtkaXJlY3RvcnldIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5MAorbXNnaWQgInBlcm1pc3Npb25zIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5MQorbXNnaWQgInNwZWNpZnkgdGhhdCB0aGUgZ2l0IHJlcG9zaXRvcnkgaXMgdG8gYmUgc2hhcmVkIGFtb25nc3Qgc2V2ZXJhbCB1c2VycyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2luaXQtZGIuYzo0OTMgYnVpbHRpbi9wcnVuZS1wYWNrZWQuYzo3NworbXNnaWQgImJlIHF1aWV0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjUyMiBidWlsdGluL2luaXQtZGIuYzo1MjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG1rZGlyICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjUzMgorIzogYnVpbHRpbi9pbml0LWRiLmM6NTMzCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBjaGRpciB0byAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo1NTQKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjU1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJXMgKG9yIC0td29yay10cmVlPTxkaXJlY3Rvcnk+KSBub3QgYWxsb3dlZCB3aXRob3V0IHNwZWNpZnlpbmcgJXMgKG9yIC0tZ2l0LSIKICJkaXI9PGRpcmVjdG9yeT4pIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjU3OAorIzogYnVpbHRpbi9pbml0LWRiLmM6NTc5CiBtc2dpZCAiQ2Fubm90IGFjY2VzcyBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjU4NQorIzogYnVpbHRpbi9pbml0LWRiLmM6NTg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBhY2Nlc3Mgd29yayB0cmVlICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxODgKKyM6IGJ1aWx0aW4vbG9nLmM6NDAKK21zZ2lkICJnaXQgbG9nIFs8b3B0aW9ucz5dIFs8cmV2aXNpb24gcmFuZ2U+XSBbWy0tXSA8cGF0aD4uLi5dXG4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9sb2cuYzo0MQorbXNnaWQgIiAgIG9yOiBnaXQgc2hvdyBbb3B0aW9uc10gPG9iamVjdD4uLi4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9sb2cuYzoxMDMKK21zZ2lkICJzdXBwcmVzcyBkaWZmIG91dHB1dCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjEwNAorbXNnaWQgInNob3cgc291cmNlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTA1Cittc2dpZCAiVXNlIG1haWwgbWFwIGZpbGUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9sb2cuYzoxMDYKK21zZ2lkICJkZWNvcmF0ZSBvcHRpb25zIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTk5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZpbmFsIG91dHB1dDogJWQgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjQwMSBidWlsdGluL2xvZy5jOjQ4OQorIzogYnVpbHRpbi9sb2cuYzo0MjIgYnVpbHRpbi9sb2cuYzo1MTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlYWQgb2JqZWN0ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NTEzCisjOiBidWlsdGluL2xvZy5jOjUzOAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIHR5cGU6ICVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NjAyCisjOiBidWlsdGluL2xvZy5jOjYzOAogbXNnaWQgImZvcm1hdC5oZWFkZXJzIHdpdGhvdXQgdmFsdWUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzo2NzYKKyM6IGJ1aWx0aW4vbG9nLmM6NzIwCiBtc2dpZCAibmFtZSBvZiBvdXRwdXQgZGlyZWN0b3J5IGlzIHRvbyBsb25nIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6Njg3CisjOiBidWlsdGluL2xvZy5jOjczNgogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3Qgb3BlbiBwYXRjaCBmaWxlICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NzAxCisjOiBidWlsdGluL2xvZy5jOjc1MAogbXNnaWQgIk5lZWQgZXhhY3RseSBvbmUgcmFuZ2UuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NzA5CisjOiBidWlsdGluL2xvZy5jOjc1OAogbXNnaWQgIk5vdCBhIHJhbmdlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjc4NgorIzogYnVpbHRpbi9sb2cuYzo4NjAKIG1zZ2lkICJDb3ZlciBsZXR0ZXIgbmVlZHMgZW1haWwgZm9ybWF0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6ODU5CisjOiBidWlsdGluL2xvZy5jOjkzNgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnNhbmUgaW4tcmVwbHktdG86ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6OTMyCisjOiBidWlsdGluL2xvZy5jOjk2NAorbXNnaWQgImdpdCBmb3JtYXQtcGF0Y2ggW29wdGlvbnNdIFs8c2luY2U+IHwgPHJldmlzaW9uIHJhbmdlPl0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9sb2cuYzoxMDA5CiBtc2dpZCAiVHdvIG91dHB1dCBkaXJlY3Rvcmllcz8iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTUzCi0jLCBjLWZvcm1hdAotbXNnaWQgImJvZ3VzIGNvbW1pdHRlciBpbmZvICVzIgorIzogYnVpbHRpbi9sb2cuYzoxMTA4Cittc2dpZCAidXNlIFtQQVRDSCBuL21dIGV2ZW4gd2l0aCBhIHNpbmdsZSBwYXRjaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjExOTgKKyM6IGJ1aWx0aW4vbG9nLmM6MTExMQorbXNnaWQgInVzZSBbUEFUQ0hdIGV2ZW4gd2l0aCBtdWx0aXBsZSBwYXRjaGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTExNQorbXNnaWQgInByaW50IHBhdGNoZXMgdG8gc3RhbmRhcmQgb3V0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTExNworbXNnaWQgImdlbmVyYXRlIGEgY292ZXIgbGV0dGVyIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTExOQorbXNnaWQgInVzZSBzaW1wbGUgbnVtYmVyIHNlcXVlbmNlIGZvciBvdXRwdXQgZmlsZSBuYW1lcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjExMjAKK21zZ2lkICJzZngiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTIxCittc2dpZCAidXNlIDxzZng+IGluc3RlYWQgb2YgJy5wYXRjaCciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTIzCittc2dpZCAic3RhcnQgbnVtYmVyaW5nIHBhdGNoZXMgYXQgPG4+IGluc3RlYWQgb2YgMSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjExMjUKK21zZ2lkICJtYXJrIHRoZSBzZXJpZXMgYXMgTnRoIHJlLXJvbGwiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTI3Cittc2dpZCAiVXNlIFs8cHJlZml4Pl0gaW5zdGVhZCBvZiBbUEFUQ0hdIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzMAorbXNnaWQgInN0b3JlIHJlc3VsdGluZyBmaWxlcyBpbiA8ZGlyPiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjExMzMKK21zZ2lkICJkb24ndCBzdHJpcC9hZGQgW1BBVENIXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjExMzYKK21zZ2lkICJkb24ndCBvdXRwdXQgYmluYXJ5IGRpZmZzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzOAorbXNnaWQgImRvbid0IGluY2x1ZGUgYSBwYXRjaCBtYXRjaGluZyBhIGNvbW1pdCB1cHN0cmVhbSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjExNDAKK21zZ2lkICJzaG93IHBhdGNoIGZvcm1hdCBpbnN0ZWFkIG9mIGRlZmF1bHQgKHBhdGNoICsgc3RhdCkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQyCittc2dpZCAiTWVzc2FnaW5nIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0MworbXNnaWQgImhlYWRlciIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjExNDQKK21zZ2lkICJhZGQgZW1haWwgaGVhZGVyIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0NSBidWlsdGluL2xvZy5jOjExNDcKK21zZ2lkICJlbWFpbCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjExNDUKK21zZ2lkICJhZGQgVG86IGhlYWRlciIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjExNDcKK21zZ2lkICJhZGQgQ2M6IGhlYWRlciIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjExNDkKK21zZ2lkICJtZXNzYWdlLWlkIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE1MAorbXNnaWQgIm1ha2UgZmlyc3QgbWFpbCBhIHJlcGx5IHRvIDxtZXNzYWdlLWlkPiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjExNTEgYnVpbHRpbi9sb2cuYzoxMTU0Cittc2dpZCAiYm91bmRhcnkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTUyCittc2dpZCAiYXR0YWNoIHRoZSBwYXRjaCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjExNTUKK21zZ2lkICJpbmxpbmUgdGhlIHBhdGNoIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE1OQorbXNnaWQgImVuYWJsZSBtZXNzYWdlIHRocmVhZGluZywgc3R5bGVzOiBzaGFsbG93LCBkZWVwIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE2MQorbXNnaWQgInNpZ25hdHVyZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjExNjIKK21zZ2lkICJhZGQgYSBzaWduYXR1cmUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTY0Cittc2dpZCAiZG9uJ3QgcHJpbnQgdGhlIHBhdGNoIGZpbGVuYW1lcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjEyNDgKIG1zZ2lkICItbiBhbmQgLWsgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjAwCisjOiBidWlsdGluL2xvZy5jOjEyNTAKIG1zZ2lkICItLXN1YmplY3QtcHJlZml4IGFuZCAtayBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMDgKKyM6IGJ1aWx0aW4vbG9nLmM6MTI1OAogbXNnaWQgIi0tbmFtZS1vbmx5IGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjEwCisjOiBidWlsdGluL2xvZy5jOjEyNjAKIG1zZ2lkICItLW5hbWUtc3RhdHVzIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjEyCisjOiBidWlsdGluL2xvZy5jOjEyNjIKIG1zZ2lkICItLWNoZWNrIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjM1CisjOiBidWlsdGluL2xvZy5jOjEyODUKIG1zZ2lkICJzdGFuZGFyZCBvdXRwdXQsIG9yIGRpcmVjdG9yeSwgd2hpY2ggb25lPyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMzcKKyM6IGJ1aWx0aW4vbG9nLmM6MTI4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTM5MAorIzogYnVpbHRpbi9sb2cuYzoxNDM1CiBtc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSBvdXRwdXQgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxNDk0CisjOiBidWlsdGluL2xvZy5jOjE0ODQKK21zZ2lkICJnaXQgY2hlcnJ5IFstdl0gWzx1cHN0cmVhbT4gWzxoZWFkPiBbPGxpbWl0Pl1dXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjE1MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNvdWxkIG5vdCBmaW5kIGEgdHJhY2tlZCByZW1vdGUgYnJhbmNoLCBwbGVhc2Ugc3BlY2lmeSA8dXBzdHJlYW0+IG1hbnVhbGx5LlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTUxMCBidWlsdGluL2xvZy5jOjE1MTIgYnVpbHRpbi9sb2cuYzoxNTI0CisjOiBidWlsdGluL2xvZy5jOjE1NTIgYnVpbHRpbi9sb2cuYzoxNTU0IGJ1aWx0aW4vbG9nLmM6MTU2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIGNvbW1pdCAlcyIKIG1zZ3N0ciAiIgogCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDAyCittc2dpZCAiZ2l0IGxzLWZpbGVzIFtvcHRpb25zXSBbPGZpbGU+Li4uXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDU5Cittc2dpZCAiaWRlbnRpZnkgdGhlIGZpbGUgc3RhdHVzIHdpdGggdGFncyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDYxCittc2dpZCAidXNlIGxvd2VyY2FzZSBsZXR0ZXJzIGZvciAnYXNzdW1lIHVuY2hhbmdlZCcgZmlsZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2MworbXNnaWQgInNob3cgY2FjaGVkIGZpbGVzIGluIHRoZSBvdXRwdXQgKGRlZmF1bHQpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjUKK21zZ2lkICJzaG93IGRlbGV0ZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDY3Cittc2dpZCAic2hvdyBtb2RpZmllZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjkKK21zZ2lkICJzaG93IG90aGVyIGZpbGVzIGluIHRoZSBvdXRwdXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3MQorbXNnaWQgInNob3cgaWdub3JlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzQKK21zZ2lkICJzaG93IHN0YWdlZCBjb250ZW50cycgb2JqZWN0IG5hbWUgaW4gdGhlIG91dHB1dCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc2Cittc2dpZCAic2hvdyBmaWxlcyBvbiB0aGUgZmlsZXN5c3RlbSB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc4Cittc2dpZCAic2hvdyAnb3RoZXInIGRpcmVjdG9yaWVzJyBuYW1lIG9ubHkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4MQorbXNnaWQgImRvbid0IHNob3cgZW1wdHkgZGlyZWN0b3JpZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4NAorbXNnaWQgInNob3cgdW5tZXJnZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg2Cittc2dpZCAic2hvdyByZXNvbHZlLXVuZG8gaW5mb3JtYXRpb24iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4OAorbXNnaWQgInNraXAgZmlsZXMgbWF0Y2hpbmcgcGF0dGVybiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDkxCittc2dpZCAiZXhjbHVkZSBwYXR0ZXJucyBhcmUgcmVhZCBmcm9tIDxmaWxlPiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDk0Cittc2dpZCAicmVhZCBhZGRpdGlvbmFsIHBlci1kaXJlY3RvcnkgZXhjbHVkZSBwYXR0ZXJucyBpbiA8ZmlsZT4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NgorbXNnaWQgImFkZCB0aGUgc3RhbmRhcmQgZ2l0IGV4Y2x1c2lvbnMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5OQorbXNnaWQgIm1ha2UgdGhlIG91dHB1dCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCB0b3AgZGlyZWN0b3J5IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDIKK21zZ2lkICJpZiBhbnkgPGZpbGU+IGlzIG5vdCBpbiB0aGUgaW5kZXgsIHRyZWF0IHRoaXMgYXMgYW4gZXJyb3IiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjUwMworbXNnaWQgInRyZWUtaXNoIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDQKK21zZ2lkICJwcmV0ZW5kIHRoYXQgcGF0aHMgcmVtb3ZlZCBzaW5jZSA8dHJlZS1pc2g+IGFyZSBzdGlsbCBwcmVzZW50IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDYKK21zZ2lkICJzaG93IGRlYnVnZ2luZyBkYXRhIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjI3Cittc2dpZCAiZ2l0IGxzLXRyZWUgWzxvcHRpb25zPl0gPHRyZWUtaXNoPiBbPHBhdGg+Li4uXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xzLXRyZWUuYzoxMjUKK21zZ2lkICJvbmx5IHNob3cgdHJlZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9scy10cmVlLmM6MTI3Cittc2dpZCAicmVjdXJzZSBpbnRvIHN1YnRyZWVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjEyOQorbXNnaWQgInNob3cgdHJlZXMgd2hlbiByZWN1cnNpbmciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9scy10cmVlLmM6MTMyCittc2dpZCAidGVybWluYXRlIGVudHJpZXMgd2l0aCBOVUwgYnl0ZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xzLXRyZWUuYzoxMzMKK21zZ2lkICJpbmNsdWRlIG9iamVjdCBzaXplIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjEzNSBidWlsdGluL2xzLXRyZWUuYzoxMzcKK21zZ2lkICJsaXN0IG9ubHkgZmlsZW5hbWVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjE0MAorbXNnaWQgInVzZSBmdWxsIHBhdGggbmFtZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9scy10cmVlLmM6MTQyCittc2dpZCAibGlzdCBlbnRpcmUgdHJlZTsgbm90IGp1c3QgY3VycmVudCBkaXJlY3RvcnkgKGltcGxpZXMgLS1mdWxsLW5hbWUpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo0MworbXNnaWQgImdpdCBtZXJnZSBbb3B0aW9uc10gWzxjb21taXQ+Li4uXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLmM6NDQKK21zZ2lkICJnaXQgbWVyZ2UgW29wdGlvbnNdIDxtc2c+IEhFQUQgPGNvbW1pdD4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjQ1Cittc2dpZCAiZ2l0IG1lcmdlIC0tYWJvcnQiCittc2dzdHIgIiIKKwogIzogYnVpbHRpbi9tZXJnZS5jOjkwCiBtc2dpZCAic3dpdGNoIGBtJyByZXF1aXJlcyBhIHZhbHVlIgogbXNnc3RyICIiCkBAIC0zMjQ4LDIzOCArNTk0Nyw0MTQgQEAKIG1zZ2lkICJBdmFpbGFibGUgY3VzdG9tIHN0cmF0ZWdpZXMgYXJlOiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjQwCisjOiBidWlsdGluL21lcmdlLmM6MTgzCittc2dpZCAiZG8gbm90IHNob3cgYSBkaWZmc3RhdCBhdCB0aGUgZW5kIG9mIHRoZSBtZXJnZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLmM6MTg2Cittc2dpZCAic2hvdyBhIGRpZmZzdGF0IGF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxODcKK21zZ2lkICIoc3lub255bSB0byAtLXN0YXQpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxODkKK21zZ2lkICJhZGQgKGF0IG1vc3QgPG4+KSBlbnRyaWVzIGZyb20gc2hvcnRsb2cgdG8gbWVyZ2UgY29tbWl0IG1lc3NhZ2UiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjE5MgorbXNnaWQgImNyZWF0ZSBhIHNpbmdsZSBjb21taXQgaW5zdGVhZCBvZiBkb2luZyBhIG1lcmdlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxOTQKK21zZ2lkICJwZXJmb3JtIGEgY29tbWl0IGlmIHRoZSBtZXJnZSBzdWNjZWVkcyAoZGVmYXVsdCkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjE5NgorbXNnaWQgImVkaXQgbWVzc2FnZSBiZWZvcmUgY29tbWl0dGluZyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLmM6MTk4Cittc2dpZCAiYWxsb3cgZmFzdC1mb3J3YXJkIChkZWZhdWx0KSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLmM6MjAwCittc2dpZCAiYWJvcnQgaWYgZmFzdC1mb3J3YXJkIGlzIG5vdCBwb3NzaWJsZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLmM6MjAzCittc2dpZCAiVmVyaWZ5IHRoYXQgdGhlIG5hbWVkIGNvbW1pdCBoYXMgYSB2YWxpZCBHUEcgc2lnbmF0dXJlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDQgYnVpbHRpbi9ub3Rlcy5jOjg2NiBidWlsdGluL3JldmVydC5jOjExMgorbXNnaWQgInN0cmF0ZWd5IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDUKK21zZ2lkICJtZXJnZSBzdHJhdGVneSB0byB1c2UiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjIwNgorbXNnaWQgIm9wdGlvbj12YWx1ZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLmM6MjA3Cittc2dpZCAib3B0aW9uIGZvciBzZWxlY3RlZCBtZXJnZSBzdHJhdGVneSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLmM6MjA5Cittc2dpZCAibWVyZ2UgY29tbWl0IG1lc3NhZ2UgKGZvciBhIG5vbi1mYXN0LWZvcndhcmQgbWVyZ2UpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMTMKK21zZ2lkICJhYm9ydCB0aGUgY3VycmVudCBpbi1wcm9ncmVzcyBtZXJnZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLmM6MjQyCiBtc2dpZCAiY291bGQgbm90IHJ1biBzdGFzaC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI0NQorIzogYnVpbHRpbi9tZXJnZS5jOjI0NwogbXNnaWQgInN0YXNoIGZhaWxlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjUwCisjOiBidWlsdGluL21lcmdlLmM6MjUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vdCBhIHZhbGlkIG9iamVjdDogJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI2OSBidWlsdGluL21lcmdlLmM6Mjg2CisjOiBidWlsdGluL21lcmdlLmM6MjcxIGJ1aWx0aW4vbWVyZ2UuYzoyODgKIG1zZ2lkICJyZWFkLXRyZWUgZmFpbGVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozMTYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozMTgKIG1zZ2lkICIgKG5vdGhpbmcgdG8gc3F1YXNoKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzI5CisjOiBidWlsdGluL21lcmdlLmM6MzMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlNxdWFzaCBjb21taXQgLS0gbm90IHVwZGF0aW5nIEhFQURcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzYxCisjOiBidWlsdGluL21lcmdlLmM6MzYzCiBtc2dpZCAiV3JpdGluZyBTUVVBU0hfTVNHIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozNjMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozNjUKIG1zZ2lkICJGaW5pc2hpbmcgU1FVQVNIX01TRyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6Mzg2CisjOiBidWlsdGluL21lcmdlLmM6Mzg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIG1lcmdlIG1lc3NhZ2UgLS0gbm90IHVwZGF0aW5nIEhFQURcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6NDM3CisjOiBidWlsdGluL21lcmdlLmM6NDM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgZG9lcyBub3QgcG9pbnQgdG8gYSBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjUzNgorIzogYnVpbHRpbi9tZXJnZS5jOjU1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJCYWQgYnJhbmNoLiVzLm1lcmdlb3B0aW9ucyBzdHJpbmc6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo2MjkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo2NDMKIG1zZ2lkICJnaXQgd3JpdGUtdHJlZSBmYWlsZWQgdG8gd3JpdGUgYSB0cmVlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo2NzkKLW1zZ2lkICJmYWlsZWQgdG8gcmVhZCB0aGUgY2FjaGUiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9tZXJnZS5jOjY5NwotbXNnaWQgIlVuYWJsZSB0byB3cml0ZSBpbmRleC4iCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9tZXJnZS5jOjcxMAorIzogYnVpbHRpbi9tZXJnZS5jOjY3MQogbXNnaWQgIk5vdCBoYW5kbGluZyBhbnl0aGluZyBvdGhlciB0aGFuIHR3byBoZWFkcyBtZXJnZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjcyNAorIzogYnVpbHRpbi9tZXJnZS5jOjY4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIG9wdGlvbiBmb3IgbWVyZ2UtcmVjdXJzaXZlOiAtWCVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo3MzgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo2OTkKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4NzcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo3ODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlYWQgZnJvbSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4ODYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo3OTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGNvbW1pdHRpbmcgbWVyZ2U7IHVzZSAnZ2l0IGNvbW1pdCcgdG8gY29tcGxldGUgdGhlIG1lcmdlLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4OTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MDMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBsZWFzZSBlbnRlciBhIGNvbW1pdCBtZXNzYWdlIHRvIGV4cGxhaW4gd2h5IHRoaXMgbWVyZ2UgaXMgbmVjZXNzYXJ5LFxuIgogImVzcGVjaWFsbHkgaWYgaXQgbWVyZ2VzIGFuIHVwZGF0ZWQgdXBzdHJlYW0gaW50byBhIHRvcGljIGJyYW5jaC5cbiIKICJcbiIKLSJMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0c1xuIgorIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0c1xuIgogInRoZSBjb21taXQuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjkxNgorIzogYnVpbHRpbi9tZXJnZS5jOjgyNwogbXNnaWQgIkVtcHR5IGNvbW1pdCBtZXNzYWdlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTI4CisjOiBidWlsdGluL21lcmdlLmM6ODM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIldvbmRlcmZ1bC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTkzCisjOiBidWlsdGluL21lcmdlLmM6OTA0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkF1dG9tYXRpYyBtZXJnZSBmYWlsZWQ7IGZpeCBjb25mbGljdHMgYW5kIHRoZW4gY29tbWl0IHRoZSByZXN1bHQuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEwMDkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBpcyBub3QgYSBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEwNTAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NjEKIG1zZ2lkICJObyBjdXJyZW50IGJyYW5jaC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEwNTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NjMKIG1zZ2lkICJObyByZW1vdGUgZm9yIHRoZSBjdXJyZW50IGJyYW5jaC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEwNTQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NjUKIG1zZ2lkICJObyBkZWZhdWx0IHVwc3RyZWFtIGRlZmluZWQgZm9yIHRoZSBjdXJyZW50IGJyYW5jaC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEwNTkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gcmVtb3RlIHRyYWNraW5nIGJyYW5jaCBmb3IgJXMgZnJvbSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE0NiBidWlsdGluL21lcmdlLmM6MTMwMworIzogYnVpbHRpbi9tZXJnZS5jOjEwNTcgYnVpbHRpbi9tZXJnZS5jOjEyMTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgLSBub3Qgc29tZXRoaW5nIHdlIGNhbiBtZXJnZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIxNAorIzogYnVpbHRpbi9tZXJnZS5jOjExMjUKIG1zZ2lkICJUaGVyZSBpcyBubyBtZXJnZSB0byBhYm9ydCAoTUVSR0VfSEVBRCBtaXNzaW5nKS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyMzAgZ2l0LXB1bGwuc2g6MzEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQxIGdpdC1wdWxsLnNoOjMxCiBtc2dpZCAiIgogIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBtZXJnZSAoTUVSR0VfSEVBRCBleGlzdHMpLlxuIgogIlBsZWFzZSwgY29tbWl0IHlvdXIgY2hhbmdlcyBiZWZvcmUgeW91IGNhbiBtZXJnZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyMzMgZ2l0LXB1bGwuc2g6MzQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQ0IGdpdC1wdWxsLnNoOjM0CiBtc2dpZCAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIG1lcmdlIChNRVJHRV9IRUFEIGV4aXN0cykuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjM3CisjOiBidWlsdGluL21lcmdlLmM6MTE0OAogbXNnaWQgIiIKICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgY2hlcnJ5LXBpY2sgKENIRVJSWV9QSUNLX0hFQUQgZXhpc3RzKS5cbiIKICJQbGVhc2UsIGNvbW1pdCB5b3VyIGNoYW5nZXMgYmVmb3JlIHlvdSBjYW4gbWVyZ2UuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjQwCisjOiBidWlsdGluL21lcmdlLmM6MTE1MQogbXNnaWQgIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBjaGVycnktcGljayAoQ0hFUlJZX1BJQ0tfSEVBRCBleGlzdHMpLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI0OQorIzogYnVpbHRpbi9tZXJnZS5jOjExNjAKIG1zZ2lkICJZb3UgY2Fubm90IGNvbWJpbmUgLS1zcXVhc2ggd2l0aCAtLW5vLWZmLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI1NAorIzogYnVpbHRpbi9tZXJnZS5jOjExNjUKIG1zZ2lkICJZb3UgY2Fubm90IGNvbWJpbmUgLS1uby1mZiB3aXRoIC0tZmYtb25seS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyNjEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTcyCiBtc2dpZCAiTm8gY29tbWl0IHNwZWNpZmllZCBhbmQgbWVyZ2UuZGVmYXVsdFRvVXBzdHJlYW0gbm90IHNldC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyOTMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA0CiBtc2dpZCAiQ2FuIG1lcmdlIG9ubHkgZXhhY3RseSBvbmUgY29tbWl0IGludG8gZW1wdHkgaGVhZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI5NgorIzogYnVpbHRpbi9tZXJnZS5jOjEyMDcKIG1zZ2lkICJTcXVhc2ggY29tbWl0IGludG8gZW1wdHkgaGVhZCBub3Qgc3VwcG9ydGVkIHlldCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI5OAorIzogYnVpbHRpbi9tZXJnZS5jOjEyMDkKIG1zZ2lkICJOb24tZmFzdC1mb3J3YXJkIGNvbW1pdCBkb2VzIG5vdCBtYWtlIHNlbnNlIGludG8gYW4gZW1wdHkgaGVhZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQxMworIzogYnVpbHRpbi9tZXJnZS5jOjEyNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29tbWl0ICVzIGhhcyBhbiB1bnRydXN0ZWQgR1BHIHNpZ25hdHVyZSwgYWxsZWdlZGx5IGJ5ICVzLiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLmM6MTI2OAorIywgYy1mb3JtYXQKK21zZ2lkICJDb21taXQgJXMgaGFzIGEgYmFkIEdQRyBzaWduYXR1cmUgYWxsZWdlZGx5IGJ5ICVzLiIKK21zZ3N0ciAiIgorCisjLiAnTicKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBkb2VzIG5vdCBoYXZlIGEgR1BHIHNpZ25hdHVyZS4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjEyNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29tbWl0ICVzIGhhcyBhIGdvb2QgR1BHIHNpZ25hdHVyZSBieSAlc1xuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzU4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVwZGF0aW5nICVzLi4lc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDUxCisjOiBidWlsdGluL21lcmdlLmM6MTM5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJUcnlpbmcgcmVhbGx5IHRyaXZpYWwgaW4taW5kZXggbWVyZ2UuLi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQ1OAorIzogYnVpbHRpbi9tZXJnZS5jOjE0MDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm9wZS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQ5MAorIzogYnVpbHRpbi9tZXJnZS5jOjE0MzYKIG1zZ2lkICJOb3QgcG9zc2libGUgdG8gZmFzdC1mb3J3YXJkLCBhYm9ydGluZy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE1MTMgYnVpbHRpbi9tZXJnZS5jOjE1OTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDU5IGJ1aWx0aW4vbWVyZ2UuYzoxNTM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJld2luZGluZyB0aGUgdHJlZSB0byBwcmlzdGluZS4uLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTE3CisjOiBidWlsdGluL21lcmdlLmM6MTQ2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJUcnlpbmcgbWVyZ2Ugc3RyYXRlZ3kgJXMuLi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTU4MworIzogYnVpbHRpbi9tZXJnZS5jOjE1MjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gbWVyZ2Ugc3RyYXRlZ3kgaGFuZGxlZCB0aGUgbWVyZ2UuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE1ODUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1lcmdlIHdpdGggc3RyYXRlZ3kgJXMgZmFpbGVkLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTk0CisjOiBidWlsdGluL21lcmdlLmM6MTU0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2luZyB0aGUgJXMgdG8gcHJlcGFyZSByZXNvbHZpbmcgYnkgaGFuZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTYwNgorIzogYnVpbHRpbi9tZXJnZS5jOjE1NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXV0b21hdGljIG1lcmdlIHdlbnQgd2VsbDsgc3RvcHBlZCBiZWZvcmUgY29tbWl0dGluZyBhcyByZXF1ZXN0ZWRcbiIKIG1zZ3N0ciAiIgogCisjOiBidWlsdGluL21lcmdlLWJhc2UuYzoyNgorbXNnaWQgImdpdCBtZXJnZS1iYXNlIFstYXwtLWFsbF0gPGNvbW1pdD4gPGNvbW1pdD4uLi4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6MjcKK21zZ2lkICJnaXQgbWVyZ2UtYmFzZSBbLWF8LS1hbGxdIC0tb2N0b3B1cyA8Y29tbWl0Pi4uLiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLWJhc2UuYzoyOAorbXNnaWQgImdpdCBtZXJnZS1iYXNlIC0taW5kZXBlbmRlbnQgPGNvbW1pdD4uLi4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6MjkKK21zZ2lkICJnaXQgbWVyZ2UtYmFzZSAtLWlzLWFuY2VzdG9yIDxjb21taXQ+IDxjb21taXQ+IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjk4Cittc2dpZCAib3V0cHV0IGFsbCBjb21tb24gYW5jZXN0b3JzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjk5Cittc2dpZCAiZmluZCBhbmNlc3RvcnMgZm9yIGEgc2luZ2xlIG4td2F5IG1lcmdlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjEwMAorbXNnaWQgImxpc3QgcmV2cyBub3QgcmVhY2hhYmxlIGZyb20gb3RoZXJzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjEwMgorbXNnaWQgImlzIHRoZSBmaXJzdCBvbmUgYW5jZXN0b3Igb2YgdGhlIG90aGVyPyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzo4Cittc2dpZCAiIgorImdpdCBtZXJnZS1maWxlIFtvcHRpb25zXSBbLUwgbmFtZTEgWy1MIG9yaWcgWy1MIG5hbWUyXV1dIGZpbGUxIG9yaWdfZmlsZSAiCisiZmlsZTIiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6MzMKK21zZ2lkICJzZW5kIHJlc3VsdHMgdG8gc3RhbmRhcmQgb3V0cHV0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjM0Cittc2dpZCAidXNlIGEgZGlmZjMgYmFzZWQgbWVyZ2UiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6MzUKK21zZ2lkICJmb3IgY29uZmxpY3RzLCB1c2Ugb3VyIHZlcnNpb24iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6MzcKK21zZ2lkICJmb3IgY29uZmxpY3RzLCB1c2UgdGhlaXIgdmVyc2lvbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzozOQorbXNnaWQgImZvciBjb25mbGljdHMsIHVzZSBhIHVuaW9uIHZlcnNpb24iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6NDIKK21zZ2lkICJmb3IgY29uZmxpY3RzLCB1c2UgdGhpcyBtYXJrZXIgc2l6ZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzo0MworbXNnaWQgImRvIG5vdCB3YXJuIGFib3V0IGNvbmZsaWN0cyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzo0NQorbXNnaWQgInNldCBsYWJlbHMgZm9yIGZpbGUxL29yaWdfZmlsZS9maWxlMiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21rdHJlZS5jOjY3Cittc2dpZCAiZ2l0IG1rdHJlZSBbLXpdIFstLW1pc3NpbmddIFstLWJhdGNoXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21rdHJlZS5jOjE1MworbXNnaWQgImlucHV0IGlzIE5VTCB0ZXJtaW5hdGVkIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWt0cmVlLmM6MTU0IGJ1aWx0aW4vd3JpdGUtdHJlZS5jOjI0Cittc2dpZCAiYWxsb3cgbWlzc2luZyBvYmplY3RzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWt0cmVlLmM6MTU1Cittc2dpZCAiYWxsb3cgY3JlYXRpb24gb2YgbW9yZSB0aGFuIG9uZSB0cmVlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbXYuYzoxNAorbXNnaWQgImdpdCBtdiBbb3B0aW9uc10gPHNvdXJjZT4uLi4gPGRlc3RpbmF0aW9uPiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL212LmM6NjQKK21zZ2lkICJmb3JjZSBtb3ZlL3JlbmFtZSBldmVuIGlmIHRhcmdldCBleGlzdHMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9tdi5jOjY1Cittc2dpZCAic2tpcCBtb3ZlL3JlbmFtZSBlcnJvcnMiCittc2dzdHIgIiIKKwogIzogYnVpbHRpbi9tdi5jOjEwOAogIywgYy1mb3JtYXQKIG1zZ2lkICJDaGVja2luZyByZW5hbWUgb2YgJyVzJyB0byAnJXMnXG4iCkBAIC0zNTQyLDE3OCArNjQxNyw1NjIgQEAKIG1zZ2lkICJyZW5hbWluZyAnJXMnIGZhaWxlZCIKIG1zZ3N0ciAiIgogCisjOiBidWlsdGluL25hbWUtcmV2LmM6MTc1Cittc2dpZCAiZ2l0IG5hbWUtcmV2IFtvcHRpb25zXSA8Y29tbWl0Pi4uLiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25hbWUtcmV2LmM6MTc2Cittc2dpZCAiZ2l0IG5hbWUtcmV2IFtvcHRpb25zXSAtLWFsbCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25hbWUtcmV2LmM6MTc3Cittc2dpZCAiZ2l0IG5hbWUtcmV2IFtvcHRpb25zXSAtLXN0ZGluIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMjkKK21zZ2lkICJwcmludCBvbmx5IG5hbWVzIChubyBTSEEtMSkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzMAorbXNnaWQgIm9ubHkgdXNlIHRhZ3MgdG8gbmFtZSB0aGUgY29tbWl0cyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25hbWUtcmV2LmM6MjMyCittc2dpZCAib25seSB1c2UgcmVmcyBtYXRjaGluZyA8cGF0dGVybj4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzNAorbXNnaWQgImxpc3QgYWxsIGNvbW1pdHMgcmVhY2hhYmxlIGZyb20gYWxsIHJlZnMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzNQorbXNnaWQgInJlYWQgZnJvbSBzdGRpbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25hbWUtcmV2LmM6MjM2Cittc2dpZCAiYWxsb3cgdG8gcHJpbnQgYHVuZGVmaW5lZGAgbmFtZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjI2Cittc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gW2xpc3QgWzxvYmplY3Q+XV0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjI3Cittc2dpZCAiIgorImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGFkZCBbLWZdIFstbSA8bXNnPiB8IC1GIDxmaWxlPiB8ICgtYyB8IC1DKSAiCisiPG9iamVjdD5dIFs8b2JqZWN0Pl0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjI4Cittc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gY29weSBbLWZdIDxmcm9tLW9iamVjdD4gPHRvLW9iamVjdD4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjI5Cittc2dpZCAiIgorImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGFwcGVuZCBbLW0gPG1zZz4gfCAtRiA8ZmlsZT4gfCAoLWMgfCAtQykgIgorIjxvYmplY3Q+XSBbPG9iamVjdD5dIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMAorbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGVkaXQgWzxvYmplY3Q+XSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25vdGVzLmM6MzEKK21zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBzaG93IFs8b2JqZWN0Pl0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjMyCittc2dpZCAiIgorImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIG1lcmdlIFstdiB8IC1xXSBbLXMgPHN0cmF0ZWd5PiBdIDxub3Rlc19yZWY+IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMworbXNnaWQgImdpdCBub3RlcyBtZXJnZSAtLWNvbW1pdCBbLXYgfCAtcV0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjM0Cittc2dpZCAiZ2l0IG5vdGVzIG1lcmdlIC0tYWJvcnQgWy12IHwgLXFdIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzozNQorbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHJlbW92ZSBbPG9iamVjdD4uLi5dIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzozNgorbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHBydW5lIFstbiB8IC12XSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25vdGVzLmM6MzcKK21zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBnZXQtcmVmIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0MgorbXNnaWQgImdpdCBub3RlcyBbbGlzdCBbPG9iamVjdD5dXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25vdGVzLmM6NDcKK21zZ2lkICJnaXQgbm90ZXMgYWRkIFs8b3B0aW9ucz5dIFs8b2JqZWN0Pl0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjUyCittc2dpZCAiZ2l0IG5vdGVzIGNvcHkgWzxvcHRpb25zPl0gPGZyb20tb2JqZWN0PiA8dG8tb2JqZWN0PiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25vdGVzLmM6NTMKK21zZ2lkICJnaXQgbm90ZXMgY29weSAtLXN0ZGluIFs8ZnJvbS1vYmplY3Q+IDx0by1vYmplY3Q+XS4uLiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25vdGVzLmM6NTgKK21zZ2lkICJnaXQgbm90ZXMgYXBwZW5kIFs8b3B0aW9ucz5dIFs8b2JqZWN0Pl0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjYzCittc2dpZCAiZ2l0IG5vdGVzIGVkaXQgWzxvYmplY3Q+XSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25vdGVzLmM6NjgKK21zZ2lkICJnaXQgbm90ZXMgc2hvdyBbPG9iamVjdD5dIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MworbXNnaWQgImdpdCBub3RlcyBtZXJnZSBbPG9wdGlvbnM+XSA8bm90ZXNfcmVmPiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25vdGVzLmM6NzQKK21zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgLS1jb21taXQgWzxvcHRpb25zPl0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjc1Cittc2dpZCAiZ2l0IG5vdGVzIG1lcmdlIC0tYWJvcnQgWzxvcHRpb25zPl0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjgwCittc2dpZCAiZ2l0IG5vdGVzIHJlbW92ZSBbPG9iamVjdD5dIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NQorbXNnaWQgImdpdCBub3RlcyBwcnVuZSBbPG9wdGlvbnM+XSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25vdGVzLmM6OTAKK21zZ2lkICJnaXQgbm90ZXMgZ2V0LXJlZiIKK21zZ3N0ciAiIgorCiAjOiBidWlsdGluL25vdGVzLmM6MTM5CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBzdGFydCAnc2hvdycgZm9yIG9iamVjdCAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNDUKLW1zZ2lkICJjYW4ndCBmZG9wZW4gJ3Nob3cnIG91dHB1dCBmZCIKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxNDMKK21zZ2lkICJjb3VsZCBub3QgcmVhZCAnc2hvdycgb3V0cHV0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNTUKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiZmFpbGVkIHRvIGNsb3NlIHBpcGUgdG8gJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL25vdGVzLmM6MTU4CisjOiBidWlsdGluL25vdGVzLmM6MTUxCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBmaW5pc2ggJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTc1IGJ1aWx0aW4vdGFnLmM6MzQ3CisjOiBidWlsdGluL25vdGVzLmM6MTY5IGJ1aWx0aW4vdGFnLmM6MzQxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgZmlsZSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxODkKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxODgKIG1zZ2lkICJQbGVhc2Ugc3VwcGx5IHRoZSBub3RlIGNvbnRlbnRzIHVzaW5nIGVpdGhlciAtbSBvciAtRiBvcHRpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjIxMCBidWlsdGluL25vdGVzLmM6OTczCisjOiBidWlsdGluL25vdGVzLmM6MjA5IGJ1aWx0aW4vbm90ZXMuYzo5NzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVtb3Zpbmcgbm90ZSBmb3Igb2JqZWN0ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjIxNQorIzogYnVpbHRpbi9ub3Rlcy5jOjIxNAogbXNnaWQgInVuYWJsZSB0byB3cml0ZSBub3RlIG9iamVjdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjE3CisjOiBidWlsdGluL25vdGVzLmM6MjE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlRoZSBub3RlIGNvbnRlbnRzIGhhcyBiZWVuIGxlZnQgaW4gJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI1MSBidWlsdGluL3RhZy5jOjU0MgorIzogYnVpbHRpbi9ub3Rlcy5jOjI1MCBidWlsdGluL3RhZy5jOjU0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNTMgYnVpbHRpbi90YWcuYzo1NDUKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNTIgYnVpbHRpbi90YWcuYzo1NDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IG9wZW4gb3IgcmVhZCAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNzIgYnVpbHRpbi9ub3Rlcy5jOjQ0NSBidWlsdGluL25vdGVzLmM6NDQ3Ci0jOiBidWlsdGluL25vdGVzLmM6NTA3IGJ1aWx0aW4vbm90ZXMuYzo1NjEgYnVpbHRpbi9ub3Rlcy5jOjY0NAotIzogYnVpbHRpbi9ub3Rlcy5jOjY0OSBidWlsdGluL25vdGVzLmM6NzI0IGJ1aWx0aW4vbm90ZXMuYzo3NjYKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5NjggYnVpbHRpbi9yZXNldC5jOjI5MyBidWlsdGluL3RhZy5jOjU1OAorIzogYnVpbHRpbi9ub3Rlcy5jOjI3MSBidWlsdGluL25vdGVzLmM6NDQ0IGJ1aWx0aW4vbm90ZXMuYzo0NDYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MDYgYnVpbHRpbi9ub3Rlcy5jOjU2MCBidWlsdGluL25vdGVzLmM6NjQzCisjOiBidWlsdGluL25vdGVzLmM6NjQ4IGJ1aWx0aW4vbm90ZXMuYzo3MjMgYnVpbHRpbi9ub3Rlcy5jOjc2NQorIzogYnVpbHRpbi9ub3Rlcy5jOjk2NyBidWlsdGluL3RhZy5jOjU1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgcmVmLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6Mjc1CisjOiBidWlsdGluL25vdGVzLmM6Mjc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZWFkIG9iamVjdCAnJXMnLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6Mjk5CisjOiBidWlsdGluL25vdGVzLmM6Mjk4CiBtc2dpZCAiQ2Fubm90IGNvbW1pdCB1bmluaXRpYWxpemVkL3VucmVmZXJlbmNlZCBub3RlcyB0cmVlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzozNDAKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkIG5vdGVzLnJld3JpdGVNb2RlIHZhbHVlOiAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzozNTAKKyM6IGJ1aWx0aW4vbm90ZXMuYzozNDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVmdXNpbmcgdG8gcmV3cml0ZSBub3RlcyBpbiAlcyAob3V0c2lkZSBvZiByZWZzL25vdGVzLykiCiBtc2dzdHIgIiIKIAogIy4gVFJBTlNMQVRPUlM6IFRoZSBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiB0aGUKICMuIGVudmlyb25tZW50IHZhcmlhYmxlLCB0aGUgc2Vjb25kICVzIGlzIGl0cyB2YWx1ZQotIzogYnVpbHRpbi9ub3Rlcy5jOjM3NworIzogYnVpbHRpbi9ub3Rlcy5jOjM3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJCYWQgJXMgdmFsdWU6ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQ0MQorIzogYnVpbHRpbi9ub3Rlcy5jOjQ0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWxmb3JtZWQgaW5wdXQgbGluZTogJyVzJy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQ1NgorIzogYnVpbHRpbi9ub3Rlcy5jOjQ1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gY29weSBub3RlcyBmcm9tICclcycgdG8gJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTAwIGJ1aWx0aW4vbm90ZXMuYzo1NTQgYnVpbHRpbi9ub3Rlcy5jOjYyNwotIzogYnVpbHRpbi9ub3Rlcy5jOjYzOSBidWlsdGluL25vdGVzLmM6NzEyIGJ1aWx0aW4vbm90ZXMuYzo3NTkKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxMDMzCisjOiBidWlsdGluL25vdGVzLmM6NDk5IGJ1aWx0aW4vbm90ZXMuYzo1NTMgYnVpbHRpbi9ub3Rlcy5jOjYyNgorIzogYnVpbHRpbi9ub3Rlcy5jOjYzOCBidWlsdGluL25vdGVzLmM6NzExIGJ1aWx0aW4vbm90ZXMuYzo3NTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxMDMyCiBtc2dpZCAidG9vIG1hbnkgcGFyYW1ldGVycyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTEzIGJ1aWx0aW4vbm90ZXMuYzo3NzIKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MTIgYnVpbHRpbi9ub3Rlcy5jOjc3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBub3RlIGZvdW5kIGZvciBvYmplY3QgJXMuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1ODAKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MzQgYnVpbHRpbi9ub3Rlcy5jOjY5MQorbXNnaWQgIm5vdGUgY29udGVudHMgYXMgYSBzdHJpbmciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjUzNyBidWlsdGluL25vdGVzLmM6Njk0Cittc2dpZCAibm90ZSBjb250ZW50cyBpbiBhIGZpbGUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjUzOSBidWlsdGluL25vdGVzLmM6NTQyIGJ1aWx0aW4vbm90ZXMuYzo2OTYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2OTkgYnVpbHRpbi90YWcuYzo0NzQKK21zZ2lkICJvYmplY3QiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjU0MCBidWlsdGluL25vdGVzLmM6Njk3Cittc2dpZCAicmV1c2UgYW5kIGVkaXQgc3BlY2lmaWVkIG5vdGUgb2JqZWN0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NDMgYnVpbHRpbi9ub3Rlcy5jOjcwMAorbXNnaWQgInJldXNlIHNwZWNpZmllZCBub3RlIG9iamVjdCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25vdGVzLmM6NTQ1IGJ1aWx0aW4vbm90ZXMuYzo2MTMKK21zZ2lkICJyZXBsYWNlIGV4aXN0aW5nIG5vdGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNhbm5vdCBhZGQgbm90ZXMuIEZvdW5kIGV4aXN0aW5nIG5vdGVzIGZvciBvYmplY3QgJXMuIFVzZSAnLWYnIHRvIG92ZXJ3cml0ZSAiCiAiZXhpc3Rpbmcgbm90ZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU4NSBidWlsdGluL25vdGVzLmM6NjYyCisjOiBidWlsdGluL25vdGVzLmM6NTg0IGJ1aWx0aW4vbm90ZXMuYzo2NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3ZlcndyaXRpbmcgZXhpc3Rpbmcgbm90ZXMgZm9yIG9iamVjdCAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MzUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MTQKK21zZ2lkICJyZWFkIG9iamVjdHMgZnJvbSBzdGRpbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25vdGVzLmM6NjE2Cittc2dpZCAibG9hZCByZXdyaXRpbmcgY29uZmlnIGZvciA8Y29tbWFuZD4gKGltcGxpZXMgLS1zdGRpbikiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjYzNAogbXNnaWQgInRvbyBmZXcgcGFyYW1ldGVycyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjU2CisjOiBidWlsdGluL25vdGVzLmM6NjU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDYW5ub3QgY29weSBub3Rlcy4gRm91bmQgZXhpc3Rpbmcgbm90ZXMgZm9yIG9iamVjdCAlcy4gVXNlICctZicgdG8gb3ZlcndyaXRlICIKICJleGlzdGluZyBub3RlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjY4CisjOiBidWlsdGluL25vdGVzLmM6NjY3CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1pc3Npbmcgbm90ZXMgb24gc291cmNlIG9iamVjdCAlcy4gQ2Fubm90IGNvcHkuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo3MTcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSAtbS8tRi8tYy8tQyBvcHRpb25zIGhhdmUgYmVlbiBkZXByZWNhdGVkIGZvciB0aGUgJ2VkaXQnIHN1YmNvbW1hbmQuXG4iCiAiUGxlYXNlIHVzZSAnZ2l0IG5vdGVzIGFkZCAtZiAtbS8tRi8tYy8tQycgaW5zdGVhZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6OTcxCisjOiBidWlsdGluL25vdGVzLmM6ODYzCittc2dpZCAiR2VuZXJhbCBvcHRpb25zIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NjUKK21zZ2lkICJNZXJnZSBvcHRpb25zIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NjcKK21zZ2lkICIiCisicmVzb2x2ZSBub3RlcyBjb25mbGljdHMgdXNpbmcgdGhlIGdpdmVuIHN0cmF0ZWd5IChtYW51YWwvb3Vycy90aGVpcnMvdW5pb24vIgorImNhdF9zb3J0X3VuaXEpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NjkKK21zZ2lkICJDb21taXR0aW5nIHVubWVyZ2VkIG5vdGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NzEKK21zZ2lkICJmaW5hbGl6ZSBub3RlcyBtZXJnZSBieSBjb21taXR0aW5nIHVubWVyZ2VkIG5vdGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NzMKK21zZ2lkICJBYm9ydGluZyBub3RlcyBtZXJnZSByZXNvbHV0aW9uIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NzUKK21zZ2lkICJhYm9ydCBub3RlcyBtZXJnZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25vdGVzLmM6OTcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIk9iamVjdCAlcyBoYXMgbm8gbm90ZVxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxMTAzIGJ1aWx0aW4vcmVtb3RlLmM6MTU5OAorIzogYnVpbHRpbi9ub3Rlcy5jOjk4MgorbXNnaWQgImF0dGVtcHQgdG8gcmVtb3ZlIG5vbi1leGlzdGVudCBub3RlIGlzIG5vdCBhbiBlcnJvciIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25vdGVzLmM6OTg1Cittc2dpZCAicmVhZCBvYmplY3QgbmFtZXMgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjEwNjYKK21zZ2lkICJub3Rlc19yZWYiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjEwNjcKK21zZ2lkICJ1c2Ugbm90ZXMgZnJvbSA8bm90ZXNfcmVmPiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL25vdGVzLmM6MTEwMiBidWlsdGluL3JlbW90ZS5jOjE1OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biBzdWJjb21tYW5kOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjIzMzcKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjMKK21zZ2lkICJnaXQgcGFjay1vYmplY3RzIC0tc3Rkb3V0IFtvcHRpb25zLi4uXSBbPCByZWYtbGlzdCB8IDwgb2JqZWN0LWxpc3RdIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQKK21zZ2lkICJnaXQgcGFjay1vYmplY3RzIFtvcHRpb25zLi4uXSBiYXNlLW5hbWUgWzwgcmVmLWxpc3QgfCA8IG9iamVjdC1saXN0XSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjE4MyBidWlsdGluL3BhY2stb2JqZWN0cy5jOjE4NgorIywgYy1mb3JtYXQKK21zZ2lkICJkZWZsYXRlIGVycm9yICglZCkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyMzk3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuc3VwcG9ydGVkIGluZGV4IHZlcnNpb24gJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyMzQxCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIGluZGV4IHZlcnNpb24gJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjIzNjQKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJvcHRpb24gJXMgZG9lcyBub3QgYWNjZXB0IG5lZ2F0aXZlIGZvcm0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyMzY4CisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0MjgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHBhcnNlIHZhbHVlICclcycgZm9yIG9wdGlvbiAlcyIKIG1zZ3N0ciAiIgogCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NDcKK21zZ2lkICJkbyBub3Qgc2hvdyBwcm9ncmVzcyBtZXRlciIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NDkKK21zZ2lkICJzaG93IHByb2dyZXNzIG1ldGVyIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ1MQorbXNnaWQgInNob3cgcHJvZ3Jlc3MgbWV0ZXIgZHVyaW5nIG9iamVjdCB3cml0aW5nIHBoYXNlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ1NAorbXNnaWQgInNpbWlsYXIgdG8gLS1hbGwtcHJvZ3Jlc3Mgd2hlbiBwcm9ncmVzcyBtZXRlciBpcyBzaG93biIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NTUKK21zZ2lkICJ2ZXJzaW9uWyxvZmZzZXRdIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ1NgorbXNnaWQgIndyaXRlIHRoZSBwYWNrIGluZGV4IGZpbGUgaW4gdGhlIHNwZWNpZmllZCBpZHggZm9ybWF0IHZlcnNpb24iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDU5Cittc2dpZCAibWF4aW11bSBzaXplIG9mIGVhY2ggb3V0cHV0IHBhY2sgZmlsZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NjEKK21zZ2lkICJpZ25vcmUgYm9ycm93ZWQgb2JqZWN0cyBmcm9tIGFsdGVybmF0ZSBvYmplY3Qgc3RvcmUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDYzCittc2dpZCAiaWdub3JlIHBhY2tlZCBvYmplY3RzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ2NQorbXNnaWQgImxpbWl0IHBhY2sgd2luZG93IGJ5IG9iamVjdHMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDY3Cittc2dpZCAibGltaXQgcGFjayB3aW5kb3cgYnkgbWVtb3J5IGluIGFkZGl0aW9uIHRvIG9iamVjdCBsaW1pdCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NjkKK21zZ2lkICJtYXhpbXVtIGxlbmd0aCBvZiBkZWx0YSBjaGFpbiBhbGxvd2VkIGluIHRoZSByZXN1bHRpbmcgcGFjayIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NzEKK21zZ2lkICJyZXVzZSBleGlzdGluZyBkZWx0YXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDczCittc2dpZCAicmV1c2UgZXhpc3Rpbmcgb2JqZWN0cyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NzUKK21zZ2lkICJ1c2UgT0ZTX0RFTFRBIG9iamVjdHMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDc3Cittc2dpZCAidXNlIHRocmVhZHMgd2hlbiBzZWFyY2hpbmcgZm9yIGJlc3QgZGVsdGEgbWF0Y2hlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NzkKK21zZ2lkICJkbyBub3QgY3JlYXRlIGFuIGVtcHR5IHBhY2sgb3V0cHV0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ4MQorbXNnaWQgInJlYWQgcmV2aXNpb24gYXJndW1lbnRzIGZyb20gc3RhbmRhcmQgaW5wdXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDgzCittc2dpZCAibGltaXQgdGhlIG9iamVjdHMgdG8gdGhvc2UgdGhhdCBhcmUgbm90IHlldCBwYWNrZWQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDg2Cittc2dpZCAiaW5jbHVkZSBvYmplY3RzIHJlYWNoYWJsZSBmcm9tIGFueSByZWZlcmVuY2UiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDg5Cittc2dpZCAiaW5jbHVkZSBvYmplY3RzIHJlZmVycmVkIGJ5IHJlZmxvZyBlbnRyaWVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ5MgorbXNnaWQgIm91dHB1dCBwYWNrIHRvIHN0ZG91dCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0OTQKK21zZ2lkICJpbmNsdWRlIHRhZyBvYmplY3RzIHRoYXQgcmVmZXIgdG8gb2JqZWN0cyB0byBiZSBwYWNrZWQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDk2Cittc2dpZCAia2VlcCB1bnJlYWNoYWJsZSBvYmplY3RzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ5NyBwYXJzZS1vcHRpb25zLmg6MTQxCittc2dpZCAidGltZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0OTgKK21zZ2lkICJ1bnBhY2sgdW5yZWFjaGFibGUgb2JqZWN0cyBuZXdlciB0aGFuIDx0aW1lPiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI1MDEKK21zZ2lkICJjcmVhdGUgdGhpbiBwYWNrcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI1MDMKK21zZ2lkICJpZ25vcmUgcGFja3MgdGhhdCBoYXZlIGNvbXBhbmlvbiAua2VlcCBmaWxlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjUwNQorbXNnaWQgInBhY2sgY29tcHJlc3Npb24gbGV2ZWwiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNTA3Cittc2dpZCAiZG8gbm90IGhpZGUgY29tbWl0cyBieSBncmFmdHMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wYWNrLXJlZnMuYzo2Cittc2dpZCAiZ2l0IHBhY2stcmVmcyBbb3B0aW9uc10iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wYWNrLXJlZnMuYzoxNAorbXNnaWQgInBhY2sgZXZlcnl0aGluZyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3BhY2stcmVmcy5jOjE1Cittc2dpZCAicHJ1bmUgbG9vc2UgcmVmcyAoZGVmYXVsdCkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wcnVuZS1wYWNrZWQuYzo3Cittc2dpZCAiZ2l0IHBydW5lLXBhY2tlZCBbLW58LS1kcnktcnVuXSBbLXF8LS1xdWlldF0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wcnVuZS5jOjEyCittc2dpZCAiZ2l0IHBydW5lIFstbl0gWy12XSBbLS1leHBpcmUgPHRpbWU+XSBbLS1dIFs8aGVhZD4uLi5dIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcHJ1bmUuYzoxMzIKK21zZ2lkICJkbyBub3QgcmVtb3ZlLCBzaG93IG9ubHkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wcnVuZS5jOjEzMworbXNnaWQgInJlcG9ydCBwcnVuZWQgb2JqZWN0cyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3BydW5lLmM6MTM2Cittc2dpZCAiZXhwaXJlIG9iamVjdHMgb2xkZXIgdGhhbiA8dGltZT4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wdXNoLmM6MTQKK21zZ2lkICJnaXQgcHVzaCBbPG9wdGlvbnM+XSBbPHJlcG9zaXRvcnk+IFs8cmVmc3BlYz4uLi5dXSIKK21zZ3N0ciAiIgorCiAjOiBidWlsdGluL3B1c2guYzo0NQogbXNnaWQgInRhZyBzaG9ydGhhbmQgd2l0aG91dCA8dGFnPiIKIG1zZ3N0ciAiIgpAQCAtMzc3NSwxMiArNzAzNCwzMCBAQAogInRvIHVwZGF0ZSB3aGljaCByZW1vdGUgYnJhbmNoLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzoxNzQKKyM6IGJ1aWx0aW4vcHVzaC5jOjE1MQorbXNnaWQgIiIKKyJwdXNoLmRlZmF1bHQgaXMgdW5zZXQ7IGl0cyBpbXBsaWNpdCB2YWx1ZSBpcyBjaGFuZ2luZyBpblxuIgorIkdpdCAyLjAgZnJvbSAnbWF0Y2hpbmcnIHRvICdzaW1wbGUnLiBUbyBzcXVlbGNoIHRoaXMgbWVzc2FnZVxuIgorImFuZCBtYWludGFpbiB0aGUgY3VycmVudCBiZWhhdmlvciBhZnRlciB0aGUgZGVmYXVsdCBjaGFuZ2VzLCB1c2U6XG4iCisiXG4iCisiICBnaXQgY29uZmlnIC0tZ2xvYmFsIHB1c2guZGVmYXVsdCBtYXRjaGluZ1xuIgorIlxuIgorIlRvIHNxdWVsY2ggdGhpcyBtZXNzYWdlIGFuZCBhZG9wdCB0aGUgbmV3IGJlaGF2aW9yIG5vdywgdXNlOlxuIgorIlxuIgorIiAgZ2l0IGNvbmZpZyAtLWdsb2JhbCBwdXNoLmRlZmF1bHQgc2ltcGxlXG4iCisiXG4iCisiU2VlICdnaXQgaGVscCBjb25maWcnIGFuZCBzZWFyY2ggZm9yICdwdXNoLmRlZmF1bHQnIGZvciBmdXJ0aGVyICIKKyJpbmZvcm1hdGlvbi5cbiIKKyIodGhlICdzaW1wbGUnIG1vZGUgd2FzIGludHJvZHVjZWQgaW4gR2l0IDEuNy4xMS4gVXNlIHRoZSBzaW1pbGFyIG1vZGVcbiIKKyInY3VycmVudCcgaW5zdGVhZCBvZiAnc2ltcGxlJyBpZiB5b3Ugc29tZXRpbWVzIHVzZSBvbGRlciB2ZXJzaW9ucyBvZiBHaXQpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjE5OQogbXNnaWQgIiIKICJZb3UgZGlkbid0IHNwZWNpZnkgYW55IHJlZnNwZWNzIHRvIHB1c2gsIGFuZCBwdXNoLmRlZmF1bHQgaXMgXCJub3RoaW5nXCIuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjE4MQorIzogYnVpbHRpbi9wdXNoLmM6MjA2CiBtc2dpZCAiIgogIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIHRoZSB0aXAgb2YgeW91ciBjdXJyZW50IGJyYW5jaCBpcyBiZWhpbmRcbiIKICJpdHMgcmVtb3RlIGNvdW50ZXJwYXJ0LiBNZXJnZSB0aGUgcmVtb3RlIGNoYW5nZXMgKGUuZy4gJ2dpdCBwdWxsJylcbiIKQEAgLTM3ODgsMTUgKzcwNjUsMTUgQEAKICJTZWUgdGhlICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIGluICdnaXQgcHVzaCAtLWhlbHAnIGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzoxODcKKyM6IGJ1aWx0aW4vcHVzaC5jOjIxMgogbXNnaWQgIiIKICJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSBhIHB1c2hlZCBicmFuY2ggdGlwIGlzIGJlaGluZCBpdHMgcmVtb3RlXG4iCiAiY291bnRlcnBhcnQuIElmIHlvdSBkaWQgbm90IGludGVuZCB0byBwdXNoIHRoYXQgYnJhbmNoLCB5b3UgbWF5IHdhbnQgdG9cbiIKLSJzcGVjaWZ5IGJyYW5jaGVzIHRvIHB1c2ggb3Igc2V0IHRoZSAncHVzaC5kZWZhdWx0JyBjb25maWd1cmF0aW9uXG4iCi0idmFyaWFibGUgdG8gJ2N1cnJlbnQnIG9yICd1cHN0cmVhbScgdG8gcHVzaCBvbmx5IHRoZSBjdXJyZW50IGJyYW5jaC4iCisic3BlY2lmeSBicmFuY2hlcyB0byBwdXNoIG9yIHNldCB0aGUgJ3B1c2guZGVmYXVsdCcgY29uZmlndXJhdGlvbiB2YXJpYWJsZVxuIgorInRvICdzaW1wbGUnLCAnY3VycmVudCcgb3IgJ3Vwc3RyZWFtJyB0byBwdXNoIG9ubHkgdGhlIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzoxOTMKKyM6IGJ1aWx0aW4vcHVzaC5jOjIxOAogbXNnaWQgIiIKICJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSBhIHB1c2hlZCBicmFuY2ggdGlwIGlzIGJlaGluZCBpdHMgcmVtb3RlXG4iCiAiY291bnRlcnBhcnQuIENoZWNrIG91dCB0aGlzIGJyYW5jaCBhbmQgbWVyZ2UgdGhlIHJlbW90ZSBjaGFuZ2VzXG4iCkBAIC0zODA0LDIyICs3MDgxLDQyIEBACiAiU2VlIHRoZSAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBpbiAnZ2l0IHB1c2ggLS1oZWxwJyBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjMzCisjOiBidWlsdGluL3B1c2guYzoyMjQKK21zZ2lkICIiCisiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgdGhlIHJlbW90ZSBjb250YWlucyB3b3JrIHRoYXQgeW91IGRvXG4iCisibm90IGhhdmUgbG9jYWxseS4gVGhpcyBpcyB1c3VhbGx5IGNhdXNlZCBieSBhbm90aGVyIHJlcG9zaXRvcnkgcHVzaGluZ1xuIgorInRvIHRoZSBzYW1lIHJlZi4gWW91IG1heSB3YW50IHRvIGZpcnN0IG1lcmdlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLixcbiIKKyInZ2l0IHB1bGwnKSBiZWZvcmUgcHVzaGluZyBhZ2Fpbi5cbiIKKyJTZWUgdGhlICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIGluICdnaXQgcHVzaCAtLWhlbHAnIGZvciBkZXRhaWxzLiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3B1c2guYzoyMzEKK21zZ2lkICJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgdGFnIGFscmVhZHkgZXhpc3RzIGluIHRoZSByZW1vdGUuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjIzNAorbXNnaWQgIiIKKyJZb3UgY2Fubm90IHVwZGF0ZSBhIHJlbW90ZSByZWYgdGhhdCBwb2ludHMgYXQgYSBub24tY29tbWl0IG9iamVjdCxcbiIKKyJvciB1cGRhdGUgYSByZW1vdGUgcmVmIHRvIG1ha2UgaXQgcG9pbnQgYXQgYSBub24tY29tbWl0IG9iamVjdCxcbiIKKyJ3aXRob3V0IHVzaW5nIHRoZSAnLS1mb3JjZScgb3B0aW9uLlxuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjI5NAogIywgYy1mb3JtYXQKIG1zZ2lkICJQdXNoaW5nIHRvICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjM3CisjOiBidWlsdGluL3B1c2guYzoyOTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHB1c2ggc29tZSByZWZzIHRvICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjY5CisjOiBidWlsdGluL3B1c2guYzozMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIHJlcG9zaXRvcnkgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzoyNzAKKyM6IGJ1aWx0aW4vcHVzaC5jOjMzMgogbXNnaWQgIiIKICJObyBjb25maWd1cmVkIHB1c2ggZGVzdGluYXRpb24uXG4iCiAiRWl0aGVyIHNwZWNpZnkgdGhlIFVSTCBmcm9tIHRoZSBjb21tYW5kLWxpbmUgb3IgY29uZmlndXJlIGEgcmVtb3RlICIKQEAgLTM4MzIsMzQgKzcxMjksMjM2IEBACiAiICAgIGdpdCBwdXNoIDxuYW1lPlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI4NQorIzogYnVpbHRpbi9wdXNoLmM6MzQ3CiBtc2dpZCAiLS1hbGwgYW5kIC0tdGFncyBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI4NgorIzogYnVpbHRpbi9wdXNoLmM6MzQ4CiBtc2dpZCAiLS1hbGwgY2FuJ3QgYmUgY29tYmluZWQgd2l0aCByZWZzcGVjcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzoyOTEKKyM6IGJ1aWx0aW4vcHVzaC5jOjM1MwogbXNnaWQgIi0tbWlycm9yIGFuZCAtLXRhZ3MgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzoyOTIKKyM6IGJ1aWx0aW4vcHVzaC5jOjM1NAogbXNnaWQgIi0tbWlycm9yIGNhbid0IGJlIGNvbWJpbmVkIHdpdGggcmVmc3BlY3MiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mjk3CisjOiBidWlsdGluL3B1c2guYzozNTkKIG1zZ2lkICItLWFsbCBhbmQgLS1taXJyb3IgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzozODUKKyM6IGJ1aWx0aW4vcHVzaC5jOjQxOQorbXNnaWQgInJlcG9zaXRvcnkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wdXNoLmM6NDIwCittc2dpZCAicHVzaCBhbGwgcmVmcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3B1c2guYzo0MjEKK21zZ2lkICJtaXJyb3IgYWxsIHJlZnMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wdXNoLmM6NDIzCittc2dpZCAiZGVsZXRlIHJlZnMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wdXNoLmM6NDI0Cittc2dpZCAicHVzaCB0YWdzIChjYW4ndCBiZSB1c2VkIHdpdGggLS1hbGwgb3IgLS1taXJyb3IpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyNworbXNnaWQgImZvcmNlIHVwZGF0ZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wdXNoLmM6NDI4Cittc2dpZCAiY2hlY2siCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wdXNoLmM6NDI5Cittc2dpZCAiY29udHJvbCByZWN1cnNpdmUgcHVzaGluZyBvZiBzdWJtb2R1bGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzMQorbXNnaWQgInVzZSB0aGluIHBhY2siCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wdXNoLmM6NDMyIGJ1aWx0aW4vcHVzaC5jOjQzMworbXNnaWQgInJlY2VpdmUgcGFjayBwcm9ncmFtIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzNAorbXNnaWQgInNldCB1cHN0cmVhbSBmb3IgZ2l0IHB1bGwvc3RhdHVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzNworbXNnaWQgInBydW5lIGxvY2FsbHkgcmVtb3ZlZCByZWZzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzOQorbXNnaWQgImJ5cGFzcyBwcmUtcHVzaCBob29rIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ0MAorbXNnaWQgInB1c2ggbWlzc2luZyBidXQgcmVsZXZhbnQgdGFncyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3B1c2guYzo0NTAKIG1zZ2lkICItLWRlbGV0ZSBpcyBpbmNvbXBhdGlibGUgd2l0aCAtLWFsbCwgLS1taXJyb3IgYW5kIC0tdGFncyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzozODcKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ1MgogbXNnaWQgIi0tZGVsZXRlIGRvZXNuJ3QgbWFrZSBzZW5zZSB3aXRob3V0IGFueSByZWZzIgogbXNnc3RyICIiCiAKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MzYKK21zZ2lkICIiCisiZ2l0IHJlYWQtdHJlZSBbWy1tIFstLXRyaXZpYWxdIFstLWFnZ3Jlc3NpdmVdIHwgLS1yZXNldCB8IC0tcHJlZml4PTxwcmVmaXg+XSAiCisiWy11IFstLWV4Y2x1ZGUtcGVyLWRpcmVjdG9yeT08Z2l0aWdub3JlPl0gfCAtaV1dIFstLW5vLXNwYXJzZS1jaGVja291dF0gWy0tIgorImluZGV4LW91dHB1dD08ZmlsZT5dICgtLWVtcHR5IHwgPHRyZWUtaXNoMT4gWzx0cmVlLWlzaDI+IFs8dHJlZS1pc2gzPl1dKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEwOAorbXNnaWQgIndyaXRlIHJlc3VsdGluZyBpbmRleCB0byA8ZmlsZT4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTEKK21zZ2lkICJvbmx5IGVtcHR5IHRoZSBpbmRleCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjExMworbXNnaWQgIk1lcmdpbmciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTUKK21zZ2lkICJwZXJmb3JtIGEgbWVyZ2UgaW4gYWRkaXRpb24gdG8gYSByZWFkIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTE3Cittc2dpZCAiMy13YXkgbWVyZ2UgaWYgbm8gZmlsZSBsZXZlbCBtZXJnaW5nIHJlcXVpcmVkIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTE5Cittc2dpZCAiMy13YXkgbWVyZ2UgaW4gcHJlc2VuY2Ugb2YgYWRkcyBhbmQgcmVtb3ZlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyMQorbXNnaWQgInNhbWUgYXMgLW0sIGJ1dCBkaXNjYXJkIHVubWVyZ2VkIGVudHJpZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjIKK21zZ2lkICI8c3ViZGlyZWN0b3J5Pi8iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjMKK21zZ2lkICJyZWFkIHRoZSB0cmVlIGludG8gdGhlIGluZGV4IHVuZGVyIDxzdWJkaXJlY3Rvcnk+LyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyNgorbXNnaWQgInVwZGF0ZSB3b3JraW5nIHRyZWUgd2l0aCBtZXJnZSByZXN1bHQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjgKK21zZ2lkICJnaXRpZ25vcmUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjkKK21zZ2lkICJhbGxvdyBleHBsaWNpdGx5IGlnbm9yZWQgZmlsZXMgdG8gYmUgb3ZlcndyaXR0ZW4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzIKK21zZ2lkICJkb24ndCBjaGVjayB0aGUgd29ya2luZyB0cmVlIGFmdGVyIG1lcmdpbmciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzMKK21zZ2lkICJkb24ndCB1cGRhdGUgdGhlIGluZGV4IG9yIHRoZSB3b3JrIHRyZWUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzUKK21zZ2lkICJza2lwIGFwcGx5aW5nIHNwYXJzZSBjaGVja291dCBmaWx0ZXIiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzcKK21zZ2lkICJkZWJ1ZyB1bnBhY2stdHJlZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxMQorbXNnaWQgImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjEyCittc2dpZCAiIgorImdpdCByZW1vdGUgYWRkIFstdCA8YnJhbmNoPl0gWy1tIDxtYXN0ZXI+XSBbLWZdIFstLXRhZ3N8LS1uby10YWdzXSBbLS0iCisibWlycm9yPTxmZXRjaHxwdXNoPl0gPG5hbWU+IDx1cmw+IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTMgYnVpbHRpbi9yZW1vdGUuYzozMgorbXNnaWQgImdpdCByZW1vdGUgcmVuYW1lIDxvbGQ+IDxuZXc+IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQgYnVpbHRpbi9yZW1vdGUuYzozNworbXNnaWQgImdpdCByZW1vdGUgcmVtb3ZlIDxuYW1lPiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE1IGJ1aWx0aW4vcmVtb3RlLmM6NDIKK21zZ2lkICJnaXQgcmVtb3RlIHNldC1oZWFkIDxuYW1lPiAoLWEgfCAtZCB8IDxicmFuY2g+KSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE2Cittc2dpZCAiZ2l0IHJlbW90ZSBbLXYgfCAtLXZlcmJvc2VdIHNob3cgWy1uXSA8bmFtZT4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNworbXNnaWQgImdpdCByZW1vdGUgcHJ1bmUgWy1uIHwgLS1kcnktcnVuXSA8bmFtZT4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxOAorbXNnaWQgIiIKKyJnaXQgcmVtb3RlIFstdiB8IC0tdmVyYm9zZV0gdXBkYXRlIFstcCB8IC0tcHJ1bmVdIFsoPGdyb3VwPiB8IDxyZW1vdGU+KS4uLl0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxOQorbXNnaWQgImdpdCByZW1vdGUgc2V0LWJyYW5jaGVzIFstLWFkZF0gPG5hbWU+IDxicmFuY2g+Li4uIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MjAgYnVpbHRpbi9yZW1vdGUuYzo2OAorbXNnaWQgImdpdCByZW1vdGUgc2V0LXVybCBbLS1wdXNoXSA8bmFtZT4gPG5ld3VybD4gWzxvbGR1cmw+XSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjIxIGJ1aWx0aW4vcmVtb3RlLmM6NjkKK21zZ2lkICJnaXQgcmVtb3RlIHNldC11cmwgLS1hZGQgPG5hbWU+IDxuZXd1cmw+IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MjIgYnVpbHRpbi9yZW1vdGUuYzo3MAorbXNnaWQgImdpdCByZW1vdGUgc2V0LXVybCAtLWRlbGV0ZSA8bmFtZT4gPHVybD4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoyNworbXNnaWQgImdpdCByZW1vdGUgYWRkIFs8b3B0aW9ucz5dIDxuYW1lPiA8dXJsPiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjQ3Cittc2dpZCAiZ2l0IHJlbW90ZSBzZXQtYnJhbmNoZXMgPG5hbWU+IDxicmFuY2g+Li4uIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NDgKK21zZ2lkICJnaXQgcmVtb3RlIHNldC1icmFuY2hlcyAtLWFkZCA8bmFtZT4gPGJyYW5jaD4uLi4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzo1MworbXNnaWQgImdpdCByZW1vdGUgc2hvdyBbPG9wdGlvbnM+XSA8bmFtZT4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzo1OAorbXNnaWQgImdpdCByZW1vdGUgcHJ1bmUgWzxvcHRpb25zPl0gPG5hbWU+IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NjMKK21zZ2lkICJnaXQgcmVtb3RlIHVwZGF0ZSBbPG9wdGlvbnM+XSBbPGdyb3VwPiB8IDxyZW1vdGU+XS4uLiIKK21zZ3N0ciAiIgorCiAjOiBidWlsdGluL3JlbW90ZS5jOjk4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVwZGF0aW5nICVzIgpAQCAtMzg3Niw2ICs3Mzc1LDM0IEBACiBtc2dpZCAidW5rbm93biBtaXJyb3IgYXJndW1lbnQ6ICVzIgogbXNnc3RyICIiCiAKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTYzCittc2dpZCAiZmV0Y2ggdGhlIHJlbW90ZSBicmFuY2hlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE2NQorbXNnaWQgImltcG9ydCBhbGwgdGFncyBhbmQgYXNzb2NpYXRlZCBvYmplY3RzIHdoZW4gZmV0Y2hpbmciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNjgKK21zZ2lkICJvciBkbyBub3QgZmV0Y2ggYW55IHRhZyBhdCBhbGwgKC0tbm8tdGFncykiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNzAKK21zZ2lkICJicmFuY2goZXMpIHRvIHRyYWNrIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTcxCittc2dpZCAibWFzdGVyIGJyYW5jaCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE3MgorbXNnaWQgInB1c2h8ZmV0Y2giCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNzMKK21zZ2lkICJzZXQgdXAgcmVtb3RlIGFzIGEgbWlycm9yIHRvIHB1c2ggdG8gb3IgZmV0Y2ggZnJvbSIKK21zZ3N0ciAiIgorCiAjOiBidWlsdGluL3JlbW90ZS5jOjE4NQogbXNnaWQgInNwZWNpZnlpbmcgYSBtYXN0ZXIgYnJhbmNoIG1ha2VzIG5vIHNlbnNlIHdpdGggLS1taXJyb3IiCiBtc2dzdHIgIiIKQEAgLTQwNjUsNiArNzU5MiwxMCBAQAogbXNnaWQgIiAgICAlLSpzIHB1c2hlcyB0byAlcyIKIG1zZ3N0ciAiIgogCisjOiBidWlsdGluL3JlbW90ZS5jOjEwOTEKK21zZ2lkICJkbyBub3QgcXVlcnkgcmVtb3RlcyIKK21zZ3N0ciAiIgorCiAjOiBidWlsdGluL3JlbW90ZS5jOjExMTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiKiByZW1vdGUgJXMiCkBAIC00MTIzLDYgKzc2NTQsMTQgQEAKIG1zZ3N0clswXSAiIgogbXNnc3RyWzFdICIiCiAKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTE5OQorbXNnaWQgInNldCByZWZzL3JlbW90ZXMvPG5hbWU+L0hFQUQgYWNjb3JkaW5nIHRvIHJlbW90ZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjEyMDEKK21zZ2lkICJkZWxldGUgcmVmcy9yZW1vdGVzLzxuYW1lPi9IRUFEIgorbXNnc3RyICIiCisKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTIxNgogbXNnaWQgIkNhbm5vdCBkZXRlcm1pbmUgcmVtb3RlIEhFQUQiCiBtc2dzdHIgIiIKQEAgLTQxNzYsMTUgKzc3MTUsMzUgQEAKIG1zZ2lkICIgKiBbcHJ1bmVkXSAlcyIKIG1zZ3N0ciAiIgogCisjOiBidWlsdGluL3JlbW90ZS5jOjEzMjEKK21zZ2lkICJwcnVuZSByZW1vdGVzIGFmdGVyIGZldGNoaW5nIgorbXNnc3RyICIiCisKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTM4NyBidWlsdGluL3JlbW90ZS5jOjE0NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gc3VjaCByZW1vdGUgJyVzJyIKIG1zZ3N0ciAiIgogCisjOiBidWlsdGluL3JlbW90ZS5jOjE0MDcKK21zZ2lkICJhZGQgYnJhbmNoIgorbXNnc3RyICIiCisKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQxNAogbXNnaWQgIm5vIHJlbW90ZSBzcGVjaWZpZWQiCiBtc2dzdHIgIiIKIAorIzogYnVpbHRpbi9yZW1vdGUuYzoxNDM2Cittc2dpZCAibWFuaXB1bGF0ZSBwdXNoIFVSTHMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNDM4Cittc2dpZCAiYWRkIFVSTCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE0NDAKK21zZ2lkICJkZWxldGUgVVJMcyIKK21zZ3N0ciAiIgorCiAjOiBidWlsdGluL3JlbW90ZS5jOjE0NDcKIG1zZ2lkICItLWFkZCAtLWRlbGV0ZSBkb2Vzbid0IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIiIKQEAgLTQyMDMsNiArNzc2Miw1NSBAQAogbXNnaWQgIldpbGwgbm90IGRlbGV0ZSBhbGwgbm9uLXB1c2ggVVJMcyIKIG1zZ3N0ciAiIgogCisjOiBidWlsdGluL3JlbW90ZS5jOjE1NjkKK21zZ2lkICJiZSB2ZXJib3NlOyBtdXN0IGJlIHBsYWNlZCBiZWZvcmUgYSBzdWJjb21tYW5kIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVwbGFjZS5jOjE3Cittc2dpZCAiZ2l0IHJlcGxhY2UgWy1mXSA8b2JqZWN0PiA8cmVwbGFjZW1lbnQ+IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVwbGFjZS5jOjE4Cittc2dpZCAiZ2l0IHJlcGxhY2UgLWQgPG9iamVjdD4uLi4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZXBsYWNlLmM6MTkKK21zZ2lkICJnaXQgcmVwbGFjZSAtbCBbPHBhdHRlcm4+XSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JlcGxhY2UuYzoxMjEKK21zZ2lkICJsaXN0IHJlcGxhY2UgcmVmcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JlcGxhY2UuYzoxMjIKK21zZ2lkICJkZWxldGUgcmVwbGFjZSByZWZzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVwbGFjZS5jOjEyMworbXNnaWQgInJlcGxhY2UgdGhlIHJlZiBpZiBpdCBleGlzdHMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZXJlcmUuYzoxMQorbXNnaWQgImdpdCByZXJlcmUgW2NsZWFyIHwgZm9yZ2V0IHBhdGguLi4gfCBzdGF0dXMgfCByZW1haW5pbmcgfCBkaWZmIHwgZ2NdIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVyZXJlLmM6NTYKK21zZ2lkICJyZWdpc3RlciBjbGVhbiByZXNvbHV0aW9ucyBpbiBpbmRleCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Jlc2V0LmM6MjUKK21zZ2lkICIiCisiZ2l0IHJlc2V0IFstLW1peGVkIHwgLS1zb2Z0IHwgLS1oYXJkIHwgLS1tZXJnZSB8IC0ta2VlcF0gWy1xXSBbPGNvbW1pdD5dIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNgorbXNnaWQgImdpdCByZXNldCBbLXFdIDx0cmVlLWlzaD4gWy0tXSA8cGF0aHM+Li4uIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNworbXNnaWQgImdpdCByZXNldCAtLXBhdGNoIFs8dHJlZS1pc2g+XSBbLS1dIFs8cGF0aHM+Li4uXSIKK21zZ3N0ciAiIgorCiAjOiBidWlsdGluL3Jlc2V0LmM6MzMKIG1zZ2lkICJtaXhlZCIKIG1zZ3N0ciAiIgpAQCAtNDIyMywxMjIgKzc4MzEsNDYxIEBACiBtc2dpZCAia2VlcCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6NzcKKyM6IGJ1aWx0aW4vcmVzZXQuYzo3MwogbXNnaWQgIllvdSBkbyBub3QgaGF2ZSBhIHZhbGlkIEhFQUQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzo3OQorIzogYnVpbHRpbi9yZXNldC5jOjc1CiBtc2dpZCAiRmFpbGVkIHRvIGZpbmQgdHJlZSBvZiBIRUFELiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6ODUKKyM6IGJ1aWx0aW4vcmVzZXQuYzo4MQogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gZmluZCB0cmVlIG9mICVzLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6OTYKLW1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgbmV3IGluZGV4IGZpbGUuIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vcmVzZXQuYzoxMDYKKyM6IGJ1aWx0aW4vcmVzZXQuYzo5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJIRUFEIGlzIG5vdyBhdCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MTMwCi1tc2dpZCAiQ291bGQgbm90IHJlYWQgaW5kZXgiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9yZXNldC5jOjEzMwotbXNnaWQgIlVuc3RhZ2VkIGNoYW5nZXMgYWZ0ZXIgcmVzZXQ6IgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vcmVzZXQuYzoyMjMKKyM6IGJ1aWx0aW4vcmVzZXQuYzoxNjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGRvIGEgJXMgcmVzZXQgaW4gdGhlIG1pZGRsZSBvZiBhIG1lcmdlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6Mjk3CisjOiBidWlsdGluL3Jlc2V0LmM6MjQ4Cittc2dpZCAiYmUgcXVpZXQsIG9ubHkgcmVwb3J0IGVycm9ycyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Jlc2V0LmM6MjUwCittc2dpZCAicmVzZXQgSEVBRCBhbmQgaW5kZXgiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZXNldC5jOjI1MQorbXNnaWQgInJlc2V0IG9ubHkgSEVBRCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Jlc2V0LmM6MjUzIGJ1aWx0aW4vcmVzZXQuYzoyNTUKK21zZ2lkICJyZXNldCBIRUFELCBpbmRleCBhbmQgd29ya2luZyB0cmVlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTcKK21zZ2lkICJyZXNldCBIRUFEIGJ1dCBrZWVwIGxvY2FsIGNoYW5nZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZXNldC5jOjI3NQorIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgcmV2aXNpb24uIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNzggYnVpbHRpbi9yZXNldC5jOjI4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcycuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzozMDIKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgJyVzJyBhcyBhIHZhbGlkIHRyZWUuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyOTIKIG1zZ2lkICItLXBhdGNoIGlzIGluY29tcGF0aWJsZSB3aXRoIC0te2hhcmQsbWl4ZWQsc29mdH0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMxMQorIzogYnVpbHRpbi9yZXNldC5jOjMwMQogbXNnaWQgIi0tbWl4ZWQgd2l0aCBwYXRocyBpcyBkZXByZWNhdGVkOyB1c2UgJ2dpdCByZXNldCAtLSA8cGF0aHM+JyBpbnN0ZWFkLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzEzCisjOiBidWlsdGluL3Jlc2V0LmM6MzAzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBkbyAlcyByZXNldCB3aXRoIHBhdGhzLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzI1CisjOiBidWlsdGluL3Jlc2V0LmM6MzEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIHJlc2V0IGlzIG5vdCBhbGxvd2VkIGluIGEgYmFyZSByZXBvc2l0b3J5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzozNDEKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlc2V0IGluZGV4IGZpbGUgdG8gcmV2aXNpb24gJyVzJy4iCiBtc2dzdHIgIiIKIAorIzogYnVpbHRpbi9yZXNldC5jOjMzOQorbXNnaWQgIlVuc3RhZ2VkIGNoYW5nZXMgYWZ0ZXIgcmVzZXQ6IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzozNDQKK21zZ2lkICJDb3VsZCBub3Qgd3JpdGUgbmV3IGluZGV4IGZpbGUuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzM5Cittc2dpZCAiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IFtvcHRpb25zXSAtLSBbPGFyZ3M+Li4uXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Jldi1wYXJzZS5jOjM0NAorbXNnaWQgImtlZXAgdGhlIGAtLWAgcGFzc2VkIGFzIGFuIGFyZyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Jldi1wYXJzZS5jOjM0NgorbXNnaWQgInN0b3AgcGFyc2luZyBhZnRlciB0aGUgZmlyc3Qgbm9uLW9wdGlvbiBhcmd1bWVudCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Jldi1wYXJzZS5jOjQ2NAorbXNnaWQgIiIKKyJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgW29wdGlvbnNdIC0tIFs8YXJncz4uLi5dXG4iCisiICAgb3I6IGdpdCByZXYtcGFyc2UgLS1zcS1xdW90ZSBbPGFyZz4uLi5dXG4iCisiICAgb3I6IGdpdCByZXYtcGFyc2UgW29wdGlvbnNdIFs8YXJnPi4uLl1cbiIKKyJcbiIKKyJSdW4gXCJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgLWhcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgZmlyc3QgdXNhZ2UuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjIKK21zZ2lkICJnaXQgcmV2ZXJ0IFtvcHRpb25zXSA8Y29tbWl0LWlzaD4uLi4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoyMworbXNnaWQgImdpdCByZXZlcnQgPHN1YmNvbW1hbmQ+IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjgKK21zZ2lkICJnaXQgY2hlcnJ5LXBpY2sgW29wdGlvbnNdIDxjb21taXQtaXNoPi4uLiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JldmVydC5jOjI5Cittc2dpZCAiZ2l0IGNoZXJyeS1waWNrIDxzdWJjb21tYW5kPiIKK21zZ3N0ciAiIgorCiAjOiBidWlsdGluL3JldmVydC5jOjcwIGJ1aWx0aW4vcmV2ZXJ0LmM6OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6ICVzIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMzEKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTAzCittc2dpZCAiZW5kIHJldmVydCBvciBjaGVycnktcGljayBzZXF1ZW5jZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JldmVydC5jOjEwNAorbXNnaWQgInJlc3VtZSByZXZlcnQgb3IgY2hlcnJ5LXBpY2sgc2VxdWVuY2UiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMDUKK21zZ2lkICJjYW5jZWwgcmV2ZXJ0IG9yIGNoZXJyeS1waWNrIHNlcXVlbmNlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA2Cittc2dpZCAiZG9uJ3QgYXV0b21hdGljYWxseSBjb21taXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMDcKK21zZ2lkICJlZGl0IHRoZSBjb21taXQgbWVzc2FnZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JldmVydC5jOjExMAorbXNnaWQgInBhcmVudCBudW1iZXIiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMTIKK21zZ2lkICJtZXJnZSBzdHJhdGVneSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JldmVydC5jOjExMworbXNnaWQgIm9wdGlvbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JldmVydC5jOjExNAorbXNnaWQgIm9wdGlvbiBmb3IgbWVyZ2Ugc3RyYXRlZ3kiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMjUKK21zZ2lkICJhcHBlbmQgY29tbWl0IG5hbWUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMjYKK21zZ2lkICJhbGxvdyBmYXN0LWZvcndhcmQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMjcKK21zZ2lkICJwcmVzZXJ2ZSBpbml0aWFsbHkgZW1wdHkgY29tbWl0cyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JldmVydC5jOjEyOAorbXNnaWQgImFsbG93IGNvbW1pdHMgd2l0aCBlbXB0eSBtZXNzYWdlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JldmVydC5jOjEyOQorbXNnaWQgImtlZXAgcmVkdW5kYW50LCBlbXB0eSBjb21taXRzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTMzCiBtc2dpZCAicHJvZ3JhbSBlcnJvciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JldmVydC5jOjIyMQorIzogYnVpbHRpbi9yZXZlcnQuYzoyMjMKIG1zZ2lkICJyZXZlcnQgZmFpbGVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjM2CisjOiBidWlsdGluL3JldmVydC5jOjIzOAogbXNnaWQgImNoZXJyeS1waWNrIGZhaWxlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JtLmM6MTA5CisjOiBidWlsdGluL3JtLmM6MTUKK21zZ2lkICJnaXQgcm0gW29wdGlvbnNdIFstLV0gPGZpbGU+Li4uIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcm0uYzo2NCBidWlsdGluL3JtLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJzdWJtb2R1bGUgJyVzJyAob3Igb25lIG9mIGl0cyBuZXN0ZWQgc3VibW9kdWxlcykgdXNlcyBhIC5naXQgZGlyZWN0b3J5XG4iCisiKHVzZSAncm0gLXJmJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIGl0IGluY2x1ZGluZyBhbGwgb2YgaXRzIGhpc3RvcnkpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcm0uYzoxNzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgaGFzIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCBmcm9tIGJvdGggdGhlIGZpbGUgYW5kIHRoZSBIRUFEXG4iCiAiKHVzZSAtZiB0byBmb3JjZSByZW1vdmFsKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JtLmM6MTE1CisjOiBidWlsdGluL3JtLmM6MTgwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnIGhhcyBjaGFuZ2VzIHN0YWdlZCBpbiB0aGUgaW5kZXhcbiIKICIodXNlIC0tY2FjaGVkIHRvIGtlZXAgdGhlIGZpbGUsIG9yIC1mIHRvIGZvcmNlIHJlbW92YWwpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxMTkKKyM6IGJ1aWx0aW4vcm0uYzoxOTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgaGFzIGxvY2FsIG1vZGlmaWNhdGlvbnNcbiIKICIodXNlIC0tY2FjaGVkIHRvIGtlZXAgdGhlIGZpbGUsIG9yIC1mIHRvIGZvcmNlIHJlbW92YWwpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxOTQKKyM6IGJ1aWx0aW4vcm0uYzoyMDcKK21zZ2lkICJkbyBub3QgbGlzdCByZW1vdmVkIGZpbGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcm0uYzoyMDgKK21zZ2lkICJvbmx5IHJlbW92ZSBmcm9tIHRoZSBpbmRleCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JtLmM6MjA5Cittc2dpZCAib3ZlcnJpZGUgdGhlIHVwLXRvLWRhdGUgY2hlY2siCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9ybS5jOjIxMAorbXNnaWQgImFsbG93IHJlY3Vyc2l2ZSByZW1vdmFsIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcm0uYzoyMTIKK21zZ2lkICJleGl0IHdpdGggYSB6ZXJvIHN0YXR1cyBldmVuIGlmIG5vdGhpbmcgbWF0Y2hlZCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3JtLmM6MjgzCiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vdCByZW1vdmluZyAnJXMnIHJlY3Vyc2l2ZWx5IHdpdGhvdXQgLXIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ybS5jOjIzMAorIzogYnVpbHRpbi9ybS5jOjMyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgcm06IHVuYWJsZSB0byByZW1vdmUgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjE1NworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjEzCittc2dpZCAiZ2l0IHNob3J0bG9nIFs8b3B0aW9ucz5dIFs8cmV2aXNpb24gcmFuZ2U+XSBbWy0tXSBbPHBhdGg+Li4uXV0iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjEzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJNaXNzaW5nIGF1dGhvcjogJXMiCiBtc2dzdHIgIiIKIAorIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIyNworbXNnaWQgInNvcnQgb3V0cHV0IGFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIGNvbW1pdHMgcGVyIGF1dGhvciIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjI5Cittc2dpZCAiU3VwcHJlc3MgY29tbWl0IGRlc2NyaXB0aW9ucywgb25seSBwcm92aWRlcyBjb21taXQgY291bnQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMQorbXNnaWQgIlNob3cgdGhlIGVtYWlsIGFkZHJlc3Mgb2YgZWFjaCBhdXRob3IiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMgorbXNnaWQgIndbLGkxWyxpMl1dIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMzMKK21zZ2lkICJMaW5ld3JhcCBvdXRwdXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjkKK21zZ2lkICIiCisiZ2l0IHNob3ctYnJhbmNoIFstYXwtLWFsbF0gWy1yfC0tcmVtb3Rlc10gWy0tdG9wby1vcmRlciB8IC0tZGF0ZS1vcmRlcl0gWy0tIgorImN1cnJlbnRdIFstLWNvbG9yWz08d2hlbj5dIHwgLS1uby1jb2xvcl0gWy0tc3BhcnNlXSBbLS1tb3JlPTxuPiB8IC0tbGlzdCB8IC0tIgorImluZGVwZW5kZW50IHwgLS1tZXJnZS1iYXNlXSBbLS1uby1uYW1lIHwgLS1zaGExLW5hbWVdIFstLXRvcGljc10gWyg8cmV2PiB8ICIKKyI8Z2xvYj4pLi4uXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6MTAKK21zZ2lkICJnaXQgc2hvdy1icmFuY2ggKC1nfC0tcmVmbG9nKVs9PG4+Wyw8YmFzZT5dXSBbLS1saXN0XSBbPHJlZj5dIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTAKK21zZ2lkICJzaG93IHJlbW90ZS10cmFja2luZyBhbmQgbG9jYWwgYnJhbmNoZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1MgorbXNnaWQgInNob3cgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTQKK21zZ2lkICJjb2xvciAnKiErLScgY29ycmVzcG9uZGluZyB0byB0aGUgYnJhbmNoIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTYKK21zZ2lkICJzaG93IDxuPiBtb3JlIGNvbW1pdHMgYWZ0ZXIgdGhlIGNvbW1vbiBhbmNlc3RvciIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU4Cittc2dpZCAic3lub255bSB0byBtb3JlPS0xIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTkKK21zZ2lkICJzdXBwcmVzcyBuYW1pbmcgc3RyaW5ncyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjYxCittc2dpZCAiaW5jbHVkZSB0aGUgY3VycmVudCBicmFuY2giCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2MworbXNnaWQgIm5hbWUgY29tbWl0cyB3aXRoIHRoZWlyIG9iamVjdCBuYW1lcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY1Cittc2dpZCAic2hvdyBwb3NzaWJsZSBtZXJnZSBiYXNlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY3Cittc2dpZCAic2hvdyByZWZzIHVucmVhY2hhYmxlIGZyb20gYW55IG90aGVyIHJlZiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY5Cittc2dpZCAic2hvdyBjb21taXRzIGluIHRvcG9sb2dpY2FsIG9yZGVyIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzEKK21zZ2lkICJzaG93IG9ubHkgY29tbWl0cyBub3Qgb24gdGhlIGZpcnN0IGJyYW5jaCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjczCittc2dpZCAic2hvdyBtZXJnZXMgcmVhY2hhYmxlIGZyb20gb25seSBvbmUgdGlwIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzUKK21zZ2lkICJzaG93IGNvbW1pdHMgd2hlcmUgbm8gcGFyZW50IGNvbWVzIGJlZm9yZSBpdHMgY2hpbGRyZW4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3NworbXNnaWQgIjxuPlssPGJhc2U+XSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc4Cittc2dpZCAic2hvdyA8bj4gbW9zdCByZWNlbnQgcmVmLWxvZyBlbnRyaWVzIHN0YXJ0aW5nIGF0IGJhc2UiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjEwCittc2dpZCAiIgorImdpdCBzaG93LXJlZiBbLXF8LS1xdWlldF0gWy0tdmVyaWZ5XSBbLS1oZWFkXSBbLWR8LS1kZXJlZmVyZW5jZV0gWy1zfC0tIgorImhhc2hbPTxuPl1dIFstLWFiYnJldls9PG4+XV0gWy0tdGFnc10gWy0taGVhZHNdIFstLV0gW3BhdHRlcm4qXSAiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjExCittc2dpZCAiZ2l0IHNob3ctcmVmIC0tZXhjbHVkZS1leGlzdGluZ1s9cGF0dGVybl0gPCByZWYtbGlzdCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTY1Cittc2dpZCAib25seSBzaG93IHRhZ3MgKGNhbiBiZSBjb21iaW5lZCB3aXRoIGhlYWRzKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTY2Cittc2dpZCAib25seSBzaG93IGhlYWRzIChjYW4gYmUgY29tYmluZWQgd2l0aCB0YWdzKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTY3Cittc2dpZCAic3RyaWN0ZXIgcmVmZXJlbmNlIGNoZWNraW5nLCByZXF1aXJlcyBleGFjdCByZWYgcGF0aCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTcwIGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzIKK21zZ2lkICJzaG93IHRoZSBIRUFEIHJlZmVyZW5jZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTc0Cittc2dpZCAiZGVyZWZlcmVuY2UgdGFncyBpbnRvIG9iamVjdCBJRHMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE3NgorbXNnaWQgIm9ubHkgc2hvdyBTSEExIGhhc2ggdXNpbmcgPG4+IGRpZ2l0cyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTgwCittc2dpZCAiZG8gbm90IHByaW50IHJlc3VsdHMgdG8gc3Rkb3V0ICh1c2VmdWwgd2l0aCAtLXZlcmlmeSkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE4MgorbXNnaWQgInNob3cgcmVmcyBmcm9tIHN0ZGluIHRoYXQgYXJlbid0IGluIGxvY2FsIHJlcG9zaXRvcnkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9zeW1ib2xpYy1yZWYuYzo3Cittc2dpZCAiZ2l0IHN5bWJvbGljLXJlZiBbb3B0aW9uc10gbmFtZSBbcmVmXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjgKK21zZ2lkICJnaXQgc3ltYm9saWMtcmVmIC1kIFstcV0gbmFtZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjQwCittc2dpZCAic3VwcHJlc3MgZXJyb3IgbWVzc2FnZSBmb3Igbm9uLXN5bWJvbGljIChkZXRhY2hlZCkgcmVmcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjQxCittc2dpZCAiZGVsZXRlIHN5bWJvbGljIHJlZiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjQyCittc2dpZCAic2hvcnRlbiByZWYgb3V0cHV0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vc3ltYm9saWMtcmVmLmM6NDMgYnVpbHRpbi91cGRhdGUtcmVmLmM6MTgKK21zZ2lkICJyZWFzb24iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9zeW1ib2xpYy1yZWYuYzo0MyBidWlsdGluL3VwZGF0ZS1yZWYuYzoxOAorbXNnaWQgInJlYXNvbiBvZiB0aGUgdXBkYXRlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vdGFnLmM6MjIKK21zZ2lkICIiCisiZ2l0IHRhZyBbLWF8LXN8LXUgPGtleS1pZD5dIFstZl0gWy1tIDxtc2c+fC1GIDxmaWxlPl0gPHRhZ25hbWU+IFs8aGVhZD5dIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vdGFnLmM6MjMKK21zZ2lkICJnaXQgdGFnIC1kIDx0YWduYW1lPi4uLiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3RhZy5jOjI0Cittc2dpZCAiIgorImdpdCB0YWcgLWwgWy1uWzxudW0+XV0gWy0tY29udGFpbnMgPGNvbW1pdD5dIFstLXBvaW50cy1hdCA8b2JqZWN0Pl0gXG4iCisiXHRcdFs8cGF0dGVybj4uLi5dIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vdGFnLmM6MjYKK21zZ2lkICJnaXQgdGFnIC12IDx0YWduYW1lPi4uLiIKK21zZ3N0ciAiIgorCiAjOiBidWlsdGluL3RhZy5jOjYwCiAjLCBjLWZvcm1hdAogbXNnaWQgIm1hbGZvcm1lZCBvYmplY3QgYXQgJyVzJyIKQEAgLTQzNjUsMTQwICs4MzEyLDM1MyBAQAogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vdGFnLmM6MjQ5CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKLSIjXG4iCi0iIyBXcml0ZSBhIHRhZyBtZXNzYWdlXG4iCi0iIyBMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQuXG4iCi0iI1xuIgorIldyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKKyJMaW5lcyBzdGFydGluZyB3aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MjU2CisjOiBidWlsdGluL3RhZy5jOjI1MworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCi0iI1xuIgotIiMgV3JpdGUgYSB0YWcgbWVzc2FnZVxuIgotIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAnIycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIHlvdXJzZWxmIGlmIHlvdSAiCisiV3JpdGUgYSB0YWcgbWVzc2FnZVxuIgorIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0geW91cnNlbGYgaWYgeW91ICIKICJ3YW50IHRvLlxuIgotIiNcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3RhZy5jOjI5OAorIzogYnVpbHRpbi90YWcuYzoyOTIKIG1zZ2lkICJ1bmFibGUgdG8gc2lnbiB0aGUgdGFnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MzAwCisjOiBidWlsdGluL3RhZy5jOjI5NAogbXNnaWQgInVuYWJsZSB0byB3cml0ZSB0YWcgZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3RhZy5jOjMyNQorIzogYnVpbHRpbi90YWcuYzozMTkKIG1zZ2lkICJiYWQgb2JqZWN0IHR5cGUuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MzM4CisjOiBidWlsdGluL3RhZy5jOjMzMgogbXNnaWQgInRhZyBoZWFkZXIgdG9vIGJpZy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi90YWcuYzozNzAKKyM6IGJ1aWx0aW4vdGFnLmM6MzY4CiBtc2dpZCAibm8gdGFnIG1lc3NhZ2U/IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6Mzc2CisjOiBidWlsdGluL3RhZy5jOjM3NAogIywgYy1mb3JtYXQKIG1zZ2lkICJUaGUgdGFnIG1lc3NhZ2UgaGFzIGJlZW4gbGVmdCBpbiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDI1CisjOiBidWlsdGluL3RhZy5jOjQyMwogbXNnaWQgInN3aXRjaCAncG9pbnRzLWF0JyByZXF1aXJlcyBhbiBvYmplY3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi90YWcuYzo0MjcKKyM6IGJ1aWx0aW4vdGFnLmM6NDI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1hbGZvcm1lZCBvYmplY3QgbmFtZSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTA2CisjOiBidWlsdGluL3RhZy5jOjQ0NQorbXNnaWQgImxpc3QgdGFnIG5hbWVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ3Cittc2dpZCAicHJpbnQgPG4+IGxpbmVzIG9mIGVhY2ggdGFnIG1lc3NhZ2UiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi90YWcuYzo0NDkKK21zZ2lkICJkZWxldGUgdGFncyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3RhZy5jOjQ1MAorbXNnaWQgInZlcmlmeSB0YWdzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDUyCittc2dpZCAiVGFnIGNyZWF0aW9uIG9wdGlvbnMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi90YWcuYzo0NTQKK21zZ2lkICJhbm5vdGF0ZWQgdGFnLCBuZWVkcyBhIG1lc3NhZ2UiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi90YWcuYzo0NTYKK21zZ2lkICJ0YWcgbWVzc2FnZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3RhZy5jOjQ1OAorbXNnaWQgImFubm90YXRlZCBhbmQgR1BHLXNpZ25lZCB0YWciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi90YWcuYzo0NjIKK21zZ2lkICJ1c2UgYW5vdGhlciBrZXkgdG8gc2lnbiB0aGUgdGFnIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDYzCittc2dpZCAicmVwbGFjZSB0aGUgdGFnIGlmIGV4aXN0cyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3RhZy5jOjQ2NAorbXNnaWQgInNob3cgdGFnIGxpc3QgaW4gY29sdW1ucyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3RhZy5jOjQ2NgorbXNnaWQgIlRhZyBsaXN0aW5nIG9wdGlvbnMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi90YWcuYzo0NjkKK21zZ2lkICJwcmludCBvbmx5IHRhZ3MgdGhhdCBjb250YWluIHRoZSBjb21taXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi90YWcuYzo0NzUKK21zZ2lkICJwcmludCBvbmx5IHRhZ3Mgb2YgdGhlIG9iamVjdCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3RhZy5jOjUwNAogbXNnaWQgIi0tY29sdW1uIGFuZCAtbiBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTIzCisjOiBidWlsdGluL3RhZy5jOjUyMQogbXNnaWQgIi1uIG9wdGlvbiBpcyBvbmx5IGFsbG93ZWQgd2l0aCAtbC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi90YWcuYzo1MjUKKyM6IGJ1aWx0aW4vdGFnLmM6NTIzCiBtc2dpZCAiLS1jb250YWlucyBvcHRpb24gaXMgb25seSBhbGxvd2VkIHdpdGggLWwuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTI3CisjOiBidWlsdGluL3RhZy5jOjUyNQogbXNnaWQgIi0tcG9pbnRzLWF0IG9wdGlvbiBpcyBvbmx5IGFsbG93ZWQgd2l0aCAtbC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi90YWcuYzo1MzUKKyM6IGJ1aWx0aW4vdGFnLmM6NTMzCiBtc2dpZCAib25seSBvbmUgLUYgb3IgLW0gb3B0aW9uIGlzIGFsbG93ZWQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTU1CisjOiBidWlsdGluL3RhZy5jOjU1MwogbXNnaWQgInRvbyBtYW55IHBhcmFtcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3RhZy5jOjU2MQorIzogYnVpbHRpbi90YWcuYzo1NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBpcyBub3QgYSB2YWxpZCB0YWcgbmFtZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi90YWcuYzo1NjYKKyM6IGJ1aWx0aW4vdGFnLmM6NTY0CiAjLCBjLWZvcm1hdAogbXNnaWQgInRhZyAnJXMnIGFscmVhZHkgZXhpc3RzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTg0CisjOiBidWlsdGluL3RhZy5jOjU4MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2Fubm90IGxvY2sgdGhlIHJlZiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3RhZy5jOjU4NgorIzogYnVpbHRpbi90YWcuYzo1ODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbm5vdCB1cGRhdGUgdGhlIHJlZiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3RhZy5jOjU4OAorIzogYnVpbHRpbi90YWcuYzo1ODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXBkYXRlZCB0YWcgJyVzJyAod2FzICVzKVxuIgogbXNnc3RyICIiCiAKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NDAxCittc2dpZCAiZ2l0IHVwZGF0ZS1pbmRleCBbb3B0aW9uc10gWy0tXSBbPGZpbGU+Li4uXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcxOAorbXNnaWQgImNvbnRpbnVlIHJlZnJlc2ggZXZlbiB3aGVuIGluZGV4IG5lZWRzIHVwZGF0ZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcyMQorbXNnaWQgInJlZnJlc2g6IGlnbm9yZSBzdWJtb2R1bGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzI0Cittc2dpZCAiZG8gbm90IGlnbm9yZSBuZXcgZmlsZXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MjYKK21zZ2lkICJsZXQgZmlsZXMgcmVwbGFjZSBkaXJlY3RvcmllcyBhbmQgdmljZS12ZXJzYSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcyOAorbXNnaWQgIm5vdGljZSBmaWxlcyBtaXNzaW5nIGZyb20gd29ya3RyZWUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MzAKK21zZ2lkICJyZWZyZXNoIGV2ZW4gaWYgaW5kZXggY29udGFpbnMgdW5tZXJnZWQgZW50cmllcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjczMworbXNnaWQgInJlZnJlc2ggc3RhdCBpbmZvcm1hdGlvbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjczNworbXNnaWQgImxpa2UgLS1yZWZyZXNoLCBidXQgaWdub3JlIGFzc3VtZS11bmNoYW5nZWQgc2V0dGluZyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc0MQorbXNnaWQgIjxtb2RlPiA8b2JqZWN0PiA8cGF0aD4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NDIKK21zZ2lkICJhZGQgdGhlIHNwZWNpZmllZCBlbnRyeSB0byB0aGUgaW5kZXgiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NDYKK21zZ2lkICIoKy8tKXgiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NDcKK21zZ2lkICJvdmVycmlkZSB0aGUgZXhlY3V0YWJsZSBiaXQgb2YgdGhlIGxpc3RlZCBmaWxlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc1MQorbXNnaWQgIm1hcmsgZmlsZXMgYXMgXCJub3QgY2hhbmdpbmdcIiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc1NAorbXNnaWQgImNsZWFyIGFzc3VtZWQtdW5jaGFuZ2VkIGJpdCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc1NworbXNnaWQgIm1hcmsgZmlsZXMgYXMgXCJpbmRleC1vbmx5XCIiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NjAKK21zZ2lkICJjbGVhciBza2lwLXdvcmt0cmVlIGJpdCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc2MworbXNnaWQgImFkZCB0byBpbmRleCBvbmx5OyBkbyBub3QgYWRkIGNvbnRlbnQgdG8gb2JqZWN0IGRhdGFiYXNlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzY1Cittc2dpZCAicmVtb3ZlIG5hbWVkIHBhdGhzIGV2ZW4gaWYgcHJlc2VudCBpbiB3b3JrdHJlZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc2NworbXNnaWQgIndpdGggLS1zdGRpbjogaW5wdXQgbGluZXMgYXJlIHRlcm1pbmF0ZWQgYnkgbnVsbCBieXRlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc2OQorbXNnaWQgInJlYWQgbGlzdCBvZiBwYXRocyB0byBiZSB1cGRhdGVkIGZyb20gc3RhbmRhcmQgaW5wdXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NzMKK21zZ2lkICJhZGQgZW50cmllcyBmcm9tIHN0YW5kYXJkIGlucHV0IHRvIHRoZSBpbmRleCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc3NworbXNnaWQgInJlcG9wdWxhdGUgc3RhZ2VzICMyIGFuZCAjMyBmb3IgdGhlIGxpc3RlZCBwYXRocyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc4MQorbXNnaWQgIm9ubHkgdXBkYXRlIGVudHJpZXMgdGhhdCBkaWZmZXIgZnJvbSBIRUFEIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6Nzg1Cittc2dpZCAiaWdub3JlIGZpbGVzIG1pc3NpbmcgZnJvbSB3b3JrdHJlZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc4OAorbXNnaWQgInJlcG9ydCBhY3Rpb25zIHRvIHN0YW5kYXJkIG91dHB1dCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc5MAorbXNnaWQgIihmb3IgcG9yY2VsYWlucykgZm9yZ2V0IHNhdmVkIHVucmVzb2x2ZWQgY29uZmxpY3RzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6Nzk0Cittc2dpZCAid3JpdGUgaW5kZXggaW4gdGhpcyBmb3JtYXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi91cGRhdGUtcmVmLmM6NworbXNnaWQgImdpdCB1cGRhdGUtcmVmIFtvcHRpb25zXSAtZCA8cmVmbmFtZT4gWzxvbGR2YWw+XSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1yZWYuYzo4Cittc2dpZCAiZ2l0IHVwZGF0ZS1yZWYgW29wdGlvbnNdICAgIDxyZWZuYW1lPiA8bmV3dmFsPiBbPG9sZHZhbD5dIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLXJlZi5jOjE5Cittc2dpZCAiZGVsZXRlIHRoZSByZWZlcmVuY2UiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi91cGRhdGUtcmVmLmM6MjEKK21zZ2lkICJ1cGRhdGUgPHJlZm5hbWU+IG5vdCB0aGUgb25lIGl0IHBvaW50cyB0byIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1zZXJ2ZXItaW5mby5jOjYKK21zZ2lkICJnaXQgdXBkYXRlLXNlcnZlci1pbmZvIFstLWZvcmNlXSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3VwZGF0ZS1zZXJ2ZXItaW5mby5jOjE0Cittc2dpZCAidXBkYXRlIHRoZSBpbmZvIGZpbGVzIGZyb20gc2NyYXRjaCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3ZlcmlmeS1wYWNrLmM6NTYKK21zZ2lkICJnaXQgdmVyaWZ5LXBhY2sgWy12fC0tdmVyYm9zZV0gWy1zfC0tc3RhdC1vbmx5XSA8cGFjaz4uLi4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi92ZXJpZnktcGFjay5jOjY2Cittc2dpZCAidmVyYm9zZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3ZlcmlmeS1wYWNrLmM6NjgKK21zZ2lkICJzaG93IHN0YXRpc3RpY3Mgb25seSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3ZlcmlmeS10YWcuYzoxNworbXNnaWQgImdpdCB2ZXJpZnktdGFnIFstdnwtLXZlcmJvc2VdIDx0YWc+Li4uIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vdmVyaWZ5LXRhZy5jOjczCittc2dpZCAicHJpbnQgdGFnIGNvbnRlbnRzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vd3JpdGUtdHJlZS5jOjEzCittc2dpZCAiZ2l0IHdyaXRlLXRyZWUgWy0tbWlzc2luZy1va10gWy0tcHJlZml4PTxwcmVmaXg+L10iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi93cml0ZS10cmVlLmM6MjYKK21zZ2lkICI8cHJlZml4Pi8iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi93cml0ZS10cmVlLmM6MjcKK21zZ2lkICJ3cml0ZSB0cmVlIG9iamVjdCBmb3IgYSBzdWJkaXJlY3RvcnkgPHByZWZpeD4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi93cml0ZS10cmVlLmM6MzAKK21zZ2lkICJvbmx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nIgorbXNnc3RyICIiCisKICM6IGdpdC5jOjE2Ci1tc2dpZCAiU2VlICdnaXQgaGVscCA8Y29tbWFuZD4nIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGEgc3BlY2lmaWMgY29tbWFuZC4iCi1tc2dzdHIgIiIKLQotIzogcGFyc2Utb3B0aW9ucy5oOjEzMyBwYXJzZS1vcHRpb25zLmg6MjM1Ci1tc2dpZCAibiIKLW1zZ3N0ciAiIgotCi0jOiBwYXJzZS1vcHRpb25zLmg6MTQxCi1tc2dpZCAidGltZSIKLW1zZ3N0ciAiIgotCi0jOiBwYXJzZS1vcHRpb25zLmg6MTQ5Ci1tc2dpZCAiZmlsZSIKLW1zZ3N0ciAiIgotCi0jOiBwYXJzZS1vcHRpb25zLmg6MTUxCi1tc2dpZCAid2hlbiIKK21zZ2lkICIiCisiJ2dpdCBoZWxwIC1hJyBhbmQgJ2dpdCBoZWxwIC1nJyBsaXN0cyBhdmFpbGFibGUgc3ViY29tbWFuZHMgYW5kIHNvbWVcbiIKKyJjb25jZXB0IGd1aWRlcy4gU2VlICdnaXQgaGVscCA8Y29tbWFuZD4nIG9yICdnaXQgaGVscCA8Y29uY2VwdD4nXG4iCisidG8gcmVhZCBhYm91dCBhIHNwZWNpZmljIHN1YmNvbW1hbmQgb3IgY29uY2VwdC4iCiBtc2dzdHIgIiIKIAogIzogcGFyc2Utb3B0aW9ucy5oOjE1NgogbXNnaWQgIm5vLW9wIChiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSIKIG1zZ3N0ciAiIgogCi0jOiBwYXJzZS1vcHRpb25zLmg6MjI4CisjOiBwYXJzZS1vcHRpb25zLmg6MjMyCiBtc2dpZCAiYmUgbW9yZSB2ZXJib3NlIgogbXNnc3RyICIiCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyMzAKKyM6IHBhcnNlLW9wdGlvbnMuaDoyMzQKIG1zZ2lkICJiZSBtb3JlIHF1aWV0IgogbXNnc3RyICIiCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyMzYKKyM6IHBhcnNlLW9wdGlvbnMuaDoyNDAKIG1zZ2lkICJ1c2UgPG4+IGRpZ2l0cyB0byBkaXNwbGF5IFNIQS0xcyIKIG1zZ3N0ciAiIgogCkBAIC00NTM5LDcgKzg2OTksNyBAQAogbXNnc3RyICIiCiAKICM6IGNvbW1vbi1jbWRzLmg6MTcKLW1zZ2lkICJDcmVhdGUgYW4gZW1wdHkgZ2l0IHJlcG9zaXRvcnkgb3IgcmVpbml0aWFsaXplIGFuIGV4aXN0aW5nIG9uZSIKK21zZ2lkICJDcmVhdGUgYW4gZW1wdHkgR2l0IHJlcG9zaXRvcnkgb3IgcmVpbml0aWFsaXplIGFuIGV4aXN0aW5nIG9uZSIKIG1zZ3N0ciAiIgogCiAjOiBjb21tb24tY21kcy5oOjE4CkBAIC00NTk5LDkgKzg3NTksOSBAQAogIzogZ2l0LWFtLnNoOjEwNQogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgotIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtIHJ1biBcIiRjbWRsaW5lIC0tcmVzb2x2ZWRcIi5cbiIKLSJJZiB5b3Ugd291bGQgcHJlZmVyIHRvIHNraXAgdGhpcyBwYXRjaCwgaW5zdGVhZCBydW4gXCIkY21kbGluZSAtLXNraXBcIi5cbiIKLSJUbyByZXN0b3JlIHRoZSBvcmlnaW5hbCBicmFuY2ggYW5kIHN0b3AgcGF0Y2hpbmcgcnVuIFwiJGNtZGxpbmUgLS1hYm9ydFwiLiIKKyJXaGVuIHlvdSBoYXZlIHJlc29sdmVkIHRoaXMgcHJvYmxlbSwgcnVuIFwiJGNtZGxpbmUgLS1yZXNvbHZlZFwiLlxuIgorIklmIHlvdSBwcmVmZXIgdG8gc2tpcCB0aGlzIHBhdGNoLCBydW4gXCIkY21kbGluZSAtLXNraXBcIiBpbnN0ZWFkLlxuIgorIlRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGJyYW5jaCBhbmQgc3RvcCBwYXRjaGluZywgcnVuIFwiJGNtZGxpbmUgLS1hYm9ydFwiLiIKIG1zZ3N0ciAiIgogCiAjOiBnaXQtYW0uc2g6MTIxCkBAIC00NjEyLDYgKzg3NzIsMTAgQEAKIG1zZ2lkICJSZXBvc2l0b3J5IGxhY2tzIG5lY2Vzc2FyeSBibG9icyB0byBmYWxsIGJhY2sgb24gMy13YXkgbWVyZ2UuIgogbXNnc3RyICIiCiAKKyM6IGdpdC1hbS5zaDoxMzkKK21zZ2lkICJVc2luZyBpbmRleCBpbmZvIHRvIHJlY29uc3RydWN0IGEgYmFzZSB0cmVlLi4uIgorbXNnc3RyICIiCisKICM6IGdpdC1hbS5zaDoxNTQKIG1zZ2lkICIiCiAiRGlkIHlvdSBoYW5kIGVkaXQgeW91ciBwYXRjaD9cbiIKQEAgLTQ2MjIsNDIgKzg3ODYsNDggQEAKIG1zZ2lkICJGYWxsaW5nIGJhY2sgdG8gcGF0Y2hpbmcgYmFzZSBhbmQgMy13YXkgbWVyZ2UuLi4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWFtLnNoOjI3NQorIzogZ2l0LWFtLnNoOjE3OQorbXNnaWQgIkZhaWxlZCB0byBtZXJnZSBpbiB0aGUgY2hhbmdlcy4iCittc2dzdHIgIiIKKworIzogZ2l0LWFtLnNoOjI3NAogbXNnaWQgIk9ubHkgb25lIFN0R0lUIHBhdGNoIHNlcmllcyBjYW4gYmUgYXBwbGllZCBhdCBvbmNlIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDozNjIKKyM6IGdpdC1hbS5zaDozNjEKICMsIHNoLWZvcm1hdAogbXNnaWQgIlBhdGNoIGZvcm1hdCAkcGF0Y2hfZm9ybWF0IGlzIG5vdCBzdXBwb3J0ZWQuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDozNjQKKyM6IGdpdC1hbS5zaDozNjMKIG1zZ2lkICJQYXRjaCBmb3JtYXQgZGV0ZWN0aW9uIGZhaWxlZC4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWFtLnNoOjQxOAotbXNnaWQgIi1kIG9wdGlvbiBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiAgRG8gbm90IHVzZS4iCisjOiBnaXQtYW0uc2g6Mzg5Cittc2dpZCAiIgorIlRoZSAtYi8tLWJpbmFyeSBvcHRpb24gaGFzIGJlZW4gYSBuby1vcCBmb3IgbG9uZyB0aW1lLCBhbmRcbiIKKyJpdCB3aWxsIGJlIHJlbW92ZWQuIFBsZWFzZSBkbyBub3QgdXNlIGl0IGFueW1vcmUuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDo0ODEKKyM6IGdpdC1hbS5zaDo0NzcKICMsIHNoLWZvcm1hdAogbXNnaWQgInByZXZpb3VzIHJlYmFzZSBkaXJlY3RvcnkgJGRvdGVzdCBzdGlsbCBleGlzdHMgYnV0IG1ib3ggZ2l2ZW4uIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDo0ODYKKyM6IGdpdC1hbS5zaDo0ODIKIG1zZ2lkICJQbGVhc2UgbWFrZSB1cCB5b3VyIG1pbmQuIC0tc2tpcCBvciAtLWFib3J0PyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtYW0uc2g6NTEzCisjOiBnaXQtYW0uc2g6NTA5CiBtc2dpZCAiUmVzb2x2ZSBvcGVyYXRpb24gbm90IGluIHByb2dyZXNzLCB3ZSBhcmUgbm90IHJlc3VtaW5nLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtYW0uc2g6NTc5CisjOiBnaXQtYW0uc2g6NTc1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJEaXJ0eSBpbmRleDogY2Fubm90IGFwcGx5IHBhdGNoZXMgKGRpcnR5OiAkZmlsZXMpIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDo2NzEKKyM6IGdpdC1hbS5zaDo2NzkKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJQYXRjaCBpcyBlbXB0eS4gIFdhcyBpdCBzcGxpdCB3cm9uZz9cbiIKQEAgLTQ2NjUsNTMgKzg4MzUsNjAgQEAKICJUbyByZXN0b3JlIHRoZSBvcmlnaW5hbCBicmFuY2ggYW5kIHN0b3AgcGF0Y2hpbmcgcnVuIFwiJGNtZGxpbmUgLS1hYm9ydFwiLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtYW0uc2g6NzA4CisjOiBnaXQtYW0uc2g6NzA2CiBtc2dpZCAiUGF0Y2ggZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGUtbWFpbCBhZGRyZXNzLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtYW0uc2g6NzU1CisjOiBnaXQtYW0uc2g6NzUzCiBtc2dpZCAiY2Fubm90IGJlIGludGVyYWN0aXZlIHdpdGhvdXQgc3RkaW4gY29ubmVjdGVkIHRvIGEgdGVybWluYWwuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDo3NTkKKyM6IGdpdC1hbS5zaDo3NTcKIG1zZ2lkICJDb21taXQgQm9keSBpczoiCiBtc2dzdHIgIiIKIAogIy4gVFJBTlNMQVRPUlM6IE1ha2Ugc3VyZSB0byBpbmNsdWRlIFt5XSwgW25dLCBbZV0sIFt2XSBhbmQgW2FdCiAjLiBpbiB5b3VyIHRyYW5zbGF0aW9uLiBUaGUgcHJvZ3JhbSB3aWxsIG9ubHkgYWNjZXB0IEVuZ2xpc2gKICMuIGlucHV0IGF0IHRoaXMgcG9pbnQuCi0jOiBnaXQtYW0uc2g6NzY2CisjOiBnaXQtYW0uc2g6NzY0CiBtc2dpZCAiQXBwbHk/IFt5XWVzL1tuXW8vW2VdZGl0L1t2XWlldyBwYXRjaC9bYV1jY2VwdCBhbGwgIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDo4MDIKKyM6IGdpdC1hbS5zaDo4MDAKICMsIHNoLWZvcm1hdAogbXNnaWQgIkFwcGx5aW5nOiAkRklSU1RMSU5FIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDo4MjMKKyM6IGdpdC1hbS5zaDo4MjEKIG1zZ2lkICIiCiAiTm8gY2hhbmdlcyAtIGRpZCB5b3UgZm9yZ2V0IHRvIHVzZSAnZ2l0IGFkZCc/XG4iCiAiSWYgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvIHN0YWdlLCBjaGFuY2VzIGFyZSB0aGF0IHNvbWV0aGluZyBlbHNlXG4iCiAiYWxyZWFkeSBpbnRyb2R1Y2VkIHRoZSBzYW1lIGNoYW5nZXM7IHlvdSBtaWdodCB3YW50IHRvIHNraXAgdGhpcyBwYXRjaC4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWFtLnNoOjgzMQorIzogZ2l0LWFtLnNoOjgyOQogbXNnaWQgIiIKICJZb3Ugc3RpbGwgaGF2ZSB1bm1lcmdlZCBwYXRocyBpbiB5b3VyIGluZGV4XG4iCiAiZGlkIHlvdSBmb3JnZXQgdG8gdXNlICdnaXQgYWRkJz8iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWFtLnNoOjg0NworIzogZ2l0LWFtLnNoOjg0NQogbXNnaWQgIk5vIGNoYW5nZXMgLS0gUGF0Y2ggYWxyZWFkeSBhcHBsaWVkLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtYW0uc2g6ODU3CisjOiBnaXQtYW0uc2g6ODU1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJQYXRjaCBmYWlsZWQgYXQgJG1zZ251bSAkRklSU1RMSU5FIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDo4NzMKKyM6IGdpdC1hbS5zaDo4NTgKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgY29weSBvZiB0aGUgcGF0Y2ggdGhhdCBmYWlsZWQgaXMgZm91bmQgaW46XG4iCisiICAgJGRvdGVzdC9wYXRjaCIKK21zZ3N0ciAiIgorCisjOiBnaXQtYW0uc2g6ODc2CiBtc2dpZCAiYXBwbHlpbmcgdG8gYW4gZW1wdHkgaGlzdG9yeSIKIG1zZ3N0ciAiIgogCkBAIC00ODAzLDU5ICs4OTgwLDU5IEBACiAiKFlvdSBjYW4gdXNlIFwiZ2l0IGJpc2VjdCBiYWRcIiBhbmQgXCJnaXQgYmlzZWN0IGdvb2RcIiBmb3IgdGhhdC4pIgogbXNnc3RyICIiCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzQ3IGdpdC1iaXNlY3Quc2g6NDc0CisjOiBnaXQtYmlzZWN0LnNoOjM2MyBnaXQtYmlzZWN0LnNoOjQ5MAogbXNnaWQgIldlIGFyZSBub3QgYmlzZWN0aW5nLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtYmlzZWN0LnNoOjM1NAorIzogZ2l0LWJpc2VjdC5zaDozNzAKICMsIHNoLWZvcm1hdAogbXNnaWQgIickaW52YWxpZCcgaXMgbm90IGEgdmFsaWQgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzYzCisjOiBnaXQtYmlzZWN0LnNoOjM3OQogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIkNvdWxkIG5vdCBjaGVjayBvdXQgb3JpZ2luYWwgSEVBRCAnJGJyYW5jaCcuXG4iCiAiVHJ5ICdnaXQgYmlzZWN0IHJlc2V0IDxjb21taXQ+Jy4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWJpc2VjdC5zaDozOTAKKyM6IGdpdC1iaXNlY3Quc2g6NDA2CiBtc2dpZCAiTm8gbG9nZmlsZSBnaXZlbiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtYmlzZWN0LnNoOjM5MQorIzogZ2l0LWJpc2VjdC5zaDo0MDcKICMsIHNoLWZvcm1hdAogbXNnaWQgImNhbm5vdCByZWFkICRmaWxlIGZvciByZXBsYXlpbmciCiBtc2dzdHIgIiIKIAotIzogZ2l0LWJpc2VjdC5zaDo0MDgKKyM6IGdpdC1iaXNlY3Quc2g6NDI0CiBtc2dpZCAiPz8gd2hhdCBhcmUgeW91IHRhbGtpbmcgYWJvdXQ/IgogbXNnc3RyICIiCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDIwCisjOiBnaXQtYmlzZWN0LnNoOjQzNgogIywgc2gtZm9ybWF0CiBtc2dpZCAicnVubmluZyAkY29tbWFuZCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtYmlzZWN0LnNoOjQyNworIzogZ2l0LWJpc2VjdC5zaDo0NDMKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJiaXNlY3QgcnVuIGZhaWxlZDpcbiIKICJleGl0IGNvZGUgJHJlcyBmcm9tICckY29tbWFuZCcgaXMgPCAwIG9yID49IDEyOCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtYmlzZWN0LnNoOjQ1MworIzogZ2l0LWJpc2VjdC5zaDo0NjkKIG1zZ2lkICJiaXNlY3QgcnVuIGNhbm5vdCBjb250aW51ZSBhbnkgbW9yZSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtYmlzZWN0LnNoOjQ1OQorIzogZ2l0LWJpc2VjdC5zaDo0NzUKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJiaXNlY3QgcnVuIGZhaWxlZDpcbiIKICInYmlzZWN0X3N0YXRlICRzdGF0ZScgZXhpdGVkIHdpdGggZXJyb3IgY29kZSAkcmVzIgogbXNnc3RyICIiCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDY2CisjOiBnaXQtYmlzZWN0LnNoOjQ4MgogbXNnaWQgImJpc2VjdCBydW4gc3VjY2VzcyIKIG1zZ3N0ciAiIgogCkBAIC00ODcwLDcgKzkwNDcsNyBAQAogbXNnaWQgIlB1bGwgaXMgbm90IHBvc3NpYmxlIGJlY2F1c2UgeW91IGhhdmUgdW5tZXJnZWQgZmlsZXMuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1wdWxsLnNoOjE5NworIzogZ2l0LXB1bGwuc2g6MjAzCiBtc2dpZCAidXBkYXRpbmcgYW4gdW5ib3JuIGJyYW5jaCB3aXRoIGNoYW5nZXMgYWRkZWQgdG8gdGhlIGluZGV4IgogbXNnc3RyICIiCiAKQEAgLTQ4NzgsNyArOTA1NSw3IEBACiAjLiBUaGUgd29ya2luZyB0cmVlIGFuZCB0aGUgaW5kZXggZmlsZSBpcyBzdGlsbCBiYXNlZCBvbiB0aGUKICMuICRvcmlnX2hlYWQgY29tbWl0LCBidXQgd2UgYXJlIG1lcmdpbmcgaW50byAkY3Vycl9oZWFkLgogIy4gRmlyc3QgdXBkYXRlIHRoZSB3b3JraW5nIHRyZWUgdG8gbWF0Y2ggJGN1cnJfaGVhZC4KLSM6IGdpdC1wdWxsLnNoOjIyOAorIzogZ2l0LXB1bGwuc2g6MjM1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiV2FybmluZzogZmV0Y2ggdXBkYXRlZCB0aGUgY3VycmVudCBicmFuY2ggaGVhZC5cbiIKQEAgLTQ4ODYsMTQgKzkwNjMsMTI0IEBACiAiV2FybmluZzogY29tbWl0ICRvcmlnX2hlYWQuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1wdWxsLnNoOjI1MworIzogZ2l0LXB1bGwuc2g6MjYwCiBtc2dpZCAiQ2Fubm90IG1lcmdlIG11bHRpcGxlIGJyYW5jaGVzIGludG8gZW1wdHkgaGVhZCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtcHVsbC5zaDoyNTcKKyM6IGdpdC1wdWxsLnNoOjI2NAogbXNnaWQgIkNhbm5vdCByZWJhc2Ugb250byBtdWx0aXBsZSBicmFuY2hlcyIKIG1zZ3N0ciAiIgogCisjOiBnaXQtcmViYXNlLnNoOjUzCittc2dpZCAiIgorIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtLCBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIi5cbiIKKyJJZiB5b3UgcHJlZmVyIHRvIHNraXAgdGhpcyBwYXRjaCwgcnVuIFwiZ2l0IHJlYmFzZSAtLXNraXBcIiBpbnN0ZWFkLlxuIgorIlRvIGNoZWNrIG91dCB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBzdG9wIHJlYmFzaW5nLCBydW4gXCJnaXQgcmViYXNlIC0tYWJvcnQiCisiXCIuIgorbXNnc3RyICIiCisKKyM6IGdpdC1yZWJhc2Uuc2g6MTYwCittc2dpZCAiVGhlIHByZS1yZWJhc2UgaG9vayByZWZ1c2VkIHRvIHJlYmFzZS4iCittc2dzdHIgIiIKKworIzogZ2l0LXJlYmFzZS5zaDoxNjUKK21zZ2lkICJJdCBsb29rcyBsaWtlIGdpdC1hbSBpcyBpbiBwcm9ncmVzcy4gQ2Fubm90IHJlYmFzZS4iCittc2dzdHIgIiIKKworIzogZ2l0LXJlYmFzZS5zaDoyOTYKK21zZ2lkICJUaGUgLS1leGVjIG9wdGlvbiBtdXN0IGJlIHVzZWQgd2l0aCB0aGUgLS1pbnRlcmFjdGl2ZSBvcHRpb24iCittc2dzdHIgIiIKKworIzogZ2l0LXJlYmFzZS5zaDozMDEKK21zZ2lkICJObyByZWJhc2UgaW4gcHJvZ3Jlc3M/IgorbXNnc3RyICIiCisKKyM6IGdpdC1yZWJhc2Uuc2g6MzEyCittc2dpZCAiVGhlIC0tZWRpdC10b2RvIGFjdGlvbiBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBpbnRlcmFjdGl2ZSByZWJhc2UuIgorbXNnc3RyICIiCisKKyM6IGdpdC1yZWJhc2Uuc2g6MzE5Cittc2dpZCAiQ2Fubm90IHJlYWQgSEVBRCIKK21zZ3N0ciAiIgorCisjOiBnaXQtcmViYXNlLnNoOjMyMgorbXNnaWQgIiIKKyJZb3UgbXVzdCBlZGl0IGFsbCBtZXJnZSBjb25mbGljdHMgYW5kIHRoZW5cbiIKKyJtYXJrIHRoZW0gYXMgcmVzb2x2ZWQgdXNpbmcgZ2l0IGFkZCIKK21zZ3N0ciAiIgorCisjOiBnaXQtcmViYXNlLnNoOjM0MAorIywgc2gtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IG1vdmUgYmFjayB0byAkaGVhZF9uYW1lIgorbXNnc3RyICIiCisKKyM6IGdpdC1yZWJhc2Uuc2g6MzU5CisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiSXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBhbHJlYWR5IGEgJHN0YXRlX2Rpcl9iYXNlIGRpcmVjdG9yeSwgYW5kXG4iCisiSSB3b25kZXIgaWYgeW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGFub3RoZXIgcmViYXNlLiAgSWYgdGhhdCBpcyB0aGVcbiIKKyJjYXNlLCBwbGVhc2UgdHJ5XG4iCisiXHQkY21kX2xpdmVfcmViYXNlXG4iCisiSWYgdGhhdCBpcyBub3QgdGhlIGNhc2UsIHBsZWFzZVxuIgorIlx0JGNtZF9jbGVhcl9zdGFsZV9yZWJhc2VcbiIKKyJhbmQgcnVuIG1lIGFnYWluLiAgSSBhbSBzdG9wcGluZyBpbiBjYXNlIHlvdSBzdGlsbCBoYXZlIHNvbWV0aGluZ1xuIgorInZhbHVhYmxlIHRoZXJlLiIKK21zZ3N0ciAiIgorCisjOiBnaXQtcmViYXNlLnNoOjQwNAorIywgc2gtZm9ybWF0Cittc2dpZCAiaW52YWxpZCB1cHN0cmVhbSAkdXBzdHJlYW1fbmFtZSIKK21zZ3N0ciAiIgorCisjOiBnaXQtcmViYXNlLnNoOjQyOAorIywgc2gtZm9ybWF0Cittc2dpZCAiJG9udG9fbmFtZTogdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgbWVyZ2UgYmFzZXMiCittc2dzdHIgIiIKKworIzogZ2l0LXJlYmFzZS5zaDo0MzEgZ2l0LXJlYmFzZS5zaDo0MzUKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiRvbnRvX25hbWU6IHRoZXJlIGlzIG5vIG1lcmdlIGJhc2UiCittc2dzdHIgIiIKKworIzogZ2l0LXJlYmFzZS5zaDo0NDAKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkRvZXMgbm90IHBvaW50IHRvIGEgdmFsaWQgY29tbWl0OiAkb250b19uYW1lIgorbXNnc3RyICIiCisKKyM6IGdpdC1yZWJhc2Uuc2g6NDYzCisjLCBzaC1mb3JtYXQKK21zZ2lkICJmYXRhbDogbm8gc3VjaCBicmFuY2g6ICRicmFuY2hfbmFtZSIKK21zZ3N0ciAiIgorCisjOiBnaXQtcmViYXNlLnNoOjQ4MworbXNnaWQgIlBsZWFzZSBjb21taXQgb3Igc3Rhc2ggdGhlbS4iCittc2dzdHIgIiIKKworIzogZ2l0LXJlYmFzZS5zaDo1MDEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkN1cnJlbnQgYnJhbmNoICRicmFuY2hfbmFtZSBpcyB1cCB0byBkYXRlLiIKK21zZ3N0ciAiIgorCisjOiBnaXQtcmViYXNlLnNoOjUwNAorIywgc2gtZm9ybWF0Cittc2dpZCAiQ3VycmVudCBicmFuY2ggJGJyYW5jaF9uYW1lIGlzIHVwIHRvIGRhdGUsIHJlYmFzZSBmb3JjZWQuIgorbXNnc3RyICIiCisKKyM6IGdpdC1yZWJhc2Uuc2g6NTE1CisjLCBzaC1mb3JtYXQKK21zZ2lkICJDaGFuZ2VzIGZyb20gJG1iIHRvICRvbnRvOiIKK21zZ3N0ciAiIgorCisjLiBEZXRhY2ggSEVBRCBhbmQgcmVzZXQgdGhlIHRyZWUKKyM6IGdpdC1yZWJhc2Uuc2g6NTI0Cittc2dpZCAiRmlyc3QsIHJld2luZGluZyBoZWFkIHRvIHJlcGxheSB5b3VyIHdvcmsgb24gdG9wIG9mIGl0Li4uIgorbXNnc3RyICIiCisKKyM6IGdpdC1yZWJhc2Uuc2g6NTMyCisjLCBzaC1mb3JtYXQKK21zZ2lkICJGYXN0LWZvcndhcmRlZCAkYnJhbmNoX25hbWUgdG8gJG9udG9fbmFtZS4iCittc2dzdHIgIiIKKwogIzogZ2l0LXN0YXNoLnNoOjUxCiBtc2dpZCAiZ2l0IHN0YXNoIGNsZWFyIHdpdGggcGFyYW1ldGVycyBpcyB1bmltcGxlbWVudGVkIgogbXNnc3RyICIiCkBAIC00OTk5LDU5ICs5Mjg2LDU5IEBACiBtc2dpZCAiQ2Fubm90IHVuc3RhZ2UgbW9kaWZpZWQgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN0YXNoLnNoOjQ3NAorIzogZ2l0LXN0YXNoLnNoOjQ3NQogbXNnaWQgIkluZGV4IHdhcyBub3QgdW5zdGFzaGVkLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3Rhc2guc2g6NDkxCi0jLCBzaC1mb3JtYXQKLW1zZ2lkICJEcm9wcGVkICR7UkVWfSAoJHMpIgotbXNnc3RyICIiCi0KICM6IGdpdC1zdGFzaC5zaDo0OTIKICMsIHNoLWZvcm1hdAorbXNnaWQgIkRyb3BwZWQgJHtSRVZ9ICgkcykiCittc2dzdHIgIiIKKworIzogZ2l0LXN0YXNoLnNoOjQ5MworIywgc2gtZm9ybWF0CiBtc2dpZCAiJHtSRVZ9OiBDb3VsZCBub3QgZHJvcCBzdGFzaCBlbnRyeSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3Rhc2guc2g6NDk5CisjOiBnaXQtc3Rhc2guc2g6NTAwCiBtc2dpZCAiTm8gYnJhbmNoIG5hbWUgc3BlY2lmaWVkIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdGFzaC5zaDo1NzAKKyM6IGdpdC1zdGFzaC5zaDo1NzEKIG1zZ2lkICIoVG8gcmVzdG9yZSB0aGVtIHR5cGUgXCJnaXQgc3Rhc2ggYXBwbHlcIikiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo5MQogIywgc2gtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHN0cmlwIG9uZSBjb21wb25lbnQgb2ZmIHVybCAnJHJlbW90ZXVybCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTk2CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJObyBzdWJtb2R1bGUgbWFwcGluZyBmb3VuZCBpbiAuZ2l0bW9kdWxlcyBmb3IgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTUwCisjOiBnaXQtc3VibW9kdWxlLnNoOjIzOQogIywgc2gtZm9ybWF0CiBtc2dpZCAiQ2xvbmUgb2YgJyR1cmwnIGludG8gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyBmYWlsZWQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxNjAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MjUxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJHaXRkaXIgJyRhJyBpcyBwYXJ0IG9mIHRoZSBzdWJtb2R1bGUgcGF0aCAnJGInIG9yIHZpY2UgdmVyc2EiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyNDkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MzQ5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJyZXBvIFVSTDogJyRyZXBvJyBtdXN0IGJlIGFic29sdXRlIG9yIGJlZ2luIHdpdGggLi98Li4vIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MjY2CisjOiBnaXQtc3VibW9kdWxlLnNoOjM2NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRzbV9wYXRoJyBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaW5kZXgiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyNzAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MzcwCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIGZvbGxvd2luZyBwYXRoIGlzIGlnbm9yZWQgYnkgb25lIG9mIHlvdXIgLmdpdGlnbm9yZSBmaWxlczpcbiIKQEAgLTUwNTksMTU1ICs5MzQ2LDIzMyBAQAogIlVzZSAtZiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gYWRkIGl0LiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjI4MQorIzogZ2l0LXN1Ym1vZHVsZS5zaDozODgKICMsIHNoLWZvcm1hdAogbXNnaWQgIkFkZGluZyBleGlzdGluZyByZXBvIGF0ICckc21fcGF0aCcgdG8gdGhlIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MjgzCisjOiBnaXQtc3VibW9kdWxlLnNoOjM5MAogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRzbV9wYXRoJyBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90IGEgdmFsaWQgZ2l0IHJlcG8iCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyOTcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Mzk4CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gY2hlY2tvdXQgc3VibW9kdWxlICckc21fcGF0aCciCittc2dpZCAiQSBnaXQgZGlyZWN0b3J5IGZvciAnJHNtX25hbWUnIGlzIGZvdW5kIGxvY2FsbHkgd2l0aCByZW1vdGUocyk6IgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzAyCisjOiBnaXQtc3VibW9kdWxlLnNoOjQwMAogIywgc2gtZm9ybWF0Ci1tc2dpZCAiRmFpbGVkIHRvIGFkZCBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKK21zZ2lkICIiCisiSWYgeW91IHdhbnQgdG8gcmV1c2UgdGhpcyBsb2NhbCBnaXQgZGlyZWN0b3J5IGluc3RlYWQgb2YgY2xvbmluZyBhZ2FpbiBmcm9tIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzA3CisjOiBnaXQtc3VibW9kdWxlLnNoOjQwMgogIywgc2gtZm9ybWF0Ci1tc2dpZCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgorbXNnaWQgIiIKKyJ1c2UgdGhlICctLWZvcmNlJyBvcHRpb24uIElmIHRoZSBsb2NhbCBnaXQgZGlyZWN0b3J5IGlzIG5vdCB0aGUgY29ycmVjdCByZXBvIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzQ5CisjOiBnaXQtc3VibW9kdWxlLnNoOjQwMwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiRW50ZXJpbmcgJyRwcmVmaXgkc21fcGF0aCciCittc2dpZCAiIgorIm9yIHlvdSBhcmUgdW5zdXJlIHdoYXQgdGhpcyBtZWFucyBjaG9vc2UgYW5vdGhlciBuYW1lIHdpdGggdGhlICctLW5hbWUnICIKKyJvcHRpb24uIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzYzCisjOiBnaXQtc3VibW9kdWxlLnNoOjQwNQogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3RvcHBpbmcgYXQgJyRzbV9wYXRoJzsgc2NyaXB0IHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cy4iCi1tc2dzdHIgIiIKLQotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MDYKLSMsIHNoLWZvcm1hdAotbXNnaWQgIk5vIHVybCBmb3VuZCBmb3Igc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyBpbiAuZ2l0bW9kdWxlcyIKLW1zZ3N0ciAiIgotCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQxNQotIywgc2gtZm9ybWF0Ci1tc2dpZCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHVybCBmb3Igc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKK21zZ2lkICJSZWFjdGl2YXRpbmcgbG9jYWwgZ2l0IGRpcmVjdG9yeSBmb3Igc3VibW9kdWxlICckc21fbmFtZScuIgogbXNnc3RyICIiCiAKICM6IGdpdC1zdWJtb2R1bGUuc2g6NDE3CiAjLCBzaC1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gY2hlY2tvdXQgc3VibW9kdWxlICckc21fcGF0aCciCittc2dzdHIgIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MjIKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBhZGQgc3VibW9kdWxlICckc21fcGF0aCciCittc2dzdHIgIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MzEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKK21zZ3N0ciAiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjQ3NAorIywgc2gtZm9ybWF0Cittc2dpZCAiRW50ZXJpbmcgJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0ODgKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlN0b3BwaW5nIGF0ICckc21fcGF0aCc7IHNjcmlwdCByZXR1cm5lZCBub24temVybyBzdGF0dXMuIgorbXNnc3RyICIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTMyCisjLCBzaC1mb3JtYXQKK21zZ2lkICJObyB1cmwgZm91bmQgZm9yIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCcgaW4gLmdpdG1vZHVsZXMiCittc2dzdHIgIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NDEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciB1cmwgZm9yIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCittc2dzdHIgIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NDMKKyMsIHNoLWZvcm1hdAogbXNnaWQgIlN1Ym1vZHVsZSAnJG5hbWUnICgkdXJsKSByZWdpc3RlcmVkIGZvciBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MjUKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTUxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXBkYXRlIG1vZGUgZm9yIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1MjQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTg4CisjLCBzaC1mb3JtYXQKK21zZ2lkICJVc2UgJy4nIGlmIHlvdSByZWFsbHkgd2FudCB0byBkZWluaXRpYWxpemUgYWxsIHN1Ym1vZHVsZXMiCittc2dzdHIgIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MDMKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlN1Ym1vZHVsZSB3b3JrIHRyZWUgJyRzbV9wYXRoJyBjb250YWlucyBhIC5naXQgZGlyZWN0b3J5IgorbXNnc3RyICIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjA0CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCi0iU3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyBub3QgaW5pdGlhbGl6ZWRcbiIKKyIodXNlICdybSAtcmYnIGlmIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgaXQgaW5jbHVkaW5nIGFsbCBvZiBpdHMgaGlzdG9yeSkiCittc2dzdHIgIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTAKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJTdWJtb2R1bGUgd29yayB0cmVlICckc21fcGF0aCcgY29udGFpbnMgbG9jYWwgbW9kaWZpY2F0aW9uczsgdXNlICctZicgdG8gIgorImRpc2NhcmQgdGhlbSIKK21zZ3N0ciAiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYxMworIywgc2gtZm9ybWF0Cittc2dpZCAiQ2xlYXJlZCBkaXJlY3RvcnkgJyRzbV9wYXRoJyIKK21zZ3N0ciAiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYxNAorIywgc2gtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IHJlbW92ZSBzdWJtb2R1bGUgd29yayB0cmVlICckc21fcGF0aCciCittc2dzdHIgIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTcKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBjcmVhdGUgZW1wdHkgc3VibW9kdWxlIGRpcmVjdG9yeSAnJHNtX3BhdGgnIgorbXNnc3RyICIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjI2CisjLCBzaC1mb3JtYXQKK21zZ2lkICJTdWJtb2R1bGUgJyRuYW1lJyAoJHVybCkgdW5yZWdpc3RlcmVkIGZvciBwYXRoICckc21fcGF0aCciCittc2dzdHIgIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo3MzEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyBub3QgaW5pdGlhbGl6ZWRcbiIKICJNYXliZSB5b3Ugd2FudCB0byB1c2UgJ3VwZGF0ZSAtLWluaXQnPyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjUzNworIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NDQKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byBmaW5kIGN1cnJlbnQgcmV2aXNpb24gaW4gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKK21zZ2lkICJVbmFibGUgdG8gZmluZCBjdXJyZW50IHJldmlzaW9uIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTU2CisjOiBnaXQtc3VibW9kdWxlLnNoOjc1MwogIywgc2gtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NzAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Nzc3CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gcmViYXNlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKK21zZ2lkICJVbmFibGUgdG8gZmV0Y2ggaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NzEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzkxCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnOiByZWJhc2VkIGludG8gJyRzaGExJyIKK21zZ2lkICJVbmFibGUgdG8gcmViYXNlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NzYKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzkyCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gbWVyZ2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgorbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnOiByZWJhc2VkIGludG8gJyRzaGExJyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU3NworIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTcKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCc6IG1lcmdlZCBpbiAnJHNoYTEnIgorbXNnaWQgIlVuYWJsZSB0byBtZXJnZSAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTgyCisjOiBnaXQtc3VibW9kdWxlLnNoOjc5OAogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0ICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogbWVyZ2VkIGluICckc2hhMSciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1ODMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODAzCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnOiBjaGVja2VkIG91dCAnJHNoYTEnIgorbXNnaWQgIlVuYWJsZSB0byBjaGVja291dCAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjA1IGdpdC1zdWJtb2R1bGUuc2g6OTI4CisjOiBnaXQtc3VibW9kdWxlLnNoOjgwNAogIywgc2gtZm9ybWF0Ci1tc2dpZCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgorbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnOiBjaGVja2VkIG91dCAnJHNoYTEnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NzEzCi1tc2dpZCAiLS1jYWNoZWQgY2Fubm90IGJlIHVzZWQgd2l0aCAtLWZpbGVzIgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MzEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZWN1cnNlIGludG8gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo5MzkKK21zZ2lkICJUaGUgLS1jYWNoZWQgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggdGhlIC0tZmlsZXMgb3B0aW9uIgogbXNnc3RyICIiCiAKICMuIHVuZXhwZWN0ZWQgdHlwZQotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NTMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTc5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJ1bmV4cGVjdGVkIG1vZGUgJG1vZF9kc3QiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NzEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTk3CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIgIFdhcm46ICRuYW1lIGRvZXNuJ3QgY29udGFpbiBjb21taXQgJHNoYTFfc3JjIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Nzc0CisjOiBnaXQtc3VibW9kdWxlLnNoOjEwMDAKICMsIHNoLWZvcm1hdAogbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdCAkc2hhMV9kc3QiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NzcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTAwMwogIywgc2gtZm9ybWF0CiBtc2dpZCAiICBXYXJuOiAkbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0cyAkc2hhMV9zcmMgYW5kICRzaGExX2RzdCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjgwMgorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDI4CiBtc2dpZCAiYmxvYiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjgwMwotbXNnaWQgInN1Ym1vZHVsZSIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTA2NgorbXNnaWQgIlN1Ym1vZHVsZXMgY2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6IgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODQwCi1tc2dpZCAiIyBTdWJtb2R1bGVzIGNoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOiIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTA2OAorbXNnaWQgIlN1Ym1vZHVsZSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4NDIKLW1zZ2lkICIjIFN1Ym1vZHVsZSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCi1tc2dzdHIgIiIKLQotIzogZ2l0LXN1Ym1vZHVsZS5zaDo5NzQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTE1MwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3luY2hyb25pemluZyBzdWJtb2R1bGUgdXJsIGZvciAnJG5hbWUnIgorbXNnaWQgIkZhaWxlZCB0byByZWN1cnNlIGludG8gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKK21zZ3N0ciAiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjEyMTYKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlN5bmNocm9uaXppbmcgc3VibW9kdWxlIHVybCBmb3IgJyRwcmVmaXgkc21fcGF0aCciCiBtc2dzdHIgIiIKZGlmZiAtLWdpdCBhL3BvL3N2LnBvIGIvcG8vc3YucG8KaW5kZXggM2E5MDU5Mi4uYTVjODhjOSAxMDA2NDQKLS0tIGEvcG8vc3YucG8KKysrIGIvcG8vc3YucG8KQEAgLTEsMTQgKzEsMTQgQEAKICMgU3dlZGlzaCB0cmFuc2xhdGlvbnMgZm9yIEdpdC4KLSMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTIgUGV0ZXIga3JlZnRpbmcgPHBldGVyQHNvZnR3b2x2ZXMucHAuc2U+CisjIENvcHlyaWdodCAoQykgMjAxMC0yMDEzIFBldGVyIGtyZWZ0aW5nIDxwZXRlckBzb2Z0d29sdmVzLnBwLnNlPgogIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgR2l0IHBhY2thZ2UuCi0jIFBldGVyIEtyZWZ0aW5nIDxwZXRlckBzb2Z0d29sdmVzLnBwLnNlPiwgMjAxMCwgMjAxMSwgMjAxMi4KKyMgUGV0ZXIgS3JlZnRpbmcgPHBldGVyQHNvZnR3b2x2ZXMucHAuc2U+LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzLgogIwogbXNnaWQgIiIKIG1zZ3N0ciAiIgotIlByb2plY3QtSWQtVmVyc2lvbjogZ2l0IDEuNy4xMFxuIgorIlByb2plY3QtSWQtVmVyc2lvbjogZ2l0IDEuOC4zXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IEdpdCBNYWlsaW5nIExpc3QgPGdpdEB2Z2VyLmtlcm5lbC5vcmc+XG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTItMDUtMTUgMDY6MzErMDgwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMTItMDUtMjggMjI6MzUrMDEwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDEzLTA0LTMwIDA4OjI1KzA4MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDEzLTA0LTMwIDEyOjIyKzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IFBldGVyIEtyZWZ0aW5nIDxwZXRlckBzb2Z0d29sdmVzLnBwLnNlPlxuIgogIkxhbmd1YWdlLVRlYW06IFN3ZWRpc2ggPHRwLXN2QGxpc3Rvci50cC1zdi5zZT5cbiIKICJMYW5ndWFnZTogc3ZcbiIKQEAgLTE3LDcgKzE3LDcgQEAKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0yOyBwbHVyYWw9KG4gIT0gMSk7XG4iCiAKLSM6IGFkdmljZS5jOjQwCisjOiBhZHZpY2UuYzo1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJoaW50OiAlLipzXG4iCiBtc2dzdHIgInRpcHM6ICUuKnNcbiIKQEAgLTI2LDcgKzI2LDcgQEAKICMuICogTWVzc2FnZSB1c2VkIGJvdGggd2hlbiAnZ2l0IGNvbW1pdCcgZmFpbHMgYW5kIHdoZW4KICMuICogb3RoZXIgY29tbWFuZHMgZG9pbmcgYSBtZXJnZSBkby4KICMuCi0jOiBhZHZpY2UuYzo3MAorIzogYWR2aWNlLmM6ODMKIG1zZ2lkICIiCiAiRml4IHRoZW0gdXAgaW4gdGhlIHdvcmsgdHJlZSxcbiIKICJhbmQgdGhlbiB1c2UgJ2dpdCBhZGQvcm0gPGZpbGU+JyBhc1xuIgpAQCAtMzgsMTIgKzM4LDMwOSBAQAogImzDpG1wbGlndCBmw7ZyIGF0dCBhbmdlIGzDtnNuaW5nIG9jaCBjaGVja2EgaW4sXG4iCiAiZWxsZXIgYW52w6RuZCBcImdpdCBjb21taXQgLWFcIi4iCiAKLSM6IGNvbW1pdC5jOjQ3CisjOiBhcmNoaXZlLmM6MTAKK21zZ2lkICJnaXQgYXJjaGl2ZSBbb3B0aW9uc10gPHRyZWUtaXNoPiBbPHBhdGg+Li4uXSIKK21zZ3N0ciAiZ2l0IGFyY2hpdmUgW2ZsYWdnb3JdIDx0csOkZC1pZ3Q+IFs8c8O2a3bDpGc+Li4uXSIKKworIzogYXJjaGl2ZS5jOjExCittc2dpZCAiZ2l0IGFyY2hpdmUgLS1saXN0IgorbXNnc3RyICJnaXQgYXJjaGl2ZSAtLWxpc3QiCisKKyM6IGFyY2hpdmUuYzoxMgorbXNnaWQgIiIKKyJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA8cmVwbz4gWy0tZXhlYyA8Y21kPl0gW29wdGlvbnNdIDx0cmVlLWlzaD4gWzxwYXRoPi4uLl0iCittc2dzdHIgIiIKKyJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA8YXJraXY+IFstLWV4ZWMgPGttZD5dIFtmbGFnZ29yXSA8dHLDpGQtaWd0PiAiCisiWzxzw7ZrdsOkZz4uLi5dIgorCisjOiBhcmNoaXZlLmM6MTMKK21zZ2lkICJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA8cmVwbz4gWy0tZXhlYyA8Y21kPl0gLS1saXN0IgorbXNnc3RyICJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA8YXJraXY+IFstLWV4ZWMgPGttZD5dIC0tbGlzdCIKKworIzogYXJjaGl2ZS5jOjMyMworbXNnaWQgImZtdCIKK21zZ3N0ciAiZm10IgorCisjOiBhcmNoaXZlLmM6MzIzCittc2dpZCAiYXJjaGl2ZSBmb3JtYXQiCittc2dzdHIgImFya2l2Zm9ybWF0IgorCisjOiBhcmNoaXZlLmM6MzI0IGJ1aWx0aW4vbG9nLmM6MTEyNgorbXNnaWQgInByZWZpeCIKK21zZ3N0ciAicHJlZml4IgorCisjOiBhcmNoaXZlLmM6MzI1Cittc2dpZCAicHJlcGVuZCBwcmVmaXggdG8gZWFjaCBwYXRobmFtZSBpbiB0aGUgYXJjaGl2ZSIKK21zZ3N0ciAibMOkZ2cgdGlsbCBwcmVmaXggdGlsbCB2YXJqZSBzw7ZrdsOkZyBpIGFya2l2ZXQiCisKKyM6IGFyY2hpdmUuYzozMjYgYnVpbHRpbi9hcmNoaXZlLmM6ODggYnVpbHRpbi9ibGFtZS5jOjIzNzEKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcyIGJ1aWx0aW4vY29uZmlnLmM6NTUgYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NQorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NyBidWlsdGluL2dyZXAuYzo3MTUgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc3CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDkwIGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTMgYnVpbHRpbi9ub3Rlcy5jOjUzNgorIzogYnVpbHRpbi9ub3Rlcy5jOjY5MyBidWlsdGluL3JlYWQtdHJlZS5jOjEwNyBwYXJzZS1vcHRpb25zLmg6MTQ5Cittc2dpZCAiZmlsZSIKK21zZ3N0ciAiZmlsIgorCisjOiBhcmNoaXZlLmM6MzI3IGJ1aWx0aW4vYXJjaGl2ZS5jOjg5Cittc2dpZCAid3JpdGUgdGhlIGFyY2hpdmUgdG8gdGhpcyBmaWxlIgorbXNnc3RyICJza3JpdiBhcmtpdmV0IHRpbGwgZmlsZW4iCisKKyM6IGFyY2hpdmUuYzozMjkKK21zZ2lkICJyZWFkIC5naXRhdHRyaWJ1dGVzIGluIHdvcmtpbmcgZGlyZWN0b3J5IgorbXNnc3RyICJsw6RzIC5naXRhdHRyaWJ1dGVzIGkgYXJiZXRza2F0YWxvZ2VuIgorCisjOiBhcmNoaXZlLmM6MzMwCittc2dpZCAicmVwb3J0IGFyY2hpdmVkIGZpbGVzIG9uIHN0ZGVyciIKK21zZ3N0ciAicmFwcG9ydGVyYSBhcmtpdmVyYWRlIGZpbGVyIHDDpSBzdGFuZGFyZCBmZWwiCisKKyM6IGFyY2hpdmUuYzozMzEKK21zZ2lkICJzdG9yZSBvbmx5IgorbXNnc3RyICJlbmRhc3Qgc3BhcmEiCisKKyM6IGFyY2hpdmUuYzozMzIKK21zZ2lkICJjb21wcmVzcyBmYXN0ZXIiCittc2dzdHIgImtvbXByaW1lcmEgc25hYmJhcmUiCisKKyM6IGFyY2hpdmUuYzozNDAKK21zZ2lkICJjb21wcmVzcyBiZXR0ZXIiCittc2dzdHIgImtvbXByaW1lcmEgYsOkdHRyZSIKKworIzogYXJjaGl2ZS5jOjM0MworbXNnaWQgImxpc3Qgc3VwcG9ydGVkIGFyY2hpdmUgZm9ybWF0cyIKK21zZ3N0ciAidmlzYSB1bmRlcnN0w7ZkZGEgYXJraXZmb3JtYXQiCisKKyM6IGFyY2hpdmUuYzozNDUgYnVpbHRpbi9hcmNoaXZlLmM6OTAgYnVpbHRpbi9jbG9uZS5jOjg2Cittc2dpZCAicmVwbyIKK21zZ3N0ciAiYXJraXYiCisKKyM6IGFyY2hpdmUuYzozNDYgYnVpbHRpbi9hcmNoaXZlLmM6OTEKK21zZ2lkICJyZXRyaWV2ZSB0aGUgYXJjaGl2ZSBmcm9tIHJlbW90ZSByZXBvc2l0b3J5IDxyZXBvPiIKK21zZ3N0ciAiaMOkbXRhIGFya2l2ZXQgZnLDpW4gZmrDpHJyYXJraXZldCA8YXJraXY+IgorCisjOiBhcmNoaXZlLmM6MzQ3IGJ1aWx0aW4vYXJjaGl2ZS5jOjkyIGJ1aWx0aW4vbm90ZXMuYzo2MTUKK21zZ2lkICJjb21tYW5kIgorbXNnc3RyICJrb21tYW5kbyIKKworIzogYXJjaGl2ZS5jOjM0OCBidWlsdGluL2FyY2hpdmUuYzo5MworbXNnaWQgInBhdGggdG8gdGhlIHJlbW90ZSBnaXQtdXBsb2FkLWFyY2hpdmUgY29tbWFuZCIKK21zZ3N0ciAic8O2a3bDpGcgdGlsbCBrb21tYW5kb3QgZ2l0LXVwbG9hZC1hcmNoaXZlIHDDpSBmasOkcnJlbiIKKworIzogYXR0ci5jOjI1OQorbXNnaWQgIiIKKyJOZWdhdGl2ZSBwYXR0ZXJucyBhcmUgaWdub3JlZCBpbiBnaXQgYXR0cmlidXRlc1xuIgorIlVzZSAnXFwhJyBmb3IgbGl0ZXJhbCBsZWFkaW5nIGV4Y2xhbWF0aW9uLiIKK21zZ3N0ciAiIgorIk5lZ2F0aXZhIG3Dtm5zdGVyIGlnbm9yZXJhcyBpIGdpdC1hdHRyaWJ1dFxuIgorIkFudsOkbmQgJ1xcIScgZsO2ciBhdHQgaW5sZWRhIG1lZCBldHQgdXRyb3BzdGVja2VuLiIKKworIzogYnJhbmNoLmM6NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm90IHNldHRpbmcgYnJhbmNoICVzIGFzIGl0cyBvd24gdXBzdHJlYW0uIgorbXNnc3RyICJTdMOkbGxlciBpbnRlIGluIGdyZW5lbiAlcyBzb20gc2luIGVnZW4gdXBwc3Ryw7Ztc2dyZW4uIgorCisjOiBicmFuY2guYzo4MgorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSBicmFuY2ggJXMgZnJvbSAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIiIKKyJHcmVuZW4gJXMgc3TDpGxsZGVzIGluIGF0dCBzcMOlcmEgZmrDpHJyZ3JlbmVuICVzIGZyw6VuICVzIGdlbm9tIG9tYmFzZXJpbmcuIgorCisjOiBicmFuY2guYzo4MworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSBicmFuY2ggJXMgZnJvbSAlcy4iCittc2dzdHIgIkdyZW5lbiAlcyBzdMOkbGxkZXMgaW4gYXR0IHNww6VyYSBmasOkcnJncmVuZW4gJXMgZnLDpW4gJXMuIgorCisjOiBicmFuY2guYzo4NworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIGxvY2FsIGJyYW5jaCAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIkdyZW5lbiAlcyBzdMOkbGxkZXMgaW4gYXR0IHNww6VyYSBkZW4gbG9rYWxhIGdyZW5lbiAlcyBnZW5vbSBvbWJhc2VyaW5nLiIKKworIzogYnJhbmNoLmM6ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCBicmFuY2ggJXMuIgorbXNnc3RyICJHcmVuZW4gJXMgc3TDpGxsZGVzIGluIGF0dCBzcMOlcmEgZGVuIGxva2FsYSBncmVuZW4gJXMuIgorCisjOiBicmFuY2guYzo5MgorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSByZWYgJXMgYnkgcmViYXNpbmcuIgorbXNnc3RyICJHcmVuZW4gJXMgc3TDpGxsZGVzIGluIGF0dCBzcMOlcmEgZmrDpHJyZWZlcmVuc2VuICVzIGdlbm9tIG9tYmFzZXJpbmcuIgorCisjOiBicmFuY2guYzo5MworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSByZWYgJXMuIgorbXNnc3RyICJHcmVuZW4gJXMgc3TDpGxsZGVzIGluIGF0dCBzcMOlcmEgZmrDpHJyZWZlcmVuc2VuICVzLiIKKworIzogYnJhbmNoLmM6OTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCByZWYgJXMgYnkgcmViYXNpbmcuIgorbXNnc3RyICIiCisiR3JlbmVuICVzIHN0w6RsbGRlcyBpbiBhdHQgc3DDpXJhIGRlbiBsb2thbGEgcmVmZXJlbnNlbiAlcyBnZW5vbSBvbWJhc2VyaW5nLiIKKworIzogYnJhbmNoLmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCByZWYgJXMuIgorbXNnc3RyICJHcmVuZW4gJXMgc3TDpGxsZGVzIGluIGF0dCBzcMOlcmEgZGVuIGxva2FsYSByZWZlcmVuc2VuICVzLiIKKworIzogYnJhbmNoLmM6MTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIlRyYWNraW5nIG5vdCBzZXQgdXA6IG5hbWUgdG9vIGxvbmc6ICVzIgorbXNnc3RyICJTcMOlcm5pbmcgaGFyIGludGUgc3TDpGxsdHMgaW46IG5hbW5ldCBmw7ZyIGzDpW5ndDogJXMiCisKKyM6IGJyYW5jaC5jOjEzNworIywgYy1mb3JtYXQKK21zZ2lkICJOb3QgdHJhY2tpbmc6IGFtYmlndW91cyBpbmZvcm1hdGlvbiBmb3IgcmVmICVzIgorbXNnc3RyICJTcMOlcmFyIGludGU6IHR2ZXR5ZGlnIGluZm9ybWF0aW9uIGbDtnIgcmVmZXJlbnNlbiAlcyIKKworIzogYnJhbmNoLmM6MTgyCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgaXMgbm90IGEgdmFsaWQgYnJhbmNoIG5hbWUuIgorbXNnc3RyICJcIiVzXCIgw6RyIGludGUgZXR0IGdpbHRpZ3QgZ3Jlbm5hbW4uIgorCisjOiBicmFuY2guYzoxODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQSBicmFuY2ggbmFtZWQgJyVzJyBhbHJlYWR5IGV4aXN0cy4iCittc2dzdHIgIkRldCBmaW5ucyByZWRhbiBlbiBncmVuIHNvbSBoZXRlciBcIiVzXCIiCisKKyM6IGJyYW5jaC5jOjE5NQorbXNnaWQgIkNhbm5vdCBmb3JjZSB1cGRhdGUgdGhlIGN1cnJlbnQgYnJhbmNoLiIKK21zZ3N0ciAiS2FuIGludGUgdHZpbmdhIHVwcGRhdGVyaW5nIGF2IGFrdHVlbGwgZ3Jlbi4iCisKKyM6IGJyYW5jaC5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc2V0dXAgdHJhY2tpbmcgaW5mb3JtYXRpb247IHN0YXJ0aW5nIHBvaW50ICclcycgaXMgbm90IGEgYnJhbmNoLiIKK21zZ3N0ciAiS2FuIGludGUgc3TDpGxsYSBpbiBzcMOlcm5pbmc7IHN0YXJ0cHVua3RlbiBcIiVzXCIgw6RyIGludGUgZW4gZ3Jlbi4iCisKKyM6IGJyYW5jaC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICJ0aGUgcmVxdWVzdGVkIHVwc3RyZWFtIGJyYW5jaCAnJXMnIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICJkZW4gZWZ0ZXJmcsOlZ2FkZSB1cHBzdHLDtm1zZ3JlbmVuIFwiJXNcIiBmaW5ucyBpbnRlIgorCisjOiBicmFuY2guYzoyMDUKK21zZ2lkICIiCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyBvbiBiYXNpbmcgeW91ciB3b3JrIG9uIGFuIHVwc3RyZWFtXG4iCisiYnJhbmNoIHRoYXQgYWxyZWFkeSBleGlzdHMgYXQgdGhlIHJlbW90ZSwgeW91IG1heSBuZWVkIHRvXG4iCisicnVuIFwiZ2l0IGZldGNoXCIgdG8gcmV0cmlldmUgaXQuXG4iCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyB0byBwdXNoIG91dCBhIG5ldyBsb2NhbCBicmFuY2ggdGhhdFxuIgorIndpbGwgdHJhY2sgaXRzIHJlbW90ZSBjb3VudGVycGFydCwgeW91IG1heSB3YW50IHRvIHVzZVxuIgorIlwiZ2l0IHB1c2ggLXVcIiB0byBzZXQgdGhlIHVwc3RyZWFtIGNvbmZpZyBhcyB5b3UgcHVzaC4iCittc2dzdHIgIiIKKyJcbiIKKyJPbSBkdSBoYXIgdMOkbmt0IGJhc2VyYSBkaXR0IGFyYmV0ZSBww6UgZW4gdXBwc3Ryw7Ztc2dyZW5cbiIKKyJzb20gcmVkYW4gZmlubnMgcMOlIGZqw6RycmVuIGthbiBkdSBiZWjDtnZhIGvDtnJhIFwiZ2l0IGZldGNoXCJcbiIKKyJmw7ZyIGF0dCBow6RtdGEgZGVuLlxuIgorIlxuIgorIk9tIGR1IGhhciB0w6Rua3Qgc8OkbmRhIGluIGVuIG55IGxva2FsIGdyZW4gc29tIHNrYWxsXG4iCisic3DDpXJhIGRlc3MgZmrDpHJybW90c3ZhcmlnaGV0IGthbiBkdSBhbnbDpG5kYSBcImdpdCBwdXNoIC11XCJcbiIKKyJmw7ZyIGF0dCBzdMOkbGxhIGluIHVwcHN0csO2bXNrb25maWd1cmF0aW9uZW4gbsOkciBkdSBzw6RuZGVyIGluLiIKKworIzogYnJhbmNoLmM6MjUwCisjLCBjLWZvcm1hdAorbXNnaWQgIk5vdCBhIHZhbGlkIG9iamVjdCBuYW1lOiAnJXMnLiIKK21zZ3N0ciAiT2JqZWt0bmFtbmV0IMOkciBpbnRlIGdpbHRpZ3Q6IFwiJXNcIi4iCisKKyM6IGJyYW5jaC5jOjI3MAorIywgYy1mb3JtYXQKK21zZ2lkICJBbWJpZ3VvdXMgb2JqZWN0IG5hbWU6ICclcycuIgorbXNnc3RyICJPYmpla3RuYW1uZXQgw6RyIHR2ZXR5ZGlndDogXCIlc1wiLiIKKworIzogYnJhbmNoLmM6Mjc1CisjLCBjLWZvcm1hdAorbXNnaWQgIk5vdCBhIHZhbGlkIGJyYW5jaCBwb2ludDogJyVzJy4iCittc2dzdHIgIkF2Z3JlbmluZ3NwdW5rdGVuIMOkciBpbnRlIGdpbHRpZzogXCIlc1wiIgorCisjOiBicmFuY2guYzoyODEKK21zZ2lkICJGYWlsZWQgdG8gbG9jayByZWYgZm9yIHVwZGF0ZSIKK21zZ3N0ciAiTWlzc2x5Y2thZGVzIGzDpXNhIHJlZmVyZW5zIGbDtnIgdXBwZGF0ZXJpbmciCisKKyM6IGJyYW5jaC5jOjI5OQorbXNnaWQgIkZhaWxlZCB0byB3cml0ZSByZWYiCittc2dzdHIgIk1pc3NseWNrYWRlcyBza3JpdmEgcmVmZXJlbnMiCisKKyM6IGJ1bmRsZS5jOjM2CisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgZG9lcyBub3QgbG9vayBsaWtlIGEgdjIgYnVuZGxlIGZpbGUiCittc2dzdHIgIiclcycgc2VyIGludGUgdXQgc29tIGVuIHYyLWJ1bmRsZS1maWwiCisKKyM6IGJ1bmRsZS5jOjYzCisjLCBjLWZvcm1hdAorbXNnaWQgInVucmVjb2duaXplZCBoZWFkZXI6ICVzJXMgKCVkKSIKK21zZ3N0ciAib2vDpG50IGh1dnVkOiAlcyVzICglZCkiCisKKyM6IGJ1bmRsZS5jOjg5IGJ1aWx0aW4vY29tbWl0LmM6Njc2CisjLCBjLWZvcm1hdAorbXNnaWQgImNvdWxkIG5vdCBvcGVuICclcyciCittc2dzdHIgImt1bmRlIGludGUgw7ZwcG5hIFwiJXNcIiIKKworIzogYnVuZGxlLmM6MTQwCittc2dpZCAiUmVwb3NpdG9yeSBsYWNrcyB0aGVzZSBwcmVyZXF1aXNpdGUgY29tbWl0czoiCittc2dzdHIgIkFya2l2ZXQgc2FrbmFyIGRlc3NhIG7DtmR2w6RuZGlnYSBpbmNoZWNrbmluZ2FyOiIKKworIzogYnVuZGxlLmM6MTY0IHNlcXVlbmNlci5jOjY1MSBzZXF1ZW5jZXIuYzoxMTAxIGJ1aWx0aW4vbG9nLmM6MzAwCisjOiBidWlsdGluL2xvZy5jOjc3MCBidWlsdGluL2xvZy5jOjEzNDQgYnVpbHRpbi9sb2cuYzoxNTcwIGJ1aWx0aW4vbWVyZ2UuYzozNDkKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxNTUKK21zZ2lkICJyZXZpc2lvbiB3YWxrIHNldHVwIGZhaWxlZCIKK21zZ3N0ciAibWlzc2x5Y2thZGVzIHNrYXBhIHJldmlzaW9uc3RyYXZlcnNlcmluZyIKKworIzogYnVuZGxlLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBidW5kbGUgY29udGFpbnMgdGhpcyByZWY6IgorbXNnaWRfcGx1cmFsICJUaGUgYnVuZGxlIGNvbnRhaW5zIHRoZXNlICVkIHJlZnM6IgorbXNnc3RyWzBdICJQYWtldGV0IChidW5kbGVuKSBkZW5uYSByZWZlcmVuczoiCittc2dzdHJbMV0gIlBha2V0ZXQgKGJ1bmRsZW4pIGRlc3NhICVkIHJlZmVyZW5zZXI6IgorCisjOiBidW5kbGUuYzoxOTMKK21zZ2lkICJUaGUgYnVuZGxlIHJlY29yZHMgYSBjb21wbGV0ZSBoaXN0b3J5LiIKK21zZ3N0ciAiUGFrZXRldCAoYnVuZGxlbikgYmVza3JpdmVyIGVuIGtvbXBsZXR0IGhpc3RvcmlrLiIKKworIzogYnVuZGxlLmM6MTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBidW5kbGUgcmVxdWlyZXMgdGhpcyByZWY6IgorbXNnaWRfcGx1cmFsICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoZXNlICVkIHJlZnM6IgorbXNnc3RyWzBdICJQYWtldGV0IChidW5kbGVuKSBrcsOkdmVyIGRlbm5hIHJlZmVyZW5zOiIKK21zZ3N0clsxXSAiUGFrZXRldCAoYnVuZGxlbikga3LDpHZlciBkZXNzYSAlZCByZWZlcmVuc2VyOiIKKworIzogYnVuZGxlLmM6Mjk0Cittc2dpZCAicmV2LWxpc3QgZGllZCIKK21zZ3N0ciAicmV2LWxpc3QgZG9nIgorCisjOiBidW5kbGUuYzozMDAgYnVpbHRpbi9sb2cuYzoxMjU1IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTgKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5yZWNvZ25pemVkIGFyZ3VtZW50OiAlcyIKK21zZ3N0ciAib2vDpG50IGFyZ3VtZW50OiAlcyIKKworIzogYnVuZGxlLmM6MzM1CisjLCBjLWZvcm1hdAorbXNnaWQgInJlZiAnJXMnIGlzIGV4Y2x1ZGVkIGJ5IHRoZSByZXYtbGlzdCBvcHRpb25zIgorbXNnc3RyICJyZWZlcmVuc2VuIFwiJXNcIiBleGtsdWRlcmFzIGF2IGFyZ3VtZW50ZW4gdGlsbCByZXYtbGlzdCIKKworIzogYnVuZGxlLmM6MzgwCittc2dpZCAiUmVmdXNpbmcgdG8gY3JlYXRlIGVtcHR5IGJ1bmRsZS4iCittc2dzdHIgIlbDpGdyYXIgc2thcGEgZXR0IHRvbXQgcGFrZXQgKGJ1bmRsZSkuIgorCisjOiBidW5kbGUuYzozOTgKK21zZ2lkICJDb3VsZCBub3Qgc3Bhd24gcGFjay1vYmplY3RzIgorbXNnc3RyICJLdW5kZSBpbnRlIHN0YXJ0YSBwYWNrLW9iamVjdHMiCisKKyM6IGJ1bmRsZS5jOjQxNgorbXNnaWQgInBhY2stb2JqZWN0cyBkaWVkIgorbXNnc3RyICJwYWNrLW9iamVjdHMgbWlzc2x5Y2thZGVzIgorCisjOiBidW5kbGUuYzo0MTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2Fubm90IGNyZWF0ZSAnJXMnIgorbXNnc3RyICJrYW4gaW50ZSBza2FwYSBcIiVzXCIiCisKKyM6IGJ1bmRsZS5jOjQ0MQorbXNnaWQgImluZGV4LXBhY2sgZGllZCIKK21zZ3N0ciAiaW5kZXgtcGFjayBkb2ciCisKKyM6IGNvbW1pdC5jOjUwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBwYXJzZSAlcyIKIG1zZ3N0ciAia3VuZGUgaW50ZSB0b2xrYSAlcyIKIAotIzogY29tbWl0LmM6NDkKKyM6IGNvbW1pdC5jOjUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzICVzIGlzIG5vdCBhIGNvbW1pdCEiCiBtc2dzdHIgIiVzICVzIMOkciBpbnRlIGVuIGluY2hlY2tuaW5nISIKQEAgLTY2LDE4ICszNjMsOTAgQEAKIG1zZ2lkICJmYWlsZWQgdG8gY2xvc2UgcmV2LWxpc3QncyBzdGRpbjogJXMiCiBtc2dzdHIgImt1bmRlIGludGUgc3TDpG5nYSByZXYtbGlzdDpzIHN0YW5kYXJkIGluOiAlcyIKIAotIzogZGlmZi5jOjEwNQotIywgYy1mb3JtYXQKLW1zZ2lkICIgIEZhaWxlZCB0byBwYXJzZSBkaXJzdGF0IGN1dC1vZmYgcGVyY2VudGFnZSAnJS4qcydcbiIKLW1zZ3N0ciAiICBNaXNzbHlja2FkZXMgdG9sa2EgZGlyc3RhdC1hdnNrw6RybmluZ3Nwcm9jZW50YW5kZWwgXCIlLipzXCJcbiIKKyM6IGRhdGUuYzo5NQorbXNnaWQgImluIHRoZSBmdXR1cmUiCittc2dzdHIgImkgZnJhbXRpZGVuIgogCi0jOiBkaWZmLmM6MTEwCisjOiBkYXRlLmM6MTAxCiAjLCBjLWZvcm1hdAotbXNnaWQgIiAgVW5rbm93biBkaXJzdGF0IHBhcmFtZXRlciAnJS4qcydcbiIKLW1zZ3N0ciAiICBPa8OkbmQgZGlyc3RhdC1wYXJhbWV0ZXIgXCIlLipzXCJcbiIKK21zZ2lkICIlbHUgc2Vjb25kIGFnbyIKK21zZ2lkX3BsdXJhbCAiJWx1IHNlY29uZHMgYWdvIgorbXNnc3RyWzBdICIlbHUgc2VrdW5kIHNlZGFuIgorbXNnc3RyWzFdICIlbHUgc2VrdW5kZXIgc2VkYW4iCisKKyM6IGRhdGUuYzoxMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWx1IG1pbnV0ZSBhZ28iCittc2dpZF9wbHVyYWwgIiVsdSBtaW51dGVzIGFnbyIKK21zZ3N0clswXSAiJWx1IG1pbnV0IHNlZGFuIgorbXNnc3RyWzFdICIlbHUgbWludXRlciBzZWRhbiIKKworIzogZGF0ZS5jOjExNQorIywgYy1mb3JtYXQKK21zZ2lkICIlbHUgaG91ciBhZ28iCittc2dpZF9wbHVyYWwgIiVsdSBob3VycyBhZ28iCittc2dzdHJbMF0gIiVsdSB0aW1tZSBzZWRhbiIKK21zZ3N0clsxXSAiJWx1IHRpbW1hciBzZWRhbiIKKworIzogZGF0ZS5jOjEyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlbHUgZGF5IGFnbyIKK21zZ2lkX3BsdXJhbCAiJWx1IGRheXMgYWdvIgorbXNnc3RyWzBdICIlbHUgZGFnIHNlZGFuIgorbXNnc3RyWzFdICIlbHUgZGFnYXIgc2VkYW4iCisKKyM6IGRhdGUuYzoxMjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWx1IHdlZWsgYWdvIgorbXNnaWRfcGx1cmFsICIlbHUgd2Vla3MgYWdvIgorbXNnc3RyWzBdICIlbHUgdmVja2Egc2VkYW4iCittc2dzdHJbMV0gIiVsdSB2ZWNrb3Igc2VkYW4iCisKKyM6IGRhdGUuYzoxMzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWx1IG1vbnRoIGFnbyIKK21zZ2lkX3BsdXJhbCAiJWx1IG1vbnRocyBhZ28iCittc2dzdHJbMF0gIiVsdSBtw6VuYWQgc2VkYW4iCittc2dzdHJbMV0gIiVsdSBtw6VuYWRlciBzZWRhbiIKKworIzogZGF0ZS5jOjE0NgorIywgYy1mb3JtYXQKK21zZ2lkICIlbHUgeWVhciIKK21zZ2lkX3BsdXJhbCAiJWx1IHllYXJzIgorbXNnc3RyWzBdICIlbHUgw6VyIgorbXNnc3RyWzFdICIlbHUgw6VyIgorCisjOiBkYXRlLmM6MTQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzLCAlbHUgbW9udGggYWdvIgorbXNnaWRfcGx1cmFsICIlcywgJWx1IG1vbnRocyBhZ28iCittc2dzdHJbMF0gIiVzLCAlbHUgbcOlbmFkIHNlZGFuIgorbXNnc3RyWzFdICIlcywgJWx1IG3DpW5hZGVyIHNlZGFuIgorCisjOiBkYXRlLmM6MTU0IGRhdGUuYzoxNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWx1IHllYXIgYWdvIgorbXNnaWRfcGx1cmFsICIlbHUgeWVhcnMgYWdvIgorbXNnc3RyWzBdICIlbHUgw6VyIHNlZGFuIgorbXNnc3RyWzFdICIlbHUgw6VyIHNlZGFuIgorCisjOiBkaWZmLmM6MTEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgRmFpbGVkIHRvIHBhcnNlIGRpcnN0YXQgY3V0LW9mZiBwZXJjZW50YWdlICclcydcbiIKK21zZ3N0ciAiICBNaXNzbHlja2FkZXMgdG9sa2EgZGlyc3RhdC1hdnNrw6RybmluZ3Nwcm9jZW50YW5kZWwgXCIlc1wiXG4iCisKKyM6IGRpZmYuYzoxMTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiICBVbmtub3duIGRpcnN0YXQgcGFyYW1ldGVyICclcydcbiIKK21zZ3N0ciAiICBPa8OkbmQgZGlyc3RhdC1wYXJhbWV0ZXIgXCIlc1wiXG4iCiAKICM6IGRpZmYuYzoyMTAKICMsIGMtZm9ybWF0Cittc2dpZCAiVW5rbm93biB2YWx1ZSBmb3IgJ2RpZmYuc3VibW9kdWxlJyBjb25maWcgdmFyaWFibGU6ICclcyciCittc2dzdHIgIk9rw6RudCB2w6RyZGUgZsO2ciBrb25maWd1cmF0aW9uc3ZhcmlhYmVsbiBcImRpZmYuc3VibW9kdWxlXCI6IFwiJXNcIiIKKworIzogZGlmZi5jOjI2MAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiRm91bmQgZXJyb3JzIGluICdkaWZmLmRpcnN0YXQnIGNvbmZpZyB2YXJpYWJsZTpcbiIKICIlcyIKQEAgLTg1LDMyICs0NTQsNyBAQAogIkhpdHRhZGUgZmVsIGkga29uZmlndXJhdGlvbnN2YXJpYWJlbG4gXCJkaWZmLmRpcnN0YXRcIjpcbiIKICIlcyIKIAotIzogZGlmZi5jOjE0MDAKLW1zZ2lkICIgMCBmaWxlcyBjaGFuZ2VkXG4iCi1tc2dzdHIgIiAwIGZpbGVyIMOkbmRyYWRlXG4iCi0KLSM6IGRpZmYuYzoxNDA0Ci0jLCBjLWZvcm1hdAotbXNnaWQgIiAlZCBmaWxlIGNoYW5nZWQiCi1tc2dpZF9wbHVyYWwgIiAlZCBmaWxlcyBjaGFuZ2VkIgotbXNnc3RyWzBdICIgJWQgZmlsIMOkbmRyYWQiCi1tc2dzdHJbMV0gIiAlZCBmaWxlciDDpG5kcmFkZSIKLQotIzogZGlmZi5jOjE0MjEKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiLCAlZCBpbnNlcnRpb24oKykiCi1tc2dpZF9wbHVyYWwgIiwgJWQgaW5zZXJ0aW9ucygrKSIKLW1zZ3N0clswXSAiLCAlZCB0aWxsw6RnZygrKSIKLW1zZ3N0clsxXSAiLCAlZCB0aWxsw6RnZygrKSIKLQotIzogZGlmZi5jOjE0MzIKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiLCAlZCBkZWxldGlvbigtKSIKLW1zZ2lkX3BsdXJhbCAiLCAlZCBkZWxldGlvbnMoLSkiCi1tc2dzdHJbMF0gIiwgJWQgYm9ydHRhZ25pbmcoLSkiCi1tc2dzdHJbMV0gIiwgJWQgYm9ydHRhZ25pbmdhcigtKSIKLQotIzogZGlmZi5jOjM0MzkKKyM6IGRpZmYuYzozNDgxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJGYWlsZWQgdG8gcGFyc2UgLS1kaXJzdGF0Ly1YIG9wdGlvbiBwYXJhbWV0ZXI6XG4iCkBAIC0xMTksNyArNDYzLDEyIEBACiAiTWlzc2x5Y2thZGVzIHRvbGthIGFyZ3VtZW50IHRpbGwgZmxhZ2dhbiAtLWRpcnN0YXQvLVg7XG4iCiAiJXMiCiAKLSM6IGdwZy1pbnRlcmZhY2UuYzo1OQorIzogZGlmZi5jOjM0OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIHBhcnNlIC0tc3VibW9kdWxlIG9wdGlvbiBwYXJhbWV0ZXI6ICclcyciCittc2dzdHIgIk1pc3NseWNrYWRlcyB0b2xrYSBhcmd1bWVudCB0aWxsIGZsYWdnYW4gLS1zdWJtb2R1bGU6IFwiJXNcIiIKKworIzogZ3BnLWludGVyZmFjZS5jOjU5IGdwZy1pbnRlcmZhY2UuYzoxMzEKIG1zZ2lkICJjb3VsZCBub3QgcnVuIGdwZy4iCiBtc2dzdHIgImt1bmRlIGludGUga8O2cmEgZ3BnLiIKIApAQCAtMTMxLDIyICs0ODAsNDUgQEAKIG1zZ2lkICJncGcgZmFpbGVkIHRvIHNpZ24gdGhlIGRhdGEiCiBtc2dzdHIgImdwZyBtaXNzbHlja2FkZXMgc2lnbmVyYSBkYXRhIgogCi0jOiBncmVwLmM6MTI4MAorIzogZ3BnLWludGVyZmFjZS5jOjExNQorIywgYy1mb3JtYXQKK21zZ2lkICJjb3VsZCBub3QgY3JlYXRlIHRlbXBvcmFyeSBmaWxlICclcyc6ICVzIgorbXNnc3RyICJrdW5kZSBpbnRlIHNrYXBhIHRlbXBvcsOkcmEgZmlsZW4gXCIlc1wiOiAlcyIKKworIzogZ3BnLWludGVyZmFjZS5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgd3JpdGluZyBkZXRhY2hlZCBzaWduYXR1cmUgdG8gJyVzJzogJXMiCittc2dzdHIgIm1pc3NseWNrYWRlcyBza3JpdmEgZnJpc3TDpWVuZGUgc2lnbmF0dXIgdGlsbCBcIiVzXCI6ICVzIgorCisjOiBncmVwLmM6MTYyMwogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiB1bmFibGUgdG8gcmVhZCAlcyIKIG1zZ3N0ciAiXCIlc1wiIGt1bmRlIGludGUgbMOkc2EgJXMiCiAKLSM6IGdyZXAuYzoxMjk3CisjOiBncmVwLmM6MTY0MAogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiAlcyIKIG1zZ3N0ciAiXCIlc1wiOiAlcyIKIAotIzogZ3JlcC5jOjEzMDgKKyM6IGdyZXAuYzoxNjUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6IHNob3J0IHJlYWQgJXMiCiBtc2dzdHIgIlwiJXNcIjoga29ydCBsw6RzbmluZyAlcyIKIAotIzogaGVscC5jOjI4NworIzogaGVscC5jOjIxMgorIywgYy1mb3JtYXQKK21zZ2lkICJhdmFpbGFibGUgZ2l0IGNvbW1hbmRzIGluICclcyciCittc2dzdHIgImdpdC1rb21tYW5kb24gdGlsbGfDpG5nbGlnYSBpIFwiJXNcIiIKKworIzogaGVscC5jOjIxOQorbXNnaWQgImdpdCBjb21tYW5kcyBhdmFpbGFibGUgZnJvbSBlbHNld2hlcmUgb24geW91ciAkUEFUSCIKK21zZ3N0ciAiZ2l0LWtvbW1hbmRvbiBmcsOlbiBhbmRyYSBwbGF0c2VyIGkgZGluICRQQVRIIgorCisjOiBoZWxwLmM6MjM1Cittc2dpZCAiVGhlIG1vc3QgY29tbW9ubHkgdXNlZCBnaXQgY29tbWFuZHMgYXJlOiIKK21zZ3N0ciAiRGUgbWVzdCBhbnbDpG5kYSBnaXQta29tbWFuZG9uYSDDpHI6IgorCisjOiBoZWxwLmM6MjkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnIGFwcGVhcnMgdG8gYmUgYSBnaXQgY29tbWFuZCwgYnV0IHdlIHdlcmUgbm90XG4iCkBAIC0xNTUsMTQgKzUyNywzNTggQEAKICJcIiVzXCIgdmVya2FyIHZhcmEgZXR0IGdpdC1rb21tYW5kbywgbWVuIHZpIGthbiBpbnRlXG4iCiAia8O2cmEgZGV0LiBLYW5za2UgZ2l0LSVzIMOkciB0cmFzaWd0PyIKIAotIzogcmVtb3RlLmM6MTYwNworIzogaGVscC5jOjM0OQorbXNnaWQgIlVoIG9oLiBZb3VyIHN5c3RlbSByZXBvcnRzIG5vIEdpdCBjb21tYW5kcyBhdCBhbGwuIgorbXNnc3RyICJPaiBkw6UuIERpdHQgc3lzdGVtIHJhcHBvcnRlcmFyIGluZ2EgR2l0LWtvbW1hbmRvbiBhbGxzLiIKKworIzogaGVscC5jOjM3MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV0FSTklORzogWW91IGNhbGxlZCBhIEdpdCBjb21tYW5kIG5hbWVkICclcycsIHdoaWNoIGRvZXMgbm90IGV4aXN0LlxuIgorIkNvbnRpbnVpbmcgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCB5b3UgbWVhbnQgJyVzJyIKK21zZ3N0ciAiIgorIlZBUk5JTkc6IER1IGFucm9wYWRlIGV0dCBHaXQta29tbWFuZG8gdmlkIG5hbW4gXCIlc1wiLCBzb20gaW50ZSBmaW5ucy5cbiIKKyJGb3J0c8OkdHRlciB1bmRlciBmw7ZydXRzw6R0dG5pbmdlbiBhdHQgZHUgbWVuYWRlIFwiJXNcIiIKKworIzogaGVscC5jOjM3NgorIywgYy1mb3JtYXQKK21zZ2lkICJpbiAlMC4xZiBzZWNvbmRzIGF1dG9tYXRpY2FsbHkuLi4iCittc2dzdHIgImF1dG9tYXRpc2t0IG9tICUwLjFmIHNla3VuZGVyLi4uIgorCisjOiBoZWxwLmM6MzgzCisjLCBjLWZvcm1hdAorbXNnaWQgImdpdDogJyVzJyBpcyBub3QgYSBnaXQgY29tbWFuZC4gU2VlICdnaXQgLS1oZWxwJy4iCittc2dzdHIgImdpdDogXCIlc1wiIMOkciBpbnRlIGV0dCBnaXQta29tbWFuZG8uIFNlIFwiZ2l0IC0taGVscFwiLiIKKworIzogaGVscC5jOjM4NworbXNnaWQgIiIKKyJcbiIKKyJEaWQgeW91IG1lYW4gdGhpcz8iCittc2dpZF9wbHVyYWwgIiIKKyJcbiIKKyJEaWQgeW91IG1lYW4gb25lIG9mIHRoZXNlPyIKK21zZ3N0clswXSAiIgorIlxuIgorIk1lbmFkZSBkdSBkZXR0YT8iCittc2dzdHJbMV0gIiIKKyJcbiIKKyJNZW5hZGUgZHUgZXR0IGF2IGRlc3NhPyIKKworIzogbWVyZ2UuYzo1NgorbXNnaWQgImZhaWxlZCB0byByZWFkIHRoZSBjYWNoZSIKK21zZ3N0ciAibWlzc2x5Y2thZHMgbMOkc2EgY2FjaGVuIgorCisjOiBtZXJnZS5jOjExMCBidWlsdGluL2NoZWNrb3V0LmM6MzY1IGJ1aWx0aW4vY2hlY2tvdXQuYzo1NjYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NDUKK21zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbmV3IGluZGV4IGZpbGUiCittc2dzdHIgImt1bmRlIGludGUgc2tyaXZhIG55IGluZGV4ZmlsIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiKGJhZCBjb21taXQpXG4iCittc2dzdHIgIihmZWxha3RpZyBpbmNoZWNrbmluZylcbiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MjA2CisjLCBjLWZvcm1hdAorbXNnaWQgImFkZGluZm9fY2FjaGUgZmFpbGVkIGZvciBwYXRoICclcyciCittc2dzdHIgImFkZGluZm9fY2FjaGUgbWlzc2x5Y2thZGVzIGbDtnIgc8O2a3bDpGdlbiBcIiVzXCIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjI2OAorbXNnaWQgImVycm9yIGJ1aWxkaW5nIHRyZWVzIgorbXNnc3RyICJmZWwgdmlkIGJ5Z2dhbmRlIGF2IHRyw6RkIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo2NzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmFpbGVkIHRvIGNyZWF0ZSBwYXRoICclcyclcyIKK21zZ3N0ciAibWlzc2x5Y2thZGVzIHNrYXBhIHPDtmt2w6RnZW4gXCIlc1wiJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjY4MworIywgYy1mb3JtYXQKK21zZ2lkICJSZW1vdmluZyAlcyB0byBtYWtlIHJvb20gZm9yIHN1YmRpcmVjdG9yeVxuIgorbXNnc3RyICJUYXIgYm9ydCAlcyBmw7ZyIGF0dCBnw7ZyYSBwbGF0cyBmw7ZyIHVuZGVya2F0YWxvZ1xuIgorCisjLiBzb21ldGhpbmcgZWxzZSBleGlzdHMKKyMuIC4uIGJ1dCBub3Qgc29tZSBvdGhlciBlcnJvciAod2hvIHJlYWxseSBjYXJlcyB3aGF0PykKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjY5NyBtZXJnZS1yZWN1cnNpdmUuYzo3MTgKK21zZ2lkICI6IHBlcmhhcHMgYSBEL0YgY29uZmxpY3Q/IgorbXNnc3RyICI6IGthbnNrZSBlbiBLL0Yta29uZmxpa3Q/IgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3MDgKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVmdXNpbmcgdG8gbG9zZSB1bnRyYWNrZWQgZmlsZSBhdCAnJXMnIgorbXNnc3RyICJ2w6RncmFyIGbDtnJsb3JhIG9zcMOlcmFkIGZpbCB2aWQgXCIlc1wiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2Fubm90IHJlYWQgb2JqZWN0ICVzICclcyciCittc2dzdHIgImthbiBpbnRlIGzDpHNhIG9iamVrdGV0ICVzOiBcIiVzXCIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc1MAorIywgYy1mb3JtYXQKK21zZ2lkICJibG9iIGV4cGVjdGVkIGZvciAlcyAnJXMnIgorbXNnc3RyICJibG9iIGbDtnJ2w6RudGFkZXMgZsO2ciAlcyBcIiVzXCIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc3MyBidWlsdGluL2Nsb25lLmM6MzEzCisjLCBjLWZvcm1hdAorbXNnaWQgImZhaWxlZCB0byBvcGVuICclcyciCittc2dzdHIgIm1pc3NseWNrYWRlcyDDtnBwbmEgXCIlc1wiIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmFpbGVkIHRvIHN5bWxpbmsgJyVzJyIKK21zZ3N0ciAibWlzc2x5Y2thZGVzIHRhIHNrYXBhIHN5bWJvbGlza2EgbMOkbmtlbiBcIiVzXCIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc4NAorIywgYy1mb3JtYXQKK21zZ2lkICJkbyBub3Qga25vdyB3aGF0IHRvIGRvIHdpdGggJTA2byAlcyAnJXMnIgorbXNnc3RyICJ2ZXQgaW50ZSBodXIgJTA2byAlcyBcIiVzXCIgc2thbGwgaGFudGVyYXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjkyMgorbXNnaWQgIkZhaWxlZCB0byBleGVjdXRlIGludGVybmFsIG1lcmdlIgorbXNnc3RyICJNaXNzbHlja2FkZXMgZXhla3ZlcmEgaW50ZXJuIHNhbW1hbnNsYWduaW5nIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo5MjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5hYmxlIHRvIGFkZCAlcyB0byBkYXRhYmFzZSIKK21zZ3N0ciAiS3VuZGUgaW50ZSBsw6RnZ2EgdGlsbCAlcyB0aWxsIGRhdGFiYXNlbiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6OTQyCittc2dpZCAidW5zdXBwb3J0ZWQgb2JqZWN0IHR5cGUgaW4gdGhlIHRyZWUiCittc2dzdHIgIm9iamVrdHR5cCBzb20gZWogc3TDtmRzIHVwcHTDpGNrdGVzIGkgdHLDpGRldCIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTAyMSBtZXJnZS1yZWN1cnNpdmUuYzoxMDM1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDT05GTElDVCAoJXMvZGVsZXRlKTogJXMgZGVsZXRlZCBpbiAlcyBhbmQgJXMgaW4gJXMuIFZlcnNpb24gJXMgb2YgJXMgbGVmdCAiCisiaW4gdHJlZS4iCittc2dzdHIgIiIKKyJLT05GTElLVCAoJXMvcmFkZXJhKTogJXMgcmFkZXJhZCBpICVzIG9jaCAlcyBpICVzLiBWZXJzaW9uZW4gJXMgYXYgJXMgbMOkbW5hZCAiCisiaSB0csOkZGV0LiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTAyNyBtZXJnZS1yZWN1cnNpdmUuYzoxMDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDT05GTElDVCAoJXMvZGVsZXRlKTogJXMgZGVsZXRlZCBpbiAlcyBhbmQgJXMgaW4gJXMuIFZlcnNpb24gJXMgb2YgJXMgbGVmdCAiCisiaW4gdHJlZSBhdCAlcy4iCittc2dzdHIgIiIKKyJLT05GTElLVCAoJXMvcmFkZXJhKTogJXMgcmFkZXJhZCBpICVzIG9jaCAlcyBpICVzLiBWZXJzaW9uZW4gJXMgYXYgJXMgbMOkbW5hZCAiCisiaSB0csOkZGV0IHZpZCAlcy4iCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEwODEKK21zZ2lkICJyZW5hbWUiCittc2dzdHIgIm5hbW5ieXRlIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDgxCittc2dpZCAicmVuYW1lZCIKK21zZ3N0ciAibmFtbmJ5dHQiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjExMzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgYSBkaXJlY3RvcnkgaW4gJXMgYWRkaW5nIGFzICVzIGluc3RlYWQiCittc2dzdHIgIiVzIMOkciBlbiBrYXRhbG9nIGkgJXMgbMOkZ2dlciB0aWxsIHNvbSAlcyBpc3TDpGxsZXQiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjExNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNPTkZMSUNUIChyZW5hbWUvcmVuYW1lKTogUmVuYW1lIFwiJXNcIi0+XCIlc1wiIGluIGJyYW5jaCBcIiVzXCIgcmVuYW1lIFwiJXMiCisiXCItPlwiJXNcIiBpbiBcIiVzXCIlcyIKK21zZ3N0ciAiIgorIktPTkZMSUtUIChuYW1uYnl0ZS9uYW1uYnl0ZSk6IE5hbW5ieXRlIFwiJXNcIi0+XCIlc1wiIHDDpSBncmVuZW4gXCIlc1wiICIKKyJuYW1uYnl0ZSBcIiVzXCItPlwiJXNcIiBpIFwiJXNcIiVzIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMTY0Cittc2dpZCAiIChsZWZ0IHVucmVzb2x2ZWQpIgorbXNnc3RyICIgKGzDpG1uYWQgb2zDtnN0KSIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTIxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDT05GTElDVCAocmVuYW1lL3JlbmFtZSk6IFJlbmFtZSAlcy0+JXMgaW4gJXMuIFJlbmFtZSAlcy0+JXMgaW4gJXMiCittc2dzdHIgIiIKKyJLT05GTElLVCAobmFtbmJ5dGUvbmFtbmJ5dGUpOiBOYW1uYnl0ZSAlcy0+JXMgaSAlcy4gTmFtbmJ5dGUgJXMtPiVzIGkgJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEyNDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVuYW1pbmcgJXMgdG8gJXMgYW5kICVzIHRvICVzIGluc3RlYWQiCittc2dzdHIgIkJ5dGVyIG5hbW4gcMOlICVzIHRpbGwgJXMgb2NoICVzIHRpbGwgJXMgaXN0w6RsbGV0IgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNDQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNPTkZMSUNUIChyZW5hbWUvYWRkKTogUmVuYW1lICVzLT4lcyBpbiAlcy4gJXMgYWRkZWQgaW4gJXMiCittc2dzdHIgIktPTkZMSUtUIChuYW1uYnl0ZS90aWxsw6RnZyk6IE5hbW5ieXRlICVzLT4lcyBpICVzLiAlcyB0aWxsYWdkIGkgJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE0NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQWRkaW5nIG1lcmdlZCAlcyIKK21zZ3N0ciAiTMOkZ2dlciB0aWxsIHNhbW1hbnNsYWdlbiAlcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTQ2MiBtZXJnZS1yZWN1cnNpdmUuYzoxNjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIkFkZGluZyBhcyAlcyBpbnN0ZWFkIgorbXNnc3RyICJMw6RnZ2VyIHRpbGwgc29tICVzIGlzdMOkbGxlciIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTUxMworIywgYy1mb3JtYXQKK21zZ2lkICJjYW5ub3QgcmVhZCBvYmplY3QgJXMiCittc2dzdHIgImthbiBpbnRlIGzDpHNhIG9iamVrdGV0ICVzIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTE2CisjLCBjLWZvcm1hdAorbXNnaWQgIm9iamVjdCAlcyBpcyBub3QgYSBibG9iIgorbXNnc3RyICJvYmpla3RldCAlcyDDpHIgaW50ZSBlbiBibG9iIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTY0Cittc2dpZCAibW9kaWZ5IgorbXNnc3RyICLDpG5kcmEiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1NjQKK21zZ2lkICJtb2RpZmllZCIKK21zZ3N0ciAiw6RuZHJhZCIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTU3NAorbXNnaWQgImNvbnRlbnQiCittc2dzdHIgImlubmVow6VsbCIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTU4MQorbXNnaWQgImFkZC9hZGQiCittc2dzdHIgInRpbGzDpGdnL3RpbGzDpGdnIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNjE1CisjLCBjLWZvcm1hdAorbXNnaWQgIlNraXBwZWQgJXMgKG1lcmdlZCBzYW1lIGFzIGV4aXN0aW5nKSIKK21zZ3N0ciAiSG9wcGFkZSDDtnZlciAlcyAoc2FtbWFuc2xhZ2VuIHNhbW1hIHNvbSBiZWZpbnRsaWcpIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNjI5CisjLCBjLWZvcm1hdAorbXNnaWQgIkF1dG8tbWVyZ2luZyAlcyIKK21zZ3N0ciAiU2zDpXIgaWhvcCAlcyBhdXRvbWF0aXNrdCIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYzMyBnaXQtc3VibW9kdWxlLnNoOjEwMjkKK21zZ2lkICJzdWJtb2R1bGUiCittc2dzdHIgInVuZGVybW9kdWwiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ09ORkxJQ1QgKCVzKTogTWVyZ2UgY29uZmxpY3QgaW4gJXMiCittc2dzdHIgIktPTkZMSUtUICglcyk6IFNhbW1hbnNsYWduaW5nc2tvbmZsaWt0IGkgJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVtb3ZpbmcgJXMiCittc2dzdHIgIlRhciBib3J0ICVzIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzQ5Cittc2dpZCAiZmlsZS9kaXJlY3RvcnkiCittc2dzdHIgImZpbC9rYXRhbG9nIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzU1Cittc2dpZCAiZGlyZWN0b3J5L2ZpbGUiCittc2dzdHIgImthdGFsb2cvZmlsIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzYwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNPTkZMSUNUICglcyk6IFRoZXJlIGlzIGEgZGlyZWN0b3J5IHdpdGggbmFtZSAlcyBpbiAlcy4gQWRkaW5nICVzIGFzICVzIgorbXNnc3RyICIiCisiS09ORkxJS1QgKCVzKTogRGV0IGZpbm5zIGVuIGthdGFsb2cgbWVkIG5hbW5ldCAlcyBpICVzLiBMw6RnZ2VyIHRpbGwgJXMgc29tICVzIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkFkZGluZyAlcyIKK21zZ3N0ciAiTMOkZ2dlciB0aWxsICVzIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzg3Cittc2dpZCAiRmF0YWwgbWVyZ2UgZmFpbHVyZSwgc2hvdWxkbid0IGhhcHBlbi4iCittc2dzdHIgIsOWZGVzZGlnZXJ0IHNhbW1hbnNsYWduaW5nc2ZlbCwgYm9yZGUgaW50ZSBpbnRyw6RmZmEuIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODA2Cittc2dpZCAiQWxyZWFkeSB1cC10by1kYXRlISIKK21zZ3N0ciAiUmVkYW4gw6Agam91ciEiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE4MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAibWVyZ2luZyBvZiB0cmVlcyAlcyBhbmQgJXMgZmFpbGVkIgorbXNnc3RyICJzYW1tYW5zbGFnbmluZyBhdiB0csOkZGVuICVzIG9jaCAlcyBtaXNzbHlja2FkZXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE4NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5wcm9jZXNzZWQgcGF0aD8/PyAlcyIKK21zZ3N0ciAiT2JlaGFuZGxhZCBzw7ZrdsOkZz8/PyAlcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTg5MAorbXNnaWQgIk1lcmdpbmc6IgorbXNnc3RyICJTbMOlciBpaG9wOiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTkwMworIywgYy1mb3JtYXQKK21zZ2lkICJmb3VuZCAldSBjb21tb24gYW5jZXN0b3I6IgorbXNnaWRfcGx1cmFsICJmb3VuZCAldSBjb21tb24gYW5jZXN0b3JzOiIKK21zZ3N0clswXSAiaGl0dGFkZSAldSBnZW1lbnNhbSBmw7ZyZmFkZXI6IgorbXNnc3RyWzFdICJoaXR0YWRlICV1IGdlbWVuc2FtbWEgZsO2cmbDpGRlcjoiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE5NDAKK21zZ2lkICJtZXJnZSByZXR1cm5lZCBubyBjb21taXQiCittc2dzdHIgInNhbW1hbnNsYWduaW5nZW4gcmV0dXJuZXJhZGUgaW5nZW4gaW5jaGVja25pbmciCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE5OTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IHBhcnNlIG9iamVjdCAnJXMnIgorbXNnc3RyICJLdW5kZSBpbnRlIHRvbGthIG9iamVrdGV0IFwiJXNcIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MjAwOSBidWlsdGluL21lcmdlLmM6NjU4Cittc2dpZCAiVW5hYmxlIHRvIHdyaXRlIGluZGV4LiIKK21zZ3N0ciAiS3VuZGUgaW50ZSBza3JpdmEgaW5kZXhldC4iCisKKyM6IG9iamVjdC5jOjE5NQorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gcGFyc2Ugb2JqZWN0OiAlcyIKK21zZ3N0ciAia3VuZGUgaW50ZSB0b2xrYSBvYmpla3RldDogJXMiCisKKyM6IHBhcnNlLW9wdGlvbnMuYzo0ODkKK21zZ2lkICIuLi4iCittc2dzdHIgIi4uLiIKKworIzogcGFyc2Utb3B0aW9ucy5jOjUwNworIywgYy1mb3JtYXQKK21zZ2lkICJ1c2FnZTogJXMiCittc2dzdHIgImFudsOkbmRuaW5nOiAlcyIKKworIy4gVFJBTlNMQVRPUlM6IHRoZSBjb2xvbiBoZXJlIHNob3VsZCBhbGlnbiB3aXRoIHRoZQorIy4gb25lIGluICJ1c2FnZTogJXMiIHRyYW5zbGF0aW9uCisjOiBwYXJzZS1vcHRpb25zLmM6NTExCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgIG9yOiAlcyIKK21zZ3N0ciAiICAgICBlbGxlcjogJXMiCisKKyM6IHBhcnNlLW9wdGlvbnMuYzo1MTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICVzIgorbXNnc3RyICIgICAgJXMiCisKKyM6IHBhcnNlLW9wdGlvbnMuYzo1NDgKK21zZ2lkICItTlVNIgorbXNnc3RyICItVEFMIgorCisjOiBwYXRoc3BlYy5jOjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIlBhdGggJyVzJyBpcyBpbiBzdWJtb2R1bGUgJyUuKnMnIgorbXNnc3RyICJTw7ZrdsOkZ2VuIFwiJXNcIiDDpHIgaSB1bmRlcm1vZHVsZW4gXCIlLipzXCIiCisKKyM6IHBhdGhzcGVjLmM6OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBpcyBiZXlvbmQgYSBzeW1ib2xpYyBsaW5rIgorbXNnc3RyICJcIiVzXCIgw6RyIHDDpSBhbmRyYSBzaWRhbiBhdiBlbiBzeW1ib2xpc2sgbMOkbmsiCisKKyM6IHJlbW90ZS5jOjE3ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAiWW91ciBicmFuY2ggaXMgYWhlYWQgb2YgJyVzJyBieSAlZCBjb21taXQuXG4iCiBtc2dpZF9wbHVyYWwgIllvdXIgYnJhbmNoIGlzIGFoZWFkIG9mICclcycgYnkgJWQgY29tbWl0cy5cbiIKIG1zZ3N0clswXSAiRGluIGdyZW4gbGlnZ2VyIGbDtnJlIFwiJXNcIiBtZWQgJWQgaW5jaGVja25pbmcuXG4iCiBtc2dzdHJbMV0gIkRpbiBncmVuIGxpZ2dlciBmw7ZyZSBcIiVzXCIgbWVkICVkIGluY2hlY2tuaW5nYXIuXG4iCiAKLSM6IHJlbW90ZS5jOjE2MTMKKyM6IHJlbW90ZS5jOjE3ODcKK21zZ2lkICIgICh1c2UgXCJnaXQgcHVzaFwiIHRvIHB1Ymxpc2ggeW91ciBsb2NhbCBjb21taXRzKVxuIgorbXNnc3RyICIgIChhbnbDpG5kIFwiZ2l0IHB1c2hcIiBmw7ZyIGF0dCBwdWJsaWNlcmEgZGluYSBsb2thbGEgaW5jaGVja25pbmdhcilcbiIKKworIzogcmVtb3RlLmM6MTc5MAogIywgYy1mb3JtYXQKIG1zZ2lkICJZb3VyIGJyYW5jaCBpcyBiZWhpbmQgJyVzJyBieSAlZCBjb21taXQsIGFuZCBjYW4gYmUgZmFzdC1mb3J3YXJkZWQuXG4iCiBtc2dpZF9wbHVyYWwgIiIKQEAgLTE3Miw3ICs4ODgsMTEgQEAKIG1zZ3N0clsxXSAiIgogIkRpbiBncmVuIGxpZ2dlciBlZnRlciBcIiVzXCIgbWVkICVkIGluY2hlY2tuaW5nYXIsIG9jaCBrYW4gc25hYmJzcG9sYXMuXG4iCiAKLSM6IHJlbW90ZS5jOjE2MjEKKyM6IHJlbW90ZS5jOjE3OTgKK21zZ2lkICIgICh1c2UgXCJnaXQgcHVsbFwiIHRvIHVwZGF0ZSB5b3VyIGxvY2FsIGJyYW5jaClcbiIKK21zZ3N0ciAiICAoYW52w6RuZCBcImdpdCBwdWxsXCIgZsO2ciBhdHQgdXBwZGF0ZXJhIGRpbiBsb2thbGEgZ3JlbilcbiIKKworIzogcmVtb3RlLmM6MTgwMQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiWW91ciBicmFuY2ggYW5kICclcycgaGF2ZSBkaXZlcmdlZCxcbiIKQEAgLTE4NywxOSArOTA3LDIzIEBACiAiRGluIGdyZW4gb2NoIFwiJXNcIiBoYXIgZGl2ZXJnZXJhdCxcbiIKICJvY2ggaGFyICVkIHJlc3Bla3RpdmUgJWQgb2xpa2EgaW5jaGVja25pbmdhci5cbiIKIAotIzogc2VxdWVuY2VyLmM6MTIwIGJ1aWx0aW4vbWVyZ2UuYzo4NjUgYnVpbHRpbi9tZXJnZS5jOjk3OAotIzogYnVpbHRpbi9tZXJnZS5jOjEwODggYnVpbHRpbi9tZXJnZS5jOjEwOTgKKyM6IHJlbW90ZS5jOjE4MTEKK21zZ2lkICIgICh1c2UgXCJnaXQgcHVsbFwiIHRvIG1lcmdlIHRoZSByZW1vdGUgYnJhbmNoIGludG8geW91cnMpXG4iCittc2dzdHIgIiAgKGFudsOkbmQgXCJnaXQgcHVsbFwiIGbDtnIgYXR0IHNsw6UgaWhvcCBmasOkcnJncmVuZW4gbWVkIGRpbiBlZ2VuKVxuIgorCisjOiBzZXF1ZW5jZXIuYzoyMDYgYnVpbHRpbi9tZXJnZS5jOjc3NiBidWlsdGluL21lcmdlLmM6ODg5IGJ1aWx0aW4vbWVyZ2UuYzo5OTkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDA5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmciCiBtc2dzdHIgIkt1bmRlIGludGUgw7ZwcG5hIFwiJXNcIiBmw7ZyIHNrcml2bmluZyIKIAotIzogc2VxdWVuY2VyLmM6MTIyIGJ1aWx0aW4vbWVyZ2UuYzozMzMgYnVpbHRpbi9tZXJnZS5jOjg2OAotIzogYnVpbHRpbi9tZXJnZS5jOjEwOTAgYnVpbHRpbi9tZXJnZS5jOjExMDMKKyM6IHNlcXVlbmNlci5jOjIwOCBidWlsdGluL21lcmdlLmM6MzM1IGJ1aWx0aW4vbWVyZ2UuYzo3NzkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDAxIGJ1aWx0aW4vbWVyZ2UuYzoxMDE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSB0byAnJXMnIgogbXNnc3RyICJLdW5kZSBpbnRlIHNrcml2YSB0aWxsIFwiJXNcIiIKIAotIzogc2VxdWVuY2VyLmM6MTQzCisjOiBzZXF1ZW5jZXIuYzoyMjkKIG1zZ2lkICIiCiAiYWZ0ZXIgcmVzb2x2aW5nIHRoZSBjb25mbGljdHMsIG1hcmsgdGhlIGNvcnJlY3RlZCBwYXRoc1xuIgogIndpdGggJ2dpdCBhZGQgPHBhdGhzPicgb3IgJ2dpdCBybSA8cGF0aHM+JyIKQEAgLTIwNyw3ICs5MzEsNyBAQAogImVmdGVyIGF0dCBoYSBsw7ZzdCBrb25mbGlrdGVybmEsIG1hcmtlcmEgZGUgcsOkdHRhZGUgc8O2a3bDpGdhcm5hXG4iCiAibWVkIFwiZ2l0IGFkZCA8c8O2a3bDpGdhcj5cIiBlbGxlciBcImdpdCBybSA8c8O2a3bDpGdhcj5cIiIKIAotIzogc2VxdWVuY2VyLmM6MTQ2CisjOiBzZXF1ZW5jZXIuYzoyMzIKIG1zZ2lkICIiCiAiYWZ0ZXIgcmVzb2x2aW5nIHRoZSBjb25mbGljdHMsIG1hcmsgdGhlIGNvcnJlY3RlZCBwYXRoc1xuIgogIndpdGggJ2dpdCBhZGQgPHBhdGhzPicgb3IgJ2dpdCBybSA8cGF0aHM+J1xuIgpAQCAtMjE3LDU0NiArOTQxLDEzNzIgQEAKICJtZWQgXCJnaXQgYWRkIDxzw7ZrdsOkZ2FyPlwiIGVsbGVyIFwiZ2l0IHJtIDxzw7ZrdsOkZ2FyPlwiXG4iCiAib2NoIGNoZWNrYSBpbiByZXN1bHRhdGV0IG1lZCBcImdpdCBjb21taXRcIiIKIAotIzogc2VxdWVuY2VyLmM6MTU5IHNlcXVlbmNlci5jOjY4NSBzZXF1ZW5jZXIuYzo3NjgKKyM6IHNlcXVlbmNlci5jOjI0NSBzZXF1ZW5jZXIuYzo4NTkgc2VxdWVuY2VyLmM6OTQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSB0byAlcyIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBza3JpdmEgdGlsbCAlcyIKIAotIzogc2VxdWVuY2VyLmM6MTYyCisjOiBzZXF1ZW5jZXIuYzoyNDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3Igd3JhcHBpbmcgdXAgJXMiCiBtc2dzdHIgIkZlbCB2aWQgb21icnl0bmluZyBhdiAlcyIKIAotIzogc2VxdWVuY2VyLmM6MTc3CisjOiBzZXF1ZW5jZXIuYzoyNjMKIG1zZ2lkICJZb3VyIGxvY2FsIGNoYW5nZXMgd291bGQgYmUgb3ZlcndyaXR0ZW4gYnkgY2hlcnJ5LXBpY2suIgogbXNnc3RyICJEaW5hIGxva2FsYSDDpG5kcmluZ2FyIHNrdWxsZSBza3JpdmFzIMO2dmVyIGF2IFwiY2hlcnJ5LXBpY2tcIi4iCiAKLSM6IHNlcXVlbmNlci5jOjE3OQorIzogc2VxdWVuY2VyLmM6MjY1CiBtc2dpZCAiWW91ciBsb2NhbCBjaGFuZ2VzIHdvdWxkIGJlIG92ZXJ3cml0dGVuIGJ5IHJldmVydC4iCiBtc2dzdHIgIkRpbmEgbG9rYWxhIMOkbmRyaW5nYXIgc2t1bGxlIHNrcml2YXMgw7Z2ZXIgYXYgXCJyZXZlcnRcIi4iCiAKLSM6IHNlcXVlbmNlci5jOjE4MgorIzogc2VxdWVuY2VyLmM6MjY4CiBtc2dpZCAiQ29tbWl0IHlvdXIgY2hhbmdlcyBvciBzdGFzaCB0aGVtIHRvIHByb2NlZWQuIgogbXNnc3RyICJDaGVja2EgaW4gZGluYSDDpG5kcmluZ2FyIGVsbGVyIGFudsOkbmQgXCJzdGFzaFwiIGbDtnIgYXR0IGZvcnRzw6R0dGEuIgogCiAjLiBUUkFOU0xBVE9SUzogJXMgd2lsbCBiZSAicmV2ZXJ0IiBvciAiY2hlcnJ5LXBpY2siCi0jOiBzZXF1ZW5jZXIuYzoyMzIKKyM6IHNlcXVlbmNlci5jOjMxOQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogVW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgogbXNnc3RyICIlczogS3VuZGUgaW50ZSBza3JpdmEgbnkgaW5kZXhmaWwiCiAKLSM6IHNlcXVlbmNlci5jOjI5OAorIzogc2VxdWVuY2VyLmM6MzUwCittc2dpZCAiQ291bGQgbm90IHJlc29sdmUgSEVBRCBjb21taXRcbiIKK21zZ3N0ciAiS3VuZGUgaW50ZSBiZXN0w6RtbWEgSEVBRDpzIGluY2hlY2tuaW5nXG4iCisKKyM6IHNlcXVlbmNlci5jOjM3MQorbXNnaWQgIlVuYWJsZSB0byB1cGRhdGUgY2FjaGUgdHJlZVxuIgorbXNnc3RyICJLYW4gaW50ZSB1cHBkYXRlcmEgY2FjaGV0csOkZFxuIgorCisjOiBzZXF1ZW5jZXIuYzo0MTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IHBhcnNlIGNvbW1pdCAlc1xuIgorbXNnc3RyICJLdW5kZSBpbnRlIHRvbGthIGluY2hlY2tuaW5nZW4gJXNcbiIKKworIzogc2VxdWVuY2VyLmM6NDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBwYXJlbnQgY29tbWl0ICVzXG4iCittc2dzdHIgIkt1bmRlIGludGUgdG9sa2EgZsO2csOkbGRyYWluY2hlY2tuaW5nZW4gJXNcbiIKKworIzogc2VxdWVuY2VyLmM6NDg3CiBtc2dpZCAiWW91ciBpbmRleCBmaWxlIGlzIHVubWVyZ2VkLiIKIG1zZ3N0ciAiRGluIGluZGV4ZmlsIGhhciBpbnRlIHNsYWdpdHMgaWhvcC4iCiAKLSM6IHNlcXVlbmNlci5jOjMwMQotbXNnaWQgIllvdSBkbyBub3QgaGF2ZSBhIHZhbGlkIEhFQUQiCi1tc2dzdHIgIkR1IGhhciBpbmdlbiBnaWx0aWcgSEVBRCIKLQotIzogc2VxdWVuY2VyLmM6MzE2CisjOiBzZXF1ZW5jZXIuYzo1MDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGlzIGEgbWVyZ2UgYnV0IG5vIC1tIG9wdGlvbiB3YXMgZ2l2ZW4uIgogbXNnc3RyICJJbmNoZWNrbmluZyAlcyDDpHIgZW4gc2FtbWFuc2xhZ25pbmcsIG1lbiBmbGFnZ2FuIC1tIGFuZ2F2cyBpbnRlLiIKIAotIzogc2VxdWVuY2VyLmM6MzI0CisjOiBzZXF1ZW5jZXIuYzo1MTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGRvZXMgbm90IGhhdmUgcGFyZW50ICVkIgogbXNnc3RyICJJbmNoZWNrbmluZyAlcyBoYXIgaW50ZSBmw7Zyw6RsZGVyICVkIgogCi0jOiBzZXF1ZW5jZXIuYzozMjgKKyM6IHNlcXVlbmNlci5jOjUxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWlubGluZSB3YXMgc3BlY2lmaWVkIGJ1dCBjb21taXQgJXMgaXMgbm90IGEgbWVyZ2UuIgogbXNnc3RyICJIdXZ1ZGxpbmplIGFuZ2F2cywgbWVuIGluY2hlY2tuaW5nZW4gJXMgw6RyIGludGUgZW4gc2FtbWFuc2xhZ25pbmciCiAKICMuIFRSQU5TTEFUT1JTOiBUaGUgZmlyc3QgJXMgd2lsbCBiZSAicmV2ZXJ0IiBvcgogIy4gImNoZXJyeS1waWNrIiwgdGhlIHNlY29uZCAlcyBhIFNIQTEKLSM6IHNlcXVlbmNlci5jOjMzOQorIzogc2VxdWVuY2VyLmM6NTMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjYW5ub3QgcGFyc2UgcGFyZW50IGNvbW1pdCAlcyIKIG1zZ3N0ciAiJXM6IGthbiBpbnRlIHRvbGthIGbDtnLDpGxkcmFpbmNoZWNrbmluZ2VuICVzIgogCi0jOiBzZXF1ZW5jZXIuYzozNDMKKyM6IHNlcXVlbmNlci5jOjUzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZ2V0IGNvbW1pdCBtZXNzYWdlIGZvciAlcyIKIG1zZ3N0ciAiS2FuIGludGUgaMOkbXRhIGluY2hlY2tuaW5nc21lZGRlbGFuZGUgZsO2ciAlcyIKIAotIzogc2VxdWVuY2VyLmM6NDI3CisjOiBzZXF1ZW5jZXIuYzo2MjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJldmVydCAlcy4uLiAlcyIKIG1zZ3N0ciAia3VuZGUgaW50ZSDDpW5ncmEgJXMuLi4gJXMiCiAKLSM6IHNlcXVlbmNlci5jOjQyOAorIzogc2VxdWVuY2VyLmM6NjIyCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBhcHBseSAlcy4uLiAlcyIKLW1zZ3N0ciAia3VuZGUgaW50ZSBhcHBsaWNlcmEgJXMuLi4gJXMiCittc2dzdHIgImt1bmRlIGludGUgdGlsbMOkbXBhICVzLi4uICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo0NTAgc2VxdWVuY2VyLmM6OTA5IGJ1aWx0aW4vbG9nLmM6Mjg4IGJ1aWx0aW4vbG9nLmM6NzEzCi0jOiBidWlsdGluL2xvZy5jOjEzMjkgYnVpbHRpbi9sb2cuYzoxNTQ4IGJ1aWx0aW4vbWVyZ2UuYzozNDcKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxODEKLW1zZ2lkICJyZXZpc2lvbiB3YWxrIHNldHVwIGZhaWxlZCIKLW1zZ3N0ciAibWlzc2x5Y2thZGVzIHNrYXBhIHJldmlzaW9uc3RyYXZlcnNlcmluZyIKLQotIzogc2VxdWVuY2VyLmM6NDUzCisjOiBzZXF1ZW5jZXIuYzo2NTQKIG1zZ2lkICJlbXB0eSBjb21taXQgc2V0IHBhc3NlZCIKIG1zZ3N0ciAiZGVuIGFuZ2l2bmEgdXBwc8OkdHRuaW5nZW4gaW5jaGVja25pbmdhciDDpHIgdG9tIgogCi0jOiBzZXF1ZW5jZXIuYzo0NjEKKyM6IHNlcXVlbmNlci5jOjY2MgogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgJXM6IGZhaWxlZCB0byByZWFkIHRoZSBpbmRleCIKIG1zZ3N0ciAiZ2l0ICVzOiBtaXNzbHlja2FkZXMgbMOkc2EgaW5kZXhldCIKIAotIzogc2VxdWVuY2VyLmM6NDY2CisjOiBzZXF1ZW5jZXIuYzo2NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0ICVzOiBmYWlsZWQgdG8gcmVmcmVzaCB0aGUgaW5kZXgiCiBtc2dzdHIgImdpdCAlczogbWlzc2x5Y2thZGVzIHVwcGRhdGVyYSBpbmRleGV0IgogCi0jOiBzZXF1ZW5jZXIuYzo1NTEKKyM6IHNlcXVlbmNlci5jOjcyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgJXMgZHVyaW5nIGEgJXMiCiBtc2dzdHIgImthbiBpbnRlICVzIHVuZGVyIGVuICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo1NzMKKyM6IHNlcXVlbmNlci5jOjc0NwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2UgbGluZSAlZC4iCiBtc2dzdHIgIkthbiBpbnRlIHRvbGthIHJhZCAlZC4iCiAKLSM6IHNlcXVlbmNlci5jOjU3OAorIzogc2VxdWVuY2VyLmM6NzUyCiBtc2dpZCAiTm8gY29tbWl0cyBwYXJzZWQuIgogbXNnc3RyICJJbmdhIGluY2hlY2tuaW5nYXIgbMOkc3Rlcy4iCiAKLSM6IHNlcXVlbmNlci5jOjU5MQorIzogc2VxdWVuY2VyLmM6NzY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICVzIgogbXNnc3RyICJLdW5kZSBpbnRlIMO2cHBuYSAlcyIKIAotIzogc2VxdWVuY2VyLmM6NTk1CisjOiBzZXF1ZW5jZXIuYzo3NjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlYWQgJXMuIgogbXNnc3RyICJrdW5kZSBpbnRlIGzDpHNhICVzLiIKIAotIzogc2VxdWVuY2VyLmM6NjAyCisjOiBzZXF1ZW5jZXIuYzo3NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW51c2FibGUgaW5zdHJ1Y3Rpb24gc2hlZXQ6ICVzIgogbXNnc3RyICJPYW52w6RuZGJhcnQgbWFudXM6ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo2MzAKKyM6IHNlcXVlbmNlci5jOjgwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGtleTogJXMiCiBtc2dzdHIgIkZlbGFrdGlnIG55Y2tlbDogJXMiCiAKLSM6IHNlcXVlbmNlci5jOjYzMworIzogc2VxdWVuY2VyLmM6ODA3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgdmFsdWUgZm9yICVzOiAlcyIKIG1zZ3N0ciAiRmVsYWt0aWd0IHbDpHJkZSBmw7ZyICVzOiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NjQ1CisjOiBzZXF1ZW5jZXIuYzo4MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFsZm9ybWVkIG9wdGlvbnMgc2hlZXQ6ICVzIgogbXNnc3RyICJUcmFzaWd0IG1hbnVzOiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NjY2CisjOiBzZXF1ZW5jZXIuYzo4NDAKIG1zZ2lkICJhIGNoZXJyeS1waWNrIG9yIHJldmVydCBpcyBhbHJlYWR5IGluIHByb2dyZXNzIgogbXNnc3RyICJlbiBcImNoZXJyeS1waWNrXCIgZWxsZXIgXCJyZXZlcnRcIiBww6Vnw6VyIHJlZGFuIgogCi0jOiBzZXF1ZW5jZXIuYzo2NjcKKyM6IHNlcXVlbmNlci5jOjg0MQogbXNnaWQgInRyeSBcImdpdCBjaGVycnktcGljayAoLS1jb250aW51ZSB8IC0tcXVpdCB8IC0tYWJvcnQpXCIiCiBtc2dzdHIgInRlc3RhIFwiZ2l0IGNoZXJyeS1waWNrICgtLWNvbnRpbnVlIHwgLS1xdWl0IHwgLS1hYm9ydClcIiIKIAotIzogc2VxdWVuY2VyLmM6NjcxCisjOiBzZXF1ZW5jZXIuYzo4NDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBzZXF1ZW5jZXIgZGlyZWN0b3J5ICVzIgogbXNnc3RyICJLdW5kZSBpbnRlIHNrYXBhIFwic2VxdWVuY2VyXCIta2F0YWxvZ2VuIFwiJXNcIiIKIAotIzogc2VxdWVuY2VyLmM6Njg3IHNlcXVlbmNlci5jOjc3MgorIzogc2VxdWVuY2VyLmM6ODYxIHNlcXVlbmNlci5jOjk0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvciB3cmFwcGluZyB1cCAlcy4iCiBtc2dzdHIgIkZlbCB2aWQgb21icnl0bmluZyBhdiAlcy4iCiAKLSM6IHNlcXVlbmNlci5jOjcwNiBzZXF1ZW5jZXIuYzo4NDAKKyM6IHNlcXVlbmNlci5jOjg4MCBzZXF1ZW5jZXIuYzoxMDE0CiBtc2dpZCAibm8gY2hlcnJ5LXBpY2sgb3IgcmV2ZXJ0IGluIHByb2dyZXNzIgogbXNnc3RyICJpbmdlbiBcImNoZXJyeS1waWNrXCIgZWxsZXIgXCJyZXZlcnRcIiBww6Vnw6VyIgogCi0jOiBzZXF1ZW5jZXIuYzo3MDgKKyM6IHNlcXVlbmNlci5jOjg4MgogbXNnaWQgImNhbm5vdCByZXNvbHZlIEhFQUQiCiBtc2dzdHIgImthbiBpbnRlIGJlc3TDpG1tYSBIRUFEIgogCi0jOiBzZXF1ZW5jZXIuYzo3MTAKKyM6IHNlcXVlbmNlci5jOjg4NAogbXNnaWQgImNhbm5vdCBhYm9ydCBmcm9tIGEgYnJhbmNoIHlldCB0byBiZSBib3JuIgogbXNnc3RyICJrYW4gaW50ZSBhdmJyeXRhIGZyw6VuIGVuIGdyZW4gc29tIMOkbm51IGludGUgw6RyIGbDtmRkIgogCi0jOiBzZXF1ZW5jZXIuYzo3MzIKKyM6IHNlcXVlbmNlci5jOjkwNiBidWlsdGluL2FwcGx5LmM6NDA2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiAlczogJXMiCiBtc2dzdHIgImthbiBpbnRlIMO2cHBuYSAlczogJXMiCiAKLSM6IHNlcXVlbmNlci5jOjczNQorIzogc2VxdWVuY2VyLmM6OTA5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCByZWFkICVzOiAlcyIKIG1zZ3N0ciAia2FuIGludGUgbMOkc2EgJXM6ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo3MzYKKyM6IHNlcXVlbmNlci5jOjkxMAogbXNnaWQgInVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiCiBtc2dzdHIgIm92w6RudGF0IGZpbHNsdXQiCiAKLSM6IHNlcXVlbmNlci5jOjc0MgorIzogc2VxdWVuY2VyLmM6OTE2CiAjLCBjLWZvcm1hdAogbXNnaWQgInN0b3JlZCBwcmUtY2hlcnJ5LXBpY2sgSEVBRCBmaWxlICclcycgaXMgY29ycnVwdCIKIG1zZ3N0ciAic3BhcmFkIEhFQUQtZmlsIGZyw6VuIGbDtnJlIFwiY2hlcnJ5LXBpY2tcIiwgXCIlc1wiLCDDpHIgdHJhc2lnIgogCi0jOiBzZXF1ZW5jZXIuYzo3NjUKKyM6IHNlcXVlbmNlci5jOjkzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgZm9ybWF0ICVzLiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBmb3JtYXRlcmEgJXMuIgogCi0jOiBzZXF1ZW5jZXIuYzo5MjcKKyM6IHNlcXVlbmNlci5jOjEwODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGNhbid0IGNoZXJyeS1waWNrIGEgJXMiCittc2dzdHIgIiVzOiBrYW4gaW50ZSBnw7ZyYSBcImNoZXJyeS1waWNrXCIgcMOlIHR5cGVuIFwiJXNcIiIKKworIzogc2VxdWVuY2VyLmM6MTA4NQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogYmFkIHJldmlzaW9uIgorbXNnc3RyICIlczogZmVsYWt0aWcgcmV2aXNpb24iCisKKyM6IHNlcXVlbmNlci5jOjExMTkKIG1zZ2lkICJDYW4ndCByZXZlcnQgYXMgaW5pdGlhbCBjb21taXQiCiBtc2dzdHIgIkthbiBpbnRlIMOlbmdyYSBzb20gZsO2cnN0YSBpbmNoZWNrbmluZyIKIAotIzogc2VxdWVuY2VyLmM6OTI4CisjOiBzZXF1ZW5jZXIuYzoxMTIwCiBtc2dpZCAiQ2FuJ3QgY2hlcnJ5LXBpY2sgaW50byBlbXB0eSBoZWFkIgogbXNnc3RyICJLYW4gaW50ZSBnw7ZyYSBcImNoZXJyeS1waWNrXCIgaSBldHQgdG9tdCBodXZ1ZCIKIAotIzogd3Qtc3RhdHVzLmM6MTM0CisjOiBzaGExX25hbWUuYzoxMDM2Cittc2dpZCAiSEVBRCBkb2VzIG5vdCBwb2ludCB0byBhIGJyYW5jaCIKK21zZ3N0ciAiSEVBRCBwZWthciBpbnRlIHDDpSBlbiBncmVuIgorCisjOiBzaGExX25hbWUuYzoxMDM5CisjLCBjLWZvcm1hdAorbXNnaWQgIk5vIHN1Y2ggYnJhbmNoOiAnJXMnIgorbXNnc3RyICJPa8OkbmQgZ3JlbjogXCIlc1wiIgorCisjOiBzaGExX25hbWUuYzoxMDQxCisjLCBjLWZvcm1hdAorbXNnaWQgIk5vIHVwc3RyZWFtIGNvbmZpZ3VyZWQgZm9yIGJyYW5jaCAnJXMnIgorbXNnc3RyICJJbmdlbiBzdGFuZGFyZHVwcHN0csO2bSBhbmdpdmVuIGbDtnIgZ3JlbmVuIFwiJXNcIiIKKworIzogc2hhMV9uYW1lLmM6MTA0NAorIywgYy1mb3JtYXQKK21zZ2lkICJVcHN0cmVhbSBicmFuY2ggJyVzJyBub3Qgc3RvcmVkIGFzIGEgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCIKK21zZ3N0ciAiVXBwc3Ryw7Ztc2dyZW5lbiBcIiVzXCIgw6RyIGludGUgbGFncmFkIHNvbSBlbiBmasOkcnJzcMOlcmFuZGUgZ3JlbiIKKworIzogd3JhcHBlci5jOjQwOAorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gYWNjZXNzICclcyc6ICVzIgorbXNnc3RyICJrYW4gaW50ZSBrb21tYSDDpXQgXCIlc1wiOiAlcyIKKworIzogd3JhcHBlci5jOjQyMworIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gYWNjZXNzICclcyciCittc2dzdHIgImthbiBpbnRlIGtvbW1hIMOldCBcIiVzXCIiCisKKyM6IHdyYXBwZXIuYzo0MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIGxvb2sgdXAgY3VycmVudCB1c2VyIGluIHRoZSBwYXNzd2QgZmlsZTogJXMiCittc2dzdHIgImthbiBpbnRlIHNsw6UgdXBwIGFrdHVlbGwgYW52w6RuZGFyZSBpIHBhc3N3ZC1maWxlbjogJXMiCisKKyM6IHdyYXBwZXIuYzo0MzUKK21zZ2lkICJubyBzdWNoIHVzZXIiCittc2dzdHIgIm9rw6RuZCBhbnbDpG5kYXJlIgorCisjOiB3dC1zdGF0dXMuYzoxNDAKIG1zZ2lkICJVbm1lcmdlZCBwYXRoczoiCiBtc2dzdHIgIkVqIHNhbW1hbnNsYWduYSBzw7ZrdsOkZ2FyOiIKIAotIzogd3Qtc3RhdHVzLmM6MTQwIHd0LXN0YXR1cy5jOjE1NworIzogd3Qtc3RhdHVzLmM6MTY3IHd0LXN0YXR1cy5jOjE5NAogIywgYy1mb3JtYXQKIG1zZ2lkICIgICh1c2UgXCJnaXQgcmVzZXQgJXMgPGZpbGU+Li4uXCIgdG8gdW5zdGFnZSkiCiBtc2dzdHIgIiAgKGFudsOkbmQgXCJnaXQgcmVzZXQgJXMgPGZpbD4uLi5cIiBmw7ZyIGF0dCB0YSBib3J0IGZyw6VuIGvDtikiCiAKLSM6IHd0LXN0YXR1cy5jOjE0MiB3dC1zdGF0dXMuYzoxNTkKKyM6IHd0LXN0YXR1cy5jOjE2OSB3dC1zdGF0dXMuYzoxOTYKIG1zZ2lkICIgICh1c2UgXCJnaXQgcm0gLS1jYWNoZWQgPGZpbGU+Li4uXCIgdG8gdW5zdGFnZSkiCiBtc2dzdHIgIiAgKGFudsOkbmQgXCJnaXQgcm0gLS1jYWNoZWQgPGZpbD4uLi5cIiBmw7ZyIGF0dCB0YSBib3J0IGZyw6VuIGvDtikiCiAKLSM6IHd0LXN0YXR1cy5jOjE0MworIzogd3Qtc3RhdHVzLmM6MTczCittc2dpZCAiICAodXNlIFwiZ2l0IGFkZCA8ZmlsZT4uLi5cIiB0byBtYXJrIHJlc29sdXRpb24pIgorbXNnc3RyICIgIChhbnbDpG5kIFwiZ2l0IGFkZCA8ZmlsPi4uLlwiIGbDtnIgYXR0IGFuZ2UgbMO2c25pbmcpIgorCisjOiB3dC1zdGF0dXMuYzoxNzUgd3Qtc3RhdHVzLmM6MTc5CiBtc2dpZCAiICAodXNlIFwiZ2l0IGFkZC9ybSA8ZmlsZT4uLi5cIiBhcyBhcHByb3ByaWF0ZSB0byBtYXJrIHJlc29sdXRpb24pIgogbXNnc3RyICIgIChhbnbDpG5kIFwiZ2l0IGFkZC9ybSA8ZmlsPi4uLlwiIHNvbSBsw6RtcGxpZ3QgZsO2ciBhdHQgYW5nZSBsw7ZzbmluZykiCiAKLSM6IHd0LXN0YXR1cy5jOjE1MQorIzogd3Qtc3RhdHVzLmM6MTc3Cittc2dpZCAiICAodXNlIFwiZ2l0IHJtIDxmaWxlPi4uLlwiIHRvIG1hcmsgcmVzb2x1dGlvbikiCittc2dzdHIgIiAgKGFudsOkbmQgXCJnaXQgcm0gPGZpbD4uLi5cIiBmw7ZyIGF0dCBhbmdlIGzDtnNuaW5nKSIKKworIzogd3Qtc3RhdHVzLmM6MTg4CiBtc2dpZCAiQ2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6IgogbXNnc3RyICLDhG5kcmluZ2FyIGF0dCBjaGVja2EgaW46IgogCi0jOiB3dC1zdGF0dXMuYzoxNjkKKyM6IHd0LXN0YXR1cy5jOjIwNgogbXNnaWQgIkNoYW5nZXMgbm90IHN0YWdlZCBmb3IgY29tbWl0OiIKIG1zZ3N0ciAiw4RuZHJpbmdhciBlaiBpIGluY2hlY2tuaW5nc2vDtm46IgogCi0jOiB3dC1zdGF0dXMuYzoxNzMKKyM6IHd0LXN0YXR1cy5jOjIxMAogbXNnaWQgIiAgKHVzZSBcImdpdCBhZGQgPGZpbGU+Li4uXCIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpIgogbXNnc3RyICIiCiAiICAoYW52w6RuZCBcImdpdCBhZGQgPGZpbD4uLi5cIiBmw7ZyIGF0dCB1cHBkYXRlcmEgdmFkIHNvbSBza2FsbCBjaGVja2FzIGluKSIKIAotIzogd3Qtc3RhdHVzLmM6MTc1CisjOiB3dC1zdGF0dXMuYzoyMTIKIG1zZ2lkICIgICh1c2UgXCJnaXQgYWRkL3JtIDxmaWxlPi4uLlwiIHRvIHVwZGF0ZSB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKSIKIG1zZ3N0ciAiIgogIiAgKGFudsOkbmQgXCJnaXQgYWRkL3JtIDxmaWw+Li4uXCIgZsO2ciBhdHQgdXBwZGF0ZXJhIHZhZCBzb20gc2thbGwgY2hlY2thcyBpbikiCiAKLSM6IHd0LXN0YXR1cy5jOjE3NgorIzogd3Qtc3RhdHVzLmM6MjEzCiBtc2dpZCAiIgogIiAgKHVzZSBcImdpdCBjaGVja291dCAtLSA8ZmlsZT4uLi5cIiB0byBkaXNjYXJkIGNoYW5nZXMgaW4gd29ya2luZyBkaXJlY3RvcnkpIgogbXNnc3RyICIiCiAiICAoYW52w6RuZCBcImdpdCBjaGVja291dCAtLSA8ZmlsPi4uLlwiIGbDtnIgYXR0IGbDtnJrYXN0YSDDpG5kcmluZ2FyIGkgIgogImFyYmV0c2thdGFsb2dlbikiCiAKLSM6IHd0LXN0YXR1cy5jOjE3OAorIzogd3Qtc3RhdHVzLmM6MjE1CiBtc2dpZCAiICAoY29tbWl0IG9yIGRpc2NhcmQgdGhlIHVudHJhY2tlZCBvciBtb2RpZmllZCBjb250ZW50IGluIHN1Ym1vZHVsZXMpIgogbXNnc3RyICIiCiAiICAoY2hlY2thIGluIGVsbGVyIGbDtnJrYXN0YSBvc3DDpXJhdCBlbGxlciDDpG5kcmF0IGlubmVow6VsbCBpIHVuZGVybW9kdWxlcikiCiAKLSMgJXMgw6RyIGV0dCB2ZXJiICgiVW50cmFja2VkIi8iSWdub3JlZCIpOyBsw6RnZyB0aWxsIGV0dCAtZS4KLSM6IHd0LXN0YXR1cy5jOjE4NwotIywgYy1mb3JtYXQKLW1zZ2lkICIlcyBmaWxlczoiCi1tc2dzdHIgIiVzZSBmaWxlcjoiCi0KLSM6IHd0LXN0YXR1cy5jOjE5MAorIzogd3Qtc3RhdHVzLmM6MjI3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgKHVzZSBcImdpdCAlcyA8ZmlsZT4uLi5cIiB0byBpbmNsdWRlIGluIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpIgogbXNnc3RyICIiCi0iICAoYW52w6RuZCBcImdpdCAlcyA8ZmlsPi4uLlwiIGbDtnIgYXR0IHRhIG1lZCBpIHZhZCBzb20gc2thbGwgY2hlY2thcyBpbikiCisiICAoYW52w6RuZCBcImdpdCAlcyA8ZmlsPi4uLlwiIGbDtnIgYXR0IHRhIG1lZCBpIGRldCBzb20gc2thbGwgY2hlY2thcyBpbikiCiAKLSM6IHd0LXN0YXR1cy5jOjIwNworIzogd3Qtc3RhdHVzLmM6MjQ0CiBtc2dpZCAiYnVnIgogbXNnc3RyICJwcm9ncmFtZmVsIgogCi0jOiB3dC1zdGF0dXMuYzoyMTIKKyM6IHd0LXN0YXR1cy5jOjI0OQogbXNnaWQgImJvdGggZGVsZXRlZDoiCiBtc2dzdHIgImJvcnR0YWdldCBhdiBiw6RnZ2U6IgogCi0jOiB3dC1zdGF0dXMuYzoyMTMKKyM6IHd0LXN0YXR1cy5jOjI1MAogbXNnaWQgImFkZGVkIGJ5IHVzOiIKIG1zZ3N0ciAidGlsbGFndCBhdiBvc3M6IgogCi0jOiB3dC1zdGF0dXMuYzoyMTQKKyM6IHd0LXN0YXR1cy5jOjI1MQogbXNnaWQgImRlbGV0ZWQgYnkgdGhlbToiCiBtc2dzdHIgImJvcnR0YWdldCBhdiBkZW06IgogCi0jOiB3dC1zdGF0dXMuYzoyMTUKKyM6IHd0LXN0YXR1cy5jOjI1MgogbXNnaWQgImFkZGVkIGJ5IHRoZW06IgogbXNnc3RyICJ0aWxsYWd0IGF2IGRlbToiCiAKLSM6IHd0LXN0YXR1cy5jOjIxNgorIzogd3Qtc3RhdHVzLmM6MjUzCiBtc2dpZCAiZGVsZXRlZCBieSB1czoiCiBtc2dzdHIgImJvcnR0YWdldCBhdiBvc3M6IgogCi0jOiB3dC1zdGF0dXMuYzoyMTcKKyM6IHd0LXN0YXR1cy5jOjI1NAogbXNnaWQgImJvdGggYWRkZWQ6IgogbXNnc3RyICJ0aWxsYWd0IGF2IGLDpGdnZToiCiAKLSM6IHd0LXN0YXR1cy5jOjIxOAorIzogd3Qtc3RhdHVzLmM6MjU1CiBtc2dpZCAiYm90aCBtb2RpZmllZDoiCiBtc2dzdHIgIsOkbmRyYXQgYXYgYsOkZ2dlOiIKIAotIzogd3Qtc3RhdHVzLmM6MjQ4CisjOiB3dC1zdGF0dXMuYzoyODUKIG1zZ2lkICJuZXcgY29tbWl0cywgIgogbXNnc3RyICJueWEgaW5jaGVja25pbmdhciwgIgogCi0jOiB3dC1zdGF0dXMuYzoyNTAKKyM6IHd0LXN0YXR1cy5jOjI4NwogbXNnaWQgIm1vZGlmaWVkIGNvbnRlbnQsICIKIG1zZ3N0ciAiw6RuZHJhdCBpbm5laMOlbGwsICIKIAotIzogd3Qtc3RhdHVzLmM6MjUyCisjOiB3dC1zdGF0dXMuYzoyODkKIG1zZ2lkICJ1bnRyYWNrZWQgY29udGVudCwgIgogbXNnc3RyICJvc3DDpXJhdCBpbm5laMOlbGwsICIKIAotIzogd3Qtc3RhdHVzLmM6MjY2CisjOiB3dC1zdGF0dXMuYzozMDYKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IGZpbGU6ICAgJXMiCiBtc2dzdHIgIm55IGZpbDogICAgICVzIgogCi0jOiB3dC1zdGF0dXMuYzoyNjkKKyM6IHd0LXN0YXR1cy5jOjMwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3BpZWQ6ICAgICAlcyAtPiAlcyIKIG1zZ3N0ciAia29waWVyYWQ6ICAgJXMgLT4gJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjI3MgorIzogd3Qtc3RhdHVzLmM6MzEyCiAjLCBjLWZvcm1hdAogbXNnaWQgImRlbGV0ZWQ6ICAgICVzIgogbXNnc3RyICJib3J0dGFnZW46ICAlcyIKIAotIzogd3Qtc3RhdHVzLmM6Mjc1CisjOiB3dC1zdGF0dXMuYzozMTUKICMsIGMtZm9ybWF0CiBtc2dpZCAibW9kaWZpZWQ6ICAgJXMiCiBtc2dzdHIgIsOkbmRyYWQ6ICAgICAlcyIKIAotIzogd3Qtc3RhdHVzLmM6Mjc4CisjOiB3dC1zdGF0dXMuYzozMTgKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVuYW1lZDogICAgJXMgLT4gJXMiCiBtc2dzdHIgIm5hbW5ieXRlOiAgICVzIC0+ICVzIgogCi0jOiB3dC1zdGF0dXMuYzoyODEKKyM6IHd0LXN0YXR1cy5jOjMyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJ0eXBlY2hhbmdlOiAlcyIKIG1zZ3N0ciAidHlwYnl0ZTogICAgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjI4NAorIzogd3Qtc3RhdHVzLmM6MzI0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd246ICAgICVzIgogbXNnc3RyICJva8OkbmQ6ICAgICAgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjI4NworIzogd3Qtc3RhdHVzLmM6MzI3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVubWVyZ2VkOiAgICVzIgogbXNnc3RyICJvc2FtbWFuc2wuOiAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MjkwCisjOiB3dC1zdGF0dXMuYzozMzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiYnVnOiB1bmhhbmRsZWQgZGlmZiBzdGF0dXMgJWMiCiBtc2dzdHIgInByb2dyYW1mZWw6IGRpZmYtc3RhdHVzICVjIGVqIGhhbnRlcmFkIgogCi0jOiB3dC1zdGF0dXMuYzo3MTMKKyM6IHd0LXN0YXR1cy5jOjgwMworbXNnaWQgIllvdSBoYXZlIHVubWVyZ2VkIHBhdGhzLiIKK21zZ3N0ciAiRHUgaGFyIGVqIHNhbW1hbnNsYWduYSBzw7ZrdsOkZ2FyLiIKKworIzogd3Qtc3RhdHVzLmM6ODA2IHd0LXN0YXR1cy5jOjk1OAorbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCBjb21taXRcIikiCittc2dzdHIgIiAgKHLDpHR0YSBrb25mbGlrdGVyIG9jaCBrw7ZyIFwiZ2l0IGNvbW1pdFwiKSIKKworIzogd3Qtc3RhdHVzLmM6ODA5Cittc2dpZCAiQWxsIGNvbmZsaWN0cyBmaXhlZCBidXQgeW91IGFyZSBzdGlsbCBtZXJnaW5nLiIKK21zZ3N0ciAiQWxsYSBrb25mbGlrdGVyIGhhciByw6R0dGF0cyBtZW4gZHUgw6RyIGZvcnRmYXJhbmRlIGkgZW4gc2FtbWFuc2xhZ25pbmcuIgorCisjOiB3dC1zdGF0dXMuYzo4MTIKK21zZ2lkICIgICh1c2UgXCJnaXQgY29tbWl0XCIgdG8gY29uY2x1ZGUgbWVyZ2UpIgorbXNnc3RyICIgIChhbnbDpG5kIFwiZ2l0IGNvbW1pdFwiIGbDtnIgYXR0IHNsdXRmw7ZyYSBzYW1tYW5zbGFnbmluZ2VuKSIKKworIzogd3Qtc3RhdHVzLmM6ODIyCittc2dpZCAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGFuIGFtIHNlc3Npb24uIgorbXNnc3RyICJEdSDDpHIgaSBtaXR0ZW4gYXYgZW4ga8O2cm5pbmcgYXYgXCJnaXQgYW1cIi4iCisKKyM6IHd0LXN0YXR1cy5jOjgyNQorbXNnaWQgIlRoZSBjdXJyZW50IHBhdGNoIGlzIGVtcHR5LiIKK21zZ3N0ciAiQWt0dWVsbCBwYXRjaCDDpHIgdG9tLiIKKworIzogd3Qtc3RhdHVzLmM6ODI5Cittc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBydW4gXCJnaXQgYW0gLS1yZXNvbHZlZFwiKSIKK21zZ3N0ciAiICAocsOkdHRhIGtvbmZsaWt0ZXIgb2NoIGvDtnIgc2VkYW4gXCJnaXQgYW0gLS1yZXNvbHZlZFwiKSIKKworIzogd3Qtc3RhdHVzLmM6ODMxCittc2dpZCAiICAodXNlIFwiZ2l0IGFtIC0tc2tpcFwiIHRvIHNraXAgdGhpcyBwYXRjaCkiCittc2dzdHIgIiAgKGFudsOkbmQgXCJnaXQgYW0gLS1za2lwXCIgZsO2ciBhdHQgaG9wcGEgw7Z2ZXIgcGF0Y2hlbikiCisKKyM6IHd0LXN0YXR1cy5jOjgzMworbXNnaWQgIiAgKHVzZSBcImdpdCBhbSAtLWFib3J0XCIgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoKSIKK21zZ3N0ciAiICAoYW52w6RuZCBcImdpdCBhbSAtLWFib3J0XCIgZsO2ciBhdHQgw6V0ZXJzdMOkbGxhIHVyc3BydW5nc2dyZW5lbikiCisKKyM6IHd0LXN0YXR1cy5jOjg5MyB3dC1zdGF0dXMuYzo5MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iCittc2dzdHIgIkR1IGjDpWxsZXIgcMOlIGF0dCBvbWJhc2VyYSBncmVuZW4gXCIlc1wiIG92YW5ww6UgXCIlc1wiLiIKKworIzogd3Qtc3RhdHVzLmM6ODk4IHd0LXN0YXR1cy5jOjkxNQorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nLiIKK21zZ3N0ciAiRHUgaMOlbGxlciBww6UgbWVkIGVuIG9tYmFzZXJpbmcuIgorCisjOiB3dC1zdGF0dXMuYzo5MDEKK21zZ2lkICIgIChmaXggY29uZmxpY3RzIGFuZCB0aGVuIHJ1biBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiKSIKK21zZ3N0ciAiICAocsOkdHRhIGtvbmZsaWt0ZXIgb2NoIGvDtnIgc2VkYW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIikiCisKKyM6IHd0LXN0YXR1cy5jOjkwMworbXNnaWQgIiAgKHVzZSBcImdpdCByZWJhc2UgLS1za2lwXCIgdG8gc2tpcCB0aGlzIHBhdGNoKSIKK21zZ3N0ciAiICAoYW52w6RuZCBcImdpdCByZWJhc2UgLS1za2lwXCIgZsO2ciBhdHQgaG9wcGEgw7Z2ZXIgcGF0Y2hlbikiCisKKyM6IHd0LXN0YXR1cy5jOjkwNQorbXNnaWQgIiAgKHVzZSBcImdpdCByZWJhc2UgLS1hYm9ydFwiIHRvIGNoZWNrIG91dCB0aGUgb3JpZ2luYWwgYnJhbmNoKSIKK21zZ3N0ciAiICAoYW52w6RuZCBcImdpdCByZWJhc2UgLS1hYm9ydFwiIGbDtnIgYXR0IGNoZWNrYSB1dCB1cnNwcnVuZ3NncmVuZW4pIgorCisjOiB3dC1zdGF0dXMuYzo5MTgKK21zZ2lkICIgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIikiCittc2dzdHIgIiAgKGFsbGEga29uZmxpa3RlciByw6R0dGFkZToga8O2ciBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiKSIKKworIzogd3Qtc3RhdHVzLmM6OTIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iCittc2dzdHIgIiIKKyJEdSBow6VsbGVyIHDDpSBhdHQgZGVsYSB1cHAgZW4gaW5jaGVja25pbmcgbWVkYW4gZHUgb21iYXNlcmFyIGdyZW5lbiBcIiVzXCIgIgorIm92YW5ww6UgXCIlc1wiLiIKKworIzogd3Qtc3RhdHVzLmM6OTI3Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgc3BsaXR0aW5nIGEgY29tbWl0IGR1cmluZyBhIHJlYmFzZS4iCittc2dzdHIgIkR1IGjDpWxsZXIgcMOlIGF0dCBkZWxhIHVwcCBlbiBpbmNoZWNrbmluZyBpIGVuIG9tYmFzZXJpbmcuIgorCisjOiB3dC1zdGF0dXMuYzo5MzAKK21zZ2lkICIgIChPbmNlIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4sIHJ1biBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiKSIKK21zZ3N0ciAiICAoU8OlIGZvcnQgZGluIGFyYmV0c2thdGFsb2cgw6RyIHJlbiwga8O2ciBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiKSIKKworIzogd3Qtc3RhdHVzLmM6OTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iCittc2dzdHIgIiIKKyJEdSBow6VsbGVyIHDDpSBhdHQgcmVkaWdlcmEgZW4gaW5jaGVja25pbmcgbWVkYW4gZHUgb21iYXNlcmFyIGdyZW5lbiBcIiVzXCIgIgorIm92YW5ww6UgXCIlc1wiLiIKKworIzogd3Qtc3RhdHVzLmM6OTM5Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCBkdXJpbmcgYSByZWJhc2UuIgorbXNnc3RyICJEdSBow6VsbGVyIHDDpSBhdHQgcmVkaWdlcmEgZW4gaW5jaGVja25pbmcgdW5kZXIgZW4gb21iYXNlcmluZy4iCisKKyM6IHd0LXN0YXR1cy5jOjk0MgorbXNnaWQgIiAgKHVzZSBcImdpdCBjb21taXQgLS1hbWVuZFwiIHRvIGFtZW5kIHRoZSBjdXJyZW50IGNvbW1pdCkiCittc2dzdHIgIiIKKyIgIChhbnbDpG5kIFwiZ2l0IGNvbW1pdCAtLWFtZW5kXCIgZsO2ciBhdHQgbMOkZ2dhIHRpbGwgcMOlIGFrdHVlbGwgaW5jaGVja25pbmcpIgorCisjOiB3dC1zdGF0dXMuYzo5NDQKK21zZ2lkICIiCisiICAodXNlIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIgb25jZSB5b3UgYXJlIHNhdGlzZmllZCB3aXRoIHlvdXIgY2hhbmdlcykiCittc2dzdHIgIiAgKGFudsOkbmQgXCJnaXQgcmViYXNlIC0tY29udGludWVcIiBuw6RyIGR1IMOkciBuw7ZqZCBtZWQgZGluYSDDpG5kcmluZ2FyKSIKKworIzogd3Qtc3RhdHVzLmM6OTU0Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgY2hlcnJ5LXBpY2tpbmcuIgorbXNnc3RyICJEdSBow6VsbGVyIHDDpSBtZWQgZW4gXCJjaGVycnktcGlja1wiLiIKKworIzogd3Qtc3RhdHVzLmM6OTYxCittc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IGNvbW1pdFwiKSIKK21zZ3N0ciAiICAoYWxsYSBrb25mbGlrdGVyIGhhciByw6R0dGF0czoga8O2ciBcImdpdCBjb21taXRcIikiCisKKyM6IHd0LXN0YXR1cy5jOjk3MAorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSByZXZlcnRpbmcgY29tbWl0ICVzLiIKK21zZ3N0ciAiRHUgaMOlbGxlciBww6UgbWVkIGF0dCDDpW5ncmEgaW5jaGVja25pbmdlbiAlcy4iCisKKyM6IHd0LXN0YXR1cy5jOjk3NQorbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKK21zZ3N0ciAiICAocsOkdHRhIGtvbmZsaWt0ZXIgb2NoIGvDtnIgc2VkYW4gXCJnaXQgcmV2ZXJ0IC0tY29udGludWVcIikiCisKKyM6IHd0LXN0YXR1cy5jOjk3OAorbXNnaWQgIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKK21zZ3N0ciAiICAoYWxsYSBrb25mbGlrdGVyIHLDpHR0YWRlOiBrw7ZyIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCIpIgorCisjOiB3dC1zdGF0dXMuYzo5ODAKK21zZ2lkICIgICh1c2UgXCJnaXQgcmV2ZXJ0IC0tYWJvcnRcIiB0byBjYW5jZWwgdGhlIHJldmVydCBvcGVyYXRpb24pIgorbXNnc3RyICIgIChhbnbDpG5kIFwiZ2l0IHJldmVydCAtLWFib3J0XCIgZsO2ciBhdHQgYXZicnl0YSDDpW5ncmFuZGV0KSIKKworIzogd3Qtc3RhdHVzLmM6OTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGJpc2VjdGluZywgc3RhcnRlZCBmcm9tIGJyYW5jaCAnJXMnLiIKK21zZ3N0ciAiRHUgaMOlbGxlciBww6UgbWVkIGVuIFwiYmlzZWN0XCIsIHN0YXJ0YWQgZnLDpW4gZ3JlbmVuIFwiJXNcIi4iCisKKyM6IHd0LXN0YXR1cy5jOjk5NQorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGJpc2VjdGluZy4iCittc2dzdHIgIkR1IGjDpWxsZXIgcMOlIG1lZCBlbiBcImJpc2VjdFwiLiIKKworIzogd3Qtc3RhdHVzLmM6OTk4Cittc2dpZCAiICAodXNlIFwiZ2l0IGJpc2VjdCByZXNldFwiIHRvIGdldCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBicmFuY2gpIgorbXNnc3RyICIiCisiICAoYW52w6RuZCBcImdpdCBiaXNlY3QgcmVzZXRcIiBmw7ZyIGF0dCBrb21tYSB0aWxsYmFrYSB0aWxsIHVyc3BydW5nc2dyZW5lbikiCisKKyM6IHd0LXN0YXR1cy5jOjExNzMKIG1zZ2lkICJPbiBicmFuY2ggIgogbXNnc3RyICJQw6UgZ3JlbmVuICIKIAotIzogd3Qtc3RhdHVzLmM6NzIwCisjOiB3dC1zdGF0dXMuYzoxMTg0Cittc2dpZCAiSEVBRCBkZXRhY2hlZCBhdCAiCittc2dzdHIgIkhFQUQgZnLDpW5rb3BwbGFkIHZpZCAiCisKKyM6IHd0LXN0YXR1cy5jOjExODYKK21zZ2lkICJIRUFEIGRldGFjaGVkIGZyb20gIgorbXNnc3RyICJIRUFEIGZyw6Vua29wcGxhZCBmcsOlbiAiCisKKyM6IHd0LXN0YXR1cy5jOjExODkKIG1zZ2lkICJOb3QgY3VycmVudGx5IG9uIGFueSBicmFuY2guIgogbXNnc3RyICJJbnRlIHDDpSBuw6Vnb24gZ3JlbiBmw7ZyIG7DpHJ2YXJhbmRlLiIKIAotIzogd3Qtc3RhdHVzLmM6NzMxCisjOiB3dC1zdGF0dXMuYzoxMjA2CiBtc2dpZCAiSW5pdGlhbCBjb21taXQiCiBtc2dzdHIgIkbDtnJzdGEgaW5jaGVja25pbmciCiAKLSM6IHd0LXN0YXR1cy5jOjc0NQotbXNnaWQgIlVudHJhY2tlZCIKLW1zZ3N0ciAiT3Nww6VyYWQiCisjOiB3dC1zdGF0dXMuYzoxMjIwCittc2dpZCAiVW50cmFja2VkIGZpbGVzIgorbXNnc3RyICJPc3DDpXJhZGUgZmlsZXIiCiAKLSM6IHd0LXN0YXR1cy5jOjc0NwotbXNnaWQgIklnbm9yZWQiCi1tc2dzdHIgIklnbm9yZXJhZCIKKyM6IHd0LXN0YXR1cy5jOjEyMjIKK21zZ2lkICJJZ25vcmVkIGZpbGVzIgorbXNnc3RyICJJZ25vcmVyYWRlIGZpbGVyIgorCisjOiB3dC1zdGF0dXMuYzoxMjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJJdCB0b29rICUuMmYgc2Vjb25kcyB0byBlbnVtZXJhdGUgdW50cmFja2VkIGZpbGVzLiAnc3RhdHVzIC11bm8nXG4iCisibWF5IHNwZWVkIGl0IHVwLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gZm9yZ2V0IHRvIGFkZFxuIgorIm5ldyBmaWxlcyB5b3Vyc2VsZiAoc2VlICdnaXQgaGVscCBzdGF0dXMnKS4iCittc2dzdHIgIiIKKyJEZXQgdG9nICUuMmYgc2VrdW5kZXIgYXR0IHLDpGtuYSB1cHAgb3Nww6VyYWRlIGZpbGVyLiBcInN0YXR1cyAtdW5vXCJcbiIKKyJrYW4gZ8OlIHNuYWJiYXJlLCBtZW4gZHUgbcOlc3RlIHZhcmEgZsO2cnNpa3RpZyBzw6UgZHUgaW50ZSBnbMO2bW1lclxuIgorImzDpGdnYSB0aWxsIG55YSBmaWxlciBzasOkbHYgKHNlIFwiZ2l0IGhlbHAgc3RhdHVzXCIpLiIKIAogIyAlcyDDpHIgbsOkc3RhIHN0csOkbmcgZWxsZXIgdG9tLgotIzogd3Qtc3RhdHVzLmM6NzQ5CisjOiB3dC1zdGF0dXMuYzoxMjMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVudHJhY2tlZCBmaWxlcyBub3QgbGlzdGVkJXMiCiBtc2dzdHIgIk9zcMOlcmFkZSBmaWxlciB2aXNhcyBlaiVzIgogCi0jOiB3dC1zdGF0dXMuYzo3NTEKKyM6IHd0LXN0YXR1cy5jOjEyMzQKIG1zZ2lkICIgKHVzZSAtdSBvcHRpb24gdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpIgogbXNnc3RyICIgKGFudsOkbmQgZmxhZ2dhbiAtdSBmw7ZyIGF0dCB2aXNhIG9zcMOlcmFkZSBmaWxlcikiCiAKLSM6IHd0LXN0YXR1cy5jOjc1NworIzogd3Qtc3RhdHVzLmM6MTI0MAogbXNnaWQgIk5vIGNoYW5nZXMiCiBtc2dzdHIgIkluZ2Egw6RuZHJpbmdhciIKIAotIzogd3Qtc3RhdHVzLmM6NzYxCisjOiB3dC1zdGF0dXMuYzoxMjQ1CiAjLCBjLWZvcm1hdAotbXNnaWQgIm5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0JXNcbiIKLW1zZ3N0ciAiaW5nYSDDpG5kcmluZ2FyIGF0dCBjaGVja2EgaW4lc1xuIgorbXNnaWQgIm5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0ICh1c2UgXCJnaXQgYWRkXCIgYW5kL29yIFwiZ2l0IGNvbW1pdCAtYVwiKVxuIgorbXNnc3RyICIiCisiaW5nYSDDpG5kcmluZ2FyIGF0dCBjaGVja2EgaW4gKGFudsOkbmQgXCJnaXQgYWRkXCIgb2NoL2VsbGVyIFwiZ2l0IGNvbW1pdCAtYSIKKyJcIilcbiIKIAotIzogd3Qtc3RhdHVzLmM6NzYzCi1tc2dpZCAiICh1c2UgXCJnaXQgYWRkXCIgYW5kL29yIFwiZ2l0IGNvbW1pdCAtYVwiKSIKLW1zZ3N0ciAiIChhbnbDpG5kIFwiZ2l0IGFkZFwiIG9jaC9lbGxlciBcImdpdCBjb21taXQgLWFcIikiCi0KLSM6IHd0LXN0YXR1cy5jOjc2NQorIzogd3Qtc3RhdHVzLmM6MTI0OAogIywgYy1mb3JtYXQKLW1zZ2lkICJub3RoaW5nIGFkZGVkIHRvIGNvbW1pdCBidXQgdW50cmFja2VkIGZpbGVzIHByZXNlbnQlc1xuIgotbXNnc3RyICJpbmdldCBrw7ZhdCBmw7ZyIGluY2hlY2tuaW5nLCBtZW4gb3Nww6VyYWRlIGZpbGVyIGZpbm5zJXNcbiIKK21zZ2lkICJubyBjaGFuZ2VzIGFkZGVkIHRvIGNvbW1pdFxuIgorbXNnc3RyICJpbmdhIMOkbmRyaW5nYXIgYXR0IGNoZWNrYSBpblxuIgogCi0jOiB3dC1zdGF0dXMuYzo3NjcKLW1zZ2lkICIgKHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaykiCi1tc2dzdHIgIiAoYW52w6RuZCBcImdpdCBhZGRcIiBmw7ZyIGF0dCBzcMOlcmEpIgotCi0jOiB3dC1zdGF0dXMuYzo3Njkgd3Qtc3RhdHVzLmM6NzcyIHd0LXN0YXR1cy5jOjc3NQorIzogd3Qtc3RhdHVzLmM6MTI1MQogIywgYy1mb3JtYXQKLW1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCVzXG4iCi1tc2dzdHIgImluZ2V0IGF0dCBjaGVja2EgaW4lc1xuIgorbXNnaWQgIiIKKyJub3RoaW5nIGFkZGVkIHRvIGNvbW1pdCBidXQgdW50cmFja2VkIGZpbGVzIHByZXNlbnQgKHVzZSBcImdpdCBhZGRcIiB0byAiCisidHJhY2spXG4iCittc2dzdHIgIiIKKyJpbmdldCBrw7ZhdCBmw7ZyIGluY2hlY2tuaW5nLCBtZW4gb3Nww6VyYWRlIGZpbGVyIGZpbm5zIChzcMOlcmEgbWVkIFwiZ2l0IGFkZCIKKyJcIilcbiIKIAotIzogd3Qtc3RhdHVzLmM6NzcwCi1tc2dpZCAiIChjcmVhdGUvY29weSBmaWxlcyBhbmQgdXNlIFwiZ2l0IGFkZFwiIHRvIHRyYWNrKSIKLW1zZ3N0ciAiIChza2FwYS9rb3BpZXJhIGZpbGVyIG9jaCBhbnbDpG5kIFwiZ2l0IGFkZFwiIGbDtnIgYXR0IHNww6VyYSkiCisjOiB3dC1zdGF0dXMuYzoxMjU0CisjLCBjLWZvcm1hdAorbXNnaWQgIm5vdGhpbmcgYWRkZWQgdG8gY29tbWl0IGJ1dCB1bnRyYWNrZWQgZmlsZXMgcHJlc2VudFxuIgorbXNnc3RyICJpbmdldCBrw7ZhdCBmw7ZyIGluY2hlY2tuaW5nLCBtZW4gb3Nww6VyYWRlIGZpbGVyIGZpbm5zXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjc3MwotbXNnaWQgIiAodXNlIC11IHRvIHNob3cgdW50cmFja2VkIGZpbGVzKSIKLW1zZ3N0ciAiIChhbnbDpG5kIC11IGbDtnIgYXR0IHZpc2Egb3Nww6VyYWRlIGZpbGVyKSIKKyM6IHd0LXN0YXR1cy5jOjEyNTcKKyMsIGMtZm9ybWF0Cittc2dpZCAibm90aGluZyB0byBjb21taXQgKGNyZWF0ZS9jb3B5IGZpbGVzIGFuZCB1c2UgXCJnaXQgYWRkXCIgdG8gdHJhY2spXG4iCittc2dzdHIgImluZ2V0IGF0dCBjaGVja2EgaW4gKHNrYXBhL2tvcGllcmEgZmlsZXIgb2NoIHNww6VyYSBtZWQgXCJnaXQgYWRkXCIpXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjc3NgotbXNnaWQgIiAod29ya2luZyBkaXJlY3RvcnkgY2xlYW4pIgotbXNnc3RyICIgKGFyYmV0c2thdGFsb2dlbiByZW4pIgorIzogd3Qtc3RhdHVzLmM6MTI2MCB3dC1zdGF0dXMuYzoxMjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIm5vdGhpbmcgdG8gY29tbWl0XG4iCittc2dzdHIgImluZ2V0IGF0dCBjaGVja2EgaW5cbiIKIAotIzogd3Qtc3RhdHVzLmM6ODg0CisjOiB3dC1zdGF0dXMuYzoxMjYzCisjLCBjLWZvcm1hdAorbXNnaWQgIm5vdGhpbmcgdG8gY29tbWl0ICh1c2UgLXUgdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpXG4iCittc2dzdHIgImluZ2V0IGF0dCBjaGVja2EgaW4gKGFudsOkbmQgLXUgZsO2ciBhdHQgdmlzYSBvc3DDpXJhZGUgZmlsZXIpXG4iCisKKyM6IHd0LXN0YXR1cy5jOjEyNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAibm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgZGlyZWN0b3J5IGNsZWFuXG4iCittc2dzdHIgImluZ2V0IGF0dCBjaGVja2EgaW4sIGFyYmV0c2thdGFsb2dlbiByZW5cbiIKKworIzogd3Qtc3RhdHVzLmM6MTM3NQogbXNnaWQgIkhFQUQgKG5vIGJyYW5jaCkiCiBtc2dzdHIgIkhFQUQgKGluZ2VuIGdyZW4pIgogCi0jOiB3dC1zdGF0dXMuYzo4OTAKKyM6IHd0LXN0YXR1cy5jOjEzODEKIG1zZ2lkICJJbml0aWFsIGNvbW1pdCBvbiAiCiBtc2dzdHIgIkbDtnJzdGEgaW5jaGVja25pbmcgcMOlICIKIAotIzogd3Qtc3RhdHVzLmM6OTA1CisjOiB3dC1zdGF0dXMuYzoxMzk2CiBtc2dpZCAiYmVoaW5kICIKIG1zZ3N0ciAiZWZ0ZXIgIgogCi0jOiB3dC1zdGF0dXMuYzo5MDggd3Qtc3RhdHVzLmM6OTExCisjOiB3dC1zdGF0dXMuYzoxMzk5IHd0LXN0YXR1cy5jOjE0MDIKIG1zZ2lkICJhaGVhZCAiCiBtc2dzdHIgImbDtnJlICIKIAotIzogd3Qtc3RhdHVzLmM6OTEzCisjOiB3dC1zdGF0dXMuYzoxNDA0CiBtc2dpZCAiLCBiZWhpbmQgIgogbXNnc3RyICIsIGVmdGVyICIKIAotIzogYnVpbHRpbi9hZGQuYzo2MgorIzogY29tcGF0L3ByZWNvbXBvc2VfdXRmOC5jOjU4IGJ1aWx0aW4vY2xvbmUuYzozNTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmFpbGVkIHRvIHVubGluayAnJXMnIgorbXNnc3RyICJtaXNzbHlja2FkZXMgdGEgYm9ydCBsw6Rua2VuIFwiJXNcIiIKKworIzogYnVpbHRpbi9hZGQuYzoyMAorbXNnaWQgImdpdCBhZGQgW29wdGlvbnNdIFstLV0gPHBhdGhzcGVjPi4uLiIKK21zZ3N0ciAiZ2l0IGFkZCBbZmxhZ2dvcl0gWy0tXSA8c8O2a3bDpGc+Li4uIgorCisjLgorIy4gKiBUbyBiZSBjb25zaXN0ZW50IHdpdGggImdpdCBhZGQgLXAiIGFuZCBtb3N0IEdpdAorIy4gKiBjb21tYW5kcywgd2Ugc2hvdWxkIGRlZmF1bHQgdG8gYmVpbmcgdHJlZS13aWRlLCBidXQKKyMuICogdGhpcyBpcyBub3QgdGhlIG9yaWdpbmFsIGJlaGF2aW9yIGFuZCBjYW4ndCBiZQorIy4gKiBjaGFuZ2VkIHVudGlsIHVzZXJzIHRyYWluZWQgdGhlbXNlbHZlcyBub3QgdG8gdHlwZQorIy4gKiAiZ2l0IGFkZCAtdSIgb3IgImdpdCBhZGQgLUEiLiBGb3Igbm93LCB3ZSB3YXJuIGFuZAorIy4gKiBrZWVwIHRoZSBvbGQgYmVoYXZpb3IuIExhdGVyLCB0aGUgYmVoYXZpb3IgY2FuIGJlIGNoYW5nZWQKKyMuICogdG8gdHJlZS13aWRlLCBrZWVwaW5nIHRoZSB3YXJuaW5nIGZvciBhIHdoaWxlLCBhbmQKKyMuICogZXZlbnR1YWxseSB3ZSBjYW4gZHJvcCB0aGUgd2FybmluZy4KKyMuCisjOiBidWlsdGluL2FkZC5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgYmVoYXZpb3Igb2YgJ2dpdCBhZGQgJXMgKG9yICVzKScgd2l0aCBubyBwYXRoIGFyZ3VtZW50IGZyb20gYVxuIgorInN1YmRpcmVjdG9yeSBvZiB0aGUgdHJlZSB3aWxsIGNoYW5nZSBpbiBHaXQgMi4wIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgIgorImFueW1vcmUuXG4iCisiVG8gYWRkIGNvbnRlbnQgZm9yIHRoZSB3aG9sZSB0cmVlLCBydW46XG4iCisiXG4iCisiICBnaXQgYWRkICVzIDovXG4iCisiICAob3IgZ2l0IGFkZCAlcyA6LylcbiIKKyJcbiIKKyJUbyByZXN0cmljdCB0aGUgY29tbWFuZCB0byB0aGUgY3VycmVudCBkaXJlY3RvcnksIHJ1bjpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgLlxuIgorIiAgKG9yIGdpdCBhZGQgJXMgLilcbiIKKyJcbiIKKyJXaXRoIHRoZSBjdXJyZW50IEdpdCB2ZXJzaW9uLCB0aGUgY29tbWFuZCBpcyByZXN0cmljdGVkIHRvIHRoZSBjdXJyZW50ICIKKyJkaXJlY3RvcnkuXG4iCittc2dzdHIgIiIKKyJCZXRlZW5kZXQgZsO2ciBcImdpdCBhZGQgJXMgKGVsbGVyICVzKVwiIHV0YW4gc8O2a3bDpGdzYXJndW1lbnQgZnLDpW4gZW5cbiIKKyJ1bmRlcmthdGFsb2cgaSBldHQgdHLDpGQga29tbWVyIMOkbmRyYXMgaSBHaXQgMi4wIG9jaCBiw7ZyIGludGUgbMOkbmdyZSAiCisiYW52w6RuZGFzLlxuIgorIkbDtnIgYXR0IGzDpGdnYSB0aWxsIGlubmVow6VsbGV0IGbDtnIgaGVsYSB0csOkZGV0LCBhbnbDpG5kOlxuIgorIlxuIgorIiAgZ2l0IGFkZCAlcyA6L1xuIgorIiAgKGVsbGVyIGdpdCBhZGQgJXMgOi8pXG4iCisiXG4iCisiRsO2ciBhdHQgYmVncsOkbnNhIGtvbW1hbmRvdCB0aWxsIGFrdHVlbGwga2F0YWxvZywgYW52w6RuZDpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgLlxuIgorIiAgKGVsbGVyIGdpdCBhZGQgJXMgLilcbiIKKyJcbiIKKyJJIG51dmFyYW5kZSB2ZXJzaW9uIGF2IEdpdCBiZWdyw6Ruc2FzIGtvbW1hbmRvdCB0aWxsIGFrdHVlbGwga2F0YWxvZy5cbiIKKworIzogYnVpbHRpbi9hZGQuYzoxMDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIllvdSByYW4gJ2dpdCBhZGQnIHdpdGggbmVpdGhlciAnLUEgKC0tYWxsKScgb3IgJy0taWdub3JlLXJlbW92YWwnLFxuIgorIndob3NlIGJlaGF2aW91ciB3aWxsIGNoYW5nZSBpbiBHaXQgMi4wIHdpdGggcmVzcGVjdCB0byBwYXRocyB5b3UgcmVtb3ZlZC5cbiIKKyJQYXRocyBsaWtlICclcycgdGhhdCBhcmVcbiIKKyJyZW1vdmVkIGZyb20geW91ciB3b3JraW5nIHRyZWUgYXJlIGlnbm9yZWQgd2l0aCB0aGlzIHZlcnNpb24gb2YgR2l0LlxuIgorIlxuIgorIiogJ2dpdCBhZGQgLS1pZ25vcmUtcmVtb3ZhbCA8cGF0aHNwZWM+Jywgd2hpY2ggaXMgdGhlIGN1cnJlbnQgZGVmYXVsdCxcbiIKKyIgIGlnbm9yZXMgcGF0aHMgeW91IHJlbW92ZWQgZnJvbSB5b3VyIHdvcmtpbmcgdHJlZS5cbiIKKyJcbiIKKyIqICdnaXQgYWRkIC0tYWxsIDxwYXRoc3BlYz4nIHdpbGwgbGV0IHlvdSBhbHNvIHJlY29yZCB0aGUgcmVtb3ZhbHMuXG4iCisiXG4iCisiUnVuICdnaXQgc3RhdHVzJyB0byBjaGVjayB0aGUgcGF0aHMgeW91IHJlbW92ZWQgZnJvbSB5b3VyIHdvcmtpbmcgdHJlZS5cbiIKK21zZ3N0ciAiIgorIkR1IGvDtnJkZSBcImdpdCBhZGRcIiB1dGFuIHZhcmtlbiBcIi1BICgtLWFsbClcIiBlbGxlciBcIi0taWdub3JlLXJlbW92YWxcIi5cbiIKKyJCZXRlZW5kZXQga29tbWVyIMOkbmRyYXMgaSBHaXQgMi4wIHZhZCBnw6RsbGVyIHPDtmt2w6RnYXIgZHUgdGFnaXQgYm9ydC5cbiIKKyJTw7ZrdsOkZ2FyIHNvbSBcIiVzXCIsIHNvbSBoYXJcbiIKKyJ0YWdpdHMgYm9ydCBmcsOlbiBkaW4gYXJiZXRza2F0YWxvZyBpZ25vcmVyYXMgaSBkZW4gaMOkciB2ZXJzaW9uZW4gYXYgR2l0LlxuIgorIlxuIgorIiogXCJnaXQgYWRkIC0taWdub3JlLXJlbW92YWwgPHPDtmt2w6RnPlwiLCBzb20gw6RyIGbDtnJ2YWxldCBqdXN0IG51LFxuIgorIiAgaWdub3JlcmFyIHPDtmt2w6RnYXIgZHUgaGFyIHRhZ2l0IGJvcnQgZnLDpW4gYXJiZXRza2F0YWxvZ2VuLlxuIgorIlxuIgorIiogXCJnaXQgYWRkIC0tYWxsIDxzw7ZrdsOkZz5cIiBsw6V0ZXIgZGlnIMOkdmVuIHJlZ2lzdHJlcmEgYm9ydHRhZ25pbmdhcm5hLlxuIgorIlxuIgorIkvDtnIgXCJnaXQgc3RhdHVzXCIgZsO2ciBhdHQga29udHJvbGxlcmEgc8O2a3bDpGdhcm5hIGR1IHRhZ2l0IGJvcnQgZnLDpW5cbiIKKyJhcmJldHNrYXRhbG9nZW4uXG4iCisKKyM6IGJ1aWx0aW4vYWRkLmM6MTQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuZXhwZWN0ZWQgZGlmZiBzdGF0dXMgJWMiCiBtc2dzdHIgImRpZmYtc3RhdHVzICVjIGbDtnJ2w6RudGFkZXMgaW50ZSIKIAotIzogYnVpbHRpbi9hZGQuYzo2NyBidWlsdGluL2NvbW1pdC5jOjI5OAorIzogYnVpbHRpbi9hZGQuYzoxNDkgYnVpbHRpbi9jb21taXQuYzoyMzMKIG1zZ2lkICJ1cGRhdGluZyBmaWxlcyBmYWlsZWQiCiBtc2dzdHIgIm1pc3NseWNrYWRlcyB1cHBkYXRlcmEgZmlsZXIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NzcKKyM6IGJ1aWx0aW4vYWRkLmM6MTYzCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlbW92ZSAnJXMnXG4iCiBtc2dzdHIgInRhIGJvcnQgXCIlc1wiXG4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MTc2Ci0jLCBjLWZvcm1hdAotbXNnaWQgIlBhdGggJyVzJyBpcyBpbiBzdWJtb2R1bGUgJyUuKnMnIgotbXNnc3RyICJTw7ZrdsOkZ2VuIFwiJXNcIiDDpHIgaSB1bmRlcm1vZHVsZW4gXCIlLipzXCIiCi0KLSM6IGJ1aWx0aW4vYWRkLmM6MTkyCisjOiBidWlsdGluL2FkZC5jOjI1MwogbXNnaWQgIlVuc3RhZ2VkIGNoYW5nZXMgYWZ0ZXIgcmVmcmVzaGluZyB0aGUgaW5kZXg6IgogbXNnc3RyICJPc3DDpXJhZGUgw6RuZHJpbmdhciBlZnRlciBhdHQgaGEgdXBwZGF0ZXJhdCBpbmRleGV0OiIKIAotIzogYnVpbHRpbi9hZGQuYzoxOTUgYnVpbHRpbi9hZGQuYzo0NTYgYnVpbHRpbi9ybS5jOjE4NgorIzogYnVpbHRpbi9hZGQuYzoyNTYgYnVpbHRpbi9hZGQuYzo1NzIgYnVpbHRpbi9ybS5jOjI3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoc3BlYyAnJXMnIGRpZCBub3QgbWF0Y2ggYW55IGZpbGVzIgogbXNnc3RyICJzw7ZrdsOkZ3NhbmdpdmVsc2VuIFwiJXNcIiBtb3RzdmFyYWRlIGludGUgbsOlZ3JhIGZpbGVyIgogCi0jOiBidWlsdGluL2FkZC5jOjIwOQotIywgYy1mb3JtYXQKLW1zZ2lkICInJXMnIGlzIGJleW9uZCBhIHN5bWJvbGljIGxpbmsiCi1tc2dzdHIgIlwiJXNcIiDDpHIgcMOlIGFuZHJhIHNpZGFuIGF2IGVuIHN5bWJvbGlzayBsw6RuayIKLQotIzogYnVpbHRpbi9hZGQuYzoyNzYKKyM6IGJ1aWx0aW4vYWRkLmM6MzM5CiBtc2dpZCAiQ291bGQgbm90IHJlYWQgdGhlIGluZGV4IgogbXNnc3RyICJLdW5kZSBpbnRlIGzDpHNhIGluZGV4ZXQiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mjg2CisjOiBidWlsdGluL2FkZC5jOjM0OQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiAnJXMnIGZvciB3cml0aW5nLiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSDDtnBwbmEgXCIlc1wiIGbDtnIgc2tyaXZuaW5nIgogCi0jOiBidWlsdGluL2FkZC5jOjI5MAorIzogYnVpbHRpbi9hZGQuYzozNTMKIG1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgcGF0Y2giCiBtc2dzdHIgIkt1bmRlIGludGUgc2tyaXZhIHBhdGNoIgogCi0jOiBidWlsdGluL2FkZC5jOjI5NQorIzogYnVpbHRpbi9hZGQuYzozNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHN0YXQgJyVzJyIKIG1zZ3N0ciAiS3VuZGUgaW50ZSB0YSBzdGF0dXMgcMOlIFwiJXNcIiIKIAotIzogYnVpbHRpbi9hZGQuYzoyOTcKKyM6IGJ1aWx0aW4vYWRkLmM6MzYwCiBtc2dpZCAiRW1wdHkgcGF0Y2guIEFib3J0ZWQuIgogbXNnc3RyICJUb20gcGF0Y2guIEF2YnJ5dGVyLiIKIAotIzogYnVpbHRpbi9hZGQuYzozMDMKKyM6IGJ1aWx0aW4vYWRkLmM6MzY2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBhcHBseSAnJXMnIgotbXNnc3RyICJLdW5kZSBpbnRlIGFwcGxpY2VyYSBcIiVzXCIiCittc2dzdHIgIkt1bmRlIGludGUgdGlsbMOkbXBhIFwiJXNcIiIKIAotIzogYnVpbHRpbi9hZGQuYzozMTIKKyM6IGJ1aWx0aW4vYWRkLmM6Mzc2CiBtc2dpZCAiVGhlIGZvbGxvd2luZyBwYXRocyBhcmUgaWdub3JlZCBieSBvbmUgb2YgeW91ciAuZ2l0aWdub3JlIGZpbGVzOlxuIgogbXNnc3RyICJGw7ZsamFuZGUgc8O2a3bDpGdhciBpZ25vcmVyYXMgYXYgZW4gYXYgZGluYSAuZ2l0aWdub3JlLWZpbGVyOlxuIgogCi0jOiBidWlsdGluL2FkZC5jOjM1MgorIzogYnVpbHRpbi9hZGQuYzozOTMgYnVpbHRpbi9jbGVhbi5jOjE2MSBidWlsdGluL2ZldGNoLmM6NzggYnVpbHRpbi9tdi5jOjYzCisjOiBidWlsdGluL3BydW5lLXBhY2tlZC5jOjc2IGJ1aWx0aW4vcHVzaC5jOjQyNSBidWlsdGluL3JlbW90ZS5jOjEyNTMKKyM6IGJ1aWx0aW4vcm0uYzoyMDYKK21zZ2lkICJkcnkgcnVuIgorbXNnc3RyICJ0ZXN0a8O2cm5pbmciCisKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk0IGJ1aWx0aW4vYXBwbHkuYzo0NDA5IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1MiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo5NSBidWlsdGluL2ZzY2suYzo2MTMKKyM6IGJ1aWx0aW4vbG9nLmM6MTUxOCBidWlsdGluL212LmM6NjIgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTIKK21zZ2lkICJiZSB2ZXJib3NlIgorbXNnc3RyICJ2YXIgcHJhdHNhbSIKKworIzogYnVpbHRpbi9hZGQuYzozOTYKK21zZ2lkICJpbnRlcmFjdGl2ZSBwaWNraW5nIgorbXNnc3RyICJwbG9ja2EgaW50ZXJha3RpdnQiCisKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk3IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYzIGJ1aWx0aW4vcmVzZXQuYzoyNTgKK21zZ2lkICJzZWxlY3QgaHVua3MgaW50ZXJhY3RpdmVseSIKK21zZ3N0ciAidsOkbGogc3R5Y2tlbiBpbnRlcmFrdGl2dCIKKworIzogYnVpbHRpbi9hZGQuYzozOTgKK21zZ2lkICJlZGl0IGN1cnJlbnQgZGlmZiBhbmQgYXBwbHkiCittc2dzdHIgInJlZGlnZXJhIGFrdHVlbGwgZGlmZiBvY2ggYXBwbGljZXJhIgorCisjOiBidWlsdGluL2FkZC5jOjM5OQorbXNnaWQgImFsbG93IGFkZGluZyBvdGhlcndpc2UgaWdub3JlZCBmaWxlcyIKK21zZ3N0ciAidGlsbMOldCBsw6RnZ2EgdGlsbCBhbm5hcnMgaWdub3JlcmFkZSBmaWxlciIKKworIzogYnVpbHRpbi9hZGQuYzo0MDAKK21zZ2lkICJ1cGRhdGUgdHJhY2tlZCBmaWxlcyIKK21zZ3N0ciAidXBwZGF0ZXJhIHNww6VyYWRlIGZpbGVyIgorCisjOiBidWlsdGluL2FkZC5jOjQwMQorbXNnaWQgInJlY29yZCBvbmx5IHRoZSBmYWN0IHRoYXQgdGhlIHBhdGggd2lsbCBiZSBhZGRlZCBsYXRlciIKK21zZ3N0ciAicmVnaXN0cmVyYSBlbmRhc3QgYXR0IHPDtmt2w6RnZW4ga29tbWVyIGzDpGdnYXMgdGlsbCBzZW5hcmUiCisKKyM6IGJ1aWx0aW4vYWRkLmM6NDAyCittc2dpZCAiYWRkIGNoYW5nZXMgZnJvbSBhbGwgdHJhY2tlZCBhbmQgdW50cmFja2VkIGZpbGVzIgorbXNnc3RyICJsw6RnZyB0aWxsIMOkbmRyaW5nYXIgZnLDpW4gYWxsYSBzcMOlcmFkZSBvY2ggb3Nww6VyYWRlIGZpbGVyIgorCisjLiB0YWtlcyBubyBhcmd1bWVudHMKKyM6IGJ1aWx0aW4vYWRkLmM6NDA1Cittc2dpZCAiaWdub3JlIHBhdGhzIHJlbW92ZWQgaW4gdGhlIHdvcmtpbmcgdHJlZSAoc2FtZSBhcyAtLW5vLWFsbCkiCittc2dzdHIgImlnbm9yZXJhIHPDtmt2w6RnYXIgYm9ydHRhZ25hIGkgYXJiZXRza2F0YWxvZ2VuIChzYW1tYSBzb20gLS1uby1hbGwpIgorCisjOiBidWlsdGluL2FkZC5jOjQwNworbXNnaWQgImRvbid0IGFkZCwgb25seSByZWZyZXNoIHRoZSBpbmRleCIKK21zZ3N0ciAibMOkZ2cgaW50ZSB0aWxsLCB1cHBkYXRlcmEgZW5kYXN0IGluZGV4ZXQiCisKKyM6IGJ1aWx0aW4vYWRkLmM6NDA4Cittc2dpZCAianVzdCBza2lwIGZpbGVzIHdoaWNoIGNhbm5vdCBiZSBhZGRlZCBiZWNhdXNlIG9mIGVycm9ycyIKK21zZ3N0ciAiaG9wcGEgYmFyYSDDtnZlciBmaWxlciBzb20gaW50ZSBrYW4gbMOkZ2dhcyB0aWxsIHDDpSBncnVuZCBhdiBmZWwiCisKKyM6IGJ1aWx0aW4vYWRkLmM6NDA5Cittc2dpZCAiY2hlY2sgaWYgLSBldmVuIG1pc3NpbmcgLSBmaWxlcyBhcmUgaWdub3JlZCBpbiBkcnkgcnVuIgorbXNnc3RyICJzZSBvbSAtIMOkdmVuIHNha25hZGUgLSBmaWxlciBpZ25vcmVyYXMgaSB0ZXN0a8O2cm5pbmciCisKKyM6IGJ1aWx0aW4vYWRkLmM6NDMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVzZSAtZiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gYWRkIHRoZW0uXG4iCiBtc2dzdHIgIkFudsOkbmQgLWYgb20gZHUgdmVya2xpZ2VuIHZpbGwgbMOkZ2dhIHRpbGwgZGVtLlxuIgogCi0jOiBidWlsdGluL2FkZC5jOjM1MworIzogYnVpbHRpbi9hZGQuYzo0MzIKIG1zZ2lkICJubyBmaWxlcyBhZGRlZCIKIG1zZ3N0ciAiaW5nYSBmaWxlciBoYXIgbGFndHMgdGlsbCIKIAotIzogYnVpbHRpbi9hZGQuYzozNTkKKyM6IGJ1aWx0aW4vYWRkLmM6NDM4CiBtc2dpZCAiYWRkaW5nIGZpbGVzIGZhaWxlZCIKIG1zZ3N0ciAibWlzc2x5Y2thZGVzIGzDpGdnYSB0aWxsIGZpbGVyIgogCi0jOiBidWlsdGluL2FkZC5jOjM5MQorIzogYnVpbHRpbi9hZGQuYzo0NzcKIG1zZ2lkICItQSBhbmQgLXUgYXJlIG11dHVhbGx5IGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLUEgb2NoIC11IMOkciDDtm1zZXNpZGlndCBpbmtvbXBhdGlibGEiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzkzCisjOiBidWlsdGluL2FkZC5jOjQ5NQogbXNnaWQgIk9wdGlvbiAtLWlnbm9yZS1taXNzaW5nIGNhbiBvbmx5IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCAtLWRyeS1ydW4iCiBtc2dzdHIgIkZsYWdnYW4gLS1pZ25vcmUtbWlzc2luZyBrYW4gZW5kYXN0IGFudsOkbmRhcyB0aWxsc2FtbWFucyBtZWQgLS1kcnktcnVuIgogCi0jOiBidWlsdGluL2FkZC5jOjQxMworIzogYnVpbHRpbi9hZGQuYzo1MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90aGluZyBzcGVjaWZpZWQsIG5vdGhpbmcgYWRkZWQuXG4iCiBtc2dzdHIgIkluZ2V0IGFuZ2l2ZXQsIGluZ2V0IHRpbGxhZ3QuXG4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDE0CisjOiBidWlsdGluL2FkZC5jOjUyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJNYXliZSB5b3Ugd2FudGVkIHRvIHNheSAnZ2l0IGFkZCAuJz9cbiIKIG1zZ3N0ciAiS2Fuc2tlIG1lbmFkZSBkdSBhdHQgc2tyaXZhIFwiZ2l0IGFkZCAuXCI/XG4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDIwIGJ1aWx0aW4vY2xlYW4uYzo5NSBidWlsdGluL2NvbW1pdC5jOjM1OCBidWlsdGluL212LmM6ODIKLSM6IGJ1aWx0aW4vcm0uYzoxNjIKKyM6IGJ1aWx0aW4vYWRkLmM6NTMyIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6NjYgYnVpbHRpbi9jbGVhbi5jOjIwNAorIzogYnVpbHRpbi9jb21taXQuYzoyOTMgYnVpbHRpbi9tdi5jOjgyIGJ1aWx0aW4vcm0uYzoyMzUKIG1zZ2lkICJpbmRleCBmaWxlIGNvcnJ1cHQiCiBtc2dzdHIgImluZGV4ZmlsZW4gdHJhc2lnIgogCi0jOiBidWlsdGluL2FkZC5jOjQ3NiBidWlsdGluL212LmM6MjI5IGJ1aWx0aW4vcm0uYzoyNjAKKyM6IGJ1aWx0aW4vYWRkLmM6NjA0IGJ1aWx0aW4vYXBwbHkuYzo0NTA1IGJ1aWx0aW4vbXYuYzoyMjkgYnVpbHRpbi9ybS5jOjM3MAogbXNnaWQgIlVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBza3JpdmEgbnkgaW5kZXhmaWwiCiAKKyM6IGJ1aWx0aW4vYXBwbHkuYzo1NworbXNnaWQgImdpdCBhcHBseSBbb3B0aW9uc10gWzxwYXRjaD4uLi5dIgorbXNnc3RyICJnaXQgYXBwbHkgW2ZsYWdnb3JdIFs8cGF0Y2g+Li4uXSIKKworIzogYnVpbHRpbi9hcHBseS5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJ1bnJlY29nbml6ZWQgd2hpdGVzcGFjZSBvcHRpb24gJyVzJyIKK21zZ3N0ciAib2vDpG50IGFsdGVybmF0aXYgZsO2ciB3aGl0ZXNwYWNlOiBcIiVzXCIiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxMjUKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5yZWNvZ25pemVkIHdoaXRlc3BhY2UgaWdub3JlIG9wdGlvbiAnJXMnIgorbXNnc3RyICJva8OkbnQgYWx0ZXJuYXRpdiBmw7ZyIGlnbm9yZS13aGl0ZXNwYWNlOiBcIiVzXCIiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo4MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHByZXBhcmUgdGltZXN0YW1wIHJlZ2V4cCAlcyIKK21zZ3N0ciAiS2FuIGludGUgZsO2cmJlcmVkYSByZWd1bGrDpHJ0IHV0dHJ5Y2sgZsO2ciB0aWRzc3TDpG1wZWxuICVzIgorCisjOiBidWlsdGluL2FwcGx5LmM6ODMyCisjLCBjLWZvcm1hdAorbXNnaWQgInJlZ2V4ZWMgcmV0dXJuZWQgJWQgZm9yIGlucHV0OiAlcyIKK21zZ3N0ciAicmVnZXhlYyByZXR1cm5lcmFkZSAlZCBmw7ZyIGluZGF0YTogJXMiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo5MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIGZpbmQgZmlsZW5hbWUgaW4gcGF0Y2ggYXQgbGluZSAlZCIKK21zZ3N0ciAia2FuIGludGUgaGl0dGEgZmlsbmFtbiBpIHBhdGNoZW4gcMOlIHJhZCAlZCIKKworIzogYnVpbHRpbi9hcHBseS5jOjk0NQorIywgYy1mb3JtYXQKK21zZ2lkICJnaXQgYXBwbHk6IGJhZCBnaXQtZGlmZiAtIGV4cGVjdGVkIC9kZXYvbnVsbCwgZ290ICVzIG9uIGxpbmUgJWQiCittc2dzdHIgImdpdCBhcHBseTogZMOlbGlnIGdpdC1kaWZmIC0gZsO2cnbDpG50YWRlIC9kZXYvbnVsbCwgZmljayAlcyBww6UgcmFkICVkIgorCisjOiBidWlsdGluL2FwcGx5LmM6OTQ5CisjLCBjLWZvcm1hdAorbXNnaWQgImdpdCBhcHBseTogYmFkIGdpdC1kaWZmIC0gaW5jb25zaXN0ZW50IG5ldyBmaWxlbmFtZSBvbiBsaW5lICVkIgorbXNnc3RyICJnaXQgYXBwbHk6IGTDpWxpZyBnaXQtZGlmZiAtIG1vdHPDpGdhbmRlIG55dHQgZmlsbmFtbiBww6UgcmFkICVkIgorCisjOiBidWlsdGluL2FwcGx5LmM6OTUwCisjLCBjLWZvcm1hdAorbXNnaWQgImdpdCBhcHBseTogYmFkIGdpdC1kaWZmIC0gaW5jb25zaXN0ZW50IG9sZCBmaWxlbmFtZSBvbiBsaW5lICVkIgorbXNnc3RyICJnaXQgYXBwbHk6IGTDpWxpZyBnaXQtZGlmZiAtIG1vdHPDpGdhbmRlIGdhbW1hbHQgZmlsbmFtbiBww6UgcmFkICVkIgorCisjOiBidWlsdGluL2FwcGx5LmM6OTU3CisjLCBjLWZvcm1hdAorbXNnaWQgImdpdCBhcHBseTogYmFkIGdpdC1kaWZmIC0gZXhwZWN0ZWQgL2Rldi9udWxsIG9uIGxpbmUgJWQiCittc2dzdHIgImdpdCBhcHBseTogZMOlbGlnIGdpdC1kaWZmIC0gZsO2cnbDpG50YWRlIC9kZXYvbnVsbCBww6UgcmFkICVkIgorCisjOiBidWlsdGluL2FwcGx5LmM6MTQyMgorIywgYy1mb3JtYXQKK21zZ2lkICJyZWNvdW50OiB1bmV4cGVjdGVkIGxpbmU6ICUuKnMiCittc2dzdHIgInJlY291bnQ6IGbDtnJ2w6RudGFkZSByYWQ6ICUuKnMiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNDc5CisjLCBjLWZvcm1hdAorbXNnaWQgInBhdGNoIGZyYWdtZW50IHdpdGhvdXQgaGVhZGVyIGF0IGxpbmUgJWQ6ICUuKnMiCittc2dzdHIgInBhdGNoLWZyYWdtZW50IHV0YW4gaHV2dWQgcMOlIHJhZCAlZDogJS4qcyIKKworIzogYnVpbHRpbi9hcHBseS5jOjE0OTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImdpdCBkaWZmIGhlYWRlciBsYWNrcyBmaWxlbmFtZSBpbmZvcm1hdGlvbiB3aGVuIHJlbW92aW5nICVkIGxlYWRpbmcgcGF0aG5hbWUgIgorImNvbXBvbmVudCAobGluZSAlZCkiCittc2dpZF9wbHVyYWwgIiIKKyJnaXQgZGlmZiBoZWFkZXIgbGFja3MgZmlsZW5hbWUgaW5mb3JtYXRpb24gd2hlbiByZW1vdmluZyAlZCBsZWFkaW5nIHBhdGhuYW1lICIKKyJjb21wb25lbnRzIChsaW5lICVkKSIKK21zZ3N0clswXSAiIgorImdpdC1kaWZmLWh1dnVkZXQgc2FrbmFyIGZpbG5hbW5zaW5mb3JtYXRpb24gbsOkciAlZCBsZWRhbmRlIHPDtmt2w6Rnc2tvbXBvbmVudFxuIgorInRhcyBib3J0IChyYWQgJWQpIgorbXNnc3RyWzFdICIiCisiZ2l0LWRpZmYtaHV2dWRldCBzYWtuYXIgZmlsbmFtbnNpbmZvcm1hdGlvbiBuw6RyICVkIGxlZGFuZGUgIgorInPDtmt2w6Rnc2tvbXBvbmVudGVyXG4iCisidGFzIGJvcnQgKHJhZCAlZCkiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU2Cittc2dpZCAibmV3IGZpbGUgZGVwZW5kcyBvbiBvbGQgY29udGVudHMiCittc2dzdHIgIm55IGZpbCBiZXJvciBww6UgZ2FtbWFsdCBpbm5laMOlbGwiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU4Cittc2dpZCAiZGVsZXRlZCBmaWxlIHN0aWxsIGhhcyBjb250ZW50cyIKK21zZ3N0ciAiYm9ydHRhZ2VuIGZpbCBoYXIgZm9ydGZhcmFuZGUgaW5uZWjDpWxsIgorCisjOiBidWlsdGluL2FwcGx5LmM6MTY4NAorIywgYy1mb3JtYXQKK21zZ2lkICJjb3JydXB0IHBhdGNoIGF0IGxpbmUgJWQiCittc2dzdHIgInRyYXNpZyBwYXRjaCBww6UgcmFkICVkIgorCisjOiBidWlsdGluL2FwcGx5LmM6MTcyMAorIywgYy1mb3JtYXQKK21zZ2lkICJuZXcgZmlsZSAlcyBkZXBlbmRzIG9uIG9sZCBjb250ZW50cyIKK21zZ3N0ciAibnlhIGZpbGVuICVzIGJlcm9yIHDDpSBnYW1tYWx0IGlubmVow6VsbCIKKworIzogYnVpbHRpbi9hcHBseS5jOjE3MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZGVsZXRlZCBmaWxlICVzIHN0aWxsIGhhcyBjb250ZW50cyIKK21zZ3N0ciAiYm9ydHRhZ25hIGZpbGVuICVzIGhhciBmb3J0ZmFyYW5kZSBpbm5laMOlbGwiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNzI1CisjLCBjLWZvcm1hdAorbXNnaWQgIioqIHdhcm5pbmc6IGZpbGUgJXMgYmVjb21lcyBlbXB0eSBidXQgaXMgbm90IGRlbGV0ZWQiCittc2dzdHIgIioqIHZhcm5pbmc6IGZpbGVuICVzIGJsaXIgdG9tIG1lbiBoYXIgaW50ZSB0YWdpdHMgYm9ydCIKKworIzogYnVpbHRpbi9hcHBseS5jOjE4NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiY29ycnVwdCBiaW5hcnkgcGF0Y2ggYXQgbGluZSAlZDogJS4qcyIKK21zZ3N0ciAidHJhc2lnIGJpbsOkcnBhdGNoIHDDpSByYWQgJWQ6ICUuKnMiCisKKyMuIHRoZXJlIGhhcyB0byBiZSBvbmUgaHVuayAoZm9yd2FyZCBodW5rKQorIzogYnVpbHRpbi9hcHBseS5jOjE5MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5yZWNvZ25pemVkIGJpbmFyeSBwYXRjaCBhdCBsaW5lICVkIgorbXNnc3RyICJiaW7DpHJwYXRjaGVuIHDDpSByYWQgJWQga8Okbm5zIGludGUgaWdlbiIKKworIzogYnVpbHRpbi9hcHBseS5jOjE5ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAicGF0Y2ggd2l0aCBvbmx5IGdhcmJhZ2UgYXQgbGluZSAlZCIKK21zZ3N0ciAicGF0Y2ggbWVkIGJhcmEgc2tyw6RwIHDDpSByYWQgJWQiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyMDc2CisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byByZWFkIHN5bWxpbmsgJXMiCittc2dzdHIgImt1bmRlIGludGUgbMOkc2Egc3ltYm9saXNrYSBsw6Rua2VuICVzIgorCisjOiBidWlsdGluL2FwcGx5LmM6MjA4MAorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gb3BlbiBvciByZWFkICVzIgorbXNnc3RyICJrdW5kZSBpbnRlIMO2cHBuYSBlbGxlciBsw6RzYSAlcyIKKworIzogYnVpbHRpbi9hcHBseS5jOjI2ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBzdGFydCBvZiBsaW5lOiAnJWMnIgorbXNnc3RyICJmZWxha3RpZyBpbmxlZG5pbmcgcMOlIHJhZDogXCIlY1wiIgorCisjOiBidWlsdGluL2FwcGx5LmM6MjgwNgorIywgYy1mb3JtYXQKK21zZ2lkICJIdW5rICMlZCBzdWNjZWVkZWQgYXQgJWQgKG9mZnNldCAlZCBsaW5lKS4iCittc2dpZF9wbHVyYWwgIkh1bmsgIyVkIHN1Y2NlZWRlZCBhdCAlZCAob2Zmc2V0ICVkIGxpbmVzKS4iCittc2dzdHJbMF0gIlN0eWNrZSAlZCBseWNrYWRlcyBww6UgJWQgKG9mZnNldCAlZCByYWQpLiIKK21zZ3N0clsxXSAiU3R5Y2tlICVkIGx5Y2thZGVzIHDDpSAlZCAob2Zmc2V0ICVkIHJhZGVyKS4iCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbnRleHQgcmVkdWNlZCB0byAoJWxkLyVsZCkgdG8gYXBwbHkgZnJhZ21lbnQgYXQgJWQiCittc2dzdHIgIlNhbW1hbmhhbmcgcmVkdWNlcmF0IHRpbGwgKCVsZC8lbGQpIGbDtnIgYXR0IHRpbGzDpG1wYSBmcmFnbWVudCB2aWQgJWQiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODI0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJ3aGlsZSBzZWFyY2hpbmcgZm9yOlxuIgorIiUuKnMiCittc2dzdHIgIiIKKyJ2aWQgc8O2a25pbmcgZWZ0ZXI6XG4iCisiJS4qcyIKKworIzogYnVpbHRpbi9hcHBseS5jOjI4NDMKKyMsIGMtZm9ybWF0Cittc2dpZCAibWlzc2luZyBiaW5hcnkgcGF0Y2ggZGF0YSBmb3IgJyVzJyIKK21zZ3N0ciAic2FrbmFyIGJpbsOkcmEgcGF0Y2hkYXRhIGbDtnIgXCIlc1wiIgorCisjOiBidWlsdGluL2FwcGx5LmM6Mjk0NgorIywgYy1mb3JtYXQKK21zZ2lkICJiaW5hcnkgcGF0Y2ggZG9lcyBub3QgYXBwbHkgdG8gJyVzJyIKK21zZ3N0ciAiYmluw6RycGF0Y2hlbiBrYW4gaW50ZSB0aWxsw6RtcGFzIHDDpSBcIiVzXCIiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyOTUyCisjLCBjLWZvcm1hdAorbXNnaWQgImJpbmFyeSBwYXRjaCB0byAnJXMnIGNyZWF0ZXMgaW5jb3JyZWN0IHJlc3VsdCAoZXhwZWN0aW5nICVzLCBnb3QgJXMpIgorbXNnc3RyICJiaW7DpHJwYXRjaGVuIHDDpSBcIiVzXCIgZ2VyIGZlbGFrdGlndCByZXN1bHRhdCAoZsO2cnbDpG50YWRlICVzLCBmaWNrICVzKSIKKworIzogYnVpbHRpbi9hcHBseS5jOjI5NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAicGF0Y2ggZmFpbGVkOiAlczolbGQiCittc2dzdHIgInBhdGNoIG1pc3NseWNrYWRlczogJXM6JWxkIgorCisjOiBidWlsdGluL2FwcGx5LmM6MzA5NQorIywgYy1mb3JtYXQKK21zZ2lkICJjYW5ub3QgY2hlY2tvdXQgJXMiCittc2dzdHIgImthbiBpbnRlIGNoZWNrYSB1dCAlcyIKKworIzogYnVpbHRpbi9hcHBseS5jOjMxNDAgYnVpbHRpbi9hcHBseS5jOjMxNDkgYnVpbHRpbi9hcHBseS5jOjMxOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVhZCBvZiAlcyBmYWlsZWQiCittc2dzdHIgIm1pc3NseWNrYWRlcyBsw6RzYSAlcyIKKworIzogYnVpbHRpbi9hcHBseS5jOjMxNzMgYnVpbHRpbi9hcHBseS5jOjMzOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAicGF0aCAlcyBoYXMgYmVlbiByZW5hbWVkL2RlbGV0ZWQiCittc2dzdHIgInPDtmt2w6RnZW4gJXMgaGFyIMOkbmRyYXQgbmFtbi90YWdpdHMgYm9ydCIKKworIzogYnVpbHRpbi9hcHBseS5jOjMyNTQgYnVpbHRpbi9hcHBseS5jOjM0MDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4IgorbXNnc3RyICIlczogZmlubnMgaW50ZSBpIGluZGV4ZXQiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMjU4IGJ1aWx0aW4vYXBwbHkuYzozNDAxIGJ1aWx0aW4vYXBwbHkuYzozNDIzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyIKK21zZ3N0ciAiJXM6ICVzIgorCisjOiBidWlsdGluL2FwcGx5LmM6MzI2MyBidWlsdGluL2FwcGx5LmM6MzQxNworIywgYy1mb3JtYXQKK21zZ2lkICIlczogZG9lcyBub3QgbWF0Y2ggaW5kZXgiCittc2dzdHIgIiVzOiBtb3RzdmFyYXIgaW50ZSBpbmRleGV0IgorCisjOiBidWlsdGluL2FwcGx5LmM6MzM2NQorbXNnaWQgInJlbW92YWwgcGF0Y2ggbGVhdmVzIGZpbGUgY29udGVudHMiCittc2dzdHIgInBhdGNoIGbDtnIgYm9ydHRhZ25pbmcgbMOkbW5hciBrdmFyIGZpbGlubmVow6VsbCIKKworIzogYnVpbHRpbi9hcHBseS5jOjM0MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdyb25nIHR5cGUiCittc2dzdHIgIiVzOiBmZWwgdHlwIgorCisjOiBidWlsdGluL2FwcGx5LmM6MzQzNgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBoYXMgdHlwZSAlbywgZXhwZWN0ZWQgJW8iCittc2dzdHIgIiVzIGhhciB0eXBlbiAlbywgZsO2cnbDpG50YWRlICVvIgorCisjOiBidWlsdGluL2FwcGx5LmM6MzUzNworIywgYy1mb3JtYXQKK21zZ2lkICIlczogYWxyZWFkeSBleGlzdHMgaW4gaW5kZXgiCittc2dzdHIgIiVzOiBmaW5ucyByZWRhbiBpIGluZGV4ZXQiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTQwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBhbHJlYWR5IGV4aXN0cyBpbiB3b3JraW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAiJXM6IGZpbm5zIHJlZGFuIGkgYXJiZXRza2F0YWxvZ2VuIgorCisjOiBidWlsdGluL2FwcGx5LmM6MzU2MAorIywgYy1mb3JtYXQKK21zZ2lkICJuZXcgbW9kZSAoJW8pIG9mICVzIGRvZXMgbm90IG1hdGNoIG9sZCBtb2RlICglbykiCittc2dzdHIgIm55dHQgbMOkZ2UgKCVvKSBmw7ZyICVzIG1vdHN2YXJhciBpbnRlIGdhbW1hbHQgbMOkZ2UgKCVvKSIKKworIzogYnVpbHRpbi9hcHBseS5jOjM1NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAibmV3IG1vZGUgKCVvKSBvZiAlcyBkb2VzIG5vdCBtYXRjaCBvbGQgbW9kZSAoJW8pIG9mICVzIgorbXNnc3RyICJueXR0IGzDpGdlICglbykgZsO2ciAlcyBtb3RzdmFyYXIgaW50ZSBnYW1tYWx0IGzDpGdlICglbykgZsO2ciAlcyIKKworIzogYnVpbHRpbi9hcHBseS5jOjM1NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHBhdGNoIGRvZXMgbm90IGFwcGx5IgorbXNnc3RyICIlczogcGF0Y2hlbiBrYW4gaW50ZSB0aWxsw6RtcGFzIgorCisjOiBidWlsdGluL2FwcGx5LmM6MzU4NgorIywgYy1mb3JtYXQKK21zZ2lkICJDaGVja2luZyBwYXRjaCAlcy4uLiIKK21zZ3N0ciAiS29udHJvbGxlcmFyIHBhdGNoZW4gJXMuLi4iCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNjc5IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTYgYnVpbHRpbi9yZXNldC5jOjEyNAorIywgYy1mb3JtYXQKK21zZ2lkICJtYWtlX2NhY2hlX2VudHJ5IGZhaWxlZCBmb3IgcGF0aCAnJXMnIgorbXNnc3RyICJtYWtlX2NhY2hlX2VudHJ5IG1pc3NseWNrYWRlcyBmw7ZyIHPDtmt2w6RnZW4gXCIlc1wiIgorCisjOiBidWlsdGluL2FwcGx5LmM6MzgyMgorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gcmVtb3ZlICVzIGZyb20gaW5kZXgiCittc2dzdHIgImthbiBpbnRlIHRhIGJvcnQgJXMgZnLDpW4gaW5kZXhldCIKKworIzogYnVpbHRpbi9hcHBseS5jOjM4NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiY29ycnVwdCBwYXRjaCBmb3Igc3VicHJvamVjdCAlcyIKK21zZ3N0ciAidHJhc2lnIHBhdGNoIGbDtnIgdW5kZXJwcm9qZWt0ZXQgJXMiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODU0CisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBzdGF0IG5ld2x5IGNyZWF0ZWQgZmlsZSAnJXMnIgorbXNnc3RyICJrYW4gaW50ZSB0YSBzdGF0dXMgcMOlIG55bGlnZW4gc2thcGFkZSBmaWxlbiBcIiVzXCIiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODU5CisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgYmFja2luZyBzdG9yZSBmb3IgbmV3bHkgY3JlYXRlZCBmaWxlICVzIgorbXNnc3RyICJrYW4gaW50ZSBza2FwYSBzw6RrZXJoZXRzbWlubmUgZsO2ciBueWxpZ2VuIHNrYXBhZGUgZmlsZW4gJXMiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODYyIGJ1aWx0aW4vYXBwbHkuYzozOTcwCisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBhZGQgY2FjaGUgZW50cnkgZm9yICVzIgorbXNnc3RyICJrYW4gaW50ZSBsw6RnZ2EgdGlsbCBjYWNoZXBvc3QgZsO2ciAlcyIKKworIzogYnVpbHRpbi9hcHBseS5jOjM4OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2xvc2luZyBmaWxlICclcyciCittc2dzdHIgInN0w6RuZ2VyIGZpbGVuIFwiJXNcIiIKKworIzogYnVpbHRpbi9hcHBseS5jOjM5NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHdyaXRlIGZpbGUgJyVzJyBtb2RlICVvIgorbXNnc3RyICJrYW4gaW50ZSBza3JpdmEgZmlsZW4gXCIlc1wiIGzDpGdlICVvIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDAzMQorIywgYy1mb3JtYXQKK21zZ2lkICJBcHBsaWVkIHBhdGNoICVzIGNsZWFubHkuIgorbXNnc3RyICJUaWxsw6RtcGFkZSBwYXRjaGVuICVzIHJlbnQuIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDAzOQorbXNnaWQgImludGVybmFsIGVycm9yIgorbXNnc3RyICJpbnRlcm50IGZlbCIKKworIy4gU2F5IHRoaXMgZXZlbiB3aXRob3V0IC0tdmVyYm9zZQorIzogYnVpbHRpbi9hcHBseS5jOjQwNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQXBwbHlpbmcgcGF0Y2ggJSVzIHdpdGggJWQgcmVqZWN0Li4uIgorbXNnaWRfcGx1cmFsICJBcHBseWluZyBwYXRjaCAlJXMgd2l0aCAlZCByZWplY3RzLi4uIgorbXNnc3RyWzBdICJUaWxsw6RtcGFkZSBwYXRjaGVuICUlcyBtZWQgJWQgcmVmdXNlcmFkLi4uIgorbXNnc3RyWzFdICJUaWxsw6RtcGFkZSBwYXRjaGVuICUlcyBtZWQgJWQgcmVmdXNlcmFkZS4uLiIKKworIzogYnVpbHRpbi9hcHBseS5jOjQwNTIKKyMsIGMtZm9ybWF0Cittc2dpZCAidHJ1bmNhdGluZyAucmVqIGZpbGVuYW1lIHRvICUuKnMucmVqIgorbXNnc3RyICJ0cnVua2VyYXIgLnJlai1maWxuYW1uZXQgdGlsbCAlLipzLnJlaiIKKworIzogYnVpbHRpbi9hcHBseS5jOjQwNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSHVuayAjJWQgYXBwbGllZCBjbGVhbmx5LiIKK21zZ3N0ciAiU3R5Y2tlICVkIHRpbGzDpG1wYWRlcyByZW50LiIKKworIzogYnVpbHRpbi9hcHBseS5jOjQwNzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVqZWN0ZWQgaHVuayAjJWQuIgorbXNnc3RyICJSZWZ1c2VyYXIgc3R5Y2tlICVkLiIKKworIzogYnVpbHRpbi9hcHBseS5jOjQyMjYKK21zZ2lkICJ1bnJlY29nbml6ZWQgaW5wdXQiCittc2dzdHIgImluZGF0YSBrw6RubnMgaW50ZSBpZ2VuIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDIzNworbXNnaWQgInVuYWJsZSB0byByZWFkIGluZGV4IGZpbGUiCittc2dzdHIgImthbiBpbnRlIGzDpHNhIGluZGV4ZmlsZW4iCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU2IGJ1aWx0aW4vYXBwbHkuYzo0MzU5IGJ1aWx0aW4vY2xvbmUuYzo5MgorIzogYnVpbHRpbi9mZXRjaC5jOjYzCittc2dpZCAicGF0aCIKK21zZ3N0ciAic8O2a3bDpGciCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU3Cittc2dpZCAiZG9uJ3QgYXBwbHkgY2hhbmdlcyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGF0aCIKK21zZ3N0ciAidGlsbMOkbXBhIGludGUgw6RuZHJpbmdhciBzb20gbW90c3ZhcmFyIGdpdmVuIHPDtmt2w6RnIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDM2MAorbXNnaWQgImFwcGx5IGNoYW5nZXMgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhdGgiCittc2dzdHIgInRpbGzDpG1wYSDDpG5kcmluZ2FyIHNvbSBtb3RzdmFyYXIgZ2l2ZW4gc8O2a3bDpGciCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYyCittc2dpZCAibnVtIgorbXNnc3RyICJhbnRhbCIKKworIzogYnVpbHRpbi9hcHBseS5jOjQzNjMKK21zZ2lkICJyZW1vdmUgPG51bT4gbGVhZGluZyBzbGFzaGVzIGZyb20gdHJhZGl0aW9uYWwgZGlmZiBwYXRocyIKK21zZ3N0ciAidGEgYm9ydCA8YW50YWw+IGlubGVkYW5kZSBzbmVkc3RyZWNrIGZyw6VuIHRyYWRpdGlvbmVsbGEgZGlmZi1zw7ZrdsOkZ2FyIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDM2NgorbXNnaWQgImlnbm9yZSBhZGRpdGlvbnMgbWFkZSBieSB0aGUgcGF0Y2giCittc2dzdHIgImlnbm9yZXJhIHRpbGzDpGdnIGdqb3JkYSBhdiBwYXRjaGVuIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDM2OAorbXNnaWQgImluc3RlYWQgb2YgYXBwbHlpbmcgdGhlIHBhdGNoLCBvdXRwdXQgZGlmZnN0YXQgZm9yIHRoZSBpbnB1dCIKK21zZ3N0ciAiaXN0w6RsbGV0IGbDtnIgYXR0IHRpbGzDpG1wYSBwYXRjaGVuLCBza3JpdiB1dCBkaWZmc3RhdCBmw7ZyIGluZGF0YSIKKworIzogYnVpbHRpbi9hcHBseS5jOjQzNzIKK21zZ2lkICJzaG93IG51bWJlciBvZiBhZGRlZCBhbmQgZGVsZXRlZCBsaW5lcyBpbiBkZWNpbWFsIG5vdGF0aW9uIgorbXNnc3RyICJ2aXNhIGFudGFsIHRpbGxhZ2RhIG9jaCBib3J0dGFnbmEgcmFkZXIgZGVjaW1hbHQiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzc0Cittc2dpZCAiaW5zdGVhZCBvZiBhcHBseWluZyB0aGUgcGF0Y2gsIG91dHB1dCBhIHN1bW1hcnkgZm9yIHRoZSBpbnB1dCIKK21zZ3N0ciAiaXN0w6RsbGV0IGbDtnIgYXR0IHRpbGzDpG1wYSBwYXRjaGVuLCBza3JpdiB1dCBlbiBzdW1tZXJpbmcgYXYgaW5kYXRhIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDM3NgorbXNnaWQgImluc3RlYWQgb2YgYXBwbHlpbmcgdGhlIHBhdGNoLCBzZWUgaWYgdGhlIHBhdGNoIGlzIGFwcGxpY2FibGUiCittc2dzdHIgImlzdMOkbGxldCBmw7ZyIGF0dCB0aWxsw6RtcGEgcGF0Y2hlbiwgc2Ugb20gcGF0Y2hlbiBrYW4gdGlsbMOkbXBhcyIKKworIzogYnVpbHRpbi9hcHBseS5jOjQzNzgKK21zZ2lkICJtYWtlIHN1cmUgdGhlIHBhdGNoIGlzIGFwcGxpY2FibGUgdG8gdGhlIGN1cnJlbnQgaW5kZXgiCittc2dzdHIgInNlIHRpbGwgYXR0IHBhdGNoZW4ga2FuIHRpbGzDpG1wYXMgcMOlIGFrdHVlbGx0IGluZGV4IgorCisjOiBidWlsdGluL2FwcGx5LmM6NDM4MAorbXNnaWQgImFwcGx5IGEgcGF0Y2ggd2l0aG91dCB0b3VjaGluZyB0aGUgd29ya2luZyB0cmVlIgorbXNnc3RyICJ0aWxsw6RtcGEgZW4gcGF0Y2ggdXRhbiBhdHQgcsO2cmEgYXJiZXRza2F0YWxvZ2VuIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDM4MgorbXNnaWQgImFsc28gYXBwbHkgdGhlIHBhdGNoICh1c2Ugd2l0aCAtLXN0YXQvLS1zdW1tYXJ5Ly0tY2hlY2spIgorbXNnc3RyICJ0aWxsw6RtcGEgb2Nrc8OlIHBhdGNoZW4gKGFudsOkbmQgbWVkIC0tc3RhdC8tLXN1bW1hcnkvLS1jaGVjaykiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg0Cittc2dpZCAiYXR0ZW1wdCB0aHJlZS13YXkgbWVyZ2UgaWYgYSBwYXRjaCBkb2VzIG5vdCBhcHBseSIKK21zZ3N0ciAiZsO2cnPDtmsgZW4gdHJldsOkZ3NzYW1tYW5zbGFnbmluZyBvbSBwYXRjaGVuIGludGUga2FuIHRpbGzDpG1wYXMiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg2Cittc2dpZCAiYnVpbGQgYSB0ZW1wb3JhcnkgaW5kZXggYmFzZWQgb24gZW1iZWRkZWQgaW5kZXggaW5mb3JtYXRpb24iCittc2dzdHIgImJ5Z2cgZXR0IHRlbXBvcsOkcnQgaW5kZXggYmFzZXJhdCBww6UgaW5ieWdnZCBpbmRleGluZm9ybWF0aW9uIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDM4OCBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTk3IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NTYKK21zZ2lkICJwYXRocyBhcmUgc2VwYXJhdGVkIHdpdGggTlVMIGNoYXJhY3RlciIKK21zZ3N0ciAic8O2a3bDpGdhciBhdmRlbGFzIG1lZCBOVUwtdGVja2VuIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDM5MQorbXNnaWQgImVuc3VyZSBhdCBsZWFzdCA8bj4gbGluZXMgb2YgY29udGV4dCBtYXRjaCIKK21zZ3N0ciAic2UgdGlsbCBhdHQgw6V0bWluc3RvbmUgPG4+IHJhZGVyIHNhbW1hbmhhbmcgw6RyIGxpa2EiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkyCittc2dpZCAiYWN0aW9uIgorbXNnc3RyICLDpXRnw6RyZCIKKworIzogYnVpbHRpbi9hcHBseS5jOjQzOTMKK21zZ2lkICJkZXRlY3QgbmV3IG9yIG1vZGlmaWVkIGxpbmVzIHRoYXQgaGF2ZSB3aGl0ZXNwYWNlIGVycm9ycyIKK21zZ3N0ciAiZGV0ZWt0ZXJhIG55YSBlbGxlciDDpG5kcmFkZSByYWRlciBzb20gaGFyIGZlbCBpIGJsYW5rdGVja2VuIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDM5NiBidWlsdGluL2FwcGx5LmM6NDM5OQorbXNnaWQgImlnbm9yZSBjaGFuZ2VzIGluIHdoaXRlc3BhY2Ugd2hlbiBmaW5kaW5nIGNvbnRleHQiCittc2dzdHIgImlnbm9yZXJhIMOkbmRyaW5nYXIgaSBibGFua3RlY2tlbiBmw7ZyIHNhbW1hbmhhbmciCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDAyCittc2dpZCAiYXBwbHkgdGhlIHBhdGNoIGluIHJldmVyc2UiCittc2dzdHIgInRpbGzDpG1wYSBwYXRjaGVuIGJha2zDpG5nZXMiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDA0Cittc2dpZCAiZG9uJ3QgZXhwZWN0IGF0IGxlYXN0IG9uZSBsaW5lIG9mIGNvbnRleHQiCittc2dzdHIgImbDtnJ2w6RudGEgaW50ZSBtaW5zdCBlbiByYWQgc2FtbWFuaGFuZyIKKworIzogYnVpbHRpbi9hcHBseS5jOjQ0MDYKK21zZ2lkICJsZWF2ZSB0aGUgcmVqZWN0ZWQgaHVua3MgaW4gY29ycmVzcG9uZGluZyAqLnJlaiBmaWxlcyIKK21zZ3N0ciAibMOkbW5hIHJlZnVzZXJhZGUgc3R5Y2tlbiBpIG1vdHN2YXJhbmRlICoucmVqLWZpbGVyIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDQwOAorbXNnaWQgImFsbG93IG92ZXJsYXBwaW5nIGh1bmtzIgorbXNnc3RyICJ0aWxsw6V0IMO2dmVybGFwcGFuZGUgc3R5Y2tlbiIKKworIzogYnVpbHRpbi9hcHBseS5jOjQ0MTEKK21zZ2lkICJ0b2xlcmF0ZSBpbmNvcnJlY3RseSBkZXRlY3RlZCBtaXNzaW5nIG5ldy1saW5lIGF0IHRoZSBlbmQgb2YgZmlsZSIKK21zZ3N0ciAidG9sZXJlcmEgZmVsYWt0aWd0IGRldGVrdGVyYWRlIHNha25hZGUgbnlyYWRzdGVja2VuIHZpZCBmaWxzbHV0IgorCisjOiBidWlsdGluL2FwcGx5LmM6NDQxNAorbXNnaWQgImRvIG5vdCB0cnVzdCB0aGUgbGluZSBjb3VudHMgaW4gdGhlIGh1bmsgaGVhZGVycyIKK21zZ3N0ciAibGl0ZSBpbnRlIHDDpSBhbnRhbGV0IGxpbmplciBpIHN0eWNrZWh1dnVkZW4iCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDE2Cittc2dpZCAicm9vdCIKK21zZ3N0ciAicm90IgorCisjOiBidWlsdGluL2FwcGx5LmM6NDQxNworbXNnaWQgInByZXBlbmQgPHJvb3Q+IHRvIGFsbCBmaWxlbmFtZXMiCittc2dzdHIgImzDpGdnIHRpbGwgPHJvdD4gaSBhbGxhIGZpbG5hbW4iCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDM5Cittc2dpZCAiLS0zd2F5IG91dHNpZGUgYSByZXBvc2l0b3J5IgorbXNnc3RyICItLTN3YXkgdXRhbmbDtnIgYXJraXYiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDQ3Cittc2dpZCAiLS1pbmRleCBvdXRzaWRlIGEgcmVwb3NpdG9yeSIKK21zZ3N0ciAiLS1pbmRleCB1dGFuZsO2ciBhcmtpdiIKKworIzogYnVpbHRpbi9hcHBseS5jOjQ0NTAKK21zZ2lkICItLWNhY2hlZCBvdXRzaWRlIGEgcmVwb3NpdG9yeSIKK21zZ3N0ciAiLS1jYWNoZWQgdXRhbmbDtnIgYXJraXYiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDY2CisjLCBjLWZvcm1hdAorbXNnaWQgImNhbid0IG9wZW4gcGF0Y2ggJyVzJyIKK21zZ3N0ciAia2FuIGludGUgw7ZwcG5hIHBhdGNoZW4gXCIlc1wiIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDQ4MAorIywgYy1mb3JtYXQKK21zZ2lkICJzcXVlbGNoZWQgJWQgd2hpdGVzcGFjZSBlcnJvciIKK21zZ2lkX3BsdXJhbCAic3F1ZWxjaGVkICVkIHdoaXRlc3BhY2UgZXJyb3JzIgorbXNnc3RyWzBdICJ1bmRlcnRyeWNrdGUgJWQgZmVsIGkgYmxhbmtzdGVnIgorbXNnc3RyWzFdICJ1bmRlcnRyeWNrdGUgJWQgZmVsIGkgYmxhbmtzdGVnIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDQ4NiBidWlsdGluL2FwcGx5LmM6NDQ5NgorIywgYy1mb3JtYXQKK21zZ2lkICIlZCBsaW5lIGFkZHMgd2hpdGVzcGFjZSBlcnJvcnMuIgorbXNnaWRfcGx1cmFsICIlZCBsaW5lcyBhZGQgd2hpdGVzcGFjZSBlcnJvcnMuIgorbXNnc3RyWzBdICIlZCByYWQgbMOkZ2dlciB0aWxsIGZlbCBpIGJsYW5rc3RlZy4iCittc2dzdHJbMV0gIiVkIHJhZGVyIGzDpGdnZXIgdGlsbCBmZWwgaSBibGFua3N0ZWcuIgorCiAjOiBidWlsdGluL2FyY2hpdmUuYzoxNwogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIGFyY2hpdmUgZmlsZSAnJXMnIgpAQCAtNzc0LDI1ICsyMzI0LDE1MyBAQAogbXNnaWQgImdpdCBhcmNoaXZlOiBleHBlY3RlZCBBQ0svTkFLLCBnb3QgRU9GIgogbXNnc3RyICJnaXQgYXJjaGl2ZTogZsO2cnbDpG50YWRlIEFDSy9OQUssIGZpY2sgRU9GIgogCi0jOiBidWlsdGluL2FyY2hpdmUuYzo2MworIzogYnVpbHRpbi9hcmNoaXZlLmM6NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0IGFyY2hpdmU6IE5BQ0sgJXMiCiBtc2dzdHIgImdpdCBhcmNoaXZlOiBOQUNLICVzIgogCi0jOiBidWlsdGluL2FyY2hpdmUuYzo2NQorIzogYnVpbHRpbi9hcmNoaXZlLmM6NjMKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVtb3RlIGVycm9yOiAlcyIKIG1zZ3N0ciAiZmrDpHJyZmVsOiAlcyIKIAotIzogYnVpbHRpbi9hcmNoaXZlLmM6NjYKKyM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjY0CiBtc2dpZCAiZ2l0IGFyY2hpdmU6IHByb3RvY29sIGVycm9yIgogbXNnc3RyICJnaXQgYXJjaGl2ZTogcHJvdG9rb2xsZmVsIgogCi0jOiBidWlsdGluL2FyY2hpdmUuYzo3MQorIzogYnVpbHRpbi9hcmNoaXZlLmM6NjgKIG1zZ2lkICJnaXQgYXJjaGl2ZTogZXhwZWN0ZWQgYSBmbHVzaCIKIG1zZ3N0ciAiZ2l0IGFyY2hpdmU6IGbDtnJ2w6RudGFkZSBlbiB0w7ZtbmluZyAoZmx1c2gpIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjEzNworIzogYnVpbHRpbi9iaXNlY3QtLWhlbHBlci5jOjcKK21zZ2lkICJnaXQgYmlzZWN0LS1oZWxwZXIgLS1uZXh0LWFsbCBbLS1uby1jaGVja291dF0iCittc2dzdHIgImdpdCBiaXNlY3QtLWhlbHBlciAtLW5leHQtYWxsIFstLW5vLWNoZWNrb3V0XSIKKworIzogYnVpbHRpbi9iaXNlY3QtLWhlbHBlci5jOjE3Cittc2dpZCAicGVyZm9ybSAnZ2l0IGJpc2VjdCBuZXh0JyIKK21zZ3N0ciAidXRmw7ZyICdnaXQgYmlzZWN0IG5leHQnIgorCisjOiBidWlsdGluL2Jpc2VjdC0taGVscGVyLmM6MTkKK21zZ2lkICJ1cGRhdGUgQklTRUNUX0hFQUQgaW5zdGVhZCBvZiBjaGVja2luZyBvdXQgdGhlIGN1cnJlbnQgY29tbWl0IgorbXNnc3RyICJ1cHBkYXRlcmEgQklTRUNUX0hFQUQgaXN0w6RsbGV0IGbDtnIgYXR0IGNoZWNrYSB1dCBha3R1ZWxsIGluY2hlY2tuaW5nIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjUKK21zZ2lkICJnaXQgYmxhbWUgW29wdGlvbnNdIFtyZXYtb3B0c10gW3Jldl0gWy0tXSBmaWxlIgorbXNnc3RyICJnaXQgYmxhbWUgW2ZsYWdnb3JdIFtyZXYtZmxhZ2dvcl0gW3Jldl0gWy0tXSBmaWwiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzozMAorbXNnaWQgIltyZXYtb3B0c10gYXJlIGRvY3VtZW50ZWQgaW4gZ2l0LXJldi1saXN0KDEpIgorbXNnc3RyICJbcmV2LWZsYWdnb3JdIGRva3VtZW50ZXJhcyBpIGdpdC1yZXYtbGlzdCgxKSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTUKK21zZ2lkICJTaG93IGJsYW1lIGVudHJpZXMgYXMgd2UgZmluZCB0aGVtLCBpbmNyZW1lbnRhbGx5IgorbXNnc3RyICJWaXNhIGtsYW5kcmluZ3Nwb3N0ZXIgbsOkciB2aSBoaXR0YXIgZGVtLCBpbnRlcmFrdGl2dCIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTYKK21zZ2lkICJTaG93IGJsYW5rIFNIQS0xIGZvciBib3VuZGFyeSBjb21taXRzIChEZWZhdWx0OiBvZmYpIgorbXNnc3RyICJWaXNhIGJsYW5rIFNIQS0xIGbDtnIgZ3LDpG5zaW5jaGVja25pbmdhciAoU3RhbmRhcmQ6IGF2KSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTcKK21zZ2lkICJEbyBub3QgdHJlYXQgcm9vdCBjb21taXRzIGFzIGJvdW5kYXJpZXMgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIkJlaGFuZGxhIGludGUgcm90aW5jaGVja25pbmdhciBzb20gZ3LDpG5zZXIgKFN0YW5kYXJkOiBhdikiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU4Cittc2dpZCAiU2hvdyB3b3JrIGNvc3Qgc3RhdGlzdGljcyIKK21zZ3N0ciAiVmlzYSBzdGF0aXN0aWsgw7Z2ZXIgYXJiZXRza29zdG5hZCIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTkKK21zZ2lkICJTaG93IG91dHB1dCBzY29yZSBmb3IgYmxhbWUgZW50cmllcyIKK21zZ3N0ciAiVmlzYSB1dGRhdGFwb8OkbmcgZsO2ciBrbGFuZHJpbmdzcG9zdGVyIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2MAorbXNnaWQgIlNob3cgb3JpZ2luYWwgZmlsZW5hbWUgKERlZmF1bHQ6IGF1dG8pIgorbXNnc3RyICJWaXNhIG9yaWdpbmFsZmlsbmFtbiAoU3RhbmRhcmQ6IGF1dG8pIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2MQorbXNnaWQgIlNob3cgb3JpZ2luYWwgbGluZW51bWJlciAoRGVmYXVsdDogb2ZmKSIKK21zZ3N0ciAiVmlzYSB1cnNwcnVuZ2xpZ3QgcmFkbnVtbWVyIChTdGFuZGFyZDogYXYpIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2MgorbXNnaWQgIlNob3cgaW4gYSBmb3JtYXQgZGVzaWduZWQgZm9yIG1hY2hpbmUgY29uc3VtcHRpb24iCittc2dzdHIgIlZpc2EgaSBldHQgZm9ybWF0IGF2c2V0dCBmw7ZyIG1hc2tpbmtvbnN1bXRpb24iCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYzCittc2dpZCAiU2hvdyBwb3JjZWxhaW4gZm9ybWF0IHdpdGggcGVyLWxpbmUgY29tbWl0IGluZm9ybWF0aW9uIgorbXNnc3RyICJWaXNhIHBvcnNsaW5zZm9ybWF0IG1lZCBwZXItcmFkLWluY2hlY2tuaW5nc2luZm9ybWF0aW9uIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2NAorbXNnaWQgIlVzZSB0aGUgc2FtZSBvdXRwdXQgbW9kZSBhcyBnaXQtYW5ub3RhdGUgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIkFudsOkbmQgc2FtbWEgdXRkYXRhbMOkZ2Ugc29tIGdpdC1hbm5vdGF0ZSAoU3RhbmRhcmQ6IGF2KSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjUKK21zZ2lkICJTaG93IHJhdyB0aW1lc3RhbXAgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIlZpc2EgcsOlIHRpZHNzdMOkbXBlbCAoU3RhbmRhcmQ6IGF2KSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjYKK21zZ2lkICJTaG93IGxvbmcgY29tbWl0IFNIQTEgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIlZpc2EgbMOlbmcgaW5jaGVja25pbmdzLVNIQTEgKFN0YW5kYXJkOiBhdikiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY3Cittc2dpZCAiU3VwcHJlc3MgYXV0aG9yIG5hbWUgYW5kIHRpbWVzdGFtcCAoRGVmYXVsdDogb2ZmKSIKK21zZ3N0ciAiVW5kZXJ0cnljayBmw7ZyZmF0dGFybmFtbiBvY2ggdGlkc3N0w6RtcGVsIChTdGFuZGFyZDogYXYpIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2OAorbXNnaWQgIlNob3cgYXV0aG9yIGVtYWlsIGluc3RlYWQgb2YgbmFtZSAoRGVmYXVsdDogb2ZmKSIKK21zZ3N0ciAiVmlzYSBmw7ZyZmF0dGFyZW5zIGUtcG9zdCBpc3TDpGxsZXQgZsO2ciBuYW1uIChTdGFuZGFyZDogYXYpIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2OQorbXNnaWQgIklnbm9yZSB3aGl0ZXNwYWNlIGRpZmZlcmVuY2VzIgorbXNnc3RyICJJZ25vcmVyYSDDpG5kcmluZ2FyIGkgYmxhbmtzdGVnIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MAorbXNnaWQgIlNwZW5kIGV4dHJhIGN5Y2xlcyB0byBmaW5kIGJldHRlciBtYXRjaCIKK21zZ3N0ciAiU2zDtnNhIGV4dHJhIGN5a2xlciBtZWQgYXR0IGhpdHRhIGLDpHR0cmUgdHLDpGZmIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MQorbXNnaWQgIlVzZSByZXZpc2lvbnMgZnJvbSA8ZmlsZT4gaW5zdGVhZCBvZiBjYWxsaW5nIGdpdC1yZXYtbGlzdCIKK21zZ3N0ciAiQW52w6RuZCByZXZpc2lvbmVyIGZyw6VuIDxmaWw+IGlzdMOkbGxldCBmw7ZyIGF0dCBhbnJvcGEgZ2l0LXJldi1saXN0IgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MgorbXNnaWQgIlVzZSA8ZmlsZT4ncyBjb250ZW50cyBhcyB0aGUgZmluYWwgaW1hZ2UiCittc2dzdHIgIkFudsOkbmQgPGZpbD5zIGlubmVow6VsbCBzb20gc2x1dGdpbHRpZyBiaWxkIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MyBidWlsdGluL2JsYW1lLmM6MjM3NAorbXNnaWQgInNjb3JlIgorbXNnc3RyICJwb8OkbmciCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzczCittc2dpZCAiRmluZCBsaW5lIGNvcGllcyB3aXRoaW4gYW5kIGFjcm9zcyBmaWxlcyIKK21zZ3N0ciAiSGl0dGEga29waWVyYWRlIHJhZGVyIGludXRpIG9jaCBtZWxsYW4gZmlsZXIiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc0Cittc2dpZCAiRmluZCBsaW5lIG1vdmVtZW50cyB3aXRoaW4gYW5kIGFjcm9zcyBmaWxlcyIKK21zZ3N0ciAiSGl0dGEgZmx5dHRhZGUgcmFkZXIgaW51dGkgb2NoIG1lbGxhbiBmaWxlciIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNzUKK21zZ2lkICJuLG0iCittc2dzdHIgIm4sbSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNzUKK21zZ2lkICJQcm9jZXNzIG9ubHkgbGluZSByYW5nZSBuLG0sIGNvdW50aW5nIGZyb20gMSIKK21zZ3N0ciAiQmVoYW5kbGEgZW5kYXN0IHJhZGludGVydmFsbGV0IG4sbSwgbWVkIGLDtnJqYW4gcMOlIDEiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjQKK21zZ2lkICJnaXQgYnJhbmNoIFtvcHRpb25zXSBbLXIgfCAtYV0gWy0tbWVyZ2VkIHwgLS1uby1tZXJnZWRdIgorbXNnc3RyICJnaXQgYnJhbmNoIFtmbGFnZ29yXSBbLXIgfCAtYV0gWy0tbWVyZ2VkIHwgLS1uby1tZXJnZWRdIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI1Cittc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1sXSBbLWZdIDxicmFuY2huYW1lPiBbPHN0YXJ0LXBvaW50Pl0iCittc2dzdHIgImdpdCBicmFuY2ggW2ZsYWdnb3JdIFstbF0gWy1mXSA8Z3Jlbm5hbW4+IFs8c3RhcnRwdW5rdD5dIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI2Cittc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1yXSAoLWQgfCAtRCkgPGJyYW5jaG5hbWU+Li4uIgorbXNnc3RyICJnaXQgYnJhbmNoIFtmbGFnZ29yXSBbLXJdICgtZCB8IC1EKSA8Z3Jlbm5hbW4+Li4uIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI3Cittc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gKC1tIHwgLU0pIFs8b2xkYnJhbmNoPl0gPG5ld2JyYW5jaD4iCittc2dzdHIgImdpdCBicmFuY2ggW2ZsYWdnb3JdICgtbSB8IC1NKSBbPGdhbW1hbF9ncmVuPl0gPG55X2dyZW4+IgorCisjOiBidWlsdGluL2JyYW5jaC5jOjE1MAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiZGVsZXRpbmcgYnJhbmNoICclcycgdGhhdCBoYXMgYmVlbiBtZXJnZWQgdG9cbiIKQEAgLTgwMSw3ICsyNDc5LDcgQEAKICJ0YXIgYm9ydCBncmVuZW4gXCIlc1wiIHNvbSBoYXIgc2xhZ2l0cyBpaG9wIG1lZFxuIgogIiAgICAgICAgIFwiJXNcIiwgbWVuIMOkbm51IGludGUgc2xhZ2l0cyBpaG9wIG1lZCBIRUFELiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoxNDEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTU0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJub3QgZGVsZXRpbmcgYnJhbmNoICclcycgdGhhdCBpcyBub3QgeWV0IG1lcmdlZCB0b1xuIgpAQCAtODEwLDM1ICsyNDg4LDEyIEBACiAidGFyIGludGUgYm9ydCBncmVuZW4gXCIlc1wiIHNvbSBpbnRlIGhhciBzbGFnaXRzIGlob3AgbWVkXG4iCiAiICAgICAgICAgXCIlc1wiLCB0cm90cyBhdHQgZGVuIGhhciBzbGFnaXRzIGlob3AgbWVkIEhFQUQuIgogCi0jLiBUUkFOU0xBVE9SUzogVGhpcyBpcyAicmVtb3RlICIgaW4gInJlbW90ZSBicmFuY2ggJyVzJyBub3QgZm91bmQiCi0jOiBidWlsdGluL2JyYW5jaC5jOjE2MwotbXNnaWQgInJlbW90ZSAiCi1tc2dzdHIgImZqw6RyciIKLQotIzogYnVpbHRpbi9icmFuY2guYzoxNzEKLW1zZ2lkICJjYW5ub3QgdXNlIC1hIHdpdGggLWQiCi1tc2dzdHIgImthbiBpbnRlIGFuZ2UgLWEgbWVkIC1kIgotCi0jOiBidWlsdGluL2JyYW5jaC5jOjE3NwotbXNnaWQgIkNvdWxkbid0IGxvb2sgdXAgY29tbWl0IG9iamVjdCBmb3IgSEVBRCIKLW1zZ3N0ciAiS3VuZGUgaW50ZSBzbMOlIHVwcCBpbmNoZWNrbmluZ3NvYmpla3QgZsO2ciBIRUFEIgotCi0jOiBidWlsdGluL2JyYW5jaC5jOjE4MgotIywgYy1mb3JtYXQKLW1zZ2lkICJDYW5ub3QgZGVsZXRlIHRoZSBicmFuY2ggJyVzJyB3aGljaCB5b3UgYXJlIGN1cnJlbnRseSBvbi4iCi1tc2dzdHIgIkthbiBpbnRlIHRhIGJvcnQgZ3JlbmVuIFwiJXNcIiBzb20gZHUgYmVmaW5uZXIgZGlnIHDDpSBmw7ZyIG7DpHJ2YXJhbmRlLiIKLQotIzogYnVpbHRpbi9icmFuY2guYzoxOTIKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiJXNicmFuY2ggJyVzJyBub3QgZm91bmQuIgotbXNnc3RyICIlc2dyZW5lbiBcIiVzXCIgaGl0dGFkZXMgaW50ZS4iCi0KLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjAwCisjOiBidWlsdGluL2JyYW5jaC5jOjE2OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZG4ndCBsb29rIHVwIGNvbW1pdCBvYmplY3QgZm9yICclcyciCiBtc2dzdHIgIkt1bmRlIGludGUgc2zDpSB1cHAgaW5jaGVja25pbmdzb2JqZWt0IGbDtnIgXCIlc1wiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIwNgorIzogYnVpbHRpbi9icmFuY2guYzoxNzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSBicmFuY2ggJyVzJyBpcyBub3QgZnVsbHkgbWVyZ2VkLlxuIgpAQCAtODQ3LDEwMCArMjUwMiwzNjEgQEAKICJHcmVuZW4gXCIlc1wiIGhhciBpbnRlIHNsYWdpdHMgc2FtbWFuIGkgc2luIGhlbGhldC5cbiIKICJPbSBkdSDDpHIgc8Oka2VyIHDDpSBhdHQgZHUgdmlsbCB0YSBib3J0IGRlbiwga8O2ciBcImdpdCBicmFuY2ggLUQgJXNcIi4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjE0Ci0jLCBjLWZvcm1hdAotbXNnaWQgIkVycm9yIGRlbGV0aW5nICVzYnJhbmNoICclcyciCi1tc2dzdHIgIkZlbCB2aWQgYm9ydHRhZ25pbmcgYXYgJXNncmVuZW4gXCIlc1wiIgotCi0jOiBidWlsdGluL2JyYW5jaC5jOjIxOQotIywgYy1mb3JtYXQKLW1zZ2lkICJEZWxldGVkICVzYnJhbmNoICVzICh3YXMgJXMpLlxuIgotbXNnc3RyICJUb2cgYm9ydCAlc2dyZW5lbiAlcyAodmFyICVzKS5cbiIKLQotIzogYnVpbHRpbi9icmFuY2guYzoyMjQKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTg1CiBtc2dpZCAiVXBkYXRlIG9mIGNvbmZpZy1maWxlIGZhaWxlZCIKIG1zZ3N0ciAiTWlzc2x5Y2thZGVzIHVwcGRhdGVyYSBrb25maWd1cmF0aW9uc2ZpbCIKIAotIzogYnVpbHRpbi9icmFuY2guYzozMjIKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjEzCittc2dpZCAiY2Fubm90IHVzZSAtYSB3aXRoIC1kIgorbXNnc3RyICJrYW4gaW50ZSBhbmdlIC1hIG1lZCAtZCIKKworIzogYnVpbHRpbi9icmFuY2guYzoyMTkKK21zZ2lkICJDb3VsZG4ndCBsb29rIHVwIGNvbW1pdCBvYmplY3QgZm9yIEhFQUQiCittc2dzdHIgIkt1bmRlIGludGUgc2zDpSB1cHAgaW5jaGVja25pbmdzb2JqZWt0IGbDtnIgSEVBRCIKKworIzogYnVpbHRpbi9icmFuY2guYzoyMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGRlbGV0ZSB0aGUgYnJhbmNoICclcycgd2hpY2ggeW91IGFyZSBjdXJyZW50bHkgb24uIgorbXNnc3RyICJLYW4gaW50ZSB0YSBib3J0IGdyZW5lbiBcIiVzXCIgc29tIGR1IGJlZmlubmVyIGRpZyBww6UgZsO2ciBuw6RydmFyYW5kZS4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjQwCisjLCBjLWZvcm1hdAorbXNnaWQgInJlbW90ZSBicmFuY2ggJyVzJyBub3QgZm91bmQuIgorbXNnc3RyICJmasOkcnJncmVuZW4gXCIlc1wiIGhpdHRhZGVzIGludGUuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI0MQorIywgYy1mb3JtYXQKK21zZ2lkICJicmFuY2ggJyVzJyBub3QgZm91bmQuIgorbXNnc3RyICJncmVuZW4gXCIlc1wiIGhpdHRhZGVzIGludGUuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI1NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBkZWxldGluZyByZW1vdGUgYnJhbmNoICclcyciCittc2dzdHIgIkZlbCB2aWQgYm9ydHRhZ25pbmcgYXYgZmrDpHJyZ3JlbmVuIFwiJXNcIiIKKworIzogYnVpbHRpbi9icmFuY2guYzoyNTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgZGVsZXRpbmcgYnJhbmNoICclcyciCittc2dzdHIgIkZlbCB2aWQgYm9ydHRhZ25pbmcgYXYgZ3JlbmVuIFwiJXNcIiIKKworIzogYnVpbHRpbi9icmFuY2guYzoyNjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRGVsZXRlZCByZW1vdGUgYnJhbmNoICVzICh3YXMgJXMpLlxuIgorbXNnc3RyICJUb2cgYm9ydCBmasOkcnJncmVuZW4gJXMgKHZhciAlcykuXG4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIkRlbGV0ZWQgYnJhbmNoICVzICh3YXMgJXMpLlxuIgorbXNnc3RyICJUb2cgYm9ydCBncmVuZW4gJXMgKHZhciAlcykuXG4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MzY2CiAjLCBjLWZvcm1hdAogbXNnaWQgImJyYW5jaCAnJXMnIGRvZXMgbm90IHBvaW50IGF0IGEgY29tbWl0IgogbXNnc3RyICJncmVuZW4gXCIlc1wiIHBla2FyIGludGUgcMOlIGVuIGluY2hlY2tuaW5nIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjM5NAorIzogYnVpbHRpbi9icmFuY2guYzo0NTMKICMsIGMtZm9ybWF0Ci1tc2dpZCAiYmVoaW5kICVkXSAiCi1tc2dzdHIgImJha29tICVkXSAiCittc2dpZCAiWyVzOiBiZWhpbmQgJWRdIgorbXNnc3RyICJbJXM6IGJha29tICVkXSAiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Mzk2CisjOiBidWlsdGluL2JyYW5jaC5jOjQ1NQogIywgYy1mb3JtYXQKLW1zZ2lkICJhaGVhZCAlZF0gIgotbXNnc3RyICJmw7ZyZSAlZF0gIgorbXNnaWQgIltiZWhpbmQgJWRdIgorbXNnc3RyICJbYmFrb20gJWRdICIKIAotIzogYnVpbHRpbi9icmFuY2guYzozOTgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDU5CiAjLCBjLWZvcm1hdAotbXNnaWQgImFoZWFkICVkLCBiZWhpbmQgJWRdICIKLW1zZ3N0ciAiZsO2cmUgJWQsIGJha29tICVkXSAiCittc2dpZCAiWyVzOiBhaGVhZCAlZF0iCittc2dzdHIgIlslczogZsO2cmUgJWRdICIKIAotIzogYnVpbHRpbi9icmFuY2guYzo1MDEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDYxCisjLCBjLWZvcm1hdAorbXNnaWQgIlthaGVhZCAlZF0iCittc2dzdHIgIltmw7ZyZSAlZF0gIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjQ2NAorIywgYy1mb3JtYXQKK21zZ2lkICJbJXM6IGFoZWFkICVkLCBiZWhpbmQgJWRdIgorbXNnc3RyICJbJXM6IGbDtnJlICVkLCBiYWtvbSAlZF0gIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjQ2NworIywgYy1mb3JtYXQKK21zZ2lkICJbYWhlYWQgJWQsIGJlaGluZCAlZF0iCittc2dzdHIgIltmw7ZyZSAlZCwgYmFrb20gJWRdICIKKworIzogYnVpbHRpbi9icmFuY2guYzo0OTAKK21zZ2lkICIgKioqKiBpbnZhbGlkIHJlZiAqKioqIgorbXNnc3RyICIgKioqKiBvZ2lsdGlnIHJlZiAqKioqIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjU4MgorIywgYy1mb3JtYXQKK21zZ2lkICIobm8gYnJhbmNoLCByZWJhc2luZyAlcykiCittc2dzdHIgIihpbmdlbiBncmVuLCBvbWJhc2VyYXIgJXMpIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjU4NQorIywgYy1mb3JtYXQKK21zZ2lkICIobm8gYnJhbmNoLCBiaXNlY3Qgc3RhcnRlZCBvbiAlcykiCittc2dzdHIgIihpbmdlbiBncmVuLCBcImJpc2VjdFwiIHN0YXJ0YWQgcMOlICVzKSIKKworIzogYnVpbHRpbi9icmFuY2guYzo1ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiKGRldGFjaGVkIGZyb20gJXMpIgorbXNnc3RyICIoZnLDpW5rb3BwbGFkIGZyw6VuICVzKSIKKworIzogYnVpbHRpbi9icmFuY2guYzo1OTEKIG1zZ2lkICIobm8gYnJhbmNoKSIKIG1zZ3N0ciAiKGluZ2VuIGdyZW4pIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjU2NgorIzogYnVpbHRpbi9icmFuY2guYzo2MzcKKyMsIGMtZm9ybWF0Cittc2dpZCAib2JqZWN0ICclcycgZG9lcyBub3QgcG9pbnQgdG8gYSBjb21taXQiCittc2dzdHIgIm9iamVrdGV0IFwiJXNcIiBwZWthciBww6UgZW4gaW5jaGVja25pbmciCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NjY5CiBtc2dpZCAic29tZSByZWZzIGNvdWxkIG5vdCBiZSByZWFkIgogbXNnc3RyICJ2aXNzYSByZWZlcmVuc2VyIGt1bmRlIGludGUgbMOkc2FzIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjU3OQorIzogYnVpbHRpbi9icmFuY2guYzo2ODIKIG1zZ2lkICJjYW5ub3QgcmVuYW1lIHRoZSBjdXJyZW50IGJyYW5jaCB3aGlsZSBub3Qgb24gYW55LiIKIG1zZ3N0ciAiIgogImt1bmRlIGludGUgYnl0YSBuYW1uIHDDpSBha3R1ZWxsIGdyZW4gbsOkciBkdSBpbnRlIGJlZmlubmVyIGRpZyBww6UgbsOlZ29uLiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo1ODkKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NjkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgYnJhbmNoIG5hbWU6ICclcyciCiBtc2dzdHIgIkZlbGFrdGlndCBuYW1uIHDDpSBncmVuOiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjA0CisjOiBidWlsdGluL2JyYW5jaC5jOjcwNwogbXNnaWQgIkJyYW5jaCByZW5hbWUgZmFpbGVkIgogbXNnc3RyICJNaXNzbHlja2FkZXMgYnl0YSBuYW1uIHDDpSBncmVuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjYwOAorIzogYnVpbHRpbi9icmFuY2guYzo3MTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVuYW1lZCBhIG1pc25hbWVkIGJyYW5jaCAnJXMnIGF3YXkiCiBtc2dzdHIgIkJ5dHRlIGJvcnQgbmFtbiBww6UgZW4gZmVsYWt0aWd0IG5hbW5naXZlbiBncmVuIFwiJXNcIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2MTIKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzE1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJyYW5jaCByZW5hbWVkIHRvICVzLCBidXQgSEVBRCBpcyBub3QgdXBkYXRlZCEiCiBtc2dzdHIgIkdyZW5lbiBuYW1uYnl0dCB0aWxsICVzLCBtZW4gSEVBRCBoYXIgaW50ZSB1cHBkYXRlcmF0cyEiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjE5CisjOiBidWlsdGluL2JyYW5jaC5jOjcyMgogbXNnaWQgIkJyYW5jaCBpcyByZW5hbWVkLCBidXQgdXBkYXRlIG9mIGNvbmZpZy1maWxlIGZhaWxlZCIKIG1zZ3N0ciAiR3JlbmVuIG5hbW5ieXR0LCBtZW4gbWlzc2x5Y2thZGVzIHVwcGRhdGVyYSBrb25maWd1cmF0aW9uc2ZpbGVuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjYzNAorIzogYnVpbHRpbi9icmFuY2guYzo3MzcKICMsIGMtZm9ybWF0CiBtc2dpZCAibWFsZm9ybWVkIG9iamVjdCBuYW1lICVzIgogbXNnc3RyICJmZWxmb3JtYXQgb2JqZWt0bmFtbiAlcyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NTgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzYxCiAjLCBjLWZvcm1hdAotbXNnaWQgImNvdWxkIG5vdCB3cml0ZSBicmFuY2ggZGVzY3JpcHRpb24gdGVtcGxhdGU6ICVzXG4iCi1tc2dzdHIgImt1bmRlIGludGUgc2tyaXZhIGdyZW5iZXNrcml2bmluZ3NtYWxsOiAlc1xuIgorbXNnaWQgImNvdWxkIG5vdCB3cml0ZSBicmFuY2ggZGVzY3JpcHRpb24gdGVtcGxhdGU6ICVzIgorbXNnc3RyICJrdW5kZSBpbnRlIHNrcml2YSBncmVuYmVza3Jpdm5pbmdzbWFsbDogJXMiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzQ2CisjOiBidWlsdGluL2JyYW5jaC5jOjc5MQorbXNnaWQgIkdlbmVyaWMgb3B0aW9ucyIKK21zZ3N0ciAiQWxsbcOkbm5hIGZsYWdnb3IiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzkzCittc2dpZCAic2hvdyBoYXNoIGFuZCBzdWJqZWN0LCBnaXZlIHR3aWNlIGZvciB1cHN0cmVhbSBicmFuY2giCittc2dzdHIgInZpc2EgaGFzaCBvY2ggw6RyZW5kZXJhZCwgYW5nZSB0dsOlIGfDpW5nZXIgZsO2ciB1cHBzdHLDtm1zZ3JlbiIKKworIzogYnVpbHRpbi9icmFuY2guYzo3OTQKK21zZ2lkICJzdXBwcmVzcyBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIgorbXNnc3RyICJ1bmRlcnRyeWNrIGluZm9ybWF0aW9uc21lZGRlbGFuZGVuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjc5NQorbXNnaWQgInNldCB1cCB0cmFja2luZyBtb2RlIChzZWUgZ2l0LXB1bGwoMSkpIgorbXNnc3RyICJzdMOkbGwgaW4gc3DDpXJuaW5nc2zDpGdlIChzZSBnaXQtcHVsbCgxKSkiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzk3Cittc2dpZCAiY2hhbmdlIHVwc3RyZWFtIGluZm8iCittc2dzdHIgIsOkbmRyYSB1cHBzdHLDtm1zaW5mb3JtYXRpb24iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODAxCittc2dpZCAidXNlIGNvbG9yZWQgb3V0cHV0IgorbXNnc3RyICJhbnbDpG5kIGbDpHJnYWQgdXRkYXRhIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgwMgorbXNnaWQgImFjdCBvbiByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMiCittc2dzdHIgImFyYmV0YSBww6UgZmrDpHJyc3DDpXJhbmRlIGdyZW5hciIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MDUgYnVpbHRpbi9icmFuY2guYzo4MTEgYnVpbHRpbi9icmFuY2guYzo4MzIKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODM4IGJ1aWx0aW4vY29tbWl0LmM6MTM2OCBidWlsdGluL2NvbW1pdC5jOjEzNjkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MCBidWlsdGluL2NvbW1pdC5jOjEzNzEgYnVpbHRpbi90YWcuYzo0NjgKK21zZ2lkICJjb21taXQiCittc2dzdHIgImluY2hlY2tuaW5nIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgwNiBidWlsdGluL2JyYW5jaC5jOjgxMgorbXNnaWQgInByaW50IG9ubHkgYnJhbmNoZXMgdGhhdCBjb250YWluIHRoZSBjb21taXQiCittc2dzdHIgInZpc2EgZW5kYXN0IGdyZW5hciBzb20gaW5uZWjDpWxsZXIgaW5jaGVja25pbmdlbiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MTgKK21zZ2lkICJTcGVjaWZpYyBnaXQtYnJhbmNoIGFjdGlvbnM6IgorbXNnc3RyICJTcGVjaWZpa2EgZ2l0LWJyYW5jaC3DpXRnw6RyZGVyOiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MTkKK21zZ2lkICJsaXN0IGJvdGggcmVtb3RlLXRyYWNraW5nIGFuZCBsb2NhbCBicmFuY2hlcyIKK21zZ3N0ciAidmlzYSBiw6VkZSBmasOkcnJzcMOlcmFuZGUgb2NoIGxva2FsYSBncmVuYXIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODIxCittc2dpZCAiZGVsZXRlIGZ1bGx5IG1lcmdlZCBicmFuY2giCittc2dzdHIgInRhIGJvcnQgaGVsdCBzYW1tYW5zbGFnZW4gZ3JlbiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MjIKK21zZ2lkICJkZWxldGUgYnJhbmNoIChldmVuIGlmIG5vdCBtZXJnZWQpIgorbXNnc3RyICJ0YSBib3J0IGdyZW4gKMOkdmVuIG9tIGludGUgaGVsdCBzYW1tYW5zbGFnZW4pIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgyMworbXNnaWQgIm1vdmUvcmVuYW1lIGEgYnJhbmNoIGFuZCBpdHMgcmVmbG9nIgorbXNnc3RyICJmbHl0dGEvdGEgYm9ydCBlbiBncmVuIG9jaCBkZXNzIHJlZmxvZ2ciCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI0Cittc2dpZCAibW92ZS9yZW5hbWUgYSBicmFuY2gsIGV2ZW4gaWYgdGFyZ2V0IGV4aXN0cyIKK21zZ3N0ciAiZmx5dHRhL3RhIGJvcnQgZW4gZ3Jlbiwgw6R2ZW4gb20gbcOlbGV0IGZpbm5zIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgyNQorbXNnaWQgImxpc3QgYnJhbmNoIG5hbWVzIgorbXNnc3RyICJsaXN0YSBuYW1uIHDDpSBncmVuYXIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI2Cittc2dpZCAiY3JlYXRlIHRoZSBicmFuY2gncyByZWZsb2ciCittc2dzdHIgInNrYXBhIGdyZW5lbnMgcmVmbG9nZyIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MjgKK21zZ2lkICJlZGl0IHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIGJyYW5jaCIKK21zZ3N0ciAicmVkaWdlcmEgYmVza3Jpdm5pbmcgZsO2ciBncmVuZW4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI5Cittc2dpZCAiZm9yY2UgY3JlYXRpb24gKHdoZW4gYWxyZWFkeSBleGlzdHMpIgorbXNnc3RyICJ0dmluZ2Egc2thcGFuZGUgKG7DpHIgZGVuIHJlZGFuIGZpbm5zKSIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MzIKK21zZ2lkICJwcmludCBvbmx5IG5vdCBtZXJnZWQgYnJhbmNoZXMiCittc2dzdHIgInZpc2EgZW5kYXN0IGVqIHNhbW1hbnNsYWduYSBncmVuYXIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODM4Cittc2dpZCAicHJpbnQgb25seSBtZXJnZWQgYnJhbmNoZXMiCittc2dzdHIgInZpc2EgZW5kYXN0IHNhbW1hbnNsYWduYSBncmVuYXIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODQyCittc2dpZCAibGlzdCBicmFuY2hlcyBpbiBjb2x1bW5zIgorbXNnc3RyICJ2aXNhIGdyZW5hciBpIHNwYWx0ZXIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODU1CiBtc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgSEVBRCBhcyBhIHZhbGlkIHJlZi4iCiBtc2dzdHIgIk1pc3NseWNrYWRlcyBzbMOlIHVwcCBIRUFEIHNvbSBnaWx0aWcgcmVmZXJlbnMiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzUxIGJ1aWx0aW4vY2xvbmUuYzo1NTgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODYwIGJ1aWx0aW4vY2xvbmUuYzo2MTkKIG1zZ2lkICJIRUFEIG5vdCBmb3VuZCBiZWxvdyByZWZzL2hlYWRzISIKIG1zZ3N0ciAiSEVBRCBoaXR0YWRlcyBpbnRlIHVuZGVyIHJlZnMvaGVhZHMhIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjgwOQorIzogYnVpbHRpbi9icmFuY2guYzo4ODMKK21zZ2lkICItLWNvbHVtbiBhbmQgLS12ZXJib3NlIGFyZSBpbmNvbXBhdGlibGUiCittc2dzdHIgIi0tY29sdW1uIG9jaCAtLXZlcmJvc2Ugw6RyIGlua29tcGF0aWJsYSIKKworIzogYnVpbHRpbi9icmFuY2guYzo4ODkgYnVpbHRpbi9icmFuY2guYzo5MjgKK21zZ2lkICJicmFuY2ggbmFtZSByZXF1aXJlZCIKK21zZ3N0ciAiZ3Jlbm5hbW4ga3LDpHZzIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkwNAorbXNnaWQgIkNhbm5vdCBnaXZlIGRlc2NyaXB0aW9uIHRvIGRldGFjaGVkIEhFQUQiCittc2dzdHIgIkthbiBpbnRlIGJlc2tyaXZhIGZyw6Vua29wcGxhZCBIRUFEIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkwOQorbXNnaWQgImNhbm5vdCBlZGl0IGRlc2NyaXB0aW9uIG9mIG1vcmUgdGhhbiBvbmUgYnJhbmNoIgorbXNnc3RyICJrYW4gaW50ZSByZWRpZ2VyYSBiZXNrcml2bmluZyBmw7ZyIG1lciDDpG4gZW4gZ3JlbiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm8gY29tbWl0IG9uIGJyYW5jaCAnJXMnIHlldC4iCittc2dzdHIgIkluZ2EgaW5jaGVja25pbmdhciBww6UgZ3JlbmVuIFwiJXNcIiDDpG5udSIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm8gYnJhbmNoIG5hbWVkICclcycuIgorbXNnc3RyICJJbmdlbiBncmVuIHZpZCBuYW1uZXQgXCIlc1wiLiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MzQKK21zZ2lkICJ0b28gbWFueSBicmFuY2hlcyBmb3IgYSByZW5hbWUgb3BlcmF0aW9uIgorbXNnc3RyICJmw7ZyIG3DpW5nYSBncmVuYXIgZsO2ciBuYW1uYnl0ZSIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MzkKK21zZ2lkICJ0b28gbWFueSBicmFuY2hlcyB0byBzZXQgbmV3IHVwc3RyZWFtIgorbXNnc3RyICJmw7ZyIG3DpW5nYSBncmVuYXIgZsO2ciBhdHQgYnl0YSB1cHBzdHLDtm0iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTQzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJjb3VsZCBub3Qgc2V0IHVwc3RyZWFtIG9mIEhFQUQgdG8gJXMgd2hlbiBpdCBkb2VzIG5vdCBwb2ludCB0byBhbnkgYnJhbmNoLiIKK21zZ3N0ciAiIgorImt1bmRlIGludGUgc8OkdHRhIHVwcHN0csO2bSBmw7ZyIEhFQUQgdGlsbCAlcyBuw6RyIGRldCBpbnRlIHBla2FyIG1vdCBuw6Vnb24gZ3Jlbi4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTQ2IGJ1aWx0aW4vYnJhbmNoLmM6OTY4IGJ1aWx0aW4vYnJhbmNoLmM6OTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIm5vIHN1Y2ggYnJhbmNoICclcyciCittc2dzdHIgIm9rw6RuZCBncmVuIFwiJXNcIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiYnJhbmNoICclcycgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgImdyZW5lbiBcIiVzXCIgZmlubnMgaW50ZSIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NjIKK21zZ2lkICJ0b28gbWFueSBicmFuY2hlcyB0byB1bnNldCB1cHN0cmVhbSIKK21zZ3N0ciAiZsO2ciBtw6VuZ2EgZ3JlbmFyIGbDtnIgYXR0IHRhIGJvcnQgdXBwc3Ryw7ZtIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk2NgorbXNnaWQgImNvdWxkIG5vdCB1bnNldCB1cHN0cmVhbSBvZiBIRUFEIHdoZW4gaXQgZG9lcyBub3QgcG9pbnQgdG8gYW55IGJyYW5jaC4iCittc2dzdHIgIiIKKyJrdW5kZSBpbnRlIHRhIGJvcnQgdXBwc3Ryw7ZtIGbDtnIgSEVBRCBuw6RyIGRldCBpbnRlIHBla2FyIG1vdCBuw6Vnb24gZ3Jlbi4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTcyCisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAnJXMnIGhhcyBubyB1cHN0cmVhbSBpbmZvcm1hdGlvbiIKK21zZ3N0ciAiR3JlbmVuIFwiJXNcIiBoYXIgaW5nZW4gdXBwc3Ryw7Ztc2luZm9ybWF0aW9uIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk4NworbXNnaWQgIml0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gY3JlYXRlICdIRUFEJyBtYW51YWxseSIKK21zZ3N0ciAia2FuIGludGUgc2thcGEgXCJIRUFEXCIgbWFudWVsbHQiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTkzCiBtc2dpZCAiLWEgYW5kIC1yIG9wdGlvbnMgdG8gJ2dpdCBicmFuY2gnIGRvIG5vdCBtYWtlIHNlbnNlIHdpdGggYSBicmFuY2ggbmFtZSIKIG1zZ3N0ciAiIgogImZsYWdnb3JuYSAtYSBvY2ggLXIgcMOlIFwiZ2l0IGJyYW5jaFwiIGthbiBpbnRlIGFuZ2VzIHRpbGxzYW1tYW5zIG1lZCBldHQgIgogImdyZW5uYW1uIgogCisjOiBidWlsdGluL2JyYW5jaC5jOjk5NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIC0tc2V0LXVwc3RyZWFtIGZsYWcgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBDb25zaWRlciB1c2luZyAtLSIKKyJ0cmFjayBvciAtLXNldC11cHN0cmVhbS10b1xuIgorbXNnc3RyICIiCisiRmxhZ2dhbiAtLXNldC11cHN0cmVhbSByZWtvbW1lbmRlcmFzIGVqIG9jaCBrb21tZXIgdGFzIGJvcnQuIEFudsOkbmQgLS10cmFjayAiCisiZWxsZXIgLS1zZXQtdXBzdHJlYW0tdG9cbiIKKworIzogYnVpbHRpbi9icmFuY2guYzoxMDEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJJZiB5b3Ugd2FudGVkIHRvIG1ha2UgJyVzJyB0cmFjayAnJXMnLCBkbyB0aGlzOlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiT20gZHUgdmlsbCBnw7ZyYSBzw6UgYXR0IFwiJXNcIiBzcMOlcmFyIFwiJXNcIiBnw7ZyIGR1IHPDpSBow6RyOlxuIgorIlxuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjEwMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgIGdpdCBicmFuY2ggLWQgJXNcbiIKK21zZ3N0ciAiICAgIGdpdCBicmFuY2ggLWQgJXNcbiIKKworIzogYnVpbHRpbi9icmFuY2guYzoxMDE1CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvICVzXG4iCittc2dzdHIgIiAgICBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvICVzXG4iCisKICM6IGJ1aWx0aW4vYnVuZGxlLmM6NDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgaXMgb2theVxuIgpAQCAtOTU0LDEwNCArMjg3MCwyNDYgQEAKIG1zZ2lkICJOZWVkIGEgcmVwb3NpdG9yeSB0byB1bmJ1bmRsZS4iCiBtc2dzdHIgIkJlaMO2dmVyIGV0dCBhcmtpdiBmw7ZyIGF0dCBwYWNrYSB1cHAgZXR0IHBha2V0IChidW5kbGUpLiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExMyBidWlsdGluL2NoZWNrb3V0LmM6MTQ2CisjOiBidWlsdGluL2NhdC1maWxlLmM6MTc2Cittc2dpZCAiZ2l0IGNhdC1maWxlICgtdHwtc3wtZXwtcHw8dHlwZT58LS10ZXh0Y29udikgPG9iamVjdD4iCittc2dzdHIgImdpdCBjYXQtZmlsZSAoLXR8LXN8LWV8LXB8PHR5cD58LS10ZXh0Y29udikgPG9iamVrdD4iCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxNzcKK21zZ2lkICJnaXQgY2F0LWZpbGUgKC0tYmF0Y2h8LS1iYXRjaC1jaGVjaykgPCA8bGlzdF9vZl9vYmplY3RzPiIKK21zZ3N0ciAiZ2l0IGNhdC1maWxlICgtLWJhdGNofC0tYmF0Y2gtY2hlY2spIDwgPG9iamVrdGxpc3RhPiIKKworIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5NQorbXNnaWQgIjx0eXBlPiBjYW4gYmUgb25lIG9mOiBibG9iLCB0cmVlLCBjb21taXQsIHRhZyIKK21zZ3N0ciAiPHR5cD4ga2FuIHZhcmEgZW4gYXY6IGJsb2IsIHRyZWUsIGNvbW1pdCwgdGFnIgorCisjOiBidWlsdGluL2NhdC1maWxlLmM6MTk2Cittc2dpZCAic2hvdyBvYmplY3QgdHlwZSIKK21zZ3N0ciAidmlzYSBvYmpla3R0eXAiCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTcKK21zZ2lkICJzaG93IG9iamVjdCBzaXplIgorbXNnc3RyICJ2aXNhIG9iamVrdHN0b3JsZWsiCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTkKK21zZ2lkICJleGl0IHdpdGggemVybyB3aGVuIHRoZXJlJ3Mgbm8gZXJyb3IiCittc2dzdHIgImF2c2x1dGEgbWVkIG5vbGwgbsOkciBkZXQgaW50ZSB1cHBzdMOldHQgbsOlZ290IGZlbCIKKworIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwMAorbXNnaWQgInByZXR0eS1wcmludCBvYmplY3QncyBjb250ZW50IgorbXNnc3RyICJ2aXNhIG9iamVrdGV0cyBpbm5laMOlbGwgc255Z2d0IgorCisjOiBidWlsdGluL2NhdC1maWxlLmM6MjAyCittc2dpZCAiZm9yIGJsb2Igb2JqZWN0cywgcnVuIHRleHRjb252IG9uIG9iamVjdCdzIGNvbnRlbnQiCittc2dzdHIgImbDtnIgYmxvYi1vYmpla3QsIGvDtnIgdGV4dGNvbnYgcMOlIG9iamVrdGV0cyBpbm5laMOlbGwiCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDQKK21zZ2lkICJzaG93IGluZm8gYW5kIGNvbnRlbnQgb2Ygb2JqZWN0cyBmZWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCittc2dzdHIgInZpc2EgaW5mb3JtYXRpb24gb2NoIGlubmVow6VsbCBmw7ZyIG9iamVrdCBzb20gbGlzdGFzIHDDpSBzdGFuZGFyZCBpbiIKKworIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwNworbXNnaWQgInNob3cgaW5mbyBhYm91dCBvYmplY3RzIGZlZCBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIKK21zZ3N0ciAidmlzYSBpbmZvcm1hdGlvbiBmw7ZyIG9iamVrdCBzb20gbGlzdGFzIHDDpSBzdGFuZGFyZCBpbiIKKworIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MTEKK21zZ2lkICJnaXQgY2hlY2stYXR0ciBbLWEgfCAtLWFsbCB8IGF0dHIuLi5dIFstLV0gcGF0aG5hbWUuLi4iCittc2dzdHIgImdpdCBjaGVjay1hdHRyIFstYSB8IC0tYWxsIHwgYXR0ci4uLl0gWy0tXSBzw7ZrdsOkZy4uLiIKKworIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MTIKK21zZ2lkICJnaXQgY2hlY2stYXR0ciAtLXN0ZGluIFstel0gWy1hIHwgLS1hbGwgfCBhdHRyLi4uXSA8IDxsaXN0LW9mLXBhdGhzPiIKK21zZ3N0ciAiZ2l0IGNoZWNrLWF0dHIgLS1zdGRpbiBbLXpdIFstYSB8IC0tYWxsIHwgYXR0ci4uLl0gPCA8c8O2a3bDpGdzbGlzdGE+IgorCisjOiBidWlsdGluL2NoZWNrLWF0dHIuYzoxOQorbXNnaWQgInJlcG9ydCBhbGwgYXR0cmlidXRlcyBzZXQgb24gZmlsZSIKK21zZ3N0ciAidmlzYSBhbGxhIGF0dHJpYnV0IHNvbSBzYXR0cyBww6UgZmlsZW4iCisKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIwCittc2dpZCAidXNlIC5naXRhdHRyaWJ1dGVzIG9ubHkgZnJvbSB0aGUgaW5kZXgiCittc2dzdHIgImFudsOkbmQgLmdpdGF0dHJpYnV0ZXMgZW5kYXN0IGZyw6VuIGluZGV4ZXQiCisKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIxIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MjIgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc1Cittc2dpZCAicmVhZCBmaWxlIG5hbWVzIGZyb20gc3RkaW4iCittc2dzdHIgImzDpHMgZmlsbmFtbiBmcsOlbiBzdGFuZGFyZCBpbiIKKworIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MjMgYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoyNAorbXNnaWQgImlucHV0IHBhdGhzIGFyZSB0ZXJtaW5hdGVkIGJ5IGEgbnVsbCBjaGFyYWN0ZXIiCittc2dzdHIgInPDtmt2w6RnYXIgYXZkZWxhcyBtZWQgbnVsbC10ZWNrZW4iCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTggYnVpbHRpbi9jaGVja291dC5jOjEwNDQgYnVpbHRpbi9nYy5jOjE3NworbXNnaWQgInN1cHByZXNzIHByb2dyZXNzIHJlcG9ydGluZyIKK21zZ3N0ciAidW5kZXJ0cnljayBmw7ZybG9wcHNyYXBwb3J0ZXJpbmciCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTQ2Cittc2dpZCAiY2Fubm90IHNwZWNpZnkgcGF0aG5hbWVzIHdpdGggLS1zdGRpbiIKK21zZ3N0ciAia2FuIGludGUgYW5nZSBzw7ZrdsOkZ3NuYW1uIG1lZCAtLXN0ZGluIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE0OQorbXNnaWQgIi16IG9ubHkgbWFrZXMgc2Vuc2Ugd2l0aCAtLXN0ZGluIgorbXNnc3RyICIteiBrYW4gZW5kYXN0IGFudsOkbmRhcyB0aWxsc2FtbWFucyBtZWQgLS1zdGRpbiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTEKK21zZ2lkICJubyBwYXRoIHNwZWNpZmllZCIKK21zZ3N0ciAiaW5nZW4gc8O2a3bDpGcgYW5nYXZzIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE1NQorbXNnaWQgIi0tcXVpZXQgaXMgb25seSB2YWxpZCB3aXRoIGEgc2luZ2xlIHBhdGhuYW1lIgorbXNnc3RyICItLXF1aWV0IGthbiBlbmRhc3QgYW52w6RuZGFzIG1lZCBldHQgZW5rZWx0IHPDtmt2w6Rnc25hbW4iCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTU3Cittc2dpZCAiY2Fubm90IGhhdmUgYm90aCAtLXF1aWV0IGFuZCAtLXZlcmJvc2UiCittc2dzdHIgImthbiBpbnRlIGFudsOkbmRhIGLDpWRlIC0tcXVpZXQgb2NoIC0tdmVyYm9zZSIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjEyNgorbXNnaWQgImdpdCBjaGVja291dC1pbmRleCBbb3B0aW9uc10gWy0tXSBbPGZpbGU+Li4uXSIKK21zZ3N0ciAiZ2l0IGNoZWNrb3V0LWluZGV4IFtmbGFnZ29yXSBbLS1dIFs8ZmlsPi4uLl0iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxODcKK21zZ2lkICJjaGVjayBvdXQgYWxsIGZpbGVzIGluIHRoZSBpbmRleCIKK21zZ3N0ciAiY2hlY2thIHV0IGFsbGEgZmlsZXIgaSBpbmRleGV0IgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTg4Cittc2dpZCAiZm9yY2Ugb3ZlcndyaXRlIG9mIGV4aXN0aW5nIGZpbGVzIgorbXNnc3RyICJ0dmluZ2Egw7Z2ZXJza3Jpdm5pbmcgYXYgYmVmaW50bGlnYSBmaWxlciIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE5MAorbXNnaWQgIm5vIHdhcm5pbmcgZm9yIGV4aXN0aW5nIGZpbGVzIGFuZCBmaWxlcyBub3QgaW4gaW5kZXgiCittc2dzdHIgImluZ2VuIHZhcm5pbmcgZsO2ciBleGlzdGVyYW5kZSBmaWxlciBvY2ggZmlsZXIgZWogaSBpbmRleGV0IgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTkyCittc2dpZCAiZG9uJ3QgY2hlY2tvdXQgbmV3IGZpbGVzIgorbXNnc3RyICJjaGVja2EgaW50ZSB1dCBueWEgZmlsZXIiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxOTQKK21zZ2lkICJ1cGRhdGUgc3RhdCBpbmZvcm1hdGlvbiBpbiB0aGUgaW5kZXggZmlsZSIKK21zZ3N0ciAidXBwZGF0ZXJhIHN0YXQtaW5mb3JtYXRpb24gaSBpbmRleGZpbGVuIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MjAwCittc2dpZCAicmVhZCBsaXN0IG9mIHBhdGhzIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IgorbXNnc3RyICJsw6RzIGxpc3RhbiDDtnZlciBzw7ZrdsOkZ2FyIGZyw6VuIHN0YW5kYXJkIGluIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MjAyCittc2dpZCAid3JpdGUgdGhlIGNvbnRlbnQgdG8gdGVtcG9yYXJ5IGZpbGVzIgorbXNnc3RyICJza3JpdiBpbm5laMOlbGwgdGlsbCB0ZW1wb3LDpHJhIGZpbGVyIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MjAzIGJ1aWx0aW4vY29sdW1uLmM6MzAKK21zZ2lkICJzdHJpbmciCittc2dzdHIgInN0csOkbmciCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoyMDQKK21zZ2lkICJ3aGVuIGNyZWF0aW5nIGZpbGVzLCBwcmVwZW5kIDxzdHJpbmc+IgorbXNnc3RyICJuw6RyIGZpbGVyIHNrYXBhcywgbMOkZ2cgdGlsbCA8c3Ryw6RuZz4gZsO2cnN0IgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MjA3Cittc2dpZCAiY29weSBvdXQgdGhlIGZpbGVzIGZyb20gbmFtZWQgc3RhZ2UiCittc2dzdHIgImtvcGllcmEgdXQgZmlsZXIgZnLDpW4gbmFtbmdpdmVuIGV0YXBwIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjUKK21zZ2lkICJnaXQgY2hlY2tvdXQgW29wdGlvbnNdIDxicmFuY2g+IgorbXNnc3RyICJnaXQgY2hlY2tvdXQgW2ZsYWdnb3JdIDxncmVuPiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjI2Cittc2dpZCAiZ2l0IGNoZWNrb3V0IFtvcHRpb25zXSBbPGJyYW5jaD5dIC0tIDxmaWxlPi4uLiIKK21zZ3N0ciAiZ2l0IGNoZWNrb3V0IFtmbGFnZ29yXSBbPGdyZW4+XSAtLSA8ZmlsPi4uLiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjExNyBidWlsdGluL2NoZWNrb3V0LmM6MTUwCiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJyBkb2VzIG5vdCBoYXZlIG91ciB2ZXJzaW9uIgogbXNnc3RyICJzw7ZrdsOkZ2VuIFwiJXNcIiBoYXIgaW50ZSB2w6VyIHZlcnNpb24iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTUgYnVpbHRpbi9jaGVja291dC5jOjE0OAorIzogYnVpbHRpbi9jaGVja291dC5jOjExOSBidWlsdGluL2NoZWNrb3V0LmM6MTUyCiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJyBkb2VzIG5vdCBoYXZlIHRoZWlyIHZlcnNpb24iCiBtc2dzdHIgInPDtmt2w6RnZW4gXCIlc1wiIGhhciBpbnRlIGRlcmFzIHZlcnNpb24iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMzEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMzUKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgYWxsIG5lY2Vzc2FyeSB2ZXJzaW9ucyIKIG1zZ3N0ciAic8O2a3bDpGdlbiBcIiVzXCIgaW5uZWjDpWxsZXIgaW50ZSBhbGxhIG7DtmR2w6RuZGlnYSB2ZXJzaW9uZXIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNzUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNzkKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgbmVjZXNzYXJ5IHZlcnNpb25zIgogbXNnc3RyICJzw7ZrdsOkZ2VuIFwiJXNcIiBpbm5laMOlbGxlciBpbnRlIG7DtmR2w6RuZGlnYSB2ZXJzaW9uZXIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxOTIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxOTYKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnOiBjYW5ub3QgbWVyZ2UiCiBtc2dzdHIgInPDtmt2w6RnIFwiJXNcIjoga2FuIGludGUgc2zDpSBpaG9wIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjA5CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBhZGQgbWVyZ2UgcmVzdWx0IGZvciAnJXMnIgogbXNnc3RyICJLdW5kZSBpbnRlIGzDpGdnYSB0aWxsIHNhbW1hbnNsYWduaW5nc3Jlc3VsdGF0IGbDtnIgXCIlc1wiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjEyIGJ1aWx0aW4vcmVzZXQuYzoxNTgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMzcgYnVpbHRpbi9jaGVja291dC5jOjI0MCBidWlsdGluL2NoZWNrb3V0LmM6MjQzCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjQ2CiAjLCBjLWZvcm1hdAotbXNnaWQgIm1ha2VfY2FjaGVfZW50cnkgZmFpbGVkIGZvciBwYXRoICclcyciCi1tc2dzdHIgIm1ha2VfY2FjaGVfZW50cnkgbWlzc2x5Y2thZGVzIGbDtnIgc8O2a3bDpGdlbiBcIiVzXCIiCittc2dpZCAiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoIHVwZGF0aW5nIHBhdGhzIgorbXNnc3RyICJcIiVzXCIga2FuIGludGUgYW52w6RuZGFzIHZpZCB1cHBkYXRlcmluZyBhdiBzw7ZrdsOkZ2FyIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjM0IGJ1aWx0aW4vY2hlY2tvdXQuYzozOTIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDkgYnVpbHRpbi9jaGVja291dC5jOjI1MgorIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiCittc2dzdHIgIlwiJXNcIiBrYW4gaW50ZSBhbnbDpG5kYXMgbWVkICVzIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjU1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCB1cGRhdGUgcGF0aHMgYW5kIHN3aXRjaCB0byBicmFuY2ggJyVzJyBhdCB0aGUgc2FtZSB0aW1lLiIKK21zZ3N0ciAiS2FuIGludGUgdXBwZGF0ZXJhIHPDtmt2w6RnYXIgb2NoIHbDpHhsYSB0aWxsIGdyZW5lbiBcIiVzXCIgc2FtdGlkaWd0LiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjI2NiBidWlsdGluL2NoZWNrb3V0LmM6NDU4CiBtc2dpZCAiY29ycnVwdCBpbmRleCBmaWxlIgogbXNnc3RyICJpbmRleGZpbGVuIMOkciB0cmFzaWciCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNjQgYnVpbHRpbi9jaGVja291dC5jOjI3MQorIzogYnVpbHRpbi9jaGVja291dC5jOjMyOSBidWlsdGluL2NoZWNrb3V0LmM6MzM2CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJyBpcyB1bm1lcmdlZCIKIG1zZ3N0ciAic8O2a3bDpGdlbiBcIiVzXCIgaGFyIGludGUgc2xhZ2l0cyBpaG9wIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MzAyIGJ1aWx0aW4vY2hlY2tvdXQuYzo0OTggYnVpbHRpbi9jbG9uZS5jOjU4MwotIzogYnVpbHRpbi9tZXJnZS5jOjgxMgotbXNnaWQgInVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIKLW1zZ3N0ciAia3VuZGUgaW50ZSBza3JpdmEgbnkgaW5kZXhmaWwiCi0KLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzozMTkgYnVpbHRpbi9kaWZmLmM6MzAyIGJ1aWx0aW4vbWVyZ2UuYzo0MDgKLW1zZ2lkICJkaWZmX3NldHVwX2RvbmUgZmFpbGVkIgotbXNnc3RyICJkaWZmX3NldHVwX2RvbmUgbWlzc2x5Y2thZGVzIgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NDE0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NDgwCiBtc2dpZCAieW91IG5lZWQgdG8gcmVzb2x2ZSB5b3VyIGN1cnJlbnQgaW5kZXggZmlyc3QiCiBtc2dzdHIgImR1IG3DpXN0ZSBsw7ZzYSBkaXR0IGJlZmludGxpZ2EgaW5kZXggZsO2cnN0IgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NTMzCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjAxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbiBub3QgZG8gcmVmbG9nIGZvciAnJXMnXG4iCiBtc2dzdHIgIkthbiBpbnRlIHNrYXBhIHJlZmVyZW5zbG9nIGbDtnIgXCIlc1wiXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo1NjUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MzQKIG1zZ2lkICJIRUFEIGlzIG5vdyBhdCIKIG1zZ3N0ciAiSEVBRCDDpHIgbnUgcMOlIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NTcyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjQxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlc2V0IGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIsOFdGVyc3TDpGxsIGdyZW4gXCIlc1wiXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo1NzUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWxyZWFkeSBvbiAnJXMnXG4iCiBtc2dzdHIgIlJlZGFuIHDDpSBcIiVzXCJcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU3OQorIzogYnVpbHRpbi9jaGVja291dC5jOjY0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJTd2l0Y2hlZCB0byBhbmQgcmVzZXQgYnJhbmNoICclcydcbiIKIG1zZ3N0ciAiVsOkeGxhZGUgdGlsbCBvY2ggbm9sbHN0w6RsbGRlIGdyZW5lbiBcIiVzXCJcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU4MQorIzogYnVpbHRpbi9jaGVja291dC5jOjY1MCBidWlsdGluL2NoZWNrb3V0LmM6OTg3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIlbDpHhsYWRlIHRpbGwgZW4gbnkgZ3JlbiBcIiVzXCJcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU4MworIzogYnVpbHRpbi9jaGVja291dC5jOjY1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJTd2l0Y2hlZCB0byBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICJWw6R4bGFkZSB0aWxsIGdyZW5lbiBcIiVzXCJcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjYzOQorIzogYnVpbHRpbi9jaGVja291dC5jOjcwOAogIywgYy1mb3JtYXQKIG1zZ2lkICIgLi4uIGFuZCAlZCBtb3JlLlxuIgogbXNnc3RyICIgLi4uIG9jaCAlZCB0aWxsLlxuIgogCiAjLiBUaGUgc2luZ3VsYXIgdmVyc2lvbgotIzogYnVpbHRpbi9jaGVja291dC5jOjY0NQorIzogYnVpbHRpbi9jaGVja291dC5jOjcxNAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiV2FybmluZzogeW91IGFyZSBsZWF2aW5nICVkIGNvbW1pdCBiZWhpbmQsIG5vdCBjb25uZWN0ZWQgdG9cbiIKQEAgLTEwNzQsNyArMzEzMiw3IEBACiAiXG4iCiAiJXNcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjY2MworIzogYnVpbHRpbi9jaGVja291dC5jOjczMgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiSWYgeW91IHdhbnQgdG8ga2VlcCB0aGVtIGJ5IGNyZWF0aW5nIGEgbmV3IGJyYW5jaCwgdGhpcyBtYXkgYmUgYSBnb29kIHRpbWVcbiIKQEAgLTEwODksODggKzMxNDcsMTUwIEBACiAiIGdpdCBicmFuY2ggbnl0dF9ncmVubmFtbiAlc1xuIgogIlxuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjkzCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzYyCiBtc2dpZCAiaW50ZXJuYWwgZXJyb3IgaW4gcmV2aXNpb24gd2FsayIKIG1zZ3N0ciAiaW50ZXJudCBmZWwgdmlkIGdlbm9tZ8OlbmcgYXYgcmV2aXNpb25lciAocmV2aXNpb24gd2FsaykiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2OTcKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3NjYKIG1zZ2lkICJQcmV2aW91cyBIRUFEIHBvc2l0aW9uIHdhcyIKIG1zZ3N0ciAiVGlkaWdhcmUgcG9zaXRpb24gZsO2ciBIRUFEIHZhciIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjcyMworIzogYnVpbHRpbi9jaGVja291dC5jOjc5MyBidWlsdGluL2NoZWNrb3V0LmM6OTgyCiBtc2dpZCAiWW91IGFyZSBvbiBhIGJyYW5jaCB5ZXQgdG8gYmUgYm9ybiIKIG1zZ3N0ciAiRHUgw6RyIHDDpSBlbiBncmVuIHNvbSDDpG5udSBpbnRlIMOkciBmw7ZkZCIKIAogIy4gY2FzZSAoMSkKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo4NTQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCByZWZlcmVuY2U6ICVzIgogbXNnc3RyICJmZWxha3RpZyByZWZlcmVuczogJXMiCiAKICMuIGNhc2UgKDEpOiB3YW50IGEgdHJlZQotIzogYnVpbHRpbi9jaGVja291dC5jOjg5MworIzogYnVpbHRpbi9jaGVja291dC5jOjk1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWZlcmVuY2UgaXMgbm90IGEgdHJlZTogJXMiCiBtc2dzdHIgInJlZmVyZW5zZW4gw6RyIGludGUgZXR0IHRyw6RkOiAlcyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjk3MwotbXNnaWQgIi1CIGNhbm5vdCBiZSB1c2VkIHdpdGggLWIiCi1tc2dzdHIgIi1CIGthbiBpbnRlIGFudsOkbmRhcyBtZWQgLWIiCisjOiBidWlsdGluL2NoZWNrb3V0LmM6OTk2Cittc2dpZCAicGF0aHMgY2Fubm90IGJlIHVzZWQgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMiCittc2dzdHIgInPDtmt2w6RnYXIga2FuIGludGUgYW52w6RuZGFzIHZpZCBieXRlIGF2IGdyZW4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5ODIKLW1zZ2lkICItLXBhdGNoIGlzIGluY29tcGF0aWJsZSB3aXRoIGFsbCBvdGhlciBvcHRpb25zIgotbXNnc3RyICItLXBhdGNoIMOkciBpbmtvbXBhdGliZWwgbWVkIGFsbGEgYW5kcmEgZmxhZ2dvciIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5OTkgYnVpbHRpbi9jaGVja291dC5jOjEwMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoIHN3aXRjaGluZyBicmFuY2hlcyIKK21zZ3N0ciAiXCIlc1wiIGthbiBpbnRlIGFudsOkbmRhcyB2aWQgYnl0ZSBhdiBncmVuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTg1Ci1tc2dpZCAiLS1kZXRhY2ggY2Fubm90IGJlIHVzZWQgd2l0aCAtYi8tQi8tLW9ycGhhbiIKLW1zZ3N0ciAiLS1kZXRjYWgga2FuIGludGUgYW52w6RuZGFzIG1lZCAtYi8tQi8tLW9ycGhhbiIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDA3IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDEwIGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxOAorIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggJyVzJyIKK21zZ3N0ciAiXCIlc1wiIGthbiBpbnRlIGFudsOkbmRhcyBtZWQgXCIlc1wiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTg3Ci1tc2dpZCAiLS1kZXRhY2ggY2Fubm90IGJlIHVzZWQgd2l0aCAtdCIKLW1zZ3N0ciAiLS1kZXRhY2gga2FuIGludGUgYW52w6RuZGFzIG1lZCAtdCIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDIzCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBzd2l0Y2ggYnJhbmNoIHRvIGEgbm9uLWNvbW1pdCAnJXMnIgorbXNnc3RyICJLYW4gaW50ZSB2w6R4bGEgZ3JlbiB0aWxsIGlja2UtaW5jaGVja25pbmdlbiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5OTMKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ1IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ3IGJ1aWx0aW4vY2xvbmUuYzo5MAorIzogYnVpbHRpbi9yZW1vdGUuYzoxNjkgYnVpbHRpbi9yZW1vdGUuYzoxNzEKK21zZ2lkICJicmFuY2giCittc2dzdHIgImdyZW4iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ2Cittc2dpZCAiY3JlYXRlIGFuZCBjaGVja291dCBhIG5ldyBicmFuY2giCittc2dzdHIgInNrYXBhIG9jaCBjaGVja2EgdXQgZW4gbnkgZ3JlbiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDgKK21zZ2lkICJjcmVhdGUvcmVzZXQgYW5kIGNoZWNrb3V0IGEgYnJhbmNoIgorbXNnc3RyICJza2FwYS9ub2xsc3TDpGxsIG9jaCBjaGVja2EgdXQgZW4gZ3JlbiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDkKK21zZ2lkICJjcmVhdGUgcmVmbG9nIGZvciBuZXcgYnJhbmNoIgorbXNnc3RyICJza2FwYSByZWZsb2dnIGbDtnIgbnkgZ3JlbiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTAKK21zZ2lkICJkZXRhY2ggdGhlIEhFQUQgYXQgbmFtZWQgY29tbWl0IgorbXNnc3RyICJrb3BwbGEgZnLDpW4gSEVBRCB2aWQgbmFtbmdpdmVuIGluY2hlY2tuaW5nIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MQorbXNnaWQgInNldCB1cHN0cmVhbSBpbmZvIGZvciBuZXcgYnJhbmNoIgorbXNnc3RyICJzw6R0dCB1cHBzdHLDtm1zaW5mb3JtYXRpb24gZsO2ciBueSBncmVuIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MworbXNnaWQgIm5ldyBicmFuY2giCittc2dzdHIgIm55IGdyZW4iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDUzCittc2dpZCAibmV3IHVucGFyZW50ZWQgYnJhbmNoIgorbXNnc3RyICJueSBncmVuIHV0YW4gZsO2csOkbGRlciIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTQKK21zZ2lkICJjaGVja291dCBvdXIgdmVyc2lvbiBmb3IgdW5tZXJnZWQgZmlsZXMiCittc2dzdHIgImNoZWNrYSB1dCB2w6VyIHZlcnNpb24gZsO2ciBlaiBzYW1tYW5zbGFnbmEgZmlsZXIiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU2Cittc2dpZCAiY2hlY2tvdXQgdGhlaXIgdmVyc2lvbiBmb3IgdW5tZXJnZWQgZmlsZXMiCittc2dzdHIgImNoZWNrYSB1dCBkZXJhcyB2ZXJzaW9uIGbDtnIgZWogc2FtbWFuc2xhZ25hIGZpbGVyIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OAorbXNnaWQgImZvcmNlIGNoZWNrb3V0ICh0aHJvdyBhd2F5IGxvY2FsIG1vZGlmaWNhdGlvbnMpIgorbXNnc3RyICJ0dmluZ2EgdXRjaGVja25pbmcgKGthc3RhIGJvcnQgbG9rYWxhIMOkbmRyaW5nYXIpIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OQorbXNnaWQgInBlcmZvcm0gYSAzLXdheSBtZXJnZSB3aXRoIHRoZSBuZXcgYnJhbmNoIgorbXNnc3RyICJ1dGbDtnIgZW4gMy12w6Rnc3NhbW1hbnNsYWduaW5nIGbDtnIgZGVuIG55YSBncmVuZW4iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYwIGJ1aWx0aW4vbWVyZ2UuYzoyMTcKK21zZ2lkICJ1cGRhdGUgaWdub3JlZCBmaWxlcyAoZGVmYXVsdCkiCittc2dzdHIgInVwcGRhdGVyYSBpZ25vcmVyYWRlIGZpbGVyIChzdGFuZGFyZCkiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYxIGJ1aWx0aW4vbG9nLmM6MTE1OCBwYXJzZS1vcHRpb25zLmg6MjQ1Cittc2dpZCAic3R5bGUiCittc2dzdHIgInN0aWwiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYyCittc2dpZCAiY29uZmxpY3Qgc3R5bGUgKG1lcmdlIG9yIGRpZmYzKSIKK21zZ3N0ciAia29uZmxpa3RzdGlsIChtZXJnZSBlbGxlciBkaWZmMykiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDY1Cittc2dpZCAiZG8gbm90IGxpbWl0IHBhdGhzcGVjcyB0byBzcGFyc2UgZW50cmllcyBvbmx5IgorbXNnc3RyICJiZWdyw6Ruc2EgaW50ZSBzw7ZrdsOkZ2FyIHRpbGwgZW5kYXN0IGdsZXNhIHBvc3RlciIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjcKK21zZ2lkICJzZWNvbmQgZ3Vlc3MgJ2dpdCBjaGVja291dCBuby1zdWNoLWJyYW5jaCciCittc2dzdHIgImbDtnJ1dHNww6UgXCJnaXQgY2hlY2tvdXQgZ3Jlbi1zYWtuYXNcIiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwOTEKK21zZ2lkICItYiwgLUIgYW5kIC0tb3JwaGFuIGFyZSBtdXR1YWxseSBleGNsdXNpdmUiCittc2dzdHIgIi1iLCAtQiBvY2ggLS1vcnBoYW4gw6RyIMO2bXNlc2lkaWd0IHV0ZXNsdXRhbmRlIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTEwOAogbXNnaWQgIi0tdHJhY2sgbmVlZHMgYSBicmFuY2ggbmFtZSIKIG1zZ3N0ciAiLS10cmFjayBiZWjDtnZlciBldHQgbmFtbiBww6UgZW4gZ3JlbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMDAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTE1CiBtc2dpZCAiTWlzc2luZyBicmFuY2ggbmFtZTsgdHJ5IC1iIgogbXNnc3RyICJHcmVubmFtbiBzYWtuYXM7IGbDtnJzw7ZrIG1lZCAtYiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMDYKLW1zZ2lkICItLW9ycGhhbiBhbmQgLWJ8LUIgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSIKLW1zZ3N0ciAiLS1vcnBoYW4gb2NoIC1ifC1CIGthbiBpbnRlIGFudsOkbmRhcyBzYW10aWRpZ3QiCi0KLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDA4Ci1tc2dpZCAiLS1vcnBoYW4gY2Fubm90IGJlIHVzZWQgd2l0aCAtdCIKLW1zZ3N0ciAiLS1vcnBoYW4ga2FuIGludGUgYW52w6RuZGFzIG1lZCAtdCIKLQotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTgKLW1zZ2lkICJnaXQgY2hlY2tvdXQ6IC1mIGFuZCAtbSBhcmUgaW5jb21wYXRpYmxlIgotbXNnc3RyICJnaXQgY2hlY2tvdXQ6IC1mIG9jaCAtbSDDpHIgaW5rb21wYXRpYmxhIgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MgorIzogYnVpbHRpbi9jaGVja291dC5jOjExNTAKIG1zZ2lkICJpbnZhbGlkIHBhdGggc3BlY2lmaWNhdGlvbiIKIG1zZ3N0ciAiZmVsYWt0aWcgc8O2a3bDpGdzYW5naXZlbHNlIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MAorIzogYnVpbHRpbi9jaGVja291dC5jOjExNTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgotImdpdCBjaGVja291dDogdXBkYXRpbmcgcGF0aHMgaXMgaW5jb21wYXRpYmxlIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzLlxuIgorIkNhbm5vdCB1cGRhdGUgcGF0aHMgYW5kIHN3aXRjaCB0byBicmFuY2ggJyVzJyBhdCB0aGUgc2FtZSB0aW1lLlxuIgogIkRpZCB5b3UgaW50ZW5kIHRvIGNoZWNrb3V0ICclcycgd2hpY2ggY2FuIG5vdCBiZSByZXNvbHZlZCBhcyBjb21taXQ/IgogbXNnc3RyICIiCi0iZ2l0IGNoZWNrb3V0OiB1cHBkYXRlcmEgc8O2a3bDpGdhciDDpHIgaW5rb21wYXRpYmVsdCBtZWQgYXR0IHbDpHhsYSBncmVuLlxuIgotIlZpbGxlIGR1IGNoZWNrYSB1dCBcIiVzXCIgc29tIGludGUga2FuIGzDtnNhcyBzb20gZW4gc2FtbWFuc2xhbmluZz8iCisiS2FuIGludGUgdXBwZGF0ZXJhIHPDtmt2w6RnYXIgb2NoIHbDpHhsYSB0aWxsIGdyZW5lbiBcIiVzXCIgc2FtdGlkaWd0LlxuIgorIlZpbGxlIGR1IGNoZWNrYSB1dCBcIiVzXCIgc29tIGludGUga2FuIGzDtnNhcyBzb20gZW4gdXRjaGVja25pbmc/IgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MgotbXNnaWQgImdpdCBjaGVja291dDogdXBkYXRpbmcgcGF0aHMgaXMgaW5jb21wYXRpYmxlIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzLiIKLW1zZ3N0ciAiZ2l0IGNoZWNrb3V0OiB1cHBkYXRlcmEgc8O2a3bDpGdhciDDpHIgaW5rb21wYXRpYmVsdCBtZWQgYXR0IHbDpHhsYSBncmVuLiIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTYyCisjLCBjLWZvcm1hdAorbXNnaWQgImdpdCBjaGVja291dDogLS1kZXRhY2ggZG9lcyBub3QgdGFrZSBhIHBhdGggYXJndW1lbnQgJyVzJyIKK21zZ3N0ciAiZ2l0IGNoZWNrb3V0OiAtLWRldGFjaCB0YXIgaW50ZSBlbiBzw7ZrdsOkZyBzb20gYXJndW1lbnQgXCIlc1wiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2NwotbXNnaWQgImdpdCBjaGVja291dDogLS1kZXRhY2ggZG9lcyBub3QgdGFrZSBhIHBhdGggYXJndW1lbnQiCi1tc2dzdHIgImdpdCBjaGVja291dDogLS1kZXRhY2ggdGFyIGludGUgZW4gc8O2a3bDpGcgc29tIGFyZ3VtZW50IgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA3MAorIzogYnVpbHRpbi9jaGVja291dC5jOjExNjYKIG1zZ2lkICIiCiAiZ2l0IGNoZWNrb3V0OiAtLW91cnMvLS10aGVpcnMsIC0tZm9yY2UgYW5kIC0tbWVyZ2UgYXJlIGluY29tcGF0aWJsZSB3aGVuXG4iCiAiY2hlY2tpbmcgb3V0IG9mIHRoZSBpbmRleC4iCkBAIC0xMTc4LDI2ICszMjk4LDc3IEBACiAiZ2l0IGNoZWNrb3V0OiAtLW91cnMvLS10aGVpcnMsIC0tZm9yY2Ugb2NoIC0tbWVyZ2Ugw6RyIGlua29tcGF0aWJsYSBuw6RyXG4iCiAiZHUgY2hlY2thciB1dCBmcsOlbiBpbmRleGV0LiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwODkKLW1zZ2lkICJDYW5ub3Qgc3dpdGNoIGJyYW5jaCB0byBhIG5vbi1jb21taXQuIgotbXNnc3RyICJLYW4gaW50ZSB2w6R4bGEgZ3JlbiBww6UgZW4gaWNrZS1pbmNoZWNrbmluZy4iCisjOiBidWlsdGluL2NsZWFuLmM6MjAKK21zZ2lkICJnaXQgY2xlYW4gWy1kXSBbLWZdIFstbl0gWy1xXSBbLWUgPHBhdHRlcm4+XSBbLXggfCAtWF0gWy0tXSA8cGF0aHM+Li4uIgorbXNnc3RyICIiCisiZ2l0IGNsZWFuIFstZF0gWy1mXSBbLW5dIFstcV0gWy1lIDxtw7Zuc3Rlcj5dIFsteCB8IC1YXSBbLS1dIDxzw7ZrdsOkZ2FyPi4uLiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwOTIKLW1zZ2lkICItLW91cnMvLS10aGVpcnMgaXMgaW5jb21wYXRpYmxlIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzLiIKLW1zZ3N0ciAiLS1vdXJzLy0tdGhlaXJzIMOkciBpbmtvbXBhdGlibGEgbWVkIGF0dCBieXRhIGdyZW4uIgorIzogYnVpbHRpbi9jbGVhbi5jOjI0CisjLCBjLWZvcm1hdAorbXNnaWQgIlJlbW92aW5nICVzXG4iCittc2dzdHIgIlRhciBib3J0ICVzXG4iCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo3OAorIzogYnVpbHRpbi9jbGVhbi5jOjI1CisjLCBjLWZvcm1hdAorbXNnaWQgIldvdWxkIHJlbW92ZSAlc1xuIgorbXNnc3RyICJTa3VsbGUgdGEgYm9ydCAlc1xuIgorCisjOiBidWlsdGluL2NsZWFuLmM6MjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2tpcHBpbmcgcmVwb3NpdG9yeSAlc1xuIgorbXNnc3RyICJIb3BwYXIgw7Z2ZXIgYXJraXZldCAlc1xuIgorCisjOiBidWlsdGluL2NsZWFuLmM6MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiV291bGQgc2tpcCByZXBvc2l0b3J5ICVzXG4iCittc2dzdHIgIlNrdWxsZSBob3BwYSDDtnZlciBhcmtpdmV0ICVzXG4iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyOAorIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgdG8gcmVtb3ZlICVzIgorbXNnc3RyICJtaXNzbHlja2FkZXMgdGEgYm9ydCAlcyIKKworIzogYnVpbHRpbi9jbGVhbi5jOjE2MAorbXNnaWQgImRvIG5vdCBwcmludCBuYW1lcyBvZiBmaWxlcyByZW1vdmVkIgorbXNnc3RyICJza3JpdiBpbnRlIHV0IG5hbW4gcMOlIGJvcnR0YWduYSBmaWxlciIKKworIzogYnVpbHRpbi9jbGVhbi5jOjE2MgorbXNnaWQgImZvcmNlIgorbXNnc3RyICJ0dmluZ2EiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjQKK21zZ2lkICJyZW1vdmUgd2hvbGUgZGlyZWN0b3JpZXMiCittc2dzdHIgInRhIGJvcnQgaGVsYSBrYXRhbG9nZXIiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjUgYnVpbHRpbi9kZXNjcmliZS5jOjQxMiBidWlsdGluL2dyZXAuYzo3MTcKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODcgYnVpbHRpbi9uYW1lLXJldi5jOjIzMSBidWlsdGluL3Nob3ctcmVmLmM6MTgyCittc2dpZCAicGF0dGVybiIKK21zZ3N0ciAibcO2bnN0ZXIiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjYKK21zZ2lkICJhZGQgPHBhdHRlcm4+IHRvIGlnbm9yZSBydWxlcyIKK21zZ3N0ciAibMOkZ2cgdGlsbCA8bcO2bnN0ZXI+IHRpbGwgaWdub3JlcmluZ3NyZWdsZXIiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjcKK21zZ2lkICJyZW1vdmUgaWdub3JlZCBmaWxlcywgdG9vIgorbXNnc3RyICJ0YSDDpHZlbiBib3J0IGlnbm9yZXJhZGUgZmlsZXIiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjkKK21zZ2lkICJyZW1vdmUgb25seSBpZ25vcmVkIGZpbGVzIgorbXNnc3RyICJ0YSBlbmRhc3QgYm9ydCBpZ25vcmVyYWRlIGZpbGVyIgorCisjOiBidWlsdGluL2NsZWFuLmM6MTg3CiBtc2dpZCAiLXggYW5kIC1YIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIgogbXNnc3RyICIteCBvY2ggLVgga2FuIGludGUgYW52w6RuZGFzIHNhbXRpZGlndCIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjgyCisjOiBidWlsdGluL2NsZWFuLmM6MTkxCiBtc2dpZCAiIgogImNsZWFuLnJlcXVpcmVGb3JjZSBzZXQgdG8gdHJ1ZSBhbmQgbmVpdGhlciAtbiBub3IgLWYgZ2l2ZW47IHJlZnVzaW5nIHRvIGNsZWFuIgogbXNnc3RyICIiCiAiY2xlYW4ucmVxdWlyZUZvcmNlIHNhdHQgdGlsbCB0cnVlLCBtZW4gdmFya2VuIC1uIGVsbGVyIC1mIGFuZ2F2czsgdsOkZ3JhciAiCiAic3TDpGRhIgogCi0jOiBidWlsdGluL2NsZWFuLmM6ODUKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxOTQKIG1zZ2lkICIiCiAiY2xlYW4ucmVxdWlyZUZvcmNlIGRlZmF1bHRzIHRvIHRydWUgYW5kIG5laXRoZXIgLW4gbm9yIC1mIGdpdmVuOyByZWZ1c2luZyB0byAiCiAiY2xlYW4iCkBAIC0xMjA1LDE1OCArMzM3NiwyNzggQEAKICJjbGVhbi5yZXF1aXJlRm9yY2UgaGFyIHN0YW5kYXJkdsOkcmRldCB0cnVlLCBtZW4gdmFya2VuIC1uIGVsbGVyIC1mIGFuZ2F2czsgIgogInbDpGdyYXIgc3TDpGRhIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTU1IGJ1aWx0aW4vY2xlYW4uYzoxNzYKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiV291bGQgcmVtb3ZlICVzXG4iCi1tc2dzdHIgIlNrdWxsZSB0YSBib3J0ICVzXG4iCisjOiBidWlsdGluL2Nsb25lLmM6MzcKK21zZ2lkICJnaXQgY2xvbmUgW29wdGlvbnNdIFstLV0gPHJlcG8+IFs8ZGlyPl0iCittc2dzdHIgImdpdCBjbG9uZSBbZmxhZ2dvcl0gWy0tXSA8YXJraXY+IFs8a2F0Pl0iCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNTkgYnVpbHRpbi9jbGVhbi5jOjE3OQotIywgYy1mb3JtYXQKLW1zZ2lkICJSZW1vdmluZyAlc1xuIgotbXNnc3RyICJUYXIgYm9ydCAlc1xuIgorIzogYnVpbHRpbi9jbG9uZS5jOjY1IGJ1aWx0aW4vZmV0Y2guYzo4MiBidWlsdGluL21lcmdlLmM6MjE0CisjOiBidWlsdGluL3B1c2guYzo0MzYKK21zZ2lkICJmb3JjZSBwcm9ncmVzcyByZXBvcnRpbmciCittc2dzdHIgInR2aW5nYSBmw7ZybG9wcHNyYXBwb3J0ZXJpbmciCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjIgYnVpbHRpbi9jbGVhbi5jOjE4MgotIywgYy1mb3JtYXQKLW1zZ2lkICJmYWlsZWQgdG8gcmVtb3ZlICVzIgotbXNnc3RyICJtaXNzbHlja2FkZXMgdGEgYm9ydCAlcyIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NworbXNnaWQgImRvbid0IGNyZWF0ZSBhIGNoZWNrb3V0IgorbXNnc3RyICJza2FwYSBpbnRlIG7DpWdvbiB1dGNoZWNrbmluZyIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjE2NgotIywgYy1mb3JtYXQKLW1zZ2lkICJXb3VsZCBub3QgcmVtb3ZlICVzXG4iCi1tc2dzdHIgIlNrdWxsZSBpbnRlIHRhIGJvcnQgJXNcbiIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2OCBidWlsdGluL2Nsb25lLmM6NzAgYnVpbHRpbi9pbml0LWRiLmM6NDg4Cittc2dpZCAiY3JlYXRlIGEgYmFyZSByZXBvc2l0b3J5IgorbXNnc3RyICJza2FwYSBldHQgbmFrZXQgKFwiYmFyZVwiKSBhcmtpdiIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjE2OAotIywgYy1mb3JtYXQKLW1zZ2lkICJOb3QgcmVtb3ZpbmcgJXNcbiIKLW1zZ3N0ciAiVGFyIGludGUgYm9ydCAlc1xuIgorIzogYnVpbHRpbi9jbG9uZS5jOjczCittc2dpZCAiY3JlYXRlIGEgbWlycm9yIHJlcG9zaXRvcnkgKGltcGxpZXMgYmFyZSkiCittc2dzdHIgInNrYXBhIGV0dCBzcGVnZWxhcmtpdiAoaW1wbGljZXJhciBcImJhcmVcIikiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzoyNDMKLSMsIGMtZm9ybWF0Ci1tc2dpZCAicmVmZXJlbmNlIHJlcG9zaXRvcnkgJyVzJyBpcyBub3QgYSBsb2NhbCBkaXJlY3RvcnkuIgotbXNnc3RyICJyZWZlcmVuc2Fya2l2ZXQgXCIlc1wiIMOkciBpbnRlIGVuIGxva2FsIGthdGFsb2cuIgorIzogYnVpbHRpbi9jbG9uZS5jOjc1Cittc2dpZCAidG8gY2xvbmUgZnJvbSBhIGxvY2FsIHJlcG9zaXRvcnkiCittc2dzdHIgImbDtnIgYXR0IGtsb25hIGZyw6VuIGV0dCBsb2thbHQgYXJraXYiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMDIKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiZmFpbGVkIHRvIG9wZW4gJyVzJyIKLW1zZ3N0ciAibWlzc2x5Y2thZGVzIMO2cHBuYSBcIiVzXCIiCisjOiBidWlsdGluL2Nsb25lLmM6NzcKK21zZ2lkICJkb24ndCB1c2UgbG9jYWwgaGFyZGxpbmtzLCBhbHdheXMgY29weSIKK21zZ3N0ciAic2thcGEgaW50ZSBsb2thbGEgaMOlcmRhIGzDpG5rYXIsIGtvcGllcmEgYWxsdGlkIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzA2CisjOiBidWlsdGluL2Nsb25lLmM6NzkKK21zZ2lkICJzZXR1cCBhcyBzaGFyZWQgcmVwb3NpdG9yeSIKK21zZ3N0ciAic2thcGEgc29tIGV0dCBkZWxhdCBhcmtpdiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjgxIGJ1aWx0aW4vY2xvbmUuYzo4MworbXNnaWQgImluaXRpYWxpemUgc3VibW9kdWxlcyBpbiB0aGUgY2xvbmUiCittc2dzdHIgImluaXRpZXJhIHVuZGVybW9kdWxlciBpIGtsb25lbiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjg0IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4NQorbXNnaWQgInRlbXBsYXRlLWRpcmVjdG9yeSIKK21zZ3N0ciAibWFsbGthdGFsb2ciCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NSBidWlsdGluL2luaXQtZGIuYzo0ODYKK21zZ2lkICJkaXJlY3RvcnkgZnJvbSB3aGljaCB0ZW1wbGF0ZXMgd2lsbCBiZSB1c2VkIgorbXNnc3RyICJrYXRhbG9nIGF0dCBhbnbDpG5kYSBtYWxsYXIgZnLDpW4iCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NworbXNnaWQgInJlZmVyZW5jZSByZXBvc2l0b3J5IgorbXNnc3RyICJyZWZlcmVuc2Fya2l2IgorCisjOiBidWlsdGluL2Nsb25lLmM6ODggYnVpbHRpbi9jb2x1bW4uYzoyNiBidWlsdGluL21lcmdlLWZpbGUuYzo0NAorbXNnaWQgIm5hbWUiCittc2dzdHIgIm5hbW4iCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4OQorbXNnaWQgInVzZSA8bmFtZT4gaW5zdGVhZCBvZiAnb3JpZ2luJyB0byB0cmFjayB1cHN0cmVhbSIKK21zZ3N0ciAiYW52w6RuZCA8bmFtbj4gaXN0w6RsbGV0IGbDtnIgXCJvcmlnaW5cIiBmw7ZyIGF0dCBzcMOlcmEgdXBwc3Ryw7ZtcyIKKworIzogYnVpbHRpbi9jbG9uZS5jOjkxCittc2dpZCAiY2hlY2tvdXQgPGJyYW5jaD4gaW5zdGVhZCBvZiB0aGUgcmVtb3RlJ3MgSEVBRCIKK21zZ3N0ciAiY2hlY2thIHV0IDxncmVuPiBpc3TDpGxsZXQgZsO2ciBmasOkcnJlbnMgSEVBRCIKKworIzogYnVpbHRpbi9jbG9uZS5jOjkzCittc2dpZCAicGF0aCB0byBnaXQtdXBsb2FkLXBhY2sgb24gdGhlIHJlbW90ZSIKK21zZ3N0ciAic8O2a3bDpGcgdGlsbCBnaXQtdXBsb2FkLXBhY2sgcMOlIGZqw6RycmVuIgorCisjOiBidWlsdGluL2Nsb25lLmM6OTQgYnVpbHRpbi9mZXRjaC5jOjgzIGJ1aWx0aW4vZ3JlcC5jOjY2MgorbXNnaWQgImRlcHRoIgorbXNnc3RyICJkanVwIgorCisjOiBidWlsdGluL2Nsb25lLmM6OTUKK21zZ2lkICJjcmVhdGUgYSBzaGFsbG93IGNsb25lIG9mIHRoYXQgZGVwdGgiCittc2dzdHIgInNrYXBhIGVuIGdydW5kIGtsb24gcMOlIGRldHRhIGRqdXAiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5NworbXNnaWQgImNsb25lIG9ubHkgb25lIGJyYW5jaCwgSEVBRCBvciAtLWJyYW5jaCIKK21zZ3N0ciAia2xvbmEgZW5kYXN0IGVuIGdyZW4sIEhFQUQgZWxsZXIgLS1icmFuY2giCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5OCBidWlsdGluL2luaXQtZGIuYzo0OTQKK21zZ2lkICJnaXRkaXIiCittc2dzdHIgImdpdGthdCIKKworIzogYnVpbHRpbi9jbG9uZS5jOjk5IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NQorbXNnaWQgInNlcGFyYXRlIGdpdCBkaXIgZnJvbSB3b3JraW5nIHRyZWUiCittc2dzdHIgInNlcGFyZXJhIGdpdGthdGFsb2dlbiBmcsOlbiBhcmJldHNrYXRhbG9nZW4iCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzoxMDAKK21zZ2lkICJrZXk9dmFsdWUiCittc2dzdHIgIm55Y2tlbD12w6RyZGUiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzoxMDEKK21zZ2lkICJzZXQgY29uZmlnIGluc2lkZSB0aGUgbmV3IHJlcG9zaXRvcnkiCittc2dzdHIgInN0w6RsbCBpbiBrb25maWd1cmF0aW9uIGkgZGV0IG55YSBhcmtpdmV0IgorCisjOiBidWlsdGluL2Nsb25lLmM6MjU0CisjLCBjLWZvcm1hdAorbXNnaWQgInJlZmVyZW5jZSByZXBvc2l0b3J5ICclcycgaXMgbm90IGEgbG9jYWwgcmVwb3NpdG9yeS4iCittc2dzdHIgInJlZmVyZW5zYXJraXZldCBcIiVzXCIgw6RyIGludGUgZXR0IGxva2FsdCBhcmtpdi4iCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJyVzJyIKIG1zZ3N0ciAibWlzc2x5Y2thZGVzIHNrYXBhIGthdGFsb2dlbiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMDggYnVpbHRpbi9kaWZmLmM6NzUKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMTkgYnVpbHRpbi9kaWZmLmM6NzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHN0YXQgJyVzJyIKIG1zZ3N0ciAibWlzc2x5Y2thZGVzIHRhIHN0YXR1cyBww6UgXCIlc1wiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzEwCisjOiBidWlsdGluL2Nsb25lLmM6MzIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGV4aXN0cyBhbmQgaXMgbm90IGEgZGlyZWN0b3J5IgogbXNnc3RyICIlcyBmaW5ucyBvY2ggw6RyIGluZ2VuIGthdGFsb2ciCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMjQKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHN0YXQgJXNcbiIKIG1zZ3N0ciAibWlzc2x5Y2thZGVzIHRhIHN0YXR1cyBww6UgJXNcbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjM0MQotIywgYy1mb3JtYXQKLW1zZ2lkICJmYWlsZWQgdG8gdW5saW5rICclcyciCi1tc2dzdHIgIm1pc3NseWNrYWRlcyB0YSBib3J0IGzDpG5rZW4gXCIlc1wiIgotCi0jOiBidWlsdGluL2Nsb25lLmM6MzQ2CisjOiBidWlsdGluL2Nsb25lLmM6MzU3CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjcmVhdGUgbGluayAnJXMnIgogbXNnc3RyICJtaXNzbHlja2FkZXMgc2thcGEgbMOkbmtlbiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozNTAKKyM6IGJ1aWx0aW4vY2xvbmUuYzozNjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGNvcHkgZmlsZSB0byAnJXMnIgogbXNnc3RyICJtaXNzbHlja2FkZXMga29waWVyYSBmaWxlbiB0aWxsIFwiJXNcIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjM3MworIzogYnVpbHRpbi9jbG9uZS5jOjM4NAogIywgYy1mb3JtYXQKIG1zZ2lkICJkb25lLlxuIgogbXNnc3RyICJrbGFydC5cbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjQ0MAorIzogYnVpbHRpbi9jbG9uZS5jOjM5NworbXNnaWQgIiIKKyJDbG9uZSBzdWNjZWVkZWQsIGJ1dCBjaGVja291dCBmYWlsZWQuXG4iCisiWW91IGNhbiBpbnNwZWN0IHdoYXQgd2FzIGNoZWNrZWQgb3V0IHdpdGggJ2dpdCBzdGF0dXMnXG4iCisiYW5kIHJldHJ5IHRoZSBjaGVja291dCB3aXRoICdnaXQgY2hlY2tvdXQgLWYgSEVBRCdcbiIKK21zZ3N0ciAiIgorIktsb25lbiBseWNrYWRlcywgbWVuIHV0Y2hlY2tuaW5nZW4gbWlzc2x5Y2thZGVzLlxuIgorIkR1IGthbiBpbnNwZWt0ZXJhIGRldCBzb20gY2hlY2thZGVzIHV0IG1lZCBcImdpdCBzdGF0dXNcIlxuIgorIm9jaCBmw7Zyc8O2a2EgY2hlY2thIHV0IGlnZW4gbWVkIFwiZ2l0IGNoZWNrb3V0IC1mIEhFQURcIlxuIgorCisjOiBidWlsdGluL2Nsb25lLmM6NDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmaW5kIHJlbW90ZSBicmFuY2ggJXMgdG8gY2xvbmUuIgogbXNnc3RyICJLdW5kZSBpbnRlIGhpdHRhIGZqw6RycmdyZW5lbiAlcyBmw7ZyIGF0dCBrbG9uYS4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo1NDkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo1NTAKK21zZ2lkICJyZW1vdGUgZGlkIG5vdCBzZW5kIGFsbCBuZWNlc3Nhcnkgb2JqZWN0cyIKK21zZ3N0ciAiZmrDpHJyZW4gc8OkbmRlIGludGUgYWxsYSBuw7ZkdsOkbmRpZ2Egb2JqZWt0IgorCisjOiBidWlsdGluL2Nsb25lLmM6NjEwCiBtc2dpZCAicmVtb3RlIEhFQUQgcmVmZXJzIHRvIG5vbmV4aXN0ZW50IHJlZiwgdW5hYmxlIHRvIGNoZWNrb3V0LlxuIgogbXNnc3RyICIiCiAiSEVBRCBob3MgZmrDpHJyZW4gcGVrYXIgcMOlIGVuIG9iZWZpbnRsaWcgcmVmZXJlbnMsIGthbiBpbnRlIGNoZWNrYSB1dC5cbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjYzOQorIzogYnVpbHRpbi9jbG9uZS5jOjY0MQorbXNnaWQgInVuYWJsZSB0byBjaGVja291dCB3b3JraW5nIHRyZWUiCittc2dzdHIgImt1bmRlIGludGUgY2hlY2thIHV0IGFyYmV0c2thdGFsb2dlbiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjc0OQogbXNnaWQgIlRvbyBtYW55IGFyZ3VtZW50cy4iCiBtc2dzdHIgIkbDtnIgbcOlbmdhIGFyZ3VtZW50LiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY0MworIzogYnVpbHRpbi9jbG9uZS5jOjc1MwogbXNnaWQgIllvdSBtdXN0IHNwZWNpZnkgYSByZXBvc2l0b3J5IHRvIGNsb25lLiIKIG1zZ3N0ciAiRHUgbcOlc3RlIGFuZ2UgZXR0IGFya2l2IGF0dCBrbG9uYS4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NTQKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiLS1iYXJlIGFuZCAtLW9yaWdpbiAlcyBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgogbXNnc3RyICJmbGFnZ29ybmEgLS1iYXJlIG9jaCAtLW9yaWdpbiAlcyDDpHIgaW5rb21wYXRpYmxhLiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY2OAorIzogYnVpbHRpbi9jbG9uZS5jOjc2NworbXNnaWQgIi0tYmFyZSBhbmQgLS1zZXBhcmF0ZS1naXQtZGlyIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJmbGFnZ29ybmEgLS1iYXJlIG9jaCAtLXNlcGFyYXRlLWdpdC1kaXIgw6RyIGlua29tcGF0aWJsYS4iCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3ODAKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVwb3NpdG9yeSAnJXMnIGRvZXMgbm90IGV4aXN0IgogbXNnc3RyICJhcmtpdmV0IFwiJXNcIiBmaW5ucyBpbnRlIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjczCisjOiBidWlsdGluL2Nsb25lLmM6Nzg1CiBtc2dpZCAiLS1kZXB0aCBpcyBpZ25vcmVkIGluIGxvY2FsIGNsb25lczsgdXNlIGZpbGU6Ly8gaW5zdGVhZC4iCiBtc2dzdHIgIi0tZGVwdGggaWdub3JlcmFzIGkgbG9rYWxhIGtsb25pbmdhcjsgYW52w6RuZCBmaWxlOi8vIGlzdMOkbGxldCIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY4MworIzogYnVpbHRpbi9jbG9uZS5jOjc5NQogIywgYy1mb3JtYXQKIG1zZ2lkICJkZXN0aW5hdGlvbiBwYXRoICclcycgYWxyZWFkeSBleGlzdHMgYW5kIGlzIG5vdCBhbiBlbXB0eSBkaXJlY3RvcnkuIgogbXNnc3RyICJkZXN0aW5hdGlvbnNzw7ZrdsOkZ2VuIFwiJXNcIiBmaW5ucyByZWRhbiBvY2ggw6RyIGludGUgZW4gdG9tIGthdGFsb2cuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjkzCisjOiBidWlsdGluL2Nsb25lLmM6ODA1CiAjLCBjLWZvcm1hdAogbXNnaWQgIndvcmtpbmcgdHJlZSAnJXMnIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiYXJiZXRzdHLDpGRldCBcIiVzXCIgZmlubnMgcmVkYW4uIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzA2IGJ1aWx0aW4vY2xvbmUuYzo3MjAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MTggYnVpbHRpbi9jbG9uZS5jOjgzMAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIGxlYWRpbmcgZGlyZWN0b3JpZXMgb2YgJyVzJyIKIG1zZ3N0ciAia3VuZGUgaW50ZSBza2FwYSBpbmxlZGFuZGUga2F0YWxvZ2VyIGbDtnIgXCIlc1wiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzA5CisjOiBidWlsdGluL2Nsb25lLmM6ODIxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgd29yayB0cmVlIGRpciAnJXMnLiIKIG1zZ3N0ciAia3VuZGUgaW50ZSBza2FwYSBhcmJldHNrYXRhbG9nZW4gXCIlc1wiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzI4CisjOiBidWlsdGluL2Nsb25lLmM6ODQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNsb25pbmcgaW50byBiYXJlIHJlcG9zaXRvcnkgJyVzJy4uLlxuIgogbXNnc3RyICJLbG9uYXIgdGlsbCBldHQgbmFrZXQgYXJraXYgXCIlc1wiLi4uXG4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3MzAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2xvbmluZyBpbnRvICclcycuLi5cbiIKIG1zZ3N0ciAiS2xvbmFyIHRpbGwgXCIlc1wiLi4uXG4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3ODYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiRG9uJ3Qga25vdyBob3cgdG8gY2xvbmUgJXMiCiBtc2dzdHIgIlZldCBpbnRlIGh1ciBtYW4ga2xvbmFyICVzIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODM1CisjOiBidWlsdGluL2Nsb25lLmM6OTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbW90ZSBicmFuY2ggJXMgbm90IGZvdW5kIGluIHVwc3RyZWFtICVzIgogbXNnc3RyICJGasOkcnJncmVuZW4gJXMgaGl0dGFkZXMgaW50ZSBpIHVwcHN0csO2bXNhcmtpdmV0ICVzIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODQyCisjOiBidWlsdGluL2Nsb25lLmM6OTMzCiBtc2dpZCAiWW91IGFwcGVhciB0byBoYXZlIGNsb25lZCBhbiBlbXB0eSByZXBvc2l0b3J5LiIKIG1zZ3N0ciAiRHUgdmVya2FyIGhhIGtsb25hdCBldHQgdG9tdCBhcmtpdi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NDIKKyM6IGJ1aWx0aW4vY29sdW1uLmM6OQorbXNnaWQgImdpdCBjb2x1bW4gW29wdGlvbnNdIgorbXNnc3RyICJnaXQgY29sdW1uIFtmbGFnZ29yXSIKKworIzogYnVpbHRpbi9jb2x1bW4uYzoyNgorbXNnaWQgImxvb2t1cCBjb25maWcgdmFycyIKK21zZ3N0ciAic2zDpSB1cHAga29uZmlndXJhdGlvbnN2YXJpYWJsZXIiCisKKyM6IGJ1aWx0aW4vY29sdW1uLmM6MjcgYnVpbHRpbi9jb2x1bW4uYzoyOAorbXNnaWQgImxheW91dCB0byB1c2UiCittc2dzdHIgInV0c2VlbmRlIGF0dCBhbnbDpG5kYSIKKworIzogYnVpbHRpbi9jb2x1bW4uYzoyOQorbXNnaWQgIk1heGltdW0gd2lkdGgiCittc2dzdHIgIk1heGltYWwgYnJlZGQiCisKKyM6IGJ1aWx0aW4vY29sdW1uLmM6MzAKK21zZ2lkICJQYWRkaW5nIHNwYWNlIG9uIGxlZnQgYm9yZGVyIgorbXNnc3RyICJTcGFsdGZ5bGxuYWQgaSB2w6Ruc3RlcmthbnRlbiIKKworIzogYnVpbHRpbi9jb2x1bW4uYzozMQorbXNnaWQgIlBhZGRpbmcgc3BhY2Ugb24gcmlnaHQgYm9yZGVyIgorbXNnc3RyICJTcGFsdGZ5bGxuYWQgaSBow7ZnZXJrYW50ZW4iCisKKyM6IGJ1aWx0aW4vY29sdW1uLmM6MzIKK21zZ2lkICJQYWRkaW5nIHNwYWNlIGJldHdlZW4gY29sdW1ucyIKK21zZ3N0ciAiU3BhbHRmeWxsbmFkIG1lbGxhbiBzcGFsdGVyIgorCisjOiBidWlsdGluL2NvbHVtbi5jOjUxCittc2dpZCAiLS1jb21tYW5kIG11c3QgYmUgdGhlIGZpcnN0IGFyZ3VtZW50IgorbXNnc3RyICItLWNvbW1hbmQgbcOlc3RlIHZhcmEgZsO2cnN0YSBhcmd1bWVudCIKKworIzogYnVpbHRpbi9jb21taXQuYzozNAorbXNnaWQgImdpdCBjb21taXQgW29wdGlvbnNdIFstLV0gPHBhdGhzcGVjPi4uLiIKK21zZ3N0ciAiZ2l0IGNvbW1pdCBbZmxhZ2dvcl0gWy0tXSA8c8O2a3bDpGc+Li4uIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjM5Cittc2dpZCAiZ2l0IHN0YXR1cyBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICJnaXQgc3RhdHVzIFtmbGFnZ29yXSBbLS1dIDxzw7ZrdsOkZz4uLi4iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDQKIG1zZ2lkICIiCiAiWW91ciBuYW1lIGFuZCBlbWFpbCBhZGRyZXNzIHdlcmUgY29uZmlndXJlZCBhdXRvbWF0aWNhbGx5IGJhc2VkXG4iCiAib24geW91ciB1c2VybmFtZSBhbmQgaG9zdG5hbWUuIFBsZWFzZSBjaGVjayB0aGF0IHRoZXkgYXJlIGFjY3VyYXRlLlxuIgpAQCAtMTM4MSw3ICszNjcyLDcgQEAKICJcbiIKICIgICAgZ2l0IGNvbW1pdCAtLWFtZW5kIC0tcmVzZXQtYXV0aG9yXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTYKIG1zZ2lkICIiCiAiWW91IGFza2VkIHRvIGFtZW5kIHRoZSBtb3N0IHJlY2VudCBjb21taXQsIGJ1dCBkb2luZyBzbyB3b3VsZCBtYWtlXG4iCiAiaXQgZW1wdHkuIFlvdSBjYW4gcmVwZWF0IHlvdXIgY29tbWFuZCB3aXRoIC0tYWxsb3ctZW1wdHksIG9yIHlvdSBjYW5cbiIKQEAgLTEzOTEsNyArMzY4Miw3IEBACiAiYmxpciBkZW4gdG9tLiBEdSBrYW4ga8O2cmEga29tbWFuZG90IHDDpSBueXR0IG1lZCAtLWFsbG93LWVtcHR5LCBlbGxlclxuIgogInPDpSBrYW4gZHUgdGEgYm9ydCBpbmNoZWNrbmluZ2VuIGhlbHQgbWVkIFwiZ2l0IHJlc2V0IEhFQUReXCIuXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjEKIG1zZ2lkICIiCiAiVGhlIHByZXZpb3VzIGNoZXJyeS1waWNrIGlzIG5vdyBlbXB0eSwgcG9zc2libHkgZHVlIHRvIGNvbmZsaWN0IHJlc29sdXRpb24uXG4iCiAiSWYgeW91IHdpc2ggdG8gY29tbWl0IGl0IGFueXdheSwgdXNlOlxuIgpAQCAtMTQwNywyOTEgKzM2OTgsNDk0IEBACiAiXG4iCiAiQW5uYXJzIGFudsOkbmRlciBkdSBcImdpdCByZXNldFwiXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MjA1IGJ1aWx0aW4vcmVzZXQuYzozMwotbXNnaWQgIm1lcmdlIgotbXNnc3RyICJzYW1tYW5zbGFnbmluZyIKLQotIzogYnVpbHRpbi9jb21taXQuYzoyMDgKLW1zZ2lkICJjaGVycnktcGljayIKLW1zZ3N0ciAiY2hlcnJ5LXBpY2siCi0KLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzI1CisjOiBidWlsdGluL2NvbW1pdC5jOjI2MAogbXNnaWQgImZhaWxlZCB0byB1bnBhY2sgSEVBRCB0cmVlIG9iamVjdCIKIG1zZ3N0ciAibWlzc2x5Y2thZGVzIHBhY2thIHVwcCBIRUFEOnMgdHLDpGRvYmpla3QiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzY3CisjOiBidWlsdGluL2NvbW1pdC5jOjMwMgogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGluZGV4IgogbXNnc3RyICJrdW5kZSBpbnRlIHNrYXBhIHRlbXBvcsOkciBpbmRleGZpbCIKIAotIzogYnVpbHRpbi9jb21taXQuYzozNzMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzA4CiBtc2dpZCAiaW50ZXJhY3RpdmUgYWRkIGZhaWxlZCIKIG1zZ3N0ciAiaW50ZXJha3RpdiB0aWxsw6RnZ25pbmcgbWlzc2x5Y2thZGVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjQwNiBidWlsdGluL2NvbW1pdC5jOjQyNyBidWlsdGluL2NvbW1pdC5jOjQ3MworIzogYnVpbHRpbi9jb21taXQuYzozNDEgYnVpbHRpbi9jb21taXQuYzozNjIgYnVpbHRpbi9jb21taXQuYzo0MTIKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbmV3X2luZGV4IGZpbGUiCiBtc2dzdHIgImt1bmRlIGludGUgc2tyaXZhIGZpbGVuIG5ld19pbmRleCIKIAotIyAlcyDDpHIgYW50aW5nZW4gIm1lcmdlIiBlbGxlciAiY2hlcnJ5LXBpY2siLgotIzogYnVpbHRpbi9jb21taXQuYzo0NTcKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiY2Fubm90IGRvIGEgcGFydGlhbCBjb21taXQgZHVyaW5nIGEgJXMuIgotbXNnc3RyICJrYW4gaW50ZSB1dGbDtnJhIGVuIGRlbHZpcyBpbmNoZWNrbmluZyB1bmRlciBlbiAlcyIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzkzCittc2dpZCAiY2Fubm90IGRvIGEgcGFydGlhbCBjb21taXQgZHVyaW5nIGEgbWVyZ2UuIgorbXNnc3RyICJrYW4gaW50ZSB1dGbDtnJhIGVuIGRlbHZpcyBpbmNoZWNrbmluZyB1bmRlciBlbiBzYW1tYW5zbGFnbmluZy4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NDY2CisjOiBidWlsdGluL2NvbW1pdC5jOjM5NQorbXNnaWQgImNhbm5vdCBkbyBhIHBhcnRpYWwgY29tbWl0IGR1cmluZyBhIGNoZXJyeS1waWNrLiIKK21zZ3N0ciAia2FuIGludGUgdXRmw7ZyYSBlbiBkZWx2aXMgaW5jaGVja25pbmcgdW5kZXIgZW4gY2hlcnJ5LXBpY2suIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjQwNQogbXNnaWQgImNhbm5vdCByZWFkIHRoZSBpbmRleCIKIG1zZ3N0ciAia2FuIGludGUgbMOkc2EgaW5kZXhldCIKIAotIzogYnVpbHRpbi9jb21taXQuYzo0ODYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDI1CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIHRlbXBvcmFyeSBpbmRleCBmaWxlIgogbXNnc3RyICJrdW5kZSBpbnRlIHNrcml2YSB0ZW1wb3LDpHIgaW5kZXhmaWwiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTYxIGJ1aWx0aW4vY29tbWl0LmM6NTY3CisjOiBidWlsdGluL2NvbW1pdC5jOjUxMyBidWlsdGluL2NvbW1pdC5jOjUxOQogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGNvbW1pdDogJXMiCiBtc2dzdHIgImZlbGFrdGlnIGluY2hlY2tuaW5nOiAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1OTAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTQyCiBtc2dpZCAibWFsZm9ybWVkIC0tYXV0aG9yIHBhcmFtZXRlciIKIG1zZ3N0ciAiZmVsZm9ybWFkIFwiLS1hdXRob3JcIi1mbGFnZ2EiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjUxCisjOiBidWlsdGluL2NvbW1pdC5jOjU2MgogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWxmb3JtZWQgaWRlbnQgc3RyaW5nOiAnJXMnIgogbXNnc3RyICJGZWxha3RpZyBpbmRyYWduaW5nc3N0csOkbmc6IFwiJXNcIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2ODkgYnVpbHRpbi9jb21taXQuYzo3MjIgYnVpbHRpbi9jb21taXQuYzoxMDMzCisjOiBidWlsdGluL2NvbW1pdC5jOjYwMCBidWlsdGluL2NvbW1pdC5jOjYzMyBidWlsdGluL2NvbW1pdC5jOjk1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgbG9va3VwIGNvbW1pdCAlcyIKIG1zZ3N0ciAia3VuZGUgaW50ZSBzbMOlIHVwcCBpbmNoZWNrbmluZ2VuICVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjcwMSBidWlsdGluL3Nob3J0bG9nLmM6Mjk2CisjOiBidWlsdGluL2NvbW1pdC5jOjYxMiBidWlsdGluL3Nob3J0bG9nLmM6MjcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIihyZWFkaW5nIGxvZyBtZXNzYWdlIGZyb20gc3RhbmRhcmQgaW5wdXQpXG4iCiBtc2dzdHIgIihsw6RzZXIgbG9nZ21lZGRlbGFuZGUgZnLDpW4gc3RhbmRhcmQgaW4pXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzAzCisjOiBidWlsdGluL2NvbW1pdC5jOjYxNAogbXNnaWQgImNvdWxkIG5vdCByZWFkIGxvZyBmcm9tIHN0YW5kYXJkIGlucHV0IgogbXNnc3RyICJrdW5kZSBpbnRlIGzDpHNhIGxvZ2cgZnLDpW4gc3RhbmRhcmQgaW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzA3CisjOiBidWlsdGluL2NvbW1pdC5jOjYxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBsb2cgZmlsZSAnJXMnIgogbXNnc3RyICJrdW5kZSBpbnRlIGzDpHNhIGxvZ2dmaWxlbiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzEzCisjOiBidWlsdGluL2NvbW1pdC5jOjYyNAogbXNnaWQgImNvbW1pdCBoYXMgZW1wdHkgbWVzc2FnZSIKIG1zZ3N0ciAiaW5jaGVja25pbmdlbiBoYXIgZXR0IHRvbXQgbWVkZGVsYW5kZSIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MjkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjQwCiBtc2dpZCAiY291bGQgbm90IHJlYWQgTUVSR0VfTVNHIgogbXNnc3RyICJrdW5kZSBpbnRlIGzDpHNhIE1FUkdFX01TRyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MzMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjQ0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgU1FVQVNIX01TRyIKIG1zZ3N0ciAia3VuZGUgaW50ZSBsw6RzYSBTUVVBU0hfTVNHIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjczNworIzogYnVpbHRpbi9jb21taXQuYzo2NDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgJyVzJyIKIG1zZ3N0ciAia3VuZGUgaW50ZSBsw6RzYSBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzY1Ci0jLCBjLWZvcm1hdAotbXNnaWQgImNvdWxkIG5vdCBvcGVuICclcyciCi1tc2dzdHIgImt1bmRlIGludGUgw7ZwcG5hIFwiJXNcIiIKLQotIzogYnVpbHRpbi9jb21taXQuYzo3ODkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzA5CiBtc2dpZCAiY291bGQgbm90IHdyaXRlIGNvbW1pdCB0ZW1wbGF0ZSIKIG1zZ3N0ciAia3VuZGUgaW50ZSBza3JpdmEgaW5jaGVja25pbmdzbWFsbCIKIAotIyAlcyDDpHIgIm1lcmdlIiBlbGxlciAiY2hlcnJ5LXBpY2siCi0jOiBidWlsdGluL2NvbW1pdC5jOjc5OQorIzogYnVpbHRpbi9jb21taXQuYzo3MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgotIkl0IGxvb2tzIGxpa2UgeW91IG1heSBiZSBjb21taXR0aW5nIGEgJXMuXG4iCisiSXQgbG9va3MgbGlrZSB5b3UgbWF5IGJlIGNvbW1pdHRpbmcgYSBtZXJnZS5cbiIKICJJZiB0aGlzIGlzIG5vdCBjb3JyZWN0LCBwbGVhc2UgcmVtb3ZlIHRoZSBmaWxlXG4iCiAiXHQlc1xuIgogImFuZCB0cnkgYWdhaW4uXG4iCiBtc2dzdHIgIiIKICJcbiIKLSJEZXQgdmVya2FyIHNvbSBkdSBjaGVja2FyIGluIGVuICVzLlxuIgorIkRldCB2ZXJrYXIgc29tIGR1IGNoZWNrYXIgaW4gZW4gc2FtbWFuc2xhZ25pbmcuXG4iCiAiT20gZGV0IGludGUgc3TDpG1tZXIgdGFyIGR1IGJvcnQgZmlsZW5cbiIKICJcdCVzXG4iCiAib2NoIGbDtnJzw7ZrZXIgaWdlbi5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo4MTIKLW1zZ2lkICJQbGVhc2UgZW50ZXIgdGhlIGNvbW1pdCBtZXNzYWdlIGZvciB5b3VyIGNoYW5nZXMuIgotbXNnc3RyICJBbmdlIGV0dCBpbmNoZWNrbmluZ3NtZWRkZWxhbmRlIGbDtnIgZGluYSDDpG5kcmluZ2FyLiIKLQotIzogYnVpbHRpbi9jb21taXQuYzo4MTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzI1CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKLSIgTGluZXMgc3RhcnRpbmdcbiIKLSJ3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0cyB0aGUgY29tbWl0LlxuIgorIlxuIgorIkl0IGxvb2tzIGxpa2UgeW91IG1heSBiZSBjb21taXR0aW5nIGEgY2hlcnJ5LXBpY2suXG4iCisiSWYgdGhpcyBpcyBub3QgY29ycmVjdCwgcGxlYXNlIHJlbW92ZSB0aGUgZmlsZVxuIgorIlx0JXNcbiIKKyJhbmQgdHJ5IGFnYWluLlxuIgogbXNnc3RyICIiCi0iIFJhZGVyIHNvbSBpbmxlZHNcbiIKLSJtZWQgXCIjXCIga29tbWVyIGlnbm9yZXJhcywgb2NoIGV0dCB0b210IG1lZGRlbGFuZGUgYXZicnl0ZXIgaW5jaGVja25pbmdlbi5cbiIKKyJcbiIKKyJEZXQgdmVya2FyIHNvbSBkdSBjaGVja2FyIGluIGVuIGNoZXJyeS1waWNrLlxuIgorIk9tIGRldCBpbnRlIHN0w6RtbWVyIHRhciBkdSBib3J0IGZpbGVuXG4iCisiXHQlc1xuIgorIm9jaCBmw7Zyc8O2a2VyIGlnZW4uXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODIwCisjOiBidWlsdGluL2NvbW1pdC5jOjczNworIywgYy1mb3JtYXQKIG1zZ2lkICIiCi0iIExpbmVzIHN0YXJ0aW5nXG4iCi0id2l0aCAnIycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIHlvdXJzZWxmIGlmIHlvdSB3YW50IHRvLlxuIgorIlBsZWFzZSBlbnRlciB0aGUgY29tbWl0IG1lc3NhZ2UgZm9yIHlvdXIgY2hhbmdlcy4gTGluZXMgc3RhcnRpbmdcbiIKKyJ3aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkgbWVzc2FnZSBhYm9ydHMgdGhlIGNvbW1pdC5cbiIKK21zZ3N0ciAiIgorIkFuZ2UgaW5jaGVja25pbmdzbWVkZGVsYW5kZXQgZsO2ciBkaW5hIMOkbmRyaW5nYXIuIFJhZGVyIHNvbSBpbmxlZHNcbiIKKyJtZWQgXCIlY1wiIGtvbW1lciBpZ25vcmVyYXMsIG9jaCBldHQgdG9tdCBtZWRkZWxhbmRlIGF2YnJ5dGVyICIKKyJpbmNoZWNrbmluZ2VuLlxuIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjc0MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIGVudGVyIHRoZSBjb21taXQgbWVzc2FnZSBmb3IgeW91ciBjaGFuZ2VzLiBMaW5lcyBzdGFydGluZ1xuIgorIndpdGggJyVjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0geW91cnNlbGYgaWYgeW91IHdhbnQgdG8uXG4iCiAiQW4gZW1wdHkgbWVzc2FnZSBhYm9ydHMgdGhlIGNvbW1pdC5cbiIKIG1zZ3N0ciAiIgotIiBSYWRlciBzb20gaW5sZWRzXG4iCi0ibWVkIFwiI1wiIGtvbW1lciBiZWjDpWxsYXM7IGR1IGthbiBzasOkbHYgdGEgYm9ydCBkZW0gb20gZHUgdmlsbC5cbiIKKyJBbmdlIGluY2hlY2tuaW5nc21lZGRlbGFuZGV0IGbDtnIgZGluYSDDpG5kcmluZ2FyLiBSYWRlciBzb20gaW5sZWRzXG4iCisibWVkIFwiJWNcIiBrb21tZXIgYmVow6VsbGFzOyBkdSBrYW4gc2rDpGx2IHRhIGJvcnQgZGVtIG9tIGR1IHZpbGwuXG4iCiAiRXR0IHRvbXQgbWVkZGVsYW5kZSBhdmJyeXRlciBpbmNoZWNrbmluZ2VuLlxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjgzMgorIzogYnVpbHRpbi9jb21taXQuYzo3NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXNBdXRob3I6ICAgICVzIgogbXNnc3RyICIlc0bDtnJmYXR0YXJlOiAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo4MzkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzYyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzQ29tbWl0dGVyOiAlcyIKIG1zZ3N0ciAiJXNJbmNoZWNrYXJlOiAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo4NTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzgyCiBtc2dpZCAiQ2Fubm90IHJlYWQgaW5kZXgiCiBtc2dzdHIgIkthbiBpbnRlIGzDpHNhIGluZGV4ZXQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODk2CisjOiBidWlsdGluL2NvbW1pdC5jOjgxOQogbXNnaWQgIkVycm9yIGJ1aWxkaW5nIHRyZWVzIgogbXNnc3RyICJGZWwgdmlkIGJ5Z2dhbmRlIGF2IHRyw6RkIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjkxMSBidWlsdGluL3RhZy5jOjM1NworIzogYnVpbHRpbi9jb21taXQuYzo4MzQgYnVpbHRpbi90YWcuYzozNTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiUGxlYXNlIHN1cHBseSB0aGUgbWVzc2FnZSB1c2luZyBlaXRoZXIgLW0gb3IgLUYgb3B0aW9uLlxuIgogbXNnc3RyICJBbmdlIG1lZGRlbGFuZGV0IGVuIGF2IGZsYWdnb3JuYSAtbSBlbGxlciAtRi5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDA4CisjOiBidWlsdGluL2NvbW1pdC5jOjkzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBleGlzdGluZyBhdXRob3IgZm91bmQgd2l0aCAnJXMnIgogbXNnc3RyICJIaXR0YWRlIGluZ2VuIGJlZmludGxpZyBmw7ZyZmF0dGFyZSBtZWQgXCIlc1wiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMjMgYnVpbHRpbi9jb21taXQuYzoxMjE3CisjOiBidWlsdGluL2NvbW1pdC5jOjk0NiBidWlsdGluL2NvbW1pdC5jOjExNDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCB1bnRyYWNrZWQgZmlsZXMgbW9kZSAnJXMnIgogbXNnc3RyICJPZ2lsdGlndCBsw6RnZSBmw7ZyIG9zcMOlcmFkZSBmaWxlcjogXCIlc1wiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNjMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTc2CiBtc2dpZCAiVXNpbmcgYm90aCAtLXJlc2V0LWF1dGhvciBhbmQgLS1hdXRob3IgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiS2FuIGludGUgYW52w6RuZGEgYsOlZGUgLS1yZXNldC1hdXRob3Igb2NoIC0tYXV0aG9yIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNzQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTg3CiBtc2dpZCAiWW91IGhhdmUgbm90aGluZyB0byBhbWVuZC4iCiBtc2dzdHIgIkR1IGhhciBpbmdldCBhdHQgdXTDtmthLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDc2Ci0jLCBjLWZvcm1hdAotbXNnaWQgIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhICVzIC0tIGNhbm5vdCBhbWVuZC4iCi1tc2dzdHIgIkR1IMOkciBpIG1pdHRlbiBhdiBlbiAlcyAtLSBrYW4gaW50ZSB1dMO2a2EuIgorIzogYnVpbHRpbi9jb21taXQuYzo5OTAKK21zZ2lkICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBtZXJnZSAtLSBjYW5ub3QgYW1lbmQuIgorbXNnc3RyICJEdSDDpHIgaSBtaXR0ZW4gYXYgZW4gc2FtbWFuc2xhZ25pbmcgLS0ga2FuIGludGUgdXTDtmthLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDc4CisjOiBidWlsdGluL2NvbW1pdC5jOjk5MgorbXNnaWQgIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNoZXJyeS1waWNrIC0tIGNhbm5vdCBhbWVuZC4iCittc2dzdHIgIkR1IMOkciBpIG1pdHRlbiBhdiBlbiBjaGVycnktcGljayAtLSBrYW4gaW50ZSB1dMO2a2EuIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjk5NQogbXNnaWQgIk9wdGlvbnMgLS1zcXVhc2ggYW5kIC0tZml4dXAgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiCiBtc2dzdHIgIkZsYWdnb3JuYSAtLXNxdWFzaCBvY2ggLS1maXh1cCBrYW4gaW50ZSBhbnbDpG5kYXMgc2FtdGlkaWd0IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwODgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAwNQogbXNnaWQgIk9ubHkgb25lIG9mIC1jLy1DLy1GLy0tZml4dXAgY2FuIGJlIHVzZWQuIgogbXNnc3RyICJFbmRhc3QgZW4gYXYgLWMvLUMvLUYvLS1maXh1cCBrYW4gYW52w6RuZGFzLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDkwCisjOiBidWlsdGluL2NvbW1pdC5jOjEwMDcKIG1zZ2lkICJPcHRpb24gLW0gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggLWMvLUMvLUYvLS1maXh1cC4iCiBtc2dzdHIgIkZsYWdnYW4gLW0ga2FuIGludGUga29tYmluZXJhcyBtZWQgLWMvLUMvLUYvLS1maXh1cC4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA5OAorIzogYnVpbHRpbi9jb21taXQuYzoxMDE1CiBtc2dpZCAiLS1yZXNldC1hdXRob3IgY2FuIGJlIHVzZWQgb25seSB3aXRoIC1DLCAtYyBvciAtLWFtZW5kLiIKIG1zZ3N0ciAiLS1yZXNldC1hdXRob3Iga2FuIGVuZGFzdCBhbnbDpG5kYXMgbWVkIC1DLCAtYyBlbGxlciAtLWFtZW5kLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTE1CisjOiBidWlsdGluL2NvbW1pdC5jOjEwMzIKIG1zZ2lkICJPbmx5IG9uZSBvZiAtLWluY2x1ZGUvLS1vbmx5Ly0tYWxsLy0taW50ZXJhY3RpdmUvLS1wYXRjaCBjYW4gYmUgdXNlZC4iCiBtc2dzdHIgIiIKICJFbmRhc3QgZW4gYXYgLS1pbmNsdWRlLy0tb25seS8tLWFsbC8tLWludGVyYWN0aXZlLy0tcGF0Y2gga2FuIGFudsOkbmRhcy4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTExNworIzogYnVpbHRpbi9jb21taXQuYzoxMDM0CiBtc2dpZCAiTm8gcGF0aHMgd2l0aCAtLWluY2x1ZGUvLS1vbmx5IGRvZXMgbm90IG1ha2Ugc2Vuc2UuIgogbXNnc3RyICJEdSBtw6VzdGUgYW5nZSBzw7ZrdsOkZ2FyIHRpbGxzYW1tYW5zIG1lZCAtLWluY2x1ZGUvLS1vbmx5LiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTE5CisjOiBidWlsdGluL2NvbW1pdC5jOjEwMzYKIG1zZ2lkICJDbGV2ZXIuLi4gYW1lbmRpbmcgdGhlIGxhc3Qgb25lIHdpdGggZGlydHkgaW5kZXguIgogbXNnc3RyICJTbWFydC4uLiB1dMO2a2EgZGVuIHNlbmFzdGUgbWVkIHNtdXRzaWd0IGluZGV4LiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTIxCisjOiBidWlsdGluL2NvbW1pdC5jOjEwMzgKIG1zZ2lkICJFeHBsaWNpdCBwYXRocyBzcGVjaWZpZWQgd2l0aG91dCAtaSBub3IgLW87IGFzc3VtaW5nIC0tb25seSBwYXRocy4uLiIKIG1zZ3N0ciAiRXhwbGljaXRhIHPDtmt2w6RnYXIgYW5nYXZzIHV0YW4gLWkgZWxsZXIgLW87IGFudGFyIC0tb25seSBzw7ZrdsOkZ2FyLi4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExMzEgYnVpbHRpbi90YWcuYzo1NTYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA0OCBidWlsdGluL3RhZy5jOjU3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGNsZWFudXAgbW9kZSAlcyIKIG1zZ3N0ciAiRmVsYWt0aWd0IHN0w6RkbmluZ3Nsw6RnZSAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTM2CisjOiBidWlsdGluL2NvbW1pdC5jOjEwNTMKIG1zZ2lkICJQYXRocyB3aXRoIC1hIGRvZXMgbm90IG1ha2Ugc2Vuc2UuIgogbXNnc3RyICJLYW4gaW50ZSBhbmdlIHPDtmt2w6RnYXIgbWVkIC1hLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzE1CisjOiBidWlsdGluL2NvbW1pdC5jOjEwNTkgYnVpbHRpbi9jb21taXQuYzoxMTk0Cittc2dpZCAiLS1sb25nIGFuZCAteiBhcmUgaW5jb21wYXRpYmxlIgorbXNnc3RyICItLWxvbmcgb2NoIC16IMOkciBpbmtvbXBhdGlibGEiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1NCBidWlsdGluL2NvbW1pdC5jOjEzOTAKK21zZ2lkICJzaG93IHN0YXR1cyBjb25jaXNlbHkiCittc2dzdHIgInZpcyBrb25jaXMgc3RhdHVzIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNTYgYnVpbHRpbi9jb21taXQuYzoxMzkyCittc2dpZCAic2hvdyBicmFuY2ggaW5mb3JtYXRpb24iCittc2dzdHIgInZpc2EgaW5mb3JtYXRpb24gb20gZ3JlbiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTU4IGJ1aWx0aW4vY29tbWl0LmM6MTM5NCBidWlsdGluL3B1c2guYzo0MjYKK21zZ2lkICJtYWNoaW5lLXJlYWRhYmxlIG91dHB1dCIKK21zZ3N0ciAibWFza2lubMOkc2JhciB1dGRhdGEiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2MSBidWlsdGluL2NvbW1pdC5jOjEzOTYKK21zZ2lkICJzaG93IHN0YXR1cyBpbiBsb25nIGZvcm1hdCAoZGVmYXVsdCkiCittc2dzdHIgInZpc2Egc3RhdHVzIGkgbMOlbmd0IGZvcm1hdCAoc3RhbmRhcmQpIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNjQgYnVpbHRpbi9jb21taXQuYzoxMzk5Cittc2dpZCAidGVybWluYXRlIGVudHJpZXMgd2l0aCBOVUwiCittc2dzdHIgInRlcm1pbmVyYSBwb3N0ZXIgbWVkIE5VTCIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTY2IGJ1aWx0aW4vY29tbWl0LmM6MTQwMiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjU5CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYyIGJ1aWx0aW4vdGFnLmM6NDU5Cittc2dpZCAibW9kZSIKK21zZ3N0ciAibMOkZ2UiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2NyBidWlsdGluL2NvbW1pdC5jOjE0MDIKK21zZ2lkICJzaG93IHVudHJhY2tlZCBmaWxlcywgb3B0aW9uYWwgbW9kZXM6IGFsbCwgbm9ybWFsLCBuby4gKERlZmF1bHQ6IGFsbCkiCittc2dzdHIgInZpc2Egb3Nww6VyYWRlIGZpbGVyLCB2YWxmcmlhIGzDpGdlbjogYWxsYSwgbm9ybWFsLCBuby4gKFN0YW5kYXJkOiBhbGwpIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNzAKK21zZ2lkICJzaG93IGlnbm9yZWQgZmlsZXMiCittc2dzdHIgInZpc2EgaWdub3JlcmFkZSBmaWxlciIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTcxIHBhcnNlLW9wdGlvbnMuaDoxNTEKK21zZ2lkICJ3aGVuIgorbXNnc3RyICJuw6RyIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNzIKK21zZ2lkICIiCisiaWdub3JlIGNoYW5nZXMgdG8gc3VibW9kdWxlcywgb3B0aW9uYWwgd2hlbjogYWxsLCBkaXJ0eSwgdW50cmFja2VkLiAiCisiKERlZmF1bHQ6IGFsbCkiCittc2dzdHIgIiIKKyJpZ25vcmVyYSDDpG5kcmluZ2FyIGkgdW5kZXJtb2R1bGVyLCB2YWxmcml0dCBuw6RyOiBhbGwsIGRpcnR5LCB1bnRyYWNrZWQuICIKKyIoRGVmYXVsdDogYWxsKSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTc0Cittc2dpZCAibGlzdCB1bnRyYWNrZWQgZmlsZXMgaW4gY29sdW1ucyIKK21zZ3N0ciAidmlzYSBvc3DDpXJhZGUgZmlsZXIgaSBzcGFsdGVyIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEyNDgKIG1zZ2lkICJjb3VsZG4ndCBsb29rIHVwIG5ld2x5IGNyZWF0ZWQgY29tbWl0IgogbXNnc3RyICJrdW5kZSBpbnRlIHNsw6UgdXBwIGVuIHByZWNpcyBza2FwYWQgaW5jaGVja25pbmciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTMxNworIzogYnVpbHRpbi9jb21taXQuYzoxMjUwCiBtc2dpZCAiY291bGQgbm90IHBhcnNlIG5ld2x5IGNyZWF0ZWQgY29tbWl0IgogbXNnc3RyICJrdW5kZSBpbnRlIHRvbGthIGVuIHByZWNpcyBza2FwYWQgaW5jaGVja25pbmciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM1OAorIzogYnVpbHRpbi9jb21taXQuYzoxMjkxCiBtc2dpZCAiZGV0YWNoZWQgSEVBRCIKIG1zZ3N0ciAiZnLDpW5rb3BwbGFkIEhFQUQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2MAorIzogYnVpbHRpbi9jb21taXQuYzoxMjkzCiBtc2dpZCAiIChyb290LWNvbW1pdCkiCiBtc2dzdHIgIiAocm90aW5jaGVja25pbmcpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0NTAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2MAorbXNnaWQgInN1cHByZXNzIHN1bW1hcnkgYWZ0ZXIgc3VjY2Vzc2Z1bCBjb21taXQiCittc2dzdHIgInVuZGVydHJ5Y2sgc2FtbWFuZmF0dG5pbmcgZWZ0ZXIgZnJhbWfDpW5nc3JpayBpbmNoZWNrbmluZyIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzYxCittc2dpZCAic2hvdyBkaWZmIGluIGNvbW1pdCBtZXNzYWdlIHRlbXBsYXRlIgorbXNnc3RyICJ2aXNhIGRpZmYgaSBtYWxsZW4gZsO2ciBpbmNoZWNrbmluZ3NtZWRkZWxhbmRldCIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzYzCittc2dpZCAiQ29tbWl0IG1lc3NhZ2Ugb3B0aW9ucyIKK21zZ3N0ciAiQWx0ZXJuYXRpdiBmw7ZyIGluY2hlY2tuaW5nc21lZGRlbGFuZGUiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NCBidWlsdGluL3RhZy5jOjQ1NworbXNnaWQgInJlYWQgbWVzc2FnZSBmcm9tIGZpbGUiCittc2dzdHIgImzDpHMgbWVkZGVsYW5kZSBmcsOlbiBmaWwiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NQorbXNnaWQgImF1dGhvciIKK21zZ3N0ciAiZsO2cmZhdHRhcmUiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NQorbXNnaWQgIm92ZXJyaWRlIGF1dGhvciBmb3IgY29tbWl0IgorbXNnc3RyICLDtnZlcnN0eXIgZsO2cmZhdHRhcmUgZsO2ciBpbmNoZWNrbmluZ2VuIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjYgYnVpbHRpbi9nYy5jOjE3OAorbXNnaWQgImRhdGUiCittc2dzdHIgImRhdHVtIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjYKK21zZ2lkICJvdmVycmlkZSBkYXRlIGZvciBjb21taXQiCittc2dzdHIgIsO2dmVyc3R5ciBkYXR1bSBmw7ZyIGluY2hlY2tuaWduZW4iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NyBidWlsdGluL21lcmdlLmM6MjA4IGJ1aWx0aW4vbm90ZXMuYzo1MzMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2OTAgYnVpbHRpbi90YWcuYzo0NTUKK21zZ2lkICJtZXNzYWdlIgorbXNnc3RyICJtZWRkZWxhbmRlIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjcKK21zZ2lkICJjb21taXQgbWVzc2FnZSIKK21zZ3N0ciAiaW5jaGVja25pbmdzbWVkZGVsYW5kZSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzY4Cittc2dpZCAicmV1c2UgYW5kIGVkaXQgbWVzc2FnZSBmcm9tIHNwZWNpZmllZCBjb21taXQiCittc2dzdHIgIsOldGVyYW52w6RuZCBvY2ggcmVkaWdlcmEgbWVkZGVsYW5kZSBmcsOlbiBhbmdpdmVuIGluY2hlY2tuaW5nIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjkKK21zZ2lkICJyZXVzZSBtZXNzYWdlIGZyb20gc3BlY2lmaWVkIGNvbW1pdCIKK21zZ3N0ciAiw6V0ZXJhbnbDpG5kIG1lZGRlbGFuZGUgZnLDpW4gYW5naXZlbiBpbmNoZWNrbmluZyIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzcwCittc2dpZCAidXNlIGF1dG9zcXVhc2ggZm9ybWF0dGVkIG1lc3NhZ2UgdG8gZml4dXAgc3BlY2lmaWVkIGNvbW1pdCIKK21zZ3N0ciAiIgorImFudsOkbmQgYXV0b3NxdWFzaC1mb3JtYXRlcmF0IG1lZGRlbGFuZGUgZsO2ciBhdHQgZml4YSBhbmdpdmVuIGluY2hlY2tuaW5nIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzEKK21zZ2lkICJ1c2UgYXV0b3NxdWFzaCBmb3JtYXR0ZWQgbWVzc2FnZSB0byBzcXVhc2ggc3BlY2lmaWVkIGNvbW1pdCIKK21zZ3N0ciAiIgorImFudsOkbmQgYXV0b3NxdWFzaC1mb3JtYXRlcmF0IG1lZGRlbGFuZGUgZsO2ciBhdHQgc2zDpSBpaG9wIG1lZCBhbmdpdmVuICIKKyJpbmNoZWNrbmluZyIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzcyCittc2dpZCAidGhlIGNvbW1pdCBpcyBhdXRob3JlZCBieSBtZSBub3cgKHVzZWQgd2l0aCAtQy8tYy8tLWFtZW5kKSIKK21zZ3N0ciAiamFnIMOkciBudSBmw7ZyZmF0dGFyZSBhdiBpbmNoZWNrbmluZ2VuIChhbnbDpG5kcyBtZWQgLUMvLWMvLS1hbWVuZCkiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MyBidWlsdGluL2xvZy5jOjExMTMgYnVpbHRpbi9yZXZlcnQuYzoxMDkKK21zZ2lkICJhZGQgU2lnbmVkLW9mZi1ieToiCittc2dzdHIgImzDpGdnIHRpbGwgU2lnbmVkLW9mZi1ieToiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NAorbXNnaWQgInVzZSBzcGVjaWZpZWQgdGVtcGxhdGUgZmlsZSIKK21zZ3N0ciAiYW52w6RuZCBhbmdpdmVuIG1hbGxmaWwiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NQorbXNnaWQgImZvcmNlIGVkaXQgb2YgY29tbWl0IgorbXNnc3RyICJ0dmluZ2EgcmVkaWdlcmluZyBhdiBpbmNoZWNrbmluZyIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzc2Cittc2dpZCAiZGVmYXVsdCIKK21zZ3N0ciAic3RhbmRhcmQiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NiBidWlsdGluL3RhZy5jOjQ2MAorbXNnaWQgImhvdyB0byBzdHJpcCBzcGFjZXMgYW5kICNjb21tZW50cyBmcm9tIG1lc3NhZ2UiCittc2dzdHIgImh1ciBibGFua3N0ZWcgb2NoICNrb21tZW50YXJlciBza2FsbCB0YXMgYm9ydCBmcsOlbiBtZWRkZWxhbmRlIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzcKK21zZ2lkICJpbmNsdWRlIHN0YXR1cyBpbiBjb21taXQgbWVzc2FnZSB0ZW1wbGF0ZSIKK21zZ3N0ciAiaW5rbHVkZXJhIHN0YXR1cyBpIG1hbGxlbiBmw7ZyIGluY2hlY2tuaW5nc21lZGRlbGFuZGV0IgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzggYnVpbHRpbi9tZXJnZS5jOjIxNSBidWlsdGluL3RhZy5jOjQ2MQorbXNnaWQgImtleSBpZCIKK21zZ3N0ciAibnlja2VsLWlkIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzkgYnVpbHRpbi9tZXJnZS5jOjIxNgorbXNnaWQgIkdQRyBzaWduIGNvbW1pdCIKK21zZ3N0ciAiR1BHLXNpZ25lcmEgaW5jaGVja25pbmciCisKKyMuIGVuZCBjb21taXQgbWVzc2FnZSBvcHRpb25zCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODIKK21zZ2lkICJDb21taXQgY29udGVudHMgb3B0aW9ucyIKK21zZ3N0ciAiQWx0ZXJuYXRpdiBmw7ZyIGluY2hlY2tuaW5nZW5zIGlubmVow6VsbCIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzgzCittc2dpZCAiY29tbWl0IGFsbCBjaGFuZ2VkIGZpbGVzIgorbXNnc3RyICJjaGVja2EgaW4gYWxsYSDDpG5kcmFkZSBmaWxlciIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzg0Cittc2dpZCAiYWRkIHNwZWNpZmllZCBmaWxlcyB0byBpbmRleCBmb3IgY29tbWl0IgorbXNnc3RyICJsw6RnZyB0aWxsIGFuZ2l2bmEgZmlsZXIgdGlsbCBpbmRleGV0IGbDtnIgaW5jaGVja25pbmciCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NQorbXNnaWQgImludGVyYWN0aXZlbHkgYWRkIGZpbGVzIgorbXNnc3RyICJsw6RnZyB0aWxsIGZpbGVyIGludGVyYWt0aXZ0IgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODYKK21zZ2lkICJpbnRlcmFjdGl2ZWx5IGFkZCBjaGFuZ2VzIgorbXNnc3RyICJsw6RnZyB0aWxsIMOkbmRyaW5nYXIgaW50ZXJha3RpdnQiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NworbXNnaWQgImNvbW1pdCBvbmx5IHNwZWNpZmllZCBmaWxlcyIKK21zZ3N0ciAiY2hlY2thIGVuZGFzdCBpbiBhbmdpdm5hIGZpbGVyIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODgKK21zZ2lkICJieXBhc3MgcHJlLWNvbW1pdCBob29rIgorbXNnc3RyICJmw7ZyYmlnw6UgcHJlLWNvbW1pdC1rcm9rIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODkKK21zZ2lkICJzaG93IHdoYXQgd291bGQgYmUgY29tbWl0dGVkIgorbXNnc3RyICJ2aXNhIHZhZCBzb20gc2t1bGxlIGNoZWNrYXMgaW4iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwMAorbXNnaWQgImFtZW5kIHByZXZpb3VzIGNvbW1pdCIKK21zZ3N0ciAibMOkZ2cgdGlsbCBmw7ZyZWfDpWVuZGUgaW5jaGVja25pbmciCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwMQorbXNnaWQgImJ5cGFzcyBwb3N0LXJld3JpdGUgaG9vayIKK21zZ3N0ciAiZsO2cmJpZ8OlIHBvc3QtcmV3cml0ZS1rcm9rIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDYKK21zZ2lkICJvayB0byByZWNvcmQgYW4gZW1wdHkgY2hhbmdlIgorbXNnc3RyICJvayBhdHQgcmVnaXN0cmVyYSBlbiB0b20gw6RuZHJpbmciCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwOQorbXNnaWQgIm9rIHRvIHJlY29yZCBhIGNoYW5nZSB3aXRoIGFuIGVtcHR5IG1lc3NhZ2UiCittc2dzdHIgIm9rIGF0dCByZWdpc3RyZXJhIGVuIMOkbmRyaW5nIG1lZCB0b210IG1lZGRlbGFuZGUiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ0MQogbXNnaWQgImNvdWxkIG5vdCBwYXJzZSBIRUFEIGNvbW1pdCIKIG1zZ3N0ciAia3VuZGUgaW50ZSB0b2xrYSBIRUFEOnMgaW5jaGVja25pbmciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ4NyBidWlsdGluL21lcmdlLmM6NTA5CisjOiBidWlsdGluL2NvbW1pdC5jOjE0NzkgYnVpbHRpbi9tZXJnZS5jOjUxMAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiAnJXMnIGZvciByZWFkaW5nIgogbXNnc3RyICJrdW5kZSBpbnRlIMO2cHBuYSBcIiVzXCIgZsO2ciBsw6RzbmluZyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDk0CisjOiBidWlsdGluL2NvbW1pdC5jOjE0ODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29ycnVwdCBNRVJHRV9IRUFEIGZpbGUgKCVzKSIKIG1zZ3N0ciAiVHJhc2lnIE1FUkdFX0hFQUQtZmlsICglcykiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUwMQorIzogYnVpbHRpbi9jb21taXQuYzoxNDkzCiBtc2dpZCAiY291bGQgbm90IHJlYWQgTUVSR0VfTU9ERSIKIG1zZ3N0ciAia3VuZGUgaW50ZSBsw6RzYSBNRVJHRV9NT0RFIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1MjAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTUxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBjb21taXQgbWVzc2FnZTogJXMiCiBtc2dzdHIgImt1bmRlIGludGUgbMOkc2EgaW5jaGVja25pbmdzbWVkZGVsYW5kZTogJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUzNAorIzogYnVpbHRpbi9jb21taXQuYzoxNTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFib3J0aW5nIGNvbW1pdDsgeW91IGRpZCBub3QgZWRpdCB0aGUgbWVzc2FnZS5cbiIKIG1zZ3N0ciAiQXZicnl0ZXIgaW5jaGVja25pbmc7IG1lZGRlbGFuZGV0IGludGUgcmVkaWdlcmF0LlxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1MzkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTUzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJBYm9ydGluZyBjb21taXQgZHVlIHRvIGVtcHR5IGNvbW1pdCBtZXNzYWdlLlxuIgogbXNnc3RyICJBdmJyeXRlciBww6UgZ3J1bmQgYXYgdG9tdCBpbmNoZWNrbmluZ3NtZWRkZWxhbmRlLlxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1NTQgYnVpbHRpbi9tZXJnZS5jOjkzNiBidWlsdGluL21lcmdlLmM6OTYxCisjOiBidWlsdGluL2NvbW1pdC5jOjE1NDYgYnVpbHRpbi9tZXJnZS5jOjg0NyBidWlsdGluL21lcmdlLmM6ODcyCiBtc2dpZCAiZmFpbGVkIHRvIHdyaXRlIGNvbW1pdCBvYmplY3QiCiBtc2dzdHIgImt1bmRlIGludGUgc2tyaXZhIGluY2hlY2tuaW5nc29iamVrdCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTc1CisjOiBidWlsdGluL2NvbW1pdC5jOjE1NjcKIG1zZ2lkICJjYW5ub3QgbG9jayBIRUFEIHJlZiIKIG1zZ3N0ciAia3VuZGUgaW50ZSBsw6VzYSBIRUFELXJlZmVyZW5zIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1NzkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU3MQogbXNnaWQgImNhbm5vdCB1cGRhdGUgSEVBRCByZWYiCiBtc2dzdHIgImt1bmRlIGludGUgdXBwZGF0ZXJhIEhFQUQtcmVmZXJlbnMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTU5MAorIzogYnVpbHRpbi9jb21taXQuYzoxNTgyCiBtc2dpZCAiIgogIlJlcG9zaXRvcnkgaGFzIGJlZW4gdXBkYXRlZCwgYnV0IHVuYWJsZSB0byB3cml0ZVxuIgogIm5ld19pbmRleCBmaWxlLiBDaGVjayB0aGF0IGRpc2sgaXMgbm90IGZ1bGwgb3IgcXVvdGEgaXNcbiIKQEAgLTE3MDIsNDcgKzQxOTYsMTc5IEBACiAiYXR0IGt2b3RlbiBpbnRlIGhhciDDtnZlcnNrcmlkaXRzLCBvY2gga8O2ciBzZWRhblxuIgogIlwiZ2l0IHJlc2V0IEhFQURcIiBmw7ZyIGF0dCDDpXRlcnN0w6RsbGEuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjM0CisjOiBidWlsdGluL2NvbmZpZy5jOjcKK21zZ2lkICJnaXQgY29uZmlnIFtvcHRpb25zXSIKK21zZ3N0ciAiZ2l0IGNvbmZpZyBbZmxhZ2dvcl0iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTEKK21zZ2lkICJDb25maWcgZmlsZSBsb2NhdGlvbiIKK21zZ3N0ciAiS29uZmlndXJhdGlvbnNmaWxlbnMgcGxhdHMiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTIKK21zZ2lkICJ1c2UgZ2xvYmFsIGNvbmZpZyBmaWxlIgorbXNnc3RyICJhbnbDpG5kIGdsb2JhbCBrb25maWd1cmF0aW9uc2ZpbCIKKworIzogYnVpbHRpbi9jb25maWcuYzo1MworbXNnaWQgInVzZSBzeXN0ZW0gY29uZmlnIGZpbGUiCittc2dzdHIgImFudsOkbmQgc3lzdGVtZXRzIGtvbmZpZ3VyYXRpb25zZmlsIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjU0Cittc2dpZCAidXNlIHJlcG9zaXRvcnkgY29uZmlnIGZpbGUiCittc2dzdHIgImFudsOkbmQgYXJraXZldHMga29uZmlndXJhdGlvbnNmaWwiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTUKK21zZ2lkICJ1c2UgZ2l2ZW4gY29uZmlnIGZpbGUiCittc2dzdHIgImFudsOkbmQgYW5naXZlbiBrb25maWd1cmF0aW9uc2lsIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjU2Cittc2dpZCAiQWN0aW9uIgorbXNnc3RyICLDhXRnw6RyZCIKKworIzogYnVpbHRpbi9jb25maWcuYzo1NworbXNnaWQgImdldCB2YWx1ZTogbmFtZSBbdmFsdWUtcmVnZXhdIgorbXNnc3RyICJow6RtdGEgdsOkcmRlOiBuYW1uIFt2w6RyZGUtcmVndXR0cl0iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTgKK21zZ2lkICJnZXQgYWxsIHZhbHVlczoga2V5IFt2YWx1ZS1yZWdleF0iCittc2dzdHIgImjDpG10YSBhbGxhIHbDpHJkZW46IG55Y2tlbCBbdsOkcmRlLXJlZ3V0dHJdIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjU5Cittc2dpZCAiZ2V0IHZhbHVlcyBmb3IgcmVnZXhwOiBuYW1lLXJlZ2V4IFt2YWx1ZS1yZWdleF0iCittc2dzdHIgImjDpG10YSB2w6RyZGVuIGbDtnIgcmVndXR0cjogbmFtbi1yZWd1dHRyIFt2w6RyZGUtcmVndXR0cl0iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjAKK21zZ2lkICJyZXBsYWNlIGFsbCBtYXRjaGluZyB2YXJpYWJsZXM6IG5hbWUgdmFsdWUgW3ZhbHVlX3JlZ2V4XSIKK21zZ3N0ciAiZXJzw6R0dCBhbGxhIG1vdHN2YXJhbmRlIHZhcmlhYmxlcjogbmFtbiB2w6RyZGUgW3bDpHJkZS1yZWd1dHRyXSIKKworIzogYnVpbHRpbi9jb25maWcuYzo2MQorbXNnaWQgImFkZCBhIG5ldyB2YXJpYWJsZTogbmFtZSB2YWx1ZSIKK21zZ3N0ciAibMOkZ2cgdGlsbCBlbiBueSB2YXJpYWJlbDogbmFtbiB2w6RyZGUiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjIKK21zZ2lkICJyZW1vdmUgYSB2YXJpYWJsZTogbmFtZSBbdmFsdWUtcmVnZXhdIgorbXNnc3RyICJ0YSBib3J0IGVuIHZhcmlhYmVsOiBuYW1uIFt2w6RyZGUtcmVndXR0cl0iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjMKK21zZ2lkICJyZW1vdmUgYWxsIG1hdGNoZXM6IG5hbWUgW3ZhbHVlLXJlZ2V4XSIKK21zZ3N0ciAidGEgYm9ydCBhbGxhIHRyw6RmZmFyOiBuYW1uIFt2w6RyZGUtcmVndXR0cl0iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjQKK21zZ2lkICJyZW5hbWUgc2VjdGlvbjogb2xkLW5hbWUgbmV3LW5hbWUiCittc2dzdHIgImJ5dCBuYW1uIHDDpSBzZWt0aW9uOiBnYW1tYWx0LW5hbW4gbnl0dC1uYW1uIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjY1Cittc2dpZCAicmVtb3ZlIGEgc2VjdGlvbjogbmFtZSIKK21zZ3N0ciAidGEgYm9ydCBlbiBzZWt0aW9uOiBuYW1uIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjY2Cittc2dpZCAibGlzdCBhbGwiCittc2dzdHIgInZpc2EgYWxsYSIKKworIzogYnVpbHRpbi9jb25maWcuYzo2NworbXNnaWQgIm9wZW4gYW4gZWRpdG9yIgorbXNnc3RyICLDtnBwbmEgdGV4dHJlZGlnZXJpbmdzcHJvZ3JhbSIKKworIzogYnVpbHRpbi9jb25maWcuYzo2OCBidWlsdGluL2NvbmZpZy5jOjY5Cittc2dpZCAic2xvdCIKK21zZ3N0ciAicGxhdHMiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjgKK21zZ2lkICJmaW5kIHRoZSBjb2xvciBjb25maWd1cmVkOiBbZGVmYXVsdF0iCittc2dzdHIgImhpdHRhIGRlbiBpbnN0w6RsbGRhIGbDpHJnZW46IFtkZWZhdWx0XSIKKworIzogYnVpbHRpbi9jb25maWcuYzo2OQorbXNnaWQgImZpbmQgdGhlIGNvbG9yIHNldHRpbmc6IFtzdGRvdXQtaXMtdHR5XSIKK21zZ3N0ciAiaGl0dGEgZsOkcmdpbnN0w6RsbG5pbmdlbjogW3N0ZG91dC1pcy10dHldIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjcwCittc2dpZCAiVHlwZSIKK21zZ3N0ciAiVHlwIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjcxCittc2dpZCAidmFsdWUgaXMgXCJ0cnVlXCIgb3IgXCJmYWxzZVwiIgorbXNnc3RyICJ2w6RyZGV0IMOkciBcInRydWVcIiBlbGxlciBcImZhbHNlXCIiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzIKK21zZ2lkICJ2YWx1ZSBpcyBkZWNpbWFsIG51bWJlciIKK21zZ3N0ciAidsOkcmRldCDDpHIgZXR0IGRlY2ltYWx0IHRhbCIKKworIzogYnVpbHRpbi9jb25maWcuYzo3MworbXNnaWQgInZhbHVlIGlzIC0tYm9vbCBvciAtLWludCIKK21zZ3N0ciAidsOkcmRldCDDpHIgLS1ib29sIGVsbGVyIC0taW50IgorCisjOiBidWlsdGluL2NvbmZpZy5jOjc0Cittc2dpZCAidmFsdWUgaXMgYSBwYXRoIChmaWxlIG9yIGRpcmVjdG9yeSBuYW1lKSIKK21zZ3N0ciAidsOkcmRldCDDpHIgZW4gc8O2a3bDpGcgKGZpbC0gZWxsZXIga2F0YWxvZ25hbW4pIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjc1Cittc2dpZCAiT3RoZXIiCittc2dzdHIgIkFuZHJhIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjc2Cittc2dpZCAidGVybWluYXRlIHZhbHVlcyB3aXRoIE5VTCBieXRlIgorbXNnc3RyICJ0ZXJtaW5lcmEgdsOkcmRlbiBtZWQgTlVMLWJ5dGUiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzcKK21zZ2lkICJyZXNwZWN0IGluY2x1ZGUgZGlyZWN0aXZlcyBvbiBsb29rdXAiCittc2dzdHIgInJlc3Bla3RlcmEgaW5rbHVkZXJpbmdzZGlyZWt0aXYgdmlkIHVwcHNsYWciCisKKyM6IGJ1aWx0aW4vY291bnQtb2JqZWN0cy5jOjgyCittc2dpZCAiZ2l0IGNvdW50LW9iamVjdHMgWy12XSBbLUggfCAtLWh1bWFuLXJlYWRhYmxlXSIKK21zZ3N0ciAiZ2l0IGNvdW50LW9iamVjdHMgWy12XSBbLUggfCAtLWh1bWFuLXJlYWRhYmxlXSIKKworIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6OTcKK21zZ2lkICJwcmludCBzaXplcyBpbiBodW1hbiByZWFkYWJsZSBmb3JtYXQiCittc2dzdHIgInNrcml2IHN0b3JsZWthciBpIG3DpG5uaXNrb2zDpHNiYXJ0IGZvcm1hdCIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjE1Cittc2dpZCAiZ2l0IGRlc2NyaWJlIFtvcHRpb25zXSA8Y29tbWl0dGlzaD4qIgorbXNnc3RyICJnaXQgZGVzY3JpYmUgW2ZsYWdnb3JdIDxpbmNoZWNrbmluZy1pZ3Q+KiIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjE2Cittc2dpZCAiZ2l0IGRlc2NyaWJlIFtvcHRpb25zXSAtLWRpcnR5IgorbXNnc3RyICJnaXQgZGVzY3JpYmUgW2ZsYWdnb3JdIC0tZGlydHkiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiYW5ub3RhdGVkIHRhZyAlcyBub3QgYXZhaWxhYmxlIgogbXNnc3RyICJkZW4gYW5ub3RlcmFkZSB0YWdnZW4gJXMgaW50ZSB0aWxsZ8OkbmdsaWciCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzgKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiYW5ub3RhdGVkIHRhZyAlcyBoYXMgbm8gZW1iZWRkZWQgbmFtZSIKIG1zZ3N0ciAiZGVuIGFubm90ZXJhZGUgdGFnZ2VuICVzIGhhciBpbmdldCBpbmLDpGRkYXQgbmFtbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI0MAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJ0YWcgJyVzJyBpcyByZWFsbHkgJyVzJyBoZXJlIgogbXNnc3RyICJ0YWdnZW4gXCIlc1wiIMOkciBpIHZlcmtsaWdoZXRlbiBcIiVzXCIgaMOkciIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI2NworIzogYnVpbHRpbi9kZXNjcmliZS5jOjI2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgYSB2YWxpZCBvYmplY3QgbmFtZSAlcyIKIG1zZ3N0ciAiT2JqZWt0bmFtbmV0IMOkciBpbnRlIGdpbHRpZ3Q6ICVzIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjcwCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGlzIG5vdCBhIHZhbGlkICclcycgb2JqZWN0IgogbXNnc3RyICIlcyDDpHIgaW50ZSBldHQgZ2lsdGlndCBcIiVzXCItb2JqZWt0IgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg3CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vIHRhZyBleGFjdGx5IG1hdGNoZXMgJyVzJyIKIG1zZ3N0ciAiaW5nZW4gdGFnZyBtb3RzdmFyYXIgXCIlc1wiIGV4YWt0IgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg5CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg4CiAjLCBjLWZvcm1hdAogbXNnaWQgInNlYXJjaGluZyB0byBkZXNjcmliZSAlc1xuIgogbXNnc3RyICJzw7ZrZXIgZsO2ciBhdHQgYmVza3JpdmEgJXNcbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjMyOQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjMyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJmaW5pc2hlZCBzZWFyY2ggYXQgJXNcbiIKIG1zZ3N0ciAiYXZzbHV0YWRlIHPDtmtuaW5nIHDDpSAlc1xuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MzUzCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MzUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJObyBhbm5vdGF0ZWQgdGFncyBjYW4gZGVzY3JpYmUgJyVzJy5cbiIKQEAgLTE3NTEsNyArNDM3Nyw3IEBACiAiSW5nYSBhbm5vdGVyYWRlIHRhZ2dhciBrYW4gYmVza3JpdmEgXCIlc1wiLlxuIgogIkRldCBmaW5ucyBkb2NrIG9hbm5vdGVyYWRlIHRhZ2dhcjogdGVzdGEgLS10YWdzLiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjM1NworIzogYnVpbHRpbi9kZXNjcmliZS5jOjM1NgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiTm8gdGFncyBjYW4gZGVzY3JpYmUgJyVzJy5cbiIKQEAgLTE3NjAsMTIgKzQzODYsMTIgQEAKICJJbmdhIHRhZ2dhciBrYW4gYmVza3JpdmEgXCIlc1wiLlxuIgogIlRlc3RhIC0tYWx3YXlzLCBlbGxlciBza2FwYSBuw6VncmEgdGFnZ2FyLiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjM3OAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjM3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJ0cmF2ZXJzZWQgJWx1IGNvbW1pdHNcbiIKIG1zZ3N0ciAidHJhdmVyc2VyYWRlICVsdSBpbmNoZWNrbmluZ2FyXG4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozODEKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozODAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIm1vcmUgdGhhbiAlaSB0YWdzIGZvdW5kOyBsaXN0ZWQgJWkgbW9zdCByZWNlbnRcbiIKQEAgLTE3NzQsMTIyICs0NDAwLDI5MCBAQAogIm1lciDDpG4gJWkgdGFnZ2FyIGhpdHRhZGVzOyBsaXN0YXIgZGUgJWkgc2VuYXN0ZVxuIgogImdhdiB1cHAgc8O2a25pbmdlbiB2aWQgJXNcbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQzNgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwMgorbXNnaWQgImZpbmQgdGhlIHRhZyB0aGF0IGNvbWVzIGFmdGVyIHRoZSBjb21taXQiCittc2dzdHIgImhpdHRhIHRhZ2dlbiBzb20ga29tbWVyIGVmdGVyIGluY2hlY2tuaW5nZW4iCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDMKK21zZ2lkICJkZWJ1ZyBzZWFyY2ggc3RyYXRlZ3kgb24gc3RkZXJyIgorbXNnc3RyICJmZWxzw7ZrIHPDtmtzdHJhdGVnaW4gcMOlIHN0YW5kYXJkIGZlbCIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNAorbXNnaWQgInVzZSBhbnkgcmVmIgorbXNnc3RyICJhbnbDpG5kIGFsbGEgcmVmZXJlbnNlciIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNQorbXNnaWQgInVzZSBhbnkgdGFnLCBldmVuIHVuYW5ub3RhdGVkIgorbXNnc3RyICJhbnbDpG5kIGFsbGEgdGFnZ2FyLCDDpHZlbiBvYW5ub3RlcmFkZSIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNgorbXNnaWQgImFsd2F5cyB1c2UgbG9uZyBmb3JtYXQiCittc2dzdHIgImFudsOkbmQgYWxsdGlkIGzDpW5ndCBmb3JtYXQiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDkKK21zZ2lkICJvbmx5IG91dHB1dCBleGFjdCBtYXRjaGVzIgorbXNnc3RyICJza3JpdiBlbmRhc3QgdXQgZXhha3RhIHRyw6RmZmFyIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDExCittc2dpZCAiY29uc2lkZXIgPG4+IG1vc3QgcmVjZW50IHRhZ3MgKGRlZmF1bHQ6IDEwKSIKK21zZ3N0ciAiw7Z2ZXJ2w6RnIGRlIDxuPiBueWFzdGUgdGFnZ2FybmEgKHN0YW5kYXJkOiAxMCkiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTMKK21zZ2lkICJvbmx5IGNvbnNpZGVyIHRhZ3MgbWF0Y2hpbmcgPHBhdHRlcm4+IgorbXNnc3RyICLDtnZlcnbDpGcgZW5kYXN0IHRhZ2dhciBzb20gbW90c3ZhcmFyIDxtw7Zuc3Rlcj4iCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTUgYnVpbHRpbi9uYW1lLXJldi5jOjIzOAorbXNnaWQgInNob3cgYWJicmV2aWF0ZWQgY29tbWl0IG9iamVjdCBhcyBmYWxsYmFjayIKK21zZ3N0ciAidmlzYSBmw7Zya29ydGFkZSBpbmNoZWNrbmluZ3NvYmpla3Qgc29tIHN0YW5kYXJkIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE2Cittc2dpZCAibWFyayIKK21zZ3N0ciAibcOkcmtlIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE3Cittc2dpZCAiYXBwZW5kIDxtYXJrPiBvbiBkaXJ0eSB3b3JraW5nIHRyZWUgKGRlZmF1bHQ6IFwiLWRpcnR5XCIpIgorbXNnc3RyICJsw6RnZyB0aWxsIDxtw6Rya2U+IHDDpSBsb3J0aWd0IGFyYmV0c3Ryw6RkIChzdGFuZGFyZDogXCItZGlydHlcIikiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MzUKIG1zZ2lkICItLWxvbmcgaXMgaW5jb21wYXRpYmxlIHdpdGggLS1hYmJyZXY9MCIKIG1zZ3N0ciAiLS1sb25nIMOkciBpbmtvbXBhdGliZWwgbWVkIC0tYWJicmV2PTAiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0NjIKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0NjEKIG1zZ2lkICJObyBuYW1lcyBmb3VuZCwgY2Fubm90IGRlc2NyaWJlIGFueXRoaW5nLiIKIG1zZ3N0ciAiSW5nYSBuYW1uIGhpdHRhZGVzLCBrYW4gaW50ZSBiZXNrcml2YSBuw6Vnb3QuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDgyCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDgxCiBtc2dpZCAiLS1kaXJ0eSBpcyBpbmNvbXBhdGlibGUgd2l0aCBjb21taXR0aXNoZXMiCiBtc2dzdHIgIi0tZGlydHkgw6RyIGlua29tcGF0aWJlbHQgbWVkIFwiY29tbWl0dGlzaFwiLXbDpHJkZW4iCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjc3CisjOiBidWlsdGluL2RpZmYuYzo3OQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiBub3QgYSByZWd1bGFyIGZpbGUgb3Igc3ltbGluayIKIG1zZ3N0ciAiXCIlc1wiOiBpbnRlIGVuIG5vcm1hbCBmaWwgZWxsZXIgc3ltYm9saXNrIGzDpG5rIgogCi0jOiBidWlsdGluL2RpZmYuYzoyMjAKKyM6IGJ1aWx0aW4vZGlmZi5jOjIyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG9wdGlvbjogJXMiCiBtc2dzdHIgIm9naWx0aWcgZmxhZ2dhOiAlcyIKIAotIzogYnVpbHRpbi9kaWZmLmM6Mjk3CisjOiBidWlsdGluL2RpZmYuYzozMDUKIG1zZ2lkICJOb3QgYSBnaXQgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiSW50ZSBldHQgZ2l0LWFya2l2IgogCi0jOiBidWlsdGluL2RpZmYuYzozNDcKKyM6IGJ1aWx0aW4vZGlmZi5jOjM0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG9iamVjdCAnJXMnIGdpdmVuLiIKIG1zZ3N0ciAib2JqZWt0ZXQgXCIlc1wiIHNvbSBhbmdhdnMgw6RyIGZlbGFrdGlndC4iCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjM1MgorIzogYnVpbHRpbi9kaWZmLmM6MzUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIm1vcmUgdGhhbiAlZCB0cmVlcyBnaXZlbjogJyVzJyIKIG1zZ3N0ciAibWVyIMOkbiAlZCB0csOkZCBhbmdhdnM6IFwiJXNcIiIKIAotIzogYnVpbHRpbi9kaWZmLmM6MzYyCisjOiBidWlsdGluL2RpZmYuYzozNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAibW9yZSB0aGFuIHR3byBibG9icyBnaXZlbjogJyVzJyIKIG1zZ3N0ciAibWVyIMOkbiB0dsOlIGJsb2JiYXIgYW5nYXZzOiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjM3MAorIzogYnVpbHRpbi9kaWZmLmM6MzcxCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuaGFuZGxlZCBvYmplY3QgJyVzJyBnaXZlbi4iCiBtc2dzdHIgImVqIGhhbnRlcmF0IG9iamVrdCBcIiVzXCIgYW5nYXZzLiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjIwMAorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjIyCittc2dpZCAiZ2l0IGZhc3QtZXhwb3J0IFtyZXYtbGlzdC1vcHRzXSIKK21zZ3N0ciAiZ2l0IGZhc3QtZXhwb3J0IFtyZXYtbGlzdC1mbGFnZ29yXSIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY1OAorbXNnaWQgInNob3cgcHJvZ3Jlc3MgYWZ0ZXIgPG4+IG9iamVjdHMiCittc2dzdHIgInZpc2EgZsO2cmxvcHAgZWZ0ZXIgPG4+IG9iamVrdCIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2MAorbXNnaWQgInNlbGVjdCBoYW5kbGluZyBvZiBzaWduZWQgdGFncyIKK21zZ3N0ciAidsOkbGogaGFudGVyaW5nIGF2IHNpZ25lcmFkZSB0YWdnYXIiCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjMKK21zZ2lkICJzZWxlY3QgaGFuZGxpbmcgb2YgdGFncyB0aGF0IHRhZyBmaWx0ZXJlZCBvYmplY3RzIgorbXNnc3RyICJ2w6RsaiBoYW50ZXJpbmcgYXYgdGFnZ2FyIHNvbSBoYXIgdGFnZ2ZpbHRyZXJhZGUgb2JqZWt0IgorCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY2Cittc2dpZCAiRHVtcCBtYXJrcyB0byB0aGlzIGZpbGUiCittc2dzdHIgIkR1bXAgbcOkcmtlbiB0aWxsIGZpbGVuIgorCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY4Cittc2dpZCAiSW1wb3J0IG1hcmtzIGZyb20gdGhpcyBmaWxlIgorbXNnc3RyICJJbXBvcnRlcmEgbcOkcmtlbiBmcsOlbiBmaWxlbiIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3MAorbXNnaWQgIkZha2UgYSB0YWdnZXIgd2hlbiB0YWdzIGxhY2sgb25lIgorbXNnc3RyICJGZWprYSB0YWdnYXJlIG7DpHIgdGFnZ2VuIHNha25hciBlbiIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3MgorbXNnaWQgIk91dHB1dCBmdWxsIHRyZWUgZm9yIGVhY2ggY29tbWl0IgorbXNnc3RyICJTa3JpdiB1dCBoZWxhIHRyw6RkZXQgZsO2ciB2YXJqZSBpbmNoZWNrbmluZyIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3NAorbXNnaWQgIlVzZSB0aGUgZG9uZSBmZWF0dXJlIHRvIHRlcm1pbmF0ZSB0aGUgc3RyZWFtIgorbXNnc3RyICJBbnbDpG5kIGRvbmUtZnVua3Rpb25lbiBmw7ZyIGF0dCBhdnNsdXRhIHN0csO2bW1lbiIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3NQorbXNnaWQgIlNraXAgb3V0cHV0IG9mIGJsb2IgZGF0YSIKK21zZ3N0ciAiSG9wcGEgw7Z2ZXIgc2tyaXZuaW5nIGF2IGJsb2ItZGF0YSIKKworIzogYnVpbHRpbi9mZXRjaC5jOjIwCittc2dpZCAiZ2l0IGZldGNoIFs8b3B0aW9ucz5dIFs8cmVwb3NpdG9yeT4gWzxyZWZzcGVjPi4uLl1dIgorbXNnc3RyICJnaXQgZmV0Y2ggWzxmbGFnZ29yPl0gWzxhcmtpdj4gWzxyZWZzcGVjPi4uLl1dIgorCisjOiBidWlsdGluL2ZldGNoLmM6MjEKK21zZ2lkICJnaXQgZmV0Y2ggWzxvcHRpb25zPl0gPGdyb3VwPiIKK21zZ3N0ciAiZ2l0IGZldGNoIFs8ZmxhZ2dvcj5dIDxncnVwcD4iCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyMgorbXNnaWQgImdpdCBmZXRjaCAtLW11bHRpcGxlIFs8b3B0aW9ucz5dIFsoPHJlcG9zaXRvcnk+IHwgPGdyb3VwPikuLi5dIgorbXNnc3RyICJnaXQgZmV0Y2ggLS1tdWx0aXBsZSBbPGZsYWdnb3I+XSBbKDxhcmtpdj4gfCA8Z3J1cHA+KS4uLl0iCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyMworbXNnaWQgImdpdCBmZXRjaCAtLWFsbCBbPG9wdGlvbnM+XSIKK21zZ3N0ciAiZ2l0IGZldGNoIC0tYWxsIFs8ZmxhZ2dvcj5dIgorCisjOiBidWlsdGluL2ZldGNoLmM6NjAKK21zZ2lkICJmZXRjaCBmcm9tIGFsbCByZW1vdGVzIgorbXNnc3RyICJow6RtdGEgZnLDpW4gYWxsYSBmasOkcnJhciIKKworIzogYnVpbHRpbi9mZXRjaC5jOjYyCittc2dpZCAiYXBwZW5kIHRvIC5naXQvRkVUQ0hfSEVBRCBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIgorbXNnc3RyICJsw6RnZyB0aWxsIGkgLmdpdC9GRVRDSF9IRUFEIGlzdMOkbGxldCBmw7ZyIGF0dCBza3JpdmEgw7Z2ZXIiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo2NAorbXNnaWQgInBhdGggdG8gdXBsb2FkIHBhY2sgb24gcmVtb3RlIGVuZCIKK21zZ3N0ciAic8O2a3bDpGcgdGlsbCB1cGxvYWQgcGFjayBww6UgZmrDpHJyZW4iCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo2NQorbXNnaWQgImZvcmNlIG92ZXJ3cml0ZSBvZiBsb2NhbCBicmFuY2giCittc2dzdHIgInR2aW5nYSDDtnZlcnNrcml2bmluZyBhdiBsb2thbCBncmVuIgorCisjOiBidWlsdGluL2ZldGNoLmM6NjcKK21zZ2lkICJmZXRjaCBmcm9tIG11bHRpcGxlIHJlbW90ZXMiCittc2dzdHIgImjDpG10YSBmcsOlbiBmbGVyYSBmasOkcnJhciIKKworIzogYnVpbHRpbi9mZXRjaC5jOjY5Cittc2dpZCAiZmV0Y2ggYWxsIHRhZ3MgYW5kIGFzc29jaWF0ZWQgb2JqZWN0cyIKK21zZ3N0ciAiaMOkbXRhIGFsbGEgdGFnZ2FyIG9jaCBhc3NvY2llcmFkZSBvYmpla3QiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3MQorbXNnaWQgImRvIG5vdCBmZXRjaCBhbGwgdGFncyAoLS1uby10YWdzKSIKK21zZ3N0ciAiaMOkbXRhIGludGUgYWxsYSB0YWdnYXIgKC0tbm8tdGFncykiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3MworbXNnaWQgInBydW5lIHJlbW90ZS10cmFja2luZyBicmFuY2hlcyBubyBsb25nZXIgb24gcmVtb3RlIgorbXNnc3RyICJyZW5zYSBmasOkcnJzcMOlcmFuZGUgZ3JlbmFyIGVqIGzDpG5ncmUgcMOlIGZqw6RycmVuIgorCisjOiBidWlsdGluL2ZldGNoLmM6NzQKK21zZ2lkICJvbi1kZW1hbmQiCittc2dzdHIgIm9uLWRlbWFuZCIKKworIzogYnVpbHRpbi9mZXRjaC5jOjc1Cittc2dpZCAiY29udHJvbCByZWN1cnNpdmUgZmV0Y2hpbmcgb2Ygc3VibW9kdWxlcyIKK21zZ3N0ciAic3R5ciByZWt1cnNpdiBow6RtdG5pbmcgYXYgdW5kZXJtb2R1bGVyIgorCisjOiBidWlsdGluL2ZldGNoLmM6NzkKK21zZ2lkICJrZWVwIGRvd25sb2FkZWQgcGFjayIKK21zZ3N0ciAiYmVow6VsbCBow6RtdGFkZSBwYWtldCIKKworIzogYnVpbHRpbi9mZXRjaC5jOjgxCittc2dpZCAiYWxsb3cgdXBkYXRpbmcgb2YgSEVBRCByZWYiCittc2dzdHIgInRpbGzDpXQgdXBwZGF0ZXJpbmcgYXYgSEVBRC1yZWZlcmVucyIKKworIzogYnVpbHRpbi9mZXRjaC5jOjg0Cittc2dpZCAiZGVlcGVuIGhpc3Rvcnkgb2Ygc2hhbGxvdyBjbG9uZSIKK21zZ3N0ciAiZsO2cmRqdXBhIGhpc3RvcmlrIGbDtnIgZ3J1bmQga2xvbiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjg2Cittc2dpZCAiY29udmVydCB0byBhIGNvbXBsZXRlIHJlcG9zaXRvcnkiCittc2dzdHIgImtvbnZlcnRlcmEgdGlsbCBrb21wbGV0dCBhcmtpdiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjg4IGJ1aWx0aW4vbG9nLmM6MTEzMAorbXNnaWQgImRpciIKK21zZ3N0ciAia2F0IgorCisjOiBidWlsdGluL2ZldGNoLmM6ODkKK21zZ2lkICJwcmVwZW5kIHRoaXMgdG8gc3VibW9kdWxlIHBhdGggb3V0cHV0IgorbXNnc3RyICJsw6RnZyB0aWxsIGkgYsO2cmphbiBhdiB1bmRlcm1vZHVsZW5zIHPDtmt2w6Rnc3V0ZGF0YSIKKworIzogYnVpbHRpbi9mZXRjaC5jOjkyCittc2dpZCAiZGVmYXVsdCBtb2RlIGZvciByZWN1cnNpb24iCittc2dzdHIgInN0YW5kYXJkbMOkZ2UgZsO2ciByZWt1cnNpb24iCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyMDQKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIHJlbW90ZSByZWYgSEVBRCIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBoaXR0YSBmasOkcnItcmVmZXJlbnNlbiBIRUFEIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjUzCisjOiBidWlsdGluL2ZldGNoLmM6MjU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIm9iamVjdCAlcyBub3QgZm91bmQiCiBtc2dzdHIgIm9iamVrdGV0ICVzIGhpdHRhZGVzIGludGUiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNTkKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyNjIKIG1zZ2lkICJbdXAgdG8gZGF0ZV0iCiBtc2dzdHIgIlvDoGpvdXJdIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjczCisjOiBidWlsdGluL2ZldGNoLmM6Mjc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiEgJS0qcyAlLSpzIC0+ICVzICAoY2FuJ3QgZmV0Y2ggaW4gY3VycmVudCBicmFuY2gpIgogbXNnc3RyICIhICUtKnMgJS0qcyAtPiAlcyAgKGthbiBpbnRlIGjDpG10YSBpIGFrdHVlbGwgZ3JlbikiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNzQgYnVpbHRpbi9mZXRjaC5jOjM2MAorIzogYnVpbHRpbi9mZXRjaC5jOjI3NyBidWlsdGluL2ZldGNoLmM6MzYzCiBtc2dpZCAiW3JlamVjdGVkXSIKIG1zZ3N0ciAiW3JlZnVzZXJhZF0iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyODUKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyODgKIG1zZ2lkICJbdGFnIHVwZGF0ZV0iCiBtc2dzdHIgIlt1cHBkYXRlcmFkIHRhZ2ddIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Mjg3IGJ1aWx0aW4vZmV0Y2guYzozMjIgYnVpbHRpbi9mZXRjaC5jOjM0MAorIzogYnVpbHRpbi9mZXRjaC5jOjI5MCBidWlsdGluL2ZldGNoLmM6MzI1IGJ1aWx0aW4vZmV0Y2guYzozNDMKIG1zZ2lkICIgICh1bmFibGUgdG8gdXBkYXRlIGxvY2FsIHJlZikiCiBtc2dzdHIgIiAgKGt1bmRlIGludGUgdXBwZGF0ZXJhIGxva2FsIHJlZikiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMDUKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMDgKIG1zZ2lkICJbbmV3IHRhZ10iCiBtc2dzdHIgIltueSB0YWdnXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjMwOAorIzogYnVpbHRpbi9mZXRjaC5jOjMxMQogbXNnaWQgIltuZXcgYnJhbmNoXSIKIG1zZ3N0ciAiW255IGdyZW5dIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzExCisjOiBidWlsdGluL2ZldGNoLmM6MzE0CiBtc2dpZCAiW25ldyByZWZdIgogbXNnc3RyICJbbnkgcmVmXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM1NgorIzogYnVpbHRpbi9mZXRjaC5jOjM1OQogbXNnaWQgInVuYWJsZSB0byB1cGRhdGUgbG9jYWwgcmVmIgogbXNnc3RyICJrdW5kZSBpbnRlIHVwcGRhdGVyYSBsb2thbCByZWYiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozNTYKKyM6IGJ1aWx0aW4vZmV0Y2guYzozNTkKIG1zZ2lkICJmb3JjZWQgdXBkYXRlIgogbXNnc3RyICJ0dmluZ2FkIHVwcGRhdGVyaW5nIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzYyCisjOiBidWlsdGluL2ZldGNoLmM6MzY1CiBtc2dpZCAiKG5vbi1mYXN0LWZvcndhcmQpIgogbXNnc3RyICIoZWogc25hYmJzcG9sYWQpIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzkzIGJ1aWx0aW4vZmV0Y2guYzo2ODUKKyM6IGJ1aWx0aW4vZmV0Y2guYzozOTYgYnVpbHRpbi9mZXRjaC5jOjY4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiAlczogJXNcbiIKIG1zZ3N0ciAia2FuIGludGUgw7ZwcG5hICVzOiAlc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NDAyCisjOiBidWlsdGluL2ZldGNoLmM6NDA1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGRpZCBub3Qgc2VuZCBhbGwgbmVjZXNzYXJ5IG9iamVjdHNcbiIKIG1zZ3N0ciAiJXMgc8OkbmRlIGludGUgYWxsYSBuw7ZkdsOkbmRpZ2Egb2JqZWt0XG4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo0ODgKKyM6IGJ1aWx0aW4vZmV0Y2guYzo0OTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRnJvbSAlLipzXG4iCiBtc2dzdHIgIkZyw6VuICUuKnNcbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjQ5OQorIzogYnVpbHRpbi9mZXRjaC5jOjUwMgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAic29tZSBsb2NhbCByZWZzIGNvdWxkIG5vdCBiZSB1cGRhdGVkOyB0cnkgcnVubmluZ1xuIgpAQCAtMTg5OCw1NSArNDY5Miw1NSBAQAogInZpc3NhIGxva2FsYSByZWZlcmVuc2VyIGt1bmRlIGludGUgdXBwZGF0ZXJhczsgdGVzdGEgYXR0IGvDtnJhXG4iCiAiIFwiZ2l0IHJlbW90ZSBwcnVuZSAlc1wiIGbDtnIgYXR0IHRhIGJvcnQgZ2FtbGEgZ3JlbmFyIHNvbSBzdMOlciBpIGtvbmZsaWt0IgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTQ5CisjOiBidWlsdGluL2ZldGNoLmM6NTUyCiAjLCBjLWZvcm1hdAotbXNnaWQgIiAgICglcyB3aWxsIGJlY29tZSBkYW5nbGluZylcbiIKLW1zZ3N0ciAiICAgKCVzIGtvbW1lciBibGkgZGluZ2xhbmRlKVxuIgorbXNnaWQgIiAgICglcyB3aWxsIGJlY29tZSBkYW5nbGluZykiCittc2dzdHIgIiAgICglcyBrb21tZXIgYmxpIGRpbmdsYW5kZSkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NTAKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NTMKICMsIGMtZm9ybWF0Ci1tc2dpZCAiICAgKCVzIGhhcyBiZWNvbWUgZGFuZ2xpbmcpXG4iCi1tc2dzdHIgIiAgICglcyBoYXIgYmxpdml0IGRpbmdsYW5kZSlcbiIKK21zZ2lkICIgICAoJXMgaGFzIGJlY29tZSBkYW5nbGluZykiCittc2dzdHIgIiAgICglcyBoYXIgYmxpdml0IGRpbmdsYW5kZSkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NTcKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NjAKIG1zZ2lkICJbZGVsZXRlZF0iCiBtc2dzdHIgIltib3J0dGFnZW5dIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTU4CisjOiBidWlsdGluL2ZldGNoLmM6NTYxIGJ1aWx0aW4vcmVtb3RlLmM6MTA1NQogbXNnaWQgIihub25lKSIKIG1zZ3N0ciAiKGluZ2VuKSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjY3NQorIzogYnVpbHRpbi9mZXRjaC5jOjY3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJSZWZ1c2luZyB0byBmZXRjaCBpbnRvIGN1cnJlbnQgYnJhbmNoICVzIG9mIG5vbi1iYXJlIHJlcG9zaXRvcnkiCiBtc2dzdHIgIlbDpGdyYXIgaMOkbXRhIHRpbGwgYWt0dWVsbCBncmVuICVzIGkgZXR0IGlja2UtbmFrZXQgYXJraXYiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo3MDkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3MTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRG9uJ3Qga25vdyBob3cgdG8gZmV0Y2ggZnJvbSAlcyIKIG1zZ3N0ciAiVmV0IGludGUgaHVyIG1hbiBow6RtdGFyIGZyw6VuICVzIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Nzg2CisjOiBidWlsdGluL2ZldGNoLmM6Nzg5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk9wdGlvbiBcIiVzXCIgdmFsdWUgXCIlc1wiIGlzIG5vdCB2YWxpZCBmb3IgJXMiCiBtc2dzdHIgIkZsYWdnYW4gXCIlc1wiIG9jaCB2w6RyZGV0IFwiJXNcIiDDpHIgaW50ZSBnaWx0aWd0IGbDtnIgJXMiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo3ODkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3B0aW9uIFwiJXNcIiBpcyBpZ25vcmVkIGZvciAlc1xuIgogbXNnc3RyICJGbGFnZ2FuIFwiJXNcIiBpZ25vcmVyYXMgZsO2ciAlc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6ODg4CisjOiBidWlsdGluL2ZldGNoLmM6ODk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZldGNoaW5nICVzXG4iCiBtc2dzdHIgIkjDpG10YXIgJXNcbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg5MAorIzogYnVpbHRpbi9mZXRjaC5jOjg5NiBidWlsdGluL3JlbW90ZS5jOjEwMAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgZmV0Y2ggJXMiCiBtc2dzdHIgIkt1bmRlIGludGUgaMOkbXRhICVzIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTA3CisjOiBidWlsdGluL2ZldGNoLmM6OTE1CiBtc2dpZCAiIgogIk5vIHJlbW90ZSByZXBvc2l0b3J5IHNwZWNpZmllZC4gIFBsZWFzZSwgc3BlY2lmeSBlaXRoZXIgYSBVUkwgb3IgYVxuIgogInJlbW90ZSBuYW1lIGZyb20gd2hpY2ggbmV3IHJldmlzaW9ucyBzaG91bGQgYmUgZmV0Y2hlZC4iCkBAIC0xOTU0LDI3ICs0NzQ4LDE1NCBAQAogIkluZ2V0IGZqw6RycmFya2l2IGFuZ2F2cy4gQW5nZSBhbnRpbmdlbiBlbiBVUkwgZWxsZXIgbmFtbmV0IHDDpSBldHRcbiIKICJmasOkcnJhcmtpdiBzb20gbnlhIGluY2hlY2tuaW5nYXIgc2thbGwgaMOkbXRhcyBmcsOlbi4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5MjcKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5MzUKIG1zZ2lkICJZb3UgbmVlZCB0byBzcGVjaWZ5IGEgdGFnIG5hbWUuIgogbXNnc3RyICJEdSBtw6VzdGUgYW5nZSBuYW1uZXQgcMOlIGVuIHRhZ2cuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTc5CisjOiBidWlsdGluL2ZldGNoLmM6OTgxCittc2dpZCAiLS1kZXB0aCBhbmQgLS11bnNoYWxsb3cgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiCittc2dzdHIgIi0tZGVwdGggb2NoIC0tdW5zaGFsbG93IGthbiBpbnRlIGFudsOkbmRhcyBzYW10aWRpZ3QiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5ODMKK21zZ2lkICItLXVuc2hhbGxvdyBvbiBhIGNvbXBsZXRlIHJlcG9zaXRvcnkgZG9lcyBub3QgbWFrZSBzZW5zZSIKK21zZ3N0ciAiLS11bnNoYWxsb3cga2FuIGludGUgYW52w6RuZGFzIHDDpSBldHQga29tcGxldHQgYXJraXYiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDAyCiBtc2dpZCAiZmV0Y2ggLS1hbGwgZG9lcyBub3QgdGFrZSBhIHJlcG9zaXRvcnkgYXJndW1lbnQiCiBtc2dzdHIgImZldGNoIC0tYWxsIHRhciBpbnRlIG5hbW5ldCBww6UgZXR0IGFya2l2IHNvbSBhcmd1bWVudCIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjk4MQorIzogYnVpbHRpbi9mZXRjaC5jOjEwMDQKIG1zZ2lkICJmZXRjaCAtLWFsbCBkb2VzIG5vdCBtYWtlIHNlbnNlIHdpdGggcmVmc3BlY3MiCiBtc2dzdHIgImZldGNoIC0tYWxsIGthbiBpbnRlIGFuZ2VzIG1lZCByZWZlcmVuc3NwZWNpZmlrYXRpb25lciIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjk5MgorIzogYnVpbHRpbi9mZXRjaC5jOjEwMTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gc3VjaCByZW1vdGUgb3IgcmVtb3RlIGdyb3VwOiAlcyIKIG1zZ3N0ciAiRmrDpHJyZW4gZWxsZXIgZmrDpHJyZ3J1cHBlbiBmaW5ucyBpbnRlOiAlcyIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjEwMDAKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDIzCiBtc2dpZCAiRmV0Y2hpbmcgYSBncm91cCBhbmQgc3BlY2lmeWluZyByZWZzcGVjcyBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICJLYW4gaW50ZSBow6RtdGEgZnLDpW4gZ3J1cHAgb2NoIGFuZ2UgcmVmZXJlbnNzcGVjaWZpa2F0aW9uZXIiCiAKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjEzCittc2dpZCAiZ2l0IGZtdC1tZXJnZS1tc2cgWy1tIDxtZXNzYWdlPl0gWy0tbG9nWz08bj5dfC0tbm8tbG9nXSBbLS1maWxlIDxmaWxlPl0iCittc2dzdHIgIiIKKyJnaXQgZm10LW1lcmdlLW1zZyBbLW0gPG1lZGRlbGFuZGU+XSBbLS1sb2dbPTxuPl18LS1uby1sb2ddIFstLWZpbGUgPGZpbD5dIgorCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjMgYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY2IGJ1aWx0aW4vZ3JlcC5jOjcwMQorIzogYnVpbHRpbi9tZXJnZS5jOjE4OCBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU1IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzUKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ2IHBhcnNlLW9wdGlvbnMuaDoxMzMgcGFyc2Utb3B0aW9ucy5oOjIzOQorbXNnaWQgIm4iCittc2dzdHIgIm4iCisKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2NAorbXNnaWQgInBvcHVsYXRlIGxvZyB3aXRoIGF0IG1vc3QgPG4+IGVudHJpZXMgZnJvbSBzaG9ydGxvZyIKK21zZ3N0ciAiZnlsbCBpIGxvZ2dlbiBtZWQgc29tIG1lc3QgPG4+IHBvc3RlciBmcsOlbiBzaG9ydGxvZyIKKworIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY3Cittc2dpZCAiYWxpYXMgZm9yIC0tbG9nIChkZXByZWNhdGVkKSIKK21zZ3N0ciAiYWxpYXMgZsO2ciAtLWxvZyAoYXZyw6VkcykiCisKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY3MAorbXNnaWQgInRleHQiCittc2dzdHIgInRleHQiCisKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY3MQorbXNnaWQgInVzZSA8dGV4dD4gYXMgc3RhcnQgb2YgbWVzc2FnZSIKK21zZ3N0ciAiaW5sZWQgbWVkZGVsYW5kZSBtZWQgPHRleHQ+IgorCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NzIKK21zZ2lkICJmaWxlIHRvIHJlYWQgZnJvbSIKK21zZ3N0ciAiZmlsIGF0dCBsw6RzYSBmcsOlbiIKKworIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzo5NzkKK21zZ2lkICJnaXQgZm9yLWVhY2gtcmVmIFtvcHRpb25zXSBbPHBhdHRlcm4+XSIKK21zZ3N0ciAiZ2l0IGZvci1lYWNoLXJlZiBbZmxhZ2dvcl0gWzxtw7Zuc3Rlcj5dIgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjk5NAorbXNnaWQgInF1b3RlIHBsYWNlaG9sZGVycyBzdWl0YWJseSBmb3Igc2hlbGxzIgorbXNnc3RyICJjaXRlcmEgcGxhdHNow6VsbGFyZSBwYXNzYW5kZSBmw7ZyIHNrYWwiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6OTk2Cittc2dpZCAicXVvdGUgcGxhY2Vob2xkZXJzIHN1aXRhYmx5IGZvciBwZXJsIgorbXNnc3RyICJjaXRlcmEgcGxhdHNow6VsbGFyZSBwYXNzYW5kZSBmw7ZyIHBlcmwiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6OTk4Cittc2dpZCAicXVvdGUgcGxhY2Vob2xkZXJzIHN1aXRhYmx5IGZvciBweXRob24iCittc2dzdHIgImNpdGVyYSBwbGF0c2jDpWxsYXJlIHBhc3NhbmRlIGbDtnIgcHl0aG9uIgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjEwMDAKK21zZ2lkICJxdW90ZSBwbGFjZWhvbGRlcnMgc3VpdGFibHkgZm9yIHRjbCIKK21zZ3N0ciAiY2l0ZXJhIHBsYXRzaMOlbGxhcmUgcGFzc2FuZGUgZsO2ciB0Y2wiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6MTAwMworbXNnaWQgInNob3cgb25seSA8bj4gbWF0Y2hlZCByZWZzIgorbXNnc3RyICJ2aXNhIGVuZGFzdCA8bj4gdHLDpGZmYWRlIHJlZnMiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6MTAwNAorbXNnaWQgImZvcm1hdCIKK21zZ3N0ciAiZm9ybWF0IgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjEwMDQKK21zZ2lkICJmb3JtYXQgdG8gdXNlIGZvciB0aGUgb3V0cHV0IgorbXNnc3RyICJmb3JtYXQgYXR0IGFudsOkbmRhIGbDtnIgdXRkYXRhIgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjEwMDUKK21zZ2lkICJrZXkiCittc2dzdHIgIm55Y2tlbCIKKworIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzoxMDA2Cittc2dpZCAiZmllbGQgbmFtZSB0byBzb3J0IG9uIgorbXNnc3RyICJmw6RsdG5hbW4gYXR0IHNvcnRlcmEgcMOlIgorCisjOiBidWlsdGluL2ZzY2suYzo2MDgKK21zZ2lkICJnaXQgZnNjayBbb3B0aW9uc10gWzxvYmplY3Q+Li4uXSIKK21zZ3N0ciAiZ2l0IGZzY2sgW2ZsYWdnb3JdIFs8b2JqZWt0Pi4uLl0iCisKKyM6IGJ1aWx0aW4vZnNjay5jOjYxNAorbXNnaWQgInNob3cgdW5yZWFjaGFibGUgb2JqZWN0cyIKK21zZ3N0ciAidmlzYSBvbsOlYmFyYSBvYmpla3QiCisKKyM6IGJ1aWx0aW4vZnNjay5jOjYxNQorbXNnaWQgInNob3cgZGFuZ2xpbmcgb2JqZWN0cyIKK21zZ3N0ciAidmlzYSBkaW5nbGFuZGUgb2JqZWt0IgorCisjOiBidWlsdGluL2ZzY2suYzo2MTYKK21zZ2lkICJyZXBvcnQgdGFncyIKK21zZ3N0ciAicmFwcG9ydGVyYSB0YWdnYXIiCisKKyM6IGJ1aWx0aW4vZnNjay5jOjYxNworbXNnaWQgInJlcG9ydCByb290IG5vZGVzIgorbXNnc3RyICJyYXBwb3J0ZXJhIHJvdG5vZGVyIgorCisjOiBidWlsdGluL2ZzY2suYzo2MTgKK21zZ2lkICJtYWtlIGluZGV4IG9iamVjdHMgaGVhZCBub2RlcyIKK21zZ3N0ciAiZ8O2ciBpbmRleG9qZWt0IHRpbGwgaHV2dWRub2RlciIKKworIzogYnVpbHRpbi9mc2NrLmM6NjE5Cittc2dpZCAibWFrZSByZWZsb2dzIGhlYWQgbm9kZXMgKGRlZmF1bHQpIgorbXNnc3RyICJnw7ZyIHJlZmxvZ2dhciB0aWxsIGh1dnVkbm9kZXIgKHN0YW5kYXJkKSIKKworIzogYnVpbHRpbi9mc2NrLmM6NjIwCittc2dpZCAiYWxzbyBjb25zaWRlciBwYWNrcyBhbmQgYWx0ZXJuYXRlIG9iamVjdHMiCittc2dzdHIgInRhIMOkdmVuIGjDpG5zeW4gdGlsbCBwYWtldCBvY2ggYWx0ZXJuYXRpdmEgb2JqZWt0IgorCisjOiBidWlsdGluL2ZzY2suYzo2MjEKK21zZ2lkICJlbmFibGUgbW9yZSBzdHJpY3QgY2hlY2tpbmciCittc2dzdHIgImFrdGl2ZXJhIHN0cmlrdGFyZSBrb250cm9sbCIKKworIzogYnVpbHRpbi9mc2NrLmM6NjIzCittc2dpZCAid3JpdGUgZGFuZ2xpbmcgb2JqZWN0cyBpbiAuZ2l0L2xvc3QtZm91bmQiCittc2dzdHIgInNrcml2IGRpbmdsYW5kZSBvYmpla3QgaSAuZ2l0L2xvc3QtZm91bmQiCisKKyM6IGJ1aWx0aW4vZnNjay5jOjYyNCBidWlsdGluL3BydW5lLmM6MTM0Cittc2dpZCAic2hvdyBwcm9ncmVzcyIKK21zZ3N0ciAidmlzYSBmw7ZybG9wcCIKKworIzogYnVpbHRpbi9nYy5jOjIyCittc2dpZCAiZ2l0IGdjIFtvcHRpb25zXSIKK21zZ3N0ciAiZ2l0IGdjIFtmbGFnZ29yXSIKKwogIzogYnVpbHRpbi9nYy5jOjYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgJXM6ICclcyciCkBAIC0xOTg1LDEyICs0OTA2LDE5IEBACiBtc2dpZCAiaW5zYW5lbHkgbG9uZyBvYmplY3QgZGlyZWN0b3J5ICUuKnMiCiBtc2dzdHIgInRva2lndCBsw6VuZyBvYmpla3RrYXRhbG9nICUuKnMiCiAKLSM6IGJ1aWx0aW4vZ2MuYzoyMjEKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiQXV0byBwYWNraW5nIHRoZSByZXBvc2l0b3J5IGZvciBvcHRpbXVtIHBlcmZvcm1hbmNlLlxuIgotbXNnc3RyICJQYWNrYXIgYXJraXZldCBhdXRvbWF0aXNrdCBmw7ZyIG9wdGltYWwgcHJlc3RhbmRhLlxuIgorIzogYnVpbHRpbi9nYy5jOjE3OQorbXNnaWQgInBydW5lIHVucmVmZXJlbmNlZCBvYmplY3RzIgorbXNnc3RyICJyZW5zYSBlaiByZWZlcmVyYWRlIG9iamVrdCIKIAotIzogYnVpbHRpbi9nYy5jOjIyNAorIzogYnVpbHRpbi9nYy5jOjE4MQorbXNnaWQgImJlIG1vcmUgdGhvcm91Z2ggKGluY3JlYXNlZCBydW50aW1lKSIKK21zZ3N0ciAidmFyIG1lciBncnVuZGxpZyAow7ZrYXIga8O2cnRpZGVuKSIKKworIzogYnVpbHRpbi9nYy5jOjE4MgorbXNnaWQgImVuYWJsZSBhdXRvLWdjIG1vZGUiCittc2dzdHIgImFrdGl2ZXJhIGF1dG8tZ2MtbMOkZ2UiCisKKyM6IGJ1aWx0aW4vZ2MuYzoyMjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkF1dG8gcGFja2luZyB0aGUgcmVwb3NpdG9yeSBmb3Igb3B0aW11bSBwZXJmb3JtYW5jZS4gWW91IG1heSBhbHNvXG4iCkBAIC0xOTk5LDcyICs0OTI3LDY3MiBAQAogIlBhY2thciBhcmtpdmV0IGF1dG9tYXRpc2t0IGbDtnIgb3B0aW1hbCBwcmVzdGFuZGEuIER1IGthbiDDpHZlblxuIgogImvDtnJhIFwiZ2l0IGdjXCIgbWFudWVsbHQuIFNlIFwiZ2l0IGhlbHAgZ2NcIiBmw7ZyIG1lciBpbmZvcm1hdGlvbi5cbiIKIAotIzogYnVpbHRpbi9nYy5jOjI1MQorIzogYnVpbHRpbi9nYy5jOjI0OQogbXNnaWQgIiIKICJUaGVyZSBhcmUgdG9vIG1hbnkgdW5yZWFjaGFibGUgbG9vc2Ugb2JqZWN0czsgcnVuICdnaXQgcHJ1bmUnIHRvIHJlbW92ZSB0aGVtLiIKIG1zZ3N0ciAiIgogIkRldCBmaW5ucyBmw7ZyIG3DpW5nYSBvbsOlYmFyYSBsw7ZzYSBvYmpla3Q7IGvDtnIgXCJnaXQgcHJ1bmVcIiBmw7ZyIGF0dCB0YSBib3J0ICIKICJkZW0uIgogCi0jOiBidWlsdGluL2dyZXAuYzoyMTYKKyM6IGJ1aWx0aW4vZ3JlcC5jOjIyCittc2dpZCAiZ2l0IGdyZXAgW29wdGlvbnNdIFstZV0gPHBhdHRlcm4+IFs8cmV2Pi4uLl0gW1stLV0gPHBhdGg+Li4uXSIKK21zZ3N0ciAiZ2l0IGdyZXAgW2ZsYWdnb3JdIFstZV0gPG3Dtm5zdGVyPiBbPHJldj4uLi5dIFtbLS1dIDxzw7ZrdsOkZz4uLi5dIgorCisjOiBidWlsdGluL2dyZXAuYzoyMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ3JlcDogZmFpbGVkIHRvIGNyZWF0ZSB0aHJlYWQ6ICVzIgogbXNnc3RyICJncmVwOiBtaXNzbHlja2FkZXMgc2thcGEgdHLDpWQuICVzIgogCi0jOiBidWlsdGluL2dyZXAuYzo0MDIKKyM6IGJ1aWx0aW4vZ3JlcC5jOjM2NQogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gY2hkaXI6ICVzIgogbXNnc3RyICJLdW5kZSBpbnRlIGJ5dGEga2F0YWxvZyAoY2hkaXIpOiAlcyIKIAotIzogYnVpbHRpbi9ncmVwLmM6NDc4IGJ1aWx0aW4vZ3JlcC5jOjUxMgorIzogYnVpbHRpbi9ncmVwLmM6NDQzIGJ1aWx0aW4vZ3JlcC5jOjQ3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcmVhZCB0cmVlICglcykiCiBtc2dzdHIgImt1bmRlIGludGUgbMOkc2EgdHLDpGQgKCVzKSIKIAotIzogYnVpbHRpbi9ncmVwLmM6NTI2CisjOiBidWlsdGluL2dyZXAuYzo0OTMKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGdyZXAgZnJvbSBvYmplY3Qgb2YgdHlwZSAlcyIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBcImdyZXBcIiBmcsOlbiBvYmpla3QgYXYgdHlwZW4gJXMiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjU4NAorIzogYnVpbHRpbi9ncmVwLmM6NTUxCiAjLCBjLWZvcm1hdAogbXNnaWQgInN3aXRjaCBgJWMnIGV4cGVjdHMgYSBudW1lcmljYWwgdmFsdWUiCiBtc2dzdHIgImZsYWdnYW4gXCIlY1wiIGFudGFyIGV0dCBudW1lcmlza3QgdsOkcmRlIgogCi0jOiBidWlsdGluL2dyZXAuYzo2MDEKKyM6IGJ1aWx0aW4vZ3JlcC5jOjU2OAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiAnJXMnIgogbXNnc3RyICJrYW4gaW50ZSDDtnBwbmEgXCIlc1wiIgogCi0jOiBidWlsdGluL2dyZXAuYzo4ODgKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY0MworbXNnaWQgInNlYXJjaCBpbiBpbmRleCBpbnN0ZWFkIG9mIGluIHRoZSB3b3JrIHRyZWUiCittc2dzdHIgInPDtmsgaSBpbmRleGV0IGlzdMOkbGxldCBmw7ZyIGkgYXJiZXRza2F0YWxvZ2VuIgorCisjOiBidWlsdGluL2dyZXAuYzo2NDUKK21zZ2lkICJmaW5kIGluIGNvbnRlbnRzIG5vdCBtYW5hZ2VkIGJ5IGdpdCIKK21zZ3N0ciAic8O2ayBpIGlubmVow6VsIHNvbSBpbnRlIGhhbnRlcmFzIGF2IGdpdCIKKworIzogYnVpbHRpbi9ncmVwLmM6NjQ3Cittc2dpZCAic2VhcmNoIGluIGJvdGggdHJhY2tlZCBhbmQgdW50cmFja2VkIGZpbGVzIgorbXNnc3RyICJzw7ZrIGkgYsOlZGUgc3DDpXJhZGUgb2NoIG9zcMOlcmFkZSBmaWxlciIKKworIzogYnVpbHRpbi9ncmVwLmM6NjQ5Cittc2dpZCAic2VhcmNoIGFsc28gaW4gaWdub3JlZCBmaWxlcyIKK21zZ3N0ciAic8O2ayDDpHZlbiBpIGlnbm9yZXJhZGUgZmlsZXIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY1MgorbXNnaWQgInNob3cgbm9uLW1hdGNoaW5nIGxpbmVzIgorbXNnc3RyICJ2aXMgcmFkZXIgc29tIGludGUgdHLDpGZmYXMiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY1NAorbXNnaWQgImNhc2UgaW5zZW5zaXRpdmUgbWF0Y2hpbmciCittc2dzdHIgInNraWZ0bMOkZ2Vzb2vDpG5zbGlnIHPDtmtuaW5nIgorCisjOiBidWlsdGluL2dyZXAuYzo2NTYKK21zZ2lkICJtYXRjaCBwYXR0ZXJucyBvbmx5IGF0IHdvcmQgYm91bmRhcmllcyIKK21zZ3N0ciAibWF0Y2hhIGVuZGFzdCBtw7Zuc3RlciB2aWQgb3JkZ3LDpG5zZXIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY1OAorbXNnaWQgInByb2Nlc3MgYmluYXJ5IGZpbGVzIGFzIHRleHQiCittc2dzdHIgImhhbnRlcmEgYmluw6RyZmlsZXIgc29tIHRleHQiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY2MAorbXNnaWQgImRvbid0IG1hdGNoIHBhdHRlcm5zIGluIGJpbmFyeSBmaWxlcyIKK21zZ3N0ciAidHLDpGZmYSBpbnRlIG3Dtm5zdGVyIGkgYmluw6RyZmlsZXIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY2MworbXNnaWQgImRlc2NlbmQgYXQgbW9zdCA8ZGVwdGg+IGxldmVscyIKK21zZ3N0ciAiZ8OlIHNvbSBtZXN0IG5lZCA8ZGp1cD4gbml2w6VlciIKKworIzogYnVpbHRpbi9ncmVwLmM6NjY3Cittc2dpZCAidXNlIGV4dGVuZGVkIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCittc2dzdHIgImFudsOkbmQgdXTDtmthZGUgUE9TSVgtcmVndWxqw6RyYSB1dHRyeWNrIgorCisjOiBidWlsdGluL2dyZXAuYzo2NzAKK21zZ2lkICJ1c2UgYmFzaWMgUE9TSVggcmVndWxhciBleHByZXNzaW9ucyAoZGVmYXVsdCkiCittc2dzdHIgImFudsOkbmQgZ3J1bmRsw6RnZ2FuZGUgUE9TSVgtcmVndWxqw6RyYSB1dHRyeWNrIChzdGFuZGFyZCkiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY3MworbXNnaWQgImludGVycHJldCBwYXR0ZXJucyBhcyBmaXhlZCBzdHJpbmdzIgorbXNnc3RyICJ0b2xrYSBtw7Zuc3RlciBzb20gZml4ZXJhZGUgc3Ryw6RuZ2FyIgorCisjOiBidWlsdGluL2dyZXAuYzo2NzYKK21zZ2lkICJ1c2UgUGVybC1jb21wYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCittc2dzdHIgImFudsOkbmQgUGVybGtvbXBhdGlibGEgcmVndWxqw6RyYSB1dHRyeWNrIgorCisjOiBidWlsdGluL2dyZXAuYzo2NzkKK21zZ2lkICJzaG93IGxpbmUgbnVtYmVycyIKK21zZ3N0ciAidmlzYSByYWRudW1tZXIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4MAorbXNnaWQgImRvbid0IHNob3cgZmlsZW5hbWVzIgorbXNnc3RyICJ2aXNhIGludGUgZmlsbmFtbiIKKworIzogYnVpbHRpbi9ncmVwLmM6NjgxCittc2dpZCAic2hvdyBmaWxlbmFtZXMiCittc2dzdHIgInZpc2EgZmlsbmFtbiIKKworIzogYnVpbHRpbi9ncmVwLmM6NjgzCittc2dpZCAic2hvdyBmaWxlbmFtZXMgcmVsYXRpdmUgdG8gdG9wIGRpcmVjdG9yeSIKK21zZ3N0ciAidmlzYSBmaWxuYW1uIHJlbGF0aXZhIHRpbGwgdG9wcGthdGFsb2dlbiIKKworIzogYnVpbHRpbi9ncmVwLmM6Njg1Cittc2dpZCAic2hvdyBvbmx5IGZpbGVuYW1lcyBpbnN0ZWFkIG9mIG1hdGNoaW5nIGxpbmVzIgorbXNnc3RyICJ2aXNhIGVuZGFzdCBmaWxuYW1uIGlzdMOkbGxldCBmw7ZyIHRyw6RmZmFkZSByYWRlciIKKworIzogYnVpbHRpbi9ncmVwLmM6Njg3Cittc2dpZCAic3lub255bSBmb3IgLS1maWxlcy13aXRoLW1hdGNoZXMiCittc2dzdHIgInN5bm9ueW0gZsO2ciAtLWZpbGVzLXdpdGgtbWF0Y2hlcyIKKworIzogYnVpbHRpbi9ncmVwLmM6NjkwCittc2dpZCAic2hvdyBvbmx5IHRoZSBuYW1lcyBvZiBmaWxlcyB3aXRob3V0IG1hdGNoIgorbXNnc3RyICJ2aXNhIGVuZGFzdCBuYW1uIHDDpSBmaWxlciB1dGFuIHRyw6RmZmFyIgorCisjOiBidWlsdGluL2dyZXAuYzo2OTIKK21zZ2lkICJwcmludCBOVUwgYWZ0ZXIgZmlsZW5hbWVzIgorbXNnc3RyICJza3JpdiBOVUwgZWZ0ZXIgZmlsbmFtbiIKKworIzogYnVpbHRpbi9ncmVwLmM6Njk0Cittc2dpZCAic2hvdyB0aGUgbnVtYmVyIG9mIG1hdGNoZXMgaW5zdGVhZCBvZiBtYXRjaGluZyBsaW5lcyIKK21zZ3N0ciAidmlzYSBhbnRhbCB0csOkZmZhciBpc3TDpGxsZXQgZsO2ciB0csOkZmZhZGUgcmFkZXIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5NQorbXNnaWQgImhpZ2hsaWdodCBtYXRjaGVzIgorbXNnc3RyICJsanVzbWFya2VyYSB0csOkZmZhciIKKworIzogYnVpbHRpbi9ncmVwLmM6Njk3Cittc2dpZCAicHJpbnQgZW1wdHkgbGluZSBiZXR3ZWVuIG1hdGNoZXMgZnJvbSBkaWZmZXJlbnQgZmlsZXMiCittc2dzdHIgInNrcml2IHRvbW1hIHJhZGVyIG1lbGxhbiB0csOkZmZhciBmcsOlbiBvbGlrYSBmaWxlciIKKworIzogYnVpbHRpbi9ncmVwLmM6Njk5Cittc2dpZCAic2hvdyBmaWxlbmFtZSBvbmx5IG9uY2UgYWJvdmUgbWF0Y2hlcyBmcm9tIHNhbWUgZmlsZSIKK21zZ3N0ciAidmlzYSBmaWxuYW1uIGVuZGFzdCBlbiBnw6VuZyBvdmFuZsO2ciB0csOkZmZhciBmcsOlbiBzYW1tYSBmaWwiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcwMgorbXNnaWQgInNob3cgPG4+IGNvbnRleHQgbGluZXMgYmVmb3JlIGFuZCBhZnRlciBtYXRjaGVzIgorbXNnc3RyICJ2aXNhIDxuPiByYWRlciBzYW1tYW5oYW5nIGbDtnJlIG9jaCBlZnRlciB0csOkZmZhciIKKworIzogYnVpbHRpbi9ncmVwLmM6NzA1Cittc2dpZCAic2hvdyA8bj4gY29udGV4dCBsaW5lcyBiZWZvcmUgbWF0Y2hlcyIKK21zZ3N0ciAidmlzYSA8bj4gcmFkZXIgc2FtbWFuaGFuZyBmw7ZyZSB0csOkZmZhciIKKworIzogYnVpbHRpbi9ncmVwLmM6NzA3Cittc2dpZCAic2hvdyA8bj4gY29udGV4dCBsaW5lcyBhZnRlciBtYXRjaGVzIgorbXNnc3RyICJ2aXNhIDxuPiByYWRlciBzYW1tYW5oYW5nIGVmdGVyIHRyw6RmZmFyIgorCisjOiBidWlsdGluL2dyZXAuYzo3MDgKK21zZ2lkICJzaG9ydGN1dCBmb3IgLUMgTlVNIgorbXNnc3RyICJnZW52w6RnIGbDtnIgLUMgTlVNIgorCisjOiBidWlsdGluL2dyZXAuYzo3MTEKK21zZ2lkICJzaG93IGEgbGluZSB3aXRoIHRoZSBmdW5jdGlvbiBuYW1lIGJlZm9yZSBtYXRjaGVzIgorbXNnc3RyICJ2aXNhIGVuIHJhZCBtZWQgZnVua3Rpb25zbmFtbmV0IGbDtnJlIHRyw6RmZmVuIgorCisjOiBidWlsdGluL2dyZXAuYzo3MTMKK21zZ2lkICJzaG93IHRoZSBzdXJyb3VuZGluZyBmdW5jdGlvbiIKK21zZ3N0ciAidmlzYSBkZW4gb21rcmluZ2xpZ2dhbmRlIGZ1bmt0aW9uZW4iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcxNgorbXNnaWQgInJlYWQgcGF0dGVybnMgZnJvbSBmaWxlIgorbXNnc3RyICJsw6RzIG3Dtm5zdGVyIGZyw6VuIGZpbCIKKworIzogYnVpbHRpbi9ncmVwLmM6NzE4Cittc2dpZCAibWF0Y2ggPHBhdHRlcm4+IgorbXNnc3RyICJ0csOkZmZhIDxtw7Zuc3Rlcj4iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcyMAorbXNnaWQgImNvbWJpbmUgcGF0dGVybnMgc3BlY2lmaWVkIHdpdGggLWUiCittc2dzdHIgImtvbWJpbmVyYSBtw7Zuc3RlciBzb20gYW5nZXMgbWVkIC1lIgorCisjOiBidWlsdGluL2dyZXAuYzo3MzIKK21zZ2lkICJpbmRpY2F0ZSBoaXQgd2l0aCBleGl0IHN0YXR1cyB3aXRob3V0IG91dHB1dCIKK21zZ3N0ciAiYW5nZSB0csOkZmYgbWVkIHNsdXRzdGF0dXNrb2QgdXRhbiB1dGRhdGEiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjczNAorbXNnaWQgInNob3cgb25seSBtYXRjaGVzIGZyb20gZmlsZXMgdGhhdCBtYXRjaCBhbGwgcGF0dGVybnMiCittc2dzdHIgInZpc2EgZW5kYXN0IHRyw6RmZmFyIGZyw6VuIGZpbGVyIHNvbSB0csOkZmZhciBhbGxhIG3Dtm5zdGVyIgorCisjOiBidWlsdGluL2dyZXAuYzo3MzYKK21zZ2lkICJzaG93IHBhcnNlIHRyZWUgZm9yIGdyZXAgZXhwcmVzc2lvbiIKK21zZ3N0ciAidmlzYSBhbmFseXN0csOkZCBmw7ZyIGdyZXAtdXR0cnljayIKKworIzogYnVpbHRpbi9ncmVwLmM6NzQwCittc2dpZCAicGFnZXIiCittc2dzdHIgImJsw6RkZHJhcmUiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0MAorbXNnaWQgInNob3cgbWF0Y2hpbmcgZmlsZXMgaW4gdGhlIHBhZ2VyIgorbXNnc3RyICJ2aXNhIHRyw6RmZmFkZSBmaWxlciBpIGZpbGJsw6RkZHJhcmVuIgorCisjOiBidWlsdGluL2dyZXAuYzo3NDMKK21zZ2lkICJhbGxvdyBjYWxsaW5nIG9mIGdyZXAoMSkgKGlnbm9yZWQgYnkgdGhpcyBidWlsZCkiCittc2dzdHIgInRpbGzDpXQgYW5yb3BhIGdyZXAoMSkgKGlnbm9yZXJhcyBhdiBkZXR0YSBieWdnZSkiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0NCBidWlsdGluL3Nob3ctcmVmLmM6MTg0Cittc2dpZCAic2hvdyB1c2FnZSIKK21zZ3N0ciAidmlzYSBhbnbDpG5kbmluZyIKKworIzogYnVpbHRpbi9ncmVwLmM6ODExCiBtc2dpZCAibm8gcGF0dGVybiBnaXZlbi4iCiBtc2dzdHIgImluZ2V0IG3Dtm5zdGVyIGFuZ2F2cy4iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjkwMgotIywgYy1mb3JtYXQKLW1zZ2lkICJiYWQgb2JqZWN0ICVzIgotbXNnc3RyICJmZWxha3RpZ3Qgb2JqZWt0ICVzIgotCi0jOiBidWlsdGluL2dyZXAuYzo5NDMKKyM6IGJ1aWx0aW4vZ3JlcC5jOjg2NgogbXNnaWQgIi0tb3Blbi1maWxlcy1pbi1wYWdlciBvbmx5IHdvcmtzIG9uIHRoZSB3b3JrdHJlZSIKIG1zZ3N0ciAiLS1vcGVuLWZpbGVzLWluLXBhZ2VyIGZ1bmdlcmFyIGVuZGFzdCBpIGFyYmV0c2thdGFsb2dlbiIKIAotIzogYnVpbHRpbi9ncmVwLmM6OTY2CisjOiBidWlsdGluL2dyZXAuYzo4ODkKIG1zZ2lkICItLWNhY2hlZCBvciAtLXVudHJhY2tlZCBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tbm8taW5kZXguIgogbXNnc3RyICItLWNhY2hlZCBvY2ggLS11bnRyYWNrZWQga2FuIGludGUgYW52w6RuZGFzIG1lZCAtLW5vLWluZGV4LiIKIAotIzogYnVpbHRpbi9ncmVwLmM6OTcxCisjOiBidWlsdGluL2dyZXAuYzo4OTQKIG1zZ2lkICItLW5vLWluZGV4IG9yIC0tdW50cmFja2VkIGNhbm5vdCBiZSB1c2VkIHdpdGggcmV2cy4iCiBtc2dzdHIgIi0tbm8taW5kZXggb2NoIC0tdW50cmFja2VkIGthbiBpbnRlIGFudsOkbmRhcyBtZWQgcmV2aXNpb25lci4iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjk3NAorIzogYnVpbHRpbi9ncmVwLmM6ODk3CiBtc2dpZCAiLS1bbm8tXWV4Y2x1ZGUtc3RhbmRhcmQgY2Fubm90IGJlIHVzZWQgZm9yIHRyYWNrZWQgY29udGVudHMuIgogbXNnc3RyICItLVtuby1dZXhjbHVkZS1zdGFuZGFyZCBrYW4gaW50ZSBhbnbDpG5kYXMgZsO2ciBzcMOlcmF0IGlubmVow6VsbC4iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjk4MgorIzogYnVpbHRpbi9ncmVwLmM6OTA1CiBtc2dpZCAiYm90aCAtLWNhY2hlZCBhbmQgdHJlZXMgYXJlIGdpdmVuLiIKIG1zZ3N0ciAiYsOlZGUgLS1jYWNoZWQgb2NoIHRyw6RkIGFuZ2F2cy4iCiAKKyM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo2MAorbXNnaWQgIiIKKyJnaXQgaGFzaC1vYmplY3QgWy10IDx0eXBlPl0gWy13XSBbLS1wYXRoPTxmaWxlPnwtLW5vLWZpbHRlcnNdIFstLXN0ZGluXSBbLS1dICIKKyI8ZmlsZT4uLi4iCittc2dzdHIgIiIKKyJnaXQgaGFzaC1vYmplY3QgWy10IDx0eXA+XSBbLXddIFstLXBhdGg9PGZpbD58LS1uby1maWx0ZXJzXSBbLS1zdGRpbl0gWy0tXSAiCisiPGZpbD4uLi4iCisKKyM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo2MQorbXNnaWQgImdpdCBoYXNoLW9iamVjdCAgLS1zdGRpbi1wYXRocyA8IDxsaXN0LW9mLXBhdGhzPiIKK21zZ3N0ciAiZ2l0IGhhc2gtb2JqZWN0ICAtLXN0ZGluLXBhdGhzIDwgPHPDtmt2w6Rnc2xpc3RhPiIKKworIzogYnVpbHRpbi9oYXNoLW9iamVjdC5jOjcyCittc2dpZCAidHlwZSIKK21zZ3N0ciAidHlwIgorCisjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzIKK21zZ2lkICJvYmplY3QgdHlwZSIKK21zZ3N0ciAib2JqZWt0dHlwIgorCisjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzMKK21zZ2lkICJ3cml0ZSB0aGUgb2JqZWN0IGludG8gdGhlIG9iamVjdCBkYXRhYmFzZSIKK21zZ3N0ciAic2tyaXYgb2JqZWt0ZXQgdGlsbCBvYmpla3RkYXRhYmFzZW4iCisKKyM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3NAorbXNnaWQgInJlYWQgdGhlIG9iamVjdCBmcm9tIHN0ZGluIgorbXNnc3RyICJsw6RzIG9iamVrdGV0IGZyw6VuIHN0YW5kYXJkIGluIgorCisjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzYKK21zZ2lkICJzdG9yZSBmaWxlIGFzIGlzIHdpdGhvdXQgZmlsdGVycyIKK21zZ3N0ciAic3BhcmEgZmlsZW4gc29tIGRlbiDDpHIgdXRhbiBmaWxlciIKKworIzogYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc3Cittc2dpZCAicHJvY2VzcyBmaWxlIGFzIGl0IHdlcmUgZnJvbSB0aGlzIHBhdGgiCittc2dzdHIgImhhbnRlcmEgZmlsZW4gc29tIG9tIGRlbiBrb20gZnLDpW4gc8O2a3bDpGdlbiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDMKK21zZ2lkICJwcmludCBhbGwgYXZhaWxhYmxlIGNvbW1hbmRzIgorbXNnc3RyICJ2aXNhIGFsbGEgdGlsbGfDpG5nbGlnYSBrb21tYW5kb24iCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQ0Cittc2dpZCAicHJpbnQgbGlzdCBvZiB1c2VmdWwgZ3VpZGVzIgorbXNnc3RyICJsaXN0YSBhbnbDpG5kYmFyYSB2w6RnbGVkbmluZ2FyIgorCisjOiBidWlsdGluL2hlbHAuYzo0NQorbXNnaWQgInNob3cgbWFuIHBhZ2UiCittc2dzdHIgInZpc2EgbWFudWFsc2lkYSIKKworIzogYnVpbHRpbi9oZWxwLmM6NDYKK21zZ2lkICJzaG93IG1hbnVhbCBpbiB3ZWIgYnJvd3NlciIKK21zZ3N0ciAidmlzYSBtYW51YWwgaSB3ZWJibMOkc2FyZSIKKworIzogYnVpbHRpbi9oZWxwLmM6NDgKK21zZ2lkICJzaG93IGluZm8gcGFnZSIKK21zZ3N0ciAidmlzYSBpbmZvLXNpZGEiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjU0Cittc2dpZCAiZ2l0IGhlbHAgWy0tYWxsXSBbLS1ndWlkZXNdIFstLW1hbnwtLXdlYnwtLWluZm9dIFtjb21tYW5kXSIKK21zZ3N0ciAiZ2l0IGhlbHAgWy0tYWxsXSBbLS1ndWlkZXNdIFstLW1hbnwtLXdlYnwtLWluZm9dIFtrb21tYW5kb10iCisKKyM6IGJ1aWx0aW4vaGVscC5jOjY2CisjLCBjLWZvcm1hdAorbXNnaWQgInVucmVjb2duaXplZCBoZWxwIGZvcm1hdCAnJXMnIgorbXNnc3RyICJva8OkbnQgaGrDpGxwZm9ybWF0OiAlcyIKKworIzogYnVpbHRpbi9oZWxwLmM6OTQKK21zZ2lkICJGYWlsZWQgdG8gc3RhcnQgZW1hY3NjbGllbnQuIgorbXNnc3RyICJNaXNzbHlja2FkZXMgc3RhcnRhIGVtYWNzY2xpZW50LiIKKworIzogYnVpbHRpbi9oZWxwLmM6MTA3Cittc2dpZCAiRmFpbGVkIHRvIHBhcnNlIGVtYWNzY2xpZW50IHZlcnNpb24uIgorbXNnc3RyICJLdW5kZSBpbnRlIHRvbGthIGVtYWNzY2xpZW50LXZlcnNpb24uIgorCisjOiBidWlsdGluL2hlbHAuYzoxMTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZW1hY3NjbGllbnQgdmVyc2lvbiAnJWQnIHRvbyBvbGQgKDwgMjIpLiIKK21zZ3N0ciAiZW1hY3NjbGllbnQgdmVyc2lvbiBcIiVkXCIgZsO2ciBnYW1tYWwgKDwgMjIpLiIKKworIzogYnVpbHRpbi9oZWxwLmM6MTMzIGJ1aWx0aW4vaGVscC5jOjE2MSBidWlsdGluL2hlbHAuYzoxNzAgYnVpbHRpbi9oZWxwLmM6MTc4CisjLCBjLWZvcm1hdAorbXNnaWQgImZhaWxlZCB0byBleGVjICclcyc6ICVzIgorbXNnc3RyICJleGVjIG1pc3NseWNrYWRlcyBmw7ZyIFwiJXNcIjogJXMiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjIxOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJyVzJzogcGF0aCBmb3IgdW5zdXBwb3J0ZWQgbWFuIHZpZXdlci5cbiIKKyJQbGVhc2UgY29uc2lkZXIgdXNpbmcgJ21hbi48dG9vbD4uY21kJyBpbnN0ZWFkLiIKK21zZ3N0ciAiIgorIlwiJXNcIjogc8O2a3bDpGcgZsO2ciBtYW4tdmlzYXJlIHNvbSBlaiBzdMO2ZHMuXG4iCisiQW52w6RuZCBcIm1hbi48dmVya3R5Zz4uY21kXCIgaXN0w6RsbGV0LiIKKworIzogYnVpbHRpbi9oZWxwLmM6MjMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyInJXMnOiBjbWQgZm9yIHN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgorIlBsZWFzZSBjb25zaWRlciB1c2luZyAnbWFuLjx0b29sPi5wYXRoJyBpbnN0ZWFkLiIKK21zZ3N0ciAiIgorIlwiJXNcIjoga29tbWFuZG8gZsO2ciBtYW4tdmlzYXJlIHNvbSBzdMO2ZHMuXG4iCisiQW52w6RuZCBcIm1hbi48dmVya3R5Zz4ucGF0aFwiIGlzdMOkbGxldC4iCisKKyM6IGJ1aWx0aW4vaGVscC5jOjM1MQorIywgYy1mb3JtYXQKK21zZ2lkICInJXMnOiB1bmtub3duIG1hbiB2aWV3ZXIuIgorbXNnc3RyICJcIiVzXCI6IG9rw6RuZCBtYW4tdmlzYXJlLiIKKworIzogYnVpbHRpbi9oZWxwLmM6MzY4Cittc2dpZCAibm8gbWFuIHZpZXdlciBoYW5kbGVkIHRoZSByZXF1ZXN0IgorbXNnc3RyICJpbmdlbiBtYW4tdmlzYXJlIGhhbnRlcmFkZSBmw7ZyZnLDpWdhbiIKKworIzogYnVpbHRpbi9oZWxwLmM6Mzc2Cittc2dpZCAibm8gaW5mbyB2aWV3ZXIgaGFuZGxlZCB0aGUgcmVxdWVzdCIKK21zZ3N0ciAiaW5nZW4gaW5mby12aXNhcmUgaGFudGVyYWRlIGbDtnJmcsOlZ2FuIgorCisjOiBidWlsdGluL2hlbHAuYzo0MjIKK21zZ2lkICJEZWZpbmluZyBhdHRyaWJ1dGVzIHBlciBwYXRoIgorbXNnc3RyICJEZWZpbmllcmFyIGF0dHJpYnV0IHBlciBzw7ZrdsOkZyIKKworIzogYnVpbHRpbi9oZWxwLmM6NDIzCittc2dpZCAiQSBHaXQgZ2xvc3NhcnkiCittc2dzdHIgIkVuIEdpdC1vcmRsaXN0YSIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI0Cittc2dpZCAiU3BlY2lmaWVzIGludGVudGlvbmFsbHkgdW50cmFja2VkIGZpbGVzIHRvIGlnbm9yZSIKK21zZ3N0ciAiQW5nZSBhdnNpa3RsaWdlbiBvc3DDpXJhZGUgZmlsZXIgYXR0IGlnbm9yZXJhIgorCisjOiBidWlsdGluL2hlbHAuYzo0MjUKK21zZ2lkICJEZWZpbmluZyBzdWJtb2R1bGUgcHJvcGVydGllcyIKK21zZ3N0ciAiQW5nZSBlZ2Vuc2thcGVyIGbDtnIgdW5kZXJtb2R1bGVyIgorCisjOiBidWlsdGluL2hlbHAuYzo0MjYKK21zZ2lkICJTcGVjaWZ5aW5nIHJldmlzaW9ucyBhbmQgcmFuZ2VzIGZvciBHaXQiCittc2dzdHIgIkFuZ2UgdmVyc2lvbmVyIG9jaCBpbnRlcnZhbGwgaSBHaXQiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNworbXNnaWQgIkEgdHV0b3JpYWwgaW50cm9kdWN0aW9uIHRvIEdpdCAoZm9yIHZlcnNpb24gMS41LjEgb3IgbmV3ZXIpIgorbXNnc3RyICJJbnRyb2R1a3Rpb24gdGlsbCBHaXQgKGbDtnIgdmVyc2lvbiAxLjUuMSBvY2ggc2VuYXJlKSIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI4Cittc2dpZCAiQW4gb3ZlcnZpZXcgb2YgcmVjb21tZW5kZWQgd29ya2Zsb3dzIHdpdGggR2l0IgorbXNnc3RyICLDlnZlcnNpa3Qgw7Z2ZXIgcmVrb21tZW5kZXJhZGUgYXJiZXRzZmzDtmRlbiBtZWQgR2l0IgorCisjOiBidWlsdGluL2hlbHAuYzo0NDAKK21zZ2lkICJUaGUgY29tbW9uIEdpdCBndWlkZXMgYXJlOlxuIgorbXNnc3RyICJEZSB2YW5saWdhIEdpdC12w6RnbGVkbmluZ2FybmEgw6RyOlxuIgorCisjOiBidWlsdGluL2hlbHAuYzo0NjIgYnVpbHRpbi9oZWxwLmM6NDc4CisjLCBjLWZvcm1hdAorbXNnaWQgInVzYWdlOiAlcyVzIgorbXNnc3RyICJhbnbDpG5kbmluZzogJXMlcyIKKworIzogYnVpbHRpbi9oZWxwLmM6NDk0CisjLCBjLWZvcm1hdAorbXNnaWQgImBnaXQgJXMnIGlzIGFsaWFzZWQgdG8gYCVzJyIKK21zZ3N0ciAiXCJnaXQgJXNcIiDDpHIgZXR0IGFsaWFzIGbDtnIgXCIlc1wiIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxODIKKyMsIGMtZm9ybWF0Cittc2dpZCAib2JqZWN0IHR5cGUgbWlzbWF0Y2ggYXQgJXMiCittc2dzdHIgIm9iamVrdHR5cCBzdMOkbW1lciBpbnRlIMO2dmVyZW5zIHZpZCAlcyIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjAyCittc2dpZCAib2JqZWN0IG9mIHVuZXhwZWN0ZWQgdHlwZSIKK21zZ3N0ciAib2JqZWt0IGF2IG92w6RudGFkIHR5cCIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjM5CisjLCBjLWZvcm1hdAorbXNnaWQgImNhbm5vdCBmaWxsICVkIGJ5dGUiCittc2dpZF9wbHVyYWwgImNhbm5vdCBmaWxsICVkIGJ5dGVzIgorbXNnc3RyWzBdICJrYW4gaW50ZSBmeWxsYSAlZCBieXRlIgorbXNnc3RyWzFdICJrYW4gaW50ZSBmeWxsYSAlZCBieXRlIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNDkKK21zZ2lkICJlYXJseSBFT0YiCittc2dzdHIgInRpZGlndCBmaWxzbHV0IgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNTAKK21zZ2lkICJyZWFkIGVycm9yIG9uIGlucHV0IgorbXNnc3RyICJpbmRhdGFsw6RzZmVsIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNjIKK21zZ2lkICJ1c2VkIG1vcmUgYnl0ZXMgdGhhbiB3ZXJlIGF2YWlsYWJsZSIKK21zZ3N0ciAiYW52w6RuZGUgZmxlciBieXRlIMOkbiB0aWxsZ8OkbmdsaWd0IgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNjkKK21zZ2lkICJwYWNrIHRvbyBsYXJnZSBmb3IgY3VycmVudCBkZWZpbml0aW9uIG9mIG9mZl90IgorbXNnc3RyICJwYWtldCBmw7ZyIHN0b3J0IGbDtnIgbnV2YXJhbmRlIGRlZmluaXRpb24gYXYgb2ZmX3QiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI4NQorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gY3JlYXRlICclcyciCittc2dzdHIgImt1bmRlIGludGUgc2thcGEgXCIlc1wiIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2Fubm90IG9wZW4gcGFja2ZpbGUgJyVzJyIKK21zZ3N0ciAia2FuIGludGUgw7ZwcG5hIHBha2V0ZmlsZW4gXCIlc1wiIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzozMDQKK21zZ2lkICJwYWNrIHNpZ25hdHVyZSBtaXNtYXRjaCIKK21zZ3N0ciAicGFrZXRzaWduYXR1ciBzdMOkbW1lciBpbnRlIMO2dmVyZW5zIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzozMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAicGFjayB2ZXJzaW9uICU8UFJJdTMyPiB1bnN1cHBvcnRlZCIKK21zZ3N0ciAicGFrZXR2ZXJzaW9uICU8UFJJdTMyPiBzdMO2ZHMgZWoiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMyNAorIywgYy1mb3JtYXQKK21zZ2lkICJwYWNrIGhhcyBiYWQgb2JqZWN0IGF0IG9mZnNldCAlbHU6ICVzIgorbXNnc3RyICJwYWtldGV0IGhhciBmZWxha3RpZ3Qgb2JqZWt0IHZpZCBpbmRleCAlbHU6ICVzIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo0NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW5mbGF0ZSByZXR1cm5lZCAlZCIKK21zZ3N0ciAiaW5mbGF0ZSByZXR1cm5lcmFkZSAlZCIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDk1Cittc2dpZCAib2Zmc2V0IHZhbHVlIG92ZXJmbG93IGZvciBkZWx0YSBiYXNlIG9iamVjdCIKK21zZ3N0ciAiaW5kZXh2w6RyZGVzcGlsbCBmw7ZyIGRlbHRhYmFzb2JqZWt0IgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1MDMKK21zZ2lkICJkZWx0YSBiYXNlIG9mZnNldCBpcyBvdXQgb2YgYm91bmQiCittc2dzdHIgImRlbHRhYmFzaW5kZXggdXRhbmbDtnIgZ3LDpG5zZW4iCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUxMQorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmtub3duIG9iamVjdCB0eXBlICVkIgorbXNnc3RyICJva8OkbmQgb2JqZWt0dHlwICVkIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NDIKK21zZ2lkICJjYW5ub3QgcHJlYWQgcGFjayBmaWxlIgorbXNnc3RyICJrYW4gaW50ZSB1dGbDtnJhIFwicHJlYWRcIiBww6UgcGFrZXRmaWwiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU0NAorIywgYy1mb3JtYXQKK21zZ2lkICJwcmVtYXR1cmUgZW5kIG9mIHBhY2sgZmlsZSwgJWx1IGJ5dGUgbWlzc2luZyIKK21zZ2lkX3BsdXJhbCAicHJlbWF0dXJlIGVuZCBvZiBwYWNrIGZpbGUsICVsdSBieXRlcyBtaXNzaW5nIgorbXNnc3RyWzBdICJmw7ZyIHRpZGlndCBzbHV0IHDDpSBwYWtldGZpbGVuLCAlbHUgYnl0ZSBzYWtuYXMiCittc2dzdHJbMV0gImbDtnIgdGlkaWd0IHNsdXQgcMOlIHBha2V0ZmlsZW4sICVsdSBieXRlIHNha25hcyIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTcwCittc2dpZCAic2VyaW91cyBpbmZsYXRlIGluY29uc2lzdGVuY3kiCittc2dzdHIgImFsbHZhcmxpZyBpbmZsYXRlLWlua29uc2VrdmVucyIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjYxIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2NyBidWlsdGluL2luZGV4LXBhY2suYzo2OTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjcyNCBidWlsdGluL2luZGV4LXBhY2suYzo3MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiU0hBMSBDT0xMSVNJT04gRk9VTkQgV0lUSCAlcyAhIgorbXNnc3RyICJTSEExLUtPTExJU0lPTiBVUFBUw4RDS1QgVklEICVzICEiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2NCBidWlsdGluL3BhY2stb2JqZWN0cy5jOjE3MAorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHJlYWQgJXMiCittc2dzdHIgImt1bmRlIGludGUgbMOkc2EgJXMiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjczMAorIywgYy1mb3JtYXQKK21zZ2lkICJjYW5ub3QgcmVhZCBleGlzdGluZyBvYmplY3QgJXMiCittc2dzdHIgImthbiBpbnRlIGzDpHNhIGJlZmludGxpZ3Qgb2JqZWt0ICVzIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBibG9iIG9iamVjdCAlcyIKK21zZ3N0ciAib2dpbHRpZ3QgYmxvYi1vYmpla3QgJXMiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkICVzIgorbXNnc3RyICJvZ2lsdGlndCAlcyIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzYxCittc2dpZCAiRXJyb3IgaW4gb2JqZWN0IgorbXNnc3RyICJGZWwgaSBvYmpla3QiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc2MworIywgYy1mb3JtYXQKK21zZ2lkICJOb3QgYWxsIGNoaWxkIG9iamVjdHMgb2YgJXMgYXJlIHJlYWNoYWJsZSIKK21zZ3N0ciAiSW50ZSBhbGxhIGJhcm5vYmpla3QgZsO2ciAlcyBrYW4gbsOlcyIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODMzIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg2MworbXNnaWQgImZhaWxlZCB0byBhcHBseSBkZWx0YSIKK21zZ3N0ciAibWlzc2x5Y2thZGVzIHRpbGzDpG1wYSBkZWx0YSIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAwNAorbXNnaWQgIlJlY2VpdmluZyBvYmplY3RzIgorbXNnc3RyICJUYXIgZW1vdCBvYmpla3QiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMDQKK21zZ2lkICJJbmRleGluZyBvYmplY3RzIgorbXNnc3RyICJTa2FwYXIgaW5kZXggZsO2ciBvYmpla3QiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzAKK21zZ2lkICJwYWNrIGlzIGNvcnJ1cHRlZCAoU0hBMSBtaXNtYXRjaCkiCittc2dzdHIgInBha2V0ZXQgw6RyIHRyYXNpZ3QgKFNIQTEgc3TDpG1tZXIgaW50ZSkiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzUKK21zZ2lkICJjYW5ub3QgZnN0YXQgcGFja2ZpbGUiCittc2dzdHIgImthbiBpbnRlIHV0ZsO2cmEgXCJmc3RhdFwiIHDDpSBwYWtldGZpbCIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzOAorbXNnaWQgInBhY2sgaGFzIGp1bmsgYXQgdGhlIGVuZCIKK21zZ3N0ciAicGFrZXQgaGFyIHNrcsOkcCBpIHNsdXRldCIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA0OQorbXNnaWQgImNvbmZ1c2lvbiBiZXlvbmQgaW5zYW5pdHkgaW4gcGFyc2VfcGFja19vYmplY3RzKCkiCittc2dzdHIgImbDtnJ2aXJyYWQgYm9ydG9tIHZhbnZldHQgaSBwYXJzZV9wYWNrX29iamVjdHMoKSIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA3MgorbXNnaWQgIlJlc29sdmluZyBkZWx0YXMiCittc2dzdHIgIkFuYWx5c2VyYXIgZGVsdGEiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIGNyZWF0ZSB0aHJlYWQ6ICVzIgorbXNnc3RyICJrdW5kZSBpbnRlIHNrYXBhIHRyw6VkOiAlcyIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEyNAorbXNnaWQgImNvbmZ1c2lvbiBiZXlvbmQgaW5zYW5pdHkiCittc2dzdHIgImbDtnJ2aXJyYWQgYm9ydG9tIHZhbnZldHQiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiY29tcGxldGVkIHdpdGggJWQgbG9jYWwgb2JqZWN0cyIKK21zZ3N0ciAic2x1dGbDtnJkZXMgbWVkICVkIGxva2FsYSBvYmpla3QiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5leHBlY3RlZCB0YWlsIGNoZWNrc3VtIGZvciAlcyAoZGlzayBjb3JydXB0aW9uPykiCittc2dzdHIgIk92w6RudGFkIHN2YW5zY2hlY2tzdW1tYSBmw7ZyICVzICh0cmFzaWcgZGlzaz8pIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTQ2CisjLCBjLWZvcm1hdAorbXNnaWQgInBhY2sgaGFzICVkIHVucmVzb2x2ZWQgZGVsdGEiCittc2dpZF9wbHVyYWwgInBhY2sgaGFzICVkIHVucmVzb2x2ZWQgZGVsdGFzIgorbXNnc3RyWzBdICJwYWtldGV0IGhhciAlZCBvYW5hbHlzZXJhdCBkZWx0YSIKK21zZ3N0clsxXSAicGFrZXRldCBoYXIgJWQgb2FuYWx5c2VyYWRlIGRlbHRhIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTcxCisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBkZWZsYXRlIGFwcGVuZGVkIG9iamVjdCAoJWQpIgorbXNnc3RyICJrdW5kZSBpbnRlIHV0ZsO2cmEgXCJkZWZsYXRlXCIgcMOlIHRpbGxhZ3Qgb2JqZWt0ICglZCkiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNTAKKyMsIGMtZm9ybWF0Cittc2dpZCAibG9jYWwgb2JqZWN0ICVzIGlzIGNvcnJ1cHQiCittc2dzdHIgImxva2FsdCBvYmpla3QgJXMgw6RyIHRyYXNpZ3QiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNzQKK21zZ2lkICJlcnJvciB3aGlsZSBjbG9zaW5nIHBhY2sgZmlsZSIKK21zZ3N0ciAiZmVsIHZpZCBzdMOkbmduaW5nIGF2IHBha2V0ZmlsIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjg3CisjLCBjLWZvcm1hdAorbXNnaWQgImNhbm5vdCB3cml0ZSBrZWVwIGZpbGUgJyVzJyIKK21zZ3N0ciAia2FuIGludGUgdGEgc2tyaXZhIFwia2VlcFwiLWZpbCBcIiVzXCIiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2Fubm90IGNsb3NlIHdyaXR0ZW4ga2VlcCBmaWxlICclcyciCittc2dzdHIgImFrbiBpbnRlIHN0w6RuZ2Egc2tyaXZlbiBcImtlZXBcIi1maWwgXCIlc1wiIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzA4Cittc2dpZCAiY2Fubm90IHN0b3JlIHBhY2sgZmlsZSIKK21zZ3N0ciAia2FuIGludGUgc3BhcmEgcGFrZXRmaWwiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzMTkKK21zZ2lkICJjYW5ub3Qgc3RvcmUgaW5kZXggZmlsZSIKK21zZ3N0ciAia2FuIGludGUgc3BhcmEgaW5kZXhmaWwiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHBhY2suaW5kZXh2ZXJzaW9uPSU8UFJJdTMyPiIKK21zZ3N0ciAiZmVsYWt0aWcgcGFjay5pbmRleHZlcnNpb249JTxQUkl1MzI+IgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzU4CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgbnVtYmVyIG9mIHRocmVhZHMgc3BlY2lmaWVkICglZCkiCittc2dzdHIgImZlbGFrdGlndCBhbnRhbCB0csOlZGFyIGFuZ2l2ZXQgKCVkKSIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM2MiBidWlsdGluL2luZGV4LXBhY2suYzoxNTM1CisjLCBjLWZvcm1hdAorbXNnaWQgIm5vIHRocmVhZHMgc3VwcG9ydCwgaWdub3JpbmcgJXMiCittc2dzdHIgInRyw6Vkc3TDtmQgc2FrbmFzLCBpZ25vcmVyYXIgJXMiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IG9wZW4gZXhpc3RpbmcgcGFjayBmaWxlICclcyciCittc2dzdHIgIkthbiBpbnRlIMO2cHBuYSBiZWZpbnRsaWcgcGFrZXRmaWwgXCIlc1wiIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDIyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBvcGVuIGV4aXN0aW5nIHBhY2sgaWR4IGZpbGUgZm9yICclcyciCittc2dzdHIgIkthbiBpbnRlIMO2cHBuYSBiZWZpbnRsaWd0IHBha2V0LWlkeC1maWwgZsO2ciBcIiVzXCIiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAibm9uIGRlbHRhOiAlZCBvYmplY3QiCittc2dpZF9wbHVyYWwgIm5vbiBkZWx0YTogJWQgb2JqZWN0cyIKK21zZ3N0clswXSAiaWNrZS1kZWx0YTogJWQgb2JqZWt0IgorbXNnc3RyWzFdICJpY2tlLWRlbHRhOiAlZCBvYmpla3QiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2hhaW4gbGVuZ3RoID0gJWQ6ICVsdSBvYmplY3QiCittc2dpZF9wbHVyYWwgImNoYWluIGxlbmd0aCA9ICVkOiAlbHUgb2JqZWN0cyIKK21zZ3N0clswXSAia2VkamVsw6RuZ2QgPSAlZDogJWx1IG9iamVrdCIKK21zZ3N0clsxXSAia2VkamVsw6RuZ2QgPSAlZDogJWx1IG9iamVrdCIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTUwMworbXNnaWQgIkNhbm5vdCBjb21lIGJhY2sgdG8gY3dkIgorbXNnc3RyICJLYW4gaW50ZSBnw6UgdGlsbGJha2EgdGlsbCBhcmJldHNrYXRhbG9nZW4gKGN3ZCkiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NDcgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU1MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU2MiBidWlsdGluL2luZGV4LXBhY2suYzoxNTY2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCAlcyIKK21zZ3N0ciAiZmVsYWt0aWcgJXMiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1ODAKK21zZ2lkICItLWZpeC10aGluIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgLS1zdGRpbiIKK21zZ3N0ciAiLS1maXgtdGhpbiBrYW4gaW50ZSBhbnbDpG5kYXMgbWVkIC0tc3RkaW4iCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1ODQgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU5NAorIywgYy1mb3JtYXQKK21zZ2lkICJwYWNrZmlsZSBuYW1lICclcycgZG9lcyBub3QgZW5kIHdpdGggJy5wYWNrJyIKK21zZ3N0ciAicGFrZXRmaWxuYW1uZXQgXCIlc1wiIHNsdXRhciBpbnRlIG1lZCBcIi5wYWNrXCIiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE2MDMKK21zZ2lkICItLXZlcmlmeSB3aXRoIG5vIHBhY2tmaWxlIG5hbWUgZ2l2ZW4iCittc2dzdHIgIi0tdmVyaWZ5IGFuZ2F2cyB1dGFuIHBha2V0ZmlsbmFtbiIKKwogIzogYnVpbHRpbi9pbml0LWRiLmM6MzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG1ha2UgJXMgd3JpdGFibGUgYnkgZ3JvdXAiCkBAIC0yMTM1LDIyICs1NjYzLDIyIEBACiBtc2dpZCAiaW5zYW5lIGdpdCBkaXJlY3RvcnkgJXMiCiBtc2dzdHIgInRva2lnIGdpdC1rYXRhbG9nICVzIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzozMjIgYnVpbHRpbi9pbml0LWRiLmM6MzI1CisjOiBidWlsdGluL2luaXQtZGIuYzozMjMgYnVpbHRpbi9pbml0LWRiLmM6MzI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGFscmVhZHkgZXhpc3RzIgogbXNnc3RyICIlcyBmaW5ucyByZWRhbiIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6MzU0CisjOiBidWlsdGluL2luaXQtZGIuYzozNTUKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGhhbmRsZSBmaWxlIHR5cGUgJWQiCiBtc2dzdHIgImthbiBpbnRlIGhhbnRlcmEgZmlsdHlwICVkIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzozNTcKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjM1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gbW92ZSAlcyB0byAlcyIKIG1zZ3N0ciAia2FuIGludGUgZmx5dHRhICVzIHRpbGwgJXMiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjM2MgorIzogYnVpbHRpbi9pbml0LWRiLmM6MzYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBjcmVhdGUgZ2l0IGxpbmsgJXMiCiBtc2dzdHIgIkt1bmRlIGludGUgc2thcGEgZ2l0bMOkbmsgJXMiCkBAIC0yMTYwLDM4ICs1Njg4LDU4IEBACiAjLiAqIGV4aXN0aW5nIiBvciAiSW5pdGlhbGl6ZWQgZW1wdHkiLCB0aGUgc2Vjb25kICIgc2hhcmVkIiBvcgogIy4gKiAiIiwgYW5kIHRoZSBsYXN0ICclcyVzJyBpcyB0aGUgdmVyYmF0aW0gZGlyZWN0b3J5IG5hbWUuCiAjLgotIzogYnVpbHRpbi9pbml0LWRiLmM6NDE5CisjOiBidWlsdGluL2luaXQtZGIuYzo0MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMlcyBHaXQgcmVwb3NpdG9yeSBpbiAlcyVzXG4iCiBtc2dzdHIgIiVzJXMgR2l0LWFya2l2IGkgJXMlc1xuIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo0MjAKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQyMQogbXNnaWQgIlJlaW5pdGlhbGl6ZWQgZXhpc3RpbmciCiBtc2dzdHIgIk9taW5pdGllcmFkZSBiZWZpbnRsaWd0IgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo0MjAKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQyMQogbXNnaWQgIkluaXRpYWxpemVkIGVtcHR5IgogbXNnc3RyICJJbml0aWVyYWRlIHRvbXQiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQyMQorIzogYnVpbHRpbi9pbml0LWRiLmM6NDIyCiBtc2dpZCAiIHNoYXJlZCIKIG1zZ3N0ciAiIGRlbGF0IgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo0NDAKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQ0MQogbXNnaWQgImNhbm5vdCB0ZWxsIGN3ZCIKIG1zZ3N0ciAia2FuIGludGUgbMOkc2EgYWt0dWVsbCBrYXRhbG9nIChjd2QpIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo1MjEgYnVpbHRpbi9pbml0LWRiLmM6NTI4CisjOiBidWlsdGluL2luaXQtZGIuYzo0NjcKK21zZ2lkICIiCisiZ2l0IGluaXQgWy1xIHwgLS1xdWlldF0gWy0tYmFyZV0gWy0tdGVtcGxhdGU9PHRlbXBsYXRlLWRpcmVjdG9yeT5dIFstLXNoYXJlZCIKKyJbPTxwZXJtaXNzaW9ucz5dXSBbZGlyZWN0b3J5XSIKK21zZ3N0ciAiIgorImdpdCBpbml0IFstcSB8IC0tcXVpZXRdIFstLWJhcmVdIFstLXRlbXBsYXRlPTxtYWxsa2F0YWxvZz5dIFstLXNoYXJlZCIKKyJbPTxiZWjDtnJpZ2hldGVyPl1dIFtrYXRhbG9nXSIKKworIzogYnVpbHRpbi9pbml0LWRiLmM6NDkwCittc2dpZCAicGVybWlzc2lvbnMiCittc2dzdHIgImJlaMO2cmlnaGV0ZXIiCisKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5MQorbXNnaWQgInNwZWNpZnkgdGhhdCB0aGUgZ2l0IHJlcG9zaXRvcnkgaXMgdG8gYmUgc2hhcmVkIGFtb25nc3Qgc2V2ZXJhbCB1c2VycyIKK21zZ3N0ciAiYW5nZSBhdHQgZ2l0LWFya2l2ZXQgc2thbGwgZGVsYXMgYmxhbmQgZmxlcmEgYW52w6RuZGFyZSIKKworIzogYnVpbHRpbi9pbml0LWRiLmM6NDkzIGJ1aWx0aW4vcHJ1bmUtcGFja2VkLmM6NzcKK21zZ2lkICJiZSBxdWlldCIKK21zZ3N0ciAidmFyIHR5c3QiCisKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjUyMiBidWlsdGluL2luaXQtZGIuYzo1MjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG1rZGlyICVzIgogbXNnc3RyICJrYW4gaW50ZSBza2FwYSBrYXRhbG9nZW4gKG1rZGlyKSAlcyIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6NTMyCisjOiBidWlsdGluL2luaXQtZGIuYzo1MzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IGNoZGlyIHRvICVzIgogbXNnc3RyICJrYW4gaW50ZSBieXRhIGthdGFsb2cgKGNoZGlyKSB0aWxsICVzIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo1NTQKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjU1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJXMgKG9yIC0td29yay10cmVlPTxkaXJlY3Rvcnk+KSBub3QgYWxsb3dlZCB3aXRob3V0IHNwZWNpZnlpbmcgJXMgKG9yIC0tZ2l0LSIKQEAgLTIyMDAsMTIyICs1NzQ4LDQwMCBAQAogIiVzIChlbGxlciAtLXdvcmstdHJlZT08a2F0YWxvZz4pIGludGUgdGlsbMOldGV0IHV0YW4gYXR0IGFuZ2UgJXMgKGVsbGVyIC0tZ2l0LSIKICJkaXI9PGthdGFsb2c+KSIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6NTc4CisjOiBidWlsdGluL2luaXQtZGIuYzo1NzkKIG1zZ2lkICJDYW5ub3QgYWNjZXNzIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkiCiBtc2dzdHIgIkthbiBpbnRlIGtvbW1hIMOldCBha3R1ZWxsIGFyYmV0c2thdGFsb2ciCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjU4NQorIzogYnVpbHRpbi9pbml0LWRiLmM6NTg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBhY2Nlc3Mgd29yayB0cmVlICclcyciCiBtc2dzdHIgIkthbiBpbnRlIGtvbW1hIMOldCBhcmJldHNrYXRhbG9nZW4gXCIlc1wiIgogCi0jOiBidWlsdGluL2xvZy5jOjE4NworIzogYnVpbHRpbi9sb2cuYzo0MAorbXNnaWQgImdpdCBsb2cgWzxvcHRpb25zPl0gWzxyZXZpc2lvbiByYW5nZT5dIFtbLS1dIDxwYXRoPi4uLl1cbiIKK21zZ3N0ciAiZ2l0IGxvZyBbPGZsYWdnb3I+XSBbPHZlcnNpb25zaW50ZXJ2YWxsPl0gW1stLV0gPHPDtmt2w6RnPi4uLl1cbiIKKworIzogYnVpbHRpbi9sb2cuYzo0MQorbXNnaWQgIiAgIG9yOiBnaXQgc2hvdyBbb3B0aW9uc10gPG9iamVjdD4uLi4iCittc2dzdHIgIiAgICAgZWxsZXI6IGdpdCBzaG93IFtmbGFnZ29yXSA8b2JqZWt0Pi4uLiIKKworIzogYnVpbHRpbi9sb2cuYzoxMDMKK21zZ2lkICJzdXBwcmVzcyBkaWZmIG91dHB1dCIKK21zZ3N0ciAidW5kZXJ0cnljayBkaWZmLXV0ZGF0YSIKKworIzogYnVpbHRpbi9sb2cuYzoxMDQKK21zZ2lkICJzaG93IHNvdXJjZSIKK21zZ3N0ciAidmlzYSBrw6RsbGtvZCIKKworIzogYnVpbHRpbi9sb2cuYzoxMDUKK21zZ2lkICJVc2UgbWFpbCBtYXAgZmlsZSIKK21zZ3N0ciAiQW52w6RuZCBlLXBvc3RtYXBwbmluZ3NmaWwiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTA2Cittc2dpZCAiZGVjb3JhdGUgb3B0aW9ucyIKK21zZ3N0ciAiZGVrb3JlcmluZ3NmbGFnZ29yIgorCisjOiBidWlsdGluL2xvZy5jOjE5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJGaW5hbCBvdXRwdXQ6ICVkICVzXG4iCiBtc2dzdHIgIlNsdXR1dGRhdGE6ICVkICVzXG4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6Mzk1IGJ1aWx0aW4vbG9nLmM6NDgzCisjOiBidWlsdGluL2xvZy5jOjQyMiBidWlsdGluL2xvZy5jOjUxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCBvYmplY3QgJXMiCiBtc2dzdHIgIkt1bmRlIGludGUgbMOkc2Egb2JqZWt0ZXQgJXMiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NTA3CisjOiBidWlsdGluL2xvZy5jOjUzOAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIHR5cGU6ICVkIgogbXNnc3RyICJPa8OkbmQgdHlwOiAlZCIKIAotIzogYnVpbHRpbi9sb2cuYzo1OTYKKyM6IGJ1aWx0aW4vbG9nLmM6NjM4CiBtc2dpZCAiZm9ybWF0LmhlYWRlcnMgd2l0aG91dCB2YWx1ZSIKIG1zZ3N0ciAiZm9ybWF0LmhlYWRlcnMgdXRhbiB2w6RyZGUiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NjY5CisjOiBidWlsdGluL2xvZy5jOjcyMAogbXNnaWQgIm5hbWUgb2Ygb3V0cHV0IGRpcmVjdG9yeSBpcyB0b28gbG9uZyIKIG1zZ3N0ciAibmFtbmV0IHDDpSB1dGRhdGFrYXRhbG9nZW4gw6RyIGbDtnIgbMOlbmd0IgogCi0jOiBidWlsdGluL2xvZy5jOjY4MAorIzogYnVpbHRpbi9sb2cuYzo3MzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IG9wZW4gcGF0Y2ggZmlsZSAlcyIKIG1zZ3N0ciAiS2FuIGludGUgw7ZwcG5hIHBhdGNoZmlsZW4gJXMiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6Njk0CisjOiBidWlsdGluL2xvZy5jOjc1MAogbXNnaWQgIk5lZWQgZXhhY3RseSBvbmUgcmFuZ2UuIgogbXNnc3RyICJCZWjDtnZlciBwcmVjaXMgZXR0IGludGVydmFsbC4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NzAyCisjOiBidWlsdGluL2xvZy5jOjc1OAogbXNnaWQgIk5vdCBhIHJhbmdlLiIKIG1zZ3N0ciAiSW50ZSBldHQgaW50ZXJ2YWxsLiIKIAotIzogYnVpbHRpbi9sb2cuYzo3MzkKLW1zZ2lkICJDb3VsZCBub3QgZXh0cmFjdCBlbWFpbCBmcm9tIGNvbW1pdHRlciBpZGVudGl0eS4iCi1tc2dzdHIgIkt1bmRlIGludGUgZXh0cmFoZXJhIGUtcG9zdGFkcmVzcyBmcsOlbiBpbmNoZWNrYXJlbnMgaWRlbnRpdGV0LiIKLQotIzogYnVpbHRpbi9sb2cuYzo3ODUKKyM6IGJ1aWx0aW4vbG9nLmM6ODYwCiBtc2dpZCAiQ292ZXIgbGV0dGVyIG5lZWRzIGVtYWlsIGZvcm1hdCIKIG1zZ3N0ciAiT21zbGFnc2JyZXZldCBiZWjDtnZlciBlLXBvc3Rmb3JtYXQiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6ODc5CisjOiBidWlsdGluL2xvZy5jOjkzNgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnNhbmUgaW4tcmVwbHktdG86ICVzIgogbXNnc3RyICJ0b2tpZ3QgaW4tcmVwbHktdG86ICVzIgogCi0jOiBidWlsdGluL2xvZy5jOjk1MgorIzogYnVpbHRpbi9sb2cuYzo5NjQKK21zZ2lkICJnaXQgZm9ybWF0LXBhdGNoIFtvcHRpb25zXSBbPHNpbmNlPiB8IDxyZXZpc2lvbiByYW5nZT5dIgorbXNnc3RyICJnaXQgZm9ybWF0LXBhdGNoIFtmbGFnZ29yXSBbPHNlZGFuPiB8IDxyZXZpc2lvbnNpbnRlcnZhbGw+XSIKKworIzogYnVpbHRpbi9sb2cuYzoxMDA5CiBtc2dpZCAiVHdvIG91dHB1dCBkaXJlY3Rvcmllcz8iCiBtc2dzdHIgIlR2w6UgdXRkYXRha2F0YWxvZ2VyPyIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTczCi0jLCBjLWZvcm1hdAotbXNnaWQgImJvZ3VzIGNvbW1pdHRlciBpbmZvICVzIgotbXNnc3RyICJmZWxha3RpZyBpbmNoZWNrYXJpbmZvcm1hdGlvbiAlcyIKKyM6IGJ1aWx0aW4vbG9nLmM6MTEwOAorbXNnaWQgInVzZSBbUEFUQ0ggbi9tXSBldmVuIHdpdGggYSBzaW5nbGUgcGF0Y2giCittc2dzdHIgImFudsOkbmQgW1BBVENIIG4vbV0gw6R2ZW4gZsO2ciBlbiBlbnNhbSBwYXRjaCIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjE4CisjOiBidWlsdGluL2xvZy5jOjExMTEKK21zZ2lkICJ1c2UgW1BBVENIXSBldmVuIHdpdGggbXVsdGlwbGUgcGF0Y2hlcyIKK21zZ3N0ciAiYW52w6RuZCBbUEFUQ0hdIMOkdmVuIGbDtnIgZmxlcmEgcGF0Y2hhciIKKworIzogYnVpbHRpbi9sb2cuYzoxMTE1Cittc2dpZCAicHJpbnQgcGF0Y2hlcyB0byBzdGFuZGFyZCBvdXQiCittc2dzdHIgInNrcml2IHBhdGNoYXJuYSBww6Ugc3RuYWRhcmQgdXQiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTExNworbXNnaWQgImdlbmVyYXRlIGEgY292ZXIgbGV0dGVyIgorbXNnc3RyICJnZW5lcmVyYSBldHQgZsO2bGplYnJldiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTE5Cittc2dpZCAidXNlIHNpbXBsZSBudW1iZXIgc2VxdWVuY2UgZm9yIG91dHB1dCBmaWxlIG5hbWVzIgorbXNnc3RyICJhbnbDpG5kIGVua2VsIG51bW1lcnNla3ZlbnMgZsO2ciB1dGRhdGFmaWxuYW1uIgorCisjOiBidWlsdGluL2xvZy5jOjExMjAKK21zZ2lkICJzZngiCittc2dzdHIgInNmeCIKKworIzogYnVpbHRpbi9sb2cuYzoxMTIxCittc2dpZCAidXNlIDxzZng+IGluc3RlYWQgb2YgJy5wYXRjaCciCittc2dzdHIgImFudsOkbmQgPHNmeD4gaXN0w6RsbGV0IGbDtnIgXCIucGF0Y2hcIiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTIzCittc2dpZCAic3RhcnQgbnVtYmVyaW5nIHBhdGNoZXMgYXQgPG4+IGluc3RlYWQgb2YgMSIKK21zZ3N0ciAiYsO2cmphIG51bXJlcmEgcGF0Y2hhciBww6UgPG4+IGlzdMOkbGxldCBmw7ZyIDEiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyNQorbXNnaWQgIm1hcmsgdGhlIHNlcmllcyBhcyBOdGggcmUtcm9sbCIKK21zZ3N0ciAibWFya2VyYSBzZXJpZW4gc29tIE46dGUgZsO2cnPDtmsiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyNworbXNnaWQgIlVzZSBbPHByZWZpeD5dIGluc3RlYWQgb2YgW1BBVENIXSIKK21zZ3N0ciAiQW52w6RuZCBbPHByZWZpeD5dIGlzdMOkbGxldCBmw7ZyIFtQQVRDSF0iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzMAorbXNnaWQgInN0b3JlIHJlc3VsdGluZyBmaWxlcyBpbiA8ZGlyPiIKK21zZ3N0ciAic3BhcmEgZmlsZXJuYSBpIDxrYXRhbG9nPiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTMzCittc2dpZCAiZG9uJ3Qgc3RyaXAvYWRkIFtQQVRDSF0iCittc2dzdHIgInRhIGludGUgYm9ydCBlbGxlciBsw6RnZyB0aWxsIFtQQVRDSF0iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzNgorbXNnaWQgImRvbid0IG91dHB1dCBiaW5hcnkgZGlmZnMiCittc2dzdHIgInNrcml2IGludGUgYmluw6RyYSBkaWZmYXIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzOAorbXNnaWQgImRvbid0IGluY2x1ZGUgYSBwYXRjaCBtYXRjaGluZyBhIGNvbW1pdCB1cHN0cmVhbSIKK21zZ3N0ciAidGEgaW50ZSBtZWQgcGF0Y2hhciBzb20gbW90c3ZhcmFyIGVuIHVwcHN0csO2bXNpbmNoZWNrbmluZyIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQwCittc2dpZCAic2hvdyBwYXRjaCBmb3JtYXQgaW5zdGVhZCBvZiBkZWZhdWx0IChwYXRjaCArIHN0YXQpIgorbXNnc3RyICJ2aXNhIHBhdGNoZm9ybWF0IGlzdMOkbGxldCBmw7ZyIHN0YW5kYXJkIChwYXRjaCArIHN0YXQpIgorCisjOiBidWlsdGluL2xvZy5jOjExNDIKK21zZ2lkICJNZXNzYWdpbmciCittc2dzdHIgIkUtcG9zdCIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQzCittc2dpZCAiaGVhZGVyIgorbXNnc3RyICJodXZ1ZCIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQ0Cittc2dpZCAiYWRkIGVtYWlsIGhlYWRlciIKK21zZ3N0ciAibMOkZ2cgdGlsbCBlLXBvc3RodXZ1ZCIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQ1IGJ1aWx0aW4vbG9nLmM6MTE0NworbXNnaWQgImVtYWlsIgorbXNnc3RyICJlcG9zdCIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQ1Cittc2dpZCAiYWRkIFRvOiBoZWFkZXIiCittc2dzdHIgIkzDpGdnIHRpbGwgbW90dGFnYXJodXZ1ZCAoXCJUbzpcIikiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0NworbXNnaWQgImFkZCBDYzogaGVhZGVyIgorbXNnc3RyICJMw6RnZyB0aWxsIGtvcGllaHV2dWQgKFwiQ2M6XCIpIgorCisjOiBidWlsdGluL2xvZy5jOjExNDkKK21zZ2lkICJtZXNzYWdlLWlkIgorbXNnc3RyICJtZWRkZWxhbmRlLWlkIgorCisjOiBidWlsdGluL2xvZy5jOjExNTAKK21zZ2lkICJtYWtlIGZpcnN0IG1haWwgYSByZXBseSB0byA8bWVzc2FnZS1pZD4iCittc2dzdHIgIkfDtnIgZGV0IGbDtnJzdGEgYnJldmV0IGV0dCBzdmFyIHRpbGwgPG1lZGRlbGFuZGUtaWQ+IgorCisjOiBidWlsdGluL2xvZy5jOjExNTEgYnVpbHRpbi9sb2cuYzoxMTU0Cittc2dpZCAiYm91bmRhcnkiCittc2dzdHIgImdyw6RucyIKKworIzogYnVpbHRpbi9sb2cuYzoxMTUyCittc2dpZCAiYXR0YWNoIHRoZSBwYXRjaCIKK21zZ3N0ciAiYmlmb2dhIHBhdGNoZW4iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE1NQorbXNnaWQgImlubGluZSB0aGUgcGF0Y2giCittc2dzdHIgImfDtnIgcGF0Y2hlbiBldHQgaW5saW5lLW9iamVrdCIKKworIzogYnVpbHRpbi9sb2cuYzoxMTU5Cittc2dpZCAiZW5hYmxlIG1lc3NhZ2UgdGhyZWFkaW5nLCBzdHlsZXM6IHNoYWxsb3csIGRlZXAiCittc2dzdHIgImFrdGl2ZXJhIGJyZXZ0csOlZG5pbmcsIHR5cGVyOiBzaGFsbG93LCBkZWVwIgorCisjOiBidWlsdGluL2xvZy5jOjExNjEKK21zZ2lkICJzaWduYXR1cmUiCittc2dzdHIgInNpZ25hdHVyIgorCisjOiBidWlsdGluL2xvZy5jOjExNjIKK21zZ2lkICJhZGQgYSBzaWduYXR1cmUiCittc2dzdHIgImzDpGdnIHRpbGwgc2lnbmF0dXIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE2NAorbXNnaWQgImRvbid0IHByaW50IHRoZSBwYXRjaCBmaWxlbmFtZXMiCittc2dzdHIgInZpc2EgaW50ZSBmaWxuYW1uIGbDtnIgcGF0Y2hhciIKKworIzogYnVpbHRpbi9sb2cuYzoxMjQ4CiBtc2dpZCAiLW4gYW5kIC1rIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIgogbXNnc3RyICItbiBvY2ggLWsga2FuIGludGUgYW52w6RuZGFzIHNhbXRpZGlndC4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIyMAorIzogYnVpbHRpbi9sb2cuYzoxMjUwCiBtc2dpZCAiLS1zdWJqZWN0LXByZWZpeCBhbmQgLWsgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4iCiBtc2dzdHIgIi0tc3ViamVjdC1wcmVmaXggb2NoIC1rIGthbiBpbnRlIGFudsOkbmRhcyBzYW10aWRpZ3QuIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMjUgYnVpbHRpbi9zaG9ydGxvZy5jOjI4NAotIywgYy1mb3JtYXQKLW1zZ2lkICJ1bnJlY29nbml6ZWQgYXJndW1lbnQ6ICVzIgotbXNnc3RyICJva8OkbnQgYXJndW1lbnQ6ICVzIgotCi0jOiBidWlsdGluL2xvZy5jOjEyMjgKKyM6IGJ1aWx0aW4vbG9nLmM6MTI1OAogbXNnaWQgIi0tbmFtZS1vbmx5IGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgImthbiBpbnRlIGFudsOkbmRhIC0tbmFtZS1vbmx5IgogCi0jOiBidWlsdGluL2xvZy5jOjEyMzAKKyM6IGJ1aWx0aW4vbG9nLmM6MTI2MAogbXNnaWQgIi0tbmFtZS1zdGF0dXMgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAia2FuIGludGUgYW52w6RuZGEgLS1uYW1lLXN0YXR1cyIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjMyCisjOiBidWlsdGluL2xvZy5jOjEyNjIKIG1zZ2lkICItLWNoZWNrIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgImthbiBpbnRlIGFudsOkbmRhIC0tY2hlY2siCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTI1NQorIzogYnVpbHRpbi9sb2cuYzoxMjg1CiBtc2dpZCAic3RhbmRhcmQgb3V0cHV0LCBvciBkaXJlY3RvcnksIHdoaWNoIG9uZT8iCiBtc2dzdHIgInN0YW5kYXJkIHV0LCBlbGxlciBrYXRhbG9nLCB2aWxrZW4gc2thbGwgZGV0IHZhcmE/IgogCi0jOiBidWlsdGluL2xvZy5jOjEyNTcKKyM6IGJ1aWx0aW4vbG9nLmM6MTI4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSAnJXMnIgogbXNnc3RyICJLdW5kZSBpbnRlIHNrYXBhIGthdGFsb2dlbiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTQxMAorIzogYnVpbHRpbi9sb2cuYzoxNDM1CiBtc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSBvdXRwdXQgZmlsZXMiCiBtc2dzdHIgIk1pc3NseWNrYWRlcyBza2FwYSB1dGRhdGFmaWxlciIKIAotIzogYnVpbHRpbi9sb2cuYzoxNTE0CisjOiBidWlsdGluL2xvZy5jOjE0ODQKK21zZ2lkICJnaXQgY2hlcnJ5IFstdl0gWzx1cHN0cmVhbT4gWzxoZWFkPiBbPGxpbWl0Pl1dXSIKK21zZ3N0ciAiZ2l0IGNoZXJyeSBbLXZdIFs8dXBwc3Ryw7ZtPiBbPGh1dnVkPiBbPGdyw6Rucz5dXV0iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTUzOQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ291bGQgbm90IGZpbmQgYSB0cmFja2VkIHJlbW90ZSBicmFuY2gsIHBsZWFzZSBzcGVjaWZ5IDx1cHN0cmVhbT4gbWFudWFsbHkuXG4iCiBtc2dzdHIgIkt1bmRlIGludGUgaGl0dGEgZW4gc3DDpXJhZCBmasOkcnJncmVuLCBhbmdlIDx1cHBzdHLDtm0+IG1hbnVlbGx0LlxuIgogCi0jOiBidWlsdGluL2xvZy5jOjE1MzAgYnVpbHRpbi9sb2cuYzoxNTMyIGJ1aWx0aW4vbG9nLmM6MTU0NAorIzogYnVpbHRpbi9sb2cuYzoxNTUyIGJ1aWx0aW4vbG9nLmM6MTU1NCBidWlsdGluL2xvZy5jOjE1NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biBjb21taXQgJXMiCiBtc2dzdHIgIk9rw6RuZCBpbmNoZWNrbmluZyAlcyIKIAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQwMgorbXNnaWQgImdpdCBscy1maWxlcyBbb3B0aW9uc10gWzxmaWxlPi4uLl0iCittc2dzdHIgImdpdCBscy1maWxlcyBbZmxhZ2dvcl0gWzxmaWw+Li4uXSIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ1OQorbXNnaWQgImlkZW50aWZ5IHRoZSBmaWxlIHN0YXR1cyB3aXRoIHRhZ3MiCittc2dzdHIgImlkZW50aWZpZXJhIGZpbHN0YXR1cyBtZWQgdGFnZ2FyIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDYxCittc2dpZCAidXNlIGxvd2VyY2FzZSBsZXR0ZXJzIGZvciAnYXNzdW1lIHVuY2hhbmdlZCcgZmlsZXMiCittc2dzdHIgImFudsOkbmQgc23DpSBib2tzdMOkdmVyIGbDtnIgXCJhbnRhIG9mw7Zyw6RuZHJhZGVcIi1maWxlciIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2MworbXNnaWQgInNob3cgY2FjaGVkIGZpbGVzIGluIHRoZSBvdXRwdXQgKGRlZmF1bHQpIgorbXNnc3RyICJ2aXNhIGNhY2hhZGUgZmlsZXIgaSB1dGRhdGEgKHN0YW5kYXJkKSIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NQorbXNnaWQgInNob3cgZGVsZXRlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgorbXNnc3RyICJ2aXNhIGJvcnR0YWduYSBmaWxlciBpIHV0ZGF0YSIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NworbXNnaWQgInNob3cgbW9kaWZpZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKK21zZ3N0ciAidmlzYSBtb2RpZmllcmFkZSBmaWxlciBpIHV0ZGF0YSIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2OQorbXNnaWQgInNob3cgb3RoZXIgZmlsZXMgaW4gdGhlIG91dHB1dCIKK21zZ3N0ciAidmlzYSBhbmRyYSBmaWxlciBpIHV0ZGF0YSIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3MQorbXNnaWQgInNob3cgaWdub3JlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgorbXNnc3RyICJ2aXNhIGlnbm9yZXJhZGUgZmlsZXIgaSB1dGRhdGEiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzQKK21zZ2lkICJzaG93IHN0YWdlZCBjb250ZW50cycgb2JqZWN0IG5hbWUgaW4gdGhlIG91dHB1dCIKK21zZ3N0ciAidmlzYSBrw7ZhdCBpbm5laMOlbGxzIG9iamVrdG5hbW4gaSB1dGRhdGEiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzYKK21zZ2lkICJzaG93IGZpbGVzIG9uIHRoZSBmaWxlc3lzdGVtIHRoYXQgbmVlZCB0byBiZSByZW1vdmVkIgorbXNnc3RyICJ2aXNhIGZpbGVyIGkgZmlsc3lzdGVtZXQgc29tIGJlaMO2dmVyIHRhcyBib3J0IgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc4Cittc2dpZCAic2hvdyAnb3RoZXInIGRpcmVjdG9yaWVzJyBuYW1lIG9ubHkiCittc2dzdHIgInZpc2EgZW5kYXN0IG5hbW4gZsO2ciBcImFuZHJhXCIga2F0YWxvZ2VyIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDgxCittc2dpZCAiZG9uJ3Qgc2hvdyBlbXB0eSBkaXJlY3RvcmllcyIKK21zZ3N0ciAidmlzYSBpbnRlIHRvbW1hIGthdGFsb2dlciIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4NAorbXNnaWQgInNob3cgdW5tZXJnZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKK21zZ3N0ciAidmlzYSBlaiBzYW1tYW5zbGFnbmEgZmlsZXIgaSB1dGRhdGEiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODYKK21zZ2lkICJzaG93IHJlc29sdmUtdW5kbyBpbmZvcm1hdGlvbiIKK21zZ3N0ciAidmlzYSBcInJlc29sdmUtdW5kb1wiLWluZm9ybWF0aW9uIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg4Cittc2dpZCAic2tpcCBmaWxlcyBtYXRjaGluZyBwYXR0ZXJuIgorbXNnc3RyICJob3BwYSDDtnZlciBmaWxlciBzb20gbW90c3ZhcmFyIG3Dtm5zdGVyIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDkxCittc2dpZCAiZXhjbHVkZSBwYXR0ZXJucyBhcmUgcmVhZCBmcm9tIDxmaWxlPiIKK21zZ3N0ciAiZXhrbHVkZXJhIG3Dtm5zdGVyIHNvbSBsw6RzZXMgZnLDpW4gPGZpbD4iCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTQKK21zZ2lkICJyZWFkIGFkZGl0aW9uYWwgcGVyLWRpcmVjdG9yeSBleGNsdWRlIHBhdHRlcm5zIGluIDxmaWxlPiIKK21zZ3N0ciAibMOkcyB5dHRlcmxpZ2FyZSBwZXIta2F0YWxvZy1leGtsdWRlcmluZ3Ntw7Zuc3RlciBmcsOlbiA8ZmlsPiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NgorbXNnaWQgImFkZCB0aGUgc3RhbmRhcmQgZ2l0IGV4Y2x1c2lvbnMiCittc2dzdHIgImzDpGdnIHRpbGwgZ2l0OnMgc3RhbmRhcmRleGtsdWRlcmluZ2FyIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDk5Cittc2dpZCAibWFrZSB0aGUgb3V0cHV0IHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHRvcCBkaXJlY3RvcnkiCittc2dzdHIgImfDtnIgdXRkYXRhIHJlbGF0aXYgdGlsbCBwcm9qZWt0ZXRzIHRvcHBrYXRhbG9nIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTAyCittc2dpZCAiaWYgYW55IDxmaWxlPiBpcyBub3QgaW4gdGhlIGluZGV4LCB0cmVhdCB0aGlzIGFzIGFuIGVycm9yIgorbXNnc3RyICJvbSBlbiA8ZmlsPiBpbnRlIMOkciBpbmRleGV0LCBiZXRyYWt0YSBkZXQgc29tIGV0dCBmZWwiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDMKK21zZ2lkICJ0cmVlLWlzaCIKK21zZ3N0ciAidHLDpGQtaWd0IgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTA0Cittc2dpZCAicHJldGVuZCB0aGF0IHBhdGhzIHJlbW92ZWQgc2luY2UgPHRyZWUtaXNoPiBhcmUgc3RpbGwgcHJlc2VudCIKK21zZ3N0ciAibMOldHNhcyBhdHQgc8O2a3bDpGdhciBib3J0dGFnbmEgc2VkYW4gPHRyw6RkLWlndD4gZm9ydGZhcmFuZGUgZmlubnMiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDYKK21zZ2lkICJzaG93IGRlYnVnZ2luZyBkYXRhIgorbXNnc3RyICJ2aXNhIGZlbHPDtmtuaW5nc3V0ZGF0YSIKKworIzogYnVpbHRpbi9scy10cmVlLmM6MjcKK21zZ2lkICJnaXQgbHMtdHJlZSBbPG9wdGlvbnM+XSA8dHJlZS1pc2g+IFs8cGF0aD4uLi5dIgorbXNnc3RyICJnaXQgbHMtdHJlZSBbPGZsYWdnb3I+XSA8dHLDpGQtaWd0PiBbPHPDtmt2w6RnPi4uLl0iCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjEyNQorbXNnaWQgIm9ubHkgc2hvdyB0cmVlcyIKK21zZ3N0ciAidmlzYSBlbmRhc3QgdHLDpGQiCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjEyNworbXNnaWQgInJlY3Vyc2UgaW50byBzdWJ0cmVlcyIKK21zZ3N0ciAicmVrdXJzZXJhIG5lciBpIHVuZGVydHLDpGQiCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjEyOQorbXNnaWQgInNob3cgdHJlZXMgd2hlbiByZWN1cnNpbmciCittc2dzdHIgInZpc2EgdHLDpGQgbWVkYW4gcmVrdXJzZXJpbmciCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjEzMgorbXNnaWQgInRlcm1pbmF0ZSBlbnRyaWVzIHdpdGggTlVMIGJ5dGUiCittc2dzdHIgInRlcm1pbmVyYSBwb3N0ZXIgbWVkIE5VTC1ieXRlIgorCisjOiBidWlsdGluL2xzLXRyZWUuYzoxMzMKK21zZ2lkICJpbmNsdWRlIG9iamVjdCBzaXplIgorbXNnc3RyICJpbmtsdWRlcmEgb2JqZWt0c3RvcmxlayIKKworIzogYnVpbHRpbi9scy10cmVlLmM6MTM1IGJ1aWx0aW4vbHMtdHJlZS5jOjEzNworbXNnaWQgImxpc3Qgb25seSBmaWxlbmFtZXMiCittc2dzdHIgInZpc2EgZW5kYXN0IGZpbG5hbW4iCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjE0MAorbXNnaWQgInVzZSBmdWxsIHBhdGggbmFtZXMiCittc2dzdHIgImFudsOkbmQgZnVsbHN0w6RuZGlnYSBzw7ZrdsOkZ3NuYW1uIgorCisjOiBidWlsdGluL2xzLXRyZWUuYzoxNDIKK21zZ2lkICJsaXN0IGVudGlyZSB0cmVlOyBub3QganVzdCBjdXJyZW50IGRpcmVjdG9yeSAoaW1wbGllcyAtLWZ1bGwtbmFtZSkiCittc2dzdHIgInZpc2EgaGVsYSB0csOkZGV0OyBpbnRlIGJhcmEgYWt0dWVsbCBrYXRhbG9nIChpbXBsaWNlcmFyIC0tZnVsbC1uYW1lKSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjQzCittc2dpZCAiZ2l0IG1lcmdlIFtvcHRpb25zXSBbPGNvbW1pdD4uLi5dIgorbXNnc3RyICJnaXQgbWVyZ2UgW2ZsYWdnb3JdIFs8aW5jaGVja25pbmc+Li4uXSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjQ0Cittc2dpZCAiZ2l0IG1lcmdlIFtvcHRpb25zXSA8bXNnPiBIRUFEIDxjb21taXQ+IgorbXNnc3RyICJnaXQgbWVyZ2UgW2ZsYWdnb3JdIDxtZWRkZWxhbmRlPiBIRUFEIDxpbmNoZWNrbmluZz4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo0NQorbXNnaWQgImdpdCBtZXJnZSAtLWFib3J0IgorbXNnc3RyICJnaXQgbWVyZ2UgLS1hYm9ydCIKKwogIzogYnVpbHRpbi9tZXJnZS5jOjkwCiBtc2dpZCAic3dpdGNoIGBtJyByZXF1aXJlcyBhIHZhbHVlIgogbXNnc3RyICJmbGFnZ2FuIFwibVwiIGJlaMO2dmVyIGV0dCB2w6RyZGUiCkBAIC0yMzM1LDE1NSArNjE2MSwyMTMgQEAKIG1zZ2lkICJBdmFpbGFibGUgY3VzdG9tIHN0cmF0ZWdpZXMgYXJlOiIKIG1zZ3N0ciAiVGlsbGfDpG5nbGlnYSBza3LDpGRkYXJzeWRkYSBzdHJhdGVnaWVyIMOkcjoiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxODMKK21zZ2lkICJkbyBub3Qgc2hvdyBhIGRpZmZzdGF0IGF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlIgorbXNnc3RyICJ2aXNhIGludGUgZW4gZGlmZnN0YXQgbsOkciBzYW1tYW5zbGFnbmluZ2VuIMOkciBmw6RyZGlnIgorCisjOiBidWlsdGluL21lcmdlLmM6MTg2Cittc2dpZCAic2hvdyBhIGRpZmZzdGF0IGF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlIgorbXNnc3RyICJ2aXNhIGVuIGRpZmZzdGF0IG7DpHIgc2FtbWFuc2xhZ25pbmdlbiDDpHIgZsOkcmRpZyIKKworIzogYnVpbHRpbi9tZXJnZS5jOjE4NworbXNnaWQgIihzeW5vbnltIHRvIC0tc3RhdCkiCittc2dzdHIgIihzeW5vbnltIHRpbGwgLS1zdGF0KSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjE4OQorbXNnaWQgImFkZCAoYXQgbW9zdCA8bj4pIGVudHJpZXMgZnJvbSBzaG9ydGxvZyB0byBtZXJnZSBjb21taXQgbWVzc2FnZSIKK21zZ3N0ciAiIgorImzDpGdnIHRpbGwgKHNvbSBtZXN0IDxuPikgcG9zdGVyIGZyw6VuIHNob3J0bG9nIHRpbGwgaW5jaGVja25pbmdzbWVkZGVsYW5kZXQiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxOTIKK21zZ2lkICJjcmVhdGUgYSBzaW5nbGUgY29tbWl0IGluc3RlYWQgb2YgZG9pbmcgYSBtZXJnZSIKK21zZ3N0ciAic2thcGEgZW4gZW5zYW0gaW5jaGVja25pbmcgaXN0w6RsbGV0IGbDtnIgZW4gc2FtbWFuc2xhZ25pbmciCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxOTQKK21zZ2lkICJwZXJmb3JtIGEgY29tbWl0IGlmIHRoZSBtZXJnZSBzdWNjZWVkcyAoZGVmYXVsdCkiCittc2dzdHIgInV0ZsO2ciBlbiBpbmNoZWNrbmluZyBvbSBzYW1tYW5zbGFnbmluZ2VuIGx5Y2thZGVzIChzdGFuZGFyZCkiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxOTYKK21zZ2lkICJlZGl0IG1lc3NhZ2UgYmVmb3JlIGNvbW1pdHRpbmciCittc2dzdHIgInJlZGlnZXJhIG1lZGRlbGFuZGUgaW5uYW4gaW5jaGVja25pbmciCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxOTgKK21zZ2lkICJhbGxvdyBmYXN0LWZvcndhcmQgKGRlZmF1bHQpIgorbXNnc3RyICJ0aWxsw6V0IHNuYWJic3BvbG5pbmcgKHN0YW5kYXJkKSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjIwMAorbXNnaWQgImFib3J0IGlmIGZhc3QtZm9yd2FyZCBpcyBub3QgcG9zc2libGUiCittc2dzdHIgImF2YnJ5dCBvbSBzbmFiYnNwb2xuaW5nIGludGUgw6RyIG3DtmpsaWciCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDMKK21zZ2lkICJWZXJpZnkgdGhhdCB0aGUgbmFtZWQgY29tbWl0IGhhcyBhIHZhbGlkIEdQRyBzaWduYXR1cmUiCittc2dzdHIgIkJla3LDpGZ0YSBhdHQgZGVuIG5hbW5naXZuYSBpbmNoZWNrbmluZ2VuIGhhciBlbiBnaWx0aWcgR1BHLXNpZ25hdHVyIgorCisjOiBidWlsdGluL21lcmdlLmM6MjA0IGJ1aWx0aW4vbm90ZXMuYzo4NjYgYnVpbHRpbi9yZXZlcnQuYzoxMTIKK21zZ2lkICJzdHJhdGVneSIKK21zZ3N0ciAic3RyYXRlZ2kiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDUKK21zZ2lkICJtZXJnZSBzdHJhdGVneSB0byB1c2UiCittc2dzdHIgInNhbW1hbnNsYWduaW5zc3RyYXRlZ2kgYXR0IGFudsOkbmRhIgorCisjOiBidWlsdGluL21lcmdlLmM6MjA2Cittc2dpZCAib3B0aW9uPXZhbHVlIgorbXNnc3RyICJhbHRlcm5hdGl2PXbDpHJkZSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjIwNworbXNnaWQgIm9wdGlvbiBmb3Igc2VsZWN0ZWQgbWVyZ2Ugc3RyYXRlZ3kiCittc2dzdHIgImFsdGVybmF0aXYgZsO2ciB2YWxkIHNhbW1hbnNsYWduaW5nc3N0cmF0ZWdpIgorCisjOiBidWlsdGluL21lcmdlLmM6MjA5Cittc2dpZCAibWVyZ2UgY29tbWl0IG1lc3NhZ2UgKGZvciBhIG5vbi1mYXN0LWZvcndhcmQgbWVyZ2UpIgorbXNnc3RyICJpbmNoZWNrbmluZ3NtZWRkZWxhbmRlIGbDtnIgKGlja2Ugc25hYmJzcG9sYW5kZSkgc2FtbWFuc2xhZ25pbmciCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMTMKK21zZ2lkICJhYm9ydCB0aGUgY3VycmVudCBpbi1wcm9ncmVzcyBtZXJnZSIKK21zZ3N0ciAiYXZicnl0IGRlbiBww6Vnw6VlbmRlIHNhbW1hbnNsYWduaW5nZW4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDIKIG1zZ2lkICJjb3VsZCBub3QgcnVuIHN0YXNoLiIKIG1zZ3N0ciAia3VuZGUga8O2cmEgc3Rhc2guIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjQ1CisjOiBidWlsdGluL21lcmdlLmM6MjQ3CiBtc2dpZCAic3Rhc2ggZmFpbGVkIgogbXNnc3RyICJzdGFzaCBtaXNzbHlja2FkZXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNTAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90IGEgdmFsaWQgb2JqZWN0OiAlcyIKIG1zZ3N0ciAiaW50ZSBldHQgZ2lsdGlndCBvYmpla3Q6ICVzIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjY5IGJ1aWx0aW4vbWVyZ2UuYzoyODYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNzEgYnVpbHRpbi9tZXJnZS5jOjI4OAogbXNnaWQgInJlYWQtdHJlZSBmYWlsZWQiCiBtc2dzdHIgInJlYWQtdHJlZSBtaXNzbHlja2FkZXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozMTYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozMTgKIG1zZ2lkICIgKG5vdGhpbmcgdG8gc3F1YXNoKSIKIG1zZ3N0ciAiIChpbmdldCBhdHQgcGxhdHRhIHRpbGwpIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzI5CisjOiBidWlsdGluL21lcmdlLmM6MzMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlNxdWFzaCBjb21taXQgLS0gbm90IHVwZGF0aW5nIEhFQURcbiIKIG1zZ3N0ciAiVGlsbHBsYXR0bmluZ3NpbmNoZWNrbmluZyAtLSB1cHBkYXRlcmFyIGludGUgSEVBRFxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzYxCisjOiBidWlsdGluL21lcmdlLmM6MzYzCiBtc2dpZCAiV3JpdGluZyBTUVVBU0hfTVNHIgogbXNnc3RyICJTa3JpdmVyIFNRVUFTSF9NU0ciCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozNjMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozNjUKIG1zZ2lkICJGaW5pc2hpbmcgU1FVQVNIX01TRyIKIG1zZ3N0ciAiQXZzbHV0YXIgU1FVQVNIX01TRyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM4NgorIzogYnVpbHRpbi9tZXJnZS5jOjM4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBtZXJnZSBtZXNzYWdlIC0tIG5vdCB1cGRhdGluZyBIRUFEXG4iCiBtc2dzdHIgIkluZ2V0IHNhbW1hbnNsYWduaW5nc21lZGRlbGFuZGUgLS0gdXBwZGF0ZXJhciBpbnRlIEhFQURcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjQzNworIzogYnVpbHRpbi9tZXJnZS5jOjQzOAogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGRvZXMgbm90IHBvaW50IHRvIGEgY29tbWl0IgogbXNnc3RyICJcIiVzXCIgdmVya2FyIGludGUgcGVrYSBww6UgZW4gaW5jaGVja25pbmciCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo1MzYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo1NTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkIGJyYW5jaC4lcy5tZXJnZW9wdGlvbnMgc3RyaW5nOiAlcyIKIG1zZ3N0ciAiRmVsYWt0aWcgYnJhbmNoLiVzLm1lcmdlb3B0aW9ucy1zdHLDpG5nOiAlcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjYyOQorIzogYnVpbHRpbi9tZXJnZS5jOjY0MwogbXNnaWQgImdpdCB3cml0ZS10cmVlIGZhaWxlZCB0byB3cml0ZSBhIHRyZWUiCiBtc2dzdHIgImdpdCB3cml0ZS10cmVlIG1pc3NseWNrYWRlcyBza3JpdmEgZXR0IHRyw6RkIgogCi0jOiBidWlsdGluL21lcmdlLmM6Njc5Ci1tc2dpZCAiZmFpbGVkIHRvIHJlYWQgdGhlIGNhY2hlIgotbXNnc3RyICJtaXNzbHlja2FkcyBsw6RzYSBjYWNoZW4iCi0KLSM6IGJ1aWx0aW4vbWVyZ2UuYzo2OTcKLW1zZ2lkICJVbmFibGUgdG8gd3JpdGUgaW5kZXguIgotbXNnc3RyICJLdW5kZSBpbnRlIHNrcml2YSBpbmRleGV0LiIKLQotIzogYnVpbHRpbi9tZXJnZS5jOjcxMAorIzogYnVpbHRpbi9tZXJnZS5jOjY3MQogbXNnaWQgIk5vdCBoYW5kbGluZyBhbnl0aGluZyBvdGhlciB0aGFuIHR3byBoZWFkcyBtZXJnZS4iCiBtc2dzdHIgIkhhbnRlcmFyIGludGUgbsOlZ290IGFubmF0IMOkbiBlbiBzYW1tYW5zbGFnbmluZyBhdiB0dsOlIGh1dnVkZW4uIgogCi0jOiBidWlsdGluL21lcmdlLmM6NzI0CisjOiBidWlsdGluL21lcmdlLmM6Njg1CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gb3B0aW9uIGZvciBtZXJnZS1yZWN1cnNpdmU6IC1YJXMiCiBtc2dzdHIgIkZlbGFrdGlnIGZsYWdnYSBmw7ZyIG1lcmdlLXJlY3Vyc2l2ZTogLVglcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjczOAorIzogYnVpbHRpbi9tZXJnZS5jOjY5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgJXMiCiBtc2dzdHIgImt1bmRlIGludGUgc2tyaXZhICVzIgogCi0jOiBidWlsdGluL21lcmdlLmM6ODc3CisjOiBidWlsdGluL21lcmdlLmM6Nzg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCByZWFkIGZyb20gJyVzJyIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBsw6RzYSBmcsOlbiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4ODYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo3OTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGNvbW1pdHRpbmcgbWVyZ2U7IHVzZSAnZ2l0IGNvbW1pdCcgdG8gY29tcGxldGUgdGhlIG1lcmdlLlxuIgogbXNnc3RyICIiCiAiQ2hlY2thciBpbnRlIGluIHNhbW1hbnNsYWduaW5nZW47IGFudsOkbmQgXCJnaXQgY29tbWl0XCIgZsO2ciBhdHQgc2x1dGbDtnJhICIKICJkZW4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4OTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MDMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBsZWFzZSBlbnRlciBhIGNvbW1pdCBtZXNzYWdlIHRvIGV4cGxhaW4gd2h5IHRoaXMgbWVyZ2UgaXMgbmVjZXNzYXJ5LFxuIgogImVzcGVjaWFsbHkgaWYgaXQgbWVyZ2VzIGFuIHVwZGF0ZWQgdXBzdHJlYW0gaW50byBhIHRvcGljIGJyYW5jaC5cbiIKICJcbiIKLSJMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0c1xuIgorIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0c1xuIgogInRoZSBjb21taXQuXG4iCiBtc2dzdHIgIiIKICJBbmdlIGV0dCBpbmNoZWNrbmluZ3NtZWRkZWxhbmRlIGbDtnIgYXR0IGbDtnJrbGFyYSB2YXJmw7ZyIHNhbW1hbnNsYWduaW5nZW5cbiIKICLDpHIgbsO2ZHbDpG5kaWcsIHNwZWNpZWxsdCBvbSBkZW4gc2zDpXIgaW4gZW4gdXBwZGF0ZXJhZCB1cHBzdHLDtm0gaSBlblxuIgogInRlbWFncmVuLlxuIgogIlxuIgotIlJhZGVyIHNvbSBpbmxlZHMgbWVkIFwiI1wiIGtvbW1lciBpZ25vcmVyYXMsIG9jaCBldHQgdG9tdCBtZWRkZWxhbmRlXG4iCisiUmFkZXIgc29tIGlubGVkcyBtZWQgXCIlY1wiIGtvbW1lciBpZ25vcmVyYXMsIG9jaCBldHQgdG9tdCBtZWRkZWxhbmRlXG4iCiAiYXZicnl0ZXIgaW5jaGVja25pbmdlbi5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjkxNgorIzogYnVpbHRpbi9tZXJnZS5jOjgyNwogbXNnaWQgIkVtcHR5IGNvbW1pdCBtZXNzYWdlLiIKIG1zZ3N0ciAiVG9tdCBpbmNoZWNrbmluZ3NtZWRkZWxhbmRlLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjkyOAorIzogYnVpbHRpbi9tZXJnZS5jOjgzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJXb25kZXJmdWwuXG4iCiBtc2dzdHIgIlVuZGVyYmFydC5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjk5MworIzogYnVpbHRpbi9tZXJnZS5jOjkwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJBdXRvbWF0aWMgbWVyZ2UgZmFpbGVkOyBmaXggY29uZmxpY3RzIGFuZCB0aGVuIGNvbW1pdCB0aGUgcmVzdWx0LlxuIgogbXNnc3RyICIiCiAiS3VuZGUgaW50ZSBzbMOlIGlob3AgYXV0b21hdGlza3Q7IGZpeGEga29uZmxpa3RlciBvY2ggY2hlY2thIGluIHJlc3VsdGF0ZXQuXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDA5CisjOiBidWlsdGluL21lcmdlLmM6OTIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgaXMgbm90IGEgY29tbWl0IgogbXNnc3RyICJcIiVzXCIgw6RyIGludGUgZW4gaW5jaGVja25pbmciCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDUwCisjOiBidWlsdGluL21lcmdlLmM6OTYxCiBtc2dpZCAiTm8gY3VycmVudCBicmFuY2guIgogbXNnc3RyICJJbnRlIHDDpSBuw6Vnb24gZ3Jlbi4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDUyCisjOiBidWlsdGluL21lcmdlLmM6OTYzCiBtc2dpZCAiTm8gcmVtb3RlIGZvciB0aGUgY3VycmVudCBicmFuY2guIgogbXNnc3RyICJJbmdlbiBmasOkcnIgZsO2ciBha3R1ZWxsIGdyZW4uIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTA1NAorIzogYnVpbHRpbi9tZXJnZS5jOjk2NQogbXNnaWQgIk5vIGRlZmF1bHQgdXBzdHJlYW0gZGVmaW5lZCBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAiSW5nZW4gc3RhbmRhcmR1cHBzdHLDtm0gYW5naXZlbiBmw7ZyIGFrdHVlbGwgZ3Jlbi4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDU5CisjOiBidWlsdGluL21lcmdlLmM6OTcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHJlbW90ZSB0cmFja2luZyBicmFuY2ggZm9yICVzIGZyb20gJXMiCiBtc2dzdHIgIkluZ2VuIGZqw6RycnNww6VyYW5kZSBncmVuIGbDtnIgJXMgZnLDpW4gJXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQ2IGJ1aWx0aW4vbWVyZ2UuYzoxMzAzCisjOiBidWlsdGluL21lcmdlLmM6MTA1NyBidWlsdGluL21lcmdlLmM6MTIxNAogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyAtIG5vdCBzb21ldGhpbmcgd2UgY2FuIG1lcmdlIgogbXNnc3RyICIlcyAtIGludGUgbsOlZ290IHZpIGthbiBzbMOlIGlob3AiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjE0CisjOiBidWlsdGluL21lcmdlLmM6MTEyNQogbXNnaWQgIlRoZXJlIGlzIG5vIG1lcmdlIHRvIGFib3J0IChNRVJHRV9IRUFEIG1pc3NpbmcpLiIKIG1zZ3N0ciAiRGV0IGZpbm5zIGluZ2VuIHNhbW1hbnNsYWduaW5nIGF0dCBhdmJyeXRhIChNRVJHRV9IRUFEIHNha25hcykuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIzMCBnaXQtcHVsbC5zaDozMQorIzogYnVpbHRpbi9tZXJnZS5jOjExNDEgZ2l0LXB1bGwuc2g6MzEKIG1zZ2lkICIiCiAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIG1lcmdlIChNRVJHRV9IRUFEIGV4aXN0cykuXG4iCiAiUGxlYXNlLCBjb21taXQgeW91ciBjaGFuZ2VzIGJlZm9yZSB5b3UgY2FuIG1lcmdlLiIKQEAgLTI0OTEsMTEgKzYzNzUsMTEgQEAKICJEdSBoYXIgaW50ZSBhdnNsdXRhdCBzYW1tYW5zbGFnbmluZ2VuIChNRVJHRV9IRUFEIGZpbm5zKS5cbiIKICJDaGVja2EgaW4gZGluYSDDpG5kcmluZ2FyIGlubmFuIGR1IGthbiBzbMOlIGlob3AuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIzMyBnaXQtcHVsbC5zaDozNAorIzogYnVpbHRpbi9tZXJnZS5jOjExNDQgZ2l0LXB1bGwuc2g6MzQKIG1zZ2lkICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgbWVyZ2UgKE1FUkdFX0hFQUQgZXhpc3RzKS4iCiBtc2dzdHIgIkR1IGhhciBpbnRlIGF2c2x1dGF0IHNhbW1hbnNsYWduaW5nZW4gKE1FUkdFX0hFQUQgZmlubnMpLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyMzcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQ4CiBtc2dpZCAiIgogIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBjaGVycnktcGljayAoQ0hFUlJZX1BJQ0tfSEVBRCBleGlzdHMpLlxuIgogIlBsZWFzZSwgY29tbWl0IHlvdXIgY2hhbmdlcyBiZWZvcmUgeW91IGNhbiBtZXJnZS4iCkBAIC0yNTAzLDg0ICs2Mzg3LDIwNiBAQAogIkR1IGhhciBpbnRlIGF2c2x1dGF0IGRpbiBcImNoZXJyeS1waWNrXCIgKENIRVJSWV9QSUNLX0hFQUQgZmlubnMpLlxuIgogIkNoZWNrYSBpbiBkaW5hIMOkbmRyaW5nYXIgaW5uYW4gZHUga2FuIHNsw6UgaWhvcC4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjQwCisjOiBidWlsdGluL21lcmdlLmM6MTE1MQogbXNnaWQgIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBjaGVycnktcGljayAoQ0hFUlJZX1BJQ0tfSEVBRCBleGlzdHMpLiIKIG1zZ3N0ciAiRHUgaGFyIGludGUgYXZzbHV0YXQgZGluIFwiY2hlcnJ5LXBpY2tcIiAoQ0hFUlJZX1BJQ0tfSEVBRCBmaW5ucykuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI0OQorIzogYnVpbHRpbi9tZXJnZS5jOjExNjAKIG1zZ2lkICJZb3UgY2Fubm90IGNvbWJpbmUgLS1zcXVhc2ggd2l0aCAtLW5vLWZmLiIKIG1zZ3N0ciAiRHUga2FuIGludGUga29tYmluZXJhIC0tc3F1YXNoIG1lZCAtLW5vLWZmLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyNTQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTY1CiBtc2dpZCAiWW91IGNhbm5vdCBjb21iaW5lIC0tbm8tZmYgd2l0aCAtLWZmLW9ubHkuIgogbXNnc3RyICJEdSBrYW4gaW50ZSBrb21iaW5lcmEgLS1uby1mZiBtZWQgLS1mZi1vbmx5LiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyNjEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTcyCiBtc2dpZCAiTm8gY29tbWl0IHNwZWNpZmllZCBhbmQgbWVyZ2UuZGVmYXVsdFRvVXBzdHJlYW0gbm90IHNldC4iCiBtc2dzdHIgIkluZ2VuIGluY2hlY2tuaW5nIGFuZ2l2ZW4gb2NoIG1lcmdlLmRlZmF1bHRUb1Vwc3RyZWFtIMOkciBlaiBzYXR0LiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyOTMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA0CiBtc2dpZCAiQ2FuIG1lcmdlIG9ubHkgZXhhY3RseSBvbmUgY29tbWl0IGludG8gZW1wdHkgaGVhZCIKIG1zZ3N0ciAiS2FuIGVuZGFzdCBzbMOlIGlob3AgZW4gZW5kYSBpbmNoZWNrbmluZyBpIGV0dCB0b210IGh1dnVkLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyOTYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA3CiBtc2dpZCAiU3F1YXNoIGNvbW1pdCBpbnRvIGVtcHR5IGhlYWQgbm90IHN1cHBvcnRlZCB5ZXQiCiBtc2dzdHIgIlN0w7ZkZXIgaW50ZSBlbiB0aWxscGxhdHRuaW5nc2luY2hlY2tuaW5nIHDDpSBldHQgdG9tdCBodXZ1ZCDDpG5udSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyOTgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA5CiBtc2dpZCAiTm9uLWZhc3QtZm9yd2FyZCBjb21taXQgZG9lcyBub3QgbWFrZSBzZW5zZSBpbnRvIGFuIGVtcHR5IGhlYWQiCiBtc2dzdHIgIklja2Utc25hYmJzcG9sYWQgaW5jaGVja25pbmcga2FuIGludGUgYW52w6RuZGFzIG1lZCBldHQgdG9tdCBodXZ1ZCIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0MTMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBoYXMgYW4gdW50cnVzdGVkIEdQRyBzaWduYXR1cmUsIGFsbGVnZWRseSBieSAlcy4iCittc2dzdHIgIiIKKyJJbmNoZWNrbmluZ2VuICVzIGhhciBlbiBvYmV0cm9kZCBHUEctc2lnbmF0dXIgc29tIHDDpXN0w6VzIHZhcmEgZ2pvcmQgYXYgJXMuIgorCisjOiBidWlsdGluL21lcmdlLmM6MTI2OAorIywgYy1mb3JtYXQKK21zZ2lkICJDb21taXQgJXMgaGFzIGEgYmFkIEdQRyBzaWduYXR1cmUgYWxsZWdlZGx5IGJ5ICVzLiIKK21zZ3N0ciAiIgorIkluY2hlY2tuaW5nZW4gJXMgaGFyIGVuIGZlbGFrdGlnIEdQRy1zaWduYXR1ciBzb20gcMOlc3TDpXMgdmFyYSBnam9yZCBhdiAlcy4iCisKKyMuICdOJworIzogYnVpbHRpbi9tZXJnZS5jOjEyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29tbWl0ICVzIGRvZXMgbm90IGhhdmUgYSBHUEcgc2lnbmF0dXJlLiIKK21zZ3N0ciAiSW5jaGVja25pbmcgJXMgaGFyIGludGUgbsOlZ29uIEdQRy1zaWduYXR1ci4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjc0CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBoYXMgYSBnb29kIEdQRyBzaWduYXR1cmUgYnkgJXNcbiIKK21zZ3N0ciAiSW5jaGVja25pbmdlbiAlcyBoYXIgZW4ga29ycmVrdCBHUEctc2lnbmF0dXIgYXYgJXNcbiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjEzNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXBkYXRpbmcgJXMuLiVzXG4iCiBtc2dzdHIgIlVwcGRhdGVyYXIgJXMuLiVzXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDUxCisjOiBidWlsdGluL21lcmdlLmM6MTM5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJUcnlpbmcgcmVhbGx5IHRyaXZpYWwgaW4taW5kZXggbWVyZ2UuLi5cbiIKIG1zZ3N0ciAiRsO2cnPDtmtlciByaWt0aWd0IGVua2VsIHNhbW1hbnNsYWduaW5nIGkgaW5kZXhldC4uLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQ1OAorIzogYnVpbHRpbi9tZXJnZS5jOjE0MDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm9wZS5cbiIKIG1zZ3N0ciAiTmVqLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQ5MAorIzogYnVpbHRpbi9tZXJnZS5jOjE0MzYKIG1zZ2lkICJOb3QgcG9zc2libGUgdG8gZmFzdC1mb3J3YXJkLCBhYm9ydGluZy4iCiBtc2dzdHIgIkthbiBpbnRlIHNuYWJic3BvbGEsIGF2YnJ5dGVyLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE1MTMgYnVpbHRpbi9tZXJnZS5jOjE1OTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDU5IGJ1aWx0aW4vbWVyZ2UuYzoxNTM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJld2luZGluZyB0aGUgdHJlZSB0byBwcmlzdGluZS4uLlxuIgogbXNnc3RyICLDhXRlcnNwb2xhciB0csOkZGV0IHRpbGwgb3LDtnJ0Li4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTE3CisjOiBidWlsdGluL21lcmdlLmM6MTQ2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJUcnlpbmcgbWVyZ2Ugc3RyYXRlZ3kgJXMuLi5cbiIKIG1zZ3N0ciAiRsO2cnPDtmtlciBzYW1tYW5zbGFnbmluc3N0cmF0ZWdpbiAlcy4uLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTU4MworIzogYnVpbHRpbi9tZXJnZS5jOjE1MjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gbWVyZ2Ugc3RyYXRlZ3kgaGFuZGxlZCB0aGUgbWVyZ2UuXG4iCiBtc2dzdHIgIkluZ2VuIHNhbW1hbnNsYWduaW5nc3N0cmF0ZWdpIGhhbnRlcmFkZSBzYW1tYW5zbGFnbmluZ2VuLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTU4NQorIzogYnVpbHRpbi9tZXJnZS5jOjE1MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWVyZ2Ugd2l0aCBzdHJhdGVneSAlcyBmYWlsZWQuXG4iCi1tc2dzdHIgIlNhbW1hbnNsYW5pbmcgbWVkIHN0cmF0ZWdpbiAlcyBtaXNzbHlja2FkZXMuXG4iCittc2dzdHIgIlNhbW1hbnNsYWduaW5nIG1lZCBzdHJhdGVnaW4gJXMgbWlzc2x5Y2thZGVzLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTU5NAorIzogYnVpbHRpbi9tZXJnZS5jOjE1NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNpbmcgdGhlICVzIHRvIHByZXBhcmUgcmVzb2x2aW5nIGJ5IGhhbmQuXG4iCiBtc2dzdHIgIkFudsOkbmRlciAlcyBmw7ZyIGF0dCBmw7ZyYmVyZWRhIGzDtnNuaW5nIGbDtnIgaGFuZC5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE2MDYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkF1dG9tYXRpYyBtZXJnZSB3ZW50IHdlbGw7IHN0b3BwZWQgYmVmb3JlIGNvbW1pdHRpbmcgYXMgcmVxdWVzdGVkXG4iCiBtc2dzdHIgIiIKICJBdXRvbWF0aXNrIHNhbW1hbnNsYWduaW5nIGx5Y2thZGVzOyBzdG9wcGFyIGbDtnJlIGluY2hlY2tuaW5nIHNvbSDDtm5za2F0XG4iCiAKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjI2Cittc2dpZCAiZ2l0IG1lcmdlLWJhc2UgWy1hfC0tYWxsXSA8Y29tbWl0PiA8Y29tbWl0Pi4uLiIKK21zZ3N0ciAiZ2l0IG1lcmdlLWJhc2UgWy1hfC0tYWxsXSA8aW5jaGVja25pbmc+IDxpbmNoZWNrbmluZz4uLi4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjI3Cittc2dpZCAiZ2l0IG1lcmdlLWJhc2UgWy1hfC0tYWxsXSAtLW9jdG9wdXMgPGNvbW1pdD4uLi4iCittc2dzdHIgImdpdCBtZXJnZS1iYXNlIFstYXwtLWFsbF0gLS1vY3RvcHVzIDxpbmNoZWNrbmluZz4uLi4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjI4Cittc2dpZCAiZ2l0IG1lcmdlLWJhc2UgLS1pbmRlcGVuZGVudCA8Y29tbWl0Pi4uLiIKK21zZ3N0ciAiZ2l0IG1lcmdlLWJhc2UgLS1pbmRlcGVuZGVudCA8aW5jaGVja25pbmc+Li4uIgorCisjOiBidWlsdGluL21lcmdlLWJhc2UuYzoyOQorbXNnaWQgImdpdCBtZXJnZS1iYXNlIC0taXMtYW5jZXN0b3IgPGNvbW1pdD4gPGNvbW1pdD4iCittc2dzdHIgImdpdCBtZXJnZS1iYXNlIC0taXMtYW5jZXN0b3IgPGluY2hlY2tuaW5nPiA8aW5jaGVja25pbmc+IgorCisjOiBidWlsdGluL21lcmdlLWJhc2UuYzo5OAorbXNnaWQgIm91dHB1dCBhbGwgY29tbW9uIGFuY2VzdG9ycyIKK21zZ3N0ciAic2tyaXYgdXQgYWxsYSBnZW1lbnNhbW1hIGFuZsOkZGVyIgorCisjOiBidWlsdGluL21lcmdlLWJhc2UuYzo5OQorbXNnaWQgImZpbmQgYW5jZXN0b3JzIGZvciBhIHNpbmdsZSBuLXdheSBtZXJnZSIKK21zZ3N0ciAiaGl0dGEgYW5mYWRlciBmw7ZyIGVua2VsIG4tdsOkZ3NzYW1tYW5zbGFnbmluZyIKKworIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6MTAwCittc2dpZCAibGlzdCByZXZzIG5vdCByZWFjaGFibGUgZnJvbSBvdGhlcnMiCittc2dzdHIgInZpc2EgcmV2aXNpb25lciBzb20gaW50ZSBrYW4gbsOlcyBmcsOlbiBhbmRyYSIKKworIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6MTAyCittc2dpZCAiaXMgdGhlIGZpcnN0IG9uZSBhbmNlc3RvciBvZiB0aGUgb3RoZXI/IgorbXNnc3RyICLDpHIgZGVuIGbDtnJzdGEgYW5mYWRlciB0aWxsIGRlbiBhbmRyYT8iCisKKyM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjgKK21zZ2lkICIiCisiZ2l0IG1lcmdlLWZpbGUgW29wdGlvbnNdIFstTCBuYW1lMSBbLUwgb3JpZyBbLUwgbmFtZTJdXV0gZmlsZTEgb3JpZ19maWxlICIKKyJmaWxlMiIKK21zZ3N0ciAiIgorImdpdCBtZXJnZS1maWxlIFthbHRlcm5hdGl2XSBbLUwgbmFtbjEgWy1MIG9yaWcgWy1MIG5hbW4yXV1dIGZpbDEgb3JpZ2ZpbCBmaWwyIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzozMworbXNnaWQgInNlbmQgcmVzdWx0cyB0byBzdGFuZGFyZCBvdXRwdXQiCittc2dzdHIgInPDpG5kIHJlc3VsdGF0IHRpbGwgc3RhbmRhcmQgdXQiCisKKyM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjM0Cittc2dpZCAidXNlIGEgZGlmZjMgYmFzZWQgbWVyZ2UiCittc2dzdHIgImFudsOkbmQgZGlmZjMtYmFzZXJhZCBzYW1tYW5zbGFnbmluZyIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6MzUKK21zZ2lkICJmb3IgY29uZmxpY3RzLCB1c2Ugb3VyIHZlcnNpb24iCittc2dzdHIgImbDtnIga29uZmxpa3RlciwgYW52w6RuZCB2w6VyIHZlcnNpb24iCisKKyM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjM3Cittc2dpZCAiZm9yIGNvbmZsaWN0cywgdXNlIHRoZWlyIHZlcnNpb24iCittc2dzdHIgImbDtnIga29uZmxpa3RlciwgYW52w6RuZCBkZXJhcyB2ZXJzaW9uIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzozOQorbXNnaWQgImZvciBjb25mbGljdHMsIHVzZSBhIHVuaW9uIHZlcnNpb24iCittc2dzdHIgImbDtnIga29uZmxpa3RlciwgYW52w6RuZCBlbiBmw7ZyZW5hZCB2ZXJzaW9uIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzo0MgorbXNnaWQgImZvciBjb25mbGljdHMsIHVzZSB0aGlzIG1hcmtlciBzaXplIgorbXNnc3RyICJmw7ZyIGtvbmZsaWt0ZXIsIGFudsOkbmQgZGVubmEgbWFya8O2cnN0b3JsZWsiCisKKyM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjQzCittc2dpZCAiZG8gbm90IHdhcm4gYWJvdXQgY29uZmxpY3RzIgorbXNnc3RyICJ2YXJuYSBpbnRlIG9tIGtvbmZsaWt0ZXIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjQ1Cittc2dpZCAic2V0IGxhYmVscyBmb3IgZmlsZTEvb3JpZ19maWxlL2ZpbGUyIgorbXNnc3RyICJzw6R0dCBldGlrZXR0ZXIgZsO2ciBmaWwxL29yaWdmaWwvZmlsMiIKKworIzogYnVpbHRpbi9ta3RyZWUuYzo2NworbXNnaWQgImdpdCBta3RyZWUgWy16XSBbLS1taXNzaW5nXSBbLS1iYXRjaF0iCittc2dzdHIgImdpdCBta3RyZWUgWy16XSBbLS1taXNzaW5nXSBbLS1iYXRjaF0iCisKKyM6IGJ1aWx0aW4vbWt0cmVlLmM6MTUzCittc2dpZCAiaW5wdXQgaXMgTlVMIHRlcm1pbmF0ZWQiCittc2dzdHIgImluZGF0YSDDpHIgTlVMLXRlcm1pbmVyYWQiCisKKyM6IGJ1aWx0aW4vbWt0cmVlLmM6MTU0IGJ1aWx0aW4vd3JpdGUtdHJlZS5jOjI0Cittc2dpZCAiYWxsb3cgbWlzc2luZyBvYmplY3RzIgorbXNnc3RyICJ0aWxsw6V0IHNha25hZGUgb2JqZWt0IgorCisjOiBidWlsdGluL21rdHJlZS5jOjE1NQorbXNnaWQgImFsbG93IGNyZWF0aW9uIG9mIG1vcmUgdGhhbiBvbmUgdHJlZSIKK21zZ3N0ciAidGlsbMOldCBza2FwYSBtZXIgw6RuIGV0dCB0csOkZCIKKworIzogYnVpbHRpbi9tdi5jOjE0Cittc2dpZCAiZ2l0IG12IFtvcHRpb25zXSA8c291cmNlPi4uLiA8ZGVzdGluYXRpb24+IgorbXNnc3RyICJnaXQgbXYgW2ZsYWdnb3JdIDxrw6RsbGE+Li4uIDxtw6VsPiIKKworIzogYnVpbHRpbi9tdi5jOjY0Cittc2dpZCAiZm9yY2UgbW92ZS9yZW5hbWUgZXZlbiBpZiB0YXJnZXQgZXhpc3RzIgorbXNnc3RyICJ0dmluZ2EgZmx5dHRhL8OkbmRyYSBuYW1uIMOkdmVuIG9tIG3DpWxldCBmaW5ucyIKKworIzogYnVpbHRpbi9tdi5jOjY1Cittc2dpZCAic2tpcCBtb3ZlL3JlbmFtZSBlcnJvcnMiCittc2dzdHIgImhvcHBhIMO2dmVyIGZlbCB2aWQgZmx5dHQvbmFtbsOkbmRyaW5nIgorCiAjOiBidWlsdGluL212LmM6MTA4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNoZWNraW5nIHJlbmFtZSBvZiAnJXMnIHRvICclcydcbiIKQEAgLTI2MzgsMTE5ICs2NjQ0LDI4NyBAQAogbXNnaWQgIlJlbmFtaW5nICVzIHRvICVzXG4iCiBtc2dzdHIgIkJ5dGVyIG5hbW4gcMOlICVzIHRpbGwgJXNcbiIKIAotIzogYnVpbHRpbi9tdi5jOjIxNQorIzogYnVpbHRpbi9tdi5jOjIxNSBidWlsdGluL3JlbW90ZS5jOjczMQogIywgYy1mb3JtYXQKIG1zZ2lkICJyZW5hbWluZyAnJXMnIGZhaWxlZCIKIG1zZ3N0ciAibWlzc2x5Y2thZGVzIGJ5dGEgbmFtbiBww6UgXCIlc1wiIgogCisjOiBidWlsdGluL25hbWUtcmV2LmM6MTc1Cittc2dpZCAiZ2l0IG5hbWUtcmV2IFtvcHRpb25zXSA8Y29tbWl0Pi4uLiIKK21zZ3N0ciAiZ2l0IG5hbWUtcmV2IFtmbGFnZ29yXSA8aW5jaGVja25pbmc+Li4uIgorCisjOiBidWlsdGluL25hbWUtcmV2LmM6MTc2Cittc2dpZCAiZ2l0IG5hbWUtcmV2IFtvcHRpb25zXSAtLWFsbCIKK21zZ3N0ciAiZ2l0IG5hbWUtcmV2IFtmbGFnZ29yXSAtLWFsbCIKKworIzogYnVpbHRpbi9uYW1lLXJldi5jOjE3NworbXNnaWQgImdpdCBuYW1lLXJldiBbb3B0aW9uc10gLS1zdGRpbiIKK21zZ3N0ciAiZ2l0IG5hbWUtcmV2IFtmbGFnZ29yXSAtLXN0ZGluIgorCisjOiBidWlsdGluL25hbWUtcmV2LmM6MjI5Cittc2dpZCAicHJpbnQgb25seSBuYW1lcyAobm8gU0hBLTEpIgorbXNnc3RyICJza3JpdiBlbmRhc3QgbmFtbiAoaW5nZW4gU0hBLTEpIgorCisjOiBidWlsdGluL25hbWUtcmV2LmM6MjMwCittc2dpZCAib25seSB1c2UgdGFncyB0byBuYW1lIHRoZSBjb21taXRzIgorbXNnc3RyICJhbnbDpG5kIGVuZGFzdCB0YWdnYXIgZsO2ciBhdHQgbmFtbmdlIGluY2hlY2tuaW5nYXIiCisKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzIKK21zZ2lkICJvbmx5IHVzZSByZWZzIG1hdGNoaW5nIDxwYXR0ZXJuPiIKK21zZ3N0ciAiYW52w6RuZCBlbmRhc3QgcmVmZXJlbnNlciBzb20gbW90c3ZhcmFyIDxtw7Zuc3Rlcj4iCisKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzQKK21zZ2lkICJsaXN0IGFsbCBjb21taXRzIHJlYWNoYWJsZSBmcm9tIGFsbCByZWZzIgorbXNnc3RyICJsaXN0YSBhbGxhIGluY2hlY2tuaW5nYXIgc29tIGthbiBuw6VzIGFsbGEgcmVmZXJlbnNlciIKKworIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzNQorbXNnaWQgInJlYWQgZnJvbSBzdGRpbiIKK21zZ3N0ciAibMOkcyBmcsOlbiBzdGFuZGFyZCBpbiIKKworIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzNgorbXNnaWQgImFsbG93IHRvIHByaW50IGB1bmRlZmluZWRgIG5hbWVzIgorbXNnc3RyICJ0aWxsw6V0IGF0dCBza3JpdmEgXCJvZGVmaW5pZXJhZGVcIiBuYW1uIgorCisjOiBidWlsdGluL25vdGVzLmM6MjYKK21zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBbbGlzdCBbPG9iamVjdD5dXSIKK21zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA8YW50ZWNrbmluZ3NyZWY+XSBbbGlzdCBbPG9iamVrdD5dXSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjI3Cittc2dpZCAiIgorImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGFkZCBbLWZdIFstbSA8bXNnPiB8IC1GIDxmaWxlPiB8ICgtYyB8IC1DKSAiCisiPG9iamVjdD5dIFs8b2JqZWN0Pl0iCittc2dzdHIgIiIKKyJnaXQgbm90ZXMgWy0tcmVmIDxhbnRlY2tuaW5nc3JlZj5dIGFkZCBbLWZdIFstbSA8bWVkZD4gfCAtRiA8ZmlsPiB8ICgtYyB8IC0iCisiQykgPG9iamVrdD5dIFs8b2JqZWt0Pl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyOAorbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGNvcHkgWy1mXSA8ZnJvbS1vYmplY3Q+IDx0by1vYmplY3Q+IgorbXNnc3RyICIiCisiZ2l0IG5vdGVzIFstLXJlZiA8YW50ZWNrbmluZ3NyZWY+XSBjb3B5IFstZl0gPGZyw6VuLW9iamVrdD4gPHRpbGwtb2JqZWt0PiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjI5Cittc2dpZCAiIgorImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGFwcGVuZCBbLW0gPG1zZz4gfCAtRiA8ZmlsZT4gfCAoLWMgfCAtQykgIgorIjxvYmplY3Q+XSBbPG9iamVjdD5dIgorbXNnc3RyICIiCisiZ2l0IG5vdGVzIFstLXJlZiA8YW50ZWNrbmluZ3NyZWY+XSBhcHBlbmQgWy1tIDxtZWRkPiB8IC1GIDxmaWw+IHwgKC1jIHwgLUMpICIKKyI8b2JqZWt0Pl0gWzxvYmpla3Q+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjMwCittc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gZWRpdCBbPG9iamVjdD5dIgorbXNnc3RyICJnaXQgbm90ZXMgWy0tcmVmIDxhbnRlY2tuaW5nc3JlZj5dIGVkaXQgWzxvYmpla3Q+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjMxCittc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gc2hvdyBbPG9iamVjdD5dIgorbXNnc3RyICJnaXQgbm90ZXMgWy0tcmVmIDxhbnRlY2tuaW5nc3JlZj5dIHNob3cgWzxvYmpla3Q+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjMyCittc2dpZCAiIgorImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIG1lcmdlIFstdiB8IC1xXSBbLXMgPHN0cmF0ZWd5PiBdIDxub3Rlc19yZWY+IgorbXNnc3RyICIiCisiZ2l0IG5vdGVzIFstLXJlZiA8YW50ZWNrbmluZ3NyZWY+XSBtZXJnZSBbLXYgfCAtcV0gWy1zIDxzdHJhdGVnaT4gXSAiCisiPGFudGVja25pbmdzcmVmPiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjMzCittc2dpZCAiZ2l0IG5vdGVzIG1lcmdlIC0tY29tbWl0IFstdiB8IC1xXSIKK21zZ3N0ciAiZ2l0IG5vdGVzIG1lcmdlIC0tY29tbWl0IFstdiB8IC1xXSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjM0Cittc2dpZCAiZ2l0IG5vdGVzIG1lcmdlIC0tYWJvcnQgWy12IHwgLXFdIgorbXNnc3RyICJnaXQgbm90ZXMgbWVyZ2UgLS1hYm9ydCBbLXYgfCAtcV0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzozNQorbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHJlbW92ZSBbPG9iamVjdD4uLi5dIgorbXNnc3RyICJnaXQgbm90ZXMgWy0tcmVmIDxhbnRlY2tuaW5nc3JlZj5dIHJlbW92ZSBbPG9iamVrdD4uLi5dIgorCisjOiBidWlsdGluL25vdGVzLmM6MzYKK21zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBwcnVuZSBbLW4gfCAtdl0iCittc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPGFudGVja25pbmdzcmVmPl0gcHJ1bmUgWy1uIHwgLXZdIgorCisjOiBidWlsdGluL25vdGVzLmM6MzcKK21zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBnZXQtcmVmIgorbXNnc3RyICJnaXQgbm90ZXMgWy0tcmVmIDxhbnRlY2tuaW5nc3JlZj5dIGdldC1yZWYiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0MgorbXNnaWQgImdpdCBub3RlcyBbbGlzdCBbPG9iamVjdD5dXSIKK21zZ3N0ciAiZ2l0IG5vdGVzIFtsaXN0IFs8b2JqZWt0Pl1dIgorCisjOiBidWlsdGluL25vdGVzLmM6NDcKK21zZ2lkICJnaXQgbm90ZXMgYWRkIFs8b3B0aW9ucz5dIFs8b2JqZWN0Pl0iCittc2dzdHIgImdpdCBub3RlcyBhZGQgWzxmbGFnZ29yPl0gWzxvYmpla3Q+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjUyCittc2dpZCAiZ2l0IG5vdGVzIGNvcHkgWzxvcHRpb25zPl0gPGZyb20tb2JqZWN0PiA8dG8tb2JqZWN0PiIKK21zZ3N0ciAiZ2l0IG5vdGVzIGNvcHkgWzxmbGFnZ29yPl0gPGZyw6VuLW9iamVrdD4gPHRpbGwtb2JqZWt0PiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjUzCittc2dpZCAiZ2l0IG5vdGVzIGNvcHkgLS1zdGRpbiBbPGZyb20tb2JqZWN0PiA8dG8tb2JqZWN0Pl0uLi4iCittc2dzdHIgImdpdCBub3RlcyBjb3B5IC0tc3RkaW4gWzxmcsOlbi1vYmpla3Q+IDx0aWxsLW9iamVrdD5dLi4uIgorCisjOiBidWlsdGluL25vdGVzLmM6NTgKK21zZ2lkICJnaXQgbm90ZXMgYXBwZW5kIFs8b3B0aW9ucz5dIFs8b2JqZWN0Pl0iCittc2dzdHIgImdpdCBub3RlcyBhcHBlbmQgWzxmbGFnZ29yPl0gWzxvYmpla3Q+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjYzCittc2dpZCAiZ2l0IG5vdGVzIGVkaXQgWzxvYmplY3Q+XSIKK21zZ3N0ciAiZ2l0IG5vdGVzIGVkaXQgWzxvYmpla3Q+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjY4Cittc2dpZCAiZ2l0IG5vdGVzIHNob3cgWzxvYmplY3Q+XSIKK21zZ3N0ciAiZ2l0IG5vdGVzIHNob3cgWzxvYmpla3Q+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjczCittc2dpZCAiZ2l0IG5vdGVzIG1lcmdlIFs8b3B0aW9ucz5dIDxub3Rlc19yZWY+IgorbXNnc3RyICJnaXQgbm90ZXMgbWVyZ2UgWzxmbGFnZ29yPl0gPGFudGVja25pbmdzcmVmPiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjc0Cittc2dpZCAiZ2l0IG5vdGVzIG1lcmdlIC0tY29tbWl0IFs8b3B0aW9ucz5dIgorbXNnc3RyICJnaXQgbm90ZXMgbWVyZ2UgLS1jb21taXQgWzxmbGFnZ29yPl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3NQorbXNnaWQgImdpdCBub3RlcyBtZXJnZSAtLWFib3J0IFs8b3B0aW9ucz5dIgorbXNnc3RyICJnaXQgbm90ZXMgbWVyZ2UgLS1hYm9ydCBbPGZsYWdnb3I+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjgwCittc2dpZCAiZ2l0IG5vdGVzIHJlbW92ZSBbPG9iamVjdD5dIgorbXNnc3RyICJnaXQgbm90ZXMgcmVtb3ZlIFs8b2JqZWt0Pl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NQorbXNnaWQgImdpdCBub3RlcyBwcnVuZSBbPG9wdGlvbnM+XSIKK21zZ3N0ciAiZ2l0IG5vdGVzIHBydW5lIFs8ZmxhZ2dvcj5dIgorCisjOiBidWlsdGluL25vdGVzLmM6OTAKK21zZ2lkICJnaXQgbm90ZXMgZ2V0LXJlZiIKK21zZ3N0ciAiZ2l0IG5vdGVzIGdldC1yZWYiCisKICM6IGJ1aWx0aW4vbm90ZXMuYzoxMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHN0YXJ0ICdzaG93JyBmb3Igb2JqZWN0ICclcyciCiBtc2dzdHIgImt1bmRlIGludGUgc3RhcnRhIFwic2hvd1wiIGbDtnIgb2JqZWt0ZXQgXCIlc1wiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTQ1Ci1tc2dpZCAiY2FuJ3QgZmRvcGVuICdzaG93JyBvdXRwdXQgZmQiCi1tc2dzdHIgImt1bmRlIGludGUgw7ZwcG5hIChmZG9wZW4pIFwic2hvd1wiLXV0ZGF0YS1maWxoYW5kdGFnIgorIzogYnVpbHRpbi9ub3Rlcy5jOjE0MworbXNnaWQgImNvdWxkIG5vdCByZWFkICdzaG93JyBvdXRwdXQiCittc2dzdHIgImt1bmRlIGludGUgbMOkc2EgdXRkYXRhIGZyw6VuIFwic2hvd1wiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTU1Ci0jLCBjLWZvcm1hdAotbXNnaWQgImZhaWxlZCB0byBjbG9zZSBwaXBlIHRvICdzaG93JyBmb3Igb2JqZWN0ICclcyciCi1tc2dzdHIgImt1bmRlIGludGUgc3TDpG5nYSByw7ZyZXQgdGlsbCBcInNob3dcIiBmw7ZyIG9iamVrdGV0IFwiJXNcIiIKLQotIzogYnVpbHRpbi9ub3Rlcy5jOjE1OAorIzogYnVpbHRpbi9ub3Rlcy5jOjE1MQogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gZmluaXNoICdzaG93JyBmb3Igb2JqZWN0ICclcyciCiBtc2dzdHIgImt1bmRlIGludGUgYXZzbHV0YSBcInNob3dcIiBmw7ZyIG9iamVrdGV0IFwiJXNcIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjE3NSBidWlsdGluL3RhZy5jOjM0MworIzogYnVpbHRpbi9ub3Rlcy5jOjE2OSBidWlsdGluL3RhZy5jOjM0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIGZpbGUgJyVzJyIKIG1zZ3N0ciAia3VuZGUgaW50ZSBza2FwYSBmaWxlbiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxODkKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxODgKIG1zZ2lkICJQbGVhc2Ugc3VwcGx5IHRoZSBub3RlIGNvbnRlbnRzIHVzaW5nIGVpdGhlciAtbSBvciAtRiBvcHRpb24iCiBtc2dzdHIgIkFuZ2UgaW5uZWjDpWxsIGbDtnIgYW50ZWNrbmluZ2VuIG1lZCBhbnRpbmdlbiAtbSBlbGxlciAtRiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjIxMCBidWlsdGluL25vdGVzLmM6OTczCisjOiBidWlsdGluL25vdGVzLmM6MjA5IGJ1aWx0aW4vbm90ZXMuYzo5NzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVtb3Zpbmcgbm90ZSBmb3Igb2JqZWN0ICVzXG4iCiBtc2dzdHIgIlRhciBib3J0IGFudGVja25pbmcgZsO2ciBvYmpla3RldCAlc1xuIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjE1CisjOiBidWlsdGluL25vdGVzLmM6MjE0CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIG5vdGUgb2JqZWN0IgogbXNnc3RyICJrdW5kZSBpbnRlIHNrcml2YSBhbnRlY2tuaW5nc29iamVrdCIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjIxNworIzogYnVpbHRpbi9ub3Rlcy5jOjIxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJUaGUgbm90ZSBjb250ZW50cyBoYXMgYmVlbiBsZWZ0IGluICVzIgogbXNnc3RyICJBbnRlY2tuaW5nZW5zIGlubmVow6VsbCBoYXIgbMOkbW5hdHMga3ZhciBpICVzIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjUxIGJ1aWx0aW4vdGFnLmM6NTIxCisjOiBidWlsdGluL25vdGVzLmM6MjUwIGJ1aWx0aW4vdGFnLmM6NTQwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCByZWFkICclcyciCiBtc2dzdHIgImt1bmRlIGludGUgbMOkc2EgXCIlc1wiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjUzIGJ1aWx0aW4vdGFnLmM6NTI0CisjOiBidWlsdGluL25vdGVzLmM6MjUyIGJ1aWx0aW4vdGFnLmM6NTQzCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBvcGVuIG9yIHJlYWQgJyVzJyIKIG1zZ3N0ciAia3VuZGUgaW50ZSDDtnBwbmEgZWxsZXIgbMOkc2EgXCIlc1wiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjcyIGJ1aWx0aW4vbm90ZXMuYzo0NDUgYnVpbHRpbi9ub3Rlcy5jOjQ0NwotIzogYnVpbHRpbi9ub3Rlcy5jOjUwNyBidWlsdGluL25vdGVzLmM6NTYxIGJ1aWx0aW4vbm90ZXMuYzo2NDQKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NDkgYnVpbHRpbi9ub3Rlcy5jOjcyNCBidWlsdGluL25vdGVzLmM6NzY2Ci0jOiBidWlsdGluL25vdGVzLmM6OTY4IGJ1aWx0aW4vcmVzZXQuYzoyOTMgYnVpbHRpbi90YWcuYzo1MzcKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNzEgYnVpbHRpbi9ub3Rlcy5jOjQ0NCBidWlsdGluL25vdGVzLmM6NDQ2CisjOiBidWlsdGluL25vdGVzLmM6NTA2IGJ1aWx0aW4vbm90ZXMuYzo1NjAgYnVpbHRpbi9ub3Rlcy5jOjY0MworIzogYnVpbHRpbi9ub3Rlcy5jOjY0OCBidWlsdGluL25vdGVzLmM6NzIzIGJ1aWx0aW4vbm90ZXMuYzo3NjUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5NjcgYnVpbHRpbi90YWcuYzo1NTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgJyVzJyBhcyBhIHZhbGlkIHJlZi4iCiBtc2dzdHIgIkt1bmRlIGludGUgc2zDpSB1cHAgXCIlc1wiIHNvbSBlbiBnaWx0aWcgcmVmZXJlbnMuIgogCi0jOiBidWlsdGluL25vdGVzLmM6Mjc1CisjOiBidWlsdGluL25vdGVzLmM6Mjc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZWFkIG9iamVjdCAnJXMnLiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBsw6RzYSBvYmpla3RldCBcIiVzXCIuIgogCi0jOiBidWlsdGluL25vdGVzLmM6Mjk5CisjOiBidWlsdGluL25vdGVzLmM6Mjk4CiBtc2dpZCAiQ2Fubm90IGNvbW1pdCB1bmluaXRpYWxpemVkL3VucmVmZXJlbmNlZCBub3RlcyB0cmVlIgogbXNnc3RyICJLYW4gaW50ZSBjaGVja2EgaW4gb2luaXRpZXJhdC9vcmVmZXJlcmF0IGFudGVja25pbmdzdHLDpGQiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzozNDAKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkIG5vdGVzLnJld3JpdGVNb2RlIHZhbHVlOiAnJXMnIgogbXNnc3RyICJGZWxha3RpZ3QgdsOkcmRlIGbDtnIgbm90ZXMucmV3cml0ZU1vZGU6ICclcyciCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzozNTAKKyM6IGJ1aWx0aW4vbm90ZXMuYzozNDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVmdXNpbmcgdG8gcmV3cml0ZSBub3RlcyBpbiAlcyAob3V0c2lkZSBvZiByZWZzL25vdGVzLykiCiBtc2dzdHIgIlbDpGdyYXIgc2tyaXZhIMO2dmVyIGFudGVja25pbmdhciBpICVzICh1dGFuZsO2ciByZWZzL25vdGVzLykiCiAKICMuIFRSQU5TTEFUT1JTOiBUaGUgZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgdGhlCiAjLiBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHNlY29uZCAlcyBpcyBpdHMgdmFsdWUKLSM6IGJ1aWx0aW4vbm90ZXMuYzozNzcKKyM6IGJ1aWx0aW4vbm90ZXMuYzozNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkICVzIHZhbHVlOiAnJXMnIgogbXNnc3RyICJGZWxha3RpZ3QgdsOkcmRlIHDDpSAlczogXCIlc1wiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NDQxCisjOiBidWlsdGluL25vdGVzLmM6NDQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1hbGZvcm1lZCBpbnB1dCBsaW5lOiAnJXMnLiIKIG1zZ3N0ciAiRmVsYWt0aWcgaW5kYXRhcmFkOiBcIiVzXCIuIgogCi0jOiBidWlsdGluL25vdGVzLmM6NDU2CisjOiBidWlsdGluL25vdGVzLmM6NDU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBjb3B5IG5vdGVzIGZyb20gJyVzJyB0byAnJXMnIgogbXNnc3RyICJNaXNzbHlja2FkZXMga29waWVyYSBhbnRlY2tuaW5nYXIgZnLDpW4gXCIlc1wiIHRpbGwgXCIlc1wiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTAwIGJ1aWx0aW4vbm90ZXMuYzo1NTQgYnVpbHRpbi9ub3Rlcy5jOjYyNwotIzogYnVpbHRpbi9ub3Rlcy5jOjYzOSBidWlsdGluL25vdGVzLmM6NzEyIGJ1aWx0aW4vbm90ZXMuYzo3NTkKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxMDMzCisjOiBidWlsdGluL25vdGVzLmM6NDk5IGJ1aWx0aW4vbm90ZXMuYzo1NTMgYnVpbHRpbi9ub3Rlcy5jOjYyNgorIzogYnVpbHRpbi9ub3Rlcy5jOjYzOCBidWlsdGluL25vdGVzLmM6NzExIGJ1aWx0aW4vbm90ZXMuYzo3NTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxMDMyCiBtc2dpZCAidG9vIG1hbnkgcGFyYW1ldGVycyIKIG1zZ3N0ciAiZsO2ciBtw6VuZ2EgcGFyYW1ldHJhciIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUxMyBidWlsdGluL25vdGVzLmM6NzcyCisjOiBidWlsdGluL25vdGVzLmM6NTEyIGJ1aWx0aW4vbm90ZXMuYzo3NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gbm90ZSBmb3VuZCBmb3Igb2JqZWN0ICVzLiIKIG1zZ3N0ciAiSW5nYSBhbnRlY2tuaW5nYXIgaGl0dGFkZXMgZsO2ciBvYmpla3RldCAlcy4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1ODAKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MzQgYnVpbHRpbi9ub3Rlcy5jOjY5MQorbXNnaWQgIm5vdGUgY29udGVudHMgYXMgYSBzdHJpbmciCittc2dzdHIgImFudGVja25pbmdzaW5uZWjDpWxsIHNvbSBzdHLDpG5nIgorCisjOiBidWlsdGluL25vdGVzLmM6NTM3IGJ1aWx0aW4vbm90ZXMuYzo2OTQKK21zZ2lkICJub3RlIGNvbnRlbnRzIGluIGEgZmlsZSIKK21zZ3N0ciAiYW50ZWNrbmluZ3Npbm5laMOlbGwgaSBlbiBmaWwiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MzkgYnVpbHRpbi9ub3Rlcy5jOjU0MiBidWlsdGluL25vdGVzLmM6Njk2CisjOiBidWlsdGluL25vdGVzLmM6Njk5IGJ1aWx0aW4vdGFnLmM6NDc0Cittc2dpZCAib2JqZWN0IgorbXNnc3RyICJvYmpla3QiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NDAgYnVpbHRpbi9ub3Rlcy5jOjY5NworbXNnaWQgInJldXNlIGFuZCBlZGl0IHNwZWNpZmllZCBub3RlIG9iamVjdCIKK21zZ3N0ciAiw6V0ZXJhbnbDpG5kIG9jaCByZWRpZ2VyYSBhbmdpdmV0IGFudGVja25pbmdzb2JqZWt0IgorCisjOiBidWlsdGluL25vdGVzLmM6NTQzIGJ1aWx0aW4vbm90ZXMuYzo3MDAKK21zZ2lkICJyZXVzZSBzcGVjaWZpZWQgbm90ZSBvYmplY3QiCittc2dzdHIgIsOldGVyYW52w6RuZCBhbmdpdmV0IGFudGVja25pbmdzb2JqZWt0IgorCisjOiBidWlsdGluL25vdGVzLmM6NTQ1IGJ1aWx0aW4vbm90ZXMuYzo2MTMKK21zZ2lkICJyZXBsYWNlIGV4aXN0aW5nIG5vdGVzIgorbXNnc3RyICJlcnPDpHR0IGJlZmludGxpZ2EgYW50ZWNrbmluZ2FyIgorCisjOiBidWlsdGluL25vdGVzLmM6NTc5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDYW5ub3QgYWRkIG5vdGVzLiBGb3VuZCBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzLiBVc2UgJy1mJyB0byBvdmVyd3JpdGUgIgpAQCAtMjc1OSwxNiArNjkzMywyNCBAQAogIkthbiBpbnRlIGzDpGdnYSB0aWxsIGFudGVja25pbmdhci4gSGl0dGFkZSBiZWZpbnRsaWdhIGFudGVja25pbmdhciBmw7ZyICIKICJvYmpla3RldCAlcy4gQW52w6RuZCBcIi1mXCIgZsO2ciBhdHQgc2tyaXZhIMO2dmVyIGJlZmludGxpZ2EgYW50ZWNrbmluZ2FyIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTg1IGJ1aWx0aW4vbm90ZXMuYzo2NjIKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1ODQgYnVpbHRpbi9ub3Rlcy5jOjY2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJPdmVyd3JpdGluZyBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzXG4iCiBtc2dzdHIgIlNrcml2ZXIgw7Z2ZXIgYmVmaW50bGlnYSBhbnRlY2tuaW5nYXIgZsO2ciBvYmpla3RldCAlc1xuIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjM1CisjOiBidWlsdGluL25vdGVzLmM6NjE0Cittc2dpZCAicmVhZCBvYmplY3RzIGZyb20gc3RkaW4iCittc2dzdHIgImzDpHMgb2JqZWt0IGZyw6VuIHN0YW5kYXJkIGluIgorCisjOiBidWlsdGluL25vdGVzLmM6NjE2Cittc2dpZCAibG9hZCByZXdyaXRpbmcgY29uZmlnIGZvciA8Y29tbWFuZD4gKGltcGxpZXMgLS1zdGRpbikiCittc2dzdHIgImzDpHMgb21za3Jpdm5pbmdzaW5zdMOkbGxuaW5nIGbDtnIgPGtvbW1hbmRvPiAoaW1wbGljZXJhciAtLXN0ZGluKSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjYzNAogbXNnaWQgInRvbyBmZXcgcGFyYW1ldGVycyIKIG1zZ3N0ciAiZsO2ciBmw6UgcGFyYW1ldHJhciIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjY1NgorIzogYnVpbHRpbi9ub3Rlcy5jOjY1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ2Fubm90IGNvcHkgbm90ZXMuIEZvdW5kIGV4aXN0aW5nIG5vdGVzIGZvciBvYmplY3QgJXMuIFVzZSAnLWYnIHRvIG92ZXJ3cml0ZSAiCkBAIC0yNzc3LDEyICs2OTU5LDEyIEBACiAiS2FuIGludGUga29waWVyYSBhbnRlY2tuaW5nYXIuIEhpdHRhZGUgYmVmaW50bGlnYSBhbnRlY2tuaW5nYXIgZsO2ciBvYmpla3RldCAiCiAiJXMuIEFudsOkbmQgXCItZlwiIGbDtnIgYXR0IHNrcml2YSDDtnZlciBiZWZpbnRsaWdhIGFudGVja25pbmdhciIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjY2OAorIzogYnVpbHRpbi9ub3Rlcy5jOjY2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJNaXNzaW5nIG5vdGVzIG9uIHNvdXJjZSBvYmplY3QgJXMuIENhbm5vdCBjb3B5LiIKIG1zZ3N0ciAiQW50ZWNrbmluZ2FyIHDDpSBrw6RsbG9iamVrdGV0ICVzIHNha25hcy4gS2FuIGludGUga29waWVyYS4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo3MTcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSAtbS8tRi8tYy8tQyBvcHRpb25zIGhhdmUgYmVlbiBkZXByZWNhdGVkIGZvciB0aGUgJ2VkaXQnIHN1YmNvbW1hbmQuXG4iCkBAIC0yNzkxLDM2ICs2OTczLDI1NSBAQAogIkZsYWdnb3JuYSAtbS8tRi8tYy8tQyByZWtvbW1lbmRlcmFzIGludGUgZsO2ciB1bmRlcmtvbW1hbmRvdCBcImVkaXRcIi5cbiIKICJBbnbDpG5kIFwiZ2l0IG5vdGVzIGFkZCAtZiAtbS8tRi8tYy8tQ1wiIGlzdMOkbGxldC5cbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjk3MQorIzogYnVpbHRpbi9ub3Rlcy5jOjg2MworbXNnaWQgIkdlbmVyYWwgb3B0aW9ucyIKK21zZ3N0ciAiQWxsbcOkbm5hIGZsYWdnb3IiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NjUKK21zZ2lkICJNZXJnZSBvcHRpb25zIgorbXNnc3RyICJGbGFnZ29yIGbDtnIgc2FtbWFuc2xhZ25pbmciCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NjcKK21zZ2lkICIiCisicmVzb2x2ZSBub3RlcyBjb25mbGljdHMgdXNpbmcgdGhlIGdpdmVuIHN0cmF0ZWd5IChtYW51YWwvb3Vycy90aGVpcnMvdW5pb24vIgorImNhdF9zb3J0X3VuaXEpIgorbXNnc3RyICIiCisibMOkcyBrb25mbGlrdGVyIGkgYW50ZWNrbmluZ2FyIG1lZCBhbmdpdmVuIHN0cmF0ZWdpIChtYW51YWwvb3Vycy90aGVpcnMvdW5pb24vIgorImNhdF9zb3J0X3VuaXEpIgorCisjOiBidWlsdGluL25vdGVzLmM6ODY5Cittc2dpZCAiQ29tbWl0dGluZyB1bm1lcmdlZCBub3RlcyIKK21zZ3N0ciAiQ2hlY2thciBpbiBlaiBzYW1tYW5zbGFnbmEgYW50ZWNrbmluZ2FyIgorCisjOiBidWlsdGluL25vdGVzLmM6ODcxCittc2dpZCAiZmluYWxpemUgbm90ZXMgbWVyZ2UgYnkgY29tbWl0dGluZyB1bm1lcmdlZCBub3RlcyIKK21zZ3N0ciAiIgorImbDpHJkaWdzdMOkbGwgc2FtbWFuc2xhZ25pbmcgYXYgYW50ZWNrbmluZ2FyIGdlbm9tIGF0dCBjaGVja2EgaW4gZWogIgorInNhbW1hbnNsYWduYSBhbnRlY2tuaW5nYXIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NzMKK21zZ2lkICJBYm9ydGluZyBub3RlcyBtZXJnZSByZXNvbHV0aW9uIgorbXNnc3RyICJBdmJyeXQgbMO2c25pbmcgYXYgc2FtbWFuc2xhZ25pbmcgYXYgYW50ZWNrbmluZ2FyIgorCisjOiBidWlsdGluL25vdGVzLmM6ODc1Cittc2dpZCAiYWJvcnQgbm90ZXMgbWVyZ2UiCittc2dzdHIgImF2YnJ5dCBzYW1tYW5zbGFnbmluZyBhdiBhbnRlY2tuaW5nYXIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiT2JqZWN0ICVzIGhhcyBubyBub3RlXG4iCiBtc2dzdHIgIk9iamVrdGV0ICVzIGhhciBpbmdlbiBhbnRlY2tuaW5nXG4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxMTAzCisjOiBidWlsdGluL25vdGVzLmM6OTgyCittc2dpZCAiYXR0ZW1wdCB0byByZW1vdmUgbm9uLWV4aXN0ZW50IG5vdGUgaXMgbm90IGFuIGVycm9yIgorbXNnc3RyICJmw7Zyc8O2ayBhdHQgdGEgYm9ydCBpY2tlLWV4aXN0ZXJhbmRlIGFudGVja25pbmdhciDDpHIgaW50ZSBldHQgZmVsIgorCisjOiBidWlsdGluL25vdGVzLmM6OTg1Cittc2dpZCAicmVhZCBvYmplY3QgbmFtZXMgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCittc2dzdHIgImzDpHMgb2JqZWt0bmFtbiBmcsOlbiBzdGFuZGFyZCBpbiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjEwNjYKK21zZ2lkICJub3Rlc19yZWYiCittc2dzdHIgImFudGVja25pbmdhci1yZWYiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxMDY3Cittc2dpZCAidXNlIG5vdGVzIGZyb20gPG5vdGVzX3JlZj4iCittc2dzdHIgImFudsOkbmQgYW50ZWNrbmluZ2FyIGZyw6VuIDxhbnRlY2tuaW5nc3JlZj4iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxMTAyIGJ1aWx0aW4vcmVtb3RlLmM6MTU5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIHN1YmNvbW1hbmQ6ICVzIgogbXNnc3RyICJPa8OkbnQgdW5kZXJrb21tYW5kbzogJXMiCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjMxNQorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyMworbXNnaWQgImdpdCBwYWNrLW9iamVjdHMgLS1zdGRvdXQgW29wdGlvbnMuLi5dIFs8IHJlZi1saXN0IHwgPCBvYmplY3QtbGlzdF0iCittc2dzdHIgImdpdCBwYWNrLW9iamVjdHMgLS1zdGRvdXQgW2ZsYWdnb3IuLi5dIFs8IHJlZmxpc3RhIHwgPCBvYmpla3RsaXN0YV0iCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQKK21zZ2lkICJnaXQgcGFjay1vYmplY3RzIFtvcHRpb25zLi4uXSBiYXNlLW5hbWUgWzwgcmVmLWxpc3QgfCA8IG9iamVjdC1saXN0XSIKK21zZ3N0ciAiZ2l0IHBhY2stb2JqZWN0cyBbZmxhZ2dvci4uLl0gYmFzbmFtbiBbPCByZWZsaXN0YSB8IDwgb2JqZWt0bGlzdGFdIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjE4MyBidWlsdGluL3BhY2stb2JqZWN0cy5jOjE4NgorIywgYy1mb3JtYXQKK21zZ2lkICJkZWZsYXRlIGVycm9yICglZCkiCittc2dzdHIgImZlbCBpIGRlZmxhdGUgKCVkKSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyMzk3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuc3VwcG9ydGVkIGluZGV4IHZlcnNpb24gJXMiCiBtc2dzdHIgImluZGV4dmVyc2lvbmVuICVzIHN0w7ZkcyBlaiIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyMzE5CisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIGluZGV4IHZlcnNpb24gJyVzJyIKIG1zZ3N0ciAiZmVsYWt0aWcgaW5kZXh2ZXJzaW9uIFwiJXNcIiIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyMzQyCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0MjQKICMsIGMtZm9ybWF0CiBtc2dpZCAib3B0aW9uICVzIGRvZXMgbm90IGFjY2VwdCBuZWdhdGl2ZSBmb3JtIgogbXNnc3RyICJmbGFnZ2FuICVzIGdvZHRhciBpbnRlIG5lZ2F0aXYgZm9ybSIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyMzQ2CisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0MjgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHBhcnNlIHZhbHVlICclcycgZm9yIG9wdGlvbiAlcyIKIG1zZ3N0ciAia3VuZGUgaW50ZSB0b2xrYSB2w6RyZGV0IFwiJXNcIiBmw7ZyIGZsYWdnYW4gJXMiCiAKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ0NworbXNnaWQgImRvIG5vdCBzaG93IHByb2dyZXNzIG1ldGVyIgorbXNnc3RyICJ2aXNhIGludGUgZsO2cmxvcHBzaW5kaWthdG9yIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NDkKK21zZ2lkICJzaG93IHByb2dyZXNzIG1ldGVyIgorbXNnc3RyICJ2aXNhIGbDtnJsb3Bwc2luZGlrYXRvciIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDUxCittc2dpZCAic2hvdyBwcm9ncmVzcyBtZXRlciBkdXJpbmcgb2JqZWN0IHdyaXRpbmcgcGhhc2UiCittc2dzdHIgInZpc2EgZsO2cmxvcHBzaW5kaWthdG9yIHVuZGVyIG9iamVrdHNrcml2bmluZ3NmYXNlbiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDU0Cittc2dpZCAic2ltaWxhciB0byAtLWFsbC1wcm9ncmVzcyB3aGVuIHByb2dyZXNzIG1ldGVyIGlzIHNob3duIgorbXNnc3RyICJzb20gLS1hbGwtcHJvZ3Jlc3MgbsOkciBmw7ZybG9wcHNtw6R0YXJlbiB2aXNhcyIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDU1Cittc2dpZCAidmVyc2lvblssb2Zmc2V0XSIKK21zZ3N0ciAidmVyc2lvblssb2Zmc2V0XSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDU2Cittc2dpZCAid3JpdGUgdGhlIHBhY2sgaW5kZXggZmlsZSBpbiB0aGUgc3BlY2lmaWVkIGlkeCBmb3JtYXQgdmVyc2lvbiIKK21zZ3N0ciAic2tyaXYgcGFrZXRpbmRleGZpbGVuIGkgYW5naXZlbiBpbmRleGZvcm1hdHZlcnNpb24iCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ1OQorbXNnaWQgIm1heGltdW0gc2l6ZSBvZiBlYWNoIG91dHB1dCBwYWNrIGZpbGUiCittc2dzdHIgIm1heGltYWwgc3RvcmxlayBww6UgdmFyamUgdXRkYXRhcGFrZXRmaWwiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ2MQorbXNnaWQgImlnbm9yZSBib3Jyb3dlZCBvYmplY3RzIGZyb20gYWx0ZXJuYXRlIG9iamVjdCBzdG9yZSIKK21zZ3N0ciAiaWdub3JlcmEgbMOlbmFkZSBvYmpla3QgZnLDpW4gYWx0ZXJuYXRpdmEgb2JqZWt0bGFnZXIiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ2MworbXNnaWQgImlnbm9yZSBwYWNrZWQgb2JqZWN0cyIKK21zZ3N0ciAiaWdub3JlcmEgcGFja2FkZSBvYmpla3QiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ2NQorbXNnaWQgImxpbWl0IHBhY2sgd2luZG93IGJ5IG9iamVjdHMiCittc2dzdHIgImJlZ3LDpG5zYSBwYWtldGbDtm5zdGVyIGVmdGVyIG9iamVrdCIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDY3Cittc2dpZCAibGltaXQgcGFjayB3aW5kb3cgYnkgbWVtb3J5IGluIGFkZGl0aW9uIHRvIG9iamVjdCBsaW1pdCIKK21zZ3N0ciAiYmVncsOkbnNhIHBha2V0ZsO2bnN0ZXIgZWZ0ZXIgbWlubmUgZsO2cnV0b20gb2JqZWt0Z3LDpG5zIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NjkKK21zZ2lkICJtYXhpbXVtIGxlbmd0aCBvZiBkZWx0YSBjaGFpbiBhbGxvd2VkIGluIHRoZSByZXN1bHRpbmcgcGFjayIKK21zZ3N0ciAibWF4aW1hbCBsw6RuZ2QgcMOlIGRlbHRha2VkamEgdGlsbMOldGVuIGkgc2x1dGxpZ3QgcGFrZXQiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ3MQorbXNnaWQgInJldXNlIGV4aXN0aW5nIGRlbHRhcyIKK21zZ3N0ciAiw6V0ZXJhbnbDpG5kIGJlZmludGxpZ2EgZGVsdGEiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ3MworbXNnaWQgInJldXNlIGV4aXN0aW5nIG9iamVjdHMiCittc2dzdHIgIsOldGVyYW52w6RuZCBiZWZpbnRsaWdhIG9iamVrdCIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDc1Cittc2dpZCAidXNlIE9GU19ERUxUQSBvYmplY3RzIgorbXNnc3RyICJhbnbDpG5kIE9GU19ERUxUQS1vYmpla3QiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ3NworbXNnaWQgInVzZSB0aHJlYWRzIHdoZW4gc2VhcmNoaW5nIGZvciBiZXN0IGRlbHRhIG1hdGNoZXMiCittc2dzdHIgImFudsOkbmQgdHLDpWRhciB2aWQgc8O2a25pbmcgZWZ0ZXIgYsOkc3RhIGRlbHRhdHLDpGZmYXIiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ3OQorbXNnaWQgImRvIG5vdCBjcmVhdGUgYW4gZW1wdHkgcGFjayBvdXRwdXQiCittc2dzdHIgImbDtnJzw7ZrIGludGUgc2thcGEgdG9tIHBha2V0dXRkYXRhIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0ODEKK21zZ2lkICJyZWFkIHJldmlzaW9uIGFyZ3VtZW50cyBmcm9tIHN0YW5kYXJkIGlucHV0IgorbXNnc3RyICJsw6RzIHJldmlzaW9uc2FyZ3VtZW50IGZyw6VuIHN0YW5kYXJkIGluIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0ODMKK21zZ2lkICJsaW1pdCB0aGUgb2JqZWN0cyB0byB0aG9zZSB0aGF0IGFyZSBub3QgeWV0IHBhY2tlZCIKK21zZ3N0ciAiYmVncsOkbnNhIG9iamVrdCB0aWxsIGRlIHNvbSDDpG5udSBpbnRlIHBhY2thdHMiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ4NgorbXNnaWQgImluY2x1ZGUgb2JqZWN0cyByZWFjaGFibGUgZnJvbSBhbnkgcmVmZXJlbmNlIgorbXNnc3RyICJpbmtsdWRlcmEgb2JqZWt0IHNvbSBrYW4gbsOlcyBmcsOlbiBuw6Vnb24gcmVmZXJlbnMiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ4OQorbXNnaWQgImluY2x1ZGUgb2JqZWN0cyByZWZlcnJlZCBieSByZWZsb2cgZW50cmllcyIKK21zZ3N0ciAiaW5rbHVkZXJhIG9iamVrdCBzb20gcmVmZXJlcmFzIGZyw6VuIHJlZmVyZW5zbG9nZ3Bvc3RlciIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDkyCittc2dpZCAib3V0cHV0IHBhY2sgdG8gc3Rkb3V0IgorbXNnc3RyICJza3JpdiBwYWtldCBww6Ugc3RhbmRhcmQgdXQiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ5NAorbXNnaWQgImluY2x1ZGUgdGFnIG9iamVjdHMgdGhhdCByZWZlciB0byBvYmplY3RzIHRvIGJlIHBhY2tlZCIKK21zZ3N0ciAiaW5rbHVkZXJhIHRhZ2dvYmpla3Qgc29tIHJlZmVyZXJhciBvYmpla3Qgc29tIHNrYWxsIHBhY2thcyIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDk2Cittc2dpZCAia2VlcCB1bnJlYWNoYWJsZSBvYmplY3RzIgorbXNnc3RyICJiZWjDpWxsIG9uw6ViYXJhIG9iamVrdCIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDk3IHBhcnNlLW9wdGlvbnMuaDoxNDEKK21zZ2lkICJ0aW1lIgorbXNnc3RyICJ0aWQiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ5OAorbXNnaWQgInVucGFjayB1bnJlYWNoYWJsZSBvYmplY3RzIG5ld2VyIHRoYW4gPHRpbWU+IgorbXNnc3RyICJwYWNrYSB1cHAgb27DpWJhcmEgb2JqZWt0IG55YXJlIMOkbiA8dGlkPiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNTAxCittc2dpZCAiY3JlYXRlIHRoaW4gcGFja3MiCittc2dzdHIgInNrYXBhIHR1bm5hIHBha2V0IgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI1MDMKK21zZ2lkICJpZ25vcmUgcGFja3MgdGhhdCBoYXZlIGNvbXBhbmlvbiAua2VlcCBmaWxlIgorbXNnc3RyICJpZ25vcmVyYSBwYWtldCBzb20gaGFyIHRpbGxow7ZyYW5kZSAua2VlcC1maWwiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjUwNQorbXNnaWQgInBhY2sgY29tcHJlc3Npb24gbGV2ZWwiCittc2dzdHIgImtvbXByaW1lcmluZ3NncmFkIGbDtnIgcGFrZXQiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjUwNworbXNnaWQgImRvIG5vdCBoaWRlIGNvbW1pdHMgYnkgZ3JhZnRzIgorbXNnc3RyICJnw7ZtIGludGUgaW5jaGVja25pbmdhciBtZWQgeW1wbmluZ2FyIChcImdyYWZ0c1wiKSIKKworIzogYnVpbHRpbi9wYWNrLXJlZnMuYzo2Cittc2dpZCAiZ2l0IHBhY2stcmVmcyBbb3B0aW9uc10iCittc2dzdHIgImdpdCBwYWNrLXJlZnMgW2ZsYWdnb3JdIgorCisjOiBidWlsdGluL3BhY2stcmVmcy5jOjE0Cittc2dpZCAicGFjayBldmVyeXRoaW5nIgorbXNnc3RyICJwYWNrYSBhbGx0IgorCisjOiBidWlsdGluL3BhY2stcmVmcy5jOjE1Cittc2dpZCAicHJ1bmUgbG9vc2UgcmVmcyAoZGVmYXVsdCkiCittc2dzdHIgInRhIGJvcnQgbMO2c2EgcmVmZXJlbnNlciAoc3RhbmRhcmQpIgorCisjOiBidWlsdGluL3BydW5lLXBhY2tlZC5jOjcKK21zZ2lkICJnaXQgcHJ1bmUtcGFja2VkIFstbnwtLWRyeS1ydW5dIFstcXwtLXF1aWV0XSIKK21zZ3N0ciAiZ2l0IHBydW5lLXBhY2tlZCBbLW58LS1kcnktcnVuXSBbLXF8LS1xdWlldF0iCisKKyM6IGJ1aWx0aW4vcHJ1bmUuYzoxMgorbXNnaWQgImdpdCBwcnVuZSBbLW5dIFstdl0gWy0tZXhwaXJlIDx0aW1lPl0gWy0tXSBbPGhlYWQ+Li4uXSIKK21zZ3N0ciAiZ2l0IHBydW5lIFstbl0gWy12XSBbLS1leHBpcmUgPHRpZD5dIFstLV0gWzxodXZ1ZD4uLi5dIgorCisjOiBidWlsdGluL3BydW5lLmM6MTMyCittc2dpZCAiZG8gbm90IHJlbW92ZSwgc2hvdyBvbmx5IgorbXNnc3RyICJ0YSBpbnRlIGJvcnQsIGJhcmEgdmlzYSIKKworIzogYnVpbHRpbi9wcnVuZS5jOjEzMworbXNnaWQgInJlcG9ydCBwcnVuZWQgb2JqZWN0cyIKK21zZ3N0ciAicmFwcG9ydGVyYSBib3J0dGFnbmEgb2JqZWt0IgorCisjOiBidWlsdGluL3BydW5lLmM6MTM2Cittc2dpZCAiZXhwaXJlIG9iamVjdHMgb2xkZXIgdGhhbiA8dGltZT4iCittc2dzdHIgImzDpXQgdGlkIGfDpSB1dCBmw7ZyIG9iamVrdCDDpGxkcmUgw6RuIDx0aWQ+IgorCisjOiBidWlsdGluL3B1c2guYzoxNAorbXNnaWQgImdpdCBwdXNoIFs8b3B0aW9ucz5dIFs8cmVwb3NpdG9yeT4gWzxyZWZzcGVjPi4uLl1dIgorbXNnc3RyICJnaXQgcHVzaCBbPGZsYWdnb3I+XSBbPGFya2l2PiBbPHJlZnNwZWM+Li4uXV0iCisKICM6IGJ1aWx0aW4vcHVzaC5jOjQ1CiBtc2dpZCAidGFnIHNob3J0aGFuZCB3aXRob3V0IDx0YWc+IgogbXNnc3RyICJ0YWdnZsO2cmtvcnRuaW5nIHV0YW4gPHRhZ2c+IgpAQCAtMjgyOSw3ICs3MjMwLDQxIEBACiBtc2dpZCAiLS1kZWxldGUgb25seSBhY2NlcHRzIHBsYWluIHRhcmdldCByZWYgbmFtZXMiCiBtc2dzdHIgIi0tZGVsZXRlIGdvZHRhciBlbmRhc3QgZW5rbGEgbcOlbHJlZmVyZW5zbmFtbiIKIAotIzogYnVpbHRpbi9wdXNoLmM6ODQKKyM6IGJ1aWx0aW4vcHVzaC5jOjk5Cittc2dpZCAiIgorIlxuIgorIlRvIGNob29zZSBlaXRoZXIgb3B0aW9uIHBlcm1hbmVudGx5LCBzZWUgcHVzaC5kZWZhdWx0IGluICdnaXQgaGVscCBjb25maWcnLiIKK21zZ3N0ciAiIgorIlxuIgorIkbDtnIgYXR0IHbDpGxqYSBldHQgYXYgYWx0ZXJuYXRpdmVuIHBlcm1hbmVudCwgc2UgcHVzaC5kZWZhdWx0IGkgXCJnaXQgaGVscCAiCisiY29uZmlnXCIuIgorCisjOiBidWlsdGluL3B1c2guYzoxMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSB1cHN0cmVhbSBicmFuY2ggb2YgeW91ciBjdXJyZW50IGJyYW5jaCBkb2VzIG5vdCBtYXRjaFxuIgorInRoZSBuYW1lIG9mIHlvdXIgY3VycmVudCBicmFuY2guICBUbyBwdXNoIHRvIHRoZSB1cHN0cmVhbSBicmFuY2hcbiIKKyJvbiB0aGUgcmVtb3RlLCB1c2VcbiIKKyJcbiIKKyIgICAgZ2l0IHB1c2ggJXMgSEVBRDolc1xuIgorIlxuIgorIlRvIHB1c2ggdG8gdGhlIGJyYW5jaCBvZiB0aGUgc2FtZSBuYW1lIG9uIHRoZSByZW1vdGUsIHVzZVxuIgorIlxuIgorIiAgICBnaXQgcHVzaCAlcyAlc1xuIgorIiVzIgorbXNnc3RyICIiCisiVXBwc3Ryw7Ztc2dyZW5lbiBmw7ZyIGRpbiBudXZhcmFuZGUgZ3JlbiBzdMOkbW1lciBpbnRlIMO2dmVyZW5zXG4iCisibWVkIG5hbW5ldCBww6UgZGluIGFrdHVlbGxhIGdyZW4uIEbDtnIgYXR0IHPDpG5kYSB0aWxsIHVwcHN0csO2bXNncmVuZW5cbiIKKyJpIGZqw6RycmFya2l2ZXQgYW52w6RuZGVyIGR1XG4iCisiXG4iCisiICAgIGdpdCBwdXNoICVzIEhFQUQ6JXNcbiIKKyJcbiIKKyJGw7ZyIGF0dCBzw6RuZGEgdGlsbCBncmVuZW4gbWVkIHNhbW1hIG5hbW4gaSBmasOkcnJhcmtpdmV0IGFudsOkbmRlciBkdVxuIgorIlxuIgorIiAgICBnaXQgcHVzaCAlcyAlc1xuIgorIiVzIgorCisjOiBidWlsdGluL3B1c2guYzoxMjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIllvdSBhcmUgbm90IGN1cnJlbnRseSBvbiBhIGJyYW5jaC5cbiIKQEAgLTI4NDQsNyArNzI3OSw3IEBACiAiXG4iCiAiICAgIGdpdCBwdXNoICVzIEhFQUQ6PG5hbW4tcMOlLWZqw6RycmdyZW4+XG4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjkxCisjOiBidWlsdGluL3B1c2guYzoxMjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSBjdXJyZW50IGJyYW5jaCAlcyBoYXMgbm8gdXBzdHJlYW0gYnJhbmNoLlxuIgpAQCAtMjg1NywxMiArNzI5MiwxMiBAQAogIlxuIgogIiAgICBnaXQgcHVzaCAtLXNldC11cHN0cmVhbSAlcyAlc1xuIgogCi0jOiBidWlsdGluL3B1c2guYzo5OQorIzogYnVpbHRpbi9wdXNoLmM6MTM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlRoZSBjdXJyZW50IGJyYW5jaCAlcyBoYXMgbXVsdGlwbGUgdXBzdHJlYW0gYnJhbmNoZXMsIHJlZnVzaW5nIHRvIHB1c2guIgogbXNnc3RyICJEZW4gYWt0dWVsbGEgZ3JlbmVuICVzIGhhciBmbGVyYSB1cHBzdHLDtm1zZ3JlbmFyLCB2w6RncmFyIHPDpG5kYS4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjEwMgorIzogYnVpbHRpbi9wdXNoLmM6MTM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIHB1c2hpbmcgdG8gcmVtb3RlICclcycsIHdoaWNoIGlzIG5vdCB0aGUgdXBzdHJlYW0gb2ZcbiIKQEAgLTI4NzMsMTQgKzczMDgsNDggQEAKICJha3R1ZWxsYSBncmVuZW4gXCIlc1wiLCB1dGFuIGF0dCB0YWxhIG9tIGbDtnIgbWlnIHZhZCBzb21cbiIKICJza2FsbCBzw6RuZGFzIGbDtnIgYXR0IHVwcGRhdGVyYSBmasOkcnJncmVuZW4uIgogCi0jOiBidWlsdGluL3B1c2guYzoxMzEKKyM6IGJ1aWx0aW4vcHVzaC5jOjE1MQorbXNnaWQgIiIKKyJwdXNoLmRlZmF1bHQgaXMgdW5zZXQ7IGl0cyBpbXBsaWNpdCB2YWx1ZSBpcyBjaGFuZ2luZyBpblxuIgorIkdpdCAyLjAgZnJvbSAnbWF0Y2hpbmcnIHRvICdzaW1wbGUnLiBUbyBzcXVlbGNoIHRoaXMgbWVzc2FnZVxuIgorImFuZCBtYWludGFpbiB0aGUgY3VycmVudCBiZWhhdmlvciBhZnRlciB0aGUgZGVmYXVsdCBjaGFuZ2VzLCB1c2U6XG4iCisiXG4iCisiICBnaXQgY29uZmlnIC0tZ2xvYmFsIHB1c2guZGVmYXVsdCBtYXRjaGluZ1xuIgorIlxuIgorIlRvIHNxdWVsY2ggdGhpcyBtZXNzYWdlIGFuZCBhZG9wdCB0aGUgbmV3IGJlaGF2aW9yIG5vdywgdXNlOlxuIgorIlxuIgorIiAgZ2l0IGNvbmZpZyAtLWdsb2JhbCBwdXNoLmRlZmF1bHQgc2ltcGxlXG4iCisiXG4iCisiU2VlICdnaXQgaGVscCBjb25maWcnIGFuZCBzZWFyY2ggZm9yICdwdXNoLmRlZmF1bHQnIGZvciBmdXJ0aGVyICIKKyJpbmZvcm1hdGlvbi5cbiIKKyIodGhlICdzaW1wbGUnIG1vZGUgd2FzIGludHJvZHVjZWQgaW4gR2l0IDEuNy4xMS4gVXNlIHRoZSBzaW1pbGFyIG1vZGVcbiIKKyInY3VycmVudCcgaW5zdGVhZCBvZiAnc2ltcGxlJyBpZiB5b3Ugc29tZXRpbWVzIHVzZSBvbGRlciB2ZXJzaW9ucyBvZiBHaXQpIgorbXNnc3RyICIiCisicHVzaC5kZWZhdWx0IGhhciBpbnRlIHN0w6RsbHRzIGluOyBkZXNzIHVuZGVyZsO2cnN0w6VkZGEgdsOkcmRlXG4iCisiw6RuZHJhcyBpIEdpdCAyLjAgZnLDpW4gXCJtYXRjaGluZ1wiIHRpbGwgXCJzaW1wbGVcIi4gRsO2ciBhdHRcbiIKKyJ1bmRlcnRyeWNrYSBkZXQgaMOkciBtZWRkZWxhbmRldCBvY2ggYmVow6VsbGEgbnV2YXJhbmRlIGJldGVlbmRlXG4iCisiZWZ0ZXIgYXR0IGbDtnJ2YWxldCDDpG5kcmFzLFxuIgorInNrcml2ZXIgZHU6XG4iCisiXG4iCisiICBnaXQgY29uZmlnIC0tZ2xvYmFsIHB1c2guZGVmYXVsdCBtYXRjaGluZ1xuIgorIlxuIgorIkbDtnIgYXR0IHVuZGVydHJ5Y2thIG1lZGRlbGFuZGV0IG9jaCB2w6RsamEgZGV0IG55YSBiZXRlZW5kZXQgbnUgc2tyaXZlciBkdTpcbiIKKyJcbiIKKyIgIGdpdCBjb25maWcgLS1nbG9iYWwgcHVzaC5kZWZhdWx0IHNpbXBsZVxuIgorIlxuIgorIlNlIFwiZ2l0IGhlbHAgY29uZmlnXCIgb2NoIHPDtmsgZWZ0ZXIgXCJwdXNoLmRlZmF1bHRcIiBmw7ZyIHl0dGVybGlnYXJlIFxuIgorImluZm9ybWF0aW9uLiAoTMOkZ2V0IFwic2ltcGxlXCIgaW50cm9kdWNlcmFkZXMgaSBHaXQgMS43LjExLiBBbnbDpG5kIGRldFxuIgorImxpa25hbmRlIGzDpGdldCBcImN1cnJlbnRcIiBpc3TDpGxsZXQgZsO2ciBcInNpbXBsZVwiIG9tIGR1IGlibGFuZCBhbnbDpG5kZXJcbiIKKyLDpGxkcmUgdmVyc2lvbmVyIGF2IEdpdC4pIgorCisjOiBidWlsdGluL3B1c2guYzoxOTkKIG1zZ2lkICIiCiAiWW91IGRpZG4ndCBzcGVjaWZ5IGFueSByZWZzcGVjcyB0byBwdXNoLCBhbmQgcHVzaC5kZWZhdWx0IGlzIFwibm90aGluZ1wiLiIKIG1zZ3N0ciAiIgogIkR1IGFuZ2F2IGluZ2EgcmVmZXJlbnNzcGVjaWZpa2F0aW9uZXIgYXR0IHPDpG5kYSwgb2NoIHB1c2guZGVmYXVsdCDDpHIgIgogIlwibm90aGluZ1wiLiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MTM4CisjOiBidWlsdGluL3B1c2guYzoyMDYKIG1zZ2lkICIiCiAiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgdGhlIHRpcCBvZiB5b3VyIGN1cnJlbnQgYnJhbmNoIGlzIGJlaGluZFxuIgogIml0cyByZW1vdGUgY291bnRlcnBhcnQuIE1lcmdlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLiAnZ2l0IHB1bGwnKVxuIgpAQCAtMjg5MiwyMCArNzM2MSwyMSBAQAogImlubmFuIGR1IHPDpG5kZXIgaWdlbi5cbiIKICJTZSBhdnNuaXR0ZXQgXCJOb3RlIGFib3V0IGZhc3QtZm9yd2FyZFwiIGkgXCJnaXQgcHVzaCAtLWhlbHBcIiBmw7ZyIGRldGFsamVyLiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MTQ0CisjOiBidWlsdGluL3B1c2guYzoyMTIKIG1zZ2lkICIiCiAiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgYSBwdXNoZWQgYnJhbmNoIHRpcCBpcyBiZWhpbmQgaXRzIHJlbW90ZVxuIgogImNvdW50ZXJwYXJ0LiBJZiB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gcHVzaCB0aGF0IGJyYW5jaCwgeW91IG1heSB3YW50IHRvXG4iCi0ic3BlY2lmeSBicmFuY2hlcyB0byBwdXNoIG9yIHNldCB0aGUgJ3B1c2guZGVmYXVsdCcgY29uZmlndXJhdGlvblxuIgotInZhcmlhYmxlIHRvICdjdXJyZW50JyBvciAndXBzdHJlYW0nIHRvIHB1c2ggb25seSB0aGUgY3VycmVudCBicmFuY2guIgorInNwZWNpZnkgYnJhbmNoZXMgdG8gcHVzaCBvciBzZXQgdGhlICdwdXNoLmRlZmF1bHQnIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVcbiIKKyJ0byAnc2ltcGxlJywgJ2N1cnJlbnQnIG9yICd1cHN0cmVhbScgdG8gcHVzaCBvbmx5IHRoZSBjdXJyZW50IGJyYW5jaC4iCiBtc2dzdHIgIiIKICJVcHBkYXRlcmluZ2FyIGF2dmlzYWRlcyBkw6Ugw6RuZGVuIHDDpSBlbiBpbnPDpG5kIGdyZW4gw6RyIGJha29tIGRlc3NcbiIKICJmasOkcnJtb3RzdmFyaWdoZXQuIE9tIGRldCBpbnRlIHZhciBtZW5pbmdlbiBhdHQgc8OkbmRhIGluIGdyZW5lbiwgYsO2clxuIgogImR1IHNwZWNpZmljZXJhIGdyZW5hciBhdHQgc8OkbmRhLCBlbGxlciDDpG5kcmEgaW5zdMOkbGxuaW5nc3ZhcmlhYmVsblxuIgotIlwicHVzaC1kZWZhdWx0XCIgdGlsbCBcImN1cnJlbnRcIiBlbGxlciBcInVwc3RyZWFtXCIgZsO2ciBhdHQgZW5kYXN0IHPDpG5kYVxuIgotImFrdHVlbGwgZ3Jlbi4iCisiXCJwdXNoLWRlZmF1bHRcIiB0aWxsIFwic2ltcGxlXCIsIFwiY3VycmVudFwiIGVsbGVyIFwidXBzdHJlYW1cIiBmw7ZyIGF0dCAiCisiZW5kYXN0XG4iCisic8OkbmRhIGFrdHVlbGwgZ3Jlbi4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjE1MAorIzogYnVpbHRpbi9wdXNoLmM6MjE4CiBtc2dpZCAiIgogIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIGEgcHVzaGVkIGJyYW5jaCB0aXAgaXMgYmVoaW5kIGl0cyByZW1vdGVcbiIKICJjb3VudGVycGFydC4gQ2hlY2sgb3V0IHRoaXMgYnJhbmNoIGFuZCBtZXJnZSB0aGUgcmVtb3RlIGNoYW5nZXNcbiIKQEAgLTI5MTcsMjIgKzczODcsNTEgQEAKICJcImdpdCBwdWxsXCIpIGlubmFuIGR1IHPDpG5kZXIgaWdlbi5cbiIKICJTZSBhdnNuaXR0ZXQgXCJOb3RlIGFib3V0IGZhc3QtZm9yd2FyZFwiIGkgXCJnaXQgcHVzaCAtLWhlbHBcIiBmw7ZyIGRldGFsamVyLiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MTkwCisjOiBidWlsdGluL3B1c2guYzoyMjQKK21zZ2lkICIiCisiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgdGhlIHJlbW90ZSBjb250YWlucyB3b3JrIHRoYXQgeW91IGRvXG4iCisibm90IGhhdmUgbG9jYWxseS4gVGhpcyBpcyB1c3VhbGx5IGNhdXNlZCBieSBhbm90aGVyIHJlcG9zaXRvcnkgcHVzaGluZ1xuIgorInRvIHRoZSBzYW1lIHJlZi4gWW91IG1heSB3YW50IHRvIGZpcnN0IG1lcmdlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLixcbiIKKyInZ2l0IHB1bGwnKSBiZWZvcmUgcHVzaGluZyBhZ2Fpbi5cbiIKKyJTZWUgdGhlICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIGluICdnaXQgcHVzaCAtLWhlbHAnIGZvciBkZXRhaWxzLiIKK21zZ3N0ciAiIgorIlVwcGRhdGVyaW5nYXIgYXZ2aXNhZGVzIGTDpSBmasOkcnJlbiBpbm5laMOlbGxlciDDpG5kcmluZ2FyIHNvbSBkdSBpbnRlXG4iCisiaGFyIGxva2FsdC4gRGV0IGJlcm9yIG9mdGFzdCBww6UgYXR0IGV0dCBhbm5hdCBhcmtpdiBoYXIgc8OkbnQgaW4gc2FtbWFcbiIKKyJyZWZlcmVuc2VyLiBEZXQga2FuIHZhcmEgZW4gaWTDqSBhdHQgZsO2cnN0IHNsw6UgaWhvcCBmasOkcnLDpG5kcmluZ2FybmFcbiIKKyIodC5leC4gXCJnaXQgcHVsbFwiKSBpbm5hbiBkdSBzw6RuZGVyIGlnZW4uXG4iCisiU2UgYXZzbml0dGV0IFwiTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzXCIgaSBcImdpdCBwdXNoIC0taGVscFwiIGbDtnIgZGV0YWxqZXIuIgorCisjOiBidWlsdGluL3B1c2guYzoyMzEKK21zZ2lkICJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgdGFnIGFscmVhZHkgZXhpc3RzIGluIHRoZSByZW1vdGUuIgorbXNnc3RyICJVcHBkYXRlcmluZ2FybmEgYXZ2aXNhZGVzIGVmdGVyc29tIHRhZ2dlbiByZWRhbiBmaW5ucyBww6UgZmrDpHJyZW4uIgorCisjOiBidWlsdGluL3B1c2guYzoyMzQKK21zZ2lkICIiCisiWW91IGNhbm5vdCB1cGRhdGUgYSByZW1vdGUgcmVmIHRoYXQgcG9pbnRzIGF0IGEgbm9uLWNvbW1pdCBvYmplY3QsXG4iCisib3IgdXBkYXRlIGEgcmVtb3RlIHJlZiB0byBtYWtlIGl0IHBvaW50IGF0IGEgbm9uLWNvbW1pdCBvYmplY3QsXG4iCisid2l0aG91dCB1c2luZyB0aGUgJy0tZm9yY2UnIG9wdGlvbi5cbiIKK21zZ3N0ciAiIgorIkR1IGthbiBpbnRlIHVwcGRhdGVyYSBlbiBmasOkcnItcmVmZXJlbnMgc29tIHBla2FyIHDDpSBldHQgb2JqZWt0IHNvbVxuIgorImludGUgw6RyIGVuIGluY2hlY2tuaW5nLCBlbGxlciB1cHBkYXRlcmEgZW4gZmrDpHJyLXJlZmVyZW5zIHPDpSBhdHQgZGVuXG4iCisicGVrYXIgcMOlIG7DpWdvdCBzb20gaW50ZSDDpHIgZW4gaW5jaGVja25pbmcsIHV0YW4gYXR0IGFudsOkbmRhIGZsYWdnYW5cbiIKKyJcIi0tZm9yY2VcIi5cbiIKKworIzogYnVpbHRpbi9wdXNoLmM6Mjk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlB1c2hpbmcgdG8gJXNcbiIKIG1zZ3N0ciAiU8OkbmRlciB0aWxsICVzXG4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjE5NAorIzogYnVpbHRpbi9wdXNoLmM6Mjk4CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBwdXNoIHNvbWUgcmVmcyB0byAnJXMnIgogbXNnc3RyICJtaXNzbHlja2FkZXMgc8OkbmRhIHZpc3NhIHJlZmVyZW5zZXIgdGlsbCBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjIyNgorIzogYnVpbHRpbi9wdXNoLmM6MzMxCiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCByZXBvc2l0b3J5ICclcyciCiBtc2dzdHIgImZlbGFrdGlndCBhcmtpdiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjIyNworIzogYnVpbHRpbi9wdXNoLmM6MzMyCiBtc2dpZCAiIgogIk5vIGNvbmZpZ3VyZWQgcHVzaCBkZXN0aW5hdGlvbi5cbiIKICJFaXRoZXIgc3BlY2lmeSB0aGUgVVJMIGZyb20gdGhlIGNvbW1hbmQtbGluZSBvciBjb25maWd1cmUgYSByZW1vdGUgIgpAQCAtMjk1MywzNCArNzQ1Miw3MDQgQEAKICJcbiIKICIgICAgZ2l0IHB1c2ggPG5hbW4+XG4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI0MgorIzogYnVpbHRpbi9wdXNoLmM6MzQ3CiBtc2dpZCAiLS1hbGwgYW5kIC0tdGFncyBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLWFsbCBvY2ggLS10YWdzIMOkciBpbmtvbXBhdGlibGEiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI0MworIzogYnVpbHRpbi9wdXNoLmM6MzQ4CiBtc2dpZCAiLS1hbGwgY2FuJ3QgYmUgY29tYmluZWQgd2l0aCByZWZzcGVjcyIKIG1zZ3N0ciAiLS1hbGwga2FuIGludGUga29tYmluZXJhcyBtZWQgcmVmZXJlbnNzcGVjaWZpa2F0aW9uZXIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI0OAorIzogYnVpbHRpbi9wdXNoLmM6MzUzCiBtc2dpZCAiLS1taXJyb3IgYW5kIC0tdGFncyBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLW1pcnJvciBvY2ggLS10YWdzIMOkciBpbmtvbXBhdGlibGEiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI0OQorIzogYnVpbHRpbi9wdXNoLmM6MzU0CiBtc2dpZCAiLS1taXJyb3IgY2FuJ3QgYmUgY29tYmluZWQgd2l0aCByZWZzcGVjcyIKIG1zZ3N0ciAiLS1taXJyb3Iga2FuIGludGUga29tYmluZXJhcyBtZWQgcmVmZXJlbnNzcGVjaWZpa2F0aW9uZXIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI1NAorIzogYnVpbHRpbi9wdXNoLmM6MzU5CiBtc2dpZCAiLS1hbGwgYW5kIC0tbWlycm9yIGFyZSBpbmNvbXBhdGlibGUiCiBtc2dzdHIgIi0tYWxsIG9jaCAtLW1pcnJvciDDpHIgaW5rb21wYXRpYmxhIgogCi0jOiBidWlsdGluL3B1c2guYzozMzQKKyM6IGJ1aWx0aW4vcHVzaC5jOjQxOQorbXNnaWQgInJlcG9zaXRvcnkiCittc2dzdHIgImFya2l2IgorCisjOiBidWlsdGluL3B1c2guYzo0MjAKK21zZ2lkICJwdXNoIGFsbCByZWZzIgorbXNnc3RyICJzw6RuZCBhbGxhIHJlZmVyZW5zZXIiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyMQorbXNnaWQgIm1pcnJvciBhbGwgcmVmcyIKK21zZ3N0ciAic3BlZ2xhIGFsbGEgcmVmZXJlbnNlciIKKworIzogYnVpbHRpbi9wdXNoLmM6NDIzCittc2dpZCAiZGVsZXRlIHJlZnMiCittc2dzdHIgInRhIGJvcnQgcmVmZXJlbnNlciIKKworIzogYnVpbHRpbi9wdXNoLmM6NDI0Cittc2dpZCAicHVzaCB0YWdzIChjYW4ndCBiZSB1c2VkIHdpdGggLS1hbGwgb3IgLS1taXJyb3IpIgorbXNnc3RyICJzw6RuZCB0YWdnYXIgKGthbiBpbnRlIGFudsOkbmRhcyBtZWQgLS1hbGwgZWxsZXIgLS1taXJyb3IpIgorCisjOiBidWlsdGluL3B1c2guYzo0MjcKK21zZ2lkICJmb3JjZSB1cGRhdGVzIgorbXNnc3RyICJ0dmluZ2EgdXBwZGF0ZXJpbmdhciIKKworIzogYnVpbHRpbi9wdXNoLmM6NDI4Cittc2dpZCAiY2hlY2siCittc2dzdHIgImtvbnRyb2xsZXJhIgorCisjOiBidWlsdGluL3B1c2guYzo0MjkKK21zZ2lkICJjb250cm9sIHJlY3Vyc2l2ZSBwdXNoaW5nIG9mIHN1Ym1vZHVsZXMiCittc2dzdHIgInN0eXIgcmVrdXJzaXYgaW5zw6RuZG5pbmcgYXYgdW5kZXJtb2R1bGVyIgorCisjOiBidWlsdGluL3B1c2guYzo0MzEKK21zZ2lkICJ1c2UgdGhpbiBwYWNrIgorbXNnc3RyICJhbnbDpG5kIHR1bm5hIHBha2V0IgorCisjOiBidWlsdGluL3B1c2guYzo0MzIgYnVpbHRpbi9wdXNoLmM6NDMzCittc2dpZCAicmVjZWl2ZSBwYWNrIHByb2dyYW0iCittc2dzdHIgInByb2dyYW0gZsO2ciBhdHQgdGEgZW1vdCBwYWtldCIKKworIzogYnVpbHRpbi9wdXNoLmM6NDM0Cittc2dpZCAic2V0IHVwc3RyZWFtIGZvciBnaXQgcHVsbC9zdGF0dXMiCittc2dzdHIgInN0w6RsbCBpbiB1cHBzdHLDtm0gZsO2ciBnaXQgcHVsbC9zdGF0dXMiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzNworbXNnaWQgInBydW5lIGxvY2FsbHkgcmVtb3ZlZCByZWZzIgorbXNnc3RyICJ0YSBib3J0IGxva2FsdCBib3J0dGFnbmEgcmVmZXJlbnNlciIKKworIzogYnVpbHRpbi9wdXNoLmM6NDM5Cittc2dpZCAiYnlwYXNzIHByZS1wdXNoIGhvb2siCittc2dzdHIgImbDtnJiaWfDpSBwcmUtcHVzaC1rcm9rIgorCisjOiBidWlsdGluL3B1c2guYzo0NDAKK21zZ2lkICJwdXNoIG1pc3NpbmcgYnV0IHJlbGV2YW50IHRhZ3MiCittc2dzdHIgInPDpG5kIGluIHNha25hZGUgbWVuIHJlbGV2YW50YSB0YWdnYXIiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ1MAogbXNnaWQgIi0tZGVsZXRlIGlzIGluY29tcGF0aWJsZSB3aXRoIC0tYWxsLCAtLW1pcnJvciBhbmQgLS10YWdzIgogbXNnc3RyICItLWRlbGV0ZSDDpHIgaW1rb21wYXRpYmVsIG1lZCAtLWFsbCwgLS1taXJyb3Igb2NoIC0tdGFncyIKIAotIzogYnVpbHRpbi9wdXNoLmM6MzM2CisjOiBidWlsdGluL3B1c2guYzo0NTIKIG1zZ2lkICItLWRlbGV0ZSBkb2Vzbid0IG1ha2Ugc2Vuc2Ugd2l0aG91dCBhbnkgcmVmcyIKIG1zZ3N0ciAiLS1kZWxldGUga2FuIGludGUgYW52w6RuZGFzIHV0YW4gcmVmZXJlbnNlciIKIAorIzogYnVpbHRpbi9yZWFkLXRyZWUuYzozNgorbXNnaWQgIiIKKyJnaXQgcmVhZC10cmVlIFtbLW0gWy0tdHJpdmlhbF0gWy0tYWdncmVzc2l2ZV0gfCAtLXJlc2V0IHwgLS1wcmVmaXg9PHByZWZpeD5dICIKKyJbLXUgWy0tZXhjbHVkZS1wZXItZGlyZWN0b3J5PTxnaXRpZ25vcmU+XSB8IC1pXV0gWy0tbm8tc3BhcnNlLWNoZWNrb3V0XSBbLS0iCisiaW5kZXgtb3V0cHV0PTxmaWxlPl0gKC0tZW1wdHkgfCA8dHJlZS1pc2gxPiBbPHRyZWUtaXNoMj4gWzx0cmVlLWlzaDM+XV0pIgorbXNnc3RyICIiCisiZ2l0IHJlYWQtdHJlZSBbWy1tIFstLXRyaXZpYWxdIFstLWFnZ3Jlc3NpdmVdIHwgLS1yZXNldCB8IC0tcHJlZml4PTxwcmVmaXg+XSAiCisiWy11IFstLWV4Y2x1ZGUtcGVyLWRpcmVjdG9yeT08Z2l0aWdub3JlPl0gfCAtaV1dIFstLW5vLXNwYXJzZS1jaGVja291dF0gWy0tIgorImluZGV4LW91dHB1dD08ZmlsPl0gKC0tZW1wdHkgfCA8dHLDpGQtaWd0MT4gWzx0csOkZC1pZ3QyPiBbPHRyw6RkLWlndDM+XV0pIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEwOAorbXNnaWQgIndyaXRlIHJlc3VsdGluZyBpbmRleCB0byA8ZmlsZT4iCittc2dzdHIgInNrcml2IHJlc3VsdGVyYW5kZSBpbmRleCB0aWxsIDxmaWw+IgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjExMQorbXNnaWQgIm9ubHkgZW1wdHkgdGhlIGluZGV4IgorbXNnc3RyICJ0w7ZtIGJhcmEgaW5kZXhldCIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTMKK21zZ2lkICJNZXJnaW5nIgorbXNnc3RyICJTYW1tYW5zbGFnbmluZyIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTUKK21zZ2lkICJwZXJmb3JtIGEgbWVyZ2UgaW4gYWRkaXRpb24gdG8gYSByZWFkIgorbXNnc3RyICJ1dGbDtnIgZW4gc2FtbWFuc2xhZ25pbmcgaSB0aWxsw6RnZyB0aWxsIGVuIGzDpHNuaW5nIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjExNworbXNnaWQgIjMtd2F5IG1lcmdlIGlmIG5vIGZpbGUgbGV2ZWwgbWVyZ2luZyByZXF1aXJlZCIKK21zZ3N0ciAiMy12w6Rnc3NhbW1hbnNsYWduaW5nIG9tIHNhbW1hbnNsYWduaW5nIHDDpSBmaWxuaXbDpSBlaiBrcsOkdnMiCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTE5Cittc2dpZCAiMy13YXkgbWVyZ2UgaW4gcHJlc2VuY2Ugb2YgYWRkcyBhbmQgcmVtb3ZlcyIKK21zZ3N0ciAiMy12w6Rnc3NhbW1hbnNsYWduaW5nIG7DpHIgZGV0IGZpbm5zIHRpbGzDpGdnIG9jaCBib3J0dGFnbmluZ2FyIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyMQorbXNnaWQgInNhbWUgYXMgLW0sIGJ1dCBkaXNjYXJkIHVubWVyZ2VkIGVudHJpZXMiCittc2dzdHIgInNvbSAtbSwgbWVuIGthc3RhIGJvcnQgZWogc2FtbWFuc2xhZ25hIHBvc3RlciIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjIKK21zZ2lkICI8c3ViZGlyZWN0b3J5Pi8iCittc2dzdHIgIjx1bmRlcmthdGFsb2c+LyIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjMKK21zZ2lkICJyZWFkIHRoZSB0cmVlIGludG8gdGhlIGluZGV4IHVuZGVyIDxzdWJkaXJlY3Rvcnk+LyIKK21zZ3N0ciAibMOkcyBpbiB0csOkZGV0IGkgaW5kZXhldCB1bmRlciA8dW5kZXJrYXRhbG9nPi8iCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTI2Cittc2dpZCAidXBkYXRlIHdvcmtpbmcgdHJlZSB3aXRoIG1lcmdlIHJlc3VsdCIKK21zZ3N0ciAidXBwZGF0ZXJhIGFyYmV0c2thdGFsb2dlbiBtZWQgcmVzdWx0YXRldCBmcsOlbiBzYW1tYW5zbGFnbmluZ2VuIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyOAorbXNnaWQgImdpdGlnbm9yZSIKK21zZ3N0ciAiZ2l0aWdub3JlIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyOQorbXNnaWQgImFsbG93IGV4cGxpY2l0bHkgaWdub3JlZCBmaWxlcyB0byBiZSBvdmVyd3JpdHRlbiIKK21zZ3N0ciAidGlsbMOldCBleHBsaWNpdCBpZ25vcmVyYWRlIGZpbGVyIGF0dCBza3JpdmFzIMO2dmVyIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzMgorbXNnaWQgImRvbid0IGNoZWNrIHRoZSB3b3JraW5nIHRyZWUgYWZ0ZXIgbWVyZ2luZyIKK21zZ3N0ciAia29udHJvbGxlcmEgaW50ZSBhcmJldHNrYXRhbG9nZW4gZWZ0ZXIgc2FtbWFuc2xhZ25pbmciCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTMzCittc2dpZCAiZG9uJ3QgdXBkYXRlIHRoZSBpbmRleCBvciB0aGUgd29yayB0cmVlIgorbXNnc3RyICJ1cHBkYXRlcmEgaW50ZSBpbmRleGV0IGVsbGVyIGFyYmV0c2thdGFsb2dlbiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzUKK21zZ2lkICJza2lwIGFwcGx5aW5nIHNwYXJzZSBjaGVja291dCBmaWx0ZXIiCittc2dzdHIgImhvcHBhIMO2dmVyIGF0dCBhcHBsaWNlcmEgZmlsdGVyIGbDtnIgZ2xlcyB1dGNoZWNrbmluZyIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzcKK21zZ2lkICJkZWJ1ZyB1bnBhY2stdHJlZXMiCittc2dzdHIgImZlbHPDtmsgdW5wYWNrLXRyZWVzIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjExCittc2dpZCAiZ2l0IHJlbW90ZSBbLXYgfCAtLXZlcmJvc2VdIgorbXNnc3RyICJnaXQgcmVtb3RlIFstdiB8IC0tdmVyYm9zZV0iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTIKK21zZ2lkICIiCisiZ2l0IHJlbW90ZSBhZGQgWy10IDxicmFuY2g+XSBbLW0gPG1hc3Rlcj5dIFstZl0gWy0tdGFnc3wtLW5vLXRhZ3NdIFstLSIKKyJtaXJyb3I9PGZldGNofHB1c2g+XSA8bmFtZT4gPHVybD4iCittc2dzdHIgIiIKKyJnaXQgcmVtb3RlIGFkZCBbLXQgPGdyZW4+XSBbLW0gPG1hc3Rlcj5dIFstZl0gWy0tdGFnc3wtLW5vLXRhZ3NdIFstLSIKKyJtaXJyb3I9PGZldGNofHB1c2g+XSA8bmFtbj4gPHVybD4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTMgYnVpbHRpbi9yZW1vdGUuYzozMgorbXNnaWQgImdpdCByZW1vdGUgcmVuYW1lIDxvbGQ+IDxuZXc+IgorbXNnc3RyICJnaXQgcmVtb3RlIHJlbmFtZSA8Z2FtbWFsPiA8bnk+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE0IGJ1aWx0aW4vcmVtb3RlLmM6MzcKK21zZ2lkICJnaXQgcmVtb3RlIHJlbW92ZSA8bmFtZT4iCittc2dzdHIgImdpdCByZW1vdGUgcmVtb3ZlIDxuYW1uPiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNSBidWlsdGluL3JlbW90ZS5jOjQyCittc2dpZCAiZ2l0IHJlbW90ZSBzZXQtaGVhZCA8bmFtZT4gKC1hIHwgLWQgfCA8YnJhbmNoPikiCittc2dzdHIgImdpdCByZW1vdGUgc2V0LWhlYWQgPG5hbW4+ICgtYSB8IC1kIHwgPGdyZW4+KSIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNgorbXNnaWQgImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSBzaG93IFstbl0gPG5hbWU+IgorbXNnc3RyICJnaXQgcmVtb3RlIFstdiB8IC0tdmVyYm9zZV0gc2hvdyBbLW5dIDxuYW1uPiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNworbXNnaWQgImdpdCByZW1vdGUgcHJ1bmUgWy1uIHwgLS1kcnktcnVuXSA8bmFtZT4iCittc2dzdHIgImdpdCByZW1vdGUgcHJ1bmUgWy1uIHwgLS1kcnktcnVuXSA8bmFtbj4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTgKK21zZ2lkICIiCisiZ2l0IHJlbW90ZSBbLXYgfCAtLXZlcmJvc2VdIHVwZGF0ZSBbLXAgfCAtLXBydW5lXSBbKDxncm91cD4gfCA8cmVtb3RlPikuLi5dIgorbXNnc3RyICIiCisiZ2l0IHJlbW90ZSBbLXYgfCAtLXZlcmJvc2VdIHVwZGF0ZSBbLXAgfCAtLXBydW5lXSBbKDxncnVwcD4gfCA8ZmrDpHJyPikuLi5dIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE5Cittc2dpZCAiZ2l0IHJlbW90ZSBzZXQtYnJhbmNoZXMgWy0tYWRkXSA8bmFtZT4gPGJyYW5jaD4uLi4iCittc2dzdHIgImdpdCByZW1vdGUgc2V0LWJyYW5jaGVzIFstLWFkZF0gPG5hbW4+IDxncmVuPi4uLiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoyMCBidWlsdGluL3JlbW90ZS5jOjY4Cittc2dpZCAiZ2l0IHJlbW90ZSBzZXQtdXJsIFstLXB1c2hdIDxuYW1lPiA8bmV3dXJsPiBbPG9sZHVybD5dIgorbXNnc3RyICJnaXQgcmVtb3RlIHNldC11cmwgWy0tcHVzaF0gPG5hbW4+IDxueXVybD4gWzxnYW1tYWx1cmw+XSIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoyMSBidWlsdGluL3JlbW90ZS5jOjY5Cittc2dpZCAiZ2l0IHJlbW90ZSBzZXQtdXJsIC0tYWRkIDxuYW1lPiA8bmV3dXJsPiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBzZXQtdXJsIC0tYWRkIDxuYW1uPiA8bnl1cmw+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjIyIGJ1aWx0aW4vcmVtb3RlLmM6NzAKK21zZ2lkICJnaXQgcmVtb3RlIHNldC11cmwgLS1kZWxldGUgPG5hbWU+IDx1cmw+IgorbXNnc3RyICJnaXQgcmVtb3RlIHNldC11cmwgLS1kZWxldGUgPG5hbW4+IDx1cmw+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjI3Cittc2dpZCAiZ2l0IHJlbW90ZSBhZGQgWzxvcHRpb25zPl0gPG5hbWU+IDx1cmw+IgorbXNnc3RyICJnaXQgcmVtb3RlIGFkZCBbPGZsYWdnb3I+XSA8bmFtbj4gPHVybD4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NDcKK21zZ2lkICJnaXQgcmVtb3RlIHNldC1icmFuY2hlcyA8bmFtZT4gPGJyYW5jaD4uLi4iCittc2dzdHIgImdpdCByZW1vdGUgc2V0LWJyYW5jaGVzIDxuYW1uPiA8Z3Jlbj4uLi4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NDgKK21zZ2lkICJnaXQgcmVtb3RlIHNldC1icmFuY2hlcyAtLWFkZCA8bmFtZT4gPGJyYW5jaD4uLi4iCittc2dzdHIgImdpdCByZW1vdGUgc2V0LWJyYW5jaGVzIC0tYWRkIDxuYW1uPiA8Z3Jlbj4uLi4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NTMKK21zZ2lkICJnaXQgcmVtb3RlIHNob3cgWzxvcHRpb25zPl0gPG5hbWU+IgorbXNnc3RyICJnaXQgcmVtb3RlIHNob3cgWzxmbGFnZ29yPl0gPG5hbW4+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjU4Cittc2dpZCAiZ2l0IHJlbW90ZSBwcnVuZSBbPG9wdGlvbnM+XSA8bmFtZT4iCittc2dzdHIgImdpdCByZW1vdGUgcHJ1bmUgWzxmbGFnZ29yPl0gPG5hbW4+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjYzCittc2dpZCAiZ2l0IHJlbW90ZSB1cGRhdGUgWzxvcHRpb25zPl0gWzxncm91cD4gfCA8cmVtb3RlPl0uLi4iCittc2dzdHIgImdpdCByZW1vdGUgdXBkYXRlIFs8ZmxhZ2dvcj5dIFs8Z3J1cHA+IHwgPGZqw6Rycj5dLi4uIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjk4CisjLCBjLWZvcm1hdAorbXNnaWQgIlVwZGF0aW5nICVzIgorbXNnc3RyICJVcHBkYXRlcmFyICVzIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjEzMAorbXNnaWQgIiIKKyItLW1pcnJvciBpcyBkYW5nZXJvdXMgYW5kIGRlcHJlY2F0ZWQ7IHBsZWFzZVxuIgorIlx0IHVzZSAtLW1pcnJvcj1mZXRjaCBvciAtLW1pcnJvcj1wdXNoIGluc3RlYWQiCittc2dzdHIgIiIKKyItLW1pcnJvciDDpHIgZmFybGlnIG9jaCBmw7Zyw6VsZHJhZDsgYW52w6RuZFxuIgorIlx0IC0tbWlycm9yPWZldGNoIGVsbGVyIC0tbWlycm9yPXB1c2ggaXN0w6RsbGV0IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE0NworIywgYy1mb3JtYXQKK21zZ2lkICJ1bmtub3duIG1pcnJvciBhcmd1bWVudDogJXMiCittc2dzdHIgIm9rw6RudCBhcmd1bWVudCB0aWxsIG1pcnJvcjogJXMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTYzCittc2dpZCAiZmV0Y2ggdGhlIHJlbW90ZSBicmFuY2hlcyIKK21zZ3N0ciAiaMOkbXRhIGZqw6RycmdyZW5hcm5hIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE2NQorbXNnaWQgImltcG9ydCBhbGwgdGFncyBhbmQgYXNzb2NpYXRlZCBvYmplY3RzIHdoZW4gZmV0Y2hpbmciCittc2dzdHIgImltcG9ydGVyYSBhbGxhIHRhZ2dhciBvY2ggYXNzb2NpZXJhZGUgb2JqZWt0IHZpZCBow6RtdG5pbmciCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTY4Cittc2dpZCAib3IgZG8gbm90IGZldGNoIGFueSB0YWcgYXQgYWxsICgtLW5vLXRhZ3MpIgorbXNnc3RyICJlbGxlciBow6RtdGEgaW50ZSBuw6VncmEgdGFnZ2FyIGFsbHMgKC0tbm8tdGFncykiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTcwCittc2dpZCAiYnJhbmNoKGVzKSB0byB0cmFjayIKK21zZ3N0ciAiZ3JlbihhcikgYXR0IHNww6VyYSIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNzEKK21zZ2lkICJtYXN0ZXIgYnJhbmNoIgorbXNnc3RyICJodXZ1ZGdyZW4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTcyCittc2dpZCAicHVzaHxmZXRjaCIKK21zZ3N0ciAicHVzaHxmZXRjaCIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNzMKK21zZ2lkICJzZXQgdXAgcmVtb3RlIGFzIGEgbWlycm9yIHRvIHB1c2ggdG8gb3IgZmV0Y2ggZnJvbSIKK21zZ3N0ciAic3TDpGxsIGluIGFya2l2IHNvbSBzcGVnZWwgYXR0IHPDpG5kYSBlbGxlciB0YSBlbW90IGZyw6VuIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE4NQorbXNnaWQgInNwZWNpZnlpbmcgYSBtYXN0ZXIgYnJhbmNoIG1ha2VzIG5vIHNlbnNlIHdpdGggLS1taXJyb3IiCittc2dzdHIgImF0dCBhbmdlIGVuIG1hc3Rlci1ncmVuIGdlciBpbmdlbiBtZW5pbmcgbWVkIC0tbWlycm9yIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE4NworbXNnaWQgInNwZWNpZnlpbmcgYnJhbmNoZXMgdG8gdHJhY2sgbWFrZXMgc2Vuc2Ugb25seSB3aXRoIGZldGNoIG1pcnJvcnMiCittc2dzdHIgImF0dCBhbmdlIGdyZW5hciBhdHQgc3DDpXJhIGdlciBtZW5pbmcgYmFyYSBtZWQgaMOkbXRuaW5nc3NwZWdsYXIiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTk1IGJ1aWx0aW4vcmVtb3RlLmM6NjQ2CisjLCBjLWZvcm1hdAorbXNnaWQgInJlbW90ZSAlcyBhbHJlYWR5IGV4aXN0cy4iCittc2dzdHIgImZqw6RycmFya2l2ZXQgJXMgZmlubnMgcmVkYW4uIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE5OSBidWlsdGluL3JlbW90ZS5jOjY1MAorIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIGlzIG5vdCBhIHZhbGlkIHJlbW90ZSBuYW1lIgorbXNnc3RyICJcIiVzXCIgw6RyIGludGUgZXR0IGdpbHRpZ3QgbmFtbiBww6UgZmrDpHJyYXJraXYiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBzZXR1cCBtYXN0ZXIgJyVzJyIKK21zZ3N0ciAiS3VuZGUgaW50ZSBza2FwYSBtYXN0ZXIgXCIlc1wiIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjI5OQorIywgYy1mb3JtYXQKK21zZ2lkICJtb3JlIHRoYW4gb25lICVzIgorbXNnc3RyICJtZXIgw6RuIGVuICVzIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjMzOQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgZ2V0IGZldGNoIG1hcCBmb3IgcmVmc3BlYyAlcyIKK21zZ3N0ciAiS3VuZGUgaW50ZSBow6RtdGEgbWFwcG5pbmcgZsO2ciByZWZlcmVuc3NwZWNpZmlrYXRpb24gJXMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NDQwIGJ1aWx0aW4vcmVtb3RlLmM6NDQ4Cittc2dpZCAiKG1hdGNoaW5nKSIKK21zZ3N0ciAiKG1hdGNoYW5kZSkiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NDUyCittc2dpZCAiKGRlbGV0ZSkiCittc2dzdHIgIih0YSBib3J0KSIKKworIzogYnVpbHRpbi9yZW1vdGUuYzo1OTUgYnVpbHRpbi9yZW1vdGUuYzo2MDEgYnVpbHRpbi9yZW1vdGUuYzo2MDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IGFwcGVuZCAnJXMnIHRvICclcyciCittc2dzdHIgIkt1bmRlIGludGUgdGlsbMOkbXBhIFwiJXNcIiBww6UgXCIlc1wiIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjYzOSBidWlsdGluL3JlbW90ZS5jOjc5MiBidWlsdGluL3JlbW90ZS5jOjg5MAorIywgYy1mb3JtYXQKK21zZ2lkICJObyBzdWNoIHJlbW90ZTogJXMiCittc2dzdHIgIkluZ2V0IHPDpWRhbnQgZmrDpHJyYXJraXY6ICVzIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjY1NgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgcmVuYW1lIGNvbmZpZyBzZWN0aW9uICclcycgdG8gJyVzJyIKK21zZ3N0ciAiS3VuZGUgaW50ZSBieXRhIG5hbW4gcMOlIGtvbmZpZ3VyYXRpb25zc2VrdGlvbmVuIFwiJXNcIiB0aWxsIFwiJXNcIiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzo2NjIgYnVpbHRpbi9yZW1vdGUuYzo3OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IHJlbW92ZSBjb25maWcgc2VjdGlvbiAnJXMnIgorbXNnc3RyICJLdW5kZSBpbnRlIHRhIGJvcnQga29uZmlndXJhdGlvbnNzZWt0aW9uZW4gXCIlc1wiIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjY3NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTm90IHVwZGF0aW5nIG5vbi1kZWZhdWx0IGZldGNoIHJlZnNwZWNcbiIKKyJcdCVzXG4iCisiXHRQbGVhc2UgdXBkYXRlIHRoZSBjb25maWd1cmF0aW9uIG1hbnVhbGx5IGlmIG5lY2Vzc2FyeS4iCittc2dzdHIgIiIKKyJVcHBkYXRlcmFyIGludGUgaWNrZS1zdGFuZGFyZCBow6RtdG5pbmdzcmVmZXJlbnNzcGVjaWZpa2F0aW9uXG4iCisiXHQlc1xuIgorIlx0VXBwZGF0ZXJhIGtvbmZpZ3VyYXRpb25lbiBtYW51ZWxsdCBvbSBuw7ZkdsOkbmRpZ3QuIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjY4MworIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgYXBwZW5kICclcyciCittc2dzdHIgIkt1bmRlIGludGUgbMOkZ2dhIHRpbGwgcMOlIFwiJXNcIiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzo2OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IHNldCAnJXMnIgorbXNnc3RyICJLdW5kZSBpbnRlIHPDpHR0YSBcIiVzXCIiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NzE2CisjLCBjLWZvcm1hdAorbXNnaWQgImRlbGV0aW5nICclcycgZmFpbGVkIgorbXNnc3RyICJtaXNzbHlja2FkZXMgdGEgYm9ydCBcIiVzXCIiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NzUwCisjLCBjLWZvcm1hdAorbXNnaWQgImNyZWF0aW5nICclcycgZmFpbGVkIgorbXNnc3RyICJtaXNzbHlja2FkZXMgc2thcGEgXCIlc1wiIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjc2NAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgcmVtb3ZlIGJyYW5jaCAlcyIKK21zZ3N0ciAiS3VuZGUgaW50ZSB0YSBib3J0IGdyZW5lbiAlcyIKKworIzogYnVpbHRpbi9yZW1vdGUuYzo4MzQKK21zZ2lkICIiCisiTm90ZTogQSBicmFuY2ggb3V0c2lkZSB0aGUgcmVmcy9yZW1vdGVzLyBoaWVyYXJjaHkgd2FzIG5vdCByZW1vdmVkO1xuIgorInRvIGRlbGV0ZSBpdCwgdXNlOiIKK21zZ2lkX3BsdXJhbCAiIgorIk5vdGU6IFNvbWUgYnJhbmNoZXMgb3V0c2lkZSB0aGUgcmVmcy9yZW1vdGVzLyBoaWVyYXJjaHkgd2VyZSBub3QgcmVtb3ZlZDtcbiIKKyJ0byBkZWxldGUgdGhlbSwgdXNlOiIKK21zZ3N0clswXSAiIgorIk9ic2VydmVyYTogRW4gZ3JlbiB1dGFuZsO2ciBoaWVyYXJraW4gcmVmcy9yZW1vdGVzLyB0b2dzIGludGUgYm9ydDtcbiIKKyJmw7ZyIGF0dCB0YSBib3J0IGRlbiwgYW52w6RuZDoiCittc2dzdHJbMV0gIiIKKyJPYnNlcnZlcmE6IE7DpWdyYSBncmVuYXIgdXRhbmbDtnIgaGllcmFya2luIHJlZnMvcmVtb3Rlcy8gdG9ncyBpbnRlIGJvcnQ7XG4iCisiZsO2ciBhdHQgdGEgYm9ydCBkZW0sIGFudsOkbmQ6IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjk0MworIywgYy1mb3JtYXQKK21zZ2lkICIgbmV3IChuZXh0IGZldGNoIHdpbGwgc3RvcmUgaW4gcmVtb3Rlcy8lcykiCittc2dzdHIgIiBueSAobsOkc3RhIGjDpG10bmluZyBzcGFyYXIgaSByZW1vdGVzLyVzKSIKKworIzogYnVpbHRpbi9yZW1vdGUuYzo5NDYKK21zZ2lkICIgdHJhY2tlZCIKK21zZ3N0ciAiIHNww6VyYWQiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6OTQ4Cittc2dpZCAiIHN0YWxlICh1c2UgJ2dpdCByZW1vdGUgcHJ1bmUnIHRvIHJlbW92ZSkiCittc2dzdHIgIiBmw7ZybGVnYWQgKGFudsOkbmQgXCJnaXQgcmVtb3RlIHBydW5lXCIgZsO2ciBhdHQgdGEgYm9ydCkiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6OTUwCittc2dpZCAiID8/PyIKK21zZ3N0ciAiID8/PyIKKworIzogYnVpbHRpbi9yZW1vdGUuYzo5OTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBicmFuY2guJXMubWVyZ2U7IGNhbm5vdCByZWJhc2Ugb250byA+IDEgYnJhbmNoIgorbXNnc3RyICJvZ2lsdGlnIGJyYW5jaC4lcy5tZXJnZTsga2FuIGludGUgb21iYXNlcmEgw7Z2ZXIgPiAxIGdyZW4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6OTk4CisjLCBjLWZvcm1hdAorbXNnaWQgInJlYmFzZXMgb250byByZW1vdGUgJXMiCittc2dzdHIgIm9tYmFzZXJhcyBww6UgZmrDpHJyZW4gJXMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTAwMQorIywgYy1mb3JtYXQKK21zZ2lkICIgbWVyZ2VzIHdpdGggcmVtb3RlICVzIgorbXNnc3RyICIgc2FtbWFuc2zDpXMgbWVkIGZqw6RycmVuICVzIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjEwMDIKK21zZ2lkICIgICAgYW5kIHdpdGggcmVtb3RlIgorbXNnc3RyICIgICAgb2NoIG1lZCBmasOkcnJlbiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxMDA0CisjLCBjLWZvcm1hdAorbXNnaWQgIm1lcmdlcyB3aXRoIHJlbW90ZSAlcyIKK21zZ3N0ciAic2FtbWFuc2zDpXMgbWVkIGZqw6RycmVuICVzIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjEwMDUKK21zZ2lkICIgICBhbmQgd2l0aCByZW1vdGUiCittc2dzdHIgIiAgIG9jaCBtZWQgZmrDpHJyZW4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTA1MQorbXNnaWQgImNyZWF0ZSIKK21zZ3N0ciAic2thcGEiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTA1NAorbXNnaWQgImRlbGV0ZSIKK21zZ3N0ciAidGEgYm9ydCIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxMDU4Cittc2dpZCAidXAgdG8gZGF0ZSIKK21zZ3N0ciAiw6Bqb3VyIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjEwNjEKK21zZ2lkICJmYXN0LWZvcndhcmRhYmxlIgorbXNnc3RyICJrYW4gc25hYmJzcG9sYXMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTA2NAorbXNnaWQgImxvY2FsIG91dCBvZiBkYXRlIgorbXNnc3RyICJsb2thbCBmw7Zyw6VsZHJhZCIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxMDcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAlLSpzIGZvcmNlcyB0byAlLSpzICglcykiCittc2dzdHIgIiAgICAlLSpzIHR2aW5nYXIgdGlsbCAlLSpzICglcykiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTA3NAorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgJS0qcyBwdXNoZXMgdG8gJS0qcyAoJXMpIgorbXNnc3RyICIgICAgJS0qcyBzw6RuZGVyIHRpbGwgJS0qcyAoJXMpIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjEwNzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICUtKnMgZm9yY2VzIHRvICVzIgorbXNnc3RyICIgICAgJS0qcyB0dmluZ2FyIHRpbGwgJXMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTA4MQorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgJS0qcyBwdXNoZXMgdG8gJXMiCittc2dzdHIgIiAgICAlLSpzIHPDpG5kZXIgdGlsbCAlcyIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxMDkxCittc2dpZCAiZG8gbm90IHF1ZXJ5IHJlbW90ZXMiCittc2dzdHIgImZyw6VnYSBpbnRlIGZqw6RycmFyIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjExMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiKiByZW1vdGUgJXMiCittc2dzdHIgIiogZmrDpHJyICVzIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjExMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiICBGZXRjaCBVUkw6ICVzIgorbXNnc3RyICIgIEjDpG10LVVSTDogJXMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTEyMCBidWlsdGluL3JlbW90ZS5jOjEyODUKK21zZ2lkICIobm8gVVJMKSIKK21zZ3N0ciAiKGluZ2VuIFVSTCkiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTEyOSBidWlsdGluL3JlbW90ZS5jOjExMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiICBQdXNoICBVUkw6ICVzIgorbXNnc3RyICIgIFPDpG5kLVVSTDogJXMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTEzMyBidWlsdGluL3JlbW90ZS5jOjExMzUgYnVpbHRpbi9yZW1vdGUuYzoxMTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgSEVBRCBicmFuY2g6ICVzIgorbXNnc3RyICIgIEhFQUQtZ3JlbjogJXMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTEzOQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiICBIRUFEIGJyYW5jaCAocmVtb3RlIEhFQUQgaXMgYW1iaWd1b3VzLCBtYXkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcpOlxuIgorbXNnc3RyICIgIEhFQUQtZ3JlbiAoSEVBRCBww6UgZmrDpHJyIMOkciB0dmV0eWRpZywga2FuIHZhcmEgZW4gYXYgZsO2bGphbmRlKTpcbiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxMTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgUmVtb3RlIGJyYW5jaDolcyIKK21zZ2lkX3BsdXJhbCAiICBSZW1vdGUgYnJhbmNoZXM6JXMiCittc2dzdHJbMF0gIiAgRmrDpHJyZ3JlbjolcyIKK21zZ3N0clsxXSAiICBGasOkcnJncmVuYXI6JXMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTE1NCBidWlsdGluL3JlbW90ZS5jOjExODEKK21zZ2lkICIgKHN0YXR1cyBub3QgcXVlcmllZCkiCittc2dzdHIgIiAoc3RhdHVzIGludGUgZsO2cmZyw6VnYWQpIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjExNjMKK21zZ2lkICIgIExvY2FsIGJyYW5jaCBjb25maWd1cmVkIGZvciAnZ2l0IHB1bGwnOiIKK21zZ2lkX3BsdXJhbCAiICBMb2NhbCBicmFuY2hlcyBjb25maWd1cmVkIGZvciAnZ2l0IHB1bGwnOiIKK21zZ3N0clswXSAiICBMb2thbCBncmVuIGtvbmZpZ3VyZXJhZCBmw7ZyIFwiZ2l0IHB1bGxcIjoiCittc2dzdHJbMV0gIiAgTG9rYWxhIGdyZW5hciBrb25maWd1cmVyYWRlIGbDtnIgXCJnaXQgcHVsbFwiOiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxMTcxCittc2dpZCAiICBMb2NhbCByZWZzIHdpbGwgYmUgbWlycm9yZWQgYnkgJ2dpdCBwdXNoJyIKK21zZ3N0ciAiICBMb2thbGEgcmVmZXJlbnNlciBzcGVnbGFzIGF2IFwiZ2l0IHB1c2hcIiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxMTc4CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgTG9jYWwgcmVmIGNvbmZpZ3VyZWQgZm9yICdnaXQgcHVzaCclczoiCittc2dpZF9wbHVyYWwgIiAgTG9jYWwgcmVmcyBjb25maWd1cmVkIGZvciAnZ2l0IHB1c2gnJXM6IgorbXNnc3RyWzBdICIgIExva2FsIHJlZmVyZW5zIGtvbmZpZ3VyZXJhZCBmw7ZyIFwiZ2l0IHB1c2hcIiVzOiIKK21zZ3N0clsxXSAiICBMb2thbGEgcmVmZXJlbnNlciBrb25maWd1cmVyYWRlIGbDtnIgXCJnaXQgcHVzaFwiJXM6IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjExOTkKK21zZ2lkICJzZXQgcmVmcy9yZW1vdGVzLzxuYW1lPi9IRUFEIGFjY29yZGluZyB0byByZW1vdGUiCittc2dzdHIgInPDpHR0IHJlZnMvcmVtb3Rlcy88bmFtbj4vSEVBRCBlbmxpZ3QgZmrDpHJyZW4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTIwMQorbXNnaWQgImRlbGV0ZSByZWZzL3JlbW90ZXMvPG5hbWU+L0hFQUQiCittc2dzdHIgInRhIGJvcnQgcmVmcy9yZW1vdGVzLzxuYW1uPi9IRUFEIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjEyMTYKK21zZ2lkICJDYW5ub3QgZGV0ZXJtaW5lIHJlbW90ZSBIRUFEIgorbXNnc3RyICJLYW4gaW50ZSBiZXN0w6RtbWEgSEVBRCBww6UgZmrDpHJyZW4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTIxOAorbXNnaWQgIk11bHRpcGxlIHJlbW90ZSBIRUFEIGJyYW5jaGVzLiBQbGVhc2UgY2hvb3NlIG9uZSBleHBsaWNpdGx5IHdpdGg6IgorbXNnc3RyICJGbGVyYSBIRUFELWdyZW5hciBww6UgZmrDpHJyZW4uIFbDpGxqIGVuIGV4cGxpY2l0IG1lZDoiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTIyOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgZGVsZXRlICVzIgorbXNnc3RyICJLdW5kZSBpbnRlIHRhIGJvcnQgJXMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTIzNgorIywgYy1mb3JtYXQKK21zZ2lkICJOb3QgYSB2YWxpZCByZWY6ICVzIgorbXNnc3RyICJJbnRlIGVuIGdpbHRpZyByZWZlcmVuczogJXMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTIzOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3Qgc2V0dXAgJXMiCittc2dzdHIgIkt1bmRlIGludGUgc3TDpGxsYSBpbiAlcyIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxMjc0CisjLCBjLWZvcm1hdAorbXNnaWQgIiAlcyB3aWxsIGJlY29tZSBkYW5nbGluZyEiCittc2dzdHIgIiAlcyBrb21tZXIgYmxpIGRpbmdsYW5kZSEiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTI3NQorIywgYy1mb3JtYXQKK21zZ2lkICIgJXMgaGFzIGJlY29tZSBkYW5nbGluZyEiCittc2dzdHIgIiAlcyBoYXIgYmxpdml0IGRpbmdsYW5kZSEiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTI4MQorIywgYy1mb3JtYXQKK21zZ2lkICJQcnVuaW5nICVzIgorbXNnc3RyICJSZW5zYXIgJXMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTI4MgorIywgYy1mb3JtYXQKK21zZ2lkICJVUkw6ICVzIgorbXNnc3RyICJVUkw6ICVzIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjEyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiICogW3dvdWxkIHBydW5lXSAlcyIKK21zZ3N0ciAiICogW3NrdWxsZSByZW5zYV0gJXMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTI5OAorIywgYy1mb3JtYXQKK21zZ2lkICIgKiBbcHJ1bmVkXSAlcyIKK21zZ3N0ciAiICogW3JlbnNhZF0gJXMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTMyMQorbXNnaWQgInBydW5lIHJlbW90ZXMgYWZ0ZXIgZmV0Y2hpbmciCittc2dzdHIgInJlbnNhIGZqw6RycmFyIGVmdGVyIGjDpG10bmluZyIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxMzg3IGJ1aWx0aW4vcmVtb3RlLmM6MTQ2MQorIywgYy1mb3JtYXQKK21zZ2lkICJObyBzdWNoIHJlbW90ZSAnJXMnIgorbXNnc3RyICJJbmdlbiBzw6VkYW4gZmrDpHJyIFwiJXNcIiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNDA3Cittc2dpZCAiYWRkIGJyYW5jaCIKK21zZ3N0ciAibMOkZ2cgdGlsbCBncmVuIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE0MTQKK21zZ2lkICJubyByZW1vdGUgc3BlY2lmaWVkIgorbXNnc3RyICJpbmdlbiBmasOkcnIgYW5nYXZzIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE0MzYKK21zZ2lkICJtYW5pcHVsYXRlIHB1c2ggVVJMcyIKK21zZ3N0ciAibWFuaXB1bGVyYSBVUkw6YXIgZsO2ciBzw6RuZG5pbmciCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQzOAorbXNnaWQgImFkZCBVUkwiCittc2dzdHIgImzDpGdnIHRpbGwgVVJMIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE0NDAKK21zZ2lkICJkZWxldGUgVVJMcyIKK21zZ3N0ciAidGEgYm9ydCBVUkw6YXIiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQ0NworbXNnaWQgIi0tYWRkIC0tZGVsZXRlIGRvZXNuJ3QgbWFrZSBzZW5zZSIKK21zZ3N0ciAiLS1hZGQgLS1kZWxldGUgZ2VyIGluZ2VuIG1lbmluZyIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNDg3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgb2xkIFVSTCBwYXR0ZXJuOiAlcyIKK21zZ3N0ciAiRmVsYWt0aWcgZ2FtbWFsdCBVUkwtbcO2bnN0ZXI6ICVzIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE0OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm8gc3VjaCBVUkwgZm91bmQ6ICVzIgorbXNnc3RyICJJbmdlbiBzw6VkYW4gVVJMIGhpdHRhZGVzOiAlcyIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNDk3Cittc2dpZCAiV2lsbCBub3QgZGVsZXRlIGFsbCBub24tcHVzaCBVUkxzIgorbXNnc3RyICJLb21tZXIgaW50ZSB0YSBib3J0IGFsbGEgaWNrZS1zw6RuZC1VUkw6ZXIiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTU2OQorbXNnaWQgImJlIHZlcmJvc2U7IG11c3QgYmUgcGxhY2VkIGJlZm9yZSBhIHN1YmNvbW1hbmQiCittc2dzdHIgInZhciBwcmF0c2FtOyBtw6VzdGUgc2tyaXZhcyBmw7ZyZSBldHQgdW5kZXJrb21tYW5kbyIKKworIzogYnVpbHRpbi9yZXBsYWNlLmM6MTcKK21zZ2lkICJnaXQgcmVwbGFjZSBbLWZdIDxvYmplY3Q+IDxyZXBsYWNlbWVudD4iCittc2dzdHIgImdpdCByZXBsYWNlIFstZl0gPG9iamVrdD4gPGVyc8OkdHRuaW5nPiIKKworIzogYnVpbHRpbi9yZXBsYWNlLmM6MTgKK21zZ2lkICJnaXQgcmVwbGFjZSAtZCA8b2JqZWN0Pi4uLiIKK21zZ3N0ciAiZ2l0IHJlcGxhY2UgLWQgPG9iamVrdD4uLi4iCisKKyM6IGJ1aWx0aW4vcmVwbGFjZS5jOjE5Cittc2dpZCAiZ2l0IHJlcGxhY2UgLWwgWzxwYXR0ZXJuPl0iCittc2dzdHIgImdpdCByZXBsYWNlIC1sIFs8bcO2bnN0ZXI+XSIKKworIzogYnVpbHRpbi9yZXBsYWNlLmM6MTIxCittc2dpZCAibGlzdCByZXBsYWNlIHJlZnMiCittc2dzdHIgInZpc2EgZXJzw6R0dG5pbmdzcmVmZXJlbnNlciIKKworIzogYnVpbHRpbi9yZXBsYWNlLmM6MTIyCittc2dpZCAiZGVsZXRlIHJlcGxhY2UgcmVmcyIKK21zZ3N0ciAidGEgYm9ydCBlcnPDpHR0bmluZ3NyZWZlcmVuc2VyIgorCisjOiBidWlsdGluL3JlcGxhY2UuYzoxMjMKK21zZ2lkICJyZXBsYWNlIHRoZSByZWYgaWYgaXQgZXhpc3RzIgorbXNnc3RyICJlcnPDpHR0IHJlZmVyZW5zZW4gb20gZGVuIGZpbm5zIgorCisjOiBidWlsdGluL3JlcmVyZS5jOjExCittc2dpZCAiZ2l0IHJlcmVyZSBbY2xlYXIgfCBmb3JnZXQgcGF0aC4uLiB8IHN0YXR1cyB8IHJlbWFpbmluZyB8IGRpZmYgfCBnY10iCittc2dzdHIgImdpdCByZXJlcmUgW2NsZWFyIHwgZm9yZ2V0IHBhdGguLi4gfCBzdGF0dXMgfCByZW1haW5pbmcgfCBkaWZmIHwgZ2NdIgorCisjOiBidWlsdGluL3JlcmVyZS5jOjU2Cittc2dpZCAicmVnaXN0ZXIgY2xlYW4gcmVzb2x1dGlvbnMgaW4gaW5kZXgiCittc2dzdHIgInJlZ2lzdHJlcmEgcmVuYSBsw7ZzbmluZ2FyIGkgaW5kZXhldCIKKworIzogYnVpbHRpbi9yZXNldC5jOjI1Cittc2dpZCAiIgorImdpdCByZXNldCBbLS1taXhlZCB8IC0tc29mdCB8IC0taGFyZCB8IC0tbWVyZ2UgfCAtLWtlZXBdIFstcV0gWzxjb21taXQ+XSIKK21zZ3N0ciAiIgorImdpdCByZXNldCBbLS1taXhlZCB8IC0tc29mdCB8IC0taGFyZCB8IC0tbWVyZ2UgfCAtLWtlZXBdIFstcV0gWzxpbmNoZWNrbmluZz5dIgorCisjOiBidWlsdGluL3Jlc2V0LmM6MjYKK21zZ2lkICJnaXQgcmVzZXQgWy1xXSA8dHJlZS1pc2g+IFstLV0gPHBhdGhzPi4uLiIKK21zZ3N0ciAiZ2l0IHJlc2V0IFstcV0gPHRyw6RkLWlndD4gWy0tXSA8c8O2a3bDpGdhcj4uLi4iCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNworbXNnaWQgImdpdCByZXNldCAtLXBhdGNoIFs8dHJlZS1pc2g+XSBbLS1dIFs8cGF0aHM+Li4uXSIKK21zZ3N0ciAiZ2l0IHJlc2V0IC0tcGF0Y2ggWzx0csOkZC1pZ3Q+XSBbLS1dIFs8c8O2a3bDpGdhcj4uLi5dIgorCiAjOiBidWlsdGluL3Jlc2V0LmM6MzMKIG1zZ2lkICJtaXhlZCIKIG1zZ3N0ciAiYmxhbmRhZCIKQEAgLTI5OTQsOTEgKzgxNjMsMjM0IEBACiBtc2dzdHIgImjDpXJkIgogCiAjOiBidWlsdGluL3Jlc2V0LmM6MzMKK21zZ2lkICJtZXJnZSIKK21zZ3N0ciAic2FtbWFuc2xhZ25pbmciCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMwogbXNnaWQgImtlZXAiCiBtc2dzdHIgImJlaMOlbGwiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzo3NworIzogYnVpbHRpbi9yZXNldC5jOjczCiBtc2dpZCAiWW91IGRvIG5vdCBoYXZlIGEgdmFsaWQgSEVBRC4iCiBtc2dzdHIgIkR1IGhhciBpbnRlIGVuIGdpbHRpZyBIRUFELiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjc5CisjOiBidWlsdGluL3Jlc2V0LmM6NzUKIG1zZ2lkICJGYWlsZWQgdG8gZmluZCB0cmVlIG9mIEhFQUQuIgogbXNnc3RyICJLdW5kZSBpbnRlIGhpdHRhIHRyw6RkZXIgZsO2ciBIRUFELiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjg1CisjOiBidWlsdGluL3Jlc2V0LmM6ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGZpbmQgdHJlZSBvZiAlcy4iCiBtc2dzdHIgIkt1bmRlIGludGUgaGl0dGEgdHLDpGRlciBmw7ZyICVzLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjk2Ci1tc2dpZCAiQ291bGQgbm90IHdyaXRlIG5ldyBpbmRleCBmaWxlLiIKLW1zZ3N0ciAiS3VuZGUgaW50ZSBza3JpdmEgbnkgaW5kZXhmaWwuIgotCi0jOiBidWlsdGluL3Jlc2V0LmM6MTA2CisjOiBidWlsdGluL3Jlc2V0LmM6OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiSEVBRCBpcyBub3cgYXQgJXMiCiBtc2dzdHIgIkhFQUQgw6RyIG51IHDDpSAlcyIKIAotIzogYnVpbHRpbi9yZXNldC5jOjEzMAotbXNnaWQgIkNvdWxkIG5vdCByZWFkIGluZGV4IgotbXNnc3RyICJLdW5kZSBpbnRlIGzDpHNhIGluZGV4ZXQiCi0KLSM6IGJ1aWx0aW4vcmVzZXQuYzoxMzMKLW1zZ2lkICJVbnN0YWdlZCBjaGFuZ2VzIGFmdGVyIHJlc2V0OiIKLW1zZ3N0ciAiT2vDtmFkZSDDpG5kcmluZ2FyIGVmdGVyIMOldGVyc3TDpGxsbmluZzoiCi0KLSM6IGJ1aWx0aW4vcmVzZXQuYzoyMjMKKyM6IGJ1aWx0aW4vcmVzZXQuYzoxNjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGRvIGEgJXMgcmVzZXQgaW4gdGhlIG1pZGRsZSBvZiBhIG1lcmdlLiIKIG1zZ3N0ciAiS2FuIGludGUgdXRmw7ZyYSBlbiAlcyDDpXRlcnN0w6RsbG5pbmcgbWl0dCBpIGVuIHNhbW1hbnNsYWduaW5nLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI5NworIzogYnVpbHRpbi9yZXNldC5jOjI0OAorbXNnaWQgImJlIHF1aWV0LCBvbmx5IHJlcG9ydCBlcnJvcnMiCittc2dzdHIgInZhciB0eXN0LCByYXBwb3J0ZXJhIGVuZGFzdCBmZWwiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTAKK21zZ2lkICJyZXNldCBIRUFEIGFuZCBpbmRleCIKK21zZ3N0ciAiw6V0ZXJzdMOkbGwgSEVBRCBvY2ggaW5kZXgiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTEKK21zZ2lkICJyZXNldCBvbmx5IEhFQUQiCittc2dzdHIgIsOldGVyc3TDpGxsIGVuZGFzdCBIRUFEIgorCisjOiBidWlsdGluL3Jlc2V0LmM6MjUzIGJ1aWx0aW4vcmVzZXQuYzoyNTUKK21zZ2lkICJyZXNldCBIRUFELCBpbmRleCBhbmQgd29ya2luZyB0cmVlIgorbXNnc3RyICLDpXRlcnN0w6RsbCBIRUFELCBpbmRleCBvY2ggYXJiZXRza2F0YWxvZyIKKworIzogYnVpbHRpbi9yZXNldC5jOjI1NworbXNnaWQgInJlc2V0IEhFQUQgYnV0IGtlZXAgbG9jYWwgY2hhbmdlcyIKK21zZ3N0ciAiw6V0ZXJzdMOkbGwgSEVBRCBtZW4gYmVow6VsbCBsb2thbGEgw6RuZHJpbmdhciIKKworIzogYnVpbHRpbi9yZXNldC5jOjI3NQorIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgcmV2aXNpb24uIgorbXNnc3RyICJLdW5kZSBpbnRlIHNsw6UgdXBwIFwiJXNcIiBzb20gZW4gZ2lsdGlnIHJldmlzaW9uLiIKKworIzogYnVpbHRpbi9yZXNldC5jOjI3OCBidWlsdGluL3Jlc2V0LmM6Mjg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBvYmplY3QgJyVzJy4iCiBtc2dzdHIgIkthbiBpbnRlIHRvbGthIG9iamVrdGV0IFwiJXNcIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMwMgorIzogYnVpbHRpbi9yZXNldC5jOjI4MworIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgdHJlZS4iCittc2dzdHIgIkt1bmRlIGludGUgc2zDpSB1cHAgXCIlc1wiIHNvbSBldHQgZ2lsdGlndCB0csOkZC4iCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyOTIKIG1zZ2lkICItLXBhdGNoIGlzIGluY29tcGF0aWJsZSB3aXRoIC0te2hhcmQsbWl4ZWQsc29mdH0iCiBtc2dzdHIgIi0tcGF0Y2ggw6RyIGlua29tcGF0aWJlbCBtZWQgLS17aGFyZCxtaXhlZCxzb2Z0fSIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMxMQorIzogYnVpbHRpbi9yZXNldC5jOjMwMQogbXNnaWQgIi0tbWl4ZWQgd2l0aCBwYXRocyBpcyBkZXByZWNhdGVkOyB1c2UgJ2dpdCByZXNldCAtLSA8cGF0aHM+JyBpbnN0ZWFkLiIKIG1zZ3N0ciAiIgogIi0tbWl4ZWQgcmVrb21tZW5kZXJhcyBpbnRlIG1lZCBzw7ZrdsOkZ2FyOyBhbnbDpG5kIFwiZ2l0IHJlc2V0IC0tIDxzw7ZrdsOkZ2FyPlwiLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMxMworIzogYnVpbHRpbi9yZXNldC5jOjMwMwogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZG8gJXMgcmVzZXQgd2l0aCBwYXRocy4iCiBtc2dzdHIgIkthbiBpbnRlIGfDtnJhICVzIMOldGVyc3TDpGxsbmluZyBtZWQgc8O2a3bDpGdhci4iCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzozMjUKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgcmVzZXQgaXMgbm90IGFsbG93ZWQgaW4gYSBiYXJlIHJlcG9zaXRvcnkiCiBtc2dzdHIgIiVzIMOldGVyc3TDpGxsbmluZyB0aWxsw6V0cyBpbnRlIGkgZXR0IG5ha2V0IGFya2l2IgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzQxCisjOiBidWlsdGluL3Jlc2V0LmM6MzMzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCByZXNldCBpbmRleCBmaWxlIHRvIHJldmlzaW9uICclcycuIgogbXNnc3RyICJLdW5kZSBpbnRlIMOldGVyc3TDpGxsYSBpbmRleGZpbGVuIHRpbGwgdmVyc2lvbmVuIFwiJXNcIi4iCiAKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMzkKK21zZ2lkICJVbnN0YWdlZCBjaGFuZ2VzIGFmdGVyIHJlc2V0OiIKK21zZ3N0ciAiT2vDtmFkZSDDpG5kcmluZ2FyIGVmdGVyIMOldGVyc3TDpGxsbmluZzoiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzozNDQKK21zZ2lkICJDb3VsZCBub3Qgd3JpdGUgbmV3IGluZGV4IGZpbGUuIgorbXNnc3RyICJLdW5kZSBpbnRlIHNrcml2YSBueSBpbmRleGZpbC4iCisKKyM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzM5Cittc2dpZCAiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IFtvcHRpb25zXSAtLSBbPGFyZ3M+Li4uXSIKK21zZ3N0ciAiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IFtvcHRpb25zXSAtLSBbPGFyZ3VtZW50Pi4uLl0iCisKKyM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzQ0Cittc2dpZCAia2VlcCB0aGUgYC0tYCBwYXNzZWQgYXMgYW4gYXJnIgorbXNnc3RyICJiZWjDpWxsIFwiLS1cIiBzw6RudCBzb20gYXJndW1lbnQiCisKKyM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzQ2Cittc2dpZCAic3RvcCBwYXJzaW5nIGFmdGVyIHRoZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50IgorbXNnc3RyICJzbHV0YSB0b2xrYSBlZnRlciBmw7Zyc3RhIGFyZ3VtZW50IHNvbSBpbnRlIMOkciBmbGFnZ2EiCisKKyM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6NDY0Cittc2dpZCAiIgorImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCBbb3B0aW9uc10gLS0gWzxhcmdzPi4uLl1cbiIKKyIgICBvcjogZ2l0IHJldi1wYXJzZSAtLXNxLXF1b3RlIFs8YXJnPi4uLl1cbiIKKyIgICBvcjogZ2l0IHJldi1wYXJzZSBbb3B0aW9uc10gWzxhcmc+Li4uXVxuIgorIlxuIgorIlJ1biBcImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCAtaFwiIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBmaXJzdCB1c2FnZS4iCittc2dzdHIgIiIKKyJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgW2ZsYWdnb3JdIC0tIFs8YXJndW1lbnQ+Li4uXVxuIgorIiAgICAgZWxsZXI6IGdpdCByZXYtcGFyc2UgLS1zcS1xdW90ZSBbPGFyZ3VtZW50Pi4uLl1cbiIKKyIgICAgIGVsbGVyOiBnaXQgcmV2LXBhcnNlIFtmbGFnZ29yXSBbPGFyZ3VtZW50Pi4uLl1cbiIKKyJcbiIKKyJLw7ZyIFwiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IC1oXCIgZsO2ciBtZXIgaW5mb3JtYXRpb24gb20gZGVuIGbDtnJzdGEgIgorInZhcmlhbnRlbi4iCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjIKK21zZ2lkICJnaXQgcmV2ZXJ0IFtvcHRpb25zXSA8Y29tbWl0LWlzaD4uLi4iCittc2dzdHIgImdpdCByZXZlcnQgW2ZsYWdnb3JdIDxpbmNoZWNrbmluZy1pZ3Q+Li4uIgorCisjOiBidWlsdGluL3JldmVydC5jOjIzCittc2dpZCAiZ2l0IHJldmVydCA8c3ViY29tbWFuZD4iCittc2dzdHIgImdpdCByZXZlcnQgPHVuZGVya29tbWFuZG8+IgorCisjOiBidWlsdGluL3JldmVydC5jOjI4Cittc2dpZCAiZ2l0IGNoZXJyeS1waWNrIFtvcHRpb25zXSA8Y29tbWl0LWlzaD4uLi4iCittc2dzdHIgImdpdCBjaGVycnktcGljayBbZmxhZ2dvcl0gPGluY2hlY2tuaW5nLWlndD4uLi4iCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjkKK21zZ2lkICJnaXQgY2hlcnJ5LXBpY2sgPHN1YmNvbW1hbmQ+IgorbXNnc3RyICJnaXQgY2hlcnJ5LXBpY2sgPHVuZGVya29tbWFuZG8+IgorCiAjOiBidWlsdGluL3JldmVydC5jOjcwIGJ1aWx0aW4vcmV2ZXJ0LmM6OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6ICVzIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiCiBtc2dzdHIgIiVzOiAlcyBrYW4gaW50ZSBhbnbDpG5kYXMgbWVkICVzIgogCisjOiBidWlsdGluL3JldmVydC5jOjEwMworbXNnaWQgImVuZCByZXZlcnQgb3IgY2hlcnJ5LXBpY2sgc2VxdWVuY2UiCittc2dzdHIgImF2c2x1dGEgcmV2ZXJ0LSBlbGxlciBjaGVycnktcGljay1zZWt2ZW5zIgorCisjOiBidWlsdGluL3JldmVydC5jOjEwNAorbXNnaWQgInJlc3VtZSByZXZlcnQgb3IgY2hlcnJ5LXBpY2sgc2VxdWVuY2UiCittc2dzdHIgIsOldGVydXBwdGEgcmV2ZXJ0LSBlbGxlciBjaGVycnktcGljay1zZWt2ZW5zIgorCisjOiBidWlsdGluL3JldmVydC5jOjEwNQorbXNnaWQgImNhbmNlbCByZXZlcnQgb3IgY2hlcnJ5LXBpY2sgc2VxdWVuY2UiCittc2dzdHIgImF2YnJ5dCByZXZlcnQtIGVsbGVyIGNoZXJyeS1waWNrLXNla3ZlbnMiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA2Cittc2dpZCAiZG9uJ3QgYXV0b21hdGljYWxseSBjb21taXQiCittc2dzdHIgImNoZWNrYSBpbnRlIGluIGF1dG9tYXRpc2t0IgorCisjOiBidWlsdGluL3JldmVydC5jOjEwNworbXNnaWQgImVkaXQgdGhlIGNvbW1pdCBtZXNzYWdlIgorbXNnc3RyICJyZWRpZ2VyYSBpbmNoZWNrbmluZ3NtZWRkZWxhbmRldCIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMTAKK21zZ2lkICJwYXJlbnQgbnVtYmVyIgorbXNnc3RyICJudW1tZXIgcMOlIGbDtnLDpGxkZXIiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTEyCittc2dpZCAibWVyZ2Ugc3RyYXRlZ3kiCittc2dzdHIgInNhbW1hbnNsYWduaW5zc3RyYXRlZ2kiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTEzCittc2dpZCAib3B0aW9uIgorbXNnc3RyICJhbHRlcm5hdGl2IgorCisjOiBidWlsdGluL3JldmVydC5jOjExNAorbXNnaWQgIm9wdGlvbiBmb3IgbWVyZ2Ugc3RyYXRlZ3kiCittc2dzdHIgImFsdGVybmF0aXYgZm/MiHIgc2FtbWFuc2xhZ25pbmdzc3RyYXRlZ2kiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI1Cittc2dpZCAiYXBwZW5kIGNvbW1pdCBuYW1lIgorbXNnc3RyICJsw6RnZyB0aWxsIGluY2hlY2tuaW5nc25hbW4iCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI2Cittc2dpZCAiYWxsb3cgZmFzdC1mb3J3YXJkIgorbXNnc3RyICJ0aWxsw6V0IHNuYWJic3BvbG5pbmciCisKICM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI3Cittc2dpZCAicHJlc2VydmUgaW5pdGlhbGx5IGVtcHR5IGNvbW1pdHMiCittc2dzdHIgImJlaMOlbGwgaW5jaGVja25pbmdhciBzb20gYsO2cmphciBzb20gdG9tbWEiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI4Cittc2dpZCAiYWxsb3cgY29tbWl0cyB3aXRoIGVtcHR5IG1lc3NhZ2VzIgorbXNnc3RyICJ0aWxsw6V0IGluY2hlY2tuaW5nYXIgbWVkIHRvbXQgbWVkZGVsYW5kZSIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMjkKK21zZ2lkICJrZWVwIHJlZHVuZGFudCwgZW1wdHkgY29tbWl0cyIKK21zZ3N0ciAiYmVow6VsbCByZWR1bmRhbnRhLCB0b21tYSBpbmNoZWNrbmluZ2FyIgorCisjOiBidWlsdGluL3JldmVydC5jOjEzMwogbXNnaWQgInByb2dyYW0gZXJyb3IiCiBtc2dzdHIgInByb2dyYW1mZWwiCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjEzCisjOiBidWlsdGluL3JldmVydC5jOjIyMwogbXNnaWQgInJldmVydCBmYWlsZWQiCiBtc2dzdHIgIlwicmV2ZXJ0XCIgbWlzc2x5Y2thZGVzIgogCi0jOiBidWlsdGluL3JldmVydC5jOjIyOAorIzogYnVpbHRpbi9yZXZlcnQuYzoyMzgKIG1zZ2lkICJjaGVycnktcGljayBmYWlsZWQiCiBtc2dzdHIgIlwiY2hlcnJ5LXBpY2tcIiBtaXNzbHlja2FkZXMiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxMDkKKyM6IGJ1aWx0aW4vcm0uYzoxNQorbXNnaWQgImdpdCBybSBbb3B0aW9uc10gWy0tXSA8ZmlsZT4uLi4iCittc2dzdHIgImdpdCBybSBbZmxhZ2dvcl0gWy0tXSA8ZmlsPi4uLiIKKworIzogYnVpbHRpbi9ybS5jOjY0IGJ1aWx0aW4vcm0uYzoxODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorInN1Ym1vZHVsZSAnJXMnIChvciBvbmUgb2YgaXRzIG5lc3RlZCBzdWJtb2R1bGVzKSB1c2VzIGEgLmdpdCBkaXJlY3RvcnlcbiIKKyIodXNlICdybSAtcmYnIGlmIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgaXQgaW5jbHVkaW5nIGFsbCBvZiBpdHMgaGlzdG9yeSkiCittc2dzdHIgIiIKKyJ1bmRlcm1vZHVsZW4gXCIlc1wiIChlbGxlciBlbiBhdiBkZXNzIHVuZGVybW9kdWxlcikgYW52w6RuZGVyIGVuIC5naXQtIgorImthdGFsb2dcbiIKKyIoYW52w6RuZCBcInJtIC1yZlwiIG9tIGR1IHZlcmtsaWdlbiB2aWxsIHRhIGJvcnQgZGVuIG9jaCBhbGwgZGVzcyBoaXN0b3JpaykiCisKKyM6IGJ1aWx0aW4vcm0uYzoxNzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgaGFzIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCBmcm9tIGJvdGggdGhlIGZpbGUgYW5kIHRoZSBIRUFEXG4iCkBAIC0zMDg3LDcgKzgzOTksNyBAQAogIlwiJXNcIiBoYXIga8O2YXQgw6RuZHJpbmdhciBzb20gc2tpbGplciBzaWcgYsOlZGUgZnLDpW4gZmlsZW4gb2NoIEhFQURcbiIKICIoYW52w6RuZCAtZiBmw7ZyIGF0dCB0dmluZ2EgYm9ydHRhZ25pbmcpIgogCi0jOiBidWlsdGluL3JtLmM6MTE1CisjOiBidWlsdGluL3JtLmM6MTgwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnIGhhcyBjaGFuZ2VzIHN0YWdlZCBpbiB0aGUgaW5kZXhcbiIKQEAgLTMwOTYsNyArODQwOCw3IEBACiAiXCIlc1wiIGhhciBrw7ZhZGUgw6RuZHJpbmdhciBpIGluZGV4ZXRcbiIKICIoYW52w6RuZCAtLWNhY2hlZCBmw7ZyIGF0dCBiZWjDpWxsYSBmaWxlbiBlbGxlciAtZiBmw7ZyIGF0dCB0dmluZ2EgYm9ydHRhZ25pbmcpIgogCi0jOiBidWlsdGluL3JtLmM6MTE5CisjOiBidWlsdGluL3JtLmM6MTkxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnIGhhcyBsb2NhbCBtb2RpZmljYXRpb25zXG4iCkBAIC0zMTA1LDIzNyArODQxNyw4ODIgQEAKICJcIiVzXCIgaGFyIGxva2FsYSDDpG5kcmluZ2FyXG4iCiAiKGFudsOkbmQgLS1jYWNoZWQgZsO2ciBhdHQgYmVow6VsbGEgZmlsZW4gZWxsZXIgLWYgZsO2ciBhdHQgdHZpbmdhIGJvcnR0YWduaW5nKSIKIAotIzogYnVpbHRpbi9ybS5jOjE5NAorIzogYnVpbHRpbi9ybS5jOjIwNworbXNnaWQgImRvIG5vdCBsaXN0IHJlbW92ZWQgZmlsZXMiCittc2dzdHIgImxpc3RhIGludGUgYm9ydHRhZ25hIGZpbGVyIgorCisjOiBidWlsdGluL3JtLmM6MjA4Cittc2dpZCAib25seSByZW1vdmUgZnJvbSB0aGUgaW5kZXgiCittc2dzdHIgInRhIGJhcmEgYm9ydCBmcsOlbiBpbmRleGV0IgorCisjOiBidWlsdGluL3JtLmM6MjA5Cittc2dpZCAib3ZlcnJpZGUgdGhlIHVwLXRvLWRhdGUgY2hlY2siCittc2dzdHIgIsO2dmVyc3R5ciDDoGpvdXItdGVzdGV0IgorCisjOiBidWlsdGluL3JtLmM6MjEwCittc2dpZCAiYWxsb3cgcmVjdXJzaXZlIHJlbW92YWwiCittc2dzdHIgInRpbGzDpXQgcmVrdXJzaXYgYm9ydHRhZ25pbmciCisKKyM6IGJ1aWx0aW4vcm0uYzoyMTIKK21zZ2lkICJleGl0IHdpdGggYSB6ZXJvIHN0YXR1cyBldmVuIGlmIG5vdGhpbmcgbWF0Y2hlZCIKK21zZ3N0ciAiYXZzbHV0YSBtZWQgbm9sbHN0YXR1cyDDpHZlbiBvbSBpbmdldCB0csOkZmZhZGVzIgorCisjOiBidWlsdGluL3JtLmM6MjgzCiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vdCByZW1vdmluZyAnJXMnIHJlY3Vyc2l2ZWx5IHdpdGhvdXQgLXIiCiBtc2dzdHIgInRhciBpbnRlIGJvcnQgXCIlc1wiIHJla3Vyc2l2dCB1dGFuIC1yIgogCi0jOiBidWlsdGluL3JtLmM6MjMwCisjOiBidWlsdGluL3JtLmM6MzIyCiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCBybTogdW5hYmxlIHRvIHJlbW92ZSAlcyIKIG1zZ3N0ciAiZ2l0IHJtOiBrYW4gaW50ZSB0YSBib3J0ICVzIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MTU3CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MTMKK21zZ2lkICJnaXQgc2hvcnRsb2cgWzxvcHRpb25zPl0gWzxyZXZpc2lvbiByYW5nZT5dIFtbLS1dIFs8cGF0aD4uLi5dXSIKK21zZ3N0ciAiZ2l0IHNob3J0bG9nIFs8ZmxhZ2dvcj5dIFs8dmVyc2lvbnNpbnRlcnZhbGw+XSBbWy0tXSA8c8O2a3bDpGc+Li4uXSIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjEzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJNaXNzaW5nIGF1dGhvcjogJXMiCiBtc2dzdHIgIkbDtnJmYXR0YXJlIHNha25hczogJXMiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTgKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMjcKK21zZ2lkICJzb3J0IG91dHB1dCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiBjb21taXRzIHBlciBhdXRob3IiCittc2dzdHIgInNvcnRlcmEgdXRkYXRhIGVubGlndCBhbnRhbCBpbmNoZWNrbmluZ2FyIHBlciBmw7ZyZmF0dGFyZSIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIyOQorbXNnaWQgIlN1cHByZXNzIGNvbW1pdCBkZXNjcmlwdGlvbnMsIG9ubHkgcHJvdmlkZXMgY29tbWl0IGNvdW50IgorbXNnc3RyICJVbmRlcnRyeWNrIGJlc2tyaXZuaW5nYXIsIHZpc2EgYmFyYSBhbnRhbCBpbmNoZWNrbmluZ2FyIgorCisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjMxCittc2dpZCAiU2hvdyB0aGUgZW1haWwgYWRkcmVzcyBvZiBlYWNoIGF1dGhvciIKK21zZ3N0ciAiVmlzYSBlLXBvc3RhZHJlc3MgZsO2ciB2YXJqZSBmw7ZyZmF0dGFyZSIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMgorbXNnaWQgIndbLGkxWyxpMl1dIgorbXNnc3RyICJ3WyxpMVssaTJdXSIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMworbXNnaWQgIkxpbmV3cmFwIG91dHB1dCIKK21zZ3N0ciAiUmFkYnJ5dCB1dGRhdGEiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo5Cittc2dpZCAiIgorImdpdCBzaG93LWJyYW5jaCBbLWF8LS1hbGxdIFstcnwtLXJlbW90ZXNdIFstLXRvcG8tb3JkZXIgfCAtLWRhdGUtb3JkZXJdIFstLSIKKyJjdXJyZW50XSBbLS1jb2xvcls9PHdoZW4+XSB8IC0tbm8tY29sb3JdIFstLXNwYXJzZV0gWy0tbW9yZT08bj4gfCAtLWxpc3QgfCAtLSIKKyJpbmRlcGVuZGVudCB8IC0tbWVyZ2UtYmFzZV0gWy0tbm8tbmFtZSB8IC0tc2hhMS1uYW1lXSBbLS10b3BpY3NdIFsoPHJldj4gfCAiCisiPGdsb2I+KS4uLl0iCittc2dzdHIgIiIKKyJnaXQgc2hvdy1icmFuY2ggWy1hfC0tYWxsXSBbLXJ8LS1yZW1vdGVzXSBbLS10b3BvLW9yZGVyIHwgLS1kYXRlLW9yZGVyXSBbLS0iCisiY3VycmVudF0gWy0tY29sb3JbPTxuw6RyPl0gfCAtLW5vLWNvbG9yXSBbLS1zcGFyc2VdIFstLW1vcmU9PG4+IHwgLS1saXN0IHwgLS0iCisiaW5kZXBlbmRlbnQgfCAtLW1lcmdlLWJhc2VdIFstLW5vLW5hbWUgfCAtLXNoYTEtbmFtZV0gWy0tdG9waWNzXSBbKDxyZXY+IHwgIgorIjxtw7Zuc3Rlcj4pLi4uXSIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjEwCittc2dpZCAiZ2l0IHNob3ctYnJhbmNoICgtZ3wtLXJlZmxvZylbPTxuPlssPGJhc2U+XV0gWy0tbGlzdF0gWzxyZWY+XSIKK21zZ3N0ciAiZ2l0IHNob3ctYnJhbmNoICgtZ3wtLXJlZmxvZylbPTxuPlssPGJhcz5dXSBbLS1saXN0XSBbPHJlZj5dIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjUwCittc2dpZCAic2hvdyByZW1vdGUtdHJhY2tpbmcgYW5kIGxvY2FsIGJyYW5jaGVzIgorbXNnc3RyICJ2aXNhIGZqw6RycnNww6VyYW5kZSBvY2ggbG9rYWxhIGdyZW5hciIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1MgorbXNnaWQgInNob3cgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzIgorbXNnc3RyICJ2aXNhIGZqw6RycnNww6VyYW5kZSBncmVuYXIiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTQKK21zZ2lkICJjb2xvciAnKiErLScgY29ycmVzcG9uZGluZyB0byB0aGUgYnJhbmNoIgorbXNnc3RyICJmw6RyZ2EgXCIqISstXCIgZW5saWd0IGdyZW5lbiIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1NgorbXNnaWQgInNob3cgPG4+IG1vcmUgY29tbWl0cyBhZnRlciB0aGUgY29tbW9uIGFuY2VzdG9yIgorbXNnc3RyICJ2aXNhIDxuPiB5dHRlcmxpZ2FyZSBpbmNoZWNrbmluZ2FyIGVmdGVyIGdlbWVuc2FtIGFuZmFkZXIiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTgKK21zZ2lkICJzeW5vbnltIHRvIG1vcmU9LTEiCittc2dzdHIgInN5bm9ueW0gdGlsbCBtb3JlPS0xIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU5Cittc2dpZCAic3VwcHJlc3MgbmFtaW5nIHN0cmluZ3MiCittc2dzdHIgInVuZGVydHljayBuYW1uc3Ryw6RuZ2FyIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjYxCittc2dpZCAiaW5jbHVkZSB0aGUgY3VycmVudCBicmFuY2giCittc2dzdHIgImlua2x1ZGVyYSBha3R1ZWxsIGdyZW4iCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NjMKK21zZ2lkICJuYW1lIGNvbW1pdHMgd2l0aCB0aGVpciBvYmplY3QgbmFtZXMiCittc2dzdHIgIm5hbW5nZSBpbmNoZWNrbmluZ2FyIG1lZCBkZXJhcyBvYmpla3RuYW1uIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY1Cittc2dpZCAic2hvdyBwb3NzaWJsZSBtZXJnZSBiYXNlcyIKK21zZ3N0ciAidmlzYSBtw7ZqbGlnYSBzYW1tYW5zbGFuaW5nc2Jhc2VyIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY3Cittc2dpZCAic2hvdyByZWZzIHVucmVhY2hhYmxlIGZyb20gYW55IG90aGVyIHJlZiIKK21zZ3N0ciAidmlzYSByZWZlcmVuc2VyIHNvbSBpbnRlIGthbiBuw6VzIGZyw6VuIG7DpWdvbiBhbm5hbiByZWZlcmVucyIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2OQorbXNnaWQgInNob3cgY29tbWl0cyBpbiB0b3BvbG9naWNhbCBvcmRlciIKK21zZ3N0ciAidmlzYSBpbmNoZWNrbmluZ2FyIGkgdG9wb2xvZ2lzayBvcmRuaW5nIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjcxCittc2dpZCAic2hvdyBvbmx5IGNvbW1pdHMgbm90IG9uIHRoZSBmaXJzdCBicmFuY2giCittc2dzdHIgInZpc2EgZW5kYXN0IGluY2hlY2tuaW5nYXIgaW50ZSBww6UgZGVuIGbDtnJzdGEgZ3JlbmVuIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjczCittc2dpZCAic2hvdyBtZXJnZXMgcmVhY2hhYmxlIGZyb20gb25seSBvbmUgdGlwIgorbXNnc3RyICJ2aXNhIHNhbW1hbnNsYWduaW5nYXIgc29tIGVuZGFzdCBrYW4gbsOlcyBmcsOlbiBlbiBzcGV0cyIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3NQorbXNnaWQgInNob3cgY29tbWl0cyB3aGVyZSBubyBwYXJlbnQgY29tZXMgYmVmb3JlIGl0cyBjaGlsZHJlbiIKK21zZ3N0ciAidmlzYSBpbmNoZWNrbmluZ2FyIGTDpHIgaW5nZW4gZsO2csOkbGRlciBrb21tZXIgZsO2cmUgZGVzcyBiYXJuIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc3Cittc2dpZCAiPG4+Wyw8YmFzZT5dIgorbXNnc3RyICI8bj5bLDxiYXM+XSIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3OAorbXNnaWQgInNob3cgPG4+IG1vc3QgcmVjZW50IHJlZi1sb2cgZW50cmllcyBzdGFydGluZyBhdCBiYXNlIgorbXNnc3RyICJ2aXNhIDxuPiBueWFzdGUgcmVmbG9nZ3Bvc3RlciBtZWQgYsO2cmphbiBww6UgYmFzIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTAKK21zZ2lkICIiCisiZ2l0IHNob3ctcmVmIFstcXwtLXF1aWV0XSBbLS12ZXJpZnldIFstLWhlYWRdIFstZHwtLWRlcmVmZXJlbmNlXSBbLXN8LS1oYXNoIgorIls9PG4+XV0gWy0tYWJicmV2Wz08bj5dXSBbLS10YWdzXSBbLS1oZWFkc10gWy0tXSBbcGF0dGVybipdICIKK21zZ3N0ciAiIgorImdpdCBzaG93LXJlZiBbLXF8LS1xdWlldF0gWy0tdmVyaWZ5XSBbLS1oZWFkXSBbLWR8LS1kZXJlZmVyZW5jZV0gWy1zfC0taGFzaCIKKyJbPTxuPl1dIFstLWFiYnJldls9PG4+XV0gWy0tdGFnc10gWy0taGVhZHNdIFstLV0gW23Dtm5zdGVyKl0gIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTEKK21zZ2lkICJnaXQgc2hvdy1yZWYgLS1leGNsdWRlLWV4aXN0aW5nWz1wYXR0ZXJuXSA8IHJlZi1saXN0IgorbXNnc3RyICJnaXQgc2hvdy1yZWYgLS1leGNsdWRlLWV4aXN0aW5nWz1tw7Zuc3Rlcl0gPCByZWZsaXN0YSIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE2NQorbXNnaWQgIm9ubHkgc2hvdyB0YWdzIChjYW4gYmUgY29tYmluZWQgd2l0aCBoZWFkcykiCittc2dzdHIgInZpc2EgZW5kYXN0IHRhZ2dhciAoa2FuIGtvbWJpbmVyYXMgbWVkIGh1dnVkZW4pIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTY2Cittc2dpZCAib25seSBzaG93IGhlYWRzIChjYW4gYmUgY29tYmluZWQgd2l0aCB0YWdzKSIKK21zZ3N0ciAidmlzYSBlbmRhc3QgaHV2dWRlbiAoa2FuIGtvbWJpbmVyYXMgbWVkIHRhZ2dhcikiCisKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNjcKK21zZ2lkICJzdHJpY3RlciByZWZlcmVuY2UgY2hlY2tpbmcsIHJlcXVpcmVzIGV4YWN0IHJlZiBwYXRoIgorbXNnc3RyICJzdHJpa3RhcmUgcmVmZXJlbnNrb250cm9sbCwga3LDpHZlciBleGFrdCByZWZlcmVuc3PDtmt2w6RnIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTcwIGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzIKK21zZ2lkICJzaG93IHRoZSBIRUFEIHJlZmVyZW5jZSIKK21zZ3N0ciAidmlzYSBIRUFELXJlZmVyZW5zZW4iCisKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzQKK21zZ2lkICJkZXJlZmVyZW5jZSB0YWdzIGludG8gb2JqZWN0IElEcyIKK21zZ3N0ciAiYXZyZWZlcmVyYSB0YWdnYXIgdGlsbCBvYmpla3QtaWQiCisKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzYKK21zZ2lkICJvbmx5IHNob3cgU0hBMSBoYXNoIHVzaW5nIDxuPiBkaWdpdHMiCittc2dzdHIgInZpc2EgU0hBMS1oYXNoIGVuZGFzdCBtZWQgPG4+IHNpZmZyb3IiCisKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxODAKK21zZ2lkICJkbyBub3QgcHJpbnQgcmVzdWx0cyB0byBzdGRvdXQgKHVzZWZ1bCB3aXRoIC0tdmVyaWZ5KSIKK21zZ3N0ciAidmlzYSBpbnRlIHJlc3VsdGF0IHDDpSBzdGFuZGFyZCB1dCAoYW52w6RuZGJhcnQgbWVkIC0tdmVyaWZ5KSIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE4MgorbXNnaWQgInNob3cgcmVmcyBmcm9tIHN0ZGluIHRoYXQgYXJlbid0IGluIGxvY2FsIHJlcG9zaXRvcnkiCittc2dzdHIgInZpc2EgcmVmZXJlbnNlciBmcsOlbiBzdGFuZGFyZCBpbiBzb20gaW50ZSBmaW5ucyBpIGxva2FsdCBhcmtpdiIKKworIzogYnVpbHRpbi9zeW1ib2xpYy1yZWYuYzo3Cittc2dpZCAiZ2l0IHN5bWJvbGljLXJlZiBbb3B0aW9uc10gbmFtZSBbcmVmXSIKK21zZ3N0ciAiZ2l0IHN5bWJvbGljLXJlZiBbZmxhZ2dvcl0gbmFtbiBbcmVmXSIKKworIzogYnVpbHRpbi9zeW1ib2xpYy1yZWYuYzo4Cittc2dpZCAiZ2l0IHN5bWJvbGljLXJlZiAtZCBbLXFdIG5hbWUiCittc2dzdHIgImdpdCBzeW1ib2xpYy1yZWYgLWQgWy1xXSBuYW1uIgorCisjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjQwCittc2dpZCAic3VwcHJlc3MgZXJyb3IgbWVzc2FnZSBmb3Igbm9uLXN5bWJvbGljIChkZXRhY2hlZCkgcmVmcyIKK21zZ3N0ciAiIgorInVuZGVydHJ5Y2sgZmVsbWVkZGVsYW5kZW4gZsO2ciBpY2tlLXN5bWJvbGlza2EgKGZyw6Vua29wcGxhZGUpIHJlZmVyZW5zZXIiCisKKyM6IGJ1aWx0aW4vc3ltYm9saWMtcmVmLmM6NDEKK21zZ2lkICJkZWxldGUgc3ltYm9saWMgcmVmIgorbXNnc3RyICJ0YSBib3J0IHN5bWJvbGlzayByZWZlcmVucyIKKworIzogYnVpbHRpbi9zeW1ib2xpYy1yZWYuYzo0MgorbXNnaWQgInNob3J0ZW4gcmVmIG91dHB1dCIKK21zZ3N0ciAiZsO2cmtvcnRhIHJlZi11dGRhdGEiCisKKyM6IGJ1aWx0aW4vc3ltYm9saWMtcmVmLmM6NDMgYnVpbHRpbi91cGRhdGUtcmVmLmM6MTgKK21zZ2lkICJyZWFzb24iCittc2dzdHIgInNrw6RsIgorCisjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjQzIGJ1aWx0aW4vdXBkYXRlLXJlZi5jOjE4Cittc2dpZCAicmVhc29uIG9mIHRoZSB1cGRhdGUiCittc2dzdHIgInNrw6RsIHRpbGwgdXBwZGF0ZXJpbmdlbiIKKworIzogYnVpbHRpbi90YWcuYzoyMgorbXNnaWQgIiIKKyJnaXQgdGFnIFstYXwtc3wtdSA8a2V5LWlkPl0gWy1mXSBbLW0gPG1zZz58LUYgPGZpbGU+XSA8dGFnbmFtZT4gWzxoZWFkPl0iCittc2dzdHIgIiIKKyJnaXQgdGFnIFstYXwtc3wtdSA8bnlja2VsLWlkPl0gWy1mXSBbLW0gPG1lZGQ+fC1GIDxmaWw+XSA8dGFnZ25hbW4+IFs8aHV2dWQ+XSIKKworIzogYnVpbHRpbi90YWcuYzoyMworbXNnaWQgImdpdCB0YWcgLWQgPHRhZ25hbWU+Li4uIgorbXNnc3RyICJnaXQgdGFnIC1kIDx0YWdnbmFtbj4uLi4iCisKKyM6IGJ1aWx0aW4vdGFnLmM6MjQKK21zZ2lkICIiCisiZ2l0IHRhZyAtbCBbLW5bPG51bT5dXSBbLS1jb250YWlucyA8Y29tbWl0Pl0gWy0tcG9pbnRzLWF0IDxvYmplY3Q+XSBcbiIKKyJcdFx0WzxwYXR0ZXJuPi4uLl0iCittc2dzdHIgIiIKKyJnaXQgdGFnIC1sIFstbls8YW50YWw+XV0gWy0tY29udGFpbnMgPGluY2hlY2tuaW5nPl0gWy0tcG9pbnRzLWF0IDxvYmpla3Q+XSBcbiIKKyJcdFx0Wzxtw7Zuc3Rlcj4uLi5dIgorCisjOiBidWlsdGluL3RhZy5jOjI2Cittc2dpZCAiZ2l0IHRhZyAtdiA8dGFnbmFtZT4uLi4iCittc2dzdHIgImdpdCB0YWcgLXYgPHRhZ2duYW1uPi4uLiIKKworIzogYnVpbHRpbi90YWcuYzo2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJtYWxmb3JtZWQgb2JqZWN0IGF0ICclcyciCiBtc2dzdHIgImZlbGZvcm1hdCBvYmpla3QgdmlkIFwiJXNcIiIKIAotIzogYnVpbHRpbi90YWcuYzoyMDUKKyM6IGJ1aWx0aW4vdGFnLmM6MjA3CiAjLCBjLWZvcm1hdAogbXNnaWQgInRhZyBuYW1lIHRvbyBsb25nOiAlLipzLi4uIgogbXNnc3RyICJ0YWdnbmFtbmV0IGbDtnIgbMOlbmd0OiAlLipzLi4uIgogCi0jOiBidWlsdGluL3RhZy5jOjIxMAorIzogYnVpbHRpbi90YWcuYzoyMTIKICMsIGMtZm9ybWF0CiBtc2dpZCAidGFnICclcycgbm90IGZvdW5kLiIKIG1zZ3N0ciAidGFnZ2VuIFwiJXNcIiBoaXR0YWRlcyBpbnRlLiIKIAotIzogYnVpbHRpbi90YWcuYzoyMjUKKyM6IGJ1aWx0aW4vdGFnLmM6MjI3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkRlbGV0ZWQgdGFnICclcycgKHdhcyAlcylcbiIKIG1zZ3N0ciAiVG9nIGJvcnQgdGFnZyBcIiVzXCIgKHZhciAlcylcbiIKIAotIzogYnVpbHRpbi90YWcuYzoyMzcKKyM6IGJ1aWx0aW4vdGFnLmM6MjM5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCB2ZXJpZnkgdGhlIHRhZyAnJXMnIgogbXNnc3RyICJrdW5kZSBpbnRlIGJla3LDpGZ0YSB0YWdnZW4gXCIlc1wiIgogCi0jOiBidWlsdGluL3RhZy5jOjI0NworIzogYnVpbHRpbi90YWcuYzoyNDkKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgotIiNcbiIKLSIjIFdyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKLSIjIExpbmVzIHN0YXJ0aW5nIHdpdGggJyMnIHdpbGwgYmUgaWdub3JlZC5cbiIKLSIjXG4iCisiV3JpdGUgYSB0YWcgbWVzc2FnZVxuIgorIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIGlnbm9yZWQuXG4iCiBtc2dzdHIgIiIKICJcbiIKLSIjXG4iCi0iIyBTa3JpdiBldHQgdGFnZ21lZGRlbGFuZGVcbiIKLSIjIFJhZGVyIHNvbSBpbmxlZHMgbWVkIFwiI1wiIGlnbm9yZXJhcy5cbiIKLSIjXG4iCisiU2tyaXYgZXR0IHRhZ2dtZWRkZWxhbmRlXG4iCisiUmFkZXIgc29tIGlubGVkcyBtZWQgXCIlY1wiIGlnbm9yZXJhcy5cbiIKIAotIzogYnVpbHRpbi90YWcuYzoyNTQKKyM6IGJ1aWx0aW4vdGFnLmM6MjUzCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKLSIjXG4iCi0iIyBXcml0ZSBhIHRhZyBtZXNzYWdlXG4iCi0iIyBMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0geW91cnNlbGYgaWYgeW91ICIKKyJXcml0ZSBhIHRhZyBtZXNzYWdlXG4iCisiTGluZXMgc3RhcnRpbmcgd2l0aCAnJWMnIHdpbGwgYmUga2VwdDsgeW91IG1heSByZW1vdmUgdGhlbSB5b3Vyc2VsZiBpZiB5b3UgIgogIndhbnQgdG8uXG4iCi0iI1xuIgogbXNnc3RyICIiCiAiXG4iCi0iI1xuIgotIiMgU2tyaXYgZXR0IHRhZ2dtZWRkZWxhbmRlXG4iCi0iIyBSYWRlciBzb20gaW5sZWRzIG1lZCBcIiNcIiBrb21tZXIgYmVow6VsbGFzOyBkdSBrYW4gc2rDpGx2IHRhIGJvcnQgZGVtIG9tXG4iCi0iIyBkdSB2aWxsLlxuIgotIiNcbiIKKyJTa3JpdiBldHQgdGFnZ21lZGRlbGFuZGVcbiIKKyJSYWRlciBzb20gaW5sZWRzIG1lZCBcIiVjXCIga29tbWVyIGJlaMOlbGxhczsgZHUga2FuIHNqw6RsdiB0YSBib3J0IGRlbSBvbVxuIgorImR1IHZpbGwuXG4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6Mjk0CisjOiBidWlsdGluL3RhZy5jOjI5MgogbXNnaWQgInVuYWJsZSB0byBzaWduIHRoZSB0YWciCiBtc2dzdHIgImt1bmRlIGludGUgc2lnbmVyYSB0YWdnZW4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6Mjk2CisjOiBidWlsdGluL3RhZy5jOjI5NAogbXNnaWQgInVuYWJsZSB0byB3cml0ZSB0YWcgZmlsZSIKIG1zZ3N0ciAia3VuZGUgaW50ZSBza3JpdmEgdGFnZy1maWxlbiIKIAotIzogYnVpbHRpbi90YWcuYzozMjEKKyM6IGJ1aWx0aW4vdGFnLmM6MzE5CiBtc2dpZCAiYmFkIG9iamVjdCB0eXBlLiIKIG1zZ3N0ciAiZmVsYWt0aWcgb2JqZWt0dHlwIgogCi0jOiBidWlsdGluL3RhZy5jOjMzNAorIzogYnVpbHRpbi90YWcuYzozMzIKIG1zZ2lkICJ0YWcgaGVhZGVyIHRvbyBiaWcuIgogbXNnc3RyICJ0YWdnaHV2dWQgZsO2ciBzdG9ydC4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MzY2CisjOiBidWlsdGluL3RhZy5jOjM2OAogbXNnaWQgIm5vIHRhZyBtZXNzYWdlPyIKIG1zZ3N0ciAiaW5nZXQgdGFnZ21lZGRlbGFuZGU/IgogCi0jOiBidWlsdGluL3RhZy5jOjM3MgorIzogYnVpbHRpbi90YWcuYzozNzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiVGhlIHRhZyBtZXNzYWdlIGhhcyBiZWVuIGxlZnQgaW4gJXNcbiIKIG1zZ3N0ciAiVGFnZ21lZGRlbGFuZGV0IGhhciBsw6RtbmF0cyBpICVzXG4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDIxCisjOiBidWlsdGluL3RhZy5jOjQyMwogbXNnaWQgInN3aXRjaCAncG9pbnRzLWF0JyByZXF1aXJlcyBhbiBvYmplY3QiCiBtc2dzdHIgImZsYWdnYW4gXCJwb2ludHMtYXRcIiBiZWjDtnZlciBldHQgb2JqZWN0IgogCi0jOiBidWlsdGluL3RhZy5jOjQyMworIzogYnVpbHRpbi90YWcuYzo0MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAibWFsZm9ybWVkIG9iamVjdCBuYW1lICclcyciCiBtc2dzdHIgImZlbGZvcm1hdCBvYmpla3RuYW1uIFwiJXNcIiIKIAotIzogYnVpbHRpbi90YWcuYzo1MDIKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ1Cittc2dpZCAibGlzdCB0YWcgbmFtZXMiCittc2dzdHIgImxpc3RhIHRhZ2duYW1uIgorCisjOiBidWlsdGluL3RhZy5jOjQ0NworbXNnaWQgInByaW50IDxuPiBsaW5lcyBvZiBlYWNoIHRhZyBtZXNzYWdlIgorbXNnc3RyICJ2aXNhIDxuPiByYWRlciBmcsOlbiB2YXJqZSB0YWdnbWVkZGVsYW5kZSIKKworIzogYnVpbHRpbi90YWcuYzo0NDkKK21zZ2lkICJkZWxldGUgdGFncyIKK21zZ3N0ciAidGEgYm9ydCB0YWdnYXIiCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDUwCittc2dpZCAidmVyaWZ5IHRhZ3MiCittc2dzdHIgInZlcmlmaWVyYSB0YWdnYXIiCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDUyCittc2dpZCAiVGFnIGNyZWF0aW9uIG9wdGlvbnMiCittc2dzdHIgIkFsdGVybmF0aXYgZsO2ciBhdHQgc2thcGEgdGFnZ2FyIgorCisjOiBidWlsdGluL3RhZy5jOjQ1NAorbXNnaWQgImFubm90YXRlZCB0YWcsIG5lZWRzIGEgbWVzc2FnZSIKK21zZ3N0ciAiYW5ub3RlcmFkIHRhZ2csIGJlaMO2dmVyIG1lZGRlbGFuZGUiCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDU2Cittc2dpZCAidGFnIG1lc3NhZ2UiCittc2dzdHIgInRhZ2dtZWRkZWxhbmRlIgorCisjOiBidWlsdGluL3RhZy5jOjQ1OAorbXNnaWQgImFubm90YXRlZCBhbmQgR1BHLXNpZ25lZCB0YWciCittc2dzdHIgImFubm90ZXJhZCBvY2ggR1BHLXNpZ25lcmFkIHRhZ2ciCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDYyCittc2dpZCAidXNlIGFub3RoZXIga2V5IHRvIHNpZ24gdGhlIHRhZyIKK21zZ3N0ciAiYW52w6RuZCBhbm5hbiBueWNrZWwgZsO2ciBhdHQgc2lnbmVyYSB0YWdnZW4iCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDYzCittc2dpZCAicmVwbGFjZSB0aGUgdGFnIGlmIGV4aXN0cyIKK21zZ3N0ciAiZXJzw6R0dCB0YWdnZW4gb20gZGVuIGZpbm5zIgorCisjOiBidWlsdGluL3RhZy5jOjQ2NAorbXNnaWQgInNob3cgdGFnIGxpc3QgaW4gY29sdW1ucyIKK21zZ3N0ciAibGlzdGEgdGFnZ2FyIGkgc3BhbHRlciIKKworIzogYnVpbHRpbi90YWcuYzo0NjYKK21zZ2lkICJUYWcgbGlzdGluZyBvcHRpb25zIgorbXNnc3RyICJBbHRlcm5hdGl2IGbDtnIgbGlzdG5pbmcgYXYgdGFnZ2FyIgorCisjOiBidWlsdGluL3RhZy5jOjQ2OQorbXNnaWQgInByaW50IG9ubHkgdGFncyB0aGF0IGNvbnRhaW4gdGhlIGNvbW1pdCIKK21zZ3N0ciAidmlzYSBlbmRhc3QgdGFnZ2FyIHNvbSBpbm5laMOlbGxlciBpbmNoZWNrbmluZ2VuIgorCisjOiBidWlsdGluL3RhZy5jOjQ3NQorbXNnaWQgInByaW50IG9ubHkgdGFncyBvZiB0aGUgb2JqZWN0IgorbXNnc3RyICJ2aXNhIGVuZGFzdCB0YWdnYXIgZsO2ciBvYmpla3RldCIKKworIzogYnVpbHRpbi90YWcuYzo1MDQKK21zZ2lkICItLWNvbHVtbiBhbmQgLW4gYXJlIGluY29tcGF0aWJsZSIKK21zZ3N0ciAiLS1jb2x1bW4gb2NoIC1uIMOkciBpbmtvbXBhdGlibGEiCisKKyM6IGJ1aWx0aW4vdGFnLmM6NTIxCiBtc2dpZCAiLW4gb3B0aW9uIGlzIG9ubHkgYWxsb3dlZCB3aXRoIC1sLiIKIG1zZ3N0ciAiRmxhZ2dhbiAtbiDDpHIgZW5kYXN0IHRpbGzDpXRlbiB0aWxsc2FtbWFucyBtZWQgLWwuIgogCi0jOiBidWlsdGluL3RhZy5jOjUwNAorIzogYnVpbHRpbi90YWcuYzo1MjMKIG1zZ2lkICItLWNvbnRhaW5zIG9wdGlvbiBpcyBvbmx5IGFsbG93ZWQgd2l0aCAtbC4iCiBtc2dzdHIgIkZsYWdnYW4gLS1jb250YWlucyDDpHIgZW5kYXN0IHRpbGzDpXRlbiB0aWxsc2FtbWFucyBtZWQgLWwiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTA2CisjOiBidWlsdGluL3RhZy5jOjUyNQogbXNnaWQgIi0tcG9pbnRzLWF0IG9wdGlvbiBpcyBvbmx5IGFsbG93ZWQgd2l0aCAtbC4iCiBtc2dzdHIgIkZsYWdnYW4gLS1wb2ludHMtYXQgw6RyIGVuZGFzdCB0aWxsw6V0ZW4gdGlsbHNhbW1hbnMgbWVkIC1sLiIKIAotIzogYnVpbHRpbi90YWcuYzo1MTQKKyM6IGJ1aWx0aW4vdGFnLmM6NTMzCiBtc2dpZCAib25seSBvbmUgLUYgb3IgLW0gb3B0aW9uIGlzIGFsbG93ZWQuIgogbXNnc3RyICJlbmRhc3QgZW4gYXYgZmxhZ2dvcm5hIC1GIGVsbGVyIC1tIHRpbGzDpXRzLiIKIAotIzogYnVpbHRpbi90YWcuYzo1MzQKKyM6IGJ1aWx0aW4vdGFnLmM6NTUzCiBtc2dpZCAidG9vIG1hbnkgcGFyYW1zIgogbXNnc3RyICJmw7ZyIG3DpW5nYSBwYXJhbWV0cmFyIgogCi0jOiBidWlsdGluL3RhZy5jOjU0MAorIzogYnVpbHRpbi90YWcuYzo1NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBpcyBub3QgYSB2YWxpZCB0YWcgbmFtZS4iCiBtc2dzdHIgIlwiJXNcIiDDpHIgaW50ZSBldHQgZ2lsdGlndCB0YWdnbmFtbi4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTQ1CisjOiBidWlsdGluL3RhZy5jOjU2NAogIywgYy1mb3JtYXQKIG1zZ2lkICJ0YWcgJyVzJyBhbHJlYWR5IGV4aXN0cyIKIG1zZ3N0ciAidGFnZ2VuIFwiJXNcIiBmaW5ucyByZWRhbiIKIAotIzogYnVpbHRpbi90YWcuYzo1NjMKKyM6IGJ1aWx0aW4vdGFnLmM6NTgyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjYW5ub3QgbG9jayB0aGUgcmVmIgogbXNnc3RyICIlczoga2FuIGludGUgbMOlc2EgcmVmZXJlbnNlbiIKIAotIzogYnVpbHRpbi90YWcuYzo1NjUKKyM6IGJ1aWx0aW4vdGFnLmM6NTg0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjYW5ub3QgdXBkYXRlIHRoZSByZWYiCiBtc2dzdHIgIiVzOiBrYW4gaW50ZSB1cHBkYXRlcmEgcmVmZXJlbnNlbiIKIAotIzogYnVpbHRpbi90YWcuYzo1NjcKKyM6IGJ1aWx0aW4vdGFnLmM6NTg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVwZGF0ZWQgdGFnICclcycgKHdhcyAlcylcbiIKIG1zZ3N0ciAiVXBwZGF0ZXJhZCB0YWdnIFwiJXNcIiAodmFyICVzKVxuIgogCi0jOiBnaXQtYW0uc2g6NDkKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NDAxCittc2dpZCAiZ2l0IHVwZGF0ZS1pbmRleCBbb3B0aW9uc10gWy0tXSBbPGZpbGU+Li4uXSIKK21zZ3N0ciAiZ2l0IHVwZGF0ZS1pbmRleCBbZmxhZ2dvcl0gWy0tXSBbPGZpbD4uLi5dIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcxOAorbXNnaWQgImNvbnRpbnVlIHJlZnJlc2ggZXZlbiB3aGVuIGluZGV4IG5lZWRzIHVwZGF0ZSIKK21zZ3N0ciAiZm9ydHPDpHR0IHVwcGRhdGVyYSDDpHZlbiBuw6RyIGluZGV4IGludGUgw6RyIMOgam91ciIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MjEKK21zZ2lkICJyZWZyZXNoOiBpZ25vcmUgc3VibW9kdWxlcyIKK21zZ3N0ciAicmVmcmVzaDogaWdub3JlcmEgdW5kZXJtb2R1bGVyIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcyNAorbXNnaWQgImRvIG5vdCBpZ25vcmUgbmV3IGZpbGVzIgorbXNnc3RyICJpZ25vcmVyYSBpbnRlIG55YSBmaWxlciIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MjYKK21zZ2lkICJsZXQgZmlsZXMgcmVwbGFjZSBkaXJlY3RvcmllcyBhbmQgdmljZS12ZXJzYSIKK21zZ3N0ciAibMOldCBmaWxlciBlcnPDpHR0YSBrYXRhbG9nZXIgb2NoIG9tdsOkbnQiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzI4Cittc2dpZCAibm90aWNlIGZpbGVzIG1pc3NpbmcgZnJvbSB3b3JrdHJlZSIKK21zZ3N0ciAibMOkZ2cgbcOkcmtlIHRpbGwgZmlsZXIgc29tIHNha25hcyBpIGFyYmV0c2thdGFsb2dlbiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MzAKK21zZ2lkICJyZWZyZXNoIGV2ZW4gaWYgaW5kZXggY29udGFpbnMgdW5tZXJnZWQgZW50cmllcyIKK21zZ3N0ciAidXBwZGF0ZXJhIMOkdmVuIG9tIGluZGV4ZXQgaW5uZWjDpWxsZXIgZWogc2FtbWFuc2xhZ25hIHBvc3RlciIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MzMKK21zZ2lkICJyZWZyZXNoIHN0YXQgaW5mb3JtYXRpb24iCittc2dzdHIgInVwcGRhdGVyYSBzdGF0dXNpbmZvcm1hdGlvbiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MzcKK21zZ2lkICJsaWtlIC0tcmVmcmVzaCwgYnV0IGlnbm9yZSBhc3N1bWUtdW5jaGFuZ2VkIHNldHRpbmciCittc2dzdHIgInNvbSAtLXJlZnJlc2gsIG1lbiBpZ25vcmVyYSBhc3N1bWUtdW5jaGFuZ2VkLWluc3TDpGxsbmluZyIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NDEKK21zZ2lkICI8bW9kZT4gPG9iamVjdD4gPHBhdGg+IgorbXNnc3RyICI8bMOkZ2U+IDxvYmpla3Q+IDxzw7ZrdsOkZz4iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzQyCittc2dpZCAiYWRkIHRoZSBzcGVjaWZpZWQgZW50cnkgdG8gdGhlIGluZGV4IgorbXNnc3RyICJsw6RnZyB0aWxsIGFuZ2l2ZW4gcG9zdCBpIGluZGV4ZXQiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzQ2Cittc2dpZCAiKCsvLSl4IgorbXNnc3RyICIoKy8tKXgiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzQ3Cittc2dpZCAib3ZlcnJpZGUgdGhlIGV4ZWN1dGFibGUgYml0IG9mIHRoZSBsaXN0ZWQgZmlsZXMiCittc2dzdHIgIsO2dmVyc3R5ciBleGVrdmVyaW5nc2JpdGVuIGbDtnIgYW5naXZuYSBmaWxlciIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NTEKK21zZ2lkICJtYXJrIGZpbGVzIGFzIFwibm90IGNoYW5naW5nXCIiCittc2dzdHIgIm1hcmtlcmEgZmlsZXIgc29tIFwiw6RuZHJhcyBpbnRlXCIiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzU0Cittc2dpZCAiY2xlYXIgYXNzdW1lZC11bmNoYW5nZWQgYml0IgorbXNnc3RyICJyZW5zYSBcImFzc3VtZS11bmNoYW5nZWRcIi1iaXRlbiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NTcKK21zZ2lkICJtYXJrIGZpbGVzIGFzIFwiaW5kZXgtb25seVwiIgorbXNnc3RyICJtYXJrZXJhIGZpbGVyIHNvbSBcImVuZGFzdCBpbmRleFwiIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc2MAorbXNnaWQgImNsZWFyIHNraXAtd29ya3RyZWUgYml0IgorbXNnc3RyICJ0w7ZtIFwic2tpcC13b3JrdHJlZVwiLWJpdGVuIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc2MworbXNnaWQgImFkZCB0byBpbmRleCBvbmx5OyBkbyBub3QgYWRkIGNvbnRlbnQgdG8gb2JqZWN0IGRhdGFiYXNlIgorbXNnc3RyICJsw6RnZyBlbmRhc3QgdGlsbCBpbmRleGV0OyBsw6RnZyBpbnRlIHRpbGwgaW5uZWjDpWxsZXQgaSBvYmpla3RkYXRhYmFzZW4iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzY1Cittc2dpZCAicmVtb3ZlIG5hbWVkIHBhdGhzIGV2ZW4gaWYgcHJlc2VudCBpbiB3b3JrdHJlZSIKK21zZ3N0ciAidGEgYm9ydCBuYW1uZ2l2bmEgc8O2a3bDpGdhciDDpHZlbiBvbSBkZSBmaW5ucyBpIGFyYmV0c2thdGFsb2dlbiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NjcKK21zZ2lkICJ3aXRoIC0tc3RkaW46IGlucHV0IGxpbmVzIGFyZSB0ZXJtaW5hdGVkIGJ5IG51bGwgYnl0ZXMiCittc2dzdHIgIm1lZCAtLXN0ZGluOiBpbmRhdGFyYWRlciB0ZXJtaW5lcmFzIG1lZCBudWxsLWJ5dGUiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzY5Cittc2dpZCAicmVhZCBsaXN0IG9mIHBhdGhzIHRvIGJlIHVwZGF0ZWQgZnJvbSBzdGFuZGFyZCBpbnB1dCIKK21zZ3N0ciAibMOkcyBsaXN0YSDDtnZlciBzw7ZrdsOkZ2FyIGF0dCB1cHBkYXRlcmEgZnLDpW4gc3RhbmRhcmQgaW4iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzczCittc2dpZCAiYWRkIGVudHJpZXMgZnJvbSBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW5kZXgiCittc2dzdHIgImzDpGdnIHBvc3RlciBmcsOlbiBmcsOlbiBzdGFuZGFyZCBpbiB0aWxsIGluZGV4ZXQiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6Nzc3Cittc2dpZCAicmVwb3B1bGF0ZSBzdGFnZXMgIzIgYW5kICMzIGZvciB0aGUgbGlzdGVkIHBhdGhzIgorbXNnc3RyICLDpXRlcmZ5bGwgZXRhcHAgMiBvY2ggMyBmcsOlbiBhbmdpdm5hIHPDtmt2w6RnYXIiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzgxCittc2dpZCAib25seSB1cGRhdGUgZW50cmllcyB0aGF0IGRpZmZlciBmcm9tIEhFQUQiCittc2dzdHIgInVwcGRhdGVyYSBlbmRhc3QgcG9zdGVyIHNvbSBza2lsamVyIHNpZyBmcsOlbiBIRUFEIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc4NQorbXNnaWQgImlnbm9yZSBmaWxlcyBtaXNzaW5nIGZyb20gd29ya3RyZWUiCittc2dzdHIgImlnbm9yZXJhIGZpbGVyIHNvbSBzYWtuYXMgaSBhcmJldHNrYXRhbG9nZW4iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6Nzg4Cittc2dpZCAicmVwb3J0IGFjdGlvbnMgdG8gc3RhbmRhcmQgb3V0cHV0IgorbXNnc3RyICJyYXBvcnRlcmEgw6V0Z8OkcmRlciBww6Ugc3RhbmRhcmQgdXQiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzkwCittc2dpZCAiKGZvciBwb3JjZWxhaW5zKSBmb3JnZXQgc2F2ZWQgdW5yZXNvbHZlZCBjb25mbGljdHMiCittc2dzdHIgIihmw7ZyIHBvcnNsaW4pIGdsw7ZtIHNwYXJhZGUgb2zDtnN0YSBrb25mbGlrdGVyIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc5NAorbXNnaWQgIndyaXRlIGluZGV4IGluIHRoaXMgZm9ybWF0IgorbXNnc3RyICJza3JpdiBpbmRleCBpIGRldHRhIGZvcm1hdCIKKworIzogYnVpbHRpbi91cGRhdGUtcmVmLmM6NworbXNnaWQgImdpdCB1cGRhdGUtcmVmIFtvcHRpb25zXSAtZCA8cmVmbmFtZT4gWzxvbGR2YWw+XSIKK21zZ3N0ciAiZ2l0IHVwZGF0ZS1yZWYgW2ZsYWdnb3JdIC1kIDxyZWZuYW1uPiBbPGdhbW1hbHR2w6RyZGU+XSIKKworIzogYnVpbHRpbi91cGRhdGUtcmVmLmM6OAorbXNnaWQgImdpdCB1cGRhdGUtcmVmIFtvcHRpb25zXSAgICA8cmVmbmFtZT4gPG5ld3ZhbD4gWzxvbGR2YWw+XSIKK21zZ3N0ciAiZ2l0IHVwZGF0ZS1yZWYgW2ZsYWdnb3JdICAgIDxyZWZuYW1uPiA8Z2FtbWFsdHbDpHJkZT4gWzxueXR0dsOkcmRlPl0iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLXJlZi5jOjE5Cittc2dpZCAiZGVsZXRlIHRoZSByZWZlcmVuY2UiCittc2dzdHIgInRhIGJvcnQgcmVmZXJlbnNlbiIKKworIzogYnVpbHRpbi91cGRhdGUtcmVmLmM6MjEKK21zZ2lkICJ1cGRhdGUgPHJlZm5hbWU+IG5vdCB0aGUgb25lIGl0IHBvaW50cyB0byIKK21zZ3N0ciAidXBwZGF0ZXJhIDxyZWZuYW1uPiBpbnRlIGRldCBkZW4gcGVrYXIgcMOlIgorCisjOiBidWlsdGluL3VwZGF0ZS1zZXJ2ZXItaW5mby5jOjYKK21zZ2lkICJnaXQgdXBkYXRlLXNlcnZlci1pbmZvIFstLWZvcmNlXSIKK21zZ3N0ciAiZ2l0IHVwZGF0ZS1zZXJ2ZXItaW5mbyBbLS1mb3JjZV0iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLXNlcnZlci1pbmZvLmM6MTQKK21zZ2lkICJ1cGRhdGUgdGhlIGluZm8gZmlsZXMgZnJvbSBzY3JhdGNoIgorbXNnc3RyICJ1cHBkYXRlcmEgaW5mb3JtYXRpb25zZmlsZXJuYSBmcsOlbiBncnVuZGVuIgorCisjOiBidWlsdGluL3ZlcmlmeS1wYWNrLmM6NTYKK21zZ2lkICJnaXQgdmVyaWZ5LXBhY2sgWy12fC0tdmVyYm9zZV0gWy1zfC0tc3RhdC1vbmx5XSA8cGFjaz4uLi4iCittc2dzdHIgImdpdCB2ZXJpZnktcGFjayBbLXZ8LS12ZXJib3NlXSBbLXN8LS1zdGF0LW9ubHldIDxwYWtldD4uLi4iCisKKyM6IGJ1aWx0aW4vdmVyaWZ5LXBhY2suYzo2NgorbXNnaWQgInZlcmJvc2UiCittc2dzdHIgInByYXRzYW0iCisKKyM6IGJ1aWx0aW4vdmVyaWZ5LXBhY2suYzo2OAorbXNnaWQgInNob3cgc3RhdGlzdGljcyBvbmx5IgorbXNnc3RyICJ2aXNhIGVuZGFzdCBzdGF0aXN0aWsiCisKKyM6IGJ1aWx0aW4vdmVyaWZ5LXRhZy5jOjE3Cittc2dpZCAiZ2l0IHZlcmlmeS10YWcgWy12fC0tdmVyYm9zZV0gPHRhZz4uLi4iCittc2dzdHIgImdpdCB2ZXJpZnktdGFnIFstdnwtLXZlcmJvc2VdIDx0YWdnPi4uLiIKKworIzogYnVpbHRpbi92ZXJpZnktdGFnLmM6NzMKK21zZ2lkICJwcmludCB0YWcgY29udGVudHMiCittc2dzdHIgInZpc2EgaW5uZWjDpWxsIGbDtnIgdGFnIgorCisjOiBidWlsdGluL3dyaXRlLXRyZWUuYzoxMworbXNnaWQgImdpdCB3cml0ZS10cmVlIFstLW1pc3Npbmctb2tdIFstLXByZWZpeD08cHJlZml4Pi9dIgorbXNnc3RyICJnaXQgd3JpdGUtdHJlZSBbLS1taXNzaW5nLW9rXSBbLS1wcmVmaXg9PHByZWZpeD4vXSIKKworIzogYnVpbHRpbi93cml0ZS10cmVlLmM6MjYKK21zZ2lkICI8cHJlZml4Pi8iCittc2dzdHIgIjxwcmVmaXg+LyIKKworIzogYnVpbHRpbi93cml0ZS10cmVlLmM6MjcKK21zZ2lkICJ3cml0ZSB0cmVlIG9iamVjdCBmb3IgYSBzdWJkaXJlY3RvcnkgPHByZWZpeD4iCittc2dzdHIgInZpc2EgdHLDpGRvYmpla3QgZsO2ciB1bmRlcmthdGFsb2dlbiA8cHJlZml4PiIKKworIzogYnVpbHRpbi93cml0ZS10cmVlLmM6MzAKK21zZ2lkICJvbmx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nIgorbXNnc3RyICJlbmRhc3QgYW52w6RuZGJhcnQgdmlkIGZlbHPDtmtuaW5nIgorCisjOiBnaXQuYzoxNgorbXNnaWQgIiIKKyInZ2l0IGhlbHAgLWEnIGFuZCAnZ2l0IGhlbHAgLWcnIGxpc3RzIGF2YWlsYWJsZSBzdWJjb21tYW5kcyBhbmQgc29tZVxuIgorImNvbmNlcHQgZ3VpZGVzLiBTZWUgJ2dpdCBoZWxwIDxjb21tYW5kPicgb3IgJ2dpdCBoZWxwIDxjb25jZXB0PidcbiIKKyJ0byByZWFkIGFib3V0IGEgc3BlY2lmaWMgc3ViY29tbWFuZCBvciBjb25jZXB0LiIKK21zZ3N0ciAiIgorIlwiZ2l0IGhlbHAgLWFcIiBvY2ggXCJnaXQgaGVscCAtZ1wiIHZpc2FyIHRpbGxnw6RuZ2xpZ2EgdW5kZXJrb21tYW5kb24gb2NoXG4iCisibsOlZ3JhIGtvbmNlcHR2w6RnbGVkbmluZ2FyLiBTZSBcImdpdCBoZWxwIDxrb21tYW5kbz5cIiBlbGxlciBcImdpdCBoZWxwXG4iCisiPGtvbmNlcHQ+XCIgZsO2ciBhdHQgbMOkc2EgbWVyIG9tIHNwZWNpZmlrYSB1bmRlcmtvbW1hbmRvbiBvY2gga29uY2VwdC4iCisKKyM6IHBhcnNlLW9wdGlvbnMuaDoxNTYKK21zZ2lkICJuby1vcCAoYmFja3dhcmQgY29tcGF0aWJpbGl0eSkiCittc2dzdHIgImluZ2VuIGZ1bmt0aW9uIChiYWvDpXRrb21wYXRpYmlsaXRldCkiCisKKyM6IHBhcnNlLW9wdGlvbnMuaDoyMzIKK21zZ2lkICJiZSBtb3JlIHZlcmJvc2UiCittc2dzdHIgInZhciBtZXIgcHJhdHNhbSIKKworIzogcGFyc2Utb3B0aW9ucy5oOjIzNAorbXNnaWQgImJlIG1vcmUgcXVpZXQiCittc2dzdHIgInZhciBtZXIgdHlzdCIKKworIzogcGFyc2Utb3B0aW9ucy5oOjI0MAorbXNnaWQgInVzZSA8bj4gZGlnaXRzIHRvIGRpc3BsYXkgU0hBLTFzIgorbXNnc3RyICJhbnbDpG5kIDxuPiBzaWZmcm9yIGbDtnIgYXR0IHZpc2EgU0hBLTE6b3IiCisKKyM6IGNvbW1vbi1jbWRzLmg6OAorbXNnaWQgIkFkZCBmaWxlIGNvbnRlbnRzIHRvIHRoZSBpbmRleCIKK21zZ3N0ciAiTMOkZ2cgZmlsaW5uZWjDpWxsIHRpbGwgaW5kZXhldCIKKworIzogY29tbW9uLWNtZHMuaDo5Cittc2dpZCAiRmluZCBieSBiaW5hcnkgc2VhcmNoIHRoZSBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VkIGEgYnVnIgorbXNnc3RyICJCaW7DpHJzw7ZrIGbDtnIgYXR0IGhpdHRhIMOkbmRyaW5nZW4gc29tIGludHJvZHVjZXJhZGUgZXR0IGZlbCIKKworIzogY29tbW9uLWNtZHMuaDoxMAorbXNnaWQgIkxpc3QsIGNyZWF0ZSwgb3IgZGVsZXRlIGJyYW5jaGVzIgorbXNnc3RyICJWaXNhLCBza2FwYSBlbGxlciB0YSBib3J0IGdyZW5hciIKKworIzogY29tbW9uLWNtZHMuaDoxMQorbXNnaWQgIkNoZWNrb3V0IGEgYnJhbmNoIG9yIHBhdGhzIHRvIHRoZSB3b3JraW5nIHRyZWUiCittc2dzdHIgIkNoZWNrYSB1dCBlbiBncmVuIGVsbGVyIGZpbGVyIGkgYXJiZXRza2F0YWxvZ2VuIgorCisjOiBjb21tb24tY21kcy5oOjEyCittc2dpZCAiQ2xvbmUgYSByZXBvc2l0b3J5IGludG8gYSBuZXcgZGlyZWN0b3J5IgorbXNnc3RyICJLbG9uYSBldHQgYXJraXYgdGlsbCBlbiBueSBrYXRhbG9nIgorCisjOiBjb21tb24tY21kcy5oOjEzCittc2dpZCAiUmVjb3JkIGNoYW5nZXMgdG8gdGhlIHJlcG9zaXRvcnkiCittc2dzdHIgIlByb3Rva29sbGbDtnIgw6RuZHJpbmdhciBpIGFya2l2ZXQiCisKKyM6IGNvbW1vbi1jbWRzLmg6MTQKK21zZ2lkICJTaG93IGNoYW5nZXMgYmV0d2VlbiBjb21taXRzLCBjb21taXQgYW5kIHdvcmtpbmcgdHJlZSwgZXRjIgorbXNnc3RyICJWaXNhIMOkbmRyaW5nYXIgbWVsbGFuIGluY2hlY2tuaW5nYXIsIG1lZCBhcmJldHNrYXRhbG9nZW4sIG9zdiIKKworIzogY29tbW9uLWNtZHMuaDoxNQorbXNnaWQgIkRvd25sb2FkIG9iamVjdHMgYW5kIHJlZnMgZnJvbSBhbm90aGVyIHJlcG9zaXRvcnkiCittc2dzdHIgIkjDpG10YSBvYmpla3Qgb2NoIHJlZmVyZW5zZXIgZnLDpW4gYW5uYXQgYXJraXYiCisKKyM6IGNvbW1vbi1jbWRzLmg6MTYKK21zZ2lkICJQcmludCBsaW5lcyBtYXRjaGluZyBhIHBhdHRlcm4iCittc2dzdHIgIlZpc2EgcmFkZXIgc29tIG1vdHN2YXJhciBtw7Zuc3RlciIKKworIzogY29tbW9uLWNtZHMuaDoxNworbXNnaWQgIkNyZWF0ZSBhbiBlbXB0eSBHaXQgcmVwb3NpdG9yeSBvciByZWluaXRpYWxpemUgYW4gZXhpc3Rpbmcgb25lIgorbXNnc3RyICJTa2FwYSB0b210IEdpdC1hcmtpdiBlbGxlciBvbWluaXRpZXJhIGV0dCBiZWZpbnRsaWd0IgorCisjOiBjb21tb24tY21kcy5oOjE4Cittc2dpZCAiU2hvdyBjb21taXQgbG9ncyIKK21zZ3N0ciAiVmlzYSBpbmNoZWNrbmluZ3Nsb2dnYXIiCisKKyM6IGNvbW1vbi1jbWRzLmg6MTkKK21zZ2lkICJKb2luIHR3byBvciBtb3JlIGRldmVsb3BtZW50IGhpc3RvcmllcyB0b2dldGhlciIKK21zZ3N0ciAiU2zDpSBpaG9wIHR2w6UgZWxsZXIgZmxlcmEgdXR2ZWNrbGluZ3NoaXN0b3JpZXIiCisKKyM6IGNvbW1vbi1jbWRzLmg6MjAKK21zZ2lkICJNb3ZlIG9yIHJlbmFtZSBhIGZpbGUsIGEgZGlyZWN0b3J5LCBvciBhIHN5bWxpbmsiCittc2dzdHIgIkZseXR0YSBlbGxlciBieXQgbmFtbiBww6UgZW4gZmlsLCBrYXRhbG9nIGVsbGVyIHN5bWJvbGlzayBsw6RuayIKKworIzogY29tbW9uLWNtZHMuaDoyMQorbXNnaWQgIkZldGNoIGZyb20gYW5kIG1lcmdlIHdpdGggYW5vdGhlciByZXBvc2l0b3J5IG9yIGEgbG9jYWwgYnJhbmNoIgorbXNnc3RyICJIw6RtdGEgZnLDpW4gb2NoIHNsw6UgaWhvcCBtZWQgYW5uYXQgYXJraXYgZWxsZXIgZW4gbG9rYWwgZ3JlbiIKKworIzogY29tbW9uLWNtZHMuaDoyMgorbXNnaWQgIlVwZGF0ZSByZW1vdGUgcmVmcyBhbG9uZyB3aXRoIGFzc29jaWF0ZWQgb2JqZWN0cyIKK21zZ3N0ciAiVXBwZGF0ZXJhIGZqw6Ryci1yZWZlcmVuc2VyIG9jaCB0aWxsaMO2cmFuZGUgb2JqZWt0IgorCisjOiBjb21tb24tY21kcy5oOjIzCittc2dpZCAiRm9yd2FyZC1wb3J0IGxvY2FsIGNvbW1pdHMgdG8gdGhlIHVwZGF0ZWQgdXBzdHJlYW0gaGVhZCIKK21zZ3N0ciAiRnJhbcOldGFucGFzc2EgbG9rYWxhIGtvbW1hbmRvbiBww6UgdXBwZGF0ZXJhdCB1cHBzdHLDtm1zaHV2dWQiCisKKyM6IGNvbW1vbi1jbWRzLmg6MjQKK21zZ2lkICJSZXNldCBjdXJyZW50IEhFQUQgdG8gdGhlIHNwZWNpZmllZCBzdGF0ZSIKK21zZ3N0ciAiw4V0ZXJzdMOkbGwgYWt0dWVsbCBIRUFEIHRpbGwgYW5naXZldCB0aWxsc3TDpW5kIgorCisjOiBjb21tb24tY21kcy5oOjI1Cittc2dpZCAiUmVtb3ZlIGZpbGVzIGZyb20gdGhlIHdvcmtpbmcgdHJlZSBhbmQgZnJvbSB0aGUgaW5kZXgiCittc2dzdHIgIlRhIGJvcnQgZmlsZXIgZnLDpW4gYXJiZXRza2F0YWxvZ2VuIG9jaCBmcsOlbiBpbmRleGV0IgorCisjOiBjb21tb24tY21kcy5oOjI2Cittc2dpZCAiU2hvdyB2YXJpb3VzIHR5cGVzIG9mIG9iamVjdHMiCittc2dzdHIgIlZpc2Egb2xpa2Egc29ydGVycyBvYmpla3QiCisKKyM6IGNvbW1vbi1jbWRzLmg6MjcKK21zZ2lkICJTaG93IHRoZSB3b3JraW5nIHRyZWUgc3RhdHVzIgorbXNnc3RyICJWaXNhIHN0YXR1cyBmw7ZyIGFyYmV0c2thdGFsb2dlbiIKKworIzogY29tbW9uLWNtZHMuaDoyOAorbXNnaWQgIkNyZWF0ZSwgbGlzdCwgZGVsZXRlIG9yIHZlcmlmeSBhIHRhZyBvYmplY3Qgc2lnbmVkIHdpdGggR1BHIgorbXNnc3RyICJTa2FwYSwgdmlzYSwgdGEgYm9ydCBlbGxlciB2ZXJpZmllcmEgR1BHLXNpZ25lcmF0IHRhZ2dvYmpla3QiCisKKyM6IGdpdC1hbS5zaDo1MAogbXNnaWQgIllvdSBuZWVkIHRvIHNldCB5b3VyIGNvbW1pdHRlciBpbmZvIGZpcnN0IgogbXNnc3RyICJEdSBtw6VzdGUgc3TDpGxsYSBpbiBkaW4gaW5jaGVja2FyaW5mb3JtYXRpb24gZsO2cnN0IgogCi0jOiBnaXQtYW0uc2g6MTM2CisjOiBnaXQtYW0uc2g6OTUKK21zZ2lkICIiCisiWW91IHNlZW0gdG8gaGF2ZSBtb3ZlZCBIRUFEIHNpbmNlIHRoZSBsYXN0ICdhbScgZmFpbHVyZS5cbiIKKyJOb3QgcmV3aW5kaW5nIHRvIE9SSUdfSEVBRCIKK21zZ3N0ciAiIgorIkR1IHZlcmthciBoYSBmbHl0dGF0IEhFQUQgc2VkYW4gXCJhbVwiIHNpc3QgbWlzc2x5Y2thZGVzLlxuIgorIsOFdGVyc3TDpGxsZXIgaW50ZSB0aWxsIE9SSUdfSEVBRCIKKworIzogZ2l0LWFtLnNoOjEwNQorIywgc2gtZm9ybWF0Cittc2dpZCAiIgorIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtLCBydW4gXCIkY21kbGluZSAtLXJlc29sdmVkXCIuXG4iCisiSWYgeW91IHByZWZlciB0byBza2lwIHRoaXMgcGF0Y2gsIHJ1biBcIiRjbWRsaW5lIC0tc2tpcFwiIGluc3RlYWQuXG4iCisiVG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBzdG9wIHBhdGNoaW5nLCBydW4gXCIkY21kbGluZSAtLWFib3J0XCIuIgorbXNnc3RyICIiCisiTsOkciBkdSBoYXIgbMO2c3QgcHJvYmxlbWV0IGvDtnIgZHUgXCIkY21kbGluZSAtLXJlc29sdmVkXCIuXG4iCisiT20gZHUgdmlsbCBob3BwYSDDtnZlciBwYXRjaGVuIGvDtnIgZHUgaXN0w6RsbGV0IFwiJGNtZGxpbmUgLS1za2lwXCIuXG4iCisiRsO2ciBhdHQgw6V0ZXJzdMOkbGxhIG9yaWdpbmFsZ3JlbmVuIG9jaCBhdmJyeXRhIGvDtnIgZHUgXCIkY21kbGluZSAtLWFib3J0XCIuIgorCisjOiBnaXQtYW0uc2g6MTIxCittc2dpZCAiQ2Fubm90IGZhbGwgYmFjayB0byB0aHJlZS13YXkgbWVyZ2UuIgorbXNnc3RyICJLYW4gaW50ZSBmYWxsYSB0aWxsYmFrYSBww6UgdHJldsOkZ3NzYW1tYW5zbGFnbmluZy4iCisKKyM6IGdpdC1hbS5zaDoxMzcKIG1zZ2lkICJSZXBvc2l0b3J5IGxhY2tzIG5lY2Vzc2FyeSBibG9icyB0byBmYWxsIGJhY2sgb24gMy13YXkgbWVyZ2UuIgogbXNnc3RyICIiCiAiQXJraXZldCBzYWtuYXIgb2JqZWt0IHNvbSBiZWjDtnZzIGbDtnIgYXR0IGZhbGxhIHRpbGxiYWthIHDDpSAzLSIKICJ2w6Rnc3NhbW1hbnNsYWduaW5nLiIKIAotIzogZ2l0LWFtLnNoOjE0NworIzogZ2l0LWFtLnNoOjEzOQorbXNnaWQgIlVzaW5nIGluZGV4IGluZm8gdG8gcmVjb25zdHJ1Y3QgYSBiYXNlIHRyZWUuLi4iCittc2dzdHIgIkFudsOkbmRlciBpbmRleGluZm8gZsO2ciBhdHQgw6V0ZXNrYXBhIGV0dCBiYXN0csOkZC4uLiIKKworIzogZ2l0LWFtLnNoOjE1NAogbXNnaWQgIiIKICJEaWQgeW91IGhhbmQgZWRpdCB5b3VyIHBhdGNoP1xuIgogIkl0IGRvZXMgbm90IGFwcGx5IHRvIGJsb2JzIHJlY29yZGVkIGluIGl0cyBpbmRleC4iCiBtc2dzdHIgIiIKICJIYXIgZHUgaGFuZHJlZGlnZXJhdCBkaW4gcGF0Y2g/XG4iCi0iRGVuIGthbiBpbnRlIGFwcGxpY2VyYXMgcMOlIGJsb2JiYXIgc29tIGFudGVja25hdHMgaSBkZXNzIGluZGV4LiIKKyJEZW4ga2FuIGludGUgdGlsbMOkbXBhcyBww6UgYmxvYmJhciBzb20gYW50ZWNrbmF0cyBpIGRlc3MgaW5kZXguIgogCi0jOiBnaXQtYW0uc2g6MTU2CisjOiBnaXQtYW0uc2g6MTYzCiBtc2dpZCAiRmFsbGluZyBiYWNrIHRvIHBhdGNoaW5nIGJhc2UgYW5kIDMtd2F5IG1lcmdlLi4uIgogbXNnc3RyICIiCiAiRmFsbGVyIHRpbGxiYWthIHDDpSBhdHQgcGFjaGEgZ3J1bmR2ZXJzaW9uZW4gb2NoIHRyZXbDpGdzc2FtbWFuc2xhZ25pbmcuLi4iCiAKLSM6IGdpdC1hbS5zaDoyNjgKLW1zZ2lkICJPbmx5IG9uZSBTdEdJVCBwYXRjaCBzZXJpZXMgY2FuIGJlIGFwcGxpZWQgYXQgb25jZSIKLW1zZ3N0ciAiRW5kYXN0IGVuIFN0R0lULXBhdGNoc2VyaWUga2FuIGFwcGxpY2VyYXMgw6V0IGfDpW5nZW4iCisjOiBnaXQtYW0uc2g6MTc5Cittc2dpZCAiRmFpbGVkIHRvIG1lcmdlIGluIHRoZSBjaGFuZ2VzLiIKK21zZ3N0ciAiTWlzc2x5Y2thZHMgc2zDpSBpaG9wIMOkbmRyaW5nYXJuYS4iCiAKLSM6IGdpdC1hbS5zaDozNTUKKyM6IGdpdC1hbS5zaDoyNzQKK21zZ2lkICJPbmx5IG9uZSBTdEdJVCBwYXRjaCBzZXJpZXMgY2FuIGJlIGFwcGxpZWQgYXQgb25jZSIKK21zZ3N0ciAiRW5kYXN0IGVuIFN0R0lULXBhdGNoc2VyaWUga2FuIHRpbGzDpG1wYXMgw6V0IGfDpW5nZW4iCisKKyM6IGdpdC1hbS5zaDozNjEKICMsIHNoLWZvcm1hdAogbXNnaWQgIlBhdGNoIGZvcm1hdCAkcGF0Y2hfZm9ybWF0IGlzIG5vdCBzdXBwb3J0ZWQuIgogbXNnc3RyICJQYXRjaGZvcm1hdGV0ICRwYXRjaF9mb3JtYXQgc3TDtmRzIGludGUuIgogCi0jOiBnaXQtYW0uc2g6MzU3CisjOiBnaXQtYW0uc2g6MzYzCiBtc2dpZCAiUGF0Y2ggZm9ybWF0IGRldGVjdGlvbiBmYWlsZWQuIgogbXNnc3RyICJNaXNzbHlja2FkZXMgZGV0ZWt0ZXJhIHBhdGNoZm9ybWF0LiIKIAotIzogZ2l0LWFtLnNoOjQxMQotbXNnaWQgIi1kIG9wdGlvbiBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiAgRG8gbm90IHVzZS4iCi1tc2dzdHIgIkZsYWdnYW4gLWQgc3TDtmRzIGludGUgbMOkZ3JlLiBBbnbDpG5kIGludGUuIgorIzogZ2l0LWFtLnNoOjM4OQorbXNnaWQgIiIKKyJUaGUgLWIvLS1iaW5hcnkgb3B0aW9uIGhhcyBiZWVuIGEgbm8tb3AgZm9yIGxvbmcgdGltZSwgYW5kXG4iCisiaXQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgZG8gbm90IHVzZSBpdCBhbnltb3JlLiIKK21zZ3N0ciAiIgorIkZsYWdnYW4gLWIvLS1iaW5hcnkgaGFyIHZhcml0IHV0YW4gZnVua3Rpb24gbMOkbmdlLCBvY2hcbiIKKyJrb21tZXIgdGFzIGJvcnQuIFZpIGJlciBkaWcgYXR0IGludGUgYW52w6RuZGEgZGVuIGzDpG5ncmUuIgogCi0jOiBnaXQtYW0uc2g6NDc0CisjOiBnaXQtYW0uc2g6NDc3CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJwcmV2aW91cyByZWJhc2UgZGlyZWN0b3J5ICRkb3Rlc3Qgc3RpbGwgZXhpc3RzIGJ1dCBtYm94IGdpdmVuLiIKIG1zZ3N0ciAidGlkaWdhcmUgcmViYXNlLWthdGFsb2cgJGRvdGVzdCBmaW5ucyBmb3J0ZmFyYW5kZSwgbWVuIG1ib3ggYW5nYXZzLiIKIAotIzogZ2l0LWFtLnNoOjQ3OQorIzogZ2l0LWFtLnNoOjQ4MgogbXNnaWQgIlBsZWFzZSBtYWtlIHVwIHlvdXIgbWluZC4gLS1za2lwIG9yIC0tYWJvcnQ/IgogbXNnc3RyICJCZXN0w6RtIGRpZy4gLS1za2lwIGVsbGVyIC0tYWJvcnQ/IgogCi0jOiBnaXQtYW0uc2g6NTA2CisjOiBnaXQtYW0uc2g6NTA5CiBtc2dpZCAiUmVzb2x2ZSBvcGVyYXRpb24gbm90IGluIHByb2dyZXNzLCB3ZSBhcmUgbm90IHJlc3VtaW5nLiIKIG1zZ3N0ciAiTMO2c25pbmdzb3BlcmF0aW9uIHDDpWfDpXIgaW50ZSwgdmkgw6V0ZXJ1cHB0YXIgaW50ZS4iCiAKLSM6IGdpdC1hbS5zaDo1NzIKKyM6IGdpdC1hbS5zaDo1NzUKICMsIHNoLWZvcm1hdAogbXNnaWQgIkRpcnR5IGluZGV4OiBjYW5ub3QgYXBwbHkgcGF0Y2hlcyAoZGlydHk6ICRmaWxlcykiCi1tc2dzdHIgIlNtdXRzaWd0IGluZGV4OiBrYW4gaW50ZSBhcHBsaWNlcmEgcGF0Y2hhciAoc211dHNpZ2E6ICRmaWxlcykiCittc2dzdHIgIlNtdXRzaWd0IGluZGV4OiBrYW4gaW50ZSB0aWxsw6RtcGEgcGF0Y2hhciAoc211dHNpZ2E6ICRmaWxlcykiCiAKLSM6IGdpdC1hbS5zaDo3NDgKKyM6IGdpdC1hbS5zaDo2NzkKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJQYXRjaCBpcyBlbXB0eS4gIFdhcyBpdCBzcGxpdCB3cm9uZz9cbiIKKyJJZiB5b3Ugd291bGQgcHJlZmVyIHRvIHNraXAgdGhpcyBwYXRjaCwgaW5zdGVhZCBydW4gXCIkY21kbGluZSAtLXNraXBcIi5cbiIKKyJUbyByZXN0b3JlIHRoZSBvcmlnaW5hbCBicmFuY2ggYW5kIHN0b3AgcGF0Y2hpbmcgcnVuIFwiJGNtZGxpbmUgLS1hYm9ydFwiLiIKK21zZ3N0ciAiIgorIlBhdGNoZW4gw6RyIHRvbS4gRGVsYWRlcyBkZW4gdXBwIGZlbGFrdGlndD9cbiIKKyJPbSBkdSB2aWxsIGhvcHBhIMO2dmVyIHBhdGNoZW4ga8O2ciBkdSBpc3TDpGxsZXQgXCIkY21kbGluZSAtLXNraXBcIi5cbiIKKyJGw7ZyIGF0dCDDpXRlcnN0w6RsbGEgb3JpZ2luYWxncmVuZW4gb2NoIGF2YnJ5dGEga8O2ciBkdSBcIiRjbWRsaW5lIC0tYWJvcnRcIi4iCisKKyM6IGdpdC1hbS5zaDo3MDYKK21zZ2lkICJQYXRjaCBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgZS1tYWlsIGFkZHJlc3MuIgorbXNnc3RyICJQYXRjaGVuIGhhciBpbnRlIG7DpWdvbiBnaWx0aWcgZS1wb3N0YWRyZXNzLiIKKworIzogZ2l0LWFtLnNoOjc1MwogbXNnaWQgImNhbm5vdCBiZSBpbnRlcmFjdGl2ZSB3aXRob3V0IHN0ZGluIGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLiIKIG1zZ3N0ciAiIgogImthbiBpbnRlIHZhcmEgaW50ZXJha3RpdiBvbSBzdGFuZGFyZCBpbiBpbnRlIMOkciBhbnNsdXRlbiB0aWxsIGVuIHRlcm1pbmFsLiIKIAorIzogZ2l0LWFtLnNoOjc1NworbXNnaWQgIkNvbW1pdCBCb2R5IGlzOiIKK21zZ3N0ciAiSW5jaGVja25pbmdza3JvcHBlbiDDpHI6IgorCiAjLiBUUkFOU0xBVE9SUzogTWFrZSBzdXJlIHRvIGluY2x1ZGUgW3ldLCBbbl0sIFtlXSwgW3ZdIGFuZCBbYV0KICMuIGluIHlvdXIgdHJhbnNsYXRpb24uIFRoZSBwcm9ncmFtIHdpbGwgb25seSBhY2NlcHQgRW5nbGlzaAogIy4gaW5wdXQgYXQgdGhpcyBwb2ludC4KLSM6IGdpdC1hbS5zaDo3NTkKKyM6IGdpdC1hbS5zaDo3NjQKIG1zZ2lkICJBcHBseT8gW3ldZXMvW25dby9bZV1kaXQvW3ZdaWV3IHBhdGNoL1thXWNjZXB0IGFsbCAiCi1tc2dzdHIgIkFwcGxpY2VyYT8gWT1qYS9OPW5lai9FPXJlZGlnZXJhL1Y9dmlzYSBwYXRjaC9BPWdvZHRhIGFsbGEgIgorbXNnc3RyICJUaWxsw6RtcGE/IFk9amEvTj1uZWovRT1yZWRpZ2VyYS9WPXZpc2EgcGF0Y2gvQT1nb2R0YSBhbGxhICIKIAotIzogZ2l0LWFtLnNoOjc5NQorIzogZ2l0LWFtLnNoOjgwMAogIywgc2gtZm9ybWF0CiBtc2dpZCAiQXBwbHlpbmc6ICRGSVJTVExJTkUiCi1tc2dzdHIgIkFwcGxpY2VyYXI6ICRGSVJTVExJTkUiCittc2dzdHIgIlRpbGzDpG1wYXI6ICRGSVJTVExJTkUiCiAKLSM6IGdpdC1hbS5zaDo4NDAKKyM6IGdpdC1hbS5zaDo4MjEKK21zZ2lkICIiCisiTm8gY2hhbmdlcyAtIGRpZCB5b3UgZm9yZ2V0IHRvIHVzZSAnZ2l0IGFkZCc/XG4iCisiSWYgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvIHN0YWdlLCBjaGFuY2VzIGFyZSB0aGF0IHNvbWV0aGluZyBlbHNlXG4iCisiYWxyZWFkeSBpbnRyb2R1Y2VkIHRoZSBzYW1lIGNoYW5nZXM7IHlvdSBtaWdodCB3YW50IHRvIHNraXAgdGhpcyBwYXRjaC4iCittc2dzdHIgIiIKKyJJbmdhIMOkbmRyaW5nYXIgLSBnbMO2bWRlIGR1IGFudsOkbmRhIFwiZ2l0IGFkZFwiP1xuIgorIk9tIGRldCBpbnRlIMOkciBuw6Vnb3Qga3ZhciBhdHQga8O2YSBrYW4gZGV0IGjDpG5kYSBhdHQgbsOlZ290IGFubmF0IHJlZGFuXG4iCisiaW50cm9kdWNlcmF0IHNhbW1hIMOkbmRyaW5nYXI7IGthbnNrZSBkdSBiw7ZyIGhvcHBhIMO2dmVyIHBhdGNoZW4uIgorCisjOiBnaXQtYW0uc2g6ODI5Cittc2dpZCAiIgorIllvdSBzdGlsbCBoYXZlIHVubWVyZ2VkIHBhdGhzIGluIHlvdXIgaW5kZXhcbiIKKyJkaWQgeW91IGZvcmdldCB0byB1c2UgJ2dpdCBhZGQnPyIKK21zZ3N0ciAiIgorIkR1IGhhciBmb3J0ZmFyYW5kZSBzw7ZrdsOkZ2FyIHNvbSBpbnRlIHNsYWdpdHMgc2FtbWFuIGkgZGl0dCBpbmRleFxuIgorImdsw7ZtZGUgZHUgYW52w6RuZGEgXCJnaXQgYWRkXCI/IgorCisjOiBnaXQtYW0uc2g6ODQ1CiBtc2dpZCAiTm8gY2hhbmdlcyAtLSBQYXRjaCBhbHJlYWR5IGFwcGxpZWQuIgotbXNnc3RyICJJbmdhIMOkbmRyaW5nYXIgLS0gUGF0Y2hlbiBoYXIgcmVkYW4gYXBwbGljZXJhdHMuIgorbXNnc3RyICJJbmdhIMOkbmRyaW5nYXIgLS0gUGF0Y2hlbiBoYXIgcmVkYW4gdGlsbMOkbXBhdHMuIgogCi0jOiBnaXQtYW0uc2g6ODY2CisjOiBnaXQtYW0uc2g6ODU1CisjLCBzaC1mb3JtYXQKK21zZ2lkICJQYXRjaCBmYWlsZWQgYXQgJG1zZ251bSAkRklSU1RMSU5FIgorbXNnc3RyICJQYXRjaGVuIG1pc3NseWNrYWRlcyB2aWQgJG1zZ251bSAkRklSU1RMSU5FIgorCisjOiBnaXQtYW0uc2g6ODU4CisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGNvcHkgb2YgdGhlIHBhdGNoIHRoYXQgZmFpbGVkIGlzIGZvdW5kIGluOlxuIgorIiAgICRkb3Rlc3QvcGF0Y2giCittc2dzdHIgIiIKKyJFbiBrb3BpYSBhdiBwYXRjaGVuIHNvbSBtaXNzbHlja2FkZXMgZmlubnMgaTpcbiIKKyIgICAkZG90ZXN0L3BhdGNoIgorCisjOiBnaXQtYW0uc2g6ODc2CiBtc2dpZCAiYXBwbHlpbmcgdG8gYW4gZW1wdHkgaGlzdG9yeSIKLW1zZ3N0ciAiYXBwbGljZXJhciBww6UgZW4gdG9tIGhpc3RvcmlrIgorbXNnc3RyICJ0aWxsw6RtcGFyIHDDpSBlbiB0b20gaGlzdG9yaWsiCisKKyM6IGdpdC1iaXNlY3Quc2g6NDgKK21zZ2lkICJZb3UgbmVlZCB0byBzdGFydCBieSBcImdpdCBiaXNlY3Qgc3RhcnRcIiIKK21zZ3N0ciAiRHUgbcOlc3RlIHN0YXJ0YSBtZWQgXCJnaXQgYmlzZWN0IHN0YXJ0XCIiCiAKICMuIFRSQU5TTEFUT1JTOiBNYWtlIHN1cmUgdG8gaW5jbHVkZSBbWV0gYW5kIFtuXSBpbiB5b3VyCiAjLiB0cmFuc2xhdGlvbi4gVGhlIHByb2dyYW0gd2lsbCBvbmx5IGFjY2VwdCBFbmdsaXNoIGlucHV0CkBAIC0zMzk4LDYgKzkzNTUsMTIgQEAKIG1zZ2lkICInZ2l0IGJpc2VjdCBiYWQnIGNhbiB0YWtlIG9ubHkgb25lIGFyZ3VtZW50LiIKIG1zZ3N0ciAiXCJnaXQgYmlzZWN0IGJhZFwiIGthbiBiYXJhIHRhIGV0dCBhcmd1bWVudC4iCiAKKyMuIGhhdmUgYmFkIGJ1dCBub3QgZ29vZC4gIHdlIGNvdWxkIGJpc2VjdCBhbHRob3VnaAorIy4gdGhpcyBpcyBsZXNzIG9wdGltdW0uCisjOiBnaXQtYmlzZWN0LnNoOjI3MworbXNnaWQgIldhcm5pbmc6IGJpc2VjdGluZyBvbmx5IHdpdGggYSBiYWQgY29tbWl0LiIKK21zZ3N0ciAiVmFybmluZzogdXRmw7ZyIFwiYmlzZWN0XCIgbWVkIGVuZGFzdCBlbiBkw6VsaWcgaW5jaGVja25pbmciCisKICMuIFRSQU5TTEFUT1JTOiBNYWtlIHN1cmUgdG8gaW5jbHVkZSBbWV0gYW5kIFtuXSBpbiB5b3VyCiAjLiB0cmFuc2xhdGlvbi4gVGhlIHByb2dyYW0gd2lsbCBvbmx5IGFjY2VwdCBFbmdsaXNoIGlucHV0CiAjLiBhdCB0aGlzIHBvaW50LgpAQCAtMzQwNSwxMiArOTM2OCwzNCBAQAogbXNnaWQgIkFyZSB5b3Ugc3VyZSBbWS9uXT8gIgogbXNnc3RyICLDhHIgZHUgc8Oka2VyIFtZPWphL049bmVqXT8gIgogCi0jOiBnaXQtYmlzZWN0LnNoOjM1NAorIzogZ2l0LWJpc2VjdC5zaDoyODkKK21zZ2lkICIiCisiWW91IG5lZWQgdG8gZ2l2ZSBtZSBhdCBsZWFzdCBvbmUgZ29vZCBhbmQgb25lIGJhZCByZXZpc2lvbnMuXG4iCisiKFlvdSBjYW4gdXNlIFwiZ2l0IGJpc2VjdCBiYWRcIiBhbmQgXCJnaXQgYmlzZWN0IGdvb2RcIiBmb3IgdGhhdC4pIgorbXNnc3RyICIiCisiRHUgbcOlc3RlIGFuZ2Ugw6V0bWluc3RvbmUgZW4gYnJhIG9jaCBlbiBkw6VsaWcgdmVyc2lvbi5cbiIKKyIoRHUga2FuIGFudsOkbmRhIFwiZ2l0IGJpc2VjdCBiYWRcIiBvY2ggXCJnaXQgYmlzZWN0IGdvb2RcIiBmw7ZyIGRldHRhLikiCisKKyM6IGdpdC1iaXNlY3Quc2g6MjkyCittc2dpZCAiIgorIllvdSBuZWVkIHRvIHN0YXJ0IGJ5IFwiZ2l0IGJpc2VjdCBzdGFydFwiLlxuIgorIllvdSB0aGVuIG5lZWQgdG8gZ2l2ZSBtZSBhdCBsZWFzdCBvbmUgZ29vZCBhbmQgb25lIGJhZCByZXZpc2lvbnMuXG4iCisiKFlvdSBjYW4gdXNlIFwiZ2l0IGJpc2VjdCBiYWRcIiBhbmQgXCJnaXQgYmlzZWN0IGdvb2RcIiBmb3IgdGhhdC4pIgorbXNnc3RyICIiCisiRHUgbcOlc3RlIHN0YXJ0YSBtZWQgXCJnaXQgYmlzZWN0IHN0YXJ0XCIuXG4iCisiRHUgbcOlc3RlIHNlZGFuIGFuZ2Ugw6V0bWluc3RvbmUgZW4gYnJhIG9jaCBlbiBkw6VsaWcgdmVyc2lvbi5cbiIKKyIoRHUga2FuIGFudsOkbmRhIFwiZ2l0IGJpc2VjdCBiYWRcIiBvY2ggXCJnaXQgYmlzZWN0IGdvb2RcIiBmw7ZyIGRldHRhLikiCisKKyM6IGdpdC1iaXNlY3Quc2g6MzYzIGdpdC1iaXNlY3Quc2g6NDkwCittc2dpZCAiV2UgYXJlIG5vdCBiaXNlY3RpbmcuIgorbXNnc3RyICJWaSB1dGbDtnIgaW5nZW4gYmlzZWN0IGbDtnIgdGlsbGbDpGxsZXQuIgorCisjOiBnaXQtYmlzZWN0LnNoOjM3MAogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRpbnZhbGlkJyBpcyBub3QgYSB2YWxpZCBjb21taXQiCiBtc2dzdHIgIlwiJGludmFsaWRcIiDDpHIgaW50ZSBlbiBnaWx0aWcgaW5jaGVja25pbmciCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzYzCisjOiBnaXQtYmlzZWN0LnNoOjM3OQogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIkNvdWxkIG5vdCBjaGVjayBvdXQgb3JpZ2luYWwgSEVBRCAnJGJyYW5jaCcuXG4iCkBAIC0zNDE5LDIyICs5NDA0LDQ5IEBACiAiS3VuZGUgaW50ZSBjaGVja2EgdXQgb3JpZ2luYWwtSEVBRCBcIiRicmFuY2hcIi5cbiIKICJGw7Zyc8O2ayBcImdpdCBiaXNlY3QgcmVzZXQgPGluY2hlY2tuaW5nPlwiLiIKIAotIzogZ2l0LWJpc2VjdC5zaDozOTAKKyM6IGdpdC1iaXNlY3Quc2g6NDA2CiBtc2dpZCAiTm8gbG9nZmlsZSBnaXZlbiIKIG1zZ3N0ciAiSW5nZW4gbG9nZ2ZpbCBhbmdpdmVuIgogCi0jOiBnaXQtYmlzZWN0LnNoOjM5MQorIzogZ2l0LWJpc2VjdC5zaDo0MDcKICMsIHNoLWZvcm1hdAogbXNnaWQgImNhbm5vdCByZWFkICRmaWxlIGZvciByZXBsYXlpbmciCiBtc2dzdHIgImthbiBpbnRlIGzDpHNhICRmaWxlIGbDtnIgdXBwc3BlbG5pbmciCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDA4CisjOiBnaXQtYmlzZWN0LnNoOjQyNAogbXNnaWQgIj8/IHdoYXQgYXJlIHlvdSB0YWxraW5nIGFib3V0PyIKIG1zZ3N0ciAiPz8gdmFkIG1lbmFyIGR1PyIKIAotIzogZ2l0LWJpc2VjdC5zaDo0NzQKLW1zZ2lkICJXZSBhcmUgbm90IGJpc2VjdGluZy4iCi1tc2dzdHIgIlZpIHV0ZsO2ciBpbmdlbiBiaXNlY3QgZsO2ciB0aWxsZsOkbGxldC4iCisjOiBnaXQtYmlzZWN0LnNoOjQzNgorIywgc2gtZm9ybWF0Cittc2dpZCAicnVubmluZyAkY29tbWFuZCIKK21zZ3N0ciAia8O2ciAkY29tbWFuZCIKKworIzogZ2l0LWJpc2VjdC5zaDo0NDMKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJiaXNlY3QgcnVuIGZhaWxlZDpcbiIKKyJleGl0IGNvZGUgJHJlcyBmcm9tICckY29tbWFuZCcgaXMgPCAwIG9yID49IDEyOCIKK21zZ3N0ciAiIgorIlwiYmlzZWN0XCIta8O2cm5pbmdlbiBtaXNzbHlja2FkZXM6XG4iCisiZmVsa29kICRyZXMgZnLDpW4gXCIkY29tbWFuZFwiIMOkciA8IDAgZWxsZXIgPj0gMTI4IgorCisjOiBnaXQtYmlzZWN0LnNoOjQ2OQorbXNnaWQgImJpc2VjdCBydW4gY2Fubm90IGNvbnRpbnVlIGFueSBtb3JlIgorbXNnc3RyICJcImJpc2VjdFwiLWvDtnJuaW5nZW4ga2FuIGludGUgZm9ydHPDpHR0YSBsw6RuZ3JlIgorCisjOiBnaXQtYmlzZWN0LnNoOjQ3NQorIywgc2gtZm9ybWF0Cittc2dpZCAiIgorImJpc2VjdCBydW4gZmFpbGVkOlxuIgorIidiaXNlY3Rfc3RhdGUgJHN0YXRlJyBleGl0ZWQgd2l0aCBlcnJvciBjb2RlICRyZXMiCittc2dzdHIgIiIKKyJcImJpc2VjdFwiLWvDtnJuaW5nZW4gbWlzc2x5Y2thZGVzOlxuIgorIlwiYmlzZWN0X3N0YXRlICRzdGF0ZVwiIGF2c2x1dGFkZXMgbWVkIGZlbGtvZGVuICRyZXMiCisKKyM6IGdpdC1iaXNlY3Quc2g6NDgyCittc2dpZCAiYmlzZWN0IHJ1biBzdWNjZXNzIgorbXNnc3RyICJcImJpc2VjdFwiLWvDtnJuaW5nZW4gbHlja2FkZXMiCiAKICM6IGdpdC1wdWxsLnNoOjIxCiBtc2dpZCAiIgpAQCAtMzQ1MCwxOCArOTQ2MiwxNTcgQEAKIG1zZ2lkICJQdWxsIGlzIG5vdCBwb3NzaWJsZSBiZWNhdXNlIHlvdSBoYXZlIHVubWVyZ2VkIGZpbGVzLiIKIG1zZ3N0ciAiRHUga2FuIGludGUgZ8O2cmEgZW4gXCJwdWxsXCIgZMOlIGR1IGhhciDDpG5kcmluZ2FyIHNvbSBpbnRlIGNoZWNrYXRzIGluLiIKIAotIzogZ2l0LXB1bGwuc2g6MTk3CisjOiBnaXQtcHVsbC5zaDoyMDMKIG1zZ2lkICJ1cGRhdGluZyBhbiB1bmJvcm4gYnJhbmNoIHdpdGggY2hhbmdlcyBhZGRlZCB0byB0aGUgaW5kZXgiCiBtc2dzdHIgInVwcGRhdGVyYXIgZW4gb2bDtmRkIGdyZW4gbWVkIMOkbmRyaW5nYXIgc29tIGxhZ3RzIHRpbGwgaSBpbmRleGV0IgogCi0jOiBnaXQtcHVsbC5zaDoyNTMKKyMuIFRoZSBmZXRjaCBpbnZvbHZlZCB1cGRhdGluZyB0aGUgY3VycmVudCBicmFuY2guCisjLiBUaGUgd29ya2luZyB0cmVlIGFuZCB0aGUgaW5kZXggZmlsZSBpcyBzdGlsbCBiYXNlZCBvbiB0aGUKKyMuICRvcmlnX2hlYWQgY29tbWl0LCBidXQgd2UgYXJlIG1lcmdpbmcgaW50byAkY3Vycl9oZWFkLgorIy4gRmlyc3QgdXBkYXRlIHRoZSB3b3JraW5nIHRyZWUgdG8gbWF0Y2ggJGN1cnJfaGVhZC4KKyM6IGdpdC1wdWxsLnNoOjIzNQorIywgc2gtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IGZldGNoIHVwZGF0ZWQgdGhlIGN1cnJlbnQgYnJhbmNoIGhlYWQuXG4iCisiV2FybmluZzogZmFzdC1mb3J3YXJkaW5nIHlvdXIgd29ya2luZyB0cmVlIGZyb21cbiIKKyJXYXJuaW5nOiBjb21taXQgJG9yaWdfaGVhZC4iCittc2dzdHIgIiIKKyJWYXJuaW5nOiBmZXRjaCB1cHBkYXRlcmFkZSBodXZ1ZGV0IGbDtnIgYWt0dWVsbCBncmVuLlxuIgorIlZhcm5pbmc6IHNuYWJic3BvbGFyIGRpbiBhcmJldHNrYXRhbG9nIGZyw6VuXG4iCisiVmFybmluZzogaW5jaGVja25pbmdlbiAkb3JpZ19oZWFkLiIKKworIzogZ2l0LXB1bGwuc2g6MjYwCiBtc2dpZCAiQ2Fubm90IG1lcmdlIG11bHRpcGxlIGJyYW5jaGVzIGludG8gZW1wdHkgaGVhZCIKIG1zZ3N0ciAiS2FuIGludGUgc2zDpSBpaG9wIGZsZXJhIGdyZW5hciBpIGV0dCB0b210IGh1dnVkLiIKIAotIzogZ2l0LXB1bGwuc2g6MjU3CisjOiBnaXQtcHVsbC5zaDoyNjQKIG1zZ2lkICJDYW5ub3QgcmViYXNlIG9udG8gbXVsdGlwbGUgYnJhbmNoZXMiCiBtc2dzdHIgIkthbiBpbnRlIHV0ZsO2cmEgZW4gXCJyZWJhc2VcIiBvdmFucMOlIGZsZXJhIGdyZW5hciIKIAorIzogZ2l0LXJlYmFzZS5zaDo1MworbXNnaWQgIiIKKyJXaGVuIHlvdSBoYXZlIHJlc29sdmVkIHRoaXMgcHJvYmxlbSwgcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIuXG4iCisiSWYgeW91IHByZWZlciB0byBza2lwIHRoaXMgcGF0Y2gsIHJ1biBcImdpdCByZWJhc2UgLS1za2lwXCIgaW5zdGVhZC5cbiIKKyJUbyBjaGVjayBvdXQgdGhlIG9yaWdpbmFsIGJyYW5jaCBhbmQgc3RvcCByZWJhc2luZywgcnVuIFwiZ2l0IHJlYmFzZSAtLWFib3J0IgorIlwiLiIKK21zZ3N0ciAiIgorIk7DpHIgZHUgaGFyIGzDtnN0IHByb2JsZW1ldCBrw7ZyIGR1IFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIuXG4iCisiT20gZHUgdmlsbCBob3BwYSDDtnZlciBwYXRjaGVuIGvDtnIgZHUgaXN0w6RsbGV0IFwiZ2l0IHJlYmFzZSAtLXNraXBcIi5cbiIKKyJGw7ZyIGF0dCDDpXRlcnN0w6RsbGEgb3JpZ2luYWxncmVuZW4gb2NoIGF2YnJ5dGEga8O2ciBkdSBcImdpdCByZWJhc2UgLS1hYm9ydFwiLiIKKworIzogZ2l0LXJlYmFzZS5zaDoxNjAKK21zZ2lkICJUaGUgcHJlLXJlYmFzZSBob29rIHJlZnVzZWQgdG8gcmViYXNlLiIKK21zZ3N0ciAiS3Jva2VuIHByZS1yZWJhc2UgdsOkZ3JhZGUgb21iYXNlcmluZ2VuLiIKKworIzogZ2l0LXJlYmFzZS5zaDoxNjUKK21zZ2lkICJJdCBsb29rcyBsaWtlIGdpdC1hbSBpcyBpbiBwcm9ncmVzcy4gQ2Fubm90IHJlYmFzZS4iCittc2dzdHIgIkRldCB2ZXJrYXIgc29tIGVuIGdpdC1hbSBrw7Zycy4gS2FuIGludGUgb21iYXNlcmEuIgorCisjOiBnaXQtcmViYXNlLnNoOjI5NgorbXNnaWQgIlRoZSAtLWV4ZWMgb3B0aW9uIG11c3QgYmUgdXNlZCB3aXRoIHRoZSAtLWludGVyYWN0aXZlIG9wdGlvbiIKK21zZ3N0ciAiRmxhZ2dhbiAtLWV4ZWMgbcOlc3RlIGFudsOkbmRhcyB0aWxsc2FtbWFucyBtZWQgZmxhZ2dhbiAtLWludGVyYWN0aXZlIgorCisjOiBnaXQtcmViYXNlLnNoOjMwMQorbXNnaWQgIk5vIHJlYmFzZSBpbiBwcm9ncmVzcz8iCittc2dzdHIgIkluZ2VuIG9tYmFzZXJpbmcgcMOlZ8Olcj8iCisKKyM6IGdpdC1yZWJhc2Uuc2g6MzEyCittc2dpZCAiVGhlIC0tZWRpdC10b2RvIGFjdGlvbiBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBpbnRlcmFjdGl2ZSByZWJhc2UuIgorbXNnc3RyICLDhXRnw6RyZGVuIC0tZWRpdC10b2RvIGthbiBlbmRhc3QgYW52w6RuZGFzIHVuZGVyIGludGVyYWt0aXYgb21iYXNlcmluZy4iCisKKyM6IGdpdC1yZWJhc2Uuc2g6MzE5Cittc2dpZCAiQ2Fubm90IHJlYWQgSEVBRCIKK21zZ3N0ciAiS2FuIGludGUgbMOkc2EgSEVBRCIKKworIzogZ2l0LXJlYmFzZS5zaDozMjIKK21zZ2lkICIiCisiWW91IG11c3QgZWRpdCBhbGwgbWVyZ2UgY29uZmxpY3RzIGFuZCB0aGVuXG4iCisibWFyayB0aGVtIGFzIHJlc29sdmVkIHVzaW5nIGdpdCBhZGQiCittc2dzdHIgIiIKKyJEdSBtw6VzdGUgcmVkaWdlcmEgYWxsYSBzYW1tYW5zbGFnbmluZ3Nrb25mbGlrdGVyIG9jaFxuIgorImTDpHJlZnRlciBtYXJrZXJhIGRlbSBzb20gbMO2c3RhIG1lZCBnaXQgYWRkIgorCisjOiBnaXQtcmViYXNlLnNoOjM0MAorIywgc2gtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IG1vdmUgYmFjayB0byAkaGVhZF9uYW1lIgorbXNnc3RyICJLdW5kZSBpbnRlIGZseXR0YSB0aWxsYmFrYSB0aWxsICRoZWFkX25hbWUiCisKKyM6IGdpdC1yZWJhc2Uuc2g6MzU5CisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiSXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBhbHJlYWR5IGEgJHN0YXRlX2Rpcl9iYXNlIGRpcmVjdG9yeSwgYW5kXG4iCisiSSB3b25kZXIgaWYgeW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGFub3RoZXIgcmViYXNlLiAgSWYgdGhhdCBpcyB0aGVcbiIKKyJjYXNlLCBwbGVhc2UgdHJ5XG4iCisiXHQkY21kX2xpdmVfcmViYXNlXG4iCisiSWYgdGhhdCBpcyBub3QgdGhlIGNhc2UsIHBsZWFzZVxuIgorIlx0JGNtZF9jbGVhcl9zdGFsZV9yZWJhc2VcbiIKKyJhbmQgcnVuIG1lIGFnYWluLiAgSSBhbSBzdG9wcGluZyBpbiBjYXNlIHlvdSBzdGlsbCBoYXZlIHNvbWV0aGluZ1xuIgorInZhbHVhYmxlIHRoZXJlLiIKK21zZ3N0ciAiIgorIkRldCB2ZXJrYXIgc29tIGthdGFsb2dlbiAkc3RhdGVfZGlyX2Jhc2UgcmVkYW4gZXhpc3RlcmFyLCBvY2hcbiIKKyJqYWcgdW5kcmFyIG9tIGR1IHJlZGFuIMOkciBtaXR0IGkgZW4gYW5uYW4gb21iYXNlcmluZy4gT20gc8OlIMOkclxuIgorImZhbGxldCwgZsO2cnPDtmtcbiIKKyJcdCRjbWRfbGl2ZV9yZWJhc2VcbiIKKyJPbSBzw6UgaW50ZSDDpHIgZmFsbGV0LCBrw7ZyXG4iCisiXHQkY21kX2NsZWFyX3N0YWxlX3JlYmFzZVxuIgorIm9jaCBrw7ZyIHByb2dyYW1tZXQgaWdlbi4gSmFnIGF2c2x1dGFyIGlmYWxsIGR1IGZvcnRmYXJhbmRlIGhhclxuIgorIm7DpWdvdCBhdiB2w6RyZGUgZMOkci4iCisKKyM6IGdpdC1yZWJhc2Uuc2g6NDA0CisjLCBzaC1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHVwc3RyZWFtICR1cHN0cmVhbV9uYW1lIgorbXNnc3RyICJvZ2lsdGlnIHVwcHN0csO2bSAkdXBzdHJlYW1fbmFtZSIKKworIzogZ2l0LXJlYmFzZS5zaDo0MjgKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiRvbnRvX25hbWU6IHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIG1lcmdlIGJhc2VzIgorbXNnc3RyICIkb250b19uYW1lOiBtZXIgw6RuIGVuIHNhbW1hbnNsYWduaW5nc2JhcyBmaW5ucyIKKworIzogZ2l0LXJlYmFzZS5zaDo0MzEgZ2l0LXJlYmFzZS5zaDo0MzUKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiRvbnRvX25hbWU6IHRoZXJlIGlzIG5vIG1lcmdlIGJhc2UiCittc2dzdHIgIiRvbnRvX25hbWU6IGluZ2VuIHNhbW1hbnNsYWduaW5nc2JhcyBmaW5ucyIKKworIzogZ2l0LXJlYmFzZS5zaDo0NDAKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkRvZXMgbm90IHBvaW50IHRvIGEgdmFsaWQgY29tbWl0OiAkb250b19uYW1lIgorbXNnc3RyICJQZWthIHDDpSBlbiBnaWx0aWcgaW5jaGVja25pbmc6ICRvbnRvX25hbWUiCisKKyM6IGdpdC1yZWJhc2Uuc2g6NDYzCisjLCBzaC1mb3JtYXQKK21zZ2lkICJmYXRhbDogbm8gc3VjaCBicmFuY2g6ICRicmFuY2hfbmFtZSIKK21zZ3N0ciAiw7ZkZXNkaWdlcnQ6IGluZ2VuIHPDpWRhbiBncmVuOiAkYnJhbmNoX25hbWUiCisKKyM6IGdpdC1yZWJhc2Uuc2g6NDgzCittc2dpZCAiUGxlYXNlIGNvbW1pdCBvciBzdGFzaCB0aGVtLiIKK21zZ3N0ciAiQ2hlY2thIGluIGVsbGVyIGFudsOkbmQgXCJzdGFzaFwiIHDDpSBkZW0uIgorCisjOiBnaXQtcmViYXNlLnNoOjUwMQorIywgc2gtZm9ybWF0Cittc2dpZCAiQ3VycmVudCBicmFuY2ggJGJyYW5jaF9uYW1lIGlzIHVwIHRvIGRhdGUuIgorbXNnc3RyICJBa3R1ZWxsIGdyZW4gJGJyYW5jaF9uYW1lIMOkciDDoCBqb3VyLiIKKworIzogZ2l0LXJlYmFzZS5zaDo1MDQKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkN1cnJlbnQgYnJhbmNoICRicmFuY2hfbmFtZSBpcyB1cCB0byBkYXRlLCByZWJhc2UgZm9yY2VkLiIKK21zZ3N0ciAiQWt0dWVsbCBncmVuICRicmFuY2hfbmFtZSDDpHIgw6Agam91ciwgb21iYXNlcmluZyBmcmFtdHZpbmdhZC4iCisKKyM6IGdpdC1yZWJhc2Uuc2g6NTE1CisjLCBzaC1mb3JtYXQKK21zZ2lkICJDaGFuZ2VzIGZyb20gJG1iIHRvICRvbnRvOiIKK21zZ3N0ciAiw4RuZHJpbmdhciBmcsOlbiAkbWIgdGlsbCAkb250bzoiCisKKyMuIERldGFjaCBIRUFEIGFuZCByZXNldCB0aGUgdHJlZQorIzogZ2l0LXJlYmFzZS5zaDo1MjQKK21zZ2lkICJGaXJzdCwgcmV3aW5kaW5nIGhlYWQgdG8gcmVwbGF5IHlvdXIgd29yayBvbiB0b3Agb2YgaXQuLi4iCittc2dzdHIgIiIKKyJGw7Zyc3QsIHNwb2xhciB0aWxsYmFrYSBodXZ1ZGV0IGbDtnIgYXR0IHNwZWxhIGF2IGRpdHQgYXJiZXRlIG92YW5ww6UgZGV0Li4uIgorCisjOiBnaXQtcmViYXNlLnNoOjUzMgorIywgc2gtZm9ybWF0Cittc2dpZCAiRmFzdC1mb3J3YXJkZWQgJGJyYW5jaF9uYW1lIHRvICRvbnRvX25hbWUuIgorbXNnc3RyICJTbmFiYnNwb2xhZGUgJGJyYW5jaF9uYW1lIHRpbGwgJG9udG9fbmFtZS4iCisKICM6IGdpdC1zdGFzaC5zaDo1MQogbXNnaWQgImdpdCBzdGFzaCBjbGVhciB3aXRoIHBhcmFtZXRlcnMgaXMgdW5pbXBsZW1lbnRlZCIKIG1zZ3N0ciAiXCJnaXQgc3Rhc2ggY2xlYXJcIiBtZWQgcGFyYW1ldHJhciBoYXIgaW50ZSBpbXBsZW1lbnRlcmF0cyIKQEAgLTM0OTAsNiArOTY0MSwyNSBAQAogbXNnaWQgIkNhbm5vdCByZWNvcmQgd29ya2luZyB0cmVlIHN0YXRlIgogbXNnc3RyICJLYW4gaW50ZSByZWdpc3RyZXJhIHRpbGxzdMOlbmQgZsO2ciBhcmJldHNrYXRhbG9nIgogCisjLiBUUkFOU0xBVE9SUzogJG9wdGlvbiBpcyBhbiBpbnZhbGlkIG9wdGlvbiwgbGlrZQorIy4gYC0tYmxhaC1ibGFoJy4gVGhlIDcgc3BhY2VzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlCisjLiBzZWNvbmQgbGluZSBjb3JyZXNwb25kIHRvICJlcnJvcjogIi4gU28geW91IHNob3VsZCBsaW5lCisjLiB1cCB0aGUgc2Vjb25kIGxpbmUgd2l0aCBob3dldmVyIG1hbnkgY2hhcmFjdGVycyB0aGUKKyMuIHRyYW5zbGF0aW9uIG9mICJlcnJvcjogIiB0YWtlcyBpbiB5b3VyIGxhbmd1YWdlLiBFLmcuIGluCisjLiBFbmdsaXNoIHRoaXMgaXM6CisjLgorIy4gJCBnaXQgc3Rhc2ggc2F2ZSAtLWJsYWgtYmxhaCAyPiYxIHwgaGVhZCAtbiAyCisjLiBlcnJvcjogdW5rbm93biBvcHRpb24gZm9yICdzdGFzaCBzYXZlJzogLS1ibGFoLWJsYWgKKyMuIFRvIHByb3ZpZGUgYSBtZXNzYWdlLCB1c2UgZ2l0IHN0YXNoIHNhdmUgLS0gJy0tYmxhaC1ibGFoJworIzogZ2l0LXN0YXNoLnNoOjIwMgorIywgc2gtZm9ybWF0Cittc2dpZCAiIgorImVycm9yOiB1bmtub3duIG9wdGlvbiBmb3IgJ3N0YXNoIHNhdmUnOiAkb3B0aW9uXG4iCisiICAgICAgIFRvIHByb3ZpZGUgYSBtZXNzYWdlLCB1c2UgZ2l0IHN0YXNoIHNhdmUgLS0gJyRvcHRpb24nIgorbXNnc3RyICIiCisiZmVsOiBmZWxha3RpZyBmbGFnZ2EgZsO2ciBcInN0YXNoIHNhdmVcIjogJG9wdGlvblxuIgorIiAgICAgRsO2ciBhdHQgYW5nZSBldHQgbWVkZGVsYW5kZSwgYW52w6RuZCBnaXQgc3Rhc2ggc2F2ZSAtLSBcIiRvcHRpb25cIiIKKwogIzogZ2l0LXN0YXNoLnNoOjIyMwogbXNnaWQgIk5vIGxvY2FsIGNoYW5nZXMgdG8gc2F2ZSIKIG1zZ3N0ciAiSW5nYSBsb2thbGEgw6RuZHJpbmdhciBhdHQgc3BhcmEiCkBAIC0zNTM2LDcgKzk3MDYsNyBAQAogCiAjOiBnaXQtc3Rhc2guc2g6NDE2CiBtc2dpZCAiQ2Fubm90IGFwcGx5IGEgc3Rhc2ggaW4gdGhlIG1pZGRsZSBvZiBhIG1lcmdlIgotbXNnc3RyICJLYW4gaW50ZSBhcHBsaWNlcmEgZW4gXCJzdGFzaFwiIG1pdHQgaSBlbiBzYW1tYW5zbGFnbmluZyIKK21zZ3N0ciAiS2FuIGludGUgdGlsbMOkbXBhIGVuIFwic3Rhc2hcIiBtaXR0IGkgZW4gc2FtbWFuc2xhZ25pbmciCiAKICM6IGdpdC1zdGFzaC5zaDo0MjQKIG1zZ2lkICJDb25mbGljdHMgaW4gaW5kZXguIFRyeSB3aXRob3V0IC0taW5kZXguIgpAQCAtMzU1MCwyMDAgKzk3MjAsNDUwIEBACiBtc2dpZCAiQ2Fubm90IHVuc3RhZ2UgbW9kaWZpZWQgZmlsZXMiCiBtc2dzdHIgIkthbiBpbnRlIHRhIGJvcnQgw6RuZHJhZGUgZmlsZXIgdXIga8O2biIKIAotIzogZ2l0LXN0YXNoLnNoOjQ5MQorIzogZ2l0LXN0YXNoLnNoOjQ3NQorbXNnaWQgIkluZGV4IHdhcyBub3QgdW5zdGFzaGVkLiIKK21zZ3N0ciAiSW5kZXhldCBoYXIgaW50ZSB0YWdpdHMgdXIga8O2bi4iCisKKyM6IGdpdC1zdGFzaC5zaDo0OTIKICMsIHNoLWZvcm1hdAogbXNnaWQgIkRyb3BwZWQgJHtSRVZ9ICgkcykiCiBtc2dzdHIgIkthc3RhZGUgJHtSRVZ9ICgkcykiCiAKLSM6IGdpdC1zdGFzaC5zaDo0OTIKKyM6IGdpdC1zdGFzaC5zaDo0OTMKICMsIHNoLWZvcm1hdAogbXNnaWQgIiR7UkVWfTogQ291bGQgbm90IGRyb3Agc3Rhc2ggZW50cnkiCiBtc2dzdHIgIiR7UkVWfTogS3VuZGUgaW50ZSBrYXN0YSBcInN0YXNoXCItcG9zdCIKIAotIzogZ2l0LXN0YXNoLnNoOjQ5OQorIzogZ2l0LXN0YXNoLnNoOjUwMAogbXNnaWQgIk5vIGJyYW5jaCBuYW1lIHNwZWNpZmllZCIKIG1zZ3N0ciAiSW5nZXQgZ3Jlbm5hbW4gYW5nYXZzIgogCi0jOiBnaXQtc3Rhc2guc2g6NTcwCisjOiBnaXQtc3Rhc2guc2g6NTcxCiBtc2dpZCAiKFRvIHJlc3RvcmUgdGhlbSB0eXBlIFwiZ2l0IHN0YXNoIGFwcGx5XCIpIgogbXNnc3RyICIoRsO2ciBhdHQgw6V0ZXJzdMOkbGxhIGRlbSwgc2tyaXYgXCJnaXQgc3Rhc2ggYXBwbHlcIikiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTYKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTEKICMsIHNoLWZvcm1hdAogbXNnaWQgImNhbm5vdCBzdHJpcCBvbmUgY29tcG9uZW50IG9mZiB1cmwgJyRyZW1vdGV1cmwnIgogbXNnc3RyICJrYW4gaW50ZSB0YSBib3J0IGVuIGtvbXBvbmVudCBmcsOlbiB1cmw6ZW4gXCIkcmVtb3RldXJsXCIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTA4CisjOiBnaXQtc3VibW9kdWxlLnNoOjE5NgogIywgc2gtZm9ybWF0Ci1tc2dpZCAiTm8gc3VibW9kdWxlIG1hcHBpbmcgZm91bmQgaW4gLmdpdG1vZHVsZXMgZm9yIHBhdGggJyRwYXRoJyIKLW1zZ3N0ciAiSGl0dGFkZSBpbmdlbiB1bmRlcm1vZHVsbWFwcG5pbmcgaSAuZ2l0bW9kdWxlcyBmw7ZyIHPDtmt2w6RnZW4gXCIkcGF0aFwiIgorbXNnaWQgIk5vIHN1Ym1vZHVsZSBtYXBwaW5nIGZvdW5kIGluIC5naXRtb2R1bGVzIGZvciBwYXRoICckc21fcGF0aCciCittc2dzdHIgIiIKKyJIaXR0YWRlIGluZ2VuIHVuZGVybW9kdWxtYXBwbmluZyBpIC5naXRtb2R1bGVzIGbDtnIgc8O2a3bDpGdlbiBcIiRzbV9wYXRoXCIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTQ5CisjOiBnaXQtc3VibW9kdWxlLnNoOjIzOQogIywgc2gtZm9ybWF0Ci1tc2dpZCAiQ2xvbmUgb2YgJyR1cmwnIGludG8gc3VibW9kdWxlIHBhdGggJyRwYXRoJyBmYWlsZWQiCi1tc2dzdHIgIk1pc3NseWNrYWRlcyBrbG9uYSBcIiR1cmxcIiB0aWxsIHVuZGVybW9kdWxzw7ZrdsOkZ2VuIFwiJHBhdGhcIiIKK21zZ2lkICJDbG9uZSBvZiAnJHVybCcgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIGZhaWxlZCIKK21zZ3N0ciAiTWlzc2x5Y2thZGVzIGtsb25hIFwiJHVybFwiIHRpbGwgdW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkc21fcGF0aFwiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjE1OQorIzogZ2l0LXN1Ym1vZHVsZS5zaDoyNTEKICMsIHNoLWZvcm1hdAogbXNnaWQgIkdpdGRpciAnJGEnIGlzIHBhcnQgb2YgdGhlIHN1Ym1vZHVsZSBwYXRoICckYicgb3IgdmljZSB2ZXJzYSIKIG1zZ3N0ciAiR2l0a2F0YWxvZyBcIiRhXCIgaW5nw6VyIGkgdW5kZXJrYXRhbG9nc8O2a3bDpGdlbiBcIiRiXCIgZWxsZXIgb212w6RudCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyNDgKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MzQ5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJyZXBvIFVSTDogJyRyZXBvJyBtdXN0IGJlIGFic29sdXRlIG9yIGJlZ2luIHdpdGggLi98Li4vIgogbXNnc3RyICJhcmtpdi1VUkw6IFwiJHJlcG9cIiBtw6VzdGUgdmFyYSBhYnNvbHV0IGVsbGVyIGLDtnJqYSBtZWQgLi98Li4vIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjI2NQorIzogZ2l0LXN1Ym1vZHVsZS5zaDozNjYKICMsIHNoLWZvcm1hdAotbXNnaWQgIickcGF0aCcgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGluZGV4IgotbXNnc3RyICJcIiRwYXRoXCIgZmlubnMgcmVkYW4gaSBpbmRleGV0IgorbXNnaWQgIickc21fcGF0aCcgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGluZGV4IgorbXNnc3RyICJcIiRzbV9wYXRoXCIgZmlubnMgcmVkYW4gaSBpbmRleGV0IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjI4MgorIzogZ2l0LXN1Ym1vZHVsZS5zaDozNzAKICMsIHNoLWZvcm1hdAotbXNnaWQgIickcGF0aCcgYWxyZWFkeSBleGlzdHMgYW5kIGlzIG5vdCBhIHZhbGlkIGdpdCByZXBvIgotbXNnc3RyICJcIiRwYXRoXCIgZmlubnMgcmVkYW4gb2NoIMOkciBpbnRlIGV0dCBnaWx0aWd0IGdpdC1hcmtpdiIKK21zZ2lkICIiCisiVGhlIGZvbGxvd2luZyBwYXRoIGlzIGlnbm9yZWQgYnkgb25lIG9mIHlvdXIgLmdpdGlnbm9yZSBmaWxlczpcbiIKKyIkc21fcGF0aFxuIgorIlVzZSAtZiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gYWRkIGl0LiIKK21zZ3N0ciAiIgorIkbDtmxqYW5kZSBzw7ZrdsOkZ2FyIGlnbm9yZXJhcyBhdiBlbiBhdiBkaW5hIC5naXRpZ25vcmUtZmlsZXI6XG4iCisiJHNtX3BhdGhcbiIKKyJBbnbDpG5kIC1mIG9tIGR1IHZlcmtsaWdlbiB2aWxsIGzDpGdnYSB0aWxsIGRlbiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyOTYKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Mzg4CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gY2hlY2tvdXQgc3VibW9kdWxlICckcGF0aCciCi1tc2dzdHIgIkthbiBpbnRlIGNoZWNrYSB1dCB1bmRlcm1vZHVsIFwiJHBhdGhcIiIKK21zZ2lkICJBZGRpbmcgZXhpc3RpbmcgcmVwbyBhdCAnJHNtX3BhdGgnIHRvIHRoZSBpbmRleCIKK21zZ3N0ciAiTMOkZ2dlciB0aWxsIGJlZmludGxpZ3QgYXJraXYgaSBcIiRzbV9wYXRoXCIgaSBpbmRleGV0IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjMwMQorIzogZ2l0LXN1Ym1vZHVsZS5zaDozOTAKICMsIHNoLWZvcm1hdAotbXNnaWQgIkZhaWxlZCB0byBhZGQgc3VibW9kdWxlICckcGF0aCciCi1tc2dzdHIgIk1pc3NseWNrYWRlcyBsw6RnZ2EgdGlsbCB1bmRlcmthdGFsb2cgXCIkcGF0aFwiIgorbXNnaWQgIickc21fcGF0aCcgYWxyZWFkeSBleGlzdHMgYW5kIGlzIG5vdCBhIHZhbGlkIGdpdCByZXBvIgorbXNnc3RyICJcIiRzbV9wYXRoXCIgZmlubnMgcmVkYW4gb2NoIMOkciBpbnRlIGV0dCBnaWx0aWd0IGdpdC1hcmtpdiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozMDYKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Mzk4CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgc3VibW9kdWxlICckcGF0aCciCi1tc2dzdHIgIk1pc3NseWNrYWRlcyByZWdpc3RyZXJhIHVuZGVybW9kdWwgXCIkcGF0aFwiIgorbXNnaWQgIkEgZ2l0IGRpcmVjdG9yeSBmb3IgJyRzbV9uYW1lJyBpcyBmb3VuZCBsb2NhbGx5IHdpdGggcmVtb3RlKHMpOiIKK21zZ3N0ciAiRW4gZ2l0LWthdGFsb2cgZsO2ciBcIiRzbV9uYW1lXCIgaGl0dGFkZXMgbG9rYWx0IG1lZCBmasOkcnIoYXIpOiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozNDgKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDAwCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJFbnRlcmluZyAnJHByZWZpeCRwYXRoJyIKLW1zZ3N0ciAiR8OlciBpbiBpIFwiJHByZWZpeCRwYXRoXCIiCi0KLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzYwCi0jLCBzaC1mb3JtYXQKLW1zZ2lkICJTdG9wcGluZyBhdCAnJHBhdGgnOyBzY3JpcHQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVzLiIKLW1zZ3N0ciAiU3RvcHBhciBww6UgXCIkcGF0aFwiOyBza3JpcHRldCByZXR1cm5lcmFkZSBlbiBzdGF0dXMgc2tpbGQgZnLDpW4gbm9sbC4iCittc2dpZCAiIgorIklmIHlvdSB3YW50IHRvIHJldXNlIHRoaXMgbG9jYWwgZ2l0IGRpcmVjdG9yeSBpbnN0ZWFkIG9mIGNsb25pbmcgYWdhaW4gZnJvbSIKK21zZ3N0ciAiIgorIkbDtnIgYXR0IMOldGVyYW52w6RuZGEgZGVuIGxva2FsYSBnaXQta2F0YWxvZ2VuIGlzdMOkbGxldCBmw7ZyIGF0dCBww6Ugbnl0dCBrbG9uYSAiCisiZnLDpW4iCiAKICM6IGdpdC1zdWJtb2R1bGUuc2g6NDAyCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJObyB1cmwgZm91bmQgZm9yIHN1Ym1vZHVsZSBwYXRoICckcGF0aCcgaW4gLmdpdG1vZHVsZXMiCi1tc2dzdHIgIkhpdHRhZGUgaW5nZW4gdXJsIGbDtnIgdW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkcGF0aFwiIGkgLmdpdG1vZHVsZXMiCi0KLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDExCi0jLCBzaC1mb3JtYXQKLW1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXJsIGZvciBzdWJtb2R1bGUgcGF0aCAnJHBhdGgnIgotbXNnc3RyICJNaXNzbHlja2FkZXMgcmVnaXN0cmVyYSB1cmwgZsO2ciB1bmRlcmthdGFsb2dzw7ZrdsOkZyBcIiRwYXRoXCIiCi0KLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDE5Ci0jLCBzaC1mb3JtYXQKLW1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXBkYXRlIG1vZGUgZm9yIHN1Ym1vZHVsZSBwYXRoICckcGF0aCciCittc2dpZCAiIgorInVzZSB0aGUgJy0tZm9yY2UnIG9wdGlvbi4gSWYgdGhlIGxvY2FsIGdpdCBkaXJlY3RvcnkgaXMgbm90IHRoZSBjb3JyZWN0IHJlcG8iCiBtc2dzdHIgIiIKLSJNaXNzbHlja2FkZXMgcmVnaXN0cmVyYSB1cHBkYXRlcmluZ3Nsw6RnZSBmw7ZyIHVuZGVybW9kdWxzw7ZrdsOkZyBcIiRwYXRoXCIiCisiYW52w6RuZCBmbGFnZ2FuIFwiLS1mb3JjZVwiLiBPbSBkZW4gbG9rYWxhIGdpdC1rYXRhbG9nZW4gaW50ZSDDpHIgcmlrdGlndCBhcmtpdiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MjEKLSMsIHNoLWZvcm1hdAotbXNnaWQgIlN1Ym1vZHVsZSAnJG5hbWUnICgkdXJsKSByZWdpc3RlcmVkIGZvciBwYXRoICckcGF0aCciCi1tc2dzdHIgIlVuZGVybW9kdWxlbiBcIiRuYW1lXCIgKCR1cmwpIHJlZ2lzdHJlcmFkIGbDtnIgc8O2a3bDpGdlbiBcIiRwYXRoXCIiCi0KLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTIwCisjOiBnaXQtc3VibW9kdWxlLnNoOjQwMwogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgotIlN1Ym1vZHVsZSBwYXRoICckcGF0aCcgbm90IGluaXRpYWxpemVkXG4iCisib3IgeW91IGFyZSB1bnN1cmUgd2hhdCB0aGlzIG1lYW5zIGNob29zZSBhbm90aGVyIG5hbWUgd2l0aCB0aGUgJy0tbmFtZScgIgorIm9wdGlvbi4iCittc2dzdHIgIiIKKyJlbGxlciBvbSBkdSDDpHIgb3PDpGtlciBww6UgdmFkIGRldCBpbm5lYsOkciwgdsOkbGogbnl0dCBuYW1uIG1lZCBmbGFnZ2FuIFwiLS1uYW1lIgorIlwiLiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MDUKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlJlYWN0aXZhdGluZyBsb2NhbCBnaXQgZGlyZWN0b3J5IGZvciBzdWJtb2R1bGUgJyRzbV9uYW1lJy4iCittc2dzdHIgIkFrdGl2ZXJhciBsb2thbCBnaXQta2F0YWxvZyBmw7ZyIHVuZGVybW9kdWxlbiBcIiRzbV9uYW1lXCIgcMOlIG55dHQuIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjQxNworIywgc2gtZm9ybWF0Cittc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0IHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgorbXNnc3RyICJLYW4gaW50ZSBjaGVja2EgdXQgdW5kZXJtb2R1bGVuIFwiJHNtX3BhdGhcIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MjIKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBhZGQgc3VibW9kdWxlICckc21fcGF0aCciCittc2dzdHIgIk1pc3NseWNrYWRlcyBsw6RnZ2EgdGlsbCB1bmRlcm1vZHVsZW4gXCIkc21fcGF0aFwiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjQzMQorIywgc2gtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgorbXNnc3RyICJNaXNzbHlja2FkZXMgcmVnaXN0cmVyYSB1bmRlcm1vZHVsZW4gXCIkc21fcGF0aFwiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjQ3NAorIywgc2gtZm9ybWF0Cittc2dpZCAiRW50ZXJpbmcgJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIkfDpXIgaW4gaSBcIiRwcmVmaXgkc21fcGF0aFwiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjQ4OAorIywgc2gtZm9ybWF0Cittc2dpZCAiU3RvcHBpbmcgYXQgJyRzbV9wYXRoJzsgc2NyaXB0IHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cy4iCittc2dzdHIgIiIKKyJTdG9wcGFyIHDDpSBcIiRzbV9wYXRoXCI7IHNrcmlwdGV0IHJldHVybmVyYWRlIGVuIHN0YXR1cyBza2lsZCBmcsOlbiBub2xsLiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo1MzIKKyMsIHNoLWZvcm1hdAorbXNnaWQgIk5vIHVybCBmb3VuZCBmb3Igc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyBpbiAuZ2l0bW9kdWxlcyIKK21zZ3N0ciAiSGl0dGFkZSBpbmdlbiB1cmwgZsO2ciB1bmRlcm1vZHVsc8O2a3bDpGdlbiBcIiRzbV9wYXRoXCIgaSAuZ2l0bW9kdWxlcyIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NDEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciB1cmwgZm9yIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCittc2dzdHIgIk1pc3NseWNrYWRlcyByZWdpc3RyZXJhIHVybCBmw7ZyIHVuZGVya2F0YWxvZ3PDtmt2w6RnIFwiJHNtX3BhdGhcIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NDMKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlN1Ym1vZHVsZSAnJG5hbWUnICgkdXJsKSByZWdpc3RlcmVkIGZvciBwYXRoICckc21fcGF0aCciCittc2dzdHIgIlVuZGVybW9kdWxlbiBcIiRuYW1lXCIgKCR1cmwpIHJlZ2lzdHJlcmFkIGbDtnIgc8O2a3bDpGdlbiBcIiRzbV9wYXRoXCIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTUxCisjLCBzaC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXBkYXRlIG1vZGUgZm9yIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCittc2dzdHIgIiIKKyJNaXNzbHlja2FkZXMgcmVnaXN0cmVyYSB1cHBkYXRlcmluZ3Nsw6RnZSBmw7ZyIHVuZGVybW9kdWxzw7ZrdsOkZyBcIiRzbV9wYXRoXCIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTg4CisjLCBzaC1mb3JtYXQKK21zZ2lkICJVc2UgJy4nIGlmIHlvdSByZWFsbHkgd2FudCB0byBkZWluaXRpYWxpemUgYWxsIHN1Ym1vZHVsZXMiCittc2dzdHIgIkFudsOkbmQgXCIuXCIgb20gZHUgdmVya2xpZ2VuIHZpbGwgYXZpbml0aWVyYSBhbGxhIHVuZGVybW9kdWxlciIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MDMKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlN1Ym1vZHVsZSB3b3JrIHRyZWUgJyRzbV9wYXRoJyBjb250YWlucyBhIC5naXQgZGlyZWN0b3J5IgorbXNnc3RyICJVbmRlcm1vZHVsZW5zIGFyYmV0c2thdGFsb2cgXCIkc21fcGF0aFwiIGlubmVow6VsbGVyIGthdGFsb2dlbiBcIi5naXRcIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MDQKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyIodXNlICdybSAtcmYnIGlmIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgaXQgaW5jbHVkaW5nIGFsbCBvZiBpdHMgaGlzdG9yeSkiCittc2dzdHIgIiIKKyIoYW52w6RuZCBcInJtIC1yZlwiIG9tIGR1IHZlcmtsaWdlbiB2aWxsIHRhIGJvcnQgZGVuIG9jaCBhbGwgZGVzcyBoaXN0b3JpaykiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjEwCisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiU3VibW9kdWxlIHdvcmsgdHJlZSAnJHNtX3BhdGgnIGNvbnRhaW5zIGxvY2FsIG1vZGlmaWNhdGlvbnM7IHVzZSAnLWYnIHRvICIKKyJkaXNjYXJkIHRoZW0iCittc2dzdHIgIiIKKyJVbmRlcm1vZHVsZW5zIGFyYmV0c2thdGFsb2cgXCIkc21fcGF0aFwiIGhhciBsb2thbGEgw6RuZHJpbmdhcjsgXCItZlwiIGthc3RhciAiCisiYm9ydCBkZW0iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjEzCisjLCBzaC1mb3JtYXQKK21zZ2lkICJDbGVhcmVkIGRpcmVjdG9yeSAnJHNtX3BhdGgnIgorbXNnc3RyICJSZW5zYWRlIGthdGFsb2dlbiBcIiRzbV9wYXRoXCIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjE0CisjLCBzaC1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgcmVtb3ZlIHN1Ym1vZHVsZSB3b3JrIHRyZWUgJyRzbV9wYXRoJyIKK21zZ3N0ciAiS3VuZGUgaW50ZSB0YSBib3J0IHVuZGVya2F0YWxvZ2VucyBhcmJldHNrYXRhbG9nIFwiJHNtX3BhdGhcIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTcKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBjcmVhdGUgZW1wdHkgc3VibW9kdWxlIGRpcmVjdG9yeSAnJHNtX3BhdGgnIgorbXNnc3RyICJLdW5kZSBpbnRlIHNrYXBhIHRvbSB1bmRlcm1vZHVsc2thdGFsb2cgXCIkc21fcGF0aFwiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYyNgorIywgc2gtZm9ybWF0Cittc2dpZCAiU3VibW9kdWxlICckbmFtZScgKCR1cmwpIHVucmVnaXN0ZXJlZCBmb3IgcGF0aCAnJHNtX3BhdGgnIgorbXNnc3RyICJVbmRlcm1vZHVsZW4gXCIkbmFtZVwiICgkdXJsKSBhdnJlZ2lzdHJlcmFkIGbDtnIgc8O2a3bDpGdlbiBcIiRzbV9wYXRoXCIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzMxCisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCcgbm90IGluaXRpYWxpemVkXG4iCiAiTWF5YmUgeW91IHdhbnQgdG8gdXNlICd1cGRhdGUgLS1pbml0Jz8iCiBtc2dzdHIgIiIKLSJVbmRlcm1vZHVsZW4gXCIkcGF0aFwiIGhhciBpbnRlIGluaXRpZXJhdHNcbiIKKyJVbmRlcm1vZHVsZW4gXCIkcHJlZml4JHNtX3BhdGhcIiBoYXIgaW50ZSBpbml0aWVyYXRzXG4iCiAiS2Fuc2tlIGR1IHZpbGwga8O2cmEgXCJ1cGRhdGUgLS1pbml0XCI/IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjUzMworIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NDQKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byBmaW5kIGN1cnJlbnQgcmV2aXNpb24gaW4gc3VibW9kdWxlIHBhdGggJyRwYXRoJyIKLW1zZ3N0ciAiS2FuIGludGUgaGl0dGEgYWt0dWVsbCByZXZpc2lvbiBpIHVuZGVybW9kdWxzw7ZrdsOkZyBcIiRwYXRoXCIiCittc2dpZCAiVW5hYmxlIHRvIGZpbmQgY3VycmVudCByZXZpc2lvbiBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAiIgorIkthbiBpbnRlIGhpdHRhIGFrdHVlbGwgcmV2aXNpb24gaSB1bmRlcm1vZHVsc8O2a3bDpGdlbiBcIiRwcmVmaXgkc21fcGF0aFwiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU1MgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NTMKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byBmZXRjaCBpbiBzdWJtb2R1bGUgcGF0aCAnJHBhdGgnIgotbXNnc3RyICJLYW4gaW50ZSBow6RtdGEgaSB1bmRlcm1vZHVsc8O2a3bDpGcgXCIkcGF0aFwiIgorbXNnaWQgIlVuYWJsZSB0byBmZXRjaCBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgorbXNnc3RyICJLYW4gaW50ZSBow6RtdGEgaSB1bmRlcm1vZHVsc8O2a3bDpGcgXCIkc21fcGF0aFwiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU2NgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NzcKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byByZWJhc2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHBhdGgnIgotbXNnc3RyICJLYW4gaW50ZSBnw7ZyYSBcInJlYmFzZVwiIGF2IFwiJHNoYTFcIiBpIHVuZGVybW9kdWxzw7ZrdsOkZyBcIiRwYXRoXCIiCittc2dpZCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICJLYW4gaW50ZSBow6RtdGEgaSB1bmRlcm1vZHVsc8O2a3bDpGcgXCIkcHJlZml4JHNtX3BhdGhcIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NjcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzkxCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHBhdGgnOiByZWJhc2VkIGludG8gJyRzaGExJyIKLW1zZ3N0ciAiVW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkcGF0aFwiOiBcInJlYmFzZVwiOmFkIGluIGkgXCIkc2hhMVwiIgorbXNnaWQgIlVuYWJsZSB0byByZWJhc2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAiS2FuIGludGUgb21iYXNlcmEgXCIkc2hhMVwiIGkgdW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkcHJlZml4JHNtX3BhdGhcIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NzIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzkyCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gbWVyZ2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHBhdGgnIgotbXNnc3RyICJLYW4gaW50ZSBzbMOlIGlob3AgXCIkc2hhMVwiIGkgdW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkcGF0aFwiIgorbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnOiByZWJhc2VkIGludG8gJyRzaGExJyIKK21zZ3N0ciAiVW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkcHJlZml4JHNtX3BhdGhcIjogb21iYXNlcmFkZSBpbiBpIFwiJHNoYTFcIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NzMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Nzk3CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHBhdGgnOiBtZXJnZWQgaW4gJyRzaGExJyIKLW1zZ3N0ciAiVW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkcGF0aFwiOiBzYW1tYW5zbGFnZW4gaSBcIiRzaGExXCIiCittc2dpZCAiVW5hYmxlIHRvIG1lcmdlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIkthbiBpbnRlIHNsw6UgaWhvcCBcIiRzaGExXCIgaSB1bmRlcm1vZHVsc8O2a3bDpGdlbiBcIiRwcmVmaXgkc21fcGF0aFwiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU3OAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTgKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byBjaGVja291dCAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckcGF0aCciCi1tc2dzdHIgIkthbiBpbnRlIGNoZWNrYSB1dCBcIiRzaGExXCIgaSB1bmRlcm1vZHVsc8O2a3bDpGdlbiBcIiRwYXRoXCIiCittc2dpZCAiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCc6IG1lcmdlZCBpbiAnJHNoYTEnIgorbXNnc3RyICJVbmRlcm1vZHVsc8O2a3bDpGdlbiBcIiRwcmVmaXgkc21fcGF0aFwiOiBzYW1tYW5zbGFnZW4gaSBcIiRzaGExXCIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTc5CisjOiBnaXQtc3VibW9kdWxlLnNoOjgwMwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlIHBhdGggJyRwYXRoJzogY2hlY2tlZCBvdXQgJyRzaGExJyIKLW1zZ3N0ciAiVW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkcGF0aFwiOiBjaGVja2FkZSB1dCBcIiRzaGExXCIiCittc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0ICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIkthbiBpbnRlIGNoZWNrYSB1dCBcIiRzaGExXCIgaSB1bmRlcm1vZHVsc8O2a3bDpGdlbiBcIiRwcmVmaXgkc21fcGF0aFwiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjYwMSBnaXQtc3VibW9kdWxlLnNoOjkyNAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MDQKICMsIHNoLWZvcm1hdAotbXNnaWQgIkZhaWxlZCB0byByZWN1cnNlIGludG8gc3VibW9kdWxlIHBhdGggJyRwYXRoJyIKLW1zZ3N0ciAiTWlzc2x5Y2thZGVzIHJla3Vyc2VyYSBpbiBpIHVuZGVybW9kdWxzw7ZrdsOkZ2VuIFwiJHBhdGhcIiIKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogY2hlY2tlZCBvdXQgJyRzaGExJyIKK21zZ3N0ciAiVW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkcHJlZml4JHNtX3BhdGhcIjogY2hlY2thZGUgdXQgXCIkc2hhMVwiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjcwOQotbXNnaWQgIi0tIgotbXNnc3RyICItLSIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODMxCisjLCBzaC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICJNaXNzbHlja2FkZXMgcmVrdXJzZXJhIGluIGkgdW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkcHJlZml4JHNtX3BhdGhcIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NjcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTM5Cittc2dpZCAiVGhlIC0tY2FjaGVkIG9wdGlvbiBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSAtLWZpbGVzIG9wdGlvbiIKK21zZ3N0ciAiRmxhZ2dhbiAtLWNhY2hlZCBrYW4gaW50ZSBhbnbDpG5kYXMgbWVkIGZsYWdnYW4gLS1maWxlcyIKKworIy4gdW5leHBlY3RlZCB0eXBlCisjOiBnaXQtc3VibW9kdWxlLnNoOjk3OQorIywgc2gtZm9ybWF0Cittc2dpZCAidW5leHBlY3RlZCBtb2RlICRtb2RfZHN0IgorbXNnc3RyICJvdsOkbnRhdCBsw6RnZSAkbW9kX2RzdCIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo5OTcKICMsIHNoLWZvcm1hdAogbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdCAkc2hhMV9zcmMiCiBtc2dzdHIgIiAgVmFybmluZzogJG5hbWUgaW5uZWjDpWxsZXIgaW50ZSBpbmNoZWNrbmluZyAkc2hhMV9zcmMiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NzcwCisjOiBnaXQtc3VibW9kdWxlLnNoOjEwMDAKICMsIHNoLWZvcm1hdAogbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdCAkc2hhMV9kc3QiCiBtc2dzdHIgIiAgVmFybmluZzogJG5hbWUgaW5uZWjDpWxsZXIgaW50ZSBpbmNoZWNrbmluZyAkc2hhMV9kc3QiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NzczCisjOiBnaXQtc3VibW9kdWxlLnNoOjEwMDMKICMsIHNoLWZvcm1hdAogbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdHMgJHNoYTFfc3JjIGFuZCAkc2hhMV9kc3QiCiBtc2dzdHIgIiAgVmFybmluZzogJG5hbWUgaW5uZWjDpWxsZXIgaW50ZSBpbmNoZWNrbmluZ2FyICRzaGExX3NyYyBvY2ggJHNoYTFfZHN0IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjc5OAorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDI4CiBtc2dpZCAiYmxvYiIKIG1zZ3N0ciAiYmxvYiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTkKLW1zZ2lkICJzdWJtb2R1bGUiCi1tc2dzdHIgInVuZGVybW9kdWwiCisjOiBnaXQtc3VibW9kdWxlLnNoOjEwNjYKK21zZ2lkICJTdWJtb2R1bGVzIGNoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOiIKK21zZ3N0ciAiVW5kZXJtb2R1bGVyIMOkbmRyYWRlIG1lbiBpbnRlIHVwcGRhdGVyYWRlOiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo5NzAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTA2OAorbXNnaWQgIlN1Ym1vZHVsZSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCittc2dzdHIgIlVuZGVybW9kdWxlcnMgw6RuZHJpbmdhciBhdHQgY2hlY2thIGluOiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMTUzCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTeW5jaHJvbml6aW5nIHN1Ym1vZHVsZSB1cmwgZm9yICckbmFtZSciCi1tc2dzdHIgIlN5bmtyb25pc2VyYXIgdW5kZXJtb2R1bC11cmwgZsO2ciBcIiRuYW1lXCIiCittc2dpZCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgorbXNnc3RyICJNaXNzbHlja2FkZXMgcmVrdXJzZXJhIGluIGkgdW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkc21fcGF0aFwiIgogCi0jfiBtc2dpZCAiVG9vIG1hbnkgb3B0aW9ucyBzcGVjaWZpZWQiCi0jfiBtc2dzdHIgIkbDtnIgbcOlbmdhIGZsYWdnb3IgYW5nYXZzIgorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMjE2CisjLCBzaC1mb3JtYXQKK21zZ2lkICJTeW5jaHJvbml6aW5nIHN1Ym1vZHVsZSB1cmwgZm9yICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICJTeW5rcm9uaXNlcmFyIHVuZGVybW9kdWwtdXJsIGbDtnIgXCIkcHJlZml4JHNtX3BhdGhcIiIKKworI34gbXNnaWQgIkl0IHRvb2sgJS4yZiBzZWNvbmRzIHRvIGVudW1lcmF0ZSB1bnRyYWNrZWQgZmlsZXMuICAnc3RhdHVzIC11bm8nIgorI34gbXNnc3RyICJEZXQgdG9nICUuMmYgc2VrdW5kZXIgYXR0IHLDpGtuYSBvc3DDpXJhZGUgZmlsZXIuIFwic3RhdHVzIC11bm9cIiIKKworI34gbXNnaWQgIm1heSBzcGVlZCBpdCB1cCwgYnV0IHlvdSBoYXZlIHRvIGJlIGNhcmVmdWwgbm90IHRvIGZvcmdldCB0byBhZGQiCisjfiBtc2dzdHIgImthbnNrZSBnw7ZyIGRldCBzbmFiYmFyZSwgbWVuIGR1IG3DpXN0ZSB2YXJhIGbDtnJzaWt0aWcgc8OlIGF0dCBkdSIKKworI34gbXNnaWQgIm5ldyBmaWxlcyB5b3Vyc2VsZiAoc2VlICdnaXQgaGVscCBzdGF0dXMnKS4iCisjfiBtc2dzdHIgImludGUgZ2zDtm1tZXIgbMOkZ2dhIHRpbGwgZmlsZXIgc2rDpGx2IChzZSBcImdpdCBoZWxwIHN0YXR1c1wiKSIKKworI34gbXNnaWQgImdpdCBzaG9ydGxvZyBbLW5dIFstc10gWy1lXSBbLXddIFtyZXYtb3B0c10gWy0tXSBbPGNvbW1pdC1pZD4uLi4gXSIKKyN+IG1zZ3N0ciAiIgorI34gImdpdCBzaG9ydGxvZyBbLW5dIFstc10gWy1lXSBbLXddIFtyZXYtZmxhZ2dvcl0gWy0tXSBbPGluY2hlY2tuaW5nLWlkPi4uLiBdIgorCisjfiBtc2dpZCAiU2VlICdnaXQgaGVscCA8Y29tbWFuZD4nIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGEgc3BlY2lmaWMgY29tbWFuZC4iCisjfiBtc2dzdHIgIiIKKyN+ICJTZSBcImdpdCBoZWxwIDxrb21tYW5kbz5cIiBmw7ZyIG1lciBpbmZvcm1hdGlvbiBvbSBldHQgc3BlY2lmaWt0IGtvbW1hbmRvLiIKKworI34gbXNnaWQgInVzZSBhbnkgcmVmIGluIC5naXQvcmVmcyIKKyN+IG1zZ3N0ciAiYW52w6RuZCBhbGxhIHJlZmVyZW5zZXIgaSAuZ2l0L3JlZnMiCisKKyN+IG1zZ2lkICJ1c2UgYW55IHRhZyBpbiAuZ2l0L3JlZnMvdGFncyIKKyN+IG1zZ3N0ciAiYW52w6RuZCBhbGxhIHRhZ2dhciBpIC5naXQvcmVmcy90YWdzIgorCisjfiBtc2dpZCAiYmFkIG9iamVjdCAlcyIKKyN+IG1zZ3N0ciAiZmVsYWt0aWd0IG9iamVrdCAlcyIKKworI34gbXNnaWQgImJvZ3VzIGNvbW1pdHRlciBpbmZvICVzIgorI34gbXNnc3RyICJmZWxha3RpZyBpbmNoZWNrYXJpbmZvcm1hdGlvbiAlcyIKKworI34gbXNnaWQgImNhbid0IGZkb3BlbiAnc2hvdycgb3V0cHV0IGZkIgorI34gbXNnc3RyICJrdW5kZSBpbnRlIMO2cHBuYSAoZmRvcGVuKSBcInNob3dcIi11dGRhdGEtZmlsaGFuZHRhZyIKKworI34gbXNnaWQgImZhaWxlZCB0byBjbG9zZSBwaXBlIHRvICdzaG93JyBmb3Igb2JqZWN0ICclcyciCisjfiBtc2dzdHIgImt1bmRlIGludGUgc3TDpG5nYSByw7ZyZXQgdGlsbCBcInNob3dcIiBmw7ZyIG9iamVrdGV0IFwiJXNcIiIKKworI34gbXNnaWQgIllvdSBkbyBub3QgaGF2ZSBhIHZhbGlkIEhFQUQiCisjfiBtc2dzdHIgIkR1IGhhciBpbmdlbiBnaWx0aWcgSEVBRCIKKworI34gbXNnaWQgIm9vcHMiCisjfiBtc2dzdHIgImhvcHBzYW4iCisKKyN+IG1zZ2lkICJXb3VsZCBub3QgcmVtb3ZlICVzXG4iCisjfiBtc2dzdHIgIlNrdWxsZSBpbnRlIHRhIGJvcnQgJXNcbiIKKworI34gbXNnaWQgIk5vdCByZW1vdmluZyAlc1xuIgorI34gbXNnc3RyICJUYXIgaW50ZSBib3J0ICVzXG4iCisKKyN+IG1zZ2lkICJDb3VsZCBub3QgcmVhZCBpbmRleCIKKyN+IG1zZ3N0ciAiS3VuZGUgaW50ZSBsw6RzYSBpbmRleGV0IgorCisjfiBtc2dpZCAiZ2l0IHJlbW90ZSBzZXQtaGVhZCA8bmFtZT4gKC1hIHwgLWQgfCA8YnJhbmNoPl0pIgorI34gbXNnc3RyICJnaXQgcmVtb3RlIHNldC1oZWFkIDxuYW1uPiAoLWEgfCAtZCB8IDxncmVuPl0pIgorCisjfiBtc2dpZCAiIDAgZmlsZXMgY2hhbmdlZCIKKyN+IG1zZ3N0ciAiIDAgZmlsZXIgw6RuZHJhZGUiCisKKyN+IG1zZ2lkICIgJWQgZmlsZSBjaGFuZ2VkIgorI34gbXNnaWRfcGx1cmFsICIgJWQgZmlsZXMgY2hhbmdlZCIKKyN+IG1zZ3N0clswXSAiICVkIGZpbCDDpG5kcmFkIgorI34gbXNnc3RyWzFdICIgJWQgZmlsZXIgw6RuZHJhZGUiCisKKyN+IG1zZ2lkICIsICVkIGluc2VydGlvbigrKSIKKyN+IG1zZ2lkX3BsdXJhbCAiLCAlZCBpbnNlcnRpb25zKCspIgorI34gbXNnc3RyWzBdICIsICVkIHRpbGzDpGdnKCspIgorI34gbXNnc3RyWzFdICIsICVkIHRpbGzDpGdnKCspIgorCisjfiBtc2dpZCAiLCAlZCBkZWxldGlvbigtKSIKKyN+IG1zZ2lkX3BsdXJhbCAiLCAlZCBkZWxldGlvbnMoLSkiCisjfiBtc2dzdHJbMF0gIiwgJWQgYm9ydHRhZ25pbmcoLSkiCisjfiBtc2dzdHJbMV0gIiwgJWQgYm9ydHRhZ25pbmdhcigtKSIKKworI34gbXNnaWQgIkF1dG8gcGFja2luZyB0aGUgcmVwb3NpdG9yeSBmb3Igb3B0aW11bSBwZXJmb3JtYW5jZS5cbiIKKyN+IG1zZ3N0ciAiUGFja2FyIGFya2l2ZXQgYXV0b21hdGlza3QgZsO2ciBvcHRpbWFsIHByZXN0YW5kYS5cbiIKKworI34gbXNnaWQgIiAodXNlIFwiZ2l0IGFkZFwiIHRvIHRyYWNrKSIKKyN+IG1zZ3N0ciAiIChzcMOlcmEgbWVkIFwiZ2l0IGFkZFwiKSIKKworI34gbXNnaWQgIi1CIGNhbm5vdCBiZSB1c2VkIHdpdGggLWIiCisjfiBtc2dzdHIgIi1CIGthbiBpbnRlIGFudsOkbmRhcyBtZWQgLWIiCisKKyN+IG1zZ2lkICItLXBhdGNoIGlzIGluY29tcGF0aWJsZSB3aXRoIGFsbCBvdGhlciBvcHRpb25zIgorI34gbXNnc3RyICItLXBhdGNoIMOkciBpbmtvbXBhdGliZWwgbWVkIGFsbGEgYW5kcmEgZmxhZ2dvciIKKworI34gbXNnaWQgIi0tZGV0YWNoIGNhbm5vdCBiZSB1c2VkIHdpdGggLWIvLUIvLS1vcnBoYW4iCisjfiBtc2dzdHIgIi0tZGV0Y2FoIGthbiBpbnRlIGFudsOkbmRhcyBtZWQgLWIvLUIvLS1vcnBoYW4iCisKKyN+IG1zZ2lkICItLWRldGFjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIC10IgorI34gbXNnc3RyICItLWRldGFjaCBrYW4gaW50ZSBhbnbDpG5kYXMgbWVkIC10IgorCisjfiBtc2dpZCAiLS1vcnBoYW4gYW5kIC1ifC1CIGFyZSBtdXR1YWxseSBleGNsdXNpdmUiCisjfiBtc2dzdHIgIi0tb3JwaGFuIG9jaCAtYnwtQiBrYW4gaW50ZSBhbnbDpG5kYXMgc2FtdGlkaWd0IgorCisjfiBtc2dpZCAiLS1vcnBoYW4gY2Fubm90IGJlIHVzZWQgd2l0aCAtdCIKKyN+IG1zZ3N0ciAiLS1vcnBoYW4ga2FuIGludGUgYW52w6RuZGFzIG1lZCAtdCIKKworI34gbXNnaWQgImdpdCBjaGVja291dDogLWYgYW5kIC1tIGFyZSBpbmNvbXBhdGlibGUiCisjfiBtc2dzdHIgImdpdCBjaGVja291dDogLWYgb2NoIC1tIMOkciBpbmtvbXBhdGlibGEiCisKKyN+IG1zZ2lkICIiCisjfiAiZ2l0IGNoZWNrb3V0OiB1cGRhdGluZyBwYXRocyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMuIgorI34gbXNnc3RyICIiCisjfiAiZ2l0IGNoZWNrb3V0OiB1cHBkYXRlcmEgc8O2a3bDpGdhciDDpHIgaW5rb21wYXRpYmVsdCBtZWQgYXR0IHbDpHhsYSBncmVuLiIKKworI34gbXNnaWQgImRpZmYgc2V0dXAgZmFpbGVkIgorI34gbXNnc3RyICJtaXNzbHlja2FkZXMgc8OkdHRhIHVwcCBmw7ZyIGRpZmYiCisKKyN+IG1zZ2lkICJtZXJnZS1yZWN1cnNpdmU6IGRpc2sgZnVsbD8iCisjfiBtc2dzdHIgIm1lcmdlLXJlY3Vyc2l2ZTogZGlzayBmdWxsPyIKKworI34gbXNnaWQgImRpZmZfc2V0dXBfZG9uZSBmYWlsZWQiCisjfiBtc2dzdHIgImRpZmZfc2V0dXBfZG9uZSBtaXNzbHlja2FkZXMiCisKKyN+IG1zZ2lkICIlczogaGFzIGJlZW4gZGVsZXRlZC9yZW5hbWVkIgorI34gbXNnc3RyICIlczogaGFyIHRhZ2l0cyBib3J0L8OkbmRyYXQgbmFtbiIKKworI34gbXNnaWQgIiclcyc6IG5vdCBhIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5LiIKKyN+IG1zZ3N0ciAiXCIlc1wiOiBpbnRlIGVuIGRva3VtZW50YXRpb25za2F0YWxvZy4iCisKKyN+IG1zZ2lkICItZCBvcHRpb24gaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIERvIG5vdCB1c2UuIgorI34gbXNnc3RyICJGbGFnZ2FuIC1kIHN0w7ZkcyBpbnRlIGzDpGdyZS4gQW52w6RuZCBpbnRlLiIKKworI34gbXNnaWQgImNoZXJyeS1waWNrIgorI34gbXNnc3RyICJjaGVycnktcGljayIKKworI34gbXNnaWQgIlBsZWFzZSBlbnRlciB0aGUgY29tbWl0IG1lc3NhZ2UgZm9yIHlvdXIgY2hhbmdlcy4iCisjfiBtc2dzdHIgIkFuZ2UgZXR0IGluY2hlY2tuaW5nc21lZGRlbGFuZGUgZsO2ciBkaW5hIMOkbmRyaW5nYXIuIgorCisjfiBtc2dpZCAiQ291bGQgbm90IGV4dHJhY3QgZW1haWwgZnJvbSBjb21taXR0ZXIgaWRlbnRpdHkuIgorI34gbXNnc3RyICJLdW5kZSBpbnRlIGV4dHJhaGVyYSBlLXBvc3RhZHJlc3MgZnLDpW4gaW5jaGVja2FyZW5zIGlkZW50aXRldC4iCisKKyN+IG1zZ2lkICItLSIKKyN+IG1zZ3N0ciAiLS0iCiAKICN+IG1zZ2lkICIjIENoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOiIKICN+IG1zZ3N0ciAiIyDDhG5kcmFkZSBtZW4gaW50ZSB1cHBkYXRlcmFkZToiCiAKLSN+IG1zZ2lkICJBIGJyYW5jaCBuYW1lZCAnJXMnIGFscmVhZHkgZXhpc3RzLiIKLSN+IG1zZ3N0ciAiRGV0IGZpbm5zIHJlZGFuIGVuIGdyZW4gc29tIGhldGVyIFwiJXNcIiIKLQogI34gbXNnaWQgInBhdGggJyVzJyBkb2VzIG5vdCBoYXZlIGFsbCAzIHZlcnNpb25zIgogI34gbXNnc3RyICJzw7ZrdsOkZ2VuIFwiJXNcIiBoYXIgaW50ZSBhbGxhIDMgdmVyc2lvbmVybmEiCiAKQEAgLTM3NjIsMjYgKzEwMTgyLDE3IEBACiAjfiBtc2dpZCAiY2Fubm90IG1peCAtLWZpeGVkLXN0cmluZ3MgYW5kIHJlZ2V4cCIKICN+IG1zZ3N0ciAia2FuIGludGUgYmxhbmRhIC0tZml4ZWQtc3RyaW5ncyBvY2ggcmVndWxqw6RyYSB1dHRyeWNrIgogCi0jfiBtc2dpZCAiaW52YWxpZCAtLWRlY29yYXRlIG9wdGlvbjogJXMiCi0jfiBtc2dzdHIgImZlbGFrdGlndCB2w6RyZGUgdGlsbCAtLWRlY29yYXRlOiAlcyIKLQogI34gbXNnaWQgIiVzOyB3aWxsIG92ZXJ3cml0ZSEiCiAjfiBtc2dzdHIgIiVzOyBrb21tZXIgc2tyaXZhIMO2dmVyISIKIAogI34gbXNnaWQgIkZhaWxlZCB0byB3cml0ZSBjdXJyZW50IG5vdGVzIHRyZWUgdG8gZGF0YWJhc2UiCiAjfiBtc2dzdHIgIkt1bmRlIGludGUgc2tyaXZhIGFrdHVlbGx0IGFudGVja25pbmdzdHLDpGQgdGlsbCBkYXRhYmFzZW4iCiAKLSN+IG1zZ2lkICJGYWlsZWQgdG8gY29tbWl0IG5vdGVzIHRyZWUgdG8gZGF0YWJhc2UiCi0jfiBtc2dzdHIgIkt1bmRlIGludGUgY2hlY2thIGluIGFudGVja25pbmdzdHLDpGQgaSBkYXRhYmFzZW4iCi0KICMgRklYTUU6IFVudHJhbnNsYXRhYmxlIQogIwogI34gbXNnaWQgIlJlZnVzaW5nIHRvICVzIG5vdGVzIGluICVzIChvdXRzaWRlIG9mIHJlZnMvbm90ZXMvKSIKICN+IG1zZ3N0ciAiVsOkZ3JhciAlcyBhbnRlY2tuaW5nYXIgaSAlcyAodXRhbmbDtnIgcmVmcy9ub3Rlcy8pIgogCi0jfiBtc2dpZCAibGlzdCIKLSN+IG1zZ3N0ciAibGlzdCIKLQogI34gbXNnaWQgImFkZCIKICN+IG1zZ3N0ciAiYWRkIgogCkBAIC0zODE1LDkgKzEwMjI2LDYgQEAKICN+IG1zZ2lkICJDb3VsZCBub3QgZXh0cmFjdCBhdXRob3IgdGltZSBmcm9tICVzIgogI34gbXNnc3RyICJLdW5kZSBpbnRlIGjDpG10YSBmw7ZyZmF0dGFydGlkIGZyw6VuICVzIgogCi0jfiBtc2dpZCAiTm8gYXV0aG9yIGluZm9ybWF0aW9uIGZvdW5kIGluICVzIgotI34gbXNnc3RyICJIaXR0YWRlIGluZ2VuIGbDtnJmYXR0YXJpbmZvcm1hdGlvbiBpICVzIgotCiAjfiBtc2dpZCAiY2hlcnJ5LXBpY2sgLS1mZiBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tc2lnbm9mZiIKICN+IG1zZ3N0ciAiY2hlcnJ5LXBpY2sgLS1mZiBrYW4gaW50ZSBhbnbDpG5kYXMgbWVkIC0tc2lnbm9mZiIKIApAQCAtMzg0Niw2MiArMTAyNTQsMyBAQAogCiAjfiBtc2dpZCAic2lnbmluZyBrZXkgdmFsdWUgdG9vIGxvbmcgKCUuMTBzLi4uKSIKICN+IG1zZ3N0ciAic2lnbmVyaW5nc255Y2tlbHbDpHJkZXQgZsO2ciBsw6VuZ3QgKCUuMTBzLi4uKSIKLQotI34gbXNnaWQgIiIKLSN+ICJXaGVuIHlvdSBoYXZlIHJlc29sdmVkIHRoaXMgcHJvYmxlbSBydW4gXCIkY21kbGluZSAtLXJlc29sdmVkXCIuXG4iCi0jfiAiSWYgeW91IHdvdWxkIHByZWZlciB0byBza2lwIHRoaXMgcGF0Y2gsIGluc3RlYWQgcnVuIFwiJGNtZGxpbmUgLS1za2lwXCIuXG4iCi0jfiAiVG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBzdG9wIHBhdGNoaW5nIHJ1biBcIiRjbWRsaW5lIC0tYWJvcnRcIi4iCi0jfiBtc2dzdHIgIiIKLSN+ICJOw6RyIGR1IGhhciBsw7ZzdCBwcm9ibGVtZXQga8O2ciBkdSBcIiRjbWRsaW5lIC0tcmVzb2x2ZWRcIi5cbiIKLSN+ICJPbSBkdSB2aWxsIGhvcHBhIMO2dmVyIHBhdGNoZW4ga8O2ciBkdSBpc3TDpGxsZXQgXCIkY21kbGluZSAtLXNraXBcIi5cbiIKLSN+ICJGw7ZyIGF0dCDDpXRlcnN0w6RsbGEgb3JpZ2luYWxncmVuZW4gb2NoIGF2YnJ5dGEga8O2ciBkdSBcIiRjbWRsaW5lIC0tYWJvcnRcIi4iCi0KLSN+IG1zZ2lkICIiCi0jfiAiUGF0Y2ggaXMgZW1wdHkuICBXYXMgaXQgc3BsaXQgd3Jvbmc/XG4iCi0jfiAiSWYgeW91IHdvdWxkIHByZWZlciB0byBza2lwIHRoaXMgcGF0Y2gsIGluc3RlYWQgcnVuIFwiJGNtZGxpbmUgLS1za2lwXCIuXG4iCi0jfiAiVG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBzdG9wIHBhdGNoaW5nIHJ1biBcIiRjbWRsaW5lIC0tYWJvcnRcIi4iCi0jfiBtc2dzdHIgIiIKLSN+ICJQYXRjaGVuIMOkciB0b20uIERlbGFkZXMgZGVuIHVwcCBmZWxha3RpZ3Q/XG4iCi0jfiAiT20gZHUgdmlsbCBob3BwYSDDtnZlciBwYXRjaGVuIGvDtnIgZHUgaXN0w6RsbGV0IFwiJGNtZGxpbmUgLS1za2lwXCIuXG4iCi0jfiAiRsO2ciBhdHQgw6V0ZXJzdMOkbGxhIG9yaWdpbmFsZ3JlbmVuIG9jaCBhdmJyeXRhIGvDtnIgZHUgXCIkY21kbGluZSAtLWFib3J0XCIuIgotCi0jfiBtc2dpZCAiUGF0Y2ggZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGUtbWFpbCBhZGRyZXNzLiIKLSN+IG1zZ3N0ciAiUGF0Y2hlbiBoYXIgaW50ZSBuw6Vnb24gZ2lsdGlnIGUtcG9zdGFkcmVzcy4iCi0KLSN+IG1zZ2lkICJDb21taXQgQm9keSBpczoiCi0jfiBtc2dzdHIgIkluY2hlY2tuaW5nc2tyb3BwZW4gw6RyOiIKLQotI34gbXNnaWQgIiIKLSN+ICJObyBjaGFuZ2VzIC0gZGlkIHlvdSBmb3JnZXQgdG8gdXNlICdnaXQgYWRkJz9cbiIKLSN+ICJJZiB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gc3RhZ2UsIGNoYW5jZXMgYXJlIHRoYXQgc29tZXRoaW5nIGVsc2VcbiIKLSN+ICJhbHJlYWR5IGludHJvZHVjZWQgdGhlIHNhbWUgY2hhbmdlczsgeW91IG1pZ2h0IHdhbnQgdG8gc2tpcCB0aGlzIHBhdGNoLiIKLSN+IG1zZ3N0ciAiIgotI34gIkluZ2Egw6RuZHJpbmdhciAtIGdsw7ZtZGUgZHUgYW52w6RuZGEgXCJnaXQgYWRkXCI/XG4iCi0jfiAiT20gZGV0IGludGUgw6RyIG7DpWdvdCBrdmFyIGF0dCBrw7ZhIGthbiBkZXQgaMOkbmRhIGF0dCBuw6Vnb3QgYW5uYXQgcmVkYW5cbiIKLSN+ICJpbnRyb2R1Y2VyYXQgc2FtbWEgw6RuZHJpbmdhcjsga2Fuc2tlIGR1IGLDtnIgaG9wcGEgw7Z2ZXIgcGF0Y2hlbi4iCi0KLSN+IG1zZ2lkICIiCi0jfiAiWW91IHN0aWxsIGhhdmUgdW5tZXJnZWQgcGF0aHMgaW4geW91ciBpbmRleFxuIgotI34gImRpZCB5b3UgZm9yZ2V0IHRvIHVzZSAnZ2l0IGFkZCc/IgotI34gbXNnc3RyICIiCi0jfiAiRHUgaGFyIGZvcnRmYXJhbmRlIHPDtmt2w6RnYXIgc29tIGludGUgc2xhZ2l0cyBzYW1tYW4gaSBkaXR0IGluZGV4XG4iCi0jfiAiZ2zDtm1kZSBkdSBhbnbDpG5kYSBcImdpdCBhZGRcIj8iCi0KLSN+IG1zZ2lkICJQYXRjaCBmYWlsZWQgYXQgJG1zZ251bSAkRklSU1RMSU5FIgotI34gbXNnc3RyICJQYXRjaGVuIG1pc3NseWNrYWRlcyB2aWQgJG1zZ251bSAkRklSU1RMSU5FIgotCi0jLCBmdXp6eQotI34gbXNnaWQgIllvdSBuZWVkIHRvIHN0YXJ0IGJ5IFwiZ2l0IGJpc2VjdCBzdGFydFwiIgotI34gbXNnc3RyICJEdSBtw6VzdGUgc3TDpGxsYSBpbiBkaW4gaW5jaGVja2FyaW5mb3JtYXRpb24gZsO2cnN0IgotCi0jLCBmdXp6eQotI34gbXNnaWQgIkluZGV4IHdhcyBub3QgdW5zdGFzaGVkLiIKLSN+IG1zZ3N0ciAia3VuZGUga8O2cmEgc3Rhc2guIgotCi0jLCBmdXp6eQotI34gbXNnaWQgIiMgU3VibW9kdWxlcyBjaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoiCi0jfiBtc2dzdHIgIiMgw4RuZHJhZGUgbWVuIGludGUgdXBwZGF0ZXJhZGU6IgotCi0jLCBmdXp6eQotI34gbXNnaWQgIiMgU3VibW9kdWxlIGNoYW5nZXMgdG8gYmUgY29tbWl0dGVkOiIKLSN+IG1zZ3N0ciAiIyDDhG5kcmluZ2FyIGF0dCBjaGVja2EgaW46IgpkaWZmIC0tZ2l0IGEvcG8vdmkucG8gYi9wby92aS5wbwppbmRleCBmMDUyOWY0Li5jNmFmOGQ1IDEwMDY0NAotLS0gYS9wby92aS5wbworKysgYi9wby92aS5wbwpAQCAtMSwyNyArMSwyOCBAQAogIyBWaWV0bmFtZXNlIHRyYW5zbGF0aW9uIGZvciBHSVQtQ09SRS4KLSMgQ29weXJpZ2h0IChDKSAyMDEyLCBUcuG6p24gTmfhu41jIFF1w6JuLgorIyBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBUcuG6p24gTmfhu41jIFF1w6JuLgogIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgZ2l0LWNvcmUgcGFja2FnZS4KLSMgRmlyc3QgdHJhbnNsYXRlZCBieSBUcuG6p24gTmfhu41jIFF1w6JuIDx2bndpbGRtYW5AZ21haWwuY29tPiwgMjAxMi4KKyMgRmlyc3QgdHJhbnNsYXRlZCBieSBUcuG6p24gTmfhu41jIFF1w6JuIDx2bndpbGRtYW5AZ21haWwuY29tPiwgMjAxMi0yMDEzLgorIyBOZ3V54buFbiBUaMOhaSBOZ+G7jWMgRHV5IDxwY2xvdWRzQGdtYWlsLmNvbT4sIDIwMTIuCiAjCiBtc2dpZCAiIgogbXNnc3RyICIiCi0iUHJvamVjdC1JZC1WZXJzaW9uOiBnaXQtMS43LjExLnJjMi4yLmdiNjk0ZmJiXG4iCisiUHJvamVjdC1JZC1WZXJzaW9uOiBnaXQtdjEuOC4zLXJjMC0yMC1nYzZiYzdcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogR2l0IE1haWxpbmcgTGlzdCA8Z2l0QHZnZXIua2VybmVsLm9yZz5cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMi0wNi0wOCAxMDoyMCswODAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAxMi0wNi0wOSAxNDowOCswNzAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTMtMDQtMzAgMDg6MjUrMDgwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMTMtMDUtMDEgMTQ6MjYrMDcwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogVHLhuqduIE5n4buNYyBRdcOibiA8dm53aWxkbWFuQGdtYWlsLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBWaWV0bmFtZXNlIDx0cmFuc2xhdGlvbi10ZWFtLXZpQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKKyJMYW5ndWFnZTogdmlcbiIKICJNSU1FLVZlcnNpb246IDEuMFxuIgogIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFxuIgogIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKLSJMYW5ndWFnZTogXG4iCisiVGVhbS1XZWJzaXRlOiA8aHR0cDovL3RyYW5zbGF0aW9ucHJvamVjdC5vcmcvdGVhbS92aS5odG1sPlxuIgogIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPTE7XG4iCi0iWC1Qb2VkaXQtTGFuZ3VhZ2U6IFZpZXRuYW1lc2VcbiIKLSJYLVBvZWRpdC1Db3VudHJ5OiBWSUVUIE5BTVxuIgotIlgtUG9lZGl0LVNvdXJjZUNoYXJzZXQ6IHV0Zi04XG4iCisiWC1Qb2VkaXQtU291cmNlQ2hhcnNldDogVVRGLThcbiIKICJYLVBvZWRpdC1CYXNlcGF0aDogLi4vXG4iCisiWC1HZW5lcmF0b3I6IFBvZWRpdCAxLjUuNVxuIgogCi0jOiBhZHZpY2UuYzo0MAorIzogYWR2aWNlLmM6NTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiaGludDogJS4qc1xuIgogbXNnc3RyICJn4bujaSDDvTogJS4qc1xuIgpAQCAtMzAsNyArMzEsNyBAQAogIy4gKiBNZXNzYWdlIHVzZWQgYm90aCB3aGVuICdnaXQgY29tbWl0JyBmYWlscyBhbmQgd2hlbgogIy4gKiBvdGhlciBjb21tYW5kcyBkb2luZyBhIG1lcmdlIGRvLgogIy4KLSM6IGFkdmljZS5jOjcwCisjOiBhZHZpY2UuYzo4MwogbXNnaWQgIiIKICJGaXggdGhlbSB1cCBpbiB0aGUgd29yayB0cmVlLFxuIgogImFuZCB0aGVuIHVzZSAnZ2l0IGFkZC9ybSA8ZmlsZT4nIGFzXG4iCkBAIC0zOCwxMTEgKzM5LDMyNiBAQAogIm9yIHVzZSAnZ2l0IGNvbW1pdCAtYScuIgogbXNnc3RyICIiCiAiU+G7rWEgY2jDum5nIHRyb25nIGPDonkgbMOgbSB2aeG7h2MsXG4iCi0idsOgIHNhdSDEkcOzIHPhu60gZOG7pW5nIGzhu4duaCAnZ2l0IGFkZC9ybSA8dOG6rXAtdGluPidcbiIKLSJkw6BuaCByacOqbmcgY2hvIHZp4buHYyDEkcOhbmggZOG6pXUgY+G6p24gZ2nhuqNpIHF1eeG6v3QgdsOgIHThuqFvIGzhuqduIGNodXnhu4NuIGdpYW8sXG4iCi0iaG/hurdjIGzDoCBz4butIGThu6VuZyBs4buHbmggJ2dpdCBjb21taXQgLWEnLiIKKyJ2w6Agc2F1IMSRw7MgZMO5bmcgbOG7h25oIOKAnGdpdCBhZGQvcm0gPHThuq1wLXRpbj7igJ0gZMOgbmggcmnDqm5nXG4iCisiY2hvIHZp4buHYyDEkcOhbmggZOG6pXUgdOG6rXAgdGluIGPhuqduIGdp4bqjaSBxdXnhur90IHbDoCB04bqhbyBs4bqnbiBjaHV54buDbiBnaWFvLFxuIgorImhv4bq3YyBsw6AgZMO5bmcgbOG7h25oIOKAnGdpdCBjb21taXQgLWHigJ0uIgorCisjOiBhcmNoaXZlLmM6MTAKK21zZ2lkICJnaXQgYXJjaGl2ZSBbb3B0aW9uc10gPHRyZWUtaXNoPiBbPHBhdGg+Li4uXSIKK21zZ3N0ciAiZ2l0IGFyY2hpdmUgW2PDoWMtdMO5eS1jaOG7jW5dIDx0cmVlLWlzaD4gWzzEkcaw4budbmctZOG6q24+Li4uXSIKKworIzogYXJjaGl2ZS5jOjExCittc2dpZCAiZ2l0IGFyY2hpdmUgLS1saXN0IgorbXNnc3RyICJnaXQgYXJjaGl2ZSAtLWxpc3QiCisKKyM6IGFyY2hpdmUuYzoxMgorbXNnaWQgIiIKKyJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA8cmVwbz4gWy0tZXhlYyA8Y21kPl0gW29wdGlvbnNdIDx0cmVlLWlzaD4gWzxwYXRoPi4uLl0iCittc2dzdHIgIiIKKyJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA8a2hvPiBbLS1leGVjIDxs4buHbmg+XSBbY8OhYy10w7l5LWNo4buNbl0gPHRyZWUtaXNoPiBbPMSRxrDhu51uZy0iCisiZOG6q24+Li4uXSIKKworIzogYXJjaGl2ZS5jOjEzCittc2dpZCAiZ2l0IGFyY2hpdmUgLS1yZW1vdGUgPHJlcG8+IFstLWV4ZWMgPGNtZD5dIC0tbGlzdCIKK21zZ3N0ciAiZ2l0IGFyY2hpdmUgLS1yZW1vdGUgPGtobz4gWy0tZXhlYyA8bOG7h25oPl0gLS1saXN0IgorCisjOiBhcmNoaXZlLmM6MzIzCittc2dpZCAiZm10IgorbXNnc3RyICJmbXQiCisKKyM6IGFyY2hpdmUuYzozMjMKK21zZ2lkICJhcmNoaXZlIGZvcm1hdCIKK21zZ3N0ciAixJHhu4tuaCBk4bqhbmcgbMawdSB0cuG7ryIKKworIzogYXJjaGl2ZS5jOjMyNCBidWlsdGluL2xvZy5jOjExMjYKK21zZ2lkICJwcmVmaXgiCittc2dzdHIgInRp4buBbiB04buRIgorCisjOiBhcmNoaXZlLmM6MzI1Cittc2dpZCAicHJlcGVuZCBwcmVmaXggdG8gZWFjaCBwYXRobmFtZSBpbiB0aGUgYXJjaGl2ZSIKK21zZ3N0ciAibuG7kWkgdGjDqm0gdGnhu4FuIHThu5EgdsOgbyB04burbmcgxJHGsOG7nW5nIGThuqtuIHThuq1wIHRpbiB0cm9uZyBraG8gbMawdSIKKworIzogYXJjaGl2ZS5jOjMyNiBidWlsdGluL2FyY2hpdmUuYzo4OCBidWlsdGluL2JsYW1lLmM6MjM3MQorIzogYnVpbHRpbi9ibGFtZS5jOjIzNzIgYnVpbHRpbi9jb25maWcuYzo1NSBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY1CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY3IGJ1aWx0aW4vZ3JlcC5jOjcxNSBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzcKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTAgYnVpbHRpbi9scy1maWxlcy5jOjQ5MyBidWlsdGluL25vdGVzLmM6NTM2CisjOiBidWlsdGluL25vdGVzLmM6NjkzIGJ1aWx0aW4vcmVhZC10cmVlLmM6MTA3IHBhcnNlLW9wdGlvbnMuaDoxNDkKK21zZ2lkICJmaWxlIgorbXNnc3RyICJ04bqtcC10aW4iCisKKyM6IGFyY2hpdmUuYzozMjcgYnVpbHRpbi9hcmNoaXZlLmM6ODkKK21zZ2lkICJ3cml0ZSB0aGUgYXJjaGl2ZSB0byB0aGlzIGZpbGUiCittc2dzdHIgImdoaSBraG8gbMawdSB2w6BvIHThuq1wIHRpbiBuw6B5IgorCisjOiBhcmNoaXZlLmM6MzI5Cittc2dpZCAicmVhZCAuZ2l0YXR0cmlidXRlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAixJHhu41jIC5naXRhdHRyaWJ1dGVzIHRyb25nIHRoxrAgbeG7pWMgbMOgbSB2aeG7h2MiCisKKyM6IGFyY2hpdmUuYzozMzAKK21zZ2lkICJyZXBvcnQgYXJjaGl2ZWQgZmlsZXMgb24gc3RkZXJyIgorbXNnc3RyICJsaeG7h3Qga8OqIGPDoWMgdOG6rXAgdGluIMSRxrDhu6NjIGzGsHUgdHLhu68gdsOgbyBzdGRlcnIgKMSR4bqndSByYSBs4buXaSB0acOqdSBjaHXhuqluKSIKKworIzogYXJjaGl2ZS5jOjMzMQorbXNnaWQgInN0b3JlIG9ubHkiCittc2dzdHIgImNo4buJIGzGsHUgKGtow7RuZyBuw6luKSIKKworIzogYXJjaGl2ZS5jOjMzMgorbXNnaWQgImNvbXByZXNzIGZhc3RlciIKK21zZ3N0ciAibsOpbiBuaGFuaCBoxqFuIgorCisjOiBhcmNoaXZlLmM6MzQwCittc2dpZCAiY29tcHJlc3MgYmV0dGVyIgorbXNnc3RyICJuw6luIG5o4buPIGjGoW4iCisKKyM6IGFyY2hpdmUuYzozNDMKK21zZ2lkICJsaXN0IHN1cHBvcnRlZCBhcmNoaXZlIGZvcm1hdHMiCittc2dzdHIgImxp4buHdCBrw6ogY8OhYyBraeG7g3UgbsOpbiDEkcaw4bujYyBo4buXIHRy4bujIgorCisjOiBhcmNoaXZlLmM6MzQ1IGJ1aWx0aW4vYXJjaGl2ZS5jOjkwIGJ1aWx0aW4vY2xvbmUuYzo4NgorbXNnaWQgInJlcG8iCittc2dzdHIgImtobyIKKworIzogYXJjaGl2ZS5jOjM0NiBidWlsdGluL2FyY2hpdmUuYzo5MQorbXNnaWQgInJldHJpZXZlIHRoZSBhcmNoaXZlIGZyb20gcmVtb3RlIHJlcG9zaXRvcnkgPHJlcG8+IgorbXNnc3RyICJuaOG6rW4ga2hvIGzGsHUgdOG7qyBraG8gY2jhu6lhIDxraG8+IHRyw6puIG3DoXkgY2jhu6ciCisKKyM6IGFyY2hpdmUuYzozNDcgYnVpbHRpbi9hcmNoaXZlLmM6OTIgYnVpbHRpbi9ub3Rlcy5jOjYxNQorbXNnaWQgImNvbW1hbmQiCittc2dzdHIgImzhu4duaCIKKworIzogYXJjaGl2ZS5jOjM0OCBidWlsdGluL2FyY2hpdmUuYzo5MworbXNnaWQgInBhdGggdG8gdGhlIHJlbW90ZSBnaXQtdXBsb2FkLWFyY2hpdmUgY29tbWFuZCIKK21zZ3N0ciAixJHGsOG7nW5nIGThuqtuIMSR4bq/biBs4buHbmggZ2l0LXVwbG9hZC1wYWNrIHRyw6puIG3DoXkgY2jhu6ciCisKKyM6IGF0dHIuYzoyNTkKK21zZ2lkICIiCisiTmVnYXRpdmUgcGF0dGVybnMgYXJlIGlnbm9yZWQgaW4gZ2l0IGF0dHJpYnV0ZXNcbiIKKyJVc2UgJ1xcIScgZm9yIGxpdGVyYWwgbGVhZGluZyBleGNsYW1hdGlvbi4iCittc2dzdHIgIiIKKyJDw6FjIG3huqt1IGThuqFuZyBwaOG7pyDEkeG7i25oIGLhu4sgY+G6pW0gZMO5bmcgY2hvIGPDoWMgdGh14buZYyB0w61uaCBj4bunYSBnaXRcbiIKKyJEw7luZyDigJxcXCHigJ0gY2hvIGPDoWMgY2h14buXaSB2xINuIGLhuqNuIGPDsyBk4bqldSBjaOG6pW0gdGhhbiBk4bqrbiDEkeG6p3UuIgorCisjOiBicmFuY2guYzo2MAorIywgYy1mb3JtYXQKK21zZ2lkICJOb3Qgc2V0dGluZyBicmFuY2ggJXMgYXMgaXRzIG93biB1cHN0cmVhbS4iCittc2dzdHIgIkNoxrBhIGPDoGkgxJHhurd0IG5ow6FuaCAlcyBuaMawIGzDoCB0aMaw4bujbmcgbmd14buTbiAodXBzdHJlYW0pIGPhu6dhIG7Dsy4iCisKKyM6IGJyYW5jaC5jOjgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgcmVtb3RlIGJyYW5jaCAlcyBmcm9tICVzIGJ5IHJlYmFzaW5nLiIKK21zZ3N0ciAiIgorIk5ow6FuaCAlcyBjw6BpIMSR4bq3dCDEkeG7gyB0aGVvIGTDtWkgduG6v3QgbmjDoW5oIG3DoXkgY2jhu6cgJXMgdOG7qyAlcyBi4bqxbmcgY8OhY2ggcmViYXNlLiIKKworIzogYnJhbmNoLmM6ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgYnJhbmNoICVzIGZyb20gJXMuIgorbXNnc3RyICJOaMOhbmggJXMgY8OgaSDEkeG6t3QgxJHhu4MgdGhlbyB24bq/dCBuaMOhbmggbcOheSBjaOG7pyAlcyB04burICVzLiIKKworIzogYnJhbmNoLmM6ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCBicmFuY2ggJXMgYnkgcmViYXNpbmcuIgorbXNnc3RyICJOaMOhbmggJXMgY8OgaSDEkeG6t3QgxJHhu4MgdGhlbyB24bq/dCBuaMOhbmggbuG7mWkgYuG7mSAlcyBi4bqxbmcgY8OhY2ggcmViYXNlLiIKKworIzogYnJhbmNoLmM6ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCBicmFuY2ggJXMuIgorbXNnc3RyICJOaMOhbmggJXMgY8OgaSDEkeG6t3QgxJHhu4MgdGhlbyB24bq/dCBuaMOhbmggbuG7mWkgYuG7mSAlcy4iCisKKyM6IGJyYW5jaC5jOjkyCisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgcmVtb3RlIHJlZiAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIk5ow6FuaCAlcyBjw6BpIMSR4bq3dCDEkeG7gyB0aGVvIHbhur90IG5ow6FuaCBtw6F5IGNo4bunICVzIGLhurFuZyBjw6FjaCByZWJhc2UuIgorCisjOiBicmFuY2guYzo5MworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSByZWYgJXMuIgorbXNnc3RyICJOaMOhbmggJXMgY8OgaSDEkeG6t3QgxJHhu4MgdGhlbyB24bq/dCB0aGFtIGNoaeG6v3UgbcOheSBjaOG7pyAlcy4iCisKKyM6IGJyYW5jaC5jOjk3CisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgbG9jYWwgcmVmICVzIGJ5IHJlYmFzaW5nLiIKK21zZ3N0ciAiIgorIk5ow6FuaCAlcyBjw6BpIMSR4bq3dCDEkeG7gyB0aGVvIGTDtWkgduG6v3QgdGhhbSBjaGnhur91IG7hu5lpIGLhu5kgJXMgYuG6sW5nIGPDoWNoIHJlYmFzZS4iCisKKyM6IGJyYW5jaC5jOjk4CisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgbG9jYWwgcmVmICVzLiIKK21zZ3N0ciAiTmjDoW5oICVzIGPDoGkgxJHhurd0IMSR4buDIHRoZW8gZMO1aSB0aGFtIGNoaeG6v3UgbuG7mWkgYuG7mSAlcy4iCisKKyM6IGJyYW5jaC5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJUcmFja2luZyBub3Qgc2V0IHVwOiBuYW1lIHRvbyBsb25nOiAlcyIKK21zZ3N0ciAiVGhlbyB24bq/dCBjaMawYSDEkcaw4bujYyBjw6BpIMSR4bq3dDogdMOqbiBxdcOhIGTDoGk6ICVzIgorCisjOiBicmFuY2guYzoxMzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm90IHRyYWNraW5nOiBhbWJpZ3VvdXMgaW5mb3JtYXRpb24gZm9yIHJlZiAlcyIKK21zZ3N0ciAiS2jDtG5nIHRoZW8gduG6v3Q6IHRow7RuZyB0aW4gY2jGsGEgcsO1IHLDoG5nIGNobyB0aGFtIGNoaeG6v3UgJXMiCisKKyM6IGJyYW5jaC5jOjE4MgorIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIGlzIG5vdCBhIHZhbGlkIGJyYW5jaCBuYW1lLiIKK21zZ3N0ciAi4oCcJXPigJ0ga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgdMOqbiBuaMOhbmggaOG7o3AgbOG7hy4iCisKKyM6IGJyYW5jaC5jOjE4NworIywgYy1mb3JtYXQKK21zZ2lkICJBIGJyYW5jaCBuYW1lZCAnJXMnIGFscmVhZHkgZXhpc3RzLiIKK21zZ3N0ciAixJDDoyBjw7MgbmjDoW5oIG1hbmcgdMOqbiDigJwlc+KAnS4iCisKKyM6IGJyYW5jaC5jOjE5NQorbXNnaWQgIkNhbm5vdCBmb3JjZSB1cGRhdGUgdGhlIGN1cnJlbnQgYnJhbmNoLiIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIMOpcCBideG7mWMgY+G6rXAgbmjhuq10IG5ow6FuaCBoaeG7h24gaMOgbmguIgorCisjOiBicmFuY2guYzoyMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHNldHVwIHRyYWNraW5nIGluZm9ybWF0aW9uOyBzdGFydGluZyBwb2ludCAnJXMnIGlzIG5vdCBhIGJyYW5jaC4iCittc2dzdHIgIiIKKyJLaMO0bmcgdGjhu4MgY8OgaSDEkeG6t3QgdGjDtG5nIHRpbiB0aGVvIHbhur90OyDEkWnhu4NtIGLhuq90IMSR4bqndSDigJwlc+KAnSBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCAiCisibmjDoW5oLiIKKworIzogYnJhbmNoLmM6MjAzCisjLCBjLWZvcm1hdAorbXNnaWQgInRoZSByZXF1ZXN0ZWQgdXBzdHJlYW0gYnJhbmNoICclcycgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIm5ow6FuaCBkw7JuZyBuZ8aw4bujYyDEkcOjIHnDqnUgY+G6p3Ug4oCcJXPigJ0gY2jGsGEgc+G6tW4gY8OzIgorCisjOiBicmFuY2guYzoyMDUKK21zZ2lkICIiCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyBvbiBiYXNpbmcgeW91ciB3b3JrIG9uIGFuIHVwc3RyZWFtXG4iCisiYnJhbmNoIHRoYXQgYWxyZWFkeSBleGlzdHMgYXQgdGhlIHJlbW90ZSwgeW91IG1heSBuZWVkIHRvXG4iCisicnVuIFwiZ2l0IGZldGNoXCIgdG8gcmV0cmlldmUgaXQuXG4iCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyB0byBwdXNoIG91dCBhIG5ldyBsb2NhbCBicmFuY2ggdGhhdFxuIgorIndpbGwgdHJhY2sgaXRzIHJlbW90ZSBjb3VudGVycGFydCwgeW91IG1heSB3YW50IHRvIHVzZVxuIgorIlwiZ2l0IHB1c2ggLXVcIiB0byBzZXQgdGhlIHVwc3RyZWFtIGNvbmZpZyBhcyB5b3UgcHVzaC4iCittc2dzdHIgIiIKKyJcbiIKKyJO4bq/dSBi4bqhbiBjw7Mgw70gxJHhu4tuaCB0csOqbiBjxqEgc+G7nyBjw7RuZyB2aeG7h2MgY+G7p2EgYuG6oW4gdHLDqm4gbmjDoW5oIGTDsm5nIG5nxrDhu6NjXG4iCisiKHVwc3RyZWFtKSBjw6FpIG3DoCDEkcOjIHPhurVuIGPDsyB0csOqbiBtw6F5IGNo4bunLCBi4bqhbiBj4bqnbiBjaOG6oXlcbiIKKyJs4buHbmggXCJnaXQgZmV0Y2hcIiDEkeG7gyBs4bqleSBuw7MgduG7gS5cbiIKKyJcbiIKKyJO4bq/dSBi4bqhbiBjw7Mgw70gxJHhu4tuaCBwdXNoIGzDqm5oIG3hu5l0IG5ow6FuaCBu4buZaSBi4buZIG3hu5tpIGPDoWkgbcOgXG4iCisic+G6vSB0aGVvIGTDtWkgYuG6o24gxJHhu5FpIGNoaeG6v3UgbcOheSBjaOG7pyBj4bunYSBuw7MsIGLhuqFuIGPhuqduIGTDuW5nIGzhu4duaFxuIgorIlwiZ2l0IHB1c2ggLXVcIiDEkeG7gyDEkeG6t3QgY+G6pXUgaMOsbmggZMOybmcgbmfGsOG7o2MgYuG6oW4gbXXhu5FuIHB1c2guIgorCisjOiBicmFuY2guYzoyNTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm90IGEgdmFsaWQgb2JqZWN0IG5hbWU6ICclcycuIgorbXNnc3RyICJLaMO0bmcgcGjhuqNpIHTDqm4gxJHhu5FpIHTGsOG7o25nIGjhu6NwIGzhu4c6IOKAnCVz4oCdLiIKKworIzogYnJhbmNoLmM6MjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkFtYmlndW91cyBvYmplY3QgbmFtZTogJyVzJy4iCittc2dzdHIgIlTDqm4gxJHhu5FpIHTGsOG7o25nIGNoxrBhIHLDtSByw6BuZzog4oCcJXPigJ0uIgorCisjOiBicmFuY2guYzoyNzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm90IGEgdmFsaWQgYnJhbmNoIHBvaW50OiAnJXMnLiIKK21zZ3N0ciAiTmjDoW5oIGtow7RuZyBo4bujcCBs4buHOiDigJwlc+KAnS4iCisKKyM6IGJyYW5jaC5jOjI4MQorbXNnaWQgIkZhaWxlZCB0byBsb2NrIHJlZiBmb3IgdXBkYXRlIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkga2jDs2EgdGhhbSBjaGnhur91IChyZWYpIMSR4buDIGPhuq1wIG5o4bqtdCIKKworIzogYnJhbmNoLmM6Mjk5Cittc2dpZCAiRmFpbGVkIHRvIHdyaXRlIHJlZiIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIGdoaSB0aGFtIGNoaeG6v3UgKHJlZikiCiAKICM6IGJ1bmRsZS5jOjM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgZG9lcyBub3QgbG9vayBsaWtlIGEgdjIgYnVuZGxlIGZpbGUiCi1tc2dzdHIgIiclcycga2jDtG5nIGdp4buRbmcgbmjGsCB04bqtcCB0aW4gdjIgYnVuZGxlIChj4bulbSkiCittc2dzdHIgIuKAnCVz4oCdIGtow7RuZyBnaeG7kW5nIG5oxrAgdOG6rXAgdGluIHYyIGJ1bmRsZSAoxJHhu4tuaCBk4bqhbmcgZHVtcCBj4bunYSBnaXQpIgogCiAjOiBidW5kbGUuYzo2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlY29nbml6ZWQgaGVhZGVyOiAlcyVzICglZCkiCiBtc2dzdHIgInBo4bqnbiDEkeG6p3UgKGhlYWRlcikga2jDtG5nIMSRxrDhu6NjIHRo4burYSBuaOG6rW46ICVzJXMgKCVkKSIKIAotIzogYnVuZGxlLmM6ODkKLSM6IGJ1aWx0aW4vY29tbWl0LmM6Njk2CisjOiBidW5kbGUuYzo4OSBidWlsdGluL2NvbW1pdC5jOjY3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiAnJXMnIgotbXNnc3RyICJraMO0bmcgdGjhu4MgbeG7nyAnJXMnIgorbXNnc3RyICJraMO0bmcgdGjhu4MgbeG7nyDigJwlc+KAnSIKIAogIzogYnVuZGxlLmM6MTQwCiBtc2dpZCAiUmVwb3NpdG9yeSBsYWNrcyB0aGVzZSBwcmVyZXF1aXNpdGUgY29tbWl0czoiCi1tc2dzdHIgIktow7MgY2jhu6lhIHRoaeG6v3Ugbmjhu69uZyBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIGPhuqduIHRyxrDhu5tjIGjhur90IG7DoHk6IgorbXNnc3RyICJLaG8gY2jhu6lhIHRoaeG6v3Ugbmjhu69uZyBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIGPhuqduIHRyxrDhu5tjIGjhur90IG7DoHk6IgogCi0jOiBidW5kbGUuYzoxNjQKLSM6IHNlcXVlbmNlci5jOjU1MAotIzogc2VxdWVuY2VyLmM6OTgyCi0jOiBidWlsdGluL2xvZy5jOjI4OQotIzogYnVpbHRpbi9sb2cuYzo3MjAKLSM6IGJ1aWx0aW4vbG9nLmM6MTMwOQotIzogYnVpbHRpbi9sb2cuYzoxNTI4Ci0jOiBidWlsdGluL21lcmdlLmM6MzQ3Ci0jOiBidWlsdGluL3Nob3J0bG9nLmM6MTgxCisjOiBidW5kbGUuYzoxNjQgc2VxdWVuY2VyLmM6NjUxIHNlcXVlbmNlci5jOjExMDEgYnVpbHRpbi9sb2cuYzozMDAKKyM6IGJ1aWx0aW4vbG9nLmM6NzcwIGJ1aWx0aW4vbG9nLmM6MTM0NCBidWlsdGluL2xvZy5jOjE1NzAgYnVpbHRpbi9tZXJnZS5jOjM0OQorIzogYnVpbHRpbi9zaG9ydGxvZy5jOjE1NQogbXNnaWQgInJldmlzaW9uIHdhbGsgc2V0dXAgZmFpbGVkIgotbXNnc3RyICJDw6BpIMSR4bq3dCB2aeG7h2MgZGkgY2h1eeG7g24gcXVhIGPDoWMgxJFp4buDbSB4w6l0IGzhuqFpIGfhurdwIGzhu5dpIgorbXNnc3RyICJjw6BpIMSR4bq3dCB2aeG7h2MgZGkgY2h1eeG7g24gcXVhIGPDoWMgxJFp4buDbSB4w6l0IGzhuqFpIGfhurdwIGzhu5dpIgogCiAjOiBidW5kbGUuYzoxODYKICMsIGMtZm9ybWF0Ci1tc2dpZCAiVGhlIGJ1bmRsZSBjb250YWlucyAlZCByZWYiCi1tc2dpZF9wbHVyYWwgIlRoZSBidW5kbGUgY29udGFpbnMgJWQgcmVmcyIKLW1zZ3N0clswXSAiQnVuZGxlIGNo4bupYSAlZCB0aGFtIGNoaeG6v3UgKHJlZnMpIgotbXNnc3RyWzFdICJCdW5kbGUgY2jhu6lhICVkIHRoYW0gY2hp4bq/dSAocmVmcykiCittc2dpZCAiVGhlIGJ1bmRsZSBjb250YWlucyB0aGlzIHJlZjoiCittc2dpZF9wbHVyYWwgIlRoZSBidW5kbGUgY29udGFpbnMgdGhlc2UgJWQgcmVmczoiCittc2dzdHJbMF0gIkJ1bmRsZSBjaOG7qWEgdGhhbSBjaGnhur91IChyZWYpIG7DoHk6IgorbXNnc3RyWzFdICJCdW5kbGUgY2jhu6lhICVkIHRoYW0gY2hp4bq/dSAocmVmKToiCiAKLSM6IGJ1bmRsZS5jOjE5MgorIzogYnVuZGxlLmM6MTkzCittc2dpZCAiVGhlIGJ1bmRsZSByZWNvcmRzIGEgY29tcGxldGUgaGlzdG9yeS4iCittc2dzdHIgIkzhu4duaCBidW5kbGUgZ2hpIGzhuqFpIHRvw6BuIGLhu5kgbOG7i2NoIHPhu60uIgorCisjOiBidW5kbGUuYzoxOTUKICMsIGMtZm9ybWF0Ci1tc2dpZCAiVGhlIGJ1bmRsZSByZXF1aXJlcyB0aGlzIHJlZiIKLW1zZ2lkX3BsdXJhbCAiVGhlIGJ1bmRsZSByZXF1aXJlcyB0aGVzZSAlZCByZWZzIgotbXNnc3RyWzBdICJM4buHbmggYnVuZGxlIHnDqnUgY+G6p3UgdGhhbSBjaGnhur91IChyZWZzKSBuw6B5IgotbXNnc3RyWzFdICJM4buHbmggYnVuZGxlIHnDqnUgY+G6p3UgJWQgdGhhbSBjaGnhur91IChyZWZzKSBuw6B5IgorbXNnaWQgIlRoZSBidW5kbGUgcmVxdWlyZXMgdGhpcyByZWY6IgorbXNnaWRfcGx1cmFsICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoZXNlICVkIHJlZnM6IgorbXNnc3RyWzBdICJM4buHbmggYnVuZGxlIHnDqnUgY+G6p3UgdGhhbSBjaGnhur91IG7DoHk6IgorbXNnc3RyWzFdICJM4buHbmggYnVuZGxlIHnDqnUgY+G6p3UgJWQgdGhhbSBjaGnhur91IChyZWZzKSBuw6B5OiIKIAotIzogYnVuZGxlLmM6MjkwCisjOiBidW5kbGUuYzoyOTQKIG1zZ2lkICJyZXYtbGlzdCBkaWVkIgotbXNnc3RyICJyZXYtbGlzdCBi4buLIGNo4bq/dCIKK21zZ3N0ciAicmV2LWxpc3QgxJHDoyBjaOG6v3QiCiAKLSM6IGJ1bmRsZS5jOjI5NgotIzogYnVpbHRpbi9sb2cuYzoxMjA1Ci0jOiBidWlsdGluL3Nob3J0bG9nLmM6Mjg0CisjOiBidW5kbGUuYzozMDAgYnVpbHRpbi9sb2cuYzoxMjU1IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGFyZ3VtZW50OiAlcyIKIG1zZ3N0ciAixJHhu5FpIHPhu5Ega2jDtG5nIMSRxrDhu6NjIHRo4burYSBuaOG6rW46ICVzIgogCi0jOiBidW5kbGUuYzozMzEKKyM6IGJ1bmRsZS5jOjMzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWYgJyVzJyBpcyBleGNsdWRlZCBieSB0aGUgcmV2LWxpc3Qgb3B0aW9ucyIKLW1zZ3N0ciAidGhhbSBjaGnhur91ICclcycgYuG7iyBsb+G6oWkgdHLhu6sgYuG7n2kgY8OhYyB0w7l5IGNo4buNbiByZXYtbGlzdCIKK21zZ3N0ciAidGguY2hp4bq/dSDigJwlc+KAnSBi4buLIGxv4bqhaSB0cuG7qyBi4bufaSBjw6FjIHTDuXkgY2jhu41uIHJldi1saXN0IgogCi0jOiBidW5kbGUuYzozNzYKKyM6IGJ1bmRsZS5jOjM4MAogbXNnaWQgIlJlZnVzaW5nIHRvIGNyZWF0ZSBlbXB0eSBidW5kbGUuIgogbXNnc3RyICJU4burIGNo4buRaSB04bqhbyBt4buZdCBidW5kbGUgdHLhu5FuZyBy4buXbmcuIgogCi0jOiBidW5kbGUuYzozOTQKKyM6IGJ1bmRsZS5jOjM5OAogbXNnaWQgIkNvdWxkIG5vdCBzcGF3biBwYWNrLW9iamVjdHMiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBz4bqjbiBzaW5oIHBhY2stb2JqZWN0cyIKIAotIzogYnVuZGxlLmM6NDEyCisjOiBidW5kbGUuYzo0MTYKIG1zZ2lkICJwYWNrLW9iamVjdHMgZGllZCIKIG1zZ3N0ciAicGFjay1vYmplY3RzIMSRw6MgY2jhur90IgogCi0jOiBidW5kbGUuYzo0MTUKKyM6IGJ1bmRsZS5jOjQxOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgY3JlYXRlICclcyciCi1tc2dzdHIgImtow7RuZyB0aOG7gyB04bqhbyAnJXMnIgorbXNnc3RyICJraMO0bmcgdGjhu4MgdOG6oW8g4oCcJXPigJ0iCiAKLSM6IGJ1bmRsZS5jOjQzNworIzogYnVuZGxlLmM6NDQxCiBtc2dpZCAiaW5kZXgtcGFjayBkaWVkIgogbXNnc3RyICJpbmRleC1wYWNrIMSRw6MgY2jhur90IgogCi0jOiBjb21taXQuYzo0OAorIzogY29tbWl0LmM6NTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHBhcnNlICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgcGjDom4gdMOtY2ggJXMiCiAKLSM6IGNvbW1pdC5jOjUwCisjOiBjb21taXQuYzo1MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyAlcyBpcyBub3QgYSBjb21taXQhIgogbXNnc3RyICIlcyAlcyBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCBs4bqnbiBjb21taXQhIgogCi0jOiBjb21wYXQvb2JzdGFjay5jOjQwNgotIzogY29tcGF0L29ic3RhY2suYzo0MDgKKyM6IGNvbXBhdC9vYnN0YWNrLmM6NDA2IGNvbXBhdC9vYnN0YWNrLmM6NDA4CiBtc2dpZCAibWVtb3J5IGV4aGF1c3RlZCIKLW1zZ3N0ciAiY+G6oW4gYuG7mSBuaOG7myIKK21zZ3N0ciAiaOG6v3QgYuG7mSBuaOG7myIKIAogIzogY29ubmVjdGVkLmM6MzkKIG1zZ2lkICJDb3VsZCBub3QgcnVuICdnaXQgcmV2LWxpc3QnIgotbXNnc3RyICJLaMO0bmcgdGjhu4MgY2jhuqF5ICdnaXQgcmV2LWxpc3QnIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgY2jhuqF5IOKAnGdpdCByZXYtbGlzdOKAnSIKIAogIzogY29ubmVjdGVkLmM6NDgKICMsIGMtZm9ybWF0CkBAIC0yMTQsNTkgKzQzMCwzOCBAQAogbXNnc3RyWzBdICIlcywgJWx1IHRow6FuZyB0csaw4bubYyIKIG1zZ3N0clsxXSAiJXMsICVsdSB0aMOhbmcgdHLGsOG7m2MiCiAKLSM6IGRhdGUuYzoxNTQKLSM6IGRhdGUuYzoxNTkKKyM6IGRhdGUuYzoxNTQgZGF0ZS5jOjE1OQogIywgYy1mb3JtYXQKIG1zZ2lkICIlbHUgeWVhciBhZ28iCiBtc2dpZF9wbHVyYWwgIiVsdSB5ZWFycyBhZ28iCiBtc2dzdHJbMF0gIiVsdSBuxINtIHRyxrDhu5tjIgogbXNnc3RyWzFdICIlbHUgbsSDbSB0csaw4bubYyIKIAotIzogZGlmZi5jOjEwNQorIzogZGlmZi5jOjExMgogIywgYy1mb3JtYXQKLW1zZ2lkICIgIEZhaWxlZCB0byBwYXJzZSBkaXJzdGF0IGN1dC1vZmYgcGVyY2VudGFnZSAnJS4qcydcbiIKLW1zZ3N0ciAiICBH4bq3cCBs4buXaSBraGkgcGjDom4gdMOtY2ggZGlyc3RhdCBj4bqvdCBi4buPIHBo4bqnbiB0csSDbSAnJS4qcydcbiIKK21zZ2lkICIgIEZhaWxlZCB0byBwYXJzZSBkaXJzdGF0IGN1dC1vZmYgcGVyY2VudGFnZSAnJXMnXG4iCittc2dzdHIgIiAgR+G6t3AgbOG7l2kga2hpIHBow6JuIHTDrWNoIGRpcnN0YXQgY+G6r3QgYuG7jyBwaOG6p24gdHLEg20g4oCcJXPigJ1cbiIKIAotIzogZGlmZi5jOjExMAorIzogZGlmZi5jOjExNwogIywgYy1mb3JtYXQKLW1zZ2lkICIgIFVua25vd24gZGlyc3RhdCBwYXJhbWV0ZXIgJyUuKnMnXG4iCi1tc2dzdHIgIiAgS2jDtG5nIGhp4buDdSDEkeG7kWkgc+G7kSBkaXJzdGF0ICclLipzJ1xuIgorbXNnaWQgIiAgVW5rbm93biBkaXJzdGF0IHBhcmFtZXRlciAnJXMnXG4iCittc2dzdHIgIiAgS2jDtG5nIGhp4buDdSDEkeG7kWkgc+G7kSBkaXJzdGF0IOKAnCVz4oCdXG4iCiAKICM6IGRpZmYuYzoyMTAKICMsIGMtZm9ybWF0Cittc2dpZCAiVW5rbm93biB2YWx1ZSBmb3IgJ2RpZmYuc3VibW9kdWxlJyBjb25maWcgdmFyaWFibGU6ICclcyciCittc2dzdHIgIktow7RuZyBoaeG7g3UgZ2nDoSB0cuG7iyBjaG8gYmnhur9uIGPhuqV1IGjDrG5oIOKAnGRpZmYuc3VibW9kdWxl4oCdOiDigJwlc+KAnSIKKworIzogZGlmZi5jOjI2MAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiRm91bmQgZXJyb3JzIGluICdkaWZmLmRpcnN0YXQnIGNvbmZpZyB2YXJpYWJsZTpcbiIKICIlcyIKIG1zZ3N0ciAiIgotIlTDrG0gdGjhuqV5IGPDoWMgbOG7l2kgdHJvbmcgYmnhur9uIGPhuqV1IGjDrG5oICdkaWZmLmRpcnN0YXQnOlxuIgorIlTDrG0gdGjhuqV5IGPDoWMgbOG7l2kgdHJvbmcgYmnhur9uIGPhuqV1IGjDrG5oIOKAnGRpZmYuZGlyc3RhdOKAnTpcbiIKICIlcyIKIAotIzogZGlmZi5jOjE0MDAKLW1zZ2lkICIgMCBmaWxlcyBjaGFuZ2VkXG4iCi1tc2dzdHIgIiAwIHThuq1wIHRpbiBuw6BvIGLhu4sgdGhheSDEkeG7lWlcbiIKLQotIzogZGlmZi5jOjE0MDQKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiICVkIGZpbGUgY2hhbmdlZCIKLW1zZ2lkX3BsdXJhbCAiICVkIGZpbGVzIGNoYW5nZWQiCi1tc2dzdHJbMF0gIiAlZCB04bqtcCB0aW4gxJHDoyBi4buLIHRoYXkgxJHhu5VpIgotbXNnc3RyWzFdICIgJWQgdOG6rXAgdGluIMSRw6MgYuG7iyB0aGF5IMSR4buVaSIKLQotIzogZGlmZi5jOjE0MjEKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiLCAlZCBpbnNlcnRpb24oKykiCi1tc2dpZF9wbHVyYWwgIiwgJWQgaW5zZXJ0aW9ucygrKSIKLW1zZ3N0clswXSAiLCAlZCDEkcaw4bujYyB0aMOqbSB2w6BvKCspIgotbXNnc3RyWzFdICIsICVkIMSRxrDhu6NjIHRow6ptIHbDoG8oKykiCi0KLSM6IGRpZmYuYzoxNDMyCi0jLCBjLWZvcm1hdAotbXNnaWQgIiwgJWQgZGVsZXRpb24oLSkiCi1tc2dpZF9wbHVyYWwgIiwgJWQgZGVsZXRpb25zKC0pIgotbXNnc3RyWzBdICIsICVkIGLhu4sgeMOzYSgtKSIKLW1zZ3N0clsxXSAiLCAlZCBi4buLIHjDs2EoLSkiCi0KLSM6IGRpZmYuYzozNDc4CisjOiBkaWZmLmM6MzQ4MQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiRmFpbGVkIHRvIHBhcnNlIC0tZGlyc3RhdC8tWCBvcHRpb24gcGFyYW1ldGVyOlxuIgpAQCAtMjc1LDc1ICs0NzAsOTQgQEAKICJH4bq3cCBs4buXaSBraGkgcGjDom4gdMOtY2ggxJHhu5FpIHPhu5EgdMO5eSBjaOG7jW4gLS1kaXJzdGF0Ly1YOlxuIgogIiVzIgogCi0jOiBncGctaW50ZXJmYWNlLmM6NTkKKyM6IGRpZmYuYzozNDk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBwYXJzZSAtLXN1Ym1vZHVsZSBvcHRpb24gcGFyYW1ldGVyOiAnJXMnIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgcGjDom4gdMOtY2ggxJHhu5FpIHPhu5EgdMO5eSBjaOG7jW4gLS1zdWJtb2R1bGU6IOKAnCVz4oCdIgorCisjOiBncGctaW50ZXJmYWNlLmM6NTkgZ3BnLWludGVyZmFjZS5jOjEzMQogbXNnaWQgImNvdWxkIG5vdCBydW4gZ3BnLiIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGNo4bqheSBncGcuIgogCiAjOiBncGctaW50ZXJmYWNlLmM6NzEKIG1zZ2lkICJncGcgZGlkIG5vdCBhY2NlcHQgdGhlIGRhdGEiCi1tc2dzdHIgImdwZyDEkcOjIGtow7RuZyDEkeG7k25nIMO9IGThu68gbGnhu4d1IgorbXNnc3RyICJncGcgxJHDoyBraMO0bmcgY2jhuqVwIG5o4bqtbiBk4buvIGxp4buHdSIKIAogIzogZ3BnLWludGVyZmFjZS5jOjgyCiBtc2dpZCAiZ3BnIGZhaWxlZCB0byBzaWduIHRoZSBkYXRhIgogbXNnc3RyICJncGcgZ+G6t3AgbOG7l2kga2hpIGvDvSBk4buvIGxp4buHdSIKIAotIzogZ3JlcC5jOjEzMjAKKyM6IGdwZy1pbnRlcmZhY2UuYzoxMTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiY291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZSAnJXMnOiAlcyIKK21zZ3N0ciAia2jDtG5nIHRo4buDIHThuqFvIHThuq1wIHRpbiB04bqhbSB0aOG7nWkg4oCcJXPigJ06ICVzIgorCisjOiBncGctaW50ZXJmYWNlLmM6MTE4CisjLCBjLWZvcm1hdAorbXNnaWQgImZhaWxlZCB3cml0aW5nIGRldGFjaGVkIHNpZ25hdHVyZSB0byAnJXMnOiAlcyIKK21zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIGdoaSBjaOG7ryBrw70gxJHDrW5oIGvDqG0gdsOgbyDigJwlc+KAnTogJXMiCisKKyM6IGdyZXAuYzoxNjIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6IHVuYWJsZSB0byByZWFkICVzIgotbXNnc3RyICInJXMnOiBraMO0bmcgdGjhu4MgxJHhu41jICVzIgorbXNnc3RyICLigJwlc+KAnToga2jDtG5nIHRo4buDIMSR4buNYyAlcyIKIAotIzogZ3JlcC5jOjEzMzcKKyM6IGdyZXAuYzoxNjQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6ICVzIgotbXNnc3RyICInJXMnOiAlcyIKK21zZ3N0ciAi4oCcJXPigJ06ICVzIgogCi0jOiBncmVwLmM6MTM0OAorIzogZ3JlcC5jOjE2NTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJzogc2hvcnQgcmVhZCAlcyIKLW1zZ3N0ciAiJyVzJzogxJHhu41jIG5n4bqvbiAlcyIKK21zZ3N0ciAi4oCcJXPigJ06IMSR4buNYyBuZ+G6r24gJXMiCiAKLSM6IGhlbHAuYzoyMDcKKyM6IGhlbHAuYzoyMTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiYXZhaWxhYmxlIGdpdCBjb21tYW5kcyBpbiAnJXMnIgotbXNnc3RyICJjw6FjIGzhu4duaCBnaXQgc+G6tW4gc8OgbmcgxJHhu4MgZMO5bmcgdHJvbmcgJyVzJyIKK21zZ3N0ciAiY8OhYyBs4buHbmggZ2l0IHPhurVuIHPDoG5nIMSR4buDIGTDuW5nIHRyb25nIOKAnCVz4oCdIgogCi0jOiBoZWxwLmM6MjE0CisjOiBoZWxwLmM6MjE5CiBtc2dpZCAiZ2l0IGNvbW1hbmRzIGF2YWlsYWJsZSBmcm9tIGVsc2V3aGVyZSBvbiB5b3VyICRQQVRIIgogbXNnc3RyICJjw6FjIGzhu4duaCBnaXQgc+G6tW4gc8OgbmcgxJHhu4MgZMO5bmcgdOG7qyBt4buZdCBuxqFpIGtow6FjIHRyb25nICRQQVRIIGPhu6dhIGLhuqFuIgogCi0jOiBoZWxwLmM6MjcwCisjOiBoZWxwLmM6MjM1Cittc2dpZCAiVGhlIG1vc3QgY29tbW9ubHkgdXNlZCBnaXQgY29tbWFuZHMgYXJlOiIKK21zZ3N0ciAiTmjhu69uZyBs4buHbmggZ2l0IGhheSDEkcaw4bujYyBz4butIGThu6VuZyBuaOG6pXQgbMOgOiIKKworIzogaGVscC5jOjI5MgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJyVzJyBhcHBlYXJzIHRvIGJlIGEgZ2l0IGNvbW1hbmQsIGJ1dCB3ZSB3ZXJlIG5vdFxuIgogImFibGUgdG8gZXhlY3V0ZSBpdC4gTWF5YmUgZ2l0LSVzIGlzIGJyb2tlbj8iCiBtc2dzdHIgIiIKLSInJXMnIHRyw7RuZyBuaMawIGzDoCBt4buZdCBs4buHbmggZ2l0LCBuaMawbmcgY2jDum5nIHTDtGkga2jDtG5nXG4iCisi4oCcJXPigJ0gdHLDtG5nIG5oxrAgbMOgIG3hu5l0IGzhu4duaCBnaXQsIG5oxrBuZyBjaMO6bmcgdMO0aSBraMO0bmdcbiIKICJ0aOG7gyB0aOG7sWMgdGhpIG7Dsy4gQ8OzIGzhur0gbMOgIGzhu4duaCBnaXQtJXMgxJHDoyBi4buLIGjhu49uZz8iCiAKLSM6IGhlbHAuYzozMjcKKyM6IGhlbHAuYzozNDkKIG1zZ2lkICJVaCBvaC4gWW91ciBzeXN0ZW0gcmVwb3J0cyBubyBHaXQgY29tbWFuZHMgYXQgYWxsLiIKIG1zZ3N0ciAi4buQaSBjaMOgLiBI4buHIHRo4buRbmcgY+G7p2EgYuG6oW4gYsOhbyBy4bqxbmcgY2jhurNuZyBjw7MgbOG7h25oIEdpdCBuw6BvIGPhuqMuIgogCi0jOiBoZWxwLmM6MzQ5CisjOiBoZWxwLmM6MzcxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJXQVJOSU5HOiBZb3UgY2FsbGVkIGEgR2l0IGNvbW1hbmQgbmFtZWQgJyVzJywgd2hpY2ggZG9lcyBub3QgZXhpc3QuXG4iCiAiQ29udGludWluZyB1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IHlvdSBtZWFudCAnJXMnIgogbXNnc3RyICIiCi0iQ+G6ok5IIELDgU86IELhuqFuIMSRw6MgZ+G7jWkgbOG7h25oIEdpdCBjw7MgdMOqbiAnJXMnLCBtw6AgbsOzIGzhuqFpIGtow7RuZyBz4bq1biBjw7MuXG4iCi0iR2nhuqMgxJHhu4tuaCBy4bqxbmcgw70gYuG6oW4gbMOgICclcyciCisiQ+G6ok5IIELDgU86IELhuqFuIMSRw6MgZ+G7jWkgbOG7h25oIEdpdCBjw7MgdMOqbiDigJwlc+KAnSwgbcOgIG7DsyBs4bqhaSBraMO0bmcgY8OzIHPhurVuLlxuIgorIkdp4bqjIMSR4buLbmggcuG6sW5nIMO9IGLhuqFuIGzDoCDigJwlc+KAnSIKIAotIzogaGVscC5jOjM1NAorIzogaGVscC5jOjM3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbiAlMC4xZiBzZWNvbmRzIGF1dG9tYXRpY2FsbHkuLi4iCiBtc2dzdHIgInRyb25nICUwLjFmIGdpw6J5IG3hu5l0IGPDoWNoIHThu7EgxJHhu5luZy4uLiIKIAotIzogaGVscC5jOjM2MQorIzogaGVscC5jOjM4MwogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQ6ICclcycgaXMgbm90IGEgZ2l0IGNvbW1hbmQuIFNlZSAnZ2l0IC0taGVscCcuIgotbXNnc3RyICJnaXQ6ICclcycga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgbOG7h25oIGPhu6dhIGdpdC4gWGVtIHRow6ptICdnaXQgLS1oZWxwJy4iCittc2dzdHIgImdpdDog4oCcJXPigJ0ga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgbOG7h25oIGPhu6dhIGdpdC4gWGVtIOKAnGdpdCAtLWhlbHDigJ0uIgogCi0jOiBoZWxwLmM6MzY1CisjOiBoZWxwLmM6Mzg3CiBtc2dpZCAiIgogIlxuIgogIkRpZCB5b3UgbWVhbiB0aGlzPyIKQEAgLTM1Nyw0MiArNTcxLDMzOSBAQAogIlxuIgogIkPDsyBwaOG6o2kgw70gYuG6oW4gbMOgIG3hu5l0IHRyb25nIHPhu5Egbmjhu69uZyBjw6FpIG7DoHkga2jDtG5nPyIKIAotIzogcGFyc2Utb3B0aW9ucy5jOjQ5MworIzogbWVyZ2UuYzo1NgorbXNnaWQgImZhaWxlZCB0byByZWFkIHRoZSBjYWNoZSIKK21zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIMSR4buNYyBi4buZIG5o4bubIHThuqFtIgorCisjOiBtZXJnZS5jOjExMCBidWlsdGluL2NoZWNrb3V0LmM6MzY1IGJ1aWx0aW4vY2hlY2tvdXQuYzo1NjYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NDUKK21zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbmV3IGluZGV4IGZpbGUiCittc2dzdHIgImtow7RuZyB0aOG7gyBnaGkgdOG6rXAgdGluIGzGsHUgYuG6o25nIG3hu6VjIGzhu6VjIG3hu5tpIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiKGJhZCBjb21taXQpXG4iCittc2dzdHIgIihjb21taXQgc2FpKVxuIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoyMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYWRkaW5mb19jYWNoZSBmYWlsZWQgZm9yIHBhdGggJyVzJyIKK21zZ3N0ciAiYWRkaW5mb19jYWNoZSBn4bq3cCBs4buXaSDEkeG7kWkgduG7m2kgxJHGsOG7nW5nIGThuqtuIOKAnCVz4oCdIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoyNjgKK21zZ2lkICJlcnJvciBidWlsZGluZyB0cmVlcyIKK21zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIHjDonkgZOG7sW5nIGPDonkiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjY3MgorIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgdG8gY3JlYXRlIHBhdGggJyVzJyVzIgorbXNnc3RyICJn4bq3cCBs4buXaSBraGkgdOG6oW8gxJHGsOG7nW5nIGThuqtuIOKAnCVz4oCdJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjY4MworIywgYy1mb3JtYXQKK21zZ2lkICJSZW1vdmluZyAlcyB0byBtYWtlIHJvb20gZm9yIHN1YmRpcmVjdG9yeVxuIgorbXNnc3RyICJH4buhIGLhu48gJXMgxJHhu4MgdOG6oW8gY2jhu5cgKHJvb20pIGNobyB0aMawIG3hu6VjIGNvblxuIgorCisjLiBzb21ldGhpbmcgZWxzZSBleGlzdHMKKyMuIC4uIGJ1dCBub3Qgc29tZSBvdGhlciBlcnJvciAod2hvIHJlYWxseSBjYXJlcyB3aGF0PykKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjY5NyBtZXJnZS1yZWN1cnNpdmUuYzo3MTgKK21zZ2lkICI6IHBlcmhhcHMgYSBEL0YgY29uZmxpY3Q/IgorbXNnc3RyICI6IGPDsyBs4bq9IGzDoCBt4buZdCB4dW5nIMSR4buZdCBEL0Y/IgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3MDgKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVmdXNpbmcgdG8gbG9zZSB1bnRyYWNrZWQgZmlsZSBhdCAnJXMnIgorbXNnc3RyICJ04burIGNo4buRaSDEkcOzbmcgdOG6rXAgdGluIGtow7RuZyDEkcaw4bujYyB0aGVvIHbhur90IHThuqFpIOKAnCVz4oCdIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2Fubm90IHJlYWQgb2JqZWN0ICVzICclcyciCittc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgxJHhu5FpIHTGsOG7o25nICVzIOKAnCVz4oCdIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmxvYiBleHBlY3RlZCBmb3IgJXMgJyVzJyIKK21zZ3N0ciAixJHhu5FpIHTGsOG7o25nIGJsb2IgxJHGsOG7o2MgbW9uZyDEkeG7o2kgY2hvICVzIOKAnCVz4oCdIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NzMgYnVpbHRpbi9jbG9uZS5jOjMxMworIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgdG8gb3BlbiAnJXMnIgorbXNnc3RyICJn4bq3cCBs4buXaSBraGkgbeG7nyDigJwlc+KAnSIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzgxCisjLCBjLWZvcm1hdAorbXNnaWQgImZhaWxlZCB0byBzeW1saW5rICclcyciCittc2dzdHIgImfhurdwIGzhu5dpIGtoaSB04bqhbyBsacOqbiBr4bq/dCB0xrDhu6NuZyB0csawbmcgKHN5bWxpbmspIOKAnCVz4oCdIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiZG8gbm90IGtub3cgd2hhdCB0byBkbyB3aXRoICUwNm8gJXMgJyVzJyIKK21zZ3N0ciAia2jDtG5nIGhp4buDdSBwaOG6o2kgbMOgbSBnw6wgduG7m2kgJTA2byAlcyDigJwlc+KAnSIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6OTIyCittc2dpZCAiRmFpbGVkIHRvIGV4ZWN1dGUgaW50ZXJuYWwgbWVyZ2UiCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSB0aOG7sWMgaGnhu4duIHRy4buZbiBu4buZaSBi4buZIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo5MjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5hYmxlIHRvIGFkZCAlcyB0byBkYXRhYmFzZSIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIHRow6ptICVzIHbDoG8gY8ahIHPhu58gZOG7ryBsaeG7h3UiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjk0MgorbXNnaWQgInVuc3VwcG9ydGVkIG9iamVjdCB0eXBlIGluIHRoZSB0cmVlIgorbXNnc3RyICJraeG7g3UgxJHhu5FpIHTGsOG7o25nIGtow7RuZyDEkcaw4bujYyBo4buXIHRy4bujIHRyb25nIGPDonkgKHRyZWUpIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDIxIG1lcmdlLXJlY3Vyc2l2ZS5jOjEwMzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNPTkZMSUNUICglcy9kZWxldGUpOiAlcyBkZWxldGVkIGluICVzIGFuZCAlcyBpbiAlcy4gVmVyc2lvbiAlcyBvZiAlcyBsZWZ0ICIKKyJpbiB0cmVlLiIKK21zZ3N0ciAiIgorIlhVTkcgxJDhu5hUICglcy94w7NhKTogJXMgYuG7iyB4w7NhIHRyb25nICVzIHbDoCAlcyB0cm9uZyAlcy4gUGhpw6puIGLhuqNuICVzIGPhu6dhICVzICIKKyJjw7JuIGzhuqFpIHRyb25nIGPDonkgKHRyZWUpLiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTAyNyBtZXJnZS1yZWN1cnNpdmUuYzoxMDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDT05GTElDVCAoJXMvZGVsZXRlKTogJXMgZGVsZXRlZCBpbiAlcyBhbmQgJXMgaW4gJXMuIFZlcnNpb24gJXMgb2YgJXMgbGVmdCAiCisiaW4gdHJlZSBhdCAlcy4iCittc2dzdHIgIiIKKyJYVU5HIMSQ4buYVCAoJXMveMOzYSk6ICVzIGLhu4sgeMOzYSB0cm9uZyAlcyB2w6AgJXMgdHJvbmcgJXMuIFBoacOqbiBi4bqjbiAlcyBj4bunYSAlcyAiCisiY8OybiBs4bqhaSB0cm9uZyBjw6J5ICh0cmVlKSB04bqhaSAlcy4iCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEwODEKK21zZ2lkICJyZW5hbWUiCittc2dzdHIgIsSR4buVaSB0w6puIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDgxCittc2dpZCAicmVuYW1lZCIKK21zZ3N0ciAixJHDoyDEkeG7lWkgdMOqbiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTEzNworIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBhIGRpcmVjdG9yeSBpbiAlcyBhZGRpbmcgYXMgJXMgaW5zdGVhZCIKK21zZ3N0ciAiJXMgbMOgIG3hu5l0IHRoxrAgbeG7pWMgdHJvbmcgJXMgdGhheSB2w6BvIMSRw7MgdGjDqm0gdsOgbyBuaMawIGzDoCAlcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTE1OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ09ORkxJQ1QgKHJlbmFtZS9yZW5hbWUpOiBSZW5hbWUgXCIlc1wiLT5cIiVzXCIgaW4gYnJhbmNoIFwiJXNcIiByZW5hbWUgXCIlcyIKKyJcIi0+XCIlc1wiIGluIFwiJXNcIiVzIgorbXNnc3RyICIiCisiWFVORyDEkOG7mFQgKMSR4buVaS10w6puL8SR4buVaS10w6puKTogxJDhu5VpIHTDqm4gXCIlc1wiLT5cIiVzXCIgdHJvbmcgbmjDoW5oIFwiJXNcIiDEkeG7lWkgIgorInTDqm4gXCIlc1wiLT5cIiVzXCIgdHJvbmcgXCIlc1wiJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjExNjQKK21zZ2lkICIgKGxlZnQgdW5yZXNvbHZlZCkiCittc2dzdHIgIiAoY+G6p24gZ2nhuqNpIHF1eeG6v3QpIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMjE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNPTkZMSUNUIChyZW5hbWUvcmVuYW1lKTogUmVuYW1lICVzLT4lcyBpbiAlcy4gUmVuYW1lICVzLT4lcyBpbiAlcyIKK21zZ3N0ciAiIgorIlhVTkcgxJDhu5hUICjEkeG7lWktdMOqbi/EkeG7lWktdMOqbik6IMSQ4buVaSB0w6puICVzLT4lcyB0cm9uZyAlcy4gxJDhu5VpIHTDqm4gJXMtPiVzIHRyb25nICVzIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMjQ4CisjLCBjLWZvcm1hdAorbXNnaWQgIlJlbmFtaW5nICVzIHRvICVzIGFuZCAlcyB0byAlcyBpbnN0ZWFkIgorbXNnc3RyICLEkGFuZyDEkeG7lWkgdMOqbiAlcyB0aMOgbmggJXMgdGhheSB2w6wgJXMgdGjDoG5oICVzIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNDQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNPTkZMSUNUIChyZW5hbWUvYWRkKTogUmVuYW1lICVzLT4lcyBpbiAlcy4gJXMgYWRkZWQgaW4gJXMiCittc2dzdHIgIiIKKyJYVU5HIMSQ4buYVCAoxJHhu5VpLXTDqm4vdGjDqm0pOiDEkOG7lWkgdMOqbiAlcy0+JXMgdHJvbmcgJXMuICVzIMSRxrDhu6NjIHRow6ptIHbDoG8gdHJvbmcgJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE0NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQWRkaW5nIG1lcmdlZCAlcyIKK21zZ3N0ciAiVGjDqm0gaMOyYSB0cuG7mW4gJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE0NjIgbWVyZ2UtcmVjdXJzaXZlLmM6MTY2MAorIywgYy1mb3JtYXQKK21zZ2lkICJBZGRpbmcgYXMgJXMgaW5zdGVhZCIKK21zZ3N0ciAiVGhheSB2w6BvIMSRw7MgdGjDqm0gdsOgbyAlcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTUxMworIywgYy1mb3JtYXQKK21zZ2lkICJjYW5ub3QgcmVhZCBvYmplY3QgJXMiCittc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgxJHhu5FpIHTGsOG7o25nICVzIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTE2CisjLCBjLWZvcm1hdAorbXNnaWQgIm9iamVjdCAlcyBpcyBub3QgYSBibG9iIgorbXNnc3RyICLEkeG7kWkgdMaw4bujbmcgJXMga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgYmxvYiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTU2NAorbXNnaWQgIm1vZGlmeSIKK21zZ3N0ciAic+G7rWEgxJHhu5VpIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTY0Cittc2dpZCAibW9kaWZpZWQiCittc2dzdHIgIsSRw6Mgc+G7rWEiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1NzQKK21zZ2lkICJjb250ZW50IgorbXNnc3RyICJu4buZaSBkdW5nIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTgxCittc2dpZCAiYWRkL2FkZCIKK21zZ3N0ciAidGjDqm0vdGjDqm0iCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2tpcHBlZCAlcyAobWVyZ2VkIHNhbWUgYXMgZXhpc3RpbmcpIgorbXNnc3RyICLEkMOjIGLhu48gcXVhICVzICjEkcOjIGPDsyBz4bq1biBs4bqnbiBow7JhIHRy4buZbiBuw6B5KSIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYyOQorIywgYy1mb3JtYXQKK21zZ2lkICJBdXRvLW1lcmdpbmcgJXMiCittc2dzdHIgIlThu7EtxJHhu5luZy1ow7JhLXRy4buZbiAlcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYzMyBnaXQtc3VibW9kdWxlLnNoOjEwMjkKK21zZ2lkICJzdWJtb2R1bGUiCittc2dzdHIgIm3DtC3EkXVuLWNvbiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYzNAorIywgYy1mb3JtYXQKK21zZ2lkICJDT05GTElDVCAoJXMpOiBNZXJnZSBjb25mbGljdCBpbiAlcyIKK21zZ3N0ciAiWFVORyDEkOG7mFQgKCVzKTogWHVuZyDEkeG7mXQgaMOyYSB0cuG7mW4gdHJvbmcgJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVtb3ZpbmcgJXMiCittc2dzdHIgIsSQYW5nIHjDs2EgJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NDkKK21zZ2lkICJmaWxlL2RpcmVjdG9yeSIKK21zZ3N0ciAidOG6rXAtdGluL3RoxrAtbeG7pWMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NTUKK21zZ2lkICJkaXJlY3RvcnkvZmlsZSIKK21zZ3N0ciAidGjGsC1t4bulYy904bqtcCB0aW4iCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ09ORkxJQ1QgKCVzKTogVGhlcmUgaXMgYSBkaXJlY3Rvcnkgd2l0aCBuYW1lICVzIGluICVzLiBBZGRpbmcgJXMgYXMgJXMiCittc2dzdHIgIiIKKyJYVU5HIMSQ4buYVCAoJXMpOiDhu54gxJHDonkga2jDtG5nIGPDsyB0aMawIG3hu6VjIG7DoG8gY8OzIHTDqm4gJXMgdHJvbmcgJXMuIFRow6ptICVzIG5oxrAgbMOgICIKKyIlcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTc3MAorIywgYy1mb3JtYXQKK21zZ2lkICJBZGRpbmcgJXMiCittc2dzdHIgIlRow6ptIFwiJXNcIiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTc4NworbXNnaWQgIkZhdGFsIG1lcmdlIGZhaWx1cmUsIHNob3VsZG4ndCBoYXBwZW4uIgorbXNnc3RyICJWaeG7h2MgaMOyYSB0cuG7mW4gaOG7j25nIG5naGnDqm0gdHLhu41uZywga2jDtG5nIG7Dqm4gxJHhu4MgeOG6o3kgcmEuIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODA2Cittc2dpZCAiQWxyZWFkeSB1cC10by1kYXRlISIKK21zZ3N0ciAixJDDoyBj4bqtcCBuaOG6rXQgcuG7k2khIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODE1CisjLCBjLWZvcm1hdAorbXNnaWQgIm1lcmdpbmcgb2YgdHJlZXMgJXMgYW5kICVzIGZhaWxlZCIKK21zZ3N0ciAiaMOyYSB0cuG7mW4gY8OieSAodHJlZSkgJXMgdsOgICVzIGfhurdwIGzhu5dpIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVucHJvY2Vzc2VkIHBhdGg/Pz8gJXMiCittc2dzdHIgIsSQxrDhu51uZyBk4bqrbiBjaMawYSDEkcaw4bujYyB44butIGzDvT8/PyAlcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTg5MAorbXNnaWQgIk1lcmdpbmc6IgorbXNnc3RyICLEkGFuZyB0cuG7mW46IgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTAzCisjLCBjLWZvcm1hdAorbXNnaWQgImZvdW5kICV1IGNvbW1vbiBhbmNlc3RvcjoiCittc2dpZF9wbHVyYWwgImZvdW5kICV1IGNvbW1vbiBhbmNlc3RvcnM6IgorbXNnc3RyWzBdICJ0w6xtIHRo4bqleSAldSB04buVIHRpw6puIGNodW5nOiIKK21zZ3N0clsxXSAidMOsbSB0aOG6pXkgJXUgdOG7lSB0acOqbiBjaHVuZzoiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE5NDAKK21zZ2lkICJtZXJnZSByZXR1cm5lZCBubyBjb21taXQiCittc2dzdHIgImjDsmEgdHLhu5luIGtow7RuZyB0cuG6oyB24buBIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbsOgbyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTk5NworIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcyciCittc2dzdHIgIktow7RuZyB0aOG7gyBwaMOibiB0w61jaCDEkeG7kWkgdMaw4bujbmcg4oCcJXPigJ0iCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjIwMDkgYnVpbHRpbi9tZXJnZS5jOjY1OAorbXNnaWQgIlVuYWJsZSB0byB3cml0ZSBpbmRleC4iCittc2dzdHIgIktow7RuZyB0aOG7gyBnaGkgYuG6o25nIG3hu6VjIGzhu6VjIgorCisjOiBvYmplY3QuYzoxOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHBhcnNlIG9iamVjdDogJXMiCittc2dzdHIgImtow7RuZyB0aOG7gyBwaMOibiB0w61jaCDEkeG7kWkgdMaw4bujbmc6IOKAnCVz4oCdIgorCisjOiBwYXJzZS1vcHRpb25zLmM6NDg5CiBtc2dpZCAiLi4uIgogbXNnc3RyICIuLi4iCiAKLSM6IHBhcnNlLW9wdGlvbnMuYzo1MTEKKyM6IHBhcnNlLW9wdGlvbnMuYzo1MDcKICMsIGMtZm9ybWF0CiBtc2dpZCAidXNhZ2U6ICVzIgotbXNnc3RyICJjw6FjaCBz4butIGThu6VuZzogJXMiCittc2dzdHIgImPDoWNoIGTDuW5nOiAlcyIKIAogIy4gVFJBTlNMQVRPUlM6IHRoZSBjb2xvbiBoZXJlIHNob3VsZCBhbGlnbiB3aXRoIHRoZQogIy4gb25lIGluICJ1c2FnZTogJXMiIHRyYW5zbGF0aW9uCi0jOiBwYXJzZS1vcHRpb25zLmM6NTE1CisjOiBwYXJzZS1vcHRpb25zLmM6NTExCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgIG9yOiAlcyIKLW1zZ3N0ciAiICAgaG/hurdjOiAlcyIKK21zZ3N0ciAiICAgICBob+G6t2M6ICVzIgogCi0jOiBwYXJzZS1vcHRpb25zLmM6NTE4CisjOiBwYXJzZS1vcHRpb25zLmM6NTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICAlcyIKIG1zZ3N0ciAiICAgICVzIgogCi0jOiByZW1vdGUuYzoxNjI5CisjOiBwYXJzZS1vcHRpb25zLmM6NTQ4Cittc2dpZCAiLU5VTSIKK21zZ3N0ciAiLVPhu5AiCisKKyM6IHBhdGhzcGVjLmM6ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGF0aCAnJXMnIGlzIGluIHN1Ym1vZHVsZSAnJS4qcyciCittc2dzdHIgIsSQxrDhu51uZyBk4bqrbiDigJwlc+KAnSB0aMOsIOG7nyB0cm9uZyBtw7QtxJF1bi1jb24g4oCcJS4qc+KAnSIKKworIzogcGF0aHNwZWMuYzo5OQorIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIGlzIGJleW9uZCBhIHN5bWJvbGljIGxpbmsiCittc2dzdHIgIuKAnCVz4oCdIG7hurFtIG5nb8OgaSBt4buZdCBsacOqbiBr4bq/dCB0xrDhu6NuZyB0csawbmciCisKKyM6IHJlbW90ZS5jOjE3ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAiWW91ciBicmFuY2ggaXMgYWhlYWQgb2YgJyVzJyBieSAlZCBjb21taXQuXG4iCiBtc2dpZF9wbHVyYWwgIllvdXIgYnJhbmNoIGlzIGFoZWFkIG9mICclcycgYnkgJWQgY29tbWl0cy5cbiIKLW1zZ3N0clswXSAiTmjDoW5oIGPhu6dhIGLhuqFuIGzDoCDEkeG6p3UgY+G7p2EgJyVzJyBi4bufaSAlZCBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpLlxuIgotbXNnc3RyWzFdICJOaMOhbmggY+G7p2EgYuG6oW4gbMOgIMSR4bqndSBj4bunYSAnJXMnIGLhu59pICVkIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkuXG4iCittc2dzdHJbMF0gIk5ow6FuaCBj4bunYSBi4bqhbiBsw6AgxJHhuqd1IGPhu6dhIOKAnCVz4oCdIGLhu59pICVkIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkuXG4iCittc2dzdHJbMV0gIk5ow6FuaCBj4bunYSBi4bqhbiBsw6AgxJHhuqd1IGPhu6dhIOKAnCVz4oCdIGLhu59pICVkIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkuXG4iCiAKLSM6IHJlbW90ZS5jOjE2MzUKKyM6IHJlbW90ZS5jOjE3ODcKK21zZ2lkICIgICh1c2UgXCJnaXQgcHVzaFwiIHRvIHB1Ymxpc2ggeW91ciBsb2NhbCBjb21taXRzKVxuIgorbXNnc3RyICIgIChkw7luZyBcImdpdCBwdXNoXCIgxJHhu4MgeHXhuqV0IGLhuqNuIGPDoWMgbOG6p24gY2h1eeG7g24gZ2lhbyBu4buZaSBi4buZIGPhu6dhIGLhuqFuKVxuIgorCisjOiByZW1vdGUuYzoxNzkwCiAjLCBjLWZvcm1hdAogbXNnaWQgIllvdXIgYnJhbmNoIGlzIGJlaGluZCAnJXMnIGJ5ICVkIGNvbW1pdCwgYW5kIGNhbiBiZSBmYXN0LWZvcndhcmRlZC5cbiIKLW1zZ2lkX3BsdXJhbCAiWW91ciBicmFuY2ggaXMgYmVoaW5kICclcycgYnkgJWQgY29tbWl0cywgYW5kIGNhbiBiZSBmYXN0LWZvcndhcmRlZC5cbiIKLW1zZ3N0clswXSAiTmjDoW5oIGPhu6dhIGLhuqFuIHRow6wg4bufIMSR4bqxbmcgc2F1ICclcycgYuG7n2kgJWQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSwgdsOgIGPDsyB0aOG7gyDEkcaw4bujYyBmYXN0LWZvcndhcmQuXG4iCi1tc2dzdHJbMV0gIk5ow6FuaCBj4bunYSBi4bqhbiB0aMOsIOG7nyDEkeG6sW5nIHNhdSAnJXMnIGLhu59pICVkIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCksIHbDoCBjw7MgdGjhu4MgxJHGsOG7o2MgZmFzdC1mb3J3YXJkLlxuIgorbXNnaWRfcGx1cmFsICIiCisiWW91ciBicmFuY2ggaXMgYmVoaW5kICclcycgYnkgJWQgY29tbWl0cywgYW5kIGNhbiBiZSBmYXN0LWZvcndhcmRlZC5cbiIKK21zZ3N0clswXSAiIgorIk5ow6FuaCBj4bunYSBi4bqhbiB0aMOsIOG7nyDEkeG6sW5nIHNhdSDigJwlc+KAnSBi4bufaSAlZCBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpLCB2w6AgY8OzIHRo4buDICIKKyLEkcaw4bujYyBmYXN0LWZvcndhcmQuXG4iCittc2dzdHJbMV0gIiIKKyJOaMOhbmggY+G7p2EgYuG6oW4gdGjDrCDhu58gxJHhurFuZyBzYXUg4oCcJXPigJ0gYuG7n2kgJWQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSwgdsOgIGPDsyB0aOG7gyAiCisixJHGsOG7o2MgZmFzdC1mb3J3YXJkLlxuIgogCi0jOiByZW1vdGUuYzoxNjQzCisjOiByZW1vdGUuYzoxNzk4Cittc2dpZCAiICAodXNlIFwiZ2l0IHB1bGxcIiB0byB1cGRhdGUgeW91ciBsb2NhbCBicmFuY2gpXG4iCittc2dzdHIgIiAgKGTDuW5nIFwiZ2l0IHB1bGxcIiDEkeG7gyBj4bqtcCBuaOG6rXQgbmjDoW5oIG7hu5lpIGLhu5kgY+G7p2EgYuG6oW4pXG4iCisKKyM6IHJlbW90ZS5jOjE4MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIllvdXIgYnJhbmNoIGFuZCAnJXMnIGhhdmUgZGl2ZXJnZWQsXG4iCkBAIC00MDEsNzgxICs5MTIsMTEyNiBAQAogIllvdXIgYnJhbmNoIGFuZCAnJXMnIGhhdmUgZGl2ZXJnZWQsXG4iCiAiYW5kIGhhdmUgJWQgYW5kICVkIGRpZmZlcmVudCBjb21taXRzIGVhY2gsIHJlc3BlY3RpdmVseS5cbiIKIG1zZ3N0clswXSAiIgotIk5ow6FuaCBj4bunYSBi4bqhbiB2w6AgJyVzJyBi4buLIHBow6JuIGvhu7MsXG4iCisiTmjDoW5oIGPhu6dhIGLhuqFuIHbDoCDigJwlc+KAnSBi4buLIHBow6JuIGvhu7MsXG4iCiAidsOgIGPDsyAlZCB2w6AgJWQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBraMOhYyBuaGF1IGNobyB04burbmcgY8OhaSxcbiIKICJ0xrDGoW5nIOG7qW5nIHbhu5tpIG3hu5dpIGzhuqduLlxuIgogbXNnc3RyWzFdICIiCi0iWW91ciBicmFuY2ggYW5kICclcycgaGF2ZSBkaXZlcmdlZCxcbiIKKyJZb3VyIGJyYW5jaCBhbmQg4oCcJXPigJ0gaGF2ZSBkaXZlcmdlZCxcbiIKICJhbmQgaGF2ZSAlZCBhbmQgJWQgZGlmZmVyZW50IGNvbW1pdCBlYWNoLCByZXNwZWN0aXZlbHkuXG4iCiAKLSM6IHNlcXVlbmNlci5jOjEyMQotIzogYnVpbHRpbi9tZXJnZS5jOjg2NQotIzogYnVpbHRpbi9tZXJnZS5jOjk3OAotIzogYnVpbHRpbi9tZXJnZS5jOjEwODgKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDk4CisjOiByZW1vdGUuYzoxODExCittc2dpZCAiICAodXNlIFwiZ2l0IHB1bGxcIiB0byBtZXJnZSB0aGUgcmVtb3RlIGJyYW5jaCBpbnRvIHlvdXJzKVxuIgorbXNnc3RyICIiCisiICAoZMO5bmcgXCJnaXQgcHVsbFwiIMSR4buDIGjDsmEgdHLhu5luIG5ow6FuaCB0csOqbiBtw6F5IGNo4bunIHbDoG8gdHJvbmcgbmjDoW5oIGPhu6dhICIKKyJi4bqhbilcbiIKKworIzogc2VxdWVuY2VyLmM6MjA2IGJ1aWx0aW4vbWVyZ2UuYzo3NzYgYnVpbHRpbi9tZXJnZS5jOjg4OSBidWlsdGluL21lcmdlLmM6OTk5CisjOiBidWlsdGluL21lcmdlLmM6MTAwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiAnJXMnIGZvciB3cml0aW5nIgotbXNnc3RyICJLaMO0bmcgdGjhu4MgbeG7nyAlcycgxJHhu4MgZ2hpIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgbeG7nyDigJwlc+KAnSDEkeG7gyBnaGkiCiAKLSM6IHNlcXVlbmNlci5jOjEyMwotIzogYnVpbHRpbi9tZXJnZS5jOjMzMwotIzogYnVpbHRpbi9tZXJnZS5jOjg2OAotIzogYnVpbHRpbi9tZXJnZS5jOjEwOTAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTAzCisjOiBzZXF1ZW5jZXIuYzoyMDggYnVpbHRpbi9tZXJnZS5jOjMzNSBidWlsdGluL21lcmdlLmM6Nzc5CisjOiBidWlsdGluL21lcmdlLmM6MTAwMSBidWlsdGluL21lcmdlLmM6MTAxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgdG8gJyVzJyIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIGdoaSB2w6BvICclcyciCittc2dzdHIgIktow7RuZyB0aOG7gyBnaGkgdsOgbyDigJwlc+KAnSIKIAotIzogc2VxdWVuY2VyLmM6MTQ0CisjOiBzZXF1ZW5jZXIuYzoyMjkKIG1zZ2lkICIiCiAiYWZ0ZXIgcmVzb2x2aW5nIHRoZSBjb25mbGljdHMsIG1hcmsgdGhlIGNvcnJlY3RlZCBwYXRoc1xuIgogIndpdGggJ2dpdCBhZGQgPHBhdGhzPicgb3IgJ2dpdCBybSA8cGF0aHM+JyIKIG1zZ3N0ciAiIgogInNhdSBraGkgZ2nhuqNpIHF1eeG6v3QgY8OhYyB4dW5nIMSR4buZdCwgxJHDoW5oIGThuqV1IMSRxrDhu51uZyBk4bqrbiDEkcOjIHPhu61hXG4iCi0iduG7m2kgbOG7h25oICdnaXQgYWRkIDzEkcaw4budbmdfZOG6q24+JyBob+G6t2MgJ2dpdCBybSA8xJHGsOG7nW5nX2ThuqtuPiciCisiduG7m2kgbOG7h25oIOKAnGdpdCBhZGQgPMSRxrDhu51uZ19k4bqrbj7igJ0gaG/hurdjIOKAnGdpdCBybSA8xJHGsOG7nW5nX2ThuqtuPuKAnSIKIAotIzogc2VxdWVuY2VyLmM6MTQ3CisjOiBzZXF1ZW5jZXIuYzoyMzIKIG1zZ2lkICIiCiAiYWZ0ZXIgcmVzb2x2aW5nIHRoZSBjb25mbGljdHMsIG1hcmsgdGhlIGNvcnJlY3RlZCBwYXRoc1xuIgogIndpdGggJ2dpdCBhZGQgPHBhdGhzPicgb3IgJ2dpdCBybSA8cGF0aHM+J1xuIgogImFuZCBjb21taXQgdGhlIHJlc3VsdCB3aXRoICdnaXQgY29tbWl0JyIKIG1zZ3N0ciAiIgogInNhdSBraGkgZ2nhuqNpIHF1eeG6v3QgY8OhYyB4dW5nIMSR4buZdCwgxJHDoW5oIGThuqV1IMSRxrDhu51uZyBk4bqrbiDEkcOjIHPhu61hXG4iCi0iduG7m2kgbOG7h25oICdnaXQgYWRkIDzEkcaw4budbmdfZOG6q24+JyBob+G6t2MgJ2dpdCBybSA8xJHGsOG7nW5nX2ThuqtuPidcbiIKLSJ2w6AgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBr4bq/dCBxdeG6oyBi4bqxbmcgbOG7h25oICdnaXQgY29tbWl0JyIKKyJ24bubaSBs4buHbmgg4oCcZ2l0IGFkZCA8xJHGsOG7nW5nX2ThuqtuPuKAnSBob+G6t2Mg4oCcZ2l0IHJtIDzEkcaw4budbmdfZOG6q24+4oCdXG4iCisidsOgIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkga+G6v3QgcXXhuqMgYuG6sW5nIGzhu4duaCDigJxnaXQgY29tbWl04oCdIgogCi0jOiBzZXF1ZW5jZXIuYzoxNjAKLSM6IHNlcXVlbmNlci5jOjc1OAotIzogc2VxdWVuY2VyLmM6ODQxCisjOiBzZXF1ZW5jZXIuYzoyNDUgc2VxdWVuY2VyLmM6ODU5IHNlcXVlbmNlci5jOjk0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgdG8gJXMiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBnaGkgdsOgbyAlcyIKIAotIzogc2VxdWVuY2VyLmM6MTYzCisjOiBzZXF1ZW5jZXIuYzoyNDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3Igd3JhcHBpbmcgdXAgJXMiCiBtc2dzdHIgIkzhu5dpIGJhbyBi4buNYyAlcyIKIAotIzogc2VxdWVuY2VyLmM6MTc4CisjOiBzZXF1ZW5jZXIuYzoyNjMKIG1zZ2lkICJZb3VyIGxvY2FsIGNoYW5nZXMgd291bGQgYmUgb3ZlcndyaXR0ZW4gYnkgY2hlcnJ5LXBpY2suIgogbXNnc3RyICJDw6FjIHRoYXkgxJHhu5VpIG7hu5lpIGLhu5kgY+G7p2EgYuG6oW4gY8OzIHRo4buDIGLhu4sgZ2hpIMSRw6ggYuG7n2kgbOG7h25oIGNoZXJyeS1waWNrLiIKIAotIzogc2VxdWVuY2VyLmM6MTgwCisjOiBzZXF1ZW5jZXIuYzoyNjUKIG1zZ2lkICJZb3VyIGxvY2FsIGNoYW5nZXMgd291bGQgYmUgb3ZlcndyaXR0ZW4gYnkgcmV2ZXJ0LiIKIG1zZ3N0ciAiQ8OhYyB0aGF5IMSR4buVaSBu4buZaSBi4buZIGPhu6dhIGLhuqFuIGPDsyB0aOG7gyBi4buLIGdoaSDEkcOoIGLhu59pIGzhu4duaCByZXZlcnQuIgogCi0jOiBzZXF1ZW5jZXIuYzoxODMKKyM6IHNlcXVlbmNlci5jOjI2OAogbXNnaWQgIkNvbW1pdCB5b3VyIGNoYW5nZXMgb3Igc3Rhc2ggdGhlbSB0byBwcm9jZWVkLiIKLW1zZ3N0ciAiQ2h1eeG7g24gZ2lhbyAoY29tbWl0KSBjw6FjIHRoYXkgxJHhu5VpIGhheSBzdGFzaCBjaMO6bmcgxJHhu4MgdGnhur9uIGjDoG5oLiIKK21zZ3N0ciAiQ2h1eeG7g24gZ2lhbyAoY29tbWl0KSBjw6FjIHRoYXkgxJHhu5VpIGPhu6dhIGLhuqFuIGhheSBzdGFzaCBjaMO6bmcgxJHhu4MgeOG7rSBsw70uIgogCiAjLiBUUkFOU0xBVE9SUzogJXMgd2lsbCBiZSAicmV2ZXJ0IiBvciAiY2hlcnJ5LXBpY2siCi0jOiBzZXF1ZW5jZXIuYzoyMzMKKyM6IHNlcXVlbmNlci5jOjMxOQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogVW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgogbXNnc3RyICIlczogS2jDtG5nIHRo4buDIGdoaSB04bqtcCB0aW4gbMawdSBi4bqjbmcgbeG7pWMgbOG7pWMgbeG7m2kiCiAKLSM6IHNlcXVlbmNlci5jOjI2MQorIzogc2VxdWVuY2VyLmM6MzUwCiBtc2dpZCAiQ291bGQgbm90IHJlc29sdmUgSEVBRCBjb21taXRcbiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHBow6JuIGdp4bqjaSBjb21taXQgKGzhuqduIGNodXnhu4NuIGdpYW8pIEhFQURcbiIKIAotIzogc2VxdWVuY2VyLmM6MjgyCisjOiBzZXF1ZW5jZXIuYzozNzEKIG1zZ2lkICJVbmFibGUgdG8gdXBkYXRlIGNhY2hlIHRyZWVcbiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIGPhuq1wIG5o4bqtdCBjw6J5IGLhu5kgbmjhu5sgxJHhu4dtXG4iCiAKLSM6IHNlcXVlbmNlci5jOjMyNAorIzogc2VxdWVuY2VyLmM6NDE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBjb21taXQgJXNcbiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHBow6JuIHTDrWNoIGNvbW1pdCAobOG6p24gY2h1eeG7g24gZ2lhbykgJXNcbiIKIAotIzogc2VxdWVuY2VyLmM6MzI5CisjOiBzZXF1ZW5jZXIuYzo0MjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIHBhcmVudCBjb21taXQgJXNcbiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHBow6JuIHTDrWNoIGNvbW1pdCAobOG6p24gY2h1eeG7g24gZ2lhbykgY2hhIG3hurkgJXNcbiIKIAotIzogc2VxdWVuY2VyLmM6Mzk1CisjOiBzZXF1ZW5jZXIuYzo0ODcKIG1zZ2lkICJZb3VyIGluZGV4IGZpbGUgaXMgdW5tZXJnZWQuIgogbXNnc3RyICJU4bqtcCB0aW4gbMawdSBt4bulYyBs4bulYyBj4bunYSBi4bqhbiBraMO0bmcgxJHGsOG7o2MgaMOyYSB0cuG7mW4uIgogCi0jOiBzZXF1ZW5jZXIuYzozOTgKLW1zZ2lkICJZb3UgZG8gbm90IGhhdmUgYSB2YWxpZCBIRUFEIgotbXNnc3RyICJC4bqhbiBraMO0bmcgY8OzIEhFQUQgbsOgbyBo4bujcCBs4buHIgotCi0jOiBzZXF1ZW5jZXIuYzo0MTMKKyM6IHNlcXVlbmNlci5jOjUwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgaXMgYSBtZXJnZSBidXQgbm8gLW0gb3B0aW9uIHdhcyBnaXZlbi4iCi1tc2dzdHIgIkzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgJXMgbMOgIG3hu5l0IGzhuqduIGjDsmEgdHLhu5luIG5oxrBuZyBraMO0bmcgxJHGsGEgcmEgdMO5eSBjaOG7jW4gIC1tLiIKK21zZ3N0ciAiIgorIkzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgJXMgbMOgIG3hu5l0IGzhuqduIGjDsmEgdHLhu5luIG5oxrBuZyBraMO0bmcgxJHGsGEgcmEgdMO5eSBjaOG7jW4gLSIKKyJtLiIKIAotIzogc2VxdWVuY2VyLmM6NDIxCisjOiBzZXF1ZW5jZXIuYzo1MTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGRvZXMgbm90IGhhdmUgcGFyZW50ICVkIgogbXNnc3RyICJM4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpICVzIGtow7RuZyBjw7MgY2hhIG3hurkgJWQiCiAKLSM6IHNlcXVlbmNlci5jOjQyNQorIzogc2VxdWVuY2VyLmM6NTE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1haW5saW5lIHdhcyBzcGVjaWZpZWQgYnV0IGNvbW1pdCAlcyBpcyBub3QgYSBtZXJnZS4iCi1tc2dzdHIgIkx14buTbmcgY2jDrW5oIMSRxrDhu6NjIGNo4buJIMSR4buLbmggbmjGsG5nIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgJXMga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgbOG6p24gaMOyYSB0cuG7mW4uIgorbXNnc3RyICIiCisiTHXhu5NuZyBjaMOtbmggxJHDoyDEkcaw4bujYyBjaOG7iSByYSBuaMawbmcgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSAlcyBraMO0bmcgcGjhuqNpIGzDoCAiCisibeG7mXQgbOG6p24gaMOyYSB0cuG7mW4uIgogCiAjLiBUUkFOU0xBVE9SUzogVGhlIGZpcnN0ICVzIHdpbGwgYmUgInJldmVydCIgb3IKICMuICJjaGVycnktcGljayIsIHRoZSBzZWNvbmQgJXMgYSBTSEExCi0jOiBzZXF1ZW5jZXIuYzo0MzYKKyM6IHNlcXVlbmNlci5jOjUzMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2Fubm90IHBhcnNlIHBhcmVudCBjb21taXQgJXMiCiBtc2dzdHIgIiVzOiBraMO0bmcgdGjhu4MgcGjDom4gdMOtY2ggbOG6p24gY2h1eeG7g24gZ2lhbyBt4bq5IGPhu6dhICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo0NDAKKyM6IHNlcXVlbmNlci5jOjUzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZ2V0IGNvbW1pdCBtZXNzYWdlIGZvciAlcyIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIGzhuqV5IHRow7RuZyDEkWnhu4dwIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgY2hvICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo1MjQKKyM6IHNlcXVlbmNlci5jOjYyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgcmV2ZXJ0ICVzLi4uICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgcmV2ZXJ0ICVzLi4uICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo1MjUKKyM6IHNlcXVlbmNlci5jOjYyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgYXBwbHkgJXMuLi4gJXMiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBhcHBseSAow6FwIGThu6VuZyBtaeG6v25nIHbDoSkgJXMuLi4gJXMiCiAKLSM6IHNlcXVlbmNlci5jOjU1MworIzogc2VxdWVuY2VyLmM6NjU0CiBtc2dpZCAiZW1wdHkgY29tbWl0IHNldCBwYXNzZWQiCiBtc2dzdHIgImzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgdHLhu5FuZyBy4buXbmcgxJHhurd0IGzDoCBo4bujcCBxdXkgY8OhY2giCiAKLSM6IHNlcXVlbmNlci5jOjU2MQorIzogc2VxdWVuY2VyLmM6NjYyCiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCAlczogZmFpbGVkIHRvIHJlYWQgdGhlIGluZGV4IgogbXNnc3RyICJnaXQgJXM6IGfhurdwIGzhu5dpIMSR4buNYyBi4bqjbmcgbeG7pWMgbOG7pWMiCiAKLSM6IHNlcXVlbmNlci5jOjU2NgorIzogc2VxdWVuY2VyLmM6NjY3CiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCAlczogZmFpbGVkIHRvIHJlZnJlc2ggdGhlIGluZGV4IgogbXNnc3RyICJnaXQgJXM6IGfhurdwIGzhu5dpIGtoaSBsw6BtIHTGsMahaSBt4bubaSBi4bqjbmcgbeG7pWMgbOG7pWMiCiAKLSM6IHNlcXVlbmNlci5jOjYyNAorIzogc2VxdWVuY2VyLmM6NzI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCAlcyBkdXJpbmcgYSAlcyIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDICVzIHRyb25nIGtoaSAlcyIKIAotIzogc2VxdWVuY2VyLmM6NjQ2CisjOiBzZXF1ZW5jZXIuYzo3NDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIGxpbmUgJWQuIgogbXNnc3RyICJLaMO0bmcgcGjDom4gdMOtY2ggxJHGsOG7o2MgZMOybmcgJWQuIgogCi0jOiBzZXF1ZW5jZXIuYzo2NTEKKyM6IHNlcXVlbmNlci5jOjc1MgogbXNnaWQgIk5vIGNvbW1pdHMgcGFyc2VkLiIKIG1zZ3N0ciAiS2jDtG5nIGPDsyBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIG7DoG8gxJHGsOG7o2MgcGjDom4gdMOtY2guIgogCi0jOiBzZXF1ZW5jZXIuYzo2NjQKKyM6IHNlcXVlbmNlci5jOjc2NQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiAlcyIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIG3hu58gJXMiCiAKLSM6IHNlcXVlbmNlci5jOjY2OAorIzogc2VxdWVuY2VyLmM6NzY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCByZWFkICVzLiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIMSR4buNYyAlcy4iCiAKLSM6IHNlcXVlbmNlci5jOjY3NQorIzogc2VxdWVuY2VyLmM6Nzc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVudXNhYmxlIGluc3RydWN0aW9uIHNoZWV0OiAlcyIKIG1zZ3N0ciAiQuG6o25nIGNo4buJIHRo4buLIGtow7RuZyB0aOG7gyBkw7luZyDEkcaw4bujYzogJXMiCiAKLSM6IHNlcXVlbmNlci5jOjcwMworIzogc2VxdWVuY2VyLmM6ODA0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQga2V5OiAlcyIKIG1zZ3N0ciAiS2jDs2Ega2jDtG5nIMSRw7puZzogJXMiCiAKLSM6IHNlcXVlbmNlci5jOjcwNgorIzogc2VxdWVuY2VyLmM6ODA3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgdmFsdWUgZm9yICVzOiAlcyIKIG1zZ3N0ciAiR2nDoSB0cuG7iyBraMO0bmcgaOG7o3AgbOG7hyAlczogJXMiCiAKLSM6IHNlcXVlbmNlci5jOjcxOAorIzogc2VxdWVuY2VyLmM6ODE5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1hbGZvcm1lZCBvcHRpb25zIHNoZWV0OiAlcyIKIG1zZ3N0ciAiQuG6o25nIHTDuXkgY2jhu41uIGThu4sgaMOsbmg6ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo3MzkKKyM6IHNlcXVlbmNlci5jOjg0MAogbXNnaWQgImEgY2hlcnJ5LXBpY2sgb3IgcmV2ZXJ0IGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MiCiBtc2dzdHIgIm3hu5l0IHRoYW8gdMOhYyBjaGVycnktcGljayBob+G6t2MgcmV2ZXJ0IMSRYW5nIMSRxrDhu6NjIHRo4buxYyBoaeG7h24iCiAKLSM6IHNlcXVlbmNlci5jOjc0MAorIzogc2VxdWVuY2VyLmM6ODQxCiBtc2dpZCAidHJ5IFwiZ2l0IGNoZXJyeS1waWNrICgtLWNvbnRpbnVlIHwgLS1xdWl0IHwgLS1hYm9ydClcIiIKIG1zZ3N0ciAiaMOjeSB0aOG7rSBcImdpdCBjaGVycnktcGljayAoLS1jb250aW51ZSB8IC0tcXVpdCB8IC0tYWJvcnQpXCIiCiAKLSM6IHNlcXVlbmNlci5jOjc0NAorIzogc2VxdWVuY2VyLmM6ODQ1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBjcmVhdGUgc2VxdWVuY2VyIGRpcmVjdG9yeSAlcyIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHThuqFvIHRoxrAgbeG7pWMgeOG6v3AgZMOjeSAlcyIKIAotIzogc2VxdWVuY2VyLmM6NzYwCi0jOiBzZXF1ZW5jZXIuYzo4NDUKKyM6IHNlcXVlbmNlci5jOjg2MSBzZXF1ZW5jZXIuYzo5NDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3Igd3JhcHBpbmcgdXAgJXMuIgogbXNnc3RyICJM4buXaSBiYW8gYuG7jWMgJXMuIgogCi0jOiBzZXF1ZW5jZXIuYzo3NzkKLSM6IHNlcXVlbmNlci5jOjkxMworIzogc2VxdWVuY2VyLmM6ODgwIHNlcXVlbmNlci5jOjEwMTQKIG1zZ2lkICJubyBjaGVycnktcGljayBvciByZXZlcnQgaW4gcHJvZ3Jlc3MiCiBtc2dzdHIgImtow7RuZyBjaGVycnktcGljayBoYXkgcmV2ZXJ0IHRyb25nIHRp4bq/biB0csOsbmgiCiAKLSM6IHNlcXVlbmNlci5jOjc4MQorIzogc2VxdWVuY2VyLmM6ODgyCiBtc2dpZCAiY2Fubm90IHJlc29sdmUgSEVBRCIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIHBow6JuIGdp4bqjaSBIRUFEIgogCi0jOiBzZXF1ZW5jZXIuYzo3ODMKKyM6IHNlcXVlbmNlci5jOjg4NAogbXNnaWQgImNhbm5vdCBhYm9ydCBmcm9tIGEgYnJhbmNoIHlldCB0byBiZSBib3JuIgogbXNnc3RyICJraMO0bmcgdGjhu4MgaOG7p3kgYuG7jyB04burIG3hu5l0IG5ow6FuaCBtw6AgbsOzIGPDsm4gY2jGsGEgxJHGsOG7o2MgdOG6oW8gcmEiCiAKLSM6IHNlcXVlbmNlci5jOjgwNQotIzogYnVpbHRpbi9hcHBseS5jOjM2OTcKKyM6IHNlcXVlbmNlci5jOjkwNiBidWlsdGluL2FwcGx5LmM6NDA2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiAlczogJXMiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBt4bufICVzOiAlcyIKIAotIzogc2VxdWVuY2VyLmM6ODA4CisjOiBzZXF1ZW5jZXIuYzo5MDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgJXM6ICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu41jICVzOiAlcyIKIAotIzogc2VxdWVuY2VyLmM6ODA5CisjOiBzZXF1ZW5jZXIuYzo5MTAKIG1zZ2lkICJ1bmV4cGVjdGVkIGVuZCBvZiBmaWxlIgogbXNnc3RyICJr4bq/dCB0aMO6YyB04bqtcCB0aW4gxJHhu5l0IHh14bqldCIKIAotIzogc2VxdWVuY2VyLmM6ODE1CisjOiBzZXF1ZW5jZXIuYzo5MTYKICMsIGMtZm9ybWF0CiBtc2dpZCAic3RvcmVkIHByZS1jaGVycnktcGljayBIRUFEIGZpbGUgJyVzJyBpcyBjb3JydXB0IgotbXNnc3RyICJ04bqtcCB0aW4gSEVBRCAncHJlLWNoZXJyeS1waWNrJyDEkcOjIGzGsHUgJyVzJyBi4buLIGjhu49uZyIKK21zZ3N0ciAidOG6rXAgdGluIEhFQUQg4oCccHJlLWNoZXJyeS1waWNr4oCdIMSRw6MgbMawdSDigJwlc+KAnSBi4buLIGjhu49uZyIKIAotIzogc2VxdWVuY2VyLmM6ODM4CisjOiBzZXF1ZW5jZXIuYzo5MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZvcm1hdCAlcy4iCiBtc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7i25oIGThuqFuZyAlcy4iCiAKLSM6IHNlcXVlbmNlci5jOjEwMDAKKyM6IHNlcXVlbmNlci5jOjEwODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGNhbid0IGNoZXJyeS1waWNrIGEgJXMiCittc2dzdHIgIiVzOiBraMO0bmcgdGjhu4MgY2hlcnJ5LXBpY2sgbeG7mXQgJXMiCisKKyM6IHNlcXVlbmNlci5jOjEwODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGJhZCByZXZpc2lvbiIKK21zZ3N0ciAiJXM6IMSRaeG7g20geMOpdCBkdXnhu4d0IHNhaSIKKworIzogc2VxdWVuY2VyLmM6MTExOQogbXNnaWQgIkNhbid0IHJldmVydCBhcyBpbml0aWFsIGNvbW1pdCIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHJldmVydCBt4buZdCBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIGto4bufaSB04bqhbyIKIAotIzogc2VxdWVuY2VyLmM6MTAwMQorIzogc2VxdWVuY2VyLmM6MTEyMAogbXNnaWQgIkNhbid0IGNoZXJyeS1waWNrIGludG8gZW1wdHkgaGVhZCIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIGNoZXJyeS1waWNrIHbDoG8gbeG7mXQgxJHhuqd1IChoZWFkKSB0cuG7kW5nIHLhu5duZyIKIAotIzogc2hhMV9uYW1lLmM6ODY0CisjOiBzaGExX25hbWUuYzoxMDM2CiBtc2dpZCAiSEVBRCBkb2VzIG5vdCBwb2ludCB0byBhIGJyYW5jaCIKIG1zZ3N0ciAiSEVBRCBraMO0bmcgY2jhu4kgxJHhur9uIG3hu5l0IG5ow6FuaCBuw6BvIGPhuqMiCiAKLSM6IHNoYTFfbmFtZS5jOjg2NworIzogc2hhMV9uYW1lLmM6MTAzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBzdWNoIGJyYW5jaDogJyVzJyIKLW1zZ3N0ciAiS2jDtG5nIGPDsyBuaMOhbmggbsOgbyBuaMawIHRo4bq/OiAnJXMnIgorbXNnc3RyICJLaMO0bmcgY8OzIG5ow6FuaCBuw6BvIG5oxrAgdGjhur86IOKAnCVz4oCdIgogCi0jOiBzaGExX25hbWUuYzo4NjkKKyM6IHNoYTFfbmFtZS5jOjEwNDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gdXBzdHJlYW0gY29uZmlndXJlZCBmb3IgYnJhbmNoICclcyciCi1tc2dzdHIgIktow7RuZyBjw7MgZMOybmcgbmfGsOG7o2MgKHVwc3RyZWFtKSDEkcaw4bujYyBj4bqldSBow6xuaCBjaG8gbmjDoW5oICclcyciCittc2dzdHIgIktow7RuZyBjw7MgdGjGsOG7o25nIG5ndeG7k24gKHVwc3RyZWFtKSDEkcaw4bujYyBj4bqldSBow6xuaCBjaG8gbmjDoW5oIOKAnCVz4oCdIgogCi0jOiBzaGExX25hbWUuYzo4NzIKKyM6IHNoYTFfbmFtZS5jOjEwNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXBzdHJlYW0gYnJhbmNoICclcycgbm90IHN0b3JlZCBhcyBhIHJlbW90ZS10cmFja2luZyBicmFuY2giCi1tc2dzdHIgIk5ow6FuaCBkw7JuZyBuZ8aw4bujYyAodXBzdHJlYW0pICclcycga2jDtG5nIMSRxrDhu6NjIGzGsHUgbOG6oWkgbmjGsCBsw6AgbeG7mXQgbmjDoW5oICdyZW1vdGUtdHJhY2tpbmcnIgorbXNnc3RyICIiCisiTmjDoW5oIHRoxrDhu6NuZyBuZ3Xhu5NuICh1cHN0cmVhbSkg4oCcJXPigJ0ga2jDtG5nIMSRxrDhu6NjIGzGsHUgbOG6oWkgbmjGsCBsw6AgbeG7mXQgbmjDoW5oICIKKyLigJxyZW1vdGUtdHJhY2tpbmfigJ0iCiAKLSM6IHdyYXBwZXIuYzo0MTMKKyM6IHdyYXBwZXIuYzo0MDgKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIGFjY2VzcyAnJXMnOiAlcyIKK21zZ3N0ciAia2jDtG5nIHRo4buDIHRydXkgY+G6rXAg4oCcJXPigJ06ICVzIgorCisjOiB3cmFwcGVyLmM6NDIzCisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBhY2Nlc3MgJyVzJyIKK21zZ3N0ciAia2jDtG5nIHRo4buDIHRydXkgY+G6rXAg4oCcJXPigJ0iCisKKyM6IHdyYXBwZXIuYzo0MzQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGxvb2sgdXAgY3VycmVudCB1c2VyIGluIHRoZSBwYXNzd2QgZmlsZTogJXMiCiBtc2dzdHIgImtow7RuZyB0w6xtIHRo4bqleSBuZ8aw4budaSBkw7luZyBoaeG7h24gdOG6oWkgdHJvbmcgdOG6rXAgdGluIHBhc3N3ZDogJXMiCiAKLSM6IHdyYXBwZXIuYzo0MTQKKyM6IHdyYXBwZXIuYzo0MzUKIG1zZ2lkICJubyBzdWNoIHVzZXIiCiBtc2dzdHIgImtow7RuZyBjw7MgbmfGsOG7nWkgZMO5bmcgbmjGsCB24bqteSIKIAotIzogd3Qtc3RhdHVzLmM6MTM1CisjOiB3dC1zdGF0dXMuYzoxNDAKIG1zZ2lkICJVbm1lcmdlZCBwYXRoczoiCiBtc2dzdHIgIk5o4buvbmcgxJHGsOG7nW5nIGThuqtuIGNoxrBhIMSRxrDhu6NjIGjDsmEgdHLhu5luOiIKIAotIzogd3Qtc3RhdHVzLmM6MTQxCi0jOiB3dC1zdGF0dXMuYzoxNTgKKyM6IHd0LXN0YXR1cy5jOjE2NyB3dC1zdGF0dXMuYzoxOTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAodXNlIFwiZ2l0IHJlc2V0ICVzIDxmaWxlPi4uLlwiIHRvIHVuc3RhZ2UpIgotbXNnc3RyICIgIChz4butIGThu6VuZyBcImdpdCByZXNldCAlcyA8dOG6rXAtdGluPi4uLlwiIMSR4buDIGLhu48gbeG7mXQgc3RhZ2UgKHRy4bqhbmcgdGjDoWkpKSIKK21zZ3N0ciAiICAoZMO5bmcgXCJnaXQgcmVzZXQgJXMgPHThuq1wLXRpbj4uLi5cIiDEkeG7gyBi4buPIG3hu5l0IHN0YWdlICh0cuG6oW5nIHRow6FpKSkiCiAKLSM6IHd0LXN0YXR1cy5jOjE0MwotIzogd3Qtc3RhdHVzLmM6MTYwCisjOiB3dC1zdGF0dXMuYzoxNjkgd3Qtc3RhdHVzLmM6MTk2CiBtc2dpZCAiICAodXNlIFwiZ2l0IHJtIC0tY2FjaGVkIDxmaWxlPi4uLlwiIHRvIHVuc3RhZ2UpIgotbXNnc3RyICIgIChz4butIGThu6VuZyBcImdpdCBybSAtLWNhY2hlZCA8dOG6rXAtdGluPi4uLlwiIMSR4buDIGLhu48gdHLhuqFuZyB0aMOhaSAoc3RhZ2UpKSIKK21zZ3N0ciAiICAoZMO5bmcgXCJnaXQgcm0gLS1jYWNoZWQgPHThuq1wLXRpbj4uLi5cIiDEkeG7gyBi4buPIHRy4bqhbmcgdGjDoWkgKHN0YWdlKSkiCiAKLSM6IHd0LXN0YXR1cy5jOjE0NAorIzogd3Qtc3RhdHVzLmM6MTczCittc2dpZCAiICAodXNlIFwiZ2l0IGFkZCA8ZmlsZT4uLi5cIiB0byBtYXJrIHJlc29sdXRpb24pIgorbXNnc3RyICIgIChkw7luZyBcImdpdCBhZGQgPHThuq1wLXRpbj4uLi5cIiDEkeG7gyDEkcOhbmggZOG6pXUgbMOgIGPhuqduIGdp4bqjaSBxdXnhur90KSIKKworIzogd3Qtc3RhdHVzLmM6MTc1IHd0LXN0YXR1cy5jOjE3OQogbXNnaWQgIiAgKHVzZSBcImdpdCBhZGQvcm0gPGZpbGU+Li4uXCIgYXMgYXBwcm9wcmlhdGUgdG8gbWFyayByZXNvbHV0aW9uKSIKLW1zZ3N0ciAiICAoc+G7rSBk4bulbmcgXCJnaXQgYWRkL3JtIDx04bqtcC10aW4+Li4uXCIgbmjGsCBsw6AgbeG7mXQgY8OhY2ggIHRow61jaCBo4bujcCDEkeG7gyDEkcOhbmggZOG6pXUgbMOgIGPhuqduIMSRxrDhu6NjIGdp4bqjaSBxdXnhur90KSIKK21zZ3N0ciAiIgorIiAgKGTDuW5nIFwiZ2l0IGFkZC9ybSA8dOG6rXAtdGluPi4uLlwiIG5oxrAgbMOgIG3hu5l0IGPDoWNoICB0aMOtY2ggaOG7o3AgxJHhu4MgxJHDoW5oIGThuqV1ICIKKyJsw6AgY+G6p24gxJHGsOG7o2MgZ2nhuqNpIHF1eeG6v3QpIgogCi0jOiB3dC1zdGF0dXMuYzoxNTIKKyM6IHd0LXN0YXR1cy5jOjE3NworbXNnaWQgIiAgKHVzZSBcImdpdCBybSA8ZmlsZT4uLi5cIiB0byBtYXJrIHJlc29sdXRpb24pIgorbXNnc3RyICIgIChkw7luZyBcImdpdCBybSA8dOG6rXAtdGluPi4uLlwiIMSR4buDIMSRw6FuaCBk4bqldSBsw6AgY+G6p24gZ2nhuqNpIHF1eeG6v3QpIgorCisjOiB3dC1zdGF0dXMuYzoxODgKIG1zZ2lkICJDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCiBtc2dzdHIgIk5o4buvbmcgdGhheSDEkeG7lWkgc+G6vSDEkcaw4bujYyBjaHV54buDbiBnaWFvOiIKIAotIzogd3Qtc3RhdHVzLmM6MTcwCisjOiB3dC1zdGF0dXMuYzoyMDYKIG1zZ2lkICJDaGFuZ2VzIG5vdCBzdGFnZWQgZm9yIGNvbW1pdDoiCi1tc2dzdHIgIkPDoWMgdGhheSDEkeG7lWkga2jDtG5nIMSRxrDhu6NjIMSR4bq3dCB0cuG6oW5nIHRow6FpIChzdGFnZSkgY2hvIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCk6IgorbXNnc3RyICIiCisiQ8OhYyB0aGF5IMSR4buVaSBraMO0bmcgxJHGsOG7o2MgxJHhurd0IHRy4bqhbmcgdGjDoWkgKHN0YWdlKSBjaG8gbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KToiCiAKLSM6IHd0LXN0YXR1cy5jOjE3NAorIzogd3Qtc3RhdHVzLmM6MjEwCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFkZCA8ZmlsZT4uLi5cIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiCi1tc2dzdHIgIiAgKHPhu60gZOG7pW5nIFwiZ2l0IGFkZCA8dOG6rXAtdGluPi4uLlwiIMSR4buDIGPhuq1wIG5o4bqtdCBuaOG7r25nIGfDrCBj4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpKSIKK21zZ3N0ciAiIgorIiAgKGTDuW5nIFwiZ2l0IGFkZCA8dOG6rXAtdGluPi4uLlwiIMSR4buDIGPhuq1wIG5o4bqtdCBuaOG7r25nIGfDrCBj4bqnbiBjaHV54buDbiBnaWFvICIKKyIoY29tbWl0KSkiCiAKLSM6IHd0LXN0YXR1cy5jOjE3NgorIzogd3Qtc3RhdHVzLmM6MjEyCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFkZC9ybSA8ZmlsZT4uLi5cIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiCi1tc2dzdHIgIiAgKHPhu60gZOG7pW5nIFwiZ2l0IGFkZC9ybSA8dOG6rXBfdGluPi4uLlwiIMSR4buDIGPhuq1wIG5o4bqtdCBuaOG7r25nIGfDrCBz4bq9IMSRxrDhu6NjIGNodXnhu4NuIGdpYW8pIgorbXNnc3RyICIiCisiICAoZMO5bmcgXCJnaXQgYWRkL3JtIDx04bqtcC10aW4+Li4uXCIgxJHhu4MgY+G6rXAgbmjhuq10IG5o4buvbmcgZ8OsIHPhur0gxJHGsOG7o2MgY2h1eeG7g24gZ2lhbykiCiAKLSM6IHd0LXN0YXR1cy5jOjE3NwotbXNnaWQgIiAgKHVzZSBcImdpdCBjaGVja291dCAtLSA8ZmlsZT4uLi5cIiB0byBkaXNjYXJkIGNoYW5nZXMgaW4gd29ya2luZyBkaXJlY3RvcnkpIgotbXNnc3RyICIgIChz4butIGThu6VuZyBcImdpdCBjaGVja291dCAtLSA8dOG6rXBfdGluPi4uLlwiIMSR4buDIGxv4bqhaSBi4buPIG5o4buvbmcgdGhheSDEkeG7lWkgdHJvbmcgdGjGsCBt4bulYyBsw6BtIHZp4buHYykiCisjOiB3dC1zdGF0dXMuYzoyMTMKK21zZ2lkICIiCisiICAodXNlIFwiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLlwiIHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSkiCittc2dzdHIgIiIKKyIgIChkw7luZyBcImdpdCBjaGVja291dCAtLSA8dOG6rXAtdGluPi4uLlwiIMSR4buDIGLhu48gdGhheSDEkeG7lWkgdHJvbmcgdGjGsCBt4bulYyBsw6BtICIKKyJ2aeG7h2MpIgogCi0jOiB3dC1zdGF0dXMuYzoxNzkKKyM6IHd0LXN0YXR1cy5jOjIxNQogbXNnaWQgIiAgKGNvbW1pdCBvciBkaXNjYXJkIHRoZSB1bnRyYWNrZWQgb3IgbW9kaWZpZWQgY29udGVudCBpbiBzdWJtb2R1bGVzKSIKLW1zZ3N0ciAiICAoY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBob+G6t2MgbMOgIGxv4bqhaSBi4buPIGPDoWMgbuG7mWkgZHVuZyBraMO0bmctYuG7iy10aGVvLXbhur90IGhheSDEkcOjIGLhu4sgY2jhu4luaCBz4butYSB0cm9uZyBtw7QtxJF1bi1jb24pIgorbXNnc3RyICIiCisiICAoY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBob+G6t2MgbMOgIGxv4bqhaSBi4buPIGPDoWMgbuG7mWkgZHVuZyBraMO0bmctYuG7iy10aGVvLXbhur90IGhheSAiCisixJHDoyBi4buLIGNo4buJbmggc+G7rWEgdHJvbmcgbcO0LcSRdW4tY29uKSIKIAotIzogd3Qtc3RhdHVzLmM6MTg4Ci0jLCBjLWZvcm1hdAotbXNnaWQgIiVzIGZpbGVzOiIKLW1zZ3N0ciAiJXMgdOG7h3AgdGluOiIKLQotIzogd3Qtc3RhdHVzLmM6MTkxCisjOiB3dC1zdGF0dXMuYzoyMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAodXNlIFwiZ2l0ICVzIDxmaWxlPi4uLlwiIHRvIGluY2x1ZGUgaW4gd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiCi1tc2dzdHIgIiAgKHPhu60gZOG7pW5nIFwiZ2l0ICVzIDx04bqtcC10aW4+Li4uXCIgxJHhu4MgYmFvIGfhu5NtIHRow6ptIHbDoG8gbmjhu69uZyBnw6wgY+G6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSkiCittc2dzdHIgIiIKKyIgIChkw7luZyBcImdpdCAlcyA8dOG6rXAtdGluPi4uLlwiIMSR4buDIHRow6ptIHbDoG8gbmjhu69uZyBnw6wgY+G6p24gY2h1eeG7g24gZ2lhbyAiCisiKGNvbW1pdCkpIgogCi0jOiB3dC1zdGF0dXMuYzoyMDgKKyM6IHd0LXN0YXR1cy5jOjI0NAogbXNnaWQgImJ1ZyIKIG1zZ3N0ciAibOG7l2kiCiAKLSM6IHd0LXN0YXR1cy5jOjIxMworIzogd3Qtc3RhdHVzLmM6MjQ5CiBtc2dpZCAiYm90aCBkZWxldGVkOiIKIG1zZ3N0ciAiYuG7iyB4w7NhIGLhu59pIGPhuqMgaGFpOiIKIAotIzogd3Qtc3RhdHVzLmM6MjE0CisjOiB3dC1zdGF0dXMuYzoyNTAKIG1zZ2lkICJhZGRlZCBieSB1czoiCi1tc2dzdHIgIsSRxrDhu6NjIHRow6ptIHbDoG8gYuG7n2kgY2jDum5nIHTDtGk6IgorbXNnc3RyICLEkcaw4bujYyB0aMOqbSB2w6BvIGLhu59pIGNow7puZyB0YToiCiAKLSM6IHd0LXN0YXR1cy5jOjIxNQorIzogd3Qtc3RhdHVzLmM6MjUxCiBtc2dpZCAiZGVsZXRlZCBieSB0aGVtOiIKIG1zZ3N0ciAiYuG7iyB4w7NhIMSRaSBi4bufaSBo4buNOiIKIAotIzogd3Qtc3RhdHVzLmM6MjE2CisjOiB3dC1zdGF0dXMuYzoyNTIKIG1zZ2lkICJhZGRlZCBieSB0aGVtOiIKIG1zZ3N0ciAixJHGsOG7o2MgdGjDqm0gdsOgbyBi4bufaSBo4buNOiIKIAotIzogd3Qtc3RhdHVzLmM6MjE3CisjOiB3dC1zdGF0dXMuYzoyNTMKIG1zZ2lkICJkZWxldGVkIGJ5IHVzOiIKLW1zZ3N0ciAiYuG7iyB4w7NhIGLhu59pIGNow7puZyB0w7RpOiIKK21zZ3N0ciAiYuG7iyB4w7NhIGLhu59pIGNow7puZyB0YToiCiAKLSM6IHd0LXN0YXR1cy5jOjIxOAorIzogd3Qtc3RhdHVzLmM6MjU0CiBtc2dpZCAiYm90aCBhZGRlZDoiCiBtc2dzdHIgIsSRxrDhu6NjIHRow6ptIHbDoG8gYuG7n2kgY+G6oyBoYWk6IgogCi0jOiB3dC1zdGF0dXMuYzoyMTkKKyM6IHd0LXN0YXR1cy5jOjI1NQogbXNnaWQgImJvdGggbW9kaWZpZWQ6IgogbXNnc3RyICJi4buLIHPhu61hIGLhu59pIGPhuqMgaGFpOiIKIAotIzogd3Qtc3RhdHVzLmM6MjQ5CisjOiB3dC1zdGF0dXMuYzoyODUKIG1zZ2lkICJuZXcgY29tbWl0cywgIgotbXNnc3RyICIgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBt4bubaSwgIgorbXNnc3RyICJs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIG3hu5tpLCAiCiAKLSM6IHd0LXN0YXR1cy5jOjI1MQorIzogd3Qtc3RhdHVzLmM6Mjg3CiBtc2dpZCAibW9kaWZpZWQgY29udGVudCwgIgotbXNnc3RyICJu4buZaSBkdW5nIMSRxrDhu6NjIHPhu61hIMSR4buVaSwiCittc2dzdHIgIm7hu5lpIGR1bmcgYuG7iyBz4butYSDEkeG7lWksICIKIAotIzogd3Qtc3RhdHVzLmM6MjUzCisjOiB3dC1zdGF0dXMuYzoyODkKIG1zZ2lkICJ1bnRyYWNrZWQgY29udGVudCwgIgotbXNnc3RyICJu4buZaSBkdW5nIGNoxrBhIMSRxrDhu6NjIHRoZW8gZMO1aSIKK21zZ3N0ciAibuG7mWkgZHVuZyBjaMawYSDEkcaw4bujYyB0aGVvIGTDtWksICIKIAotIzogd3Qtc3RhdHVzLmM6MjY3CisjOiB3dC1zdGF0dXMuYzozMDYKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IGZpbGU6ICAgJXMiCiBtc2dzdHIgInThuq1wIHRpbiBt4bubaTogICAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MjcwCisjOiB3dC1zdGF0dXMuYzozMDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29waWVkOiAgICAgJXMgLT4gJXMiCiBtc2dzdHIgIsSRw6Mgc2FvIGNow6lwOiAgICAgJXMgLT4gJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjI3MworIzogd3Qtc3RhdHVzLmM6MzEyCiAjLCBjLWZvcm1hdAogbXNnaWQgImRlbGV0ZWQ6ICAgICVzIgotbXNnc3RyICJi4buLIHjDs2E6ICAgICVzIgorbXNnc3RyICLEkcOjIHjDs2E6ICAgICVzIgogCi0jOiB3dC1zdGF0dXMuYzoyNzYKKyM6IHd0LXN0YXR1cy5jOjMxNQogIywgYy1mb3JtYXQKIG1zZ2lkICJtb2RpZmllZDogICAlcyIKLW1zZ3N0ciAiYuG7iyBz4butYSDEkeG7lWk6ICAgJXMiCittc2dzdHIgIsSRw6Mgc+G7rWEgxJHhu5VpOiAgICVzIgogCi0jOiB3dC1zdGF0dXMuYzoyNzkKKyM6IHd0LXN0YXR1cy5jOjMxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJyZW5hbWVkOiAgICAlcyAtPiAlcyIKIG1zZ3N0ciAixJHDoyDEkeG7lWkgdMOqbjogICAgJXMgLT4gJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjI4MgorIzogd3Qtc3RhdHVzLmM6MzIxCiAjLCBjLWZvcm1hdAogbXNnaWQgInR5cGVjaGFuZ2U6ICVzIgogbXNnc3RyICLEkeG7lWkta2nhu4N1OiAlcyIKIAotIzogd3Qtc3RhdHVzLmM6Mjg1CisjOiB3dC1zdGF0dXMuYzozMjQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93bjogICAgJXMiCi1tc2dzdHIgImtow7RuZyByw7U6ICAgICVzIgorbXNnc3RyICJraMO0bmcgaGnhu4N1OiAgICAlcyIKIAotIzogd3Qtc3RhdHVzLmM6Mjg4CisjOiB3dC1zdGF0dXMuYzozMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5tZXJnZWQ6ICAgJXMiCiBtc2dzdHIgImNoxrBhIGjDsmEgdHLhu5luOiAgICVzIgogCi0jOiB3dC1zdGF0dXMuYzoyOTEKKyM6IHd0LXN0YXR1cy5jOjMzMAogIywgYy1mb3JtYXQKIG1zZ2lkICJidWc6IHVuaGFuZGxlZCBkaWZmIHN0YXR1cyAlYyIKIG1zZ3N0ciAibOG7l2k6IGtow7RuZyBs4bqleSDEkcaw4bujYyB0cuG6oW5nIHRow6FpIGzhu4duaCBkaWZmICVjIgogCi0jOiB3dC1zdGF0dXMuYzo3MzcKLW1zZ2lkICJPbiBicmFuY2ggIgotbXNnc3RyICJUcsOqbiBuaMOhbmgiCisjOiB3dC1zdGF0dXMuYzo4MDMKK21zZ2lkICJZb3UgaGF2ZSB1bm1lcmdlZCBwYXRocy4iCittc2dzdHIgIkLhuqFuIGPDsyBuaOG7r25nIMSRxrDhu51uZyBk4bqrbiBjaMawYSDEkcaw4bujYyBow7JhIHRy4buZbi4iCiAKLSM6IHd0LXN0YXR1cy5jOjc0NAorIzogd3Qtc3RhdHVzLmM6ODA2IHd0LXN0YXR1cy5jOjk1OAorbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCBjb21taXRcIikiCittc2dzdHIgIiAgKHPhu61hIGPDoWMgeHVuZyDEkeG7mXQgc2F1IMSRw7MgY2jhuqF5IFwiZ2l0IGNvbW1pdFwiKSIKKworIzogd3Qtc3RhdHVzLmM6ODA5Cittc2dpZCAiQWxsIGNvbmZsaWN0cyBmaXhlZCBidXQgeW91IGFyZSBzdGlsbCBtZXJnaW5nLiIKK21zZ3N0ciAiVOG6pXQgY+G6oyBjw6FjIHh1bmcgxJHhu5l0IMSRw6MgxJHGsOG7o2MgZ2nhuqNpIHF1eeG6v3QgbmjGsG5nIGLhuqFuIHbhuqtuIMSRYW5nIGjDsmEgdHLhu5luLiIKKworIzogd3Qtc3RhdHVzLmM6ODEyCittc2dpZCAiICAodXNlIFwiZ2l0IGNvbW1pdFwiIHRvIGNvbmNsdWRlIG1lcmdlKSIKK21zZ3N0ciAiICAoZMO5bmcgXCJnaXQgY29tbWl0XCIgxJHhu4MgaG/DoG4gdOG6pXQgdmnhu4djIGjDsmEgdHLhu5luKSIKKworIzogd3Qtc3RhdHVzLmM6ODIyCittc2dpZCAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGFuIGFtIHNlc3Npb24uIgorbXNnc3RyICJC4bqhbiDEkWFuZyDhu58gZ2nhu69hIGPhu6dhIG3hu5l0IHBoacOqbiDigJxhbeKAnS4iCisKKyM6IHd0LXN0YXR1cy5jOjgyNQorbXNnaWQgIlRoZSBjdXJyZW50IHBhdGNoIGlzIGVtcHR5LiIKK21zZ3N0ciAiTWnhur9uZyB2w6EgaGnhu4duIHThuqFpIGLhu4sgdHLhu5FuZyBy4buXbmcuIgorCisjOiB3dC1zdGF0dXMuYzo4MjkKK21zZ2lkICIgIChmaXggY29uZmxpY3RzIGFuZCB0aGVuIHJ1biBcImdpdCBhbSAtLXJlc29sdmVkXCIpIgorbXNnc3RyICIgIChz4butYSBjw6FjIHh1bmcgxJHhu5l0IHbDoCBzYXUgxJHDsyBjaOG6oXkgbOG7h25oIFwiZ2l0IGFtIC0tcmVzb2x2ZWRcIikiCisKKyM6IHd0LXN0YXR1cy5jOjgzMQorbXNnaWQgIiAgKHVzZSBcImdpdCBhbSAtLXNraXBcIiB0byBza2lwIHRoaXMgcGF0Y2gpIgorbXNnc3RyICIgIChkw7luZyBcImdpdCBhbSAtLXNraXBcIiDEkeG7gyBi4buPIHF1YSBtaeG6v25nIHbDoSBuw6B5KSIKKworIzogd3Qtc3RhdHVzLmM6ODMzCittc2dpZCAiICAodXNlIFwiZ2l0IGFtIC0tYWJvcnRcIiB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBicmFuY2gpIgorbXNnc3RyICIgIChkw7luZyBcImdpdCBhbSAtLWFib3J0XCIgxJHhu4MgcGjhu6VjIGjhu5NpIGzhuqFpIG5ow6FuaCBuZ3V5w6puIHRo4buneSkiCisKKyM6IHd0LXN0YXR1cy5jOjg5MyB3dC1zdGF0dXMuYzo5MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iCittc2dzdHIgIkLhuqFuIGhp4buHbiBuYXkgxJFhbmcgdGjhu7FjIGhp4buHbiB2aeG7h2MgcmViYXNlIG5ow6FuaCDigJwlc+KAnSB0csOqbiDigJwlc+KAnS4iCisKKyM6IHd0LXN0YXR1cy5jOjg5OCB3dC1zdGF0dXMuYzo5MTUKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZy4iCittc2dzdHIgIkLhuqFuIGhp4buHbiBuYXkgxJFhbmcgdGjhu7FjIGhp4buHbiB2aeG7h2MgcmViYXNlICh0w6FpIGPhuqV1IHRyw7pjKS4iCisKKyM6IHd0LXN0YXR1cy5jOjkwMQorbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgorbXNnc3RyICIgIChz4butYSBjw6FjIHh1bmcgxJHhu5l0IHbDoCBzYXUgxJHDsyBjaOG6oXkgbOG7h25oIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgorCisjOiB3dC1zdGF0dXMuYzo5MDMKK21zZ2lkICIgICh1c2UgXCJnaXQgcmViYXNlIC0tc2tpcFwiIHRvIHNraXAgdGhpcyBwYXRjaCkiCittc2dzdHIgIiAgKGTDuW5nIFwiZ2l0IHJlYmFzZSAtLXNraXBcIiDEkeG7gyBi4buPIHF1YSBs4bqnbiB2w6EgbsOgeSkiCisKKyM6IHd0LXN0YXR1cy5jOjkwNQorbXNnaWQgIiAgKHVzZSBcImdpdCByZWJhc2UgLS1hYm9ydFwiIHRvIGNoZWNrIG91dCB0aGUgb3JpZ2luYWwgYnJhbmNoKSIKK21zZ3N0ciAiICAoZMO5bmcgXCJnaXQgcmViYXNlIC0tYWJvcnRcIiDEkeG7gyBjaGVjay1vdXQgbmjDoW5oIG5ndXnDqm4gdGjhu6d5KSIKKworIzogd3Qtc3RhdHVzLmM6OTE4Cittc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgorbXNnc3RyICIiCisiICAoa2hpIHThuqV0IGPhuqMgY8OhYyB4dW5nIMSR4buZdCDEkcOjIHPhu61hIHhvbmc6IGNo4bqheSBs4buHbmggXCJnaXQgcmViYXNlIC0tY29udGludWVcIikiCisKKyM6IHd0LXN0YXR1cy5jOjkyMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiWW91IGFyZSBjdXJyZW50bHkgc3BsaXR0aW5nIGEgY29tbWl0IHdoaWxlIHJlYmFzaW5nIGJyYW5jaCAnJXMnIG9uICclcycuIgorbXNnc3RyICIiCisiQuG6oW4gaGnhu4duIG5heSDEkWFuZyB0aOG7sWMgaGnhu4duIHZp4buHYyBjaGlhIHTDoWNoIG3hu5l0IGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgIgorInRyb25nIGtoaSDEkWFuZyByZWJhc2UgbmjDoW5oIOKAnCVz4oCdIHRyw6puIOKAnCVz4oCdLiIKKworIzogd3Qtc3RhdHVzLmM6OTI3Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgc3BsaXR0aW5nIGEgY29tbWl0IGR1cmluZyBhIHJlYmFzZS4iCittc2dzdHIgIiIKKyJC4bqhbiBoaeG7h24gdOG6oWkgxJFhbmcgY+G6r3QgxJHDtGkgbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyB0cm9uZyBraGkgxJFhbmcgdGjhu7FjIGhp4buHbiB2aeG7h2MgIgorInJlYmFzZS4iCisKKyM6IHd0LXN0YXR1cy5jOjkzMAorbXNnaWQgIiAgKE9uY2UgeW91ciB3b3JraW5nIGRpcmVjdG9yeSBpcyBjbGVhbiwgcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgorbXNnc3RyICIiCisiICAoTeG7mXQga2hpIHRoxrAgbeG7pWMgbMOgbSB2aeG7h2MgY+G7p2EgYuG6oW4gxJHDoyBn4buNbiBnw6BuZywgY2jhuqF5IFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIgorIlwiKSIKKworIzogd3Qtc3RhdHVzLmM6OTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iCittc2dzdHIgIiIKKyJC4bqhbiBoaeG7h24gbmF5IMSRYW5nIHRo4buxYyBoaeG7h24gdmnhu4djIHPhu61hIGNo4buvYSBt4buZdCBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIHRyb25nICIKKyJraGkgxJFhbmcgcmViYXNlIG5ow6FuaCDigJwlc+KAnSB0csOqbiDigJwlc+KAnS4iCisKKyM6IHd0LXN0YXR1cy5jOjkzOQorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLiIKK21zZ3N0ciAiQuG6oW4gaGnhu4duIMSRYW5nIHPhu61hIG3hu5l0IGzhuqduIGNodXnhu4NuIGdpYW8gdHJvbmcga2hpIGLhuqFuIHRo4buxYyBoaeG7h24gcmViYXNlLiIKKworIzogd3Qtc3RhdHVzLmM6OTQyCittc2dpZCAiICAodXNlIFwiZ2l0IGNvbW1pdCAtLWFtZW5kXCIgdG8gYW1lbmQgdGhlIGN1cnJlbnQgY29tbWl0KSIKK21zZ3N0ciAiIgorIiAgKGTDuW5nIFwiZ2l0IGNvbW1pdCAtLWFtZW5kXCIgxJHhu4MgdHUgYuG7lSBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIGhp4buHbiB04bqhaSkiCisKKyM6IHd0LXN0YXR1cy5jOjk0NAorbXNnaWQgIiIKKyIgICh1c2UgXCJnaXQgcmViYXNlIC0tY29udGludWVcIiBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzKSIKK21zZ3N0ciAiIgorIiAgKGTDuW5nIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIgbeG7mXQga2hpIGLhuqFuIGPhuqNtIHRo4bqleSBow6BpIGzDsm5nIHbhu4Egbmjhu69uZyAiCisidGhheSDEkeG7lWkgY+G7p2EgbcOsbmgpIgorCisjOiB3dC1zdGF0dXMuYzo5NTQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBjaGVycnktcGlja2luZy4iCittc2dzdHIgIkLhuqFuIGhp4buHbiBuYXkgxJFhbmcgdGjhu7FjIGhp4buHbiB2aeG7h2MgY2hlcnJ5LXBpY2suIgorCisjOiB3dC1zdGF0dXMuYzo5NjEKK21zZ2lkICIgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gXCJnaXQgY29tbWl0XCIpIgorbXNnc3RyICIgIChraGkgdOG6pXQgY+G6oyBjw6FjIHh1bmcgxJHhu5l0IMSRw6Mgc+G7rWEgeG9uZzogY2jhuqF5IGzhu4duaCBcImdpdCBjb21taXRcIikiCisKKyM6IHd0LXN0YXR1cy5jOjk3MAorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSByZXZlcnRpbmcgY29tbWl0ICVzLiIKK21zZ3N0ciAiQuG6oW4gaGnhu4duIG5heSDEkWFuZyB0aOG7sWMgaGnhu4duIHRoYW8gdMOhYyByZXZlcnQgbOG6p24gY2h1eeG7g24gZ2lhbyDigJwlc+KAnS4iCisKKyM6IHd0LXN0YXR1cy5jOjk3NQorbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKK21zZ3N0ciAiICAoc+G7rWEgY8OhYyB4dW5nIMSR4buZdCB2w6Agc2F1IMSRw7MgY2jhuqF5IGzhu4duaCBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKKworIzogd3Qtc3RhdHVzLmM6OTc4Cittc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCIpIgorbXNnc3RyICIiCisiICAoa2hpIHThuqV0IGPhuqMgY8OhYyB4dW5nIMSR4buZdCDEkcOjIHPhu61hIHhvbmc6IGNo4bqheSBs4buHbmggXCJnaXQgcmV2ZXJ0IC0tY29udGludWVcIikiCisKKyM6IHd0LXN0YXR1cy5jOjk4MAorbXNnaWQgIiAgKHVzZSBcImdpdCByZXZlcnQgLS1hYm9ydFwiIHRvIGNhbmNlbCB0aGUgcmV2ZXJ0IG9wZXJhdGlvbikiCittc2dzdHIgIiAgKGTDuW5nIFwiZ2l0IHJldmVydCAtLWFib3J0XCIgxJHhu4MgaOG7p3kgYuG7jyB0aGFvIHTDoWMgcmV2ZXJ0KSIKKworIzogd3Qtc3RhdHVzLmM6OTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGJpc2VjdGluZywgc3RhcnRlZCBmcm9tIGJyYW5jaCAnJXMnLiIKK21zZ3N0ciAiIgorIkLhuqFuIGhp4buHbiBuYXkgxJFhbmcgdGjhu7FjIGhp4buHbiB0aGFvIHTDoWMgZGkgY2h1eeG7g24gbuG7rWEgYsaw4bubYyAoYmlzZWN0KSwgYuG6r3QgxJHhuqd1IHThu6sgIgorIm5ow6FuaCDigJwlc+KAnS4iCisKKyM6IHd0LXN0YXR1cy5jOjk5NQorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGJpc2VjdGluZy4iCittc2dzdHIgIkLhuqFuIGhp4buHbiB04bqhaSDEkWFuZyB0aOG7sWMgaGnhu4duIHZp4buHYyBiaXNlY3QgKGNoaWEgxJHDtGkpLiIKKworIzogd3Qtc3RhdHVzLmM6OTk4Cittc2dpZCAiICAodXNlIFwiZ2l0IGJpc2VjdCByZXNldFwiIHRvIGdldCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBicmFuY2gpIgorbXNnc3RyICIgIChkw7luZyBcImdpdCBiaXNlY3QgcmVzZXRcIiDEkeG7gyBxdWF5IHRy4bufIGzhuqFpIG5ow6FuaCBuZ3V5w6puIHRo4buneSkiCisKKyM6IHd0LXN0YXR1cy5jOjExNzMKK21zZ2lkICJPbiBicmFuY2ggIgorbXNnc3RyICJUcsOqbiBuaMOhbmggIgorCisjOiB3dC1zdGF0dXMuYzoxMTg0Cittc2dpZCAiSEVBRCBkZXRhY2hlZCBhdCAiCittc2dzdHIgIkhFQUQgxJHGsOG7o2MgdMOhY2ggcuG7nWkgdOG6oWkiCisKKyM6IHd0LXN0YXR1cy5jOjExODYKK21zZ2lkICJIRUFEIGRldGFjaGVkIGZyb20gIgorbXNnc3RyICJIRUFEIMSRxrDhu6NjIHTDoWNoIHLhu51pIHThu6siCisKKyM6IHd0LXN0YXR1cy5jOjExODkKIG1zZ2lkICJOb3QgY3VycmVudGx5IG9uIGFueSBicmFuY2guIgogbXNnc3RyICJIaeG7h24gdOG6oWkgY2jhurNuZyDhu58gbmjDoW5oIG7DoG8gY+G6oy4iCiAKLSM6IHd0LXN0YXR1cy5jOjc1NQorIzogd3Qtc3RhdHVzLmM6MTIwNgogbXNnaWQgIkluaXRpYWwgY29tbWl0IgogbXNnc3RyICJM4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIGto4bufaSDEkeG6p3UiCiAKLSM6IHd0LXN0YXR1cy5jOjc2OQotbXNnaWQgIlVudHJhY2tlZCIKLW1zZ3N0ciAiS2jDtG5nIMSRxrDhu6NjIHRoZW8gduG6v3QiCisjOiB3dC1zdGF0dXMuYzoxMjIwCittc2dpZCAiVW50cmFja2VkIGZpbGVzIgorbXNnc3RyICJOaOG7r25nIHThuq1wIHRpbiBjaMawYSDEkcaw4bujYyB0aGVvIGTDtWkiCiAKLSM6IHd0LXN0YXR1cy5jOjc3MQotbXNnaWQgIklnbm9yZWQiCi1tc2dzdHIgIkLhu4sgYuG7jyBxdWEiCisjOiB3dC1zdGF0dXMuYzoxMjIyCittc2dpZCAiSWdub3JlZCBmaWxlcyIKK21zZ3N0ciAiTmjhu69uZyB04bqtcCB0aW4gYuG7iyBs4budIMSRaSIKIAotIzogd3Qtc3RhdHVzLmM6NzczCisjOiB3dC1zdGF0dXMuYzoxMjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJJdCB0b29rICUuMmYgc2Vjb25kcyB0byBlbnVtZXJhdGUgdW50cmFja2VkIGZpbGVzLiAnc3RhdHVzIC11bm8nXG4iCisibWF5IHNwZWVkIGl0IHVwLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gZm9yZ2V0IHRvIGFkZFxuIgorIm5ldyBmaWxlcyB5b3Vyc2VsZiAoc2VlICdnaXQgaGVscCBzdGF0dXMnKS4iCittc2dzdHIgIiIKKyJD4bqnbiAlLjJmIGdpw6J5IMSR4buDIGxp4buHdCBrw6ogdOG6pXQgY+G6oyBjw6FjIHThuq1wIHRpbiBjaMawYSDEkcaw4bujYyB0aGVvIGTDtWkuIOKAnHN0YXR1cyAtIgorInVub+KAnVxuIgorImPDsyBs4bq9IGzDoG0gbsOzIG5oYW5oIGjGoW4sIG5oxrBuZyBi4bqhbiBwaOG6o2kgY+G6qW4gdGjhuq1uIMSR4burbmcgcXXDqm4gbcOsbmggcGjhuqNpXG4iCisidOG7sSB0aMOqbSBjw6FjIHThuq1wIHRpbiBt4bubaSAoeGVtIOKAnGdpdCBoZWxwIHN0YXR1c+KAnS4uIgorCisjOiB3dC1zdGF0dXMuYzoxMjMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVudHJhY2tlZCBmaWxlcyBub3QgbGlzdGVkJXMiCiBtc2dzdHIgIk5o4buvbmcgdOG6rXAgdGluIGtow7RuZyBi4buLIHRoZW8gduG6v3Qga2jDtG5nIMSRxrDhu6NjIGxp4buHdCBrw6ogcmEgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjc3NQorIzogd3Qtc3RhdHVzLmM6MTIzNAogbXNnaWQgIiAodXNlIC11IG9wdGlvbiB0byBzaG93IHVudHJhY2tlZCBmaWxlcykiCi1tc2dzdHIgIiAoc+G7rSBk4bulbmcgdMO5eSBjaOG7jW4gLXUgxJHhu4MgaGnhu4NuIHRo4buLIGPDoWMgdOG6rXAgdGluIGNoxrBhIMSRxrDhu6NjIHRoZW8gZMO1aSkiCittc2dzdHIgIiAoZMO5bmcgdMO5eSBjaOG7jW4gLXUgxJHhu4MgaGnhu4NuIHRo4buLIGPDoWMgdOG6rXAgdGluIGNoxrBhIMSRxrDhu6NjIHRoZW8gZMO1aSkiCiAKLSM6IHd0LXN0YXR1cy5jOjc4MQorIzogd3Qtc3RhdHVzLmM6MTI0MAogbXNnaWQgIk5vIGNoYW5nZXMiCiBtc2dzdHIgIktow7RuZyBjw7MgdGhheSDEkeG7lWkgbsOgbyIKIAotIzogd3Qtc3RhdHVzLmM6Nzg1CisjOiB3dC1zdGF0dXMuYzoxMjQ1CiAjLCBjLWZvcm1hdAotbXNnaWQgIm5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0JXNcbiIKLW1zZ3N0ciAia2jDtG5nIGPDsyB0aGF5IMSR4buVaSBuw6BvIMSRxrDhu6NjIHRow6ptIHbDoG8gbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSVzXG4iCittc2dpZCAibm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXQgKHVzZSBcImdpdCBhZGRcIiBhbmQvb3IgXCJnaXQgY29tbWl0IC1hXCIpXG4iCittc2dzdHIgIiIKKyJraMO0bmcgY8OzIHRoYXkgxJHhu5VpIG7DoG8gxJHGsOG7o2MgdGjDqm0gdsOgbyBjb21taXQgKGTDuW5nIFwiZ2l0IGFkZFwiIHbDoC9ob+G6t2MgXCJnaXQgIgorImNvbW1pdCAtYVwiKVxuIgogCi0jOiB3dC1zdGF0dXMuYzo3ODcKLW1zZ2lkICIgKHVzZSBcImdpdCBhZGRcIiBhbmQvb3IgXCJnaXQgY29tbWl0IC1hXCIpIgotbXNnc3RyICIgKHPhu60gZOG7pW5nIFwiZ2l0IGFkZFwiIHbDoC9ob+G6t2MgXCJnaXQgY29tbWl0IC1hXCIpIgotCi0jOiB3dC1zdGF0dXMuYzo3ODkKKyM6IHd0LXN0YXR1cy5jOjEyNDgKICMsIGMtZm9ybWF0Ci1tc2dpZCAibm90aGluZyBhZGRlZCB0byBjb21taXQgYnV0IHVudHJhY2tlZCBmaWxlcyBwcmVzZW50JXNcbiIKLW1zZ3N0ciAia2jDtG5nIGPDsyBnw6wgxJHGsOG7o2MgdGjDqm0gdsOgbyBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIG5oxrBuZyBjw7Mgbmjhu69uZyB04bqtcCB0aW4ga2jDtG5nIMSRxrDhu6NjIHRoZW8gZOG6pXUgduG6v3QgaGnhu4duIGRp4buHbiVzXG4iCittc2dpZCAibm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXRcbiIKK21zZ3N0ciAia2jDtG5nIGPDsyB0aGF5IMSR4buVaSBuw6BvIMSRxrDhu6NjIHRow6ptIHbDoG8gbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KVxuIgogCi0jOiB3dC1zdGF0dXMuYzo3OTEKLW1zZ2lkICIgKHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaykiCi1tc2dzdHIgIiAoc+G7rSBk4bulbmcgXCJnaXQgYWRkXCIgxJHhu4MgdGhlbyBkw7VpIGThuqV1IHbhur90KSIKLQotIzogd3Qtc3RhdHVzLmM6NzkzCi0jOiB3dC1zdGF0dXMuYzo3OTYKLSM6IHd0LXN0YXR1cy5jOjc5OQorIzogd3Qtc3RhdHVzLmM6MTI1MQogIywgYy1mb3JtYXQKLW1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCVzXG4iCi1tc2dzdHIgImtow7RuZyBjw7MgZ8OsIMSR4buDIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgJXNcbiIKK21zZ2lkICIiCisibm90aGluZyBhZGRlZCB0byBjb21taXQgYnV0IHVudHJhY2tlZCBmaWxlcyBwcmVzZW50ICh1c2UgXCJnaXQgYWRkXCIgdG8gIgorInRyYWNrKVxuIgorbXNnc3RyICIiCisia2jDtG5nIGPDsyBnw6wgxJHGsOG7o2MgdGjDqm0gdsOgbyBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIG5oxrBuZyBjw7Mgbmjhu69uZyB04bqtcCB0aW4gIgorImtow7RuZyDEkcaw4bujYyB0aGVvIGThuqV1IHbhur90IGhp4buHbiBkaeG7h24gKGTDuW5nIFwiZ2l0IGFkZFwiIMSR4buDIMSRxrBhIHbDoG8gdGhlbyBkw7VpKVxuIgogCi0jOiB3dC1zdGF0dXMuYzo3OTQKLW1zZ2lkICIgKGNyZWF0ZS9jb3B5IGZpbGVzIGFuZCB1c2UgXCJnaXQgYWRkXCIgdG8gdHJhY2spIgotbXNnc3RyICIgKHThuqFvL3Nhby1jaMOpcCBjw6FjIHThuq1wIHRpbiB2w6Agc+G7rSBk4bulbmcgXCJnaXQgYWRkXCIgxJHhu4MgdGhlbyBkw7VpIGThuqV1IHbhur90KSIKKyM6IHd0LXN0YXR1cy5jOjEyNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAibm90aGluZyBhZGRlZCB0byBjb21taXQgYnV0IHVudHJhY2tlZCBmaWxlcyBwcmVzZW50XG4iCittc2dzdHIgIiIKKyJraMO0bmcgY8OzIGfDrCDEkcaw4bujYyB0aMOqbSB2w6BvIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbmjGsG5nIGPDsyBuaOG7r25nIHThuq1wIHRpbiAiCisia2jDtG5nIMSRxrDhu6NjIHRoZW8gZOG6pXUgduG6v3QgaGnhu4duIGRp4buHblxuIgogCi0jOiB3dC1zdGF0dXMuYzo3OTcKLW1zZ2lkICIgKHVzZSAtdSB0byBzaG93IHVudHJhY2tlZCBmaWxlcykiCi1tc2dzdHIgIiAoc+G7rSBk4bulbmcgdMO5eSBjaOG7jW4gLXUgxJHhu4MgaGnhu4NuIHRo4buLIGPDoWMgdOG6rXAgdGluIGNoxrBhIMSRxrDhu6NjIHRoZW8gZMO1aSkiCisjOiB3dC1zdGF0dXMuYzoxMjU3CisjLCBjLWZvcm1hdAorbXNnaWQgIm5vdGhpbmcgdG8gY29tbWl0IChjcmVhdGUvY29weSBmaWxlcyBhbmQgdXNlIFwiZ2l0IGFkZFwiIHRvIHRyYWNrKVxuIgorbXNnc3RyICIiCisiIGtow7RuZyBjw7MgZ8OsIMSR4buDIGNvbW1pdCAodOG6oW8vc2FvLWNow6lwIGPDoWMgdOG6rXAgdGluIHbDoCBkw7luZyBcImdpdCBhZGRcIiDEkeG7gyB0aGVvICIKKyJkw7VpIGThuqV1IHbhur90KVxuIgogCi0jOiB3dC1zdGF0dXMuYzo4MDAKLW1zZ2lkICIgKHdvcmtpbmcgZGlyZWN0b3J5IGNsZWFuKSIKLW1zZ3N0ciAiICh0aMawIG3hu6VjIGzDoG0gdmnhu4djIHPhuqFjaCBz4bq9KSIKKyM6IHd0LXN0YXR1cy5jOjEyNjAgd3Qtc3RhdHVzLmM6MTI2NQorIywgYy1mb3JtYXQKK21zZ2lkICJub3RoaW5nIHRvIGNvbW1pdFxuIgorbXNnc3RyICJraMO0bmcgY8OzIGfDrCDEkeG7gyBjaHV54buDbiBnaWFvIChjb21taXQpXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjkwOAorIzogd3Qtc3RhdHVzLmM6MTI2MworIywgYy1mb3JtYXQKK21zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCAodXNlIC11IHRvIHNob3cgdW50cmFja2VkIGZpbGVzKVxuIgorbXNnc3RyICIiCisia2jDtG5nIGPDsyBnw6wgxJHhu4MgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSAoZMO5bmcgLXUgxJHhu4MgYuG7jyBjw6FjIHThuq1wIHRpbiBj4bqnbiB0aGVvIGThuqV1ICIKKyJ24bq/dClcbiIKKworIzogd3Qtc3RhdHVzLmM6MTI2NworIywgYy1mb3JtYXQKK21zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyBkaXJlY3RvcnkgY2xlYW5cbiIKK21zZ3N0ciAia2jDtG5nIGPDsyBnw6wgxJHhu4MgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSwgdGjGsCBt4bulYyBsw6BtIHZp4buHYyBz4bqhY2ggc+G6vVxuIgorCisjOiB3dC1zdGF0dXMuYzoxMzc1CiBtc2dpZCAiSEVBRCAobm8gYnJhbmNoKSIKLW1zZ3N0ciAiSEVBRCAoY2jGsGEgY8OzIG5ow6FuaCBuw6BvKSIKK21zZ3N0ciAiSEVBRCAoa2jDtG5nIG5ow6FuaCkiCiAKLSM6IHd0LXN0YXR1cy5jOjkxNAorIzogd3Qtc3RhdHVzLmM6MTM4MQogbXNnaWQgIkluaXRpYWwgY29tbWl0IG9uICIKLW1zZ3N0ciAiTOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSAga2jhu59pIHThuqFvIHRyw6puIgorbXNnc3RyICJM4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIGto4bufaSB04bqhbyB0csOqbiAiCiAKLSM6IHd0LXN0YXR1cy5jOjkyOQorIzogd3Qtc3RhdHVzLmM6MTM5NgogbXNnaWQgImJlaGluZCAiCi1tc2dzdHIgIsSR4bqxbmcgc2F1IgorbXNnc3RyICLEkeG6sW5nIHNhdSAiCiAKLSM6IHd0LXN0YXR1cy5jOjkzMgotIzogd3Qtc3RhdHVzLmM6OTM1CisjOiB3dC1zdGF0dXMuYzoxMzk5IHd0LXN0YXR1cy5jOjE0MDIKIG1zZ2lkICJhaGVhZCAiCi1tc2dzdHIgInBow61hIHRyxrDhu5tjIgorbXNnc3RyICJwaMOtYSB0csaw4bubYyAiCiAKLSM6IHd0LXN0YXR1cy5jOjkzNworIzogd3Qtc3RhdHVzLmM6MTQwNAogbXNnaWQgIiwgYmVoaW5kICIKLW1zZ3N0ciAiLCDEkeG6sW5nIHNhdSIKK21zZ3N0ciAiLCDEkeG6sW5nIHNhdSAiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NjIKKyM6IGNvbXBhdC9wcmVjb21wb3NlX3V0ZjguYzo1OCBidWlsdGluL2Nsb25lLmM6MzUyCisjLCBjLWZvcm1hdAorbXNnaWQgImZhaWxlZCB0byB1bmxpbmsgJyVzJyIKK21zZ3N0ciAiYuG7jyBsacOqbiBr4bq/dCAodW5saW5rKSAlcyBraMO0bmcgdGjDoG5oIGPDtG5nIgorCisjOiBidWlsdGluL2FkZC5jOjIwCittc2dpZCAiZ2l0IGFkZCBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICJnaXQgYWRkIFtjw6FjLXTDuXktY2jhu41uXSBbLS1dICA8cGF0aHNwZWM+Li4uIgorCisjLgorIy4gKiBUbyBiZSBjb25zaXN0ZW50IHdpdGggImdpdCBhZGQgLXAiIGFuZCBtb3N0IEdpdAorIy4gKiBjb21tYW5kcywgd2Ugc2hvdWxkIGRlZmF1bHQgdG8gYmVpbmcgdHJlZS13aWRlLCBidXQKKyMuICogdGhpcyBpcyBub3QgdGhlIG9yaWdpbmFsIGJlaGF2aW9yIGFuZCBjYW4ndCBiZQorIy4gKiBjaGFuZ2VkIHVudGlsIHVzZXJzIHRyYWluZWQgdGhlbXNlbHZlcyBub3QgdG8gdHlwZQorIy4gKiAiZ2l0IGFkZCAtdSIgb3IgImdpdCBhZGQgLUEiLiBGb3Igbm93LCB3ZSB3YXJuIGFuZAorIy4gKiBrZWVwIHRoZSBvbGQgYmVoYXZpb3IuIExhdGVyLCB0aGUgYmVoYXZpb3IgY2FuIGJlIGNoYW5nZWQKKyMuICogdG8gdHJlZS13aWRlLCBrZWVwaW5nIHRoZSB3YXJuaW5nIGZvciBhIHdoaWxlLCBhbmQKKyMuICogZXZlbnR1YWxseSB3ZSBjYW4gZHJvcCB0aGUgd2FybmluZy4KKyMuCisjOiBidWlsdGluL2FkZC5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgYmVoYXZpb3Igb2YgJ2dpdCBhZGQgJXMgKG9yICVzKScgd2l0aCBubyBwYXRoIGFyZ3VtZW50IGZyb20gYVxuIgorInN1YmRpcmVjdG9yeSBvZiB0aGUgdHJlZSB3aWxsIGNoYW5nZSBpbiBHaXQgMi4wIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgIgorImFueW1vcmUuXG4iCisiVG8gYWRkIGNvbnRlbnQgZm9yIHRoZSB3aG9sZSB0cmVlLCBydW46XG4iCisiXG4iCisiICBnaXQgYWRkICVzIDovXG4iCisiICAob3IgZ2l0IGFkZCAlcyA6LylcbiIKKyJcbiIKKyJUbyByZXN0cmljdCB0aGUgY29tbWFuZCB0byB0aGUgY3VycmVudCBkaXJlY3RvcnksIHJ1bjpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgLlxuIgorIiAgKG9yIGdpdCBhZGQgJXMgLilcbiIKKyJcbiIKKyJXaXRoIHRoZSBjdXJyZW50IEdpdCB2ZXJzaW9uLCB0aGUgY29tbWFuZCBpcyByZXN0cmljdGVkIHRvIHRoZSBjdXJyZW50ICIKKyJkaXJlY3RvcnkuXG4iCittc2dzdHIgIiIKKyJDw6FjaCDhu6luZyB44butIGPhu6dhIGzhu4duaCDigJxnaXQgYWRkICVzIChoYXkgJXMp4oCdIGtoaSBraMO0bmcgY8OzIHRoYW0gc+G7kSDEkcaw4budbmcgZOG6q24gIgorInThu6tcbiIKKyJ0aMawLW3hu6VjIGNvbiBj4bunYSBjw6J5IHPhur0gdGhheSDEkeG7lWkga+G7gyB04burIEdpdCAyLjAgdsOgIGtow7RuZyB0aOG7gyBz4butIGThu6VuZyBuaMawIHRo4bq/ICIKKyJu4buvYS5cbiIKKyLEkOG7gyB0aMOqbSBu4buZaSBkdW5nIGNobyB0b8OgbiBi4buZIGPDonksIGNo4bqheTpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgOi9cbiIKKyIgIChoYXkgZ2l0IGFkZCAlcyA6LylcbiIKKyJcbiIKKyLEkOG7gyBo4bqhbiBjaOG6vyBs4buHbmggY2hvIHRoxrAtbeG7pWMgaGnhu4duIHThuqFpLCBjaOG6oXk6XG4iCisiXG4iCisiICBnaXQgYWRkICVzIC5cbiIKKyIgIChoYXkgZ2l0IGFkZCAlcyAuKVxuIgorIlxuIgorIlbhu5tpIHBoacOqbiBi4bqjbiBoaeG7h24gdOG6oWkgY+G7p2EgR2l0LCBs4buHbmggYuG7iyBo4bqhbiBjaOG6vyBjaG8gdGjGsC1t4bulYyBoaeG7h24gdOG6oWkuXG4iCisKKyM6IGJ1aWx0aW4vYWRkLmM6MTAwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJZb3UgcmFuICdnaXQgYWRkJyB3aXRoIG5laXRoZXIgJy1BICgtLWFsbCknIG9yICctLWlnbm9yZS1yZW1vdmFsJyxcbiIKKyJ3aG9zZSBiZWhhdmlvdXIgd2lsbCBjaGFuZ2UgaW4gR2l0IDIuMCB3aXRoIHJlc3BlY3QgdG8gcGF0aHMgeW91IHJlbW92ZWQuXG4iCisiUGF0aHMgbGlrZSAnJXMnIHRoYXQgYXJlXG4iCisicmVtb3ZlZCBmcm9tIHlvdXIgd29ya2luZyB0cmVlIGFyZSBpZ25vcmVkIHdpdGggdGhpcyB2ZXJzaW9uIG9mIEdpdC5cbiIKKyJcbiIKKyIqICdnaXQgYWRkIC0taWdub3JlLXJlbW92YWwgPHBhdGhzcGVjPicsIHdoaWNoIGlzIHRoZSBjdXJyZW50IGRlZmF1bHQsXG4iCisiICBpZ25vcmVzIHBhdGhzIHlvdSByZW1vdmVkIGZyb20geW91ciB3b3JraW5nIHRyZWUuXG4iCisiXG4iCisiKiAnZ2l0IGFkZCAtLWFsbCA8cGF0aHNwZWM+JyB3aWxsIGxldCB5b3UgYWxzbyByZWNvcmQgdGhlIHJlbW92YWxzLlxuIgorIlxuIgorIlJ1biAnZ2l0IHN0YXR1cycgdG8gY2hlY2sgdGhlIHBhdGhzIHlvdSByZW1vdmVkIGZyb20geW91ciB3b3JraW5nIHRyZWUuXG4iCittc2dzdHIgIiIKKyJC4bqhbiBjaOG6oXkg4oCcZ2l0IGFkZOKAnSBtw6Aga2jDtG5nIGPDsyDigJwtQSAoLS1hbGwp4oCdIGPFqW5nIGtow7RuZyDigJwtLWlnbm9yZS1yZW1vdmFs4oCdLFxuIgorImPDoWNoIOG7qW5nIHjhu60gY+G7p2EgbsOzIHPhur0gdGhheSDEkeG7lWkga+G7gyB04burIEdpdCAyLjA6IG7DsyBxdWFuIHTDom0gxJHhur9uIGPDoWMgxJHGsOG7nW5nIGThuqtuICIKKyJtw6BcbiIKKyJi4bqhbiDEkcOjIGfhu6EgYuG7jy4gQ8OhYyDEkcaw4budbmcgZOG6q24gbmjGsCBsw6Ag4oCcJXPigJ0gY8OhaSBtw6BcbiIKKyJi4buLIGfhu6EgYuG7jyB04burIGPDonkgbMOgbSB2aeG7h2MgY+G7p2EgYuG6oW4gdGjDrCBi4buLIGLhu48gcXVhIHbhu5tpIHBoacOqbiBi4bqjbiBuw6B5IGPhu6dhIEdpdC5cbiIKKyJcbiIKKyIqIOKAnGdpdCBhZGQgLS1pZ25vcmUtcmVtb3ZhbCA8cGF0aHNwZWM+4oCdLCBjw6FpIGhp4buHbiB04bqhaSBsw6AgbeG6t2MgxJHhu4tuaCxcbiIKKyIgIGLhu48gcXVhIGPDoWMgxJHGsOG7nW5nIGThuqtuIGLhuqFuIMSRw6MgZ+G7oSBi4buPIHThu6sgY8OieSBsw6BtIHZp4buHYyBj4bunYSBi4bqhbi5cbiIKKyJcbiIKKyIqIOKAnGdpdCBhZGQgLS1hbGwgPHBhdGhzcGVjPuKAnSBz4bq9IMSR4buTbmcgdGjhu51pIGdpw7pwIGLhuqFuIGdoaSBs4bqhaSB2aeG7h2MgZOG7nWkgxJFpLlxuIgorIlxuIgorIkNo4bqheSDigJxnaXQgc3RhdHVz4oCdIMSR4buDIGtp4buDbSB0cmEgY8OhYyDEkcaw4budbmcgZOG6q24gYuG6oW4gxJHDoyBn4buhIGLhu48gdOG7qyBjw6J5IGzDoG0gdmnhu4djIGPhu6dhICIKKyJi4bqhbi5cbiIKKworIzogYnVpbHRpbi9hZGQuYzoxNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5leHBlY3RlZCBkaWZmIHN0YXR1cyAlYyIKIG1zZ3N0ciAidHLhuqFuZyB0aMOhaSBs4buHbmggZGlmZiBraMO0bmcgbmjGsCBtb25nIMSR4bujaSAlYyIKIAotIzogYnVpbHRpbi9hZGQuYzo2NwotIzogYnVpbHRpbi9jb21taXQuYzoyMjYKKyM6IGJ1aWx0aW4vYWRkLmM6MTQ5IGJ1aWx0aW4vY29tbWl0LmM6MjMzCiBtc2dpZCAidXBkYXRpbmcgZmlsZXMgZmFpbGVkIgogbXNnc3RyICJD4bqtcCBuaOG6rXQgdOG6rXAgdGluIGfhurdwIGzhu5dpIgogCi0jOiBidWlsdGluL2FkZC5jOjc3CisjOiBidWlsdGluL2FkZC5jOjE2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZW1vdmUgJyVzJ1xuIgotbXNnc3RyICJn4buhIGLhu48gJyVzJ1xuIgorbXNnc3RyICJn4buhIGLhu48g4oCcJXPigJ1cbiIKIAotIzogYnVpbHRpbi9hZGQuYzoxNzYKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiUGF0aCAnJXMnIGlzIGluIHN1Ym1vZHVsZSAnJS4qcyciCi1tc2dzdHIgIsSQxrDhu51uZyBk4bqrbiAnJXMnIHRow6wg4bufIHRyb25nIG3DtC3EkXVuLWNvbiAnJS4qcyciCi0KLSM6IGJ1aWx0aW4vYWRkLmM6MTkyCisjOiBidWlsdGluL2FkZC5jOjI1MwogbXNnaWQgIlVuc3RhZ2VkIGNoYW5nZXMgYWZ0ZXIgcmVmcmVzaGluZyB0aGUgaW5kZXg6IgotbXNnc3RyICJDw6FjIHRoYXkgxJHhu5VpIGtow7RuZyDEkcaw4bujYyBsxrB1IHRy4bqhbmcgdGjDoWkgc2F1IGtoaSBsw6BtIHTGsMahaSBt4bubaSBs4bqhaSBi4bqjbmcgbeG7pWMgbOG7pWM6IgorbXNnc3RyICIiCisiQ8OhYyB0aGF5IMSR4buVaSBraMO0bmcgxJHGsOG7o2MgbMawdSB0cuG6oW5nIHRow6FpIHNhdSBraGkgbMOgbSB0xrDGoWkgbeG7m2kgbOG6oWkgYuG6o25nIG3hu6VjIGzhu6VjOiIKIAotIzogYnVpbHRpbi9hZGQuYzoxOTUKLSM6IGJ1aWx0aW4vYWRkLmM6NDU2Ci0jOiBidWlsdGluL3JtLmM6MTg2CisjOiBidWlsdGluL2FkZC5jOjI1NiBidWlsdGluL2FkZC5jOjU3MiBidWlsdGluL3JtLmM6Mjc1CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGhzcGVjICclcycgZGlkIG5vdCBtYXRjaCBhbnkgZmlsZXMiCi1tc2dzdHIgInBhdGhzcGVjICclcycga2jDtG5nIGto4bubcCB24bubaSBi4bqldCBr4buzIHThuq1wIHRpbiBuw6BvIgorbXNnc3RyICJwYXRoc3BlYyDigJwlc+KAnSBraMO0bmcga2jhu5twIHbhu5tpIGLhuqV0IGvhu7MgdOG6rXAgdGluIG7DoG8iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MjA5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIiclcycgaXMgYmV5b25kIGEgc3ltYm9saWMgbGluayIKLW1zZ3N0ciAiJyVzJyBu4bqxbSBuZ2/DoGkgbeG7mXQgbGnDqm4ga+G6v3QgdMaw4bujbmcgdHLGsG5nIgotCi0jOiBidWlsdGluL2FkZC5jOjI3NgorIzogYnVpbHRpbi9hZGQuYzozMzkKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7jWMgYuG6o25nIG3hu6VjIGzhu6VjIgogCi0jOiBidWlsdGluL2FkZC5jOjI4NgorIzogYnVpbHRpbi9hZGQuYzozNDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gJyVzJyBmb3Igd3JpdGluZy4iCi1tc2dzdHIgIktow7RuZyB0aOG7gyBt4bufICclcycgxJHhu4MgZ2hpIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgbeG7nyDigJwlc+KAnSDEkeG7gyBnaGkuIgogCi0jOiBidWlsdGluL2FkZC5jOjI5MAorIzogYnVpbHRpbi9hZGQuYzozNTMKIG1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgcGF0Y2giCiBtc2dzdHIgIktow7RuZyB0aOG7gyBnaGkgcmEgbWnhur9uZyB2w6EiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mjk1CisjOiBidWlsdGluL2FkZC5jOjM1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgc3RhdCAnJXMnIgotbXNnc3RyICJraMO0bmcgdGjhu4MgbOG6pXkgdHLhuqFuZyB0aMOhaSB24buBICclcyciCittc2dzdHIgImtow7RuZyB0aOG7gyBs4bqleSB0cuG6oW5nIHRow6FpIHbhu4Eg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mjk3CisjOiBidWlsdGluL2FkZC5jOjM2MAogbXNnaWQgIkVtcHR5IHBhdGNoLiBBYm9ydGVkLiIKIG1zZ3N0ciAiTWnhur9uZyB2w6EgdHLhu5FuZyBy4buXbmcuIMSQw6MgYuG7jyBxdWEuIgogCi0jOiBidWlsdGluL2FkZC5jOjMwMworIzogYnVpbHRpbi9hZGQuYzozNjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGFwcGx5ICclcyciCi1tc2dzdHIgIktow7RuZyB0aOG7gyBhcHBseSAow6FwIGThu6VuZyBtaeG6v25nIHbDoSkgJyVzJyIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIGFwcGx5ICjDoXAgZOG7pW5nIG1p4bq/bmcgdsOhKSDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9hZGQuYzozMTIKKyM6IGJ1aWx0aW4vYWRkLmM6Mzc2CiBtc2dpZCAiVGhlIGZvbGxvd2luZyBwYXRocyBhcmUgaWdub3JlZCBieSBvbmUgb2YgeW91ciAuZ2l0aWdub3JlIGZpbGVzOlxuIgotbXNnc3RyICJDw6FjIMSRxrDhu51uZyBk4bqrbiB0aGVvIHNhdSDEkcOieSBz4bq9IGLhu4sgbOG7nSDEkWkgYuG7n2kgbeG7mXQgdHJvbmcgY8OhYyB04bqtcCB0aW4gLmdpdGlnbm9yZSBj4bunYSBi4bqhbjpcbiIKK21zZ3N0ciAiIgorIkPDoWMgxJHGsOG7nW5nIGThuqtuIHRoZW8gc2F1IMSRw6J5IHPhur0gYuG7iyBs4budIMSRaSBi4bufaSBt4buZdCB0cm9uZyBjw6FjIHThuq1wIHRpbiAuZ2l0aWdub3JlICIKKyJj4bunYSBi4bqhbjpcbiIKIAotIzogYnVpbHRpbi9hZGQuYzozNTIKKyM6IGJ1aWx0aW4vYWRkLmM6MzkzIGJ1aWx0aW4vY2xlYW4uYzoxNjEgYnVpbHRpbi9mZXRjaC5jOjc4IGJ1aWx0aW4vbXYuYzo2MworIzogYnVpbHRpbi9wcnVuZS1wYWNrZWQuYzo3NiBidWlsdGluL3B1c2guYzo0MjUgYnVpbHRpbi9yZW1vdGUuYzoxMjUzCisjOiBidWlsdGluL3JtLmM6MjA2Cittc2dpZCAiZHJ5IHJ1biIKK21zZ3N0ciAiY2jhuqF5IHRo4butIgorCisjOiBidWlsdGluL2FkZC5jOjM5NCBidWlsdGluL2FwcGx5LmM6NDQwOSBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE5CisjOiBidWlsdGluL2NvbW1pdC5jOjExNTIgYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6OTUgYnVpbHRpbi9mc2NrLmM6NjEzCisjOiBidWlsdGluL2xvZy5jOjE1MTggYnVpbHRpbi9tdi5jOjYyIGJ1aWx0aW4vcmVhZC10cmVlLmM6MTEyCittc2dpZCAiYmUgdmVyYm9zZSIKK21zZ3N0ciAiY2hpIHRp4bq/dCIKKworIzogYnVpbHRpbi9hZGQuYzozOTYKK21zZ2lkICJpbnRlcmFjdGl2ZSBwaWNraW5nIgorbXNnc3RyICJz4butYSBi4bqxbmcgY8OhY2ggdMawxqFuZyB0w6FjIgorCisjOiBidWlsdGluL2FkZC5jOjM5NyBidWlsdGluL2NoZWNrb3V0LmM6MTA2MyBidWlsdGluL3Jlc2V0LmM6MjU4Cittc2dpZCAic2VsZWN0IGh1bmtzIGludGVyYWN0aXZlbHkiCittc2dzdHIgImNo4buNbiDigJxodW5rc+KAnSBt4buZdCBjw6FjaCB0xrDGoW5nIHTDoWMiCisKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk4Cittc2dpZCAiZWRpdCBjdXJyZW50IGRpZmYgYW5kIGFwcGx5IgorbXNnc3RyICJz4butYSBkaWZmIGhp4buHbiBuYXkgdsOgIMOhcCBk4bulbmcgbsOzIgorCisjOiBidWlsdGluL2FkZC5jOjM5OQorbXNnaWQgImFsbG93IGFkZGluZyBvdGhlcndpc2UgaWdub3JlZCBmaWxlcyIKK21zZ3N0ciAiY2hvIHBow6lwIHRow6ptIGPDoWMgdOG6rXAgdGluIGLhu4sgYuG7jyBxdWEga2jDoWMiCisKKyM6IGJ1aWx0aW4vYWRkLmM6NDAwCittc2dpZCAidXBkYXRlIHRyYWNrZWQgZmlsZXMiCittc2dzdHIgImPhuq1wIG5o4bqtdCBjw6FjIHThuq1wIHRpbiDEkcaw4bujYyB0aGVvIHbhur90IgorCisjOiBidWlsdGluL2FkZC5jOjQwMQorbXNnaWQgInJlY29yZCBvbmx5IHRoZSBmYWN0IHRoYXQgdGhlIHBhdGggd2lsbCBiZSBhZGRlZCBsYXRlciIKK21zZ3N0ciAiY2jhu4kgZ2hpIGzhuqFpIHPhu7Egdmnhu4djIG3DoCDEkcaw4budbmcgZOG6q24gc+G6vSDEkcaw4bujYyB0aMOqbSB2w6BvIHNhdSIKKworIzogYnVpbHRpbi9hZGQuYzo0MDIKK21zZ2lkICJhZGQgY2hhbmdlcyBmcm9tIGFsbCB0cmFja2VkIGFuZCB1bnRyYWNrZWQgZmlsZXMiCittc2dzdHIgIiIKKyJ0aMOqbSBjw6FjIHRoYXkgxJHhu5VpIHThu6sgdOG6pXQgY+G6oyBjw6FjIHThuq1wIHRpbiBjw7MgY8WpbmcgbmjGsCBraMO0bmcgxJHGsOG7o2MgdGhlbyBkw7VpIGThuqV1ICIKKyJ24bq/dCIKKworIy4gdGFrZXMgbm8gYXJndW1lbnRzCisjOiBidWlsdGluL2FkZC5jOjQwNQorbXNnaWQgImlnbm9yZSBwYXRocyByZW1vdmVkIGluIHRoZSB3b3JraW5nIHRyZWUgKHNhbWUgYXMgLS1uby1hbGwpIgorbXNnc3RyICIiCisibOG7nSDEkWkgY8OhYyDEkcaw4budbmcgZOG6q24gYuG7iyBn4buhIGLhu48gdHJvbmcgY8OieSB0aMawIG3hu6VjIGzDoG0gdmnhu4djIChnaeG7kW5nIHbhu5tpIC0tbm8tYWxsKSIKKworIzogYnVpbHRpbi9hZGQuYzo0MDcKK21zZ2lkICJkb24ndCBhZGQsIG9ubHkgcmVmcmVzaCB0aGUgaW5kZXgiCittc2dzdHIgImtow7RuZyB0aMOqbSwgY2jhu4kgbMOgbSB0xrDGoWkgbeG7m2kgYuG6o25nIG3hu6VjIGzhu6VjIgorCisjOiBidWlsdGluL2FkZC5jOjQwOAorbXNnaWQgImp1c3Qgc2tpcCBmaWxlcyB3aGljaCBjYW5ub3QgYmUgYWRkZWQgYmVjYXVzZSBvZiBlcnJvcnMiCittc2dzdHIgImNoaWUgYuG7jyBxdWEgbmjhu69uZyB04bqtcCB0aW4gbcOgIG7DsyBraMO0bmcgdGjhu4MgxJHGsOG7o2MgdGjDqm0gdsOgbyBi4bufaSB2w6wgZ+G6t3AgbOG7l2kiCisKKyM6IGJ1aWx0aW4vYWRkLmM6NDA5Cittc2dpZCAiY2hlY2sgaWYgLSBldmVuIG1pc3NpbmcgLSBmaWxlcyBhcmUgaWdub3JlZCBpbiBkcnkgcnVuIgorbXNnc3RyICIiCisia2nhu4NtIHRyYSB4ZW0gLSB0aOG6rW0gY2jDrSB0aGnhur91IC0gdOG6rXAgdGluIGLhu4sgYuG7jyBxdWEgdHJvbmcgcXXDoSB0csOsbmggY2jhuqF5IHRo4butIgorCisjOiBidWlsdGluL2FkZC5jOjQzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2UgLWYgaWYgeW91IHJlYWxseSB3YW50IHRvIGFkZCB0aGVtLlxuIgogbXNnc3RyICJT4butIGThu6VuZyB0w7l5IGNo4buNbiAtZiBu4bq/dSBi4bqhbiB0aOG7sWMgc+G7sSBtdeG7kW4gdGjDqm0gY2jDum5nIHbDoG8uXG4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzUzCisjOiBidWlsdGluL2FkZC5jOjQzMgogbXNnaWQgIm5vIGZpbGVzIGFkZGVkIgogbXNnc3RyICJjaMawYSBjw7MgdOG6rXAgdGluIG7DoG8gxJHGsOG7o2MgdGjDqm0gdsOgbyIKIAotIzogYnVpbHRpbi9hZGQuYzozNTkKKyM6IGJ1aWx0aW4vYWRkLmM6NDM4CiBtc2dpZCAiYWRkaW5nIGZpbGVzIGZhaWxlZCIKIG1zZ3N0ciAidGjDqm0gdOG6rXAgdGluIGfhurdwIGzhu5dpIgogCi0jOiBidWlsdGluL2FkZC5jOjM5MQorIzogYnVpbHRpbi9hZGQuYzo0NzcKIG1zZ2lkICItQSBhbmQgLXUgYXJlIG11dHVhbGx5IGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLUEgdsOgIC11IHh1bmcga2jhuq9jIG5oYXUiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzkzCisjOiBidWlsdGluL2FkZC5jOjQ5NQogbXNnaWQgIk9wdGlvbiAtLWlnbm9yZS1taXNzaW5nIGNhbiBvbmx5IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCAtLWRyeS1ydW4iCi1tc2dzdHIgIlTDuXkgY2jhu41uIC0taWdub3JlLW1pc3NpbmcgY2jhu4kgY8OzIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIGPDuW5nIHbhu5tpIC0tZHJ5LXJ1biIKK21zZ3N0ciAiVMO5eSBjaOG7jW4gLS1pZ25vcmUtbWlzc2luZyBjaOG7iSBjw7MgdGjhu4MgxJHGsOG7o2MgZMO5bmcgY8O5bmcgduG7m2kgLS1kcnktcnVuIgogCi0jOiBidWlsdGluL2FkZC5jOjQxMworIzogYnVpbHRpbi9hZGQuYzo1MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90aGluZyBzcGVjaWZpZWQsIG5vdGhpbmcgYWRkZWQuXG4iCiBtc2dzdHIgIktow7RuZyBjw7MgZ8OsIMSRxrDhu6NjIGNo4buJIHJhLCBraMO0bmcgY8OzIGfDrCDEkcaw4bujYyB0aMOqbSB2w6BvLlxuIgogCi0jOiBidWlsdGluL2FkZC5jOjQxNAorIzogYnVpbHRpbi9hZGQuYzo1MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWF5YmUgeW91IHdhbnRlZCB0byBzYXkgJ2dpdCBhZGQgLic/XG4iCi1tc2dzdHIgIkPDsyBs4bq9IGLhuqFuIG114buRbiBuw7NpIGzDoCAnZ2l0IGFkZCAuJyBwaOG6o2kga2jDtG5nP1xuIgorbXNnc3RyICJDw7MgbOG6vSBi4bqhbiBtdeG7kW4gbMOgIOKAnGdpdCBhZGQgLuKAnSBwaOG6o2kga2jDtG5nP1xuIgogCi0jOiBidWlsdGluL2FkZC5jOjQyMAotIzogYnVpbHRpbi9jbGVhbi5jOjk1Ci0jOiBidWlsdGluL2NvbW1pdC5jOjI4NgotIzogYnVpbHRpbi9tdi5jOjgyCi0jOiBidWlsdGluL3JtLmM6MTYyCisjOiBidWlsdGluL2FkZC5jOjUzMiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjY2IGJ1aWx0aW4vY2xlYW4uYzoyMDQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MjkzIGJ1aWx0aW4vbXYuYzo4MiBidWlsdGluL3JtLmM6MjM1CiBtc2dpZCAiaW5kZXggZmlsZSBjb3JydXB0IgogbXNnc3RyICJ04bqtcCB0aW4gZ2hpIGLhuqNuZyBt4bulYyBs4bulYyBi4buLIGjhu49uZyIKIAotIzogYnVpbHRpbi9hZGQuYzo0NzYKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MTA4Ci0jOiBidWlsdGluL212LmM6MjI5Ci0jOiBidWlsdGluL3JtLmM6MjYwCisjOiBidWlsdGluL2FkZC5jOjYwNCBidWlsdGluL2FwcGx5LmM6NDUwNSBidWlsdGluL212LmM6MjI5IGJ1aWx0aW4vcm0uYzozNzAKIG1zZ2lkICJVbmFibGUgdG8gd3JpdGUgbmV3IGluZGV4IGZpbGUiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBnaGkgdOG6rXAgdGluIGzGsHUgYuG6o25nIG3hu6VjIGzhu6VjIG3hu5tpIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NTMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo1NwogbXNnaWQgImdpdCBhcHBseSBbb3B0aW9uc10gWzxwYXRjaD4uLi5dIgogbXNnc3RyICJnaXQgYXBwbHkgW2PDoWMtdMO5eS1jaOG7jW5dIFs8bWnhur9uZy12w6E+Li4uXSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjEwNgorIzogYnVpbHRpbi9hcHBseS5jOjExMAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlY29nbml6ZWQgd2hpdGVzcGFjZSBvcHRpb24gJyVzJyIKLW1zZ3N0ciAia2jDtG5nIG5o4bqtbiByYSB0w7l5IGNo4buNbiB24buBIGtob+G6o25nIHRy4bqvbmcgJyVzJyIKK21zZ3N0ciAia2jDtG5nIG5o4bqtbiByYSB0w7l5IGNo4buNbiB24buBIGtob+G6o25nIHRy4bqvbmcg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxMjEKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxMjUKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIHdoaXRlc3BhY2UgaWdub3JlIG9wdGlvbiAnJXMnIgotbXNnc3RyICJraMO0bmcgbmjhuq1uIHJhIHTDuXkgY2jhu41uIGLhu48gcXVhIGtob+G6o25nIHRy4bqvbmcgJyVzJyIKK21zZ3N0ciAia2jDtG5nIG5o4bqtbiByYSB0w7l5IGNo4buNbiBi4buPIHF1YSBraG/huqNuZyB0cuG6r25nIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2FwcGx5LmM6ODE1CisjOiBidWlsdGluL2FwcGx5LmM6ODIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBwcmVwYXJlIHRpbWVzdGFtcCByZWdleHAgJXMiCi1tc2dzdHIgIktow7RuZyB0aOG7gyBjaHXhuqluIGLhu4sgYmnhu4N1IHRo4bupYyBjaMOtbmggcXVpIGThuqV1IHbhur90IHRo4budaSBnaWFuICh0aW1lc3RhbXAgcmVnZXhwKSAlcyIKK21zZ3N0ciAiIgorIktow7RuZyB0aOG7gyBjaHXhuqluIGLhu4sgYmnhu4N1IHRo4bupYyBjaMOtbmggcXVpIGThuqV1IHbhur90IHRo4budaSBnaWFuICh0aW1lc3RhbXAgcmVnZXhwKSAiCisiJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo4MjQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo4MzIKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVnZXhlYyByZXR1cm5lZCAlZCBmb3IgaW5wdXQ6ICVzIgogbXNnc3RyICJ0aGkgaMOgbmggYmnhu4N1IHRo4bupYyBjaMOtbmggcXV5IHRy4bqjIHbhu4EgJWQgY2hvIGvhur90IHh14bqldDogJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo5MDUKKyM6IGJ1aWx0aW4vYXBwbHkuYzo5MTMKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGZpbmQgZmlsZW5hbWUgaW4gcGF0Y2ggYXQgbGluZSAlZCIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIHTDrG0gdGjhuqV5IHTDqm4gdOG6rXAgdGluIHRyb25nIG1p4bq/bmcgdsOhIHThuqFpIGTDsm5nICVkIgogCi0jOiBidWlsdGluL2FwcGx5LmM6OTM3CisjOiBidWlsdGluL2FwcGx5LmM6OTQ1CiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCBhcHBseTogYmFkIGdpdC1kaWZmIC0gZXhwZWN0ZWQgL2Rldi9udWxsLCBnb3QgJXMgb24gbGluZSAlZCIKIG1zZ3N0ciAiZ2l0IGFwcGx5OiBnaXQtZGlmZiBzYWkgLSBtb25nIMSR4bujaSAvZGV2L251bGwsIMSRw6Mgbmjhuq1uICVzIHRyw6puIGTDsm5nICVkIgogCi0jOiBidWlsdGluL2FwcGx5LmM6OTQxCisjOiBidWlsdGluL2FwcGx5LmM6OTQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCBhcHBseTogYmFkIGdpdC1kaWZmIC0gaW5jb25zaXN0ZW50IG5ldyBmaWxlbmFtZSBvbiBsaW5lICVkIgogbXNnc3RyICJnaXQgYXBwbHk6IGdpdC1kaWZmIHNhaSAtIHTDqm4gdOG6rXAgdGluIG3hu5tpIG3DonUgdGh14bqlbiB0csOqbiBkw7JuZyAlZCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjk0MgorIzogYnVpbHRpbi9hcHBseS5jOjk1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgYXBwbHk6IGJhZCBnaXQtZGlmZiAtIGluY29uc2lzdGVudCBvbGQgZmlsZW5hbWUgb24gbGluZSAlZCIKIG1zZ3N0ciAiZ2l0IGFwcGx5OiBnaXQtZGlmZiBzYWkgLSB0w6puIHThuq1wIHRpbiBjxakgbcOidSB0aHXhuqVuIHRyw6puIGTDsm5nICVkIgogCi0jOiBidWlsdGluL2FwcGx5LmM6OTQ5CisjOiBidWlsdGluL2FwcGx5LmM6OTU3CiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCBhcHBseTogYmFkIGdpdC1kaWZmIC0gZXhwZWN0ZWQgL2Rldi9udWxsIG9uIGxpbmUgJWQiCi1tc2dzdHIgImdpdCBhcHBseTogZ2l0LWRpZmYgc2FpIC0gbW9uZyDEkeG7o2kgL2Rldi9udWxsIHRyw6puIGTDsm5nICVkIgorbXNnc3RyICJnaXQgYXBwbHk6IGdpdC1kaWZmIHNhaSAtIGPhuqduIC9kZXYvbnVsbCB0csOqbiBkw7JuZyAlZCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjEzOTQKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNDIyCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlY291bnQ6IHVuZXhwZWN0ZWQgbGluZTogJS4qcyIKLW1zZ3N0ciAiY2hpIHRp4bq/dDogZMOybmcga2jDtG5nIMSRxrDhu6NjIG1vbmcgxJHhu6NpOiAlLipzIgorbXNnc3RyICJjaGkgdGnhur90OiBkw7JuZyBraMO0bmcgY+G6p246ICUuKnMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNDUxCisjOiBidWlsdGluL2FwcGx5LmM6MTQ3OQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRjaCBmcmFnbWVudCB3aXRob3V0IGhlYWRlciBhdCBsaW5lICVkOiAlLipzIgogbXNnc3RyICJtaeG6v25nIHbDoSBwaMOibiBt4bqjbmggbcOgIGtow7RuZyBjw7MgcGjhuqduIMSR4bqndSB04bqhaSBkw7JuZyAlZDogJS4qcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE0NjgKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNDk2CiAjLCBjLWZvcm1hdAotbXNnaWQgImdpdCBkaWZmIGhlYWRlciBsYWNrcyBmaWxlbmFtZSBpbmZvcm1hdGlvbiB3aGVuIHJlbW92aW5nICVkIGxlYWRpbmcgcGF0aG5hbWUgY29tcG9uZW50IChsaW5lICVkKSIKLW1zZ2lkX3BsdXJhbCAiZ2l0IGRpZmYgaGVhZGVyIGxhY2tzIGZpbGVuYW1lIGluZm9ybWF0aW9uIHdoZW4gcmVtb3ZpbmcgJWQgbGVhZGluZyBwYXRobmFtZSBjb21wb25lbnRzIChsaW5lICVkKSIKLW1zZ3N0clswXSAicGjhuqduIMSR4bqndSBkaWZmIGNobyBnaXQgIHRoaeG6v3UgdGjDtG5nIHRpbiB0w6puIHThuq1wIHRpbiBraGkgZ+G7oSBi4buPIMSRaSAlZCB0cm9uZyB0aMOgbmggcGjhuqduIGThuqtuIMSR4bqndSB0w6puIGPhu6dhIMSRxrDhu51uZyBk4bqrbiAoZMOybmcgJWQpIgotbXNnc3RyWzFdICJwaOG6p24gxJHhuqd1IGRpZmYgY2hvIGdpdCAgdGhp4bq/dSB0aMO0bmcgdGluIHTDqm4gdOG6rXAgdGluIGtoaSBn4buhIGLhu48gxJFpICVkIHRyb25nIHRow6BuaCBwaOG6p24gZOG6q24gxJHhuqd1IHTDqm4gY+G7p2EgxJHGsOG7nW5nIGThuqtuIChkw7JuZyAlZCkiCittc2dpZCAiIgorImdpdCBkaWZmIGhlYWRlciBsYWNrcyBmaWxlbmFtZSBpbmZvcm1hdGlvbiB3aGVuIHJlbW92aW5nICVkIGxlYWRpbmcgcGF0aG5hbWUgIgorImNvbXBvbmVudCAobGluZSAlZCkiCittc2dpZF9wbHVyYWwgIiIKKyJnaXQgZGlmZiBoZWFkZXIgbGFja3MgZmlsZW5hbWUgaW5mb3JtYXRpb24gd2hlbiByZW1vdmluZyAlZCBsZWFkaW5nIHBhdGhuYW1lICIKKyJjb21wb25lbnRzIChsaW5lICVkKSIKK21zZ3N0clswXSAiIgorInBo4bqnbiDEkeG6p3UgZGlmZiBjaG8gZ2l0ICB0aGnhur91IHRow7RuZyB0aW4gdMOqbiB04bqtcCB0aW4ga2hpIGfhu6EgYuG7jyDEkWkgJWQgdHJvbmcgIgorInRow6BuaCBwaOG6p24gZOG6q24gxJHhuqd1IHTDqm4gY+G7p2EgxJHGsOG7nW5nIGThuqtuIChkw7JuZyAlZCkiCittc2dzdHJbMV0gIiIKKyJwaOG6p24gxJHhuqd1IGRpZmYgY2hvIGdpdCAgdGhp4bq/dSB0aMO0bmcgdGluIHTDqm4gdOG6rXAgdGluIGtoaSBn4buhIGLhu48gxJFpICVkIHRyb25nICIKKyJ0aMOgbmggcGjhuqduIGThuqtuIMSR4bqndSB0w6puIGPhu6dhIMSRxrDhu51uZyBk4bqrbiAoZMOybmcgJWQpIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTYyOAorIzogYnVpbHRpbi9hcHBseS5jOjE2NTYKIG1zZ2lkICJuZXcgZmlsZSBkZXBlbmRzIG9uIG9sZCBjb250ZW50cyIKIG1zZ3N0ciAidOG6rXAgdGluIG3hu5tpIHBo4bulIHRodeG7mWMgdsOgbyBu4buZaSBkdW5nIGPFqSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE2MzAKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU4CiBtc2dpZCAiZGVsZXRlZCBmaWxlIHN0aWxsIGhhcyBjb250ZW50cyIKIG1zZ3N0ciAidOG6rXAgdGluIMSRw6MgeMOzYSB24bqrbiBjw7JuIG7hu5lpIGR1bmciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU2CisjOiBidWlsdGluL2FwcGx5LmM6MTY4NAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3JydXB0IHBhdGNoIGF0IGxpbmUgJWQiCiBtc2dzdHIgIm1p4bq/bmcgdsOhIGjhu49uZyB04bqhaSBkw7JuZyAlZCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE2OTIKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNzIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIm5ldyBmaWxlICVzIGRlcGVuZHMgb24gb2xkIGNvbnRlbnRzIgogbXNnc3RyICJ04bqtcCB0aW4gbeG7m2kgJXMgcGjhu6UgdGh14buZYyB2w6BvIG7hu5lpIGR1bmcgY8WpIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTY5NAorIzogYnVpbHRpbi9hcHBseS5jOjE3MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZGVsZXRlZCBmaWxlICVzIHN0aWxsIGhhcyBjb250ZW50cyIKIG1zZ3N0ciAidOG6rXAgdGluIMSRw6MgeMOzYSAlcyB24bqrbiBjw7JuIG7hu5lpIGR1bmciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNjk3CisjOiBidWlsdGluL2FwcGx5LmM6MTcyNQogIywgYy1mb3JtYXQKIG1zZ2lkICIqKiB3YXJuaW5nOiBmaWxlICVzIGJlY29tZXMgZW1wdHkgYnV0IGlzIG5vdCBkZWxldGVkIgogbXNnc3RyICIqKiBj4bqjbmggYsOhbzogdOG6rXAgdGluICVzIHRy4bufIG7Dqm4gdHLhu5FuZyBy4buXbmcgbmjGsG5nIGtow7RuZyBi4buLIHjDs2EiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxODQzCisjOiBidWlsdGluL2FwcGx5LmM6MTg3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3JydXB0IGJpbmFyeSBwYXRjaCBhdCBsaW5lICVkOiAlLipzIgogbXNnc3RyICJtaeG6v25nIHbDoSDEkeG7i25oIGThuqFuZyBuaOG7iyBwaMOibiBzYWkgaOG7j25nIHThuqFpIGTDsm5nICVkOiAlLipzIgogCiAjLiB0aGVyZSBoYXMgdG8gYmUgb25lIGh1bmsgKGZvcndhcmQgaHVuaykKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxODcyCisjOiBidWlsdGluL2FwcGx5LmM6MTkwMAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlY29nbml6ZWQgYmluYXJ5IHBhdGNoIGF0IGxpbmUgJWQiCiBtc2dzdHIgIm1p4bq/bmcgdsOhIMSR4buLbmggZOG6oW5nIG5o4buLIHBow6JuIGtow7RuZyDEkcaw4bujYyBuaOG6rW4gcmEgdOG6oWkgZMOybmcgJWQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxOTU4CisjOiBidWlsdGluL2FwcGx5LmM6MTk4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRjaCB3aXRoIG9ubHkgZ2FyYmFnZSBhdCBsaW5lICVkIgotbXNnc3RyICJ2w6EgY2jhu4kgduG7m2kgJ2dhcmJhZ2UnIHThuqFpIGTDsm5nICVkIgorbXNnc3RyICJ2w6EgY2jhu4kgduG7m2kg4oCcZ2FyYmFnZeKAnSB04bqhaSBkw7JuZyAlZCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjIwNDgKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyMDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byByZWFkIHN5bWxpbmsgJXMiCiBtc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgbGnDqm4ga+G6v3QgdMaw4bujbmcgdHLGsG5nICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjA1MgorIzogYnVpbHRpbi9hcHBseS5jOjIwODAKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIG9wZW4gb3IgcmVhZCAlcyIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIG3hu58gxJHhu4MgxJHhu41jIGhheSBnaGkgJXMiCittc2dzdHIgImtow7RuZyB0aOG7gyBt4bufIGhheSDEkeG7jWMgJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyMTIzCi1tc2dpZCAib29wcyIKLW1zZ3N0ciAiw7RpPyIKLQotIzogYnVpbHRpbi9hcHBseS5jOjI2NDUKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyNjg4CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgc3RhcnQgb2YgbGluZTogJyVjJyIKLW1zZ3N0ciAic2FpIGto4bufaSDEkeG6p3UgZMOybmc6ICclYyciCittc2dzdHIgInNhaSBraOG7n2kgxJHhuqd1IGTDsm5nOiDigJwlY+KAnSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI3NjMKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkh1bmsgIyVkIHN1Y2NlZWRlZCBhdCAlZCAob2Zmc2V0ICVkIGxpbmUpLiIKIG1zZ2lkX3BsdXJhbCAiSHVuayAjJWQgc3VjY2VlZGVkIGF0ICVkIChvZmZzZXQgJWQgbGluZXMpLiIKIG1zZ3N0clswXSAiS2jhu5FpIGThu68gbGnhu4d1ICMlZCB0aMOgbmggY8O0bmcgdOG6oWkgJWQgKG9mZnNldCAlZCBkw7JuZykuIgogbXNnc3RyWzFdICJLaOG7kWkgZOG7ryBsaeG7h3UgIyVkIHRow6BuaCBjw7RuZyB04bqhaSAlZCAob2Zmc2V0ICVkIGTDsm5nKS4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyNzc1CisjOiBidWlsdGluL2FwcGx5LmM6MjgxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb250ZXh0IHJlZHVjZWQgdG8gKCVsZC8lbGQpIHRvIGFwcGx5IGZyYWdtZW50IGF0ICVkIgotbXNnc3RyICJO4buZaSBkdW5nIMSRxrDhu6NjIGdp4bqjbSB4deG7kW5nICglbGQvJWxkKSDEkeG7gyDDoXAgZOG7pW5nIG3huqNuaCBk4buvIGxp4buHdSB04bqhaSAlZCIKK21zZ3N0ciAiTuG7mWkgZHVuZyBi4buLIGdp4bqjbSB4deG7kW5nICglbGQvJWxkKSDEkeG7gyDDoXAgZOG7pW5nIG3huqNuaCBk4buvIGxp4buHdSB04bqhaSAlZCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI3ODEKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODI0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJ3aGlsZSBzZWFyY2hpbmcgZm9yOlxuIgpAQCAtMTE4NCwzMjAgKzIwNDAsMzI1IEBACiAiVHJvbmcga2hpIMSRYW5nIHTDrG0ga2nhur9tIGNobzpcbiIKICIlLipzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjgwMAorIzogYnVpbHRpbi9hcHBseS5jOjI4NDMKICMsIGMtZm9ybWF0CiBtc2dpZCAibWlzc2luZyBiaW5hcnkgcGF0Y2ggZGF0YSBmb3IgJyVzJyIKLW1zZ3N0ciAidGhp4bq/dSBk4buvIGxp4buHdSBj4bunYSBtaeG6v25nIHbDoSDEkeG7i25oIGThuqFuZyBuaOG7iyBwaMOibiBjaG8gJyVzJyIKK21zZ3N0ciAidGhp4bq/dSBk4buvIGxp4buHdSBj4bunYSBtaeG6v25nIHbDoSDEkeG7i25oIGThuqFuZyBuaOG7iyBwaMOibiBjaG8g4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyOTAzCisjOiBidWlsdGluL2FwcGx5LmM6Mjk0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJiaW5hcnkgcGF0Y2ggZG9lcyBub3QgYXBwbHkgdG8gJyVzJyIKLW1zZ3N0ciAibWnhur9uZyB2w6EgxJHhu4tuaCBk4bqhbmcgbmjhu4sgcGjDom4ga2jDtG5nIMSRxrDhu6NjIMOhcCBk4bulbmcgY2hvICclcyciCittc2dzdHIgIm1p4bq/bmcgdsOhIMSR4buLbmggZOG6oW5nIG5o4buLIHBow6JuIGtow7RuZyDEkcaw4bujYyDDoXAgZOG7pW5nIGNobyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI5MDkKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyOTUyCiAjLCBjLWZvcm1hdAogbXNnaWQgImJpbmFyeSBwYXRjaCB0byAnJXMnIGNyZWF0ZXMgaW5jb3JyZWN0IHJlc3VsdCAoZXhwZWN0aW5nICVzLCBnb3QgJXMpIgotbXNnc3RyICJ2w6Egbmjhu4sgcGjDom4gY2hvICclcycgdOG6oW8gcmEga+G6v3QgcXXhuqMga2jDtG5nIGNow61uaCB4w6FjICjEkWFuZyBjaOG7nSAlcywgxJHDoyBuaOG6rW4gJXMpIgorbXNnc3RyICIiCisidsOhIG5o4buLIHBow6JuIGNobyDigJwlc+KAnSB04bqhbyByYSBr4bq/dCBxdeG6oyBraMO0bmcgY2jDrW5oIHjDoWMgKG1vbmcgY2jhu50gJXMsIGzhuqFpIG5o4bqtbiAiCisiJXMpIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjkzMAorIzogYnVpbHRpbi9hcHBseS5jOjI5NzMKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0Y2ggZmFpbGVkOiAlczolbGQiCiBtc2dzdHIgInbDoSBn4bq3cCBs4buXaTogJXM6JWxkIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzA0NQorIzogYnVpbHRpbi9hcHBseS5jOjMwOTUKICMsIGMtZm9ybWF0Ci1tc2dpZCAicGF0Y2ggJXMgaGFzIGJlZW4gcmVuYW1lZC9kZWxldGVkIgotbXNnc3RyICJtaeG6v25nIHbDoSAlcyDEkcOjIGLhu4sgeMOzYS/EkeG7lWkgdMOqbiIKK21zZ2lkICJjYW5ub3QgY2hlY2tvdXQgJXMiCittc2dzdHIgImtow7RuZyB0aOG7gyBcImNoZWNrb3V0XCIgJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMDUyCi0jOiBidWlsdGluL2FwcGx5LmM6MzA2OQorIzogYnVpbHRpbi9hcHBseS5jOjMxNDAgYnVpbHRpbi9hcHBseS5jOjMxNDkgYnVpbHRpbi9hcHBseS5jOjMxOTMKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVhZCBvZiAlcyBmYWlsZWQiCiBtc2dzdHIgIsSR4buNYyAlcyBn4bq3cCBs4buXaSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMwODQKLW1zZ2lkICJyZW1vdmFsIHBhdGNoIGxlYXZlcyBmaWxlIGNvbnRlbnRzIgotbXNnc3RyICJsb+G6oWkgYuG7jyBtaeG6v25nIHbDoSDEkeG7gyBs4bqhaSBu4buZaSBkdW5nIHThuq1wIHRpbiIKLQotIzogYnVpbHRpbi9hcHBseS5jOjMxMDUKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMTczIGJ1aWx0aW4vYXBwbHkuYzozMzk1CiAjLCBjLWZvcm1hdAotbXNnaWQgIiVzOiBhbHJlYWR5IGV4aXN0cyBpbiB3b3JraW5nIGRpcmVjdG9yeSIKLW1zZ3N0ciAiJXM6IMSRw6Mgc+G6tW4gY8OzIHRyb25nIHRoxrAgbeG7pWMgxJFhbmcgbMOgbSB2aeG7h2MiCittc2dpZCAicGF0aCAlcyBoYXMgYmVlbiByZW5hbWVkL2RlbGV0ZWQiCittc2dzdHIgIsSRxrDhu51uZyBk4bqrbiAlcyDEkcOjIGLhu4sgeMOzYS/EkeG7lWkgdMOqbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMxNDMKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiJXM6IGhhcyBiZWVuIGRlbGV0ZWQvcmVuYW1lZCIKLW1zZ3N0ciAiJXM6IMSRw6MgxJHGsOG7o2MgeMOzYS90aGF5LXTDqm4iCi0KLSM6IGJ1aWx0aW4vYXBwbHkuYzozMTQ4Ci0jOiBidWlsdGluL2FwcGx5LmM6MzE3OQotIywgYy1mb3JtYXQKLW1zZ2lkICIlczogJXMiCi1tc2dzdHIgIiVzOiAlcyIKLQotIzogYnVpbHRpbi9hcHBseS5jOjMxNTkKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMjU0IGJ1aWx0aW4vYXBwbHkuYzozNDA5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBkb2VzIG5vdCBleGlzdCBpbiBpbmRleCIKIG1zZ3N0ciAiJXM6IGtow7RuZyB04buTbiB04bqhaSB0cm9uZyBi4bqjbmcgbeG7pWMgbOG7pWMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMTczCisjOiBidWlsdGluL2FwcGx5LmM6MzI1OCBidWlsdGluL2FwcGx5LmM6MzQwMSBidWlsdGluL2FwcGx5LmM6MzQyMworIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMiCittc2dzdHIgIiVzOiAlcyIKKworIzogYnVpbHRpbi9hcHBseS5jOjMyNjMgYnVpbHRpbi9hcHBseS5jOjM0MTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGRvZXMgbm90IG1hdGNoIGluZGV4IgogbXNnc3RyICIlczoga2jDtG5nIGto4bubcCB0cm9uZyBt4bulYyBs4bulYyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMxOTAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMzY1Cittc2dpZCAicmVtb3ZhbCBwYXRjaCBsZWF2ZXMgZmlsZSBjb250ZW50cyIKK21zZ3N0ciAibG/huqFpIGLhu48gbWnhur9uZyB2w6EgxJHhu4MgbOG6oWkgbuG7mWkgZHVuZyB04bqtcCB0aW4iCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNDM0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB3cm9uZyB0eXBlIgogbXNnc3RyICIlczogc2FpIGtp4buDdSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMxOTIKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNDM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGhhcyB0eXBlICVvLCBleHBlY3RlZCAlbyIKIG1zZ3N0ciAiJXMgY8OzIGtp4buDdSAlbywgbW9uZyBjaOG7nSAlbyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyNDcKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTM3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBhbHJlYWR5IGV4aXN0cyBpbiBpbmRleCIKIG1zZ3N0ciAiJXM6IMSRw6MgY8OzIHThu6sgdHLGsOG7m2MgdHJvbmcgYuG6o25nIG3hu6VjIGzhu6VjIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzI2NworIzogYnVpbHRpbi9hcHBseS5jOjM1NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGFscmVhZHkgZXhpc3RzIGluIHdvcmtpbmcgZGlyZWN0b3J5IgorbXNnc3RyICIlczogxJHDoyBz4bq1biBjw7MgdHJvbmcgdGjGsCBt4bulYyDEkWFuZyBsw6BtIHZp4buHYyIKKworIzogYnVpbHRpbi9hcHBseS5jOjM1NjAKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IG1vZGUgKCVvKSBvZiAlcyBkb2VzIG5vdCBtYXRjaCBvbGQgbW9kZSAoJW8pIgogbXNnc3RyICJjaOG6vyDEkeG7mSBt4bubaSAoJW8pIGPhu6dhICVzIGtow7RuZyBraOG7m3AgduG7m2kgY2jhur8gxJHhu5kgY8WpICglbykiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMjcyCisjOiBidWlsdGluL2FwcGx5LmM6MzU2NQogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgbW9kZSAoJW8pIG9mICVzIGRvZXMgbm90IG1hdGNoIG9sZCBtb2RlICglbykgb2YgJXMiCiBtc2dzdHIgImNo4bq/IMSR4buZIG3hu5tpICglbykgY+G7p2EgJXMga2jDtG5nIGto4bubcCB24bubaSBjaOG6vyDEkeG7mSBjxakgKCVvKSBj4bunYSAlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyODAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTczCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBwYXRjaCBkb2VzIG5vdCBhcHBseSIKIG1zZ3N0ciAiJXM6IG1p4bq/bmcgdsOhIGtow7RuZyDEkcaw4bujYyDDoXAgZOG7pW5nIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzI5MworIzogYnVpbHRpbi9hcHBseS5jOjM1ODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2hlY2tpbmcgcGF0Y2ggJXMuLi4iCiBtc2dzdHIgIsSQYW5nIGtp4buDbSB0cmEgbWnhur9uZyB2w6EgJXMuLi4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMzQ4Ci0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjEyCi0jOiBidWlsdGluL3Jlc2V0LmM6MTU4CisjOiBidWlsdGluL2FwcGx5LmM6MzY3OSBidWlsdGluL2NoZWNrb3V0LmM6MjE2IGJ1aWx0aW4vcmVzZXQuYzoxMjQKICMsIGMtZm9ybWF0CiBtc2dpZCAibWFrZV9jYWNoZV9lbnRyeSBmYWlsZWQgZm9yIHBhdGggJyVzJyIKLW1zZ3N0ciAibWFrZV9jYWNoZV9lbnRyeSBn4bq3cCBs4buXaSDEkeG7kWkgduG7m2kgxJHGsOG7nW5nIGThuqtuICclcyciCittc2dzdHIgIm1ha2VfY2FjaGVfZW50cnkgZ+G6t3AgbOG7l2kgxJHhu5FpIHbhu5tpIMSRxrDhu51uZyBk4bqrbiDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM0OTEKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODIyCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byByZW1vdmUgJXMgZnJvbSBpbmRleCIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGfhu6EgYuG7jyAlcyB04burIG3hu6VjIGzhu6VjIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzUxOAorIzogYnVpbHRpbi9hcHBseS5jOjM4NTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29ycnVwdCBwYXRjaCBmb3Igc3VicHJvamVjdCAlcyIKIG1zZ3N0ciAibWnhur9uZyB2w6Egc2FpIGjhu49uZyBjaG8gZOG7sSDDoW4gY29uIChzdWJwcm9qZWN0KSAlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1MjIKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODU0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBzdGF0IG5ld2x5IGNyZWF0ZWQgZmlsZSAnJXMnIgogbXNnc3RyICJraMO0bmcgdGjhu4MgbOG6pXkgdHLhuqFuZyB0aMOhaSB24buBIHThuq1wIHRpbiAlcyBt4bubaSBoxqFuIMSRw6MgxJHGsOG7o2MgdOG6oW8iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTI3CisjOiBidWlsdGluL2FwcGx5LmM6Mzg1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlIGJhY2tpbmcgc3RvcmUgZm9yIG5ld2x5IGNyZWF0ZWQgZmlsZSAlcyIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIHThuqFvICdiYWNraW5nIHN0b3JlJyBjaG8gdOG6rXAgdGluIMSRxrDhu6NjIHThuqFvIG3hu5tpIGjGoW4gJXMiCittc2dzdHIgImtow7RuZyB0aOG7gyB04bqhbyDigJxiYWNraW5nIHN0b3Jl4oCdIGNobyB04bqtcCB0aW4gxJHGsOG7o2MgdOG6oW8gbeG7m2kgaMahbiAlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1MzAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODYyIGJ1aWx0aW4vYXBwbHkuYzozOTcwCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBhZGQgY2FjaGUgZW50cnkgZm9yICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgdGjDqm0gbeG7pWMgbmjhu5sgdOG6oW0gY2hvICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzU2MworIzogYnVpbHRpbi9hcHBseS5jOjM4OTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2xvc2luZyBmaWxlICclcyciCi1tc2dzdHIgIsSRYW5nIMSRw7NuZyB04bqtcCB0aW4gJyVzJyIKK21zZ3N0ciAixJFhbmcgxJHDs25nIHThuq1wIHRpbiDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM2MTIKKyM6IGJ1aWx0aW4vYXBwbHkuYzozOTQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byB3cml0ZSBmaWxlICclcycgbW9kZSAlbyIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIGdoaSB2w6BvIHThuq1wIHRpbiAnJXMnIGNo4bq/IMSR4buZIChtb2RlKSAlbyIKK21zZ3N0ciAia2jDtG5nIHRo4buDIGdoaSB2w6BvIHThuq1wIHRpbiDigJwlc+KAnSBjaOG6vyDEkeG7mSAobW9kZSkgJW8iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNjY4CisjOiBidWlsdGluL2FwcGx5LmM6NDAzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJBcHBsaWVkIHBhdGNoICVzIGNsZWFubHkuIgogbXNnc3RyICLEkMOjIMOhcCBk4bulbmcgbWnhur9uZyB2w6AgJXMgbeG7mXQgY8OhY2ggc+G6oWNoIHPhur0uIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzY3NgorIzogYnVpbHRpbi9hcHBseS5jOjQwMzkKIG1zZ2lkICJpbnRlcm5hbCBlcnJvciIKIG1zZ3N0ciAibOG7l2kgbuG7mWkgYuG7mSIKIAogIy4gU2F5IHRoaXMgZXZlbiB3aXRob3V0IC0tdmVyYm9zZQotIzogYnVpbHRpbi9hcHBseS5jOjM2NzkKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFwcGx5aW5nIHBhdGNoICUlcyB3aXRoICVkIHJlamVjdC4uLiIKIG1zZ2lkX3BsdXJhbCAiQXBwbHlpbmcgcGF0Y2ggJSVzIHdpdGggJWQgcmVqZWN0cy4uLiIKIG1zZ3N0clswXSAixJBhbmcgw6FwIGThu6VuZyBtaeG6v25nIHbDoSAlJXMgduG7m2kgJWQgbOG6p24gdOG7qyBjaOG7kWkuLi4iCiBtc2dzdHJbMV0gIsSQYW5nIMOhcCBk4bulbmcgbWnhur9uZyB2w6EgJSVzIHbhu5tpICVkIGzhuqduIHThu6sgY2jhu5FpLi4uIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzY4OQorIzogYnVpbHRpbi9hcHBseS5jOjQwNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAidHJ1bmNhdGluZyAucmVqIGZpbGVuYW1lIHRvICUuKnMucmVqIgogbXNnc3RyICLEkWFuZyBj4bqvdCBj4buldCB0w6puIHThuq1wIHRpbiAucmVqIHRow6BuaCAlLipzLnJlaiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM3MTAKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDczCiAjLCBjLWZvcm1hdAogbXNnaWQgIkh1bmsgIyVkIGFwcGxpZWQgY2xlYW5seS4iCiBtc2dzdHIgIkto4buRaSBuaOG7myAjJWQgxJHGsOG7o2Mgw6FwIGThu6VuZyBn4buNbiBnw6BuZy4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNzEzCisjOiBidWlsdGluL2FwcGx5LmM6NDA3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJSZWplY3RlZCBodW5rICMlZC4iCiBtc2dzdHIgImh1bmsgIyVkIGLhu4sgdOG7qyBjaOG7kWkuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzg0NAorIzogYnVpbHRpbi9hcHBseS5jOjQyMjYKIG1zZ2lkICJ1bnJlY29nbml6ZWQgaW5wdXQiCiBtc2dzdHIgImtow7RuZyB0aOG7q2Egbmjhuq1uIMSR4bqndSB2w6BvIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzg1NQorIzogYnVpbHRpbi9hcHBseS5jOjQyMzcKIG1zZ2lkICJ1bmFibGUgdG8gcmVhZCBpbmRleCBmaWxlIgogbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu41jIHThuq1wIHRpbiBsxrB1IGLhuqNuZyBt4bulYyBs4bulYyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5NzAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTczCisjOiBidWlsdGluL2FwcGx5LmM6NDM1NiBidWlsdGluL2FwcGx5LmM6NDM1OSBidWlsdGluL2Nsb25lLmM6OTIKKyM6IGJ1aWx0aW4vZmV0Y2guYzo2MwogbXNnaWQgInBhdGgiCiBtc2dzdHIgIsSRxrDhu51uZy1k4bqrbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5NzEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU3CiBtc2dpZCAiZG9uJ3QgYXBwbHkgY2hhbmdlcyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGF0aCIKIG1zZ3N0ciAia2jDtG5nIMOhcCBk4bulbmcgY8OhYyB0aGF5IMSR4buVaSBraOG7m3AgduG7m2kgxJHGsOG7nW5nIGThuqtuIMSRw6MgY2hvIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk3NAorIzogYnVpbHRpbi9hcHBseS5jOjQzNjAKIG1zZ2lkICJhcHBseSBjaGFuZ2VzIG1hdGNoaW5nIHRoZSBnaXZlbiBwYXRoIgogbXNnc3RyICLDoXAgZOG7pW5nIGPDoWMgdGhheSDEkeG7lWkga2jhu5twIHbhu5tpIMSRxrDhu51uZyBk4bqrbiDEkcOjIGNobyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5NzYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYyCiBtc2dpZCAibnVtIgogbXNnc3RyICJz4buRIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk3NworIzogYnVpbHRpbi9hcHBseS5jOjQzNjMKIG1zZ2lkICJyZW1vdmUgPG51bT4gbGVhZGluZyBzbGFzaGVzIGZyb20gdHJhZGl0aW9uYWwgZGlmZiBwYXRocyIKIG1zZ3N0ciAiZ+G7oSBi4buPIDxz4buRPiBwaOG6p24gZOG6q24gxJHhuqd1IChzbGFzaGUpIHThu6sgxJHGsOG7nW5nIGThuqtuIGRpZmYgY+G7lSDEkWnhu4NuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk4MAorIzogYnVpbHRpbi9hcHBseS5jOjQzNjYKIG1zZ2lkICJpZ25vcmUgYWRkaXRpb25zIG1hZGUgYnkgdGhlIHBhdGNoIgogbXNnc3RyICJs4budIMSRaSBwaOG6p24gcGjhu6UgdGjDqm0gdOG6oW8gcmEgYuG7n2kgbWnhur9uZyB2w6EiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTgyCisjOiBidWlsdGluL2FwcGx5LmM6NDM2OAogbXNnaWQgImluc3RlYWQgb2YgYXBwbHlpbmcgdGhlIHBhdGNoLCBvdXRwdXQgZGlmZnN0YXQgZm9yIHRoZSBpbnB1dCIKLW1zZ3N0ciAidGhheSB2w6wgw6FwIGThu6VuZyBt4buZdCBtaeG6v25nIHbDoSwga+G6v3QgeHXhuqV0IGvhur90IHF14bqjIHThu6sgbOG7h25oIGRpZmZzdGF0IGNobyDEkeG6p3UgcmEiCittc2dzdHIgIiIKKyJ0aGF5IHbDrCDDoXAgZOG7pW5nIG3hu5l0IG1p4bq/bmcgdsOhLCBr4bq/dCB4deG6pXQga+G6v3QgcXXhuqMgdOG7qyBs4buHbmggZGlmZnN0YXQgY2hvIMSR4bqndSByYSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5ODYKLW1zZ2lkICJzaG93cyBudW1iZXIgb2YgYWRkZWQgYW5kIGRlbGV0ZWQgbGluZXMgaW4gZGVjaW1hbCBub3RhdGlvbiIKLW1zZ3N0ciAiaGnhu4NuIHRo4buLIHPhu5EgbMaw4bujbmcgY8OhYyBkw7JuZyDEkcaw4bujYyB0aMOqbSB2w6BvIHbDoCB4w7NhIMSRaSB0aGVvIGvDvSBoaeG7h3UgdGjhuq1wIHBow6JuIgorIzogYnVpbHRpbi9hcHBseS5jOjQzNzIKK21zZ2lkICJzaG93IG51bWJlciBvZiBhZGRlZCBhbmQgZGVsZXRlZCBsaW5lcyBpbiBkZWNpbWFsIG5vdGF0aW9uIgorbXNnc3RyICIiCisiaGnhu4NuIHRo4buLIHPhu5EgbMaw4bujbmcgY8OhYyBkw7JuZyDEkcaw4bujYyB0aMOqbSB2w6BvIHbDoCB4w7NhIMSRaSB0aGVvIGvDvSBoaeG7h3UgdGjhuq1wIHBow6JuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk4OAorIzogYnVpbHRpbi9hcHBseS5jOjQzNzQKIG1zZ2lkICJpbnN0ZWFkIG9mIGFwcGx5aW5nIHRoZSBwYXRjaCwgb3V0cHV0IGEgc3VtbWFyeSBmb3IgdGhlIGlucHV0IgogbXNnc3RyICJ0aGF5IHbDrCDDoXAgZOG7pW5nIG3hu5l0IG1p4bq/bmcgdsOhLCBr4bq/dCB4deG6pXQga+G6v3QgcXXhuqMgY2hvIMSR4bqndSB2w6BvIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk5MAorIzogYnVpbHRpbi9hcHBseS5jOjQzNzYKIG1zZ2lkICJpbnN0ZWFkIG9mIGFwcGx5aW5nIHRoZSBwYXRjaCwgc2VlIGlmIHRoZSBwYXRjaCBpcyBhcHBsaWNhYmxlIgogbXNnc3RyICJ0aGF5IHbDrCDDoXAgZOG7pW5nIG1p4bq/bmcgdsOhLCBow6N5IHhlbSB4ZW0gbWnhur9uZyB2w6EgY8OzIHRow61jaCBo4bujcCBraMO0bmciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTkyCisjOiBidWlsdGluL2FwcGx5LmM6NDM3OAogbXNnaWQgIm1ha2Ugc3VyZSB0aGUgcGF0Y2ggaXMgYXBwbGljYWJsZSB0byB0aGUgY3VycmVudCBpbmRleCIKIG1zZ3N0ciAiaMOjeSBjaOG6r2MgY2jhuq9uIGzDoCBtaeG6v25nIHbDoSB0aMOtY2ggaOG7o3AgduG7m2kgYuG6o25nIG3hu6VjIGzhu6VjIGhp4buHbiBow6BuaCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5OTQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzgwCiBtc2dpZCAiYXBwbHkgYSBwYXRjaCB3aXRob3V0IHRvdWNoaW5nIHRoZSB3b3JraW5nIHRyZWUiCiBtc2dzdHIgIsOhcCBk4bulbmcgbeG7mXQgbWnhur9uZyB2w6EgbcOgIGtow7RuZyDEkeG7mW5nIGNo4bqhbSDEkeG6v24gY8OieSBsw6BtIHZp4buHYyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5OTYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzgyCiBtc2dpZCAiYWxzbyBhcHBseSB0aGUgcGF0Y2ggKHVzZSB3aXRoIC0tc3RhdC8tLXN1bW1hcnkvLS1jaGVjaykiCi1tc2dzdHIgIsSR4buTbmcgdGjhu51pIMOhcCBk4bulbmcgbWnhur9uZyB2w6EgKHPhu60gZOG7pW5nIHbhu5tpIHTDuXkgY2jhu41uIC0tc3RhdC8tLXN1bW1hcnkvLS1jaGVjaykiCittc2dzdHIgIiIKKyLEkeG7k25nIHRo4budaSDDoXAgZOG7pW5nIG1p4bq/bmcgdsOhIChkw7luZyB24bubaSB0w7l5IGNo4buNbiAtLXN0YXQvLS1zdW1tYXJ5Ly0tY2hlY2spIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk5OAorIzogYnVpbHRpbi9hcHBseS5jOjQzODQKK21zZ2lkICJhdHRlbXB0IHRocmVlLXdheSBtZXJnZSBpZiBhIHBhdGNoIGRvZXMgbm90IGFwcGx5IgorbXNnc3RyICJ0aOG7rSBow7JhIHRy4buZbiBraeG7g3UgdGhyZWUtd2F5IG7hur91IHZp4buHYyB2w6Ega2jDtG5nIHRo4buDIHRo4buxYyBoaeG7h24gxJHGsOG7o2MiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg2CiBtc2dpZCAiYnVpbGQgYSB0ZW1wb3JhcnkgaW5kZXggYmFzZWQgb24gZW1iZWRkZWQgaW5kZXggaW5mb3JtYXRpb24iCi1tc2dzdHIgInjDonkgZOG7sW5nIGLhuqNuZyBt4bulYyBs4bulYyB04bqhbSB0aOG7nWkgdHLDqm4gY8ahIHPhu58gdGjDtG5nIHRpbiBi4bqjbmcgbeG7pWMgbOG7pWMgxJHGsOG7o2MgbmjDum5nIgorbXNnc3RyICIiCisieMOieSBk4buxbmcgYuG6o25nIG3hu6VjIGzhu6VjIHThuqFtIHRo4budaSB0csOqbiBjxqEgc+G7nyB0aMO0bmcgdGluIGLhuqNuZyBt4bulYyBs4bulYyDEkcaw4bujYyBuaMO6bmciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDAwCisjOiBidWlsdGluL2FwcGx5LmM6NDM4OCBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTk3IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NTYKIG1zZ2lkICJwYXRocyBhcmUgc2VwYXJhdGVkIHdpdGggTlVMIGNoYXJhY3RlciIKIG1zZ3N0ciAiY8OhYyDEkcaw4budbmcgZOG6q24gYuG7iyBuZ8SDbiBjw6FjaCBi4bufaSBrw70gdOG7sSBOVUxMIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAwMworIzogYnVpbHRpbi9hcHBseS5jOjQzOTEKIG1zZ2lkICJlbnN1cmUgYXQgbGVhc3QgPG4+IGxpbmVzIG9mIGNvbnRleHQgbWF0Y2giCiBtc2dzdHIgIsSR4bqjbSBi4bqjbyBy4bqxbmcgY8OzIMOtdCBuaOG6pXQgPG4+IGTDsm5nIG7hu5lpIGR1bmcga2jhu5twIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAwNAorIzogYnVpbHRpbi9hcHBseS5jOjQzOTIKIG1zZ2lkICJhY3Rpb24iCiBtc2dzdHIgImjDoG5oIMSR4buZbmciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDA1CisjOiBidWlsdGluL2FwcGx5LmM6NDM5MwogbXNnaWQgImRldGVjdCBuZXcgb3IgbW9kaWZpZWQgbGluZXMgdGhhdCBoYXZlIHdoaXRlc3BhY2UgZXJyb3JzIgogbXNnc3RyICJ0w6xtIHRo4bqleSBt4buZdCBkw7JuZyBt4bubaSBob+G6t2MgYuG7iyBz4butYSDEkeG7lWkgbcOgIG7DsyBjw7MgbOG7l2kgZG8ga2hv4bqjbmcgdHLhuq9uZyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMDgKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDExCisjOiBidWlsdGluL2FwcGx5LmM6NDM5NiBidWlsdGluL2FwcGx5LmM6NDM5OQogbXNnaWQgImlnbm9yZSBjaGFuZ2VzIGluIHdoaXRlc3BhY2Ugd2hlbiBmaW5kaW5nIGNvbnRleHQiCiBtc2dzdHIgImzhu50gxJFpIHPhu7EgdGhheSDEkeG7lWkgZG8ga2hv4bqjbmcgdHLhuq9uZyBraGkgcXXDqXQgbuG7mWkgZHVuZyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMTQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDAyCiBtc2dpZCAiYXBwbHkgdGhlIHBhdGNoIGluIHJldmVyc2UiCiBtc2dzdHIgIsOhcCBk4bulbmcgbWnhur9uZyB2w6EgdGhlbyBjaGnhu4F1IG5nxrDhu6NjIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAxNgorIzogYnVpbHRpbi9hcHBseS5jOjQ0MDQKIG1zZ2lkICJkb24ndCBleHBlY3QgYXQgbGVhc3Qgb25lIGxpbmUgb2YgY29udGV4dCIKIG1zZ3N0ciAixJHhu6tuZyBoeSB24buNbmcgY8OzIMOtdCBuaOG6pXQgbeG7mXQgZMOybmcgbuG7mWkgZHVuZyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMTgKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDA2CiBtc2dpZCAibGVhdmUgdGhlIHJlamVjdGVkIGh1bmtzIGluIGNvcnJlc3BvbmRpbmcgKi5yZWogZmlsZXMiCiBtc2dzdHIgIsSR4buDIGzhuqFpIGto4buRaSBk4buvIGxp4buHdSBi4buLIHThu6sgY2jhu5FpIHRyb25nIGPDoWMgdOG6rXAgdGluICoucmVqIHTGsMahbmcg4bupbmciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDIwCisjOiBidWlsdGluL2FwcGx5LmM6NDQwOAogbXNnaWQgImFsbG93IG92ZXJsYXBwaW5nIGh1bmtzIgogbXNnc3RyICJjaG8gcGjDqXAgY2jhu5NuZyBraOG7kWkgbmjhu5siCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDIxCi1tc2dpZCAiYmUgdmVyYm9zZSIKLW1zZ3N0ciAiY2hpIHRp4bq/dCIKLQotIzogYnVpbHRpbi9hcHBseS5jOjQwMjMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDExCiBtc2dpZCAidG9sZXJhdGUgaW5jb3JyZWN0bHkgZGV0ZWN0ZWQgbWlzc2luZyBuZXctbGluZSBhdCB0aGUgZW5kIG9mIGZpbGUiCi1tc2dzdHIgImR1bmcgc2FpIGtow7RuZyBjaMOtbmggeMOhYyDEkcOjIHTDrG0gdGjhuqV5IHRoaeG6v3UgZMOybmcgbeG7m2kgdOG6oWkgY3Xhu5FpIHThuq1wIHRpbiIKK21zZ3N0ciAiIgorIsSRw6MgZMOyIHTDrG0gdGjhuqV5IGR1bmcgc2FpIGtow7RuZyBjaMOtbmggeMOhYyB0aGnhur91IGTDsm5nIG3hu5tpIHThuqFpIGN14buRaSB04bqtcCB0aW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDI2CisjOiBidWlsdGluL2FwcGx5LmM6NDQxNAogbXNnaWQgImRvIG5vdCB0cnVzdCB0aGUgbGluZSBjb3VudHMgaW4gdGhlIGh1bmsgaGVhZGVycyIKIG1zZ3N0ciAia2jDtG5nIHRpbiBz4buRIGzGsOG7o25nIGTDsm5nIHRyb25nIHBo4bqnbiDEkeG6p3Uga2jhu5FpIGThu68gbGnhu4d1IgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAyOAorIzogYnVpbHRpbi9hcHBseS5jOjQ0MTYKIG1zZ2lkICJyb290IgogbXNnc3RyICJyb290IgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAyOQorIzogYnVpbHRpbi9hcHBseS5jOjQ0MTcKIG1zZ2lkICJwcmVwZW5kIDxyb290PiB0byBhbGwgZmlsZW5hbWVzIgogbXNnc3RyICJ0cmVvIHRow6ptIDxyb290PiB2w6BvIHThuqV0IGPhuqMgY8OhYyB0w6puIHThuq1wIHRpbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwNTAKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDM5Cittc2dpZCAiLS0zd2F5IG91dHNpZGUgYSByZXBvc2l0b3J5IgorbXNnc3RyICItLTN3YXkg4bufIG5nb8OgaSBt4buZdCBraG8gY2jhu6lhIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDQ0NwogbXNnaWQgIi0taW5kZXggb3V0c2lkZSBhIHJlcG9zaXRvcnkiCiBtc2dzdHIgIi0taW5kZXgg4bufIG5nb8OgaSBt4buZdCBraG8gY2jhu6lhIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDA1MworIzogYnVpbHRpbi9hcHBseS5jOjQ0NTAKIG1zZ2lkICItLWNhY2hlZCBvdXRzaWRlIGEgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiLS1jYWNoZWQg4bufIG5nb8OgaSBt4buZdCBraG8gY2jhu6lhIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDA2OQorIzogYnVpbHRpbi9hcHBseS5jOjQ0NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2FuJ3Qgb3BlbiBwYXRjaCAnJXMnIgotbXNnc3RyICJraMO0bmcgdGjhu4MgbeG7nyBtaeG6v25nIHbDoSAnJXMnIgorbXNnc3RyICJraMO0bmcgdGjhu4MgbeG7nyBtaeG6v25nIHbDoSDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwODMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDgwCiAjLCBjLWZvcm1hdAogbXNnaWQgInNxdWVsY2hlZCAlZCB3aGl0ZXNwYWNlIGVycm9yIgogbXNnaWRfcGx1cmFsICJzcXVlbGNoZWQgJWQgd2hpdGVzcGFjZSBlcnJvcnMiCiBtc2dzdHJbMF0gIsSRw6MgY2jhuqVtIGThu6l0ICVkIGzhu5dpIGtob+G6o25nIHRy4bqvbmciCiBtc2dzdHJbMV0gIsSRw6MgY2jhuqVtIGThu6l0ICVkIGzhu5dpIGtob+G6o25nIHRy4bqvbmciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDg5Ci0jOiBidWlsdGluL2FwcGx5LmM6NDA5OQorIzogYnVpbHRpbi9hcHBseS5jOjQ0ODYgYnVpbHRpbi9hcHBseS5jOjQ0OTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJWQgbGluZSBhZGRzIHdoaXRlc3BhY2UgZXJyb3JzLiIKIG1zZ2lkX3BsdXJhbCAiJWQgbGluZXMgYWRkIHdoaXRlc3BhY2UgZXJyb3JzLiIKQEAgLTE1MDcsNyArMjM2OCw3IEBACiAjOiBidWlsdGluL2FyY2hpdmUuYzoxNwogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIGFyY2hpdmUgZmlsZSAnJXMnIgotbXNnc3RyICJraMO0bmcgdGjhu4MgdOG6oW8gdOG6rXAgdGluIGtobyAobMawdSB0cuG7rywgbsOpbikgJyVzJyIKK21zZ3N0ciAia2jDtG5nIHRo4buDIHThuqFvIHThuq1wIHRpbiBraG8gKGzGsHUgdHLhu68sIG7DqW4pIOKAnCVz4oCdIgogCiAjOiBidWlsdGluL2FyY2hpdmUuYzoyMAogbXNnaWQgImNvdWxkIG5vdCByZWRpcmVjdCBvdXRwdXQiCkBAIC0xNTIxLDIwNCArMjM4Miw1NDggQEAKIG1zZ2lkICJnaXQgYXJjaGl2ZTogZXhwZWN0ZWQgQUNLL05BSywgZ290IEVPRiIKIG1zZ3N0ciAiZ2l0IGFyY2hpdmU6IG1vbmcgxJHhu6NpIEFDSy9OQUssIG5o4bqtbiBFT0YiCiAKLSM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjYzCisjOiBidWlsdGluL2FyY2hpdmUuYzo2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgYXJjaGl2ZTogTkFDSyAlcyIKIG1zZ3N0ciAiZ2l0IGFyY2hpdmU6IE5BQ0sgJXMiCiAKLSM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjY1CisjOiBidWlsdGluL2FyY2hpdmUuYzo2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZW1vdGUgZXJyb3I6ICVzIgogbXNnc3RyICJs4buXaSBtw6F5IGNo4bunOiAlcyIKIAotIzogYnVpbHRpbi9hcmNoaXZlLmM6NjYKKyM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjY0CiBtc2dpZCAiZ2l0IGFyY2hpdmU6IHByb3RvY29sIGVycm9yIgogbXNnc3RyICJnaXQgYXJjaGl2ZTogbOG7l2kgZ2lhbyB0aOG7qWMiCiAKLSM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjcxCisjOiBidWlsdGluL2FyY2hpdmUuYzo2OAogbXNnaWQgImdpdCBhcmNoaXZlOiBleHBlY3RlZCBhIGZsdXNoIgogbXNnc3RyICJnaXQgYXJjaGl2ZTogxJHDoyBtb25nIGNo4budIG3hu5l0IGZsdXNoIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjE0NAorIzogYnVpbHRpbi9iaXNlY3QtLWhlbHBlci5jOjcKK21zZ2lkICJnaXQgYmlzZWN0LS1oZWxwZXIgLS1uZXh0LWFsbCBbLS1uby1jaGVja291dF0iCittc2dzdHIgImdpdCBiaXNlY3QtLWhlbHBlciAtLW5leHQtYWxsIFstLW5vLWNoZWNrb3V0XSIKKworIzogYnVpbHRpbi9iaXNlY3QtLWhlbHBlci5jOjE3Cittc2dpZCAicGVyZm9ybSAnZ2l0IGJpc2VjdCBuZXh0JyIKK21zZ3N0ciAidGjhu7FjIGhp4buHbiDigJxnaXQgYmlzZWN0IG5leHTigJ0iCisKKyM6IGJ1aWx0aW4vYmlzZWN0LS1oZWxwZXIuYzoxOQorbXNnaWQgInVwZGF0ZSBCSVNFQ1RfSEVBRCBpbnN0ZWFkIG9mIGNoZWNraW5nIG91dCB0aGUgY3VycmVudCBjb21taXQiCittc2dzdHIgIiIKKyJj4bqtcCBuaOG6rXQgQklTRUNUX0hFQUQgdGhheSB2w6wgbOG6pXkgcmEgKGNoZWNraW5nIG91dCkgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSAiCisiaGnhu4duIGjDoG5oIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjUKK21zZ2lkICJnaXQgYmxhbWUgW29wdGlvbnNdIFtyZXYtb3B0c10gW3Jldl0gWy0tXSBmaWxlIgorbXNnc3RyICJnaXQgYmxhbWUgW2PDoWMtdMO5eS1jaOG7jW5dIFtyZXYtb3B0c10gW3Jldl0gWy0tXSB04bqtcC10aW4iCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzozMAorbXNnaWQgIltyZXYtb3B0c10gYXJlIGRvY3VtZW50ZWQgaW4gZ2l0LXJldi1saXN0KDEpIgorbXNnc3RyICJbcmV2LW9wdHNdIMSRxrDhu6NjIG3DtCB04bqjIHRyb25nIGdpdC1yZXYtbGlzdCgxKSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTUKK21zZ2lkICJTaG93IGJsYW1lIGVudHJpZXMgYXMgd2UgZmluZCB0aGVtLCBpbmNyZW1lbnRhbGx5IgorbXNnc3RyICJIaeG7g24gdGjhu4sgY8OhYyBt4bulYyDigJxibGFtZeKAnSBuaMawIGzDoCBjaMO6bmcgdGEgdGjhuqV5IGNow7puZywgdMSDbmcgZOG6p24iCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU2Cittc2dpZCAiU2hvdyBibGFuayBTSEEtMSBmb3IgYm91bmRhcnkgY29tbWl0cyAoRGVmYXVsdDogb2ZmKSIKK21zZ3N0ciAiIgorIkhp4buDbiB0aOG7iyBTSEEtMSB0cuG6r25nIGNobyBuaOG7r25nIGzhuqduIGNodXnhu4NuIGdpYW8gYmnDqm4gZ2nhu5tpIChN4bq3YyDEkeG7i25oOiBvZmYpIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM1NworbXNnaWQgIkRvIG5vdCB0cmVhdCByb290IGNvbW1pdHMgYXMgYm91bmRhcmllcyAoRGVmYXVsdDogb2ZmKSIKK21zZ3N0ciAiS2jDtG5nIGNvaSBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gZ+G7kWMgbMOgIGdp4bubaSBo4bqhbiAoTeG6t2MgxJHhu4tuaDogb2ZmKSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTgKK21zZ2lkICJTaG93IHdvcmsgY29zdCBzdGF0aXN0aWNzIgorbXNnc3RyICJIaeG7g24gdGjhu4sgdGjhu5FuZyBrw6ogY8O0bmcgc+G7qWMgbMOgbSB2aeG7h2MiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU5Cittc2dpZCAiU2hvdyBvdXRwdXQgc2NvcmUgZm9yIGJsYW1lIGVudHJpZXMiCittc2dzdHIgIkhp4buDbiB0aOG7iyBr4bq/dCB4deG6pXQgxJFp4buDbSBz4buRIGPDsyBjw6FjIG3hu6VjIHRpbiDigJxibGFtZeKAnSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjAKK21zZ2lkICJTaG93IG9yaWdpbmFsIGZpbGVuYW1lIChEZWZhdWx0OiBhdXRvKSIKK21zZ3N0ciAiSGnhu4NuIHRo4buLIHTDqm4gdOG6rXAgdGluIGfhu5FjIChN4bq3YyDEkeG7i25oOiBhdXRvKSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjEKK21zZ2lkICJTaG93IG9yaWdpbmFsIGxpbmVudW1iZXIgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIkhp4buDbiB0aOG7iyBz4buRIGTDsm5nIGfhu5FjIChN4bq3YyDEkeG7i25oOiBvZmYpIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2MgorbXNnaWQgIlNob3cgaW4gYSBmb3JtYXQgZGVzaWduZWQgZm9yIG1hY2hpbmUgY29uc3VtcHRpb24iCittc2dzdHIgIkhp4buDbiB0aOG7iyDhu58gxJHhu4tuaCBk4bqhbmcgxJHDoyB0aGnhur90IGvhur8gY2hvIHPhu7EgdGnDqnUgZMO5bmcgYuG6sW5nIG3DoXkiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYzCittc2dpZCAiU2hvdyBwb3JjZWxhaW4gZm9ybWF0IHdpdGggcGVyLWxpbmUgY29tbWl0IGluZm9ybWF0aW9uIgorbXNnc3RyICJIaeG7g24gdGjhu4sgxJHhu4tuaCBk4bqhbmcg4oCccG9yY2VsYWlu4oCdIHbhu5tpIHRow7RuZyB0aW4gY2h1eeG7g24gZ2lhbyBt4buXaSBkw7JuZyIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjQKK21zZ2lkICJVc2UgdGhlIHNhbWUgb3V0cHV0IG1vZGUgYXMgZ2l0LWFubm90YXRlIChEZWZhdWx0OiBvZmYpIgorbXNnc3RyICJEw7luZyBjw7luZyBjaOG6vyDEkeG7mSB4deG6pXQgcmEgdsOzaWdpdC1hbm5vdGF0ZSAoTeG6t2MgxJHhu4tuaDogb2ZmKSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjUKK21zZ2lkICJTaG93IHJhdyB0aW1lc3RhbXAgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIkhp4buDbiB0aOG7iyBk4bqldSB24bq/dCB0aOG7nWkgZ2lhbiBk4bqhbmcgdGjDtCAoTeG6t2MgxJHhu4tuaDogb2ZmKSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjYKK21zZ2lkICJTaG93IGxvbmcgY29tbWl0IFNIQTEgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIkhp4buDbiB0aOG7iyBTSEExIGPhu6dhIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgZOG6oW5nIGTDoGkgKE3hurdjIMSR4buLbmg6IG9mZikiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY3Cittc2dpZCAiU3VwcHJlc3MgYXV0aG9yIG5hbWUgYW5kIHRpbWVzdGFtcCAoRGVmYXVsdDogb2ZmKSIKK21zZ3N0ciAiS2jDtG5nIGhp4buDbiB0aOG7iyB0w6puIHTDoWMgZ2nhuqMgdsOgIGThuqV1IHbhur90IHRo4budaSBnaWFuIChN4bq3YyDEkeG7i25oOiBvZmYpIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2OAorbXNnaWQgIlNob3cgYXV0aG9yIGVtYWlsIGluc3RlYWQgb2YgbmFtZSAoRGVmYXVsdDogb2ZmKSIKK21zZ3N0ciAiSGnhu4NuIHRo4buLIHRoxrAgxJFp4buHbiB04butIGPhu6dhIHTDoWMgZ2nhuqMgdGhheSB2w6wgdMOqbiAoTeG6t2MgxJHhu4tuaDogb2ZmKSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjkKK21zZ2lkICJJZ25vcmUgd2hpdGVzcGFjZSBkaWZmZXJlbmNlcyIKK21zZ3N0ciAiQuG7jyBxdWEgY8OhYyBraMOhYyBiaeG7h3QgZG8ga2hv4bqjbmcgdHLhuq9uZyBnw6J5IHJhIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MAorbXNnaWQgIlNwZW5kIGV4dHJhIGN5Y2xlcyB0byBmaW5kIGJldHRlciBtYXRjaCIKK21zZ3N0ciAiVGnDqnUgdGjhu6UgdGjDqm0gbsSDbmcgdMOgaSBuZ3V5w6puIG3DoXkgbcOzYyDEkeG7gyB0w6xtIGtp4bq/bSB04buRdCBoxqFuIG7hu69hIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MQorbXNnaWQgIlVzZSByZXZpc2lvbnMgZnJvbSA8ZmlsZT4gaW5zdGVhZCBvZiBjYWxsaW5nIGdpdC1yZXYtbGlzdCIKK21zZ3N0ciAiIgorIlPhu60gZOG7pW5nIMSRaeG7g20geMOpdCBkdXnhu4d0IChyZXZpc2lvbikgdOG7qyA8dOG6rXAgdGluPiB0aGF5IHbDrCBn4buNaSDigJxnaXQtcmV2LWxpc3TigJ0iCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcyCittc2dpZCAiVXNlIDxmaWxlPidzIGNvbnRlbnRzIGFzIHRoZSBmaW5hbCBpbWFnZSIKK21zZ3N0ciAiU+G7rSBk4bulbmcgbuG7mWkgZHVuZyBj4bunYSA8dOG6rXAgdGluPiBuaMawIGzDoCDhuqNuaCBjdeG7kWkgY8O5bmciCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzczIGJ1aWx0aW4vYmxhbWUuYzoyMzc0Cittc2dpZCAic2NvcmUiCittc2dzdHIgIsSRaeG7g20gc+G7kSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNzMKK21zZ2lkICJGaW5kIGxpbmUgY29waWVzIHdpdGhpbiBhbmQgYWNyb3NzIGZpbGVzIgorbXNnc3RyICJUw6xtIGPDoWMgYuG6o24gc2FvIGNow6lwIGTDsm5nIHRyb25nIHbDoCBuZ2FuZyBxdWEgdOG6rXAgdGluIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3NAorbXNnaWQgIkZpbmQgbGluZSBtb3ZlbWVudHMgd2l0aGluIGFuZCBhY3Jvc3MgZmlsZXMiCittc2dzdHIgIlTDrG0gY8OhYyBkaSBjaHV54buDbiBkw7JuZyB0cm9uZyB2w6AgbmdhbmcgcXVhIHThuq1wIHRpbiIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNzUKK21zZ2lkICJuLG0iCittc2dzdHIgIm4sbSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNzUKK21zZ2lkICJQcm9jZXNzIG9ubHkgbGluZSByYW5nZSBuLG0sIGNvdW50aW5nIGZyb20gMSIKK21zZ3N0ciAiWOG7rSBsw70gY2jhu4kgZMOybmcgdsO5bmcgbixtLCB0w61uaCB04burIDEiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjQKK21zZ2lkICJnaXQgYnJhbmNoIFtvcHRpb25zXSBbLXIgfCAtYV0gWy0tbWVyZ2VkIHwgLS1uby1tZXJnZWRdIgorbXNnc3RyICJnaXQgYnJhbmNoIFtjw6FjLXTDuXktY2jhu41uXSBbLXIgfCAtYV0gWy0tbWVyZ2VkIHwgLS1uby1tZXJnZWRdIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI1Cittc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1sXSBbLWZdIDxicmFuY2huYW1lPiBbPHN0YXJ0LXBvaW50Pl0iCittc2dzdHIgImdpdCBicmFuY2ggW2PDoWMtdMO5eS1jaOG7jW5dIFstbF0gWy1mXSA8dMOqbi1uaMOhbmg+IFs8xJFp4buDbS3EkeG6p3U+XSIKKworIzogYnVpbHRpbi9icmFuY2guYzoyNgorbXNnaWQgImdpdCBicmFuY2ggW29wdGlvbnNdIFstcl0gKC1kIHwgLUQpIDxicmFuY2huYW1lPi4uLiIKK21zZ3N0ciAiZ2l0IGJyYW5jaCBbY8OhYy10w7l5LWNo4buNbl0gWy1yXSAoLWQgfCAtRCkgPHTDqm4tbmjDoW5oPiAuLi4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjcKK21zZ2lkICJnaXQgYnJhbmNoIFtvcHRpb25zXSAoLW0gfCAtTSkgWzxvbGRicmFuY2g+XSA8bmV3YnJhbmNoPiIKK21zZ3N0ciAiZ2l0IGJyYW5jaCBbY8OhYy10w7l5LWNo4buNbl0gKC1tIHwgLU0pIFs8bmjDoW5oLWPFqT5dIDxuaMOhbmgtbeG7m2k+IgorCisjOiBidWlsdGluL2JyYW5jaC5jOjE1MAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiZGVsZXRpbmcgYnJhbmNoICclcycgdGhhdCBoYXMgYmVlbiBtZXJnZWQgdG9cbiIKICIgICAgICAgICAnJXMnLCBidXQgbm90IHlldCBtZXJnZWQgdG8gSEVBRC4iCiBtc2dzdHIgIiIKLSLEkWFuZyB4w7NhIG5ow6FuaCAnJXMnIG3DoCBuw7MgbOG6oWkgxJHDoyDEkcaw4bujYyBow7JhIHRy4buZbiB2w6BvXG4iCi0iICAgICAgICAgJyVzJywgbmjGsG5nIHbhuqtuIGNoxrBhIMSRxrDhu6NjIGjDsmEgdHLhu5luIHbDoG8gSEVBRC4iCisixJFhbmcgeMOzYSBuaMOhbmgg4oCcJXPigJ0gbcOgIG7DsyBs4bqhaSDEkcOjIMSRxrDhu6NjIGjDsmEgdHLhu5luIHbDoG9cbiIKKyIgICAgICAgICDigJwlc+KAnSwgbmjGsG5nIHbhuqtuIGNoxrBhIMSRxrDhu6NjIGjDsmEgdHLhu5luIHbDoG8gSEVBRC4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MTQ4CisjOiBidWlsdGluL2JyYW5jaC5jOjE1NAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibm90IGRlbGV0aW5nIGJyYW5jaCAnJXMnIHRoYXQgaXMgbm90IHlldCBtZXJnZWQgdG9cbiIKICIgICAgICAgICAnJXMnLCBldmVuIHRob3VnaCBpdCBpcyBtZXJnZWQgdG8gSEVBRC4iCiBtc2dzdHIgIiIKLSJraMO0bmcgeMOzYSBuaMOhbmggJyVzJyBjw6FpIG3DoCBjaMawYSDEkcaw4bujYyBow7JhIHRy4buZbmcgdsOgb1xuIgotIiAgICAgICAgICclcycsIGNobyBkw7kgbMOgIG7DsyDEkcOjIMSRxrDhu6NjIGjDsmEgdHLhu5luIHbDoG8gSEVBRC4iCisia2jDtG5nIHjDs2EgbmjDoW5oIOKAnCVz4oCdIGPDoWkgbcOgIGNoxrBhIMSRxrDhu6NjIGjDsmEgdHLhu5luIHbDoG9cbiIKKyIgICAgICAgICDigJwlc+KAnSwgY2hvIGTDuSBsw6AgbsOzIMSRw6MgxJHGsOG7o2MgaMOyYSB0cuG7mW4gdsOgbyBIRUFELiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoxODAKLW1zZ2lkICJjYW5ub3QgdXNlIC1hIHdpdGggLWQiCi1tc2dzdHIgImtow7RuZyB0aOG7gyBz4butIGThu6VuZyAtYSB24bubaSAtZCIKLQotIzogYnVpbHRpbi9icmFuY2guYzoxODYKLW1zZ2lkICJDb3VsZG4ndCBsb29rIHVwIGNvbW1pdCBvYmplY3QgZm9yIEhFQUQiCi1tc2dzdHIgIktow7RuZyB0aOG7gyB0w6xtIGtp4bq/bSDEkeG7kWkgdMaw4bujbmcgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBjaG8gSEVBRCIKLQotIzogYnVpbHRpbi9icmFuY2guYzoxOTEKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiQ2Fubm90IGRlbGV0ZSB0aGUgYnJhbmNoICclcycgd2hpY2ggeW91IGFyZSBjdXJyZW50bHkgb24uIgotbXNnc3RyICJLaMO0bmcgdGjhu4MgeMOzYSBuaMOhbmggJyVzJyBjw6FpIG3DoCBi4bqhbiBoaeG7h24gbmF5IMSRYW5nIOG7ny4iCi0KLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjAyCi0jLCBjLWZvcm1hdAotbXNnaWQgInJlbW90ZSBicmFuY2ggJyVzJyBub3QgZm91bmQuIgotbXNnc3RyICJuaMOhbmggbcOheSBjaOG7pyAnJXMnIGtow7RuZyB0w6xtIHRo4bqleS4iCi0KLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjAzCi0jLCBjLWZvcm1hdAotbXNnaWQgImJyYW5jaCAnJXMnIG5vdCBmb3VuZC4iCi1tc2dzdHIgImtow7RuZyB0w6xtIHRo4bqleSBuaMOhbmggJyVzJy4iCi0KLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjEwCisjOiBidWlsdGluL2JyYW5jaC5jOjE2OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZG4ndCBsb29rIHVwIGNvbW1pdCBvYmplY3QgZm9yICclcyciCi1tc2dzdHIgIktow7RuZyB0aOG7gyB0w6xtIGtp4bq/bSDEkeG7kWkgdMaw4bujbmcgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBjaG8gJyVzJyIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIHTDrG0ga2nhur9tIMSR4buRaSB0xrDhu6NuZyBjaHV54buDbiBnaWFvIChjb21taXQpIGNobyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyMTYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgYnJhbmNoICclcycgaXMgbm90IGZ1bGx5IG1lcmdlZC5cbiIKICJJZiB5b3UgYXJlIHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGl0LCBydW4gJ2dpdCBicmFuY2ggLUQgJXMnLiIKIG1zZ3N0ciAiIgotIk5ow6FuaCAnJXMnIGtow7RuZyDEkcaw4bujYyB0cuG7mW4gbeG7mXQgY8OhY2ggxJHhuqd5IMSR4bunLlxuIgotIk7hur91IGLhuqFuIHRo4buxYyBz4buxIG114buRbiB4w7NhIG7DsywgdGjDrCBjaOG6oXkgbOG7h25oICdnaXQgYnJhbmNoIC1EICVzJy4iCisiTmjDoW5oIOKAnCVz4oCdIGtow7RuZyDEkcaw4bujYyB0cuG7mW4gbeG7mXQgY8OhY2ggxJHhuqd5IMSR4bunLlxuIgorIk7hur91IGLhuqFuIHRo4buxYyBz4buxIG114buRbiB4w7NhIG7DsywgdGjDrCBjaOG6oXkgbOG7h25oIOKAnGdpdCBicmFuY2ggLUQgJXPigJ0uIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIyNQorIzogYnVpbHRpbi9icmFuY2guYzoxODUKK21zZ2lkICJVcGRhdGUgb2YgY29uZmlnLWZpbGUgZmFpbGVkIgorbXNnc3RyICJD4bqtcCBuaOG6rXQgdOG6rXAgdGluIGPhuqV1IGjDrG5oIGfhurdwIGzhu5dpIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjIxMworbXNnaWQgImNhbm5vdCB1c2UgLWEgd2l0aCAtZCIKK21zZ3N0ciAia2jDtG5nIHRo4buDIGTDuW5nIHTDuXkgY2jhu41uIC1hIHbhu5tpIC1kIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjIxOQorbXNnaWQgIkNvdWxkbid0IGxvb2sgdXAgY29tbWl0IG9iamVjdCBmb3IgSEVBRCIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIHTDrG0ga2nhur9tIMSR4buRaSB0xrDhu6NuZyBjaHV54buDbiBnaWFvIChjb21taXQpIGNobyBIRUFEIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjIyNworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZGVsZXRlIHRoZSBicmFuY2ggJyVzJyB3aGljaCB5b3UgYXJlIGN1cnJlbnRseSBvbi4iCittc2dzdHIgIktow7RuZyB0aOG7gyB4w7NhIG5ow6FuaCDigJwlc+KAnSBjw6FpIG3DoCBi4bqhbiBoaeG7h24gbmF5IMSRYW5nIOG7ny4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjQwCisjLCBjLWZvcm1hdAorbXNnaWQgInJlbW90ZSBicmFuY2ggJyVzJyBub3QgZm91bmQuIgorbXNnc3RyICJraMO0bmcgdMOsbSB0aOG6pXkgbmjDoW5oIG3DoXkgY2jhu6cg4oCcJXPigJ0uIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI0MQorIywgYy1mb3JtYXQKK21zZ2lkICJicmFuY2ggJyVzJyBub3QgZm91bmQuIgorbXNnc3RyICJraMO0bmcgdMOsbSB0aOG6pXkgbmjDoW5oIOKAnCVz4oCdLiIKKworIzogYnVpbHRpbi9icmFuY2guYzoyNTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3IgZGVsZXRpbmcgcmVtb3RlIGJyYW5jaCAnJXMnIgotbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJFhbmcgeMOzYSBuaMOhbmggbcOheSBjaOG7pyAnJXMnIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJFhbmcgeMOzYSBuaMOhbmggdHLDqm4gbcOheSBjaOG7pyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyMjYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjU2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkVycm9yIGRlbGV0aW5nIGJyYW5jaCAnJXMnIgotbXNnc3RyICJM4buXaSBraGkgeG/DoSBi4buPIG5ow6FuaCAnJXMnIgorbXNnc3RyICJM4buXaSBraGkgeG/DoSBi4buPIG5ow6FuaCDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyMzMKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkRlbGV0ZWQgcmVtb3RlIGJyYW5jaCAlcyAod2FzICVzKS5cbiIKLW1zZ3N0ciAiTmjDoW5oIG3DoXkgY2jhu6cgxJHDoyB4w7NhICVzICh0csaw4bubYyBsw6AgJXMpLlxuIgorbXNnc3RyICJOaMOhbmggdHLDqm4gbcOheSBjaOG7pyBcIiVzXCIgxJHDoyBi4buLIHjDs2EgKHThu6tuZyBsw6AgJXMpLlxuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIzNAorIzogYnVpbHRpbi9icmFuY2guYzoyNjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRGVsZXRlZCBicmFuY2ggJXMgKHdhcyAlcykuXG4iCi1tc2dzdHIgIk5ow6FuaCDEkcOjIGLhu4sgeMOzYSAnJXMnICh0csaw4bubYyBsw6AgJXMpXG4iCittc2dzdHIgIk5ow6FuaCDigJwlc+KAnSDEkcOjIGLhu4sgeMOzYSAodOG7q25nIGzDoCAlcylcbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyMzkKLW1zZ2lkICJVcGRhdGUgb2YgY29uZmlnLWZpbGUgZmFpbGVkIgotbXNnc3RyICJD4bqtcCBuaOG6rXQgdOG7h3AgdGluIGPhuqV1IGjDrG5oIGfhurdwIGzhu5dpIgotCi0jOiBidWlsdGluL2JyYW5jaC5jOjMzNworIzogYnVpbHRpbi9icmFuY2guYzozNjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiYnJhbmNoICclcycgZG9lcyBub3QgcG9pbnQgYXQgYSBjb21taXQiCi1tc2dzdHIgIm5ow6FuaCAnJXMnIGtow7RuZyBjaOG7iSDEkeG6v24gbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBuw6BvIGPhuqMiCittc2dzdHIgIm5ow6FuaCDigJwlc+KAnSBraMO0bmcgY2jhu4kgxJHhur9uIG3hu5l0IGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbsOgbyBj4bqjIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQwOQorIzogYnVpbHRpbi9icmFuY2guYzo0NTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiWyVzOiBiZWhpbmQgJWRdIgogbXNnc3RyICJbJXM6IMSR4bqxbmcgc2F1ICVkXSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0MTEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIltiZWhpbmQgJWRdIgogbXNnc3RyICJbxJHhurFuZyBzYXUgJWRdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQxNQorIzogYnVpbHRpbi9icmFuY2guYzo0NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiWyVzOiBhaGVhZCAlZF0iCiBtc2dzdHIgIlslczogcGjDrWEgdHLGsOG7m2MgJWRdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQxNworIzogYnVpbHRpbi9icmFuY2guYzo0NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiW2FoZWFkICVkXSIKIG1zZ3N0ciAiW3Bow61hIHRyxrDhu5tjICVkXSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0MjAKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlslczogYWhlYWQgJWQsIGJlaGluZCAlZF0iCi1tc2dzdHIgIlslczogcGjDrWEgdHLGsOG7m2MgJWQsIHBow61hIHNhdSAlZF0iCittc2dzdHIgIlslczogdHLGsOG7m2MgJWQsIHNhdSAlZF0iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NDIzCisjOiBidWlsdGluL2JyYW5jaC5jOjQ2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJbYWhlYWQgJWQsIGJlaGluZCAlZF0iCi1tc2dzdHIgIltwaMOtYSB0csaw4bubYyAlZCwgcGjDrWEgc2F1ICVkXSIKK21zZ3N0ciAiW3RyxrDhu5tjICVkLCBzYXUgJWRdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjUzNQorIzogYnVpbHRpbi9icmFuY2guYzo0OTAKK21zZ2lkICIgKioqKiBpbnZhbGlkIHJlZiAqKioqIgorbXNnc3RyICIgKioqKiB0aGFtIGNoaeG6v3Ugc2FpICoqKioiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NTgyCisjLCBjLWZvcm1hdAorbXNnaWQgIihubyBicmFuY2gsIHJlYmFzaW5nICVzKSIKK21zZ3N0ciAiKGtow7RuZyBuaMOhbmgsIMSRYW5nIHJlYmFzZSAlcykiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NTg1CisjLCBjLWZvcm1hdAorbXNnaWQgIihubyBicmFuY2gsIGJpc2VjdCBzdGFydGVkIG9uICVzKSIKK21zZ3N0ciAiKGtow7RuZyBuaMOhbmgsIGJpc2VjdCDEkcaw4bujYyBi4bqvdCDEkeG6p3UgdOG6oWkgJXMpIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjU4OAorIywgYy1mb3JtYXQKK21zZ2lkICIoZGV0YWNoZWQgZnJvbSAlcykiCittc2dzdHIgIijEkcaw4bujYyB0w6FjaCBy4budaSB04burICVzKSIKKworIzogYnVpbHRpbi9icmFuY2guYzo1OTEKIG1zZ2lkICIobm8gYnJhbmNoKSIKLW1zZ3N0ciAiKGtow7RuZyBjw7MgbmjDoW5oIG7DoG8pIgorbXNnc3RyICIoa2jDtG5nIG5ow6FuaCkiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjAwCisjOiBidWlsdGluL2JyYW5jaC5jOjYzNworIywgYy1mb3JtYXQKK21zZ2lkICJvYmplY3QgJyVzJyBkb2VzIG5vdCBwb2ludCB0byBhIGNvbW1pdCIKK21zZ3N0ciAixJHhu5FpIHTGsOG7o25nIOKAnCVz4oCdIGtow7RuZyBjaOG7iSDEkeG6v24gbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBuw6BvIGPhuqMiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NjY5CiBtc2dpZCAic29tZSByZWZzIGNvdWxkIG5vdCBiZSByZWFkIgogbXNnc3RyICJt4buZdCBz4buRIHRoYW0gY2hp4bq/dSDEkcOjIGtow7RuZyB0aOG7gyDEkeG7jWMgxJHGsOG7o2MiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjEzCisjOiBidWlsdGluL2JyYW5jaC5jOjY4MgogbXNnaWQgImNhbm5vdCByZW5hbWUgdGhlIGN1cnJlbnQgYnJhbmNoIHdoaWxlIG5vdCBvbiBhbnkuIgogbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu5VpIHTDqm4gbmjDoW5oIGhp4buHbiBow6BuaCB0cm9uZyBraGkgbsOzIGNo4bqzbmcg4bufIMSRw6J1IGPhuqMuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjYyMworIzogYnVpbHRpbi9icmFuY2guYzo2OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBicmFuY2ggbmFtZTogJyVzJyIKLW1zZ3N0ciAidMOqbiBuaMOhbmggc2FpOiAnJXMnIgorbXNnc3RyICJTYWkgdMOqbiBuaMOhbmg6IOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjYzOAorIzogYnVpbHRpbi9icmFuY2guYzo3MDcKIG1zZ2lkICJCcmFuY2ggcmVuYW1lIGZhaWxlZCIKIG1zZ3N0ciAixJDhu5VpIHTDqm4gbmjDoW5oIGfhurdwIGzhu5dpIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjY0MgorIzogYnVpbHRpbi9icmFuY2guYzo3MTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVuYW1lZCBhIG1pc25hbWVkIGJyYW5jaCAnJXMnIGF3YXkiCi1tc2dzdHIgIsSQw6MgxJHhu5VpIHTDqm4gbmjDoW5oIGtodXnhur90IGRhbmggJyVzJyDEkWkiCittc2dzdHIgIsSQw6MgxJHhu5VpIHTDqm4gbmjDoW5oIGtodXnhur90IGRhbmgg4oCcJXPigJ0gxJFpIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjY0NgorIzogYnVpbHRpbi9icmFuY2guYzo3MTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQnJhbmNoIHJlbmFtZWQgdG8gJXMsIGJ1dCBIRUFEIGlzIG5vdCB1cGRhdGVkISIKIG1zZ3N0ciAiTmjDoW5oIGLhu4sgxJHhu5VpIHTDqm4gdGjDoG5oICVzLCBuaMawbmcgSEVBRCBs4bqhaSBraMO0bmcgxJHGsOG7o2MgY+G6rXAgbmjhuq10ISIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NTMKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzIyCiBtc2dpZCAiQnJhbmNoIGlzIHJlbmFtZWQsIGJ1dCB1cGRhdGUgb2YgY29uZmlnLWZpbGUgZmFpbGVkIgogbXNnc3RyICJOaMOhbmggYuG7iyDEkeG7lWkgdMOqbiwgbmjGsG5nIGPhuq1wIG5o4bqtdCB04bqtcCB0aW4gY+G6pXUgaMOsbmggZ+G6t3AgbOG7l2kiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjY4CisjOiBidWlsdGluL2JyYW5jaC5jOjczNwogIywgYy1mb3JtYXQKIG1zZ2lkICJtYWxmb3JtZWQgb2JqZWN0IG5hbWUgJXMiCiBtc2dzdHIgInTDqm4gxJHhu5FpIHTGsOG7o25nIGThu4sgaMOsbmggJXMiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjkyCisjOiBidWlsdGluL2JyYW5jaC5jOjc2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgd3JpdGUgYnJhbmNoIGRlc2NyaXB0aW9uIHRlbXBsYXRlOiAlcyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGdoaSB2w6BvIG3huqt1IG3DtCB04bqjIG5ow6FuaDogJXMiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzgzCisjOiBidWlsdGluL2JyYW5jaC5jOjc5MQorbXNnaWQgIkdlbmVyaWMgb3B0aW9ucyIKK21zZ3N0ciAiVMO5eSBjaOG7jW4gY2h1bmciCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzkzCittc2dpZCAic2hvdyBoYXNoIGFuZCBzdWJqZWN0LCBnaXZlIHR3aWNlIGZvciB1cHN0cmVhbSBicmFuY2giCittc2dzdHIgImhp4buDbiB0aOG7iyBtw6MgYsSDbSB2w6AgY2jhu6cgxJHhu4EsIMSRxrBhIHJhIGhhaSBs4bqnbiBjaG8gbmjDoW5oIHRoxrDhu6NuZyBuZ3Xhu5NuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjc5NAorbXNnaWQgInN1cHByZXNzIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMiCittc2dzdHIgIlRodSBo4buTaSBjw6FjIHRow7RuZyDEkWnhu4dwIHRow7RuZyB0aW4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzk1Cittc2dpZCAic2V0IHVwIHRyYWNraW5nIG1vZGUgKHNlZSBnaXQtcHVsbCgxKSkiCittc2dzdHIgImPDoGkgxJHhurd0IGNo4bq/IMSR4buZIHRoZW8gduG6v3QgKHhlbSBnaXQtcHVsbCgxKSkiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzk3Cittc2dpZCAiY2hhbmdlIHVwc3RyZWFtIGluZm8iCittc2dzdHIgInRoYXkgxJHhu5VpIHRow7RuZyB0aW4gdGjGsOG7o25nIG5ndeG7k24gKHVwc3RyZWFtKSIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MDEKK21zZ2lkICJ1c2UgY29sb3JlZCBvdXRwdXQiCittc2dzdHIgInPhu60gZOG7pW5nIGvhur90IHh14bqldCBjw7MgdMO0IG3DoHUiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODAyCittc2dpZCAiYWN0IG9uIHJlbW90ZS10cmFja2luZyBicmFuY2hlcyIKK21zZ3N0ciAidGhhbyB0w6FjIHRyw6puIG5ow6FuaCDigJxyZW1vdGUtdHJhY2tpbmfigJ0iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODA1IGJ1aWx0aW4vYnJhbmNoLmM6ODExIGJ1aWx0aW4vYnJhbmNoLmM6ODMyCisjOiBidWlsdGluL2JyYW5jaC5jOjgzOCBidWlsdGluL2NvbW1pdC5jOjEzNjggYnVpbHRpbi9jb21taXQuYzoxMzY5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzAgYnVpbHRpbi9jb21taXQuYzoxMzcxIGJ1aWx0aW4vdGFnLmM6NDY4Cittc2dpZCAiY29tbWl0IgorbXNnc3RyICJjb21taXQiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODA2IGJ1aWx0aW4vYnJhbmNoLmM6ODEyCittc2dpZCAicHJpbnQgb25seSBicmFuY2hlcyB0aGF0IGNvbnRhaW4gdGhlIGNvbW1pdCIKK21zZ3N0ciAiY2jhu4kgaGnhu4NuIHRo4buLIG5o4buvbmcgbmjDoW5oIG3DoCBuw7MgY2jhu6lhIGzhuqduIGNodXnhu4NuIGdpYW8iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODE4Cittc2dpZCAiU3BlY2lmaWMgZ2l0LWJyYW5jaCBhY3Rpb25zOiIKK21zZ3N0ciAiSMOgbmggxJHhu5luZyBnaXQtYnJhbmNoOiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MTkKK21zZ2lkICJsaXN0IGJvdGggcmVtb3RlLXRyYWNraW5nIGFuZCBsb2NhbCBicmFuY2hlcyIKK21zZ3N0ciAibGnhu4d0IGvDqiBj4bqjIG5ow6FuaCDigJxyZW1vdGUtdHJhY2tpbmfigJ0gdsOgIG7hu5lpIGLhu5kiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODIxCittc2dpZCAiZGVsZXRlIGZ1bGx5IG1lcmdlZCBicmFuY2giCittc2dzdHIgInjDs2EgbeG7mXQgY8OhY2ggxJHhuqd5IMSR4bunIG5ow6FuaCDEkcOjIGjDsmEgdHLhu5luIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgyMgorbXNnaWQgImRlbGV0ZSBicmFuY2ggKGV2ZW4gaWYgbm90IG1lcmdlZCkiCittc2dzdHIgInhvw6EgbmjDoW5oIChjaG8gZMO5IGzDoCBjaMawYSDEkcaw4bujYyBow7JhIHRy4buZbikiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODIzCittc2dpZCAibW92ZS9yZW5hbWUgYSBicmFuY2ggYW5kIGl0cyByZWZsb2ciCittc2dzdHIgImRpIGNodXnhu4NuIGhheSDEkeG7lWkgdMOqbiBt4buZdCBuaMOhbmggdsOgIHJlZmxvZyBj4bunYSBuw7MiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI0Cittc2dpZCAibW92ZS9yZW5hbWUgYSBicmFuY2gsIGV2ZW4gaWYgdGFyZ2V0IGV4aXN0cyIKK21zZ3N0ciAiZGkgY2h1eeG7g24gaG/hurdjIMSR4buVaSB0w6puIG3hu5l0IG5ow6FuaCwgdGjhuq1tIGNow60gY+G6oyBraGkgxJHDrWNoIMSRw6MgY8OzIHPhurVuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgyNQorbXNnaWQgImxpc3QgYnJhbmNoIG5hbWVzIgorbXNnc3RyICJsaeG7h3Qga8OqIGPDoWMgdMOqbiBuaMOhbmgiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI2Cittc2dpZCAiY3JlYXRlIHRoZSBicmFuY2gncyByZWZsb2ciCittc2dzdHIgInThuqFvIHJlZmxvZyBj4bunYSBuaMOhbmgiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI4Cittc2dpZCAiZWRpdCB0aGUgZGVzY3JpcHRpb24gZm9yIHRoZSBicmFuY2giCittc2dzdHIgInPhu61hIG3DtCB04bqjIGNobyBuaMOhbmgiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI5Cittc2dpZCAiZm9yY2UgY3JlYXRpb24gKHdoZW4gYWxyZWFkeSBleGlzdHMpIgorbXNnc3RyICLDqXAgYnXhu5ljIHThuqFvIChraGkgxJHDoyBz4bq1biB04buTbiB04bqhaSBy4buTaSkiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODMyCittc2dpZCAicHJpbnQgb25seSBub3QgbWVyZ2VkIGJyYW5jaGVzIgorbXNnc3RyICJjaOG7iSBoaeG7g24gdGjhu4sgY8OhYyBuaMOhbmggY2jGsGEgxJHGsOG7o2MgaMOyYSB0cuG7mW4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODM4Cittc2dpZCAicHJpbnQgb25seSBtZXJnZWQgYnJhbmNoZXMiCittc2dzdHIgImNo4buJIGhp4buDbiB0aOG7iyBjw6FjIG5ow6FuaCDEkcaw4bujYyBow7JhIHRy4buZbiIKKworIzogYnVpbHRpbi9icmFuY2guYzo4NDIKK21zZ2lkICJsaXN0IGJyYW5jaGVzIGluIGNvbHVtbnMiCittc2dzdHIgImxp4buHdCBrw6ogY8OhYyBuaMOhbmggdHJvbmcgY8OhYyBj4buZdCIKKworIzogYnVpbHRpbi9icmFuY2guYzo4NTUKIG1zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSBIRUFEIGFzIGEgdmFsaWQgcmVmLiIKLW1zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIGdp4bqjaSBxdXnhur90IEhFQUQgbmjGsCBsw6AgbeG7mXQgdGhhbSBjaGnhur91IChyZWYpIGjhu6NwIGzhu4cuIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgcGjDom4gZ2nhuqNpIEhFQUQgbmjGsCBsw6AgbeG7mXQgdGhhbSBjaGnhur91IChyZWYpIGjhu6NwIGzhu4cuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc4OAotIzogYnVpbHRpbi9jbG9uZS5jOjU1OAorIzogYnVpbHRpbi9icmFuY2guYzo4NjAgYnVpbHRpbi9jbG9uZS5jOjYxOQogbXNnaWQgIkhFQUQgbm90IGZvdW5kIGJlbG93IHJlZnMvaGVhZHMhIgotbXNnc3RyICJIRUFEIGtow7RuZyB0w6xtIHRo4bqleSDhu58gZMaw4bubaSByZWZzL2hlYWRzISIKK21zZ3N0ciAia2jDtG5nIHTDrG0gdGjhuqV5IEhFQUQg4bufIGTGsOG7m2kgcmVmcy9oZWFkcyEiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODA4CisjOiBidWlsdGluL2JyYW5jaC5jOjg4MwogbXNnaWQgIi0tY29sdW1uIGFuZCAtLXZlcmJvc2UgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLS1jb2x1bW4gdsOgIC0tdmVyYm9zZSB4dW5nIGto4bqvYyBuaGF1IgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjg1NworIzogYnVpbHRpbi9icmFuY2guYzo4ODkgYnVpbHRpbi9icmFuY2guYzo5MjgKK21zZ2lkICJicmFuY2ggbmFtZSByZXF1aXJlZCIKK21zZ3N0ciAiY+G6p24gdMOqbiBuaMOhbmgiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTA0Cittc2dpZCAiQ2Fubm90IGdpdmUgZGVzY3JpcHRpb24gdG8gZGV0YWNoZWQgSEVBRCIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIMSRxrBhIHJhIG3DtCB04bqjIEhFQUQgxJHDoyB0w6FjaCBy4budaSIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MDkKK21zZ2lkICJjYW5ub3QgZWRpdCBkZXNjcmlwdGlvbiBvZiBtb3JlIHRoYW4gb25lIGJyYW5jaCIKK21zZ3N0ciAia2jDtG5nIHRo4buDIHPhu61hIG3DtCB04bqjIGNobyBuaGnhu4F1IGjGoW4gbeG7mXQgbmjDoW5oIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkxNgorIywgYy1mb3JtYXQKK21zZ2lkICJObyBjb21taXQgb24gYnJhbmNoICclcycgeWV0LiIKK21zZ3N0ciAiVuG6q24gY2jGsGEgY2h1eeG7g24gZ2lhbyB0csOqbiBuaMOhbmgg4oCcJXPigJ0uIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkxOQorIywgYy1mb3JtYXQKK21zZ2lkICJObyBicmFuY2ggbmFtZWQgJyVzJy4iCittc2dzdHIgIktow7RuZyBjw7MgbmjDoW5oIG7DoG8gY8OzIHTDqm4g4oCcJXPigJ0uIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkzNAorbXNnaWQgInRvbyBtYW55IGJyYW5jaGVzIGZvciBhIHJlbmFtZSBvcGVyYXRpb24iCittc2dzdHIgInF1w6Egbmhp4buBdSBuaMOhbmggZMOgbmggY2hvIHRoYW8gdMOhYyDEkeG7lWkgdMOqbiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MzkKK21zZ2lkICJ0b28gbWFueSBicmFuY2hlcyB0byBzZXQgbmV3IHVwc3RyZWFtIgorbXNnc3RyICJxdcOhIG5oaeG7gXUgbmjDoW5oIMSRxrDhu6NjIMSR4bq3dCBjaG8gZMOybmcgbmfGsOG7o2MgKHVwc3RyZWFtKSBt4bubaSIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImNvdWxkIG5vdCBzZXQgdXBzdHJlYW0gb2YgSEVBRCB0byAlcyB3aGVuIGl0IGRvZXMgbm90IHBvaW50IHRvIGFueSBicmFuY2guIgorbXNnc3RyICIiCisia2jDtG5nIHRo4buDIMSR4bq3dCBkw7JuZyBuZ8aw4bujYyAodXBzdHJlYW0pIGPhu6dhIEhFQUQgdGjDoG5oICVzIGtoaSBtw6AgbsOzIGNo4bqzbmcgY2jhu4kgIgorIsSR4bq/biBuaMOhbmggbsOgbyBj4bqjLiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NDYgYnVpbHRpbi9icmFuY2guYzo5NjggYnVpbHRpbi9icmFuY2guYzo5OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAibm8gc3VjaCBicmFuY2ggJyVzJyIKK21zZ3N0ciAia2jDtG5nIGPDsyBuaMOhbmggbsOgbyBuaMawIHRo4bq/IOKAnCVz4oCdIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk1MAorIywgYy1mb3JtYXQKK21zZ2lkICJicmFuY2ggJyVzJyBkb2VzIG5vdCBleGlzdCIKK21zZ3N0ciAibmjDoW5oIOKAnCVz4oCdIGNoxrBhIHPhurVuIGPDsyIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NjIKK21zZ2lkICJ0b28gbWFueSBicmFuY2hlcyB0byB1bnNldCB1cHN0cmVhbSIKK21zZ3N0ciAicXXDoSBuaGnhu4F1IG5ow6FuaCDEkeG7gyBi4buPIMSR4bq3dCBuZ8aw4bujYyBkw7JuZyAodXBzdHJlYW0pIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk2NgorbXNnaWQgImNvdWxkIG5vdCB1bnNldCB1cHN0cmVhbSBvZiBIRUFEIHdoZW4gaXQgZG9lcyBub3QgcG9pbnQgdG8gYW55IGJyYW5jaC4iCittc2dzdHIgIiIKKyJraMO0bmcgdGjhu4MgYuG7jyDEkeG6t3QgbmfGsOG7o2MgZMOybmcgKHVwc3RyZWFtKSBj4bunYSBIRUFEIGtow7RuZyBjaOG7iSDEkeG6v24gbeG7mXQgbmjDoW5oIG7DoG8gIgorImPhuqMuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk3MgorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJyVzJyBoYXMgbm8gdXBzdHJlYW0gaW5mb3JtYXRpb24iCittc2dzdHIgIk5ow6FuaCDigJwlc+KAnSBraMO0bmcgY8OzIHRow7RuZyB0aW4gdGjGsOG7o25nIG5ndeG7k24gKHVwc3RyZWFtKSIKKworIzogYnVpbHRpbi9icmFuY2guYzo5ODcKK21zZ2lkICJpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGNyZWF0ZSAnSEVBRCcgbWFudWFsbHkiCittc2dzdHIgImtow7RuZyBo4bujcCBsw70ga2hpIHThuqFvIOKAnEhFQUTigJ0gdGjhu6cgY8O0bmcgIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk5MwogbXNnaWQgIi1hIGFuZCAtciBvcHRpb25zIHRvICdnaXQgYnJhbmNoJyBkbyBub3QgbWFrZSBzZW5zZSB3aXRoIGEgYnJhbmNoIG5hbWUiCi1tc2dzdHIgImhhaSB0w7l5IGNo4buNbiAtYSB2w6AgLXIgw6FwIGThu6VuZyBjaG8gbOG7h25oICdnaXQgYnJhbmNoJyBraMO0bmcgaOG7o3AgbMO9IMSR4buRaSB24bubaSB0w6puIG5ow6FuaCIKK21zZ3N0ciAiIgorImhhaSB0w7l5IGNo4buNbiAtYSB2w6AgLXIgw6FwIGThu6VuZyBjaG8gbOG7h25oIOKAnGdpdCBicmFuY2jigJ0ga2jDtG5nIGjhu6NwIGzDvSDEkeG7kWkgduG7m2kgdMOqbiAiCisibmjDoW5oIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk5NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIC0tc2V0LXVwc3RyZWFtIGZsYWcgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBDb25zaWRlciB1c2luZyAtLSIKKyJ0cmFjayBvciAtLXNldC11cHN0cmVhbS10b1xuIgorbXNnc3RyICIiCisiQ+G7nSAtLXNldC11cHN0cmVhbSBi4buLIHBo4bqjbiDEkeG7kWkgdsOgIHPhur0gYuG7iyB4w7NhIGLhu48uIE7Dqm4gZMO5bmcgLS10cmFjayBob+G6t2MgLS1zZXQtIgorInVwc3RyZWFtLXRvXG4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTAxMworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiSWYgeW91IHdhbnRlZCB0byBtYWtlICclcycgdHJhY2sgJyVzJywgZG8gdGhpczpcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIk7hur91IGLhuqFuIG114buRbiDigJwlc+KAnSB0aGVvIGTDtWkg4oCcJXPigJ0sIHRo4buxYyBoaeG7h24gbOG7h25oIHNhdTpcbiIKKyJcbiIKKworIzogYnVpbHRpbi9icmFuY2guYzoxMDE0CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICBnaXQgYnJhbmNoIC1kICVzXG4iCittc2dzdHIgIiAgICBnaXQgYnJhbmNoIC1kICVzXG4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTAxNQorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byAlc1xuIgorbXNnc3RyICIgICAgZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byAlc1xuIgogCiAjOiBidWlsdGluL2J1bmRsZS5jOjQ3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGlzIG9rYXlcbiIKLW1zZ3N0ciAiJyVzJyB04buRdFxuIgorbXNnc3RyICLigJwlc+KAnSB04buRdFxuIgogCiAjOiBidWlsdGluL2J1bmRsZS5jOjU2CiBtc2dpZCAiTmVlZCBhIHJlcG9zaXRvcnkgdG8gY3JlYXRlIGEgYnVuZGxlLiIKQEAgLTE3MjgsMTA3ICsyOTMzLDI1MCBAQAogbXNnaWQgIk5lZWQgYSByZXBvc2l0b3J5IHRvIHVuYnVuZGxlLiIKIG1zZ3N0ciAiQ+G6p24gbeG7mXQga2hvIGNo4bupYSDEkeG7gyBtw6AgYnVuZyBt4buZdCBidW5kbGUuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTEzCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTQ2CisjOiBidWlsdGluL2NhdC1maWxlLmM6MTc2Cittc2dpZCAiZ2l0IGNhdC1maWxlICgtdHwtc3wtZXwtcHw8dHlwZT58LS10ZXh0Y29udikgPG9iamVjdD4iCittc2dzdHIgImdpdCBjYXQtZmlsZSAoLXR8LXN8LWV8LXB8PGtp4buDdT58LS10ZXh0Y29udikgPMSR4buRaSB0xrDhu6NuZz4iCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxNzcKK21zZ2lkICJnaXQgY2F0LWZpbGUgKC0tYmF0Y2h8LS1iYXRjaC1jaGVjaykgPCA8bGlzdF9vZl9vYmplY3RzPiIKK21zZ3N0ciAiZ2l0IGNhdC1maWxlICgtLWJhdGNofC0tYmF0Y2gtY2hlY2spIDwgPGRhbmgtc8OhY2gtxJHhu5FpLXTGsOG7o25nPiIKKworIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5NQorbXNnaWQgIjx0eXBlPiBjYW4gYmUgb25lIG9mOiBibG9iLCB0cmVlLCBjb21taXQsIHRhZyIKK21zZ3N0ciAiPGtp4buDdT4gbMOgIG3hu5l0IHRyb25nIHPhu5E6IGJsb2IsIHRyZWUsIGNvbW1pdCwgdGFnIgorCisjOiBidWlsdGluL2NhdC1maWxlLmM6MTk2Cittc2dpZCAic2hvdyBvYmplY3QgdHlwZSIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGtp4buDdSDEkeG7kWkgdMaw4bujbmciCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTcKK21zZ2lkICJzaG93IG9iamVjdCBzaXplIgorbXNnc3RyICJoaeG7g24gdGjhu4sga8OtY2ggdGjGsOG7m2MgxJHhu5FpIHTGsOG7o25nIgorCisjOiBidWlsdGluL2NhdC1maWxlLmM6MTk5Cittc2dpZCAiZXhpdCB3aXRoIHplcm8gd2hlbiB0aGVyZSdzIG5vIGVycm9yIgorbXNnc3RyICJ0aG/DoXQgduG7m2kgMCBraGkga2jDtG5nIGPDsyBs4buXaSIKKworIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwMAorbXNnaWQgInByZXR0eS1wcmludCBvYmplY3QncyBjb250ZW50IgorbXNnc3RyICJpbiBu4buZaSBkdW5nIMSR4buRaSB0xrDhu6NuZyBk4bqhbmcgZOG7hSDEkeG7jWMiCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDIKK21zZ2lkICJmb3IgYmxvYiBvYmplY3RzLCBydW4gdGV4dGNvbnYgb24gb2JqZWN0J3MgY29udGVudCIKK21zZ3N0ciAiduG7m2kgxJHhu5FpIHTGsOG7o25nIGJsb2IsIGNo4bqheSBs4buHbmggdGV4dGNvbnYgdHLDqm4gbuG7mWkgZHVuZyBj4bunYSDEkeG7kWkgdMaw4bujbmciCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDQKK21zZ2lkICJzaG93IGluZm8gYW5kIGNvbnRlbnQgb2Ygb2JqZWN0cyBmZWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCittc2dzdHIgIiIKKyJoaeG7g24gdGjhu4sgdGjDtG5nIHRpbiB2w6AgbuG7mWkgZHVuZyBj4bunYSBjw6FjIMSR4buRaSB0xrDhu6NuZyBs4bqleSB04burIMSR4bqndSB2w6BvIHRpw6p1IGNodeG6qW4iCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDcKK21zZ2lkICJzaG93IGluZm8gYWJvdXQgb2JqZWN0cyBmZWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCittc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIHRow7RuZyB0aW4gduG7gSDEkeG7kWkgdMaw4bujbmcgZmVkICB04burIMSR4bqndSB2w6BvIHRpw6p1IGNodeG6qW4iCisKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjExCittc2dpZCAiZ2l0IGNoZWNrLWF0dHIgWy1hIHwgLS1hbGwgfCBhdHRyLi4uXSBbLS1dIHBhdGhuYW1lLi4uIgorbXNnc3RyICJnaXQgY2hlY2stYXR0ciBbLWEgfCAtLWFsbCB8IGF0dHIuLi5dIFstLV0gdMOqbi3Ekcaw4budbmctZOG6q24uLi4iCisKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjEyCittc2dpZCAiZ2l0IGNoZWNrLWF0dHIgLS1zdGRpbiBbLXpdIFstYSB8IC0tYWxsIHwgYXR0ci4uLl0gPCA8bGlzdC1vZi1wYXRocz4iCittc2dzdHIgIiIKKyJnaXQgY2hlY2stYXR0ciAtLXN0ZGluIFstel0gWy1hIHwgLS1hbGwgfCBhdHRyLi4uXSA8IDxkYW5oLXPDoWNoLcSRxrDhu51uZy1k4bqrbj4iCisKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjE5Cittc2dpZCAicmVwb3J0IGFsbCBhdHRyaWJ1dGVzIHNldCBvbiBmaWxlIgorbXNnc3RyICJiw6FvIGPDoW8gdOG6pXQgY+G6oyBjw6FjIHRodeG7mWMgdMOtbmggxJHhurd0IHRyw6puIHThuq1wIHRpbiIKKworIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MjAKK21zZ2lkICJ1c2UgLmdpdGF0dHJpYnV0ZXMgb25seSBmcm9tIHRoZSBpbmRleCIKK21zZ3N0ciAiY2jhu4kgc+G7rSBk4bulbmcgLmdpdGF0dHJpYnV0ZXMgdOG7qyBi4bqjbmcgbeG7pWMgbOG7pWMiCisKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIxIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MjIgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc1Cittc2dpZCAicmVhZCBmaWxlIG5hbWVzIGZyb20gc3RkaW4iCittc2dzdHIgIsSR4buNYyB0w6puIHThuq1wIHRpbiB04burIMSR4bqndSB2w6BvIHRpw6p1IGNodeG6qW4iCisKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIzIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MjQKK21zZ2lkICJpbnB1dCBwYXRocyBhcmUgdGVybWluYXRlZCBieSBhIG51bGwgY2hhcmFjdGVyIgorbXNnc3RyICJjw6FjIMSRxrDhu51uZyBk4bqrbiDEkcaw4bujYyAgbmfEg24gY8OhY2ggYuG7n2kga8O9IHThu7EgbnVsbCIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxOCBidWlsdGluL2NoZWNrb3V0LmM6MTA0NCBidWlsdGluL2djLmM6MTc3Cittc2dpZCAic3VwcHJlc3MgcHJvZ3Jlc3MgcmVwb3J0aW5nIgorbXNnc3RyICJjaOG6t24gY8OhYyBiw6FvIGPDoW8gdGnhur9uIHRyw6xuaCBob+G6oXQgxJHhu5luZyIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNDYKK21zZ2lkICJjYW5ub3Qgc3BlY2lmeSBwYXRobmFtZXMgd2l0aCAtLXN0ZGluIgorbXNnc3RyICJraMO0bmcgdGjhu4MgY2jhu4kgxJHhu4tuaCBjw6FjIHTDqm4gxJHGsOG7nW5nIGThuqtuIHbhu5tpIC0tc3RkaW4iCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTQ5Cittc2dpZCAiLXogb25seSBtYWtlcyBzZW5zZSB3aXRoIC0tc3RkaW4iCittc2dzdHIgIi16IGNo4buJIGjhu6NwIGzDvSB24bubaSAtLXN0ZGluIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE1MQorbXNnaWQgIm5vIHBhdGggc3BlY2lmaWVkIgorbXNnc3RyICJjaMawYSBnaGkgcsO1IMSRxrDhu51uZyBk4bqrbiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTUKK21zZ2lkICItLXF1aWV0IGlzIG9ubHkgdmFsaWQgd2l0aCBhIHNpbmdsZSBwYXRobmFtZSIKK21zZ3N0ciAiLS1xdWlldCBjaOG7iSBo4bujcCBs4buHIHbhu5tpIHTDqm4gxJHGsOG7nW5nIGThuqtuIMSRxqFuIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE1NworbXNnaWQgImNhbm5vdCBoYXZlIGJvdGggLS1xdWlldCBhbmQgLS12ZXJib3NlIgorbXNnc3RyICJraMO0bmcgdGjhu4MgZMO5bmcgY+G6oyBoYWkgdMO5eSBjaOG7jW4gLS1xdWlldCB2w6AgLS12ZXJib3NlIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTI2Cittc2dpZCAiZ2l0IGNoZWNrb3V0LWluZGV4IFtvcHRpb25zXSBbLS1dIFs8ZmlsZT4uLi5dIgorbXNnc3RyICJnaXQgY2hlY2tvdXQtaW5kZXggW2PDoWMtdMO5eS1jaOG7jW5dIFstLV0gWzx04bqtcC10aW4+Li4uXSIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE4NworbXNnaWQgImNoZWNrIG91dCBhbGwgZmlsZXMgaW4gdGhlIGluZGV4IgorbXNnc3RyICJs4bqleSByYSB0b8OgbiBi4buZIGPDoWMgdOG6rXAgdGluIHRyb25nIGLhuqNuZyBt4bulYyBs4bulYyIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE4OAorbXNnaWQgImZvcmNlIG92ZXJ3cml0ZSBvZiBleGlzdGluZyBmaWxlcyIKK21zZ3N0ciAiw6lwIGJ14buZYyBnaGkgxJHDqCBsw6puIHThuq1wIHRpbiDEkcOjIHPhurVuIGPDsyB04burIHRyxrDhu5tjIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTkwCittc2dpZCAibm8gd2FybmluZyBmb3IgZXhpc3RpbmcgZmlsZXMgYW5kIGZpbGVzIG5vdCBpbiBpbmRleCIKK21zZ3N0ciAiIgorImtow7RuZyBj4bqjbmggYsOhbyBjaG8gbmjhu69uZyB04bqtcCB0aW4gdOG7k24gdOG6oWkgdsOgIGtow7RuZyBjw7MgdHJvbmcgYuG6o25nIG3hu6VjIGzhu6VjIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTkyCittc2dpZCAiZG9uJ3QgY2hlY2tvdXQgbmV3IGZpbGVzIgorbXNnc3RyICJraMO0bmcgY2hlY2tvdXQgY8OhYyB04bqtcCB0aW4gbeG7m2kiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxOTQKK21zZ2lkICJ1cGRhdGUgc3RhdCBpbmZvcm1hdGlvbiBpbiB0aGUgaW5kZXggZmlsZSIKK21zZ3N0ciAiY+G6rXAgbmjhuq10IHRow7RuZyB0aW4gdGjhu5FuZyBrw6ogdHJvbmcgdOG6rXAgdGluIGzGsHUgYuG6o25nIG3hu6VjIGzhu6VjIG3hu5tpIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MjAwCittc2dpZCAicmVhZCBsaXN0IG9mIHBhdGhzIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IgorbXNnc3RyICIgxJHhu41jIGRhbmggc8OhY2ggxJHGsOG7nW5nIGThuqtuIHThu6sgdGhp4bq/dCBi4buLIG5o4bqtcCBjaHXhuqluIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MjAyCittc2dpZCAid3JpdGUgdGhlIGNvbnRlbnQgdG8gdGVtcG9yYXJ5IGZpbGVzIgorbXNnc3RyICJnaGkgbuG7mWkgZHVuZyB2w6BvIHThuq1wIHRpbiB04bqhbSIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjIwMyBidWlsdGluL2NvbHVtbi5jOjMwCittc2dpZCAic3RyaW5nIgorbXNnc3RyICJjaHXhu5dpIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MjA0Cittc2dpZCAid2hlbiBjcmVhdGluZyBmaWxlcywgcHJlcGVuZCA8c3RyaW5nPiIKK21zZ3N0ciAia2hpIHThuqFvIGPDoWMgdOG6rXAgdGluLCBu4buRaSB0aMOqbSA8Y2h14buXaT4iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoyMDcKK21zZ2lkICJjb3B5IG91dCB0aGUgZmlsZXMgZnJvbSBuYW1lZCBzdGFnZSIKK21zZ3N0ciAic2FvIGNow6lwIHJhIGPDoWMgdOG6rXAgdGluIHThu6sgdHLhuqFuZyB0aMOhaSDEkcaw4bujYyDEkeG6t3QgdMOqbiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjI1Cittc2dpZCAiZ2l0IGNoZWNrb3V0IFtvcHRpb25zXSA8YnJhbmNoPiIKK21zZ3N0ciAiZ2l0IGNoZWNrb3V0IFtjw6FjLXTDuXktY2jhu41uXSA8bmjDoW5oPiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjI2Cittc2dpZCAiZ2l0IGNoZWNrb3V0IFtvcHRpb25zXSBbPGJyYW5jaD5dIC0tIDxmaWxlPi4uLiIKK21zZ3N0ciAiZ2l0IGNoZWNrb3V0IFtjw6FjLXTDuXktY2jhu41uXSBbPG5ow6FuaD5dIC0tIDx04bqtcC10aW4+Li4uIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE3IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgb3VyIHZlcnNpb24iCi1tc2dzdHIgIsSRxrDhu51uZyBk4bqrbiAnJXMnIGtow7RuZyBjw7MgY8OhYyBwaGnDqm4gYuG6o24gY+G7p2EgY2jDum5nIHRhIgorbXNnc3RyICLEkcaw4budbmcgZOG6q24g4oCcJXPigJ0ga2jDtG5nIGPDsyBjw6FjIHBoacOqbiBi4bqjbiBj4bunYSBjaMO6bmcgdGEiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTUKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNDgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTkgYnVpbHRpbi9jaGVja291dC5jOjE1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgZG9lcyBub3QgaGF2ZSB0aGVpciB2ZXJzaW9uIgotbXNnc3RyICLEkcaw4budbmcgZOG6q24gJyVzJyBraMO0bmcgY8OzIGPDoWMgcGhpw6puIGLhuqNuIGPhu6dhIGNow7puZyIKK21zZ3N0ciAixJHGsOG7nW5nIGThuqtuIOKAnCVz4oCdIGtow7RuZyBjw7MgY8OhYyBwaGnDqm4gYuG6o24gY+G7p2EgY2jDum5nIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTMxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTM1CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJyBkb2VzIG5vdCBoYXZlIGFsbCBuZWNlc3NhcnkgdmVyc2lvbnMiCi1tc2dzdHIgIsSRxrDhu51uZyBk4bqrbiAnJXMnIGtow7RuZyBjw7MgdOG6pXQgY+G6oyBjw6FjIHBoacOqbiBi4bqjbiBj4bqnbiB0aGnhur90IgorbXNnc3RyICLEkcaw4budbmcgZOG6q24g4oCcJXPigJ0ga2jDtG5nIGPDsyB04bqldCBj4bqjIGPDoWMgcGhpw6puIGLhuqNuIGPhuqduIHRoaeG6v3QiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNzUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNzkKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgbmVjZXNzYXJ5IHZlcnNpb25zIgotbXNnc3RyICLEkcaw4budbmcgZOG6q24gJyVzJyBraMO0bmcgY8OzIGPDoWMgcGhpw6puIGLhuqNuIGPhuqduIHRoaeG6v3QiCittc2dzdHIgIsSRxrDhu51uZyBk4bqrbiDigJwlc+KAnSBraMO0bmcgY8OzIGPDoWMgcGhpw6puIGLhuqNuIGPhuqduIHRoaeG6v3QiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxOTIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxOTYKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnOiBjYW5ub3QgbWVyZ2UiCi1tc2dzdHIgIsSRxrDhu51uZyBk4bqrbiAnJXMnOiBraMO0bmcgdGjhu4MgaMOyYSB0cuG7mW4iCittc2dzdHIgIsSRxrDhu51uZyBk4bqrbiDigJwlc+KAnToga2jDtG5nIHRo4buDIGjDsmEgdHLhu5luIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjA5CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBhZGQgbWVyZ2UgcmVzdWx0IGZvciAnJXMnIgotbXNnc3RyICJLaMO0bmcgdGjhu4MgdGjDqm0ga+G6v3QgcXXhuqMgaMOyYSB0cuG7mW4gY2hvICclcyciCittc2dzdHIgIktow7RuZyB0aOG7gyB0aMOqbSBr4bq/dCBxdeG6oyBow7JhIHRy4buZbiBjaG8g4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMzQKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzozOTIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMzcgYnVpbHRpbi9jaGVja291dC5jOjI0MCBidWlsdGluL2NoZWNrb3V0LmM6MjQzCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCB1cGRhdGluZyBwYXRocyIKK21zZ3N0ciAi4oCcJXPigJ0ga2jDtG5nIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIHbhu5tpIGPDoWMgxJHGsOG7nW5nIGThuqtuIGPhuq1wIG5o4bqtdCIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjI0OSBidWlsdGluL2NoZWNrb3V0LmM6MjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIKK21zZ3N0ciAi4oCcJXPigJ0ga2jDtG5nIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIHbhu5tpICVzIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjU1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCB1cGRhdGUgcGF0aHMgYW5kIHN3aXRjaCB0byBicmFuY2ggJyVzJyBhdCB0aGUgc2FtZSB0aW1lLiIKK21zZ3N0ciAiIgorIktow7RuZyB0aOG7gyBj4bqtcCBuaOG6rXQgY8OhYyDEkcaw4budbmcgZOG6q24gdsOgIGNodXnhu4NuIMSR4bq/biBuaMOhbmgg4oCcJXPigJ0gY8O5bmcgbeG7mXQgbMO6Yy4iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNjYgYnVpbHRpbi9jaGVja291dC5jOjQ1OAogbXNnaWQgImNvcnJ1cHQgaW5kZXggZmlsZSIKIG1zZ3N0ciAidOG6rXAgdGluIGdoaSBi4bqjbmcgbeG7pWMgbOG7pWMgYuG7iyBo4buPbmciCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNjQKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNzEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzozMjkgYnVpbHRpbi9jaGVja291dC5jOjMzNgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgaXMgdW5tZXJnZWQiCi1tc2dzdHIgIsSRxrDhu51uZyBk4bqrbiAnJXMnIGtow7RuZyDEkcaw4bujYyBow7JhIHRy4buZbiIKK21zZ3N0ciAixJHGsOG7nW5nIGThuqtuIOKAnCVz4oCdIGtow7RuZyDEkcaw4bujYyBow7JhIHRy4buZbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjMwMgotIzogYnVpbHRpbi9jaGVja291dC5jOjQ5OAotIzogYnVpbHRpbi9jbG9uZS5jOjU4MwotIzogYnVpbHRpbi9tZXJnZS5jOjgxMgotbXNnaWQgInVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIGdoaSB04bqtcCB0aW4gbMawdSBi4bqjbmcgbeG7pWMgbOG7pWMgbeG7m2kiCi0KLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzozMTkKLSM6IGJ1aWx0aW4vZGlmZi5jOjMwMgotIzogYnVpbHRpbi9tZXJnZS5jOjQwOAotbXNnaWQgImRpZmZfc2V0dXBfZG9uZSBmYWlsZWQiCi1tc2dzdHIgImRpZmZfc2V0dXBfZG9uZSBn4bq3cCBs4buXaSIKLQotIzogYnVpbHRpbi9jaGVja291dC5jOjQxNAorIzogYnVpbHRpbi9jaGVja291dC5jOjQ4MAogbXNnaWQgInlvdSBuZWVkIHRvIHJlc29sdmUgeW91ciBjdXJyZW50IGluZGV4IGZpcnN0IgotbXNnc3RyICJi4bqhbiBj4bqnbiBwaOG6o2kgZ2nhuqNpIHF1eeG6v3QgYuG6o25nIG3hu6VjIGzhu6VjIGhp4buHbiB04bqhaSBj4bunYSBi4bqhbiB0csaw4bubYyDEkcOjISIKK21zZ3N0ciAiYuG6oW4gY+G6p24gcGjhuqNpIHBow6JuIGdp4bqjaSBi4bqjbmcgbeG7pWMgbOG7pWMgaGnhu4duIHThuqFpIGPhu6dhIGLhuqFuIHRyxrDhu5tjIMSRw6MiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo1MzMKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2FuIG5vdCBkbyByZWZsb2cgZm9yICclcydcbiIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIHRo4buxYyBoaeG7h24gcmVmbG9nIGNobyAnJXMnXG4iCittc2dzdHIgIktow7RuZyB0aOG7gyB0aOG7sWMgaGnhu4duIHJlZmxvZyBjaG8g4oCcJXPigJ1cbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU2NgorIzogYnVpbHRpbi9jaGVja291dC5jOjYzNAogbXNnaWQgIkhFQUQgaXMgbm93IGF0IgogbXNnc3RyICJIRUFEIGhp4buHbiBnaeG7nSB04bqhaSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU3MworIzogYnVpbHRpbi9jaGVja291dC5jOjY0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJSZXNldCBicmFuY2ggJyVzJ1xuIgotbXNnc3RyICLEkOG6t3QgbOG6oWkgbmjDoW5oICclcydcbiIKK21zZ3N0ciAixJDhurd0IGzhuqFpIG5ow6FuaCDigJwlc+KAnVxuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NTc2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFscmVhZHkgb24gJyVzJ1xuIgotbXNnc3RyICLEkMOjIHPhurVuIHPDoG5nIHRyw6puICclcydcbiIKK21zZ3N0ciAixJDDoyBz4bq1biBzw6BuZyB0csOqbiDigJwlc+KAnVxuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NTgwCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGFuZCByZXNldCBicmFuY2ggJyVzJ1xuIgotbXNnc3RyICLEkMOjIGNodXnhu4NuIHThu5tpIHbDoCByZXNldCBuaMOhbmggJyVzJ1xuIgorbXNnc3RyICLEkMOjIGNodXnhu4NuIHThu5tpIHbDoCByZXNldCBuaMOhbmgg4oCcJXPigJ1cbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU4MgorIzogYnVpbHRpbi9jaGVja291dC5jOjY1MCBidWlsdGluL2NoZWNrb3V0LmM6OTg3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnJXMnXG4iCi1tc2dzdHIgIsSQw6MgY2h1eeG7g24gxJHhur9uIG5ow6FuaCBt4bubaSAnJXMnXG4iCittc2dzdHIgIsSQw6MgY2h1eeG7g24gxJHhur9uIG5ow6FuaCBt4bubaSDigJwlc+KAnVxuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NTg0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGJyYW5jaCAnJXMnXG4iCi1tc2dzdHIgIsSQw6MgY2h1eeG7g24gxJHhur9uIG5ow6FuaCAnJXMnXG4iCittc2dzdHIgIsSQw6MgY2h1eeG7g24gxJHhur9uIG5ow6FuaCDigJwlc+KAnVxuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjQwCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzA4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAuLi4gYW5kICVkIG1vcmUuXG4iCiBtc2dzdHIgIiAuLi4gdsOgIG5oaeG7gXUgaMahbiAlZC5cbiIKIAogIy4gVGhlIHNpbmd1bGFyIHZlcnNpb24KLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIldhcm5pbmc6IHlvdSBhcmUgbGVhdmluZyAlZCBjb21taXQgYmVoaW5kLCBub3QgY29ubmVjdGVkIHRvXG4iCkBAIC0xODQxLDE3ICszMTg5LDE5IEBACiAiXG4iCiAiJXNcbiIKIG1zZ3N0clswXSAiIgotIkPhuqNuaCBiw6FvOiBi4bqhbiDEkcOjIHLhu51pIGLhu58gJWQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBs4bqhaSDEkeG6sW5nIHNhdSwga2jDtG5nIMSRxrDhu6NjIGvhur90IG7hu5FpIMSR4bq/blxuIgorIkPhuqNuaCBiw6FvOiBi4bqhbiDEkcOjIHLhu51pIGLhu48gJWQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBs4bqhaSDEkeG6sW5nIHNhdSwga2jDtG5nIMSRxrDhu6NjICIKKyJr4bq/dCBu4buRaSDEkeG6v25cbiIKICJi4bqldCBr4buzIG5ow6FuaCBuw6BvIGPhu6dhIGLhuqFuOlxuIgogIlxuIgogIiVzXG4iCiBtc2dzdHJbMV0gIiIKLSJD4bqjbmggYsOhbzogYuG6oW4gxJHDoyBy4budaSBi4bufICVkIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbOG6oWkgxJHhurFuZyBzYXUsIGtow7RuZyDEkcaw4bujYyBr4bq/dCBu4buRaSDEkeG6v25cbiIKKyJD4bqjbmggYsOhbzogYuG6oW4gxJHDoyBy4budaSBi4buPICVkIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbOG6oWkgxJHhurFuZyBzYXUsIGtow7RuZyDEkcaw4bujYyAiCisia+G6v3QgbuG7kWkgxJHhur9uXG4iCiAiYuG6pXQga+G7syBuaMOhbmggbsOgbyBj4bunYSBi4bqhbjpcbiIKICJcbiIKICIlc1xuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjY0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJJZiB5b3Ugd2FudCB0byBrZWVwIHRoZW0gYnkgY3JlYXRpbmcgYSBuZXcgYnJhbmNoLCB0aGlzIG1heSBiZSBhIGdvb2QgdGltZVxuIgpAQCAtMTg2MCwyODEgKzMyMTAsNTE1IEBACiAiIGdpdCBicmFuY2ggbmV3X2JyYW5jaF9uYW1lICVzXG4iCiAiXG4iCiBtc2dzdHIgIiIKLSJO4bq/dSBi4bqhbiBtdeG7kW4gZ2nhu68gY2jDum5nIGLhurFuZyBjw6FjaCB04bqhbyByYSBt4buZdCBuaMOhbmggbeG7m2ksIMSRw6J5IGPDsyBs4bq9IGzDoCBt4buZdCB0aOG7nWkgxJFp4buDbSB0aMOtY2ggaOG7o3BcbiIKKyJO4bq/dSBi4bqhbiBtdeG7kW4gZ2nhu68gY2jDum5nIGLhurFuZyBjw6FjaCB04bqhbyByYSBt4buZdCBuaMOhbmggbeG7m2ksIMSRw6J5IGPDsyBs4bq9IGzDoCBt4buZdCB0aOG7nWkgIgorIsSRaeG7g20gdGjDrWNoIGjhu6NwXG4iCiAixJHhu4MgbMOgbSB0aOG6vyBi4bqxbmcgbOG7h25oOlxuIgogIlxuIgogIiBnaXQgYnJhbmNoIHTDqm5fbmjDoW5oX23hu5tpICVzXG4iCiAiXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2OTQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3NjIKIG1zZ2lkICJpbnRlcm5hbCBlcnJvciBpbiByZXZpc2lvbiB3YWxrIgogbXNnc3RyICJs4buXaSBu4buZaSBi4buZIHRyb25nIGtoaSBkaSBjaHV54buDbiBxdWEgY8OhYyDEkWnhu4NtIHjDqXQgbOG6oWkiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2OTgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3NjYKIG1zZ2lkICJQcmV2aW91cyBIRUFEIHBvc2l0aW9uIHdhcyIKIG1zZ3N0ciAiVuG7iyB0csOtIGvhur8gdHLGsOG7m2MgY+G7p2EgSEVBRCBsw6AiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MjQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3OTMgYnVpbHRpbi9jaGVja291dC5jOjk4MgogbXNnaWQgIllvdSBhcmUgb24gYSBicmFuY2ggeWV0IHRvIGJlIGJvcm4iCiBtc2dzdHIgIkLhuqFuIHThuqFpIG5ow6FuaCBtw6AgbsOzIGNoxrBhIGjhu4EgxJHGsOG7o2Mgc2luaCByYSIKIAogIy4gY2FzZSAoMSkKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo4NTUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCByZWZlcmVuY2U6ICVzIgogbXNnc3RyICJ0aGFtIGNoaeG6v3Ugc2FpOiAlcyIKIAogIy4gY2FzZSAoMSk6IHdhbnQgYSB0cmVlCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6ODk0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6OTU3CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZmVyZW5jZSBpcyBub3QgYSB0cmVlOiAlcyIKLW1zZ3N0ciAidGhhbSBjaGnhur91IGtow7RuZyBwaOG6o2kgbMOgIGPDonk6JXMiCittc2dzdHIgInRoYW0gY2hp4bq/dSBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCBjw6J5ICh0cmVlKTolcyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjk3NAotbXNnaWQgIi1CIGNhbm5vdCBiZSB1c2VkIHdpdGggLWIiCi1tc2dzdHIgIi1CIGtow7RuZyB0aOG7gyDEkcaw4bujYyBz4butIGThu6VuZyB24bubaSAtYiIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5OTYKK21zZ2lkICJwYXRocyBjYW5ub3QgYmUgdXNlZCB3aXRoIHN3aXRjaGluZyBicmFuY2hlcyIKK21zZ3N0ciAiY8OhYyDEkcaw4budbmcgZOG6q24ga2jDtG5nIHRo4buDIGTDuW5nIGPDuW5nIHbhu5tpIGPDoWMgbmjDoW5oIGNodXnhu4NuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTgzCi1tc2dpZCAiLS1wYXRjaCBpcyBpbmNvbXBhdGlibGUgd2l0aCBhbGwgb3RoZXIgb3B0aW9ucyIKLW1zZ3N0ciAiLS1wYXRjaCB4dW5nIGto4bqvYyB24bubaSB04bqldCBj4bqjIGPDoWMgdMO5eSBjaOG7jW4ga2jDoWMiCisjOiBidWlsdGluL2NoZWNrb3V0LmM6OTk5IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMiCittc2dzdHIgIuKAnCVz4oCdIGtow7RuZyB0aOG7gyDEkcaw4bujYyBz4butIGThu6VuZyB24bubaSBjw6FjIG5ow6FuaCBjaHV54buDbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjk4NgotbXNnaWQgIi0tZGV0YWNoIGNhbm5vdCBiZSB1c2VkIHdpdGggLWIvLUIvLS1vcnBoYW4iCi1tc2dzdHIgIi0tZGV0YWNoIGtow7RuZyB0aOG7gyDEkcaw4bujYyBz4butIGThu6VuZyB24bubaSAtYi8tQi8tLW9ycGhhbiIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDA3IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDEwIGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxOAorIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggJyVzJyIKK21zZ3N0ciAi4oCcJXPigJ0ga2jDtG5nIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIHbhu5tpIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTg4Ci1tc2dpZCAiLS1kZXRhY2ggY2Fubm90IGJlIHVzZWQgd2l0aCAtdCIKLW1zZ3N0ciAiLS1kZXRhY2gga2jDtG5nIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIHbhu5tpIHTDuXkgY2jhu41uIC10IgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHN3aXRjaCBicmFuY2ggdG8gYSBub24tY29tbWl0ICclcyciCittc2dzdHIgIktow7RuZyB0aOG7gyBjaHV54buDbiBuaMOhbmggxJHhur9uIG3hu5l0IG5vbi1jb21taXQg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5OTQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ1IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ3IGJ1aWx0aW4vY2xvbmUuYzo5MAorIzogYnVpbHRpbi9yZW1vdGUuYzoxNjkgYnVpbHRpbi9yZW1vdGUuYzoxNzEKK21zZ2lkICJicmFuY2giCittc2dzdHIgIm5ow6FuaCIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDYKK21zZ2lkICJjcmVhdGUgYW5kIGNoZWNrb3V0IGEgbmV3IGJyYW5jaCIKK21zZ3N0ciAidOG6oW8gdsOgIGNoZWNrb3V0IG3hu5l0IG5ow6FuaCBt4bubaSIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDgKK21zZ2lkICJjcmVhdGUvcmVzZXQgYW5kIGNoZWNrb3V0IGEgYnJhbmNoIgorbXNnc3RyICJjcmVhdGUvcmVzZXQgdsOgIGNoZWNrb3V0IG3hu5l0IG5ow6FuaCIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDkKK21zZ2lkICJjcmVhdGUgcmVmbG9nIGZvciBuZXcgYnJhbmNoIgorbXNnc3RyICJ04bqhbyByZWZsb2cgY2hvIG5ow6FuaCBt4bubaSIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTAKK21zZ2lkICJkZXRhY2ggdGhlIEhFQUQgYXQgbmFtZWQgY29tbWl0IgorbXNnc3RyICJy4budaSBi4buPIEhFQUQgdOG6oWkgbOG6p24gY2h1eeG7g24gZ2lhbyBkYW5oIG5naMSpYSIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTEKK21zZ2lkICJzZXQgdXBzdHJlYW0gaW5mbyBmb3IgbmV3IGJyYW5jaCIKK21zZ3N0ciAixJHhurd0IHRow7RuZyB0aW4gdGjGsOG7o25nIG5ndeG7k24gKHVwc3RyZWFtKSBjaG8gbmjDoW5oIG3hu5tpIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MworbXNnaWQgIm5ldyBicmFuY2giCittc2dzdHIgIm5ow6FuaCBt4bubaSIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTMKK21zZ2lkICJuZXcgdW5wYXJlbnRlZCBicmFuY2giCittc2dzdHIgIm5ow6FuaCBt4buTIGPDtGkgbeG7m2kiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU0Cittc2dpZCAiY2hlY2tvdXQgb3VyIHZlcnNpb24gZm9yIHVubWVyZ2VkIGZpbGVzIgorbXNnc3RyICIiCisibOG6pXkgcmEgKGNoZWNrb3V0KSBwaGnDqm4gYuG6o24gY+G7p2EgY2jDum5nIHRhIGNobyBjw6FjIHThuq1wIHRpbiBjaMawYSDEkcaw4bujYyBow7JhIHRy4buZbiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTYKK21zZ2lkICJjaGVja291dCB0aGVpciB2ZXJzaW9uIGZvciB1bm1lcmdlZCBmaWxlcyIKK21zZ3N0ciAiIgorImzhuqV5IHJhIChjaGVja291dCkgcGhpw6puIGLhuqNuIGPhu6dhIGNow7puZyBo4buNIGNobyBjw6FjIHThuq1wIHRpbiBjaMawYSDEkcaw4bujYyBow7JhIHRy4buZbiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTgKK21zZ2lkICJmb3JjZSBjaGVja291dCAodGhyb3cgYXdheSBsb2NhbCBtb2RpZmljYXRpb25zKSIKK21zZ3N0ciAiw6lwIGJ14buZYyBs4bqleSByYSAoY2hlY2tvdXQpIChi4buPIMSRaSBuaOG7r25nIHRoYXkgxJHhu5VpIG7hu5lpIGLhu5kpIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OQorbXNnaWQgInBlcmZvcm0gYSAzLXdheSBtZXJnZSB3aXRoIHRoZSBuZXcgYnJhbmNoIgorbXNnc3RyICJ0aOG7sWMgaGnhu4duIGjDsmEgdHLhu5luIGtp4buDdSAzLXdheSB24bubaSBuaMOhbmggbeG7m2kiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYwIGJ1aWx0aW4vbWVyZ2UuYzoyMTcKK21zZ2lkICJ1cGRhdGUgaWdub3JlZCBmaWxlcyAoZGVmYXVsdCkiCittc2dzdHIgImPhuq1wIG5o4bqtdCBjw6FjIHThuq1wIHRpbiBi4buLIGLhu48gcXVhICht4bq3YyDEkeG7i25oKSIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjEgYnVpbHRpbi9sb2cuYzoxMTU4IHBhcnNlLW9wdGlvbnMuaDoyNDUKK21zZ2lkICJzdHlsZSIKK21zZ3N0ciAia2nhu4N1IgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MgorbXNnaWQgImNvbmZsaWN0IHN0eWxlIChtZXJnZSBvciBkaWZmMykiCittc2dzdHIgInh1bmcgxJHhu5l0IGtp4buDdSAoaMOyYSB0cuG7mW4gaGF5IGRpZmYzKSIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjUKK21zZ2lkICJkbyBub3QgbGltaXQgcGF0aHNwZWNzIHRvIHNwYXJzZSBlbnRyaWVzIG9ubHkiCittc2dzdHIgImtow7RuZyBnaeG7m2kgaOG6oW4gcGF0aHNwZWNzIGNo4buJIHRow6BuaCBjw6FjIG3hu6VjIHRoxrBhIHRo4bubdCIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjcKK21zZ2lkICJzZWNvbmQgZ3Vlc3MgJ2dpdCBjaGVja291dCBuby1zdWNoLWJyYW5jaCciCittc2dzdHIgImfhu6NpIMO9IHRo4bupIGhhaSDigJxnaXQgY2hlY2tvdXQga2jDtG5nLW5ow6FuaC1uw6BvLW5oxrAtduG6rXnigJ0iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDkxCittc2dpZCAiLWIsIC1CIGFuZCAtLW9ycGhhbiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIgorbXNnc3RyICJUw7l5IGNo4buNbiAtYnwtQiB2w6AgLS1vcnBoYW4gbG/huqFpIHThu6sgbOG6q24gbmhhdSIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjExMDgKIG1zZ2lkICItLXRyYWNrIG5lZWRzIGEgYnJhbmNoIG5hbWUiCiBtc2dzdHIgIi0tdHJhY2sgY+G6p24gdMOqbiBt4buZdCBuaMOhbmgiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDAxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTExNQogbXNnaWQgIk1pc3NpbmcgYnJhbmNoIG5hbWU7IHRyeSAtYiIKIG1zZ3N0ciAiVGhp4bq/dSB0w6puIG5ow6FuaDsgaMOjeSB0aOG7rSAtYiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMDcKLW1zZ2lkICItLW9ycGhhbiBhbmQgLWJ8LUIgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSIKLW1zZ3N0ciAiVMO5eSBjaOG7jW4gLS1vcnBoYW4gdsOgIC1ifC1CIGxv4bqhaSB04burIGzhuqtuIG5oYXUiCi0KLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDA5Ci1tc2dpZCAiLS1vcnBoYW4gY2Fubm90IGJlIHVzZWQgd2l0aCAtdCIKLW1zZ3N0ciAiLS1vcnBoYW4ga2jDtG5nIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIHbhu5tpIHTDuXkgY2jhu41uIC10IgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxOQotbXNnaWQgImdpdCBjaGVja291dDogLWYgYW5kIC1tIGFyZSBpbmNvbXBhdGlibGUiCi1tc2dzdHIgImdpdCBjaGVja291dDogLWYgdsOgIC1tIHh1bmcga2jhuq9jIG5oYXUiCi0KLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDUzCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE1MAogbXNnaWQgImludmFsaWQgcGF0aCBzcGVjaWZpY2F0aW9uIgogbXNnc3RyICLEkcaw4budbmcgZOG6q24gxJHDoyBjaG8ga2jDtG5nIGjhu6NwIGzhu4ciCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE1NwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCi0iZ2l0IGNoZWNrb3V0OiB1cGRhdGluZyBwYXRocyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMuXG4iCisiQ2Fubm90IHVwZGF0ZSBwYXRocyBhbmQgc3dpdGNoIHRvIGJyYW5jaCAnJXMnIGF0IHRoZSBzYW1lIHRpbWUuXG4iCiAiRGlkIHlvdSBpbnRlbmQgdG8gY2hlY2tvdXQgJyVzJyB3aGljaCBjYW4gbm90IGJlIHJlc29sdmVkIGFzIGNvbW1pdD8iCiBtc2dzdHIgIiIKLSJnaXQgY2hlY2tvdXQ6IHZp4buHYyBj4bqtcCBuaOG6rXQgY8OhYyDEkcaw4budbmcgZOG6q24gbMOgIHh1bmcga2jhuq9jIHbhu5tpIHZp4buHYyBjaHV54buDbiDEkeG7lWkgY8OhYyBuaMOhbmguLlxuIgotIkLhuqFuIMSRw6MgY8OzIMO9IMSR4buLbmggY2hlY2tvdXQgJyVzJyBjw6FpIG3DoCBraMO0bmcgdGjhu4MgxJHGsOG7o2MgcGjDom4gZ2nhuqNpIG5oxrAgbMOgIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCk/IgorIktow7RuZyB0aOG7gyBj4bqtcCBuaOG6rXQgdsOgIGNodXnhu4NuIHRow6BuaCBuaMOhbmgg4oCcJXPigJ0gY8O5bmcgbMO6Y1xuIgorIkLhuqFuIMSRw6MgY8OzIMO9IMSR4buLbmggY2hlY2tvdXQg4oCcJXPigJ0gY8OhaSBtw6Aga2jDtG5nIHRo4buDIMSRxrDhu6NjIHBow6JuIGdp4bqjaSBuaMawIGzDoCBs4bqnbiAiCisiY2h1eeG7g24gZ2lhbyAoY29tbWl0KT8iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYzCi1tc2dpZCAiZ2l0IGNoZWNrb3V0OiB1cGRhdGluZyBwYXRocyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMuIgotbXNnc3RyICJnaXQgY2hlY2tvdXQ6IHZp4buHYyBj4bqtcCBuaOG6rXQgY8OhYyDEkcaw4budbmcgZOG6q24gbMOgIHh1bmcga2jhuq9jIHbhu5tpIHZp4buHYyBjaHV54buDbiDEkeG7lWkgY8OhYyBuaMOhbmguIgorIzogYnVpbHRpbi9jaGVja291dC5jOjExNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZ2l0IGNoZWNrb3V0OiAtLWRldGFjaCBkb2VzIG5vdCB0YWtlIGEgcGF0aCBhcmd1bWVudCAnJXMnIgorbXNnc3RyICJnaXQgY2hlY2tvdXQ6IC0tZGV0YWNoIGtow7RuZyBuaOG6rW4gbeG7mXQgxJHhu5FpIHPhu5EgxJHGsOG7nW5nIGThuqtuIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2OAotbXNnaWQgImdpdCBjaGVja291dDogLS1kZXRhY2ggZG9lcyBub3QgdGFrZSBhIHBhdGggYXJndW1lbnQiCi1tc2dzdHIgImdpdCBjaGVja291dDogLS1kZXRhY2gga2jDtG5nIG5o4bqtbiBt4buZdCDEkeG7kWkgc+G7kSDEkcaw4budbmcgZOG6q24iCi0KLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDcxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE2NgogbXNnaWQgIiIKICJnaXQgY2hlY2tvdXQ6IC0tb3Vycy8tLXRoZWlycywgLS1mb3JjZSBhbmQgLS1tZXJnZSBhcmUgaW5jb21wYXRpYmxlIHdoZW5cbiIKICJjaGVja2luZyBvdXQgb2YgdGhlIGluZGV4LiIKIG1zZ3N0ciAiIgogImdpdCBjaGVja291dDogLS1vdXJzLy0tdGhlaXJzLCAtLWZvcmNlIHbDoCAtLW1lcmdlIGzDoCB4dW5nIGto4bqvYyB24bubaSBuaGF1IGtoaVxuIgotImNoZWNrb3V0LiIKKyJjaGVja291dCBi4bqjbmcgbeG7pWMgbOG7pWMgKGluZGV4KS4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDkwCi1tc2dpZCAiQ2Fubm90IHN3aXRjaCBicmFuY2ggdG8gYSBub24tY29tbWl0LiIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIGNodXnhu4NuIMSR4bq/biBt4buZdCBub24tY29tbWl0LiIKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyMAorbXNnaWQgImdpdCBjbGVhbiBbLWRdIFstZl0gWy1uXSBbLXFdIFstZSA8cGF0dGVybj5dIFsteCB8IC1YXSBbLS1dIDxwYXRocz4uLi4iCittc2dzdHIgImdpdCBjbGVhbiBbLWRdIFstZl0gWy1uXSBbLXFdIFstZSA8beG6q3U+XSBbLXggfCAtWF0gWy0tXSA8xJHGsOG7nW5nLWThuqtuPi4uLiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwOTMKLW1zZ2lkICItLW91cnMvLS10aGVpcnMgaXMgaW5jb21wYXRpYmxlIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzLiIKLW1zZ3N0ciAiLS1vdXJzLy0tdGhlaXJzIGzDoCB4dW5nIGto4bqvYyBuaGF1IGtoaSBjaHV54buDbiDEkeG7lWkgY8OhYyBuaMOhbmguIgotCi0jOiBidWlsdGluL2NsZWFuLmM6NzgKLW1zZ2lkICIteCBhbmQgLVggY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiCi1tc2dzdHIgIi14IHbDoCAtWCBraMO0bmcgdGjhu4MgZMO5bmcgY8O5bmcgbeG7mXQgbMO6YyB24bubaSBuaGF1IgotCi0jOiBidWlsdGluL2NsZWFuLmM6ODIKLW1zZ2lkICJjbGVhbi5yZXF1aXJlRm9yY2Ugc2V0IHRvIHRydWUgYW5kIG5laXRoZXIgLW4gbm9yIC1mIGdpdmVuOyByZWZ1c2luZyB0byBjbGVhbiIKLW1zZ3N0ciAiY2xlYW4ucmVxdWlyZUZvcmNlIMSRxrDhu6NjIMSR4bq3dCB0aMOgbmggdHJ1ZSB2w6Aga2jDtG5nIMSRxrBhIHJhIHTDuXkgY2jhu41uICAtbiBtw6AgY8Wpbmcga2jDtG5nIC1mOyB04burIGNo4buRaSBs4buHbmggZOG7jW4gZOG6uXAgKGNsZWFuKSIKLQotIzogYnVpbHRpbi9jbGVhbi5jOjg1Ci1tc2dpZCAiY2xlYW4ucmVxdWlyZUZvcmNlIGRlZmF1bHRzIHRvIHRydWUgYW5kIG5laXRoZXIgLW4gbm9yIC1mIGdpdmVuOyByZWZ1c2luZyB0byBjbGVhbiIKLW1zZ3N0ciAiY2xlYW4ucmVxdWlyZUZvcmNlIG3hurdjIMSR4buLbmggxJHGsOG7o2MgxJHhurd0IHRow6BuaCB0cnVlIHbDoCBraMO0bmcgxJHGsGEgcmEgdMO5eSBjaOG7jW4gIC1uIG3DoCBjxaluZyBraMO0bmcgLWY7IHThu6sgY2jhu5FpIGzhu4duaCBk4buNbiBk4bq5cCAoY2xlYW4pIgotCi0jOiBidWlsdGluL2NsZWFuLmM6MTU1Ci0jOiBidWlsdGluL2NsZWFuLmM6MTc2Ci0jLCBjLWZvcm1hdAotbXNnaWQgIldvdWxkIHJlbW92ZSAlc1xuIgotbXNnc3RyICJDw7MgdGjhu4MgZ+G7oSBi4buPICVzXG4iCi0KLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNTkKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNzkKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJSZW1vdmluZyAlc1xuIgogbXNnc3RyICLEkGFuZyBn4buhIGLhu48gJXNcbiIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjE2MgotIzogYnVpbHRpbi9jbGVhbi5jOjE4MgorIzogYnVpbHRpbi9jbGVhbi5jOjI1CisjLCBjLWZvcm1hdAorbXNnaWQgIldvdWxkIHJlbW92ZSAlc1xuIgorbXNnc3RyICJDw7MgdGjhu4MgZ+G7oSBi4buPICVzXG4iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNgorIywgYy1mb3JtYXQKK21zZ2lkICJTa2lwcGluZyByZXBvc2l0b3J5ICVzXG4iCittc2dzdHIgIsSQYW5nIGLhu48gcXVhIGtobyBjaOG7qWEgJXNcbiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjI3CisjLCBjLWZvcm1hdAorbXNnaWQgIldvdWxkIHNraXAgcmVwb3NpdG9yeSAlc1xuIgorbXNnc3RyICJOw6puIGLhu48gcXVhIGtobyBjaOG7qWEgJXNcbiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjI4CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byByZW1vdmUgJXMiCiBtc2dzdHIgImfhurdwIGzhu5dpIGtoaSBn4buhIGLhu48gJXMiCiAKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjAKK21zZ2lkICJkbyBub3QgcHJpbnQgbmFtZXMgb2YgZmlsZXMgcmVtb3ZlZCIKK21zZ3N0ciAia2jDtG5nIGhp4buDbiB0aOG7iyB0w6puIGPhu6dhIGPDoWMgdOG6rXAgdGluIMSRw6MgZ+G7oSBi4buPIgorCisjOiBidWlsdGluL2NsZWFuLmM6MTYyCittc2dpZCAiZm9yY2UiCittc2dzdHIgIsOpcCBideG7mWMiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjQKK21zZ2lkICJyZW1vdmUgd2hvbGUgZGlyZWN0b3JpZXMiCittc2dzdHIgImfhu6EgYuG7jyB0b8OgbiBi4buZIHRoxrAgbeG7pWMiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjUgYnVpbHRpbi9kZXNjcmliZS5jOjQxMiBidWlsdGluL2dyZXAuYzo3MTcKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODcgYnVpbHRpbi9uYW1lLXJldi5jOjIzMSBidWlsdGluL3Nob3ctcmVmLmM6MTgyCittc2dpZCAicGF0dGVybiIKK21zZ3N0ciAibeG6q3UiCisKICM6IGJ1aWx0aW4vY2xlYW4uYzoxNjYKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiV291bGQgbm90IHJlbW92ZSAlc1xuIgotbXNnc3RyICJLaMO0bmcgdGjhu4MgZ+G7oSBi4buPICVzXG4iCittc2dpZCAiYWRkIDxwYXR0ZXJuPiB0byBpZ25vcmUgcnVsZXMiCittc2dzdHIgInRow6ptIDxt4bqrdT4gdsOgbyB0cm9uZyBxdWkgdOG6r2MgYuG7jyBxdWEiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjgKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiTm90IHJlbW92aW5nICVzXG4iCi1tc2dzdHIgIktow7RuZyB4w7NhICVzXG4iCisjOiBidWlsdGluL2NsZWFuLmM6MTY3Cittc2dpZCAicmVtb3ZlIGlnbm9yZWQgZmlsZXMsIHRvbyIKK21zZ3N0ciAixJHhu5NuZyB0aOG7nWkgZ+G7oSBi4buPIGPhuqMgY8OhYyB04bqtcCB0aW4gYuG7iyBi4buPIHF1YSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjI0MwotIywgYy1mb3JtYXQKLW1zZ2lkICJyZWZlcmVuY2UgcmVwb3NpdG9yeSAnJXMnIGlzIG5vdCBhIGxvY2FsIGRpcmVjdG9yeS4iCi1tc2dzdHIgImtobyB0aGFtIGNoaeG6v3UgJyVzJyBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCB0aMawIG3hu6VjIG7hu5lpIGLhu5kuIgorIzogYnVpbHRpbi9jbGVhbi5jOjE2OQorbXNnaWQgInJlbW92ZSBvbmx5IGlnbm9yZWQgZmlsZXMiCittc2dzdHIgImNo4buJIGfhu6EgYuG7jyBuaOG7r25nIHThuq1wIHRpbiBi4buLIGLhu48gcXVhIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzAyCi0jLCBjLWZvcm1hdAotbXNnaWQgImZhaWxlZCB0byBvcGVuICclcyciCi1tc2dzdHIgImfhurdwIGzhu5dpIGtoaSBt4bufICclcyciCisjOiBidWlsdGluL2NsZWFuLmM6MTg3Cittc2dpZCAiLXggYW5kIC1YIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIgorbXNnc3RyICIteCB2w6AgLVgga2jDtG5nIHRo4buDIGTDuW5nIGPDuW5nIG3hu5l0IGzDumMgduG7m2kgbmhhdSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjMwNgorIzogYnVpbHRpbi9jbGVhbi5jOjE5MQorbXNnaWQgIiIKKyJjbGVhbi5yZXF1aXJlRm9yY2Ugc2V0IHRvIHRydWUgYW5kIG5laXRoZXIgLW4gbm9yIC1mIGdpdmVuOyByZWZ1c2luZyB0byBjbGVhbiIKK21zZ3N0ciAiIgorImNsZWFuLnJlcXVpcmVGb3JjZSDEkcaw4bujYyDEkeG6t3QgdGjDoG5oIHRydWUgdsOgIGtow7RuZyDEkcawYSByYSB0w7l5IGNo4buNbiAgLW4gbcOgIGPFqW5nICIKKyJraMO0bmcgLWY7IHThu6sgY2jhu5FpIGzhu4duaCBk4buNbiBk4bq5cCAoY2xlYW4pIgorCisjOiBidWlsdGluL2NsZWFuLmM6MTk0Cittc2dpZCAiIgorImNsZWFuLnJlcXVpcmVGb3JjZSBkZWZhdWx0cyB0byB0cnVlIGFuZCBuZWl0aGVyIC1uIG5vciAtZiBnaXZlbjsgcmVmdXNpbmcgdG8gIgorImNsZWFuIgorbXNnc3RyICIiCisiY2xlYW4ucmVxdWlyZUZvcmNlIG3hurdjIMSR4buLbmggxJHGsOG7o2MgxJHhurd0IHRow6BuaCB0cnVlIHbDoCBraMO0bmcgxJHGsGEgcmEgdMO5eSBjaOG7jW4gIC1uICIKKyJtw6AgY8Wpbmcga2jDtG5nIC1mOyB04burIGNo4buRaSBs4buHbmggZOG7jW4gZOG6uXAgKGNsZWFuKSIKKworIzogYnVpbHRpbi9jbG9uZS5jOjM3Cittc2dpZCAiZ2l0IGNsb25lIFtvcHRpb25zXSBbLS1dIDxyZXBvPiBbPGRpcj5dIgorbXNnc3RyICJnaXQgY2xvbmUgW2PDoWMtdMO5eS1jaOG7jW5dIFstLV0gPGtobz4gWzx0Lm3hu6VjPl0iCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NSBidWlsdGluL2ZldGNoLmM6ODIgYnVpbHRpbi9tZXJnZS5jOjIxNAorIzogYnVpbHRpbi9wdXNoLmM6NDM2Cittc2dpZCAiZm9yY2UgcHJvZ3Jlc3MgcmVwb3J0aW5nIgorbXNnc3RyICLDqXAgYnXhu5ljIGLDoW8gY8OhbyB0aeG6v24gdHLDrG5oIgorCisjOiBidWlsdGluL2Nsb25lLmM6NjcKK21zZ2lkICJkb24ndCBjcmVhdGUgYSBjaGVja291dCIKK21zZ3N0ciAia2jDtG5nIHThuqFvIG3hu5l0IGNoZWNrb3V0IgorCisjOiBidWlsdGluL2Nsb25lLmM6NjggYnVpbHRpbi9jbG9uZS5jOjcwIGJ1aWx0aW4vaW5pdC1kYi5jOjQ4OAorbXNnaWQgImNyZWF0ZSBhIGJhcmUgcmVwb3NpdG9yeSIKK21zZ3N0ciAidOG6oW8ga2hvIGNo4bupYSBiYXJlIgorCisjOiBidWlsdGluL2Nsb25lLmM6NzMKK21zZ2lkICJjcmVhdGUgYSBtaXJyb3IgcmVwb3NpdG9yeSAoaW1wbGllcyBiYXJlKSIKK21zZ3N0ciAidOG6oW8ga2hvIGLhuqNuIHNhbyAobWlycm9yKSAobmfhu6Ugw70gbMOgIGJhcmUpIgorCisjOiBidWlsdGluL2Nsb25lLmM6NzUKK21zZ2lkICJ0byBjbG9uZSBmcm9tIGEgbG9jYWwgcmVwb3NpdG9yeSIKK21zZ3N0ciAixJHhu4MgbmjDom4gYuG6o24gdOG7qyBraG8gbuG7mWkgYuG7mSIKKworIzogYnVpbHRpbi9jbG9uZS5jOjc3Cittc2dpZCAiZG9uJ3QgdXNlIGxvY2FsIGhhcmRsaW5rcywgYWx3YXlzIGNvcHkiCittc2dzdHIgImtow7RuZyBz4butIGThu6VuZyBsacOqbiBr4bq/dCBj4bupbmcgbuG7mWkgYuG7mSwgbHXDtG4gc2FvIGNow6lwIgorCisjOiBidWlsdGluL2Nsb25lLmM6NzkKK21zZ2lkICJzZXR1cCBhcyBzaGFyZWQgcmVwb3NpdG9yeSIKK21zZ3N0ciAiY8OgaSDEkeG6t3QgxJHDonkgbMOgIGtobyBjaGlhIHPhursiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MSBidWlsdGluL2Nsb25lLmM6ODMKK21zZ2lkICJpbml0aWFsaXplIHN1Ym1vZHVsZXMgaW4gdGhlIGNsb25lIgorbXNnc3RyICJraOG7n2kgdOG6oW8gbcO0LcSRdW4tY29uIHRyb25nIGLhuqNuIHNhbyIKKworIzogYnVpbHRpbi9jbG9uZS5jOjg0IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4NQorbXNnaWQgInRlbXBsYXRlLWRpcmVjdG9yeSIKK21zZ3N0ciAidGjGsC1t4bulYy104bqhbSIKKworIzogYnVpbHRpbi9jbG9uZS5jOjg1IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4NgorbXNnaWQgImRpcmVjdG9yeSBmcm9tIHdoaWNoIHRlbXBsYXRlcyB3aWxsIGJlIHVzZWQiCittc2dzdHIgInRoxrAgbeG7pWMgbcOgIHThuqFpIMSRw7MgY8OhYyBt4bqrdSBz4bq9IMSRxrDhu6NjIGTDuW5nIgorCisjOiBidWlsdGluL2Nsb25lLmM6ODcKK21zZ2lkICJyZWZlcmVuY2UgcmVwb3NpdG9yeSIKK21zZ3N0ciAia2hvIHRoYW0gY2hp4bq/dSIKKworIzogYnVpbHRpbi9jbG9uZS5jOjg4IGJ1aWx0aW4vY29sdW1uLmM6MjYgYnVpbHRpbi9tZXJnZS1maWxlLmM6NDQKK21zZ2lkICJuYW1lIgorbXNnc3RyICJ0w6puIgorCisjOiBidWlsdGluL2Nsb25lLmM6ODkKK21zZ2lkICJ1c2UgPG5hbWU+IGluc3RlYWQgb2YgJ29yaWdpbicgdG8gdHJhY2sgdXBzdHJlYW0iCittc2dzdHIgImTDuW5nIDx0w6puPiB0aGF5IHbDrCDigJxvcmlnaW7igJ0gxJHhu4MgdGhlbyBkw7VpIHRoxrDhu6NuZyBuZ3Xhu5NuICh1cHRyZWFtKSIKKworIzogYnVpbHRpbi9jbG9uZS5jOjkxCittc2dpZCAiY2hlY2tvdXQgPGJyYW5jaD4gaW5zdGVhZCBvZiB0aGUgcmVtb3RlJ3MgSEVBRCIKK21zZ3N0ciAibOG6pXkgcmEgbmjDoW5oIChjaGVja291dCA8bmjDoW5oPikgdGhheSB2w6wgSEVBRCBj4bunYSBtw6F5IGNo4bunIgorCisjOiBidWlsdGluL2Nsb25lLmM6OTMKK21zZ2lkICJwYXRoIHRvIGdpdC11cGxvYWQtcGFjayBvbiB0aGUgcmVtb3RlIgorbXNnc3RyICLEkcaw4budbmcgZOG6q24gxJHhur9uIGdpdC11cGxvYWQtcGFjayB0csOqbiBtw6F5IGNo4bunIgorCisjOiBidWlsdGluL2Nsb25lLmM6OTQgYnVpbHRpbi9mZXRjaC5jOjgzIGJ1aWx0aW4vZ3JlcC5jOjY2MgorbXNnaWQgImRlcHRoIgorbXNnc3RyICLEkeG7mSBzw6J1IgorCisjOiBidWlsdGluL2Nsb25lLmM6OTUKK21zZ2lkICJjcmVhdGUgYSBzaGFsbG93IGNsb25lIG9mIHRoYXQgZGVwdGgiCittc2dzdHIgInThuqFvIGLhuqNuIHNhbyBraMO0bmcgxJHhuqd5IMSR4bunIGNobyBt4bupYyBzw6J1IMSRw6MgY2hvIgorCisjOiBidWlsdGluL2Nsb25lLmM6OTcKK21zZ2lkICJjbG9uZSBvbmx5IG9uZSBicmFuY2gsIEhFQUQgb3IgLS1icmFuY2giCittc2dzdHIgIm5ow6JuIGLhuqNuIChjbG9uZSkgY2jhu4kgbeG7mXQgbmjDoW5oLCBIRUFEIGhv4bq3YyAtLWJyYW5jaCIKKworIzogYnVpbHRpbi9jbG9uZS5jOjk4IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NAorbXNnaWQgImdpdGRpciIKK21zZ3N0ciAiZ2l0ZGlyIgorCisjOiBidWlsdGluL2Nsb25lLmM6OTkgYnVpbHRpbi9pbml0LWRiLmM6NDk1Cittc2dpZCAic2VwYXJhdGUgZ2l0IGRpciBmcm9tIHdvcmtpbmcgdHJlZSIKK21zZ3N0ciAia2jDtG5nIGTDuW5nIGNodW5nIHRoxrAgbeG7pWMgZMOgbmggcmnDqm5nIGNobyBnaXQgdsOgIHRoxrAgbeG7pWMgbMOgbSB2aeG7h2MiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzoxMDAKK21zZ2lkICJrZXk9dmFsdWUiCittc2dzdHIgImtow7NhPWdpw6EgdHLhu4siCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzoxMDEKK21zZ2lkICJzZXQgY29uZmlnIGluc2lkZSB0aGUgbmV3IHJlcG9zaXRvcnkiCittc2dzdHIgIsSR4bq3dCBj4bqldSBow6xuaCBiw6puIHRyb25nIG3hu5l0IGtobyBjaOG7qWEgbeG7m2kiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzoyNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVmZXJlbmNlIHJlcG9zaXRvcnkgJyVzJyBpcyBub3QgYSBsb2NhbCByZXBvc2l0b3J5LiIKK21zZ3N0ciAia2hvIHRoYW0gY2hp4bq/dSDigJwlc+KAnSBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCBraG8gbuG7mWkgYuG7mS4iCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJyVzJyIKIG1zZ3N0ciAidOG6oW8gdGjGsCBt4bulYyBcIiVzXCIgZ+G6t3AgbOG7l2kiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMDgKLSM6IGJ1aWx0aW4vZGlmZi5jOjc1CisjOiBidWlsdGluL2Nsb25lLmM6MzE5IGJ1aWx0aW4vZGlmZi5jOjc3CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBzdGF0ICclcyciCi1tc2dzdHIgImfhurdwIGzhu5dpIHN0YXQgKGzhuqV5IHRy4bqhbmcgdGjDoWkgduG7gSkgJyVzJyIKK21zZ3N0ciAiZ+G6t3AgbOG7l2kgc3RhdCAobOG6pXkgdHLhuqFuZyB0aMOhaSB24buBKSDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjMxMAorIzogYnVpbHRpbi9jbG9uZS5jOjMyMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBleGlzdHMgYW5kIGlzIG5vdCBhIGRpcmVjdG9yeSIKIG1zZ3N0ciAiJXMgdOG7k24gdOG6oWkgbmjGsG5nIGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IHRoxrAgbeG7pWMiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMjQKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHN0YXQgJXNcbiIKIG1zZ3N0ciAibOG7l2kgc3RhdCAobOG6pXkgdHLhuqFuZyB0aMOhaSB24buBKSAlc1xuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzQxCi0jLCBjLWZvcm1hdAotbXNnaWQgImZhaWxlZCB0byB1bmxpbmsgJyVzJyIKLW1zZ3N0ciAiYuG7jyBsacOqbiBr4bq/dCAodW5saW5rKSAlcyBraMO0bmcgdGjDoG5oIGPDtG5nIgotCi0jOiBidWlsdGluL2Nsb25lLmM6MzQ2CisjOiBidWlsdGluL2Nsb25lLmM6MzU3CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjcmVhdGUgbGluayAnJXMnIgotbXNnc3RyICJ04bqhbyDEkcaw4bujYyBsacOqbiBr4bq/dCBt4buBbSB04bubaSAlcyBn4bq3cCBs4buXaSIKK21zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIHThuqFvIMSRxrDhu6NjIGxpw6puIGvhur90IG3hu4FtICVzIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzUwCisjOiBidWlsdGluL2Nsb25lLmM6MzYxCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjb3B5IGZpbGUgdG8gJyVzJyIKLW1zZ3N0ciAic2FvIGNow6lwIHThu4dwIHRpbiB04bubaSAnJXMnIGfhurdwIGzhu5dpIgorbXNnc3RyICJn4bq3cCBs4buXaSBraGkgY2jDqXAgdOG6rXAgdGluIHThu5tpIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzczCisjOiBidWlsdGluL2Nsb25lLmM6Mzg0CiAjLCBjLWZvcm1hdAogbXNnaWQgImRvbmUuXG4iCiBtc2dzdHIgImhvw6BuIHThuqV0LlxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NDQwCisjOiBidWlsdGluL2Nsb25lLmM6Mzk3Cittc2dpZCAiIgorIkNsb25lIHN1Y2NlZWRlZCwgYnV0IGNoZWNrb3V0IGZhaWxlZC5cbiIKKyJZb3UgY2FuIGluc3BlY3Qgd2hhdCB3YXMgY2hlY2tlZCBvdXQgd2l0aCAnZ2l0IHN0YXR1cydcbiIKKyJhbmQgcmV0cnkgdGhlIGNoZWNrb3V0IHdpdGggJ2dpdCBjaGVja291dCAtZiBIRUFEJ1xuIgorbXNnc3RyICIiCisiVmnhu4djIG5ow6JuIGLhuqNuIHRow6BuaCBjw7RuZywgbmjGsG5nIGNoZWNrb3V0IGfhurdwIGzhu5dpLlxuIgorIkLhuqFuIGtp4buDbSB0cmEga+G7uSB4ZW0gY8OhaSBnw6wgxJHGsOG7o2MgbOG6pXkgcmEgYuG6sW5nIGzhu4duaCDigJxnaXQgc3RhdHVz4oCdXG4iCisidsOgIHRo4butIGNoZWNrb3V0IHbhu5tpIGzhu4duaCDigJxnaXQgY2hlY2tvdXQgLWYgSEVBROKAnVxuIgorCisjOiBidWlsdGluL2Nsb25lLmM6NDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmaW5kIHJlbW90ZSBicmFuY2ggJXMgdG8gY2xvbmUuIgogbXNnc3RyICJLaMO0bmcgdMOsbSB0aOG6pXkgbmjDoW5oIG3DoXkgY2jhu6cgJXMgxJHhu4MgbmjDom4gYuG6o24gKGNsb25lKS4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo1NDkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo1NTAKK21zZ2lkICJyZW1vdGUgZGlkIG5vdCBzZW5kIGFsbCBuZWNlc3Nhcnkgb2JqZWN0cyIKK21zZ3N0ciAibcOheSBjaOG7pyDEkcOjIGtow7RuZyBn4butaSB04bqldCBj4bqjIGPDoWMgxJHhu5FpIHTGsOG7o25nIGPhuqduIHRoaeG6v3QiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2MTAKIG1zZ2lkICJyZW1vdGUgSEVBRCByZWZlcnMgdG8gbm9uZXhpc3RlbnQgcmVmLCB1bmFibGUgdG8gY2hlY2tvdXQuXG4iCiBtc2dzdHIgInJlZmVycyBIRUFEIG3DoXkgY2jhu6cgIGNo4buJIMSR4bq/biByZWYga2jDtG5nIHThu5NuIHThuqFpLCBraMO0bmcgdGjhu4MgY2hlY2tvdXQuXG4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2MzkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NDEKK21zZ2lkICJ1bmFibGUgdG8gY2hlY2tvdXQgd29ya2luZyB0cmVlIgorbXNnc3RyICJraMO0bmcgdGjhu4MgbOG6pXkgcmEgKGNoZWNrb3V0KSBjw6J5IGzDoG0gdmnhu4djIgorCisjOiBidWlsdGluL2Nsb25lLmM6NzQ5CiBtc2dpZCAiVG9vIG1hbnkgYXJndW1lbnRzLiIKIG1zZ3N0ciAiQ8OzIHF1w6Egbmhp4buBdSDEkeG7kWkgc+G7kS4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NDMKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NTMKIG1zZ2lkICJZb3UgbXVzdCBzcGVjaWZ5IGEgcmVwb3NpdG9yeSB0byBjbG9uZS4iCiBtc2dzdHIgIkLhuqFuIHBo4bqjaSBjaOG7iSDEkeG7i25oIG3hu5l0IGtobyDEkeG7gyBtw6AgbmjDom4gYuG6o24gKGNsb25lKS4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NTQKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiLS1iYXJlIGFuZCAtLW9yaWdpbiAlcyBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgogbXNnc3RyICJ0w7l5IGNo4buNbiAtLWJhcmUgdsOgIC0tb3JpZ2luICVzIHh1bmcga2jhuq9jIG5oYXUuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjY4CisjOiBidWlsdGluL2Nsb25lLmM6NzY3Cittc2dpZCAiLS1iYXJlIGFuZCAtLXNlcGFyYXRlLWdpdC1kaXIgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgInTDuXkgY2jhu41uIC0tYmFyZSB2w6AgLS1zZXBhcmF0ZS1naXQtZGlyIHh1bmcga2jhuq9jIG5oYXUuIgorCisjOiBidWlsdGluL2Nsb25lLmM6NzgwCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlcG9zaXRvcnkgJyVzJyBkb2VzIG5vdCBleGlzdCIKLW1zZ3N0ciAia2hvIGNo4bupYSAnJXMnIGNoxrBhIHThu5NuIHThuqFpIgorbXNnc3RyICJraG8gY2jhu6lhIOKAnCVz4oCdIGNoxrBhIHThu5NuIHThuqFpIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjczCisjOiBidWlsdGluL2Nsb25lLmM6Nzg1CiBtc2dpZCAiLS1kZXB0aCBpcyBpZ25vcmVkIGluIGxvY2FsIGNsb25lczsgdXNlIGZpbGU6Ly8gaW5zdGVhZC4iCiBtc2dzdHIgIi0tZGVwdGggYuG7iyBs4budIMSRaSBraGkgbmjDom4gYuG6o24gbuG7mWkgYuG7mTsgaMOjeSBz4butIGThu6VuZyBmaWxlOi8vIMSR4buDIHRoYXkgdGjhur8uIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjgzCisjOiBidWlsdGluL2Nsb25lLmM6Nzk1CiAjLCBjLWZvcm1hdAogbXNnaWQgImRlc3RpbmF0aW9uIHBhdGggJyVzJyBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90IGFuIGVtcHR5IGRpcmVjdG9yeS4iCi1tc2dzdHIgIsSRxrDhu51uZyBk4bqrbiDEkcOtY2ggJyVzJyDEkcOjIGPDsyB04burIHRyxrDhu5tjIHbDoCBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCB0aMawIG3hu6VjIHLhu5duZy4iCittc2dzdHIgIsSRxrDhu51uZyBk4bqrbiDEkcOtY2gg4oCcJXPigJ0gxJHDoyBjw7MgdOG7qyB0csaw4bubYyB2w6Aga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgdGjGsCBt4bulYyBy4buXbmcuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjkzCisjOiBidWlsdGluL2Nsb25lLmM6ODA1CiAjLCBjLWZvcm1hdAogbXNnaWQgIndvcmtpbmcgdHJlZSAnJXMnIGFscmVhZHkgZXhpc3RzLiIKLW1zZ3N0ciAiY8OieSBsw6BtIHZp4buHYyAnJXMnIMSRw6Mgc+G6tW4gdOG7k24gdOG6oWkgcuG7k2kuIgorbXNnc3RyICJjw6J5IGzDoG0gdmnhu4djIOKAnCVz4oCdIMSRw6Mgc+G6tW4gdOG7k24gdOG6oWkgcuG7k2kuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzA2Ci0jOiBidWlsdGluL2Nsb25lLmM6NzIwCisjOiBidWlsdGluL2Nsb25lLmM6ODE4IGJ1aWx0aW4vY2xvbmUuYzo4MzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGNyZWF0ZSBsZWFkaW5nIGRpcmVjdG9yaWVzIG9mICclcyciCi1tc2dzdHIgImtow7RuZyB0aOG7gyB04bqhbyBjw6FjIHRoxrAgbeG7pWMgZOG6q24gxJHhuqd1IGPhu6dhICclcyciCittc2dzdHIgImtow7RuZyB0aOG7gyB04bqhbyBjw6FjIHRoxrAgbeG7pWMgZOG6q24gxJHhuqd1IGPhu6dhIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzA5CisjOiBidWlsdGluL2Nsb25lLmM6ODIxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgd29yayB0cmVlIGRpciAnJXMnLiIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIHThuqFvIGPDonkgdGjGsCBt4bulYyBsw6BtIHZp4buHYyBkaXIgJyVzJy4iCittc2dzdHIgImtow7RuZyB0aOG7gyB04bqhbyBjw6J5IHRoxrAgbeG7pWMgbMOgbSB2aeG7h2MgZGlyIOKAnCVz4oCdLiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjcyOAorIzogYnVpbHRpbi9jbG9uZS5jOjg0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGludG8gYmFyZSByZXBvc2l0b3J5ICclcycuLi5cbiIKLW1zZ3N0ciAixJBhbmcgbmjDom4gYuG6o24gdGjDoG5oIGtobyBjaOG7qWEgYmFyZSAnJXMnLi4uXG4iCittc2dzdHIgIsSQYW5nIG5ow6JuIGLhuqNuIHRow6BuaCBraG8gY2jhu6lhIGJhcmUg4oCcJXPigJ0uLi5cbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjczMAorIzogYnVpbHRpbi9jbG9uZS5jOjg0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGludG8gJyVzJy4uLlxuIgotbXNnc3RyICLEkGFuZyBuaMOibiBi4bqjbiB0aMOgbmggJyVzJy4uLlxuIgorbXNnc3RyICLEkGFuZyBuaMOibiBi4bqjbiB0aMOgbmgg4oCcJXPigJ0uLi5cbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc4NgorIzogYnVpbHRpbi9jbG9uZS5jOjg3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJEb24ndCBrbm93IGhvdyB0byBjbG9uZSAlcyIKIG1zZ3N0ciAiS2jDtG5nIGJp4bq/dCBsw6BtIGPDoWNoIG7DoG8gxJHhu4MgbmjDom4gYuG6o24gKGNsb25lKSAlcyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjgzNQorIzogYnVpbHRpbi9jbG9uZS5jOjkyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJSZW1vdGUgYnJhbmNoICVzIG5vdCBmb3VuZCBpbiB1cHN0cmVhbSAlcyIKLW1zZ3N0ciAiTmjDoW5oIG3DoXkgY2jhu6cgJXMga2jDtG5nIHTDrG0gdGjhuqV5IHRyb25nIGTDsm5nIG5nxrDhu6NjICh1cHN0cmVhbSkgJXMiCittc2dzdHIgIk5ow6FuaCBtw6F5IGNo4bunICVzIGtow7RuZyB0w6xtIHRo4bqleSB0cm9uZyB0aMaw4bujbmcgbmd14buTbiAodXBzdHJlYW0pICVzIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODQyCisjOiBidWlsdGluL2Nsb25lLmM6OTMzCiBtc2dpZCAiWW91IGFwcGVhciB0byBoYXZlIGNsb25lZCBhbiBlbXB0eSByZXBvc2l0b3J5LiIKIG1zZ3N0ciAiQuG6oW4gaMOsbmggbmjGsCBsw6AgxJHDoyBuaMOibiBi4bqjbiBt4buZdCBraG8gdHLhu5FuZyBy4buXbmcuIgogCisjOiBidWlsdGluL2NvbHVtbi5jOjkKK21zZ2lkICJnaXQgY29sdW1uIFtvcHRpb25zXSIKK21zZ3N0ciAiZ2l0IGNvbHVtbiBbY8OhYy10w7l5LWNo4buNbl0iCisKKyM6IGJ1aWx0aW4vY29sdW1uLmM6MjYKK21zZ2lkICJsb29rdXAgY29uZmlnIHZhcnMiCittc2dzdHIgInTDrG0ga2nhur9tIGJp4bq/biBj4bqldSBow6xuaCIKKworIzogYnVpbHRpbi9jb2x1bW4uYzoyNyBidWlsdGluL2NvbHVtbi5jOjI4Cittc2dpZCAibGF5b3V0IHRvIHVzZSIKK21zZ3N0ciAiYuG7kSBj4bulYyDEkeG7gyBkw7luZyIKKworIzogYnVpbHRpbi9jb2x1bW4uYzoyOQorbXNnaWQgIk1heGltdW0gd2lkdGgiCittc2dzdHIgIsSQ4buZIHLhu5luZyB04buRaSDEkWEiCisKKyM6IGJ1aWx0aW4vY29sdW1uLmM6MzAKK21zZ2lkICJQYWRkaW5nIHNwYWNlIG9uIGxlZnQgYm9yZGVyIgorbXNnc3RyICJDaMOobiB0aMOqbSBraG/huqNuZyB0cuG7kW5nIHbDoG8gYuG7nSBiw6puIHRyw6FpIgorCisjOiBidWlsdGluL2NvbHVtbi5jOjMxCittc2dpZCAiUGFkZGluZyBzcGFjZSBvbiByaWdodCBib3JkZXIiCittc2dzdHIgIkNow6huIHRow6ptIGtob+G6o25nIHRy4bqvbmcgdsOgbyB0aeG6v3AgZ2nDoXAgYsOqbiBwaOG6o2kiCisKKyM6IGJ1aWx0aW4vY29sdW1uLmM6MzIKK21zZ2lkICJQYWRkaW5nIHNwYWNlIGJldHdlZW4gY29sdW1ucyIKK21zZ3N0ciAiQ2jDqG4gdGjDqm0ga2hv4bqjbmcgdHLhuq9uZyBnaeG7r2EgY8OhYyBj4buZdCIKKwogIzogYnVpbHRpbi9jb2x1bW4uYzo1MQogbXNnaWQgIi0tY29tbWFuZCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudCIKIG1zZ3N0ciAiLS1jb21tYW5kIHBo4bqjaSBsw6AgxJHhu5FpIHPhu5EgxJHhuqd1IHRpw6puIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjQzCisjOiBidWlsdGluL2NvbW1pdC5jOjM0Cittc2dpZCAiZ2l0IGNvbW1pdCBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICJnaXQgY29tbWl0IFtjw6FjLXTDuXktY2jhu41uXSBbLS1dIDxwYXRoc3BlYz4uLi4iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzkKK21zZ2lkICJnaXQgc3RhdHVzIFtvcHRpb25zXSBbLS1dIDxwYXRoc3BlYz4uLi4iCittc2dzdHIgImdpdCBzdGF0dXMgW2PDoWMtdMO5eS1jaOG7jW5dIFstLV0gPHBhdGhzcGVjPi4uLiIKKworIzogYnVpbHRpbi9jb21taXQuYzo0NAogbXNnaWQgIiIKICJZb3VyIG5hbWUgYW5kIGVtYWlsIGFkZHJlc3Mgd2VyZSBjb25maWd1cmVkIGF1dG9tYXRpY2FsbHkgYmFzZWRcbiIKICJvbiB5b3VyIHVzZXJuYW1lIGFuZCBob3N0bmFtZS4gUGxlYXNlIGNoZWNrIHRoYXQgdGhleSBhcmUgYWNjdXJhdGUuXG4iCkBAIC0yMTQ3LDI5ICszNzMxLDM1IEBACiAiXG4iCiAiICAgIGdpdCBjb21taXQgLS1hbWVuZCAtLXJlc2V0LWF1dGhvclxuIgogbXNnc3RyICIiCi0iVMOqbiB2w6AgxJHhu4thIGNo4buJIHRoxrAgxJFp4buHbiB04butIGPhu6dhIGLhuqFuIMSRxrDhu6NjIGPhuqV1IGjDrG5oIG3hu5l0IGPDoWNoIHThu7EgxJHhu5luZyB0csOqbiBjxqEgc+G7n1xuIgotInTDoGkga2hv4bqjbiB2w6AgxJHhu4thIGNo4buJIG3DoXkgY2jhu6cgY+G7p2EgYuG6oW4uIFhpbiBow6N5IGtp4buDbSB0cmEgeGVtIGNow7puZyBjw7MgY2jDrW5oIHjDoWMga2jDtG5nLlxuIgotIkLhuqFuIGPDsyB0aOG7gyBjaOG6t24gbmjhu69uZyB0aMO0bmcgYsOhbyBraeG7g3UgbsOgeSBi4bqxbmcgY8OhY2ggY8OgaSDEkeG6t3QgY8OhYyB0aMO0bmcgdGluIHRyw6puIG3hu5l0IGPDoWNoIHLDtSByw6BuZzpcbiIKKyJUw6puIHbDoCDEkeG7i2EgY2jhu4kgdGjGsCDEkWnhu4duIHThu60gY+G7p2EgYuG6oW4gxJHGsOG7o2MgY+G6pXUgaMOsbmggbeG7mXQgY8OhY2ggdOG7sSDEkeG7mW5nIHRyw6puIGPGoSAiCisic+G7n1xuIgorInTDoGkga2hv4bqjbiB2w6AgxJHhu4thIGNo4buJIG3DoXkgY2jhu6cgY+G7p2EgYuG6oW4uIFhpbiBow6N5IGtp4buDbSB0cmEgeGVtIGNow7puZyBjw7MgY2jDrW5oICIKKyJ4w6FjIGtow7RuZy5cbiIKKyJC4bqhbiBjw7MgdGjhu4MgY2jhurduIG5o4buvbmcgdGjDtG5nIGLDoW8ga2nhu4N1IG7DoHkgYuG6sW5nIGPDoWNoIGPDoGkgxJHhurd0IGPDoWMgdGjDtG5nIHRpbiAiCisidHLDqm4gbeG7mXQgY8OhY2ggcsO1IHLDoG5nOlxuIgogIlxuIgogIiAgICBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIubmFtZSBcIlTDqm4gY+G7p2EgYuG6oW5cIlxuIgogIiAgICBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIuZW1haWwgeW91QGV4YW1wbGUuY29tXG4iCiAiXG4iCi0iU2F1IGtoaSB0aOG7sWMgaGnhu4duIHhvbmcsIGLhuqFuIGPDsyB0aOG7gyBz4butYSBjaOG7r2EgxJHhu4tuaCBkYW5oIMSRxrDhu6NjIHPhu60gZOG7pW5nIGNobyBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIG7DoHkgduG7m2kgbOG7h25oOlxuIgorIlNhdSBraGkgdGjhu7FjIGhp4buHbiB4b25nLCBi4bqhbiBjw7MgdGjhu4Mgc+G7rWEgY2jhu69hIMSR4buLbmggZGFuaCDEkcaw4bujYyBz4butIGThu6VuZyBjaG8gbOG6p24gIgorImNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbsOgeSB24bubaSBs4buHbmg6XG4iCiAiXG4iCiAiICAgIGdpdCBjb21taXQgLS1hbWVuZCAtLXJlc2V0LWF1dGhvclxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjU1CisjOiBidWlsdGluL2NvbW1pdC5jOjU2CiBtc2dpZCAiIgogIllvdSBhc2tlZCB0byBhbWVuZCB0aGUgbW9zdCByZWNlbnQgY29tbWl0LCBidXQgZG9pbmcgc28gd291bGQgbWFrZVxuIgogIml0IGVtcHR5LiBZb3UgY2FuIHJlcGVhdCB5b3VyIGNvbW1hbmQgd2l0aCAtLWFsbG93LWVtcHR5LCBvciB5b3UgY2FuXG4iCiAicmVtb3ZlIHRoZSBjb21taXQgZW50aXJlbHkgd2l0aCBcImdpdCByZXNldCBIRUFEXlwiLlxuIgogbXNnc3RyICIiCi0iQuG6oW4gxJHDoyB5w6p1IGPhuqd1IGFtZW5kICh0dSBi4buVKSBwaOG6p24gbOG7m24gY8OhYyBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIGfhuqduIMSRw6J5LCBuaMawbmcgbMOgbSBuaMawIHRo4bq/XG4iCi0iY8OzIHRo4buDIGzDoG0gY2hvIG7DsyB0cuG7nyBuw6puIHRy4buRbmcgcuG7l25nLiBC4bqhbiBjw7MgdGjhu4MgbOG6t3AgbOG6oWkgbOG7h25oIGPhu6dhIG3DrG5oIGLhurFuZyAtLWFsbG93LWVtcHR5LFxuIgorIkLhuqFuIMSRw6MgecOqdSBj4bqndSBhbWVuZCAodHUgYuG7lSkgcGjhuqduIGzhu5tuIGPDoWMgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBn4bqnbiDEkcOieSwgIgorIm5oxrBuZyBsw6BtIG5oxrAgdGjhur9cbiIKKyJjw7MgdGjhu4MgbMOgbSBjaG8gbsOzIHRy4bufIG7Dqm4gdHLhu5FuZyBy4buXbmcuIELhuqFuIGPDsyB0aOG7gyBs4bq3cCBs4bqhaSBs4buHbmggY+G7p2EgbcOsbmggYuG6sW5nICIKKyItLWFsbG93LWVtcHR5LFxuIgogImhv4bq3YyBsw6AgYuG6oW4gZ+G7oSBi4buPIGPDoWMgbOG6p24gY2h1eeG7g24gZ2lhbyBt4buZdCBjw6FjaCBob8OgbiB0b8OgbiBi4bqxbmcgbOG7h25oOlxuIgogIlwiZ2l0IHJlc2V0IEhFQUReXCIuXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjEKIG1zZ2lkICIiCiAiVGhlIHByZXZpb3VzIGNoZXJyeS1waWNrIGlzIG5vdyBlbXB0eSwgcG9zc2libHkgZHVlIHRvIGNvbmZsaWN0IHJlc29sdXRpb24uXG4iCiAiSWYgeW91IHdpc2ggdG8gY29tbWl0IGl0IGFueXdheSwgdXNlOlxuIgpAQCAtMjE3OCwxMDYgKzM3NjgsMTA1IEBACiAiXG4iCiAiT3RoZXJ3aXNlLCBwbGVhc2UgdXNlICdnaXQgcmVzZXQnXG4iCiBtc2dzdHIgIiIKLSJM4bqnbiBjaGVycnktcGljayB0csaw4bubYyBoaeG7h24gbmF5IHRy4buRbmcgcuG7l25nLCBjw7MgbOG6vSBsw6AgYuG7n2kgdsOsIHPhu7EgcGjDom4gZ2nhuqNpIHh1bmcgxJHhu5l0LlxuIgorIkzhuqduIGNoZXJyeS1waWNrIHRyxrDhu5tjIGhp4buHbiBuYXkgdHLhu5FuZyBy4buXbmcsIGPDsyBs4bq9IGzDoCBi4bufaSB2w6wgc+G7sSBwaMOibiBnaeG6o2kgeHVuZyAiCisixJHhu5l0LlxuIgogIk7hur91IGLhuqFuIG114buRbiBjaHV54buDbiBnaWFvIG7DsyBjaG8gZMO5IHRo4bq/IG7DoG8gxJFpIG7hu69hLCBz4butIGThu6VuZzpcbiIKICJcbiIKICIgICAgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5XG4iCiAiXG4iCi0iTuG6v3Uga2jDtG5nLCBow6N5IHRo4butIHPhu60gZOG7pW5nICdnaXQgcmVzZXQnXG4iCisiTuG6v3Uga2jDtG5nLCBow6N5IHRo4butIGTDuW5nIOKAnGdpdCByZXNldOKAnVxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjI1MworIzogYnVpbHRpbi9jb21taXQuYzoyNjAKIG1zZ2lkICJmYWlsZWQgdG8gdW5wYWNrIEhFQUQgdHJlZSBvYmplY3QiCiBtc2dzdHIgImfhurdwIGzhu5dpIGtoaSB0aMOhbyBk4buhIEhFQUQgxJHhu5FpIHTGsOG7o25nIGPDonkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6Mjk1CisjOiBidWlsdGluL2NvbW1pdC5jOjMwMgogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGluZGV4IgogbXNnc3RyICJraMO0bmcgdGjhu4MgdOG6oW8gYuG6o25nIG3hu6VjIGzhu6VjIHThuqFtIHRo4budaSIKIAotIzogYnVpbHRpbi9jb21taXQuYzozMDEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzA4CiBtc2dpZCAiaW50ZXJhY3RpdmUgYWRkIGZhaWxlZCIKIG1zZ3N0ciAidmnhu4djIHRow6ptIHTGsMahbmcgdMOhYyBn4bq3cCBs4buXaSIKIAotIzogYnVpbHRpbi9jb21taXQuYzozMzQKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzU1Ci0jOiBidWlsdGluL2NvbW1pdC5jOjQwNQorIzogYnVpbHRpbi9jb21taXQuYzozNDEgYnVpbHRpbi9jb21taXQuYzozNjIgYnVpbHRpbi9jb21taXQuYzo0MTIKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbmV3X2luZGV4IGZpbGUiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBnaGkgdOG6rXAgdGluIGzGsHUgYuG6o25nIG3hu6VjIGzhu6VjIG3hu5tpIChuZXdfaW5kZXgpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM4NgorIzogYnVpbHRpbi9jb21taXQuYzozOTMKIG1zZ2lkICJjYW5ub3QgZG8gYSBwYXJ0aWFsIGNvbW1pdCBkdXJpbmcgYSBtZXJnZS4iCi1tc2dzdHIgImtow7RuZyB0aOG7gyB0aOG7sWMgaGnhu4duIHZp4buHYyBjaHV54buDbiBnaWFvIChjb21taXQpIGPhu6VjIGLhu5kgdHJvbmcga2hpIMSRYW5nIMSRxrDhu6NjIGjDsmEgdHLhu5luLiIKK21zZ3N0ciAiIgorImtow7RuZyB0aOG7gyB0aOG7sWMgaGnhu4duIHZp4buHYyBjaHV54buDbiBnaWFvIChjb21taXQpIGPhu6VjIGLhu5kgdHJvbmcga2hpIMSRYW5nIMSRxrDhu6NjIGjDsmEgIgorInRy4buZbi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6Mzg4CisjOiBidWlsdGluL2NvbW1pdC5jOjM5NQogbXNnaWQgImNhbm5vdCBkbyBhIHBhcnRpYWwgY29tbWl0IGR1cmluZyBhIGNoZXJyeS1waWNrLiIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIHRo4buxYyBoaeG7h24gdmnhu4djIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgYuG7mSBwaOG6rW4gdHJvbmcga2hpIMSRYW5nIGNoZXJyeS1waWNrLiIKK21zZ3N0ciAiIgorImtow7RuZyB0aOG7gyB0aOG7sWMgaGnhu4duIHZp4buHYyBjaHV54buDbiBnaWFvIChjb21taXQpIGLhu5kgcGjhuq1uIHRyb25nIGtoaSDEkWFuZyBjaGVycnktIgorInBpY2suIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM5OAorIzogYnVpbHRpbi9jb21taXQuYzo0MDUKIG1zZ2lkICJjYW5ub3QgcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgImtow7RuZyDEkeG7jWMgxJHGsOG7o2MgYuG6o25nIG3hu6VjIGzhu6VjIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjQxOAorIzogYnVpbHRpbi9jb21taXQuYzo0MjUKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgdGVtcG9yYXJ5IGluZGV4IGZpbGUiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBnaGkgdOG6rXAgdGluIGzGsHUgYuG6o25nIG3hu6VjIGzhu6VjIHThuqFtIHRo4budaSIKIAotIzogYnVpbHRpbi9jb21taXQuYzo0OTMKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NDk5CisjOiBidWlsdGluL2NvbW1pdC5jOjUxMyBidWlsdGluL2NvbW1pdC5jOjUxOQogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGNvbW1pdDogJXMiCiBtc2dzdHIgImzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkga2jDtG5nIGjhu6NwIGzhu4c6ICVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjUyMgorIzogYnVpbHRpbi9jb21taXQuYzo1NDIKIG1zZ2lkICJtYWxmb3JtZWQgLS1hdXRob3IgcGFyYW1ldGVyIgogbXNnc3RyICLEkeG7kWkgc+G7kSAtLWF1dGhvciBi4buLIGThu4sgaMOsbmgiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTgyCisjOiBidWlsdGluL2NvbW1pdC5jOjU2MgogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWxmb3JtZWQgaWRlbnQgc3RyaW5nOiAnJXMnIgotbXNnc3RyICJDaHXhu5dpIHRo4buldCBs4buBIMSR4bqndSBkw7JuZyBk4buLIGjDrG5oOiAnJXMnIgorbXNnc3RyICJDaHXhu5dpIHRo4buldCBs4buBIMSR4bqndSBkw7JuZyBk4buLIGjDrG5oOiDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MjAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjUzCi0jOiBidWlsdGluL2NvbW1pdC5jOjk2NworIzogYnVpbHRpbi9jb21taXQuYzo2MDAgYnVpbHRpbi9jb21taXQuYzo2MzMgYnVpbHRpbi9jb21taXQuYzo5NTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGxvb2t1cCBjb21taXQgJXMiCiBtc2dzdHIgImtow7RuZyB0aOG7gyB0w6xtIGtp4bq/bSBjb21taXQgKGzhuqduIGNodXnhu4NuIGdpYW8pICVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYzMgotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjI5NgorIzogYnVpbHRpbi9jb21taXQuYzo2MTIgYnVpbHRpbi9zaG9ydGxvZy5jOjI3MAogIywgYy1mb3JtYXQKIG1zZ2lkICIocmVhZGluZyBsb2cgbWVzc2FnZSBmcm9tIHN0YW5kYXJkIGlucHV0KVxuIgogbXNnc3RyICIoxJFhbmcgxJHhu41jIHRow7RuZyDEkWnhu4dwIG5o4bqtdCBrw70gdOG7qyDEkeG6p3UgdsOgbyB0acOqdSBjaHXhuqluKVxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYzNAorIzogYnVpbHRpbi9jb21taXQuYzo2MTQKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBsb2cgZnJvbSBzdGFuZGFyZCBpbnB1dCIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIMSR4buNYyBuaOG6rXQga8O9IHThu6sgxJHhuqd1IHbDoG8gdGnDqnUgY2h14bqpbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MzgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjE4CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkIGxvZyBmaWxlICclcyciCi1tc2dzdHIgImtow7RuZyDEkeG7jWMgxJHGsOG7o2MgdOG7h3Agbmjhuq10IGvDvSAnJXMnIgorbXNnc3RyICJraMO0bmcgxJHhu41jIMSRxrDhu6NjIHThu4dwIG5o4bqtdCBrw70g4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjQ0CisjOiBidWlsdGluL2NvbW1pdC5jOjYyNAogbXNnaWQgImNvbW1pdCBoYXMgZW1wdHkgbWVzc2FnZSIKIG1zZ3N0ciAibOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBjw7MgZ2hpIGNow7ogdHLhu5FuZyBy4buXbmciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjYwCisjOiBidWlsdGluL2NvbW1pdC5jOjY0MAogbXNnaWQgImNvdWxkIG5vdCByZWFkIE1FUkdFX01TRyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIMSR4buNYyBNRVJHRV9NU0ciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjY0CisjOiBidWlsdGluL2NvbW1pdC5jOjY0NAogbXNnaWQgImNvdWxkIG5vdCByZWFkIFNRVUFTSF9NU0ciCiBtc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgU1FVQVNIX01TRyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2NjgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkICclcyciCi1tc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7jWMgJyVzJy4iCittc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7jWMg4oCcJXPigJ0uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjcyMAorIzogYnVpbHRpbi9jb21taXQuYzo3MDkKIG1zZ2lkICJjb3VsZCBub3Qgd3JpdGUgY29tbWl0IHRlbXBsYXRlIgogbXNnc3RyICJraMO0bmcgdGjhu4MgZ2hpIG3huqt1IGNvbW1pdCIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MzEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTIyOTIsNyArMzg4MSw3IEBACiAiXHQlc1xuIgogInbDoCB0aOG7rSBs4bqhaS5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MzYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTIzMDcsMTgyICszODk2LDM5NSBAQAogIlx0JXNcbiIKICJ2w6AgdGjhu60gbOG6oWkuXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzQ4CisjOiBidWlsdGluL2NvbW1pdC5jOjczNworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiUGxlYXNlIGVudGVyIHRoZSBjb21taXQgbWVzc2FnZSBmb3IgeW91ciBjaGFuZ2VzLiBMaW5lcyBzdGFydGluZ1xuIgotIndpdGggJyMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iCisid2l0aCAnJWMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iCiBtc2dzdHIgIiIKLSJIw6N5IG5o4bqtcCB2w6BvIGPDoWMgdGjDtG5nIHRpbiDEkeG7gyBnaeG6o2kgdGjDrWNoIGPDoWMgdGhheSDEkeG7lWkgY+G7p2EgYuG6oW4uIE5o4buvbmcgZMOybmcgxJHGsOG7o2NcbiIKLSJi4bqvdCDEkeG6p3UgYuG6sW5nICcjJyBz4bq9IMSRxrDhu6NjIGLhu48gcXVhLCBwaOG6p24gY2jDuiB0aMOtY2ggbsOgeSBu4bq/dSBy4buXbmcgc+G6vSBsw6BtIGjhu6d5IGLhu48gbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KS5cbiIKKyJIw6N5IG5o4bqtcCB2w6BvIGPDoWMgdGjDtG5nIHRpbiDEkeG7gyBnaeG6o2kgdGjDrWNoIGPDoWMgdGhheSDEkeG7lWkgY+G7p2EgYuG6oW4uIE5o4buvbmcgZMOybmcgIgorIsSRxrDhu6NjXG4iCisiYuG6r3QgxJHhuqd1IGLhurFuZyDigJwlY+KAnSBz4bq9IMSRxrDhu6NjIGLhu48gcXVhLCBu4bq/dSBwaOG6p24gY2jDuiB0aMOtY2ggcuG7l25nIHPhur0gaOG7p3kgYuG7jyBs4bqnbiAiCisiY2h1eeG7g24gZ2lhbyAoY29tbWl0KS5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3NTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzQyCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJQbGVhc2UgZW50ZXIgdGhlIGNvbW1pdCBtZXNzYWdlIGZvciB5b3VyIGNoYW5nZXMuIExpbmVzIHN0YXJ0aW5nXG4iCi0id2l0aCAnIycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIHlvdXJzZWxmIGlmIHlvdSB3YW50IHRvLlxuIgorIndpdGggJyVjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0geW91cnNlbGYgaWYgeW91IHdhbnQgdG8uXG4iCiAiQW4gZW1wdHkgbWVzc2FnZSBhYm9ydHMgdGhlIGNvbW1pdC5cbiIKIG1zZ3N0ciAiIgotIkjDo3kgbmjhuq1wIHbDoG8gY8OhYyB0aMO0bmcgdGluIMSR4buDIGdp4bqjaSB0aMOtY2ggY8OhYyB0aGF5IMSR4buVaSBj4bunYSBi4bqhbi5OaOG7r25nIGTDsm5nIMSRxrDhu6NjXG4iCi0iYuG6r3QgxJHhuqd1IGLhurFuZyAnIycgc+G6vSDEkcaw4bujYyBi4buPIHF1YTsgYuG6oW4gY8OzIHRo4buDIHjDs2EgY2jDum5nIMSRaSBu4bq/dSBtdeG7kW4uXG4iCi0iUGjhuqduIGNow7ogdGjDrWNoIG7DoHkgbuG6v3UgcuG7l25nIHPhur0gbMOgbSBo4buneSBi4buPIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkuXG4iCisiSMOjeSBuaOG6rXAgdsOgbyBjw6FjIHRow7RuZyB0aW4gxJHhu4MgZ2nhuqNpIHRow61jaCBjw6FjIHRoYXkgxJHhu5VpIGPhu6dhIGLhuqFuLiBOaOG7r25nIGTDsm5nICIKKyLEkcaw4bujY1xuIgorImLhuq90IMSR4bqndSBi4bqxbmcg4oCcJWPigJ0gc+G6vSDEkcaw4bujYyBi4buPIHF1YTsgYuG6oW4gY8OzIHRo4buDIHjDs2EgY2jDum5nIMSRaSBu4bq/dSBtdeG7kW4gdGjhur8uXG4iCisiUGjhuqduIGNow7ogdGjDrWNoIG7DoHkgbuG6v3UgdHLhu5FuZyBy4buXbmcgc+G6vSBo4buneSBi4buPIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkuXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzY2CisjOiBidWlsdGluL2NvbW1pdC5jOjc1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIlc0F1dGhvcjogICAgJXMiCiBtc2dzdHIgIiVzVMOhYyBnaeG6ozogICAgJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzczCisjOiBidWlsdGluL2NvbW1pdC5jOjc2MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlc0NvbW1pdHRlcjogJXMiCiBtc2dzdHIgIiVzTmfGsOG7nWkgY2h1eeG7g24gZ2lhbyAoY29tbWl0KTogJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzkzCisjOiBidWlsdGluL2NvbW1pdC5jOjc4MgogbXNnaWQgIkNhbm5vdCByZWFkIGluZGV4IgogbXNnc3RyICJraMO0bmcgxJHhu41jIMSRxrDhu6NjIGLhuqNuZyBt4bulYyBs4bulYyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo4MzAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6ODE5CiBtc2dpZCAiRXJyb3IgYnVpbGRpbmcgdHJlZXMiCiBtc2dzdHIgIkfhurdwIGzhu5dpIGtoaSB4w6J5IGThu7FuZyBjw6J5IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjg0NQotIzogYnVpbHRpbi90YWcuYzozNjEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6ODM0IGJ1aWx0aW4vdGFnLmM6MzU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlBsZWFzZSBzdXBwbHkgdGhlIG1lc3NhZ2UgdXNpbmcgZWl0aGVyIC1tIG9yIC1GIG9wdGlvbi5cbiIKIG1zZ3N0ciAiWGluIGjDo3kgw6FwIGThu6VuZyB0aMO0bmcgxJFp4buHcCBz4butIGThu6VuZyBob+G6t2MgbMOgIHTDuXkgY2jhu41uIC1tIGhv4bq3YyBsw6AgLUYuXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTQyCisjOiBidWlsdGluL2NvbW1pdC5jOjkzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBleGlzdGluZyBhdXRob3IgZm91bmQgd2l0aCAnJXMnIgotbXNnc3RyICJLaMO0bmcgdMOsbSB0aOG6pXkgdMOhYyBnaeG6oyDEkcOjIHPhurVuIGPDsyB24bubaSAnJXMnIgorbXNnc3RyICJLaMO0bmcgdMOsbSB0aOG6pXkgdMOhYyBnaeG6oyBjw7Mgc+G6tW4gduG7m2kg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTU3Ci0jOiBidWlsdGluL2NvbW1pdC5jOjExNTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTQ2IGJ1aWx0aW4vY29tbWl0LmM6MTE0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIHVudHJhY2tlZCBmaWxlcyBtb2RlICclcyciCi1tc2dzdHIgIkNo4bq/IMSR4buZIGNobyBjw6FjIHThuq1wIHRpbiBraMO0bmcgYuG7iyB0aGVvIHbhur90IGtow7RuZyBo4bujcCBs4buHICclcyciCittc2dzdHIgIkNo4bq/IMSR4buZIGNobyBjw6FjIHThuq1wIHRpbiBraMO0bmcgYuG7iyB0aGVvIHbhur90IGtow7RuZyBo4bujcCBs4buHIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk5NworIzogYnVpbHRpbi9jb21taXQuYzo5NzYKIG1zZ2lkICJVc2luZyBib3RoIC0tcmVzZXQtYXV0aG9yIGFuZCAtLWF1dGhvciBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICJT4butIGThu6VuZyBj4bqjIGhhaSB0w7l5IGNo4buNbiAtLXJlc2V0LWF1dGhvciB2w6AgLS1hdXRob3Iga2jDtG5nIGjhu6NwIGzDvSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDA4CisjOiBidWlsdGluL2NvbW1pdC5jOjk4NwogbXNnaWQgIllvdSBoYXZlIG5vdGhpbmcgdG8gYW1lbmQuIgogbXNnc3RyICJLaMO0bmcgY8OzIGfDrCDEkeG7gyBhbWVuZCAodHUgYuG7lSkgY+G6oy4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAxMQorIzogYnVpbHRpbi9jb21taXQuYzo5OTAKIG1zZ2lkICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBtZXJnZSAtLSBjYW5ub3QgYW1lbmQuIgotbXNnc3RyICJC4bqhbiDEkWFuZyDhu58gZ2nhu69hIGPhu6dhIHF1w6EgdHLDrG5oIGjDsmEgdHLhu5luIC0tIGtow7RuZyB0aOG7gyB0aOG7sWMgaGnhu4duIGFtZW5kICh0dSBi4buVKS4iCittc2dzdHIgIiIKKyJC4bqhbiDEkWFuZyDhu58gZ2nhu69hIGPhu6dhIHF1w6EgdHLDrG5oIGjDsmEgdHLhu5luIC0tIGtow7RuZyB0aOG7gyB0aOG7sWMgaGnhu4duIGFtZW5kICh0dSBi4buVKS4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAxMworIzogYnVpbHRpbi9jb21taXQuYzo5OTIKIG1zZ2lkICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjaGVycnktcGljayAtLSBjYW5ub3QgYW1lbmQuIgotbXNnc3RyICJC4bqhbiDEkWFuZyDhu58gZ2nhu69hIGPhu6dhIHF1w6EgdHLDrG5oIGNoZXJyeS1waWNrIC0tIGtow7RuZyB0aOG7gyB0aOG7sWMgaGnhu4duIGFtZW5kICh0dSBi4buVKS4iCittc2dzdHIgIiIKKyJC4bqhbiDEkWFuZyDhu58gZ2nhu69hIGPhu6dhIHF1w6EgdHLDrG5oIGNoZXJyeS1waWNrIC0tIGtow7RuZyB0aOG7gyB0aOG7sWMgaGnhu4duIGFtZW5kICh0dSAiCisiYuG7lSkuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMTYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTk1CiBtc2dpZCAiT3B0aW9ucyAtLXNxdWFzaCBhbmQgLS1maXh1cCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIKIG1zZ3N0ciAiQ8OhYyB0w7l5IGNo4buNbiAtLXNxdWFzaCB2w6AgLS1maXh1cCBraMO0bmcgdGjhu4Mgc+G7rSBk4bulbmcgY8O5bmcgduG7m2kgbmhhdSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDI2CisjOiBidWlsdGluL2NvbW1pdC5jOjEwMDUKIG1zZ2lkICJPbmx5IG9uZSBvZiAtYy8tQy8tRi8tLWZpeHVwIGNhbiBiZSB1c2VkLiIKIG1zZ3N0ciAiQ2jhu4kgbeG7mXQgdMO5eSBjaOG7jW4gdHJvbmcgc+G7kSAtYy8tQy8tRi8tLWZpeHVwIMSRxrDhu6NjIHPhu60gZOG7pW5nIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMjgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAwNwogbXNnaWQgIk9wdGlvbiAtbSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCAtYy8tQy8tRi8tLWZpeHVwLiIKIG1zZ3N0ciAiVMO5eSBjaOG7jW4gLW0ga2jDtG5nIHRo4buDIMSRxrDhu6NjIHThu5UgaOG7o3AgY8O5bmcgduG7m2kgLWMvLUMvLUYvLS1maXh1cC4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzNgorIzogYnVpbHRpbi9jb21taXQuYzoxMDE1CiBtc2dpZCAiLS1yZXNldC1hdXRob3IgY2FuIGJlIHVzZWQgb25seSB3aXRoIC1DLCAtYyBvciAtLWFtZW5kLiIKLW1zZ3N0ciAiLS1yZXNldC1hdXRob3IgY2jhu4kgY8OzIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIHbhu5tpIHTDuXkgY2jhu41uIC1DLCAtYyBoYXkgLS1hbWVuZC4iCittc2dzdHIgIiIKKyItLXJlc2V0LWF1dGhvciBjaOG7iSBjw7MgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgduG7m2kgdMO5eSBjaOG7jW4gLUMsIC1jIGhheSAtLWFtZW5kLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDUzCisjOiBidWlsdGluL2NvbW1pdC5jOjEwMzIKIG1zZ2lkICJPbmx5IG9uZSBvZiAtLWluY2x1ZGUvLS1vbmx5Ly0tYWxsLy0taW50ZXJhY3RpdmUvLS1wYXRjaCBjYW4gYmUgdXNlZC4iCi1tc2dzdHIgIkNo4buJIG3hu5l0IHRyb25nIGPDoWMgdMO5eSBjaOG7jW4gLS1pbmNsdWRlLy0tb25seS8tLWFsbC8tLWludGVyYWN0aXZlLy0tcGF0Y2ggxJHGsOG7o2Mgc+G7rSBk4bulbmcuIgorbXNnc3RyICIiCisiQ2jhu4kgbeG7mXQgdHJvbmcgY8OhYyB0w7l5IGNo4buNbiAtLWluY2x1ZGUvLS1vbmx5Ly0tYWxsLy0taW50ZXJhY3RpdmUvLS1wYXRjaCDEkcaw4bujYyAiCisic+G7rSBk4bulbmcuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzNAogbXNnaWQgIk5vIHBhdGhzIHdpdGggLS1pbmNsdWRlLy0tb25seSBkb2VzIG5vdCBtYWtlIHNlbnNlLiIKIG1zZ3N0ciAiS2jDtG5nIMSRxrDhu51uZyBk4bqrbiB24bubaSBjw6FjIHTDuXkgY2jhu41uIC0taW5jbHVkZS8tLW9ubHkga2jDtG5nIGjhu6NwIGzDvS4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1NworIzogYnVpbHRpbi9jb21taXQuYzoxMDM2CiBtc2dpZCAiQ2xldmVyLi4uIGFtZW5kaW5nIHRoZSBsYXN0IG9uZSB3aXRoIGRpcnR5IGluZGV4LiIKLW1zZ3N0ciAiR2nhu49pLi4uIMSRYW5nIHR1IGLhu5UgY8OhaSBjdeG7kWkgduG7m2kgYuG6o25nIG3hu6VjIGzhu6VjIHBoaSBuZ2jEqWEuIgorbXNnc3RyICJHaeG7j2kuLi4gIHR1IGLhu5UgY8OhaSBjdeG7kWkgduG7m2kgYuG6o25nIG3hu6VjIGzhu6VjIHBoaSBuZ2jEqWEuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzOAogbXNnaWQgIkV4cGxpY2l0IHBhdGhzIHNwZWNpZmllZCB3aXRob3V0IC1pIG5vciAtbzsgYXNzdW1pbmcgLS1vbmx5IHBhdGhzLi4uIgotbXNnc3RyICJOaOG7r25nIMSRxrDhu51uZyBk4bqrbiByw7UgcsOgbmcgxJHGsOG7o2MgY2jhu4kgcmEga2jDtG5nIGPDsyB0w7l5IGNo4buNbiAtaSBjxaluZyBraMO0bmcgLW87IMSRYW5nIGdp4bqjIMSR4buLbmggLS1vbmx5IG5o4buvbmctxJHGsOG7nW5nLWThuqtuLi4uIgorbXNnc3RyICIiCisiTmjhu69uZyDEkcaw4budbmcgZOG6q24gcsO1IHLDoG5nIMSRxrDhu6NjIGNo4buJIHJhIGtow7RuZyBjw7MgdMO5eSBjaOG7jW4gLWkgY8Wpbmcga2jDtG5nIC1vOyDEkWFuZyAiCisiZ2nhuqMgxJHhu4tuaCAtLW9ubHkgbmjhu69uZy3Ekcaw4budbmctZOG6q24uLi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA2OQotIzogYnVpbHRpbi90YWcuYzo1NzcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA0OCBidWlsdGluL3RhZy5jOjU3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGNsZWFudXAgbW9kZSAlcyIKIG1zZ3N0ciAiQ2jhur8gxJHhu5kgZOG7jW4gZOG6uXAga2jDtG5nIGjhu6NwIGzhu4cgJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA3NAorIzogYnVpbHRpbi9jb21taXQuYzoxMDUzCiBtc2dpZCAiUGF0aHMgd2l0aCAtYSBkb2VzIG5vdCBtYWtlIHNlbnNlLiIKIG1zZ3N0ciAiQ8OhYyDEkcaw4budbmcgZOG6q24gduG7m2kgdMO5eSBjaOG7jW4gLWEga2jDtG5nIGjhu6NwIGzDvS4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTI1NworIzogYnVpbHRpbi9jb21taXQuYzoxMDU5IGJ1aWx0aW4vY29tbWl0LmM6MTE5NAorbXNnaWQgIi0tbG9uZyBhbmQgLXogYXJlIGluY29tcGF0aWJsZSIKK21zZ3N0ciAiaGFpIHTDuXkgY2jhu41uIC1sb25nIHbDoCAteiBraMO0bmcgdMawxqFuZyB0aMOtY2ggduG7m2kgbmhhdSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTU0IGJ1aWx0aW4vY29tbWl0LmM6MTM5MAorbXNnaWQgInNob3cgc3RhdHVzIGNvbmNpc2VseSIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIHRy4bqhbmcgdGjDoWkg4bufIGThuqFuZyBzw7pjIHTDrWNoIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNTYgYnVpbHRpbi9jb21taXQuYzoxMzkyCittc2dpZCAic2hvdyBicmFuY2ggaW5mb3JtYXRpb24iCittc2dzdHIgImhp4buDbiB0aOG7iyB0aMO0bmcgdGluIG5ow6FuaCIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTU4IGJ1aWx0aW4vY29tbWl0LmM6MTM5NCBidWlsdGluL3B1c2guYzo0MjYKK21zZ2lkICJtYWNoaW5lLXJlYWRhYmxlIG91dHB1dCIKK21zZ3N0ciAia+G6v3QgeHXhuqV0IGThuqFuZyBtw6F5LWPDsy10aOG7gy3EkeG7jWMiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2MSBidWlsdGluL2NvbW1pdC5jOjEzOTYKK21zZ2lkICJzaG93IHN0YXR1cyBpbiBsb25nIGZvcm1hdCAoZGVmYXVsdCkiCittc2dzdHIgImhp4buDbiB0aOG7iyB0cuG6oW5nIHRow6FpIOG7nyDEkeG7i25oIGThuqFuZyBkw6BpICht4bq3YyDEkeG7i25oKSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTY0IGJ1aWx0aW4vY29tbWl0LmM6MTM5OQorbXNnaWQgInRlcm1pbmF0ZSBlbnRyaWVzIHdpdGggTlVMIgorbXNnc3RyICJjaOG6pW0gZOG7qXQgY8OhYyBt4bulYyBi4bqxbmcgTlVMIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNjYgYnVpbHRpbi9jb21taXQuYzoxNDAyIGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NTkKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjIgYnVpbHRpbi90YWcuYzo0NTkKK21zZ2lkICJtb2RlIgorbXNnc3RyICJjaOG6vyDEkeG7mSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTY3IGJ1aWx0aW4vY29tbWl0LmM6MTQwMgorbXNnaWQgInNob3cgdW50cmFja2VkIGZpbGVzLCBvcHRpb25hbCBtb2RlczogYWxsLCBub3JtYWwsIG5vLiAoRGVmYXVsdDogYWxsKSIKK21zZ3N0ciAiIgorImhp4buDbiB0aOG7iyBjw6FjIHThuq1wIHRpbiBjaMawYSDEkcaw4bujYyB0aGVvIGTDtWkgIGThuqV1IHbhur90LCBjw6FjIGNo4bq/IMSR4buZIHTDuXkgY2jhu41uOiAgYWxsLCAiCisibm9ybWFsLCBuby4gKE3hurdjIMSR4buLbmg6IGFsbCkiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3MAorbXNnaWQgInNob3cgaWdub3JlZCBmaWxlcyIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGPDoWMgdOG6rXAgdGluIOG6qW4iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3MSBwYXJzZS1vcHRpb25zLmg6MTUxCittc2dpZCAid2hlbiIKK21zZ3N0ciAia2hpIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNzIKK21zZ2lkICIiCisiaWdub3JlIGNoYW5nZXMgdG8gc3VibW9kdWxlcywgb3B0aW9uYWwgd2hlbjogYWxsLCBkaXJ0eSwgdW50cmFja2VkLiAiCisiKERlZmF1bHQ6IGFsbCkiCittc2dzdHIgIiIKKyJi4buPIHF1YSBjw6FjIHRoYXkgxJHhu5VpIHRyb25nIG3DtC3EkXVuIGNvbiwgdMO5eSBjaOG7jW4ga2hpOiBhbGwsIGRpcnR5LCB1bnRyYWNrZWQuICIKKyIoTeG6t2MgxJHhu4tuaDogYWxsKSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTc0Cittc2dpZCAibGlzdCB1bnRyYWNrZWQgZmlsZXMgaW4gY29sdW1ucyIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGRhbmggc8OhY2ggY8OhYyB04bqtcC10aW4gY2jGsGEgxJHGsOG7o2MgdGhlbyBkw7VpIHRyb25nIGPDoWMgY+G7mXQiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI0OAogbXNnaWQgImNvdWxkbid0IGxvb2sgdXAgbmV3bHkgY3JlYXRlZCBjb21taXQiCiBtc2dzdHIgImtow7RuZyB0aOG7gyB0w6xtIHRo4bqleSBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIG3hu5tpIGjGoW4gxJHDoyDEkcaw4bujYyB04bqhbyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMjU5CisjOiBidWlsdGluL2NvbW1pdC5jOjEyNTAKIG1zZ2lkICJjb3VsZCBub3QgcGFyc2UgbmV3bHkgY3JlYXRlZCBjb21taXQiCi1tc2dzdHIgImtow7RuZyB0aOG7gyBwaMOibiB0w61jaCBjw7ogcGjDoXAgY+G7p2EgxJHhu5FpIHTGsOG7o25nIGNodXnhu4NuIGdpYW8gbeG7m2kgaMahbiDEkcOjIMSRxrDhu6NjIHThuqFvIgorbXNnc3RyICIiCisia2jDtG5nIHRo4buDIHBow6JuIHTDrWNoIGPDuiBwaMOhcCBj4bunYSDEkeG7kWkgdMaw4bujbmcgY2h1eeG7g24gZ2lhbyBt4bubaSBoxqFuIMSRw6MgxJHGsOG7o2MgdOG6oW8iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTMwMAorIzogYnVpbHRpbi9jb21taXQuYzoxMjkxCiBtc2dpZCAiZGV0YWNoZWQgSEVBRCIKIG1zZ3N0ciAixJHDoyBy4budaSBraOG7j2kgSEVBRCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzAyCisjOiBidWlsdGluL2NvbW1pdC5jOjEyOTMKIG1zZ2lkICIgKHJvb3QtY29tbWl0KSIKIG1zZ3N0ciAiIChyb290LWNvbW1pdCkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ0NgorIzogYnVpbHRpbi9jb21taXQuYzoxMzYwCittc2dpZCAic3VwcHJlc3Mgc3VtbWFyeSBhZnRlciBzdWNjZXNzZnVsIGNvbW1pdCIKK21zZ3N0ciAia2jDtG5nIGhp4buDbiB0aOG7iyB04buVbmcga+G6v3Qgc2F1IGtoaSBjaHV54buDbiBnaWFvIHRow6BuaCBjw7RuZyIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzYxCittc2dpZCAic2hvdyBkaWZmIGluIGNvbW1pdCBtZXNzYWdlIHRlbXBsYXRlIgorbXNnc3RyICJoaeG7g24gdGjhu4sgc+G7sSBraMOhYyBiaeG7h3QgdHJvbmcgbeG6q3UgdGluIG5o4bqvbiBjaHV54buDbiBnaWFvIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjMKK21zZ2lkICJDb21taXQgbWVzc2FnZSBvcHRpb25zIgorbXNnc3RyICJDw6FjIHTDuXkgY2jhu41uIGdoaSBjaMO6IGNvbW1pdCIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzY0IGJ1aWx0aW4vdGFnLmM6NDU3Cittc2dpZCAicmVhZCBtZXNzYWdlIGZyb20gZmlsZSIKK21zZ3N0ciAixJHhu41jIGNow7ogdGjDrWNoIHThu6sgdOG6rXAgdGluIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjUKK21zZ2lkICJhdXRob3IiCittc2dzdHIgInTDoWMgZ2nhuqMiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NQorbXNnaWQgIm92ZXJyaWRlIGF1dGhvciBmb3IgY29tbWl0IgorbXNnc3RyICJnaGkgxJHDqCB0w6FjIGdp4bqjIGNobyBjb21taXQiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NiBidWlsdGluL2djLmM6MTc4Cittc2dpZCAiZGF0ZSIKK21zZ3N0ciAibmfDoHkgdGjDoW5nIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjYKK21zZ2lkICJvdmVycmlkZSBkYXRlIGZvciBjb21taXQiCittc2dzdHIgImdoaSDEkcOoIG5nw6B5IHRow6FuZyBjaG8gY29tbWl0IgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjcgYnVpbHRpbi9tZXJnZS5jOjIwOCBidWlsdGluL25vdGVzLmM6NTMzCisjOiBidWlsdGluL25vdGVzLmM6NjkwIGJ1aWx0aW4vdGFnLmM6NDU1Cittc2dpZCAibWVzc2FnZSIKK21zZ3N0ciAidGjDtG5nIMSRaeG7h3AiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NworbXNnaWQgImNvbW1pdCBtZXNzYWdlIgorbXNnc3RyICJjaMO6IHRow61jaCBj4bunYSBs4bqnbiBjb21taXQiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2OAorbXNnaWQgInJldXNlIGFuZCBlZGl0IG1lc3NhZ2UgZnJvbSBzcGVjaWZpZWQgY29tbWl0IgorbXNnc3RyICIiCisiZMO5bmcgbOG6oWkgY8OhYyBnaGkgY2jDuiB04burIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgxJHDoyBjaG8gbmjGsG5nIGPDsyBjaG8gc+G7rWEgY2jhu69hIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjkKK21zZ2lkICJyZXVzZSBtZXNzYWdlIGZyb20gc3BlY2lmaWVkIGNvbW1pdCIKK21zZ3N0ciAiZMO5bmcgbOG6oWkgY8OhYyBnaGkgY2jDuiB04burIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgxJHDoyBjaG8iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MAorbXNnaWQgInVzZSBhdXRvc3F1YXNoIGZvcm1hdHRlZCBtZXNzYWdlIHRvIGZpeHVwIHNwZWNpZmllZCBjb21taXQiCittc2dzdHIgIiIKKyJkw7luZyBnaGkgY2jDuiBjw7MgxJHhu4tuaCBk4bqhbmcgYXV0b3NxdWFzaCDEkeG7gyBz4butYSBjaOG7r2EgbOG6p24gY2h1eeG7g24gZ2lhbyDEkcOjIGNo4buJIHJhIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzEKK21zZ2lkICJ1c2UgYXV0b3NxdWFzaCBmb3JtYXR0ZWQgbWVzc2FnZSB0byBzcXVhc2ggc3BlY2lmaWVkIGNvbW1pdCIKK21zZ3N0ciAiIgorImTDuW5nIGzhu51pIG5o4bqvbiBjw7MgxJHhu4tuaCBk4bqhbmcgdOG7sSDEkeG7mW5nIG7DqW4gxJHhu4MgbsOpbiBs4bqhaSBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gxJHDoyBjaOG7iSAiCisicmEiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MgorbXNnaWQgInRoZSBjb21taXQgaXMgYXV0aG9yZWQgYnkgbWUgbm93ICh1c2VkIHdpdGggLUMvLWMvLS1hbWVuZCkiCittc2dzdHIgIiIKKyJs4bqnbiBjaHV54buDbiBnaWFvIG5o4bqtbiB0w7RpIGzDoCB0w6FjIGdp4bqjICjEkcaw4bujYyBkw7luZyB24bubaSB0w7l5IGNo4buNbiAtQy8tYy8tLWFtZW5kKSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzczIGJ1aWx0aW4vbG9nLmM6MTExMyBidWlsdGluL3JldmVydC5jOjEwOQorbXNnaWQgImFkZCBTaWduZWQtb2ZmLWJ5OiIKK21zZ3N0ciAidGjDqm0gZMOybmcgU2lnbmVkLW9mZi1ieToiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NAorbXNnaWQgInVzZSBzcGVjaWZpZWQgdGVtcGxhdGUgZmlsZSIKK21zZ3N0ciAic+G7rSBk4bulbmcgdOG6rXAgdGluIG3huqt1IMSRw6MgY2hvIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzUKK21zZ2lkICJmb3JjZSBlZGl0IG9mIGNvbW1pdCIKK21zZ3N0ciAiw6lwIGJ14buZYyBz4butYSBs4bqnbiBjb21taXQiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NgorbXNnaWQgImRlZmF1bHQiCittc2dzdHIgIm3hurdjIMSR4buLbmgiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NiBidWlsdGluL3RhZy5jOjQ2MAorbXNnaWQgImhvdyB0byBzdHJpcCBzcGFjZXMgYW5kICNjb21tZW50cyBmcm9tIG1lc3NhZ2UiCittc2dzdHIgImzDoG0gdGjhur8gbsOgbyDEkeG7gyBj4bqvdCBi4buPIGtob+G6o25nIHRy4bqvbmcgdsOgICNnaGljaMO6IHThu6sgbeG6qXUgdGluIG5o4bqvbiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzc3Cittc2dpZCAiaW5jbHVkZSBzdGF0dXMgaW4gY29tbWl0IG1lc3NhZ2UgdGVtcGxhdGUiCittc2dzdHIgImJhbyBn4buTbSBjw6FjIHRy4bqhbmcgdGjDoWkgZ2hpIG3huqt1IGdoaSBjaMO6IGNodXnhu4NuIGdpYW8gKGNvbW1pdCkiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3OCBidWlsdGluL21lcmdlLmM6MjE1IGJ1aWx0aW4vdGFnLmM6NDYxCittc2dpZCAia2V5IGlkIgorbXNnc3RyICJpZCBraMOzYSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzc5IGJ1aWx0aW4vbWVyZ2UuYzoyMTYKK21zZ2lkICJHUEcgc2lnbiBjb21taXQiCittc2dzdHIgImvDvSBs4bqnbiBjb21taXQgZMO5bmcgR1BHIgorCisjLiBlbmQgY29tbWl0IG1lc3NhZ2Ugb3B0aW9ucworIzogYnVpbHRpbi9jb21taXQuYzoxMzgyCittc2dpZCAiQ29tbWl0IGNvbnRlbnRzIG9wdGlvbnMiCittc2dzdHIgIkPDoWMgdMO5eSBu4buZaSBkdW5nIGdoaSBjaMO6IGNvbW1pdCIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzgzCittc2dpZCAiY29tbWl0IGFsbCBjaGFuZ2VkIGZpbGVzIgorbXNnc3RyICJjaHV54buDbiBnaWFvIHThuqV0IGPhuqMgY8OhYyB04bqtcCB0aW4gY8OzIHRoYXkgxJHhu5VpIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODQKK21zZ2lkICJhZGQgc3BlY2lmaWVkIGZpbGVzIHRvIGluZGV4IGZvciBjb21taXQiCittc2dzdHIgInRow6ptIGPDoWMgdOG6rXAgdGluIMSRw6MgY2jhu4kgcmEgdsOgbyBi4bqjbmcgbeG7pWMgbOG7pWMgxJHhu4MgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzg1Cittc2dpZCAiaW50ZXJhY3RpdmVseSBhZGQgZmlsZXMiCittc2dzdHIgInRow6ptIGPDoWMgdOG6rXAtdGluIGLhurFuZyB0xrDGoW5nIHTDoWMiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NgorbXNnaWQgImludGVyYWN0aXZlbHkgYWRkIGNoYW5nZXMiCittc2dzdHIgInRow6ptIGPDoWMgdGhheSDEkeG7lWkgYuG6sW5nIHTGsMahbmcgdMOhYyIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzg3Cittc2dpZCAiY29tbWl0IG9ubHkgc3BlY2lmaWVkIGZpbGVzIgorbXNnc3RyICJjaOG7iSBjaHV54buDbiBnaWFvIGPDoWMgdOG6rXAgdGluIMSRw6MgY2jhu4kgcmEiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4OAorbXNnaWQgImJ5cGFzcyBwcmUtY29tbWl0IGhvb2siCittc2dzdHIgInbDsm5nIHF1YSBtw7NjIChob29rKSBwcmUtY29tbWl0IgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODkKK21zZ2lkICJzaG93IHdoYXQgd291bGQgYmUgY29tbWl0dGVkIgorbXNnc3RyICJoaeG7g24gdGjhu4sgeGVtIGPDoWkgZ8OsIGPDsyB0aOG7gyDEkcaw4bujYyBjaHV54buDbiBnaWFvIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDAKK21zZ2lkICJhbWVuZCBwcmV2aW91cyBjb21taXQiCittc2dzdHIgInR1IGLhu5UgKGFtZW5kKSBs4bqnbiBjb21taXQgdHLGsOG7m2MiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwMQorbXNnaWQgImJ5cGFzcyBwb3N0LXJld3JpdGUgaG9vayIKK21zZ3N0ciAidsOybmcgcXVhIG3Ds2MgKGhvb2spIHBvc3QtcmV3cml0ZSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxNDA2Cittc2dpZCAib2sgdG8gcmVjb3JkIGFuIGVtcHR5IGNoYW5nZSIKK21zZ3N0ciAib2sgxJHhu4MgZ2hpIGzhuqFpIG3hu5l0IHRoYXkgxJHhu5VpIHRy4buRbmcgcuG7l25nIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDkKK21zZ2lkICJvayB0byByZWNvcmQgYSBjaGFuZ2Ugd2l0aCBhbiBlbXB0eSBtZXNzYWdlIgorbXNnc3RyICJvayDEkeG7gyBnaGkgY8OhYyB0aGF5IMSR4buVaSB24bubaSBs4budaSBuaOG6r24gdHLhu5FuZyBy4buXbmciCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ0MQogbXNnaWQgImNvdWxkIG5vdCBwYXJzZSBIRUFEIGNvbW1pdCIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIHBow6JuIHTDrWNoIGNvbW1pdCAobOG6p24gY2h1eeG7g24gZ2lhbykgSEVBRCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDg0Ci0jOiBidWlsdGluL21lcmdlLmM6NTA5CisjOiBidWlsdGluL2NvbW1pdC5jOjE0NzkgYnVpbHRpbi9tZXJnZS5jOjUxMAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiAnJXMnIGZvciByZWFkaW5nIgotbXNnc3RyICJraMO0bmcgdGjhu4MgbeG7nyAlcycgxJHhu4MgxJHhu41jIgorbXNnc3RyICJraMO0bmcgdGjhu4MgbeG7nyDigJwlc+KAnSDEkeG7gyDEkeG7jWMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ5MQorIzogYnVpbHRpbi9jb21taXQuYzoxNDg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvcnJ1cHQgTUVSR0VfSEVBRCBmaWxlICglcykiCiBtc2dzdHIgIlThuq1wIHRpbiBNRVJHRV9IRUFEIHNhaSBo4buPbmcgKCVzKSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDk4CisjOiBidWlsdGluL2NvbW1pdC5jOjE0OTMKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBNRVJHRV9NT0RFIgogbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu41jIE1FUkdFX01PREUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUxNworIzogYnVpbHRpbi9jb21taXQuYzoxNTEyCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkIGNvbW1pdCBtZXNzYWdlOiAlcyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIMSR4buNYyB0aMO0bmcgxJFp4buHcCAobWVzc2FnZSkgY29tbWl0IChs4bqnbiBjaHV54buDbiBnaWFvKTogJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUzMQorIzogYnVpbHRpbi9jb21taXQuYzoxNTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFib3J0aW5nIGNvbW1pdDsgeW91IGRpZCBub3QgZWRpdCB0aGUgbWVzc2FnZS5cbiIKLW1zZ3N0ciAixJBhbmcgYuG7jyBxdWEgdmnhu4djIGNodXnhu4NuIGdpYW8gKGNvbW1pdCk7IGLhuqFuIMSRw6Mga2jDtG5nIGJpw6puIHNv4bqhbiB0aMO0bmcgxJFp4buHcCAobWVzc2FnZSkuXG4iCittc2dzdHIgIiIKKyLEkGFuZyBi4buPIHF1YSB2aeG7h2MgY2h1eeG7g24gZ2lhbyAoY29tbWl0KTsgYuG6oW4gxJHDoyBraMO0bmcgYmnDqm4gc2/huqFuIHRow7RuZyDEkWnhu4dwICIKKyIobWVzc2FnZSkuXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUzNgorIzogYnVpbHRpbi9jb21taXQuYzoxNTMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFib3J0aW5nIGNvbW1pdCBkdWUgdG8gZW1wdHkgY29tbWl0IG1lc3NhZ2UuXG4iCi1tc2dzdHIgIsSQYW5nIGLhu48gcXVhIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgYuG7n2kgdsOsIHRow7RuZyDEkWnhu4dwIGPhu6dhIG7DsyB0cuG7kW5nIHLhu5duZy5cbiIKK21zZ3N0ciAiIgorIsSQYW5nIGLhu48gcXVhIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgYuG7n2kgdsOsIHRow7RuZyDEkWnhu4dwIGPhu6dhIG7DsyB0cuG7kW5nIHLhu5duZy5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTUxCi0jOiBidWlsdGluL21lcmdlLmM6OTM2Ci0jOiBidWlsdGluL21lcmdlLmM6OTYxCisjOiBidWlsdGluL2NvbW1pdC5jOjE1NDYgYnVpbHRpbi9tZXJnZS5jOjg0NyBidWlsdGluL21lcmdlLmM6ODcyCiBtc2dpZCAiZmFpbGVkIHRvIHdyaXRlIGNvbW1pdCBvYmplY3QiCiBtc2dzdHIgImfhurdwIGzhu5dpIGtoaSBnaGkgxJHhu5FpIHTGsOG7o25nIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTU3MgorIzogYnVpbHRpbi9jb21taXQuYzoxNTY3CiBtc2dpZCAiY2Fubm90IGxvY2sgSEVBRCByZWYiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBraMOzYSBIRUFEIHJlZiAodGhhbSBjaGnhur91KSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTc2CisjOiBidWlsdGluL2NvbW1pdC5jOjE1NzEKIG1zZ2lkICJjYW5ub3QgdXBkYXRlIEhFQUQgcmVmIgotbXNnc3RyICJraMO0bmcgdGjhu4MgY+G6rXAgbmjhuq10IEhFQUQgcmVmICh0aGFtIGNoaeG6v3UpIgorbXNnc3RyICJraMO0bmcgdGjhu4MgY+G6rXAgbmjhuq10IHJlZiAodGhhbSBjaGnhur91KSBIRUFEIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1ODcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU4MgogbXNnaWQgIiIKICJSZXBvc2l0b3J5IGhhcyBiZWVuIHVwZGF0ZWQsIGJ1dCB1bmFibGUgdG8gd3JpdGVcbiIKICJuZXdfaW5kZXggZmlsZS4gQ2hlY2sgdGhhdCBkaXNrIGlzIG5vdCBmdWxsIG9yIHF1b3RhIGlzXG4iCkBAIC0yNDkwLDcyICs0MjkyLDIwNSBAQAogbXNnc3RyICIiCiAiS2hvIGNo4bupYSDEkcOjIGhvw6BuIHThuqV0IHZp4buHYyBj4bqtcCBuaOG6rXQsIG5oxrBuZyBraMO0bmcgdGjhu4MgZ2hpIHbDoG9cbiIKICJ04bqtcCB0aW4gbmV3X2luZGV4IChi4bqjbmcgbeG7pWMgbOG7pWMgbeG7m2kpLiBIw6N5IGtp4buDbSB0cmEgeGVtIMSRxKlhIGPDsyBi4buLIMSR4bqneSBxdcOhXG4iCi0iaGF5IHF1b3RhICho4bqhbiBuZ2jhuqFjaCDEkcSpYSBj4bupbmcpIGLhu4sgdsaw4bujdCBxdcOhLCB2w6Agc2F1IMSRw7MgXCJnaXQgcmVzZXQgSEVBRFwiIMSR4buDIGto4bqvYyBwaOG7pWMuIgorImhheSBxdW90YSAoaOG6oW4gbmdo4bqhY2ggxJHEqWEgY+G7qW5nKSBi4buLIHbGsOG7o3QgcXXDoSwgdsOgIHNhdSDEkcOzIFwiZ2l0IHJlc2V0IEhFQURcIiDEkeG7gyAiCisia2jhuq9jIHBo4bulYy4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzQKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NworbXNnaWQgImdpdCBjb25maWcgW29wdGlvbnNdIgorbXNnc3RyICJnaXQgY29uZmlnIFtjw6FjLXTDuXktY2jhu41uXSIKKworIzogYnVpbHRpbi9jb25maWcuYzo1MQorbXNnaWQgIkNvbmZpZyBmaWxlIGxvY2F0aW9uIgorbXNnc3RyICJW4buLIHRyw60gdOG6rXAgdGluIGPhuqV1IGjDrG5oIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjUyCittc2dpZCAidXNlIGdsb2JhbCBjb25maWcgZmlsZSIKK21zZ3N0ciAixJHhurd0IHThuq1wIHRpbiBj4bqldSBow6xuaCBj4bqnbiB0b8OgbiBj4bulYyIKKworIzogYnVpbHRpbi9jb25maWcuYzo1MworbXNnaWQgInVzZSBzeXN0ZW0gY29uZmlnIGZpbGUiCittc2dzdHIgInPhu60gZOG7pW5nIHThuq1wIHRpbiBj4bqldSBow6xuaCBo4buHIHRo4buRbmciCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTQKK21zZ2lkICJ1c2UgcmVwb3NpdG9yeSBjb25maWcgZmlsZSIKK21zZ3N0ciAiZMO5bmcgdOG6rXAgdGluIGPhuqV1IGjDrG5oIGPhu6dhIGtobyIKKworIzogYnVpbHRpbi9jb25maWcuYzo1NQorbXNnaWQgInVzZSBnaXZlbiBjb25maWcgZmlsZSIKK21zZ3N0ciAic+G7rSBk4bulbmcgdOG6rXAgdGluIGPhuqV1IGjDrG5oIMSRw6MgY2hvIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjU2Cittc2dpZCAiQWN0aW9uIgorbXNnc3RyICJIw6BuaCDEkeG7mW5nIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjU3Cittc2dpZCAiZ2V0IHZhbHVlOiBuYW1lIFt2YWx1ZS1yZWdleF0iCittc2dzdHIgImzhuqV5IGdpw6EtdHLhu4s6IHTDqm4gW3ZhbHVlLXJlZ2V4XSIKKworIzogYnVpbHRpbi9jb25maWcuYzo1OAorbXNnaWQgImdldCBhbGwgdmFsdWVzOiBrZXkgW3ZhbHVlLXJlZ2V4XSIKK21zZ3N0ciAibOG6pXkgdOG6pXQgY+G6oyBnacOhLXRy4buLOiBraMOzYSBbdmFsdWUtcmVnZXhdIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjU5Cittc2dpZCAiZ2V0IHZhbHVlcyBmb3IgcmVnZXhwOiBuYW1lLXJlZ2V4IFt2YWx1ZS1yZWdleF0iCittc2dzdHIgImzhuqV5IGdpw6EgdHLhu4sgY2hvIHJlZ2V4cDogbmFtZS1yZWdleCBbdmFsdWUtcmVnZXhdIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjYwCittc2dpZCAicmVwbGFjZSBhbGwgbWF0Y2hpbmcgdmFyaWFibGVzOiBuYW1lIHZhbHVlIFt2YWx1ZV9yZWdleF0iCittc2dzdHIgInRoYXkgdGjhur8gdOG6pXQgY+G6oyBjw6FjIGJp4bq/biBraOG7m3AgbeG6q3U6IHTDqm4gZ2nDoS10cuG7iyBbdmFsdWVfcmVnZXhdIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjYxCittc2dpZCAiYWRkIGEgbmV3IHZhcmlhYmxlOiBuYW1lIHZhbHVlIgorbXNnc3RyICJ0aMOqbSBiaeG6v24gbeG7m2k6IHTDqm4gZ2nDoS10cuG7iyIKKworIzogYnVpbHRpbi9jb25maWcuYzo2MgorbXNnaWQgInJlbW92ZSBhIHZhcmlhYmxlOiBuYW1lIFt2YWx1ZS1yZWdleF0iCittc2dzdHIgImfhu6EgYuG7jyBiaeG6v246IHTDqm4gW3ZhbHVlLXJlZ2V4XSIKKworIzogYnVpbHRpbi9jb25maWcuYzo2MworbXNnaWQgInJlbW92ZSBhbGwgbWF0Y2hlczogbmFtZSBbdmFsdWUtcmVnZXhdIgorbXNnc3RyICJn4buhIGLhu48gbeG7jWkgY8OhaSBraOG7m3A6IHTDqm4gW3ZhbHVlLXJlZ2V4XSIKKworIzogYnVpbHRpbi9jb25maWcuYzo2NAorbXNnaWQgInJlbmFtZSBzZWN0aW9uOiBvbGQtbmFtZSBuZXctbmFtZSIKK21zZ3N0ciAixJHhu5VpIHTDqm4gY2jGsMahbmc6IHTDqm4tY8WpIHTDqm4tbeG7m2kiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjUKK21zZ2lkICJyZW1vdmUgYSBzZWN0aW9uOiBuYW1lIgorbXNnc3RyICJn4buhIGLhu48gY2jGsMahbmc6IHTDqm4iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjYKK21zZ2lkICJsaXN0IGFsbCIKK21zZ3N0ciAibGnhu4d0IGvDqiB04bqldCIKKworIzogYnVpbHRpbi9jb25maWcuYzo2NworbXNnaWQgIm9wZW4gYW4gZWRpdG9yIgorbXNnc3RyICJt4bufIG3hu5l0IHRyw6xuaCBiacOqbiBzb+G6oW4iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjggYnVpbHRpbi9jb25maWcuYzo2OQorbXNnaWQgInNsb3QiCittc2dzdHIgImtoZSIKKworIzogYnVpbHRpbi9jb25maWcuYzo2OAorbXNnaWQgImZpbmQgdGhlIGNvbG9yIGNvbmZpZ3VyZWQ6IFtkZWZhdWx0XSIKK21zZ3N0ciAidMOsbSBj4bqldSBow6xuaCBtw6B1IHPhuq9jOiBbbeG6t2MgxJHhu4tuaF0iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjkKK21zZ2lkICJmaW5kIHRoZSBjb2xvciBzZXR0aW5nOiBbc3Rkb3V0LWlzLXR0eV0iCittc2dzdHIgInTDrG0gY8OhYyBjw6BpIMSR4bq3dCB24buBIG3DoHUgc+G6r2M6IFtzdGRvdXQtbMOgLXR0eV0iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzAKK21zZ2lkICJUeXBlIgorbXNnc3RyICJLaeG7g3UiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzEKK21zZ2lkICJ2YWx1ZSBpcyBcInRydWVcIiBvciBcImZhbHNlXCIiCittc2dzdHIgImdpw6EgdHLhu4sgbMOgIFwidHJ1ZVwiIGhv4bq3YyBcImZhbHNlXCIiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzIKK21zZ2lkICJ2YWx1ZSBpcyBkZWNpbWFsIG51bWJlciIKK21zZ3N0ciAiZ2nDoSB0cuG7iyDhu58gZOG6oW5nIHPhu5EgdGjhuq1wIHBow6JuIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjczCittc2dpZCAidmFsdWUgaXMgLS1ib29sIG9yIC0taW50IgorbXNnc3RyICJnacOhIHRy4buLIGzDoCAtLWJvb2wgaG/hurdjIC0taW50IgorCisjOiBidWlsdGluL2NvbmZpZy5jOjc0Cittc2dpZCAidmFsdWUgaXMgYSBwYXRoIChmaWxlIG9yIGRpcmVjdG9yeSBuYW1lKSIKK21zZ3N0ciAiZ2nDoSB0cuG7iyBsw6AgxJHGsOG7nW5nIGThuqtuICh0w6puIHThuq1wIHRpbiBoYXkgdGjGsCBt4bulYykiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzUKK21zZ2lkICJPdGhlciIKK21zZ3N0ciAiS2jDoWMiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzYKK21zZ2lkICJ0ZXJtaW5hdGUgdmFsdWVzIHdpdGggTlVMIGJ5dGUiCittc2dzdHIgImNo4bqlbSBk4bupdCBnacOhIHRy4buLIHbhu5tpIGJ5dGUgTlVMIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjc3Cittc2dpZCAicmVzcGVjdCBpbmNsdWRlIGRpcmVjdGl2ZXMgb24gbG9va3VwIgorbXNnc3RyICJ0w7RuIHRy4buNbmcga+G7gyBjw6AgY8OhYyBoxrDhu5tuZyB0cm9uZyB0w6xtIGtp4bq/bSIKKworIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6ODIKK21zZ2lkICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIFstSCB8IC0taHVtYW4tcmVhZGFibGVdIgorbXNnc3RyICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIFstSCB8IC0taHVtYW4tcmVhZGFibGVdIgorCisjOiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo5NworbXNnaWQgInByaW50IHNpemVzIGluIGh1bWFuIHJlYWRhYmxlIGZvcm1hdCIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGvDrWNoIGPhu6EgdGhlbyDEkeG7i25oIGThuqFuZyBkw6BuaCBjaG8gbmfGsOG7nWkgxJHhu41jIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MTUKK21zZ2lkICJnaXQgZGVzY3JpYmUgW29wdGlvbnNdIDxjb21taXR0aXNoPioiCittc2dzdHIgImdpdCBkZXNjcmliZSBbY8OhYy10w7l5LWNo4buNbl0gPGNvbW1pdHRpc2g+KiIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjE2Cittc2dpZCAiZ2l0IGRlc2NyaWJlIFtvcHRpb25zXSAtLWRpcnR5IgorbXNnc3RyICJnaXQgZGVzY3JpYmUgW2PDoWMtdMO5eS1jaOG7jW5dIC0tZGlydHkiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiYW5ub3RhdGVkIHRhZyAlcyBub3QgYXZhaWxhYmxlIgogbXNnc3RyICJ0aOG6uyDEkcOjIMSRxrDhu6NjIGdoaSBjaMO6ICVzIGtow7RuZyBz4bq1biDEkeG7gyBkw7luZyIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzOAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJhbm5vdGF0ZWQgdGFnICVzIGhhcyBubyBlbWJlZGRlZCBuYW1lIgogbXNnc3RyICJ0aOG6uyDEkcaw4bujYyBjaMO6IGdp4bqjaSAlcyBraMO0bmcgY8OzIHTDqm4gbmjDum5nIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjQwCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjM5CiAjLCBjLWZvcm1hdAogbXNnaWQgInRhZyAnJXMnIGlzIHJlYWxseSAnJXMnIGhlcmUiCi1tc2dzdHIgInRo4bq7ICclcycgxJHDoyB0aOG7sWMgc+G7sSDhu58gxJHDonkgJyVzJyBy4buTaSIKK21zZ3N0ciAidGjhursg4oCcJXPigJ0gxJHDoyB0aOG7sWMgc+G7sSDhu58gxJHDonkg4oCcJXPigJ0gcuG7k2kiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNjcKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGEgdmFsaWQgb2JqZWN0IG5hbWUgJXMiCiBtc2dzdHIgIktow7RuZyBwaOG6o2kgdMOqbiDEkeG7kWkgdMaw4bujbmcgJXMgaOG7o3AgbOG7hyIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI3MAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjI2OQogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBpcyBub3QgYSB2YWxpZCAnJXMnIG9iamVjdCIKLW1zZ3N0ciAiJXMga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgxJHhu5FpIHTGsOG7o25nICclcycgaOG7o3AgbOG7hyIKK21zZ3N0ciAiJXMga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgxJHhu5FpIHTGsOG7o25nIOKAnCVz4oCdIGjhu6NwIGzhu4ciCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODcKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODYKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gdGFnIGV4YWN0bHkgbWF0Y2hlcyAnJXMnIgotbXNnc3RyICJraMO0bmcgY8OzIHRo4bq7IG7DoG8ga2jhu5twIGNow61uaCB4w6FjIHbhu5tpICclcyciCittc2dzdHIgImtow7RuZyBjw7MgdGjhursgbsOgbyBraOG7m3AgY2jDrW5oIHjDoWMgduG7m2kg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODkKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODgKICMsIGMtZm9ybWF0CiBtc2dpZCAic2VhcmNoaW5nIHRvIGRlc2NyaWJlICVzXG4iCiBtc2dzdHIgIsSQYW5nIHTDrG0ga2nhur9tIMSR4buDIG3DtCB04bqjICVzXG4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozMjkKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozMjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmluaXNoZWQgc2VhcmNoIGF0ICVzXG4iCiBtc2dzdHIgInZp4buHYyB0w6xtIGtp4bq/bSDEkcOjIGvhur90IHRow7pjIHThuqFpICVzXG4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTMKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIk5vIGFubm90YXRlZCB0YWdzIGNhbiBkZXNjcmliZSAnJXMnLlxuIgogIkhvd2V2ZXIsIHRoZXJlIHdlcmUgdW5hbm5vdGF0ZWQgdGFnczogdHJ5IC0tdGFncy4iCiBtc2dzdHIgIiIKLSJLaMO0bmcgY8OzIHRo4bq7IMSRxrDhu6NjIGNow7ogZ2nhuqNpIG7DoG8gxJHGsOG7o2MgbcO0IHThuqMgbMOgICclcycuXG4iCisiS2jDtG5nIGPDsyB0aOG6uyDEkcaw4bujYyBjaMO6IGdp4bqjaSBuw6BvIMSRxrDhu6NjIG3DtCB04bqjIGzDoCDigJwlc+KAnS5cbiIKICJUdXkgbmhpw6puLCDhu58gxJHDonkgY8OzIG5o4buvbmcgdGjhursga2jDtG5nIMSRxrDhu6NjIGNow7ogZ2nhuqNpOiBow6N5IHRo4butIC0tdGFncy4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTcKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIk5vIHRhZ3MgY2FuIGRlc2NyaWJlICclcycuXG4iCiAiVHJ5IC0tYWx3YXlzLCBvciBjcmVhdGUgc29tZSB0YWdzLiIKIG1zZ3N0ciAiIgotIktow7RuZyBjw7MgdGjhursgKHRhZykgY8OzIHRo4buDIG3DtCB04bqjICclcycuXG4iCisiS2jDtG5nIGPDsyB0aOG6uyAodGFnKSBjw7MgdGjhu4MgbcO0IHThuqMg4oCcJXPigJ0uXG4iCiAiSMOjeSB0aOG7rSAtLWFsd2F5cywgaG/hurd0IHThuqFvIG3hu5l0IHPhu5EgdGjhursuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6Mzc4CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6Mzc3CiAjLCBjLWZvcm1hdAogbXNnaWQgInRyYXZlcnNlZCAlbHUgY29tbWl0c1xuIgogbXNnc3RyICLEkcOjIHh1ecOqbiAlbHUgcXVhIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdClcbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjM4MQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjM4MAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibW9yZSB0aGFuICVpIHRhZ3MgZm91bmQ7IGxpc3RlZCAlaSBtb3N0IHJlY2VudFxuIgpAQCAtMjU2NCwxODUgKzQ0OTksMzUxIEBACiAidMOsbSB0aOG6pXkgbmhp4buBdSBoxqFuICVpIHRo4bq7ICh0YWcpOyDEkcOjIGxp4buHdCBrw6ogJWkgZ+G6p24gxJHDonkgbmjhuqV0XG4iCiAiYuG7jyDEkWkgdMOsbSBraeG6v20gdOG6oWkgJXNcbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQzNgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwMgorbXNnaWQgImZpbmQgdGhlIHRhZyB0aGF0IGNvbWVzIGFmdGVyIHRoZSBjb21taXQiCittc2dzdHIgInTDrG0gY8OhYyB0aOG6uyBtw6AgbsOzIMSR4bq/biB0csaw4bubYyBs4bqnbiBjaHV54buDbiBnaWFvIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDAzCittc2dpZCAiZGVidWcgc2VhcmNoIHN0cmF0ZWd5IG9uIHN0ZGVyciIKK21zZ3N0ciAiY2hp4bq/biBsxrDhu6NjIHTDrG0ga2nhur9tIHRyw6puIMSR4bqndSByYSBs4buXaSBjaHXhuqluIHN0ZGVyciIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNAorbXNnaWQgInVzZSBhbnkgcmVmIgorbXNnc3RyICJkw7luZyByZWYgYuG6pXQga+G7syIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNQorbXNnaWQgInVzZSBhbnkgdGFnLCBldmVuIHVuYW5ub3RhdGVkIgorbXNnc3RyICJkw7luZyB0aOG6uyBi4bqldCBr4buzLCBj4bqjIGtoaSDigJx1bmFubm90YXRlZOKAnSIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNgorbXNnaWQgImFsd2F5cyB1c2UgbG9uZyBmb3JtYXQiCittc2dzdHIgImx1w7RuIGTDuW5nIMSR4buLbmggZOG6oW5nIGTDoGkiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDkKK21zZ2lkICJvbmx5IG91dHB1dCBleGFjdCBtYXRjaGVzIgorbXNnc3RyICJjaOG7iSB4deG6pXQgbmjhu69uZyBnw6wga2jhu5twIGNow61uaCB4w6FjIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDExCittc2dpZCAiY29uc2lkZXIgPG4+IG1vc3QgcmVjZW50IHRhZ3MgKGRlZmF1bHQ6IDEwKSIKK21zZ3N0ciAiY29pIG5oxrAgIDxuPiB0aOG6uyBn4bqnbiDEkcOieSBuaOG6pXQgKG3hurdjIMSR4buLbmg6IDEwKSIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxMworbXNnaWQgIm9ubHkgY29uc2lkZXIgdGFncyBtYXRjaGluZyA8cGF0dGVybj4iCittc2dzdHIgImNo4buJIGPDom4gbmjhuq9jIMSR4bq/biBuaOG7r25nIHRo4bq7IGto4bubcCB24bubaSAgPG3huqt1PiIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxNSBidWlsdGluL25hbWUtcmV2LmM6MjM4Cittc2dpZCAic2hvdyBhYmJyZXZpYXRlZCBjb21taXQgb2JqZWN0IGFzIGZhbGxiYWNrIgorbXNnc3RyICJoaeG7g24gdGjhu4sgxJHhu5FpIHTGsOG7o25nIGNodXnhu4NuIGdpYW8gduG6r24gdOG6r3QgbmjGsCBsw6AgZmFsbGJhY2siCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTYKK21zZ2lkICJtYXJrIgorbXNnc3RyICJk4bqldSIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxNworbXNnaWQgImFwcGVuZCA8bWFyaz4gb24gZGlydHkgd29ya2luZyB0cmVlIChkZWZhdWx0OiBcIi1kaXJ0eVwiKSIKK21zZ3N0ciAidGjDqm0gPGThuqV1PiB0csOqbiBjw6J5IHRoxrAgbeG7pWMgbMOgbSB2aeG7h2MgYuG6qW4gKG3hurdjIMSR4buLbmggXCItZGlydHlcIikiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MzUKIG1zZ2lkICItLWxvbmcgaXMgaW5jb21wYXRpYmxlIHdpdGggLS1hYmJyZXY9MCIKIG1zZ3N0ciAiLS1sb25nIGzDoCB4dW5nIGto4bqvYyB24bubaSB0w7l5IGNo4buNbiAtLWFiYnJldj0wIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDYyCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDYxCiBtc2dpZCAiTm8gbmFtZXMgZm91bmQsIGNhbm5vdCBkZXNjcmliZSBhbnl0aGluZy4iCiBtc2dzdHIgIktow7RuZyB0w6xtIHRo4bqleSBjw6FjIHTDqm4sIGtow7RuZyB0aOG7gyBtw7QgdOG6oyBnw6wgY+G6oy4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0ODIKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0ODEKIG1zZ2lkICItLWRpcnR5IGlzIGluY29tcGF0aWJsZSB3aXRoIGNvbW1pdHRpc2hlcyIKIG1zZ3N0ciAiLS1kaXJ0eSBsw6AgeHVuZyBraOG6r2MgduG7m2kgY8OhYyB0w7l5IGNo4buNbiBkw6BuaCBjaG8gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSIKIAotIzogYnVpbHRpbi9kaWZmLmM6NzcKKyM6IGJ1aWx0aW4vZGlmZi5jOjc5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6IG5vdCBhIHJlZ3VsYXIgZmlsZSBvciBzeW1saW5rIgotbXNnc3RyICInJXMnOiBraMO0bmcgcGjhuqNpIHThuq1wIHRpbiBiw6xuaCB0aMaw4budbmcgaGF5IGxpw6puIGvhur90IHTGsOG7o25nIHRyxrBuZyIKK21zZ3N0ciAi4oCcJXPigJ06IGtow7RuZyBwaOG6o2kgdOG6rXAgdGluIGLDrG5oIHRoxrDhu51uZyBoYXkgbGnDqm4ga+G6v3QgdMaw4bujbmcgdHLGsG5nIgogCi0jOiBidWlsdGluL2RpZmYuYzoyMjAKKyM6IGJ1aWx0aW4vZGlmZi5jOjIyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG9wdGlvbjogJXMiCiBtc2dzdHIgInTDuXkgY2jhu41uIHNhaTogJXMiCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjI5NworIzogYnVpbHRpbi9kaWZmLmM6MzA1CiBtc2dpZCAiTm90IGEgZ2l0IHJlcG9zaXRvcnkiCiBtc2dzdHIgIktow7RuZyBwaOG6o2kgbMOgIGtobyBnaXQiCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjM0NworIzogYnVpbHRpbi9kaWZmLmM6MzQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgb2JqZWN0ICclcycgZ2l2ZW4uIgotbXNnc3RyICLEkeG7kWkgdMaw4bujbmcgxJHDoyBjaG8gJyVzJyBraMO0bmcgaOG7o3AgbOG7hy4iCittc2dzdHIgIsSR4buRaSB0xrDhu6NuZyDEkcOjIGNobyDigJwlc+KAnSBraMO0bmcgaOG7o3AgbOG7hy4iCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjM1MgorIzogYnVpbHRpbi9kaWZmLmM6MzUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIm1vcmUgdGhhbiAlZCB0cmVlcyBnaXZlbjogJyVzJyIKLW1zZ3N0ciAixJHDoyBjaOG7iSByYSBuaGnhu4F1IGjGoW4gJWQgY8OieSAodHJlZSk6ICclcyciCittc2dzdHIgIsSRw6MgY2jhu4kgcmEgbmhp4buBdSBoxqFuICVkIGPDonkgKHRyZWUpOiDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9kaWZmLmM6MzYyCisjOiBidWlsdGluL2RpZmYuYzozNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAibW9yZSB0aGFuIHR3byBibG9icyBnaXZlbjogJyVzJyIKLW1zZ3N0ciAixJHDoyBjaG8gbmhp4buBdSBoxqFuIGhhaSDEkeG7kWkgdMaw4bujbmcgYmxvYjogJyVzJyIKK21zZ3N0ciAixJHDoyBjaG8gbmhp4buBdSBoxqFuIGhhaSDEkeG7kWkgdMaw4bujbmcgYmxvYjog4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjM3MAorIzogYnVpbHRpbi9kaWZmLmM6MzcxCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuaGFuZGxlZCBvYmplY3QgJyVzJyBnaXZlbi4iCi1tc2dzdHIgIsSRw6MgY2hvIMSR4buRaSB0xrDhu6NuZyBraMO0bmcgdGjhu4MgbuG6r20gZ2nhu68gJyVzJy4iCittc2dzdHIgIsSRw6MgY2hvIMSR4buRaSB0xrDhu6NuZyBraMO0bmcgdGjhu4MgbuG6r20gZ2nhu68g4oCcJXPigJ0uIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjAwCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6MjIKK21zZ2lkICJnaXQgZmFzdC1leHBvcnQgW3Jldi1saXN0LW9wdHNdIgorbXNnc3RyICJnaXQgZmFzdC1leHBvcnQgW3Jldi1saXN0LW9wdHNdIgorCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjU4Cittc2dpZCAic2hvdyBwcm9ncmVzcyBhZnRlciA8bj4gb2JqZWN0cyIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIHRp4bq/biB0cmnhu4NuIHNhdSA8bj4gxJHhu5FpIHTGsOG7o25nIgorCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYwCittc2dpZCAic2VsZWN0IGhhbmRsaW5nIG9mIHNpZ25lZCB0YWdzIgorbXNnc3RyICJjaOG7jW4gxJFp4buBdSBraGnhu4NuIGPhu6dhIHRo4bq7IMSRw6Mga8O9IgorCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYzCittc2dpZCAic2VsZWN0IGhhbmRsaW5nIG9mIHRhZ3MgdGhhdCB0YWcgZmlsdGVyZWQgb2JqZWN0cyIKK21zZ3N0ciAiY2jhu41uIHPhu7EgeOG7rSBsw70gY+G7p2EgY8OhYyB0aOG6uywgY8OhaSBtw6AgxJHDoW5oIHRo4bq7IGPDoWMgxJHhu5FpIHTGsOG7o25nIMSRxrDhu6NjIGzhu41jIHJhIgorCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY2Cittc2dpZCAiRHVtcCBtYXJrcyB0byB0aGlzIGZpbGUiCittc2dzdHIgIsSQ4buVIGPDoWMgxJHDoW5oIGThuqV1IG7DoHkgdsOgbyB04bqtcC10aW4iCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjgKK21zZ2lkICJJbXBvcnQgbWFya3MgZnJvbSB0aGlzIGZpbGUiCittc2dzdHIgIm5o4bqtcCB2w6BvIMSRw6FuaCBk4bqldSB04burIHThuq1wIHRpbiBuw6B5IgorCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjcwCittc2dpZCAiRmFrZSBhIHRhZ2dlciB3aGVuIHRhZ3MgbGFjayBvbmUiCittc2dzdHIgIkzDoG0gZ2nhuqMgbeG7mXQgY8OhaSB0aOG6uyBraGkgdGjhursgYuG7iyB0aGnhur91IG3hu5l0IGPDoWkiCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzIKK21zZ2lkICJPdXRwdXQgZnVsbCB0cmVlIGZvciBlYWNoIGNvbW1pdCIKK21zZ3N0ciAiWHXhuqV0IHJhIHRvw6BuIGLhu5kgY8OieSBjaG8gbeG7l2kgbOG6p24gY2h1eeG7g24gZ2lhbyIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3NAorbXNnaWQgIlVzZSB0aGUgZG9uZSBmZWF0dXJlIHRvIHRlcm1pbmF0ZSB0aGUgc3RyZWFtIgorbXNnc3RyICJT4butIGThu6VuZyB0w61uaCBuxINuZyBkb25lIMSR4buDIGNo4bqlbSBk4bupdCBsdeG7k25nIGThu68gbGnhu4d1IgorCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc1Cittc2dpZCAiU2tpcCBvdXRwdXQgb2YgYmxvYiBkYXRhIgorbXNnc3RyICJC4buPIHF1YSBr4bq/dCB4deG6pXQgY+G7p2EgZOG7ryBsaeG7h3UgYmxvYiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjIwCittc2dpZCAiZ2l0IGZldGNoIFs8b3B0aW9ucz5dIFs8cmVwb3NpdG9yeT4gWzxyZWZzcGVjPi4uLl1dIgorbXNnc3RyICJnaXQgZmV0Y2ggWzxjw6FjLXTDuXktY2jhu41uPl0gWzxraG8tY2jhu6lhPiBbPHJlZnNwZWM+Li4uXV0iCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyMQorbXNnaWQgImdpdCBmZXRjaCBbPG9wdGlvbnM+XSA8Z3JvdXA+IgorbXNnc3RyICJnaXQgZmV0Y2ggWzxjw6FjLXTDuXktY2jhu41uPl0gWzxuaMOzbT4iCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyMgorbXNnaWQgImdpdCBmZXRjaCAtLW11bHRpcGxlIFs8b3B0aW9ucz5dIFsoPHJlcG9zaXRvcnk+IHwgPGdyb3VwPikuLi5dIgorbXNnc3RyICJnaXQgZmV0Y2ggLS1tdWx0aXBsZSBbPGPDoWMtdMO5eS1jaOG7jW4+XSBbKDxraG8+IHwgPG5ow7NtPikuLi5dIgorCisjOiBidWlsdGluL2ZldGNoLmM6MjMKK21zZ2lkICJnaXQgZmV0Y2ggLS1hbGwgWzxvcHRpb25zPl0iCittc2dzdHIgImdpdCBmZXRjaCAtLWFsbCBbPGPDoWMtdMO5eS1jaOG7jW4+XSIKKworIzogYnVpbHRpbi9mZXRjaC5jOjYwCittc2dpZCAiZmV0Y2ggZnJvbSBhbGwgcmVtb3RlcyIKK21zZ3N0ciAiZmV0Y2ggdOG7qyB04bqldCBj4bqjIGPDoWMgbcOheSBjaOG7pyIKKworIzogYnVpbHRpbi9mZXRjaC5jOjYyCittc2dpZCAiYXBwZW5kIHRvIC5naXQvRkVUQ0hfSEVBRCBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIgorbXNnc3RyICJu4buRaSB0aMOqbSB2w6BvIC5naXQvRkVUQ0hfSEVBRCB0aGF5IHbDrCBnaGkgxJHDqCBsw6puIG7DsyIKKworIzogYnVpbHRpbi9mZXRjaC5jOjY0Cittc2dpZCAicGF0aCB0byB1cGxvYWQgcGFjayBvbiByZW1vdGUgZW5kIgorbXNnc3RyICLEkcaw4budbmcgZOG6q24gxJHhur9uIGfDs2kgKHBhY2spIHThuqNpIGzDqm4gdHLDqm4gbcOheSBjaOG7pyBjdeG7kWkiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo2NQorbXNnaWQgImZvcmNlIG92ZXJ3cml0ZSBvZiBsb2NhbCBicmFuY2giCittc2dzdHIgIsOpcCBideG7mWMgZ2hpIMSRw6ggbMOqbiBuaMOhbmggbuG7mWkgYuG7mSIKKworIzogYnVpbHRpbi9mZXRjaC5jOjY3Cittc2dpZCAiZmV0Y2ggZnJvbSBtdWx0aXBsZSByZW1vdGVzIgorbXNnc3RyICJmZXRjaCB04burIG5oaeG7gXUgbcOheSBjaOG7pyBjw7luZyBsw7pjIgorCisjOiBidWlsdGluL2ZldGNoLmM6NjkKK21zZ2lkICJmZXRjaCBhbGwgdGFncyBhbmQgYXNzb2NpYXRlZCBvYmplY3RzIgorbXNnc3RyICJs4bqleSAoZmV0Y2gpIHThuqV0IGPhuqMgY8OhYyB0aOG6uyBjw7luZyB24bubaSBjw6FjIMSR4buRaSB0xrDhu6NuZyBsacOqbiBxdWFuIMSR4bq/biBuw7MiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3MQorbXNnaWQgImRvIG5vdCBmZXRjaCBhbGwgdGFncyAoLS1uby10YWdzKSIKK21zZ3N0ciAia2jDtG5nIGzhuqV5IChmZXRjaCkgdOG6pXQgY+G6oyBjw6FjIHRo4bq7ICgtLW5vLXRhZ3MpIgorCisjOiBidWlsdGluL2ZldGNoLmM6NzMKK21zZ2lkICJwcnVuZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMgbm8gbG9uZ2VyIG9uIHJlbW90ZSIKK21zZ3N0ciAiIgorImPhuq90IGPhu6V0IChwcnVuZSkgY8OhYyBuaMOhbmgg4oCccmVtb3RlLXRyYWNraW5n4oCdIGtow7RuZyBjw7JuIHThu5NuIHThuqFpIHRyw6puIG3DoXkgY2jhu6cgIgorIm7hu69hIgorCisjOiBidWlsdGluL2ZldGNoLmM6NzQKK21zZ2lkICJvbi1kZW1hbmQiCittc2dzdHIgImtoaS1j4bqnbiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjc1Cittc2dpZCAiY29udHJvbCByZWN1cnNpdmUgZmV0Y2hpbmcgb2Ygc3VibW9kdWxlcyIKK21zZ3N0ciAixJFp4buBdSBraGnhu4NuIHZp4buHYyBs4bqleSB24buBIChmZXRjaCkgxJHhu4cgcXV5IHRyb25nIGPDoWMgbcO0LcSRdW4tY29uIgorCisjOiBidWlsdGluL2ZldGNoLmM6NzkKK21zZ2lkICJrZWVwIGRvd25sb2FkZWQgcGFjayIKK21zZ3N0ciAiZ2nhu68gY8OhYyBnw7NpIMSRw6MgdOG6o2kgduG7gSIKKworIzogYnVpbHRpbi9mZXRjaC5jOjgxCittc2dpZCAiYWxsb3cgdXBkYXRpbmcgb2YgSEVBRCByZWYiCittc2dzdHIgImNobyBwaMOpcCBj4bqtcCBuaOG6rXQgcmVmICh0aGFtIGNoaeG6v3UpIEhFQUQiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4NAorbXNnaWQgImRlZXBlbiBoaXN0b3J5IG9mIHNoYWxsb3cgY2xvbmUiCittc2dzdHIgImzDoG0gc8OidSBoxqFuIGzhu4tjaCBz4butIGPhu6dhIGLhuqNuIHNhbyIKKworIzogYnVpbHRpbi9mZXRjaC5jOjg2Cittc2dpZCAiY29udmVydCB0byBhIGNvbXBsZXRlIHJlcG9zaXRvcnkiCittc2dzdHIgImNodXnhu4NuIMSR4buVaSBob8OgbiB0b8OgbiBzYW5nIGtobyBnaXQiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4OCBidWlsdGluL2xvZy5jOjExMzAKK21zZ2lkICJkaXIiCittc2dzdHIgInRt4bulYyIKKworIzogYnVpbHRpbi9mZXRjaC5jOjg5Cittc2dpZCAicHJlcGVuZCB0aGlzIHRvIHN1Ym1vZHVsZSBwYXRoIG91dHB1dCIKK21zZ3N0ciAic2/huqFuIHPhurVuIGPDoWkgbsOgeSBjaG8ga+G6v3QgeHXhuqV0IMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24iCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5MgorbXNnaWQgImRlZmF1bHQgbW9kZSBmb3IgcmVjdXJzaW9uIgorbXNnc3RyICJjaOG6vyDEkeG7mSBt4bq3YyDEkeG7i25oIGNobyDEkeG7hyBxdWkiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyMDQKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIHJlbW90ZSByZWYgSEVBRCIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHTDrG0gdGjhuqV5IG3DoXkgY2jhu6cgY2hvIHRoYW0gY2hp4bq/dSBIRUFEIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjUzCisjOiBidWlsdGluL2ZldGNoLmM6MjU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIm9iamVjdCAlcyBub3QgZm91bmQiCiBtc2dzdHIgIktow7RuZyB0w6xtIHRo4bqleSDEkeG7kWkgdMaw4bujbmcgJXMiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNTkKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyNjIKIG1zZ2lkICJbdXAgdG8gZGF0ZV0iCiBtc2dzdHIgIlvEkcOjIGPhuq1wIG5o4bqtdF0iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNzMKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiISAlLSpzICUtKnMgLT4gJXMgIChjYW4ndCBmZXRjaCBpbiBjdXJyZW50IGJyYW5jaCkiCi1tc2dzdHIgIiEgJS0qcyAlLSpzIC0+ICVzICAoa2jDtG5nIHRo4buDIGZldGNoIChs4bqleSB24buBKSB0cm9uZyBuaMOhbmggaGnhu4duIGjDoG5oKSIKK21zZ3N0ciAiISAlLSpzICUtKnMgLT4gJXMgIChraMO0bmcgdGjhu4MgZmV0Y2ggKGzhuqV5KSB24buBIG5ow6FuaCBoaeG7h24gaMOgbmgpIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Mjc0Ci0jOiBidWlsdGluL2ZldGNoLmM6MzYwCisjOiBidWlsdGluL2ZldGNoLmM6Mjc3IGJ1aWx0aW4vZmV0Y2guYzozNjMKIG1zZ2lkICJbcmVqZWN0ZWRdIgogbXNnc3RyICJbQuG7iyB04burIGNo4buRaV0iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyODUKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyODgKIG1zZ2lkICJbdGFnIHVwZGF0ZV0iCiBtc2dzdHIgIltj4bqtcCBuaOG6rXQgdGjhurtdIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Mjg3Ci0jOiBidWlsdGluL2ZldGNoLmM6MzIyCi0jOiBidWlsdGluL2ZldGNoLmM6MzQwCisjOiBidWlsdGluL2ZldGNoLmM6MjkwIGJ1aWx0aW4vZmV0Y2guYzozMjUgYnVpbHRpbi9mZXRjaC5jOjM0MwogbXNnaWQgIiAgKHVuYWJsZSB0byB1cGRhdGUgbG9jYWwgcmVmKSIKIG1zZ3N0ciAiICAoa2jDtG5nIHRo4buDIGPhuq1wIG5o4bqtdCB0aGFtIGNoaeG6v3UgKHJlZikgbuG7mWkgYuG7mSkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMDUKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMDgKIG1zZ2lkICJbbmV3IHRhZ10iCiBtc2dzdHIgIlt0aOG6uyBt4bubaV0iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMDgKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMTEKIG1zZ2lkICJbbmV3IGJyYW5jaF0iCiBtc2dzdHIgIltuaMOhbmggbeG7m2ldIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzExCisjOiBidWlsdGluL2ZldGNoLmM6MzE0CiBtc2dpZCAiW25ldyByZWZdIgogbXNnc3RyICJbcmVmICh0aGFtIGNoaeG6v3UpIG3hu5tpXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM1NgorIzogYnVpbHRpbi9mZXRjaC5jOjM1OQogbXNnaWQgInVuYWJsZSB0byB1cGRhdGUgbG9jYWwgcmVmIgogbXNnc3RyICJraMO0bmcgdGjhu4MgY+G6rXAgbmjhuq10IHRoYW0gY2hp4bq/dSAocmVmKSBu4buZaSBi4buZIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzU2CisjOiBidWlsdGluL2ZldGNoLmM6MzU5CiBtc2dpZCAiZm9yY2VkIHVwZGF0ZSIKIG1zZ3N0ciAiY8aw4buhbmcgYuG7qWMgY+G6rXAgbmjhuq10IgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzYyCisjOiBidWlsdGluL2ZldGNoLmM6MzY1CiBtc2dpZCAiKG5vbi1mYXN0LWZvcndhcmQpIgogbXNnc3RyICIobm9uLWZhc3QtZm9yd2FyZCkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozOTMKLSM6IGJ1aWx0aW4vZmV0Y2guYzo2ODUKKyM6IGJ1aWx0aW4vZmV0Y2guYzozOTYgYnVpbHRpbi9mZXRjaC5jOjY4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiAlczogJXNcbiIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIG3hu58gJXM6ICVzXG4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo0MDIKKyM6IGJ1aWx0aW4vZmV0Y2guYzo0MDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgZGlkIG5vdCBzZW5kIGFsbCBuZWNlc3Nhcnkgb2JqZWN0c1xuIgogbXNnc3RyICIlcyDEkcOjIGtow7RuZyBn4butaSB04bqldCBj4bqjIGPDoWMgxJHhu5FpIHTGsOG7o25nIGPhuqduIHRoaeG6v3RcbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjQ4OAorIzogYnVpbHRpbi9mZXRjaC5jOjQ5MQogIywgYy1mb3JtYXQKIG1zZ2lkICJGcm9tICUuKnNcbiIKIG1zZ3N0ciAiVOG7qyAlLipzXG4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo0OTkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1MDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogInNvbWUgbG9jYWwgcmVmcyBjb3VsZCBub3QgYmUgdXBkYXRlZDsgdHJ5IHJ1bm5pbmdcbiIKICIgJ2dpdCByZW1vdGUgcHJ1bmUgJXMnIHRvIHJlbW92ZSBhbnkgb2xkLCBjb25mbGljdGluZyBicmFuY2hlcyIKIG1zZ3N0ciAiIgogIm3hu5l0IHPhu5EgdGhhbSBjaGnhur91IChyZWZzKSBu4buZaSBi4buZIGtow7RuZyB0aOG7gyDEkcaw4bujYyBj4bqtcCBuaOG6rXQ7IGjDo3kgdGjhu60gY2jhuqF5XG4iCi0iICdnaXQgcmVtb3RlIHBydW5lICVzJyDEkeG7gyBi4buPIMSRaSBuaOG7r25nIG5ow6FuaCBjxaksIGhheSBi4buLIHh1bmcgxJHhu5l0IgorIiDigJxnaXQgcmVtb3RlIHBydW5lICVz4oCdIMSR4buDIGLhu48gxJFpIG5o4buvbmcgbmjDoW5oIGPFqSwgaGF5IGLhu4sgeHVuZyDEkeG7mXQiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NDkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgKCVzIHdpbGwgYmVjb21lIGRhbmdsaW5nKSIKLW1zZ3N0ciAiICAgKCVzIHPhur0gdHLhu58gdGjDoG5oIGzhu6duZyBs4bqzbmcgKGtow7RuZyDEkcaw4bujYyBxdeG6o24gbMO9KSkiCittc2dzdHIgIiAgICglcyBz4bq9IHRy4bufIHRow6BuaCBraMO0bmcgxJHhuqd1IChraMO0bmcgxJHGsOG7o2MgcXXhuqNuIGzDvSkpIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTUwCisjOiBidWlsdGluL2ZldGNoLmM6NTUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICglcyBoYXMgYmVjb21lIGRhbmdsaW5nKSIKLW1zZ3N0ciAiICAgKCVzIHBo4bqjaSB0cuG7nyB0aMOgbmggbOG7p25nIGzhurNuZyAoa2jDtG5nIMSRxrDhu6NjIHF14bqjbiBsw70pKSIKK21zZ3N0ciAiICAgKCVzIMSRw6MgdHLhu58gdGjDoG5oIGtow7RuZyDEkeG6p3UgKGtow7RuZyDEkcaw4bujYyBxdeG6o24gbMO9KSkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NTcKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NjAKIG1zZ2lkICJbZGVsZXRlZF0iCiBtc2dzdHIgIlvEkcOjIHjDs2FdIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTU4Ci0jOiBidWlsdGluL3JlbW90ZS5jOjEwNTUKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NjEgYnVpbHRpbi9yZW1vdGUuYzoxMDU1CiBtc2dpZCAiKG5vbmUpIgogbXNnc3RyICIoa2jDtG5nKSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjY3NQorIzogYnVpbHRpbi9mZXRjaC5jOjY3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJSZWZ1c2luZyB0byBmZXRjaCBpbnRvIGN1cnJlbnQgYnJhbmNoICVzIG9mIG5vbi1iYXJlIHJlcG9zaXRvcnkiCi1tc2dzdHIgIlThu6sgY2jhu5FpIHZp4buHYyBs4bqleSAoZmV0Y2gpIHbDoG8gdHJvbmcgbmjDoW5oIGhp4buHbiB04bqhaSAlcyBj4bunYSBt4buZdCBraG8gY2jhu6lhIGtow7RuZyBwaOG6o2kga2hvIHRy4bqnbiAoYmFyZSkiCittc2dzdHIgIiIKKyJU4burIGNo4buRaSB2aeG7h2MgbOG6pXkgKGZldGNoKSB2w6BvIHRyb25nIG5ow6FuaCBoaeG7h24gdOG6oWkgJXMgY+G7p2EgbeG7mXQga2hvIGNo4bupYSBraMO0bmcgIgorInBo4bqjaSBraG8gdHLhuqduIChiYXJlKSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjcwOQorIzogYnVpbHRpbi9mZXRjaC5jOjcxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJEb24ndCBrbm93IGhvdyB0byBmZXRjaCBmcm9tICVzIgogbXNnc3RyICJLaMO0bmcgYmnhur90IGzDoG0gY8OhY2ggbsOgbyDEkeG7gyBs4bqleSB24buBIChmZXRjaCkgdOG7qyAlcyIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjc4NgorIzogYnVpbHRpbi9mZXRjaC5jOjc4OQogIywgYy1mb3JtYXQKIG1zZ2lkICJPcHRpb24gXCIlc1wiIHZhbHVlIFwiJXNcIiBpcyBub3QgdmFsaWQgZm9yICVzIgogbXNnc3RyICJUw7l5IGNo4buNbiBcIiVzXCIgY8OzIGdpw6EgdHLhu4sgXCIlc1wiIGzDoCBraMO0bmcgaOG7o3AgbOG7hyBjaG8gJXMiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo3ODkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3B0aW9uIFwiJXNcIiBpcyBpZ25vcmVkIGZvciAlc1xuIgogbXNnc3RyICJUw7l5IGNo4buNbiBcIiVzXCIgYuG7iyBi4buPIHF1YSB24bubaSAlc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6ODg4CisjOiBidWlsdGluL2ZldGNoLmM6ODk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZldGNoaW5nICVzXG4iCiBtc2dzdHIgIsSQYW5nIGzhuqV5IChmZXRjaCkgJXNcbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg5MAotIzogYnVpbHRpbi9yZW1vdGUuYzoxMDAKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4OTYgYnVpbHRpbi9yZW1vdGUuYzoxMDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZldGNoICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgZmV0Y2ggKGzhuqV5KSAlcyIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjkwNworIzogYnVpbHRpbi9mZXRjaC5jOjkxNQogbXNnaWQgIiIKICJObyByZW1vdGUgcmVwb3NpdG9yeSBzcGVjaWZpZWQuICBQbGVhc2UsIHNwZWNpZnkgZWl0aGVyIGEgVVJMIG9yIGFcbiIKICJyZW1vdGUgbmFtZSBmcm9tIHdoaWNoIG5ldyByZXZpc2lvbnMgc2hvdWxkIGJlIGZldGNoZWQuIgpAQCAtMjc1MCw0MjQgKzQ4NTEsODUyIEBACiAiQ2jGsGEgY2jhu4kgcmEga2hvIGNo4bupYSBtw6F5IGNo4bunLiAgWGluIGjDo3kgY2jhu4kgxJHhu4tuaCBob+G6t2MgbMOgIFVSTCBob+G6t2NcbiIKICJ0w6puIG3DoXkgY2jhu6cgdOG7qyBjw6FpIG3DoCBuaOG7r25nIMSRaeG7g20geMOpdCBkdXnhu4d0IG3hu5tpIGPDsyB0aOG7gyDEkcaw4bujYyBmZXRjaCAobOG6pXkgduG7gSkuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTI3CisjOiBidWlsdGluL2ZldGNoLmM6OTM1CiBtc2dpZCAiWW91IG5lZWQgdG8gc3BlY2lmeSBhIHRhZyBuYW1lLiIKIG1zZ3N0ciAiQuG6oW4gcGjhuqNpIMSR4buLbmggcsO1IHTDqm4gdGjhursuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTc5Ci1tc2dpZCAiZmV0Y2ggLS1hbGwgZG9lcyBub3QgdGFrZSBhIHJlcG9zaXRvcnkgYXJndW1lbnQiCi1tc2dzdHIgImzhu4duaCBs4bqleSB24buBIHPhu60gZOG7pW5nIHTDuXkgY2jhu41uIC0tYWxsIHPhur0ga2jDtG5nIGzhuqV5IMSR4buRaSBz4buRIGtobyBjaOG7qWEiCi0KICM6IGJ1aWx0aW4vZmV0Y2guYzo5ODEKLW1zZ2lkICJmZXRjaCAtLWFsbCBkb2VzIG5vdCBtYWtlIHNlbnNlIHdpdGggcmVmc3BlY3MiCi1tc2dzdHIgImzhu4duaCBs4bqleSB24buBIGZldGNoIHPhu60gZOG7pW5nIHTDuXkgY2jhu41uIC0tYWxsIGtow7RuZyBo4bujcCBsw70gduG7m2kgcmVmc3BlY3MiCittc2dpZCAiLS1kZXB0aCBhbmQgLS11bnNoYWxsb3cgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiCittc2dzdHIgInTDuXkgY2jhu41uIC0tZGVwdGggdsOgIC0tdW5zaGFsbG93IGtow7RuZyB0aOG7gyBz4butIGThu6VuZyBjw7luZyB24bubaSBuaGF1IgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTkyCisjOiBidWlsdGluL2ZldGNoLmM6OTgzCittc2dpZCAiLS11bnNoYWxsb3cgb24gYSBjb21wbGV0ZSByZXBvc2l0b3J5IGRvZXMgbm90IG1ha2Ugc2Vuc2UiCittc2dzdHIgIi0tdW5zaGFsbG93IHRyw6puIGtobyBob8OgbiBjaOG7iW5oIGzDoCBraMO0bmcgaOG7o3AgbMO9IgorCisjOiBidWlsdGluL2ZldGNoLmM6MTAwMgorbXNnaWQgImZldGNoIC0tYWxsIGRvZXMgbm90IHRha2UgYSByZXBvc2l0b3J5IGFyZ3VtZW50IgorbXNnc3RyICJs4buHbmggbOG6pXkgduG7gSBcImZldGNoIC0tYWxsXCIga2jDtG5nIGzhuqV5IMSR4buRaSBz4buRIGtobyBjaOG7qWEiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDA0Cittc2dpZCAiZmV0Y2ggLS1hbGwgZG9lcyBub3QgbWFrZSBzZW5zZSB3aXRoIHJlZnNwZWNzIgorbXNnc3RyICJs4buHbmggbOG6pXkgduG7gSBcImZldGNoIC0tYWxsXCIga2jDtG5nIGjhu6NwIGzDvSB24bubaSByZWZzcGVjcyIKKworIzogYnVpbHRpbi9mZXRjaC5jOjEwMTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gc3VjaCByZW1vdGUgb3IgcmVtb3RlIGdyb3VwOiAlcyIKIG1zZ3N0ciAia2jDtG5nIGPDsyBuaMOzbSBtw6F5IGNo4bunIGhheSBtw6F5IGNo4bunIG5oxrAgdGjhur86ICVzIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MTAwMAorIzogYnVpbHRpbi9mZXRjaC5jOjEwMjMKIG1zZ2lkICJGZXRjaGluZyBhIGdyb3VwIGFuZCBzcGVjaWZ5aW5nIHJlZnNwZWNzIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIlZp4buHYyBs4bqleSB24buBIGPhuqMgbeG7mXQgbmjDs20gdsOgIGNo4buJIMSR4buLbmggcmVmc3BlY3Mga2jDtG5nIGjhu6NwIGzDvSIKIAorIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6MTMKK21zZ2lkICJnaXQgZm10LW1lcmdlLW1zZyBbLW0gPG1lc3NhZ2U+XSBbLS1sb2dbPTxuPl18LS1uby1sb2ddIFstLWZpbGUgPGZpbGU+XSIKK21zZ3N0ciAiIgorImdpdCBmbXQtbWVyZ2UtbXNnIFstbSA8dGjDtG5nIMSRaeG7h3A+XSBbLS1sb2dbPTxuPl18LS1uby1sb2ddIFstLWZpbGUgPHThuq1wLXRpbj5dIgorCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjMgYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY2IGJ1aWx0aW4vZ3JlcC5jOjcwMQorIzogYnVpbHRpbi9tZXJnZS5jOjE4OCBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU1IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzUKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ2IHBhcnNlLW9wdGlvbnMuaDoxMzMgcGFyc2Utb3B0aW9ucy5oOjIzOQorbXNnaWQgIm4iCittc2dzdHIgIm4iCisKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2NAorbXNnaWQgInBvcHVsYXRlIGxvZyB3aXRoIGF0IG1vc3QgPG4+IGVudHJpZXMgZnJvbSBzaG9ydGxvZyIKK21zZ3N0ciAiZ+G6r24gbmjhuq10IGvDvSB24bubaSDDrXQgbmjhuqV0IDxuPiBt4bulYyB04burIGzhu4duaCDigJxzaG9ydGxvZ+KAnSIKKworIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY3Cittc2dpZCAiYWxpYXMgZm9yIC0tbG9nIChkZXByZWNhdGVkKSIKK21zZ3N0ciAiYsOtIGRhbmggY2hvIC0tbG9nIChraMO0bmcgxJHGsOG7o2MgZMO5bmcpIgorCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NzAKK21zZ2lkICJ0ZXh0IgorbXNnc3RyICJ2xINuIGLhuqNuIgorCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NzEKK21zZ2lkICJ1c2UgPHRleHQ+IGFzIHN0YXJ0IG9mIG1lc3NhZ2UiCittc2dzdHIgImTDuW5nIDx2xINuIGLhuqNuIHRoxrDhu51uZz4gxJHhu4MgYuG6r3QgxJHhuqd1IGdoaSBjaMO6IgorCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NzIKK21zZ2lkICJmaWxlIHRvIHJlYWQgZnJvbSIKK21zZ3N0ciAidOG6rXAgdGluIMSR4buDIMSR4buNYyBk4buvIGxp4buHdSB04burIMSRw7MiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6OTc5Cittc2dpZCAiZ2l0IGZvci1lYWNoLXJlZiBbb3B0aW9uc10gWzxwYXR0ZXJuPl0iCittc2dzdHIgImdpdCBmb3ItZWFjaC1yZWYgW2PDoWMtdMO5eS1jaOG7jW5dIFs8beG6q3U+XSIKKworIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzo5OTQKK21zZ2lkICJxdW90ZSBwbGFjZWhvbGRlcnMgc3VpdGFibHkgZm9yIHNoZWxscyIKK21zZ3N0ciAidHLDrWNoIGThuqtuIMSR4buDIHBow7kgaOG7o3AgY2hvIGjhu4cgduG7jyAoc2hlbGwpIgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjk5NgorbXNnaWQgInF1b3RlIHBsYWNlaG9sZGVycyBzdWl0YWJseSBmb3IgcGVybCIKK21zZ3N0ciAidHLDrWNoIGThuqtuIMSR4buDIHBow7kgaOG7o3AgY2hvIHBlcmwiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6OTk4Cittc2dpZCAicXVvdGUgcGxhY2Vob2xkZXJzIHN1aXRhYmx5IGZvciBweXRob24iCittc2dzdHIgInRyw61jaCBk4bqrbiDEkeG7gyBwaMO5IGjhu6NwIGNobyBweXRob24iCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6MTAwMAorbXNnaWQgInF1b3RlIHBsYWNlaG9sZGVycyBzdWl0YWJseSBmb3IgdGNsIgorbXNnc3RyICJ0csOtY2ggZOG6q24gxJHhu4MgcGjDuSBo4bujcCBjaG8gdGNsIgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjEwMDMKK21zZ2lkICJzaG93IG9ubHkgPG4+IG1hdGNoZWQgcmVmcyIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGNo4buJIDxuPiB0aGFtIGNoaeG6v3Uga2jhu5twIgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjEwMDQKK21zZ2lkICJmb3JtYXQiCittc2dzdHIgIsSR4buLbmggZOG6oW5nIgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjEwMDQKK21zZ2lkICJmb3JtYXQgdG8gdXNlIGZvciB0aGUgb3V0cHV0IgorbXNnc3RyICLEkeG7i25oIGThuqFuZyBz4bq9IGTDuW5nIGNobyDEkeG6p3UgcmEiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6MTAwNQorbXNnaWQgImtleSIKK21zZ3N0ciAia2jDs2EiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6MTAwNgorbXNnaWQgImZpZWxkIG5hbWUgdG8gc29ydCBvbiIKK21zZ3N0ciAidMOqbiB0csaw4budbmcgY+G6p24gc+G6r3AgeOG6v3AiCisKKyM6IGJ1aWx0aW4vZnNjay5jOjYwOAorbXNnaWQgImdpdCBmc2NrIFtvcHRpb25zXSBbPG9iamVjdD4uLi5dIgorbXNnc3RyICJnaXQgZnNjayBbY8OhYy10w7l5LWNo4buNbl0gWzzEkeG7kWktdMaw4bujbmc+Li4uXSIKKworIzogYnVpbHRpbi9mc2NrLmM6NjE0Cittc2dpZCAic2hvdyB1bnJlYWNoYWJsZSBvYmplY3RzIgorbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyDEkeG7kWkgdMaw4bujbmcga2jDtG5nIHRo4buDIMSR4buNYyDEkcaw4bujYyIKKworIzogYnVpbHRpbi9mc2NrLmM6NjE1Cittc2dpZCAic2hvdyBkYW5nbGluZyBvYmplY3RzIgorbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyDEkeG7kWkgdMaw4bujbmcga2jDtG5nIMSRxrDhu6NjIHF14bqjbiBsw70iCisKKyM6IGJ1aWx0aW4vZnNjay5jOjYxNgorbXNnaWQgInJlcG9ydCB0YWdzIgorbXNnc3RyICJiw6FvIGPDoW8gY8OhYyB0aOG6uyIKKworIzogYnVpbHRpbi9mc2NrLmM6NjE3Cittc2dpZCAicmVwb3J0IHJvb3Qgbm9kZXMiCittc2dzdHIgImLDoW8gY8OhbyBub2RlIGfhu5FjIgorCisjOiBidWlsdGluL2ZzY2suYzo2MTgKK21zZ2lkICJtYWtlIGluZGV4IG9iamVjdHMgaGVhZCBub2RlcyIKK21zZ3N0ciAidOG6oW8g4oCcIGluZGV4IG9iamVjdHMgaGVhZCBub2Rlc+KAnSIKKworIzogYnVpbHRpbi9mc2NrLmM6NjE5Cittc2dpZCAibWFrZSByZWZsb2dzIGhlYWQgbm9kZXMgKGRlZmF1bHQpIgorbXNnc3RyICJ04bqhbyAgcmVmbG9ncyBoZWFkIG5vZGVzICht4bq3YyDEkeG7i25oKSIKKworIzogYnVpbHRpbi9mc2NrLmM6NjIwCittc2dpZCAiYWxzbyBjb25zaWRlciBwYWNrcyBhbmQgYWx0ZXJuYXRlIG9iamVjdHMiCittc2dzdHIgImPFqW5nIGPDom4gbmjhuq9jIMSR4bq/biBjw6FjIMSR4buRaSB0xrDhu6NuZyBnw7NpIHbDoCB0aGF5IHRo4bq/IgorCisjOiBidWlsdGluL2ZzY2suYzo2MjEKK21zZ2lkICJlbmFibGUgbW9yZSBzdHJpY3QgY2hlY2tpbmciCittc2dzdHIgImNobyBwaMOpcCBraeG7g20gdHJhIGjhuqFuIGNo4bq/IGjGoW4iCisKKyM6IGJ1aWx0aW4vZnNjay5jOjYyMworbXNnaWQgIndyaXRlIGRhbmdsaW5nIG9iamVjdHMgaW4gLmdpdC9sb3N0LWZvdW5kIgorbXNnc3RyICJnaGkgY8OhYyDEkeG7kWkgdMaw4bujbmcga2jDtG5nIMSRxrDhu6NjIHF14bqjbiBsw70gdHJvbmcgLmdpdC9sb3N0LWZvdW5kIgorCisjOiBidWlsdGluL2ZzY2suYzo2MjQgYnVpbHRpbi9wcnVuZS5jOjEzNAorbXNnaWQgInNob3cgcHJvZ3Jlc3MiCittc2dzdHIgImhp4buDbiB0aOG7iyBxdcOhIHRyw6xuaCIKKworIzogYnVpbHRpbi9nYy5jOjIyCittc2dpZCAiZ2l0IGdjIFtvcHRpb25zXSIKK21zZ3N0ciAiZ2l0IGdjIFtjw6FjLXTDuXktY2jhu41uXSIKKwogIzogYnVpbHRpbi9nYy5jOjYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgJXM6ICclcyciCi1tc2dzdHIgIiVzIGtow7RuZyBo4bujcCBs4buHOiAnJXMnIgorbXNnc3RyICIlcyBraMO0bmcgaOG7o3AgbOG7hzog4oCcJXPigJ0iCiAKICM6IGJ1aWx0aW4vZ2MuYzo5MAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnNhbmVseSBsb25nIG9iamVjdCBkaXJlY3RvcnkgJS4qcyIKIG1zZ3N0ciAidGjGsCBt4bulYyDEkeG7kWkgdMaw4bujbmcgZMOgaSBt4buZdCBjw6FjaCDEkWnDqm4gcuG7kyAgJS4qcyIKIAotIzogYnVpbHRpbi9nYy5jOjIyMQotIywgYy1mb3JtYXQKLW1zZ2lkICJBdXRvIHBhY2tpbmcgdGhlIHJlcG9zaXRvcnkgZm9yIG9wdGltdW0gcGVyZm9ybWFuY2UuXG4iCi1tc2dzdHIgIlThu7EgxJHhu5luZyDEkcOzbmcgZ8OzaSBraG8gY2jhu6lhIMSR4buDIHThu5FpIMawdSBow7NhIGhp4buHdSBzdeG6pXQgbMOgbSB2aeG7h2MuXG4iCisjOiBidWlsdGluL2djLmM6MTc5Cittc2dpZCAicHJ1bmUgdW5yZWZlcmVuY2VkIG9iamVjdHMiCittc2dzdHIgInjDs2EgYuG7jyBjw6FjIMSR4buRaSB0xrDhu6NuZyBraMO0bmcgxJHGsOG7o2MgdGhhbSBjaGnhur91IgogCi0jOiBidWlsdGluL2djLmM6MjI0CisjOiBidWlsdGluL2djLmM6MTgxCittc2dpZCAiYmUgbW9yZSB0aG9yb3VnaCAoaW5jcmVhc2VkIHJ1bnRpbWUpIgorbXNnc3RyICJj4bqpbiB0aOG6rW4gaMahbiBu4buvYSAodMSDbmcgdGjhu51pIGdpYW4gY2jhuqF5KSIKKworIzogYnVpbHRpbi9nYy5jOjE4MgorbXNnaWQgImVuYWJsZSBhdXRvLWdjIG1vZGUiCittc2dzdHIgImLhuq10IGNo4bq/IMSR4buZIGF1dG8tZ2MiCisKKyM6IGJ1aWx0aW4vZ2MuYzoyMjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkF1dG8gcGFja2luZyB0aGUgcmVwb3NpdG9yeSBmb3Igb3B0aW11bSBwZXJmb3JtYW5jZS4gWW91IG1heSBhbHNvXG4iCiAicnVuIFwiZ2l0IGdjXCIgbWFudWFsbHkuIFNlZSBcImdpdCBoZWxwIGdjXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iCiBtc2dzdHIgIiIKICJU4buxIMSR4buZbmcgxJHDs25nIGfDs2kga2hvIGNo4bupYSDEkeG7gyB04buRaSDGsHUgaMOzYSBoaeG7h3Ugc3XhuqV0IGzDoG0gdmnhu4djLlxuIgotImNo4bqheSBs4buHbmggXCJnaXQgZ2NcIiBt4buZdCBjw6FjaCB0aOG7pyBjw7RuZy4gSMOjeSB4ZW0gXCJnaXQgaGVscCBnY1wiIMSR4buDIGJp4bq/dCB0aMOqbSBjaGkgdGnhur90LlxuIgorImNo4bqheSBs4buHbmggXCJnaXQgZ2NcIiBt4buZdCBjw6FjaCB0aOG7pyBjw7RuZy4gSMOjeSB4ZW0gXCJnaXQgaGVscCBnY1wiIMSR4buDIGJp4bq/dCB0aMOqbSAiCisiY2hpIHRp4bq/dC5cbiIKIAotIzogYnVpbHRpbi9nYy5jOjI1MQotbXNnaWQgIlRoZXJlIGFyZSB0b28gbWFueSB1bnJlYWNoYWJsZSBsb29zZSBvYmplY3RzOyBydW4gJ2dpdCBwcnVuZScgdG8gcmVtb3ZlIHRoZW0uIgotbXNnc3RyICJDw7MgcXXDoSBuaGnhu4F1IMSR4buRaSB0xrDhu6NuZyB04buxIGRvIGtow7RuZyDEkcaw4bujYyBkw7luZyDEkeG6v247IGjDo3kgY2jhuqF5IGzhu4duaCAnZ2l0IHBydW5lJyDEkeG7gyB4w7NhIGLhu48gY2jDum5nIMSRaS4iCisjOiBidWlsdGluL2djLmM6MjQ5Cittc2dpZCAiIgorIlRoZXJlIGFyZSB0b28gbWFueSB1bnJlYWNoYWJsZSBsb29zZSBvYmplY3RzOyBydW4gJ2dpdCBwcnVuZScgdG8gcmVtb3ZlIHRoZW0uIgorbXNnc3RyICIiCisiQ8OzIHF1w6Egbmhp4buBdSDEkeG7kWkgdMaw4bujbmcgdOG7sSBkbyBraMO0bmcgxJHGsOG7o2MgZMO5bmcgxJHhur9uOyBow6N5IGNo4bqheSBs4buHbmgg4oCcZ2l0IHBydW5l4oCdICIKKyLEkeG7gyB4w7NhIGLhu48gY2jDum5nIMSRaS4iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjIxNgorIzogYnVpbHRpbi9ncmVwLmM6MjIKK21zZ2lkICJnaXQgZ3JlcCBbb3B0aW9uc10gWy1lXSA8cGF0dGVybj4gWzxyZXY+Li4uXSBbWy0tXSA8cGF0aD4uLi5dIgorbXNnc3RyICJnaXQgZ3JlcCBbY8OhYy10w7l5LWNo4buNbl0gWy1lXSA8beG6q3U+IFs8cmV2Pi4uLl0gW1stLV0gPMSRxrDhu51uZy1k4bqrbj4uLi5dIgorCisjOiBidWlsdGluL2dyZXAuYzoyMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ3JlcDogZmFpbGVkIHRvIGNyZWF0ZSB0aHJlYWQ6ICVzIgogbXNnc3RyICJncmVwOiBn4bq3cCBs4buXaSB04bqhbyB0dXnhur9uICh0aHJlYWQpOiAlcyIKIAotIzogYnVpbHRpbi9ncmVwLmM6NDAyCisjOiBidWlsdGluL2dyZXAuYzozNjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGNoZGlyOiAlcyIKIG1zZ3N0ciAiR+G6t3AgbOG7l2kgduG7m2kgbOG7h25oIGNoZGlyOiAlcyIKIAotIzogYnVpbHRpbi9ncmVwLmM6NDc4Ci0jOiBidWlsdGluL2dyZXAuYzo1MTIKKyM6IGJ1aWx0aW4vZ3JlcC5jOjQ0MyBidWlsdGluL2dyZXAuYzo0NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHJlYWQgdHJlZSAoJXMpIgogbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu41jIGPDonkgKCVzKSIKIAotIzogYnVpbHRpbi9ncmVwLmM6NTI2CisjOiBidWlsdGluL2dyZXAuYzo0OTMKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGdyZXAgZnJvbSBvYmplY3Qgb2YgdHlwZSAlcyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIHRo4buxYyBoaeG7h24gbOG7h25oIGdyZXAgKGzhu41jIHTDrG0pIHThu6sgxJHhu5FpIHTGsOG7o25nIHRodeG7mWMga2nhu4N1ICVzIgogCi0jOiBidWlsdGluL2dyZXAuYzo1ODQKKyM6IGJ1aWx0aW4vZ3JlcC5jOjU1MQogIywgYy1mb3JtYXQKIG1zZ2lkICJzd2l0Y2ggYCVjJyBleHBlY3RzIGEgbnVtZXJpY2FsIHZhbHVlIgotbXNnc3RyICJjaHV54buDbiDEkeG6v24gYCVjJyBtb25nIGNo4budIG3hu5l0IGdpw6EgdHLhu4sgYuG6sW5nIHPhu5EiCittc2dzdHIgImNodXnhu4NuIMSR4bq/biDigJwlY+KAnSBj4bqnbiBt4buZdCBnacOhIHRy4buLIGLhurFuZyBz4buRIgogCi0jOiBidWlsdGluL2dyZXAuYzo2MDEKKyM6IGJ1aWx0aW4vZ3JlcC5jOjU2OAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiAnJXMnIgotbXNnc3RyICJraMO0bmcgbeG7nyDEkcaw4bujYyAnJXMnIgorbXNnc3RyICJraMO0bmcgbeG7nyDEkcaw4bujYyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9ncmVwLmM6ODg1CisjOiBidWlsdGluL2dyZXAuYzo2NDMKK21zZ2lkICJzZWFyY2ggaW4gaW5kZXggaW5zdGVhZCBvZiBpbiB0aGUgd29yayB0cmVlIgorbXNnc3RyICJ0w6xtIHRyb25nIGLhuqNuZyBt4bulYyBs4bulYyB0aGF5IHbDrCB0cm9uZyBjw6J5IGzDoG0gdmnhu4djIgorCisjOiBidWlsdGluL2dyZXAuYzo2NDUKK21zZ2lkICJmaW5kIGluIGNvbnRlbnRzIG5vdCBtYW5hZ2VkIGJ5IGdpdCIKK21zZ3N0ciAidMOsbSB0cm9uZyBu4buZaSBkdW5nIGtow7RuZyDEkcaw4bujYyBxdeG6o24gbMO9IGLhu59pIGdpdCIKKworIzogYnVpbHRpbi9ncmVwLmM6NjQ3Cittc2dpZCAic2VhcmNoIGluIGJvdGggdHJhY2tlZCBhbmQgdW50cmFja2VkIGZpbGVzIgorbXNnc3RyICJ0w6xtIGtp4bq/bSBjw6FjIHThuq1wIHRpbiDEkcaw4bujYyB2w6AgY2jGsGEgxJHGsOG7o2MgdGhlbyBkw7VpIGThuqV1IHbhur90IgorCisjOiBidWlsdGluL2dyZXAuYzo2NDkKK21zZ2lkICJzZWFyY2ggYWxzbyBpbiBpZ25vcmVkIGZpbGVzIgorbXNnc3RyICJ0w6xtIGPhuqMgdHJvbmcgY8OhYyB04bqtcCB0aW4gxJHDoyBi4buLIGzhu50gxJFpIgorCisjOiBidWlsdGluL2dyZXAuYzo2NTIKK21zZ2lkICJzaG93IG5vbi1tYXRjaGluZyBsaW5lcyIKK21zZ3N0ciAiaGnhu4NuIHRo4buLICBuaOG7r25nIGTDsm5nIGtow7RuZyBraOG7m3AgduG7m2kgbeG6q3UiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY1NAorbXNnaWQgImNhc2UgaW5zZW5zaXRpdmUgbWF0Y2hpbmciCittc2dzdHIgInBow6JuIGJp4buHdCBjaOG7ryBob2EvdGjGsOG7nW5nIgorCisjOiBidWlsdGluL2dyZXAuYzo2NTYKK21zZ2lkICJtYXRjaCBwYXR0ZXJucyBvbmx5IGF0IHdvcmQgYm91bmRhcmllcyIKK21zZ3N0ciAiY2jhu4kga2jhu5twIG3huqt1IHThuqFpIMSRxrDhu51uZyByYW5oIGdp4bubaSB04burIgorCisjOiBidWlsdGluL2dyZXAuYzo2NTgKK21zZ2lkICJwcm9jZXNzIGJpbmFyeSBmaWxlcyBhcyB0ZXh0IgorbXNnc3RyICJ44butIGzDvSB04bqtcCB0aW4gbmjhu4sgcGjDom4gbmjGsCBsw6AgZOG6oW5nIHbEg24gYuG6o24gdGjGsOG7nW5nIgorCisjOiBidWlsdGluL2dyZXAuYzo2NjAKK21zZ2lkICJkb24ndCBtYXRjaCBwYXR0ZXJucyBpbiBiaW5hcnkgZmlsZXMiCittc2dzdHIgImtow7RuZyBraOG7m3AgbeG6q3UgdHJvbmcgY8OhYyB04bqtcCB0aW4gbmjhu4sgcGjDom4iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY2MworbXNnaWQgImRlc2NlbmQgYXQgbW9zdCA8ZGVwdGg+IGxldmVscyIKK21zZ3N0ciAiZ2nhuqNtIHh14buRbmcgw610IG5o4bqldCBt4bupYyA8c8OidT4iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY2NworbXNnaWQgInVzZSBleHRlbmRlZCBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb25zIgorbXNnc3RyICJkw7luZyBiaeG7g3UgdGjhu6ljIGNow61uaCBxdWkgUE9TSVggY8OzIG3hu58gcuG7mW5nIgorCisjOiBidWlsdGluL2dyZXAuYzo2NzAKK21zZ2lkICJ1c2UgYmFzaWMgUE9TSVggcmVndWxhciBleHByZXNzaW9ucyAoZGVmYXVsdCkiCittc2dzdHIgInPhu60gZOG7pW5nIGJp4buDdSB0aOG7qWMgY2jDrW5oIHF1eSBraeG7g3UgUE9TSVggKG3hurdjIMSR4buLbmgpIgorCisjOiBidWlsdGluL2dyZXAuYzo2NzMKK21zZ2lkICJpbnRlcnByZXQgcGF0dGVybnMgYXMgZml4ZWQgc3RyaW5ncyIKK21zZ3N0ciAiZGnhu4VuIGThu4tjaCBjw6FjIG3huqt1IG5oxrAgbMOgIGNodeG7l2kgY+G7kSDEkeG7i25oIgorCisjOiBidWlsdGluL2dyZXAuYzo2NzYKK21zZ2lkICJ1c2UgUGVybC1jb21wYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCittc2dzdHIgInPhu60gZOG7pW5nIGJp4buDdSB0aOG7qWMgY2jDrW5oIHF1eSB0xrDGoW5nIHRow61jaCBQZXJsIgorCisjOiBidWlsdGluL2dyZXAuYzo2NzkKK21zZ2lkICJzaG93IGxpbmUgbnVtYmVycyIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIHPhu5EgY+G7p2EgZMOybmciCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4MAorbXNnaWQgImRvbid0IHNob3cgZmlsZW5hbWVzIgorbXNnc3RyICJraMO0bmcgaGnhu4NuIHRo4buLIHTDqm4gdOG6rXAgdGluIgorCisjOiBidWlsdGluL2dyZXAuYzo2ODEKK21zZ2lkICJzaG93IGZpbGVuYW1lcyIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGPDoWMgdMOqbiB04bqtcCB0aW4iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4MworbXNnaWQgInNob3cgZmlsZW5hbWVzIHJlbGF0aXZlIHRvIHRvcCBkaXJlY3RvcnkiCittc2dzdHIgImhp4buDbiB0aOG7iyB0w6puIHThuq1wIHRpbiB0xrDGoW5nIMSR4buRaSB24bubaSB0aMawIG3hu6VjIMSR4buJbmggKHRvcCkiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4NQorbXNnaWQgInNob3cgb25seSBmaWxlbmFtZXMgaW5zdGVhZCBvZiBtYXRjaGluZyBsaW5lcyIKK21zZ3N0ciAiY2jhu4kgaGnhu4NuIHRo4buLIHTDqm4gdOG6rXAgdGluIHRoYXkgdsOsIG5o4buvbmcgZMOybmcga2jhu5twIHbhu5tpIG3huqt1IgorCisjOiBidWlsdGluL2dyZXAuYzo2ODcKK21zZ2lkICJzeW5vbnltIGZvciAtLWZpbGVzLXdpdGgtbWF0Y2hlcyIKK21zZ3N0ciAixJHhu5NuZyBuZ2jEqWEgduG7m2kgLS1maWxlcy13aXRoLW1hdGNoZXMiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5MAorbXNnaWQgInNob3cgb25seSB0aGUgbmFtZXMgb2YgZmlsZXMgd2l0aG91dCBtYXRjaCIKK21zZ3N0ciAiY2jhu4kgaGnhu4NuIHRo4buLIHTDqm4gY2hvIG5o4buvbmcgdOG6rXAgdGluIGtow7RuZyBraOG7m3AgduG7m2kgbeG6q3UiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5MgorbXNnaWQgInByaW50IE5VTCBhZnRlciBmaWxlbmFtZXMiCittc2dzdHIgInRow6ptIE5VTCB2w6BvIHNhdSB0w6puIHThuq1wIHRpbiIKKworIzogYnVpbHRpbi9ncmVwLmM6Njk0Cittc2dpZCAic2hvdyB0aGUgbnVtYmVyIG9mIG1hdGNoZXMgaW5zdGVhZCBvZiBtYXRjaGluZyBsaW5lcyIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIHPhu5EgbMaw4bujbmcga2jhu5twIHRoYXkgdsOsIG5o4buvbmcgZMOybmcga2jhu5twIHbhu5tpIG3huqt1IgorCisjOiBidWlsdGluL2dyZXAuYzo2OTUKK21zZ2lkICJoaWdobGlnaHQgbWF0Y2hlcyIKK21zZ3N0ciAidMO0IHPDoW5nIGPDoWkga2jhu5twIgorCisjOiBidWlsdGluL2dyZXAuYzo2OTcKK21zZ2lkICJwcmludCBlbXB0eSBsaW5lIGJldHdlZW4gbWF0Y2hlcyBmcm9tIGRpZmZlcmVudCBmaWxlcyIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGTDsm5nIHRy4buRbmcgZ2nhu69hIGPDoWMgbOG6p24ga2jhu5twIHThu6sgY8OhYyB04bqtcCB0aW4ga2jDoWMgYmnhu4d0IgorCisjOiBidWlsdGluL2dyZXAuYzo2OTkKK21zZ2lkICJzaG93IGZpbGVuYW1lIG9ubHkgb25jZSBhYm92ZSBtYXRjaGVzIGZyb20gc2FtZSBmaWxlIgorbXNnc3RyICIiCisiaGnhu4NuIHRo4buLIHTDqm4gdOG6rXAgdGluIG3hu5l0IGzhuqduIHBow61hIHRyw6puIGPDoWMgbOG6p24ga2jhu5twIHThu6sgY8O5bmcgbeG7mXQgdOG6rXAgdGluIgorCisjOiBidWlsdGluL2dyZXAuYzo3MDIKK21zZ2lkICJzaG93IDxuPiBjb250ZXh0IGxpbmVzIGJlZm9yZSBhbmQgYWZ0ZXIgbWF0Y2hlcyIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIDxuPiBkw7JuZyBu4buZaSBkdW5nIHBow61hIHRyxrDhu5tjIHbDoCBzYXUgY8OhYyBs4bqnbiBraOG7m3AiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcwNQorbXNnaWQgInNob3cgPG4+IGNvbnRleHQgbGluZXMgYmVmb3JlIG1hdGNoZXMiCittc2dzdHIgImhp4buDbiB0aOG7iyA8bj4gZMOybmcgbuG7mWkgZHVuZyB0csaw4bubYyBraOG7m3AiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcwNworbXNnaWQgInNob3cgPG4+IGNvbnRleHQgbGluZXMgYWZ0ZXIgbWF0Y2hlcyIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIDxuPiBkw7JuZyBu4buZaSBkdW5nIHNhdSBraOG7m3AiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcwOAorbXNnaWQgInNob3J0Y3V0IGZvciAtQyBOVU0iCittc2dzdHIgIkThuqFuZyB04bqvdCBjaG8gLUMgU+G7kCIKKworIzogYnVpbHRpbi9ncmVwLmM6NzExCittc2dpZCAic2hvdyBhIGxpbmUgd2l0aCB0aGUgZnVuY3Rpb24gbmFtZSBiZWZvcmUgbWF0Y2hlcyIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGTDsm5nIHbDs2kgdMOqbiBow6BtIHRyxrDhu5tjIGPDoWMgbOG6p24ga2jhu5twIgorCisjOiBidWlsdGluL2dyZXAuYzo3MTMKK21zZ2lkICJzaG93IHRoZSBzdXJyb3VuZGluZyBmdW5jdGlvbiIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGjDoG0gYmFvIHF1YW5oIgorCisjOiBidWlsdGluL2dyZXAuYzo3MTYKK21zZ2lkICJyZWFkIHBhdHRlcm5zIGZyb20gZmlsZSIKK21zZ3N0ciAixJHhu41jIG3huqt1IHThu6sgdOG6rXAtdGluIgorCisjOiBidWlsdGluL2dyZXAuYzo3MTgKK21zZ2lkICJtYXRjaCA8cGF0dGVybj4iCittc2dzdHIgIm1hdGNoIDxt4bqrdT4iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcyMAorbXNnaWQgImNvbWJpbmUgcGF0dGVybnMgc3BlY2lmaWVkIHdpdGggLWUiCittc2dzdHIgInThu5UgaOG7o3AgbeG6q3UgxJHGsOG7o2MgY2jhu4kgcmEgduG7m2kgdMO5eSBjaOG7jW4gLWUiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjczMgorbXNnaWQgImluZGljYXRlIGhpdCB3aXRoIGV4aXQgc3RhdHVzIHdpdGhvdXQgb3V0cHV0IgorbXNnc3RyICLEkcawYSByYSBn4bujaSDDvSB24bubaSB0cuG6oW5nIHRow6FpIHRob8OhdCBtw6Aga2jDtG5nIGPDsyBr4bq/dCB4deG6pXQiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjczNAorbXNnaWQgInNob3cgb25seSBtYXRjaGVzIGZyb20gZmlsZXMgdGhhdCBtYXRjaCBhbGwgcGF0dGVybnMiCittc2dzdHIgImNo4buJIGhp4buDbiB0aOG7iyBuaOG7r25nIGPDoWkga2jhu5twIHThu6sgdOG6rXAgdGluIG3DoCBuw7Mga2jhu5twIHRvw6BuIGLhu5kgY8OhYyBt4bqrdSIKKworIzogYnVpbHRpbi9ncmVwLmM6NzM2Cittc2dpZCAic2hvdyBwYXJzZSB0cmVlIGZvciBncmVwIGV4cHJlc3Npb24iCittc2dzdHIgImhp4buDbiB0aOG7iyBjw6J5IHBow6JuIHTDrWNoIGPDuiBwaMOhcCBjaG8gYmnhu4N1IHRo4bupYyDigJxncmVw4oCdICh0w6xtIGtp4bq/bSkiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0MAorbXNnaWQgInBhZ2VyIgorbXNnc3RyICJ0cmFuZyBnaeG6pXkiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0MAorbXNnaWQgInNob3cgbWF0Y2hpbmcgZmlsZXMgaW4gdGhlIHBhZ2VyIgorbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyB04bqtcCB0aW4ga2jhu5twIHRyb25nIHRyYW5nIGdp4bqleSIKKworIzogYnVpbHRpbi9ncmVwLmM6NzQzCittc2dpZCAiYWxsb3cgY2FsbGluZyBvZiBncmVwKDEpIChpZ25vcmVkIGJ5IHRoaXMgYnVpbGQpIgorbXNnc3RyICJjaG8gcGjDqXAgZ+G7jWkgZ3JlcCgxKSAoYuG7iyBi4buPIHF1YSBi4bufaSBs4bqnbiBk4buLY2ggbsOgeSkiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0NCBidWlsdGluL3Nob3ctcmVmLmM6MTg0Cittc2dpZCAic2hvdyB1c2FnZSIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGPDoWNoIGTDuW5nIgorCisjOiBidWlsdGluL2dyZXAuYzo4MTEKIG1zZ2lkICJubyBwYXR0ZXJuIGdpdmVuLiIKIG1zZ3N0ciAiY2jGsGEgY2jhu4kgcmEgbeG6q3UuIgogCi0jOiBidWlsdGluL2dyZXAuYzo4OTkKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiYmFkIG9iamVjdCAlcyIKLW1zZ3N0ciAixJHhu5FpIHTGsOG7o25nIHNhaSAlcyIKLQotIzogYnVpbHRpbi9ncmVwLmM6OTQwCisjOiBidWlsdGluL2dyZXAuYzo4NjYKIG1zZ2lkICItLW9wZW4tZmlsZXMtaW4tcGFnZXIgb25seSB3b3JrcyBvbiB0aGUgd29ya3RyZWUiCiBtc2dzdHIgIi0tb3Blbi1maWxlcy1pbi1wYWdlciBjaOG7iSBsw6BtIHZp4buHYyB0csOqbiBjw6J5LWzDoG0tdmnhu4djIgogCi0jOiBidWlsdGluL2dyZXAuYzo5NjMKKyM6IGJ1aWx0aW4vZ3JlcC5jOjg4OQogbXNnaWQgIi0tY2FjaGVkIG9yIC0tdW50cmFja2VkIGNhbm5vdCBiZSB1c2VkIHdpdGggLS1uby1pbmRleC4iCiBtc2dzdHIgIi0tY2FjaGVkIGhheSAtLXVudHJhY2tlZCBraMO0bmcgxJHGsOG7o2Mgc+G7rSBk4bulbmcgduG7m2kgLS1uby1pbmRleC4iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjk2OAorIzogYnVpbHRpbi9ncmVwLmM6ODk0CiBtc2dpZCAiLS1uby1pbmRleCBvciAtLXVudHJhY2tlZCBjYW5ub3QgYmUgdXNlZCB3aXRoIHJldnMuIgotbXNnc3RyICItLW5vLWluZGV4IGhheSAtLXVudHJhY2tlZCBraMO0bmcgxJHGsOG7o2Mgc+G7rSBk4bulbmcgY8O5bmcgduG7m2kgY8OhYyB0w7l5IGNo4buNbiBsacOqbiBxdWFuIMSR4bq/biByZXZzLiIKK21zZ3N0ciAiIgorIi0tbm8taW5kZXggaGF5IC0tdW50cmFja2VkIGtow7RuZyDEkcaw4bujYyBz4butIGThu6VuZyBjw7luZyB24bubaSBjw6FjIHTDuXkgY2jhu41uIGxpw6puICIKKyJxdWFuIMSR4bq/biByZXZzLiIKIAotIzogYnVpbHRpbi9ncmVwLmM6OTcxCisjOiBidWlsdGluL2dyZXAuYzo4OTcKIG1zZ2lkICItLVtuby1dZXhjbHVkZS1zdGFuZGFyZCBjYW5ub3QgYmUgdXNlZCBmb3IgdHJhY2tlZCBjb250ZW50cy4iCiBtc2dzdHIgIi0tW25vLV1leGNsdWRlLXN0YW5kYXJkIGtow7RuZyB0aOG7gyBz4butIGThu6VuZyBjaG8gbuG7mWkgZHVuZyBsxrB1IGThuqV1IHbhur90LiIKIAotIzogYnVpbHRpbi9ncmVwLmM6OTc5CisjOiBidWlsdGluL2dyZXAuYzo5MDUKIG1zZ2lkICJib3RoIC0tY2FjaGVkIGFuZCB0cmVlcyBhcmUgZ2l2ZW4uIgogbXNnc3RyICJj4bqjIGhhaSAtLWNhY2hlZCB2w6AgY8OhYyBjw6J5IHBo4bqjaSDEkcaw4bujYyBjaOG7iSByYS4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjU5CisjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NjAKK21zZ2lkICIiCisiZ2l0IGhhc2gtb2JqZWN0IFstdCA8dHlwZT5dIFstd10gWy0tcGF0aD08ZmlsZT58LS1uby1maWx0ZXJzXSBbLS1zdGRpbl0gWy0tXSAiCisiPGZpbGU+Li4uIgorbXNnc3RyICIiCisiZ2l0IGhhc2gtb2JqZWN0IFstdCA8a2nhu4N1Pl0gWy13XSBbLS1wYXRoPTx04bqtcC10aW4+fC0tbm8tZmlsdGVyc10gWy0tc3RkaW5dICIKKyJbLS1dIDx04bqtcC10aW4+Li4uIgorCisjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NjEKK21zZ2lkICJnaXQgaGFzaC1vYmplY3QgIC0tc3RkaW4tcGF0aHMgPCA8bGlzdC1vZi1wYXRocz4iCittc2dzdHIgImdpdCBoYXNoLW9iamVjdCAgLS1zdGRpbi1wYXRocyA8IDxkYW5oLXPDoWNoLcSRxrDhu51uZy1k4bqrbj4iCisKKyM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3MgorbXNnaWQgInR5cGUiCittc2dzdHIgImtp4buDdSIKKworIzogYnVpbHRpbi9oYXNoLW9iamVjdC5jOjcyCittc2dpZCAib2JqZWN0IHR5cGUiCittc2dzdHIgImtp4buDdSDEkeG7kWkgdMaw4bujbmciCisKKyM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3MworbXNnaWQgIndyaXRlIHRoZSBvYmplY3QgaW50byB0aGUgb2JqZWN0IGRhdGFiYXNlIgorbXNnc3RyICJnaGkgxJHhu5FpIHTGsOG7o25nIHbDoG8gZOG7ryBsaeG7h3UgxJHhu5FpIHTGsOG7o25nIgorCisjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzQKK21zZ2lkICJyZWFkIHRoZSBvYmplY3QgZnJvbSBzdGRpbiIKK21zZ3N0ciAixJHhu41jIMSR4buRaSB0xrDhu6NuZyB04burIMSR4bqndSB2w6BvIHRpw6p1IGNodeG6qW4gc3RkaW4iCisKKyM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3NgorbXNnaWQgInN0b3JlIGZpbGUgYXMgaXMgd2l0aG91dCBmaWx0ZXJzIgorbXNnc3RyICJsxrB1IGPDoWMgdOG6rXAgdGluIG3DoCBuw7Mga2jDtG5nIGPDsyBjw6FjIGLhu5kgbOG7jWMiCisKKyM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3NworbXNnaWQgInByb2Nlc3MgZmlsZSBhcyBpdCB3ZXJlIGZyb20gdGhpcyBwYXRoIgorbXNnc3RyICJ44butIGzDvSB04bqtcCB0aW4gbmjGsCBsw6AgbsOzIMSRYW5nIOG7nyB0aMawIG3hu6VjIG7DoHkiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQzCittc2dpZCAicHJpbnQgYWxsIGF2YWlsYWJsZSBjb21tYW5kcyIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGRhbmggc8OhY2ggY8OhYyBjw6J1IGzhu4duaCBuZ8aw4budaSBkw7luZyBjw7MgdGjhu4Mgc+G7rSBk4bulbmciCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQ0Cittc2dpZCAicHJpbnQgbGlzdCBvZiB1c2VmdWwgZ3VpZGVzIgorbXNnc3RyICJoaeG7g24gdGjhu4sgZGFuaCBzw6FjaCBjw6FjIGjGsOG7m25nIGThuqtuIGjhu691IGThu6VuZyIKKworIzogYnVpbHRpbi9oZWxwLmM6NDUKK21zZ2lkICJzaG93IG1hbiBwYWdlIgorbXNnc3RyICJoaeG7g24gdGjhu4sgdHJhbmcgbWFuIgorCisjOiBidWlsdGluL2hlbHAuYzo0NgorbXNnaWQgInNob3cgbWFudWFsIGluIHdlYiBicm93c2VyIgorbXNnc3RyICJoaeG7g24gdGjhu4sgaMaw4bubbmcgZOG6q24gc+G7rSBk4bulbmcgdHJvbmcgdHLDrG5oIGR1eeG7h3Qgd2ViIgorCisjOiBidWlsdGluL2hlbHAuYzo0OAorbXNnaWQgInNob3cgaW5mbyBwYWdlIgorbXNnc3RyICJoaeG7h24gdHJhbmcgaW5mbyIKKworIzogYnVpbHRpbi9oZWxwLmM6NTQKK21zZ2lkICJnaXQgaGVscCBbLS1hbGxdIFstLWd1aWRlc10gWy0tbWFufC0td2VifC0taW5mb10gW2NvbW1hbmRdIgorbXNnc3RyICJnaXQgaGVscCBbLS1hbGxdIFstLWd1aWRlc10gWy0tbWFufC0td2VifC0taW5mb10gW2zhu4duaF0iCisKKyM6IGJ1aWx0aW4vaGVscC5jOjY2CiAjLCBjLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXplZCBoZWxwIGZvcm1hdCAnJXMnIgotbXNnc3RyICJraMO0bmcgbmjhuq1uIHJhIMSR4buLbmggZOG6oW5nIHRy4bujIGdpw7pwICclcyciCittc2dzdHIgImtow7RuZyBuaOG6rW4gcmEgxJHhu4tuaCBk4bqhbmcgdHLhu6MgZ2nDunAg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjg3CisjOiBidWlsdGluL2hlbHAuYzo5NAogbXNnaWQgIkZhaWxlZCB0byBzdGFydCBlbWFjc2NsaWVudC4iCiBtc2dzdHIgIkzhu5dpIGto4bufaSBjaOG6oXkgZW1hY3NjbGllbnQuIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMDAKKyM6IGJ1aWx0aW4vaGVscC5jOjEwNwogbXNnaWQgIkZhaWxlZCB0byBwYXJzZSBlbWFjc2NsaWVudCB2ZXJzaW9uLiIKIG1zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIHBow6JuIHTDrWNoIHBoacOqbiBi4bqjbiBlbWFjc2NsaWVudC4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjEwOAorIzogYnVpbHRpbi9oZWxwLmM6MTE1CiAjLCBjLWZvcm1hdAogbXNnaWQgImVtYWNzY2xpZW50IHZlcnNpb24gJyVkJyB0b28gb2xkICg8IDIyKS4iCi1tc2dzdHIgInBoacOqbiBi4bqjbiBj4bunYSBlbWFjc2NsaWVudCAnJWQnIHF1w6EgY8WpICg8IDIyKS4iCittc2dzdHIgInBoacOqbiBi4bqjbiBj4bunYSBlbWFjc2NsaWVudCDigJwlZOKAnSBxdcOhIGPFqSAoPCAyMikuIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMjYKLSM6IGJ1aWx0aW4vaGVscC5jOjE1NAotIzogYnVpbHRpbi9oZWxwLmM6MTYzCi0jOiBidWlsdGluL2hlbHAuYzoxNzEKKyM6IGJ1aWx0aW4vaGVscC5jOjEzMyBidWlsdGluL2hlbHAuYzoxNjEgYnVpbHRpbi9oZWxwLmM6MTcwIGJ1aWx0aW4vaGVscC5jOjE3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gZXhlYyAnJXMnOiAlcyIKLW1zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIHRo4buxYyB0aGkgJyVzJzogJXMiCittc2dzdHIgImfhurdwIGzhu5dpIGtoaSB0aOG7sWMgdGhpIOKAnCVz4oCdOiAlcyIKIAotIzogYnVpbHRpbi9oZWxwLmM6MjExCisjOiBidWlsdGluL2hlbHAuYzoyMTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcyc6IHBhdGggZm9yIHVuc3VwcG9ydGVkIG1hbiB2aWV3ZXIuXG4iCiAiUGxlYXNlIGNvbnNpZGVyIHVzaW5nICdtYW4uPHRvb2w+LmNtZCcgaW5zdGVhZC4iCiBtc2dzdHIgIiIKLSInJXMnOiDEkcaw4budbmcgZOG6q24ga2jDtG5nIGjhu5cgdHLhu6MgYuG7mSB0csOsbmggY2hp4bq/dSBtYW4uXG4iCi0iSMOjeSBjw6JuIG5o4bqvYyDEkeG6v24gdmnhu4djIHPhu60gZOG7pW5nICdtYW4uPHRvb2w+LmNtZCcgxJHhu4MgdGhheSB0aOG6vy4iCisi4oCcJXPigJ06IMSRxrDhu51uZyBk4bqrbiBraMO0bmcgaOG7lyB0cuG7oyBi4buZIHRyw6xuaCBjaGnhur91IG1hbi5cbiIKKyJIw6N5IGPDom4gbmjhuq9jIMSR4bq/biB2aeG7h2Mgc+G7rSBk4bulbmcg4oCcbWFuLjx0b29sPi5jbWTigJ0gxJHhu4MgdGhheSB0aOG6vy4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjIyMworIzogYnVpbHRpbi9oZWxwLmM6MjMwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnOiBjbWQgZm9yIHN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgogIlBsZWFzZSBjb25zaWRlciB1c2luZyAnbWFuLjx0b29sPi5wYXRoJyBpbnN0ZWFkLiIKIG1zZ3N0ciAiIgotIiclcyc6IGNtZCAobOG7h25oKSBo4buXIHRy4bujIGLhu5kgdHLDrG5oIGNoaeG6v3UgbWFuLlxuIgotIkjDo3kgY8OibiBuaOG6r2MgxJHhur9uIHZp4buHYyBz4butIGThu6VuZyAnbWFuLjx0b29sPi5wYXRoJyDEkeG7gyB0aGF5IHRo4bq/LiIKKyLigJwlc+KAnTogY21kIChs4buHbmgpIGjhu5cgdHLhu6MgYuG7mSB0csOsbmggY2hp4bq/dSBtYW4uXG4iCisiSMOjeSBjw6JuIG5o4bqvYyDEkeG6v24gdmnhu4djIHPhu60gZOG7pW5nIOKAnG1hbi48dG9vbD4ucGF0aOKAnSDEkeG7gyB0aGF5IHRo4bq/LiIKIAotIzogYnVpbHRpbi9oZWxwLmM6Mjg3Ci1tc2dpZCAiVGhlIG1vc3QgY29tbW9ubHkgdXNlZCBnaXQgY29tbWFuZHMgYXJlOiIKLW1zZ3N0ciAiTmjhu69uZyBs4buHbmggZ2l0IGhheSDEkcaw4bujYyBz4butIGThu6VuZyBuaOG6pXQgbMOgOiIKLQotIzogYnVpbHRpbi9oZWxwLmM6MzU1CisjOiBidWlsdGluL2hlbHAuYzozNTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJzogdW5rbm93biBtYW4gdmlld2VyLiIKLW1zZ3N0ciAiJyVzJzoga2jDtG5nIHLDtSBjaMawxqFuZyB0csOsbmggeGVtIG1hbi4iCittc2dzdHIgIuKAnCVz4oCdOiBraMO0bmcgcsO1IGNoxrDGoW5nIHRyw6xuaCB4ZW0gbWFuLiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MzcyCisjOiBidWlsdGluL2hlbHAuYzozNjgKIG1zZ2lkICJubyBtYW4gdmlld2VyIGhhbmRsZWQgdGhlIHJlcXVlc3QiCiBtc2dzdHIgImtow7RuZyBjw7MgdHLDrG5oIHhlbSB0cuG7oyBnacO6cCBk4bqhbmcgbWFucGFnZSB0aeG6v3AgaOG7o3AgduG7m2kgecOqdSBj4bqndSIKIAotIzogYnVpbHRpbi9oZWxwLmM6MzgwCisjOiBidWlsdGluL2hlbHAuYzozNzYKIG1zZ2lkICJubyBpbmZvIHZpZXdlciBoYW5kbGVkIHRoZSByZXF1ZXN0IgogbXNnc3RyICJraMO0bmcgY8OzIHRyw6xuaCB4ZW0gdHLhu6MgZ2nDunAgZOG6oW5nIGluZm8gdGnhur9wIGjhu6NwIHbhu5tpIHnDqnUgY+G6p3UiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjM5MQotIywgYy1mb3JtYXQKLW1zZ2lkICInJXMnOiBub3QgYSBkb2N1bWVudGF0aW9uIGRpcmVjdG9yeS4iCi1tc2dzdHIgIiclcyc6IGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IHRoxrAgbeG7pWMgdMOgaSBsaeG7h3UuIgorIzogYnVpbHRpbi9oZWxwLmM6NDIyCittc2dpZCAiRGVmaW5pbmcgYXR0cmlidXRlcyBwZXIgcGF0aCIKK21zZ3N0ciAixJDhu4tuaCBuZ2jEqWEgY8OhYyB0aHXhu5ljIHTDrW5oIGNobyBt4buXaSDEkcaw4budbmcgZOG6q24iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQzMgotIzogYnVpbHRpbi9oZWxwLmM6NDM5CisjOiBidWlsdGluL2hlbHAuYzo0MjMKK21zZ2lkICJBIEdpdCBnbG9zc2FyeSIKK21zZ3N0ciAiVGh14bqtdCBuZ+G7ryBjaHV5w6puIG3DtG4gR2l0IgorCisjOiBidWlsdGluL2hlbHAuYzo0MjQKK21zZ2lkICJTcGVjaWZpZXMgaW50ZW50aW9uYWxseSB1bnRyYWNrZWQgZmlsZXMgdG8gaWdub3JlIgorbXNnc3RyICJDaOG7iSDEkeG7i25oIGPDoWMgdOG6rXAgdGluIGNoxrBhIHRoZW8gZMO1aSBk4bqldSB24bq/dCBi4buLIGLhu48gcXVhIG3hu5l0IGPDoWNoIGPhu5Egw70iCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNQorbXNnaWQgIkRlZmluaW5nIHN1Ym1vZHVsZSBwcm9wZXJ0aWVzIgorbXNnc3RyICLEkOG7i25oIG5naMSpYSB0aHXhu5ljIHTDrW5oIG3DtC3EkXVuLWNvbiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI2Cittc2dpZCAiU3BlY2lmeWluZyByZXZpc2lvbnMgYW5kIHJhbmdlcyBmb3IgR2l0IgorbXNnc3RyICJDaOG7iSDEkeG7i25oIMSRaeG7g20geMOpdCBkdXnhu4d0IHbDoCB2w7luZyBjaG8gR2l0IgorCisjOiBidWlsdGluL2hlbHAuYzo0MjcKK21zZ2lkICJBIHR1dG9yaWFsIGludHJvZHVjdGlvbiB0byBHaXQgKGZvciB2ZXJzaW9uIDEuNS4xIG9yIG5ld2VyKSIKK21zZ3N0ciAiSMaw4bubbmcgZOG6q24gY8OhY2ggZMO5bmcgR2l0IOG7nyBt4bupYyBjxqEgYuG6o24gKGTDoG5oIGNobyBi4bqjbiAxLjUuMSBoYXkgbeG7m2kgaMahbikiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyOAorbXNnaWQgIkFuIG92ZXJ2aWV3IG9mIHJlY29tbWVuZGVkIHdvcmtmbG93cyB3aXRoIEdpdCIKK21zZ3N0ciAiVOG7lW5nIHF1YW4gduG7gSBsdeG7k25nIGPDtG5nIHZp4buHYyBraHV54bq/biBuZ2jhu4sgbsOqbiBkw7luZyB24bubaSBHaXQuIgorCisjOiBidWlsdGluL2hlbHAuYzo0NDAKK21zZ2lkICJUaGUgY29tbW9uIEdpdCBndWlkZXMgYXJlOlxuIgorbXNnc3RyICJDw6FjIGNo4buJIGThuqtuIGNodW5nIHbhu4EgY8OhY2ggZMO5bmcgR2l0IGzDoDpcbiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDYyIGJ1aWx0aW4vaGVscC5jOjQ3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1c2FnZTogJXMlcyIKIG1zZ3N0ciAiY8OhY2ggc+G7rSBk4bulbmc6ICVzJXMiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQ1MworIzogYnVpbHRpbi9oZWxwLmM6NDk0CiAjLCBjLWZvcm1hdAogbXNnaWQgImBnaXQgJXMnIGlzIGFsaWFzZWQgdG8gYCVzJyIKLW1zZ3N0ciAiYGdpdCAlcycgxJHGsOG7o2MgxJHhurd0IGLDrSBkYW5oIHRow6BuaCBgJXMnIgorbXNnc3RyICLigJxnaXQgJXPigJ0gxJHGsOG7o2MgxJHhurd0IGLDrSBkYW5oIHRow6BuaCDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTY5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxODIKICMsIGMtZm9ybWF0CiBtc2dpZCAib2JqZWN0IHR5cGUgbWlzbWF0Y2ggYXQgJXMiCiBtc2dzdHIgImtp4buDdSDEkeG7kWkgdMaw4bujbmcga2jDtG5nIGto4bubcCB04bqhaSAlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTg5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyMDIKIG1zZ2lkICJvYmplY3Qgb2YgdW5leHBlY3RlZCB0eXBlIgogbXNnc3RyICLEkeG7kWkgdMaw4bujbmcgY+G7p2Ega2nhu4N1IGtow7RuZyBtb25nIMSR4bujaSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjI2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IGZpbGwgJWQgYnl0ZSIKIG1zZ2lkX3BsdXJhbCAiY2Fubm90IGZpbGwgJWQgYnl0ZXMiCiBtc2dzdHJbMF0gImtow7RuZyB0aOG7gyDEkWnhu4FuIHbDoG8gJWQgYnl0ZSIKIG1zZ3N0clsxXSAia2jDtG5nIHRo4buDIMSRaeG7gW4gdsOgbyAlZCBieXRlIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyMzYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI0OQogbXNnaWQgImVhcmx5IEVPRiIKIG1zZ3N0ciAiduG7q2EgxJHDum5nIGzDumMgRU9GIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyMzcKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI1MAogbXNnaWQgInJlYWQgZXJyb3Igb24gaW5wdXQiCiBtc2dzdHIgImzhu5dpIMSR4buNYyDhu58gxJHhuqd1IHbDoG8iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI0OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjYyCiBtc2dpZCAidXNlZCBtb3JlIGJ5dGVzIHRoYW4gd2VyZSBhdmFpbGFibGUiCiBtc2dzdHIgInPhu60gZOG7pW5nIG5oaeG7gXUgaMahbiBz4buRIGzGsOG7o25nIGJ5dGUgbcOgIG7DsyBz4bq1biBjw7MiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI1NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjY5CiBtc2dpZCAicGFjayB0b28gbGFyZ2UgZm9yIGN1cnJlbnQgZGVmaW5pdGlvbiBvZiBvZmZfdCIKIG1zZ3N0ciAicGFjayBxdcOhIGzhu5tuIHNvIHbhu5tpIMSR4buLbmggbmdoxKlhIGhp4buHbiB04bqhaSBj4bunYSBraeG7g3Ugb2ZmX3QiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI3MgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6Mjg1CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgJyVzJyIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIHThuqFvICclcyciCittc2dzdHIgImtow7RuZyB0aOG7gyB04bqhbyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6Mjc3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyOTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gcGFja2ZpbGUgJyVzJyIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIG3hu58gcGFja2ZpbGUgJyVzJyIKK21zZ3N0ciAia2jDtG5nIHRo4buDIG3hu58gcGFja2ZpbGUg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI5MQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzA0CiBtc2dpZCAicGFjayBzaWduYXR1cmUgbWlzbWF0Y2giCiBtc2dzdHIgImNo4buvIGvDvSBjaG8gcGFjayBraMO0bmcga2jhu5twIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzozMTEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMwNgorIywgYy1mb3JtYXQKK21zZ2lkICJwYWNrIHZlcnNpb24gJTxQUkl1MzI+IHVuc3VwcG9ydGVkIgorbXNnc3RyICJraMO0bmcgaOG7lyB0cuG7oyBwaGnDqm4gYuG6o24gcGFjayAlPFBSSXUzMj4iCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrIGhhcyBiYWQgb2JqZWN0IGF0IG9mZnNldCAlbHU6ICVzIgogbXNnc3RyICJwYWNrIGPDsyDEkeG7kWkgdMaw4bujbmcgc2FpIGtob+G6o25nIGLDuSAob2Zmc2V0KSAlbHU6ICVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0MDUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbmZsYXRlIHJldHVybmVkICVkIgogbXNnc3RyICJ44bqjIG7DqW4gdHLhuqMgduG7gSAlZCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDUwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo0OTUKIG1zZ2lkICJvZmZzZXQgdmFsdWUgb3ZlcmZsb3cgZm9yIGRlbHRhIGJhc2Ugb2JqZWN0IgogbXNnc3RyICJ0csOgbiBnacOhIHRy4buLIGtob+G6o25nIGLDuSBjaG8gxJHhu5FpIHTGsOG7o25nIGRlbHRhIGPGoSBz4bufIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0NTgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUwMwogbXNnaWQgImRlbHRhIGJhc2Ugb2Zmc2V0IGlzIG91dCBvZiBib3VuZCIKIG1zZ3N0ciAia2hv4bqjbmcgYsO5IGPGoSBz4bufIGNobyBkZWx0YSBu4bqxbSBuZ2/DoGkgcGjhuqFtIHZpIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0NjYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUxMQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duIG9iamVjdCB0eXBlICVkIgogbXNnc3RyICJraMO0bmcgaGnhu4N1IGtp4buDdSDEkeG7kWkgdMaw4bujbmcgJWQiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ5NQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTQyCiBtc2dpZCAiY2Fubm90IHByZWFkIHBhY2sgZmlsZSIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGNo4bqheSBow6BtIHByZWFkIGNobyB04bqtcCB0aW4gcGFjayIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDk3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAicHJlbWF0dXJlIGVuZCBvZiBwYWNrIGZpbGUsICVsdSBieXRlIG1pc3NpbmciCiBtc2dpZF9wbHVyYWwgInByZW1hdHVyZSBlbmQgb2YgcGFjayBmaWxlLCAlbHUgYnl0ZXMgbWlzc2luZyIKIG1zZ3N0clswXSAidOG6rXAgdGluIHBhY2sgYuG7iyBr4bq/dCB0aMO6YyBz4bubbSwgJWx1IGJ5dGUgYuG7iyB0aGnhur91IgogbXNnc3RyWzFdICJ04bqtcCB0aW4gcGFjayBi4buLIGvhur90IHRow7pjIHPhu5ttLCAlbHUgYnl0ZSBi4buLIHRoaeG6v3UiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUxMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTcwCiBtc2dpZCAic2VyaW91cyBpbmZsYXRlIGluY29uc2lzdGVuY3kiCiBtc2dzdHIgInPhu7EgbcOidSB0aHXhuqtuIHjhuqMgbsOpbiBuZ2hpw6ptIHRy4buNbmciCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU4MwotIywgYy1mb3JtYXQKLW1zZ2lkICJjYW5ub3QgcmVhZCBleGlzdGluZyBvYmplY3QgJXMiCi1tc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgxJHhu5FpIHTGsOG7o25nIMSRw6MgdOG7k24gdOG6oWkgJXMiCi0KLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU4NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjYxIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2NyBidWlsdGluL2luZGV4LXBhY2suYzo2OTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjcyNCBidWlsdGluL2luZGV4LXBhY2suYzo3MzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiU0hBMSBDT0xMSVNJT04gRk9VTkQgV0lUSCAlcyAhIgogbXNnc3RyICJT4buwIFZBIENI4bqgTSBTSEExIMSQw4MgWOG6olkgUkEgVuG7mkkgJXMhIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo1OTgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2NCBidWlsdGluL3BhY2stb2JqZWN0cy5jOjE3MAorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHJlYWQgJXMiCittc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgJXMiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjczMAorIywgYy1mb3JtYXQKK21zZ2lkICJjYW5ub3QgcmVhZCBleGlzdGluZyBvYmplY3QgJXMiCittc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgxJHhu5FpIHTGsOG7o25nIMSRw6MgdOG7k24gdOG6oWkgJXMiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGJsb2Igb2JqZWN0ICVzIgogbXNnc3RyICLEkeG7kWkgdMaw4bujbmcgYmxvYiBraMO0bmcgaOG7o3AgbOG7hyAlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjEwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCAlcyIKIG1zZ3N0ciAiJXMga2jDtG5nIGjhu6NwIGzhu4ciCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjYxMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzYxCiBtc2dpZCAiRXJyb3IgaW4gb2JqZWN0IgogbXNnc3RyICJM4buXaSB0cm9uZyDEkeG7kWkgdMaw4bujbmciCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjYxNAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vdCBhbGwgY2hpbGQgb2JqZWN0cyBvZiAlcyBhcmUgcmVhY2hhYmxlIgogbXNnc3RyICJLaMO0bmcgcGjhuqNpIHThuqV0IGPhuqMgY8OhYyDEkeG7kWkgdMaw4bujbmcgY29uIGPhu6dhICVzIGzDoCBjw7MgdGjhu4MgduG7m2kgdOG7m2kgxJHGsOG7o2MiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY4NwotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzEzCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo4MzMgYnVpbHRpbi9pbmRleC1wYWNrLmM6ODYzCiBtc2dpZCAiZmFpbGVkIHRvIGFwcGx5IGRlbHRhIgogbXNnc3RyICJn4bq3cCBs4buXaSBraGkgw6FwIGThu6VuZyBkZWx0YSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODUwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDA0CiBtc2dpZCAiUmVjZWl2aW5nIG9iamVjdHMiCiBtc2dzdHIgIsSQYW5nIG5o4bqtbiB24buBIGPDoWMgxJHhu5FpIHTGsOG7o25nIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo4NTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMDQKIG1zZ2lkICJJbmRleGluZyBvYmplY3RzIgogbXNnc3RyICJDw6FjIMSR4buRaSB0xrDhu6NuZyBi4bqjbmcgbeG7pWMgbOG7pWMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg3MgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzMAogbXNnaWQgInBhY2sgaXMgY29ycnVwdGVkIChTSEExIG1pc21hdGNoKSIKIG1zZ3N0ciAicGFjayBi4buLIHNhaSBo4buPbmcgKFNIQTEga2jDtG5nIGto4bubcCkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg3NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzNQogbXNnaWQgImNhbm5vdCBmc3RhdCBwYWNrZmlsZSIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGZzdGF0IHBhY2tmaWxlIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo4ODAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzgKIG1zZ2lkICJwYWNrIGhhcyBqdW5rIGF0IHRoZSBlbmQiCiBtc2dzdHIgInBhY2sgY8OzIHBo4bqnbiB0aOG7q2Eg4bufIGN14buRaSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6OTAzCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDQ5Cittc2dpZCAiY29uZnVzaW9uIGJleW9uZCBpbnNhbml0eSBpbiBwYXJzZV9wYWNrX29iamVjdHMoKSIKK21zZ3N0ciAibOG7mW4geOG7mW4gaMahbiBj4bqjIMSRacOqbiBy4buTIGtoaSBjaOG6oXkgaMOgbSBwYXJzZV9wYWNrX29iamVjdHMoKSIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA3MgogbXNnaWQgIlJlc29sdmluZyBkZWx0YXMiCiBtc2dzdHIgIsSQYW5nIHBow6JuIGdp4bqjaSBjw6FjIGRlbHRhIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo5NTQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIGNyZWF0ZSB0aHJlYWQ6ICVzIgorbXNnc3RyICJraMO0bmcgdGjhu4MgdOG6oW8gdHV54bq/bjogJXMiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMjQKIG1zZ2lkICJjb25mdXNpb24gYmV5b25kIGluc2FuaXR5IgogbXNnc3RyICJs4buZbiB44buZbiBoxqFuIGPhuqMgxJFpw6puIHLhu5MiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjk3MworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEzMgorIywgYy1mb3JtYXQKK21zZ2lkICJjb21wbGV0ZWQgd2l0aCAlZCBsb2NhbCBvYmplY3RzIgorbXNnc3RyICLEkeG6p3kgxJHhu6cgduG7m2kgJWQgxJHhu5FpIHTGsOG7o25nIG7hu5lpIGLhu5kiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5leHBlY3RlZCB0YWlsIGNoZWNrc3VtIGZvciAlcyAoZGlzayBjb3JydXB0aW9uPykiCittc2dzdHIgIlThu5VuZyBraeG7g20gdHJhIHRhaWwga2jDtG5nIG5oxrAgbW9uZyDEkeG7o2kgY2hvICVzICjEkcSpYSBo4buPbmc/KSIKKworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrIGhhcyAlZCB1bnJlc29sdmVkIGRlbHRhIgogbXNnaWRfcGx1cmFsICJwYWNrIGhhcyAlZCB1bnJlc29sdmVkIGRlbHRhcyIKIG1zZ3N0clswXSAicGFjayBjw7MgJWQgZGVsdGEgY2jGsGEgxJHGsOG7o2MgZ2nhuqNpIHF1eeG6v3QiCiBtc2dzdHJbMV0gInBhY2sgY8OzICVkIGRlbHRhIGNoxrBhIMSRxrDhu6NjIGdp4bqjaSBxdXnhur90IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo5OTgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGRlZmxhdGUgYXBwZW5kZWQgb2JqZWN0ICglZCkiCiBtc2dzdHIgImtow7RuZyB0aOG7gyB44bqjIMSR4buRaSB0xrDhu6NuZyBu4buRaSB0aMOqbSAoJWQpIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDc3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjUwCiAjLCBjLWZvcm1hdAogbXNnaWQgImxvY2FsIG9iamVjdCAlcyBpcyBjb3JydXB0IgogbXNnc3RyICLEkeG7kWkgdMaw4bujbmcgbuG7mWkgYuG7mSAlcyBi4buLIGjhu49uZyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEwMQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI3NAogbXNnaWQgImVycm9yIHdoaWxlIGNsb3NpbmcgcGFjayBmaWxlIgogbXNnc3RyICJn4bq3cCBs4buXaSB0cm9uZyBraGkgxJHDs25nIHThuq1wIHRpbiBwYWNrIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTE0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjg3CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCB3cml0ZSBrZWVwIGZpbGUgJyVzJyIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIGdoaSB04bqtcCB0aW4gZ2nhu68gbOG6oWkgJyVzJyIKK21zZ3N0ciAia2jDtG5nIHRo4buDIGdoaSB04bqtcCB0aW4gZ2nhu68gbOG6oWkg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMjIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IGNsb3NlIHdyaXR0ZW4ga2VlcCBmaWxlICclcyciCi1tc2dzdHIgImtow7RuZyB0aOG7gyDEkcOzbmcgdOG6rXAgdGluIGdp4buvIGzhuqFpIMSRw6MgxJHGsOG7o2MgZ2hpICclcyciCittc2dzdHIgImtow7RuZyB0aOG7gyDEkcOzbmcgdOG6rXAgdGluIGdp4buvIGzhuqFpIMSRw6MgxJHGsOG7o2MgZ2hpIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTM1CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzA4CiBtc2dpZCAiY2Fubm90IHN0b3JlIHBhY2sgZmlsZSIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGzGsHUgdOG6rXAgdGluIHBhY2siCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNDYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzMTkKIG1zZ2lkICJjYW5ub3Qgc3RvcmUgaW5kZXggZmlsZSIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGzGsHUgdHLhu68gdOG6rXAgdGluIGdoaSBt4bulYyBs4bulYyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI0NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM1MgorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcGFjay5pbmRleHZlcnNpb249JTxQUkl1MzI+IgorbXNnc3RyICJzYWkgcGFjay5pbmRleHZlcnNpb249JTxQUkl1MzI+IgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzU4CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgbnVtYmVyIG9mIHRocmVhZHMgc3BlY2lmaWVkICglZCkiCittc2dzdHIgInPhu5EgdHV54bq/biBjaOG7iSByYSBraMO0bmcgaOG7o3AgbOG7hyAoJWQpIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzYyIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAibm8gdGhyZWFkcyBzdXBwb3J0LCBpZ25vcmluZyAlcyIKK21zZ3N0ciAia2jDtG5nIGjhu5cgdHLhu6MgxJFhIHR1eeG6v24sIGLhu48gcXVhICVzIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBvcGVuIGV4aXN0aW5nIHBhY2sgZmlsZSAnJXMnIgotbXNnc3RyICJLaMO0bmcgdGjhu4MgbeG7nyB04bqtcCB0aW4gcGFjayDEkcOjIHPhurVuIGPDsyAnJXMnICIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIG3hu58gdOG6rXAgdGluIHBhY2sgxJHDoyBz4bq1biBjw7Mg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNDkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IG9wZW4gZXhpc3RpbmcgcGFjayBpZHggZmlsZSBmb3IgJyVzJyIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIG3hu58gdOG6rXAgdGluICdwYWNrIGlkeCcgY2hvICclcyciCittc2dzdHIgIktow7RuZyB0aOG7gyBt4bufIHThuq1wIHRpbiDigJxwYWNrIGlkeOKAnSBjaG8g4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyOTYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NjkKICMsIGMtZm9ybWF0CiBtc2dpZCAibm9uIGRlbHRhOiAlZCBvYmplY3QiCiBtc2dpZF9wbHVyYWwgIm5vbiBkZWx0YTogJWQgb2JqZWN0cyIKIG1zZ3N0clswXSAia2jDtG5nIGRlbHRhOiAlZCDEkeG7kWkgdMaw4bujbmciCiBtc2dzdHJbMV0gImtow7RuZyBkZWx0YTogJWQgxJHhu5FpIHTGsOG7o25nIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzAzCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNoYWluIGxlbmd0aCA9ICVkOiAlbHUgb2JqZWN0IgogbXNnaWRfcGx1cmFsICJjaGFpbiBsZW5ndGggPSAlZDogJWx1IG9iamVjdHMiCiBtc2dzdHJbMF0gImNoaeG7gXUgZMOgaSB4w61jaCA9ICVkOiAlbHUgxJHhu5FpIHTGsOG7o25nIgogbXNnc3RyWzFdICJjaGnhu4F1IGTDoGkgeMOtY2ggPSAlZDogJWx1IMSR4buRaSB0xrDhu6NuZyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMzMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTUwMwogbXNnaWQgIkNhbm5vdCBjb21lIGJhY2sgdG8gY3dkIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgcXVheSBs4bqhaSBjd2QiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNzQKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNzcKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzODkKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzOTMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NDcgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU1MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU2MiBidWlsdGluL2luZGV4LXBhY2suYzoxNTY2CiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCAlcyIKIG1zZ3N0ciAiJXMgc2FpIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDA3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTgwCiBtc2dpZCAiLS1maXgtdGhpbiBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IC0tc3RkaW4iCiBtc2dzdHIgIi0tZml4LXRoaW4ga2jDtG5nIHRo4buDIMSRxrDhu6NjIGTDuW5nIG3DoCBraMO0bmcgY8OzIC0tc3RkaW4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MTEKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MjEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1ODQgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU5NAogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrZmlsZSBuYW1lICclcycgZG9lcyBub3QgZW5kIHdpdGggJy5wYWNrJyIKLW1zZ3N0ciAidMOqbiB04bqtcCB0aW4gcGFja2ZpbGUgJyVzJyBraMO0bmcgxJHGsOG7o2Mga+G6v3QgdGjDumMgYuG6sW5nIMSRdcO0aSAnLnBhY2snIgorbXNnc3RyICJ0w6puIHThuq1wIHRpbiBwYWNrZmlsZSDigJwlc+KAnSBraMO0bmcgxJHGsOG7o2Mga+G6v3QgdGjDumMgYuG6sW5nIMSRdcO0aSDigJwucGFja+KAnSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQzMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTYwMwogbXNnaWQgIi0tdmVyaWZ5IHdpdGggbm8gcGFja2ZpbGUgbmFtZSBnaXZlbiIKIG1zZ3N0ciAiZMO5bmcgdMO5eSBjaOG7jW4gLS12ZXJpZnkgbcOgIGtow7RuZyDEkcawYSByYSB0w6puIHBhY2tmaWxlIgogCkBAIC0zMTg0LDIyICs1NzEzLDIyIEBACiAjOiBidWlsdGluL2luaXQtZGIuYzo2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgc3RhdCAnJXMnIgotbXNnc3RyICJraMO0bmcgdGjhu4MgbOG6pXkgdHLhuqFuZyB0aMOhaSAoc3RhdCkgduG7gSAnJXMnIgorbXNnc3RyICJraMO0bmcgdGjhu4MgbOG6pXkgdHLhuqFuZyB0aMOhaSAoc3RhdCkgduG7gSDigJwlc+KAnSIKIAogIzogYnVpbHRpbi9pbml0LWRiLmM6NzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHN0YXQgdGVtcGxhdGUgJyVzJyIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIHN0YXQgKGzhuqV5IHRy4bqhbmcgdGjDoWkgduG7gSkgbeG6q3UgJyVzJyIKK21zZ3N0ciAia2jDtG5nIHRo4buDIHN0YXQgKGzhuqV5IHRy4bqhbmcgdGjDoWkgduG7gSkgbeG6q3Ug4oCcJXPigJ0iCiAKICM6IGJ1aWx0aW4vaW5pdC1kYi5jOjgwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBvcGVuZGlyICclcyciCi1tc2dzdHIgImtow7RuZyB0aOG7gyBvcGVuZGlyICclcyciCittc2dzdHIgImtow7RuZyB0aOG7gyBvcGVuZGlyIOKAnCVz4oCdIgogCiAjOiBidWlsdGluL2luaXQtZGIuYzo5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZGxpbmsgJyVzJyIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIHJlYWRsaW5rICclcyciCittc2dzdHIgImtow7RuZyB0aOG7gyByZWFkbGluayDigJwlc+KAnSIKIAogIzogYnVpbHRpbi9pbml0LWRiLmM6OTkKICMsIGMtZm9ybWF0CkBAIC0zMjA5LDcgKzU3MzgsNyBAQAogIzogYnVpbHRpbi9pbml0LWRiLmM6MTAyCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBzeW1saW5rICclcycgJyVzJyIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIHThuqFvIGxpw6puIGvhur90IHTGsOG7o25nIHRyxrBuZyAoc3ltbGluaykgJyVzJyAnJXMnIgorbXNnc3RyICJraMO0bmcgdGjhu4MgdOG6oW8gbGnDqm4ga+G6v3QgdMaw4bujbmcgdHLGsG5nIChzeW1saW5rKSDigJwlc+KAnSDigJwlc+KAnSIKIAogIzogYnVpbHRpbi9pbml0LWRiLmM6MTA2CiAjLCBjLWZvcm1hdApAQCAtMzIzNCwxOTMgKzU3NjMsNTA1IEBACiAjOiBidWlsdGluL2luaXQtZGIuYzoxNTQKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90IGNvcHlpbmcgdGVtcGxhdGVzIG9mIGEgd3JvbmcgZm9ybWF0IHZlcnNpb24gJWQgZnJvbSAnJXMnIgotbXNnc3RyICJraMO0bmcgc2FvIGNow6lwIGPDoWMgbeG6q3UgY+G7p2EgcGhpw6puIGLhuqNuIHNhaSDEkeG7i25oIGThuqFuZyAlZCB04burICclcyciCittc2dzdHIgImtow7RuZyBzYW8gY2jDqXAgY8OhYyBt4bqrdSBj4bunYSBwaGnDqm4gYuG6o24gc2FpIMSR4buLbmggZOG6oW5nICVkIHThu6sg4oCcJXPigJ0iCiAKICM6IGJ1aWx0aW4vaW5pdC1kYi5jOjE5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnNhbmUgZ2l0IGRpcmVjdG9yeSAlcyIKIG1zZ3N0ciAidGjGsCBt4bulYyBnaXQgxJFpw6puIHLhu5MgJXMiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjMyMgotIzogYnVpbHRpbi9pbml0LWRiLmM6MzI1CisjOiBidWlsdGluL2luaXQtZGIuYzozMjMgYnVpbHRpbi9pbml0LWRiLmM6MzI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGFscmVhZHkgZXhpc3RzIgotbXNnc3RyICIlcyDEkcOjIHThu5NuIHThuqFpIHLhu5NpIgorbXNnc3RyICIlcyDEkcOjIGPDsyB04burIHRyxrDhu5tjIHLhu5NpIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzozNTQKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjM1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gaGFuZGxlIGZpbGUgdHlwZSAlZCIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIGhhbmRsZSB04buHcCB0aW4ga2nhu4N1ICVkIgorbXNnc3RyICJraMO0bmcgdGjhu4MgbuG6r20gKGhhbmRsZSkgdOG6rXAgdGluIGtp4buDdSAlZCIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6MzU3CisjOiBidWlsdGluL2luaXQtZGIuYzozNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIG1vdmUgJXMgdG8gJXMiCiBtc2dzdHIgImtow7RuZyBkaSBjaHV54buDbiDEkcaw4bujYyAlcyB2w6BvICVzIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzozNjIKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjM2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGdpdCBsaW5rICVzIgotbXNnc3RyICJLaMO0bmcgdGjhu4MgdOG6oW8gbGnDqm4ga+G6v3QgZ2l0ICclcyciCittc2dzdHIgIktow7RuZyB0aOG7gyB04bqhbyBsacOqbiBr4bq/dCBnaXQg4oCcJXPigJ0iCiAKICMuCiAjLiAqIFRSQU5TTEFUT1JTOiBUaGUgZmlyc3QgJyVzJyBpcyBlaXRoZXIgIlJlaW5pdGlhbGl6ZWQKICMuICogZXhpc3RpbmciIG9yICJJbml0aWFsaXplZCBlbXB0eSIsIHRoZSBzZWNvbmQgIiBzaGFyZWQiIG9yCiAjLiAqICIiLCBhbmQgdGhlIGxhc3QgJyVzJXMnIGlzIHRoZSB2ZXJiYXRpbSBkaXJlY3RvcnkgbmFtZS4KICMuCi0jOiBidWlsdGluL2luaXQtZGIuYzo0MTkKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQyMAogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyVzIEdpdCByZXBvc2l0b3J5IGluICVzJXNcbiIKIG1zZ3N0ciAiJXMlcyBraG8gR2l0IHRyb25nICVzJXNcbiIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6NDIwCisjOiBidWlsdGluL2luaXQtZGIuYzo0MjEKIG1zZ2lkICJSZWluaXRpYWxpemVkIGV4aXN0aW5nIgogbXNnc3RyICJLaOG7n2kgdOG6oW8gbOG6oWkgxJHDoyBz4bq1biBjw7MgcuG7k2kiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQyMAorIzogYnVpbHRpbi9pbml0LWRiLmM6NDIxCiBtc2dpZCAiSW5pdGlhbGl6ZWQgZW1wdHkiCiBtc2dzdHIgIkto4bufaSB04bqhbyB0cuG7kW5nIHLhu5duZyIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6NDIxCisjOiBidWlsdGluL2luaXQtZGIuYzo0MjIKIG1zZ2lkICIgc2hhcmVkIgogbXNnc3RyICIgxJHDoyBjaGlhIHPhursiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQ0MAorIzogYnVpbHRpbi9pbml0LWRiLmM6NDQxCiBtc2dpZCAiY2Fubm90IHRlbGwgY3dkIgogbXNnc3RyICJraMO0bmcgbsOzaSBjaHV54buHbiDEkcaw4bujYyB24bubaSBs4buHbmggY3dkIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo1MjEKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjUyOAorIzogYnVpbHRpbi9pbml0LWRiLmM6NDY3Cittc2dpZCAiIgorImdpdCBpbml0IFstcSB8IC0tcXVpZXRdIFstLWJhcmVdIFstLXRlbXBsYXRlPTx0ZW1wbGF0ZS1kaXJlY3Rvcnk+XSBbLS1zaGFyZWQiCisiWz08cGVybWlzc2lvbnM+XV0gW2RpcmVjdG9yeV0iCittc2dzdHIgIiIKKyJnaXQgaW5pdCBbLXEgfCAtLXF1aWV0XSBbLS1iYXJlXSBbLS10ZW1wbGF0ZT08dGjGsC1t4bulYy104bqhbT5dIFstLXNoYXJlZFs9PGPDoWMtIgorInF1eeG7gW4+XV0gW3RoxrAtbeG7pWNdIgorCisjOiBidWlsdGluL2luaXQtZGIuYzo0OTAKK21zZ2lkICJwZXJtaXNzaW9ucyIKK21zZ3N0ciAiY8OhYyBxdXnhu4FuIgorCisjOiBidWlsdGluL2luaXQtZGIuYzo0OTEKK21zZ2lkICJzcGVjaWZ5IHRoYXQgdGhlIGdpdCByZXBvc2l0b3J5IGlzIHRvIGJlIHNoYXJlZCBhbW9uZ3N0IHNldmVyYWwgdXNlcnMiCittc2dzdHIgImNo4buJIHJhIGPDoWkgbcOgIGtobyBnaXQgxJHGsOG7o2MgY2hpYSBz4bq7IGdp4buvYSBuaGnhu4F1IG5nxrDhu51pIGTDuW5nIgorCisjOiBidWlsdGluL2luaXQtZGIuYzo0OTMgYnVpbHRpbi9wcnVuZS1wYWNrZWQuYzo3NworbXNnaWQgImJlIHF1aWV0IgorbXNnc3RyICJpbSBs4bq3bmciCisKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjUyMiBidWlsdGluL2luaXQtZGIuYzo1MjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG1rZGlyICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgbWtkaXIgKHThuqFvIHRoxrAgbeG7pWMpOiAlcyIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6NTMyCisjOiBidWlsdGluL2luaXQtZGIuYzo1MzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IGNoZGlyIHRvICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgY2hkaXIgKGNodXnhu4NuIMSR4buVaSB0aMawIG3hu6VjKSBzYW5nICVzIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo1NTQKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjU1NQogIywgYy1mb3JtYXQKLW1zZ2lkICIlcyAob3IgLS13b3JrLXRyZWU9PGRpcmVjdG9yeT4pIG5vdCBhbGxvd2VkIHdpdGhvdXQgc3BlY2lmeWluZyAlcyAob3IgLS1naXQtZGlyPTxkaXJlY3Rvcnk+KSIKLW1zZ3N0ciAiJXMgKGhv4bq3YyAtLXdvcmstdHJlZT08dGjGsC1t4bulYz4pIGtow7RuZyBjaG8gcGjDqXAga2jDtG5nIGNo4buJIMSR4buLbmggJXMgKGhv4bq3YyAtLWdpdC1kaXI9PHRoxrAtbeG7pWM+KSIKK21zZ2lkICIiCisiJXMgKG9yIC0td29yay10cmVlPTxkaXJlY3Rvcnk+KSBub3QgYWxsb3dlZCB3aXRob3V0IHNwZWNpZnlpbmcgJXMgKG9yIC0tZ2l0LSIKKyJkaXI9PGRpcmVjdG9yeT4pIgorbXNnc3RyICIiCisiJXMgKGhv4bq3YyAtLXdvcmstdHJlZT08dGjGsC1t4bulYz4pIGtow7RuZyBjaG8gcGjDqXAga2jDtG5nIGNo4buJIMSR4buLbmggJXMgKGhv4bq3YyAtLWdpdC0iCisiZGlyPTx0aMawLW3hu6VjPikiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjU3OAorIzogYnVpbHRpbi9pbml0LWRiLmM6NTc5CiBtc2dpZCAiQ2Fubm90IGFjY2VzcyBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICJLaMO0bmcgdGjhu4MgdHJ1eSBj4bqtcCB0aMawIG3hu6VjIGzDoG0gdmnhu4djIGhp4buHbiBow6BuaCIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6NTg1CisjOiBidWlsdGluL2luaXQtZGIuYzo1ODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGFjY2VzcyB3b3JrIHRyZWUgJyVzJyIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIHRydXkgY+G6rXAgY8OieSAodHJlZSkgbMOgbSB2aeG7h2MgJyVzJyIKK21zZ3N0ciAia2jDtG5nIHRo4buDIHRydXkgY+G6rXAgY8OieSAodHJlZSkgbMOgbSB2aeG7h2Mg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTg4CisjOiBidWlsdGluL2xvZy5jOjQwCittc2dpZCAiZ2l0IGxvZyBbPG9wdGlvbnM+XSBbPHJldmlzaW9uIHJhbmdlPl0gW1stLV0gPHBhdGg+Li4uXVxuIgorbXNnc3RyICJnaXQgbG9nIFs8Y8OhYy10w7l5LWNo4buNbj5dIFs8dsO5bmcgeGVtIHjDqXQ+XSBbWy0tXSA8xJHGsOG7nW5nLWThuqtuPi4uLl1cbiIKKworIzogYnVpbHRpbi9sb2cuYzo0MQorbXNnaWQgIiAgIG9yOiBnaXQgc2hvdyBbb3B0aW9uc10gPG9iamVjdD4uLi4iCittc2dzdHIgIiAgaGF5OiBnaXQgc2hvdyBbY8OhYy10w7l5LWNo4buNbl0gPMSR4buRaS10xrDhu6NuZz4uLi4iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTAzCittc2dpZCAic3VwcHJlc3MgZGlmZiBvdXRwdXQiCittc2dzdHIgImNo4bq3biBt4buNaSBr4bq/dCB4deG6pXQgdOG7qyBkaWZmIgorCisjOiBidWlsdGluL2xvZy5jOjEwNAorbXNnaWQgInNob3cgc291cmNlIgorbXNnc3RyICJoaeG7g24gdGjhu4sgbcOjIG5ndeG7k24iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTA1Cittc2dpZCAiVXNlIG1haWwgbWFwIGZpbGUiCittc2dzdHIgIlPhu60gZOG7pW5nIHThuq1wIHRpbiDDoW5oIHjhuqEgdGjGsCIKKworIzogYnVpbHRpbi9sb2cuYzoxMDYKK21zZ2lkICJkZWNvcmF0ZSBvcHRpb25zIgorbXNnc3RyICJjw6FjIHTDuXkgY2jhu41uIHRyYW5nIHRyw60iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTk5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZpbmFsIG91dHB1dDogJWQgJXNcbiIKIG1zZ3N0ciAiS+G6v3QgeHXhuqV0IGN14buRaSBjw7luZzogJWQgJXNcbiIKIAotIzogYnVpbHRpbi9sb2cuYzo0MDEKLSM6IGJ1aWx0aW4vbG9nLmM6NDg5CisjOiBidWlsdGluL2xvZy5jOjQyMiBidWlsdGluL2xvZy5jOjUxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCBvYmplY3QgJXMiCiBtc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7jWMgxJHhu5FpIHTGsOG7o25nICVzIgogCi0jOiBidWlsdGluL2xvZy5jOjUxMworIzogYnVpbHRpbi9sb2cuYzo1MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biB0eXBlOiAlZCIKIG1zZ3N0ciAiS2jDtG5nIG5o4bqtbiByYSBraeG7g3U6ICVkIgogCi0jOiBidWlsdGluL2xvZy5jOjYwMgorIzogYnVpbHRpbi9sb2cuYzo2MzgKIG1zZ2lkICJmb3JtYXQuaGVhZGVycyB3aXRob3V0IHZhbHVlIgogbXNnc3RyICJmb3JtYXQuaGVhZGVycyBraMO0bmcgY8OzIGdpw6EgdHLhu4sgY+G7pSB0aOG7gyIKIAotIzogYnVpbHRpbi9sb2cuYzo2NzYKKyM6IGJ1aWx0aW4vbG9nLmM6NzIwCiBtc2dpZCAibmFtZSBvZiBvdXRwdXQgZGlyZWN0b3J5IGlzIHRvbyBsb25nIgogbXNnc3RyICJ0w6puIGPhu6dhIHRoxrAgbeG7pWMga+G6v3QgeHXhuqV0IHF1w6EgZMOgaSIKIAotIzogYnVpbHRpbi9sb2cuYzo2ODcKKyM6IGJ1aWx0aW4vbG9nLmM6NzM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBvcGVuIHBhdGNoIGZpbGUgJXMiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBt4bufIHThuq1wIHRpbiBtaeG6v25nIHbDoTogJXMiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NzAxCisjOiBidWlsdGluL2xvZy5jOjc1MAogbXNnaWQgIk5lZWQgZXhhY3RseSBvbmUgcmFuZ2UuIgogbXNnc3RyICJD4bqnbiBjaMOtbmggeMOhYyBt4buZdCB2w7luZy4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NzA5CisjOiBidWlsdGluL2xvZy5jOjc1OAogbXNnaWQgIk5vdCBhIHJhbmdlLiIKIG1zZ3N0ciAiS2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgdsO5bmcuIgogCi0jOiBidWlsdGluL2xvZy5jOjc4NgorIzogYnVpbHRpbi9sb2cuYzo4NjAKIG1zZ2lkICJDb3ZlciBsZXR0ZXIgbmVlZHMgZW1haWwgZm9ybWF0IgotbXNnc3RyICInQ292ZXIgbGV0dGVyJyBj4bqnbiBjaG8gxJHhu4tuaCBk4bqhbmcgdGjGsCIKK21zZ3N0ciAi4oCdQ292ZXIgbGV0dGVy4oCdIGPhuqduIGNobyDEkeG7i25oIGThuqFuZyB0aMawIgogCi0jOiBidWlsdGluL2xvZy5jOjg1OQorIzogYnVpbHRpbi9sb2cuYzo5MzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW5zYW5lIGluLXJlcGx5LXRvOiAlcyIKIG1zZ3N0ciAiaW4tcmVwbHktdG8gxJFpw6puIHLhu5M6ICVzIgogCi0jOiBidWlsdGluL2xvZy5jOjkzMgorIzogYnVpbHRpbi9sb2cuYzo5NjQKK21zZ2lkICJnaXQgZm9ybWF0LXBhdGNoIFtvcHRpb25zXSBbPHNpbmNlPiB8IDxyZXZpc2lvbiByYW5nZT5dIgorbXNnc3RyICJnaXQgZm9ybWF0LXBhdGNoIFtjw6FjLXTDuXktY2jhu41uXSBbPGvhu4MtdOG7qz4gfCA8dsO5bmcteGVtLXjDqXQ+XSIKKworIzogYnVpbHRpbi9sb2cuYzoxMDA5CiBtc2dpZCAiVHdvIG91dHB1dCBkaXJlY3Rvcmllcz8iCiBtc2dzdHIgIkhhaSB0aMawIG3hu6VjIGvhur90IHh14bqldD8iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE1MwotIywgYy1mb3JtYXQKLW1zZ2lkICJib2d1cyBjb21taXR0ZXIgaW5mbyAlcyIKLW1zZ3N0ciAidGjDtG5nIHRpbiBuZ8aw4budaSBjaHV54buDbiBnaWFvIGtow7RuZyBjw7MgdGjhu7FjICVzIgorIzogYnVpbHRpbi9sb2cuYzoxMTA4Cittc2dpZCAidXNlIFtQQVRDSCBuL21dIGV2ZW4gd2l0aCBhIHNpbmdsZSBwYXRjaCIKK21zZ3N0ciAiZMO5bmcgW1BBVENIIG4vbV0gbmdheSBj4bqjIHbhu5tpIG1p4bq/bmcgdsOhIMSRxqFuIgogCi0jOiBidWlsdGluL2xvZy5jOjExOTgKKyM6IGJ1aWx0aW4vbG9nLmM6MTExMQorbXNnaWQgInVzZSBbUEFUQ0hdIGV2ZW4gd2l0aCBtdWx0aXBsZSBwYXRjaGVzIgorbXNnc3RyICJkw7luZyBbVsOBXSBuZ2F5IGPhuqMgduG7m2kgY8OhYyBtaeG6v25nIHbDoSBwaOG7qWMgdOG6oXAiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTExNQorbXNnaWQgInByaW50IHBhdGNoZXMgdG8gc3RhbmRhcmQgb3V0IgorbXNnc3RyICJoaeG7g24gdGjhu4sgbWnhur9uZyB2w6EgcmEgxJHhuqd1IHJhIGNodeG6qW4iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTExNworbXNnaWQgImdlbmVyYXRlIGEgY292ZXIgbGV0dGVyIgorbXNnc3RyICJ04bqhbyBiw6wgdGjGsCIKKworIzogYnVpbHRpbi9sb2cuYzoxMTE5Cittc2dpZCAidXNlIHNpbXBsZSBudW1iZXIgc2VxdWVuY2UgZm9yIG91dHB1dCBmaWxlIG5hbWVzIgorbXNnc3RyICJz4butIGThu6VuZyBjaOG7l2kgZMOjeSBz4buRIGThuqFuZyDEkcahbiBnaeG6o24gY2hvIHTDqm4gdOG6rXAtdGluIHh14bqldCByYSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTIwCittc2dpZCAic2Z4IgorbXNnc3RyICJzZngiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyMQorbXNnaWQgInVzZSA8c2Z4PiBpbnN0ZWFkIG9mICcucGF0Y2gnIgorbXNnc3RyICJz4butIGThu6VuZyA8c2Z4PiB0aGF5IGNobyDigJwucGF0Y2jigJ0iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyMworbXNnaWQgInN0YXJ0IG51bWJlcmluZyBwYXRjaGVzIGF0IDxuPiBpbnN0ZWFkIG9mIDEiCittc2dzdHIgImLhuq90IMSR4bqndSDEkcOhbmggc+G7kSBtaeG6v25nIHbDoSB04burIDxuPiB0aGF5IHbDrCAxIgorCisjOiBidWlsdGluL2xvZy5jOjExMjUKK21zZ2lkICJtYXJrIHRoZSBzZXJpZXMgYXMgTnRoIHJlLXJvbGwiCittc2dzdHIgIsSRw6FuaCBk4bqldSBjaHXhu5dpIG7hu5FpIHRp4bq/cCBk4bqhbmcgdGjhu6ktTiByZS1yb2xsIgorCisjOiBidWlsdGluL2xvZy5jOjExMjcKK21zZ2lkICJVc2UgWzxwcmVmaXg+XSBpbnN0ZWFkIG9mIFtQQVRDSF0iCittc2dzdHIgIkTDuW5nIFs8dGnhu4FuLXThu5E+XSB0aGF5IGNobyBbVsOBXSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTMwCittc2dpZCAic3RvcmUgcmVzdWx0aW5nIGZpbGVzIGluIDxkaXI+IgorbXNnc3RyICJsxrB1IGPDoWMgdOG6rXAgdGluIGvhur90IHF14bqjIHRyb25nIDx0Lm3hu6VjPiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTMzCittc2dpZCAiZG9uJ3Qgc3RyaXAvYWRkIFtQQVRDSF0iCittc2dzdHIgImtow7RuZyBzdHJpcC9hZGQgW1bDgV0iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzNgorbXNnaWQgImRvbid0IG91dHB1dCBiaW5hcnkgZGlmZnMiCittc2dzdHIgImtow7RuZyBr4bq/dCB4deG6pXQgZGlmZiAobmjhu69uZyBraMOhYyBiaeG7h3QpIG5o4buLIHBow6JuIgorCisjOiBidWlsdGluL2xvZy5jOjExMzgKK21zZ2lkICJkb24ndCBpbmNsdWRlIGEgcGF0Y2ggbWF0Y2hpbmcgYSBjb21taXQgdXBzdHJlYW0iCittc2dzdHIgImtow7RuZyBiYW8gZ+G7k20gbWnhur9uZyB2w6Ega2jhu5twIHbhu5tpIG3hu5l0IGzhuqduIGNodXnhu4NuIGdpYW8gdGjGsOG7o25nIG5ndeG7k24iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0MAorbXNnaWQgInNob3cgcGF0Y2ggZm9ybWF0IGluc3RlYWQgb2YgZGVmYXVsdCAocGF0Y2ggKyBzdGF0KSIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIMSR4buLbmggZOG6oW5nIG1p4bq/bmcgdsOhIHRoYXkgdsOsIG3hurdjIMSR4buLbmggKG1p4bq/bmcgdsOhICsgdGjhu5FuZyBrw6opIgorCisjOiBidWlsdGluL2xvZy5jOjExNDIKK21zZ2lkICJNZXNzYWdpbmciCittc2dzdHIgIkzhu51pIG5o4bqvbiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQzCittc2dpZCAiaGVhZGVyIgorbXNnc3RyICLEkeG6p3UgxJHhu4EgdGjGsCIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQ0Cittc2dpZCAiYWRkIGVtYWlsIGhlYWRlciIKK21zZ3N0ciAidGjDqm0gxJHhuqd1IMSR4buBIHRoxrAiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0NSBidWlsdGluL2xvZy5jOjExNDcKK21zZ2lkICJlbWFpbCIKK21zZ3N0ciAidGjGsCDEkWnhu4duIHThu60iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0NQorbXNnaWQgImFkZCBUbzogaGVhZGVyIgorbXNnc3RyICJ0aMOqbSBUbzogxJHhuqd1IMSR4buBIHRoxrAiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0NworbXNnaWQgImFkZCBDYzogaGVhZGVyIgorbXNnc3RyICJ0aMOqbSBDYzogxJHhuqd1IMSR4buBIHRoxrAiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0OQorbXNnaWQgIm1lc3NhZ2UtaWQiCittc2dzdHIgIm1lc3NhZ2UtaWQiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE1MAorbXNnaWQgIm1ha2UgZmlyc3QgbWFpbCBhIHJlcGx5IHRvIDxtZXNzYWdlLWlkPiIKK21zZ3N0ciAiZMO5bmcgdGjGsCDEkeG6p3UgdGnDqm4gxJHhu4MgdHLhuqMgbOG7nWkgPG1lc3NhZ2UtaWQ+IgorCisjOiBidWlsdGluL2xvZy5jOjExNTEgYnVpbHRpbi9sb2cuYzoxMTU0Cittc2dpZCAiYm91bmRhcnkiCittc2dzdHIgInJhbmggZ2nhu5tpIgorCisjOiBidWlsdGluL2xvZy5jOjExNTIKK21zZ2lkICJhdHRhY2ggdGhlIHBhdGNoIgorbXNnc3RyICLEkcOtbmgga8OobSBtaeG6v25nIHbDoSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTU1Cittc2dpZCAiaW5saW5lIHRoZSBwYXRjaCIKK21zZ3N0ciAiZMO5bmcgbWnhur9uZyB2w6EgbMOgbSBu4buZaSBkdW5nIgorCisjOiBidWlsdGluL2xvZy5jOjExNTkKK21zZ2lkICJlbmFibGUgbWVzc2FnZSB0aHJlYWRpbmcsIHN0eWxlczogc2hhbGxvdywgZGVlcCIKK21zZ3N0ciAiY2hvIHBow6lwIGx14buTbmcgbOG7nWkgbmjhuq9uLCBraeG7g3U6IOKAnHNoYWxsb3figJ0sIOKAnGRlZXDigJ0iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE2MQorbXNnaWQgInNpZ25hdHVyZSIKK21zZ3N0ciAiY2jhu68ga8O9IgorCisjOiBidWlsdGluL2xvZy5jOjExNjIKK21zZ2lkICJhZGQgYSBzaWduYXR1cmUiCittc2dzdHIgInRow6ptIGNo4buvIGvDvSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTY0Cittc2dpZCAiZG9uJ3QgcHJpbnQgdGhlIHBhdGNoIGZpbGVuYW1lcyIKK21zZ3N0ciAia2jDtG5nIGhp4buDbiB0aOG7iyBjw6FjIHTDqm4gdOG6rXAgdGluIGPhu6dhIG1p4bq/bmcgdsOhIgorCisjOiBidWlsdGluL2xvZy5jOjEyNDgKIG1zZ2lkICItbiBhbmQgLWsgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4iCiBtc2dzdHIgIi1uIHbDoCAgLWsgbG/huqFpIHThu6sgbOG6q24gbmhhdS4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIwMAorIzogYnVpbHRpbi9sb2cuYzoxMjUwCiBtc2dpZCAiLS1zdWJqZWN0LXByZWZpeCBhbmQgLWsgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4iCiBtc2dzdHIgIi0tc3ViamVjdC1wcmVmaXggdsOgIC1rIHh1bmcga2jhuq9jIG5oYXUuIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMDgKKyM6IGJ1aWx0aW4vbG9nLmM6MTI1OAogbXNnaWQgIi0tbmFtZS1vbmx5IGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIi0tbmFtZS1vbmx5IGtow7RuZyBo4bujcCBsw70iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIxMAorIzogYnVpbHRpbi9sb2cuYzoxMjYwCiBtc2dpZCAiLS1uYW1lLXN0YXR1cyBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICItLW5hbWUtc3RhdHVzIGtow7RuZyBo4bujcCBsw70iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIxMgorIzogYnVpbHRpbi9sb2cuYzoxMjYyCiBtc2dpZCAiLS1jaGVjayBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICItLWNoZWNrIGtow7RuZyBo4bujcCBsw70iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIzNQorIzogYnVpbHRpbi9sb2cuYzoxMjg1CiBtc2dpZCAic3RhbmRhcmQgb3V0cHV0LCBvciBkaXJlY3RvcnksIHdoaWNoIG9uZT8iCiBtc2dzdHIgIsSR4bqndSByYSBjaHXhuqluLCBoYXkgdGjGsCBt4bulYywgY2jhu41uIGPDoWkgbsOgbz8iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIzNworIzogYnVpbHRpbi9sb2cuYzoxMjg3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5ICclcyciCi1tc2dzdHIgIktow7RuZyB0aOG7gyB04bqhbyB0aMawIG3hu6VjICclcyciCittc2dzdHIgIktow7RuZyB0aOG7gyB04bqhbyB0aMawIG3hu6VjIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2xvZy5jOjEzOTAKKyM6IGJ1aWx0aW4vbG9nLmM6MTQzNQogbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgb3V0cHV0IGZpbGVzIgogbXNnc3RyICJH4bq3cCBs4buXaSBraGkgdOG6oW8gY8OhYyB04bqtcCB0aW4ga+G6v3QgeHXhuqV0IgogCi0jOiBidWlsdGluL2xvZy5jOjE0OTQKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiQ291bGQgbm90IGZpbmQgYSB0cmFja2VkIHJlbW90ZSBicmFuY2gsIHBsZWFzZSBzcGVjaWZ5IDx1cHN0cmVhbT4gbWFudWFsbHkuXG4iCi1tc2dzdHIgIktow7RuZyB0w6xtIHRo4bqleSBuaMOhbmggbeG6oW5nIGLhu4sgdGhlbyB24bq/dCwgaMOjeSBjaOG7iSDEkeG7i25oIDxkw7JuZy1uZ8aw4bujYz4gbeG7mXQgY8OhY2ggdGjhu6cgY8O0bmcuXG4iCisjOiBidWlsdGluL2xvZy5jOjE0ODQKK21zZ2lkICJnaXQgY2hlcnJ5IFstdl0gWzx1cHN0cmVhbT4gWzxoZWFkPiBbPGxpbWl0Pl1dXSIKK21zZ3N0ciAiZ2l0IGNoZXJyeSBbLXZdIFs8dGjGsOG7o25nLW5ndeG7k24+IFs8aGVhZD4gWzxnaeG7m2ktaOG6oW4+XV1dIgogCi0jOiBidWlsdGluL2xvZy5jOjE1MTAKLSM6IGJ1aWx0aW4vbG9nLmM6MTUxMgotIzogYnVpbHRpbi9sb2cuYzoxNTI0CisjOiBidWlsdGluL2xvZy5jOjE1MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkIG5vdCBmaW5kIGEgdHJhY2tlZCByZW1vdGUgYnJhbmNoLCBwbGVhc2Ugc3BlY2lmeSA8dXBzdHJlYW0+IG1hbnVhbGx5LlxuIgorbXNnc3RyICIiCisiS2jDtG5nIHTDrG0gdGjhuqV5IG5ow6FuaCBt4bqhbmcgYuG7iyB0aGVvIHbhur90LCBow6N5IGNo4buJIMSR4buLbmggPHRoxrDhu6NuZy1uZ3Xhu5NuPiBt4buZdCBjw6FjaCAiCisidGjhu6cgY8O0bmcuXG4iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTU1MiBidWlsdGluL2xvZy5jOjE1NTQgYnVpbHRpbi9sb2cuYzoxNTY2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gY29tbWl0ICVzIgogbXNnc3RyICJLaMO0bmcgaGnhu4N1IGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgJXMiCiAKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0MDIKK21zZ2lkICJnaXQgbHMtZmlsZXMgW29wdGlvbnNdIFs8ZmlsZT4uLi5dIgorbXNnc3RyICJnaXQgbHMtZmlsZXMgW2PDoWMtdMO5eS1jaOG7jW5dIFs8dOG6rXAtdGluPi4uLl0iCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NTkKK21zZ2lkICJpZGVudGlmeSB0aGUgZmlsZSBzdGF0dXMgd2l0aCB0YWdzIgorbXNnc3RyICJuaOG6rW4gZOG6oW5nIGPDoWMgdHLhuqFuZyB0aMOhaSB04bqtcCB0aW4gduG7m2kgdGjhursiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjEKK21zZ2lkICJ1c2UgbG93ZXJjYXNlIGxldHRlcnMgZm9yICdhc3N1bWUgdW5jaGFuZ2VkJyBmaWxlcyIKK21zZ3N0ciAiIgorImTDuW5nIGNo4buvIGPDoWkgdmnhur90IHRoxrDhu51uZyBjaG8gY8OhYyB04bqtcCB0aW4g4oCcYXNzdW1lIHVuY2hhbmdlZOKAnSAoZ2nhuqMgxJHhu4tuaCBraMO0bmcgIgorInRoYXkgxJHhu5VpKSIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2MworbXNnaWQgInNob3cgY2FjaGVkIGZpbGVzIGluIHRoZSBvdXRwdXQgKGRlZmF1bHQpIgorbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyB04bqtcCB0aW4gxJHGsOG7o2Mgbmjhu5sgdOG6oW0gdsOgbyDEkeG6p3UgcmEgKG3hurdjIMSR4buLbmgpIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDY1Cittc2dpZCAic2hvdyBkZWxldGVkIGZpbGVzIGluIHRoZSBvdXRwdXQiCittc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIHThuq1wIHRpbiDEkcOjIHjDs2EgdHJvbmcga+G6v3QgeHXhuqV0IgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDY3Cittc2dpZCAic2hvdyBtb2RpZmllZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgorbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyB04bqtcCB0aW4gxJHDoyBi4buLIHPhu61hIMSR4buVaSByYSBr4bq/dCB4deG6pXQiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjkKK21zZ2lkICJzaG93IG90aGVyIGZpbGVzIGluIHRoZSBvdXRwdXQiCittc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIHThuq1wIHRpbiBraMOhYyB0cm9uZyBr4bq/dCB4deG6pXQiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzEKK21zZ2lkICJzaG93IGlnbm9yZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGPDoWMgdOG6rXAgdGluIGLhu4sgYuG7jyBxdWEgdHJvbmcga+G6v3QgeHXhuqV0IgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc0Cittc2dpZCAic2hvdyBzdGFnZWQgY29udGVudHMnIG9iamVjdCBuYW1lIGluIHRoZSBvdXRwdXQiCittc2dzdHIgImhp4buDbiB0aOG7iyB0w6puIMSR4buRaSB0xrDhu6NuZyBj4bunYSBu4buZaSBkdW5nIMSRxrDhu6NjIGzGsHUgdHLhuqFuZyB0aMOhaSDhu58ga+G6v3QgeHXhuqV0IgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc2Cittc2dpZCAic2hvdyBmaWxlcyBvbiB0aGUgZmlsZXN5c3RlbSB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZCIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGPDoWMgdOG6rXAgdGluIHRyw6puIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gbcOgIG7DsyBj4bqnbiDEkcaw4bujYyBn4buhIGLhu48iCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzgKK21zZ2lkICJzaG93ICdvdGhlcicgZGlyZWN0b3JpZXMnIG5hbWUgb25seSIKK21zZ3N0ciAiY2jhu4kgaGnhu4NuIHRo4buLIHTDqm4gY+G7p2EgY8OhYyB0aMawIG3hu6VjIOKAnGtow6Fj4oCdIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDgxCittc2dpZCAiZG9uJ3Qgc2hvdyBlbXB0eSBkaXJlY3RvcmllcyIKK21zZ3N0ciAia2jDtG5nIGhp4buDbiB0aOG7iyB0aMawIG3hu6VjIHLhu5duZyIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4NAorbXNnaWQgInNob3cgdW5tZXJnZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGPDoWMgdOG6rXAgdGluIGNoxrBhIGjDsmEgdHLhu5luIHRyb25nIGvhur90IHh14bqldCIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4NgorbXNnaWQgInNob3cgcmVzb2x2ZS11bmRvIGluZm9ybWF0aW9uIgorbXNnc3RyICJoaeG7g24gdGjhu4sgdGjDtG5nIHRpbiByZXNvbHZlLXVuZG8iCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODgKK21zZ2lkICJza2lwIGZpbGVzIG1hdGNoaW5nIHBhdHRlcm4iCittc2dzdHIgImLhu48gcXVhIG5o4buvbmcgdOG6rXAgdGluIGto4bubcCB24bubaSBt4buZdCBt4bqrdSIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MQorbXNnaWQgImV4Y2x1ZGUgcGF0dGVybnMgYXJlIHJlYWQgZnJvbSA8ZmlsZT4iCittc2dzdHIgIm3huqt1IGxv4bqhaSB0cuG7qyDEkcaw4bujYyDEkeG7jWMgdOG7qyA8dOG6rXAgdGluPiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NAorbXNnaWQgInJlYWQgYWRkaXRpb25hbCBwZXItZGlyZWN0b3J5IGV4Y2x1ZGUgcGF0dGVybnMgaW4gPGZpbGU+IgorbXNnc3RyICLEkeG7jWMgdGjDqm0gY8OhYyBt4bqrdSBuZ2/huqFpIHRy4burIG3hu5dpIHRoxrAgbeG7pWMgdHJvbmcgPHThuq1wIHRpbj4iCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTYKK21zZ2lkICJhZGQgdGhlIHN0YW5kYXJkIGdpdCBleGNsdXNpb25zIgorbXNnc3RyICJ0aMOqbSBsb+G6oWkgdHLhu6sgdGnDqnUgY2h14bqpbiBraeG7g3UgZ2l0IgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDk5Cittc2dpZCAibWFrZSB0aGUgb3V0cHV0IHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHRvcCBkaXJlY3RvcnkiCittc2dzdHIgImzDoG0gY2hvIGvhur90IHh14bqldCBsacOqbiBxdWFuIMSR4bq/biB0aMawIG3hu6VjIOG7nyBt4bupYyBjYW8gbmjhuqV0IChn4buRYykgY+G7p2EgZOG7sSDDoW4iCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDIKK21zZ2lkICJpZiBhbnkgPGZpbGU+IGlzIG5vdCBpbiB0aGUgaW5kZXgsIHRyZWF0IHRoaXMgYXMgYW4gZXJyb3IiCittc2dzdHIgIm7hur91IDx04bqtcCB0aW4+IGLhuqV0IGvhu7Mga2jDtG5nIOG7nyB0cm9uZyBi4bqjbmcgbeG7pWMgbOG7pWMsIHjhu60gbMO9IG7DsyBuaMawIG3hu5l0IGzhu5dpIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTAzCittc2dpZCAidHJlZS1pc2giCittc2dzdHIgInRyZWUtaXNoIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTA0Cittc2dpZCAicHJldGVuZCB0aGF0IHBhdGhzIHJlbW92ZWQgc2luY2UgPHRyZWUtaXNoPiBhcmUgc3RpbGwgcHJlc2VudCIKK21zZ3N0ciAiIgorImdp4bqjIMSR4buLbmggcuG6sW5nIGPDoWMgxJHGsOG7nW5nIGThuqtuIMSRw6MgYuG7iyBn4buhIGLhu48ga+G7gyB04burIDx0cmVlLWlzaD4gbmF5IHbhuqtuIGhp4buHbiBkaeG7h24iCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDYKK21zZ2lkICJzaG93IGRlYnVnZ2luZyBkYXRhIgorbXNnc3RyICJoaeG7g24gdGjhu4sgZOG7ryBsaeG7h3UgZ+G7oSBs4buXaSIKKworIzogYnVpbHRpbi9scy10cmVlLmM6MjcKK21zZ2lkICJnaXQgbHMtdHJlZSBbPG9wdGlvbnM+XSA8dHJlZS1pc2g+IFs8cGF0aD4uLi5dIgorbXNnc3RyICJnaXQgbHMtdHJlZSBbPGPDoWMtdMO5eS1jaOG7jW4+XSA8dHJlZS1pc2g+IFs8xJHGsOG7nW5nLWThuqtuPi4uLl0iCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjEyNQorbXNnaWQgIm9ubHkgc2hvdyB0cmVlcyIKK21zZ3N0ciAiY2jhu4kgaGnhu4NuIHRo4buLIGPDoWMgdHJlZSIKKworIzogYnVpbHRpbi9scy10cmVlLmM6MTI3Cittc2dpZCAicmVjdXJzZSBpbnRvIHN1YnRyZWVzIgorbXNnc3RyICLEkeG7hyBxdXkgdsOgbyBjw6FjIHRoxrAgbeG7pWMgY29uIgorCisjOiBidWlsdGluL2xzLXRyZWUuYzoxMjkKK21zZ2lkICJzaG93IHRyZWVzIHdoZW4gcmVjdXJzaW5nIgorbXNnc3RyICJoaeG7g24gdGjhu4sgY8OieSBraGkgxJHhu4cgcXV5IgorCisjOiBidWlsdGluL2xzLXRyZWUuYzoxMzIKK21zZ2lkICJ0ZXJtaW5hdGUgZW50cmllcyB3aXRoIE5VTCBieXRlIgorbXNnc3RyICJjaOG6pW0gZOG7qXQgbeG7pWMgdGluIHbhu5tpIGJ5dGUgTlVMIgorCisjOiBidWlsdGluL2xzLXRyZWUuYzoxMzMKK21zZ2lkICJpbmNsdWRlIG9iamVjdCBzaXplIgorbXNnc3RyICJn4buTbSBj4bqjIGvDrWNoIHRoxrDhu5tjIMSR4buRaSB0xrDhu6NuZyIKKworIzogYnVpbHRpbi9scy10cmVlLmM6MTM1IGJ1aWx0aW4vbHMtdHJlZS5jOjEzNworbXNnaWQgImxpc3Qgb25seSBmaWxlbmFtZXMiCittc2dzdHIgImNo4buJIGxp4buHdCBrw6ogdMOqbiB04bqtcCB0aW4iCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjE0MAorbXNnaWQgInVzZSBmdWxsIHBhdGggbmFtZXMiCittc2dzdHIgImTDuW5nIHTDqm4gxJHGsOG7nW5nIGThuqtuIMSR4bqneSDEkeG7pyIKKworIzogYnVpbHRpbi9scy10cmVlLmM6MTQyCittc2dpZCAibGlzdCBlbnRpcmUgdHJlZTsgbm90IGp1c3QgY3VycmVudCBkaXJlY3RvcnkgKGltcGxpZXMgLS1mdWxsLW5hbWUpIgorbXNnc3RyICJsaeG7h3Qga8OqIGPDonkgbeG7pWMgdGluOyBraMO0bmcgY2jhu4kgdGjGsCBt4bulYyBoaeG7h24gaMOgbmggKG5n4bulIMO9IC0tZnVsbC1uYW1lKSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjQzCittc2dpZCAiZ2l0IG1lcmdlIFtvcHRpb25zXSBbPGNvbW1pdD4uLi5dIgorbXNnc3RyICJnaXQgbWVyZ2UgW2PDoWMtdMO5eS1jaOG7jW5dIFs8Y29tbWl0Pi4uLl0iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo0NAorbXNnaWQgImdpdCBtZXJnZSBbb3B0aW9uc10gPG1zZz4gSEVBRCA8Y29tbWl0PiIKK21zZ3N0ciAiZ2l0IG1lcmdlIFtjw6FjLXTDuXktY2jhu41uXSA8dGluLW5o4bqvbj4gSEVBRCA8Y29tbWl0PiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjQ1Cittc2dpZCAiZ2l0IG1lcmdlIC0tYWJvcnQiCittc2dzdHIgImdpdCBtZXJnZSAtLWFib3J0IgorCiAjOiBidWlsdGluL21lcmdlLmM6OTAKIG1zZ2lkICJzd2l0Y2ggYG0nIHJlcXVpcmVzIGEgdmFsdWUiCi1tc2dzdHIgInN3aXRjaCBgbScgecOqdSBj4bqndSBt4buZdCBnacOhIHRy4buLIgorbXNnc3RyICJzd2l0Y2gg4oCcbeKAnSB5w6p1IGPhuqd1IG3hu5l0IGdpw6EgdHLhu4siCiAKICM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZpbmQgbWVyZ2Ugc3RyYXRlZ3kgJyVzJy5cbiIKLW1zZ3N0ciAiS2jDtG5nIHTDrG0gdGjhuqV5IGNoaeG6v24gbMaw4bujYyBow7JhIHRy4buZbiAnJXMnLlxuIgorbXNnc3RyICJLaMO0bmcgdMOsbSB0aOG6pXkgY2hp4bq/biBsxrDhu6NjIGjDsmEgdHLhu5luIOKAnCVz4oCdLlxuIgogCiAjOiBidWlsdGluL21lcmdlLmM6MTI4CiAjLCBjLWZvcm1hdApAQCAtMzQzMiwxNTQgKzYyNzMsMjE3IEBACiBtc2dpZCAiQXZhaWxhYmxlIGN1c3RvbSBzdHJhdGVnaWVzIGFyZToiCiBtc2dzdHIgIkPDoWMgY2hp4bq/biBsxrDhu6NjIHTDuXkgY2jhu4luaCBz4bq1biBzw6BuZyBsw6A6IgogCi0jOiBidWlsdGluL21lcmdlLmM6MjQwCisjOiBidWlsdGluL21lcmdlLmM6MTgzCittc2dpZCAiZG8gbm90IHNob3cgYSBkaWZmc3RhdCBhdCB0aGUgZW5kIG9mIHRoZSBtZXJnZSIKK21zZ3N0ciAia2jDtG5nIGhp4buDbiB0aOG7iyB0aOG7kW5nIGvDqiBraMOhYyBiaeG7h3QgdOG6oWkgY3Xhu5FpIGPhu6dhIGzhuqduIGjDsmEgdHLhu5luIgorCisjOiBidWlsdGluL21lcmdlLmM6MTg2Cittc2dpZCAic2hvdyBhIGRpZmZzdGF0IGF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlIgorbXNnc3RyICJoaeG7g24gdGjhu4sgdGjhu5FuZyBrw6oga2jDoWMgYmnhu4d0IHThuqFpIGN14buRaSBj4bunYSBow7JhIHRy4buZbiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjE4NworbXNnaWQgIihzeW5vbnltIHRvIC0tc3RhdCkiCittc2dzdHIgIijEkeG7k25nIG5naMSpYSB24bubaSAtLXN0YXQpIgorCisjOiBidWlsdGluL21lcmdlLmM6MTg5Cittc2dpZCAiYWRkIChhdCBtb3N0IDxuPikgZW50cmllcyBmcm9tIHNob3J0bG9nIHRvIG1lcmdlIGNvbW1pdCBtZXNzYWdlIgorbXNnc3RyICJ0aMOqbSAow610IG5o4bqldCA8bj4pIG3hu6VjIHThu6sgc2hvcnRsb2cgY2hvIGdoaSBjaMO6IGNodXnhu4NuIGdpYW8gaMOyYSB0cuG7mW4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxOTIKK21zZ2lkICJjcmVhdGUgYSBzaW5nbGUgY29tbWl0IGluc3RlYWQgb2YgZG9pbmcgYSBtZXJnZSIKK21zZ3N0ciAidOG6oW8gbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSDEkcawb24gdGhheSB2w6wgdGjhu7FjIGhp4buHbiB2aeG7h2MgaMOyYSB0cuG7mW4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxOTQKK21zZ2lkICJwZXJmb3JtIGEgY29tbWl0IGlmIHRoZSBtZXJnZSBzdWNjZWVkcyAoZGVmYXVsdCkiCittc2dzdHIgInRo4buxYyBoaeG7h24gY2h1eeG7g24gZ2lhbyBu4bq/dSBow7JhIHRy4buZbiB0aMOgbmggY8O0bmcgKG3hurdjIMSR4buLbmgpIgorCisjOiBidWlsdGluL21lcmdlLmM6MTk2Cittc2dpZCAiZWRpdCBtZXNzYWdlIGJlZm9yZSBjb21taXR0aW5nIgorbXNnc3RyICJz4butYSBjaMO6IHRow61jaCB0csaw4bubYyBraGkgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjE5OAorbXNnaWQgImFsbG93IGZhc3QtZm9yd2FyZCAoZGVmYXVsdCkiCittc2dzdHIgImNobyBwaMOpcCBmYXN0LWZvcndhcmQgKG3hurdjIMSR4buLbmgpIgorCisjOiBidWlsdGluL21lcmdlLmM6MjAwCittc2dpZCAiYWJvcnQgaWYgZmFzdC1mb3J3YXJkIGlzIG5vdCBwb3NzaWJsZSIKK21zZ3N0ciAiYuG7jyBxdWEgbuG6v3UgZmFzdC1mb3J3YXJkIGtow7RuZyB0aOG7gyDEkcaw4bujYyIKKworIzogYnVpbHRpbi9tZXJnZS5jOjIwMworbXNnaWQgIlZlcmlmeSB0aGF0IHRoZSBuYW1lZCBjb21taXQgaGFzIGEgdmFsaWQgR1BHIHNpZ25hdHVyZSIKK21zZ3N0ciAiVGjhuqltIHRyYSB4ZW0gbOG6p24gY2h1eeG7g24gZ2lhbyBjw7MgdMOqbiDEkcOzIGPDsyBjaOG7ryBrw70gR1BHIGjhu6NwIGzhu4cgaGF5IGtow7RuZyIKKworIzogYnVpbHRpbi9tZXJnZS5jOjIwNCBidWlsdGluL25vdGVzLmM6ODY2IGJ1aWx0aW4vcmV2ZXJ0LmM6MTEyCittc2dpZCAic3RyYXRlZ3kiCittc2dzdHIgImNoaeG6v24gbMaw4bujYyIKKworIzogYnVpbHRpbi9tZXJnZS5jOjIwNQorbXNnaWQgIm1lcmdlIHN0cmF0ZWd5IHRvIHVzZSIKK21zZ3N0ciAiY2hp4bq/biBsxrDhu6NjIGjDsmEgdHLhu5luIHPhur0gZMO5bmciCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDYKK21zZ2lkICJvcHRpb249dmFsdWUiCittc2dzdHIgInTDuXlfY2jhu41uPWdpw6FfdHLhu4siCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDcKK21zZ2lkICJvcHRpb24gZm9yIHNlbGVjdGVkIG1lcmdlIHN0cmF0ZWd5IgorbXNnc3RyICJ0w7l5IGNo4buNbiBjaG8gY2hp4bq/biBsxrDhu6NjIGjDsmEgdHLhu5luIMSRw6MgY2jhu41uIgorCisjOiBidWlsdGluL21lcmdlLmM6MjA5Cittc2dpZCAibWVyZ2UgY29tbWl0IG1lc3NhZ2UgKGZvciBhIG5vbi1mYXN0LWZvcndhcmQgbWVyZ2UpIgorbXNnc3RyICIiCisiaMOyYSB0cuG7mW4gZ2hpIGNow7ogY+G7p2EgbOG6p24gY2h1eeG7g24gZ2lhbyAoZMOgbmggY2hvIGjDsmEgdHLhu5luIG5vbi1mYXN0LWZvcndhcmQpIgorCisjOiBidWlsdGluL21lcmdlLmM6MjEzCittc2dpZCAiYWJvcnQgdGhlIGN1cnJlbnQgaW4tcHJvZ3Jlc3MgbWVyZ2UiCittc2dzdHIgImLDo2kgYuG7jyBxdcOhIHRyw6xuaCBow7JhIHRy4buZbiBoaeG7h24gdOG6oWkgxJFhbmcgdGjhu7FjIGhp4buHbiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjI0MgogbXNnaWQgImNvdWxkIG5vdCBydW4gc3Rhc2guIgogbXNnc3RyICJraMO0bmcgdGjhu4MgY2jhuqF5IHN0YXNoLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI0NQorIzogYnVpbHRpbi9tZXJnZS5jOjI0NwogbXNnaWQgInN0YXNoIGZhaWxlZCIKIG1zZ3N0ciAic3Rhc2ggZ+G6t3AgbOG7l2kiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNTAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90IGEgdmFsaWQgb2JqZWN0OiAlcyIKIG1zZ3N0ciAia2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgxJHhu5FpIHTGsOG7o25nIGjhu6NwIGzhu4c6ICVzIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjY5Ci0jOiBidWlsdGluL21lcmdlLmM6Mjg2CisjOiBidWlsdGluL21lcmdlLmM6MjcxIGJ1aWx0aW4vbWVyZ2UuYzoyODgKIG1zZ2lkICJyZWFkLXRyZWUgZmFpbGVkIgogbXNnc3RyICJyZWFkLXRyZWUgZ+G6t3AgbOG7l2kiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozMTYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozMTgKIG1zZ2lkICIgKG5vdGhpbmcgdG8gc3F1YXNoKSIKLW1zZ3N0ciAiIChraMO0bmcgY8OzIGdow6wgxJHhu4Mgc3F1YXNoKSIKK21zZ3N0ciAiIChraMO0bmcgY8OzIGfDrCDEkeG7gyBzcXVhc2gpIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzI5CisjOiBidWlsdGluL21lcmdlLmM6MzMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlNxdWFzaCBjb21taXQgLS0gbm90IHVwZGF0aW5nIEhFQURcbiIKIG1zZ3N0ciAiU3F1YXNoIGNvbW1pdCAtLSBraMO0bmcgY+G6rXAgbmjhuq10IEhFQURcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM2MQorIzogYnVpbHRpbi9tZXJnZS5jOjM2MwogbXNnaWQgIldyaXRpbmcgU1FVQVNIX01TRyIKIG1zZ3N0ciAixJBhbmcgZ2hpIFNRVUFTSF9NU0ciCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozNjMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozNjUKIG1zZ2lkICJGaW5pc2hpbmcgU1FVQVNIX01TRyIKIG1zZ3N0ciAiSG/DoG4gdGjDoG5oIFNRVUFTSF9NU0ciCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozODYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gbWVyZ2UgbWVzc2FnZSAtLSBub3QgdXBkYXRpbmcgSEVBRFxuIgogbXNnc3RyICJLaMO0bmcgdGjDtG5nIMSRaeG7h3AgaMOyYSB0cuG7mW4gLS0ga2jDtG5nIGPhuq1wIG5o4bqtdCBIRUFEXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo0MzcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo0MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBkb2VzIG5vdCBwb2ludCB0byBhIGNvbW1pdCIKLW1zZ3N0ciAiJyVzJyBraMO0bmcgY2jhu4kgxJHhur9uIG3hu5l0IGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbsOgbyBj4bqjIgorbXNnc3RyICLigJwlc+KAnSBraMO0bmcgY2jhu4kgxJHhur9uIG3hu5l0IGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbsOgbyBj4bqjIgogCi0jOiBidWlsdGluL21lcmdlLmM6NTM2CisjOiBidWlsdGluL21lcmdlLmM6NTUwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkJhZCBicmFuY2guJXMubWVyZ2VvcHRpb25zIHN0cmluZzogJXMiCiBtc2dzdHIgIkNodeG7l2kgYnJhbmNoLiVzLm1lcmdlb3B0aW9ucyBzYWk6ICVzIgogCi0jOiBidWlsdGluL21lcmdlLmM6NjI5CisjOiBidWlsdGluL21lcmdlLmM6NjQzCiBtc2dpZCAiZ2l0IHdyaXRlLXRyZWUgZmFpbGVkIHRvIHdyaXRlIGEgdHJlZSIKIG1zZ3N0ciAibOG7h25oIGdpdCB3cml0ZS10cmVlIGfhurdwIGzhu5dpIGtoaSBnaGkgbeG7mXQgY8OieSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjY3OQotbXNnaWQgImZhaWxlZCB0byByZWFkIHRoZSBjYWNoZSIKLW1zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIMSR4buNYyBi4buZIG5o4bubIHThuqFtIgotCi0jOiBidWlsdGluL21lcmdlLmM6Njk3Ci1tc2dpZCAiVW5hYmxlIHRvIHdyaXRlIGluZGV4LiIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIGdoaSBi4bqjbmcgbeG7pWMgbOG7pWMiCi0KLSM6IGJ1aWx0aW4vbWVyZ2UuYzo3MTAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo2NzEKIG1zZ2lkICJOb3QgaGFuZGxpbmcgYW55dGhpbmcgb3RoZXIgdGhhbiB0d28gaGVhZHMgbWVyZ2UuIgogbXNnc3RyICJLaMO0bmcgY+G6p20gbuG6r20gZ8OsIG5nb8OgaSBoYWkgaGVhZCBow7JhIHRy4buZbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjcyNAorIzogYnVpbHRpbi9tZXJnZS5jOjY4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIG9wdGlvbiBmb3IgbWVyZ2UtcmVjdXJzaXZlOiAtWCVzIgogbXNnc3RyICJLaMO0bmcgaGnhu4N1IHTDuXkgY2jhu41uIGNobyBtZXJnZS1yZWN1cnNpdmU6IC1YJXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo3MzgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo2OTkKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlICVzIgotbXNnc3RyICJraMO0bmcgZ2hpIMSRxrDhu6NjICVzIgorbXNnc3RyICJraMO0bmcgdGjhu4MgZ2hpICVzIgogCi0jOiBidWlsdGluL21lcmdlLmM6ODc3CisjOiBidWlsdGluL21lcmdlLmM6Nzg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCByZWFkIGZyb20gJyVzJyIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIMSR4buNYyB04burICclcyciCittc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7jWMgdOG7qyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjg4NgorIzogYnVpbHRpbi9tZXJnZS5jOjc5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgY29tbWl0dGluZyBtZXJnZTsgdXNlICdnaXQgY29tbWl0JyB0byBjb21wbGV0ZSB0aGUgbWVyZ2UuXG4iCi1tc2dzdHIgIlbhuqtuIGNoxrBhIGjDsmEgdHLhu5luIGPDoWMgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KTsgc+G7rSBk4bulbmcgbOG7h25oICdnaXQgY29tbWl0JyDEkeG7gyBob8OgbiB04bqldCB2aeG7h2MgaMOyYSB0cuG7mW4uXG4iCittc2dzdHIgIiIKKyJW4bqrbiBjaMawYSBow7JhIHRy4buZbiBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCk7IHPhu60gZOG7pW5nIGzhu4duaCDigJxnaXQgY29tbWl04oCdIMSR4buDICIKKyJob8OgbiB04bqldCB2aeG7h2MgaMOyYSB0cuG7mW4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4OTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MDMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBsZWFzZSBlbnRlciBhIGNvbW1pdCBtZXNzYWdlIHRvIGV4cGxhaW4gd2h5IHRoaXMgbWVyZ2UgaXMgbmVjZXNzYXJ5LFxuIgogImVzcGVjaWFsbHkgaWYgaXQgbWVyZ2VzIGFuIHVwZGF0ZWQgdXBzdHJlYW0gaW50byBhIHRvcGljIGJyYW5jaC5cbiIKICJcbiIKLSJMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0c1xuIgorIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0c1xuIgogInRoZSBjb21taXQuXG4iCiBtc2dzdHIgIiIKLSJIw6N5IG5o4bqtcCB2w6BvIGPDoWMgdGjDtG5nIHRpbiDEkeG7gyBnaeG6o2kgdGjDrWNoIHThuqFpIHNhbyBz4buxIGjDsmEgdHLhu5luIG7DoHkgbMOgIGPhuqduIHRoaeG6v3QsXG4iCi0ixJHhurdjIGJp4buHdCBsw6Aga2hpIG7DsyBow7JhIHRy4buZbiBkw7JuZyBuZ8aw4bujYyDEkcOjIGPhuq1wIG5o4bqtdCB2w6BvIHRyb25nIG3hu5l0IG5ow6FuaCB0b3BpYy5cbiIKKyJIw6N5IG5o4bqtcCB2w6BvIGPDoWMgdGjDtG5nIHRpbiDEkeG7gyBnaeG6o2kgdGjDrWNoIHThuqFpIHNhbyBz4buxIGjDsmEgdHLhu5luIG7DoHkgbMOgIGPhuqduICIKKyJ0aGnhur90LFxuIgorIsSR4bq3YyBiaeG7h3QgbMOgIGtoaSBuw7MgaMOyYSB0cuG7mW4gbmfGsOG7o2MgZMOybmcgxJHDoyBj4bqtcCBuaOG6rXQgdsOgbyB0cm9uZyBt4buZdCBuaMOhbmggIgorInRvcGljLlxuIgogIlxuIgotIk5o4buvbmcgZMOybmcgxJHGsOG7o2MgYuG6r3QgxJHhuqd1IGLhurFuZyAnIycgc+G6vSDEkcaw4bujYyBi4buPIHF1YSwgdsOgIHBo4bqnbiBjaMO6IHRow61jaCBuw6B5IG7hur91IHLhu5duZ1xuIgotInPhur0gbMOgbSBo4buneSBi4buPIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkuXG4iCisiTmjhu69uZyBkw7JuZyDEkcaw4bujYyBi4bqvdCDEkeG6p3UgYuG6sW5nIOKAnCVj4oCdIHPhur0gxJHGsOG7o2MgYuG7jyBxdWEsIHbDoCBwaOG6p24gY2jDuiB0aMOtY2ggbsOgeSBu4bq/dSAiCisicuG7l25nXG4iCisic+G6vSBo4buneSBi4buPIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkuXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5MTYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MjcKIG1zZ2lkICJFbXB0eSBjb21taXQgbWVzc2FnZS4iCiBtc2dzdHIgIkNow7ogdGjDrWNoIGPhu6dhIGzhuqduIGNvbW1pdCAoY2h1eeG7g24gZ2lhbykgYuG7iyB0cuG7kW5nIHLhu5duZy4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5MjgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiV29uZGVyZnVsLlxuIgogbXNnc3RyICJUaOG6p24ga+G7sy5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjk5MworIzogYnVpbHRpbi9tZXJnZS5jOjkwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJBdXRvbWF0aWMgbWVyZ2UgZmFpbGVkOyBmaXggY29uZmxpY3RzIGFuZCB0aGVuIGNvbW1pdCB0aGUgcmVzdWx0LlxuIgotbXNnc3RyICJWaeG7h2MgdOG7sSDEkeG7mW5nIGjDsmEgdHLhu5luIGfhurdwIGzhu5dpOyBow6N5IHPhu61hIGPDoWMgeHVuZyDEkeG7mXQgc2F1IMSRw7MgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBr4bq/dCBxdeG6oy5cbiIKK21zZ3N0ciAiIgorIlZp4buHYyB04buxIMSR4buZbmcgaMOyYSB0cuG7mW4gZ+G6t3AgbOG7l2k7IGjDo3kgc+G7rWEgY8OhYyB4dW5nIMSR4buZdCBzYXUgxJHDsyBjaHV54buDbiBnaWFvICIKKyIoY29tbWl0KSBr4bq/dCBxdeG6oy5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEwMDkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBpcyBub3QgYSBjb21taXQiCiBtc2dzdHIgIiVzIGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IGzhuqduIGNvbW1pdCAoY2h1eeG7g24gZ2lhbykiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDUwCisjOiBidWlsdGluL21lcmdlLmM6OTYxCiBtc2dpZCAiTm8gY3VycmVudCBicmFuY2guIgogbXNnc3RyICJraMO0bmcgcGjhuqNpIG5ow6FuaCBoaeG7h24gaMOgbmgiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDUyCisjOiBidWlsdGluL21lcmdlLmM6OTYzCiBtc2dpZCAiTm8gcmVtb3RlIGZvciB0aGUgY3VycmVudCBicmFuY2guIgogbXNnc3RyICJLaMO0bmcgY8OzIG3DoXkgY2jhu6cgY2hvIG5ow6FuaCBoaeG7h24gaMOgbmguIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTA1NAorIzogYnVpbHRpbi9tZXJnZS5jOjk2NQogbXNnaWQgIk5vIGRlZmF1bHQgdXBzdHJlYW0gZGVmaW5lZCBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLiIKLW1zZ3N0ciAiS2jDtG5nIGPDsyBkw7JuZyBuZ8aw4bujYyBt4bq3YyDEkeG7i25oIMSRxrDhu6NjIMSR4buLbmggbmdoxKlhIGNobyBuaMOhbmggaGnhu4duIGjDoG5oLiIKK21zZ3N0ciAiS2jDtG5nIGPDsyB0aMaw4bujbmcgbmd14buTbiBt4bq3YyDEkeG7i25oIMSRxrDhu6NjIMSR4buLbmggbmdoxKlhIGNobyBuaMOhbmggaGnhu4duIGjDoG5oLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEwNTkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gcmVtb3RlIHRyYWNraW5nIGJyYW5jaCBmb3IgJXMgZnJvbSAlcyIKIG1zZ3N0ciAiS2jDtG5nIG5ow6FuaCBt4bqhbmcgdGhlbyB24bq/dCBjaG8gJXMgdOG7qyAlcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExNDYKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzAzCisjOiBidWlsdGluL21lcmdlLmM6MTA1NyBidWlsdGluL21lcmdlLmM6MTIxNAogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyAtIG5vdCBzb21ldGhpbmcgd2UgY2FuIG1lcmdlIgogbXNnc3RyICIlcyAtIGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IHPhu5EgdGjhu6kgY2jDum5nIHTDtGkgY8OzIHRo4buDIGjDsmEgdHLhu5luIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIxNAorIzogYnVpbHRpbi9tZXJnZS5jOjExMjUKIG1zZ2lkICJUaGVyZSBpcyBubyBtZXJnZSB0byBhYm9ydCAoTUVSR0VfSEVBRCBtaXNzaW5nKS4iCi1tc2dzdHIgIuG7niDEkcOieSBraMO0bmcgY8OzIGzhuqduIGjDsmEgdHLhu5luIG7DoG8gxJHGsOG7o2MgaOG7p3kgYuG7jyBnaeG7r2EgY2jhu6tuZyBj4bqjIChraMO0bmcgdGjhuqV5IE1FUkdFX0hFQUQpLiIKK21zZ3N0ciAiIgorIuG7niDEkcOieSBraMO0bmcgY8OzIGzhuqduIGjDsmEgdHLhu5luIG7DoG8gxJHGsOG7o2MgaOG7p3kgYuG7jyBnaeG7r2EgY2jhu6tuZyBj4bqjICh0aGnhur91IE1FUkdFX0hFQUQpLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyMzAKLSM6IGdpdC1wdWxsLnNoOjMxCisjOiBidWlsdGluL21lcmdlLmM6MTE0MSBnaXQtcHVsbC5zaDozMQogbXNnaWQgIiIKICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgbWVyZ2UgKE1FUkdFX0hFQUQgZXhpc3RzKS5cbiIKICJQbGVhc2UsIGNvbW1pdCB5b3VyIGNoYW5nZXMgYmVmb3JlIHlvdSBjYW4gbWVyZ2UuIgpAQCAtMzU4NywxMiArNjQ5MSwxMSBAQAogIkLhuqFuIGNoxrBhIGvhur90IHRow7pjIHZp4buHYyBow7JhIHRy4buZbmcgKE1FUkdFX0hFQUQgduG6q24gdOG7k24gdOG6oWkpLlxuIgogIkjDo3kgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBjw6FjIHRoYXkgxJHhu5VpIHRyxrDhu5tjIGtoaSBi4bqhbiBjw7MgdGjhu4MgaMOyYSB0cuG7mW4uIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIzMwotIzogZ2l0LXB1bGwuc2g6MzQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQ0IGdpdC1wdWxsLnNoOjM0CiBtc2dpZCAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIG1lcmdlIChNRVJHRV9IRUFEIGV4aXN0cykuIgogbXNnc3RyICJC4bqhbiBjaMawYSBr4bq/dCB0aMO6YyB2aeG7h2MgaMOyYSB0cuG7mW5nIChNRVJHRV9IRUFEIHbhuqtuIHThu5NuIHThuqFpKS4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjM3CisjOiBidWlsdGluL21lcmdlLmM6MTE0OAogbXNnaWQgIiIKICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgY2hlcnJ5LXBpY2sgKENIRVJSWV9QSUNLX0hFQUQgZXhpc3RzKS5cbiIKICJQbGVhc2UsIGNvbW1pdCB5b3VyIGNoYW5nZXMgYmVmb3JlIHlvdSBjYW4gbWVyZ2UuIgpAQCAtMzYwMCw4OCArNjUwMywyMTcgQEAKICJC4bqhbiBjaMawYSBr4bq/dCB0aMO6YyB2aeG7h2MgY2hlcnJ5LXBpY2sgKENIRVJSWV9QSUNLX0hFQUQgduG6q24gdOG7k24gdOG6oWkpLlxuIgogIkjDo3kgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBjw6FjIHRoYXkgxJHhu5VpIHRyxrDhu5tjIGtoaSBi4bqhbiBjw7MgdGjhu4MgaMOyYSB0cuG7mW4uIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI0MAorIzogYnVpbHRpbi9tZXJnZS5jOjExNTEKIG1zZ2lkICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgY2hlcnJ5LXBpY2sgKENIRVJSWV9QSUNLX0hFQUQgZXhpc3RzKS4iCiBtc2dzdHIgIkLhuqFuIGNoxrBhIGvhur90IHRow7pjIHZp4buHYyBjaGVycnktcGljayAoQ0hFUlJZX1BJQ0tfSEVBRCB24bqrbiB04buTbiB04bqhaSkuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI0OQorIzogYnVpbHRpbi9tZXJnZS5jOjExNjAKIG1zZ2lkICJZb3UgY2Fubm90IGNvbWJpbmUgLS1zcXVhc2ggd2l0aCAtLW5vLWZmLiIKLW1zZ3N0ciAiQuG6oW4ga2jDtG5nIHRo4buDIHThu5UgaOG7o3AgLS1zcXVhc2ggduG7m2kgLS1uby1mZi4iCittc2dzdHIgIkLhuqFuIGtow7RuZyB0aOG7gyBr4bq/dCBo4bujcCAtLXNxdWFzaCB24bubaSAtLW5vLWZmLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyNTQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTY1CiBtc2dpZCAiWW91IGNhbm5vdCBjb21iaW5lIC0tbm8tZmYgd2l0aCAtLWZmLW9ubHkuIgotbXNnc3RyICJC4bqhbiBraMO0bmcgdGjhu4MgdOG7lSBo4bujcCAtLW5vLWZmIHbhu5tpIC0tZmYtb25seS4iCittc2dzdHIgIkLhuqFuIGtow7RuZyB0aOG7gyBr4bq/dCBo4bujcCAtLW5vLWZmIHbhu5tpIC0tZmYtb25seS4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjYxCisjOiBidWlsdGluL21lcmdlLmM6MTE3MgogbXNnaWQgIk5vIGNvbW1pdCBzcGVjaWZpZWQgYW5kIG1lcmdlLmRlZmF1bHRUb1Vwc3RyZWFtIG5vdCBzZXQuIgotbXNnc3RyICJLaMO0bmcgY2jhu4kgcmEgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSB2w6AgbWVyZ2UuZGVmYXVsdFRvVXBzdHJlYW0gY2jGsGEgxJHGsOG7o2MgxJHhurd0LiIKK21zZ3N0ciAiIgorIktow7RuZyBjaOG7iSByYSBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIHbDoCBtZXJnZS5kZWZhdWx0VG9VcHN0cmVhbSBjaMawYSDEkcaw4bujYyAiCisixJHhurd0LiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyOTMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA0CiBtc2dpZCAiQ2FuIG1lcmdlIG9ubHkgZXhhY3RseSBvbmUgY29tbWl0IGludG8gZW1wdHkgaGVhZCIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIGjDsmEgdHLhu5luIG3hu5l0IGPDoWNoIMSRw7puZyDEkeG6r24gbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSB2w6BvIG3hu5l0IGhlYWQgcuG7l25nIgorbXNnc3RyICIiCisiS2jDtG5nIHRo4buDIGjDsmEgdHLhu5luIG3hu5l0IGPDoWNoIMSRw7puZyDEkeG6r24gbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSB2w6BvIG3hu5l0ICIKKyJoZWFkIHLhu5duZyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyOTYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA3CiBtc2dpZCAiU3F1YXNoIGNvbW1pdCBpbnRvIGVtcHR5IGhlYWQgbm90IHN1cHBvcnRlZCB5ZXQiCiBtc2dzdHIgIlNxdWFzaCBjb21taXQgdsOgbyBt4buZdCBoZWFkIHRy4buRbmcgcuG7l25nIHbhuqtuIGNoxrBhIMSRxrDhu6NjIGjhu5cgdHLhu6MiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjk4CisjOiBidWlsdGluL21lcmdlLmM6MTIwOQogbXNnaWQgIk5vbi1mYXN0LWZvcndhcmQgY29tbWl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgaW50byBhbiBlbXB0eSBoZWFkIgotbXNnc3RyICJDaHV54buDbiBnaWFvIChjb21taXQpIGtow7RuZy1mYXN0LWZvcndhcmQga2jDtG5nIGjhu6NwIGzDvSDhu58gdHJvbmcgbeG7mXQgaGVhZCB0cuG7kW5nIHLhu5duZyIKK21zZ3N0ciAiIgorIkNodXnhu4NuIGdpYW8gKGNvbW1pdCkga2jDtG5nLWZhc3QtZm9yd2FyZCBraMO0bmcgaOG7o3AgbMO9IOG7nyB0cm9uZyBt4buZdCBoZWFkIHRy4buRbmcgIgorInLhu5duZyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0MTMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBoYXMgYW4gdW50cnVzdGVkIEdQRyBzaWduYXR1cmUsIGFsbGVnZWRseSBieSAlcy4iCittc2dzdHIgIiIKKyJM4bqnbiBjaHV54buDbiBnaWFvICVzIGPDsyBt4buZdCBjaOG7ryBrw70gR1BHIGtow7RuZyDEkcOhbmcgdGluLCDEkcaw4bujYyBjaG8gbMOgIGLhu59pICVzLiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjEyNjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29tbWl0ICVzIGhhcyBhIGJhZCBHUEcgc2lnbmF0dXJlIGFsbGVnZWRseSBieSAlcy4iCittc2dzdHIgIkzhuqduIGNodXnhu4NuIGdpYW8gJXMgY8OzIG3hu5l0IGNo4buvIGvDvSBHUEcgc2FpLCDEkcaw4bujYyBjaG8gbMOgIGLhu59pICVzLiIKKworIy4gJ04nCisjOiBidWlsdGluL21lcmdlLmM6MTI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJDb21taXQgJXMgZG9lcyBub3QgaGF2ZSBhIEdQRyBzaWduYXR1cmUuIgorbXNnc3RyICJM4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpICVzIGtow7RuZyBjw7MgY2jhu68ga8O9IEdQRy4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjc0CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBoYXMgYSBnb29kIEdQRyBzaWduYXR1cmUgYnkgJXNcbiIKK21zZ3N0ciAiTOG6p24gY2h1eeG7g24gZ2lhbyAlcyBjw7MgbeG7mXQgY2jhu68ga8O9IEdQRyB04buRdCBi4bufaSAlc1xuIgorCisjOiBidWlsdGluL21lcmdlLmM6MTM1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJVcGRhdGluZyAlcy4uJXNcbiIKIG1zZ3N0ciAixJBhbmcgY+G6rXAgbmjhuq10ICVzLi4lc1xuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQ1MQorIzogYnVpbHRpbi9tZXJnZS5jOjEzOTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiVHJ5aW5nIHJlYWxseSB0cml2aWFsIGluLWluZGV4IG1lcmdlLi4uXG4iCi1tc2dzdHIgIsSQYW5nIHRo4butIGjDsmEgdHLhu5luIGtp4buDdSAndHJpdmlhbCBpbi1pbmRleCcuLi5cbiIKK21zZ3N0ciAixJBhbmcgdGjhu60gaMOyYSB0cuG7mW4ga2nhu4N1IOKAnHRyaXZpYWwgaW4taW5kZXjigJ0uLi5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0NTgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDA0CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vcGUuXG4iCiBtc2dzdHIgIktow7RuZy5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0OTAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDM2CiBtc2dpZCAiTm90IHBvc3NpYmxlIHRvIGZhc3QtZm9yd2FyZCwgYWJvcnRpbmcuIgogbXNnc3RyICJUaOG7sWMgaGnhu4duIGzhu4duaCBmYXN0LWZvcndhcmQgbMOgIGtow7RuZyB0aOG7gyDEkcaw4bujYywgxJFhbmcgYuG7jyBxdWEuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTUxMwotIzogYnVpbHRpbi9tZXJnZS5jOjE1OTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDU5IGJ1aWx0aW4vbWVyZ2UuYzoxNTM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJld2luZGluZyB0aGUgdHJlZSB0byBwcmlzdGluZS4uLlxuIgogbXNnc3RyICLEkGFuZyB0dWEgbOG6oWkgY8OieSB0aMOgbmggdGjhu51pIHhhIHjGsGEuLi5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE1MTcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlRyeWluZyBtZXJnZSBzdHJhdGVneSAlcy4uLlxuIgogbXNnc3RyICLEkGFuZyB0aOG7rSBjaGnhur9uIGzGsOG7o2MgaMOyYSB0cuG7mW4gJXMuLi5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE1ODMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTI5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIG1lcmdlIHN0cmF0ZWd5IGhhbmRsZWQgdGhlIG1lcmdlLlxuIgogbXNnc3RyICJLaMO0bmcgY8OzIGNoaeG6v24gbMaw4bujYyBow7JhIHRy4buZbiBuw6BvIMSRxrDhu6NjIG7huq9tIGdp4buvIChoYW5kbGUpIHPhu7EgaMOyYSB0cuG7mW4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTg1CisjOiBidWlsdGluL21lcmdlLmM6MTUzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJNZXJnZSB3aXRoIHN0cmF0ZWd5ICVzIGZhaWxlZC5cbiIKIG1zZ3N0ciAiSMOyYSB0cuG7mW4gduG7m2kgY2hp4bq/biBsxrDhu6NjICVzIGfhurdwIGzhu5dpLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTU5NAorIzogYnVpbHRpbi9tZXJnZS5jOjE1NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNpbmcgdGhlICVzIHRvIHByZXBhcmUgcmVzb2x2aW5nIGJ5IGhhbmQuXG4iCiBtc2dzdHIgIlPhu60gZOG7pW5nICVzIMSR4buDIGNodeG6qW4gYuG7iyBnaeG6o2kgcXV54bq/dCBi4bqxbmcgdGF5LlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTYwNgorIzogYnVpbHRpbi9tZXJnZS5jOjE1NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXV0b21hdGljIG1lcmdlIHdlbnQgd2VsbDsgc3RvcHBlZCBiZWZvcmUgY29tbWl0dGluZyBhcyByZXF1ZXN0ZWRcbiIKLW1zZ3N0ciAiSMOyYSB0cuG7mW4gdOG7sSDEkeG7mW5nIMSRw6MgdHLhu58gbsOqbiB04buRdDsgYuG7iyBk4burbmcgdHLGsOG7m2Mga2hpIHZp4buHYyBjaHV54buDbiBnaWFvIMSRxrDhu6NjIHnDqnUgY+G6p3VcbiIKK21zZ3N0ciAiIgorIkjDsmEgdHLhu5luIHThu7EgxJHhu5luZyDEkcOjIHRy4bufIG7Dqm4gdOG7kXQ7IGLhu4sgZOG7q25nIHRyxrDhu5tjIGtoaSB2aeG7h2MgY2h1eeG7g24gZ2lhbyDEkcaw4bujYyB5w6p1ICIKKyJj4bqndVxuIgorCisjOiBidWlsdGluL21lcmdlLWJhc2UuYzoyNgorbXNnaWQgImdpdCBtZXJnZS1iYXNlIFstYXwtLWFsbF0gPGNvbW1pdD4gPGNvbW1pdD4uLi4iCittc2dzdHIgImdpdCBtZXJnZS1iYXNlIFstYXwtLWFsbF0gPGNvbW1pdD4gPGNvbW1pdD4uLi4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjI3Cittc2dpZCAiZ2l0IG1lcmdlLWJhc2UgWy1hfC0tYWxsXSAtLW9jdG9wdXMgPGNvbW1pdD4uLi4iCittc2dzdHIgImdpdCBtZXJnZS1iYXNlIFstYXwtLWFsbF0gLS1vY3RvcHVzIDxs4bqnbiBjb21taXQ+Li4uIgorCisjOiBidWlsdGluL21lcmdlLWJhc2UuYzoyOAorbXNnaWQgImdpdCBtZXJnZS1iYXNlIC0taW5kZXBlbmRlbnQgPGNvbW1pdD4uLi4iCittc2dzdHIgImdpdCBtZXJnZS1iYXNlIC0taW5kZXBlbmRlbnQgPGzhuqduIGNvbW1pdD4uLi4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjI5Cittc2dpZCAiZ2l0IG1lcmdlLWJhc2UgLS1pcy1hbmNlc3RvciA8Y29tbWl0PiA8Y29tbWl0PiIKK21zZ3N0ciAiZ2l0IG1lcmdlLWJhc2UgLS1pcy1hbmNlc3RvciA8Y29tbWl0PiA8Y29tbWl0PiIKKworIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6OTgKK21zZ2lkICJvdXRwdXQgYWxsIGNvbW1vbiBhbmNlc3RvcnMiCittc2dzdHIgInh14bqldCByYSB04bqldCBj4bqjIGPDoWMgw7RuZyBiw6AsIHThu5UgdGnDqm4gY2h1bmciCisKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjk5Cittc2dpZCAiZmluZCBhbmNlc3RvcnMgZm9yIGEgc2luZ2xlIG4td2F5IG1lcmdlIgorbXNnc3RyICJ0w6xtIHThu5UgdGnDqm4gY+G7p2EgaMOyYSB0cuG7mW4gbi13YXkgxJHGoW4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjEwMAorbXNnaWQgImxpc3QgcmV2cyBub3QgcmVhY2hhYmxlIGZyb20gb3RoZXJzIgorbXNnc3RyICJsaeG7h3Qga8OqIGPDoWMg4oCccmV24oCdIG3DoCBuw7Mga2jDtG5nIHRo4buDIMSR4buNYyDEkcaw4bujYyB04burIGPDoWkga2jDoWMiCisKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjEwMgorbXNnaWQgImlzIHRoZSBmaXJzdCBvbmUgYW5jZXN0b3Igb2YgdGhlIG90aGVyPyIKK21zZ3N0ciAibMOgIGNoYSBt4bq5IMSR4bqndSB0acOqbiBj4bunYSBjw6FpIGtow6FjPyIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6OAorbXNnaWQgIiIKKyJnaXQgbWVyZ2UtZmlsZSBbb3B0aW9uc10gWy1MIG5hbWUxIFstTCBvcmlnIFstTCBuYW1lMl1dXSBmaWxlMSBvcmlnX2ZpbGUgIgorImZpbGUyIgorbXNnc3RyICIiCisiZ2l0IG1lcmdlLWZpbGUgW2PDoWMtdMO5eS1jaOG7jW5dIFstTCB0w6puMSBbLUwgZ+G7kWMgWy1MIHTDqm4yXV1dIHThuq1wLXRpbjEgdOG6rXAtdGluLSIKKyJn4buRYyB04bqtcC10aW4yIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzozMworbXNnaWQgInNlbmQgcmVzdWx0cyB0byBzdGFuZGFyZCBvdXRwdXQiCittc2dzdHIgImfhu61pIGvhur90IHF14bqjIHbDoG8gxJHhuqd1IHJhIHRpw6p1IGNodeG6qW4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjM0Cittc2dpZCAidXNlIGEgZGlmZjMgYmFzZWQgbWVyZ2UiCittc2dzdHIgImTDuW5nIGtp4buDdSAgaMOyYSBk4buxYSB0csOqbiBkaWZmMyIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6MzUKK21zZ2lkICJmb3IgY29uZmxpY3RzLCB1c2Ugb3VyIHZlcnNpb24iCittc2dzdHIgIsSR4buDIHRyw6FuaCB4dW5nIMSR4buZdCwgc+G7rSBk4bulbmcgcGhpw6puIGLhuqNuIGPhu6dhIGNow7puZyB0YSIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6MzcKK21zZ2lkICJmb3IgY29uZmxpY3RzLCB1c2UgdGhlaXIgdmVyc2lvbiIKK21zZ3N0ciAixJHhu4MgdHLDoW5oIHh1bmcgxJHhu5l0LCBz4butIGThu6VuZyBwaGnDqm4gYuG6o24gY+G7p2EgaOG7jSIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6MzkKK21zZ2lkICJmb3IgY29uZmxpY3RzLCB1c2UgYSB1bmlvbiB2ZXJzaW9uIgorbXNnc3RyICLEkeG7gyB0csOhbmggeHVuZyDEkeG7mXQsIHPhu60gZOG7pW5nIHBoacOqbiBi4bqjbiBr4bq/dCBo4bujcCIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6NDIKK21zZ2lkICJmb3IgY29uZmxpY3RzLCB1c2UgdGhpcyBtYXJrZXIgc2l6ZSIKK21zZ3N0ciAixJHhu4MgdHLDoW5oIHh1bmcgxJHhu5l0LCBow6N5IHPhu60gZOG7pW5nIGvDrWNoIHRoxrDhu5tjIGLhu5kgdOG6oW8gbsOgeSIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6NDMKK21zZ2lkICJkbyBub3Qgd2FybiBhYm91dCBjb25mbGljdHMiCittc2dzdHIgImtow7RuZyBj4bqjbmggYsOhbyB24buBIGPDoWMgeHVuZyDEkeG7mXQgeOG6o3kgcmEiCisKKyM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjQ1Cittc2dpZCAic2V0IGxhYmVscyBmb3IgZmlsZTEvb3JpZ19maWxlL2ZpbGUyIgorbXNnc3RyICLEkeG6t3QgbmjDo24gY2hvIHThuq1wLXRpbi0xL3Thuq1wLXRpbi1n4buRYy904bqtcC10aW4tMiIKKworIzogYnVpbHRpbi9ta3RyZWUuYzo2NworbXNnaWQgImdpdCBta3RyZWUgWy16XSBbLS1taXNzaW5nXSBbLS1iYXRjaF0iCittc2dzdHIgImdpdCBta3RyZWUgWy16XSBbLS1taXNzaW5nXSBbLS1iYXRjaF0iCisKKyM6IGJ1aWx0aW4vbWt0cmVlLmM6MTUzCittc2dpZCAiaW5wdXQgaXMgTlVMIHRlcm1pbmF0ZWQiCittc2dzdHIgIsSR4bqndSB2w6BvIMSRxrDhu6NjIGNo4bqlbSBk4bupdCBi4bufaSBOVUwiCisKKyM6IGJ1aWx0aW4vbWt0cmVlLmM6MTU0IGJ1aWx0aW4vd3JpdGUtdHJlZS5jOjI0Cittc2dpZCAiYWxsb3cgbWlzc2luZyBvYmplY3RzIgorbXNnc3RyICJjaG8gcGjDqXAgdGhp4bq/dSDEkeG7kWkgdMaw4bujbmciCisKKyM6IGJ1aWx0aW4vbWt0cmVlLmM6MTU1Cittc2dpZCAiYWxsb3cgY3JlYXRpb24gb2YgbW9yZSB0aGFuIG9uZSB0cmVlIgorbXNnc3RyICJjaG8gcGjDqXAgdOG6oW8gbmhp4buBdSBoxqFuIG3hu5l0IGPDonkiCisKKyM6IGJ1aWx0aW4vbXYuYzoxNAorbXNnaWQgImdpdCBtdiBbb3B0aW9uc10gPHNvdXJjZT4uLi4gPGRlc3RpbmF0aW9uPiIKK21zZ3N0ciAiZ2l0IG12IFtjw6FjLXTDuXktY2jhu41uXSA8bmd14buTbj4uLi4gPMSRw61jaD4iCisKKyM6IGJ1aWx0aW4vbXYuYzo2NAorbXNnaWQgImZvcmNlIG1vdmUvcmVuYW1lIGV2ZW4gaWYgdGFyZ2V0IGV4aXN0cyIKK21zZ3N0ciAiw6lwIGJ14buZYyBkaSBjaHV54buDbiBoYXkgxJHhu5VpIHTDqm4gdGjhuq1tIGNow60gY+G6oyBraGkgxJHDrWNoIMSRw6MgdOG7k24gdOG6oWkiCisKKyM6IGJ1aWx0aW4vbXYuYzo2NQorbXNnaWQgInNraXAgbW92ZS9yZW5hbWUgZXJyb3JzIgorbXNnc3RyICJi4buPIHF1YSBjw6FjIGzhu5dpIGxpw6puIHF1YW4gxJHhur9uIGRpIGNodXnhu4NuLCDEkeG7lWkgdMOqbiIKIAogIzogYnVpbHRpbi9tdi5jOjEwOAogIywgYy1mb3JtYXQKIG1zZ2lkICJDaGVja2luZyByZW5hbWUgb2YgJyVzJyB0byAnJXMnXG4iCi1tc2dzdHIgIsSQYW5nIGtp4buDbSB0cmEgdmnhu4djIMSR4buVaSB0w6puIGPhu6dhICclcycgdGjDoG5oICclcydcbiIKK21zZ3N0ciAixJBhbmcga2nhu4NtIHRyYSB2aeG7h2MgxJHhu5VpIHTDqm4gY+G7p2Eg4oCcJXPigJ0gdGjDoG5oIOKAnCVz4oCdXG4iCiAKICM6IGJ1aWx0aW4vbXYuYzoxMTIKIG1zZ2lkICJiYWQgc291cmNlIgpAQCAtMzcxNSwxMSArNjc0NywxMSBAQAogIzogYnVpbHRpbi9tdi5jOjE4MQogIywgYy1mb3JtYXQKIG1zZ2lkICJvdmVyd3JpdGluZyAnJXMnIgotbXNnc3RyICLEkWFuZyBnaGkgxJHDqCBsw6puICclcyciCittc2dzdHIgIsSRYW5nIGdoaSDEkcOoIGzDqm4g4oCcJXPigJ0iCiAKICM6IGJ1aWx0aW4vbXYuYzoxODQKIG1zZ2lkICJDYW5ub3Qgb3ZlcndyaXRlIgotbXNnc3RyICJLaMO0bmcgdGjhu4MgZ2hpIGNow6huIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgZ2hpIMSRw6giCiAKICM6IGJ1aWx0aW4vbXYuYzoxODcKIG1zZ2lkICJtdWx0aXBsZSBzb3VyY2VzIGZvciB0aGUgc2FtZSB0YXJnZXQiCkBAIC0zNzMzLDIwMiArNjc2NSw1OTIgQEAKICM6IGJ1aWx0aW4vbXYuYzoyMTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVuYW1pbmcgJXMgdG8gJXNcbiIKLW1zZ3N0ciAixJBhbmcgdGhheSDEkeG7lWkgdMOqbiAlcyB0aMOgbmggJXNcbiIKK21zZ3N0ciAixJDhu5VpIHTDqm4gJXMgdGjDoG5oICVzXG4iCiAKLSM6IGJ1aWx0aW4vbXYuYzoyMTUKLSM6IGJ1aWx0aW4vcmVtb3RlLmM6NzMxCisjOiBidWlsdGluL212LmM6MjE1IGJ1aWx0aW4vcmVtb3RlLmM6NzMxCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlbmFtaW5nICclcycgZmFpbGVkIgogbXNnc3RyICLEkeG7lWkgdMOqbiAlcyBn4bq3cCBs4buXaSIKIAorIzogYnVpbHRpbi9uYW1lLXJldi5jOjE3NQorbXNnaWQgImdpdCBuYW1lLXJldiBbb3B0aW9uc10gPGNvbW1pdD4uLi4iCittc2dzdHIgImdpdCBuYW1lLXJldiBbY8OhYy10w7l5LWNo4buNbl0gPGNvbW1pdD4uLi4iCisKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoxNzYKK21zZ2lkICJnaXQgbmFtZS1yZXYgW29wdGlvbnNdIC0tYWxsIgorbXNnc3RyICJnaXQgbmFtZS1yZXYgW2PDoWMtdMO5eS1jaOG7jW5dIC0tYWxsIgorCisjOiBidWlsdGluL25hbWUtcmV2LmM6MTc3Cittc2dpZCAiZ2l0IG5hbWUtcmV2IFtvcHRpb25zXSAtLXN0ZGluIgorbXNnc3RyICJnaXQgbmFtZS1yZXYgW2PDoWMtdMO5eS1jaOG7jW5dIC0tc3RkaW4iCisKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMjkKK21zZ2lkICJwcmludCBvbmx5IG5hbWVzIChubyBTSEEtMSkiCittc2dzdHIgImNo4buJIGhp4buDbiB0aOG7iyB0w6puIChraMO0bmcgU0hBLTEpIgorCisjOiBidWlsdGluL25hbWUtcmV2LmM6MjMwCittc2dpZCAib25seSB1c2UgdGFncyB0byBuYW1lIHRoZSBjb21taXRzIgorbXNnc3RyICJjaOG7iSBkw7luZyBjw6FjIHRo4bq7IMSR4buDIMSR4bq3dCB0w6puIGNobyBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8iCisKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzIKK21zZ2lkICJvbmx5IHVzZSByZWZzIG1hdGNoaW5nIDxwYXR0ZXJuPiIKK21zZ3N0ciAiY2jhu4kgc+G7rSBk4bulbmcgY8OhYyB0aGFtIGNoaeG6v3UgKHJlZnMpIGto4bubcCB24bubaSA8beG6q3U+IgorCisjOiBidWlsdGluL25hbWUtcmV2LmM6MjM0Cittc2dpZCAibGlzdCBhbGwgY29tbWl0cyByZWFjaGFibGUgZnJvbSBhbGwgcmVmcyIKK21zZ3N0ciAiIgorImxp4buHdCBrw6ogdOG6pXQgY+G6oyBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gY8OzIHRo4buDIMSR4buNYyDEkcaw4bujYyB04burIHThuqV0IGPhuqMgY8OhYyB0aGFtIGNoaeG6v3UiCisKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzUKK21zZ2lkICJyZWFkIGZyb20gc3RkaW4iCittc2dzdHIgIsSR4buNYyB04burIMSR4bqndSB2w6BvIHRpw6p1IGNodeG6qW4iCisKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzYKK21zZ2lkICJhbGxvdyB0byBwcmludCBgdW5kZWZpbmVkYCBuYW1lcyIKK21zZ3N0ciAiY2hvIHBow6lwIGhp4buDbiB0aOG7iyBjw6FjIHTDqm4g4oCcY2jGsGEgxJHhu4tuaCBuZ2jEqWHigJwiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNgorbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIFtsaXN0IFs8b2JqZWN0Pl1dIgorbXNnc3RyICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBbbGlzdCBbPMSR4buRaS10xrDhu6NuZz5dXSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjI3Cittc2dpZCAiIgorImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGFkZCBbLWZdIFstbSA8bXNnPiB8IC1GIDxmaWxlPiB8ICgtYyB8IC1DKSAiCisiPG9iamVjdD5dIFs8b2JqZWN0Pl0iCittc2dzdHIgIiIKKyJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBhZGQgWy1mXSBbLW0gPGzhu51pLW5o4bqvbj4gfCAtRiA8dOG6rXAtdGluPiB8ICgtYyB8ICIKKyItQykgPMSR4buRaS10xrDhu6NuZz5dIFs8xJHhu5FpLXTGsOG7o25nPl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyOAorbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGNvcHkgWy1mXSA8ZnJvbS1vYmplY3Q+IDx0by1vYmplY3Q+IgorbXNnc3RyICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBjb3B5IFstZl0gPHThu6stxJHhu5FpLXTGsOG7o25nPiA8xJHhur9uLcSR4buRaS10xrDhu6NuZz4iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyOQorbXNnaWQgIiIKKyJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBhcHBlbmQgWy1tIDxtc2c+IHwgLUYgPGZpbGU+IHwgKC1jIHwgLUMpICIKKyI8b2JqZWN0Pl0gWzxvYmplY3Q+XSIKK21zZ3N0ciAiIgorImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGFwcGVuZCBbLW0gPGzhu51pLW5o4bqvbj4gfCAtRiA8dOG6rXAtdGluPiB8ICgtYyB8IC0iCisiQykgPMSR4buRaS10xrDhu6NuZz5dIFs8xJHhu5FpLXTGsOG7o25nPl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMAorbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGVkaXQgWzxvYmplY3Q+XSIKK21zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gZWRpdCBbPMSR4buRaS10xrDhu6NuZz5dIgorCisjOiBidWlsdGluL25vdGVzLmM6MzEKK21zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBzaG93IFs8b2JqZWN0Pl0iCittc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHNob3cgWzzEkeG7kWktdMaw4bujbmc+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjMyCittc2dpZCAiIgorImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIG1lcmdlIFstdiB8IC1xXSBbLXMgPHN0cmF0ZWd5PiBdIDxub3Rlc19yZWY+IgorbXNnc3RyICIiCisiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gbWVyZ2UgWy12IHwgLXFdIFstcyA8Y2hp4bq/bi1sxrDhu6NjPiBdIDxub3Rlc19yZWY+IgorCisjOiBidWlsdGluL25vdGVzLmM6MzMKK21zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgLS1jb21taXQgWy12IHwgLXFdIgorbXNnc3RyICJnaXQgbm90ZXMgbWVyZ2UgLS1jb21taXQgWy12IHwgLXFdIgorCisjOiBidWlsdGluL25vdGVzLmM6MzQKK21zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgLS1hYm9ydCBbLXYgfCAtcV0iCittc2dzdHIgImdpdCBub3RlcyBtZXJnZSAtLWFib3J0IFstdiB8IC1xXSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjM1Cittc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gcmVtb3ZlIFs8b2JqZWN0Pi4uLl0iCittc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHJlbW92ZSBbPMSR4buRaS10xrDhu6NuZz4uLi5dIgorCisjOiBidWlsdGluL25vdGVzLmM6MzYKK21zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBwcnVuZSBbLW4gfCAtdl0iCittc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHBydW5lIFstbiB8IC12XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjM3Cittc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gZ2V0LXJlZiIKK21zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gZ2V0LXJlZiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjQyCittc2dpZCAiZ2l0IG5vdGVzIFtsaXN0IFs8b2JqZWN0Pl1dIgorbXNnc3RyICJnaXQgbm90ZXMgW2xpc3QgWzzEkeG7kWkgdMaw4bujbmc+XV0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0NworbXNnaWQgImdpdCBub3RlcyBhZGQgWzxvcHRpb25zPl0gWzxvYmplY3Q+XSIKK21zZ3N0ciAiZ2l0IG5vdGVzIGFkZCBbPGPDoWMtdMO5eS1jaOG7jW4+XSBbPMSR4buRaS10xrDhu6NuZz5dIgorCisjOiBidWlsdGluL25vdGVzLmM6NTIKK21zZ2lkICJnaXQgbm90ZXMgY29weSBbPG9wdGlvbnM+XSA8ZnJvbS1vYmplY3Q+IDx0by1vYmplY3Q+IgorbXNnc3RyICJnaXQgbm90ZXMgY29weSBbPGPDoWMtdMO5eS1jaOG7jW4+XSA8dOG7qy3EkeG7kWktdMaw4bujbmc+IDzEkeG6v24txJHhu5FpLXTGsOG7o25nPiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjUzCittc2dpZCAiZ2l0IG5vdGVzIGNvcHkgLS1zdGRpbiBbPGZyb20tb2JqZWN0PiA8dG8tb2JqZWN0Pl0uLi4iCittc2dzdHIgImdpdCBub3RlcyBjb3B5IC0tc3RkaW4gWzx04burLcSR4buRaS10xrDhu6NuZz4gPMSR4bq/bi3EkeG7kWktdMaw4bujbmc+XS4uLiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjU4Cittc2dpZCAiZ2l0IG5vdGVzIGFwcGVuZCBbPG9wdGlvbnM+XSBbPG9iamVjdD5dIgorbXNnc3RyICJnaXQgbm90ZXMgYXBwZW5kIFs8Y8OhYy10w7l5LWNo4buNbj5dIFs8xJHhu5FpLXTGsOG7o25nPl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MworbXNnaWQgImdpdCBub3RlcyBlZGl0IFs8b2JqZWN0Pl0iCittc2dzdHIgImdpdCBub3RlcyBlZGl0IFs8xJHhu5FpIHTGsOG7o25nPl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2OAorbXNnaWQgImdpdCBub3RlcyBzaG93IFs8b2JqZWN0Pl0iCittc2dzdHIgImdpdCBub3RlcyBzaG93IFs8xJHhu5FpIHTGsOG7o25nPl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MworbXNnaWQgImdpdCBub3RlcyBtZXJnZSBbPG9wdGlvbnM+XSA8bm90ZXNfcmVmPiIKK21zZ3N0ciAiZ2l0IG5vdGVzIG1lcmdlIFs8Y8OhYy10w7l5LWNo4buNbj5dIDxub3Rlc19yZWY+IgorCisjOiBidWlsdGluL25vdGVzLmM6NzQKK21zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgLS1jb21taXQgWzxvcHRpb25zPl0iCittc2dzdHIgImdpdCBub3RlcyBtZXJnZSAtLWNvbW1pdCBbPGPDoWMtdMO5eS1jaOG7jW4+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjc1Cittc2dpZCAiZ2l0IG5vdGVzIG1lcmdlIC0tYWJvcnQgWzxvcHRpb25zPl0iCittc2dzdHIgImdpdCBub3RlcyBtZXJnZSAtLWFib3J0IFs8Y8OhYy10w7l5LWNo4buNbj5dIgorCisjOiBidWlsdGluL25vdGVzLmM6ODAKK21zZ2lkICJnaXQgbm90ZXMgcmVtb3ZlIFs8b2JqZWN0Pl0iCittc2dzdHIgImdpdCBub3RlcyByZW1vdmUgWzzEkeG7kWkgdMaw4bujbmc+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjg1Cittc2dpZCAiZ2l0IG5vdGVzIHBydW5lIFs8b3B0aW9ucz5dIgorbXNnc3RyICJnaXQgbm90ZXMgcHJ1bmUgWzxjw6FjLXTDuXktY2jhu41uPl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5MAorbXNnaWQgImdpdCBub3RlcyBnZXQtcmVmIgorbXNnc3RyICJnaXQgbm90ZXMgZ2V0LXJlZiIKKwogIzogYnVpbHRpbi9ub3Rlcy5jOjEzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gc3RhcnQgJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIGto4bufaSBjaOG6oXkgJ3Nob3cnIGNobyDEkeG7kWkgdMaw4bujbmcgJyVzJyIKK21zZ3N0ciAia2jDtG5nIHRo4buDIGto4bufaSBjaOG6oXkg4oCcc2hvd+KAnSBjaG8gxJHhu5FpIHTGsOG7o25nIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTQ1Ci1tc2dpZCAiY2FuJ3QgZmRvcGVuICdzaG93JyBvdXRwdXQgZmQiCi1tc2dzdHIgImtow7RuZyB0aOG7gyBmZG9wZW4gJ3Nob3cnIChs4buHbmggaGnhu4NuIHRo4buLKSBtw7QgdOG6oyB04bqtcCB0aW4gKGZkKSBr4bq/dCB4deG6pXQiCisjOiBidWlsdGluL25vdGVzLmM6MTQzCittc2dpZCAiY291bGQgbm90IHJlYWQgJ3Nob3cnIG91dHB1dCIKK21zZ3N0ciAia2jDtG5nIHRo4buDIMSR4buNYyBr4bq/dCB4deG6pXQg4oCcc2hvd+KAnSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjE1NQotIywgYy1mb3JtYXQKLW1zZ2lkICJmYWlsZWQgdG8gY2xvc2UgcGlwZSB0byAnc2hvdycgZm9yIG9iamVjdCAnJXMnIgotbXNnc3RyICJn4bq3cCBs4buXaSBraGkgxJHDs25nIMSRxrDhu51uZyDhu5FuZyBjaG8gbOG7h25oICdzaG93JyBjaG8gxJHhu5FpIHTGsOG7o25nICclcyciCi0KLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxNTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGZpbmlzaCAnc2hvdycgZm9yIG9iamVjdCAnJXMnIgotbXNnc3RyICJn4bq3cCBs4buXaSBraGkgaG/DoG4gdGjDoG5oICdzaG93JyBjaG8gxJHhu5FpIHTGsOG7o25nICclcyciCittc2dzdHIgImfhurdwIGzhu5dpIGtoaSBob8OgbiB0aMOgbmgg4oCcc2hvd+KAnSBjaG8gxJHhu5FpIHTGsOG7o25nIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTc1Ci0jOiBidWlsdGluL3RhZy5jOjM0NworIzogYnVpbHRpbi9ub3Rlcy5jOjE2OSBidWlsdGluL3RhZy5jOjM0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIGZpbGUgJyVzJyIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIHThuqFvIHThuq1wIHRpbiAnJXMnIgorbXNnc3RyICJraMO0bmcgdGjhu4MgdOG6oW8gdOG6rXAgdGluIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTg5CisjOiBidWlsdGluL25vdGVzLmM6MTg4CiBtc2dpZCAiUGxlYXNlIHN1cHBseSB0aGUgbm90ZSBjb250ZW50cyB1c2luZyBlaXRoZXIgLW0gb3IgLUYgb3B0aW9uIgotbXNnc3RyICJYaW4gaMOjeSDDoXAgZOG7pW5nIG7hu5lpIGR1bmcgY+G7p2EgZ2hpIGNow7ogc+G7rSBk4bulbmcgaG/hurdjIGzDoCB0w7l5IGNo4buNbiAtbSBob+G6t2MgbMOgIC1GIgorbXNnc3RyICIiCisiWGluIGjDo3kgw6FwIGThu6VuZyBu4buZaSBkdW5nIGPhu6dhIGdoaSBjaMO6IHPhu60gZOG7pW5nIGhv4bq3YyBsw6AgdMO5eSBjaOG7jW4gLW0gaG/hurdjIGzDoCAtRiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjIxMAotIzogYnVpbHRpbi9ub3Rlcy5jOjk3MworIzogYnVpbHRpbi9ub3Rlcy5jOjIwOSBidWlsdGluL25vdGVzLmM6OTcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbW92aW5nIG5vdGUgZm9yIG9iamVjdCAlc1xuIgogbXNnc3RyICLEkGFuZyBn4buhIGLhu48gZ2hpIGNow7ogKG5vdGUpIGNobyDEkeG7kWkgdMaw4bujbmcgJXNcbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjIxNQorIzogYnVpbHRpbi9ub3Rlcy5jOjIxNAogbXNnaWQgInVuYWJsZSB0byB3cml0ZSBub3RlIG9iamVjdCIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGdoaSDEkeG7kWkgdMaw4bujbmcgZ2hpIGNow7ogKG5vdGUpIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjE3CisjOiBidWlsdGluL25vdGVzLmM6MjE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlRoZSBub3RlIGNvbnRlbnRzIGhhcyBiZWVuIGxlZnQgaW4gJXMiCiBtc2dzdHIgIk7hu5lpIGR1bmcgZ2hpIGNow7ogY8OybiBs4bqhaSAlcyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI1MQotIzogYnVpbHRpbi90YWcuYzo1NDIKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNTAgYnVpbHRpbi90YWcuYzo1NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgJyVzJyIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIMSR4buNYyAnJXMnIgorbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu41jIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjUzCi0jOiBidWlsdGluL3RhZy5jOjU0NQorIzogYnVpbHRpbi9ub3Rlcy5jOjI1MiBidWlsdGluL3RhZy5jOjU0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiBvciByZWFkICclcyciCi1tc2dzdHIgImtow7RuZyB0aOG7gyBt4bufIMSR4buDIMSR4buNYyBoYXkgZ2hpICclcyciCittc2dzdHIgImtow7RuZyB0aOG7gyBt4bufIGhheSDEkeG7jWMg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNzIKLSM6IGJ1aWx0aW4vbm90ZXMuYzo0NDUKLSM6IGJ1aWx0aW4vbm90ZXMuYzo0NDcKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1MDcKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1NjEKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NDQKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NDkKLSM6IGJ1aWx0aW4vbm90ZXMuYzo3MjQKLSM6IGJ1aWx0aW4vbm90ZXMuYzo3NjYKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5NjgKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyOTMKLSM6IGJ1aWx0aW4vdGFnLmM6NTU4CisjOiBidWlsdGluL25vdGVzLmM6MjcxIGJ1aWx0aW4vbm90ZXMuYzo0NDQgYnVpbHRpbi9ub3Rlcy5jOjQ0NgorIzogYnVpbHRpbi9ub3Rlcy5jOjUwNiBidWlsdGluL25vdGVzLmM6NTYwIGJ1aWx0aW4vbm90ZXMuYzo2NDMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2NDggYnVpbHRpbi9ub3Rlcy5jOjcyMyBidWlsdGluL25vdGVzLmM6NzY1CisjOiBidWlsdGluL25vdGVzLmM6OTY3IGJ1aWx0aW4vdGFnLmM6NTU2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZXNvbHZlICclcycgYXMgYSB2YWxpZCByZWYuIgotbXNnc3RyICJH4bq3cCBs4buXaSBraGkgZ2nhuqNpIHF1eeG6v3QgJyVzJyBuaMawIGzDoCBt4buZdCB0aGFtIGNoaeG6v3UgKHJlZikgaOG7o3AgbOG7hy4iCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBwaMOibiBnaeG6o2kg4oCcJXPigJ0gbmjGsCBsw6AgbeG7mXQgdGhhbSBjaGnhur91IChyZWYpIGjhu6NwIGzhu4cuIgogCi0jOiBidWlsdGluL25vdGVzLmM6Mjc1CisjOiBidWlsdGluL25vdGVzLmM6Mjc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZWFkIG9iamVjdCAnJXMnLiIKLW1zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSR4buNYyDEkeG7kWkgdMaw4bujbmcgJyVzJy4iCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSDEkeG7jWMgxJHhu5FpIHTGsOG7o25nIOKAnCVz4oCdLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI5OQorIzogYnVpbHRpbi9ub3Rlcy5jOjI5OAogbXNnaWQgIkNhbm5vdCBjb21taXQgdW5pbml0aWFsaXplZC91bnJlZmVyZW5jZWQgbm90ZXMgdHJlZSIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgY2jGsGEgxJHGsOG7o2Mga2jhu59pIHThuqFvIGhv4bq3YyBraMO0bmcgxJHGsOG7o2MgdGhhbSBjaGnhur91IGPDonkgZ2hpIGNow7oiCittc2dzdHIgIiIKKyJLaMO0bmcgdGjhu4MgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBjaMawYSDEkcaw4bujYyBraOG7n2kgdOG6oW8gaG/hurdjIGtow7RuZyDEkcaw4bujYyB0aGFtIGNoaeG6v3UgIgorImPDonkgZ2hpIGNow7oiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzozNDAKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkIG5vdGVzLnJld3JpdGVNb2RlIHZhbHVlOiAnJXMnIgotbXNnc3RyICJHacOhIHRy4buLIG5vdGVzLnJld3JpdGVNb2RlIHNhaTogJyVzJyIKK21zZ3N0ciAiR2nDoSB0cuG7iyBub3Rlcy5yZXdyaXRlTW9kZSBzYWk6IOKAnCVz4oCdIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzUwCisjOiBidWlsdGluL25vdGVzLmM6MzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlZnVzaW5nIHRvIHJld3JpdGUgbm90ZXMgaW4gJXMgKG91dHNpZGUgb2YgcmVmcy9ub3Rlcy8pIgogbXNnc3RyICJU4burIGNo4buRaSBnaGkgxJHDqCBnaGkgY2jDuiB0cm9uZyAlcyAobuG6sW0gbmdvw6BpIGPhu6dhIHJlZnMvbm90ZXMvKSIKIAogIy4gVFJBTlNMQVRPUlM6IFRoZSBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiB0aGUKICMuIGVudmlyb25tZW50IHZhcmlhYmxlLCB0aGUgc2Vjb25kICVzIGlzIGl0cyB2YWx1ZQotIzogYnVpbHRpbi9ub3Rlcy5jOjM3NworIzogYnVpbHRpbi9ub3Rlcy5jOjM3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJCYWQgJXMgdmFsdWU6ICclcyciCi1tc2dzdHIgIkdpw6EgdHLhu4sgJXMgc2FpOiAnJXMnIgorbXNnc3RyICJHacOhIHRy4buLICVzIHNhaTog4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo0NDEKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFsZm9ybWVkIGlucHV0IGxpbmU6ICclcycuIgotbXNnc3RyICJEw7JuZyBuaOG6rXAgdsOgbyBk4buLIGjDrG5oOiAnJXMnLiIKK21zZ3N0ciAiRMOybmcgbmjhuq1wIHbDoG8gZOG7iyBow6xuaDog4oCcJXPigJ0uIgogCi0jOiBidWlsdGluL25vdGVzLmM6NDU2CisjOiBidWlsdGluL25vdGVzLmM6NDU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBjb3B5IG5vdGVzIGZyb20gJyVzJyB0byAnJXMnIgotbXNnc3RyICJH4bq3cCBs4buXaSBraGkgc2FvIGNow6lwIGdoaSBjaMO6IChub3RlKSB04burICclcycgdOG7m2kgJyVzJyIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIHNhbyBjaMOpcCBnaGkgY2jDuiAobm90ZSkgdOG7qyDigJwlc+KAnSB04bubaSDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUwMAotIzogYnVpbHRpbi9ub3Rlcy5jOjU1NAotIzogYnVpbHRpbi9ub3Rlcy5jOjYyNwotIzogYnVpbHRpbi9ub3Rlcy5jOjYzOQotIzogYnVpbHRpbi9ub3Rlcy5jOjcxMgotIzogYnVpbHRpbi9ub3Rlcy5jOjc1OQotIzogYnVpbHRpbi9ub3Rlcy5jOjEwMzMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0OTkgYnVpbHRpbi9ub3Rlcy5jOjU1MyBidWlsdGluL25vdGVzLmM6NjI2CisjOiBidWlsdGluL25vdGVzLmM6NjM4IGJ1aWx0aW4vbm90ZXMuYzo3MTEgYnVpbHRpbi9ub3Rlcy5jOjc1OAorIzogYnVpbHRpbi9ub3Rlcy5jOjEwMzIKIG1zZ2lkICJ0b28gbWFueSBwYXJhbWV0ZXJzIgogbXNnc3RyICJxdcOhIG5oaeG7gXUgxJHhu5FpIHPhu5EiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1MTMKLSM6IGJ1aWx0aW4vbm90ZXMuYzo3NzIKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MTIgYnVpbHRpbi9ub3Rlcy5jOjc3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBub3RlIGZvdW5kIGZvciBvYmplY3QgJXMuIgotbXNnc3RyICJraMO0bmcgZ2hpIGNow7ogxJHGsOG7o2MgdMOsbSB0aOG6pXkgY2hvIMSR4buRaSB0xrDhu6NuZyAlcy4iCittc2dzdHIgImtow7RuZyB0w6xtIHRo4bqleSBnaGkgY2jDuiBjaG8gxJHhu5FpIHTGsOG7o25nICVzLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU4MAorIzogYnVpbHRpbi9ub3Rlcy5jOjUzNCBidWlsdGluL25vdGVzLmM6NjkxCittc2dpZCAibm90ZSBjb250ZW50cyBhcyBhIHN0cmluZyIKK21zZ3N0ciAibuG7mWkgZHVuZyBnaGkgY2jDuiAobm90ZSkgbuG6sW0gdHJvbmcgbeG7mXQgY2h14buXaSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjUzNyBidWlsdGluL25vdGVzLmM6Njk0Cittc2dpZCAibm90ZSBjb250ZW50cyBpbiBhIGZpbGUiCittc2dzdHIgIm7hu5lpIGR1bmcgZ2hpIGNow7ogKG5vdGUpIG7hurFtIHRyb25nIG3hu5l0IHThuq1wIHRpbiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjUzOSBidWlsdGluL25vdGVzLmM6NTQyIGJ1aWx0aW4vbm90ZXMuYzo2OTYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2OTkgYnVpbHRpbi90YWcuYzo0NzQKK21zZ2lkICJvYmplY3QiCittc2dzdHIgIsSR4buRaSB0xrDhu6NuZyIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjU0MCBidWlsdGluL25vdGVzLmM6Njk3Cittc2dpZCAicmV1c2UgYW5kIGVkaXQgc3BlY2lmaWVkIG5vdGUgb2JqZWN0IgorbXNnc3RyICJkw7luZyBs4bqhaSBuaMawbmcgY8OzIHPhu61hIGNo4buvYSDEkeG7kWkgdMaw4bujbmcgbm90ZSDEkcOjIGNo4buJIHJhIgorCisjOiBidWlsdGluL25vdGVzLmM6NTQzIGJ1aWx0aW4vbm90ZXMuYzo3MDAKK21zZ2lkICJyZXVzZSBzcGVjaWZpZWQgbm90ZSBvYmplY3QiCittc2dzdHIgImTDuW5nIGzhuqFpIMSR4buRaSB0xrDhu6NuZyBnaGkgY2jDuiAobm90ZSkgxJHDoyBjaOG7iSByYSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjU0NSBidWlsdGluL25vdGVzLmM6NjEzCittc2dpZCAicmVwbGFjZSBleGlzdGluZyBub3RlcyIKK21zZ3N0ciAidGhheSB0aOG6vyBnaGkgY2jDuiB0csaw4bubYyIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjU3OQogIywgYy1mb3JtYXQKLW1zZ2lkICJDYW5ub3QgYWRkIG5vdGVzLiBGb3VuZCBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzLiBVc2UgJy1mJyB0byBvdmVyd3JpdGUgZXhpc3Rpbmcgbm90ZXMiCi1tc2dzdHIgIktow7RuZyB0aOG7gyB0aMOqbSBjw6FjIGdoaSBjaMO6LiDEkMOjIHTDrG0gdGjhuqV5IGPDoWMgZ2hpIGNow7ogxJHDoyBz4bq1biBjw7MgY2hvIMSR4buRaSB0xrDhu6NuZyAlcy4gU+G7rSBk4bulbmcgdMO5eSBjaOG7jW4gJy1mJyDEkeG7gyBnaGkgxJHDqCBsw6puIGPDoWMgZ2hpIGNow7ogY8WpIgorbXNnaWQgIiIKKyJDYW5ub3QgYWRkIG5vdGVzLiBGb3VuZCBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzLiBVc2UgJy1mJyB0byBvdmVyd3JpdGUgIgorImV4aXN0aW5nIG5vdGVzIgorbXNnc3RyICIiCisiS2jDtG5nIHRo4buDIHRow6ptIGPDoWMgZ2hpIGNow7ouIMSQw6MgdMOsbSB0aOG6pXkgY8OhYyBnaGkgY2jDuiDEkcOjIGPDsyBz4bq1biBjaG8gxJHhu5FpIHTGsOG7o25nICIKKyIlcy4gU+G7rSBk4bulbmcgdMO5eSBjaOG7jW4g4oCcLWbigJ0gxJHhu4MgZ2hpIMSRw6ggbMOqbiBjw6FjIGdoaSBjaMO6IGPFqSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU4NQotIzogYnVpbHRpbi9ub3Rlcy5jOjY2MgorIzogYnVpbHRpbi9ub3Rlcy5jOjU4NCBidWlsdGluL25vdGVzLmM6NjYxCiAjLCBjLWZvcm1hdAogbXNnaWQgIk92ZXJ3cml0aW5nIGV4aXN0aW5nIG5vdGVzIGZvciBvYmplY3QgJXNcbiIKIG1zZ3N0ciAixJBhbmcgZ2hpIMSRw6ggbMOqbiBnaGkgY2jDuiBjxakgY2hvIMSR4buRaSB0xrDhu6NuZyAlc1xuIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjM1CisjOiBidWlsdGluL25vdGVzLmM6NjE0Cittc2dpZCAicmVhZCBvYmplY3RzIGZyb20gc3RkaW4iCittc2dzdHIgIsSR4buNYyBjw6FjIMSR4buRaSB0xrDhu6NuZyB04burIMSR4bqndSB2w6BvIHRpw6p1IGNodeG6qW4iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MTYKK21zZ2lkICJsb2FkIHJld3JpdGluZyBjb25maWcgZm9yIDxjb21tYW5kPiAoaW1wbGllcyAtLXN0ZGluKSIKK21zZ3N0ciAidOG6o2kgY+G6pXUgaMOsbmggY2jDqXAgbOG6oWkgY2hvIDxs4buHbmg+IChuZ+G6p20gxJHhu4tuaCBsw6AgLS1zdGRpbikiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MzQKIG1zZ2lkICJ0b28gZmV3IHBhcmFtZXRlcnMiCiBtc2dzdHIgInF1w6Egw610IMSR4buRaSBz4buRIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjU2CisjOiBidWlsdGluL25vdGVzLmM6NjU1CiAjLCBjLWZvcm1hdAotbXNnaWQgIkNhbm5vdCBjb3B5IG5vdGVzLiBGb3VuZCBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzLiBVc2UgJy1mJyB0byBvdmVyd3JpdGUgZXhpc3Rpbmcgbm90ZXMiCi1tc2dzdHIgIktow7RuZyB0aOG7gyBzYW8gY2jDqXAgY8OhYyBnaGkgY2jDui4gxJDDoyB0w6xtIHRo4bqleSBjw6FjIGdoaSBjaMO6IMSRw6Mgc+G6tW4gY8OzIGNobyDEkeG7kWkgdMaw4bujbmcgJXMuIFPhu60gZOG7pW5nIHTDuXkgY2jhu41uICctZicgxJHhu4MgZ2hpIMSRw6ggbMOqbiBjw6FjIGdoaSBjaMO6IGPFqSIKK21zZ2lkICIiCisiQ2Fubm90IGNvcHkgbm90ZXMuIEZvdW5kIGV4aXN0aW5nIG5vdGVzIGZvciBvYmplY3QgJXMuIFVzZSAnLWYnIHRvIG92ZXJ3cml0ZSAiCisiZXhpc3Rpbmcgbm90ZXMiCittc2dzdHIgIiIKKyJLaMO0bmcgdGjhu4Mgc2FvIGNow6lwIGPDoWMgZ2hpIGNow7ouIMSQw6MgdMOsbSB0aOG6pXkgY8OhYyBnaGkgY2jDuiDEkcOjIGPDsyBz4bq1biBjaG8gxJHhu5FpICIKKyJ0xrDhu6NuZyAlcy4gU+G7rSBk4bulbmcgdMO5eSBjaOG7jW4g4oCcLWbigJ0gxJHhu4MgZ2hpIMSRw6ggbMOqbiBjw6FjIGdoaSBjaMO6IGPFqSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjY2OAorIzogYnVpbHRpbi9ub3Rlcy5jOjY2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJNaXNzaW5nIG5vdGVzIG9uIHNvdXJjZSBvYmplY3QgJXMuIENhbm5vdCBjb3B5LiIKIG1zZ3N0ciAiVGhp4bq/dSBnaGkgY2jDuiB0csOqbiDEkeG7kWkgdMaw4bujbmcgbmd14buRbiAlcy4gS2jDtG5nIHRo4buDIHNhbyBjaMOpcC4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo3MTcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSAtbS8tRi8tYy8tQyBvcHRpb25zIGhhdmUgYmVlbiBkZXByZWNhdGVkIGZvciB0aGUgJ2VkaXQnIHN1YmNvbW1hbmQuXG4iCiAiUGxlYXNlIHVzZSAnZ2l0IG5vdGVzIGFkZCAtZiAtbS8tRi8tYy8tQycgaW5zdGVhZC5cbiIKIG1zZ3N0ciAiIgotIkPDoWMgdMO5eSBjaOG7jW4gLW0vLUYvLWMvLUMgxJHDoyBj4buVIGtow7RuZyBjw7JuIGTDuW5nIG7hu69hIGNobyBs4buHbmggY29uICdlZGl0Jy5cbiIKLSJYaW4gaMOjeSBz4butIGThu6VuZyBs4buHbmggc2F1IMSR4buDIHRoYXkgdGjhur86ICdnaXQgbm90ZXMgYWRkIC1mIC1tLy1GLy1jLy1DJy5cbiIKKyJDw6FjIHTDuXkgY2jhu41uIC1tLy1GLy1jLy1DIMSRw6MgY+G7lSBraMO0bmcgY8OybiBkw7luZyBu4buvYSBjaG8gbOG7h25oIGNvbiDigJxlZGl04oCdLlxuIgorIlhpbiBow6N5IHPhu60gZOG7pW5nIGzhu4duaCBzYXUgxJHhu4MgdGhheSB0aOG6vzog4oCcZ2l0IG5vdGVzIGFkZCAtZiAtbS8tRi8tYy8tQ+KAnS5cbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjk3MQorIzogYnVpbHRpbi9ub3Rlcy5jOjg2MworbXNnaWQgIkdlbmVyYWwgb3B0aW9ucyIKK21zZ3N0ciAiVMO5eSBjaOG7jW4gY2h1bmciCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NjUKK21zZ2lkICJNZXJnZSBvcHRpb25zIgorbXNnc3RyICJUw7l5IGNo4buNbiB24buBIGjDsmEgdHLhu5luIgorCisjOiBidWlsdGluL25vdGVzLmM6ODY3Cittc2dpZCAiIgorInJlc29sdmUgbm90ZXMgY29uZmxpY3RzIHVzaW5nIHRoZSBnaXZlbiBzdHJhdGVneSAobWFudWFsL291cnMvdGhlaXJzL3VuaW9uLyIKKyJjYXRfc29ydF91bmlxKSIKK21zZ3N0ciAiIgorInBow6JuIGdp4bqjaSBjw6FjIHh1bmcgxJHhu5l0IOKAnG5vdGVz4oCdIHPhu60gZOG7pW5nIGNoaeG6v24gbMaw4bujYyDEkcOjIMSRxrBhIHJhIChtYW51YWwvb3Vycy8iCisidGhlaXJzL3VuaW9uL2NhdF9zb3J0X3VuaXEpIgorCisjOiBidWlsdGluL25vdGVzLmM6ODY5Cittc2dpZCAiQ29tbWl0dGluZyB1bm1lcmdlZCBub3RlcyIKK21zZ3N0ciAiQ2h1eeG7g24gZ2lhbyBjw6FjIG5vdGUgY2jGsGEgxJHGsOG7o2MgaMOyYSB0cuG7mW4iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NzEKK21zZ2lkICJmaW5hbGl6ZSBub3RlcyBtZXJnZSBieSBjb21taXR0aW5nIHVubWVyZ2VkIG5vdGVzIgorbXNnc3RyICIiCisiY8OhYyBub3RlIGN14buRaSBjw7luZyDEkcaw4bujYyBow7JhIHRy4buZbiBi4bufaSBjw6FjIG5vdGUgY2jGsGEgaMOyYSB0cuG7mW4gY+G7p2EgbOG6p24gY2h1eeG7g24gIgorImdpYW8iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NzMKK21zZ2lkICJBYm9ydGluZyBub3RlcyBtZXJnZSByZXNvbHV0aW9uIgorbXNnc3RyICJI4buneSBi4buPIHBow6JuIGdp4bqjaSBnaGkgY2jDuiAobm90ZSkgaMOyYSB0cuG7mW4iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NzUKK21zZ2lkICJhYm9ydCBub3RlcyBtZXJnZSIKK21zZ3N0ciAiYuG7jyBxdWEgaMOyYSB0cuG7mW4gY8OhYyBnaGkgY2jDuiAobm90ZSkiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiT2JqZWN0ICVzIGhhcyBubyBub3RlXG4iCiBtc2dzdHIgIsSQ4buRaSB0xrDhu6NuZyAlcyBraMO0bmcgY8OzIGdoaSBjaMO6IChub3RlKVxuIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTEwMwotIzogYnVpbHRpbi9yZW1vdGUuYzoxNTk4CisjOiBidWlsdGluL25vdGVzLmM6OTgyCittc2dpZCAiYXR0ZW1wdCB0byByZW1vdmUgbm9uLWV4aXN0ZW50IG5vdGUgaXMgbm90IGFuIGVycm9yIgorbXNnc3RyICJj4buRIGfhuq9uZyBn4buhIGLhu48gbeG7mXQgbm90ZSBjaMawYSB04burbmcgdOG7k24gdOG6oWkga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgbOG7l2kiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5ODUKK21zZ2lkICJyZWFkIG9iamVjdCBuYW1lcyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIKK21zZ3N0ciAixJHhu41jIHTDqm4gxJHhu5FpIHTGsOG7o25nIHThu6sgdGhp4bq/dCBi4buLIG5o4bqtcCBjaHXhuqluIgorCisjOiBidWlsdGluL25vdGVzLmM6MTA2NgorbXNnaWQgIm5vdGVzX3JlZiIKK21zZ3N0ciAibm90ZXNfcmVmIgorCisjOiBidWlsdGluL25vdGVzLmM6MTA2NworbXNnaWQgInVzZSBub3RlcyBmcm9tIDxub3Rlc19yZWY+IgorbXNnc3RyICJkw7luZyDigJxub3Rlc+KAnSB04burIDxub3Rlc19yZWY+IgorCisjOiBidWlsdGluL25vdGVzLmM6MTEwMiBidWlsdGluL3JlbW90ZS5jOjE1OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biBzdWJjb21tYW5kOiAlcyIKIG1zZ3N0ciAiS2jDtG5nIGhp4buDdSBjw6J1IGzhu4duaCBjb246ICVzIgogCi0jOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjIzMzcKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjMKK21zZ2lkICJnaXQgcGFjay1vYmplY3RzIC0tc3Rkb3V0IFtvcHRpb25zLi4uXSBbPCByZWYtbGlzdCB8IDwgb2JqZWN0LWxpc3RdIgorbXNnc3RyICIiCisiZ2l0IHBhY2stb2JqZWN0cyAtLXN0ZG91dCBbY8OhYy10w7l5LWNo4buNbi4uLl0gWzwgZGFuaC1zw6FjaC1yZWYgfCA8IGRhbmgtc8OhY2gtIgorIsSR4buRaS10xrDhu6NuZ10iCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQKK21zZ2lkICJnaXQgcGFjay1vYmplY3RzIFtvcHRpb25zLi4uXSBiYXNlLW5hbWUgWzwgcmVmLWxpc3QgfCA8IG9iamVjdC1saXN0XSIKK21zZ3N0ciAiIgorImdpdCBwYWNrLW9iamVjdHMgW2PDoWMtdMO5eS1jaOG7jW4uLi5dIGJhc2UtbmFtZSBbPCBkYW5oLXPDoWNoLXJlZiB8IDwgZGFuaC1zw6FjaC0iCisixJHhu5FpLXTGsOG7o25nXSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoxODMgYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoxODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiZGVmbGF0ZSBlcnJvciAoJWQpIgorbXNnc3RyICJs4buXaSBnaeG6o2kgbsOpbiAoJWQpIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjIzOTcKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5zdXBwb3J0ZWQgaW5kZXggdmVyc2lvbiAlcyIKIG1zZ3N0ciAicGhpw6puIGLhuqNuIG3hu6VjIGzhu6VjIGtow7RuZyDEkcaw4bujYyBo4buXIHRy4bujICVzIgogCi0jOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjIzNDEKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQwMQogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgaW5kZXggdmVyc2lvbiAnJXMnIgotbXNnc3RyICJwaGnDqm4gYuG6o24gbeG7pWMgbOG7pWMgc2FpICclcyciCittc2dzdHIgInBoacOqbiBi4bqjbiBt4bulYyBs4bulYyBzYWkg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjM2NAorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDI0CiAjLCBjLWZvcm1hdAogbXNnaWQgIm9wdGlvbiAlcyBkb2VzIG5vdCBhY2NlcHQgbmVnYXRpdmUgZm9ybSIKIG1zZ3N0ciAidMO5eSBjaOG7jW4gJXMga2jDtG5nIGNo4bqlcCBuaOG6rW4gZOG6oW5nIHRo4bupYyDDom0iCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjM2OAorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDI4CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBwYXJzZSB2YWx1ZSAnJXMnIGZvciBvcHRpb24gJXMiCi1tc2dzdHIgImtow7RuZyB0aOG7gyBwaMOibiB0w61jaCBnacOhIHRy4buLICclcycgY2hvIHTDuXkgY2jhu41uICVzIgorbXNnc3RyICJraMO0bmcgdGjhu4MgcGjDom4gdMOtY2ggZ2nDoSB0cuG7iyDigJwlc+KAnSBjaG8gdMO5eSBjaOG7jW4gJXMiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ0NworbXNnaWQgImRvIG5vdCBzaG93IHByb2dyZXNzIG1ldGVyIgorbXNnc3RyICJraMO0bmcgaGnhu4NuIHRo4buLIGLhu5kgxJFvIHRp4bq/biB0csOsbmgiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ0OQorbXNnaWQgInNob3cgcHJvZ3Jlc3MgbWV0ZXIiCittc2dzdHIgImhp4buDbiB0aOG7iyBi4buZIMSRbyB0aeG6v24gdHLDrG5oIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NTEKK21zZ2lkICJzaG93IHByb2dyZXNzIG1ldGVyIGR1cmluZyBvYmplY3Qgd3JpdGluZyBwaGFzZSIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGLhu5kgxJFvIHRp4bq/biB0cmnhu4NuIHRyb25nIHN14buRdCBwaGEgZ2hpIMSR4buRaSB0xrDhu6NuZyIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDU0Cittc2dpZCAic2ltaWxhciB0byAtLWFsbC1wcm9ncmVzcyB3aGVuIHByb2dyZXNzIG1ldGVyIGlzIHNob3duIgorbXNnc3RyICJ0xrDGoW5nIHThu7EgLS1hbGwtcHJvZ3Jlc3Mga2hpIGLhu5kgxJFvIHRp4bq/biB0csOsbmggxJHGsOG7o2MgeHXhuqV0IGhp4buHbiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDU1Cittc2dpZCAidmVyc2lvblssb2Zmc2V0XSIKK21zZ3N0ciAicGhpw6puIGLhuqNuWyxvZmZzZXRdIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NTYKK21zZ2lkICJ3cml0ZSB0aGUgcGFjayBpbmRleCBmaWxlIGluIHRoZSBzcGVjaWZpZWQgaWR4IGZvcm1hdCB2ZXJzaW9uIgorbXNnc3RyICJnaGkgdOG6rXAgdGluIGLhuqNuZyBt4bulYyBs4bulYyBnw7NpIChwYWNrKSDhu58gcGhpw6puIGLhuqNuIMSR4buLbmggZOG6oW5nIGlkeCDEkcOjIGNobyIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDU5Cittc2dpZCAibWF4aW11bSBzaXplIG9mIGVhY2ggb3V0cHV0IHBhY2sgZmlsZSIKK21zZ3N0ciAia2PDrWggdGjGsOG7m2MgdOG7kWkgxJFhIGNobyB04bqtcCB0aW4gZ8OzaSDEkcaw4bujYyB04bqhbyIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDYxCittc2dpZCAiaWdub3JlIGJvcnJvd2VkIG9iamVjdHMgZnJvbSBhbHRlcm5hdGUgb2JqZWN0IHN0b3JlIgorbXNnc3RyICJi4buPIHF1YSBjw6FjIMSR4buRaSB0xrDhu6NuZyB2YXkgbcaw4bujbiB04burIGtobyDEkeG7kWkgdMaw4bujbmcgdGhheSB0aOG6vyIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDYzCittc2dpZCAiaWdub3JlIHBhY2tlZCBvYmplY3RzIgorbXNnc3RyICJi4buPIHF1YSBjw6FjIMSR4buRaSB0xrDhu6NuZyDEkcOzbmcgZ8OzaSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDY1Cittc2dpZCAibGltaXQgcGFjayB3aW5kb3cgYnkgb2JqZWN0cyIKK21zZ3N0ciAiZ2nhu5tpIGjhuqFuIGPhu61hIHPhu5UgxJHDs25nIGfDs2kgdGhlbyDEkeG7kWkgdMaw4bujbmciCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ2NworbXNnaWQgImxpbWl0IHBhY2sgd2luZG93IGJ5IG1lbW9yeSBpbiBhZGRpdGlvbiB0byBvYmplY3QgbGltaXQiCittc2dzdHIgImdp4bubaSBo4bqhbiBj4butYSBz4buVIMSRw7NuZyBnw7NpIHRoZW8gYuG7mSBuaOG7myBj4buZbmcgdGjDqm0gduG7m2kgZ2nhu5tpIGjhuqFuIMSR4buRaSB0xrDhu6NuZyIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDY5Cittc2dpZCAibWF4aW11bSBsZW5ndGggb2YgZGVsdGEgY2hhaW4gYWxsb3dlZCBpbiB0aGUgcmVzdWx0aW5nIHBhY2siCittc2dzdHIgIsSR4buZIGTDoGkgdOG7kWkgxJFhIGPhu6dhIGNodeG7l2kgbcOzYyB4w61jaCDigJxkZWx0YeKAnSDEkcaw4bujYyBwaMOpcCB0cm9uZyBnw7NpIGvhur90IHF14bqjIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NzEKK21zZ2lkICJyZXVzZSBleGlzdGluZyBkZWx0YXMiCittc2dzdHIgImTDuW5nIGzhuqFpIGPDoWMgZGVsdGEgc+G6tW4gY8OzIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NzMKK21zZ2lkICJyZXVzZSBleGlzdGluZyBvYmplY3RzIgorbXNnc3RyICJkw7luZyBs4bqhaSBjw6FjIMSR4buRaSB0xrDhu6NuZyBz4bq1biBjw7MiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ3NQorbXNnaWQgInVzZSBPRlNfREVMVEEgb2JqZWN0cyIKK21zZ3N0ciAiZMO5bmcgY8OhYyDEkeG7kWkgdMaw4bujbmcgT0ZTX0RFTFRBIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NzcKK21zZ2lkICJ1c2UgdGhyZWFkcyB3aGVuIHNlYXJjaGluZyBmb3IgYmVzdCBkZWx0YSBtYXRjaGVzIgorbXNnc3RyICJz4butIGThu6VuZyBjw6FjIHR1eeG6v24gdHLDrG5oIGtoaSB0w6xtIGtp4bq/bSBjaG8gY8OhYyBt4bqrdSBraOG7m3AgZGVsdGEgdOG7kXQgbmjhuqV0IgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NzkKK21zZ2lkICJkbyBub3QgY3JlYXRlIGFuIGVtcHR5IHBhY2sgb3V0cHV0IgorbXNnc3RyICJraMO0bmcgdGjhu4MgdOG6oW8ga+G6v3QgeHXhuqV0IGfDs2kgKHBhY2spIHRy4buRbmcgcuG7l25nIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0ODEKK21zZ2lkICJyZWFkIHJldmlzaW9uIGFyZ3VtZW50cyBmcm9tIHN0YW5kYXJkIGlucHV0IgorbXNnc3RyICIgxJHhu41jIHRoYW0gc+G7kSDigJxyZXZpc2lvbuKAnSB04burIHRoaeG6v3QgYuG7iyBuaOG6rXAgY2h14bqpbiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDgzCittc2dpZCAibGltaXQgdGhlIG9iamVjdHMgdG8gdGhvc2UgdGhhdCBhcmUgbm90IHlldCBwYWNrZWQiCittc2dzdHIgImdp4bubaSBo4bqhbiBjw6FjIMSR4buRaSB0xrDhu6NuZyB0aMOgbmggbmjhu69uZyBjw6FpIG3DoCBjaMO6bmcgduG6q24gY2jGsGEgxJHGsOG7o2MgxJHDs25nIGfDs2kiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ4NgorbXNnaWQgImluY2x1ZGUgb2JqZWN0cyByZWFjaGFibGUgZnJvbSBhbnkgcmVmZXJlbmNlIgorbXNnc3RyICJiYW8gZ+G7k20gY8OhYyDEkeG7kWkgdMaw4bujbmcgY8OzIHRo4buDIMSR4buNYyDEkcaw4bujYyB04burIGLhuqV0IGvhu7MgdGhhbSBjaGnhur91IG7DoG8iCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ4OQorbXNnaWQgImluY2x1ZGUgb2JqZWN0cyByZWZlcnJlZCBieSByZWZsb2cgZW50cmllcyIKK21zZ3N0ciAiYmFvIGfhu5NtIGPDoWMgxJHhu5FpIHTGsOG7o25nIMSRxrDhu6NjIHRoYW0gY2hp4bq/dSBi4bufaSBjw6FjIG3hu6VjIHJlZmxvZyIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDkyCittc2dpZCAib3V0cHV0IHBhY2sgdG8gc3Rkb3V0IgorbXNnc3RyICJ4deG6pXQgZ8OzaSByYSDEkeG6p3UgcmEgdGnDqnUgY2h14bqpbiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDk0Cittc2dpZCAiaW5jbHVkZSB0YWcgb2JqZWN0cyB0aGF0IHJlZmVyIHRvIG9iamVjdHMgdG8gYmUgcGFja2VkIgorbXNnc3RyICJiYW8gZ+G7k20gY8OhYyDEkeG7kWkgdMaw4bujbmcgdGhhbSBjaGnhur91IMSR4bq/biBjw6FjIMSR4buRaSB0xrDhu6NuZyDEkcaw4bujYyDEkcOzbmcgZ8OzaSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDk2Cittc2dpZCAia2VlcCB1bnJlYWNoYWJsZSBvYmplY3RzIgorbXNnc3RyICJnaeG7ryBs4bqhaSBjw6FjIMSR4buRaSB0xrDhu6NuZyBraMO0bmcgdGjhu4MgxJHhu41jIMSRxrDhu6NjIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0OTcgcGFyc2Utb3B0aW9ucy5oOjE0MQorbXNnaWQgInRpbWUiCittc2dzdHIgInRo4budaS1naWFuIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0OTgKK21zZ2lkICJ1bnBhY2sgdW5yZWFjaGFibGUgb2JqZWN0cyBuZXdlciB0aGFuIDx0aW1lPiIKK21zZ3N0ciAiIgorInjhuqMgbsOpbiAoZ+G7oSBraOG7j2kgZ8OzaSkgY8OhYyDEkeG7kWkgdMaw4bujbmcga2jDtG5nIHRo4buDIMSR4buNYyDEkcaw4bujYyBt4bubaSBoxqFuIDx0aOG7nWktZ2lhbj4iCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjUwMQorbXNnaWQgImNyZWF0ZSB0aGluIHBhY2tzIgorbXNnc3RyICJ04bqhbyBnw7NpIG5o4bq5IgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI1MDMKK21zZ2lkICJpZ25vcmUgcGFja3MgdGhhdCBoYXZlIGNvbXBhbmlvbiAua2VlcCBmaWxlIgorbXNnc3RyICJi4buPIHF1YSBjw6FjIGfDs2kgbcOgIG7DsyBjw7MgdOG6rXAgdGluIC5rZWVwIMSRaSBrw6htIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI1MDUKK21zZ2lkICJwYWNrIGNvbXByZXNzaW9uIGxldmVsIgorbXNnc3RyICJt4bupYyBuw6luIGfDs2kiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjUwNworbXNnaWQgImRvIG5vdCBoaWRlIGNvbW1pdHMgYnkgZ3JhZnRzIgorbXNnc3RyICJraMO0bmcg4bqpbiBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gYuG7n2kg4oCcZ3JhZnRz4oCdIgorCisjOiBidWlsdGluL3BhY2stcmVmcy5jOjYKK21zZ2lkICJnaXQgcGFjay1yZWZzIFtvcHRpb25zXSIKK21zZ3N0ciAiZ2l0IHBhY2stcmVmcyBbY8OhYy10w7l5LWNo4buNbl0iCisKKyM6IGJ1aWx0aW4vcGFjay1yZWZzLmM6MTQKK21zZ2lkICJwYWNrIGV2ZXJ5dGhpbmciCittc2dzdHIgIsSRw7NuZyBnw7NpIG3hu41pIHRo4bupIgorCisjOiBidWlsdGluL3BhY2stcmVmcy5jOjE1Cittc2dpZCAicHJ1bmUgbG9vc2UgcmVmcyAoZGVmYXVsdCkiCittc2dzdHIgInBydW5lIChj4bqvdCBj4buldCkgbmjhu69uZyB0aGFtIGNoaeG6v3UgKHJlZnMpIGLhu4sgbeG6pXQgKG3hurdjIMSR4buLbmgpIgorCisjOiBidWlsdGluL3BydW5lLXBhY2tlZC5jOjcKK21zZ2lkICJnaXQgcHJ1bmUtcGFja2VkIFstbnwtLWRyeS1ydW5dIFstcXwtLXF1aWV0XSIKK21zZ3N0ciAiZ2l0IHBydW5lLXBhY2tlZCBbLW58LS1kcnktcnVuXSBbLXF8LS1xdWlldF0iCisKKyM6IGJ1aWx0aW4vcHJ1bmUuYzoxMgorbXNnaWQgImdpdCBwcnVuZSBbLW5dIFstdl0gWy0tZXhwaXJlIDx0aW1lPl0gWy0tXSBbPGhlYWQ+Li4uXSIKK21zZ3N0ciAiZ2l0IHBydW5lIFstbl0gWy12XSBbLS1leHBpcmUgPHRo4budaS1naWFuPl0gWy0tXSBbPGhlYWQ+Li4uXSIKKworIzogYnVpbHRpbi9wcnVuZS5jOjEzMgorbXNnaWQgImRvIG5vdCByZW1vdmUsIHNob3cgb25seSIKK21zZ3N0ciAia2jDtG5nIGfhu6EgYuG7jywgY2jhu4kgaGnhu4NuIHRo4buLIgorCisjOiBidWlsdGluL3BydW5lLmM6MTMzCittc2dpZCAicmVwb3J0IHBydW5lZCBvYmplY3RzIgorbXNnc3RyICJiw6FvIGPDoW8gY8OhYyDEkeG7kWkgdMaw4bujbmcgxJHDoyBwcnVuZSIKKworIzogYnVpbHRpbi9wcnVuZS5jOjEzNgorbXNnaWQgImV4cGlyZSBvYmplY3RzIG9sZGVyIHRoYW4gPHRpbWU+IgorbXNnc3RyICJjw6FjIMSR4buRaSB0xrDhu6NuZyBo4bq/dCBo4bqhbiBjxakgaMahbiBraG/huqNuZyA8dGjhu51pIGdpYW4+IgorCisjOiBidWlsdGluL3B1c2guYzoxNAorbXNnaWQgImdpdCBwdXNoIFs8b3B0aW9ucz5dIFs8cmVwb3NpdG9yeT4gWzxyZWZzcGVjPi4uLl1dIgorbXNnc3RyICJnaXQgcHVzaCBbPGPDoWMtdMO5eS1jaOG7jW4+XSBbPGtoby1jaOG7qWE+IFs8cmVmc3BlYz4uLi5dXSIKIAogIzogYnVpbHRpbi9wdXNoLmM6NDUKIG1zZ2lkICJ0YWcgc2hvcnRoYW5kIHdpdGhvdXQgPHRhZz4iCkBAIC0zOTQ0LDcgKzczNjYsOCBAQAogIlRvIGNob29zZSBlaXRoZXIgb3B0aW9uIHBlcm1hbmVudGx5LCBzZWUgcHVzaC5kZWZhdWx0IGluICdnaXQgaGVscCBjb25maWcnLiIKIG1zZ3N0ciAiIgogIlxuIgotIsSQ4buDIGNo4buNbiBt4buXaSB0w7l5IGNo4buNbiBt4buZdCBjw6FjaCBj4buRIMSR4buLbmgsIHhlbSBwdXNoLmRlZmF1bHQgdHJvbmcgJ2dpdCBoZWxwIGNvbmZpZycuIgorIsSQ4buDIGNo4buNbiBt4buXaSB0w7l5IGNo4buNbiBt4buZdCBjw6FjaCBj4buRIMSR4buLbmgsIHhlbSBwdXNoLmRlZmF1bHQgdHJvbmcg4oCcZ2l0IGhlbHAgIgorImNvbmZpZ+KAnS4iCiAKICM6IGJ1aWx0aW4vcHVzaC5jOjEwMgogIywgYy1mb3JtYXQKQEAgLTM5NjAsOCArNzM4Myw4IEBACiAiICAgIGdpdCBwdXNoICVzICVzXG4iCiAiJXMiCiBtc2dzdHIgIiIKLSJOaMOhbmggZMOybmcgbmfGsOG7o2MgKHVwc3RyZWFtKSBj4bunYSBuaMOhbmggaGnhu4duIHThuqFpIGPhu6dhIGLhuqFuIGtow7RuZyBraOG7m3BcbiIKLSJ24bubaSB0w6puIGPhu6dhIG5ow6FuaCBoaeG7h24gdOG6oWkgY+G7p2EgYuG6oW4uICDEkOG7gyBwdXNoIMSR4bq/biBuaMOhbmggZMOybmcgbmfGsOG7o2NcbiIKKyJOaMOhbmggdGjGsOG7o25nIG5ndeG7k24gKHVwc3RyZWFtKSBj4bunYSBuaMOhbmggaGnhu4duIHThuqFpIGPhu6dhIGLhuqFuIGtow7RuZyBraOG7m3BcbiIKKyJ24bubaSB0w6puIGPhu6dhIG5ow6FuaCBoaeG7h24gdOG6oWkgY+G7p2EgYuG6oW4uICDEkOG7gyBwdXNoIMSR4bq/biBuaMOhbmggdGjGsOG7o25nIG5ndeG7k25cbiIKICJ0csOqbiBtw6F5IGNo4bunLCBz4butIGThu6VuZ1xuIgogIlxuIgogIiAgICBnaXQgcHVzaCAlcyBIRUFEOiVzXG4iCkBAIC0zOTk0LDE1ICs3NDE3LDE2IEBACiAiXG4iCiAiICAgIGdpdCBwdXNoIC0tc2V0LXVwc3RyZWFtICVzICVzXG4iCiBtc2dzdHIgIiIKLSJOaMOhbmggaGnhu4duIHThuqFpICVzIGtow7RuZyBjw7MgbmjDoW5oIGTDsm5nIG5nxrDhu6NjICh1cHN0cmVhbSkgbsOgby5cbiIKLSLEkOG7gyBwdXNoICjEkeG6qXkgbMOqbikgbmjDoW5oIGhp4buHbiB04bqhaSB2w6AgxJHhurd0IG3DoXkgY2jhu6cgbmjGsCBsw6AgZMOybmcgbmfGsOG7o2MgKHVwc3RyZWFtKSwgc+G7rSBk4bulbmdcbiIKKyJOaMOhbmggaGnhu4duIHThuqFpICVzIGtow7RuZyBjw7MgbmjDoW5oIHRoxrDhu6NuZyBuZ3Xhu5NuICh1cHN0cmVhbSkgbsOgby5cbiIKKyLEkOG7gyBwdXNoICjEkeG6qXkgbMOqbikgbmjDoW5oIGhp4buHbiB04bqhaSB2w6AgxJHhurd0IG3DoXkgY2jhu6cgbmjGsCBsw6AgdGjGsOG7o25nIG5ndeG7k24gIgorIih1cHN0cmVhbSksIHPhu60gZOG7pW5nXG4iCiAiXG4iCiAiICAgIGdpdCBwdXNoIC0tc2V0LXVwc3RyZWFtICVzICVzXG4iCiAKICM6IGJ1aWx0aW4vcHVzaC5jOjEzNgogIywgYy1mb3JtYXQKIG1zZ2lkICJUaGUgY3VycmVudCBicmFuY2ggJXMgaGFzIG11bHRpcGxlIHVwc3RyZWFtIGJyYW5jaGVzLCByZWZ1c2luZyB0byBwdXNoLiIKLW1zZ3N0ciAiTmjDoW5oIGhp4buHbiB04bqhaSAlcyBjw7MgxJFhIG5ow6FuaCBkw7JuZyBuZ8aw4bujYyAodXBzdHJlYW0pLCB04burIGNo4buRaSBwdXNoLiIKK21zZ3N0ciAiTmjDoW5oIGhp4buHbiB04bqhaSAlcyBjw7MgxJFhIG5ow6FuaCB0aMaw4bujbmcgbmd14buTbiAodXBzdHJlYW0pLCB04burIGNo4buRaSBwdXNoLiIKIAogIzogYnVpbHRpbi9wdXNoLmM6MTM5CiAjLCBjLWZvcm1hdApAQCAtNDAxMSwxNSArNzQzNSw1MiBAQAogInlvdXIgY3VycmVudCBicmFuY2ggJyVzJywgd2l0aG91dCB0ZWxsaW5nIG1lIHdoYXQgdG8gcHVzaFxuIgogInRvIHVwZGF0ZSB3aGljaCByZW1vdGUgYnJhbmNoLiIKIG1zZ3N0ciAiIgotIkLhuqFuIMSRYW5nIHB1c2ggKMSR4bqpeSBsw6puKSBtw6F5IGNo4bunICclcycsIG3DoCBuw7Mga2jDtG5nIHBo4bqjaSBsw6AgZMOybmcgbmfGsOG7o2MgKHVwc3RyZWFtKSBj4bunYVxuIgotIm5ow6FuaCBoaeG7h24gdOG6oWkgJyVzJyBj4bunYSBi4bqhbiwgbcOgIGtow7RuZyBiw6FvIGNobyB0w7RpIGJp4bq/dCBsw6AgY8OhaSBnw6wgxJHGsOG7o2MgcHVzaFxuIgorIkLhuqFuIMSRYW5nIHB1c2ggKMSR4bqpeSBsw6puKSBtw6F5IGNo4bunIOKAnCVz4oCdLCBtw6AgbsOzIGtow7RuZyBwaOG6o2kgbMOgIHRoxrDhu6NuZyBuZ3Xhu5NuICIKKyIodXBzdHJlYW0pIGPhu6dhXG4iCisibmjDoW5oIGhp4buHbiB04bqhaSDigJwlc+KAnSBj4bunYSBi4bqhbiwgbcOgIGtow7RuZyBiw6FvIGNobyB0w7RpIGJp4bq/dCBsw6AgY8OhaSBnw6wgxJHGsOG7o2MgcHVzaFxuIgogIsSR4buDIGPhuq1wIG5o4bqtdCBuaMOhbmggbcOheSBjaOG7pyBuw6BvLiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MTc0Ci1tc2dpZCAiWW91IGRpZG4ndCBzcGVjaWZ5IGFueSByZWZzcGVjcyB0byBwdXNoLCBhbmQgcHVzaC5kZWZhdWx0IGlzIFwibm90aGluZ1wiLiIKLW1zZ3N0ciAiQuG6oW4gxJHDoyBraMO0bmcgY2jhu4kgcmEgbeG7mXQgcmVmc3BlY3MgbsOgbyDEkeG7gyBwdXNoLCB2w6AgcHVzaC5kZWZhdWx0IGzDoCBcImtow7RuZyBsw6AgZ8OsIGPhuqNcIi4iCisjOiBidWlsdGluL3B1c2guYzoxNTEKK21zZ2lkICIiCisicHVzaC5kZWZhdWx0IGlzIHVuc2V0OyBpdHMgaW1wbGljaXQgdmFsdWUgaXMgY2hhbmdpbmcgaW5cbiIKKyJHaXQgMi4wIGZyb20gJ21hdGNoaW5nJyB0byAnc2ltcGxlJy4gVG8gc3F1ZWxjaCB0aGlzIG1lc3NhZ2VcbiIKKyJhbmQgbWFpbnRhaW4gdGhlIGN1cnJlbnQgYmVoYXZpb3IgYWZ0ZXIgdGhlIGRlZmF1bHQgY2hhbmdlcywgdXNlOlxuIgorIlxuIgorIiAgZ2l0IGNvbmZpZyAtLWdsb2JhbCBwdXNoLmRlZmF1bHQgbWF0Y2hpbmdcbiIKKyJcbiIKKyJUbyBzcXVlbGNoIHRoaXMgbWVzc2FnZSBhbmQgYWRvcHQgdGhlIG5ldyBiZWhhdmlvciBub3csIHVzZTpcbiIKKyJcbiIKKyIgIGdpdCBjb25maWcgLS1nbG9iYWwgcHVzaC5kZWZhdWx0IHNpbXBsZVxuIgorIlxuIgorIlNlZSAnZ2l0IGhlbHAgY29uZmlnJyBhbmQgc2VhcmNoIGZvciAncHVzaC5kZWZhdWx0JyBmb3IgZnVydGhlciAiCisiaW5mb3JtYXRpb24uXG4iCisiKHRoZSAnc2ltcGxlJyBtb2RlIHdhcyBpbnRyb2R1Y2VkIGluIEdpdCAxLjcuMTEuIFVzZSB0aGUgc2ltaWxhciBtb2RlXG4iCisiJ2N1cnJlbnQnIGluc3RlYWQgb2YgJ3NpbXBsZScgaWYgeW91IHNvbWV0aW1lcyB1c2Ugb2xkZXIgdmVyc2lvbnMgb2YgR2l0KSIKK21zZ3N0ciAiIgorImJp4bq/biBwdXNoLmRlZmF1bHQgY2jGsGEgxJHGsOG7o2MgxJHhurd0OyBnacOhIHRy4buLIG5n4bqnbSDEkeG7i25oIGPhu6dhIG7Ds1xuIgorIsSRw6MgxJHGsOG7o2MgdGhheSDEkeG7lWkgdHJvbmcgR2l0IDIuMCB04burIOKAnG1hdGNoaW5n4oCdIHRow6BuaCDigJxzaW1wbGXigJ0uXG4iCisixJDhu4Mga2jDtG5nIGhp4buDbiB0aOG7iyBuaOG6r2Mgbmjhu58gbsOgeSB2w6AgZHV5IHRyw6wgY8OhY2ggeOG7rSBsw70gc2F1XG4iCisibmjhu69uZyB0aGF5IMSR4buVaSBt4bq3YyDEkeG7i25oIG7DoHksIGjDo3kgY2jhuqF5IGzhu4duaDpcbiIKKyJcbiIKKyIgIGdpdCBjb25maWcgLS1nbG9iYWwgcHVzaC5kZWZhdWx0IG1hdGNoaW5nXG4iCisiXG4iCisixJDhu4Mga2jDtG5nIGhp4buDbiB0aOG7iyBuaOG6r2Mgbmjhu58gbsOgeSB2w6Agw6FwIGThu6VuZyBjw6FjaCB44butIGzDvSBt4bubaSwgaMOjeSBjaOG6oXkgbOG7h25oOlxuIgorIlxuIgorIiAgZ2l0IGNvbmZpZyAtLWdsb2JhbCBwdXNoLmRlZmF1bHQgc2ltcGxlXG4iCisiXG4iCisiWGVtIOKAnGdpdCBoZWxwIGNvbmZpZ+KAnSB2w6AgdMOsbSDEkeG6v24g4oCccHVzaC5kZWZhdWx04oCdIMSR4buDIGPDsyB0aMOqbSB0aMO0bmcgdGluLlxuIgorIihjaOG6vyDEkeG7mSDigJxzaW1wbGXigJ0gxJHGsOG7o2MgYuG6r3QgxJHhuqd1IHPhu60gZOG7pW5nIHThu6sgR2l0IDEuNy4xMS4gU+G7rSBk4bulbmcgY2jhur8gxJHhu5kgdMawxqFuZyAiCisidOG7sVxuIgorIuKAnGN1cnJlbnTigJ0gdGhheSB2w6wg4oCcc2ltcGxl4oCdIG7hur91IGLhuqFuIHRo4buJbmggdGhv4bqjbmcgcGjhuqNpIHPhu60gZOG7pW5nIGLhuqNuIEdpdCBjxakpIgogCi0jOiBidWlsdGluL3B1c2guYzoxODEKKyM6IGJ1aWx0aW4vcHVzaC5jOjE5OQorbXNnaWQgIiIKKyJZb3UgZGlkbid0IHNwZWNpZnkgYW55IHJlZnNwZWNzIHRvIHB1c2gsIGFuZCBwdXNoLmRlZmF1bHQgaXMgXCJub3RoaW5nXCIuIgorbXNnc3RyICIiCisiQuG6oW4gxJHDoyBraMO0bmcgY2jhu4kgcmEgbeG7mXQgcmVmc3BlY3MgbsOgbyDEkeG7gyBwdXNoLCB2w6AgcHVzaC5kZWZhdWx0IGzDoCBcImtow7RuZyBsw6AgIgorImfDrCBj4bqjXCIuIgorCisjOiBidWlsdGluL3B1c2guYzoyMDYKIG1zZ2lkICIiCiAiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgdGhlIHRpcCBvZiB5b3VyIGN1cnJlbnQgYnJhbmNoIGlzIGJlaGluZFxuIgogIml0cyByZW1vdGUgY291bnRlcnBhcnQuIE1lcmdlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLiAnZ2l0IHB1bGwnKVxuIgpAQCAtNDAyNywyMyArNzQ4OCwyOCBAQAogIlNlZSB0aGUgJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycgaW4gJ2dpdCBwdXNoIC0taGVscCcgZm9yIGRldGFpbHMuIgogbXNnc3RyICIiCiAiVmnhu4djIGPhuq1wIG5o4bqtdCBi4buLIHThu6sgY2jhu5FpIGLhu59pIHbDrCDEkeG6p3UgbcO6dCBj4bunYSBuaMOhbmggxJHGsOG7o2MgcHVzaCBu4bqxbSDEkeG6sW5nIHNhdSBi4buZXG4iCi0icGjhuq1uIHTGsMahbmcg4bupbmcgY+G7p2EgbcOheSBjaOG7py4gSMOyYSB0cuG7mW4gduG7m2kgY8OhYyB0aGF5IMSR4buVaSB04burIG3DoXkgY2jhu6cgKHYuZC4gJ2dpdCBwdWxsJylcbiIKKyJwaOG6rW4gdMawxqFuZyDhu6luZyBj4bunYSBtw6F5IGNo4bunLiBIw7JhIHRy4buZbiB24bubaSBjw6FjIHRoYXkgxJHhu5VpIHThu6sgbcOheSBjaOG7pyAodi5kLiDigJxnaXQgIgorInB1bGzigJ0pXG4iCiAidHLGsOG7m2Mga2hpIGzhuqFpIHB1c2ggbOG6p24gbuG7r2EuXG4iCi0iWGVtIHRyb25nIHBo4bqnbiAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyB0cm9uZyBu4buZaSBkdW5nIHThu6sgbOG7h25oICdnaXQgcHVzaCAtLWhlbHAnLiIKKyJYZW0gdHJvbmcgcGjhuqduIOKAnE5vdGUgYWJvdXQgZmFzdC1mb3J3YXJkc+KAnSB04burIGzhu4duaCDigJxnaXQgcHVzaCAtLWhlbHDigJ0gxJHhu4MgY8OzICIKKyJ0aMO0bmcgdGluIGNoaSB0aeG6v3QuIgogCi0jOiBidWlsdGluL3B1c2guYzoxODcKKyM6IGJ1aWx0aW4vcHVzaC5jOjIxMgogbXNnaWQgIiIKICJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSBhIHB1c2hlZCBicmFuY2ggdGlwIGlzIGJlaGluZCBpdHMgcmVtb3RlXG4iCiAiY291bnRlcnBhcnQuIElmIHlvdSBkaWQgbm90IGludGVuZCB0byBwdXNoIHRoYXQgYnJhbmNoLCB5b3UgbWF5IHdhbnQgdG9cbiIKLSJzcGVjaWZ5IGJyYW5jaGVzIHRvIHB1c2ggb3Igc2V0IHRoZSAncHVzaC5kZWZhdWx0JyBjb25maWd1cmF0aW9uXG4iCi0idmFyaWFibGUgdG8gJ2N1cnJlbnQnIG9yICd1cHN0cmVhbScgdG8gcHVzaCBvbmx5IHRoZSBjdXJyZW50IGJyYW5jaC4iCisic3BlY2lmeSBicmFuY2hlcyB0byBwdXNoIG9yIHNldCB0aGUgJ3B1c2guZGVmYXVsdCcgY29uZmlndXJhdGlvbiB2YXJpYWJsZVxuIgorInRvICdzaW1wbGUnLCAnY3VycmVudCcgb3IgJ3Vwc3RyZWFtJyB0byBwdXNoIG9ubHkgdGhlIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAiIgogIlZp4buHYyBj4bqtcCBuaOG6rXQgYuG7iyB04burIGNo4buRaSBi4bufaSB2w6wgxJHhuqd1IG3DunQgY+G7p2EgbmjDoW5oIMSRxrDhu6NjIHB1c2ggbuG6sW0gxJHhurFuZyBzYXUgYuG7mVxuIgotInBo4bqtbiB0xrDGoW5nIOG7qW5nIGPhu6dhIG3DoXkgY2jhu6cuIE7hur91IGLhuqFuIGtow7RuZyBjw7Mgw70gxJHhu4tuaCBwdXNoIG5ow6FuaCDEkcOzLCBi4bqhbiBjw7MgbOG6vSBtdeG7kW5cbiIKLSJjaOG7iSDEkeG7i25oIGPDoWMgbmjDoW5oIMSR4buDIHB1c2ggaG/hurd0IGzDoCDEkeG6t3QgbuG7mWkgZHVuZyBjaG8gYmnhur9uIGPhuqV1IGjDrG5oICdwdXNoLmRlZmF1bHQnXG4iCi0idGjDoG5oICdjdXJyZW50JyBob+G6t2MgJ3Vwc3RyZWFtJyDEkeG7gyBwdXNoIGNo4buJIG5ow6FuaCBoaeG7h24gaMOgbmggbcOgIHRow7RpLiIKKyJwaOG6rW4gdMawxqFuZyDhu6luZyBj4bunYSBtw6F5IGNo4bunLiBO4bq/dSBi4bqhbiBraMO0bmcgY8OzIMO9IMSR4buLbmggcHVzaCBuaMOhbmggxJHDsywgYuG6oW4gY8OzIGzhur0gIgorIm114buRblxuIgorImNo4buJIMSR4buLbmggY8OhYyBuaMOhbmggxJHhu4MgcHVzaCBob+G6t3QgbMOgIMSR4bq3dCBu4buZaSBkdW5nIGNobyBiaeG6v24gY+G6pXUgaMOsbmgg4oCccHVzaC4iCisiZGVmYXVsdOKAnVxuIgorInRow6BuaCDigJxzaW1wbGXigJ0sIOKAnGN1cnJlbnTigJ0gaG/hurdjIOKAnHVwc3RyZWFt4oCdIMSR4buDIGNo4buJIHB1c2ggbmjDoW5oIGhp4buHbiBow6BuaCBtw6AgIgorInRow7RpLiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MTkzCisjOiBidWlsdGluL3B1c2guYzoyMTgKIG1zZ2lkICIiCiAiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgYSBwdXNoZWQgYnJhbmNoIHRpcCBpcyBiZWhpbmQgaXRzIHJlbW90ZVxuIgogImNvdW50ZXJwYXJ0LiBDaGVjayBvdXQgdGhpcyBicmFuY2ggYW5kIG1lcmdlIHRoZSByZW1vdGUgY2hhbmdlc1xuIgpAQCAtNDA1MSwyOSArNzUxNyw2NCBAQAogIlNlZSB0aGUgJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycgaW4gJ2dpdCBwdXNoIC0taGVscCcgZm9yIGRldGFpbHMuIgogbXNnc3RyICIiCiAiVmnhu4djIGPhuq1wIG5o4bqtdCBi4buLIHThu6sgY2jhu5FpIGLhu59pIHbDrCDEkeG6p3UgbcO6dCBj4bunYSBuaMOhbmggxJHGsOG7o2MgcHVzaCBu4bqxbSDEkeG6sW5nIHNhdSBi4buZXG4iCi0icGjhuq1uIHTGsMahbmcg4bupbmcgY+G7p2EgbcOheSBjaOG7py4gQ2hlY2tvdSBuaMOhbmggbsOgeSB2w6AgaMOyYSB0cuG7mW4gduG7m2kgY8OhYyB0aGF5IMSR4buVaSB04burIG3DoXkgY2jhu6dcbiIKLSIodi5kLiAnZ2l0IHB1bGwnKSB0csaw4bubYyBraGkgbOG6oWkgcHVzaCBs4bqnbiBu4buvYS5cbiIKLSJYZW0gdHJvbmcgcGjhuqduICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIHRyb25nIG7hu5lpIGR1bmcgdOG7qyBs4buHbmggJ2dpdCBwdXNoIC0taGVscCcuIgorInBo4bqtbiB0xrDGoW5nIOG7qW5nIGPhu6dhIG3DoXkgY2jhu6cuIENoZWNrb3UgbmjDoW5oIG7DoHkgdsOgIGjDsmEgdHLhu5luIHbhu5tpIGPDoWMgdGhheSDEkeG7lWkgIgorInThu6sgbcOheSBjaOG7p1xuIgorIih2LmQuIOKAnGdpdCBwdWxs4oCdKSB0csaw4bubYyBraGkgbOG6oWkgcHVzaCBs4bqnbiBu4buvYS5cbiIKKyJYZW0gdHJvbmcgcGjhuqduIOKAnE5vdGUgYWJvdXQgZmFzdC1mb3J3YXJkc+KAnSB04burIGzhu4duaCDigJxnaXQgcHVzaCAtLWhlbHDigJ0gxJHhu4MgY8OzICIKKyJ0aMO0bmcgdGluIGNoaSB0aeG6v3QuIgogCi0jOiBidWlsdGluL3B1c2guYzoyMzMKKyM6IGJ1aWx0aW4vcHVzaC5jOjIyNAorbXNnaWQgIiIKKyJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgcmVtb3RlIGNvbnRhaW5zIHdvcmsgdGhhdCB5b3UgZG9cbiIKKyJub3QgaGF2ZSBsb2NhbGx5LiBUaGlzIGlzIHVzdWFsbHkgY2F1c2VkIGJ5IGFub3RoZXIgcmVwb3NpdG9yeSBwdXNoaW5nXG4iCisidG8gdGhlIHNhbWUgcmVmLiBZb3UgbWF5IHdhbnQgdG8gZmlyc3QgbWVyZ2UgdGhlIHJlbW90ZSBjaGFuZ2VzIChlLmcuLFxuIgorIidnaXQgcHVsbCcpIGJlZm9yZSBwdXNoaW5nIGFnYWluLlxuIgorIlNlZSB0aGUgJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycgaW4gJ2dpdCBwdXNoIC0taGVscCcgZm9yIGRldGFpbHMuIgorbXNnc3RyICIiCisiVmnhu4djIGPhuq1wIG5o4bqtdCBi4buLIHThu6sgY2jhu5FpIGLhu59pIHbDrCBtw6F5IGNo4bunIGPDsyBjaOG7qWEgY8O0bmcgdmnhu4djIG3DoCBi4bqhbiBraMO0bmdcbiIKKyJjw7Mg4bufIG3DoXkgbuG7mWkgYuG7mSBj4bunYSBtw6xuaC4gTOG7l2kgbsOgeSB0aMaw4budbmcgY8OzIG5ndXnDqm4gbmjDom4gYuG7n2kga2hvIGtow6FjIMSR4bqpeSBk4buvICIKKyJsaeG7h3UgbMOqblxuIgorImPDuW5nIG3hu5l0IHRoYW0gY2hp4bq/dS4gQuG6oW4gY8OzIGzhur0gbXXhu5FuIGjDsmEgdHLhu5luIHbhu5tpIGPDoWMgdGhheSDEkeG7lWkgdOG7qyBtw6F5IGNo4bunXG4iCisiKHYuZC4g4oCcZ2l0IHB1bGzigJ0pIHRyxrDhu5tjIGtoaSBs4bqhaSBwdXNoIGzhuqduIG7hu69hLlxuIgorIlhlbSB0cm9uZyBwaOG6p24g4oCcTm90ZSBhYm91dCBmYXN0LWZvcndhcmRz4oCdIHThu6sgbOG7h25oIOKAnGdpdCBwdXNoIC0taGVscOKAnSDEkeG7gyBjw7MgIgorInRow7RuZyB0aW4gY2hpIHRp4bq/dC4iCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjIzMQorbXNnaWQgIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIHRoZSB0YWcgYWxyZWFkeSBleGlzdHMgaW4gdGhlIHJlbW90ZS4iCittc2dzdHIgIlZp4buHYyBj4bqtcCBuaOG6rXQgYuG7iyB04burIGNo4buRaSBi4bufaSB2w6wgdGjhursgxJHDoyBz4bq1biBjw7MgdOG7qyB0csaw4bubYyB0csOqbiBtw6F5IGNo4bunLiIKKworIzogYnVpbHRpbi9wdXNoLmM6MjM0Cittc2dpZCAiIgorIllvdSBjYW5ub3QgdXBkYXRlIGEgcmVtb3RlIHJlZiB0aGF0IHBvaW50cyBhdCBhIG5vbi1jb21taXQgb2JqZWN0LFxuIgorIm9yIHVwZGF0ZSBhIHJlbW90ZSByZWYgdG8gbWFrZSBpdCBwb2ludCBhdCBhIG5vbi1jb21taXQgb2JqZWN0LFxuIgorIndpdGhvdXQgdXNpbmcgdGhlICctLWZvcmNlJyBvcHRpb24uXG4iCittc2dzdHIgIiIKKyJLaMO0bmcgdGjhu4MgY+G6rXAgbmjhuq10IG3hu5l0IHRoYW0gY2hp4bq/dSB0csOqbiBtw6F5IGNo4bunIG3DoCBuw7MgY2jhu4kgxJHhur9uIMSR4buRaSB0xrDhu6NuZyAiCisia2jDtG5nXG4iCisicGjhuqNpIGNodXnhu4NuIGdpYW8sIGhv4bq3YyBj4bqtcCBuaOG6rXQgbeG7mXQgdGhhbSBjaGnhur91IG3DoXkgY2jhu6cgxJHhu4MgbsOzIGNo4buJIMSR4bq/biDEkeG7kWkgIgorInTGsOG7o25nXG4iCisia2jDtG5nIHBo4bqjaSBjaHV54buDbiBnaWFvLCBtw6Aga2jDtG5nIHPhu60gZOG7pW5nIHTDuXkgY2jhu41uIOKAnC0tZm9yY2XigJ0uXG4iCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjI5NAogIywgYy1mb3JtYXQKIG1zZ2lkICJQdXNoaW5nIHRvICVzXG4iCiBtc2dzdHIgIsSQYW5nIHB1c2ggKMSR4bqpeSkgbMOqbiAlc1xuIgogCi0jOiBidWlsdGluL3B1c2guYzoyMzcKKyM6IGJ1aWx0aW4vcHVzaC5jOjI5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gcHVzaCBzb21lIHJlZnMgdG8gJyVzJyIKLW1zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIHB1c2ggKMSR4bqpeSBsw6puKSBt4buZdCBz4buRIHRoYW0gY2hp4bq/dSAocmVmKSDEkeG6v24gJyVzJyIKK21zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIHB1c2ggKMSR4bqpeSBsw6puKSBt4buZdCBz4buRIHRoYW0gY2hp4bq/dSAocmVmKSDEkeG6v24g4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI2OQorIzogYnVpbHRpbi9wdXNoLmM6MzMxCiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCByZXBvc2l0b3J5ICclcyciCi1tc2dzdHIgInJlcG9zaXRvcnkgKGtobykgc2FpICclcyciCittc2dzdHIgInJlcG9zaXRvcnkgKGtobykgc2FpIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL3B1c2guYzoyNzAKKyM6IGJ1aWx0aW4vcHVzaC5jOjMzMgogbXNnaWQgIiIKICJObyBjb25maWd1cmVkIHB1c2ggZGVzdGluYXRpb24uXG4iCi0iRWl0aGVyIHNwZWNpZnkgdGhlIFVSTCBmcm9tIHRoZSBjb21tYW5kLWxpbmUgb3IgY29uZmlndXJlIGEgcmVtb3RlIHJlcG9zaXRvcnkgdXNpbmdcbiIKKyJFaXRoZXIgc3BlY2lmeSB0aGUgVVJMIGZyb20gdGhlIGNvbW1hbmQtbGluZSBvciBjb25maWd1cmUgYSByZW1vdGUgIgorInJlcG9zaXRvcnkgdXNpbmdcbiIKICJcbiIKICIgICAgZ2l0IHJlbW90ZSBhZGQgPG5hbWU+IDx1cmw+XG4iCiAiXG4iCkBAIC00MDkwLDM0ICs3NTkxLDI0NSBAQAogIlxuIgogIiAgICBnaXQgcHVzaCA8dMOqbj5cbiIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mjg1CisjOiBidWlsdGluL3B1c2guYzozNDcKIG1zZ2lkICItLWFsbCBhbmQgLS10YWdzIGFyZSBpbmNvbXBhdGlibGUiCiBtc2dzdHIgIi0tYWxsIHbDoCAtLXRhZ3MgeHVuZyBraOG6r2MgbmhhdSIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mjg2CisjOiBidWlsdGluL3B1c2guYzozNDgKIG1zZ2lkICItLWFsbCBjYW4ndCBiZSBjb21iaW5lZCB3aXRoIHJlZnNwZWNzIgogbXNnc3RyICItLWFsbCBraMO0bmcgdGjhu4MgxJHGsOG7o2MgdOG7lSBo4bujcCBjw7luZyB24bubaSByZWZzcGVjcyIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjkxCisjOiBidWlsdGluL3B1c2guYzozNTMKIG1zZ2lkICItLW1pcnJvciBhbmQgLS10YWdzIGFyZSBpbmNvbXBhdGlibGUiCiBtc2dzdHIgIi0tbWlycm9yIHbDoCAtLXRhZ3MgeHVuZyBraOG6r2MgbmhhdSIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjkyCisjOiBidWlsdGluL3B1c2guYzozNTQKIG1zZ2lkICItLW1pcnJvciBjYW4ndCBiZSBjb21iaW5lZCB3aXRoIHJlZnNwZWNzIgogbXNnc3RyICItLW1pcnJvciBraMO0bmcgdGjhu4MgxJHGsOG7o2MgdOG7lSBo4bujcCBjw7luZyB24bubaSByZWZzcGVjcyIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mjk3CisjOiBidWlsdGluL3B1c2guYzozNTkKIG1zZ2lkICItLWFsbCBhbmQgLS1taXJyb3IgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLS1hbGwgdsOgIC0tbWlycm9yIHh1bmcga2jhuq9jIG5oYXUiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM4NQorIzogYnVpbHRpbi9wdXNoLmM6NDE5Cittc2dpZCAicmVwb3NpdG9yeSIKK21zZ3N0ciAia2hvIgorCisjOiBidWlsdGluL3B1c2guYzo0MjAKK21zZ2lkICJwdXNoIGFsbCByZWZzIgorbXNnc3RyICJwdXNoIHThuqV0IGPhuqMgcmVmcyIKKworIzogYnVpbHRpbi9wdXNoLmM6NDIxCittc2dpZCAibWlycm9yIGFsbCByZWZzIgorbXNnc3RyICJtaXJyb3IgdOG6pXQgY+G6oyByZWZzIgorCisjOiBidWlsdGluL3B1c2guYzo0MjMKK21zZ2lkICJkZWxldGUgcmVmcyIKK21zZ3N0ciAieMOzYSByZWZzIgorCisjOiBidWlsdGluL3B1c2guYzo0MjQKK21zZ2lkICJwdXNoIHRhZ3MgKGNhbid0IGJlIHVzZWQgd2l0aCAtLWFsbCBvciAtLW1pcnJvcikiCittc2dzdHIgIiIKKyJjw6FjIHRo4bq7IHB1c2ggKGtow7RuZyB0aOG7gyBz4butIGThu6VuZyBjw7luZyB24bubaSBjw6FjIHTDuXkgY2jhu41uIC0tYWxsIGhheSAtLW1pcnJvcikiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyNworbXNnaWQgImZvcmNlIHVwZGF0ZXMiCittc2dzdHIgIsOpcCBideG7mWMgY+G6rXAgbmjhuq10IgorCisjOiBidWlsdGluL3B1c2guYzo0MjgKK21zZ2lkICJjaGVjayIKK21zZ3N0ciAia2nhu4NtIHRyYSIKKworIzogYnVpbHRpbi9wdXNoLmM6NDI5Cittc2dpZCAiY29udHJvbCByZWN1cnNpdmUgcHVzaGluZyBvZiBzdWJtb2R1bGVzIgorbXNnc3RyICLEkWnhu4F1IGtoaeG7g24gdmnhu4djIMSR4bqpeSBsw6puIChwdXNoKSDEkeG7hyBxdWkgY+G7p2EgbcO0LcSRdW4tY29uIgorCisjOiBidWlsdGluL3B1c2guYzo0MzEKK21zZ2lkICJ1c2UgdGhpbiBwYWNrIgorbXNnc3RyICJ04bqhbyBnw7NpIG5o4bq5IgorCisjOiBidWlsdGluL3B1c2guYzo0MzIgYnVpbHRpbi9wdXNoLmM6NDMzCittc2dpZCAicmVjZWl2ZSBwYWNrIHByb2dyYW0iCittc2dzdHIgIm5o4bqtbiB24buBIGNoxrDGoW5nIHRyw6xuaCBwYWNrIgorCisjOiBidWlsdGluL3B1c2guYzo0MzQKK21zZ2lkICJzZXQgdXBzdHJlYW0gZm9yIGdpdCBwdWxsL3N0YXR1cyIKK21zZ3N0ciAixJHhurd0IHRoxrDhu6NuZyBuZ3Xhu5NuICh1cHN0cmVhbSkgY2hvIGdpdCBwdWxsL3N0YXR1cyIKKworIzogYnVpbHRpbi9wdXNoLmM6NDM3Cittc2dpZCAicHJ1bmUgbG9jYWxseSByZW1vdmVkIHJlZnMiCittc2dzdHIgInBydW5lIChj4bqvdCBj4buldCkgbmjhu69uZyB0aGFtIGNoaeG6v3UgKHJlZnMpIGLhu4sgZ+G7oSBi4buPIgorCisjOiBidWlsdGluL3B1c2guYzo0MzkKK21zZ2lkICJieXBhc3MgcHJlLXB1c2ggaG9vayIKK21zZ3N0ciAidsOybmcgcXVhIOKAnHByZS1wdXNoIGhvb2vigJ0iCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ0MAorbXNnaWQgInB1c2ggbWlzc2luZyBidXQgcmVsZXZhbnQgdGFncyIKK21zZ3N0ciAicHVzaCBi4buLIHRyxrDhu6N0IG5oxrBuZyBjw6FjIHRo4bq7IHRow61jaCBo4bujcCIKKworIzogYnVpbHRpbi9wdXNoLmM6NDUwCiBtc2dpZCAiLS1kZWxldGUgaXMgaW5jb21wYXRpYmxlIHdpdGggLS1hbGwsIC0tbWlycm9yIGFuZCAtLXRhZ3MiCiBtc2dzdHIgIi0tZGVsZXRlIGzDoCB4dW5nIGto4bqvYyB24bubaSBjw6FjIHTDuXkgY2jhu41uIC0tYWxsLCAtLW1pcnJvciB2w6AgLS10YWdzIgogCi0jOiBidWlsdGluL3B1c2guYzozODcKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ1MgogbXNnaWQgIi0tZGVsZXRlIGRvZXNuJ3QgbWFrZSBzZW5zZSB3aXRob3V0IGFueSByZWZzIgogbXNnc3RyICItLWRlbGV0ZSBraMO0bmcgaOG7o3AgbMO9IG7hur91IGtow7RuZyBjw7MgYuG6pXQga+G7syB0aGFtIGNoaeG6v3UgKHJlZnMpIG7DoG8iCiAKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MzYKK21zZ2lkICIiCisiZ2l0IHJlYWQtdHJlZSBbWy1tIFstLXRyaXZpYWxdIFstLWFnZ3Jlc3NpdmVdIHwgLS1yZXNldCB8IC0tcHJlZml4PTxwcmVmaXg+XSAiCisiWy11IFstLWV4Y2x1ZGUtcGVyLWRpcmVjdG9yeT08Z2l0aWdub3JlPl0gfCAtaV1dIFstLW5vLXNwYXJzZS1jaGVja291dF0gWy0tIgorImluZGV4LW91dHB1dD08ZmlsZT5dICgtLWVtcHR5IHwgPHRyZWUtaXNoMT4gWzx0cmVlLWlzaDI+IFs8dHJlZS1pc2gzPl1dKSIKK21zZ3N0ciAiIgorImdpdCByZWFkLXRyZWUgW1stbSBbLS10cml2aWFsXSBbLS1hZ2dyZXNzaXZlXSB8IC0tcmVzZXQgfCAtLXByZWZpeD08dGnhu4FuLSIKKyJ04buRPl0gWy11IFstLWV4Y2x1ZGUtcGVyLWRpcmVjdG9yeT08Z2l0aWdub3JlPl0gfCAtaV1dIFstLW5vLXNwYXJzZS1jaGVja291dF0gIgorIlstLWluZGV4LW91dHB1dD08dOG6rXAtdGluPl0gKC0tZW1wdHkgfCA8dHJlZS1pc2gxPiBbPHRyZWUtaXNoMj4gWzx0cmVlLSIKKyJpc2gzPl1dKSIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMDgKK21zZ2lkICJ3cml0ZSByZXN1bHRpbmcgaW5kZXggdG8gPGZpbGU+IgorbXNnc3RyICJnaGkgbeG7pWMgbOG7pWMga+G6v3QgcXXhuqMgdsOgbyA8dOG6rXAtdGluPiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTEKK21zZ2lkICJvbmx5IGVtcHR5IHRoZSBpbmRleCIKK21zZ3N0ciAiY2jhu4kgduG7m2kgYuG6o25nIG3hu6VjIGzhu6VjIHRy4buRbmcgcuG7l25nIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjExMworbXNnaWQgIk1lcmdpbmciCittc2dzdHIgIkjDsmEgdHLhu5luIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjExNQorbXNnaWQgInBlcmZvcm0gYSBtZXJnZSBpbiBhZGRpdGlvbiB0byBhIHJlYWQiCittc2dzdHIgInRo4buxYyBoaeG7h24gbeG7mXQgaMOyYSB0cuG7mW4gdGjDqm0gdsOgbyB2aeG7h2MgxJHhu41jIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjExNworbXNnaWQgIjMtd2F5IG1lcmdlIGlmIG5vIGZpbGUgbGV2ZWwgbWVyZ2luZyByZXF1aXJlZCIKK21zZ3N0ciAiIgorImjDsmEgdHLhu5luIGtp4buDdSDigJwzLXdheeKAnSBu4bq/dSBraMO0bmcgY8OzIHThuq1wIHRpbiBt4bupYyBow7JhIHRy4buZbiBuw6BvIMSRxrDhu6NjIHnDqnUgY+G6p3UgIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjExOQorbXNnaWQgIjMtd2F5IG1lcmdlIGluIHByZXNlbmNlIG9mIGFkZHMgYW5kIHJlbW92ZXMiCittc2dzdHIgImjDsmEgdHLhu5luIDMtd2F5IHRyb25nIHPhu7EgaGnhu4duIGRp4buHbiBj4bunYSDigJxhZGRz4oCdIHbDoCDigJxyZW1vdmVz4oCdIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyMQorbXNnaWQgInNhbWUgYXMgLW0sIGJ1dCBkaXNjYXJkIHVubWVyZ2VkIGVudHJpZXMiCittc2dzdHIgImdp4buRbmcgduG7m2kgLW0sIG5oxrBuZyBi4buPIHF1YSBjw6FjIG3hu6VjIGNoxrBhIMSRxrDhu6NjIGjDsmEgdHLhu5luIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyMgorbXNnaWQgIjxzdWJkaXJlY3Rvcnk+LyIKK21zZ3N0ciAiPHRoxrAtbeG7pWMtY29uPi8iCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTIzCittc2dpZCAicmVhZCB0aGUgdHJlZSBpbnRvIHRoZSBpbmRleCB1bmRlciA8c3ViZGlyZWN0b3J5Pi8iCittc2dzdHIgIsSR4buNYyBjw6J5IHbDoG8gdHJvbmcgYuG6o25nIG3hu6VjIGzhu6VjIGTGsOG7m2kgPHRoxrBfbeG7pWNfY29uPi8iCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTI2Cittc2dpZCAidXBkYXRlIHdvcmtpbmcgdHJlZSB3aXRoIG1lcmdlIHJlc3VsdCIKK21zZ3N0ciAiY+G6rXAgbmjhuq10IGPDonkgbMOgbSB2aeG7h2MgduG7m2kga+G6v3QgcXXhuqMgaMOyYSB0cuG7mW4iCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTI4Cittc2dpZCAiZ2l0aWdub3JlIgorbXNnc3RyICJnaXRpZ25vcmUiCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTI5Cittc2dpZCAiYWxsb3cgZXhwbGljaXRseSBpZ25vcmVkIGZpbGVzIHRvIGJlIG92ZXJ3cml0dGVuIgorbXNnc3RyICJjaG8gcGjDqXAgY8OhYyB04bqtcCB0aW4gcsO1IHLDoG5nIGLhu4sgbOG7nSDEkWkgxJHGsOG7o2MgZ2hpIMSRw6giCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTMyCittc2dpZCAiZG9uJ3QgY2hlY2sgdGhlIHdvcmtpbmcgdHJlZSBhZnRlciBtZXJnaW5nIgorbXNnc3RyICJraMO0bmcga2nhu4NtIHRyYSBjw6J5IGzDoG0gdmnhu4djIHNhdSBow7JhIHRy4buZbiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzMKK21zZ2lkICJkb24ndCB1cGRhdGUgdGhlIGluZGV4IG9yIHRoZSB3b3JrIHRyZWUiCittc2dzdHIgImtow7RuZyBj4bqtcCBuaOG6rXQgYuG6o25nIG3hu6VjIGzhu6VjIGhheSBjw6J5IGzDoG0gdmnhu4djIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzNQorbXNnaWQgInNraXAgYXBwbHlpbmcgc3BhcnNlIGNoZWNrb3V0IGZpbHRlciIKK21zZ3N0ciAiYuG7jyBxdWEgw6FwIGThu6VuZyBi4buZIGzhu41jIGzhuqV5IHJhIChjaGVja291dCkgdGjGsGEgdGjhu5t0IgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzNworbXNnaWQgImRlYnVnIHVucGFjay10cmVlcyIKK21zZ3N0ciAiZ+G7oSBs4buXaSB1bnBhY2stdHJlZXMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTEKK21zZ2lkICJnaXQgcmVtb3RlIFstdiB8IC0tdmVyYm9zZV0iCittc2dzdHIgImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxMgorbXNnaWQgIiIKKyJnaXQgcmVtb3RlIGFkZCBbLXQgPGJyYW5jaD5dIFstbSA8bWFzdGVyPl0gWy1mXSBbLS10YWdzfC0tbm8tdGFnc10gWy0tIgorIm1pcnJvcj08ZmV0Y2h8cHVzaD5dIDxuYW1lPiA8dXJsPiIKK21zZ3N0ciAiIgorImdpdCByZW1vdGUgYWRkIFstdCA8bmjDoW5oPl0gWy1tIDxtYXN0ZXI+XSBbLWZdIFstLXRhZ3N8LS1uby10YWdzXSBbLS0iCisibWlycm9yPTxmZXRjaHxwdXNoPl0gPHTDqm4+IDx1cmw+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjEzIGJ1aWx0aW4vcmVtb3RlLmM6MzIKK21zZ2lkICJnaXQgcmVtb3RlIHJlbmFtZSA8b2xkPiA8bmV3PiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSByZW5hbWUgPHTDqm4tY8WpPiA8dMOqbi1t4bubaT4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQgYnVpbHRpbi9yZW1vdGUuYzozNworbXNnaWQgImdpdCByZW1vdGUgcmVtb3ZlIDxuYW1lPiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSByZW1vdmUgPHTDqm4+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE1IGJ1aWx0aW4vcmVtb3RlLmM6NDIKK21zZ2lkICJnaXQgcmVtb3RlIHNldC1oZWFkIDxuYW1lPiAoLWEgfCAtZCB8IDxicmFuY2g+KSIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBzZXQtaGVhZCA8dMOqbj4gKC1hIHwgLWQgfCA8bmjDoW5oPikiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTYKK21zZ2lkICJnaXQgcmVtb3RlIFstdiB8IC0tdmVyYm9zZV0gc2hvdyBbLW5dIDxuYW1lPiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBbLXYgfCAtLXZlcmJvc2VdIHNob3cgWy1uXSA8dMOqbj4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTcKK21zZ2lkICJnaXQgcmVtb3RlIHBydW5lIFstbiB8IC0tZHJ5LXJ1bl0gPG5hbWU+IgorbXNnc3RyICJnaXQgcmVtb3RlIHBydW5lIFstbiB8IC0tZHJ5LXJ1bl0gPHTDqm4+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE4Cittc2dpZCAiIgorImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSB1cGRhdGUgWy1wIHwgLS1wcnVuZV0gWyg8Z3JvdXA+IHwgPHJlbW90ZT4pLi4uXSIKK21zZ3N0ciAiIgorImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSB1cGRhdGUgWy1wIHwgLS1wcnVuZV0gWyg8bmjDs20+IHwgPG3DoXktY2jhu6c+KS4uLl0iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTkKK21zZ2lkICJnaXQgcmVtb3RlIHNldC1icmFuY2hlcyBbLS1hZGRdIDxuYW1lPiA8YnJhbmNoPi4uLiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBzZXQtYnJhbmNoZXMgWy0tYWRkXSA8dMOqbj4gPG5ow6FuaD4uLi4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MjAgYnVpbHRpbi9yZW1vdGUuYzo2OAorbXNnaWQgImdpdCByZW1vdGUgc2V0LXVybCBbLS1wdXNoXSA8bmFtZT4gPG5ld3VybD4gWzxvbGR1cmw+XSIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBzZXQtdXJsIFstLXB1c2hdIDx0w6puPiA8dXJsLW3hu5tpPiBbPHVybC1jxak+XSIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoyMSBidWlsdGluL3JlbW90ZS5jOjY5Cittc2dpZCAiZ2l0IHJlbW90ZSBzZXQtdXJsIC0tYWRkIDxuYW1lPiA8bmV3dXJsPiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBzZXQtdXJsIC0tYWRkIDx0w6puPiA8dXJsLW3hu5tpPiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoyMiBidWlsdGluL3JlbW90ZS5jOjcwCittc2dpZCAiZ2l0IHJlbW90ZSBzZXQtdXJsIC0tZGVsZXRlIDxuYW1lPiA8dXJsPiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBzZXQtdXJsIC0tZGVsZXRlIDx0w6puPiA8dXJsPiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoyNworbXNnaWQgImdpdCByZW1vdGUgYWRkIFs8b3B0aW9ucz5dIDxuYW1lPiA8dXJsPiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBhZGQgWzxjw6FjLXTDuXktY2jhu41uPl0gPHTDqm4+IDx1cmw+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjQ3Cittc2dpZCAiZ2l0IHJlbW90ZSBzZXQtYnJhbmNoZXMgPG5hbWU+IDxicmFuY2g+Li4uIgorbXNnc3RyICJnaXQgcmVtb3RlIHNldC1icmFuY2hlcyA8dMOqbj4gPG5ow6FuaD4uLi4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NDgKK21zZ2lkICJnaXQgcmVtb3RlIHNldC1icmFuY2hlcyAtLWFkZCA8bmFtZT4gPGJyYW5jaD4uLi4iCittc2dzdHIgImdpdCByZW1vdGUgc2V0LWJyYW5jaGVzIC0tYWRkIDx0w6puPiA8bmjDoW5oPi4uLiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzo1MworbXNnaWQgImdpdCByZW1vdGUgc2hvdyBbPG9wdGlvbnM+XSA8bmFtZT4iCittc2dzdHIgImdpdCByZW1vdGUgc2hvdyBbPGPDoWMtdMO5eS1jaOG7jW4+XSA8dMOqbj4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NTgKK21zZ2lkICJnaXQgcmVtb3RlIHBydW5lIFs8b3B0aW9ucz5dIDxuYW1lPiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBwcnVuZSBbPGPDoWMtdMO5eS1jaOG7jW4+XSA8dMOqbj4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NjMKK21zZ2lkICJnaXQgcmVtb3RlIHVwZGF0ZSBbPG9wdGlvbnM+XSBbPGdyb3VwPiB8IDxyZW1vdGU+XS4uLiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSB1cGRhdGUgWzxjw6FjLXTDuXktY2jhu41uPl0gWzxuaMOzbT4gfCA8bcOheS1jaOG7pz5dLi4uIgorCiAjOiBidWlsdGluL3JlbW90ZS5jOjk4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVwZGF0aW5nICVzIgpAQCAtNDEzNiwzMCArNzg0OCw1NyBAQAogbXNnaWQgInVua25vd24gbWlycm9yIGFyZ3VtZW50OiAlcyIKIG1zZ3N0ciAia2jDtG5nIGhp4buDdSB0aGFtIHPhu5EgbcOheSBi4bqjbiBzYW8gKG1pcnJvcik6ICVzIgogCisjOiBidWlsdGluL3JlbW90ZS5jOjE2MworbXNnaWQgImZldGNoIHRoZSByZW1vdGUgYnJhbmNoZXMiCittc2dzdHIgImzhuqV5IHbhu4EgKGZldGNoKSBjw6FjIG5ow6FuaCB04burIG3DoXkgY2jhu6ciCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTY1Cittc2dpZCAiaW1wb3J0IGFsbCB0YWdzIGFuZCBhc3NvY2lhdGVkIG9iamVjdHMgd2hlbiBmZXRjaGluZyIKK21zZ3N0ciAiIgorIm5o4bqtcCB2w6BvIHThuqV0IGPhuqMgY8OhYyDEkeG7kWkgdMaw4bujbmcgdGjhursgdsOgIHRow6BuaCBwaOG6p24gbGnDqm4gcXVhbiBraGkgbOG6pXkgduG7gSAoZmV0Y2gpIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE2OAorbXNnaWQgIm9yIGRvIG5vdCBmZXRjaCBhbnkgdGFnIGF0IGFsbCAoLS1uby10YWdzKSIKK21zZ3N0ciAiaG/hurdjIGtow7RuZyBs4bqleSB24buBIChmZXRjaCkgYuG6pXQga+G7syB0aOG6uyBuw6BvICgtLW5vLXRhZ3MpIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE3MAorbXNnaWQgImJyYW5jaChlcykgdG8gdHJhY2siCittc2dzdHIgImPDoWMgbmjDoW5oIHRoZW8gduG6v3QiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTcxCittc2dpZCAibWFzdGVyIGJyYW5jaCIKK21zZ3N0ciAibmjDoW5oIG1hc3RlciIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNzIKK21zZ2lkICJwdXNofGZldGNoIgorbXNnc3RyICJwdXNofGZldGNoIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE3MworbXNnaWQgInNldCB1cCByZW1vdGUgYXMgYSBtaXJyb3IgdG8gcHVzaCB0byBvciBmZXRjaCBmcm9tIgorbXNnc3RyICLEkeG6t3QgbcOheSBjaOG7pyAocmVtb3RlKSBuaMawIGzDoCBt4buZdCBtw6F5IGLhuqNuIHNhbyDEkeG7gyBwdXNoIGhheSBmZXRjaCB04burIMSRw7MiCisKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTg1CiBtc2dpZCAic3BlY2lmeWluZyBhIG1hc3RlciBicmFuY2ggbWFrZXMgbm8gc2Vuc2Ugd2l0aCAtLW1pcnJvciIKLW1zZ3N0ciAixJFhbmcgY2jhu4kgxJHhu4tuaCBt4buZdCBuaMOhbmggbWFzdGVyIGtow7RuZyBwaMOibiBiaeG7h3QgSE9BL3RoxrDhu51uZyB24bubaSB0w7l5IGNo4buNbiAtLW1pcnJvciIKK21zZ3N0ciAixJFhbmcgY2jhu4kgxJHhu4tuaCBt4buZdCBuaMOhbmggbWFzdGVyIGtow7RuZyBo4bujcCBsw70gduG7m2kgdMO5eSBjaOG7jW4gLS1taXJyb3IiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTg3CiBtc2dpZCAic3BlY2lmeWluZyBicmFuY2hlcyB0byB0cmFjayBtYWtlcyBzZW5zZSBvbmx5IHdpdGggZmV0Y2ggbWlycm9ycyIKLW1zZ3N0ciAiY2jhu4kgxJHhu4tuaCBuaOG7r25nIG5ow6FuaCDEkeG7gyB0aGVvIHbhur90IGNo4buJIGjhu6NwIGzDvSB24bubaSBjw6FjICdmZXRjaCBtaXJyb3InIgorbXNnc3RyICJjaOG7iSDEkeG7i25oIG5o4buvbmcgbmjDoW5oIMSR4buDIHRoZW8gduG6v3QgY2jhu4kgaOG7o3AgbMO9IHbhu5tpIGPDoWMg4oCcZmV0Y2ggbWlycm9y4oCdIgogCi0jOiBidWlsdGluL3JlbW90ZS5jOjE5NQotIzogYnVpbHRpbi9yZW1vdGUuYzo2NDYKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTk1IGJ1aWx0aW4vcmVtb3RlLmM6NjQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlbW90ZSAlcyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgIm3DoXkgY2jhu6cgJXMgxJHDoyB04buTbiB04bqhaSBy4buTaS4iCiAKLSM6IGJ1aWx0aW4vcmVtb3RlLmM6MTk5Ci0jOiBidWlsdGluL3JlbW90ZS5jOjY1MAorIzogYnVpbHRpbi9yZW1vdGUuYzoxOTkgYnVpbHRpbi9yZW1vdGUuYzo2NTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBpcyBub3QgYSB2YWxpZCByZW1vdGUgbmFtZSIKLW1zZ3N0ciAiJyVzJyBraMO0bmcgcGjhuqNpIHTDqm4gbcOheSBjaOG7pyBo4bujcCBs4buHIgorbXNnc3RyICLigJwlc+KAnSBraMO0bmcgcGjhuqNpIHTDqm4gbcOheSBjaOG7pyBo4bujcCBs4buHIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjI0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgc2V0dXAgbWFzdGVyICclcyciCi1tc2dzdHIgIktow7RuZyB0aOG7gyBjw6BpIMSR4bq3dCBuaMOhbmggbWFzdGVyICclcyciCittc2dzdHIgIktow7RuZyB0aOG7gyBjw6BpIMSR4bq3dCBuaMOhbmggbWFzdGVyIOKAnCVz4oCdIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjI5OQogIywgYy1mb3JtYXQKQEAgLTQxNzEsMjUgKzc5MTAsMjAgQEAKIG1zZ2lkICJDb3VsZCBub3QgZ2V0IGZldGNoIG1hcCBmb3IgcmVmc3BlYyAlcyIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIGzhuqV5IMOhbmggeOG6oSAobWFwKSBmZXRjaCBjaG8gcmVmc3BlYyAlcyIKIAotIzogYnVpbHRpbi9yZW1vdGUuYzo0NDAKLSM6IGJ1aWx0aW4vcmVtb3RlLmM6NDQ4CisjOiBidWlsdGluL3JlbW90ZS5jOjQ0MCBidWlsdGluL3JlbW90ZS5jOjQ0OAogbXNnaWQgIihtYXRjaGluZykiCi1tc2dzdHIgIiht4bqrdSkiCittc2dzdHIgIihraOG7m3ApIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjQ1MgogbXNnaWQgIihkZWxldGUpIgotbXNnc3RyICIoeG/DoSkiCittc2dzdHIgIih4w7NhKSIKIAotIzogYnVpbHRpbi9yZW1vdGUuYzo1OTUKLSM6IGJ1aWx0aW4vcmVtb3RlLmM6NjAxCi0jOiBidWlsdGluL3JlbW90ZS5jOjYwNworIzogYnVpbHRpbi9yZW1vdGUuYzo1OTUgYnVpbHRpbi9yZW1vdGUuYzo2MDEgYnVpbHRpbi9yZW1vdGUuYzo2MDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGFwcGVuZCAnJXMnIHRvICclcyciCi1tc2dzdHIgIktow7RuZyB0aOG7gyBu4buRaSB0aMOqbSAnJXMnIHbDoG8gJyVzJyIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIG7hu5FpIHRow6ptIOKAnCVz4oCdIHbDoG8g4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vcmVtb3RlLmM6NjM5Ci0jOiBidWlsdGluL3JlbW90ZS5jOjc5MgotIzogYnVpbHRpbi9yZW1vdGUuYzo4OTAKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NjM5IGJ1aWx0aW4vcmVtb3RlLmM6NzkyIGJ1aWx0aW4vcmVtb3RlLmM6ODkwCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHN1Y2ggcmVtb3RlOiAlcyIKIG1zZ3N0ciAiS2jDtG5nIGPDsyBtw6F5IGNo4bunIG7DoG8gbmjGsCB0aOG6vzogJXMiCkBAIC00MTk3LDEzICs3OTMxLDEyIEBACiAjOiBidWlsdGluL3JlbW90ZS5jOjY1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVuYW1lIGNvbmZpZyBzZWN0aW9uICclcycgdG8gJyVzJyIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIMSR4buVaSB0w6puIGNoxrDGoW5nIChzZWN0aW9uKSBj4bqldSBow6xuaCB04burICclcycgdGjDoG5oICclcyciCittc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7lWkgdMOqbiBjaMawxqFuZyAoc2VjdGlvbikgY+G6pXUgaMOsbmggdOG7qyDigJwlc+KAnSB0aMOgbmgg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vcmVtb3RlLmM6NjYyCi0jOiBidWlsdGluL3JlbW90ZS5jOjc5OQorIzogYnVpbHRpbi9yZW1vdGUuYzo2NjIgYnVpbHRpbi9yZW1vdGUuYzo3OTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlbW92ZSBjb25maWcgc2VjdGlvbiAnJXMnIgotbXNnc3RyICJLaMO0bmcgdGjhu4MgZ+G7oSBi4buPIGNoxrDGoW5nIChzZWN0aW9uKSBj4bqldSBow6xuaCAnJXMnIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgZ+G7oSBi4buPIGNoxrDGoW5nIChzZWN0aW9uKSBj4bqldSBow6xuaCDigJwlc+KAnSIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzo2NzcKICMsIGMtZm9ybWF0CkBAIC00MjEyLDE5ICs3OTQ1LDE5IEBACiAiXHQlc1xuIgogIlx0UGxlYXNlIHVwZGF0ZSB0aGUgY29uZmlndXJhdGlvbiBtYW51YWxseSBpZiBuZWNlc3NhcnkuIgogbXNnc3RyICIiCi0iS2jDtG5nIGPhuq1wIG5o4bqtdCAnbm9uLWRlZmF1bHQgZmV0Y2ggcmVzcGVjJ1xuIgorIktow7RuZyBj4bqtcCBuaOG6rXQg4oCcbm9uLWRlZmF1bHQgZmV0Y2ggcmVzcGVj4oCdXG4iCiAiXHQlc1xuIgogIlx0WGluIGjDo3kgY+G6rXAgbmjhuq10IHBo4bqnbiBj4bqldSBow6xuaCBt4buZdCBjw6FjaCB0aOG7pyBjw7RuZyBu4bq/dSB0aOG6pXkgY+G6p24gdGhp4bq/dC4iCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6NjgzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBhcHBlbmQgJyVzJyIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIG7hu5FpIHRow6ptICclcyciCittc2dzdHIgIktow7RuZyB0aOG7gyBu4buRaSB0aMOqbSDigJwlc+KAnSIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzo2OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHNldCAnJXMnIgotbXNnc3RyICJLaMO0bmcgdGjhu4MgxJHhurd0ICclcyciCittc2dzdHIgIktow7RuZyB0aOG7gyDEkeG6t3Qg4oCcJXPigJ0iCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6NzE2CiAjLCBjLWZvcm1hdApAQCAtNDIzOSw3ICs3OTcyLDcgQEAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6NzY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCByZW1vdmUgYnJhbmNoICVzIgotbXNnc3RyICJLaMO0bmcgdGjhu4MgZ+G7oSBuaMOhbmggJXMiCittc2dzdHIgIktow7RuZyB0aOG7gyBn4buhIGLhu48gbmjDoW5oICVzIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjgzNAogbXNnaWQgIiIKQEAgLTQyNTIsNyArNzk4NSw4IEBACiAiQ2jDuiDDvTogTeG7mXQgbmjDoW5oIG7hurFtIG5nb8OgaSBo4buHIHRo4buRbmcgcmVmcy9yZW1vdGVzLyDEkcOjIGtow7RuZyDEkcaw4bujYyBn4buhIGLhu48gxJFpO1xuIgogIsSR4buDIHjDs2EgxJFpLCBz4butIGThu6VuZzoiCiBtc2dzdHJbMV0gIiIKLSJDaMO6IMO9OiBN4buZdCBz4buRIG5ow6FuaCBu4bqxbSBuZ2/DoGkgaOG7hyB0aOG7kW5nIHJlZnMvcmVtb3Rlcy8gxJHDoyBraMO0bmcgxJHGsOG7o2MgZ+G7oSBi4buPIMSRaTtcbiIKKyJDaMO6IMO9OiBN4buZdCBz4buRIG5ow6FuaCBu4bqxbSBuZ2/DoGkgaOG7hyB0aOG7kW5nIHJlZnMvcmVtb3Rlcy8gxJHDoyBraMO0bmcgxJHGsOG7o2MgZ+G7oSBi4buPICIKKyLEkWk7XG4iCiAixJHhu4MgeMOzYSDEkWksIHPhu60gZOG7pW5nOiIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzo5NDMKQEAgLTQyNjIsMTEgKzc5OTYsMTEgQEAKIAogIzogYnVpbHRpbi9yZW1vdGUuYzo5NDYKIG1zZ2lkICIgdHJhY2tlZCIKLW1zZ3N0ciAiIGLhu4sgdGhlbyB24bq/dCIKK21zZ3N0ciAiIMSRxrDhu6NjIHRoZW8gduG6v3QiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6OTQ4CiBtc2dpZCAiIHN0YWxlICh1c2UgJ2dpdCByZW1vdGUgcHJ1bmUnIHRvIHJlbW92ZSkiCi1tc2dzdHIgIiBjxakgKHPhu60gZOG7pW5nICdnaXQgcmVtb3RlIHBydW5lJyDEkeG7gyBn4buhIGLhu48pIgorbXNnc3RyICIgY8WpIChkw7luZyDigJxnaXQgcmVtb3RlIHBydW5l4oCdIMSR4buDIGfhu6EgYuG7jykiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6OTUwCiBtc2dpZCAiID8/PyIKQEAgLTQyOTQsNyArODAyOCw3IEBACiAjOiBidWlsdGluL3JlbW90ZS5jOjEwMDQKICMsIGMtZm9ybWF0CiBtc2dpZCAibWVyZ2VzIHdpdGggcmVtb3RlICVzIgotbXNnc3RyICJow7JhIHRy4buZbiB24bubaSBtw6F5IGNo4bunICAlcyIKK21zZ3N0ciAiaMOyYSB0cuG7mW4gduG7m2kgbcOheSBjaOG7pyAlcyIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxMDA1CiBtc2dpZCAiICAgYW5kIHdpdGggcmVtb3RlIgpAQCAtNDM0MCw2ICs4MDc0LDEwIEBACiBtc2dpZCAiICAgICUtKnMgcHVzaGVzIHRvICVzIgogbXNnc3RyICIgICAgJS0qcyBwdXNoIHThu5tpICVzIgogCisjOiBidWlsdGluL3JlbW90ZS5jOjEwOTEKK21zZ2lkICJkbyBub3QgcXVlcnkgcmVtb3RlcyIKK21zZ3N0ciAia2jDtG5nIHRydXkgduG6pW4gY8OhYyBtw6F5IGNo4bunIgorCiAjOiBidWlsdGluL3JlbW90ZS5jOjExMTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiKiByZW1vdGUgJXMiCkBAIC00MzUwLDI4ICs4MDg4LDI1IEBACiBtc2dpZCAiICBGZXRjaCBVUkw6ICVzIgogbXNnc3RyICIgIFVSTCDEkeG7gyBs4bqleSB24buBIChmZXRjaCk6ICVzIgogCi0jOiBidWlsdGluL3JlbW90ZS5jOjExMjAKLSM6IGJ1aWx0aW4vcmVtb3RlLmM6MTI4NQorIzogYnVpbHRpbi9yZW1vdGUuYzoxMTIwIGJ1aWx0aW4vcmVtb3RlLmM6MTI4NQogbXNnaWQgIihubyBVUkwpIgotbXNnc3RyICIoa2jDtG5nIGPDsyBVUkwgbsOgbykiCittc2dzdHIgIihraMO0bmcgY8OzIFVSTCkiCiAKLSM6IGJ1aWx0aW4vcmVtb3RlLmM6MTEyOQotIzogYnVpbHRpbi9yZW1vdGUuYzoxMTMxCisjOiBidWlsdGluL3JlbW90ZS5jOjExMjkgYnVpbHRpbi9yZW1vdGUuYzoxMTMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgUHVzaCAgVVJMOiAlcyIKLW1zZ3N0ciAiICBVUkwgxJHhu4MgxJHhuql5IGzDqm4gKHB1c2gpICA6ICVzIgorbXNnc3RyICIgIFVSTCDEkeG7gyDEkeG6qXkgbMOqbiAocHVzaCk6ICVzIgogCi0jOiBidWlsdGluL3JlbW90ZS5jOjExMzMKLSM6IGJ1aWx0aW4vcmVtb3RlLmM6MTEzNQotIzogYnVpbHRpbi9yZW1vdGUuYzoxMTM3CisjOiBidWlsdGluL3JlbW90ZS5jOjExMzMgYnVpbHRpbi9yZW1vdGUuYzoxMTM1IGJ1aWx0aW4vcmVtb3RlLmM6MTEzNwogIywgYy1mb3JtYXQKIG1zZ2lkICIgIEhFQUQgYnJhbmNoOiAlcyIKIG1zZ3N0ciAiICBOaMOhbmggSEVBRDogJXMiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTEzOQogIywgYy1mb3JtYXQKLW1zZ2lkICIgIEhFQUQgYnJhbmNoIChyZW1vdGUgSEVBRCBpcyBhbWJpZ3VvdXMsIG1heSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyk6XG4iCi1tc2dzdHIgIiAgbmjDoW5oIEhFQUQgKEhFQUQgbcOheSBjaOG7pyBsw6Aga2jDtG5nIHLDtSByw6BuZywgY8OzIGzhur0gbMOgIG3hu5l0IHRyb25nIHPhu5Egc2F1KTpcbiIKK21zZ2lkICIiCisiICBIRUFEIGJyYW5jaCAocmVtb3RlIEhFQUQgaXMgYW1iaWd1b3VzLCBtYXkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcpOlxuIgorbXNnc3RyICIgIG5ow6FuaCBIRUFEIChIRUFEIG3DoXkgY2jhu6cgY2jGsGEgcsO1IHLDoG5nLCBjw7MgbOG6vSBsw6AgbeG7mXQgdHJvbmcgc+G7kSBzYXUpOlxuIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjExNTEKICMsIGMtZm9ybWF0CkBAIC00MzgwLDI3ICs4MTE1LDM0IEBACiBtc2dzdHJbMF0gIiAgTmjDoW5oIHRyw6puIG3DoXkgY2jhu6c6JXMiCiBtc2dzdHJbMV0gIiAgTmjhu69uZyBuaMOhbmggdHLDqm4gbcOheSBjaOG7pzolcyIKIAotIzogYnVpbHRpbi9yZW1vdGUuYzoxMTU0Ci0jOiBidWlsdGluL3JlbW90ZS5jOjExODEKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTE1NCBidWlsdGluL3JlbW90ZS5jOjExODEKIG1zZ2lkICIgKHN0YXR1cyBub3QgcXVlcmllZCkiCiBtc2dzdHIgIiAodHLhuqFuZyB0aMOhaSBraMO0bmcgxJHGsOG7o2MgecOqdSBj4bqndSkiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTE2MwogbXNnaWQgIiAgTG9jYWwgYnJhbmNoIGNvbmZpZ3VyZWQgZm9yICdnaXQgcHVsbCc6IgogbXNnaWRfcGx1cmFsICIgIExvY2FsIGJyYW5jaGVzIGNvbmZpZ3VyZWQgZm9yICdnaXQgcHVsbCc6IgotbXNnc3RyWzBdICIgIE5ow6FuaCBu4buZaSBi4buZIMSRw6MgxJHGsOG7o2MgY+G6pXUgaMOsbmggY2hvIGzhu4duaCAnZ2l0IHB1bGwnOiIKLW1zZ3N0clsxXSAiICBOaOG7r25nIG5ow6FuaCBu4buZaSBi4buZIMSRw6MgxJHGsOG7o2MgY+G6pXUgaMOsbmggY2hvIGzhu4duaCAnZ2l0IHB1bGwnOiIKK21zZ3N0clswXSAiICBOaMOhbmggbuG7mWkgYuG7mSDEkcOjIMSRxrDhu6NjIGPhuqV1IGjDrG5oIGNobyBs4buHbmgg4oCcZ2l0IHB1bGzigJ06IgorbXNnc3RyWzFdICIgIE5o4buvbmcgbmjDoW5oIG7hu5lpIGLhu5kgxJHDoyDEkcaw4bujYyBj4bqldSBow6xuaCBjaG8gbOG7h25oIOKAnGdpdCBwdWxs4oCdOiIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxMTcxCiBtc2dpZCAiICBMb2NhbCByZWZzIHdpbGwgYmUgbWlycm9yZWQgYnkgJ2dpdCBwdXNoJyIKLW1zZ3N0ciAiICByZWZzIG7hu5lpIGLhu5kgc+G6vSDEkcaw4bujYyBwaOG6o24gY2hp4bq/dSBi4bufaSBs4buHbmggJ2dpdCBwdXNoJyIKK21zZ3N0ciAiICByZWZzIG7hu5lpIGLhu5kgc+G6vSDEkcaw4bujYyBwaOG6o24gY2hp4bq/dSBi4bufaSBs4buHbmgg4oCcZ2l0IHB1c2jigJ0iCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTE3OAogIywgYy1mb3JtYXQKIG1zZ2lkICIgIExvY2FsIHJlZiBjb25maWd1cmVkIGZvciAnZ2l0IHB1c2gnJXM6IgogbXNnaWRfcGx1cmFsICIgIExvY2FsIHJlZnMgY29uZmlndXJlZCBmb3IgJ2dpdCBwdXNoJyVzOiIKLW1zZ3N0clswXSAiICBUaGFtIGNoaeG6v3UgbuG7mWkgYuG7mSDEkcaw4bujYyBj4bqldSBow6xuaCBjaG8gbOG7h25oICdnaXQgcHVzaCclczoiCi1tc2dzdHJbMV0gIiAgTmjhu69uZyB0aGFtIGNoaeG6v3UgbuG7mWkgYuG7mSDEkcaw4bujYyBj4bqldSBow6xuaCBjaG8gbOG7h25oICdnaXQgcHVzaCclczoiCittc2dzdHJbMF0gIiAgVGhhbSBjaGnhur91IG7hu5lpIGLhu5kgxJHGsOG7o2MgY+G6pXUgaMOsbmggY2hvIGzhu4duaCDigJxnaXQgcHVzaOKAnSVzOiIKK21zZ3N0clsxXSAiICBOaOG7r25nIHRoYW0gY2hp4bq/dSBu4buZaSBi4buZIMSRxrDhu6NjIGPhuqV1IGjDrG5oIGNobyBs4buHbmgg4oCcZ2l0IHB1c2jigJ0lczoiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTE5OQorbXNnaWQgInNldCByZWZzL3JlbW90ZXMvPG5hbWU+L0hFQUQgYWNjb3JkaW5nIHRvIHJlbW90ZSIKK21zZ3N0ciAixJHhurd0IHJlZnMvcmVtb3Rlcy88dMOqbj4vSEVBRCBjaG8gcGjDuSBo4bujcCB24bubaSBtw6F5IGNo4bunIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjEyMDEKK21zZ2lkICJkZWxldGUgcmVmcy9yZW1vdGVzLzxuYW1lPi9IRUFEIgorbXNnc3RyICJ4w7NhIHJlZnMvcmVtb3Rlcy88dMOqbj4vSEVBRCIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxMjE2CiBtc2dpZCAiQ2Fubm90IGRldGVybWluZSByZW1vdGUgSEVBRCIKQEAgLTQ0MjgsMTIgKzgxNzAsMTIgQEAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTI3NAogIywgYy1mb3JtYXQKIG1zZ2lkICIgJXMgd2lsbCBiZWNvbWUgZGFuZ2xpbmchIgotbXNnc3RyICIgJXMgc+G6vSB0cuG7nyB0aMOgbmggbOG7p25nIGzhurNuZyAoa2jDtG5nIMSRxrDhu6NjIHF14bqjbiBsw70pISIKK21zZ3N0ciAiICVzIHPhur0gdHLhu58gdGjDoG5oIGtow7RuZyDEkeG6p3UgKGtow7RuZyDEkcaw4bujYyBxdeG6o24gbMO9KSEiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTI3NQogIywgYy1mb3JtYXQKIG1zZ2lkICIgJXMgaGFzIGJlY29tZSBkYW5nbGluZyEiCi1tc2dzdHIgIiAlcyBwaOG6o2kgdHLhu58gdGjDoG5oIGzhu6duZyBs4bqzbmcgKGtow7RuZyDEkcaw4bujYyBxdeG6o24gbMO9KSEiCittc2dzdHIgIiAlcyDEkcOjIHRy4bufIHRow6BuaCBraMO0bmcgxJHhuqd1IChraMO0bmcgxJHGsOG7o2MgcXXhuqNuIGzDvSkhIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjEyODEKICMsIGMtZm9ybWF0CkBAIC00NDUzLDE4ICs4MTk1LDM3IEBACiAjOiBidWlsdGluL3JlbW90ZS5jOjEyOTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiICogW3BydW5lZF0gJXMiCi1tc2dzdHIgIiAqW8SRw6MgeMOpbiBi4bubXSAlcyIKK21zZ3N0ciAiICpbxJHDoyBi4buLIHjDqW5dICVzIgogCi0jOiBidWlsdGluL3JlbW90ZS5jOjEzODcKLSM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQ2MQorIzogYnVpbHRpbi9yZW1vdGUuYzoxMzIxCittc2dpZCAicHJ1bmUgcmVtb3RlcyBhZnRlciBmZXRjaGluZyIKK21zZ3N0ciAiY+G6r3QgbcOheSBjaOG7pyBzYXUga2hpIGzhuqV5IHbhu4EiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTM4NyBidWlsdGluL3JlbW90ZS5jOjE0NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gc3VjaCByZW1vdGUgJyVzJyIKLW1zZ3N0ciAiS2jDtG5nIGPDsyBtw6F5IGNo4bunIG7DoG8gY8OzIHTDqm4gJyVzJyIKK21zZ3N0ciAiS2jDtG5nIGPDsyBtw6F5IGNo4bunIG7DoG8gY8OzIHTDqm4g4oCcJXPigJ0iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQwNworbXNnaWQgImFkZCBicmFuY2giCittc2dzdHIgInRow6ptIG5ow6FuaCIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNDE0CiBtc2dpZCAibm8gcmVtb3RlIHNwZWNpZmllZCIKIG1zZ3N0ciAiY2jGsGEgY2jhu4kgcmEgbcOheSBjaOG7pyBuw6BvIgogCisjOiBidWlsdGluL3JlbW90ZS5jOjE0MzYKK21zZ2lkICJtYW5pcHVsYXRlIHB1c2ggVVJMcyIKK21zZ3N0ciAixJHhuql5IGPDoWMg4oCcVVJM4oCdIGLhurFuZyB0YXkiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQzOAorbXNnaWQgImFkZCBVUkwiCittc2dzdHIgInRow6ptIFVSTCIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNDQwCittc2dpZCAiZGVsZXRlIFVSTHMiCittc2dzdHIgInjDs2EgVVJMcyIKKwogIzogYnVpbHRpbi9yZW1vdGUuYzoxNDQ3CiBtc2dpZCAiLS1hZGQgLS1kZWxldGUgZG9lc24ndCBtYWtlIHNlbnNlIgogbXNnc3RyICItLWFkZCAtLWRlbGV0ZSBraMO0bmcgaOG7o3AgbMO9IgpAQCAtNDQ4Myw2ICs4MjQ0LDU2IEBACiBtc2dpZCAiV2lsbCBub3QgZGVsZXRlIGFsbCBub24tcHVzaCBVUkxzIgogbXNnc3RyICJT4bq9IGtow7RuZyB4w7NhIG5o4buvbmcgxJHhu4thIGNo4buJIFVSTCBraMO0bmctcHVzaCIKIAorIzogYnVpbHRpbi9yZW1vdGUuYzoxNTY5Cittc2dpZCAiYmUgdmVyYm9zZTsgbXVzdCBiZSBwbGFjZWQgYmVmb3JlIGEgc3ViY29tbWFuZCIKK21zZ3N0ciAiY2hpIHRp4bq/dDsgcGjhuqNpIMSRxrDhu6NjIMSR4bq3dCB0csaw4bubYyBt4buZdCBs4buHbmgtY29uIgorCisjOiBidWlsdGluL3JlcGxhY2UuYzoxNworbXNnaWQgImdpdCByZXBsYWNlIFstZl0gPG9iamVjdD4gPHJlcGxhY2VtZW50PiIKK21zZ3N0ciAiZ2l0IHJlcGxhY2UgWy1mXSA8xJHhu5FpLXTGsOG7o25nPiA8dGhheS10aOG6vz4iCisKKyM6IGJ1aWx0aW4vcmVwbGFjZS5jOjE4Cittc2dpZCAiZ2l0IHJlcGxhY2UgLWQgPG9iamVjdD4uLi4iCittc2dzdHIgImdpdCByZXBsYWNlIC1kIDzEkeG7kWkgdMaw4bujbmc+Li4uIgorCisjOiBidWlsdGluL3JlcGxhY2UuYzoxOQorbXNnaWQgImdpdCByZXBsYWNlIC1sIFs8cGF0dGVybj5dIgorbXNnc3RyICJnaXQgcmVwbGFjZSAtbCBbPG3huqt1Pl0iCisKKyM6IGJ1aWx0aW4vcmVwbGFjZS5jOjEyMQorbXNnaWQgImxpc3QgcmVwbGFjZSByZWZzIgorbXNnc3RyICJsaeG7h3Qga8OqIGPDoWMgcmVmcyB0aGF5IHRo4bq/IgorCisjOiBidWlsdGluL3JlcGxhY2UuYzoxMjIKK21zZ2lkICJkZWxldGUgcmVwbGFjZSByZWZzIgorbXNnc3RyICJ4w7NhIHRoYW0gY2hp4bq/dSAocmVmcykgdGhheSB0aOG6vyIKKworIzogYnVpbHRpbi9yZXBsYWNlLmM6MTIzCittc2dpZCAicmVwbGFjZSB0aGUgcmVmIGlmIGl0IGV4aXN0cyIKK21zZ3N0ciAidGhheSB0aOG6vyB0aGFtIGNoaeG6v3UgKHJlZikgbuG6v3UgbsOzIMSRw6Mgc+G6tW4gY8OzIgorCisjOiBidWlsdGluL3JlcmVyZS5jOjExCittc2dpZCAiZ2l0IHJlcmVyZSBbY2xlYXIgfCBmb3JnZXQgcGF0aC4uLiB8IHN0YXR1cyB8IHJlbWFpbmluZyB8IGRpZmYgfCBnY10iCittc2dzdHIgImdpdCByZXJlcmUgW2NsZWFyIHwgZm9yZ2V0IHBhdGguLi4gfCBzdGF0dXMgfCByZW1haW5pbmcgfCBkaWZmIHwgZ2NdIgorCisjOiBidWlsdGluL3JlcmVyZS5jOjU2Cittc2dpZCAicmVnaXN0ZXIgY2xlYW4gcmVzb2x1dGlvbnMgaW4gaW5kZXgiCittc2dzdHIgInPhu5UgZ2hpIGThu41uIHPhuqFjaCBjw6FjIHBow6JuIGdp4bqjaSB0cm9uZyBi4bqjbiBt4bulYyBs4bulYyIKKworIzogYnVpbHRpbi9yZXNldC5jOjI1Cittc2dpZCAiIgorImdpdCByZXNldCBbLS1taXhlZCB8IC0tc29mdCB8IC0taGFyZCB8IC0tbWVyZ2UgfCAtLWtlZXBdIFstcV0gWzxjb21taXQ+XSIKK21zZ3N0ciAiIgorImdpdCByZXNldCBbLS1taXhlZCB8IC0tc29mdCB8IC0taGFyZCB8IC0tbWVyZ2UgfCAtLWtlZXBdIFstcV0gWzxjb21taXQ+XSIKKworIzogYnVpbHRpbi9yZXNldC5jOjI2Cittc2dpZCAiZ2l0IHJlc2V0IFstcV0gPHRyZWUtaXNoPiBbLS1dIDxwYXRocz4uLi4iCittc2dzdHIgImdpdCByZXNldCBbLXFdIDx0cmVlLWlzaD4gWy0tXSA8xJHGsOG7nW5nLWThuqtuPi4uLiIKKworIzogYnVpbHRpbi9yZXNldC5jOjI3Cittc2dpZCAiZ2l0IHJlc2V0IC0tcGF0Y2ggWzx0cmVlLWlzaD5dIFstLV0gWzxwYXRocz4uLi5dIgorbXNnc3RyICJnaXQgcmVzZXQgLS1wYXRjaCBbPHRyZWUtaXNoPl0gWy0tXSBbPGPDoWMtxJHGsOG7nW5nLWThuqtuPi4uLl0iCisKICM6IGJ1aWx0aW4vcmVzZXQuYzozMwogbXNnaWQgIm1peGVkIgogbXNnc3RyICJwaGEgdHLhu5luIgpAQCAtNDUwMywxMzMgKzgzMTQsNDk2IEBACiBtc2dpZCAia2VlcCIKIG1zZ3N0ciAiZ2nhu68gbOG6oWkiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzo3NworIzogYnVpbHRpbi9yZXNldC5jOjczCiBtc2dpZCAiWW91IGRvIG5vdCBoYXZlIGEgdmFsaWQgSEVBRC4iCiBtc2dzdHIgIkLhuqFuIGtow7RuZyBjw7MgSEVBRCBuw6BvIGjhu6NwIGzhu4cuIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6NzkKKyM6IGJ1aWx0aW4vcmVzZXQuYzo3NQogbXNnaWQgIkZhaWxlZCB0byBmaW5kIHRyZWUgb2YgSEVBRC4iCiBtc2dzdHIgIkfhurdwIGzhu5dpIGtoaSB0w6xtIGPDonkgY+G7p2EgSEVBRC4iCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzo4NQorIzogYnVpbHRpbi9yZXNldC5jOjgxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBmaW5kIHRyZWUgb2YgJXMuIgogbXNnc3RyICJH4bq3cCBs4buXaSBraGkgdMOsbSBjw6J5IGPhu6dhICVzLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjk2Ci1tc2dpZCAiQ291bGQgbm90IHdyaXRlIG5ldyBpbmRleCBmaWxlLiIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIGdoaSB04bqtcCB0aW4gbMawdSBi4bqjbmcgbeG7pWMgbOG7pWMgbeG7m2kuIgotCi0jOiBidWlsdGluL3Jlc2V0LmM6MTA2CisjOiBidWlsdGluL3Jlc2V0LmM6OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiSEVBRCBpcyBub3cgYXQgJXMiCiBtc2dzdHIgIkhFQUQgaGnhu4duIGdp4budIHThuqFpICVzIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MTMwCi1tc2dpZCAiQ291bGQgbm90IHJlYWQgaW5kZXgiCi1tc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7jWMgYuG6o25nIG3hu6VjIGzhu6VjIgotCi0jOiBidWlsdGluL3Jlc2V0LmM6MTMzCi1tc2dpZCAiVW5zdGFnZWQgY2hhbmdlcyBhZnRlciByZXNldDoiCi1tc2dzdHIgIk5o4buvbmcgdGhheSDEkeG7lWkgYuG7iyBi4buPIHRy4bqhbmcgdGjDoWkgKHN0YWdlKSBzYXUga2hpIHJlc2V0OiIKLQotIzogYnVpbHRpbi9yZXNldC5jOjIyMworIzogYnVpbHRpbi9yZXNldC5jOjE2OQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZG8gYSAlcyByZXNldCBpbiB0aGUgbWlkZGxlIG9mIGEgbWVyZ2UuIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgdGjhu7FjIGhp4buHbiBt4buZdCAlcyByZXNldCDhu58gZ2nhu69hIGPhu6dhIHF1w6EgdHLDrG5oIGjDsmEgdHLhu5luLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI5NworIzogYnVpbHRpbi9yZXNldC5jOjI0OAorbXNnaWQgImJlIHF1aWV0LCBvbmx5IHJlcG9ydCBlcnJvcnMiCittc2dzdHIgImzDoG0gdmnhu4djIOG7nyBjaOG6vyDEkeG7mSBpbSBs4bq3bmcsIGNo4buJIGhp4buDbiB0aOG7iyBraGkgY8OzIGzhu5dpIgorCisjOiBidWlsdGluL3Jlc2V0LmM6MjUwCittc2dpZCAicmVzZXQgSEVBRCBhbmQgaW5kZXgiCittc2dzdHIgIsSR4bq3dCBs4bqhaSAocmVzZXQpIEhFQUQgdsOgIGLhuqNuZyBt4bulYyBs4bulYyIKKworIzogYnVpbHRpbi9yZXNldC5jOjI1MQorbXNnaWQgInJlc2V0IG9ubHkgSEVBRCIKK21zZ3N0ciAiY2jhu4kgxJHhurd0IGzhuqFpIChyZXNldCkgSEVBRCIKKworIzogYnVpbHRpbi9yZXNldC5jOjI1MyBidWlsdGluL3Jlc2V0LmM6MjU1Cittc2dpZCAicmVzZXQgSEVBRCwgaW5kZXggYW5kIHdvcmtpbmcgdHJlZSIKK21zZ3N0ciAixJHhurd0IGzhuqFpIEhFQUQsIGLhuqNuZyBt4bulYyBs4bulYyB2w6AgY8OieSBsw6BtIHZp4buHYyIKKworIzogYnVpbHRpbi9yZXNldC5jOjI1NworbXNnaWQgInJlc2V0IEhFQUQgYnV0IGtlZXAgbG9jYWwgY2hhbmdlcyIKK21zZ3N0ciAixJHhurd0IGzhuqFpIEhFQUQgbmjGsG5nIGdp4buvIGzhuqFpIGPDoWMgdGhheSDEkeG7lWkgbuG7mWkgYuG7mSIKKworIzogYnVpbHRpbi9yZXNldC5jOjI3NQorIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgcmV2aXNpb24uIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgcGjDom4gZ2nhuqNpIOKAnCVz4oCdIG5oxrAgbMOgIMSRaeG7g20geMOpdCBkdXnhu4d0IGjhu6NwIGzhu4cuIgorCisjOiBidWlsdGluL3Jlc2V0LmM6Mjc4IGJ1aWx0aW4vcmVzZXQuYzoyODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIG9iamVjdCAnJXMnLiIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIHBow6JuIHTDrWNoIMSR4buRaSB0xrDhu6NuZyAnJXMnLiIKK21zZ3N0ciAia2jDtG5nIHRo4buDIHBow6JuIHTDrWNoIMSR4buRaSB0xrDhu6NuZyDigJwlc+KAnS4iCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzozMDIKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgJyVzJyBhcyBhIHZhbGlkIHRyZWUuIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgcGjDom4gZ2nhuqNpIOKAnCVz4oCdIG5oxrAgbMOgIG3hu5l0IGPDonkgKHRyZWUpIGjhu6NwIGzhu4cuIgorCisjOiBidWlsdGluL3Jlc2V0LmM6MjkyCiBtc2dpZCAiLS1wYXRjaCBpcyBpbmNvbXBhdGlibGUgd2l0aCAtLXtoYXJkLG1peGVkLHNvZnR9IgogbXNnc3RyICItLXBhdGNoIHh1bmcga2jhuq9jIHbhu5tpIC0te2hhcmQsbWl4ZWQsc29mdH0iCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzozMTEKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMDEKIG1zZ2lkICItLW1peGVkIHdpdGggcGF0aHMgaXMgZGVwcmVjYXRlZDsgdXNlICdnaXQgcmVzZXQgLS0gPHBhdGhzPicgaW5zdGVhZC4iCi1tc2dzdHIgIi0tbWl4ZWQgduG7m2kgY8OhYyDEkcaw4budbmcgZOG6q24ga2jDtG5nIGPDsm4gZMO5bmcgbuG7r2E7IGjDo3kgdGhheSB0aOG6vyBi4bqxbmcgbOG7h25oICdnaXQgcmVzZXQgLS0gPMSRxrDhu51uZ19k4bqrbj4nLiIKK21zZ3N0ciAiIgorIi0tbWl4ZWQgduG7m2kgY8OhYyDEkcaw4budbmcgZOG6q24ga2jDtG5nIGPDsm4gZMO5bmcgbuG7r2E7IGjDo3kgdGhheSB0aOG6vyBi4bqxbmcgbOG7h25oIOKAnGdpdCAiCisicmVzZXQgLS0gPMSRxrDhu51uZ19k4bqrbj7igJ0uIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzEzCisjOiBidWlsdGluL3Jlc2V0LmM6MzAzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBkbyAlcyByZXNldCB3aXRoIHBhdGhzLiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHRo4buxYyBoaeG7h24gbOG7h25oICVzIHJlc2V0IHbhu5tpIGPDoWMgxJHGsOG7nW5nIGThuqtuLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMyNQorIzogYnVpbHRpbi9yZXNldC5jOjMxMwogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyByZXNldCBpcyBub3QgYWxsb3dlZCBpbiBhIGJhcmUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiJXMgcmVzZXQga2jDtG5nIMSRxrDhu6NjIHBow6lwIHRyw6puIGtobyBiYXJlICh0csOqbiBtw6F5IGNo4bunKSIKIAotIzogYnVpbHRpbi9yZXNldC5jOjM0MQorIzogYnVpbHRpbi9yZXNldC5jOjMzMwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVzZXQgaW5kZXggZmlsZSB0byByZXZpc2lvbiAnJXMnLiIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIMSR4bq3dCBs4bqhaSAocmVzZXQpIGLhuqNuZyBt4bulYyBs4bulYyB0aMOgbmggxJFp4buDbSB4w6l0IGzhuqFpICclcycuIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgxJHhurd0IGzhuqFpIChyZXNldCkgYuG6o25nIG3hu6VjIGzhu6VjIHRow6BuaCDEkWnhu4NtIHjDqXQgbOG6oWkg4oCcJXPigJ0uIgogCi0jOiBidWlsdGluL3JldmVydC5jOjcwCi0jOiBidWlsdGluL3JldmVydC5jOjkyCisjOiBidWlsdGluL3Jlc2V0LmM6MzM5Cittc2dpZCAiVW5zdGFnZWQgY2hhbmdlcyBhZnRlciByZXNldDoiCittc2dzdHIgIk5o4buvbmcgdGhheSDEkeG7lWkgYuG7iyBi4buPIHRy4bqhbmcgdGjDoWkgKHN0YWdlKSBzYXUga2hpIHJlc2V0OiIKKworIzogYnVpbHRpbi9yZXNldC5jOjM0NAorbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSBuZXcgaW5kZXggZmlsZS4iCittc2dzdHIgIktow7RuZyB0aOG7gyBnaGkgdOG6rXAgdGluIGzGsHUgYuG6o25nIG3hu6VjIGzhu6VjIG3hu5tpLiIKKworIzogYnVpbHRpbi9yZXYtcGFyc2UuYzozMzkKK21zZ2lkICJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgW29wdGlvbnNdIC0tIFs8YXJncz4uLi5dIgorbXNnc3RyICJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgW2PDoWMtdMO5eS1jaOG7jW5dIC0tIFs8dGguc+G7kT4uLi5dIgorCisjOiBidWlsdGluL3Jldi1wYXJzZS5jOjM0NAorbXNnaWQgImtlZXAgdGhlIGAtLWAgcGFzc2VkIGFzIGFuIGFyZyIKK21zZ3N0ciAiZ2nhu68g4oCcLS3igJwgY2h1eeG7g24gcXVhIGzDoG0gdGhhbSBz4buRIgorCisjOiBidWlsdGluL3Jldi1wYXJzZS5jOjM0NgorbXNnaWQgInN0b3AgcGFyc2luZyBhZnRlciB0aGUgZmlyc3Qgbm9uLW9wdGlvbiBhcmd1bWVudCIKK21zZ3N0ciAiZOG7q25nIHBow6JuIHTDrWNoIHNhdSDEkeG7kWkgc+G7kSDEkeG6p3UgdGnDqm4ga2jDtG5nIGPDsyB0w7l5IGNo4buNbiIKKworIzogYnVpbHRpbi9yZXYtcGFyc2UuYzo0NjQKK21zZ2lkICIiCisiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IFtvcHRpb25zXSAtLSBbPGFyZ3M+Li4uXVxuIgorIiAgIG9yOiBnaXQgcmV2LXBhcnNlIC0tc3EtcXVvdGUgWzxhcmc+Li4uXVxuIgorIiAgIG9yOiBnaXQgcmV2LXBhcnNlIFtvcHRpb25zXSBbPGFyZz4uLi5dXG4iCisiXG4iCisiUnVuIFwiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IC1oXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGZpcnN0IHVzYWdlLiIKK21zZ3N0ciAiIgorImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCBbY8OhYy10w7l5LWNo4buNbl0gLS0gWzzEkS5z4buRPi4uLl1cbiIKKyIgICBvcjogZ2l0IHJldi1wYXJzZSAtLXNxLXF1b3RlIFs8xJEuc+G7kT4uLi5dXG4iCisiICAgb3I6IGdpdCByZXYtcGFyc2UgW2PDoWMtdMO5eS1jaOG7jW5dIFs8xJEuc+G7kT4uLi5dXG4iCisiXG4iCisiQ2jhuqF5IGzhu4duaCBcImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCAtaFwiIMSR4buDIGPDsyB0aMOqbSB0aMO0bmcgdGluIHbhu4EgY8OhY2ggZMO5bmcuIgorCisjOiBidWlsdGluL3JldmVydC5jOjIyCittc2dpZCAiZ2l0IHJldmVydCBbb3B0aW9uc10gPGNvbW1pdC1pc2g+Li4uIgorbXNnc3RyICJnaXQgcmV2ZXJ0IFtjw6FjLXTDuXktY2jhu41uXSA8Y29tbWl0LWlzaD4uLi4iCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjMKK21zZ2lkICJnaXQgcmV2ZXJ0IDxzdWJjb21tYW5kPiIKK21zZ3N0ciAiZ2l0IHJldmVydCA8bOG7h25oLWNvbj4iCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjgKK21zZ2lkICJnaXQgY2hlcnJ5LXBpY2sgW29wdGlvbnNdIDxjb21taXQtaXNoPi4uLiIKK21zZ3N0ciAiZ2l0IGNoZXJyeS1waWNrIFtjw6FjLXTDuXktY2jhu41uXSA8Y29tbWl0LWlzaD4uLi4iCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjkKK21zZ2lkICJnaXQgY2hlcnJ5LXBpY2sgPHN1YmNvbW1hbmQ+IgorbXNnc3RyICJnaXQgY2hlcnJ5LXBpY2sgPGzhu4duaC1jb24+IgorCisjOiBidWlsdGluL3JldmVydC5jOjcwIGJ1aWx0aW4vcmV2ZXJ0LmM6OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6ICVzIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiCiBtc2dzdHIgIiVzOiAlcyBraMO0bmcgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgduG7m2kgJXMiCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTMxCisjOiBidWlsdGluL3JldmVydC5jOjEwMworbXNnaWQgImVuZCByZXZlcnQgb3IgY2hlcnJ5LXBpY2sgc2VxdWVuY2UiCittc2dzdHIgImvhur90IHRow7pjIGNoZXJyeS1waWNrIGhheSByZXZlcnQgbGnDqm4gdGnhur9wIG5oYXUiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA0Cittc2dpZCAicmVzdW1lIHJldmVydCBvciBjaGVycnktcGljayBzZXF1ZW5jZSIKK21zZ3N0ciAicGjhu6VjIGjhu5NpIGzhuqFpIGNoZXJyeS1waWNrIGhheSByZXZlcnQgbGnDqm4gdGnhur9wIG5oYXUiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA1Cittc2dpZCAiY2FuY2VsIHJldmVydCBvciBjaGVycnktcGljayBzZXF1ZW5jZSIKK21zZ3N0ciAia2jDtG5nIGNoZXJyeS1waWNrIGhheSByZXZlcnQgbGnDqm4gdGnhur9wIG5oYXUiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA2Cittc2dpZCAiZG9uJ3QgYXV0b21hdGljYWxseSBjb21taXQiCittc2dzdHIgImtow7RuZyBjb21taXQgbeG7mXQgY8OhY2ggdOG7sSDEkeG7mW5nLiIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMDcKK21zZ2lkICJlZGl0IHRoZSBjb21taXQgbWVzc2FnZSIKK21zZ3N0ciAic+G7rWEgbOG6oWkgY2jDuiB0aMOtY2ggY2hvIGNvbW1pdCIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMTAKK21zZ2lkICJwYXJlbnQgbnVtYmVyIgorbXNnc3RyICJz4buRIGPhu6dhIGNoYSBt4bq5IgorCisjOiBidWlsdGluL3JldmVydC5jOjExMgorbXNnaWQgIm1lcmdlIHN0cmF0ZWd5IgorbXNnc3RyICJjaGnhur9uIGzGsOG7o2MgaMOyYSB0cuG7mW4iCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTEzCittc2dpZCAib3B0aW9uIgorbXNnc3RyICJ0w7l5IGNo4buNbiIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMTQKK21zZ2lkICJvcHRpb24gZm9yIG1lcmdlIHN0cmF0ZWd5IgorbXNnc3RyICJ0w7l5IGNo4buNbiBjaG8gY2hp4bq/biBsxrDhu6NjIGjDsmEgdHLhu5luIgorCisjOiBidWlsdGluL3JldmVydC5jOjEyNQorbXNnaWQgImFwcGVuZCBjb21taXQgbmFtZSIKK21zZ3N0ciAibuG7kWkgdGjDqm0gdMOqbiBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIgorCisjOiBidWlsdGluL3JldmVydC5jOjEyNgorbXNnaWQgImFsbG93IGZhc3QtZm9yd2FyZCIKK21zZ3N0ciAiY2hvIHBow6lwIGZhc3QtZm9yd2FyZCIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMjcKK21zZ2lkICJwcmVzZXJ2ZSBpbml0aWFsbHkgZW1wdHkgY29tbWl0cyIKK21zZ3N0ciAiY+G6pW0ga2jhu59pIHThuqFvIGzhuqduIGNodXnhu4NuIGdpYW8gdHLhu5FuZyBy4buXbmciCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI4Cittc2dpZCAiYWxsb3cgY29tbWl0cyB3aXRoIGVtcHR5IG1lc3NhZ2VzIgorbXNnc3RyICJjaOG6pXAgbmjhuq1uIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbcOgIGtow7RuZyBnaGkgY2jDuiBnw6wiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI5Cittc2dpZCAia2VlcCByZWR1bmRhbnQsIGVtcHR5IGNvbW1pdHMiCittc2dzdHIgImdp4buvIGzhuqFpIGPDoWMgbOG6p24gY2h1eeG7g24gZ2lhbyBkxrAgdGjhu6thLCBy4buXbmciCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTMzCiBtc2dpZCAicHJvZ3JhbSBlcnJvciIKIG1zZ3N0ciAibOG7l2kgY2jGsMahbmcgdHLDrG5oIgogCi0jOiBidWlsdGluL3JldmVydC5jOjIyMQorIzogYnVpbHRpbi9yZXZlcnQuYzoyMjMKIG1zZ2lkICJyZXZlcnQgZmFpbGVkIgogbXNnc3RyICJyZXZlcnQgZ+G6t3AgbOG7l2kiCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjM2CisjOiBidWlsdGluL3JldmVydC5jOjIzOAogbXNnaWQgImNoZXJyeS1waWNrIGZhaWxlZCIKIG1zZ3N0ciAiY2hlcnJ5LXBpY2sgZ+G6t3AgbOG7l2kiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxMDkKKyM6IGJ1aWx0aW4vcm0uYzoxNQorbXNnaWQgImdpdCBybSBbb3B0aW9uc10gWy0tXSA8ZmlsZT4uLi4iCittc2dzdHIgImdpdCBybSBbY8OhYy10w7l5LWNo4buNbl0gWy0tXSA8dOG6rXAtdGluPi4uLiIKKworIzogYnVpbHRpbi9ybS5jOjY0IGJ1aWx0aW4vcm0uYzoxODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorInN1Ym1vZHVsZSAnJXMnIChvciBvbmUgb2YgaXRzIG5lc3RlZCBzdWJtb2R1bGVzKSB1c2VzIGEgLmdpdCBkaXJlY3RvcnlcbiIKKyIodXNlICdybSAtcmYnIGlmIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgaXQgaW5jbHVkaW5nIGFsbCBvZiBpdHMgaGlzdG9yeSkiCittc2dzdHIgIiIKKyJtw7QtxJF1bi1jb24g4oCcJXPigJ0gKGhv4bq3YyBjw6FpIG7hurFtIHRyb25nIGPDoWMgbcO0LcSRdW4tY29uKSBkw7luZyB0aMawIG3hu6VjIC5naXRcbiIKKyIoZMO5bmcg4oCccm0gLXJm4oCdIG7hur91IGLhuqFuIHRo4buxYyBz4buxIG114buRbiBn4buhIGLhu48gbsOzIGPDuW5nIHbhu5tpIHThuqV0IGPhuqMgbOG7i2NoIHPhu60gY+G7p2EgIgorImNow7puZykiCisKKyM6IGJ1aWx0aW4vcm0uYzoxNzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgaGFzIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCBmcm9tIGJvdGggdGhlIGZpbGUgYW5kIHRoZSBIRUFEXG4iCiAiKHVzZSAtZiB0byBmb3JjZSByZW1vdmFsKSIKIG1zZ3N0ciAiIgotIiclcycgY8OzIG7hu5lpIGR1bmcgxJHGsOG7o2MgbMawdSB0cuG6oW5nIHRow6FpIGtow6FjIGJp4buHdCB04burIGPhuqMgdOG6rXAgdGluIHbDoCBj4bqjIEhFQURcbiIKLSIoc+G7rSBk4bulbmcgLWYgxJHhu4Mgw6lwIGJ14buZYyBn4buhIGLhu48pIgorIuKAnCVz4oCdIGPDsyBu4buZaSBkdW5nIMSRxrDhu6NjIGzGsHUgdHLhuqFuZyB0aMOhaSBraMOhYyBiaeG7h3QgdOG7qyBj4bqjIHThuq1wIHRpbiB2w6AgY+G6oyBIRUFEXG4iCisiKGTDuW5nIHTDuXkgY2jhu41uIC1mIMSR4buDIMOpcCBideG7mWMgZ+G7oSBi4buPKSIKIAotIzogYnVpbHRpbi9ybS5jOjExNQorIzogYnVpbHRpbi9ybS5jOjE4MAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJyVzJyBoYXMgY2hhbmdlcyBzdGFnZWQgaW4gdGhlIGluZGV4XG4iCiAiKHVzZSAtLWNhY2hlZCB0byBrZWVwIHRoZSBmaWxlLCBvciAtZiB0byBmb3JjZSByZW1vdmFsKSIKIG1zZ3N0ciAiIgotIiclcycgY8OzIGPDoWMgdGhheSDEkeG7lWkgxJHGsOG7o2MgbMawdSB0cuG6oW5nIHRow6FpIHRyb25nIGLhuqNuZyBt4bulYyBs4bulY1xuIgotIihz4butIGThu6VuZyAtLWNhY2hlZCDEkeG7gyBnaeG7ryB04bqtcCB0aW4sIGhv4bq3YyAtZiDEkeG7gyDDqXAgYnXhu5ljIGfhu6EgYuG7jykiCisi4oCcJXPigJ0gY8OzIGPDoWMgdGhheSDEkeG7lWkgxJHGsOG7o2MgbMawdSB0cuG6oW5nIHRow6FpIHRyb25nIGLhuqNuZyBt4bulYyBs4bulY1xuIgorIihkw7luZyB0w7l5IGNo4buNbiAtLWNhY2hlZCDEkeG7gyBnaeG7ryB04bqtcCB0aW4sIGhv4bq3YyAtZiDEkeG7gyDDqXAgYnXhu5ljIGfhu6EgYuG7jykiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxMTkKKyM6IGJ1aWx0aW4vcm0uYzoxOTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgaGFzIGxvY2FsIG1vZGlmaWNhdGlvbnNcbiIKICIodXNlIC0tY2FjaGVkIHRvIGtlZXAgdGhlIGZpbGUsIG9yIC1mIHRvIGZvcmNlIHJlbW92YWwpIgogbXNnc3RyICIiCi0iJyVzJyBjw7MgY8OhYyB0aGF5IMSR4buVaSBu4buZaSBi4buZXG4iCi0iKHPhu60gZOG7pW5nIC0tY2FjaGVkIMSR4buDIGdp4buvIHThuq1wIHRpbiwgaG/hurdjIC1mIMSR4buDIMOpcCBideG7mWMgZ+G7oSBi4buPKSIKKyLigJwlc+KAnSBjw7MgY8OhYyB0aGF5IMSR4buVaSBu4buZaSBi4buZXG4iCisiKGTDuW5nIHTDuXkgY2jhu41uIC0tY2FjaGVkIMSR4buDIGdp4buvIHThuq1wIHRpbiwgaG/hurdjIC1mIMSR4buDIMOpcCBideG7mWMgZ+G7oSBi4buPKSIKIAotIzogYnVpbHRpbi9ybS5jOjE5NAorIzogYnVpbHRpbi9ybS5jOjIwNworbXNnaWQgImRvIG5vdCBsaXN0IHJlbW92ZWQgZmlsZXMiCittc2dzdHIgImtow7RuZyBsaeG7h3Qga8OqIGPDoWMgdOG6rXAgdGluIMSRw6MgZ+G7oSBi4buPIgorCisjOiBidWlsdGluL3JtLmM6MjA4Cittc2dpZCAib25seSByZW1vdmUgZnJvbSB0aGUgaW5kZXgiCittc2dzdHIgImNo4buJIGfhu6EgYuG7jyB04burIG3hu6VjIGzhu6VjIgorCisjOiBidWlsdGluL3JtLmM6MjA5Cittc2dpZCAib3ZlcnJpZGUgdGhlIHVwLXRvLWRhdGUgY2hlY2siCittc2dzdHIgImdoaSDEkcOoIGzDqm4ga2nhu4NtIHRyYSBj4bqtcCBuaOG6rXQiCisKKyM6IGJ1aWx0aW4vcm0uYzoyMTAKK21zZ2lkICJhbGxvdyByZWN1cnNpdmUgcmVtb3ZhbCIKK21zZ3N0ciAiY2hvIHBow6lwIGfhu6EgYuG7jyDEkeG7hyBxdWkiCisKKyM6IGJ1aWx0aW4vcm0uYzoyMTIKK21zZ2lkICJleGl0IHdpdGggYSB6ZXJvIHN0YXR1cyBldmVuIGlmIG5vdGhpbmcgbWF0Y2hlZCIKK21zZ3N0ciAidGhvw6F0IHJhIHbhu5tpIHRy4bqhbmcgdGjDoWkga2jDoWMga2jDtG5nIHRo4bqtbSBjaMOtIG7hur91IGtow7RuZyBjw7MgZ8OsIGto4bubcCIKKworIzogYnVpbHRpbi9ybS5jOjI4MwogIywgYy1mb3JtYXQKIG1zZ2lkICJub3QgcmVtb3ZpbmcgJyVzJyByZWN1cnNpdmVseSB3aXRob3V0IC1yIgotbXNnc3RyICJraMO0bmcgdGjhu4MgZ+G7oSBi4buPICclcycgbeG7mXQgY8OhY2ggxJHhu4cgcXVpIG3DoCBraMO0bmcgY8OzIHTDuXkgY2jhu41uIC1yIgorbXNnc3RyICJraMO0bmcgdGjhu4MgZ+G7oSBi4buPIOKAnCVz4oCdIG3hu5l0IGPDoWNoIMSR4buHIHF1aSBtw6Aga2jDtG5nIGPDsyB0w7l5IGNo4buNbiAtciIKIAotIzogYnVpbHRpbi9ybS5jOjIzMAorIzogYnVpbHRpbi9ybS5jOjMyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgcm06IHVuYWJsZSB0byByZW1vdmUgJXMiCiBtc2dzdHIgImdpdCBybToga2jDtG5nIHRo4buDIGfhu6EgYuG7jyAlcyIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjE1NworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjEzCittc2dpZCAiZ2l0IHNob3J0bG9nIFs8b3B0aW9ucz5dIFs8cmV2aXNpb24gcmFuZ2U+XSBbWy0tXSBbPHBhdGg+Li4uXV0iCittc2dzdHIgImdpdCBzaG9ydGxvZyBbY8OhYy10w7l5LWNo4buNbl0gWzx2w7luZy14ZW0teMOpdD5dIFtbLS1dIFs8xJHGsOG7nW5nLWThuqtuPi4uLl1dIgorCisjOiBidWlsdGluL3Nob3J0bG9nLmM6MTMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1pc3NpbmcgYXV0aG9yOiAlcyIKIG1zZ3N0ciAiVGhp4bq/dSB0w6puIHTDoWMgZ2nhuqM6ICVzIgogCisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjI3Cittc2dpZCAic29ydCBvdXRwdXQgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgY29tbWl0cyBwZXIgYXV0aG9yIgorbXNnc3RyICJz4bqvcCB44bq/cCBr4bq/dCB4deG6pXQgdHXDom4gdGhlbyBz4buRIGzGsOG7o25nIGNodXnhu4NuIGdpYW8gdHLDqm4gbeG7l2kgdMOhYyBnaeG6oyIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIyOQorbXNnaWQgIlN1cHByZXNzIGNvbW1pdCBkZXNjcmlwdGlvbnMsIG9ubHkgcHJvdmlkZXMgY29tbWl0IGNvdW50IgorbXNnc3RyICJDaOG6t24gbeG7jWkgbcO0IHThuqMgbOG6p24gY2h1eeG7g24gZ2lhbywgY2jhu4kgxJHGsGEgcmEgc+G7kSBsxrDhu6NuZyBs4bqnbiBjaHV54buDbiBnaWFvIgorCisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjMxCittc2dpZCAiU2hvdyB0aGUgZW1haWwgYWRkcmVzcyBvZiBlYWNoIGF1dGhvciIKK21zZ3N0ciAiSGnhu4NuIHRo4buLIHRoxrAgxJFp4buHbiB04butIGNobyB04burbmcgdMOhYyBnaeG6oyIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMgorbXNnaWQgIndbLGkxWyxpMl1dIgorbXNnc3RyICJ3WyxpMVssaTJdXSIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMworbXNnaWQgIkxpbmV3cmFwIG91dHB1dCIKK21zZ3N0ciAiTmfhuq90IGTDsm5nIGtoaSBxdcOhIGTDoGkiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo5Cittc2dpZCAiIgorImdpdCBzaG93LWJyYW5jaCBbLWF8LS1hbGxdIFstcnwtLXJlbW90ZXNdIFstLXRvcG8tb3JkZXIgfCAtLWRhdGUtb3JkZXJdIFstLSIKKyJjdXJyZW50XSBbLS1jb2xvcls9PHdoZW4+XSB8IC0tbm8tY29sb3JdIFstLXNwYXJzZV0gWy0tbW9yZT08bj4gfCAtLWxpc3QgfCAtLSIKKyJpbmRlcGVuZGVudCB8IC0tbWVyZ2UtYmFzZV0gWy0tbm8tbmFtZSB8IC0tc2hhMS1uYW1lXSBbLS10b3BpY3NdIFsoPHJldj4gfCAiCisiPGdsb2I+KS4uLl0iCittc2dzdHIgIiIKKyJnaXQgc2hvdy1icmFuY2ggWy1hfC0tYWxsXSBbLXJ8LS1yZW1vdGVzXSBbLS10b3BvLW9yZGVyIHwgLS1kYXRlLW9yZGVyXSBbLS0iCisiY3VycmVudF0gWy0tY29sb3JbPTxraGk+XSB8IC0tbm8tY29sb3JdIFstLXNwYXJzZV0gWy0tbW9yZT08bj4gfCAtLWxpc3QgfCAtLSIKKyJpbmRlcGVuZGVudCB8IC0tbWVyZ2UtYmFzZV0gWy0tbm8tbmFtZSB8IC0tc2hhMS1uYW1lXSBbLS10b3BpY3NdIFsoPHJldj4gfCAiCisiPGdsb2I+KS4uLl0iCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzoxMAorbXNnaWQgImdpdCBzaG93LWJyYW5jaCAoLWd8LS1yZWZsb2cpWz08bj5bLDxiYXNlPl1dIFstLWxpc3RdIFs8cmVmPl0iCittc2dzdHIgImdpdCBzaG93LWJyYW5jaCAoLWd8LS1yZWZsb2cpWz08bj5bLDxu4buBbj5dXSBbLS1saXN0XSBbPHJlZj5dIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjUwCittc2dpZCAic2hvdyByZW1vdGUtdHJhY2tpbmcgYW5kIGxvY2FsIGJyYW5jaGVzIgorbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyBuaMOhbmggcmVtb3RlLXRyYWNraW5nIHbDoCBu4buZaSBi4buZIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjUyCittc2dpZCAic2hvdyByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMiCittc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIG5ow6FuaCByZW1vdGUtdHJhY2tpbmciCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTQKK21zZ2lkICJjb2xvciAnKiErLScgY29ycmVzcG9uZGluZyB0byB0aGUgYnJhbmNoIgorbXNnc3RyICJtw6B1IOKAnCohKy3igJ0gdMawxqFuZyDhu6luZyB24bubaSBuaMOhbmgiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTYKK21zZ2lkICJzaG93IDxuPiBtb3JlIGNvbW1pdHMgYWZ0ZXIgdGhlIGNvbW1vbiBhbmNlc3RvciIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIHRow6ptIDxuPiBs4bqnbiBjaHV54buDbiBnaWFvIHNhdSBjaGEgbeG6uSBjaHVuZyIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1OAorbXNnaWQgInN5bm9ueW0gdG8gbW9yZT0tMSIKK21zZ3N0ciAixJHhu5NuZyBuZ2jEqWEgduG7m2kgbW9yZT0tMSIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1OQorbXNnaWQgInN1cHByZXNzIG5hbWluZyBzdHJpbmdzIgorbXNnc3RyICJjaOG6t24gY8OhYyBjaHXhu5dpIMSR4bq3dCB0w6puIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjYxCittc2dpZCAiaW5jbHVkZSB0aGUgY3VycmVudCBicmFuY2giCittc2dzdHIgImJhbyBn4buTbSBuaMOhbmggaGnhu4duIGjDoG5oIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjYzCittc2dpZCAibmFtZSBjb21taXRzIHdpdGggdGhlaXIgb2JqZWN0IG5hbWVzIgorbXNnc3RyICLEkeG6t3QgdMOqbiBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gYuG6sW5nIGPDoWMgdMOqbiBj4bunYSDEkeG7kWkgdMaw4bujbmcgY+G7p2EgY2jDum5nIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY1Cittc2dpZCAic2hvdyBwb3NzaWJsZSBtZXJnZSBiYXNlcyIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIG3hu41pIGPGoSBz4bufIGPDsyB0aOG7gyBkw7luZyDEkeG7gyBow7JhIHRy4buZbiIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2NworbXNnaWQgInNob3cgcmVmcyB1bnJlYWNoYWJsZSBmcm9tIGFueSBvdGhlciByZWYiCittc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIHRoYW0gY2hp4bq/dSBraMO0bmcgdGjhu4MgxJHGsOG7o2MgxJHhu41jIGLhu59pIGLhuqV0IGvhu7MgdGhhbSBjaGnhur91IGtow6FjIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY5Cittc2dpZCAic2hvdyBjb21taXRzIGluIHRvcG9sb2dpY2FsIG9yZGVyIgorbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyBs4bqnbiBjaHV54buDbiBnaWFvIHRoZW8gdGjhu6kgdOG7sSB0w7Rww7QiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzEKK21zZ2lkICJzaG93IG9ubHkgY29tbWl0cyBub3Qgb24gdGhlIGZpcnN0IGJyYW5jaCIKK21zZ3N0ciAiY2jhu4kgaGnhu4NuIHRo4buLIGPDoWMgbOG6p24gY2h1eeG7g24gZ2lhbyBraMO0bmcgbuG6sW0gdHLDqm4gbmjDoW5oIMSR4bqndSB0acOqbiIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3MworbXNnaWQgInNob3cgbWVyZ2VzIHJlYWNoYWJsZSBmcm9tIG9ubHkgb25lIHRpcCIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGPDoWMgbOG6p24gaMOyYSB0cuG7mW4gY8OzIHRo4buDIMSR4buNYyDEkcaw4bujYyBjaOG7iSB04burIG3hu5l0IMSR4bqndSBtw7p0IgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc1Cittc2dpZCAic2hvdyBjb21taXRzIHdoZXJlIG5vIHBhcmVudCBjb21lcyBiZWZvcmUgaXRzIGNoaWxkcmVuIgorbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyBs4bqnbiBjaHV54buDbiBnaWFvIG7GoWkgbcOgIGNoYSBt4bq5IMSR4bq/biB0csaw4bubYyBjb24gY+G7p2EgbsOzIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc3Cittc2dpZCAiPG4+Wyw8YmFzZT5dIgorbXNnc3RyICI8bj5bLDxjxqEgc+G7nz5dIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc4Cittc2dpZCAic2hvdyA8bj4gbW9zdCByZWNlbnQgcmVmLWxvZyBlbnRyaWVzIHN0YXJ0aW5nIGF0IGJhc2UiCittc2dzdHIgImhp4buDbiB0aOG7iyA8bj4gY8OhYyBt4bulYyDigJxyZWYtbG9n4oCdIGfhuqduIG5o4bqldCBr4buDIHThu6sgbuG7gW4gKGJhc2UpIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTAKK21zZ2lkICIiCisiZ2l0IHNob3ctcmVmIFstcXwtLXF1aWV0XSBbLS12ZXJpZnldIFstLWhlYWRdIFstZHwtLWRlcmVmZXJlbmNlXSBbLXN8LS1oYXNoIgorIls9PG4+XV0gWy0tYWJicmV2Wz08bj5dXSBbLS10YWdzXSBbLS1oZWFkc10gWy0tXSBbcGF0dGVybipdICIKK21zZ3N0ciAiIgorImdpdCBzaG93LXJlZiBbLXF8LS1xdWlldF0gWy0tdmVyaWZ5XSBbLS1oZWFkXSBbLWR8LS1kZXJlZmVyZW5jZV0gWy1zfC0taGFzaCIKKyJbPTxuPl1dIFstLWFiYnJldls9PG4+XV0gWy0tdGFnc10gWy0taGVhZHNdIFstLV0gW23huqt1Kl0gIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTEKK21zZ2lkICJnaXQgc2hvdy1yZWYgLS1leGNsdWRlLWV4aXN0aW5nWz1wYXR0ZXJuXSA8IHJlZi1saXN0IgorbXNnc3RyICJnaXQgc2hvdy1yZWYgLS1leGNsdWRlLWV4aXN0aW5nWz1t4bqrdV0gPCByZWYtbGlzdCIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE2NQorbXNnaWQgIm9ubHkgc2hvdyB0YWdzIChjYW4gYmUgY29tYmluZWQgd2l0aCBoZWFkcykiCittc2dzdHIgImNo4buJIGhp4buDbiB0aOG7iyB0aOG6uyAoY8OzIHRo4buDIHThu5UgaOG7o3AgY8O5bmcgduG7m2kgxJHhuqd1KSIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE2NgorbXNnaWQgIm9ubHkgc2hvdyBoZWFkcyAoY2FuIGJlIGNvbWJpbmVkIHdpdGggdGFncykiCittc2dzdHIgImNo4buJIGhp4buDbiB0aOG7iyDEkeG6p3UgKGPDsyB0aOG7gyB04buVIGjhu6NwIGPDuW5nIHbhu5tpIHRo4bq7KSIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE2NworbXNnaWQgInN0cmljdGVyIHJlZmVyZW5jZSBjaGVja2luZywgcmVxdWlyZXMgZXhhY3QgcmVmIHBhdGgiCittc2dzdHIgIiIKKyJ2aeG7h2Mga2nhu4NtIHRyYSB0aGFtIGNoaeG6v3UgY2jDrW5oIHjDoWMsIMSRw7JpIGjhu49pIGNow61uaCB4w6FjIMSRxrDhu51uZyBk4bqrbiB0aGFtIGNoaeG6v3UgIgorIihyZWYpIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTcwIGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzIKK21zZ2lkICJzaG93IHRoZSBIRUFEIHJlZmVyZW5jZSIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIHRoYW0gY2hp4bq/dSBj4bunYSBIRUFEIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTc0Cittc2dpZCAiZGVyZWZlcmVuY2UgdGFncyBpbnRvIG9iamVjdCBJRHMiCittc2dzdHIgImLDo2kgYuG7jyB0aGFtIGNoaeG6v3UgY8OhYyB0aOG6uyB0aMOgbmggcmEgY8OhYyBJRCDEkeG7kWkgdMaw4bujbmciCisKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzYKK21zZ2lkICJvbmx5IHNob3cgU0hBMSBoYXNoIHVzaW5nIDxuPiBkaWdpdHMiCittc2dzdHIgImNo4buJIGhp4buDbiB0aOG7iyBtw6MgYsSDbSBTSEExIHPhu60gZOG7pW5nIDxuPiBjaOG7ryBz4buRIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTgwCittc2dpZCAiZG8gbm90IHByaW50IHJlc3VsdHMgdG8gc3Rkb3V0ICh1c2VmdWwgd2l0aCAtLXZlcmlmeSkiCittc2dzdHIgIiIKKyJraMO0bmcgaGnhu4NuIHRo4buLIGvhur90IHF14bqjIHJhIMSR4bqndSByYSBjaHXhuqluIChzdGRvdXQpIChjaOG7iSBo4buvdSBk4bulbmcgduG7m2kgLS12ZXJpZnkpIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTgyCittc2dpZCAic2hvdyByZWZzIGZyb20gc3RkaW4gdGhhdCBhcmVuJ3QgaW4gbG9jYWwgcmVwb3NpdG9yeSIKK21zZ3N0ciAiIgorImhp4buDbiB0aOG7iyBjw6FjIHRoYW0gY2hp4bq/dSAocmVmcykgdOG7qyDEkeG6p3UgdsOgbyB0acOqdSBjaHXhuqluIChzdGRpbikgY8OhaSBtw6Aga2jDtG5nIOG7nyAiCisia2hvIG7hu5lpIGLhu5kiCisKKyM6IGJ1aWx0aW4vc3ltYm9saWMtcmVmLmM6NworbXNnaWQgImdpdCBzeW1ib2xpYy1yZWYgW29wdGlvbnNdIG5hbWUgW3JlZl0iCittc2dzdHIgImdpdCBzeW1ib2xpYy1yZWYgIFtjw6FjLXTDuXktY2jhu41uXSB0w6puIFt0LmNoaeG6v3VdIgorCisjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjgKK21zZ2lkICJnaXQgc3ltYm9saWMtcmVmIC1kIFstcV0gbmFtZSIKK21zZ3N0ciAiZ2l0IHN5bWJvbGljLXJlZiAtZCBbLXFdIHTDqm4iCisKKyM6IGJ1aWx0aW4vc3ltYm9saWMtcmVmLmM6NDAKK21zZ2lkICJzdXBwcmVzcyBlcnJvciBtZXNzYWdlIGZvciBub24tc3ltYm9saWMgKGRldGFjaGVkKSByZWZzIgorbXNnc3RyICIiCisiY2jhurduIGPDoWMgdGjDtG5nIHRpbiBs4buXaSBjaG8gY8OhYyB0aGFtIGNoaeG6v3UgKHJlZnMpIOKAnG5vbi1zeW1ib2xpY+KAnSAoYuG7iyB0w6FjaCByYSkiCisKKyM6IGJ1aWx0aW4vc3ltYm9saWMtcmVmLmM6NDEKK21zZ2lkICJkZWxldGUgc3ltYm9saWMgcmVmIgorbXNnc3RyICJ4w7NhIHRoYW0gY2hp4bq/dSAocmVmKSB0xrDhu6NuZyB0csawbmciCisKKyM6IGJ1aWx0aW4vc3ltYm9saWMtcmVmLmM6NDIKK21zZ2lkICJzaG9ydGVuIHJlZiBvdXRwdXQiCittc2dzdHIgImzDoG0gbmfhuq9uIGvhur90IHh14bqldCByZWYgKHRoYW0gY2hp4bq/dSkiCisKKyM6IGJ1aWx0aW4vc3ltYm9saWMtcmVmLmM6NDMgYnVpbHRpbi91cGRhdGUtcmVmLmM6MTgKK21zZ2lkICJyZWFzb24iCittc2dzdHIgImzDvSBkbyIKKworIzogYnVpbHRpbi9zeW1ib2xpYy1yZWYuYzo0MyBidWlsdGluL3VwZGF0ZS1yZWYuYzoxOAorbXNnaWQgInJlYXNvbiBvZiB0aGUgdXBkYXRlIgorbXNnc3RyICJsw70gZG8gY+G6rXAgbmjhuq10IgorCisjOiBidWlsdGluL3RhZy5jOjIyCittc2dpZCAiIgorImdpdCB0YWcgWy1hfC1zfC11IDxrZXktaWQ+XSBbLWZdIFstbSA8bXNnPnwtRiA8ZmlsZT5dIDx0YWduYW1lPiBbPGhlYWQ+XSIKK21zZ3N0ciAiIgorImdpdCB0YWcgWy1hfC1zfC11IDxrZXktaWQ+XSBbLWZdIFstbSA8bXNnPnwtRiA8dOG6rXAtdGluPl0gPHTDqm4tdGjhurs+IFs8aGVhZD5dIgorCisjOiBidWlsdGluL3RhZy5jOjIzCittc2dpZCAiZ2l0IHRhZyAtZCA8dGFnbmFtZT4uLi4iCittc2dzdHIgImdpdCB0YWcgLWQgPHTDqm4tdGjhurs+Li4uIgorCisjOiBidWlsdGluL3RhZy5jOjI0Cittc2dpZCAiIgorImdpdCB0YWcgLWwgWy1uWzxudW0+XV0gWy0tY29udGFpbnMgPGNvbW1pdD5dIFstLXBvaW50cy1hdCA8b2JqZWN0Pl0gXG4iCisiXHRcdFs8cGF0dGVybj4uLi5dIgorbXNnc3RyICIiCisiZ2l0IHRhZyAtbCBbLW5bPG51bT5dXSBbLS1jb250YWlucyA8Y29tbWl0Pl0gWy0tcG9pbnRzLWF0IDzEkeG7kWktdMaw4bujbmc+XSBcbiIKKyJcdFx0Wzxt4bqrdT4uLi5dIgorCisjOiBidWlsdGluL3RhZy5jOjI2Cittc2dpZCAiZ2l0IHRhZyAtdiA8dGFnbmFtZT4uLi4iCittc2dzdHIgImdpdCB0YWcgLXYgPHTDqm4tdGjhurs+Li4uIgorCiAjOiBidWlsdGluL3RhZy5jOjYwCiAjLCBjLWZvcm1hdAogbXNnaWQgIm1hbGZvcm1lZCBvYmplY3QgYXQgJyVzJyIKLW1zZ3N0ciAixJHhu5FpIHTGsOG7o25nIGThu4sgaMOsbmggdOG6oWkgJyVzJyIKK21zZ3N0ciAixJHhu5FpIHTGsOG7o25nIGThu4sgaMOsbmggdOG6oWkg4oCcJXPigJ0iCiAKICM6IGJ1aWx0aW4vdGFnLmM6MjA3CiAjLCBjLWZvcm1hdApAQCAtNDYzOSwxNjMgKzg4MTMsMzgxIEBACiAjOiBidWlsdGluL3RhZy5jOjIxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJ0YWcgJyVzJyBub3QgZm91bmQuIgotbXNnc3RyICJraMO0bmcgdMOsbSB0aOG6pXkgdMOsbSB0aOG6pXkgdGjhursgJyVzJy4iCittc2dzdHIgImtow7RuZyB0w6xtIHRo4bqleSB0w6xtIHRo4bqleSB0aOG6uyDigJwlc+KAnS4iCiAKICM6IGJ1aWx0aW4vdGFnLmM6MjI3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkRlbGV0ZWQgdGFnICclcycgKHdhcyAlcylcbiIKLW1zZ3N0ciAiVGjhursgxJHDoyBi4buLIHjDs2EgJyVzJyAodHLGsOG7m2MgbMOgICVzKVxuIgorbXNnc3RyICJUaOG6uyDEkcOjIGLhu4sgeMOzYSDigJwlc+KAnSAodHLGsOG7m2MgbMOgICVzKVxuIgogCiAjOiBidWlsdGluL3RhZy5jOjIzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgdmVyaWZ5IHRoZSB0YWcgJyVzJyIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIHRo4bqpbSB0cmEgdGjhursgJyVzJyIKK21zZ3N0ciAia2jDtG5nIHRo4buDIHRo4bqpbSB0cmEgdGjhursg4oCcJXPigJ0iCiAKICM6IGJ1aWx0aW4vdGFnLmM6MjQ5CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKLSIjXG4iCi0iIyBXcml0ZSBhIHRhZyBtZXNzYWdlXG4iCi0iIyBMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQuXG4iCi0iI1xuIgorIldyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKKyJMaW5lcyBzdGFydGluZyB3aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLlxuIgogbXNnc3RyICIiCiAiXG4iCi0iI1xuIgotIiMgVmnhur90IGPDoWMgZ2hpIGNow7ogY2hvICh0aOG6uykgdGFnXG4iCi0iIyBOaOG7r25nIGTDsm5nIMSRxrDhu6NjIGLhuq90IMSR4bqndSBi4bqxbmcgJyMnIHPhur0gxJHGsOG7o2MgYuG7jyBxdWEuXG4iCi0iI1xuIgorIlZp4bq/dCBjw6FjIGdoaSBjaMO6IGNobyAodGjhurspIHRhZ1xuIgorIk5o4buvbmcgZMOybmcgxJHGsOG7o2MgYuG6r3QgxJHhuqd1IGLhurFuZyDigJwlY+KAnSBz4bq9IMSRxrDhu6NjIGLhu48gcXVhLlxuIgogCi0jOiBidWlsdGluL3RhZy5jOjI1NgorIzogYnVpbHRpbi90YWcuYzoyNTMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgotIiNcbiIKLSIjIFdyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKLSIjIExpbmVzIHN0YXJ0aW5nIHdpdGggJyMnIHdpbGwgYmUga2VwdDsgeW91IG1heSByZW1vdmUgdGhlbSB5b3Vyc2VsZiBpZiB5b3Ugd2FudCB0by5cbiIKLSIjXG4iCisiV3JpdGUgYSB0YWcgbWVzc2FnZVxuIgorIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0geW91cnNlbGYgaWYgeW91ICIKKyJ3YW50IHRvLlxuIgogbXNnc3RyICIiCiAiXG4iCi0iI1xuIgotIiMgVmnhur90IGPDoWMgZ2hpIGNow7ogY2hvICh0aOG6uykgdGFnXG4iCi0iIyBOaOG7r25nIGTDsm5nIMSRxrDhu6NjIGLhuq90IMSR4bqndSBi4bqxbmcgJyMnIHPhur0gxJHGsOG7o2MgYuG7jyBxdWE7IGLhuqFuIGPDsyB0aOG7gyB4w7NhIGNow7puZyDEkWkgbuG6v3UgbXXhu5FuLlxuIgotIiNcbiIKKyJWaeG6v3QgY8OhYyBnaGkgY2jDuiBjaG8gKHRo4bq7KSB0YWdcbiIKKyJOaOG7r25nIGTDsm5nIMSRxrDhu6NjIGLhuq90IMSR4bqndSBi4bqxbmcg4oCcJWPigJ0gc+G6vSDEkcaw4bujYyBi4buPIHF1YTsgYuG6oW4gY8OzIHRo4buDIHjDs2EgY2jDum5nIMSRaSAiCisibuG6v3UgbXXhu5FuLlxuIgogCi0jOiBidWlsdGluL3RhZy5jOjI5OAorIzogYnVpbHRpbi90YWcuYzoyOTIKIG1zZ2lkICJ1bmFibGUgdG8gc2lnbiB0aGUgdGFnIgogbXNnc3RyICJraMO0bmcgdGjhu4Mga8O9IHRo4bq7IgogCi0jOiBidWlsdGluL3RhZy5jOjMwMAorIzogYnVpbHRpbi90YWcuYzoyOTQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgdGFnIGZpbGUiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBnaGkgdsOgbyB04bqtcCB0aW4gbMawdSB0aOG6uyIKIAotIzogYnVpbHRpbi90YWcuYzozMjUKKyM6IGJ1aWx0aW4vdGFnLmM6MzE5CiBtc2dpZCAiYmFkIG9iamVjdCB0eXBlLiIKIG1zZ3N0ciAia2nhu4N1IMSR4buRaSB0xrDhu6NuZyBzYWkuIgogCi0jOiBidWlsdGluL3RhZy5jOjMzOAorIzogYnVpbHRpbi90YWcuYzozMzIKIG1zZ2lkICJ0YWcgaGVhZGVyIHRvbyBiaWcuIgogbXNnc3RyICLEkeG6p3UgdGjhursgKHRhZykgcXXDoSBs4bubbi4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MzcwCisjOiBidWlsdGluL3RhZy5jOjM2OAogbXNnaWQgIm5vIHRhZyBtZXNzYWdlPyIKIG1zZ3N0ciAia2jDtG5nIGPDsyB0aMO0bmcgxJFp4buHcCAobWVzc2FnZSkgY2hvIHRo4bq7ICh0YWcpPyIKIAotIzogYnVpbHRpbi90YWcuYzozNzYKKyM6IGJ1aWx0aW4vdGFnLmM6Mzc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlRoZSB0YWcgbWVzc2FnZSBoYXMgYmVlbiBsZWZ0IGluICVzXG4iCiBtc2dzdHIgIk7hu5lpIGR1bmcgZ2hpIGNow7ogY8OybiBs4bqhaSAlc1xuIgogCi0jOiBidWlsdGluL3RhZy5jOjQyNQorIzogYnVpbHRpbi90YWcuYzo0MjMKIG1zZ2lkICJzd2l0Y2ggJ3BvaW50cy1hdCcgcmVxdWlyZXMgYW4gb2JqZWN0IgotbXNnc3RyICJjaHV54buDbiDEkeG6v24gJ3BvaW50cy1hdCcgecOqdSBj4bqnbiBt4buZdCDEkeG7kWkgdMaw4bujbmciCittc2dzdHIgImNodXnhu4NuIMSR4bq/biDigJxwb2ludHMtYXTigJ0gecOqdSBj4bqnbiBt4buZdCDEkeG7kWkgdMaw4bujbmciCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDI3CisjOiBidWlsdGluL3RhZy5jOjQyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJtYWxmb3JtZWQgb2JqZWN0IG5hbWUgJyVzJyIKLW1zZ3N0ciAidMOqbiDEkeG7kWkgdMaw4bujbmcgZOG7iyBow6xuaCAnJXMnIgorbXNnc3RyICJ0w6puIMSR4buRaSB0xrDhu6NuZyBk4buLIGjDrG5oIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL3RhZy5jOjUwNgorIzogYnVpbHRpbi90YWcuYzo0NDUKK21zZ2lkICJsaXN0IHRhZyBuYW1lcyIKK21zZ3N0ciAiY2jhu4kgbGnhu4d0IGvDqiB0w6puIGPDoWMgdGjhursiCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ3Cittc2dpZCAicHJpbnQgPG4+IGxpbmVzIG9mIGVhY2ggdGFnIG1lc3NhZ2UiCittc2dzdHIgImhp4buDbiB0aOG7iyA8bj4gZMOybmcgY2hvIG3hu5dpIGdoaSBjaMO6IgorCisjOiBidWlsdGluL3RhZy5jOjQ0OQorbXNnaWQgImRlbGV0ZSB0YWdzIgorbXNnc3RyICJ4w7NhIHRo4bq7IgorCisjOiBidWlsdGluL3RhZy5jOjQ1MAorbXNnaWQgInZlcmlmeSB0YWdzIgorbXNnc3RyICJ0aOG6qW0gdHJhIHRo4bq7IgorCisjOiBidWlsdGluL3RhZy5jOjQ1MgorbXNnaWQgIlRhZyBjcmVhdGlvbiBvcHRpb25zIgorbXNnc3RyICJUw7l5IGNo4buNbiB04bqhbyB0YWciCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDU0Cittc2dpZCAiYW5ub3RhdGVkIHRhZywgbmVlZHMgYSBtZXNzYWdlIgorbXNnc3RyICLEkeG7gyBjaMO6IGdp4bqjaSBjaG8gdGjhurssIGPhuqduIG3hu5l0IGzhu51pIGdoaSBjaMO6IgorCisjOiBidWlsdGluL3RhZy5jOjQ1NgorbXNnaWQgInRhZyBtZXNzYWdlIgorbXNnc3RyICJ0aW4gbmjhuq9uIGNobyB0aOG6uyAodGFnKSIKKworIzogYnVpbHRpbi90YWcuYzo0NTgKK21zZ2lkICJhbm5vdGF0ZWQgYW5kIEdQRy1zaWduZWQgdGFnIgorbXNnc3RyICJ0aOG6uyBjaMO6IGdp4bqjaSB2w6Aga8O9IGtp4buDdSBHUEciCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDYyCittc2dpZCAidXNlIGFub3RoZXIga2V5IHRvIHNpZ24gdGhlIHRhZyIKK21zZ3N0ciAiZMO5bmcga2jDoW8ga2jDoWMgxJHhu4Mga8O9IHRo4bq7IgorCisjOiBidWlsdGluL3RhZy5jOjQ2MworbXNnaWQgInJlcGxhY2UgdGhlIHRhZyBpZiBleGlzdHMiCittc2dzdHIgInRoYXkgdGjhur8gbuG6v3UgdGFnIMSRw7MgxJHDoyBjw7MgdHLGsOG7m2MiCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDY0Cittc2dpZCAic2hvdyB0YWcgbGlzdCBpbiBjb2x1bW5zIgorbXNnc3RyICJoaeG7g24gdGjhu4sgZGFuaCBzw6FjaCB0aOG6uyB0cm9uZyBjw6FjIGPhu5l0IgorCisjOiBidWlsdGluL3RhZy5jOjQ2NgorbXNnaWQgIlRhZyBsaXN0aW5nIG9wdGlvbnMiCittc2dzdHIgIkPDoWMgdMO5eSBjaOG7jW4gbGnhu4d0IGvDqiB0aOG6uyIKKworIzogYnVpbHRpbi90YWcuYzo0NjkKK21zZ2lkICJwcmludCBvbmx5IHRhZ3MgdGhhdCBjb250YWluIHRoZSBjb21taXQiCittc2dzdHIgImNo4buJIGhp4buDbiB0aOG7iyBuaOG7r25nIG5ow6FuaCBtw6AgbsOzIGNo4bupYSBs4bqnbiBjaHV54buDbiBnaWFvIgorCisjOiBidWlsdGluL3RhZy5jOjQ3NQorbXNnaWQgInByaW50IG9ubHkgdGFncyBvZiB0aGUgb2JqZWN0IgorbXNnc3RyICJjaOG7iSBoaeG7g24gdGjhu4sgY8OhYyB0aOG6uyBj4bunYSDEkeG7kWkgdMaw4bujbmciCisKKyM6IGJ1aWx0aW4vdGFnLmM6NTA0CiBtc2dpZCAiLS1jb2x1bW4gYW5kIC1uIGFyZSBpbmNvbXBhdGlibGUiCiBtc2dzdHIgIi0tY29sdW1uIHbDoCAtbiB4dW5nIGto4bqvYyBuaGF1IgogCi0jOiBidWlsdGluL3RhZy5jOjUyMworIzogYnVpbHRpbi90YWcuYzo1MjEKIG1zZ2lkICItbiBvcHRpb24gaXMgb25seSBhbGxvd2VkIHdpdGggLWwuIgogbXNnc3RyICJ0w7l5IGNo4buNbiAtbiBjaOG7iSBjaG8gcGjDqXAgZMO5bmcgduG7m2kgLWwuIgogCi0jOiBidWlsdGluL3RhZy5jOjUyNQorIzogYnVpbHRpbi90YWcuYzo1MjMKIG1zZ2lkICItLWNvbnRhaW5zIG9wdGlvbiBpcyBvbmx5IGFsbG93ZWQgd2l0aCAtbC4iCiBtc2dzdHIgInTDuXkgY2jhu41uIC0tY29udGFpbnMgY2jhu4kgY2hvIHBow6lwIGTDuW5nIHbhu5tpIC1sLiIKIAotIzogYnVpbHRpbi90YWcuYzo1MjcKKyM6IGJ1aWx0aW4vdGFnLmM6NTI1CiBtc2dpZCAiLS1wb2ludHMtYXQgb3B0aW9uIGlzIG9ubHkgYWxsb3dlZCB3aXRoIC1sLiIKIG1zZ3N0ciAidMO5eSBjaOG7jW4gLS1wb2ludHMtYXQgY2jhu4kgY2hvIHBow6lwIGTDuW5nIHbhu5tpIC1sLiIKIAotIzogYnVpbHRpbi90YWcuYzo1MzUKKyM6IGJ1aWx0aW4vdGFnLmM6NTMzCiBtc2dpZCAib25seSBvbmUgLUYgb3IgLW0gb3B0aW9uIGlzIGFsbG93ZWQuIgogbXNnc3RyICJjaOG7iSBjw7MgbeG7mXQgdMO5eSBjaOG7jW4gLUYgaG/hurdjIC1tIGzDoCDEkcaw4bujYyBwaMOpcC4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTU1CisjOiBidWlsdGluL3RhZy5jOjU1MwogbXNnaWQgInRvbyBtYW55IHBhcmFtcyIKIG1zZ3N0ciAicXXDoSBuaGnhu4F1IMSR4buRaSBz4buRIgogCi0jOiBidWlsdGluL3RhZy5jOjU2MQorIzogYnVpbHRpbi90YWcuYzo1NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBpcyBub3QgYSB2YWxpZCB0YWcgbmFtZS4iCi1tc2dzdHIgIiclcycga2jDtG5nIHBo4bqjaSB0aOG6uyBo4bujcCBs4buHLiIKK21zZ3N0ciAi4oCcJXPigJ0ga2jDtG5nIHBo4bqjaSB0aOG6uyBo4bujcCBs4buHLiIKIAotIzogYnVpbHRpbi90YWcuYzo1NjYKKyM6IGJ1aWx0aW4vdGFnLmM6NTY0CiAjLCBjLWZvcm1hdAogbXNnaWQgInRhZyAnJXMnIGFscmVhZHkgZXhpc3RzIgotbXNnc3RyICJUaOG6uyAnJXMnIMSRw6MgdOG7k24gdOG6oWkgcuG7k2kiCittc2dzdHIgIlRo4bq7IOKAnCVz4oCdIMSRw6MgdOG7k24gdOG6oWkgcuG7k2kiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTg0CisjOiBidWlsdGluL3RhZy5jOjU4MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2Fubm90IGxvY2sgdGhlIHJlZiIKIG1zZ3N0ciAiJXM6IGtow7RuZyB0aOG7gyBraMOzYSByZWYgKHRoYW0gY2hp4bq/dSkiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTg2CisjOiBidWlsdGluL3RhZy5jOjU4NAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2Fubm90IHVwZGF0ZSB0aGUgcmVmIgogbXNnc3RyICIlczoga2jDtG5nIHRo4buDIGPhuq1wIG5o4bqtdCByZWYgKHRoYW0gY2hp4bq/dSkiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTg4CisjOiBidWlsdGluL3RhZy5jOjU4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJVcGRhdGVkIHRhZyAnJXMnICh3YXMgJXMpXG4iCi1tc2dzdHIgIlRo4bq7IMSRw6MgY+G6rXAgbmjhuq10ICclcycgKGPFqSBsw6AgJXMpXG4iCittc2dzdHIgIsSQw6MgY+G6rXAgbmjhuq10IHRo4bq7IOKAnCVz4oCdICh0csaw4bubYyBsw6AgJXMpXG4iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NDAxCittc2dpZCAiZ2l0IHVwZGF0ZS1pbmRleCBbb3B0aW9uc10gWy0tXSBbPGZpbGU+Li4uXSIKK21zZ3N0ciAiZ2l0IHVwZGF0ZS1pbmRleCBbY8OhYy10w7l5LWNo4buNbl0gWzx04bqtcC10aW4+Li4uXSIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MTgKK21zZ2lkICJjb250aW51ZSByZWZyZXNoIGV2ZW4gd2hlbiBpbmRleCBuZWVkcyB1cGRhdGUiCittc2dzdHIgInRp4bq/cCB04bulYyBsw6BtIG3hu5tpIG5nYXkgY+G6oyBraGkgYuG6o25nIG3hu6VjIGzhu6VjIGPhuqduIMSRxrDhu6NjIGPhuq1wIG5o4bqtdCIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MjEKK21zZ2lkICJyZWZyZXNoOiBpZ25vcmUgc3VibW9kdWxlcyIKK21zZ3N0ciAicmVmcmVzaDogbOG7nSDEkWkgbcO0LcSRdW4tY29uIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcyNAorbXNnaWQgImRvIG5vdCBpZ25vcmUgbmV3IGZpbGVzIgorbXNnc3RyICJraMO0bmcgYuG7jyBxdWEgY8OhYyB04bqtcCB0aW4gbeG7m2kgdOG6oW8iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzI2Cittc2dpZCAibGV0IGZpbGVzIHJlcGxhY2UgZGlyZWN0b3JpZXMgYW5kIHZpY2UtdmVyc2EiCittc2dzdHIgIsSR4buDIGPDoWMgdOG6rXAgdGluIHRoYXkgdGjhur8gY8OhYyB0aMawIG3hu6VjIHbDoCDigJx2aWNlLXZlcnNh4oCdIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcyOAorbXNnaWQgIm5vdGljZSBmaWxlcyBtaXNzaW5nIGZyb20gd29ya3RyZWUiCittc2dzdHIgInRow7RuZyBiw6FvIGPDoWMgdOG6rXAtdGluIHRoaeG6v3UgdHJvbmcgdGjGsC1t4bulYyBsw6BtIHZp4buHYyIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MzAKK21zZ2lkICJyZWZyZXNoIGV2ZW4gaWYgaW5kZXggY29udGFpbnMgdW5tZXJnZWQgZW50cmllcyIKK21zZ3N0ciAiIgorImzDoG0gdMawxqFpIG3hu5tpIHRo4bqtbSBjaMOtIGtoaSBi4bqjbmcgbeG7pWMgbOG7pWMgY2jhu6lhIGPDoWMgbeG7pWMgdGluIGNoxrBhIMSRxrDhu6NjIGjDsmEgdHLhu5luIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjczMworbXNnaWQgInJlZnJlc2ggc3RhdCBpbmZvcm1hdGlvbiIKK21zZ3N0ciAibOG6pXkgbOG6oWkgdGjDtG5nIHRpbiB0aOG7kW5nIGvDqiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MzcKK21zZ2lkICJsaWtlIC0tcmVmcmVzaCwgYnV0IGlnbm9yZSBhc3N1bWUtdW5jaGFuZ2VkIHNldHRpbmciCittc2dzdHIgImdp4buRbmcgLS1yZWZyZXNoLCBuaMawbmcgYuG7jyBxdWEgY8OhYyBjw6BpIMSR4bq3dCDigJxhc3N1bWUtdW5jaGFuZ2Vk4oCdIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc0MQorbXNnaWQgIjxtb2RlPiA8b2JqZWN0PiA8cGF0aD4iCittc2dzdHIgIjxtb2RlPiA8xJHhu5FpIHTGsOG7o25nPiA8xJHGsOG7nW5nIGThuqtuPiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NDIKK21zZ2lkICJhZGQgdGhlIHNwZWNpZmllZCBlbnRyeSB0byB0aGUgaW5kZXgiCittc2dzdHIgInRow6ptIGPDoWMgdOG6rXAgdGluIMSRw6MgY2jhu4kgcmEgdsOgbyBi4bqjbmcgbeG7pWMgbOG7pWMiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzQ2Cittc2dpZCAiKCsvLSl4IgorbXNnc3RyICIoKy8tKXgiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzQ3Cittc2dpZCAib3ZlcnJpZGUgdGhlIGV4ZWN1dGFibGUgYml0IG9mIHRoZSBsaXN0ZWQgZmlsZXMiCittc2dzdHIgImdoaSDEkcOoIGzDqm4gYsOtdCB0aGkgaMOgbmggY+G7p2EgY8OhYyB04bqtcCB0aW4gxJHGsOG7o2MgbGnhu4d0IGvDqiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NTEKK21zZ2lkICJtYXJrIGZpbGVzIGFzIFwibm90IGNoYW5naW5nXCIiCittc2dzdHIgIsSQw6FuaCBk4bqldSBjw6FjIHThuq1wIHRpbiBsw6AgXCJraMO0bmcgdGhheSDEkeG7lWlcIiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NTQKK21zZ2lkICJjbGVhciBhc3N1bWVkLXVuY2hhbmdlZCBiaXQiCittc2dzdHIgInjDs2EgYsOtdCAgYXNzdW1lZC11bmNoYW5nZWQiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzU3Cittc2dpZCAibWFyayBmaWxlcyBhcyBcImluZGV4LW9ubHlcIiIKK21zZ3N0ciAixJHDoW5oIGThuqV1IGPDoWMgdOG6rXAgdGluIGzDoCDigJxjaOG7iS3EkeG7jWPigJ0iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzYwCittc2dpZCAiY2xlYXIgc2tpcC13b3JrdHJlZSBiaXQiCittc2dzdHIgInjDs2EgYsOtdCBza2lwLXdvcmt0cmVlIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc2MworbXNnaWQgImFkZCB0byBpbmRleCBvbmx5OyBkbyBub3QgYWRkIGNvbnRlbnQgdG8gb2JqZWN0IGRhdGFiYXNlIgorbXNnc3RyICIiCisiY2jhu4kgdGjDqm0gdsOgbyBi4bqjbmcgbeG7pWMgbOG7pWM7IGtow7RuZyB0aMOqbSBu4buZaSBkdW5nIHbDoG8gY8ahIHPhu58gZOG7ryBsaeG7h3UgxJHhu5FpIHTGsOG7o25nIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc2NQorbXNnaWQgInJlbW92ZSBuYW1lZCBwYXRocyBldmVuIGlmIHByZXNlbnQgaW4gd29ya3RyZWUiCittc2dzdHIgIiIKKyJn4buhIGLhu48gY8OhYyDEkcaw4budbmcgZOG6q24gxJHGsOG7o2MgxJHhurd0IHTDqm4gdGjhuq1tIGNow60gY+G6oyBraGkgbsOzIGhp4buHbiBkaeG7h24gdHJvbmcgdGjGsCBt4bulYyAiCisibMOgbSB2aeG7h2MiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzY3Cittc2dpZCAid2l0aCAtLXN0ZGluOiBpbnB1dCBsaW5lcyBhcmUgdGVybWluYXRlZCBieSBudWxsIGJ5dGVzIgorbXNnc3RyICJ24bubaSB0w7l5IGNo4buNbiAtLXN0ZGluOiBjw6FjIGTDsm5nIMSR4bqndSB2w6BvIMSRxrDhu6NjIGNo4bqlbSBk4bupdCBi4bufaSBrw70gdOG7sSBudWxsIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc2OQorbXNnaWQgInJlYWQgbGlzdCBvZiBwYXRocyB0byBiZSB1cGRhdGVkIGZyb20gc3RhbmRhcmQgaW5wdXQiCittc2dzdHIgIsSR4buNYyBkYW5oIHPDoWNoIMSRxrDhu51uZyBk4bqrbiBj4bqnbiBj4bqtcCBuaOG6rXQgdOG7qyDEkeG6p3UgdsOgbyB0acOqdSBjaHXhuqluIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc3MworbXNnaWQgImFkZCBlbnRyaWVzIGZyb20gc3RhbmRhcmQgaW5wdXQgdG8gdGhlIGluZGV4IgorbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu41jIGPDoWMgbeG7pWMgdOG7qyDEkeG6p3UgdsOgbyB0acOqdSBjaHXhuqluIHbDoG8gYuG6o25nIG3hu6VjIGzhu6VjIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc3NworbXNnaWQgInJlcG9wdWxhdGUgc3RhZ2VzICMyIGFuZCAjMyBmb3IgdGhlIGxpc3RlZCBwYXRocyIKK21zZ3N0ciAicGjhu6VjIGjhu5NpIGPDoWMgdHLhuqFuZyB0aMOhaSAjMiB2w6AgIzMgY2hvIGPDoWMgxJHGsOG7nW5nIGThuqtuIMSRxrDhu6NjIGxp4buHdCBrw6oiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzgxCittc2dpZCAib25seSB1cGRhdGUgZW50cmllcyB0aGF0IGRpZmZlciBmcm9tIEhFQUQiCittc2dzdHIgImNo4buJIGPhuq1wIG5o4bqtdCBjw6FjIG3hu6VjIHRpbiBtw6AgbsOzIGtow6FjIGJp4buHdCBzbyB24bubaSBIRUFEIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc4NQorbXNnaWQgImlnbm9yZSBmaWxlcyBtaXNzaW5nIGZyb20gd29ya3RyZWUiCittc2dzdHIgImLhu48gcXVhIGPDoWMgdOG6rXAtdGluIHRoaeG6v3UgdHJvbmcgdGjGsC1t4bulYyBsw6BtIHZp4buHYyIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3ODgKK21zZ2lkICJyZXBvcnQgYWN0aW9ucyB0byBzdGFuZGFyZCBvdXRwdXQiCittc2dzdHIgImLDoW8gY8OhbyBjw6FjIHRoYW8gdMOhYyByYSB0aGnhur90IGLhu4sgeHXhuqV0IGNodeG6qW4iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzkwCittc2dpZCAiKGZvciBwb3JjZWxhaW5zKSBmb3JnZXQgc2F2ZWQgdW5yZXNvbHZlZCBjb25mbGljdHMiCittc2dzdHIgIihjaG8g4oCccG9yY2VsYWluc+KAnSkgcXXDqm4gY8OhYyB4dW5nIMSR4buZdCBjaMawYSDEkcaw4bujYyBnaeG6o2kgcXV54bq/dCDEkcOjIGdoaSIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3OTQKK21zZ2lkICJ3cml0ZSBpbmRleCBpbiB0aGlzIGZvcm1hdCIKK21zZ3N0ciAiZ2hpIG3hu6VjIGzhu6VjIOG7nyDEkeG7i25oIGThuqFuZyBuw6B5IgorCisjOiBidWlsdGluL3VwZGF0ZS1yZWYuYzo3Cittc2dpZCAiZ2l0IHVwZGF0ZS1yZWYgW29wdGlvbnNdIC1kIDxyZWZuYW1lPiBbPG9sZHZhbD5dIgorbXNnc3RyICJnaXQgdXBkYXRlLXJlZiBbY8OhYy10w7l5LWNo4buNbl0gLWQgPHJlZm5hbWU+IFs8Ymnhur9uLWPFqT5dIgorCisjOiBidWlsdGluL3VwZGF0ZS1yZWYuYzo4Cittc2dpZCAiZ2l0IHVwZGF0ZS1yZWYgW29wdGlvbnNdICAgIDxyZWZuYW1lPiA8bmV3dmFsPiBbPG9sZHZhbD5dIgorbXNnc3RyICJnaXQgdXBkYXRlLXJlZiBbY8OhYy10w7l5LWNo4buNbl0gICAgPHJlZm5hbWU+IDxiaeG6v24tbeG7m2k+IFs8Ymnhur9uLWPFqT5dIgorCisjOiBidWlsdGluL3VwZGF0ZS1yZWYuYzoxOQorbXNnaWQgImRlbGV0ZSB0aGUgcmVmZXJlbmNlIgorbXNnc3RyICJ4w7NhIHRoYW0gY2hp4bq/dSIKKworIzogYnVpbHRpbi91cGRhdGUtcmVmLmM6MjEKK21zZ2lkICJ1cGRhdGUgPHJlZm5hbWU+IG5vdCB0aGUgb25lIGl0IHBvaW50cyB0byIKK21zZ3N0ciAiY+G6rXAgbmjhuq10IDx0w6puLXRoYW0tY2hp4bq/dT4ga2jDtG5nIHBo4bqjaSBjw6FpIG7DsyBjaOG7iSB04bubaSIKKworIzogYnVpbHRpbi91cGRhdGUtc2VydmVyLWluZm8uYzo2Cittc2dpZCAiZ2l0IHVwZGF0ZS1zZXJ2ZXItaW5mbyBbLS1mb3JjZV0iCittc2dzdHIgImdpdCB1cGRhdGUtc2VydmVyLWluZm8gWy0tZm9yY2VdIgorCisjOiBidWlsdGluL3VwZGF0ZS1zZXJ2ZXItaW5mby5jOjE0Cittc2dpZCAidXBkYXRlIHRoZSBpbmZvIGZpbGVzIGZyb20gc2NyYXRjaCIKK21zZ3N0ciAiY+G6rXAgbmjhuq10IGPDoWMgdOG6rXAgdGluIHRow7RuZyB0aW4gdOG7qyDEkWnhu4NtIHh14bqldCBwaMOhdCIKKworIzogYnVpbHRpbi92ZXJpZnktcGFjay5jOjU2Cittc2dpZCAiZ2l0IHZlcmlmeS1wYWNrIFstdnwtLXZlcmJvc2VdIFstc3wtLXN0YXQtb25seV0gPHBhY2s+Li4uIgorbXNnc3RyICJnaXQgdmVyaWZ5LXBhY2sgWy12fC0tdmVyYm9zZV0gWy1zfC0tc3RhdC1vbmx5XSA8Z8OzaT4uLi4iCisKKyM6IGJ1aWx0aW4vdmVyaWZ5LXBhY2suYzo2NgorbXNnaWQgInZlcmJvc2UiCittc2dzdHIgImNoaSB0aeG6v3QiCisKKyM6IGJ1aWx0aW4vdmVyaWZ5LXBhY2suYzo2OAorbXNnaWQgInNob3cgc3RhdGlzdGljcyBvbmx5IgorbXNnc3RyICJjaOG7iSBoaeG7g24gdGjhu4sgdGjhu5FuZyBrw6oiCisKKyM6IGJ1aWx0aW4vdmVyaWZ5LXRhZy5jOjE3Cittc2dpZCAiZ2l0IHZlcmlmeS10YWcgWy12fC0tdmVyYm9zZV0gPHRhZz4uLi4iCittc2dzdHIgImdpdCB2ZXJpZnktdGFnIFstdnwtLXZlcmJvc2VdIDx0aOG6uz4uLi4iCisKKyM6IGJ1aWx0aW4vdmVyaWZ5LXRhZy5jOjczCittc2dpZCAicHJpbnQgdGFnIGNvbnRlbnRzIgorbXNnc3RyICJoaeG7g24gdGjhu4sgbuG7mWkgZHVuZyBj4bunYSB0aOG6uyIKKworIzogYnVpbHRpbi93cml0ZS10cmVlLmM6MTMKK21zZ2lkICJnaXQgd3JpdGUtdHJlZSBbLS1taXNzaW5nLW9rXSBbLS1wcmVmaXg9PHByZWZpeD4vXSIKK21zZ3N0ciAiZ2l0IHdyaXRlLXRyZWUgWy0tbWlzc2luZy1va10gWy0tcHJlZml4PTx0aeG7gW4tdOG7kT4vXSIKKworIzogYnVpbHRpbi93cml0ZS10cmVlLmM6MjYKK21zZ2lkICI8cHJlZml4Pi8iCittc2dzdHIgIjxp4buBbiB04buRPi8iCisKKyM6IGJ1aWx0aW4vd3JpdGUtdHJlZS5jOjI3Cittc2dpZCAid3JpdGUgdHJlZSBvYmplY3QgZm9yIGEgc3ViZGlyZWN0b3J5IDxwcmVmaXg+IgorbXNnc3RyICJnaGkgxJHhu5FpIHTGsOG7o25nIGPDonkgKHRyZWUpIGNobyA8dGnhu4FuIHThu5E+IHRoxrAgbeG7pWMgY29uIgorCisjOiBidWlsdGluL3dyaXRlLXRyZWUuYzozMAorbXNnaWQgIm9ubHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmciCittc2dzdHIgImNo4buJIGjhu691IMOtY2gga2hpIGPhuqduIGfhu6EgbOG7l2kiCiAKICM6IGdpdC5jOjE2Ci1tc2dpZCAiU2VlICdnaXQgaGVscCA8Y29tbWFuZD4nIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGEgc3BlY2lmaWMgY29tbWFuZC4iCi1tc2dzdHIgIkNo4bqheSBs4buHbmggJ2dpdCBoZWxwIDx0w6puLWzhu4duaD4nIMSR4buDIGPDsyB0aMOqbSB0aMO0bmcgdGluIHbhu4EgbOG7h25oIMSRxrDhu6NjIGNo4buJIHJhLiIKLQotIzogcGFyc2Utb3B0aW9ucy5oOjEzMwotIzogcGFyc2Utb3B0aW9ucy5oOjIzNQotbXNnaWQgIm4iCi1tc2dzdHIgIm4iCi0KLSM6IHBhcnNlLW9wdGlvbnMuaDoxNDEKLW1zZ2lkICJ0aW1lIgotbXNnc3RyICJ0aOG7nWktZ2lhbiIKLQotIzogcGFyc2Utb3B0aW9ucy5oOjE0OQotbXNnaWQgImZpbGUiCi1tc2dzdHIgInThuq1wLXRpbiIKLQotIzogcGFyc2Utb3B0aW9ucy5oOjE1MQotbXNnaWQgIndoZW4iCi1tc2dzdHIgImtoaSIKK21zZ2lkICIiCisiJ2dpdCBoZWxwIC1hJyBhbmQgJ2dpdCBoZWxwIC1nJyBsaXN0cyBhdmFpbGFibGUgc3ViY29tbWFuZHMgYW5kIHNvbWVcbiIKKyJjb25jZXB0IGd1aWRlcy4gU2VlICdnaXQgaGVscCA8Y29tbWFuZD4nIG9yICdnaXQgaGVscCA8Y29uY2VwdD4nXG4iCisidG8gcmVhZCBhYm91dCBhIHNwZWNpZmljIHN1YmNvbW1hbmQgb3IgY29uY2VwdC4iCittc2dzdHIgIiIKKyLigJxnaXQgaGVscCAtYeKAnSB2w6Ag4oCcZ2l0IGhlbHAgLWfigJ0gbGnhu4d0IGvDqiBjw6FjIGPDonUgbOG7h25oIGNvbiBz4bq1biBjw7MgdsOgIG3hu5l0IHPhu5FcbiIKKyJoxrDhu5tuZyBk4bqrbiBraMOhaSBuaeG7h20gY8ahIGLhuqNuLiBYZW0g4oCcZ2l0IGhlbHAgPGzhu4duaD7igJ0gaGF5IOKAnGdpdCBoZWxwIDxraMOhaSAiCisibmnhu4dtPuKAnVxuIgorIsSR4buDIMSR4buNYyBjw6FjIMSR4bq3YyB04bqjIGNobyBs4buHbmggaGF5IGtow6FpIG5p4buHbSDEkcOzLiIKIAogIzogcGFyc2Utb3B0aW9ucy5oOjE1NgogbXNnaWQgIm5vLW9wIChiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSIKIG1zZ3N0ciAibm8tb3AgKHTGsMahbmcgdGjDrWNoIG5nxrDhu6NjKSIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjIyOAorIzogcGFyc2Utb3B0aW9ucy5oOjIzMgogbXNnaWQgImJlIG1vcmUgdmVyYm9zZSIKIG1zZ3N0ciAiY2hpIHRp4bq/dCBoxqFuIG7hu69hIgogCi0jOiBwYXJzZS1vcHRpb25zLmg6MjMwCisjOiBwYXJzZS1vcHRpb25zLmg6MjM0CiBtc2dpZCAiYmUgbW9yZSBxdWlldCIKIG1zZ3N0ciAiaW0gbOG6t25nIGjGoW4gbuG7r2EiCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyMzYKKyM6IHBhcnNlLW9wdGlvbnMuaDoyNDAKIG1zZ2lkICJ1c2UgPG4+IGRpZ2l0cyB0byBkaXNwbGF5IFNIQS0xcyIKIG1zZ3N0ciAic+G7rSBk4bulbmcgPG4+IGNo4buvIHPhu5EgxJHhu4MgaGnhu4NuIHRo4buLIFNIQS0xcyIKIApAQCAtNDgxMyw3ICs5MjA1LDcgQEAKIAogIzogY29tbW9uLWNtZHMuaDoxMQogbXNnaWQgIkNoZWNrb3V0IGEgYnJhbmNoIG9yIHBhdGhzIHRvIHRoZSB3b3JraW5nIHRyZWUiCi1tc2dzdHIgIkNoZWNrb3V0IG3hu5l0IG5ow6FuaCBoYXkgY8OhYyDEkcaw4budbmcgZOG6q24gdOG7nWkgY8OieSBsw6BtIHZp4buHYyIKK21zZ3N0ciAiTOG6pXkgcmEgKGNoZWNrb3V0KSBt4buZdCBuaMOhbmggaGF5IGPDoWMgxJHGsOG7nW5nIGThuqtuIHThu5tpIGPDonkgbMOgbSB2aeG7h2MiCiAKICM6IGNvbW1vbi1jbWRzLmg6MTIKIG1zZ2lkICJDbG9uZSBhIHJlcG9zaXRvcnkgaW50byBhIG5ldyBkaXJlY3RvcnkiCkBAIC00ODI1LDcgKzkyMTcsOSBAQAogCiAjOiBjb21tb24tY21kcy5oOjE0CiBtc2dpZCAiU2hvdyBjaGFuZ2VzIGJldHdlZW4gY29tbWl0cywgY29tbWl0IGFuZCB3b3JraW5nIHRyZWUsIGV0YyIKLW1zZ3N0ciAiSGnhu4NuIHRo4buLIGPDoWMgdGhheSDEkeG7lWkgZ2nhu69hIG5o4buvbmcgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSwgY29tbWl0IHbDoCBjw6J5IGzDoG0gdmnhu4djLCB2LnYuLiIKK21zZ3N0ciAiIgorIkhp4buDbiB0aOG7iyBjw6FjIHRoYXkgxJHhu5VpIGdp4buvYSBuaOG7r25nIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCksIGNvbW1pdCB2w6AgY8OieSBsw6BtICIKKyJ2aeG7h2MsIHYudi4uIgogCiAjOiBjb21tb24tY21kcy5oOjE1CiBtc2dpZCAiRG93bmxvYWQgb2JqZWN0cyBhbmQgcmVmcyBmcm9tIGFub3RoZXIgcmVwb3NpdG9yeSIKQEAgLTQ4MzYsMTYgKzkyMzAsMTkgQEAKIG1zZ3N0ciAiSW4gcmEgbmjhu69uZyBkw7JuZyBraOG7m3AgduG7m2kgbeG7mXQgbeG6q3UiCiAKICM6IGNvbW1vbi1jbWRzLmg6MTcKLW1zZ2lkICJDcmVhdGUgYW4gZW1wdHkgZ2l0IHJlcG9zaXRvcnkgb3IgcmVpbml0aWFsaXplIGFuIGV4aXN0aW5nIG9uZSIKLW1zZ3N0ciAiVOG6oW8gbeG7mXQga2hvIGdpdCB0cuG7kW5nIHLhu5duZyBoYXkga2jhu59pIHThuqFvIGzhuqFpIG3hu5l0IGtobyDEkcOjIHThu5NuIHThuqFpIHThu6sgdHLGsOG7m2MiCittc2dpZCAiQ3JlYXRlIGFuIGVtcHR5IEdpdCByZXBvc2l0b3J5IG9yIHJlaW5pdGlhbGl6ZSBhbiBleGlzdGluZyBvbmUiCittc2dzdHIgIiIKKyJU4bqhbyBt4buZdCBraG8gZ2l0IHRy4buRbmcgcuG7l25nIGhheSBraOG7n2kgdOG6oW8gbOG6oWkgbeG7mXQga2hvIMSRw6MgdOG7k24gdOG6oWkgdOG7qyB0csaw4bubYyIKIAogIzogY29tbW9uLWNtZHMuaDoxOAogbXNnaWQgIlNob3cgY29tbWl0IGxvZ3MiCi1tc2dzdHIgImhp4buDbiB0aOG7iyBuaOG6rXQga8O9IGPDoWMgbOG6p24gY29tbWl0IChjaHV54buDbiBnaWFvKSIKK21zZ3N0ciAiSGnhu4NuIHRo4buLIG5o4bqtdCBrw70gY8OhYyBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIgogCiAjOiBjb21tb24tY21kcy5oOjE5CiBtc2dpZCAiSm9pbiB0d28gb3IgbW9yZSBkZXZlbG9wbWVudCBoaXN0b3JpZXMgdG9nZXRoZXIiCi1tc2dzdHIgIkjhu6NwIG5o4bqldCBoYWkgaGF5IG5oaeG7gXUgaMahbiBs4buLY2ggc+G7rSBj4bunYSBjw6FjIG5ow6AgcGjDoXQgdHJp4buDbiBwaOG6p24gbeG7gW0gbOG6oWkgduG7m2kgbmhhdSIKK21zZ3N0ciAiIgorIkjhu6NwIG5o4bqldCBoYWkgaGF5IG5oaeG7gXUgaMahbiBs4buLY2ggc+G7rSBj4bunYSBjw6FjIG5ow6AgcGjDoXQgdHJp4buDbiBwaOG6p24gbeG7gW0gbOG6oWkgduG7m2kgIgorIm5oYXUiCiAKICM6IGNvbW1vbi1jbWRzLmg6MjAKIG1zZ2lkICJNb3ZlIG9yIHJlbmFtZSBhIGZpbGUsIGEgZGlyZWN0b3J5LCBvciBhIHN5bWxpbmsiCkBAIC00ODUzLDE1ICs5MjUwLDE3IEBACiAKICM6IGNvbW1vbi1jbWRzLmg6MjEKIG1zZ2lkICJGZXRjaCBmcm9tIGFuZCBtZXJnZSB3aXRoIGFub3RoZXIgcmVwb3NpdG9yeSBvciBhIGxvY2FsIGJyYW5jaCIKLW1zZ3N0ciAiRmV0Y2ggKGzhuqV5IHbhu4EpIHbDoCBow7JhIHRy4buZbmcgduG7m2kga2hvIGtow6FjIGhheSBuaMOhbmggbuG7mWkgYuG7mSIKK21zZ3N0ciAiTOG6pXkgduG7gSAoZmV0Y2gpIHbDoCBow7JhIHRy4buZbiB24bubaSBraG8ga2jDoWMgaGF5IG5ow6FuaCBu4buZaSBi4buZIgogCiAjOiBjb21tb24tY21kcy5oOjIyCiBtc2dpZCAiVXBkYXRlIHJlbW90ZSByZWZzIGFsb25nIHdpdGggYXNzb2NpYXRlZCBvYmplY3RzIgotbXNnc3RyICJD4bqtcCBuaOG6rXQgdGhhbSBjaGnhur91IChyZWZzKSBtw6F5IGNo4bunIGPDuW5nIHbhu5tpIGPDoWMgxJHhu5FpIHTGsOG7o25nIGxpw6puIHF1YW4gxJHhur9uIG7DsyIKK21zZ3N0ciAiIgorIkPhuq1wIG5o4bqtdCB0aGFtIGNoaeG6v3UgKHJlZnMpIG3DoXkgY2jhu6cgY8O5bmcgduG7m2kgY8OhYyDEkeG7kWkgdMaw4bujbmcgbGnDqm4gcXVhbiDEkeG6v24gbsOzIgogCiAjOiBjb21tb24tY21kcy5oOjIzCiBtc2dpZCAiRm9yd2FyZC1wb3J0IGxvY2FsIGNvbW1pdHMgdG8gdGhlIHVwZGF0ZWQgdXBzdHJlYW0gaGVhZCIKLW1zZ3N0ciAiRm9yd2FyZC1wb3J0IG5o4buvbmcgbOG6p24gY2h1eeG7g24gZ2lhbyBu4buZaSBi4buZIHThu5tpIGhlYWQgZMOybmcgbmfGsOG7o2MgxJHDoyBj4bqtcCBuaOG6rXQiCittc2dzdHIgIiIKKyJGb3J3YXJkLXBvcnQgbmjhu69uZyBs4bqnbiBjaHV54buDbiBnaWFvIG7hu5lpIGLhu5kgdOG7m2kgaGVhZCB0aMaw4bujbmcgbmd14buTbiDEkcOjIGPhuq1wIG5o4bqtdCIKIAogIzogY29tbW9uLWNtZHMuaDoyNAogbXNnaWQgIlJlc2V0IGN1cnJlbnQgSEVBRCB0byB0aGUgc3BlY2lmaWVkIHN0YXRlIgpAQCAtNDg4MSw3ICs5MjgwLDkgQEAKIAogIzogY29tbW9uLWNtZHMuaDoyOAogbXNnaWQgIkNyZWF0ZSwgbGlzdCwgZGVsZXRlIG9yIHZlcmlmeSBhIHRhZyBvYmplY3Qgc2lnbmVkIHdpdGggR1BHIgotbXNnc3RyICJU4bqhbywgbGnhu4d0IGvDqiwgeMOzYSBoYXkgeMOhYyB0aOG7sWMgbeG7mXQgxJHhu5FpIHTGsOG7o25nIHRo4bq7ICh0YWcpIG3DoCBuw7MgxJHGsOG7o2Mga8O9IHPhu60gZOG7pW5nIEdQRyIKK21zZ3N0ciAiIgorIlThuqFvLCBsaeG7h3Qga8OqLCB4w7NhIGhheSB4w6FjIHRo4buxYyBt4buZdCDEkeG7kWkgdMaw4bujbmcgdGjhursgKHRhZykgbcOgIG7DsyDEkcaw4bujYyBrw70gc+G7rSBk4bulbmcgIgorIkdQRyIKIAogIzogZ2l0LWFtLnNoOjUwCiBtc2dpZCAiWW91IG5lZWQgdG8gc2V0IHlvdXIgY29tbWl0dGVyIGluZm8gZmlyc3QiCkBAIC00ODkyLDI3ICs5MjkzLDM0IEBACiAiWW91IHNlZW0gdG8gaGF2ZSBtb3ZlZCBIRUFEIHNpbmNlIHRoZSBsYXN0ICdhbScgZmFpbHVyZS5cbiIKICJOb3QgcmV3aW5kaW5nIHRvIE9SSUdfSEVBRCIKIG1zZ3N0ciAiIgotIkLhuqFuIGPDsyBs4bq9IMSRw6MgY8OzIEhFQUQgxJHDoyBi4buLIGRpIGNodXnhu4NuIMSRaSBr4buDIHThu6sgbOG6p24gJ2FtJyB0aOG6pXQgYuG6oWkgY3Xhu5FpIGPDuW5nLlxuIgorIkLhuqFuIGPDsyBs4bq9IMSRw6MgY8OzIEhFQUQgxJHDoyBi4buLIGRpIGNodXnhu4NuIMSRaSBr4buDIHThu6sgbOG6p24g4oCcYW3igJ0gdGjhuqV0IGLhuqFpIGN14buRaSBjw7luZy5cbiIKICJLaMO0bmcgdGjhu4MgY2h1eeG7g24gdOG7m2kgT1JJR19IRUFEIgogCiAjOiBnaXQtYW0uc2g6MTA1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCi0iV2hlbiB5b3UgaGF2ZSByZXNvbHZlZCB0aGlzIHByb2JsZW0gcnVuIFwiJGNtZGxpbmUgLS1yZXNvbHZlZFwiLlxuIgotIklmIHlvdSB3b3VsZCBwcmVmZXIgdG8gc2tpcCB0aGlzIHBhdGNoLCBpbnN0ZWFkIHJ1biBcIiRjbWRsaW5lIC0tc2tpcFwiLlxuIgotIlRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGJyYW5jaCBhbmQgc3RvcCBwYXRjaGluZyBydW4gXCIkY21kbGluZSAtLWFib3J0XCIuIgorIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtLCBydW4gXCIkY21kbGluZSAtLXJlc29sdmVkXCIuXG4iCisiSWYgeW91IHByZWZlciB0byBza2lwIHRoaXMgcGF0Y2gsIHJ1biBcIiRjbWRsaW5lIC0tc2tpcFwiIGluc3RlYWQuXG4iCisiVG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBzdG9wIHBhdGNoaW5nLCBydW4gXCIkY21kbGluZSAtLWFib3J0XCIuIgogbXNnc3RyICIiCiAiS2hpIGLhuqFuIGPhuqduIGdp4bqjaSBxdXnhur90IHbhuqVuIMSR4buBIG7DoHkgaMOjeSBjaOG6oXkgbOG7h25oIFwiJGNtZGxpbmUgLS1yZXNvbHZlZFwiLlxuIgotIk7hur91IGLhuqFuIGPDsyDDvSDEkeG7i25oIGLhu48gcXVhIG1p4bq/bmcgdsOhLCB0aGF5IHbDoG8gxJHDsyBi4bqhbiBjaOG6oXkgXCIkY21kbGluZSAtLXNraXBcIi5cbiIKLSLEkOG7gyBwaOG7pWMgaOG7k2kgbOG6oWkgdGjDoG5oIG5ow6FuaCBuZ3V5w6puIGLhuqNuIHbDoCBk4burbmcgdmnhu4djIHbDoSBs4bqhaSB0aMOsIGNo4bqheSBcIiRjbWRsaW5lIC0tYWJvcnRcIi4iCisiTuG6v3UgYuG6oW4gY8OzIMO9IMSR4buLbmggYuG7jyBxdWEgbWnhur9uZyB2w6EsIHRoYXkgdsOgbyDEkcOzIGLhuqFuIGNo4bqheSBcIiRjbWRsaW5lIC0tc2tpcCIKKyJcIi5cbiIKKyLEkOG7gyBwaOG7pWMgaOG7k2kgbOG6oWkgdGjDoG5oIG5ow6FuaCBuZ3V5w6puIHRo4buneSB2w6AgZOG7q25nIHZp4buHYyB2w6EgbOG6oWkgdGjDrCBjaOG6oXkgIgorIlwiJGNtZGxpbmUgLS1hYm9ydFwiLiIKIAogIzogZ2l0LWFtLnNoOjEyMQogbXNnaWQgIkNhbm5vdCBmYWxsIGJhY2sgdG8gdGhyZWUtd2F5IG1lcmdlLiIKLW1zZ3N0ciAixJBhbmcgdHLhu58gbOG6oWkgxJHhu4MgaMOyYSB0cuG7mW4ga2nhu4N1ICd0aHJlZS13YXknLiIKK21zZ3N0ciAixJBhbmcgdHLhu58gbOG6oWkgxJHhu4MgaMOyYSB0cuG7mW4ga2nhu4N1IOKAnHRocmVlLXdheeKAnS4iCiAKICM6IGdpdC1hbS5zaDoxMzcKIG1zZ2lkICJSZXBvc2l0b3J5IGxhY2tzIG5lY2Vzc2FyeSBibG9icyB0byBmYWxsIGJhY2sgb24gMy13YXkgbWVyZ2UuIgotbXNnc3RyICJLaG8gdGhp4bq/dSDEkeG7kWkgdMaw4bujbmcgYmxvYiBj4bqnbiB0aGnhur90IMSR4buDIHRy4bufIHbhu4EgdHLDqm4gJzMtd2F5IG1lcmdlJy4iCittc2dzdHIgIktobyB0aGnhur91IMSR4buRaSB0xrDhu6NuZyBibG9iIGPhuqduIHRoaeG6v3QgxJHhu4MgdHLhu58gduG7gSB0csOqbiDigJwzLXdheSBtZXJnZeKAnS4iCisKKyM6IGdpdC1hbS5zaDoxMzkKK21zZ2lkICJVc2luZyBpbmRleCBpbmZvIHRvIHJlY29uc3RydWN0IGEgYmFzZSB0cmVlLi4uIgorbXNnc3RyICIiCisiU+G7rSBk4bulbmcgdGjDtG5nIHRpbiB0cm9uZyBi4bqjbmcgbeG7pWMgbOG7pWMgxJHhu4MgY+G6pXUgdHLDumMgbOG6oWkgbeG7mXQgY8OieSAodHJlZSkgY8ahIHPhu58uLi4iCiAKICM6IGdpdC1hbS5zaDoxNTQKIG1zZ2lkICIiCkBAIC00OTI0LDQ0ICs5MzMyLDUyIEBACiAKICM6IGdpdC1hbS5zaDoxNjMKIG1zZ2lkICJGYWxsaW5nIGJhY2sgdG8gcGF0Y2hpbmcgYmFzZSBhbmQgMy13YXkgbWVyZ2UuLi4iCi1tc2dzdHIgIsSQYW5nIHRy4bufIGzhuqFpIMSR4buDIHbDoSBjxqEgc+G7nyB2w6AgJzMtd2F5IG1lcmdlJy4uLiIKK21zZ3N0ciAixJBhbmcgdHLhu58gbOG6oWkgxJHhu4MgdsOhIGPGoSBz4bufIHbDoCDigJwzLXdheSBtZXJnZeKAnS4uLiIKIAotIzogZ2l0LWFtLnNoOjI3NQorIzogZ2l0LWFtLnNoOjE3OQorbXNnaWQgIkZhaWxlZCB0byBtZXJnZSBpbiB0aGUgY2hhbmdlcy4iCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSB0cuG7mW4gdsOgbyBjw6FjIHRoYXkgxJHhu5VpLiIKKworIzogZ2l0LWFtLnNoOjI3NAogbXNnaWQgIk9ubHkgb25lIFN0R0lUIHBhdGNoIHNlcmllcyBjYW4gYmUgYXBwbGllZCBhdCBvbmNlIgogbXNnc3RyICJDaOG7iSBjw7MgbeG7mXQgc8OqLXJpIG1p4bq/bmcgdsOhIFN0R0lUIMSRxrDhu6NjIMOhcCBk4bulbmcgbeG7mXQgbMO6YyIKIAotIzogZ2l0LWFtLnNoOjM2MgorIzogZ2l0LWFtLnNoOjM2MQogIywgc2gtZm9ybWF0CiBtc2dpZCAiUGF0Y2ggZm9ybWF0ICRwYXRjaF9mb3JtYXQgaXMgbm90IHN1cHBvcnRlZC4iCiBtc2dzdHIgIsSQ4buLbmggZOG6oW5nIG1p4bq/bmcgdsOhICRwYXRjaF9mb3JtYXQga2jDtG5nIMSRxrDhu6NjIGjhu5cgdHLhu6MuIgogCi0jOiBnaXQtYW0uc2g6MzY0CisjOiBnaXQtYW0uc2g6MzYzCiBtc2dpZCAiUGF0Y2ggZm9ybWF0IGRldGVjdGlvbiBmYWlsZWQuIgogbXNnc3RyICJEw7IgdMOsbSDEkeG7i25oIGThuqFuZyBtaeG6v25nIHbDoSBn4bq3cCBs4buXaS4iCiAKLSM6IGdpdC1hbS5zaDo0MTgKLW1zZ2lkICItZCBvcHRpb24gaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIERvIG5vdCB1c2UuIgotbXNnc3RyICJUw7l5IGNo4buNbiAtZCBraMO0bmcgY8OybiDEkcaw4bujYyBo4buXIHRy4bujIG7hu69hLiBYaW4gxJHhu6tuZyBz4butIGThu6VuZy4iCisjOiBnaXQtYW0uc2g6Mzg5Cittc2dpZCAiIgorIlRoZSAtYi8tLWJpbmFyeSBvcHRpb24gaGFzIGJlZW4gYSBuby1vcCBmb3IgbG9uZyB0aW1lLCBhbmRcbiIKKyJpdCB3aWxsIGJlIHJlbW92ZWQuIFBsZWFzZSBkbyBub3QgdXNlIGl0IGFueW1vcmUuIgorbXNnc3RyICIiCisiVMO5eSBjaOG7jW4gLWIvLS1iaW5hcnkgxJHDoyBraMO0bmcgZMO5bmcgdOG7qyBsw6J1IHLhu5NpLCB2w6BcbiIKKyJuw7Mgc+G6vSDEkcaw4bujYyBi4buPIMSRaS4gWGluIMSR4burbmcgc+G7rSBk4bulbmcgbsOzIHRow6ptIG7hu69hLiIKIAotIzogZ2l0LWFtLnNoOjQ4MQorIzogZ2l0LWFtLnNoOjQ3NwogIywgc2gtZm9ybWF0CiBtc2dpZCAicHJldmlvdXMgcmViYXNlIGRpcmVjdG9yeSAkZG90ZXN0IHN0aWxsIGV4aXN0cyBidXQgbWJveCBnaXZlbi4iCiBtc2dzdHIgInRoxrAgbeG7pWMgcmViYXNlIHRyxrDhu5tjICRkb3Rlc3QgduG6q24gY2jGsGEgc+G6tW4gc8OgbmcgbmjGsG5nIG1ib3ggxJHGsOG7o2MgxJHGsGEgcmEuIgogCi0jOiBnaXQtYW0uc2g6NDg2CisjOiBnaXQtYW0uc2g6NDgyCiBtc2dpZCAiUGxlYXNlIG1ha2UgdXAgeW91ciBtaW5kLiAtLXNraXAgb3IgLS1hYm9ydD8iCiBtc2dzdHIgIlhpbiBow6N5IHLDtSByw6BuZy4gLS1za2lwIGhheSAtLWFib3J0PyIKIAotIzogZ2l0LWFtLnNoOjUxMworIzogZ2l0LWFtLnNoOjUwOQogbXNnaWQgIlJlc29sdmUgb3BlcmF0aW9uIG5vdCBpbiBwcm9ncmVzcywgd2UgYXJlIG5vdCByZXN1bWluZy4iCi1tc2dzdHIgIlRoYW8gdMOhYyBwaMOibiBnaeG6o2kga2jDtG5nIMSRYW5nIMSRxrDhu6NjIHRp4bq/biBow6BuaCwgY2jDum5nIHRhIGtow7RuZyBwaOG7pWMgaOG7k2kgbOG6oWkuIgorbXNnc3RyICJUaGFvIHTDoWMgcGjDom4gZ2nhuqNpIGtow7RuZyDEkcaw4bujYyB0aeG6v24gaMOgbmgsIGNow7puZyB0YSBraMO0bmcgcGjhu6VjIGjhu5NpIGzhuqFpLiIKIAotIzogZ2l0LWFtLnNoOjU3OQorIzogZ2l0LWFtLnNoOjU3NQogIywgc2gtZm9ybWF0CiBtc2dpZCAiRGlydHkgaW5kZXg6IGNhbm5vdCBhcHBseSBwYXRjaGVzIChkaXJ0eTogJGZpbGVzKSIKIG1zZ3N0ciAiQuG6o25nIG3hu6VjIGzhu6VjIHNhaToga2jDtG5nIHRo4buDIMOhcCBk4bulbmcgY8OhYyBtaeG6v25nIHbDoSAoc2FpOiAkZmlsZXMpIgogCi0jOiBnaXQtYW0uc2g6NjcxCisjOiBnaXQtYW0uc2g6Njc5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiUGF0Y2ggaXMgZW1wdHkuICBXYXMgaXQgc3BsaXQgd3Jvbmc/XG4iCkBAIC00OTY5LDYxICs5Mzg1LDc2IEBACiAiVG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBzdG9wIHBhdGNoaW5nIHJ1biBcIiRjbWRsaW5lIC0tYWJvcnRcIi4iCiBtc2dzdHIgIiIKICJNaeG6v25nIHbDoSB0cuG7kW5nIHLhu5duZy4gIE7DsyDEkcOjIGLhu4sgY2hpYSBj4bqvdCBzYWkgcGjhuqNpIGtow7RuZz9cbiIKLSJO4bq/dSBi4bqhbiB0aMOtY2ggYuG7jyBxdWEgbWnhur9uZyB2w6EgbsOgeSwgaMOjeSBjaOG6oXkgbOG7h25oIHNhdSDEkeG7gyB0aGF5IHRo4bq/IFwiJGNtZGxpbmUgLS1za2lwXCIuXG4iCi0ixJDhu4MgcGjhu6VjIGjhu5NpIGzhuqFpIG5ow6FuaCBuZ3V5w6puIGLhuqNuIHbDoCBk4burbmcgdsOhIGzhuqFpIGjDo3kgY2jhuqF5IGzhu4duaCBcIiRjbWRsaW5lIC0tYWJvcnRcIi4iCisiTuG6v3UgYuG6oW4gdGjDrWNoIGLhu48gcXVhIG1p4bq/bmcgdsOhIG7DoHksIGjDo3kgY2jhuqF5IGzhu4duaCBzYXUgxJHhu4MgdGhheSB0aOG6vyBcIiRjbWRsaW5lICIKKyItLXNraXBcIi5cbiIKKyLEkOG7gyBwaOG7pWMgaOG7k2kgbOG6oWkgbmjDoW5oIG5ndXnDqm4gdGjhu6d5IHbDoCBk4burbmcgdsOhIGzhuqFpIGjDo3kgY2jhuqF5IGzhu4duaCBcIiRjbWRsaW5lIC0tIgorImFib3J0XCIuIgogCi0jOiBnaXQtYW0uc2g6NzA4CisjOiBnaXQtYW0uc2g6NzA2CiBtc2dpZCAiUGF0Y2ggZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGUtbWFpbCBhZGRyZXNzLiIKIG1zZ3N0ciAiTWnhur9uZyB2w6Ega2jDtG5nIGPDsyDEkeG7i2EgY2jhu4kgZS1tYWlsIGjhu6NwIGzhu4cuIgogCi0jOiBnaXQtYW0uc2g6NzU1CisjOiBnaXQtYW0uc2g6NzUzCiBtc2dpZCAiY2Fubm90IGJlIGludGVyYWN0aXZlIHdpdGhvdXQgc3RkaW4gY29ubmVjdGVkIHRvIGEgdGVybWluYWwuIgotbXNnc3RyICJraMO0bmcgdGjhu4MgxJHGsOG7o2MgdMawxqFuZyB0w6FjIG3DoCBraMO0bmcgY8OzIHN0ZGluIGvhur90IG7hu5FpIHbhu5tpIG3hu5l0IHRoaeG6v3QgYuG7iyBjdeG7kWkiCittc2dzdHIgIiIKKyJraMO0bmcgdGjhu4MgxJHGsOG7o2MgdMawxqFuZyB0w6FjIG3DoCBraMO0bmcgY8OzIHN0ZGluIGvhur90IG7hu5FpIHbhu5tpIG3hu5l0IHRoaeG6v3QgYuG7iyBjdeG7kWkiCiAKLSM6IGdpdC1hbS5zaDo3NTkKKyM6IGdpdC1hbS5zaDo3NTcKIG1zZ2lkICJDb21taXQgQm9keSBpczoiCiBtc2dzdHIgIlRow6JuIGPhu6dhIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbMOgOiIKIAogIy4gVFJBTlNMQVRPUlM6IE1ha2Ugc3VyZSB0byBpbmNsdWRlIFt5XSwgW25dLCBbZV0sIFt2XSBhbmQgW2FdCiAjLiBpbiB5b3VyIHRyYW5zbGF0aW9uLiBUaGUgcHJvZ3JhbSB3aWxsIG9ubHkgYWNjZXB0IEVuZ2xpc2gKICMuIGlucHV0IGF0IHRoaXMgcG9pbnQuCi0jOiBnaXQtYW0uc2g6NzY2CisjOiBnaXQtYW0uc2g6NzY0CiBtc2dpZCAiQXBwbHk/IFt5XWVzL1tuXW8vW2VdZGl0L1t2XWlldyBwYXRjaC9bYV1jY2VwdCBhbGwgIgotbXNnc3RyICLDgXAgZOG7pW5nPyDEkeG7k25nIMO9IFt5XS9raMO0bmcgW25dL2No4buJbmggc+G7rWEgW2VdL2hp4buDbiB0aOG7iyBtaeG6v25nIFt2XcOhL8SR4buTbmcgw70gdOG6pXQgY+G6oyBbYV0iCittc2dzdHIgIiIKKyLDgXAgZOG7pW5nPyDEkeG7k25nIMO9IFt5XS9raMO0bmcgW25dL2No4buJbmggc+G7rWEgW2VdL2hp4buDbiB0aOG7iyBtaeG6v25nIFt2XcOhL8SR4buTbmcgw70gdOG6pXQgIgorImPhuqMgW2FdICIKIAotIzogZ2l0LWFtLnNoOjgwMgorIzogZ2l0LWFtLnNoOjgwMAogIywgc2gtZm9ybWF0CiBtc2dpZCAiQXBwbHlpbmc6ICRGSVJTVExJTkUiCiBtc2dzdHIgIsSQYW5nIMOhcCBk4bulbmcgKG1p4bq/bmcgdsOhKTogJEZJUlNUTElORSIKIAotIzogZ2l0LWFtLnNoOjgyMworIzogZ2l0LWFtLnNoOjgyMQogbXNnaWQgIiIKICJObyBjaGFuZ2VzIC0gZGlkIHlvdSBmb3JnZXQgdG8gdXNlICdnaXQgYWRkJz9cbiIKICJJZiB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gc3RhZ2UsIGNoYW5jZXMgYXJlIHRoYXQgc29tZXRoaW5nIGVsc2VcbiIKICJhbHJlYWR5IGludHJvZHVjZWQgdGhlIHNhbWUgY2hhbmdlczsgeW91IG1pZ2h0IHdhbnQgdG8gc2tpcCB0aGlzIHBhdGNoLiIKIG1zZ3N0ciAiIgotIktow7RuZyBjw7MgdGhheSDEkeG7lWkgbsOgbyAtIGLhuqFuIMSRw6MgcXXDqm4gc+G7rSBk4bulbmcgbOG7h25oICdnaXQgYWRkJyDDoD9cbiIKKyJLaMO0bmcgY8OzIHRoYXkgxJHhu5VpIG7DoG8gLSBi4bqhbiDEkcOjIHF1w6puIHPhu60gZOG7pW5nIGzhu4duaCDigJxnaXQgYWRk4oCdIMOgP1xuIgogIk7hur91IOG7nyDEkcOieSBraMO0bmcgY8OzIGfDrCBjw7JuIGzhuqFpIHN0YWdlLCB0w6xuaCBj4budIGzDoCBjw7MgbeG7mXQgc+G7kSB0aOG7qSBraMOhY1xuIgotIsSRw6Mgc+G6tW4gxJHGsOG7o2MgxJHGsGEgdsOgbyB24bubaSBjw7luZyBu4buZaSBkdW5nIHRoYXkgxJHhu5VpOyBi4bqhbiBjw7MgbOG6vSBtdeG7kW4gYuG7jyBxdWEgbWnhur9uZyB2w6EgbsOgeS4iCisixJHDoyBz4bq1biDEkcaw4bujYyDEkcawYSB2w6BvIHbhu5tpIGPDuW5nIG7hu5lpIGR1bmcgdGhheSDEkeG7lWk7IGLhuqFuIGPDsyBs4bq9IG114buRbiBi4buPIHF1YSBtaeG6v25nICIKKyJ2w6EgbsOgeS4iCiAKLSM6IGdpdC1hbS5zaDo4MzEKKyM6IGdpdC1hbS5zaDo4MjkKIG1zZ2lkICIiCiAiWW91IHN0aWxsIGhhdmUgdW5tZXJnZWQgcGF0aHMgaW4geW91ciBpbmRleFxuIgogImRpZCB5b3UgZm9yZ2V0IHRvIHVzZSAnZ2l0IGFkZCc/IgogbXNnc3RyICIiCiAiQuG6oW4gduG6q24gY8OzIG5o4buvbmcgxJHGsOG7nW5nIGThuqtuIGNoxrBhIMSRxrDhu6NjIGjDsmEgdHLhu5luIHRyb25nIGLhuqNuZyBt4bulYyBs4bulYyBj4bunYSBtw6xuaFxuIgotImLhuqFuIMSRw6MgcXXDqm4gc+G7rSBk4bulbmcgbOG7h25oICdnaXQgYWRkJyDDoD8iCisiYuG6oW4gxJHDoyBxdcOqbiBz4butIGThu6VuZyBs4buHbmgg4oCcZ2l0IGFkZOKAnSDDoD8iCiAKLSM6IGdpdC1hbS5zaDo4NDcKKyM6IGdpdC1hbS5zaDo4NDUKIG1zZ2lkICJObyBjaGFuZ2VzIC0tIFBhdGNoIGFscmVhZHkgYXBwbGllZC4iCiBtc2dzdHIgIktow7RuZyB0aGF5IMSR4buVaSBnw6wgY+G6oyAtLSBNaeG6v25nIHbDoSDEkcOjIMSRxrDhu6NjIMOhcCBk4bulbmcgcuG7k2kuIgogCi0jOiBnaXQtYW0uc2g6ODU3CisjOiBnaXQtYW0uc2g6ODU1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJQYXRjaCBmYWlsZWQgYXQgJG1zZ251bSAkRklSU1RMSU5FIgogbXNnc3RyICJWw6EgZ+G6t3AgbOG7l2kgdOG6oWkgJG1zZ251bSAkRklSU1RMSU5FIgogCi0jOiBnaXQtYW0uc2g6ODczCisjOiBnaXQtYW0uc2g6ODU4CisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGNvcHkgb2YgdGhlIHBhdGNoIHRoYXQgZmFpbGVkIGlzIGZvdW5kIGluOlxuIgorIiAgICRkb3Rlc3QvcGF0Y2giCittc2dzdHIgIiIKKyJC4bqjbiBzYW8gY2jDqXAgY+G7p2EgbWnhur9uZyB2w6EgbcOgIG7DsyBn4bq3cCBs4buXaSB0aMOsIMSRxrDhu6NjIHTDrG0gdGjhuqV5IHRyb25nOlxuIgorIiAgICRkb3Rlc3QvcGF0Y2giCisKKyM6IGdpdC1hbS5zaDo4NzYKIG1zZ2lkICJhcHBseWluZyB0byBhbiBlbXB0eSBoaXN0b3J5IgogbXNnc3RyICLDoXAgZOG7pW5nIHbDoG8gbeG7mXQgbOG7i2NoIHPhu60gdHLhu5FuZyBy4buXbmciCiAKQEAgLTUwNDEsMTIgKzk0NzIsMTIgQEAKICM6IGdpdC1iaXNlY3Quc2g6OTUKICMsIHNoLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXNlZCBvcHRpb246ICckYXJnJyIKLW1zZ3N0ciAia2jDtG5nIGPDtG5nIG5o4bqtbiB0w7l5IGNo4buNbjogJyRhcmcnIgorbXNnc3RyICJraMO0bmcgY8O0bmcgbmjhuq1uIHTDuXkgY2jhu41uOiDigJwkYXJn4oCdIgogCiAjOiBnaXQtYmlzZWN0LnNoOjk5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICInJGFyZycgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgdmFsaWQgcmV2aXNpb24iCi1tc2dzdHIgIickYXJnJyBraMO0bmcgY8OzIHbhursgbmjGsCBsw6AgbeG7mXQgc+G7sSB4w6l0IGzhuqFpIGjhu6NwIGzhu4ciCittc2dzdHIgIuKAnSRhcmfigJ0ga2jDtG5nIGPDsyB24bq7IG5oxrAgbMOgIG3hu5l0IHPhu7EgeMOpdCBs4bqhaSBo4bujcCBs4buHIgogCiAjOiBnaXQtYmlzZWN0LnNoOjExNwogbXNnaWQgIkJhZCBIRUFEIC0gSSBuZWVkIGEgSEVBRCIKQEAgLTUwNTQsOCArOTQ4NSwxMSBAQAogCiAjOiBnaXQtYmlzZWN0LnNoOjEzMAogIywgc2gtZm9ybWF0Ci1tc2dpZCAiQ2hlY2tpbmcgb3V0ICckc3RhcnRfaGVhZCcgZmFpbGVkLiBUcnkgJ2dpdCBiaXNlY3QgcmVzZXQgPHZhbGlkYnJhbmNoPicuIgotbXNnc3RyICJWaeG7h2MgY2hlY2tvdXQgJyRzdGFydF9oZWFkJyBn4bq3cCBs4buXaS4gSMOjeSB0aOG7rSAnZ2l0IGJpc2VjdCByZXNldCA8bmjDoW5oX2jhu6NwX2zhu4c+Jy4iCittc2dpZCAiIgorIkNoZWNraW5nIG91dCAnJHN0YXJ0X2hlYWQnIGZhaWxlZC4gVHJ5ICdnaXQgYmlzZWN0IHJlc2V0IDx2YWxpZGJyYW5jaD4nLiIKK21zZ3N0ciAiIgorIlZp4buHYyBjaGVja291dCDigJwkc3RhcnRfaGVhZOKAnSBn4bq3cCBs4buXaS4gSMOjeSB0aOG7rSDigJxnaXQgYmlzZWN0IHJlc2V0ICIKKyI8bmjDoW5oX2jhu6NwX2zhu4c+4oCdLiIKIAogIzogZ2l0LWJpc2VjdC5zaDoxNDAKIG1zZ2lkICJ3b24ndCBiaXNlY3Qgb24gc2Vla2VkIHRyZWUiCkBAIC01MDc3LDcgKzk1MTEsNyBAQAogCiAjOiBnaXQtYmlzZWN0LnNoOjIzMgogbXNnaWQgIlBsZWFzZSBjYWxsICdiaXNlY3Rfc3RhdGUnIHdpdGggYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIKLW1zZ3N0ciAiSMOjeSBn4buNaSBs4buHbmhsICdiaXNlY3Rfc3RhdGUnIHbhu5tpIMOtdCBuaOG6pXQgbeG7mXQgxJHhu5FpIHPhu5EuIgorbXNnc3RyICJIw6N5IGfhu41pIGzhu4duaGwg4oCcYmlzZWN0X3N0YXRl4oCdIHbhu5tpIMOtdCBuaOG6pXQgbeG7mXQgxJHhu5FpIHPhu5EuIgogCiAjOiBnaXQtYmlzZWN0LnNoOjI0NAogIywgc2gtZm9ybWF0CkBAIC01MDg2LDIwICs5NTIwLDIxIEBACiAKICM6IGdpdC1iaXNlY3Quc2g6MjUwCiBtc2dpZCAiJ2dpdCBiaXNlY3QgYmFkJyBjYW4gdGFrZSBvbmx5IG9uZSBhcmd1bWVudC4iCi1tc2dzdHIgIidnaXQgYmlzZWN0IGJhZCcgY8OzIHRo4buDIGzhuqV5IGNo4buJIG3hu5l0IMSR4buRaSBz4buRLiIKK21zZ3N0ciAi4oCcZ2l0IGJpc2VjdCBiYWTigJ0gY8OzIHRo4buDIGzhuqV5IGNo4buJIG3hu5l0IMSR4buRaSBz4buRLiIKIAogIy4gaGF2ZSBiYWQgYnV0IG5vdCBnb29kLiAgd2UgY291bGQgYmlzZWN0IGFsdGhvdWdoCiAjLiB0aGlzIGlzIGxlc3Mgb3B0aW11bS4KICM6IGdpdC1iaXNlY3Quc2g6MjczCiBtc2dpZCAiV2FybmluZzogYmlzZWN0aW5nIG9ubHkgd2l0aCBhIGJhZCBjb21taXQuIgotbXNnc3RyICJD4bqjbmggYsOhbzogY2jhu4kgdGjhu7FjIGhp4buHbiB2aeG7h2MgYmlzZWN0IHbhu5tpIG3hu5l0IGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgc2FpLiIKK21zZ3N0ciAiIgorIkPhuqNuaCBiw6FvOiBjaOG7iSB0aOG7sWMgaGnhu4duIHZp4buHYyBiaXNlY3QgduG7m2kgbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBzYWkuIgogCiAjLiBUUkFOU0xBVE9SUzogTWFrZSBzdXJlIHRvIGluY2x1ZGUgW1ldIGFuZCBbbl0gaW4geW91cgogIy4gdHJhbnNsYXRpb24uIFRoZSBwcm9ncmFtIHdpbGwgb25seSBhY2NlcHQgRW5nbGlzaCBpbnB1dAogIy4gYXQgdGhpcyBwb2ludC4KICM6IGdpdC1iaXNlY3Quc2g6Mjc5CiBtc2dpZCAiQXJlIHlvdSBzdXJlIFtZL25dPyAiCi1tc2dzdHIgIkLhuqFuIGPDsyBjaOG6r2MgY2jhuq9uIGNoxrBhIFtZL25dPyIKK21zZ3N0ciAiQuG6oW4gY8OzIGNo4bqvYyBjaOG6r24gY2jGsGEgW1kvbl0/ICIKIAogIzogZ2l0LWJpc2VjdC5zaDoyODkKIG1zZ2lkICIiCkBAIC01MTE2LDY5ICs5NTUxLDY5IEBACiAiKFlvdSBjYW4gdXNlIFwiZ2l0IGJpc2VjdCBiYWRcIiBhbmQgXCJnaXQgYmlzZWN0IGdvb2RcIiBmb3IgdGhhdC4pIgogbXNnc3RyICIiCiAiQuG6oW4gY+G6p24gYuG6r3QgxJHhuqd1IGLhurFuZyBs4buHbmggXCJnaXQgYmlzZWN0IHN0YXJ0XCIuXG4iCi0iQuG6oW4gc2F1IMSRw7MgY+G6p24gcGjhuqNpIGNo4buJIGNobyB0w7RpIMOtdCBuaOG6pXQgbeG7mXQgxJFp4buDbSB4w6l0IGR1eeG7h3QgxJHDum5nIHbDoCBt4buZdCDEkWnhu4NtIHNhaS5cbiIKKyJC4bqhbiBzYXUgxJHDsyBj4bqnbiBwaOG6o2kgY2jhu4kgY2hvIHTDtGkgw610IG5o4bqldCBt4buZdCDEkWnhu4NtIHjDqXQgZHV54buHdCDEkcO6bmcgdsOgIG3hu5l0IMSRaeG7g20gIgorInNhaS5cbiIKICIoQuG6oW4gY8OzIHRo4buDIHPhu60gZOG7pW5nIFwiZ2l0IGJpc2VjdCBiYWRcIiB2w6AgXCJnaXQgYmlzZWN0IGdvb2RcIiBjaG8gY2jDum5nLikiCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzQ3Ci0jOiBnaXQtYmlzZWN0LnNoOjQ3NAorIzogZ2l0LWJpc2VjdC5zaDozNjMgZ2l0LWJpc2VjdC5zaDo0OTAKIG1zZ2lkICJXZSBhcmUgbm90IGJpc2VjdGluZy4iCiBtc2dzdHIgIkNow7puZyB0w7RpIGtow7RuZyBiaXNlY3QuIgogCi0jOiBnaXQtYmlzZWN0LnNoOjM1NAorIzogZ2l0LWJpc2VjdC5zaDozNzAKICMsIHNoLWZvcm1hdAogbXNnaWQgIickaW52YWxpZCcgaXMgbm90IGEgdmFsaWQgY29tbWl0IgotbXNnc3RyICInJGludmFsaWQnIGtow7RuZyBwaOG6o2kgbMOgIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgaOG7o3AgbOG7hyIKK21zZ3N0ciAi4oCdJGludmFsaWTigJ0ga2jDtG5nIHBo4bqjaSBsw6AgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBo4bujcCBs4buHIgogCi0jOiBnaXQtYmlzZWN0LnNoOjM2MworIzogZ2l0LWJpc2VjdC5zaDozNzkKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJDb3VsZCBub3QgY2hlY2sgb3V0IG9yaWdpbmFsIEhFQUQgJyRicmFuY2gnLlxuIgogIlRyeSAnZ2l0IGJpc2VjdCByZXNldCA8Y29tbWl0PicuIgogbXNnc3RyICIiCi0iS2jDtG5nIHRo4buDIGNoZWNrIG91dCBvcmlnaW5hbCBIRUFEICckYnJhbmNoJy5cbiIKLSJIw6N5IHRo4butICdnaXQgYmlzZWN0IHJlc2V0IDxjb21taXQ+Jy4iCisiS2jDtG5nIHRo4buDIGNoZWNrLW91dCBIRUFEIG5ndXnDqm4gdGjhu6d5IGPhu6dhIOKAnCRicmFuY2jigJ0uXG4iCisiSMOjeSB0aOG7rSDigJxnaXQgYmlzZWN0IHJlc2V0IDxs4bqnbi1jaHV54buDbi1naWFvPuKAnS4iCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzkwCisjOiBnaXQtYmlzZWN0LnNoOjQwNgogbXNnaWQgIk5vIGxvZ2ZpbGUgZ2l2ZW4iCiBtc2dzdHIgIkNoxrBhIGNo4buJIHJhIHThuq1wIHRpbiBnaGkgbmjhuq10IGvDvSIKIAotIzogZ2l0LWJpc2VjdC5zaDozOTEKKyM6IGdpdC1iaXNlY3Quc2g6NDA3CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCAkZmlsZSBmb3IgcmVwbGF5aW5nIgogbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu41jICRmaWxlIMSR4buDIHRoYW8gZGnhu4VuIGzhuqFpIgogCi0jOiBnaXQtYmlzZWN0LnNoOjQwOAorIzogZ2l0LWJpc2VjdC5zaDo0MjQKIG1zZ2lkICI/PyB3aGF0IGFyZSB5b3UgdGFsa2luZyBhYm91dD8iCiBtc2dzdHIgIj8/IGLhuqFuIMSRYW5nIG7Ds2kgZ8OsIHRo4bq/PyIKIAotIzogZ2l0LWJpc2VjdC5zaDo0MjAKKyM6IGdpdC1iaXNlY3Quc2g6NDM2CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJydW5uaW5nICRjb21tYW5kIgogbXNnc3RyICLEkWFuZyBjaOG6oXkgbOG7h25oICRjb21tYW5kIgogCi0jOiBnaXQtYmlzZWN0LnNoOjQyNworIzogZ2l0LWJpc2VjdC5zaDo0NDMKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJiaXNlY3QgcnVuIGZhaWxlZDpcbiIKICJleGl0IGNvZGUgJHJlcyBmcm9tICckY29tbWFuZCcgaXMgPCAwIG9yID49IDEyOCIKIG1zZ3N0ciAiIgogImNo4bqheSBiaXNlY3QgZ+G6t3AgbOG7l2k6XG4iCi0ibcOjIHRy4bqjIHbhu4EgJHJlcyB04burIGzhu4duaCAnJGNvbW1hbmQnIGzDoCA8IDAgaG/hurdjID49IDEyOCIKKyJtw6MgdHLhuqMgduG7gSAkcmVzIHThu6sgbOG7h25oIOKAnCRjb21tYW5k4oCdIGzDoCA8IDAgaG/hurdjID49IDEyOCIKIAotIzogZ2l0LWJpc2VjdC5zaDo0NTMKKyM6IGdpdC1iaXNlY3Quc2g6NDY5CiBtc2dpZCAiYmlzZWN0IHJ1biBjYW5ub3QgY29udGludWUgYW55IG1vcmUiCiBtc2dzdHIgImJpc2VjdCBraMO0bmcgdGjhu4MgdGnhur9wIHThu6VjIHRow6ptIMSRxrDhu6NjIG7hu69hIgogCi0jOiBnaXQtYmlzZWN0LnNoOjQ1OQorIzogZ2l0LWJpc2VjdC5zaDo0NzUKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJiaXNlY3QgcnVuIGZhaWxlZDpcbiIKICInYmlzZWN0X3N0YXRlICRzdGF0ZScgZXhpdGVkIHdpdGggZXJyb3IgY29kZSAkcmVzIgogbXNnc3RyICIiCiAiY2jhuqF5IGJpc2VjdCBn4bq3cCBs4buXaTpcbiIKLSInYmlzZWN0X3N0YXRlICRzdGF0ZScgxJHDoyB0aG/DoXQgcmEgduG7m2kgbcOjIGzhu5dpICRyZXMiCisi4oCdYmlzZWN0X3N0YXRlICRzdGF0ZeKAnSDEkcOjIHRob8OhdCByYSB24bubaSBtw6MgbOG7l2kgJHJlcyIKIAotIzogZ2l0LWJpc2VjdC5zaDo0NjYKKyM6IGdpdC1iaXNlY3Quc2g6NDgyCiBtc2dpZCAiYmlzZWN0IHJ1biBzdWNjZXNzIgogbXNnc3RyICJiaXNlY3QgY2jhuqF5IHRow6BuaCBjw7RuZyIKIApAQCAtNTE4OSwyMiArOTYyNCwyNiBAQAogImFzIGFwcHJvcHJpYXRlIHRvIG1hcmsgcmVzb2x1dGlvbiwgb3IgdXNlICdnaXQgY29tbWl0IC1hJy4iCiBtc2dzdHIgIiIKICJQdWxsIGzDoCBraMO0bmcgdGjhu4MgxJHGsOG7o2MgYuG7n2kgdsOsIGLhuqFuIGPDsyBuaOG7r25nIHThuq1wIHRpbiBjaMawYSDEkcaw4bujYyBow7JhIHRy4buZbi5cbiIKLSJYaW4gaMOjeSBz4butYSBjaOG7r2EgY2jDum5nIHRyxrDhu5tjLCB2w6Agc2F1IMSRw7Mgc+G7rSBk4bulbmcgbOG7h25oICdnaXQgYWRkL3JtIDx04bqtcC10aW4+J1xuIgotIsSR4buDIHBow6ogY2h14bqpbiB2aeG7h2MgxJHDoW5oIGThuqV1IMSRw6J5IGPhuqduIMSRxrDhu6NjIGdp4bqjaSBxdXnhur90LCBob+G6t2MgbMOgIHPhu60gZOG7pW5nICdnaXQgY29tbWl0IC1hJy4iCisiWGluIGjDo3kgc+G7rWEgY2jhu69hIGNow7puZyB0csaw4bubYywgdsOgIHNhdSDEkcOzIHPhu60gZOG7pW5nIGzhu4duaCDigJxnaXQgYWRkL3JtIDx04bqtcC10aW4+4oCdXG4iCisixJHhu4MgcGjDqiBjaHXhuqluIHZp4buHYyDEkcOhbmggZOG6pXUgxJHDonkgY+G6p24gxJHGsOG7o2MgZ2nhuqNpIHF1eeG6v3QsIGhv4bq3YyBsw6Agc+G7rSBk4bulbmcg4oCcZ2l0ICIKKyJjb21taXQgLWHigJ0uIgogCiAjOiBnaXQtcHVsbC5zaDoyNQogbXNnaWQgIlB1bGwgaXMgbm90IHBvc3NpYmxlIGJlY2F1c2UgeW91IGhhdmUgdW5tZXJnZWQgZmlsZXMuIgotbXNnc3RyICJGdWxsIGzDoCBraMO0bmcgdGjhu4MgdGjhu7FjIGhp4buHbiBi4bufaSB2w6wgYuG6oW4gY8OzIG5o4buvbmcgdOG6rXAgdGluIGNoxrBhIMSRxrDhu6NjIGjDsmEgdHLhu5luLiIKK21zZ3N0ciAiIgorIkZ1bGwgbMOgIGtow7RuZyB0aOG7gyB0aOG7sWMgaGnhu4duIGLhu59pIHbDrCBi4bqhbiBjw7Mgbmjhu69uZyB04bqtcCB0aW4gY2jGsGEgxJHGsOG7o2MgaMOyYSB0cuG7mW4uIgogCi0jOiBnaXQtcHVsbC5zaDoxOTcKKyM6IGdpdC1wdWxsLnNoOjIwMwogbXNnaWQgInVwZGF0aW5nIGFuIHVuYm9ybiBicmFuY2ggd2l0aCBjaGFuZ2VzIGFkZGVkIHRvIHRoZSBpbmRleCIKLW1zZ3N0ciAixJFhbmcgY+G6rXAgbmjhuq10IG3hu5l0IG5ow6FuaCBjaMawYSDEkcaw4bujYyBzaW5oIHJhIHbhu5tpIGPDoWMgdGhheSDEkeG7lWkgxJHGsOG7o2MgdGjDqm0gdsOgbyBi4bqjbmcgbeG7pWMgbOG7pWMiCittc2dzdHIgIiIKKyLEkWFuZyBj4bqtcCBuaOG6rXQgbeG7mXQgbmjDoW5oIGNoxrBhIMSRxrDhu6NjIHNpbmggcmEgduG7m2kgY8OhYyB0aGF5IMSR4buVaSDEkcaw4bujYyB0aMOqbSB2w6BvICIKKyJi4bqjbmcgbeG7pWMgbOG7pWMiCiAKICMuIFRoZSBmZXRjaCBpbnZvbHZlZCB1cGRhdGluZyB0aGUgY3VycmVudCBicmFuY2guCiAjLiBUaGUgd29ya2luZyB0cmVlIGFuZCB0aGUgaW5kZXggZmlsZSBpcyBzdGlsbCBiYXNlZCBvbiB0aGUKICMuICRvcmlnX2hlYWQgY29tbWl0LCBidXQgd2UgYXJlIG1lcmdpbmcgaW50byAkY3Vycl9oZWFkLgogIy4gRmlyc3QgdXBkYXRlIHRoZSB3b3JraW5nIHRyZWUgdG8gbWF0Y2ggJGN1cnJfaGVhZC4KLSM6IGdpdC1wdWxsLnNoOjIyOAorIzogZ2l0LXB1bGwuc2g6MjM1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiV2FybmluZzogZmV0Y2ggdXBkYXRlZCB0aGUgY3VycmVudCBicmFuY2ggaGVhZC5cbiIKQEAgLTUyMTUsMTcgKzk2NTQsMTUwIEBACiAiQ+G6o25oIGLDoW86IMSRYW5nIGZhc3QtZm9yd2FyZCBjw6J5IGzDoG0gdmnhu4djIGPhu6dhIGLhuqFuIHThu6tcbiIKICJD4bqjbmggYsOhbzogY29tbWl0ICRvcmlnX2hlYWQuIgogCi0jOiBnaXQtcHVsbC5zaDoyNTMKKyM6IGdpdC1wdWxsLnNoOjI2MAogbXNnaWQgIkNhbm5vdCBtZXJnZSBtdWx0aXBsZSBicmFuY2hlcyBpbnRvIGVtcHR5IGhlYWQiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBow7JhIHRy4buZbiBuaGnhu4F1IG5ow6FuaCB2w6AgdHJvbmcgbeG7mXQgaGVhZCB0cuG7kW5nIHLhu5duZyIKIAotIzogZ2l0LXB1bGwuc2g6MjU3CisjOiBnaXQtcHVsbC5zaDoyNjQKIG1zZ2lkICJDYW5ub3QgcmViYXNlIG9udG8gbXVsdGlwbGUgYnJhbmNoZXMiCiBtc2dzdHIgIktow7RuZyB0aOG7gyB0aOG7sWMgaGnhu4duIGzhu4duaCByZWJhc2UgKGPGoSBj4bqldSBs4bqhaSkgdHLDqm4gbmhp4buBdSBuaMOhbmgiCiAKKyM6IGdpdC1yZWJhc2Uuc2g6NTMKK21zZ2lkICIiCisiV2hlbiB5b3UgaGF2ZSByZXNvbHZlZCB0aGlzIHByb2JsZW0sIHJ1biBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiLlxuIgorIklmIHlvdSBwcmVmZXIgdG8gc2tpcCB0aGlzIHBhdGNoLCBydW4gXCJnaXQgcmViYXNlIC0tc2tpcFwiIGluc3RlYWQuXG4iCisiVG8gY2hlY2sgb3V0IHRoZSBvcmlnaW5hbCBicmFuY2ggYW5kIHN0b3AgcmViYXNpbmcsIHJ1biBcImdpdCByZWJhc2UgLS1hYm9ydCIKKyJcIi4iCittc2dzdHIgIiIKKyJLaGkgYuG6oW4gY+G6p24gZ2nhuqNpIHF1eeG6v3QgduG6pW4gxJHhu4EgbsOgeSBow6N5IGNo4bqheSBs4buHbmggXCJnaXQgcmViYXNlIC0tY29udGludWVcIi5cbiIKKyJO4bq/dSBi4bqhbiBjw7Mgw70gxJHhu4tuaCBi4buPIHF1YSBtaeG6v25nIHbDoSwgdGhheSB2w6BvIMSRw7MgYuG6oW4gY2jhuqF5IFwiZ2l0IHJlYmFzZSAtLXNraXAiCisiXCIuXG4iCisixJDhu4MgcGjhu6VjIGjhu5NpIGzhuqFpIHRow6BuaCBuaMOhbmggbmd1ecOqbiB0aOG7p3kgdsOgIGThu6tuZyB2aeG7h2MgdsOhIGzhuqFpIHRow6wgY2jhuqF5IFwiZ2l0ICIKKyJyZWJhc2UgLS1hYm9ydFwiLiIKKworIzogZ2l0LXJlYmFzZS5zaDoxNjAKK21zZ2lkICJUaGUgcHJlLXJlYmFzZSBob29rIHJlZnVzZWQgdG8gcmViYXNlLiIKK21zZ3N0ciAiTcOzYyAoaG9vaykgcHJlLXJlYmFzZSB04burIGNo4buRaSByZWJhc2UuIgorCisjOiBnaXQtcmViYXNlLnNoOjE2NQorbXNnaWQgIkl0IGxvb2tzIGxpa2UgZ2l0LWFtIGlzIGluIHByb2dyZXNzLiBDYW5ub3QgcmViYXNlLiIKK21zZ3N0ciAiIgorIkjDrG5oIG5oxrAgxJFhbmcgdHJvbmcgcXXDoSB0csOsbmggdGjhu7FjIGhp4buHbiBs4buHbmggZ2l0LWFtLiBLaMO0bmcgdGjhu4MgY2jhuqF5IGzhu4duaCAiCisicmViYXNlLiIKKworIzogZ2l0LXJlYmFzZS5zaDoyOTYKK21zZ2lkICJUaGUgLS1leGVjIG9wdGlvbiBtdXN0IGJlIHVzZWQgd2l0aCB0aGUgLS1pbnRlcmFjdGl2ZSBvcHRpb24iCittc2dzdHIgIlTDuXkgY2jhu41uIC0tZXhlYyBwaOG6o2kgxJHGsOG7o2Mgc+G7rSBk4bulbmcgY8O5bmcgduG7m2kgdMO5eSBjaOG7jW4gLS1pbnRlcmFjdGl2ZSIKKworIzogZ2l0LXJlYmFzZS5zaDozMDEKK21zZ2lkICJObyByZWJhc2UgaW4gcHJvZ3Jlc3M/IgorbXNnc3RyICJLaMO0bmcgY8OzIHRp4bq/biB0csOsbmggcmViYXNlIG7DoG8gcGjhuqNpIGtow7RuZz8iCisKKyM6IGdpdC1yZWJhc2Uuc2g6MzEyCittc2dpZCAiVGhlIC0tZWRpdC10b2RvIGFjdGlvbiBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBpbnRlcmFjdGl2ZSByZWJhc2UuIgorbXNnc3RyICIiCisiSMOgbmggxJHhu5luZyDigJwtLWVkaXQtdG9kb+KAnSBjaOG7iSBjw7MgdGjhu4MgZMO5bmcgdHJvbmcgcXXDoSB0csOsbmgg4oCccmViYXNl4oCdIChz4butYSBs4buLY2ggIgorInPhu60pIHTGsMahbmcgdMOhYy4iCisKKyM6IGdpdC1yZWJhc2Uuc2g6MzE5Cittc2dpZCAiQ2Fubm90IHJlYWQgSEVBRCIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIMSR4buNYyBIRUFEIgorCisjOiBnaXQtcmViYXNlLnNoOjMyMgorbXNnaWQgIiIKKyJZb3UgbXVzdCBlZGl0IGFsbCBtZXJnZSBjb25mbGljdHMgYW5kIHRoZW5cbiIKKyJtYXJrIHRoZW0gYXMgcmVzb2x2ZWQgdXNpbmcgZ2l0IGFkZCIKK21zZ3N0ciAiIgorIkLhuqFuIHBo4bqjaSBz4butYSB04bqldCBj4bqjIGPDoWMgbOG6p24gaMOyYSB0cuG7mW4geHVuZyDEkeG7mXQgdsOgIHNhdVxuIgorIsSRw7MgxJHDoW5oIGThuqV1IGNow7puZyBsw6AgY+G6p24geOG7rSBsw70gc+G7rSBk4bulbmcgbOG7h25oIGdpdCBhZGQiCisKKyM6IGdpdC1yZWJhc2Uuc2g6MzQwCisjLCBzaC1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgbW92ZSBiYWNrIHRvICRoZWFkX25hbWUiCittc2dzdHIgIktow7RuZyB0aOG7gyBxdWF5IHRy4bufIGzhuqFpICRoZWFkX25hbWUiCisKKyM6IGdpdC1yZWJhc2Uuc2g6MzU5CisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiSXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBhbHJlYWR5IGEgJHN0YXRlX2Rpcl9iYXNlIGRpcmVjdG9yeSwgYW5kXG4iCisiSSB3b25kZXIgaWYgeW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGFub3RoZXIgcmViYXNlLiAgSWYgdGhhdCBpcyB0aGVcbiIKKyJjYXNlLCBwbGVhc2UgdHJ5XG4iCisiXHQkY21kX2xpdmVfcmViYXNlXG4iCisiSWYgdGhhdCBpcyBub3QgdGhlIGNhc2UsIHBsZWFzZVxuIgorIlx0JGNtZF9jbGVhcl9zdGFsZV9yZWJhc2VcbiIKKyJhbmQgcnVuIG1lIGFnYWluLiAgSSBhbSBzdG9wcGluZyBpbiBjYXNlIHlvdSBzdGlsbCBoYXZlIHNvbWV0aGluZ1xuIgorInZhbHVhYmxlIHRoZXJlLiIKK21zZ3N0ciAiIgorIkjDrG5oIG5oxrAgbMOgIOG7nyDEkcOieSBz4bq1biBjw7MgbeG7mXQgdGjGsCBt4bulYyAkc3RhdGVfZGlyX2Jhc2UgZGlyZWN0b3J5LCB2w6BcbiIKKyJUw7RpIHThu7EgaOG7j2kgY8OzIHBo4bqjaSBi4bqhbiDEkWFuZyDhu58gZ2nhu69hIG3hu5l0IGzhu4duaCByZWJhc2Uga2jDoWMuICBO4bq/dSDEkcO6bmcgbMOgXG4iCisibmjGsCB24bqteSwgeGluIGjDo3kgdGjhu61cbiIKKyJcdCRjbWRfbGl2ZV9yZWJhc2VcbiIKKyJO4bq/dSBraMO0bmcgcGjhuqNpIHRo4bq/LCBow6N5IHRo4butXG4iCisiXHQkY21kX2NsZWFyX3N0YWxlX3JlYmFzZVxuIgorInbDoCBjaOG6oXkgVMOUSSBs4bqnbiBu4buvYS4gIFTDlEkgIGThu6tuZyBs4bqhaSB0cm9uZyB0csaw4budbmcgaOG7o3AgYuG6oW4gduG6q25cbiIKKyJjw7MgbeG7mXQgc+G7kSB0aOG7qSBxdcO9IGdpw6Eg4bufIMSRw6J5LlxuIgorIlxuIgorIlTDlEk6IGzDoCBs4buHbmggYuG6oW4gduG7q2EgZ+G7jWkhIgorCisjOiBnaXQtcmViYXNlLnNoOjQwNAorIywgc2gtZm9ybWF0Cittc2dpZCAiaW52YWxpZCB1cHN0cmVhbSAkdXBzdHJlYW1fbmFtZSIKK21zZ3N0ciAidGjGsOG7o25nIG5ndeG7k24ga2jDtG5nIGjhu6NwIGzhu4cgJHVwc3RyZWFtX25hbWUiCisKKyM6IGdpdC1yZWJhc2Uuc2g6NDI4CisjLCBzaC1mb3JtYXQKK21zZ2lkICIkb250b19uYW1lOiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBtZXJnZSBiYXNlcyIKK21zZ3N0ciAiJG9udG9fbmFtZTog4bufIMSRw6J5IGPDsyBuaGnhu4F1IGjGoW4gbeG7mXQgbuG7gW4gbcOzbmcgaMOyYSB0cuG7mW4iCisKKyM6IGdpdC1yZWJhc2Uuc2g6NDMxIGdpdC1yZWJhc2Uuc2g6NDM1CisjLCBzaC1mb3JtYXQKK21zZ2lkICIkb250b19uYW1lOiB0aGVyZSBpcyBubyBtZXJnZSBiYXNlIgorbXNnc3RyICIkb250b19uYW1lOiDhu58gxJHDonkga2jDtG5nIGPDsyBu4buBbiBtw7NuZyBow7JhIHRy4buZbiBuw6BvIgorCisjOiBnaXQtcmViYXNlLnNoOjQ0MAorIywgc2gtZm9ybWF0Cittc2dpZCAiRG9lcyBub3QgcG9pbnQgdG8gYSB2YWxpZCBjb21taXQ6ICRvbnRvX25hbWUiCittc2dzdHIgIktow7RuZyBjaOG7iSDEkeG6v24gbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBraMO0bmcgaOG7o3AgbOG7hzogJG9udG9fbmFtZSIKKworIzogZ2l0LXJlYmFzZS5zaDo0NjMKKyMsIHNoLWZvcm1hdAorbXNnaWQgImZhdGFsOiBubyBzdWNoIGJyYW5jaDogJGJyYW5jaF9uYW1lIgorbXNnc3RyICJuZ2hpw6ptIHRy4buNbmc6IGtow7RuZyBjw7MgbmjDoW5oIG5oxrAgdGjhur86ICRicmFuY2hfbmFtZSIKKworIzogZ2l0LXJlYmFzZS5zaDo0ODMKK21zZ2lkICJQbGVhc2UgY29tbWl0IG9yIHN0YXNoIHRoZW0uIgorbXNnc3RyICJYaW4gaMOjeSBjb21taXQgaG/hurdjIHThuqFtIGPhuqV0IChzdGFzaCkgY2jDum5nLiIKKworIzogZ2l0LXJlYmFzZS5zaDo1MDEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkN1cnJlbnQgYnJhbmNoICRicmFuY2hfbmFtZSBpcyB1cCB0byBkYXRlLiIKK21zZ3N0ciAiTmjDoW5oIGhp4buHbiB04bqhaSAkYnJhbmNoX25hbWUgxJHDoyDEkcaw4bujYyBj4bqtcCBuaOG6rXQgcuG7k2kuIgorCisjOiBnaXQtcmViYXNlLnNoOjUwNAorIywgc2gtZm9ybWF0Cittc2dpZCAiQ3VycmVudCBicmFuY2ggJGJyYW5jaF9uYW1lIGlzIHVwIHRvIGRhdGUsIHJlYmFzZSBmb3JjZWQuIgorbXNnc3RyICJOaMOhbmggaGnhu4duIHThuqFpICRicmFuY2hfbmFtZSDEkcOjIMSRxrDhu6NjIGPhuq1wIG5o4bqtdCBy4buTaSwgbOG7h25oIHJlYmFzZSDDqXAgYnXhu5ljLiIKKworIzogZ2l0LXJlYmFzZS5zaDo1MTUKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNoYW5nZXMgZnJvbSAkbWIgdG8gJG9udG86IgorbXNnc3RyICJUaGF5IMSR4buVaSB04burICRtYiB0aMOgbmggJG9udG86IgorCisjLiBEZXRhY2ggSEVBRCBhbmQgcmVzZXQgdGhlIHRyZWUKKyM6IGdpdC1yZWJhc2Uuc2g6NTI0Cittc2dpZCAiRmlyc3QsIHJld2luZGluZyBoZWFkIHRvIHJlcGxheSB5b3VyIHdvcmsgb24gdG9wIG9mIGl0Li4uIgorbXNnc3RyICIiCisiVHLGsOG7m2MgdGnDqm4sIGRpIGNodXnhu4NuIGhlYWQgxJHhu4MgeGVtIGzhuqFpIGPDoWMgY8O0bmcgdmnhu4djIHRyw6puIMSR4buJbmggY+G7p2EgbsOzLi4uIgorCisjOiBnaXQtcmViYXNlLnNoOjUzMgorIywgc2gtZm9ybWF0Cittc2dpZCAiRmFzdC1mb3J3YXJkZWQgJGJyYW5jaF9uYW1lIHRvICRvbnRvX25hbWUuIgorbXNnc3RyICJGYXN0LWZvcndhcmQgJGJyYW5jaF9uYW1lIHRow6BuaCAkb250b19uYW1lLiIKKwogIzogZ2l0LXN0YXNoLnNoOjUxCiBtc2dpZCAiZ2l0IHN0YXNoIGNsZWFyIHdpdGggcGFyYW1ldGVycyBpcyB1bmltcGxlbWVudGVkIgotbXNnc3RyICJnaXQgc3Rhc2ggY2xlYXIgduG7m2kgY8OhYyB0aGFtIHPhu5EgbMOgIGNoxrBhIMSRxrDhu6NjIHRo4buxYyBoaeG7h24gKGtow7RuZyBuaOG6rW4gxJHhu5FpIHPhu5EpIgorbXNnc3RyICIiCisiZ2l0IHN0YXNoIGNsZWFyIHbhu5tpIGPDoWMgdGhhbSBz4buRIGzDoCBjaMawYSDEkcaw4bujYyB0aOG7sWMgaGnhu4duIChraMO0bmcgbmjhuq1uIMSR4buRaSBz4buRKSIKIAogIzogZ2l0LXN0YXNoLnNoOjc0CiBtc2dpZCAiWW91IGRvIG5vdCBoYXZlIHRoZSBpbml0aWFsIGNvbW1pdCB5ZXQiCkBAIC01MjM1LDggKzk4MDcsNyBAQAogbXNnaWQgIkNhbm5vdCBzYXZlIHRoZSBjdXJyZW50IGluZGV4IHN0YXRlIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgZ2hpIGzhuqFpIHRy4bqhbmcgdGjDoWkgYuG6o25nIG3hu6VjIGzhu6VjIGhp4buHbiBow6BuaCIKIAotIzogZ2l0LXN0YXNoLnNoOjEyMwotIzogZ2l0LXN0YXNoLnNoOjEzNgorIzogZ2l0LXN0YXNoLnNoOjEyMyBnaXQtc3Rhc2guc2g6MTM2CiBtc2dpZCAiQ2Fubm90IHNhdmUgdGhlIGN1cnJlbnQgd29ya3RyZWUgc3RhdGUiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBnaGkgbOG6oWkgdHLhuqFuZyB0aMOhaSBjw6J5LWzDoG0tdmnhu4djIGhp4buHbiBow6BuaCIKIApAQCAtNTI2OCw4ICs5ODM5LDggQEAKICJlcnJvcjogdW5rbm93biBvcHRpb24gZm9yICdzdGFzaCBzYXZlJzogJG9wdGlvblxuIgogIiAgICAgICBUbyBwcm92aWRlIGEgbWVzc2FnZSwgdXNlIGdpdCBzdGFzaCBzYXZlIC0tICckb3B0aW9uJyIKIG1zZ3N0ciAiIgotImzhu5dpOiBraMO0bmcgaGnhu4N1IHTDuXkgY2jhu41uIGNobyAnc3Rhc2ggc2F2ZSc6ICRvcHRpb25cbiIKLSIgICAgICAgxJDhu4MgY3VuZyBj4bqlcCBt4buZdCB0aMO0bmcgxJFp4buHcCwgc+G7rSBk4bulbmcgZ2l0IHN0YXNoIHNhdmUgLS0gJyRvcHRpb24nIgorImzhu5dpOiBraMO0bmcgaGnhu4N1IHTDuXkgY2jhu41uIGNobyDigJxzdGFzaCBzYXZl4oCdOiAkb3B0aW9uXG4iCisiICAgICAgIMSQ4buDIGN1bmcgY+G6pXAgbeG7mXQgdGjDtG5nIMSRaeG7h3AsIHPhu60gZOG7pW5nIGdpdCBzdGFzaCBzYXZlIC0tIOKAnCRvcHRpb27igJ0iCiAKICM6IGdpdC1zdGFzaC5zaDoyMjMKIG1zZ2lkICJObyBsb2NhbCBjaGFuZ2VzIHRvIHNhdmUiCkBAIC01Mjg5LDcgKzk4NjAsNyBAQAogCiAjOiBnaXQtc3Rhc2guc2g6MzUyCiBtc2dpZCAiTm8gc3Rhc2ggZm91bmQuIgotbXNnc3RyICJLaMO0bmcgdMOsbSB0aOG6pXkgc3Rhc3QgbsOgby4iCittc2dzdHIgIktow7RuZyB0w6xtIHRo4bqleSBzdGFzaCBuw6BvLiIKIAogIzogZ2l0LXN0YXNoLnNoOjM1OQogIywgc2gtZm9ybWF0CkBAIC01MzA0LDEyICs5ODc1LDEyIEBACiAjOiBnaXQtc3Rhc2guc2g6MzkzCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICInJGFyZ3MnIGlzIG5vdCBhIHN0YXNoLWxpa2UgY29tbWl0IgotbXNnc3RyICInJGFyZ3MnIGtow7RuZyBwaOG6o2kgbMOgIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgZ2nhu5FuZy1zdGFzaCIKK21zZ3N0ciAi4oCdJGFyZ3PigJ0ga2jDtG5nIHBo4bqjaSBsw6AgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBnaeG7kW5nLXN0YXNoIgogCiAjOiBnaXQtc3Rhc2guc2g6NDA0CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICInJGFyZ3MnIGlzIG5vdCBhIHN0YXNoIHJlZmVyZW5jZSIKLW1zZ3N0ciAiJyRhcmdzJyBraMO0bmcgcGjhuqNpIHRoYW0gY2hp4bq/dSDEkeG6v24gc3Rhc2giCittc2dzdHIgIuKAnSRhcmdz4oCdIGtow7RuZyBwaOG6o2kgdGhhbSBjaGnhur91IMSR4bq/biBzdGFzaCIKIAogIzogZ2l0LXN0YXNoLnNoOjQxMgogbXNnaWQgInVuYWJsZSB0byByZWZyZXNoIGluZGV4IgpAQCAtNTMzMSwyMjQgKzk5MDIsNDQ2IEBACiBtc2dpZCAiQ2Fubm90IHVuc3RhZ2UgbW9kaWZpZWQgZmlsZXMiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBi4buPIHRy4bqhbmcgdGjDrWEgY+G7p2EgY8OhYyB04bqtcCB0aW4gxJHDoyDEkcaw4bujYyBz4butYSBjaOG7r2EiCiAKLSM6IGdpdC1zdGFzaC5zaDo0NzQKKyM6IGdpdC1zdGFzaC5zaDo0NzUKIG1zZ2lkICJJbmRleCB3YXMgbm90IHVuc3Rhc2hlZC4iCiBtc2dzdHIgIkLhuqNuZyBt4bulYyBs4bulYyDEkcOjIGtow7RuZyDEkcaw4bujYyBi4buPIHN0YXNoLiIKIAotIzogZ2l0LXN0YXNoLnNoOjQ5MQorIzogZ2l0LXN0YXNoLnNoOjQ5MgogIywgc2gtZm9ybWF0CiBtc2dpZCAiRHJvcHBlZCAke1JFVn0gKCRzKSIKIG1zZ3N0ciAixJDDoyBo4bqhIHh14buRbmcgJHtSRVZ9ICgkcykiCiAKLSM6IGdpdC1zdGFzaC5zaDo0OTIKKyM6IGdpdC1zdGFzaC5zaDo0OTMKICMsIHNoLWZvcm1hdAogbXNnaWQgIiR7UkVWfTogQ291bGQgbm90IGRyb3Agc3Rhc2ggZW50cnkiCiBtc2dzdHIgIiR7UkVWfTogS2jDtG5nIHRo4buDIHjDs2EgYuG7jyBt4bulYyBzdGFzaCIKIAotIzogZ2l0LXN0YXNoLnNoOjQ5OQorIzogZ2l0LXN0YXNoLnNoOjUwMAogbXNnaWQgIk5vIGJyYW5jaCBuYW1lIHNwZWNpZmllZCIKIG1zZ3N0ciAiQ2jGsGEgY2jhu4kgcmEgdMOqbiBj4bunYSBuaMOhbmgiCiAKLSM6IGdpdC1zdGFzaC5zaDo1NzAKKyM6IGdpdC1zdGFzaC5zaDo1NzEKIG1zZ2lkICIoVG8gcmVzdG9yZSB0aGVtIHR5cGUgXCJnaXQgc3Rhc2ggYXBwbHlcIikiCiBtc2dzdHIgIijEkOG7gyBwaOG7pWMgaOG7k2kgbOG6oWkgY2jDum5nIGjDo3kgZ8O1IFwiZ2l0IHN0YXNoIGFwcGx5XCIpIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU2CisjOiBnaXQtc3VibW9kdWxlLnNoOjkxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgc3RyaXAgb25lIGNvbXBvbmVudCBvZmYgdXJsICckcmVtb3RldXJsJyIKLW1zZ3N0ciAia2jDtG5nIHRo4buDIHRow6FvIGLhu48gbeG7mXQgdGjDoG5oIHBo4bqnbiByYSBraOG7j2kgdXJsICckcmVtb3RldXJsJyIKK21zZ3N0ciAia2jDtG5nIHRo4buDIHRow6FvIGLhu48gbeG7mXQgdGjDoG5oIHBo4bqnbiByYSBraOG7j2kg4oCcJHJlbW90ZXVybOKAnSB1cmwiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTA5CisjOiBnaXQtc3VibW9kdWxlLnNoOjE5NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiTm8gc3VibW9kdWxlIG1hcHBpbmcgZm91bmQgaW4gLmdpdG1vZHVsZXMgZm9yIHBhdGggJyRzbV9wYXRoJyIKLW1zZ3N0ciAiS2jDtG5nIHTDrG0gdGjhuqV5IMOhbmggeOG6oSAobWFwcGluZykgbcO0LcSRdW4tY29uIHRyb25nIC5naXRtb2R1bGVzIGNobyDEkcaw4budbmcgZOG6q24gJyRzbV9wYXRoJyIKK21zZ3N0ciAiIgorIktow7RuZyB0w6xtIHRo4bqleSDDoW5oIHjhuqEgKG1hcHBpbmcpIG3DtC3EkXVuLWNvbiB0cm9uZyAuZ2l0bW9kdWxlcyBjaG8gxJHGsOG7nW5nIGThuqtuICIKKyLigJwkc21fcGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxNTAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MjM5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJDbG9uZSBvZiAnJHVybCcgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIGZhaWxlZCIKLW1zZ3N0ciAiTmjDom4gYuG6o24gJyR1cmwnIHbDoG8gxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiAnJHNtX3BhdGgnIGfhurdwIGzhu5dpIgorbXNnc3RyICJOaMOibiBi4bqjbiDigJwkdXJs4oCdIHbDoG8gxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSBn4bq3cCBs4buXaSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxNjAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MjUxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJHaXRkaXIgJyRhJyBpcyBwYXJ0IG9mIHRoZSBzdWJtb2R1bGUgcGF0aCAnJGInIG9yIHZpY2UgdmVyc2EiCi1tc2dzdHIgIkdpdGRpciAnJGEnIGzDoCBi4buZIHBo4bqtbiBj4bunYSDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uICckYicgaG/hurdjIFwidmljZSB2ZXJzYVwiIgorbXNnc3RyICIiCisiR2l0ZGlyIOKAnCRh4oCdIGzDoCBi4buZIHBo4bqtbiBj4bunYSDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRi4oCdIGhv4bq3YyBcInZpY2UgdmVyc2FcIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyNDkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MzQ5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJyZXBvIFVSTDogJyRyZXBvJyBtdXN0IGJlIGFic29sdXRlIG9yIGJlZ2luIHdpdGggLi98Li4vIgotbXNnc3RyICJyZXBvIFVSTDogJyRyZXBvJyBwaOG6o2kgbMOgIMSRxrDhu51uZyBk4bqrbiB0dXnhu4d0IMSR4buRaSBob+G6t2MgbMOgIGLhuq90IMSR4bqndSBi4bqxbmcgLi98Li4vIgorbXNnc3RyICIiCisicmVwbyBVUkw6IOKAnCRyZXBv4oCdIHBo4bqjaSBsw6AgxJHGsOG7nW5nIGThuqtuIHR1eeG7h3QgxJHhu5FpIGhv4bq3YyBsw6AgYuG6r3QgxJHhuqd1IGLhurFuZyAuL3wuLi8iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MjY2CisjOiBnaXQtc3VibW9kdWxlLnNoOjM2NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRzbV9wYXRoJyBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaW5kZXgiCi1tc2dzdHIgIickc21fcGF0aCcgdGjhu7FjIHPhu7EgxJHDoyB04buTbiB04bqhaSDhu58gYuG6o25nIG3hu6VjIGzhu6VjIHLhu5NpIgorbXNnc3RyICLigJ0kc21fcGF0aOKAnSB0aOG7sWMgc+G7sSDEkcOjIHThu5NuIHThuqFpIOG7nyBi4bqjbmcgbeG7pWMgbOG7pWMgcuG7k2kiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MjcwCisjOiBnaXQtc3VibW9kdWxlLnNoOjM3MAogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSBmb2xsb3dpbmcgcGF0aCBpcyBpZ25vcmVkIGJ5IG9uZSBvZiB5b3VyIC5naXRpZ25vcmUgZmlsZXM6XG4iCiAiJHNtX3BhdGhcbiIKICJVc2UgLWYgaWYgeW91IHJlYWxseSB3YW50IHRvIGFkZCBpdC4iCiBtc2dzdHIgIiIKLSJDw6FjIMSRxrDhu51uZyBk4bqrbiB0aGVvIHNhdSDEkcOieSBz4bq9IGLhu4sgbOG7nSDEkWkgYuG7n2kgbeG7mXQgdHJvbmcgY8OhYyB04bqtcCB0aW4gLmdpdGlnbm9yZSBj4bunYSBi4bqhbjpcbiIKKyJDw6FjIMSRxrDhu51uZyBk4bqrbiB0aGVvIHNhdSDEkcOieSBz4bq9IGLhu4sgbOG7nSDEkWkgYuG7n2kgbeG7mXQgdHJvbmcgY8OhYyB04bqtcCB0aW4gLmdpdGlnbm9yZSAiCisiY+G7p2EgYuG6oW46XG4iCiAiJHNtX3BhdGhcbiIKICJT4butIGThu6VuZyAtZiBu4bq/dSBi4bqhbiB0aOG7sWMgc+G7sSBtdeG7kW4gdGjDqm0gbsOzIHbDoG8uIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjI4MQorIzogZ2l0LXN1Ym1vZHVsZS5zaDozODgKICMsIHNoLWZvcm1hdAogbXNnaWQgIkFkZGluZyBleGlzdGluZyByZXBvIGF0ICckc21fcGF0aCcgdG8gdGhlIGluZGV4IgotbXNnc3RyICLEkGFuZyB0aMOqbSByZXBvIGPDsyBz4bq1biB04bqhaSAnJHNtX3BhdGgnIHbDoG8gYuG6o25nIG3hu6VjIGzhu6VjIgorbXNnc3RyICLEkGFuZyB0aMOqbSByZXBvIGPDsyBz4bq1biB04bqhaSDigJwkc21fcGF0aOKAnSB2w6BvIGLhuqNuZyBt4bulYyBs4bulYyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyODMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MzkwCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICInJHNtX3BhdGgnIGFscmVhZHkgZXhpc3RzIGFuZCBpcyBub3QgYSB2YWxpZCBnaXQgcmVwbyIKLW1zZ3N0ciAiJyRzbV9wYXRoJyDEkcOjIHThu5NuIHThuqFpIHThu6sgdHLGsOG7m2MgdsOgIGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IGtobyBnaXQgaOG7o3AgbOG7hyIKK21zZ3N0ciAi4oCdJHNtX3BhdGjigJ0gxJHDoyB04buTbiB04bqhaSB04burIHRyxrDhu5tjIHbDoCBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCBraG8gZ2l0IGjhu6NwIGzhu4ciCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Mjk3CisjOiBnaXQtc3VibW9kdWxlLnNoOjM5OAogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0IHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgotbXNnc3RyICJLaMO0bmcgdGjhu4MgY2hlY2tvdXQgbcO0LcSRdW4gY29uICckc21fcGF0aCciCittc2dpZCAiQSBnaXQgZGlyZWN0b3J5IGZvciAnJHNtX25hbWUnIGlzIGZvdW5kIGxvY2FsbHkgd2l0aCByZW1vdGUocyk6IgorbXNnc3RyICIiCisiVGjGsCBt4bulYyBnaXQgY2hvIOKAnCRzbV9uYW1l4oCdIMSRxrDhu6NjIHTDrG0gdGjhuqV5IG3hu5l0IGPDoWNoIGPhu6VjIGLhu5kgduG7m2kgY8OhYyBtw6F5IGNo4bunOiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozMDIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDAwCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJGYWlsZWQgdG8gYWRkIHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgotbXNnc3RyICJH4bq3cCBs4buXaSBraGkgdGjDqm0gbcO0LcSRdW4gY29uICckc21fcGF0aCciCittc2dpZCAiIgorIklmIHlvdSB3YW50IHRvIHJldXNlIHRoaXMgbG9jYWwgZ2l0IGRpcmVjdG9yeSBpbnN0ZWFkIG9mIGNsb25pbmcgYWdhaW4gZnJvbSIKK21zZ3N0ciAiTuG6v3UgYuG6oW4gbXXhu5FuIGTDuW5nIGzhuqFpIHRoxrAgbeG7pWMgZ2l0IG7hu5lpIGLhu5kgbsOgeSB0aGF5IHbDrCBuaMOibiBi4bqjbiB04burIG7DsyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozMDcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDAyCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgc3VibW9kdWxlICckc21fcGF0aCciCi1tc2dzdHIgIkfhurdwIGzhu5dpIGtoaSDEkcSDbmcga8O9IHbhu5tpIGjhu4cgdGjhu5FuZyBtw7QtxJF1biBjb24gJyRzbV9wYXRoJyIKK21zZ2lkICIiCisidXNlIHRoZSAnLS1mb3JjZScgb3B0aW9uLiBJZiB0aGUgbG9jYWwgZ2l0IGRpcmVjdG9yeSBpcyBub3QgdGhlIGNvcnJlY3QgcmVwbyIKK21zZ3N0ciAiIgorImTDuW5nIHTDuXkgY2jhu41uIOKAnC0tZm9yY2XigJ0uIE7hur91IHRoxrAgbeG7pWMgZ2l0IG7hu5lpIGLhu5kga2jDtG5nIHBo4bqjaSBsw6AgcmVwbyAoa2hvKSDEkcO6bmciCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzQ5CisjOiBnaXQtc3VibW9kdWxlLnNoOjQwMwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiRW50ZXJpbmcgJyRwcmVmaXgkc21fcGF0aCciCi1tc2dzdHIgIsSQYW5nIG5o4bqtcCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ2lkICIiCisib3IgeW91IGFyZSB1bnN1cmUgd2hhdCB0aGlzIG1lYW5zIGNob29zZSBhbm90aGVyIG5hbWUgd2l0aCB0aGUgJy0tbmFtZScgIgorIm9wdGlvbi4iCittc2dzdHIgIiIKKyJoYXkgYuG6oW4ga2jDtG5nIGNo4bqvYyBjaOG6r24gxJFp4buBdSDEkcOzIGPDsyBuZ2jEqWEgZ8OsIGNo4buNbiB0w6puIGtow6FjIHbhu5tpIHTDuXkgY2jhu41uIOKAnC0tIgorIm5hbWXigJ0uIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM2MworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MDUKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN0b3BwaW5nIGF0ICckc21fcGF0aCc7IHNjcmlwdCByZXR1cm5lZCBub24temVybyBzdGF0dXMuIgotbXNnc3RyICJE4burbmcgbOG6oWkgdOG6oWkgJyRzbV9wYXRoJzsgc2NyaXB0IHRy4bqjIHbhu4EgdHLhuqFuZyB0aMOhaSBraMOhYyBraMO0bmcuIgotCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQwNgotIywgc2gtZm9ybWF0Ci1tc2dpZCAiTm8gdXJsIGZvdW5kIGZvciBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIGluIC5naXRtb2R1bGVzIgotbXNnc3RyICJLaMO0bmcgdMOsbSB0aOG6pXkgdXJsIGNobyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uICckc21fcGF0aCcgdHJvbmcgLmdpdG1vZHVsZXMiCi0KLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDE1Ci0jLCBzaC1mb3JtYXQKLW1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXJsIGZvciBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHEg25nIGvDvSB1cmwgY2hvIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24gJyRzbV9wYXRoJyIKK21zZ2lkICJSZWFjdGl2YXRpbmcgbG9jYWwgZ2l0IGRpcmVjdG9yeSBmb3Igc3VibW9kdWxlICckc21fbmFtZScuIgorbXNnc3RyICIiCisiUGjhu6VjIGjhu5NpIHPhu7EgaG/huqF0IMSR4buZbmcgY+G7p2EgdGjGsCBt4bulYyBnaXQgbuG7mWkgYuG7mSBjaG8gbcO0LcSRdW4tY29uIOKAnCRzbV9uYW1l4oCdLiIKIAogIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MTcKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN1Ym1vZHVsZSAnJG5hbWUnICgkdXJsKSByZWdpc3RlcmVkIGZvciBwYXRoICckc21fcGF0aCciCi1tc2dzdHIgIk3DtC3EkXVuLWNvbiAnJG5hbWUnICgkdXJsKSDEkcaw4bujYyDEkcSDbmcga8O9IGNobyDEkcaw4budbmcgZOG6q24gJyRzbV9wYXRoJyIKK21zZ2lkICJVbmFibGUgdG8gY2hlY2tvdXQgc3VibW9kdWxlICckc21fcGF0aCciCittc2dzdHIgIktow7RuZyB0aOG7gyBjaGVja291dCBtw7QtxJF1biBjb24g4oCcJHNtX3BhdGjigJ0iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDI1CisjOiBnaXQtc3VibW9kdWxlLnNoOjQyMgorIywgc2gtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIGFkZCBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIHRow6ptIG3DtC3EkXVuIGNvbiDigJwkc21fcGF0aOKAnSIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MzEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSRxINuZyBrw70gduG7m2kgaOG7hyB0aOG7kW5nIG3DtC3EkXVuIGNvbiDigJwkc21fcGF0aOKAnSIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NzQKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkVudGVyaW5nICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICLEkGFuZyBuaOG6rXAg4oCcJHByZWZpeCRzbV9wYXRo4oCdIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjQ4OAorIywgc2gtZm9ybWF0Cittc2dpZCAiU3RvcHBpbmcgYXQgJyRzbV9wYXRoJzsgc2NyaXB0IHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cy4iCittc2dzdHIgIkThu6tuZyBs4bqhaSB04bqhaSDigJwkc21fcGF0aOKAnTsgc2NyaXB0IHRy4bqjIHbhu4EgdHLhuqFuZyB0aMOhaSBraMOhYyBraMO0bmcuIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjUzMgorIywgc2gtZm9ybWF0Cittc2dpZCAiTm8gdXJsIGZvdW5kIGZvciBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIGluIC5naXRtb2R1bGVzIgorbXNnc3RyICIiCisiS2jDtG5nIHTDrG0gdGjhuqV5IHVybCBjaG8gxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSB0cm9uZyAuZ2l0bW9kdWxlcyIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NDEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciB1cmwgZm9yIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSDEkcSDbmcga8O9IHVybCBjaG8gxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NDMKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlN1Ym1vZHVsZSAnJG5hbWUnICgkdXJsKSByZWdpc3RlcmVkIGZvciBwYXRoICckc21fcGF0aCciCittc2dzdHIgIk3DtC3EkXVuLWNvbiDigJwkbmFtZeKAnSAoJHVybCkgxJHGsOG7o2MgxJHEg25nIGvDvSBjaG8gxJHGsOG7nW5nIGThuqtuIOKAnCRzbV9wYXRo4oCdIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjU1MQogIywgc2gtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHVwZGF0ZSBtb2RlIGZvciBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHEg25nIGvDvSBjaOG6vyDEkeG7mSBj4bqtcCBuaOG6rXQgY2hvIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24gJyRzbV9wYXRoJyIKK21zZ3N0ciAiIgorIkfhurdwIGzhu5dpIGtoaSDEkcSDbmcga8O9IGNo4bq/IMSR4buZIGPhuq1wIG5o4bqtdCBjaG8gxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1MjQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTg4CisjLCBzaC1mb3JtYXQKK21zZ2lkICJVc2UgJy4nIGlmIHlvdSByZWFsbHkgd2FudCB0byBkZWluaXRpYWxpemUgYWxsIHN1Ym1vZHVsZXMiCittc2dzdHIgIkTDuW5nIOKAnC7igJ0gbuG6v3UgYuG6oW4gdGjhu7FjIHPhu7EgbXXhu5FuIGfhu6EgYuG7jyBt4buNaSBtw7QtxJF1bi1jb24iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjAzCisjLCBzaC1mb3JtYXQKK21zZ2lkICJTdWJtb2R1bGUgd29yayB0cmVlICckc21fcGF0aCcgY29udGFpbnMgYSAuZ2l0IGRpcmVjdG9yeSIKK21zZ3N0ciAiQ8OieSBsw6BtIHZp4buHYyBtw7QtxJF1bi1jb24g4oCcJHNtX3BhdGjigJ0gY8OzIGNo4bupYSB0aMawIG3hu6VjIC5naXQiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjA0CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCi0iU3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyBub3QgaW5pdGlhbGl6ZWRcbiIKKyIodXNlICdybSAtcmYnIGlmIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgaXQgaW5jbHVkaW5nIGFsbCBvZiBpdHMgaGlzdG9yeSkiCittc2dzdHIgIiIKKyIoZMO5bmcg4oCccm0gLXJm4oCdIG7hur91IGLhuqFuIHRo4buxYyBz4buxIG114buRbiBn4buhIGLhu48gbsOzIGPDuW5nIHbhu5tpIHThuqV0IGPhuqMgbOG7i2NoIHPhu60gY+G7p2EgIgorImNow7puZykiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjEwCisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiU3VibW9kdWxlIHdvcmsgdHJlZSAnJHNtX3BhdGgnIGNvbnRhaW5zIGxvY2FsIG1vZGlmaWNhdGlvbnM7IHVzZSAnLWYnIHRvICIKKyJkaXNjYXJkIHRoZW0iCittc2dzdHIgIiIKKyJDw6J5IGzDoG0gdmnhu4djIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSBjaOG7qWEgY8OhYyB0aGF5IMSR4buVaSBu4buZaSBi4buZOyBow6N5IGTDuW5nIOKAnC1m4oCdICIKKyLEkeG7gyBsb+G6oWkgYuG7jyBjaMO6bmcgxJFpIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYxMworIywgc2gtZm9ybWF0Cittc2dpZCAiQ2xlYXJlZCBkaXJlY3RvcnkgJyRzbV9wYXRoJyIKK21zZ3N0ciAiVGjGsCBt4bulYyDEkcaw4bujYyBk4buNbiDigJwkc21fcGF0aOKAnSIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTQKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCByZW1vdmUgc3VibW9kdWxlIHdvcmsgdHJlZSAnJHNtX3BhdGgnIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgZ+G7oSBi4buPIGPDonkgbMOgbSB2aeG7h2MgbcO0LcSRdW4gY29uIOKAnCRzbV9wYXRo4oCdIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYxNworIywgc2gtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBlbXB0eSBzdWJtb2R1bGUgZGlyZWN0b3J5ICckc21fcGF0aCciCittc2dzdHIgIktow7RuZyB0aOG7gyB04bqhbyB0aMawIG3hu6VjIG3DtC3EkXVuLWNvbiBy4buXbmcg4oCcJHNtX3BhdGjigJ0iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjI2CisjLCBzaC1mb3JtYXQKK21zZ2lkICJTdWJtb2R1bGUgJyRuYW1lJyAoJHVybCkgdW5yZWdpc3RlcmVkIGZvciBwYXRoICckc21fcGF0aCciCittc2dzdHIgIk3DtC3EkXVuLWNvbiDigJwkbmFtZeKAnSAoJHVybCkgxJHGsOG7o2MgYuG7jyDEkcSDbmcga8O9IGNobyDEkcaw4budbmcgZOG6q24g4oCcJHNtX3BhdGjigJ0iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzMxCisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCcgbm90IGluaXRpYWxpemVkXG4iCiAiTWF5YmUgeW91IHdhbnQgdG8gdXNlICd1cGRhdGUgLS1pbml0Jz8iCiBtc2dzdHIgIiIKLSLEkMaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uICckc21fcGF0aCcgY2jGsGEgxJHGsOG7o2Mga2jhu59pIHThuqFvXG4iCi0iQ8OzIGzhur0gYuG6oW4gbXXhu5FuIHPhu60gZOG7pW5nIGzhu4duaCAndXBkYXRlIC0taW5pdCc/IgorIsSQxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHByZWZpeCRzbV9wYXRo4oCdIGNoxrBhIMSRxrDhu6NjIGto4bufaSB04bqhb1xuIgorIkPDsyBs4bq9IGLhuqFuIG114buRbiBz4butIGThu6VuZyBs4buHbmgg4oCcdXBkYXRlIC0taW5pdOKAnT8iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTM3CisjOiBnaXQtc3VibW9kdWxlLnNoOjc0NAogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIGZpbmQgY3VycmVudCByZXZpc2lvbiBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICJLaMO0bmcgdMOsbSB0aOG6pXkgxJFp4buDbSB4w6l0IGzhuqFpIGhp4buHbiBow6BuaCB0cm9uZyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uICckc21fcGF0aCciCittc2dpZCAiVW5hYmxlIHRvIGZpbmQgY3VycmVudCByZXZpc2lvbiBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAiIgorIktow7RuZyB0w6xtIHRo4bqleSDEkWnhu4NtIHjDqXQgbOG6oWkgaGnhu4duIGjDoG5oIHRyb25nIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHByZWZpeCIKKyIkc21fcGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NTYKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzUzCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gZmV0Y2ggaW4gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIGzhuqV5IHbhu4EgKGZldGNoKSB0cm9uZyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uICckc21fcGF0aCciCittc2dzdHIgIktow7RuZyB0aOG7gyBs4bqleSB24buBIChmZXRjaCkgdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NzAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Nzc3CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gcmViYXNlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIHJlYmFzZSAnJHNoYTEnIHRyb25nIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24gJyRzbV9wYXRoJyIKK21zZ2lkICJVbmFibGUgdG8gZmV0Y2ggaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIktow7RuZyB0aOG7gyBs4bqleSB24buBIChmZXRjaCkgdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkcHJlZml4JHNtX3BhdGjigJ0iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTcxCisjOiBnaXQtc3VibW9kdWxlLnNoOjc5MQogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJzogcmViYXNlZCBpbnRvICckc2hhMSciCi1tc2dzdHIgIsSQxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24gJyRzbV9wYXRoJzogxJHGsOG7o2MgcmViYXNlIHbDoG8gdHJvbmcgJyRzaGExJyIKK21zZ2lkICJVbmFibGUgdG8gcmViYXNlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIktow7RuZyB0aOG7gyByZWJhc2Ug4oCcJHNoYTHigJ0gdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkcHJlZml4JHNtX3BhdGjigJ0iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTc2CisjOiBnaXQtc3VibW9kdWxlLnNoOjc5MgogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIG1lcmdlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIGjDsmEgdHLhu5luIChtZXJnZSkgJyRzaGExJyB0cm9uZyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uICckc21fcGF0aCciCittc2dpZCAiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCc6IHJlYmFzZWQgaW50byAnJHNoYTEnIgorbXNnc3RyICLEkMaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRwcmVmaXgkc21fcGF0aOKAnTogxJHGsOG7o2MgcmViYXNlIHbDoG8gdHJvbmcg4oCcJHNoYTHigJ0iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTc3CisjOiBnaXQtc3VibW9kdWxlLnNoOjc5NwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJzogbWVyZ2VkIGluICckc2hhMSciCi1tc2dzdHIgIsSQxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24gJyRzbV9wYXRoJzogxJHGsOG7o2MgaMOyYSB0cuG7mW4gdsOgbyAnJHNoYTEnIgorbXNnaWQgIlVuYWJsZSB0byBtZXJnZSAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICIiCisiS2jDtG5nIHRo4buDIGjDsmEgdHLhu5luIChtZXJnZSkg4oCcJHNoYTHigJ0gdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkcHJlZml4IgorIiRzbV9wYXRo4oCdIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU4MgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTgKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byBjaGVja291dCAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCi1tc2dzdHIgIktow7RuZyB0aOG7gyBjaGVja291dCAnJHNoYTEnIHRyb25nIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24gJyRzbV9wYXRoJyIKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogbWVyZ2VkIGluICckc2hhMSciCittc2dzdHIgIsSQxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHByZWZpeCRzbV9wYXRo4oCdOiDEkcaw4bujYyBow7JhIHRy4buZbiB2w6BvIOKAnCRzaGEx4oCdIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU4MworIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MDMKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCc6IGNoZWNrZWQgb3V0ICckc2hhMSciCi1tc2dzdHIgIsSQxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24gJyRzbV9wYXRoJzogxJHGsOG7o2MgY2hlY2tvdXQgJyRzaGExJyIKK21zZ2lkICJVbmFibGUgdG8gY2hlY2tvdXQgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAiIgorIktow7RuZyB0aOG7gyBjaGVja291dCDigJwkc2hhMeKAnSB0cm9uZyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRwcmVmaXgkc21fcGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MDUKLSM6IGdpdC1zdWJtb2R1bGUuc2g6OTI4CisjOiBnaXQtc3VibW9kdWxlLnNoOjgwNAogIywgc2gtZm9ybWF0Ci1tc2dpZCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHhu4cgcXV5IHbDoG8gdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiAnJHNtX3BhdGgnIgorbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnOiBjaGVja2VkIG91dCAnJHNoYTEnIgorbXNnc3RyICLEkMaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRwcmVmaXgkc21fcGF0aOKAnTogxJHGsOG7o2MgY2hlY2tvdXQg4oCcJHNoYTHigJ0iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NzEzCi1tc2dpZCAiLS1jYWNoZWQgY2Fubm90IGJlIHVzZWQgd2l0aCAtLWZpbGVzIgotbXNnc3RyICItLWNhY2hlZCBraMO0bmcgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgY8O5bmcgduG7m2kgLS1maWxlcyIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODMxCisjLCBzaC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHhu4cgcXV5IHbDoG8gdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkcHJlZml4JHNtX3BhdGjigJ0iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTM5Cittc2dpZCAiVGhlIC0tY2FjaGVkIG9wdGlvbiBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSAtLWZpbGVzIG9wdGlvbiIKK21zZ3N0ciAiVMO5eSBjaOG7jW4gLS1jYWNoZWQga2jDtG5nIHRo4buDIGTDuW5nIGPDuW5nIHbhu5tpIHTDuXkgY2jhu41uIC0tZmlsZXMiCiAKICMuIHVuZXhwZWN0ZWQgdHlwZQotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NTMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTc5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJ1bmV4cGVjdGVkIG1vZGUgJG1vZF9kc3QiCiBtc2dzdHIgImNo4bq/IMSR4buZIGtow7RuZyBuaMawIG1vbmcgY2jhu50gJG1vZF9kc3QiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NzcxCisjOiBnaXQtc3VibW9kdWxlLnNoOjk5NwogIywgc2gtZm9ybWF0CiBtc2dpZCAiICBXYXJuOiAkbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0ICRzaGExX3NyYyIKIG1zZ3N0ciAiICBD4bqjbmggYsOhbzogJG5hbWUga2jDtG5nIGNo4bupYSBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpICRzaGExX3NyYyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NzQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTAwMAogIywgc2gtZm9ybWF0CiBtc2dpZCAiICBXYXJuOiAkbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0ICRzaGExX2RzdCIKIG1zZ3N0ciAiICBD4bqjbmggYsOhbzogJG5hbWUga2jDtG5nIGNo4bupYSBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpICRzaGExX2RzdCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NzcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTAwMwogIywgc2gtZm9ybWF0CiBtc2dpZCAiICBXYXJuOiAkbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0cyAkc2hhMV9zcmMgYW5kICRzaGExX2RzdCIKLW1zZ3N0ciAiICBD4bqjbmggYsOhbzogJG5hbWUga2jDtG5nIGNo4bupYSBuaOG7r25nIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgJHNoYTFfc3JjIHbDoCAkc2hhMV9kc3QiCittc2dzdHIgIiIKKyIgIEPhuqNuaCBiw6FvOiAkbmFtZSBraMO0bmcgY2jhu6lhIG5o4buvbmcgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSAkc2hhMV9zcmMgdsOgICIKKyIkc2hhMV9kc3QiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODAyCisjOiBnaXQtc3VibW9kdWxlLnNoOjEwMjgKIG1zZ2lkICJibG9iIgogbXNnc3RyICJibG9iIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjgwMwotbXNnaWQgInN1Ym1vZHVsZSIKLW1zZ3N0ciAibcO0LcSRdW4gY29uIgorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDY2Cittc2dpZCAiU3VibW9kdWxlcyBjaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoiCittc2dzdHIgIk5o4buvbmcgbcO0LcSRdW4tY29uIMSRw6MgYuG7iyB0aGF5IMSR4buVaSBuaMawbmcgY2jGsGEgxJHGsOG7o2MgY+G6rXAgbmjhuq10OiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4NDAKLW1zZ2lkICIjIFN1Ym1vZHVsZXMgY2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6IgotbXNnc3RyICIjIE5o4buvbmcgbcO0LcSRdW4tY29uIMSRw6MgYuG7iyB0aGF5IMSR4buVaSBuaMawbmcgY2jGsGEgxJHGsOG7o2MgY+G6rXAgbmjhuq10OiIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTA2OAorbXNnaWQgIlN1Ym1vZHVsZSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCittc2dzdHIgIk5o4buvbmcgbcO0LcSRdW4tY29uIHRoYXkgxJHhu5VpIMSRw6MgxJHGsOG7o2MgY2h1eeG7g24gZ2lhbyAoY29tbWl0KToiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODQyCi1tc2dpZCAiIyBTdWJtb2R1bGUgY2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6IgotbXNnc3RyICIjIE5o4buvbmcgdGhheSDEkeG7lWkgbcO0LcSRdW4tY29uIMSRxrDhu6NjIGNodXnhu4NuIGdpYW8gKGNvbW1pdCk6IgotCi0jOiBnaXQtc3VibW9kdWxlLnNoOjk3NAorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMTUzCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTeW5jaHJvbml6aW5nIHN1Ym1vZHVsZSB1cmwgZm9yICckbmFtZSciCi1tc2dzdHIgIsSQYW5nIMSR4buTbmcgYuG7mSBow7NhIHVybCBtw7QtxJF1bi1jb24gY2hvICckbmFtZSciCittc2dpZCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHhu4cgcXV5IHbDoG8gdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMjE2CisjLCBzaC1mb3JtYXQKK21zZ2lkICJTeW5jaHJvbml6aW5nIHN1Ym1vZHVsZSB1cmwgZm9yICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICJVcmwgTcO0LcSRdW4tY29uIMSR4buTbmcgYuG7mSBow7NhIGNobyDigJwkcHJlZml4JHNtX3BhdGjigJ0iCisKKyN+IG1zZ2lkICJJdCB0b29rICUuMmYgc2Vjb25kcyB0byBlbnVtZXJhdGUgdW50cmFja2VkIGZpbGVzLiAgJ3N0YXR1cyAtdW5vJyIKKyN+IG1zZ3N0ciAiQ+G6p24gJS4yZiBnacOieSDEkeG7gyDEkeG6v20gY8OhYyB04bqtcCB0aW4gY2jGsGEgxJHGsOG7o2MgdGhlbyB24bq/dC4gIOKAnHN0YXR1cyAtdW5v4oCdIgorCisjfiBtc2dpZCAibWF5IHNwZWVkIGl0IHVwLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gZm9yZ2V0IHRvIGFkZCIKKyN+IG1zZ3N0ciAiIgorI34gImPDsyB0aOG7gyBsw6BtIG7DsyBuaGFuaCBsw6puLCBuaMawbmcgYuG6oW4gcGjhuqNpIGPhuqluIHRy4buNbmcgxJHhu6tuZyBxdcOqbiB0aMOqbSBuw7MgdsOgbyIKKworI34gbXNnaWQgIm5ldyBmaWxlcyB5b3Vyc2VsZiAoc2VlICdnaXQgaGVscCBzdGF0dXMnKS4iCisjfiBtc2dzdHIgInThuq1wIHRpbiBt4bubaSBj4bunYSBjaMOtbmggYuG6oW4gKHhlbSDigJxnaXQgaGVscCBzdGF0dXPigJ0uLiIKKworI34gbXNnaWQgImdpdCBzaG9ydGxvZyBbLW5dIFstc10gWy1lXSBbLXddIFtyZXYtb3B0c10gWy0tXSBbPGNvbW1pdC1pZD4uLi4gXSIKKyN+IG1zZ3N0ciAiZ2l0IHNob3J0bG9nIFstbl0gWy1zXSBbLWVdIFstd10gW3Jldi1vcHRzXSBbLS1dIFs8Y29tbWl0LWlkPi4uLiBdIgorCisjfiBtc2dpZCAiU2VlICdnaXQgaGVscCA8Y29tbWFuZD4nIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGEgc3BlY2lmaWMgY29tbWFuZC4iCisjfiBtc2dzdHIgIiIKKyN+ICJDaOG6oXkgbOG7h25oIOKAnGdpdCBoZWxwIDx0w6puLWzhu4duaD7igJ0gxJHhu4MgY8OzIHRow6ptIHRow7RuZyB0aW4gduG7gSBs4buHbmggxJHGsOG7o2MgY2jhu4kgcmEuIgorCisjfiBtc2dpZCAidXNlIGFueSByZWYgaW4gLmdpdC9yZWZzIgorI34gbXNnc3RyICJz4butIGThu6VuZyBi4bqldCBr4buzIHJlZiBuw6BvIHRyb25nIC5naXQvcmVmcyIKKworI34gbXNnaWQgInVzZSBhbnkgdGFnIGluIC5naXQvcmVmcy90YWdzIgorI34gbXNnc3RyICJz4butIGThu6VuZyBi4bqldCBr4buzIHRo4bq7IG7DoG8gdHJvbmcgLmdpdC9yZWZzL3RhZ3MiCisKKyN+IG1zZ2lkICJiYWQgb2JqZWN0ICVzIgorI34gbXNnc3RyICLEkeG7kWkgdMaw4bujbmcgc2FpICVzIgorCisjfiBtc2dpZCAiYm9ndXMgY29tbWl0dGVyIGluZm8gJXMiCisjfiBtc2dzdHIgInRow7RuZyB0aW4gbmfGsOG7nWkgY2h1eeG7g24gZ2lhbyBraMO0bmcgY8OzIHRo4buxYyAlcyIKKworI34gbXNnaWQgImNhbid0IGZkb3BlbiAnc2hvdycgb3V0cHV0IGZkIgorI34gbXNnc3RyICJraMO0bmcgdGjhu4MgZmRvcGVuIOKAnHNob3figJ0gKGzhu4duaCBoaeG7g24gdGjhu4spIG3DtCB04bqjIHThuq1wIHRpbiAoZmQpIGvhur90IHh14bqldCIKKworI34gbXNnaWQgImZhaWxlZCB0byBjbG9zZSBwaXBlIHRvICdzaG93JyBmb3Igb2JqZWN0ICclcyciCisjfiBtc2dzdHIgImfhurdwIGzhu5dpIGtoaSDEkcOzbmcgxJHGsOG7nW5nIOG7kW5nIGNobyBs4buHbmgg4oCcc2hvd+KAnSBjaG8gxJHhu5FpIHTGsOG7o25nIOKAnCVz4oCdIgorCisjfiBtc2dpZCAiWW91IGRvIG5vdCBoYXZlIGEgdmFsaWQgSEVBRCIKKyN+IG1zZ3N0ciAiQuG6oW4ga2jDtG5nIGPDsyBIRUFEIG7DoG8gaOG7o3AgbOG7hyIKKworI34gbXNnaWQgIm9vcHMiCisjfiBtc2dzdHIgIsO0aT8iCisKKyN+IG1zZ2lkICJXb3VsZCBub3QgcmVtb3ZlICVzXG4iCisjfiBtc2dzdHIgIktow7RuZyB0aOG7gyBn4buhIGLhu48gJXNcbiIKKworI34gbXNnaWQgIk5vdCByZW1vdmluZyAlc1xuIgorI34gbXNnc3RyICJLaMO0bmcgeMOzYSAlc1xuIgorCisjfiBtc2dpZCAiQ291bGQgbm90IHJlYWQgaW5kZXgiCisjfiBtc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7jWMgYuG6o25nIG3hu6VjIGzhu6VjIgorCisjfiBtc2dpZCAiZ2l0IHJlbW90ZSBzZXQtaGVhZCA8bmFtZT4gKC1hIHwgLWQgfCA8YnJhbmNoPl0pIgorI34gbXNnc3RyICJnaXQgcmVtb3RlIHNldC1oZWFkIDx0w6puPiAoLWEgfCAtZCB8IDxuaMOhbmg+XSkiCisKKyN+IG1zZ2lkICIgMCBmaWxlcyBjaGFuZ2VkIgorI34gbXNnc3RyICIgMCBjw7MgdOG6rXAgdGluIG7DoG8gdGhheSDEkeG7lWkgY+G6oyIKKworI34gbXNnaWQgIiAlZCBmaWxlIGNoYW5nZWQiCisjfiBtc2dpZF9wbHVyYWwgIiAlZCBmaWxlcyBjaGFuZ2VkIgorI34gbXNnc3RyWzBdICIgJWQgdOG6rXAgdGluIHRoYXkgxJHhu5VpIgorI34gbXNnc3RyWzFdICIgJWQgdOG6rXAgdGluIHRoYXkgxJHhu5VpIgorCisjfiBtc2dpZCAiLCAlZCBpbnNlcnRpb24oKykiCisjfiBtc2dpZF9wbHVyYWwgIiwgJWQgaW5zZXJ0aW9ucygrKSIKKyN+IG1zZ3N0clswXSAiLCAlZCB0aMOqbSgrKSIKKyN+IG1zZ3N0clsxXSAiLCAlZCB0aMOqbSgrKSIKKworI34gbXNnaWQgIiwgJWQgZGVsZXRpb24oLSkiCisjfiBtc2dpZF9wbHVyYWwgIiwgJWQgZGVsZXRpb25zKC0pIgorI34gbXNnc3RyWzBdICIsICVkIHjDs2EoLSkiCisjfiBtc2dzdHJbMV0gIiwgJWQgeMOzYSgtKSIKKworI34gbXNnaWQgIkF1dG8gcGFja2luZyB0aGUgcmVwb3NpdG9yeSBmb3Igb3B0aW11bSBwZXJmb3JtYW5jZS5cbiIKKyN+IG1zZ3N0ciAiVOG7sSDEkeG7mW5nIMSRw7NuZyBnw7NpIGtobyBjaOG7qWEgxJHhu4MgdOG7kWkgxrB1IGjDs2EgaGnhu4d1IHN14bqldCBsw6BtIHZp4buHYy5cbiIKKworI34gbXNnaWQgIiAodXNlIFwiZ2l0IGFkZFwiIHRvIHRyYWNrKSIKKyN+IG1zZ3N0ciAiIChkw7luZyBcImdpdCBhZGRcIiDEkeG7gyB0aGVvIGTDtWkgZOG6pXUgduG6v3QpIgorCisjfiBtc2dpZCAiLUIgY2Fubm90IGJlIHVzZWQgd2l0aCAtYiIKKyN+IG1zZ3N0ciAidMO5eSBjaOG7jW4gLUIga2jDtG5nIHRo4buDIGTDuW5nIC1iIgorCisjfiBtc2dpZCAiLS1wYXRjaCBpcyBpbmNvbXBhdGlibGUgd2l0aCBhbGwgb3RoZXIgb3B0aW9ucyIKKyN+IG1zZ3N0ciAiLS1wYXRjaCB4dW5nIGto4bqvYyB24bubaSB04bqldCBj4bqjIGPDoWMgdMO5eSBjaOG7jW4ga2jDoWMiCisKKyN+IG1zZ2lkICItLWRldGFjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIC1iLy1CLy0tb3JwaGFuIgorI34gbXNnc3RyICItLWRldGFjaCBraMO0bmcgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgduG7m2kgdMO5eSBjaOG7jW4gLWIvLUIvLS1vcnBoYW4iCisKKyN+IG1zZ2lkICItLWRldGFjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIC10IgorI34gbXNnc3RyICItLWRldGFjaCBraMO0bmcgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgduG7m2kgdMO5eSBjaOG7jW4gLXQiCisKKyN+IG1zZ2lkICItLW9ycGhhbiBhbmQgLWJ8LUIgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSIKKyN+IG1zZ3N0ciAiVMO5eSBjaOG7jW4gLS1vcnBoYW4gdsOgIC1ifC1CIGxv4bqhaSB04burIGzhuqtuIG5oYXUiCisKKyN+IG1zZ2lkICItLW9ycGhhbiBjYW5ub3QgYmUgdXNlZCB3aXRoIC10IgorI34gbXNnc3RyICItLW9ycGhhbiBraMO0bmcgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgduG7m2kgdMO5eSBjaOG7jW4gLXQiCisKKyN+IG1zZ2lkICJnaXQgY2hlY2tvdXQ6IC1mIGFuZCAtbSBhcmUgaW5jb21wYXRpYmxlIgorI34gbXNnc3RyICJnaXQgY2hlY2tvdXQ6IGhhaSB0w7l5IGNo4buNbiAtZiB2w6AgLW0geHVuZyBraOG6r2MgbmhhdSIKKworI34gbXNnaWQgIiIKKyN+ICJnaXQgY2hlY2tvdXQ6IHVwZGF0aW5nIHBhdGhzIGlzIGluY29tcGF0aWJsZSB3aXRoIHN3aXRjaGluZyBicmFuY2hlcy4iCisjfiBtc2dzdHIgIiIKKyN+ICJnaXQgY2hlY2tvdXQ6IHZp4buHYyBj4bqtcCBuaOG6rXQgY8OhYyDEkcaw4budbmcgZOG6q24gbMOgIHh1bmcga2jhuq9jIHbhu5tpIHZp4buHYyBjaHV54buDbiAiCisjfiAixJHhu5VpIGPDoWMgbmjDoW5oLiIKKworI34gbXNnaWQgImRpZmYgc2V0dXAgZmFpbGVkIgorI34gbXNnc3RyICJjw6BpIMSR4bq3dCBkaWZmIGfhurdwIGzhu5dpIgorCisjfiBtc2dpZCAibWVyZ2UtcmVjdXJzaXZlOiBkaXNrIGZ1bGw/IgorI34gbXNnc3RyICJtZXJnZS1yZWN1cnNpdmU6IMSRxKlhIGLhu4sgxJHhuqd5PyIKKworI34gbXNnaWQgImRpZmZfc2V0dXBfZG9uZSBmYWlsZWQiCisjfiBtc2dzdHIgImRpZmZfc2V0dXBfZG9uZSBn4bq3cCBs4buXaSIKKworI34gbXNnaWQgIi1kIG9wdGlvbiBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiAgRG8gbm90IHVzZS4iCisjfiBtc2dzdHIgIlTDuXkgY2jhu41uIC1kIGtow7RuZyBjw7JuIMSRxrDhu6NjIGjhu5cgdHLhu6MgbuG7r2EuIFhpbiDEkeG7q25nIHPhu60gZOG7pW5nLiIKKworI34gbXNnaWQgIiVzOiBoYXMgYmVlbiBkZWxldGVkL3JlbmFtZWQiCisjfiBtc2dzdHIgIiVzOiDEkcOjIMSRxrDhu6NjIHjDs2EvdGhheS10w6puIgorCisjfiBtc2dpZCAiJyVzJzogbm90IGEgZG9jdW1lbnRhdGlvbiBkaXJlY3RvcnkuIgorI34gbXNnc3RyICLigJ0lc+KAnToga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgdGjGsCBt4bulYyB0w6BpIGxp4buHdS4iCiAKICN+IG1zZ2lkICItLSIKICN+IG1zZ3N0ciAiLS0iCkBAIC01NTU3LDE0ICsxMDM1MCw1IEBACiAjfiBtc2dzdHIgIiIKICN+ICJLaMO0bmcgdGjhu4MgcsO6dCB0csOtY2ggxJHhu4thIGNo4buJIHRoxrAgxJFp4buHbiB04butIHThu6sgxJHhu4tuaCBkYW5oIG5nxrDhu51pIGNodXnhu4NuIGdpYW8iCiAKLSMsIGZ1enp5CiAjfiBtc2dpZCAiY291bGQgbm90IHBhcnNlIGNvbW1pdCAlc1xuIgotI34gbXNnc3RyICJLaMO0bmcgdGjhu4MgcGjDom4gdMOtY2ggY29tbWl0IChs4bqnbiBjaHV54buDbiBnaWFvKSAlc1xuIgotCi0jLCBmdXp6eQotI34gbXNnaWQgImNoZXJyeS1waWNrIgotI34gbXNnc3RyICI8IENo4buNbiBELU1vZCIKLQotIywgZnV6enkKLSN+IG1zZ2lkICJUb28gbWFueSBvcHRpb25zIHNwZWNpZmllZCIKLSN+IG1zZ3N0ciAixJHDoyBnaGkgcsO1IHF1w6Egbmhp4buBdSBrw61jaCBj4buhIgorI34gbXNnc3RyICJraMO0bmcgdGjhu4MgcGjDom4gdMOtY2ggY29tbWl0IChs4bqnbiBjaHV54buDbiBnaWFvKSAlc1xuIgpkaWZmIC0tZ2l0IGEvcG8vemhfQ04ucG8gYi9wby96aF9DTi5wbwppbmRleCBiNDZiNTNlLi5iYTc1N2Q5IDEwMDY0NAotLS0gYS9wby96aF9DTi5wbworKysgYi9wby96aF9DTi5wbwpAQCAtMSw2ICsxLDYgQEAKICMgQ2hpbmVzZSB0cmFuc2xhdGlvbnMgZm9yIEdpdCBwYWNrYWdlCiAjIEdpdCDova/ku7bljIXnmoTnroDkvZPkuK3mlofnv7vor5EuCi0jIENvcHlyaWdodCAoQykgMjAxMiBKaWFuZyBYaW4gPHdvcmxkaGVsbG8ubmV0IEFUIGdtYWlsLmNvbT4KKyMgQ29weXJpZ2h0IChDKSAyMDEyLDIwMTMgSmlhbmcgWGluIDx3b3JsZGhlbGxvLm5ldCBBVCBnbWFpbC5jb20+CiAjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBHaXQgcGFja2FnZS4KICMgQ29udHJpYnV0ZXJzOgogIyAgIC0gSmlhbmcgWGluIDx3b3JsZGhlbGxvLm5ldCBBVCBnbWFpbC5jb20+CkBAIC0xMiw4ICsxMiw4IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IEdpdFxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBHaXQgTWFpbGluZyBMaXN0IDxnaXRAdmdlci5rZXJuZWwub3JnPlxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDEyLTA2LTA4IDEwOjIwKzA4MDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDEyLTA2LTA4IDEyOjI0KzA4MDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMy0wNC0zMCAwODoyNSswODAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxMy0wNC0xMiAwOToyMyswODAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBKaWFuZyBYaW4gPHdvcmxkaGVsbG8ubmV0QGdtYWlsLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBHaXRIdWIgPGh0dHBzOi8vZ2l0aHViLmNvbS9nb3RnaXQvZ2l0Lz5cbiIKICJMYW5ndWFnZTogemhfQ05cbiIKQEAgLTIyLDcgKzIyLDcgQEAKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0yOyBwbHVyYWw9KG4gIT0gMSk7XG4iCiAKLSM6IGFkdmljZS5jOjQwCisjOiBhZHZpY2UuYzo1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJoaW50OiAlLipzXG4iCiBtc2dzdHIgIuaPkOekuu+8miUuKnNcbiIKQEAgLTMxLDcgKzMxLDcgQEAKICMuICogTWVzc2FnZSB1c2VkIGJvdGggd2hlbiAnZ2l0IGNvbW1pdCcgZmFpbHMgYW5kIHdoZW4KICMuICogb3RoZXIgY29tbWFuZHMgZG9pbmcgYSBtZXJnZSBkby4KICMuCi0jOiBhZHZpY2UuYzo3MAorIzogYWR2aWNlLmM6ODMKIG1zZ2lkICIiCiAiRml4IHRoZW0gdXAgaW4gdGhlIHdvcmsgdHJlZSxcbiIKICJhbmQgdGhlbiB1c2UgJ2dpdCBhZGQvcm0gPGZpbGU+JyBhc1xuIgpAQCAtNDIsNiArNDIsMjIwIEBACiAiJ2dpdCBhZGQvcm0gPGZpbGU+JyDmoIforrDop6PlhrPmlrnmoYjvvIxcbiIKICLmiJbkvb/nlKggJ2dpdCBjb21taXQgLWEn44CCIgogCisjOiBhcmNoaXZlLmM6MTAKK21zZ2lkICJnaXQgYXJjaGl2ZSBbb3B0aW9uc10gPHRyZWUtaXNoPiBbPHBhdGg+Li4uXSIKK21zZ3N0ciAiZ2l0IGFyY2hpdmUgW+mAiemhuV0gPOagkeaIluaPkOS6pD4gWzzot6/lvoQ+Li4uXSIKKworIzogYXJjaGl2ZS5jOjExCittc2dpZCAiZ2l0IGFyY2hpdmUgLS1saXN0IgorbXNnc3RyICJnaXQgYXJjaGl2ZSAtLWxpc3QiCisKKyM6IGFyY2hpdmUuYzoxMgorbXNnaWQgIiIKKyJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA8cmVwbz4gWy0tZXhlYyA8Y21kPl0gW29wdGlvbnNdIDx0cmVlLWlzaD4gWzxwYXRoPi4uLl0iCittc2dzdHIgIiIKKyJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA854mI5pys5bqTPiBbLS1leGVjIDzlkb3ku6Q+XSBb6YCJ6aG5XSA85qCR5oiW5o+Q5LqkPiBbPOi3r+W+hD4uLi5dIgorCisjOiBhcmNoaXZlLmM6MTMKK21zZ2lkICJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA8cmVwbz4gWy0tZXhlYyA8Y21kPl0gLS1saXN0IgorbXNnc3RyICJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA854mI5pys5bqTPiBbLS1leGVjIDzlkb3ku6Q+XSAtLWxpc3QiCisKKyM6IGFyY2hpdmUuYzozMjMKK21zZ2lkICJmbXQiCittc2dzdHIgIuagvOW8jyIKKworIzogYXJjaGl2ZS5jOjMyMworbXNnaWQgImFyY2hpdmUgZm9ybWF0IgorbXNnc3RyICLlvZLmoaPmoLzlvI8iCisKKyM6IGFyY2hpdmUuYzozMjQgYnVpbHRpbi9sb2cuYzoxMTI2Cittc2dpZCAicHJlZml4IgorbXNnc3RyICLliY3nvIAiCisKKyM6IGFyY2hpdmUuYzozMjUKK21zZ2lkICJwcmVwZW5kIHByZWZpeCB0byBlYWNoIHBhdGhuYW1lIGluIHRoZSBhcmNoaXZlIgorbXNnc3RyICLkuLrlvZLmoaPkuK3mr4/kuKrot6/lvoTlkI3liqDkuIrliY3nvIAiCisKKyM6IGFyY2hpdmUuYzozMjYgYnVpbHRpbi9hcmNoaXZlLmM6ODggYnVpbHRpbi9ibGFtZS5jOjIzNzEKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcyIGJ1aWx0aW4vY29uZmlnLmM6NTUgYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NQorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NyBidWlsdGluL2dyZXAuYzo3MTUgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc3CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDkwIGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTMgYnVpbHRpbi9ub3Rlcy5jOjUzNgorIzogYnVpbHRpbi9ub3Rlcy5jOjY5MyBidWlsdGluL3JlYWQtdHJlZS5jOjEwNyBwYXJzZS1vcHRpb25zLmg6MTQ5Cittc2dpZCAiZmlsZSIKK21zZ3N0ciAi5paH5Lu2IgorCisjOiBhcmNoaXZlLmM6MzI3IGJ1aWx0aW4vYXJjaGl2ZS5jOjg5Cittc2dpZCAid3JpdGUgdGhlIGFyY2hpdmUgdG8gdGhpcyBmaWxlIgorbXNnc3RyICLlvZLmoaPlhpnlhaXmraTmlofku7YiCisKKyM6IGFyY2hpdmUuYzozMjkKK21zZ2lkICJyZWFkIC5naXRhdHRyaWJ1dGVzIGluIHdvcmtpbmcgZGlyZWN0b3J5IgorbXNnc3RyICLor7vlj5blt6XkvZzljLrkuK3nmoQgLmdpdGF0dHJpYnV0ZXMiCisKKyM6IGFyY2hpdmUuYzozMzAKK21zZ2lkICJyZXBvcnQgYXJjaGl2ZWQgZmlsZXMgb24gc3RkZXJyIgorbXNnc3RyICLlnKjmoIflh4bplJnor6/kuIrmiqXlkYrlvZLmoaPmlofku7YiCisKKyM6IGFyY2hpdmUuYzozMzEKK21zZ2lkICJzdG9yZSBvbmx5IgorbXNnc3RyICLlj6rlrZjlgqgiCisKKyM6IGFyY2hpdmUuYzozMzIKK21zZ2lkICJjb21wcmVzcyBmYXN0ZXIiCittc2dzdHIgIuWOi+e8qemAn+W6puabtOW/qyIKKworIzogYXJjaGl2ZS5jOjM0MAorbXNnaWQgImNvbXByZXNzIGJldHRlciIKK21zZ3N0ciAi5Y6L57yp5pWI5p6c5pu05aW9IgorCisjOiBhcmNoaXZlLmM6MzQzCittc2dpZCAibGlzdCBzdXBwb3J0ZWQgYXJjaGl2ZSBmb3JtYXRzIgorbXNnc3RyICLliJflh7rmlK/mjIHnmoTlvZLmoaPmoLzlvI8iCisKKyM6IGFyY2hpdmUuYzozNDUgYnVpbHRpbi9hcmNoaXZlLmM6OTAgYnVpbHRpbi9jbG9uZS5jOjg2Cittc2dpZCAicmVwbyIKK21zZ3N0ciAi54mI5pys5bqTIgorCisjOiBhcmNoaXZlLmM6MzQ2IGJ1aWx0aW4vYXJjaGl2ZS5jOjkxCittc2dpZCAicmV0cmlldmUgdGhlIGFyY2hpdmUgZnJvbSByZW1vdGUgcmVwb3NpdG9yeSA8cmVwbz4iCittc2dzdHIgIuS7jui/nOeoi+eJiOacrOW6k++8iDzniYjmnKzlupM+77yJ5o+Q5Y+W5b2S5qGj5paH5Lu2IgorCisjOiBhcmNoaXZlLmM6MzQ3IGJ1aWx0aW4vYXJjaGl2ZS5jOjkyIGJ1aWx0aW4vbm90ZXMuYzo2MTUKK21zZ2lkICJjb21tYW5kIgorbXNnc3RyICLlkb3ku6QiCisKKyM6IGFyY2hpdmUuYzozNDggYnVpbHRpbi9hcmNoaXZlLmM6OTMKK21zZ2lkICJwYXRoIHRvIHRoZSByZW1vdGUgZ2l0LXVwbG9hZC1hcmNoaXZlIGNvbW1hbmQiCittc2dzdHIgIui/nOeoiyBnaXQtdXBsb2FkLWFyY2hpdmUg5ZG95Luk55qE6Lev5b6EIgorCisjOiBhdHRyLmM6MjU5Cittc2dpZCAiIgorIk5lZ2F0aXZlIHBhdHRlcm5zIGFyZSBpZ25vcmVkIGluIGdpdCBhdHRyaWJ1dGVzXG4iCisiVXNlICdcXCEnIGZvciBsaXRlcmFsIGxlYWRpbmcgZXhjbGFtYXRpb24uIgorbXNnc3RyICIiCisi6LSf5YC85qih54mI5ZyoIGdpdCBhdHRyaWJ1dGVzIOS4reiiq+W/veeVpVxuIgorIuW9k+Wtl+espuS4suehruWunuimgeS7peaEn+WPueWPt+W8gOWni+aXtu+8jOS9v+eUqCAnXFwhJ+OAgiIKKworIzogYnJhbmNoLmM6NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm90IHNldHRpbmcgYnJhbmNoICVzIGFzIGl0cyBvd24gdXBzdHJlYW0uIgorbXNnc3RyICLmnKrorr7nva7liIbmlK8gJXMg5L2c5Li65a6D6Ieq5bex55qE5LiK5ri444CCIgorCisjOiBicmFuY2guYzo4MgorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSBicmFuY2ggJXMgZnJvbSAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIuWIhuaUryAlMSRzIOiuvue9ruS4uuS9v+eUqOWPmOWfuuadpei3n+i4quadpeiHqiAlMyRzIOeahOi/nOeoi+WIhuaUryAlMiRz44CCIgorCisjOiBicmFuY2guYzo4MworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSBicmFuY2ggJXMgZnJvbSAlcy4iCittc2dzdHIgIuWIhuaUryAlMSRzIOiuvue9ruS4uui3n+i4quadpeiHqiAlMyRzIOeahOi/nOeoi+WIhuaUryAlMiRz44CCIgorCisjOiBicmFuY2guYzo4NworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIGxvY2FsIGJyYW5jaCAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIuWIhuaUryAlcyDorr7nva7kuLrkvb/nlKjlj5jln7rmnaXot5/ouKrmnKzlnLDliIbmlK8gJXPjgIIiCisKKyM6IGJyYW5jaC5jOjg4CisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgbG9jYWwgYnJhbmNoICVzLiIKK21zZ3N0ciAi5YiG5pSvICVzIOiuvue9ruS4uui3n+i4quacrOWcsOWIhuaUryAlc+OAgiIKKworIzogYnJhbmNoLmM6OTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgcmVmICVzIGJ5IHJlYmFzaW5nLiIKK21zZ3N0ciAi5YiG5pSvICVzIOiuvue9ruS4uuS9v+eUqOWPmOWfuuadpei3n+i4qui/nOeoi+W8leeUqCAlc+OAgiIKKworIzogYnJhbmNoLmM6OTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgcmVmICVzLiIKK21zZ3N0ciAi5YiG5pSvICVzIOiuvue9ruS4uui3n+i4qui/nOeoi+W8leeUqCAlc+OAgiIKKworIzogYnJhbmNoLmM6OTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCByZWYgJXMgYnkgcmViYXNpbmcuIgorbXNnc3RyICLliIbmlK8gJXMg6K6+572u5Li65L2/55So5Y+Y5Z+65p2l6Lef6Liq5pys5Zyw5byV55SoICVz44CCIgorCisjOiBicmFuY2guYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIGxvY2FsIHJlZiAlcy4iCittc2dzdHIgIuWIhuaUryAlcyDorr7nva7kuLrot5/ouKrmnKzlnLDlvJXnlKggJXPjgIIiCisKKyM6IGJyYW5jaC5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJUcmFja2luZyBub3Qgc2V0IHVwOiBuYW1lIHRvbyBsb25nOiAlcyIKK21zZ3N0ciAi6Lef6Liq5pyq6K6+572u77ya5ZCN5a2X5aSq6ZW/77yaJXMiCisKKyM6IGJyYW5jaC5jOjEzNworIywgYy1mb3JtYXQKK21zZ2lkICJOb3QgdHJhY2tpbmc6IGFtYmlndW91cyBpbmZvcm1hdGlvbiBmb3IgcmVmICVzIgorbXNnc3RyICLmnKrot5/ouKrvvJrlvJXnlKggJXMg5pyJ5q2n5LmJIgorCisjOiBicmFuY2guYzoxODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBpcyBub3QgYSB2YWxpZCBicmFuY2ggbmFtZS4iCittc2dzdHIgIiclcycg5LiN5piv5LiA5Liq5pyJ5pWI55qE5YiG5pSv5ZCN56ew44CCIgorCisjOiBicmFuY2guYzoxODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQSBicmFuY2ggbmFtZWQgJyVzJyBhbHJlYWR5IGV4aXN0cy4iCittc2dzdHIgIuS4gOS4quWIhuaUr+WQjSAnJXMnIOW3sue7j+WtmOWcqOOAgiIKKworIzogYnJhbmNoLmM6MTk1Cittc2dpZCAiQ2Fubm90IGZvcmNlIHVwZGF0ZSB0aGUgY3VycmVudCBicmFuY2guIgorbXNnc3RyICLml6Dms5XlvLrliLbmm7TmlrDlvZPliY3liIbmlK/jgIIiCisKKyM6IGJyYW5jaC5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc2V0dXAgdHJhY2tpbmcgaW5mb3JtYXRpb247IHN0YXJ0aW5nIHBvaW50ICclcycgaXMgbm90IGEgYnJhbmNoLiIKK21zZ3N0ciAi5peg5rOV6K6+572u6Lef6Liq5L+h5oGv77yb6LW35aeL54K5ICclcycg5LiN5piv5LiA5Liq5YiG5pSv44CCIgorCisjOiBicmFuY2guYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAidGhlIHJlcXVlc3RlZCB1cHN0cmVhbSBicmFuY2ggJyVzJyBkb2VzIG5vdCBleGlzdCIKK21zZ3N0ciAi6K+35rGC55qE5LiK5ri45YiG5pSvICclcycg5LiN5a2Y5ZyoIgorCisjOiBicmFuY2guYzoyMDUKK21zZ2lkICIiCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyBvbiBiYXNpbmcgeW91ciB3b3JrIG9uIGFuIHVwc3RyZWFtXG4iCisiYnJhbmNoIHRoYXQgYWxyZWFkeSBleGlzdHMgYXQgdGhlIHJlbW90ZSwgeW91IG1heSBuZWVkIHRvXG4iCisicnVuIFwiZ2l0IGZldGNoXCIgdG8gcmV0cmlldmUgaXQuXG4iCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyB0byBwdXNoIG91dCBhIG5ldyBsb2NhbCBicmFuY2ggdGhhdFxuIgorIndpbGwgdHJhY2sgaXRzIHJlbW90ZSBjb3VudGVycGFydCwgeW91IG1heSB3YW50IHRvIHVzZVxuIgorIlwiZ2l0IHB1c2ggLXVcIiB0byBzZXQgdGhlIHVwc3RyZWFtIGNvbmZpZyBhcyB5b3UgcHVzaC4iCittc2dzdHIgIiIKKyJcbiIKKyLlpoLmnpzmgqjmraPorqHliJLln7rkuo7ov5znqIvkuIDkuKrnjrDlrZjnmoTkuIrmuLjliIbmlK/lvIDlp4vkvaDnmoTlt6XkvZzvvIxcbiIKKyLmgqjlj6/og73pnIDopoHmiafooYwgXCJnaXQgZmV0Y2hcIiDmnaXojrflj5bliIbmlK/jgIJcbiIKKyJcbiIKKyLlpoLmnpzmgqjmraPorqHliJLmjqjpgIHkuIDkuKrog73kuI7lr7nlupTov5znqIvliIbmlK/lu7rnq4vot5/ouKrnmoTmlrDnmoTmnKzlnLDliIbmlK/vvIxcbiIKKyLmgqjlj6/og73pnIDopoHkvb/nlKggXCJnaXQgcHVzaCAtdVwiIOaOqOmAgeWIhuaUr+W5tumFjee9ruWSjOS4iua4uOeahOWFs+iBlOOAgiIKKworIzogYnJhbmNoLmM6MjUwCisjLCBjLWZvcm1hdAorbXNnaWQgIk5vdCBhIHZhbGlkIG9iamVjdCBuYW1lOiAnJXMnLiIKK21zZ3N0ciAi5LiN5piv5LiA5Liq5pyJ5pWI55qE5a+56LGh5ZCN77yaJyVzJ+OAgiIKKworIzogYnJhbmNoLmM6MjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkFtYmlndW91cyBvYmplY3QgbmFtZTogJyVzJy4iCittc2dzdHIgIuatp+S5ieeahOWvueixoeWQje+8miclcyfjgIIiCisKKyM6IGJyYW5jaC5jOjI3NQorIywgYy1mb3JtYXQKK21zZ2lkICJOb3QgYSB2YWxpZCBicmFuY2ggcG9pbnQ6ICclcycuIgorbXNnc3RyICLml6DmlYjnmoTliIbmlK/ngrnvvJonJXMn44CCIgorCisjOiBicmFuY2guYzoyODEKK21zZ2lkICJGYWlsZWQgdG8gbG9jayByZWYgZm9yIHVwZGF0ZSIKK21zZ3N0ciAi5peg5rOV5Li65pu05paw6ZSB5a6a5byV55SoIgorCisjOiBicmFuY2guYzoyOTkKK21zZ2lkICJGYWlsZWQgdG8gd3JpdGUgcmVmIgorbXNnc3RyICLkuI3og73lhpnlvJXnlKgiCisKICM6IGJ1bmRsZS5jOjM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgZG9lcyBub3QgbG9vayBsaWtlIGEgdjIgYnVuZGxlIGZpbGUiCkBAIC01Miw3ICsyNjYsNyBAQAogbXNnaWQgInVucmVjb2duaXplZCBoZWFkZXI6ICVzJXMgKCVkKSIKIG1zZ3N0ciAi5pyq6IO96K+G5Yir55qE5YyF5aS077yaJXMlcyAoJWQpIgogCi0jOiBidW5kbGUuYzo4OSBidWlsdGluL2NvbW1pdC5jOjY5NgorIzogYnVuZGxlLmM6ODkgYnVpbHRpbi9jb21taXQuYzo2NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IG9wZW4gJyVzJyIKIG1zZ3N0ciAi5LiN6IO95omT5byAICclcyciCkBAIC02MSw2NyArMjc1LDcxIEBACiBtc2dpZCAiUmVwb3NpdG9yeSBsYWNrcyB0aGVzZSBwcmVyZXF1aXNpdGUgY29tbWl0czoiCiBtc2dzdHIgIueJiOacrOW6k+e8uuWwkei/meS6m+W/heWkh+eahOaPkOS6pO+8miIKIAotIzogYnVuZGxlLmM6MTY0IHNlcXVlbmNlci5jOjU1MCBzZXF1ZW5jZXIuYzo5ODIgYnVpbHRpbi9sb2cuYzoyODkKLSM6IGJ1aWx0aW4vbG9nLmM6NzIwIGJ1aWx0aW4vbG9nLmM6MTMwOSBidWlsdGluL2xvZy5jOjE1MjggYnVpbHRpbi9tZXJnZS5jOjM0NwotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjE4MQorIzogYnVuZGxlLmM6MTY0IHNlcXVlbmNlci5jOjY1MSBzZXF1ZW5jZXIuYzoxMTAxIGJ1aWx0aW4vbG9nLmM6MzAwCisjOiBidWlsdGluL2xvZy5jOjc3MCBidWlsdGluL2xvZy5jOjEzNDQgYnVpbHRpbi9sb2cuYzoxNTcwIGJ1aWx0aW4vbWVyZ2UuYzozNDkKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxNTUKIG1zZ2lkICJyZXZpc2lvbiB3YWxrIHNldHVwIGZhaWxlZCIKIG1zZ3N0ciAi54mI5pys6YGN5Y6G6K6+572u5aSx6LSlIgogCiAjOiBidW5kbGUuYzoxODYKICMsIGMtZm9ybWF0Ci1tc2dpZCAiVGhlIGJ1bmRsZSBjb250YWlucyAlZCByZWYiCi1tc2dpZF9wbHVyYWwgIlRoZSBidW5kbGUgY29udGFpbnMgJWQgcmVmcyIKLW1zZ3N0clswXSAi6L+Z5Liq5YyF5Lit5ZCr5pyJICVkIOS4quW8leeUqCIKLW1zZ3N0clsxXSAi6L+Z5Liq5YyF5Lit5ZCr5pyJICVkIOS4quW8leeUqCIKK21zZ2lkICJUaGUgYnVuZGxlIGNvbnRhaW5zIHRoaXMgcmVmOiIKK21zZ2lkX3BsdXJhbCAiVGhlIGJ1bmRsZSBjb250YWlucyB0aGVzZSAlZCByZWZzOiIKK21zZ3N0clswXSAi6L+Z5Liq5YyF5Lit5ZCr5pyJ6L+Z5Liq5byV55So77yaIgorbXNnc3RyWzFdICLov5nkuKrljIXkuK3lkKvmnIkgJWQg5Liq5byV55So77yaIgogCi0jOiBidW5kbGUuYzoxOTIKKyM6IGJ1bmRsZS5jOjE5MworbXNnaWQgIlRoZSBidW5kbGUgcmVjb3JkcyBhIGNvbXBsZXRlIGhpc3RvcnkuIgorbXNnc3RyICLov5nkuKrljIXorrDlvZXkuIDkuKrlrozmlbTljoblj7LjgIIiCisKKyM6IGJ1bmRsZS5jOjE5NQogIywgYy1mb3JtYXQKLW1zZ2lkICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoaXMgcmVmIgotbXNnaWRfcGx1cmFsICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoZXNlICVkIHJlZnMiCi1tc2dzdHJbMF0gIui/meS4quWMhemcgOimgei/meS4quW8leeUqCIKLW1zZ3N0clsxXSAi6L+Z5Liq5YyF6ZyA6KaBICVkIOS4qui/meS6m+W8leeUqCIKK21zZ2lkICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoaXMgcmVmOiIKK21zZ2lkX3BsdXJhbCAiVGhlIGJ1bmRsZSByZXF1aXJlcyB0aGVzZSAlZCByZWZzOiIKK21zZ3N0clswXSAi6L+Z5Liq5YyF6ZyA6KaB6L+Z5Liq5byV55So77yaIgorbXNnc3RyWzFdICLov5nkuKrljIXpnIDopoEgJWQg5Liq5byV55So77yaIgogCi0jOiBidW5kbGUuYzoyOTAKKyM6IGJ1bmRsZS5jOjI5NAogbXNnaWQgInJldi1saXN0IGRpZWQiCiBtc2dzdHIgInJldi1saXN0IOe7iOatoiIKIAotIzogYnVuZGxlLmM6Mjk2IGJ1aWx0aW4vbG9nLmM6MTIwNSBidWlsdGluL3Nob3J0bG9nLmM6Mjg0CisjOiBidW5kbGUuYzozMDAgYnVpbHRpbi9sb2cuYzoxMjU1IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGFyZ3VtZW50OiAlcyIKIG1zZ3N0ciAi5pyq6IO96K+G5Yir55qE5Y+C5pWw77yaJXMiCiAKLSM6IGJ1bmRsZS5jOjMzMQorIzogYnVuZGxlLmM6MzM1CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZiAnJXMnIGlzIGV4Y2x1ZGVkIGJ5IHRoZSByZXYtbGlzdCBvcHRpb25zIgogbXNnc3RyICLlvJXnlKggJyVzJyDooqsgcmV2LWxpc3Qg6YCJ6aG55o6S6ZmkIgogCi0jOiBidW5kbGUuYzozNzYKKyM6IGJ1bmRsZS5jOjM4MAogbXNnaWQgIlJlZnVzaW5nIHRvIGNyZWF0ZSBlbXB0eSBidW5kbGUuIgogbXNnc3RyICLkuI3og73liJvlu7rnqbrljIXjgIIiCiAKLSM6IGJ1bmRsZS5jOjM5NAorIzogYnVuZGxlLmM6Mzk4CiBtc2dpZCAiQ291bGQgbm90IHNwYXduIHBhY2stb2JqZWN0cyIKIG1zZ3N0ciAi5LiN6IO955Sf5oiQIHBhY2stb2JqZWN0cyDov5vnqIsiCiAKLSM6IGJ1bmRsZS5jOjQxMgorIzogYnVuZGxlLmM6NDE2CiBtc2dpZCAicGFjay1vYmplY3RzIGRpZWQiCiBtc2dzdHIgInBhY2stb2JqZWN0cyDnu4jmraIiCiAKLSM6IGJ1bmRsZS5jOjQxNQorIzogYnVuZGxlLmM6NDE5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBjcmVhdGUgJyVzJyIKIG1zZ3N0ciAi5LiN6IO95Yib5bu6ICclcyciCiAKLSM6IGJ1bmRsZS5jOjQzNworIzogYnVuZGxlLmM6NDQxCiBtc2dpZCAiaW5kZXgtcGFjayBkaWVkIgogbXNnc3RyICJpbmRleC1wYWNrIOe7iOatoiIKIAotIzogY29tbWl0LmM6NDgKKyM6IGNvbW1pdC5jOjUwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBwYXJzZSAlcyIKIG1zZ3N0ciAi5LiN6IO96Kej5p6QICVzIgogCi0jOiBjb21taXQuYzo1MAorIzogY29tbWl0LmM6NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgJXMgaXMgbm90IGEgY29tbWl0ISIKIG1zZ3N0ciAiJXMgJXMg5LiN5piv5LiA5Liq5o+Q5LqkISIKQEAgLTIxMiwxOSArNDMwLDI0IEBACiBtc2dzdHJbMV0gIiVsdSDlubTliY0iCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogZGlmZi5jOjEwNQorIzogZGlmZi5jOjExMgogIywgYy1mb3JtYXQKLW1zZ2lkICIgIEZhaWxlZCB0byBwYXJzZSBkaXJzdGF0IGN1dC1vZmYgcGVyY2VudGFnZSAnJS4qcydcbiIKLW1zZ3N0ciAiICDml6Dms5Xop6PmnpAgZGlyc3RhdCDpmIjlgLwgJyUuKnMnXG4iCittc2dpZCAiICBGYWlsZWQgdG8gcGFyc2UgZGlyc3RhdCBjdXQtb2ZmIHBlcmNlbnRhZ2UgJyVzJ1xuIgorbXNnc3RyICIgIOaXoOazleino+aekCBkaXJzdGF0IOaIquatou+8iGN1dC1vZmbvvInnmb7liIbmr5QgJyVzJ1xuIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IGRpZmYuYzoxMTAKKyM6IGRpZmYuYzoxMTcKICMsIGMtZm9ybWF0Ci1tc2dpZCAiICBVbmtub3duIGRpcnN0YXQgcGFyYW1ldGVyICclLipzJ1xuIgotbXNnc3RyICIgIOacquefpSBkaXJzdGF0IOWPguaVsCAnJS4qcydcbiIKK21zZ2lkICIgIFVua25vd24gZGlyc3RhdCBwYXJhbWV0ZXIgJyVzJ1xuIgorbXNnc3RyICIgIOacquefpeeahCBkaXJzdGF0IOWPguaVsCAnJXMnXG4iCiAKICM6IGRpZmYuYzoyMTAKICMsIGMtZm9ybWF0Cittc2dpZCAiVW5rbm93biB2YWx1ZSBmb3IgJ2RpZmYuc3VibW9kdWxlJyBjb25maWcgdmFyaWFibGU6ICclcyciCittc2dzdHIgIumFjee9ruWPmOmHjyAnZGlmZi5zdWJtb2R1bGUnIOacquefpeeahOWPluWAvO+8miclcyciCisKKyM6IGRpZmYuYzoyNjAKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkZvdW5kIGVycm9ycyBpbiAnZGlmZi5kaXJzdGF0JyBjb25maWcgdmFyaWFibGU6XG4iCiAiJXMiCkBAIC0yMzIsMzIgKzQ1NSw3IEBACiAi5Y+R546w6YWN572u5Y+Y6YePICdkaWZmLmRpcnN0YXQnIOS4reeahOmUmeivr++8mlxuIgogIiVzIgogCi0jOiBkaWZmLmM6MTQwMAotbXNnaWQgIiAwIGZpbGVzIGNoYW5nZWRcbiIKLW1zZ3N0ciAiIDAg5Liq5paH5Lu26KKr5L+u5pS5XG4iCi0KLSM6IGRpZmYuYzoxNDA0Ci0jLCBjLWZvcm1hdAotbXNnaWQgIiAlZCBmaWxlIGNoYW5nZWQiCi1tc2dpZF9wbHVyYWwgIiAlZCBmaWxlcyBjaGFuZ2VkIgotbXNnc3RyWzBdICIgJWQg5Liq5paH5Lu26KKr5L+u5pS5IgotbXNnc3RyWzFdICIgJWQg5Liq5paH5Lu26KKr5L+u5pS5IgotCi0jOiBkaWZmLmM6MTQyMQotIywgYy1mb3JtYXQKLW1zZ2lkICIsICVkIGluc2VydGlvbigrKSIKLW1zZ2lkX3BsdXJhbCAiLCAlZCBpbnNlcnRpb25zKCspIgotbXNnc3RyWzBdICLvvIzmj5LlhaUgJWQg6KGMKCspIgotbXNnc3RyWzFdICLvvIzmj5LlhaUgJWQg6KGMKCspIgotCi0jOiBkaWZmLmM6MTQzMgotIywgYy1mb3JtYXQKLW1zZ2lkICIsICVkIGRlbGV0aW9uKC0pIgotbXNnaWRfcGx1cmFsICIsICVkIGRlbGV0aW9ucygtKSIKLW1zZ3N0clswXSAi77yM5Yig6ZmkICVkIOihjCgtKSIKLW1zZ3N0clsxXSAi77yM5Yig6ZmkICVkIOihjCgtKSIKLQotIzogZGlmZi5jOjM0NzgKKyM6IGRpZmYuYzozNDgxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJGYWlsZWQgdG8gcGFyc2UgLS1kaXJzdGF0Ly1YIG9wdGlvbiBwYXJhbWV0ZXI6XG4iCkBAIC0yNjYsNyArNDY0LDEyIEBACiAi5peg5rOV6Kej5p6QIC0tZGlyc3RhdC8tWCDpgInpobnnmoTlj4LmlbDvvJpcbiIKICIlcyIKIAotIzogZ3BnLWludGVyZmFjZS5jOjU5CisjOiBkaWZmLmM6MzQ5NQorIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcGFyc2UgLS1zdWJtb2R1bGUgb3B0aW9uIHBhcmFtZXRlcjogJyVzJyIKK21zZ3N0ciAi5peg5rOV6Kej5p6QIC0tc3VibW9kdWxlIOmAiemhueeahOWPguaVsO+8miclcyciCisKKyM6IGdwZy1pbnRlcmZhY2UuYzo1OSBncGctaW50ZXJmYWNlLmM6MTMxCiBtc2dpZCAiY291bGQgbm90IHJ1biBncGcuIgogbXNnc3RyICLkuI3og73miafooYwgZ3Bn44CCIgogCkBAIC0yNzgsMzEgKzQ4MSw0NSBAQAogbXNnaWQgImdwZyBmYWlsZWQgdG8gc2lnbiB0aGUgZGF0YSIKIG1zZ3N0ciAiZ3BnIOaXoOazleS4uuaVsOaNruetvuWQjSIKIAotIzogZ3JlcC5jOjEzMjAKKyM6IGdwZy1pbnRlcmZhY2UuYzoxMTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiY291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZSAnJXMnOiAlcyIKK21zZ3N0ciAi5LiN6IO95Yib5bu65Li05pe25paH5Lu2ICclcyfvvJolcyIKKworIzogZ3BnLWludGVyZmFjZS5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgd3JpdGluZyBkZXRhY2hlZCBzaWduYXR1cmUgdG8gJyVzJzogJXMiCittc2dzdHIgIuaXoOazleWwhuWIhuemu+W8j+etvuWQjeWGmeWFpSAnJXMn77yaJXMiCisKKyM6IGdyZXAuYzoxNjIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6IHVuYWJsZSB0byByZWFkICVzIgogbXNnc3RyICInJXMn77ya5peg5rOV6K+75Y+WICVzIgogCi0jOiBncmVwLmM6MTMzNworIzogZ3JlcC5jOjE2NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJzogJXMiCiBtc2dzdHIgIiclcyfvvJolcyIKIAotIzogZ3JlcC5jOjEzNDgKKyM6IGdyZXAuYzoxNjUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6IHNob3J0IHJlYWQgJXMiCiBtc2dzdHIgIiclcyfvvJror7vlj5bkuI3lrozmlbQgJXMiCiAKLSM6IGhlbHAuYzoyMDcKKyM6IGhlbHAuYzoyMTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiYXZhaWxhYmxlIGdpdCBjb21tYW5kcyBpbiAnJXMnIgogbXNnc3RyICLlnKggJyVzJyDkuIvlj6/nlKjnmoQgZ2l0IOWRveS7pCIKIAotIzogaGVscC5jOjIxNAorIzogaGVscC5jOjIxOQogbXNnaWQgImdpdCBjb21tYW5kcyBhdmFpbGFibGUgZnJvbSBlbHNld2hlcmUgb24geW91ciAkUEFUSCIKIG1zZ3N0ciAi5ZyoICRQQVRIIOi3r+W+hOS4reeahOWFtuS7luWcsOaWueWPr+eUqOeahCBnaXQg5ZG95LukIgogCi0jOiBoZWxwLmM6MjcwCisjOiBoZWxwLmM6MjM1Cittc2dpZCAiVGhlIG1vc3QgY29tbW9ubHkgdXNlZCBnaXQgY29tbWFuZHMgYXJlOiIKK21zZ3N0ciAi5pyA5bi455So55qEIGdpdCDlkb3ku6TmnInvvJoiCisKKyM6IGhlbHAuYzoyOTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgYXBwZWFycyB0byBiZSBhIGdpdCBjb21tYW5kLCBidXQgd2Ugd2VyZSBub3RcbiIKQEAgLTMxMSwxMSArNTI4LDExIEBACiAiJyVzJyDlg4/mmK/kuIDkuKogZ2l0IOWRveS7pO+8jOS9huWNtOaXoOazlei/kOihjOOAglxuIgogIuWPr+iDveaYryBnaXQtJXMg5Y+X5o2f77yfIgogCi0jOiBoZWxwLmM6MzI3CisjOiBoZWxwLmM6MzQ5CiBtc2dpZCAiVWggb2guIFlvdXIgc3lzdGVtIHJlcG9ydHMgbm8gR2l0IGNvbW1hbmRzIGF0IGFsbC4iCiBtc2dzdHIgIuWUieWRgO+8jOaCqOeahOezu+e7n+S4reacquWPkeeOsCBHaXQg5ZG95Luk44CCIgogCi0jOiBoZWxwLmM6MzQ5CisjOiBoZWxwLmM6MzcxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJXQVJOSU5HOiBZb3UgY2FsbGVkIGEgR2l0IGNvbW1hbmQgbmFtZWQgJyVzJywgd2hpY2ggZG9lcyBub3QgZXhpc3QuXG4iCkBAIC0zMjQsMTcgKzU0MSwxNyBAQAogIuitpuWRiu+8muaCqOi/kOihjOS4gOS4quS4jeWtmOWcqOeahCBHaXQg5ZG95LukICclcyfjgILnu6fnu63miafooYzlgYflrprmgqjopoHopoHov5DooYznmoRcbiIKICLmmK8gJyVzJyIKIAotIzogaGVscC5jOjM1NAorIzogaGVscC5jOjM3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbiAlMC4xZiBzZWNvbmRzIGF1dG9tYXRpY2FsbHkuLi4iCiBtc2dzdHIgIuWcqCAlMC4xZiDnp5Lpkp/lkI7oh6rliqjov5DooYwuLi4iCiAKLSM6IGhlbHAuYzozNjEKKyM6IGhlbHAuYzozODMKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0OiAnJXMnIGlzIG5vdCBhIGdpdCBjb21tYW5kLiBTZWUgJ2dpdCAtLWhlbHAnLiIKIG1zZ3N0ciAiZ2l077yaJyVzJyDkuI3mmK/kuIDkuKogZ2l0IOWRveS7pOOAguWPguingSAnZ2l0IC0taGVscCfjgIIiCiAKLSM6IGhlbHAuYzozNjUKKyM6IGhlbHAuYzozODcKIG1zZ2lkICIiCiAiXG4iCiAiRGlkIHlvdSBtZWFuIHRoaXM/IgpAQCAtMzQ2LDM4ICs1NjMsMzI0IEBACiAi5oKo5oyH55qE5piv6L+Z5Liq5LmI77yfIgogbXNnc3RyWzFdICIiCiAiXG4iCi0i5oKo5oyH55qE5piv6L+Z5Lqb5YW25Lit5LiA5Liq5LmI77yfIgorIuaCqOaMh+eahOaYr+i/meWFtuS4reeahOafkOS4gOS4quS5iO+8nyIKIAotIzogcGFyc2Utb3B0aW9ucy5jOjQ5MworIzogbWVyZ2UuYzo1NgorbXNnaWQgImZhaWxlZCB0byByZWFkIHRoZSBjYWNoZSIKK21zZ3N0ciAi5peg5rOV6K+75Y+W57yT5a2YIgorCisjOiBtZXJnZS5jOjExMCBidWlsdGluL2NoZWNrb3V0LmM6MzY1IGJ1aWx0aW4vY2hlY2tvdXQuYzo1NjYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NDUKK21zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbmV3IGluZGV4IGZpbGUiCittc2dzdHIgIuaXoOazleWGmeaWsOeahOe0ouW8leaWh+S7tiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIihiYWQgY29tbWl0KVxuIgorbXNnc3RyICLvvIjlnY/mj5DkuqTvvIlcbiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MjA2CisjLCBjLWZvcm1hdAorbXNnaWQgImFkZGluZm9fY2FjaGUgZmFpbGVkIGZvciBwYXRoICclcyciCittc2dzdHIgIuS4uui3r+W+hCAnJXMnIGFkZGluZm9fY2FjaGUg5aSx6LSlIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoyNjgKK21zZ2lkICJlcnJvciBidWlsZGluZyB0cmVlcyIKK21zZ3N0ciAi5peg5rOV5Yib5bu65qCRIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo2NzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmFpbGVkIHRvIGNyZWF0ZSBwYXRoICclcyclcyIKK21zZ3N0ciAi5peg5rOV5Yib5bu66Lev5b6EICclcyclcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6NjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlbW92aW5nICVzIHRvIG1ha2Ugcm9vbSBmb3Igc3ViZGlyZWN0b3J5XG4iCittc2dzdHIgIuWIoOmZpCAlcyDku6Xkvr/kuLrlrZDnm67lvZXnlZnlh7rnqbrpl7RcbiIKKworIy4gc29tZXRoaW5nIGVsc2UgZXhpc3RzCisjLiAuLiBidXQgbm90IHNvbWUgb3RoZXIgZXJyb3IgKHdobyByZWFsbHkgY2FyZXMgd2hhdD8pCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo2OTcgbWVyZ2UtcmVjdXJzaXZlLmM6NzE4Cittc2dpZCAiOiBwZXJoYXBzIGEgRC9GIGNvbmZsaWN0PyIKK21zZ3N0ciAi77ya5Y+v6IO95piv5LiA5Liq55uu5b2VL+aWh+S7tuWGsueqge+8nyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzA4CisjLCBjLWZvcm1hdAorbXNnaWQgInJlZnVzaW5nIHRvIGxvc2UgdW50cmFja2VkIGZpbGUgYXQgJyVzJyIKK21zZ3N0ciAi5ouS57ud5Lii5byDICclcycg5Lit55qE5pyq6Lef6Liq5paH5Lu2IgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2Fubm90IHJlYWQgb2JqZWN0ICVzICclcyciCittc2dzdHIgIuS4jeiDveivu+WPluWvueixoSAlcyAnJXMnIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmxvYiBleHBlY3RlZCBmb3IgJXMgJyVzJyIKK21zZ3N0ciAiJXMgJyVzJyDlupTkuLrmlbDmja7vvIhibG9i77yJ5a+56LGhIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NzMgYnVpbHRpbi9jbG9uZS5jOjMxMworIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgdG8gb3BlbiAnJXMnIgorbXNnc3RyICLml6Dms5XmiZPlvIAgJyVzJyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzgxCisjLCBjLWZvcm1hdAorbXNnaWQgImZhaWxlZCB0byBzeW1saW5rICclcyciCittc2dzdHIgIuaXoOazleWIm+W7uuespuWPt+mTvuaOpSAnJXMnIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiZG8gbm90IGtub3cgd2hhdCB0byBkbyB3aXRoICUwNm8gJXMgJyVzJyIKK21zZ3N0ciAi5LiN55+l6YGT5aaC5L2V5aSE55CGICUwNm8gJXMgJyVzJyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6OTIyCittc2dpZCAiRmFpbGVkIHRvIGV4ZWN1dGUgaW50ZXJuYWwgbWVyZ2UiCittc2dzdHIgIuaXoOazleaJp+ihjOWGhemDqOWQiOW5tiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6OTI2CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuYWJsZSB0byBhZGQgJXMgdG8gZGF0YWJhc2UiCittc2dzdHIgIuS4jeiDvea3u+WKoCAlcyDoh7Plr7nosaHlupMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjk0MgorbXNnaWQgInVuc3VwcG9ydGVkIG9iamVjdCB0eXBlIGluIHRoZSB0cmVlIgorbXNnc3RyICLlnKjmoJHkuK3mnInkuI3mlK/mjIHnmoTlr7nosaHnsbvlnosiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEwMjEgbWVyZ2UtcmVjdXJzaXZlLmM6MTAzNQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ09ORkxJQ1QgKCVzL2RlbGV0ZSk6ICVzIGRlbGV0ZWQgaW4gJXMgYW5kICVzIGluICVzLiBWZXJzaW9uICVzIG9mICVzIGxlZnQgIgorImluIHRyZWUuIgorbXNnc3RyICIiCisi5Yay56qB77yIJTEkcy/liKDpmaTvvInvvJolMiRzIOWcqCAlMyRzIOS4reiiq+WIoOmZpO+8jOWcqCAlNSRzIOS4reiiqyAlNCRz44CCJTckcyDlnKggJTYkcyDkuK0iCisi55qE54mI5pys6KKr5L+d55WZ44CCIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDI3IG1lcmdlLXJlY3Vyc2l2ZS5jOjEwNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNPTkZMSUNUICglcy9kZWxldGUpOiAlcyBkZWxldGVkIGluICVzIGFuZCAlcyBpbiAlcy4gVmVyc2lvbiAlcyBvZiAlcyBsZWZ0ICIKKyJpbiB0cmVlIGF0ICVzLiIKK21zZ3N0ciAiIgorIuWGsueqge+8iCUxJHMv5Yig6Zmk77yJ77yaJTIkcyDlnKggJTMkcyDkuK3ooqvliKDpmaTvvIzlnKggJTUkcyDkuK3ooqsgJTQkc+OAgiU3JHMg5ZyoICU2JHMg5LitIgorIueahOeJiOacrOS/neeVmeS6jiAlOCRzIOS4reOAgiIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTA4MQorbXNnaWQgInJlbmFtZSIKK21zZ3N0ciAi6YeN5ZG95ZCNIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDgxCittc2dpZCAicmVuYW1lZCIKK21zZ3N0ciAi6YeN5ZG95ZCNIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIGEgZGlyZWN0b3J5IGluICVzIGFkZGluZyBhcyAlcyBpbnN0ZWFkIgorbXNnc3RyICIlcyDmmK8gJXMg5Lit55qE5LiA5Liq55uu5b2V6ICM5LulICVzIOS4uuWQjeiiq+a3u+WKoCIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTE1OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ09ORkxJQ1QgKHJlbmFtZS9yZW5hbWUpOiBSZW5hbWUgXCIlc1wiLT5cIiVzXCIgaW4gYnJhbmNoIFwiJXNcIiByZW5hbWUgXCIlcyIKKyJcIi0+XCIlc1wiIGluIFwiJXNcIiVzIgorbXNnc3RyICIiCisi5Yay56qB77yI6YeN5ZG95ZCNL+mHjeWRveWQje+8ie+8muWcqOWIhuaUryBcIiUzJHNcIiDkuK3ph43lkb3lkI0gXCIlMSRzXCItPlwiJTIkc1wi77yM5Zyo5YiG5pSvICIKKyJcIiU2JHNcIiDkuK3ph43lkb3lkI0gXCIlNCRzXCItPlwiJTUkc1wiJTckcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTE2NAorbXNnaWQgIiAobGVmdCB1bnJlc29sdmVkKSIKK21zZ3N0ciAi77yI55WZ5LiL5pyq6Kej5Yaz77yJIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMjE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNPTkZMSUNUIChyZW5hbWUvcmVuYW1lKTogUmVuYW1lICVzLT4lcyBpbiAlcy4gUmVuYW1lICVzLT4lcyBpbiAlcyIKK21zZ3N0ciAiIgorIuWGsueqge+8iOmHjeWRveWQjS/ph43lkb3lkI3vvInvvJrlnKggJTMkcyDkuK3ph43lkb3lkI0gJTEkcy0+JTIkc++8jOWcqCAlNiRzIOS4remHjeWRveWQjSAlNCRzLT4iCisiJTUkcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTI0OAorIywgYy1mb3JtYXQKK21zZ2lkICJSZW5hbWluZyAlcyB0byAlcyBhbmQgJXMgdG8gJXMgaW5zdGVhZCIKK21zZ3N0ciAi6ICM5piv6YeN5ZG95ZCNICVzIOiHsyAlc++8jOS7peWPiiAlcyDoh7MgJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE0NDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ09ORkxJQ1QgKHJlbmFtZS9hZGQpOiBSZW5hbWUgJXMtPiVzIGluICVzLiAlcyBhZGRlZCBpbiAlcyIKK21zZ3N0ciAi5Yay56qB77yI6YeN5ZG95ZCNL+a3u+WKoO+8ie+8muWcqCAlMyRzIOS4remHjeWRveWQjSAlMSRzLT4lMiRz44CC5ZyoICU1JHMg5Lit5re75YqgICU0JHMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE0NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQWRkaW5nIG1lcmdlZCAlcyIKK21zZ3N0ciAi5re75Yqg5ZCI5bm25ZCO55qEICVzIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNDYyIG1lcmdlLXJlY3Vyc2l2ZS5jOjE2NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQWRkaW5nIGFzICVzIGluc3RlYWQiCittc2dzdHIgIuiAjOaYr+S7pSAlcyDkuLrlkI3mt7vliqAiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2Fubm90IHJlYWQgb2JqZWN0ICVzIgorbXNnc3RyICLkuI3og73or7vlj5blr7nosaEgJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1MTYKKyMsIGMtZm9ybWF0Cittc2dpZCAib2JqZWN0ICVzIGlzIG5vdCBhIGJsb2IiCittc2dzdHIgIuWvueixoSAlcyDkuI3mmK/kuIDkuKrmlbDmja7vvIhibG9i77yJ5a+56LGhIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTY0Cittc2dpZCAibW9kaWZ5IgorbXNnc3RyICLkv67mlLkiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1NjQKK21zZ2lkICJtb2RpZmllZCIKK21zZ3N0ciAi5L+u5pS5IgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTc0Cittc2dpZCAiY29udGVudCIKK21zZ3N0ciAi5YaF5a65IgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTgxCittc2dpZCAiYWRkL2FkZCIKK21zZ3N0ciAi5re75YqgL+a3u+WKoCIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYxNQorIywgYy1mb3JtYXQKK21zZ2lkICJTa2lwcGVkICVzIChtZXJnZWQgc2FtZSBhcyBleGlzdGluZykiCittc2dzdHIgIueVpei/hyAlc++8iOW3sue7j+WBmui/h+ebuOWQjOWQiOW5tu+8iSIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYyOQorIywgYy1mb3JtYXQKK21zZ2lkICJBdXRvLW1lcmdpbmcgJXMiCittc2dzdHIgIuiHquWKqOWQiOW5tiAlcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYzMyBnaXQtc3VibW9kdWxlLnNoOjEwMjkKK21zZ2lkICJzdWJtb2R1bGUiCittc2dzdHIgIuWtkOaooee7hCIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYzNAorIywgYy1mb3JtYXQKK21zZ2lkICJDT05GTElDVCAoJXMpOiBNZXJnZSBjb25mbGljdCBpbiAlcyIKK21zZ3N0ciAi5Yay56qB77yIJXPvvInvvJrlkIjlubblhrLnqoHkuo4gJXMiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVtb3ZpbmcgJXMiCittc2dzdHIgIuWIoOmZpCAlcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTc0OQorbXNnaWQgImZpbGUvZGlyZWN0b3J5IgorbXNnc3RyICLmlofku7Yv55uu5b2VIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzU1Cittc2dpZCAiZGlyZWN0b3J5L2ZpbGUiCittc2dzdHIgIuebruW9lS/mlofku7YiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ09ORkxJQ1QgKCVzKTogVGhlcmUgaXMgYSBkaXJlY3Rvcnkgd2l0aCBuYW1lICVzIGluICVzLiBBZGRpbmcgJXMgYXMgJXMiCittc2dzdHIgIuWGsueqge+8iCUxJHPvvInvvJrlnKggJTMkcyDkuK3mnInkuIDkuKrlkI3kuLogJTIkcyDnmoTnm67lvZXjgILku6UgJTUkcyDkuLrlkI3mt7vliqAgJTQkcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTc3MAorIywgYy1mb3JtYXQKK21zZ2lkICJBZGRpbmcgJXMiCittc2dzdHIgIua3u+WKoCAlcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTc4NworbXNnaWQgIkZhdGFsIG1lcmdlIGZhaWx1cmUsIHNob3VsZG4ndCBoYXBwZW4uIgorbXNnc3RyICLkuKXph43nmoTlkIjlubbplJnor6/vvIzkuI3lupTlj5HnlJ/jgIIiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE4MDYKK21zZ2lkICJBbHJlYWR5IHVwLXRvLWRhdGUhIgorbXNnc3RyICLlt7Lnu4/mmK/mnIDmlrDnmoTvvIEiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE4MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAibWVyZ2luZyBvZiB0cmVlcyAlcyBhbmQgJXMgZmFpbGVkIgorbXNnc3RyICLml6Dms5XlkIjlubbmoJEgJXMg5ZKMICVzIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVucHJvY2Vzc2VkIHBhdGg/Pz8gJXMiCittc2dzdHIgIuacquWkhOeQhueahOi3r+W+hD8/PyAlcyIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTg5MAorbXNnaWQgIk1lcmdpbmc6IgorbXNnc3RyICLlkIjlubbvvJoiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE5MDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZm91bmQgJXUgY29tbW9uIGFuY2VzdG9yOiIKK21zZ2lkX3BsdXJhbCAiZm91bmQgJXUgY29tbW9uIGFuY2VzdG9yczoiCittc2dzdHJbMF0gIuWPkeeOsCAldSDkuKrlhbHlkIznpZblhYjvvJoiCittc2dzdHJbMV0gIuWPkeeOsCAldSDkuKrlhbHlkIznpZblhYjvvJoiCisKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE5NDAKK21zZ2lkICJtZXJnZSByZXR1cm5lZCBubyBjb21taXQiCittc2dzdHIgIuWQiOW5tuacqui/lOWbnuaPkOS6pCIKKworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTk5NworIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcyciCittc2dzdHIgIuS4jeiDveino+aekOWvueixoSAnJXMnIgorCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoyMDA5IGJ1aWx0aW4vbWVyZ2UuYzo2NTgKK21zZ2lkICJVbmFibGUgdG8gd3JpdGUgaW5kZXguIgorbXNnc3RyICLkuI3og73lhpnlhaXntKLlvJXjgIIiCisKKyM6IG9iamVjdC5jOjE5NQorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gcGFyc2Ugb2JqZWN0OiAlcyIKK21zZ3N0ciAi5LiN6IO96Kej5p6Q5a+56LGh77yaJXMiCisKKyM6IHBhcnNlLW9wdGlvbnMuYzo0ODkKIG1zZ2lkICIuLi4iCiBtc2dzdHIgIi4uLiIKIAotIzogcGFyc2Utb3B0aW9ucy5jOjUxMQorIzogcGFyc2Utb3B0aW9ucy5jOjUwNwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1c2FnZTogJXMiCiBtc2dzdHIgIueUqOazle+8miVzIgogCiAjLiBUUkFOU0xBVE9SUzogdGhlIGNvbG9uIGhlcmUgc2hvdWxkIGFsaWduIHdpdGggdGhlCiAjLiBvbmUgaW4gInVzYWdlOiAlcyIgdHJhbnNsYXRpb24KLSM6IHBhcnNlLW9wdGlvbnMuYzo1MTUKKyM6IHBhcnNlLW9wdGlvbnMuYzo1MTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgb3I6ICVzIgogbXNnc3RyICIgIOaIlu+8miVzIgogCiAjICDor5HogIXvvJrkuLrkv53or4HlnKjovpPlh7rkuK3lr7npvZDvvIzms6jmhI/osIPmlbTlj6XkuK3nqbrmoLzvvIEKLSM6IHBhcnNlLW9wdGlvbnMuYzo1MTgKKyM6IHBhcnNlLW9wdGlvbnMuYzo1MTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgICVzIgogbXNnc3RyICIgICAgJXMiCiAKLSM6IHJlbW90ZS5jOjE2MjkKKyM6IHBhcnNlLW9wdGlvbnMuYzo1NDgKK21zZ2lkICItTlVNIgorbXNnc3RyICIt5pWw5a2XIgorCisjOiBwYXRoc3BlYy5jOjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIlBhdGggJyVzJyBpcyBpbiBzdWJtb2R1bGUgJyUuKnMnIgorbXNnc3RyICLot6/lvoQgJyVzJyDlsZ7kuo7mqKHnu4QgJyUuKnMnIgorCisjOiBwYXRoc3BlYy5jOjk5CisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgaXMgYmV5b25kIGEgc3ltYm9saWMgbGluayIKK21zZ3N0ciAiJyVzJyDkvY3kuo7nrKblj7fpk77mjqXkuK0iCisKKyM6IHJlbW90ZS5jOjE3ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAiWW91ciBicmFuY2ggaXMgYWhlYWQgb2YgJyVzJyBieSAlZCBjb21taXQuXG4iCiBtc2dpZF9wbHVyYWwgIllvdXIgYnJhbmNoIGlzIGFoZWFkIG9mICclcycgYnkgJWQgY29tbWl0cy5cbiIKIG1zZ3N0clswXSAi5oKo55qE5YiG5pSv6aKG5YWIICclcycg5YWxICVkIOS4quaPkOS6pOOAglxuIgogbXNnc3RyWzFdICLmgqjnmoTliIbmlK/pooblhYggJyVzJyDlhbEgJWQg5Liq5o+Q5Lqk44CCXG4iCiAKLSM6IHJlbW90ZS5jOjE2MzUKKyM6IHJlbW90ZS5jOjE3ODcKK21zZ2lkICIgICh1c2UgXCJnaXQgcHVzaFwiIHRvIHB1Ymxpc2ggeW91ciBsb2NhbCBjb21taXRzKVxuIgorbXNnc3RyICIgIO+8iOS9v+eUqCBcImdpdCBwdXNoXCIg5p2l5Y+R5biD5oKo55qE5pys5Zyw5o+Q5Lqk77yJXG4iCisKKyM6IHJlbW90ZS5jOjE3OTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiWW91ciBicmFuY2ggaXMgYmVoaW5kICclcycgYnkgJWQgY29tbWl0LCBhbmQgY2FuIGJlIGZhc3QtZm9yd2FyZGVkLlxuIgogbXNnaWRfcGx1cmFsICIiCkBAIC0zODUsNyArODg4LDEyIEBACiBtc2dzdHJbMF0gIuaCqOeahOWIhuaUr+iQveWQjiAnJXMnIOWFsSAlZCDkuKrmj5DkuqTvvIzlubbkuJTlj6/ku6Xlv6vov5vjgIJcbiIKIG1zZ3N0clsxXSAi5oKo55qE5YiG5pSv6JC95ZCOICclcycg5YWxICVkIOS4quaPkOS6pO+8jOW5tuS4lOWPr+S7peW/q+i/m+OAglxuIgogCi0jOiByZW1vdGUuYzoxNjQzCisjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKKyM6IHJlbW90ZS5jOjE3OTgKK21zZ2lkICIgICh1c2UgXCJnaXQgcHVsbFwiIHRvIHVwZGF0ZSB5b3VyIGxvY2FsIGJyYW5jaClcbiIKK21zZ3N0ciAiICDvvIjkvb/nlKggXCJnaXQgcHVsbFwiIOadpeabtOaWsOaCqOeahOacrOWcsOWIhuaUr++8iVxuIgorCisjOiByZW1vdGUuYzoxODAxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJZb3VyIGJyYW5jaCBhbmQgJyVzJyBoYXZlIGRpdmVyZ2VkLFxuIgpAQCAtMzk1LDI0ICs5MDMsMjkgQEAKICJhbmQgaGF2ZSAlZCBhbmQgJWQgZGlmZmVyZW50IGNvbW1pdHMgZWFjaCwgcmVzcGVjdGl2ZWx5LlxuIgogbXNnc3RyWzBdICIiCiAi5oKo55qE5YiG5pSv5ZKMICclcycg5Ye6546w5LqG5YGP56a777yMXG4iCi0i5bm25LiU5ZCE6Ieq5YiG5Yir5pyJICVkIOWSjCAlZCDlpITkuI3lkIznmoTmj5DkuqTjgIJcbiIKKyLlubbkuJTliIbliKvmnIkgJWQg5ZKMICVkIOWkhOS4jeWQjOeahOaPkOS6pOOAglxuIgogbXNnc3RyWzFdICIiCiAi5oKo55qE5YiG5pSv5ZKMICclcycg5Ye6546w5LqG5YGP56a777yMXG4iCi0i5bm25LiU5ZCE6Ieq5YiG5Yir5pyJICVkIOWSjCAlZCDlpITkuI3lkIznmoTmj5DkuqTjgIJcbiIKKyLlubbkuJTliIbliKvmnIkgJWQg5ZKMICVkIOWkhOS4jeWQjOeahOaPkOS6pOOAglxuIgogCi0jOiBzZXF1ZW5jZXIuYzoxMjEgYnVpbHRpbi9tZXJnZS5jOjg2NSBidWlsdGluL21lcmdlLmM6OTc4Ci0jOiBidWlsdGluL21lcmdlLmM6MTA4OCBidWlsdGluL21lcmdlLmM6MTA5OAorIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8CisjOiByZW1vdGUuYzoxODExCittc2dpZCAiICAodXNlIFwiZ2l0IHB1bGxcIiB0byBtZXJnZSB0aGUgcmVtb3RlIGJyYW5jaCBpbnRvIHlvdXJzKVxuIgorbXNnc3RyICIgIO+8iOS9v+eUqCBcImdpdCBwdWxsXCIg5p2l5ZCI5bm26L+c56iL5YiG5pSv77yJXG4iCisKKyM6IHNlcXVlbmNlci5jOjIwNiBidWlsdGluL21lcmdlLmM6Nzc2IGJ1aWx0aW4vbWVyZ2UuYzo4ODkgYnVpbHRpbi9tZXJnZS5jOjk5OQorIzogYnVpbHRpbi9tZXJnZS5jOjEwMDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gJyVzJyBmb3Igd3JpdGluZyIKIG1zZ3N0ciAi5LiN6IO95Li65YaZ5YWl5omT5byAICclcyciCiAKLSM6IHNlcXVlbmNlci5jOjEyMyBidWlsdGluL21lcmdlLmM6MzMzIGJ1aWx0aW4vbWVyZ2UuYzo4NjgKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDkwIGJ1aWx0aW4vbWVyZ2UuYzoxMTAzCisjOiBzZXF1ZW5jZXIuYzoyMDggYnVpbHRpbi9tZXJnZS5jOjMzNSBidWlsdGluL21lcmdlLmM6Nzc5CisjOiBidWlsdGluL21lcmdlLmM6MTAwMSBidWlsdGluL21lcmdlLmM6MTAxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgdG8gJyVzJyIKIG1zZ3N0ciAi5LiN6IO95YaZ5YWlICclcyciCiAKLSM6IHNlcXVlbmNlci5jOjE0NAorIzogc2VxdWVuY2VyLmM6MjI5CiBtc2dpZCAiIgogImFmdGVyIHJlc29sdmluZyB0aGUgY29uZmxpY3RzLCBtYXJrIHRoZSBjb3JyZWN0ZWQgcGF0aHNcbiIKICJ3aXRoICdnaXQgYWRkIDxwYXRocz4nIG9yICdnaXQgcm0gPHBhdGhzPiciCkBAIC00MjAsNyArOTMzLDcgQEAKICLlhrLnqoHop6PlhrPlrozmr5XlkI7vvIznlKggJ2dpdCBhZGQgPHBhdGhzPicg5oiWICdnaXQgcm0gPHBhdGhzPidcbiIKICLlkb3ku6TmoIforrDkv67mraPlkI7nmoTmlofku7YiCiAKLSM6IHNlcXVlbmNlci5jOjE0NworIzogc2VxdWVuY2VyLmM6MjMyCiBtc2dpZCAiIgogImFmdGVyIHJlc29sdmluZyB0aGUgY29uZmxpY3RzLCBtYXJrIHRoZSBjb3JyZWN0ZWQgcGF0aHNcbiIKICJ3aXRoICdnaXQgYWRkIDxwYXRocz4nIG9yICdnaXQgcm0gPHBhdGhzPidcbiIKQEAgLTQyOSw2NjcgKzk0Miw5ODYgQEAKICLlhrLnqoHop6PlhrPlrozmr5XlkI7vvIznlKggJ2dpdCBhZGQgPHBhdGhzPicg5oiWICdnaXQgcm0gPHBhdGhzPidcbiIKICLlr7nkv67mraPlkI7nmoTmlofku7blgZrmoIforrDvvIznhLblkI7nlKggJ2dpdCBjb21taXQnIOaPkOS6pCIKIAotIzogc2VxdWVuY2VyLmM6MTYwIHNlcXVlbmNlci5jOjc1OCBzZXF1ZW5jZXIuYzo4NDEKKyM6IHNlcXVlbmNlci5jOjI0NSBzZXF1ZW5jZXIuYzo4NTkgc2VxdWVuY2VyLmM6OTQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSB0byAlcyIKIG1zZ3N0ciAi5LiN6IO95YaZ5YWlICVzIgogCi0jOiBzZXF1ZW5jZXIuYzoxNjMKKyM6IHNlcXVlbmNlci5jOjI0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvciB3cmFwcGluZyB1cCAlcyIKIG1zZ3N0ciAi6ZSZ6K+v5pS25bC+ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzoxNzgKKyM6IHNlcXVlbmNlci5jOjI2MwogbXNnaWQgIllvdXIgbG9jYWwgY2hhbmdlcyB3b3VsZCBiZSBvdmVyd3JpdHRlbiBieSBjaGVycnktcGljay4iCiBtc2dzdHIgIuaCqOeahOacrOWcsOS/ruaUueWwhuiiq+aLo+mAieaTjeS9nOimhuebluOAgiIKIAotIzogc2VxdWVuY2VyLmM6MTgwCisjOiBzZXF1ZW5jZXIuYzoyNjUKIG1zZ2lkICJZb3VyIGxvY2FsIGNoYW5nZXMgd291bGQgYmUgb3ZlcndyaXR0ZW4gYnkgcmV2ZXJ0LiIKIG1zZ3N0ciAi5oKo55qE5pys5Zyw5L+u5pS55bCG6KKr6L+Y5Y6f5pON5L2c6KaG55uW44CCIgogCi0jOiBzZXF1ZW5jZXIuYzoxODMKKyM6IHNlcXVlbmNlci5jOjI2OAogbXNnaWQgIkNvbW1pdCB5b3VyIGNoYW5nZXMgb3Igc3Rhc2ggdGhlbSB0byBwcm9jZWVkLiIKIG1zZ3N0ciAi5o+Q5Lqk5oKo55qE5L+u5pS55oiW5L+d5a2Y6L+b5bqm5ZCO5YaN57un57ut44CCIgogCiAjLiBUUkFOU0xBVE9SUzogJXMgd2lsbCBiZSAicmV2ZXJ0IiBvciAiY2hlcnJ5LXBpY2siCi0jOiBzZXF1ZW5jZXIuYzoyMzMKKyM6IHNlcXVlbmNlci5jOjMxOQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogVW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgogbXNnc3RyICIlc++8muaXoOazleWGmeWFpeaWsOe0ouW8leaWh+S7tiIKIAotIzogc2VxdWVuY2VyLmM6MjYxCisjOiBzZXF1ZW5jZXIuYzozNTAKIG1zZ2lkICJDb3VsZCBub3QgcmVzb2x2ZSBIRUFEIGNvbW1pdFxuIgogbXNnc3RyICLkuI3og73op6PmnpAgSEVBRCDmj5DkuqRcbiIKIAotIzogc2VxdWVuY2VyLmM6MjgyCisjOiBzZXF1ZW5jZXIuYzozNzEKIG1zZ2lkICJVbmFibGUgdG8gdXBkYXRlIGNhY2hlIHRyZWVcbiIKIG1zZ3N0ciAi5LiN6IO95pu05paw57yT5a2YXG4iCiAKLSM6IHNlcXVlbmNlci5jOjMyNAorIzogc2VxdWVuY2VyLmM6NDE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBjb21taXQgJXNcbiIKIG1zZ3N0ciAi5LiN6IO96Kej5p6Q5o+Q5LqkICVzXG4iCiAKLSM6IHNlcXVlbmNlci5jOjMyOQorIzogc2VxdWVuY2VyLmM6NDIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBwYXJlbnQgY29tbWl0ICVzXG4iCiBtc2dzdHIgIuS4jeiDveino+aekOeItuaPkOS6pCAlc1xuIgogCi0jOiBzZXF1ZW5jZXIuYzozOTUKKyM6IHNlcXVlbmNlci5jOjQ4NwogbXNnaWQgIllvdXIgaW5kZXggZmlsZSBpcyB1bm1lcmdlZC4iCiBtc2dzdHIgIuaCqOeahOe0ouW8leaWh+S7tuacquWujOaIkOWQiOW5tuOAgiIKIAotIzogc2VxdWVuY2VyLmM6Mzk4Ci1tc2dpZCAiWW91IGRvIG5vdCBoYXZlIGEgdmFsaWQgSEVBRCIKLW1zZ3N0ciAi5oKo5rKh5pyJ5LiA5Liq5pyJ5pWI55qEIEhFQUQiCi0KLSM6IHNlcXVlbmNlci5jOjQxMworIzogc2VxdWVuY2VyLmM6NTA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBpcyBhIG1lcmdlIGJ1dCBubyAtbSBvcHRpb24gd2FzIGdpdmVuLiIKIG1zZ3N0ciAi5o+Q5LqkICVzIOaYr+S4gOS4quWQiOW5tuaPkOS6pOS9huacquaPkOS+myAtbSDpgInpobnjgIIiCiAKLSM6IHNlcXVlbmNlci5jOjQyMQorIzogc2VxdWVuY2VyLmM6NTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBkb2VzIG5vdCBoYXZlIHBhcmVudCAlZCIKIG1zZ3N0ciAi5o+Q5LqkICVzIOayoeacieeItuaPkOS6pCAlZCIKIAotIzogc2VxdWVuY2VyLmM6NDI1CisjOiBzZXF1ZW5jZXIuYzo1MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFpbmxpbmUgd2FzIHNwZWNpZmllZCBidXQgY29tbWl0ICVzIGlzIG5vdCBhIG1lcmdlLiIKIG1zZ3N0ciAi5oyH5a6a5LqG5Li757q/5L2G5o+Q5LqkICVzIOS4jeaYr+S4gOS4quWQiOW5tuOAgiIKIAogIy4gVFJBTlNMQVRPUlM6IFRoZSBmaXJzdCAlcyB3aWxsIGJlICJyZXZlcnQiIG9yCiAjLiAiY2hlcnJ5LXBpY2siLCB0aGUgc2Vjb25kICVzIGEgU0hBMQotIzogc2VxdWVuY2VyLmM6NDM2CisjOiBzZXF1ZW5jZXIuYzo1MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbm5vdCBwYXJzZSBwYXJlbnQgY29tbWl0ICVzIgogbXNnc3RyICIlc++8muS4jeiDveino+aekOeItuaPkOS6pCAlcyIKIAotIzogc2VxdWVuY2VyLmM6NDQwCisjOiBzZXF1ZW5jZXIuYzo1MzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGdldCBjb21taXQgbWVzc2FnZSBmb3IgJXMiCiBtc2dzdHIgIuS4jeiDveW+l+WIsCAlcyDnmoTmj5DkuqTor7TmmI4iCiAKLSM6IHNlcXVlbmNlci5jOjUyNAorIzogc2VxdWVuY2VyLmM6NjIxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZXZlcnQgJXMuLi4gJXMiCiBtc2dzdHIgIuS4jeiDvei/mOWOnyAlcy4uLiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NTI1CisjOiBzZXF1ZW5jZXIuYzo2MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGFwcGx5ICVzLi4uICVzIgogbXNnc3RyICLkuI3og73lupTnlKggJXMuLi4gJXMiCiAKLSM6IHNlcXVlbmNlci5jOjU1MworIzogc2VxdWVuY2VyLmM6NjU0CiBtc2dpZCAiZW1wdHkgY29tbWl0IHNldCBwYXNzZWQiCiBtc2dzdHIgIuaPkOS+m+S6huepuueahOaPkOS6pOmbhiIKIAotIzogc2VxdWVuY2VyLmM6NTYxCisjOiBzZXF1ZW5jZXIuYzo2NjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0ICVzOiBmYWlsZWQgdG8gcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgImdpdCAlc++8muaXoOazleivu+WPlue0ouW8lSIKIAotIzogc2VxdWVuY2VyLmM6NTY2CisjOiBzZXF1ZW5jZXIuYzo2NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0ICVzOiBmYWlsZWQgdG8gcmVmcmVzaCB0aGUgaW5kZXgiCiBtc2dzdHIgImdpdCAlc++8muaXoOazleWIt+aWsOe0ouW8lSIKIAotIzogc2VxdWVuY2VyLmM6NjI0CisjOiBzZXF1ZW5jZXIuYzo3MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90ICVzIGR1cmluZyBhICVzIgogbXNnc3RyICLml6Dms5UgJXMg5Zyo5LiA5LiqICVzIOi/h+eoi+S4rSIKIAotIzogc2VxdWVuY2VyLmM6NjQ2CisjOiBzZXF1ZW5jZXIuYzo3NDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIGxpbmUgJWQuIgogbXNnc3RyICLkuI3og73op6PmnpDnrKwgJWQg6KGM44CCIgogCi0jOiBzZXF1ZW5jZXIuYzo2NTEKKyM6IHNlcXVlbmNlci5jOjc1MgogbXNnaWQgIk5vIGNvbW1pdHMgcGFyc2VkLiIKIG1zZ3N0ciAi5rKh5pyJ5o+Q5Lqk6KKr6Kej5p6Q44CCIgogCi0jOiBzZXF1ZW5jZXIuYzo2NjQKKyM6IHNlcXVlbmNlci5jOjc2NQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiAlcyIKIG1zZ3N0ciAi5LiN6IO95omT5byAICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo2NjgKKyM6IHNlcXVlbmNlci5jOjc2OQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCAlcy4iCiBtc2dzdHIgIuS4jeiDveivu+WPliAlc+OAgiIKIAotIzogc2VxdWVuY2VyLmM6Njc1CisjOiBzZXF1ZW5jZXIuYzo3NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW51c2FibGUgaW5zdHJ1Y3Rpb24gc2hlZXQ6ICVzIgogbXNnc3RyICLml6DnlKjnmoTmjIfku6TooajljZXvvJolcyIKIAotIzogc2VxdWVuY2VyLmM6NzAzCisjOiBzZXF1ZW5jZXIuYzo4MDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBrZXk6ICVzIgogbXNnc3RyICLml6DmlYjplK7lkI3vvJolcyIKIAotIzogc2VxdWVuY2VyLmM6NzA2CisjOiBzZXF1ZW5jZXIuYzo4MDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCB2YWx1ZSBmb3IgJXM6ICVzIgogbXNnc3RyICIlcyDnmoTlgLzml6DmlYjvvJolcyIKIAotIzogc2VxdWVuY2VyLmM6NzE4CisjOiBzZXF1ZW5jZXIuYzo4MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFsZm9ybWVkIG9wdGlvbnMgc2hlZXQ6ICVzIgogbXNnc3RyICLpnZ7ms5XnmoTpgInpobnooajljZXvvJolcyIKIAotIzogc2VxdWVuY2VyLmM6NzM5CisjOiBzZXF1ZW5jZXIuYzo4NDAKIG1zZ2lkICJhIGNoZXJyeS1waWNrIG9yIHJldmVydCBpcyBhbHJlYWR5IGluIHByb2dyZXNzIgogbXNnc3RyICLkuIDkuKrmi6PpgInmiJbov5jljp/mk43kvZzlt7LlnKjov5vooYwiCiAKLSM6IHNlcXVlbmNlci5jOjc0MAorIzogc2VxdWVuY2VyLmM6ODQxCiBtc2dpZCAidHJ5IFwiZ2l0IGNoZXJyeS1waWNrICgtLWNvbnRpbnVlIHwgLS1xdWl0IHwgLS1hYm9ydClcIiIKIG1zZ3N0ciAi5bCd6K+VIFwiZ2l0IGNoZXJyeS1waWNrICgtLWNvbnRpbnVlIHwgLS1xdWl0IHwgLS1hYm9ydClcIiIKIAotIzogc2VxdWVuY2VyLmM6NzQ0CisjOiBzZXF1ZW5jZXIuYzo4NDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBzZXF1ZW5jZXIgZGlyZWN0b3J5ICVzIgogbXNnc3RyICLkuI3og73liJvlu7rluo/liJfnm67lvZUgJXMiCiAKLSM6IHNlcXVlbmNlci5jOjc2MCBzZXF1ZW5jZXIuYzo4NDUKKyM6IHNlcXVlbmNlci5jOjg2MSBzZXF1ZW5jZXIuYzo5NDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3Igd3JhcHBpbmcgdXAgJXMuIgogbXNnc3RyICLplJnor6/mlLblsL4gJXPjgIIiCiAKLSM6IHNlcXVlbmNlci5jOjc3OSBzZXF1ZW5jZXIuYzo5MTMKKyM6IHNlcXVlbmNlci5jOjg4MCBzZXF1ZW5jZXIuYzoxMDE0CiBtc2dpZCAibm8gY2hlcnJ5LXBpY2sgb3IgcmV2ZXJ0IGluIHByb2dyZXNzIgotbXNnc3RyICLmsqHmnInmi6PpgInmiJbov5jljp/mk43kvZzlnKjov5vooYwiCittc2dzdHIgIuaLo+mAieaIlui/mOWOn+aTjeS9nOW5tuacqui/m+ihjCIKIAotIzogc2VxdWVuY2VyLmM6NzgxCisjOiBzZXF1ZW5jZXIuYzo4ODIKIG1zZ2lkICJjYW5ub3QgcmVzb2x2ZSBIRUFEIgogbXNnc3RyICLkuI3og73op6PmnpAgSEVBRCIKIAotIzogc2VxdWVuY2VyLmM6NzgzCisjOiBzZXF1ZW5jZXIuYzo4ODQKIG1zZ2lkICJjYW5ub3QgYWJvcnQgZnJvbSBhIGJyYW5jaCB5ZXQgdG8gYmUgYm9ybiIKIG1zZ3N0ciAi5LiN6IO95LuO5bCa5pyq5bu656uL55qE5YiG5pSv57uI5q2iIgogCi0jOiBzZXF1ZW5jZXIuYzo4MDUgYnVpbHRpbi9hcHBseS5jOjM2OTcKKyM6IHNlcXVlbmNlci5jOjkwNiBidWlsdGluL2FwcGx5LmM6NDA2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiAlczogJXMiCiBtc2dzdHIgIuS4jeiDveaJk+W8gCAlc++8miVzIgogCi0jOiBzZXF1ZW5jZXIuYzo4MDgKKyM6IHNlcXVlbmNlci5jOjkwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCAlczogJXMiCiBtc2dzdHIgIuS4jeiDveivu+WPliAlc++8miVzIgogCi0jOiBzZXF1ZW5jZXIuYzo4MDkKKyM6IHNlcXVlbmNlci5jOjkxMAogbXNnaWQgInVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiCi1tc2dzdHIgIuacqumihOacn+eahOaWh+S7tue7k+adnyIKK21zZ3N0ciAi5oSP5aSW55qE5paH5Lu257uT5p2fIgogCi0jOiBzZXF1ZW5jZXIuYzo4MTUKKyM6IHNlcXVlbmNlci5jOjkxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJzdG9yZWQgcHJlLWNoZXJyeS1waWNrIEhFQUQgZmlsZSAnJXMnIGlzIGNvcnJ1cHQiCiBtc2dzdHIgIuS/neWtmOaLo+mAieaPkOS6pOWJjeeahCBIRUFEIOaWh+S7tiAnJXMnIOaNn+WdjyIKIAotIzogc2VxdWVuY2VyLmM6ODM4CisjOiBzZXF1ZW5jZXIuYzo5MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZvcm1hdCAlcy4iCiBtc2dzdHIgIuS4jeiDveagvOW8j+WMliAlc+OAgiIKIAotIzogc2VxdWVuY2VyLmM6MTAwMAorIzogc2VxdWVuY2VyLmM6MTA4MworIywgYy1mb3JtYXQKK21zZ2lkICIlczogY2FuJ3QgY2hlcnJ5LXBpY2sgYSAlcyIKK21zZ3N0ciAiJXPvvJrkuI3og73mi6PpgInkuIDkuKolcyIKKworIzogc2VxdWVuY2VyLmM6MTA4NQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogYmFkIHJldmlzaW9uIgorbXNnc3RyICIlc++8mumUmeivr+eahOeJiOacrCIKKworIzogc2VxdWVuY2VyLmM6MTExOQogbXNnaWQgIkNhbid0IHJldmVydCBhcyBpbml0aWFsIGNvbW1pdCIKIG1zZ3N0ciAi5LiN6IO95L2c5Li65Yid5aeL5o+Q5Lqk6L+Y5Y6fIgogCi0jOiBzZXF1ZW5jZXIuYzoxMDAxCisjOiBzZXF1ZW5jZXIuYzoxMTIwCiBtc2dpZCAiQ2FuJ3QgY2hlcnJ5LXBpY2sgaW50byBlbXB0eSBoZWFkIgogbXNnc3RyICLkuI3og73mi6PpgInliLDnqbrliIbmlK8iCiAKLSM6IHNoYTFfbmFtZS5jOjg2NAorIzogc2hhMV9uYW1lLmM6MTAzNgogbXNnaWQgIkhFQUQgZG9lcyBub3QgcG9pbnQgdG8gYSBicmFuY2giCiBtc2dzdHIgIkhFQUQg5rKh5pyJ5oyH5ZCR5LiA5Liq5YiG5pSvIgogCi0jOiBzaGExX25hbWUuYzo4NjcKKyM6IHNoYTFfbmFtZS5jOjEwMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gc3VjaCBicmFuY2g6ICclcyciCiBtc2dzdHIgIuayoeacieatpOWIhuaUr++8miclcyciCiAKLSM6IHNoYTFfbmFtZS5jOjg2OQorIzogc2hhMV9uYW1lLmM6MTA0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyB1cHN0cmVhbSBjb25maWd1cmVkIGZvciBicmFuY2ggJyVzJyIKIG1zZ3N0ciAi5bCa5pyq57uZ5YiG5pSvICclcycg6K6+572u5LiK5ri4IgogCi0jOiBzaGExX25hbWUuYzo4NzIKKyM6IHNoYTFfbmFtZS5jOjEwNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXBzdHJlYW0gYnJhbmNoICclcycgbm90IHN0b3JlZCBhcyBhIHJlbW90ZS10cmFja2luZyBicmFuY2giCiBtc2dzdHIgIuS4iua4uOWIhuaUryAnJXMnIOayoeacieWtmOWCqOS4uuS4gOS4qui/nOeoi+i3n+i4quWIhuaUryIKIAotIzogd3JhcHBlci5jOjQxMworIzogd3JhcHBlci5jOjQwOAorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gYWNjZXNzICclcyc6ICVzIgorbXNnc3RyICLkuI3og73orr/pl64gJyVzJ++8miVzIgorCisjOiB3cmFwcGVyLmM6NDIzCisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBhY2Nlc3MgJyVzJyIKK21zZ3N0ciAi5LiN6IO96K6/6ZeuICclcyciCisKKyM6IHdyYXBwZXIuYzo0MzQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGxvb2sgdXAgY3VycmVudCB1c2VyIGluIHRoZSBwYXNzd2QgZmlsZTogJXMiCi1tc2dzdHIgIuaXoOazleWcqCBwYXNzd2Qg5paH5Lu25Lit5p+l6K+i5Yiw5b2T5YmN55So5oi377yaJXMiCittc2dzdHIgIuaXoOazleWcqOWPo+S7pOaWh+S7tuS4reafpeivouWIsOW9k+WJjeeUqOaIt++8miVzIgogCi0jOiB3cmFwcGVyLmM6NDE0CisjOiB3cmFwcGVyLmM6NDM1CiBtc2dpZCAibm8gc3VjaCB1c2VyIgogbXNnc3RyICLml6DmraTnlKjmiLciCiAKLSM6IHd0LXN0YXR1cy5jOjEzNQorIzogd3Qtc3RhdHVzLmM6MTQwCiBtc2dpZCAiVW5tZXJnZWQgcGF0aHM6IgogbXNnc3RyICLmnKrlkIjlubbnmoTot6/lvoTvvJoiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6MTQxIHd0LXN0YXR1cy5jOjE1OAorIzogd3Qtc3RhdHVzLmM6MTY3IHd0LXN0YXR1cy5jOjE5NAogIywgYy1mb3JtYXQKIG1zZ2lkICIgICh1c2UgXCJnaXQgcmVzZXQgJXMgPGZpbGU+Li4uXCIgdG8gdW5zdGFnZSkiCiBtc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IHJlc2V0ICVzIDxmaWxlPi4uLlwiIOaSpOWHuuaaguWtmOWMuu+8iSIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzoxNDMgd3Qtc3RhdHVzLmM6MTYwCisjOiB3dC1zdGF0dXMuYzoxNjkgd3Qtc3RhdHVzLmM6MTk2CiBtc2dpZCAiICAodXNlIFwiZ2l0IHJtIC0tY2FjaGVkIDxmaWxlPi4uLlwiIHRvIHVuc3RhZ2UpIgogbXNnc3RyICIgIO+8iOS9v+eUqCBcImdpdCBybSAtLWNhY2hlZCA8ZmlsZT4uLi5cIiDmkqTlh7rmmoLlrZjljLrvvIkiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6MTQ0CisjOiB3dC1zdGF0dXMuYzoxNzMKK21zZ2lkICIgICh1c2UgXCJnaXQgYWRkIDxmaWxlPi4uLlwiIHRvIG1hcmsgcmVzb2x1dGlvbikiCittc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IGFkZCA8ZmlsZT4uLi5cIiDmoIforrDop6PlhrPmlrnmoYjvvIkiCisKKyMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAorIzogd3Qtc3RhdHVzLmM6MTc1IHd0LXN0YXR1cy5jOjE3OQogbXNnaWQgIiAgKHVzZSBcImdpdCBhZGQvcm0gPGZpbGU+Li4uXCIgYXMgYXBwcm9wcmlhdGUgdG8gbWFyayByZXNvbHV0aW9uKSIKIG1zZ3N0ciAiICDvvIjphYzmg4Xkvb/nlKggXCJnaXQgYWRkL3JtIDxmaWxlPi4uLlwiIOagh+iusOino+WGs+aWueahiO+8iSIKIAotIzogd3Qtc3RhdHVzLmM6MTUyCisjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKKyM6IHd0LXN0YXR1cy5jOjE3NworbXNnaWQgIiAgKHVzZSBcImdpdCBybSA8ZmlsZT4uLi5cIiB0byBtYXJrIHJlc29sdXRpb24pIgorbXNnc3RyICIgIO+8iOS9v+eUqCBcImdpdCBybSA8ZmlsZT4uLi5cIiDmoIforrDop6PlhrPmlrnmoYjvvIkiCisKKyM6IHd0LXN0YXR1cy5jOjE4OAogbXNnaWQgIkNoYW5nZXMgdG8gYmUgY29tbWl0dGVkOiIKIG1zZ3N0ciAi6KaB5o+Q5Lqk55qE5Y+Y5pu077yaIgogCi0jOiB3dC1zdGF0dXMuYzoxNzAKKyM6IHd0LXN0YXR1cy5jOjIwNgogbXNnaWQgIkNoYW5nZXMgbm90IHN0YWdlZCBmb3IgY29tbWl0OiIKIG1zZ3N0ciAi5bCa5pyq5pqC5a2Y5Lul5aSH5o+Q5Lqk55qE5Y+Y5pu077yaIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjE3NAorIzogd3Qtc3RhdHVzLmM6MjEwCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFkZCA8ZmlsZT4uLi5cIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiCiBtc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IGFkZCA8ZmlsZT4uLi5cIiDmm7TmlrDopoHmj5DkuqTnmoTlhoXlrrnvvIkiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6MTc2CisjOiB3dC1zdGF0dXMuYzoyMTIKIG1zZ2lkICIgICh1c2UgXCJnaXQgYWRkL3JtIDxmaWxlPi4uLlwiIHRvIHVwZGF0ZSB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKSIKIG1zZ3N0ciAiICDvvIjkvb/nlKggXCJnaXQgYWRkL3JtIDxmaWxlPi4uLlwiIOabtOaWsOimgeaPkOS6pOeahOWGheWuue+8iSIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzoxNzcKKyM6IHd0LXN0YXR1cy5jOjIxMwogbXNnaWQgIiIKICIgICh1c2UgXCJnaXQgY2hlY2tvdXQgLS0gPGZpbGU+Li4uXCIgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHdvcmtpbmcgZGlyZWN0b3J5KSIKIG1zZ3N0ciAiICDvvIjkvb/nlKggXCJnaXQgY2hlY2tvdXQgLS0gPGZpbGU+Li4uXCIg5Lii5byD5bel5L2c5Yy655qE5pS55Yqo77yJIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjE3OQorIzogd3Qtc3RhdHVzLmM6MjE1CiBtc2dpZCAiICAoY29tbWl0IG9yIGRpc2NhcmQgdGhlIHVudHJhY2tlZCBvciBtb2RpZmllZCBjb250ZW50IGluIHN1Ym1vZHVsZXMpIgogbXNnc3RyICIgIO+8iOaPkOS6pOaIluS4ouW8g+WtkOaooee7hOS4reacqui3n+i4quaIluS/ruaUueeahOWGheWuue+8iSIKIAotIzogd3Qtc3RhdHVzLmM6MTg4Ci0jLCBjLWZvcm1hdAotbXNnaWQgIiVzIGZpbGVzOiIKLW1zZ3N0ciAiJXPmlofku7bvvJoiCi0KICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6MTkxCisjOiB3dC1zdGF0dXMuYzoyMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAodXNlIFwiZ2l0ICVzIDxmaWxlPi4uLlwiIHRvIGluY2x1ZGUgaW4gd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiCiBtc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0ICVzIDxmaWxlPi4uLlwiIOS7peWMheWQq+imgeaPkOS6pOeahOWGheWuue+8iSIKIAotIzogd3Qtc3RhdHVzLmM6MjA4CisjOiB3dC1zdGF0dXMuYzoyNDQKIG1zZ2lkICJidWciCiBtc2dzdHIgImJ1ZyIKIAotIzogd3Qtc3RhdHVzLmM6MjEzCisjOiB3dC1zdGF0dXMuYzoyNDkKIG1zZ2lkICJib3RoIGRlbGV0ZWQ6IgogbXNnc3RyICLlj4zmlrnliKDpmaTvvJoiCiAKLSM6IHd0LXN0YXR1cy5jOjIxNAorIzogd3Qtc3RhdHVzLmM6MjUwCiBtc2dpZCAiYWRkZWQgYnkgdXM6IgogbXNnc3RyICLnlLHmiJHku6zmt7vliqDvvJoiCiAKLSM6IHd0LXN0YXR1cy5jOjIxNQorIzogd3Qtc3RhdHVzLmM6MjUxCiBtc2dpZCAiZGVsZXRlZCBieSB0aGVtOiIKIG1zZ3N0ciAi55Sx5LuW5Lus5Yig6Zmk77yaIgogCi0jOiB3dC1zdGF0dXMuYzoyMTYKKyM6IHd0LXN0YXR1cy5jOjI1MgogbXNnaWQgImFkZGVkIGJ5IHRoZW06IgogbXNnc3RyICLnlLHku5bku6zmt7vliqDvvJoiCiAKLSM6IHd0LXN0YXR1cy5jOjIxNworIzogd3Qtc3RhdHVzLmM6MjUzCiBtc2dpZCAiZGVsZXRlZCBieSB1czoiCiBtc2dzdHIgIueUseaIkeS7rOWIoOmZpO+8miIKIAotIzogd3Qtc3RhdHVzLmM6MjE4CisjOiB3dC1zdGF0dXMuYzoyNTQKIG1zZ2lkICJib3RoIGFkZGVkOiIKIG1zZ3N0ciAi5Y+M5pa55re75Yqg77yaIgogCi0jOiB3dC1zdGF0dXMuYzoyMTkKKyM6IHd0LXN0YXR1cy5jOjI1NQogbXNnaWQgImJvdGggbW9kaWZpZWQ6IgogbXNnc3RyICLlj4zmlrnkv67mlLnvvJoiCiAKICMgIOivkeiAhe+8muacq+WwvuS4pOS4quWtl+iKguWPr+iDveiiq+WIoOWHj++8jOWmguaenOe/u+ivkeS4uuS4reaWh+agh+eCueS8muWHuueOsOWNiuS4quaxieWtlwotIzogd3Qtc3RhdHVzLmM6MjQ5CisjOiB3dC1zdGF0dXMuYzoyODUKIG1zZ2lkICJuZXcgY29tbWl0cywgIgogbXNnc3RyICLmlrDmj5DkuqQsICIKIAogIyAg6K+R6ICF77ya5pyr5bC+5Lik5Liq5a2X6IqC5Y+v6IO96KKr5Yig5YeP77yM5aaC5p6c57+76K+R5Li65Lit5paH5qCH54K55Lya5Ye6546w5Y2K5Liq5rGJ5a2XCi0jOiB3dC1zdGF0dXMuYzoyNTEKKyM6IHd0LXN0YXR1cy5jOjI4NwogbXNnaWQgIm1vZGlmaWVkIGNvbnRlbnQsICIKIG1zZ3N0ciAi5L+u5pS555qE5YaF5a65LCAiCiAKICMgIOivkeiAhe+8muacq+WwvuS4pOS4quWtl+iKguWPr+iDveiiq+WIoOWHj++8jOWmguaenOe/u+ivkeS4uuS4reaWh+agh+eCueS8muWHuueOsOWNiuS4quaxieWtlwotIzogd3Qtc3RhdHVzLmM6MjUzCisjOiB3dC1zdGF0dXMuYzoyODkKIG1zZ2lkICJ1bnRyYWNrZWQgY29udGVudCwgIgogbXNnc3RyICLmnKrot5/ouKrnmoTlhoXlrrksICIKIAogIyAg6K+R6ICF77ya5Li65L+d6K+B5Zyo6L6T5Ye65Lit5a+56b2Q77yM5rOo5oSP6LCD5pW05Y+l5Lit56m65qC877yBCi0jOiB3dC1zdGF0dXMuYzoyNjcKKyM6IHd0LXN0YXR1cy5jOjMwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgZmlsZTogICAlcyIKIG1zZ3N0ciAi5paw5paH5Lu277yaICAgICVzIgogCiAjICDor5HogIXvvJrkuLrkv53or4HlnKjovpPlh7rkuK3lr7npvZDvvIzms6jmhI/osIPmlbTlj6XkuK3nqbrmoLzvvIEKLSM6IHd0LXN0YXR1cy5jOjI3MAorIzogd3Qtc3RhdHVzLmM6MzA5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvcGllZDogICAgICVzIC0+ICVzIgogbXNnc3RyICLmi7fotJ3vvJogICAgICAlcyAtPiAlcyIKIAogIyAg6K+R6ICF77ya5Li65L+d6K+B5Zyo6L6T5Ye65Lit5a+56b2Q77yM5rOo5oSP6LCD5pW05Y+l5Lit56m65qC877yBCi0jOiB3dC1zdGF0dXMuYzoyNzMKKyM6IHd0LXN0YXR1cy5jOjMxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJkZWxldGVkOiAgICAlcyIKIG1zZ3N0ciAi5Yig6Zmk77yaICAgICAgJXMiCiAKICMgIOivkeiAhe+8muS4uuS/neivgeWcqOi+k+WHuuS4reWvuem9kO+8jOazqOaEj+iwg+aVtOWPpeS4reepuuagvO+8gQotIzogd3Qtc3RhdHVzLmM6Mjc2CisjOiB3dC1zdGF0dXMuYzozMTUKICMsIGMtZm9ybWF0CiBtc2dpZCAibW9kaWZpZWQ6ICAgJXMiCiBtc2dzdHIgIuS/ruaUue+8miAgICAgICVzIgogCiAjICDor5HogIXvvJrkuLrkv53or4HlnKjovpPlh7rkuK3lr7npvZDvvIzms6jmhI/osIPmlbTlj6XkuK3nqbrmoLzvvIEKLSM6IHd0LXN0YXR1cy5jOjI3OQorIzogd3Qtc3RhdHVzLmM6MzE4CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlbmFtZWQ6ICAgICVzIC0+ICVzIgogbXNnc3RyICLph43lkb3lkI3vvJogICAgJXMgLT4gJXMiCiAKICMgIOivkeiAhe+8muS4uuS/neivgeWcqOi+k+WHuuS4reWvuem9kO+8jOazqOaEj+iwg+aVtOWPpeS4reepuuagvO+8gQotIzogd3Qtc3RhdHVzLmM6MjgyCisjOiB3dC1zdGF0dXMuYzozMjEKICMsIGMtZm9ybWF0CiBtc2dpZCAidHlwZWNoYW5nZTogJXMiCiBtc2dzdHIgIuexu+Wei+WPmOabtO+8miAgJXMiCiAKICMgIOivkeiAhe+8muS4uuS/neivgeWcqOi+k+WHuuS4reWvuem9kO+8jOazqOaEj+iwg+aVtOWPpeS4reepuuagvO+8gQotIzogd3Qtc3RhdHVzLmM6Mjg1CisjOiB3dC1zdGF0dXMuYzozMjQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93bjogICAgJXMiCiBtc2dzdHIgIuacquefpe+8miAgICAgICVzIgogCiAjICDor5HogIXvvJrkuLrkv53or4HlnKjovpPlh7rkuK3lr7npvZDvvIzms6jmhI/osIPmlbTlj6XkuK3nqbrmoLzvvIEKLSM6IHd0LXN0YXR1cy5jOjI4OAorIzogd3Qtc3RhdHVzLmM6MzI3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVubWVyZ2VkOiAgICVzIgogbXNnc3RyICLmnKrlkIjlubbvvJogICAgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjI5MQorIzogd3Qtc3RhdHVzLmM6MzMwCiAjLCBjLWZvcm1hdAogbXNnaWQgImJ1ZzogdW5oYW5kbGVkIGRpZmYgc3RhdHVzICVjIgogbXNnc3RyICJidWfvvJrmnKrlpITnkIbnmoTlt67lvILnirbmgIEgJWMiCiAKLSM6IHd0LXN0YXR1cy5jOjczNworIzogd3Qtc3RhdHVzLmM6ODAzCittc2dpZCAiWW91IGhhdmUgdW5tZXJnZWQgcGF0aHMuIgorbXNnc3RyICLmgqjmnInlsJrmnKrlkIjlubbnmoTot6/lvoTjgIIiCisKKyMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAorIzogd3Qtc3RhdHVzLmM6ODA2IHd0LXN0YXR1cy5jOjk1OAorbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCBjb21taXRcIikiCittc2dzdHIgIiAg77yI6Kej5Yaz5Yay56qB5bm26L+Q6KGMIFwiZ2l0IGNvbW1pdFwi77yJIgorCisjOiB3dC1zdGF0dXMuYzo4MDkKK21zZ2lkICJBbGwgY29uZmxpY3RzIGZpeGVkIGJ1dCB5b3UgYXJlIHN0aWxsIG1lcmdpbmcuIgorbXNnc3RyICLmiYDmnInlhrLnqoHlt7Lop6PlhrPkvYbmgqjku43lpITkuo7lkIjlubbkuK3jgIIiCisKKyMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAorIzogd3Qtc3RhdHVzLmM6ODEyCittc2dpZCAiICAodXNlIFwiZ2l0IGNvbW1pdFwiIHRvIGNvbmNsdWRlIG1lcmdlKSIKK21zZ3N0ciAiICDvvIjkvb/nlKggXCJnaXQgY29tbWl0XCIg57uT5p2f5ZCI5bm277yJIgorCisjOiB3dC1zdGF0dXMuYzo4MjIKK21zZ2lkICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYW4gYW0gc2Vzc2lvbi4iCittc2dzdHIgIuaCqOato+WkhOS6juS4gOS4qiBhbSDov4fnqIvkuK3jgIIiCisKKyM6IHd0LXN0YXR1cy5jOjgyNQorbXNnaWQgIlRoZSBjdXJyZW50IHBhdGNoIGlzIGVtcHR5LiIKK21zZ3N0ciAi5b2T5YmN55qE6KGl5LiB5Li656m644CCIgorCisjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKKyM6IHd0LXN0YXR1cy5jOjgyOQorbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuIFwiZ2l0IGFtIC0tcmVzb2x2ZWRcIikiCittc2dzdHIgIiAg77yI6Kej5Yaz5Yay56qB77yM54S25ZCO6L+Q6KGMIFwiZ2l0IGFtIC0tcmVzb2x2ZWRcIu+8iSIKKworIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8CisjOiB3dC1zdGF0dXMuYzo4MzEKK21zZ2lkICIgICh1c2UgXCJnaXQgYW0gLS1za2lwXCIgdG8gc2tpcCB0aGlzIHBhdGNoKSIKK21zZ3N0ciAiICDvvIjkvb/nlKggXCJnaXQgYW0gLS1za2lwXCIg6Lez6L+H5q2k6KGl5LiB77yJIgorCisjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKKyM6IHd0LXN0YXR1cy5jOjgzMworbXNnaWQgIiAgKHVzZSBcImdpdCBhbSAtLWFib3J0XCIgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoKSIKK21zZ3N0ciAiICDvvIjkvb/nlKggXCJnaXQgYW0gLS1hYm9ydFwiIOaBouWkjeWOn+acieWIhuaUr++8iSIKKworIzogd3Qtc3RhdHVzLmM6ODkzIHd0LXN0YXR1cy5jOjkxMAorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZyBicmFuY2ggJyVzJyBvbiAnJXMnLiIKK21zZ3N0ciAi5oKo5q2j5Zyo5bCG5YiG5pSvICclcycg5Y+Y5Z+65YiwICclcyfjgIIiCisKKyM6IHd0LXN0YXR1cy5jOjg5OCB3dC1zdGF0dXMuYzo5MTUKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZy4iCittc2dzdHIgIuaCqOato+WcqOWPmOWfuuOAgiIKKworIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8CisjOiB3dC1zdGF0dXMuYzo5MDEKK21zZ2lkICIgIChmaXggY29uZmxpY3RzIGFuZCB0aGVuIHJ1biBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiKSIKK21zZ3N0ciAiICDvvIjop6PlhrPlhrLnqoHvvIznhLblkI7ov5DooYwgXCJnaXQgcmViYXNlIC0tY29udGludWVcIu+8iSIKKworIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8CisjOiB3dC1zdGF0dXMuYzo5MDMKK21zZ2lkICIgICh1c2UgXCJnaXQgcmViYXNlIC0tc2tpcFwiIHRvIHNraXAgdGhpcyBwYXRjaCkiCittc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IHJlYmFzZSAtLXNraXBcIiDot7Pov4fmraTooaXkuIHvvIkiCisKKyMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAorIzogd3Qtc3RhdHVzLmM6OTA1Cittc2dpZCAiICAodXNlIFwiZ2l0IHJlYmFzZSAtLWFib3J0XCIgdG8gY2hlY2sgb3V0IHRoZSBvcmlnaW5hbCBicmFuY2gpIgorbXNnc3RyICIgIO+8iOS9v+eUqCBcImdpdCByZWJhc2UgLS1hYm9ydFwiIOS7peajgOWHuuWOn+acieWIhuaUr++8iSIKKworIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8CisjOiB3dC1zdGF0dXMuYzo5MTgKK21zZ2lkICIgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIikiCittc2dzdHIgIiAg77yI5omA5pyJ5Yay56qB5bey6Kej5Yaz77ya6L+Q6KGMIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCLvvIkiCisKKyM6IHd0LXN0YXR1cy5jOjkyMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiWW91IGFyZSBjdXJyZW50bHkgc3BsaXR0aW5nIGEgY29tbWl0IHdoaWxlIHJlYmFzaW5nIGJyYW5jaCAnJXMnIG9uICclcycuIgorbXNnc3RyICLmgqjmraPlnKjlsIbliIbmlK8gJyVzJyDlj5jln7rliLAgJyVzJyDov4fnqIvkuK3mi4bliIbkuIDkuKrmj5DkuqTjgIIiCisKKyM6IHd0LXN0YXR1cy5jOjkyNworbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IHNwbGl0dGluZyBhIGNvbW1pdCBkdXJpbmcgYSByZWJhc2UuIgorbXNnc3RyICLmgqjmraPlnKjlj5jln7rov4fnqIvkuK3mi4bliIbkuIDkuKrmj5DkuqTjgIIiCisKKyMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAorIzogd3Qtc3RhdHVzLmM6OTMwCittc2dpZCAiICAoT25jZSB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IGlzIGNsZWFuLCBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIikiCittc2dzdHIgIiAg77yI5LiA5pem5oKo5bel5L2c55uu5b2V5o+Q5Lqk5bmy5YeA5ZCO77yM6L+Q6KGMIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCLvvIkiCisKKyM6IHd0LXN0YXR1cy5jOjkzNAorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIGEgY29tbWl0IHdoaWxlIHJlYmFzaW5nIGJyYW5jaCAnJXMnIG9uICclcycuIgorbXNnc3RyICLmgqjmraPlnKjlsIbliIbmlK8gJyVzJyDlj5jln7rliLAgJyVzJyDov4fnqIvkuK3nvJbovpHkuIDkuKrmj5DkuqTjgIIiCisKKyM6IHd0LXN0YXR1cy5jOjkzOQorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLiIKK21zZ3N0ciAi5oKo5q2j5Zyo5Y+Y5Z+66L+H56iL5Lit57yW6L6R5LiA5Liq5o+Q5Lqk44CCIgorCisjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKKyM6IHd0LXN0YXR1cy5jOjk0MgorbXNnaWQgIiAgKHVzZSBcImdpdCBjb21taXQgLS1hbWVuZFwiIHRvIGFtZW5kIHRoZSBjdXJyZW50IGNvbW1pdCkiCittc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IGNvbW1pdCAtLWFtZW5kXCIg5L+u6KGl5b2T5YmN5o+Q5Lqk77yJIgorCisjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKKyM6IHd0LXN0YXR1cy5jOjk0NAorbXNnaWQgIiIKKyIgICh1c2UgXCJnaXQgcmViYXNlIC0tY29udGludWVcIiBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzKSIKK21zZ3N0ciAiICDvvIjlvZPmgqjlr7nmgqjnmoTkv67mlLnmu6HmhI/lkI7miafooYwgXCJnaXQgcmViYXNlIC0tY29udGludWVcIu+8iSIKKworIzogd3Qtc3RhdHVzLmM6OTU0Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgY2hlcnJ5LXBpY2tpbmcuIgorbXNnc3RyICLmgqjmraPlnKjlgZrmi6PpgInmk43kvZzjgIIiCisKKyMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAorIzogd3Qtc3RhdHVzLmM6OTYxCittc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IGNvbW1pdFwiKSIKK21zZ3N0ciAiICDvvIjop6PlhrPmiYDmnInlhrLnqoHlkI7vvIzmiafooYwgXCJnaXQgY29tbWl0XCLvvIkiCisKKyM6IHd0LXN0YXR1cy5jOjk3MAorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSByZXZlcnRpbmcgY29tbWl0ICVzLiIKK21zZ3N0ciAi5oKo5q2j5Zyo5Y+N6L2s5o+Q5LqkICVzIOOAgiIKKworIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8CisjOiB3dC1zdGF0dXMuYzo5NzUKK21zZ2lkICIgIChmaXggY29uZmxpY3RzIGFuZCBydW4gXCJnaXQgcmV2ZXJ0IC0tY29udGludWVcIikiCittc2dzdHIgIiAg77yI6Kej5Yaz5Yay56qB5bm26L+Q6KGMIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCLvvIkiCisKKyMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAorIzogd3Qtc3RhdHVzLmM6OTc4Cittc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCIpIgorbXNnc3RyICIgIO+8iOaJgOacieWGsueqgeW3suino+WGs++8mui/kOihjCBcImdpdCByZXZlcnQgLS1jb250aW51ZVwi77yJIgorCisjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKKyM6IHd0LXN0YXR1cy5jOjk4MAorbXNnaWQgIiAgKHVzZSBcImdpdCByZXZlcnQgLS1hYm9ydFwiIHRvIGNhbmNlbCB0aGUgcmV2ZXJ0IG9wZXJhdGlvbikiCittc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IHJldmVydCAtLWFib3J0XCIg5Lul5Y+W5raI5Y+N6L2s5o+Q5Lqk5pON5L2c77yJIgorCisjOiB3dC1zdGF0dXMuYzo5OTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLCBzdGFydGVkIGZyb20gYnJhbmNoICclcycuIgorbXNnc3RyICLmgqjmraPlnKjku47liIbmlK8gJyVzJyDlvIDlp4vlgZrkuozliIbmn6Xmib7jgIIiCisKKyM6IHd0LXN0YXR1cy5jOjk5NQorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGJpc2VjdGluZy4iCittc2dzdHIgIuaCqOato+WcqOWBmuS6jOWIhuafpeaJvuOAgiIKKworIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8CisjOiB3dC1zdGF0dXMuYzo5OTgKK21zZ2lkICIgICh1c2UgXCJnaXQgYmlzZWN0IHJlc2V0XCIgdG8gZ2V0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIGJyYW5jaCkiCittc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IGJpc2VjdCByZXNldFwiIOS7peWbnuWIsOWOn+acieWIhuaUr++8iSIKKworIzogd3Qtc3RhdHVzLmM6MTE3MwogbXNnaWQgIk9uIGJyYW5jaCAiCiBtc2dzdHIgIuS9jeS6juWIhuaUryAiCiAKLSM6IHd0LXN0YXR1cy5jOjc0NAorIzogd3Qtc3RhdHVzLmM6MTE4NAorbXNnaWQgIkhFQUQgZGV0YWNoZWQgYXQgIgorbXNnc3RyICLlpLTmjIfpkojliIbnprvkuo4gIgorCisjOiB3dC1zdGF0dXMuYzoxMTg2Cittc2dpZCAiSEVBRCBkZXRhY2hlZCBmcm9tICIKK21zZ3N0ciAi5aS05oyH6ZKI5YiG56a76IeqICIKKworIzogd3Qtc3RhdHVzLmM6MTE4OQogbXNnaWQgIk5vdCBjdXJyZW50bHkgb24gYW55IGJyYW5jaC4iCiBtc2dzdHIgIuW9k+WJjeS4jeWcqOS7u+S9leWIhuaUr+S4iuOAgiIKIAotIzogd3Qtc3RhdHVzLmM6NzU1CisjOiB3dC1zdGF0dXMuYzoxMjA2CiBtc2dpZCAiSW5pdGlhbCBjb21taXQiCiBtc2dzdHIgIuWIneWni+aPkOS6pCIKIAotIzogd3Qtc3RhdHVzLmM6NzY5Ci1tc2dpZCAiVW50cmFja2VkIgotbXNnc3RyICLmnKrot5/ouKrnmoQiCisjOiB3dC1zdGF0dXMuYzoxMjIwCittc2dpZCAiVW50cmFja2VkIGZpbGVzIgorbXNnc3RyICLmnKrot5/ouKrnmoTmlofku7YiCiAKLSM6IHd0LXN0YXR1cy5jOjc3MQotbXNnaWQgIklnbm9yZWQiCi1tc2dzdHIgIuW/veeVpeeahCIKKyM6IHd0LXN0YXR1cy5jOjEyMjIKK21zZ2lkICJJZ25vcmVkIGZpbGVzIgorbXNnc3RyICLlv73nlaXnmoTmlofku7YiCiAKLSM6IHd0LXN0YXR1cy5jOjc3MworIzogd3Qtc3RhdHVzLmM6MTIyNgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSXQgdG9vayAlLjJmIHNlY29uZHMgdG8gZW51bWVyYXRlIHVudHJhY2tlZCBmaWxlcy4gJ3N0YXR1cyAtdW5vJ1xuIgorIm1heSBzcGVlZCBpdCB1cCwgYnV0IHlvdSBoYXZlIHRvIGJlIGNhcmVmdWwgbm90IHRvIGZvcmdldCB0byBhZGRcbiIKKyJuZXcgZmlsZXMgeW91cnNlbGYgKHNlZSAnZ2l0IGhlbHAgc3RhdHVzJykuIgorbXNnc3RyICIiCisi6ICX6LS55LqGICUuMmYg56eS5Lul5p6a5Li+5pyq6Lef6Liq55qE5paH5Lu244CCJ3N0YXR1cyAtdW5vJyDkuZ/orrjog73mj5Dpq5jpgJ/luqbvvIxcbiIKKyLkvYbmgqjpnIDopoHlsI/lv4PkuI3opoHlv5jkuobmt7vliqDmlrDmlofku7bvvIjlj4Lop4EgJ2dpdCBoZWxwIHN0YXR1cyfvvInjgIIiCisKKyM6IHd0LXN0YXR1cy5jOjEyMzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW50cmFja2VkIGZpbGVzIG5vdCBsaXN0ZWQlcyIKIG1zZ3N0ciAi5pyq6Lef6Liq55qE5paH5Lu25rKh5pyJ5YiX5Ye6JXMiCiAKICMgIOivkeiAhe+8muS4reaWh+Wtl+espuS4suaLvOaOpe+8jOWPr+WIoOmZpOWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6Nzc1CisjOiB3dC1zdGF0dXMuYzoxMjM0CiBtc2dpZCAiICh1c2UgLXUgb3B0aW9uIHRvIHNob3cgdW50cmFja2VkIGZpbGVzKSIKIG1zZ3N0ciAi77yI5L2/55SoIC11IOWPguaVsOaYvuekuuacqui3n+i4queahOaWh+S7tu+8iSIKIAotIzogd3Qtc3RhdHVzLmM6NzgxCisjOiB3dC1zdGF0dXMuYzoxMjQwCiBtc2dpZCAiTm8gY2hhbmdlcyIKIG1zZ3N0ciAi5rKh5pyJ5L+u5pS5IgogCi0jOiB3dC1zdGF0dXMuYzo3ODUKKyM6IHd0LXN0YXR1cy5jOjEyNDUKICMsIGMtZm9ybWF0Ci1tc2dpZCAibm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXQlc1xuIgotbXNnc3RyICLkv67mlLnlsJrmnKrliqDlhaXmj5DkuqQlc1xuIgorbXNnaWQgIm5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0ICh1c2UgXCJnaXQgYWRkXCIgYW5kL29yIFwiZ2l0IGNvbW1pdCAtYVwiKVxuIgorbXNnc3RyICLkv67mlLnlsJrmnKrliqDlhaXmj5DkuqTvvIjkvb/nlKggXCJnaXQgYWRkXCIg5ZKML+aIliBcImdpdCBjb21taXQgLWFcIu+8iVxuIgogCi0jICDor5HogIXvvJrkuK3mloflrZfnrKbkuLLmi7zmjqXvvIzlj6/liKDpmaTliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjc4NwotbXNnaWQgIiAodXNlIFwiZ2l0IGFkZFwiIGFuZC9vciBcImdpdCBjb21taXQgLWFcIikiCi1tc2dzdHIgIu+8iOS9v+eUqCBcImdpdCBhZGRcIiDlkowv5oiWIFwiZ2l0IGNvbW1pdCAtYVwi77yJIgotCi0jOiB3dC1zdGF0dXMuYzo3ODkKKyM6IHd0LXN0YXR1cy5jOjEyNDgKICMsIGMtZm9ybWF0Ci1tc2dpZCAibm90aGluZyBhZGRlZCB0byBjb21taXQgYnV0IHVudHJhY2tlZCBmaWxlcyBwcmVzZW50JXNcbiIKLW1zZ3N0ciAi56m65o+Q5Lqk5L2G5a2Y5Zyo5pyq6Lef6Liq5paH5Lu2JXNcbiIKK21zZ2lkICJubyBjaGFuZ2VzIGFkZGVkIHRvIGNvbW1pdFxuIgorbXNnc3RyICLkv67mlLnlsJrmnKrliqDlhaXmj5DkuqRcbiIKIAotIyAg6K+R6ICF77ya5Lit5paH5a2X56ym5Liy5ou85o6l77yM5Y+v5Yig6Zmk5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzo3OTEKLW1zZ2lkICIgKHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaykiCi1tc2dzdHIgIu+8iOS9v+eUqCBcImdpdCBhZGRcIiDlu7rnq4vot5/ouKrvvIkiCi0KLSM6IHd0LXN0YXR1cy5jOjc5MyB3dC1zdGF0dXMuYzo3OTYgd3Qtc3RhdHVzLmM6Nzk5CisjOiB3dC1zdGF0dXMuYzoxMjUxCiAjLCBjLWZvcm1hdAotbXNnaWQgIm5vdGhpbmcgdG8gY29tbWl0JXNcbiIKLW1zZ3N0ciAi5peg6aG75o+Q5LqkJXNcbiIKK21zZ2lkICIiCisibm90aGluZyBhZGRlZCB0byBjb21taXQgYnV0IHVudHJhY2tlZCBmaWxlcyBwcmVzZW50ICh1c2UgXCJnaXQgYWRkXCIgdG8gIgorInRyYWNrKVxuIgorbXNnc3RyICLmj5DkuqTkuLrnqbrvvIzkvYbmmK/lrZjlnKjlsJrmnKrot5/ouKrnmoTmlofku7bvvIjkvb/nlKggXCJnaXQgYWRkXCIg5bu656uL6Lef6Liq77yJXG4iCisKKyM6IHd0LXN0YXR1cy5jOjEyNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAibm90aGluZyBhZGRlZCB0byBjb21taXQgYnV0IHVudHJhY2tlZCBmaWxlcyBwcmVzZW50XG4iCittc2dzdHIgIuaPkOS6pOS4uuepuu+8jOS9huaYr+WtmOWcqOWwmuacqui3n+i4queahOaWh+S7tlxuIgogCiAjICDor5HogIXvvJrkuK3mloflrZfnrKbkuLLmi7zmjqXvvIzlj6/liKDpmaTliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjc5NAotbXNnaWQgIiAoY3JlYXRlL2NvcHkgZmlsZXMgYW5kIHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaykiCi1tc2dzdHIgIu+8iOaWsOW7ui/mi7fotJ3nmoTmlofku7bkvb/nlKggXCJnaXQgYWRkXCIg5bu656uL6Lef6Liq77yJIgorIzogd3Qtc3RhdHVzLmM6MTI1NworIywgYy1mb3JtYXQKK21zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCAoY3JlYXRlL2NvcHkgZmlsZXMgYW5kIHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaylcbiIKK21zZ3N0ciAi5peg5paH5Lu26KaB5o+Q5Lqk77yI5Yib5bu6L+aLt+i0neaWh+S7tuW5tuS9v+eUqCBcImdpdCBhZGRcIiDlu7rnq4vot5/ouKrvvIlcbiIKKworIzogd3Qtc3RhdHVzLmM6MTI2MCB3dC1zdGF0dXMuYzoxMjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIm5vdGhpbmcgdG8gY29tbWl0XG4iCittc2dzdHIgIuaXoOaWh+S7tuimgeaPkOS6pFxuIgogCiAjICDor5HogIXvvJrkuK3mloflrZfnrKbkuLLmi7zmjqXvvIzlj6/liKDpmaTliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjc5NwotbXNnaWQgIiAodXNlIC11IHRvIHNob3cgdW50cmFja2VkIGZpbGVzKSIKLW1zZ3N0ciAi77yI5L2/55SoIC11IOaYvuekuuacqui3n+i4quaWh+S7tu+8iSIKKyM6IHd0LXN0YXR1cy5jOjEyNjMKKyMsIGMtZm9ybWF0Cittc2dpZCAibm90aGluZyB0byBjb21taXQgKHVzZSAtdSB0byBzaG93IHVudHJhY2tlZCBmaWxlcylcbiIKK21zZ3N0ciAi5peg5paH5Lu26KaB5o+Q5Lqk77yI5L2/55SoIC11IOaYvuekuuacqui3n+i4queahOaWh+S7tu+8iVxuIgogCiAjICDor5HogIXvvJrkuK3mloflrZfnrKbkuLLmi7zmjqXvvIzlj6/liKDpmaTliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjgwMAotbXNnaWQgIiAod29ya2luZyBkaXJlY3RvcnkgY2xlYW4pIgotbXNnc3RyICLvvIjlubLlh4DnmoTlt6XkvZzljLrvvIkiCisjOiB3dC1zdGF0dXMuYzoxMjY3CisjLCBjLWZvcm1hdAorbXNnaWQgIm5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIGRpcmVjdG9yeSBjbGVhblxuIgorbXNnc3RyICLml6Dmlofku7bopoHmj5DkuqTvvIzlubLlh4DnmoTlt6XkvZzljLpcbiIKIAotIzogd3Qtc3RhdHVzLmM6OTA4CisjOiB3dC1zdGF0dXMuYzoxMzc1CiBtc2dpZCAiSEVBRCAobm8gYnJhbmNoKSIKIG1zZ3N0ciAiSEVBRO+8iOmdnuWIhuaUr++8iSIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5Y+l5bC+56m65qC8Ci0jOiB3dC1zdGF0dXMuYzo5MTQKKyM6IHd0LXN0YXR1cy5jOjEzODEKIG1zZ2lkICJJbml0aWFsIGNvbW1pdCBvbiAiCiBtc2dzdHIgIuWIneWni+aPkOS6pOS6jiAiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWPpeWwvuepuuagvAotIzogd3Qtc3RhdHVzLmM6OTI5CisjOiB3dC1zdGF0dXMuYzoxMzk2CiBtc2dpZCAiYmVoaW5kICIKIG1zZ3N0ciAi6JC95ZCOICIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5Y+l5bC+56m65qC8Ci0jOiB3dC1zdGF0dXMuYzo5MzIgd3Qtc3RhdHVzLmM6OTM1CisjOiB3dC1zdGF0dXMuYzoxMzk5IHd0LXN0YXR1cy5jOjE0MDIKIG1zZ2lkICJhaGVhZCAiCiBtc2dzdHIgIumihuWFiCAiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWPpeWwvuepuuagvAotIzogd3Qtc3RhdHVzLmM6OTM3CisjOiB3dC1zdGF0dXMuYzoxNDA0CiBtc2dpZCAiLCBiZWhpbmQgIgogbXNnc3RyICLvvIzokL3lkI4gIgogCi0jOiBidWlsdGluL2FkZC5jOjYyCisjOiBjb21wYXQvcHJlY29tcG9zZV91dGY4LmM6NTggYnVpbHRpbi9jbG9uZS5jOjM1MgorIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgdG8gdW5saW5rICclcyciCittc2dzdHIgIuaXoOazleWIoOmZpCAnJXMnIgorCisjOiBidWlsdGluL2FkZC5jOjIwCittc2dpZCAiZ2l0IGFkZCBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICJnaXQgYWRkIFvpgInpobldIFstLV0gPOi3r+W+hOWMuemFjT4uLi4iCisKKyMgIOivkeiAhe+8muWtl+espuS4summluihjOihjOmmluimgea3u+WKoOKAnHdhcm5pbmc6IOKAneWtl+S4su+8jOaVheatpOmmluihjOimgei+g+WFtuS9meihjOefrQorIy4KKyMuICogVG8gYmUgY29uc2lzdGVudCB3aXRoICJnaXQgYWRkIC1wIiBhbmQgbW9zdCBHaXQKKyMuICogY29tbWFuZHMsIHdlIHNob3VsZCBkZWZhdWx0IHRvIGJlaW5nIHRyZWUtd2lkZSwgYnV0CisjLiAqIHRoaXMgaXMgbm90IHRoZSBvcmlnaW5hbCBiZWhhdmlvciBhbmQgY2FuJ3QgYmUKKyMuICogY2hhbmdlZCB1bnRpbCB1c2VycyB0cmFpbmVkIHRoZW1zZWx2ZXMgbm90IHRvIHR5cGUKKyMuICogImdpdCBhZGQgLXUiIG9yICJnaXQgYWRkIC1BIi4gRm9yIG5vdywgd2Ugd2FybiBhbmQKKyMuICoga2VlcCB0aGUgb2xkIGJlaGF2aW9yLiBMYXRlciwgdGhlIGJlaGF2aW9yIGNhbiBiZSBjaGFuZ2VkCisjLiAqIHRvIHRyZWUtd2lkZSwga2VlcGluZyB0aGUgd2FybmluZyBmb3IgYSB3aGlsZSwgYW5kCisjLiAqIGV2ZW50dWFsbHkgd2UgY2FuIGRyb3AgdGhlIHdhcm5pbmcuCisjLgorIzogYnVpbHRpbi9hZGQuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGJlaGF2aW9yIG9mICdnaXQgYWRkICVzIChvciAlcyknIHdpdGggbm8gcGF0aCBhcmd1bWVudCBmcm9tIGFcbiIKKyJzdWJkaXJlY3Rvcnkgb2YgdGhlIHRyZWUgd2lsbCBjaGFuZ2UgaW4gR2l0IDIuMCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkICIKKyJhbnltb3JlLlxuIgorIlRvIGFkZCBjb250ZW50IGZvciB0aGUgd2hvbGUgdHJlZSwgcnVuOlxuIgorIlxuIgorIiAgZ2l0IGFkZCAlcyA6L1xuIgorIiAgKG9yIGdpdCBhZGQgJXMgOi8pXG4iCisiXG4iCisiVG8gcmVzdHJpY3QgdGhlIGNvbW1hbmQgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBydW46XG4iCisiXG4iCisiICBnaXQgYWRkICVzIC5cbiIKKyIgIChvciBnaXQgYWRkICVzIC4pXG4iCisiXG4iCisiV2l0aCB0aGUgY3VycmVudCBHaXQgdmVyc2lvbiwgdGhlIGNvbW1hbmQgaXMgcmVzdHJpY3RlZCB0byB0aGUgY3VycmVudCAiCisiZGlyZWN0b3J5LlxuIgorbXNnc3RyICIiCisi5ZyoIEdpdCAyLjAg54mI5pys77yM5L2N5LqO5LiA5Liq5a2Q55uu5b2V5LiL5LiN5bim5Lu75L2V6Lev5b6E5Y+C5pWw5Zyw5omn6KGM5ZG95LukXG4iCisiJ2dpdCBhZGQgJXMgKOaIliAlcyknIOeahOihjOS4uuWwhuiiq+aUueWPmO+8jOS4jeimgeWGjee7p+e7reS9v+eUqOS6huOAglxuIgorIuWmguaenOimgea3u+WKoOaVtOS4quebruW9leagkeeahOWGheWuue+8jOaJp+ihjO+8mlxuIgorIlxuIgorIiAgZ2l0IGFkZCAlcyA6L1xuIgorIiAgKOaIliBnaXQgYWRkICVzIDovKVxuIgorIlxuIgorIuWmguaenOimgemZkOWItuivpeWRveS7pOWPquS9nOeUqOS6juW9k+WJjeebruW9le+8jOaJp+ihjO+8mlxuIgorIlxuIgorIiAgZ2l0IGFkZCAlcyAuXG4iCisiICAo5oiWIGdpdCBhZGQgJXMgLilcbiIKKyJcbiIKKyLlr7nkuo7lvZPliY3niYjmnKznmoQgR2l077yM6L+Z5p2h5ZG95Luk5Y+q5L2c55So5LqO5b2T5YmN55uu5b2V44CCXG4iCisKKyM6IGJ1aWx0aW4vYWRkLmM6MTAwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJZb3UgcmFuICdnaXQgYWRkJyB3aXRoIG5laXRoZXIgJy1BICgtLWFsbCknIG9yICctLWlnbm9yZS1yZW1vdmFsJyxcbiIKKyJ3aG9zZSBiZWhhdmlvdXIgd2lsbCBjaGFuZ2UgaW4gR2l0IDIuMCB3aXRoIHJlc3BlY3QgdG8gcGF0aHMgeW91IHJlbW92ZWQuXG4iCisiUGF0aHMgbGlrZSAnJXMnIHRoYXQgYXJlXG4iCisicmVtb3ZlZCBmcm9tIHlvdXIgd29ya2luZyB0cmVlIGFyZSBpZ25vcmVkIHdpdGggdGhpcyB2ZXJzaW9uIG9mIEdpdC5cbiIKKyJcbiIKKyIqICdnaXQgYWRkIC0taWdub3JlLXJlbW92YWwgPHBhdGhzcGVjPicsIHdoaWNoIGlzIHRoZSBjdXJyZW50IGRlZmF1bHQsXG4iCisiICBpZ25vcmVzIHBhdGhzIHlvdSByZW1vdmVkIGZyb20geW91ciB3b3JraW5nIHRyZWUuXG4iCisiXG4iCisiKiAnZ2l0IGFkZCAtLWFsbCA8cGF0aHNwZWM+JyB3aWxsIGxldCB5b3UgYWxzbyByZWNvcmQgdGhlIHJlbW92YWxzLlxuIgorIlxuIgorIlJ1biAnZ2l0IHN0YXR1cycgdG8gY2hlY2sgdGhlIHBhdGhzIHlvdSByZW1vdmVkIGZyb20geW91ciB3b3JraW5nIHRyZWUuXG4iCittc2dzdHIgIiIKKyLmgqjlnKjov5DooYwgJ2dpdCBhZGQnIOaXtuayoeacieaMh+WumiAnLUEgKC0tYWxsKScg5oiWICctLWlnbm9yZS1yZW1vdmFsJ++8jFxuIgorIumSiOWvueWFtuS4reacrOWcsOenu+mZpOi3r+W+hOeahOihjOS4uuWwhuWcqCBHaXQgMi4wIOeJiOacrOW6k+WPkeeUn+WPmOWMluOAglxuIgorIuWDj+acrOWcsOW3peS9nOWMuuenu+mZpOeahOi3r+W+hCAnJXMnXG4iCisi5Zyo5q2k54mI5pys55qEIEdpdCDkuK3ooqvlv73nlaXjgIJcbiIKKyJcbiIKKyIqICdnaXQgYWRkIC0taWdub3JlLXJlbW92YWwgPHBhdGhzcGVjPifvvIzmmK/lvZPliY3niYjmnKznmoTpu5jorqTmk43kvZzvvIxcbiIKKyIgIOW/veeVpeaCqOacrOWcsOW3peS9nOWMuuS4reenu+mZpOeahOaWh+S7tuOAglxuIgorIlxuIgorIiogJ2dpdCBhZGQgLS1hbGwgPHBhdGhzcGVjPicg5bCG6K6p5oKo5ZCM5pe25a+55Yig6Zmk5pON5L2c6L+b6KGM6K6w5b2V44CCXG4iCisiXG4iCisi6L+Q6KGMICdnaXQgc3RhdHVzJyDmnaXmo4Dmn6XmgqjmnKzlnLDlt6XkvZzljLrkuK3np7vpmaTnmoTot6/lvoTjgIJcbiIKKworIzogYnVpbHRpbi9hZGQuYzoxNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5leHBlY3RlZCBkaWZmIHN0YXR1cyAlYyIKIG1zZ3N0ciAi5oSP5aSW55qE5beu5byC54q25oCBICVjIgogCi0jOiBidWlsdGluL2FkZC5jOjY3IGJ1aWx0aW4vY29tbWl0LmM6MjI2CisjOiBidWlsdGluL2FkZC5jOjE0OSBidWlsdGluL2NvbW1pdC5jOjIzMwogbXNnaWQgInVwZGF0aW5nIGZpbGVzIGZhaWxlZCIKIG1zZ3N0ciAi5pu05paw5paH5Lu25aSx6LSlIgogCi0jOiBidWlsdGluL2FkZC5jOjc3CisjOiBidWlsdGluL2FkZC5jOjE2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZW1vdmUgJyVzJ1xuIgogbXNnc3RyICLliKDpmaQgJyVzJ1xuIgogCi0jOiBidWlsdGluL2FkZC5jOjE3NgotIywgYy1mb3JtYXQKLW1zZ2lkICJQYXRoICclcycgaXMgaW4gc3VibW9kdWxlICclLipzJyIKLW1zZ3N0ciAi6Lev5b6EICclcycg5bGe5LqO5qih57uEICclLipzJyIKLQotIzogYnVpbHRpbi9hZGQuYzoxOTIKKyM6IGJ1aWx0aW4vYWRkLmM6MjUzCiBtc2dpZCAiVW5zdGFnZWQgY2hhbmdlcyBhZnRlciByZWZyZXNoaW5nIHRoZSBpbmRleDoiCiBtc2dzdHIgIuWIt+aWsOe0ouW8leS5i+WQjuWwmuacquiiq+aaguWtmOeahOWPmOabtO+8miIKIAotIzogYnVpbHRpbi9hZGQuYzoxOTUgYnVpbHRpbi9hZGQuYzo0NTYgYnVpbHRpbi9ybS5jOjE4NgorIzogYnVpbHRpbi9hZGQuYzoyNTYgYnVpbHRpbi9hZGQuYzo1NzIgYnVpbHRpbi9ybS5jOjI3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoc3BlYyAnJXMnIGRpZCBub3QgbWF0Y2ggYW55IGZpbGVzIgogbXNnc3RyICLot6/lvoQgJyVzJyDmnKrljLnphY3ku7vkvZXmlofku7YiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MjA5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIiclcycgaXMgYmV5b25kIGEgc3ltYm9saWMgbGluayIKLW1zZ3N0ciAiJyVzJyDkvY3kuo7nrKblj7fpk77mjqXkuK0iCi0KLSM6IGJ1aWx0aW4vYWRkLmM6Mjc2CisjOiBidWlsdGluL2FkZC5jOjMzOQogbXNnaWQgIkNvdWxkIG5vdCByZWFkIHRoZSBpbmRleCIKIG1zZ3N0ciAi5LiN6IO96K+75Y+W57Si5byVIgogCi0jOiBidWlsdGluL2FkZC5jOjI4NgorIzogYnVpbHRpbi9hZGQuYzozNDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gJyVzJyBmb3Igd3JpdGluZy4iCi1tc2dzdHIgIuS4jeiDveS4uuWGmeWFpeaJk+W8gCAnJXMn44CCIgorbXNnc3RyICLkuI3og73miZPlvIAgJyVzJyDku6XlhpnlhaXjgIIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MjkwCisjOiBidWlsdGluL2FkZC5jOjM1MwogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSBwYXRjaCIKLW1zZ3N0ciAi5LiN6IO95YaZ6KGl5LiBIgorbXNnc3RyICLkuI3og73nlJ/miJDooaXkuIEiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mjk1CisjOiBidWlsdGluL2FkZC5jOjM1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgc3RhdCAnJXMnIgogbXNnc3RyICLkuI3og73mn6XnnIvmlofku7bnirbmgIEgJyVzJyIKIAotIzogYnVpbHRpbi9hZGQuYzoyOTcKKyM6IGJ1aWx0aW4vYWRkLmM6MzYwCiBtc2dpZCAiRW1wdHkgcGF0Y2guIEFib3J0ZWQuIgogbXNnc3RyICLnqbrooaXkuIHjgILlvILluLjnu4jmraLjgIIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzAzCisjOiBidWlsdGluL2FkZC5jOjM2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgYXBwbHkgJyVzJyIKIG1zZ3N0ciAi5LiN6IO95bqU55SoICclcyciCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzEyCisjOiBidWlsdGluL2FkZC5jOjM3NgogbXNnaWQgIlRoZSBmb2xsb3dpbmcgcGF0aHMgYXJlIGlnbm9yZWQgYnkgb25lIG9mIHlvdXIgLmdpdGlnbm9yZSBmaWxlczpcbiIKLW1zZ3N0ciAi5LiL5YiX6Lev5b6E6KKr5oKo55qE5LiA5LiqIC5naXRpZ25vcmUg5paH5Lu25omA5b+955Wl77yaXG4iCittc2dzdHIgIuS4i+WIl+i3r+W+hOagueaNruaCqOeahOS4gOS4qiAuZ2l0aWdub3JlIOaWh+S7tuiAjOiiq+W/veeVpe+8mlxuIgogCi0jOiBidWlsdGluL2FkZC5jOjM1MgorIzogYnVpbHRpbi9hZGQuYzozOTMgYnVpbHRpbi9jbGVhbi5jOjE2MSBidWlsdGluL2ZldGNoLmM6NzggYnVpbHRpbi9tdi5jOjYzCisjOiBidWlsdGluL3BydW5lLXBhY2tlZC5jOjc2IGJ1aWx0aW4vcHVzaC5jOjQyNSBidWlsdGluL3JlbW90ZS5jOjEyNTMKKyM6IGJ1aWx0aW4vcm0uYzoyMDYKK21zZ2lkICJkcnkgcnVuIgorbXNnc3RyICLmvJTkuaAiCisKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk0IGJ1aWx0aW4vYXBwbHkuYzo0NDA5IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1MiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo5NSBidWlsdGluL2ZzY2suYzo2MTMKKyM6IGJ1aWx0aW4vbG9nLmM6MTUxOCBidWlsdGluL212LmM6NjIgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTIKK21zZ2lkICJiZSB2ZXJib3NlIgorbXNnc3RyICLlhpfplb/ovpPlh7oiCisKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk2Cittc2dpZCAiaW50ZXJhY3RpdmUgcGlja2luZyIKK21zZ3N0ciAi5Lqk5LqS5byP5ouj6YCJIgorCisjOiBidWlsdGluL2FkZC5jOjM5NyBidWlsdGluL2NoZWNrb3V0LmM6MTA2MyBidWlsdGluL3Jlc2V0LmM6MjU4Cittc2dpZCAic2VsZWN0IGh1bmtzIGludGVyYWN0aXZlbHkiCittc2dzdHIgIuS6pOS6kuW8j+aMkemAieaVsOaNruWdlyIKKworIzogYnVpbHRpbi9hZGQuYzozOTgKK21zZ2lkICJlZGl0IGN1cnJlbnQgZGlmZiBhbmQgYXBwbHkiCittc2dzdHIgIue8lui+keW9k+WJjeW3ruW8guW5tuW6lOeUqCIKKworIzogYnVpbHRpbi9hZGQuYzozOTkKK21zZ2lkICJhbGxvdyBhZGRpbmcgb3RoZXJ3aXNlIGlnbm9yZWQgZmlsZXMiCittc2dzdHIgIuWFgeiuuOa3u+WKoOW/veeVpeeahOaWh+S7tiIKKworIzogYnVpbHRpbi9hZGQuYzo0MDAKK21zZ2lkICJ1cGRhdGUgdHJhY2tlZCBmaWxlcyIKK21zZ3N0ciAi5pu05paw5bey6Lef6Liq55qE5paH5Lu2IgorCisjOiBidWlsdGluL2FkZC5jOjQwMQorbXNnaWQgInJlY29yZCBvbmx5IHRoZSBmYWN0IHRoYXQgdGhlIHBhdGggd2lsbCBiZSBhZGRlZCBsYXRlciIKK21zZ3N0ciAi5Y+q6K6w5b2V77yM6K+l6Lev5b6E56iN5ZCO5YaN5re75YqgIgorCisjOiBidWlsdGluL2FkZC5jOjQwMgorbXNnaWQgImFkZCBjaGFuZ2VzIGZyb20gYWxsIHRyYWNrZWQgYW5kIHVudHJhY2tlZCBmaWxlcyIKK21zZ3N0ciAi5re75Yqg5omA5pyJ5pS55Y+Y55qE5bey6Lef6Liq5paH5Lu25ZKM5pyq6Lef6Liq5paH5Lu2IgorCisjLiB0YWtlcyBubyBhcmd1bWVudHMKKyM6IGJ1aWx0aW4vYWRkLmM6NDA1Cittc2dpZCAiaWdub3JlIHBhdGhzIHJlbW92ZWQgaW4gdGhlIHdvcmtpbmcgdHJlZSAoc2FtZSBhcyAtLW5vLWFsbCkiCittc2dzdHIgIuW/veeVpeW3peS9nOWMuuS4reenu+mZpOeahOi3r+W+hO+8iOWSjCAtLW5vLWFsbCDnm7jlkIzvvIkiCisKKyM6IGJ1aWx0aW4vYWRkLmM6NDA3Cittc2dpZCAiZG9uJ3QgYWRkLCBvbmx5IHJlZnJlc2ggdGhlIGluZGV4IgorbXNnc3RyICLkuI3mt7vliqDvvIzlj6rliLfmlrDntKLlvJUiCisKKyM6IGJ1aWx0aW4vYWRkLmM6NDA4Cittc2dpZCAianVzdCBza2lwIGZpbGVzIHdoaWNoIGNhbm5vdCBiZSBhZGRlZCBiZWNhdXNlIG9mIGVycm9ycyIKK21zZ3N0ciAi6Lez6L+H5Zug5Ye66ZSZ5LiN6IO95re75Yqg55qE5paH5Lu2IgorCisjOiBidWlsdGluL2FkZC5jOjQwOQorbXNnaWQgImNoZWNrIGlmIC0gZXZlbiBtaXNzaW5nIC0gZmlsZXMgYXJlIGlnbm9yZWQgaW4gZHJ5IHJ1biIKK21zZ3N0ciAi5qOA5p+l5Zyo5ryU5Lmg5qih5byP5LiL5paH5Lu277yI5Y2z5L2/5LiN5a2Y5Zyo77yJ5piv5ZCm6KKr5b+955WlIgorCisjOiBidWlsdGluL2FkZC5jOjQzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2UgLWYgaWYgeW91IHJlYWxseSB3YW50IHRvIGFkZCB0aGVtLlxuIgogbXNnc3RyICLkvb/nlKggLWYg5Y+C5pWw5aaC5p6c5oKo56Gu5a6e6KaB5re75Yqg5a6D5Lus44CCXG4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzUzCisjOiBidWlsdGluL2FkZC5jOjQzMgogbXNnaWQgIm5vIGZpbGVzIGFkZGVkIgogbXNnc3RyICLmsqHmnInmlofku7booqvmt7vliqAiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzU5CisjOiBidWlsdGluL2FkZC5jOjQzOAogbXNnaWQgImFkZGluZyBmaWxlcyBmYWlsZWQiCiBtc2dzdHIgIua3u+WKoOaWh+S7tuWksei0pSIKIAotIzogYnVpbHRpbi9hZGQuYzozOTEKKyM6IGJ1aWx0aW4vYWRkLmM6NDc3CiBtc2dpZCAiLUEgYW5kIC11IGFyZSBtdXR1YWxseSBpbmNvbXBhdGlibGUiCiBtc2dzdHIgIi1BIOWSjCAtdSDpgInpobnkupLmlqUiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzkzCisjOiBidWlsdGluL2FkZC5jOjQ5NQogbXNnaWQgIk9wdGlvbiAtLWlnbm9yZS1taXNzaW5nIGNhbiBvbmx5IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCAtLWRyeS1ydW4iCi1tc2dzdHIgIumAiemhuSAtLWlnbm9yZS1taXNzaW5nIOWPquiDveWSjCAtLWRyeS1ydW4g5YWx55SoIgorbXNnc3RyICLpgInpobkgLS1pZ25vcmUtbWlzc2luZyDlj6rog73lkowgLS1kcnktcnVuIOWQjOaXtuS9v+eUqCIKIAotIzogYnVpbHRpbi9hZGQuYzo0MTMKKyM6IGJ1aWx0aW4vYWRkLmM6NTI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vdGhpbmcgc3BlY2lmaWVkLCBub3RoaW5nIGFkZGVkLlxuIgogbXNnc3RyICLmsqHmnInmjIflrprmlofku7bvvIzkuZ/msqHmnInmlofku7booqvmt7vliqDjgIJcbiIKIAotIzogYnVpbHRpbi9hZGQuYzo0MTQKKyM6IGJ1aWx0aW4vYWRkLmM6NTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1heWJlIHlvdSB3YW50ZWQgdG8gc2F5ICdnaXQgYWRkIC4nP1xuIgogbXNnc3RyICLkuZ/orrjmgqjmg7PopoHmiafooYwgJ2dpdCBhZGQgLifvvJ9cbiIKIAotIzogYnVpbHRpbi9hZGQuYzo0MjAgYnVpbHRpbi9jbGVhbi5jOjk1IGJ1aWx0aW4vY29tbWl0LmM6Mjg2IGJ1aWx0aW4vbXYuYzo4MgotIzogYnVpbHRpbi9ybS5jOjE2MgorIzogYnVpbHRpbi9hZGQuYzo1MzIgYnVpbHRpbi9jaGVjay1pZ25vcmUuYzo2NiBidWlsdGluL2NsZWFuLmM6MjA0CisjOiBidWlsdGluL2NvbW1pdC5jOjI5MyBidWlsdGluL212LmM6ODIgYnVpbHRpbi9ybS5jOjIzNQogbXNnaWQgImluZGV4IGZpbGUgY29ycnVwdCIKIG1zZ3N0ciAi57Si5byV5paH5Lu25o2f5Z2PIgogCi0jOiBidWlsdGluL2FkZC5jOjQ3NiBidWlsdGluL2FwcGx5LmM6NDEwOCBidWlsdGluL212LmM6MjI5IGJ1aWx0aW4vcm0uYzoyNjAKKyM6IGJ1aWx0aW4vYWRkLmM6NjA0IGJ1aWx0aW4vYXBwbHkuYzo0NTA1IGJ1aWx0aW4vbXYuYzoyMjkgYnVpbHRpbi9ybS5jOjM3MAogbXNnaWQgIlVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIKIG1zZ3N0ciAi5peg5rOV5YaZ5YWl5paw57Si5byV5paH5Lu2IgogCi0jOiBidWlsdGluL2FwcGx5LmM6NTMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo1NwogbXNnaWQgImdpdCBhcHBseSBbb3B0aW9uc10gWzxwYXRjaD4uLi5dIgogbXNnc3RyICJnaXQgYXBwbHkgW+mAiemhuV0gWzzooaXkuIE+Li4uXSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjEwNgorIzogYnVpbHRpbi9hcHBseS5jOjExMAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlY29nbml6ZWQgd2hpdGVzcGFjZSBvcHRpb24gJyVzJyIKIG1zZ3N0ciAi5pyq6IO96K+G5Yir55qE56m655m95a2X56ym6YCJ6aG5ICclcyciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxMjEKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxMjUKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIHdoaXRlc3BhY2UgaWdub3JlIG9wdGlvbiAnJXMnIgogbXNnc3RyICLmnKrog73or4bliKvnmoTnqbrnmb3lrZfnrKblv73nlaXpgInpobkgJyVzJyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjgxNQorIzogYnVpbHRpbi9hcHBseS5jOjgyMwogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgcHJlcGFyZSB0aW1lc3RhbXAgcmVnZXhwICVzIgogbXNnc3RyICLml6Dms5Xlh4blpIfml7bpl7TmiLPmraPliJnooajovr7lvI8gJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo4MjQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo4MzIKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVnZXhlYyByZXR1cm5lZCAlZCBmb3IgaW5wdXQ6ICVzIgogbXNnc3RyICJyZWdleGVjIOi/lOWbniAlZO+8jOi+k+WFpeS4uu+8miVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6OTA1CisjOiBidWlsdGluL2FwcGx5LmM6OTEzCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBmaW5kIGZpbGVuYW1lIGluIHBhdGNoIGF0IGxpbmUgJWQiCiBtc2dzdHIgIuS4jeiDveWcqOihpeS4geeahOesrCAlZCDooYzmib7liLDmlofku7blkI0iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo5MzcKKyM6IGJ1aWx0aW4vYXBwbHkuYzo5NDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0IGFwcGx5OiBiYWQgZ2l0LWRpZmYgLSBleHBlY3RlZCAvZGV2L251bGwsIGdvdCAlcyBvbiBsaW5lICVkIgotbXNnc3RyICJnaXQgYXBwbHnvvJrplJnor6/nmoQgZ2l0LWRpZmYgLSDmnJ/mnJsgL2Rldi9udWxs77yM5L2G5Zyo56ysICUyJGQg6KGM5b6X5YiwICUxJHMiCittc2dzdHIgImdpdCBhcHBsee+8mumUmeivr+eahCBnaXQtZGlmZiAtIOW6lOS4uiAvZGV2L251bGzvvIzkvYblnKjnrKwgJTIkZCDooYzlvpfliLAgJTEkcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjk0MQorIzogYnVpbHRpbi9hcHBseS5jOjk0OQogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgYXBwbHk6IGJhZCBnaXQtZGlmZiAtIGluY29uc2lzdGVudCBuZXcgZmlsZW5hbWUgb24gbGluZSAlZCIKIG1zZ3N0ciAiZ2l0IGFwcGx577ya6ZSZ6K+v55qEIGdpdC1kaWZmIC0g56ysICVkIOihjOS4iuaWsOaWh+S7tuWQjeS4jeS4gOiHtCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjk0MgorIzogYnVpbHRpbi9hcHBseS5jOjk1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgYXBwbHk6IGJhZCBnaXQtZGlmZiAtIGluY29uc2lzdGVudCBvbGQgZmlsZW5hbWUgb24gbGluZSAlZCIKIG1zZ3N0ciAiZ2l0IGFwcGx577ya6ZSZ6K+v55qEIGdpdC1kaWZmIC0g56ysICVkIOihjOS4iuaXp+aWh+S7tuWQjeS4jeS4gOiHtCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjk0OQorIzogYnVpbHRpbi9hcHBseS5jOjk1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgYXBwbHk6IGJhZCBnaXQtZGlmZiAtIGV4cGVjdGVkIC9kZXYvbnVsbCBvbiBsaW5lICVkIgotbXNnc3RyICJnaXQgYXBwbHnvvJrplJnor6/nmoQgZ2l0LWRpZmYgLSDmnJ/mnJsgL2Rldi9udWxsIOS6juesrCAlZCDooYwiCittc2dzdHIgImdpdCBhcHBsee+8mumUmeivr+eahCBnaXQtZGlmZiAtIOesrCAlZCDooYzlpITlupTkuLogL2Rldi9udWxsIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTM5NAorIzogYnVpbHRpbi9hcHBseS5jOjE0MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVjb3VudDogdW5leHBlY3RlZCBsaW5lOiAlLipzIgogbXNnc3RyICJyZWNvdW5077ya5oSP5aSW55qE6KGM77yaJS4qcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE0NTEKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNDc5CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGNoIGZyYWdtZW50IHdpdGhvdXQgaGVhZGVyIGF0IGxpbmUgJWQ6ICUuKnMiCiBtc2dzdHIgIuesrCAlZCDooYznmoTooaXkuIHniYfmrrXmsqHmnInlpLTkv6Hmga/vvJolLipzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTQ2OAorIzogYnVpbHRpbi9hcHBseS5jOjE0OTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogImdpdCBkaWZmIGhlYWRlciBsYWNrcyBmaWxlbmFtZSBpbmZvcm1hdGlvbiB3aGVuIHJlbW92aW5nICVkIGxlYWRpbmcgcGF0aG5hbWUgIgpAQCAtMTEwMCw4MiArMTkzMiw3OCBAQAogbXNnc3RyWzBdICLlvZPnp7vpmaQgJWQg5Liq5YmN5a+86Lev5b6E5ZCOIGdpdCBkaWZmIOWktOe8uuS5j+aWh+S7tuWQjeS/oeaBr++8iOesrCAlZCDooYzvvIkiCiBtc2dzdHJbMV0gIuW9k+enu+mZpCAlZCDkuKrliY3lr7zot6/lvoTlkI4gZ2l0IGRpZmYg5aS057y65LmP5paH5Lu25ZCN5L+h5oGv77yI56ysICVkIOihjO+8iSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE2MjgKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU2CiBtc2dpZCAibmV3IGZpbGUgZGVwZW5kcyBvbiBvbGQgY29udGVudHMiCiBtc2dzdHIgIuaWsOaWh+S7tuS+nei1luaXp+WGheWuuSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE2MzAKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU4CiBtc2dpZCAiZGVsZXRlZCBmaWxlIHN0aWxsIGhhcyBjb250ZW50cyIKIG1zZ3N0ciAi5Yig6Zmk55qE5paH5Lu25LuN5pyJ5YaF5a65IgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTY1NgorIzogYnVpbHRpbi9hcHBseS5jOjE2ODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29ycnVwdCBwYXRjaCBhdCBsaW5lICVkIgotbXNnc3RyICLooaXkuIHmjZ/lnY/kvY3kuo7nrKwgJWQg6KGMIgorbXNnc3RyICLooaXkuIHlnKjnrKwgJWQg6KGM5o2f5Z2PIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTY5MgorIzogYnVpbHRpbi9hcHBseS5jOjE3MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IGZpbGUgJXMgZGVwZW5kcyBvbiBvbGQgY29udGVudHMiCiBtc2dzdHIgIuaWsOaWh+S7tiAlcyDkvp3otZbml6flhoXlrrkiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNjk0CisjOiBidWlsdGluL2FwcGx5LmM6MTcyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJkZWxldGVkIGZpbGUgJXMgc3RpbGwgaGFzIGNvbnRlbnRzIgogbXNnc3RyICLliKDpmaTnmoTmlofku7YgJXMg5LuN5pyJ5YaF5a65IgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTY5NworIzogYnVpbHRpbi9hcHBseS5jOjE3MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiKiogd2FybmluZzogZmlsZSAlcyBiZWNvbWVzIGVtcHR5IGJ1dCBpcyBub3QgZGVsZXRlZCIKIG1zZ3N0ciAiKiog6K2m5ZGK77ya5paH5Lu2ICVzIOaIkOS4uuepuuaWh+S7tuS9huW5tuacquWIoOmZpCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE4NDMKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxODcxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvcnJ1cHQgYmluYXJ5IHBhdGNoIGF0IGxpbmUgJWQ6ICUuKnMiCiBtc2dzdHIgIuS6jOi/m+WItuihpeS4geWcqOesrCAlZCDooYzmjZ/lnY/vvJolLipzIgogCiAjLiB0aGVyZSBoYXMgdG8gYmUgb25lIGh1bmsgKGZvcndhcmQgaHVuaykKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxODcyCisjOiBidWlsdGluL2FwcGx5LmM6MTkwMAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlY29nbml6ZWQgYmluYXJ5IHBhdGNoIGF0IGxpbmUgJWQiCiBtc2dzdHIgIuacquiDveivhuWIq+eahOS6jOi/m+WItuihpeS4geS9jeS6juesrCAlZCDooYwiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxOTU4CisjOiBidWlsdGluL2FwcGx5LmM6MTk4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRjaCB3aXRoIG9ubHkgZ2FyYmFnZSBhdCBsaW5lICVkIgogbXNnc3RyICLooaXkuIHmlofku7bnmoTnrKwgJWQg6KGM5Y+q5pyJ5Z6D5Zy+5pWw5o2uIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjA0OAorIzogYnVpbHRpbi9hcHBseS5jOjIwNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHJlYWQgc3ltbGluayAlcyIKIG1zZ3N0ciAi5peg5rOV6K+75Y+W56ym5Y+36ZO+5o6lICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjA1MgorIzogYnVpbHRpbi9hcHBseS5jOjIwODAKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIG9wZW4gb3IgcmVhZCAlcyIKIG1zZ3N0ciAi5LiN6IO95omT5byA5oiW6K+75Y+WICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjEyMwotbXNnaWQgIm9vcHMiCi1tc2dzdHIgIuWTjuWTnyIKLQotIzogYnVpbHRpbi9hcHBseS5jOjI2NDUKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyNjg4CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgc3RhcnQgb2YgbGluZTogJyVjJyIKIG1zZ3N0ciAi5peg5pWI55qE6KGM6aaW5a2X56ym77yaJyVjJyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI3NjMKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkh1bmsgIyVkIHN1Y2NlZWRlZCBhdCAlZCAob2Zmc2V0ICVkIGxpbmUpLiIKIG1zZ2lkX3BsdXJhbCAiSHVuayAjJWQgc3VjY2VlZGVkIGF0ICVkIChvZmZzZXQgJWQgbGluZXMpLiIKLW1zZ3N0clswXSAi5Z2XICMlZCDmiJDlip/lupTnlKjkuo4gJWQgKOWBj+enuyAlZCDooYzvvIkiCi1tc2dzdHJbMV0gIuWdlyAjJWQg5oiQ5Yqf5bqU55So5LqOICVkICjlgY/np7sgJWQg6KGM77yJIgorbXNnc3RyWzBdICLlnZcgIyVkIOaIkOWKn+W6lOeUqOS6jiAlZO+8iOWBj+enuyAlZCDooYzvvIkiCittc2dzdHJbMV0gIuWdlyAjJWQg5oiQ5Yqf5bqU55So5LqOICVk77yI5YGP56e7ICVkIOihjO+8iSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI3NzUKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbnRleHQgcmVkdWNlZCB0byAoJWxkLyVsZCkgdG8gYXBwbHkgZnJhZ21lbnQgYXQgJWQiCiBtc2dzdHIgIuS4iuS4i+aWh+WHj+WwkeWIsO+8iCVsZC8lbGTvvInku6XlnKjnrKwgJWQg6KGM5bqU55So6KGl5LiB54mH5q61IgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mjc4MQorIzogYnVpbHRpbi9hcHBseS5jOjI4MjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIndoaWxlIHNlYXJjaGluZyBmb3I6XG4iCkBAIC0xMTg0LDMxMyArMjAxMiwzMTggQEAKICLlvZPmn6Xor6LvvJpcbiIKICIlLipzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjgwMAorIzogYnVpbHRpbi9hcHBseS5jOjI4NDMKICMsIGMtZm9ybWF0CiBtc2dpZCAibWlzc2luZyBiaW5hcnkgcGF0Y2ggZGF0YSBmb3IgJyVzJyIKIG1zZ3N0ciAi57y65aSxICclcycg55qE5LqM6L+b5Yi26KGl5LiB5pWw5o2uIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjkwMworIzogYnVpbHRpbi9hcHBseS5jOjI5NDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmluYXJ5IHBhdGNoIGRvZXMgbm90IGFwcGx5IHRvICclcyciCiBtc2dzdHIgIuS6jOi/m+WItuihpeS4geacquW6lOeUqOWIsCAnJXMnIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjkwOQorIzogYnVpbHRpbi9hcHBseS5jOjI5NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmluYXJ5IHBhdGNoIHRvICclcycgY3JlYXRlcyBpbmNvcnJlY3QgcmVzdWx0IChleHBlY3RpbmcgJXMsIGdvdCAlcykiCi1tc2dzdHIgIuWIsCAnJXMnIOeahOS6jOi/m+WItuihpeS4geS6p+eUn+S6huS4jeato+ehrueahOe7k+aenO+8iOmihOacnyAlc++8jOW+l+WIsCAlc++8iSIKK21zZ3N0ciAi5YiwICclcycg55qE5LqM6L+b5Yi26KGl5LiB5Lqn55Sf5LqG5LiN5q2j56Gu55qE57uT5p6c77yI5bqU5Li6ICVz77yM5Y205Li6ICVz77yJIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjkzMAorIzogYnVpbHRpbi9hcHBseS5jOjI5NzMKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0Y2ggZmFpbGVkOiAlczolbGQiCiBtc2dzdHIgIuaJk+ihpeS4geWksei0pe+8miVzOiVsZCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMwNDUKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMDk1CiAjLCBjLWZvcm1hdAotbXNnaWQgInBhdGNoICVzIGhhcyBiZWVuIHJlbmFtZWQvZGVsZXRlZCIKLW1zZ3N0ciAi6KGl5LiBICVzIOW3sue7j+iiq+mHjeWRveWQjS/liKDpmaQiCittc2dpZCAiY2Fubm90IGNoZWNrb3V0ICVzIgorbXNnc3RyICLkuI3og73mo4Dlh7ogJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMDUyIGJ1aWx0aW4vYXBwbHkuYzozMDY5CisjOiBidWlsdGluL2FwcGx5LmM6MzE0MCBidWlsdGluL2FwcGx5LmM6MzE0OSBidWlsdGluL2FwcGx5LmM6MzE5MwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWFkIG9mICVzIGZhaWxlZCIKIG1zZ3N0ciAi6K+75Y+WICVzIOWksei0pSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMwODQKLW1zZ2lkICJyZW1vdmFsIHBhdGNoIGxlYXZlcyBmaWxlIGNvbnRlbnRzIgotbXNnc3RyICLnp7vpmaTooaXkuIHku43nlZnkuIvkuobmlofku7blhoXlrrkiCi0KLSM6IGJ1aWx0aW4vYXBwbHkuYzozMTA1CisjOiBidWlsdGluL2FwcGx5LmM6MzE3MyBidWlsdGluL2FwcGx5LmM6MzM5NQogIywgYy1mb3JtYXQKLW1zZ2lkICIlczogYWxyZWFkeSBleGlzdHMgaW4gd29ya2luZyBkaXJlY3RvcnkiCi1tc2dzdHIgIiVz77ya5bey57uP5a2Y5Zyo5LqO5bel5L2c5Yy65LitIgorbXNnaWQgInBhdGggJXMgaGFzIGJlZW4gcmVuYW1lZC9kZWxldGVkIgorbXNnc3RyICLot6/lvoQgJXMg5bey57uP6KKr6YeN5ZG95ZCNL+WIoOmZpCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMxNDMKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiJXM6IGhhcyBiZWVuIGRlbGV0ZWQvcmVuYW1lZCIKLW1zZ3N0ciAiJXPvvJrlt7Lnu4/ooqvliKDpmaQv6YeN5ZG95ZCNIgotCi0jOiBidWlsdGluL2FwcGx5LmM6MzE0OCBidWlsdGluL2FwcGx5LmM6MzE3OQotIywgYy1mb3JtYXQKLW1zZ2lkICIlczogJXMiCi1tc2dzdHIgIiVz77yaJXMiCi0KLSM6IGJ1aWx0aW4vYXBwbHkuYzozMTU5CisjOiBidWlsdGluL2FwcGx5LmM6MzI1NCBidWlsdGluL2FwcGx5LmM6MzQwOQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogZG9lcyBub3QgZXhpc3QgaW4gaW5kZXgiCiBtc2dzdHIgIiVz77ya5LiN5a2Y5Zyo5LqO57Si5byV5LitIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzE3MworIzogYnVpbHRpbi9hcHBseS5jOjMyNTggYnVpbHRpbi9hcHBseS5jOjM0MDEgYnVpbHRpbi9hcHBseS5jOjM0MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIgorbXNnc3RyICIlc++8miVzIgorCisjOiBidWlsdGluL2FwcGx5LmM6MzI2MyBidWlsdGluL2FwcGx5LmM6MzQxNwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogZG9lcyBub3QgbWF0Y2ggaW5kZXgiCiBtc2dzdHIgIiVz77ya5ZKM57Si5byV5LiN5Yy56YWNIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzE5MAorIzogYnVpbHRpbi9hcHBseS5jOjMzNjUKK21zZ2lkICJyZW1vdmFsIHBhdGNoIGxlYXZlcyBmaWxlIGNvbnRlbnRzIgorbXNnc3RyICLnp7vpmaTooaXkuIHku43nlZnkuIvkuobmlofku7blhoXlrrkiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNDM0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB3cm9uZyB0eXBlIgogbXNnc3RyICIlc++8mumUmeivr+exu+WeiyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMxOTIKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNDM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGhhcyB0eXBlICVvLCBleHBlY3RlZCAlbyIKLW1zZ3N0ciAiJXMg55qE57G75Z6L5pivICVv77yM6aKE5pyf5pivICVvIgorbXNnc3RyICIlcyDnmoTnsbvlnovmmK8gJW/vvIzlupTkuLogJW8iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMjQ3CisjOiBidWlsdGluL2FwcGx5LmM6MzUzNwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogYWxyZWFkeSBleGlzdHMgaW4gaW5kZXgiCiBtc2dzdHIgIiVz77ya5bey57uP5a2Y5Zyo5LqO57Si5byV5LitIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzI2NworIzogYnVpbHRpbi9hcHBseS5jOjM1NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGFscmVhZHkgZXhpc3RzIGluIHdvcmtpbmcgZGlyZWN0b3J5IgorbXNnc3RyICIlc++8muW3sue7j+WtmOWcqOS6juW3peS9nOWMuuS4rSIKKworIzogYnVpbHRpbi9hcHBseS5jOjM1NjAKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IG1vZGUgKCVvKSBvZiAlcyBkb2VzIG5vdCBtYXRjaCBvbGQgbW9kZSAoJW8pIgogbXNnc3RyICIlMiRzIOeahOaWsOaooeW8j++8iCUxJG/vvInlkozml6fmqKHlvI/vvIglMyRv77yJ5LiN5Yy56YWNIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzI3MgorIzogYnVpbHRpbi9hcHBseS5jOjM1NjUKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IG1vZGUgKCVvKSBvZiAlcyBkb2VzIG5vdCBtYXRjaCBvbGQgbW9kZSAoJW8pIG9mICVzIgogbXNnc3RyICIlMiRzIOeahOaWsOaooeW8j++8iCUxJG/vvInlkowgJTQkcyDnmoTml6fmqKHlvI/vvIglMyRv77yJ5LiN5Yy56YWNIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzI4MAorIzogYnVpbHRpbi9hcHBseS5jOjM1NzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHBhdGNoIGRvZXMgbm90IGFwcGx5IgogbXNnc3RyICIlc++8muihpeS4geacquW6lOeUqCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyOTMKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNoZWNraW5nIHBhdGNoICVzLi4uIgogbXNnc3RyICLmo4Dmn6XooaXkuIEgJXMuLi4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMzQ4IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTIgYnVpbHRpbi9yZXNldC5jOjE1OAorIzogYnVpbHRpbi9hcHBseS5jOjM2NzkgYnVpbHRpbi9jaGVja291dC5jOjIxNiBidWlsdGluL3Jlc2V0LmM6MTI0CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1ha2VfY2FjaGVfZW50cnkgZmFpbGVkIGZvciBwYXRoICclcyciCiBtc2dzdHIgIuWvuei3r+W+hCAnJXMnIOeahCBtYWtlX2NhY2hlX2VudHJ5IOaTjeS9nOWksei0pSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM0OTEKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODIyCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byByZW1vdmUgJXMgZnJvbSBpbmRleCIKIG1zZ3N0ciAi5LiN6IO95LuO57Si5byV5Lit56e76ZmkICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzUxOAorIzogYnVpbHRpbi9hcHBseS5jOjM4NTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29ycnVwdCBwYXRjaCBmb3Igc3VicHJvamVjdCAlcyIKIG1zZ3N0ciAi5a2Q6aG555uuICVzIOaNn+Wdj+eahOihpeS4gSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1MjIKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODU0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBzdGF0IG5ld2x5IGNyZWF0ZWQgZmlsZSAnJXMnIgogbXNnc3RyICLkuI3og73mnprkuL7mlrDlu7rmlofku7YgJyVzJyDnmoTnirbmgIEiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTI3CisjOiBidWlsdGluL2FwcGx5LmM6Mzg1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlIGJhY2tpbmcgc3RvcmUgZm9yIG5ld2x5IGNyZWF0ZWQgZmlsZSAlcyIKIG1zZ3N0ciAi5LiN6IO95Li65paw5bu65paH5Lu2ICVzIOWIm+W7uuWQjuerr+WtmOWCqCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1MzAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODYyIGJ1aWx0aW4vYXBwbHkuYzozOTcwCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBhZGQgY2FjaGUgZW50cnkgZm9yICVzIgogbXNnc3RyICLml6Dms5XkuLogJXMg5re75Yqg57yT5a2Y5p2h55uuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzU2MworIzogYnVpbHRpbi9hcHBseS5jOjM4OTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2xvc2luZyBmaWxlICclcyciCiBtc2dzdHIgIuWFs+mXreaWh+S7tiAnJXMnIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzYxMgorIzogYnVpbHRpbi9hcHBseS5jOjM5NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIGZpbGUgJyVzJyBtb2RlICVvIgogbXNnc3RyICLkuI3og73lhpnmlofku7YgJyVzJyDmnYPpmZAgJW8iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNjY4CisjOiBidWlsdGluL2FwcGx5LmM6NDAzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJBcHBsaWVkIHBhdGNoICVzIGNsZWFubHkuIgogbXNnc3RyICLmiJDlip/lupTnlKjooaXkuIEgJXPjgIIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNjc2CisjOiBidWlsdGluL2FwcGx5LmM6NDAzOQogbXNnaWQgImludGVybmFsIGVycm9yIgogbXNnc3RyICLlhoXpg6jplJnor68iCiAKICMuIFNheSB0aGlzIGV2ZW4gd2l0aG91dCAtLXZlcmJvc2UKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNjc5CisjOiBidWlsdGluL2FwcGx5LmM6NDA0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJBcHBseWluZyBwYXRjaCAlJXMgd2l0aCAlZCByZWplY3QuLi4iCiBtc2dpZF9wbHVyYWwgIkFwcGx5aW5nIHBhdGNoICUlcyB3aXRoICVkIHJlamVjdHMuLi4iCi1tc2dzdHJbMF0gIuW6lOeUqOihpeS4gSAlJXMg5pe2ICVkIOS4quiiq+aLkue7nS4uLiIKLW1zZ3N0clsxXSAi5bqU55So6KGl5LiBICUlcyDml7YgJWQg5Liq6KKr5ouS57udLi4uIgorbXNnc3RyWzBdICLlupTnlKggJSVzIOS4quihpeS4ge+8jOWFtuS4rSAlZCDkuKrooqvmi5Lnu50uLi4iCittc2dzdHJbMV0gIuW6lOeUqCAlJXMg5Liq6KGl5LiB77yM5YW25LitICVkIOS4quiiq+aLkue7nS4uLiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM2ODkKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDUyCiAjLCBjLWZvcm1hdAogbXNnaWQgInRydW5jYXRpbmcgLnJlaiBmaWxlbmFtZSB0byAlLipzLnJlaiIKIG1zZ3N0ciAi5oiq55+tIC5yZWog5paH5Lu25ZCN5Li6ICUuKnMucmVqIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzcxMAorIzogYnVpbHRpbi9hcHBseS5jOjQwNzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiSHVuayAjJWQgYXBwbGllZCBjbGVhbmx5LiIKIG1zZ3N0ciAi56ysICMlZCDkuKrniYfmrrXmiJDlip/lupTnlKjjgIIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNzEzCisjOiBidWlsdGluL2FwcGx5LmM6NDA3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJSZWplY3RlZCBodW5rICMlZC4iCiBtc2dzdHIgIuaLkue7neesrCAjJWQg5Liq54mH5q6144CCIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzg0NAorIzogYnVpbHRpbi9hcHBseS5jOjQyMjYKIG1zZ2lkICJ1bnJlY29nbml6ZWQgaW5wdXQiCiBtc2dzdHIgIuacquiDveivhuWIq+eahOi+k+WFpSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4NTUKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MjM3CiBtc2dpZCAidW5hYmxlIHRvIHJlYWQgaW5kZXggZmlsZSIKIG1zZ3N0ciAi5peg5rOV6K+75Y+W57Si5byV5paH5Lu2IgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk3MCBidWlsdGluL2FwcGx5LmM6Mzk3MworIzogYnVpbHRpbi9hcHBseS5jOjQzNTYgYnVpbHRpbi9hcHBseS5jOjQzNTkgYnVpbHRpbi9jbG9uZS5jOjkyCisjOiBidWlsdGluL2ZldGNoLmM6NjMKIG1zZ2lkICJwYXRoIgogbXNnc3RyICLot6/lvoQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTcxCisjOiBidWlsdGluL2FwcGx5LmM6NDM1NwogbXNnaWQgImRvbid0IGFwcGx5IGNoYW5nZXMgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhdGgiCiBtc2dzdHIgIuS4jeimgeW6lOeUqOS4jue7meWHuui3r+W+hOWQkeWMuemFjeeahOWPmOabtCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5NzQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYwCiBtc2dpZCAiYXBwbHkgY2hhbmdlcyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGF0aCIKIG1zZ3N0ciAi5bqU55So5LiO57uZ5Ye66Lev5b6E5ZCR5Yy56YWN55qE5Y+Y5pu0IgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk3NgorIzogYnVpbHRpbi9hcHBseS5jOjQzNjIKIG1zZ2lkICJudW0iCiBtc2dzdHIgIuaVsOWtlyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5NzcKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYzCiBtc2dpZCAicmVtb3ZlIDxudW0+IGxlYWRpbmcgc2xhc2hlcyBmcm9tIHRyYWRpdGlvbmFsIGRpZmYgcGF0aHMiCi1tc2dzdHIgIuS7juS8oOe7n+eahCBkaWZmIOi3r+W+hOS4reenu+mZpCA85pWw5a2XPiDkuKrliY3lr7zot6/lvoQiCittc2dzdHIgIuS7juS8oOe7n+eahCBkaWZmIOi3r+W+hOS4reenu+mZpOaMh+WumuaVsOmHj+eahOWJjeWvvOaWnOe6vyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5ODAKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzY2CiBtc2dpZCAiaWdub3JlIGFkZGl0aW9ucyBtYWRlIGJ5IHRoZSBwYXRjaCIKIG1zZ3N0ciAi5b+955Wl6KGl5LiB5Lit55qE5re75Yqg55qE5paH5Lu2IgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk4MgorIzogYnVpbHRpbi9hcHBseS5jOjQzNjgKIG1zZ2lkICJpbnN0ZWFkIG9mIGFwcGx5aW5nIHRoZSBwYXRjaCwgb3V0cHV0IGRpZmZzdGF0IGZvciB0aGUgaW5wdXQiCiBtc2dzdHIgIuS4jeW6lOeUqOihpeS4ge+8jOiAjOaYr+aYvuekuui+k+WFpeeahOW3ruW8gue7n+iuoe+8iGRpZmZzdGF077yJIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk4NgotbXNnaWQgInNob3dzIG51bWJlciBvZiBhZGRlZCBhbmQgZGVsZXRlZCBsaW5lcyBpbiBkZWNpbWFsIG5vdGF0aW9uIgotbXNnc3RyICLku6XmlbDlrZfmlrnlvI/mmL7npLrmt7vliqDmiJbliKDpmaTooYznmoTmlbDph48iCisjOiBidWlsdGluL2FwcGx5LmM6NDM3MgorbXNnaWQgInNob3cgbnVtYmVyIG9mIGFkZGVkIGFuZCBkZWxldGVkIGxpbmVzIGluIGRlY2ltYWwgbm90YXRpb24iCittc2dzdHIgIuS7peWNgei/m+WItuaVsOaYvuekuua3u+WKoOWSjOWIoOmZpOeahOihjOaVsCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5ODgKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzc0CiBtc2dpZCAiaW5zdGVhZCBvZiBhcHBseWluZyB0aGUgcGF0Y2gsIG91dHB1dCBhIHN1bW1hcnkgZm9yIHRoZSBpbnB1dCIKIG1zZ3N0ciAi5LiN5bqU55So6KGl5LiB77yM6ICM5piv5pi+56S66L6T5YWl55qE5qaC6KaBIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk5MAorIzogYnVpbHRpbi9hcHBseS5jOjQzNzYKIG1zZ2lkICJpbnN0ZWFkIG9mIGFwcGx5aW5nIHRoZSBwYXRjaCwgc2VlIGlmIHRoZSBwYXRjaCBpcyBhcHBsaWNhYmxlIgogbXNnc3RyICLkuI3lupTnlKjooaXkuIHvvIzogIzmmK/mn6XnnIvooaXkuIHmmK/lkKblj6/lupTnlKgiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTkyCisjOiBidWlsdGluL2FwcGx5LmM6NDM3OAogbXNnaWQgIm1ha2Ugc3VyZSB0aGUgcGF0Y2ggaXMgYXBwbGljYWJsZSB0byB0aGUgY3VycmVudCBpbmRleCIKIG1zZ3N0ciAi56Gu6K6k6KGl5LiB5Y+v5Lul5bqU55So5Yiw5b2T5YmN57Si5byVIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk5NAorIzogYnVpbHRpbi9hcHBseS5jOjQzODAKIG1zZ2lkICJhcHBseSBhIHBhdGNoIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHdvcmtpbmcgdHJlZSIKIG1zZ3N0ciAi5bqU55So6KGl5LiB6ICM5LiN5L+u5pS55bel5L2c5Yy6IgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk5NgorIzogYnVpbHRpbi9hcHBseS5jOjQzODIKIG1zZ2lkICJhbHNvIGFwcGx5IHRoZSBwYXRjaCAodXNlIHdpdGggLS1zdGF0Ly0tc3VtbWFyeS8tLWNoZWNrKSIKLW1zZ3N0ciAi5ZCM5pe25bqU55So5q2k6KGl5LiB77yI5ZKMIC0tc3RhdC8tLXN1bW1hcnkvLS1jaGVjayDlhbHnlKjvvIkiCittc2dzdHIgIui/mOW6lOeUqOatpOihpeS4ge+8iOS4jiAtLXN0YXQvLS1zdW1tYXJ5Ly0tY2hlY2sg6YCJ6aG55ZCM5pe25L2/55So77yJIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk5OAorIzogYnVpbHRpbi9hcHBseS5jOjQzODQKK21zZ2lkICJhdHRlbXB0IHRocmVlLXdheSBtZXJnZSBpZiBhIHBhdGNoIGRvZXMgbm90IGFwcGx5IgorbXNnc3RyICLlpoLmnpzkuIDkuKrooaXkuIHkuI3og73lupTnlKjliJnlsJ3or5XkuInot6/lkIjlubYiCisKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg2CiBtc2dpZCAiYnVpbGQgYSB0ZW1wb3JhcnkgaW5kZXggYmFzZWQgb24gZW1iZWRkZWQgaW5kZXggaW5mb3JtYXRpb24iCiBtc2dzdHIgIuWIm+W7uuS4gOS4quS4tOaXtue0ouW8leWfuuS6juW1jOWFpeeahOe0ouW8leS/oeaBryIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMDAKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg4IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxOTcgYnVpbHRpbi9scy1maWxlcy5jOjQ1NgogbXNnaWQgInBhdGhzIGFyZSBzZXBhcmF0ZWQgd2l0aCBOVUwgY2hhcmFjdGVyIgogbXNnc3RyICLot6/lvoTku6UgTlVMIOWtl+espuWIhumalCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMDMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkxCiBtc2dpZCAiZW5zdXJlIGF0IGxlYXN0IDxuPiBsaW5lcyBvZiBjb250ZXh0IG1hdGNoIgogbXNnc3RyICLnoa7kv53oh7PlsJHljLnphY0gPG4+IOihjOS4iuS4i+aWhyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMDQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkyCiBtc2dpZCAiYWN0aW9uIgogbXNnc3RyICLliqjkvZwiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDA1CisjOiBidWlsdGluL2FwcGx5LmM6NDM5MwogbXNnaWQgImRldGVjdCBuZXcgb3IgbW9kaWZpZWQgbGluZXMgdGhhdCBoYXZlIHdoaXRlc3BhY2UgZXJyb3JzIgogbXNnc3RyICLmo4Dmn6XmlrDlop7lkozkv67mlLnnmoTooYzkuK3pl7TnmoTnqbrnmb3lrZfnrKbmu6XnlKgiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDA4IGJ1aWx0aW4vYXBwbHkuYzo0MDExCisjOiBidWlsdGluL2FwcGx5LmM6NDM5NiBidWlsdGluL2FwcGx5LmM6NDM5OQogbXNnaWQgImlnbm9yZSBjaGFuZ2VzIGluIHdoaXRlc3BhY2Ugd2hlbiBmaW5kaW5nIGNvbnRleHQiCiBtc2dzdHIgIuafpeaJvuS4iuS4i+aWh+aXtuW/veeVpeepuueZveWtl+espueahOWPmOabtCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMTQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDAyCiBtc2dpZCAiYXBwbHkgdGhlIHBhdGNoIGluIHJldmVyc2UiCiBtc2dzdHIgIuWPjeWQkeW6lOeUqOihpeS4gSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMTYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDA0CiBtc2dpZCAiZG9uJ3QgZXhwZWN0IGF0IGxlYXN0IG9uZSBsaW5lIG9mIGNvbnRleHQiCiBtc2dzdHIgIuaXoOmcgOiHs+WwkeS4gOihjOS4iuS4i+aWhyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMTgKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDA2CiBtc2dpZCAibGVhdmUgdGhlIHJlamVjdGVkIGh1bmtzIGluIGNvcnJlc3BvbmRpbmcgKi5yZWogZmlsZXMiCiBtc2dzdHIgIuWwhuaLkue7neeahOihpeS4geeJh+auteS/neWtmOWcqOWvueW6lOeahCAqLnJlaiDmlofku7bkuK0iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDIwCisjOiBidWlsdGluL2FwcGx5LmM6NDQwOAogbXNnaWQgImFsbG93IG92ZXJsYXBwaW5nIGh1bmtzIgogbXNnc3RyICLlhYHorrjph43lj6DnmoTooaXkuIHniYfmrrUiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDIxCi1tc2dpZCAiYmUgdmVyYm9zZSIKLW1zZ3N0ciAi5YaX6ZW/6L6T5Ye6IgotCi0jOiBidWlsdGluL2FwcGx5LmM6NDAyMworIzogYnVpbHRpbi9hcHBseS5jOjQ0MTEKIG1zZ2lkICJ0b2xlcmF0ZSBpbmNvcnJlY3RseSBkZXRlY3RlZCBtaXNzaW5nIG5ldy1saW5lIGF0IHRoZSBlbmQgb2YgZmlsZSIKLW1zZ3N0ciAi5a695a655LiN5q2j56Gu55qE5paH5Lu25pyr5bC+5o2i6KGM56ymIgorbXNnc3RyICLlhYHorrjkuI3mraPnoa7nmoTmlofku7bmnKvlsL7mjaLooYznrKYiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDI2CisjOiBidWlsdGluL2FwcGx5LmM6NDQxNAogbXNnaWQgImRvIG5vdCB0cnVzdCB0aGUgbGluZSBjb3VudHMgaW4gdGhlIGh1bmsgaGVhZGVycyIKIG1zZ3N0ciAi5LiN5L+h5Lu76KGl5LiB54mH5q6155qE5aS05L+h5oGv5Lit55qE6KGM5Y+3IgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAyOAorIzogYnVpbHRpbi9hcHBseS5jOjQ0MTYKIG1zZ2lkICJyb290IgogbXNnc3RyICLmoLnnm67lvZUiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDI5CisjOiBidWlsdGluL2FwcGx5LmM6NDQxNwogbXNnaWQgInByZXBlbmQgPHJvb3Q+IHRvIGFsbCBmaWxlbmFtZXMiCiBtc2dzdHIgIuS4uuaJgOacieaWh+S7tuWQjeWJjea3u+WKoCA85qC555uu5b2VPiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwNTAKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDM5Cittc2dpZCAiLS0zd2F5IG91dHNpZGUgYSByZXBvc2l0b3J5IgorbXNnc3RyICItLTN3YXkg5Zyo5LiA5Liq54mI5pys5bqT5LmL5aSWIgorCisjOiBidWlsdGluL2FwcGx5LmM6NDQ0NwogbXNnaWQgIi0taW5kZXggb3V0c2lkZSBhIHJlcG9zaXRvcnkiCiBtc2dzdHIgIi0taW5kZXgg5Zyo5LiA5Liq54mI5pys5bqT5LmL5aSWIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDA1MworIzogYnVpbHRpbi9hcHBseS5jOjQ0NTAKIG1zZ2lkICItLWNhY2hlZCBvdXRzaWRlIGEgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiLS1jYWNoZWQg5Zyo5LiA5Liq54mI5pys5bqT5LmL5aSWIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDA2OQorIzogYnVpbHRpbi9hcHBseS5jOjQ0NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2FuJ3Qgb3BlbiBwYXRjaCAnJXMnIgogbXNnc3RyICLkuI3og73miZPlvIDooaXkuIEgJyVzJyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwODMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDgwCiAjLCBjLWZvcm1hdAogbXNnaWQgInNxdWVsY2hlZCAlZCB3aGl0ZXNwYWNlIGVycm9yIgogbXNnaWRfcGx1cmFsICJzcXVlbGNoZWQgJWQgd2hpdGVzcGFjZSBlcnJvcnMiCiBtc2dzdHJbMF0gIuaKkeWItuS4i+S7jeaciSAlZCDkuKrnqbrnmb3lrZfnrKbor6/nlKgiCiBtc2dzdHJbMV0gIuaKkeWItuS4i+S7jeaciSAlZCDkuKrnqbrnmb3lrZfnrKbor6/nlKgiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDg5IGJ1aWx0aW4vYXBwbHkuYzo0MDk5CisjOiBidWlsdGluL2FwcGx5LmM6NDQ4NiBidWlsdGluL2FwcGx5LmM6NDQ5NgogIywgYy1mb3JtYXQKIG1zZ2lkICIlZCBsaW5lIGFkZHMgd2hpdGVzcGFjZSBlcnJvcnMuIgogbXNnaWRfcGx1cmFsICIlZCBsaW5lcyBhZGQgd2hpdGVzcGFjZSBlcnJvcnMuIgpAQCAtMTUwNCw3ICsyMzM3LDcgQEAKIAogIzogYnVpbHRpbi9hcmNoaXZlLmM6MjAKIG1zZ2lkICJjb3VsZCBub3QgcmVkaXJlY3Qgb3V0cHV0IgotbXNnc3RyICLkuI3og73ovpPlh7rph43lrprlkJEiCittc2dzdHIgIuS4jeiDvemHjeWumuWQkei+k+WHuiIKIAogIzogYnVpbHRpbi9hcmNoaXZlLmM6MzcKIG1zZ2lkICJnaXQgYXJjaGl2ZTogUmVtb3RlIHdpdGggbm8gVVJMIgpAQCAtMTUxMiwyOCArMjM0NSwxNTYgQEAKIAogIzogYnVpbHRpbi9hcmNoaXZlLmM6NTgKIG1zZ2lkICJnaXQgYXJjaGl2ZTogZXhwZWN0ZWQgQUNLL05BSywgZ290IEVPRiIKLW1zZ3N0ciAiZ2l0IGFyY2hpdmXvvJrmnJ/lvoVBQ0svTkFDS++8jOWNtOW+l+WIsEVPRiIKK21zZ3N0ciAiZ2l0IGFyY2hpdmXvvJrlupTkuLpBQ0svTkFDS++8jOWNtOW+l+WIsEVPRiIKIAotIzogYnVpbHRpbi9hcmNoaXZlLmM6NjMKKyM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjYxCiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCBhcmNoaXZlOiBOQUNLICVzIgogbXNnc3RyICJnaXQgYXJjaGl2Ze+8mk5BQ0sgJXMiCiAKLSM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjY1CisjOiBidWlsdGluL2FyY2hpdmUuYzo2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZW1vdGUgZXJyb3I6ICVzIgogbXNnc3RyICLov5znqIvplJnor6/vvJolcyIKIAotIzogYnVpbHRpbi9hcmNoaXZlLmM6NjYKKyM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjY0CiBtc2dpZCAiZ2l0IGFyY2hpdmU6IHByb3RvY29sIGVycm9yIgogbXNnc3RyICJnaXQgYXJjaGl2Ze+8muWNj+iurumUmeivryIKIAotIzogYnVpbHRpbi9hcmNoaXZlLmM6NzEKKyM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjY4CiBtc2dpZCAiZ2l0IGFyY2hpdmU6IGV4cGVjdGVkIGEgZmx1c2giCi1tc2dzdHIgImdpdCBhcmNoaXZl77ya6aKE5pyf5LiA5Liq5Yi35pawIgorbXNnc3RyICJnaXQgYXJjaGl2Ze+8muW6lOS4uuWIt+aWsCIKKworIzogYnVpbHRpbi9iaXNlY3QtLWhlbHBlci5jOjcKK21zZ2lkICJnaXQgYmlzZWN0LS1oZWxwZXIgLS1uZXh0LWFsbCBbLS1uby1jaGVja291dF0iCittc2dzdHIgImdpdCBiaXNlY3QtLWhlbHBlciAtLW5leHQtYWxsIFstLW5vLWNoZWNrb3V0XSIKKworIzogYnVpbHRpbi9iaXNlY3QtLWhlbHBlci5jOjE3Cittc2dpZCAicGVyZm9ybSAnZ2l0IGJpc2VjdCBuZXh0JyIKK21zZ3N0ciAi5omn6KGMICdnaXQgYmlzZWN0IG5leHQnIgorCisjOiBidWlsdGluL2Jpc2VjdC0taGVscGVyLmM6MTkKK21zZ2lkICJ1cGRhdGUgQklTRUNUX0hFQUQgaW5zdGVhZCBvZiBjaGVja2luZyBvdXQgdGhlIGN1cnJlbnQgY29tbWl0IgorbXNnc3RyICLmm7TmlrAgQklTRUNUX0hFQUQg6ICM6Z2e5qOA5Ye65b2T5YmN5o+Q5LqkIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjUKK21zZ2lkICJnaXQgYmxhbWUgW29wdGlvbnNdIFtyZXYtb3B0c10gW3Jldl0gWy0tXSBmaWxlIgorbXNnc3RyICJnaXQgYmxhbWUgW+mAiemhuV0gW+eJiOacrOmAiemhuV0gW+eJiOacrF0gWy0tXSDmlofku7YiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzozMAorbXNnaWQgIltyZXYtb3B0c10gYXJlIGRvY3VtZW50ZWQgaW4gZ2l0LXJldi1saXN0KDEpIgorbXNnc3RyICJb54mI5pys6YCJ6aG5XSDnmoTmlofmoaPorrDlvZXlnKggZ2l0LXJldi1saXN0KDEpIOS4rSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTUKK21zZ2lkICJTaG93IGJsYW1lIGVudHJpZXMgYXMgd2UgZmluZCB0aGVtLCBpbmNyZW1lbnRhbGx5IgorbXNnc3RyICLlop7ph4/lvI/lnLDmmL7npLrlj5HnjrDnmoQgYmxhbWUg5p2h55uuIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM1NgorbXNnaWQgIlNob3cgYmxhbmsgU0hBLTEgZm9yIGJvdW5kYXJ5IGNvbW1pdHMgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIui+ueeVjOaPkOS6pOaYvuekuuepuueahCBTSEEtMe+8iOm7mOiupO+8muWFs+mXre+8iSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTcKK21zZ2lkICJEbyBub3QgdHJlYXQgcm9vdCBjb21taXRzIGFzIGJvdW5kYXJpZXMgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIuS4jeaKiuagueaPkOS6pOS9nOS4uui+ueeVjO+8iOm7mOiupO+8muWFs+mXre+8iSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTgKK21zZ2lkICJTaG93IHdvcmsgY29zdCBzdGF0aXN0aWNzIgorbXNnc3RyICLmmL7npLrlkb3ku6TmtojogJfnu5/orqEiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU5Cittc2dpZCAiU2hvdyBvdXRwdXQgc2NvcmUgZm9yIGJsYW1lIGVudHJpZXMiCittc2dzdHIgIuaYvuekuuWIpOaWrSBibGFtZSDmnaHnm67kvY3np7vnmoTlvpfliIbor4rmlq3kv6Hmga8iCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYwCittc2dpZCAiU2hvdyBvcmlnaW5hbCBmaWxlbmFtZSAoRGVmYXVsdDogYXV0bykiCittc2dzdHIgIuaYvuekuuWOn+Wni+aWh+S7tuWQje+8iOm7mOiupO+8muiHquWKqO+8iSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjEKK21zZ2lkICJTaG93IG9yaWdpbmFsIGxpbmVudW1iZXIgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIuaYvuekuuWOn+Wni+eahOihjOWPt++8iOm7mOiupO+8muWFs+mXre+8iSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjIKK21zZ2lkICJTaG93IGluIGEgZm9ybWF0IGRlc2lnbmVkIGZvciBtYWNoaW5lIGNvbnN1bXB0aW9uIgorbXNnc3RyICLmmL7npLrkuLrkuIDkuKrpgILlkIjmnLrlmajor7vlj5bnmoTmoLzlvI8iCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYzCittc2dpZCAiU2hvdyBwb3JjZWxhaW4gZm9ybWF0IHdpdGggcGVyLWxpbmUgY29tbWl0IGluZm9ybWF0aW9uIgorbXNnc3RyICLkuLrmr4/kuIDooYzmmL7npLrmnLrlmajpgILnlKjnmoTmj5DkuqTkv6Hmga8iCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY0Cittc2dpZCAiVXNlIHRoZSBzYW1lIG91dHB1dCBtb2RlIGFzIGdpdC1hbm5vdGF0ZSAoRGVmYXVsdDogb2ZmKSIKK21zZ3N0ciAi5L2/55So5ZKMIGdpdC1hbm5vdGF0ZSDnm7jlkIznmoTovpPlh7rmqKHlvI/vvIjpu5jorqTvvJrlhbPpl63vvIkiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY1Cittc2dpZCAiU2hvdyByYXcgdGltZXN0YW1wIChEZWZhdWx0OiBvZmYpIgorbXNnc3RyICLmmL7npLrljp/lp4vml7bpl7TmiLPvvIjpu5jorqTvvJrlhbPpl63vvIkiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY2Cittc2dpZCAiU2hvdyBsb25nIGNvbW1pdCBTSEExIChEZWZhdWx0OiBvZmYpIgorbXNnc3RyICLmmL7npLrplb/nmoRTSEEx5o+Q5Lqk5Y+377yI6buY6K6k77ya5YWz6Zet77yJIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM2NworbXNnaWQgIlN1cHByZXNzIGF1dGhvciBuYW1lIGFuZCB0aW1lc3RhbXAgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIumakOiXj+S9nOiAheWQjeWtl+WSjOaXtumXtOaIs++8iOm7mOiupO+8muWFs+mXre+8iSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjgKK21zZ2lkICJTaG93IGF1dGhvciBlbWFpbCBpbnN0ZWFkIG9mIG5hbWUgKERlZmF1bHQ6IG9mZikiCittc2dzdHIgIuaYvuekuuS9nOiAheeahOmCrueuseiAjOS4jeaYr+WQjeWtl++8iOm7mOiupO+8muWFs+mXre+8iSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjkKK21zZ2lkICJJZ25vcmUgd2hpdGVzcGFjZSBkaWZmZXJlbmNlcyIKK21zZ3N0ciAi5b+955Wl56m655m95beu5byCIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MAorbXNnaWQgIlNwZW5kIGV4dHJhIGN5Y2xlcyB0byBmaW5kIGJldHRlciBtYXRjaCIKK21zZ3N0ciAi6Iqx6LS56aKd5aSW55qE5b6q546v5p2l5om+5Yiw5pu05aW955qE5Yy56YWNIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MQorbXNnaWQgIlVzZSByZXZpc2lvbnMgZnJvbSA8ZmlsZT4gaW5zdGVhZCBvZiBjYWxsaW5nIGdpdC1yZXYtbGlzdCIKK21zZ3N0ciAi5L2/55So5p2l6IeqIDxmaWxlPiDnmoTkv67orqLpm4bogIzkuI3mmK/osIPnlKggZ2l0LXJldi1saXN0IgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MgorbXNnaWQgIlVzZSA8ZmlsZT4ncyBjb250ZW50cyBhcyB0aGUgZmluYWwgaW1hZ2UiCittc2dzdHIgIuS9v+eUqCA8ZmlsZT4g55qE5YaF5a655L2c5Li65pyA57uI55qE5Zu+54mHIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MyBidWlsdGluL2JsYW1lLmM6MjM3NAorbXNnaWQgInNjb3JlIgorbXNnc3RyICLlvpfliIYiCisKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzczCittc2dpZCAiRmluZCBsaW5lIGNvcGllcyB3aXRoaW4gYW5kIGFjcm9zcyBmaWxlcyIKK21zZ3N0ciAi5om+5Yiw5paH5Lu25YaF5Y+K6Leo5paH5Lu255qE6KGM5ou36LSdIgorCisjOiBidWlsdGluL2JsYW1lLmM6MjM3NAorbXNnaWQgIkZpbmQgbGluZSBtb3ZlbWVudHMgd2l0aGluIGFuZCBhY3Jvc3MgZmlsZXMiCittc2dzdHIgIuaJvuWIsOaWh+S7tuWGheWPiui3qOaWh+S7tueahOihjOenu+WKqCIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNzUKK21zZ2lkICJuLG0iCittc2dzdHIgIm4sbSIKKworIzogYnVpbHRpbi9ibGFtZS5jOjIzNzUKK21zZ2lkICJQcm9jZXNzIG9ubHkgbGluZSByYW5nZSBuLG0sIGNvdW50aW5nIGZyb20gMSIKK21zZ3N0ciAi5Y+q5aSE55CG6KGM6IyD5Zu05ZyoIG4g5ZKMIG0g5LmL6Ze055qE77yM5LuOIDEg5byA5aeLIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI0Cittc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1yIHwgLWFdIFstLW1lcmdlZCB8IC0tbm8tbWVyZ2VkXSIKK21zZ3N0ciAiZ2l0IGJyYW5jaCBb6YCJ6aG5XSBbLXIgfCAtYV0gWy0tbWVyZ2VkIHwgLS1uby1tZXJnZWRdIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI1Cittc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1sXSBbLWZdIDxicmFuY2huYW1lPiBbPHN0YXJ0LXBvaW50Pl0iCittc2dzdHIgImdpdCBicmFuY2ggW+mAiemhuV0gWy1sXSBbLWZdIDzliIbmlK/lkI0+IFs86LW35aeL54K5Pl0iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjYKK21zZ2lkICJnaXQgYnJhbmNoIFtvcHRpb25zXSBbLXJdICgtZCB8IC1EKSA8YnJhbmNobmFtZT4uLi4iCittc2dzdHIgImdpdCBicmFuY2ggW+mAiemhuV0gWy1yXSAoLWQgfCAtRCkgPOWIhuaUr+WQjT4uLi4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjcKK21zZ2lkICJnaXQgYnJhbmNoIFtvcHRpb25zXSAoLW0gfCAtTSkgWzxvbGRicmFuY2g+XSA8bmV3YnJhbmNoPiIKK21zZ3N0ciAiZ2l0IGJyYW5jaCBb6YCJ6aG5XSAoLW0gfCAtTSkgWzzml6fliIbmlK8+XSA85paw5YiG5pSvPiIKIAogIyAg6K+R6ICF77ya5L+d5oyB5Y6f5o2i6KGM5qC85byP77yM5Zyo6L6T5Ye65pe2ICVzIOeahOabv+S7o+WGheWuueS8muiuqeWtl+espuS4suWPmOmVvwotIzogYnVpbHRpbi9icmFuY2guYzoxNDQKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTUwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJkZWxldGluZyBicmFuY2ggJyVzJyB0aGF0IGhhcyBiZWVuIG1lcmdlZCB0b1xuIgpAQCAtMTU0Myw3ICsyNTA0LDcgQEAKICIgICAgICAgICAnJXMn77yM5L2G5pyq5ZCI5bm25YiwIEhFQUTjgIIiCiAKICMgIOivkeiAhe+8muS/neaMgeWOn+aNouihjOagvOW8j++8jOWcqOi+k+WHuuaXtiAlcyDnmoTmm7/ku6PlhoXlrrnkvJrorqnlrZfnrKbkuLLlj5jplb8KLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MTQ4CisjOiBidWlsdGluL2JyYW5jaC5jOjE1NAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibm90IGRlbGV0aW5nIGJyYW5jaCAnJXMnIHRoYXQgaXMgbm90IHlldCBtZXJnZWQgdG9cbiIKQEAgLTE1NTIsMzUgKzI1MTMsMTIgQEAKICLlubbmnKrliKDpmaTliIbmlK8gJyVzJ++8jCDomb3nhLblroPlt7Lnu4/lkIjlubbliLAgSEVBRO+8jFxuIgogIiAgICAgICAgIOeEtuiAjOWNtOWwmuacquiiq+WQiOW5tuWIsOWIhuaUryAnJXMnIOOAgiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoxODAKLW1zZ2lkICJjYW5ub3QgdXNlIC1hIHdpdGggLWQiCi1tc2dzdHIgIuS4jeiDveWwhiAtYSDlkowgLWQg5YWx55SoIgotCi0jOiBidWlsdGluL2JyYW5jaC5jOjE4NgotbXNnaWQgIkNvdWxkbid0IGxvb2sgdXAgY29tbWl0IG9iamVjdCBmb3IgSEVBRCIKLW1zZ3N0ciAi5peg5rOV5p+l6K+iIEhFQUQg5oyH5ZCR55qE5o+Q5Lqk5a+56LGhIgotCi0jOiBidWlsdGluL2JyYW5jaC5jOjE5MQotIywgYy1mb3JtYXQKLW1zZ2lkICJDYW5ub3QgZGVsZXRlIHRoZSBicmFuY2ggJyVzJyB3aGljaCB5b3UgYXJlIGN1cnJlbnRseSBvbi4iCi1tc2dzdHIgIuaXoOazleWIoOmZpOaCqOW9k+WJjeaJgOWcqOeahOWIhuaUryAnJXMn44CCIgotCi0jOiBidWlsdGluL2JyYW5jaC5jOjIwMgotIywgYy1mb3JtYXQKLW1zZ2lkICJyZW1vdGUgYnJhbmNoICclcycgbm90IGZvdW5kLiIKLW1zZ3N0ciAi6L+c56iL5YiG5pSvICclcycg5pyq5Y+R546w44CCIgotCi0jOiBidWlsdGluL2JyYW5jaC5jOjIwMwotIywgYy1mb3JtYXQKLW1zZ2lkICJicmFuY2ggJyVzJyBub3QgZm91bmQuIgotbXNnc3RyICLliIbmlK8gJyVzJyDmnKrlj5HnjrDjgIIiCi0KLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjEwCisjOiBidWlsdGluL2JyYW5jaC5jOjE2OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZG4ndCBsb29rIHVwIGNvbW1pdCBvYmplY3QgZm9yICclcyciCiBtc2dzdHIgIuaXoOazleafpeivoiAnJXMnIOaMh+WQkeeahOaPkOS6pOWvueixoSIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyMTYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgYnJhbmNoICclcycgaXMgbm90IGZ1bGx5IG1lcmdlZC5cbiIKQEAgLTE1ODksMTI2ICsyNTI3LDM1NSBAQAogIuWIhuaUryAnJXMnIOayoeacieWujOWFqOWQiOW5tuOAglxuIgogIuWmguaenOaCqOehruiupOimgeWIoOmZpOWug++8jOaJp+ihjCAnZ2l0IGJyYW5jaCAtRCAlcyfjgIIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjI1CisjOiBidWlsdGluL2JyYW5jaC5jOjE4NQorbXNnaWQgIlVwZGF0ZSBvZiBjb25maWctZmlsZSBmYWlsZWQiCittc2dzdHIgIuaXoOazleabtOaWsCBjb25maWcg5paH5Lu2IgorCisjOiBidWlsdGluL2JyYW5jaC5jOjIxMworbXNnaWQgImNhbm5vdCB1c2UgLWEgd2l0aCAtZCIKK21zZ3N0ciAi5LiN6IO95bCGIC1hIOWSjCAtZCDlkIzml7bkvb/nlKgiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjE5Cittc2dpZCAiQ291bGRuJ3QgbG9vayB1cCBjb21taXQgb2JqZWN0IGZvciBIRUFEIgorbXNnc3RyICLml6Dms5Xmn6Xor6IgSEVBRCDmjIflkJHnmoTmj5DkuqTlr7nosaEiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjI3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBkZWxldGUgdGhlIGJyYW5jaCAnJXMnIHdoaWNoIHlvdSBhcmUgY3VycmVudGx5IG9uLiIKK21zZ3N0ciAi5peg5rOV5Yig6Zmk5oKo5b2T5YmN5omA5Zyo55qE5YiG5pSvICclcyfjgIIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjQwCisjLCBjLWZvcm1hdAorbXNnaWQgInJlbW90ZSBicmFuY2ggJyVzJyBub3QgZm91bmQuIgorbXNnc3RyICLov5znqIvliIbmlK8gJyVzJyDmnKrlj5HnjrDjgIIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjQxCisjLCBjLWZvcm1hdAorbXNnaWQgImJyYW5jaCAnJXMnIG5vdCBmb3VuZC4iCittc2dzdHIgIuWIhuaUryAnJXMnIOacquWPkeeOsOOAgiIKKworIzogYnVpbHRpbi9icmFuY2guYzoyNTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3IgZGVsZXRpbmcgcmVtb3RlIGJyYW5jaCAnJXMnIgogbXNnc3RyICLliKDpmaTov5znqIvliIbmlK8gJyVzJyDml7blh7rplJkiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjI2CisjOiBidWlsdGluL2JyYW5jaC5jOjI1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvciBkZWxldGluZyBicmFuY2ggJyVzJyIKIG1zZ3N0ciAi5Yig6Zmk5YiG5pSvICclcycg5pe25Ye66ZSZIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIzMworIzogYnVpbHRpbi9icmFuY2guYzoyNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiRGVsZXRlZCByZW1vdGUgYnJhbmNoICVzICh3YXMgJXMpLlxuIgogbXNnc3RyICLlt7LliKDpmaTov5znqIvliIbmlK8gJXPvvIjmm77kuLogJXPvvInjgIJcbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyMzQKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkRlbGV0ZWQgYnJhbmNoICVzICh3YXMgJXMpLlxuIgogbXNnc3RyICLlt7LliKDpmaTliIbmlK8gJXPvvIjmm77kuLogJXPvvInjgIJcbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyMzkKLW1zZ2lkICJVcGRhdGUgb2YgY29uZmlnLWZpbGUgZmFpbGVkIgotbXNnc3RyICLml6Dms5Xmm7TmlrAgY29uZmlnIOaWh+S7tiIKLQotIzogYnVpbHRpbi9icmFuY2guYzozMzcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MzY2CiAjLCBjLWZvcm1hdAogbXNnaWQgImJyYW5jaCAnJXMnIGRvZXMgbm90IHBvaW50IGF0IGEgY29tbWl0IgogbXNnc3RyICLliIbmlK8gJyVzJyDmnKrmjIflkJHkuIDkuKrmj5DkuqQiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NDA5CisjOiBidWlsdGluL2JyYW5jaC5jOjQ1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJbJXM6IGJlaGluZCAlZF0iCiBtc2dzdHIgIlslc++8muiQveWQjiAlZF0iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NDExCisjOiBidWlsdGluL2JyYW5jaC5jOjQ1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJbYmVoaW5kICVkXSIKIG1zZ3N0ciAiW+iQveWQjiAlZF0iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NDE1CisjOiBidWlsdGluL2JyYW5jaC5jOjQ1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJbJXM6IGFoZWFkICVkXSIKIG1zZ3N0ciAiWyVz77ya6aKG5YWIICVkXSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0MTcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDYxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlthaGVhZCAlZF0iCiBtc2dzdHIgIlvpooblhYggJWRdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQyMAorIzogYnVpbHRpbi9icmFuY2guYzo0NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiWyVzOiBhaGVhZCAlZCwgYmVoaW5kICVkXSIKIG1zZ3N0ciAiWyVz77ya6aKG5YWIICVk77yM6JC95ZCOICVkXSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0MjMKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDY3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlthaGVhZCAlZCwgYmVoaW5kICVkXSIKIG1zZ3N0ciAiW+mihuWFiCAlZO+8jOiQveWQjiAlZF0iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NTM1CisjOiBidWlsdGluL2JyYW5jaC5jOjQ5MAorbXNnaWQgIiAqKioqIGludmFsaWQgcmVmICoqKioiCittc2dzdHIgIiAqKioqIOaXoOaViOW8leeUqCAqKioqIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjU4MgorIywgYy1mb3JtYXQKK21zZ2lkICIobm8gYnJhbmNoLCByZWJhc2luZyAlcykiCittc2dzdHIgIu+8iOmdnuWIhuaUr++8jOato+WPmOWfuiAlc++8iSIKKworIzogYnVpbHRpbi9icmFuY2guYzo1ODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiKG5vIGJyYW5jaCwgYmlzZWN0IHN0YXJ0ZWQgb24gJXMpIgorbXNnc3RyICLvvIjpnZ7liIbmlK/vvIzkuozliIbmn6Xmib7lvIDlp4vkuo4gJXPvvIkiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIihkZXRhY2hlZCBmcm9tICVzKSIKK21zZ3N0ciAi77yI5YiG56a76IeqICVz77yJIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjU5MQogbXNnaWQgIihubyBicmFuY2gpIgogbXNnc3RyICLvvIjpnZ7liIbmlK/vvIkiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjAwCisjOiBidWlsdGluL2JyYW5jaC5jOjYzNworIywgYy1mb3JtYXQKK21zZ2lkICJvYmplY3QgJyVzJyBkb2VzIG5vdCBwb2ludCB0byBhIGNvbW1pdCIKK21zZ3N0ciAi5a+56LGhICclcycg5rKh5pyJ5oyH5ZCR5LiA5Liq5o+Q5LqkIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjY2OQogbXNnaWQgInNvbWUgcmVmcyBjb3VsZCBub3QgYmUgcmVhZCIKIG1zZ3N0ciAi5LiA5Lqb5byV55So5LiN6IO96K+75Y+WIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjYxMworIzogYnVpbHRpbi9icmFuY2guYzo2ODIKIG1zZ2lkICJjYW5ub3QgcmVuYW1lIHRoZSBjdXJyZW50IGJyYW5jaCB3aGlsZSBub3Qgb24gYW55LiIKIG1zZ3N0ciAi5peg5rOV6YeN5ZG95ZCN5b2T5YmN5YiG5pSv5Zug5Li65LiN5aSE5LqO5Lu75L2V5YiG5pSv5LiK44CCIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjYyMworIzogYnVpbHRpbi9icmFuY2guYzo2OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBicmFuY2ggbmFtZTogJyVzJyIKIG1zZ3N0ciAi5peg5pWI55qE5YiG5pSv5ZCN77yaJyVzJyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2MzgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzA3CiBtc2dpZCAiQnJhbmNoIHJlbmFtZSBmYWlsZWQiCiBtc2dzdHIgIuWIhuaUr+mHjeWRveWQjeWksei0pSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NDIKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzExCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbmFtZWQgYSBtaXNuYW1lZCBicmFuY2ggJyVzJyBhd2F5IgogbXNnc3RyICLph43lkb3lkI3mjonkuIDkuKrplJnor6/lkb3lkI3nmoTml6fliIbmlK8gJyVzJyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NDYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzE1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJyYW5jaCByZW5hbWVkIHRvICVzLCBidXQgSEVBRCBpcyBub3QgdXBkYXRlZCEiCiBtc2dzdHIgIuWIhuaUr+mHjeWRveWQjeS4uiAlc++8jOS9hiBIRUFEIOayoeacieabtOaWsO+8gSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NTMKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzIyCiBtc2dpZCAiQnJhbmNoIGlzIHJlbmFtZWQsIGJ1dCB1cGRhdGUgb2YgY29uZmlnLWZpbGUgZmFpbGVkIgogbXNnc3RyICLliIbmlK/ooqvph43lkb3lkI3vvIzkvYbmm7TmlrAgY29uZmlnIOaWh+S7tuWksei0pSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NjgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzM3CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1hbGZvcm1lZCBvYmplY3QgbmFtZSAlcyIKIG1zZ3N0ciAi6Z2e5rOV55qE5a+56LGh5ZCNICVzIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjY5MgorIzogYnVpbHRpbi9icmFuY2guYzo3NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHdyaXRlIGJyYW5jaCBkZXNjcmlwdGlvbiB0ZW1wbGF0ZTogJXMiCiBtc2dzdHIgIuS4jeiDveWGmeWIhuaUr+aPj+i/sOaooeeJiO+8miVzIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc4MworIzogYnVpbHRpbi9icmFuY2guYzo3OTEKK21zZ2lkICJHZW5lcmljIG9wdGlvbnMiCittc2dzdHIgIumAmueUqOmAiemhuSIKKworIzogYnVpbHRpbi9icmFuY2guYzo3OTMKK21zZ2lkICJzaG93IGhhc2ggYW5kIHN1YmplY3QsIGdpdmUgdHdpY2UgZm9yIHVwc3RyZWFtIGJyYW5jaCIKK21zZ3N0ciAi5pi+56S65ZOI5biM5YC85ZKM5Li76aKY77yM6Iul5Y+C5pWw5Ye6546w5Lik5qyh5YiZ5pi+56S65LiK5ri45YiG5pSvIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjc5NAorbXNnaWQgInN1cHByZXNzIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMiCittc2dzdHIgIuS4jeaYvuekuuS/oeaBryIKKworIzogYnVpbHRpbi9icmFuY2guYzo3OTUKK21zZ2lkICJzZXQgdXAgdHJhY2tpbmcgbW9kZSAoc2VlIGdpdC1wdWxsKDEpKSIKK21zZ3N0ciAi6K6+572u6Lef6Liq5qih5byP77yI5Y+C6KeBIGdpdC1wdWxsKDEp77yJIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjc5NworbXNnaWQgImNoYW5nZSB1cHN0cmVhbSBpbmZvIgorbXNnc3RyICLmlLnlj5jkuIrmuLjkv6Hmga8iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODAxCittc2dpZCAidXNlIGNvbG9yZWQgb3V0cHV0IgorbXNnc3RyICLkvb/nlKjlvanoibLovpPlh7oiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODAyCittc2dpZCAiYWN0IG9uIHJlbW90ZS10cmFja2luZyBicmFuY2hlcyIKK21zZ3N0ciAi5L2c55So5LqO6L+c56iL6Lef6Liq5YiG5pSvIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgwNSBidWlsdGluL2JyYW5jaC5jOjgxMSBidWlsdGluL2JyYW5jaC5jOjgzMgorIzogYnVpbHRpbi9icmFuY2guYzo4MzggYnVpbHRpbi9jb21taXQuYzoxMzY4IGJ1aWx0aW4vY29tbWl0LmM6MTM2OQorIzogYnVpbHRpbi9jb21taXQuYzoxMzcwIGJ1aWx0aW4vY29tbWl0LmM6MTM3MSBidWlsdGluL3RhZy5jOjQ2OAorbXNnaWQgImNvbW1pdCIKK21zZ3N0ciAi5o+Q5LqkIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgwNiBidWlsdGluL2JyYW5jaC5jOjgxMgorbXNnaWQgInByaW50IG9ubHkgYnJhbmNoZXMgdGhhdCBjb250YWluIHRoZSBjb21taXQiCittc2dzdHIgIuWPquaJk+WNsOWMheWQq+ivpeaPkOS6pOeahOWIhuaUryIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MTgKK21zZ2lkICJTcGVjaWZpYyBnaXQtYnJhbmNoIGFjdGlvbnM6IgorbXNnc3RyICLlhbfkvZPnmoQgZ2l0LWJyYW5jaCDliqjkvZzvvJoiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODE5Cittc2dpZCAibGlzdCBib3RoIHJlbW90ZS10cmFja2luZyBhbmQgbG9jYWwgYnJhbmNoZXMiCittc2dzdHIgIuWIl+WHuui/nOeoi+i3n+i4quWPiuacrOWcsOWIhuaUryIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MjEKK21zZ2lkICJkZWxldGUgZnVsbHkgbWVyZ2VkIGJyYW5jaCIKK21zZ3N0ciAi5Yig6Zmk5a6M5YWo5ZCI5bm255qE5YiG5pSvIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgyMgorbXNnaWQgImRlbGV0ZSBicmFuY2ggKGV2ZW4gaWYgbm90IG1lcmdlZCkiCittc2dzdHIgIuWIoOmZpOWIhuaUr++8iOWNs+S9v+ayoeacieWQiOW5tu+8iSIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MjMKK21zZ2lkICJtb3ZlL3JlbmFtZSBhIGJyYW5jaCBhbmQgaXRzIHJlZmxvZyIKK21zZ3N0ciAi56e75YqoL+mHjeWRveWQjeS4gOS4quWIhuaUr++8jOS7peWPiuWug+eahOW8leeUqOaXpeW/lyIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MjQKK21zZ2lkICJtb3ZlL3JlbmFtZSBhIGJyYW5jaCwgZXZlbiBpZiB0YXJnZXQgZXhpc3RzIgorbXNnc3RyICLnp7vliqgv6YeN5ZG95ZCN5LiA5Liq5YiG5pSv77yM5Y2z5L2/55uu5qCH5bey5a2Y5ZyoIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgyNQorbXNnaWQgImxpc3QgYnJhbmNoIG5hbWVzIgorbXNnc3RyICLliJflh7rliIbmlK/lkI0iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI2Cittc2dpZCAiY3JlYXRlIHRoZSBicmFuY2gncyByZWZsb2ciCittc2dzdHIgIuWIm+W7uuWIhuaUr+eahOW8leeUqOaXpeW/lyIKKworIzogYnVpbHRpbi9icmFuY2guYzo4MjgKK21zZ2lkICJlZGl0IHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIGJyYW5jaCIKK21zZ3N0ciAi5qCH6K6w5YiG5pSv55qE5o+P6L+wIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgyOQorbXNnaWQgImZvcmNlIGNyZWF0aW9uICh3aGVuIGFscmVhZHkgZXhpc3RzKSIKK21zZ3N0ciAi5by65Yi25Yib5bu677yI5b2T5bey57uP5a2Y5Zyo77yJIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgzMgorbXNnaWQgInByaW50IG9ubHkgbm90IG1lcmdlZCBicmFuY2hlcyIKK21zZ3N0ciAi5Y+q5omT5Y2w5rKh5pyJ5ZCI5bm255qE5YiG5pSvIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjgzOAorbXNnaWQgInByaW50IG9ubHkgbWVyZ2VkIGJyYW5jaGVzIgorbXNnc3RyICLlj6rmiZPljbDlkIjlubbnmoTliIbmlK8iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODQyCittc2dpZCAibGlzdCBicmFuY2hlcyBpbiBjb2x1bW5zIgorbXNnc3RyICLku6XliJfnmoTmlrnlvI/mmL7npLrliIbmlK8iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODU1CiBtc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgSEVBRCBhcyBhIHZhbGlkIHJlZi4iCiBtc2dzdHIgIuaXoOazleWwhiBIRUFEIOino+aekOS4uuacieaViOW8leeUqOOAgiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3ODggYnVpbHRpbi9jbG9uZS5jOjU1OAorIzogYnVpbHRpbi9icmFuY2guYzo4NjAgYnVpbHRpbi9jbG9uZS5jOjYxOQogbXNnaWQgIkhFQUQgbm90IGZvdW5kIGJlbG93IHJlZnMvaGVhZHMhIgogbXNnc3RyICJIRUFEIOayoeacieS9jeS6jiAvcmVmcy9oZWFkcyDkuYvkuIvvvIEiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODA4CisjOiBidWlsdGluL2JyYW5jaC5jOjg4MwogbXNnaWQgIi0tY29sdW1uIGFuZCAtLXZlcmJvc2UgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLS1jb2x1bW4g5ZKMIC0tdmVyYm9zZSDkuI3lhbzlrrkiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODU3CisjOiBidWlsdGluL2JyYW5jaC5jOjg4OSBidWlsdGluL2JyYW5jaC5jOjkyOAorbXNnaWQgImJyYW5jaCBuYW1lIHJlcXVpcmVkIgorbXNnc3RyICLlv4Xpobvmj5DkvpvliIbmlK/lkI0iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTA0Cittc2dpZCAiQ2Fubm90IGdpdmUgZGVzY3JpcHRpb24gdG8gZGV0YWNoZWQgSEVBRCIKK21zZ3N0ciAi5LiN6IO95ZCR5YiG56a75aS05oyH6ZKI5o+Q5L6b5o+P6L+wIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkwOQorbXNnaWQgImNhbm5vdCBlZGl0IGRlc2NyaXB0aW9uIG9mIG1vcmUgdGhhbiBvbmUgYnJhbmNoIgorbXNnc3RyICLkuI3og73kuLrkuIDkuKrku6XkuIrnmoTliIbmlK/nvJbovpHmj4/ov7AiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTE2CisjLCBjLWZvcm1hdAorbXNnaWQgIk5vIGNvbW1pdCBvbiBicmFuY2ggJyVzJyB5ZXQuIgorbXNnc3RyICLliIbmlK8gJyVzJyDlsJrml6Dmj5DkuqTjgIIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTE5CisjLCBjLWZvcm1hdAorbXNnaWQgIk5vIGJyYW5jaCBuYW1lZCAnJXMnLiIKK21zZ3N0ciAi5rKh5pyJ5YiG5pSvICclcyfjgIIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTM0Cittc2dpZCAidG9vIG1hbnkgYnJhbmNoZXMgZm9yIGEgcmVuYW1lIG9wZXJhdGlvbiIKK21zZ3N0ciAi5Li66YeN5ZG95ZCN5pON5L2c5o+Q5L6b5LqG5aSq5aSa55qE5YiG5pSv5ZCNIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkzOQorbXNnaWQgInRvbyBtYW55IGJyYW5jaGVzIHRvIHNldCBuZXcgdXBzdHJlYW0iCittc2dzdHIgIuS4uuiuvue9ruaWsOS4iua4uOaPkOS+m+S6huWkquWkmueahOWIhuaUr+WQjSIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImNvdWxkIG5vdCBzZXQgdXBzdHJlYW0gb2YgSEVBRCB0byAlcyB3aGVuIGl0IGRvZXMgbm90IHBvaW50IHRvIGFueSBicmFuY2guIgorbXNnc3RyICLml6Dms5Xorr7nva4gSEVBRCDnmoTkuIrmuLjkuLogJXPvvIzlm6DkuLogSEVBRCDmsqHmnInmjIflkJHku7vkvZXliIbmlK/jgIIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTQ2IGJ1aWx0aW4vYnJhbmNoLmM6OTY4IGJ1aWx0aW4vYnJhbmNoLmM6OTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIm5vIHN1Y2ggYnJhbmNoICclcyciCittc2dzdHIgIuayoeacieatpOWIhuaUryAnJXMnIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk1MAorIywgYy1mb3JtYXQKK21zZ2lkICJicmFuY2ggJyVzJyBkb2VzIG5vdCBleGlzdCIKK21zZ3N0ciAi5YiG5pSvICclcycg5LiN5a2Y5ZyoIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk2MgorbXNnaWQgInRvbyBtYW55IGJyYW5jaGVzIHRvIHVuc2V0IHVwc3RyZWFtIgorbXNnc3RyICLkuLrlj5bmtojkuIrmuLjorr7nva7mk43kvZzmj5DkvpvkuoblpKrlpJrnmoTliIbmlK/lkI0iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTY2Cittc2dpZCAiY291bGQgbm90IHVuc2V0IHVwc3RyZWFtIG9mIEhFQUQgd2hlbiBpdCBkb2VzIG5vdCBwb2ludCB0byBhbnkgYnJhbmNoLiIKK21zZ3N0ciAi5peg5rOV5Y+W5raIIEhFQUQg55qE5LiK5ri46K6+572u5Zug5Li65a6D5rKh5pyJ5oyH5ZCR5LiA5Liq5YiG5pSvIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk3MgorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJyVzJyBoYXMgbm8gdXBzdHJlYW0gaW5mb3JtYXRpb24iCittc2dzdHIgIuWIhuaUryAnJXMnIOayoeacieS4iua4uOS/oeaBryIKKworIzogYnVpbHRpbi9icmFuY2guYzo5ODcKK21zZ2lkICJpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGNyZWF0ZSAnSEVBRCcgbWFudWFsbHkiCittc2dzdHIgIuaJi+W3peWIm+W7uiAnSEVBRCcg5rKh5pyJ5oSP5LmJIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk5MwogbXNnaWQgIi1hIGFuZCAtciBvcHRpb25zIHRvICdnaXQgYnJhbmNoJyBkbyBub3QgbWFrZSBzZW5zZSB3aXRoIGEgYnJhbmNoIG5hbWUiCiBtc2dzdHIgIidnaXQgYnJhbmNoJyDnmoQgLWEg5ZKMIC1yIOmAiemhueW4puS4gOS4quWIhuaUr+WQjeWPguaVsOayoeacieaEj+S5iSIKIAorIzogYnVpbHRpbi9icmFuY2guYzo5OTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSAtLXNldC11cHN0cmVhbSBmbGFnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gQ29uc2lkZXIgdXNpbmcgLS0iCisidHJhY2sgb3IgLS1zZXQtdXBzdHJlYW0tdG9cbiIKK21zZ3N0ciAiIgorIumAiemhuSAtLXNldC11cHN0cmVhbSDlt7LlvIPnlKjlubblsIbooqvnp7vpmaTjgILogIPomZHkvb/nlKggLS10cmFjayDmiJYgLS1zZXQtdXBzdHJlYW0tdG9cbiIKKworIzogYnVpbHRpbi9icmFuY2guYzoxMDEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJJZiB5b3Ugd2FudGVkIHRvIG1ha2UgJyVzJyB0cmFjayAnJXMnLCBkbyB0aGlzOlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisi5aaC5p6c5L2g5oOz55SoICclcycg6Lef6LiqICclcycsIOi/meS5iOWBmu+8mlxuIgorIlxuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjEwMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgIGdpdCBicmFuY2ggLWQgJXNcbiIKK21zZ3N0ciAiICAgIGdpdCBicmFuY2ggLWQgJXNcbiIKKworIzogYnVpbHRpbi9icmFuY2guYzoxMDE1CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvICVzXG4iCittc2dzdHIgIiAgICBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvICVzXG4iCisKICM6IGJ1aWx0aW4vYnVuZGxlLmM6NDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgaXMgb2theVxuIgpAQCAtMTcyMiwxMDAgKzI4ODksMjQ3IEBACiBtc2dpZCAiTmVlZCBhIHJlcG9zaXRvcnkgdG8gdW5idW5kbGUuIgogbXNnc3RyICLpnIDopoHkuIDkuKrniYjmnKzlupPmnaXop6PljIXjgIIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTMgYnVpbHRpbi9jaGVja291dC5jOjE0NgorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE3NgorbXNnaWQgImdpdCBjYXQtZmlsZSAoLXR8LXN8LWV8LXB8PHR5cGU+fC0tdGV4dGNvbnYpIDxvYmplY3Q+IgorbXNnc3RyICJnaXQgY2F0LWZpbGUgKC10fC1zfC1lfC1wfDznsbvlnos+fC0tdGV4dGNvbnYpIDzlr7nosaE+IgorCisjOiBidWlsdGluL2NhdC1maWxlLmM6MTc3Cittc2dpZCAiZ2l0IGNhdC1maWxlICgtLWJhdGNofC0tYmF0Y2gtY2hlY2spIDwgPGxpc3Rfb2Zfb2JqZWN0cz4iCittc2dzdHIgImdpdCBjYXQtZmlsZSAoLS1iYXRjaHwtLWJhdGNoLWNoZWNrKSA8IDzlr7nosaHliJfooag+IgorCisjOiBidWlsdGluL2NhdC1maWxlLmM6MTk1Cittc2dpZCAiPHR5cGU+IGNhbiBiZSBvbmUgb2Y6IGJsb2IsIHRyZWUsIGNvbW1pdCwgdGFnIgorbXNnc3RyICI857G75Z6LPiDlj6/ku6XmmK/lhbbkuK3kuYvkuIDvvJpibG9i44CBdHJlZeOAgWNvbW1pdOOAgXRhZyIKKworIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5NgorbXNnaWQgInNob3cgb2JqZWN0IHR5cGUiCittc2dzdHIgIuaYvuekuuWvueixoeexu+WeiyIKKworIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5NworbXNnaWQgInNob3cgb2JqZWN0IHNpemUiCittc2dzdHIgIuaYvuekuuWvueixoeWkp+WwjyIKKworIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5OQorbXNnaWQgImV4aXQgd2l0aCB6ZXJvIHdoZW4gdGhlcmUncyBubyBlcnJvciIKK21zZ3N0ciAi5b2T5rKh5pyJ6ZSZ6K+v5pe26YCA5Ye65bm26L+U5Zue6Zu2IgorCisjOiBidWlsdGluL2NhdC1maWxlLmM6MjAwCittc2dpZCAicHJldHR5LXByaW50IG9iamVjdCdzIGNvbnRlbnQiCittc2dzdHIgIue+juinguWcsOaJk+WNsOWvueixoeeahOWGheWuuSIKKworIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwMgorbXNnaWQgImZvciBibG9iIG9iamVjdHMsIHJ1biB0ZXh0Y29udiBvbiBvYmplY3QncyBjb250ZW50IgorbXNnc3RyICLlr7nkuo7mlbDmja7vvIhibG9i77yJ5a+56LGh77yM5a+55YW25YaF5a655omn6KGMIHRleHRjb252IgorCisjOiBidWlsdGluL2NhdC1maWxlLmM6MjA0Cittc2dpZCAic2hvdyBpbmZvIGFuZCBjb250ZW50IG9mIG9iamVjdHMgZmVkIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IgorbXNnc3RyICLmmL7npLrku47moIflh4bovpPlhaXmj5DkvpvnmoTlr7nosaHnmoTkv6Hmga/lkozlhoXlrrkiCisKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDcKK21zZ2lkICJzaG93IGluZm8gYWJvdXQgb2JqZWN0cyBmZWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCittc2dzdHIgIuaYvuekuuS7juagh+WHhui+k+WFpeaPkOS+m+eahOWvueixoeeahOS/oeaBryIKKworIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MTEKK21zZ2lkICJnaXQgY2hlY2stYXR0ciBbLWEgfCAtLWFsbCB8IGF0dHIuLi5dIFstLV0gcGF0aG5hbWUuLi4iCittc2dzdHIgImdpdCBjaGVjay1hdHRyIFstYSB8IC0tYWxsIHwgYXR0ci4uLl0gWy0tXSDot6/lvoTlkI0uLi4iCisKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjEyCittc2dpZCAiZ2l0IGNoZWNrLWF0dHIgLS1zdGRpbiBbLXpdIFstYSB8IC0tYWxsIHwgYXR0ci4uLl0gPCA8bGlzdC1vZi1wYXRocz4iCittc2dzdHIgImdpdCBjaGVjay1hdHRyIC0tc3RkaW4gWy16XSBbLWEgfCAtLWFsbCB8IGF0dHIuLi5dIDwgPOi3r+W+hOWIl+ihqD4iCisKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjE5Cittc2dpZCAicmVwb3J0IGFsbCBhdHRyaWJ1dGVzIHNldCBvbiBmaWxlIgorbXNnc3RyICLmiqXlkYrorr7nva7lnKjmlofku7bkuIrnmoTmiYDmnInlsZ7mgKciCisKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIwCittc2dpZCAidXNlIC5naXRhdHRyaWJ1dGVzIG9ubHkgZnJvbSB0aGUgaW5kZXgiCittc2dzdHIgIuWPquS9v+eUqOe0ouW8leS4reeahCAuZ2l0YXR0cmlidXRlcyIKKworIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MjEgYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoyMiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzUKK21zZ2lkICJyZWFkIGZpbGUgbmFtZXMgZnJvbSBzdGRpbiIKK21zZ3N0ciAi5LuO5qCH5YeG6L6T5YWl6K+75Ye65paH5Lu25ZCNIgorCisjOiBidWlsdGluL2NoZWNrLWF0dHIuYzoyMyBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjI0Cittc2dpZCAiaW5wdXQgcGF0aHMgYXJlIHRlcm1pbmF0ZWQgYnkgYSBudWxsIGNoYXJhY3RlciIKK21zZ3N0ciAi6L6T5YWl6Lev5b6E5LulbnVsbOWtl+espue7iOatoiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxOCBidWlsdGluL2NoZWNrb3V0LmM6MTA0NCBidWlsdGluL2djLmM6MTc3Cittc2dpZCAic3VwcHJlc3MgcHJvZ3Jlc3MgcmVwb3J0aW5nIgorbXNnc3RyICLkuI3mmL7npLrov5vluqbmiqXlkYoiCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTQ2Cittc2dpZCAiY2Fubm90IHNwZWNpZnkgcGF0aG5hbWVzIHdpdGggLS1zdGRpbiIKK21zZ3N0ciAi5LiN6IO95ZCM5pe25o+Q5L6b6Lev5b6E5Y+KIC0tc3RkaW4g5Y+C5pWwIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE0OQorbXNnaWQgIi16IG9ubHkgbWFrZXMgc2Vuc2Ugd2l0aCAtLXN0ZGluIgorbXNnc3RyICIteiDpnIDopoHlkowgLS1zdGRpbiDlj4LmlbDlhbHnlKjmiY3mnInmhI/kuYkiCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTUxCittc2dpZCAibm8gcGF0aCBzcGVjaWZpZWQiCittc2dzdHIgIuacquaMh+Wumui3r+W+hCIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTUKK21zZ2lkICItLXF1aWV0IGlzIG9ubHkgdmFsaWQgd2l0aCBhIHNpbmdsZSBwYXRobmFtZSIKK21zZ3N0ciAi5Y+C5pWwIC0tcXVpZXQg5Y+q5Zyo5o+Q5L6b5LiA5Liq6Lev5b6E5ZCN5pe25pyJ5pWIIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE1NworbXNnaWQgImNhbm5vdCBoYXZlIGJvdGggLS1xdWlldCBhbmQgLS12ZXJib3NlIgorbXNnc3RyICLkuI3og73lkIzml7bmj5DkvpsgLS1xdWlldCDlkowgLS12ZXJib3NlIOWPguaVsCIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjEyNgorbXNnaWQgImdpdCBjaGVja291dC1pbmRleCBbb3B0aW9uc10gWy0tXSBbPGZpbGU+Li4uXSIKK21zZ3N0ciAiZ2l0IGNoZWNrb3V0LWluZGV4IFvpgInpobldIFstLV0gWzzmlofku7Y+Li4uXSIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE4NworbXNnaWQgImNoZWNrIG91dCBhbGwgZmlsZXMgaW4gdGhlIGluZGV4IgorbXNnc3RyICLmo4Dlh7rntKLlvJXljLrnmoTmiYDmnInmlofku7YiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxODgKK21zZ2lkICJmb3JjZSBvdmVyd3JpdGUgb2YgZXhpc3RpbmcgZmlsZXMiCittc2dzdHIgIuW8uuWItuimhueblueOsOacieeahOaWh+S7tiIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE5MAorbXNnaWQgIm5vIHdhcm5pbmcgZm9yIGV4aXN0aW5nIGZpbGVzIGFuZCBmaWxlcyBub3QgaW4gaW5kZXgiCittc2dzdHIgIuWtmOWcqOaIluS4jeWcqOe0ouW8leS4reeahOaWh+S7tumDveayoeacieitpuWRiiIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE5MgorbXNnaWQgImRvbid0IGNoZWNrb3V0IG5ldyBmaWxlcyIKK21zZ3N0ciAi5LiN5qOA5Ye65paw5paH5Lu2IgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTk0Cittc2dpZCAidXBkYXRlIHN0YXQgaW5mb3JtYXRpb24gaW4gdGhlIGluZGV4IGZpbGUiCittc2dzdHIgIuabtOaWsOe0ouW8leS4reaWh+S7tueahOeKtuaAgeS/oeaBryIKKworIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjIwMAorbXNnaWQgInJlYWQgbGlzdCBvZiBwYXRocyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIKK21zZ3N0ciAi5LuO5qCH5YeG6L6T5YWl6K+75Y+W6Lev5b6E5YiX6KGoIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MjAyCittc2dpZCAid3JpdGUgdGhlIGNvbnRlbnQgdG8gdGVtcG9yYXJ5IGZpbGVzIgorbXNnc3RyICLlsIblhoXlrrnlhpnlhaXkuLTml7bmlofku7YiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoyMDMgYnVpbHRpbi9jb2x1bW4uYzozMAorbXNnaWQgInN0cmluZyIKK21zZ3N0ciAi5a2X56ym5LiyIgorCisjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MjA0Cittc2dpZCAid2hlbiBjcmVhdGluZyBmaWxlcywgcHJlcGVuZCA8c3RyaW5nPiIKK21zZ3N0ciAi5Zyo5Yib5bu65paH5Lu25pe277yM5Zyo5YmN6Z2i5Yqg5LiKPOWtl+espuS4sj4iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoyMDcKK21zZ2lkICJjb3B5IG91dCB0aGUgZmlsZXMgZnJvbSBuYW1lZCBzdGFnZSIKK21zZ3N0ciAi5LuO5oyH5a6a5pqC5a2Y5Yy65Lit5ou35Ye65paH5Lu2IgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjUKK21zZ2lkICJnaXQgY2hlY2tvdXQgW29wdGlvbnNdIDxicmFuY2g+IgorbXNnc3RyICJnaXQgY2hlY2tvdXQgW+mAiemhuV0gPOWIhuaUrz4iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNgorbXNnaWQgImdpdCBjaGVja291dCBbb3B0aW9uc10gWzxicmFuY2g+XSAtLSA8ZmlsZT4uLi4iCittc2dzdHIgImdpdCBjaGVja291dCBb6YCJ6aG5XSBbPOWIhuaUrz5dIC0tIDzmlofku7Y+Li4uIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE3IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgb3VyIHZlcnNpb24iCiBtc2dzdHIgIui3r+W+hCAnJXMnIOayoeacieaIkeS7rOeahOeJiOacrCIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExNSBidWlsdGluL2NoZWNrb3V0LmM6MTQ4CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE5IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgdGhlaXIgdmVyc2lvbiIKIG1zZ3N0ciAi6Lev5b6EICclcycg5rKh5pyJ5LuW5Lus55qE54mI5pysIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTMxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTM1CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJyBkb2VzIG5vdCBoYXZlIGFsbCBuZWNlc3NhcnkgdmVyc2lvbnMiCiBtc2dzdHIgIui3r+W+hCAnJXMnIOayoeacieWFqOmDqOW/hemhu+eahOeJiOacrCIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjE3NQorIzogYnVpbHRpbi9jaGVja291dC5jOjE3OQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgZG9lcyBub3QgaGF2ZSBuZWNlc3NhcnkgdmVyc2lvbnMiCiBtc2dzdHIgIui3r+W+hCAnJXMnIOayoeacieW/hemhu+eahOeJiOacrCIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjE5MgorIzogYnVpbHRpbi9jaGVja291dC5jOjE5NgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcyc6IGNhbm5vdCBtZXJnZSIKIG1zZ3N0ciAicGF0aCAnJXMn77ya5peg5rOV5ZCI5bm2IgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjA5CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBhZGQgbWVyZ2UgcmVzdWx0IGZvciAnJXMnIgogbXNnc3RyICLml6Dms5XkuLogJyVzJyDmt7vliqDlkIjlubbnu5PmnpwiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMzQgYnVpbHRpbi9jaGVja291dC5jOjM5MgorIzogYnVpbHRpbi9jaGVja291dC5jOjIzNyBidWlsdGluL2NoZWNrb3V0LmM6MjQwIGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDMKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoIHVwZGF0aW5nIHBhdGhzIgorbXNnc3RyICInJXMnIOS4jeiDveWcqOabtOaWsOi3r+W+hOaXtuS9v+eUqCIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjI0OSBidWlsdGluL2NoZWNrb3V0LmM6MjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIKK21zZ3N0ciAiJyVzJyDkuI3og73lkowgJXMg5ZCM5pe25L2/55SoIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjU1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCB1cGRhdGUgcGF0aHMgYW5kIHN3aXRjaCB0byBicmFuY2ggJyVzJyBhdCB0aGUgc2FtZSB0aW1lLiIKK21zZ3N0ciAi5LiN6IO95ZCM5pe25pu05paw6Lev5b6E5bm25YiH5o2i5Yiw5YiG5pSvJyVzJ+OAgiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjI2NiBidWlsdGluL2NoZWNrb3V0LmM6NDU4CiBtc2dpZCAiY29ycnVwdCBpbmRleCBmaWxlIgogbXNnc3RyICLmjZ/lnY/nmoTntKLlvJXmlofku7YiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNjQgYnVpbHRpbi9jaGVja291dC5jOjI3MQorIzogYnVpbHRpbi9jaGVja291dC5jOjMyOSBidWlsdGluL2NoZWNrb3V0LmM6MzM2CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJyBpcyB1bm1lcmdlZCIKIG1zZ3N0ciAi6Lev5b6EICclcycg5pyq5ZCI5bm2IgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MzAyIGJ1aWx0aW4vY2hlY2tvdXQuYzo0OTggYnVpbHRpbi9jbG9uZS5jOjU4MwotIzogYnVpbHRpbi9tZXJnZS5jOjgxMgotbXNnaWQgInVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIKLW1zZ3N0ciAi5peg5rOV5YaZ5paw55qE57Si5byV5paH5Lu2IgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MzE5IGJ1aWx0aW4vZGlmZi5jOjMwMiBidWlsdGluL21lcmdlLmM6NDA4Ci1tc2dpZCAiZGlmZl9zZXR1cF9kb25lIGZhaWxlZCIKLW1zZ3N0ciAiZGlmZl9zZXR1cF9kb25lIOWksei0pSIKLQotIzogYnVpbHRpbi9jaGVja291dC5jOjQxNAorIzogYnVpbHRpbi9jaGVja291dC5jOjQ4MAogbXNnaWQgInlvdSBuZWVkIHRvIHJlc29sdmUgeW91ciBjdXJyZW50IGluZGV4IGZpcnN0IgogbXNnc3RyICLmgqjpnIDopoHlhYjop6PlhrPlvZPliY3ntKLlvJXnmoTlhrLnqoEiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo1MzMKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2FuIG5vdCBkbyByZWZsb2cgZm9yICclcydcbiIKIG1zZ3N0ciAi5LiN6IO95a+5ICclcycg5omn6KGMIHJlZmxvZyDmk43kvZxcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU2NgorIzogYnVpbHRpbi9jaGVja291dC5jOjYzNAogbXNnaWQgIkhFQUQgaXMgbm93IGF0IgogbXNnc3RyICJIRUFEIOebruWJjeS9jeS6jiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU3MworIzogYnVpbHRpbi9jaGVja291dC5jOjY0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJSZXNldCBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICLph43nva7liIbmlK8gJyVzJ1xuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NTc2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFscmVhZHkgb24gJyVzJ1xuIgogbXNnc3RyICLlt7Lnu4/kvY3kuo4gJyVzJ1xuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NTgwCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGFuZCByZXNldCBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICLliIfmjaLlubbph43nva7liIbmlK8gJyVzJ1xuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NTgyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjUwIGJ1aWx0aW4vY2hlY2tvdXQuYzo5ODcKICMsIGMtZm9ybWF0CiBtc2dpZCAiU3dpdGNoZWQgdG8gYSBuZXcgYnJhbmNoICclcydcbiIKIG1zZ3N0ciAi5YiH5o2i5Yiw5LiA5Liq5paw5YiG5pSvICclcydcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU4NAorIzogYnVpbHRpbi9jaGVja291dC5jOjY1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJTd2l0Y2hlZCB0byBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICLliIfmjaLliLDliIbmlK8gJyVzJ1xuIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiIC4uLiBhbmQgJWQgbW9yZS5cbiIKIG1zZ3N0ciAiIC4uLiDlj4rlhbblroMgJWQg5Liq44CCXG4iCiAKICMuIFRoZSBzaW5ndWxhciB2ZXJzaW9uCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJXYXJuaW5nOiB5b3UgYXJlIGxlYXZpbmcgJWQgY29tbWl0IGJlaGluZCwgbm90IGNvbm5lY3RlZCB0b1xuIgpAQCAtMTgzNiw3ICszMTUwLDcgQEAKICJcbiIKICIlc1xuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjY0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJJZiB5b3Ugd2FudCB0byBrZWVwIHRoZW0gYnkgY3JlYXRpbmcgYSBuZXcgYnJhbmNoLCB0aGlzIG1heSBiZSBhIGdvb2QgdGltZVxuIgpAQCAtMTg1MSwyNzQgKzMxNjUsNTAyIEBACiAiIGdpdCBicmFuY2ggbmV3X2JyYW5jaF9uYW1lICVzXG4iCiAiXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2OTQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3NjIKIG1zZ2lkICJpbnRlcm5hbCBlcnJvciBpbiByZXZpc2lvbiB3YWxrIgogbXNnc3RyICLlnKjniYjmnKzpgY3ljobml7bpgYfliLDlhoXpg6jplJnor68iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2OTgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3NjYKIG1zZ2lkICJQcmV2aW91cyBIRUFEIHBvc2l0aW9uIHdhcyIKIG1zZ3N0ciAi5LmL5YmN55qEIEhFQUQg5L2N572u5pivIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NzI0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzkzIGJ1aWx0aW4vY2hlY2tvdXQuYzo5ODIKIG1zZ2lkICJZb3UgYXJlIG9uIGEgYnJhbmNoIHlldCB0byBiZSBib3JuIgogbXNnc3RyICLmgqjkvY3kuo7kuIDkuKrlsJrmnKrliJ3lp4vljJbnmoTliIbmlK8iCiAKICMuIGNhc2UgKDEpCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6ODU1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6OTE4CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgcmVmZXJlbmNlOiAlcyIKIG1zZ3N0ciAi5peg5pWI5byV55So77yaJXMiCiAKICMuIGNhc2UgKDEpOiB3YW50IGEgdHJlZQotIzogYnVpbHRpbi9jaGVja291dC5jOjg5NAorIzogYnVpbHRpbi9jaGVja291dC5jOjk1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWZlcmVuY2UgaXMgbm90IGEgdHJlZTogJXMiCiBtc2dzdHIgIuW8leeUqOS4jeaYr+S4gOS4quagke+8miVzIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTc0Ci1tc2dpZCAiLUIgY2Fubm90IGJlIHVzZWQgd2l0aCAtYiIKLW1zZ3N0ciAiLUIg5LiN6IO95ZKMIC1iIOWFseeUqCIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5OTYKK21zZ2lkICJwYXRocyBjYW5ub3QgYmUgdXNlZCB3aXRoIHN3aXRjaGluZyBicmFuY2hlcyIKK21zZ3N0ciAi6Lev5b6E5LiN6IO95ZKM5YiH5o2i5YiG5pSv5ZCM5pe25L2/55SoIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTgzCi1tc2dpZCAiLS1wYXRjaCBpcyBpbmNvbXBhdGlibGUgd2l0aCBhbGwgb3RoZXIgb3B0aW9ucyIKLW1zZ3N0ciAiLS1wYXRjaCDpgInpobnlkozlhbbku5bpgInpobnkuI3lhbzlrrkiCisjOiBidWlsdGluL2NoZWNrb3V0LmM6OTk5IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMiCittc2dzdHIgIiclcycg5LiN6IO95ZKM5YiH5o2i5YiG5pSv5ZCM5pe25L2/55SoIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTg2Ci1tc2dpZCAiLS1kZXRhY2ggY2Fubm90IGJlIHVzZWQgd2l0aCAtYi8tQi8tLW9ycGhhbiIKLW1zZ3N0ciAiLS1kZXRhY2gg5LiN6IO95ZKMIC1iLy1CLy0tb3JwaGFuIOWFseeUqCIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDA3IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDEwIGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxOAorIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggJyVzJyIKK21zZ3N0ciAiJyVzJyDkuI3og73lkowgJyVzJyDlkIzml7bkvb/nlKgiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5ODgKLW1zZ2lkICItLWRldGFjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIC10IgotbXNnc3RyICItLWRldGFjaCDkuI3og73lkowgLXQg5YWx55SoIgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHN3aXRjaCBicmFuY2ggdG8gYSBub24tY29tbWl0ICclcyciCittc2dzdHIgIuS4jeiDveWIh+aNouWIhuaUr+WIsOS4gOS4qumdnuaPkOS6pCAnJXMnIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTk0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA0NSBidWlsdGluL2NoZWNrb3V0LmM6MTA0NyBidWlsdGluL2Nsb25lLmM6OTAKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTY5IGJ1aWx0aW4vcmVtb3RlLmM6MTcxCittc2dpZCAiYnJhbmNoIgorbXNnc3RyICLliIbmlK8iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ2Cittc2dpZCAiY3JlYXRlIGFuZCBjaGVja291dCBhIG5ldyBicmFuY2giCittc2dzdHIgIuWIm+W7uuW5tuajgOWHuuS4gOS4quaWsOeahOWIhuaUryIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDgKK21zZ2lkICJjcmVhdGUvcmVzZXQgYW5kIGNoZWNrb3V0IGEgYnJhbmNoIgorbXNnc3RyICLliJvlu7ov6YeN572u5bm25qOA5Ye65LiA5Liq5YiG5pSvIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA0OQorbXNnaWQgImNyZWF0ZSByZWZsb2cgZm9yIG5ldyBicmFuY2giCittc2dzdHIgIuS4uuaWsOeahOWIhuaUr+WIm+W7uuW8leeUqOaXpeW/lyIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTAKK21zZ2lkICJkZXRhY2ggdGhlIEhFQUQgYXQgbmFtZWQgY29tbWl0IgorbXNnc3RyICLmiJDkuLrmjIflkJHor6Xmj5DkuqTnmoTliIbnprvlpLTmjIfpkogiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDUxCittc2dpZCAic2V0IHVwc3RyZWFtIGluZm8gZm9yIG5ldyBicmFuY2giCittc2dzdHIgIuS4uuaWsOeahOWIhuaUr+iuvue9ruS4iua4uOS/oeaBryIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTMKK21zZ2lkICJuZXcgYnJhbmNoIgorbXNnc3RyICLmlrDliIbmlK8iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDUzCittc2dpZCAibmV3IHVucGFyZW50ZWQgYnJhbmNoIgorbXNnc3RyICLmlrDnmoTmsqHmnInniLbmj5DkuqTnmoTliIbmlK8iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU0Cittc2dpZCAiY2hlY2tvdXQgb3VyIHZlcnNpb24gZm9yIHVubWVyZ2VkIGZpbGVzIgorbXNnc3RyICLlr7nlsJrmnKrlkIjlubbnmoTmlofku7bmo4Dlh7rmiJHku6znmoTniYjmnKwiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU2Cittc2dpZCAiY2hlY2tvdXQgdGhlaXIgdmVyc2lvbiBmb3IgdW5tZXJnZWQgZmlsZXMiCittc2dzdHIgIuWvueWwmuacquWQiOW5tueahOaWh+S7tuajgOWHuuS7luS7rOeahOeJiOacrCIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTgKK21zZ2lkICJmb3JjZSBjaGVja291dCAodGhyb3cgYXdheSBsb2NhbCBtb2RpZmljYXRpb25zKSIKK21zZ3N0ciAi5by65Yi25qOA5Ye677yI5Lii5byD5pys5Zyw5L+u5pS577yJIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OQorbXNnaWQgInBlcmZvcm0gYSAzLXdheSBtZXJnZSB3aXRoIHRoZSBuZXcgYnJhbmNoIgorbXNnc3RyICLlkozmlrDnmoTliIbmlK/miafooYzkuInot6/lkIjlubYiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYwIGJ1aWx0aW4vbWVyZ2UuYzoyMTcKK21zZ2lkICJ1cGRhdGUgaWdub3JlZCBmaWxlcyAoZGVmYXVsdCkiCittc2dzdHIgIuabtOaWsOW/veeVpeeahOaWh+S7tu+8iOm7mOiupO+8iSIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjEgYnVpbHRpbi9sb2cuYzoxMTU4IHBhcnNlLW9wdGlvbnMuaDoyNDUKK21zZ2lkICJzdHlsZSIKK21zZ3N0ciAi6aOO5qC8IgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MgorbXNnaWQgImNvbmZsaWN0IHN0eWxlIChtZXJnZSBvciBkaWZmMykiCittc2dzdHIgIuWGsueqgei+k+WHuumjjuagvO+8iG1lcmdlIOaIliBkaWZmM++8iSIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjUKK21zZ2lkICJkbyBub3QgbGltaXQgcGF0aHNwZWNzIHRvIHNwYXJzZSBlbnRyaWVzIG9ubHkiCittc2dzdHIgIuWvuei3r+W+hOS4jeWBmueogOeWj+ajgOWHuueahOmZkOWItiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjcKK21zZ2lkICJzZWNvbmQgZ3Vlc3MgJ2dpdCBjaGVja291dCBuby1zdWNoLWJyYW5jaCciCittc2dzdHIgIuWGjeiAheeMnOa1iydnaXQgY2hlY2tvdXQgbm8tc3VjaC1icmFuY2gnIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA5MQorbXNnaWQgIi1iLCAtQiBhbmQgLS1vcnBoYW4gYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSIKK21zZ3N0ciAiLWLjgIEtQiDlkowgLS1vcnBoYW4g5piv5LqS5pal55qEIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTEwOAogbXNnaWQgIi0tdHJhY2sgbmVlZHMgYSBicmFuY2ggbmFtZSIKIG1zZ3N0ciAiLS10cmFjayDpnIDopoHkuIDkuKrliIbmlK/lkI0iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDAxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTExNQogbXNnaWQgIk1pc3NpbmcgYnJhbmNoIG5hbWU7IHRyeSAtYiIKIG1zZ3N0ciAi57y65bCR5YiG5pSv5ZCN77yb5bCd6K+VIC1iIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAwNwotbXNnaWQgIi0tb3JwaGFuIGFuZCAtYnwtQiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIgotbXNnc3RyICItLW9ycGhhbiDlkowgLWJ8LUIg5LqS5palIgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAwOQotbXNnaWQgIi0tb3JwaGFuIGNhbm5vdCBiZSB1c2VkIHdpdGggLXQiCi1tc2dzdHIgIi0tb3JwaGFuIOS4jeiDveWSjCAtdCDlhbHnlKgiCi0KLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE5Ci1tc2dpZCAiZ2l0IGNoZWNrb3V0OiAtZiBhbmQgLW0gYXJlIGluY29tcGF0aWJsZSIKLW1zZ3N0ciAiZ2l0IGNoZWNrb3V077yaLWYg5ZKMIC1tIOS4jeWFvOWuuSIKLQotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTMKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTUwCiBtc2dpZCAiaW52YWxpZCBwYXRoIHNwZWNpZmljYXRpb24iCiBtc2dzdHIgIuaXoOaViOeahOi3r+W+hOinhOagvCIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKLSJnaXQgY2hlY2tvdXQ6IHVwZGF0aW5nIHBhdGhzIGlzIGluY29tcGF0aWJsZSB3aXRoIHN3aXRjaGluZyBicmFuY2hlcy5cbiIKKyJDYW5ub3QgdXBkYXRlIHBhdGhzIGFuZCBzd2l0Y2ggdG8gYnJhbmNoICclcycgYXQgdGhlIHNhbWUgdGltZS5cbiIKICJEaWQgeW91IGludGVuZCB0byBjaGVja291dCAnJXMnIHdoaWNoIGNhbiBub3QgYmUgcmVzb2x2ZWQgYXMgY29tbWl0PyIKIG1zZ3N0ciAiIgotImdpdCBjaGVja291dO+8muabtOaWsOi3r+W+hOWSjOWIh+aNouWIhuaUr+S4jeWFvOWuueOAglxuIgotIuaCqOaYr+aDs+imgeajgOWHuiAnJXMnIOS9huacquiDveWwhuWFtuino+aekOS4uuaPkOS6pOS5iO+8nyIKKyLkuI3og73lkIzml7bmm7TmlrDot6/lvoTlubbliIfmjaLliLDliIbmlK8nJXMn44CCXG4iCisi5oKo5piv5oOz6KaB5qOA5Ye6ICclcycg5L2G5YW25pyq6IO96Kej5p6Q5Li65o+Q5Lqk5LmI77yfIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MwotbXNnaWQgImdpdCBjaGVja291dDogdXBkYXRpbmcgcGF0aHMgaXMgaW5jb21wYXRpYmxlIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzLiIKLW1zZ3N0ciAiZ2l0IGNoZWNrb3V077ya5pu05paw6Lev5b6E5ZKM5YiH5o2i5YiG5pSv5LiN5YW85a6544CCIgorIzogYnVpbHRpbi9jaGVja291dC5jOjExNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZ2l0IGNoZWNrb3V0OiAtLWRldGFjaCBkb2VzIG5vdCB0YWtlIGEgcGF0aCBhcmd1bWVudCAnJXMnIgorbXNnc3RyICJnaXQgY2hlY2tvdXTvvJotLWRldGFjaCDkuI3og73mjqXmlLbot6/lvoTlj4LmlbAgJyVzJyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjgKLW1zZ2lkICJnaXQgY2hlY2tvdXQ6IC0tZGV0YWNoIGRvZXMgbm90IHRha2UgYSBwYXRoIGFyZ3VtZW50IgotbXNnc3RyICJnaXQgY2hlY2tvdXTvvJotLWRldGFjaCDkuI3ot5/ot6/lvoTlj4LmlbAiCi0KLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDcxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE2NgogbXNnaWQgIiIKICJnaXQgY2hlY2tvdXQ6IC0tb3Vycy8tLXRoZWlycywgLS1mb3JjZSBhbmQgLS1tZXJnZSBhcmUgaW5jb21wYXRpYmxlIHdoZW5cbiIKICJjaGVja2luZyBvdXQgb2YgdGhlIGluZGV4LiIKIG1zZ3N0ciAiIgogImdpdCBjaGVja291dO+8muWcqOS7jue0ouW8leajgOWHuuaXtu+8jC0tb3Vycy8tLXRoZWlyc+OAgS0tZm9yY2Ug5ZKMIC0tbWVyZ2Ug5LiN5YW85a6544CCIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA5MAotbXNnaWQgIkNhbm5vdCBzd2l0Y2ggYnJhbmNoIHRvIGEgbm9uLWNvbW1pdC4iCi1tc2dzdHIgIuaXoOazleWIh+aNouWIhuaUr+WIsOS4gOS4qumdnuaPkOS6pOOAgiIKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyMAorbXNnaWQgImdpdCBjbGVhbiBbLWRdIFstZl0gWy1uXSBbLXFdIFstZSA8cGF0dGVybj5dIFsteCB8IC1YXSBbLS1dIDxwYXRocz4uLi4iCittc2dzdHIgImdpdCBjbGVhbiBbLWRdIFstZl0gWy1uXSBbLXFdIFstZSA85qih5byPPl0gWy14IHwgLVhdIFstLV0gPOi3r+W+hD4uLi4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDkzCi1tc2dpZCAiLS1vdXJzLy0tdGhlaXJzIGlzIGluY29tcGF0aWJsZSB3aXRoIHN3aXRjaGluZyBicmFuY2hlcy4iCi1tc2dzdHIgIi0tb3Vycy8tLXRoZWlycyDlkozliIfmjaLliIbmlK/kuI3lhbzlrrnjgIIiCisjOiBidWlsdGluL2NsZWFuLmM6MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVtb3ZpbmcgJXNcbiIKK21zZ3N0ciAi5q2j5Yig6ZmkICVzXG4iCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo3OAorIzogYnVpbHRpbi9jbGVhbi5jOjI1CisjLCBjLWZvcm1hdAorbXNnaWQgIldvdWxkIHJlbW92ZSAlc1xuIgorbXNnc3RyICLlsIbliKDpmaQgJXNcbiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIlNraXBwaW5nIHJlcG9zaXRvcnkgJXNcbiIKK21zZ3N0ciAi5b+955Wl54mI5pys5bqTICVzXG4iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNworIywgYy1mb3JtYXQKK21zZ2lkICJXb3VsZCBza2lwIHJlcG9zaXRvcnkgJXNcbiIKK21zZ3N0ciAi5bCG5b+955Wl54mI5pys5bqTICVzXG4iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyOAorIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgdG8gcmVtb3ZlICVzIgorbXNnc3RyICLml6Dms5XliKDpmaQgJXMiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjAKK21zZ2lkICJkbyBub3QgcHJpbnQgbmFtZXMgb2YgZmlsZXMgcmVtb3ZlZCIKK21zZ3N0ciAi5LiN5omT5Y2w5Yig6Zmk5paH5Lu255qE5ZCN56ewIgorCisjOiBidWlsdGluL2NsZWFuLmM6MTYyCittc2dpZCAiZm9yY2UiCittc2dzdHIgIuW8uuWItiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjE2NAorbXNnaWQgInJlbW92ZSB3aG9sZSBkaXJlY3RvcmllcyIKK21zZ3N0ciAi5Yig6Zmk5pW05Liq55uu5b2VIgorCisjOiBidWlsdGluL2NsZWFuLmM6MTY1IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTIgYnVpbHRpbi9ncmVwLmM6NzE3CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg3IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzEgYnVpbHRpbi9zaG93LXJlZi5jOjE4MgorbXNnaWQgInBhdHRlcm4iCittc2dzdHIgIuaooeW8jyIKKworIzogYnVpbHRpbi9jbGVhbi5jOjE2NgorbXNnaWQgImFkZCA8cGF0dGVybj4gdG8gaWdub3JlIHJ1bGVzIgorbXNnc3RyICLmt7vliqA85qih5byPPuWIsOW/veeVpeinhOWImSIKKworIzogYnVpbHRpbi9jbGVhbi5jOjE2NworbXNnaWQgInJlbW92ZSBpZ25vcmVkIGZpbGVzLCB0b28iCittc2dzdHIgIuS5n+WIoOmZpOW/veeVpeeahOaWh+S7tiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjE2OQorbXNnaWQgInJlbW92ZSBvbmx5IGlnbm9yZWQgZmlsZXMiCittc2dzdHIgIuWPquWIoOmZpOW/veeVpeeahOaWh+S7tiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjE4NwogbXNnaWQgIi14IGFuZCAtWCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIKLW1zZ3N0ciAiLXgg5ZKMIC1YIOS4jeiDveWFseeUqCIKK21zZ3N0ciAiLXgg5ZKMIC1YIOS4jeiDveWQjOaXtuS9v+eUqCIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjgyCisjOiBidWlsdGluL2NsZWFuLmM6MTkxCiBtc2dpZCAiIgogImNsZWFuLnJlcXVpcmVGb3JjZSBzZXQgdG8gdHJ1ZSBhbmQgbmVpdGhlciAtbiBub3IgLWYgZ2l2ZW47IHJlZnVzaW5nIHRvIGNsZWFuIgogbXNnc3RyICIiCiAiY2xlYW4ucmVxdWlyZUZvcmNlIOiuvue9ruS4uiB0cnVlIOS4lOacquaPkOS+myAtbiDmiJYgLWYg6YCJ6aG577yM5ouS57ud5omn6KGM5riF55CG5Yqo5L2cIgogCi0jOiBidWlsdGluL2NsZWFuLmM6ODUKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxOTQKIG1zZ2lkICIiCiAiY2xlYW4ucmVxdWlyZUZvcmNlIGRlZmF1bHRzIHRvIHRydWUgYW5kIG5laXRoZXIgLW4gbm9yIC1mIGdpdmVuOyByZWZ1c2luZyB0byAiCiAiY2xlYW4iCiBtc2dzdHIgIiIKICJjbGVhbi5yZXF1aXJlRm9yY2Ug6buY6K6k5Li6IHRydWUg5LiU5pyq5o+Q5L6bIC1uIOaIliAtZiDpgInpobnvvIzmi5Lnu53miafooYzmuIXnkIbliqjkvZwiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNTUgYnVpbHRpbi9jbGVhbi5jOjE3NgotIywgYy1mb3JtYXQKLW1zZ2lkICJXb3VsZCByZW1vdmUgJXNcbiIKLW1zZ3N0ciAi5bCG5Yig6ZmkICVzXG4iCisjOiBidWlsdGluL2Nsb25lLmM6MzcKK21zZ2lkICJnaXQgY2xvbmUgW29wdGlvbnNdIFstLV0gPHJlcG8+IFs8ZGlyPl0iCittc2dzdHIgImdpdCBjbG9uZSBb6YCJ6aG5XSBbLS1dIDzniYjmnKzlupM+IFs86Lev5b6EPl0iCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNTkgYnVpbHRpbi9jbGVhbi5jOjE3OQotIywgYy1mb3JtYXQKLW1zZ2lkICJSZW1vdmluZyAlc1xuIgotbXNnc3RyICLmraPliKDpmaQgJXNcbiIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NSBidWlsdGluL2ZldGNoLmM6ODIgYnVpbHRpbi9tZXJnZS5jOjIxNAorIzogYnVpbHRpbi9wdXNoLmM6NDM2Cittc2dpZCAiZm9yY2UgcHJvZ3Jlc3MgcmVwb3J0aW5nIgorbXNnc3RyICLlvLrliLbmmL7npLrov5vluqbmiqXlkYoiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjIgYnVpbHRpbi9jbGVhbi5jOjE4MgotIywgYy1mb3JtYXQKLW1zZ2lkICJmYWlsZWQgdG8gcmVtb3ZlICVzIgotbXNnc3RyICLml6Dms5XliKDpmaQgJXMiCisjOiBidWlsdGluL2Nsb25lLmM6NjcKK21zZ2lkICJkb24ndCBjcmVhdGUgYSBjaGVja291dCIKK21zZ3N0ciAi5LiN5Yib5bu65LiA5Liq5qOA5Ye6IgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTY2Ci0jLCBjLWZvcm1hdAotbXNnaWQgIldvdWxkIG5vdCByZW1vdmUgJXNcbiIKLW1zZ3N0ciAi5LiN5Lya5Yig6ZmkICVzXG4iCisjOiBidWlsdGluL2Nsb25lLmM6NjggYnVpbHRpbi9jbG9uZS5jOjcwIGJ1aWx0aW4vaW5pdC1kYi5jOjQ4OAorbXNnaWQgImNyZWF0ZSBhIGJhcmUgcmVwb3NpdG9yeSIKK21zZ3N0ciAi5Yib5bu65LiA5Liq6KO454mI5pys5bqTIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTY4Ci0jLCBjLWZvcm1hdAotbXNnaWQgIk5vdCByZW1vdmluZyAlc1xuIgotbXNnc3RyICLmnKrliKDpmaQgJXNcbiIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3MworbXNnaWQgImNyZWF0ZSBhIG1pcnJvciByZXBvc2l0b3J5IChpbXBsaWVzIGJhcmUpIgorbXNnc3RyICLliJvlu7rkuIDkuKrplZzlg4/niYjmnKzlupPvvIjkuZ/mmK/oo7jniYjmnKzlupPvvIkiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzoyNDMKLSMsIGMtZm9ybWF0Ci1tc2dpZCAicmVmZXJlbmNlIHJlcG9zaXRvcnkgJyVzJyBpcyBub3QgYSBsb2NhbCBkaXJlY3RvcnkuIgotbXNnc3RyICLlvJXnlKjniYjmnKzlupMgJyVzJyDkuI3mmK/kuIDkuKrmnKzlnLDnm67lvZXjgIIiCisjOiBidWlsdGluL2Nsb25lLmM6NzUKK21zZ2lkICJ0byBjbG9uZSBmcm9tIGEgbG9jYWwgcmVwb3NpdG9yeSIKK21zZ3N0ciAi5LuO5pys5Zyw54mI5pys5bqT5YWL6ZqGIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzAyCi0jLCBjLWZvcm1hdAotbXNnaWQgImZhaWxlZCB0byBvcGVuICclcyciCi1tc2dzdHIgIuaXoOazleaJk+W8gCAnJXMnIgorIzogYnVpbHRpbi9jbG9uZS5jOjc3Cittc2dpZCAiZG9uJ3QgdXNlIGxvY2FsIGhhcmRsaW5rcywgYWx3YXlzIGNvcHkiCittc2dzdHIgIuS4jeS9v+eUqOacrOWcsOehrOmTvuaOpe+8jOWni+e7iOWkjeWItiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjMwNgorIzogYnVpbHRpbi9jbG9uZS5jOjc5Cittc2dpZCAic2V0dXAgYXMgc2hhcmVkIHJlcG9zaXRvcnkiCittc2dzdHIgIuiuvue9ruS4uuWFseS6q+eJiOacrOW6kyIKKworIzogYnVpbHRpbi9jbG9uZS5jOjgxIGJ1aWx0aW4vY2xvbmUuYzo4MworbXNnaWQgImluaXRpYWxpemUgc3VibW9kdWxlcyBpbiB0aGUgY2xvbmUiCittc2dzdHIgIuWcqOWFi+mahuaXtuWIneWni+WMluWtkOaooee7hCIKKworIzogYnVpbHRpbi9jbG9uZS5jOjg0IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4NQorbXNnaWQgInRlbXBsYXRlLWRpcmVjdG9yeSIKK21zZ3N0ciAi5qih5p2/55uu5b2VIgorCisjOiBidWlsdGluL2Nsb25lLmM6ODUgYnVpbHRpbi9pbml0LWRiLmM6NDg2Cittc2dpZCAiZGlyZWN0b3J5IGZyb20gd2hpY2ggdGVtcGxhdGVzIHdpbGwgYmUgdXNlZCIKK21zZ3N0ciAi5qih5p2/55uu5b2V5bCG6KKr5L2/55SoIgorCisjOiBidWlsdGluL2Nsb25lLmM6ODcKK21zZ2lkICJyZWZlcmVuY2UgcmVwb3NpdG9yeSIKK21zZ3N0ciAi5byV55So54mI5pys5bqTIgorCisjOiBidWlsdGluL2Nsb25lLmM6ODggYnVpbHRpbi9jb2x1bW4uYzoyNiBidWlsdGluL21lcmdlLWZpbGUuYzo0NAorbXNnaWQgIm5hbWUiCittc2dzdHIgIuWQjeensCIKKworIzogYnVpbHRpbi9jbG9uZS5jOjg5Cittc2dpZCAidXNlIDxuYW1lPiBpbnN0ZWFkIG9mICdvcmlnaW4nIHRvIHRyYWNrIHVwc3RyZWFtIgorbXNnc3RyICLkvb/nlKg85ZCN56ewPuiAjOS4jeaYryAnb3JpZ2luJyDljrvot5/ouKrkuIrmuLgiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MQorbXNnaWQgImNoZWNrb3V0IDxicmFuY2g+IGluc3RlYWQgb2YgdGhlIHJlbW90ZSdzIEhFQUQiCittc2dzdHIgIuajgOWHujzliIbmlK8+6ICM5LiN5piv6L+c56iLSEVBRCIKKworIzogYnVpbHRpbi9jbG9uZS5jOjkzCittc2dpZCAicGF0aCB0byBnaXQtdXBsb2FkLXBhY2sgb24gdGhlIHJlbW90ZSIKK21zZ3N0ciAi6L+c56iLIGdpdC11cGxvYWQtcGFjayDot6/lvoQiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5NCBidWlsdGluL2ZldGNoLmM6ODMgYnVpbHRpbi9ncmVwLmM6NjYyCittc2dpZCAiZGVwdGgiCittc2dzdHIgIua3seW6piIKKworIzogYnVpbHRpbi9jbG9uZS5jOjk1Cittc2dpZCAiY3JlYXRlIGEgc2hhbGxvdyBjbG9uZSBvZiB0aGF0IGRlcHRoIgorbXNnc3RyICLliJvlu7rkuIDkuKrmjIflrprmt7HluqbnmoTmtYXlhYvpmoYiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5NworbXNnaWQgImNsb25lIG9ubHkgb25lIGJyYW5jaCwgSEVBRCBvciAtLWJyYW5jaCIKK21zZ3N0ciAi5Y+q5YWL6ZqG5LiA5Liq5YiG5pSv44CBSEVBRCDmiJYgLS1icmFuY2giCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5OCBidWlsdGluL2luaXQtZGIuYzo0OTQKK21zZ2lkICJnaXRkaXIiCittc2dzdHIgImdpdOebruW9lSIKKworIzogYnVpbHRpbi9jbG9uZS5jOjk5IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NQorbXNnaWQgInNlcGFyYXRlIGdpdCBkaXIgZnJvbSB3b3JraW5nIHRyZWUiCittc2dzdHIgImdpdOebruW9leWSjOW3peS9nOWMuuWIhuemuyIKKworIzogYnVpbHRpbi9jbG9uZS5jOjEwMAorbXNnaWQgImtleT12YWx1ZSIKK21zZ3N0ciAia2V5PXZhbHVlIgorCisjOiBidWlsdGluL2Nsb25lLmM6MTAxCittc2dpZCAic2V0IGNvbmZpZyBpbnNpZGUgdGhlIG5ldyByZXBvc2l0b3J5IgorbXNnc3RyICLlnKjmlrDniYjmnKzlupPkuK3orr7nva7phY3nva7kv6Hmga8iCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzoyNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVmZXJlbmNlIHJlcG9zaXRvcnkgJyVzJyBpcyBub3QgYSBsb2NhbCByZXBvc2l0b3J5LiIKK21zZ3N0ciAi5byV55So54mI5pys5bqTICclcycg5LiN5piv5LiA5Liq5pys5Zyw54mI5pys5bqT44CCIgorCisjOiBidWlsdGluL2Nsb25lLmM6MzE3CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICclcyciCiBtc2dzdHIgIuaXoOazleWIm+W7uuebruW9lSAnJXMnIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzA4IGJ1aWx0aW4vZGlmZi5jOjc1CisjOiBidWlsdGluL2Nsb25lLmM6MzE5IGJ1aWx0aW4vZGlmZi5jOjc3CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBzdGF0ICclcyciCiBtc2dzdHIgIuaXoOazleaemuS4viAnJXMnIOeKtuaAgSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjMxMAorIzogYnVpbHRpbi9jbG9uZS5jOjMyMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBleGlzdHMgYW5kIGlzIG5vdCBhIGRpcmVjdG9yeSIKIG1zZ3N0ciAiJXMg5a2Y5Zyo5LiU5LiN5piv5LiA5Liq55uu5b2VIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzI0CisjOiBidWlsdGluL2Nsb25lLmM6MzM1CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBzdGF0ICVzXG4iCiBtc2dzdHIgIuaXoOazleaemuS4viAlcyDnirbmgIFcbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjM0MQotIywgYy1mb3JtYXQKLW1zZ2lkICJmYWlsZWQgdG8gdW5saW5rICclcyciCi1tc2dzdHIgIuaXoOazleWIoOmZpCAnJXMnIgotCi0jOiBidWlsdGluL2Nsb25lLmM6MzQ2CisjOiBidWlsdGluL2Nsb25lLmM6MzU3CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjcmVhdGUgbGluayAnJXMnIgogbXNnc3RyICLml6Dms5XliJvlu7rpk77mjqUgJyVzJyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjM1MAorIzogYnVpbHRpbi9jbG9uZS5jOjM2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gY29weSBmaWxlIHRvICclcyciCiBtc2dzdHIgIuaXoOazleaLt+i0neaWh+S7tuiHsyAnJXMnIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzczCisjOiBidWlsdGluL2Nsb25lLmM6Mzg0CiAjLCBjLWZvcm1hdAogbXNnaWQgImRvbmUuXG4iCiBtc2dzdHIgIuWujOaIkOOAglxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NDQwCisjOiBidWlsdGluL2Nsb25lLmM6Mzk3Cittc2dpZCAiIgorIkNsb25lIHN1Y2NlZWRlZCwgYnV0IGNoZWNrb3V0IGZhaWxlZC5cbiIKKyJZb3UgY2FuIGluc3BlY3Qgd2hhdCB3YXMgY2hlY2tlZCBvdXQgd2l0aCAnZ2l0IHN0YXR1cydcbiIKKyJhbmQgcmV0cnkgdGhlIGNoZWNrb3V0IHdpdGggJ2dpdCBjaGVja291dCAtZiBIRUFEJ1xuIgorbXNnc3RyICIiCisi5YWL6ZqG5oiQ5Yqf77yM5L2G5piv5qOA5Ye65aSx6LSl44CCXG4iCisi5oKo5Y+v5Lul6YCa6L+HICdnaXQgc3RhdHVzJyDmo4Dmn6Xlk6rkupvlt7Looqvmo4Dlh7rvvIznhLblkI7kvb/nlKjlkb3ku6RcbiIKKyInZ2l0IGNoZWNrb3V0IC1mIEhFQUQnIOmHjeivlVxuIgorCisjOiBidWlsdGluL2Nsb25lLmM6NDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmaW5kIHJlbW90ZSBicmFuY2ggJXMgdG8gY2xvbmUuIgogbXNnc3RyICLkuI3og73lj5HnjrDopoHlhYvpmobnmoTov5znqIvliIbmlK8gJXPjgIIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo1NDkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo1NTAKK21zZ2lkICJyZW1vdGUgZGlkIG5vdCBzZW5kIGFsbCBuZWNlc3Nhcnkgb2JqZWN0cyIKK21zZ3N0ciAi6L+c56iL5rKh5pyJ5Y+R6YCB5omA5pyJ5b+F6aG755qE5a+56LGhIgorCisjOiBidWlsdGluL2Nsb25lLmM6NjEwCiBtc2dpZCAicmVtb3RlIEhFQUQgcmVmZXJzIHRvIG5vbmV4aXN0ZW50IHJlZiwgdW5hYmxlIHRvIGNoZWNrb3V0LlxuIgogbXNnc3RyICLov5znqIsgSEVBRCDmjIflkJHkuIDkuKrkuI3lrZjlnKjnmoTlvJXnlKjvvIzml6Dms5Xmo4Dlh7rjgIJcbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjYzOQorIzogYnVpbHRpbi9jbG9uZS5jOjY0MQorbXNnaWQgInVuYWJsZSB0byBjaGVja291dCB3b3JraW5nIHRyZWUiCittc2dzdHIgIuS4jeiDveajgOWHuuW3peS9nOWMuiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjc0OQogbXNnaWQgIlRvbyBtYW55IGFyZ3VtZW50cy4iCiBtc2dzdHIgIuWkquWkmuWPguaVsOOAgiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY0MworIzogYnVpbHRpbi9jbG9uZS5jOjc1MwogbXNnaWQgIllvdSBtdXN0IHNwZWNpZnkgYSByZXBvc2l0b3J5IHRvIGNsb25lLiIKIG1zZ3N0ciAi5oKo5b+F6aG75oyH5a6a5LiA5Liq54mI5pys5bqT5p2l5YWL6ZqG44CCIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjU0CisjOiBidWlsdGluL2Nsb25lLmM6NzY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIi0tYmFyZSBhbmQgLS1vcmlnaW4gJXMgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKIG1zZ3N0ciAiLS1iYXJlIOWSjCAtLW9yaWdpbiAlcyDpgInpobnkuI3lhbzlrrnjgIIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NjgKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NjcKK21zZ2lkICItLWJhcmUgYW5kIC0tc2VwYXJhdGUtZ2l0LWRpciBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiLS1iYXJlIOWSjCAtLXNlcGFyYXRlLWdpdC1kaXIg6YCJ6aG55LiN5YW85a6544CCIgorCisjOiBidWlsdGluL2Nsb25lLmM6NzgwCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlcG9zaXRvcnkgJyVzJyBkb2VzIG5vdCBleGlzdCIKIG1zZ3N0ciAi54mI5pys5bqTICclcycg5LiN5a2Y5ZyoIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjczCisjOiBidWlsdGluL2Nsb25lLmM6Nzg1CiBtc2dpZCAiLS1kZXB0aCBpcyBpZ25vcmVkIGluIGxvY2FsIGNsb25lczsgdXNlIGZpbGU6Ly8gaW5zdGVhZC4iCiBtc2dzdHIgIi0tZGVwdGgg5Zyo5pys5Zyw5YWL6ZqG6KKr5b+955Wl77yM5pS55Li6IGZpbGU6Ly8g5Y2P6K6u6K+V6K+V44CCIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjgzCisjOiBidWlsdGluL2Nsb25lLmM6Nzk1CiAjLCBjLWZvcm1hdAogbXNnaWQgImRlc3RpbmF0aW9uIHBhdGggJyVzJyBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90IGFuIGVtcHR5IGRpcmVjdG9yeS4iCiBtc2dzdHIgIuebruagh+i3r+W+hCAnJXMnIOW3sue7j+WtmOWcqO+8jOW5tuS4lOS4jeaYr+S4gOS4quepuuebruW9leOAgiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY5MworIzogYnVpbHRpbi9jbG9uZS5jOjgwNQogIywgYy1mb3JtYXQKIG1zZ2lkICJ3b3JraW5nIHRyZWUgJyVzJyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgIuW3peS9nOWMuiAnJXMnIOW3sue7j+WtmOWcqOOAgiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjcwNiBidWlsdGluL2Nsb25lLmM6NzIwCisjOiBidWlsdGluL2Nsb25lLmM6ODE4IGJ1aWx0aW4vY2xvbmUuYzo4MzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGNyZWF0ZSBsZWFkaW5nIGRpcmVjdG9yaWVzIG9mICclcyciCiBtc2dzdHIgIuS4jeiDveS4uiAnJXMnIOWIm+W7uuWFiOWvvOebruW9lSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjcwOQorIzogYnVpbHRpbi9jbG9uZS5jOjgyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIHdvcmsgdHJlZSBkaXIgJyVzJy4iCiBtc2dzdHIgIuS4jeiDveS4uiAnJXMnIOWIm+W7uuW3peS9nOWMuuebruW9leOAgiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjcyOAorIzogYnVpbHRpbi9jbG9uZS5jOjg0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGludG8gYmFyZSByZXBvc2l0b3J5ICclcycuLi5cbiIKIG1zZ3N0ciAi5YWL6ZqG5Yiw6KO454mI5pys5bqTICclcycuLi5cbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjczMAorIzogYnVpbHRpbi9jbG9uZS5jOjg0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGludG8gJyVzJy4uLlxuIgogbXNnc3RyICLmraPlhYvpmobliLAgJyVzJy4uLlxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6Nzg2CisjOiBidWlsdGluL2Nsb25lLmM6ODc3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkRvbid0IGtub3cgaG93IHRvIGNsb25lICVzIgogbXNnc3RyICLkuI3nn6XpgZPlpoLkvZXlhYvpmoYgJXMiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4MzUKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVtb3RlIGJyYW5jaCAlcyBub3QgZm91bmQgaW4gdXBzdHJlYW0gJXMiCiBtc2dzdHIgIui/nOeoi+WIhuaUryAlcyDlnKjkuIrmuLggJXMg5pyq5Y+R546wIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODQyCisjOiBidWlsdGluL2Nsb25lLmM6OTMzCiBtc2dpZCAiWW91IGFwcGVhciB0byBoYXZlIGNsb25lZCBhbiBlbXB0eSByZXBvc2l0b3J5LiIKIG1zZ3N0ciAi5oKo5Ly85LmO5YWL6ZqG5LqG5LiA5Liq56m654mI5pys5bqT44CCIgogCisjOiBidWlsdGluL2NvbHVtbi5jOjkKK21zZ2lkICJnaXQgY29sdW1uIFtvcHRpb25zXSIKK21zZ3N0ciAiZ2l0IGNvbHVtbiBb6YCJ6aG5XSIKKworIzogYnVpbHRpbi9jb2x1bW4uYzoyNgorbXNnaWQgImxvb2t1cCBjb25maWcgdmFycyIKK21zZ3N0ciAi5p+l5om+6YWN572u5Y+Y6YePIgorCisjOiBidWlsdGluL2NvbHVtbi5jOjI3IGJ1aWx0aW4vY29sdW1uLmM6MjgKK21zZ2lkICJsYXlvdXQgdG8gdXNlIgorbXNnc3RyICLopoHkvb/nlKjnmoTluIPlsYAiCisKKyM6IGJ1aWx0aW4vY29sdW1uLmM6MjkKK21zZ2lkICJNYXhpbXVtIHdpZHRoIgorbXNnc3RyICLmnIDlpKflrr3luqYiCisKKyM6IGJ1aWx0aW4vY29sdW1uLmM6MzAKK21zZ2lkICJQYWRkaW5nIHNwYWNlIG9uIGxlZnQgYm9yZGVyIgorbXNnc3RyICLlt6bovrnmoYbnmoTloavlhYXnqbrpl7QiCisKKyM6IGJ1aWx0aW4vY29sdW1uLmM6MzEKK21zZ2lkICJQYWRkaW5nIHNwYWNlIG9uIHJpZ2h0IGJvcmRlciIKK21zZ3N0ciAi5Y+z6L655qGG55qE5aGr5YWF56m66Ze0IgorCisjOiBidWlsdGluL2NvbHVtbi5jOjMyCittc2dpZCAiUGFkZGluZyBzcGFjZSBiZXR3ZWVuIGNvbHVtbnMiCittc2dzdHIgIuS4pOWIl+S5i+mXtOeahOWhq+WFheepuumXtCIKKwogIzogYnVpbHRpbi9jb2x1bW4uYzo1MQogbXNnaWQgIi0tY29tbWFuZCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudCIKIG1zZ3N0ciAiLS1jb21tYW5kIOW/hemhu+aYr+esrOS4gOS4quWPguaVsCIKIAotIzogYnVpbHRpbi9jb21taXQuYzo0MworIzogYnVpbHRpbi9jb21taXQuYzozNAorbXNnaWQgImdpdCBjb21taXQgW29wdGlvbnNdIFstLV0gPHBhdGhzcGVjPi4uLiIKK21zZ3N0ciAiZ2l0IGNvbW1pdCBb6YCJ6aG5XSBbLS1dIDzot6/lvoTljLnphY0+Li4uIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjM5Cittc2dpZCAiZ2l0IHN0YXR1cyBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICJnaXQgc3RhdHVzIFvpgInpobldIFstLV0gPOi3r+W+hOWMuemFjT4uLi4iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDQKIG1zZ2lkICIiCiAiWW91ciBuYW1lIGFuZCBlbWFpbCBhZGRyZXNzIHdlcmUgY29uZmlndXJlZCBhdXRvbWF0aWNhbGx5IGJhc2VkXG4iCiAib24geW91ciB1c2VybmFtZSBhbmQgaG9zdG5hbWUuIFBsZWFzZSBjaGVjayB0aGF0IHRoZXkgYXJlIGFjY3VyYXRlLlxuIgpAQCAtMjE0MSw3ICszNjgzLDcgQEAKICJcbiIKICIgICAgZ2l0IGNvbW1pdCAtLWFtZW5kIC0tcmVzZXQtYXV0aG9yXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTYKIG1zZ2lkICIiCiAiWW91IGFza2VkIHRvIGFtZW5kIHRoZSBtb3N0IHJlY2VudCBjb21taXQsIGJ1dCBkb2luZyBzbyB3b3VsZCBtYWtlXG4iCiAiaXQgZW1wdHkuIFlvdSBjYW4gcmVwZWF0IHlvdXIgY29tbWFuZCB3aXRoIC0tYWxsb3ctZW1wdHksIG9yIHlvdSBjYW5cbiIKQEAgLTIxNTAsNyArMzY5Miw3IEBACiAi5oKo6KaB5L+u6KGl5pyA6L+R55qE5o+Q5Lqk77yM5L2G6L+Z5LmI5YGa5Lya6K6p5a6D5oiQ5Li656m65o+Q5Lqk44CC5oKo5Y+v5Lul6YeN5aSN5oKo55qE5ZG95Luk5bm25bim5LiKXG4iCiAiLS1hbGxvdy1lbXB0eSDpgInpobnvvIzmiJbogIXmgqjlj6/nlKjlkb3ku6QgXCJnaXQgcmVzZXQgSEVBRF5cIiDmlbTkuKrliKDpmaTor6Xmj5DkuqTjgIJcbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MAorIzogYnVpbHRpbi9jb21taXQuYzo2MQogbXNnaWQgIiIKICJUaGUgcHJldmlvdXMgY2hlcnJ5LXBpY2sgaXMgbm93IGVtcHR5LCBwb3NzaWJseSBkdWUgdG8gY29uZmxpY3QgcmVzb2x1dGlvbi5cbiIKICJJZiB5b3Ugd2lzaCB0byBjb21taXQgaXQgYW55d2F5LCB1c2U6XG4iCkBAIC0yMTY2LDkzICszNzA4LDkzIEBACiAiXG4iCiAi5ZCm5YiZ77yM6K+35L2/55So5ZG95LukICdnaXQgcmVzZXQnXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MjUzCisjOiBidWlsdGluL2NvbW1pdC5jOjI2MAogbXNnaWQgImZhaWxlZCB0byB1bnBhY2sgSEVBRCB0cmVlIG9iamVjdCIKIG1zZ3N0ciAi5peg5rOV6Kej5YyFIEhFQUQg5qCR5a+56LGhIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjI5NQorIzogYnVpbHRpbi9jb21taXQuYzozMDIKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlIHRlbXBvcmFyeSBpbmRleCIKIG1zZ3N0ciAi5LiN6IO95Yib5bu65Li05pe257Si5byVIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjMwMQorIzogYnVpbHRpbi9jb21taXQuYzozMDgKIG1zZ2lkICJpbnRlcmFjdGl2ZSBhZGQgZmFpbGVkIgogbXNnc3RyICLkuqTkupLlvI/mt7vliqDlpLHotKUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzM0IGJ1aWx0aW4vY29tbWl0LmM6MzU1IGJ1aWx0aW4vY29tbWl0LmM6NDA1CisjOiBidWlsdGluL2NvbW1pdC5jOjM0MSBidWlsdGluL2NvbW1pdC5jOjM2MiBidWlsdGluL2NvbW1pdC5jOjQxMgogbXNnaWQgInVuYWJsZSB0byB3cml0ZSBuZXdfaW5kZXggZmlsZSIKIG1zZ3N0ciAi5peg5rOV5YaZIG5ld19pbmRleCDmlofku7YiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6Mzg2CisjOiBidWlsdGluL2NvbW1pdC5jOjM5MwogbXNnaWQgImNhbm5vdCBkbyBhIHBhcnRpYWwgY29tbWl0IGR1cmluZyBhIG1lcmdlLiIKIG1zZ3N0ciAi5Zyo5ZCI5bm26L+H56iL5Lit5LiN6IO95YGa6YOo5YiG5o+Q5Lqk44CCIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM4OAorIzogYnVpbHRpbi9jb21taXQuYzozOTUKIG1zZ2lkICJjYW5ub3QgZG8gYSBwYXJ0aWFsIGNvbW1pdCBkdXJpbmcgYSBjaGVycnktcGljay4iCiBtc2dzdHIgIuWcqOaLo+mAiei/h+eoi+S4reS4jeiDveWBmumDqOWIhuaPkOS6pOOAgiIKIAotIzogYnVpbHRpbi9jb21taXQuYzozOTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDA1CiBtc2dpZCAiY2Fubm90IHJlYWQgdGhlIGluZGV4IgogbXNnc3RyICLml6Dms5Xor7vlj5bntKLlvJUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NDE4CisjOiBidWlsdGluL2NvbW1pdC5jOjQyNQogbXNnaWQgInVuYWJsZSB0byB3cml0ZSB0ZW1wb3JhcnkgaW5kZXggZmlsZSIKIG1zZ3N0ciAi5peg5rOV5YaZ5Li05pe257Si5byV5paH5Lu2IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjQ5MyBidWlsdGluL2NvbW1pdC5jOjQ5OQorIzogYnVpbHRpbi9jb21taXQuYzo1MTMgYnVpbHRpbi9jb21taXQuYzo1MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBjb21taXQ6ICVzIgogbXNnc3RyICLml6DmlYjnmoTmj5DkuqTvvJolcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1MjIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTQyCiBtc2dpZCAibWFsZm9ybWVkIC0tYXV0aG9yIHBhcmFtZXRlciIKIG1zZ3N0ciAi6Z2e5rOV55qEIC0tYXV0aG9yIOWPguaVsCIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1ODIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTYyCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1hbGZvcm1lZCBpZGVudCBzdHJpbmc6ICclcyciCiBtc2dzdHIgIumdnuazleeahOi6q+S7veWtl+espuS4su+8miclcyciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjIwIGJ1aWx0aW4vY29tbWl0LmM6NjUzIGJ1aWx0aW4vY29tbWl0LmM6OTY3CisjOiBidWlsdGluL2NvbW1pdC5jOjYwMCBidWlsdGluL2NvbW1pdC5jOjYzMyBidWlsdGluL2NvbW1pdC5jOjk1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgbG9va3VwIGNvbW1pdCAlcyIKIG1zZ3N0ciAi5LiN6IO95p+l6K+i5o+Q5LqkICVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYzMiBidWlsdGluL3Nob3J0bG9nLmM6Mjk2CisjOiBidWlsdGluL2NvbW1pdC5jOjYxMiBidWlsdGluL3Nob3J0bG9nLmM6MjcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIihyZWFkaW5nIGxvZyBtZXNzYWdlIGZyb20gc3RhbmRhcmQgaW5wdXQpXG4iCiBtc2dzdHIgIu+8iOato+S7juagh+WHhui+k+WFpeS4reivu+WPluaXpeW/l+S/oeaBr++8iVxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYzNAorIzogYnVpbHRpbi9jb21taXQuYzo2MTQKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBsb2cgZnJvbSBzdGFuZGFyZCBpbnB1dCIKIG1zZ3N0ciAi5LiN6IO95LuO5qCH5YeG6L6T5YWl5Lit6K+75Y+W5pel5b+X5L+h5oGvIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYzOAorIzogYnVpbHRpbi9jb21taXQuYzo2MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgbG9nIGZpbGUgJyVzJyIKIG1zZ3N0ciAi5LiN6IO96K+75Y+W5pel5b+X5paH5Lu2ICclcyciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjQ0CisjOiBidWlsdGluL2NvbW1pdC5jOjYyNAogbXNnaWQgImNvbW1pdCBoYXMgZW1wdHkgbWVzc2FnZSIKIG1zZ3N0ciAi5o+Q5Lqk6K+05piO5Li656m6IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjY2MAorIzogYnVpbHRpbi9jb21taXQuYzo2NDAKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBNRVJHRV9NU0ciCiBtc2dzdHIgIuS4jeiDveivu+WPliBNRVJHRV9NU0ciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjY0CisjOiBidWlsdGluL2NvbW1pdC5jOjY0NAogbXNnaWQgImNvdWxkIG5vdCByZWFkIFNRVUFTSF9NU0ciCiBtc2dzdHIgIuS4jeiDveivu+WPliBTUVVBU0hfTVNHIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjY2OAorIzogYnVpbHRpbi9jb21taXQuYzo2NDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgJyVzJyIKIG1zZ3N0ciAi5LiN6IO96K+75Y+WICclcyciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzIwCisjOiBidWlsdGluL2NvbW1pdC5jOjcwOQogbXNnaWQgImNvdWxkIG5vdCB3cml0ZSBjb21taXQgdGVtcGxhdGUiCiBtc2dzdHIgIuS4jeiDveWGmeaPkOS6pOaooeeJiCIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MzEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTIyNjIsMTEgKzM4MDQsMTEgQEAKICJhbmQgdHJ5IGFnYWluLlxuIgogbXNnc3RyICIiCiAiXG4iCi0i55yL6LW35p2l5oKo5q2j5Zyo5YGa5LiA5Liq5ZCI5bm25o+Q5Lqk44CC5aaC5p6c5LiN5a+577yM6K+35Yig6Zmk5paH5Lu2XG4iCisi5Ly85LmO5oKo5q2j5Zyo5YGa5LiA5Liq5ZCI5bm25o+Q5Lqk44CC5aaC5p6c5LiN5a+577yM6K+35Yig6Zmk5paH5Lu2XG4iCiAiXHQlc1xuIgogIueEtuWQjumHjeivleOAglxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjczNgorIzogYnVpbHRpbi9jb21taXQuYzo3MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtMjI3NiwxODIgKzM4MTgsMzc5IEBACiAiYW5kIHRyeSBhZ2Fpbi5cbiIKIG1zZ3N0ciAiIgogIlxuIgotIueci+i1t+adpeaCqOato+WcqOWBmuS4gOS4quaLo+mAieaPkOS6pOOAguWmguaenOS4jeWvue+8jOivt+WIoOmZpOaWh+S7tlxuIgorIuS8vOS5juaCqOato+WcqOWBmuS4gOS4quaLo+mAieaPkOS6pOOAguWmguaenOS4jeWvue+8jOivt+WIoOmZpOaWh+S7tlxuIgogIlx0JXNcbiIKICLnhLblkI7ph43or5XjgIJcbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3NDgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzM3CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJQbGVhc2UgZW50ZXIgdGhlIGNvbW1pdCBtZXNzYWdlIGZvciB5b3VyIGNoYW5nZXMuIExpbmVzIHN0YXJ0aW5nXG4iCi0id2l0aCAnIycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkgbWVzc2FnZSBhYm9ydHMgdGhlIGNvbW1pdC5cbiIKKyJ3aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkgbWVzc2FnZSBhYm9ydHMgdGhlIGNvbW1pdC5cbiIKIG1zZ3N0ciAiIgotIuivt+S4uuaCqOeahOWPmOabtOi+k+WFpeaPkOS6pOivtOaYjuOAguS7pSAnIycg5byA5aeL55qE6KGM5bCG6KKr5b+955Wl77yM6ICM5LiA5Liq56m655qE5o+Q5LqkXG4iCisi6K+35Li65oKo55qE5Y+Y5pu06L6T5YWl5o+Q5Lqk6K+05piO44CC5LulICclYycg5byA5aeL55qE6KGM5bCG6KKr5b+955Wl77yM6ICM5LiA5Liq56m655qE5o+Q5LqkXG4iCiAi6K+05piO5bCG5Lya57uI5q2i5o+Q5Lqk44CCXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzUzCisjOiBidWlsdGluL2NvbW1pdC5jOjc0MgorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiUGxlYXNlIGVudGVyIHRoZSBjb21taXQgbWVzc2FnZSBmb3IgeW91ciBjaGFuZ2VzLiBMaW5lcyBzdGFydGluZ1xuIgotIndpdGggJyMnIHdpbGwgYmUga2VwdDsgeW91IG1heSByZW1vdmUgdGhlbSB5b3Vyc2VsZiBpZiB5b3Ugd2FudCB0by5cbiIKKyJ3aXRoICclYycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIHlvdXJzZWxmIGlmIHlvdSB3YW50IHRvLlxuIgogIkFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iCiBtc2dzdHIgIiIKLSLor7fkuLrmgqjnmoTlj5jmm7TovpPlhaXmj5DkuqTor7TmmI7jgILku6UgJyMnIOW8gOWni+eahOihjOWwhuiiq+S/neeVme+8jOaCqOWPr+S7peWIoOmZpOWug+S7rFxuIgotIuWmguaenOaCqOaDs+i/meagt+WBmueahOivneOAguiAjOS4gOS4quepuueahOaPkOS6pOivtOaYjuWwhuS8mue7iOatouaPkOS6pOOAglxuIgorIuivt+S4uuaCqOeahOWPmOabtOi+k+WFpeaPkOS6pOivtOaYjuOAguS7pSAnJWMnIOW8gOWni+eahOihjOWwhuiiq+S/neeVme+8jOWmguaenOaCqOWOn+aEj1xuIgorIuS5n+WPr+S7peWIoOmZpOWug+S7rOOAguS4gOS4quepuueahOaPkOS6pOivtOaYjuWwhuS8mue7iOatouaPkOS6pOOAglxuIgogCiAjICDor5HogIXvvJrkuLrkv53or4HlnKjovpPlh7rkuK3lr7npvZDvvIzms6jmhI/osIPmlbTlj6XkuK3nqbrmoLzvvIEKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzY2CisjOiBidWlsdGluL2NvbW1pdC5jOjc1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIlc0F1dGhvcjogICAgJXMiCiBtc2dzdHIgIiVz5L2c6ICF77yaICAgICAlcyIKIAogIyAg6K+R6ICF77ya5Li65L+d6K+B5Zyo6L6T5Ye65Lit5a+56b2Q77yM5rOo5oSP6LCD5pW05Y+l5Lit56m65qC877yBCi0jOiBidWlsdGluL2NvbW1pdC5jOjc3MworIzogYnVpbHRpbi9jb21taXQuYzo3NjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXNDb21taXR0ZXI6ICVzIgogbXNnc3RyICIlc+aPkOS6pOiAhe+8miAgICVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjc5MworIzogYnVpbHRpbi9jb21taXQuYzo3ODIKIG1zZ2lkICJDYW5ub3QgcmVhZCBpbmRleCIKIG1zZ3N0ciAi5peg5rOV6K+75Y+W57Si5byVIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjgzMAorIzogYnVpbHRpbi9jb21taXQuYzo4MTkKIG1zZ2lkICJFcnJvciBidWlsZGluZyB0cmVlcyIKIG1zZ3N0ciAi5peg5rOV5Yib5bu65qCR5a+56LGhIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjg0NSBidWlsdGluL3RhZy5jOjM2MQorIzogYnVpbHRpbi9jb21taXQuYzo4MzQgYnVpbHRpbi90YWcuYzozNTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiUGxlYXNlIHN1cHBseSB0aGUgbWVzc2FnZSB1c2luZyBlaXRoZXIgLW0gb3IgLUYgb3B0aW9uLlxuIgotbXNnc3RyICLor7fkvb/nlKggLW0g5oiW6ICFIC1GIOmAiemhueaPkOS+m+aPkOS6pOivtOaYjuOAglxuIgorbXNnc3RyICLor7fkvb/nlKggLW0g5oiWIC1GIOmAiemhueaPkOS+m+aPkOS6pOivtOaYjuOAglxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk0MgorIzogYnVpbHRpbi9jb21taXQuYzo5MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gZXhpc3RpbmcgYXV0aG9yIGZvdW5kIHdpdGggJyVzJyIKIG1zZ3N0ciAi5rKh5pyJ5om+5Yiw5Yy56YWNICclcycg55qE5L2c6ICFIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk1NyBidWlsdGluL2NvbW1pdC5jOjExNTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTQ2IGJ1aWx0aW4vY29tbWl0LmM6MTE0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIHVudHJhY2tlZCBmaWxlcyBtb2RlICclcyciCiBtc2dzdHIgIuaXoOaViOeahOacqui/vei4quaWh+S7tuWPguaVsCAnJXMnIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk5NworIzogYnVpbHRpbi9jb21taXQuYzo5NzYKIG1zZ2lkICJVc2luZyBib3RoIC0tcmVzZXQtYXV0aG9yIGFuZCAtLWF1dGhvciBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICLlkIzml7bkvb/nlKggLS1yZXNldC1hdXRob3Ig5ZKMIC0tYXV0aG9yIOayoeacieaEj+S5iSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDA4CisjOiBidWlsdGluL2NvbW1pdC5jOjk4NwogbXNnaWQgIllvdSBoYXZlIG5vdGhpbmcgdG8gYW1lbmQuIgogbXNnc3RyICLmgqjmsqHmnInlj6/kv67ooaXnmoTmj5DkuqTjgIIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAxMQorIzogYnVpbHRpbi9jb21taXQuYzo5OTAKIG1zZ2lkICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBtZXJnZSAtLSBjYW5ub3QgYW1lbmQuIgogbXNnc3RyICLmgqjmraPlpITkuo7kuIDkuKrlkIjlubbov4fnqIvkuK0gLS0g5peg5rOV5L+u6KGl5o+Q5Lqk44CCIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTkyCiBtc2dpZCAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgY2hlcnJ5LXBpY2sgLS0gY2Fubm90IGFtZW5kLiIKIG1zZ3N0ciAi5oKo5q2j5aSE5LqO5LiA5Liq5ouj6YCJ6L+H56iL5LitIC0tIOaXoOazleS/ruihpeaPkOS6pOOAgiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDE2CisjOiBidWlsdGluL2NvbW1pdC5jOjk5NQogbXNnaWQgIk9wdGlvbnMgLS1zcXVhc2ggYW5kIC0tZml4dXAgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiCi1tc2dzdHIgIumAiemhuSAtLXNxdWFzaCDlkowgLS1maXh1cCDkuI3og73lhbHnlKgiCittc2dzdHIgIumAiemhuSAtLXNxdWFzaCDlkowgLS1maXh1cCDkuI3og73lkIzml7bkvb/nlKgiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAyNgorIzogYnVpbHRpbi9jb21taXQuYzoxMDA1CiBtc2dpZCAiT25seSBvbmUgb2YgLWMvLUMvLUYvLS1maXh1cCBjYW4gYmUgdXNlZC4iCiBtc2dzdHIgIuWPquiDveeUqOS4gOS4qiAtYy8tQy8tRi8tLWZpeHVwIOmAiemhueOAgiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDI4CisjOiBidWlsdGluL2NvbW1pdC5jOjEwMDcKIG1zZ2lkICJPcHRpb24gLW0gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggLWMvLUMvLUYvLS1maXh1cC4iCi1tc2dzdHIgIumAiemhuSAtbSDkuI3og73lkowgLWMvLUMvLUYvLS1maXh1cCDlhbHnlKjjgIIiCittc2dzdHIgIumAiemhuSAtbSDkuI3og73lkowgLWMvLUMvLUYvLS1maXh1cCDlkIzml7bkvb/nlKjjgIIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzNgorIzogYnVpbHRpbi9jb21taXQuYzoxMDE1CiBtc2dpZCAiLS1yZXNldC1hdXRob3IgY2FuIGJlIHVzZWQgb25seSB3aXRoIC1DLCAtYyBvciAtLWFtZW5kLiIKLW1zZ3N0ciAiLS1yZXNldC1hdXRob3Ig5Y+q6IO95ZKMIC1D44CBLWMg5oiWIC0tYW1lbmQg5YWx55So44CCIgorbXNnc3RyICItLXJlc2V0LWF1dGhvciDlj6rog73lkowgLUPjgIEtYyDmiJYgLS1hbWVuZCDlkIzml7bkvb/nlKjjgIIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1MworIzogYnVpbHRpbi9jb21taXQuYzoxMDMyCiBtc2dpZCAiT25seSBvbmUgb2YgLS1pbmNsdWRlLy0tb25seS8tLWFsbC8tLWludGVyYWN0aXZlLy0tcGF0Y2ggY2FuIGJlIHVzZWQuIgogbXNnc3RyICLlj6rog73nlKjkuIDkuKogLS1pbmNsdWRlLy0tb25seS8tLWFsbC8tLWludGVyYWN0aXZlLy0tcGF0Y2gg6YCJ6aG544CCIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzNAogbXNnaWQgIk5vIHBhdGhzIHdpdGggLS1pbmNsdWRlLy0tb25seSBkb2VzIG5vdCBtYWtlIHNlbnNlLiIKIG1zZ3N0ciAi5Y+C5pWwIC0taW5jbHVkZS8tLW9ubHkg5LiN6Lef6Lev5b6E5rKh5pyJ5oSP5LmJ44CCIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzNgogbXNnaWQgIkNsZXZlci4uLiBhbWVuZGluZyB0aGUgbGFzdCBvbmUgd2l0aCBkaXJ0eSBpbmRleC4iCiBtc2dzdHIgIuiBquaYji4uLiDlnKjntKLlvJXkuI3lubLlh4DkuIvkv67ooaXmnIDlkI7nmoTmj5DkuqTjgIIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1OQorIzogYnVpbHRpbi9jb21taXQuYzoxMDM4CiBtc2dpZCAiRXhwbGljaXQgcGF0aHMgc3BlY2lmaWVkIHdpdGhvdXQgLWkgbm9yIC1vOyBhc3N1bWluZyAtLW9ubHkgcGF0aHMuLi4iCiBtc2dzdHIgIuaMh+WumuS6huaYjuehrueahOi3r+W+hOiAjOayoeacieS9v+eUqCAtaSDmiJYgLW8g6YCJ6aG577yb6K6k5Li65pivIC0tb25seSBwYXRocy4uLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDY5IGJ1aWx0aW4vdGFnLmM6NTc3CisjOiBidWlsdGluL2NvbW1pdC5jOjEwNDggYnVpbHRpbi90YWcuYzo1NzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBjbGVhbnVwIG1vZGUgJXMiCiBtc2dzdHIgIuaXoOaViOeahOa4heeQhuaooeW8jyAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDc0CisjOiBidWlsdGluL2NvbW1pdC5jOjEwNTMKIG1zZ2lkICJQYXRocyB3aXRoIC1hIGRvZXMgbm90IG1ha2Ugc2Vuc2UuIgotbXNnc3RyICLot6/lvoTlkowgLWEg6YCJ6aG55YWx55So5rKh5pyJ5oSP5LmJ44CCIgorbXNnc3RyICLot6/lvoTlkowgLWEg6YCJ6aG55ZCM5pe25L2/55So5rKh5pyJ5oSP5LmJ44CCIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyNTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1OSBidWlsdGluL2NvbW1pdC5jOjExOTQKK21zZ2lkICItLWxvbmcgYW5kIC16IGFyZSBpbmNvbXBhdGlibGUiCittc2dzdHIgIi0tbG9uZyDlkowgLXog6YCJ6aG55LiN5YW85a65IgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNTQgYnVpbHRpbi9jb21taXQuYzoxMzkwCittc2dpZCAic2hvdyBzdGF0dXMgY29uY2lzZWx5IgorbXNnc3RyICLku6XnroDmtIHnmoTmoLzlvI/mmL7npLrnirbmgIEiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1NiBidWlsdGluL2NvbW1pdC5jOjEzOTIKK21zZ2lkICJzaG93IGJyYW5jaCBpbmZvcm1hdGlvbiIKK21zZ3N0ciAi5pi+56S65YiG5pSv5L+h5oGvIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNTggYnVpbHRpbi9jb21taXQuYzoxMzk0IGJ1aWx0aW4vcHVzaC5jOjQyNgorbXNnaWQgIm1hY2hpbmUtcmVhZGFibGUgb3V0cHV0IgorbXNnc3RyICLmnLrlmajlj6/or7vnmoTovpPlh7oiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2MSBidWlsdGluL2NvbW1pdC5jOjEzOTYKK21zZ2lkICJzaG93IHN0YXR1cyBpbiBsb25nIGZvcm1hdCAoZGVmYXVsdCkiCittc2dzdHIgIuS7pemVv+agvOW8j+aYvuekuueKtuaAge+8iOm7mOiupO+8iSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTY0IGJ1aWx0aW4vY29tbWl0LmM6MTM5OQorbXNnaWQgInRlcm1pbmF0ZSBlbnRyaWVzIHdpdGggTlVMIgorbXNnc3RyICLmnaHnm67ku6VOVUzlrZfnrKbnu5PlsL4iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2NiBidWlsdGluL2NvbW1pdC5jOjE0MDIgYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY1OQorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2MiBidWlsdGluL3RhZy5jOjQ1OQorbXNnaWQgIm1vZGUiCittc2dzdHIgIuaooeW8jyIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTY3IGJ1aWx0aW4vY29tbWl0LmM6MTQwMgorbXNnaWQgInNob3cgdW50cmFja2VkIGZpbGVzLCBvcHRpb25hbCBtb2RlczogYWxsLCBub3JtYWwsIG5vLiAoRGVmYXVsdDogYWxsKSIKK21zZ3N0ciAi5pi+56S65pyq6Lef6Liq55qE5paH5Lu277yM4oCc5qih5byP4oCd55qE5Y+v6YCJ5Y+C5pWw77yaYWxs44CBbm9ybWFs44CBbm/jgILvvIjpu5jorqTvvJphbGzvvIkiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3MAorbXNnaWQgInNob3cgaWdub3JlZCBmaWxlcyIKK21zZ3N0ciAi5pi+56S65b+955Wl55qE5paH5Lu2IgorCisjOiBidWlsdGluL2NvbW1pdC5jOjExNzEgcGFyc2Utb3B0aW9ucy5oOjE1MQorbXNnaWQgIndoZW4iCittc2dzdHIgIuS9leaXtiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTcyCittc2dpZCAiIgorImlnbm9yZSBjaGFuZ2VzIHRvIHN1Ym1vZHVsZXMsIG9wdGlvbmFsIHdoZW46IGFsbCwgZGlydHksIHVudHJhY2tlZC4gIgorIihEZWZhdWx0OiBhbGwpIgorbXNnc3RyICIiCisi5b+955Wl5a2Q5qih57uE55qE5pu05pS577yM4oCc5L2V5pe24oCd55qE5Y+v6YCJ5Y+C5pWw77yaYWxs44CBZGlydHnjgIF1bnRyYWNrZWTjgILvvIjpu5jorqTvvJphbGzvvIkiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3NAorbXNnaWQgImxpc3QgdW50cmFja2VkIGZpbGVzIGluIGNvbHVtbnMiCittc2dzdHIgIuS7peWIl+eahOaWueW8j+aYvuekuuacqui3n+i4queahOaWh+S7tiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMjQ4CiBtc2dpZCAiY291bGRuJ3QgbG9vayB1cCBuZXdseSBjcmVhdGVkIGNvbW1pdCIKIG1zZ3N0ciAi5peg5rOV5om+5Yiw5paw5Yib5bu655qE5o+Q5LqkIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyNTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI1MAogbXNnaWQgImNvdWxkIG5vdCBwYXJzZSBuZXdseSBjcmVhdGVkIGNvbW1pdCIKIG1zZ3N0ciAi5LiN6IO96Kej5p6Q5paw5Yib5bu655qE5o+Q5LqkIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzMDAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI5MQogbXNnaWQgImRldGFjaGVkIEhFQUQiCiBtc2dzdHIgIuWIhuemu+WktOaMh+mSiCIKIAogIyAg6K+R6ICF77ya5Lit5paH5a2X56ym5Liy5ou85o6l77yM5Y+v5Yig6Zmk5YmN5a+856m65qC8Ci0jOiBidWlsdGluL2NvbW1pdC5jOjEzMDIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI5MwogbXNnaWQgIiAocm9vdC1jb21taXQpIgogbXNnc3RyICLvvIjmoLnmj5DkuqTvvIkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ0NgorIzogYnVpbHRpbi9jb21taXQuYzoxMzYwCittc2dpZCAic3VwcHJlc3Mgc3VtbWFyeSBhZnRlciBzdWNjZXNzZnVsIGNvbW1pdCIKK21zZ3N0ciAi5o+Q5Lqk5oiQ5Yqf5ZCO5LiN5pi+56S65qaC6L+w5L+h5oGvIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjEKK21zZ2lkICJzaG93IGRpZmYgaW4gY29tbWl0IG1lc3NhZ2UgdGVtcGxhdGUiCittc2dzdHIgIuWcqOaPkOS6pOivtOaYjuaooeadv+mHjOaYvuekuuW3ruW8giIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzYzCittc2dpZCAiQ29tbWl0IG1lc3NhZ2Ugb3B0aW9ucyIKK21zZ3N0ciAi5o+Q5Lqk6K+05piO6YCJ6aG5IgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjQgYnVpbHRpbi90YWcuYzo0NTcKK21zZ2lkICJyZWFkIG1lc3NhZ2UgZnJvbSBmaWxlIgorbXNnc3RyICLku47mlofku7bkuK3or7vlj5bmj5DkuqTor7TmmI4iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NQorbXNnaWQgImF1dGhvciIKK21zZ3N0ciAi5L2c6ICFIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjUKK21zZ2lkICJvdmVycmlkZSBhdXRob3IgZm9yIGNvbW1pdCIKK21zZ3N0ciAi5o+Q5Lqk5pe26KaG55uW5L2c6ICFIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjYgYnVpbHRpbi9nYy5jOjE3OAorbXNnaWQgImRhdGUiCittc2dzdHIgIuaXpeacnyIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzY2Cittc2dpZCAib3ZlcnJpZGUgZGF0ZSBmb3IgY29tbWl0IgorbXNnc3RyICLmj5DkuqTml7bopobnm5bml6XmnJ8iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NyBidWlsdGluL21lcmdlLmM6MjA4IGJ1aWx0aW4vbm90ZXMuYzo1MzMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2OTAgYnVpbHRpbi90YWcuYzo0NTUKK21zZ2lkICJtZXNzYWdlIgorbXNnc3RyICLor7TmmI4iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NworbXNnaWQgImNvbW1pdCBtZXNzYWdlIgorbXNnc3RyICLmj5DkuqTor7TmmI4iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2OAorbXNnaWQgInJldXNlIGFuZCBlZGl0IG1lc3NhZ2UgZnJvbSBzcGVjaWZpZWQgY29tbWl0IgorbXNnc3RyICLph43nlKjlubbnvJbovpHmjIflrprmj5DkuqTnmoTmj5DkuqTor7TmmI4iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2OQorbXNnaWQgInJldXNlIG1lc3NhZ2UgZnJvbSBzcGVjaWZpZWQgY29tbWl0IgorbXNnc3RyICLph43nlKjmjIflrprmj5DkuqTnmoTmj5DkuqTor7TmmI4iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MAorbXNnaWQgInVzZSBhdXRvc3F1YXNoIGZvcm1hdHRlZCBtZXNzYWdlIHRvIGZpeHVwIHNwZWNpZmllZCBjb21taXQiCittc2dzdHIgIuS9v+eUqCBhdXRvc3F1YXNoIOagvOW8j+eahOaPkOS6pOivtOaYjueUqOS7peS/ruato+aMh+WumueahOaPkOS6pCIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzcxCittc2dpZCAidXNlIGF1dG9zcXVhc2ggZm9ybWF0dGVkIG1lc3NhZ2UgdG8gc3F1YXNoIHNwZWNpZmllZCBjb21taXQiCittc2dzdHIgIuS9v+eUqCBhdXRvc3F1YXNoIOagvOW8j+eahOaPkOS6pOivtOaYjueUqOS7peWOi+e8qeiHs+aMh+WumueahOaPkOS6pCIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzcyCittc2dpZCAidGhlIGNvbW1pdCBpcyBhdXRob3JlZCBieSBtZSBub3cgKHVzZWQgd2l0aCAtQy8tYy8tLWFtZW5kKSIKK21zZ3N0ciAi546w5Zyo5bCG6K+l5o+Q5Lqk55qE5L2c6ICF5pS55Li65oiR77yI5ZKMIC1DLy1jLy0tYW1lbmQg5Y+C5pWw5YWx55So77yJIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzMgYnVpbHRpbi9sb2cuYzoxMTEzIGJ1aWx0aW4vcmV2ZXJ0LmM6MTA5Cittc2dpZCAiYWRkIFNpZ25lZC1vZmYtYnk6IgorbXNnc3RyICLmt7vliqAgU2lnbmVkLW9mZi1ieTog562+5ZCNIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzQKK21zZ2lkICJ1c2Ugc3BlY2lmaWVkIHRlbXBsYXRlIGZpbGUiCittc2dzdHIgIuS9v+eUqOaMh+WumueahOaooeadv+aWh+S7tiIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzc1Cittc2dpZCAiZm9yY2UgZWRpdCBvZiBjb21taXQiCittc2dzdHIgIuW8uuWItue8lui+keaPkOS6pCIKKworIyAg6K+R6ICF77ya5Y+v6YCJ5YC877yM5LiN6IO957+76K+R77yI5oiW5piv5Y6f5paH5Lit56yU6K+v77yM5bqU5Li6IG1vZGXvvIkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NgorbXNnaWQgImRlZmF1bHQiCittc2dzdHIgImRlZmF1bHQiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NiBidWlsdGluL3RhZy5jOjQ2MAorbXNnaWQgImhvdyB0byBzdHJpcCBzcGFjZXMgYW5kICNjb21tZW50cyBmcm9tIG1lc3NhZ2UiCittc2dzdHIgIuiuvue9ruWmguS9leWIoOmZpOaPkOS6pOivtOaYjumHjOeahOepuuagvOWSjCPms6jph4oiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NworbXNnaWQgImluY2x1ZGUgc3RhdHVzIGluIGNvbW1pdCBtZXNzYWdlIHRlbXBsYXRlIgorbXNnc3RyICLlnKjmj5DkuqTor7TmmI7mqKHmnb/ph4zljIXlkKvnirbmgIHkv6Hmga8iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3OCBidWlsdGluL21lcmdlLmM6MjE1IGJ1aWx0aW4vdGFnLmM6NDYxCittc2dpZCAia2V5IGlkIgorbXNnc3RyICJrZXkgaWQiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3OSBidWlsdGluL21lcmdlLmM6MjE2Cittc2dpZCAiR1BHIHNpZ24gY29tbWl0IgorbXNnc3RyICJHUEcg5o+Q5Lqk562+5ZCNIgorCisjLiBlbmQgY29tbWl0IG1lc3NhZ2Ugb3B0aW9ucworIzogYnVpbHRpbi9jb21taXQuYzoxMzgyCittc2dpZCAiQ29tbWl0IGNvbnRlbnRzIG9wdGlvbnMiCittc2dzdHIgIuaPkOS6pOWGheWuuemAiemhuSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMzgzCittc2dpZCAiY29tbWl0IGFsbCBjaGFuZ2VkIGZpbGVzIgorbXNnc3RyICLmj5DkuqTmiYDmnInmlLnliqjnmoTmlofku7YiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NAorbXNnaWQgImFkZCBzcGVjaWZpZWQgZmlsZXMgdG8gaW5kZXggZm9yIGNvbW1pdCIKK21zZ3N0ciAi5re75Yqg5oyH5a6a55qE5paH5Lu25Yiw57Si5byV5Yy6562J5b6F5o+Q5LqkIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODUKK21zZ2lkICJpbnRlcmFjdGl2ZWx5IGFkZCBmaWxlcyIKK21zZ3N0ciAi5Lqk5LqS5byP5re75Yqg5paH5Lu2IgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODYKK21zZ2lkICJpbnRlcmFjdGl2ZWx5IGFkZCBjaGFuZ2VzIgorbXNnc3RyICLkuqTkupLlvI/mt7vliqDlj5jmm7QiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NworbXNnaWQgImNvbW1pdCBvbmx5IHNwZWNpZmllZCBmaWxlcyIKK21zZ3N0ciAi5Y+q5o+Q5Lqk5oyH5a6a55qE5paH5Lu2IgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODgKK21zZ2lkICJieXBhc3MgcHJlLWNvbW1pdCBob29rIgorbXNnc3RyICLnu5Xov4cgcHJlLWNvbW1pdCDpkqnlrZAiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4OQorbXNnaWQgInNob3cgd2hhdCB3b3VsZCBiZSBjb21taXR0ZWQiCittc2dzdHIgIuaYvuekuuWwhuimgeaPkOS6pOeahOWGheWuuSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxNDAwCittc2dpZCAiYW1lbmQgcHJldmlvdXMgY29tbWl0IgorbXNnc3RyICLkv67mlLnlhYjliY3nmoTmj5DkuqQiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwMQorbXNnaWQgImJ5cGFzcyBwb3N0LXJld3JpdGUgaG9vayIKK21zZ3N0ciAi57uV6L+HIHBvc3QtcmV3cml0ZSDpkqnlrZAiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwNgorbXNnaWQgIm9rIHRvIHJlY29yZCBhbiBlbXB0eSBjaGFuZ2UiCittc2dzdHIgIuWFgeiuuOS4gOS4quepuuaPkOS6pCIKKworIzogYnVpbHRpbi9jb21taXQuYzoxNDA5Cittc2dpZCAib2sgdG8gcmVjb3JkIGEgY2hhbmdlIHdpdGggYW4gZW1wdHkgbWVzc2FnZSIKK21zZ3N0ciAi5YWB6K6456m655qE5o+Q5Lqk6K+05piOIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjE0NDEKIG1zZ2lkICJjb3VsZCBub3QgcGFyc2UgSEVBRCBjb21taXQiCiBtc2dzdHIgIuS4jeiDveino+aekCBIRUFEIOaPkOS6pCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDg0IGJ1aWx0aW4vbWVyZ2UuYzo1MDkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ3OSBidWlsdGluL21lcmdlLmM6NTEwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBvcGVuICclcycgZm9yIHJlYWRpbmciCiBtc2dzdHIgIuS4jeiDveS4uuivu+WFpeaJk+W8gCAnJXMnIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0OTEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3JydXB0IE1FUkdFX0hFQUQgZmlsZSAoJXMpIgogbXNnc3RyICLmjZ/lnY/nmoQgTUVSR0VfSEVBRCDmlofku7bvvIglc++8iSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDk4CisjOiBidWlsdGluL2NvbW1pdC5jOjE0OTMKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBNRVJHRV9NT0RFIgogbXNnc3RyICLkuI3og73or7vlj5YgTUVSR0VfTU9ERSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTE3CisjOiBidWlsdGluL2NvbW1pdC5jOjE1MTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgY29tbWl0IG1lc3NhZ2U6ICVzIgogbXNnc3RyICLkuI3og73or7vlj5bmj5DkuqTor7TmmI7vvJolcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTMxCisjOiBidWlsdGluL2NvbW1pdC5jOjE1MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWJvcnRpbmcgY29tbWl0OyB5b3UgZGlkIG5vdCBlZGl0IHRoZSBtZXNzYWdlLlxuIgogbXNnc3RyICLnu4jmraLmj5DkuqTvvJvmgqjmnKrmm7TmlLnmnaXoh6rmqKHniYjnmoTmj5DkuqTor7TmmI7jgIJcbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTM2CisjOiBidWlsdGluL2NvbW1pdC5jOjE1MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWJvcnRpbmcgY29tbWl0IGR1ZSB0byBlbXB0eSBjb21taXQgbWVzc2FnZS5cbiIKIG1zZ3N0ciAi57uI5q2i5o+Q5Lqk5Zug5Li65o+Q5Lqk6K+05piO5Li656m644CCXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTU1MSBidWlsdGluL21lcmdlLmM6OTM2IGJ1aWx0aW4vbWVyZ2UuYzo5NjEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU0NiBidWlsdGluL21lcmdlLmM6ODQ3IGJ1aWx0aW4vbWVyZ2UuYzo4NzIKIG1zZ2lkICJmYWlsZWQgdG8gd3JpdGUgY29tbWl0IG9iamVjdCIKIG1zZ3N0ciAi5peg5rOV5YaZ5o+Q5Lqk5a+56LGhIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1NzIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU2NwogbXNnaWQgImNhbm5vdCBsb2NrIEhFQUQgcmVmIgogbXNnc3RyICLml6Dms5XplIHlrpogSEVBRCDlvJXnlKgiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTU3NgorIzogYnVpbHRpbi9jb21taXQuYzoxNTcxCiBtc2dpZCAiY2Fubm90IHVwZGF0ZSBIRUFEIHJlZiIKIG1zZ3N0ciAi5peg5rOV5pu05pawIEhFQUQg5byV55SoIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1ODcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU4MgogbXNnaWQgIiIKICJSZXBvc2l0b3J5IGhhcyBiZWVuIHVwZGF0ZWQsIGJ1dCB1bmFibGUgdG8gd3JpdGVcbiIKICJuZXdfaW5kZXggZmlsZS4gQ2hlY2sgdGhhdCBkaXNrIGlzIG5vdCBmdWxsIG9yIHF1b3RhIGlzXG4iCkBAIC0yNDYwLDQ3ICs0MTk5LDE3OSBAQAogIueJiOacrOW6k+W3suabtOaWsO+8jOS9huaXoOazleWGmSBuZXdfaW5kZXgg5paH5Lu244CC5qOA5p+l5piv5ZCm56OB55uY5bey5ruhXG4iCiAi5oiW56OB55uY6YWN6aKd5bey6ICX5bC977yM54S25ZCO5omn6KGMIFwiZ2l0IHJlc2V0IEhFQURcIiDmgaLlpI3jgIIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzQKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NworbXNnaWQgImdpdCBjb25maWcgW29wdGlvbnNdIgorbXNnc3RyICJnaXQgY29uZmlnIFvpgInpobldIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjUxCittc2dpZCAiQ29uZmlnIGZpbGUgbG9jYXRpb24iCittc2dzdHIgIumFjee9ruaWh+S7tuS9jee9riIKKworIzogYnVpbHRpbi9jb25maWcuYzo1MgorbXNnaWQgInVzZSBnbG9iYWwgY29uZmlnIGZpbGUiCittc2dzdHIgIuS9v+eUqOWFqOWxgOmFjee9ruaWh+S7tiIKKworIzogYnVpbHRpbi9jb25maWcuYzo1MworbXNnaWQgInVzZSBzeXN0ZW0gY29uZmlnIGZpbGUiCittc2dzdHIgIuS9v+eUqOezu+e7n+e6p+mFjee9ruaWh+S7tiIKKworIzogYnVpbHRpbi9jb25maWcuYzo1NAorbXNnaWQgInVzZSByZXBvc2l0b3J5IGNvbmZpZyBmaWxlIgorbXNnc3RyICLkvb/nlKjniYjmnKzlupPnuqfphY3nva7mlofku7YiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTUKK21zZ2lkICJ1c2UgZ2l2ZW4gY29uZmlnIGZpbGUiCittc2dzdHIgIuS9v+eUqOaMh+WumueahOmFjee9ruaWh+S7tiIKKworIzogYnVpbHRpbi9jb25maWcuYzo1NgorbXNnaWQgIkFjdGlvbiIKK21zZ3N0ciAi5pON5L2cIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjU3Cittc2dpZCAiZ2V0IHZhbHVlOiBuYW1lIFt2YWx1ZS1yZWdleF0iCittc2dzdHIgIuiOt+WPluWAvO+8mm5hbWUgW3ZhbHVlLXJlZ2V4XSIKKworIzogYnVpbHRpbi9jb25maWcuYzo1OAorbXNnaWQgImdldCBhbGwgdmFsdWVzOiBrZXkgW3ZhbHVlLXJlZ2V4XSIKK21zZ3N0ciAi6I635b6X5omA5pyJ55qE5YC877yaa2V5IFt2YWx1ZS1yZWdleF0iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTkKK21zZ2lkICJnZXQgdmFsdWVzIGZvciByZWdleHA6IG5hbWUtcmVnZXggW3ZhbHVlLXJlZ2V4XSIKK21zZ3N0ciAi5qC55o2u5q2j5YiZ6KGo6L6+5byP6I635b6X5YC877yabmFtZS1yZWdleCBbdmFsdWUtcmVnZXhdIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjYwCittc2dpZCAicmVwbGFjZSBhbGwgbWF0Y2hpbmcgdmFyaWFibGVzOiBuYW1lIHZhbHVlIFt2YWx1ZV9yZWdleF0iCittc2dzdHIgIuabv+aNouaJgOacieWMuemFjeeahOWPmOmHj++8mm5hbWUgdmFsdWUgW3ZhbHVlX3JlZ2V4XSIKKworIzogYnVpbHRpbi9jb25maWcuYzo2MQorbXNnaWQgImFkZCBhIG5ldyB2YXJpYWJsZTogbmFtZSB2YWx1ZSIKK21zZ3N0ciAi5re75Yqg5LiA5Liq5paw55qE5Y+Y6YeP77yabmFtZSB2YWx1ZSIKKworIzogYnVpbHRpbi9jb25maWcuYzo2MgorbXNnaWQgInJlbW92ZSBhIHZhcmlhYmxlOiBuYW1lIFt2YWx1ZS1yZWdleF0iCittc2dzdHIgIuWIoOmZpOS4gOS4quWPmOmHj++8mm5hbWUgW3ZhbHVlLXJlZ2V4XSIKKworIzogYnVpbHRpbi9jb25maWcuYzo2MworbXNnaWQgInJlbW92ZSBhbGwgbWF0Y2hlczogbmFtZSBbdmFsdWUtcmVnZXhdIgorbXNnc3RyICLliKDpmaTmiYDmnInljLnphY3pobnvvJpuYW1lIFt2YWx1ZS1yZWdleF0iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjQKK21zZ2lkICJyZW5hbWUgc2VjdGlvbjogb2xkLW5hbWUgbmV3LW5hbWUiCittc2dzdHIgIumHjeWRveWQjeWwj+iKgu+8mm9sZC1uYW1lIG5ldy1uYW1lIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjY1Cittc2dpZCAicmVtb3ZlIGEgc2VjdGlvbjogbmFtZSIKK21zZ3N0ciAi5Yig6Zmk5LiA5Liq5bCP6IqC77yabmFtZSIKKworIzogYnVpbHRpbi9jb25maWcuYzo2NgorbXNnaWQgImxpc3QgYWxsIgorbXNnc3RyICLliJflh7rmiYDmnIkiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjcKK21zZ2lkICJvcGVuIGFuIGVkaXRvciIKK21zZ3N0ciAi5omT5byA5LiA5Liq57yW6L6R5ZmoIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjY4IGJ1aWx0aW4vY29uZmlnLmM6NjkKK21zZ2lkICJzbG90IgorbXNnc3RyICJzbG90IgorCisjOiBidWlsdGluL2NvbmZpZy5jOjY4Cittc2dpZCAiZmluZCB0aGUgY29sb3IgY29uZmlndXJlZDogW2RlZmF1bHRdIgorbXNnc3RyICLmib7liLDphY3nva7nmoTpopzoibLvvJpb6buY6K6kXSIKKworIzogYnVpbHRpbi9jb25maWcuYzo2OQorbXNnaWQgImZpbmQgdGhlIGNvbG9yIHNldHRpbmc6IFtzdGRvdXQtaXMtdHR5XSIKK21zZ3N0ciAi5om+5Yiw6aKc6Imy6K6+572u77yaW3N0ZG91dC1pcy10dHldIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjcwCittc2dpZCAiVHlwZSIKK21zZ3N0ciAi57G75Z6LIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjcxCittc2dpZCAidmFsdWUgaXMgXCJ0cnVlXCIgb3IgXCJmYWxzZVwiIgorbXNnc3RyICLlgLzmmK8gXCJ0cnVlXCIg5oiWIFwiZmFsc2VcIiIKKworIzogYnVpbHRpbi9jb25maWcuYzo3MgorbXNnaWQgInZhbHVlIGlzIGRlY2ltYWwgbnVtYmVyIgorbXNnc3RyICLlgLzmmK/ljYHov5vliLbmlbAiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzMKK21zZ2lkICJ2YWx1ZSBpcyAtLWJvb2wgb3IgLS1pbnQiCittc2dzdHIgIuWAvOaYryAtLWJvb2wgb3IgLS1pbnQiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzQKK21zZ2lkICJ2YWx1ZSBpcyBhIHBhdGggKGZpbGUgb3IgZGlyZWN0b3J5IG5hbWUpIgorbXNnc3RyICLlgLzmmK/kuIDkuKrot6/lvoTvvIjmlofku7bmiJbnm67lvZXlkI3vvIkiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzUKK21zZ2lkICJPdGhlciIKK21zZ3N0ciAi5YW25a6DIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjc2Cittc2dpZCAidGVybWluYXRlIHZhbHVlcyB3aXRoIE5VTCBieXRlIgorbXNnc3RyICLnu4jmraLlgLzmmK9OVUzlrZfoioIiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzcKK21zZ2lkICJyZXNwZWN0IGluY2x1ZGUgZGlyZWN0aXZlcyBvbiBsb29rdXAiCittc2dzdHIgIuafpeivouaXtuWPgueFpyBpbmNsdWRlIOaMh+S7pOmAkuW9kuafpeaJviIKKworIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6ODIKK21zZ2lkICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIFstSCB8IC0taHVtYW4tcmVhZGFibGVdIgorbXNnc3RyICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIFstSCB8IC0taHVtYW4tcmVhZGFibGVdIgorCisjOiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo5NworbXNnaWQgInByaW50IHNpemVzIGluIGh1bWFuIHJlYWRhYmxlIGZvcm1hdCIKK21zZ3N0ciAi5Lul55So5oi35Y+v6K+755qE5qC85byP5pi+56S65aSn5bCPIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MTUKK21zZ2lkICJnaXQgZGVzY3JpYmUgW29wdGlvbnNdIDxjb21taXR0aXNoPioiCittc2dzdHIgImdpdCBkZXNjcmliZSBb6YCJ6aG5XSA85o+Q5Lqk5Y+3PioiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoxNgorbXNnaWQgImdpdCBkZXNjcmliZSBbb3B0aW9uc10gLS1kaXJ0eSIKK21zZ3N0ciAiZ2l0IGRlc2NyaWJlIFvpgInpobldIC0tZGlydHkiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiYW5ub3RhdGVkIHRhZyAlcyBub3QgYXZhaWxhYmxlIgogbXNnc3RyICLms6jph4ogdGFnICVzIOaXoOaViCIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzOAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJhbm5vdGF0ZWQgdGFnICVzIGhhcyBubyBlbWJlZGRlZCBuYW1lIgogbXNnc3RyICLms6jph4ogdGFnICVzIOayoeacieW1jOWFpeWQjeensCIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI0MAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJ0YWcgJyVzJyBpcyByZWFsbHkgJyVzJyBoZXJlIgogbXNnc3RyICJ0YWcgJyVzJyDnmoTnoa7mmK/lnKggJyVzJyIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI2NworIzogYnVpbHRpbi9kZXNjcmliZS5jOjI2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgYSB2YWxpZCBvYmplY3QgbmFtZSAlcyIKIG1zZ3N0ciAi5LiN5piv5LiA5Liq5pyJ5pWI55qE5a+56LGh5ZCNICVzIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjcwCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGlzIG5vdCBhIHZhbGlkICclcycgb2JqZWN0IgogbXNnc3RyICIlcyDkuI3mmK/kuIDkuKrmnInmlYjnmoQgJyVzJyDlr7nosaEiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODcKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODYKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gdGFnIGV4YWN0bHkgbWF0Y2hlcyAnJXMnIgogbXNnc3RyICLmsqHmnIkgdGFnIOWHhuehruWMuemFjSAnJXMnIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg5CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg4CiAjLCBjLWZvcm1hdAogbXNnaWQgInNlYXJjaGluZyB0byBkZXNjcmliZSAlc1xuIgogbXNnc3RyICLmkJzntKLmj4/ov7AgJXNcbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjMyOQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjMyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJmaW5pc2hlZCBzZWFyY2ggYXQgJXNcbiIKIG1zZ3N0ciAi5a6M5oiQ5pCc57SiICVzXG4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTMKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIk5vIGFubm90YXRlZCB0YWdzIGNhbiBkZXNjcmliZSAnJXMnLlxuIgpAQCAtMjUwOSw3ICs0MzgwLDcgQEAKICLmsqHmnInms6jph4ogdGFnIOiDveaPj+i/sCAnJXMn44CCXG4iCiAi54S26ICM77yM5pyJ6Z2e5rOo6YeKIHRhZ++8muWwneivlSAtLXRhZ3PjgIIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTcKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIk5vIHRhZ3MgY2FuIGRlc2NyaWJlICclcycuXG4iCkBAIC0yNTE4LDEyICs0Mzg5LDEyIEBACiAi5rKh5pyJ5rOo6YeKIHRhZyDog73mj4/ov7AgJyVzJ+OAglxuIgogIuWwneivlSAtLWFsd2F5c++8jOaIluiAheWIm+W7uuS4gOS6myB0YWfjgIIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNzgKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNzcKICMsIGMtZm9ybWF0CiBtc2dpZCAidHJhdmVyc2VkICVsdSBjb21taXRzXG4iCiBtc2dzdHIgIuW3sumBjeWOhiAlbHUg5Liq5o+Q5LqkXG4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozODEKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozODAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIm1vcmUgdGhhbiAlaSB0YWdzIGZvdW5kOyBsaXN0ZWQgJWkgbW9zdCByZWNlbnRcbiIKQEAgLTI1MzIsMTIzICs0NDAzLDI5MiBAQAogIuWPkeeOsOWkmuS6jiAlaSDkuKogdGFn77yM5YiX5Ye65pyA6L+R55qEICVpIOS4qlxuIgogIuWcqCAlcyDmlL7lvIPmkJzntKJcbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQzNgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwMgorbXNnaWQgImZpbmQgdGhlIHRhZyB0aGF0IGNvbWVzIGFmdGVyIHRoZSBjb21taXQiCittc2dzdHIgIuWvu+aJvuaPkOS6pOS5i+WQjueahCB0YWfvvIjnlKjkuo7mj4/ov7Dmj5DkuqTvvIkiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDMKK21zZ2lkICJkZWJ1ZyBzZWFyY2ggc3RyYXRlZ3kgb24gc3RkZXJyIgorbXNnc3RyICLlnKjmoIflh4bplJnor6/kuIrosIPor5XmkJzntKLnrZbnlaUiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDQKK21zZ2lkICJ1c2UgYW55IHJlZiIKK21zZ3N0ciAi5L2/55So5Lu75oSP5byV55SoIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA1Cittc2dpZCAidXNlIGFueSB0YWcsIGV2ZW4gdW5hbm5vdGF0ZWQiCittc2dzdHIgIuS9v+eUqOS7u+aEjyB0YWfvvIzljbPkvb/mnKrluKbms6jop6MiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDYKK21zZ2lkICJhbHdheXMgdXNlIGxvbmcgZm9ybWF0IgorbXNnc3RyICLlp4vnu4jkvb/nlKjplb/mj5DkuqTlj7fmoLzlvI8iCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDkKK21zZ2lkICJvbmx5IG91dHB1dCBleGFjdCBtYXRjaGVzIgorbXNnc3RyICLlj6rovpPlh7rnsr7noa7ljLnphY0iCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTEKK21zZ2lkICJjb25zaWRlciA8bj4gbW9zdCByZWNlbnQgdGFncyAoZGVmYXVsdDogMTApIgorbXNnc3RyICLogIPomZHmnIDov5EgPG4+IOS4qiB0YWdz77yI6buY6K6k77yaMTDvvIkiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTMKK21zZ2lkICJvbmx5IGNvbnNpZGVyIHRhZ3MgbWF0Y2hpbmcgPHBhdHRlcm4+IgorbXNnc3RyICLlj6rogIPomZHljLnphY0gPOaooeW8jz4g55qEIHRhZ3MiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTUgYnVpbHRpbi9uYW1lLXJldi5jOjIzOAorbXNnaWQgInNob3cgYWJicmV2aWF0ZWQgY29tbWl0IG9iamVjdCBhcyBmYWxsYmFjayIKK21zZ3N0ciAi5pi+56S6566A5YaZ55qE5o+Q5Lqk5Y+35L2c5Li65ZCO5aSHIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE2Cittc2dpZCAibWFyayIKK21zZ3N0ciAi5qCH6K6wIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE3Cittc2dpZCAiYXBwZW5kIDxtYXJrPiBvbiBkaXJ0eSB3b3JraW5nIHRyZWUgKGRlZmF1bHQ6IFwiLWRpcnR5XCIpIgorbXNnc3RyICLoi6Xlt6XkvZzljLrohI/vvIjmnInlj5jmm7TvvInlnKjnu5PlsL7mt7vliqAgPOagh+iusD7vvIjpu5jorqTvvJpcIi1kaXJ0eVwi77yJIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDM1CiBtc2dpZCAiLS1sb25nIGlzIGluY29tcGF0aWJsZSB3aXRoIC0tYWJicmV2PTAiCiBtc2dzdHIgIi0tbG9uZyDkuI4gLS1hYmJyZXY9MCDkuI3lhbzlrrkiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0NjIKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0NjEKIG1zZ2lkICJObyBuYW1lcyBmb3VuZCwgY2Fubm90IGRlc2NyaWJlIGFueXRoaW5nLiIKIG1zZ3N0ciAi5rKh5pyJ5Y+R546w5ZCN56ew77yM5peg5rOV5o+P6L+w5Lu75L2V5Lic6KW/44CCIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDgyCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDgxCiBtc2dpZCAiLS1kaXJ0eSBpcyBpbmNvbXBhdGlibGUgd2l0aCBjb21taXR0aXNoZXMiCi1tc2dzdHIgIi0tZGlydHkg5LiN6IO95LiO5o+Q5Lqk5YWx55SoIgorbXNnc3RyICItLWRpcnR5IOS4jeiDveS4juaPkOS6pOWQjOaXtuS9v+eUqCIKIAotIzogYnVpbHRpbi9kaWZmLmM6NzcKKyM6IGJ1aWx0aW4vZGlmZi5jOjc5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6IG5vdCBhIHJlZ3VsYXIgZmlsZSBvciBzeW1saW5rIgogbXNnc3RyICInJXMn77ya5LiN5piv5LiA5Liq5q2j6KeE5paH5Lu25oiW56ym5Y+36ZO+5o6lIgogCi0jOiBidWlsdGluL2RpZmYuYzoyMjAKKyM6IGJ1aWx0aW4vZGlmZi5jOjIyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG9wdGlvbjogJXMiCiBtc2dzdHIgIuaXoOaViOmAiemhue+8miVzIgogCi0jOiBidWlsdGluL2RpZmYuYzoyOTcKKyM6IGJ1aWx0aW4vZGlmZi5jOjMwNQogbXNnaWQgIk5vdCBhIGdpdCByZXBvc2l0b3J5IgogbXNnc3RyICLkuI3mmK/kuIDkuKogZ2l0IOeJiOacrOW6kyIKIAotIzogYnVpbHRpbi9kaWZmLmM6MzQ3CisjOiBidWlsdGluL2RpZmYuYzozNDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBvYmplY3QgJyVzJyBnaXZlbi4iCiBtc2dzdHIgIuaPkOS+m+S6huaXoOaViOWvueixoSAnJXMn44CCIgogCi0jOiBidWlsdGluL2RpZmYuYzozNTIKKyM6IGJ1aWx0aW4vZGlmZi5jOjM1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJtb3JlIHRoYW4gJWQgdHJlZXMgZ2l2ZW46ICclcyciCiBtc2dzdHIgIuaPkOS+m+S6hui2hei/hyAlZCDkuKrmoJHlr7nosaHvvJonJXMnIgogCi0jOiBidWlsdGluL2RpZmYuYzozNjIKKyM6IGJ1aWx0aW4vZGlmZi5jOjM2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJtb3JlIHRoYW4gdHdvIGJsb2JzIGdpdmVuOiAnJXMnIgotbXNnc3RyICLmj5DkvpvkuobotoXov4fkuKTkuKogYmxvYiDlr7nosaHvvJonJXMnIgorbXNnc3RyICLmj5DkvpvkuobotoXov4fkuKTkuKrmlbDmja7vvIhibG9i77yJ5a+56LGh77yaJyVzJyIKIAotIzogYnVpbHRpbi9kaWZmLmM6MzcwCisjOiBidWlsdGluL2RpZmYuYzozNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5oYW5kbGVkIG9iamVjdCAnJXMnIGdpdmVuLiIKIG1zZ3N0ciAi5o+Q5L6b5LqG5peg5rOV5aSE55CG55qE5a+56LGhICclcyfjgIIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyMDAKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzoyMgorbXNnaWQgImdpdCBmYXN0LWV4cG9ydCBbcmV2LWxpc3Qtb3B0c10iCittc2dzdHIgImdpdCBmYXN0LWV4cG9ydCBbcmV2LWxpc3Qtb3B0c10iCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NTgKK21zZ2lkICJzaG93IHByb2dyZXNzIGFmdGVyIDxuPiBvYmplY3RzIgorbXNnc3RyICLlnKggPG4+IOS4quWvueixoeS5i+WQjuaYvuekuui/m+W6piIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2MAorbXNnaWQgInNlbGVjdCBoYW5kbGluZyBvZiBzaWduZWQgdGFncyIKK21zZ3N0ciAi6YCJ5oup5aaC5L2V5aSE55CG562+5ZCNIHRhZ3MiCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjMKK21zZ2lkICJzZWxlY3QgaGFuZGxpbmcgb2YgdGFncyB0aGF0IHRhZyBmaWx0ZXJlZCBvYmplY3RzIgorbXNnc3RyICLpgInmi6nlvZMgdGFnIOaMh+WQkeiiq+i/h+a7pOaXtiB0YWdzIOeahOWkhOeQhuaWueW8jyIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NgorbXNnaWQgIkR1bXAgbWFya3MgdG8gdGhpcyBmaWxlIgorbXNnc3RyICLmiormoIforrDlrZjlgqjliLDov5nkuKrmlofku7YiCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjgKK21zZ2lkICJJbXBvcnQgbWFya3MgZnJvbSB0aGlzIGZpbGUiCittc2dzdHIgIuS7jui/meS4quaWh+S7tuWvvOWFpeagh+iusCIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3MAorbXNnaWQgIkZha2UgYSB0YWdnZXIgd2hlbiB0YWdzIGxhY2sgb25lIgorbXNnc3RyICLlvZMgdGFncyDnvLrlsJHmoIforrDogIXlrZfmrrXml7bvvIzlgYfoo4Xmj5DkvpvkuIDkuKoiCisKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzIKK21zZ2lkICJPdXRwdXQgZnVsbCB0cmVlIGZvciBlYWNoIGNvbW1pdCIKK21zZ3N0ciAi5q+P5qyh5o+Q5Lqk6YO96L6T5Ye65pW05Liq5qCRIgorCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc0Cittc2dpZCAiVXNlIHRoZSBkb25lIGZlYXR1cmUgdG8gdGVybWluYXRlIHRoZSBzdHJlYW0iCittc2dzdHIgIuS9v+eUqCBkb25lIOWKn+iDveadpee7iOatoua1gSIKKworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3NQorbXNnaWQgIlNraXAgb3V0cHV0IG9mIGJsb2IgZGF0YSIKK21zZ3N0ciAi6Lez6L+H5pWw5o2u5a+56LGh55qE6L6T5Ye6IgorCisjOiBidWlsdGluL2ZldGNoLmM6MjAKK21zZ2lkICJnaXQgZmV0Y2ggWzxvcHRpb25zPl0gWzxyZXBvc2l0b3J5PiBbPHJlZnNwZWM+Li4uXV0iCittc2dzdHIgImdpdCBmZXRjaCBbPOmAiemhuT5dIFs854mI5pys5bqTPiBbPOW8leeUqOihqOi+vuW8jz4uLi5dXSIKKworIzogYnVpbHRpbi9mZXRjaC5jOjIxCittc2dpZCAiZ2l0IGZldGNoIFs8b3B0aW9ucz5dIDxncm91cD4iCittc2dzdHIgImdpdCBmZXRjaCBbPOmAiemhuT5dIDznu4Q+IgorCisjOiBidWlsdGluL2ZldGNoLmM6MjIKK21zZ2lkICJnaXQgZmV0Y2ggLS1tdWx0aXBsZSBbPG9wdGlvbnM+XSBbKDxyZXBvc2l0b3J5PiB8IDxncm91cD4pLi4uXSIKK21zZ3N0ciAiZ2l0IGZldGNoIC0tbXVsdGlwbGUgWzzpgInpobk+XSBbKDzniYjmnKzlupM+IHwgPOe7hD4pLi4uXSIKKworIzogYnVpbHRpbi9mZXRjaC5jOjIzCittc2dpZCAiZ2l0IGZldGNoIC0tYWxsIFs8b3B0aW9ucz5dIgorbXNnc3RyICJnaXQgZmV0Y2ggLS1hbGwgWzzpgInpobk+XSIKKworIzogYnVpbHRpbi9mZXRjaC5jOjYwCittc2dpZCAiZmV0Y2ggZnJvbSBhbGwgcmVtb3RlcyIKK21zZ3N0ciAi5LuO5omA5pyJ55qE6L+c56iL5oqT5Y+WIgorCisjOiBidWlsdGluL2ZldGNoLmM6NjIKK21zZ2lkICJhcHBlbmQgdG8gLmdpdC9GRVRDSF9IRUFEIGluc3RlYWQgb2Ygb3ZlcndyaXRpbmciCittc2dzdHIgIui/veWKoOWIsCAuZ2l0L0ZFVENIX0hFQUQg6ICM5LiN5piv6KaG55uW5a6DIgorCisjOiBidWlsdGluL2ZldGNoLmM6NjQKK21zZ2lkICJwYXRoIHRvIHVwbG9hZCBwYWNrIG9uIHJlbW90ZSBlbmQiCittc2dzdHIgIuS4iuS8oOWMheWIsOi/nOeoi+eahOi3r+W+hCIKKworIzogYnVpbHRpbi9mZXRjaC5jOjY1Cittc2dpZCAiZm9yY2Ugb3ZlcndyaXRlIG9mIGxvY2FsIGJyYW5jaCIKK21zZ3N0ciAi5by65Yi26KaG55uW5pys5Zyw5YiG5pSvIgorCisjOiBidWlsdGluL2ZldGNoLmM6NjcKK21zZ2lkICJmZXRjaCBmcm9tIG11bHRpcGxlIHJlbW90ZXMiCittc2dzdHIgIuS7juWkmuS4qui/nOeoi+aKk+WPliIKKworIzogYnVpbHRpbi9mZXRjaC5jOjY5Cittc2dpZCAiZmV0Y2ggYWxsIHRhZ3MgYW5kIGFzc29jaWF0ZWQgb2JqZWN0cyIKK21zZ3N0ciAi5oqT5Y+W5omA5pyJ55qEIHRhZ3Mg5ZKM5YWz6IGU5a+56LGhIgorCisjOiBidWlsdGluL2ZldGNoLmM6NzEKK21zZ2lkICJkbyBub3QgZmV0Y2ggYWxsIHRhZ3MgKC0tbm8tdGFncykiCittc2dzdHIgIuS4jeaKk+WPluS7u+S9lSB0YWdzICgtLW5vLXRhZ3MpIgorCisjOiBidWlsdGluL2ZldGNoLmM6NzMKK21zZ2lkICJwcnVuZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMgbm8gbG9uZ2VyIG9uIHJlbW90ZSIKK21zZ3N0ciAi5riF6Zmk6L+c56iL5bey57uP5LiN5a2Y5Zyo55qE5YiG5pSv55qE6Lef6Liq5YiG5pSvIgorCisjICDor5HogIXvvJrlj6/pgInlgLzvvIzkuI3og73nv7vor5EKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3NAorbXNnaWQgIm9uLWRlbWFuZCIKK21zZ3N0ciAib24tZGVtYW5kIgorCisjOiBidWlsdGluL2ZldGNoLmM6NzUKK21zZ2lkICJjb250cm9sIHJlY3Vyc2l2ZSBmZXRjaGluZyBvZiBzdWJtb2R1bGVzIgorbXNnc3RyICLmjqfliLblrZDmqKHnu4TnmoTpgJLlvZLmipPlj5YiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3OQorbXNnaWQgImtlZXAgZG93bmxvYWRlZCBwYWNrIgorbXNnc3RyICLkv53mjIHkuIvovb3ljIUiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4MQorbXNnaWQgImFsbG93IHVwZGF0aW5nIG9mIEhFQUQgcmVmIgorbXNnc3RyICLlhYHorrjmm7TmlrAgSEVBRCDlvJXnlKgiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4NAorbXNnaWQgImRlZXBlbiBoaXN0b3J5IG9mIHNoYWxsb3cgY2xvbmUiCittc2dzdHIgIua3seWMlua1heWFi+mahueahOWOhuWPsiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjg2Cittc2dpZCAiY29udmVydCB0byBhIGNvbXBsZXRlIHJlcG9zaXRvcnkiCittc2dzdHIgIui9rOaNouS4uuS4gOS4quWujOaVtOeahOeJiOacrOW6kyIKKworIzogYnVpbHRpbi9mZXRjaC5jOjg4IGJ1aWx0aW4vbG9nLmM6MTEzMAorbXNnaWQgImRpciIKK21zZ3N0ciAi55uu5b2VIgorCisjOiBidWlsdGluL2ZldGNoLmM6ODkKK21zZ2lkICJwcmVwZW5kIHRoaXMgdG8gc3VibW9kdWxlIHBhdGggb3V0cHV0IgorbXNnc3RyICLlnKjlrZDmqKHnu4Tot6/lvoTovpPlh7rnmoTliY3pnaLliqDkuIrmraTnm67lvZUiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5MgorbXNnaWQgImRlZmF1bHQgbW9kZSBmb3IgcmVjdXJzaW9uIgorbXNnc3RyICLpgJLlvZLnmoTpu5jorqTmqKHlvI8iCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyMDQKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIHJlbW90ZSByZWYgSEVBRCIKIG1zZ3N0ciAi5peg5rOV5Y+R546w6L+c56iLIEhFQUQg5byV55SoIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjUzCisjOiBidWlsdGluL2ZldGNoLmM6MjU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIm9iamVjdCAlcyBub3QgZm91bmQiCiBtc2dzdHIgIuWvueixoSAlcyDmnKrlj5HnjrAiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNTkKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyNjIKIG1zZ2lkICJbdXAgdG8gZGF0ZV0iCiBtc2dzdHIgIlvmnIDmlrBdIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjczCisjOiBidWlsdGluL2ZldGNoLmM6Mjc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiEgJS0qcyAlLSpzIC0+ICVzICAoY2FuJ3QgZmV0Y2ggaW4gY3VycmVudCBicmFuY2gpIgogbXNnc3RyICIhICUtKnMgJS0qcyAtPiAlcyAg77yI5Zyo5b2T5YmN5YiG5pSv5LiL5LiN6IO96I635Y+W77yJIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Mjc0IGJ1aWx0aW4vZmV0Y2guYzozNjAKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyNzcgYnVpbHRpbi9mZXRjaC5jOjM2MwogbXNnaWQgIltyZWplY3RlZF0iCiBtc2dzdHIgIlvlt7Lmi5Lnu51dIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Mjg1CisjOiBidWlsdGluL2ZldGNoLmM6Mjg4CiBtc2dpZCAiW3RhZyB1cGRhdGVdIgogbXNnc3RyICJbdGFn5pu05pawXSIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiBidWlsdGluL2ZldGNoLmM6Mjg3IGJ1aWx0aW4vZmV0Y2guYzozMjIgYnVpbHRpbi9mZXRjaC5jOjM0MAorIzogYnVpbHRpbi9mZXRjaC5jOjI5MCBidWlsdGluL2ZldGNoLmM6MzI1IGJ1aWx0aW4vZmV0Y2guYzozNDMKIG1zZ2lkICIgICh1bmFibGUgdG8gdXBkYXRlIGxvY2FsIHJlZikiCiBtc2dzdHIgIiAg77yI5LiN6IO95pu05paw5pys5Zyw5byV55So77yJIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzA1CisjOiBidWlsdGluL2ZldGNoLmM6MzA4CiBtc2dpZCAiW25ldyB0YWddIgogbXNnc3RyICJb5pawdGFnXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjMwOAorIzogYnVpbHRpbi9mZXRjaC5jOjMxMQogbXNnaWQgIltuZXcgYnJhbmNoXSIKIG1zZ3N0ciAiW+aWsOWIhuaUr10iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMTEKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMTQKIG1zZ2lkICJbbmV3IHJlZl0iCiBtc2dzdHIgIlvmlrDlvJXnlKhdIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzU2CisjOiBidWlsdGluL2ZldGNoLmM6MzU5CiBtc2dpZCAidW5hYmxlIHRvIHVwZGF0ZSBsb2NhbCByZWYiCiBtc2dzdHIgIuS4jeiDveabtOaWsOacrOWcsOW8leeUqCIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM1NgorIzogYnVpbHRpbi9mZXRjaC5jOjM1OQogbXNnaWQgImZvcmNlZCB1cGRhdGUiCiBtc2dzdHIgIuW8uuWItuabtOaWsCIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM2MgorIzogYnVpbHRpbi9mZXRjaC5jOjM2NQogbXNnaWQgIihub24tZmFzdC1mb3J3YXJkKSIKIG1zZ3N0ciAi77yI6Z2e5b+r6L+b5byP77yJIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzkzIGJ1aWx0aW4vZmV0Y2guYzo2ODUKKyM6IGJ1aWx0aW4vZmV0Y2guYzozOTYgYnVpbHRpbi9mZXRjaC5jOjY4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiAlczogJXNcbiIKIG1zZ3N0ciAi5peg5rOV5omT5byAICVz77yaJXNcbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjQwMgorIzogYnVpbHRpbi9mZXRjaC5jOjQwNQogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBkaWQgbm90IHNlbmQgYWxsIG5lY2Vzc2FyeSBvYmplY3RzXG4iCiBtc2dzdHIgIiVzIOacquWPkemAgeaJgOacieW/hemhu+eahOWvueixoVxuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NDg4CisjOiBidWlsdGluL2ZldGNoLmM6NDkxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkZyb20gJS4qc1xuIgogbXNnc3RyICLmnaXoh6ogJS4qc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NDk5CisjOiBidWlsdGluL2ZldGNoLmM6NTAyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJzb21lIGxvY2FsIHJlZnMgY291bGQgbm90IGJlIHVwZGF0ZWQ7IHRyeSBydW5uaW5nXG4iCkBAIC0yNjU4LDgyICs0Njk4LDIwOSBAQAogIiAnZ2l0IHJlbW90ZSBwcnVuZSAlcycg5p2l5Yig6Zmk5pen55qE44CB5pyJ5Yay56qB55qE5YiG5pSvIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NDkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgKCVzIHdpbGwgYmVjb21lIGRhbmdsaW5nKSIKLW1zZ3N0ciAiICAg77yIJXMg5bCG5oiQ5Li65oKs56m654q25oCB77yJIgorbXNnc3RyICIgICDvvIglcyDlsIbmiJDkuLrmkYfmkYbnirbmgIHvvIkiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogYnVpbHRpbi9mZXRjaC5jOjU1MAorIzogYnVpbHRpbi9mZXRjaC5jOjU1MwogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAoJXMgaGFzIGJlY29tZSBkYW5nbGluZykiCi1tc2dzdHIgIiAgIO+8iCVzIOW3suaIkOS4uuaCrOepuueKtuaAge+8iSIKK21zZ3N0ciAiICAg77yIJXMg5bey5oiQ5Li65pGH5pGG54q25oCB77yJIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTU3CisjOiBidWlsdGluL2ZldGNoLmM6NTYwCiBtc2dpZCAiW2RlbGV0ZWRdIgogbXNnc3RyICJb5bey5Yig6ZmkXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjU1OCBidWlsdGluL3JlbW90ZS5jOjEwNTUKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NjEgYnVpbHRpbi9yZW1vdGUuYzoxMDU1CiBtc2dpZCAiKG5vbmUpIgogbXNnc3RyICLvvIjml6DvvIkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo2NzUKKyM6IGJ1aWx0aW4vZmV0Y2guYzo2NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVmdXNpbmcgdG8gZmV0Y2ggaW50byBjdXJyZW50IGJyYW5jaCAlcyBvZiBub24tYmFyZSByZXBvc2l0b3J5IgogbXNnc3RyICLmi5Lnu53ojrflj5bliLDpnZ7oo7jniYjmnKzlupPnmoTlvZPliY3liIbmlK8gJXMiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo3MDkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3MTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRG9uJ3Qga25vdyBob3cgdG8gZmV0Y2ggZnJvbSAlcyIKIG1zZ3N0ciAi5LiN55+l6YGT5aaC5L2V5LuOICVzIOiOt+WPliIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjc4NgorIzogYnVpbHRpbi9mZXRjaC5jOjc4OQogIywgYy1mb3JtYXQKIG1zZ2lkICJPcHRpb24gXCIlc1wiIHZhbHVlIFwiJXNcIiBpcyBub3QgdmFsaWQgZm9yICVzIgogbXNnc3RyICLpgInpobkgXCIlc1wiIOeahOWAvCBcIiVzXCIg5a+55LqOICVzIOaYr+aXoOaViOeahCIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjc4OQorIzogYnVpbHRpbi9mZXRjaC5jOjc5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJPcHRpb24gXCIlc1wiIGlzIGlnbm9yZWQgZm9yICVzXG4iCiBtc2dzdHIgIumAiemhuSBcIiVzXCIg5Li6ICVzIOaJgOW/veeVpVxuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6ODg4CisjOiBidWlsdGluL2ZldGNoLmM6ODk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZldGNoaW5nICVzXG4iCiBtc2dzdHIgIuato+WcqOiOt+WPliAlc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6ODkwIGJ1aWx0aW4vcmVtb3RlLmM6MTAwCisjOiBidWlsdGluL2ZldGNoLmM6ODk2IGJ1aWx0aW4vcmVtb3RlLmM6MTAwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmZXRjaCAlcyIKIG1zZ3N0ciAi5LiN6IO96I635Y+WICVzIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTA3CisjOiBidWlsdGluL2ZldGNoLmM6OTE1CiBtc2dpZCAiIgogIk5vIHJlbW90ZSByZXBvc2l0b3J5IHNwZWNpZmllZC4gIFBsZWFzZSwgc3BlY2lmeSBlaXRoZXIgYSBVUkwgb3IgYVxuIgogInJlbW90ZSBuYW1lIGZyb20gd2hpY2ggbmV3IHJldmlzaW9ucyBzaG91bGQgYmUgZmV0Y2hlZC4iCiBtc2dzdHIgIuacquaMh+Wumui/nOeoi+eJiOacrOW6k+OAguivt+mAmui/h+S4gOS4qlVSTOaIlui/nOeoi+eJiOacrOW6k+WQjeaMh+Wumu+8jOeUqOS7peiOt+WPluaWsOaPkOS6pOOAgiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjkyNworIzogYnVpbHRpbi9mZXRjaC5jOjkzNQogbXNnaWQgIllvdSBuZWVkIHRvIHNwZWNpZnkgYSB0YWcgbmFtZS4iCiBtc2dzdHIgIuaCqOmcgOimgeaMh+WumuS4gOS4qiB0YWcg5ZCN56ew44CCIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTc5CisjOiBidWlsdGluL2ZldGNoLmM6OTgxCittc2dpZCAiLS1kZXB0aCBhbmQgLS11bnNoYWxsb3cgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiCittc2dzdHIgIi0tZGVwdGgg5ZKMIC0tdW5zaGFsbG93IOS4jeiDveWQjOaXtuS9v+eUqCIKKworIzogYnVpbHRpbi9mZXRjaC5jOjk4MworbXNnaWQgIi0tdW5zaGFsbG93IG9uIGEgY29tcGxldGUgcmVwb3NpdG9yeSBkb2VzIG5vdCBtYWtlIHNlbnNlIgorbXNnc3RyICLlr7nkuo7kuIDkuKrlrozmlbTnmoTniYjmnKzlupPvvIzlj4LmlbAgLS11bnNoYWxsb3cg5rKh5pyJ5oSP5LmJIgorCisjOiBidWlsdGluL2ZldGNoLmM6MTAwMgogbXNnaWQgImZldGNoIC0tYWxsIGRvZXMgbm90IHRha2UgYSByZXBvc2l0b3J5IGFyZ3VtZW50IgogbXNnc3RyICJmZXRjaCAtLWFsbCDkuI3og73luKbkuIDkuKrniYjmnKzlupPlj4LmlbAiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5ODEKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDA0CiBtc2dpZCAiZmV0Y2ggLS1hbGwgZG9lcyBub3QgbWFrZSBzZW5zZSB3aXRoIHJlZnNwZWNzIgogbXNnc3RyICJmZXRjaCAtLWFsbCDluKblvJXnlKjooajovr7lvI/msqHmnInku7vkvZXmhI/kuYkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5OTIKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDE1CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHN1Y2ggcmVtb3RlIG9yIHJlbW90ZSBncm91cDogJXMiCiBtc2dzdHIgIuayoeaciei/meagt+eahOi/nOeoi+aIlui/nOeoi+e7hO+8miVzIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MTAwMAorIzogYnVpbHRpbi9mZXRjaC5jOjEwMjMKIG1zZ2lkICJGZXRjaGluZyBhIGdyb3VwIGFuZCBzcGVjaWZ5aW5nIHJlZnNwZWNzIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIuiOt+WPlue7hOW5tuaMh+WumuW8leeUqOihqOi+vuW8j+ayoeacieaEj+S5iSIKIAorIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6MTMKK21zZ2lkICJnaXQgZm10LW1lcmdlLW1zZyBbLW0gPG1lc3NhZ2U+XSBbLS1sb2dbPTxuPl18LS1uby1sb2ddIFstLWZpbGUgPGZpbGU+XSIKK21zZ3N0ciAiIgorImdpdCBmbXQtbWVyZ2UtbXNnIFstbSA8bWVzc2FnZT5dIFstLWxvZ1s9PG4+XXwtLW5vLWxvZ10gWy0tZmlsZSA8ZmlsZT5dIgorCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjMgYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY2IGJ1aWx0aW4vZ3JlcC5jOjcwMQorIzogYnVpbHRpbi9tZXJnZS5jOjE4OCBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU1IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzUKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ2IHBhcnNlLW9wdGlvbnMuaDoxMzMgcGFyc2Utb3B0aW9ucy5oOjIzOQorbXNnaWQgIm4iCittc2dzdHIgIm4iCisKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2NAorbXNnaWQgInBvcHVsYXRlIGxvZyB3aXRoIGF0IG1vc3QgPG4+IGVudHJpZXMgZnJvbSBzaG9ydGxvZyIKK21zZ3N0ciAi5ZCR5o+Q5Lqk6K+05piO5Lit5pyA5aSa5aSN5Yi25oyH5a6a5p2h55uu77yI5ZCI5bm26ICM5p2l55qE5o+Q5Lqk77yJ55qE566A55+t6K+05piOIgorCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjcKK21zZ2lkICJhbGlhcyBmb3IgLS1sb2cgKGRlcHJlY2F0ZWQpIgorbXNnc3RyICLlj4LmlbAgLS1sb2cg55qE5Yir5ZCN77yI5bey5byD55So77yJIgorCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NzAKK21zZ2lkICJ0ZXh0IgorbXNnc3RyICLmlofmnKwiCisKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY3MQorbXNnaWQgInVzZSA8dGV4dD4gYXMgc3RhcnQgb2YgbWVzc2FnZSIKK21zZ3N0ciAi5L2/55SoIDzmlofmnKw+IOS9nOS4uuaPkOS6pOivtOaYjueahOW8gOWniyIKKworIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjcyCittc2dpZCAiZmlsZSB0byByZWFkIGZyb20iCittc2dzdHIgIuS7juaWh+S7tuS4reivu+WPliIKKworIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzo5NzkKK21zZ2lkICJnaXQgZm9yLWVhY2gtcmVmIFtvcHRpb25zXSBbPHBhdHRlcm4+XSIKK21zZ3N0ciAiZ2l0IGZvci1lYWNoLXJlZiBb6YCJ6aG5XSBbPOaooeW8jz5dIgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjk5NAorbXNnaWQgInF1b3RlIHBsYWNlaG9sZGVycyBzdWl0YWJseSBmb3Igc2hlbGxzIgorbXNnc3RyICLlvJXnlKjljaDkvY3nrKbpgILnlKjkuo4gc2hlbGxzIgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjk5NgorbXNnaWQgInF1b3RlIHBsYWNlaG9sZGVycyBzdWl0YWJseSBmb3IgcGVybCIKK21zZ3N0ciAi5byV55So5Y2g5L2N56ym6YCC55So5LqOIHBlcmwiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6OTk4Cittc2dpZCAicXVvdGUgcGxhY2Vob2xkZXJzIHN1aXRhYmx5IGZvciBweXRob24iCittc2dzdHIgIuW8leeUqOWNoOS9jeespumAgueUqOS6jiBweXRob24iCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6MTAwMAorbXNnaWQgInF1b3RlIHBsYWNlaG9sZGVycyBzdWl0YWJseSBmb3IgdGNsIgorbXNnc3RyICLlvJXnlKjljaDkvY3nrKbpgILnlKjkuo4gdGNsIgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjEwMDMKK21zZ2lkICJzaG93IG9ubHkgPG4+IG1hdGNoZWQgcmVmcyIKK21zZ3N0ciAi5Y+q5pi+56S6IDxuPiDkuKrljLnphY3nmoTlvJXnlKgiCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6MTAwNAorbXNnaWQgImZvcm1hdCIKK21zZ3N0ciAi5qC85byPIgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjEwMDQKK21zZ2lkICJmb3JtYXQgdG8gdXNlIGZvciB0aGUgb3V0cHV0IgorbXNnc3RyICLovpPlh7rmoLzlvI8iCisKKyM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6MTAwNQorbXNnaWQgImtleSIKK21zZ3N0ciAia2V5IgorCisjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjEwMDYKK21zZ2lkICJmaWVsZCBuYW1lIHRvIHNvcnQgb24iCittc2dzdHIgIuaOkuW6j+eahOWtl+auteWQjSIKKworIzogYnVpbHRpbi9mc2NrLmM6NjA4Cittc2dpZCAiZ2l0IGZzY2sgW29wdGlvbnNdIFs8b2JqZWN0Pi4uLl0iCittc2dzdHIgImdpdCBmc2NrIFvpgInpobldIFs85a+56LGhPi4uLl0iCisKKyM6IGJ1aWx0aW4vZnNjay5jOjYxNAorbXNnaWQgInNob3cgdW5yZWFjaGFibGUgb2JqZWN0cyIKK21zZ3N0ciAi5pi+56S65LiN5Y+v6L6+55qE5a+56LGhIgorCisjOiBidWlsdGluL2ZzY2suYzo2MTUKK21zZ2lkICJzaG93IGRhbmdsaW5nIG9iamVjdHMiCittc2dzdHIgIuaYvuekuuaRh+aRhueahOWvueixoSIKKworIzogYnVpbHRpbi9mc2NrLmM6NjE2Cittc2dpZCAicmVwb3J0IHRhZ3MiCittc2dzdHIgIuaKpeWRiiB0YWdzIgorCisjOiBidWlsdGluL2ZzY2suYzo2MTcKK21zZ2lkICJyZXBvcnQgcm9vdCBub2RlcyIKK21zZ3N0ciAi5oql5ZGK5qC56IqC54K5IgorCisjOiBidWlsdGluL2ZzY2suYzo2MTgKK21zZ2lkICJtYWtlIGluZGV4IG9iamVjdHMgaGVhZCBub2RlcyIKK21zZ3N0ciAi5bCG57Si5byV5Lqm5L2c5Li65qOA5p+l55qE5aS06IqC54K5IgorCisjOiBidWlsdGluL2ZzY2suYzo2MTkKK21zZ2lkICJtYWtlIHJlZmxvZ3MgaGVhZCBub2RlcyAoZGVmYXVsdCkiCittc2dzdHIgIuWwhuW8leeUqOaXpeW/l+S9nOS4uuajgOafpeeahOWktOiKgueCue+8iOm7mOiupO+8iSIKKworIzogYnVpbHRpbi9mc2NrLmM6NjIwCittc2dpZCAiYWxzbyBjb25zaWRlciBwYWNrcyBhbmQgYWx0ZXJuYXRlIG9iamVjdHMiCittc2dzdHIgIuS5n+iAg+iZkeWMheWSjOWkh+eUqOWvueixoSIKKworIzogYnVpbHRpbi9mc2NrLmM6NjIxCittc2dpZCAiZW5hYmxlIG1vcmUgc3RyaWN0IGNoZWNraW5nIgorbXNnc3RyICLlkK/nlKjmm7TkuKXmoLznmoTmo4Dmn6UiCisKKyM6IGJ1aWx0aW4vZnNjay5jOjYyMworbXNnaWQgIndyaXRlIGRhbmdsaW5nIG9iamVjdHMgaW4gLmdpdC9sb3N0LWZvdW5kIgorbXNnc3RyICLlsIbmkYfmkYblr7nosaHlhpnlhaUgLmdpdC9sb3N0LWZvdW5kIOS4rSIKKworIzogYnVpbHRpbi9mc2NrLmM6NjI0IGJ1aWx0aW4vcHJ1bmUuYzoxMzQKK21zZ2lkICJzaG93IHByb2dyZXNzIgorbXNnc3RyICLmmL7npLrov5vluqYiCisKKyM6IGJ1aWx0aW4vZ2MuYzoyMgorbXNnaWQgImdpdCBnYyBbb3B0aW9uc10iCittc2dzdHIgImdpdCBnYyBb6YCJ6aG5XSIKKwogIzogYnVpbHRpbi9nYy5jOjYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgJXM6ICclcyciCkBAIC0yNzQ0LDEyICs0OTExLDE5IEBACiBtc2dpZCAiaW5zYW5lbHkgbG9uZyBvYmplY3QgZGlyZWN0b3J5ICUuKnMiCiBtc2dzdHIgIuS4jeato+W4uOeahOmVv+WvueixoeebruW9lSAlLipzIgogCi0jOiBidWlsdGluL2djLmM6MjIxCi0jLCBjLWZvcm1hdAotbXNnaWQgIkF1dG8gcGFja2luZyB0aGUgcmVwb3NpdG9yeSBmb3Igb3B0aW11bSBwZXJmb3JtYW5jZS5cbiIKLW1zZ3N0ciAi6Ieq5Yqo5omT5YyF54mI5pys5bqT5Lul5rGC5pyA5L2z5oCn6IO944CCXG4iCisjOiBidWlsdGluL2djLmM6MTc5Cittc2dpZCAicHJ1bmUgdW5yZWZlcmVuY2VkIG9iamVjdHMiCittc2dzdHIgIua4hemZpOacquW8leeUqOeahOWvueixoSIKIAotIzogYnVpbHRpbi9nYy5jOjIyNAorIzogYnVpbHRpbi9nYy5jOjE4MQorbXNnaWQgImJlIG1vcmUgdGhvcm91Z2ggKGluY3JlYXNlZCBydW50aW1lKSIKK21zZ3N0ciAi5pu05b275bqV77yI5aKe5Yqg6L+Q6KGM5pe26Ze077yJIgorCisjOiBidWlsdGluL2djLmM6MTgyCittc2dpZCAiZW5hYmxlIGF1dG8tZ2MgbW9kZSIKK21zZ3N0ciAi5ZCv55So6Ieq5Yqo5Z6D5Zy+5Zue5pS25qih5byPIgorCisjOiBidWlsdGluL2djLmM6MjIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJBdXRvIHBhY2tpbmcgdGhlIHJlcG9zaXRvcnkgZm9yIG9wdGltdW0gcGVyZm9ybWFuY2UuIFlvdSBtYXkgYWxzb1xuIgpAQCAtMjc1OCw5NCArNDkzMiwzMjIgQEAKICLoh6rliqjmiZPljIXniYjmnKzlupPku6XmsYLmnIDkvbPmgKfog73jgILmgqjov5jlj6/ku6XmiYvliqjov5DooYwgXCJnaXQgZ2NcIuOAglxuIgogIuWPguingSBcImdpdCBoZWxwIGdjXCIg5Lul6I635Y+W5pu05aSa5L+h5oGv44CCXG4iCiAKLSM6IGJ1aWx0aW4vZ2MuYzoyNTEKKyM6IGJ1aWx0aW4vZ2MuYzoyNDkKIG1zZ2lkICIiCiAiVGhlcmUgYXJlIHRvbyBtYW55IHVucmVhY2hhYmxlIGxvb3NlIG9iamVjdHM7IHJ1biAnZ2l0IHBydW5lJyB0byByZW1vdmUgdGhlbS4iCiBtc2dzdHIgIuacieWkquWkmuS4jeWPr+i+vueahOadvuaVo+Wvueixoe+8jOi/kOihjCAnZ2l0IHBydW5lJyDliKDpmaTlroPku6zjgIIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjIxNgorIzogYnVpbHRpbi9ncmVwLmM6MjIKK21zZ2lkICJnaXQgZ3JlcCBbb3B0aW9uc10gWy1lXSA8cGF0dGVybj4gWzxyZXY+Li4uXSBbWy0tXSA8cGF0aD4uLi5dIgorbXNnc3RyICJnaXQgZ3JlcCBb6YCJ6aG5XSBbLWVdIDzmqKHlvI8+IFs85L+u6K6iPi4uLl0gW1stLV0gPOi3r+W+hD4uLi5dIgorCisjOiBidWlsdGluL2dyZXAuYzoyMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ3JlcDogZmFpbGVkIHRvIGNyZWF0ZSB0aHJlYWQ6ICVzIgogbXNnc3RyICJncmVw77ya5peg5rOV5Yib5bu657q/56iL77yaJXMiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjQwMgorIzogYnVpbHRpbi9ncmVwLmM6MzY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBjaGRpcjogJXMiCiBtc2dzdHIgIuaXoOazleWIh+aNouebruW9le+8miVzIgogCi0jOiBidWlsdGluL2dyZXAuYzo0NzggYnVpbHRpbi9ncmVwLmM6NTEyCisjOiBidWlsdGluL2dyZXAuYzo0NDMgYnVpbHRpbi9ncmVwLmM6NDc4CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byByZWFkIHRyZWUgKCVzKSIKIG1zZ3N0ciAi5peg5rOV6K+75Y+W5qCR77yIJXPvvIkiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjUyNgorIzogYnVpbHRpbi9ncmVwLmM6NDkzCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBncmVwIGZyb20gb2JqZWN0IG9mIHR5cGUgJXMiCiBtc2dzdHIgIuaXoOazleaKk+WPluadpeiHquS6jiAlcyDnsbvlnovnmoTlr7nosaEiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjU4NAorIzogYnVpbHRpbi9ncmVwLmM6NTUxCiAjLCBjLWZvcm1hdAogbXNnaWQgInN3aXRjaCBgJWMnIGV4cGVjdHMgYSBudW1lcmljYWwgdmFsdWUiCiBtc2dzdHIgIuW8gOWFsyBgJWMnIOacn+acm+S4gOS4quaVsOWtl+WAvCIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjAxCisjOiBidWlsdGluL2dyZXAuYzo1NjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gJyVzJyIKIG1zZ3N0ciAi5LiN6IO95omT5byAICclcyciCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjg4NQorIzogYnVpbHRpbi9ncmVwLmM6NjQzCittc2dpZCAic2VhcmNoIGluIGluZGV4IGluc3RlYWQgb2YgaW4gdGhlIHdvcmsgdHJlZSIKK21zZ3N0ciAi5Zyo57Si5byV5Yy65pCc57Si6ICM5LiN5piv5Zyo5bel5L2c5Yy6IgorCisjOiBidWlsdGluL2dyZXAuYzo2NDUKK21zZ2lkICJmaW5kIGluIGNvbnRlbnRzIG5vdCBtYW5hZ2VkIGJ5IGdpdCIKK21zZ3N0ciAi5Zyo5pyq6KKrIGdpdCDnrqHnkIbnmoTlhoXlrrnkuK3mn6Xmib4iCisKKyMgIOivkeiAhe+8muS4reaWh+Wtl+espuS4suaLvOaOpe+8jOWPr+WIoOmZpOWJjeWvvOepuuagvAorIzogYnVpbHRpbi9ncmVwLmM6NjQ3Cittc2dpZCAic2VhcmNoIGluIGJvdGggdHJhY2tlZCBhbmQgdW50cmFja2VkIGZpbGVzIgorbXNnc3RyICLlnKjot5/ouKrlkozmnKrot5/ouKrnmoTmlofku7bkuK3mkJzntKIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY0OQorbXNnaWQgInNlYXJjaCBhbHNvIGluIGlnbm9yZWQgZmlsZXMiCittc2dzdHIgIuS5n+WcqOW/veeVpeeahOaWh+S7tuS4reaQnOe0oiIKKworIzogYnVpbHRpbi9ncmVwLmM6NjUyCittc2dpZCAic2hvdyBub24tbWF0Y2hpbmcgbGluZXMiCittc2dzdHIgIuaYvuekuuacquWMuemFjeeahOihjCIKKworIzogYnVpbHRpbi9ncmVwLmM6NjU0Cittc2dpZCAiY2FzZSBpbnNlbnNpdGl2ZSBtYXRjaGluZyIKK21zZ3N0ciAi5LiN5Yy65YiG5aSn5bCP5YaZ5Yy56YWNIgorCisjOiBidWlsdGluL2dyZXAuYzo2NTYKK21zZ2lkICJtYXRjaCBwYXR0ZXJucyBvbmx5IGF0IHdvcmQgYm91bmRhcmllcyIKK21zZ3N0ciAi5Y+q5Zyo5Y2V6K+N6L6555WM5Yy56YWN5qih5byPIgorCisjOiBidWlsdGluL2dyZXAuYzo2NTgKK21zZ2lkICJwcm9jZXNzIGJpbmFyeSBmaWxlcyBhcyB0ZXh0IgorbXNnc3RyICLmiorkuozov5vliLbmlofku7blvZPlgZrmlofmnKzlpITnkIYiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY2MAorbXNnaWQgImRvbid0IG1hdGNoIHBhdHRlcm5zIGluIGJpbmFyeSBmaWxlcyIKK21zZ3N0ciAi5LiN5Zyo5LqM6L+b5Yi25paH5Lu25Lit5Yy56YWN5qih5byPIgorCisjOiBidWlsdGluL2dyZXAuYzo2NjMKK21zZ2lkICJkZXNjZW5kIGF0IG1vc3QgPGRlcHRoPiBsZXZlbHMiCittc2dzdHIgIuacgOWkmuS7peaMh+WumueahOa3seW6puWQkeS4i+Wvu+aJviIKKworIzogYnVpbHRpbi9ncmVwLmM6NjY3Cittc2dpZCAidXNlIGV4dGVuZGVkIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCittc2dzdHIgIuS9v+eUqOaJqeWxleeahCBQT1NJWCDmraPliJnooajovr7lvI8iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY3MAorbXNnaWQgInVzZSBiYXNpYyBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb25zIChkZWZhdWx0KSIKK21zZ3N0ciAi5L2/55So5Z+65pys55qEIFBPU0lYIOato+WImeihqOi+vuW8j++8iOm7mOiupO+8iSIKKworIzogYnVpbHRpbi9ncmVwLmM6NjczCittc2dpZCAiaW50ZXJwcmV0IHBhdHRlcm5zIGFzIGZpeGVkIHN0cmluZ3MiCittc2dzdHIgIuaKiuaooeW8j+ino+aekOS4uuWbuuWumueahOWtl+espuS4siIKKworIzogYnVpbHRpbi9ncmVwLmM6Njc2Cittc2dpZCAidXNlIFBlcmwtY29tcGF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgorbXNnc3RyICLkvb/nlKggUGVybCDlhbzlrrnnmoTmraPliJnooajovr7lvI8iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY3OQorbXNnaWQgInNob3cgbGluZSBudW1iZXJzIgorbXNnc3RyICLmmL7npLrooYzlj7ciCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4MAorbXNnaWQgImRvbid0IHNob3cgZmlsZW5hbWVzIgorbXNnc3RyICLkuI3mmL7npLrmlofku7blkI0iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4MQorbXNnaWQgInNob3cgZmlsZW5hbWVzIgorbXNnc3RyICLmmL7npLrmlofku7blkI0iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4MworbXNnaWQgInNob3cgZmlsZW5hbWVzIHJlbGF0aXZlIHRvIHRvcCBkaXJlY3RvcnkiCittc2dzdHIgIuaYvuekuuebuOWvueS6jumhtue6p+ebruW9leeahOaWh+S7tuWQjSIKKworIzogYnVpbHRpbi9ncmVwLmM6Njg1Cittc2dpZCAic2hvdyBvbmx5IGZpbGVuYW1lcyBpbnN0ZWFkIG9mIG1hdGNoaW5nIGxpbmVzIgorbXNnc3RyICLlj6rmmL7npLrmlofku7blkI3ogIzkuI3mmL7npLrljLnphY3nmoTooYwiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4NworbXNnaWQgInN5bm9ueW0gZm9yIC0tZmlsZXMtd2l0aC1tYXRjaGVzIgorbXNnc3RyICLlkowgLS1maWxlcy13aXRoLW1hdGNoZXMg5ZCM5LmJIgorCisjOiBidWlsdGluL2dyZXAuYzo2OTAKK21zZ2lkICJzaG93IG9ubHkgdGhlIG5hbWVzIG9mIGZpbGVzIHdpdGhvdXQgbWF0Y2giCittc2dzdHIgIuWPquaYvuekuuacquWMuemFjeeahOaWh+S7tuWQjSIKKworIzogYnVpbHRpbi9ncmVwLmM6NjkyCittc2dpZCAicHJpbnQgTlVMIGFmdGVyIGZpbGVuYW1lcyIKK21zZ3N0ciAi5Zyo5paH5Lu25ZCN5ZCO6L6T5Ye6IE5VTCDlrZfnrKYiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5NAorbXNnaWQgInNob3cgdGhlIG51bWJlciBvZiBtYXRjaGVzIGluc3RlYWQgb2YgbWF0Y2hpbmcgbGluZXMiCittc2dzdHIgIuaYvuekuuaAu+WMuemFjeihjOaVsO+8jOiAjOS4jeaYvuekuuWMuemFjeeahOihjCIKKworIzogYnVpbHRpbi9ncmVwLmM6Njk1Cittc2dpZCAiaGlnaGxpZ2h0IG1hdGNoZXMiCittc2dzdHIgIumrmOS6ruaYvuekuuWMuemFjemhuSIKKworIzogYnVpbHRpbi9ncmVwLmM6Njk3Cittc2dpZCAicHJpbnQgZW1wdHkgbGluZSBiZXR3ZWVuIG1hdGNoZXMgZnJvbSBkaWZmZXJlbnQgZmlsZXMiCittc2dzdHIgIuWcqOS4jeWQjOaWh+S7tueahOWMuemFjemhueS5i+mXtOaJk+WNsOepuuihjCIKKworIzogYnVpbHRpbi9ncmVwLmM6Njk5Cittc2dpZCAic2hvdyBmaWxlbmFtZSBvbmx5IG9uY2UgYWJvdmUgbWF0Y2hlcyBmcm9tIHNhbWUgZmlsZSIKK21zZ3N0ciAi5Y+q5Zyo5ZCM5LiA5paH5Lu255qE5Yy56YWN6aG555qE5LiK6Z2i5pi+56S65LiA5qyh5paH5Lu25ZCNIgorCisjOiBidWlsdGluL2dyZXAuYzo3MDIKK21zZ2lkICJzaG93IDxuPiBjb250ZXh0IGxpbmVzIGJlZm9yZSBhbmQgYWZ0ZXIgbWF0Y2hlcyIKK21zZ3N0ciAi5pi+56S65Yy56YWN6aG55YmN5ZCO55qEIDxuPiDooYzkuIrkuIvmlociCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcwNQorbXNnaWQgInNob3cgPG4+IGNvbnRleHQgbGluZXMgYmVmb3JlIG1hdGNoZXMiCittc2dzdHIgIuaYvuekuuWMuemFjemhueWJjSA8bj4g6KGM5LiK5LiL5paHIgorCisjOiBidWlsdGluL2dyZXAuYzo3MDcKK21zZ2lkICJzaG93IDxuPiBjb250ZXh0IGxpbmVzIGFmdGVyIG1hdGNoZXMiCittc2dzdHIgIuaYvuekuuWMuemFjemhueWQjiA8bj4g6KGM5LiK5LiL5paHIgorCisjOiBidWlsdGluL2dyZXAuYzo3MDgKK21zZ2lkICJzaG9ydGN1dCBmb3IgLUMgTlVNIgorbXNnc3RyICLlv6vmjbfplK4gLUMg5pWw5a2XIgorCisjOiBidWlsdGluL2dyZXAuYzo3MTEKK21zZ2lkICJzaG93IGEgbGluZSB3aXRoIHRoZSBmdW5jdGlvbiBuYW1lIGJlZm9yZSBtYXRjaGVzIgorbXNnc3RyICLlnKjljLnphY3nmoTliY3pnaLmmL7npLrkuIDooYzlh73mlbDlkI0iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcxMworbXNnaWQgInNob3cgdGhlIHN1cnJvdW5kaW5nIGZ1bmN0aW9uIgorbXNnc3RyICLmmL7npLrmiYDlnKjlh73mlbDnmoTliY3lkI7lhoXlrrkiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcxNgorbXNnaWQgInJlYWQgcGF0dGVybnMgZnJvbSBmaWxlIgorbXNnc3RyICLku47mlofku7bor7vlj5bmqKHlvI8iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcxOAorbXNnaWQgIm1hdGNoIDxwYXR0ZXJuPiIKK21zZ3N0ciAi5Yy56YWNIDzmqKHlvI8+IgorCisjOiBidWlsdGluL2dyZXAuYzo3MjAKK21zZ2lkICJjb21iaW5lIHBhdHRlcm5zIHNwZWNpZmllZCB3aXRoIC1lIgorbXNnc3RyICLnu4TlkIjnlKggLWUg5Y+C5pWw6K6+5a6a55qE5qih5byPIgorCisjOiBidWlsdGluL2dyZXAuYzo3MzIKK21zZ2lkICJpbmRpY2F0ZSBoaXQgd2l0aCBleGl0IHN0YXR1cyB3aXRob3V0IG91dHB1dCIKK21zZ3N0ciAi5LiN6L6T5Ye677yM6ICM55So6YCA5Ye656CB5qCH6K+G5ZG95Lit54q25oCBIgorCisjOiBidWlsdGluL2dyZXAuYzo3MzQKK21zZ2lkICJzaG93IG9ubHkgbWF0Y2hlcyBmcm9tIGZpbGVzIHRoYXQgbWF0Y2ggYWxsIHBhdHRlcm5zIgorbXNnc3RyICLlj6rmmL7npLrljLnphY3miYDmnInmqKHlvI/nmoTmlofku7bkuK3nmoTljLnphY0iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjczNgorbXNnaWQgInNob3cgcGFyc2UgdHJlZSBmb3IgZ3JlcCBleHByZXNzaW9uIgorbXNnc3RyICLmmL7npLogZ3JlcCDooajovr7lvI/nmoTop6PmnpDmoJEiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0MAorbXNnaWQgInBhZ2VyIgorbXNnc3RyICLliIbpobUiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0MAorbXNnaWQgInNob3cgbWF0Y2hpbmcgZmlsZXMgaW4gdGhlIHBhZ2VyIgorbXNnc3RyICLliIbpobXmmL7npLrljLnphY3nmoTmlofku7YiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0MworbXNnaWQgImFsbG93IGNhbGxpbmcgb2YgZ3JlcCgxKSAoaWdub3JlZCBieSB0aGlzIGJ1aWxkKSIKK21zZ3N0ciAi5YWB6K646LCD55SoIGdyZXAoMSnvvIjmnKzmrKHmnoTlu7rlv73nlaXvvIkiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0NCBidWlsdGluL3Nob3ctcmVmLmM6MTg0Cittc2dpZCAic2hvdyB1c2FnZSIKK21zZ3N0ciAi5pi+56S655So5rOVIgorCisjOiBidWlsdGluL2dyZXAuYzo4MTEKIG1zZ2lkICJubyBwYXR0ZXJuIGdpdmVuLiIKIG1zZ3N0ciAi5pyq5o+Q5L6b5qih5byP5Yy56YWN44CCIgogCi0jOiBidWlsdGluL2dyZXAuYzo4OTkKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiYmFkIG9iamVjdCAlcyIKLW1zZ3N0ciAi5Z2P5a+56LGhICVzIgotCi0jOiBidWlsdGluL2dyZXAuYzo5NDAKKyM6IGJ1aWx0aW4vZ3JlcC5jOjg2NgogbXNnaWQgIi0tb3Blbi1maWxlcy1pbi1wYWdlciBvbmx5IHdvcmtzIG9uIHRoZSB3b3JrdHJlZSIKIG1zZ3N0ciAiLS1vcGVuLWZpbGVzLWluLXBhZ2VyIOS7heeUqOS6juW3peS9nOWMuiIKIAotIzogYnVpbHRpbi9ncmVwLmM6OTYzCisjOiBidWlsdGluL2dyZXAuYzo4ODkKIG1zZ2lkICItLWNhY2hlZCBvciAtLXVudHJhY2tlZCBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tbm8taW5kZXguIgotbXNnc3RyICItLWNhY2hlZCDmiJYgLS11bnRyYWNrZWQg5LiN6IO95LiOIC0tbm8taW5kZXgg5YWx55So44CCIgorbXNnc3RyICItLWNhY2hlZCDmiJYgLS11bnRyYWNrZWQg5LiN6IO95LiOIC0tbm8taW5kZXgg5ZCM5pe25L2/55So44CCIgogCi0jOiBidWlsdGluL2dyZXAuYzo5NjgKKyM6IGJ1aWx0aW4vZ3JlcC5jOjg5NAogbXNnaWQgIi0tbm8taW5kZXggb3IgLS11bnRyYWNrZWQgY2Fubm90IGJlIHVzZWQgd2l0aCByZXZzLiIKLW1zZ3N0ciAiLS1uby1pbmRleCDmiJYgLS11bnRyYWNrZWQg5LiN6IO95ZKM54mI5pys5YWx55So44CCIgorbXNnc3RyICItLW5vLWluZGV4IOaIliAtLXVudHJhY2tlZCDkuI3og73lkozniYjmnKzlkIzml7bkvb/nlKjjgIIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjk3MQorIzogYnVpbHRpbi9ncmVwLmM6ODk3CiBtc2dpZCAiLS1bbm8tXWV4Y2x1ZGUtc3RhbmRhcmQgY2Fubm90IGJlIHVzZWQgZm9yIHRyYWNrZWQgY29udGVudHMuIgogbXNnc3RyICItLVtuby1dZXhjbHVkZS1zdGFuZGFyZCDkuI3og73nlKjkuo7lt7Lot5/ouKrlhoXlrrnjgIIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjk3OQorIzogYnVpbHRpbi9ncmVwLmM6OTA1CiBtc2dpZCAiYm90aCAtLWNhY2hlZCBhbmQgdHJlZXMgYXJlIGdpdmVuLiIKIG1zZ3N0ciAi5ZCM5pe257uZ5Ye65LqGIC0tY2FjaGVkIOWSjOagkeWvueixoeOAgiIKIAotIzogYnVpbHRpbi9oZWxwLmM6NTkKKyM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo2MAorbXNnaWQgIiIKKyJnaXQgaGFzaC1vYmplY3QgWy10IDx0eXBlPl0gWy13XSBbLS1wYXRoPTxmaWxlPnwtLW5vLWZpbHRlcnNdIFstLXN0ZGluXSBbLS1dICIKKyI8ZmlsZT4uLi4iCittc2dzdHIgIiIKKyJnaXQgaGFzaC1vYmplY3QgWy10IDznsbvlnos+XSBbLXddIFstLXBhdGg9POaWh+S7tj58LS1uby1maWx0ZXJzXSBbLS1zdGRpbl0gWy0tXSAiCisiPOaWh+S7tj4uLi4iCisKKyM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo2MQorbXNnaWQgImdpdCBoYXNoLW9iamVjdCAgLS1zdGRpbi1wYXRocyA8IDxsaXN0LW9mLXBhdGhzPiIKK21zZ3N0ciAiZ2l0IGhhc2gtb2JqZWN0ICAtLXN0ZGluLXBhdGhzIDwgPOi3r+W+hOWIl+ihqD4iCisKKyM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3MgorbXNnaWQgInR5cGUiCittc2dzdHIgIuexu+WeiyIKKworIzogYnVpbHRpbi9oYXNoLW9iamVjdC5jOjcyCittc2dpZCAib2JqZWN0IHR5cGUiCittc2dzdHIgIuWvueixoeexu+WeiyIKKworIzogYnVpbHRpbi9oYXNoLW9iamVjdC5jOjczCittc2dpZCAid3JpdGUgdGhlIG9iamVjdCBpbnRvIHRoZSBvYmplY3QgZGF0YWJhc2UiCittc2dzdHIgIuWwhuWvueixoeWGmeWFpeWvueixoeaVsOaNruW6kyIKKworIzogYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc0Cittc2dpZCAicmVhZCB0aGUgb2JqZWN0IGZyb20gc3RkaW4iCittc2dzdHIgIuS7juagh+WHhui+k+WFpeivu+WPluWvueixoSIKKworIzogYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc2Cittc2dpZCAic3RvcmUgZmlsZSBhcyBpcyB3aXRob3V0IGZpbHRlcnMiCittc2dzdHIgIuWOn+agt+WtmOWCqOaWh+S7tuS4jeS9v+eUqOi/h+a7pOWZqCIKKworIzogYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc3Cittc2dpZCAicHJvY2VzcyBmaWxlIGFzIGl0IHdlcmUgZnJvbSB0aGlzIHBhdGgiCittc2dzdHIgIuWkhOeQhuaWh+S7tuW5tuWBh+iuvuWFtuadpeiHquS6juatpOi3r+W+hCIKKworIzogYnVpbHRpbi9oZWxwLmM6NDMKK21zZ2lkICJwcmludCBhbGwgYXZhaWxhYmxlIGNvbW1hbmRzIgorbXNnc3RyICLmiZPljbDmiYDmnInlj6/nlKjnmoTlkb3ku6QiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQ0Cittc2dpZCAicHJpbnQgbGlzdCBvZiB1c2VmdWwgZ3VpZGVzIgorbXNnc3RyICLmmL7npLrmnInnlKjnmoTmjIfljZfliJfooagiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQ1Cittc2dpZCAic2hvdyBtYW4gcGFnZSIKK21zZ3N0ciAi5pi+56S6IG1hbiDmiYvlhowiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQ2Cittc2dpZCAic2hvdyBtYW51YWwgaW4gd2ViIGJyb3dzZXIiCittc2dzdHIgIuWcqCB3ZWIg5rWP6KeI5Zmo5Lit5pi+56S65omL5YaMIgorCisjOiBidWlsdGluL2hlbHAuYzo0OAorbXNnaWQgInNob3cgaW5mbyBwYWdlIgorbXNnc3RyICLmmL7npLogaW5mbyDmiYvlhowiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjU0Cittc2dpZCAiZ2l0IGhlbHAgWy0tYWxsXSBbLS1ndWlkZXNdIFstLW1hbnwtLXdlYnwtLWluZm9dIFtjb21tYW5kXSIKK21zZ3N0ciAiZ2l0IGhlbHAgWy0tYWxsXSBbLS1ndWlkZXNdIFstLW1hbnwtLXdlYnwtLWluZm9dIFvlkb3ku6RdIgorCisjOiBidWlsdGluL2hlbHAuYzo2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlY29nbml6ZWQgaGVscCBmb3JtYXQgJyVzJyIKIG1zZ3N0ciAi5pyq6IO96K+G5Yir55qE5biu5Yqp5qC85byPICclcyciCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjg3CisjOiBidWlsdGluL2hlbHAuYzo5NAogbXNnaWQgIkZhaWxlZCB0byBzdGFydCBlbWFjc2NsaWVudC4iCiBtc2dzdHIgIuaXoOazleWQr+WKqCBlbWFjc2NsaWVudOOAgiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MTAwCisjOiBidWlsdGluL2hlbHAuYzoxMDcKIG1zZ2lkICJGYWlsZWQgdG8gcGFyc2UgZW1hY3NjbGllbnQgdmVyc2lvbi4iCiBtc2dzdHIgIuaXoOazleino+aekCBlbWFjc2NsaWVudCDniYjmnKzjgIIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjEwOAorIzogYnVpbHRpbi9oZWxwLmM6MTE1CiAjLCBjLWZvcm1hdAogbXNnaWQgImVtYWNzY2xpZW50IHZlcnNpb24gJyVkJyB0b28gb2xkICg8IDIyKS4iCi1tc2dzdHIgImVtYWNzY2xpZW50IOeJiOacrCAnJWQnIOWkquiAgSAoPCAyMinjgIIiCittc2dzdHIgImVtYWNzY2xpZW50IOeJiOacrCAnJWQnIOWkquiAge+8iDwgMjLvvInjgIIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjEyNiBidWlsdGluL2hlbHAuYzoxNTQgYnVpbHRpbi9oZWxwLmM6MTYzIGJ1aWx0aW4vaGVscC5jOjE3MQorIzogYnVpbHRpbi9oZWxwLmM6MTMzIGJ1aWx0aW4vaGVscC5jOjE2MSBidWlsdGluL2hlbHAuYzoxNzAgYnVpbHRpbi9oZWxwLmM6MTc4CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBleGVjICclcyc6ICVzIgogbXNnc3RyICLml6Dms5XmiafooYwgJyVzJ++8miVzIgogCi0jOiBidWlsdGluL2hlbHAuYzoyMTEKKyM6IGJ1aWx0aW4vaGVscC5jOjIxOAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJyVzJzogcGF0aCBmb3IgdW5zdXBwb3J0ZWQgbWFuIHZpZXdlci5cbiIKQEAgLTI4NTQsNyArNTI1Niw3IEBACiAiJyVzJ++8muS4jeaUr+aMgeeahCBtYW4g5omL5YaM5p+l55yL5Zmo55qE6Lev5b6E44CCXG4iCiAi6K+35L2/55SoICdtYW4uPHRvb2w+LmNtZCfjgIIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjIyMworIzogYnVpbHRpbi9oZWxwLmM6MjMwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnOiBjbWQgZm9yIHN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgpAQCAtMjg2MywyNjYgKzUyNjUsMzM1IEBACiAiJyVzJzog5pSv5oyB55qEIG1hbiDmiYvlhozmn6XnnIvlmajlkb3ku6TjgIJcbiIKICLor7fkvb/nlKggJ21hbi48dG9vbD4ucGF0aCfjgIIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjI4NwotbXNnaWQgIlRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZ2l0IGNvbW1hbmRzIGFyZToiCi1tc2dzdHIgIuacgOW4uOeUqOeahCBnaXQg5ZG95Luk5pyJ77yaIgotCi0jOiBidWlsdGluL2hlbHAuYzozNTUKKyM6IGJ1aWx0aW4vaGVscC5jOjM1MQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiB1bmtub3duIG1hbiB2aWV3ZXIuIgogbXNnc3RyICInJXMn77ya5pyq55+l55qEIG1hbiDmn6XnnIvlmajjgIIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjM3MgorIzogYnVpbHRpbi9oZWxwLmM6MzY4CiBtc2dpZCAibm8gbWFuIHZpZXdlciBoYW5kbGVkIHRoZSByZXF1ZXN0IgogbXNnc3RyICLmsqHmnIkgbWFuIOafpeeci+WZqOWkhOeQhuatpOivt+axgiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MzgwCisjOiBidWlsdGluL2hlbHAuYzozNzYKIG1zZ2lkICJubyBpbmZvIHZpZXdlciBoYW5kbGVkIHRoZSByZXF1ZXN0IgogbXNnc3RyICLmsqHmnIkgaW5mbyDmn6XnnIvlmajlpITnkIbmraTor7fmsYIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjM5MQotIywgYy1mb3JtYXQKLW1zZ2lkICInJXMnOiBub3QgYSBkb2N1bWVudGF0aW9uIGRpcmVjdG9yeS4iCi1tc2dzdHIgIiclcyfvvJrkuI3mmK/kuIDkuKrmlofmoaPnm67lvZXjgIIiCisjOiBidWlsdGluL2hlbHAuYzo0MjIKK21zZ2lkICJEZWZpbmluZyBhdHRyaWJ1dGVzIHBlciBwYXRoIgorbXNnc3RyICLlrprkuYnot6/lvoTnmoTlsZ7mgKciCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQzMiBidWlsdGluL2hlbHAuYzo0MzkKKyM6IGJ1aWx0aW4vaGVscC5jOjQyMworbXNnaWQgIkEgR2l0IGdsb3NzYXJ5IgorbXNnc3RyICJHaXQg6K+N5rGH6KGoIgorCisjOiBidWlsdGluL2hlbHAuYzo0MjQKK21zZ2lkICJTcGVjaWZpZXMgaW50ZW50aW9uYWxseSB1bnRyYWNrZWQgZmlsZXMgdG8gaWdub3JlIgorbXNnc3RyICLlv73nlaXmjIflrprnmoTmnKrot5/ouKrmlofku7YiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNQorbXNnaWQgIkRlZmluaW5nIHN1Ym1vZHVsZSBwcm9wZXJ0aWVzIgorbXNnc3RyICLlrprkuYnlrZDmqKHnu4TlsZ7mgKciCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNgorbXNnaWQgIlNwZWNpZnlpbmcgcmV2aXNpb25zIGFuZCByYW5nZXMgZm9yIEdpdCIKK21zZ3N0ciAi5oyH5a6aIEdpdCDnmoTniYjmnKzlkozniYjmnKzojIPlm7QiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNworbXNnaWQgIkEgdHV0b3JpYWwgaW50cm9kdWN0aW9uIHRvIEdpdCAoZm9yIHZlcnNpb24gMS41LjEgb3IgbmV3ZXIpIgorbXNnc3RyICLkuIDkuKogR2l0IOaVmeeoi++8iOmSiOWvuSAxLjUuMSDmiJbmm7TmlrDniYjmnKzvvIkiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyOAorbXNnaWQgIkFuIG92ZXJ2aWV3IG9mIHJlY29tbWVuZGVkIHdvcmtmbG93cyB3aXRoIEdpdCIKK21zZ3N0ciAiR2l0IOaOqOiNkOeahOW3peS9nOa1geamguiniCIKKworIzogYnVpbHRpbi9oZWxwLmM6NDQwCittc2dpZCAiVGhlIGNvbW1vbiBHaXQgZ3VpZGVzIGFyZTpcbiIKK21zZ3N0ciAi5pyA5bi455So55qEIEdpdCDlkJHlr7zmnInvvJpcbiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDYyIGJ1aWx0aW4vaGVscC5jOjQ3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1c2FnZTogJXMlcyIKIG1zZ3N0ciAi55So5rOV77yaJXMlcyIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDUzCisjOiBidWlsdGluL2hlbHAuYzo0OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiYGdpdCAlcycgaXMgYWxpYXNlZCB0byBgJXMnIgogbXNnc3RyICJgZ2l0ICVzJyDmmK8gYCVzJyDnmoTliKvlkI0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE2OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTgyCiAjLCBjLWZvcm1hdAogbXNnaWQgIm9iamVjdCB0eXBlIG1pc21hdGNoIGF0ICVzIgogbXNnc3RyICIlcyDnmoTlr7nosaHnsbvlnovkuI3ljLnphY0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE4OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjAyCiBtc2dpZCAib2JqZWN0IG9mIHVuZXhwZWN0ZWQgdHlwZSIKIG1zZ3N0ciAi5oSP5aSW55qE57G75Z6L55qE5a+56LGhIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyMjYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgZmlsbCAlZCBieXRlIgogbXNnaWRfcGx1cmFsICJjYW5ub3QgZmlsbCAlZCBieXRlcyIKIG1zZ3N0clswXSAi5peg5rOV5aGr5YWFICVkIOWtl+iKgiIKIG1zZ3N0clsxXSAi5peg5rOV5aGr5YWFICVkIOWtl+iKgiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjM2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNDkKIG1zZ2lkICJlYXJseSBFT0YiCiBtc2dzdHIgIui/h+aXqeeahOaWh+S7tue7k+adn+espu+8iEVPRu+8iSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjM3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNTAKIG1zZ2lkICJyZWFkIGVycm9yIG9uIGlucHV0IgogbXNnc3RyICLovpPlhaXkuIrnmoTor7vplJnor68iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI0OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjYyCiBtc2dpZCAidXNlZCBtb3JlIGJ5dGVzIHRoYW4gd2VyZSBhdmFpbGFibGUiCiBtc2dzdHIgIueUqOaOieS6hui2hei/h+WPr+eUqOeahOWtl+iKgiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjU2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNjkKIG1zZ2lkICJwYWNrIHRvbyBsYXJnZSBmb3IgY3VycmVudCBkZWZpbml0aW9uIG9mIG9mZl90IgogbXNnc3RyICLljIXlpKrlpKfotoXov4fkuoblvZPliY0gb2ZmX3Qg55qE5a6a5LmJIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNzIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlICclcyciCiBtc2dzdHIgIuS4jeiDveWIm+W7uiAnJXMnIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNzcKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI5MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiBwYWNrZmlsZSAnJXMnIgogbXNnc3RyICLml6Dms5XmiZPlvIDljIXmlofku7YgJyVzJyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjkxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzozMDQKIG1zZ2lkICJwYWNrIHNpZ25hdHVyZSBtaXNtYXRjaCIKIG1zZ3N0ciAi5YyF562+5ZCN5LiN5Yy56YWNIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzozMTEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMwNgorIywgYy1mb3JtYXQKK21zZ2lkICJwYWNrIHZlcnNpb24gJTxQUkl1MzI+IHVuc3VwcG9ydGVkIgorbXNnc3RyICLkuI3mlK/mjIHljIXniYjmnKwgJTxQUkl1MzI+IgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzozMjQKICMsIGMtZm9ybWF0CiBtc2dpZCAicGFjayBoYXMgYmFkIG9iamVjdCBhdCBvZmZzZXQgJWx1OiAlcyIKIG1zZ3N0ciAi5YyF5Lit5pyJ6ZSZ6K+v55qE5a+56LGh5L2N5LqOICVsde+8miVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0MDUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbmZsYXRlIHJldHVybmVkICVkIgogbXNnc3RyICLop6PljovnvKnov5Tlm54gJWQiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ1MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDk1CiBtc2dpZCAib2Zmc2V0IHZhbHVlIG92ZXJmbG93IGZvciBkZWx0YSBiYXNlIG9iamVjdCIKIG1zZ3N0ciAi5YGP56e75YC86KaG55uW5LqGIGRlbHRhIOWfuuWHhuWvueixoSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDU4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1MDMKIG1zZ2lkICJkZWx0YSBiYXNlIG9mZnNldCBpcyBvdXQgb2YgYm91bmQiCiBtc2dzdHIgImRlbHRhIOWfuuWHhuWBj+enu+i2iueVjCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDY2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1MTEKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93biBvYmplY3QgdHlwZSAlZCIKIG1zZ3N0ciAi5pyq55+l5a+56LGh57G75Z6LICVkIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0OTUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU0MgogbXNnaWQgImNhbm5vdCBwcmVhZCBwYWNrIGZpbGUiCiBtc2dzdHIgIuaXoOazleivu+WPluWMheaWh+S7tiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDk3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAicHJlbWF0dXJlIGVuZCBvZiBwYWNrIGZpbGUsICVsdSBieXRlIG1pc3NpbmciCiBtc2dpZF9wbHVyYWwgInByZW1hdHVyZSBlbmQgb2YgcGFjayBmaWxlLCAlbHUgYnl0ZXMgbWlzc2luZyIKIG1zZ3N0clswXSAi5YyF5paH5Lu26L+H5pep57uT5p2f77yM57y65bCRICVsdSDlrZfoioIiCiBtc2dzdHJbMV0gIuWMheaWh+S7tui/h+aXqee7k+adn++8jOe8uuWwkSAlbHUg5a2X6IqCIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo1MTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU3MAogbXNnaWQgInNlcmlvdXMgaW5mbGF0ZSBpbmNvbnNpc3RlbmN5IgogbXNnc3RyICLop6PljovnvKnkuKXph43nmoTkuI3kuIDoh7QiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU4MwotIywgYy1mb3JtYXQKLW1zZ2lkICJjYW5ub3QgcmVhZCBleGlzdGluZyBvYmplY3QgJXMiCi1tc2dzdHIgIuS4jeiDveivu+WPlueOsOWtmOWvueixoSAlcyIKLQotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTg2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo2NjEgYnVpbHRpbi9pbmRleC1wYWNrLmM6NjY3IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY5MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzI0IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjczMwogIywgYy1mb3JtYXQKIG1zZ2lkICJTSEExIENPTExJU0lPTiBGT1VORCBXSVRIICVzICEiCiBtc2dzdHIgIuWPkeeOsCAlcyDlh7rnjrAgU0hBMSDlhrLnqoHvvIEiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU5OAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjY0IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MTcwCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI2MgorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gcmVhZCAlcyIKK21zZ3N0ciAi5LiN6IO96K+7ICVzIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2Fubm90IHJlYWQgZXhpc3Rpbmcgb2JqZWN0ICVzIgorbXNnc3RyICLkuI3og73or7vlj5bnjrDlrZjlr7nosaEgJXMiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGJsb2Igb2JqZWN0ICVzIgotbXNnc3RyICLml6DmlYjnmoQgYmxvYiDlr7nosaEgJXMiCittc2dzdHIgIuaXoOaViOeahOaVsOaNru+8iGJsb2LvvInlr7nosaEgJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjYxMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzU5CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgJXMiCiBtc2dzdHIgIuaXoOaViOeahCAlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjEyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NjEKIG1zZ2lkICJFcnJvciBpbiBvYmplY3QiCiBtc2dzdHIgIuWvueixoeS4reWHuumUmSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjE0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGFsbCBjaGlsZCBvYmplY3RzIG9mICVzIGFyZSByZWFjaGFibGUiCiBtc2dzdHIgIiVzIOeahOaJgOacieWtkOWvueixoeW5tumdnumDveWPr+i+viIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6Njg3IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjcxMworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODMzIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg2MwogbXNnaWQgImZhaWxlZCB0byBhcHBseSBkZWx0YSIKIG1zZ3N0ciAi5peg5rOV5bqU55SoIGRlbHRhIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo4NTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMDQKIG1zZ2lkICJSZWNlaXZpbmcgb2JqZWN0cyIKIG1zZ3N0ciAi5o6l5pS25a+56LGh5LitIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo4NTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMDQKIG1zZ2lkICJJbmRleGluZyBvYmplY3RzIgogbXNnc3RyICLntKLlvJXlr7nosaHkuK0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg3MgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzMAogbXNnaWQgInBhY2sgaXMgY29ycnVwdGVkIChTSEExIG1pc21hdGNoKSIKIG1zZ3N0ciAi5YyF5Yay56qB77yIU0hBMSDkuI3ljLnphY3vvIkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg3NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzNQogbXNnaWQgImNhbm5vdCBmc3RhdCBwYWNrZmlsZSIKIG1zZ3N0ciAi5LiN6IO95p6a5Li+5YyF5paH5Lu254q25oCBIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo4ODAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzgKIG1zZ2lkICJwYWNrIGhhcyBqdW5rIGF0IHRoZSBlbmQiCiBtc2dzdHIgIuWMheeahOe7k+WwvuacieWeg+WcvuaVsOaNriIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6OTAzCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDQ5Cittc2dpZCAiY29uZnVzaW9uIGJleW9uZCBpbnNhbml0eSBpbiBwYXJzZV9wYWNrX29iamVjdHMoKSIKK21zZ3N0ciAicGFyc2VfcGFja19vYmplY3RzKCkg5Lit6YGH5Yiw5LiN5Y+v55CG5Za755qE6Zeu6aKYIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDcyCiBtc2dpZCAiUmVzb2x2aW5nIGRlbHRhcyIKIG1zZ3N0ciAi5aSE55CGIGRlbHRhIOS4rSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6OTU0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDgyCisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgdGhyZWFkOiAlcyIKK21zZ3N0ciAi5LiN6IO95Yib5bu657q/56iL77yaJXMiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMjQKIG1zZ2lkICJjb25mdXNpb24gYmV5b25kIGluc2FuaXR5IgogbXNnc3RyICLkuI3lj6/nkIbllrsiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjk3MworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEzMgorIywgYy1mb3JtYXQKK21zZ2lkICJjb21wbGV0ZWQgd2l0aCAlZCBsb2NhbCBvYmplY3RzIgorbXNnc3RyICLlrozmiJAgJWQg5Liq5pys5Zyw5a+56LGhIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTQyCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZXhwZWN0ZWQgdGFpbCBjaGVja3N1bSBmb3IgJXMgKGRpc2sgY29ycnVwdGlvbj8pIgorbXNnc3RyICLlr7kgJXMg55qE5bC+6YOo5qCh6aqM5Ye6546w5oSP5aSW77yI56OB55uY5o2f5Z2P77yf77yJIgorCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhY2sgaGFzICVkIHVucmVzb2x2ZWQgZGVsdGEiCiBtc2dpZF9wbHVyYWwgInBhY2sgaGFzICVkIHVucmVzb2x2ZWQgZGVsdGFzIgogbXNnc3RyWzBdICLljIXmnIkgJWQg5Liq5pyq6Kej5Yaz55qEIGRlbHRhIgogbXNnc3RyWzFdICLljIXmnIkgJWQg5Liq5pyq6Kej5Yaz55qEIGRlbHRhIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo5OTgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGRlZmxhdGUgYXBwZW5kZWQgb2JqZWN0ICglZCkiCi1tc2dzdHIgIuS4jeiDvee8qeWwj+mZhOWKoOWvueixoe+8iCVk77yJIgorbXNnc3RyICLkuI3og73ljovnvKnpmYTliqDlr7nosaHvvIglZO+8iSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA3NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJsb2NhbCBvYmplY3QgJXMgaXMgY29ycnVwdCIKIG1zZ3N0ciAi5pys5Zyw5a+56LGhICVzIOW3suaNn+WdjyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEwMQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI3NAogbXNnaWQgImVycm9yIHdoaWxlIGNsb3NpbmcgcGFjayBmaWxlIgogbXNnc3RyICLlhbPpl63ljIXmlofku7bml7blh7rplJkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMTQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyODcKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHdyaXRlIGtlZXAgZmlsZSAnJXMnIgogbXNnc3RyICLml6Dms5Xlhpnkv53nlZnmlofku7YgJyVzJyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEyMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI5NQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgY2xvc2Ugd3JpdHRlbiBrZWVwIGZpbGUgJyVzJyIKIG1zZ3N0ciAi5peg5rOV5YWz6Zet5L+d55WZ5paH5Lu2ICclcyciCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMzUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzMDgKIG1zZ2lkICJjYW5ub3Qgc3RvcmUgcGFjayBmaWxlIgogbXNnc3RyICLml6Dms5XlrZjlgqjljIXmlofku7YiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNDYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzMTkKIG1zZ2lkICJjYW5ub3Qgc3RvcmUgaW5kZXggZmlsZSIKIG1zZ3N0ciAi5peg5rOV5a2Y5YKo57Si5byV5paH5Lu2IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjQ3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzUyCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBwYWNrLmluZGV4dmVyc2lvbj0lPFBSSXUzMj4iCittc2dzdHIgIuWdj+eahCBwYWNrLmluZGV4dmVyc2lvbj0lPFBSSXUzMj4iCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBudW1iZXIgb2YgdGhyZWFkcyBzcGVjaWZpZWQgKCVkKSIKK21zZ3N0ciAi5oyH5a6a55qE57q/56iL5pWw5peg5pWI77yIJWTvvIkiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNjIgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTUzNQorIywgYy1mb3JtYXQKK21zZ2lkICJubyB0aHJlYWRzIHN1cHBvcnQsIGlnbm9yaW5nICVzIgorbXNnc3RyICLmsqHmnInnur/nqIvmlK/mjIHvvIzlv73nlaUgJXMiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IG9wZW4gZXhpc3RpbmcgcGFjayBmaWxlICclcyciCiBtc2dzdHIgIuaXoOazleaJk+W8gOeOsOWtmOWMheaWh+S7tiAnJXMnIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjQ5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBvcGVuIGV4aXN0aW5nIHBhY2sgaWR4IGZpbGUgZm9yICclcyciCiBtc2dzdHIgIuaXoOazleS4uiAlcyDmiZPlvIDljIXntKLlvJXmlofku7YiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyOTYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NjkKICMsIGMtZm9ybWF0CiBtc2dpZCAibm9uIGRlbHRhOiAlZCBvYmplY3QiCiBtc2dpZF9wbHVyYWwgIm5vbiBkZWx0YTogJWQgb2JqZWN0cyIKIG1zZ3N0clswXSAi6Z2eIGRlbHRh77yaJWQg5Liq5a+56LGhIgogbXNnc3RyWzFdICLpnZ4gZGVsdGHvvJolZCDkuKrlr7nosaEiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzMDMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2hhaW4gbGVuZ3RoID0gJWQ6ICVsdSBvYmplY3QiCiBtc2dpZF9wbHVyYWwgImNoYWluIGxlbmd0aCA9ICVkOiAlbHUgb2JqZWN0cyIKIG1zZ3N0clswXSAi6ZO+6ZW/ID0gJWQ6ICVsdSDlr7nosaEiCiBtc2dzdHJbMV0gIumTvumVvyA9ICVkOiAlbHUg5a+56LGhIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzMwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTAzCiBtc2dpZCAiQ2Fubm90IGNvbWUgYmFjayB0byBjd2QiCiBtc2dzdHIgIuaXoOazlei/lOWbnuW9k+WJjeW3peS9nOebruW9lSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM3NCBidWlsdGluL2luZGV4LXBhY2suYzoxMzc3Ci0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzg5IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzOTMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NDcgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU1MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU2MiBidWlsdGluL2luZGV4LXBhY2suYzoxNTY2CiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCAlcyIKIG1zZ3N0ciAi6ZSZ6K+v6YCJ6aG5ICVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDA3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTgwCiBtc2dpZCAiLS1maXgtdGhpbiBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IC0tc3RkaW4iCi1tc2dzdHIgIi0tZml4LXRoaW4g5LiN6IO95ZKMIC0tc3RkaW4g5YWx55SoIgorbXNnc3RyICItLWZpeC10aGluIOS4jeiDveWSjCAtLXN0ZGluIOWQjOaXtuS9v+eUqCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQxMSBidWlsdGluL2luZGV4LXBhY2suYzoxNDIxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTg0IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAicGFja2ZpbGUgbmFtZSAnJXMnIGRvZXMgbm90IGVuZCB3aXRoICcucGFjayciCiBtc2dzdHIgIuWMheWQjSAnJXMnIOayoeacieS7pSAnLnBhY2snIOe7k+WwviIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQzMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTYwMwogbXNnaWQgIi0tdmVyaWZ5IHdpdGggbm8gcGFja2ZpbGUgbmFtZSBnaXZlbiIKIG1zZ3N0ciAiLS12ZXJpZnkg5rKh5pyJ5o+Q5L6b5YyF5ZCN5Y+C5pWwIgogCkBAIC0zMTk2LDIyICs1NjY3LDIyIEBACiBtc2dpZCAiaW5zYW5lIGdpdCBkaXJlY3RvcnkgJXMiCiBtc2dzdHIgIuS4jeato+W4uOeahCBnaXQg55uu5b2VICVzIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzozMjIgYnVpbHRpbi9pbml0LWRiLmM6MzI1CisjOiBidWlsdGluL2luaXQtZGIuYzozMjMgYnVpbHRpbi9pbml0LWRiLmM6MzI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGFscmVhZHkgZXhpc3RzIgogbXNnc3RyICIlcyDlt7Lnu4/lrZjlnKgiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjM1NAorIzogYnVpbHRpbi9pbml0LWRiLmM6MzU1CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBoYW5kbGUgZmlsZSB0eXBlICVkIgogbXNnc3RyICLkuI3og73lpITnkIYgJWQg57G75Z6L55qE5paH5Lu2IgogCi0jOiBidWlsdGluL2luaXQtZGIuYzozNTcKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjM1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gbW92ZSAlcyB0byAlcyIKIG1zZ3N0ciAi5LiN6IO956e75YqoICVzIOiHsyAlcyIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6MzYyCisjOiBidWlsdGluL2luaXQtZGIuYzozNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBnaXQgbGluayAlcyIKIG1zZ3N0ciAi5LiN6IO95Yib5bu6IGdpdCBsaW5rICVzIgpAQCAtMzIyMSwzOSArNTY5Miw1OSBAQAogIy4gKiBleGlzdGluZyIgb3IgIkluaXRpYWxpemVkIGVtcHR5IiwgdGhlIHNlY29uZCAiIHNoYXJlZCIgb3IKICMuICogIiIsIGFuZCB0aGUgbGFzdCAnJXMlcycgaXMgdGhlIHZlcmJhdGltIGRpcmVjdG9yeSBuYW1lLgogIy4KLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQxOQorIzogYnVpbHRpbi9pbml0LWRiLmM6NDIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzJXMgR2l0IHJlcG9zaXRvcnkgaW4gJXMlc1xuIgogbXNnc3RyICIlcyVzIEdpdCDniYjmnKzlupPkuo4gJXMlc1xuIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo0MjAKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQyMQogbXNnaWQgIlJlaW5pdGlhbGl6ZWQgZXhpc3RpbmciCiBtc2dzdHIgIumHjeaWsOWIneWni+WMlueOsOWtmOeahCIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6NDIwCisjOiBidWlsdGluL2luaXQtZGIuYzo0MjEKIG1zZ2lkICJJbml0aWFsaXplZCBlbXB0eSIKIG1zZ3N0ciAi5Yid5aeL5YyW56m655qEIgogCiAjICDor5HogIXvvJrkuK3mloflrZfnrKbkuLLmi7zmjqXvvIzlj6/liKDpmaTliY3lr7znqbrmoLwKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQyMQorIzogYnVpbHRpbi9pbml0LWRiLmM6NDIyCiBtc2dpZCAiIHNoYXJlZCIKIG1zZ3N0ciAi5YWx5LqrIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo0NDAKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQ0MQogbXNnaWQgImNhbm5vdCB0ZWxsIGN3ZCIKIG1zZ3N0ciAi5peg5rOV6I6355+l5b2T5YmN6Lev5b6EIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo1MjEgYnVpbHRpbi9pbml0LWRiLmM6NTI4CisjOiBidWlsdGluL2luaXQtZGIuYzo0NjcKK21zZ2lkICIiCisiZ2l0IGluaXQgWy1xIHwgLS1xdWlldF0gWy0tYmFyZV0gWy0tdGVtcGxhdGU9PHRlbXBsYXRlLWRpcmVjdG9yeT5dIFstLSIKKyJzaGFyZWRbPTxwZXJtaXNzaW9ucz5dXSBbZGlyZWN0b3J5XSIKK21zZ3N0ciAiIgorImdpdCBpbml0IFstcSB8IC0tcXVpZXRdIFstLWJhcmVdIFstLXRlbXBsYXRlPTzmqKHmnb/nm67lvZU+XSBbLS1zaGFyZWRbPTzmnYPpmZA+XV0gIgorIlvnm67lvZVdIgorCisjOiBidWlsdGluL2luaXQtZGIuYzo0OTAKK21zZ2lkICJwZXJtaXNzaW9ucyIKK21zZ3N0ciAi5p2D6ZmQIgorCisjOiBidWlsdGluL2luaXQtZGIuYzo0OTEKK21zZ2lkICJzcGVjaWZ5IHRoYXQgdGhlIGdpdCByZXBvc2l0b3J5IGlzIHRvIGJlIHNoYXJlZCBhbW9uZ3N0IHNldmVyYWwgdXNlcnMiCittc2dzdHIgIuaMh+WumiBnaXQg54mI5pys5bqT5piv5aSa5Liq55So5oi35LmL6Ze05YWx5Lqr55qEIgorCisjOiBidWlsdGluL2luaXQtZGIuYzo0OTMgYnVpbHRpbi9wcnVuZS1wYWNrZWQuYzo3NworbXNnaWQgImJlIHF1aWV0IgorbXNnc3RyICLkv53mjIHlronpnZkiCisKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjUyMiBidWlsdGluL2luaXQtZGIuYzo1MjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG1rZGlyICVzIgogbXNnc3RyICLkuI3og73liJvlu7rnm67lvZUgJXMiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjUzMgorIzogYnVpbHRpbi9pbml0LWRiLmM6NTMzCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBjaGRpciB0byAlcyIKIG1zZ3N0ciAi5LiN6IO95YiH5o2i55uu5b2V5YiwICVzIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo1NTQKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjU1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJXMgKG9yIC0td29yay10cmVlPTxkaXJlY3Rvcnk+KSBub3QgYWxsb3dlZCB3aXRob3V0IHNwZWNpZnlpbmcgJXMgKG9yIC0tZ2l0LSIKQEAgLTMyNjIsMTEzICs1NzUzLDQwMCBAQAogIuS4jeWFgeiuuCAlc++8iOaIliAtLXdvcmstdHJlZT08ZGlyZWN0b3J5Pu+8ieiAjOayoeacieaMh+WumiAlc++8iOaIliAtLWdpdC0iCiAiZGlyPTxkaXJlY3Rvcnk+77yJIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo1NzgKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjU3OQogbXNnaWQgIkNhbm5vdCBhY2Nlc3MgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAi5LiN6IO96K6/6Zeu5b2T5YmN5bel5L2c55uu5b2VIgogCi0jOiBidWlsdGluL2luaXQtZGIuYzo1ODUKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjU4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgYWNjZXNzIHdvcmsgdHJlZSAnJXMnIgogbXNnc3RyICLkuI3og73orr/pl67lt6XkvZzljLogJyVzJyIKIAotIzogYnVpbHRpbi9sb2cuYzoxODgKKyM6IGJ1aWx0aW4vbG9nLmM6NDAKK21zZ2lkICJnaXQgbG9nIFs8b3B0aW9ucz5dIFs8cmV2aXNpb24gcmFuZ2U+XSBbWy0tXSA8cGF0aD4uLi5dXG4iCittc2dzdHIgImdpdCBsb2cgWzzpgInpobk+XSBbPOeJiOacrOiMg+WbtD5dIFtbLS1dIDzot6/lvoQ+Li4uXVxuIgorCisjOiBidWlsdGluL2xvZy5jOjQxCittc2dpZCAiICAgb3I6IGdpdCBzaG93IFtvcHRpb25zXSA8b2JqZWN0Pi4uLiIKK21zZ3N0ciAiICAg5oiW6ICF77yaZ2l0IHNob3cgW+mAiemhuV0gPOWvueixoT4uLi4iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTAzCittc2dpZCAic3VwcHJlc3MgZGlmZiBvdXRwdXQiCittc2dzdHIgIuS4jeaYvuekuuW3ruW8gui+k+WHuiIKKworIzogYnVpbHRpbi9sb2cuYzoxMDQKK21zZ2lkICJzaG93IHNvdXJjZSIKK21zZ3N0ciAi5pi+56S65rqQIgorCisjOiBidWlsdGluL2xvZy5jOjEwNQorbXNnaWQgIlVzZSBtYWlsIG1hcCBmaWxlIgorbXNnc3RyICLkvb/nlKjpgq7ku7bmmKDlsITmlofku7YiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTA2Cittc2dpZCAiZGVjb3JhdGUgb3B0aW9ucyIKK21zZ3N0ciAi5L+u6aWw6YCJ6aG5IgorCisjOiBidWlsdGluL2xvZy5jOjE5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJGaW5hbCBvdXRwdXQ6ICVkICVzXG4iCiBtc2dzdHIgIuacgOe7iOi+k+WHuu+8miVkICVzXG4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NDAxIGJ1aWx0aW4vbG9nLmM6NDg5CisjOiBidWlsdGluL2xvZy5jOjQyMiBidWlsdGluL2xvZy5jOjUxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCBvYmplY3QgJXMiCiBtc2dzdHIgIuS4jeiDveivu+WPluWvueixoSAlcyIKIAotIzogYnVpbHRpbi9sb2cuYzo1MTMKKyM6IGJ1aWx0aW4vbG9nLmM6NTM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gdHlwZTogJWQiCiBtc2dzdHIgIuacquefpeexu+Wei++8miVkIgogCi0jOiBidWlsdGluL2xvZy5jOjYwMgorIzogYnVpbHRpbi9sb2cuYzo2MzgKIG1zZ2lkICJmb3JtYXQuaGVhZGVycyB3aXRob3V0IHZhbHVlIgogbXNnc3RyICJmb3JtYXQuaGVhZGVycyDmsqHmnInlgLwiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6Njc2CisjOiBidWlsdGluL2xvZy5jOjcyMAogbXNnaWQgIm5hbWUgb2Ygb3V0cHV0IGRpcmVjdG9yeSBpcyB0b28gbG9uZyIKIG1zZ3N0ciAi6L6T5Ye655uu5b2V5ZCN5aSq6ZW/IgogCi0jOiBidWlsdGluL2xvZy5jOjY4NworIzogYnVpbHRpbi9sb2cuYzo3MzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IG9wZW4gcGF0Y2ggZmlsZSAlcyIKIG1zZ3N0ciAi5peg5rOV5omT5byA6KGl5LiB5paH5Lu2ICVzIgogCi0jOiBidWlsdGluL2xvZy5jOjcwMQorIzogYnVpbHRpbi9sb2cuYzo3NTAKIG1zZ2lkICJOZWVkIGV4YWN0bHkgb25lIHJhbmdlLiIKIG1zZ3N0ciAi5Y+q6ZyA6KaB5LiA5Liq6IyD5Zu044CCIgogCi0jOiBidWlsdGluL2xvZy5jOjcwOQorIzogYnVpbHRpbi9sb2cuYzo3NTgKIG1zZ2lkICJOb3QgYSByYW5nZS4iCiBtc2dzdHIgIuS4jeaYr+S4gOS4quiMg+WbtOOAgiIKIAotIzogYnVpbHRpbi9sb2cuYzo3ODYKKyM6IGJ1aWx0aW4vbG9nLmM6ODYwCiBtc2dpZCAiQ292ZXIgbGV0dGVyIG5lZWRzIGVtYWlsIGZvcm1hdCIKIG1zZ3N0ciAi5L+h5bCB6ZyA6KaB6YKu5Lu25Zyw5Z2A5qC85byPIgogCi0jOiBidWlsdGluL2xvZy5jOjg1OQorIzogYnVpbHRpbi9sb2cuYzo5MzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW5zYW5lIGluLXJlcGx5LXRvOiAlcyIKIG1zZ3N0ciAi5LiN5q2j5bi455qEIGluLXJlcGx5LXRv77yaJXMiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6OTMyCisjOiBidWlsdGluL2xvZy5jOjk2NAorbXNnaWQgImdpdCBmb3JtYXQtcGF0Y2ggW29wdGlvbnNdIFs8c2luY2U+IHwgPHJldmlzaW9uIHJhbmdlPl0iCittc2dzdHIgImdpdCBmb3JtYXQtcGF0Y2ggW+mAiemhuV0gWzzku44+IHwgPOS/ruiuoumbhuiMg+WbtD5dIgorCisjOiBidWlsdGluL2xvZy5jOjEwMDkKIG1zZ2lkICJUd28gb3V0cHV0IGRpcmVjdG9yaWVzPyIKIG1zZ3N0ciAi5Lik5Liq6L6T5Ye655uu5b2V77yfIgogCi0jOiBidWlsdGluL2xvZy5jOjExNTMKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiYm9ndXMgY29tbWl0dGVyIGluZm8gJXMiCi1tc2dzdHIgIuiZmuWBh+eahOaPkOS6pOiAheS/oeaBryAlcyIKKyM6IGJ1aWx0aW4vbG9nLmM6MTEwOAorbXNnaWQgInVzZSBbUEFUQ0ggbi9tXSBldmVuIHdpdGggYSBzaW5nbGUgcGF0Y2giCittc2dzdHIgIuS9v+eUqCBbUEFUQ0ggbi9tXe+8jOWNs+S9v+WPquacieS4gOS4quihpeS4gSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTk4CisjOiBidWlsdGluL2xvZy5jOjExMTEKK21zZ2lkICJ1c2UgW1BBVENIXSBldmVuIHdpdGggbXVsdGlwbGUgcGF0Y2hlcyIKK21zZ3N0ciAi5L2/55SoIFtQQVRDSF3vvIzljbPkvb/mnInlpJrkuKrooaXkuIEiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTExNQorbXNnaWQgInByaW50IHBhdGNoZXMgdG8gc3RhbmRhcmQgb3V0IgorbXNnc3RyICLmiZPljbDooaXkuIHliLDmoIflh4bovpPlh7oiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTExNworbXNnaWQgImdlbmVyYXRlIGEgY292ZXIgbGV0dGVyIgorbXNnc3RyICLnlJ/miJDkuIDlsIHpmYTkv6EiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTExOQorbXNnaWQgInVzZSBzaW1wbGUgbnVtYmVyIHNlcXVlbmNlIGZvciBvdXRwdXQgZmlsZSBuYW1lcyIKK21zZ3N0ciAi5L2/55So566A5Y2V55qE5pWw5a2X5bqP5YiX5L2c5Li66L6T5Ye65paH5Lu25ZCNIgorCisjOiBidWlsdGluL2xvZy5jOjExMjAKK21zZ2lkICJzZngiCittc2dzdHIgIuWQjue8gCIKKworIzogYnVpbHRpbi9sb2cuYzoxMTIxCittc2dpZCAidXNlIDxzZng+IGluc3RlYWQgb2YgJy5wYXRjaCciCittc2dzdHIgIuS9v+eUqCA85ZCO57yAPiDku6Pmm78gJy5wYXRjaCciCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyMworbXNnaWQgInN0YXJ0IG51bWJlcmluZyBwYXRjaGVzIGF0IDxuPiBpbnN0ZWFkIG9mIDEiCittc2dzdHIgIuihpeS4geS7pSA8bj4g5byA5aeL57yW5Y+377yM6ICM5LiN5pivMSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTI1Cittc2dpZCAibWFyayB0aGUgc2VyaWVzIGFzIE50aCByZS1yb2xsIgorbXNnc3RyICLmoIforrDooaXkuIHns7vliJfmmK/nrKzlh6DmrKHph43liLYiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyNworbXNnaWQgIlVzZSBbPHByZWZpeD5dIGluc3RlYWQgb2YgW1BBVENIXSIKK21zZ3N0ciAi5L2/55SoIFs85YmN57yAPl0g5Luj5pu/IFtQQVRDSF0iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzMAorbXNnaWQgInN0b3JlIHJlc3VsdGluZyBmaWxlcyBpbiA8ZGlyPiIKK21zZ3N0ciAi5oqK57uT5p6c5paH5Lu25a2Y5YKo5ZyoIDxkaXI+IgorCisjOiBidWlsdGluL2xvZy5jOjExMzMKK21zZ2lkICJkb24ndCBzdHJpcC9hZGQgW1BBVENIXSIKK21zZ3N0ciAi5LiN5Yig6ZmkL+a3u+WKoCBbUEFUQ0hdIgorCisjOiBidWlsdGluL2xvZy5jOjExMzYKK21zZ2lkICJkb24ndCBvdXRwdXQgYmluYXJ5IGRpZmZzIgorbXNnc3RyICLkuI3ovpPlh7rkuozov5vliLblt67lvIIiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzOAorbXNnaWQgImRvbid0IGluY2x1ZGUgYSBwYXRjaCBtYXRjaGluZyBhIGNvbW1pdCB1cHN0cmVhbSIKK21zZ3N0ciAi5LiN5YyF5ZCr5bey5Zyo5LiK5ri45o+Q5Lqk5Lit55qE6KGl5LiBIgorCisjOiBidWlsdGluL2xvZy5jOjExNDAKK21zZ2lkICJzaG93IHBhdGNoIGZvcm1hdCBpbnN0ZWFkIG9mIGRlZmF1bHQgKHBhdGNoICsgc3RhdCkiCittc2dzdHIgIuaYvuekuue6r+ihpeS4geagvOW8j+iAjOmdnum7mOiupOeahO+8iOihpeS4gSvnirbmgIHvvIkiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0MgorbXNnaWQgIk1lc3NhZ2luZyIKK21zZ3N0ciAi6YKu5Lu25Y+R6YCBIgorCisjOiBidWlsdGluL2xvZy5jOjExNDMKK21zZ2lkICJoZWFkZXIiCittc2dzdHIgImhlYWRlciIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQ0Cittc2dpZCAiYWRkIGVtYWlsIGhlYWRlciIKK21zZ3N0ciAi5re75Yqg6YKu5Lu25aS0IgorCisjOiBidWlsdGluL2xvZy5jOjExNDUgYnVpbHRpbi9sb2cuYzoxMTQ3Cittc2dpZCAiZW1haWwiCittc2dzdHIgIumCruS7tuWcsOWdgCIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQ1Cittc2dpZCAiYWRkIFRvOiBoZWFkZXIiCittc2dzdHIgIua3u+WKoOaUtuS7tuS6uiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQ3Cittc2dpZCAiYWRkIENjOiBoZWFkZXIiCittc2dzdHIgIua3u+WKoOaKhOmAgSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQ5Cittc2dpZCAibWVzc2FnZS1pZCIKK21zZ3N0ciAibWVzc2FnZS1pZCIKKworIzogYnVpbHRpbi9sb2cuYzoxMTUwCittc2dpZCAibWFrZSBmaXJzdCBtYWlsIGEgcmVwbHkgdG8gPG1lc3NhZ2UtaWQ+IgorbXNnc3RyICLkvb/nrKzkuIDlsIHpgq7ku7bkvZzkuLrlr7kgPG1lc3NhZ2UtaWQ+IOeahOWbnuWkjSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTUxIGJ1aWx0aW4vbG9nLmM6MTE1NAorbXNnaWQgImJvdW5kYXJ5IgorbXNnc3RyICLovrnnlYwiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE1MgorbXNnaWQgImF0dGFjaCB0aGUgcGF0Y2giCittc2dzdHIgIumZhOS7tuaWueW8j+a3u+WKoOihpeS4gSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTU1Cittc2dpZCAiaW5saW5lIHRoZSBwYXRjaCIKK21zZ3N0ciAi5YaF6IGU5pi+56S66KGl5LiBIgorCisjOiBidWlsdGluL2xvZy5jOjExNTkKK21zZ2lkICJlbmFibGUgbWVzc2FnZSB0aHJlYWRpbmcsIHN0eWxlczogc2hhbGxvdywgZGVlcCIKK21zZ3N0ciAi5ZCv55So6YKu5Lu257q/57Si77yM6aOO5qC877ya5rWF77yM5rexIgorCisjOiBidWlsdGluL2xvZy5jOjExNjEKK21zZ2lkICJzaWduYXR1cmUiCittc2dzdHIgIuetvuWQjSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTYyCittc2dpZCAiYWRkIGEgc2lnbmF0dXJlIgorbXNnc3RyICLmt7vliqDkuIDkuKrnrb7lkI0iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE2NAorbXNnaWQgImRvbid0IHByaW50IHRoZSBwYXRjaCBmaWxlbmFtZXMiCittc2dzdHIgIuS4jeimgeaJk+WNsOihpeS4geaWh+S7tuWQjSIKKworIzogYnVpbHRpbi9sb2cuYzoxMjQ4CiBtc2dpZCAiLW4gYW5kIC1rIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIgogbXNnc3RyICItbiDlkowgLWsg5LqS5pal44CCIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMDAKKyM6IGJ1aWx0aW4vbG9nLmM6MTI1MAogbXNnaWQgIi0tc3ViamVjdC1wcmVmaXggYW5kIC1rIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIgogbXNnc3RyICItLXN1YmplY3QtcHJlZml4IOWSjCAtayDkupLmlqXjgIIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIwOAorIzogYnVpbHRpbi9sb2cuYzoxMjU4CiBtc2dpZCAiLS1uYW1lLW9ubHkgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiLS1uYW1lLW9ubHkg5peg5oSP5LmJIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMTAKKyM6IGJ1aWx0aW4vbG9nLmM6MTI2MAogbXNnaWQgIi0tbmFtZS1zdGF0dXMgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiLS1uYW1lLXN0YXR1cyDml6DmhI/kuYkiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIxMgorIzogYnVpbHRpbi9sb2cuYzoxMjYyCiBtc2dpZCAiLS1jaGVjayBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICItLWNoZWNrIOaXoOaEj+S5iSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjM1CisjOiBidWlsdGluL2xvZy5jOjEyODUKIG1zZ2lkICJzdGFuZGFyZCBvdXRwdXQsIG9yIGRpcmVjdG9yeSwgd2hpY2ggb25lPyIKIG1zZ3N0ciAi5qCH5YeG6L6T5Ye65oiW55uu5b2V77yM5ZOq5LiA5Liq77yfIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMzcKKyM6IGJ1aWx0aW4vbG9nLmM6MTI4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSAnJXMnIgogbXNnc3RyICLkuI3og73liJvlu7rnm67lvZUgJyVzJyIKIAotIzogYnVpbHRpbi9sb2cuYzoxMzkwCisjOiBidWlsdGluL2xvZy5jOjE0MzUKIG1zZ2lkICJGYWlsZWQgdG8gY3JlYXRlIG91dHB1dCBmaWxlcyIKIG1zZ3N0ciAi5peg5rOV5Yib5bu66L6T5Ye65paH5Lu2IgogCi0jOiBidWlsdGluL2xvZy5jOjE0OTQKKyM6IGJ1aWx0aW4vbG9nLmM6MTQ4NAorbXNnaWQgImdpdCBjaGVycnkgWy12XSBbPHVwc3RyZWFtPiBbPGhlYWQ+IFs8bGltaXQ+XV1dIgorbXNnc3RyICJnaXQgY2hlcnJ5IFstdl0gWzzkuIrmuLg+IFs85aS0PiBbPOmZkOWItj5dXV0iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTUzOQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ291bGQgbm90IGZpbmQgYSB0cmFja2VkIHJlbW90ZSBicmFuY2gsIHBsZWFzZSBzcGVjaWZ5IDx1cHN0cmVhbT4gbWFudWFsbHkuXG4iCiBtc2dzdHIgIuS4jeiDveaJvuWIsOi3n+i4queahOi/nOeoi+WIhuaUr++8jOivt+aJi+W3peaMh+WumiA8dXBzdHJlYW0+44CCXG4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTUxMCBidWlsdGluL2xvZy5jOjE1MTIgYnVpbHRpbi9sb2cuYzoxNTI0CisjOiBidWlsdGluL2xvZy5jOjE1NTIgYnVpbHRpbi9sb2cuYzoxNTU0IGJ1aWx0aW4vbG9nLmM6MTU2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIGNvbW1pdCAlcyIKIG1zZ3N0ciAi5pyq55+l5o+Q5LqkICVzIgogCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDAyCittc2dpZCAiZ2l0IGxzLWZpbGVzIFtvcHRpb25zXSBbPGZpbGU+Li4uXSIKK21zZ3N0ciAiZ2l0IGxzLWZpbGVzIFvpgInpobldIFs85paH5Lu2Pi4uLl0iCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NTkKK21zZ2lkICJpZGVudGlmeSB0aGUgZmlsZSBzdGF0dXMgd2l0aCB0YWdzIgorbXNnc3RyICLnlKjmoIfnrb7moIfor4bmlofku7bnmoTnirbmgIEiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjEKK21zZ2lkICJ1c2UgbG93ZXJjYXNlIGxldHRlcnMgZm9yICdhc3N1bWUgdW5jaGFuZ2VkJyBmaWxlcyIKK21zZ3N0ciAi5L2/55So5bCP5YaZ5a2X5q+N6KGo56S6ICflgYforr7mnKrmlLnlj5jnmoQnIOaWh+S7tiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2MworbXNnaWQgInNob3cgY2FjaGVkIGZpbGVzIGluIHRoZSBvdXRwdXQgKGRlZmF1bHQpIgorbXNnc3RyICLmmL7npLrnvJPlrZjnmoTmlofku7bvvIjpu5jorqTvvIkiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjUKK21zZ2lkICJzaG93IGRlbGV0ZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKK21zZ3N0ciAi5pi+56S65bey5Yig6Zmk55qE5paH5Lu2IgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDY3Cittc2dpZCAic2hvdyBtb2RpZmllZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgorbXNnc3RyICLmmL7npLrlt7Lkv67mlLnnmoTmlofku7YiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjkKK21zZ2lkICJzaG93IG90aGVyIGZpbGVzIGluIHRoZSBvdXRwdXQiCittc2dzdHIgIuaYvuekuuWFtuWug+aWh+S7tiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3MQorbXNnaWQgInNob3cgaWdub3JlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgorbXNnc3RyICLmmL7npLrlv73nlaXnmoTmlofku7YiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzQKK21zZ2lkICJzaG93IHN0YWdlZCBjb250ZW50cycgb2JqZWN0IG5hbWUgaW4gdGhlIG91dHB1dCIKK21zZ3N0ciAi5pi+56S65pqC5a2Y5Yy65YaF5a6555qE5a+56LGh5ZCN56ewIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc2Cittc2dpZCAic2hvdyBmaWxlcyBvbiB0aGUgZmlsZXN5c3RlbSB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZCIKK21zZ3N0ciAi5pi+56S65paH5Lu257O757uf6ZyA6KaB5Yig6Zmk55qE5paH5Lu2IgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc4Cittc2dpZCAic2hvdyAnb3RoZXInIGRpcmVjdG9yaWVzJyBuYW1lIG9ubHkiCittc2dzdHIgIuWPquaYvuekuuKAnOWFtuS7luKAneebruW9leeahOWQjeensCIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4MQorbXNnaWQgImRvbid0IHNob3cgZW1wdHkgZGlyZWN0b3JpZXMiCittc2dzdHIgIuS4jeaYvuekuuepuuebruW9lSIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4NAorbXNnaWQgInNob3cgdW5tZXJnZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKK21zZ3N0ciAi5pi+56S65pyq5ZCI5bm255qE5paH5Lu2IgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg2Cittc2dpZCAic2hvdyByZXNvbHZlLXVuZG8gaW5mb3JtYXRpb24iCittc2dzdHIgIuaYvuekuiByZXNvbHZlLXVuZG8g5L+h5oGvIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg4Cittc2dpZCAic2tpcCBmaWxlcyBtYXRjaGluZyBwYXR0ZXJuIgorbXNnc3RyICLljLnphY3mjpLpmaTmlofku7bnmoTmqKHlvI8iCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTEKK21zZ2lkICJleGNsdWRlIHBhdHRlcm5zIGFyZSByZWFkIGZyb20gPGZpbGU+IgorbXNnc3RyICLku44gPOaWh+S7tj4g5Lit6K+75Y+W5o6S6Zmk5qih5byPIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDk0Cittc2dpZCAicmVhZCBhZGRpdGlvbmFsIHBlci1kaXJlY3RvcnkgZXhjbHVkZSBwYXR0ZXJucyBpbiA8ZmlsZT4iCittc2dzdHIgIuS7jiA85paH5Lu2PiDor7vlj5bpop3lpJbnmoTmr4/kuKrnm67lvZXnmoTmjpLpmaTmqKHlvI8iCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTYKK21zZ2lkICJhZGQgdGhlIHN0YW5kYXJkIGdpdCBleGNsdXNpb25zIgorbXNnc3RyICLmt7vliqDmoIflh4bnmoQgZ2l0IOaOkumZpCIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5OQorbXNnaWQgIm1ha2UgdGhlIG91dHB1dCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCB0b3AgZGlyZWN0b3J5IgorbXNnc3RyICLmmL7npLrnm7jlr7nkuo7pobbnuqfnm67lvZXnmoTmlofku7blkI0iCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDIKK21zZ2lkICJpZiBhbnkgPGZpbGU+IGlzIG5vdCBpbiB0aGUgaW5kZXgsIHRyZWF0IHRoaXMgYXMgYW4gZXJyb3IiCittc2dzdHIgIuWmguaenOS7u+S9lSA85paH5Lu2PiDpg73kuI3lnKjntKLlvJXljLrvvIzop4bkuLrplJnor68iCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDMKK21zZ2lkICJ0cmVlLWlzaCIKK21zZ3N0ciAi5qCR5oiW5o+Q5LqkIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTA0Cittc2dpZCAicHJldGVuZCB0aGF0IHBhdGhzIHJlbW92ZWQgc2luY2UgPHRyZWUtaXNoPiBhcmUgc3RpbGwgcHJlc2VudCIKK21zZ3N0ciAi5YGH6KOF6Ieq5LuOIDzmoJHmiJbmj5DkuqQ+IOS5i+WQjuWIoOmZpOeahOi3r+W+hOS7jeeEtuWtmOWcqCIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjUwNgorbXNnaWQgInNob3cgZGVidWdnaW5nIGRhdGEiCittc2dzdHIgIuaYvuekuuiwg+ivleaVsOaNriIKKworIzogYnVpbHRpbi9scy10cmVlLmM6MjcKK21zZ2lkICJnaXQgbHMtdHJlZSBbPG9wdGlvbnM+XSA8dHJlZS1pc2g+IFs8cGF0aD4uLi5dIgorbXNnc3RyICJnaXQgbHMtdHJlZSBbPOmAiemhuT5dIDzmoJHmiJbmj5DkuqQ+IFs86Lev5b6EPi4uLl0iCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjEyNQorbXNnaWQgIm9ubHkgc2hvdyB0cmVlcyIKK21zZ3N0ciAi5Y+q5pi+56S65qCRIgorCisjOiBidWlsdGluL2xzLXRyZWUuYzoxMjcKK21zZ2lkICJyZWN1cnNlIGludG8gc3VidHJlZXMiCittc2dzdHIgIumAkuW9kuWIsOWtkOagkSIKKworIzogYnVpbHRpbi9scy10cmVlLmM6MTI5Cittc2dpZCAic2hvdyB0cmVlcyB3aGVuIHJlY3Vyc2luZyIKK21zZ3N0ciAi5b2T6YCS5b2S5pe25pi+56S65qCRIgorCisjOiBidWlsdGluL2xzLXRyZWUuYzoxMzIKK21zZ2lkICJ0ZXJtaW5hdGUgZW50cmllcyB3aXRoIE5VTCBieXRlIgorbXNnc3RyICLmnaHnm67ku6VOVUzlrZfnrKbnu4jmraIiCisKKyM6IGJ1aWx0aW4vbHMtdHJlZS5jOjEzMworbXNnaWQgImluY2x1ZGUgb2JqZWN0IHNpemUiCittc2dzdHIgIuWMheaLrOWvueixoeWkp+WwjyIKKworIzogYnVpbHRpbi9scy10cmVlLmM6MTM1IGJ1aWx0aW4vbHMtdHJlZS5jOjEzNworbXNnaWQgImxpc3Qgb25seSBmaWxlbmFtZXMiCittc2dzdHIgIuWPquWIl+WHuuaWh+S7tuWQjSIKKworIzogYnVpbHRpbi9scy10cmVlLmM6MTQwCittc2dpZCAidXNlIGZ1bGwgcGF0aCBuYW1lcyIKK21zZ3N0ciAi5L2/55So5paH5Lu255qE5YWo6Lev5b6EIgorCisjOiBidWlsdGluL2xzLXRyZWUuYzoxNDIKK21zZ2lkICJsaXN0IGVudGlyZSB0cmVlOyBub3QganVzdCBjdXJyZW50IGRpcmVjdG9yeSAoaW1wbGllcyAtLWZ1bGwtbmFtZSkiCittc2dzdHIgIuWIl+WHuuaVtOS4quagke+8m+S4jeS7heS7heW9k+WJjeebruW9le+8iOmakOWQqyAtLWZ1bGwtbmFtZe+8iSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjQzCittc2dpZCAiZ2l0IG1lcmdlIFtvcHRpb25zXSBbPGNvbW1pdD4uLi5dIgorbXNnc3RyICJnaXQgbWVyZ2UgW+mAiemhuV0gWzzmj5DkuqQ+Li4uXSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjQ0Cittc2dpZCAiZ2l0IG1lcmdlIFtvcHRpb25zXSA8bXNnPiBIRUFEIDxjb21taXQ+IgorbXNnc3RyICJnaXQgbWVyZ2UgW+mAiemhuV0gPOivtOaYjj4gSEVBRCA85o+Q5LqkPiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjQ1Cittc2dpZCAiZ2l0IG1lcmdlIC0tYWJvcnQiCittc2dzdHIgImdpdCBtZXJnZSAtLWFib3J0IgorCiAjOiBidWlsdGluL21lcmdlLmM6OTAKIG1zZ2lkICJzd2l0Y2ggYG0nIHJlcXVpcmVzIGEgdmFsdWUiCiBtc2dzdHIgIuW8gOWFsyBgbScg6ZyA6KaB5LiA5Liq5YC8IgpAQCAtMzM4OCwxNTEgKzYxNjYsMjA4IEBACiBtc2dpZCAiQXZhaWxhYmxlIGN1c3RvbSBzdHJhdGVnaWVzIGFyZToiCiBtc2dzdHIgIuWPr+eUqOeahOiHquWumuS5ieetlueVpeacie+8miIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI0MAorIzogYnVpbHRpbi9tZXJnZS5jOjE4MworbXNnaWQgImRvIG5vdCBzaG93IGEgZGlmZnN0YXQgYXQgdGhlIGVuZCBvZiB0aGUgbWVyZ2UiCittc2dzdHIgIuWcqOWQiOW5tueahOacgOWQjuS4jeaYvuekuuW3ruW8gue7n+iuoSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjE4NgorbXNnaWQgInNob3cgYSBkaWZmc3RhdCBhdCB0aGUgZW5kIG9mIHRoZSBtZXJnZSIKK21zZ3N0ciAi5Zyo5ZCI5bm255qE5pyA5ZCO5pi+56S65beu5byC57uf6K6hIgorCisjOiBidWlsdGluL21lcmdlLmM6MTg3Cittc2dpZCAiKHN5bm9ueW0gdG8gLS1zdGF0KSIKK21zZ3N0ciAi77yI5ZKMIC0tc3RhdCDlkIzkuYnvvIkiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxODkKK21zZ2lkICJhZGQgKGF0IG1vc3QgPG4+KSBlbnRyaWVzIGZyb20gc2hvcnRsb2cgdG8gbWVyZ2UgY29tbWl0IG1lc3NhZ2UiCittc2dzdHIgIuWcqOWQiOW5tuaPkOS6pOS/oeaBr+S4rea3u+WKoO+8iOacgOWkmiA8bj4g5p2h77yJ57K+566A5o+Q5Lqk6K6w5b2VIgorCisjOiBidWlsdGluL21lcmdlLmM6MTkyCittc2dpZCAiY3JlYXRlIGEgc2luZ2xlIGNvbW1pdCBpbnN0ZWFkIG9mIGRvaW5nIGEgbWVyZ2UiCittc2dzdHIgIuWIm+W7uuS4gOS4quWNleeLrOeahOaPkOS6pOiAjOS4jeaYr+WBmuS4gOasoeWQiOW5tiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjE5NAorbXNnaWQgInBlcmZvcm0gYSBjb21taXQgaWYgdGhlIG1lcmdlIHN1Y2NlZWRzIChkZWZhdWx0KSIKK21zZ3N0ciAi5aaC5p6c5ZCI5bm25oiQ5Yqf77yM5omn6KGM5LiA5qyh5o+Q5Lqk77yI6buY6K6k77yJIgorCisjOiBidWlsdGluL21lcmdlLmM6MTk2Cittc2dpZCAiZWRpdCBtZXNzYWdlIGJlZm9yZSBjb21taXR0aW5nIgorbXNnc3RyICLlnKjmj5DkuqTliY3nvJbovpHmj5DkuqTor7TmmI4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxOTgKK21zZ2lkICJhbGxvdyBmYXN0LWZvcndhcmQgKGRlZmF1bHQpIgorbXNnc3RyICLlhYHorrjlv6vov5vvvIjpu5jorqTvvIkiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDAKK21zZ2lkICJhYm9ydCBpZiBmYXN0LWZvcndhcmQgaXMgbm90IHBvc3NpYmxlIgorbXNnc3RyICLlpoLmnpzkuI3og73lv6vov5vlsLHmlL7lvIPlkIjlubYiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDMKK21zZ2lkICJWZXJpZnkgdGhhdCB0aGUgbmFtZWQgY29tbWl0IGhhcyBhIHZhbGlkIEdQRyBzaWduYXR1cmUiCittc2dzdHIgIumqjOivgeaMh+WumueahOaPkOS6pOaYr+WQpuWMheWQq+S4gOS4quacieaViOeahCBHUEcg562+5ZCNIgorCisjOiBidWlsdGluL21lcmdlLmM6MjA0IGJ1aWx0aW4vbm90ZXMuYzo4NjYgYnVpbHRpbi9yZXZlcnQuYzoxMTIKK21zZ2lkICJzdHJhdGVneSIKK21zZ3N0ciAi562W55WlIgorCisjOiBidWlsdGluL21lcmdlLmM6MjA1Cittc2dpZCAibWVyZ2Ugc3RyYXRlZ3kgdG8gdXNlIgorbXNnc3RyICLopoHkvb/nlKjnmoTlkIjlubbnrZbnlaUiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDYKK21zZ2lkICJvcHRpb249dmFsdWUiCittc2dzdHIgIm9wdGlvbj12YWx1ZSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjIwNworbXNnaWQgIm9wdGlvbiBmb3Igc2VsZWN0ZWQgbWVyZ2Ugc3RyYXRlZ3kiCittc2dzdHIgIuaJgOmAieeahOWQiOW5tuetlueVpeeahOmAiemhuSIKKworIzogYnVpbHRpbi9tZXJnZS5jOjIwOQorbXNnaWQgIm1lcmdlIGNvbW1pdCBtZXNzYWdlIChmb3IgYSBub24tZmFzdC1mb3J3YXJkIG1lcmdlKSIKK21zZ3N0ciAi5ZCI5bm255qE5o+Q5Lqk6K+05piO77yI6ZKI5a+56Z2e5b+r6L+b5byP5ZCI5bm277yJIgorCisjOiBidWlsdGluL21lcmdlLmM6MjEzCittc2dpZCAiYWJvcnQgdGhlIGN1cnJlbnQgaW4tcHJvZ3Jlc3MgbWVyZ2UiCittc2dzdHIgIuaUvuW8g+W9k+WJjeato+WcqOi/m+ihjOeahOWQiOW5tiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjI0MgogbXNnaWQgImNvdWxkIG5vdCBydW4gc3Rhc2guIgogbXNnc3RyICLkuI3og73ov5vooYzov5vluqbkv53lrZjjgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDcKIG1zZ2lkICJzdGFzaCBmYWlsZWQiCiBtc2dzdHIgIui/m+W6puS/neWtmOWksei0pSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI1MAorIzogYnVpbHRpbi9tZXJnZS5jOjI1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJub3QgYSB2YWxpZCBvYmplY3Q6ICVzIgogbXNnc3RyICLkuI3mmK/kuIDkuKrmnInmlYjlr7nosaHvvJolcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI2OSBidWlsdGluL21lcmdlLmM6Mjg2CisjOiBidWlsdGluL21lcmdlLmM6MjcxIGJ1aWx0aW4vbWVyZ2UuYzoyODgKIG1zZ2lkICJyZWFkLXRyZWUgZmFpbGVkIgogbXNnc3RyICLor7vlj5bmoJHlpLHotKUiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogYnVpbHRpbi9tZXJnZS5jOjMxNgorIzogYnVpbHRpbi9tZXJnZS5jOjMxOAogbXNnaWQgIiAobm90aGluZyB0byBzcXVhc2gpIgogbXNnc3RyICIg77yI5peg5Y+v5Y6L57yp77yJIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzI5CisjOiBidWlsdGluL21lcmdlLmM6MzMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlNxdWFzaCBjb21taXQgLS0gbm90IHVwZGF0aW5nIEhFQURcbiIKIG1zZ3N0ciAi5Y6L57yp5o+Q5LqkIC0tIOacquabtOaWsCBIRUFEXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozNjEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozNjMKIG1zZ2lkICJXcml0aW5nIFNRVUFTSF9NU0ciCiBtc2dzdHIgIuWGmeWFpSBTUVVBU0hfTVNHIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzYzCisjOiBidWlsdGluL21lcmdlLmM6MzY1CiBtc2dpZCAiRmluaXNoaW5nIFNRVUFTSF9NU0ciCiBtc2dzdHIgIuWujOaIkCBTUVVBU0hfTVNHIgogCi0jOiBidWlsdGluL21lcmdlLmM6Mzg2CisjOiBidWlsdGluL21lcmdlLmM6Mzg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIG1lcmdlIG1lc3NhZ2UgLS0gbm90IHVwZGF0aW5nIEhFQURcbiIKIG1zZ3N0ciAi5peg5ZCI5bm25L+h5oGvIC0tIOacquabtOaWsCBIRUFEXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo0MzcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo0MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBkb2VzIG5vdCBwb2ludCB0byBhIGNvbW1pdCIKIG1zZ3N0ciAiJyVzJyDmsqHmnInmjIflkJHkuIDkuKrmj5DkuqQiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo1MzYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo1NTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkIGJyYW5jaC4lcy5tZXJnZW9wdGlvbnMgc3RyaW5nOiAlcyIKIG1zZ3N0ciAi5Z2P55qEIGJyYW5jaC4lcy5tZXJnZW9wdGlvbnMg5a2X56ym5Liy77yaJXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo2MjkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo2NDMKIG1zZ2lkICJnaXQgd3JpdGUtdHJlZSBmYWlsZWQgdG8gd3JpdGUgYSB0cmVlIgogbXNnc3RyICJnaXQgd3JpdGUtdHJlZSDml6Dms5XlhpnlhaXkuIDmoJHlr7nosaEiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo2NzkKLW1zZ2lkICJmYWlsZWQgdG8gcmVhZCB0aGUgY2FjaGUiCi1tc2dzdHIgIuaXoOazleivu+WPlue8k+WtmCIKLQotIzogYnVpbHRpbi9tZXJnZS5jOjY5NwotbXNnaWQgIlVuYWJsZSB0byB3cml0ZSBpbmRleC4iCi1tc2dzdHIgIuS4jeiDveWGmee0ouW8leOAgiIKLQotIzogYnVpbHRpbi9tZXJnZS5jOjcxMAorIzogYnVpbHRpbi9tZXJnZS5jOjY3MQogbXNnaWQgIk5vdCBoYW5kbGluZyBhbnl0aGluZyBvdGhlciB0aGFuIHR3byBoZWFkcyBtZXJnZS4iCiBtc2dzdHIgIuS4jeiDveWkhOeQhuS4pOS4quWktOWQiOW5tuS5i+WklueahOS7u+S9leaTjeS9nOOAgiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjcyNAorIzogYnVpbHRpbi9tZXJnZS5jOjY4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIG9wdGlvbiBmb3IgbWVyZ2UtcmVjdXJzaXZlOiAtWCVzIgogbXNnc3RyICJtZXJnZS1yZWN1cnNpdmUg55qE5pyq55+l6YCJ6aG577yaLVglcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjczOAorIzogYnVpbHRpbi9tZXJnZS5jOjY5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgJXMiCiBtc2dzdHIgIuS4jeiDveWGmSAlcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjg3NworIzogYnVpbHRpbi9tZXJnZS5jOjc4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCBmcm9tICclcyciCiBtc2dzdHIgIuS4jeiDveS7jiAnJXMnIOivu+WPliIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjg4NgorIzogYnVpbHRpbi9tZXJnZS5jOjc5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgY29tbWl0dGluZyBtZXJnZTsgdXNlICdnaXQgY29tbWl0JyB0byBjb21wbGV0ZSB0aGUgbWVyZ2UuXG4iCiBtc2dzdHIgIuacquaPkOS6pOWQiOW5tu+8jOS9v+eUqCAnZ2l0IGNvbW1pdCcg5a6M5oiQ5q2k5qyh5ZCI5bm244CCXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4OTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MDMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBsZWFzZSBlbnRlciBhIGNvbW1pdCBtZXNzYWdlIHRvIGV4cGxhaW4gd2h5IHRoaXMgbWVyZ2UgaXMgbmVjZXNzYXJ5LFxuIgogImVzcGVjaWFsbHkgaWYgaXQgbWVyZ2VzIGFuIHVwZGF0ZWQgdXBzdHJlYW0gaW50byBhIHRvcGljIGJyYW5jaC5cbiIKICJcbiIKLSJMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0c1xuIgorIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0c1xuIgogInRoZSBjb21taXQuXG4iCiBtc2dzdHIgIiIKICLor7fovpPlhaXkuIDkuKrmj5DkuqTkv6Hmga/ku6Xop6Pph4rmraTlkIjlubbnmoTlv4XopoHmgKfvvIzlsKTlhbbmmK/lsIbkuIDkuKrmm7TmlrDlkI7nmoTkuIrmuLjliIbmlK9cbiIKICLlkIjlubbliLDkuLvpopjliIbmlK/jgIJcbiIKICJcbiIKLSLku6UgJyMnIOW8gOWktOeahOihjOWwhuiiq+W/veeVpe+8jOiAjOS4lOepuuaPkOS6pOivtOaYjuWwhuS8mue7iOatouaPkOS6pOOAglxuIgorIuS7pSAnJWMnIOW8gOWktOeahOihjOWwhuiiq+W/veeVpe+8jOiAjOS4lOepuuaPkOS6pOivtOaYjuWwhuS8mue7iOatouaPkOS6pOOAglxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTE2CisjOiBidWlsdGluL21lcmdlLmM6ODI3CiBtc2dpZCAiRW1wdHkgY29tbWl0IG1lc3NhZ2UuIgogbXNnc3RyICLnqbrmj5DkuqTkv6Hmga/jgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5MjgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiV29uZGVyZnVsLlxuIgogbXNnc3RyICLlpKrmo5LkuobjgIJcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjk5MworIzogYnVpbHRpbi9tZXJnZS5jOjkwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJBdXRvbWF0aWMgbWVyZ2UgZmFpbGVkOyBmaXggY29uZmxpY3RzIGFuZCB0aGVuIGNvbW1pdCB0aGUgcmVzdWx0LlxuIgogbXNnc3RyICLoh6rliqjlkIjlubblpLHotKXvvIzkv67mraPlhrLnqoHnhLblkI7mj5DkuqTkv67mraPnmoTnu5PmnpzjgIJcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEwMDkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBpcyBub3QgYSBjb21taXQiCiBtc2dzdHIgIiclcycg5LiN5piv5LiA5Liq5o+Q5LqkIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTA1MAorIzogYnVpbHRpbi9tZXJnZS5jOjk2MQogbXNnaWQgIk5vIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAi5rKh5pyJ5b2T5YmN5YiG5pSv44CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTA1MgorIzogYnVpbHRpbi9tZXJnZS5jOjk2MwogbXNnaWQgIk5vIHJlbW90ZSBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAi5b2T5YmN5YiG5pSv5rKh5pyJ5a+55bqU55qE6L+c56iL54mI5pys5bqT44CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTA1NAorIzogYnVpbHRpbi9tZXJnZS5jOjk2NQogbXNnaWQgIk5vIGRlZmF1bHQgdXBzdHJlYW0gZGVmaW5lZCBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAi5b2T5YmN5YiG5pSv5rKh5pyJ5a6a5LmJ6buY6K6k55qE5LiK5ri45YiG5pSv44CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTA1OQorIzogYnVpbHRpbi9tZXJnZS5jOjk3MAogIywgYy1mb3JtYXQKIG1zZ2lkICJObyByZW1vdGUgdHJhY2tpbmcgYnJhbmNoIGZvciAlcyBmcm9tICVzIgogbXNnc3RyICIlcyDmsqHmnInmnaXoh6ogJXMg55qE6L+c56iL6Lef6Liq5YiG5pSvIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE0NiBidWlsdGluL21lcmdlLmM6MTMwMworIzogYnVpbHRpbi9tZXJnZS5jOjEwNTcgYnVpbHRpbi9tZXJnZS5jOjEyMTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgLSBub3Qgc29tZXRoaW5nIHdlIGNhbiBtZXJnZSIKIG1zZ3N0ciAiJXMgLSDkuI3og73ooqvlkIjlubYiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjE0CisjOiBidWlsdGluL21lcmdlLmM6MTEyNQogbXNnaWQgIlRoZXJlIGlzIG5vIG1lcmdlIHRvIGFib3J0IChNRVJHRV9IRUFEIG1pc3NpbmcpLiIKIG1zZ3N0ciAi5rKh5pyJ6KaB57uI5q2i55qE5ZCI5bm277yITUVSR0VfSEVBRCDkuKLlpLHvvInjgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjMwIGdpdC1wdWxsLnNoOjMxCisjOiBidWlsdGluL21lcmdlLmM6MTE0MSBnaXQtcHVsbC5zaDozMQogbXNnaWQgIiIKICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgbWVyZ2UgKE1FUkdFX0hFQUQgZXhpc3RzKS5cbiIKICJQbGVhc2UsIGNvbW1pdCB5b3VyIGNoYW5nZXMgYmVmb3JlIHlvdSBjYW4gbWVyZ2UuIgpAQCAtMzU0MCwxMSArNjM3NSwxMSBAQAogIuaCqOWwmuacque7k+adn+aCqOeahOWQiOW5tu+8iOWtmOWcqCBNRVJHRV9IRUFE77yJ44CCXG4iCiAi6K+35Zyo5ZCI5bm25YmN5YWI5o+Q5Lqk5oKo55qE5L+u5pS544CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIzMyBnaXQtcHVsbC5zaDozNAorIzogYnVpbHRpbi9tZXJnZS5jOjExNDQgZ2l0LXB1bGwuc2g6MzQKIG1zZ2lkICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgbWVyZ2UgKE1FUkdFX0hFQUQgZXhpc3RzKS4iCiBtc2dzdHIgIuaCqOWwmuacque7k+adn+aCqOeahOWQiOW5tu+8iOWtmOWcqCBNRVJHRV9IRUFE77yJ44CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIzNworIzogYnVpbHRpbi9tZXJnZS5jOjExNDgKIG1zZ2lkICIiCiAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIGNoZXJyeS1waWNrIChDSEVSUllfUElDS19IRUFEIGV4aXN0cykuXG4iCiAiUGxlYXNlLCBjb21taXQgeW91ciBjaGFuZ2VzIGJlZm9yZSB5b3UgY2FuIG1lcmdlLiIKQEAgLTM1NTIsODMgKzYzODcsMjAzIEBACiAi5oKo5bCa5pyq57uT5p2f5oKo55qE5ouj6YCJ77yI5a2Y5ZyoIENIRVJSWV9QSUNLX0hFQUTvvInjgIJcbiIKICLor7flnKjlkIjlubbliY3lhYjmj5DkuqTmgqjnmoTkv67mlLnjgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjQwCisjOiBidWlsdGluL21lcmdlLmM6MTE1MQogbXNnaWQgIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBjaGVycnktcGljayAoQ0hFUlJZX1BJQ0tfSEVBRCBleGlzdHMpLiIKIG1zZ3N0ciAi5oKo5bCa5pyq57uT5p2f5oKo55qE5ouj6YCJ77yI5a2Y5ZyoIENIRVJSWV9QSUNLX0hFQUTvvInjgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjQ5CisjOiBidWlsdGluL21lcmdlLmM6MTE2MAogbXNnaWQgIllvdSBjYW5ub3QgY29tYmluZSAtLXNxdWFzaCB3aXRoIC0tbm8tZmYuIgotbXNnc3RyICLmgqjkuI3og73lsIYgLS1zcXVhc2gg5LiOIC0tbm8tZmYg5YWx55So44CCIgorbXNnc3RyICLmgqjkuI3og73lsIYgLS1zcXVhc2gg5LiOIC0tbm8tZmYg5ZCM5pe25L2/55So44CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI1NAorIzogYnVpbHRpbi9tZXJnZS5jOjExNjUKIG1zZ2lkICJZb3UgY2Fubm90IGNvbWJpbmUgLS1uby1mZiB3aXRoIC0tZmYtb25seS4iCi1tc2dzdHIgIuaCqOS4jeiDveWwhiAtLW5vLWZmIOS4jiAtLWZmLW9ubHkg5YWx55So44CCIgorbXNnc3RyICLmgqjkuI3og73lsIYgLS1uby1mZiDkuI4gLS1mZi1vbmx5IOWQjOaXtuS9v+eUqOOAgiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyNjEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTcyCiBtc2dpZCAiTm8gY29tbWl0IHNwZWNpZmllZCBhbmQgbWVyZ2UuZGVmYXVsdFRvVXBzdHJlYW0gbm90IHNldC4iCiBtc2dzdHIgIuacquaMh+WumuaPkOS6pOW5tuS4lCBtZXJnZS5kZWZhdWx0VG9VcHN0cmVhbSDmnKrorr7nva7jgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjkzCisjOiBidWlsdGluL21lcmdlLmM6MTIwNAogbXNnaWQgIkNhbiBtZXJnZSBvbmx5IGV4YWN0bHkgb25lIGNvbW1pdCBpbnRvIGVtcHR5IGhlYWQiCiBtc2dzdHIgIuWPquiDveWwhuS4gOS4quaPkOS6pOWQiOW5tuWIsOepuuWIhuaUr+S4iiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyOTYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA3CiBtc2dpZCAiU3F1YXNoIGNvbW1pdCBpbnRvIGVtcHR5IGhlYWQgbm90IHN1cHBvcnRlZCB5ZXQiCiBtc2dzdHIgIuWwmuS4jeaUr+aMgeWIsOepuuWIhuaUr+eahOWOi+e8qeaPkOS6pCIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyOTgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA5CiBtc2dpZCAiTm9uLWZhc3QtZm9yd2FyZCBjb21taXQgZG9lcyBub3QgbWFrZSBzZW5zZSBpbnRvIGFuIGVtcHR5IGhlYWQiCiBtc2dzdHIgIuWIsOepuuWIhuaUr+eahOmdnuW/q+i/m+W8j+aPkOS6pOayoeacieaEj+S5iSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0MTMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBoYXMgYW4gdW50cnVzdGVkIEdQRyBzaWduYXR1cmUsIGFsbGVnZWRseSBieSAlcy4iCittc2dzdHIgIuaPkOS6pCAlcyDmnInkuIDkuKrpnZ7lj6/kv6HnmoTlo7Dnp7DmnaXoh6ogJXMg55qEIEdQRyDnrb7lkI3jgIIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjY4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBoYXMgYSBiYWQgR1BHIHNpZ25hdHVyZSBhbGxlZ2VkbHkgYnkgJXMuIgorbXNnc3RyICLmj5DkuqQgJXMg5pyJ5LiA5Liq6ZSZ6K+v55qE5aOw56ew5p2l6IeqICVzIOeahCBHUEcg562+5ZCN44CCIgorCisjLiAnTicKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBkb2VzIG5vdCBoYXZlIGEgR1BHIHNpZ25hdHVyZS4iCittc2dzdHIgIuaPkOS6pCAlcyDmsqHmnInkuIDkuKogR1BHIOetvuWQjeOAgiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjEyNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29tbWl0ICVzIGhhcyBhIGdvb2QgR1BHIHNpZ25hdHVyZSBieSAlc1xuIgorbXNnc3RyICLmj5DkuqQgJXMg5pyJ5LiA5Liq5p2l6IeqICVzIOeahOWlveeahCBHUEcg562+5ZCN44CCXG4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzU4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVwZGF0aW5nICVzLi4lc1xuIgogbXNnc3RyICLmm7TmlrAgJXMuLiVzXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDUxCisjOiBidWlsdGluL21lcmdlLmM6MTM5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJUcnlpbmcgcmVhbGx5IHRyaXZpYWwgaW4taW5kZXggbWVyZ2UuLi5cbiIKIG1zZ3N0ciAi5bCd6K+V6Z2e5bi45bCP55qE57Si5byV5YaF5ZCI5bm2Li4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDU4CisjOiBidWlsdGluL21lcmdlLmM6MTQwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3BlLlxuIgogbXNnc3RyICLml6DjgIJcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0OTAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDM2CiBtc2dpZCAiTm90IHBvc3NpYmxlIHRvIGZhc3QtZm9yd2FyZCwgYWJvcnRpbmcuIgogbXNnc3RyICLml6Dms5Xlv6vov5vvvIznu4jmraLjgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTEzIGJ1aWx0aW4vbWVyZ2UuYzoxNTkyCisjOiBidWlsdGluL21lcmdlLmM6MTQ1OSBidWlsdGluL21lcmdlLmM6MTUzOAogIywgYy1mb3JtYXQKIG1zZ2lkICJSZXdpbmRpbmcgdGhlIHRyZWUgdG8gcHJpc3RpbmUuLi5cbiIKIG1zZ3N0ciAi5bCG5qCR5Zue5rua6Iez5Y6f5aeL54q25oCBLi4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTE3CisjOiBidWlsdGluL21lcmdlLmM6MTQ2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJUcnlpbmcgbWVyZ2Ugc3RyYXRlZ3kgJXMuLi5cbiIKIG1zZ3N0ciAi5bCd6K+V5ZCI5bm2562W55WlICVzLi4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTgzCisjOiBidWlsdGluL21lcmdlLmM6MTUyOQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBtZXJnZSBzdHJhdGVneSBoYW5kbGVkIHRoZSBtZXJnZS5cbiIKIG1zZ3N0ciAi5rKh5pyJ5ZCI5bm2562W55Wl5aSE55CG5q2k5ZCI5bm244CCXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTg1CisjOiBidWlsdGluL21lcmdlLmM6MTUzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJNZXJnZSB3aXRoIHN0cmF0ZWd5ICVzIGZhaWxlZC5cbiIKIG1zZ3N0ciAi5L2/55So562W55WlICVzIOWQiOW5tuWksei0peOAglxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTU5NAorIzogYnVpbHRpbi9tZXJnZS5jOjE1NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNpbmcgdGhlICVzIHRvIHByZXBhcmUgcmVzb2x2aW5nIGJ5IGhhbmQuXG4iCiBtc2dzdHIgIuS9v+eUqCAlcyDku6Xlh4blpIfmiYvlt6Xop6PlhrPjgIJcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE2MDYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkF1dG9tYXRpYyBtZXJnZSB3ZW50IHdlbGw7IHN0b3BwZWQgYmVmb3JlIGNvbW1pdHRpbmcgYXMgcmVxdWVzdGVkXG4iCiBtc2dzdHIgIuiHquWKqOWQiOW5tui/m+WxlemhuuWIqe+8jOaMieimgeaxguWcqOaPkOS6pOWJjeWBnOatolxuIgogCisjOiBidWlsdGluL21lcmdlLWJhc2UuYzoyNgorbXNnaWQgImdpdCBtZXJnZS1iYXNlIFstYXwtLWFsbF0gPGNvbW1pdD4gPGNvbW1pdD4uLi4iCittc2dzdHIgImdpdCBtZXJnZS1iYXNlIFstYXwtLWFsbF0gPOaPkOS6pD4gPOaPkOS6pD4uLi4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjI3Cittc2dpZCAiZ2l0IG1lcmdlLWJhc2UgWy1hfC0tYWxsXSAtLW9jdG9wdXMgPGNvbW1pdD4uLi4iCittc2dzdHIgImdpdCBtZXJnZS1iYXNlIFstYXwtLWFsbF0gLS1vY3RvcHVzIDzmj5DkuqQ+Li4uIgorCisjOiBidWlsdGluL21lcmdlLWJhc2UuYzoyOAorbXNnaWQgImdpdCBtZXJnZS1iYXNlIC0taW5kZXBlbmRlbnQgPGNvbW1pdD4uLi4iCittc2dzdHIgImdpdCBtZXJnZS1iYXNlIC0taW5kZXBlbmRlbnQgPOaPkOS6pD4uLi4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjI5Cittc2dpZCAiZ2l0IG1lcmdlLWJhc2UgLS1pcy1hbmNlc3RvciA8Y29tbWl0PiA8Y29tbWl0PiIKK21zZ3N0ciAiZ2l0IG1lcmdlLWJhc2UgLS1pcy1hbmNlc3RvciA85o+Q5LqkPiA85o+Q5LqkPiIKKworIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6OTgKK21zZ2lkICJvdXRwdXQgYWxsIGNvbW1vbiBhbmNlc3RvcnMiCittc2dzdHIgIui+k+WHuuaJgOacieWFseWQjOeahOelluWFiCIKKworIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6OTkKK21zZ2lkICJmaW5kIGFuY2VzdG9ycyBmb3IgYSBzaW5nbGUgbi13YXkgbWVyZ2UiCittc2dzdHIgIuafpeaJvuS4gOS4quWkmui3r+WQiOW5tueahOelluWFiOaPkOS6pCIKKworIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6MTAwCittc2dpZCAibGlzdCByZXZzIG5vdCByZWFjaGFibGUgZnJvbSBvdGhlcnMiCittc2dzdHIgIuaYvuekuuS4jeiDveiiq+WFtuS7luiuv+mXruWIsOeahOeJiOacrCIKKworIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6MTAyCittc2dpZCAiaXMgdGhlIGZpcnN0IG9uZSBhbmNlc3RvciBvZiB0aGUgb3RoZXI/IgorbXNnc3RyICLnrKzkuIDkuKrmmK/lhbbku5bnmoTnpZblhYjmj5DkuqTkuYjvvJ8iCisKKyM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjgKK21zZ2lkICIiCisiZ2l0IG1lcmdlLWZpbGUgW29wdGlvbnNdIFstTCBuYW1lMSBbLUwgb3JpZyBbLUwgbmFtZTJdXV0gZmlsZTEgb3JpZ19maWxlICIKKyJmaWxlMiIKK21zZ3N0ciAiIgorImdpdCBtZXJnZS1maWxlIFvpgInpobldIFstTCBuYW1lMSBbLUwgb3JpZyBbLUwgbmFtZTJdXV0gZmlsZTEgb3JpZ19maWxlIGZpbGUyIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzozMworbXNnaWQgInNlbmQgcmVzdWx0cyB0byBzdGFuZGFyZCBvdXRwdXQiCittc2dzdHIgIuWwhue7k+aenOWPkemAgeWIsOagh+WHhui+k+WHuiIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6MzQKK21zZ2lkICJ1c2UgYSBkaWZmMyBiYXNlZCBtZXJnZSIKK21zZ3N0ciAi5L2/55So5Z+65LqOIGRpZmYzIOeahOWQiOW5tiIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6MzUKK21zZ2lkICJmb3IgY29uZmxpY3RzLCB1c2Ugb3VyIHZlcnNpb24iCittc2dzdHIgIuWmguaenOWGsueqge+8jOS9v+eUqOaIkeS7rOeahOeJiOacrCIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6MzcKK21zZ2lkICJmb3IgY29uZmxpY3RzLCB1c2UgdGhlaXIgdmVyc2lvbiIKK21zZ3N0ciAi5aaC5p6c5Yay56qB77yM5L2/55So5LuW5Lus55qE54mI5pysIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzozOQorbXNnaWQgImZvciBjb25mbGljdHMsIHVzZSBhIHVuaW9uIHZlcnNpb24iCittc2dzdHIgIuWmguaenOWGsueqge+8jOS9v+eUqOiBlOWQiOeJiOacrCIKKworIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6NDIKK21zZ2lkICJmb3IgY29uZmxpY3RzLCB1c2UgdGhpcyBtYXJrZXIgc2l6ZSIKK21zZ3N0ciAi5aaC5p6c5Yay56qB77yM5L2/55So5oyH5a6a6ZW/5bqm55qE5qCH6K6wIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzo0MworbXNnaWQgImRvIG5vdCB3YXJuIGFib3V0IGNvbmZsaWN0cyIKK21zZ3N0ciAi5LiN6KaB6K2m5ZGK5Yay56qBIgorCisjOiBidWlsdGluL21lcmdlLWZpbGUuYzo0NQorbXNnaWQgInNldCBsYWJlbHMgZm9yIGZpbGUxL29yaWdfZmlsZS9maWxlMiIKK21zZ3N0ciAi5Li6IGZpbGUxL29yaWdfZmlsZS9maWxlMiDorr7nva7moIfnrb4iCisKKyM6IGJ1aWx0aW4vbWt0cmVlLmM6NjcKK21zZ2lkICJnaXQgbWt0cmVlIFstel0gWy0tbWlzc2luZ10gWy0tYmF0Y2hdIgorbXNnc3RyICJnaXQgbWt0cmVlIFstel0gWy0tbWlzc2luZ10gWy0tYmF0Y2hdIgorCisjOiBidWlsdGluL21rdHJlZS5jOjE1MworbXNnaWQgImlucHV0IGlzIE5VTCB0ZXJtaW5hdGVkIgorbXNnc3RyICLovpPlhaXku6UgTlVMIOWtl+espue7iOatoiIKKworIzogYnVpbHRpbi9ta3RyZWUuYzoxNTQgYnVpbHRpbi93cml0ZS10cmVlLmM6MjQKK21zZ2lkICJhbGxvdyBtaXNzaW5nIG9iamVjdHMiCittc2dzdHIgIuWFgeiuuOS4ouWkseeahOWvueixoSIKKworIzogYnVpbHRpbi9ta3RyZWUuYzoxNTUKK21zZ2lkICJhbGxvdyBjcmVhdGlvbiBvZiBtb3JlIHRoYW4gb25lIHRyZWUiCittc2dzdHIgIuWFgeiuuOWIm+W7uuS4gOS4quS7peS4iueahOagkSIKKworIzogYnVpbHRpbi9tdi5jOjE0Cittc2dpZCAiZ2l0IG12IFtvcHRpb25zXSA8c291cmNlPi4uLiA8ZGVzdGluYXRpb24+IgorbXNnc3RyICJnaXQgbXYgW+mAiemhuV0gPOa6kD4uLi4gPOebruaghz4iCisKKyM6IGJ1aWx0aW4vbXYuYzo2NAorbXNnaWQgImZvcmNlIG1vdmUvcmVuYW1lIGV2ZW4gaWYgdGFyZ2V0IGV4aXN0cyIKK21zZ3N0ciAi5by65Yi256e75YqoL+mHjeWRveS7pO+8jOWNs+S9v+ebruagh+WtmOWcqCIKKworIzogYnVpbHRpbi9tdi5jOjY1Cittc2dpZCAic2tpcCBtb3ZlL3JlbmFtZSBlcnJvcnMiCittc2dzdHIgIui3s+i/h+enu+WKqC/ph43lkb3lkI3plJnor68iCisKICM6IGJ1aWx0aW4vbXYuYzoxMDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2hlY2tpbmcgcmVuYW1lIG9mICclcycgdG8gJyVzJ1xuIgpAQCAtMzY5MSwxNDIgKzY2NDYsMzE1IEBACiBtc2dpZCAicmVuYW1pbmcgJyVzJyBmYWlsZWQiCiBtc2dzdHIgIumHjeWRveWQjSAnJXMnIOWksei0pSIKIAorIzogYnVpbHRpbi9uYW1lLXJldi5jOjE3NQorbXNnaWQgImdpdCBuYW1lLXJldiBbb3B0aW9uc10gPGNvbW1pdD4uLi4iCittc2dzdHIgImdpdCBuYW1lLXJldiBb6YCJ6aG5XSA85o+Q5LqkPi4uLiIKKworIzogYnVpbHRpbi9uYW1lLXJldi5jOjE3NgorbXNnaWQgImdpdCBuYW1lLXJldiBbb3B0aW9uc10gLS1hbGwiCittc2dzdHIgImdpdCBuYW1lLXJldiBb6YCJ6aG5XSAtLWFsbCIKKworIzogYnVpbHRpbi9uYW1lLXJldi5jOjE3NworbXNnaWQgImdpdCBuYW1lLXJldiBbb3B0aW9uc10gLS1zdGRpbiIKK21zZ3N0ciAiZ2l0IG5hbWUtcmV2IFvpgInpobldIC0tc3RkaW4iCisKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMjkKK21zZ2lkICJwcmludCBvbmx5IG5hbWVzIChubyBTSEEtMSkiCittc2dzdHIgIuWPquaJk+WNsOWQjeensO+8iOaXoCBTSEEtMe+8iSIKKworIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzMAorbXNnaWQgIm9ubHkgdXNlIHRhZ3MgdG8gbmFtZSB0aGUgY29tbWl0cyIKK21zZ3N0ciAi5Y+q5L2/55SoIHRhZ3Mg5p2l5ZG95ZCN5o+Q5LqkIgorCisjOiBidWlsdGluL25hbWUtcmV2LmM6MjMyCittc2dpZCAib25seSB1c2UgcmVmcyBtYXRjaGluZyA8cGF0dGVybj4iCittc2dzdHIgIuWPquS9v+eUqOWSjCA85qih5byPPiDnm7jljLnphY3nmoTlvJXnlKgiCisKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzQKK21zZ2lkICJsaXN0IGFsbCBjb21taXRzIHJlYWNoYWJsZSBmcm9tIGFsbCByZWZzIgorbXNnc3RyICLliJflh7rlj6/ku6Xku47miYDmnInlvJXnlKjorr/pl67nmoTmj5DkuqQiCisKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzUKK21zZ2lkICJyZWFkIGZyb20gc3RkaW4iCittc2dzdHIgIuS7juagh+WHhui+k+WFpeivu+WPliIKKworIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzNgorbXNnaWQgImFsbG93IHRvIHByaW50IGB1bmRlZmluZWRgIG5hbWVzIgorbXNnc3RyICLlhYHorrjmiZPljbAgYOacquWumuS5iWAg55qE5ZCN56ewIgorCisjOiBidWlsdGluL25vdGVzLmM6MjYKK21zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBbbGlzdCBbPG9iamVjdD5dXSIKK21zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA85rOo6Kej5byV55SoPl0gW2xpc3QgWzzlr7nosaE+XV0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNworbXNnaWQgIiIKKyJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBhZGQgWy1mXSBbLW0gPG1zZz4gfCAtRiA8ZmlsZT4gfCAoLWMgfCAtQykgIgorIjxvYmplY3Q+XSBbPG9iamVjdD5dIgorbXNnc3RyICIiCisiZ2l0IG5vdGVzIFstLXJlZiA85rOo6Kej5byV55SoPl0gYWRkIFstZl0gWy1tIDzor7TmmI4+IHwgLUYgPOaWh+S7tj4gfCAoLWMgfCAtQykgPOWvuSIKKyLosaE+XSBbPOWvueixoT5dIgorCisjOiBidWlsdGluL25vdGVzLmM6MjgKK21zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBjb3B5IFstZl0gPGZyb20tb2JqZWN0PiA8dG8tb2JqZWN0PiIKK21zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA85rOo6Kej5byV55SoPl0gY29weSBbLWZdIDzmupDlr7nosaE+IDznm67moIflr7nosaE+IgorCisjOiBidWlsdGluL25vdGVzLmM6MjkKK21zZ2lkICIiCisiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gYXBwZW5kIFstbSA8bXNnPiB8IC1GIDxmaWxlPiB8ICgtYyB8IC1DKSAiCisiPG9iamVjdD5dIFs8b2JqZWN0Pl0iCittc2dzdHIgIiIKKyJnaXQgbm90ZXMgWy0tcmVmIDzms6jop6PlvJXnlKg+XSBhcHBlbmQgWy1tIDzor7TmmI4+IHwgLUYgPOaWh+S7tj4gfCAoLWMgfCAtQykgPOWvueixoSIKKyI+XSBbPOWvueixoT5dIgorCisjOiBidWlsdGluL25vdGVzLmM6MzAKK21zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBlZGl0IFs8b2JqZWN0Pl0iCittc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPOazqOino+W8leeUqD5dIGVkaXQgWzzlr7nosaE+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjMxCittc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gc2hvdyBbPG9iamVjdD5dIgorbXNnc3RyICJnaXQgbm90ZXMgWy0tcmVmIDzms6jop6PlvJXnlKg+XSBzaG93IFs85a+56LGhPl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMgorbXNnaWQgIiIKKyJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBtZXJnZSBbLXYgfCAtcV0gWy1zIDxzdHJhdGVneT4gXSA8bm90ZXNfcmVmPiIKK21zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA85rOo6Kej5byV55SoPl0gbWVyZ2UgWy12IHwgLXFdIFstcyA8562W55WlPiBdIDzms6jop6PlvJXnlKg+IgorCisjOiBidWlsdGluL25vdGVzLmM6MzMKK21zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgLS1jb21taXQgWy12IHwgLXFdIgorbXNnc3RyICJnaXQgbm90ZXMgbWVyZ2UgLS1jb21taXQgWy12IHwgLXFdIgorCisjOiBidWlsdGluL25vdGVzLmM6MzQKK21zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgLS1hYm9ydCBbLXYgfCAtcV0iCittc2dzdHIgImdpdCBub3RlcyBtZXJnZSAtLWFib3J0IFstdiB8IC1xXSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjM1Cittc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gcmVtb3ZlIFs8b2JqZWN0Pi4uLl0iCittc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPOazqOino+W8leeUqD5dIHJlbW92ZSBbPOWvueixoT4uLi5dIgorCisjOiBidWlsdGluL25vdGVzLmM6MzYKK21zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBwcnVuZSBbLW4gfCAtdl0iCittc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPOazqOino+W8leeUqD5dIHBydW5lIFstbiB8IC12XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjM3Cittc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gZ2V0LXJlZiIKK21zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA85rOo6Kej5byV55SoPl0gZ2V0LXJlZiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjQyCittc2dpZCAiZ2l0IG5vdGVzIFtsaXN0IFs8b2JqZWN0Pl1dIgorbXNnc3RyICJnaXQgbm90ZXMgW2xpc3QgWzzlr7nosaE+XV0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0NworbXNnaWQgImdpdCBub3RlcyBhZGQgWzxvcHRpb25zPl0gWzxvYmplY3Q+XSIKK21zZ3N0ciAiZ2l0IG5vdGVzIGFkZCBbPOmAiemhuT5dIFs85a+56LGhPl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MgorbXNnaWQgImdpdCBub3RlcyBjb3B5IFs8b3B0aW9ucz5dIDxmcm9tLW9iamVjdD4gPHRvLW9iamVjdD4iCittc2dzdHIgImdpdCBub3RlcyBjb3B5IFs86YCJ6aG5Pl0gPOa6kOWvueixoT4gPOebruagh+WvueixoT4iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MworbXNnaWQgImdpdCBub3RlcyBjb3B5IC0tc3RkaW4gWzxmcm9tLW9iamVjdD4gPHRvLW9iamVjdD5dLi4uIgorbXNnc3RyICJnaXQgbm90ZXMgY29weSAtLXN0ZGluIFs85rqQ5a+56LGhPiA855uu5qCH5a+56LGhPl0uLi4iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1OAorbXNnaWQgImdpdCBub3RlcyBhcHBlbmQgWzxvcHRpb25zPl0gWzxvYmplY3Q+XSIKK21zZ3N0ciAiZ2l0IG5vdGVzIGFwcGVuZCBbPOmAiemhuT5dIFs85a+56LGhPl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MworbXNnaWQgImdpdCBub3RlcyBlZGl0IFs8b2JqZWN0Pl0iCittc2dzdHIgImdpdCBub3RlcyBlZGl0IFs85a+56LGhPl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2OAorbXNnaWQgImdpdCBub3RlcyBzaG93IFs8b2JqZWN0Pl0iCittc2dzdHIgImdpdCBub3RlcyBzaG93IFs85a+56LGhPl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MworbXNnaWQgImdpdCBub3RlcyBtZXJnZSBbPG9wdGlvbnM+XSA8bm90ZXNfcmVmPiIKK21zZ3N0ciAiZ2l0IG5vdGVzIG1lcmdlIFs86YCJ6aG5Pl0gPOazqOino+W8leeUqD4iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3NAorbXNnaWQgImdpdCBub3RlcyBtZXJnZSAtLWNvbW1pdCBbPG9wdGlvbnM+XSIKK21zZ3N0ciAiZ2l0IG5vdGVzIG1lcmdlIC0tY29tbWl0IFs86YCJ6aG5Pl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3NQorbXNnaWQgImdpdCBub3RlcyBtZXJnZSAtLWFib3J0IFs8b3B0aW9ucz5dIgorbXNnc3RyICJnaXQgbm90ZXMgbWVyZ2UgLS1hYm9ydCBbPOmAiemhuT5dIgorCisjOiBidWlsdGluL25vdGVzLmM6ODAKK21zZ2lkICJnaXQgbm90ZXMgcmVtb3ZlIFs8b2JqZWN0Pl0iCittc2dzdHIgImdpdCBub3RlcyByZW1vdmUgWzzlr7nosaE+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjg1Cittc2dpZCAiZ2l0IG5vdGVzIHBydW5lIFs8b3B0aW9ucz5dIgorbXNnc3RyICJnaXQgbm90ZXMgcHJ1bmUgWzzpgInpobk+XSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjkwCittc2dpZCAiZ2l0IG5vdGVzIGdldC1yZWYiCittc2dzdHIgImdpdCBub3RlcyBnZXQtcmVmIgorCiAjOiBidWlsdGluL25vdGVzLmM6MTM5CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBzdGFydCAnc2hvdycgZm9yIG9iamVjdCAnJXMnIgogbXNnc3RyICLkuI3og73kuLrlr7nosaEgJyVzJyDlvIDlp4sgJ3Nob3cnIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTQ1Ci1tc2dpZCAiY2FuJ3QgZmRvcGVuICdzaG93JyBvdXRwdXQgZmQiCi1tc2dzdHIgIuS4jeiDveaJk+W8gCAnc2hvdycg6L6T5Ye65paH5Lu25Y+l5p+EIgorIzogYnVpbHRpbi9ub3Rlcy5jOjE0MworbXNnaWQgImNvdWxkIG5vdCByZWFkICdzaG93JyBvdXRwdXQiCittc2dzdHIgIuS4jeiDveivu+WPliAnc2hvdycg55qE6L6T5Ye6IgogCi0jOiBidWlsdGluL25vdGVzLmM6MTU1Ci0jLCBjLWZvcm1hdAotbXNnaWQgImZhaWxlZCB0byBjbG9zZSBwaXBlIHRvICdzaG93JyBmb3Igb2JqZWN0ICclcyciCi1tc2dzdHIgIuaXoOazleS4uuWvueixoSAnJXMnIOeahCAnc2hvdycg5YWz6Zet566h6YGTIgotCi0jOiBidWlsdGluL25vdGVzLmM6MTU4CisjOiBidWlsdGluL25vdGVzLmM6MTUxCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBmaW5pc2ggJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKIG1zZ3N0ciAi5peg5rOV5Li65a+56LGhICclcycg5a6M5oiQICdzaG93JyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjE3NSBidWlsdGluL3RhZy5jOjM0NworIzogYnVpbHRpbi9ub3Rlcy5jOjE2OSBidWlsdGluL3RhZy5jOjM0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIGZpbGUgJyVzJyIKIG1zZ3N0ciAi5LiN6IO95Yib5bu65paH5Lu2ICclcyciCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxODkKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxODgKIG1zZ2lkICJQbGVhc2Ugc3VwcGx5IHRoZSBub3RlIGNvbnRlbnRzIHVzaW5nIGVpdGhlciAtbSBvciAtRiBvcHRpb24iCiBtc2dzdHIgIuivt+mAmui/hyAtbSDmiJYgLUYg6YCJ6aG55Li65rOo6Kej5o+Q5L6b5YaF5a65IgogCi0jOiBidWlsdGluL25vdGVzLmM6MjEwIGJ1aWx0aW4vbm90ZXMuYzo5NzMKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyMDkgYnVpbHRpbi9ub3Rlcy5jOjk3MgogIywgYy1mb3JtYXQKIG1zZ2lkICJSZW1vdmluZyBub3RlIGZvciBvYmplY3QgJXNcbiIKIG1zZ3N0ciAi5Yig6Zmk5a+56LGhICVzIOeahOazqOino1xuIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjE1CisjOiBidWlsdGluL25vdGVzLmM6MjE0CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIG5vdGUgb2JqZWN0IgogbXNnc3RyICLkuI3og73lhpnms6jop6Plr7nosaEiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyMTcKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyMTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVGhlIG5vdGUgY29udGVudHMgaGFzIGJlZW4gbGVmdCBpbiAlcyIKIG1zZ3N0ciAi5rOo6Kej5YaF5a656KKr55WZ5Zyo5paH5Lu2ICVzIOS4rSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI1MSBidWlsdGluL3RhZy5jOjU0MgorIzogYnVpbHRpbi9ub3Rlcy5jOjI1MCBidWlsdGluL3RhZy5jOjU0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCAnJXMnIgogbXNnc3RyICLkuI3og73or7vlj5YgJyVzJyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI1MyBidWlsdGluL3RhZy5jOjU0NQorIzogYnVpbHRpbi9ub3Rlcy5jOjI1MiBidWlsdGluL3RhZy5jOjU0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiBvciByZWFkICclcyciCiBtc2dzdHIgIuS4jeiDveaJk+W8gOaIluivu+WPliAnJXMnIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjcyIGJ1aWx0aW4vbm90ZXMuYzo0NDUgYnVpbHRpbi9ub3Rlcy5jOjQ0NwotIzogYnVpbHRpbi9ub3Rlcy5jOjUwNyBidWlsdGluL25vdGVzLmM6NTYxIGJ1aWx0aW4vbm90ZXMuYzo2NDQKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NDkgYnVpbHRpbi9ub3Rlcy5jOjcyNCBidWlsdGluL25vdGVzLmM6NzY2Ci0jOiBidWlsdGluL25vdGVzLmM6OTY4IGJ1aWx0aW4vcmVzZXQuYzoyOTMgYnVpbHRpbi90YWcuYzo1NTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNzEgYnVpbHRpbi9ub3Rlcy5jOjQ0NCBidWlsdGluL25vdGVzLmM6NDQ2CisjOiBidWlsdGluL25vdGVzLmM6NTA2IGJ1aWx0aW4vbm90ZXMuYzo1NjAgYnVpbHRpbi9ub3Rlcy5jOjY0MworIzogYnVpbHRpbi9ub3Rlcy5jOjY0OCBidWlsdGluL25vdGVzLmM6NzIzIGJ1aWx0aW4vbm90ZXMuYzo3NjUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5NjcgYnVpbHRpbi90YWcuYzo1NTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgJyVzJyBhcyBhIHZhbGlkIHJlZi4iCiBtc2dzdHIgIuaXoOazleino+aekCAnJXMnIOS4uuS4gOS4quacieaViOW8leeUqOOAgiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI3NQorIzogYnVpbHRpbi9ub3Rlcy5jOjI3NAogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVhZCBvYmplY3QgJyVzJy4iCiBtc2dzdHIgIuaXoOazleivu+WPluWvueixoSAnJXMn44CCIgogCi0jOiBidWlsdGluL25vdGVzLmM6Mjk5CisjOiBidWlsdGluL25vdGVzLmM6Mjk4CiBtc2dpZCAiQ2Fubm90IGNvbW1pdCB1bmluaXRpYWxpemVkL3VucmVmZXJlbmNlZCBub3RlcyB0cmVlIgogbXNnc3RyICLkuI3og73mj5DkuqTmnKrliJ3lp4vljJYv5pyq5byV55So55qE5rOo6Kej5qCRIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzQwCisjOiBidWlsdGluL25vdGVzLmM6MzM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJhZCBub3Rlcy5yZXdyaXRlTW9kZSB2YWx1ZTogJyVzJyIKIG1zZ3N0ciAi5Z2P55qEIG5vdGVzLnJld3JpdGVNb2RlIOWAvO+8miclcyciCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzozNTAKKyM6IGJ1aWx0aW4vbm90ZXMuYzozNDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVmdXNpbmcgdG8gcmV3cml0ZSBub3RlcyBpbiAlcyAob3V0c2lkZSBvZiByZWZzL25vdGVzLykiCiBtc2dzdHIgIuaLkue7neWQkSAlc++8iOWcqCByZWZzL25vdGVzLyDkuYvlpJbvvInlhpnlhaXms6jop6MiCiAKICMuIFRSQU5TTEFUT1JTOiBUaGUgZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgdGhlCiAjLiBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHNlY29uZCAlcyBpcyBpdHMgdmFsdWUKLSM6IGJ1aWx0aW4vbm90ZXMuYzozNzcKKyM6IGJ1aWx0aW4vbm90ZXMuYzozNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkICVzIHZhbHVlOiAnJXMnIgogbXNnc3RyICLlnY/nmoQgJXMg5YC877yaJyVzJyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQ0MQorIzogYnVpbHRpbi9ub3Rlcy5jOjQ0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWxmb3JtZWQgaW5wdXQgbGluZTogJyVzJy4iCiBtc2dzdHIgIumdnuazleeahOi+k+WFpeihjO+8miclcyfjgIIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo0NTYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGNvcHkgbm90ZXMgZnJvbSAnJXMnIHRvICclcyciCiBtc2dzdHIgIuaXoOazleS7jiAnJXMnIOWIsCAnJXMnIOaLt+i0neazqOinoyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUwMCBidWlsdGluL25vdGVzLmM6NTU0IGJ1aWx0aW4vbm90ZXMuYzo2MjcKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MzkgYnVpbHRpbi9ub3Rlcy5jOjcxMiBidWlsdGluL25vdGVzLmM6NzU5Ci0jOiBidWlsdGluL25vdGVzLmM6MTAzMworIzogYnVpbHRpbi9ub3Rlcy5jOjQ5OSBidWlsdGluL25vdGVzLmM6NTUzIGJ1aWx0aW4vbm90ZXMuYzo2MjYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MzggYnVpbHRpbi9ub3Rlcy5jOjcxMSBidWlsdGluL25vdGVzLmM6NzU4CisjOiBidWlsdGluL25vdGVzLmM6MTAzMgogbXNnaWQgInRvbyBtYW55IHBhcmFtZXRlcnMiCiBtc2dzdHIgIuWPguaVsOWkquWkmiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUxMyBidWlsdGluL25vdGVzLmM6NzcyCisjOiBidWlsdGluL25vdGVzLmM6NTEyIGJ1aWx0aW4vbm90ZXMuYzo3NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gbm90ZSBmb3VuZCBmb3Igb2JqZWN0ICVzLiIKIG1zZ3N0ciAi5pyq5Y+R546w5a+56LGhICVzIOeahOazqOino+OAgiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU4MAorIzogYnVpbHRpbi9ub3Rlcy5jOjUzNCBidWlsdGluL25vdGVzLmM6NjkxCittc2dpZCAibm90ZSBjb250ZW50cyBhcyBhIHN0cmluZyIKK21zZ3N0ciAi5rOo6Kej5YaF5a655L2c5Li65LiA5Liq5a2X56ym5LiyIgorCisjOiBidWlsdGluL25vdGVzLmM6NTM3IGJ1aWx0aW4vbm90ZXMuYzo2OTQKK21zZ2lkICJub3RlIGNvbnRlbnRzIGluIGEgZmlsZSIKK21zZ3N0ciAi5rOo6Kej5YaF5a655Yiw5LiA5Liq5paH5Lu25LitIgorCisjOiBidWlsdGluL25vdGVzLmM6NTM5IGJ1aWx0aW4vbm90ZXMuYzo1NDIgYnVpbHRpbi9ub3Rlcy5jOjY5NgorIzogYnVpbHRpbi9ub3Rlcy5jOjY5OSBidWlsdGluL3RhZy5jOjQ3NAorbXNnaWQgIm9iamVjdCIKK21zZ3N0ciAi5a+56LGhIgorCisjOiBidWlsdGluL25vdGVzLmM6NTQwIGJ1aWx0aW4vbm90ZXMuYzo2OTcKK21zZ2lkICJyZXVzZSBhbmQgZWRpdCBzcGVjaWZpZWQgbm90ZSBvYmplY3QiCittc2dzdHIgIumHjeeUqOWSjOe8lui+keaMh+WumueahOazqOino+WvueixoSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjU0MyBidWlsdGluL25vdGVzLmM6NzAwCittc2dpZCAicmV1c2Ugc3BlY2lmaWVkIG5vdGUgb2JqZWN0IgorbXNnc3RyICLph43nlKjmjIflrprnmoTms6jop6Plr7nosaEiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NDUgYnVpbHRpbi9ub3Rlcy5jOjYxMworbXNnaWQgInJlcGxhY2UgZXhpc3Rpbmcgbm90ZXMiCittc2dzdHIgIuabv+aNouW3suWtmOWcqOeahOazqOinoyIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjU3OQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ2Fubm90IGFkZCBub3Rlcy4gRm91bmQgZXhpc3Rpbmcgbm90ZXMgZm9yIG9iamVjdCAlcy4gVXNlICctZicgdG8gb3ZlcndyaXRlICIKICJleGlzdGluZyBub3RlcyIKIG1zZ3N0ciAi5LiN6IO95re75Yqg5rOo6Kej44CC5Y+R546w5a+56LGhICVzIOW3suWtmOWcqOazqOino+OAguS9v+eUqCAnLWYnIOimhueblueOsOWtmOazqOinoyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU4NSBidWlsdGluL25vdGVzLmM6NjYyCisjOiBidWlsdGluL25vdGVzLmM6NTg0IGJ1aWx0aW4vbm90ZXMuYzo2NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3ZlcndyaXRpbmcgZXhpc3Rpbmcgbm90ZXMgZm9yIG9iamVjdCAlc1xuIgogbXNnc3RyICLopobnm5blr7nosaEgJXMg546w5a2Y5rOo6KejXG4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MzUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MTQKK21zZ2lkICJyZWFkIG9iamVjdHMgZnJvbSBzdGRpbiIKK21zZ3N0ciAi5LuO5qCH5YeG6L6T5YWl6K+75Y+W5a+56LGhIgorCisjOiBidWlsdGluL25vdGVzLmM6NjE2Cittc2dpZCAibG9hZCByZXdyaXRpbmcgY29uZmlnIGZvciA8Y29tbWFuZD4gKGltcGxpZXMgLS1zdGRpbikiCittc2dzdHIgIumHjeaWsOWKoOi9vSA85ZG95LukPiDnmoTphY3nva7vvIjpmpDlkKsgLS1zdGRpbu+8iSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjYzNAogbXNnaWQgInRvbyBmZXcgcGFyYW1ldGVycyIKIG1zZ3N0ciAi5Y+C5pWw5aSq5bCRIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjU2CisjOiBidWlsdGluL25vdGVzLmM6NjU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDYW5ub3QgY29weSBub3Rlcy4gRm91bmQgZXhpc3Rpbmcgbm90ZXMgZm9yIG9iamVjdCAlcy4gVXNlICctZicgdG8gb3ZlcndyaXRlICIKICJleGlzdGluZyBub3RlcyIKIG1zZ3N0ciAi5LiN6IO95ou36LSd5rOo6Kej44CC5Y+R546w5a+56LGhICVzIOW3suWtmOWcqOazqOino+OAguS9v+eUqCAnLWYnIOimhueblueOsOWtmOazqOinoyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjY2OAorIzogYnVpbHRpbi9ub3Rlcy5jOjY2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJNaXNzaW5nIG5vdGVzIG9uIHNvdXJjZSBvYmplY3QgJXMuIENhbm5vdCBjb3B5LiIKIG1zZ3N0ciAi5rqQ5a+56LGhICVzIOe8uuWwkeazqOino+OAguS4jeiDveaLt+i0neOAgiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjcxNworIzogYnVpbHRpbi9ub3Rlcy5jOjcxNgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIC1tLy1GLy1jLy1DIG9wdGlvbnMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgZm9yIHRoZSAnZWRpdCcgc3ViY29tbWFuZC5cbiIKQEAgLTM4MzUsMzYgKzY5NjMsMjUxIEBACiAi5a2Q5ZG95LukICdlZGl0JyDnmoTpgInpobkgLW0vLUYvLWMvLUMg5bey5byD55So44CCXG4iCiAi6K+35o2i55SoICdnaXQgbm90ZXMgYWRkIC1mIC1tLy1GLy1jLy1DJ+OAglxuIgogCi0jOiBidWlsdGluL25vdGVzLmM6OTcxCisjOiBidWlsdGluL25vdGVzLmM6ODYzCittc2dpZCAiR2VuZXJhbCBvcHRpb25zIgorbXNnc3RyICLpgJrnlKjpgInpobkiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NjUKK21zZ2lkICJNZXJnZSBvcHRpb25zIgorbXNnc3RyICLlkIjlubbpgInpobkiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NjcKK21zZ2lkICIiCisicmVzb2x2ZSBub3RlcyBjb25mbGljdHMgdXNpbmcgdGhlIGdpdmVuIHN0cmF0ZWd5IChtYW51YWwvb3Vycy90aGVpcnMvdW5pb24vIgorImNhdF9zb3J0X3VuaXEpIgorbXNnc3RyICLkvb/nlKjmjIflrprnmoTnrZbnlaXop6PlhrPms6jop6PlhrLnqoEgKG1hbnVhbC9vdXJzL3RoZWlycy91bmlvbi9jYXRfc29ydF91bmlxKSIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjg2OQorbXNnaWQgIkNvbW1pdHRpbmcgdW5tZXJnZWQgbm90ZXMiCittc2dzdHIgIuaPkOS6pOacquWQiOW5tueahOazqOinoyIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjg3MQorbXNnaWQgImZpbmFsaXplIG5vdGVzIG1lcmdlIGJ5IGNvbW1pdHRpbmcgdW5tZXJnZWQgbm90ZXMiCittc2dzdHIgIumAmui/h+aPkOS6pOacquWQiOW5tueahOazqOino+adpeWujOaIkOazqOino+WQiOW5tiIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjg3MworbXNnaWQgIkFib3J0aW5nIG5vdGVzIG1lcmdlIHJlc29sdXRpb24iCittc2dzdHIgIuS4reatouazqOino+WQiOW5tueahOaWueahiCIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjg3NQorbXNnaWQgImFib3J0IG5vdGVzIG1lcmdlIgorbXNnc3RyICLkuK3mraLms6jop6PlkIjlubYiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiT2JqZWN0ICVzIGhhcyBubyBub3RlXG4iCiBtc2dzdHIgIuWvueixoSAlcyDmsqHmnInms6jop6NcbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjExMDMgYnVpbHRpbi9yZW1vdGUuYzoxNTk4CisjOiBidWlsdGluL25vdGVzLmM6OTgyCittc2dpZCAiYXR0ZW1wdCB0byByZW1vdmUgbm9uLWV4aXN0ZW50IG5vdGUgaXMgbm90IGFuIGVycm9yIgorbXNnc3RyICLlsJ3or5XliKDpmaTkuI3lrZjlnKjnmoTms6jop6PkuI3mmK/kuIDkuKrplJnor68iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5ODUKK21zZ2lkICJyZWFkIG9iamVjdCBuYW1lcyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIKK21zZ3N0ciAi5LuO5qCH5YeG6L6T5YWl6K+75Y+W5a+56LGh5ZCN56ewIgorCisjOiBidWlsdGluL25vdGVzLmM6MTA2NgorbXNnaWQgIm5vdGVzX3JlZiIKK21zZ3N0ciAi5rOo6Kej5byV55SoIgorCisjOiBidWlsdGluL25vdGVzLmM6MTA2NworbXNnaWQgInVzZSBub3RlcyBmcm9tIDxub3Rlc19yZWY+IgorbXNnc3RyICLku44gPOazqOino+W8leeUqD4g5L2/55So5rOo6KejIgorCisjOiBidWlsdGluL25vdGVzLmM6MTEwMiBidWlsdGluL3JlbW90ZS5jOjE1OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biBzdWJjb21tYW5kOiAlcyIKIG1zZ3N0ciAi5pyq55+l5a2Q5ZG95Luk77yaJXMiCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjMzNworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyMworbXNnaWQgImdpdCBwYWNrLW9iamVjdHMgLS1zdGRvdXQgW29wdGlvbnMuLi5dIFs8IHJlZi1saXN0IHwgPCBvYmplY3QtbGlzdF0iCittc2dzdHIgImdpdCBwYWNrLW9iamVjdHMgLS1zdGRvdXQgW+mAiemhuS4uLl0gWzwg5byV55So5YiX6KGoIHwgPCDlr7nosaHliJfooahdIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0Cittc2dpZCAiZ2l0IHBhY2stb2JqZWN0cyBbb3B0aW9ucy4uLl0gYmFzZS1uYW1lIFs8IHJlZi1saXN0IHwgPCBvYmplY3QtbGlzdF0iCittc2dzdHIgImdpdCBwYWNrLW9iamVjdHMgW+mAiemhuS4uLl0gYmFzZS1uYW1lIFs8IOW8leeUqOWIl+ihqCB8IDwg5a+56LGh5YiX6KGoXSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoxODMgYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoxODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiZGVmbGF0ZSBlcnJvciAoJWQpIgorbXNnc3RyICLljovnvKnplJnor68gKCVkKSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyMzk3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuc3VwcG9ydGVkIGluZGV4IHZlcnNpb24gJXMiCiBtc2dzdHIgIuS4jeaUr+aMgeeahOe0ouW8leeJiOacrCAlcyIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyMzQxCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIGluZGV4IHZlcnNpb24gJyVzJyIKIG1zZ3N0ciAi5Z2P55qE57Si5byV54mI5pysICclcyciCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjM2NAorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDI0CiAjLCBjLWZvcm1hdAogbXNnaWQgIm9wdGlvbiAlcyBkb2VzIG5vdCBhY2NlcHQgbmVnYXRpdmUgZm9ybSIKIG1zZ3N0ciAi6YCJ6aG5ICVzIOS4jeaOpeWPl+WQpuWumuagvOW8jyIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyMzY4CisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0MjgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHBhcnNlIHZhbHVlICclcycgZm9yIG9wdGlvbiAlcyIKIG1zZ3N0ciAi5LiN6IO96Kej5p6Q6YCJ6aG5ICUxJHMg55qE5YC8ICclMiRzJyIKIAorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDQ3Cittc2dpZCAiZG8gbm90IHNob3cgcHJvZ3Jlc3MgbWV0ZXIiCittc2dzdHIgIuS4jeaYvuekuui/m+W6puihqCIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDQ5Cittc2dpZCAic2hvdyBwcm9ncmVzcyBtZXRlciIKK21zZ3N0ciAi5pi+56S66L+b5bqm6KGoIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NTEKK21zZ2lkICJzaG93IHByb2dyZXNzIG1ldGVyIGR1cmluZyBvYmplY3Qgd3JpdGluZyBwaGFzZSIKK21zZ3N0ciAi5Zyo5a+56LGh5YaZ5YWl6Zi25q615pi+56S66L+b5bqm6KGoIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NTQKK21zZ2lkICJzaW1pbGFyIHRvIC0tYWxsLXByb2dyZXNzIHdoZW4gcHJvZ3Jlc3MgbWV0ZXIgaXMgc2hvd24iCittc2dzdHIgIuW9k+i/m+W6puihqOaYvuekuuaXtuexu+S8vOS6jiAtLWFsbC1wcm9ncmVzcyIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDU1Cittc2dpZCAidmVyc2lvblssb2Zmc2V0XSIKK21zZ3N0ciAi54mI5pysWyzlgY/np7tdIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NTYKK21zZ2lkICJ3cml0ZSB0aGUgcGFjayBpbmRleCBmaWxlIGluIHRoZSBzcGVjaWZpZWQgaWR4IGZvcm1hdCB2ZXJzaW9uIgorbXNnc3RyICLnlKjmjIflrprnmoQgaWR4IOagvOW8j+eJiOacrOadpeWGmeWMhee0ouW8leaWh+S7tiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDU5Cittc2dpZCAibWF4aW11bSBzaXplIG9mIGVhY2ggb3V0cHV0IHBhY2sgZmlsZSIKK21zZ3N0ciAi5q+P5Liq6L6T5Ye65YyF55qE5pyA5aSn5bC65a+4IgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NjEKK21zZ2lkICJpZ25vcmUgYm9ycm93ZWQgb2JqZWN0cyBmcm9tIGFsdGVybmF0ZSBvYmplY3Qgc3RvcmUiCittc2dzdHIgIuW/veeVpeS7juabv+S7o+WvueixoeWtmOWCqOmHjOWAn+eUqOWvueixoSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDYzCittc2dpZCAiaWdub3JlIHBhY2tlZCBvYmplY3RzIgorbXNnc3RyICLlv73nlaXljIXlr7nosaEiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ2NQorbXNnaWQgImxpbWl0IHBhY2sgd2luZG93IGJ5IG9iamVjdHMiCittc2dzdHIgIumZkOWItuaJk+WMheeql+WPo+eahOWvueixoeaVsCIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDY3Cittc2dpZCAibGltaXQgcGFjayB3aW5kb3cgYnkgbWVtb3J5IGluIGFkZGl0aW9uIHRvIG9iamVjdCBsaW1pdCIKK21zZ3N0ciAi6Zmk5a+56LGh5pWw6YeP6ZmQ5Yi25aSW6K6+572u5omT5YyF56qX5Y+j55qE5YaF5a2Y6ZmQ5Yi2IgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NjkKK21zZ2lkICJtYXhpbXVtIGxlbmd0aCBvZiBkZWx0YSBjaGFpbiBhbGxvd2VkIGluIHRoZSByZXN1bHRpbmcgcGFjayIKK21zZ3N0ciAi5omT5YyF5YWB6K6455qEIGRlbHRhIOmTvueahOacgOWkp+mVv+W6piIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDcxCittc2dpZCAicmV1c2UgZXhpc3RpbmcgZGVsdGFzIgorbXNnc3RyICLph43nlKjlt7LlrZjlnKjnmoQgZGVsdGFzIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NzMKK21zZ2lkICJyZXVzZSBleGlzdGluZyBvYmplY3RzIgorbXNnc3RyICLph43nlKjlt7LlrZjlnKjnmoTlr7nosaEiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ3NQorbXNnaWQgInVzZSBPRlNfREVMVEEgb2JqZWN0cyIKK21zZ3N0ciAi5L2/55SoIE9GU19ERUxUQSDlr7nosaEiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ3NworbXNnaWQgInVzZSB0aHJlYWRzIHdoZW4gc2VhcmNoaW5nIGZvciBiZXN0IGRlbHRhIG1hdGNoZXMiCittc2dzdHIgIuS9v+eUqOe6v+eoi+afpeivouacgOS9syBkZWx0YSDljLnphY0iCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ3OQorbXNnaWQgImRvIG5vdCBjcmVhdGUgYW4gZW1wdHkgcGFjayBvdXRwdXQiCittc2dzdHIgIuS4jeWIm+W7uuepuueahOWMhei+k+WHuiIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDgxCittc2dpZCAicmVhZCByZXZpc2lvbiBhcmd1bWVudHMgZnJvbSBzdGFuZGFyZCBpbnB1dCIKK21zZ3N0ciAi5LuO5qCH5YeG6L6T5YWl6K+75Y+W5L+u6K6i5Y+35Y+C5pWwIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0ODMKK21zZ2lkICJsaW1pdCB0aGUgb2JqZWN0cyB0byB0aG9zZSB0aGF0IGFyZSBub3QgeWV0IHBhY2tlZCIKK21zZ3N0ciAi6ZmQ5Yi26YKj5Lqb5bCa5pyq5omT5YyF55qE5a+56LGhIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0ODYKK21zZ2lkICJpbmNsdWRlIG9iamVjdHMgcmVhY2hhYmxlIGZyb20gYW55IHJlZmVyZW5jZSIKK21zZ3N0ciAi5YyF5ous5Y+v5Lul5LuO5Lu75L2V5byV55So6K6/6Zeu5Yiw55qE5a+56LGhIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0ODkKK21zZ2lkICJpbmNsdWRlIG9iamVjdHMgcmVmZXJyZWQgYnkgcmVmbG9nIGVudHJpZXMiCittc2dzdHIgIuWMheaLrOiiq+W8leeUqOaXpeW/l+W8leeUqOWIsOeahOWvueixoSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDkyCittc2dpZCAib3V0cHV0IHBhY2sgdG8gc3Rkb3V0IgorbXNnc3RyICLovpPlh7rljIXliLDmoIflh4bovpPlh7oiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ5NAorbXNnaWQgImluY2x1ZGUgdGFnIG9iamVjdHMgdGhhdCByZWZlciB0byBvYmplY3RzIHRvIGJlIHBhY2tlZCIKK21zZ3N0ciAi5YyF5ous5byV55So5LqG5omT5YyF5a+56LGh55qEIHRhZyIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDk2Cittc2dpZCAia2VlcCB1bnJlYWNoYWJsZSBvYmplY3RzIgorbXNnc3RyICLnu7TmjIHkuI3lj6/ovr7nmoTlr7nosaEiCisKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ5NyBwYXJzZS1vcHRpb25zLmg6MTQxCittc2dpZCAidGltZSIKK21zZ3N0ciAi5pe26Ze0IgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0OTgKK21zZ2lkICJ1bnBhY2sgdW5yZWFjaGFibGUgb2JqZWN0cyBuZXdlciB0aGFuIDx0aW1lPiIKK21zZ3N0ciAi5bCG5q+U57uZ5a6aIDzml7bpl7Q+IOaWsOeahOaXoOazleiuv+mXrueahOWvueixoeino+WMhSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNTAxCittc2dpZCAiY3JlYXRlIHRoaW4gcGFja3MiCittc2dzdHIgIuWIm+W7uueyvueugOWMhSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNTAzCittc2dpZCAiaWdub3JlIHBhY2tzIHRoYXQgaGF2ZSBjb21wYW5pb24gLmtlZXAgZmlsZSIKK21zZ3N0ciAi5b+955Wl6YWN5pyJIC5rZWVwIOaWh+S7tueahOWMhSIKKworIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNTA1Cittc2dpZCAicGFjayBjb21wcmVzc2lvbiBsZXZlbCIKK21zZ3N0ciAi5omT5YyF5Y6L57yp57qn5YirIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI1MDcKK21zZ2lkICJkbyBub3QgaGlkZSBjb21taXRzIGJ5IGdyYWZ0cyIKK21zZ3N0ciAi5LiN6ZqQ6JeP56e75qSN6KaG55uW55qE5o+Q5LqkIgorCisjOiBidWlsdGluL3BhY2stcmVmcy5jOjYKK21zZ2lkICJnaXQgcGFjay1yZWZzIFtvcHRpb25zXSIKK21zZ3N0ciAiZ2l0IHBhY2stcmVmcyBb6YCJ6aG5XSIKKworIzogYnVpbHRpbi9wYWNrLXJlZnMuYzoxNAorbXNnaWQgInBhY2sgZXZlcnl0aGluZyIKK21zZ3N0ciAi5omT5YyF5LiA5YiHIgorCisjOiBidWlsdGluL3BhY2stcmVmcy5jOjE1Cittc2dpZCAicHJ1bmUgbG9vc2UgcmVmcyAoZGVmYXVsdCkiCittc2dzdHIgIua4hemZpOadvuaVo+eahOW8leeUqO+8iOm7mOiupO+8iSIKKworIzogYnVpbHRpbi9wcnVuZS1wYWNrZWQuYzo3Cittc2dpZCAiZ2l0IHBydW5lLXBhY2tlZCBbLW58LS1kcnktcnVuXSBbLXF8LS1xdWlldF0iCittc2dzdHIgImdpdCBwcnVuZS1wYWNrZWQgWy1ufC0tZHJ5LXJ1bl0gWy1xfC0tcXVpZXRdIgorCisjOiBidWlsdGluL3BydW5lLmM6MTIKK21zZ2lkICJnaXQgcHJ1bmUgWy1uXSBbLXZdIFstLWV4cGlyZSA8dGltZT5dIFstLV0gWzxoZWFkPi4uLl0iCittc2dzdHIgImdpdCBwcnVuZSBbLW5dIFstdl0gWy0tZXhwaXJlIDzml7bpl7Q+XSBbLS1dIFs85aS0Pi4uLl0iCisKKyM6IGJ1aWx0aW4vcHJ1bmUuYzoxMzIKK21zZ2lkICJkbyBub3QgcmVtb3ZlLCBzaG93IG9ubHkiCittc2dzdHIgIuS4jeWIoOmZpO+8jOWPquaYvuekuiIKKworIzogYnVpbHRpbi9wcnVuZS5jOjEzMworbXNnaWQgInJlcG9ydCBwcnVuZWQgb2JqZWN0cyIKK21zZ3N0ciAi5oql5ZGK5riF6Zmk55qE5a+56LGhIgorCisjOiBidWlsdGluL3BydW5lLmM6MTM2Cittc2dpZCAiZXhwaXJlIG9iamVjdHMgb2xkZXIgdGhhbiA8dGltZT4iCittc2dzdHIgIuS9v+aXqeS6jue7meWumuaXtumXtOeahOWvueixoei/h+acnyIKKworIzogYnVpbHRpbi9wdXNoLmM6MTQKK21zZ2lkICJnaXQgcHVzaCBbPG9wdGlvbnM+XSBbPHJlcG9zaXRvcnk+IFs8cmVmc3BlYz4uLi5dXSIKK21zZ3N0ciAiZ2l0IHB1c2ggWzzpgInpobk+XSBbPOeJiOacrOW6kz4gWzzlvJXnlKjooajovr7lvI8+Li4uXV0iCisKICM6IGJ1aWx0aW4vcHVzaC5jOjQ1CiBtc2dpZCAidGFnIHNob3J0aGFuZCB3aXRob3V0IDx0YWc+IgogbXNnc3RyICJ0YWcg566A5YaZ5rKh5pyJ6LefIDx0YWc+IOWPguaVsCIKQEAgLTM5NDcsMTIgKzcyOTAsNDQgQEAKICLmgqjmraPmjqjpgIHoh7Pov5znqIsgJyVzJ++8iOWFtuW5tumdnuW9k+WJjeWIhuaUryAnJXMnIOeahOS4iua4uO+8ie+8jFxuIgogIuiAjOayoeacieWRiuivieaIkeimgeaOqOmAgeS7gOS5iOOAgeabtOaWsOWTquS4qui/nOeoi+WIhuaUr+OAgiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MTc0CisjICDor5HogIXvvJrlrZfnrKbkuLLpppbooYzooYzpppbopoHmt7vliqDigJx3YXJuaW5nOiDigJ3lrZfkuLLvvIzmlYXmraTpppbooYzopoHovoPlhbbkvZnooYznn60KKyM6IGJ1aWx0aW4vcHVzaC5jOjE1MQorbXNnaWQgIiIKKyJwdXNoLmRlZmF1bHQgaXMgdW5zZXQ7IGl0cyBpbXBsaWNpdCB2YWx1ZSBpcyBjaGFuZ2luZyBpblxuIgorIkdpdCAyLjAgZnJvbSAnbWF0Y2hpbmcnIHRvICdzaW1wbGUnLiBUbyBzcXVlbGNoIHRoaXMgbWVzc2FnZVxuIgorImFuZCBtYWludGFpbiB0aGUgY3VycmVudCBiZWhhdmlvciBhZnRlciB0aGUgZGVmYXVsdCBjaGFuZ2VzLCB1c2U6XG4iCisiXG4iCisiICBnaXQgY29uZmlnIC0tZ2xvYmFsIHB1c2guZGVmYXVsdCBtYXRjaGluZ1xuIgorIlxuIgorIlRvIHNxdWVsY2ggdGhpcyBtZXNzYWdlIGFuZCBhZG9wdCB0aGUgbmV3IGJlaGF2aW9yIG5vdywgdXNlOlxuIgorIlxuIgorIiAgZ2l0IGNvbmZpZyAtLWdsb2JhbCBwdXNoLmRlZmF1bHQgc2ltcGxlXG4iCisiXG4iCisiU2VlICdnaXQgaGVscCBjb25maWcnIGFuZCBzZWFyY2ggZm9yICdwdXNoLmRlZmF1bHQnIGZvciBmdXJ0aGVyICIKKyJpbmZvcm1hdGlvbi5cbiIKKyIodGhlICdzaW1wbGUnIG1vZGUgd2FzIGludHJvZHVjZWQgaW4gR2l0IDEuNy4xMS4gVXNlIHRoZSBzaW1pbGFyIG1vZGVcbiIKKyInY3VycmVudCcgaW5zdGVhZCBvZiAnc2ltcGxlJyBpZiB5b3Ugc29tZXRpbWVzIHVzZSBvbGRlciB2ZXJzaW9ucyBvZiBHaXQpIgorbXNnc3RyICIiCisicHVzaC5kZWZhdWx0IOacquiuvue9ru+8jOWug+eahOm7mOiupOWAvOWwhuS8muWcqCBHaXQgMi4wIOeUsSAnbWF0Y2hpbmcnXG4iCisi5L+u5pS55Li6ICdzaW1wbGUn44CC6Iul6KaB5LiN5YaN5pi+56S65pys5L+h5oGv5bm25Zyo5YW26buY6K6k5YC85pS55Y+Y5ZCO57u05oyB5b2T5YmN5L2/55So5Lmg5oOv77yMXG4iCisi6L+b6KGM5aaC5LiL6K6+572u77yaXG4iCisiXG4iCisiICBnaXQgY29uZmlnIC0tZ2xvYmFsIHB1c2guZGVmYXVsdCBtYXRjaGluZ1xuIgorIlxuIgorIuiLpeimgeS4jeWGjeaYvuekuuacrOS/oeaBr+W5tuS7jueOsOWcqOW8gOWni+mHh+eUqOaWsOeahOS9v+eUqOS5oOaDr++8jOiuvue9ru+8mlxuIgorIlxuIgorIiAgZ2l0IGNvbmZpZyAtLWdsb2JhbCBwdXNoLmRlZmF1bHQgc2ltcGxlXG4iCisiXG4iCisi5Y+C6KeBICdnaXQgaGVscCBjb25maWcnIOW5tuafpeaJviAncHVzaC5kZWZhdWx0JyDku6Xojrflj5bmm7TlpJrkv6Hmga/jgIJcbiIKKyLvvIgnc2ltcGxlJyDmqKHlvI/nlLEgR2l0IDEuNy4xMSDniYjmnKzlvJXlhaXjgILlpoLmnpzmgqjmnInml7bopoHkvb/nlKjogIHniYjmnKznmoQgR2l077yMXG4iCisi5Li65L+d5oyB5YW85a6577yM6K+355SoICdjdXJyZW50JyDku6Pmm78gJ3NpbXBsZScg5qih5byP77yJIgorCisjOiBidWlsdGluL3B1c2guYzoxOTkKIG1zZ2lkICIiCiAiWW91IGRpZG4ndCBzcGVjaWZ5IGFueSByZWZzcGVjcyB0byBwdXNoLCBhbmQgcHVzaC5kZWZhdWx0IGlzIFwibm90aGluZ1wiLiIKIG1zZ3N0ciAi5oKo5rKh5pyJ5Li65o6o6YCB5oyH5a6a5Lu75L2V5byV55So6KGo6L6+5byP77yM5bm25LiUIHB1c2guZGVmYXVsdCDkuLogXCJub3RoaW5nXCLjgIIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjE4MQorIzogYnVpbHRpbi9wdXNoLmM6MjA2CiBtc2dpZCAiIgogIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIHRoZSB0aXAgb2YgeW91ciBjdXJyZW50IGJyYW5jaCBpcyBiZWhpbmRcbiIKICJpdHMgcmVtb3RlIGNvdW50ZXJwYXJ0LiBNZXJnZSB0aGUgcmVtb3RlIGNoYW5nZXMgKGUuZy4gJ2dpdCBwdWxsJylcbiIKQEAgLTM5NjMsMTggKzczMzgsMTkgQEAKICLlho3mrKHmjqjpgIHliY3vvIzlhYjkuI7ov5znqIvlj5jmm7TlkIjlubbvvIjlpoIgJ2dpdCBwdWxsJ++8ieOAguivpuingVxuIgogIidnaXQgcHVzaCAtLWhlbHAnIOS4reeahCAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyDlsI/oioLjgIIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjE4NworIzogYnVpbHRpbi9wdXNoLmM6MjEyCiBtc2dpZCAiIgogIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIGEgcHVzaGVkIGJyYW5jaCB0aXAgaXMgYmVoaW5kIGl0cyByZW1vdGVcbiIKICJjb3VudGVycGFydC4gSWYgeW91IGRpZCBub3QgaW50ZW5kIHRvIHB1c2ggdGhhdCBicmFuY2gsIHlvdSBtYXkgd2FudCB0b1xuIgotInNwZWNpZnkgYnJhbmNoZXMgdG8gcHVzaCBvciBzZXQgdGhlICdwdXNoLmRlZmF1bHQnIGNvbmZpZ3VyYXRpb25cbiIKLSJ2YXJpYWJsZSB0byAnY3VycmVudCcgb3IgJ3Vwc3RyZWFtJyB0byBwdXNoIG9ubHkgdGhlIGN1cnJlbnQgYnJhbmNoLiIKKyJzcGVjaWZ5IGJyYW5jaGVzIHRvIHB1c2ggb3Igc2V0IHRoZSAncHVzaC5kZWZhdWx0JyBjb25maWd1cmF0aW9uIHZhcmlhYmxlXG4iCisidG8gJ3NpbXBsZScsICdjdXJyZW50JyBvciAndXBzdHJlYW0nIHRvIHB1c2ggb25seSB0aGUgY3VycmVudCBicmFuY2guIgogbXNnc3RyICIiCiAi5pu05paw6KKr5ouS57ud77yM5Zug5Li65o6o6YCB55qE5LiA5Liq5YiG5pSv55qE5pyA5paw5o+Q5Lqk6JC95ZCO5LqO5YW25a+55bqU55qE6L+c56iL5YiG5pSv44CCXG4iCiAi5aaC5p6c5oKo5bm26Z2e5pyJ5oSP5o6o6YCB6K+l5YiG5pSv77yM5oKo5Y+v5Lul5Zyo5o6o6YCB5pe25oyH5a6a6KaB5o6o6YCB55qE5YiG5pSv77yM5oiW6ICF5bCGXG4iCi0i6YWN572u5Y+Y6YePICdwdXNoLmRlZmF1bHQnIOiuvue9ruS4uiAnY3VycmVudCcg5oiWICd1cHN0cmVhbScg5Lul5L6/5Y+q5o6o6YCB5b2T5YmN5YiG5pSv44CCIgorIumFjee9ruWPmOmHjyAncHVzaC5kZWZhdWx0JyDorr7nva7kuLogJ3NpbXBsZSfjgIEnY3VycmVudCcg5oiWICd1cHN0cmVhbSdcbiIKKyLku6Xkvr/lj6rmjqjpgIHlvZPliY3liIbmlK/jgIIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjE5MworIzogYnVpbHRpbi9wdXNoLmM6MjE4CiBtc2dpZCAiIgogIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIGEgcHVzaGVkIGJyYW5jaCB0aXAgaXMgYmVoaW5kIGl0cyByZW1vdGVcbiIKICJjb3VudGVycGFydC4gQ2hlY2sgb3V0IHRoaXMgYnJhbmNoIGFuZCBtZXJnZSB0aGUgcmVtb3RlIGNoYW5nZXNcbiIKQEAgLTM5ODUsMjIgKzczNjEsNDggQEAKICLmo4Dlh7ror6XliIbmlK/lubbkuI7ov5znqIvlj5jmm7TlkIjlubbvvIjlpoIgJ2dpdCBwdWxsJ++8ie+8jOeEtuWQjuWGjeaOqOmAgeOAguivpuingVxuIgogIidnaXQgcHVzaCAtLWhlbHAnIOS4reeahCAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyDlsI/oioLjgIIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjIzMworIzogYnVpbHRpbi9wdXNoLmM6MjI0Cittc2dpZCAiIgorIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIHRoZSByZW1vdGUgY29udGFpbnMgd29yayB0aGF0IHlvdSBkb1xuIgorIm5vdCBoYXZlIGxvY2FsbHkuIFRoaXMgaXMgdXN1YWxseSBjYXVzZWQgYnkgYW5vdGhlciByZXBvc2l0b3J5IHB1c2hpbmdcbiIKKyJ0byB0aGUgc2FtZSByZWYuIFlvdSBtYXkgd2FudCB0byBmaXJzdCBtZXJnZSB0aGUgcmVtb3RlIGNoYW5nZXMgKGUuZy4sXG4iCisiJ2dpdCBwdWxsJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCisiU2VlIHRoZSAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBpbiAnZ2l0IHB1c2ggLS1oZWxwJyBmb3IgZGV0YWlscy4iCittc2dzdHIgIiIKKyLmm7TmlrDooqvmi5Lnu53vvIzlm6DkuLrov5znqIvniYjmnKzlupPljIXlkKvmgqjmnKzlnLDlsJrkuI3lrZjlnKjnmoTmj5DkuqTjgILov5npgJrluLjmmK/lm6DkuLrlj6blpJZcbiIKKyLkuIDkuKrniYjmnKzlupPlt7LmjqjpgIHkuobnm7jlkIznmoTlvJXnlKjjgILlho3mrKHmjqjpgIHliY3vvIzmgqjlj6/og73pnIDopoHlhYjlkIjlubbov5znqIvlj5jmm7RcbiIKKyLvvIjlpoIgJ2dpdCBwdWxsJ++8ieOAglxuIgorIuivpuingSAnZ2l0IHB1c2ggLS1oZWxwJyDkuK3nmoQgJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycg5bCP6IqC44CCIgorCisjOiBidWlsdGluL3B1c2guYzoyMzEKK21zZ2lkICJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgdGFnIGFscmVhZHkgZXhpc3RzIGluIHRoZSByZW1vdGUuIgorbXNnc3RyICLmm7TmlrDooqvmi5Lnu53lm6DkuLogdGFnIOWcqOi/nOeoi+W3sue7j+WtmOWcqOOAgiIKKworIzogYnVpbHRpbi9wdXNoLmM6MjM0Cittc2dpZCAiIgorIllvdSBjYW5ub3QgdXBkYXRlIGEgcmVtb3RlIHJlZiB0aGF0IHBvaW50cyBhdCBhIG5vbi1jb21taXQgb2JqZWN0LFxuIgorIm9yIHVwZGF0ZSBhIHJlbW90ZSByZWYgdG8gbWFrZSBpdCBwb2ludCBhdCBhIG5vbi1jb21taXQgb2JqZWN0LFxuIgorIndpdGhvdXQgdXNpbmcgdGhlICctLWZvcmNlJyBvcHRpb24uXG4iCittc2dzdHIgIiIKKyLlpoLmnpzkuI3kvb/nlKggJy0tZm9yY2UnIOWPguaVsO+8jOaCqOS4jeiDveabtOaWsOS4gOS4quaMh+WQkemdnuaPkOS6pOWvueixoeeahOi/nOeoi+W8leeUqO+8jFxuIgorIuS5n+S4jeiDveabtOaWsOi/nOeoi+W8leeUqOiuqeWFtuaMh+WQkeS4gOS4qumdnuaPkOS6pOWvueixoeOAglxuIgorCisjOiBidWlsdGluL3B1c2guYzoyOTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiUHVzaGluZyB0byAlc1xuIgogbXNnc3RyICLmjqjpgIHliLAgJXNcbiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjM3CisjOiBidWlsdGluL3B1c2guYzoyOTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHB1c2ggc29tZSByZWZzIHRvICclcyciCiBtc2dzdHIgIuaXoOazleaOqOmAgeS4gOS6m+W8leeUqOWIsCAnJXMnIgogCi0jOiBidWlsdGluL3B1c2guYzoyNjkKKyM6IGJ1aWx0aW4vcHVzaC5jOjMzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgcmVwb3NpdG9yeSAnJXMnIgogbXNnc3RyICLlnY/nmoTniYjmnKzlupMgJyVzJyIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjcwCisjOiBidWlsdGluL3B1c2guYzozMzIKIG1zZ2lkICIiCiAiTm8gY29uZmlndXJlZCBwdXNoIGRlc3RpbmF0aW9uLlxuIgogIkVpdGhlciBzcGVjaWZ5IHRoZSBVUkwgZnJvbSB0aGUgY29tbWFuZC1saW5lIG9yIGNvbmZpZ3VyZSBhIHJlbW90ZSAiCkBAIC00MDEzLDcgKzc0MTUsNyBAQAogIiAgICBnaXQgcHVzaCA8bmFtZT5cbiIKIG1zZ3N0ciAiIgogIuayoeaciemFjee9ruaOqOmAgeebruagh+OAglxuIgotIuaIluiAhemAmui/h+WRveS7pOihjOaMh+WumlVSTO+8jOaIluiAheeUqOS4i+mdouWRveS7pOmFjee9ruS4gOS4qui/nOeoi+eJiOacrOW6k1xuIgorIuaIlumAmui/h+WRveS7pOihjOaMh+WumlVSTO+8jOaIlueUqOS4i+mdouWRveS7pOmFjee9ruS4gOS4qui/nOeoi+eJiOacrOW6k1xuIgogIlxuIgogIiAgICBnaXQgcmVtb3RlIGFkZCA8bmFtZT4gPHVybD5cbiIKICJcbiIKQEAgLTQwMjEsMzQgKzc0MjMsMjQxIEBACiAiXG4iCiAiICAgIGdpdCBwdXNoIDxuYW1lPlxuIgogCi0jOiBidWlsdGluL3B1c2guYzoyODUKKyM6IGJ1aWx0aW4vcHVzaC5jOjM0NwogbXNnaWQgIi0tYWxsIGFuZCAtLXRhZ3MgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLS1hbGwg5ZKMIC0tdGFncyDkuI3lhbzlrrkiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI4NgorIzogYnVpbHRpbi9wdXNoLmM6MzQ4CiBtc2dpZCAiLS1hbGwgY2FuJ3QgYmUgY29tYmluZWQgd2l0aCByZWZzcGVjcyIKLW1zZ3N0ciAiLS1hbGwg5LiN6IO95ZKM5byV55So6KGo6L6+5byP5YWx55SoIgorbXNnc3RyICItLWFsbCDkuI3og73lkozlvJXnlKjooajovr7lvI/lkIzml7bkvb/nlKgiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI5MQorIzogYnVpbHRpbi9wdXNoLmM6MzUzCiBtc2dpZCAiLS1taXJyb3IgYW5kIC0tdGFncyBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLW1pcnJvciDlkowgLS10YWdzIOS4jeWFvOWuuSIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjkyCisjOiBidWlsdGluL3B1c2guYzozNTQKIG1zZ2lkICItLW1pcnJvciBjYW4ndCBiZSBjb21iaW5lZCB3aXRoIHJlZnNwZWNzIgotbXNnc3RyICItLW1pcnJvciDkuI3og73lkozlvJXnlKjooajovr7lvI/lhbHnlKgiCittc2dzdHIgIi0tbWlycm9yIOS4jeiDveWSjOW8leeUqOihqOi+vuW8j+WQjOaXtuS9v+eUqCIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mjk3CisjOiBidWlsdGluL3B1c2guYzozNTkKIG1zZ2lkICItLWFsbCBhbmQgLS1taXJyb3IgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLS1hbGwg5ZKMIC0tbWlycm9yIOS4jeWFvOWuuSIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mzg1CisjOiBidWlsdGluL3B1c2guYzo0MTkKK21zZ2lkICJyZXBvc2l0b3J5IgorbXNnc3RyICLniYjmnKzlupMiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyMAorbXNnaWQgInB1c2ggYWxsIHJlZnMiCittc2dzdHIgIuaOqOmAgeaJgOacieW8leeUqCIKKworIzogYnVpbHRpbi9wdXNoLmM6NDIxCittc2dpZCAibWlycm9yIGFsbCByZWZzIgorbXNnc3RyICLplZzlg4/miYDmnInlvJXnlKgiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyMworbXNnaWQgImRlbGV0ZSByZWZzIgorbXNnc3RyICLliKDpmaTlvJXnlKgiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyNAorbXNnaWQgInB1c2ggdGFncyAoY2FuJ3QgYmUgdXNlZCB3aXRoIC0tYWxsIG9yIC0tbWlycm9yKSIKK21zZ3N0ciAi5o6o6YCBIHRhZ3PvvIjkuI3og73kvb/nlKggLS1hbGwgb3IgLS1taXJyb3LvvIkiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyNworbXNnaWQgImZvcmNlIHVwZGF0ZXMiCittc2dzdHIgIuW8uuWItuabtOaWsCIKKworIzogYnVpbHRpbi9wdXNoLmM6NDI4Cittc2dpZCAiY2hlY2siCittc2dzdHIgIuajgOafpSIKKworIzogYnVpbHRpbi9wdXNoLmM6NDI5Cittc2dpZCAiY29udHJvbCByZWN1cnNpdmUgcHVzaGluZyBvZiBzdWJtb2R1bGVzIgorbXNnc3RyICLmjqfliLblrZDmqKHnu4TnmoTpgJLlvZLmjqjpgIEiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzMQorbXNnaWQgInVzZSB0aGluIHBhY2siCittc2dzdHIgIuS9v+eUqOeyvueugOaJk+WMhSIKKworIzogYnVpbHRpbi9wdXNoLmM6NDMyIGJ1aWx0aW4vcHVzaC5jOjQzMworbXNnaWQgInJlY2VpdmUgcGFjayBwcm9ncmFtIgorbXNnc3RyICLmjqXmlLbljIXnqIvluo8iCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzNAorbXNnaWQgInNldCB1cHN0cmVhbSBmb3IgZ2l0IHB1bGwvc3RhdHVzIgorbXNnc3RyICLorr7nva4gZ2l0IHB1bGwvc3RhdHVzIOeahOS4iua4uCIKKworIzogYnVpbHRpbi9wdXNoLmM6NDM3Cittc2dpZCAicHJ1bmUgbG9jYWxseSByZW1vdmVkIHJlZnMiCittc2dzdHIgIua4hemZpOacrOWcsOWIoOmZpOeahOW8leeUqCIKKworIzogYnVpbHRpbi9wdXNoLmM6NDM5Cittc2dpZCAiYnlwYXNzIHByZS1wdXNoIGhvb2siCittc2dzdHIgIue7lei/hyBwcmUtcHVzaCDpkqnlrZAiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ0MAorbXNnaWQgInB1c2ggbWlzc2luZyBidXQgcmVsZXZhbnQgdGFncyIKK21zZ3N0ciAi5o6o6YCB57y65aSx55qE5pyJ5YWz55qEIHRhZ3MiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ1MAogbXNnaWQgIi0tZGVsZXRlIGlzIGluY29tcGF0aWJsZSB3aXRoIC0tYWxsLCAtLW1pcnJvciBhbmQgLS10YWdzIgogbXNnc3RyICItLWRlbGV0ZSDkuI4gLS1hbGzjgIEtLW1pcnJvciDlj4ogLS10YWdzIOS4jeWFvOWuuSIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mzg3CisjOiBidWlsdGluL3B1c2guYzo0NTIKIG1zZ2lkICItLWRlbGV0ZSBkb2Vzbid0IG1ha2Ugc2Vuc2Ugd2l0aG91dCBhbnkgcmVmcyIKIG1zZ3N0ciAiLS1kZWxldGUg5pyq5o6l5Lu75L2V5byV55So5rKh5pyJ5oSP5LmJIgogCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjM2Cittc2dpZCAiIgorImdpdCByZWFkLXRyZWUgW1stbSBbLS10cml2aWFsXSBbLS1hZ2dyZXNzaXZlXSB8IC0tcmVzZXQgfCAtLXByZWZpeD08cHJlZml4Pl0gIgorIlstdSBbLS1leGNsdWRlLXBlci1kaXJlY3Rvcnk9PGdpdGlnbm9yZT5dIHwgLWldXSBbLS1uby1zcGFyc2UtY2hlY2tvdXRdIFstLSIKKyJpbmRleC1vdXRwdXQ9PGZpbGU+XSAoLS1lbXB0eSB8IDx0cmVlLWlzaDE+IFs8dHJlZS1pc2gyPiBbPHRyZWUtaXNoMz5dXSkiCittc2dzdHIgIiIKKyJnaXQgcmVhZC10cmVlIFtbLW0gWy0tdHJpdmlhbF0gWy0tYWdncmVzc2l2ZV0gfCAtLXJlc2V0IHwgLS1wcmVmaXg9POWJjee8gD5dIFstIgorInUgWy0tZXhjbHVkZS1wZXItZGlyZWN0b3J5PTxnaXRpZ25vcmU+XSB8IC1pXV0gWy0tbm8tc3BhcnNlLWNoZWNrb3V0XSBbLS0iCisiaW5kZXgtb3V0cHV0PTzmlofku7Y+XSAoLS1lbXB0eSB8IDzmoJHmiJbmj5DkuqQxPiBbPOagkeaIluaPkOS6pDI+IFs85qCR5oiW5o+Q5LqkMz5dXSkiCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTA4Cittc2dpZCAid3JpdGUgcmVzdWx0aW5nIGluZGV4IHRvIDxmaWxlPiIKK21zZ3N0ciAi5bCG57Si5byV57uT5p6c5YaZ5YWlIDxmaWxlPiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTEKK21zZ2lkICJvbmx5IGVtcHR5IHRoZSBpbmRleCIKK21zZ3N0ciAi5Y+q5piv5riF56m657Si5byVIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjExMworbXNnaWQgIk1lcmdpbmciCittc2dzdHIgIuWQiOW5tiIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTUKK21zZ2lkICJwZXJmb3JtIGEgbWVyZ2UgaW4gYWRkaXRpb24gdG8gYSByZWFkIgorbXNnc3RyICLor7vlj5bkuYvkvZnlho3miafooYzkuIDkuKrlkIjlubYiCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTE3Cittc2dpZCAiMy13YXkgbWVyZ2UgaWYgbm8gZmlsZSBsZXZlbCBtZXJnaW5nIHJlcXVpcmVkIgorbXNnc3RyICLlpoLmnpzmsqHmnInmlofku7bnuqflkIjlubbpnIDopoHvvIzmiafooYzkuInot6/lkIjlubYiCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTE5Cittc2dpZCAiMy13YXkgbWVyZ2UgaW4gcHJlc2VuY2Ugb2YgYWRkcyBhbmQgcmVtb3ZlcyIKK21zZ3N0ciAi5a2Y5Zyo5re75Yqg5ZKM5Yig6Zmk5pe277yM5Lmf5omn6KGM5LiJ6Lev5ZCI5bm2IgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyMQorbXNnaWQgInNhbWUgYXMgLW0sIGJ1dCBkaXNjYXJkIHVubWVyZ2VkIGVudHJpZXMiCittc2dzdHIgIuexu+S8vOS6jiAtbe+8jOS9huS4ouW8g+acquWQiOW5tueahOadoeebriIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjIKK21zZ2lkICI8c3ViZGlyZWN0b3J5Pi8iCittc2dzdHIgIjzlrZDnm67lvZU+LyIKKworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjMKK21zZ2lkICJyZWFkIHRoZSB0cmVlIGludG8gdGhlIGluZGV4IHVuZGVyIDxzdWJkaXJlY3Rvcnk+LyIKK21zZ3N0ciAi6K+75Y+W5qCR5a+56LGh5Yiw57Si5byV55qEIDzlrZDnm67lvZU+LyDkuIsiCisKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTI2Cittc2dpZCAidXBkYXRlIHdvcmtpbmcgdHJlZSB3aXRoIG1lcmdlIHJlc3VsdCIKK21zZ3N0ciAi55So5ZCI5bm255qE57uT5p6c5pu05paw5bel5L2c5Yy6IgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyOAorbXNnaWQgImdpdGlnbm9yZSIKK21zZ3N0ciAiZ2l0aWdub3JlIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyOQorbXNnaWQgImFsbG93IGV4cGxpY2l0bHkgaWdub3JlZCBmaWxlcyB0byBiZSBvdmVyd3JpdHRlbiIKK21zZ3N0ciAi5YWB6K645b+955Wl5paH5Lu25Lit6K6+5a6a55qE5paH5Lu25Y+v5Lul6KKr6KaG55uWIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzMgorbXNnaWQgImRvbid0IGNoZWNrIHRoZSB3b3JraW5nIHRyZWUgYWZ0ZXIgbWVyZ2luZyIKK21zZ3N0ciAi5ZCI5bm25ZCO5LiN5qOA5p+l5bel5L2c5Yy6IgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzMworbXNnaWQgImRvbid0IHVwZGF0ZSB0aGUgaW5kZXggb3IgdGhlIHdvcmsgdHJlZSIKK21zZ3N0ciAi5LiN5pu05paw57Si5byV5Yy65ZKM5bel5L2c5Yy6IgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzNQorbXNnaWQgInNraXAgYXBwbHlpbmcgc3BhcnNlIGNoZWNrb3V0IGZpbHRlciIKK21zZ3N0ciAi6Lez6L+H5bqU55So56iA55aP5qOA5Ye66L+H5ruk5ZmoIgorCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzNworbXNnaWQgImRlYnVnIHVucGFjay10cmVlcyIKK21zZ3N0ciAi6LCD6K+VIHVucGFjay10cmVlcyIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxMQorbXNnaWQgImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBbLXYgfCAtLXZlcmJvc2VdIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjEyCittc2dpZCAiIgorImdpdCByZW1vdGUgYWRkIFstdCA8YnJhbmNoPl0gWy1tIDxtYXN0ZXI+XSBbLWZdIFstLXRhZ3N8LS1uby10YWdzXSBbLS0iCisibWlycm9yPTxmZXRjaHxwdXNoPl0gPG5hbWU+IDx1cmw+IgorbXNnc3RyICIiCisiZ2l0IHJlbW90ZSBhZGQgWy10IDzliIbmlK8+XSBbLW0gPG1hc3Rlcj5dIFstZl0gWy0tdGFnc3wtLW5vLXRhZ3NdIFstLSIKKyJtaXJyb3I9PGZldGNofHB1c2g+XSA85ZCN56ewPiA8dXJsPiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxMyBidWlsdGluL3JlbW90ZS5jOjMyCittc2dpZCAiZ2l0IHJlbW90ZSByZW5hbWUgPG9sZD4gPG5ldz4iCittc2dzdHIgImdpdCByZW1vdGUgcmVuYW1lIDzml6flkI3np7A+IDzmlrDlkI3np7A+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE0IGJ1aWx0aW4vcmVtb3RlLmM6MzcKK21zZ2lkICJnaXQgcmVtb3RlIHJlbW92ZSA8bmFtZT4iCittc2dzdHIgImdpdCByZW1vdGUgcmVtb3ZlIDzlkI3np7A+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE1IGJ1aWx0aW4vcmVtb3RlLmM6NDIKK21zZ2lkICJnaXQgcmVtb3RlIHNldC1oZWFkIDxuYW1lPiAoLWEgfCAtZCB8IDxicmFuY2g+KSIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBzZXQtaGVhZCA85ZCN56ewPiAoLWEgfCAtZCB8IDzliIbmlK8+KSIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNgorbXNnaWQgImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSBzaG93IFstbl0gPG5hbWU+IgorbXNnc3RyICJnaXQgcmVtb3RlIFstdiB8IC0tdmVyYm9zZV0gc2hvdyBbLW5dIDzlkI3np7A+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE3Cittc2dpZCAiZ2l0IHJlbW90ZSBwcnVuZSBbLW4gfCAtLWRyeS1ydW5dIDxuYW1lPiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBwcnVuZSBbLW4gfCAtLWRyeS1ydW5dIDzlkI3np7A+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE4Cittc2dpZCAiIgorImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSB1cGRhdGUgWy1wIHwgLS1wcnVuZV0gWyg8Z3JvdXA+IHwgPHJlbW90ZT4pLi4uXSIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBbLXYgfCAtLXZlcmJvc2VdIHVwZGF0ZSBbLXAgfCAtLXBydW5lXSBbKDznu4Q+IHwgPOi/nOeoiz4pLi4uXSIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxOQorbXNnaWQgImdpdCByZW1vdGUgc2V0LWJyYW5jaGVzIFstLWFkZF0gPG5hbWU+IDxicmFuY2g+Li4uIgorbXNnc3RyICJnaXQgcmVtb3RlIHNldC1icmFuY2hlcyBbLS1hZGRdIDzlkI3np7A+IDzliIbmlK8+Li4uIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjIwIGJ1aWx0aW4vcmVtb3RlLmM6NjgKK21zZ2lkICJnaXQgcmVtb3RlIHNldC11cmwgWy0tcHVzaF0gPG5hbWU+IDxuZXd1cmw+IFs8b2xkdXJsPl0iCittc2dzdHIgImdpdCByZW1vdGUgc2V0LXVybCBbLS1wdXNoXSA85ZCN56ewPiA85paw55qE5Zyw5Z2APiBbPOaXp+eahOWcsOWdgD5dIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjIxIGJ1aWx0aW4vcmVtb3RlLmM6NjkKK21zZ2lkICJnaXQgcmVtb3RlIHNldC11cmwgLS1hZGQgPG5hbWU+IDxuZXd1cmw+IgorbXNnc3RyICJnaXQgcmVtb3RlIHNldC11cmwgLS1hZGQgPOWQjeensD4gPOaWsOeahOWcsOWdgD4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MjIgYnVpbHRpbi9yZW1vdGUuYzo3MAorbXNnaWQgImdpdCByZW1vdGUgc2V0LXVybCAtLWRlbGV0ZSA8bmFtZT4gPHVybD4iCittc2dzdHIgImdpdCByZW1vdGUgc2V0LXVybCAtLWRlbGV0ZSA85ZCN56ewPiA85Zyw5Z2APiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoyNworbXNnaWQgImdpdCByZW1vdGUgYWRkIFs8b3B0aW9ucz5dIDxuYW1lPiA8dXJsPiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBhZGQgWzzpgInpobk+XSA85ZCN56ewPiA85Zyw5Z2APiIKKworIzogYnVpbHRpbi9yZW1vdGUuYzo0NworbXNnaWQgImdpdCByZW1vdGUgc2V0LWJyYW5jaGVzIDxuYW1lPiA8YnJhbmNoPi4uLiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBzZXQtYnJhbmNoZXMgPOWQjeensD4gPOWIhuaUrz4uLi4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NDgKK21zZ2lkICJnaXQgcmVtb3RlIHNldC1icmFuY2hlcyAtLWFkZCA8bmFtZT4gPGJyYW5jaD4uLi4iCittc2dzdHIgImdpdCByZW1vdGUgc2V0LWJyYW5jaGVzIC0tYWRkIDzlkI3np7A+IDzliIbmlK8+Li4uIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjUzCittc2dpZCAiZ2l0IHJlbW90ZSBzaG93IFs8b3B0aW9ucz5dIDxuYW1lPiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBzaG93IFs86YCJ6aG5Pl0gPOWQjeensD4iCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6NTgKK21zZ2lkICJnaXQgcmVtb3RlIHBydW5lIFs8b3B0aW9ucz5dIDxuYW1lPiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBwcnVuZSBbPOmAiemhuT5dIDzlkI3np7A+IgorCisjOiBidWlsdGluL3JlbW90ZS5jOjYzCittc2dpZCAiZ2l0IHJlbW90ZSB1cGRhdGUgWzxvcHRpb25zPl0gWzxncm91cD4gfCA8cmVtb3RlPl0uLi4iCittc2dzdHIgImdpdCByZW1vdGUgdXBkYXRlIFs86YCJ6aG5Pl0gWzznu4Q+IHwgPOi/nOeoiz5dLi4uIgorCiAjOiBidWlsdGluL3JlbW90ZS5jOjk4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVwZGF0aW5nICVzIgpAQCAtNDA2NywxMyArNzY3Niw0MSBAQAogbXNnaWQgInVua25vd24gbWlycm9yIGFyZ3VtZW50OiAlcyIKIG1zZ3N0ciAi5pyq55+l55qE6ZWc5YOP5Y+C5pWw77yaJXMiCiAKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTYzCittc2dpZCAiZmV0Y2ggdGhlIHJlbW90ZSBicmFuY2hlcyIKK21zZ3N0ciAi5oqT5Y+W6L+c56iL55qE5YiG5pSvIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE2NQorbXNnaWQgImltcG9ydCBhbGwgdGFncyBhbmQgYXNzb2NpYXRlZCBvYmplY3RzIHdoZW4gZmV0Y2hpbmciCittc2dzdHIgIuaKk+WPluaXtuWvvOWFpeaJgOacieeahCB0YWdzIOWSjOWFs+iBlOWvueixoSIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNjgKK21zZ2lkICJvciBkbyBub3QgZmV0Y2ggYW55IHRhZyBhdCBhbGwgKC0tbm8tdGFncykiCittc2dzdHIgIuaIluS4jeaKk+WPluS7u+S9lSB0YWfvvIgtLW5vLXRhZ3PvvIkiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTcwCittc2dpZCAiYnJhbmNoKGVzKSB0byB0cmFjayIKK21zZ3N0ciAi6Lef6Liq55qE5YiG5pSvIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE3MQorbXNnaWQgIm1hc3RlciBicmFuY2giCittc2dzdHIgIuS4u+e6v+WIhuaUryIKKworIzogYnVpbHRpbi9yZW1vdGUuYzoxNzIKK21zZ2lkICJwdXNofGZldGNoIgorbXNnc3RyICJwdXNofGZldGNoIgorCisjOiBidWlsdGluL3JlbW90ZS5jOjE3MworbXNnaWQgInNldCB1cCByZW1vdGUgYXMgYSBtaXJyb3IgdG8gcHVzaCB0byBvciBmZXRjaCBmcm9tIgorbXNnc3RyICLmiorov5znqIvorr7nva7kuLrnlKjku6XmjqjpgIHmiJbmipPlj5bnmoTplZzlg48iCisKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTg1CiBtc2dpZCAic3BlY2lmeWluZyBhIG1hc3RlciBicmFuY2ggbWFrZXMgbm8gc2Vuc2Ugd2l0aCAtLW1pcnJvciIKIG1zZ3N0ciAi5oyH5a6a5LiA5LiqIG1hc3RlciDliIbmlK/lubbkvb/nlKggLS1taXJyb3Ig6YCJ6aG55rKh5pyJ5oSP5LmJIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjE4NwogbXNnaWQgInNwZWNpZnlpbmcgYnJhbmNoZXMgdG8gdHJhY2sgbWFrZXMgc2Vuc2Ugb25seSB3aXRoIGZldGNoIG1pcnJvcnMiCi1tc2dzdHIgIuaMh+Wumuimgei3n+i4queahOWIhuaUr+WPquWcqOS4juiOt+WPlumVnOWDj+WFseeUqOaJjeacieaEj+S5iSIKK21zZ3N0ciAi5oyH5a6a6KaB6Lef6Liq55qE5YiG5pSv5Y+q5Zyo5LiO6I635Y+W6ZWc5YOP5ZCM5pe25L2/55So5omN5pyJ5oSP5LmJIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjE5NSBidWlsdGluL3JlbW90ZS5jOjY0NgogIywgYy1mb3JtYXQKQEAgLTQyNTksNiArNzg5NiwxMCBAQAogbXNnaWQgIiAgICAlLSpzIHB1c2hlcyB0byAlcyIKIG1zZ3N0ciAiICAgICUtKnMg5o6o6YCB6IezICVzIgogCisjOiBidWlsdGluL3JlbW90ZS5jOjEwOTEKK21zZ2lkICJkbyBub3QgcXVlcnkgcmVtb3RlcyIKK21zZ3N0ciAi5LiN5p+l6K+i6L+c56iLIgorCiAjOiBidWlsdGluL3JlbW90ZS5jOjExMTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiKiByZW1vdGUgJXMiCkBAIC00MzE4LDYgKzc5NTksMTQgQEAKIG1zZ3N0clswXSAiICDkuLogJ2dpdCBwdXNoJyDphY3nva7nmoTmnKzlnLDlvJXnlKglc++8miIKIG1zZ3N0clsxXSAiICDkuLogJ2dpdCBwdXNoJyDphY3nva7nmoTmnKzlnLDlvJXnlKglc++8miIKIAorIzogYnVpbHRpbi9yZW1vdGUuYzoxMTk5Cittc2dpZCAic2V0IHJlZnMvcmVtb3Rlcy88bmFtZT4vSEVBRCBhY2NvcmRpbmcgdG8gcmVtb3RlIgorbXNnc3RyICLmoLnmja7ov5znqIvorr7nva4gcmVmcy9yZW1vdGVzLzzlkI3np7A+L0hFQUQiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTIwMQorbXNnaWQgImRlbGV0ZSByZWZzL3JlbW90ZXMvPG5hbWU+L0hFQUQiCittc2dzdHIgIuWIoOmZpCByZWZzL3JlbW90ZXMvPOWQjeensD4vSEVBRCIKKwogIzogYnVpbHRpbi9yZW1vdGUuYzoxMjE2CiBtc2dpZCAiQ2Fubm90IGRldGVybWluZSByZW1vdGUgSEVBRCIKIG1zZ3N0ciAi5peg5rOV56Gu5a6a6L+c56iLIEhFQUQiCkBAIC00MzQ1LDEzICs3OTk0LDEzIEBACiAjOiBidWlsdGluL3JlbW90ZS5jOjEyNzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiICVzIHdpbGwgYmVjb21lIGRhbmdsaW5nISIKLW1zZ3N0ciAiICVzIOWwhuaIkOS4uuaCrOepuueKtuaAge+8gSIKK21zZ3N0ciAiICVzIOWwhuaIkOS4uuaRh+aRhueKtuaAge+8gSIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8CiAjOiBidWlsdGluL3JlbW90ZS5jOjEyNzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiICVzIGhhcyBiZWNvbWUgZGFuZ2xpbmchIgotbXNnc3RyICIgJXMg5bey5oiQ5Li65oKs56m654q25oCB77yBIgorbXNnc3RyICIgJXMg5bey5oiQ5Li65pGH5pGG54q25oCB77yBIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjEyODEKICMsIGMtZm9ybWF0CkBAIC00MzczLDE1ICs4MDIyLDM1IEBACiBtc2dpZCAiICogW3BydW5lZF0gJXMiCiBtc2dzdHIgIiAqIFvlt7LliKDpmaRdICVzIgogCisjOiBidWlsdGluL3JlbW90ZS5jOjEzMjEKK21zZ2lkICJwcnVuZSByZW1vdGVzIGFmdGVyIGZldGNoaW5nIgorbXNnc3RyICLmipPlj5blkI7muIXpmaTov5znqIsiCisKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTM4NyBidWlsdGluL3JlbW90ZS5jOjE0NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gc3VjaCByZW1vdGUgJyVzJyIKIG1zZ3N0ciAi5rKh5pyJ5q2k6L+c56iLICclcyciCiAKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQwNworbXNnaWQgImFkZCBicmFuY2giCittc2dzdHIgIua3u+WKoOWIhuaUryIKKwogIzogYnVpbHRpbi9yZW1vdGUuYzoxNDE0CiBtc2dpZCAibm8gcmVtb3RlIHNwZWNpZmllZCIKIG1zZ3N0ciAi5pyq5oyH5a6a6L+c56iLIgogCisjOiBidWlsdGluL3JlbW90ZS5jOjE0MzYKK21zZ2lkICJtYW5pcHVsYXRlIHB1c2ggVVJMcyIKK21zZ3N0ciAi5pON5L2c5o6o6YCBIFVSTFMiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQzOAorbXNnaWQgImFkZCBVUkwiCittc2dzdHIgIua3u+WKoCBVUkwiCisKKyM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQ0MAorbXNnaWQgImRlbGV0ZSBVUkxzIgorbXNnc3RyICLliKDpmaQgVVJMUyIKKwogIzogYnVpbHRpbi9yZW1vdGUuYzoxNDQ3CiBtc2dpZCAiLS1hZGQgLS1kZWxldGUgZG9lc24ndCBtYWtlIHNlbnNlIgogbXNnc3RyICItLWFkZCAtLWRlbGV0ZSDml6DmhI/kuYkiCkBAIC00NDAwLDYgKzgwNjksNTUgQEAKIG1zZ2lkICJXaWxsIG5vdCBkZWxldGUgYWxsIG5vbi1wdXNoIFVSTHMiCiBtc2dzdHIgIuWwhuS4jeS8muWIoOmZpOaJgOaciemdnuaOqOmAgVVSTOWcsOWdgCIKIAorIzogYnVpbHRpbi9yZW1vdGUuYzoxNTY5Cittc2dpZCAiYmUgdmVyYm9zZTsgbXVzdCBiZSBwbGFjZWQgYmVmb3JlIGEgc3ViY29tbWFuZCIKK21zZ3N0ciAi5YaX6ZW/6L6T5Ye677yb5b+F6aG7572u5LqO5a2Q5ZG95Luk5LmL5YmNIgorCisjOiBidWlsdGluL3JlcGxhY2UuYzoxNworbXNnaWQgImdpdCByZXBsYWNlIFstZl0gPG9iamVjdD4gPHJlcGxhY2VtZW50PiIKK21zZ3N0ciAiZ2l0IHJlcGxhY2UgWy1mXSA85a+56LGhPiA85pu/5o2i54mpPiIKKworIzogYnVpbHRpbi9yZXBsYWNlLmM6MTgKK21zZ2lkICJnaXQgcmVwbGFjZSAtZCA8b2JqZWN0Pi4uLiIKK21zZ3N0ciAiZ2l0IHJlcGxhY2UgLWQgPOWvueixoT4uLi4iCisKKyM6IGJ1aWx0aW4vcmVwbGFjZS5jOjE5Cittc2dpZCAiZ2l0IHJlcGxhY2UgLWwgWzxwYXR0ZXJuPl0iCittc2dzdHIgImdpdCByZXBsYWNlIC1sIFs85qih5byPPl0iCisKKyM6IGJ1aWx0aW4vcmVwbGFjZS5jOjEyMQorbXNnaWQgImxpc3QgcmVwbGFjZSByZWZzIgorbXNnc3RyICLliJflh7rmm7/mjaLnmoTlvJXnlKgiCisKKyM6IGJ1aWx0aW4vcmVwbGFjZS5jOjEyMgorbXNnaWQgImRlbGV0ZSByZXBsYWNlIHJlZnMiCittc2dzdHIgIuWIoOmZpOabv+aNoueahOW8leeUqCIKKworIzogYnVpbHRpbi9yZXBsYWNlLmM6MTIzCittc2dpZCAicmVwbGFjZSB0aGUgcmVmIGlmIGl0IGV4aXN0cyIKK21zZ3N0ciAi5aaC5p6c5a2Y5Zyo5YiZ5pu/5o2i5byV55SoIgorCisjOiBidWlsdGluL3JlcmVyZS5jOjExCittc2dpZCAiZ2l0IHJlcmVyZSBbY2xlYXIgfCBmb3JnZXQgcGF0aC4uLiB8IHN0YXR1cyB8IHJlbWFpbmluZyB8IGRpZmYgfCBnY10iCittc2dzdHIgImdpdCByZXJlcmUgW2NsZWFyIHwgZm9yZ2V0IHBhdGguLi4gfCBzdGF0dXMgfCByZW1haW5pbmcgfCBkaWZmIHwgZ2NdIgorCisjOiBidWlsdGluL3JlcmVyZS5jOjU2Cittc2dpZCAicmVnaXN0ZXIgY2xlYW4gcmVzb2x1dGlvbnMgaW4gaW5kZXgiCittc2dzdHIgIuWcqOe0ouW8leS4reazqOWGjOW5suWHgOeahOino+WGs+aWueahiCIKKworIzogYnVpbHRpbi9yZXNldC5jOjI1Cittc2dpZCAiIgorImdpdCByZXNldCBbLS1taXhlZCB8IC0tc29mdCB8IC0taGFyZCB8IC0tbWVyZ2UgfCAtLWtlZXBdIFstcV0gWzxjb21taXQ+XSIKK21zZ3N0ciAiZ2l0IHJlc2V0IFstLW1peGVkIHwgLS1zb2Z0IHwgLS1oYXJkIHwgLS1tZXJnZSB8IC0ta2VlcF0gWy1xXSBbPOaPkOS6pD5dIgorCisjOiBidWlsdGluL3Jlc2V0LmM6MjYKK21zZ2lkICJnaXQgcmVzZXQgWy1xXSA8dHJlZS1pc2g+IFstLV0gPHBhdGhzPi4uLiIKK21zZ3N0ciAiZ2l0IHJlc2V0IFstcV0gPOagkeaIluaPkOS6pD4gWy0tXSA86Lev5b6EPi4uLiIKKworIzogYnVpbHRpbi9yZXNldC5jOjI3Cittc2dpZCAiZ2l0IHJlc2V0IC0tcGF0Y2ggWzx0cmVlLWlzaD5dIFstLV0gWzxwYXRocz4uLi5dIgorbXNnc3RyICJnaXQgcmVzZXQgLS1wYXRjaCBbPOagkeaIluaPkOS6pD5dIFstLV0gWzzot6/lvoQ+Li4uXSIKKwogIzogYnVpbHRpbi9yZXNldC5jOjMzCiBtc2dpZCAibWl4ZWQiCiBtc2dzdHIgIua3t+adgiIKQEAgLTQ0MjAsOTAgKzgxMzgsMjI3IEBACiBtc2dpZCAia2VlcCIKIG1zZ3N0ciAi5L+d5oyBIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6NzcKKyM6IGJ1aWx0aW4vcmVzZXQuYzo3MwogbXNnaWQgIllvdSBkbyBub3QgaGF2ZSBhIHZhbGlkIEhFQUQuIgogbXNnc3RyICLmgqjmsqHmnInkuIDkuKrmnInmlYjnmoQgSEVBROOAgiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjc5CisjOiBidWlsdGluL3Jlc2V0LmM6NzUKIG1zZ2lkICJGYWlsZWQgdG8gZmluZCB0cmVlIG9mIEhFQUQuIgogbXNnc3RyICLml6Dms5Xmib7liLAgSEVBRCDmjIflkJHnmoTmoJHjgIIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzo4NQorIzogYnVpbHRpbi9yZXNldC5jOjgxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBmaW5kIHRyZWUgb2YgJXMuIgogbXNnc3RyICLml6Dms5Xmib7liLAgJXMg5oyH5ZCR55qE5qCR44CCIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6OTYKLW1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgbmV3IGluZGV4IGZpbGUuIgotbXNnc3RyICLkuI3og73lhpnlhaXmlrDnmoTntKLlvJXmlofku7bjgIIiCi0KLSM6IGJ1aWx0aW4vcmVzZXQuYzoxMDYKKyM6IGJ1aWx0aW4vcmVzZXQuYzo5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJIRUFEIGlzIG5vdyBhdCAlcyIKIG1zZ3N0ciAiSEVBRCDnjrDlnKjkvY3kuo4gJXMiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoxMzAKLW1zZ2lkICJDb3VsZCBub3QgcmVhZCBpbmRleCIKLW1zZ3N0ciAi5LiN6IO96K+75Y+W57Si5byVIgotCi0jOiBidWlsdGluL3Jlc2V0LmM6MTMzCi1tc2dpZCAiVW5zdGFnZWQgY2hhbmdlcyBhZnRlciByZXNldDoiCi1tc2dzdHIgIumHjee9ruWQjuaSpOWHuuaaguWtmOWMuueahOWPmOabtO+8miIKLQogIyAg6K+R6ICF77ya5rGJ5a2X5LmL6Ze05peg56m65qC877yM5pWF5Yig6ZmkJXPliY3lkI7nqbrmoLwKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyMjMKKyM6IGJ1aWx0aW4vcmVzZXQuYzoxNjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGRvIGEgJXMgcmVzZXQgaW4gdGhlIG1pZGRsZSBvZiBhIG1lcmdlLiIKIG1zZ3N0ciAi5Zyo5ZCI5bm26L+H56iL5Lit5LiN6IO95YGaJXPph43nva7mk43kvZzjgIIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyOTcKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNDgKK21zZ2lkICJiZSBxdWlldCwgb25seSByZXBvcnQgZXJyb3JzIgorbXNnc3RyICLlronpnZnmqKHlvI/vvIzlj6rmiqXlkYrplJnor68iCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTAKK21zZ2lkICJyZXNldCBIRUFEIGFuZCBpbmRleCIKK21zZ3N0ciAi6YeN572uIEhFQUQg5ZKM57Si5byVIgorCisjOiBidWlsdGluL3Jlc2V0LmM6MjUxCittc2dpZCAicmVzZXQgb25seSBIRUFEIgorbXNnc3RyICLlj6rph43nva4gSEVBRCIKKworIzogYnVpbHRpbi9yZXNldC5jOjI1MyBidWlsdGluL3Jlc2V0LmM6MjU1Cittc2dpZCAicmVzZXQgSEVBRCwgaW5kZXggYW5kIHdvcmtpbmcgdHJlZSIKK21zZ3N0ciAi6YeN572uIEhFQUTjgIHntKLlvJXlkozlt6XkvZzljLoiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTcKK21zZ2lkICJyZXNldCBIRUFEIGJ1dCBrZWVwIGxvY2FsIGNoYW5nZXMiCittc2dzdHIgIumHjee9riBIRUFEIOS9huS/neWtmOacrOWcsOWPmOabtCIKKworIzogYnVpbHRpbi9yZXNldC5jOjI3NQorIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgcmV2aXNpb24uIgorbXNnc3RyICLml6Dms5XlsIYgJyVzJyDop6PmnpDkuLrkuIDkuKrmnInmlYjnmoTniYjmnKzjgIIiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNzggYnVpbHRpbi9yZXNldC5jOjI4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcycuIgogbXNnc3RyICLkuI3og73op6PmnpDlr7nosaEgJyVzJ+OAgiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMwMgotbXNnaWQgIi0tcGF0Y2ggaXMgaW5jb21wYXRpYmxlIHdpdGggLS17aGFyZCxtaXhlZCxzb2Z0fSIKLW1zZ3N0ciAiLS1wYXRjaCDkuI4gLS17aGFyZCxtaXhlZCxzb2Z0fSDkuI3lhbzlrrkiCisjOiBidWlsdGluL3Jlc2V0LmM6MjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZXNvbHZlICclcycgYXMgYSB2YWxpZCB0cmVlLiIKK21zZ3N0ciAi5peg5rOV5bCGICclcycg6Kej5p6Q5Li65LiA5Liq5pyJ5pWI55qE5qCR5a+56LGh44CCIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzExCisjOiBidWlsdGluL3Jlc2V0LmM6MjkyCittc2dpZCAiLS1wYXRjaCBpcyBpbmNvbXBhdGlibGUgd2l0aCAtLXtoYXJkLG1peGVkLHNvZnR9IgorbXNnc3RyICItLXBhdGNoIOS4jiAtLXtoYXJk44CBbWl4ZWTjgIFzb2Z0fSDpgInpobnkuI3lhbzlrrkiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMDEKIG1zZ2lkICItLW1peGVkIHdpdGggcGF0aHMgaXMgZGVwcmVjYXRlZDsgdXNlICdnaXQgcmVzZXQgLS0gPHBhdGhzPicgaW5zdGVhZC4iCi1tc2dzdHIgIi0tbWl4ZWQg5bim6Lev5b6E5bey5byD55So77yM5Luj5LmL5LulICdnaXQgcmVzZXQgLS0gPHBhdGhzPifjgIIiCittc2dzdHIgIi0tbWl4ZWQg5bim6Lev5b6E5bey5byD55So77yM6ICM5piv55SoICdnaXQgcmVzZXQgLS0gPHBhdGhzPifjgIIiCiAKICMgIOivkeiAhe+8muaxieWtl+S5i+mXtOaXoOepuuagvO+8jOaVheWIoOmZpCVz5YmN5ZCO56m65qC8Ci0jOiBidWlsdGluL3Jlc2V0LmM6MzEzCisjOiBidWlsdGluL3Jlc2V0LmM6MzAzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBkbyAlcyByZXNldCB3aXRoIHBhdGhzLiIKIG1zZ3N0ciAi5LiN6IO95bim6Lev5b6E6L+b6KGMJXPph43nva7jgIIiCiAKICMgIOivkeiAhe+8muaxieWtl+S5i+mXtOaXoOepuuagvO+8jOaVheWIoOmZpCVz5YmN5ZCO56m65qC8Ci0jOiBidWlsdGluL3Jlc2V0LmM6MzI1CisjOiBidWlsdGluL3Jlc2V0LmM6MzEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIHJlc2V0IGlzIG5vdCBhbGxvd2VkIGluIGEgYmFyZSByZXBvc2l0b3J5IgogbXNnc3RyICLkuI3og73lr7noo7jniYjmnKzlupPov5vooYwlc+mHjee9riIKIAotIzogYnVpbHRpbi9yZXNldC5jOjM0MQorIzogYnVpbHRpbi9yZXNldC5jOjMzMwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVzZXQgaW5kZXggZmlsZSB0byByZXZpc2lvbiAnJXMnLiIKIG1zZ3N0ciAi5LiN6IO96YeN572u57Si5byV5paH5Lu26Iez54mI5pysICclcyfjgIIiCiAKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMzkKK21zZ2lkICJVbnN0YWdlZCBjaGFuZ2VzIGFmdGVyIHJlc2V0OiIKK21zZ3N0ciAi6YeN572u5ZCO5pKk5Ye65pqC5a2Y5Yy655qE5Y+Y5pu077yaIgorCisjOiBidWlsdGluL3Jlc2V0LmM6MzQ0Cittc2dpZCAiQ291bGQgbm90IHdyaXRlIG5ldyBpbmRleCBmaWxlLiIKK21zZ3N0ciAi5LiN6IO95YaZ5YWl5paw55qE57Si5byV5paH5Lu244CCIgorCisjOiBidWlsdGluL3Jldi1wYXJzZS5jOjMzOQorbXNnaWQgImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCBbb3B0aW9uc10gLS0gWzxhcmdzPi4uLl0iCittc2dzdHIgImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCBb6YCJ6aG5XSAtLSBbPOWPguaVsD4uLi5dIgorCisjOiBidWlsdGluL3Jldi1wYXJzZS5jOjM0NAorbXNnaWQgImtlZXAgdGhlIGAtLWAgcGFzc2VkIGFzIGFuIGFyZyIKK21zZ3N0ciAi5L+d5oyBIGAtLWAg5L2c5Li65LiA5Liq5Y+C5pWw5Lyg6YCSIgorCisjOiBidWlsdGluL3Jldi1wYXJzZS5jOjM0NgorbXNnaWQgInN0b3AgcGFyc2luZyBhZnRlciB0aGUgZmlyc3Qgbm9uLW9wdGlvbiBhcmd1bWVudCIKK21zZ3N0ciAi6YGH5Yiw56ys5LiA5Liq6Z2e6YCJ6aG55Y+C5pWw5ZCO5YGc5q2i6Kej5p6QIgorCisjOiBidWlsdGluL3Jldi1wYXJzZS5jOjQ2NAorbXNnaWQgIiIKKyJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgW29wdGlvbnNdIC0tIFs8YXJncz4uLi5dXG4iCisiICAgb3I6IGdpdCByZXYtcGFyc2UgLS1zcS1xdW90ZSBbPGFyZz4uLi5dXG4iCisiICAgb3I6IGdpdCByZXYtcGFyc2UgW29wdGlvbnNdIFs8YXJnPi4uLl1cbiIKKyJcbiIKKyJSdW4gXCJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgLWhcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgZmlyc3QgdXNhZ2UuIgorbXNnc3RyICIiCisiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IFvpgInpobldIC0tIFs85Y+C5pWwPi4uLl1cbiIKKyIgICDmiJbogIXvvJpnaXQgcmV2LXBhcnNlIC0tc3EtcXVvdGUgWzzpgInpobk+Li4uXVxuIgorIiAgIOaIluiAhe+8mmdpdCByZXYtcGFyc2UgW29wdGlvbnNdIFs86YCJ6aG5Pi4uLl1cbiIKKyJcbiIKKyLliJ3mrKHkvb/nlKjml7bmiafooYwgXCJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgLWhcIiDmnaXojrflvpfmm7TlpJrkv6Hmga/jgIIiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjIKK21zZ2lkICJnaXQgcmV2ZXJ0IFtvcHRpb25zXSA8Y29tbWl0LWlzaD4uLi4iCittc2dzdHIgImdpdCByZXZlcnQgW+mAiemhuV0gPOaPkOS6pOWPtz4uLi4iCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjMKK21zZ2lkICJnaXQgcmV2ZXJ0IDxzdWJjb21tYW5kPiIKK21zZ3N0ciAiZ2l0IHJldmVydCA85a2Q5ZG95LukPiIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoyOAorbXNnaWQgImdpdCBjaGVycnktcGljayBbb3B0aW9uc10gPGNvbW1pdC1pc2g+Li4uIgorbXNnc3RyICJnaXQgY2hlcnJ5LXBpY2sgW+mAiemhuV0gPOaPkOS6pOWPtz4uLi4iCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjkKK21zZ2lkICJnaXQgY2hlcnJ5LXBpY2sgPHN1YmNvbW1hbmQ+IgorbXNnc3RyICJnaXQgY2hlcnJ5LXBpY2sgPOWtkOWRveS7pD4iCisKICM6IGJ1aWx0aW4vcmV2ZXJ0LmM6NzAgYnVpbHRpbi9yZXZlcnQuYzo5MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogJXMgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIKLW1zZ3N0ciAiJXPvvJolcyDkuI3og73lkowgJXMg5YWx55SoIgorbXNnc3RyICIlc++8miVzIOS4jeiDveWSjCAlcyDlkIzml7bkvb/nlKgiCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTMxCisjOiBidWlsdGluL3JldmVydC5jOjEwMworbXNnaWQgImVuZCByZXZlcnQgb3IgY2hlcnJ5LXBpY2sgc2VxdWVuY2UiCittc2dzdHIgIue7iOatouWPjei9rOaIluaLo+mAieaTjeS9nCIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMDQKK21zZ2lkICJyZXN1bWUgcmV2ZXJ0IG9yIGNoZXJyeS1waWNrIHNlcXVlbmNlIgorbXNnc3RyICLnu6fnu63lj43ovazmiJbmi6PpgInmk43kvZwiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA1Cittc2dpZCAiY2FuY2VsIHJldmVydCBvciBjaGVycnktcGljayBzZXF1ZW5jZSIKK21zZ3N0ciAi5Y+W5raI5Y+N6L2s5oiW5ouj6YCJ5pON5L2cIgorCisjOiBidWlsdGluL3JldmVydC5jOjEwNgorbXNnaWQgImRvbid0IGF1dG9tYXRpY2FsbHkgY29tbWl0IgorbXNnc3RyICLkuI3opoHoh6rliqjmj5DkuqQiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA3Cittc2dpZCAiZWRpdCB0aGUgY29tbWl0IG1lc3NhZ2UiCittc2dzdHIgIue8lui+keaPkOS6pOivtOaYjiIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMTAKK21zZ2lkICJwYXJlbnQgbnVtYmVyIgorbXNnc3RyICLniLbnvJblj7ciCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTEyCittc2dpZCAibWVyZ2Ugc3RyYXRlZ3kiCittc2dzdHIgIuWQiOW5tuetlueVpSIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMTMKK21zZ2lkICJvcHRpb24iCittc2dzdHIgIumAiemhuSIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMTQKK21zZ2lkICJvcHRpb24gZm9yIG1lcmdlIHN0cmF0ZWd5IgorbXNnc3RyICLlkIjlubbnrZbnlaXnmoTpgInpobkiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI1Cittc2dpZCAiYXBwZW5kIGNvbW1pdCBuYW1lIgorbXNnc3RyICLov73liqDmj5DkuqTlkI3np7AiCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI2Cittc2dpZCAiYWxsb3cgZmFzdC1mb3J3YXJkIgorbXNnc3RyICLlhYHorrjlv6vov5vlvI8iCisKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI3Cittc2dpZCAicHJlc2VydmUgaW5pdGlhbGx5IGVtcHR5IGNvbW1pdHMiCittc2dzdHIgIuS/neeVmeWIneWni+WMlueahOepuuaPkOS6pCIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMjgKK21zZ2lkICJhbGxvdyBjb21taXRzIHdpdGggZW1wdHkgbWVzc2FnZXMiCittc2dzdHIgIuWFgeiuuOaPkOS6pOivtOaYjuS4uuepuiIKKworIzogYnVpbHRpbi9yZXZlcnQuYzoxMjkKK21zZ2lkICJrZWVwIHJlZHVuZGFudCwgZW1wdHkgY29tbWl0cyIKK21zZ3N0ciAi5L+d5oyB5aSa5L2Z55qE44CB56m655qE5o+Q5LqkIgorCisjOiBidWlsdGluL3JldmVydC5jOjEzMwogbXNnaWQgInByb2dyYW0gZXJyb3IiCiBtc2dzdHIgIueoi+W6j+mUmeivryIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoyMjEKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjIzCiBtc2dpZCAicmV2ZXJ0IGZhaWxlZCIKIG1zZ3N0ciAi6L+Y5Y6f5aSx6LSlIgogCi0jOiBidWlsdGluL3JldmVydC5jOjIzNgorIzogYnVpbHRpbi9yZXZlcnQuYzoyMzgKIG1zZ2lkICJjaGVycnktcGljayBmYWlsZWQiCiBtc2dzdHIgIuaLo+mAieWksei0pSIKIAotIzogYnVpbHRpbi9ybS5jOjEwOQorIzogYnVpbHRpbi9ybS5jOjE1Cittc2dpZCAiZ2l0IHJtIFtvcHRpb25zXSBbLS1dIDxmaWxlPi4uLiIKK21zZ3N0ciAiZ2l0IHJtIFvpgInpobldIFstLV0gPOaWh+S7tj4uLi4iCisKKyM6IGJ1aWx0aW4vcm0uYzo2NCBidWlsdGluL3JtLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJzdWJtb2R1bGUgJyVzJyAob3Igb25lIG9mIGl0cyBuZXN0ZWQgc3VibW9kdWxlcykgdXNlcyBhIC5naXQgZGlyZWN0b3J5XG4iCisiKHVzZSAncm0gLXJmJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIGl0IGluY2x1ZGluZyBhbGwgb2YgaXRzIGhpc3RvcnkpIgorbXNnc3RyICIiCisi5a2Q5qih57uEICclcyfvvIjmiJbogIXlroPnmoTkuIDkuKrltYzlpZflrZDmqKHnu4TvvInkvb/nlKjkuIDkuKogLmdpdCDnm67lvZVcbiIKKyLvvIjkvb/nlKggJ3JtIC1yZicg5ZG95Luk5aaC5p6c5oKo55yf55qE5oOz5Yig6Zmk5a6D5Y+K5YW25YWo6YOo5Y6G5Y+y77yJIgorCisjOiBidWlsdGluL3JtLmM6MTc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnIGhhcyBzdGFnZWQgY29udGVudCBkaWZmZXJlbnQgZnJvbSBib3RoIHRoZSBmaWxlIGFuZCB0aGUgSEVBRFxuIgpAQCAtNDUxMiw3ICs4MzY3LDcgQEAKICInJXMnIOaaguWtmOeahOWGheWuueWSjOW3peS9nOWMuuWPiiBIRUFEIOS4reeahOmDveS4jeS4gOagt1xuIgogIu+8iOS9v+eUqCAtZiDlvLrliLbliKDpmaTvvIkiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxMTUKKyM6IGJ1aWx0aW4vcm0uYzoxODAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgaGFzIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleFxuIgpAQCAtNDUyMSw3ICs4Mzc2LDcgQEAKICInJXMnIOacieWPmOabtOW3suaaguWtmOiHs+e0ouW8leS4rVxuIgogIu+8iOS9v+eUqCAtLWNhY2hlZCDkv53lrZjmlofku7bvvIzmiJbnlKggLWYg5by65Yi25Yig6Zmk77yJIgogCi0jOiBidWlsdGluL3JtLmM6MTE5CisjOiBidWlsdGluL3JtLmM6MTkxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnIGhhcyBsb2NhbCBtb2RpZmljYXRpb25zXG4iCkBAIC00NTMwLDIxICs4Mzg1LDIzOCBAQAogIiclcycg5pyJ5pys5Zyw5L+u5pS5XG4iCiAi77yI5L2/55SoIC0tY2FjaGVkIOS/neWtmOaWh+S7tu+8jOaIlueUqCAtZiDlvLrliLbliKDpmaTvvIkiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxOTQKKyM6IGJ1aWx0aW4vcm0uYzoyMDcKK21zZ2lkICJkbyBub3QgbGlzdCByZW1vdmVkIGZpbGVzIgorbXNnc3RyICLkuI3liJflh7rliKDpmaTnmoTmlofku7YiCisKKyM6IGJ1aWx0aW4vcm0uYzoyMDgKK21zZ2lkICJvbmx5IHJlbW92ZSBmcm9tIHRoZSBpbmRleCIKK21zZ3N0ciAi5Y+q5LuO57Si5byV5Yy65Yig6ZmkIgorCisjOiBidWlsdGluL3JtLmM6MjA5Cittc2dpZCAib3ZlcnJpZGUgdGhlIHVwLXRvLWRhdGUgY2hlY2siCittc2dzdHIgIuW/veeVpeaWh+S7tuabtOaWsOeKtuaAgeajgOafpSIKKworIzogYnVpbHRpbi9ybS5jOjIxMAorbXNnaWQgImFsbG93IHJlY3Vyc2l2ZSByZW1vdmFsIgorbXNnc3RyICLlhYHorrjpgJLlvZLliKDpmaQiCisKKyM6IGJ1aWx0aW4vcm0uYzoyMTIKK21zZ2lkICJleGl0IHdpdGggYSB6ZXJvIHN0YXR1cyBldmVuIGlmIG5vdGhpbmcgbWF0Y2hlZCIKK21zZ3N0ciAi5Y2z5L2/5rKh5pyJ5Yy56YWN77yM5Lmf5Lul6Zu254q25oCB6YCA5Ye6IgorCisjOiBidWlsdGluL3JtLmM6MjgzCiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vdCByZW1vdmluZyAnJXMnIHJlY3Vyc2l2ZWx5IHdpdGhvdXQgLXIiCiBtc2dzdHIgIuacquaPkOS+myAtciDpgInpobnkuI3kvJrpgJLlvZLliKDpmaQgJyVzJyIKIAotIzogYnVpbHRpbi9ybS5jOjIzMAorIzogYnVpbHRpbi9ybS5jOjMyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgcm06IHVuYWJsZSB0byByZW1vdmUgJXMiCiBtc2dzdHIgImdpdCBybe+8muS4jeiDveWIoOmZpCAlcyIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjE1NworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjEzCittc2dpZCAiZ2l0IHNob3J0bG9nIFs8b3B0aW9ucz5dIFs8cmV2aXNpb24gcmFuZ2U+XSBbWy0tXSBbPHBhdGg+Li4uXV0iCittc2dzdHIgImdpdCBzaG9ydGxvZyBbPOmAiemhuT5dIFs854mI5pys6IyD5Zu0Pl0gW1stLV0gWzzot6/lvoQ+Li4uXV0iCisKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWlzc2luZyBhdXRob3I6ICVzIgogbXNnc3RyICLnvLrlsJHkvZzogIXvvJolcyIKIAorIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIyNworbXNnaWQgInNvcnQgb3V0cHV0IGFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIGNvbW1pdHMgcGVyIGF1dGhvciIKK21zZ3N0ciAi5qC55o2u5q+P5Liq5L2c6ICF55qE5o+Q5Lqk5pWw6YeP5o6S5bqPIgorCisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjI5Cittc2dpZCAiU3VwcHJlc3MgY29tbWl0IGRlc2NyaXB0aW9ucywgb25seSBwcm92aWRlcyBjb21taXQgY291bnQiCittc2dzdHIgIumakOiXj+aPkOS6pOivtOaYju+8jOWPquaPkOS+m+aPkOS6pOaVsOmHjyIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMQorbXNnaWQgIlNob3cgdGhlIGVtYWlsIGFkZHJlc3Mgb2YgZWFjaCBhdXRob3IiCittc2dzdHIgIuaYvuekuuavj+S4quS9nOiAheeahOeUteWtkOmCruS7tuWcsOWdgCIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMgorbXNnaWQgIndbLGkxWyxpMl1dIgorbXNnc3RyICJ3WyxpMVssaTJdXSIKKworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMworbXNnaWQgIkxpbmV3cmFwIG91dHB1dCIKK21zZ3N0ciAi5oqY6KGM6L6T5Ye6IgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6OQorbXNnaWQgIiIKKyJnaXQgc2hvdy1icmFuY2ggWy1hfC0tYWxsXSBbLXJ8LS1yZW1vdGVzXSBbLS10b3BvLW9yZGVyIHwgLS1kYXRlLW9yZGVyXSBbLS0iCisiY3VycmVudF0gWy0tY29sb3JbPTx3aGVuPl0gfCAtLW5vLWNvbG9yXSBbLS1zcGFyc2VdIFstLW1vcmU9PG4+IHwgLS1saXN0IHwgLS0iCisiaW5kZXBlbmRlbnQgfCAtLW1lcmdlLWJhc2VdIFstLW5vLW5hbWUgfCAtLXNoYTEtbmFtZV0gWy0tdG9waWNzXSBbKDxyZXY+IHwgIgorIjxnbG9iPikuLi5dIgorbXNnc3RyICIiCisiZ2l0IHNob3ctYnJhbmNoIFstYXwtLWFsbF0gWy1yfC0tcmVtb3Rlc10gWy0tdG9wby1vcmRlciB8IC0tZGF0ZS1vcmRlcl0gWy0tIgorImN1cnJlbnRdIFstLWNvbG9yWz08d2hlbj5dIHwgLS1uby1jb2xvcl0gWy0tc3BhcnNlXSBbLS1tb3JlPTxuPiB8IC0tbGlzdCB8IC0tIgorImluZGVwZW5kZW50IHwgLS1tZXJnZS1iYXNlXSBbLS1uby1uYW1lIHwgLS1zaGExLW5hbWVdIFstLXRvcGljc10gWyg8cmV2PiB8ICIKKyI8Z2xvYj4pLi4uXSIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjEwCittc2dpZCAiZ2l0IHNob3ctYnJhbmNoICgtZ3wtLXJlZmxvZylbPTxuPlssPGJhc2U+XV0gWy0tbGlzdF0gWzxyZWY+XSIKK21zZ3N0ciAiZ2l0IHNob3ctYnJhbmNoICgtZ3wtLXJlZmxvZylbPTxuPlssPGJhc2U+XV0gWy0tbGlzdF0gWzxyZWY+XSIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1MAorbXNnaWQgInNob3cgcmVtb3RlLXRyYWNraW5nIGFuZCBsb2NhbCBicmFuY2hlcyIKK21zZ3N0ciAi5pi+56S66L+c56iL6Lef6Liq55qE5ZKM5pys5Zyw55qE5YiG5pSvIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjUyCittc2dpZCAic2hvdyByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMiCittc2dzdHIgIuaYvuekuui/nOeoi+i3n+i4queahOWIhuaUryIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1NAorbXNnaWQgImNvbG9yICcqISstJyBjb3JyZXNwb25kaW5nIHRvIHRoZSBicmFuY2giCittc2dzdHIgIuedgOiJsiAnKiErLScg5Yiw55u45bqU55qE5YiG5pSvIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU2Cittc2dpZCAic2hvdyA8bj4gbW9yZSBjb21taXRzIGFmdGVyIHRoZSBjb21tb24gYW5jZXN0b3IiCittc2dzdHIgIuaYvuekuuWFseWQjOelluWFiOWQjueahCA8bj4g5Liq5o+Q5LqkIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU4Cittc2dpZCAic3lub255bSB0byBtb3JlPS0xIgorbXNnc3RyICLlkowgbW9yZT0tMSDlkIzkuYkiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTkKK21zZ2lkICJzdXBwcmVzcyBuYW1pbmcgc3RyaW5ncyIKK21zZ3N0ciAi5LiN5pi+56S65a2X56ym5Liy5ZG95ZCNIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjYxCittc2dpZCAiaW5jbHVkZSB0aGUgY3VycmVudCBicmFuY2giCittc2dzdHIgIuWMheaLrOW9k+WJjeWIhuaUryIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2MworbXNnaWQgIm5hbWUgY29tbWl0cyB3aXRoIHRoZWlyIG9iamVjdCBuYW1lcyIKK21zZ3N0ciAi5Lul5a+56LGh5ZCN5a2X5ZG95ZCN5o+Q5LqkIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY1Cittc2dpZCAic2hvdyBwb3NzaWJsZSBtZXJnZSBiYXNlcyIKK21zZ3N0ciAi5pi+56S65Y+v6IO95ZCI5bm255qE5Z+657q/IgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY3Cittc2dpZCAic2hvdyByZWZzIHVucmVhY2hhYmxlIGZyb20gYW55IG90aGVyIHJlZiIKK21zZ3N0ciAi5pi+56S65rKh5pyJ5Lu75L2V5byV55So55qE55qE5byV55SoIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY5Cittc2dpZCAic2hvdyBjb21taXRzIGluIHRvcG9sb2dpY2FsIG9yZGVyIgorbXNnc3RyICLku6Xmi5PmiZHpobrluo/mmL7npLrmj5DkuqQiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzEKK21zZ2lkICJzaG93IG9ubHkgY29tbWl0cyBub3Qgb24gdGhlIGZpcnN0IGJyYW5jaCIKK21zZ3N0ciAi5Y+q5pi+56S65LiN5Zyo56ys5LiA5Liq5YiG5pSv5LiK55qE5o+Q5LqkIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjczCittc2dpZCAic2hvdyBtZXJnZXMgcmVhY2hhYmxlIGZyb20gb25seSBvbmUgdGlwIgorbXNnc3RyICLmmL7npLrku4XkuIDkuKrliIbmlK/lj6/orr/pl67nmoTlkIjlubbmj5DkuqQiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzUKK21zZ2lkICJzaG93IGNvbW1pdHMgd2hlcmUgbm8gcGFyZW50IGNvbWVzIGJlZm9yZSBpdHMgY2hpbGRyZW4iCittc2dzdHIgIuaYvuekuuaPkOS6pOaXtuS7peaXtumXtOS4uuW6j+S4lOeItuaPkOS6pOS4jeiDvemihuWFiOWtkOaPkOS6pCIKKworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3NworbXNnaWQgIjxuPlssPGJhc2U+XSIKK21zZ3N0ciAiPG4+Wyw8YmFzZT5dIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc4Cittc2dpZCAic2hvdyA8bj4gbW9zdCByZWNlbnQgcmVmLWxvZyBlbnRyaWVzIHN0YXJ0aW5nIGF0IGJhc2UiCittc2dzdHIgIuaYvuekuuS7jiBiYXNlIOW8gOWni+eahCA8bj4g5p2h5pyA6L+R55qE5byV55So5pel5b+X6K6w5b2VIgorCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTAKK21zZ2lkICIiCisiZ2l0IHNob3ctcmVmIFstcXwtLXF1aWV0XSBbLS12ZXJpZnldIFstLWhlYWRdIFstZHwtLWRlcmVmZXJlbmNlXSBbLXN8LS0iCisiaGFzaFs9PG4+XV0gWy0tYWJicmV2Wz08bj5dXSBbLS10YWdzXSBbLS1oZWFkc10gWy0tXSBbcGF0dGVybipdICIKK21zZ3N0ciAiIgorImdpdCBzaG93LXJlZiBbLXF8LS1xdWlldF0gWy0tdmVyaWZ5XSBbLS1oZWFkXSBbLWR8LS1kZXJlZmVyZW5jZV0gWy1zfC0tIgorImhhc2hbPTxuPl1dIFstLWFiYnJldls9PG4+XV0gWy0tdGFnc10gWy0taGVhZHNdIFstLV0gW3BhdHRlcm4qXSAiCisKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxMQorbXNnaWQgImdpdCBzaG93LXJlZiAtLWV4Y2x1ZGUtZXhpc3RpbmdbPXBhdHRlcm5dIDwgcmVmLWxpc3QiCittc2dzdHIgImdpdCBzaG93LXJlZiAtLWV4Y2x1ZGUtZXhpc3RpbmdbPeaooeW8j10gPCDlvJXnlKjliJfooagiCisKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNjUKK21zZ2lkICJvbmx5IHNob3cgdGFncyAoY2FuIGJlIGNvbWJpbmVkIHdpdGggaGVhZHMpIgorbXNnc3RyICLlj6rmmL7npLogdGFnc++8iOWPr+S7peWSjOWktOWFseeUqO+8iSIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE2NgorbXNnaWQgIm9ubHkgc2hvdyBoZWFkcyAoY2FuIGJlIGNvbWJpbmVkIHdpdGggdGFncykiCittc2dzdHIgIuWPquaYvuekuuWktO+8iOWPr+S7peWSjCB0YWdzIOWFseeUqO+8iSIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE2NworbXNnaWQgInN0cmljdGVyIHJlZmVyZW5jZSBjaGVja2luZywgcmVxdWlyZXMgZXhhY3QgcmVmIHBhdGgiCittc2dzdHIgIuabtOS4peagvOeahOW8leeUqOajgOa1i++8jOmcgOimgeeyvuehrueahOW8leeUqOi3r+W+hCIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE3MCBidWlsdGluL3Nob3ctcmVmLmM6MTcyCittc2dpZCAic2hvdyB0aGUgSEVBRCByZWZlcmVuY2UiCittc2dzdHIgIuaYvuekuiBIRUFEIOW8leeUqCIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE3NAorbXNnaWQgImRlcmVmZXJlbmNlIHRhZ3MgaW50byBvYmplY3QgSURzIgorbXNnc3RyICLovazmjaIgdGFncyDliLDlr7nosaFJRCIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE3NgorbXNnaWQgIm9ubHkgc2hvdyBTSEExIGhhc2ggdXNpbmcgPG4+IGRpZ2l0cyIKK21zZ3N0ciAi5Y+q5pi+56S65L2/55SoIDxuPiDkuKrmlbDlrZfnmoQgU0hBMSDlk4jluIwiCisKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxODAKK21zZ2lkICJkbyBub3QgcHJpbnQgcmVzdWx0cyB0byBzdGRvdXQgKHVzZWZ1bCB3aXRoIC0tdmVyaWZ5KSIKK21zZ3N0ciAi5LiN5omT5Y2w57uT5p6c5Yiw5qCH5YeG6L6T5Ye677yI5L6L5aaC5LiOIC0tdmVyaWZ5IOWPguaVsOWFseeUqO+8iSIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE4MgorbXNnaWQgInNob3cgcmVmcyBmcm9tIHN0ZGluIHRoYXQgYXJlbid0IGluIGxvY2FsIHJlcG9zaXRvcnkiCittc2dzdHIgIuaYvuekuuS7juagh+WHhui+k+WFpeS4reivu+WFpeeahOS4jeWcqOacrOWcsOeJiOacrOW6k+S4reeahOW8leeUqCIKKworIzogYnVpbHRpbi9zeW1ib2xpYy1yZWYuYzo3Cittc2dpZCAiZ2l0IHN5bWJvbGljLXJlZiBbb3B0aW9uc10gbmFtZSBbcmVmXSIKK21zZ3N0ciAiZ2l0IHN5bWJvbGljLXJlZiBb6YCJ6aG5XSDlkI3np7AgW+W8leeUqF0iCisKKyM6IGJ1aWx0aW4vc3ltYm9saWMtcmVmLmM6OAorbXNnaWQgImdpdCBzeW1ib2xpYy1yZWYgLWQgWy1xXSBuYW1lIgorbXNnc3RyICJnaXQgc3ltYm9saWMtcmVmIC1kIFstcV0g5ZCN56ewIgorCisjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjQwCittc2dpZCAic3VwcHJlc3MgZXJyb3IgbWVzc2FnZSBmb3Igbm9uLXN5bWJvbGljIChkZXRhY2hlZCkgcmVmcyIKK21zZ3N0ciAi5LiN5pi+56S66Z2e56ym5Y+377yI5YiG56a755qE77yJ5byV55So55qE6ZSZ6K+v5L+h5oGvIgorCisjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjQxCittc2dpZCAiZGVsZXRlIHN5bWJvbGljIHJlZiIKK21zZ3N0ciAi5Yig6Zmk56ym5Y+35byV55SoIgorCisjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjQyCittc2dpZCAic2hvcnRlbiByZWYgb3V0cHV0IgorbXNnc3RyICLnroDnn63nmoTlvJXnlKjovpPlh7oiCisKKyM6IGJ1aWx0aW4vc3ltYm9saWMtcmVmLmM6NDMgYnVpbHRpbi91cGRhdGUtcmVmLmM6MTgKK21zZ2lkICJyZWFzb24iCittc2dzdHIgIuWOn+WboCIKKworIzogYnVpbHRpbi9zeW1ib2xpYy1yZWYuYzo0MyBidWlsdGluL3VwZGF0ZS1yZWYuYzoxOAorbXNnaWQgInJlYXNvbiBvZiB0aGUgdXBkYXRlIgorbXNnc3RyICLmm7TmlrDnmoTljp/lm6AiCisKKyM6IGJ1aWx0aW4vdGFnLmM6MjIKK21zZ2lkICIiCisiZ2l0IHRhZyBbLWF8LXN8LXUgPGtleS1pZD5dIFstZl0gWy1tIDxtc2c+fC1GIDxmaWxlPl0gPHRhZ25hbWU+IFs8aGVhZD5dIgorbXNnc3RyICJnaXQgdGFnIFstYXwtc3wtdSA8a2V5LWlkPl0gWy1mXSBbLW0gPOivtOaYjj58LUYgPOaWh+S7tj5dIDzmoIfnrb7lkI0+IFs85aS0Pl0iCisKKyM6IGJ1aWx0aW4vdGFnLmM6MjMKK21zZ2lkICJnaXQgdGFnIC1kIDx0YWduYW1lPi4uLiIKK21zZ3N0ciAiZ2l0IHRhZyAtZCA85qCH562+5ZCNPi4uLiIKKworIzogYnVpbHRpbi90YWcuYzoyNAorbXNnaWQgIiIKKyJnaXQgdGFnIC1sIFstbls8bnVtPl1dIFstLWNvbnRhaW5zIDxjb21taXQ+XSBbLS1wb2ludHMtYXQgPG9iamVjdD5dIFxuIgorIlx0XHRbPHBhdHRlcm4+Li4uXSIKK21zZ3N0ciAiIgorImdpdCB0YWcgLWwgWy1uWzxudW0+XV0gWy0tY29udGFpbnMgPOaPkOS6pD5dIFstLXBvaW50cy1hdCA85a+56LGhPl0gXG4iCisiXHRcdFs85qih5byPPi4uLl0iCisKKyM6IGJ1aWx0aW4vdGFnLmM6MjYKK21zZ2lkICJnaXQgdGFnIC12IDx0YWduYW1lPi4uLiIKK21zZ3N0ciAiZ2l0IHRhZyAtdiA85qCH562+5ZCNPi4uLiIKKwogIzogYnVpbHRpbi90YWcuYzo2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJtYWxmb3JtZWQgb2JqZWN0IGF0ICclcyciCkBAIC00NTcxLDE1MCArODY0MywzNjEgQEAKIG1zZ3N0ciAi5LiN6IO95qCh6aqMIHRhZyAnJXMnIgogCiAjOiBidWlsdGluL3RhZy5jOjI0OQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCi0iI1xuIgotIiMgV3JpdGUgYSB0YWcgbWVzc2FnZVxuIgotIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAnIycgd2lsbCBiZSBpZ25vcmVkLlxuIgotIiNcbiIKKyJXcml0ZSBhIHRhZyBtZXNzYWdlXG4iCisiTGluZXMgc3RhcnRpbmcgd2l0aCAnJWMnIHdpbGwgYmUgaWdub3JlZC5cbiIKIG1zZ3N0ciAiIgogIlxuIgotIiNcbiIKLSIjIOi+k+WFpeS4gOS4qiB0YWcg6K+05piOXG4iCi0iIyDku6UgJyMnIOW8gOWktOeahOihjOWwhuiiq+W/veeVpeOAglxuIgotIiNcbiIKKyLovpPlhaXkuIDkuKogdGFnIOivtOaYjlxuIgorIuS7pSAnJWMnIOW8gOWktOeahOihjOWwhuiiq+W/veeVpeOAglxuIgogCi0jOiBidWlsdGluL3RhZy5jOjI1NgorIzogYnVpbHRpbi90YWcuYzoyNTMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgotIiNcbiIKLSIjIFdyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKLSIjIExpbmVzIHN0YXJ0aW5nIHdpdGggJyMnIHdpbGwgYmUga2VwdDsgeW91IG1heSByZW1vdmUgdGhlbSB5b3Vyc2VsZiBpZiB5b3UgIgorIldyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKKyJMaW5lcyBzdGFydGluZyB3aXRoICclYycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIHlvdXJzZWxmIGlmIHlvdSAiCiAid2FudCB0by5cbiIKLSIjXG4iCiBtc2dzdHIgIiIKICJcbiIKLSIjXG4iCi0iIyDovpPlhaXkuIDkuKogdGFnIOivtOaYjlxuIgotIiMg5LulICcjJyDlvIDlpLTnmoTooYzlsIbooqvlv73nlaXvvIzmgqjlj6/ku6XliKDpmaTlroPku6zlpoLmnpzmgqjmg7Pov5nmoLflgZrjgIJcbiIKLSIjXG4iCisi6L6T5YWl5LiA5LiqIHRhZyDor7TmmI5cbiIKKyLku6UgJyVjJyDlvIDlpLTnmoTooYzlsIbooqvkv53nlZnvvIzlpoLmnpzmgqjmhL/mhI/kuZ/lj6/ku6XliKDpmaTlroPku6zjgIJcbiIKIAotIzogYnVpbHRpbi90YWcuYzoyOTgKKyM6IGJ1aWx0aW4vdGFnLmM6MjkyCiBtc2dpZCAidW5hYmxlIHRvIHNpZ24gdGhlIHRhZyIKIG1zZ3N0ciAi5peg5rOV562+572yIHRhZyIKIAotIzogYnVpbHRpbi90YWcuYzozMDAKKyM6IGJ1aWx0aW4vdGFnLmM6Mjk0CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIHRhZyBmaWxlIgogbXNnc3RyICLml6Dms5XlhpkgdGFnIOaWh+S7tiIKIAotIzogYnVpbHRpbi90YWcuYzozMjUKKyM6IGJ1aWx0aW4vdGFnLmM6MzE5CiBtc2dpZCAiYmFkIG9iamVjdCB0eXBlLiIKIG1zZ3N0ciAi5Z2P55qE5a+56LGh57G75Z6L44CCIgogCi0jOiBidWlsdGluL3RhZy5jOjMzOAorIzogYnVpbHRpbi90YWcuYzozMzIKIG1zZ2lkICJ0YWcgaGVhZGVyIHRvbyBiaWcuIgogbXNnc3RyICJ0YWcg5aS05L+h5oGv5aSq5aSn44CCIgogCi0jOiBidWlsdGluL3RhZy5jOjM3MAorIzogYnVpbHRpbi90YWcuYzozNjgKIG1zZ2lkICJubyB0YWcgbWVzc2FnZT8iCiBtc2dzdHIgIuaXoCB0YWcg6K+05piO77yfIgogCi0jOiBidWlsdGluL3RhZy5jOjM3NgorIzogYnVpbHRpbi90YWcuYzozNzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiVGhlIHRhZyBtZXNzYWdlIGhhcyBiZWVuIGxlZnQgaW4gJXNcbiIKIG1zZ3N0ciAidGFnIOivtOaYjuiiq+S/neeVmeWcqCAlc1xuIgogCi0jOiBidWlsdGluL3RhZy5jOjQyNQorIzogYnVpbHRpbi90YWcuYzo0MjMKIG1zZ2lkICJzd2l0Y2ggJ3BvaW50cy1hdCcgcmVxdWlyZXMgYW4gb2JqZWN0IgogbXNnc3RyICLlvIDlhbMgJ3BvaW50cy1hdCcg6ZyA6KaB5LiA5Liq5a+56LGhIgogCi0jOiBidWlsdGluL3RhZy5jOjQyNworIzogYnVpbHRpbi90YWcuYzo0MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAibWFsZm9ybWVkIG9iamVjdCBuYW1lICclcyciCiBtc2dzdHIgIumdnuazleeahOWvueixoeWQjSAnJXMnIgogCi0jOiBidWlsdGluL3RhZy5jOjUwNgorIzogYnVpbHRpbi90YWcuYzo0NDUKK21zZ2lkICJsaXN0IHRhZyBuYW1lcyIKK21zZ3N0ciAi5YiX5Ye6dGFn5ZCN56ewIgorCisjOiBidWlsdGluL3RhZy5jOjQ0NworbXNnaWQgInByaW50IDxuPiBsaW5lcyBvZiBlYWNoIHRhZyBtZXNzYWdlIgorbXNnc3RyICLmr4/kuKogdGFnIOS/oeaBr+aJk+WNsCA8bj4g6KGMIgorCisjOiBidWlsdGluL3RhZy5jOjQ0OQorbXNnaWQgImRlbGV0ZSB0YWdzIgorbXNnc3RyICLliKDpmaQgdGFncyIKKworIzogYnVpbHRpbi90YWcuYzo0NTAKK21zZ2lkICJ2ZXJpZnkgdGFncyIKK21zZ3N0ciAi6aqM6K+BIHRhZ3MiCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDUyCittc2dpZCAiVGFnIGNyZWF0aW9uIG9wdGlvbnMiCittc2dzdHIgIlRhZyDliJvlu7rpgInpobkiCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDU0Cittc2dpZCAiYW5ub3RhdGVkIHRhZywgbmVlZHMgYSBtZXNzYWdlIgorbXNnc3RyICLms6jop6MgdGFn77yM6ZyA6KaB5LiA5Liq6K+05piOIgorCisjOiBidWlsdGluL3RhZy5jOjQ1NgorbXNnaWQgInRhZyBtZXNzYWdlIgorbXNnc3RyICJ0YWcg6K+05piOIgorCisjOiBidWlsdGluL3RhZy5jOjQ1OAorbXNnaWQgImFubm90YXRlZCBhbmQgR1BHLXNpZ25lZCB0YWciCittc2dzdHIgIuazqOino+W5tiBHUEcg562+5ZCN55qEIHRhZyIKKworIzogYnVpbHRpbi90YWcuYzo0NjIKK21zZ2lkICJ1c2UgYW5vdGhlciBrZXkgdG8gc2lnbiB0aGUgdGFnIgorbXNnc3RyICLkvb/nlKjlj6blpJbnmoTnp4HpkqXnrb7lkI0gdGFnIgorCisjOiBidWlsdGluL3RhZy5jOjQ2MworbXNnaWQgInJlcGxhY2UgdGhlIHRhZyBpZiBleGlzdHMiCittc2dzdHIgIuWmguaenOWtmOWcqO+8jOabv+aNoueOsOacieeahCB0YWciCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDY0Cittc2dpZCAic2hvdyB0YWcgbGlzdCBpbiBjb2x1bW5zIgorbXNnc3RyICLku6XliJfnmoTmlrnlvI/mmL7npLogdGFnIgorCisjOiBidWlsdGluL3RhZy5jOjQ2NgorbXNnaWQgIlRhZyBsaXN0aW5nIG9wdGlvbnMiCittc2dzdHIgIlRhZyDliJfooajpgInpobkiCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDY5Cittc2dpZCAicHJpbnQgb25seSB0YWdzIHRoYXQgY29udGFpbiB0aGUgY29tbWl0IgorbXNnc3RyICLlj6rmiZPljbDljIXlkKvmj5DkuqTnmoR0YWdzIgorCisjOiBidWlsdGluL3RhZy5jOjQ3NQorbXNnaWQgInByaW50IG9ubHkgdGFncyBvZiB0aGUgb2JqZWN0IgorbXNnc3RyICLlj6rmiZPljbB0YWdz5a+56LGhIgorCisjOiBidWlsdGluL3RhZy5jOjUwNAogbXNnaWQgIi0tY29sdW1uIGFuZCAtbiBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLWNvbHVtbiDlkowgLW4g5LiN5YW85a65IgogCi0jOiBidWlsdGluL3RhZy5jOjUyMworIzogYnVpbHRpbi90YWcuYzo1MjEKIG1zZ2lkICItbiBvcHRpb24gaXMgb25seSBhbGxvd2VkIHdpdGggLWwuIgotbXNnc3RyICItbiDpgInpobnlj6rlhYHorrjlkowgLWwg5YWx55So44CCIgorbXNnc3RyICItbiDpgInpobnlj6rlhYHorrjlkowgLWwg5ZCM5pe25L2/55So44CCIgorCisjOiBidWlsdGluL3RhZy5jOjUyMworbXNnaWQgIi0tY29udGFpbnMgb3B0aW9uIGlzIG9ubHkgYWxsb3dlZCB3aXRoIC1sLiIKK21zZ3N0ciAiLS1jb250YWlucyDpgInpobnlj6rlhYHorrjlkowgLWwg5ZCM5pe25L2/55So44CCIgogCiAjOiBidWlsdGluL3RhZy5jOjUyNQotbXNnaWQgIi0tY29udGFpbnMgb3B0aW9uIGlzIG9ubHkgYWxsb3dlZCB3aXRoIC1sLiIKLW1zZ3N0ciAiLS1jb250YWlucyDpgInpobnlj6rlhYHorrjlkowgLWwg5YWx55So44CCIgotCi0jOiBidWlsdGluL3RhZy5jOjUyNwogbXNnaWQgIi0tcG9pbnRzLWF0IG9wdGlvbiBpcyBvbmx5IGFsbG93ZWQgd2l0aCAtbC4iCi1tc2dzdHIgIi0tcG9pbnRzLWF0IOmAiemhueWPquWFgeiuuOWSjCAtbCDlhbHnlKjjgIIiCittc2dzdHIgIi0tcG9pbnRzLWF0IOmAiemhueWPquWFgeiuuOWSjCAtbCDlkIzml7bkvb/nlKjjgIIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTM1CisjOiBidWlsdGluL3RhZy5jOjUzMwogbXNnaWQgIm9ubHkgb25lIC1GIG9yIC1tIG9wdGlvbiBpcyBhbGxvd2VkLiIKIG1zZ3N0ciAi5Y+q5YWB6K645LiA5LiqIC1GIOaIliAtbSDpgInpobnjgIIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTU1CisjOiBidWlsdGluL3RhZy5jOjU1MwogbXNnaWQgInRvbyBtYW55IHBhcmFtcyIKIG1zZ3N0ciAi5aSq5aSa5Y+C5pWwIgogCi0jOiBidWlsdGluL3RhZy5jOjU2MQorIzogYnVpbHRpbi90YWcuYzo1NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBpcyBub3QgYSB2YWxpZCB0YWcgbmFtZS4iCiBtc2dzdHIgIiclcycg5LiN5piv5LiA5Liq5pyJ5pWI55qEdGFn5ZCN56ew44CCIgogCi0jOiBidWlsdGluL3RhZy5jOjU2NgorIzogYnVpbHRpbi90YWcuYzo1NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAidGFnICclcycgYWxyZWFkeSBleGlzdHMiCiBtc2dzdHIgInRhZyAnJXMnIOW3suWtmOWcqCIKIAotIzogYnVpbHRpbi90YWcuYzo1ODQKKyM6IGJ1aWx0aW4vdGFnLmM6NTgyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjYW5ub3QgbG9jayB0aGUgcmVmIgogbXNnc3RyICIlc++8muS4jeiDvemUgeWumuW8leeUqCIKIAotIzogYnVpbHRpbi90YWcuYzo1ODYKKyM6IGJ1aWx0aW4vdGFnLmM6NTg0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjYW5ub3QgdXBkYXRlIHRoZSByZWYiCiBtc2dzdHIgIiVz77ya5LiN6IO95pu05paw5byV55SoIgogCi0jOiBidWlsdGluL3RhZy5jOjU4OAorIzogYnVpbHRpbi90YWcuYzo1ODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXBkYXRlZCB0YWcgJyVzJyAod2FzICVzKVxuIgogbXNnc3RyICLlt7Lmm7TmlrB0YWcgJyVzJ++8iOabvuS4uiAlc++8iVxuIgogCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjQwMQorbXNnaWQgImdpdCB1cGRhdGUtaW5kZXggW29wdGlvbnNdIFstLV0gWzxmaWxlPi4uLl0iCittc2dzdHIgImdpdCB1cGRhdGUtaW5kZXggW+mAiemhuV0gWy0tXSBbPOaWh+S7tj4uLi5dIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcxOAorbXNnaWQgImNvbnRpbnVlIHJlZnJlc2ggZXZlbiB3aGVuIGluZGV4IG5lZWRzIHVwZGF0ZSIKK21zZ3N0ciAi5b2T57Si5byV6ZyA6KaB5pu05paw5pe257un57ut5Yi35pawIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcyMQorbXNnaWQgInJlZnJlc2g6IGlnbm9yZSBzdWJtb2R1bGVzIgorbXNnc3RyICLliLfmlrDvvJrlv73nlaXlrZDmqKHnu4QiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzI0Cittc2dpZCAiZG8gbm90IGlnbm9yZSBuZXcgZmlsZXMiCittc2dzdHIgIuS4jeW/veeVpeaWsOeahOaWh+S7tiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MjYKK21zZ2lkICJsZXQgZmlsZXMgcmVwbGFjZSBkaXJlY3RvcmllcyBhbmQgdmljZS12ZXJzYSIKK21zZ3N0ciAi6K6p5paH5Lu25pu/5o2i55uu5b2V77yI5Y+N5LmL5Lqm54S277yJIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcyOAorbXNnaWQgIm5vdGljZSBmaWxlcyBtaXNzaW5nIGZyb20gd29ya3RyZWUiCittc2dzdHIgIumAmuefpeaWh+S7tuS7juW3peS9nOWMuuS4ouWksSIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MzAKK21zZ2lkICJyZWZyZXNoIGV2ZW4gaWYgaW5kZXggY29udGFpbnMgdW5tZXJnZWQgZW50cmllcyIKK21zZ3N0ciAi5Y2z5L2/57Si5byV5Yy65YyF5ZCr5pyq5ZCI5bm255qE5p2h55uu5Lmf5omn6KGM5Yi35pawIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjczMworbXNnaWQgInJlZnJlc2ggc3RhdCBpbmZvcm1hdGlvbiIKK21zZ3N0ciAi5Yi35paw57uf6K6h5L+h5oGvIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjczNworbXNnaWQgImxpa2UgLS1yZWZyZXNoLCBidXQgaWdub3JlIGFzc3VtZS11bmNoYW5nZWQgc2V0dGluZyIKK21zZ3N0ciAi57G75Ly85LqOIC0tcmVmcmVzaO+8jOS9huaYr+W/veeVpSBhc3N1bWUtdW5jaGFuZ2VkIOiuvue9riIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NDEKK21zZ2lkICI8bW9kZT4gPG9iamVjdD4gPHBhdGg+IgorbXNnc3RyICI8bW9kZT4gPG9iamVjdD4gPHBhdGg+IgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc0MgorbXNnaWQgImFkZCB0aGUgc3BlY2lmaWVkIGVudHJ5IHRvIHRoZSBpbmRleCIKK21zZ3N0ciAi5re75Yqg5oyH5a6a55qE5p2h55uu5Yiw57Si5byV5Yy6IgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc0NgorbXNnaWQgIigrLy0peCIKK21zZ3N0ciAiKCsvLSl4IgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc0NworbXNnaWQgIm92ZXJyaWRlIHRoZSBleGVjdXRhYmxlIGJpdCBvZiB0aGUgbGlzdGVkIGZpbGVzIgorbXNnc3RyICLopobnm5bliJfooajph4zmlofku7bnmoTlj6/miafooYzkvY0iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzUxCittc2dpZCAibWFyayBmaWxlcyBhcyBcIm5vdCBjaGFuZ2luZ1wiIgorbXNnc3RyICLmiormlofku7bmoIforrDkuLogXCLmsqHmnInlj5jmm7RcIiIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NTQKK21zZ2lkICJjbGVhciBhc3N1bWVkLXVuY2hhbmdlZCBiaXQiCittc2dzdHIgIua4hemZpCBhc3N1bWVkLXVuY2hhbmdlZCDkvY0iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzU3Cittc2dpZCAibWFyayBmaWxlcyBhcyBcImluZGV4LW9ubHlcIiIKK21zZ3N0ciAi5oqK5paH5Lu25qCH6K6w5Li6IFwi5LuF57Si5byVXCIiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzYwCittc2dpZCAiY2xlYXIgc2tpcC13b3JrdHJlZSBiaXQiCittc2dzdHIgIua4hemZpCBza2lwLXdvcmt0cmVlIOS9jSIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NjMKK21zZ2lkICJhZGQgdG8gaW5kZXggb25seTsgZG8gbm90IGFkZCBjb250ZW50IHRvIG9iamVjdCBkYXRhYmFzZSIKK21zZ3N0ciAi5Y+q5re75Yqg5Yiw57Si5byV5Yy677yb5LiN5re75Yqg5a+56LGh5Yiw5a+56LGh5bqTIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc2NQorbXNnaWQgInJlbW92ZSBuYW1lZCBwYXRocyBldmVuIGlmIHByZXNlbnQgaW4gd29ya3RyZWUiCittc2dzdHIgIuWNs+S9v+WtmOWcqOW3peS9nOWMuumHjO+8jOS5n+WIoOmZpOi3r+W+hCIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NjcKK21zZ2lkICJ3aXRoIC0tc3RkaW46IGlucHV0IGxpbmVzIGFyZSB0ZXJtaW5hdGVkIGJ5IG51bGwgYnl0ZXMiCittc2dzdHIgIuaQuuW4piAtLXN0ZGlu77ya6L6T5YWl55qE6KGM5LulIG51bGwg5a2X56ym57uI5q2iIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc2OQorbXNnaWQgInJlYWQgbGlzdCBvZiBwYXRocyB0byBiZSB1cGRhdGVkIGZyb20gc3RhbmRhcmQgaW5wdXQiCittc2dzdHIgIuS7juagh+WHhui+k+WFpeS4reivu+WPlumcgOimgeabtOaWsOeahOi3r+W+hOWIl+ihqCIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NzMKK21zZ2lkICJhZGQgZW50cmllcyBmcm9tIHN0YW5kYXJkIGlucHV0IHRvIHRoZSBpbmRleCIKK21zZ3N0ciAi5LuO5qCH5YeG6L6T5YWl5re75Yqg5p2h55uu5Yiw57Si5byV5Yy6IgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc3NworbXNnaWQgInJlcG9wdWxhdGUgc3RhZ2VzICMyIGFuZCAjMyBmb3IgdGhlIGxpc3RlZCBwYXRocyIKK21zZ3N0ciAi5Li65oyH5a6a5paH5Lu26YeN5paw55Sf5oiQ56ysMuWSjOesrDPmmoLlrZjljLoiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzgxCittc2dpZCAib25seSB1cGRhdGUgZW50cmllcyB0aGF0IGRpZmZlciBmcm9tIEhFQUQiCittc2dzdHIgIuWPquabtOaWsOS4jiBIRUFEIOS4jeWQjOeahOadoeebriIKKworIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3ODUKK21zZ2lkICJpZ25vcmUgZmlsZXMgbWlzc2luZyBmcm9tIHdvcmt0cmVlIgorbXNnc3RyICLlv73nlaXlt6XkvZzljLrkuKLlpLHnmoTmlofku7YiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6Nzg4Cittc2dpZCAicmVwb3J0IGFjdGlvbnMgdG8gc3RhbmRhcmQgb3V0cHV0IgorbXNnc3RyICLlnKjmoIflh4bovpPlh7rmmL7npLrmk43kvZwiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzkwCittc2dpZCAiKGZvciBwb3JjZWxhaW5zKSBmb3JnZXQgc2F2ZWQgdW5yZXNvbHZlZCBjb25mbGljdHMiCittc2dzdHIgIihmb3IgcG9yY2VsYWlucykg5b+Y6K6w5L+d5a2Y55qE5pyq6Kej5Yaz55qE5Yay56qBIgorCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc5NAorbXNnaWQgIndyaXRlIGluZGV4IGluIHRoaXMgZm9ybWF0IgorbXNnc3RyICLku6Xov5nnp43moLzlvI/lhpnlhaXntKLlvJXljLoiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLXJlZi5jOjcKK21zZ2lkICJnaXQgdXBkYXRlLXJlZiBbb3B0aW9uc10gLWQgPHJlZm5hbWU+IFs8b2xkdmFsPl0iCittc2dzdHIgImdpdCB1cGRhdGUtcmVmIFtvcHRpb25zXSAtZCA85byV55So5ZCNPiBbPOaXp+WAvD5dIgorCisjOiBidWlsdGluL3VwZGF0ZS1yZWYuYzo4Cittc2dpZCAiZ2l0IHVwZGF0ZS1yZWYgW29wdGlvbnNdICAgIDxyZWZuYW1lPiA8bmV3dmFsPiBbPG9sZHZhbD5dIgorbXNnc3RyICJnaXQgdXBkYXRlLXJlZiBbb3B0aW9uc10gICAgPOW8leeUqOWQjT4gPOaWsOWAvD4gWzzml6flgLw+XSIKKworIzogYnVpbHRpbi91cGRhdGUtcmVmLmM6MTkKK21zZ2lkICJkZWxldGUgdGhlIHJlZmVyZW5jZSIKK21zZ3N0ciAi5Yig6Zmk5byV55SoIgorCisjOiBidWlsdGluL3VwZGF0ZS1yZWYuYzoyMQorbXNnaWQgInVwZGF0ZSA8cmVmbmFtZT4gbm90IHRoZSBvbmUgaXQgcG9pbnRzIHRvIgorbXNnc3RyICLmm7TmlrAgPOW8leeUqOWQjT4g5pys6Lqr6ICM5LiN5piv5a6D5oyH5ZCR55qE5byV55SoIgorCisjOiBidWlsdGluL3VwZGF0ZS1zZXJ2ZXItaW5mby5jOjYKK21zZ2lkICJnaXQgdXBkYXRlLXNlcnZlci1pbmZvIFstLWZvcmNlXSIKK21zZ3N0ciAiZ2l0IHVwZGF0ZS1zZXJ2ZXItaW5mbyBbLS1mb3JjZV0iCisKKyM6IGJ1aWx0aW4vdXBkYXRlLXNlcnZlci1pbmZvLmM6MTQKK21zZ2lkICJ1cGRhdGUgdGhlIGluZm8gZmlsZXMgZnJvbSBzY3JhdGNoIgorbXNnc3RyICLku47lpLTlvIDlp4vmm7TmlrDmlofku7bkv6Hmga8iCisKKyM6IGJ1aWx0aW4vdmVyaWZ5LXBhY2suYzo1NgorbXNnaWQgImdpdCB2ZXJpZnktcGFjayBbLXZ8LS12ZXJib3NlXSBbLXN8LS1zdGF0LW9ubHldIDxwYWNrPi4uLiIKK21zZ3N0ciAiZ2l0IHZlcmlmeS1wYWNrIFstdnwtLXZlcmJvc2VdIFstc3wtLXN0YXQtb25seV0gPHBhY2s+Li4uIgorCisjOiBidWlsdGluL3ZlcmlmeS1wYWNrLmM6NjYKK21zZ2lkICJ2ZXJib3NlIgorbXNnc3RyICLlhpfplb/ovpPlh7oiCisKKyM6IGJ1aWx0aW4vdmVyaWZ5LXBhY2suYzo2OAorbXNnaWQgInNob3cgc3RhdGlzdGljcyBvbmx5IgorbXNnc3RyICLlj6rmmL7npLrnu5/orqEiCisKKyM6IGJ1aWx0aW4vdmVyaWZ5LXRhZy5jOjE3Cittc2dpZCAiZ2l0IHZlcmlmeS10YWcgWy12fC0tdmVyYm9zZV0gPHRhZz4uLi4iCittc2dzdHIgImdpdCB2ZXJpZnktdGFnIFstdnwtLXZlcmJvc2VdIDx0YWc+Li4uIgorCisjOiBidWlsdGluL3ZlcmlmeS10YWcuYzo3MworbXNnaWQgInByaW50IHRhZyBjb250ZW50cyIKK21zZ3N0ciAi5omT5Y2wIHRhZyDlhoXlrrkiCisKKyM6IGJ1aWx0aW4vd3JpdGUtdHJlZS5jOjEzCittc2dpZCAiZ2l0IHdyaXRlLXRyZWUgWy0tbWlzc2luZy1va10gWy0tcHJlZml4PTxwcmVmaXg+L10iCittc2dzdHIgImdpdCB3cml0ZS10cmVlIFstLW1pc3Npbmctb2tdIFstLXByZWZpeD085YmN57yAPi9dIgorCisjOiBidWlsdGluL3dyaXRlLXRyZWUuYzoyNgorbXNnaWQgIjxwcmVmaXg+LyIKK21zZ3N0ciAiPOWJjee8gD4vIgorCisjOiBidWlsdGluL3dyaXRlLXRyZWUuYzoyNworbXNnaWQgIndyaXRlIHRyZWUgb2JqZWN0IGZvciBhIHN1YmRpcmVjdG9yeSA8cHJlZml4PiIKK21zZ3N0ciAi5bCGIDzliY3nvIA+IOWtkOebruW9leWGheWuueWGmeWIsOS4gOS4quagkeWvueixoSIKKworIzogYnVpbHRpbi93cml0ZS10cmVlLmM6MzAKK21zZ2lkICJvbmx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nIgorbXNnc3RyICLlj6rlr7nosIPor5XmnInnlKgiCisKICM6IGdpdC5jOjE2Ci1tc2dpZCAiU2VlICdnaXQgaGVscCA8Y29tbWFuZD4nIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGEgc3BlY2lmaWMgY29tbWFuZC4iCi1tc2dzdHIgIuWPguingSAnZ2l0IGhlbHAgPGNvbW1hbmQ+JyDku6Xojrflvpfor6Xnibnlrprlkb3ku6TnmoTor6bnu4bkv6Hmga/jgIIiCi0KLSM6IHBhcnNlLW9wdGlvbnMuaDoxMzMgcGFyc2Utb3B0aW9ucy5oOjIzNQotbXNnaWQgIm4iCi1tc2dzdHIgIuaVsOWtlyIKLQotIzogcGFyc2Utb3B0aW9ucy5oOjE0MQotbXNnaWQgInRpbWUiCi1tc2dzdHIgIuaXtumXtCIKLQotIzogcGFyc2Utb3B0aW9ucy5oOjE0OQotbXNnaWQgImZpbGUiCi1tc2dzdHIgIuaWh+S7tiIKLQotIzogcGFyc2Utb3B0aW9ucy5oOjE1MQotbXNnaWQgIndoZW4iCi1tc2dzdHIgIuS9leaXtiIKK21zZ2lkICIiCisiJ2dpdCBoZWxwIC1hJyBhbmQgJ2dpdCBoZWxwIC1nJyBsaXN0cyBhdmFpbGFibGUgc3ViY29tbWFuZHMgYW5kIHNvbWVcbiIKKyJjb25jZXB0IGd1aWRlcy4gU2VlICdnaXQgaGVscCA8Y29tbWFuZD4nIG9yICdnaXQgaGVscCA8Y29uY2VwdD4nXG4iCisidG8gcmVhZCBhYm91dCBhIHNwZWNpZmljIHN1YmNvbW1hbmQgb3IgY29uY2VwdC4iCittc2dzdHIgIiIKKyLlkb3ku6QgJ2dpdCBoZWxwIC1hJyDlkowgJ2dpdCBoZWxwIC1nJyDmmL7npLrlj6/nlKjnmoTlrZDlkb3ku6TlkozkuIDkupvmjIfljZfjgILlj4Lop4FcbiIKKyInZ2l0IGhlbHAgPOWRveS7pD4nIOaIliAnZ2l0IGhlbHAgPOaMh+WNlz4nIOadpeafpeeci+e7meWumueahOWtkOWRveS7pOW4ruWKqeaIluaMh+WNl+OAgiIKIAogIzogcGFyc2Utb3B0aW9ucy5oOjE1NgogbXNnaWQgIm5vLW9wIChiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSIKIG1zZ3N0ciAi56m65pON5L2c77yI5ZCR5ZCO5YW85a6577yJIgogCi0jOiBwYXJzZS1vcHRpb25zLmg6MjI4CisjOiBwYXJzZS1vcHRpb25zLmg6MjMyCiBtc2dpZCAiYmUgbW9yZSB2ZXJib3NlIgogbXNnc3RyICLmm7TliqDor6bnu4YiCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyMzAKKyM6IHBhcnNlLW9wdGlvbnMuaDoyMzQKIG1zZ2lkICJiZSBtb3JlIHF1aWV0IgogbXNnc3RyICLmm7TliqDlronpnZkiCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyMzYKKyM6IHBhcnNlLW9wdGlvbnMuaDoyNDAKIG1zZ2lkICJ1c2UgPG4+IGRpZ2l0cyB0byBkaXNwbGF5IFNIQS0xcyIKIG1zZ3N0ciAi55SoIDxuPiDkvY3mlbDlrZfmmL7npLogU0hBLTEg5ZOI5biM5YC8IgogCkBAIC00NzU1LDggKzkwMzgsOCBAQAogbXNnc3RyICLovpPlh7rlkozmqKHlvI/ljLnphY3nmoTooYwiCiAKICM6IGNvbW1vbi1jbWRzLmg6MTcKLW1zZ2lkICJDcmVhdGUgYW4gZW1wdHkgZ2l0IHJlcG9zaXRvcnkgb3IgcmVpbml0aWFsaXplIGFuIGV4aXN0aW5nIG9uZSIKLW1zZ3N0ciAi5Yib5bu65LiA5Liq56m655qEIGdpdCDniYjmnKzlupPmiJbogIXph43mlrDliJ3lp4vljJbkuIDkuKoiCittc2dpZCAiQ3JlYXRlIGFuIGVtcHR5IEdpdCByZXBvc2l0b3J5IG9yIHJlaW5pdGlhbGl6ZSBhbiBleGlzdGluZyBvbmUiCittc2dzdHIgIuWIm+W7uuS4gOS4quepuueahCBHaXQg54mI5pys5bqT5oiW6YeN5paw5Yid5aeL5YyW5LiA5Liq5bey5a2Y5Zyo55qE54mI5pys5bqTIgogCiAjOiBjb21tb24tY21kcy5oOjE4CiBtc2dpZCAiU2hvdyBjb21taXQgbG9ncyIKQEAgLTQ4MTAsMTUgKzkwOTMsMTQgQEAKIG1zZ2lkICIiCiAiWW91IHNlZW0gdG8gaGF2ZSBtb3ZlZCBIRUFEIHNpbmNlIHRoZSBsYXN0ICdhbScgZmFpbHVyZS5cbiIKICJOb3QgcmV3aW5kaW5nIHRvIE9SSUdfSEVBRCIKLW1zZ3N0ciAiIgotIuaCqOWlveWDj+WcqOS4iuS4gOasoSAnYW0nIOWksei0peWQjuenu+WKqOS6hiBIRUFE44CC5pyq5Zue6YCA6IezIE9SSUdfSEVBRCIKK21zZ3N0ciAi5oKo5aW95YOP5Zyo5LiK5LiA5qyhICdhbScg5aSx6LSl5ZCO56e75Yqo5LqGIEhFQUTjgILmnKrlm57pgIDoh7MgT1JJR19IRUFEIgogCiAjOiBnaXQtYW0uc2g6MTA1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCi0iV2hlbiB5b3UgaGF2ZSByZXNvbHZlZCB0aGlzIHByb2JsZW0gcnVuIFwiJGNtZGxpbmUgLS1yZXNvbHZlZFwiLlxuIgotIklmIHlvdSB3b3VsZCBwcmVmZXIgdG8gc2tpcCB0aGlzIHBhdGNoLCBpbnN0ZWFkIHJ1biBcIiRjbWRsaW5lIC0tc2tpcFwiLlxuIgotIlRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGJyYW5jaCBhbmQgc3RvcCBwYXRjaGluZyBydW4gXCIkY21kbGluZSAtLWFib3J0XCIuIgorIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtLCBydW4gXCIkY21kbGluZSAtLXJlc29sdmVkXCIuXG4iCisiSWYgeW91IHByZWZlciB0byBza2lwIHRoaXMgcGF0Y2gsIHJ1biBcIiRjbWRsaW5lIC0tc2tpcFwiIGluc3RlYWQuXG4iCisiVG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBzdG9wIHBhdGNoaW5nLCBydW4gXCIkY21kbGluZSAtLWFib3J0XCIuIgogbXNnc3RyICIiCiAi5b2T5oKo6Kej5Yaz5LqG5q2k6Zeu6aKY5ZCO77yM5omn6KGMIFwiJGNtZGxpbmUgLS1yZXNvbHZlZFwi44CCXG4iCiAi5aaC5p6c5oKo5oOz6Lez6L+H5q2k6KGl5LiB77yM5YiZ5omn6KGMIFwiJGNtZGxpbmUgLS1za2lwXCLjgIJcbiIKQEAgLTQ4MzAsNyArOTExMiwxMSBAQAogCiAjOiBnaXQtYW0uc2g6MTM3CiBtc2dpZCAiUmVwb3NpdG9yeSBsYWNrcyBuZWNlc3NhcnkgYmxvYnMgdG8gZmFsbCBiYWNrIG9uIDMtd2F5IG1lcmdlLiIKLW1zZ3N0ciAi54mI5pys5bqT57y65LmP5b+F6KaB55qEIGJsb2Ig5pWw5o2u5Lul6L+b6KGM5LiJ6Lev5ZCI5bm244CCIgorbXNnc3RyICLniYjmnKzlupPnvLrkuY/lv4XopoHnmoTmlbDmja7vvIhibG9i77yJ5a+56LGh5Lul6L+b6KGM5LiJ6Lev5ZCI5bm244CCIgorCisjOiBnaXQtYW0uc2g6MTM5Cittc2dpZCAiVXNpbmcgaW5kZXggaW5mbyB0byByZWNvbnN0cnVjdCBhIGJhc2UgdHJlZS4uLiIKK21zZ3N0ciAi5L2/55So57Si5byV5p2l6YeN5bu65LiA5Liq77yI5LiJ6Lev5ZCI5bm255qE77yJ5Z+656GA55uu5b2V5qCRLi4uIgogCiAjOiBnaXQtYW0uc2g6MTU0CiBtc2dpZCAiIgpAQCAtNDgzOCw0OCArOTEyNCw1NiBAQAogIkl0IGRvZXMgbm90IGFwcGx5IHRvIGJsb2JzIHJlY29yZGVkIGluIGl0cyBpbmRleC4iCiBtc2dzdHIgIiIKICLmgqjmmK/lkKbmm77miYvliqjnvJbovpHov4fmgqjnmoTooaXkuIHvvJ9cbiIKLSLml6Dms5XlupTnlKjooaXkuIHliLDntKLlvJXkuK3nmoTmlbDmja7kuIrjgIIiCisi5peg5rOV5bqU55So6KGl5LiB5Yiw57Si5byV5Lit55qE5pWw5o2u77yIYmxvYu+8ieWvueixoeS4iuOAgiIKIAogIzogZ2l0LWFtLnNoOjE2MwogbXNnaWQgIkZhbGxpbmcgYmFjayB0byBwYXRjaGluZyBiYXNlIGFuZCAzLXdheSBtZXJnZS4uLiIKIG1zZ3N0ciAi6L2s6ICM5Zyo5Z+656GA54mI5pys5LiK5omT6KGl5LiB5Y+K6L+b6KGM5LiJ6Lev5ZCI5bm2Li4uIgogCi0jOiBnaXQtYW0uc2g6Mjc1CisjOiBnaXQtYW0uc2g6MTc5Cittc2dpZCAiRmFpbGVkIHRvIG1lcmdlIGluIHRoZSBjaGFuZ2VzLiIKK21zZ3N0ciAi5peg5rOV5ZCI5bm25Y+Y5pu044CCIgorCisjOiBnaXQtYW0uc2g6Mjc0CiBtc2dpZCAiT25seSBvbmUgU3RHSVQgcGF0Y2ggc2VyaWVzIGNhbiBiZSBhcHBsaWVkIGF0IG9uY2UiCiBtc2dzdHIgIuS4gOasoeWPquiDveacieS4gOS4qiBTdEdJVCDooaXkuIHpmJ/liJfooqvlupTnlKgiCiAKLSM6IGdpdC1hbS5zaDozNjIKKyM6IGdpdC1hbS5zaDozNjEKICMsIHNoLWZvcm1hdAogbXNnaWQgIlBhdGNoIGZvcm1hdCAkcGF0Y2hfZm9ybWF0IGlzIG5vdCBzdXBwb3J0ZWQuIgogbXNnc3RyICLkuI3mlK/mjIEgJHBhdGNoX2Zvcm1hdCDooaXkuIHmoLzlvI/jgIIiCiAKLSM6IGdpdC1hbS5zaDozNjQKKyM6IGdpdC1hbS5zaDozNjMKIG1zZ2lkICJQYXRjaCBmb3JtYXQgZGV0ZWN0aW9uIGZhaWxlZC4iCiBtc2dzdHIgIuihpeS4geagvOW8j+ajgOa1i+Wksei0peOAgiIKIAotIzogZ2l0LWFtLnNoOjQxOAotbXNnaWQgIi1kIG9wdGlvbiBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiAgRG8gbm90IHVzZS4iCi1tc2dzdHIgIuS4jeWGjeaUr+aMgSAtZCDpgInpobnjgILkuI3opoHkvb/nlKjjgIIiCisjOiBnaXQtYW0uc2g6Mzg5Cittc2dpZCAiIgorIlRoZSAtYi8tLWJpbmFyeSBvcHRpb24gaGFzIGJlZW4gYSBuby1vcCBmb3IgbG9uZyB0aW1lLCBhbmRcbiIKKyJpdCB3aWxsIGJlIHJlbW92ZWQuIFBsZWFzZSBkbyBub3QgdXNlIGl0IGFueW1vcmUuIgorbXNnc3RyICIiCisi5Y+C5pWwIC1iLy0tYmluYXJ5IOW3sue7j+W+iOmVv+aXtumXtOS4jeWBmuS7u+S9leWunui0qOaTjeS9nOS6hu+8jOW5tuS4lOWwhuiiq+WIoOmZpOOAglxuIgorIuivt+S4jeimgeWGjeS9v+eUqOWug+S6huOAgiIKIAotIzogZ2l0LWFtLnNoOjQ4MQorIzogZ2l0LWFtLnNoOjQ3NwogIywgc2gtZm9ybWF0CiBtc2dpZCAicHJldmlvdXMgcmViYXNlIGRpcmVjdG9yeSAkZG90ZXN0IHN0aWxsIGV4aXN0cyBidXQgbWJveCBnaXZlbi4iCiBtc2dzdHIgIuS5i+WJjeeahOWPmOWfuuebruW9lSAkZG90ZXN0IOS7jeeEtuWtmOWcqOS9hue7meWHuuS6hm1ib3jjgIIiCiAKLSM6IGdpdC1hbS5zaDo0ODYKKyM6IGdpdC1hbS5zaDo0ODIKIG1zZ2lkICJQbGVhc2UgbWFrZSB1cCB5b3VyIG1pbmQuIC0tc2tpcCBvciAtLWFib3J0PyIKIG1zZ3N0ciAi6K+35LiL5Yaz5b+D44CCLS1za2lwIOaIluaYryAtLWFib3J0IO+8nyIKIAotIzogZ2l0LWFtLnNoOjUxMworIzogZ2l0LWFtLnNoOjUwOQogbXNnaWQgIlJlc29sdmUgb3BlcmF0aW9uIG5vdCBpbiBwcm9ncmVzcywgd2UgYXJlIG5vdCByZXN1bWluZy4iCiBtc2dzdHIgIuino+WGs+aTjeS9nOacqui/m+ihjO+8jOaIkeS7rOS4jeS8mue7p+e7reOAgiIKIAotIzogZ2l0LWFtLnNoOjU3OQorIzogZ2l0LWFtLnNoOjU3NQogIywgc2gtZm9ybWF0CiBtc2dpZCAiRGlydHkgaW5kZXg6IGNhbm5vdCBhcHBseSBwYXRjaGVzIChkaXJ0eTogJGZpbGVzKSIKIG1zZ3N0ciAi6ISP55qE57Si5byV77ya5LiN6IO95bqU55So6KGl5LiB77yI6ISP5paH5Lu277yaJGZpbGVz77yJIgogCi0jOiBnaXQtYW0uc2g6NjcxCisjOiBnaXQtYW0uc2g6Njc5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiUGF0Y2ggaXMgZW1wdHkuICBXYXMgaXQgc3BsaXQgd3Jvbmc/XG4iCkBAIC00ODkwLDE1ICs5MTg0LDE1IEBACiAi5aaC5p6c5oKo5oOz6KaB6Lez6L+H6L+Z5Liq6KGl5LiB77yM5omn6KGMIFwiJGNtZGxpbmUgLS1za2lwXCLjgIJcbiIKICLopoHmgaLlpI3ljp/liIbmlK/lubblgZzmraLmiZPooaXkuIHvvIzmiafooYwgXCIkY21kbGluZSAtLWFib3J0XCLjgIIiCiAKLSM6IGdpdC1hbS5zaDo3MDgKKyM6IGdpdC1hbS5zaDo3MDYKIG1zZ2lkICJQYXRjaCBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgZS1tYWlsIGFkZHJlc3MuIgogbXNnc3RyICLooaXkuIHkuK3msqHmnInkuIDkuKrmnInmlYjnmoTpgq7ku7blnLDlnYDjgIIiCiAKLSM6IGdpdC1hbS5zaDo3NTUKKyM6IGdpdC1hbS5zaDo3NTMKIG1zZ2lkICJjYW5ub3QgYmUgaW50ZXJhY3RpdmUgd2l0aG91dCBzdGRpbiBjb25uZWN0ZWQgdG8gYSB0ZXJtaW5hbC4iCiBtc2dzdHIgIuagh+WHhui+k+WFpeayoeacieWSjOe7iOerr+WFs+iBlO+8jOS4jeiDvei/m+ihjOS6pOS6kuW8j+aTjeS9nOOAgiIKIAotIzogZ2l0LWFtLnNoOjc1OQorIzogZ2l0LWFtLnNoOjc1NwogbXNnaWQgIkNvbW1pdCBCb2R5IGlzOiIKIG1zZ3N0ciAi5o+Q5Lqk5YaF5a655Li677yaIgogCkBAIC00OTA2LDE2ICs5MjAwLDE2IEBACiAjLiBUUkFOU0xBVE9SUzogTWFrZSBzdXJlIHRvIGluY2x1ZGUgW3ldLCBbbl0sIFtlXSwgW3ZdIGFuZCBbYV0KICMuIGluIHlvdXIgdHJhbnNsYXRpb24uIFRoZSBwcm9ncmFtIHdpbGwgb25seSBhY2NlcHQgRW5nbGlzaAogIy4gaW5wdXQgYXQgdGhpcyBwb2ludC4KLSM6IGdpdC1hbS5zaDo3NjYKKyM6IGdpdC1hbS5zaDo3NjQKIG1zZ2lkICJBcHBseT8gW3ldZXMvW25dby9bZV1kaXQvW3ZdaWV3IHBhdGNoL1thXWNjZXB0IGFsbCAiCiBtc2dzdHIgIuW6lOeUqO+8n1t5XWVzL1tuXW8vW2VdZGl0L1t2XWlldyBwYXRjaC9bYV1jY2VwdCBhbGwgIgogCi0jOiBnaXQtYW0uc2g6ODAyCisjOiBnaXQtYW0uc2g6ODAwCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJBcHBseWluZzogJEZJUlNUTElORSIKIG1zZ3N0ciAi5q2j5bqU55So77yaJEZJUlNUTElORSIKIAotIzogZ2l0LWFtLnNoOjgyMworIzogZ2l0LWFtLnNoOjgyMQogbXNnaWQgIiIKICJObyBjaGFuZ2VzIC0gZGlkIHlvdSBmb3JnZXQgdG8gdXNlICdnaXQgYWRkJz9cbiIKICJJZiB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gc3RhZ2UsIGNoYW5jZXMgYXJlIHRoYXQgc29tZXRoaW5nIGVsc2VcbiIKQEAgLTQ5MjUsMjMgKzkyMTksMzEgQEAKICLlpoLmnpzmsqHmnInku4DkuYjopoHmt7vliqDliLDmmoLlrZjljLrnmoTvvIzliJnlvojlj6/og73mmK/lhbblroPmj5DkuqTlt7Lnu4/lvJXlhaXkuobnm7jlkIznmoTlj5jmm7TjgIJcbiIKICLmgqjkuZ/orrjmg7PopoHot7Pov4fov5nkuKrooaXkuIHjgIIiCiAKLSM6IGdpdC1hbS5zaDo4MzEKKyM6IGdpdC1hbS5zaDo4MjkKIG1zZ2lkICIiCiAiWW91IHN0aWxsIGhhdmUgdW5tZXJnZWQgcGF0aHMgaW4geW91ciBpbmRleFxuIgogImRpZCB5b3UgZm9yZ2V0IHRvIHVzZSAnZ2l0IGFkZCc/IgotbXNnc3RyICIiCi0i5oKo55qE57Si5byV5Lit5LuN5pyJ5pyq5ZCI5bm255qE6Lev5b6E44CC5oKo5piv5ZCm5b+Y5LqG5omn6KGMICdnaXQgYWRkJ++8nyIKK21zZ3N0ciAi5oKo55qE57Si5byV5Lit5LuN5pyJ5pyq5ZCI5bm255qE6Lev5b6E44CC5oKo5piv5ZCm5b+Y5LqG5omn6KGMICdnaXQgYWRkJ++8nyIKIAotIzogZ2l0LWFtLnNoOjg0NworIzogZ2l0LWFtLnNoOjg0NQogbXNnaWQgIk5vIGNoYW5nZXMgLS0gUGF0Y2ggYWxyZWFkeSBhcHBsaWVkLiIKLW1zZ3N0ciAi5rKh5pyJ5Y+Y5pu0IC0tIOihpeS4geW3sue7j+W6lOeUqOi/h+OAgiIKK21zZ3N0ciAi5rKh5pyJ5Y+Y5pu0IOKAlOKAlCDooaXkuIHlt7Lnu4/lupTnlKjov4fjgIIiCiAKLSM6IGdpdC1hbS5zaDo4NTcKKyM6IGdpdC1hbS5zaDo4NTUKICMsIHNoLWZvcm1hdAogbXNnaWQgIlBhdGNoIGZhaWxlZCBhdCAkbXNnbnVtICRGSVJTVExJTkUiCiBtc2dzdHIgIuihpeS4geWksei0peS6jiAkbXNnbnVtICRGSVJTVExJTkUiCiAKLSM6IGdpdC1hbS5zaDo4NzMKKyM6IGdpdC1hbS5zaDo4NTgKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgY29weSBvZiB0aGUgcGF0Y2ggdGhhdCBmYWlsZWQgaXMgZm91bmQgaW46XG4iCisiICAgJGRvdGVzdC9wYXRjaCIKK21zZ3N0ciAiIgorIuWksei0peeahOihpeS4geaWh+S7tuWJr+acrOS9jeS6ju+8mlxuIgorIiAgICRkb3Rlc3QvcGF0Y2giCisKKyM6IGdpdC1hbS5zaDo4NzYKIG1zZ2lkICJhcHBseWluZyB0byBhbiBlbXB0eSBoaXN0b3J5IgogbXNnc3RyICLmraPlupTnlKjliLDkuIDkuKrnqbrljoblj7LkuIoiCiAKQEAgLTUwNDAsNTYgKzkzNDIsNTYgQEAKICLnhLblkI7pnIDopoHmj5DkvpvmiJHoh7PlsJHkuIDkuKrlpb3niYjmnKzlkozkuIDkuKrlnY/niYjmnKzjgIJcbiIKICLvvIjmgqjlj6/ku6XnlKggXCJnaXQgYmlzZWN0IGJhZFwiIOWSjCBcImdpdCBiaXNlY3QgZ29vZFwiIOWRveS7pOadpeagh+ivhuOAgu+8iSIKIAotIzogZ2l0LWJpc2VjdC5zaDozNDcgZ2l0LWJpc2VjdC5zaDo0NzQKKyM6IGdpdC1iaXNlY3Quc2g6MzYzIGdpdC1iaXNlY3Quc2g6NDkwCiBtc2dpZCAiV2UgYXJlIG5vdCBiaXNlY3RpbmcuIgogbXNnc3RyICLmiJHku6zmsqHmnInlnKjkuozliIbmn6Xmib7jgIIiCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzU0CisjOiBnaXQtYmlzZWN0LnNoOjM3MAogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRpbnZhbGlkJyBpcyBub3QgYSB2YWxpZCBjb21taXQiCiBtc2dzdHIgIickaW52YWxpZCcg5LiN5piv5LiA5Liq5pyJ5pWI55qE5o+Q5LqkIgogCi0jOiBnaXQtYmlzZWN0LnNoOjM2MworIzogZ2l0LWJpc2VjdC5zaDozNzkKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJDb3VsZCBub3QgY2hlY2sgb3V0IG9yaWdpbmFsIEhFQUQgJyRicmFuY2gnLlxuIgogIlRyeSAnZ2l0IGJpc2VjdCByZXNldCA8Y29tbWl0PicuIgogbXNnc3RyICIiCiAi5LiN6IO95qOA5Ye65Y6f5aeLIEhFQUQgJyRicmFuY2gn44CCXG4iCi0i5bCd6K+VICdnaXQgYmlzZWN0IHJlc2V0IDxjb21taXQ+J+OAgiIKKyLlsJ3or5UgJ2dpdCBiaXNlY3QgcmVzZXQgPOaPkOS6pD4n44CCIgogCi0jOiBnaXQtYmlzZWN0LnNoOjM5MAorIzogZ2l0LWJpc2VjdC5zaDo0MDYKIG1zZ2lkICJObyBsb2dmaWxlIGdpdmVuIgogbXNnc3RyICLmnKrmj5Dkvpvml6Xlv5fmlofku7YiCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzkxCisjOiBnaXQtYmlzZWN0LnNoOjQwNwogIywgc2gtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgJGZpbGUgZm9yIHJlcGxheWluZyIKIG1zZ3N0ciAi5LiN6IO96K+75Y+WICRmaWxlIOadpemHjeaUviIKIAotIzogZ2l0LWJpc2VjdC5zaDo0MDgKKyM6IGdpdC1iaXNlY3Quc2g6NDI0CiBtc2dpZCAiPz8gd2hhdCBhcmUgeW91IHRhbGtpbmcgYWJvdXQ/IgogbXNnc3RyICI/PyDmgqjlnKjor7Tku4DkuYg/IgogCi0jOiBnaXQtYmlzZWN0LnNoOjQyMAorIzogZ2l0LWJpc2VjdC5zaDo0MzYKICMsIHNoLWZvcm1hdAogbXNnaWQgInJ1bm5pbmcgJGNvbW1hbmQiCiBtc2dzdHIgIui/kOihjCAkY29tbWFuZCIKIAotIzogZ2l0LWJpc2VjdC5zaDo0MjcKKyM6IGdpdC1iaXNlY3Quc2g6NDQzCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiYmlzZWN0IHJ1biBmYWlsZWQ6XG4iCiAiZXhpdCBjb2RlICRyZXMgZnJvbSAnJGNvbW1hbmQnIGlzIDwgMCBvciA+PSAxMjgiCiBtc2dzdHIgIiIKICLkuozliIbmn6Xmib7ov5DooYzlpLHotKXvvJpcbiIKLSLlkb3ku6QgJyRjb21tYW5kJyDnmoTpgIDlh7rnoIEgJHJlcyDmiJbogIXlsI/kuo4gMCDmiJbogIXlpKfkuo7nrYnkuo4gMTI4IgorIuWRveS7pCAnJGNvbW1hbmQnIOeahOmAgOWHuueggSAkcmVzIOWwj+S6jiAwIOaIluWkp+S6juetieS6jiAxMjgiCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDUzCisjOiBnaXQtYmlzZWN0LnNoOjQ2OQogbXNnaWQgImJpc2VjdCBydW4gY2Fubm90IGNvbnRpbnVlIGFueSBtb3JlIgogbXNnc3RyICLkuozliIbmn6Xmib7kuI3og73nu6fnu63ov5DooYwiCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDU5CisjOiBnaXQtYmlzZWN0LnNoOjQ3NQogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogImJpc2VjdCBydW4gZmFpbGVkOlxuIgpAQCAtNTA5OCw3ICs5NDAwLDcgQEAKICLkuozliIbmn6Xmib7ov5DooYzlpLHotKXvvJpcbiIKICInYmlzZWN0X3N0YXRlICRzdGF0ZScg6YCA5Ye656CB5Li6ICRyZXMiCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDY2CisjOiBnaXQtYmlzZWN0LnNoOjQ4MgogbXNnaWQgImJpc2VjdCBydW4gc3VjY2VzcyIKIG1zZ3N0ciAi5LqM5YiG5p+l5om+6L+Q6KGM5oiQ5YqfIgogCkBAIC01MTE2LDcgKzk0MTgsNyBAQAogbXNnaWQgIlB1bGwgaXMgbm90IHBvc3NpYmxlIGJlY2F1c2UgeW91IGhhdmUgdW5tZXJnZWQgZmlsZXMuIgogbXNnc3RyICJQdWxsIOS4jeWPr+eUqO+8jOWboOS4uuaCqOWwmuacieacquWQiOW5tueahOaWh+S7tuOAgiIKIAotIzogZ2l0LXB1bGwuc2g6MTk3CisjOiBnaXQtcHVsbC5zaDoyMDMKIG1zZ2lkICJ1cGRhdGluZyBhbiB1bmJvcm4gYnJhbmNoIHdpdGggY2hhbmdlcyBhZGRlZCB0byB0aGUgaW5kZXgiCiBtc2dzdHIgIuabtOaWsOWwmuacquivnueUn+eahOWIhuaUr++8jOWPmOabtOa3u+WKoOiHs+e0ouW8lSIKIApAQCAtNTEyNCw3ICs5NDI2LDcgQEAKICMuIFRoZSB3b3JraW5nIHRyZWUgYW5kIHRoZSBpbmRleCBmaWxlIGlzIHN0aWxsIGJhc2VkIG9uIHRoZQogIy4gJG9yaWdfaGVhZCBjb21taXQsIGJ1dCB3ZSBhcmUgbWVyZ2luZyBpbnRvICRjdXJyX2hlYWQuCiAjLiBGaXJzdCB1cGRhdGUgdGhlIHdvcmtpbmcgdHJlZSB0byBtYXRjaCAkY3Vycl9oZWFkLgotIzogZ2l0LXB1bGwuc2g6MjI4CisjOiBnaXQtcHVsbC5zaDoyMzUKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJXYXJuaW5nOiBmZXRjaCB1cGRhdGVkIHRoZSBjdXJyZW50IGJyYW5jaCBoZWFkLlxuIgpAQCAtNTEzNCwxNCArOTQzNiwxMzUgQEAKICLorablkYrvvJpmZXRjaCDmm7TmlrDkuoblvZPliY3nmoTliIbmlK/jgILmgqjnmoTlt6XkvZzljLpcbiIKICLorablkYrvvJrku47ljp/mj5DkuqQgJG9yaWdfaGVhZCDlv6vov5vjgIIiCiAKLSM6IGdpdC1wdWxsLnNoOjI1MworIzogZ2l0LXB1bGwuc2g6MjYwCiBtc2dpZCAiQ2Fubm90IG1lcmdlIG11bHRpcGxlIGJyYW5jaGVzIGludG8gZW1wdHkgaGVhZCIKIG1zZ3N0ciAi5peg5rOV5bCG5aSa5Liq5YiG5pSv5ZCI5bm25Yiw56m65YiG5pSvIgogCi0jOiBnaXQtcHVsbC5zaDoyNTcKKyM6IGdpdC1wdWxsLnNoOjI2NAogbXNnaWQgIkNhbm5vdCByZWJhc2Ugb250byBtdWx0aXBsZSBicmFuY2hlcyIKIG1zZ3N0ciAi5peg5rOV5Y+Y5Z+65Yiw5aSa5Liq5YiG5pSvIgogCisjOiBnaXQtcmViYXNlLnNoOjUzCittc2dpZCAiIgorIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtLCBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIi5cbiIKKyJJZiB5b3UgcHJlZmVyIHRvIHNraXAgdGhpcyBwYXRjaCwgcnVuIFwiZ2l0IHJlYmFzZSAtLXNraXBcIiBpbnN0ZWFkLlxuIgorIlRvIGNoZWNrIG91dCB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBzdG9wIHJlYmFzaW5nLCBydW4gXCJnaXQgcmViYXNlIC0tYWJvcnQiCisiXCIuIgorbXNnc3RyICIiCisi5b2T5oKo6Kej5Yaz5LqG5q2k6Zeu6aKY5ZCO77yM5omn6KGMIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCLjgIJcbiIKKyLlpoLmnpzmgqjmg7Pot7Pov4fmraTooaXkuIHvvIzliJnmiafooYwgXCJnaXQgcmViYXNlIC0tc2tpcFwi44CCXG4iCisi6KaB5oGi5aSN5Y6f5YiG5pSv5bm25YGc5q2i5Y+Y5Z+677yM5omn6KGMIFwiZ2l0IHJlYmFzZSAtLWFib3J0XCLjgIIiCisKKyM6IGdpdC1yZWJhc2Uuc2g6MTYwCittc2dpZCAiVGhlIHByZS1yZWJhc2UgaG9vayByZWZ1c2VkIHRvIHJlYmFzZS4iCittc2dzdHIgIumSqeWtkCBwcmUtcmViYXNlIOaLkue7neWPmOWfuuOAgiIKKworIzogZ2l0LXJlYmFzZS5zaDoxNjUKK21zZ2lkICJJdCBsb29rcyBsaWtlIGdpdC1hbSBpcyBpbiBwcm9ncmVzcy4gQ2Fubm90IHJlYmFzZS4iCittc2dzdHIgIuS8vOS5juato+WkhOS6juWcqCBnaXQtYW0g55qE5omn6KGM6L+H56iL5Lit44CC5peg5rOV5Y+Y5Z+644CCIgorCisjOiBnaXQtcmViYXNlLnNoOjI5NgorbXNnaWQgIlRoZSAtLWV4ZWMgb3B0aW9uIG11c3QgYmUgdXNlZCB3aXRoIHRoZSAtLWludGVyYWN0aXZlIG9wdGlvbiIKK21zZ3N0ciAi6YCJ6aG5IC0tZXhlYyDlv4XpobvlkozpgInpobkgLS1pbnRlcmFjdGl2ZSDlkIzml7bkvb/nlKgiCisKKyM6IGdpdC1yZWJhc2Uuc2g6MzAxCittc2dpZCAiTm8gcmViYXNlIGluIHByb2dyZXNzPyIKK21zZ3N0ciAi5rKh5pyJ5q2j5Zyo6L+b6KGM55qE5Y+Y5Z+677yfIgorCisjOiBnaXQtcmViYXNlLnNoOjMxMgorbXNnaWQgIlRoZSAtLWVkaXQtdG9kbyBhY3Rpb24gY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgaW50ZXJhY3RpdmUgcmViYXNlLiIKK21zZ3N0ciAi5Yqo5L2cIC0tZWRpdC10b2RvIOWPquiDveeUqOWcqOS6pOS6kuW8j+WPmOWfuui/h+eoi+S4reOAgiIKKworIzogZ2l0LXJlYmFzZS5zaDozMTkKK21zZ2lkICJDYW5ub3QgcmVhZCBIRUFEIgorbXNnc3RyICLkuI3og73or7vlj5YgSEVBRCIKKworIzogZ2l0LXJlYmFzZS5zaDozMjIKK21zZ2lkICIiCisiWW91IG11c3QgZWRpdCBhbGwgbWVyZ2UgY29uZmxpY3RzIGFuZCB0aGVuXG4iCisibWFyayB0aGVtIGFzIHJlc29sdmVkIHVzaW5nIGdpdCBhZGQiCittc2dzdHIgIiIKKyLmgqjlv4XpobvnvJbovpHmiYDmnInnmoTlkIjlubblhrLnqoHvvIznhLblkI7pgJrov4cgZ2l0IGFkZFxuIgorIuWRveS7pOWwhuWug+S7rOagh+iusOS4uuW3suino+WGsyIKKworIzogZ2l0LXJlYmFzZS5zaDozNDAKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBtb3ZlIGJhY2sgdG8gJGhlYWRfbmFtZSIKK21zZ3N0ciAi5peg5rOV56e75ZueICRoZWFkX25hbWUiCisKKyM6IGdpdC1yZWJhc2Uuc2g6MzU5CisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiSXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBhbHJlYWR5IGEgJHN0YXRlX2Rpcl9iYXNlIGRpcmVjdG9yeSwgYW5kXG4iCisiSSB3b25kZXIgaWYgeW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGFub3RoZXIgcmViYXNlLiAgSWYgdGhhdCBpcyB0aGVcbiIKKyJjYXNlLCBwbGVhc2UgdHJ5XG4iCisiXHQkY21kX2xpdmVfcmViYXNlXG4iCisiSWYgdGhhdCBpcyBub3QgdGhlIGNhc2UsIHBsZWFzZVxuIgorIlx0JGNtZF9jbGVhcl9zdGFsZV9yZWJhc2VcbiIKKyJhbmQgcnVuIG1lIGFnYWluLiAgSSBhbSBzdG9wcGluZyBpbiBjYXNlIHlvdSBzdGlsbCBoYXZlIHNvbWV0aGluZ1xuIgorInZhbHVhYmxlIHRoZXJlLiIKK21zZ3N0ciAiIgorIuWlveWDj+W3suacieS4gOS4qiAkc3RhdGVfZGlyX2Jhc2Ug55uu5b2V77yM5oiR5oCA55aR5oKo5q2j5aSE5LqO5Y+m5aSW5LiA5Liq5Y+Y5Z+66L+H56iL5Lit44CCXG4iCisi5aaC5p6c5piv6L+Z5qC377yM6K+35bCd6K+V5omn6KGMXG4iCisiXHQkY21kX2xpdmVfcmViYXNlXG4iCisi5aaC5p6c5LiN5piv6L+Z5qC377yM6K+35omn6KGMXG4iCisiXHQkY21kX2NsZWFyX3N0YWxlX3JlYmFzZVxuIgorIueEtuWQjuWGjemHjeaWsOaJp+ihjOWPmOWfuuOAguS4uumBv+WFjeaCqOS4ouWksemHjeimgeaVsOaNru+8jOaIkeW3sue7j+WBnOatouW9k+WJjeaTjeS9nOOAgiIKKworIzogZ2l0LXJlYmFzZS5zaDo0MDQKKyMsIHNoLWZvcm1hdAorbXNnaWQgImludmFsaWQgdXBzdHJlYW0gJHVwc3RyZWFtX25hbWUiCittc2dzdHIgIuaXoOaViOeahOS4iua4uCAkdXBzdHJlYW1fbmFtZSIKKworIzogZ2l0LXJlYmFzZS5zaDo0MjgKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiRvbnRvX25hbWU6IHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIG1lcmdlIGJhc2VzIgorbXNnc3RyICIkb250b19uYW1lOiDmnInkuIDkuKrku6XkuIrnmoTlkIjlubbln7rlh4YiCisKKyM6IGdpdC1yZWJhc2Uuc2g6NDMxIGdpdC1yZWJhc2Uuc2g6NDM1CisjLCBzaC1mb3JtYXQKK21zZ2lkICIkb250b19uYW1lOiB0aGVyZSBpcyBubyBtZXJnZSBiYXNlIgorbXNnc3RyICIkb250b19uYW1lOiDmsqHmnInlkIjlubbln7rlh4YiCisKKyM6IGdpdC1yZWJhc2Uuc2g6NDQwCisjLCBzaC1mb3JtYXQKK21zZ2lkICJEb2VzIG5vdCBwb2ludCB0byBhIHZhbGlkIGNvbW1pdDogJG9udG9fbmFtZSIKK21zZ3N0ciAi5rKh5pyJ5oyH5ZCR5LiA5Liq5pyJ5pWI55qE5o+Q5Lqk77yaJG9udG9fbmFtZSIKKworIzogZ2l0LXJlYmFzZS5zaDo0NjMKKyMsIHNoLWZvcm1hdAorbXNnaWQgImZhdGFsOiBubyBzdWNoIGJyYW5jaDogJGJyYW5jaF9uYW1lIgorbXNnc3RyICLkuKXph43plJnor6/vvJrml6DmraTliIbmlK/vvJokYnJhbmNoX25hbWUiCisKKyM6IGdpdC1yZWJhc2Uuc2g6NDgzCittc2dpZCAiUGxlYXNlIGNvbW1pdCBvciBzdGFzaCB0aGVtLiIKK21zZ3N0ciAi6K+35o+Q5Lqk5oiW5Li65a6D5Lus5L+d5a2Y6L+b5bqm44CCIgorCisjOiBnaXQtcmViYXNlLnNoOjUwMQorIywgc2gtZm9ybWF0Cittc2dpZCAiQ3VycmVudCBicmFuY2ggJGJyYW5jaF9uYW1lIGlzIHVwIHRvIGRhdGUuIgorbXNnc3RyICLlvZPliY3liIbmlK8gJGJyYW5jaF9uYW1lIOaYr+acgOaWsOeahOOAgiIKKworIzogZ2l0LXJlYmFzZS5zaDo1MDQKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkN1cnJlbnQgYnJhbmNoICRicmFuY2hfbmFtZSBpcyB1cCB0byBkYXRlLCByZWJhc2UgZm9yY2VkLiIKK21zZ3N0ciAi5b2T5YmN5YiG5pSvICRicmFuY2hfbmFtZSDmmK/mnIDmlrDnmoTvvIzlvLrliLblj5jln7rjgIIiCisKKyM6IGdpdC1yZWJhc2Uuc2g6NTE1CisjLCBzaC1mb3JtYXQKK21zZ2lkICJDaGFuZ2VzIGZyb20gJG1iIHRvICRvbnRvOiIKK21zZ3N0ciAi5Y+Y5pu05LuOICRtYiDliLAgJG9udG/vvJoiCisKKyMuIERldGFjaCBIRUFEIGFuZCByZXNldCB0aGUgdHJlZQorIzogZ2l0LXJlYmFzZS5zaDo1MjQKK21zZ2lkICJGaXJzdCwgcmV3aW5kaW5nIGhlYWQgdG8gcmVwbGF5IHlvdXIgd29yayBvbiB0b3Agb2YgaXQuLi4iCittc2dzdHIgIummluWFiO+8jOmHjee9ruWktOaMh+mSiOS7peS+v+WcqOS4iumdoumHjeaUvuaCqOeahOW3peS9nC4uLiIKKworIzogZ2l0LXJlYmFzZS5zaDo1MzIKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhc3QtZm9yd2FyZGVkICRicmFuY2hfbmFtZSB0byAkb250b19uYW1lLiIKK21zZ3N0ciAi5b+r6L+bICRicmFuY2hfbmFtZSDoh7MgJG9udG9fbmFtZeOAgiIKKwogIzogZ2l0LXN0YXNoLnNoOjUxCiBtc2dpZCAiZ2l0IHN0YXNoIGNsZWFyIHdpdGggcGFyYW1ldGVycyBpcyB1bmltcGxlbWVudGVkIgogbXNnc3RyICJnaXQgc3Rhc2ggY2xlYXIg5LiN5pSv5oyB5Y+C5pWwIgpAQCAtNTI0OSw1OSArOTY3Miw1OSBAQAogbXNnaWQgIkNhbm5vdCB1bnN0YWdlIG1vZGlmaWVkIGZpbGVzIgogbXNnc3RyICLml6Dms5Xov5jljp/kv67mlLnnmoTmlofku7YiCiAKLSM6IGdpdC1zdGFzaC5zaDo0NzQKKyM6IGdpdC1zdGFzaC5zaDo0NzUKIG1zZ2lkICJJbmRleCB3YXMgbm90IHVuc3Rhc2hlZC4iCiBtc2dzdHIgIue0ouW8leeahOi/m+W6puayoeacieiiq+aBouWkjeOAgiIKIAotIzogZ2l0LXN0YXNoLnNoOjQ5MQorIzogZ2l0LXN0YXNoLnNoOjQ5MgogIywgc2gtZm9ybWF0CiBtc2dpZCAiRHJvcHBlZCAke1JFVn0gKCRzKSIKIG1zZ3N0ciAi5Lii5byD5LqGICR7UkVWfSAoJHMpIgogCi0jOiBnaXQtc3Rhc2guc2g6NDkyCisjOiBnaXQtc3Rhc2guc2g6NDkzCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIke1JFVn06IENvdWxkIG5vdCBkcm9wIHN0YXNoIGVudHJ5IgogbXNnc3RyICIke1JFVn3vvJrkuI3og73kuKLlvIPov5vluqbmnaHnm64iCiAKLSM6IGdpdC1zdGFzaC5zaDo0OTkKKyM6IGdpdC1zdGFzaC5zaDo1MDAKIG1zZ2lkICJObyBicmFuY2ggbmFtZSBzcGVjaWZpZWQiCiBtc2dzdHIgIuacquaMh+WumuWIhuaUr+WQjSIKIAotIzogZ2l0LXN0YXNoLnNoOjU3MAorIzogZ2l0LXN0YXNoLnNoOjU3MQogbXNnaWQgIihUbyByZXN0b3JlIHRoZW0gdHlwZSBcImdpdCBzdGFzaCBhcHBseVwiKSIKIG1zZ3N0ciAi77yI5Li65oGi5aSN5pWw5o2u6L6T5YWlIFwiZ2l0IHN0YXNoIGFwcGx5XCLvvIkiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTYKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTEKICMsIHNoLWZvcm1hdAogbXNnaWQgImNhbm5vdCBzdHJpcCBvbmUgY29tcG9uZW50IG9mZiB1cmwgJyRyZW1vdGV1cmwnIgogbXNnc3RyICLml6Dms5Xku44gdXJsICckcmVtb3RldXJsJyDliaXnprvkuIDkuKrnu4Tku7YiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTA5CisjOiBnaXQtc3VibW9kdWxlLnNoOjE5NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiTm8gc3VibW9kdWxlIG1hcHBpbmcgZm91bmQgaW4gLmdpdG1vZHVsZXMgZm9yIHBhdGggJyRzbV9wYXRoJyIKIG1zZ3N0ciAi5pyq5ZyoIC5naXRtb2R1bGVzIOS4reWPkeeOsOi3r+W+hCAnJHNtX3BhdGgnIOeahOWtkOaooee7hOaYoOWwhCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxNTAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MjM5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJDbG9uZSBvZiAnJHVybCcgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIGZhaWxlZCIKIG1zZ3N0ciAi5peg5rOV5YWL6ZqGICckdXJsJyDliLDlrZDmqKHnu4Tot6/lvoQgJyRzbV9wYXRoJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxNjAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MjUxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJHaXRkaXIgJyRhJyBpcyBwYXJ0IG9mIHRoZSBzdWJtb2R1bGUgcGF0aCAnJGInIG9yIHZpY2UgdmVyc2EiCi1tc2dzdHIgIkdpdGRpciAnJGEnIOWcqOWtkOaooee7hOi3r+W+hCAnJGInIOS5i+S4i+aIluiAheebuOWPjSIKK21zZ3N0ciAiR2l0ZGlyICckYScg5Zyo5a2Q5qih57uE6Lev5b6EICckYicg5LmL5LiL5oiW55u45Y+NIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjI0OQorIzogZ2l0LXN1Ym1vZHVsZS5zaDozNDkKICMsIHNoLWZvcm1hdAogbXNnaWQgInJlcG8gVVJMOiAnJHJlcG8nIG11c3QgYmUgYWJzb2x1dGUgb3IgYmVnaW4gd2l0aCAuL3wuLi8iCiBtc2dzdHIgIueJiOacrOW6k1VSTO+8mickcmVwbycg5b+F6aG75piv57ud5a+56Lev5b6E5oiW5LulIC4vfC4uLyDotbflp4siCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MjY2CisjOiBnaXQtc3VibW9kdWxlLnNoOjM2NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRzbV9wYXRoJyBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaW5kZXgiCiBtc2dzdHIgIickc21fcGF0aCcg5bey57uP5a2Y5Zyo5LqO57Si5byV5LitIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjI3MAorIzogZ2l0LXN1Ym1vZHVsZS5zaDozNzAKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgZm9sbG93aW5nIHBhdGggaXMgaWdub3JlZCBieSBvbmUgb2YgeW91ciAuZ2l0aWdub3JlIGZpbGVzOlxuIgpAQCAtNTMxMiwxNjAgKzk3MzUsMzU3IEBACiAiJHNtX3BhdGhcbiIKICLlpoLmnpzmgqjnoa7lrp7mg7Pmt7vliqDlroPvvIzkvb/nlKggLWYg5Y+C5pWw44CCIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjI4MQorIzogZ2l0LXN1Ym1vZHVsZS5zaDozODgKICMsIHNoLWZvcm1hdAogbXNnaWQgIkFkZGluZyBleGlzdGluZyByZXBvIGF0ICckc21fcGF0aCcgdG8gdGhlIGluZGV4IgogbXNnc3RyICLmt7vliqDkvY3kuo4gJyRzbV9wYXRoJyDnmoTnjrDlrZjniYjmnKzlupPliLDntKLlvJUiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MjgzCisjOiBnaXQtc3VibW9kdWxlLnNoOjM5MAogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRzbV9wYXRoJyBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90IGEgdmFsaWQgZ2l0IHJlcG8iCiBtc2dzdHIgIickc21fcGF0aCcg5bey5a2Y5Zyo5LiU5LiN5piv5LiA5Liq5pyJ5pWI55qEIGdpdCDniYjmnKzlupMiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Mjk3CisjOiBnaXQtc3VibW9kdWxlLnNoOjM5OAorIywgc2gtZm9ybWF0Cittc2dpZCAiQSBnaXQgZGlyZWN0b3J5IGZvciAnJHNtX25hbWUnIGlzIGZvdW5kIGxvY2FsbHkgd2l0aCByZW1vdGUocyk6IgorbXNnc3RyICLmnKzlnLDlj5HnjrAgJyRzbV9uYW1lJyDnmoTkuIDkuKogZ2l0IOebruW9le+8jOS4juWFtuWvueW6lOeahOi/nOeoi+eJiOacrOW6k++8miIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MDAKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJJZiB5b3Ugd2FudCB0byByZXVzZSB0aGlzIGxvY2FsIGdpdCBkaXJlY3RvcnkgaW5zdGVhZCBvZiBjbG9uaW5nIGFnYWluIGZyb20iCittc2dzdHIgIuWmguaenOaCqOaDs+mHjeeUqOatpOacrOWcsCBnaXQg55uu5b2V6ICM5LiN5piv6YeN5paw5YWL6ZqG6IeqIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjQwMgorIywgc2gtZm9ybWF0Cittc2dpZCAiIgorInVzZSB0aGUgJy0tZm9yY2UnIG9wdGlvbi4gSWYgdGhlIGxvY2FsIGdpdCBkaXJlY3RvcnkgaXMgbm90IHRoZSBjb3JyZWN0IHJlcG8iCittc2dzdHIgIuS9v+eUqCAnLS1mb3JjZScg5Y+C5pWw44CC5aaC5p6c5pys5ZywIGdpdCDnm67lvZXkuI3mmK/mraPnoa7nmoTniYjmnKzlupMiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDAzCisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisib3IgeW91IGFyZSB1bnN1cmUgd2hhdCB0aGlzIG1lYW5zIGNob29zZSBhbm90aGVyIG5hbWUgd2l0aCB0aGUgJy0tbmFtZScgIgorIm9wdGlvbi4iCittc2dzdHIgIuaIluiAheaCqOS4jeehruWumuWFtuS4reWQq+S5ieS9v+eUqCAnLS1uYW1lJyDlj4LmlbDpgInmi6nlj6blpJbkuIDkuKrlkI3np7DjgIIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDA1CisjLCBzaC1mb3JtYXQKK21zZ2lkICJSZWFjdGl2YXRpbmcgbG9jYWwgZ2l0IGRpcmVjdG9yeSBmb3Igc3VibW9kdWxlICckc21fbmFtZScuIgorbXNnc3RyICLmv4DmtLvmnKzlnLAgZ2l0IOebruW9leWIsOWtkOaooee7hCAnJHNtX25hbWUn44CCIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjQxNwogIywgc2gtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0IHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgogbXNnc3RyICLkuI3og73mo4Dlh7rlrZDmqKHnu4QgJyRzbV9wYXRoJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozMDIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDIyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gYWRkIHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgogbXNnc3RyICLml6Dms5Xmt7vliqDlrZDmqKHnu4QgJyRzbV9wYXRoJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozMDcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDMxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgc3VibW9kdWxlICckc21fcGF0aCciCiBtc2dzdHIgIuaXoOazleazqOWGjOWtkOaooee7hCAnJHNtX3BhdGgnIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM0OQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NzQKICMsIHNoLWZvcm1hdAogbXNnaWQgIkVudGVyaW5nICckcHJlZml4JHNtX3BhdGgnIgogbXNnc3RyICLmraPlnKjov5vlhaUgJyRwcmVmaXgkc21fcGF0aCciCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzYzCisjOiBnaXQtc3VibW9kdWxlLnNoOjQ4OAogIywgc2gtZm9ybWF0CiBtc2dpZCAiU3RvcHBpbmcgYXQgJyRzbV9wYXRoJzsgc2NyaXB0IHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cy4iCiBtc2dzdHIgIuWBnOatouS6jiAnJHNtX3BhdGgn77yM6ISa5pys6L+U5Zue6Z2e6Zu25YC844CCIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQwNgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo1MzIKICMsIHNoLWZvcm1hdAogbXNnaWQgIk5vIHVybCBmb3VuZCBmb3Igc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyBpbiAuZ2l0bW9kdWxlcyIKIG1zZ3N0ciAi5ZyoIC5naXRtb2R1bGVzIOS4reacquaJvuWIsOWtkOaooee7hOi3r+W+hCAnJHNtX3BhdGgnIOeahCB1cmwiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDE1CisjOiBnaXQtc3VibW9kdWxlLnNoOjU0MQogIywgc2gtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHVybCBmb3Igc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKIG1zZ3N0ciAi5peg5rOV5Li65a2Q5qih57uE6Lev5b6EICckc21fcGF0aCcg5rOo5YaMIHVybCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MTcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTQzCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJTdWJtb2R1bGUgJyRuYW1lJyAoJHVybCkgcmVnaXN0ZXJlZCBmb3IgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICLlrZDmqKHnu4QgJyRuYW1lJyAoJHVybCkg5bey5Li66Lev5b6EICckc21fcGF0aCcg5rOo5YaMIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQyNQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NTEKICMsIHNoLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciB1cGRhdGUgbW9kZSBmb3Igc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKIG1zZ3N0ciAi5peg5rOV5Li65a2Q5qih57uE6Lev5b6EICckc21fcGF0aCcg5rOo5YaM5pu05paw5qih5byPIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjUyNAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo1ODgKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlVzZSAnLicgaWYgeW91IHJlYWxseSB3YW50IHRvIGRlaW5pdGlhbGl6ZSBhbGwgc3VibW9kdWxlcyIKK21zZ3N0ciAi5L2/55SoICcuJyDlpoLmnpzmgqjnnJ/nmoTmg7PopoHlr7nmiYDmnInlrZDmqKHnu4Tlj5bmtojliJ3lp4vljJYiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjAzCisjLCBzaC1mb3JtYXQKK21zZ2lkICJTdWJtb2R1bGUgd29yayB0cmVlICckc21fcGF0aCcgY29udGFpbnMgYSAuZ2l0IGRpcmVjdG9yeSIKK21zZ3N0ciAi5a2Q5qih57uE5bel5L2c5Yy6ICckc21fcGF0aCcg5YyF5ZCr5LiA5LiqIC5naXQg55uu5b2VIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYwNAogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgotIlN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCcgbm90IGluaXRpYWxpemVkXG4iCisiKHVzZSAncm0gLXJmJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIGl0IGluY2x1ZGluZyBhbGwgb2YgaXRzIGhpc3RvcnkpIgorbXNnc3RyICLvvIjkvb/nlKggJ3JtIC1yZicg5ZG95Luk5aaC5p6c5oKo55yf55qE5oOz5Yig6Zmk5a6D5Y+K5YW25YWo6YOo5Y6G5Y+y77yJIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYxMAorIywgc2gtZm9ybWF0Cittc2dpZCAiIgorIlN1Ym1vZHVsZSB3b3JrIHRyZWUgJyRzbV9wYXRoJyBjb250YWlucyBsb2NhbCBtb2RpZmljYXRpb25zOyB1c2UgJy1mJyB0byAiCisiZGlzY2FyZCB0aGVtIgorbXNnc3RyICLlrZDmqKHnu4Tlt6XkvZzljLogJyRzbV9wYXRoJyDljIXlkKvmnKzlnLDkv67mlLnvvJvkvb/nlKggJy1mJyDkuKLlvIPlroPku6wiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjEzCisjLCBzaC1mb3JtYXQKK21zZ2lkICJDbGVhcmVkIGRpcmVjdG9yeSAnJHNtX3BhdGgnIgorbXNnc3RyICLlt7LmuIXpmaTnm67lvZUgJyRzbV9wYXRoJyIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTQKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCByZW1vdmUgc3VibW9kdWxlIHdvcmsgdHJlZSAnJHNtX3BhdGgnIgorbXNnc3RyICLml6Dms5Xnp7vpmaTlrZDmqKHnu4Tlt6XkvZzljLogJyRzbV9wYXRoJyIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTcKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBjcmVhdGUgZW1wdHkgc3VibW9kdWxlIGRpcmVjdG9yeSAnJHNtX3BhdGgnIgorbXNnc3RyICLkuI3og73liJvlu7rnqbrnmoTlrZDmqKHnu4Tnm67lvZUgJyRzbV9wYXRoJyIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MjYKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlN1Ym1vZHVsZSAnJG5hbWUnICgkdXJsKSB1bnJlZ2lzdGVyZWQgZm9yIHBhdGggJyRzbV9wYXRoJyIKK21zZ3N0ciAi5a2Q5qih57uEICckbmFtZScgKCR1cmwpIOacquWvuei3r+W+hCAnJHNtX3BhdGgnIOazqOWGjCIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo3MzEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyBub3QgaW5pdGlhbGl6ZWRcbiIKICJNYXliZSB5b3Ugd2FudCB0byB1c2UgJ3VwZGF0ZSAtLWluaXQnPyIKIG1zZ3N0ciAiIgotIuWtkOaooee7hOi3r+W+hCAnJHNtX3BhdGgnIOayoeacieWIneWni+WMllxuIgorIuWtkOaooee7hOi3r+W+hCAnJHByZWZpeCRzbV9wYXRoJyDmsqHmnInliJ3lp4vljJZcbiIKICLkuZ/orrjmgqjmg7PnlKggJ3VwZGF0ZSAtLWluaXQn77yfIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjUzNworIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NDQKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byBmaW5kIGN1cnJlbnQgcmV2aXNpb24gaW4gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKLW1zZ3N0ciAi5peg5rOV5Zyo5a2Q5qih57uE6Lev5b6EICckc21fcGF0aCcg5Lit5om+5Yiw5b2T5YmN54mI5pysIgorbXNnaWQgIlVuYWJsZSB0byBmaW5kIGN1cnJlbnQgcmV2aXNpb24gaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIuaXoOazleWcqOWtkOaooee7hOi3r+W+hCAnJHByZWZpeCRzbV9wYXRoJyDkuK3mib7liLDlvZPliY3niYjmnKwiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTU2CisjOiBnaXQtc3VibW9kdWxlLnNoOjc1MwogIywgc2gtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIuaXoOazleWcqOWtkOaooee7hOi3r+W+hCAnJHNtX3BhdGgnIOS4reiOt+WPliIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NzAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Nzc3CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gcmViYXNlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKLW1zZ3N0ciAi5peg5rOV5Zyo5a2Q5qih57uE6Lev5b6EICckc21fcGF0aCcg5Lit5Y+Y5Z+6ICckc2hhMSciCittc2dpZCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICLml6Dms5XlnKjlrZDmqKHnu4Tot6/lvoQgJyRwcmVmaXgkc21fcGF0aCcg5Lit6I635Y+WIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU3MQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTEKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCc6IHJlYmFzZWQgaW50byAnJHNoYTEnIgotbXNnc3RyICLlrZDmqKHnu4Tot6/lvoQgJyRzbV9wYXRoJ++8muWPmOWfuuiHsyAnJHNoYTEnIgorbXNnaWQgIlVuYWJsZSB0byByZWJhc2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAi5peg5rOV5Zyo5a2Q5qih57uE6Lev5b6EICckcHJlZml4JHNtX3BhdGgnIOS4reWPmOWfuiAnJHNoYTEnIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU3NgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTIKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byBtZXJnZSAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCi1tc2dzdHIgIuaXoOazleWQiOW5tiAnJHNoYTEnIOWIsOWtkOaooee7hOi3r+W+hCAnJHNtX3BhdGgnIOS4rSIKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogcmViYXNlZCBpbnRvICckc2hhMSciCittc2dzdHIgIuWtkOaooee7hOi3r+W+hCAnJHByZWZpeCRzbV9wYXRoJ++8muWPmOWfuuiHsyAnJHNoYTEnIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU3NworIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTcKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCc6IG1lcmdlZCBpbiAnJHNoYTEnIgotbXNnc3RyICLlrZDmqKHnu4Tot6/lvoQgJyRzbV9wYXRoJ++8muW3suWQiOW5tuWFpSAnJHNoYTEnIgorbXNnaWQgIlVuYWJsZSB0byBtZXJnZSAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICLml6Dms5XlkIjlubYgJyRzaGExJyDliLDlrZDmqKHnu4Tot6/lvoQgJyRwcmVmaXgkc21fcGF0aCcg5LitIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU4MgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTgKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byBjaGVja291dCAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCi1tc2dzdHIgIuaXoOazleWcqOWtkOaooee7hOi3r+W+hCAnJHNtX3BhdGgnIOS4reajgOWHuiAnJHNoYTEnIgorbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnOiBtZXJnZWQgaW4gJyRzaGExJyIKK21zZ3N0ciAi5a2Q5qih57uE6Lev5b6EICckcHJlZml4JHNtX3BhdGgn77ya5bey5ZCI5bm25YWlICckc2hhMSciCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTgzCisjOiBnaXQtc3VibW9kdWxlLnNoOjgwMwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJzogY2hlY2tlZCBvdXQgJyRzaGExJyIKLW1zZ3N0ciAi5a2Q5qih57uE6Lev5b6EICckc21fcGF0aCfvvJrmo4Dlh7ogJyRzaGExJyIKK21zZ2lkICJVbmFibGUgdG8gY2hlY2tvdXQgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAi5peg5rOV5Zyo5a2Q5qih57uE6Lev5b6EICckcHJlZml4JHNtX3BhdGgnIOS4reajgOWHuiAnJHNoYTEnIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjYwNSBnaXQtc3VibW9kdWxlLnNoOjkyOAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MDQKICMsIHNoLWZvcm1hdAotbXNnaWQgIkZhaWxlZCB0byByZWN1cnNlIGludG8gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKLW1zZ3N0ciAi5peg5rOV6YCS5b2S6L+b5a2Q5qih57uE6Lev5b6EICckc21fcGF0aCciCittc2dpZCAiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCc6IGNoZWNrZWQgb3V0ICckc2hhMSciCittc2dzdHIgIuWtkOaooee7hOi3r+W+hCAnJHByZWZpeCRzbV9wYXRoJ++8muajgOWHuiAnJHNoYTEnIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjcxMwotbXNnaWQgIi0tY2FjaGVkIGNhbm5vdCBiZSB1c2VkIHdpdGggLS1maWxlcyIKLW1zZ3N0ciAiLS1jYWNoZWQg5LiN6IO95ZKMIC0tZmlsZXMg5YWx55SoIgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MzEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZWN1cnNlIGludG8gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIuaXoOazlemAkuW9kui/m+WtkOaooee7hOi3r+W+hCAnJHByZWZpeCRzbV9wYXRoJyIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo5MzkKK21zZ2lkICJUaGUgLS1jYWNoZWQgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggdGhlIC0tZmlsZXMgb3B0aW9uIgorbXNnc3RyICLpgInpobkgLS1jYWNoZWQg5LiN6IO95ZKM6YCJ6aG5IC0tZmlsZXMg5ZCM5pe25L2/55SoIgogCiAjLiB1bmV4cGVjdGVkIHR5cGUKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NzUzCisjOiBnaXQtc3VibW9kdWxlLnNoOjk3OQogIywgc2gtZm9ybWF0CiBtc2dpZCAidW5leHBlY3RlZCBtb2RlICRtb2RfZHN0IgogbXNnc3RyICLmhI/lpJbnmoTmqKHlvI8gJG1vZF9kc3QiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NzEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTk3CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIgIFdhcm46ICRuYW1lIGRvZXNuJ3QgY29udGFpbiBjb21taXQgJHNoYTFfc3JjIgogbXNnc3RyICIgIOitpuWRiu+8miRuYW1lIOacquWMheWQq+aPkOS6pCAkc2hhMV9zcmMiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NzQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTAwMAogIywgc2gtZm9ybWF0CiBtc2dpZCAiICBXYXJuOiAkbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0ICRzaGExX2RzdCIKIG1zZ3N0ciAiICDorablkYrvvJokbmFtZSDmnKrljIXlkKvmj5DkuqQgJHNoYTFfZHN0IgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Nzc3CisjOiBnaXQtc3VibW9kdWxlLnNoOjEwMDMKICMsIHNoLWZvcm1hdAogbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdHMgJHNoYTFfc3JjIGFuZCAkc2hhMV9kc3QiCiBtc2dzdHIgIiAg6K2m5ZGK77yaJG5hbWUg5pyq5YyF5ZCr5o+Q5LqkICRzaGExX3NyYyDlkowgJHNoYTFfZHN0IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjgwMgorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDI4CiBtc2dpZCAiYmxvYiIKLW1zZ3N0ciAiYmxvYiIKK21zZ3N0ciAi5pWw5o2u5a+56LGhIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjgwMwotbXNnaWQgInN1Ym1vZHVsZSIKLW1zZ3N0ciAi5a2Q5qih57uEIgorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDY2Cittc2dpZCAiU3VibW9kdWxlcyBjaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoiCittc2dzdHIgIuWtkOaooee7hOW3suS/ruaUueS9huWwmuacquabtOaWsO+8miIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4NDAKLW1zZ2lkICIjIFN1Ym1vZHVsZXMgY2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6IgotbXNnc3RyICIjIOWtkOaooee7hOW3suS/ruaUueS9huWwmuacquabtOaWsO+8miIKLQotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4NDIKLW1zZ2lkICIjIFN1Ym1vZHVsZSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCisjOiBnaXQtc3VibW9kdWxlLnNoOjEwNjgKK21zZ2lkICJTdWJtb2R1bGUgY2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6IgogbXNnc3RyICLopoHmj5DkuqTnmoTlrZDmqKHnu4Tlj5jmm7TvvJoiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6OTc0CisjOiBnaXQtc3VibW9kdWxlLnNoOjExNTMKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN5bmNocm9uaXppbmcgc3VibW9kdWxlIHVybCBmb3IgJyRuYW1lJyIKLW1zZ3N0ciAi5Li6ICckbmFtZScg5ZCM5q2l5a2Q5qih57uEIHVybCIKK21zZ2lkICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCittc2dzdHIgIuaXoOazlemAkuW9kui/m+WtkOaooee7hOi3r+W+hCAnJHNtX3BhdGgnIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjEyMTYKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlN5bmNocm9uaXppbmcgc3VibW9kdWxlIHVybCBmb3IgJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIuS4uiAnJHByZWZpeCRzbV9wYXRoJyDlkIzmraXlrZDmqKHnu4QgdXJsIgorCisjfiBtc2dpZCAiZ2l0IHNob3J0bG9nIFstbl0gWy1zXSBbLWVdIFstd10gW3Jldi1vcHRzXSBbLS1dIFs8Y29tbWl0LWlkPi4uLiBdIgorI34gbXNnc3RyICJnaXQgc2hvcnRsb2cgWy1uXSBbLXNdIFstZV0gWy13XSBb54mI5pys6YCJ6aG5XSBbLS1dIFs85o+Q5Lqk5Y+3Pi4uLiBdIgorCisjfiBtc2dpZCAiU2VlICdnaXQgaGVscCA8Y29tbWFuZD4nIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGEgc3BlY2lmaWMgY29tbWFuZC4iCisjfiBtc2dzdHIgIuWPguingSAnZ2l0IGhlbHAgPGNvbW1hbmQ+JyDku6Xojrflvpfor6Xnibnlrprlkb3ku6TnmoTor6bnu4bkv6Hmga/jgIIiCisKKyN+IG1zZ2lkICJCVUc6IGltcG9zc2libGUgY29tYmluYXRpb24gb2YgJWQgYW5kICVwIgorI34gbXNnc3RyICJCVUc6IOaXoOazlee7hOWQiCAlZCDlkowgJXAiCisKKyMgIOivkeiAhe+8muS7peS4i+S4ieadoeWunumZheS4uuS4gOS4quauteiQvQorI34gbXNnaWQgIkl0IHRvb2sgJS4yZiBzZWNvbmRzIHRvIGVudW1lcmF0ZSB1bnRyYWNrZWQgZmlsZXMuICAnc3RhdHVzIC11bm8nIgorI34gbXNnc3RyICLogJfotLnkuoYgJS4yZiDnp5Lku6XmnprkuL7mnKrot5/ouKrnmoTmlofku7bjgIInc3RhdHVzIC11bm8nIgorCisjICDor5HogIXvvJrkuLrlr7npvZDvvIzkuIvpnaLkuKTlj6XlhoXlrrnmnInosIPmlbQKKyN+IG1zZ2lkICJtYXkgc3BlZWQgaXQgdXAsIGJ1dCB5b3UgaGF2ZSB0byBiZSBjYXJlZnVsIG5vdCB0byBmb3JnZXQgdG8gYWRkIgorI34gbXNnc3RyICLkuZ/orrjog73mj5Dpq5jpgJ/luqbvvIzkvYbmgqjpnIDopoHlsI/lv4PkuI3opoHlv5jkuobmt7vliqDmlrDmlofku7YiCisKKyN+IG1zZ2lkICJuZXcgZmlsZXMgeW91cnNlbGYgKHNlZSAnZ2l0IGhlbHAgc3RhdHVzJykuIgorI34gbXNnc3RyICLvvIjlj4Lop4EgJ2dpdCBoZWxwIHN0YXR1cyfvvInjgIIiCisKKyMsIGZ1enp5CisjfiBtc2dpZCAiYWFhU3luY2hyb25pemluZyBzdWJtb2R1bGUgdXJsIGZvciAnJHByZWZpeCRzbV9wYXRoJyIKKyN+IG1zZ3N0ciAi5Li6ICckcHJlZml4JHNtX3BhdGgnIOWQjOatpeWtkOaooee7hCB1cmwiCisKKyN+IG1zZ2lkICJ1c2UgYW55IHJlZiBpbiAuZ2l0L3JlZnMiCisjfiBtc2dzdHIgIuS9v+eUqCAuZ2l0L3JlZnMg6YeM55qE5Lu75oSP5byV55SoIgorCisjfiBtc2dpZCAidXNlIGFueSB0YWcgaW4gLmdpdC9yZWZzL3RhZ3MiCisjfiBtc2dzdHIgIuS9v+eUqCAuZ2l0L3JlZnMvdGFncyDph4znmoTku7vmhI8gdGFnIgorCisjfiBtc2dpZCAiYmFkIG9iamVjdCAlcyIKKyN+IG1zZ3N0ciAi5Z2P5a+56LGhICVzIgorCisjfiBtc2dpZCAiYm9ndXMgY29tbWl0dGVyIGluZm8gJXMiCisjfiBtc2dzdHIgIuiZmuWBh+eahOaPkOS6pOiAheS/oeaBryAlcyIKKworI34gbXNnaWQgImNhbid0IGZkb3BlbiAnc2hvdycgb3V0cHV0IGZkIgorI34gbXNnc3RyICLkuI3og73miZPlvIAgJ3Nob3cnIOi+k+WHuuaWh+S7tuWPpeafhCIKKworI34gbXNnaWQgImZhaWxlZCB0byBjbG9zZSBwaXBlIHRvICdzaG93JyBmb3Igb2JqZWN0ICclcyciCisjfiBtc2dzdHIgIuaXoOazleS4uuWvueixoSAnJXMnIOeahCAnc2hvdycg5YWz6Zet566h6YGTIgorCisjfiBtc2dpZCAiIDAgZmlsZXMgY2hhbmdlZCIKKyN+IG1zZ3N0ciAiIDAg5Liq5paH5Lu26KKr5L+u5pS5IgorCisjfiBtc2dpZCAiICVkIGZpbGUgY2hhbmdlZCIKKyN+IG1zZ2lkX3BsdXJhbCAiICVkIGZpbGVzIGNoYW5nZWQiCisjfiBtc2dzdHJbMF0gIiAlZCDkuKrmlofku7booqvkv67mlLkiCisjfiBtc2dzdHJbMV0gIiAlZCDkuKrmlofku7booqvkv67mlLkiCisKKyN+IG1zZ2lkICIsICVkIGluc2VydGlvbigrKSIKKyN+IG1zZ2lkX3BsdXJhbCAiLCAlZCBpbnNlcnRpb25zKCspIgorI34gbXNnc3RyWzBdICLvvIzmj5LlhaUgJWQg6KGMKCspIgorI34gbXNnc3RyWzFdICLvvIzmj5LlhaUgJWQg6KGMKCspIgorCisjfiBtc2dpZCAiLCAlZCBkZWxldGlvbigtKSIKKyN+IG1zZ2lkX3BsdXJhbCAiLCAlZCBkZWxldGlvbnMoLSkiCisjfiBtc2dzdHJbMF0gIu+8jOWIoOmZpCAlZCDooYwoLSkiCisjfiBtc2dzdHJbMV0gIu+8jOWIoOmZpCAlZCDooYwoLSkiCisKKyN+IG1zZ2lkICJZb3UgZG8gbm90IGhhdmUgYSB2YWxpZCBIRUFEIgorI34gbXNnc3RyICLmgqjmsqHmnInkuIDkuKrmnInmlYjnmoQgSEVBRCIKKworI34gbXNnaWQgIm9vcHMiCisjfiBtc2dzdHIgIuWTjuWTnyIKKworI34gbXNnaWQgIldvdWxkIG5vdCByZW1vdmUgJXNcbiIKKyN+IG1zZ3N0ciAi5LiN5Lya5Yig6ZmkICVzXG4iCisKKyN+IG1zZ2lkICJOb3QgcmVtb3ZpbmcgJXNcbiIKKyN+IG1zZ3N0ciAi5pyq5Yig6ZmkICVzXG4iCisKKyN+IG1zZ2lkICJBdXRvIHBhY2tpbmcgdGhlIHJlcG9zaXRvcnkgZm9yIG9wdGltdW0gcGVyZm9ybWFuY2UuXG4iCisjfiBtc2dzdHIgIuiHquWKqOaJk+WMheeJiOacrOW6k+S7peaxguacgOS9s+aAp+iDveOAglxuIgorCisjfiBtc2dpZCAiZ2l0IHJlbW90ZSBzZXQtaGVhZCA8bmFtZT4gKC1hIHwgLWQgfCA8YnJhbmNoPl0pIgorI34gbXNnc3RyICJnaXQgcmVtb3RlIHNldC1oZWFkIDzlkI3np7A+ICgtYSB8IC1kIHwgPOWIhuaUrz5dKSIKKworI34gbXNnaWQgIkNvdWxkIG5vdCByZWFkIGluZGV4IgorI34gbXNnc3RyICLkuI3og73or7vlj5bntKLlvJUiCisKKyMgIOivkeiAhe+8muS4reaWh+Wtl+espuS4suaLvOaOpe+8jOWPr+WIoOmZpOWJjeWvvOepuuagvAorI34gbXNnaWQgIiAodXNlIFwiZ2l0IGFkZFwiIHRvIHRyYWNrKSIKKyN+IG1zZ3N0ciAi77yI5L2/55SoIFwiZ2l0IGFkZFwiIOW7uueri+i3n+i4qu+8iSIKKworI34gbXNnaWQgIi1CIGNhbm5vdCBiZSB1c2VkIHdpdGggLWIiCisjfiBtc2dzdHIgIi1CIOS4jeiDveWSjCAtYiDlkIzml7bkvb/nlKgiCisKKyN+IG1zZ2lkICItLXBhdGNoIGlzIGluY29tcGF0aWJsZSB3aXRoIGFsbCBvdGhlciBvcHRpb25zIgorI34gbXNnc3RyICItLXBhdGNoIOmAiemhueWSjOWFtuS7lumAiemhueS4jeWFvOWuuSIKKworI34gbXNnaWQgIi0tZGV0YWNoIGNhbm5vdCBiZSB1c2VkIHdpdGggLWIvLUIvLS1vcnBoYW4iCisjfiBtc2dzdHIgIi0tZGV0YWNoIOS4jeiDveWSjCAtYi8tQi8tLW9ycGhhbiDlkIzml7bkvb/nlKgiCisKKyN+IG1zZ2lkICItLWRldGFjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIC10IgorI34gbXNnc3RyICItLWRldGFjaCDkuI3og73lkowgLXQg5ZCM5pe25L2/55SoIgorCisjfiBtc2dpZCAiLS1vcnBoYW4gYW5kIC1ifC1CIGFyZSBtdXR1YWxseSBleGNsdXNpdmUiCisjfiBtc2dzdHIgIi0tb3JwaGFuIOWSjCAtYnwtQiDkupLmlqUiCisKKyN+IG1zZ2lkICItLW9ycGhhbiBjYW5ub3QgYmUgdXNlZCB3aXRoIC10IgorI34gbXNnc3RyICItLW9ycGhhbiDkuI3og73lkowgLXQg5ZCM5pe25L2/55SoIgorCisjfiBtc2dpZCAiZ2l0IGNoZWNrb3V0OiAtZiBhbmQgLW0gYXJlIGluY29tcGF0aWJsZSIKKyN+IG1zZ3N0ciAiZ2l0IGNoZWNrb3V077yaLWYg5ZKMIC1tIOS4jeWFvOWuuSIKKworI34gbXNnaWQgIiIKKyN+ICJnaXQgY2hlY2tvdXQ6IHVwZGF0aW5nIHBhdGhzIGlzIGluY29tcGF0aWJsZSB3aXRoIHN3aXRjaGluZyBicmFuY2hlcy4iCisjfiBtc2dzdHIgImdpdCBjaGVja291dO+8muabtOaWsOi3r+W+hOWSjOWIh+aNouWIhuaUr+S4jeWFvOWuueOAgiIKKworI34gbXNnaWQgImRpZmYgc2V0dXAgZmFpbGVkIgorI34gbXNnc3RyICJkaWZmIOiuvue9ruWksei0pSIKKworI34gbXNnaWQgIm1lcmdlLXJlY3Vyc2l2ZTogZGlzayBmdWxsPyIKKyN+IG1zZ3N0ciAibWVyZ2UtcmVjdXJzaXZl77ya56OB55uY5bey5ruh77yfIgorCisjfiBtc2dpZCAiZGlmZl9zZXR1cF9kb25lIGZhaWxlZCIKKyN+IG1zZ3N0ciAiZGlmZl9zZXR1cF9kb25lIOWksei0pSIKZGlmZiAtLWdpdCBhL3ByZXR0eS5jIGIvcHJldHR5LmMKaW5kZXggOGIxZWE5Zi4uOWU0MzE1NCAxMDA2NDQKLS0tIGEvcHJldHR5LmMKKysrIGIvcHJldHR5LmMKQEAgLTIzMSw3ICsyMzEsNyBAQAogCX0KIH0KIAotc3RhdGljIGludCBoYXNfcmZjODIyX3NwZWNpYWxzKGNvbnN0IGNoYXIgKnMsIGludCBsZW4pCitzdGF0aWMgaW50IG5lZWRzX3JmYzgyMl9xdW90aW5nKGNvbnN0IGNoYXIgKnMsIGludCBsZW4pCiB7CiAJaW50IGk7CiAJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQpAQCAtMjQwLDYgKzI0MCwxNyBAQAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGxhc3RfbGluZV9sZW5ndGgoc3RydWN0IHN0cmJ1ZiAqc2IpCit7CisJaW50IGk7CisKKwkvKiBIb3cgbWFueSBieXRlcyBhcmUgYWxyZWFkeSB1c2VkIG9uIHRoZSBsYXN0IGxpbmU/ICovCisJZm9yIChpID0gc2ItPmxlbiAtIDE7IGkgPj0gMDsgaS0tKQorCQlpZiAoc2ItPmJ1ZltpXSA9PSAnXG4nKQorCQkJYnJlYWs7CisJcmV0dXJuIHNiLT5sZW4gLSAoaSArIDEpOworfQorCiBzdGF0aWMgdm9pZCBhZGRfcmZjODIyX3F1b3RlZChzdHJ1Y3Qgc3RyYnVmICpvdXQsIGNvbnN0IGNoYXIgKnMsIGludCBsZW4pCiB7CiAJaW50IGk7CkBAIC0yNjEsMTI0ICsyNzIsMjA0IEBACiAJc3RyYnVmX2FkZGNoKG91dCwgJyInKTsKIH0KIAotc3RhdGljIGludCBpc19yZmMyMDQ3X3NwZWNpYWwoY2hhciBjaCkKK2VudW0gcmZjMjA0N190eXBlIHsKKwlSRkMyMDQ3X1NVQkpFQ1QsCisJUkZDMjA0N19BRERSRVNTLAorfTsKKworc3RhdGljIGludCBpc19yZmMyMDQ3X3NwZWNpYWwoY2hhciBjaCwgZW51bSByZmMyMDQ3X3R5cGUgdHlwZSkKIHsKLQlyZXR1cm4gKG5vbl9hc2NpaShjaCkgfHwgKGNoID09ICc9JykgfHwgKGNoID09ICc/JykgfHwgKGNoID09ICdfJykpOworCS8qCisJICogcmZjMjA0Nywgc2VjdGlvbiA0LjI6CisJICoKKwkgKiAgICA4LWJpdCB2YWx1ZXMgd2hpY2ggY29ycmVzcG9uZCB0byBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVycyBvdGhlcgorCSAqICAgIHRoYW4gIj0iLCAiPyIsIGFuZCAiXyIgKHVuZGVyc2NvcmUpLCBNQVkgYmUgcmVwcmVzZW50ZWQgYXMgdGhvc2UKKwkgKiAgICBjaGFyYWN0ZXJzLiAgKEJ1dCBzZWUgc2VjdGlvbiA1IGZvciByZXN0cmljdGlvbnMuKSAgSW4KKwkgKiAgICBwYXJ0aWN1bGFyLCBTUEFDRSBhbmQgVEFCIE1VU1QgTk9UIGJlIHJlcHJlc2VudGVkIGFzIHRoZW1zZWx2ZXMKKwkgKiAgICB3aXRoaW4gZW5jb2RlZCB3b3Jkcy4KKwkgKi8KKworCS8qCisJICogcnVsZSBvdXQgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgYW5kIG5vbi1wcmludGFibGUgY2hhcmFjdGVycyAodGhlCisJICogbm9uLUFTQ0lJIGNoZWNrIHNob3VsZCBiZSByZWR1bmRhbnQgYXMgaXNwcmludCgpIGlzIG5vdCBsb2NhbGl6ZWQKKwkgKiBhbmQgb25seSBrbm93cyBhYm91dCBBU0NJSSwgYnV0IGJlIGRlZmVuc2l2ZSBhYm91dCB0aGF0KQorCSAqLworCWlmIChub25fYXNjaWkoY2gpIHx8ICFpc3ByaW50KGNoKSkKKwkJcmV0dXJuIDE7CisKKwkvKgorCSAqIHJ1bGUgb3V0IHNwZWNpYWwgcHJpbnRhYmxlIGNoYXJhY3RlcnMgKCcgJyBzaG91bGQgYmUgdGhlIG9ubHkKKwkgKiB3aGl0ZXNwYWNlIGNoYXJhY3RlciBjb25zaWRlcmVkIHByaW50YWJsZSwgYnV0IGJlIGRlZmVuc2l2ZSBhbmQgdXNlCisJICogaXNzcGFjZSgpKQorCSAqLworCWlmIChpc3NwYWNlKGNoKSB8fCBjaCA9PSAnPScgfHwgY2ggPT0gJz8nIHx8IGNoID09ICdfJykKKwkJcmV0dXJuIDE7CisKKwkvKgorCSAqIHJmYzIwNDcsIHNlY3Rpb24gNS4zOgorCSAqCisJICogICAgQXMgYSByZXBsYWNlbWVudCBmb3IgYSAnd29yZCcgZW50aXR5IHdpdGhpbiBhICdwaHJhc2UnLCBmb3IgZXhhbXBsZSwKKwkgKiAgICBvbmUgdGhhdCBwcmVjZWRlcyBhbiBhZGRyZXNzIGluIGEgRnJvbSwgVG8sIG9yIENjIGhlYWRlci4gIFRoZSBBQk5GCisJICogICAgZGVmaW5pdGlvbiBmb3IgJ3BocmFzZScgZnJvbSBSRkMgODIyIHRodXMgYmVjb21lczoKKwkgKgorCSAqICAgIHBocmFzZSA9IDEqKCBlbmNvZGVkLXdvcmQgLyB3b3JkICkKKwkgKgorCSAqICAgIEluIHRoaXMgY2FzZSB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdGhhdCBtYXkgYmUgdXNlZCBpbiBhICJRIi1lbmNvZGVkCisJICogICAgJ2VuY29kZWQtd29yZCcgaXMgcmVzdHJpY3RlZCB0bzogPHVwcGVyIGFuZCBsb3dlciBjYXNlIEFTQ0lJCisJICogICAgbGV0dGVycywgZGVjaW1hbCBkaWdpdHMsICIhIiwgIioiLCAiKyIsICItIiwgIi8iLCAiPSIsIGFuZCAiXyIKKwkgKiAgICAodW5kZXJzY29yZSwgQVNDSUkgOTUuKT4uICBBbiAnZW5jb2RlZC13b3JkJyB0aGF0IGFwcGVhcnMgd2l0aGluIGEKKwkgKiAgICAncGhyYXNlJyBNVVNUIGJlIHNlcGFyYXRlZCBmcm9tIGFueSBhZGphY2VudCAnd29yZCcsICd0ZXh0JyBvcgorCSAqICAgICdzcGVjaWFsJyBieSAnbGluZWFyLXdoaXRlLXNwYWNlJy4KKwkgKi8KKworCWlmICh0eXBlICE9IFJGQzIwNDdfQUREUkVTUykKKwkJcmV0dXJuIDA7CisKKwkvKiAnPScgYW5kICdfJyBhcmUgc3BlY2lhbCBjYXNlcyBhbmQgaGF2ZSBiZWVuIGNoZWNrZWQgYWJvdmUgKi8KKwlyZXR1cm4gIShpc2FsbnVtKGNoKSB8fCBjaCA9PSAnIScgfHwgY2ggPT0gJyonIHx8IGNoID09ICcrJyB8fCBjaCA9PSAnLScgfHwgY2ggPT0gJy8nKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkX3JmYzIwNDcoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKmxpbmUsIGludCBsZW4sCi0JCSAgICAgICBjb25zdCBjaGFyICplbmNvZGluZykKK3N0YXRpYyBpbnQgbmVlZHNfcmZjMjA0N19lbmNvZGluZyhjb25zdCBjaGFyICpsaW5lLCBpbnQgbGVuLAorCQkJCSAgZW51bSByZmMyMDQ3X3R5cGUgdHlwZSkKIHsKLQlzdGF0aWMgY29uc3QgaW50IG1heF9sZW5ndGggPSA3ODsgLyogcGVyIHJmYzI4MjIgKi8KIAlpbnQgaTsKLQlpbnQgbGluZV9sZW47Ci0KLQkvKiBIb3cgbWFueSBieXRlcyBhcmUgYWxyZWFkeSB1c2VkIG9uIHRoZSBjdXJyZW50IGxpbmU/ICovCi0JZm9yIChpID0gc2ItPmxlbiAtIDE7IGkgPj0gMDsgaS0tKQotCQlpZiAoc2ItPmJ1ZltpXSA9PSAnXG4nKQotCQkJYnJlYWs7Ci0JbGluZV9sZW4gPSBzYi0+bGVuIC0gKGkrMSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKIAkJaW50IGNoID0gbGluZVtpXTsKIAkJaWYgKG5vbl9hc2NpaShjaCkgfHwgY2ggPT0gJ1xuJykKLQkJCWdvdG8gbmVlZHF1b3RlOworCQkJcmV0dXJuIDE7CiAJCWlmICgoaSArIDEgPCBsZW4pICYmIChjaCA9PSAnPScgJiYgbGluZVtpKzFdID09ICc/JykpCi0JCQlnb3RvIG5lZWRxdW90ZTsKKwkJCXJldHVybiAxOwogCX0KLQlzdHJidWZfYWRkX3dyYXBwZWRfYnl0ZXMoc2IsIGxpbmUsIGxlbiwgMCwgMSwgbWF4X2xlbmd0aCAtIGxpbmVfbGVuKTsKLQlyZXR1cm47CiAKLW5lZWRxdW90ZToKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgYWRkX3JmYzIwNDcoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKmxpbmUsIHNpemVfdCBsZW4sCisJCSAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgZW51bSByZmMyMDQ3X3R5cGUgdHlwZSkKK3sKKwlzdGF0aWMgY29uc3QgaW50IG1heF9lbmNvZGVkX2xlbmd0aCA9IDc2OyAvKiBwZXIgcmZjMjA0NyAqLworCWludCBpOworCWludCBsaW5lX2xlbiA9IGxhc3RfbGluZV9sZW5ndGgoc2IpOworCiAJc3RyYnVmX2dyb3coc2IsIGxlbiAqIDMgKyBzdHJsZW4oZW5jb2RpbmcpICsgMTAwKTsKIAlzdHJidWZfYWRkZihzYiwgIj0/JXM/cT8iLCBlbmNvZGluZyk7CiAJbGluZV9sZW4gKz0gc3RybGVuKGVuY29kaW5nKSArIDU7IC8qIDUgZm9yID0/P3E/ICovCi0JZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0JCXVuc2lnbmVkIGNoID0gbGluZVtpXSAmIDB4RkY7CiAKLQkJaWYgKGxpbmVfbGVuID49IG1heF9sZW5ndGggLSAyKSB7CisJd2hpbGUgKGxlbikgeworCQkvKgorCQkgKiBSRkMgMjA0Nywgc2VjdGlvbiA1ICgzKToKKwkJICoKKwkJICogRWFjaCAnZW5jb2RlZC13b3JkJyBNVVNUIHJlcHJlc2VudCBhbiBpbnRlZ3JhbCBudW1iZXIgb2YKKwkJICogY2hhcmFjdGVycy4gIEEgbXVsdGktb2N0ZXQgY2hhcmFjdGVyIG1heSBub3QgYmUgc3BsaXQgYWNyb3NzCisJCSAqIGFkamFjZW50ICdlbmNvZGVkLSB3b3JkJ3MuCisJCSAqLworCQljb25zdCB1bnNpZ25lZCBjaGFyICpwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilsaW5lOworCQlpbnQgY2hybGVuID0gbWJzX2NocmxlbigmbGluZSwgJmxlbiwgZW5jb2RpbmcpOworCQlpbnQgaXNfc3BlY2lhbCA9IChjaHJsZW4gPiAxKSB8fCBpc19yZmMyMDQ3X3NwZWNpYWwoKnAsIHR5cGUpOworCisJCS8qICI9JTAyWCIgKiBjaHJsZW4sIG9yIHRoZSBieXRlIGl0c2VsZiAqLworCQljb25zdCBjaGFyICplbmNvZGVkX2ZtdCA9IGlzX3NwZWNpYWwgPyAiPSUwMlgiICAgIDogIiVjIjsKKwkJaW50CSAgICBlbmNvZGVkX2xlbiA9IGlzX3NwZWNpYWwgPyAzICogY2hybGVuIDogMTsKKworCQkvKgorCQkgKiBBY2NvcmRpbmcgdG8gUkZDIDIwNDcsIHdlIGNvdWxkIGVuY29kZSB0aGUgc3BlY2lhbCBjaGFyYWN0ZXIKKwkJICogJyAnIChzcGFjZSkgd2l0aCAnXycgKHVuZGVyc2NvcmUpIGZvciByZWFkYWJpbGl0eS4gQnV0IG1hbnkKKwkJICogcHJvZ3JhbXMgZG8gbm90IHVuZGVyc3RhbmQgdGhpcyBhbmQganVzdCBsZWF2ZSB0aGUKKwkJICogdW5kZXJzY29yZSBpbiBwbGFjZS4gVGh1cywgd2UgZG8gbm90aGluZyBzcGVjaWFsIGhlcmUsIHdoaWNoCisJCSAqIGNhdXNlcyAnICcgdG8gYmUgZW5jb2RlZCBhcyAnPTIwJywgYXZvaWRpbmcgdGhpcyBwcm9ibGVtLgorCQkgKi8KKworCQlpZiAobGluZV9sZW4gKyBlbmNvZGVkX2xlbiArIDIgPiBtYXhfZW5jb2RlZF9sZW5ndGgpIHsKKwkJCS8qIEl0IHdvbid0IGZpdCB3aXRoIHRyYWlsaW5nICI/PSIgLS0tIGJyZWFrIHRoZSBsaW5lICovCiAJCQlzdHJidWZfYWRkZihzYiwgIj89XG4gPT8lcz9xPyIsIGVuY29kaW5nKTsKIAkJCWxpbmVfbGVuID0gc3RybGVuKGVuY29kaW5nKSArIDUgKyAxOyAvKiA9Pz9xPyBwbHVzIFNQICovCiAJCX0KIAotCQkvKgotCQkgKiBXZSBlbmNvZGUgJyAnIHVzaW5nICc9MjAnIGV2ZW4gdGhvdWdoIHJmYzIwNDcKLQkJICogYWxsb3dzIHVzaW5nICdfJyBmb3IgcmVhZGFiaWxpdHkuICBVbmZvcnR1bmF0ZWx5LAotCQkgKiBtYW55IHByb2dyYW1zIGRvIG5vdCB1bmRlcnN0YW5kIHRoaXMgYW5kIGp1c3QKLQkJICogbGVhdmUgdGhlIHVuZGVyc2NvcmUgaW4gcGxhY2UuCi0JCSAqLwotCQlpZiAoaXNfcmZjMjA0N19zcGVjaWFsKGNoKSB8fCBjaCA9PSAnICcgfHwgY2ggPT0gJ1xuJykgewotCQkJc3RyYnVmX2FkZGYoc2IsICI9JTAyWCIsIGNoKTsKLQkJCWxpbmVfbGVuICs9IDM7Ci0JCX0KLQkJZWxzZSB7Ci0JCQlzdHJidWZfYWRkY2goc2IsIGNoKTsKLQkJCWxpbmVfbGVuKys7Ci0JCX0KKwkJZm9yIChpID0gMDsgaSA8IGNocmxlbjsgaSsrKQorCQkJc3RyYnVmX2FkZGYoc2IsIGVuY29kZWRfZm10LCBwW2ldKTsKKwkJbGluZV9sZW4gKz0gZW5jb2RlZF9sZW47CiAJfQogCXN0cmJ1Zl9hZGRzdHIoc2IsICI/PSIpOwogfQogCitzdGF0aWMgY29uc3QgY2hhciAqc2hvd19pZGVudF9kYXRlKGNvbnN0IHN0cnVjdCBpZGVudF9zcGxpdCAqaWRlbnQsCisJCQkJICAgZW51bSBkYXRlX21vZGUgbW9kZSkKK3sKKwl1bnNpZ25lZCBsb25nIGRhdGUgPSAwOworCWludCB0eiA9IDA7CisKKwlpZiAoaWRlbnQtPmRhdGVfYmVnaW4gJiYgaWRlbnQtPmRhdGVfZW5kKQorCQlkYXRlID0gc3RydG91bChpZGVudC0+ZGF0ZV9iZWdpbiwgTlVMTCwgMTApOworCWlmIChpZGVudC0+dHpfYmVnaW4gJiYgaWRlbnQtPnR6X2VuZCkKKwkJdHogPSBzdHJ0b2woaWRlbnQtPnR6X2JlZ2luLCBOVUxMLCAxMCk7CisJcmV0dXJuIHNob3dfZGF0ZShkYXRlLCB0eiwgbW9kZSk7Cit9CisKIHZvaWQgcHBfdXNlcl9pbmZvKGNvbnN0IHN0cnVjdCBwcmV0dHlfcHJpbnRfY29udGV4dCAqcHAsCiAJCSAgY29uc3QgY2hhciAqd2hhdCwgc3RydWN0IHN0cmJ1ZiAqc2IsCiAJCSAgY29uc3QgY2hhciAqbGluZSwgY29uc3QgY2hhciAqZW5jb2RpbmcpCiB7Ci0JY2hhciAqZGF0ZTsKLQlpbnQgbmFtZWxlbjsKLQl1bnNpZ25lZCBsb25nIHRpbWU7Ci0JaW50IHR6OworCXN0cnVjdCBpZGVudF9zcGxpdCBpZGVudDsKKwljaGFyICpsaW5lX2VuZDsKKwljb25zdCBjaGFyICptYWlsYnVmLCAqbmFtZWJ1ZjsKKwlzaXplX3QgbmFtZWxlbiwgbWFpbGxlbjsKKwlpbnQgbWF4X2xlbmd0aCA9IDc4OyAvKiBwZXIgcmZjMjgyMiAqLwogCiAJaWYgKHBwLT5mbXQgPT0gQ01JVF9GTVRfT05FTElORSkKIAkJcmV0dXJuOwotCWRhdGUgPSBzdHJjaHIobGluZSwgJz4nKTsKLQlpZiAoIWRhdGUpCisKKwlsaW5lX2VuZCA9IHN0cmNocm51bChsaW5lLCAnXG4nKTsKKwlpZiAoc3BsaXRfaWRlbnRfbGluZSgmaWRlbnQsIGxpbmUsIGxpbmVfZW5kIC0gbGluZSkpCiAJCXJldHVybjsKLQluYW1lbGVuID0gKytkYXRlIC0gbGluZTsKLQl0aW1lID0gc3RydG91bChkYXRlLCAmZGF0ZSwgMTApOwotCXR6ID0gc3RydG9sKGRhdGUsIE5VTEwsIDEwKTsKKworCW1haWxidWYgPSBpZGVudC5tYWlsX2JlZ2luOworCW1haWxsZW4gPSBpZGVudC5tYWlsX2VuZCAtIGlkZW50Lm1haWxfYmVnaW47CisJbmFtZWJ1ZiA9IGlkZW50Lm5hbWVfYmVnaW47CisJbmFtZWxlbiA9IGlkZW50Lm5hbWVfZW5kIC0gaWRlbnQubmFtZV9iZWdpbjsKKworCWlmIChwcC0+bWFpbG1hcCkKKwkJbWFwX3VzZXIocHAtPm1haWxtYXAsICZtYWlsYnVmLCAmbWFpbGxlbiwgJm5hbWVidWYsICZuYW1lbGVuKTsKIAogCWlmIChwcC0+Zm10ID09IENNSVRfRk1UX0VNQUlMKSB7Ci0JCWNoYXIgKm5hbWVfdGFpbCA9IHN0cmNocihsaW5lLCAnPCcpOwotCQlpbnQgZGlzcGxheV9uYW1lX2xlbmd0aDsKLQkJaW50IGZpbmFsX2xpbmU7Ci0JCWlmICghbmFtZV90YWlsKQotCQkJcmV0dXJuOwotCQl3aGlsZSAobGluZSA8IG5hbWVfdGFpbCAmJiBpc3NwYWNlKG5hbWVfdGFpbFstMV0pKQotCQkJbmFtZV90YWlsLS07Ci0JCWRpc3BsYXlfbmFtZV9sZW5ndGggPSBuYW1lX3RhaWwgLSBsaW5lOwogCQlzdHJidWZfYWRkc3RyKHNiLCAiRnJvbTogIik7Ci0JCWlmICghaGFzX3JmYzgyMl9zcGVjaWFscyhsaW5lLCBkaXNwbGF5X25hbWVfbGVuZ3RoKSkgewotCQkJYWRkX3JmYzIwNDcoc2IsIGxpbmUsIGRpc3BsYXlfbmFtZV9sZW5ndGgsIGVuY29kaW5nKTsKLQkJfSBlbHNlIHsKKwkJaWYgKG5lZWRzX3JmYzIwNDdfZW5jb2RpbmcobmFtZWJ1ZiwgbmFtZWxlbiwgUkZDMjA0N19BRERSRVNTKSkgeworCQkJYWRkX3JmYzIwNDcoc2IsIG5hbWVidWYsIG5hbWVsZW4sCisJCQkJICAgIGVuY29kaW5nLCBSRkMyMDQ3X0FERFJFU1MpOworCQkJbWF4X2xlbmd0aCA9IDc2OyAvKiBwZXIgcmZjMjA0NyAqLworCQl9IGVsc2UgaWYgKG5lZWRzX3JmYzgyMl9xdW90aW5nKG5hbWVidWYsIG5hbWVsZW4pKSB7CiAJCQlzdHJ1Y3Qgc3RyYnVmIHF1b3RlZCA9IFNUUkJVRl9JTklUOwotCQkJYWRkX3JmYzgyMl9xdW90ZWQoJnF1b3RlZCwgbGluZSwgZGlzcGxheV9uYW1lX2xlbmd0aCk7Ci0JCQlhZGRfcmZjMjA0NyhzYiwgcXVvdGVkLmJ1ZiwgcXVvdGVkLmxlbiwgZW5jb2RpbmcpOworCQkJYWRkX3JmYzgyMl9xdW90ZWQoJnF1b3RlZCwgbmFtZWJ1ZiwgbmFtZWxlbik7CisJCQlzdHJidWZfYWRkX3dyYXBwZWRfYnl0ZXMoc2IsIHF1b3RlZC5idWYsIHF1b3RlZC5sZW4sCisJCQkJCQkJLTYsIDEsIG1heF9sZW5ndGgpOwogCQkJc3RyYnVmX3JlbGVhc2UoJnF1b3RlZCk7CisJCX0gZWxzZSB7CisJCQlzdHJidWZfYWRkX3dyYXBwZWRfYnl0ZXMoc2IsIG5hbWVidWYsIG5hbWVsZW4sCisJCQkJCQkgLTYsIDEsIG1heF9sZW5ndGgpOwogCQl9Ci0JCWZvciAoZmluYWxfbGluZSA9IDA7IGZpbmFsX2xpbmUgPCBzYi0+bGVuOyBmaW5hbF9saW5lKyspCi0JCQlpZiAoc2ItPmJ1ZltzYi0+bGVuIC0gZmluYWxfbGluZSAtIDFdID09ICdcbicpCi0JCQkJYnJlYWs7Ci0JCWlmIChuYW1lbGVuIC0gZGlzcGxheV9uYW1lX2xlbmd0aCArIGZpbmFsX2xpbmUgPiA3OCkgeworCisJCWlmIChtYXhfbGVuZ3RoIDwKKwkJICAgIGxhc3RfbGluZV9sZW5ndGgoc2IpICsgc3RybGVuKCIgPCIpICsgbWFpbGxlbiArIHN0cmxlbigiPiIpKQogCQkJc3RyYnVmX2FkZGNoKHNiLCAnXG4nKTsKLQkJCWlmICghaXNzcGFjZShuYW1lX3RhaWxbMF0pKQotCQkJCXN0cmJ1Zl9hZGRjaChzYiwgJyAnKTsKLQkJfQotCQlzdHJidWZfYWRkKHNiLCBuYW1lX3RhaWwsIG5hbWVsZW4gLSBkaXNwbGF5X25hbWVfbGVuZ3RoKTsKLQkJc3RyYnVmX2FkZGNoKHNiLCAnXG4nKTsKKwkJc3RyYnVmX2FkZGYoc2IsICIgPCUuKnM+XG4iLCAoaW50KW1haWxsZW4sIG1haWxidWYpOwogCX0gZWxzZSB7Ci0JCXN0cmJ1Zl9hZGRmKHNiLCAiJXM6ICUuKnMlLipzXG4iLCB3aGF0LAotCQkJICAgICAgKHBwLT5mbXQgPT0gQ01JVF9GTVRfRlVMTEVSKSA/IDQgOiAwLAotCQkJICAgICAgIiAgICAiLCBuYW1lbGVuLCBsaW5lKTsKKwkJc3RyYnVmX2FkZGYoc2IsICIlczogJS4qcyUuKnMgPCUuKnM+XG4iLCB3aGF0LAorCQkJICAgIChwcC0+Zm10ID09IENNSVRfRk1UX0ZVTExFUikgPyA0IDogMCwgIiAgICAiLAorCQkJICAgIChpbnQpbmFtZWxlbiwgbmFtZWJ1ZiwgKGludCltYWlsbGVuLCBtYWlsYnVmKTsKIAl9CisKIAlzd2l0Y2ggKHBwLT5mbXQpIHsKIAljYXNlIENNSVRfRk1UX01FRElVTToKLQkJc3RyYnVmX2FkZGYoc2IsICJEYXRlOiAgICVzXG4iLCBzaG93X2RhdGUodGltZSwgdHosIHBwLT5kYXRlX21vZGUpKTsKKwkJc3RyYnVmX2FkZGYoc2IsICJEYXRlOiAgICVzXG4iLAorCQkJICAgIHNob3dfaWRlbnRfZGF0ZSgmaWRlbnQsIHBwLT5kYXRlX21vZGUpKTsKIAkJYnJlYWs7CiAJY2FzZSBDTUlUX0ZNVF9FTUFJTDoKLQkJc3RyYnVmX2FkZGYoc2IsICJEYXRlOiAlc1xuIiwgc2hvd19kYXRlKHRpbWUsIHR6LCBEQVRFX1JGQzI4MjIpKTsKKwkJc3RyYnVmX2FkZGYoc2IsICJEYXRlOiAlc1xuIiwKKwkJCSAgICBzaG93X2lkZW50X2RhdGUoJmlkZW50LCBEQVRFX1JGQzI4MjIpKTsKIAkJYnJlYWs7CiAJY2FzZSBDTUlUX0ZNVF9GVUxMRVI6Ci0JCXN0cmJ1Zl9hZGRmKHNiLCAiJXNEYXRlOiAlc1xuIiwgd2hhdCwgc2hvd19kYXRlKHRpbWUsIHR6LCBwcC0+ZGF0ZV9tb2RlKSk7CisJCXN0cmJ1Zl9hZGRmKHNiLCAiJXNEYXRlOiAlc1xuIiwgd2hhdCwKKwkJCSAgICBzaG93X2lkZW50X2RhdGUoJmlkZW50LCBwcC0+ZGF0ZV9tb2RlKSk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCS8qIG5vdGluJyAqLwpAQCAtNDM0LDEwICs1MjUsMTEgQEAKIAlzdHJidWZfYWRkY2goc2IsICdcbicpOwogfQogCi1zdGF0aWMgY2hhciAqZ2V0X2hlYWRlcihjb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsIGNvbnN0IGNoYXIgKmtleSkKK3N0YXRpYyBjaGFyICpnZXRfaGVhZGVyKGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwgY29uc3QgY2hhciAqbXNnLAorCQkJY29uc3QgY2hhciAqa2V5KQogewogCWludCBrZXlfbGVuID0gc3RybGVuKGtleSk7Ci0JY29uc3QgY2hhciAqbGluZSA9IGNvbW1pdC0+YnVmZmVyOworCWNvbnN0IGNoYXIgKmxpbmUgPSBtc2c7CiAKIAl3aGlsZSAobGluZSkgewogCQljb25zdCBjaGFyICplb2wgPSBzdHJjaHIobGluZSwgJ1xuJyksICpuZXh0OwpAQCAtNDkzLDMzICs1ODUsOTQgQEAKIH0KIAogY2hhciAqbG9nbXNnX3JlZW5jb2RlKGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwKKwkJICAgICAgY2hhciAqKmNvbW1pdF9lbmNvZGluZywKIAkJICAgICAgY29uc3QgY2hhciAqb3V0cHV0X2VuY29kaW5nKQogewogCXN0YXRpYyBjb25zdCBjaGFyICp1dGY4ID0gIlVURi04IjsKIAljb25zdCBjaGFyICp1c2VfZW5jb2Rpbmc7CiAJY2hhciAqZW5jb2Rpbmc7CisJY2hhciAqbXNnID0gY29tbWl0LT5idWZmZXI7CiAJY2hhciAqb3V0OwogCi0JaWYgKCEqb3V0cHV0X2VuY29kaW5nKQotCQlyZXR1cm4gTlVMTDsKLQllbmNvZGluZyA9IGdldF9oZWFkZXIoY29tbWl0LCAiZW5jb2RpbmciKTsKKwlpZiAoIW1zZykgeworCQllbnVtIG9iamVjdF90eXBlIHR5cGU7CisJCXVuc2lnbmVkIGxvbmcgc2l6ZTsKKworCQltc2cgPSByZWFkX3NoYTFfZmlsZShjb21taXQtPm9iamVjdC5zaGExLCAmdHlwZSwgJnNpemUpOworCQlpZiAoIW1zZykKKwkJCWRpZSgiQ2Fubm90IHJlYWQgY29tbWl0IG9iamVjdCAlcyIsCisJCQkgICAgc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSkpOworCQlpZiAodHlwZSAhPSBPQkpfQ09NTUlUKQorCQkJZGllKCJFeHBlY3RlZCBjb21taXQgZm9yICclcycsIGdvdCAlcyIsCisJCQkgICAgc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSksIHR5cGVuYW1lKHR5cGUpKTsKKwl9CisKKwlpZiAoIW91dHB1dF9lbmNvZGluZyB8fCAhKm91dHB1dF9lbmNvZGluZykgeworCQlpZiAoY29tbWl0X2VuY29kaW5nKQorCQkJKmNvbW1pdF9lbmNvZGluZyA9CisJCQkJZ2V0X2hlYWRlcihjb21taXQsIG1zZywgImVuY29kaW5nIik7CisJCXJldHVybiBtc2c7CisJfQorCWVuY29kaW5nID0gZ2V0X2hlYWRlcihjb21taXQsIG1zZywgImVuY29kaW5nIik7CisJaWYgKGNvbW1pdF9lbmNvZGluZykKKwkJKmNvbW1pdF9lbmNvZGluZyA9IGVuY29kaW5nOwogCXVzZV9lbmNvZGluZyA9IGVuY29kaW5nID8gZW5jb2RpbmcgOiB1dGY4OwotCWlmICghc3RyY21wKHVzZV9lbmNvZGluZywgb3V0cHV0X2VuY29kaW5nKSkKLQkJaWYgKGVuY29kaW5nKSAvKiB3ZSdsbCBzdHJpcCBlbmNvZGluZyBoZWFkZXIgbGF0ZXIgKi8KLQkJCW91dCA9IHhzdHJkdXAoY29tbWl0LT5idWZmZXIpOwotCQllbHNlCi0JCQlyZXR1cm4gTlVMTDsgLyogbm90aGluZyB0byBkbyAqLwotCWVsc2UKLQkJb3V0ID0gcmVlbmNvZGVfc3RyaW5nKGNvbW1pdC0+YnVmZmVyLAotCQkJCSAgICAgIG91dHB1dF9lbmNvZGluZywgdXNlX2VuY29kaW5nKTsKKwlpZiAoc2FtZV9lbmNvZGluZyh1c2VfZW5jb2RpbmcsIG91dHB1dF9lbmNvZGluZykpIHsKKwkJLyoKKwkJICogTm8gZW5jb2Rpbmcgd29yayB0byBiZSBkb25lLiBJZiB3ZSBoYXZlIG5vIGVuY29kaW5nIGhlYWRlcgorCQkgKiBhdCBhbGwsIHRoZW4gdGhlcmUncyBub3RoaW5nIHRvIGRvLCBhbmQgd2UgY2FuIHJldHVybiB0aGUKKwkJICogbWVzc2FnZSB2ZXJiYXRpbSAod2hldGhlciBuZXdseSBhbGxvY2F0ZWQgb3Igbm90KS4KKwkJICovCisJCWlmICghZW5jb2RpbmcpCisJCQlyZXR1cm4gbXNnOworCisJCS8qCisJCSAqIE90aGVyd2lzZSwgd2Ugc3RpbGwgd2FudCB0byBtdW5nZSB0aGUgZW5jb2RpbmcgaGVhZGVyIGluIHRoZQorCQkgKiByZXN1bHQsIHdoaWNoIHdpbGwgYmUgZG9uZSBieSBtb2RpZnlpbmcgdGhlIGJ1ZmZlci4gSWYgd2UKKwkJICogYXJlIHVzaW5nIGEgZnJlc2ggY29weSwgd2UgY2FuIHJldXNlIGl0LiBCdXQgaWYgd2UgYXJlIHVzaW5nCisJCSAqIHRoZSBjYWNoZWQgY29weSBmcm9tIGNvbW1pdC0+YnVmZmVyLCB3ZSBuZWVkIHRvIGR1cGxpY2F0ZSBpdAorCQkgKiB0byBhdm9pZCBtdW5naW5nIGNvbW1pdC0+YnVmZmVyLgorCQkgKi8KKwkJb3V0ID0gbXNnOworCQlpZiAob3V0ID09IGNvbW1pdC0+YnVmZmVyKQorCQkJb3V0ID0geHN0cmR1cChvdXQpOworCX0KKwllbHNlIHsKKwkJLyoKKwkJICogVGhlcmUncyBhY3R1YWwgZW5jb2Rpbmcgd29yayB0byBkby4gRG8gdGhlIHJlZW5jb2RpbmcsIHdoaWNoCisJCSAqIHN0aWxsIGxlYXZlcyB0aGUgaGVhZGVyIHRvIGJlIHJlcGxhY2VkIGluIHRoZSBuZXh0IHN0ZXAuIEF0CisJCSAqIHRoaXMgcG9pbnQsIHdlIGFyZSBkb25lIHdpdGggbXNnLiBJZiB3ZSBhbGxvY2F0ZWQgYSBmcmVzaAorCQkgKiBjb3B5LCB3ZSBjYW4gZnJlZSBpdC4KKwkJICovCisJCW91dCA9IHJlZW5jb2RlX3N0cmluZyhtc2csIG91dHB1dF9lbmNvZGluZywgdXNlX2VuY29kaW5nKTsKKwkJaWYgKG91dCAmJiBtc2cgIT0gY29tbWl0LT5idWZmZXIpCisJCQlmcmVlKG1zZyk7CisJfQorCisJLyoKKwkgKiBUaGlzIHJlcGxhY2VtZW50IGFjdHVhbGx5IGNvbnN1bWVzIHRoZSBidWZmZXIgd2UgaGFuZCBpdCwgc28gd2UgZG8KKwkgKiBub3QgaGF2ZSB0byB3b3JyeSBhYm91dCBmcmVlaW5nIHRoZSBvbGQgIm91dCIgaGVyZS4KKwkgKi8KIAlpZiAob3V0KQogCQlvdXQgPSByZXBsYWNlX2VuY29kaW5nX2hlYWRlcihvdXQsIG91dHB1dF9lbmNvZGluZyk7CiAKLQlmcmVlKGVuY29kaW5nKTsKLQlyZXR1cm4gb3V0OworCWlmICghY29tbWl0X2VuY29kaW5nKQorCQlmcmVlKGVuY29kaW5nKTsKKwkvKgorCSAqIElmIHRoZSByZS1lbmNvZGluZyBmYWlsZWQsIG91dCBtaWdodCBiZSBOVUxMIGhlcmU7IGluIHRoYXQKKwkgKiBjYXNlIHdlIGp1c3QgcmV0dXJuIHRoZSBjb21taXQgbWVzc2FnZSB2ZXJiYXRpbS4KKwkgKi8KKwlyZXR1cm4gb3V0ID8gb3V0IDogbXNnOwogfQogCi1zdGF0aWMgaW50IG1haWxtYXBfbmFtZShjaGFyICplbWFpbCwgaW50IGVtYWlsX2xlbiwgY2hhciAqbmFtZSwgaW50IG5hbWVfbGVuKQordm9pZCBsb2dtc2dfZnJlZShjaGFyICptc2csIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCkKK3sKKwlpZiAobXNnICE9IGNvbW1pdC0+YnVmZmVyKQorCQlmcmVlKG1zZyk7Cit9CisKK3N0YXRpYyBpbnQgbWFpbG1hcF9uYW1lKGNvbnN0IGNoYXIgKiplbWFpbCwgc2l6ZV90ICplbWFpbF9sZW4sCisJCQljb25zdCBjaGFyICoqbmFtZSwgc2l6ZV90ICpuYW1lX2xlbikKIHsKIAlzdGF0aWMgc3RydWN0IHN0cmluZ19saXN0ICptYWlsX21hcDsKIAlpZiAoIW1haWxfbWFwKSB7CkBAIC01MzQsNjggKzY4Nyw0OSBAQAogewogCS8qIGN1cnJlbnRseSBhbGwgcGxhY2Vob2xkZXJzIGhhdmUgc2FtZSBsZW5ndGggKi8KIAljb25zdCBpbnQgcGxhY2Vob2xkZXJfbGVuID0gMjsKLQlpbnQgdHo7Ci0JdW5zaWduZWQgbG9uZyBkYXRlID0gMDsKLQljaGFyIHBlcnNvbl9uYW1lWzEwMjRdOwotCWNoYXIgcGVyc29uX21haWxbMTAyNF07CiAJc3RydWN0IGlkZW50X3NwbGl0IHM7Ci0JY29uc3QgY2hhciAqbmFtZV9zdGFydCwgKm5hbWVfZW5kLCAqbWFpbF9zdGFydCwgKm1haWxfZW5kOworCWNvbnN0IGNoYXIgKm5hbWUsICptYWlsOworCXNpemVfdCBtYWlsbGVuLCBuYW1lbGVuOwogCiAJaWYgKHNwbGl0X2lkZW50X2xpbmUoJnMsIG1zZywgbGVuKSA8IDApCiAJCWdvdG8gc2tpcDsKIAotCW5hbWVfc3RhcnQgPSBzLm5hbWVfYmVnaW47Ci0JbmFtZV9lbmQgPSBzLm5hbWVfZW5kOwotCW1haWxfc3RhcnQgPSBzLm1haWxfYmVnaW47Ci0JbWFpbF9lbmQgPSBzLm1haWxfZW5kOworCW5hbWUgPSBzLm5hbWVfYmVnaW47CisJbmFtZWxlbiA9IHMubmFtZV9lbmQgLSBzLm5hbWVfYmVnaW47CisJbWFpbCA9IHMubWFpbF9iZWdpbjsKKwltYWlsbGVuID0gcy5tYWlsX2VuZCAtIHMubWFpbF9iZWdpbjsKIAotCWlmIChwYXJ0ID09ICdOJyB8fCBwYXJ0ID09ICdFJykgeyAvKiBtYWlsbWFwIGxvb2t1cCAqLwotCQlzbnByaW50ZihwZXJzb25fbmFtZSwgc2l6ZW9mKHBlcnNvbl9uYW1lKSwgIiUuKnMiLAotCQkJIChpbnQpKG5hbWVfZW5kIC0gbmFtZV9zdGFydCksIG5hbWVfc3RhcnQpOwotCQlzbnByaW50ZihwZXJzb25fbWFpbCwgc2l6ZW9mKHBlcnNvbl9tYWlsKSwgIiUuKnMiLAotCQkJIChpbnQpKG1haWxfZW5kIC0gbWFpbF9zdGFydCksIG1haWxfc3RhcnQpOwotCQltYWlsbWFwX25hbWUocGVyc29uX21haWwsIHNpemVvZihwZXJzb25fbWFpbCksIHBlcnNvbl9uYW1lLCBzaXplb2YocGVyc29uX25hbWUpKTsKLQkJbmFtZV9zdGFydCA9IHBlcnNvbl9uYW1lOwotCQluYW1lX2VuZCA9IG5hbWVfc3RhcnQgKyBzdHJsZW4ocGVyc29uX25hbWUpOwotCQltYWlsX3N0YXJ0ID0gcGVyc29uX21haWw7Ci0JCW1haWxfZW5kID0gbWFpbF9zdGFydCArICBzdHJsZW4ocGVyc29uX21haWwpOwotCX0KKwlpZiAocGFydCA9PSAnTicgfHwgcGFydCA9PSAnRScpIC8qIG1haWxtYXAgbG9va3VwICovCisJCW1haWxtYXBfbmFtZSgmbWFpbCwgJm1haWxsZW4sICZuYW1lLCAmbmFtZWxlbik7CiAJaWYgKHBhcnQgPT0gJ24nIHx8IHBhcnQgPT0gJ04nKSB7CS8qIG5hbWUgKi8KLQkJc3RyYnVmX2FkZChzYiwgbmFtZV9zdGFydCwgbmFtZV9lbmQtbmFtZV9zdGFydCk7CisJCXN0cmJ1Zl9hZGQoc2IsIG5hbWUsIG5hbWVsZW4pOwogCQlyZXR1cm4gcGxhY2Vob2xkZXJfbGVuOwogCX0KIAlpZiAocGFydCA9PSAnZScgfHwgcGFydCA9PSAnRScpIHsJLyogZW1haWwgKi8KLQkJc3RyYnVmX2FkZChzYiwgbWFpbF9zdGFydCwgbWFpbF9lbmQtbWFpbF9zdGFydCk7CisJCXN0cmJ1Zl9hZGQoc2IsIG1haWwsIG1haWxsZW4pOwogCQlyZXR1cm4gcGxhY2Vob2xkZXJfbGVuOwogCX0KIAogCWlmICghcy5kYXRlX2JlZ2luKQogCQlnb3RvIHNraXA7CiAKLQlkYXRlID0gc3RydG91bChzLmRhdGVfYmVnaW4sIE5VTEwsIDEwKTsKLQogCWlmIChwYXJ0ID09ICd0JykgewkvKiBkYXRlLCBVTklYIHRpbWVzdGFtcCAqLwogCQlzdHJidWZfYWRkKHNiLCBzLmRhdGVfYmVnaW4sIHMuZGF0ZV9lbmQgLSBzLmRhdGVfYmVnaW4pOwogCQlyZXR1cm4gcGxhY2Vob2xkZXJfbGVuOwogCX0KIAotCS8qIHBhcnNlIHR6ICovCi0JdHogPSBzdHJ0b3VsKHMudHpfYmVnaW4gKyAxLCBOVUxMLCAxMCk7Ci0JaWYgKCpzLnR6X2JlZ2luID09ICctJykKLQkJdHogPSAtdHo7Ci0KIAlzd2l0Y2ggKHBhcnQpIHsKIAljYXNlICdkJzoJLyogZGF0ZSAqLwotCQlzdHJidWZfYWRkc3RyKHNiLCBzaG93X2RhdGUoZGF0ZSwgdHosIGRtb2RlKSk7CisJCXN0cmJ1Zl9hZGRzdHIoc2IsIHNob3dfaWRlbnRfZGF0ZSgmcywgZG1vZGUpKTsKIAkJcmV0dXJuIHBsYWNlaG9sZGVyX2xlbjsKIAljYXNlICdEJzoJLyogZGF0ZSwgUkZDMjgyMiBzdHlsZSAqLwotCQlzdHJidWZfYWRkc3RyKHNiLCBzaG93X2RhdGUoZGF0ZSwgdHosIERBVEVfUkZDMjgyMikpOworCQlzdHJidWZfYWRkc3RyKHNiLCBzaG93X2lkZW50X2RhdGUoJnMsIERBVEVfUkZDMjgyMikpOwogCQlyZXR1cm4gcGxhY2Vob2xkZXJfbGVuOwogCWNhc2UgJ3InOgkvKiBkYXRlLCByZWxhdGl2ZSAqLwotCQlzdHJidWZfYWRkc3RyKHNiLCBzaG93X2RhdGUoZGF0ZSwgdHosIERBVEVfUkVMQVRJVkUpKTsKKwkJc3RyYnVmX2FkZHN0cihzYiwgc2hvd19pZGVudF9kYXRlKCZzLCBEQVRFX1JFTEFUSVZFKSk7CiAJCXJldHVybiBwbGFjZWhvbGRlcl9sZW47CiAJY2FzZSAnaSc6CS8qIGRhdGUsIElTTyA4NjAxICovCi0JCXN0cmJ1Zl9hZGRzdHIoc2IsIHNob3dfZGF0ZShkYXRlLCB0eiwgREFURV9JU084NjAxKSk7CisJCXN0cmJ1Zl9hZGRzdHIoc2IsIHNob3dfaWRlbnRfZGF0ZSgmcywgREFURV9JU084NjAxKSk7CiAJCXJldHVybiBwbGFjZWhvbGRlcl9sZW47CiAJfQogCkBAIC02MTcsMjQgKzc1MSwzOCBAQAogCXNpemVfdCBsZW47CiB9OwogCitlbnVtIGZsdXNoX3R5cGUgeworCW5vX2ZsdXNoLAorCWZsdXNoX3JpZ2h0LAorCWZsdXNoX2xlZnQsCisJZmx1c2hfbGVmdF9hbmRfc3RlYWwsCisJZmx1c2hfYm90aAorfTsKKworZW51bSB0cnVuY190eXBlIHsKKwl0cnVuY19ub25lLAorCXRydW5jX2xlZnQsCisJdHJ1bmNfbWlkZGxlLAorCXRydW5jX3JpZ2h0Cit9OworCiBzdHJ1Y3QgZm9ybWF0X2NvbW1pdF9jb250ZXh0IHsKIAljb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CiAJY29uc3Qgc3RydWN0IHByZXR0eV9wcmludF9jb250ZXh0ICpwcmV0dHlfY3R4OwogCXVuc2lnbmVkIGNvbW1pdF9oZWFkZXJfcGFyc2VkOjE7CiAJdW5zaWduZWQgY29tbWl0X21lc3NhZ2VfcGFyc2VkOjE7Ci0JdW5zaWduZWQgY29tbWl0X3NpZ25hdHVyZV9wYXJzZWQ6MTsKLQlzdHJ1Y3QgewotCQljaGFyICpncGdfb3V0cHV0OwotCQljaGFyIGdvb2RfYmFkOwotCQljaGFyICpzaWduZXI7Ci0JfSBzaWduYXR1cmU7CisJc3RydWN0IHNpZ25hdHVyZV9jaGVjayBzaWduYXR1cmVfY2hlY2s7CisJZW51bSBmbHVzaF90eXBlIGZsdXNoX3R5cGU7CisJZW51bSB0cnVuY190eXBlIHRydW5jYXRlOwogCWNoYXIgKm1lc3NhZ2U7CisJY2hhciAqY29tbWl0X2VuY29kaW5nOwogCXNpemVfdCB3aWR0aCwgaW5kZW50MSwgaW5kZW50MjsKKwlpbnQgYXV0b19jb2xvcjsKKwlpbnQgcGFkZGluZzsKIAogCS8qIFRoZXNlIG9mZnNldHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgY29tbWl0IG1lc3NhZ2UuICovCiAJc3RydWN0IGNodW5rIGF1dGhvcjsKIAlzdHJ1Y3QgY2h1bmsgY29tbWl0dGVyOwotCXN0cnVjdCBjaHVuayBlbmNvZGluZzsKIAlzaXplX3QgbWVzc2FnZV9vZmY7CiAJc2l6ZV90IHN1YmplY3Rfb2ZmOwogCXNpemVfdCBib2R5X29mZjsKQEAgLTY4MSw5ICs4MjksNiBAQAogCQl9IGVsc2UgaWYgKCFwcmVmaXhjbXAobXNnICsgaSwgImNvbW1pdHRlciAiKSkgewogCQkJY29udGV4dC0+Y29tbWl0dGVyLm9mZiA9IGkgKyAxMDsKIAkJCWNvbnRleHQtPmNvbW1pdHRlci5sZW4gPSBlb2wgLSBpIC0gMTA7Ci0JCX0gZWxzZSBpZiAoIXByZWZpeGNtcChtc2cgKyBpLCAiZW5jb2RpbmcgIikpIHsKLQkJCWNvbnRleHQtPmVuY29kaW5nLm9mZiA9IGkgKyA5OwotCQkJY29udGV4dC0+ZW5jb2RpbmcubGVuID0gZW9sIC0gaSAtIDk7CiAJCX0KIAkJaSA9IGVvbDsKIAl9CkBAIC03NjQsMjMgKzkwOSw2IEBACiAJYy0+Y29tbWl0X21lc3NhZ2VfcGFyc2VkID0gMTsKIH0KIAotc3RhdGljIHZvaWQgZm9ybWF0X2RlY29yYXRpb24oc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCkKLXsKLQlzdHJ1Y3QgbmFtZV9kZWNvcmF0aW9uICpkOwotCWNvbnN0IGNoYXIgKnByZWZpeCA9ICIgKCI7Ci0KLQlsb2FkX3JlZl9kZWNvcmF0aW9ucyhERUNPUkFURV9TSE9SVF9SRUZTKTsKLQlkID0gbG9va3VwX2RlY29yYXRpb24oJm5hbWVfZGVjb3JhdGlvbiwgJmNvbW1pdC0+b2JqZWN0KTsKLQl3aGlsZSAoZCkgewotCQlzdHJidWZfYWRkc3RyKHNiLCBwcmVmaXgpOwotCQlwcmVmaXggPSAiLCAiOwotCQlzdHJidWZfYWRkc3RyKHNiLCBkLT5uYW1lKTsKLQkJZCA9IGQtPm5leHQ7Ci0JfQotCWlmIChwcmVmaXhbMF0gPT0gJywnKQotCQlzdHJidWZfYWRkY2goc2IsICcpJyk7Ci19Ci0KIHN0YXRpYyB2b2lkIHN0cmJ1Zl93cmFwKHN0cnVjdCBzdHJidWYgKnNiLCBzaXplX3QgcG9zLAogCQkJc2l6ZV90IHdpZHRoLCBzaXplX3QgaW5kZW50MSwgc2l6ZV90IGluZGVudDIpCiB7CkBAIC04MTAsNTkgKzkzOCw2IEBACiAJYy0+aW5kZW50MiA9IG5ld19pbmRlbnQyOwogfQogCi1zdGF0aWMgc3RydWN0IHsKLQljaGFyIHJlc3VsdDsKLQljb25zdCBjaGFyICpjaGVjazsKLX0gc2lnbmF0dXJlX2NoZWNrW10gPSB7Ci0JeyAnRycsICI6IEdvb2Qgc2lnbmF0dXJlIGZyb20gIiB9LAotCXsgJ0InLCAiOiBCQUQgc2lnbmF0dXJlIGZyb20gIiB9LAotfTsKLQotc3RhdGljIHZvaWQgcGFyc2Vfc2lnbmF0dXJlX2xpbmVzKHN0cnVjdCBmb3JtYXRfY29tbWl0X2NvbnRleHQgKmN0eCkKLXsKLQljb25zdCBjaGFyICpidWYgPSBjdHgtPnNpZ25hdHVyZS5ncGdfb3V0cHV0OwotCWludCBpOwotCi0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc2lnbmF0dXJlX2NoZWNrKTsgaSsrKSB7Ci0JCWNvbnN0IGNoYXIgKmZvdW5kID0gc3Ryc3RyKGJ1Ziwgc2lnbmF0dXJlX2NoZWNrW2ldLmNoZWNrKTsKLQkJY29uc3QgY2hhciAqbmV4dDsKLQkJaWYgKCFmb3VuZCkKLQkJCWNvbnRpbnVlOwotCQljdHgtPnNpZ25hdHVyZS5nb29kX2JhZCA9IHNpZ25hdHVyZV9jaGVja1tpXS5yZXN1bHQ7Ci0JCWZvdW5kICs9IHN0cmxlbihzaWduYXR1cmVfY2hlY2tbaV0uY2hlY2spOwotCQluZXh0ID0gc3RyY2hybnVsKGZvdW5kLCAnXG4nKTsKLQkJY3R4LT5zaWduYXR1cmUuc2lnbmVyID0geG1lbWR1cHooZm91bmQsIG5leHQgLSBmb3VuZCk7Ci0JCWJyZWFrOwotCX0KLX0KLQotc3RhdGljIHZvaWQgcGFyc2VfY29tbWl0X3NpZ25hdHVyZShzdHJ1Y3QgZm9ybWF0X2NvbW1pdF9jb250ZXh0ICpjdHgpCi17Ci0Jc3RydWN0IHN0cmJ1ZiBwYXlsb2FkID0gU1RSQlVGX0lOSVQ7Ci0Jc3RydWN0IHN0cmJ1ZiBzaWduYXR1cmUgPSBTVFJCVUZfSU5JVDsKLQlzdHJ1Y3Qgc3RyYnVmIGdwZ19vdXRwdXQgPSBTVFJCVUZfSU5JVDsKLQlpbnQgc3RhdHVzOwotCi0JY3R4LT5jb21taXRfc2lnbmF0dXJlX3BhcnNlZCA9IDE7Ci0KLQlpZiAocGFyc2Vfc2lnbmVkX2NvbW1pdChjdHgtPmNvbW1pdC0+b2JqZWN0LnNoYTEsCi0JCQkJJnBheWxvYWQsICZzaWduYXR1cmUpIDw9IDApCi0JCWdvdG8gb3V0OwotCXN0YXR1cyA9IHZlcmlmeV9zaWduZWRfYnVmZmVyKHBheWxvYWQuYnVmLCBwYXlsb2FkLmxlbiwKLQkJCQkgICAgICBzaWduYXR1cmUuYnVmLCBzaWduYXR1cmUubGVuLAotCQkJCSAgICAgICZncGdfb3V0cHV0KTsKLQlpZiAoc3RhdHVzICYmICFncGdfb3V0cHV0LmxlbikKLQkJZ290byBvdXQ7Ci0JY3R4LT5zaWduYXR1cmUuZ3BnX291dHB1dCA9IHN0cmJ1Zl9kZXRhY2goJmdwZ19vdXRwdXQsIE5VTEwpOwotCXBhcnNlX3NpZ25hdHVyZV9saW5lcyhjdHgpOwotCi0gb3V0OgotCXN0cmJ1Zl9yZWxlYXNlKCZncGdfb3V0cHV0KTsKLQlzdHJidWZfcmVsZWFzZSgmcGF5bG9hZCk7Ci0Jc3RyYnVmX3JlbGVhc2UoJnNpZ25hdHVyZSk7Ci19Ci0KLQogc3RhdGljIGludCBmb3JtYXRfcmVmbG9nX3BlcnNvbihzdHJ1Y3Qgc3RyYnVmICpzYiwKIAkJCQljaGFyIHBhcnQsCiAJCQkJc3RydWN0IHJlZmxvZ193YWxrX2luZm8gKmxvZywKQEAgLTg4MCw3ICs5NTUsMTEyIEBACiAJcmV0dXJuIGZvcm1hdF9wZXJzb25fcGFydChzYiwgcGFydCwgaWRlbnQsIHN0cmxlbihpZGVudCksIGRtb2RlKTsKIH0KIAotc3RhdGljIHNpemVfdCBmb3JtYXRfY29tbWl0X29uZShzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqcGxhY2Vob2xkZXIsCitzdGF0aWMgc2l6ZV90IHBhcnNlX2NvbG9yKHN0cnVjdCBzdHJidWYgKnNiLCAvKiBpbiBVVEYtOCAqLworCQkJICBjb25zdCBjaGFyICpwbGFjZWhvbGRlciwKKwkJCSAgc3RydWN0IGZvcm1hdF9jb21taXRfY29udGV4dCAqYykKK3sKKwlpZiAocGxhY2Vob2xkZXJbMV0gPT0gJygnKSB7CisJCWNvbnN0IGNoYXIgKmJlZ2luID0gcGxhY2Vob2xkZXIgKyAyOworCQljb25zdCBjaGFyICplbmQgPSBzdHJjaHIoYmVnaW4sICcpJyk7CisJCWNoYXIgY29sb3JbQ09MT1JfTUFYTEVOXTsKKworCQlpZiAoIWVuZCkKKwkJCXJldHVybiAwOworCQlpZiAoIXByZWZpeGNtcChiZWdpbiwgImF1dG8sIikpIHsKKwkJCWlmICghd2FudF9jb2xvcihjLT5wcmV0dHlfY3R4LT5jb2xvcikpCisJCQkJcmV0dXJuIGVuZCAtIHBsYWNlaG9sZGVyICsgMTsKKwkJCWJlZ2luICs9IDU7CisJCX0KKwkJY29sb3JfcGFyc2VfbWVtKGJlZ2luLAorCQkJCWVuZCAtIGJlZ2luLAorCQkJCSItLXByZXR0eSBmb3JtYXQiLCBjb2xvcik7CisJCXN0cmJ1Zl9hZGRzdHIoc2IsIGNvbG9yKTsKKwkJcmV0dXJuIGVuZCAtIHBsYWNlaG9sZGVyICsgMTsKKwl9CisJaWYgKCFwcmVmaXhjbXAocGxhY2Vob2xkZXIgKyAxLCAicmVkIikpIHsKKwkJc3RyYnVmX2FkZHN0cihzYiwgR0lUX0NPTE9SX1JFRCk7CisJCXJldHVybiA0OworCX0gZWxzZSBpZiAoIXByZWZpeGNtcChwbGFjZWhvbGRlciArIDEsICJncmVlbiIpKSB7CisJCXN0cmJ1Zl9hZGRzdHIoc2IsIEdJVF9DT0xPUl9HUkVFTik7CisJCXJldHVybiA2OworCX0gZWxzZSBpZiAoIXByZWZpeGNtcChwbGFjZWhvbGRlciArIDEsICJibHVlIikpIHsKKwkJc3RyYnVmX2FkZHN0cihzYiwgR0lUX0NPTE9SX0JMVUUpOworCQlyZXR1cm4gNTsKKwl9IGVsc2UgaWYgKCFwcmVmaXhjbXAocGxhY2Vob2xkZXIgKyAxLCAicmVzZXQiKSkgeworCQlzdHJidWZfYWRkc3RyKHNiLCBHSVRfQ09MT1JfUkVTRVQpOworCQlyZXR1cm4gNjsKKwl9IGVsc2UKKwkJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzaXplX3QgcGFyc2VfcGFkZGluZ19wbGFjZWhvbGRlcihzdHJ1Y3Qgc3RyYnVmICpzYiwKKwkJCQkJY29uc3QgY2hhciAqcGxhY2Vob2xkZXIsCisJCQkJCXN0cnVjdCBmb3JtYXRfY29tbWl0X2NvbnRleHQgKmMpCit7CisJY29uc3QgY2hhciAqY2ggPSBwbGFjZWhvbGRlcjsKKwllbnVtIGZsdXNoX3R5cGUgZmx1c2hfdHlwZTsKKwlpbnQgdG9fY29sdW1uID0gMDsKKworCXN3aXRjaCAoKmNoKyspIHsKKwljYXNlICc8JzoKKwkJZmx1c2hfdHlwZSA9IGZsdXNoX3JpZ2h0OworCQlicmVhazsKKwljYXNlICc+JzoKKwkJaWYgKCpjaCA9PSAnPCcpIHsKKwkJCWZsdXNoX3R5cGUgPSBmbHVzaF9ib3RoOworCQkJY2grKzsKKwkJfSBlbHNlIGlmICgqY2ggPT0gJz4nKSB7CisJCQlmbHVzaF90eXBlID0gZmx1c2hfbGVmdF9hbmRfc3RlYWw7CisJCQljaCsrOworCQl9IGVsc2UKKwkJCWZsdXNoX3R5cGUgPSBmbHVzaF9sZWZ0OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gMDsKKwl9CisKKwkvKiB0aGUgbmV4dCB2YWx1ZSBtZWFucyAid2lkZSBlbm91Z2ggdG8gdGhhdCBjb2x1bW4iICovCisJaWYgKCpjaCA9PSAnfCcpIHsKKwkJdG9fY29sdW1uID0gMTsKKwkJY2grKzsKKwl9CisKKwlpZiAoKmNoID09ICcoJykgeworCQljb25zdCBjaGFyICpzdGFydCA9IGNoICsgMTsKKwkJY29uc3QgY2hhciAqZW5kID0gc3RhcnQgKyBzdHJjc3BuKHN0YXJ0LCAiLCkiKTsKKwkJY2hhciAqbmV4dDsKKwkJaW50IHdpZHRoOworCQlpZiAoIWVuZCB8fCBlbmQgPT0gc3RhcnQpCisJCQlyZXR1cm4gMDsKKwkJd2lkdGggPSBzdHJ0b3VsKHN0YXJ0LCAmbmV4dCwgMTApOworCQlpZiAobmV4dCA9PSBzdGFydCB8fCB3aWR0aCA9PSAwKQorCQkJcmV0dXJuIDA7CisJCWMtPnBhZGRpbmcgPSB0b19jb2x1bW4gPyAtd2lkdGggOiB3aWR0aDsKKwkJYy0+Zmx1c2hfdHlwZSA9IGZsdXNoX3R5cGU7CisKKwkJaWYgKCplbmQgPT0gJywnKSB7CisJCQlzdGFydCA9IGVuZCArIDE7CisJCQllbmQgPSBzdHJjaHIoc3RhcnQsICcpJyk7CisJCQlpZiAoIWVuZCB8fCBlbmQgPT0gc3RhcnQpCisJCQkJcmV0dXJuIDA7CisJCQlpZiAoIXByZWZpeGNtcChzdGFydCwgInRydW5jKSIpKQorCQkJCWMtPnRydW5jYXRlID0gdHJ1bmNfcmlnaHQ7CisJCQllbHNlIGlmICghcHJlZml4Y21wKHN0YXJ0LCAibHRydW5jKSIpKQorCQkJCWMtPnRydW5jYXRlID0gdHJ1bmNfbGVmdDsKKwkJCWVsc2UgaWYgKCFwcmVmaXhjbXAoc3RhcnQsICJtdHJ1bmMpIikpCisJCQkJYy0+dHJ1bmNhdGUgPSB0cnVuY19taWRkbGU7CisJCQllbHNlCisJCQkJcmV0dXJuIDA7CisJCX0gZWxzZQorCQkJYy0+dHJ1bmNhdGUgPSB0cnVuY19ub25lOworCisJCXJldHVybiBlbmQgLSBwbGFjZWhvbGRlciArIDE7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgc2l6ZV90IGZvcm1hdF9jb21taXRfb25lKHN0cnVjdCBzdHJidWYgKnNiLCAvKiBpbiBVVEYtOCAqLworCQkJCWNvbnN0IGNoYXIgKnBsYWNlaG9sZGVyLAogCQkJCXZvaWQgKmNvbnRleHQpCiB7CiAJc3RydWN0IGZvcm1hdF9jb21taXRfY29udGV4dCAqYyA9IGNvbnRleHQ7CkBAIC04OTIsMzEgKzEwNzIsMjAgQEAKIAkvKiB0aGVzZSBhcmUgaW5kZXBlbmRlbnQgb2YgdGhlIGNvbW1pdCAqLwogCXN3aXRjaCAocGxhY2Vob2xkZXJbMF0pIHsKIAljYXNlICdDJzoKLQkJaWYgKHBsYWNlaG9sZGVyWzFdID09ICcoJykgewotCQkJY29uc3QgY2hhciAqZW5kID0gc3RyY2hyKHBsYWNlaG9sZGVyICsgMiwgJyknKTsKLQkJCWNoYXIgY29sb3JbQ09MT1JfTUFYTEVOXTsKLQkJCWlmICghZW5kKQotCQkJCXJldHVybiAwOwotCQkJY29sb3JfcGFyc2VfbWVtKHBsYWNlaG9sZGVyICsgMiwKLQkJCQkJZW5kIC0gKHBsYWNlaG9sZGVyICsgMiksCi0JCQkJCSItLXByZXR0eSBmb3JtYXQiLCBjb2xvcik7Ci0JCQlzdHJidWZfYWRkc3RyKHNiLCBjb2xvcik7Ci0JCQlyZXR1cm4gZW5kIC0gcGxhY2Vob2xkZXIgKyAxOworCQlpZiAoIXByZWZpeGNtcChwbGFjZWhvbGRlciArIDEsICIoYXV0bykiKSkgeworCQkJYy0+YXV0b19jb2xvciA9IDE7CisJCQlyZXR1cm4gNzsgLyogY29uc3VtZWQgNyBieXRlcywgIkMoYXV0bykiICovCisJCX0gZWxzZSB7CisJCQlpbnQgcmV0ID0gcGFyc2VfY29sb3Ioc2IsIHBsYWNlaG9sZGVyLCBjKTsKKwkJCWlmIChyZXQpCisJCQkJYy0+YXV0b19jb2xvciA9IDA7CisJCQkvKgorCQkJICogT3RoZXJ3aXNlLCB3ZSBkZWNpZGVkIHRvIHRyZWF0ICVDPHVua25vd24+CisJCQkgKiBhcyBhIGxpdGVyYWwgc3RyaW5nLCBhbmQgdGhlIHByZXZpb3VzCisJCQkgKiAlQyhhdXRvKSBpcyBzdGlsbCB2YWxpZC4KKwkJCSAqLworCQkJcmV0dXJuIHJldDsKIAkJfQotCQlpZiAoIXByZWZpeGNtcChwbGFjZWhvbGRlciArIDEsICJyZWQiKSkgewotCQkJc3RyYnVmX2FkZHN0cihzYiwgR0lUX0NPTE9SX1JFRCk7Ci0JCQlyZXR1cm4gNDsKLQkJfSBlbHNlIGlmICghcHJlZml4Y21wKHBsYWNlaG9sZGVyICsgMSwgImdyZWVuIikpIHsKLQkJCXN0cmJ1Zl9hZGRzdHIoc2IsIEdJVF9DT0xPUl9HUkVFTik7Ci0JCQlyZXR1cm4gNjsKLQkJfSBlbHNlIGlmICghcHJlZml4Y21wKHBsYWNlaG9sZGVyICsgMSwgImJsdWUiKSkgewotCQkJc3RyYnVmX2FkZHN0cihzYiwgR0lUX0NPTE9SX0JMVUUpOwotCQkJcmV0dXJuIDU7Ci0JCX0gZWxzZSBpZiAoIXByZWZpeGNtcChwbGFjZWhvbGRlciArIDEsICJyZXNldCIpKSB7Ci0JCQlzdHJidWZfYWRkc3RyKHNiLCBHSVRfQ09MT1JfUkVTRVQpOwotCQkJcmV0dXJuIDY7Ci0JCX0gZWxzZQotCQkJcmV0dXJuIDA7CiAJY2FzZSAnbic6CQkvKiBuZXdsaW5lICovCiAJCXN0cmJ1Zl9hZGRjaChzYiwgJ1xuJyk7CiAJCXJldHVybiAxOwpAQCAtOTU0LDYgKzExMjMsMTAgQEAKIAkJCXJldHVybiBlbmQgLSBwbGFjZWhvbGRlciArIDE7CiAJCX0gZWxzZQogCQkJcmV0dXJuIDA7CisKKwljYXNlICc8JzoKKwljYXNlICc+JzoKKwkJcmV0dXJuIHBhcnNlX3BhZGRpbmdfcGxhY2Vob2xkZXIoc2IsIHBsYWNlaG9sZGVyLCBjKTsKIAl9CiAKIAkvKiB0aGVzZSBkZXBlbmQgb24gdGhlIGNvbW1pdCAqLwpAQCAtOTYyLDEzICsxMTM1LDE5IEBACiAKIAlzd2l0Y2ggKHBsYWNlaG9sZGVyWzBdKSB7CiAJY2FzZSAnSCc6CQkvKiBjb21taXQgaGFzaCAqLworCQlzdHJidWZfYWRkc3RyKHNiLCBkaWZmX2dldF9jb2xvcihjLT5hdXRvX2NvbG9yLCBESUZGX0NPTU1JVCkpOwogCQlzdHJidWZfYWRkc3RyKHNiLCBzaGExX3RvX2hleChjb21taXQtPm9iamVjdC5zaGExKSk7CisJCXN0cmJ1Zl9hZGRzdHIoc2IsIGRpZmZfZ2V0X2NvbG9yKGMtPmF1dG9fY29sb3IsIERJRkZfUkVTRVQpKTsKIAkJcmV0dXJuIDE7CiAJY2FzZSAnaCc6CQkvKiBhYmJyZXZpYXRlZCBjb21taXQgaGFzaCAqLwotCQlpZiAoYWRkX2FnYWluKHNiLCAmYy0+YWJicmV2X2NvbW1pdF9oYXNoKSkKKwkJc3RyYnVmX2FkZHN0cihzYiwgZGlmZl9nZXRfY29sb3IoYy0+YXV0b19jb2xvciwgRElGRl9DT01NSVQpKTsKKwkJaWYgKGFkZF9hZ2FpbihzYiwgJmMtPmFiYnJldl9jb21taXRfaGFzaCkpIHsKKwkJCXN0cmJ1Zl9hZGRzdHIoc2IsIGRpZmZfZ2V0X2NvbG9yKGMtPmF1dG9fY29sb3IsIERJRkZfUkVTRVQpKTsKIAkJCXJldHVybiAxOworCQl9CiAJCXN0cmJ1Zl9hZGRzdHIoc2IsIGZpbmRfdW5pcXVlX2FiYnJldihjb21taXQtPm9iamVjdC5zaGExLAogCQkJCQkJICAgICBjLT5wcmV0dHlfY3R4LT5hYmJyZXYpKTsKKwkJc3RyYnVmX2FkZHN0cihzYiwgZGlmZl9nZXRfY29sb3IoYy0+YXV0b19jb2xvciwgRElGRl9SRVNFVCkpOwogCQljLT5hYmJyZXZfY29tbWl0X2hhc2gubGVuID0gc2ItPmxlbiAtIGMtPmFiYnJldl9jb21taXRfaGFzaC5vZmY7CiAJCXJldHVybiAxOwogCWNhc2UgJ1QnOgkJLyogdHJlZSBoYXNoICovCkBAIC0xMDA1LDcgKzExODQsOCBAQAogCQlzdHJidWZfYWRkc3RyKHNiLCBnZXRfcmV2aXNpb25fbWFyayhOVUxMLCBjb21taXQpKTsKIAkJcmV0dXJuIDE7CiAJY2FzZSAnZCc6Ci0JCWZvcm1hdF9kZWNvcmF0aW9uKHNiLCBjb21taXQpOworCQlsb2FkX3JlZl9kZWNvcmF0aW9ucyhERUNPUkFURV9TSE9SVF9SRUZTKTsKKwkJZm9ybWF0X2RlY29yYXRpb25zKHNiLCBjb21taXQsIGMtPmF1dG9fY29sb3IpOwogCQlyZXR1cm4gMTsKIAljYXNlICdnJzoJCS8qIHJlZmxvZyBpbmZvICovCiAJCXN3aXRjaChwbGFjZWhvbGRlclsxXSkgewpAQCAtMTAzMywzMiArMTIxMywzNyBAQAogCQl9CiAJCXJldHVybiAwOwkvKiB1bmtub3duICVnIHBsYWNlaG9sZGVyICovCiAJY2FzZSAnTic6Ci0JCWlmIChjLT5wcmV0dHlfY3R4LT5zaG93X25vdGVzKSB7Ci0JCQlmb3JtYXRfZGlzcGxheV9ub3Rlcyhjb21taXQtPm9iamVjdC5zaGExLCBzYiwKLQkJCQkgICAgZ2V0X2xvZ19vdXRwdXRfZW5jb2RpbmcoKSwgMCk7CisJCWlmIChjLT5wcmV0dHlfY3R4LT5ub3Rlc19tZXNzYWdlKSB7CisJCQlzdHJidWZfYWRkc3RyKHNiLCBjLT5wcmV0dHlfY3R4LT5ub3Rlc19tZXNzYWdlKTsKIAkJCXJldHVybiAxOwogCQl9CiAJCXJldHVybiAwOwogCX0KIAogCWlmIChwbGFjZWhvbGRlclswXSA9PSAnRycpIHsKLQkJaWYgKCFjLT5jb21taXRfc2lnbmF0dXJlX3BhcnNlZCkKLQkJCXBhcnNlX2NvbW1pdF9zaWduYXR1cmUoYyk7CisJCWlmICghYy0+c2lnbmF0dXJlX2NoZWNrLnJlc3VsdCkKKwkJCWNoZWNrX2NvbW1pdF9zaWduYXR1cmUoYy0+Y29tbWl0LCAmKGMtPnNpZ25hdHVyZV9jaGVjaykpOwogCQlzd2l0Y2ggKHBsYWNlaG9sZGVyWzFdKSB7CiAJCWNhc2UgJ0cnOgotCQkJaWYgKGMtPnNpZ25hdHVyZS5ncGdfb3V0cHV0KQotCQkJCXN0cmJ1Zl9hZGRzdHIoc2IsIGMtPnNpZ25hdHVyZS5ncGdfb3V0cHV0KTsKKwkJCWlmIChjLT5zaWduYXR1cmVfY2hlY2suZ3BnX291dHB1dCkKKwkJCQlzdHJidWZfYWRkc3RyKHNiLCBjLT5zaWduYXR1cmVfY2hlY2suZ3BnX291dHB1dCk7CiAJCQlicmVhazsKIAkJY2FzZSAnPyc6Ci0JCQlzd2l0Y2ggKGMtPnNpZ25hdHVyZS5nb29kX2JhZCkgeworCQkJc3dpdGNoIChjLT5zaWduYXR1cmVfY2hlY2sucmVzdWx0KSB7CiAJCQljYXNlICdHJzoKIAkJCWNhc2UgJ0InOgotCQkJCXN0cmJ1Zl9hZGRjaChzYiwgYy0+c2lnbmF0dXJlLmdvb2RfYmFkKTsKKwkJCWNhc2UgJ1UnOgorCQkJY2FzZSAnTic6CisJCQkJc3RyYnVmX2FkZGNoKHNiLCBjLT5zaWduYXR1cmVfY2hlY2sucmVzdWx0KTsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlICdTJzoKLQkJCWlmIChjLT5zaWduYXR1cmUuc2lnbmVyKQotCQkJCXN0cmJ1Zl9hZGRzdHIoc2IsIGMtPnNpZ25hdHVyZS5zaWduZXIpOworCQkJaWYgKGMtPnNpZ25hdHVyZV9jaGVjay5zaWduZXIpCisJCQkJc3RyYnVmX2FkZHN0cihzYiwgYy0+c2lnbmF0dXJlX2NoZWNrLnNpZ25lcik7CisJCQlicmVhazsKKwkJY2FzZSAnSyc6CisJCQlpZiAoYy0+c2lnbmF0dXJlX2NoZWNrLmtleSkKKwkJCQlzdHJidWZfYWRkc3RyKHNiLCBjLT5zaWduYXR1cmVfY2hlY2sua2V5KTsKIAkJCWJyZWFrOwogCQl9CiAJCXJldHVybiAyOwpAQCAtMTA3OSw3ICsxMjY0LDggQEAKIAkJCQkgICBtc2cgKyBjLT5jb21taXR0ZXIub2ZmLCBjLT5jb21taXR0ZXIubGVuLAogCQkJCSAgIGMtPnByZXR0eV9jdHgtPmRhdGVfbW9kZSk7CiAJY2FzZSAnZSc6CS8qIGVuY29kaW5nICovCi0JCXN0cmJ1Zl9hZGQoc2IsIG1zZyArIGMtPmVuY29kaW5nLm9mZiwgYy0+ZW5jb2RpbmcubGVuKTsKKwkJaWYgKGMtPmNvbW1pdF9lbmNvZGluZykKKwkJCXN0cmJ1Zl9hZGRzdHIoc2IsIGMtPmNvbW1pdF9lbmNvZGluZyk7CiAJCXJldHVybiAxOwogCWNhc2UgJ0InOgkvKiByYXcgYm9keSAqLwogCQkvKiBtZXNzYWdlX29mZiBpcyBhbHdheXMgbGVmdCBhdCB0aGUgaW5pdGlhbCBuZXdsaW5lICovCkBAIC0xMTA1LDcgKzEyOTEsMTExIEBACiAJcmV0dXJuIDA7CS8qIHVua25vd24gcGxhY2Vob2xkZXIgKi8KIH0KIAotc3RhdGljIHNpemVfdCBmb3JtYXRfY29tbWl0X2l0ZW0oc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKnBsYWNlaG9sZGVyLAorc3RhdGljIHNpemVfdCBmb3JtYXRfYW5kX3BhZF9jb21taXQoc3RydWN0IHN0cmJ1ZiAqc2IsIC8qIGluIFVURi04ICovCisJCQkJICAgIGNvbnN0IGNoYXIgKnBsYWNlaG9sZGVyLAorCQkJCSAgICBzdHJ1Y3QgZm9ybWF0X2NvbW1pdF9jb250ZXh0ICpjKQoreworCXN0cnVjdCBzdHJidWYgbG9jYWxfc2IgPSBTVFJCVUZfSU5JVDsKKwlpbnQgdG90YWxfY29uc3VtZWQgPSAwLCBsZW4sIHBhZGRpbmcgPSBjLT5wYWRkaW5nOworCWlmIChwYWRkaW5nIDwgMCkgeworCQljb25zdCBjaGFyICpzdGFydCA9IHN0cnJjaHIoc2ItPmJ1ZiwgJ1xuJyk7CisJCWludCBvY2N1cGllZDsKKwkJaWYgKCFzdGFydCkKKwkJCXN0YXJ0ID0gc2ItPmJ1ZjsKKwkJb2NjdXBpZWQgPSB1dGY4X3N0cm53aWR0aChzdGFydCwgLTEsIDEpOworCQlwYWRkaW5nID0gKC1wYWRkaW5nKSAtIG9jY3VwaWVkOworCX0KKwl3aGlsZSAoMSkgeworCQlpbnQgbW9kaWZpZXIgPSAqcGxhY2Vob2xkZXIgPT0gJ0MnOworCQlpbnQgY29uc3VtZWQgPSBmb3JtYXRfY29tbWl0X29uZSgmbG9jYWxfc2IsIHBsYWNlaG9sZGVyLCBjKTsKKwkJdG90YWxfY29uc3VtZWQgKz0gY29uc3VtZWQ7CisKKwkJaWYgKCFtb2RpZmllcikKKwkJCWJyZWFrOworCisJCXBsYWNlaG9sZGVyICs9IGNvbnN1bWVkOworCQlpZiAoKnBsYWNlaG9sZGVyICE9ICclJykKKwkJCWJyZWFrOworCQlwbGFjZWhvbGRlcisrOworCQl0b3RhbF9jb25zdW1lZCsrOworCX0KKwlsZW4gPSB1dGY4X3N0cm53aWR0aChsb2NhbF9zYi5idWYsIC0xLCAxKTsKKworCWlmIChjLT5mbHVzaF90eXBlID09IGZsdXNoX2xlZnRfYW5kX3N0ZWFsKSB7CisJCWNvbnN0IGNoYXIgKmNoID0gc2ItPmJ1ZiArIHNiLT5sZW4gLSAxOworCQl3aGlsZSAobGVuID4gcGFkZGluZyAmJiBjaCA+IHNiLT5idWYpIHsKKwkJCWNvbnN0IGNoYXIgKnA7CisJCQlpZiAoKmNoID09ICcgJykgeworCQkJCWNoLS07CisJCQkJcGFkZGluZysrOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJLyogY2hlY2sgZm9yIHRyYWlsaW5nIGFuc2kgc2VxdWVuY2VzICovCisJCQlpZiAoKmNoICE9ICdtJykKKwkJCQlicmVhazsKKwkJCXAgPSBjaCAtIDE7CisJCQl3aGlsZSAoY2ggLSBwIDwgMTAgJiYgKnAgIT0gJ1wwMzMnKQorCQkJCXAtLTsKKwkJCWlmICgqcCAhPSAnXDAzMycgfHwKKwkJCSAgICBjaCArIDEgLSBwICE9IGRpc3BsYXlfbW9kZV9lc2Nfc2VxdWVuY2VfbGVuKHApKQorCQkJCWJyZWFrOworCQkJLyoKKwkJCSAqIGdvdCBhIGdvb2QgYW5zaSBzZXF1ZW5jZSwgcHV0IGl0IGJhY2sgdG8KKwkJCSAqIGxvY2FsX3NiIGFzIHdlJ3JlIGN1dHRpbmcgc2IKKwkJCSAqLworCQkJc3RyYnVmX2luc2VydCgmbG9jYWxfc2IsIDAsIHAsIGNoICsgMSAtIHApOworCQkJY2ggPSBwIC0gMTsKKwkJfQorCQlzdHJidWZfc2V0bGVuKHNiLCBjaCArIDEgLSBzYi0+YnVmKTsKKwkJYy0+Zmx1c2hfdHlwZSA9IGZsdXNoX2xlZnQ7CisJfQorCisJaWYgKGxlbiA+IHBhZGRpbmcpIHsKKwkJc3dpdGNoIChjLT50cnVuY2F0ZSkgeworCQljYXNlIHRydW5jX2xlZnQ6CisJCQlzdHJidWZfdXRmOF9yZXBsYWNlKCZsb2NhbF9zYiwKKwkJCQkJICAgIDAsIGxlbiAtIChwYWRkaW5nIC0gMiksCisJCQkJCSAgICAiLi4iKTsKKwkJCWJyZWFrOworCQljYXNlIHRydW5jX21pZGRsZToKKwkJCXN0cmJ1Zl91dGY4X3JlcGxhY2UoJmxvY2FsX3NiLAorCQkJCQkgICAgcGFkZGluZyAvIDIgLSAxLAorCQkJCQkgICAgbGVuIC0gKHBhZGRpbmcgLSAyKSwKKwkJCQkJICAgICIuLiIpOworCQkJYnJlYWs7CisJCWNhc2UgdHJ1bmNfcmlnaHQ6CisJCQlzdHJidWZfdXRmOF9yZXBsYWNlKCZsb2NhbF9zYiwKKwkJCQkJICAgIHBhZGRpbmcgLSAyLCBsZW4gLSAocGFkZGluZyAtIDIpLAorCQkJCQkgICAgIi4uIik7CisJCQlicmVhazsKKwkJY2FzZSB0cnVuY19ub25lOgorCQkJYnJlYWs7CisJCX0KKwkJc3RyYnVmX2FkZHN0cihzYiwgbG9jYWxfc2IuYnVmKTsKKwl9IGVsc2UgeworCQlpbnQgc2JfbGVuID0gc2ItPmxlbiwgb2Zmc2V0ID0gMDsKKwkJaWYgKGMtPmZsdXNoX3R5cGUgPT0gZmx1c2hfbGVmdCkKKwkJCW9mZnNldCA9IHBhZGRpbmcgLSBsZW47CisJCWVsc2UgaWYgKGMtPmZsdXNoX3R5cGUgPT0gZmx1c2hfYm90aCkKKwkJCW9mZnNldCA9IChwYWRkaW5nIC0gbGVuKSAvIDI7CisJCS8qCisJCSAqIHdlIGNhbGN1bGF0ZSBwYWRkaW5nIGluIGNvbHVtbnMsIG5vdworCQkgKiBjb252ZXJ0IGl0IGJhY2sgdG8gY2hhcnMKKwkJICovCisJCXBhZGRpbmcgPSBwYWRkaW5nIC0gbGVuICsgbG9jYWxfc2IubGVuOworCQlzdHJidWZfZ3JvdyhzYiwgcGFkZGluZyk7CisJCXN0cmJ1Zl9zZXRsZW4oc2IsIHNiX2xlbiArIHBhZGRpbmcpOworCQltZW1zZXQoc2ItPmJ1ZiArIHNiX2xlbiwgJyAnLCBzYi0+bGVuIC0gc2JfbGVuKTsKKwkJbWVtY3B5KHNiLT5idWYgKyBzYl9sZW4gKyBvZmZzZXQsIGxvY2FsX3NiLmJ1ZiwKKwkJICAgICAgIGxvY2FsX3NiLmxlbik7CisJfQorCXN0cmJ1Zl9yZWxlYXNlKCZsb2NhbF9zYik7CisJYy0+Zmx1c2hfdHlwZSA9IG5vX2ZsdXNoOworCXJldHVybiB0b3RhbF9jb25zdW1lZDsKK30KKworc3RhdGljIHNpemVfdCBmb3JtYXRfY29tbWl0X2l0ZW0oc3RydWN0IHN0cmJ1ZiAqc2IsIC8qIGluIFVURi04ICovCisJCQkJIGNvbnN0IGNoYXIgKnBsYWNlaG9sZGVyLAogCQkJCSB2b2lkICpjb250ZXh0KQogewogCWludCBjb25zdW1lZDsKQEAgLTExMzQsNyArMTQyNCwxMCBAQAogCQlwbGFjZWhvbGRlcisrOwogCiAJb3JpZ19sZW4gPSBzYi0+bGVuOwotCWNvbnN1bWVkID0gZm9ybWF0X2NvbW1pdF9vbmUoc2IsIHBsYWNlaG9sZGVyLCBjb250ZXh0KTsKKwlpZiAoKChzdHJ1Y3QgZm9ybWF0X2NvbW1pdF9jb250ZXh0ICopY29udGV4dCktPmZsdXNoX3R5cGUgIT0gbm9fZmx1c2gpCisJCWNvbnN1bWVkID0gZm9ybWF0X2FuZF9wYWRfY29tbWl0KHNiLCBwbGFjZWhvbGRlciwgY29udGV4dCk7CisJZWxzZQorCQljb25zdW1lZCA9IGZvcm1hdF9jb21taXRfb25lKHNiLCBwbGFjZWhvbGRlciwgY29udGV4dCk7CiAJaWYgKG1hZ2ljID09IE5PX01BR0lDKQogCQlyZXR1cm4gY29uc3VtZWQ7CiAKQEAgLTExODQsMzEgKzE0NzcsNDEgQEAKIAkJCSAgIGNvbnN0IHN0cnVjdCBwcmV0dHlfcHJpbnRfY29udGV4dCAqcHJldHR5X2N0eCkKIHsKIAlzdHJ1Y3QgZm9ybWF0X2NvbW1pdF9jb250ZXh0IGNvbnRleHQ7Ci0Jc3RhdGljIGNvbnN0IGNoYXIgdXRmOFtdID0gIlVURi04IjsKIAljb25zdCBjaGFyICpvdXRwdXRfZW5jID0gcHJldHR5X2N0eC0+b3V0cHV0X2VuY29kaW5nOworCWNvbnN0IGNoYXIgKnV0ZjggPSAiVVRGLTgiOwogCiAJbWVtc2V0KCZjb250ZXh0LCAwLCBzaXplb2YoY29udGV4dCkpOwogCWNvbnRleHQuY29tbWl0ID0gY29tbWl0OwogCWNvbnRleHQucHJldHR5X2N0eCA9IHByZXR0eV9jdHg7CiAJY29udGV4dC53cmFwX3N0YXJ0ID0gc2ItPmxlbjsKLQljb250ZXh0Lm1lc3NhZ2UgPSBjb21taXQtPmJ1ZmZlcjsKLQlpZiAob3V0cHV0X2VuYykgewotCQljaGFyICplbmMgPSBnZXRfaGVhZGVyKGNvbW1pdCwgImVuY29kaW5nIik7Ci0JCWlmIChzdHJjbXAoZW5jID8gZW5jIDogdXRmOCwgb3V0cHV0X2VuYykpIHsKLQkJCWNvbnRleHQubWVzc2FnZSA9IGxvZ21zZ19yZWVuY29kZShjb21taXQsIG91dHB1dF9lbmMpOwotCQkJaWYgKCFjb250ZXh0Lm1lc3NhZ2UpCi0JCQkJY29udGV4dC5tZXNzYWdlID0gY29tbWl0LT5idWZmZXI7Ci0JCX0KLQkJZnJlZShlbmMpOwotCX0KKwljb250ZXh0Lm1lc3NhZ2UgPSBsb2dtc2dfcmVlbmNvZGUoY29tbWl0LAorCQkJCQkgICZjb250ZXh0LmNvbW1pdF9lbmNvZGluZywKKwkJCQkJICBvdXRwdXRfZW5jKTsKIAogCXN0cmJ1Zl9leHBhbmQoc2IsIGZvcm1hdCwgZm9ybWF0X2NvbW1pdF9pdGVtLCAmY29udGV4dCk7CiAJcmV3cmFwX21lc3NhZ2VfdGFpbChzYiwgJmNvbnRleHQsIDAsIDAsIDApOwogCi0JaWYgKGNvbnRleHQubWVzc2FnZSAhPSBjb21taXQtPmJ1ZmZlcikKLQkJZnJlZShjb250ZXh0Lm1lc3NhZ2UpOwotCWZyZWUoY29udGV4dC5zaWduYXR1cmUuZ3BnX291dHB1dCk7Ci0JZnJlZShjb250ZXh0LnNpZ25hdHVyZS5zaWduZXIpOworCWlmIChvdXRwdXRfZW5jKSB7CisJCWlmIChzYW1lX2VuY29kaW5nKHV0ZjgsIG91dHB1dF9lbmMpKQorCQkJb3V0cHV0X2VuYyA9IE5VTEw7CisJfSBlbHNlIHsKKwkJaWYgKGNvbnRleHQuY29tbWl0X2VuY29kaW5nICYmCisJCSAgICAhc2FtZV9lbmNvZGluZyhjb250ZXh0LmNvbW1pdF9lbmNvZGluZywgdXRmOCkpCisJCQlvdXRwdXRfZW5jID0gY29udGV4dC5jb21taXRfZW5jb2Rpbmc7CisJfQorCisJaWYgKG91dHB1dF9lbmMpIHsKKwkJaW50IG91dHN6OworCQljaGFyICpvdXQgPSByZWVuY29kZV9zdHJpbmdfbGVuKHNiLT5idWYsIHNiLT5sZW4sCisJCQkJCQlvdXRwdXRfZW5jLCB1dGY4LCAmb3V0c3opOworCQlpZiAob3V0KQorCQkJc3RyYnVmX2F0dGFjaChzYiwgb3V0LCBvdXRzeiwgb3V0c3ogKyAxKTsKKwl9CisKKwlmcmVlKGNvbnRleHQuY29tbWl0X2VuY29kaW5nKTsKKwlsb2dtc2dfZnJlZShjb250ZXh0Lm1lc3NhZ2UsIGNvbW1pdCk7CisJZnJlZShjb250ZXh0LnNpZ25hdHVyZV9jaGVjay5ncGdfb3V0cHV0KTsKKwlmcmVlKGNvbnRleHQuc2lnbmF0dXJlX2NoZWNrLnNpZ25lcik7CiB9CiAKIHN0YXRpYyB2b2lkIHBwX2hlYWRlcihjb25zdCBzdHJ1Y3QgcHJldHR5X3ByaW50X2NvbnRleHQgKnBwLApAQCAtMTIzNiw3ICsxNTM5LDcgQEAKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJaWYgKCFtZW1jbXAobGluZSwgInBhcmVudCAiLCA3KSkgeworCQlpZiAoIXByZWZpeGNtcChsaW5lLCAicGFyZW50ICIpKSB7CiAJCQlpZiAobGluZWxlbiAhPSA0OCkKIAkJCQlkaWUoImJhZCBwYXJlbnQgbGluZSBpbiBjb21taXQiKTsKIAkJCWNvbnRpbnVlOwpAQCAtMTI2MCwxMSArMTU2MywxMSBAQAogCQkgKiBGVUxMIHNob3dzIGJvdGggYXV0aG9ycyBidXQgbm90IGRhdGVzLgogCQkgKiBGVUxMRVIgc2hvd3MgYm90aCBhdXRob3JzIGFuZCBkYXRlcy4KIAkJICovCi0JCWlmICghbWVtY21wKGxpbmUsICJhdXRob3IgIiwgNykpIHsKKwkJaWYgKCFwcmVmaXhjbXAobGluZSwgImF1dGhvciAiKSkgewogCQkJc3RyYnVmX2dyb3coc2IsIGxpbmVsZW4gKyA4MCk7CiAJCQlwcF91c2VyX2luZm8ocHAsICJBdXRob3IiLCBzYiwgbGluZSArIDcsIGVuY29kaW5nKTsKIAkJfQotCQlpZiAoIW1lbWNtcChsaW5lLCAiY29tbWl0dGVyICIsIDEwKSAmJgorCQlpZiAoIXByZWZpeGNtcChsaW5lLCAiY29tbWl0dGVyICIpICYmCiAJCSAgICAocHAtPmZtdCA9PSBDTUlUX0ZNVF9GVUxMIHx8IHBwLT5mbXQgPT0gQ01JVF9GTVRfRlVMTEVSKSkgewogCQkJc3RyYnVmX2dyb3coc2IsIGxpbmVsZW4gKyA4MCk7CiAJCQlwcF91c2VyX2luZm8ocHAsICJDb21taXQiLCBzYiwgbGluZSArIDEwLCBlbmNvZGluZyk7CkBAIC0xMjc4LDYgKzE1ODEsNyBAQAogCQkgICBjb25zdCBjaGFyICplbmNvZGluZywKIAkJICAgaW50IG5lZWRfOGJpdF9jdGUpCiB7CisJc3RhdGljIGNvbnN0IGludCBtYXhfbGVuZ3RoID0gNzg7IC8qIHBlciByZmMyMDQ3ICovCiAJc3RydWN0IHN0cmJ1ZiB0aXRsZTsKIAogCXN0cmJ1Zl9pbml0KCZ0aXRsZSwgODApOwpAQCAtMTI4Nyw3ICsxNTkxLDEyIEBACiAJc3RyYnVmX2dyb3coc2IsIHRpdGxlLmxlbiArIDEwMjQpOwogCWlmIChwcC0+c3ViamVjdCkgewogCQlzdHJidWZfYWRkc3RyKHNiLCBwcC0+c3ViamVjdCk7Ci0JCWFkZF9yZmMyMDQ3KHNiLCB0aXRsZS5idWYsIHRpdGxlLmxlbiwgZW5jb2RpbmcpOworCQlpZiAobmVlZHNfcmZjMjA0N19lbmNvZGluZyh0aXRsZS5idWYsIHRpdGxlLmxlbiwgUkZDMjA0N19TVUJKRUNUKSkKKwkJCWFkZF9yZmMyMDQ3KHNiLCB0aXRsZS5idWYsIHRpdGxlLmxlbiwKKwkJCQkJCWVuY29kaW5nLCBSRkMyMDQ3X1NVQkpFQ1QpOworCQllbHNlCisJCQlzdHJidWZfYWRkX3dyYXBwZWRfYnl0ZXMoc2IsIHRpdGxlLmJ1ZiwgdGl0bGUubGVuLAorCQkJCQkgLWxhc3RfbGluZV9sZW5ndGgoc2IpLCAxLCBtYXhfbGVuZ3RoKTsKIAl9IGVsc2UgewogCQlzdHJidWZfYWRkYnVmKHNiLCAmdGl0bGUpOwogCX0KQEAgLTEzNDEsMjMgKzE2NTAsMTMgQEAKIAl9CiB9CiAKLWNoYXIgKnJlZW5jb2RlX2NvbW1pdF9tZXNzYWdlKGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwgY29uc3QgY2hhciAqKmVuY29kaW5nX3ApCi17Ci0JY29uc3QgY2hhciAqZW5jb2Rpbmc7Ci0KLQllbmNvZGluZyA9IGdldF9sb2dfb3V0cHV0X2VuY29kaW5nKCk7Ci0JaWYgKGVuY29kaW5nX3ApCi0JCSplbmNvZGluZ19wID0gZW5jb2Rpbmc7Ci0JcmV0dXJuIGxvZ21zZ19yZWVuY29kZShjb21taXQsIGVuY29kaW5nKTsKLX0KLQogdm9pZCBwcmV0dHlfcHJpbnRfY29tbWl0KGNvbnN0IHN0cnVjdCBwcmV0dHlfcHJpbnRfY29udGV4dCAqcHAsCiAJCQkgY29uc3Qgc3RydWN0IGNvbW1pdCAqY29tbWl0LAogCQkJIHN0cnVjdCBzdHJidWYgKnNiKQogewogCXVuc2lnbmVkIGxvbmcgYmVnaW5uaW5nX29mX2JvZHk7CiAJaW50IGluZGVudCA9IDQ7Ci0JY29uc3QgY2hhciAqbXNnID0gY29tbWl0LT5idWZmZXI7CisJY29uc3QgY2hhciAqbXNnOwogCWNoYXIgKnJlZW5jb2RlZDsKIAljb25zdCBjaGFyICplbmNvZGluZzsKIAlpbnQgbmVlZF84Yml0X2N0ZSA9IHBwLT5uZWVkXzhiaXRfY3RlOwpAQCAtMTM2NywxMCArMTY2Niw4IEBACiAJCXJldHVybjsKIAl9CiAKLQlyZWVuY29kZWQgPSByZWVuY29kZV9jb21taXRfbWVzc2FnZShjb21taXQsICZlbmNvZGluZyk7Ci0JaWYgKHJlZW5jb2RlZCkgewotCQltc2cgPSByZWVuY29kZWQ7Ci0JfQorCWVuY29kaW5nID0gZ2V0X2xvZ19vdXRwdXRfZW5jb2RpbmcoKTsKKwltc2cgPSByZWVuY29kZWQgPSBsb2dtc2dfcmVlbmNvZGUoY29tbWl0LCBOVUxMLCBlbmNvZGluZyk7CiAKIAlpZiAocHAtPmZtdCA9PSBDTUlUX0ZNVF9PTkVMSU5FIHx8IHBwLT5mbXQgPT0gQ01JVF9GTVRfRU1BSUwpCiAJCWluZGVudCA9IDA7CkBAIC0xNDI3LDExICsxNzI0LDcgQEAKIAlpZiAocHAtPmZtdCA9PSBDTUlUX0ZNVF9FTUFJTCAmJiBzYi0+bGVuIDw9IGJlZ2lubmluZ19vZl9ib2R5KQogCQlzdHJidWZfYWRkY2goc2IsICdcbicpOwogCi0JaWYgKHBwLT5zaG93X25vdGVzKQotCQlmb3JtYXRfZGlzcGxheV9ub3Rlcyhjb21taXQtPm9iamVjdC5zaGExLCBzYiwgZW5jb2RpbmcsCi0JCQkJICAgICBOT1RFU19TSE9XX0hFQURFUiB8IE5PVEVTX0lOREVOVCk7Ci0KLQlmcmVlKHJlZW5jb2RlZCk7CisJbG9nbXNnX2ZyZWUocmVlbmNvZGVkLCBjb21taXQpOwogfQogCiB2b2lkIHBwX2NvbW1pdF9lYXN5KGVudW0gY21pdF9mbXQgZm10LCBjb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsCmRpZmYgLS1naXQgYS9wcm9ncmVzcy5jIGIvcHJvZ3Jlc3MuYwppbmRleCAzOTcxZjQ5Li4xMDY1MmIxIDEwMDY0NAotLS0gYS9wcm9ncmVzcy5jCisrKyBiL3Byb2dyZXNzLmMKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgImdpdC1jb21wYXQtdXRpbC5oIgogI2luY2x1ZGUgInByb2dyZXNzLmgiCisjaW5jbHVkZSAic3RyYnVmLmgiCiAKICNkZWZpbmUgVFBfSURYX01BWCAgICAgIDgKIApAQCAtMTEyLDM0ICsxMTMsMTQgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgdGhyb3VnaHB1dF9zdHJpbmcoc3RydWN0IHRocm91Z2hwdXQgKnRwLCBvZmZfdCB0b3RhbCwKK3N0YXRpYyB2b2lkIHRocm91Z2hwdXRfc3RyaW5nKHN0cnVjdCBzdHJidWYgKmJ1Ziwgb2ZmX3QgdG90YWwsCiAJCQkgICAgICB1bnNpZ25lZCBpbnQgcmF0ZSkKIHsKLQlpbnQgbCA9IHNpemVvZih0cC0+ZGlzcGxheSk7Ci0JaWYgKHRvdGFsID4gMSA8PCAzMCkgewotCQlsIC09IHNucHJpbnRmKHRwLT5kaXNwbGF5LCBsLCAiLCAldS4lMi4ydSBHaUIiLAotCQkJICAgICAgKGludCkodG90YWwgPj4gMzApLAotCQkJICAgICAgKGludCkodG90YWwgJiAoKDEgPDwgMzApIC0gMSkpIC8gMTA3Mzc0MTkpOwotCX0gZWxzZSBpZiAodG90YWwgPiAxIDw8IDIwKSB7Ci0JCWludCB4ID0gdG90YWwgKyA1MjQzOyAgLyogZm9yIHJvdW5kaW5nICovCi0JCWwgLT0gc25wcmludGYodHAtPmRpc3BsYXksIGwsICIsICV1LiUyLjJ1IE1pQiIsCi0JCQkgICAgICB4ID4+IDIwLCAoKHggJiAoKDEgPDwgMjApIC0gMSkpICogMTAwKSA+PiAyMCk7Ci0JfSBlbHNlIGlmICh0b3RhbCA+IDEgPDwgMTApIHsKLQkJaW50IHggPSB0b3RhbCArIDU7ICAvKiBmb3Igcm91bmRpbmcgKi8KLQkJbCAtPSBzbnByaW50Zih0cC0+ZGlzcGxheSwgbCwgIiwgJXUuJTIuMnUgS2lCIiwKLQkJCSAgICAgIHggPj4gMTAsICgoeCAmICgoMSA8PCAxMCkgLSAxKSkgKiAxMDApID4+IDEwKTsKLQl9IGVsc2UgewotCQlsIC09IHNucHJpbnRmKHRwLT5kaXNwbGF5LCBsLCAiLCAldSBieXRlcyIsIChpbnQpdG90YWwpOwotCX0KLQotCWlmIChyYXRlID4gMSA8PCAxMCkgewotCQlpbnQgeCA9IHJhdGUgKyA1OyAgLyogZm9yIHJvdW5kaW5nICovCi0JCXNucHJpbnRmKHRwLT5kaXNwbGF5ICsgc2l6ZW9mKHRwLT5kaXNwbGF5KSAtIGwsIGwsCi0JCQkgIiB8ICV1LiUyLjJ1IE1pQi9zIiwKLQkJCSB4ID4+IDEwLCAoKHggJiAoKDEgPDwgMTApIC0gMSkpICogMTAwKSA+PiAxMCk7Ci0JfSBlbHNlIGlmIChyYXRlKQotCQlzbnByaW50Zih0cC0+ZGlzcGxheSArIHNpemVvZih0cC0+ZGlzcGxheSkgLSBsLCBsLAotCQkJICIgfCAldSBLaUIvcyIsIHJhdGUpOworCXN0cmJ1Zl9hZGRzdHIoYnVmLCAiLCAiKTsKKwlzdHJidWZfaHVtYW5pc2VfYnl0ZXMoYnVmLCB0b3RhbCk7CisJc3RyYnVmX2FkZHN0cihidWYsICIgfCAiKTsKKwlzdHJidWZfaHVtYW5pc2VfYnl0ZXMoYnVmLCByYXRlICogMTAyNCk7CisJc3RyYnVmX2FkZHN0cihidWYsICIvcyIpOwogfQogCiB2b2lkIGRpc3BsYXlfdGhyb3VnaHB1dChzdHJ1Y3QgcHJvZ3Jlc3MgKnByb2dyZXNzLCBvZmZfdCB0b3RhbCkKQEAgLTE4Myw2ICsxNjQsNyBAQAogCW1pc2VjcyArPSAoaW50KSh0di50dl91c2VjIC0gdHAtPnByZXZfdHYudHZfdXNlYykgLyA5Nzc7CiAKIAlpZiAobWlzZWNzID4gNTEyKSB7CisJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJCXVuc2lnbmVkIGludCBjb3VudCwgcmF0ZTsKIAogCQljb3VudCA9IHRvdGFsIC0gdHAtPnByZXZfdG90YWw7CkBAIC0xOTcsNyArMTc5LDkgQEAKIAkJdHAtPmxhc3RfbWlzZWNzW3RwLT5pZHhdID0gbWlzZWNzOwogCQl0cC0+aWR4ID0gKHRwLT5pZHggKyAxKSAlIFRQX0lEWF9NQVg7CiAKLQkJdGhyb3VnaHB1dF9zdHJpbmcodHAsIHRvdGFsLCByYXRlKTsKKwkJdGhyb3VnaHB1dF9zdHJpbmcoJmJ1ZiwgdG90YWwsIHJhdGUpOworCQlzdHJuY3B5KHRwLT5kaXNwbGF5LCBidWYuYnVmLCBzaXplb2YodHAtPmRpc3BsYXkpKTsKKwkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CiAJCWlmIChwcm9ncmVzcy0+bGFzdF92YWx1ZSAhPSAtMSAmJiBwcm9ncmVzc191cGRhdGUpCiAJCQlkaXNwbGF5KHByb2dyZXNzLCBwcm9ncmVzcy0+bGFzdF92YWx1ZSwgTlVMTCk7CiAJfQpAQCAtMjUzLDkgKzIzNywxMiBAQAogCiAJCWJ1ZnAgPSAobGVuIDwgc2l6ZW9mKGJ1ZikpID8gYnVmIDogeG1hbGxvYyhsZW4gKyAxKTsKIAkJaWYgKHRwKSB7CisJCQlzdHJ1Y3Qgc3RyYnVmIHN0cmJ1ZiA9IFNUUkJVRl9JTklUOwogCQkJdW5zaWduZWQgaW50IHJhdGUgPSAhdHAtPmF2Z19taXNlY3MgPyAwIDoKIAkJCQkJdHAtPmF2Z19ieXRlcyAvIHRwLT5hdmdfbWlzZWNzOwotCQkJdGhyb3VnaHB1dF9zdHJpbmcodHAsIHRwLT5jdXJyX3RvdGFsLCByYXRlKTsKKwkJCXRocm91Z2hwdXRfc3RyaW5nKCZzdHJidWYsIHRwLT5jdXJyX3RvdGFsLCByYXRlKTsKKwkJCXN0cm5jcHkodHAtPmRpc3BsYXksIHN0cmJ1Zi5idWYsIHNpemVvZih0cC0+ZGlzcGxheSkpOworCQkJc3RyYnVmX3JlbGVhc2UoJnN0cmJ1Zik7CiAJCX0KIAkJcHJvZ3Jlc3NfdXBkYXRlID0gMTsKIAkJc3ByaW50ZihidWZwLCAiLCAlcy5cbiIsIG1zZyk7CmRpZmYgLS1naXQgYS9yZWFjaGFibGUuYyBiL3JlYWNoYWJsZS5jCmluZGV4IGJmNzk3MDYuLmU3ZTZhMWUgMTAwNjQ0Ci0tLSBhL3JlYWNoYWJsZS5jCisrKyBiL3JlYWNoYWJsZS5jCkBAIC0xNTIsMTEgKzE1Miw5IEBACiAKIHN0YXRpYyBpbnQgYWRkX29uZV9yZWYoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgaW50IGZsYWcsIHZvaWQgKmNiX2RhdGEpCiB7Ci0Jc3RydWN0IG9iamVjdCAqb2JqZWN0ID0gcGFyc2Vfb2JqZWN0KHNoYTEpOworCXN0cnVjdCBvYmplY3QgKm9iamVjdCA9IHBhcnNlX29iamVjdF9vcl9kaWUoc2hhMSwgcGF0aCk7CiAJc3RydWN0IHJldl9pbmZvICpyZXZzID0gKHN0cnVjdCByZXZfaW5mbyAqKWNiX2RhdGE7CiAKLQlpZiAoIW9iamVjdCkKLQkJZGllKCJiYWQgb2JqZWN0IHJlZjogJXM6JXMiLCBwYXRoLCBzaGExX3RvX2hleChzaGExKSk7CiAJYWRkX3BlbmRpbmdfb2JqZWN0KHJldnMsIG9iamVjdCwgIiIpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9yZWFkLWNhY2hlLmMgYi9yZWFkLWNhY2hlLmMKaW5kZXggZWYzNTVjYy4uNzA0MGU3OSAxMDA2NDQKLS0tIGEvcmVhZC1jYWNoZS5jCisrKyBiL3JlYWQtY2FjaGUuYwpAQCAtMTcsNiArMTcsMTAgQEAKIAogc3RhdGljIHN0cnVjdCBjYWNoZV9lbnRyeSAqcmVmcmVzaF9jYWNoZV9lbnRyeShzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBpbnQgcmVhbGx5KTsKIAorLyogTWFzayBmb3IgdGhlIG5hbWUgbGVuZ3RoIGluIGNlX2ZsYWdzIGluIHRoZSBvbi1kaXNrIGluZGV4ICovCisKKyNkZWZpbmUgQ0VfTkFNRU1BU0sgICgweDBmZmYpCisKIC8qIEluZGV4IGV4dGVuc2lvbnMuCiAgKgogICogVGhlIGZpcnN0IGxldHRlciBzaG91bGQgYmUgJ0EnLi4nWicgZm9yIGV4dGVuc2lvbnMgdGhhdCBhcmUgbm90CkBAIC00Miw3ICs0Niw3IEBACiB7CiAJc3RydWN0IGNhY2hlX2VudHJ5ICpvbGQgPSBpc3RhdGUtPmNhY2hlW25yXTsKIAotCXJlbW92ZV9uYW1lX2hhc2gob2xkKTsKKwlyZW1vdmVfbmFtZV9oYXNoKGlzdGF0ZSwgb2xkKTsKIAlzZXRfaW5kZXhfZW50cnkoaXN0YXRlLCBuciwgY2UpOwogCWlzdGF0ZS0+Y2FjaGVfY2hhbmdlZCA9IDE7CiB9CkBAIC01NCw4ICs1OCw4IEBACiAKIAluZXcgPSB4bWFsbG9jKGNhY2hlX2VudHJ5X3NpemUobmFtZWxlbikpOwogCWNvcHlfY2FjaGVfZW50cnkobmV3LCBvbGQpOwotCW5ldy0+Y2VfZmxhZ3MgJj0gfihDRV9TVEFURV9NQVNLIHwgQ0VfTkFNRU1BU0spOwotCW5ldy0+Y2VfZmxhZ3MgfD0gKG5hbWVsZW4gPj0gQ0VfTkFNRU1BU0sgPyBDRV9OQU1FTUFTSyA6IG5hbWVsZW4pOworCW5ldy0+Y2VfZmxhZ3MgJj0gfkNFX1NUQVRFX01BU0s7CisJbmV3LT5jZV9uYW1lbGVuID0gbmFtZWxlbjsKIAltZW1jcHkobmV3LT5uYW1lLCBuZXdfbmFtZSwgbmFtZWxlbiArIDEpOwogCiAJY2FjaGVfdHJlZV9pbnZhbGlkYXRlX3BhdGgoaXN0YXRlLT5jYWNoZV90cmVlLCBvbGQtPm5hbWUpOwpAQCAtMTkzLDIxICsxOTcsMjUgQEAKIAl9CiAJaWYgKGNlLT5jZV9tdGltZS5zZWMgIT0gKHVuc2lnbmVkIGludClzdC0+c3RfbXRpbWUpCiAJCWNoYW5nZWQgfD0gTVRJTUVfQ0hBTkdFRDsKLQlpZiAodHJ1c3RfY3RpbWUgJiYgY2UtPmNlX2N0aW1lLnNlYyAhPSAodW5zaWduZWQgaW50KXN0LT5zdF9jdGltZSkKKwlpZiAodHJ1c3RfY3RpbWUgJiYgY2hlY2tfc3RhdCAmJgorCSAgICBjZS0+Y2VfY3RpbWUuc2VjICE9ICh1bnNpZ25lZCBpbnQpc3QtPnN0X2N0aW1lKQogCQljaGFuZ2VkIHw9IENUSU1FX0NIQU5HRUQ7CiAKICNpZmRlZiBVU0VfTlNFQwotCWlmIChjZS0+Y2VfbXRpbWUubnNlYyAhPSBTVF9NVElNRV9OU0VDKCpzdCkpCisJaWYgKGNoZWNrX3N0YXQgJiYgY2UtPmNlX210aW1lLm5zZWMgIT0gU1RfTVRJTUVfTlNFQygqc3QpKQogCQljaGFuZ2VkIHw9IE1USU1FX0NIQU5HRUQ7Ci0JaWYgKHRydXN0X2N0aW1lICYmIGNlLT5jZV9jdGltZS5uc2VjICE9IFNUX0NUSU1FX05TRUMoKnN0KSkKKwlpZiAodHJ1c3RfY3RpbWUgJiYgY2hlY2tfc3RhdCAmJgorCSAgICBjZS0+Y2VfY3RpbWUubnNlYyAhPSBTVF9DVElNRV9OU0VDKCpzdCkpCiAJCWNoYW5nZWQgfD0gQ1RJTUVfQ0hBTkdFRDsKICNlbmRpZgogCi0JaWYgKGNlLT5jZV91aWQgIT0gKHVuc2lnbmVkIGludCkgc3QtPnN0X3VpZCB8fAotCSAgICBjZS0+Y2VfZ2lkICE9ICh1bnNpZ25lZCBpbnQpIHN0LT5zdF9naWQpCi0JCWNoYW5nZWQgfD0gT1dORVJfQ0hBTkdFRDsKLQlpZiAoY2UtPmNlX2lubyAhPSAodW5zaWduZWQgaW50KSBzdC0+c3RfaW5vKQotCQljaGFuZ2VkIHw9IElOT0RFX0NIQU5HRUQ7CisJaWYgKGNoZWNrX3N0YXQpIHsKKwkJaWYgKGNlLT5jZV91aWQgIT0gKHVuc2lnbmVkIGludCkgc3QtPnN0X3VpZCB8fAorCQkJY2UtPmNlX2dpZCAhPSAodW5zaWduZWQgaW50KSBzdC0+c3RfZ2lkKQorCQkJY2hhbmdlZCB8PSBPV05FUl9DSEFOR0VEOworCQlpZiAoY2UtPmNlX2lubyAhPSAodW5zaWduZWQgaW50KSBzdC0+c3RfaW5vKQorCQkJY2hhbmdlZCB8PSBJTk9ERV9DSEFOR0VEOworCX0KIAogI2lmZGVmIFVTRV9TVERFVgogCS8qCkBAIC0yMTUsOCArMjIzLDggQEAKIAkgKiBjbGllbnRzIHdpbGwgaGF2ZSBkaWZmZXJlbnQgdmlld3Mgb2Ygd2hhdCAiZGV2aWNlIgogCSAqIHRoZSBmaWxlc3lzdGVtIGlzIG9uCiAJICovCi0JaWYgKGNlLT5jZV9kZXYgIT0gKHVuc2lnbmVkIGludCkgc3QtPnN0X2RldikKLQkJY2hhbmdlZCB8PSBJTk9ERV9DSEFOR0VEOworCWlmIChjaGVja19zdGF0ICYmIGNlLT5jZV9kZXYgIT0gKHVuc2lnbmVkIGludCkgc3QtPnN0X2RldikKKwkJCWNoYW5nZWQgfD0gSU5PREVfQ0hBTkdFRDsKICNlbmRpZgogCiAJaWYgKGNlLT5jZV9zaXplICE9ICh1bnNpZ25lZCBpbnQpIHN0LT5zdF9zaXplKQpAQCAtMzk1LDEwICs0MDMsOCBAQAogCXJldHVybiBjMSAtIGMyOwogfQogCi1pbnQgY2FjaGVfbmFtZV9jb21wYXJlKGNvbnN0IGNoYXIgKm5hbWUxLCBpbnQgZmxhZ3MxLCBjb25zdCBjaGFyICpuYW1lMiwgaW50IGZsYWdzMikKK2ludCBjYWNoZV9uYW1lX3N0YWdlX2NvbXBhcmUoY29uc3QgY2hhciAqbmFtZTEsIGludCBsZW4xLCBpbnQgc3RhZ2UxLCBjb25zdCBjaGFyICpuYW1lMiwgaW50IGxlbjIsIGludCBzdGFnZTIpCiB7Ci0JaW50IGxlbjEgPSBmbGFnczEgJiBDRV9OQU1FTUFTSzsKLQlpbnQgbGVuMiA9IGZsYWdzMiAmIENFX05BTUVNQVNLOwogCWludCBsZW4gPSBsZW4xIDwgbGVuMiA/IGxlbjEgOiBsZW4yOwogCWludCBjbXA7CiAKQEAgLTQxMCwxOCArNDE2LDE5IEBACiAJaWYgKGxlbjEgPiBsZW4yKQogCQlyZXR1cm4gMTsKIAotCS8qIENvbXBhcmUgc3RhZ2VzICAqLwotCWZsYWdzMSAmPSBDRV9TVEFHRU1BU0s7Ci0JZmxhZ3MyICY9IENFX1NUQUdFTUFTSzsKLQotCWlmIChmbGFnczEgPCBmbGFnczIpCisJaWYgKHN0YWdlMSA8IHN0YWdlMikKIAkJcmV0dXJuIC0xOwotCWlmIChmbGFnczEgPiBmbGFnczIpCisJaWYgKHN0YWdlMSA+IHN0YWdlMikKIAkJcmV0dXJuIDE7CiAJcmV0dXJuIDA7CiB9CiAKLWludCBpbmRleF9uYW1lX3Bvcyhjb25zdCBzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSwgY29uc3QgY2hhciAqbmFtZSwgaW50IG5hbWVsZW4pCitpbnQgY2FjaGVfbmFtZV9jb21wYXJlKGNvbnN0IGNoYXIgKm5hbWUxLCBpbnQgbGVuMSwgY29uc3QgY2hhciAqbmFtZTIsIGludCBsZW4yKQoreworCXJldHVybiBjYWNoZV9uYW1lX3N0YWdlX2NvbXBhcmUobmFtZTEsIGxlbjEsIDAsIG5hbWUyLCBsZW4yLCAwKTsKK30KKworc3RhdGljIGludCBpbmRleF9uYW1lX3N0YWdlX3Bvcyhjb25zdCBzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSwgY29uc3QgY2hhciAqbmFtZSwgaW50IG5hbWVsZW4sIGludCBzdGFnZSkKIHsKIAlpbnQgZmlyc3QsIGxhc3Q7CiAKQEAgLTQzMCw3ICs0MzcsNyBAQAogCXdoaWxlIChsYXN0ID4gZmlyc3QpIHsKIAkJaW50IG5leHQgPSAobGFzdCArIGZpcnN0KSA+PiAxOwogCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gaXN0YXRlLT5jYWNoZVtuZXh0XTsKLQkJaW50IGNtcCA9IGNhY2hlX25hbWVfY29tcGFyZShuYW1lLCBuYW1lbGVuLCBjZS0+bmFtZSwgY2UtPmNlX2ZsYWdzKTsKKwkJaW50IGNtcCA9IGNhY2hlX25hbWVfc3RhZ2VfY29tcGFyZShuYW1lLCBuYW1lbGVuLCBzdGFnZSwgY2UtPm5hbWUsIGNlX25hbWVsZW4oY2UpLCBjZV9zdGFnZShjZSkpOwogCQlpZiAoIWNtcCkKIAkJCXJldHVybiBuZXh0OwogCQlpZiAoY21wIDwgMCkgewpAQCAtNDQyLDEzICs0NDksMTggQEAKIAlyZXR1cm4gLWZpcnN0LTE7CiB9CiAKK2ludCBpbmRleF9uYW1lX3Bvcyhjb25zdCBzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSwgY29uc3QgY2hhciAqbmFtZSwgaW50IG5hbWVsZW4pCit7CisJcmV0dXJuIGluZGV4X25hbWVfc3RhZ2VfcG9zKGlzdGF0ZSwgbmFtZSwgbmFtZWxlbiwgMCk7Cit9CisKIC8qIFJlbW92ZSBlbnRyeSwgcmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG1vcmUgZW50cmllcyB0byBnby4uICovCiBpbnQgcmVtb3ZlX2luZGV4X2VudHJ5X2F0KHN0cnVjdCBpbmRleF9zdGF0ZSAqaXN0YXRlLCBpbnQgcG9zKQogewogCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBpc3RhdGUtPmNhY2hlW3Bvc107CiAKIAlyZWNvcmRfcmVzb2x2ZV91bmRvKGlzdGF0ZSwgY2UpOwotCXJlbW92ZV9uYW1lX2hhc2goY2UpOworCXJlbW92ZV9uYW1lX2hhc2goaXN0YXRlLCBjZSk7CiAJaXN0YXRlLT5jYWNoZV9jaGFuZ2VkID0gMTsKIAlpc3RhdGUtPmNhY2hlX25yLS07CiAJaWYgKHBvcyA+PSBpc3RhdGUtPmNhY2hlX25yKQpAQCAtNDcxLDcgKzQ4Myw3IEBACiAKIAlmb3IgKGkgPSBqID0gMDsgaSA8IGlzdGF0ZS0+Y2FjaGVfbnI7IGkrKykgewogCQlpZiAoY2VfYXJyYXlbaV0tPmNlX2ZsYWdzICYgQ0VfUkVNT1ZFKQotCQkJcmVtb3ZlX25hbWVfaGFzaChjZV9hcnJheVtpXSk7CisJCQlyZW1vdmVfbmFtZV9oYXNoKGlzdGF0ZSwgY2VfYXJyYXlbaV0pOwogCQllbHNlCiAJCQljZV9hcnJheVtqKytdID0gY2VfYXJyYXlbaV07CiAJfQpAQCAtNTgxLDcgKzU5Myw3IEBACiAJc2l6ZSA9IGNhY2hlX2VudHJ5X3NpemUobmFtZWxlbik7CiAJY2UgPSB4Y2FsbG9jKDEsIHNpemUpOwogCW1lbWNweShjZS0+bmFtZSwgcGF0aCwgbmFtZWxlbik7Ci0JY2UtPmNlX2ZsYWdzID0gbmFtZWxlbjsKKwljZS0+Y2VfbmFtZWxlbiA9IG5hbWVsZW47CiAJaWYgKCFpbnRlbnRfb25seSkKIAkJZmlsbF9zdGF0X2NhY2hlX2luZm8oY2UsIHN0KTsKIAllbHNlCkBAIC02MTQsNyArNjI2LDcgQEAKIAkJCWlmICgqcHRyID09ICcvJykgewogCQkJCXN0cnVjdCBjYWNoZV9lbnRyeSAqZm91bmRjZTsKIAkJCQkrK3B0cjsKLQkJCQlmb3VuZGNlID0gaW5kZXhfbmFtZV9leGlzdHMoJnRoZV9pbmRleCwgY2UtPm5hbWUsIHB0ciAtIGNlLT5uYW1lLCBpZ25vcmVfY2FzZSk7CisJCQkJZm91bmRjZSA9IGluZGV4X25hbWVfZXhpc3RzKGlzdGF0ZSwgY2UtPm5hbWUsIHB0ciAtIGNlLT5uYW1lLCBpZ25vcmVfY2FzZSk7CiAJCQkJaWYgKGZvdW5kY2UpIHsKIAkJCQkJbWVtY3B5KCh2b2lkICopc3RhcnRQdHIsIGZvdW5kY2UtPm5hbWUgKyAoc3RhcnRQdHIgLSBjZS0+bmFtZSksIHB0ciAtIHN0YXJ0UHRyKTsKIAkJCQkJc3RhcnRQdHIgPSBwdHI7CkBAIC02ODMsNyArNjk1LDggQEAKIAogCWhhc2hjcHkoY2UtPnNoYTEsIHNoYTEpOwogCW1lbWNweShjZS0+bmFtZSwgcGF0aCwgbGVuKTsKLQljZS0+Y2VfZmxhZ3MgPSBjcmVhdGVfY2VfZmxhZ3MobGVuLCBzdGFnZSk7CisJY2UtPmNlX2ZsYWdzID0gY3JlYXRlX2NlX2ZsYWdzKHN0YWdlKTsKKwljZS0+Y2VfbmFtZWxlbiA9IGxlbjsKIAljZS0+Y2VfbW9kZSA9IGNyZWF0ZV9jZV9tb2RlKG1vZGUpOwogCiAJaWYgKHJlZnJlc2gpCkBAIC04MjAsNyArODMzLDcgQEAKIAkJfQogCQlsZW4gPSBzbGFzaCAtIG5hbWU7CiAKLQkJcG9zID0gaW5kZXhfbmFtZV9wb3MoaXN0YXRlLCBuYW1lLCBjcmVhdGVfY2VfZmxhZ3MobGVuLCBzdGFnZSkpOworCQlwb3MgPSBpbmRleF9uYW1lX3N0YWdlX3Bvcyhpc3RhdGUsIG5hbWUsIGxlbiwgc3RhZ2UpOwogCQlpZiAocG9zID49IDApIHsKIAkJCS8qCiAJCQkgKiBGb3VuZCBvbmUsIGJ1dCBub3Qgc28gZmFzdC4gIFRoaXMgY291bGQKQEAgLTkxMCw3ICs5MjMsNyBAQAogCWludCBuZXdfb25seSA9IG9wdGlvbiAmIEFERF9DQUNIRV9ORVdfT05MWTsKIAogCWNhY2hlX3RyZWVfaW52YWxpZGF0ZV9wYXRoKGlzdGF0ZS0+Y2FjaGVfdHJlZSwgY2UtPm5hbWUpOwotCXBvcyA9IGluZGV4X25hbWVfcG9zKGlzdGF0ZSwgY2UtPm5hbWUsIGNlLT5jZV9mbGFncyk7CisJcG9zID0gaW5kZXhfbmFtZV9zdGFnZV9wb3MoaXN0YXRlLCBjZS0+bmFtZSwgY2VfbmFtZWxlbihjZSksIGNlX3N0YWdlKGNlKSk7CiAKIAkvKiBleGlzdGluZyBtYXRjaD8gSnVzdCByZXBsYWNlIGl0LiAqLwogCWlmIChwb3MgPj0gMCkgewpAQCAtOTQyLDcgKzk1NSw3IEBACiAJCWlmICghb2tfdG9fcmVwbGFjZSkKIAkJCXJldHVybiBlcnJvcigiJyVzJyBhcHBlYXJzIGFzIGJvdGggYSBmaWxlIGFuZCBhcyBhIGRpcmVjdG9yeSIsCiAJCQkJICAgICBjZS0+bmFtZSk7Ci0JCXBvcyA9IGluZGV4X25hbWVfcG9zKGlzdGF0ZSwgY2UtPm5hbWUsIGNlLT5jZV9mbGFncyk7CisJCXBvcyA9IGluZGV4X25hbWVfc3RhZ2VfcG9zKGlzdGF0ZSwgY2UtPm5hbWUsIGNlX25hbWVsZW4oY2UpLCBjZV9zdGFnZShjZSkpOwogCQlwb3MgPSAtcG9zLTE7CiAJfQogCXJldHVybiBwb3MgKyAxOwpAQCAtOTY2LDcgKzk3OSw3IEBACiAJaWYgKGlzdGF0ZS0+Y2FjaGVfbnIgPT0gaXN0YXRlLT5jYWNoZV9hbGxvYykgewogCQlpc3RhdGUtPmNhY2hlX2FsbG9jID0gYWxsb2NfbnIoaXN0YXRlLT5jYWNoZV9hbGxvYyk7CiAJCWlzdGF0ZS0+Y2FjaGUgPSB4cmVhbGxvYyhpc3RhdGUtPmNhY2hlLAotCQkJCQlpc3RhdGUtPmNhY2hlX2FsbG9jICogc2l6ZW9mKHN0cnVjdCBjYWNoZV9lbnRyeSAqKSk7CisJCQkJCWlzdGF0ZS0+Y2FjaGVfYWxsb2MgKiBzaXplb2YoKmlzdGF0ZS0+Y2FjaGUpKTsKIAl9CiAKIAkvKiBBZGQgaXQgaW4uLiAqLwpAQCAtMTExOSw3ICsxMTMyLDcgQEAKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChwYXRoc3BlYyAmJgotCQkgICAgIW1hdGNoX3BhdGhzcGVjKHBhdGhzcGVjLCBjZS0+bmFtZSwgc3RybGVuKGNlLT5uYW1lKSwgMCwgc2VlbikpCisJCSAgICAhbWF0Y2hfcGF0aHNwZWMocGF0aHNwZWMsIGNlLT5uYW1lLCBjZV9uYW1lbGVuKGNlKSwgMCwgc2VlbikpCiAJCQlmaWx0ZXJlZCA9IDE7CiAKIAkJaWYgKGNlX3N0YWdlKGNlKSkgewpAQCAtMTI0Nyw3ICsxMjYwLDcgQEAKIAlpZiAoaGRyLT5oZHJfc2lnbmF0dXJlICE9IGh0b25sKENBQ0hFX1NJR05BVFVSRSkpCiAJCXJldHVybiBlcnJvcigiYmFkIHNpZ25hdHVyZSIpOwogCWhkcl92ZXJzaW9uID0gbnRvaGwoaGRyLT5oZHJfdmVyc2lvbik7Ci0JaWYgKGhkcl92ZXJzaW9uIDwgMiB8fCA0IDwgaGRyX3ZlcnNpb24pCisJaWYgKGhkcl92ZXJzaW9uIDwgSU5ERVhfRk9STUFUX0xCIHx8IElOREVYX0ZPUk1BVF9VQiA8IGhkcl92ZXJzaW9uKQogCQlyZXR1cm4gZXJyb3IoImJhZCBpbmRleCB2ZXJzaW9uICVkIiwgaGRyX3ZlcnNpb24pOwogCWdpdF9TSEExX0luaXQoJmMpOwogCWdpdF9TSEExX1VwZGF0ZSgmYywgaGRyLCBzaXplIC0gMjApOwpAQCAtMTMxOSw3ICsxMzMyLDggQEAKIAljZS0+Y2VfdWlkICAgPSBudG9oX2wob25kaXNrLT51aWQpOwogCWNlLT5jZV9naWQgICA9IG50b2hfbChvbmRpc2stPmdpZCk7CiAJY2UtPmNlX3NpemUgID0gbnRvaF9sKG9uZGlzay0+c2l6ZSk7Ci0JY2UtPmNlX2ZsYWdzID0gZmxhZ3M7CisJY2UtPmNlX2ZsYWdzID0gZmxhZ3MgJiB+Q0VfTkFNRU1BU0s7CisJY2UtPmNlX25hbWVsZW4gPSBsZW47CiAJaGFzaGNweShjZS0+c2hhMSwgb25kaXNrLT5zaGExKTsKIAltZW1jcHkoY2UtPm5hbWUsIG5hbWUsIGxlbik7CiAJY2UtPm5hbWVbbGVuXSA9ICdcMCc7CkBAIC0xNDA0LDExICsxNDE4LDkgQEAKIAlzaXplX3QgbW1hcF9zaXplOwogCXN0cnVjdCBzdHJidWYgcHJldmlvdXNfbmFtZV9idWYgPSBTVFJCVUZfSU5JVCwgKnByZXZpb3VzX25hbWU7CiAKLQllcnJubyA9IEVCVVNZOwogCWlmIChpc3RhdGUtPmluaXRpYWxpemVkKQogCQlyZXR1cm4gaXN0YXRlLT5jYWNoZV9ucjsKIAotCWVycm5vID0gRU5PRU5UOwogCWlzdGF0ZS0+dGltZXN0YW1wLnNlYyA9IDA7CiAJaXN0YXRlLT50aW1lc3RhbXAubnNlYyA9IDA7CiAJZmQgPSBvcGVuKHBhdGgsIE9fUkRPTkxZKTsKQEAgLTE0MjEsMTUgKzE0MzMsMTQgQEAKIAlpZiAoZnN0YXQoZmQsICZzdCkpCiAJCWRpZV9lcnJubygiY2Fubm90IHN0YXQgdGhlIG9wZW4gaW5kZXgiKTsKIAotCWVycm5vID0gRUlOVkFMOwogCW1tYXBfc2l6ZSA9IHhzaXplX3Qoc3Quc3Rfc2l6ZSk7CiAJaWYgKG1tYXBfc2l6ZSA8IHNpemVvZihzdHJ1Y3QgY2FjaGVfaGVhZGVyKSArIDIwKQogCQlkaWUoImluZGV4IGZpbGUgc21hbGxlciB0aGFuIGV4cGVjdGVkIik7CiAKIAltbWFwID0geG1tYXAoTlVMTCwgbW1hcF9zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfUFJJVkFURSwgZmQsIDApOwotCWNsb3NlKGZkKTsKIAlpZiAobW1hcCA9PSBNQVBfRkFJTEVEKQogCQlkaWVfZXJybm8oInVuYWJsZSB0byBtYXAgaW5kZXggZmlsZSIpOworCWNsb3NlKGZkKTsKIAogCWhkciA9IG1tYXA7CiAJaWYgKHZlcmlmeV9oZHIoaGRyLCBtbWFwX3NpemUpIDwgMCkKQEAgLTE0MzgsNyArMTQ0OSw3IEBACiAJaXN0YXRlLT52ZXJzaW9uID0gbnRvaGwoaGRyLT5oZHJfdmVyc2lvbik7CiAJaXN0YXRlLT5jYWNoZV9uciA9IG50b2hsKGhkci0+aGRyX2VudHJpZXMpOwogCWlzdGF0ZS0+Y2FjaGVfYWxsb2MgPSBhbGxvY19ucihpc3RhdGUtPmNhY2hlX25yKTsKLQlpc3RhdGUtPmNhY2hlID0geGNhbGxvYyhpc3RhdGUtPmNhY2hlX2FsbG9jLCBzaXplb2Yoc3RydWN0IGNhY2hlX2VudHJ5ICopKTsKKwlpc3RhdGUtPmNhY2hlID0geGNhbGxvYyhpc3RhdGUtPmNhY2hlX2FsbG9jLCBzaXplb2YoKmlzdGF0ZS0+Y2FjaGUpKTsKIAlpc3RhdGUtPmluaXRpYWxpemVkID0gMTsKIAogCWlmIChpc3RhdGUtPnZlcnNpb24gPT0gNCkKQEAgLTE0ODUsNyArMTQ5Niw2IEBACiAKIHVubWFwOgogCW11bm1hcChtbWFwLCBtbWFwX3NpemUpOwotCWVycm5vID0gRUlOVkFMOwogCWRpZSgiaW5kZXggZmlsZSBjb3JydXB0Iik7CiB9CiAKQEAgLTE1MDUsOCArMTUxNSw3IEBACiAJaXN0YXRlLT5jYWNoZV9jaGFuZ2VkID0gMDsKIAlpc3RhdGUtPnRpbWVzdGFtcC5zZWMgPSAwOwogCWlzdGF0ZS0+dGltZXN0YW1wLm5zZWMgPSAwOwotCWlzdGF0ZS0+bmFtZV9oYXNoX2luaXRpYWxpemVkID0gMDsKLQlmcmVlX2hhc2goJmlzdGF0ZS0+bmFtZV9oYXNoKTsKKwlmcmVlX25hbWVfaGFzaChpc3RhdGUpOwogCWNhY2hlX3RyZWVfZnJlZSgmKGlzdGF0ZS0+Y2FjaGVfdHJlZSkpOwogCWlzdGF0ZS0+aW5pdGlhbGl6ZWQgPSAwOwogCkBAIC0xNjQ2LDYgKzE2NTUsOCBAQAogc3RhdGljIGNoYXIgKmNvcHlfY2FjaGVfZW50cnlfdG9fb25kaXNrKHN0cnVjdCBvbmRpc2tfY2FjaGVfZW50cnkgKm9uZGlzaywKIAkJCQkgICAgICAgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKIHsKKwlzaG9ydCBmbGFnczsKKwogCW9uZGlzay0+Y3RpbWUuc2VjID0gaHRvbmwoY2UtPmNlX2N0aW1lLnNlYyk7CiAJb25kaXNrLT5tdGltZS5zZWMgPSBodG9ubChjZS0+Y2VfbXRpbWUuc2VjKTsKIAlvbmRpc2stPmN0aW1lLm5zZWMgPSBodG9ubChjZS0+Y2VfY3RpbWUubnNlYyk7CkBAIC0xNjU3LDcgKzE2NjgsMTAgQEAKIAlvbmRpc2stPmdpZCAgPSBodG9ubChjZS0+Y2VfZ2lkKTsKIAlvbmRpc2stPnNpemUgPSBodG9ubChjZS0+Y2Vfc2l6ZSk7CiAJaGFzaGNweShvbmRpc2stPnNoYTEsIGNlLT5zaGExKTsKLQlvbmRpc2stPmZsYWdzID0gaHRvbnMoY2UtPmNlX2ZsYWdzKTsKKworCWZsYWdzID0gY2UtPmNlX2ZsYWdzOworCWZsYWdzIHw9IChjZV9uYW1lbGVuKGNlKSA+PSBDRV9OQU1FTUFTSyA/IENFX05BTUVNQVNLIDogY2VfbmFtZWxlbihjZSkpOworCW9uZGlzay0+ZmxhZ3MgPSBodG9ucyhmbGFncyk7CiAJaWYgKGNlLT5jZV9mbGFncyAmIENFX0VYVEVOREVEKSB7CiAJCXN0cnVjdCBvbmRpc2tfY2FjaGVfZW50cnlfZXh0ZW5kZWQgKm9uZGlzazI7CiAJCW9uZGlzazIgPSAoc3RydWN0IG9uZGlza19jYWNoZV9lbnRyeV9leHRlbmRlZCAqKW9uZGlzazsKQEAgLTE3ODUsNiArMTc5OSw4IEBACiAJCQljb250aW51ZTsKIAkJaWYgKCFjZV91cHRvZGF0ZShjZSkgJiYgaXNfcmFjeV90aW1lc3RhbXAoaXN0YXRlLCBjZSkpCiAJCQljZV9zbXVkZ2VfcmFjaWx5X2NsZWFuX2VudHJ5KGNlKTsKKwkJaWYgKGlzX251bGxfc2hhMShjZS0+c2hhMSkpCisJCQlyZXR1cm4gZXJyb3IoImNhY2hlIGVudHJ5IGhhcyBudWxsIHNoYTE6ICVzIiwgY2UtPm5hbWUpOwogCQlpZiAoY2Vfd3JpdGVfZW50cnkoJmMsIG5ld2ZkLCBjZSwgcHJldmlvdXNfbmFtZSkgPCAwKQogCQkJcmV0dXJuIC0xOwogCX0KQEAgLTE4NDEsMTEgKzE4NTcsMTIgQEAKIAkJaWYgKCFjZV9zdGFnZShjZSkpCiAJCQljb250aW51ZTsKIAkJdW5tZXJnZWQgPSAxOwotCQlsZW4gPSBzdHJsZW4oY2UtPm5hbWUpOworCQlsZW4gPSBjZV9uYW1lbGVuKGNlKTsKIAkJc2l6ZSA9IGNhY2hlX2VudHJ5X3NpemUobGVuKTsKIAkJbmV3X2NlID0geGNhbGxvYygxLCBzaXplKTsKIAkJbWVtY3B5KG5ld19jZS0+bmFtZSwgY2UtPm5hbWUsIGxlbik7Ci0JCW5ld19jZS0+Y2VfZmxhZ3MgPSBjcmVhdGVfY2VfZmxhZ3MobGVuLCAwKSB8IENFX0NPTkZMSUNURUQ7CisJCW5ld19jZS0+Y2VfZmxhZ3MgPSBjcmVhdGVfY2VfZmxhZ3MoMCkgfCBDRV9DT05GTElDVEVEOworCQluZXdfY2UtPmNlX25hbWVsZW4gPSBsZW47CiAJCW5ld19jZS0+Y2VfbW9kZSA9IGNlLT5jZV9tb2RlOwogCQlpZiAoYWRkX2luZGV4X2VudHJ5KGlzdGF0ZSwgbmV3X2NlLCAwKSkKIAkJCXJldHVybiBlcnJvcigiJXM6IGNhbm5vdCBkcm9wIHRvIHN0YWdlICMwIiwKQEAgLTE4ODIsMyArMTg5OSwzNyBAQAogCX0KIAlyZXR1cm4gMTsKIH0KKwordm9pZCAqcmVhZF9ibG9iX2RhdGFfZnJvbV9pbmRleChzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSwgY29uc3QgY2hhciAqcGF0aCwgdW5zaWduZWQgbG9uZyAqc2l6ZSkKK3sKKwlpbnQgcG9zLCBsZW47CisJdW5zaWduZWQgbG9uZyBzejsKKwllbnVtIG9iamVjdF90eXBlIHR5cGU7CisJdm9pZCAqZGF0YTsKKworCWxlbiA9IHN0cmxlbihwYXRoKTsKKwlwb3MgPSBpbmRleF9uYW1lX3Bvcyhpc3RhdGUsIHBhdGgsIGxlbik7CisJaWYgKHBvcyA8IDApIHsKKwkJLyoKKwkJICogV2UgbWlnaHQgYmUgaW4gdGhlIG1pZGRsZSBvZiBhIG1lcmdlLCBpbiB3aGljaAorCQkgKiBjYXNlIHdlIHdvdWxkIHJlYWQgc3RhZ2UgIzIgKG91cnMpLgorCQkgKi8KKwkJaW50IGk7CisJCWZvciAoaSA9IC1wb3MgLSAxOworCQkgICAgIChwb3MgPCAwICYmIGkgPCBpc3RhdGUtPmNhY2hlX25yICYmCisJCSAgICAgICFzdHJjbXAoaXN0YXRlLT5jYWNoZVtpXS0+bmFtZSwgcGF0aCkpOworCQkgICAgIGkrKykKKwkJCWlmIChjZV9zdGFnZShpc3RhdGUtPmNhY2hlW2ldKSA9PSAyKQorCQkJCXBvcyA9IGk7CisJfQorCWlmIChwb3MgPCAwKQorCQlyZXR1cm4gTlVMTDsKKwlkYXRhID0gcmVhZF9zaGExX2ZpbGUoaXN0YXRlLT5jYWNoZVtwb3NdLT5zaGExLCAmdHlwZSwgJnN6KTsKKwlpZiAoIWRhdGEgfHwgdHlwZSAhPSBPQkpfQkxPQikgeworCQlmcmVlKGRhdGEpOworCQlyZXR1cm4gTlVMTDsKKwl9CisJaWYgKHNpemUpCisJCSpzaXplID0gc3o7CisJcmV0dXJuIGRhdGE7Cit9CmRpZmYgLS1naXQgYS9yZWZzLmMgYi9yZWZzLmMKaW5kZXggZGE3NGEyYi4uZGUyZDhlYiAxMDA2NDQKLS0tIGEvcmVmcy5jCisrKyBiL3JlZnMuYwpAQCAtMyw2ICszLDcgQEAKICNpbmNsdWRlICJvYmplY3QuaCIKICNpbmNsdWRlICJ0YWcuaCIKICNpbmNsdWRlICJkaXIuaCIKKyNpbmNsdWRlICJzdHJpbmctbGlzdC5oIgogCiAvKgogICogTWFrZSBzdXJlICJyZWYiIGlzIHNvbWV0aGluZyByZWFzb25hYmxlIHRvIGhhdmUgdW5kZXIgIi5naXQvcmVmcy8iOwpAQCAtMzMzLDE0ICszMzQsMTIgQEAKIAogc3RhdGljIGludCByZWZfZW50cnlfY21wX3NzbGljZShjb25zdCB2b2lkICprZXlfLCBjb25zdCB2b2lkICplbnRfKQogewotCXN0cnVjdCBzdHJpbmdfc2xpY2UgKmtleSA9IChzdHJ1Y3Qgc3RyaW5nX3NsaWNlICopa2V5XzsKLQlzdHJ1Y3QgcmVmX2VudHJ5ICplbnQgPSAqKHN0cnVjdCByZWZfZW50cnkgKiopZW50XzsKLQlpbnQgZW50bGVuID0gc3RybGVuKGVudC0+bmFtZSk7Ci0JaW50IGNtcGxlbiA9IGtleS0+bGVuIDwgZW50bGVuID8ga2V5LT5sZW4gOiBlbnRsZW47Ci0JaW50IGNtcCA9IG1lbWNtcChrZXktPnN0ciwgZW50LT5uYW1lLCBjbXBsZW4pOworCWNvbnN0IHN0cnVjdCBzdHJpbmdfc2xpY2UgKmtleSA9IGtleV87CisJY29uc3Qgc3RydWN0IHJlZl9lbnRyeSAqZW50ID0gKihjb25zdCBzdHJ1Y3QgcmVmX2VudHJ5ICogY29uc3QgKillbnRfOworCWludCBjbXAgPSBzdHJuY21wKGtleS0+c3RyLCBlbnQtPm5hbWUsIGtleS0+bGVuKTsKIAlpZiAoY21wKQogCQlyZXR1cm4gY21wOwotCXJldHVybiBrZXktPmxlbiAtIGVudGxlbjsKKwlyZXR1cm4gJ1wwJyAtICh1bnNpZ25lZCBjaGFyKWVudC0+bmFtZVtrZXktPmxlbl07CiB9CiAKIC8qCkBAIC04MDQsMTEgKzgwMywzOCBAQAogCXJldHVybiBsaW5lOwogfQogCisvKgorICogUmVhZCBmLCB3aGljaCBpcyBhIHBhY2tlZC1yZWZzIGZpbGUsIGludG8gZGlyLgorICoKKyAqIEEgY29tbWVudCBsaW5lIG9mIHRoZSBmb3JtICIjIHBhY2stcmVmcyB3aXRoOiAiIG1heSBjb250YWluIHplcm8gb3IKKyAqIG1vcmUgdHJhaXRzLiBXZSBpbnRlcnByZXQgdGhlIHRyYWl0cyBhcyBmb2xsb3dzOgorICoKKyAqICAgTm8gdHJhaXRzOgorICoKKyAqICAgICAgUHJvYmFibHkgbm8gcmVmZXJlbmNlcyBhcmUgcGVlbGVkLiBCdXQgaWYgdGhlIGZpbGUgY29udGFpbnMgYQorICogICAgICBwZWVsZWQgdmFsdWUgZm9yIGEgcmVmZXJlbmNlLCB3ZSB3aWxsIHVzZSBpdC4KKyAqCisgKiAgIHBlZWxlZDoKKyAqCisgKiAgICAgIFJlZmVyZW5jZXMgdW5kZXIgInJlZnMvdGFncy8iLCBpZiB0aGV5ICpjYW4qIGJlIHBlZWxlZCwgKmFyZSoKKyAqICAgICAgcGVlbGVkIGluIHRoaXMgZmlsZS4gUmVmZXJlbmNlcyBvdXRzaWRlIG9mICJyZWZzL3RhZ3MvIiBhcmUKKyAqICAgICAgcHJvYmFibHkgbm90IHBlZWxlZCBldmVuIGlmIHRoZXkgY291bGQgaGF2ZSBiZWVuLCBidXQgaWYgd2UgZmluZAorICogICAgICBhIHBlZWxlZCB2YWx1ZSBmb3Igc3VjaCBhIHJlZmVyZW5jZSB3ZSB3aWxsIHVzZSBpdC4KKyAqCisgKiAgIGZ1bGx5LXBlZWxlZDoKKyAqCisgKiAgICAgIEFsbCByZWZlcmVuY2VzIGluIHRoZSBmaWxlIHRoYXQgY2FuIGJlIHBlZWxlZCBhcmUgcGVlbGVkLgorICogICAgICBJbnZlcnNlbHkgKGFuZCB0aGlzIGlzIG1vcmUgaW1wb3J0YW50KSwgYW55IHJlZmVyZW5jZXMgaW4gdGhlCisgKiAgICAgIGZpbGUgZm9yIHdoaWNoIG5vIHBlZWxlZCB2YWx1ZSBpcyByZWNvcmRlZCBpcyBub3QgcGVlbGFibGUuIFRoaXMKKyAqICAgICAgdHJhaXQgc2hvdWxkIHR5cGljYWxseSBiZSB3cml0dGVuIGFsb25nc2lkZSAicGVlbGVkIiBmb3IKKyAqICAgICAgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGNsaWVudHMsIGJ1dCB3ZSBkbyBub3QgcmVxdWlyZSBpdAorICogICAgICAoaS5lLiwgInBlZWxlZCIgaXMgYSBuby1vcCBpZiAiZnVsbHktcGVlbGVkIiBpcyBzZXQpLgorICovCiBzdGF0aWMgdm9pZCByZWFkX3BhY2tlZF9yZWZzKEZJTEUgKmYsIHN0cnVjdCByZWZfZGlyICpkaXIpCiB7CiAJc3RydWN0IHJlZl9lbnRyeSAqbGFzdCA9IE5VTEw7CiAJY2hhciByZWZsaW5lW1BBVEhfTUFYXTsKLQlpbnQgZmxhZyA9IFJFRl9JU1BBQ0tFRDsKKwllbnVtIHsgUEVFTEVEX05PTkUsIFBFRUxFRF9UQUdTLCBQRUVMRURfRlVMTFkgfSBwZWVsZWQgPSBQRUVMRURfTk9ORTsKIAogCXdoaWxlIChmZ2V0cyhyZWZsaW5lLCBzaXplb2YocmVmbGluZSksIGYpKSB7CiAJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CkBAIC04MTcsMTUgKzg0MywyMCBAQAogCiAJCWlmICghc3RybmNtcChyZWZsaW5lLCBoZWFkZXIsIHNpemVvZihoZWFkZXIpLTEpKSB7CiAJCQljb25zdCBjaGFyICp0cmFpdHMgPSByZWZsaW5lICsgc2l6ZW9mKGhlYWRlcikgLSAxOwotCQkJaWYgKHN0cnN0cih0cmFpdHMsICIgcGVlbGVkICIpKQotCQkJCWZsYWcgfD0gUkVGX0tOT1dTX1BFRUxFRDsKKwkJCWlmIChzdHJzdHIodHJhaXRzLCAiIGZ1bGx5LXBlZWxlZCAiKSkKKwkJCQlwZWVsZWQgPSBQRUVMRURfRlVMTFk7CisJCQllbHNlIGlmIChzdHJzdHIodHJhaXRzLCAiIHBlZWxlZCAiKSkKKwkJCQlwZWVsZWQgPSBQRUVMRURfVEFHUzsKIAkJCS8qIHBlcmhhcHMgb3RoZXIgdHJhaXRzIGxhdGVyIGFzIHdlbGwgKi8KIAkJCWNvbnRpbnVlOwogCQl9CiAKIAkJcmVmbmFtZSA9IHBhcnNlX3JlZl9saW5lKHJlZmxpbmUsIHNoYTEpOwogCQlpZiAocmVmbmFtZSkgewotCQkJbGFzdCA9IGNyZWF0ZV9yZWZfZW50cnkocmVmbmFtZSwgc2hhMSwgZmxhZywgMSk7CisJCQlsYXN0ID0gY3JlYXRlX3JlZl9lbnRyeShyZWZuYW1lLCBzaGExLCBSRUZfSVNQQUNLRUQsIDEpOworCQkJaWYgKHBlZWxlZCA9PSBQRUVMRURfRlVMTFkgfHwKKwkJCSAgICAocGVlbGVkID09IFBFRUxFRF9UQUdTICYmICFwcmVmaXhjbXAocmVmbmFtZSwgInJlZnMvdGFncy8iKSkpCisJCQkJbGFzdC0+ZmxhZyB8PSBSRUZfS05PV1NfUEVFTEVEOwogCQkJYWRkX3JlZihkaXIsIGxhc3QpOwogCQkJY29udGludWU7CiAJCX0KQEAgLTgzMyw4ICs4NjQsMTUgQEAKIAkJICAgIHJlZmxpbmVbMF0gPT0gJ14nICYmCiAJCSAgICBzdHJsZW4ocmVmbGluZSkgPT0gNDIgJiYKIAkJICAgIHJlZmxpbmVbNDFdID09ICdcbicgJiYKLQkJICAgICFnZXRfc2hhMV9oZXgocmVmbGluZSArIDEsIHNoYTEpKQorCQkgICAgIWdldF9zaGExX2hleChyZWZsaW5lICsgMSwgc2hhMSkpIHsKIAkJCWhhc2hjcHkobGFzdC0+dS52YWx1ZS5wZWVsZWQsIHNoYTEpOworCQkJLyoKKwkJCSAqIFJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgZmlsZSBoZWFkZXIgc2FpZCwKKwkJCSAqIHdlIGRlZmluaXRlbHkga25vdyB0aGUgdmFsdWUgb2YgKnRoaXMqCisJCQkgKiByZWZlcmVuY2U6CisJCQkgKi8KKwkJCWxhc3QtPmZsYWcgfD0gUkVGX0tOT1dTX1BFRUxFRDsKKwkJfQogCX0KIH0KIApAQCAtMTIwMiw2ICsxMjQwLDggQEAKIAlpZiAoY3VycmVudF9yZWYgJiYgKGN1cnJlbnRfcmVmLT5uYW1lID09IHJlZm5hbWUKIAkJfHwgIXN0cmNtcChjdXJyZW50X3JlZi0+bmFtZSwgcmVmbmFtZSkpKSB7CiAJCWlmIChjdXJyZW50X3JlZi0+ZmxhZyAmIFJFRl9LTk9XU19QRUVMRUQpIHsKKwkJCWlmIChpc19udWxsX3NoYTEoY3VycmVudF9yZWYtPnUudmFsdWUucGVlbGVkKSkKKwkJCSAgICByZXR1cm4gLTE7CiAJCQloYXNoY3B5KHNoYTEsIGN1cnJlbnRfcmVmLT51LnZhbHVlLnBlZWxlZCk7CiAJCQlyZXR1cm4gMDsKIAkJfQpAQCAtMTIyMyw5ICsxMjYzLDE2IEBACiAJfQogCiBmYWxsYmFjazoKLQlvID0gcGFyc2Vfb2JqZWN0KGJhc2UpOwotCWlmIChvICYmIG8tPnR5cGUgPT0gT0JKX1RBRykgewotCQlvID0gZGVyZWZfdGFnKG8sIHJlZm5hbWUsIDApOworCW8gPSBsb29rdXBfdW5rbm93bl9vYmplY3QoYmFzZSk7CisJaWYgKG8tPnR5cGUgPT0gT0JKX05PTkUpIHsKKwkJaW50IHR5cGUgPSBzaGExX29iamVjdF9pbmZvKGJhc2UsIE5VTEwpOworCQlpZiAodHlwZSA8IDApCisJCQlyZXR1cm4gLTE7CisJCW8tPnR5cGUgPSB0eXBlOworCX0KKworCWlmIChvLT50eXBlID09IE9CSl9UQUcpIHsKKwkJbyA9IGRlcmVmX3RhZ19ub3ZlcmlmeShvKTsKIAkJaWYgKG8pIHsKIAkJCWhhc2hjcHkoc2hhMSwgby0+c2hhMSk7CiAJCQlyZXR1cm4gMDsKQEAgLTE3MzUsNyArMTc4Miw4IEBACiBzdGF0aWMgaW50IHJlcGFja193aXRob3V0X3JlZihjb25zdCBjaGFyICpyZWZuYW1lKQogewogCXN0cnVjdCByZXBhY2tfd2l0aG91dF9yZWZfc2IgZGF0YTsKLQlzdHJ1Y3QgcmVmX2RpciAqcGFja2VkID0gZ2V0X3BhY2tlZF9yZWZzKGdldF9yZWZfY2FjaGUoTlVMTCkpOworCXN0cnVjdCByZWZfY2FjaGUgKnJlZnMgPSBnZXRfcmVmX2NhY2hlKE5VTEwpOworCXN0cnVjdCByZWZfZGlyICpwYWNrZWQgPSBnZXRfcGFja2VkX3JlZnMocmVmcyk7CiAJaWYgKGZpbmRfcmVmKHBhY2tlZCwgcmVmbmFtZSkgPT0gTlVMTCkKIAkJcmV0dXJuIDA7CiAJZGF0YS5yZWZuYW1lID0gcmVmbmFtZTsKQEAgLTE3NDQsNiArMTc5Miw4IEBACiAJCXVuYWJsZV90b19sb2NrX2Vycm9yKGdpdF9wYXRoKCJwYWNrZWQtcmVmcyIpLCBlcnJubyk7CiAJCXJldHVybiBlcnJvcigiY2Fubm90IGRlbGV0ZSAnJXMnIGZyb20gcGFja2VkIHJlZnMiLCByZWZuYW1lKTsKIAl9CisJY2xlYXJfcGFja2VkX3JlZl9jYWNoZShyZWZzKTsKKwlwYWNrZWQgPSBnZXRfcGFja2VkX3JlZnMocmVmcyk7CiAJZG9fZm9yX2VhY2hfcmVmX2luX2RpcihwYWNrZWQsIDAsICIiLCByZXBhY2tfd2l0aG91dF9yZWZfZm4sIDAsIDAsICZkYXRhKTsKIAlyZXR1cm4gY29tbWl0X2xvY2tfZmlsZSgmcGFja2xvY2spOwogfQpAQCAtMTc1MywzMiArMTgwMywyNCBAQAogCXN0cnVjdCByZWZfbG9jayAqbG9jazsKIAlpbnQgZXJyLCBpID0gMCwgcmV0ID0gMCwgZmxhZyA9IDA7CiAKLQlsb2NrID0gbG9ja19yZWZfc2hhMV9iYXNpYyhyZWZuYW1lLCBzaGExLCAwLCAmZmxhZyk7CisJbG9jayA9IGxvY2tfcmVmX3NoYTFfYmFzaWMocmVmbmFtZSwgc2hhMSwgZGVsb3B0LCAmZmxhZyk7CiAJaWYgKCFsb2NrKQogCQlyZXR1cm4gMTsKIAlpZiAoIShmbGFnICYgUkVGX0lTUEFDS0VEKSB8fCBmbGFnICYgUkVGX0lTU1lNUkVGKSB7CiAJCS8qIGxvb3NlICovCi0JCWNvbnN0IGNoYXIgKnBhdGg7Ci0KLQkJaWYgKCEoZGVsb3B0ICYgUkVGX05PREVSRUYpKSB7Ci0JCQlpID0gc3RybGVuKGxvY2stPmxrLT5maWxlbmFtZSkgLSA1OyAvKiAubG9jayAqLwotCQkJbG9jay0+bGstPmZpbGVuYW1lW2ldID0gMDsKLQkJCXBhdGggPSBsb2NrLT5say0+ZmlsZW5hbWU7Ci0JCX0gZWxzZSB7Ci0JCQlwYXRoID0gZ2l0X3BhdGgoIiVzIiwgcmVmbmFtZSk7Ci0JCX0KLQkJZXJyID0gdW5saW5rX29yX3dhcm4ocGF0aCk7CisJCWkgPSBzdHJsZW4obG9jay0+bGstPmZpbGVuYW1lKSAtIDU7IC8qIC5sb2NrICovCisJCWxvY2stPmxrLT5maWxlbmFtZVtpXSA9IDA7CisJCWVyciA9IHVubGlua19vcl93YXJuKGxvY2stPmxrLT5maWxlbmFtZSk7CiAJCWlmIChlcnIgJiYgZXJybm8gIT0gRU5PRU5UKQogCQkJcmV0ID0gMTsKIAotCQlpZiAoIShkZWxvcHQgJiBSRUZfTk9ERVJFRikpCi0JCQlsb2NrLT5say0+ZmlsZW5hbWVbaV0gPSAnLic7CisJCWxvY2stPmxrLT5maWxlbmFtZVtpXSA9ICcuJzsKIAl9CiAJLyogcmVtb3ZpbmcgdGhlIGxvb3NlIG9uZSBjb3VsZCBoYXZlIHJlc3VycmVjdGVkIGFuIGVhcmxpZXIKIAkgKiBwYWNrZWQgb25lLiAgQWxzbywgaWYgaXQgd2FzIG5vdCBsb29zZSB3ZSBuZWVkIHRvIHJlcGFjawogCSAqIHdpdGhvdXQgaXQuCiAJICovCi0JcmV0IHw9IHJlcGFja193aXRob3V0X3JlZihyZWZuYW1lKTsKKwlyZXQgfD0gcmVwYWNrX3dpdGhvdXRfcmVmKGxvY2stPnJlZl9uYW1lKTsKIAogCXVubGlua19vcl93YXJuKGdpdF9wYXRoKCJsb2dzLyVzIiwgbG9jay0+cmVmX25hbWUpKTsKIAlpbnZhbGlkYXRlX3JlZl9jYWNoZShOVUxMKTsKQEAgLTIyOTAsNTkgKzIzMzIsMTE3IEBACiAJcmV0dXJuIDE7CiB9CiAKLWludCBmb3JfZWFjaF9yZWNlbnRfcmVmbG9nX2VudChjb25zdCBjaGFyICpyZWZuYW1lLCBlYWNoX3JlZmxvZ19lbnRfZm4gZm4sIGxvbmcgb2ZzLCB2b2lkICpjYl9kYXRhKQorc3RhdGljIGludCBzaG93X29uZV9yZWZsb2dfZW50KHN0cnVjdCBzdHJidWYgKnNiLCBlYWNoX3JlZmxvZ19lbnRfZm4gZm4sIHZvaWQgKmNiX2RhdGEpCiB7Ci0JY29uc3QgY2hhciAqbG9nZmlsZTsKLQlGSUxFICpsb2dmcDsKLQlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7Ci0JaW50IHJldCA9IDA7CisJdW5zaWduZWQgY2hhciBvc2hhMVsyMF0sIG5zaGExWzIwXTsKKwljaGFyICplbWFpbF9lbmQsICptZXNzYWdlOworCXVuc2lnbmVkIGxvbmcgdGltZXN0YW1wOworCWludCB0ejsKIAotCWxvZ2ZpbGUgPSBnaXRfcGF0aCgibG9ncy8lcyIsIHJlZm5hbWUpOwotCWxvZ2ZwID0gZm9wZW4obG9nZmlsZSwgInIiKTsKKwkvKiBvbGQgU1AgbmV3IFNQIG5hbWUgPGVtYWlsPiBTUCB0aW1lIFRBQiBtc2cgTEYgKi8KKwlpZiAoc2ItPmxlbiA8IDgzIHx8IHNiLT5idWZbc2ItPmxlbiAtIDFdICE9ICdcbicgfHwKKwkgICAgZ2V0X3NoYTFfaGV4KHNiLT5idWYsIG9zaGExKSB8fCBzYi0+YnVmWzQwXSAhPSAnICcgfHwKKwkgICAgZ2V0X3NoYTFfaGV4KHNiLT5idWYgKyA0MSwgbnNoYTEpIHx8IHNiLT5idWZbODFdICE9ICcgJyB8fAorCSAgICAhKGVtYWlsX2VuZCA9IHN0cmNocihzYi0+YnVmICsgODIsICc+JykpIHx8CisJICAgIGVtYWlsX2VuZFsxXSAhPSAnICcgfHwKKwkgICAgISh0aW1lc3RhbXAgPSBzdHJ0b3VsKGVtYWlsX2VuZCArIDIsICZtZXNzYWdlLCAxMCkpIHx8CisJICAgICFtZXNzYWdlIHx8IG1lc3NhZ2VbMF0gIT0gJyAnIHx8CisJICAgIChtZXNzYWdlWzFdICE9ICcrJyAmJiBtZXNzYWdlWzFdICE9ICctJykgfHwKKwkgICAgIWlzZGlnaXQobWVzc2FnZVsyXSkgfHwgIWlzZGlnaXQobWVzc2FnZVszXSkgfHwKKwkgICAgIWlzZGlnaXQobWVzc2FnZVs0XSkgfHwgIWlzZGlnaXQobWVzc2FnZVs1XSkpCisJCXJldHVybiAwOyAvKiBjb3JydXB0PyAqLworCWVtYWlsX2VuZFsxXSA9ICdcMCc7CisJdHogPSBzdHJ0b2wobWVzc2FnZSArIDEsIE5VTEwsIDEwKTsKKwlpZiAobWVzc2FnZVs2XSAhPSAnXHQnKQorCQltZXNzYWdlICs9IDY7CisJZWxzZQorCQltZXNzYWdlICs9IDc7CisJcmV0dXJuIGZuKG9zaGExLCBuc2hhMSwgc2ItPmJ1ZiArIDgyLCB0aW1lc3RhbXAsIHR6LCBtZXNzYWdlLCBjYl9kYXRhKTsKK30KKworc3RhdGljIGNoYXIgKmZpbmRfYmVnaW5uaW5nX29mX2xpbmUoY2hhciAqYm9iLCBjaGFyICpzY2FuKQoreworCXdoaWxlIChib2IgPCBzY2FuICYmICooLS1zY2FuKSAhPSAnXG4nKQorCQk7IC8qIGtlZXAgc2Nhbm5pbmcgYmFja3dhcmRzICovCisJLyoKKwkgKiBSZXR1cm4gZWl0aGVyIGJlZ2lubmluZyBvZiB0aGUgYnVmZmVyLCBvciBMRiBhdCB0aGUgZW5kIG9mCisJICogdGhlIHByZXZpb3VzIGxpbmUuCisJICovCisJcmV0dXJuIHNjYW47Cit9CisKK2ludCBmb3JfZWFjaF9yZWZsb2dfZW50X3JldmVyc2UoY29uc3QgY2hhciAqcmVmbmFtZSwgZWFjaF9yZWZsb2dfZW50X2ZuIGZuLCB2b2lkICpjYl9kYXRhKQoreworCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKKwlGSUxFICpsb2dmcDsKKwlsb25nIHBvczsKKwlpbnQgcmV0ID0gMCwgYXRfdGFpbCA9IDE7CisKKwlsb2dmcCA9IGZvcGVuKGdpdF9wYXRoKCJsb2dzLyVzIiwgcmVmbmFtZSksICJyIik7CiAJaWYgKCFsb2dmcCkKIAkJcmV0dXJuIC0xOwogCi0JaWYgKG9mcykgewotCQlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotCQlpZiAoZnN0YXQoZmlsZW5vKGxvZ2ZwKSwgJnN0YXRidWYpIHx8Ci0JCSAgICBzdGF0YnVmLnN0X3NpemUgPCBvZnMgfHwKLQkJICAgIGZzZWVrKGxvZ2ZwLCAtb2ZzLCBTRUVLX0VORCkgfHwKLQkJICAgIHN0cmJ1Zl9nZXR3aG9sZWxpbmUoJnNiLCBsb2dmcCwgJ1xuJykpIHsKLQkJCWZjbG9zZShsb2dmcCk7Ci0JCQlzdHJidWZfcmVsZWFzZSgmc2IpOwotCQkJcmV0dXJuIC0xOworCS8qIEp1bXAgdG8gdGhlIGVuZCAqLworCWlmIChmc2Vlayhsb2dmcCwgMCwgU0VFS19FTkQpIDwgMCkKKwkJcmV0dXJuIGVycm9yKCJjYW5ub3Qgc2VlayBiYWNrIHJlZmxvZyBmb3IgJXM6ICVzIiwKKwkJCSAgICAgcmVmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwlwb3MgPSBmdGVsbChsb2dmcCk7CisJd2hpbGUgKCFyZXQgJiYgMCA8IHBvcykgeworCQlpbnQgY250OworCQlzaXplX3QgbnJlYWQ7CisJCWNoYXIgYnVmW0JVRlNJWl07CisJCWNoYXIgKmVuZHAsICpzY2FucDsKKworCQkvKiBGaWxsIG5leHQgYmxvY2sgZnJvbSB0aGUgZW5kICovCisJCWNudCA9IChzaXplb2YoYnVmKSA8IHBvcykgPyBzaXplb2YoYnVmKSA6IHBvczsKKwkJaWYgKGZzZWVrKGxvZ2ZwLCBwb3MgLSBjbnQsIFNFRUtfU0VUKSkKKwkJCXJldHVybiBlcnJvcigiY2Fubm90IHNlZWsgYmFjayByZWZsb2cgZm9yICVzOiAlcyIsCisJCQkJICAgICByZWZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlucmVhZCA9IGZyZWFkKGJ1ZiwgY250LCAxLCBsb2dmcCk7CisJCWlmIChucmVhZCAhPSAxKQorCQkJcmV0dXJuIGVycm9yKCJjYW5ub3QgcmVhZCAlZCBieXRlcyBmcm9tIHJlZmxvZyBmb3IgJXM6ICVzIiwKKwkJCQkgICAgIGNudCwgcmVmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcG9zIC09IGNudDsKKworCQlzY2FucCA9IGVuZHAgPSBidWYgKyBjbnQ7CisJCWlmIChhdF90YWlsICYmIHNjYW5wWy0xXSA9PSAnXG4nKQorCQkJLyogTG9va2luZyBhdCB0aGUgZmluYWwgTEYgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSAqLworCQkJc2NhbnAtLTsKKwkJYXRfdGFpbCA9IDA7CisKKwkJd2hpbGUgKGJ1ZiA8IHNjYW5wKSB7CisJCQkvKgorCQkJICogdGVybWluYXRpbmcgTEYgb2YgdGhlIHByZXZpb3VzIGxpbmUsIG9yIHRoZSBiZWdpbm5pbmcKKwkJCSAqIG9mIHRoZSBidWZmZXIuCisJCQkgKi8KKwkJCWNoYXIgKmJwOworCisJCQlicCA9IGZpbmRfYmVnaW5uaW5nX29mX2xpbmUoYnVmLCBzY2FucCk7CisKKwkJCWlmICgqYnAgIT0gJ1xuJykgeworCQkJCXN0cmJ1Zl9zcGxpY2UoJnNiLCAwLCAwLCBidWYsIGVuZHAgLSBidWYpOworCQkJCWlmIChwb3MpCisJCQkJCWJyZWFrOyAvKiBuZWVkIHRvIGZpbGwgYW5vdGhlciBibG9jayAqLworCQkJCXNjYW5wID0gYnVmIC0gMTsgLyogbGVhdmUgbG9vcCAqLworCQkJfSBlbHNlIHsKKwkJCQkvKgorCQkJCSAqIChicCArIDEpIHRocnUgZW5kcCBpcyB0aGUgYmVnaW5uaW5nIG9mIHRoZQorCQkJCSAqIGN1cnJlbnQgbGluZSB3ZSBoYXZlIGluIHNiCisJCQkJICovCisJCQkJc3RyYnVmX3NwbGljZSgmc2IsIDAsIDAsIGJwICsgMSwgZW5kcCAtIChicCArIDEpKTsKKwkJCQlzY2FucCA9IGJwOworCQkJCWVuZHAgPSBicCArIDE7CisJCQl9CisJCQlyZXQgPSBzaG93X29uZV9yZWZsb2dfZW50KCZzYiwgZm4sIGNiX2RhdGEpOworCQkJc3RyYnVmX3Jlc2V0KCZzYik7CisJCQlpZiAocmV0KQorCQkJCWJyZWFrOwogCQl9Ci0JfQogCi0Jd2hpbGUgKCFzdHJidWZfZ2V0d2hvbGVsaW5lKCZzYiwgbG9nZnAsICdcbicpKSB7Ci0JCXVuc2lnbmVkIGNoYXIgb3NoYTFbMjBdLCBuc2hhMVsyMF07Ci0JCWNoYXIgKmVtYWlsX2VuZCwgKm1lc3NhZ2U7Ci0JCXVuc2lnbmVkIGxvbmcgdGltZXN0YW1wOwotCQlpbnQgdHo7Ci0KLQkJLyogb2xkIFNQIG5ldyBTUCBuYW1lIDxlbWFpbD4gU1AgdGltZSBUQUIgbXNnIExGICovCi0JCWlmIChzYi5sZW4gPCA4MyB8fCBzYi5idWZbc2IubGVuIC0gMV0gIT0gJ1xuJyB8fAotCQkgICAgZ2V0X3NoYTFfaGV4KHNiLmJ1Ziwgb3NoYTEpIHx8IHNiLmJ1Zls0MF0gIT0gJyAnIHx8Ci0JCSAgICBnZXRfc2hhMV9oZXgoc2IuYnVmICsgNDEsIG5zaGExKSB8fCBzYi5idWZbODFdICE9ICcgJyB8fAotCQkgICAgIShlbWFpbF9lbmQgPSBzdHJjaHIoc2IuYnVmICsgODIsICc+JykpIHx8Ci0JCSAgICBlbWFpbF9lbmRbMV0gIT0gJyAnIHx8Ci0JCSAgICAhKHRpbWVzdGFtcCA9IHN0cnRvdWwoZW1haWxfZW5kICsgMiwgJm1lc3NhZ2UsIDEwKSkgfHwKLQkJICAgICFtZXNzYWdlIHx8IG1lc3NhZ2VbMF0gIT0gJyAnIHx8Ci0JCSAgICAobWVzc2FnZVsxXSAhPSAnKycgJiYgbWVzc2FnZVsxXSAhPSAnLScpIHx8Ci0JCSAgICAhaXNkaWdpdChtZXNzYWdlWzJdKSB8fCAhaXNkaWdpdChtZXNzYWdlWzNdKSB8fAotCQkgICAgIWlzZGlnaXQobWVzc2FnZVs0XSkgfHwgIWlzZGlnaXQobWVzc2FnZVs1XSkpCi0JCQljb250aW51ZTsgLyogY29ycnVwdD8gKi8KLQkJZW1haWxfZW5kWzFdID0gJ1wwJzsKLQkJdHogPSBzdHJ0b2wobWVzc2FnZSArIDEsIE5VTEwsIDEwKTsKLQkJaWYgKG1lc3NhZ2VbNl0gIT0gJ1x0JykKLQkJCW1lc3NhZ2UgKz0gNjsKLQkJZWxzZQotCQkJbWVzc2FnZSArPSA3OwotCQlyZXQgPSBmbihvc2hhMSwgbnNoYTEsIHNiLmJ1ZiArIDgyLCB0aW1lc3RhbXAsIHR6LCBtZXNzYWdlLAotCQkJIGNiX2RhdGEpOwotCQlpZiAocmV0KQotCQkJYnJlYWs7CiAJfQorCWlmICghcmV0ICYmIHNiLmxlbikKKwkJcmV0ID0gc2hvd19vbmVfcmVmbG9nX2VudCgmc2IsIGZuLCBjYl9kYXRhKTsKKwogCWZjbG9zZShsb2dmcCk7CiAJc3RyYnVmX3JlbGVhc2UoJnNiKTsKIAlyZXR1cm4gcmV0OwpAQCAtMjM1MCw5ICsyNDUwLDIwIEBACiAKIGludCBmb3JfZWFjaF9yZWZsb2dfZW50KGNvbnN0IGNoYXIgKnJlZm5hbWUsIGVhY2hfcmVmbG9nX2VudF9mbiBmbiwgdm9pZCAqY2JfZGF0YSkKIHsKLQlyZXR1cm4gZm9yX2VhY2hfcmVjZW50X3JlZmxvZ19lbnQocmVmbmFtZSwgZm4sIDAsIGNiX2RhdGEpOwotfQorCUZJTEUgKmxvZ2ZwOworCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKKwlpbnQgcmV0ID0gMDsKIAorCWxvZ2ZwID0gZm9wZW4oZ2l0X3BhdGgoImxvZ3MvJXMiLCByZWZuYW1lKSwgInIiKTsKKwlpZiAoIWxvZ2ZwKQorCQlyZXR1cm4gLTE7CisKKwl3aGlsZSAoIXJldCAmJiAhc3RyYnVmX2dldHdob2xlbGluZSgmc2IsIGxvZ2ZwLCAnXG4nKSkKKwkJcmV0ID0gc2hvd19vbmVfcmVmbG9nX2VudCgmc2IsIGZuLCBjYl9kYXRhKTsKKwlmY2xvc2UobG9nZnApOworCXN0cmJ1Zl9yZWxlYXNlKCZzYik7CisJcmV0dXJuIHJldDsKK30KIC8qCiAgKiBDYWxsIGZuIGZvciBlYWNoIHJlZmxvZyBpbiB0aGUgbmFtZXNwYWNlIGluZGljYXRlZCBieSBuYW1lLiAgbmFtZQogICogbXVzdCBiZSBlbXB0eSBvciBlbmQgd2l0aCAnLycuICBOYW1lIHdpbGwgYmUgdXNlZCBhcyBhIHNjcmF0Y2gKQEAgLTI1NTIsMyArMjY2Myw0NiBAQAogCWZyZWUoc2hvcnRfbmFtZSk7CiAJcmV0dXJuIHhzdHJkdXAocmVmbmFtZSk7CiB9CisKK3N0YXRpYyBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmhpZGVfcmVmczsKKworaW50IHBhcnNlX2hpZGVfcmVmc19jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgY2hhciAqc2VjdGlvbikKK3sKKwlpZiAoIXN0cmNtcCgidHJhbnNmZXIuaGlkZXJlZnMiLCB2YXIpIHx8CisJICAgIC8qIE5FRURTV09SSzogdXNlIHBhcnNlX2NvbmZpZ19rZXkoKSBvbmNlIGJvdGggYXJlIG1lcmdlZCAqLworCSAgICAoIXByZWZpeGNtcCh2YXIsIHNlY3Rpb24pICYmIHZhcltzdHJsZW4oc2VjdGlvbildID09ICcuJyAmJgorCSAgICAgIXN0cmNtcCh2YXIgKyBzdHJsZW4oc2VjdGlvbiksICIuaGlkZXJlZnMiKSkpIHsKKwkJY2hhciAqcmVmOworCQlpbnQgbGVuOworCisJCWlmICghdmFsdWUpCisJCQlyZXR1cm4gY29uZmlnX2Vycm9yX25vbmJvb2wodmFyKTsKKwkJcmVmID0geHN0cmR1cCh2YWx1ZSk7CisJCWxlbiA9IHN0cmxlbihyZWYpOworCQl3aGlsZSAobGVuICYmIHJlZltsZW4gLSAxXSA9PSAnLycpCisJCQlyZWZbLS1sZW5dID0gJ1wwJzsKKwkJaWYgKCFoaWRlX3JlZnMpIHsKKwkJCWhpZGVfcmVmcyA9IHhjYWxsb2MoMSwgc2l6ZW9mKCpoaWRlX3JlZnMpKTsKKwkJCWhpZGVfcmVmcy0+c3RyZHVwX3N0cmluZ3MgPSAxOworCQl9CisJCXN0cmluZ19saXN0X2FwcGVuZChoaWRlX3JlZnMsIHJlZik7CisJfQorCXJldHVybiAwOworfQorCitpbnQgcmVmX2lzX2hpZGRlbihjb25zdCBjaGFyICpyZWZuYW1lKQoreworCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOworCisJaWYgKCFoaWRlX3JlZnMpCisJCXJldHVybiAwOworCWZvcl9lYWNoX3N0cmluZ19saXN0X2l0ZW0oaXRlbSwgaGlkZV9yZWZzKSB7CisJCWludCBsZW47CisJCWlmIChwcmVmaXhjbXAocmVmbmFtZSwgaXRlbS0+c3RyaW5nKSkKKwkJCWNvbnRpbnVlOworCQlsZW4gPSBzdHJsZW4oaXRlbS0+c3RyaW5nKTsKKwkJaWYgKCFyZWZuYW1lW2xlbl0gfHwgcmVmbmFtZVtsZW5dID09ICcvJykKKwkJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3JlZnMuaCBiL3JlZnMuaAppbmRleCBkNmMyZmUyLi5hMzVlYWZjIDEwMDY0NAotLS0gYS9yZWZzLmgKKysrIGIvcmVmcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAKIC8qIGl0ZXJhdGUgb3ZlciByZWZsb2cgZW50cmllcyAqLwogdHlwZWRlZiBpbnQgZWFjaF9yZWZsb2dfZW50X2ZuKHVuc2lnbmVkIGNoYXIgKm9zaGExLCB1bnNpZ25lZCBjaGFyICpuc2hhMSwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBsb25nLCBpbnQsIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKIGludCBmb3JfZWFjaF9yZWZsb2dfZW50KGNvbnN0IGNoYXIgKnJlZm5hbWUsIGVhY2hfcmVmbG9nX2VudF9mbiBmbiwgdm9pZCAqY2JfZGF0YSk7Ci1pbnQgZm9yX2VhY2hfcmVjZW50X3JlZmxvZ19lbnQoY29uc3QgY2hhciAqcmVmbmFtZSwgZWFjaF9yZWZsb2dfZW50X2ZuIGZuLCBsb25nLCB2b2lkICpjYl9kYXRhKTsKK2ludCBmb3JfZWFjaF9yZWZsb2dfZW50X3JldmVyc2UoY29uc3QgY2hhciAqcmVmbmFtZSwgZWFjaF9yZWZsb2dfZW50X2ZuIGZuLCB2b2lkICpjYl9kYXRhKTsKIAogLyoKICAqIENhbGxzIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb24gZm9yIGVhY2ggcmVmbG9nIGZpbGUgdW50aWwgaXQgcmV0dXJucyBub256ZXJvLApAQCAtMTQ3LDQgKzE0Nyw3IEBACiAJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm9sZHZhbCwKIAkJaW50IGZsYWdzLCBlbnVtIGFjdGlvbl9vbl9lcnIgb25lcnIpOwogCitleHRlcm4gaW50IHBhcnNlX2hpZGVfcmVmc19jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgY2hhciAqKTsKK2V4dGVybiBpbnQgcmVmX2lzX2hpZGRlbihjb25zdCBjaGFyICopOworCiAjZW5kaWYgLyogUkVGU19IICovCmRpZmYgLS1naXQgYS9yZW1vdGUtY3VybC5jIGIvcmVtb3RlLWN1cmwuYwppbmRleCAwNGE5ZDYyLi42MGVkYTYzIDEwMDY0NAotLS0gYS9yZW1vdGUtY3VybC5jCisrKyBiL3JlbW90ZS1jdXJsLmMKQEAgLTc2LDEzNSArNzYsMTYgQEAKIAljaGFyICpidWZfYWxsb2M7CiAJY2hhciAqYnVmOwogCXNpemVfdCBsZW47CisJc3RydWN0IHJlZiAqcmVmczsKIAl1bnNpZ25lZCBwcm90b19naXQgOiAxOwogfTsKIHN0YXRpYyBzdHJ1Y3QgZGlzY292ZXJ5ICpsYXN0X2Rpc2NvdmVyeTsKIAotc3RhdGljIHZvaWQgZnJlZV9kaXNjb3Zlcnkoc3RydWN0IGRpc2NvdmVyeSAqZCkKLXsKLQlpZiAoZCkgewotCQlpZiAoZCA9PSBsYXN0X2Rpc2NvdmVyeSkKLQkJCWxhc3RfZGlzY292ZXJ5ID0gTlVMTDsKLQkJZnJlZShkLT5idWZfYWxsb2MpOwotCQlmcmVlKGQpOwotCX0KLX0KLQotc3RhdGljIHN0cnVjdCBkaXNjb3ZlcnkqIGRpc2NvdmVyX3JlZnMoY29uc3QgY2hhciAqc2VydmljZSkKLXsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZmZlciA9IFNUUkJVRl9JTklUOwotCXN0cnVjdCBkaXNjb3ZlcnkgKmxhc3QgPSBsYXN0X2Rpc2NvdmVyeTsKLQljaGFyICpyZWZzX3VybDsKLQlpbnQgaHR0cF9yZXQsIGlzX2h0dHAgPSAwLCBwcm90b19naXRfY2FuZGlkYXRlID0gMTsKLQotCWlmIChsYXN0ICYmICFzdHJjbXAoc2VydmljZSwgbGFzdC0+c2VydmljZSkpCi0JCXJldHVybiBsYXN0OwotCWZyZWVfZGlzY292ZXJ5KGxhc3QpOwotCi0Jc3RyYnVmX2FkZGYoJmJ1ZmZlciwgIiVzaW5mby9yZWZzIiwgdXJsKTsKLQlpZiAoIXByZWZpeGNtcCh1cmwsICJodHRwOi8vIikgfHwgIXByZWZpeGNtcCh1cmwsICJodHRwczovLyIpKSB7Ci0JCWlzX2h0dHAgPSAxOwotCQlpZiAoIXN0cmNocih1cmwsICc/JykpCi0JCQlzdHJidWZfYWRkY2goJmJ1ZmZlciwgJz8nKTsKLQkJZWxzZQotCQkJc3RyYnVmX2FkZGNoKCZidWZmZXIsICcmJyk7Ci0JCXN0cmJ1Zl9hZGRmKCZidWZmZXIsICJzZXJ2aWNlPSVzIiwgc2VydmljZSk7Ci0JfQotCXJlZnNfdXJsID0gc3RyYnVmX2RldGFjaCgmYnVmZmVyLCBOVUxMKTsKLQotCWh0dHBfcmV0ID0gaHR0cF9nZXRfc3RyYnVmKHJlZnNfdXJsLCAmYnVmZmVyLCBIVFRQX05PX0NBQ0hFKTsKLQotCS8qIHRyeSBhZ2FpbiB3aXRoICJwbGFpbiIgdXJsIChubyA/IG9yICYgYXBwZW5kZWQpICovCi0JaWYgKGh0dHBfcmV0ICE9IEhUVFBfT0sgJiYgaHR0cF9yZXQgIT0gSFRUUF9OT0FVVEgpIHsKLQkJZnJlZShyZWZzX3VybCk7Ci0JCXN0cmJ1Zl9yZXNldCgmYnVmZmVyKTsKLQotCQlwcm90b19naXRfY2FuZGlkYXRlID0gMDsKLQkJc3RyYnVmX2FkZGYoJmJ1ZmZlciwgIiVzaW5mby9yZWZzIiwgdXJsKTsKLQkJcmVmc191cmwgPSBzdHJidWZfZGV0YWNoKCZidWZmZXIsIE5VTEwpOwotCi0JCWh0dHBfcmV0ID0gaHR0cF9nZXRfc3RyYnVmKHJlZnNfdXJsLCAmYnVmZmVyLCBIVFRQX05PX0NBQ0hFKTsKLQl9Ci0KLQlzd2l0Y2ggKGh0dHBfcmV0KSB7Ci0JY2FzZSBIVFRQX09LOgotCQlicmVhazsKLQljYXNlIEhUVFBfTUlTU0lOR19UQVJHRVQ6Ci0JCWRpZSgiJXMgbm90IGZvdW5kOiBkaWQgeW91IHJ1biBnaXQgdXBkYXRlLXNlcnZlci1pbmZvIG9uIHRoZSIKLQkJICAgICIgc2VydmVyPyIsIHJlZnNfdXJsKTsKLQljYXNlIEhUVFBfTk9BVVRIOgotCQlkaWUoIkF1dGhlbnRpY2F0aW9uIGZhaWxlZCIpOwotCWRlZmF1bHQ6Ci0JCWh0dHBfZXJyb3IocmVmc191cmwsIGh0dHBfcmV0KTsKLQkJZGllKCJIVFRQIHJlcXVlc3QgZmFpbGVkIik7Ci0JfQotCi0JbGFzdD0geGNhbGxvYygxLCBzaXplb2YoKmxhc3RfZGlzY292ZXJ5KSk7Ci0JbGFzdC0+c2VydmljZSA9IHNlcnZpY2U7Ci0JbGFzdC0+YnVmX2FsbG9jID0gc3RyYnVmX2RldGFjaCgmYnVmZmVyLCAmbGFzdC0+bGVuKTsKLQlsYXN0LT5idWYgPSBsYXN0LT5idWZfYWxsb2M7Ci0KLQlpZiAoaXNfaHR0cCAmJiBwcm90b19naXRfY2FuZGlkYXRlCi0JCSYmIDUgPD0gbGFzdC0+bGVuICYmIGxhc3QtPmJ1Zls0XSA9PSAnIycpIHsKLQkJLyogc21hcnQgSFRUUCByZXNwb25zZTsgdmFsaWRhdGUgdGhhdCB0aGUgc2VydmljZQotCQkgKiBwa3QtbGluZSBtYXRjaGVzIG91ciByZXF1ZXN0LgotCQkgKi8KLQkJc3RydWN0IHN0cmJ1ZiBleHAgPSBTVFJCVUZfSU5JVDsKLQotCQlpZiAocGFja2V0X2dldF9saW5lKCZidWZmZXIsICZsYXN0LT5idWYsICZsYXN0LT5sZW4pIDw9IDApCi0JCQlkaWUoIiVzIGhhcyBpbnZhbGlkIHBhY2tldCBoZWFkZXIiLCByZWZzX3VybCk7Ci0JCWlmIChidWZmZXIubGVuICYmIGJ1ZmZlci5idWZbYnVmZmVyLmxlbiAtIDFdID09ICdcbicpCi0JCQlzdHJidWZfc2V0bGVuKCZidWZmZXIsIGJ1ZmZlci5sZW4gLSAxKTsKLQotCQlzdHJidWZfYWRkZigmZXhwLCAiIyBzZXJ2aWNlPSVzIiwgc2VydmljZSk7Ci0JCWlmIChzdHJidWZfY21wKCZleHAsICZidWZmZXIpKQotCQkJZGllKCJpbnZhbGlkIHNlcnZlciByZXNwb25zZTsgZ290ICclcyciLCBidWZmZXIuYnVmKTsKLQkJc3RyYnVmX3JlbGVhc2UoJmV4cCk7Ci0KLQkJLyogVGhlIGhlYWRlciBjYW4gaW5jbHVkZSBhZGRpdGlvbmFsIG1ldGFkYXRhIGxpbmVzLCB1cAotCQkgKiB1bnRpbCBhIHBhY2tldCBmbHVzaCBtYXJrZXIuICBJZ25vcmUgdGhlc2Ugbm93LCBidXQKLQkJICogaW4gdGhlIGZ1dHVyZSB3ZSBtaWdodCBzdGFydCB0byBzY2FuIHRoZW0uCi0JCSAqLwotCQlzdHJidWZfcmVzZXQoJmJ1ZmZlcik7Ci0JCXdoaWxlIChwYWNrZXRfZ2V0X2xpbmUoJmJ1ZmZlciwgJmxhc3QtPmJ1ZiwgJmxhc3QtPmxlbikgPiAwKQotCQkJc3RyYnVmX3Jlc2V0KCZidWZmZXIpOwotCi0JCWxhc3QtPnByb3RvX2dpdCA9IDE7Ci0JfQotCi0JZnJlZShyZWZzX3VybCk7Ci0Jc3RyYnVmX3JlbGVhc2UoJmJ1ZmZlcik7Ci0JbGFzdF9kaXNjb3ZlcnkgPSBsYXN0OwotCXJldHVybiBsYXN0OwotfQotCi1zdGF0aWMgaW50IHdyaXRlX2Rpc2NvdmVyeShpbnQgaW4sIGludCBvdXQsIHZvaWQgKmRhdGEpCi17Ci0Jc3RydWN0IGRpc2NvdmVyeSAqaGVhZHMgPSBkYXRhOwotCWludCBlcnIgPSAwOwotCWlmICh3cml0ZV9pbl9mdWxsKG91dCwgaGVhZHMtPmJ1ZiwgaGVhZHMtPmxlbikgIT0gaGVhZHMtPmxlbikKLQkJZXJyID0gMTsKLQljbG9zZShvdXQpOwotCXJldHVybiBlcnI7Ci19Ci0KIHN0YXRpYyBzdHJ1Y3QgcmVmICpwYXJzZV9naXRfcmVmcyhzdHJ1Y3QgZGlzY292ZXJ5ICpoZWFkcywgaW50IGZvcl9wdXNoKQogewogCXN0cnVjdCByZWYgKmxpc3QgPSBOVUxMOwotCXN0cnVjdCBhc3luYyBhc3luYzsKLQotCW1lbXNldCgmYXN5bmMsIDAsIHNpemVvZihhc3luYykpOwotCWFzeW5jLnByb2MgPSB3cml0ZV9kaXNjb3Zlcnk7Ci0JYXN5bmMuZGF0YSA9IGhlYWRzOwotCWFzeW5jLm91dCA9IC0xOwotCi0JaWYgKHN0YXJ0X2FzeW5jKCZhc3luYykpCi0JCWRpZSgiY2Fubm90IHN0YXJ0IHRocmVhZCB0byBwYXJzZSBhZHZlcnRpc2VkIHJlZnMiKTsKLQlnZXRfcmVtb3RlX2hlYWRzKGFzeW5jLm91dCwgJmxpc3QsCi0JCQlmb3JfcHVzaCA/IFJFRl9OT1JNQUwgOiAwLCBOVUxMKTsKLQljbG9zZShhc3luYy5vdXQpOwotCWlmIChmaW5pc2hfYXN5bmMoJmFzeW5jKSkKLQkJZGllKCJyZWYgcGFyc2luZyB0aHJlYWQgZmFpbGVkIik7CisJZ2V0X3JlbW90ZV9oZWFkcygtMSwgaGVhZHMtPmJ1ZiwgaGVhZHMtPmxlbiwgJmxpc3QsCisJCQkgZm9yX3B1c2ggPyBSRUZfTk9STUFMIDogMCwgTlVMTCk7CiAJcmV0dXJuIGxpc3Q7CiB9CiAKQEAgLTI1OSwxOCArMTQwLDE0MSBAQAogCXJldHVybiByZWZzOwogfQogCitzdGF0aWMgdm9pZCBmcmVlX2Rpc2NvdmVyeShzdHJ1Y3QgZGlzY292ZXJ5ICpkKQoreworCWlmIChkKSB7CisJCWlmIChkID09IGxhc3RfZGlzY292ZXJ5KQorCQkJbGFzdF9kaXNjb3ZlcnkgPSBOVUxMOworCQlmcmVlKGQtPmJ1Zl9hbGxvYyk7CisJCWZyZWVfcmVmcyhkLT5yZWZzKTsKKwkJZnJlZShkKTsKKwl9Cit9CisKK3N0YXRpYyBpbnQgc2hvd19odHRwX21lc3NhZ2Uoc3RydWN0IHN0cmJ1ZiAqdHlwZSwgc3RydWN0IHN0cmJ1ZiAqbXNnKQoreworCWNvbnN0IGNoYXIgKnAsICplb2w7CisKKwkvKgorCSAqIFdlIG9ubHkgc2hvdyB0ZXh0L3BsYWluIHBhcnRzLCBhcyBvdGhlciB0eXBlcyBhcmUgbGlrZWx5CisJICogdG8gYmUgdWdseSB0byBsb29rIGF0IG9uIHRoZSB1c2VyJ3MgdGVybWluYWwuCisJICoKKwkgKiBUT0RPIHNob3VsZCBoYW5kbGUgIjsgY2hhcnNldD1YWFgiLCBhbmQgcmUtZW5jb2RlIGludG8KKwkgKiBsb2dvdXRwdXRlbmNvZGluZworCSAqLworCWlmIChzdHJjYXNlY21wKHR5cGUtPmJ1ZiwgInRleHQvcGxhaW4iKSkKKwkJcmV0dXJuIC0xOworCisJc3RyYnVmX3RyaW0obXNnKTsKKwlpZiAoIW1zZy0+bGVuKQorCQlyZXR1cm4gLTE7CisKKwlwID0gbXNnLT5idWY7CisJZG8geworCQllb2wgPSBzdHJjaHJudWwocCwgJ1xuJyk7CisJCWZwcmludGYoc3RkZXJyLCAicmVtb3RlOiAlLipzXG4iLCAoaW50KShlb2wgLSBwKSwgcCk7CisJCXAgPSBlb2wgKyAxOworCX0gd2hpbGUoKmVvbCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGlzY292ZXJ5KiBkaXNjb3Zlcl9yZWZzKGNvbnN0IGNoYXIgKnNlcnZpY2UsIGludCBmb3JfcHVzaCkKK3sKKwlzdHJ1Y3Qgc3RyYnVmIGV4cCA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBzdHJidWYgdHlwZSA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBzdHJidWYgYnVmZmVyID0gU1RSQlVGX0lOSVQ7CisJc3RydWN0IGRpc2NvdmVyeSAqbGFzdCA9IGxhc3RfZGlzY292ZXJ5OworCWNoYXIgKnJlZnNfdXJsOworCWludCBodHRwX3JldCwgbWF5YmVfc21hcnQgPSAwOworCisJaWYgKGxhc3QgJiYgIXN0cmNtcChzZXJ2aWNlLCBsYXN0LT5zZXJ2aWNlKSkKKwkJcmV0dXJuIGxhc3Q7CisJZnJlZV9kaXNjb3ZlcnkobGFzdCk7CisKKwlzdHJidWZfYWRkZigmYnVmZmVyLCAiJXNpbmZvL3JlZnMiLCB1cmwpOworCWlmICgoIXByZWZpeGNtcCh1cmwsICJodHRwOi8vIikgfHwgIXByZWZpeGNtcCh1cmwsICJodHRwczovLyIpKSAmJgorCSAgICAgZ2l0X2Vudl9ib29sKCJHSVRfU01BUlRfSFRUUCIsIDEpKSB7CisJCW1heWJlX3NtYXJ0ID0gMTsKKwkJaWYgKCFzdHJjaHIodXJsLCAnPycpKQorCQkJc3RyYnVmX2FkZGNoKCZidWZmZXIsICc/Jyk7CisJCWVsc2UKKwkJCXN0cmJ1Zl9hZGRjaCgmYnVmZmVyLCAnJicpOworCQlzdHJidWZfYWRkZigmYnVmZmVyLCAic2VydmljZT0lcyIsIHNlcnZpY2UpOworCX0KKwlyZWZzX3VybCA9IHN0cmJ1Zl9kZXRhY2goJmJ1ZmZlciwgTlVMTCk7CisKKwlodHRwX3JldCA9IGh0dHBfZ2V0X3N0cmJ1ZihyZWZzX3VybCwgJnR5cGUsICZidWZmZXIsCisJCQkJICAgSFRUUF9OT19DQUNIRSB8IEhUVFBfS0VFUF9FUlJPUik7CisJc3dpdGNoIChodHRwX3JldCkgeworCWNhc2UgSFRUUF9PSzoKKwkJYnJlYWs7CisJY2FzZSBIVFRQX01JU1NJTkdfVEFSR0VUOgorCQlzaG93X2h0dHBfbWVzc2FnZSgmdHlwZSwgJmJ1ZmZlcik7CisJCWRpZSgicmVwb3NpdG9yeSAnJXMnIG5vdCBmb3VuZCIsIHVybCk7CisJY2FzZSBIVFRQX05PQVVUSDoKKwkJc2hvd19odHRwX21lc3NhZ2UoJnR5cGUsICZidWZmZXIpOworCQlkaWUoIkF1dGhlbnRpY2F0aW9uIGZhaWxlZCBmb3IgJyVzJyIsIHVybCk7CisJZGVmYXVsdDoKKwkJc2hvd19odHRwX21lc3NhZ2UoJnR5cGUsICZidWZmZXIpOworCQlkaWUoInVuYWJsZSB0byBhY2Nlc3MgJyVzJzogJXMiLCB1cmwsIGN1cmxfZXJyb3JzdHIpOworCX0KKworCWxhc3Q9IHhjYWxsb2MoMSwgc2l6ZW9mKCpsYXN0X2Rpc2NvdmVyeSkpOworCWxhc3QtPnNlcnZpY2UgPSBzZXJ2aWNlOworCWxhc3QtPmJ1Zl9hbGxvYyA9IHN0cmJ1Zl9kZXRhY2goJmJ1ZmZlciwgJmxhc3QtPmxlbik7CisJbGFzdC0+YnVmID0gbGFzdC0+YnVmX2FsbG9jOworCisJc3RyYnVmX2FkZGYoJmV4cCwgImFwcGxpY2F0aW9uL3gtJXMtYWR2ZXJ0aXNlbWVudCIsIHNlcnZpY2UpOworCWlmIChtYXliZV9zbWFydCAmJgorCSAgICAoNSA8PSBsYXN0LT5sZW4gJiYgbGFzdC0+YnVmWzRdID09ICcjJykgJiYKKwkgICAgIXN0cmJ1Zl9jbXAoJmV4cCwgJnR5cGUpKSB7CisJCWNoYXIgKmxpbmU7CisKKwkJLyoKKwkJICogc21hcnQgSFRUUCByZXNwb25zZTsgdmFsaWRhdGUgdGhhdCB0aGUgc2VydmljZQorCQkgKiBwa3QtbGluZSBtYXRjaGVzIG91ciByZXF1ZXN0LgorCQkgKi8KKwkJbGluZSA9IHBhY2tldF9yZWFkX2xpbmVfYnVmKCZsYXN0LT5idWYsICZsYXN0LT5sZW4sIE5VTEwpOworCisJCXN0cmJ1Zl9yZXNldCgmZXhwKTsKKwkJc3RyYnVmX2FkZGYoJmV4cCwgIiMgc2VydmljZT0lcyIsIHNlcnZpY2UpOworCQlpZiAoc3RyY21wKGxpbmUsIGV4cC5idWYpKQorCQkJZGllKCJpbnZhbGlkIHNlcnZlciByZXNwb25zZTsgZ290ICclcyciLCBsaW5lKTsKKwkJc3RyYnVmX3JlbGVhc2UoJmV4cCk7CisKKwkJLyogVGhlIGhlYWRlciBjYW4gaW5jbHVkZSBhZGRpdGlvbmFsIG1ldGFkYXRhIGxpbmVzLCB1cAorCQkgKiB1bnRpbCBhIHBhY2tldCBmbHVzaCBtYXJrZXIuICBJZ25vcmUgdGhlc2Ugbm93LCBidXQKKwkJICogaW4gdGhlIGZ1dHVyZSB3ZSBtaWdodCBzdGFydCB0byBzY2FuIHRoZW0uCisJCSAqLworCQl3aGlsZSAocGFja2V0X3JlYWRfbGluZV9idWYoJmxhc3QtPmJ1ZiwgJmxhc3QtPmxlbiwgTlVMTCkpCisJCQk7CisKKwkJbGFzdC0+cHJvdG9fZ2l0ID0gMTsKKwl9CisKKwlpZiAobGFzdC0+cHJvdG9fZ2l0KQorCQlsYXN0LT5yZWZzID0gcGFyc2VfZ2l0X3JlZnMobGFzdCwgZm9yX3B1c2gpOworCWVsc2UKKwkJbGFzdC0+cmVmcyA9IHBhcnNlX2luZm9fcmVmcyhsYXN0KTsKKworCWZyZWUocmVmc191cmwpOworCXN0cmJ1Zl9yZWxlYXNlKCZleHApOworCXN0cmJ1Zl9yZWxlYXNlKCZ0eXBlKTsKKwlzdHJidWZfcmVsZWFzZSgmYnVmZmVyKTsKKwlsYXN0X2Rpc2NvdmVyeSA9IGxhc3Q7CisJcmV0dXJuIGxhc3Q7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgcmVmICpnZXRfcmVmcyhpbnQgZm9yX3B1c2gpCiB7CiAJc3RydWN0IGRpc2NvdmVyeSAqaGVhZHM7CiAKIAlpZiAoZm9yX3B1c2gpCi0JCWhlYWRzID0gZGlzY292ZXJfcmVmcygiZ2l0LXJlY2VpdmUtcGFjayIpOworCQloZWFkcyA9IGRpc2NvdmVyX3JlZnMoImdpdC1yZWNlaXZlLXBhY2siLCBmb3JfcHVzaCk7CiAJZWxzZQotCQloZWFkcyA9IGRpc2NvdmVyX3JlZnMoImdpdC11cGxvYWQtcGFjayIpOworCQloZWFkcyA9IGRpc2NvdmVyX3JlZnMoImdpdC11cGxvYWQtcGFjayIsIGZvcl9wdXNoKTsKIAotCWlmIChoZWFkcy0+cHJvdG9fZ2l0KQotCQlyZXR1cm4gcGFyc2VfZ2l0X3JlZnMoaGVhZHMsIGZvcl9wdXNoKTsKLQlyZXR1cm4gcGFyc2VfaW5mb19yZWZzKGhlYWRzKTsKKwlyZXR1cm4gaGVhZHMtPnJlZnM7CiB9CiAKIHN0YXRpYyB2b2lkIG91dHB1dF9yZWZzKHN0cnVjdCByZWYgKnJlZnMpCkBAIC0yODQsNyArMjg4LDYgQEAKIAl9CiAJcHJpbnRmKCJcbiIpOwogCWZmbHVzaChzdGRvdXQpOwotCWZyZWVfcmVmcyhyZWZzKTsKIH0KIAogc3RydWN0IHJwY19zdGF0ZSB7CkBAIC0zMTQsNyArMzE3LDcgQEAKIAogCWlmICghYXZhaWwpIHsKIAkJcnBjLT5pbml0aWFsX2J1ZmZlciA9IDA7Ci0JCWF2YWlsID0gcGFja2V0X3JlYWRfbGluZShycGMtPm91dCwgcnBjLT5idWYsIHJwYy0+YWxsb2MpOworCQlhdmFpbCA9IHBhY2tldF9yZWFkKHJwYy0+b3V0LCBOVUxMLCBOVUxMLCBycGMtPmJ1ZiwgcnBjLT5hbGxvYywgMCk7CiAJCWlmICghYXZhaWwpCiAJCQlyZXR1cm4gMDsKIAkJcnBjLT5wb3MgPSAwOwpAQCAtMzYyLDE2ICszNjUsMTcgQEAKIAogc3RhdGljIGludCBydW5fc2xvdChzdHJ1Y3QgYWN0aXZlX3JlcXVlc3Rfc2xvdCAqc2xvdCkKIHsKLQlpbnQgZXJyID0gMDsKKwlpbnQgZXJyOwogCXN0cnVjdCBzbG90X3Jlc3VsdHMgcmVzdWx0czsKIAogCXNsb3QtPnJlc3VsdHMgPSAmcmVzdWx0czsKIAlzbG90LT5jdXJsX3Jlc3VsdCA9IGN1cmxfZWFzeV9wZXJmb3JtKHNsb3QtPmN1cmwpOwogCWZpbmlzaF9hY3RpdmVfc2xvdChzbG90KTsKIAotCWlmIChyZXN1bHRzLmN1cmxfcmVzdWx0ICE9IENVUkxFX09LKSB7Ci0JCWVyciB8PSBlcnJvcigiUlBDIGZhaWxlZDsgcmVzdWx0PSVkLCBIVFRQIGNvZGUgPSAlbGQiLAotCQkJcmVzdWx0cy5jdXJsX3Jlc3VsdCwgcmVzdWx0cy5odHRwX2NvZGUpOworCWVyciA9IGhhbmRsZV9jdXJsX3Jlc3VsdCgmcmVzdWx0cyk7CisJaWYgKGVyciAhPSBIVFRQX09LICYmIGVyciAhPSBIVFRQX1JFQVVUSCkgeworCQllcnJvcigiUlBDIGZhaWxlZDsgcmVzdWx0PSVkLCBIVFRQIGNvZGUgPSAlbGQiLAorCQkgICAgICByZXN1bHRzLmN1cmxfcmVzdWx0LCByZXN1bHRzLmh0dHBfY29kZSk7CiAJfQogCiAJcmV0dXJuIGVycjsKQEAgLTM5Miw3ICszOTYsNyBAQAogCWN1cmxfZWFzeV9zZXRvcHQoc2xvdC0+Y3VybCwgQ1VSTE9QVF9OT0JPRFksIDApOwogCWN1cmxfZWFzeV9zZXRvcHQoc2xvdC0+Y3VybCwgQ1VSTE9QVF9QT1NULCAxKTsKIAljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfVVJMLCBycGMtPnNlcnZpY2VfdXJsKTsKLQljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfRU5DT0RJTkcsICIiKTsKKwljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfRU5DT0RJTkcsIE5VTEwpOwogCWN1cmxfZWFzeV9zZXRvcHQoc2xvdC0+Y3VybCwgQ1VSTE9QVF9QT1NURklFTERTLCAiMDAwMCIpOwogCWN1cmxfZWFzeV9zZXRvcHQoc2xvdC0+Y3VybCwgQ1VSTE9QVF9QT1NURklFTERTSVpFLCA0KTsKIAljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfSFRUUEhFQURFUiwgaGVhZGVycyk7CkBAIC00MTIsNiArNDE2LDcgQEAKIAlzdHJ1Y3QgY3VybF9zbGlzdCAqaGVhZGVycyA9IE5VTEw7CiAJaW50IHVzZV9nemlwID0gcnBjLT5nemlwX3JlcXVlc3Q7CiAJY2hhciAqZ3ppcF9ib2R5ID0gTlVMTDsKKwlzaXplX3QgZ3ppcF9zaXplID0gMDsKIAlpbnQgZXJyLCBsYXJnZV9yZXF1ZXN0ID0gMDsKIAogCS8qIFRyeSB0byBsb2FkIHRoZSBlbnRpcmUgcmVxdWVzdCwgaWYgd2UgY2FuIGZpdCBpdCBpbnRvIHRoZQpAQCAtNDI5LDI4ICs0MzQsMzEgQEAKIAkJCWJyZWFrOwogCQl9CiAKLQkJbiA9IHBhY2tldF9yZWFkX2xpbmUocnBjLT5vdXQsIGJ1ZiwgbGVmdCk7CisJCW4gPSBwYWNrZXRfcmVhZChycGMtPm91dCwgTlVMTCwgTlVMTCwgYnVmLCBsZWZ0LCAwKTsKIAkJaWYgKCFuKQogCQkJYnJlYWs7CiAJCXJwYy0+bGVuICs9IG47CiAJfQogCiAJaWYgKGxhcmdlX3JlcXVlc3QpIHsKLQkJZXJyID0gcHJvYmVfcnBjKHJwYyk7Ci0JCWlmIChlcnIpCi0JCQlyZXR1cm4gZXJyOworCQlkbyB7CisJCQllcnIgPSBwcm9iZV9ycGMocnBjKTsKKwkJfSB3aGlsZSAoZXJyID09IEhUVFBfUkVBVVRIKTsKKwkJaWYgKGVyciAhPSBIVFRQX09LKQorCQkJcmV0dXJuIC0xOwogCX0KIAorCWhlYWRlcnMgPSBjdXJsX3NsaXN0X2FwcGVuZChoZWFkZXJzLCBycGMtPmhkcl9jb250ZW50X3R5cGUpOworCWhlYWRlcnMgPSBjdXJsX3NsaXN0X2FwcGVuZChoZWFkZXJzLCBycGMtPmhkcl9hY2NlcHQpOworCWhlYWRlcnMgPSBjdXJsX3NsaXN0X2FwcGVuZChoZWFkZXJzLCAiRXhwZWN0OiIpOworCityZXRyeToKIAlzbG90ID0gZ2V0X2FjdGl2ZV9zbG90KCk7CiAKIAljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfTk9CT0RZLCAwKTsKIAljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfUE9TVCwgMSk7CiAJY3VybF9lYXN5X3NldG9wdChzbG90LT5jdXJsLCBDVVJMT1BUX1VSTCwgcnBjLT5zZXJ2aWNlX3VybCk7Ci0JY3VybF9lYXN5X3NldG9wdChzbG90LT5jdXJsLCBDVVJMT1BUX0VOQ09ESU5HLCAiIik7Ci0KLQloZWFkZXJzID0gY3VybF9zbGlzdF9hcHBlbmQoaGVhZGVycywgcnBjLT5oZHJfY29udGVudF90eXBlKTsKLQloZWFkZXJzID0gY3VybF9zbGlzdF9hcHBlbmQoaGVhZGVycywgcnBjLT5oZHJfYWNjZXB0KTsKLQloZWFkZXJzID0gY3VybF9zbGlzdF9hcHBlbmQoaGVhZGVycywgIkV4cGVjdDoiKTsKKwljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfRU5DT0RJTkcsICJnemlwIik7CiAKIAlpZiAobGFyZ2VfcmVxdWVzdCkgewogCQkvKiBUaGUgcmVxdWVzdCBib2R5IGlzIGxhcmdlIGFuZCB0aGUgc2l6ZSBjYW5ub3QgYmUgcHJlZGljdGVkLgpAQCAtNDY5LDI0ICs0NzcsMzIgQEAKIAkJCWZmbHVzaChzdGRlcnIpOwogCQl9CiAKKwl9IGVsc2UgaWYgKGd6aXBfYm9keSkgeworCQkvKgorCQkgKiBJZiB3ZSBhcmUgbG9vcGluZyB0byByZXRyeSBhdXRoZW50aWNhdGlvbiwgdGhlbiB0aGUgcHJldmlvdXMKKwkJICogcnVuIHdpbGwgaGF2ZSBzZXQgdXAgdGhlIGhlYWRlcnMgYW5kIGd6aXAgYnVmZmVyIGFscmVhZHksCisJCSAqIGFuZCB3ZSBqdXN0IG5lZWQgdG8gc2VuZCBpdC4KKwkJICovCisJCWN1cmxfZWFzeV9zZXRvcHQoc2xvdC0+Y3VybCwgQ1VSTE9QVF9QT1NURklFTERTLCBnemlwX2JvZHkpOworCQljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfUE9TVEZJRUxEU0laRSwgZ3ppcF9zaXplKTsKKwogCX0gZWxzZSBpZiAodXNlX2d6aXAgJiYgMTAyNCA8IHJwYy0+bGVuKSB7CiAJCS8qIFRoZSBjbGllbnQgYmFja2VuZCBpc24ndCBnaXZpbmcgdXMgY29tcHJlc3NlZCBkYXRhIHNvCiAJCSAqIHdlIGNhbiB0cnkgdG8gZGVmbGF0ZSBpdCBvdXJzZWx2ZXMsIHRoaXMgbWF5IHNhdmUgb24uCiAJCSAqIHRoZSB0cmFuc2ZlciB0aW1lLgogCQkgKi8KLQkJc2l6ZV90IHNpemU7CiAJCWdpdF96c3RyZWFtIHN0cmVhbTsKIAkJaW50IHJldDsKIAogCQltZW1zZXQoJnN0cmVhbSwgMCwgc2l6ZW9mKHN0cmVhbSkpOwogCQlnaXRfZGVmbGF0ZV9pbml0X2d6aXAoJnN0cmVhbSwgWl9CRVNUX0NPTVBSRVNTSU9OKTsKLQkJc2l6ZSA9IGdpdF9kZWZsYXRlX2JvdW5kKCZzdHJlYW0sIHJwYy0+bGVuKTsKLQkJZ3ppcF9ib2R5ID0geG1hbGxvYyhzaXplKTsKKwkJZ3ppcF9zaXplID0gZ2l0X2RlZmxhdGVfYm91bmQoJnN0cmVhbSwgcnBjLT5sZW4pOworCQlnemlwX2JvZHkgPSB4bWFsbG9jKGd6aXBfc2l6ZSk7CiAKIAkJc3RyZWFtLm5leHRfaW4gPSAodW5zaWduZWQgY2hhciAqKXJwYy0+YnVmOwogCQlzdHJlYW0uYXZhaWxfaW4gPSBycGMtPmxlbjsKIAkJc3RyZWFtLm5leHRfb3V0ID0gKHVuc2lnbmVkIGNoYXIgKilnemlwX2JvZHk7Ci0JCXN0cmVhbS5hdmFpbF9vdXQgPSBzaXplOworCQlzdHJlYW0uYXZhaWxfb3V0ID0gZ3ppcF9zaXplOwogCiAJCXJldCA9IGdpdF9kZWZsYXRlKCZzdHJlYW0sIFpfRklOSVNIKTsKIAkJaWYgKHJldCAhPSBaX1NUUkVBTV9FTkQpCkBAIC00OTYsMTYgKzUxMiwxNiBAQAogCQlpZiAocmV0ICE9IFpfT0spCiAJCQlkaWUoImNhbm5vdCBkZWZsYXRlIHJlcXVlc3Q7IHpsaWIgZW5kIGVycm9yICVkIiwgcmV0KTsKIAotCQlzaXplID0gc3RyZWFtLnRvdGFsX291dDsKKwkJZ3ppcF9zaXplID0gc3RyZWFtLnRvdGFsX291dDsKIAogCQloZWFkZXJzID0gY3VybF9zbGlzdF9hcHBlbmQoaGVhZGVycywgIkNvbnRlbnQtRW5jb2Rpbmc6IGd6aXAiKTsKIAkJY3VybF9lYXN5X3NldG9wdChzbG90LT5jdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFMsIGd6aXBfYm9keSk7Ci0JCWN1cmxfZWFzeV9zZXRvcHQoc2xvdC0+Y3VybCwgQ1VSTE9QVF9QT1NURklFTERTSVpFLCBzaXplKTsKKwkJY3VybF9lYXN5X3NldG9wdChzbG90LT5jdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFNJWkUsIGd6aXBfc2l6ZSk7CiAKIAkJaWYgKG9wdGlvbnMudmVyYm9zaXR5ID4gMSkgewogCQkJZnByaW50ZihzdGRlcnIsICJQT1NUICVzIChnemlwICVsdSB0byAlbHUgYnl0ZXMpXG4iLAogCQkJCXJwYy0+c2VydmljZV9uYW1lLAotCQkJCSh1bnNpZ25lZCBsb25nKXJwYy0+bGVuLCAodW5zaWduZWQgbG9uZylzaXplKTsKKwkJCQkodW5zaWduZWQgbG9uZylycGMtPmxlbiwgKHVuc2lnbmVkIGxvbmcpZ3ppcF9zaXplKTsKIAkJCWZmbHVzaChzdGRlcnIpOwogCQl9CiAJfSBlbHNlIHsKQEAgLTUyNiw2ICs1NDIsMTAgQEAKIAljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfRklMRSwgcnBjKTsKIAogCWVyciA9IHJ1bl9zbG90KHNsb3QpOworCWlmIChlcnIgPT0gSFRUUF9SRUFVVEggJiYgIWxhcmdlX3JlcXVlc3QpCisJCWdvdG8gcmV0cnk7CisJaWYgKGVyciAhPSBIVFRQX09LKQorCQllcnIgPSAtMTsKIAogCWN1cmxfc2xpc3RfZnJlZV9hbGwoaGVhZGVycyk7CiAJZnJlZShnemlwX2JvZHkpOwpAQCAtNTY4LDcgKzU4OCw3IEBACiAJcnBjLT5oZHJfYWNjZXB0ID0gc3RyYnVmX2RldGFjaCgmYnVmLCBOVUxMKTsKIAogCXdoaWxlICghZXJyKSB7Ci0JCWludCBuID0gcGFja2V0X3JlYWRfbGluZShycGMtPm91dCwgcnBjLT5idWYsIHJwYy0+YWxsb2MpOworCQlpbnQgbiA9IHBhY2tldF9yZWFkKHJwYy0+b3V0LCBOVUxMLCBOVUxMLCBycGMtPmJ1ZiwgcnBjLT5hbGxvYywgMCk7CiAJCWlmICghbikKIAkJCWJyZWFrOwogCQlycGMtPnBvcyA9IDA7CkBAIC02NzQsNyArNjk0LDcgQEAKIAogCWVyciA9IHJwY19zZXJ2aWNlKCZycGMsIGhlYWRzKTsKIAlpZiAocnBjLnJlc3VsdC5sZW4pCi0JCXNhZmVfd3JpdGUoMSwgcnBjLnJlc3VsdC5idWYsIHJwYy5yZXN1bHQubGVuKTsKKwkJd3JpdGVfb3JfZGllKDEsIHJwYy5yZXN1bHQuYnVmLCBycGMucmVzdWx0Lmxlbik7CiAJc3RyYnVmX3JlbGVhc2UoJnJwYy5yZXN1bHQpOwogCXN0cmJ1Zl9yZWxlYXNlKCZwcmVhbWJsZSk7CiAJZnJlZShkZXB0aF9hcmcpOwpAQCAtNjgzLDcgKzcwMyw3IEBACiAKIHN0YXRpYyBpbnQgZmV0Y2goaW50IG5yX2hlYWRzLCBzdHJ1Y3QgcmVmICoqdG9fZmV0Y2gpCiB7Ci0Jc3RydWN0IGRpc2NvdmVyeSAqZCA9IGRpc2NvdmVyX3JlZnMoImdpdC11cGxvYWQtcGFjayIpOworCXN0cnVjdCBkaXNjb3ZlcnkgKmQgPSBkaXNjb3Zlcl9yZWZzKCJnaXQtdXBsb2FkLXBhY2siLCAwKTsKIAlpZiAoZC0+cHJvdG9fZ2l0KQogCQlyZXR1cm4gZmV0Y2hfZ2l0KGQsIG5yX2hlYWRzLCB0b19mZXRjaCk7CiAJZWxzZQpAQCAtNzk0LDcgKzgxNCw3IEBACiAKIAllcnIgPSBycGNfc2VydmljZSgmcnBjLCBoZWFkcyk7CiAJaWYgKHJwYy5yZXN1bHQubGVuKQotCQlzYWZlX3dyaXRlKDEsIHJwYy5yZXN1bHQuYnVmLCBycGMucmVzdWx0Lmxlbik7CisJCXdyaXRlX29yX2RpZSgxLCBycGMucmVzdWx0LmJ1ZiwgcnBjLnJlc3VsdC5sZW4pOwogCXN0cmJ1Zl9yZWxlYXNlKCZycGMucmVzdWx0KTsKIAlmcmVlKGFyZ3YpOwogCXJldHVybiBlcnI7CkBAIC04MDIsNyArODIyLDcgQEAKIAogc3RhdGljIGludCBwdXNoKGludCBucl9zcGVjLCBjaGFyICoqc3BlY3MpCiB7Ci0Jc3RydWN0IGRpc2NvdmVyeSAqaGVhZHMgPSBkaXNjb3Zlcl9yZWZzKCJnaXQtcmVjZWl2ZS1wYWNrIik7CisJc3RydWN0IGRpc2NvdmVyeSAqaGVhZHMgPSBkaXNjb3Zlcl9yZWZzKCJnaXQtcmVjZWl2ZS1wYWNrIiwgMSk7CiAJaW50IHJldDsKIAogCWlmIChoZWFkcy0+cHJvdG9fZ2l0KQpkaWZmIC0tZ2l0IGEvcmVtb3RlLXRlc3Rzdm4uYyBiL3JlbW90ZS10ZXN0c3ZuLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRkZjExYwotLS0gL2Rldi9udWxsCisrKyBiL3JlbW90ZS10ZXN0c3ZuLmMKQEAgLTAsMCArMSwzNDQgQEAKKyNpbmNsdWRlICJjYWNoZS5oIgorI2luY2x1ZGUgInJlbW90ZS5oIgorI2luY2x1ZGUgInN0cmJ1Zi5oIgorI2luY2x1ZGUgInVybC5oIgorI2luY2x1ZGUgImV4ZWNfY21kLmgiCisjaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKKyNpbmNsdWRlICJ2Y3Mtc3ZuL3N2bmR1bXAuaCIKKyNpbmNsdWRlICJub3Rlcy5oIgorI2luY2x1ZGUgImFyZ3YtYXJyYXkuaCIKKworc3RhdGljIGNvbnN0IGNoYXIgKnVybDsKK3N0YXRpYyBpbnQgZHVtcF9mcm9tX2ZpbGU7CitzdGF0aWMgY29uc3QgY2hhciAqcHJpdmF0ZV9yZWY7CitzdGF0aWMgY29uc3QgY2hhciAqcmVtb3RlX3JlZiA9ICJyZWZzL2hlYWRzL21hc3RlciI7CitzdGF0aWMgY29uc3QgY2hhciAqbWFya3NmaWxlbmFtZSwgKm5vdGVzX3JlZjsKK3N0cnVjdCByZXZfbm90ZSB7IHVuc2lnbmVkIGludCByZXZfbnI7IH07CisKK3N0YXRpYyBpbnQgY21kX2NhcGFiaWxpdGllcyhjb25zdCBjaGFyICpsaW5lKTsKK3N0YXRpYyBpbnQgY21kX2ltcG9ydChjb25zdCBjaGFyICpsaW5lKTsKK3N0YXRpYyBpbnQgY21kX2xpc3QoY29uc3QgY2hhciAqbGluZSk7CisKK3R5cGVkZWYgaW50ICgqaW5wdXRfY29tbWFuZF9oYW5kbGVyKShjb25zdCBjaGFyICopOworc3RydWN0IGlucHV0X2NvbW1hbmRfZW50cnkgeworCWNvbnN0IGNoYXIgKm5hbWU7CisJaW5wdXRfY29tbWFuZF9oYW5kbGVyIGZuOworCXVuc2lnbmVkIGNoYXIgYmF0Y2hhYmxlOwkvKiB3aGV0aGVyIHRoZSBjb21tYW5kIHN0YXJ0cyBvciBpcyBwYXJ0IG9mIGEgYmF0Y2ggKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW5wdXRfY29tbWFuZF9lbnRyeSBpbnB1dF9jb21tYW5kX2xpc3RbXSA9IHsKKwl7ICJjYXBhYmlsaXRpZXMiLCBjbWRfY2FwYWJpbGl0aWVzLCAwIH0sCisJeyAiaW1wb3J0IiwgY21kX2ltcG9ydCwgMSB9LAorCXsgImxpc3QiLCBjbWRfbGlzdCwgMCB9LAorCXsgTlVMTCwgTlVMTCB9Cit9OworCitzdGF0aWMgaW50IGNtZF9jYXBhYmlsaXRpZXMoY29uc3QgY2hhciAqbGluZSkKK3sKKwlwcmludGYoImltcG9ydFxuIik7CisJcHJpbnRmKCJiaWRpLWltcG9ydFxuIik7CisJcHJpbnRmKCJyZWZzcGVjICVzOiVzXG5cbiIsIHJlbW90ZV9yZWYsIHByaXZhdGVfcmVmKTsKKwlmZmx1c2goc3Rkb3V0KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdGVybWluYXRlX2JhdGNoKHZvaWQpCit7CisJLyogdGVybWluYXRlIGEgY3VycmVudCBiYXRjaCdzIGZhc3QtaW1wb3J0IHN0cmVhbSAqLworCXByaW50ZigiZG9uZVxuIik7CisJZmZsdXNoKHN0ZG91dCk7Cit9CisKKy8qIE5PVEU6ICdyZWYnIHJlZmVycyB0byBhIGdpdCByZWZlcmVuY2UsIHdoaWxlICdyZXYnIHJlZmVycyB0byBhIHN2biByZXZpc2lvbi4gKi8KK3N0YXRpYyBjaGFyICpyZWFkX3JlZl9ub3RlKGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMVsyMF0pCit7CisJY29uc3QgdW5zaWduZWQgY2hhciAqbm90ZV9zaGExOworCWNoYXIgKm1zZyA9IE5VTEw7CisJdW5zaWduZWQgbG9uZyBtc2dsZW47CisJZW51bSBvYmplY3RfdHlwZSB0eXBlOworCisJaW5pdF9ub3RlcyhOVUxMLCBub3Rlc19yZWYsIE5VTEwsIDApOworCWlmICghKG5vdGVfc2hhMSA9IGdldF9ub3RlKE5VTEwsIHNoYTEpKSkKKwkJcmV0dXJuIE5VTEw7CS8qIG5vdGUgdHJlZSBub3QgZm91bmQgKi8KKwlpZiAoIShtc2cgPSByZWFkX3NoYTFfZmlsZShub3RlX3NoYTEsICZ0eXBlLCAmbXNnbGVuKSkpCisJCWVycm9yKCJFbXB0eSBub3RlcyB0cmVlLiAlcyIsIG5vdGVzX3JlZik7CisJZWxzZSBpZiAoIW1zZ2xlbiB8fCB0eXBlICE9IE9CSl9CTE9CKSB7CisJCWVycm9yKCJOb3RlIGNvbnRhaW5zIHVudXNhYmxlIGNvbnRlbnQuICIKKwkJCSJJcyBzb21ldGhpbmcgZWxzZSB1c2luZyB0aGlzIG5vdGVzIHRyZWU/ICVzIiwgbm90ZXNfcmVmKTsKKwkJZnJlZShtc2cpOworCQltc2cgPSBOVUxMOworCX0KKwlmcmVlX25vdGVzKE5VTEwpOworCXJldHVybiBtc2c7Cit9CisKK3N0YXRpYyBpbnQgcGFyc2VfcmV2X25vdGUoY29uc3QgY2hhciAqbXNnLCBzdHJ1Y3QgcmV2X25vdGUgKnJlcykKK3sKKwljb25zdCBjaGFyICprZXksICp2YWx1ZSwgKmVuZDsKKwlzaXplX3QgbGVuOworCisJd2hpbGUgKCptc2cpIHsKKwkJZW5kID0gc3RyY2hyKG1zZywgJ1xuJyk7CisJCWxlbiA9IGVuZCA/IGVuZCAtIG1zZyA6IHN0cmxlbihtc2cpOworCisJCWtleSA9ICJSZXZpc2lvbi1udW1iZXI6ICI7CisJCWlmICghcHJlZml4Y21wKG1zZywga2V5KSkgeworCQkJbG9uZyBpOworCQkJY2hhciAqZW5kOworCQkJdmFsdWUgPSBtc2cgKyBzdHJsZW4oa2V5KTsKKwkJCWkgPSBzdHJ0b2wodmFsdWUsICZlbmQsIDApOworCQkJaWYgKGVuZCA9PSB2YWx1ZSB8fCBpIDwgMCB8fCBpID4gVUlOVDMyX01BWCkKKwkJCQlyZXR1cm4gLTE7CisJCQlyZXMtPnJldl9uciA9IGk7CisJCQlyZXR1cm4gMDsKKwkJfQorCQltc2cgKz0gbGVuICsgMTsKKwl9CisJLyogZGlkbid0IGZpbmQgaXQgKi8KKwlyZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbnQgbm90ZTJtYXJrX2NiKGNvbnN0IHVuc2lnbmVkIGNoYXIgKm9iamVjdF9zaGExLAorCQljb25zdCB1bnNpZ25lZCBjaGFyICpub3RlX3NoYTEsIGNoYXIgKm5vdGVfcGF0aCwKKwkJdm9pZCAqY2JfZGF0YSkKK3sKKwlGSUxFICpmaWxlID0gKEZJTEUgKiljYl9kYXRhOworCWNoYXIgKm1zZzsKKwl1bnNpZ25lZCBsb25nIG1zZ2xlbjsKKwllbnVtIG9iamVjdF90eXBlIHR5cGU7CisJc3RydWN0IHJldl9ub3RlIG5vdGU7CisKKwlpZiAoIShtc2cgPSByZWFkX3NoYTFfZmlsZShub3RlX3NoYTEsICZ0eXBlLCAmbXNnbGVuKSkgfHwKKwkJCSFtc2dsZW4gfHwgdHlwZSAhPSBPQkpfQkxPQikgeworCQlmcmVlKG1zZyk7CisJCXJldHVybiAxOworCX0KKwlpZiAocGFyc2VfcmV2X25vdGUobXNnLCAmbm90ZSkpCisJCXJldHVybiAyOworCWlmIChmcHJpbnRmKGZpbGUsICI6JWQgJXNcbiIsIG5vdGUucmV2X25yLCBzaGExX3RvX2hleChvYmplY3Rfc2hhMSkpIDwgMSkKKwkJcmV0dXJuIDM7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHJlZ2VuZXJhdGVfbWFya3Modm9pZCkKK3sKKwlpbnQgcmV0OworCUZJTEUgKm1hcmtzZmlsZSA9IGZvcGVuKG1hcmtzZmlsZW5hbWUsICJ3KyIpOworCisJaWYgKCFtYXJrc2ZpbGUpCisJCWRpZV9lcnJubygiQ291bGRuJ3QgY3JlYXRlIG1hcmsgZmlsZSAlcy4iLCBtYXJrc2ZpbGVuYW1lKTsKKwlyZXQgPSBmb3JfZWFjaF9ub3RlKE5VTEwsIDAsIG5vdGUybWFya19jYiwgbWFya3NmaWxlKTsKKwlpZiAocmV0KQorCQlkaWUoIlJlZ2VuZXJhdGlvbiBvZiBtYXJrcyBmYWlsZWQsIHJldHVybmVkICVkLiIsIHJldCk7CisJZmNsb3NlKG1hcmtzZmlsZSk7Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrX29yX3JlZ2VuZXJhdGVfbWFya3MoaW50IGxhdGVzdHJldikKK3sKKwlGSUxFICptYXJrc2ZpbGU7CisJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBzdHJidWYgbGluZSA9IFNUUkJVRl9JTklUOworCWludCBmb3VuZCA9IDA7CisKKwlpZiAobGF0ZXN0cmV2IDwgMSkKKwkJcmV0dXJuOworCisJaW5pdF9ub3RlcyhOVUxMLCBub3Rlc19yZWYsIE5VTEwsIDApOworCW1hcmtzZmlsZSA9IGZvcGVuKG1hcmtzZmlsZW5hbWUsICJyIik7CisJaWYgKCFtYXJrc2ZpbGUpIHsKKwkJcmVnZW5lcmF0ZV9tYXJrcygpOworCQltYXJrc2ZpbGUgPSBmb3BlbihtYXJrc2ZpbGVuYW1lLCAiciIpOworCQlpZiAoIW1hcmtzZmlsZSkKKwkJCWRpZV9lcnJubygiY2Fubm90IHJlYWQgbWFya3MgZmlsZSAlcyEiLCBtYXJrc2ZpbGVuYW1lKTsKKwkJZmNsb3NlKG1hcmtzZmlsZSk7CisJfSBlbHNlIHsKKwkJc3RyYnVmX2FkZGYoJnNiLCAiOiVkICIsIGxhdGVzdHJldik7CisJCXdoaWxlIChzdHJidWZfZ2V0bGluZSgmbGluZSwgbWFya3NmaWxlLCAnXG4nKSAhPSBFT0YpIHsKKwkJCWlmICghcHJlZml4Y21wKGxpbmUuYnVmLCBzYi5idWYpKSB7CisJCQkJZm91bmQrKzsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlmY2xvc2UobWFya3NmaWxlKTsKKwkJaWYgKCFmb3VuZCkKKwkJCXJlZ2VuZXJhdGVfbWFya3MoKTsKKwl9CisJZnJlZV9ub3RlcyhOVUxMKTsKKwlzdHJidWZfcmVsZWFzZSgmc2IpOworCXN0cmJ1Zl9yZWxlYXNlKCZsaW5lKTsKK30KKworc3RhdGljIGludCBjbWRfaW1wb3J0KGNvbnN0IGNoYXIgKmxpbmUpCit7CisJaW50IGNvZGU7CisJaW50IGR1bXBpbl9mZDsKKwljaGFyICpub3RlX21zZzsKKwl1bnNpZ25lZCBjaGFyIGhlYWRfc2hhMVsyMF07CisJdW5zaWduZWQgaW50IHN0YXJ0cmV2OworCXN0cnVjdCBhcmd2X2FycmF5IHN2bmR1bXBfYXJndiA9IEFSR1ZfQVJSQVlfSU5JVDsKKwlzdHJ1Y3QgY2hpbGRfcHJvY2VzcyBzdm5kdW1wX3Byb2M7CisKKwlpZiAocmVhZF9yZWYocHJpdmF0ZV9yZWYsIGhlYWRfc2hhMSkpCisJCXN0YXJ0cmV2ID0gMDsKKwllbHNlIHsKKwkJbm90ZV9tc2cgPSByZWFkX3JlZl9ub3RlKGhlYWRfc2hhMSk7CisJCWlmKG5vdGVfbXNnID09IE5VTEwpIHsKKwkJCXdhcm5pbmcoIk5vIG5vdGUgZm91bmQgZm9yICVzLiIsIHByaXZhdGVfcmVmKTsKKwkJCXN0YXJ0cmV2ID0gMDsKKwkJfSBlbHNlIHsKKwkJCXN0cnVjdCByZXZfbm90ZSBub3RlID0geyAwIH07CisJCQlpZiAocGFyc2VfcmV2X25vdGUobm90ZV9tc2csICZub3RlKSkKKwkJCQlkaWUoIlJldmlzaW9uIG51bWJlciBjb3VsZG4ndCBiZSBwYXJzZWQgZnJvbSBub3RlLiIpOworCQkJc3RhcnRyZXYgPSBub3RlLnJldl9uciArIDE7CisJCQlmcmVlKG5vdGVfbXNnKTsKKwkJfQorCX0KKwljaGVja19vcl9yZWdlbmVyYXRlX21hcmtzKHN0YXJ0cmV2IC0gMSk7CisKKwlpZiAoZHVtcF9mcm9tX2ZpbGUpIHsKKwkJZHVtcGluX2ZkID0gb3Blbih1cmwsIE9fUkRPTkxZKTsKKwkJaWYoZHVtcGluX2ZkIDwgMCkKKwkJCWRpZV9lcnJubygiQ291bGRuJ3Qgb3BlbiBzdm4gZHVtcCBmaWxlICVzLiIsIHVybCk7CisJfSBlbHNlIHsKKwkJbWVtc2V0KCZzdm5kdW1wX3Byb2MsIDAsIHNpemVvZihzdHJ1Y3QgY2hpbGRfcHJvY2VzcykpOworCQlzdm5kdW1wX3Byb2Mub3V0ID0gLTE7CisJCWFyZ3ZfYXJyYXlfcHVzaCgmc3ZuZHVtcF9hcmd2LCAic3ZucmR1bXAiKTsKKwkJYXJndl9hcnJheV9wdXNoKCZzdm5kdW1wX2FyZ3YsICJkdW1wIik7CisJCWFyZ3ZfYXJyYXlfcHVzaCgmc3ZuZHVtcF9hcmd2LCB1cmwpOworCQlhcmd2X2FycmF5X3B1c2hmKCZzdm5kdW1wX2FyZ3YsICItciV1OkhFQUQiLCBzdGFydHJldik7CisJCXN2bmR1bXBfcHJvYy5hcmd2ID0gc3ZuZHVtcF9hcmd2LmFyZ3Y7CisKKwkJY29kZSA9IHN0YXJ0X2NvbW1hbmQoJnN2bmR1bXBfcHJvYyk7CisJCWlmIChjb2RlKQorCQkJZGllKCJVbmFibGUgdG8gc3RhcnQgJXMsIGNvZGUgJWQiLCBzdm5kdW1wX3Byb2MuYXJndlswXSwgY29kZSk7CisJCWR1bXBpbl9mZCA9IHN2bmR1bXBfcHJvYy5vdXQ7CisJfQorCS8qIHNldHVwIG1hcmtzIGZpbGUgaW1wb3J0L2V4cG9ydCAqLworCXByaW50ZigiZmVhdHVyZSBpbXBvcnQtbWFya3MtaWYtZXhpc3RzPSVzXG4iCisJCQkiZmVhdHVyZSBleHBvcnQtbWFya3M9JXNcbiIsIG1hcmtzZmlsZW5hbWUsIG1hcmtzZmlsZW5hbWUpOworCisJc3ZuZHVtcF9pbml0X2ZkKGR1bXBpbl9mZCwgU1RESU5fRklMRU5PKTsKKwlzdm5kdW1wX3JlYWQodXJsLCBwcml2YXRlX3JlZiwgbm90ZXNfcmVmKTsKKwlzdm5kdW1wX2RlaW5pdCgpOworCXN2bmR1bXBfcmVzZXQoKTsKKworCWNsb3NlKGR1bXBpbl9mZCk7CisJaWYgKCFkdW1wX2Zyb21fZmlsZSkgeworCQljb2RlID0gZmluaXNoX2NvbW1hbmQoJnN2bmR1bXBfcHJvYyk7CisJCWlmIChjb2RlKQorCQkJd2FybmluZygiJXMsIHJldHVybmVkICVkIiwgc3ZuZHVtcF9wcm9jLmFyZ3ZbMF0sIGNvZGUpOworCQlhcmd2X2FycmF5X2NsZWFyKCZzdm5kdW1wX2FyZ3YpOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNtZF9saXN0KGNvbnN0IGNoYXIgKmxpbmUpCit7CisJcHJpbnRmKCI/ICVzXG5cbiIsIHJlbW90ZV9yZWYpOworCWZmbHVzaChzdGRvdXQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRvX2NvbW1hbmQoc3RydWN0IHN0cmJ1ZiAqbGluZSkKK3sKKwljb25zdCBzdHJ1Y3QgaW5wdXRfY29tbWFuZF9lbnRyeSAqcCA9IGlucHV0X2NvbW1hbmRfbGlzdDsKKwlzdGF0aWMgc3RydWN0IHN0cmluZ19saXN0IGJhdGNobGluZXMgPSBTVFJJTkdfTElTVF9JTklUX0RVUDsKKwlzdGF0aWMgY29uc3Qgc3RydWN0IGlucHV0X2NvbW1hbmRfZW50cnkgKmJhdGNoX2NtZDsKKwkvKgorCSAqIGNvbW1hbmRzIGNhbiBiZSBncm91cGVkIHRvZ2V0aGVyIGluIGEgYmF0Y2guCisJICogQmF0Y2hlcyBhcmUgZW5kZWQgYnkgXG4uIElmIG5vIGJhdGNoIGlzIGFjdGl2ZSB0aGUgcHJvZ3JhbSBlbmRzLgorCSAqIER1cmluZyBhIGJhdGNoIGFsbCBsaW5lcyBhcmUgYnVmZmVyZWQgYW5kIHBhc3NlZCB0byB0aGUgaGFuZGxlciBmdW5jdGlvbgorCSAqIHdoZW4gdGhlIGJhdGNoIGlzIHRlcm1pbmF0ZWQuCisJICovCisJaWYgKGxpbmUtPmxlbiA9PSAwKSB7CisJCWlmIChiYXRjaF9jbWQpIHsKKwkJCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOworCQkJZm9yX2VhY2hfc3RyaW5nX2xpc3RfaXRlbShpdGVtLCAmYmF0Y2hsaW5lcykKKwkJCQliYXRjaF9jbWQtPmZuKGl0ZW0tPnN0cmluZyk7CisJCQl0ZXJtaW5hdGVfYmF0Y2goKTsKKwkJCWJhdGNoX2NtZCA9IE5VTEw7CisJCQlzdHJpbmdfbGlzdF9jbGVhcigmYmF0Y2hsaW5lcywgMCk7CisJCQlyZXR1cm4gMDsJLyogZW5kIG9mIHRoZSBiYXRjaCwgY29udGludWUgcmVhZGluZyBvdGhlciBjb21tYW5kcy4gKi8KKwkJfQorCQlyZXR1cm4gMTsJLyogZW5kIG9mIGNvbW1hbmQgc3RyZWFtLCBxdWl0ICovCisJfQorCWlmIChiYXRjaF9jbWQpIHsKKwkJaWYgKHByZWZpeGNtcChiYXRjaF9jbWQtPm5hbWUsIGxpbmUtPmJ1ZikpCisJCQlkaWUoIkFjdGl2ZSAlcyBiYXRjaCBpbnRlcnJ1cHRlZCBieSAlcyIsIGJhdGNoX2NtZC0+bmFtZSwgbGluZS0+YnVmKTsKKwkJLyogYnVmZmVyIGJhdGNoIGxpbmVzICovCisJCXN0cmluZ19saXN0X2FwcGVuZCgmYmF0Y2hsaW5lcywgbGluZS0+YnVmKTsKKwkJcmV0dXJuIDA7CisJfQorCisJZm9yIChwID0gaW5wdXRfY29tbWFuZF9saXN0OyBwLT5uYW1lOyBwKyspIHsKKwkJaWYgKCFwcmVmaXhjbXAobGluZS0+YnVmLCBwLT5uYW1lKSAmJiAoc3RybGVuKHAtPm5hbWUpID09IGxpbmUtPmxlbiB8fAorCQkJCWxpbmUtPmJ1ZltzdHJsZW4ocC0+bmFtZSldID09ICcgJykpIHsKKwkJCWlmIChwLT5iYXRjaGFibGUpIHsKKwkJCQliYXRjaF9jbWQgPSBwOworCQkJCXN0cmluZ19saXN0X2FwcGVuZCgmYmF0Y2hsaW5lcywgbGluZS0+YnVmKTsKKwkJCQlyZXR1cm4gMDsKKwkJCX0KKwkJCXJldHVybiBwLT5mbihsaW5lLT5idWYpOworCQl9CisJfQorCWRpZSgiVW5rbm93biBjb21tYW5kICclcydcbiIsIGxpbmUtPmJ1Zik7CisJcmV0dXJuIDA7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKK3sKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklULCB1cmxfc2IgPSBTVFJCVUZfSU5JVCwKKwkJCXByaXZhdGVfcmVmX3NiID0gU1RSQlVGX0lOSVQsIG1hcmtzZmlsZW5hbWVfc2IgPSBTVFJCVUZfSU5JVCwKKwkJCW5vdGVzX3JlZl9zYiA9IFNUUkJVRl9JTklUOworCXN0YXRpYyBzdHJ1Y3QgcmVtb3RlICpyZW1vdGU7CisJY29uc3QgY2hhciAqdXJsX2luOworCisJZ2l0X2V4dHJhY3RfYXJndjBfcGF0aChhcmd2WzBdKTsKKwlzZXR1cF9naXRfZGlyZWN0b3J5KCk7CisJaWYgKGFyZ2MgPCAyIHx8IGFyZ2MgPiAzKSB7CisJCXVzYWdlKCJnaXQtcmVtb3RlLXN2biA8cmVtb3RlLW5hbWU+IFs8dXJsPl0iKTsKKwkJcmV0dXJuIDE7CisJfQorCisJcmVtb3RlID0gcmVtb3RlX2dldChhcmd2WzFdKTsKKwl1cmxfaW4gPSAoYXJnYyA9PSAzKSA/IGFyZ3ZbMl0gOiByZW1vdGUtPnVybFswXTsKKworCWlmICghcHJlZml4Y21wKHVybF9pbiwgImZpbGU6Ly8iKSkgeworCQlkdW1wX2Zyb21fZmlsZSA9IDE7CisJCXVybCA9IHVybF9kZWNvZGUodXJsX2luICsgc2l6ZW9mKCJmaWxlOi8vIiktMSk7CisJfSBlbHNlIHsKKwkJZHVtcF9mcm9tX2ZpbGUgPSAwOworCQllbmRfdXJsX3dpdGhfc2xhc2goJnVybF9zYiwgdXJsX2luKTsKKwkJdXJsID0gdXJsX3NiLmJ1ZjsKKwl9CisKKwlzdHJidWZfYWRkZigmcHJpdmF0ZV9yZWZfc2IsICJyZWZzL3N2bi8lcy9tYXN0ZXIiLCByZW1vdGUtPm5hbWUpOworCXByaXZhdGVfcmVmID0gcHJpdmF0ZV9yZWZfc2IuYnVmOworCisJc3RyYnVmX2FkZGYoJm5vdGVzX3JlZl9zYiwgInJlZnMvbm90ZXMvJXMvcmV2cyIsIHJlbW90ZS0+bmFtZSk7CisJbm90ZXNfcmVmID0gbm90ZXNfcmVmX3NiLmJ1ZjsKKworCXN0cmJ1Zl9hZGRmKCZtYXJrc2ZpbGVuYW1lX3NiLCAiJXMvaW5mby9mYXN0LWltcG9ydC9yZW1vdGUtc3ZuLyVzLm1hcmtzIiwKKwkJZ2V0X2dpdF9kaXIoKSwgcmVtb3RlLT5uYW1lKTsKKwltYXJrc2ZpbGVuYW1lID0gbWFya3NmaWxlbmFtZV9zYi5idWY7CisKKwl3aGlsZSAoMSkgeworCQlpZiAoc3RyYnVmX2dldGxpbmUoJmJ1Ziwgc3RkaW4sICdcbicpID09IEVPRikgeworCQkJaWYgKGZlcnJvcihzdGRpbikpCisJCQkJZGllKCJFcnJvciByZWFkaW5nIGNvbW1hbmQgc3RyZWFtIik7CisJCQllbHNlCisJCQkJZGllKCJVbmV4cGVjdGVkIGVuZCBvZiBjb21tYW5kIHN0cmVhbSIpOworCQl9CisJCWlmIChkb19jb21tYW5kKCZidWYpKQorCQkJYnJlYWs7CisJCXN0cmJ1Zl9yZXNldCgmYnVmKTsKKwl9CisKKwlzdHJidWZfcmVsZWFzZSgmYnVmKTsKKwlzdHJidWZfcmVsZWFzZSgmdXJsX3NiKTsKKwlzdHJidWZfcmVsZWFzZSgmcHJpdmF0ZV9yZWZfc2IpOworCXN0cmJ1Zl9yZWxlYXNlKCZub3Rlc19yZWZfc2IpOworCXN0cmJ1Zl9yZWxlYXNlKCZtYXJrc2ZpbGVuYW1lX3NiKTsKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3JlbW90ZS5jIGIvcmVtb3RlLmMKaW5kZXggNjgzMzUzOC4uNjhlYjk5YiAxMDA2NDQKLS0tIGEvcmVtb3RlLmMKKysrIGIvcmVtb3RlLmMKQEAgLTE1LDYgKzE1LDcgQEAKIAkwLAogCTEsCiAJMCwKKwkwLAogCSJyZWZzL3RhZ3MvKiIsCiAJInJlZnMvdGFncy8qIgogfTsKQEAgLTQ4LDYgKzQ5LDcgQEAKIAogc3RhdGljIHN0cnVjdCBicmFuY2ggKmN1cnJlbnRfYnJhbmNoOwogc3RhdGljIGNvbnN0IGNoYXIgKmRlZmF1bHRfcmVtb3RlX25hbWU7CitzdGF0aWMgY29uc3QgY2hhciAqcHVzaHJlbW90ZV9uYW1lOwogc3RhdGljIGludCBleHBsaWNpdF9kZWZhdWx0X3JlbW90ZV9uYW1lOwogCiBzdGF0aWMgc3RydWN0IHJld3JpdGVzIHJld3JpdGVzOwpAQCAtMzU2LDEzICszNTgsMTYgQEAKIAkJCXJldHVybiAwOwogCQlicmFuY2ggPSBtYWtlX2JyYW5jaChuYW1lLCBzdWJrZXkgLSBuYW1lKTsKIAkJaWYgKCFzdHJjbXAoc3Via2V5LCAiLnJlbW90ZSIpKSB7Ci0JCQlpZiAoIXZhbHVlKQotCQkJCXJldHVybiBjb25maWdfZXJyb3Jfbm9uYm9vbChrZXkpOwotCQkJYnJhbmNoLT5yZW1vdGVfbmFtZSA9IHhzdHJkdXAodmFsdWUpOworCQkJaWYgKGdpdF9jb25maWdfc3RyaW5nKCZicmFuY2gtPnJlbW90ZV9uYW1lLCBrZXksIHZhbHVlKSkKKwkJCQlyZXR1cm4gLTE7CiAJCQlpZiAoYnJhbmNoID09IGN1cnJlbnRfYnJhbmNoKSB7CiAJCQkJZGVmYXVsdF9yZW1vdGVfbmFtZSA9IGJyYW5jaC0+cmVtb3RlX25hbWU7CiAJCQkJZXhwbGljaXRfZGVmYXVsdF9yZW1vdGVfbmFtZSA9IDE7CiAJCQl9CisJCX0gZWxzZSBpZiAoIXN0cmNtcChzdWJrZXksICIucHVzaHJlbW90ZSIpKSB7CisJCQlpZiAoYnJhbmNoID09IGN1cnJlbnRfYnJhbmNoKQorCQkJCWlmIChnaXRfY29uZmlnX3N0cmluZygmcHVzaHJlbW90ZV9uYW1lLCBrZXksIHZhbHVlKSkKKwkJCQkJcmV0dXJuIC0xOwogCQl9IGVsc2UgaWYgKCFzdHJjbXAoc3Via2V5LCAiLm1lcmdlIikpIHsKIAkJCWlmICghdmFsdWUpCiAJCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKGtleSk7CkBAIC0zODgsOSArMzkzLDE2IEBACiAJCQlhZGRfaW5zdGVhZF9vZihyZXdyaXRlLCB4c3RyZHVwKHZhbHVlKSk7CiAJCX0KIAl9CisKIAlpZiAocHJlZml4Y21wKGtleSwgICJyZW1vdGUuIikpCiAJCXJldHVybiAwOwogCW5hbWUgPSBrZXkgKyA3OworCisJLyogSGFuZGxlIHJlbW90ZS4qIHZhcmlhYmxlcyAqLworCWlmICghc3RyY21wKG5hbWUsICJwdXNoZGVmYXVsdCIpKQorCQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJnB1c2hyZW1vdGVfbmFtZSwga2V5LCB2YWx1ZSk7CisKKwkvKiBIYW5kbGUgcmVtb3RlLjxuYW1lPi4qIHZhcmlhYmxlcyAqLwogCWlmICgqbmFtZSA9PSAnLycpIHsKIAkJd2FybmluZygiQ29uZmlnIHJlbW90ZSBzaG9ydGhhbmQgY2Fubm90IGJlZ2luIHdpdGggJy8nOiAlcyIsCiAJCQluYW1lKTsKQEAgLTUzOCw3ICs1NTAsNyBAQAogCiAJCS8qCiAJCSAqIEJlZm9yZSBnb2luZyBvbiwgc3BlY2lhbCBjYXNlICI6IiAob3IgIis6IikgYXMgYSByZWZzcGVjCi0JCSAqIGZvciBtYXRjaGluZyByZWZzLgorCQkgKiBmb3IgcHVzaGluZyBtYXRjaGluZyByZWZzLgogCQkgKi8KIAkJaWYgKCFmZXRjaCAmJiByaHMgPT0gbGhzICYmIHJoc1sxXSA9PSAnXDAnKSB7CiAJCQlyc1tpXS5tYXRjaGluZyA9IDE7CkBAIC01NjUsMjYgKzU3NywyNSBAQAogCQlmbGFncyA9IFJFRk5BTUVfQUxMT1dfT05FTEVWRUwgfCAoaXNfZ2xvYiA/IFJFRk5BTUVfUkVGU1BFQ19QQVRURVJOIDogMCk7CiAKIAkJaWYgKGZldGNoKSB7Ci0JCQkvKgotCQkJICogTEhTCi0JCQkgKiAtIGVtcHR5IGlzIGFsbG93ZWQ7IGl0IG1lYW5zIEhFQUQuCi0JCQkgKiAtIG90aGVyd2lzZSBpdCBtdXN0IGJlIGEgdmFsaWQgbG9va2luZyByZWYuCi0JCQkgKi8KKwkJCXVuc2lnbmVkIGNoYXIgdW51c2VkWzQwXTsKKworCQkJLyogTEhTICovCiAJCQlpZiAoISpyc1tpXS5zcmMpCi0JCQkJOyAvKiBlbXB0eSBpcyBvayAqLwotCQkJZWxzZSBpZiAoY2hlY2tfcmVmbmFtZV9mb3JtYXQocnNbaV0uc3JjLCBmbGFncykpCisJCQkJOyAvKiBlbXB0eSBpcyBvazsgaXQgbWVhbnMgIkhFQUQiICovCisJCQllbHNlIGlmIChsbGVuID09IDQwICYmICFnZXRfc2hhMV9oZXgocnNbaV0uc3JjLCB1bnVzZWQpKQorCQkJCXJzW2ldLmV4YWN0X3NoYTEgPSAxOyAvKiBvayAqLworCQkJZWxzZSBpZiAoIWNoZWNrX3JlZm5hbWVfZm9ybWF0KHJzW2ldLnNyYywgZmxhZ3MpKQorCQkJCTsgLyogdmFsaWQgbG9va2luZyByZWYgaXMgb2sgKi8KKwkJCWVsc2UKIAkJCQlnb3RvIGludmFsaWQ7Ci0JCQkvKgotCQkJICogUkhTCi0JCQkgKiAtIG1pc3NpbmcgaXMgb2ssIGFuZCBpcyBzYW1lIGFzIGVtcHR5LgotCQkJICogLSBlbXB0eSBpcyBvazsgaXQgbWVhbnMgbm90IHRvIHN0b3JlLgotCQkJICogLSBvdGhlcndpc2UgaXQgbXVzdCBiZSBhIHZhbGlkIGxvb2tpbmcgcmVmLgotCQkJICovCisJCQkvKiBSSFMgKi8KIAkJCWlmICghcnNbaV0uZHN0KQotCQkJCTsgLyogb2sgKi8KKwkJCQk7IC8qIG1pc3NpbmcgaXMgb2s7IGl0IGlzIHRoZSBzYW1lIGFzIGVtcHR5ICovCiAJCQllbHNlIGlmICghKnJzW2ldLmRzdCkKLQkJCQk7IC8qIG9rICovCi0JCQllbHNlIGlmIChjaGVja19yZWZuYW1lX2Zvcm1hdChyc1tpXS5kc3QsIGZsYWdzKSkKKwkJCQk7IC8qIGVtcHR5IGlzIG9rOyBpdCBtZWFucyAiZG8gbm90IHN0b3JlIiAqLworCQkJZWxzZSBpZiAoIWNoZWNrX3JlZm5hbWVfZm9ybWF0KHJzW2ldLmRzdCwgZmxhZ3MpKQorCQkJCTsgLyogdmFsaWQgbG9va2luZyByZWYgaXMgb2sgKi8KKwkJCWVsc2UKIAkJCQlnb3RvIGludmFsaWQ7CiAJCX0gZWxzZSB7CiAJCQkvKgpAQCAtNjcxLDE3ICs2ODIsMjEgQEAKIAlyZXR1cm4gIXN0cmNocihuYW1lLCAnLycpOyAvKiBubyBzbGFzaCAqLwogfQogCi1zdHJ1Y3QgcmVtb3RlICpyZW1vdGVfZ2V0KGNvbnN0IGNoYXIgKm5hbWUpCitzdGF0aWMgc3RydWN0IHJlbW90ZSAqcmVtb3RlX2dldF8xKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnB1c2hyZW1vdGVfbmFtZSkKIHsKIAlzdHJ1Y3QgcmVtb3RlICpyZXQ7CiAJaW50IG5hbWVfZ2l2ZW4gPSAwOwogCi0JcmVhZF9jb25maWcoKTsKIAlpZiAobmFtZSkKIAkJbmFtZV9naXZlbiA9IDE7CiAJZWxzZSB7Ci0JCW5hbWUgPSBkZWZhdWx0X3JlbW90ZV9uYW1lOwotCQluYW1lX2dpdmVuID0gZXhwbGljaXRfZGVmYXVsdF9yZW1vdGVfbmFtZTsKKwkJaWYgKHB1c2hyZW1vdGVfbmFtZSkgeworCQkJbmFtZSA9IHB1c2hyZW1vdGVfbmFtZTsKKwkJCW5hbWVfZ2l2ZW4gPSAxOworCQl9IGVsc2UgeworCQkJbmFtZSA9IGRlZmF1bHRfcmVtb3RlX25hbWU7CisJCQluYW1lX2dpdmVuID0gZXhwbGljaXRfZGVmYXVsdF9yZW1vdGVfbmFtZTsKKwkJfQogCX0KIAogCXJldCA9IG1ha2VfcmVtb3RlKG5hbWUsIDApOwpAQCAtNzAwLDYgKzcxNSwxOCBAQAogCXJldHVybiByZXQ7CiB9CiAKK3N0cnVjdCByZW1vdGUgKnJlbW90ZV9nZXQoY29uc3QgY2hhciAqbmFtZSkKK3sKKwlyZWFkX2NvbmZpZygpOworCXJldHVybiByZW1vdGVfZ2V0XzEobmFtZSwgTlVMTCk7Cit9CisKK3N0cnVjdCByZW1vdGUgKnB1c2hyZW1vdGVfZ2V0KGNvbnN0IGNoYXIgKm5hbWUpCit7CisJcmVhZF9jb25maWcoKTsKKwlyZXR1cm4gcmVtb3RlX2dldF8xKG5hbWUsIHB1c2hyZW1vdGVfbmFtZSk7Cit9CisKIGludCByZW1vdGVfaXNfY29uZmlndXJlZChjb25zdCBjaGFyICpuYW1lKQogewogCWludCBpOwpAQCAtMTEwMCw2ICsxMTI3LDkgQEAKIAljYXNlIDA6CiAJCWlmICghbWVtY21wKGRzdF92YWx1ZSwgInJlZnMvIiwgNSkpCiAJCQltYXRjaGVkX2RzdCA9IG1ha2VfbGlua2VkX3JlZihkc3RfdmFsdWUsIGRzdF90YWlsKTsKKwkJZWxzZSBpZiAoaXNfbnVsbF9zaGExKG1hdGNoZWRfc3JjLT5uZXdfc2hhMSkpCisJCQllcnJvcigidW5hYmxlIHRvIGRlbGV0ZSAnJXMnOiByZW1vdGUgcmVmIGRvZXMgbm90IGV4aXN0IiwKKwkJCSAgICAgIGRzdF92YWx1ZSk7CiAJCWVsc2UgaWYgKChkc3RfZ3Vlc3MgPSBndWVzc19yZWYoZHN0X3ZhbHVlLCBtYXRjaGVkX3NyYykpKQogCQkJbWF0Y2hlZF9kc3QgPSBtYWtlX2xpbmtlZF9yZWYoZHN0X2d1ZXNzLCBkc3RfdGFpbCk7CiAJCWVsc2UKQEAgLTExOTIsNiArMTIyMiwxMDEgQEAKIAlyZXR1cm4gdGFpbDsKIH0KIAorc3RydWN0IHRpcHMgeworCXN0cnVjdCBjb21taXQgKip0aXA7CisJaW50IG5yLCBhbGxvYzsKK307CisKK3N0YXRpYyB2b2lkIGFkZF90b190aXBzKHN0cnVjdCB0aXBzICp0aXBzLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKQoreworCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKKworCWlmIChpc19udWxsX3NoYTEoc2hhMSkpCisJCXJldHVybjsKKwljb21taXQgPSBsb29rdXBfY29tbWl0X3JlZmVyZW5jZV9nZW50bHkoc2hhMSwgMSk7CisJaWYgKCFjb21taXQgfHwgKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgVE1QX01BUkspKQorCQlyZXR1cm47CisJY29tbWl0LT5vYmplY3QuZmxhZ3MgfD0gVE1QX01BUks7CisJQUxMT0NfR1JPVyh0aXBzLT50aXAsIHRpcHMtPm5yICsgMSwgdGlwcy0+YWxsb2MpOworCXRpcHMtPnRpcFt0aXBzLT5ucisrXSA9IGNvbW1pdDsKK30KKworc3RhdGljIHZvaWQgYWRkX21pc3NpbmdfdGFncyhzdHJ1Y3QgcmVmICpzcmMsIHN0cnVjdCByZWYgKipkc3QsIHN0cnVjdCByZWYgKioqZHN0X3RhaWwpCit7CisJc3RydWN0IHN0cmluZ19saXN0IGRzdF90YWcgPSBTVFJJTkdfTElTVF9JTklUX05PRFVQOworCXN0cnVjdCBzdHJpbmdfbGlzdCBzcmNfdGFnID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKKwlzdHJ1Y3QgcmVmICpyZWY7CisJc3RydWN0IHRpcHMgc2VudF90aXBzOworCisJLyoKKwkgKiBDb2xsZWN0IGV2ZXJ5dGhpbmcgd2Uga25vdyB0aGV5IHdvdWxkIGhhdmUgYXQgdGhlIGVuZCBvZgorCSAqIHRoaXMgcHVzaCwgYW5kIGNvbGxlY3QgYWxsIHRhZ3MgdGhleSBoYXZlLgorCSAqLworCW1lbXNldCgmc2VudF90aXBzLCAwLCBzaXplb2Yoc2VudF90aXBzKSk7CisJZm9yIChyZWYgPSAqZHN0OyByZWY7IHJlZiA9IHJlZi0+bmV4dCkgeworCQlpZiAocmVmLT5wZWVyX3JlZiAmJgorCQkgICAgIWlzX251bGxfc2hhMShyZWYtPnBlZXJfcmVmLT5uZXdfc2hhMSkpCisJCQlhZGRfdG9fdGlwcygmc2VudF90aXBzLCByZWYtPnBlZXJfcmVmLT5uZXdfc2hhMSk7CisJCWVsc2UKKwkJCWFkZF90b190aXBzKCZzZW50X3RpcHMsIHJlZi0+b2xkX3NoYTEpOworCQlpZiAoIXByZWZpeGNtcChyZWYtPm5hbWUsICJyZWZzL3RhZ3MvIikpCisJCQlzdHJpbmdfbGlzdF9hcHBlbmQoJmRzdF90YWcsIHJlZi0+bmFtZSk7CisJfQorCWNsZWFyX2NvbW1pdF9tYXJrc19tYW55KHNlbnRfdGlwcy5uciwgc2VudF90aXBzLnRpcCwgVE1QX01BUkspOworCisJc29ydF9zdHJpbmdfbGlzdCgmZHN0X3RhZyk7CisKKwkvKiBDb2xsZWN0IHRhZ3MgdGhleSBkbyBub3QgaGF2ZS4gKi8KKwlmb3IgKHJlZiA9IHNyYzsgcmVmOyByZWYgPSByZWYtPm5leHQpIHsKKwkJaWYgKHByZWZpeGNtcChyZWYtPm5hbWUsICJyZWZzL3RhZ3MvIikpCisJCQljb250aW51ZTsgLyogbm90IGEgdGFnICovCisJCWlmIChzdHJpbmdfbGlzdF9oYXNfc3RyaW5nKCZkc3RfdGFnLCByZWYtPm5hbWUpKQorCQkJY29udGludWU7IC8qIHRoZXkgYWxyZWFkeSBoYXZlIGl0ICovCisJCWlmIChzaGExX29iamVjdF9pbmZvKHJlZi0+bmV3X3NoYTEsIE5VTEwpICE9IE9CSl9UQUcpCisJCQljb250aW51ZTsgLyogYmUgY29uc2VydmF0aXZlICovCisJCWl0ZW0gPSBzdHJpbmdfbGlzdF9hcHBlbmQoJnNyY190YWcsIHJlZi0+bmFtZSk7CisJCWl0ZW0tPnV0aWwgPSByZWY7CisJfQorCXN0cmluZ19saXN0X2NsZWFyKCZkc3RfdGFnLCAwKTsKKworCS8qCisJICogQXQgdGhpcyBwb2ludCwgc3JjX3RhZyBsaXN0cyB0YWdzIHRoYXQgYXJlIG1pc3NpbmcgZnJvbQorCSAqIGRzdCwgYW5kIHNlbnRfdGlwcyBsaXN0cyB0aGUgdGlwcyB3ZSBhcmUgcHVzaGluZyBvciB0aG9zZQorCSAqIHRoYXQgd2Uga25vdyB0aGV5IGFscmVhZHkgaGF2ZS4gQW4gZWxlbWVudCBpbiB0aGUgc3JjX3RhZworCSAqIHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgYW55IG9mIHRoZSBzZW50X3RpcHMgbmVlZHMgdG8gYmUKKwkgKiBzZW50IHRvIHRoZSBvdGhlciBzaWRlLgorCSAqLworCWlmIChzZW50X3RpcHMubnIpIHsKKwkJZm9yX2VhY2hfc3RyaW5nX2xpc3RfaXRlbShpdGVtLCAmc3JjX3RhZykgeworCQkJc3RydWN0IHJlZiAqcmVmID0gaXRlbS0+dXRpbDsKKwkJCXN0cnVjdCByZWYgKmRzdF9yZWY7CisJCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CisKKwkJCWlmIChpc19udWxsX3NoYTEocmVmLT5uZXdfc2hhMSkpCisJCQkJY29udGludWU7CisJCQljb21taXQgPSBsb29rdXBfY29tbWl0X3JlZmVyZW5jZV9nZW50bHkocmVmLT5uZXdfc2hhMSwgMSk7CisJCQlpZiAoIWNvbW1pdCkKKwkJCQkvKiBub3QgcHVzaGluZyBhIGNvbW1pdCwgd2hpY2ggaXMgbm90IGFuIGVycm9yICovCisJCQkJY29udGludWU7CisKKwkJCS8qCisJCQkgKiBJcyB0aGlzIHRhZywgd2hpY2ggdGhleSBkbyBub3QgaGF2ZSwgcmVhY2hhYmxlIGZyb20KKwkJCSAqIGFueSBvZiB0aGUgY29tbWl0cyB3ZSBhcmUgc2VuZGluZz8KKwkJCSAqLworCQkJaWYgKCFpbl9tZXJnZV9iYXNlc19tYW55KGNvbW1pdCwgc2VudF90aXBzLm5yLCBzZW50X3RpcHMudGlwKSkKKwkJCQljb250aW51ZTsKKworCQkJLyogQWRkIGl0IGluICovCisJCQlkc3RfcmVmID0gbWFrZV9saW5rZWRfcmVmKHJlZi0+bmFtZSwgZHN0X3RhaWwpOworCQkJaGFzaGNweShkc3RfcmVmLT5uZXdfc2hhMSwgcmVmLT5uZXdfc2hhMSk7CisJCQlkc3RfcmVmLT5wZWVyX3JlZiA9IGNvcHlfcmVmKHJlZik7CisJCX0KKwl9CisJc3RyaW5nX2xpc3RfY2xlYXIoJnNyY190YWcsIDApOworCWZyZWUoc2VudF90aXBzLnRpcCk7Cit9CisKIC8qCiAgKiBHaXZlbiB0aGUgc2V0IG9mIHJlZnMgdGhlIGxvY2FsIHJlcG9zaXRvcnkgaGFzLCB0aGUgc2V0IG9mIHJlZnMgdGhlCiAgKiByZW1vdGUgcmVwb3NpdG9yeSBoYXMsIGFuZCB0aGUgcmVmc3BlYyB1c2VkIGZvciBwdXNoLCBkZXRlcm1pbmUKQEAgLTEyMjQsOSArMTM0OSw2IEBACiAJCWNvbnN0IHN0cnVjdCByZWZzcGVjICpwYXQgPSBOVUxMOwogCQljaGFyICpkc3RfbmFtZTsKIAotCQlpZiAocmVmLT5wZWVyX3JlZikKLQkJCWNvbnRpbnVlOwotCiAJCWRzdF9uYW1lID0gZ2V0X3JlZl9tYXRjaChycywgbnJfcmVmc3BlYywgcmVmLCBzZW5kX21pcnJvciwgRlJPTV9TUkMsICZwYXQpOwogCQlpZiAoIWRzdF9uYW1lKQogCQkJY29udGludWU7CkBAIC0xMjU0LDYgKzEzNzYsMTAgQEAKIAlmcmVlX25hbWU6CiAJCWZyZWUoZHN0X25hbWUpOwogCX0KKworCWlmIChmbGFncyAmIE1BVENIX1JFRlNfRk9MTE9XX1RBR1MpCisJCWFkZF9taXNzaW5nX3RhZ3Moc3JjLCBkc3QsICZkc3RfdGFpbCk7CisKIAlpZiAoc2VuZF9wcnVuZSkgewogCQkvKiBjaGVjayBmb3IgbWlzc2luZyByZWZzIG9uIHRoZSByZW1vdGUgKi8KIAkJZm9yIChyZWYgPSAqZHN0OyByZWY7IHJlZiA9IHJlZi0+bmV4dCkgewpAQCAtMTI4Miw2ICsxNDA4LDggQEAKIAlzdHJ1Y3QgcmVmICpyZWY7CiAKIAlmb3IgKHJlZiA9IHJlbW90ZV9yZWZzOyByZWY7IHJlZiA9IHJlZi0+bmV4dCkgeworCQlpbnQgZm9yY2VfcmVmX3VwZGF0ZSA9IHJlZi0+Zm9yY2UgfHwgZm9yY2VfdXBkYXRlOworCiAJCWlmIChyZWYtPnBlZXJfcmVmKQogCQkJaGFzaGNweShyZWYtPm5ld19zaGExLCByZWYtPnBlZXJfcmVmLT5uZXdfc2hhMSk7CiAJCWVsc2UgaWYgKCFzZW5kX21pcnJvcikKQEAgLTEyOTQsMzQgKzE0MjIsNDEgQEAKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJLyogVGhpcyBwYXJ0IGRldGVybWluZXMgd2hhdCBjYW4gb3ZlcndyaXRlIHdoYXQuCi0JCSAqIFRoZSBydWxlcyBhcmU6CisJCS8qCisJCSAqIERlY2lkZSB3aGV0aGVyIGFuIGluZGl2aWR1YWwgcmVmc3BlYyBBOkIgY2FuIGJlCisJCSAqIHB1c2hlZC4gIFRoZSBwdXNoIHdpbGwgc3VjY2VlZCBpZiBhbnkgb2YgdGhlCisJCSAqIGZvbGxvd2luZyBhcmUgdHJ1ZToKIAkJICoKLQkJICogKDApIHlvdSBjYW4gYWx3YXlzIHVzZSAtLWZvcmNlIG9yICtBOkIgbm90YXRpb24gdG8KLQkJICogICAgIHNlbGVjdGl2ZWx5IGZvcmNlIGluZGl2aWR1YWwgcmVmIHBhaXJzLgorCQkgKiAoMSkgdGhlIHJlbW90ZSByZWZlcmVuY2UgQiBkb2VzIG5vdCBleGlzdAogCQkgKgotCQkgKiAoMSkgaWYgdGhlIG9sZCB0aGluZyBkb2VzIG5vdCBleGlzdCwgaXQgaXMgT0suCisJCSAqICgyKSB0aGUgcmVtb3RlIHJlZmVyZW5jZSBCIGlzIGJlaW5nIHJlbW92ZWQgKGkuZS4sCisJCSAqICAgICBwdXNoaW5nIDpCIHdoZXJlIG5vIHNvdXJjZSBpcyBzcGVjaWZpZWQpCiAJCSAqCi0JCSAqICgyKSBpZiB5b3UgZG8gbm90IGhhdmUgdGhlIG9sZCB0aGluZywgeW91IGFyZSBub3QgYWxsb3dlZAotCQkgKiAgICAgdG8gb3ZlcndyaXRlIGl0OyB5b3Ugd291bGQgbm90IGtub3cgd2hhdCB5b3UgYXJlIGxvc2luZwotCQkgKiAgICAgb3RoZXJ3aXNlLgorCQkgKiAoMykgdGhlIGRlc3RpbmF0aW9uIGlzIG5vdCB1bmRlciByZWZzL3RhZ3MvLCBhbmQKKwkJICogICAgIGlmIHRoZSBvbGQgYW5kIG5ldyB2YWx1ZSBpcyBhIGNvbW1pdCwgdGhlIG5ldworCQkgKiAgICAgaXMgYSBkZXNjZW5kYW50IG9mIHRoZSBvbGQuCiAJCSAqCi0JCSAqICgzKSBpZiBib3RoIG5ldyBhbmQgb2xkIGFyZSBjb21taXQtaXNoLCBhbmQgbmV3IGlzIGEKLQkJICogICAgIGRlc2NlbmRhbnQgb2Ygb2xkLCBpdCBpcyBPSy4KLQkJICoKLQkJICogKDQpIHJlZ2FyZGxlc3Mgb2YgYWxsIG9mIHRoZSBhYm92ZSwgcmVtb3ZpbmcgOkIgaXMKLQkJICogICAgIGFsd2F5cyBhbGxvd2VkLgorCQkgKiAoNCkgaXQgaXMgZm9yY2VkIHVzaW5nIHRoZSArQTpCIG5vdGF0aW9uLCBvciBieQorCQkgKiAgICAgcGFzc2luZyB0aGUgLS1mb3JjZSBhcmd1bWVudAogCQkgKi8KIAotCQlyZWYtPm5vbmZhc3Rmb3J3YXJkID0KLQkJCSFyZWYtPmRlbGV0aW9uICYmCi0JCQkhaXNfbnVsbF9zaGExKHJlZi0+b2xkX3NoYTEpICYmCi0JCQkoIWhhc19zaGExX2ZpbGUocmVmLT5vbGRfc2hhMSkKLQkJCSAgfHwgIXJlZl9uZXdlcihyZWYtPm5ld19zaGExLCByZWYtPm9sZF9zaGExKSk7CisJCWlmICghcmVmLT5kZWxldGlvbiAmJiAhaXNfbnVsbF9zaGExKHJlZi0+b2xkX3NoYTEpKSB7CisJCQlpbnQgd2h5ID0gMDsgLyogd2h5IHdvdWxkIHRoaXMgcHVzaCByZXF1aXJlIC0tZm9yY2U/ICovCiAKLQkJaWYgKHJlZi0+bm9uZmFzdGZvcndhcmQgJiYgIXJlZi0+Zm9yY2UgJiYgIWZvcmNlX3VwZGF0ZSkgewotCQkJcmVmLT5zdGF0dXMgPSBSRUZfU1RBVFVTX1JFSkVDVF9OT05GQVNURk9SV0FSRDsKLQkJCWNvbnRpbnVlOworCQkJaWYgKCFwcmVmaXhjbXAocmVmLT5uYW1lLCAicmVmcy90YWdzLyIpKQorCQkJCXdoeSA9IFJFRl9TVEFUVVNfUkVKRUNUX0FMUkVBRFlfRVhJU1RTOworCQkJZWxzZSBpZiAoIWhhc19zaGExX2ZpbGUocmVmLT5vbGRfc2hhMSkpCisJCQkJd2h5ID0gUkVGX1NUQVRVU19SRUpFQ1RfRkVUQ0hfRklSU1Q7CisJCQllbHNlIGlmICghbG9va3VwX2NvbW1pdF9yZWZlcmVuY2VfZ2VudGx5KHJlZi0+b2xkX3NoYTEsIDEpIHx8CisJCQkJICFsb29rdXBfY29tbWl0X3JlZmVyZW5jZV9nZW50bHkocmVmLT5uZXdfc2hhMSwgMSkpCisJCQkJd2h5ID0gUkVGX1NUQVRVU19SRUpFQ1RfTkVFRFNfRk9SQ0U7CisJCQllbHNlIGlmICghcmVmX25ld2VyKHJlZi0+bmV3X3NoYTEsIHJlZi0+b2xkX3NoYTEpKQorCQkJCXdoeSA9IFJFRl9TVEFUVVNfUkVKRUNUX05PTkZBU1RGT1JXQVJEOworCisJCQlpZiAoIWZvcmNlX3JlZl91cGRhdGUpCisJCQkJcmVmLT5zdGF0dXMgPSB3aHk7CisJCQllbHNlIGlmICh3aHkpCisJCQkJcmVmLT5mb3JjZWRfdXBkYXRlID0gMTsKIAkJfQogCX0KIH0KQEAgLTEzNjcsNiArMTUwMiwxNiBAQAogCXJldHVybiByZWZuYW1lX21hdGNoKGJyYW5jaC0+bWVyZ2VbaV0tPnNyYywgcmVmbmFtZSwgcmVmX2ZldGNoX3J1bGVzKTsKIH0KIAorc3RhdGljIGludCBpZ25vcmVfc3ltcmVmX3VwZGF0ZShjb25zdCBjaGFyICpyZWZuYW1lKQoreworCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisJaW50IGZsYWc7CisKKwlpZiAoIXJlc29sdmVfcmVmX3Vuc2FmZShyZWZuYW1lLCBzaGExLCAwLCAmZmxhZykpCisJCXJldHVybiAwOyAvKiBub24tZXhpc3RpbmcgcmVmcyBhcmUgT0sgKi8KKwlyZXR1cm4gKGZsYWcgJiBSRUZfSVNTWU1SRUYpOworfQorCiBzdGF0aWMgc3RydWN0IHJlZiAqZ2V0X2V4cGFuZGVkX21hcChjb25zdCBzdHJ1Y3QgcmVmICpyZW1vdGVfcmVmcywKIAkJCQkgICAgY29uc3Qgc3RydWN0IHJlZnNwZWMgKnJlZnNwZWMpCiB7CkBAIC0xMzgwLDcgKzE1MjUsOCBAQAogCQlpZiAoc3RyY2hyKHJlZi0+bmFtZSwgJ14nKSkKIAkJCWNvbnRpbnVlOyAvKiBhIGRlcmVmZXJlbmNlIGl0ZW0gKi8KIAkJaWYgKG1hdGNoX25hbWVfd2l0aF9wYXR0ZXJuKHJlZnNwZWMtPnNyYywgcmVmLT5uYW1lLAotCQkJCQkgICAgcmVmc3BlYy0+ZHN0LCAmZXhwbl9uYW1lKSkgeworCQkJCQkgICAgcmVmc3BlYy0+ZHN0LCAmZXhwbl9uYW1lKSAmJgorCQkgICAgIWlnbm9yZV9zeW1yZWZfdXBkYXRlKGV4cG5fbmFtZSkpIHsKIAkJCXN0cnVjdCByZWYgKmNweSA9IGNvcHlfcmVmKHJlZik7CiAKIAkJCWNweS0+cGVlcl9yZWYgPSBhbGxvY19yZWYoZXhwbl9uYW1lKTsKQEAgLTE0NDMsNyArMTU4OSwxMiBAQAogCX0gZWxzZSB7CiAJCWNvbnN0IGNoYXIgKm5hbWUgPSByZWZzcGVjLT5zcmNbMF0gPyByZWZzcGVjLT5zcmMgOiAiSEVBRCI7CiAKLQkJcmVmX21hcCA9IGdldF9yZW1vdGVfcmVmKHJlbW90ZV9yZWZzLCBuYW1lKTsKKwkJaWYgKHJlZnNwZWMtPmV4YWN0X3NoYTEpIHsKKwkJCXJlZl9tYXAgPSBhbGxvY19yZWYobmFtZSk7CisJCQlnZXRfc2hhMV9oZXgobmFtZSwgcmVmX21hcC0+b2xkX3NoYTEpOworCQl9IGVsc2UgeworCQkJcmVmX21hcCA9IGdldF9yZW1vdGVfcmVmKHJlbW90ZV9yZWZzLCBuYW1lKTsKKwkJfQogCQlpZiAoIW1pc3Npbmdfb2sgJiYgIXJlZl9tYXApCiAJCQlkaWUoIkNvdWxkbid0IGZpbmQgcmVtb3RlIHJlZiAlcyIsIG5hbWUpOwogCQlpZiAocmVmX21hcCkgewpAQCAtMTQ1NSw4ICsxNjA2LDggQEAKIAogCWZvciAocm1wID0gJnJlZl9tYXA7ICpybXA7ICkgewogCQlpZiAoKCpybXApLT5wZWVyX3JlZikgewotCQkJaWYgKGNoZWNrX3JlZm5hbWVfZm9ybWF0KCgqcm1wKS0+cGVlcl9yZWYtPm5hbWUgKyA1LAotCQkJCVJFRk5BTUVfQUxMT1dfT05FTEVWRUwpKSB7CisJCQlpZiAocHJlZml4Y21wKCgqcm1wKS0+cGVlcl9yZWYtPm5hbWUsICJyZWZzLyIpIHx8CisJCQkgICAgY2hlY2tfcmVmbmFtZV9mb3JtYXQoKCpybXApLT5wZWVyX3JlZi0+bmFtZSwgMCkpIHsKIAkJCQlzdHJ1Y3QgcmVmICppZ25vcmUgPSAqcm1wOwogCQkJCWVycm9yKCIqIElnbm9yaW5nIGZ1bm55IHJlZiAnJXMnIGxvY2FsbHkiLAogCQkJCSAgICAgICgqcm1wKS0+cGVlcl9yZWYtPm5hbWUpOwpAQCAtMTUwNCw3ICsxNjU1LDggQEAKIAlzdHJ1Y3QgY29tbWl0X2xpc3QgKmxpc3QsICp1c2VkOwogCWludCBmb3VuZCA9IDA7CiAKLQkvKiBCb3RoIG5ldyBhbmQgb2xkIG11c3QgYmUgY29tbWl0LWlzaCBhbmQgbmV3IGlzIGRlc2NlbmRhbnQgb2YKKwkvKgorCSAqIEJvdGggbmV3IGFuZCBvbGQgbXVzdCBiZSBjb21taXQtaXNoIGFuZCBuZXcgaXMgZGVzY2VuZGFudCBvZgogCSAqIG9sZC4gIE90aGVyd2lzZSB3ZSByZXF1aXJlIC0tZm9yY2UuCiAJICovCiAJbyA9IGRlcmVmX3RhZyhwYXJzZV9vYmplY3Qob2xkX3NoYTEpLCBOVUxMLCAwKTsKQEAgLTE2MjQsMTMgKzE3NzYsMTYgQEAKIAogCWJhc2UgPSBicmFuY2gtPm1lcmdlWzBdLT5kc3Q7CiAJYmFzZSA9IHNob3J0ZW5fdW5hbWJpZ3VvdXNfcmVmKGJhc2UsIDApOwotCWlmICghbnVtX3RoZWlycykKKwlpZiAoIW51bV90aGVpcnMpIHsKIAkJc3RyYnVmX2FkZGYoc2IsCiAJCQlRXygiWW91ciBicmFuY2ggaXMgYWhlYWQgb2YgJyVzJyBieSAlZCBjb21taXQuXG4iLAogCQkJICAgIllvdXIgYnJhbmNoIGlzIGFoZWFkIG9mICclcycgYnkgJWQgY29tbWl0cy5cbiIsCiAJCQkgICBudW1fb3VycyksCiAJCQliYXNlLCBudW1fb3Vycyk7Ci0JZWxzZSBpZiAoIW51bV9vdXJzKQorCQlpZiAoYWR2aWNlX3N0YXR1c19oaW50cykKKwkJCXN0cmJ1Zl9hZGRmKHNiLAorCQkJCV8oIiAgKHVzZSBcImdpdCBwdXNoXCIgdG8gcHVibGlzaCB5b3VyIGxvY2FsIGNvbW1pdHMpXG4iKSk7CisJfSBlbHNlIGlmICghbnVtX291cnMpIHsKIAkJc3RyYnVmX2FkZGYoc2IsCiAJCQlRXygiWW91ciBicmFuY2ggaXMgYmVoaW5kICclcycgYnkgJWQgY29tbWl0LCAiCiAJCQkgICAgICAgImFuZCBjYW4gYmUgZmFzdC1mb3J3YXJkZWQuXG4iLApAQCAtMTYzOCw3ICsxNzkzLDEwIEBACiAJCQkgICAgICAgImFuZCBjYW4gYmUgZmFzdC1mb3J3YXJkZWQuXG4iLAogCQkJICAgbnVtX3RoZWlycyksCiAJCQliYXNlLCBudW1fdGhlaXJzKTsKLQllbHNlCisJCWlmIChhZHZpY2Vfc3RhdHVzX2hpbnRzKQorCQkJc3RyYnVmX2FkZGYoc2IsCisJCQkJXygiICAodXNlIFwiZ2l0IHB1bGxcIiB0byB1cGRhdGUgeW91ciBsb2NhbCBicmFuY2gpXG4iKSk7CisJfSBlbHNlIHsKIAkJc3RyYnVmX2FkZGYoc2IsCiAJCQlRXygiWW91ciBicmFuY2ggYW5kICclcycgaGF2ZSBkaXZlcmdlZCxcbiIKIAkJCSAgICAgICAiYW5kIGhhdmUgJWQgYW5kICVkIGRpZmZlcmVudCBjb21taXQgZWFjaCwgIgpAQCAtMTY0OCw2ICsxODA2LDEwIEBACiAJCQkgICAgICAgInJlc3BlY3RpdmVseS5cbiIsCiAJCQkgICBudW1fdGhlaXJzKSwKIAkJCWJhc2UsIG51bV9vdXJzLCBudW1fdGhlaXJzKTsKKwkJaWYgKGFkdmljZV9zdGF0dXNfaGludHMpCisJCQlzdHJidWZfYWRkZihzYiwKKwkJCQlfKCIgICh1c2UgXCJnaXQgcHVsbFwiIHRvIG1lcmdlIHRoZSByZW1vdGUgYnJhbmNoIGludG8geW91cnMpXG4iKSk7CisJfQogCXJldHVybiAxOwogfQogCmRpZmYgLS1naXQgYS9yZW1vdGUuaCBiL3JlbW90ZS5oCmluZGV4IDI1MWQ4ZmQuLmNmNTY3MjQgMTAwNjQ0Ci0tLSBhL3JlbW90ZS5oCisrKyBiL3JlbW90ZS5oCkBAIC01MSw2ICs1MSw3IEBACiB9OwogCiBzdHJ1Y3QgcmVtb3RlICpyZW1vdGVfZ2V0KGNvbnN0IGNoYXIgKm5hbWUpOworc3RydWN0IHJlbW90ZSAqcHVzaHJlbW90ZV9nZXQoY29uc3QgY2hhciAqbmFtZSk7CiBpbnQgcmVtb3RlX2lzX2NvbmZpZ3VyZWQoY29uc3QgY2hhciAqbmFtZSk7CiAKIHR5cGVkZWYgaW50IGVhY2hfcmVtb3RlX2ZuKHN0cnVjdCByZW1vdGUgKnJlbW90ZSwgdm9pZCAqcHJpdik7CkBAIC02Miw2ICs2Myw3IEBACiAJdW5zaWduZWQgZm9yY2UgOiAxOwogCXVuc2lnbmVkIHBhdHRlcm4gOiAxOwogCXVuc2lnbmVkIG1hdGNoaW5nIDogMTsKKwl1bnNpZ25lZCBleGFjdF9zaGExIDogMTsKIAogCWNoYXIgKnNyYzsKIAljaGFyICpkc3Q7CkBAIC0xNDgsNyArMTUwLDggQEAKIAlNQVRDSF9SRUZTX05PTkUJCT0gMCwKIAlNQVRDSF9SRUZTX0FMTCAJCT0gKDEgPDwgMCksCiAJTUFUQ0hfUkVGU19NSVJST1IJPSAoMSA8PCAxKSwKLQlNQVRDSF9SRUZTX1BSVU5FCT0gKDEgPDwgMikKKwlNQVRDSF9SRUZTX1BSVU5FCT0gKDEgPDwgMiksCisJTUFUQ0hfUkVGU19GT0xMT1dfVEFHUwk9ICgxIDw8IDMpCiB9OwogCiAvKiBSZXBvcnRpbmcgb2YgdHJhY2tpbmcgaW5mbyAqLwpkaWZmIC0tZ2l0IGEvcmVyZXJlLmMgYi9yZXJlcmUuYwppbmRleCBkY2I1MjVhLi45OGUzZTI5IDEwMDY0NAotLS0gYS9yZXJlcmUuYworKysgYi9yZXJlcmUuYwpAQCAtMjUsNyArMjUsNyBAQAogCXJldHVybiBnaXRfcGF0aCgicnItY2FjaGUvJXMvJXMiLCBoZXgsIGZpbGUpOwogfQogCi1pbnQgaGFzX3JlcmVyZV9yZXNvbHV0aW9uKGNvbnN0IGNoYXIgKmhleCkKK3N0YXRpYyBpbnQgaGFzX3JlcmVyZV9yZXNvbHV0aW9uKGNvbnN0IGNoYXIgKmhleCkKIHsKIAlzdHJ1Y3Qgc3RhdCBzdDsKIAlyZXR1cm4gIXN0YXQocmVyZXJlX3BhdGgoaGV4LCAicG9zdGltYWdlIiksICZzdCk7CkBAIC0yODQsOCArMjg0LDEwIEBACiAJc3RyYnVmX3JlbGVhc2Uoc2IpOwogCWlmICghaW8tPmlucHV0LmxlbikKIAkJcmV0dXJuIC0xOwotCWVwID0gc3RyY2hybnVsKGlvLT5pbnB1dC5idWYsICdcbicpOwotCWlmICgqZXAgPT0gJ1xuJykKKwllcCA9IG1lbWNocihpby0+aW5wdXQuYnVmLCAnXG4nLCBpby0+aW5wdXQubGVuKTsKKwlpZiAoIWVwKQorCQllcCA9IGlvLT5pbnB1dC5idWYgKyBpby0+aW5wdXQubGVuOworCWVsc2UgaWYgKCplcCA9PSAnXG4nKQogCQllcCsrOwogCWxlbiA9IGVwIC0gaW8tPmlucHV0LmJ1ZjsKIAlzdHJidWZfYWRkKHNiLCBpby0+aW5wdXQuYnVmLCBsZW4pOwpAQCAtMjk1LDcgKzI5Nyw3IEBACiAKIHN0YXRpYyBpbnQgaGFuZGxlX2NhY2hlKGNvbnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIGNoYXIgKnNoYTEsIGNvbnN0IGNoYXIgKm91dHB1dCkKIHsKLQltbWZpbGVfdCBtbWZpbGVbM107CisJbW1maWxlX3QgbW1maWxlWzNdID0ge3tOVUxMfX07CiAJbW1idWZmZXJfdCByZXN1bHQgPSB7TlVMTCwgMH07CiAJc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKIAlpbnQgcG9zLCBsZW4sIGksIGh1bmtfbm87CkBAIC0zMTQsMTcgKzMxNiwxNiBAQAogCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKIAkJZW51bSBvYmplY3RfdHlwZSB0eXBlOwogCQl1bnNpZ25lZCBsb25nIHNpemU7CisJCWludCBqOwogCi0JCW1tZmlsZVtpXS5zaXplID0gMDsKLQkJbW1maWxlW2ldLnB0ciA9IE5VTEw7CiAJCWlmIChhY3RpdmVfbnIgPD0gcG9zKQogCQkJYnJlYWs7CiAJCWNlID0gYWN0aXZlX2NhY2hlW3BvcysrXTsKLQkJaWYgKGNlX25hbWVsZW4oY2UpICE9IGxlbiB8fCBtZW1jbXAoY2UtPm5hbWUsIHBhdGgsIGxlbikKLQkJICAgIHx8IGNlX3N0YWdlKGNlKSAhPSBpICsgMSkKLQkJCWJyZWFrOwotCQltbWZpbGVbaV0ucHRyID0gcmVhZF9zaGExX2ZpbGUoY2UtPnNoYTEsICZ0eXBlLCAmc2l6ZSk7Ci0JCW1tZmlsZVtpXS5zaXplID0gc2l6ZTsKKwkJaWYgKGNlX25hbWVsZW4oY2UpICE9IGxlbiB8fCBtZW1jbXAoY2UtPm5hbWUsIHBhdGgsIGxlbikpCisJCQljb250aW51ZTsKKwkJaiA9IGNlX3N0YWdlKGNlKSAtIDE7CisJCW1tZmlsZVtqXS5wdHIgPSByZWFkX3NoYTFfZmlsZShjZS0+c2hhMSwgJnR5cGUsICZzaXplKTsKKwkJbW1maWxlW2pdLnNpemUgPSBzaXplOwogCX0KIAlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7CiAJCWlmICghbW1maWxlW2ldLnB0ciAmJiAhbW1maWxlW2ldLnNpemUpCkBAIC01MjQsNyArNTI1LDcgQEAKIAkJCQljb250aW51ZTsKIAkJCWhleCA9IHhzdHJkdXAoc2hhMV90b19oZXgoc2hhMSkpOwogCQkJc3RyaW5nX2xpc3RfaW5zZXJ0KHJyLCBwYXRoKS0+dXRpbCA9IGhleDsKLQkJCWlmIChta2RpcihnaXRfcGF0aCgicnItY2FjaGUvJXMiLCBoZXgpLCAwNzU1KSkKKwkJCWlmIChta2Rpcl9pbl9naXRkaXIoZ2l0X3BhdGgoInJyLWNhY2hlLyVzIiwgaGV4KSkpCiAJCQkJY29udGludWU7CiAJCQloYW5kbGVfZmlsZShwYXRoLCBOVUxMLCByZXJlcmVfcGF0aChoZXgsICJwcmVpbWFnZSIpKTsKIAkJCWZwcmludGYoc3RkZXJyLCAiUmVjb3JkZWQgcHJlaW1hZ2UgZm9yICclcydcbiIsIHBhdGgpOwpAQCAtNTQ0LDEzICs1NDUsMTMgQEAKIAogCQlpZiAoaGFzX3JlcmVyZV9yZXNvbHV0aW9uKG5hbWUpKSB7CiAJCQlpZiAoIW1lcmdlKG5hbWUsIHBhdGgpKSB7Ci0JCQkJaWYgKHJlcmVyZV9hdXRvdXBkYXRlKQorCQkJCWNvbnN0IGNoYXIgKm1zZzsKKwkJCQlpZiAocmVyZXJlX2F1dG91cGRhdGUpIHsKIAkJCQkJc3RyaW5nX2xpc3RfaW5zZXJ0KCZ1cGRhdGUsIHBhdGgpOwotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkiJXMgJyVzJyB1c2luZyBwcmV2aW91cyByZXNvbHV0aW9uLlxuIiwKLQkJCQkJcmVyZXJlX2F1dG91cGRhdGUKLQkJCQkJPyAiU3RhZ2VkIiA6ICJSZXNvbHZlZCIsCi0JCQkJCXBhdGgpOworCQkJCQltc2cgPSAiU3RhZ2VkICclcycgdXNpbmcgcHJldmlvdXMgcmVzb2x1dGlvbi5cbiI7CisJCQkJfSBlbHNlCisJCQkJCW1zZyA9ICJSZXNvbHZlZCAnJXMnIHVzaW5nIHByZXZpb3VzIHJlc29sdXRpb24uXG4iOworCQkJCWZwcmludGYoc3RkZXJyLCBtc2csIHBhdGgpOwogCQkJCWdvdG8gbWFya19yZXNvbHZlZDsKIAkJCX0KIAkJfQpkaWZmIC0tZ2l0IGEvcmVyZXJlLmggYi9yZXJlcmUuaAppbmRleCBmY2Q4YmMxLi4xNTZkMmFhIDEwMDY0NAotLS0gYS9yZXJlcmUuaAorKysgYi9yZXJlcmUuaApAQCAtMTYsNyArMTYsNiBAQAogZXh0ZXJuIGludCBzZXR1cF9yZXJlcmUoc3RydWN0IHN0cmluZ19saXN0ICosIGludCk7CiBleHRlcm4gaW50IHJlcmVyZShpbnQpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKnJlcmVyZV9wYXRoKGNvbnN0IGNoYXIgKmhleCwgY29uc3QgY2hhciAqZmlsZSk7Ci1leHRlcm4gaW50IGhhc19yZXJlcmVfcmVzb2x1dGlvbihjb25zdCBjaGFyICpoZXgpOwogZXh0ZXJuIGludCByZXJlcmVfZm9yZ2V0KGNvbnN0IGNoYXIgKiopOwogZXh0ZXJuIGludCByZXJlcmVfcmVtYWluaW5nKHN0cnVjdCBzdHJpbmdfbGlzdCAqKTsKIGV4dGVybiB2b2lkIHJlcmVyZV9jbGVhcihzdHJ1Y3Qgc3RyaW5nX2xpc3QgKik7CmRpZmYgLS1naXQgYS9yZXNvbHZlLXVuZG8uYyBiL3Jlc29sdmUtdW5kby5jCmluZGV4IDcyYjQ2MTIuLjYzOWViOWMgMTAwNjQ0Ci0tLSBhL3Jlc29sdmUtdW5kby5jCisrKyBiL3Jlc29sdmUtdW5kby5jCkBAIC0xMTgsNyArMTE4LDcgQEAKIAlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOwogCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOwogCXN0cnVjdCByZXNvbHZlX3VuZG9faW5mbyAqcnU7Ci0JaW50IGksIGVyciA9IDA7CisJaW50IGksIGVyciA9IDAsIG1hdGNoZWQ7CiAKIAlpZiAoIWlzdGF0ZS0+cmVzb2x2ZV91bmRvKQogCQlyZXR1cm4gcG9zOwpAQCAtMTM3LDYgKzEzNyw3IEBACiAJcnUgPSBpdGVtLT51dGlsOwogCWlmICghcnUpCiAJCXJldHVybiBwb3M7CisJbWF0Y2hlZCA9IGNlLT5jZV9mbGFncyAmIENFX01BVENIRUQ7CiAJcmVtb3ZlX2luZGV4X2VudHJ5X2F0KGlzdGF0ZSwgcG9zKTsKIAlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7CiAJCXN0cnVjdCBjYWNoZV9lbnRyeSAqbmNlOwpAQCAtMTQ0LDYgKzE0NSw4IEBACiAJCQljb250aW51ZTsKIAkJbmNlID0gbWFrZV9jYWNoZV9lbnRyeShydS0+bW9kZVtpXSwgcnUtPnNoYTFbaV0sCiAJCQkJICAgICAgIGNlLT5uYW1lLCBpICsgMSwgMCk7CisJCWlmIChtYXRjaGVkKQorCQkJbmNlLT5jZV9mbGFncyB8PSBDRV9NQVRDSEVEOwogCQlpZiAoYWRkX2luZGV4X2VudHJ5KGlzdGF0ZSwgbmNlLCBBRERfQ0FDSEVfT0tfVE9fQUREKSkgewogCQkJZXJyID0gMTsKIAkJCWVycm9yKCJjYW5ub3QgdW5tZXJnZSAnJXMnIiwgY2UtPm5hbWUpOwpAQCAtMTU2LDYgKzE1OSwyMCBAQAogCXJldHVybiB1bm1lcmdlX2luZGV4X2VudHJ5X2F0KGlzdGF0ZSwgcG9zKTsKIH0KIAordm9pZCB1bm1lcmdlX21hcmtlZF9pbmRleChzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSkKK3sKKwlpbnQgaTsKKworCWlmICghaXN0YXRlLT5yZXNvbHZlX3VuZG8pCisJCXJldHVybjsKKworCWZvciAoaSA9IDA7IGkgPCBpc3RhdGUtPmNhY2hlX25yOyBpKyspIHsKKwkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGlzdGF0ZS0+Y2FjaGVbaV07CisJCWlmIChjZS0+Y2VfZmxhZ3MgJiBDRV9NQVRDSEVEKQorCQkJaSA9IHVubWVyZ2VfaW5kZXhfZW50cnlfYXQoaXN0YXRlLCBpKTsKKwl9Cit9CisKIHZvaWQgdW5tZXJnZV9pbmRleChzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSwgY29uc3QgY2hhciAqKnBhdGhzcGVjKQogewogCWludCBpOwpkaWZmIC0tZ2l0IGEvcmVzb2x2ZS11bmRvLmggYi9yZXNvbHZlLXVuZG8uaAppbmRleCA4NDU4NzY5Li43YTMwMjA2IDEwMDY0NAotLS0gYS9yZXNvbHZlLXVuZG8uaAorKysgYi9yZXNvbHZlLXVuZG8uaApAQCAtMTIsNSArMTIsNiBAQAogZXh0ZXJuIHZvaWQgcmVzb2x2ZV91bmRvX2NsZWFyX2luZGV4KHN0cnVjdCBpbmRleF9zdGF0ZSAqKTsKIGV4dGVybiBpbnQgdW5tZXJnZV9pbmRleF9lbnRyeV9hdChzdHJ1Y3QgaW5kZXhfc3RhdGUgKiwgaW50KTsKIGV4dGVybiB2b2lkIHVubWVyZ2VfaW5kZXgoc3RydWN0IGluZGV4X3N0YXRlICosIGNvbnN0IGNoYXIgKiopOworZXh0ZXJuIHZvaWQgdW5tZXJnZV9tYXJrZWRfaW5kZXgoc3RydWN0IGluZGV4X3N0YXRlICopOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3JldmlzaW9uLmMgYi9yZXZpc2lvbi5jCmluZGV4IDkzNWU3YTcuLjdmN2E4YWIgMTAwNjQ0Ci0tLSBhL3JldmlzaW9uLmMKKysrIGIvcmV2aXNpb24uYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgImRlY29yYXRlLmgiCiAjaW5jbHVkZSAibG9nLXRyZWUuaCIKICNpbmNsdWRlICJzdHJpbmctbGlzdC5oIgorI2luY2x1ZGUgIm1haWxtYXAuaCIKIAogdm9sYXRpbGUgc2hvd19lYXJseV9vdXRwdXRfZm5fdCBzaG93X2Vhcmx5X291dHB1dDsKIApAQCAtMzQ1LDYgKzM0Niw3IEBACiBzdGF0aWMgdm9pZCBmaWxlX2FkZF9yZW1vdmUoc3RydWN0IGRpZmZfb3B0aW9ucyAqb3B0aW9ucywKIAkJICAgIGludCBhZGRyZW1vdmUsIHVuc2lnbmVkIG1vZGUsCiAJCSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAorCQkgICAgaW50IHNoYTFfdmFsaWQsCiAJCSAgICBjb25zdCBjaGFyICpmdWxscGF0aCwgdW5zaWduZWQgZGlydHlfc3VibW9kdWxlKQogewogCWludCBkaWZmID0gYWRkcmVtb3ZlID09ICcrJyA/IFJFVl9UUkVFX05FVyA6IFJFVl9UUkVFX09MRDsKQEAgLTM1OCw2ICszNjAsNyBAQAogCQkgdW5zaWduZWQgb2xkX21vZGUsIHVuc2lnbmVkIG5ld19tb2RlLAogCQkgY29uc3QgdW5zaWduZWQgY2hhciAqb2xkX3NoYTEsCiAJCSBjb25zdCB1bnNpZ25lZCBjaGFyICpuZXdfc2hhMSwKKwkJIGludCBvbGRfc2hhMV92YWxpZCwgaW50IG5ld19zaGExX3ZhbGlkLAogCQkgY29uc3QgY2hhciAqZnVsbHBhdGgsCiAJCSB1bnNpZ25lZCBvbGRfZGlydHlfc3VibW9kdWxlLCB1bnNpZ25lZCBuZXdfZGlydHlfc3VibW9kdWxlKQogewpAQCAtNzA2LDcgKzcwOSw3IEBACiAJICogRG9lcyB0aGUgZGVzdGluYXRpb24gbGlzdCBjb250YWluIGVudHJpZXMgd2l0aCBhIGRhdGUKIAkgKiBiZWZvcmUgdGhlIHNvdXJjZSBsaXN0PyBEZWZpbml0ZWx5IF9ub3RfIGRvbmUuCiAJICovCi0JaWYgKGRhdGUgPCBzcmMtPml0ZW0tPmRhdGUpCisJaWYgKGRhdGUgPD0gc3JjLT5pdGVtLT5kYXRlKQogCQlyZXR1cm4gU0xPUDsKIAogCS8qCkBAIC05MTIsNiArOTE1LDE5IEBACiAJaW5mby0+bnIrKzsKIH0KIAorc3RhdGljIHZvaWQgYWRkX3Jldl9jbWRsaW5lX2xpc3Qoc3RydWN0IHJldl9pbmZvICpyZXZzLAorCQkJCSBzdHJ1Y3QgY29tbWl0X2xpc3QgKmNvbW1pdF9saXN0LAorCQkJCSBpbnQgd2hlbmNlLAorCQkJCSB1bnNpZ25lZCBmbGFncykKK3sKKwl3aGlsZSAoY29tbWl0X2xpc3QpIHsKKwkJc3RydWN0IG9iamVjdCAqb2JqZWN0ID0gJmNvbW1pdF9saXN0LT5pdGVtLT5vYmplY3Q7CisJCWFkZF9yZXZfY21kbGluZShyZXZzLCBvYmplY3QsIHNoYTFfdG9faGV4KG9iamVjdC0+c2hhMSksCisJCQkJd2hlbmNlLCBmbGFncyk7CisJCWNvbW1pdF9saXN0ID0gY29tbWl0X2xpc3QtPm5leHQ7CisJfQorfQorCiBzdHJ1Y3QgYWxsX3JlZnNfY2IgewogCWludCBhbGxfZmxhZ3M7CiAJaW50IHdhcm5lZF9iYWRfcmVmbG9nOwpAQCAtMTAwMCw3ICsxMDE2LDcgQEAKIAkJZmxhZ3MgXj0gVU5JTlRFUkVTVElORzsKIAkJYXJnKys7CiAJfQotCWlmIChnZXRfc2hhMShhcmcsIHNoYTEpKQorCWlmIChnZXRfc2hhMV9jb21taXR0aXNoKGFyZywgc2hhMSkpCiAJCXJldHVybiAwOwogCXdoaWxlICgxKSB7CiAJCWl0ID0gZ2V0X3JlZmVyZW5jZShyZXZzLCBhcmcsIHNoYTEsIDApOwpAQCAtMTA0Niw5ICsxMDYyLDkgQEAKIAogCXJldnMtPmNvbW1pdF9mb3JtYXQgPSBDTUlUX0ZNVF9ERUZBVUxUOwogCisJaW5pdF9ncmVwX2RlZmF1bHRzKCk7CisJZ3JlcF9pbml0KCZyZXZzLT5ncmVwX2ZpbHRlciwgcHJlZml4KTsKIAlyZXZzLT5ncmVwX2ZpbHRlci5zdGF0dXNfb25seSA9IDE7Ci0JcmV2cy0+Z3JlcF9maWx0ZXIucGF0dGVybl90YWlsID0gJihyZXZzLT5ncmVwX2ZpbHRlci5wYXR0ZXJuX2xpc3QpOwotCXJldnMtPmdyZXBfZmlsdGVyLmhlYWRlcl90YWlsID0gJihyZXZzLT5ncmVwX2ZpbHRlci5oZWFkZXJfbGlzdCk7CiAJcmV2cy0+Z3JlcF9maWx0ZXIucmVnZmxhZ3MgPSBSRUdfTkVXTElORTsKIAogCWRpZmZfc2V0dXAoJnJldnMtPmRpZmZvcHQpOwpAQCAtMTA4OSw2ICsxMTA1LDcgQEAKIAlhZGRfcGVuZGluZ19vYmplY3QocmV2cywgJmhlYWQtPm9iamVjdCwgIkhFQUQiKTsKIAlhZGRfcGVuZGluZ19vYmplY3QocmV2cywgJm90aGVyLT5vYmplY3QsICJNRVJHRV9IRUFEIik7CiAJYmFzZXMgPSBnZXRfbWVyZ2VfYmFzZXMoaGVhZCwgb3RoZXIsIDEpOworCWFkZF9yZXZfY21kbGluZV9saXN0KHJldnMsIGJhc2VzLCBSRVZfQ01EX01FUkdFX0JBU0UsIFVOSU5URVJFU1RJTkcpOwogCWFkZF9wZW5kaW5nX2NvbW1pdF9saXN0KHJldnMsIGJhc2VzLCBVTklOVEVSRVNUSU5HKTsKIAlmcmVlX2NvbW1pdF9saXN0KGJhc2VzKTsKIAloZWFkLT5vYmplY3QuZmxhZ3MgfD0gU1lNTUVUUklDX0xFRlQ7CkBAIC0xMTE0LDE2ICsxMTMxLDE2IEBACiAJcmV2cy0+bGltaXRlZCA9IDE7CiB9CiAKLWludCBoYW5kbGVfcmV2aXNpb25fYXJnKGNvbnN0IGNoYXIgKmFyZ18sIHN0cnVjdCByZXZfaW5mbyAqcmV2cywKLQkJCWludCBmbGFncywKLQkJCWludCBjYW50X2JlX2ZpbGVuYW1lKQoraW50IGhhbmRsZV9yZXZpc2lvbl9hcmcoY29uc3QgY2hhciAqYXJnXywgc3RydWN0IHJldl9pbmZvICpyZXZzLCBpbnQgZmxhZ3MsIHVuc2lnbmVkIHJldmFyZ19vcHQpCiB7Ci0JdW5zaWduZWQgbW9kZTsKKwlzdHJ1Y3Qgb2JqZWN0X2NvbnRleHQgb2M7CiAJY2hhciAqZG90ZG90OwogCXN0cnVjdCBvYmplY3QgKm9iamVjdDsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCWludCBsb2NhbF9mbGFnczsKIAljb25zdCBjaGFyICphcmcgPSBhcmdfOworCWludCBjYW50X2JlX2ZpbGVuYW1lID0gcmV2YXJnX29wdCAmIFJFVkFSR19DQU5OT1RfQkVfRklMRU5BTUU7CisJdW5zaWduZWQgZ2V0X3NoYTFfZmxhZ3MgPSAwOwogCiAJZG90ZG90ID0gc3Ryc3RyKGFyZywgIi4uIik7CiAJaWYgKGRvdGRvdCkgewpAQCAtMTEzMiwxNyArMTE0OSwyOSBAQAogCQljb25zdCBjaGFyICp0aGlzID0gYXJnOwogCQlpbnQgc3ltbWV0cmljID0gKm5leHQgPT0gJy4nOwogCQl1bnNpZ25lZCBpbnQgZmxhZ3NfZXhjbHVkZSA9IGZsYWdzIF4gVU5JTlRFUkVTVElORzsKKwkJc3RhdGljIGNvbnN0IGNoYXIgaGVhZF9ieV9kZWZhdWx0W10gPSAiSEVBRCI7CiAJCXVuc2lnbmVkIGludCBhX2ZsYWdzOwogCiAJCSpkb3Rkb3QgPSAwOwogCQluZXh0ICs9IHN5bW1ldHJpYzsKIAogCQlpZiAoISpuZXh0KQotCQkJbmV4dCA9ICJIRUFEIjsKKwkJCW5leHQgPSBoZWFkX2J5X2RlZmF1bHQ7CiAJCWlmIChkb3Rkb3QgPT0gYXJnKQotCQkJdGhpcyA9ICJIRUFEIjsKLQkJaWYgKCFnZXRfc2hhMSh0aGlzLCBmcm9tX3NoYTEpICYmCi0JCSAgICAhZ2V0X3NoYTEobmV4dCwgc2hhMSkpIHsKKwkJCXRoaXMgPSBoZWFkX2J5X2RlZmF1bHQ7CisJCWlmICh0aGlzID09IGhlYWRfYnlfZGVmYXVsdCAmJiBuZXh0ID09IGhlYWRfYnlfZGVmYXVsdCAmJgorCQkgICAgIXN5bW1ldHJpYykgeworCQkJLyoKKwkJCSAqIEp1c3QgIi4uIj8gIFRoYXQgaXMgbm90IGEgcmFuZ2UgYnV0IHRoZQorCQkJICogcGF0aHNwZWMgZm9yIHRoZSBwYXJlbnQgZGlyZWN0b3J5LgorCQkJICovCisJCQlpZiAoIWNhbnRfYmVfZmlsZW5hbWUpIHsKKwkJCQkqZG90ZG90ID0gJy4nOworCQkJCXJldHVybiAtMTsKKwkJCX0KKwkJfQorCQlpZiAoIWdldF9zaGExX2NvbW1pdHRpc2godGhpcywgZnJvbV9zaGExKSAmJgorCQkgICAgIWdldF9zaGExX2NvbW1pdHRpc2gobmV4dCwgc2hhMSkpIHsKIAkJCXN0cnVjdCBjb21taXQgKmEsICpiOwogCQkJc3RydWN0IGNvbW1pdF9saXN0ICpleGNsdWRlOwogCkBAIC0xMTY0LDYgKzExOTMsOSBAQAogCiAJCQlpZiAoc3ltbWV0cmljKSB7CiAJCQkJZXhjbHVkZSA9IGdldF9tZXJnZV9iYXNlcyhhLCBiLCAxKTsKKwkJCQlhZGRfcmV2X2NtZGxpbmVfbGlzdChyZXZzLCBleGNsdWRlLAorCQkJCQkJICAgICBSRVZfQ01EX01FUkdFX0JBU0UsCisJCQkJCQkgICAgIGZsYWdzX2V4Y2x1ZGUpOwogCQkJCWFkZF9wZW5kaW5nX2NvbW1pdF9saXN0KHJldnMsIGV4Y2x1ZGUsCiAJCQkJCQkJZmxhZ3NfZXhjbHVkZSk7CiAJCQkJZnJlZV9jb21taXRfbGlzdChleGNsdWRlKTsKQEAgLTEyMDEsMTMgKzEyMzMsMTcgQEAKIAkJbG9jYWxfZmxhZ3MgPSBVTklOVEVSRVNUSU5HOwogCQlhcmcrKzsKIAl9Ci0JaWYgKGdldF9zaGExX3dpdGhfbW9kZShhcmcsIHNoYTEsICZtb2RlKSkKKworCWlmIChyZXZhcmdfb3B0ICYgUkVWQVJHX0NPTU1JVFRJU0gpCisJCWdldF9zaGExX2ZsYWdzID0gR0VUX1NIQTFfQ09NTUlUVElTSDsKKworCWlmIChnZXRfc2hhMV93aXRoX2NvbnRleHQoYXJnLCBnZXRfc2hhMV9mbGFncywgc2hhMSwgJm9jKSkKIAkJcmV0dXJuIHJldnMtPmlnbm9yZV9taXNzaW5nID8gMCA6IC0xOwogCWlmICghY2FudF9iZV9maWxlbmFtZSkKIAkJdmVyaWZ5X25vbl9maWxlbmFtZShyZXZzLT5wcmVmaXgsIGFyZyk7CiAJb2JqZWN0ID0gZ2V0X3JlZmVyZW5jZShyZXZzLCBhcmcsIHNoYTEsIGZsYWdzIF4gbG9jYWxfZmxhZ3MpOwogCWFkZF9yZXZfY21kbGluZShyZXZzLCBvYmplY3QsIGFyZ18sIFJFVl9DTURfUkVWLCBmbGFncyBeIGxvY2FsX2ZsYWdzKTsKLQlhZGRfcGVuZGluZ19vYmplY3Rfd2l0aF9tb2RlKHJldnMsIG9iamVjdCwgYXJnLCBtb2RlKTsKKwlhZGRfcGVuZGluZ19vYmplY3Rfd2l0aF9tb2RlKHJldnMsIG9iamVjdCwgYXJnLCBvYy5tb2RlKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTI1Nyw3ICsxMjkzLDggQEAKIAkJCX0KIAkJCWRpZSgib3B0aW9ucyBub3Qgc3VwcG9ydGVkIGluIC0tc3RkaW4gbW9kZSIpOwogCQl9Ci0JCWlmIChoYW5kbGVfcmV2aXNpb25fYXJnKHNiLmJ1ZiwgcmV2cywgMCwgMSkpCisJCWlmIChoYW5kbGVfcmV2aXNpb25fYXJnKHhzdHJkdXAoc2IuYnVmKSwgcmV2cywgMCwKKwkJCQkJUkVWQVJHX0NBTk5PVF9CRV9GSUxFTkFNRSkpCiAJCQlkaWUoImJhZCByZXZpc2lvbiAnJXMnIiwgc2IuYnVmKTsKIAl9CiAJaWYgKHNlZW5fZGFzaGRhc2gpCkBAIC0xMjk0LDcgKzEzMzEsNyBAQAogCSAgICAhc3RyY21wKGFyZywgIi0tbm8td2FsayIpIHx8ICFzdHJjbXAoYXJnLCAiLS1kby13YWxrIikgfHwKIAkgICAgIXN0cmNtcChhcmcsICItLWJpc2VjdCIpIHx8ICFwcmVmaXhjbXAoYXJnLCAiLS1nbG9iPSIpIHx8CiAJICAgICFwcmVmaXhjbXAoYXJnLCAiLS1icmFuY2hlcz0iKSB8fCAhcHJlZml4Y21wKGFyZywgIi0tdGFncz0iKSB8fAotCSAgICAhcHJlZml4Y21wKGFyZywgIi0tcmVtb3Rlcz0iKSkKKwkgICAgIXByZWZpeGNtcChhcmcsICItLXJlbW90ZXM9IikgfHwgIXByZWZpeGNtcChhcmcsICItLW5vLXdhbGs9IikpCiAJewogCQl1bmt2WygqdW5rYykrK10gPSBhcmc7CiAJCXJldHVybiAxOwpAQCAtMTM1OCwxMSArMTM5NSwxMyBAQAogCQlyZXZzLT50b3BvX29yZGVyID0gMTsKIAl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1zaW1wbGlmeS1tZXJnZXMiKSkgewogCQlyZXZzLT5zaW1wbGlmeV9tZXJnZXMgPSAxOworCQlyZXZzLT50b3BvX29yZGVyID0gMTsKIAkJcmV2cy0+cmV3cml0ZV9wYXJlbnRzID0gMTsKIAkJcmV2cy0+c2ltcGxpZnlfaGlzdG9yeSA9IDA7CiAJCXJldnMtPmxpbWl0ZWQgPSAxOwogCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLXNpbXBsaWZ5LWJ5LWRlY29yYXRpb24iKSkgewogCQlyZXZzLT5zaW1wbGlmeV9tZXJnZXMgPSAxOworCQlyZXZzLT50b3BvX29yZGVyID0gMTsKIAkJcmV2cy0+cmV3cml0ZV9wYXJlbnRzID0gMTsKIAkJcmV2cy0+c2ltcGxpZnlfaGlzdG9yeSA9IDA7CiAJCXJldnMtPnNpbXBsaWZ5X2J5X2RlY29yYXRpb24gPSAxOwpAQCAtMTU3NSwxNiArMTYxNCwyNSBAQAogCX0gZWxzZSBpZiAoKGFyZ2NvdW50ID0gcGFyc2VfbG9uZ19vcHQoImNvbW1pdHRlciIsIGFyZ3YsICZvcHRhcmcpKSkgewogCQlhZGRfaGVhZGVyX2dyZXAocmV2cywgR1JFUF9IRUFERVJfQ09NTUlUVEVSLCBvcHRhcmcpOwogCQlyZXR1cm4gYXJnY291bnQ7CisJfSBlbHNlIGlmICgoYXJnY291bnQgPSBwYXJzZV9sb25nX29wdCgiZ3JlcC1yZWZsb2ciLCBhcmd2LCAmb3B0YXJnKSkpIHsKKwkJYWRkX2hlYWRlcl9ncmVwKHJldnMsIEdSRVBfSEVBREVSX1JFRkxPRywgb3B0YXJnKTsKKwkJcmV0dXJuIGFyZ2NvdW50OwogCX0gZWxzZSBpZiAoKGFyZ2NvdW50ID0gcGFyc2VfbG9uZ19vcHQoImdyZXAiLCBhcmd2LCAmb3B0YXJnKSkpIHsKIAkJYWRkX21lc3NhZ2VfZ3JlcChyZXZzLCBvcHRhcmcpOwogCQlyZXR1cm4gYXJnY291bnQ7CisJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIi0tZ3JlcC1kZWJ1ZyIpKSB7CisJCXJldnMtPmdyZXBfZmlsdGVyLmRlYnVnID0gMTsKKwl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1iYXNpYy1yZWdleHAiKSkgeworCQlncmVwX3NldF9wYXR0ZXJuX3R5cGVfb3B0aW9uKEdSRVBfUEFUVEVSTl9UWVBFX0JSRSwgJnJldnMtPmdyZXBfZmlsdGVyKTsKIAl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1leHRlbmRlZC1yZWdleHAiKSB8fCAhc3RyY21wKGFyZywgIi1FIikpIHsKLQkJcmV2cy0+Z3JlcF9maWx0ZXIucmVnZmxhZ3MgfD0gUkVHX0VYVEVOREVEOworCQlncmVwX3NldF9wYXR0ZXJuX3R5cGVfb3B0aW9uKEdSRVBfUEFUVEVSTl9UWVBFX0VSRSwgJnJldnMtPmdyZXBfZmlsdGVyKTsKIAl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1yZWdleHAtaWdub3JlLWNhc2UiKSB8fCAhc3RyY21wKGFyZywgIi1pIikpIHsKIAkJcmV2cy0+Z3JlcF9maWx0ZXIucmVnZmxhZ3MgfD0gUkVHX0lDQVNFOwogCQlESUZGX09QVF9TRVQoJnJldnMtPmRpZmZvcHQsIFBJQ0tBWEVfSUdOT1JFX0NBU0UpOwogCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLWZpeGVkLXN0cmluZ3MiKSB8fCAhc3RyY21wKGFyZywgIi1GIikpIHsKLQkJcmV2cy0+Z3JlcF9maWx0ZXIuZml4ZWQgPSAxOworCQlncmVwX3NldF9wYXR0ZXJuX3R5cGVfb3B0aW9uKEdSRVBfUEFUVEVSTl9UWVBFX0ZJWEVELCAmcmV2cy0+Z3JlcF9maWx0ZXIpOworCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLXBlcmwtcmVnZXhwIikpIHsKKwkJZ3JlcF9zZXRfcGF0dGVybl90eXBlX29wdGlvbihHUkVQX1BBVFRFUk5fVFlQRV9QQ1JFLCAmcmV2cy0+Z3JlcF9maWx0ZXIpOwogCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLWFsbC1tYXRjaCIpKSB7CiAJCXJldnMtPmdyZXBfZmlsdGVyLmFsbF9tYXRjaCA9IDE7CiAJfSBlbHNlIGlmICgoYXJnY291bnQgPSBwYXJzZV9sb25nX29wdCgiZW5jb2RpbmciLCBhcmd2LCAmb3B0YXJnKSkpIHsKQEAgLTE2ODcsNyArMTczNSwxOCBAQAogCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLW5vdCIpKSB7CiAJCSpmbGFncyBePSBVTklOVEVSRVNUSU5HOwogCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLW5vLXdhbGsiKSkgewotCQlyZXZzLT5ub193YWxrID0gMTsKKwkJcmV2cy0+bm9fd2FsayA9IFJFVklTSU9OX1dBTEtfTk9fV0FMS19TT1JURUQ7CisJfSBlbHNlIGlmICghcHJlZml4Y21wKGFyZywgIi0tbm8td2Fsaz0iKSkgeworCQkvKgorCQkgKiBEZXRhY2hlZCBmb3JtICgiLS1uby13YWxrIFgiIGFzIG9wcG9zZWQgdG8gIi0tbm8td2Fsaz1YIikKKwkJICogbm90IGFsbG93ZWQsIHNpbmNlIHRoZSBhcmd1bWVudCBpcyBvcHRpb25hbC4KKwkJICovCisJCWlmICghc3RyY21wKGFyZyArIDEwLCAic29ydGVkIikpCisJCQlyZXZzLT5ub193YWxrID0gUkVWSVNJT05fV0FMS19OT19XQUxLX1NPUlRFRDsKKwkJZWxzZSBpZiAoIXN0cmNtcChhcmcgKyAxMCwgInVuc29ydGVkIikpCisJCQlyZXZzLT5ub193YWxrID0gUkVWSVNJT05fV0FMS19OT19XQUxLX1VOU09SVEVEOworCQllbHNlCisJCQlyZXR1cm4gZXJyb3IoImludmFsaWQgYXJndW1lbnQgdG8gLS1uby13YWxrIik7CiAJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIi0tZG8td2FsayIpKSB7CiAJCXJldnMtPm5vX3dhbGsgPSAwOwogCX0gZWxzZSB7CkBAIC0xNzA2LDcgKzE3NjUsNyBAQAogICovCiBpbnQgc2V0dXBfcmV2aXNpb25zKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3Qgc2V0dXBfcmV2aXNpb25fb3B0ICpvcHQpCiB7Ci0JaW50IGksIGZsYWdzLCBsZWZ0LCBzZWVuX2Rhc2hkYXNoLCByZWFkX2Zyb21fc3RkaW4sIGdvdF9yZXZfYXJnID0gMDsKKwlpbnQgaSwgZmxhZ3MsIGxlZnQsIHNlZW5fZGFzaGRhc2gsIHJlYWRfZnJvbV9zdGRpbiwgZ290X3Jldl9hcmcgPSAwLCByZXZhcmdfb3B0OwogCXN0cnVjdCBjbWRsaW5lX3BhdGhzcGVjIHBydW5lX2RhdGE7CiAJY29uc3QgY2hhciAqc3VibW9kdWxlID0gTlVMTDsKIApAQCAtMTczNCw2ICsxNzkzLDkgQEAKIAogCS8qIFNlY29uZCwgZGVhbCB3aXRoIGFyZ3VtZW50cyBhbmQgb3B0aW9ucyAqLwogCWZsYWdzID0gMDsKKwlyZXZhcmdfb3B0ID0gb3B0ID8gb3B0LT5yZXZhcmdfb3B0IDogMDsKKwlpZiAoc2Vlbl9kYXNoZGFzaCkKKwkJcmV2YXJnX29wdCB8PSBSRVZBUkdfQ0FOTk9UX0JFX0ZJTEVOQU1FOwogCXJlYWRfZnJvbV9zdGRpbiA9IDA7CiAJZm9yIChsZWZ0ID0gaSA9IDE7IGkgPCBhcmdjOyBpKyspIHsKIAkJY29uc3QgY2hhciAqYXJnID0gYXJndltpXTsKQEAgLTE3NjksNyArMTgzMSw4IEBACiAJCQljb250aW51ZTsKIAkJfQogCi0JCWlmIChoYW5kbGVfcmV2aXNpb25fYXJnKGFyZywgcmV2cywgZmxhZ3MsIHNlZW5fZGFzaGRhc2gpKSB7CisKKwkJaWYgKGhhbmRsZV9yZXZpc2lvbl9hcmcoYXJnLCByZXZzLCBmbGFncywgcmV2YXJnX29wdCkpIHsKIAkJCWludCBqOwogCQkJaWYgKHNlZW5fZGFzaGRhc2ggfHwgKmFyZyA9PSAnXicpCiAJCQkJZGllKCJiYWQgcmV2aXNpb24gJyVzJyIsIGFyZyk7CkBAIC0xNzgxLDcgKzE4NDQsNyBAQAogCQkJICogYnV0IHRoZSBsYXR0ZXIgd2UgaGF2ZSBjaGVja2VkIGluIHRoZSBtYWluIGxvb3AuCiAJCQkgKi8KIAkJCWZvciAoaiA9IGk7IGogPCBhcmdjOyBqKyspCi0JCQkJdmVyaWZ5X2ZpbGVuYW1lKHJldnMtPnByZWZpeCwgYXJndltqXSk7CisJCQkJdmVyaWZ5X2ZpbGVuYW1lKHJldnMtPnByZWZpeCwgYXJndltqXSwgaiA9PSBpKTsKIAogCQkJYXBwZW5kX3BydW5lX2RhdGEoJnBydW5lX2RhdGEsIGFyZ3YgKyBpKTsKIAkJCWJyZWFrOwpAQCAtMTgyMCwxMSArMTg4MywxMSBAQAogCWlmIChyZXZzLT5kZWYgJiYgIXJldnMtPnBlbmRpbmcubnIgJiYgIWdvdF9yZXZfYXJnKSB7CiAJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAJCXN0cnVjdCBvYmplY3QgKm9iamVjdDsKLQkJdW5zaWduZWQgbW9kZTsKLQkJaWYgKGdldF9zaGExX3dpdGhfbW9kZShyZXZzLT5kZWYsIHNoYTEsICZtb2RlKSkKKwkJc3RydWN0IG9iamVjdF9jb250ZXh0IG9jOworCQlpZiAoZ2V0X3NoYTFfd2l0aF9jb250ZXh0KHJldnMtPmRlZiwgMCwgc2hhMSwgJm9jKSkKIAkJCWRpZSgiYmFkIGRlZmF1bHQgcmV2aXNpb24gJyVzJyIsIHJldnMtPmRlZik7CiAJCW9iamVjdCA9IGdldF9yZWZlcmVuY2UocmV2cywgcmV2cy0+ZGVmLCBzaGExLCAwKTsKLQkJYWRkX3BlbmRpbmdfb2JqZWN0X3dpdGhfbW9kZShyZXZzLCBvYmplY3QsIHJldnMtPmRlZiwgbW9kZSk7CisJCWFkZF9wZW5kaW5nX29iamVjdF93aXRoX21vZGUocmV2cywgb2JqZWN0LCByZXZzLT5kZWYsIG9jLm1vZGUpOwogCX0KIAogCS8qIERpZCB0aGUgdXNlciBhc2sgZm9yIGFueSBkaWZmIG91dHB1dD8gUnVuIHRoZSBkaWZmISAqLwpAQCAtMTg1MSw5ICsxOTE0LDEwIEBACiAJaWYgKHJldnMtPmNvbWJpbmVfbWVyZ2VzKQogCQlyZXZzLT5pZ25vcmVfbWVyZ2VzID0gMDsKIAlyZXZzLT5kaWZmb3B0LmFiYnJldiA9IHJldnMtPmFiYnJldjsKLQlpZiAoZGlmZl9zZXR1cF9kb25lKCZyZXZzLT5kaWZmb3B0KSA8IDApCi0JCWRpZSgiZGlmZl9zZXR1cF9kb25lIGZhaWxlZCIpOworCWRpZmZfc2V0dXBfZG9uZSgmcmV2cy0+ZGlmZm9wdCk7CiAKKwlncmVwX2NvbW1pdF9wYXR0ZXJuX3R5cGUoR1JFUF9QQVRURVJOX1RZUEVfVU5TUEVDSUZJRUQsCisJCQkJICZyZXZzLT5ncmVwX2ZpbHRlcik7CiAJY29tcGlsZV9ncmVwX3BhdHRlcm5zKCZyZXZzLT5ncmVwX2ZpbHRlcik7CiAKIAlpZiAocmV2cy0+cmV2ZXJzZSAmJiByZXZzLT5yZWZsb2dfaW5mbykKQEAgLTE4NjksNiArMTkzMyw4IEBACiAKIAlpZiAocmV2cy0+cmVmbG9nX2luZm8gJiYgcmV2cy0+Z3JhcGgpCiAJCWRpZSgiY2Fubm90IGNvbWJpbmUgLS13YWxrLXJlZmxvZ3Mgd2l0aCAtLWdyYXBoIik7CisJaWYgKCFyZXZzLT5yZWZsb2dfaW5mbyAmJiByZXZzLT5ncmVwX2ZpbHRlci51c2VfcmVmbG9nX2ZpbHRlcikKKwkJZGllKCJjYW5ub3QgdXNlIC0tZ3JlcC1yZWZsb2cgd2l0aG91dCAtLXdhbGstcmVmbG9ncyIpOwogCiAJcmV0dXJuIGxlZnQ7CiB9CkBAIC0xOTQ3LDggKzIwMTMsOSBAQAogCX0KIAogCS8qCi0JICogRG8gd2Uga25vdyB3aGF0IGNvbW1pdCBhbGwgb2Ygb3VyIHBhcmVudHMgc2hvdWxkIGJlIHJld3JpdHRlbiB0bz8KLQkgKiBPdGhlcndpc2Ugd2UgYXJlIG5vdCByZWFkeSB0byByZXdyaXRlIHRoaXMgb25lIHlldC4KKwkgKiBEbyB3ZSBrbm93IHdoYXQgY29tbWl0IGFsbCBvZiBvdXIgcGFyZW50cyB0aGF0IG1hdHRlcgorCSAqIHNob3VsZCBiZSByZXdyaXR0ZW4gdG8/ICBPdGhlcndpc2Ugd2UgYXJlIG5vdCByZWFkeSB0bworCSAqIHJld3JpdGUgdGhpcyBvbmUgeWV0LgogCSAqLwogCWZvciAoY250ID0gMCwgcCA9IGNvbW1pdC0+cGFyZW50czsgcDsgcCA9IHAtPm5leHQpIHsKIAkJcHN0ID0gbG9jYXRlX3NpbXBsaWZ5X3N0YXRlKHJldnMsIHAtPml0ZW0pOwpAQCAtMTk1Niw2ICsyMDIzLDggQEAKIAkJCXRhaWwgPSAmY29tbWl0X2xpc3RfaW5zZXJ0KHAtPml0ZW0sIHRhaWwpLT5uZXh0OwogCQkJY250Kys7CiAJCX0KKwkJaWYgKHJldnMtPmZpcnN0X3BhcmVudF9vbmx5KQorCQkJYnJlYWs7CiAJfQogCWlmIChjbnQpIHsKIAkJdGFpbCA9ICZjb21taXRfbGlzdF9pbnNlcnQoY29tbWl0LCB0YWlsKS0+bmV4dDsKQEAgLTE5NjgsOCArMjAzNywxNCBAQAogCWZvciAocCA9IGNvbW1pdC0+cGFyZW50czsgcDsgcCA9IHAtPm5leHQpIHsKIAkJcHN0ID0gbG9jYXRlX3NpbXBsaWZ5X3N0YXRlKHJldnMsIHAtPml0ZW0pOwogCQlwLT5pdGVtID0gcHN0LT5zaW1wbGlmaWVkOworCQlpZiAocmV2cy0+Zmlyc3RfcGFyZW50X29ubHkpCisJCQlicmVhazsKIAl9Ci0JY250ID0gcmVtb3ZlX2R1cGxpY2F0ZV9wYXJlbnRzKGNvbW1pdCk7CisKKwlpZiAocmV2cy0+Zmlyc3RfcGFyZW50X29ubHkpCisJCWNudCA9IDE7CisJZWxzZQorCQljbnQgPSByZW1vdmVfZHVwbGljYXRlX3BhcmVudHMoY29tbWl0KTsKIAogCS8qCiAJICogSXQgaXMgcG9zc2libGUgdGhhdCB3ZSBhcmUgYSBtZXJnZSBhbmQgb25lIHNpZGUgYnJhbmNoCkBAIC0yMDEzLDI1ICsyMDg4LDMxIEBACiAKIHN0YXRpYyB2b2lkIHNpbXBsaWZ5X21lcmdlcyhzdHJ1Y3QgcmV2X2luZm8gKnJldnMpCiB7Ci0Jc3RydWN0IGNvbW1pdF9saXN0ICpsaXN0OworCXN0cnVjdCBjb21taXRfbGlzdCAqbGlzdCwgKm5leHQ7CiAJc3RydWN0IGNvbW1pdF9saXN0ICp5ZXRfdG9fZG8sICoqdGFpbDsKKwlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CiAKLQlpZiAoIXJldnMtPnRvcG9fb3JkZXIpCi0JCXNvcnRfaW5fdG9wb2xvZ2ljYWxfb3JkZXIoJnJldnMtPmNvbW1pdHMsIHJldnMtPmxpZm8pOwogCWlmICghcmV2cy0+cHJ1bmUpCiAJCXJldHVybjsKIAogCS8qIGZlZWQgdGhlIGxpc3QgcmV2ZXJzZWQgKi8KIAl5ZXRfdG9fZG8gPSBOVUxMOwotCWZvciAobGlzdCA9IHJldnMtPmNvbW1pdHM7IGxpc3Q7IGxpc3QgPSBsaXN0LT5uZXh0KQotCQljb21taXRfbGlzdF9pbnNlcnQobGlzdC0+aXRlbSwgJnlldF90b19kbyk7CisJZm9yIChsaXN0ID0gcmV2cy0+Y29tbWl0czsgbGlzdDsgbGlzdCA9IG5leHQpIHsKKwkJY29tbWl0ID0gbGlzdC0+aXRlbTsKKwkJbmV4dCA9IGxpc3QtPm5leHQ7CisJCS8qCisJCSAqIERvIG5vdCBmcmVlKGxpc3QpIGhlcmUgeWV0OyB0aGUgb3JpZ2luYWwgbGlzdAorCQkgKiBpcyB1c2VkIGxhdGVyIGluIHRoaXMgZnVuY3Rpb24uCisJCSAqLworCQljb21taXRfbGlzdF9pbnNlcnQoY29tbWl0LCAmeWV0X3RvX2RvKTsKKwl9CiAJd2hpbGUgKHlldF90b19kbykgewogCQlsaXN0ID0geWV0X3RvX2RvOwogCQl5ZXRfdG9fZG8gPSBOVUxMOwogCQl0YWlsID0gJnlldF90b19kbzsKIAkJd2hpbGUgKGxpc3QpIHsKLQkJCXN0cnVjdCBjb21taXQgKmNvbW1pdCA9IGxpc3QtPml0ZW07Ci0JCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKm5leHQgPSBsaXN0LT5uZXh0OworCQkJY29tbWl0ID0gbGlzdC0+aXRlbTsKKwkJCW5leHQgPSBsaXN0LT5uZXh0OwogCQkJZnJlZShsaXN0KTsKIAkJCWxpc3QgPSBuZXh0OwogCQkJdGFpbCA9IHNpbXBsaWZ5X29uZShyZXZzLCBjb21taXQsIHRhaWwpOwpAQCAtMjA0Myw5ICsyMTI0LDEwIEBACiAJcmV2cy0+Y29tbWl0cyA9IE5VTEw7CiAJdGFpbCA9ICZyZXZzLT5jb21taXRzOwogCXdoaWxlIChsaXN0KSB7Ci0JCXN0cnVjdCBjb21taXQgKmNvbW1pdCA9IGxpc3QtPml0ZW07Ci0JCXN0cnVjdCBjb21taXRfbGlzdCAqbmV4dCA9IGxpc3QtPm5leHQ7CiAJCXN0cnVjdCBtZXJnZV9zaW1wbGlmeV9zdGF0ZSAqc3Q7CisKKwkJY29tbWl0ID0gbGlzdC0+aXRlbTsKKwkJbmV4dCA9IGxpc3QtPm5leHQ7CiAJCWZyZWUobGlzdCk7CiAJCWxpc3QgPSBuZXh0OwogCQlzdCA9IGxvY2F0ZV9zaW1wbGlmeV9zdGF0ZShyZXZzLCBjb21taXQpOwpAQCAtMjA5MSwxMCArMjE3MywxMSBAQAogCQl9CiAJCWUrKzsKIAl9Ci0JY29tbWl0X2xpc3Rfc29ydF9ieV9kYXRlKCZyZXZzLT5jb21taXRzKTsKIAlpZiAoIXJldnMtPmxlYWtfcGVuZGluZykKIAkJZnJlZShsaXN0KTsKIAorCWlmIChyZXZzLT5ub193YWxrICE9IFJFVklTSU9OX1dBTEtfTk9fV0FMS19VTlNPUlRFRCkKKwkJY29tbWl0X2xpc3Rfc29ydF9ieV9kYXRlKCZyZXZzLT5jb21taXRzKTsKIAlpZiAocmV2cy0+bm9fd2FsaykKIAkJcmV0dXJuIDA7CiAJaWYgKHJldnMtPmxpbWl0ZWQpCkBAIC0yMTU2LDEyICsyMjM5LDEwNiBAQAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGNvbW1pdF9yZXdyaXRlX3BlcnNvbihzdHJ1Y3Qgc3RyYnVmICpidWYsIGNvbnN0IGNoYXIgKndoYXQsIHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFpbG1hcCkKK3sKKwljaGFyICpwZXJzb24sICplbmRwOworCXNpemVfdCBsZW4sIG5hbWVsZW4sIG1haWxsZW47CisJY29uc3QgY2hhciAqbmFtZTsKKwljb25zdCBjaGFyICptYWlsOworCXN0cnVjdCBpZGVudF9zcGxpdCBpZGVudDsKKworCXBlcnNvbiA9IHN0cnN0cihidWYtPmJ1Ziwgd2hhdCk7CisJaWYgKCFwZXJzb24pCisJCXJldHVybiAwOworCisJcGVyc29uICs9IHN0cmxlbih3aGF0KTsKKwllbmRwID0gc3RyY2hyKHBlcnNvbiwgJ1xuJyk7CisJaWYgKCFlbmRwKQorCQlyZXR1cm4gMDsKKworCWxlbiA9IGVuZHAgLSBwZXJzb247CisKKwlpZiAoc3BsaXRfaWRlbnRfbGluZSgmaWRlbnQsIHBlcnNvbiwgbGVuKSkKKwkJcmV0dXJuIDA7CisKKwltYWlsID0gaWRlbnQubWFpbF9iZWdpbjsKKwltYWlsbGVuID0gaWRlbnQubWFpbF9lbmQgLSBpZGVudC5tYWlsX2JlZ2luOworCW5hbWUgPSBpZGVudC5uYW1lX2JlZ2luOworCW5hbWVsZW4gPSBpZGVudC5uYW1lX2VuZCAtIGlkZW50Lm5hbWVfYmVnaW47CisKKwlpZiAobWFwX3VzZXIobWFpbG1hcCwgJm1haWwsICZtYWlsbGVuLCAmbmFtZSwgJm5hbWVsZW4pKSB7CisJCXN0cnVjdCBzdHJidWYgbmFtZW1haWwgPSBTVFJCVUZfSU5JVDsKKworCQlzdHJidWZfYWRkZigmbmFtZW1haWwsICIlLipzIDwlLipzPiIsCisJCQkgICAgKGludCluYW1lbGVuLCBuYW1lLCAoaW50KW1haWxsZW4sIG1haWwpOworCisJCXN0cmJ1Zl9zcGxpY2UoYnVmLCBpZGVudC5uYW1lX2JlZ2luIC0gYnVmLT5idWYsCisJCQkgICAgICBpZGVudC5tYWlsX2VuZCAtIGlkZW50Lm5hbWVfYmVnaW4gKyAxLAorCQkJICAgICAgbmFtZW1haWwuYnVmLCBuYW1lbWFpbC5sZW4pOworCisJCXN0cmJ1Zl9yZWxlYXNlKCZuYW1lbWFpbCk7CisKKwkJcmV0dXJuIDE7CisJfQorCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgY29tbWl0X21hdGNoKHN0cnVjdCBjb21taXQgKmNvbW1pdCwgc3RydWN0IHJldl9pbmZvICpvcHQpCiB7CisJaW50IHJldHZhbDsKKwljb25zdCBjaGFyICplbmNvZGluZzsKKwljaGFyICptZXNzYWdlOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisKIAlpZiAoIW9wdC0+Z3JlcF9maWx0ZXIucGF0dGVybl9saXN0ICYmICFvcHQtPmdyZXBfZmlsdGVyLmhlYWRlcl9saXN0KQogCQlyZXR1cm4gMTsKLQlyZXR1cm4gZ3JlcF9idWZmZXIoJm9wdC0+Z3JlcF9maWx0ZXIsCi0JCQkgICBjb21taXQtPmJ1ZmZlciwgc3RybGVuKGNvbW1pdC0+YnVmZmVyKSk7CisKKwkvKiBQcmVwZW5kICJmYWtlIiBoZWFkZXJzIGFzIG5lZWRlZCAqLworCWlmIChvcHQtPmdyZXBfZmlsdGVyLnVzZV9yZWZsb2dfZmlsdGVyKSB7CisJCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgInJlZmxvZyAiKTsKKwkJZ2V0X3JlZmxvZ19tZXNzYWdlKCZidWYsIG9wdC0+cmVmbG9nX2luZm8pOworCQlzdHJidWZfYWRkY2goJmJ1ZiwgJ1xuJyk7CisJfQorCisJLyoKKwkgKiBXZSBncmVwIGluIHRoZSB1c2VyJ3Mgb3V0cHV0IGVuY29kaW5nLCB1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IGl0CisJICogaXMgdGhlIGVuY29kaW5nIHRoZXkgYXJlIG1vc3QgbGlrZWx5IHRvIHdyaXRlIHRoZWlyIGdyZXAgcGF0dGVybgorCSAqIGZvci4gSW4gYWRkaXRpb24sIGl0IG1lYW5zIHdlIHdpbGwgbWF0Y2ggdGhlICJub3RlcyIgZW5jb2RpbmcgYmVsb3csCisJICogc28gd2Ugd2lsbCBub3QgZW5kIHVwIHdpdGggYSBidWZmZXIgdGhhdCBoYXMgdHdvIGRpZmZlcmVudCBlbmNvZGluZ3MKKwkgKiBpbiBpdC4KKwkgKi8KKwllbmNvZGluZyA9IGdldF9sb2dfb3V0cHV0X2VuY29kaW5nKCk7CisJbWVzc2FnZSA9IGxvZ21zZ19yZWVuY29kZShjb21taXQsIE5VTEwsIGVuY29kaW5nKTsKKworCS8qIENvcHkgdGhlIGNvbW1pdCB0byB0ZW1wb3JhcnkgaWYgd2UgYXJlIHVzaW5nICJmYWtlIiBoZWFkZXJzICovCisJaWYgKGJ1Zi5sZW4pCisJCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgbWVzc2FnZSk7CisKKwlpZiAob3B0LT5ncmVwX2ZpbHRlci5oZWFkZXJfbGlzdCAmJiBvcHQtPm1haWxtYXApIHsKKwkJaWYgKCFidWYubGVuKQorCQkJc3RyYnVmX2FkZHN0cigmYnVmLCBtZXNzYWdlKTsKKworCQljb21taXRfcmV3cml0ZV9wZXJzb24oJmJ1ZiwgIlxuYXV0aG9yICIsIG9wdC0+bWFpbG1hcCk7CisJCWNvbW1pdF9yZXdyaXRlX3BlcnNvbigmYnVmLCAiXG5jb21taXR0ZXIgIiwgb3B0LT5tYWlsbWFwKTsKKwl9CisKKwkvKiBBcHBlbmQgImZha2UiIG1lc3NhZ2UgcGFydHMgYXMgbmVlZGVkICovCisJaWYgKG9wdC0+c2hvd19ub3RlcykgeworCQlpZiAoIWJ1Zi5sZW4pCisJCQlzdHJidWZfYWRkc3RyKCZidWYsIG1lc3NhZ2UpOworCQlmb3JtYXRfZGlzcGxheV9ub3Rlcyhjb21taXQtPm9iamVjdC5zaGExLCAmYnVmLCBlbmNvZGluZywgMSk7CisJfQorCisJLyogRmluZCBlaXRoZXIgaW4gdGhlIG9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlLCBvciBpbiB0aGUgdGVtcG9yYXJ5ICovCisJaWYgKGJ1Zi5sZW4pCisJCXJldHZhbCA9IGdyZXBfYnVmZmVyKCZvcHQtPmdyZXBfZmlsdGVyLCBidWYuYnVmLCBidWYubGVuKTsKKwllbHNlCisJCXJldHZhbCA9IGdyZXBfYnVmZmVyKCZvcHQtPmdyZXBfZmlsdGVyLAorCQkJCSAgICAgbWVzc2FnZSwgc3RybGVuKG1lc3NhZ2UpKTsKKwlzdHJidWZfcmVsZWFzZSgmYnVmKTsKKwlsb2dtc2dfZnJlZShtZXNzYWdlLCBjb21taXQpOworCXJldHVybiByZXR2YWw7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IHdhbnRfYW5jZXN0cnkoc3RydWN0IHJldl9pbmZvICpyZXZzKQpAQCAtMjM0NCwyOSArMjUyMSwyOCBAQAogCX0KIAogCS8qCi0JICogTm93IHBpY2sgdXAgd2hhdCB0aGV5IHdhbnQgdG8gZ2l2ZSB1cworCSAqIElmIG91ciBtYXhfY291bnQgY291bnRlciBoYXMgcmVhY2hlZCB6ZXJvLCB0aGVuIHdlIGFyZSBkb25lLiBXZQorCSAqIGRvbid0IHNpbXBseSByZXR1cm4gTlVMTCBiZWNhdXNlIHdlIHN0aWxsIG1pZ2h0IG5lZWQgdG8gc2hvdworCSAqIGJvdW5kYXJ5IGNvbW1pdHMuIEJ1dCB3ZSB3YW50IHRvIGF2b2lkIGNhbGxpbmcgZ2V0X3JldmlzaW9uXzEsIHdoaWNoCisJICogbWlnaHQgZG8gYSBjb25zaWRlcmFibGUgYW1vdW50IG9mIHdvcmsgZmluZGluZyB0aGUgbmV4dCBjb21taXQgb25seQorCSAqIGZvciB1cyB0byB0aHJvdyBpdCBhd2F5LgorCSAqCisJICogSWYgaXQgaXMgbm9uLXplcm8sIHRoZW4gZWl0aGVyIHdlIGRvbid0IGhhdmUgYSBtYXhfY291bnQgYXQgYWxsCisJICogKC0xKSwgb3IgaXQgaXMgc3RpbGwgY291bnRpbmcsIGluIHdoaWNoIGNhc2Ugd2UgZGVjcmVtZW50LgogCSAqLwotCWMgPSBnZXRfcmV2aXNpb25fMShyZXZzKTsKLQlpZiAoYykgewotCQl3aGlsZSAoMCA8IHJldnMtPnNraXBfY291bnQpIHsKLQkJCXJldnMtPnNraXBfY291bnQtLTsKLQkJCWMgPSBnZXRfcmV2aXNpb25fMShyZXZzKTsKLQkJCWlmICghYykKLQkJCQlicmVhazsKKwlpZiAocmV2cy0+bWF4X2NvdW50KSB7CisJCWMgPSBnZXRfcmV2aXNpb25fMShyZXZzKTsKKwkJaWYgKGMpIHsKKwkJCXdoaWxlICgwIDwgcmV2cy0+c2tpcF9jb3VudCkgeworCQkJCXJldnMtPnNraXBfY291bnQtLTsKKwkJCQljID0gZ2V0X3JldmlzaW9uXzEocmV2cyk7CisJCQkJaWYgKCFjKQorCQkJCQlicmVhazsKKwkJCX0KIAkJfQotCX0KIAotCS8qCi0JICogQ2hlY2sgdGhlIG1heF9jb3VudC4KLQkgKi8KLQlzd2l0Y2ggKHJldnMtPm1heF9jb3VudCkgewotCWNhc2UgLTE6Ci0JCWJyZWFrOwotCWNhc2UgMDoKLQkJYyA9IE5VTEw7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXJldnMtPm1heF9jb3VudC0tOworCQlpZiAocmV2cy0+bWF4X2NvdW50ID4gMCkKKwkJCXJldnMtPm1heF9jb3VudC0tOwogCX0KIAogCWlmIChjKQpkaWZmIC0tZ2l0IGEvcmV2aXNpb24uaCBiL3JldmlzaW9uLmgKaW5kZXggODYzZjRmNi4uODc4YTU1NSAxMDA2NDQKLS0tIGEvcmV2aXNpb24uaAorKysgYi9yZXZpc2lvbi5oCkBAIC0zNSwxMiArMzUsMTcgQEAKIAkJCVJFVl9DTURfUEFSRU5UU19PTkxZLAogCQkJUkVWX0NNRF9MRUZULAogCQkJUkVWX0NNRF9SSUdIVCwKKwkJCVJFVl9DTURfTUVSR0VfQkFTRSwKIAkJCVJFVl9DTURfUkVWCiAJCX0gd2hlbmNlOwogCQl1bnNpZ25lZCBmbGFnczsKIAl9ICpyZXY7CiB9OwogCisjZGVmaW5lIFJFVklTSU9OX1dBTEtfV0FMSyAwCisjZGVmaW5lIFJFVklTSU9OX1dBTEtfTk9fV0FMS19TT1JURUQgMQorI2RlZmluZSBSRVZJU0lPTl9XQUxLX05PX1dBTEtfVU5TT1JURUQgMgorCiBzdHJ1Y3QgcmV2X2luZm8gewogCS8qIFN0YXJ0aW5nIGxpc3QgKi8KIAlzdHJ1Y3QgY29tbWl0X2xpc3QgKmNvbW1pdHM7CkBAIC02Miw3ICs2Nyw3IEBACiAJLyogVHJhdmVyc2FsIGZsYWdzICovCiAJdW5zaWduZWQgaW50CWRlbnNlOjEsCiAJCQlwcnVuZToxLAotCQkJbm9fd2FsazoxLAorCQkJbm9fd2FsazoyLAogCQkJc2hvd19hbGw6MSwKIAkJCXJlbW92ZV9lbXB0eV90cmVlczoxLAogCQkJc2ltcGxpZnlfaGlzdG9yeToxLApAQCAtMTA3LDYgKzExMiw3IEBACiAKIAkvKiBGb3JtYXQgaW5mbyAqLwogCXVuc2lnbmVkIGludAlzaG93bl9vbmU6MSwKKwkJCXNob3duX2Rhc2hlczoxLAogCQkJc2hvd19tZXJnZToxLAogCQkJc2hvd19ub3RlczoxLAogCQkJc2hvd19ub3Rlc19naXZlbjoxLApAQCAtMTMwLDE0ICsxMzYsMTYgQEAKIAljb25zdCBjaGFyCSptaW1lX2JvdW5kYXJ5OwogCWNvbnN0IGNoYXIJKnBhdGNoX3N1ZmZpeDsKIAlpbnQJCW51bWJlcmVkX2ZpbGVzOworCWludAkJcmVyb2xsX2NvdW50OwogCWNoYXIJCSptZXNzYWdlX2lkOwogCXN0cnVjdCBzdHJpbmdfbGlzdCAqcmVmX21lc3NhZ2VfaWRzOwotCWNvbnN0IGNoYXIJKmFkZF9zaWdub2ZmOworCWludAkJYWRkX3NpZ25vZmY7CiAJY29uc3QgY2hhcgkqZXh0cmFfaGVhZGVyczsKIAljb25zdCBjaGFyCSpsb2dfcmVlbmNvZGU7CiAJY29uc3QgY2hhcgkqc3ViamVjdF9wcmVmaXg7CiAJaW50CQlub19pbmxpbmU7CiAJaW50CQlzaG93X2xvZ19zaXplOworCXN0cnVjdCBzdHJpbmdfbGlzdCAqbWFpbG1hcDsKIAogCS8qIEZpbHRlciBieSBjb21taXQgbG9nIG1lc3NhZ2UgKi8KIAlzdHJ1Y3QgZ3JlcF9vcHQJZ3JlcF9maWx0ZXI7CkBAIC0xODQsNiArMTkyLDcgQEAKIAl2b2lkICgqdHdlYWspKHN0cnVjdCByZXZfaW5mbyAqLCBzdHJ1Y3Qgc2V0dXBfcmV2aXNpb25fb3B0ICopOwogCWNvbnN0IGNoYXIgKnN1Ym1vZHVsZTsKIAlpbnQgYXNzdW1lX2Rhc2hkYXNoOworCXVuc2lnbmVkIHJldmFyZ19vcHQ7CiB9OwogCiBleHRlcm4gdm9pZCBpbml0X3JldmlzaW9ucyhzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIGNvbnN0IGNoYXIgKnByZWZpeCk7CkBAIC0xOTEsNyArMjAwLDkgQEAKIGV4dGVybiB2b2lkIHBhcnNlX3JldmlzaW9uX29wdChzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBwYXJzZV9vcHRfY3R4X3QgKmN0eCwKIAkJCQkgY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0aW9ucywKIAkJCQkgY29uc3QgY2hhciAqIGNvbnN0IHVzYWdlc3RyW10pOwotZXh0ZXJuIGludCBoYW5kbGVfcmV2aXNpb25fYXJnKGNvbnN0IGNoYXIgKmFyZywgc3RydWN0IHJldl9pbmZvICpyZXZzLGludCBmbGFncyxpbnQgY2FudF9iZV9maWxlbmFtZSk7CisjZGVmaW5lIFJFVkFSR19DQU5OT1RfQkVfRklMRU5BTUUgMDEKKyNkZWZpbmUgUkVWQVJHX0NPTU1JVFRJU0ggMDIKK2V4dGVybiBpbnQgaGFuZGxlX3JldmlzaW9uX2FyZyhjb25zdCBjaGFyICphcmcsIHN0cnVjdCByZXZfaW5mbyAqcmV2cywgaW50IGZsYWdzLCB1bnNpZ25lZCByZXZhcmdfb3B0KTsKIAogZXh0ZXJuIHZvaWQgcmVzZXRfcmV2aXNpb25fd2Fsayh2b2lkKTsKIGV4dGVybiBpbnQgcHJlcGFyZV9yZXZpc2lvbl93YWxrKHN0cnVjdCByZXZfaW5mbyAqcmV2cyk7CmRpZmYgLS1naXQgYS9ydW4tY29tbWFuZC5jIGIvcnVuLWNvbW1hbmQuYwppbmRleCA2MDY3OTFkLi4xYjMyYTEyIDEwMDY0NAotLS0gYS9ydW4tY29tbWFuZC5jCisrKyBiL3J1bi1jb21tYW5kLmMKQEAgLTUzLDEzICs1MywxNCBAQAogCiBzdGF0aWMgdm9pZCBjbGVhcl9jaGlsZF9mb3JfY2xlYW51cChwaWRfdCBwaWQpCiB7Ci0Jc3RydWN0IGNoaWxkX3RvX2NsZWFuICoqbGFzdCwgKnA7CisJc3RydWN0IGNoaWxkX3RvX2NsZWFuICoqcHA7CiAKLQlsYXN0ID0gJmNoaWxkcmVuX3RvX2NsZWFuOwotCWZvciAocCA9IGNoaWxkcmVuX3RvX2NsZWFuOyBwOyBwID0gcC0+bmV4dCkgewotCQlpZiAocC0+cGlkID09IHBpZCkgewotCQkJKmxhc3QgPSBwLT5uZXh0OwotCQkJZnJlZShwKTsKKwlmb3IgKHBwID0gJmNoaWxkcmVuX3RvX2NsZWFuOyAqcHA7IHBwID0gJigqcHApLT5uZXh0KSB7CisJCXN0cnVjdCBjaGlsZF90b19jbGVhbiAqY2xlYW5fbWUgPSAqcHA7CisKKwkJaWYgKGNsZWFuX21lLT5waWQgPT0gcGlkKSB7CisJCQkqcHAgPSBjbGVhbl9tZS0+bmV4dDsKKwkJCWZyZWUoY2xlYW5fbWUpOwogCQkJcmV0dXJuOwogCQl9CiAJfQpAQCAtMTM5LDYgKzE0MCw4IEBACiAJICovCiAJaWYgKGVycm5vID09IEVBQ0NFUyAmJiAhc3RyY2hyKGZpbGUsICcvJykpCiAJCWVycm5vID0gZXhpc3RzX2luX1BBVEgoZmlsZSkgPyBFQUNDRVMgOiBFTk9FTlQ7CisJZWxzZSBpZiAoZXJybm8gPT0gRU5PVERJUiAmJiAhc3RyY2hyKGZpbGUsICcvJykpCisJCWVycm5vID0gRU5PRU5UOwogCXJldHVybiAtMTsKIH0KIApAQCAtMjIzLDcgKzIyNiw3IEBACiAJCWZjbnRsKGZkLCBGX1NFVEZELCBmbGFncyB8IEZEX0NMT0VYRUMpOwogfQogCi1zdGF0aWMgaW50IHdhaXRfb3Jfd2hpbmUocGlkX3QgcGlkLCBjb25zdCBjaGFyICphcmd2MCwgaW50IHNpbGVudF9leGVjX2ZhaWx1cmUpCitzdGF0aWMgaW50IHdhaXRfb3Jfd2hpbmUocGlkX3QgcGlkLCBjb25zdCBjaGFyICphcmd2MCkKIHsKIAlpbnQgc3RhdHVzLCBjb2RlID0gLTE7CiAJcGlkX3Qgd2FpdGluZzsKQEAgLTIzOSwxMyArMjQyLDE0IEBACiAJCWVycm9yKCJ3YWl0cGlkIGlzIGNvbmZ1c2VkICglcykiLCBhcmd2MCk7CiAJfSBlbHNlIGlmIChXSUZTSUdOQUxFRChzdGF0dXMpKSB7CiAJCWNvZGUgPSBXVEVSTVNJRyhzdGF0dXMpOwotCQllcnJvcigiJXMgZGllZCBvZiBzaWduYWwgJWQiLCBhcmd2MCwgY29kZSk7CisJCWlmIChjb2RlICE9IFNJR0lOVCAmJiBjb2RlICE9IFNJR1FVSVQpCisJCQllcnJvcigiJXMgZGllZCBvZiBzaWduYWwgJWQiLCBhcmd2MCwgY29kZSk7CiAJCS8qCiAJCSAqIFRoaXMgcmV0dXJuIHZhbHVlIGlzIGNob3NlbiBzbyB0aGF0IGNvZGUgJiAweGZmCiAJCSAqIG1pbWljcyB0aGUgZXhpdCBjb2RlIHRoYXQgYSBQT1NJWCBzaGVsbCB3b3VsZCByZXBvcnQgZm9yCiAJCSAqIGEgcHJvZ3JhbSB0aGF0IGRpZWQgZnJvbSB0aGlzIHNpZ25hbC4KIAkJICovCi0JCWNvZGUgLT0gMTI4OworCQljb2RlICs9IDEyODsKIAl9IGVsc2UgaWYgKFdJRkVYSVRFRChzdGF0dXMpKSB7CiAJCWNvZGUgPSBXRVhJVFNUQVRVUyhzdGF0dXMpOwogCQkvKgpAQCAtMjY5LDcgKzI3Myw4IEBACiB7CiAJaW50IG5lZWRfaW4sIG5lZWRfb3V0LCBuZWVkX2VycjsKIAlpbnQgZmRpblsyXSwgZmRvdXRbMl0sIGZkZXJyWzJdOwotCWludCBmYWlsZWRfZXJybm8gPSBmYWlsZWRfZXJybm87CisJaW50IGZhaWxlZF9lcnJubzsKKwljaGFyICpzdHI7CiAKIAkvKgogCSAqIEluIGNhc2Ugb2YgZXJyb3JzIHdlIG11c3Qga2VlcCB0aGUgcHJvbWlzZSB0byBjbG9zZSBGRHMKQEAgLTI4Miw2ICsyODcsNyBAQAogCQkJZmFpbGVkX2Vycm5vID0gZXJybm87CiAJCQlpZiAoY21kLT5vdXQgPiAwKQogCQkJCWNsb3NlKGNtZC0+b3V0KTsKKwkJCXN0ciA9ICJzdGFuZGFyZCBpbnB1dCI7CiAJCQlnb3RvIGZhaWxfcGlwZTsKIAkJfQogCQljbWQtPmluID0gZmRpblsxXTsKQEAgLTI5Nyw2ICszMDMsNyBAQAogCQkJCWNsb3NlX3BhaXIoZmRpbik7CiAJCQllbHNlIGlmIChjbWQtPmluKQogCQkJCWNsb3NlKGNtZC0+aW4pOworCQkJc3RyID0gInN0YW5kYXJkIG91dHB1dCI7CiAJCQlnb3RvIGZhaWxfcGlwZTsKIAkJfQogCQljbWQtPm91dCA9IGZkb3V0WzBdOwpAQCAtMzE0LDkgKzMyMSwxMCBAQAogCQkJCWNsb3NlX3BhaXIoZmRvdXQpOwogCQkJZWxzZSBpZiAoY21kLT5vdXQpCiAJCQkJY2xvc2UoY21kLT5vdXQpOworCQkJc3RyID0gInN0YW5kYXJkIGVycm9yIjsKIGZhaWxfcGlwZToKLQkJCWVycm9yKCJjYW5ub3QgY3JlYXRlIHBpcGUgZm9yICVzOiAlcyIsCi0JCQkJY21kLT5hcmd2WzBdLCBzdHJlcnJvcihmYWlsZWRfZXJybm8pKTsKKwkJCWVycm9yKCJjYW5ub3QgY3JlYXRlICVzIHBpcGUgZm9yICVzOiAlcyIsCisJCQkJc3RyLCBjbWQtPmFyZ3ZbMF0sIHN0cmVycm9yKGZhaWxlZF9lcnJubykpOwogCQkJZXJybm8gPSBmYWlsZWRfZXJybm87CiAJCQlyZXR1cm4gLTE7CiAJCX0KQEAgLTMzMyw2ICszNDEsNyBAQAogCQlub3RpZnlfcGlwZVswXSA9IG5vdGlmeV9waXBlWzFdID0gLTE7CiAKIAljbWQtPnBpZCA9IGZvcmsoKTsKKwlmYWlsZWRfZXJybm8gPSBlcnJubzsKIAlpZiAoIWNtZC0+cGlkKSB7CiAJCS8qCiAJCSAqIFJlZGlyZWN0IHRoZSBjaGFubmVsIHRvIHdyaXRlIHN5c2NhbGwgZXJyb3IgbWVzc2FnZXMgdG8KQEAgLTM5NCwxNiArNDAzLDYgQEAKIAkJCQkJdW5zZXRlbnYoKmNtZC0+ZW52KTsKIAkJCX0KIAkJfQotCQlpZiAoY21kLT5wcmVleGVjX2NiKSB7Ci0JCQkvKgotCQkJICogV2UgY2Fubm90IHByZWRpY3Qgd2hhdCB0aGUgcHJlLWV4ZWMgY2FsbGJhY2sgZG9lcy4KLQkJCSAqIEZvcmdvIHBhcmVudCBub3RpZmljYXRpb24uCi0JCQkgKi8KLQkJCWNsb3NlKGNoaWxkX25vdGlmaWVyKTsKLQkJCWNoaWxkX25vdGlmaWVyID0gLTE7Ci0KLQkJCWNtZC0+cHJlZXhlY19jYigpOwotCQl9CiAJCWlmIChjbWQtPmdpdF9jbWQpIHsKIAkJCWV4ZWN2X2dpdF9jbWQoY21kLT5hcmd2KTsKIAkJfSBlbHNlIGlmIChjbWQtPnVzZV9zaGVsbCkgewpAQCAtNDIyLDcgKzQyMSw3IEBACiAJfQogCWlmIChjbWQtPnBpZCA8IDApCiAJCWVycm9yKCJjYW5ub3QgZm9yaygpIGZvciAlczogJXMiLCBjbWQtPmFyZ3ZbMF0sCi0JCQlzdHJlcnJvcihmYWlsZWRfZXJybm8gPSBlcnJubykpOworCQkJc3RyZXJyb3IoZXJybm8pKTsKIAllbHNlIGlmIChjbWQtPmNsZWFuX29uX2V4aXQpCiAJCW1hcmtfY2hpbGRfZm9yX2NsZWFudXAoY21kLT5waWQpOwogCkBAIC00MzksOCArNDM4LDcgQEAKIAkJICogQXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoYXQgZm9yaygpIHN1Y2NlZWRlZCwgYnV0IGV4ZWN2cCgpCiAJCSAqIGZhaWxlZC4gRXJyb3JzIGhhdmUgYmVlbiByZXBvcnRlZCB0byBvdXIgc3RkZXJyLgogCQkgKi8KLQkJd2FpdF9vcl93aGluZShjbWQtPnBpZCwgY21kLT5hcmd2WzBdLAotCQkJICAgICAgY21kLT5zaWxlbnRfZXhlY19mYWlsdXJlKTsKKwkJd2FpdF9vcl93aGluZShjbWQtPnBpZCwgY21kLT5hcmd2WzBdKTsKIAkJZmFpbGVkX2Vycm5vID0gZXJybm87CiAJCWNtZC0+cGlkID0gLTE7CiAJfQpAQCAtNTQ1LDcgKzU0Myw3IEBACiAKIGludCBmaW5pc2hfY29tbWFuZChzdHJ1Y3QgY2hpbGRfcHJvY2VzcyAqY21kKQogewotCXJldHVybiB3YWl0X29yX3doaW5lKGNtZC0+cGlkLCBjbWQtPmFyZ3ZbMF0sIGNtZC0+c2lsZW50X2V4ZWNfZmFpbHVyZSk7CisJcmV0dXJuIHdhaXRfb3Jfd2hpbmUoY21kLT5waWQsIGNtZC0+YXJndlswXSk7CiB9CiAKIGludCBydW5fY29tbWFuZChzdHJ1Y3QgY2hpbGRfcHJvY2VzcyAqY21kKQpAQCAtNTkwLDYgKzU4OCw3IEBACiBzdGF0aWMgcHRocmVhZF90IG1haW5fdGhyZWFkOwogc3RhdGljIGludCBtYWluX3RocmVhZF9zZXQ7CiBzdGF0aWMgcHRocmVhZF9rZXlfdCBhc3luY19rZXk7CitzdGF0aWMgcHRocmVhZF9rZXlfdCBhc3luY19kaWVfY291bnRlcjsKIAogc3RhdGljIHZvaWQgKnJ1bl90aHJlYWQodm9pZCAqZGF0YSkKIHsKQEAgLTYxNiw2ICs2MTUsMTQgQEAKIAogCWV4aXQoMTI4KTsKIH0KKworc3RhdGljIGludCBhc3luY19kaWVfaXNfcmVjdXJzaW5nKHZvaWQpCit7CisJdm9pZCAqcmV0ID0gcHRocmVhZF9nZXRzcGVjaWZpYyhhc3luY19kaWVfY291bnRlcik7CisJcHRocmVhZF9zZXRzcGVjaWZpYyhhc3luY19kaWVfY291bnRlciwgKHZvaWQgKikxKTsKKwlyZXR1cm4gcmV0ICE9IE5VTEw7Cit9CisKICNlbmRpZgogCiBpbnQgc3RhcnRfYXN5bmMoc3RydWN0IGFzeW5jICphc3luYykKQEAgLTY5Nyw3ICs3MDQsOSBAQAogCQltYWluX3RocmVhZF9zZXQgPSAxOwogCQltYWluX3RocmVhZCA9IHB0aHJlYWRfc2VsZigpOwogCQlwdGhyZWFkX2tleV9jcmVhdGUoJmFzeW5jX2tleSwgTlVMTCk7CisJCXB0aHJlYWRfa2V5X2NyZWF0ZSgmYXN5bmNfZGllX2NvdW50ZXIsIE5VTEwpOwogCQlzZXRfZGllX3JvdXRpbmUoZGllX2FzeW5jKTsKKwkJc2V0X2RpZV9pc19yZWN1cnNpbmdfcm91dGluZShhc3luY19kaWVfaXNfcmVjdXJzaW5nKTsKIAl9CiAKIAlpZiAocHJvY19pbiA+PSAwKQpAQCAtNzMyLDcgKzc0MSw3IEBACiBpbnQgZmluaXNoX2FzeW5jKHN0cnVjdCBhc3luYyAqYXN5bmMpCiB7CiAjaWZkZWYgTk9fUFRIUkVBRFMKLQlyZXR1cm4gd2FpdF9vcl93aGluZShhc3luYy0+cGlkLCAiY2hpbGQgcHJvY2VzcyIsIDApOworCXJldHVybiB3YWl0X29yX3doaW5lKGFzeW5jLT5waWQsICJjaGlsZCBwcm9jZXNzIik7CiAjZWxzZQogCXZvaWQgKnJldCA9ICh2b2lkICopKGludHB0cl90KSgtMSk7CiAKQEAgLTc0Miw2ICs3NTEsMTUgQEAKICNlbmRpZgogfQogCitjaGFyICpmaW5kX2hvb2soY29uc3QgY2hhciAqbmFtZSkKK3sKKwljaGFyICpwYXRoID0gZ2l0X3BhdGgoImhvb2tzLyVzIiwgbmFtZSk7CisJaWYgKGFjY2VzcyhwYXRoLCBYX09LKSA8IDApCisJCXBhdGggPSBOVUxMOworCisJcmV0dXJuIHBhdGg7Cit9CisKIGludCBydW5faG9vayhjb25zdCBjaGFyICppbmRleF9maWxlLCBjb25zdCBjaGFyICpuYW1lLCAuLi4pCiB7CiAJc3RydWN0IGNoaWxkX3Byb2Nlc3MgaG9vazsKQEAgLTc1MSwxMSArNzY5LDEzIEBACiAJdmFfbGlzdCBhcmdzOwogCWludCByZXQ7CiAKLQlpZiAoYWNjZXNzKGdpdF9wYXRoKCJob29rcy8lcyIsIG5hbWUpLCBYX09LKSA8IDApCisJcCA9IGZpbmRfaG9vayhuYW1lKTsKKwlpZiAoIXApCiAJCXJldHVybiAwOwogCisJYXJndl9hcnJheV9wdXNoKCZhcmd2LCBwKTsKKwogCXZhX3N0YXJ0KGFyZ3MsIG5hbWUpOwotCWFyZ3ZfYXJyYXlfcHVzaCgmYXJndiwgZ2l0X3BhdGgoImhvb2tzLyVzIiwgbmFtZSkpOwogCXdoaWxlICgocCA9IHZhX2FyZyhhcmdzLCBjb25zdCBjaGFyICopKSkKIAkJYXJndl9hcnJheV9wdXNoKCZhcmd2LCBwKTsKIAl2YV9lbmQoYXJncyk7CmRpZmYgLS1naXQgYS9ydW4tY29tbWFuZC5oIGIvcnVuLWNvbW1hbmQuaAppbmRleCA0NGY3ZDJiLi4yMjFjZTMzIDEwMDY0NAotLS0gYS9ydW4tY29tbWFuZC5oCisrKyBiL3J1bi1jb21tYW5kLmgKQEAgLTM5LDEzICszOSwxMyBAQAogCXVuc2lnbmVkIHN0ZG91dF90b19zdGRlcnI6MTsKIAl1bnNpZ25lZCB1c2Vfc2hlbGw6MTsKIAl1bnNpZ25lZCBjbGVhbl9vbl9leGl0OjE7Ci0Jdm9pZCAoKnByZWV4ZWNfY2IpKHZvaWQpOwogfTsKIAogaW50IHN0YXJ0X2NvbW1hbmQoc3RydWN0IGNoaWxkX3Byb2Nlc3MgKik7CiBpbnQgZmluaXNoX2NvbW1hbmQoc3RydWN0IGNoaWxkX3Byb2Nlc3MgKik7CiBpbnQgcnVuX2NvbW1hbmQoc3RydWN0IGNoaWxkX3Byb2Nlc3MgKik7CiAKK2V4dGVybiBjaGFyICpmaW5kX2hvb2soY29uc3QgY2hhciAqbmFtZSk7CiBleHRlcm4gaW50IHJ1bl9ob29rKGNvbnN0IGNoYXIgKmluZGV4X2ZpbGUsIGNvbnN0IGNoYXIgKm5hbWUsIC4uLik7CiAKICNkZWZpbmUgUlVOX0NPTU1BTkRfTk9fU1RESU4gMQpkaWZmIC0tZ2l0IGEvc2VuZC1wYWNrLmMgYi9zZW5kLXBhY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDE3MmVmCi0tLSAvZGV2L251bGwKKysrIGIvc2VuZC1wYWNrLmMKQEAgLTAsMCArMSwzNDEgQEAKKyNpbmNsdWRlICJidWlsdGluLmgiCisjaW5jbHVkZSAiY29tbWl0LmgiCisjaW5jbHVkZSAicmVmcy5oIgorI2luY2x1ZGUgInBrdC1saW5lLmgiCisjaW5jbHVkZSAic2lkZWJhbmQuaCIKKyNpbmNsdWRlICJydW4tY29tbWFuZC5oIgorI2luY2x1ZGUgInJlbW90ZS5oIgorI2luY2x1ZGUgInNlbmQtcGFjay5oIgorI2luY2x1ZGUgInF1b3RlLmgiCisjaW5jbHVkZSAidHJhbnNwb3J0LmgiCisjaW5jbHVkZSAidmVyc2lvbi5oIgorCitzdGF0aWMgaW50IGZlZWRfb2JqZWN0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmZCwgaW50IG5lZ2F0aXZlKQoreworCWNoYXIgYnVmWzQyXTsKKworCWlmIChuZWdhdGl2ZSAmJiAhaGFzX3NoYTFfZmlsZShzaGExKSkKKwkJcmV0dXJuIDE7CisKKwltZW1jcHkoYnVmICsgbmVnYXRpdmUsIHNoYTFfdG9faGV4KHNoYTEpLCA0MCk7CisJaWYgKG5lZ2F0aXZlKQorCQlidWZbMF0gPSAnXic7CisJYnVmWzQwICsgbmVnYXRpdmVdID0gJ1xuJzsKKwlyZXR1cm4gd3JpdGVfb3Jfd2hpbmUoZmQsIGJ1ZiwgNDEgKyBuZWdhdGl2ZSwgInNlbmQtcGFjazogc2VuZCByZWZzIik7Cit9CisKKy8qCisgKiBNYWtlIGEgcGFjayBzdHJlYW0gYW5kIHNwaXQgaXQgb3V0IGludG8gZmlsZSBkZXNjcmlwdG9yIGZkCisgKi8KK3N0YXRpYyBpbnQgcGFja19vYmplY3RzKGludCBmZCwgc3RydWN0IHJlZiAqcmVmcywgc3RydWN0IGV4dHJhX2hhdmVfb2JqZWN0cyAqZXh0cmEsIHN0cnVjdCBzZW5kX3BhY2tfYXJncyAqYXJncykKK3sKKwkvKgorCSAqIFRoZSBjaGlsZCBiZWNvbWVzIHBhY2stb2JqZWN0cyAtLXJldnM7IHdlIGZlZWQKKwkgKiB0aGUgcmV2aXNpb24gcGFyYW1ldGVycyB0byBpdCB2aWEgaXRzIHN0ZGluIGFuZAorCSAqIGxldCBpdHMgc3Rkb3V0IGdvIGJhY2sgdG8gdGhlIG90aGVyIGVuZC4KKwkgKi8KKwljb25zdCBjaGFyICphcmd2W10gPSB7CisJCSJwYWNrLW9iamVjdHMiLAorCQkiLS1hbGwtcHJvZ3Jlc3MtaW1wbGllZCIsCisJCSItLXJldnMiLAorCQkiLS1zdGRvdXQiLAorCQlOVUxMLAorCQlOVUxMLAorCQlOVUxMLAorCQlOVUxMLAorCQlOVUxMLAorCX07CisJc3RydWN0IGNoaWxkX3Byb2Nlc3MgcG87CisJaW50IGk7CisKKwlpID0gNDsKKwlpZiAoYXJncy0+dXNlX3RoaW5fcGFjaykKKwkJYXJndltpKytdID0gIi0tdGhpbiI7CisJaWYgKGFyZ3MtPnVzZV9vZnNfZGVsdGEpCisJCWFyZ3ZbaSsrXSA9ICItLWRlbHRhLWJhc2Utb2Zmc2V0IjsKKwlpZiAoYXJncy0+cXVpZXQgfHwgIWFyZ3MtPnByb2dyZXNzKQorCQlhcmd2W2krK10gPSAiLXEiOworCWlmIChhcmdzLT5wcm9ncmVzcykKKwkJYXJndltpKytdID0gIi0tcHJvZ3Jlc3MiOworCW1lbXNldCgmcG8sIDAsIHNpemVvZihwbykpOworCXBvLmFyZ3YgPSBhcmd2OworCXBvLmluID0gLTE7CisJcG8ub3V0ID0gYXJncy0+c3RhdGVsZXNzX3JwYyA/IC0xIDogZmQ7CisJcG8uZ2l0X2NtZCA9IDE7CisJaWYgKHN0YXJ0X2NvbW1hbmQoJnBvKSkKKwkJZGllX2Vycm5vKCJnaXQgcGFjay1vYmplY3RzIGZhaWxlZCIpOworCisJLyoKKwkgKiBXZSBmZWVkIHRoZSBwYWNrLW9iamVjdHMgd2UganVzdCBzcGF3bmVkIHdpdGggcmV2aXNpb24KKwkgKiBwYXJhbWV0ZXJzIGJ5IHdyaXRpbmcgdG8gdGhlIHBpcGUuCisJICovCisJZm9yIChpID0gMDsgaSA8IGV4dHJhLT5ucjsgaSsrKQorCQlpZiAoIWZlZWRfb2JqZWN0KGV4dHJhLT5hcnJheVtpXSwgcG8uaW4sIDEpKQorCQkJYnJlYWs7CisKKwl3aGlsZSAocmVmcykgeworCQlpZiAoIWlzX251bGxfc2hhMShyZWZzLT5vbGRfc2hhMSkgJiYKKwkJICAgICFmZWVkX29iamVjdChyZWZzLT5vbGRfc2hhMSwgcG8uaW4sIDEpKQorCQkJYnJlYWs7CisJCWlmICghaXNfbnVsbF9zaGExKHJlZnMtPm5ld19zaGExKSAmJgorCQkgICAgIWZlZWRfb2JqZWN0KHJlZnMtPm5ld19zaGExLCBwby5pbiwgMCkpCisJCQlicmVhazsKKwkJcmVmcyA9IHJlZnMtPm5leHQ7CisJfQorCisJY2xvc2UocG8uaW4pOworCisJaWYgKGFyZ3MtPnN0YXRlbGVzc19ycGMpIHsKKwkJY2hhciAqYnVmID0geG1hbGxvYyhMQVJHRV9QQUNLRVRfTUFYKTsKKwkJd2hpbGUgKDEpIHsKKwkJCXNzaXplX3QgbiA9IHhyZWFkKHBvLm91dCwgYnVmLCBMQVJHRV9QQUNLRVRfTUFYKTsKKwkJCWlmIChuIDw9IDApCisJCQkJYnJlYWs7CisJCQlzZW5kX3NpZGViYW5kKGZkLCAtMSwgYnVmLCBuLCBMQVJHRV9QQUNLRVRfTUFYKTsKKwkJfQorCQlmcmVlKGJ1Zik7CisJCWNsb3NlKHBvLm91dCk7CisJCXBvLm91dCA9IC0xOworCX0KKworCWlmIChmaW5pc2hfY29tbWFuZCgmcG8pKQorCQlyZXR1cm4gLTE7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcmVjZWl2ZV9zdGF0dXMoaW50IGluLCBzdHJ1Y3QgcmVmICpyZWZzKQoreworCXN0cnVjdCByZWYgKmhpbnQ7CisJaW50IHJldCA9IDA7CisJY2hhciAqbGluZSA9IHBhY2tldF9yZWFkX2xpbmUoaW4sIE5VTEwpOworCWlmIChwcmVmaXhjbXAobGluZSwgInVucGFjayAiKSkKKwkJcmV0dXJuIGVycm9yKCJkaWQgbm90IHJlY2VpdmUgcmVtb3RlIHN0YXR1cyIpOworCWlmIChzdHJjbXAobGluZSwgInVucGFjayBvayIpKSB7CisJCWVycm9yKCJ1bnBhY2sgZmFpbGVkOiAlcyIsIGxpbmUgKyA3KTsKKwkJcmV0ID0gLTE7CisJfQorCWhpbnQgPSBOVUxMOworCXdoaWxlICgxKSB7CisJCWNoYXIgKnJlZm5hbWU7CisJCWNoYXIgKm1zZzsKKwkJbGluZSA9IHBhY2tldF9yZWFkX2xpbmUoaW4sIE5VTEwpOworCQlpZiAoIWxpbmUpCisJCQlicmVhazsKKwkJaWYgKHByZWZpeGNtcChsaW5lLCAib2sgIikgJiYgcHJlZml4Y21wKGxpbmUsICJuZyAiKSkgeworCQkJZXJyb3IoImludmFsaWQgcmVmIHN0YXR1cyBmcm9tIHJlbW90ZTogJXMiLCBsaW5lKTsKKwkJCXJldCA9IC0xOworCQkJYnJlYWs7CisJCX0KKworCQlyZWZuYW1lID0gbGluZSArIDM7CisJCW1zZyA9IHN0cmNocihyZWZuYW1lLCAnICcpOworCQlpZiAobXNnKQorCQkJKm1zZysrID0gJ1wwJzsKKworCQkvKiBmaXJzdCB0cnkgc2VhcmNoaW5nIGF0IG91ciBoaW50LCBmYWxsaW5nIGJhY2sgdG8gYWxsIHJlZnMgKi8KKwkJaWYgKGhpbnQpCisJCQloaW50ID0gZmluZF9yZWZfYnlfbmFtZShoaW50LCByZWZuYW1lKTsKKwkJaWYgKCFoaW50KQorCQkJaGludCA9IGZpbmRfcmVmX2J5X25hbWUocmVmcywgcmVmbmFtZSk7CisJCWlmICghaGludCkgeworCQkJd2FybmluZygicmVtb3RlIHJlcG9ydGVkIHN0YXR1cyBvbiB1bmtub3duIHJlZjogJXMiLAorCQkJCQlyZWZuYW1lKTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChoaW50LT5zdGF0dXMgIT0gUkVGX1NUQVRVU19FWFBFQ1RJTkdfUkVQT1JUKSB7CisJCQl3YXJuaW5nKCJyZW1vdGUgcmVwb3J0ZWQgc3RhdHVzIG9uIHVuZXhwZWN0ZWQgcmVmOiAlcyIsCisJCQkJCXJlZm5hbWUpOworCQkJY29udGludWU7CisJCX0KKworCQlpZiAobGluZVswXSA9PSAnbycgJiYgbGluZVsxXSA9PSAnaycpCisJCQloaW50LT5zdGF0dXMgPSBSRUZfU1RBVFVTX09LOworCQllbHNlIHsKKwkJCWhpbnQtPnN0YXR1cyA9IFJFRl9TVEFUVVNfUkVNT1RFX1JFSkVDVDsKKwkJCXJldCA9IC0xOworCQl9CisJCWlmIChtc2cpCisJCQloaW50LT5yZW1vdGVfc3RhdHVzID0geHN0cmR1cChtc2cpOworCQkvKiBzdGFydCBvdXIgbmV4dCBzZWFyY2ggZnJvbSB0aGUgbmV4dCByZWYgKi8KKwkJaGludCA9IGhpbnQtPm5leHQ7CisJfQorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgc2lkZWJhbmRfZGVtdXgoaW50IGluLCBpbnQgb3V0LCB2b2lkICpkYXRhKQoreworCWludCAqZmQgPSBkYXRhLCByZXQ7CisjaWZkZWYgTk9fUFRIUkVBRFMKKwljbG9zZShmZFsxXSk7CisjZW5kaWYKKwlyZXQgPSByZWN2X3NpZGViYW5kKCJzZW5kLXBhY2siLCBmZFswXSwgb3V0KTsKKwljbG9zZShvdXQpOworCXJldHVybiByZXQ7Cit9CisKK2ludCBzZW5kX3BhY2soc3RydWN0IHNlbmRfcGFja19hcmdzICphcmdzLAorCSAgICAgIGludCBmZFtdLCBzdHJ1Y3QgY2hpbGRfcHJvY2VzcyAqY29ubiwKKwkgICAgICBzdHJ1Y3QgcmVmICpyZW1vdGVfcmVmcywKKwkgICAgICBzdHJ1Y3QgZXh0cmFfaGF2ZV9vYmplY3RzICpleHRyYV9oYXZlKQoreworCWludCBpbiA9IGZkWzBdOworCWludCBvdXQgPSBmZFsxXTsKKwlzdHJ1Y3Qgc3RyYnVmIHJlcV9idWYgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3QgcmVmICpyZWY7CisJaW50IG5ld19yZWZzOworCWludCBhbGxvd19kZWxldGluZ19yZWZzID0gMDsKKwlpbnQgc3RhdHVzX3JlcG9ydCA9IDA7CisJaW50IHVzZV9zaWRlYmFuZCA9IDA7CisJaW50IHF1aWV0X3N1cHBvcnRlZCA9IDA7CisJaW50IGFnZW50X3N1cHBvcnRlZCA9IDA7CisJdW5zaWduZWQgY21kc19zZW50ID0gMDsKKwlpbnQgcmV0OworCXN0cnVjdCBhc3luYyBkZW11eDsKKworCS8qIERvZXMgdGhlIG90aGVyIGVuZCBzdXBwb3J0IHRoZSByZXBvcnRpbmc/ICovCisJaWYgKHNlcnZlcl9zdXBwb3J0cygicmVwb3J0LXN0YXR1cyIpKQorCQlzdGF0dXNfcmVwb3J0ID0gMTsKKwlpZiAoc2VydmVyX3N1cHBvcnRzKCJkZWxldGUtcmVmcyIpKQorCQlhbGxvd19kZWxldGluZ19yZWZzID0gMTsKKwlpZiAoc2VydmVyX3N1cHBvcnRzKCJvZnMtZGVsdGEiKSkKKwkJYXJncy0+dXNlX29mc19kZWx0YSA9IDE7CisJaWYgKHNlcnZlcl9zdXBwb3J0cygic2lkZS1iYW5kLTY0ayIpKQorCQl1c2Vfc2lkZWJhbmQgPSAxOworCWlmIChzZXJ2ZXJfc3VwcG9ydHMoInF1aWV0IikpCisJCXF1aWV0X3N1cHBvcnRlZCA9IDE7CisJaWYgKHNlcnZlcl9zdXBwb3J0cygiYWdlbnQiKSkKKwkJYWdlbnRfc3VwcG9ydGVkID0gMTsKKworCWlmICghcmVtb3RlX3JlZnMpIHsKKwkJZnByaW50ZihzdGRlcnIsICJObyByZWZzIGluIGNvbW1vbiBhbmQgbm9uZSBzcGVjaWZpZWQ7IGRvaW5nIG5vdGhpbmcuXG4iCisJCQkiUGVyaGFwcyB5b3Ugc2hvdWxkIHNwZWNpZnkgYSBicmFuY2ggc3VjaCBhcyAnbWFzdGVyJy5cbiIpOworCQlyZXR1cm4gMDsKKwl9CisKKwkvKgorCSAqIEZpbmFsbHksIHRlbGwgdGhlIG90aGVyIGVuZCEKKwkgKi8KKwluZXdfcmVmcyA9IDA7CisJZm9yIChyZWYgPSByZW1vdGVfcmVmczsgcmVmOyByZWYgPSByZWYtPm5leHQpIHsKKwkJaWYgKCFyZWYtPnBlZXJfcmVmICYmICFhcmdzLT5zZW5kX21pcnJvcikKKwkJCWNvbnRpbnVlOworCisJCS8qIENoZWNrIGZvciBzdGF0dXNlcyBzZXQgYnkgc2V0X3JlZl9zdGF0dXNfZm9yX3B1c2goKSAqLworCQlzd2l0Y2ggKHJlZi0+c3RhdHVzKSB7CisJCWNhc2UgUkVGX1NUQVRVU19SRUpFQ1RfTk9ORkFTVEZPUldBUkQ6CisJCWNhc2UgUkVGX1NUQVRVU19SRUpFQ1RfQUxSRUFEWV9FWElTVFM6CisJCWNhc2UgUkVGX1NUQVRVU19SRUpFQ1RfRkVUQ0hfRklSU1Q6CisJCWNhc2UgUkVGX1NUQVRVU19SRUpFQ1RfTkVFRFNfRk9SQ0U6CisJCWNhc2UgUkVGX1NUQVRVU19VUFRPREFURToKKwkJCWNvbnRpbnVlOworCQlkZWZhdWx0OgorCQkJOyAvKiBkbyBub3RoaW5nICovCisJCX0KKworCQlpZiAocmVmLT5kZWxldGlvbiAmJiAhYWxsb3dfZGVsZXRpbmdfcmVmcykgeworCQkJcmVmLT5zdGF0dXMgPSBSRUZfU1RBVFVTX1JFSkVDVF9OT0RFTEVURTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKCFyZWYtPmRlbGV0aW9uKQorCQkJbmV3X3JlZnMrKzsKKworCQlpZiAoYXJncy0+ZHJ5X3J1bikgeworCQkJcmVmLT5zdGF0dXMgPSBSRUZfU1RBVFVTX09LOworCQl9IGVsc2UgeworCQkJY2hhciAqb2xkX2hleCA9IHNoYTFfdG9faGV4KHJlZi0+b2xkX3NoYTEpOworCQkJY2hhciAqbmV3X2hleCA9IHNoYTFfdG9faGV4KHJlZi0+bmV3X3NoYTEpOworCQkJaW50IHF1aWV0ID0gcXVpZXRfc3VwcG9ydGVkICYmIChhcmdzLT5xdWlldCB8fCAhYXJncy0+cHJvZ3Jlc3MpOworCisJCQlpZiAoIWNtZHNfc2VudCAmJiAoc3RhdHVzX3JlcG9ydCB8fCB1c2Vfc2lkZWJhbmQgfHwKKwkJCQkJICAgcXVpZXQgfHwgYWdlbnRfc3VwcG9ydGVkKSkgeworCQkJCXBhY2tldF9idWZfd3JpdGUoJnJlcV9idWYsCisJCQkJCQkgIiVzICVzICVzJWMlcyVzJXMlcyVzIiwKKwkJCQkJCSBvbGRfaGV4LCBuZXdfaGV4LCByZWYtPm5hbWUsIDAsCisJCQkJCQkgc3RhdHVzX3JlcG9ydCA/ICIgcmVwb3J0LXN0YXR1cyIgOiAiIiwKKwkJCQkJCSB1c2Vfc2lkZWJhbmQgPyAiIHNpZGUtYmFuZC02NGsiIDogIiIsCisJCQkJCQkgcXVpZXQgPyAiIHF1aWV0IiA6ICIiLAorCQkJCQkJIGFnZW50X3N1cHBvcnRlZCA/ICIgYWdlbnQ9IiA6ICIiLAorCQkJCQkJIGFnZW50X3N1cHBvcnRlZCA/IGdpdF91c2VyX2FnZW50X3Nhbml0aXplZCgpIDogIiIKKwkJCQkJCSk7CisJCQl9CisJCQllbHNlCisJCQkJcGFja2V0X2J1Zl93cml0ZSgmcmVxX2J1ZiwgIiVzICVzICVzIiwKKwkJCQkJCSBvbGRfaGV4LCBuZXdfaGV4LCByZWYtPm5hbWUpOworCQkJcmVmLT5zdGF0dXMgPSBzdGF0dXNfcmVwb3J0ID8KKwkJCQlSRUZfU1RBVFVTX0VYUEVDVElOR19SRVBPUlQgOgorCQkJCVJFRl9TVEFUVVNfT0s7CisJCQljbWRzX3NlbnQrKzsKKwkJfQorCX0KKworCWlmIChhcmdzLT5zdGF0ZWxlc3NfcnBjKSB7CisJCWlmICghYXJncy0+ZHJ5X3J1biAmJiBjbWRzX3NlbnQpIHsKKwkJCXBhY2tldF9idWZfZmx1c2goJnJlcV9idWYpOworCQkJc2VuZF9zaWRlYmFuZChvdXQsIC0xLCByZXFfYnVmLmJ1ZiwgcmVxX2J1Zi5sZW4sIExBUkdFX1BBQ0tFVF9NQVgpOworCQl9CisJfSBlbHNlIHsKKwkJd3JpdGVfb3JfZGllKG91dCwgcmVxX2J1Zi5idWYsIHJlcV9idWYubGVuKTsKKwkJcGFja2V0X2ZsdXNoKG91dCk7CisJfQorCXN0cmJ1Zl9yZWxlYXNlKCZyZXFfYnVmKTsKKworCWlmICh1c2Vfc2lkZWJhbmQgJiYgY21kc19zZW50KSB7CisJCW1lbXNldCgmZGVtdXgsIDAsIHNpemVvZihkZW11eCkpOworCQlkZW11eC5wcm9jID0gc2lkZWJhbmRfZGVtdXg7CisJCWRlbXV4LmRhdGEgPSBmZDsKKwkJZGVtdXgub3V0ID0gLTE7CisJCWlmIChzdGFydF9hc3luYygmZGVtdXgpKQorCQkJZGllKCJzZW5kLXBhY2s6IHVuYWJsZSB0byBmb3JrIG9mZiBzaWRlYmFuZCBkZW11bHRpcGxleGVyIik7CisJCWluID0gZGVtdXgub3V0OworCX0KKworCWlmIChuZXdfcmVmcyAmJiBjbWRzX3NlbnQpIHsKKwkJaWYgKHBhY2tfb2JqZWN0cyhvdXQsIHJlbW90ZV9yZWZzLCBleHRyYV9oYXZlLCBhcmdzKSA8IDApIHsKKwkJCWZvciAocmVmID0gcmVtb3RlX3JlZnM7IHJlZjsgcmVmID0gcmVmLT5uZXh0KQorCQkJCXJlZi0+c3RhdHVzID0gUkVGX1NUQVRVU19OT05FOworCQkJaWYgKGFyZ3MtPnN0YXRlbGVzc19ycGMpCisJCQkJY2xvc2Uob3V0KTsKKwkJCWlmIChnaXRfY29ubmVjdGlvbl9pc19zb2NrZXQoY29ubikpCisJCQkJc2h1dGRvd24oZmRbMF0sIFNIVVRfV1IpOworCQkJaWYgKHVzZV9zaWRlYmFuZCkKKwkJCQlmaW5pc2hfYXN5bmMoJmRlbXV4KTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0KKwlpZiAoYXJncy0+c3RhdGVsZXNzX3JwYyAmJiBjbWRzX3NlbnQpCisJCXBhY2tldF9mbHVzaChvdXQpOworCisJaWYgKHN0YXR1c19yZXBvcnQgJiYgY21kc19zZW50KQorCQlyZXQgPSByZWNlaXZlX3N0YXR1cyhpbiwgcmVtb3RlX3JlZnMpOworCWVsc2UKKwkJcmV0ID0gMDsKKwlpZiAoYXJncy0+c3RhdGVsZXNzX3JwYykKKwkJcGFja2V0X2ZsdXNoKG91dCk7CisKKwlpZiAodXNlX3NpZGViYW5kICYmIGNtZHNfc2VudCkgeworCQlpZiAoZmluaXNoX2FzeW5jKCZkZW11eCkpIHsKKwkJCWVycm9yKCJlcnJvciBpbiBzaWRlYmFuZCBkZW11bHRpcGxleGVyIik7CisJCQlyZXQgPSAtMTsKKwkJfQorCQljbG9zZShkZW11eC5vdXQpOworCX0KKworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJaWYgKGFyZ3MtPnBvcmNlbGFpbikKKwkJcmV0dXJuIDA7CisKKwlmb3IgKHJlZiA9IHJlbW90ZV9yZWZzOyByZWY7IHJlZiA9IHJlZi0+bmV4dCkgeworCQlzd2l0Y2ggKHJlZi0+c3RhdHVzKSB7CisJCWNhc2UgUkVGX1NUQVRVU19OT05FOgorCQljYXNlIFJFRl9TVEFUVVNfVVBUT0RBVEU6CisJCWNhc2UgUkVGX1NUQVRVU19PSzoKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJcmV0dXJuIC0xOworCQl9CisJfQorCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvc2VxdWVuY2VyLmMgYi9zZXF1ZW5jZXIuYwppbmRleCBiZjA3OGYyLi5mN2JlN2Q4IDEwMDY0NAotLS0gYS9zZXF1ZW5jZXIuYworKysgYi9zZXF1ZW5jZXIuYwpAQCAtMTcsNyArMTcsOTIgQEAKIAogI2RlZmluZSBHSVRfUkVGTE9HX0FDVElPTiAiR0lUX1JFRkxPR19BQ1RJT04iCiAKLXZvaWQgcmVtb3ZlX3NlcXVlbmNlcl9zdGF0ZSh2b2lkKQorY29uc3QgY2hhciBzaWduX29mZl9oZWFkZXJbXSA9ICJTaWduZWQtb2ZmLWJ5OiAiOworc3RhdGljIGNvbnN0IGNoYXIgY2hlcnJ5X3BpY2tlZF9wcmVmaXhbXSA9ICIoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAiOworCitzdGF0aWMgaW50IGlzX3JmYzI4MjJfbGluZShjb25zdCBjaGFyICpidWYsIGludCBsZW4pCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKwkJaW50IGNoID0gYnVmW2ldOworCQlpZiAoY2ggPT0gJzonKQorCQkJcmV0dXJuIDE7CisJCWlmICghaXNhbG51bShjaCkgJiYgY2ggIT0gJy0nKQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaXNfY2hlcnJ5X3BpY2tlZF9mcm9tX2xpbmUoY29uc3QgY2hhciAqYnVmLCBpbnQgbGVuKQoreworCS8qCisJICogV2Ugb25seSBjYXJlIHRoYXQgaXQgbG9va3Mgcm91Z2hseSBsaWtlIChjaGVycnkgcGlja2VkIGZyb20gLi4uKQorCSAqLworCXJldHVybiBsZW4gPiBzdHJsZW4oY2hlcnJ5X3BpY2tlZF9wcmVmaXgpICsgMSAmJgorCQkhcHJlZml4Y21wKGJ1ZiwgY2hlcnJ5X3BpY2tlZF9wcmVmaXgpICYmIGJ1ZltsZW4gLSAxXSA9PSAnKSc7Cit9CisKKy8qCisgKiBSZXR1cm5zIDAgZm9yIG5vbi1jb25mb3JtaW5nIGZvb3RlcgorICogUmV0dXJucyAxIGZvciBjb25mb3JtaW5nIGZvb3RlcgorICogUmV0dXJucyAyIHdoZW4gc29iIGV4aXN0cyB3aXRoaW4gY29uZm9ybWluZyBmb290ZXIKKyAqIFJldHVybnMgMyB3aGVuIHNvYiBleGlzdHMgd2l0aGluIGNvbmZvcm1pbmcgZm9vdGVyIGFzIGxhc3QgZW50cnkKKyAqLworc3RhdGljIGludCBoYXNfY29uZm9ybWluZ19mb290ZXIoc3RydWN0IHN0cmJ1ZiAqc2IsIHN0cnVjdCBzdHJidWYgKnNvYiwKKwlpbnQgaWdub3JlX2Zvb3RlcikKK3sKKwljaGFyIHByZXY7CisJaW50IGksIGs7CisJaW50IGxlbiA9IHNiLT5sZW4gLSBpZ25vcmVfZm9vdGVyOworCWNvbnN0IGNoYXIgKmJ1ZiA9IHNiLT5idWY7CisJaW50IGZvdW5kX3NvYiA9IDA7CisKKwkvKiBmb290ZXIgbXVzdCBlbmQgd2l0aCBuZXdsaW5lICovCisJaWYgKCFsZW4gfHwgYnVmW2xlbiAtIDFdICE9ICdcbicpCisJCXJldHVybiAwOworCisJcHJldiA9ICdcMCc7CisJZm9yIChpID0gbGVuIC0gMTsgaSA+IDA7IGktLSkgeworCQljaGFyIGNoID0gYnVmW2ldOworCQlpZiAocHJldiA9PSAnXG4nICYmIGNoID09ICdcbicpIC8qIHBhcmFncmFwaCBicmVhayAqLworCQkJYnJlYWs7CisJCXByZXYgPSBjaDsKKwl9CisKKwkvKiByZXF1aXJlIGF0IGxlYXN0IG9uZSBibGFuayBsaW5lICovCisJaWYgKHByZXYgIT0gJ1xuJyB8fCBidWZbaV0gIT0gJ1xuJykKKwkJcmV0dXJuIDA7CisKKwkvKiBhZHZhbmNlIHRvIHN0YXJ0IG9mIGxhc3QgcGFyYWdyYXBoICovCisJd2hpbGUgKGkgPCBsZW4gLSAxICYmIGJ1ZltpXSA9PSAnXG4nKQorCQlpKys7CisKKwlmb3IgKDsgaSA8IGxlbjsgaSA9IGspIHsKKwkJaW50IGZvdW5kX3JmYzI4MjI7CisKKwkJZm9yIChrID0gaTsgayA8IGxlbiAmJiBidWZba10gIT0gJ1xuJzsgaysrKQorCQkJOyAvKiBkbyBub3RoaW5nICovCisJCWsrKzsKKworCQlmb3VuZF9yZmMyODIyID0gaXNfcmZjMjgyMl9saW5lKGJ1ZiArIGksIGsgLSBpIC0gMSk7CisJCWlmIChmb3VuZF9yZmMyODIyICYmIHNvYiAmJgorCQkgICAgIXN0cm5jbXAoYnVmICsgaSwgc29iLT5idWYsIHNvYi0+bGVuKSkKKwkJCWZvdW5kX3NvYiA9IGs7CisKKwkJaWYgKCEoZm91bmRfcmZjMjgyMiB8fAorCQkgICAgICBpc19jaGVycnlfcGlja2VkX2Zyb21fbGluZShidWYgKyBpLCBrIC0gaSAtIDEpKSkKKwkJCXJldHVybiAwOworCX0KKwlpZiAoZm91bmRfc29iID09IGkpCisJCXJldHVybiAzOworCWlmIChmb3VuZF9zb2IpCisJCXJldHVybiAyOworCXJldHVybiAxOworfQorCitzdGF0aWMgdm9pZCByZW1vdmVfc2VxdWVuY2VyX3N0YXRlKHZvaWQpCiB7CiAJc3RydWN0IHN0cmJ1ZiBzZXFfZGlyID0gU1RSQlVGX0lOSVQ7CiAKQEAgLTU4LDcgKzE0Myw3IEBACiAKIAlvdXQtPnJlZW5jb2RlZF9tZXNzYWdlID0gTlVMTDsKIAlvdXQtPm1lc3NhZ2UgPSBjb21taXQtPmJ1ZmZlcjsKLQlpZiAoc3RyY21wKGVuY29kaW5nLCBnaXRfY29tbWl0X2VuY29kaW5nKSkKKwlpZiAoc2FtZV9lbmNvZGluZyhlbmNvZGluZywgZ2l0X2NvbW1pdF9lbmNvZGluZykpCiAJCW91dC0+cmVlbmNvZGVkX21lc3NhZ2UgPSByZWVuY29kZV9zdHJpbmcoY29tbWl0LT5idWZmZXIsCiAJCQkJCWdpdF9jb21taXRfZW5jb2RpbmcsIGVuY29kaW5nKTsKIAlpZiAob3V0LT5yZWVuY29kZWRfbWVzc2FnZSkKQEAgLTEzMSw3ICsyMTYsNyBAQAogCWlmIChtc2cpIHsKIAkJZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnKTsKIAkJLyoKLQkJICogQSBjb25mbGljdCBoYXMgb2NjdXJlZCBidXQgdGhlIHBvcmNlbGFpbgorCQkgKiBBIGNvbmZsaWN0IGhhcyBvY2N1cnJlZCBidXQgdGhlIHBvcmNlbGFpbgogCQkgKiAodHlwaWNhbGx5IHJlYmFzZSAtLWludGVyYWN0aXZlKSB3YW50cyB0byB0YWtlIGNhcmUKIAkJICogb2YgdGhlIGNvbW1pdCBpdHNlbGYgc28gcmVtb3ZlIENIRVJSWV9QSUNLX0hFQUQKIAkJICovCkBAIC0xODQsMTQgKzI2OSwxNSBAQAogCXJldHVybiAtMTsKIH0KIAotc3RhdGljIGludCBmYXN0X2ZvcndhcmRfdG8oY29uc3QgdW5zaWduZWQgY2hhciAqdG8sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmZyb20pCitzdGF0aWMgaW50IGZhc3RfZm9yd2FyZF90byhjb25zdCB1bnNpZ25lZCBjaGFyICp0bywgY29uc3QgdW5zaWduZWQgY2hhciAqZnJvbSwKKwkJCSAgIGludCB1bmJvcm4pCiB7CiAJc3RydWN0IHJlZl9sb2NrICpyZWZfbG9jazsKIAogCXJlYWRfY2FjaGUoKTsKLQlpZiAoY2hlY2tvdXRfZmFzdF9mb3J3YXJkKGZyb20sIHRvKSkKKwlpZiAoY2hlY2tvdXRfZmFzdF9mb3J3YXJkKGZyb20sIHRvLCAxKSkKIAkJZXhpdCgxKTsgLyogdGhlIGNhbGxlZSBzaG91bGQgaGF2ZSBjb21wbGFpbmVkIGFscmVhZHkgKi8KLQlyZWZfbG9jayA9IGxvY2tfYW55X3JlZl9mb3JfdXBkYXRlKCJIRUFEIiwgZnJvbSwgMCk7CisJcmVmX2xvY2sgPSBsb2NrX2FueV9yZWZfZm9yX3VwZGF0ZSgiSEVBRCIsIHVuYm9ybiA/IG51bGxfc2hhMSA6IGZyb20sIDApOwogCXJldHVybiB3cml0ZV9yZWZfc2hhMShyZWZfbG9jaywgdG8sICJjaGVycnktcGljayIpOwogfQogCkBAIC0yMzMsNiArMzE5LDkgQEAKIAkJZGllKF8oIiVzOiBVbmFibGUgdG8gd3JpdGUgbmV3IGluZGV4IGZpbGUiKSwgYWN0aW9uX25hbWUob3B0cykpOwogCXJvbGxiYWNrX2xvY2tfZmlsZSgmaW5kZXhfbG9jayk7CiAKKwlpZiAob3B0cy0+c2lnbm9mZikKKwkJYXBwZW5kX3NpZ25vZmYobXNnYnVmLCAwLCAwKTsKKwogCWlmICghY2xlYW4pIHsKIAkJaW50IGk7CiAJCXN0cmJ1Zl9hZGRzdHIobXNnYnVmLCAiXG5Db25mbGljdHM6XG4iKTsKQEAgLTMxMSw2ICs0MDAsOSBAQAogCWlmIChhbGxvd19lbXB0eSkKIAkJYXJndl9hcnJheV9wdXNoKCZhcnJheSwgIi0tYWxsb3ctZW1wdHkiKTsKIAorCWlmIChvcHRzLT5hbGxvd19lbXB0eV9tZXNzYWdlKQorCQlhcmd2X2FycmF5X3B1c2goJmFycmF5LCAiLS1hbGxvdy1lbXB0eS1tZXNzYWdlIik7CisKIAlyYyA9IHJ1bl9jb21tYW5kX3Zfb3B0KGFycmF5LmFyZ3YsIFJVTl9HSVRfQ01EKTsKIAlhcmd2X2FycmF5X2NsZWFyKCZhcnJheSk7CiAJcmV0dXJuIHJjOwpAQCAtMzgyLDcgKzQ3NCw3IEBACiAJc3RydWN0IGNvbW1pdF9tZXNzYWdlIG1zZyA9IHsgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCB9OwogCWNoYXIgKmRlZm1zZyA9IE5VTEw7CiAJc3RydWN0IHN0cmJ1ZiBtc2didWYgPSBTVFJCVUZfSU5JVDsKLQlpbnQgcmVzOworCWludCByZXMsIHVuYm9ybiA9IDAsIGFsbG93OwogCiAJaWYgKG9wdHMtPm5vX2NvbW1pdCkgewogCQkvKgpAQCAtMzk0LDkgKzQ4NiwxMCBAQAogCQlpZiAod3JpdGVfY2FjaGVfYXNfdHJlZShoZWFkLCAwLCBOVUxMKSkKIAkJCWRpZSAoXygiWW91ciBpbmRleCBmaWxlIGlzIHVubWVyZ2VkLiIpKTsKIAl9IGVsc2UgewotCQlpZiAoZ2V0X3NoYTEoIkhFQUQiLCBoZWFkKSkKLQkJCXJldHVybiBlcnJvcihfKCJZb3UgZG8gbm90IGhhdmUgYSB2YWxpZCBIRUFEIikpOwotCQlpZiAoaW5kZXhfZGlmZmVyc19mcm9tKCJIRUFEIiwgMCkpCisJCXVuYm9ybiA9IGdldF9zaGExKCJIRUFEIiwgaGVhZCk7CisJCWlmICh1bmJvcm4pCisJCQloYXNoY3B5KGhlYWQsIEVNUFRZX1RSRUVfU0hBMV9CSU4pOworCQlpZiAoaW5kZXhfZGlmZmVyc19mcm9tKHVuYm9ybiA/IEVNUFRZX1RSRUVfU0hBMV9IRVggOiAiSEVBRCIsIDApKQogCQkJcmV0dXJuIGVycm9yX2RpcnR5X2luZGV4KG9wdHMpOwogCX0KIAlkaXNjYXJkX2NhY2hlKCk7CkBAIC00MjcsOCArNTIwLDEwIEBACiAJZWxzZQogCQlwYXJlbnQgPSBjb21taXQtPnBhcmVudHMtPml0ZW07CiAKLQlpZiAob3B0cy0+YWxsb3dfZmYgJiYgcGFyZW50ICYmICFoYXNoY21wKHBhcmVudC0+b2JqZWN0LnNoYTEsIGhlYWQpKQotCQlyZXR1cm4gZmFzdF9mb3J3YXJkX3RvKGNvbW1pdC0+b2JqZWN0LnNoYTEsIGhlYWQpOworCWlmIChvcHRzLT5hbGxvd19mZiAmJgorCSAgICAoKHBhcmVudCAmJiAhaGFzaGNtcChwYXJlbnQtPm9iamVjdC5zaGExLCBoZWFkKSkgfHwKKwkgICAgICghcGFyZW50ICYmIHVuYm9ybikpKQorCSAgICAgcmV0dXJuIGZhc3RfZm9yd2FyZF90byhjb21taXQtPm9iamVjdC5zaGExLCBoZWFkLCB1bmJvcm4pOwogCiAJaWYgKHBhcmVudCAmJiBwYXJzZV9jb21taXQocGFyZW50KSA8IDApCiAJCS8qIFRSQU5TTEFUT1JTOiBUaGUgZmlyc3QgJXMgd2lsbCBiZSAicmV2ZXJ0IiBvcgpAQCAtNDg0LDcgKzU3OSw5IEBACiAJCX0KIAogCQlpZiAob3B0cy0+cmVjb3JkX29yaWdpbikgewotCQkJc3RyYnVmX2FkZHN0cigmbXNnYnVmLCAiKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgIik7CisJCQlpZiAoIWhhc19jb25mb3JtaW5nX2Zvb3RlcigmbXNnYnVmLCBOVUxMLCAwKSkKKwkJCQlzdHJidWZfYWRkY2goJm1zZ2J1ZiwgJ1xuJyk7CisJCQlzdHJidWZfYWRkc3RyKCZtc2didWYsIGNoZXJyeV9waWNrZWRfcHJlZml4KTsKIAkJCXN0cmJ1Zl9hZGRzdHIoJm1zZ2J1Ziwgc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSkpOwogCQkJc3RyYnVmX2FkZHN0cigmbXNnYnVmLCAiKVxuIik7CiAJCX0KQEAgLTUyNywxNCArNjI0LDE4IEBACiAJCSAgICAgIG1zZy5zdWJqZWN0KTsKIAkJcHJpbnRfYWR2aWNlKHJlcyA9PSAxLCBvcHRzKTsKIAkJcmVyZXJlKG9wdHMtPmFsbG93X3JlcmVyZV9hdXRvKTsKLQl9IGVsc2UgewotCQlpbnQgYWxsb3cgPSBhbGxvd19lbXB0eShvcHRzLCBjb21taXQpOwotCQlpZiAoYWxsb3cgPCAwKQotCQkJcmV0dXJuIGFsbG93OwotCQlpZiAoIW9wdHMtPm5vX2NvbW1pdCkKLQkJCXJlcyA9IHJ1bl9naXRfY29tbWl0KGRlZm1zZywgb3B0cywgYWxsb3cpOworCQlnb3RvIGxlYXZlOwogCX0KIAorCWFsbG93ID0gYWxsb3dfZW1wdHkob3B0cywgY29tbWl0KTsKKwlpZiAoYWxsb3cgPCAwKSB7CisJCXJlcyA9IGFsbG93OworCQlnb3RvIGxlYXZlOworCX0KKwlpZiAoIW9wdHMtPm5vX2NvbW1pdCkKKwkJcmVzID0gcnVuX2dpdF9jb21taXQoZGVmbXNnLCBvcHRzLCBhbGxvdyk7CisKK2xlYXZlOgogCWZyZWVfbWVzc2FnZSgmbXNnKTsKIAlmcmVlKGRlZm1zZyk7CiAKQEAgLTU0Myw3ICs2NDQsMTEgQEAKIAogc3RhdGljIHZvaWQgcHJlcGFyZV9yZXZzKHN0cnVjdCByZXBsYXlfb3B0cyAqb3B0cykKIHsKLQlpZiAob3B0cy0+YWN0aW9uICE9IFJFUExBWV9SRVZFUlQpCisJLyoKKwkgKiBwaWNraW5nIChidXQgbm90IHJldmVydGluZykgcmFuZ2VzIChidXQgbm90IGluZGl2aWR1YWwgcmV2aXNpb25zKQorCSAqIHNob3VsZCBiZSBkb25lIGluIHJldmVyc2UKKwkgKi8KKwlpZiAob3B0cy0+YWN0aW9uID09IFJFUExBWV9QSUNLICYmICFvcHRzLT5yZXZzLT5ub193YWxrKQogCQlvcHRzLT5yZXZzLT5yZXZlcnNlIF49IDE7CiAKIAlpZiAocHJlcGFyZV9yZXZpc2lvbl93YWxrKG9wdHMtPnJldnMpKQpAQCAtOTQ2LDYgKzEwNTEsNyBAQAogewogCXN0cnVjdCBjb21taXRfbGlzdCAqdG9kb19saXN0ID0gTlVMTDsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOworCWludCBpOwogCiAJaWYgKG9wdHMtPnN1YmNvbW1hbmQgPT0gUkVQTEFZX05PTkUpCiAJCWFzc2VydChvcHRzLT5yZXZzKTsKQEAgLTk2Niw2ICsxMDcyLDIzIEBACiAJaWYgKG9wdHMtPnN1YmNvbW1hbmQgPT0gUkVQTEFZX0NPTlRJTlVFKQogCQlyZXR1cm4gc2VxdWVuY2VyX2NvbnRpbnVlKG9wdHMpOwogCisJZm9yIChpID0gMDsgaSA8IG9wdHMtPnJldnMtPnBlbmRpbmcubnI7IGkrKykgeworCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOworCQljb25zdCBjaGFyICpuYW1lID0gb3B0cy0+cmV2cy0+cGVuZGluZy5vYmplY3RzW2ldLm5hbWU7CisKKwkJLyogVGhpcyBoYXBwZW5zIHdoZW4gdXNpbmcgLS1zdGRpbi4gKi8KKwkJaWYgKCFzdHJsZW4obmFtZSkpCisJCQljb250aW51ZTsKKworCQlpZiAoIWdldF9zaGExKG5hbWUsIHNoYTEpKSB7CisJCQlpZiAoIWxvb2t1cF9jb21taXRfcmVmZXJlbmNlX2dlbnRseShzaGExLCAxKSkgeworCQkJCWVudW0gb2JqZWN0X3R5cGUgdHlwZSA9IHNoYTFfb2JqZWN0X2luZm8oc2hhMSwgTlVMTCk7CisJCQkJZGllKF8oIiVzOiBjYW4ndCBjaGVycnktcGljayBhICVzIiksIG5hbWUsIHR5cGVuYW1lKHR5cGUpKTsKKwkJCX0KKwkJfSBlbHNlCisJCQlkaWUoXygiJXM6IGJhZCByZXZpc2lvbiIpLCBuYW1lKTsKKwl9CisKIAkvKgogCSAqIElmIHdlIHdlcmUgY2FsbGVkIGFzICJnaXQgY2hlcnJ5LXBpY2sgPGNvbW1pdD4iLCBqdXN0CiAJICogY2hlcnJ5LXBpY2svcmV2ZXJ0IGl0LCBzZXQgQ0hFUlJZX1BJQ0tfSEVBRCAvCkBAIC0xMDA0LDMgKzExMjcsNjggQEAKIAlzYXZlX29wdHMob3B0cyk7CiAJcmV0dXJuIHBpY2tfY29tbWl0cyh0b2RvX2xpc3QsIG9wdHMpOwogfQorCit2b2lkIGFwcGVuZF9zaWdub2ZmKHN0cnVjdCBzdHJidWYgKm1zZ2J1ZiwgaW50IGlnbm9yZV9mb290ZXIsIHVuc2lnbmVkIGZsYWcpCit7CisJdW5zaWduZWQgbm9fZHVwX3NvYiA9IGZsYWcgJiBBUFBFTkRfU0lHTk9GRl9ERURVUDsKKwlzdHJ1Y3Qgc3RyYnVmIHNvYiA9IFNUUkJVRl9JTklUOworCWludCBoYXNfZm9vdGVyOworCisJc3RyYnVmX2FkZHN0cigmc29iLCBzaWduX29mZl9oZWFkZXIpOworCXN0cmJ1Zl9hZGRzdHIoJnNvYiwgZm10X25hbWUoZ2V0ZW52KCJHSVRfQ09NTUlUVEVSX05BTUUiKSwKKwkJCQlnZXRlbnYoIkdJVF9DT01NSVRURVJfRU1BSUwiKSkpOworCXN0cmJ1Zl9hZGRjaCgmc29iLCAnXG4nKTsKKworCS8qCisJICogSWYgdGhlIHdob2xlIG1lc3NhZ2UgYnVmZmVyIGlzIGVxdWFsIHRvIHRoZSBzb2IsIHByZXRlbmQgdGhhdCB3ZQorCSAqIGZvdW5kIGEgY29uZm9ybWluZyBmb290ZXIgd2l0aCBhIG1hdGNoaW5nIHNvYgorCSAqLworCWlmIChtc2didWYtPmxlbiAtIGlnbm9yZV9mb290ZXIgPT0gc29iLmxlbiAmJgorCSAgICAhc3RybmNtcChtc2didWYtPmJ1Ziwgc29iLmJ1Ziwgc29iLmxlbikpCisJCWhhc19mb290ZXIgPSAzOworCWVsc2UKKwkJaGFzX2Zvb3RlciA9IGhhc19jb25mb3JtaW5nX2Zvb3Rlcihtc2didWYsICZzb2IsIGlnbm9yZV9mb290ZXIpOworCisJaWYgKCFoYXNfZm9vdGVyKSB7CisJCWNvbnN0IGNoYXIgKmFwcGVuZF9uZXdsaW5lcyA9IE5VTEw7CisJCXNpemVfdCBsZW4gPSBtc2didWYtPmxlbiAtIGlnbm9yZV9mb290ZXI7CisKKwkJaWYgKCFsZW4pIHsKKwkJCS8qCisJCQkgKiBUaGUgYnVmZmVyIGlzIGNvbXBsZXRlbHkgZW1wdHkuICBMZWF2ZSBmb29tIGZvcgorCQkJICogdGhlIHRpdGxlIGFuZCBib2R5IHRvIGJlIGZpbGxlZCBpbiBieSB0aGUgdXNlci4KKwkJCSAqLworCQkJYXBwZW5kX25ld2xpbmVzID0gIlxuXG4iOworCQl9IGVsc2UgaWYgKG1zZ2J1Zi0+YnVmW2xlbiAtIDFdICE9ICdcbicpIHsKKwkJCS8qCisJCQkgKiBJbmNvbXBsZXRlIGxpbmUuICBDb21wbGV0ZSB0aGUgbGluZSBhbmQgYWRkIGEKKwkJCSAqIGJsYW5rIG9uZSBzbyB0aGF0IHRoZXJlIGlzIGFuIGVtcHR5IGxpbmUgYmV0d2VlbgorCQkJICogdGhlIG1lc3NhZ2UgYm9keSBhbmQgdGhlIHNvYi4KKwkJCSAqLworCQkJYXBwZW5kX25ld2xpbmVzID0gIlxuXG4iOworCQl9IGVsc2UgaWYgKGxlbiA9PSAxKSB7CisJCQkvKgorCQkJICogQnVmZmVyIGNvbnRhaW5zIGEgc2luZ2xlIG5ld2xpbmUuICBBZGQgYW5vdGhlcgorCQkJICogc28gdGhhdCB3ZSBsZWF2ZSByb29tIGZvciB0aGUgdGl0bGUgYW5kIGJvZHkuCisJCQkgKi8KKwkJCWFwcGVuZF9uZXdsaW5lcyA9ICJcbiI7CisJCX0gZWxzZSBpZiAobXNnYnVmLT5idWZbbGVuIC0gMl0gIT0gJ1xuJykgeworCQkJLyoKKwkJCSAqIEJ1ZmZlciBlbmRzIHdpdGggYSBzaW5nbGUgbmV3bGluZS4gIEFkZCBhbm90aGVyCisJCQkgKiBzbyB0aGF0IHRoZXJlIGlzIGFuIGVtcHR5IGxpbmUgYmV0d2VlbiB0aGUgbWVzc2FnZQorCQkJICogYm9keSBhbmQgdGhlIHNvYi4KKwkJCSAqLworCQkJYXBwZW5kX25ld2xpbmVzID0gIlxuIjsKKwkJfSAvKiBlbHNlLCB0aGUgYnVmZmVyIGFscmVhZHkgZW5kcyB3aXRoIHR3byBuZXdsaW5lcy4gKi8KKworCQlpZiAoYXBwZW5kX25ld2xpbmVzKQorCQkJc3RyYnVmX3NwbGljZShtc2didWYsIG1zZ2J1Zi0+bGVuIC0gaWdub3JlX2Zvb3RlciwgMCwKKwkJCQlhcHBlbmRfbmV3bGluZXMsIHN0cmxlbihhcHBlbmRfbmV3bGluZXMpKTsKKwl9CisKKwlpZiAoaGFzX2Zvb3RlciAhPSAzICYmICghbm9fZHVwX3NvYiB8fCBoYXNfZm9vdGVyICE9IDIpKQorCQlzdHJidWZfc3BsaWNlKG1zZ2J1ZiwgbXNnYnVmLT5sZW4gLSBpZ25vcmVfZm9vdGVyLCAwLAorCQkJCXNvYi5idWYsIHNvYi5sZW4pOworCisJc3RyYnVmX3JlbGVhc2UoJnNvYik7Cit9CmRpZmYgLS1naXQgYS9zZXF1ZW5jZXIuaCBiL3NlcXVlbmNlci5oCmluZGV4IGFhNWYxN2MuLjFmYzIyZGMgMTAwNjQ0Ci0tLSBhL3NlcXVlbmNlci5oCisrKyBiL3NlcXVlbmNlci5oCkBAIC02LDYgKzYsOCBAQAogI2RlZmluZSBTRVFfVE9ET19GSUxFCSJzZXF1ZW5jZXIvdG9kbyIKICNkZWZpbmUgU0VRX09QVFNfRklMRQkic2VxdWVuY2VyL29wdHMiCiAKKyNkZWZpbmUgQVBQRU5EX1NJR05PRkZfREVEVVAgKDF1IDw8IDApCisKIGVudW0gcmVwbGF5X2FjdGlvbiB7CiAJUkVQTEFZX1JFVkVSVCwKIAlSRVBMQVlfUElDSwpAQCAtMzAsNiArMzIsNyBAQAogCWludCBhbGxvd19mZjsKIAlpbnQgYWxsb3dfcmVyZXJlX2F1dG87CiAJaW50IGFsbG93X2VtcHR5OworCWludCBhbGxvd19lbXB0eV9tZXNzYWdlOwogCWludCBrZWVwX3JlZHVuZGFudF9jb21taXRzOwogCiAJaW50IG1haW5saW5lOwpAQCAtNDMsOSArNDYsMTAgQEAKIAlzdHJ1Y3QgcmV2X2luZm8gKnJldnM7CiB9OwogCi0vKiBSZW1vdmVzIFNFUV9ESVIuICovCi1leHRlcm4gdm9pZCByZW1vdmVfc2VxdWVuY2VyX3N0YXRlKHZvaWQpOwotCiBpbnQgc2VxdWVuY2VyX3BpY2tfcmV2aXNpb25zKHN0cnVjdCByZXBsYXlfb3B0cyAqb3B0cyk7CiAKK2V4dGVybiBjb25zdCBjaGFyIHNpZ25fb2ZmX2hlYWRlcltdOworCit2b2lkIGFwcGVuZF9zaWdub2ZmKHN0cnVjdCBzdHJidWYgKm1zZ2J1ZiwgaW50IGlnbm9yZV9mb290ZXIsIHVuc2lnbmVkIGZsYWcpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NldHVwLmMgYi9zZXR1cC5jCmluZGV4IDczMTg1MWEuLjk0YzFlNjEgMTAwNjQ0Ci0tLSBhL3NldHVwLmMKKysrIGIvc2V0dXAuYwpAQCAtMSwxMCArMSwxMSBAQAogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAiZGlyLmgiCisjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKIAogc3RhdGljIGludCBpbnNpZGVfZ2l0X2RpciA9IC0xOwogc3RhdGljIGludCBpbnNpZGVfd29ya190cmVlID0gLTE7CiAKLWNoYXIgKnByZWZpeF9wYXRoKGNvbnN0IGNoYXIgKnByZWZpeCwgaW50IGxlbiwgY29uc3QgY2hhciAqcGF0aCkKK3N0YXRpYyBjaGFyICpwcmVmaXhfcGF0aF9nZW50bHkoY29uc3QgY2hhciAqcHJlZml4LCBpbnQgbGVuLCBjb25zdCBjaGFyICpwYXRoKQogewogCWNvbnN0IGNoYXIgKm9yaWcgPSBwYXRoOwogCWNoYXIgKnNhbml0aXplZDsKQEAgLTMxLDcgKzMyLDggQEAKIAkJaWYgKHN0cm5jbXAoc2FuaXRpemVkLCB3b3JrX3RyZWUsIGxlbikgfHwKIAkJICAgIChsZW4gPiByb290X2xlbiAmJiBzYW5pdGl6ZWRbbGVuXSAhPSAnXDAnICYmIHNhbml0aXplZFtsZW5dICE9ICcvJykpIHsKIAkJZXJyb3Jfb3V0OgotCQkJZGllKCInJXMnIGlzIG91dHNpZGUgcmVwb3NpdG9yeSIsIG9yaWcpOworCQkJZnJlZShzYW5pdGl6ZWQpOworCQkJcmV0dXJuIE5VTEw7CiAJCX0KIAkJaWYgKHNhbml0aXplZFtsZW5dID09ICcvJykKIAkJCWxlbisrOwpAQCAtNDAsMTIgKzQyLDM4IEBACiAJcmV0dXJuIHNhbml0aXplZDsKIH0KIAorY2hhciAqcHJlZml4X3BhdGgoY29uc3QgY2hhciAqcHJlZml4LCBpbnQgbGVuLCBjb25zdCBjaGFyICpwYXRoKQoreworCWNoYXIgKnIgPSBwcmVmaXhfcGF0aF9nZW50bHkocHJlZml4LCBsZW4sIHBhdGgpOworCWlmICghcikKKwkJZGllKCInJXMnIGlzIG91dHNpZGUgcmVwb3NpdG9yeSIsIHBhdGgpOworCXJldHVybiByOworfQorCitpbnQgcGF0aF9pbnNpZGVfcmVwbyhjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKnBhdGgpCit7CisJaW50IGxlbiA9IHByZWZpeCA/IHN0cmxlbihwcmVmaXgpIDogMDsKKwljaGFyICpyID0gcHJlZml4X3BhdGhfZ2VudGx5KHByZWZpeCwgbGVuLCBwYXRoKTsKKwlpZiAocikgeworCQlmcmVlKHIpOworCQlyZXR1cm4gMTsKKwl9CisJcmV0dXJuIDA7Cit9CisKIGludCBjaGVja19maWxlbmFtZShjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKmFyZykKIHsKIAljb25zdCBjaGFyICpuYW1lOwogCXN0cnVjdCBzdGF0IHN0OwogCi0JbmFtZSA9IHByZWZpeCA/IHByZWZpeF9maWxlbmFtZShwcmVmaXgsIHN0cmxlbihwcmVmaXgpLCBhcmcpIDogYXJnOworCWlmICghcHJlZml4Y21wKGFyZywgIjovIikpIHsKKwkJaWYgKGFyZ1syXSA9PSAnXDAnKSAvKiAiOi8iIGlzIHJvb3QgZGlyLCBhbHdheXMgZXhpc3RzICovCisJCQlyZXR1cm4gMTsKKwkJbmFtZSA9IGFyZyArIDI7CisJfSBlbHNlIGlmIChwcmVmaXgpCisJCW5hbWUgPSBwcmVmaXhfZmlsZW5hbWUocHJlZml4LCBzdHJsZW4ocHJlZml4KSwgYXJnKTsKKwllbHNlCisJCW5hbWUgPSBhcmc7CiAJaWYgKCFsc3RhdChuYW1lLCAmc3QpKQogCQlyZXR1cm4gMTsgLyogZmlsZSBleGlzdHMgKi8KIAlpZiAoZXJybm8gPT0gRU5PRU5UIHx8IGVycm5vID09IEVOT1RESVIpCkBAIC01MywyNCArODEsMjcgQEAKIAlkaWVfZXJybm8oImZhaWxlZCB0byBzdGF0ICclcyciLCBhcmcpOwogfQogCi1zdGF0aWMgdm9pZCBOT1JFVFVSTiBkaWVfdmVyaWZ5X2ZpbGVuYW1lKGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3QgY2hhciAqYXJnKQorc3RhdGljIHZvaWQgTk9SRVRVUk4gZGllX3ZlcmlmeV9maWxlbmFtZShjb25zdCBjaGFyICpwcmVmaXgsCisJCQkJCSBjb25zdCBjaGFyICphcmcsCisJCQkJCSBpbnQgZGlhZ25vc2VfbWlzc3BlbHRfcmV2KQogewotCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07Ci0JdW5zaWduZWQgbW9kZTsKLQorCWlmICghZGlhZ25vc2VfbWlzc3BlbHRfcmV2KQorCQlkaWUoIiVzOiBubyBzdWNoIHBhdGggaW4gdGhlIHdvcmtpbmcgdHJlZS5cbiIKKwkJICAgICJVc2UgJ2dpdCA8Y29tbWFuZD4gLS0gPHBhdGg+Li4uJyB0byBzcGVjaWZ5IHBhdGhzIHRoYXQgZG8gbm90IGV4aXN0IGxvY2FsbHkuIiwKKwkJICAgIGFyZyk7CiAJLyoKIAkgKiBTYXlpbmcgIicoaWNhc2UpZm9vJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgaW5kZXgiIHdoZW4gdGhlCiAJICogdXNlciBnYXZlIHVzICI6KGljYXNlKWZvbyIgaXMganVzdCBzdHVwaWQuICBBIG1hZ2ljIHBhdGhzcGVjCiAJICogYmVnaW5zIHdpdGggYSBjb2xvbiBhbmQgaXMgZm9sbG93ZWQgYnkgYSBub24tYWxudW07IGRvIG5vdAotCSAqIGxldCBnZXRfc2hhMV93aXRoX21vZGVfMShvbmx5X3RvX2RpZT0xKSB0byBldmVuIHRyaWdnZXIuCisJICogbGV0IG1heWJlX2RpZV9vbl9taXNzcGVsdF9vYmplY3RfbmFtZSgpIGV2ZW4gdHJpZ2dlci4KIAkgKi8KIAlpZiAoIShhcmdbMF0gPT0gJzonICYmICFpc2FsbnVtKGFyZ1sxXSkpKQotCQkvKiB0cnkgYSBkZXRhaWxlZCBkaWFnbm9zdGljIC4uLiAqLwotCQlnZXRfc2hhMV93aXRoX21vZGVfMShhcmcsIHNoYTEsICZtb2RlLCAxLCBwcmVmaXgpOworCQltYXliZV9kaWVfb25fbWlzc3BlbHRfb2JqZWN0X25hbWUoYXJnLCBwcmVmaXgpOwogCiAJLyogLi4uIG9yIGZhbGwgYmFjayB0aGUgbW9zdCBnZW5lcmFsIG1lc3NhZ2UuICovCiAJZGllKCJhbWJpZ3VvdXMgYXJndW1lbnQgJyVzJzogdW5rbm93biByZXZpc2lvbiBvciBwYXRoIG5vdCBpbiB0aGUgd29ya2luZyB0cmVlLlxuIgotCSAgICAiVXNlICctLScgdG8gc2VwYXJhdGUgcGF0aHMgZnJvbSByZXZpc2lvbnMiLCBhcmcpOworCSAgICAiVXNlICctLScgdG8gc2VwYXJhdGUgcGF0aHMgZnJvbSByZXZpc2lvbnMsIGxpa2UgdGhpczpcbiIKKwkgICAgIidnaXQgPGNvbW1hbmQ+IFs8cmV2aXNpb24+Li4uXSAtLSBbPGZpbGU+Li4uXSciLCBhcmcpOwogCiB9CiAKQEAgLTgwLDE0ICsxMTEsMjkgQEAKICAqIGFzIHRydWUsIGJlY2F1c2UgZXZlbiBpZiBzdWNoIGEgZmlsZW5hbWUgd2VyZSB0byBleGlzdCwgd2Ugd2FudAogICogaXQgdG8gYmUgcHJlY2VkZWQgYnkgdGhlICItLSIgbWFya2VyIChvciB3ZSB3YW50IHRoZSB1c2VyIHRvCiAgKiB1c2UgYSBmb3JtYXQgbGlrZSAiLi8tZmlsZW5hbWUiKQorICoKKyAqIFRoZSAiZGlhZ25vc2VfbWlzc3BlbHRfcmV2IiBpcyB1c2VkIHRvIHByb3ZpZGUgYSB1c2VyLWZyaWVuZGx5CisgKiBkaWFnbm9zaXMgd2hlbiBkeWluZyB1cG9uIGZpbmRpbmcgdGhhdCAibmFtZSIgaXMgbm90IGEgcGF0aG5hbWUuCisgKiBJZiBzZXQgdG8gMSwgdGhlIGRpYWdub3NpcyB3aWxsIHRyeSB0byBkaWFnbm9zZSAibmFtZSIgYXMgYW4KKyAqIGludmFsaWQgb2JqZWN0IG5hbWUgKGUuZy4gSEVBRDpmb28pLiBJZiBzZXQgdG8gMCwgdGhlIGRpYWdub3NpcworICogd2lsbCBvbmx5IGNvbXBsYWluIGFib3V0IGFuIGluZXhpc3RpbmcgZmlsZS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHR5cGljYWxseSBjYWxsZWQgdG8gY2hlY2sgdGhhdCBhICJmaWxlIG9yIHJldiIKKyAqIGFyZ3VtZW50IGlzIHVuYW1iaWd1b3VzLiBJbiB0aGlzIGNhc2UsIHRoZSBjYWxsZXIgd2lsbCB3YW50CisgKiBkaWFnbm9zZV9taXNzcGVsdF9yZXYgPT0gMSB3aGVuIHZlcmlmeWluZyB0aGUgZmlyc3Qgbm9uLXJldgorICogYXJndW1lbnQgKHdoaWNoIGNvdWxkIGhhdmUgYmVlbiBhIHJldmlzaW9uKSwgYW5kCisgKiBkaWFnbm9zZV9taXNzcGVsdF9yZXYgPT0gMCBmb3IgdGhlIG5leHQgb25lcyAoYmVjYXVzZSB3ZSBhbHJlYWR5CisgKiBzYXcgYSBmaWxlbmFtZSwgdGhlcmUncyBub3QgYW1iaWd1aXR5IGFueW1vcmUpLgogICovCi12b2lkIHZlcmlmeV9maWxlbmFtZShjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKmFyZykKK3ZvaWQgdmVyaWZ5X2ZpbGVuYW1lKGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJICAgICBjb25zdCBjaGFyICphcmcsCisJCSAgICAgaW50IGRpYWdub3NlX21pc3NwZWx0X3JldikKIHsKIAlpZiAoKmFyZyA9PSAnLScpCiAJCWRpZSgiYmFkIGZsYWcgJyVzJyB1c2VkIGFmdGVyIGZpbGVuYW1lIiwgYXJnKTsKIAlpZiAoY2hlY2tfZmlsZW5hbWUocHJlZml4LCBhcmcpKQogCQlyZXR1cm47Ci0JZGllX3ZlcmlmeV9maWxlbmFtZShwcmVmaXgsIGFyZyk7CisJZGllX3ZlcmlmeV9maWxlbmFtZShwcmVmaXgsIGFyZywgZGlhZ25vc2VfbWlzc3BlbHRfcmV2KTsKIH0KIAogLyoKQEAgLTEwNCw3ICsxNTAsOCBAQAogCWlmICghY2hlY2tfZmlsZW5hbWUocHJlZml4LCBhcmcpKQogCQlyZXR1cm47CiAJZGllKCJhbWJpZ3VvdXMgYXJndW1lbnQgJyVzJzogYm90aCByZXZpc2lvbiBhbmQgZmlsZW5hbWVcbiIKLQkgICAgIlVzZSAnLS0nIHRvIHNlcGFyYXRlIGZpbGVuYW1lcyBmcm9tIHJldmlzaW9ucyIsIGFyZyk7CisJICAgICJVc2UgJy0tJyB0byBzZXBhcmF0ZSBwYXRocyBmcm9tIHJldmlzaW9ucywgbGlrZSB0aGlzOlxuIgorCSAgICAiJ2dpdCA8Y29tbWFuZD4gWzxyZXZpc2lvbj4uLi5dIC0tIFs8ZmlsZT4uLi5dJyIsIGFyZyk7CiB9CiAKIC8qCkBAIC0xNjAsMTAgKzIwNywxMSBAQAogCQkgICAgICpjb3B5ZnJvbSAmJiAqY29weWZyb20gIT0gJyknOwogCQkgICAgIGNvcHlmcm9tID0gbmV4dGF0KSB7CiAJCQlzaXplX3QgbGVuID0gc3RyY3Nwbihjb3B5ZnJvbSwgIiwpIik7Ci0JCQlpZiAoY29weWZyb21bbGVuXSA9PSAnKScpCi0JCQkJbmV4dGF0ID0gY29weWZyb20gKyBsZW47Ci0JCQllbHNlCisJCQlpZiAoY29weWZyb21bbGVuXSA9PSAnLCcpCiAJCQkJbmV4dGF0ID0gY29weWZyb20gKyBsZW4gKyAxOworCQkJZWxzZQorCQkJCS8qIGhhbmRsZSAnKScgYW5kICdcMCcgKi8KKwkJCQluZXh0YXQgPSBjb3B5ZnJvbSArIGxlbjsKIAkJCWlmICghbGVuKQogCQkJCWNvbnRpbnVlOwogCQkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocGF0aHNwZWNfbWFnaWMpOyBpKyspCkBAIC0xNzYsOCArMjI0LDkgQEAKIAkJCQlkaWUoIkludmFsaWQgcGF0aHNwZWMgbWFnaWMgJyUuKnMnIGluICclcyciLAogCQkJCSAgICAoaW50KSBsZW4sIGNvcHlmcm9tLCBlbHQpOwogCQl9Ci0JCWlmICgqY29weWZyb20gPT0gJyknKQotCQkJY29weWZyb20rKzsKKwkJaWYgKCpjb3B5ZnJvbSAhPSAnKScpCisJCQlkaWUoIk1pc3NpbmcgJyknIGF0IHRoZSBlbmQgb2YgcGF0aHNwZWMgbWFnaWMgaW4gJyVzJyIsIGVsdCk7CisJCWNvcHlmcm9tKys7CiAJfSBlbHNlIHsKIAkJLyogc2hvcnRoYW5kICovCiAJCWZvciAoY29weWZyb20gPSBlbHQgKyAxOwpAQCAtMjA2LDYgKzI1NSwyNSBAQAogCQlyZXR1cm4gcHJlZml4X3BhdGgocHJlZml4LCBwcmVmaXhsZW4sIGNvcHlmcm9tKTsKIH0KIAorLyoKKyAqIE4uQi4gZ2V0X3BhdGhzcGVjKCkgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0aGUgInN0cnVjdCBwYXRoc3BlYyIKKyAqIGJhc2VkIGludGVyZmFjZSAtIHNlZSBwYXRoc3BlY19tYWdpYyBhYm92ZS4KKyAqCisgKiBBcmd1bWVudHM6CisgKiAgLSBwcmVmaXggLSBhIHBhdGggcmVsYXRpdmUgdG8gdGhlIHJvb3Qgb2YgdGhlIHdvcmtpbmcgdHJlZQorICogIC0gcGF0aHNwZWMgLSBhIGxpc3Qgb2YgcGF0aHMgdW5kZXJuZWF0aCB0aGUgcHJlZml4IHBhdGgKKyAqCisgKiBJdGVyYXRlcyBvdmVyIHBhdGhzcGVjLCBwcmVwZW5kaW5nIGVhY2ggcGF0aCB3aXRoIHByZWZpeCwKKyAqIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyBsaXN0LgorICoKKyAqIElmIHBhdGhzcGVjIGlzIGVtcHR5LCByZXR1cm4gYSBzaW5nbGV0b24gbGlzdCBjb250YWluaW5nIHByZWZpeC4KKyAqCisgKiBJZiBwYXRoc3BlYyBhbmQgcHJlZml4IGFyZSBib3RoIGVtcHR5LCByZXR1cm4gYW4gZW1wdHkgbGlzdC4KKyAqCisgKiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGJ5IGJ1aWx0LWluIGNvbW1hbmRzIHN1Y2ggYXMgYWRkLmMsIGluIG9yZGVyCisgKiB0byBub3JtYWxpemUgYXJndiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIGJ1aWx0LWluIGludG8gYSBsaXN0IG9mCisgKiBwYXRocyB0byBwcm9jZXNzLCBhbGwgcmVsYXRpdmUgdG8gdGhlIHJvb3Qgb2YgdGhlIHdvcmtpbmcgdHJlZS4KKyAqLwogY29uc3QgY2hhciAqKmdldF9wYXRoc3BlYyhjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKipwYXRoc3BlYykKIHsKIAljb25zdCBjaGFyICplbnRyeSA9ICpwYXRoc3BlYzsKQEAgLTQ1Nyw2ICs1MjUsMTIgQEAKIAkJCXNldF9naXRfd29ya190cmVlKGNvcmVfd29ya3RyZWUpOwogCQl9CiAJfQorCWVsc2UgaWYgKCFnaXRfZW52X2Jvb2woR0lUX0lNUExJQ0lUX1dPUktfVFJFRV9FTlZJUk9OTUVOVCwgMSkpIHsKKwkJLyogIzE2ZCAqLworCQlzZXRfZ2l0X2RpcihnaXRkaXJlbnYpOworCQlmcmVlKGdpdGZpbGUpOworCQlyZXR1cm4gTlVMTDsKKwl9CiAJZWxzZSAvKiAjMiwgIzEwICovCiAJCXNldF9naXRfd29ya190cmVlKCIuIik7CiAKQEAgLTUzNSw2ICs2MDksOCBAQAogCWlmIChjaGVja19yZXBvc2l0b3J5X2Zvcm1hdF9nZW50bHkoIi4iLCBub25naXRfb2spKQogCQlyZXR1cm4gTlVMTDsKIAorCXNldGVudihHSVRfSU1QTElDSVRfV09SS19UUkVFX0VOVklST05NRU5ULCAiMCIsIDEpOworCiAJLyogLS13b3JrLXRyZWUgaXMgc2V0IHdpdGhvdXQgLS1naXQtZGlyOyB1c2UgZGlzY292ZXJlZCBvbmUgKi8KIAlpZiAoZ2V0ZW52KEdJVF9XT1JLX1RSRUVfRU5WSVJPTk1FTlQpIHx8IGdpdF93b3JrX3RyZWVfY2ZnKSB7CiAJCWNvbnN0IGNoYXIgKmdpdGRpcjsKQEAgLTU4MiwxNiArNjU4LDQ4IEBACiB9CiAKIC8qCisgKiBBICJzdHJpbmdfbGlzdF9lYWNoX2Z1bmNfdCIgZnVuY3Rpb24gdGhhdCBjYW5vbmljYWxpemVzIGFuIGVudHJ5CisgKiBmcm9tIEdJVF9DRUlMSU5HX0RJUkVDVE9SSUVTIHVzaW5nIHJlYWxfcGF0aF9pZl92YWxpZCgpLCBvcgorICogZGlzY2FyZHMgaXQgaWYgdW51c2FibGUuICBUaGUgcHJlc2VuY2Ugb2YgYW4gZW1wdHkgZW50cnkgaW4KKyAqIEdJVF9DRUlMSU5HX0RJUkVDVE9SSUVTIHR1cm5zIG9mZiBjYW5vbmljYWxpemF0aW9uIGZvciBhbGwKKyAqIHN1YnNlcXVlbnQgZW50cmllcy4KKyAqLworc3RhdGljIGludCBjYW5vbmljYWxpemVfY2VpbGluZ19lbnRyeShzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbSwKKwkJCQkgICAgICB2b2lkICpjYl9kYXRhKQoreworCWludCAqZW1wdHlfZW50cnlfZm91bmQgPSBjYl9kYXRhOworCWNoYXIgKmNlaWwgPSBpdGVtLT5zdHJpbmc7CisKKwlpZiAoISpjZWlsKSB7CisJCSplbXB0eV9lbnRyeV9mb3VuZCA9IDE7CisJCXJldHVybiAwOworCX0gZWxzZSBpZiAoIWlzX2Fic29sdXRlX3BhdGgoY2VpbCkpIHsKKwkJcmV0dXJuIDA7CisJfSBlbHNlIGlmICgqZW1wdHlfZW50cnlfZm91bmQpIHsKKwkJLyogS2VlcCBlbnRyeSBidXQgZG8gbm90IGNhbm9uaWNhbGl6ZSBpdCAqLworCQlyZXR1cm4gMTsKKwl9IGVsc2UgeworCQljb25zdCBjaGFyICpyZWFsX3BhdGggPSByZWFsX3BhdGhfaWZfdmFsaWQoY2VpbCk7CisJCWlmICghcmVhbF9wYXRoKQorCQkJcmV0dXJuIDA7CisJCWZyZWUoaXRlbS0+c3RyaW5nKTsKKwkJaXRlbS0+c3RyaW5nID0geHN0cmR1cChyZWFsX3BhdGgpOworCQlyZXR1cm4gMTsKKwl9Cit9CisKKy8qCiAgKiBXZSBjYW5ub3QgZGVjaWRlIGluIHRoaXMgZnVuY3Rpb24gd2hldGhlciB3ZSBhcmUgaW4gdGhlIHdvcmsgdHJlZSBvcgogICogbm90LCBzaW5jZSB0aGUgY29uZmlnIGNhbiBvbmx5IGJlIHJlYWQgX2FmdGVyXyB0aGlzIGZ1bmN0aW9uIHdhcyBjYWxsZWQuCiAgKi8KIHN0YXRpYyBjb25zdCBjaGFyICpzZXR1cF9naXRfZGlyZWN0b3J5X2dlbnRseV8xKGludCAqbm9uZ2l0X29rKQogewogCWNvbnN0IGNoYXIgKmVudl9jZWlsaW5nX2RpcnMgPSBnZXRlbnYoQ0VJTElOR19ESVJFQ1RPUklFU19FTlZJUk9OTUVOVCk7CisJc3RydWN0IHN0cmluZ19saXN0IGNlaWxpbmdfZGlycyA9IFNUUklOR19MSVNUX0lOSVRfRFVQOwogCXN0YXRpYyBjaGFyIGN3ZFtQQVRIX01BWCsxXTsKIAljb25zdCBjaGFyICpnaXRkaXJlbnYsICpyZXQ7CiAJY2hhciAqZ2l0ZmlsZTsKLQlpbnQgbGVuLCBvZmZzZXQsIG9mZnNldF9wYXJlbnQsIGNlaWxfb2Zmc2V0OworCWludCBsZW4sIG9mZnNldCwgb2Zmc2V0X3BhcmVudCwgY2VpbF9vZmZzZXQgPSAtMTsKIAlkZXZfdCBjdXJyZW50X2RldmljZSA9IDA7CiAJaW50IG9uZV9maWxlc3lzdGVtID0gMTsKIApAQCAtNjE2LDcgKzcyNCwxNiBAQAogCWlmIChnaXRkaXJlbnYpCiAJCXJldHVybiBzZXR1cF9leHBsaWNpdF9naXRfZGlyKGdpdGRpcmVudiwgY3dkLCBsZW4sIG5vbmdpdF9vayk7CiAKLQljZWlsX29mZnNldCA9IGxvbmdlc3RfYW5jZXN0b3JfbGVuZ3RoKGN3ZCwgZW52X2NlaWxpbmdfZGlycyk7CisJaWYgKGVudl9jZWlsaW5nX2RpcnMpIHsKKwkJaW50IGVtcHR5X2VudHJ5X2ZvdW5kID0gMDsKKworCQlzdHJpbmdfbGlzdF9zcGxpdCgmY2VpbGluZ19kaXJzLCBlbnZfY2VpbGluZ19kaXJzLCBQQVRIX1NFUCwgLTEpOworCQlmaWx0ZXJfc3RyaW5nX2xpc3QoJmNlaWxpbmdfZGlycywgMCwKKwkJCQkgICBjYW5vbmljYWxpemVfY2VpbGluZ19lbnRyeSwgJmVtcHR5X2VudHJ5X2ZvdW5kKTsKKwkJY2VpbF9vZmZzZXQgPSBsb25nZXN0X2FuY2VzdG9yX2xlbmd0aChjd2QsICZjZWlsaW5nX2RpcnMpOworCQlzdHJpbmdfbGlzdF9jbGVhcigmY2VpbGluZ19kaXJzLCAwKTsKKwl9CisKIAlpZiAoY2VpbF9vZmZzZXQgPCAwICYmIGhhc19kb3NfZHJpdmVfcHJlZml4KGN3ZCkpCiAJCWNlaWxfb2Zmc2V0ID0gMTsKIApAQCAtNjg3LDkgKzgwNCw5IEBACiAKIAlwcmVmaXggPSBzZXR1cF9naXRfZGlyZWN0b3J5X2dlbnRseV8xKG5vbmdpdF9vayk7CiAJaWYgKHByZWZpeCkKLQkJc2V0ZW52KCJHSVRfUFJFRklYIiwgcHJlZml4LCAxKTsKKwkJc2V0ZW52KEdJVF9QUkVGSVhfRU5WSVJPTk1FTlQsIHByZWZpeCwgMSk7CiAJZWxzZQotCQlzZXRlbnYoIkdJVF9QUkVGSVgiLCAiIiwgMSk7CisJCXNldGVudihHSVRfUFJFRklYX0VOVklST05NRU5ULCAiIiwgMSk7CiAKIAlpZiAoc3RhcnR1cF9pbmZvKSB7CiAJCXN0YXJ0dXBfaW5mby0+aGF2ZV9yZXBvc2l0b3J5ID0gIW5vbmdpdF9vayB8fCAhKm5vbmdpdF9vazsKZGlmZiAtLWdpdCBhL3NoYTEtYXJyYXkuYyBiL3NoYTEtYXJyYXkuYwppbmRleCBiMmY0N2Y5Li42ZjRhMjI0IDEwMDY0NAotLS0gYS9zaGExLWFycmF5LmMKKysrIGIvc2hhMS1hcnJheS5jCkBAIC0xNCw3ICsxNCw3IEBACiAJcmV0dXJuIGhhc2hjbXAoYSwgYik7CiB9CiAKLXZvaWQgc2hhMV9hcnJheV9zb3J0KHN0cnVjdCBzaGExX2FycmF5ICphcnJheSkKK3N0YXRpYyB2b2lkIHNoYTFfYXJyYXlfc29ydChzdHJ1Y3Qgc2hhMV9hcnJheSAqYXJyYXkpCiB7CiAJcXNvcnQoYXJyYXktPnNoYTEsIGFycmF5LT5uciwgc2l6ZW9mKCphcnJheS0+c2hhMSksIHZvaWRfaGFzaGNtcCk7CiAJYXJyYXktPnNvcnRlZCA9IDE7CmRpZmYgLS1naXQgYS9zaGExLWFycmF5LmggYi9zaGExLWFycmF5LmgKaW5kZXggNDQ5OWI1ZC4uNzJiYjMzYiAxMDA2NDQKLS0tIGEvc2hhMS1hcnJheS5oCisrKyBiL3NoYTEtYXJyYXkuaApAQCAtMTEsNyArMTEsNiBAQAogI2RlZmluZSBTSEExX0FSUkFZX0lOSVQgeyBOVUxMLCAwLCAwLCAwIH0KIAogdm9pZCBzaGExX2FycmF5X2FwcGVuZChzdHJ1Y3Qgc2hhMV9hcnJheSAqYXJyYXksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpOwotdm9pZCBzaGExX2FycmF5X3NvcnQoc3RydWN0IHNoYTFfYXJyYXkgKmFycmF5KTsKIGludCBzaGExX2FycmF5X2xvb2t1cChzdHJ1Y3Qgc2hhMV9hcnJheSAqYXJyYXksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpOwogdm9pZCBzaGExX2FycmF5X2NsZWFyKHN0cnVjdCBzaGExX2FycmF5ICphcnJheSk7CiAKZGlmZiAtLWdpdCBhL3NoYTFfZmlsZS5jIGIvc2hhMV9maWxlLmMKaW5kZXggNGNjYWY3YS4uYjExNGNjOSAxMDA2NDQKLS0tIGEvc2hhMV9maWxlLmMKKysrIGIvc2hhMV9maWxlLmMKQEAgLTcsNiArNyw3IEBACiAgKiBjcmVhdGlvbiBldGMuCiAgKi8KICNpbmNsdWRlICJjYWNoZS5oIgorI2luY2x1ZGUgInN0cmluZy1saXN0LmgiCiAjaW5jbHVkZSAiZGVsdGEuaCIKICNpbmNsdWRlICJwYWNrLmgiCiAjaW5jbHVkZSAiYmxvYi5oIgpAQCAtMjAsNiArMjEsNyBAQAogI2luY2x1ZGUgInNoYTEtbG9va3VwLmgiCiAjaW5jbHVkZSAiYnVsay1jaGVja2luLmgiCiAjaW5jbHVkZSAic3RyZWFtaW5nLmgiCisjaW5jbHVkZSAiZGlyLmgiCiAKICNpZm5kZWYgT19OT0FUSU1FCiAjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIChkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fUFBDX18pKQpAQCAtMTIyLDggKzEyNCwxMyBAQAogCQkJfQogCQl9CiAJCWVsc2UgaWYgKG1rZGlyKHBhdGgsIDA3NzcpKSB7Ci0JCQkqcG9zID0gJy8nOwotCQkJcmV0dXJuIC0xOworCQkJaWYgKGVycm5vID09IEVFWElTVCAmJgorCQkJICAgICFzdGF0KHBhdGgsICZzdCkgJiYgU19JU0RJUihzdC5zdF9tb2RlKSkgeworCQkJCTsgLyogc29tZWJvZHkgY3JlYXRlZCBpdCBzaW5jZSB3ZSBjaGVja2VkICovCisJCQl9IGVsc2UgeworCQkJCSpwb3MgPSAnLyc7CisJCQkJcmV0dXJuIC0xOworCQkJfQogCQl9CiAJCWVsc2UgaWYgKGFkanVzdF9zaGFyZWRfcGVybShwYXRoKSkgewogCQkJKnBvcyA9ICcvJzsKQEAgLTI0Niw3ICsyNTMsNyBAQAogICogU0hBMSwgYW4gZXh0cmEgc2xhc2ggZm9yIHRoZSBmaXJzdCBsZXZlbCBpbmRpcmVjdGlvbiwgYW5kIHRoZQogICogdGVybWluYXRpbmcgTlVMLgogICovCi1zdGF0aWMgaW50IGxpbmtfYWx0X29kYl9lbnRyeShjb25zdCBjaGFyICogZW50cnksIGludCBsZW4sIGNvbnN0IGNoYXIgKiByZWxhdGl2ZV9iYXNlLCBpbnQgZGVwdGgpCitzdGF0aWMgaW50IGxpbmtfYWx0X29kYl9lbnRyeShjb25zdCBjaGFyICplbnRyeSwgY29uc3QgY2hhciAqcmVsYXRpdmVfYmFzZSwgaW50IGRlcHRoKQogewogCWNvbnN0IGNoYXIgKm9iamRpciA9IGdldF9vYmplY3RfZGlyZWN0b3J5KCk7CiAJc3RydWN0IGFsdGVybmF0ZV9vYmplY3RfZGF0YWJhc2UgKmVudDsKQEAgLTI1OCw3ICsyNjUsNyBAQAogCQlzdHJidWZfYWRkc3RyKCZwYXRoYnVmLCByZWFsX3BhdGgocmVsYXRpdmVfYmFzZSkpOwogCQlzdHJidWZfYWRkY2goJnBhdGhidWYsICcvJyk7CiAJfQotCXN0cmJ1Zl9hZGQoJnBhdGhidWYsIGVudHJ5LCBsZW4pOworCXN0cmJ1Zl9hZGRzdHIoJnBhdGhidWYsIGVudHJ5KTsKIAogCW5vcm1hbGl6ZV9wYXRoX2NvcHkocGF0aGJ1Zi5idWYsIHBhdGhidWYuYnVmKTsKIApAQCAtMjk4LDcgKzMwNSw3IEBACiAJCQlyZXR1cm4gLTE7CiAJCX0KIAl9Ci0JaWYgKCFtZW1jbXAoZW50LT5iYXNlLCBvYmpkaXIsIHBmeGxlbikpIHsKKwlpZiAoIXN0cmNtcChlbnQtPmJhc2UsIG9iamRpcikpIHsKIAkJZnJlZShlbnQpOwogCQlyZXR1cm4gLTE7CiAJfQpAQCAtMzE2LDEwICszMjMsMTIgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgbGlua19hbHRfb2RiX2VudHJpZXMoY29uc3QgY2hhciAqYWx0LCBjb25zdCBjaGFyICplcCwgaW50IHNlcCwKK3N0YXRpYyB2b2lkIGxpbmtfYWx0X29kYl9lbnRyaWVzKGNvbnN0IGNoYXIgKmFsdCwgaW50IGxlbiwgaW50IHNlcCwKIAkJCQkgY29uc3QgY2hhciAqcmVsYXRpdmVfYmFzZSwgaW50IGRlcHRoKQogewotCWNvbnN0IGNoYXIgKmNwLCAqbGFzdDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgZW50cmllcyA9IFNUUklOR19MSVNUX0lOSVRfTk9EVVA7CisJY2hhciAqYWx0X2NvcHk7CisJaW50IGk7CiAKIAlpZiAoZGVwdGggPiA1KSB7CiAJCWVycm9yKCIlczogaWdub3JpbmcgYWx0ZXJuYXRlIG9iamVjdCBzdG9yZXMsIG5lc3RpbmcgdG9vIGRlZXAuIiwKQEAgLTMyNywzMCArMzM2LDIxIEBACiAJCXJldHVybjsKIAl9CiAKLQlsYXN0ID0gYWx0OwotCXdoaWxlIChsYXN0IDwgZXApIHsKLQkJY3AgPSBsYXN0OwotCQlpZiAoY3AgPCBlcCAmJiAqY3AgPT0gJyMnKSB7Ci0JCQl3aGlsZSAoY3AgPCBlcCAmJiAqY3AgIT0gc2VwKQotCQkJCWNwKys7Ci0JCQlsYXN0ID0gY3AgKyAxOworCWFsdF9jb3B5ID0geG1lbWR1cHooYWx0LCBsZW4pOworCXN0cmluZ19saXN0X3NwbGl0X2luX3BsYWNlKCZlbnRyaWVzLCBhbHRfY29weSwgc2VwLCAtMSk7CisJZm9yIChpID0gMDsgaSA8IGVudHJpZXMubnI7IGkrKykgeworCQljb25zdCBjaGFyICplbnRyeSA9IGVudHJpZXMuaXRlbXNbaV0uc3RyaW5nOworCQlpZiAoZW50cnlbMF0gPT0gJ1wwJyB8fCBlbnRyeVswXSA9PSAnIycpCiAJCQljb250aW51ZTsKKwkJaWYgKCFpc19hYnNvbHV0ZV9wYXRoKGVudHJ5KSAmJiBkZXB0aCkgeworCQkJZXJyb3IoIiVzOiBpZ25vcmluZyByZWxhdGl2ZSBhbHRlcm5hdGUgb2JqZWN0IHN0b3JlICVzIiwKKwkJCQkJcmVsYXRpdmVfYmFzZSwgZW50cnkpOworCQl9IGVsc2UgeworCQkJbGlua19hbHRfb2RiX2VudHJ5KGVudHJ5LCByZWxhdGl2ZV9iYXNlLCBkZXB0aCk7CiAJCX0KLQkJd2hpbGUgKGNwIDwgZXAgJiYgKmNwICE9IHNlcCkKLQkJCWNwKys7Ci0JCWlmIChsYXN0ICE9IGNwKSB7Ci0JCQlpZiAoIWlzX2Fic29sdXRlX3BhdGgobGFzdCkgJiYgZGVwdGgpIHsKLQkJCQllcnJvcigiJXM6IGlnbm9yaW5nIHJlbGF0aXZlIGFsdGVybmF0ZSBvYmplY3Qgc3RvcmUgJXMiLAotCQkJCQkJcmVsYXRpdmVfYmFzZSwgbGFzdCk7Ci0JCQl9IGVsc2UgewotCQkJCWxpbmtfYWx0X29kYl9lbnRyeShsYXN0LCBjcCAtIGxhc3QsCi0JCQkJCQlyZWxhdGl2ZV9iYXNlLCBkZXB0aCk7Ci0JCQl9Ci0JCX0KLQkJd2hpbGUgKGNwIDwgZXAgJiYgKmNwID09IHNlcCkKLQkJCWNwKys7Ci0JCWxhc3QgPSBjcDsKIAl9CisJc3RyaW5nX2xpc3RfY2xlYXIoJmVudHJpZXMsIDApOworCWZyZWUoYWx0X2NvcHkpOwogfQogCiB2b2lkIHJlYWRfaW5mb19hbHRlcm5hdGVzKGNvbnN0IGNoYXIgKiByZWxhdGl2ZV9iYXNlLCBpbnQgZGVwdGgpCkBAIC0zNzcsNyArMzc3LDcgQEAKIAltYXAgPSB4bW1hcChOVUxMLCBtYXBzeiwgUFJPVF9SRUFELCBNQVBfUFJJVkFURSwgZmQsIDApOwogCWNsb3NlKGZkKTsKIAotCWxpbmtfYWx0X29kYl9lbnRyaWVzKG1hcCwgbWFwICsgbWFwc3osICdcbicsIHJlbGF0aXZlX2Jhc2UsIGRlcHRoKTsKKwlsaW5rX2FsdF9vZGJfZW50cmllcyhtYXAsIG1hcHN6LCAnXG4nLCByZWxhdGl2ZV9iYXNlLCBkZXB0aCk7CiAKIAltdW5tYXAobWFwLCBtYXBzeik7CiB9CkBAIC0zOTEsNyArMzkxLDcgQEAKIAlpZiAoY29tbWl0X2xvY2tfZmlsZShsb2NrKSkKIAkJZGllKCJjb3VsZCBub3QgY2xvc2UgYWx0ZXJuYXRlcyBmaWxlIik7CiAJaWYgKGFsdF9vZGJfdGFpbCkKLQkJbGlua19hbHRfb2RiX2VudHJpZXMoYWx0LCBhbHQgKyBzdHJsZW4oYWx0KSwgJ1xuJywgTlVMTCwgMCk7CisJCWxpbmtfYWx0X29kYl9lbnRyaWVzKGFsdCwgc3RybGVuKGFsdCksICdcbicsIE5VTEwsIDApOwogfQogCiB2b2lkIGZvcmVhY2hfYWx0X29kYihhbHRfb2RiX2ZuIGZuLCB2b2lkICpjYikKQEAgLTQxNSw3ICs0MTUsNyBAQAogCWlmICghYWx0KSBhbHQgPSAiIjsKIAogCWFsdF9vZGJfdGFpbCA9ICZhbHRfb2RiX2xpc3Q7Ci0JbGlua19hbHRfb2RiX2VudHJpZXMoYWx0LCBhbHQgKyBzdHJsZW4oYWx0KSwgUEFUSF9TRVAsIE5VTEwsIDApOworCWxpbmtfYWx0X29kYl9lbnRyaWVzKGFsdCwgc3RybGVuKGFsdCksIFBBVEhfU0VQLCBOVUxMLCAwKTsKIAogCXJlYWRfaW5mb19hbHRlcm5hdGVzKGdldF9vYmplY3RfZGlyZWN0b3J5KCksIDApOwogfQpAQCAtNzMxLDYgKzczMSwyNCBAQAogCX0KIH0KIAorc3RhdGljIHVuc2lnbmVkIGludCBnZXRfbWF4X2ZkX2xpbWl0KHZvaWQpCit7CisjaWZkZWYgUkxJTUlUX05PRklMRQorCXN0cnVjdCBybGltaXQgbGltOworCisJaWYgKGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmbGltKSkKKwkJZGllX2Vycm5vKCJjYW5ub3QgZ2V0IFJMSU1JVF9OT0ZJTEUiKTsKKworCXJldHVybiBsaW0ucmxpbV9jdXI7CisjZWxpZiBkZWZpbmVkKF9TQ19PUEVOX01BWCkKKwlyZXR1cm4gc3lzY29uZihfU0NfT1BFTl9NQVgpOworI2VsaWYgZGVmaW5lZChPUEVOX01BWCkKKwlyZXR1cm4gT1BFTl9NQVg7CisjZWxzZQorCXJldHVybiAxOyAvKiBzZWUgdGhlIGNhbGxlciA7LSkgKi8KKyNlbmRpZgorfQorCiAvKgogICogRG8gbm90IGNhbGwgdGhpcyBkaXJlY3RseSBhcyB0aGlzIGxlYWtzIHAtPnBhY2tfZmQgb24gZXJyb3IgcmV0dXJuOwogICogY2FsbCBvcGVuX3BhY2tlZF9naXQoKSBpbnN0ZWFkLgpAQCAtNzQ3LDEzICs3NjUsNyBAQAogCQlyZXR1cm4gZXJyb3IoInBhY2tmaWxlICVzIGluZGV4IHVuYXZhaWxhYmxlIiwgcC0+cGFja19uYW1lKTsKIAogCWlmICghcGFja19tYXhfZmRzKSB7Ci0JCXN0cnVjdCBybGltaXQgbGltOwotCQl1bnNpZ25lZCBpbnQgbWF4X2ZkczsKLQotCQlpZiAoZ2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZsaW0pKQotCQkJZGllX2Vycm5vKCJjYW5ub3QgZ2V0IFJMSU1JVF9OT0ZJTEUiKTsKLQotCQltYXhfZmRzID0gbGltLnJsaW1fY3VyOworCQl1bnNpZ25lZCBpbnQgbWF4X2ZkcyA9IGdldF9tYXhfZmRfbGltaXQoKTsKIAogCQkvKiBTYXZlIDMgZm9yIHN0ZGluL3N0ZG91dC9zdGRlcnIsIDIyIGZvciB3b3JrICovCiAJCWlmICgyNSA8IG1heF9mZHMpCkBAIC05OTQsNiArMTAwNiw2MyBAQAogCXBhY2tlZF9naXQgPSBwYWNrOwogfQogCit2b2lkICgqcmVwb3J0X2dhcmJhZ2UpKGNvbnN0IGNoYXIgKmRlc2MsIGNvbnN0IGNoYXIgKnBhdGgpOworCitzdGF0aWMgdm9pZCByZXBvcnRfaGVscGVyKGNvbnN0IHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCwKKwkJCSAgaW50IHNlZW5fYml0cywgaW50IGZpcnN0LCBpbnQgbGFzdCkKK3sKKwljb25zdCBjaGFyICptc2c7CisJc3dpdGNoIChzZWVuX2JpdHMpIHsKKwljYXNlIDA6CisJCW1zZyA9ICJubyBjb3JyZXNwb25kaW5nIC5pZHggbm9yIC5wYWNrIjsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQltc2cgPSAibm8gY29ycmVzcG9uZGluZyAuaWR4IjsKKwkJYnJlYWs7CisJY2FzZSAyOgorCQltc2cgPSAibm8gY29ycmVzcG9uZGluZyAucGFjayI7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybjsKKwl9CisJZm9yICg7IGZpcnN0IDwgbGFzdDsgZmlyc3QrKykKKwkJcmVwb3J0X2dhcmJhZ2UobXNnLCBsaXN0LT5pdGVtc1tmaXJzdF0uc3RyaW5nKTsKK30KKworc3RhdGljIHZvaWQgcmVwb3J0X3BhY2tfZ2FyYmFnZShzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmxpc3QpCit7CisJaW50IGksIGJhc2VsZW4gPSAtMSwgZmlyc3QgPSAwLCBzZWVuX2JpdHMgPSAwOworCisJaWYgKCFyZXBvcnRfZ2FyYmFnZSkKKwkJcmV0dXJuOworCisJc29ydF9zdHJpbmdfbGlzdChsaXN0KTsKKworCWZvciAoaSA9IDA7IGkgPCBsaXN0LT5ucjsgaSsrKSB7CisJCWNvbnN0IGNoYXIgKnBhdGggPSBsaXN0LT5pdGVtc1tpXS5zdHJpbmc7CisJCWlmIChiYXNlbGVuICE9IC0xICYmCisJCSAgICBzdHJuY21wKHBhdGgsIGxpc3QtPml0ZW1zW2ZpcnN0XS5zdHJpbmcsIGJhc2VsZW4pKSB7CisJCQlyZXBvcnRfaGVscGVyKGxpc3QsIHNlZW5fYml0cywgZmlyc3QsIGkpOworCQkJYmFzZWxlbiA9IC0xOworCQkJc2Vlbl9iaXRzID0gMDsKKwkJfQorCQlpZiAoYmFzZWxlbiA9PSAtMSkgeworCQkJY29uc3QgY2hhciAqZG90ID0gc3RycmNocihwYXRoLCAnLicpOworCQkJaWYgKCFkb3QpIHsKKwkJCQlyZXBvcnRfZ2FyYmFnZSgiZ2FyYmFnZSBmb3VuZCIsIHBhdGgpOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJYmFzZWxlbiA9IGRvdCAtIHBhdGggKyAxOworCQkJZmlyc3QgPSBpOworCQl9CisJCWlmICghc3RyY21wKHBhdGggKyBiYXNlbGVuLCAicGFjayIpKQorCQkJc2Vlbl9iaXRzIHw9IDE7CisJCWVsc2UgaWYgKCFzdHJjbXAocGF0aCArIGJhc2VsZW4sICJpZHgiKSkKKwkJCXNlZW5fYml0cyB8PSAyOworCX0KKwlyZXBvcnRfaGVscGVyKGxpc3QsIHNlZW5fYml0cywgZmlyc3QsIGxpc3QtPm5yKTsKK30KKwogc3RhdGljIHZvaWQgcHJlcGFyZV9wYWNrZWRfZ2l0X29uZShjaGFyICpvYmpkaXIsIGludCBsb2NhbCkKIHsKIAkvKiBFbnN1cmUgdGhhdCB0aGlzIGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2ggc28gdGhhdCB3ZSBjYW4KQEAgLTEwMDMsNiArMTA3Miw3IEBACiAJaW50IGxlbjsKIAlESVIgKmRpcjsKIAlzdHJ1Y3QgZGlyZW50ICpkZTsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgZ2FyYmFnZSA9IFNUUklOR19MSVNUX0lOSVRfRFVQOwogCiAJc3ByaW50ZihwYXRoLCAiJXMvcGFjayIsIG9iamRpcik7CiAJbGVuID0gc3RybGVuKHBhdGgpOwpAQCAtMTAxOCwyOSArMTA4OCw0OSBAQAogCQlpbnQgbmFtZWxlbiA9IHN0cmxlbihkZS0+ZF9uYW1lKTsKIAkJc3RydWN0IHBhY2tlZF9naXQgKnA7CiAKLQkJaWYgKCFoYXNfZXh0ZW5zaW9uKGRlLT5kX25hbWUsICIuaWR4IikpCisJCWlmIChsZW4gKyBuYW1lbGVuICsgMSA+IHNpemVvZihwYXRoKSkgeworCQkJaWYgKHJlcG9ydF9nYXJiYWdlKSB7CisJCQkJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOworCQkJCXN0cmJ1Zl9hZGRmKCZzYiwgIiUuKnMvJXMiLCBsZW4gLSAxLCBwYXRoLCBkZS0+ZF9uYW1lKTsKKwkJCQlyZXBvcnRfZ2FyYmFnZSgicGF0aCB0b28gbG9uZyIsIHNiLmJ1Zik7CisJCQkJc3RyYnVmX3JlbGVhc2UoJnNiKTsKKwkJCX0KIAkJCWNvbnRpbnVlOwotCi0JCWlmIChsZW4gKyBuYW1lbGVuICsgMSA+IHNpemVvZihwYXRoKSkKLQkJCWNvbnRpbnVlOwotCi0JCS8qIERvbid0IHJlb3BlbiBhIHBhY2sgd2UgYWxyZWFkeSBoYXZlLiAqLwotCQlzdHJjcHkocGF0aCArIGxlbiwgZGUtPmRfbmFtZSk7Ci0JCWZvciAocCA9IHBhY2tlZF9naXQ7IHA7IHAgPSBwLT5uZXh0KSB7Ci0JCQlpZiAoIW1lbWNtcChwYXRoLCBwLT5wYWNrX25hbWUsIGxlbiArIG5hbWVsZW4gLSA0KSkKLQkJCQlicmVhazsKIAkJfQotCQlpZiAocCkKKworCQlpZiAoaXNfZG90X29yX2RvdGRvdChkZS0+ZF9uYW1lKSkKIAkJCWNvbnRpbnVlOwotCQkvKiBTZWUgaWYgaXQgcmVhbGx5IGlzIGEgdmFsaWQgLmlkeCBmaWxlIHdpdGggY29ycmVzcG9uZGluZwotCQkgKiAucGFjayBmaWxlIHRoYXQgd2UgY2FuIG1hcC4KLQkJICovCi0JCXAgPSBhZGRfcGFja2VkX2dpdChwYXRoLCBsZW4gKyBuYW1lbGVuLCBsb2NhbCk7Ci0JCWlmICghcCkKKworCQlzdHJjcHkocGF0aCArIGxlbiwgZGUtPmRfbmFtZSk7CisKKwkJaWYgKGhhc19leHRlbnNpb24oZGUtPmRfbmFtZSwgIi5pZHgiKSkgeworCQkJLyogRG9uJ3QgcmVvcGVuIGEgcGFjayB3ZSBhbHJlYWR5IGhhdmUuICovCisJCQlmb3IgKHAgPSBwYWNrZWRfZ2l0OyBwOyBwID0gcC0+bmV4dCkgeworCQkJCWlmICghbWVtY21wKHBhdGgsIHAtPnBhY2tfbmFtZSwgbGVuICsgbmFtZWxlbiAtIDQpKQorCQkJCQlicmVhazsKKwkJCX0KKwkJCWlmIChwID09IE5VTEwgJiYKKwkJCSAgICAvKgorCQkJICAgICAqIFNlZSBpZiBpdCByZWFsbHkgaXMgYSB2YWxpZCAuaWR4IGZpbGUgd2l0aAorCQkJICAgICAqIGNvcnJlc3BvbmRpbmcgLnBhY2sgZmlsZSB0aGF0IHdlIGNhbiBtYXAuCisJCQkgICAgICovCisJCQkgICAgKHAgPSBhZGRfcGFja2VkX2dpdChwYXRoLCBsZW4gKyBuYW1lbGVuLCBsb2NhbCkpICE9IE5VTEwpCisJCQkJaW5zdGFsbF9wYWNrZWRfZ2l0KHApOworCQl9CisKKwkJaWYgKCFyZXBvcnRfZ2FyYmFnZSkKIAkJCWNvbnRpbnVlOwotCQlpbnN0YWxsX3BhY2tlZF9naXQocCk7CisKKwkJaWYgKGhhc19leHRlbnNpb24oZGUtPmRfbmFtZSwgIi5pZHgiKSB8fAorCQkgICAgaGFzX2V4dGVuc2lvbihkZS0+ZF9uYW1lLCAiLnBhY2siKSB8fAorCQkgICAgaGFzX2V4dGVuc2lvbihkZS0+ZF9uYW1lLCAiLmtlZXAiKSkKKwkJCXN0cmluZ19saXN0X2FwcGVuZCgmZ2FyYmFnZSwgcGF0aCk7CisJCWVsc2UKKwkJCXJlcG9ydF9nYXJiYWdlKCJnYXJiYWdlIGZvdW5kIiwgcGF0aCk7CiAJfQogCWNsb3NlZGlyKGRpcik7CisJcmVwb3J0X3BhY2tfZ2FyYmFnZSgmZ2FyYmFnZSk7CisJc3RyaW5nX2xpc3RfY2xlYXIoJmdhcmJhZ2UsIDApOwogfQogCiBzdGF0aWMgaW50IHNvcnRfcGFjayhjb25zdCB2b2lkICphXywgY29uc3Qgdm9pZCAqYl8pCkBAIC0xMTgxLDYgKzEyNzEsMTAgQEAKIAkJY2hhciBidWZbMTAyNCAqIDE2XTsKIAkJc3NpemVfdCByZWFkbGVuID0gcmVhZF9pc3RyZWFtKHN0LCBidWYsIHNpemVvZihidWYpKTsKIAorCQlpZiAocmVhZGxlbiA8IDApIHsKKwkJCWNsb3NlX2lzdHJlYW0oc3QpOworCQkJcmV0dXJuIC0xOworCQl9CiAJCWlmICghcmVhZGxlbikKIAkJCWJyZWFrOwogCQlnaXRfU0hBMV9VcGRhdGUoJmMsIGJ1ZiwgcmVhZGxlbik7CkBAIC0xNTU0LDUwICsxNjQ4LDYgQEAKIAlyZXR1cm4gYmFzZV9vZmZzZXQ7CiB9CiAKLS8qIGZvcndhcmQgZGVjbGFyYXRpb24gZm9yIGEgbXV0dWFsbHkgcmVjdXJzaXZlIGZ1bmN0aW9uICovCi1zdGF0aWMgaW50IHBhY2tlZF9vYmplY3RfaW5mbyhzdHJ1Y3QgcGFja2VkX2dpdCAqcCwgb2ZmX3Qgb2Zmc2V0LAotCQkJICAgICAgdW5zaWduZWQgbG9uZyAqc2l6ZXAsIGludCAqcnR5cGUpOwotCi1zdGF0aWMgaW50IHBhY2tlZF9kZWx0YV9pbmZvKHN0cnVjdCBwYWNrZWRfZ2l0ICpwLAotCQkJICAgICBzdHJ1Y3QgcGFja193aW5kb3cgKip3X2N1cnMsCi0JCQkgICAgIG9mZl90IGN1cnBvcywKLQkJCSAgICAgZW51bSBvYmplY3RfdHlwZSB0eXBlLAotCQkJICAgICBvZmZfdCBvYmpfb2Zmc2V0LAotCQkJICAgICB1bnNpZ25lZCBsb25nICpzaXplcCkKLXsKLQlvZmZfdCBiYXNlX29mZnNldDsKLQotCWJhc2Vfb2Zmc2V0ID0gZ2V0X2RlbHRhX2Jhc2UocCwgd19jdXJzLCAmY3VycG9zLCB0eXBlLCBvYmpfb2Zmc2V0KTsKLQlpZiAoIWJhc2Vfb2Zmc2V0KQotCQlyZXR1cm4gT0JKX0JBRDsKLQl0eXBlID0gcGFja2VkX29iamVjdF9pbmZvKHAsIGJhc2Vfb2Zmc2V0LCBOVUxMLCBOVUxMKTsKLQlpZiAodHlwZSA8PSBPQkpfTk9ORSkgewotCQlzdHJ1Y3QgcmV2aW5kZXhfZW50cnkgKnJldmlkeDsKLQkJY29uc3QgdW5zaWduZWQgY2hhciAqYmFzZV9zaGExOwotCQlyZXZpZHggPSBmaW5kX3BhY2tfcmV2aW5kZXgocCwgYmFzZV9vZmZzZXQpOwotCQlpZiAoIXJldmlkeCkKLQkJCXJldHVybiBPQkpfQkFEOwotCQliYXNlX3NoYTEgPSBudGhfcGFja2VkX29iamVjdF9zaGExKHAsIHJldmlkeC0+bnIpOwotCQltYXJrX2JhZF9wYWNrZWRfb2JqZWN0KHAsIGJhc2Vfc2hhMSk7Ci0JCXR5cGUgPSBzaGExX29iamVjdF9pbmZvKGJhc2Vfc2hhMSwgTlVMTCk7Ci0JCWlmICh0eXBlIDw9IE9CSl9OT05FKQotCQkJcmV0dXJuIE9CSl9CQUQ7Ci0JfQotCi0JLyogV2UgY2hvb3NlIHRvIG9ubHkgZ2V0IHRoZSB0eXBlIG9mIHRoZSBiYXNlIG9iamVjdCBhbmQKLQkgKiBpZ25vcmUgcG90ZW50aWFsbHkgY29ycnVwdCBwYWNrIGZpbGUgdGhhdCBleHBlY3RzIHRoZSBkZWx0YQotCSAqIGJhc2VkIG9uIGEgYmFzZSB3aXRoIGEgd3Jvbmcgc2l6ZS4gIFRoaXMgc2F2ZXMgdG9ucyBvZgotCSAqIGluZmxhdGUoKSBjYWxscy4KLQkgKi8KLQlpZiAoc2l6ZXApIHsKLQkJKnNpemVwID0gZ2V0X3NpemVfZnJvbV9kZWx0YShwLCB3X2N1cnMsIGN1cnBvcyk7Ci0JCWlmICgqc2l6ZXAgPT0gMCkKLQkJCXR5cGUgPSBPQkpfQkFEOwotCX0KLQotCXJldHVybiB0eXBlOwotfQotCiBpbnQgdW5wYWNrX29iamVjdF9oZWFkZXIoc3RydWN0IHBhY2tlZF9naXQgKnAsCiAJCQkgc3RydWN0IHBhY2tfd2luZG93ICoqd19jdXJzLAogCQkJIG9mZl90ICpjdXJwb3MsCkBAIC0xNjI0LDYgKzE2NzQsMjUgQEAKIAlyZXR1cm4gdHlwZTsKIH0KIAorc3RhdGljIGludCByZXRyeV9iYWRfcGFja2VkX29mZnNldChzdHJ1Y3QgcGFja2VkX2dpdCAqcCwgb2ZmX3Qgb2JqX29mZnNldCkKK3sKKwlpbnQgdHlwZTsKKwlzdHJ1Y3QgcmV2aW5kZXhfZW50cnkgKnJldmlkeDsKKwljb25zdCB1bnNpZ25lZCBjaGFyICpzaGExOworCXJldmlkeCA9IGZpbmRfcGFja19yZXZpbmRleChwLCBvYmpfb2Zmc2V0KTsKKwlpZiAoIXJldmlkeCkKKwkJcmV0dXJuIE9CSl9CQUQ7CisJc2hhMSA9IG50aF9wYWNrZWRfb2JqZWN0X3NoYTEocCwgcmV2aWR4LT5ucik7CisJbWFya19iYWRfcGFja2VkX29iamVjdChwLCBzaGExKTsKKwl0eXBlID0gc2hhMV9vYmplY3RfaW5mbyhzaGExLCBOVUxMKTsKKwlpZiAodHlwZSA8PSBPQkpfTk9ORSkKKwkJcmV0dXJuIE9CSl9CQUQ7CisJcmV0dXJuIHR5cGU7Cit9CisKKworI2RlZmluZSBQT0lfU1RBQ0tfUFJFQUxMT0MgNjQKKwogc3RhdGljIGludCBwYWNrZWRfb2JqZWN0X2luZm8oc3RydWN0IHBhY2tlZF9naXQgKnAsIG9mZl90IG9ial9vZmZzZXQsCiAJCQkgICAgICB1bnNpZ25lZCBsb25nICpzaXplcCwgaW50ICpydHlwZSkKIHsKQEAgLTE2MzEsMzEgKzE3MDAsODkgQEAKIAl1bnNpZ25lZCBsb25nIHNpemU7CiAJb2ZmX3QgY3VycG9zID0gb2JqX29mZnNldDsKIAllbnVtIG9iamVjdF90eXBlIHR5cGU7CisJb2ZmX3Qgc21hbGxfcG9pX3N0YWNrW1BPSV9TVEFDS19QUkVBTExPQ107CisJb2ZmX3QgKnBvaV9zdGFjayA9IHNtYWxsX3BvaV9zdGFjazsKKwlpbnQgcG9pX3N0YWNrX25yID0gMCwgcG9pX3N0YWNrX2FsbG9jID0gUE9JX1NUQUNLX1BSRUFMTE9DOwogCiAJdHlwZSA9IHVucGFja19vYmplY3RfaGVhZGVyKHAsICZ3X2N1cnMsICZjdXJwb3MsICZzaXplKTsKKwogCWlmIChydHlwZSkKIAkJKnJ0eXBlID0gdHlwZTsgLyogcmVwcmVzZW50YXRpb24gdHlwZSAqLwogCisJaWYgKHNpemVwKSB7CisJCWlmICh0eXBlID09IE9CSl9PRlNfREVMVEEgfHwgdHlwZSA9PSBPQkpfUkVGX0RFTFRBKSB7CisJCQlvZmZfdCB0bXBfcG9zID0gY3VycG9zOworCQkJb2ZmX3QgYmFzZV9vZmZzZXQgPSBnZXRfZGVsdGFfYmFzZShwLCAmd19jdXJzLCAmdG1wX3BvcywKKwkJCQkJCQkgICB0eXBlLCBvYmpfb2Zmc2V0KTsKKwkJCWlmICghYmFzZV9vZmZzZXQpIHsKKwkJCQl0eXBlID0gT0JKX0JBRDsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJCSpzaXplcCA9IGdldF9zaXplX2Zyb21fZGVsdGEocCwgJndfY3VycywgdG1wX3Bvcyk7CisJCQlpZiAoKnNpemVwID09IDApIHsKKwkJCQl0eXBlID0gT0JKX0JBRDsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCSpzaXplcCA9IHNpemU7CisJCX0KKwl9CisKKwl3aGlsZSAodHlwZSA9PSBPQkpfT0ZTX0RFTFRBIHx8IHR5cGUgPT0gT0JKX1JFRl9ERUxUQSkgeworCQlvZmZfdCBiYXNlX29mZnNldDsKKwkJLyogUHVzaCB0aGUgb2JqZWN0IHdlJ3JlIGdvaW5nIHRvIGxlYXZlIGJlaGluZCAqLworCQlpZiAocG9pX3N0YWNrX25yID49IHBvaV9zdGFja19hbGxvYyAmJiBwb2lfc3RhY2sgPT0gc21hbGxfcG9pX3N0YWNrKSB7CisJCQlwb2lfc3RhY2tfYWxsb2MgPSBhbGxvY19ucihwb2lfc3RhY2tfbnIpOworCQkJcG9pX3N0YWNrID0geG1hbGxvYyhzaXplb2Yob2ZmX3QpKnBvaV9zdGFja19hbGxvYyk7CisJCQltZW1jcHkocG9pX3N0YWNrLCBzbWFsbF9wb2lfc3RhY2ssIHNpemVvZihvZmZfdCkqcG9pX3N0YWNrX25yKTsKKwkJfSBlbHNlIHsKKwkJCUFMTE9DX0dST1cocG9pX3N0YWNrLCBwb2lfc3RhY2tfbnIrMSwgcG9pX3N0YWNrX2FsbG9jKTsKKwkJfQorCQlwb2lfc3RhY2tbcG9pX3N0YWNrX25yKytdID0gb2JqX29mZnNldDsKKwkJLyogSWYgcGFyc2luZyB0aGUgYmFzZSBvZmZzZXQgZmFpbHMsIGp1c3QgdW53aW5kICovCisJCWJhc2Vfb2Zmc2V0ID0gZ2V0X2RlbHRhX2Jhc2UocCwgJndfY3VycywgJmN1cnBvcywgdHlwZSwgb2JqX29mZnNldCk7CisJCWlmICghYmFzZV9vZmZzZXQpCisJCQlnb3RvIHVud2luZDsKKwkJY3VycG9zID0gb2JqX29mZnNldCA9IGJhc2Vfb2Zmc2V0OworCQl0eXBlID0gdW5wYWNrX29iamVjdF9oZWFkZXIocCwgJndfY3VycywgJmN1cnBvcywgJnNpemUpOworCQlpZiAodHlwZSA8PSBPQkpfTk9ORSkgeworCQkJLyogSWYgZ2V0dGluZyB0aGUgYmFzZSBpdHNlbGYgZmFpbHMsIHdlIGZpcnN0CisJCQkgKiByZXRyeSB0aGUgYmFzZSwgb3RoZXJ3aXNlIHVud2luZCAqLworCQkJdHlwZSA9IHJldHJ5X2JhZF9wYWNrZWRfb2Zmc2V0KHAsIGJhc2Vfb2Zmc2V0KTsKKwkJCWlmICh0eXBlID4gT0JKX05PTkUpCisJCQkJZ290byBvdXQ7CisJCQlnb3RvIHVud2luZDsKKwkJfQorCX0KKwogCXN3aXRjaCAodHlwZSkgewotCWNhc2UgT0JKX09GU19ERUxUQToKLQljYXNlIE9CSl9SRUZfREVMVEE6Ci0JCXR5cGUgPSBwYWNrZWRfZGVsdGFfaW5mbyhwLCAmd19jdXJzLCBjdXJwb3MsCi0JCQkJCSB0eXBlLCBvYmpfb2Zmc2V0LCBzaXplcCk7Ci0JCWJyZWFrOworCWNhc2UgT0JKX0JBRDoKIAljYXNlIE9CSl9DT01NSVQ6CiAJY2FzZSBPQkpfVFJFRToKIAljYXNlIE9CSl9CTE9COgogCWNhc2UgT0JKX1RBRzoKLQkJaWYgKHNpemVwKQotCQkJKnNpemVwID0gc2l6ZTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZXJyb3IoInVua25vd24gb2JqZWN0IHR5cGUgJWkgYXQgb2Zmc2V0ICUiUFJJdU1BWCIgaW4gJXMiLAogCQkgICAgICB0eXBlLCAodWludG1heF90KW9ial9vZmZzZXQsIHAtPnBhY2tfbmFtZSk7CiAJCXR5cGUgPSBPQkpfQkFEOwogCX0KKworb3V0OgorCWlmIChwb2lfc3RhY2sgIT0gc21hbGxfcG9pX3N0YWNrKQorCQlmcmVlKHBvaV9zdGFjayk7CiAJdW51c2VfcGFjaygmd19jdXJzKTsKIAlyZXR1cm4gdHlwZTsKKwordW53aW5kOgorCXdoaWxlIChwb2lfc3RhY2tfbnIpIHsKKwkJb2JqX29mZnNldCA9IHBvaV9zdGFja1stLXBvaV9zdGFja19ucl07CisJCXR5cGUgPSByZXRyeV9iYWRfcGFja2VkX29mZnNldChwLCBvYmpfb2Zmc2V0KTsKKwkJaWYgKHR5cGUgPiBPQkpfTk9ORSkKKwkJCWdvdG8gb3V0OworCX0KKwl0eXBlID0gT0JKX0JBRDsKKwlnb3RvIG91dDsKIH0KIAogc3RhdGljIHZvaWQgKnVucGFja19jb21wcmVzc2VkX2VudHJ5KHN0cnVjdCBwYWNrZWRfZ2l0ICpwLApAQCAtMTcxNywzMiArMTg0NCw1MSBAQAogCXJldHVybiBoYXNoICUgTUFYX0RFTFRBX0NBQ0hFOwogfQogCi1zdGF0aWMgaW50IGluX2RlbHRhX2Jhc2VfY2FjaGUoc3RydWN0IHBhY2tlZF9naXQgKnAsIG9mZl90IGJhc2Vfb2Zmc2V0KQorc3RhdGljIHN0cnVjdCBkZWx0YV9iYXNlX2NhY2hlX2VudHJ5ICoKK2dldF9kZWx0YV9iYXNlX2NhY2hlX2VudHJ5KHN0cnVjdCBwYWNrZWRfZ2l0ICpwLCBvZmZfdCBiYXNlX29mZnNldCkKIHsKIAl1bnNpZ25lZCBsb25nIGhhc2ggPSBwYWNrX2VudHJ5X2hhc2gocCwgYmFzZV9vZmZzZXQpOwotCXN0cnVjdCBkZWx0YV9iYXNlX2NhY2hlX2VudHJ5ICplbnQgPSBkZWx0YV9iYXNlX2NhY2hlICsgaGFzaDsKKwlyZXR1cm4gZGVsdGFfYmFzZV9jYWNoZSArIGhhc2g7Cit9CisKK3N0YXRpYyBpbnQgZXFfZGVsdGFfYmFzZV9jYWNoZV9lbnRyeShzdHJ1Y3QgZGVsdGFfYmFzZV9jYWNoZV9lbnRyeSAqZW50LAorCQkJCSAgICAgc3RydWN0IHBhY2tlZF9naXQgKnAsIG9mZl90IGJhc2Vfb2Zmc2V0KQorewogCXJldHVybiAoZW50LT5kYXRhICYmIGVudC0+cCA9PSBwICYmIGVudC0+YmFzZV9vZmZzZXQgPT0gYmFzZV9vZmZzZXQpOwogfQogCitzdGF0aWMgaW50IGluX2RlbHRhX2Jhc2VfY2FjaGUoc3RydWN0IHBhY2tlZF9naXQgKnAsIG9mZl90IGJhc2Vfb2Zmc2V0KQoreworCXN0cnVjdCBkZWx0YV9iYXNlX2NhY2hlX2VudHJ5ICplbnQ7CisJZW50ID0gZ2V0X2RlbHRhX2Jhc2VfY2FjaGVfZW50cnkocCwgYmFzZV9vZmZzZXQpOworCXJldHVybiBlcV9kZWx0YV9iYXNlX2NhY2hlX2VudHJ5KGVudCwgcCwgYmFzZV9vZmZzZXQpOworfQorCitzdGF0aWMgdm9pZCBjbGVhcl9kZWx0YV9iYXNlX2NhY2hlX2VudHJ5KHN0cnVjdCBkZWx0YV9iYXNlX2NhY2hlX2VudHJ5ICplbnQpCit7CisJZW50LT5kYXRhID0gTlVMTDsKKwllbnQtPmxydS5uZXh0LT5wcmV2ID0gZW50LT5scnUucHJldjsKKwllbnQtPmxydS5wcmV2LT5uZXh0ID0gZW50LT5scnUubmV4dDsKKwlkZWx0YV9iYXNlX2NhY2hlZCAtPSBlbnQtPnNpemU7Cit9CisKIHN0YXRpYyB2b2lkICpjYWNoZV9vcl91bnBhY2tfZW50cnkoc3RydWN0IHBhY2tlZF9naXQgKnAsIG9mZl90IGJhc2Vfb2Zmc2V0LAogCXVuc2lnbmVkIGxvbmcgKmJhc2Vfc2l6ZSwgZW51bSBvYmplY3RfdHlwZSAqdHlwZSwgaW50IGtlZXBfY2FjaGUpCiB7CisJc3RydWN0IGRlbHRhX2Jhc2VfY2FjaGVfZW50cnkgKmVudDsKIAl2b2lkICpyZXQ7Ci0JdW5zaWduZWQgbG9uZyBoYXNoID0gcGFja19lbnRyeV9oYXNoKHAsIGJhc2Vfb2Zmc2V0KTsKLQlzdHJ1Y3QgZGVsdGFfYmFzZV9jYWNoZV9lbnRyeSAqZW50ID0gZGVsdGFfYmFzZV9jYWNoZSArIGhhc2g7CiAKLQlyZXQgPSBlbnQtPmRhdGE7Ci0JaWYgKCFyZXQgfHwgZW50LT5wICE9IHAgfHwgZW50LT5iYXNlX29mZnNldCAhPSBiYXNlX29mZnNldCkKKwllbnQgPSBnZXRfZGVsdGFfYmFzZV9jYWNoZV9lbnRyeShwLCBiYXNlX29mZnNldCk7CisKKwlpZiAoIWVxX2RlbHRhX2Jhc2VfY2FjaGVfZW50cnkoZW50LCBwLCBiYXNlX29mZnNldCkpCiAJCXJldHVybiB1bnBhY2tfZW50cnkocCwgYmFzZV9vZmZzZXQsIHR5cGUsIGJhc2Vfc2l6ZSk7CiAKLQlpZiAoIWtlZXBfY2FjaGUpIHsKLQkJZW50LT5kYXRhID0gTlVMTDsKLQkJZW50LT5scnUubmV4dC0+cHJldiA9IGVudC0+bHJ1LnByZXY7Ci0JCWVudC0+bHJ1LnByZXYtPm5leHQgPSBlbnQtPmxydS5uZXh0OwotCQlkZWx0YV9iYXNlX2NhY2hlZCAtPSBlbnQtPnNpemU7Ci0JfSBlbHNlIHsKKwlyZXQgPSBlbnQtPmRhdGE7CisKKwlpZiAoIWtlZXBfY2FjaGUpCisJCWNsZWFyX2RlbHRhX2Jhc2VfY2FjaGVfZW50cnkoZW50KTsKKwllbHNlCiAJCXJldCA9IHhtZW1kdXB6KGVudC0+ZGF0YSwgZW50LT5zaXplKTsKLQl9CiAJKnR5cGUgPSBlbnQtPnR5cGU7CiAJKmJhc2Vfc2l6ZSA9IGVudC0+c2l6ZTsKIAlyZXR1cm4gcmV0OwpAQCAtMTgwNiw2OCArMTk1Miw2IEBACiBzdGF0aWMgdm9pZCAqcmVhZF9vYmplY3QoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgZW51bSBvYmplY3RfdHlwZSAqdHlwZSwKIAkJCSB1bnNpZ25lZCBsb25nICpzaXplKTsKIAotc3RhdGljIHZvaWQgKnVucGFja19kZWx0YV9lbnRyeShzdHJ1Y3QgcGFja2VkX2dpdCAqcCwKLQkJCQlzdHJ1Y3QgcGFja193aW5kb3cgKip3X2N1cnMsCi0JCQkJb2ZmX3QgY3VycG9zLAotCQkJCXVuc2lnbmVkIGxvbmcgZGVsdGFfc2l6ZSwKLQkJCQlvZmZfdCBvYmpfb2Zmc2V0LAotCQkJCWVudW0gb2JqZWN0X3R5cGUgKnR5cGUsCi0JCQkJdW5zaWduZWQgbG9uZyAqc2l6ZXApCi17Ci0Jdm9pZCAqZGVsdGFfZGF0YSwgKnJlc3VsdCwgKmJhc2U7Ci0JdW5zaWduZWQgbG9uZyBiYXNlX3NpemU7Ci0Jb2ZmX3QgYmFzZV9vZmZzZXQ7Ci0KLQliYXNlX29mZnNldCA9IGdldF9kZWx0YV9iYXNlKHAsIHdfY3VycywgJmN1cnBvcywgKnR5cGUsIG9ial9vZmZzZXQpOwotCWlmICghYmFzZV9vZmZzZXQpIHsKLQkJZXJyb3IoImZhaWxlZCB0byB2YWxpZGF0ZSBkZWx0YSBiYXNlIHJlZmVyZW5jZSAiCi0JCSAgICAgICJhdCBvZmZzZXQgJSJQUkl1TUFYIiBmcm9tICVzIiwKLQkJICAgICAgKHVpbnRtYXhfdCljdXJwb3MsIHAtPnBhY2tfbmFtZSk7Ci0JCXJldHVybiBOVUxMOwotCX0KLQl1bnVzZV9wYWNrKHdfY3Vycyk7Ci0JYmFzZSA9IGNhY2hlX29yX3VucGFja19lbnRyeShwLCBiYXNlX29mZnNldCwgJmJhc2Vfc2l6ZSwgdHlwZSwgMCk7Ci0JaWYgKCFiYXNlKSB7Ci0JCS8qCi0JCSAqIFdlJ3JlIHByb2JhYmx5IGluIGRlZXAgc2hpdCwgYnV0IGxldCdzIHRyeSB0byBmZXRjaAotCQkgKiB0aGUgcmVxdWlyZWQgYmFzZSBhbnl3YXkgZnJvbSBhbm90aGVyIHBhY2sgb3IgbG9vc2UuCi0JCSAqIFRoaXMgaXMgY29zdGx5IGJ1dCBzaG91bGQgaGFwcGVuIG9ubHkgaW4gdGhlIHByZXNlbmNlCi0JCSAqIG9mIGEgY29ycnVwdGVkIHBhY2ssIGFuZCBpcyBiZXR0ZXIgdGhhbiBmYWlsaW5nIG91dHJpZ2h0LgotCQkgKi8KLQkJc3RydWN0IHJldmluZGV4X2VudHJ5ICpyZXZpZHg7Ci0JCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmJhc2Vfc2hhMTsKLQkJcmV2aWR4ID0gZmluZF9wYWNrX3JldmluZGV4KHAsIGJhc2Vfb2Zmc2V0KTsKLQkJaWYgKCFyZXZpZHgpCi0JCQlyZXR1cm4gTlVMTDsKLQkJYmFzZV9zaGExID0gbnRoX3BhY2tlZF9vYmplY3Rfc2hhMShwLCByZXZpZHgtPm5yKTsKLQkJZXJyb3IoImZhaWxlZCB0byByZWFkIGRlbHRhIGJhc2Ugb2JqZWN0ICVzIgotCQkgICAgICAiIGF0IG9mZnNldCAlIlBSSXVNQVgiIGZyb20gJXMiLAotCQkgICAgICBzaGExX3RvX2hleChiYXNlX3NoYTEpLCAodWludG1heF90KWJhc2Vfb2Zmc2V0LAotCQkgICAgICBwLT5wYWNrX25hbWUpOwotCQltYXJrX2JhZF9wYWNrZWRfb2JqZWN0KHAsIGJhc2Vfc2hhMSk7Ci0JCWJhc2UgPSByZWFkX29iamVjdChiYXNlX3NoYTEsIHR5cGUsICZiYXNlX3NpemUpOwotCQlpZiAoIWJhc2UpCi0JCQlyZXR1cm4gTlVMTDsKLQl9Ci0KLQlkZWx0YV9kYXRhID0gdW5wYWNrX2NvbXByZXNzZWRfZW50cnkocCwgd19jdXJzLCBjdXJwb3MsIGRlbHRhX3NpemUpOwotCWlmICghZGVsdGFfZGF0YSkgewotCQllcnJvcigiZmFpbGVkIHRvIHVucGFjayBjb21wcmVzc2VkIGRlbHRhICIKLQkJICAgICAgImF0IG9mZnNldCAlIlBSSXVNQVgiIGZyb20gJXMiLAotCQkgICAgICAodWludG1heF90KWN1cnBvcywgcC0+cGFja19uYW1lKTsKLQkJZnJlZShiYXNlKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCXJlc3VsdCA9IHBhdGNoX2RlbHRhKGJhc2UsIGJhc2Vfc2l6ZSwKLQkJCSAgICAgZGVsdGFfZGF0YSwgZGVsdGFfc2l6ZSwKLQkJCSAgICAgc2l6ZXApOwotCWlmICghcmVzdWx0KQotCQlkaWUoImZhaWxlZCB0byBhcHBseSBkZWx0YSIpOwotCWZyZWUoZGVsdGFfZGF0YSk7Ci0JYWRkX2RlbHRhX2Jhc2VfY2FjaGUocCwgYmFzZV9vZmZzZXQsIGJhc2UsIGJhc2Vfc2l6ZSwgKnR5cGUpOwotCXJldHVybiByZXN1bHQ7Ci19Ci0KIHN0YXRpYyB2b2lkIHdyaXRlX3BhY2tfYWNjZXNzX2xvZyhzdHJ1Y3QgcGFja2VkX2dpdCAqcCwgb2ZmX3Qgb2JqX29mZnNldCkKIHsKIAlzdGF0aWMgRklMRSAqbG9nX2ZpbGU7CkBAIC0xODg4LDQ4ICsxOTcyLDE3OCBAQAogCiBpbnQgZG9fY2hlY2tfcGFja2VkX29iamVjdF9jcmM7CiAKKyNkZWZpbmUgVU5QQUNLX0VOVFJZX1NUQUNLX1BSRUFMTE9DIDY0CitzdHJ1Y3QgdW5wYWNrX2VudHJ5X3N0YWNrX2VudCB7CisJb2ZmX3Qgb2JqX29mZnNldDsKKwlvZmZfdCBjdXJwb3M7CisJdW5zaWduZWQgbG9uZyBzaXplOworfTsKKwogdm9pZCAqdW5wYWNrX2VudHJ5KHN0cnVjdCBwYWNrZWRfZ2l0ICpwLCBvZmZfdCBvYmpfb2Zmc2V0LAotCQkgICBlbnVtIG9iamVjdF90eXBlICp0eXBlLCB1bnNpZ25lZCBsb25nICpzaXplcCkKKwkJICAgZW51bSBvYmplY3RfdHlwZSAqZmluYWxfdHlwZSwgdW5zaWduZWQgbG9uZyAqZmluYWxfc2l6ZSkKIHsKIAlzdHJ1Y3QgcGFja193aW5kb3cgKndfY3VycyA9IE5VTEw7CiAJb2ZmX3QgY3VycG9zID0gb2JqX29mZnNldDsKLQl2b2lkICpkYXRhOworCXZvaWQgKmRhdGEgPSBOVUxMOworCXVuc2lnbmVkIGxvbmcgc2l6ZTsKKwllbnVtIG9iamVjdF90eXBlIHR5cGU7CisJc3RydWN0IHVucGFja19lbnRyeV9zdGFja19lbnQgc21hbGxfZGVsdGFfc3RhY2tbVU5QQUNLX0VOVFJZX1NUQUNLX1BSRUFMTE9DXTsKKwlzdHJ1Y3QgdW5wYWNrX2VudHJ5X3N0YWNrX2VudCAqZGVsdGFfc3RhY2sgPSBzbWFsbF9kZWx0YV9zdGFjazsKKwlpbnQgZGVsdGFfc3RhY2tfbnIgPSAwLCBkZWx0YV9zdGFja19hbGxvYyA9IFVOUEFDS19FTlRSWV9TVEFDS19QUkVBTExPQzsKKwlpbnQgYmFzZV9mcm9tX2NhY2hlID0gMDsKIAogCWlmIChsb2dfcGFja19hY2Nlc3MpCiAJCXdyaXRlX3BhY2tfYWNjZXNzX2xvZyhwLCBvYmpfb2Zmc2V0KTsKIAotCWlmIChkb19jaGVja19wYWNrZWRfb2JqZWN0X2NyYyAmJiBwLT5pbmRleF92ZXJzaW9uID4gMSkgewotCQlzdHJ1Y3QgcmV2aW5kZXhfZW50cnkgKnJldmlkeCA9IGZpbmRfcGFja19yZXZpbmRleChwLCBvYmpfb2Zmc2V0KTsKLQkJdW5zaWduZWQgbG9uZyBsZW4gPSByZXZpZHhbMV0ub2Zmc2V0IC0gb2JqX29mZnNldDsKLQkJaWYgKGNoZWNrX3BhY2tfY3JjKHAsICZ3X2N1cnMsIG9ial9vZmZzZXQsIGxlbiwgcmV2aWR4LT5ucikpIHsKLQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEgPQotCQkJCW50aF9wYWNrZWRfb2JqZWN0X3NoYTEocCwgcmV2aWR4LT5ucik7Ci0JCQllcnJvcigiYmFkIHBhY2tlZCBvYmplY3QgQ1JDIGZvciAlcyIsCi0JCQkgICAgICBzaGExX3RvX2hleChzaGExKSk7Ci0JCQltYXJrX2JhZF9wYWNrZWRfb2JqZWN0KHAsIHNoYTEpOwotCQkJdW51c2VfcGFjaygmd19jdXJzKTsKLQkJCXJldHVybiBOVUxMOworCS8qIFBIQVNFIDE6IGRyaWxsIGRvd24gdG8gdGhlIGlubmVybW9zdCBiYXNlIG9iamVjdCAqLworCWZvciAoOzspIHsKKwkJb2ZmX3QgYmFzZV9vZmZzZXQ7CisJCWludCBpOworCQlzdHJ1Y3QgZGVsdGFfYmFzZV9jYWNoZV9lbnRyeSAqZW50OworCisJCWlmIChkb19jaGVja19wYWNrZWRfb2JqZWN0X2NyYyAmJiBwLT5pbmRleF92ZXJzaW9uID4gMSkgeworCQkJc3RydWN0IHJldmluZGV4X2VudHJ5ICpyZXZpZHggPSBmaW5kX3BhY2tfcmV2aW5kZXgocCwgb2JqX29mZnNldCk7CisJCQl1bnNpZ25lZCBsb25nIGxlbiA9IHJldmlkeFsxXS5vZmZzZXQgLSBvYmpfb2Zmc2V0OworCQkJaWYgKGNoZWNrX3BhY2tfY3JjKHAsICZ3X2N1cnMsIG9ial9vZmZzZXQsIGxlbiwgcmV2aWR4LT5ucikpIHsKKwkJCQljb25zdCB1bnNpZ25lZCBjaGFyICpzaGExID0KKwkJCQkJbnRoX3BhY2tlZF9vYmplY3Rfc2hhMShwLCByZXZpZHgtPm5yKTsKKwkJCQllcnJvcigiYmFkIHBhY2tlZCBvYmplY3QgQ1JDIGZvciAlcyIsCisJCQkJICAgICAgc2hhMV90b19oZXgoc2hhMSkpOworCQkJCW1hcmtfYmFkX3BhY2tlZF9vYmplY3QocCwgc2hhMSk7CisJCQkJdW51c2VfcGFjaygmd19jdXJzKTsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KIAkJfQorCisJCWVudCA9IGdldF9kZWx0YV9iYXNlX2NhY2hlX2VudHJ5KHAsIGN1cnBvcyk7CisJCWlmIChlcV9kZWx0YV9iYXNlX2NhY2hlX2VudHJ5KGVudCwgcCwgY3VycG9zKSkgeworCQkJdHlwZSA9IGVudC0+dHlwZTsKKwkJCWRhdGEgPSBlbnQtPmRhdGE7CisJCQlzaXplID0gZW50LT5zaXplOworCQkJY2xlYXJfZGVsdGFfYmFzZV9jYWNoZV9lbnRyeShlbnQpOworCQkJYmFzZV9mcm9tX2NhY2hlID0gMTsKKwkJCWJyZWFrOworCQl9CisKKwkJdHlwZSA9IHVucGFja19vYmplY3RfaGVhZGVyKHAsICZ3X2N1cnMsICZjdXJwb3MsICZzaXplKTsKKwkJaWYgKHR5cGUgIT0gT0JKX09GU19ERUxUQSAmJiB0eXBlICE9IE9CSl9SRUZfREVMVEEpCisJCQlicmVhazsKKworCQliYXNlX29mZnNldCA9IGdldF9kZWx0YV9iYXNlKHAsICZ3X2N1cnMsICZjdXJwb3MsIHR5cGUsIG9ial9vZmZzZXQpOworCQlpZiAoIWJhc2Vfb2Zmc2V0KSB7CisJCQllcnJvcigiZmFpbGVkIHRvIHZhbGlkYXRlIGRlbHRhIGJhc2UgcmVmZXJlbmNlICIKKwkJCSAgICAgICJhdCBvZmZzZXQgJSJQUkl1TUFYIiBmcm9tICVzIiwKKwkJCSAgICAgICh1aW50bWF4X3QpY3VycG9zLCBwLT5wYWNrX25hbWUpOworCQkJLyogYmFpbCB0byBwaGFzZSAyLCBpbiBob3BlcyBvZiByZWNvdmVyeSAqLworCQkJZGF0YSA9IE5VTEw7CisJCQlicmVhazsKKwkJfQorCisJCS8qIHB1c2ggb2JqZWN0LCBwcm9jZWVkIHRvIGJhc2UgKi8KKwkJaWYgKGRlbHRhX3N0YWNrX25yID49IGRlbHRhX3N0YWNrX2FsbG9jCisJCSAgICAmJiBkZWx0YV9zdGFjayA9PSBzbWFsbF9kZWx0YV9zdGFjaykgeworCQkJZGVsdGFfc3RhY2tfYWxsb2MgPSBhbGxvY19ucihkZWx0YV9zdGFja19ucik7CisJCQlkZWx0YV9zdGFjayA9IHhtYWxsb2Moc2l6ZW9mKCpkZWx0YV9zdGFjaykqZGVsdGFfc3RhY2tfYWxsb2MpOworCQkJbWVtY3B5KGRlbHRhX3N0YWNrLCBzbWFsbF9kZWx0YV9zdGFjaywKKwkJCSAgICAgICBzaXplb2YoKmRlbHRhX3N0YWNrKSpkZWx0YV9zdGFja19ucik7CisJCX0gZWxzZSB7CisJCQlBTExPQ19HUk9XKGRlbHRhX3N0YWNrLCBkZWx0YV9zdGFja19ucisxLCBkZWx0YV9zdGFja19hbGxvYyk7CisJCX0KKwkJaSA9IGRlbHRhX3N0YWNrX25yKys7CisJCWRlbHRhX3N0YWNrW2ldLm9ial9vZmZzZXQgPSBvYmpfb2Zmc2V0OworCQlkZWx0YV9zdGFja1tpXS5jdXJwb3MgPSBjdXJwb3M7CisJCWRlbHRhX3N0YWNrW2ldLnNpemUgPSBzaXplOworCisJCWN1cnBvcyA9IG9ial9vZmZzZXQgPSBiYXNlX29mZnNldDsKIAl9CiAKLQkqdHlwZSA9IHVucGFja19vYmplY3RfaGVhZGVyKHAsICZ3X2N1cnMsICZjdXJwb3MsIHNpemVwKTsKLQlzd2l0Y2ggKCp0eXBlKSB7CisJLyogUEhBU0UgMjogaGFuZGxlIHRoZSBiYXNlICovCisJc3dpdGNoICh0eXBlKSB7CiAJY2FzZSBPQkpfT0ZTX0RFTFRBOgogCWNhc2UgT0JKX1JFRl9ERUxUQToKLQkJZGF0YSA9IHVucGFja19kZWx0YV9lbnRyeShwLCAmd19jdXJzLCBjdXJwb3MsICpzaXplcCwKLQkJCQkJICBvYmpfb2Zmc2V0LCB0eXBlLCBzaXplcCk7CisJCWlmIChkYXRhKQorCQkJZGllKCJCVUcgaW4gdW5wYWNrX2VudHJ5OiBsZWZ0IGxvb3AgYXQgYSB2YWxpZCBkZWx0YSIpOwogCQlicmVhazsKIAljYXNlIE9CSl9DT01NSVQ6CiAJY2FzZSBPQkpfVFJFRToKIAljYXNlIE9CSl9CTE9COgogCWNhc2UgT0JKX1RBRzoKLQkJZGF0YSA9IHVucGFja19jb21wcmVzc2VkX2VudHJ5KHAsICZ3X2N1cnMsIGN1cnBvcywgKnNpemVwKTsKKwkJaWYgKCFiYXNlX2Zyb21fY2FjaGUpCisJCQlkYXRhID0gdW5wYWNrX2NvbXByZXNzZWRfZW50cnkocCwgJndfY3VycywgY3VycG9zLCBzaXplKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZGF0YSA9IE5VTEw7CiAJCWVycm9yKCJ1bmtub3duIG9iamVjdCB0eXBlICVpIGF0IG9mZnNldCAlIlBSSXVNQVgiIGluICVzIiwKLQkJICAgICAgKnR5cGUsICh1aW50bWF4X3Qpb2JqX29mZnNldCwgcC0+cGFja19uYW1lKTsKKwkJICAgICAgdHlwZSwgKHVpbnRtYXhfdClvYmpfb2Zmc2V0LCBwLT5wYWNrX25hbWUpOwogCX0KKworCS8qIFBIQVNFIDM6IGFwcGx5IGRlbHRhcyBpbiBvcmRlciAqLworCisJLyogaW52YXJpYW50czoKKwkgKiAgICdkYXRhJyBob2xkcyB0aGUgYmFzZSBkYXRhLCBvciBOVUxMIGlmIHRoZXJlIHdhcyBjb3JydXB0aW9uCisJICovCisJd2hpbGUgKGRlbHRhX3N0YWNrX25yKSB7CisJCXZvaWQgKmRlbHRhX2RhdGE7CisJCXZvaWQgKmJhc2UgPSBkYXRhOworCQl1bnNpZ25lZCBsb25nIGRlbHRhX3NpemUsIGJhc2Vfc2l6ZSA9IHNpemU7CisJCWludCBpOworCisJCWRhdGEgPSBOVUxMOworCisJCWlmIChiYXNlKQorCQkJYWRkX2RlbHRhX2Jhc2VfY2FjaGUocCwgb2JqX29mZnNldCwgYmFzZSwgYmFzZV9zaXplLCB0eXBlKTsKKworCQlpZiAoIWJhc2UpIHsKKwkJCS8qCisJCQkgKiBXZSdyZSBwcm9iYWJseSBpbiBkZWVwIHNoaXQsIGJ1dCBsZXQncyB0cnkgdG8gZmV0Y2gKKwkJCSAqIHRoZSByZXF1aXJlZCBiYXNlIGFueXdheSBmcm9tIGFub3RoZXIgcGFjayBvciBsb29zZS4KKwkJCSAqIFRoaXMgaXMgY29zdGx5IGJ1dCBzaG91bGQgaGFwcGVuIG9ubHkgaW4gdGhlIHByZXNlbmNlCisJCQkgKiBvZiBhIGNvcnJ1cHRlZCBwYWNrLCBhbmQgaXMgYmV0dGVyIHRoYW4gZmFpbGluZyBvdXRyaWdodC4KKwkJCSAqLworCQkJc3RydWN0IHJldmluZGV4X2VudHJ5ICpyZXZpZHg7CisJCQljb25zdCB1bnNpZ25lZCBjaGFyICpiYXNlX3NoYTE7CisJCQlyZXZpZHggPSBmaW5kX3BhY2tfcmV2aW5kZXgocCwgb2JqX29mZnNldCk7CisJCQlpZiAocmV2aWR4KSB7CisJCQkJYmFzZV9zaGExID0gbnRoX3BhY2tlZF9vYmplY3Rfc2hhMShwLCByZXZpZHgtPm5yKTsKKwkJCQllcnJvcigiZmFpbGVkIHRvIHJlYWQgZGVsdGEgYmFzZSBvYmplY3QgJXMiCisJCQkJICAgICAgIiBhdCBvZmZzZXQgJSJQUkl1TUFYIiBmcm9tICVzIiwKKwkJCQkgICAgICBzaGExX3RvX2hleChiYXNlX3NoYTEpLCAodWludG1heF90KW9ial9vZmZzZXQsCisJCQkJICAgICAgcC0+cGFja19uYW1lKTsKKwkJCQltYXJrX2JhZF9wYWNrZWRfb2JqZWN0KHAsIGJhc2Vfc2hhMSk7CisJCQkJYmFzZSA9IHJlYWRfb2JqZWN0KGJhc2Vfc2hhMSwgJnR5cGUsICZiYXNlX3NpemUpOworCQkJfQorCQl9CisKKwkJaSA9IC0tZGVsdGFfc3RhY2tfbnI7CisJCW9ial9vZmZzZXQgPSBkZWx0YV9zdGFja1tpXS5vYmpfb2Zmc2V0OworCQljdXJwb3MgPSBkZWx0YV9zdGFja1tpXS5jdXJwb3M7CisJCWRlbHRhX3NpemUgPSBkZWx0YV9zdGFja1tpXS5zaXplOworCisJCWlmICghYmFzZSkKKwkJCWNvbnRpbnVlOworCisJCWRlbHRhX2RhdGEgPSB1bnBhY2tfY29tcHJlc3NlZF9lbnRyeShwLCAmd19jdXJzLCBjdXJwb3MsIGRlbHRhX3NpemUpOworCisJCWlmICghZGVsdGFfZGF0YSkgeworCQkJZXJyb3IoImZhaWxlZCB0byB1bnBhY2sgY29tcHJlc3NlZCBkZWx0YSAiCisJCQkgICAgICAiYXQgb2Zmc2V0ICUiUFJJdU1BWCIgZnJvbSAlcyIsCisJCQkgICAgICAodWludG1heF90KWN1cnBvcywgcC0+cGFja19uYW1lKTsKKwkJCWRhdGEgPSBOVUxMOworCQkJY29udGludWU7CisJCX0KKworCQlkYXRhID0gcGF0Y2hfZGVsdGEoYmFzZSwgYmFzZV9zaXplLAorCQkJCSAgIGRlbHRhX2RhdGEsIGRlbHRhX3NpemUsCisJCQkJICAgJnNpemUpOworCQlpZiAoIWRhdGEpCisJCQlkaWUoImZhaWxlZCB0byBhcHBseSBkZWx0YSIpOworCisJCWZyZWUoZGVsdGFfZGF0YSk7CisJfQorCisJKmZpbmFsX3R5cGUgPSB0eXBlOworCSpmaW5hbF9zaXplID0gc2l6ZTsKKwogCXVudXNlX3BhY2soJndfY3Vycyk7CiAJcmV0dXJuIGRhdGE7CiB9CmRpZmYgLS1naXQgYS9zaGExX25hbWUuYyBiL3NoYTFfbmFtZS5jCmluZGV4IGM2MzMxMTMuLmIzYTkwZTYgMTAwNjQ0Ci0tLSBhL3NoYTFfbmFtZS5jCisrKyBiL3NoYTFfbmFtZS5jCkBAIC05LDE0ICs5LDgyIEBACiAKIHN0YXRpYyBpbnQgZ2V0X3NoYTFfb25lbGluZShjb25zdCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKiwgc3RydWN0IGNvbW1pdF9saXN0ICopOwogCi1zdGF0aWMgaW50IGZpbmRfc2hvcnRfb2JqZWN0X2ZpbGVuYW1lKGludCBsZW4sIGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGNoYXIgKnNoYTEpCit0eXBlZGVmIGludCAoKmRpc2FtYmlndWF0ZV9oaW50X2ZuKShjb25zdCB1bnNpZ25lZCBjaGFyICosIHZvaWQgKik7CisKK3N0cnVjdCBkaXNhbWJpZ3VhdGVfc3RhdGUgeworCWRpc2FtYmlndWF0ZV9oaW50X2ZuIGZuOworCXZvaWQgKmNiX2RhdGE7CisJdW5zaWduZWQgY2hhciBjYW5kaWRhdGVbMjBdOworCXVuc2lnbmVkIGNhbmRpZGF0ZV9leGlzdHM6MTsKKwl1bnNpZ25lZCBjYW5kaWRhdGVfY2hlY2tlZDoxOworCXVuc2lnbmVkIGNhbmRpZGF0ZV9vazoxOworCXVuc2lnbmVkIGRpc2FtYmlndWF0ZV9mbl91c2VkOjE7CisJdW5zaWduZWQgYW1iaWd1b3VzOjE7CisJdW5zaWduZWQgYWx3YXlzX2NhbGxfZm46MTsKK307CisKK3N0YXRpYyB2b2lkIHVwZGF0ZV9jYW5kaWRhdGVzKHN0cnVjdCBkaXNhbWJpZ3VhdGVfc3RhdGUgKmRzLCBjb25zdCB1bnNpZ25lZCBjaGFyICpjdXJyZW50KQoreworCWlmIChkcy0+YWx3YXlzX2NhbGxfZm4pIHsKKwkJZHMtPmFtYmlndW91cyA9IGRzLT5mbihjdXJyZW50LCBkcy0+Y2JfZGF0YSkgPyAxIDogMDsKKwkJcmV0dXJuOworCX0KKwlpZiAoIWRzLT5jYW5kaWRhdGVfZXhpc3RzKSB7CisJCS8qIHRoaXMgaXMgdGhlIGZpcnN0IGNhbmRpZGF0ZSAqLworCQloYXNoY3B5KGRzLT5jYW5kaWRhdGUsIGN1cnJlbnQpOworCQlkcy0+Y2FuZGlkYXRlX2V4aXN0cyA9IDE7CisJCXJldHVybjsKKwl9IGVsc2UgaWYgKCFoYXNoY21wKGRzLT5jYW5kaWRhdGUsIGN1cnJlbnQpKSB7CisJCS8qIHRoZSBzYW1lIGFzIHdoYXQgd2UgYWxyZWFkeSBoYXZlIHNlZW4gKi8KKwkJcmV0dXJuOworCX0KKworCWlmICghZHMtPmZuKSB7CisJCS8qIGNhbm5vdCBkaXNhbWJpZ3VhdGUgYmV0d2VlbiBkcy0+Y2FuZGlkYXRlIGFuZCBjdXJyZW50ICovCisJCWRzLT5hbWJpZ3VvdXMgPSAxOworCQlyZXR1cm47CisJfQorCisJaWYgKCFkcy0+Y2FuZGlkYXRlX2NoZWNrZWQpIHsKKwkJZHMtPmNhbmRpZGF0ZV9vayA9IGRzLT5mbihkcy0+Y2FuZGlkYXRlLCBkcy0+Y2JfZGF0YSk7CisJCWRzLT5kaXNhbWJpZ3VhdGVfZm5fdXNlZCA9IDE7CisJCWRzLT5jYW5kaWRhdGVfY2hlY2tlZCA9IDE7CisJfQorCisJaWYgKCFkcy0+Y2FuZGlkYXRlX29rKSB7CisJCS8qIGRpc2NhcmQgdGhlIGNhbmRpZGF0ZTsgd2Uga25vdyBpdCBkb2VzIG5vdCBzYXRpc2lmeSBmbiAqLworCQloYXNoY3B5KGRzLT5jYW5kaWRhdGUsIGN1cnJlbnQpOworCQlkcy0+Y2FuZGlkYXRlX2NoZWNrZWQgPSAwOworCQlyZXR1cm47CisJfQorCisJLyogaWYgd2UgcmVhY2ggdGhpcyBwb2ludCwgd2Uga25vdyBkcy0+Y2FuZGlkYXRlIHNhdGlzZmllcyBmbiAqLworCWlmIChkcy0+Zm4oY3VycmVudCwgZHMtPmNiX2RhdGEpKSB7CisJCS8qCisJCSAqIGlmIGJvdGggY3VycmVudCBhbmQgY2FuZGlkYXRlIHNhdGlzZnkgZm4sIHdlIGNhbm5vdAorCQkgKiBkaXNhbWJpZ3VhdGUuCisJCSAqLworCQlkcy0+Y2FuZGlkYXRlX29rID0gMDsKKwkJZHMtPmFtYmlndW91cyA9IDE7CisJfQorCisJLyogb3RoZXJ3aXNlLCBjdXJyZW50IGNhbiBiZSBkaXNjYXJkZWQgYW5kIGNhbmRpZGF0ZSBpcyBzdGlsbCBnb29kICovCit9CisKK3N0YXRpYyB2b2lkIGZpbmRfc2hvcnRfb2JqZWN0X2ZpbGVuYW1lKGludCBsZW4sIGNvbnN0IGNoYXIgKmhleF9wZngsIHN0cnVjdCBkaXNhbWJpZ3VhdGVfc3RhdGUgKmRzKQogewogCXN0cnVjdCBhbHRlcm5hdGVfb2JqZWN0X2RhdGFiYXNlICphbHQ7CiAJY2hhciBoZXhbNDBdOwotCWludCBmb3VuZCA9IDA7CiAJc3RhdGljIHN0cnVjdCBhbHRlcm5hdGVfb2JqZWN0X2RhdGFiYXNlICpmYWtlZW50OwogCiAJaWYgKCFmYWtlZW50KSB7CisJCS8qCisJCSAqIENyZWF0ZSBhICJmYWtlIiBhbHRlcm5hdGUgb2JqZWN0IGRhdGFiYXNlIHRoYXQKKwkJICogcG9pbnRzIHRvIG91ciBvd24gb2JqZWN0IGRhdGFiYXNlLCB0byBtYWtlIGl0CisJCSAqIGVhc2llciB0byBnZXQgYSB0ZW1wb3Jhcnkgd29ya2luZyBzcGFjZSBpbgorCQkgKiBhbHQtPm5hbWUvYWx0LT5iYXNlIHdoaWxlIGl0ZXJhdGluZyBvdmVyIHRoZQorCQkgKiBvYmplY3QgZGF0YWJhc2VzIGluY2x1ZGluZyBvdXIgb3duLgorCQkgKi8KIAkJY29uc3QgY2hhciAqb2JqZGlyID0gZ2V0X29iamVjdF9kaXJlY3RvcnkoKTsKIAkJaW50IG9iamRpcl9sZW4gPSBzdHJsZW4ob2JqZGlyKTsKIAkJaW50IGVudGxlbiA9IG9iamRpcl9sZW4gKyA0MzsKQEAgLTI3LDMzICs5NSwyOCBAQAogCX0KIAlmYWtlZW50LT5uZXh0ID0gYWx0X29kYl9saXN0OwogCi0Jc3ByaW50ZihoZXgsICIlLjJzIiwgbmFtZSk7Ci0JZm9yIChhbHQgPSBmYWtlZW50OyBhbHQgJiYgZm91bmQgPCAyOyBhbHQgPSBhbHQtPm5leHQpIHsKKwlzcHJpbnRmKGhleCwgIiUuMnMiLCBoZXhfcGZ4KTsKKwlmb3IgKGFsdCA9IGZha2VlbnQ7IGFsdCAmJiAhZHMtPmFtYmlndW91czsgYWx0ID0gYWx0LT5uZXh0KSB7CiAJCXN0cnVjdCBkaXJlbnQgKmRlOwogCQlESVIgKmRpcjsKLQkJc3ByaW50ZihhbHQtPm5hbWUsICIlLjJzLyIsIG5hbWUpOworCQlzcHJpbnRmKGFsdC0+bmFtZSwgIiUuMnMvIiwgaGV4X3BmeCk7CiAJCWRpciA9IG9wZW5kaXIoYWx0LT5iYXNlKTsKIAkJaWYgKCFkaXIpCiAJCQljb250aW51ZTsKLQkJd2hpbGUgKChkZSA9IHJlYWRkaXIoZGlyKSkgIT0gTlVMTCkgeworCisJCXdoaWxlICghZHMtPmFtYmlndW91cyAmJiAoZGUgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpIHsKKwkJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisKIAkJCWlmIChzdHJsZW4oZGUtPmRfbmFtZSkgIT0gMzgpCiAJCQkJY29udGludWU7Ci0JCQlpZiAobWVtY21wKGRlLT5kX25hbWUsIG5hbWUgKyAyLCBsZW4gLSAyKSkKKwkJCWlmIChtZW1jbXAoZGUtPmRfbmFtZSwgaGV4X3BmeCArIDIsIGxlbiAtIDIpKQogCQkJCWNvbnRpbnVlOwotCQkJaWYgKCFmb3VuZCkgewotCQkJCW1lbWNweShoZXggKyAyLCBkZS0+ZF9uYW1lLCAzOCk7Ci0JCQkJZm91bmQrKzsKLQkJCX0KLQkJCWVsc2UgaWYgKG1lbWNtcChoZXggKyAyLCBkZS0+ZF9uYW1lLCAzOCkpIHsKLQkJCQlmb3VuZCA9IDI7Ci0JCQkJYnJlYWs7Ci0JCQl9CisJCQltZW1jcHkoaGV4ICsgMiwgZGUtPmRfbmFtZSwgMzgpOworCQkJaWYgKCFnZXRfc2hhMV9oZXgoaGV4LCBzaGExKSkKKwkJCQl1cGRhdGVfY2FuZGlkYXRlcyhkcywgc2hhMSk7CiAJCX0KIAkJY2xvc2VkaXIoZGlyKTsKIAl9Ci0JaWYgKGZvdW5kID09IDEpCi0JCXJldHVybiBnZXRfc2hhMV9oZXgoaGV4LCBzaGExKSA9PSAwOwotCXJldHVybiBmb3VuZDsKIH0KIAogc3RhdGljIGludCBtYXRjaF9zaGEodW5zaWduZWQgbGVuLCBjb25zdCB1bnNpZ25lZCBjaGFyICphLCBjb25zdCB1bnNpZ25lZCBjaGFyICpiKQpAQCAtNzEsMTAzICsxMzQsMTU3IEBACiAJcmV0dXJuIDE7CiB9CiAKLXN0YXRpYyBpbnQgZmluZF9zaG9ydF9wYWNrZWRfb2JqZWN0KGludCBsZW4sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm1hdGNoLCB1bnNpZ25lZCBjaGFyICpzaGExKQorc3RhdGljIHZvaWQgdW5pcXVlX2luX3BhY2soaW50IGxlbiwKKwkJCSAgY29uc3QgdW5zaWduZWQgY2hhciAqYmluX3BmeCwKKwkJCSAgIHN0cnVjdCBwYWNrZWRfZ2l0ICpwLAorCQkJICAgc3RydWN0IGRpc2FtYmlndWF0ZV9zdGF0ZSAqZHMpCit7CisJdWludDMyX3QgbnVtLCBsYXN0LCBpLCBmaXJzdCA9IDA7CisJY29uc3QgdW5zaWduZWQgY2hhciAqY3VycmVudCA9IE5VTEw7CisKKwlvcGVuX3BhY2tfaW5kZXgocCk7CisJbnVtID0gcC0+bnVtX29iamVjdHM7CisJbGFzdCA9IG51bTsKKwl3aGlsZSAoZmlyc3QgPCBsYXN0KSB7CisJCXVpbnQzMl90IG1pZCA9IChmaXJzdCArIGxhc3QpIC8gMjsKKwkJY29uc3QgdW5zaWduZWQgY2hhciAqY3VycmVudDsKKwkJaW50IGNtcDsKKworCQljdXJyZW50ID0gbnRoX3BhY2tlZF9vYmplY3Rfc2hhMShwLCBtaWQpOworCQljbXAgPSBoYXNoY21wKGJpbl9wZngsIGN1cnJlbnQpOworCQlpZiAoIWNtcCkgeworCQkJZmlyc3QgPSBtaWQ7CisJCQlicmVhazsKKwkJfQorCQlpZiAoY21wID4gMCkgeworCQkJZmlyc3QgPSBtaWQrMTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWxhc3QgPSBtaWQ7CisJfQorCisJLyoKKwkgKiBBdCB0aGlzIHBvaW50LCAiZmlyc3QiIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgbG93ZXN0IG9iamVjdAorCSAqIHdpdGggYW4gb2JqZWN0IG5hbWUgdGhhdCBjb3VsZCBtYXRjaCAiYmluX3BmeCIuICBTZWUgaWYgd2UgaGF2ZQorCSAqIDAsIDEgb3IgbW9yZSBvYmplY3RzIHRoYXQgYWN0dWFsbHkgbWF0Y2goZXMpLgorCSAqLworCWZvciAoaSA9IGZpcnN0OyBpIDwgbnVtICYmICFkcy0+YW1iaWd1b3VzOyBpKyspIHsKKwkJY3VycmVudCA9IG50aF9wYWNrZWRfb2JqZWN0X3NoYTEocCwgaSk7CisJCWlmICghbWF0Y2hfc2hhKGxlbiwgYmluX3BmeCwgY3VycmVudCkpCisJCQlicmVhazsKKwkJdXBkYXRlX2NhbmRpZGF0ZXMoZHMsIGN1cnJlbnQpOworCX0KK30KKworc3RhdGljIHZvaWQgZmluZF9zaG9ydF9wYWNrZWRfb2JqZWN0KGludCBsZW4sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJpbl9wZngsCisJCQkJICAgICBzdHJ1Y3QgZGlzYW1iaWd1YXRlX3N0YXRlICpkcykKIHsKIAlzdHJ1Y3QgcGFja2VkX2dpdCAqcDsKLQljb25zdCB1bnNpZ25lZCBjaGFyICpmb3VuZF9zaGExID0gTlVMTDsKLQlpbnQgZm91bmQgPSAwOwogCiAJcHJlcGFyZV9wYWNrZWRfZ2l0KCk7Ci0JZm9yIChwID0gcGFja2VkX2dpdDsgcCAmJiBmb3VuZCA8IDI7IHAgPSBwLT5uZXh0KSB7Ci0JCXVpbnQzMl90IG51bSwgbGFzdDsKLQkJdWludDMyX3QgZmlyc3QgPSAwOwotCQlvcGVuX3BhY2tfaW5kZXgocCk7Ci0JCW51bSA9IHAtPm51bV9vYmplY3RzOwotCQlsYXN0ID0gbnVtOwotCQl3aGlsZSAoZmlyc3QgPCBsYXN0KSB7Ci0JCQl1aW50MzJfdCBtaWQgPSAoZmlyc3QgKyBsYXN0KSAvIDI7Ci0JCQljb25zdCB1bnNpZ25lZCBjaGFyICpub3c7Ci0JCQlpbnQgY21wOwotCi0JCQlub3cgPSBudGhfcGFja2VkX29iamVjdF9zaGExKHAsIG1pZCk7Ci0JCQljbXAgPSBoYXNoY21wKG1hdGNoLCBub3cpOwotCQkJaWYgKCFjbXApIHsKLQkJCQlmaXJzdCA9IG1pZDsKLQkJCQlicmVhazsKLQkJCX0KLQkJCWlmIChjbXAgPiAwKSB7Ci0JCQkJZmlyc3QgPSBtaWQrMTsKLQkJCQljb250aW51ZTsKLQkJCX0KLQkJCWxhc3QgPSBtaWQ7Ci0JCX0KLQkJaWYgKGZpcnN0IDwgbnVtKSB7Ci0JCQljb25zdCB1bnNpZ25lZCBjaGFyICpub3csICpuZXh0OwotCQkgICAgICAgbm93ID0gbnRoX3BhY2tlZF9vYmplY3Rfc2hhMShwLCBmaXJzdCk7Ci0JCQlpZiAobWF0Y2hfc2hhKGxlbiwgbWF0Y2gsIG5vdykpIHsKLQkJCQluZXh0ID0gbnRoX3BhY2tlZF9vYmplY3Rfc2hhMShwLCBmaXJzdCsxKTsKLQkJCSAgICAgICBpZiAoIW5leHR8fCAhbWF0Y2hfc2hhKGxlbiwgbWF0Y2gsIG5leHQpKSB7Ci0JCQkJCS8qIHVuaXF1ZSB3aXRoaW4gdGhpcyBwYWNrICovCi0JCQkJCWlmICghZm91bmQpIHsKLQkJCQkJCWZvdW5kX3NoYTEgPSBub3c7Ci0JCQkJCQlmb3VuZCsrOwotCQkJCQl9Ci0JCQkJCWVsc2UgaWYgKGhhc2hjbXAoZm91bmRfc2hhMSwgbm93KSkgewotCQkJCQkJZm91bmQgPSAyOwotCQkJCQkJYnJlYWs7Ci0JCQkJCX0KLQkJCQl9Ci0JCQkJZWxzZSB7Ci0JCQkJCS8qIG5vdCBldmVuIHVuaXF1ZSB3aXRoaW4gdGhpcyBwYWNrICovCi0JCQkJCWZvdW5kID0gMjsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCWlmIChmb3VuZCA9PSAxKQotCQloYXNoY3B5KHNoYTEsIGZvdW5kX3NoYTEpOwotCXJldHVybiBmb3VuZDsKKwlmb3IgKHAgPSBwYWNrZWRfZ2l0OyBwICYmICFkcy0+YW1iaWd1b3VzOyBwID0gcC0+bmV4dCkKKwkJdW5pcXVlX2luX3BhY2sobGVuLCBiaW5fcGZ4LCBwLCBkcyk7CiB9CiAKICNkZWZpbmUgU0hPUlRfTkFNRV9OT1RfRk9VTkQgKC0xKQogI2RlZmluZSBTSE9SVF9OQU1FX0FNQklHVU9VUyAoLTIpCiAKLXN0YXRpYyBpbnQgZmluZF91bmlxdWVfc2hvcnRfb2JqZWN0KGludCBsZW4sIGNoYXIgKmNhbm9uaWNhbCwKLQkJCQkgICAgdW5zaWduZWQgY2hhciAqcmVzLCB1bnNpZ25lZCBjaGFyICpzaGExKQorc3RhdGljIGludCBmaW5pc2hfb2JqZWN0X2Rpc2FtYmlndWF0aW9uKHN0cnVjdCBkaXNhbWJpZ3VhdGVfc3RhdGUgKmRzLAorCQkJCQl1bnNpZ25lZCBjaGFyICpzaGExKQogewotCWludCBoYXNfdW5wYWNrZWQsIGhhc19wYWNrZWQ7Ci0JdW5zaWduZWQgY2hhciB1bnBhY2tlZF9zaGExWzIwXSwgcGFja2VkX3NoYTFbMjBdOworCWlmIChkcy0+YW1iaWd1b3VzKQorCQlyZXR1cm4gU0hPUlRfTkFNRV9BTUJJR1VPVVM7CiAKLQlwcmVwYXJlX2FsdF9vZGIoKTsKLQloYXNfdW5wYWNrZWQgPSBmaW5kX3Nob3J0X29iamVjdF9maWxlbmFtZShsZW4sIGNhbm9uaWNhbCwgdW5wYWNrZWRfc2hhMSk7Ci0JaGFzX3BhY2tlZCA9IGZpbmRfc2hvcnRfcGFja2VkX29iamVjdChsZW4sIHJlcywgcGFja2VkX3NoYTEpOwotCWlmICghaGFzX3VucGFja2VkICYmICFoYXNfcGFja2VkKQorCWlmICghZHMtPmNhbmRpZGF0ZV9leGlzdHMpCiAJCXJldHVybiBTSE9SVF9OQU1FX05PVF9GT1VORDsKLQlpZiAoMSA8IGhhc191bnBhY2tlZCB8fCAxIDwgaGFzX3BhY2tlZCkKKworCWlmICghZHMtPmNhbmRpZGF0ZV9jaGVja2VkKQorCQkvKgorCQkgKiBJZiB0aGlzIGlzIHRoZSBvbmx5IGNhbmRpZGF0ZSwgdGhlcmUgaXMgbm8gcG9pbnQKKwkJICogY2FsbGluZyB0aGUgZGlzYW1iaWd1YXRpb24gaGludCBjYWxsYmFjay4KKwkJICoKKwkJICogT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBjdXJyZW50IGNhbmRpZGF0ZQorCQkgKiByZXBsYWNlZCBhbiBlYXJsaWVyIGNhbmRpZGF0ZSB0aGF0IGRpZCBfbm90XyBwYXNzCisJCSAqIHRoZSBkaXNhbWJpZ3VhdGlvbiBoaW50IGNhbGxiYWNrLCB0aGVuIHdlIGRvIGhhdmUKKwkJICogbW9yZSB0aGFuIG9uZSBvYmplY3RzIHRoYXQgbWF0Y2ggdGhlIHNob3J0IG5hbWUKKwkJICogZ2l2ZW4sIHNvIHdlIHNob3VsZCBtYWtlIHN1cmUgdGhpcyBvbmUgbWF0Y2hlczsKKwkJICogb3RoZXJ3aXNlLCBpZiB3ZSBkaXNjb3ZlcmVkIHRoaXMgb25lIGFuZCB0aGUgb25lCisJCSAqIHRoYXQgd2UgcHJldmlvdXNseSBkaXNjYXJkZWQgaW4gdGhlIHJldmVyc2Ugb3JkZXIsCisJCSAqIHdlIHdvdWxkIGVuZCB1cCBzaG93aW5nIGRpZmZlcmVudCByZXN1bHRzIGluIHRoZQorCQkgKiBzYW1lIHJlcG9zaXRvcnkhCisJCSAqLworCQlkcy0+Y2FuZGlkYXRlX29rID0gKCFkcy0+ZGlzYW1iaWd1YXRlX2ZuX3VzZWQgfHwKKwkJCQkgICAgZHMtPmZuKGRzLT5jYW5kaWRhdGUsIGRzLT5jYl9kYXRhKSk7CisKKwlpZiAoIWRzLT5jYW5kaWRhdGVfb2spCiAJCXJldHVybiBTSE9SVF9OQU1FX0FNQklHVU9VUzsKLQlpZiAoaGFzX3VucGFja2VkICE9IGhhc19wYWNrZWQpIHsKLQkJaGFzaGNweShzaGExLCAoaGFzX3BhY2tlZCA/IHBhY2tlZF9zaGExIDogdW5wYWNrZWRfc2hhMSkpOwotCQlyZXR1cm4gMDsKLQl9Ci0JLyogQm90aCBoYXZlIHVuaXF1ZSBvbmVzIC0tIGRvIHRoZXkgbWF0Y2g/ICovCi0JaWYgKGhhc2hjbXAocGFja2VkX3NoYTEsIHVucGFja2VkX3NoYTEpKQotCQlyZXR1cm4gU0hPUlRfTkFNRV9BTUJJR1VPVVM7Ci0JaGFzaGNweShzaGExLCBwYWNrZWRfc2hhMSk7CisKKwloYXNoY3B5KHNoYTEsIGRzLT5jYW5kaWRhdGUpOwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGdldF9zaG9ydF9zaGExKGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4sIHVuc2lnbmVkIGNoYXIgKnNoYTEsCi0JCQkgIGludCBxdWlldGx5KQorc3RhdGljIGludCBkaXNhbWJpZ3VhdGVfY29tbWl0X29ubHkoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgdm9pZCAqY2JfZGF0YV91bnVzZWQpCiB7Ci0JaW50IGksIHN0YXR1czsKLQljaGFyIGNhbm9uaWNhbFs0MF07Ci0JdW5zaWduZWQgY2hhciByZXNbMjBdOworCWludCBraW5kID0gc2hhMV9vYmplY3RfaW5mbyhzaGExLCBOVUxMKTsKKwlyZXR1cm4ga2luZCA9PSBPQkpfQ09NTUlUOworfQogCi0JaWYgKGxlbiA8IE1JTklNVU1fQUJCUkVWIHx8IGxlbiA+IDQwKQotCQlyZXR1cm4gLTE7Ci0JaGFzaGNscihyZXMpOwotCW1lbXNldChjYW5vbmljYWwsICd4JywgNDApOworc3RhdGljIGludCBkaXNhbWJpZ3VhdGVfY29tbWl0dGlzaF9vbmx5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIHZvaWQgKmNiX2RhdGFfdW51c2VkKQoreworCXN0cnVjdCBvYmplY3QgKm9iajsKKwlpbnQga2luZDsKKworCWtpbmQgPSBzaGExX29iamVjdF9pbmZvKHNoYTEsIE5VTEwpOworCWlmIChraW5kID09IE9CSl9DT01NSVQpCisJCXJldHVybiAxOworCWlmIChraW5kICE9IE9CSl9UQUcpCisJCXJldHVybiAwOworCisJLyogV2UgbmVlZCB0byBkbyB0aGlzIHRoZSBoYXJkIHdheS4uLiAqLworCW9iaiA9IGRlcmVmX3RhZyhsb29rdXBfb2JqZWN0KHNoYTEpLCBOVUxMLCAwKTsKKwlpZiAob2JqICYmIG9iai0+dHlwZSA9PSBPQkpfQ09NTUlUKQorCQlyZXR1cm4gMTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkaXNhbWJpZ3VhdGVfdHJlZV9vbmx5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIHZvaWQgKmNiX2RhdGFfdW51c2VkKQoreworCWludCBraW5kID0gc2hhMV9vYmplY3RfaW5mbyhzaGExLCBOVUxMKTsKKwlyZXR1cm4ga2luZCA9PSBPQkpfVFJFRTsKK30KKworc3RhdGljIGludCBkaXNhbWJpZ3VhdGVfdHJlZWlzaF9vbmx5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIHZvaWQgKmNiX2RhdGFfdW51c2VkKQoreworCXN0cnVjdCBvYmplY3QgKm9iajsKKwlpbnQga2luZDsKKworCWtpbmQgPSBzaGExX29iamVjdF9pbmZvKHNoYTEsIE5VTEwpOworCWlmIChraW5kID09IE9CSl9UUkVFIHx8IGtpbmQgPT0gT0JKX0NPTU1JVCkKKwkJcmV0dXJuIDE7CisJaWYgKGtpbmQgIT0gT0JKX1RBRykKKwkJcmV0dXJuIDA7CisKKwkvKiBXZSBuZWVkIHRvIGRvIHRoaXMgdGhlIGhhcmQgd2F5Li4uICovCisJb2JqID0gZGVyZWZfdGFnKGxvb2t1cF9vYmplY3Qoc2hhMSksIE5VTEwsIDApOworCWlmIChvYmogJiYgKG9iai0+dHlwZSA9PSBPQkpfVFJFRSB8fCBvYmotPnR5cGUgPT0gT0JKX0NPTU1JVCkpCisJCXJldHVybiAxOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRpc2FtYmlndWF0ZV9ibG9iX29ubHkoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgdm9pZCAqY2JfZGF0YV91bnVzZWQpCit7CisJaW50IGtpbmQgPSBzaGExX29iamVjdF9pbmZvKHNoYTEsIE5VTEwpOworCXJldHVybiBraW5kID09IE9CSl9CTE9COworfQorCitzdGF0aWMgaW50IHByZXBhcmVfcHJlZml4ZXMoY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbiwKKwkJCSAgICB1bnNpZ25lZCBjaGFyICpiaW5fcGZ4LAorCQkJICAgIGNoYXIgKmhleF9wZngpCit7CisJaW50IGk7CisKKwloYXNoY2xyKGJpbl9wZngpOworCW1lbXNldChoZXhfcGZ4LCAneCcsIDQwKTsKIAlmb3IgKGkgPSAwOyBpIDwgbGVuIDtpKyspIHsKIAkJdW5zaWduZWQgY2hhciBjID0gbmFtZVtpXTsKIAkJdW5zaWduZWQgY2hhciB2YWw7CkBAIC0xODEsMTggKzI5OCw3NiBAQAogCQl9CiAJCWVsc2UKIAkJCXJldHVybiAtMTsKLQkJY2Fub25pY2FsW2ldID0gYzsKKwkJaGV4X3BmeFtpXSA9IGM7CiAJCWlmICghKGkgJiAxKSkKIAkJCXZhbCA8PD0gNDsKLQkJcmVzW2kgPj4gMV0gfD0gdmFsOworCQliaW5fcGZ4W2kgPj4gMV0gfD0gdmFsOwogCX0KKwlyZXR1cm4gMDsKK30KIAotCXN0YXR1cyA9IGZpbmRfdW5pcXVlX3Nob3J0X29iamVjdChpLCBjYW5vbmljYWwsIHJlcywgc2hhMSk7CitzdGF0aWMgaW50IGdldF9zaG9ydF9zaGExKGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4sIHVuc2lnbmVkIGNoYXIgKnNoYTEsCisJCQkgIHVuc2lnbmVkIGZsYWdzKQoreworCWludCBzdGF0dXM7CisJY2hhciBoZXhfcGZ4WzQwXTsKKwl1bnNpZ25lZCBjaGFyIGJpbl9wZnhbMjBdOworCXN0cnVjdCBkaXNhbWJpZ3VhdGVfc3RhdGUgZHM7CisJaW50IHF1aWV0bHkgPSAhIShmbGFncyAmIEdFVF9TSEExX1FVSUVUTFkpOworCisJaWYgKGxlbiA8IE1JTklNVU1fQUJCUkVWIHx8IGxlbiA+IDQwKQorCQlyZXR1cm4gLTE7CisJaWYgKHByZXBhcmVfcHJlZml4ZXMobmFtZSwgbGVuLCBiaW5fcGZ4LCBoZXhfcGZ4KSA8IDApCisJCXJldHVybiAtMTsKKworCXByZXBhcmVfYWx0X29kYigpOworCisJbWVtc2V0KCZkcywgMCwgc2l6ZW9mKGRzKSk7CisJaWYgKGZsYWdzICYgR0VUX1NIQTFfQ09NTUlUKQorCQlkcy5mbiA9IGRpc2FtYmlndWF0ZV9jb21taXRfb25seTsKKwllbHNlIGlmIChmbGFncyAmIEdFVF9TSEExX0NPTU1JVFRJU0gpCisJCWRzLmZuID0gZGlzYW1iaWd1YXRlX2NvbW1pdHRpc2hfb25seTsKKwllbHNlIGlmIChmbGFncyAmIEdFVF9TSEExX1RSRUUpCisJCWRzLmZuID0gZGlzYW1iaWd1YXRlX3RyZWVfb25seTsKKwllbHNlIGlmIChmbGFncyAmIEdFVF9TSEExX1RSRUVJU0gpCisJCWRzLmZuID0gZGlzYW1iaWd1YXRlX3RyZWVpc2hfb25seTsKKwllbHNlIGlmIChmbGFncyAmIEdFVF9TSEExX0JMT0IpCisJCWRzLmZuID0gZGlzYW1iaWd1YXRlX2Jsb2Jfb25seTsKKworCWZpbmRfc2hvcnRfb2JqZWN0X2ZpbGVuYW1lKGxlbiwgaGV4X3BmeCwgJmRzKTsKKwlmaW5kX3Nob3J0X3BhY2tlZF9vYmplY3QobGVuLCBiaW5fcGZ4LCAmZHMpOworCXN0YXR1cyA9IGZpbmlzaF9vYmplY3RfZGlzYW1iaWd1YXRpb24oJmRzLCBzaGExKTsKKwogCWlmICghcXVpZXRseSAmJiAoc3RhdHVzID09IFNIT1JUX05BTUVfQU1CSUdVT1VTKSkKLQkJcmV0dXJuIGVycm9yKCJzaG9ydCBTSEExICUuKnMgaXMgYW1iaWd1b3VzLiIsIGxlbiwgY2Fub25pY2FsKTsKKwkJcmV0dXJuIGVycm9yKCJzaG9ydCBTSEExICUuKnMgaXMgYW1iaWd1b3VzLiIsIGxlbiwgaGV4X3BmeCk7CiAJcmV0dXJuIHN0YXR1czsKIH0KIAorCitpbnQgZm9yX2VhY2hfYWJicmV2KGNvbnN0IGNoYXIgKnByZWZpeCwgZWFjaF9hYmJyZXZfZm4gZm4sIHZvaWQgKmNiX2RhdGEpCit7CisJY2hhciBoZXhfcGZ4WzQwXTsKKwl1bnNpZ25lZCBjaGFyIGJpbl9wZnhbMjBdOworCXN0cnVjdCBkaXNhbWJpZ3VhdGVfc3RhdGUgZHM7CisJaW50IGxlbiA9IHN0cmxlbihwcmVmaXgpOworCisJaWYgKGxlbiA8IE1JTklNVU1fQUJCUkVWIHx8IGxlbiA+IDQwKQorCQlyZXR1cm4gLTE7CisJaWYgKHByZXBhcmVfcHJlZml4ZXMocHJlZml4LCBsZW4sIGJpbl9wZngsIGhleF9wZngpIDwgMCkKKwkJcmV0dXJuIC0xOworCisJcHJlcGFyZV9hbHRfb2RiKCk7CisKKwltZW1zZXQoJmRzLCAwLCBzaXplb2YoZHMpKTsKKwlkcy5hbHdheXNfY2FsbF9mbiA9IDE7CisJZHMuY2JfZGF0YSA9IGNiX2RhdGE7CisJZHMuZm4gPSBmbjsKKworCWZpbmRfc2hvcnRfb2JqZWN0X2ZpbGVuYW1lKGxlbiwgaGV4X3BmeCwgJmRzKTsKKwlmaW5kX3Nob3J0X3BhY2tlZF9vYmplY3QobGVuLCBiaW5fcGZ4LCAmZHMpOworCXJldHVybiBkcy5hbWJpZ3VvdXM7Cit9CisKIGNvbnN0IGNoYXIgKmZpbmRfdW5pcXVlX2FiYnJldihjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgbGVuKQogewogCWludCBzdGF0dXMsIGV4aXN0czsKQEAgLTIwNCw3ICszNzksNyBAQAogCQlyZXR1cm4gaGV4OwogCXdoaWxlIChsZW4gPCA0MCkgewogCQl1bnNpZ25lZCBjaGFyIHNoYTFfcmV0WzIwXTsKLQkJc3RhdHVzID0gZ2V0X3Nob3J0X3NoYTEoaGV4LCBsZW4sIHNoYTFfcmV0LCAxKTsKKwkJc3RhdHVzID0gZ2V0X3Nob3J0X3NoYTEoaGV4LCBsZW4sIHNoYTFfcmV0LCBHRVRfU0hBMV9RVUlFVExZKTsKIAkJaWYgKGV4aXN0cwogCQkgICAgPyAhc3RhdHVzCiAJCSAgICA6IHN0YXR1cyA9PSBTSE9SVF9OQU1FX05PVF9GT1VORCkgewpAQCAtMjU1LDcgKzQzMCw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgZ2V0X3NoYTFfMShjb25zdCBjaGFyICpuYW1lLCBpbnQgbGVuLCB1bnNpZ25lZCBjaGFyICpzaGExKTsKK3N0YXRpYyBpbnQgZ2V0X3NoYTFfMShjb25zdCBjaGFyICpuYW1lLCBpbnQgbGVuLCB1bnNpZ25lZCBjaGFyICpzaGExLCB1bnNpZ25lZCBsb29rdXBfZmxhZ3MpOwogCiBzdGF0aWMgaW50IGdldF9zaGExX2Jhc2ljKGNvbnN0IGNoYXIgKnN0ciwgaW50IGxlbiwgdW5zaWduZWQgY2hhciAqc2hhMSkKIHsKQEAgLTI5Miw3ICs0NjcsNyBAQAogCQlyZXQgPSBpbnRlcnByZXRfYnJhbmNoX25hbWUoc3RyK2F0LCAmYnVmKTsKIAkJaWYgKHJldCA+IDApIHsKIAkJCS8qIHN1YnN0aXR1dGUgdGhpcyBicmFuY2ggbmFtZSBhbmQgcmVzdGFydCAqLwotCQkJcmV0dXJuIGdldF9zaGExXzEoYnVmLmJ1ZiwgYnVmLmxlbiwgc2hhMSk7CisJCQlyZXR1cm4gZ2V0X3NoYTFfMShidWYuYnVmLCBidWYubGVuLCBzaGExLCAwKTsKIAkJfSBlbHNlIGlmIChyZXQgPT0gMCkgewogCQkJcmV0dXJuIC0xOwogCQl9CkBAIC0zNDIsMTIgKzUxNywyMSBAQAogCQl9CiAJCWlmIChyZWFkX3JlZl9hdChyZWFsX3JlZiwgYXRfdGltZSwgbnRoLCBzaGExLCBOVUxMLAogCQkJCSZjb190aW1lLCAmY29fdHosICZjb19jbnQpKSB7CisJCQlpZiAoIWxlbikgeworCQkJCWlmICghcHJlZml4Y21wKHJlYWxfcmVmLCAicmVmcy9oZWFkcy8iKSkgeworCQkJCQlzdHIgPSByZWFsX3JlZiArIDExOworCQkJCQlsZW4gPSBzdHJsZW4ocmVhbF9yZWYgKyAxMSk7CisJCQkJfSBlbHNlIHsKKwkJCQkJLyogZGV0YWNoZWQgSEVBRCAqLworCQkJCQlzdHIgPSAiSEVBRCI7CisJCQkJCWxlbiA9IDQ7CisJCQkJfQorCQkJfQogCQkJaWYgKGF0X3RpbWUpCiAJCQkJd2FybmluZygiTG9nIGZvciAnJS4qcycgb25seSBnb2VzICIKIAkJCQkJImJhY2sgdG8gJXMuIiwgbGVuLCBzdHIsCiAJCQkJCXNob3dfZGF0ZShjb190aW1lLCBjb190eiwgREFURV9SRkMyODIyKSk7CiAJCQllbHNlIHsKLQkJCQlmcmVlKHJlYWxfcmVmKTsKIAkJCQlkaWUoIkxvZyBmb3IgJyUuKnMnIG9ubHkgaGFzICVkIGVudHJpZXMuIiwKIAkJCQkgICAgbGVuLCBzdHIsIGNvX2NudCk7CiAJCQl9CkBAIC0zNjIsNyArNTQ2LDcgQEAKIAkJICAgICAgdW5zaWduZWQgY2hhciAqcmVzdWx0LCBpbnQgaWR4KQogewogCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07Ci0JaW50IHJldCA9IGdldF9zaGExXzEobmFtZSwgbGVuLCBzaGExKTsKKwlpbnQgcmV0ID0gZ2V0X3NoYTFfMShuYW1lLCBsZW4sIHNoYTEsIEdFVF9TSEExX0NPTU1JVFRJU0gpOwogCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKIAlzdHJ1Y3QgY29tbWl0X2xpc3QgKnA7CiAKQEAgLTM5NSw3ICs1NzksNyBAQAogCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKIAlpbnQgcmV0OwogCi0JcmV0ID0gZ2V0X3NoYTFfMShuYW1lLCBsZW4sIHNoYTEpOworCXJldCA9IGdldF9zaGExXzEobmFtZSwgbGVuLCBzaGExLCBHRVRfU0hBMV9DT01NSVRUSVNIKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCWNvbW1pdCA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlKHNoYTEpOwpAQCAtNDE5LDcgKzYwMyw3IEBACiAJd2hpbGUgKDEpIHsKIAkJaWYgKCFvIHx8ICghby0+cGFyc2VkICYmICFwYXJzZV9vYmplY3Qoby0+c2hhMSkpKQogCQkJcmV0dXJuIE5VTEw7Ci0JCWlmIChvLT50eXBlID09IGV4cGVjdGVkX3R5cGUpCisJCWlmIChleHBlY3RlZF90eXBlID09IE9CSl9BTlkgfHwgby0+dHlwZSA9PSBleHBlY3RlZF90eXBlKQogCQkJcmV0dXJuIG87CiAJCWlmIChvLT50eXBlID09IE9CSl9UQUcpCiAJCQlvID0gKChzdHJ1Y3QgdGFnKikgbyktPnRhZ2dlZDsKQEAgLTQ0MSw2ICs2MjUsNyBAQAogCXVuc2lnbmVkIGNoYXIgb3V0ZXJbMjBdOwogCWNvbnN0IGNoYXIgKnNwOwogCXVuc2lnbmVkIGludCBleHBlY3RlZF90eXBlID0gMDsKKwl1bnNpZ25lZCBsb29rdXBfZmxhZ3MgPSAwOwogCXN0cnVjdCBvYmplY3QgKm87CiAKIAkvKgpAQCAtNDY5LDYgKzY1NCw4IEBACiAJCWV4cGVjdGVkX3R5cGUgPSBPQkpfVFJFRTsKIAllbHNlIGlmICghc3RybmNtcChibG9iX3R5cGUsIHNwLCA0KSAmJiBzcFs0XSA9PSAnfScpCiAJCWV4cGVjdGVkX3R5cGUgPSBPQkpfQkxPQjsKKwllbHNlIGlmICghcHJlZml4Y21wKHNwLCAib2JqZWN0fSIpKQorCQlleHBlY3RlZF90eXBlID0gT0JKX0FOWTsKIAllbHNlIGlmIChzcFswXSA9PSAnfScpCiAJCWV4cGVjdGVkX3R5cGUgPSBPQkpfTk9ORTsKIAllbHNlIGlmIChzcFswXSA9PSAnLycpCkBAIC00NzYsNyArNjYzLDEyIEBACiAJZWxzZQogCQlyZXR1cm4gLTE7CiAKLQlpZiAoZ2V0X3NoYTFfMShuYW1lLCBzcCAtIG5hbWUgLSAyLCBvdXRlcikpCisJaWYgKGV4cGVjdGVkX3R5cGUgPT0gT0JKX0NPTU1JVCkKKwkJbG9va3VwX2ZsYWdzID0gR0VUX1NIQTFfQ09NTUlUVElTSDsKKwllbHNlIGlmIChleHBlY3RlZF90eXBlID09IE9CSl9UUkVFKQorCQlsb29rdXBfZmxhZ3MgPSBHRVRfU0hBMV9UUkVFSVNIOworCisJaWYgKGdldF9zaGExXzEobmFtZSwgc3AgLSBuYW1lIC0gMiwgb3V0ZXIsIGxvb2t1cF9mbGFncykpCiAJCXJldHVybiAtMTsKIAogCW8gPSBwYXJzZV9vYmplY3Qob3V0ZXIpOwpAQCAtNTI1LDYgKzcxNyw3IEBACiBzdGF0aWMgaW50IGdldF9kZXNjcmliZV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4sIHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7CiAJY29uc3QgY2hhciAqY3A7CisJdW5zaWduZWQgZmxhZ3MgPSBHRVRfU0hBMV9RVUlFVExZIHwgR0VUX1NIQTFfQ09NTUlUOwogCiAJZm9yIChjcCA9IG5hbWUgKyBsZW4gLSAxOyBuYW1lICsgMiA8PSBjcDsgY3AtLSkgewogCQljaGFyIGNoID0gKmNwOwpAQCAtNTM1LDE0ICs3MjgsMTQgQEAKIAkJCWlmIChjaCA9PSAnZycgJiYgY3BbLTFdID09ICctJykgewogCQkJCWNwKys7CiAJCQkJbGVuIC09IGNwIC0gbmFtZTsKLQkJCQlyZXR1cm4gZ2V0X3Nob3J0X3NoYTEoY3AsIGxlbiwgc2hhMSwgMSk7CisJCQkJcmV0dXJuIGdldF9zaG9ydF9zaGExKGNwLCBsZW4sIHNoYTEsIGZsYWdzKTsKIAkJCX0KIAkJfQogCX0KIAlyZXR1cm4gLTE7CiB9CiAKLXN0YXRpYyBpbnQgZ2V0X3NoYTFfMShjb25zdCBjaGFyICpuYW1lLCBpbnQgbGVuLCB1bnNpZ25lZCBjaGFyICpzaGExKQorc3RhdGljIGludCBnZXRfc2hhMV8xKGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4sIHVuc2lnbmVkIGNoYXIgKnNoYTEsIHVuc2lnbmVkIGxvb2t1cF9mbGFncykKIHsKIAlpbnQgcmV0LCBoYXNfc3VmZml4OwogCWNvbnN0IGNoYXIgKmNwOwpAQCAtNTg3LDcgKzc4MCw3IEBACiAJaWYgKCFyZXQpCiAJCXJldHVybiAwOwogCi0JcmV0dXJuIGdldF9zaG9ydF9zaGExKG5hbWUsIGxlbiwgc2hhMSwgMCk7CisJcmV0dXJuIGdldF9zaG9ydF9zaGExKG5hbWUsIGxlbiwgc2hhMSwgbG9va3VwX2ZsYWdzKTsKIH0KIAogLyoKQEAgLTY3Niw4ICs4NjksOCBAQAogfQogCiBzdHJ1Y3QgZ3JhYl9udGhfYnJhbmNoX3N3aXRjaF9jYmRhdGEgewotCWxvbmcgY250LCBhbGxvYzsKLQlzdHJ1Y3Qgc3RyYnVmICpidWY7CisJaW50IHJlbWFpbmluZzsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKIH07CiAKIHN0YXRpYyBpbnQgZ3JhYl9udGhfYnJhbmNoX3N3aXRjaCh1bnNpZ25lZCBjaGFyICpvc2hhMSwgdW5zaWduZWQgY2hhciAqbnNoYTEsCkBAIC02ODcsNyArODgwLDYgQEAKIAlzdHJ1Y3QgZ3JhYl9udGhfYnJhbmNoX3N3aXRjaF9jYmRhdGEgKmNiID0gY2JfZGF0YTsKIAljb25zdCBjaGFyICptYXRjaCA9IE5VTEwsICp0YXJnZXQgPSBOVUxMOwogCXNpemVfdCBsZW47Ci0JaW50IG50aDsKIAogCWlmICghcHJlZml4Y21wKG1lc3NhZ2UsICJjaGVja291dDogbW92aW5nIGZyb20gIikpIHsKIAkJbWF0Y2ggPSBtZXNzYWdlICsgc3RybGVuKCJjaGVja291dDogbW92aW5nIGZyb20gIik7CkBAIC02OTYsMTEgKzg4OCwxMiBAQAogCiAJaWYgKCFtYXRjaCB8fCAhdGFyZ2V0KQogCQlyZXR1cm4gMDsKLQotCWxlbiA9IHRhcmdldCAtIG1hdGNoOwotCW50aCA9IGNiLT5jbnQrKyAlIGNiLT5hbGxvYzsKLQlzdHJidWZfcmVzZXQoJmNiLT5idWZbbnRoXSk7Ci0Jc3RyYnVmX2FkZCgmY2ItPmJ1ZltudGhdLCBtYXRjaCwgbGVuKTsKKwlpZiAoLS0oY2ItPnJlbWFpbmluZykgPT0gMCkgeworCQlsZW4gPSB0YXJnZXQgLSBtYXRjaDsKKwkJc3RyYnVmX3Jlc2V0KCZjYi0+YnVmKTsKKwkJc3RyYnVmX2FkZCgmY2ItPmJ1ZiwgbWF0Y2gsIGxlbik7CisJCXJldHVybiAxOyAvKiB3ZSBhcmUgZG9uZSAqLworCX0KIAlyZXR1cm4gMDsKIH0KIApAQCAtNzExLDcgKzkwNCw3IEBACiBzdGF0aWMgaW50IGludGVycHJldF9udGhfcHJpb3JfY2hlY2tvdXQoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN0cmJ1ZiAqYnVmKQogewogCWxvbmcgbnRoOwotCWludCBpLCByZXR2YWw7CisJaW50IHJldHZhbDsKIAlzdHJ1Y3QgZ3JhYl9udGhfYnJhbmNoX3N3aXRjaF9jYmRhdGEgY2I7CiAJY29uc3QgY2hhciAqYnJhY2U7CiAJY2hhciAqbnVtX2VuZDsKQEAgLTcyMSwzNCArOTE0LDIyIEBACiAJYnJhY2UgPSBzdHJjaHIobmFtZSwgJ30nKTsKIAlpZiAoIWJyYWNlKQogCQlyZXR1cm4gLTE7Ci0JbnRoID0gc3RydG9sKG5hbWUrMywgJm51bV9lbmQsIDEwKTsKKwludGggPSBzdHJ0b2wobmFtZSArIDMsICZudW1fZW5kLCAxMCk7CiAJaWYgKG51bV9lbmQgIT0gYnJhY2UpCiAJCXJldHVybiAtMTsKIAlpZiAobnRoIDw9IDApCiAJCXJldHVybiAtMTsKLQljYi5hbGxvYyA9IG50aDsKLQljYi5idWYgPSB4bWFsbG9jKG50aCAqIHNpemVvZihzdHJ1Y3Qgc3RyYnVmKSk7Ci0JZm9yIChpID0gMDsgaSA8IG50aDsgaSsrKQotCQlzdHJidWZfaW5pdCgmY2IuYnVmW2ldLCAyMCk7Ci0JY2IuY250ID0gMDsKKwljYi5yZW1haW5pbmcgPSBudGg7CisJc3RyYnVmX2luaXQoJmNiLmJ1ZiwgMjApOworCiAJcmV0dmFsID0gMDsKLQlmb3JfZWFjaF9yZWNlbnRfcmVmbG9nX2VudCgiSEVBRCIsIGdyYWJfbnRoX2JyYW5jaF9zd2l0Y2gsIDQwOTYwLCAmY2IpOwotCWlmIChjYi5jbnQgPCBudGgpIHsKLQkJY2IuY250ID0gMDsKLQkJZm9yX2VhY2hfcmVmbG9nX2VudCgiSEVBRCIsIGdyYWJfbnRoX2JyYW5jaF9zd2l0Y2gsICZjYik7CisJaWYgKDAgPCBmb3JfZWFjaF9yZWZsb2dfZW50X3JldmVyc2UoIkhFQUQiLCBncmFiX250aF9icmFuY2hfc3dpdGNoLCAmY2IpKSB7CisJCXN0cmJ1Zl9yZXNldChidWYpOworCQlzdHJidWZfYWRkKGJ1ZiwgY2IuYnVmLmJ1ZiwgY2IuYnVmLmxlbik7CisJCXJldHZhbCA9IGJyYWNlIC0gbmFtZSArIDE7CiAJfQotCWlmIChjYi5jbnQgPCBudGgpCi0JCWdvdG8gcmVsZWFzZV9yZXR1cm47Ci0JaSA9IGNiLmNudCAlIG50aDsKLQlzdHJidWZfcmVzZXQoYnVmKTsKLQlzdHJidWZfYWRkKGJ1ZiwgY2IuYnVmW2ldLmJ1ZiwgY2IuYnVmW2ldLmxlbik7Ci0JcmV0dmFsID0gYnJhY2UtbmFtZSsxOwogCi1yZWxlYXNlX3JldHVybjoKLQlmb3IgKGkgPSAwOyBpIDwgbnRoOyBpKyspCi0JCXN0cmJ1Zl9yZWxlYXNlKCZjYi5idWZbaV0pOwotCWZyZWUoY2IuYnVmKTsKLQorCXN0cmJ1Zl9yZWxlYXNlKCZjYi5idWYpOwogCXJldHVybiByZXR2YWw7CiB9CiAKQEAgLTc2OSw3ICs5NTAsNyBAQAogCQlzdHJ1Y3Qgc3RyYnVmIHNiOwogCQlzdHJidWZfaW5pdCgmc2IsIGRvdHMgLSBuYW1lKTsKIAkJc3RyYnVmX2FkZCgmc2IsIG5hbWUsIGRvdHMgLSBuYW1lKTsKLQkJc3QgPSBnZXRfc2hhMShzYi5idWYsIHNoYTFfdG1wKTsKKwkJc3QgPSBnZXRfc2hhMV9jb21taXR0aXNoKHNiLmJ1Ziwgc2hhMV90bXApOwogCQlzdHJidWZfcmVsZWFzZSgmc2IpOwogCX0KIAlpZiAoc3QpCkBAIC03NzgsNyArOTU5LDcgQEAKIAlpZiAoIW9uZSkKIAkJcmV0dXJuIC0xOwogCi0JaWYgKGdldF9zaGExKGRvdHNbM10gPyAoZG90cyArIDMpIDogIkhFQUQiLCBzaGExX3RtcCkpCisJaWYgKGdldF9zaGExX2NvbW1pdHRpc2goZG90c1szXSA/IChkb3RzICsgMykgOiAiSEVBRCIsIHNoYTFfdG1wKSkKIAkJcmV0dXJuIC0xOwogCXR3byA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlX2dlbnRseShzaGExX3RtcCwgMCk7CiAJaWYgKCF0d28pCkBAIC04NjEsMTQgKzEwNDIsMTUgQEAKIAkgKiBwb2ludHMgdG8gc29tZXRoaW5nIGRpZmZlcmVudCB0aGFuIGEgYnJhbmNoLgogCSAqLwogCWlmICghdXBzdHJlYW0pCi0JCXJldHVybiBlcnJvcihfKCJIRUFEIGRvZXMgbm90IHBvaW50IHRvIGEgYnJhbmNoIikpOworCQlkaWUoXygiSEVBRCBkb2VzIG5vdCBwb2ludCB0byBhIGJyYW5jaCIpKTsKIAlpZiAoIXVwc3RyZWFtLT5tZXJnZSB8fCAhdXBzdHJlYW0tPm1lcmdlWzBdLT5kc3QpIHsKIAkJaWYgKCFyZWZfZXhpc3RzKHVwc3RyZWFtLT5yZWZuYW1lKSkKLQkJCXJldHVybiBlcnJvcihfKCJObyBzdWNoIGJyYW5jaDogJyVzJyIpLCBjcCk7Ci0JCWlmICghdXBzdHJlYW0tPm1lcmdlKQotCQkJcmV0dXJuIGVycm9yKF8oIk5vIHVwc3RyZWFtIGNvbmZpZ3VyZWQgZm9yIGJyYW5jaCAnJXMnIiksCi0JCQkJICAgICB1cHN0cmVhbS0+bmFtZSk7Ci0JCXJldHVybiBlcnJvcigKKwkJCWRpZShfKCJObyBzdWNoIGJyYW5jaDogJyVzJyIpLCBjcCk7CisJCWlmICghdXBzdHJlYW0tPm1lcmdlKSB7CisJCQlkaWUoXygiTm8gdXBzdHJlYW0gY29uZmlndXJlZCBmb3IgYnJhbmNoICclcyciKSwKKwkJCQl1cHN0cmVhbS0+bmFtZSk7CisJCX0KKwkJZGllKAogCQkJXygiVXBzdHJlYW0gYnJhbmNoICclcycgbm90IHN0b3JlZCBhcyBhIHJlbW90ZS10cmFja2luZyBicmFuY2giKSwKIAkJCXVwc3RyZWFtLT5tZXJnZVswXS0+c3JjKTsKIAl9CkBAIC04ODMsOSArMTA2NSwxMyBAQAogaW50IHN0cmJ1Zl9icmFuY2huYW1lKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpuYW1lKQogewogCWludCBsZW4gPSBzdHJsZW4obmFtZSk7Ci0JaWYgKGludGVycHJldF9icmFuY2hfbmFtZShuYW1lLCBzYikgPT0gbGVuKQorCWludCB1c2VkID0gaW50ZXJwcmV0X2JyYW5jaF9uYW1lKG5hbWUsIHNiKTsKKworCWlmICh1c2VkID09IGxlbikKIAkJcmV0dXJuIDA7Ci0Jc3RyYnVmX2FkZChzYiwgbmFtZSwgbGVuKTsKKwlpZiAodXNlZCA8IDApCisJCXVzZWQgPSAwOworCXN0cmJ1Zl9hZGQoc2IsIG5hbWUgKyB1c2VkLCBsZW4gLSB1c2VkKTsKIAlyZXR1cm4gbGVuOwogfQogCkBAIC05MDUsMTQgKzEwOTEsNjAgQEAKIGludCBnZXRfc2hhMShjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBjaGFyICpzaGExKQogewogCXN0cnVjdCBvYmplY3RfY29udGV4dCB1bnVzZWQ7Ci0JcmV0dXJuIGdldF9zaGExX3dpdGhfY29udGV4dChuYW1lLCBzaGExLCAmdW51c2VkKTsKKwlyZXR1cm4gZ2V0X3NoYTFfd2l0aF9jb250ZXh0KG5hbWUsIDAsIHNoYTEsICZ1bnVzZWQpOworfQorCisvKgorICogTWFueSBjYWxsZXJzIGtub3cgdGhhdCB0aGUgdXNlciBtZWFudCB0byBuYW1lIGEgY29tbWl0dGlzaCBieQorICogc3ludGFjdGljYWwgcG9zaXRpb25zIHdoZXJlIHRoZSBvYmplY3QgbmFtZSBhcHBlYXJzLiAgQ2FsbGluZyB0aGlzCisgKiBmdW5jdGlvbiBhbGxvd3MgdGhlIG1hY2hpbmVyeSB0byBkaXNhbWJpZ3VhdGUgc2hvcnRlci10aGFuLXVuaXF1ZQorICogYWJicmV2aWF0ZWQgb2JqZWN0IG5hbWVzIGJldHdlZW4gY29tbWl0dGlzaCBhbmQgb3RoZXJzLgorICoKKyAqIE5vdGUgdGhhdCB0aGlzIGRvZXMgTk9UIGVycm9yIG91dCB3aGVuIHRoZSBuYW1lZCBvYmplY3QgaXMgbm90IGEKKyAqIGNvbW1pdHRpc2guIEl0IGlzIG1lcmVseSB0byBnaXZlIGEgaGludCB0byB0aGUgZGlzYW1iaWd1YXRpb24KKyAqIG1hY2hpbmVyeS4KKyAqLworaW50IGdldF9zaGExX2NvbW1pdHRpc2goY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgY2hhciAqc2hhMSkKK3sKKwlzdHJ1Y3Qgb2JqZWN0X2NvbnRleHQgdW51c2VkOworCXJldHVybiBnZXRfc2hhMV93aXRoX2NvbnRleHQobmFtZSwgR0VUX1NIQTFfQ09NTUlUVElTSCwKKwkJCQkgICAgIHNoYTEsICZ1bnVzZWQpOworfQorCitpbnQgZ2V0X3NoYTFfdHJlZWlzaChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBjaGFyICpzaGExKQoreworCXN0cnVjdCBvYmplY3RfY29udGV4dCB1bnVzZWQ7CisJcmV0dXJuIGdldF9zaGExX3dpdGhfY29udGV4dChuYW1lLCBHRVRfU0hBMV9UUkVFSVNILAorCQkJCSAgICAgc2hhMSwgJnVudXNlZCk7Cit9CisKK2ludCBnZXRfc2hhMV9jb21taXQoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgY2hhciAqc2hhMSkKK3sKKwlzdHJ1Y3Qgb2JqZWN0X2NvbnRleHQgdW51c2VkOworCXJldHVybiBnZXRfc2hhMV93aXRoX2NvbnRleHQobmFtZSwgR0VUX1NIQTFfQ09NTUlULAorCQkJCSAgICAgc2hhMSwgJnVudXNlZCk7Cit9CisKK2ludCBnZXRfc2hhMV90cmVlKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGNoYXIgKnNoYTEpCit7CisJc3RydWN0IG9iamVjdF9jb250ZXh0IHVudXNlZDsKKwlyZXR1cm4gZ2V0X3NoYTFfd2l0aF9jb250ZXh0KG5hbWUsIEdFVF9TSEExX1RSRUUsCisJCQkJICAgICBzaGExLCAmdW51c2VkKTsKK30KKworaW50IGdldF9zaGExX2Jsb2IoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgY2hhciAqc2hhMSkKK3sKKwlzdHJ1Y3Qgb2JqZWN0X2NvbnRleHQgdW51c2VkOworCXJldHVybiBnZXRfc2hhMV93aXRoX2NvbnRleHQobmFtZSwgR0VUX1NIQTFfQkxPQiwKKwkJCQkgICAgIHNoYTEsICZ1bnVzZWQpOwogfQogCiAvKiBNdXN0IGJlIGNhbGxlZCBvbmx5IHdoZW4gb2JqZWN0X25hbWU6ZmlsZW5hbWUgZG9lc24ndCBleGlzdC4gKi8KIHN0YXRpYyB2b2lkIGRpYWdub3NlX2ludmFsaWRfc2hhMV9wYXRoKGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJCQkgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsCiAJCQkJICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRyZWVfc2hhMSwKLQkJCQkgICAgICAgY29uc3QgY2hhciAqb2JqZWN0X25hbWUpCisJCQkJICAgICAgIGNvbnN0IGNoYXIgKm9iamVjdF9uYW1lLAorCQkJCSAgICAgICBpbnQgb2JqZWN0X25hbWVfbGVuKQogewogCXN0cnVjdCBzdGF0IHN0OwogCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CkBAIC05MjIsOCArMTE1NCw4IEBACiAJCXByZWZpeCA9ICIiOwogCiAJaWYgKCFsc3RhdChmaWxlbmFtZSwgJnN0KSkKLQkJZGllKCJQYXRoICclcycgZXhpc3RzIG9uIGRpc2ssIGJ1dCBub3QgaW4gJyVzJy4iLAotCQkgICAgZmlsZW5hbWUsIG9iamVjdF9uYW1lKTsKKwkJZGllKCJQYXRoICclcycgZXhpc3RzIG9uIGRpc2ssIGJ1dCBub3QgaW4gJyUuKnMnLiIsCisJCSAgICBmaWxlbmFtZSwgb2JqZWN0X25hbWVfbGVuLCBvYmplY3RfbmFtZSk7CiAJaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTk9URElSKSB7CiAJCWNoYXIgKmZ1bGxuYW1lID0geG1hbGxvYyhzdHJsZW4oZmlsZW5hbWUpCiAJCQkJCSAgICAgKyBzdHJsZW4ocHJlZml4KSArIDEpOwpAQCAtOTMzLDE2ICsxMTY1LDE2IEBACiAJCWlmICghZ2V0X3RyZWVfZW50cnkodHJlZV9zaGExLCBmdWxsbmFtZSwKIAkJCQkgICAgc2hhMSwgJm1vZGUpKSB7CiAJCQlkaWUoIlBhdGggJyVzJyBleGlzdHMsIGJ1dCBub3QgJyVzJy5cbiIKLQkJCSAgICAiRGlkIHlvdSBtZWFuICclczolcycgYWthICclczouLyVzJz8iLAorCQkJICAgICJEaWQgeW91IG1lYW4gJyUuKnM6JXMnIGFrYSAnJS4qczouLyVzJz8iLAogCQkJICAgIGZ1bGxuYW1lLAogCQkJICAgIGZpbGVuYW1lLAotCQkJICAgIG9iamVjdF9uYW1lLAorCQkJICAgIG9iamVjdF9uYW1lX2xlbiwgb2JqZWN0X25hbWUsCiAJCQkgICAgZnVsbG5hbWUsCi0JCQkgICAgb2JqZWN0X25hbWUsCisJCQkgICAgb2JqZWN0X25hbWVfbGVuLCBvYmplY3RfbmFtZSwKIAkJCSAgICBmaWxlbmFtZSk7CiAJCX0KLQkJZGllKCJQYXRoICclcycgZG9lcyBub3QgZXhpc3QgaW4gJyVzJyIsCi0JCSAgICBmaWxlbmFtZSwgb2JqZWN0X25hbWUpOworCQlkaWUoIlBhdGggJyVzJyBkb2VzIG5vdCBleGlzdCBpbiAnJS4qcyciLAorCQkgICAgZmlsZW5hbWUsIG9iamVjdF9uYW1lX2xlbiwgb2JqZWN0X25hbWUpOwogCX0KIH0KIApAQCAtMTAwNCwxNiArMTIzNiw2IEBACiB9CiAKIAotaW50IGdldF9zaGExX3dpdGhfbW9kZV8xKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGNoYXIgKnNoYTEsIHVuc2lnbmVkICptb2RlLAotCQkJIGludCBvbmx5X3RvX2RpZSwgY29uc3QgY2hhciAqcHJlZml4KQotewotCXN0cnVjdCBvYmplY3RfY29udGV4dCBvYzsKLQlpbnQgcmV0OwotCXJldCA9IGdldF9zaGExX3dpdGhfY29udGV4dF8xKG5hbWUsIHNoYTEsICZvYywgb25seV90b19kaWUsIHByZWZpeCk7Ci0JKm1vZGUgPSBvYy5tb2RlOwotCXJldHVybiByZXQ7Ci19Ci0KIHN0YXRpYyBjaGFyICpyZXNvbHZlX3JlbGF0aXZlX3BhdGgoY29uc3QgY2hhciAqcmVsKQogewogCWlmIChwcmVmaXhjbXAocmVsLCAiLi8iKSAmJiBwcmVmaXhjbXAocmVsLCAiLi4vIikpCkBAIC0xMDMxLDIwICsxMjUzLDI0IEBACiAJCQkgICByZWwpOwogfQogCi1pbnQgZ2V0X3NoYTFfd2l0aF9jb250ZXh0XzEoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgY2hhciAqc2hhMSwKLQkJCSAgICBzdHJ1Y3Qgb2JqZWN0X2NvbnRleHQgKm9jLAotCQkJICAgIGludCBvbmx5X3RvX2RpZSwgY29uc3QgY2hhciAqcHJlZml4KQorc3RhdGljIGludCBnZXRfc2hhMV93aXRoX2NvbnRleHRfMShjb25zdCBjaGFyICpuYW1lLAorCQkJCSAgIHVuc2lnbmVkIGZsYWdzLAorCQkJCSAgIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkgICB1bnNpZ25lZCBjaGFyICpzaGExLAorCQkJCSAgIHN0cnVjdCBvYmplY3RfY29udGV4dCAqb2MpCiB7CiAJaW50IHJldCwgYnJhY2tldF9kZXB0aDsKIAlpbnQgbmFtZWxlbiA9IHN0cmxlbihuYW1lKTsKIAljb25zdCBjaGFyICpjcDsKKwlpbnQgb25seV90b19kaWUgPSBmbGFncyAmIEdFVF9TSEExX09OTFlfVE9fRElFOwogCiAJbWVtc2V0KG9jLCAwLCBzaXplb2YoKm9jKSk7CiAJb2MtPm1vZGUgPSBTX0lGSU5WQUxJRDsKLQlyZXQgPSBnZXRfc2hhMV8xKG5hbWUsIG5hbWVsZW4sIHNoYTEpOworCXJldCA9IGdldF9zaGExXzEobmFtZSwgbmFtZWxlbiwgc2hhMSwgZmxhZ3MpOwogCWlmICghcmV0KQogCQlyZXR1cm4gcmV0OwotCS8qIHNoYTE6cGF0aCAtLT4gb2JqZWN0IG5hbWUgb2YgcGF0aCBpbiBlbnQgc2hhMQorCS8qCisJICogc2hhMTpwYXRoIC0tPiBvYmplY3QgbmFtZSBvZiBwYXRoIGluIGVudCBzaGExCiAJICogOnBhdGggLT4gb2JqZWN0IG5hbWUgb2YgYWJzb2x1dGUgcGF0aCBpbiBpbmRleAogCSAqIDouL3BhdGggLT4gb2JqZWN0IG5hbWUgb2YgcGF0aCByZWxhdGl2ZSB0byBjd2QgaW4gaW5kZXgKIAkgKiA6WzAtM106cGF0aCAtPiBvYmplY3QgbmFtZSBvZiBwYXRoIGluIGluZGV4IGF0IHN0YWdlCkBAIC0xMTEzLDEzICsxMzM5LDggQEAKIAl9CiAJaWYgKCpjcCA9PSAnOicpIHsKIAkJdW5zaWduZWQgY2hhciB0cmVlX3NoYTFbMjBdOwotCQljaGFyICpvYmplY3RfbmFtZSA9IE5VTEw7Ci0JCWlmIChvbmx5X3RvX2RpZSkgewotCQkJb2JqZWN0X25hbWUgPSB4bWFsbG9jKGNwLW5hbWUrMSk7Ci0JCQlzdHJuY3B5KG9iamVjdF9uYW1lLCBuYW1lLCBjcC1uYW1lKTsKLQkJCW9iamVjdF9uYW1lW2NwLW5hbWVdID0gJ1wwJzsKLQkJfQotCQlpZiAoIWdldF9zaGExXzEobmFtZSwgY3AtbmFtZSwgdHJlZV9zaGExKSkgeworCQlpbnQgbGVuID0gY3AgLSBuYW1lOworCQlpZiAoIWdldF9zaGExXzEobmFtZSwgbGVuLCB0cmVlX3NoYTEsIEdFVF9TSEExX1RSRUVJU0gpKSB7CiAJCQljb25zdCBjaGFyICpmaWxlbmFtZSA9IGNwKzE7CiAJCQljaGFyICpuZXdfZmlsZW5hbWUgPSBOVUxMOwogCkBAIC0xMTI3LDEwICsxMzQ4LDEwIEBACiAJCQlpZiAobmV3X2ZpbGVuYW1lKQogCQkJCWZpbGVuYW1lID0gbmV3X2ZpbGVuYW1lOwogCQkJcmV0ID0gZ2V0X3RyZWVfZW50cnkodHJlZV9zaGExLCBmaWxlbmFtZSwgc2hhMSwgJm9jLT5tb2RlKTsKLQkJCWlmIChvbmx5X3RvX2RpZSkgeworCQkJaWYgKHJldCAmJiBvbmx5X3RvX2RpZSkgewogCQkJCWRpYWdub3NlX2ludmFsaWRfc2hhMV9wYXRoKHByZWZpeCwgZmlsZW5hbWUsCi0JCQkJCQkJICAgdHJlZV9zaGExLCBvYmplY3RfbmFtZSk7Ci0JCQkJZnJlZShvYmplY3RfbmFtZSk7CisJCQkJCQkJICAgdHJlZV9zaGExLAorCQkJCQkJCSAgIG5hbWUsIGxlbik7CiAJCQl9CiAJCQloYXNoY3B5KG9jLT50cmVlLCB0cmVlX3NoYTEpOwogCQkJc3RybmNweShvYy0+cGF0aCwgZmlsZW5hbWUsCkBAIC0xMTQxLDggKzEzNjIsMjcgQEAKIAkJCXJldHVybiByZXQ7CiAJCX0gZWxzZSB7CiAJCQlpZiAob25seV90b19kaWUpCi0JCQkJZGllKCJJbnZhbGlkIG9iamVjdCBuYW1lICclcycuIiwgb2JqZWN0X25hbWUpOworCQkJCWRpZSgiSW52YWxpZCBvYmplY3QgbmFtZSAnJS4qcycuIiwgbGVuLCBuYW1lKTsKIAkJfQogCX0KIAlyZXR1cm4gcmV0OwogfQorCisvKgorICogQ2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4geW91IGtub3cgIm5hbWUiIGdpdmVuIGJ5IHRoZSBlbmQgdXNlciBtdXN0CisgKiBuYW1lIGFuIG9iamVjdCBidXQgaXQgZG9lc24ndDsgdGhlIGZ1bmN0aW9uIF9tYXlfIGRpZSB3aXRoIGEgYmV0dGVyCisgKiBkaWFnbm9zdGljIG1lc3NhZ2UgdGhhbiAibm8gc3VjaCBvYmplY3QgJ25hbWUnIiwgZS5nLiAiUGF0aCAnZG9jJyBkb2VzIG5vdAorICogZXhpc3QgaW4gJ0hFQUQnIiB3aGVuIGdpdmVuICJIRUFEOmRvYyIsIG9yIGl0IG1heSByZXR1cm4gaW4gd2hpY2ggY2FzZQorICogeW91IGhhdmUgYSBjaGFuY2UgdG8gZGlhZ25vc2UgdGhlIGVycm9yIGZ1cnRoZXIuCisgKi8KK3ZvaWQgbWF5YmVfZGllX29uX21pc3NwZWx0X29iamVjdF9uYW1lKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnByZWZpeCkKK3sKKwlzdHJ1Y3Qgb2JqZWN0X2NvbnRleHQgb2M7CisJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKKwlnZXRfc2hhMV93aXRoX2NvbnRleHRfMShuYW1lLCBHRVRfU0hBMV9PTkxZX1RPX0RJRSwgcHJlZml4LCBzaGExLCAmb2MpOworfQorCitpbnQgZ2V0X3NoYTFfd2l0aF9jb250ZXh0KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgZmxhZ3MsIHVuc2lnbmVkIGNoYXIgKnNoYTEsIHN0cnVjdCBvYmplY3RfY29udGV4dCAqb3JjKQoreworCXJldHVybiBnZXRfc2hhMV93aXRoX2NvbnRleHRfMShzdHIsIGZsYWdzLCBOVUxMLCBzaGExLCBvcmMpOworfQpkaWZmIC0tZ2l0IGEvc2hhbGxvdy5jIGIvc2hhbGxvdy5jCmluZGV4IGEwMzYzZGUuLmNiZTI1MjYgMTAwNjQ0Ci0tLSBhL3NoYWxsb3cuYworKysgYi9zaGFsbG93LmMKQEAgLTMsNiArMywxNiBAQAogI2luY2x1ZGUgInRhZy5oIgogCiBzdGF0aWMgaW50IGlzX3NoYWxsb3cgPSAtMTsKK3N0YXRpYyBzdHJ1Y3Qgc3RhdCBzaGFsbG93X3N0YXQ7CitzdGF0aWMgY2hhciAqYWx0ZXJuYXRlX3NoYWxsb3dfZmlsZTsKKwordm9pZCBzZXRfYWx0ZXJuYXRlX3NoYWxsb3dfZmlsZShjb25zdCBjaGFyICpwYXRoKQoreworCWlmIChpc19zaGFsbG93ICE9IC0xKQorCQlkaWUoIkJVRzogaXNfcmVwb3NpdG9yeV9zaGFsbG93IG11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgc2V0X2FsdGVybmF0ZV9zaGFsbG93X2ZpbGUiKTsKKwlmcmVlKGFsdGVybmF0ZV9zaGFsbG93X2ZpbGUpOworCWFsdGVybmF0ZV9zaGFsbG93X2ZpbGUgPSBwYXRoID8geHN0cmR1cChwYXRoKSA6IE5VTEw7Cit9CiAKIGludCByZWdpc3Rlcl9zaGFsbG93KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7CkBAIC0yMSwxMiArMzEsMjEgQEAKIHsKIAlGSUxFICpmcDsKIAljaGFyIGJ1ZlsxMDI0XTsKKwljb25zdCBjaGFyICpwYXRoID0gYWx0ZXJuYXRlX3NoYWxsb3dfZmlsZTsKIAogCWlmIChpc19zaGFsbG93ID49IDApCiAJCXJldHVybiBpc19zaGFsbG93OwogCi0JZnAgPSBmb3BlbihnaXRfcGF0aCgic2hhbGxvdyIpLCAiciIpOwotCWlmICghZnApIHsKKwlpZiAoIXBhdGgpCisJCXBhdGggPSBnaXRfcGF0aCgic2hhbGxvdyIpOworCS8qCisJICogZmV0Y2gtcGFjayBzZXRzICctLXNoYWxsb3ctZmlsZSAiIicgYXMgYW4gaW5kaWNhdG9yIHRoYXQgbm8KKwkgKiBzaGFsbG93IGZpbGUgc2hvdWxkIGJlIHVzZWQuIFdlIGNvdWxkIGp1c3Qgb3BlbiBpdCBhbmQgaXQKKwkgKiB3aWxsIGxpa2VseSBmYWlsLiBCdXQgbGV0J3MgZG8gYW4gZXhwbGljaXQgY2hlY2sgaW5zdGVhZC4KKwkgKi8KKwlpZiAoISpwYXRoIHx8CisJICAgIHN0YXQocGF0aCwgJnNoYWxsb3dfc3RhdCkgfHwKKwkgICAgKGZwID0gZm9wZW4ocGF0aCwgInIiKSkgPT0gTlVMTCkgewogCQlpc19zaGFsbG93ID0gMDsKIAkJcmV0dXJuIGlzX3NoYWxsb3c7CiAJfQpAQCAtNzIsOCArOTEsMTQgQEAKIAkJfQogCQlpZiAocGFyc2VfY29tbWl0KGNvbW1pdCkpCiAJCQlkaWUoImludmFsaWQgY29tbWl0Iik7Ci0JCWNvbW1pdC0+b2JqZWN0LmZsYWdzIHw9IG5vdF9zaGFsbG93X2ZsYWc7CiAJCWN1cl9kZXB0aCsrOworCQlpZiAoY3VyX2RlcHRoID49IGRlcHRoKSB7CisJCQljb21taXRfbGlzdF9pbnNlcnQoY29tbWl0LCAmcmVzdWx0KTsKKwkJCWNvbW1pdC0+b2JqZWN0LmZsYWdzIHw9IHNoYWxsb3dfZmxhZzsKKwkJCWNvbW1pdCA9IE5VTEw7CisJCQljb250aW51ZTsKKwkJfQorCQljb21taXQtPm9iamVjdC5mbGFncyB8PSBub3Rfc2hhbGxvd19mbGFnOwogCQlmb3IgKHAgPSBjb21taXQtPnBhcmVudHMsIGNvbW1pdCA9IE5VTEw7IHA7IHAgPSBwLT5uZXh0KSB7CiAJCQlpZiAoIXAtPml0ZW0tPnV0aWwpIHsKIAkJCQlpbnQgKnBvaW50ZXIgPSB4bWFsbG9jKHNpemVvZihpbnQpKTsKQEAgLTEwMiwzICsxMjcsMjIgQEAKIAogCXJldHVybiByZXN1bHQ7CiB9CisKK3ZvaWQgY2hlY2tfc2hhbGxvd19maWxlX2Zvcl91cGRhdGUodm9pZCkKK3sKKwlzdHJ1Y3Qgc3RhdCBzdDsKKworCWlmICghaXNfc2hhbGxvdykKKwkJcmV0dXJuOworCWVsc2UgaWYgKGlzX3NoYWxsb3cgPT0gLTEpCisJCWRpZSgiQlVHOiBzaGFsbG93IG11c3QgYmUgaW5pdGlhbGl6ZWQgYnkgbm93Iik7CisKKwlpZiAoc3RhdChnaXRfcGF0aCgic2hhbGxvdyIpLCAmc3QpKQorCQlkaWUoInNoYWxsb3cgZmlsZSB3YXMgcmVtb3ZlZCBkdXJpbmcgZmV0Y2giKTsKKwllbHNlIGlmIChzdC5zdF9tdGltZSAhPSBzaGFsbG93X3N0YXQuc3RfbXRpbWUKKyNpZmRlZiBVU0VfTlNFQworCQkgfHwgU1RfTVRJTUVfTlNFQyhzdCkgIT0gU1RfTVRJTUVfTlNFQyhzaGFsbG93X3N0YXQpCisjZW5kaWYKKwkJICAgKQorCQlkaWUoInNoYWxsb3cgZmlsZSB3YXMgY2hhbmdlZCBkdXJpbmcgZmV0Y2giKTsKK30KZGlmZiAtLWdpdCBhL3NoZWxsLmMgYi9zaGVsbC5jCmluZGV4IDg0YjIzN2YuLjE0Mjk4NzAgMTAwNjQ0Ci0tLSBhL3NoZWxsLmMKKysrIGIvc2hlbGwuYwpAQCAtNiw2ICs2LDcgQEAKIAogI2RlZmluZSBDT01NQU5EX0RJUiAiZ2l0LXNoZWxsLWNvbW1hbmRzIgogI2RlZmluZSBIRUxQX0NPTU1BTkQgQ09NTUFORF9ESVIgIi9oZWxwIgorI2RlZmluZSBOT0xPR0lOX0NPTU1BTkQgQ09NTUFORF9ESVIgIi9uby1pbnRlcmFjdGl2ZS1sb2dpbiIKIAogc3RhdGljIGludCBkb19nZW5lcmljX2NtZChjb25zdCBjaGFyICptZSwgY2hhciAqYXJnKQogewpAQCAtNjUsNiArNjYsMTggQEAKIHsKIAlpbnQgZG9uZSA9IDA7CiAJc3RhdGljIGNvbnN0IGNoYXIgKmhlbHBfYXJndltdID0geyBIRUxQX0NPTU1BTkQsIE5VTEwgfTsKKworCWlmICghYWNjZXNzKE5PTE9HSU5fQ09NTUFORCwgRl9PSykpIHsKKwkJLyogSW50ZXJhY3RpdmUgbG9naW4gZGlzYWJsZWQuICovCisJCWNvbnN0IGNoYXIgKmFyZ3ZbXSA9IHsgTk9MT0dJTl9DT01NQU5ELCBOVUxMIH07CisJCWludCBzdGF0dXM7CisKKwkJc3RhdHVzID0gcnVuX2NvbW1hbmRfdl9vcHQoYXJndiwgMCk7CisJCWlmIChzdGF0dXMgPCAwKQorCQkJZXhpdCgxMjcpOworCQlleGl0KHN0YXR1cyk7CisJfQorCiAJLyogUHJpbnQgaGVscCBpZiBlbmFibGVkICovCiAJcnVuX2NvbW1hbmRfdl9vcHQoaGVscF9hcmd2LCBSVU5fU0lMRU5UX0VYRUNfRkFJTFVSRSk7CiAKZGlmZiAtLWdpdCBhL3NpZGViYW5kLmMgYi9zaWRlYmFuZC5jCmluZGV4IGQ1ZmZhMWMuLmQxMTI1ZjUgMTAwNjQ0Ci0tLSBhL3NpZGViYW5kLmMKKysrIGIvc2lkZWJhbmQuYwpAQCAtMSwzICsxLDQgQEAKKyNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgInBrdC1saW5lLmgiCiAjaW5jbHVkZSAic2lkZWJhbmQuaCIKIApAQCAtMzcsNyArMzgsNyBAQAogCiAJd2hpbGUgKDEpIHsKIAkJaW50IGJhbmQsIGxlbjsKLQkJbGVuID0gcGFja2V0X3JlYWRfbGluZShpbl9zdHJlYW0sIGJ1ZiArIHBmLCBMQVJHRV9QQUNLRVRfTUFYKTsKKwkJbGVuID0gcGFja2V0X3JlYWQoaW5fc3RyZWFtLCBOVUxMLCBOVUxMLCBidWYgKyBwZiwgTEFSR0VfUEFDS0VUX01BWCwgMCk7CiAJCWlmIChsZW4gPT0gMCkKIAkJCWJyZWFrOwogCQlpZiAobGVuIDwgMSkgewpAQCAtMTA4LDcgKzEwOSw3IEBACiAJCQl9IHdoaWxlIChsZW4pOwogCQkJY29udGludWU7CiAJCWNhc2UgMToKLQkJCXNhZmVfd3JpdGUob3V0LCBidWYgKyBwZisxLCBsZW4pOworCQkJd3JpdGVfb3JfZGllKG91dCwgYnVmICsgcGYrMSwgbGVuKTsKIAkJCWNvbnRpbnVlOwogCQlkZWZhdWx0OgogCQkJZnByaW50ZihzdGRlcnIsICIlczogcHJvdG9jb2wgZXJyb3I6IGJhZCBiYW5kICMlZFxuIiwKQEAgLTEzOCwxMiArMTM5LDEyIEBACiAJCWlmICgwIDw9IGJhbmQpIHsKIAkJCXNwcmludGYoaGRyLCAiJTA0eCIsIG4gKyA1KTsKIAkJCWhkcls0XSA9IGJhbmQ7Ci0JCQlzYWZlX3dyaXRlKGZkLCBoZHIsIDUpOworCQkJd3JpdGVfb3JfZGllKGZkLCBoZHIsIDUpOwogCQl9IGVsc2UgewogCQkJc3ByaW50ZihoZHIsICIlMDR4IiwgbiArIDQpOwotCQkJc2FmZV93cml0ZShmZCwgaGRyLCA0KTsKKwkJCXdyaXRlX29yX2RpZShmZCwgaGRyLCA0KTsKIAkJfQotCQlzYWZlX3dyaXRlKGZkLCBwLCBuKTsKKwkJd3JpdGVfb3JfZGllKGZkLCBwLCBuKTsKIAkJcCArPSBuOwogCQlzeiAtPSBuOwogCX0KZGlmZiAtLWdpdCBhL3NpZGViYW5kLmggYi9zaWRlYmFuZC5oCmluZGV4IGQ3MmRiMzUuLmU0NmJlZDAgMTAwNjQ0Ci0tLSBhL3NpZGViYW5kLmgKKysrIGIvc2lkZWJhbmQuaApAQCAtNCw5ICs0LDYgQEAKICNkZWZpbmUgU0lERUJBTkRfUFJPVE9DT0xfRVJST1IgLTIKICNkZWZpbmUgU0lERUJBTkRfUkVNT1RFX0VSUk9SIC0xCiAKLSNkZWZpbmUgREVGQVVMVF9QQUNLRVRfTUFYIDEwMDAKLSNkZWZpbmUgTEFSR0VfUEFDS0VUX01BWCA2NTUyMAotCiBpbnQgcmVjdl9zaWRlYmFuZChjb25zdCBjaGFyICptZSwgaW50IGluX3N0cmVhbSwgaW50IG91dCk7CiBzc2l6ZV90IHNlbmRfc2lkZWJhbmQoaW50IGZkLCBpbnQgYmFuZCwgY29uc3QgY2hhciAqZGF0YSwgc3NpemVfdCBzeiwgaW50IHBhY2tldF9tYXgpOwogCmRpZmYgLS1naXQgYS9zdHJidWYuYyBiL3N0cmJ1Zi5jCmluZGV4IGVjODgyNjYuLjExNzBkMDEgMTAwNjQ0Ci0tLSBhL3N0cmJ1Zi5jCisrKyBiL3N0cmJ1Zi5jCkBAIC00NCw3ICs0NCw5IEBACiAKIGNoYXIgKnN0cmJ1Zl9kZXRhY2goc3RydWN0IHN0cmJ1ZiAqc2IsIHNpemVfdCAqc3opCiB7Ci0JY2hhciAqcmVzID0gc2ItPmFsbG9jID8gc2ItPmJ1ZiA6IE5VTEw7CisJY2hhciAqcmVzOworCXN0cmJ1Zl9ncm93KHNiLCAwKTsKKwlyZXMgPSBzYi0+YnVmOwogCWlmIChzeikKIAkJKnN6ID0gc2ItPmxlbjsKIAlzdHJidWZfaW5pdChzYiwgMCk7CkBAIC0xMDQsMzUgKzEwNiwzMCBAQAogCXNiLT5idWZbc2ItPmxlbl0gPSAnXDAnOwogfQogCi1zdHJ1Y3Qgc3RyYnVmICoqc3RyYnVmX3NwbGl0X2J1Zihjb25zdCBjaGFyICpzdHIsIHNpemVfdCBzbGVuLCBpbnQgZGVsaW0sIGludCBtYXgpCitzdHJ1Y3Qgc3RyYnVmICoqc3RyYnVmX3NwbGl0X2J1Zihjb25zdCBjaGFyICpzdHIsIHNpemVfdCBzbGVuLAorCQkJCSBpbnQgdGVybWluYXRvciwgaW50IG1heCkKIHsKLQlpbnQgYWxsb2MgPSAyLCBwb3MgPSAwOwotCWNvbnN0IGNoYXIgKm4sICpwOwotCXN0cnVjdCBzdHJidWYgKipyZXQ7CisJc3RydWN0IHN0cmJ1ZiAqKnJldCA9IE5VTEw7CisJc2l6ZV90IG5yID0gMCwgYWxsb2MgPSAwOwogCXN0cnVjdCBzdHJidWYgKnQ7CiAKLQlyZXQgPSB4Y2FsbG9jKGFsbG9jLCBzaXplb2Yoc3RydWN0IHN0cmJ1ZiAqKSk7Ci0JcCA9IG4gPSBzdHI7Ci0Jd2hpbGUgKG4gPCBzdHIgKyBzbGVuKSB7Ci0JCWludCBsZW47Ci0JCWlmIChtYXggPD0gMCB8fCBwb3MgKyAxIDwgbWF4KQotCQkJbiA9IG1lbWNocihuLCBkZWxpbSwgc2xlbiAtIChuIC0gc3RyKSk7Ci0JCWVsc2UKLQkJCW4gPSBOVUxMOwotCQlpZiAocG9zICsgMSA+PSBhbGxvYykgewotCQkJYWxsb2MgPSBhbGxvYyAqIDI7Ci0JCQlyZXQgPSB4cmVhbGxvYyhyZXQsIHNpemVvZihzdHJ1Y3Qgc3RyYnVmICopICogYWxsb2MpOworCXdoaWxlIChzbGVuKSB7CisJCWludCBsZW4gPSBzbGVuOworCQlpZiAobWF4IDw9IDAgfHwgbnIgKyAxIDwgbWF4KSB7CisJCQljb25zdCBjaGFyICplbmQgPSBtZW1jaHIoc3RyLCB0ZXJtaW5hdG9yLCBzbGVuKTsKKwkJCWlmIChlbmQpCisJCQkJbGVuID0gZW5kIC0gc3RyICsgMTsKIAkJfQotCQlpZiAoIW4pCi0JCQluID0gc3RyICsgc2xlbiAtIDE7Ci0JCWxlbiA9IG4gLSBwICsgMTsKIAkJdCA9IHhtYWxsb2Moc2l6ZW9mKHN0cnVjdCBzdHJidWYpKTsKIAkJc3RyYnVmX2luaXQodCwgbGVuKTsKLQkJc3RyYnVmX2FkZCh0LCBwLCBsZW4pOwotCQlyZXRbcG9zXSA9IHQ7Ci0JCXJldFsrK3Bvc10gPSBOVUxMOwotCQlwID0gKytuOworCQlzdHJidWZfYWRkKHQsIHN0ciwgbGVuKTsKKwkJQUxMT0NfR1JPVyhyZXQsIG5yICsgMiwgYWxsb2MpOworCQlyZXRbbnIrK10gPSB0OworCQlzdHIgKz0gbGVuOworCQlzbGVuIC09IGxlbjsKIAl9CisJQUxMT0NfR1JPVyhyZXQsIG5yICsgMSwgYWxsb2MpOyAvKiBJbiBjYXNlIHN0cmluZyB3YXMgZW1wdHkgKi8KKwlyZXRbbnJdID0gTlVMTDsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yMDcsNiArMjA0LDU0IEBACiAJdmFfZW5kKGFwKTsKIH0KIAorc3RhdGljIHZvaWQgYWRkX2xpbmVzKHN0cnVjdCBzdHJidWYgKm91dCwKKwkJCWNvbnN0IGNoYXIgKnByZWZpeDEsCisJCQljb25zdCBjaGFyICpwcmVmaXgyLAorCQkJY29uc3QgY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSkKK3sKKwl3aGlsZSAoc2l6ZSkgeworCQljb25zdCBjaGFyICpwcmVmaXg7CisJCWNvbnN0IGNoYXIgKm5leHQgPSBtZW1jaHIoYnVmLCAnXG4nLCBzaXplKTsKKwkJbmV4dCA9IG5leHQgPyAobmV4dCArIDEpIDogKGJ1ZiArIHNpemUpOworCisJCXByZWZpeCA9IChwcmVmaXgyICYmIGJ1ZlswXSA9PSAnXG4nKSA/IHByZWZpeDIgOiBwcmVmaXgxOworCQlzdHJidWZfYWRkc3RyKG91dCwgcHJlZml4KTsKKwkJc3RyYnVmX2FkZChvdXQsIGJ1ZiwgbmV4dCAtIGJ1Zik7CisJCXNpemUgLT0gbmV4dCAtIGJ1ZjsKKwkJYnVmID0gbmV4dDsKKwl9CisJc3RyYnVmX2NvbXBsZXRlX2xpbmUob3V0KTsKK30KKwordm9pZCBzdHJidWZfYWRkX2NvbW1lbnRlZF9saW5lcyhzdHJ1Y3Qgc3RyYnVmICpvdXQsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpCit7CisJc3RhdGljIGNoYXIgcHJlZml4MVszXTsKKwlzdGF0aWMgY2hhciBwcmVmaXgyWzJdOworCisJaWYgKHByZWZpeDFbMF0gIT0gY29tbWVudF9saW5lX2NoYXIpIHsKKwkJc3ByaW50ZihwcmVmaXgxLCAiJWMgIiwgY29tbWVudF9saW5lX2NoYXIpOworCQlzcHJpbnRmKHByZWZpeDIsICIlYyIsIGNvbW1lbnRfbGluZV9jaGFyKTsKKwl9CisJYWRkX2xpbmVzKG91dCwgcHJlZml4MSwgcHJlZml4MiwgYnVmLCBzaXplKTsKK30KKwordm9pZCBzdHJidWZfY29tbWVudGVkX2FkZGYoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCXZhX2xpc3QgcGFyYW1zOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisJaW50IGluY29tcGxldGVfbGluZSA9IHNiLT5sZW4gJiYgc2ItPmJ1ZltzYi0+bGVuIC0gMV0gIT0gJ1xuJzsKKworCXZhX3N0YXJ0KHBhcmFtcywgZm10KTsKKwlzdHJidWZfdmFkZGYoJmJ1ZiwgZm10LCBwYXJhbXMpOworCXZhX2VuZChwYXJhbXMpOworCisJc3RyYnVmX2FkZF9jb21tZW50ZWRfbGluZXMoc2IsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworCWlmIChpbmNvbXBsZXRlX2xpbmUpCisJCXNiLT5idWZbLS1zYi0+bGVuXSA9ICdcMCc7CisKKwlzdHJidWZfcmVsZWFzZSgmYnVmKTsKK30KKwogdm9pZCBzdHJidWZfdmFkZGYoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCkKIHsKIAlpbnQgbGVuOwpAQCAtNDE3LDE1ICs0NjIsMzMgQEAKIHZvaWQgc3RyYnVmX2FkZF9saW5lcyhzdHJ1Y3Qgc3RyYnVmICpvdXQsIGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJICAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSkKIHsKLQl3aGlsZSAoc2l6ZSkgewotCQljb25zdCBjaGFyICpuZXh0ID0gbWVtY2hyKGJ1ZiwgJ1xuJywgc2l6ZSk7Ci0JCW5leHQgPSBuZXh0ID8gKG5leHQgKyAxKSA6IChidWYgKyBzaXplKTsKLQkJc3RyYnVmX2FkZHN0cihvdXQsIHByZWZpeCk7Ci0JCXN0cmJ1Zl9hZGQob3V0LCBidWYsIG5leHQgLSBidWYpOwotCQlzaXplIC09IG5leHQgLSBidWY7Ci0JCWJ1ZiA9IG5leHQ7CisJYWRkX2xpbmVzKG91dCwgcHJlZml4LCBOVUxMLCBidWYsIHNpemUpOworfQorCit2b2lkIHN0cmJ1Zl9hZGRzdHJfeG1sX3F1b3RlZChzdHJ1Y3Qgc3RyYnVmICpidWYsIGNvbnN0IGNoYXIgKnMpCit7CisJd2hpbGUgKCpzKSB7CisJCXNpemVfdCBsZW4gPSBzdHJjc3BuKHMsICJcIjw+JiIpOworCQlzdHJidWZfYWRkKGJ1ZiwgcywgbGVuKTsKKwkJcyArPSBsZW47CisJCXN3aXRjaCAoKnMpIHsKKwkJY2FzZSAnIic6CisJCQlzdHJidWZfYWRkc3RyKGJ1ZiwgIiZxdW90OyIpOworCQkJYnJlYWs7CisJCWNhc2UgJzwnOgorCQkJc3RyYnVmX2FkZHN0cihidWYsICImbHQ7Iik7CisJCQlicmVhazsKKwkJY2FzZSAnPic6CisJCQlzdHJidWZfYWRkc3RyKGJ1ZiwgIiZndDsiKTsKKwkJCWJyZWFrOworCQljYXNlICcmJzoKKwkJCXN0cmJ1Zl9hZGRzdHIoYnVmLCAiJmFtcDsiKTsKKwkJCWJyZWFrOworCQljYXNlIDA6CisJCQlyZXR1cm47CisJCX0KKwkJcysrOwogCX0KLQlzdHJidWZfY29tcGxldGVfbGluZShvdXQpOwogfQogCiBzdGF0aWMgaW50IGlzX3JmYzM5ODZfcmVzZXJ2ZWQoY2hhciBjaCkKQEAgLTQ0NSw4ICs1MDgsOCBAQAogCQljaCA9PSAnLScgfHwgY2ggPT0gJ18nIHx8IGNoID09ICcuJyB8fCBjaCA9PSAnfic7CiB9CiAKLXZvaWQgc3RyYnVmX2FkZF91cmxlbmNvZGUoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sCi0JCQkgIGludCByZXNlcnZlZCkKK3N0YXRpYyB2b2lkIHN0cmJ1Zl9hZGRfdXJsZW5jb2RlKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLAorCQkJCSBpbnQgcmVzZXJ2ZWQpCiB7CiAJc3RyYnVmX2dyb3coc2IsIGxlbik7CiAJd2hpbGUgKGxlbi0tKSB7CkBAIC00NjUsMTMgKzUyOCwyMyBAQAogCXN0cmJ1Zl9hZGRfdXJsZW5jb2RlKHNiLCBzLCBzdHJsZW4ocyksIHJlc2VydmVkKTsKIH0KIAotdm9pZCBzdHJidWZfYWRkZl9sbihzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqZm10LCAuLi4pCit2b2lkIHN0cmJ1Zl9odW1hbmlzZV9ieXRlcyhzdHJ1Y3Qgc3RyYnVmICpidWYsIG9mZl90IGJ5dGVzKQogewotCXZhX2xpc3QgYXA7Ci0JdmFfc3RhcnQoYXAsIGZtdCk7Ci0Jc3RyYnVmX3ZhZGRmKHNiLCBmbXQsIGFwKTsKLQl2YV9lbmQoYXApOwotCXN0cmJ1Zl9hZGRjaChzYiwgJ1xuJyk7CisJaWYgKGJ5dGVzID4gMSA8PCAzMCkgeworCQlzdHJidWZfYWRkZihidWYsICIldS4lMi4ydSBHaUIiLAorCQkJICAgIChpbnQpKGJ5dGVzID4+IDMwKSwKKwkJCSAgICAoaW50KShieXRlcyAmICgoMSA8PCAzMCkgLSAxKSkgLyAxMDczNzQxOSk7CisJfSBlbHNlIGlmIChieXRlcyA+IDEgPDwgMjApIHsKKwkJaW50IHggPSBieXRlcyArIDUyNDM7ICAvKiBmb3Igcm91bmRpbmcgKi8KKwkJc3RyYnVmX2FkZGYoYnVmLCAiJXUuJTIuMnUgTWlCIiwKKwkJCSAgICB4ID4+IDIwLCAoKHggJiAoKDEgPDwgMjApIC0gMSkpICogMTAwKSA+PiAyMCk7CisJfSBlbHNlIGlmIChieXRlcyA+IDEgPDwgMTApIHsKKwkJaW50IHggPSBieXRlcyArIDU7ICAvKiBmb3Igcm91bmRpbmcgKi8KKwkJc3RyYnVmX2FkZGYoYnVmLCAiJXUuJTIuMnUgS2lCIiwKKwkJCSAgICB4ID4+IDEwLCAoKHggJiAoKDEgPDwgMTApIC0gMSkpICogMTAwKSA+PiAxMCk7CisJfSBlbHNlIHsKKwkJc3RyYnVmX2FkZGYoYnVmLCAiJXUgYnl0ZXMiLCAoaW50KWJ5dGVzKTsKKwl9CiB9CiAKIGludCBwcmludGZfbG4oY29uc3QgY2hhciAqZm10LCAuLi4pCmRpZmYgLS1naXQgYS9zdHJidWYuaCBiL3N0cmJ1Zi5oCmluZGV4IGI4ODhkNDAuLjczZTgwY2UgMTAwNjQ0Ci0tLSBhL3N0cmJ1Zi5oCisrKyBiL3N0cmJ1Zi5oCkBAIC00NCwyMiArNDQsNTYgQEAKIGV4dGVybiB2b2lkIHN0cmJ1Zl9sdHJpbShzdHJ1Y3Qgc3RyYnVmICopOwogZXh0ZXJuIGludCBzdHJidWZfY21wKGNvbnN0IHN0cnVjdCBzdHJidWYgKiwgY29uc3Qgc3RydWN0IHN0cmJ1ZiAqKTsKIAorLyoKKyAqIFNwbGl0IHN0ciAob2YgbGVuZ3RoIHNsZW4pIGF0IHRoZSBzcGVjaWZpZWQgdGVybWluYXRvciBjaGFyYWN0ZXIuCisgKiBSZXR1cm4gYSBudWxsLXRlcm1pbmF0ZWQgYXJyYXkgb2YgcG9pbnRlcnMgdG8gc3RyYnVmIG9iamVjdHMKKyAqIGhvbGRpbmcgdGhlIHN1YnN0cmluZ3MuICBUaGUgc3Vic3RyaW5ncyBpbmNsdWRlIHRoZSB0ZXJtaW5hdG9yLAorICogZXhjZXB0IGZvciB0aGUgbGFzdCBzdWJzdHJpbmcsIHdoaWNoIG1pZ2h0IGJlIHVudGVybWluYXRlZCBpZiB0aGUKKyAqIG9yaWdpbmFsIHN0cmluZyBkaWQgbm90IGVuZCB3aXRoIGEgdGVybWluYXRvci4gIElmIG1heCBpcyBwb3NpdGl2ZSwKKyAqIHRoZW4gc3BsaXQgdGhlIHN0cmluZyBpbnRvIGF0IG1vc3QgbWF4IHN1YnN0cmluZ3MgKHdpdGggdGhlIGxhc3QKKyAqIHN1YnN0cmluZyBjb250YWluaW5nIGV2ZXJ5dGhpbmcgZm9sbG93aW5nIHRoZSAobWF4LTEpdGggdGVybWluYXRvcgorICogY2hhcmFjdGVyKS4KKyAqCisgKiBGb3IgbGlnaHRlci13ZWlnaHQgYWx0ZXJuYXRpdmVzLCBzZWUgc3RyaW5nX2xpc3Rfc3BsaXQoKSBhbmQKKyAqIHN0cmluZ19saXN0X3NwbGl0X2luX3BsYWNlKCkuCisgKi8KIGV4dGVybiBzdHJ1Y3Qgc3RyYnVmICoqc3RyYnVmX3NwbGl0X2J1Zihjb25zdCBjaGFyICosIHNpemVfdCwKLQkJCQkJaW50IGRlbGltLCBpbnQgbWF4KTsKKwkJCQkJaW50IHRlcm1pbmF0b3IsIGludCBtYXgpOworCisvKgorICogU3BsaXQgYSBOVUwtdGVybWluYXRlZCBzdHJpbmcgYXQgdGhlIHNwZWNpZmllZCB0ZXJtaW5hdG9yCisgKiBjaGFyYWN0ZXIuICBTZWUgc3RyYnVmX3NwbGl0X2J1ZigpIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICovCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBzdHJidWYgKipzdHJidWZfc3BsaXRfc3RyKGNvbnN0IGNoYXIgKnN0ciwKLQkJCQkJICAgICAgIGludCBkZWxpbSwgaW50IG1heCkKKwkJCQkJICAgICAgIGludCB0ZXJtaW5hdG9yLCBpbnQgbWF4KQogewotCXJldHVybiBzdHJidWZfc3BsaXRfYnVmKHN0ciwgc3RybGVuKHN0ciksIGRlbGltLCBtYXgpOworCXJldHVybiBzdHJidWZfc3BsaXRfYnVmKHN0ciwgc3RybGVuKHN0ciksIHRlcm1pbmF0b3IsIG1heCk7CiB9CisKKy8qCisgKiBTcGxpdCBhIHN0cmJ1ZiBhdCB0aGUgc3BlY2lmaWVkIHRlcm1pbmF0b3IgY2hhcmFjdGVyLiAgU2VlCisgKiBzdHJidWZfc3BsaXRfYnVmKCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgKi8KIHN0YXRpYyBpbmxpbmUgc3RydWN0IHN0cmJ1ZiAqKnN0cmJ1Zl9zcGxpdF9tYXgoY29uc3Qgc3RydWN0IHN0cmJ1ZiAqc2IsCi0JCQkJCQlpbnQgZGVsaW0sIGludCBtYXgpCisJCQkJCQlpbnQgdGVybWluYXRvciwgaW50IG1heCkKIHsKLQlyZXR1cm4gc3RyYnVmX3NwbGl0X2J1ZihzYi0+YnVmLCBzYi0+bGVuLCBkZWxpbSwgbWF4KTsKKwlyZXR1cm4gc3RyYnVmX3NwbGl0X2J1ZihzYi0+YnVmLCBzYi0+bGVuLCB0ZXJtaW5hdG9yLCBtYXgpOwogfQotc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3RyYnVmICoqc3RyYnVmX3NwbGl0KGNvbnN0IHN0cnVjdCBzdHJidWYgKnNiLCBpbnQgZGVsaW0pCisKKy8qCisgKiBTcGxpdCBhIHN0cmJ1ZiBhdCB0aGUgc3BlY2lmaWVkIHRlcm1pbmF0b3IgY2hhcmFjdGVyLiAgU2VlCisgKiBzdHJidWZfc3BsaXRfYnVmKCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgKi8KK3N0YXRpYyBpbmxpbmUgc3RydWN0IHN0cmJ1ZiAqKnN0cmJ1Zl9zcGxpdChjb25zdCBzdHJ1Y3Qgc3RyYnVmICpzYiwKKwkJCQkJICAgaW50IHRlcm1pbmF0b3IpCiB7Ci0JcmV0dXJuIHN0cmJ1Zl9zcGxpdF9tYXgoc2IsIGRlbGltLCAwKTsKKwlyZXR1cm4gc3RyYnVmX3NwbGl0X21heChzYiwgdGVybWluYXRvciwgMCk7CiB9CisKKy8qCisgKiBGcmVlIGEgTlVMTC10ZXJtaW5hdGVkIGxpc3Qgb2Ygc3RyYnVmcyAoZm9yIGV4YW1wbGUsIHRoZSByZXR1cm4KKyAqIHZhbHVlcyBvZiB0aGUgc3RyYnVmX3NwbGl0KigpIGZ1bmN0aW9ucykuCisgKi8KIGV4dGVybiB2b2lkIHN0cmJ1Zl9saXN0X2ZyZWUoc3RydWN0IHN0cmJ1ZiAqKik7CiAKIC8qLS0tLS0gYWRkIGRhdGEgaW4geW91ciBidWZmZXIgLS0tLS0qLwpAQCAtNzYsNiArMTEwLDggQEAKIGV4dGVybiB2b2lkIHN0cmJ1Zl9zcGxpY2Uoc3RydWN0IHN0cmJ1ZiAqLCBzaXplX3QgcG9zLCBzaXplX3QgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICosIHNpemVfdCk7CiAKK2V4dGVybiB2b2lkIHN0cmJ1Zl9hZGRfY29tbWVudGVkX2xpbmVzKHN0cnVjdCBzdHJidWYgKm91dCwgY29uc3QgY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSk7CisKIGV4dGVybiB2b2lkIHN0cmJ1Zl9hZGQoc3RydWN0IHN0cmJ1ZiAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CiBzdGF0aWMgaW5saW5lIHZvaWQgc3RyYnVmX2FkZHN0cihzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqcykgewogCXN0cmJ1Zl9hZGQoc2IsIHMsIHN0cmxlbihzKSk7CkBAIC05NywxMyArMTMzLDE5IEBACiAKIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLDIsMykpKQogZXh0ZXJuIHZvaWQgc3RyYnVmX2FkZGYoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK19fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAyLCAzKSkpCitleHRlcm4gdm9pZCBzdHJidWZfY29tbWVudGVkX2FkZGYoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLDIsMCkpKQogZXh0ZXJuIHZvaWQgc3RyYnVmX3ZhZGRmKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXApOwotX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsMiwzKSkpCi1leHRlcm4gdm9pZCBzdHJidWZfYWRkZl9sbihzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwogCiBleHRlcm4gdm9pZCBzdHJidWZfYWRkX2xpbmVzKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpOwogCisvKgorICogQXBwZW5kIHMgdG8gc2IsIHdpdGggdGhlIGNoYXJhY3RlcnMgJzwnLCAnPicsICcmJyBhbmQgJyInIGNvbnZlcnRlZAorICogaW50byBYTUwgZW50aXRpZXMuCisgKi8KK2V4dGVybiB2b2lkIHN0cmJ1Zl9hZGRzdHJfeG1sX3F1b3RlZChzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqcyk7CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBzdHJidWZfY29tcGxldGVfbGluZShzdHJ1Y3Qgc3RyYnVmICpzYikKIHsKIAlpZiAoc2ItPmxlbiAmJiBzYi0+YnVmW3NiLT5sZW4gLSAxXSAhPSAnXG4nKQpAQCAtMTI2LDEwICsxNjgsOSBAQAogZXh0ZXJuIGludCBzdHJidWZfYnJhbmNobmFtZShzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqbmFtZSk7CiBleHRlcm4gaW50IHN0cmJ1Zl9jaGVja19icmFuY2hfcmVmKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpuYW1lKTsKIAotZXh0ZXJuIHZvaWQgc3RyYnVmX2FkZF91cmxlbmNvZGUoc3RydWN0IHN0cmJ1ZiAqLCBjb25zdCBjaGFyICosIHNpemVfdCwKLQkJCQkgaW50IHJlc2VydmVkKTsKIGV4dGVybiB2b2lkIHN0cmJ1Zl9hZGRzdHJfdXJsZW5jb2RlKHN0cnVjdCBzdHJidWYgKiwgY29uc3QgY2hhciAqLAogCQkJCSAgICBpbnQgcmVzZXJ2ZWQpOworZXh0ZXJuIHZvaWQgc3RyYnVmX2h1bWFuaXNlX2J5dGVzKHN0cnVjdCBzdHJidWYgKmJ1Ziwgb2ZmX3QgYnl0ZXMpOwogCiBfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwxLDIpKSkKIGV4dGVybiBpbnQgcHJpbnRmX2xuKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKZGlmZiAtLWdpdCBhL3N0cmVhbWluZy5jIGIvc3RyZWFtaW5nLmMKaW5kZXggNGQ5NzhlNS4uY2FiY2Q5ZCAxMDA2NDQKLS0tIGEvc3RyZWFtaW5nLmMKKysrIGIvc3RyZWFtaW5nLmMKQEAgLTIzNyw3ICsyMzcsNyBAQAogCQlpZiAoIWZzLT5pbnB1dF9maW5pc2hlZCkgewogCQkJZnMtPmlfZW5kID0gcmVhZF9pc3RyZWFtKGZzLT51cHN0cmVhbSwgZnMtPmlidWYsIEZJTFRFUl9CVUZGRVIpOwogCQkJaWYgKGZzLT5pX2VuZCA8IDApCi0JCQkJYnJlYWs7CisJCQkJcmV0dXJuIC0xOwogCQkJaWYgKGZzLT5pX2VuZCkKIAkJCQljb250aW51ZTsKIAkJfQpAQCAtMzA5LDcgKzMwOSw3IEBACiAJCQlzdC0+el9zdGF0ZSA9IHpfZG9uZTsKIAkJCWJyZWFrOwogCQl9Ci0JCWlmIChzdGF0dXMgIT0gWl9PSyAmJiBzdGF0dXMgIT0gWl9CVUZfRVJST1IpIHsKKwkJaWYgKHN0YXR1cyAhPSBaX09LICYmIChzdGF0dXMgIT0gWl9CVUZfRVJST1IgfHwgdG90YWxfcmVhZCA8IHN6KSkgewogCQkJZ2l0X2luZmxhdGVfZW5kKCZzdC0+eik7CiAJCQlzdC0+el9zdGF0ZSA9IHpfZXJyb3I7CiAJCQlyZXR1cm4gLTE7CkBAIC01MTQsNiArNTE0LDggQEAKIAkJc3NpemVfdCB3cm90ZSwgaG9sZXRvOwogCQlzc2l6ZV90IHJlYWRsZW4gPSByZWFkX2lzdHJlYW0oc3QsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwogCisJCWlmIChyZWFkbGVuIDwgMCkKKwkJCWdvdG8gY2xvc2VfYW5kX2V4aXQ7CiAJCWlmICghcmVhZGxlbikKIAkJCWJyZWFrOwogCQlpZiAoY2FuX3NlZWsgJiYgc2l6ZW9mKGJ1ZikgPT0gcmVhZGxlbikgewpkaWZmIC0tZ2l0IGEvc3RyaW5nLWxpc3QuYyBiL3N0cmluZy1saXN0LmMKaW5kZXggZDk4MTBhYi4uYWFiYjI1ZSAxMDA2NDQKLS0tIGEvc3RyaW5nLWxpc3QuYworKysgYi9zdHJpbmctbGlzdC5jCkBAIC03LDEwICs3LDExIEBACiAJCWludCAqZXhhY3RfbWF0Y2gpCiB7CiAJaW50IGxlZnQgPSAtMSwgcmlnaHQgPSBsaXN0LT5ucjsKKwljb21wYXJlX3N0cmluZ3NfZm4gY21wID0gbGlzdC0+Y21wID8gbGlzdC0+Y21wIDogc3RyY21wOwogCiAJd2hpbGUgKGxlZnQgKyAxIDwgcmlnaHQpIHsKIAkJaW50IG1pZGRsZSA9IChsZWZ0ICsgcmlnaHQpIC8gMjsKLQkJaW50IGNvbXBhcmUgPSBzdHJjbXAoc3RyaW5nLCBsaXN0LT5pdGVtc1ttaWRkbGVdLnN0cmluZyk7CisJCWludCBjb21wYXJlID0gY21wKHN0cmluZywgbGlzdC0+aXRlbXNbbWlkZGxlXS5zdHJpbmcpOwogCQlpZiAoY29tcGFyZSA8IDApCiAJCQlyaWdodCA9IG1pZGRsZTsKIAkJZWxzZSBpZiAoY29tcGFyZSA+IDApCkBAIC05Miw2ICs5MywyNCBAQAogCXJldHVybiBsaXN0LT5pdGVtcyArIGk7CiB9CiAKK3ZvaWQgc3RyaW5nX2xpc3RfcmVtb3ZlX2R1cGxpY2F0ZXMoc3RydWN0IHN0cmluZ19saXN0ICpsaXN0LCBpbnQgZnJlZV91dGlsKQoreworCWlmIChsaXN0LT5uciA+IDEpIHsKKwkJaW50IHNyYywgZHN0OworCQljb21wYXJlX3N0cmluZ3NfZm4gY21wID0gbGlzdC0+Y21wID8gbGlzdC0+Y21wIDogc3RyY21wOworCQlmb3IgKHNyYyA9IGRzdCA9IDE7IHNyYyA8IGxpc3QtPm5yOyBzcmMrKykgeworCQkJaWYgKCFjbXAobGlzdC0+aXRlbXNbZHN0IC0gMV0uc3RyaW5nLCBsaXN0LT5pdGVtc1tzcmNdLnN0cmluZykpIHsKKwkJCQlpZiAobGlzdC0+c3RyZHVwX3N0cmluZ3MpCisJCQkJCWZyZWUobGlzdC0+aXRlbXNbc3JjXS5zdHJpbmcpOworCQkJCWlmIChmcmVlX3V0aWwpCisJCQkJCWZyZWUobGlzdC0+aXRlbXNbc3JjXS51dGlsKTsKKwkJCX0gZWxzZQorCQkJCWxpc3QtPml0ZW1zW2RzdCsrXSA9IGxpc3QtPml0ZW1zW3NyY107CisJCX0KKwkJbGlzdC0+bnIgPSBkc3Q7CisJfQorfQorCiBpbnQgZm9yX2VhY2hfc3RyaW5nX2xpc3Qoc3RydWN0IHN0cmluZ19saXN0ICpsaXN0LAogCQkJIHN0cmluZ19saXN0X2VhY2hfZnVuY190IGZuLCB2b2lkICpjYl9kYXRhKQogewpAQCAtMTAyLDYgKzEyMSwzMiBAQAogCXJldHVybiByZXQ7CiB9CiAKK3ZvaWQgZmlsdGVyX3N0cmluZ19saXN0KHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCwgaW50IGZyZWVfdXRpbCwKKwkJCXN0cmluZ19saXN0X2VhY2hfZnVuY190IHdhbnQsIHZvaWQgKmNiX2RhdGEpCit7CisJaW50IHNyYywgZHN0ID0gMDsKKwlmb3IgKHNyYyA9IDA7IHNyYyA8IGxpc3QtPm5yOyBzcmMrKykgeworCQlpZiAod2FudCgmbGlzdC0+aXRlbXNbc3JjXSwgY2JfZGF0YSkpIHsKKwkJCWxpc3QtPml0ZW1zW2RzdCsrXSA9IGxpc3QtPml0ZW1zW3NyY107CisJCX0gZWxzZSB7CisJCQlpZiAobGlzdC0+c3RyZHVwX3N0cmluZ3MpCisJCQkJZnJlZShsaXN0LT5pdGVtc1tzcmNdLnN0cmluZyk7CisJCQlpZiAoZnJlZV91dGlsKQorCQkJCWZyZWUobGlzdC0+aXRlbXNbc3JjXS51dGlsKTsKKwkJfQorCX0KKwlsaXN0LT5uciA9IGRzdDsKK30KKworc3RhdGljIGludCBpdGVtX2lzX25vdF9lbXB0eShzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbSwgdm9pZCAqdW51c2VkKQoreworCXJldHVybiAqaXRlbS0+c3RyaW5nICE9ICdcMCc7Cit9CisKK3ZvaWQgc3RyaW5nX2xpc3RfcmVtb3ZlX2VtcHR5X2l0ZW1zKHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCwgaW50IGZyZWVfdXRpbCkgeworCWZpbHRlcl9zdHJpbmdfbGlzdChsaXN0LCBmcmVlX3V0aWwsIGl0ZW1faXNfbm90X2VtcHR5LCBOVUxMKTsKK30KKwogdm9pZCBzdHJpbmdfbGlzdF9jbGVhcihzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmxpc3QsIGludCBmcmVlX3V0aWwpCiB7CiAJaWYgKGxpc3QtPml0ZW1zKSB7CkBAIC0xNDgsMjQgKzE5MywzOSBAQAogCQlwcmludGYoIiVzOiVwXG4iLCBwLT5pdGVtc1tpXS5zdHJpbmcsIHAtPml0ZW1zW2ldLnV0aWwpOwogfQogCi1zdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqc3RyaW5nX2xpc3RfYXBwZW5kKHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCwgY29uc3QgY2hhciAqc3RyaW5nKQorc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKnN0cmluZ19saXN0X2FwcGVuZF9ub2R1cChzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmxpc3QsCisJCQkJCQkgIGNoYXIgKnN0cmluZykKIHsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqcmV0dmFsOwogCUFMTE9DX0dST1cobGlzdC0+aXRlbXMsIGxpc3QtPm5yICsgMSwgbGlzdC0+YWxsb2MpOwotCWxpc3QtPml0ZW1zW2xpc3QtPm5yXS5zdHJpbmcgPQotCQlsaXN0LT5zdHJkdXBfc3RyaW5ncyA/IHhzdHJkdXAoc3RyaW5nKSA6IChjaGFyICopc3RyaW5nOwotCWxpc3QtPml0ZW1zW2xpc3QtPm5yXS51dGlsID0gTlVMTDsKLQlyZXR1cm4gbGlzdC0+aXRlbXMgKyBsaXN0LT5ucisrOworCXJldHZhbCA9ICZsaXN0LT5pdGVtc1tsaXN0LT5ucisrXTsKKwlyZXR2YWwtPnN0cmluZyA9IHN0cmluZzsKKwlyZXR2YWwtPnV0aWwgPSBOVUxMOworCXJldHVybiByZXR2YWw7CiB9CiAKK3N0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICpzdHJpbmdfbGlzdF9hcHBlbmQoc3RydWN0IHN0cmluZ19saXN0ICpsaXN0LAorCQkJCQkgICAgY29uc3QgY2hhciAqc3RyaW5nKQoreworCXJldHVybiBzdHJpbmdfbGlzdF9hcHBlbmRfbm9kdXAoCisJCQlsaXN0LAorCQkJbGlzdC0+c3RyZHVwX3N0cmluZ3MgPyB4c3RyZHVwKHN0cmluZykgOiAoY2hhciAqKXN0cmluZyk7Cit9CisKKy8qIFl1Y2sgKi8KK3N0YXRpYyBjb21wYXJlX3N0cmluZ3NfZm4gY29tcGFyZV9mb3JfcXNvcnQ7CisKKy8qIE9ubHkgY2FsbCB0aGlzIGZyb20gaW5zaWRlIHNvcnRfc3RyaW5nX2xpc3QhICovCiBzdGF0aWMgaW50IGNtcF9pdGVtcyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogewogCWNvbnN0IHN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICpvbmUgPSBhOwogCWNvbnN0IHN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICp0d28gPSBiOwotCXJldHVybiBzdHJjbXAob25lLT5zdHJpbmcsIHR3by0+c3RyaW5nKTsKKwlyZXR1cm4gY29tcGFyZV9mb3JfcXNvcnQob25lLT5zdHJpbmcsIHR3by0+c3RyaW5nKTsKIH0KIAogdm9pZCBzb3J0X3N0cmluZ19saXN0KHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCkKIHsKKwljb21wYXJlX2Zvcl9xc29ydCA9IGxpc3QtPmNtcCA/IGxpc3QtPmNtcCA6IHN0cmNtcDsKIAlxc29ydChsaXN0LT5pdGVtcywgbGlzdC0+bnIsIHNpemVvZigqbGlzdC0+aXRlbXMpLCBjbXBfaXRlbXMpOwogfQogCkBAIC0xNzMsOCArMjMzLDEwIEBACiAJCQkJCQkgICAgIGNvbnN0IGNoYXIgKnN0cmluZykKIHsKIAlpbnQgaTsKKwljb21wYXJlX3N0cmluZ3NfZm4gY21wID0gbGlzdC0+Y21wID8gbGlzdC0+Y21wIDogc3RyY21wOworCiAJZm9yIChpID0gMDsgaSA8IGxpc3QtPm5yOyBpKyspCi0JCWlmICghc3RyY21wKHN0cmluZywgbGlzdC0+aXRlbXNbaV0uc3RyaW5nKSkKKwkJaWYgKCFjbXAoc3RyaW5nLCBsaXN0LT5pdGVtc1tpXS5zdHJpbmcpKQogCQkJcmV0dXJuIGxpc3QtPml0ZW1zICsgaTsKIAlyZXR1cm4gTlVMTDsKIH0KQEAgLTE5NCwzICsyNTYsNTYgQEAKIAlsaXN0LT5pdGVtc1tpXSA9IGxpc3QtPml0ZW1zW2xpc3QtPm5yLTFdOwogCWxpc3QtPm5yLS07CiB9CisKK2ludCBzdHJpbmdfbGlzdF9zcGxpdChzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmxpc3QsIGNvbnN0IGNoYXIgKnN0cmluZywKKwkJICAgICAgaW50IGRlbGltLCBpbnQgbWF4c3BsaXQpCit7CisJaW50IGNvdW50ID0gMDsKKwljb25zdCBjaGFyICpwID0gc3RyaW5nLCAqZW5kOworCisJaWYgKCFsaXN0LT5zdHJkdXBfc3RyaW5ncykKKwkJZGllKCJpbnRlcm5hbCBlcnJvciBpbiBzdHJpbmdfbGlzdF9zcGxpdCgpOiAiCisJCSAgICAibGlzdC0+c3RyZHVwX3N0cmluZ3MgbXVzdCBiZSBzZXQiKTsKKwlmb3IgKDs7KSB7CisJCWNvdW50Kys7CisJCWlmIChtYXhzcGxpdCA+PSAwICYmIGNvdW50ID4gbWF4c3BsaXQpIHsKKwkJCXN0cmluZ19saXN0X2FwcGVuZChsaXN0LCBwKTsKKwkJCXJldHVybiBjb3VudDsKKwkJfQorCQllbmQgPSBzdHJjaHIocCwgZGVsaW0pOworCQlpZiAoZW5kKSB7CisJCQlzdHJpbmdfbGlzdF9hcHBlbmRfbm9kdXAobGlzdCwgeG1lbWR1cHoocCwgZW5kIC0gcCkpOworCQkJcCA9IGVuZCArIDE7CisJCX0gZWxzZSB7CisJCQlzdHJpbmdfbGlzdF9hcHBlbmQobGlzdCwgcCk7CisJCQlyZXR1cm4gY291bnQ7CisJCX0KKwl9Cit9CisKK2ludCBzdHJpbmdfbGlzdF9zcGxpdF9pbl9wbGFjZShzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmxpc3QsIGNoYXIgKnN0cmluZywKKwkJCSAgICAgICBpbnQgZGVsaW0sIGludCBtYXhzcGxpdCkKK3sKKwlpbnQgY291bnQgPSAwOworCWNoYXIgKnAgPSBzdHJpbmcsICplbmQ7CisKKwlpZiAobGlzdC0+c3RyZHVwX3N0cmluZ3MpCisJCWRpZSgiaW50ZXJuYWwgZXJyb3IgaW4gc3RyaW5nX2xpc3Rfc3BsaXRfaW5fcGxhY2UoKTogIgorCQkgICAgImxpc3QtPnN0cmR1cF9zdHJpbmdzIG11c3Qgbm90IGJlIHNldCIpOworCWZvciAoOzspIHsKKwkJY291bnQrKzsKKwkJaWYgKG1heHNwbGl0ID49IDAgJiYgY291bnQgPiBtYXhzcGxpdCkgeworCQkJc3RyaW5nX2xpc3RfYXBwZW5kKGxpc3QsIHApOworCQkJcmV0dXJuIGNvdW50OworCQl9CisJCWVuZCA9IHN0cmNocihwLCBkZWxpbSk7CisJCWlmIChlbmQpIHsKKwkJCSplbmQgPSAnXDAnOworCQkJc3RyaW5nX2xpc3RfYXBwZW5kKGxpc3QsIHApOworCQkJcCA9IGVuZCArIDE7CisJCX0gZWxzZSB7CisJCQlzdHJpbmdfbGlzdF9hcHBlbmQobGlzdCwgcCk7CisJCQlyZXR1cm4gY291bnQ7CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9zdHJpbmctbGlzdC5oIGIvc3RyaW5nLWxpc3QuaAppbmRleCAwNjg0Y2I3Li5kZTY3NjljIDEwMDY0NAotLS0gYS9zdHJpbmctbGlzdC5oCisrKyBiL3N0cmluZy1saXN0LmgKQEAgLTUsMTAgKzUsMTQgQEAKIAljaGFyICpzdHJpbmc7CiAJdm9pZCAqdXRpbDsKIH07CisKK3R5cGVkZWYgaW50ICgqY29tcGFyZV9zdHJpbmdzX2ZuKShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisKIHN0cnVjdCBzdHJpbmdfbGlzdCB7CiAJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW1zOwogCXVuc2lnbmVkIGludCBuciwgYWxsb2M7CiAJdW5zaWduZWQgaW50IHN0cmR1cF9zdHJpbmdzOjE7CisJY29tcGFyZV9zdHJpbmdzX2ZuIGNtcDsgLyogTlVMTCB1c2VzIHN0cmNtcCgpICovCiB9OwogCiAjZGVmaW5lIFNUUklOR19MSVNUX0lOSVRfTk9EVVAgeyBOVUxMLCAwLCAwLCAwIH0KQEAgLTI5LDYgKzMzLDIyIEBACiAjZGVmaW5lIGZvcl9lYWNoX3N0cmluZ19saXN0X2l0ZW0oaXRlbSxsaXN0KSBcCiAJZm9yIChpdGVtID0gKGxpc3QpLT5pdGVtczsgaXRlbSA8IChsaXN0KS0+aXRlbXMgKyAobGlzdCktPm5yOyArK2l0ZW0pCiAKKy8qCisgKiBBcHBseSB3YW50IHRvIGVhY2ggaXRlbSBpbiBsaXN0LCByZXRhaW5pbmcgb25seSB0aGUgb25lcyBmb3Igd2hpY2gKKyAqIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUuICBJZiBmcmVlX3V0aWwgaXMgdHJ1ZSwgY2FsbCBmcmVlKCkgb24KKyAqIHRoZSB1dGlsIG1lbWJlcnMgb2YgYW55IGl0ZW1zIHRoYXQgaGF2ZSB0byBiZSBkZWxldGVkLiAgUHJlc2VydmUKKyAqIHRoZSBvcmRlciBvZiB0aGUgaXRlbXMgdGhhdCBhcmUgcmV0YWluZWQuCisgKi8KK3ZvaWQgZmlsdGVyX3N0cmluZ19saXN0KHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCwgaW50IGZyZWVfdXRpbCwKKwkJCXN0cmluZ19saXN0X2VhY2hfZnVuY190IHdhbnQsIHZvaWQgKmNiX2RhdGEpOworCisvKgorICogUmVtb3ZlIGFueSBlbXB0eSBzdHJpbmdzIGZyb20gdGhlIGxpc3QuICBJZiBmcmVlX3V0aWwgaXMgdHJ1ZSwgY2FsbAorICogZnJlZSgpIG9uIHRoZSB1dGlsIG1lbWJlcnMgb2YgYW55IGl0ZW1zIHRoYXQgaGF2ZSB0byBiZSBkZWxldGVkLgorICogUHJlc2VydmUgdGhlIG9yZGVyIG9mIHRoZSBpdGVtcyB0aGF0IGFyZSByZXRhaW5lZC4KKyAqLwordm9pZCBzdHJpbmdfbGlzdF9yZW1vdmVfZW1wdHlfaXRlbXMoc3RydWN0IHN0cmluZ19saXN0ICpsaXN0LCBpbnQgZnJlZV91dGlsKTsKKwogLyogVXNlIHRoZXNlIGZ1bmN0aW9ucyBvbmx5IG9uIHNvcnRlZCBsaXN0czogKi8KIGludCBzdHJpbmdfbGlzdF9oYXNfc3RyaW5nKGNvbnN0IHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCwgY29uc3QgY2hhciAqc3RyaW5nKTsKIGludCBzdHJpbmdfbGlzdF9maW5kX2luc2VydF9pbmRleChjb25zdCBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmxpc3QsIGNvbnN0IGNoYXIgKnN0cmluZywKQEAgLTM4LDExICs1OCw2NCBAQAogCQkJCQkJICAgICBpbnQgaW5zZXJ0X2F0LCBjb25zdCBjaGFyICpzdHJpbmcpOwogc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKnN0cmluZ19saXN0X2xvb2t1cChzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmxpc3QsIGNvbnN0IGNoYXIgKnN0cmluZyk7CiAKKy8qCisgKiBSZW1vdmUgYWxsIGJ1dCB0aGUgZmlyc3Qgb2YgY29uc2VjdXRpdmUgZW50cmllcyB3aXRoIHRoZSBzYW1lCisgKiBzdHJpbmcgdmFsdWUuICBJZiBmcmVlX3V0aWwgaXMgdHJ1ZSwgY2FsbCBmcmVlKCkgb24gdGhlIHV0aWwKKyAqIG1lbWJlcnMgb2YgYW55IGl0ZW1zIHRoYXQgaGF2ZSB0byBiZSBkZWxldGVkLgorICovCit2b2lkIHN0cmluZ19saXN0X3JlbW92ZV9kdXBsaWNhdGVzKHN0cnVjdCBzdHJpbmdfbGlzdCAqc29ydGVkX2xpc3QsIGludCBmcmVlX3V0aWwpOworCisKIC8qIFVzZSB0aGVzZSBmdW5jdGlvbnMgb25seSBvbiB1bnNvcnRlZCBsaXN0czogKi8KKworLyoKKyAqIEFkZCBzdHJpbmcgdG8gdGhlIGVuZCBvZiBsaXN0LiAgSWYgbGlzdC0+c3RyZHVwX3N0cmluZyBpcyBzZXQsIHRoZW4KKyAqIHN0cmluZyBpcyBjb3BpZWQ7IG90aGVyd2lzZSB0aGUgbmV3IHN0cmluZ19saXN0X2VudHJ5IHJlZmVycyB0byB0aGUKKyAqIGlucHV0IHN0cmluZy4KKyAqLwogc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKnN0cmluZ19saXN0X2FwcGVuZChzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmxpc3QsIGNvbnN0IGNoYXIgKnN0cmluZyk7CisKKy8qCisgKiBMaWtlIHN0cmluZ19saXN0X2FwcGVuZCgpLCBleGNlcHQgc3RyaW5nIGlzIG5ldmVyIGNvcGllZC4gIFdoZW4KKyAqIGxpc3QtPnN0cmR1cF9zdHJpbmdzIGlzIHNldCwgdGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBoYW5kCisgKiBvd25lcnNoaXAgb2YgYSBtYWxsb2MoKWVkIHN0cmluZyB0byBsaXN0IHdpdGhvdXQgbWFraW5nIGFuIGV4dHJhCisgKiBjb3B5LgorICovCitzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqc3RyaW5nX2xpc3RfYXBwZW5kX25vZHVwKHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCwgY2hhciAqc3RyaW5nKTsKKwogdm9pZCBzb3J0X3N0cmluZ19saXN0KHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCk7CiBpbnQgdW5zb3J0ZWRfc3RyaW5nX2xpc3RfaGFzX3N0cmluZyhzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmxpc3QsIGNvbnN0IGNoYXIgKnN0cmluZyk7CiBzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqdW5zb3J0ZWRfc3RyaW5nX2xpc3RfbG9va3VwKHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCwKIAkJCQkJCSAgICAgY29uc3QgY2hhciAqc3RyaW5nKTsKKwogdm9pZCB1bnNvcnRlZF9zdHJpbmdfbGlzdF9kZWxldGVfaXRlbShzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmxpc3QsIGludCBpLCBpbnQgZnJlZV91dGlsKTsKKworLyoKKyAqIFNwbGl0IHN0cmluZyBpbnRvIHN1YnN0cmluZ3Mgb24gY2hhcmFjdGVyIGRlbGltIGFuZCBhcHBlbmQgdGhlCisgKiBzdWJzdHJpbmdzIHRvIGxpc3QuICBUaGUgaW5wdXQgc3RyaW5nIGlzIG5vdCBtb2RpZmllZC4KKyAqIGxpc3QtPnN0cmR1cF9zdHJpbmdzIG11c3QgYmUgc2V0LCBhcyBuZXcgbWVtb3J5IG5lZWRzIHRvIGJlCisgKiBhbGxvY2F0ZWQgdG8gaG9sZCB0aGUgc3Vic3RyaW5ncy4gIElmIG1heHNwbGl0IGlzIG5vbi1uZWdhdGl2ZSwKKyAqIHRoZW4gc3BsaXQgYXQgbW9zdCBtYXhzcGxpdCB0aW1lcy4gIFJldHVybiB0aGUgbnVtYmVyIG9mIHN1YnN0cmluZ3MKKyAqIGFwcGVuZGVkIHRvIGxpc3QuCisgKgorICogRXhhbXBsZXM6CisgKiAgIHN0cmluZ19saXN0X3NwbGl0KGwsICJmb286YmFyOmJheiIsICc6JywgLTEpIC0+IFsiZm9vIiwgImJhciIsICJiYXoiXQorICogICBzdHJpbmdfbGlzdF9zcGxpdChsLCAiZm9vOmJhcjpiYXoiLCAnOicsIDApIC0+IFsiZm9vOmJhcjpiYXoiXQorICogICBzdHJpbmdfbGlzdF9zcGxpdChsLCAiZm9vOmJhcjpiYXoiLCAnOicsIDEpIC0+IFsiZm9vIiwgImJhcjpiYXoiXQorICogICBzdHJpbmdfbGlzdF9zcGxpdChsLCAiZm9vOmJhcjoiLCAnOicsIC0xKSAtPiBbImZvbyIsICJiYXIiLCAiIl0KKyAqICAgc3RyaW5nX2xpc3Rfc3BsaXQobCwgIiIsICc6JywgLTEpIC0+IFsiIl0KKyAqICAgc3RyaW5nX2xpc3Rfc3BsaXQobCwgIjoiLCAnOicsIC0xKSAtPiBbIiIsICIiXQorICovCitpbnQgc3RyaW5nX2xpc3Rfc3BsaXQoc3RydWN0IHN0cmluZ19saXN0ICpsaXN0LCBjb25zdCBjaGFyICpzdHJpbmcsCisJCSAgICAgIGludCBkZWxpbSwgaW50IG1heHNwbGl0KTsKKworLyoKKyAqIExpa2Ugc3RyaW5nX2xpc3Rfc3BsaXQoKSwgZXhjZXB0IHRoYXQgc3RyaW5nIGlzIHNwbGl0IGluLXBsYWNlOiB0aGUKKyAqIGRlbGltaXRlciBjaGFyYWN0ZXJzIGluIHN0cmluZyBhcmUgb3ZlcndyaXR0ZW4gd2l0aCBOVUxzLCBhbmQgdGhlCisgKiBuZXcgc3RyaW5nX2xpc3RfaXRlbXMgcG9pbnQgaW50byBzdHJpbmcgKHdoaWNoIHRoZXJlZm9yZSBtdXN0IG5vdAorICogYmUgbW9kaWZpZWQgb3IgZnJlZWQgd2hpbGUgdGhlIHN0cmluZ19saXN0IGlzIGluIHVzZSkuCisgKiBsaXN0LT5zdHJkdXBfc3RyaW5ncyBtdXN0ICpub3QqIGJlIHNldC4KKyAqLworaW50IHN0cmluZ19saXN0X3NwbGl0X2luX3BsYWNlKHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCwgY2hhciAqc3RyaW5nLAorCQkJICAgICAgIGludCBkZWxpbSwgaW50IG1heHNwbGl0KTsKICNlbmRpZiAvKiBTVFJJTkdfTElTVF9IICovCmRpZmYgLS1naXQgYS9zdWJtb2R1bGUuYyBiL3N1Ym1vZHVsZS5jCmluZGV4IDk1OWQzNDkuLjE4MjFhNWIgMTAwNjQ0Ci0tLSBhL3N1Ym1vZHVsZS5jCisrKyBiL3N1Ym1vZHVsZS5jCkBAIC0xMjYsNDUgKzEyNiw0NCBAQAogCiBpbnQgcGFyc2Vfc3VibW9kdWxlX2NvbmZpZ19vcHRpb24oY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKLQlpbnQgbGVuOwogCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICpjb25maWc7Ci0Jc3RydWN0IHN0cmJ1ZiBzdWJtb2RuYW1lID0gU1RSQlVGX0lOSVQ7CisJY29uc3QgY2hhciAqbmFtZSwgKmtleTsKKwlpbnQgbmFtZWxlbjsKIAotCXZhciArPSAxMDsJCS8qIFNraXAgInN1Ym1vZHVsZS4iICovCisJaWYgKHBhcnNlX2NvbmZpZ19rZXkodmFyLCAic3VibW9kdWxlIiwgJm5hbWUsICZuYW1lbGVuLCAma2V5KSA8IDAgfHwgIW5hbWUpCisJCXJldHVybiAwOwogCi0JbGVuID0gc3RybGVuKHZhcik7Ci0JaWYgKChsZW4gPiA1KSAmJiAhc3RyY21wKHZhciArIGxlbiAtIDUsICIucGF0aCIpKSB7Ci0JCXN0cmJ1Zl9hZGQoJnN1Ym1vZG5hbWUsIHZhciwgbGVuIC0gNSk7CisJaWYgKCFzdHJjbXAoa2V5LCAicGF0aCIpKSB7CiAJCWNvbmZpZyA9IHVuc29ydGVkX3N0cmluZ19saXN0X2xvb2t1cCgmY29uZmlnX25hbWVfZm9yX3BhdGgsIHZhbHVlKTsKIAkJaWYgKGNvbmZpZykKIAkJCWZyZWUoY29uZmlnLT51dGlsKTsKIAkJZWxzZQogCQkJY29uZmlnID0gc3RyaW5nX2xpc3RfYXBwZW5kKCZjb25maWdfbmFtZV9mb3JfcGF0aCwgeHN0cmR1cCh2YWx1ZSkpOwotCQljb25maWctPnV0aWwgPSBzdHJidWZfZGV0YWNoKCZzdWJtb2RuYW1lLCBOVUxMKTsKLQkJc3RyYnVmX3JlbGVhc2UoJnN1Ym1vZG5hbWUpOwotCX0gZWxzZSBpZiAoKGxlbiA+IDIzKSAmJiAhc3RyY21wKHZhciArIGxlbiAtIDIzLCAiLmZldGNocmVjdXJzZXN1Ym1vZHVsZXMiKSkgewotCQlzdHJidWZfYWRkKCZzdWJtb2RuYW1lLCB2YXIsIGxlbiAtIDIzKTsKLQkJY29uZmlnID0gdW5zb3J0ZWRfc3RyaW5nX2xpc3RfbG9va3VwKCZjb25maWdfZmV0Y2hfcmVjdXJzZV9zdWJtb2R1bGVzX2Zvcl9uYW1lLCBzdWJtb2RuYW1lLmJ1Zik7CisJCWNvbmZpZy0+dXRpbCA9IHhtZW1kdXB6KG5hbWUsIG5hbWVsZW4pOworCX0gZWxzZSBpZiAoIXN0cmNtcChrZXksICJmZXRjaHJlY3Vyc2VzdWJtb2R1bGVzIikpIHsKKwkJY2hhciAqbmFtZV9jc3RyID0geG1lbWR1cHoobmFtZSwgbmFtZWxlbik7CisJCWNvbmZpZyA9IHVuc29ydGVkX3N0cmluZ19saXN0X2xvb2t1cCgmY29uZmlnX2ZldGNoX3JlY3Vyc2Vfc3VibW9kdWxlc19mb3JfbmFtZSwgbmFtZV9jc3RyKTsKIAkJaWYgKCFjb25maWcpCi0JCQljb25maWcgPSBzdHJpbmdfbGlzdF9hcHBlbmQoJmNvbmZpZ19mZXRjaF9yZWN1cnNlX3N1Ym1vZHVsZXNfZm9yX25hbWUsCi0JCQkJCQkgICAgc3RyYnVmX2RldGFjaCgmc3VibW9kbmFtZSwgTlVMTCkpOworCQkJY29uZmlnID0gc3RyaW5nX2xpc3RfYXBwZW5kKCZjb25maWdfZmV0Y2hfcmVjdXJzZV9zdWJtb2R1bGVzX2Zvcl9uYW1lLCBuYW1lX2NzdHIpOworCQllbHNlCisJCQlmcmVlKG5hbWVfY3N0cik7CiAJCWNvbmZpZy0+dXRpbCA9ICh2b2lkICopKGludHB0cl90KXBhcnNlX2ZldGNoX3JlY3Vyc2Vfc3VibW9kdWxlc19hcmcodmFyLCB2YWx1ZSk7Ci0JCXN0cmJ1Zl9yZWxlYXNlKCZzdWJtb2RuYW1lKTsKLQl9IGVsc2UgaWYgKChsZW4gPiA3KSAmJiAhc3RyY21wKHZhciArIGxlbiAtIDcsICIuaWdub3JlIikpIHsKKwl9IGVsc2UgaWYgKCFzdHJjbXAoa2V5LCAiaWdub3JlIikpIHsKKwkJY2hhciAqbmFtZV9jc3RyOworCiAJCWlmIChzdHJjbXAodmFsdWUsICJ1bnRyYWNrZWQiKSAmJiBzdHJjbXAodmFsdWUsICJkaXJ0eSIpICYmCiAJCSAgICBzdHJjbXAodmFsdWUsICJhbGwiKSAmJiBzdHJjbXAodmFsdWUsICJub25lIikpIHsKIAkJCXdhcm5pbmcoIkludmFsaWQgcGFyYW1ldGVyIFwiJXNcIiBmb3IgY29uZmlnIG9wdGlvbiBcInN1Ym1vZHVsZS4lcy5pZ25vcmVcIiIsIHZhbHVlLCB2YXIpOwogCQkJcmV0dXJuIDA7CiAJCX0KIAotCQlzdHJidWZfYWRkKCZzdWJtb2RuYW1lLCB2YXIsIGxlbiAtIDcpOwotCQljb25maWcgPSB1bnNvcnRlZF9zdHJpbmdfbGlzdF9sb29rdXAoJmNvbmZpZ19pZ25vcmVfZm9yX25hbWUsIHN1Ym1vZG5hbWUuYnVmKTsKLQkJaWYgKGNvbmZpZykKKwkJbmFtZV9jc3RyID0geG1lbWR1cHoobmFtZSwgbmFtZWxlbik7CisJCWNvbmZpZyA9IHVuc29ydGVkX3N0cmluZ19saXN0X2xvb2t1cCgmY29uZmlnX2lnbm9yZV9mb3JfbmFtZSwgbmFtZV9jc3RyKTsKKwkJaWYgKGNvbmZpZykgewogCQkJZnJlZShjb25maWctPnV0aWwpOwotCQllbHNlCi0JCQljb25maWcgPSBzdHJpbmdfbGlzdF9hcHBlbmQoJmNvbmZpZ19pZ25vcmVfZm9yX25hbWUsCi0JCQkJCQkgICAgc3RyYnVmX2RldGFjaCgmc3VibW9kbmFtZSwgTlVMTCkpOwotCQlzdHJidWZfcmVsZWFzZSgmc3VibW9kbmFtZSk7CisJCQlmcmVlKG5hbWVfY3N0cik7CisJCX0gZWxzZQorCQkJY29uZmlnID0gc3RyaW5nX2xpc3RfYXBwZW5kKCZjb25maWdfaWdub3JlX2Zvcl9uYW1lLCBuYW1lX2NzdHIpOwogCQljb25maWctPnV0aWwgPSB4c3RyZHVwKHZhbHVlKTsKIAkJcmV0dXJuIDA7CiAJfQpAQCAtMjE3LDYgKzIxNiw3IEBACiB9CiAKIHN0YXRpYyB2b2lkIHByaW50X3N1Ym1vZHVsZV9zdW1tYXJ5KHN0cnVjdCByZXZfaW5mbyAqcmV2LCBGSUxFICpmLAorCQljb25zdCBjaGFyICpsaW5lX3ByZWZpeCwKIAkJY29uc3QgY2hhciAqZGVsLCBjb25zdCBjaGFyICphZGQsIGNvbnN0IGNoYXIgKnJlc2V0KQogewogCXN0YXRpYyBjb25zdCBjaGFyIGZvcm1hdFtdID0gIiAgJW0gJXMiOwpAQCAtMjI3LDYgKzIyNyw3IEBACiAJCXN0cnVjdCBwcmV0dHlfcHJpbnRfY29udGV4dCBjdHggPSB7MH07CiAJCWN0eC5kYXRlX21vZGUgPSByZXYtPmRhdGVfbW9kZTsKIAkJc3RyYnVmX3NldGxlbigmc2IsIDApOworCQlzdHJidWZfYWRkc3RyKCZzYiwgbGluZV9wcmVmaXgpOwogCQlpZiAoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBTWU1NRVRSSUNfTEVGVCkgewogCQkJaWYgKGRlbCkKIAkJCQlzdHJidWZfYWRkc3RyKCZzYiwgZGVsKTsKQEAgLTI1NywxMiArMjU4LDEzIEBACiB9CiAKIHZvaWQgc2hvd19zdWJtb2R1bGVfc3VtbWFyeShGSUxFICpmLCBjb25zdCBjaGFyICpwYXRoLAorCQljb25zdCBjaGFyICpsaW5lX3ByZWZpeCwKIAkJdW5zaWduZWQgY2hhciBvbmVbMjBdLCB1bnNpZ25lZCBjaGFyIHR3b1syMF0sCi0JCXVuc2lnbmVkIGRpcnR5X3N1Ym1vZHVsZSwKKwkJdW5zaWduZWQgZGlydHlfc3VibW9kdWxlLCBjb25zdCBjaGFyICptZXRhLAogCQljb25zdCBjaGFyICpkZWwsIGNvbnN0IGNoYXIgKmFkZCwgY29uc3QgY2hhciAqcmVzZXQpCiB7CiAJc3RydWN0IHJldl9pbmZvIHJldjsKLQlzdHJ1Y3QgY29tbWl0ICpsZWZ0ID0gbGVmdCwgKnJpZ2h0ID0gcmlnaHQ7CisJc3RydWN0IGNvbW1pdCAqbGVmdCA9IE5VTEwsICpyaWdodCA9IE5VTEw7CiAJY29uc3QgY2hhciAqbWVzc2FnZSA9IE5VTEw7CiAJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwogCWludCBmYXN0X2ZvcndhcmQgPSAwLCBmYXN0X2JhY2t3YXJkID0gMDsKQEAgLTI3NiwzOCArMjc4LDM5IEBACiAJZWxzZSBpZiAoIShsZWZ0ID0gbG9va3VwX2NvbW1pdF9yZWZlcmVuY2Uob25lKSkgfHwKIAkJICEocmlnaHQgPSBsb29rdXBfY29tbWl0X3JlZmVyZW5jZSh0d28pKSkKIAkJbWVzc2FnZSA9ICIoY29tbWl0cyBub3QgcHJlc2VudCkiOwotCi0JaWYgKCFtZXNzYWdlICYmCi0JICAgIHByZXBhcmVfc3VibW9kdWxlX3N1bW1hcnkoJnJldiwgcGF0aCwgbGVmdCwgcmlnaHQsCi0JCQkJCSZmYXN0X2ZvcndhcmQsICZmYXN0X2JhY2t3YXJkKSkKKwllbHNlIGlmIChwcmVwYXJlX3N1Ym1vZHVsZV9zdW1tYXJ5KCZyZXYsIHBhdGgsIGxlZnQsIHJpZ2h0LAorCQkJCQkgICAmZmFzdF9mb3J3YXJkLCAmZmFzdF9iYWNrd2FyZCkpCiAJCW1lc3NhZ2UgPSAiKHJldmlzaW9uIHdhbGtlciBmYWlsZWQpIjsKIAogCWlmIChkaXJ0eV9zdWJtb2R1bGUgJiBESVJUWV9TVUJNT0RVTEVfVU5UUkFDS0VEKQotCQlmcHJpbnRmKGYsICJTdWJtb2R1bGUgJXMgY29udGFpbnMgdW50cmFja2VkIGNvbnRlbnRcbiIsIHBhdGgpOworCQlmcHJpbnRmKGYsICIlc1N1Ym1vZHVsZSAlcyBjb250YWlucyB1bnRyYWNrZWQgY29udGVudFxuIiwKKwkJCWxpbmVfcHJlZml4LCBwYXRoKTsKIAlpZiAoZGlydHlfc3VibW9kdWxlICYgRElSVFlfU1VCTU9EVUxFX01PRElGSUVEKQotCQlmcHJpbnRmKGYsICJTdWJtb2R1bGUgJXMgY29udGFpbnMgbW9kaWZpZWQgY29udGVudFxuIiwgcGF0aCk7CisJCWZwcmludGYoZiwgIiVzU3VibW9kdWxlICVzIGNvbnRhaW5zIG1vZGlmaWVkIGNvbnRlbnRcbiIsCisJCQlsaW5lX3ByZWZpeCwgcGF0aCk7CiAKIAlpZiAoIWhhc2hjbXAob25lLCB0d28pKSB7CiAJCXN0cmJ1Zl9yZWxlYXNlKCZzYik7CiAJCXJldHVybjsKIAl9CiAKLQlzdHJidWZfYWRkZigmc2IsICJTdWJtb2R1bGUgJXMgJXMuLiIsIHBhdGgsCisJc3RyYnVmX2FkZGYoJnNiLCAiJXMlc1N1Ym1vZHVsZSAlcyAlcy4uIiwgbGluZV9wcmVmaXgsIG1ldGEsIHBhdGgsCiAJCQlmaW5kX3VuaXF1ZV9hYmJyZXYob25lLCBERUZBVUxUX0FCQlJFVikpOwogCWlmICghZmFzdF9iYWNrd2FyZCAmJiAhZmFzdF9mb3J3YXJkKQogCQlzdHJidWZfYWRkY2goJnNiLCAnLicpOwogCXN0cmJ1Zl9hZGRmKCZzYiwgIiVzIiwgZmluZF91bmlxdWVfYWJicmV2KHR3bywgREVGQVVMVF9BQkJSRVYpKTsKIAlpZiAobWVzc2FnZSkKLQkJc3RyYnVmX2FkZGYoJnNiLCAiICVzXG4iLCBtZXNzYWdlKTsKKwkJc3RyYnVmX2FkZGYoJnNiLCAiICVzJXNcbiIsIG1lc3NhZ2UsIHJlc2V0KTsKIAllbHNlCi0JCXN0cmJ1Zl9hZGRmKCZzYiwgIiVzOlxuIiwgZmFzdF9iYWNrd2FyZCA/ICIgKHJld2luZCkiIDogIiIpOworCQlzdHJidWZfYWRkZigmc2IsICIlczolc1xuIiwgZmFzdF9iYWNrd2FyZCA/ICIgKHJld2luZCkiIDogIiIsIHJlc2V0KTsKIAlmd3JpdGUoc2IuYnVmLCBzYi5sZW4sIDEsIGYpOwogCi0JaWYgKCFtZXNzYWdlKSB7Ci0JCXByaW50X3N1Ym1vZHVsZV9zdW1tYXJ5KCZyZXYsIGYsIGRlbCwgYWRkLCByZXNldCk7CisJaWYgKCFtZXNzYWdlKSAvKiBvbmx5IE5VTEwgaWYgd2Ugc3VjY2VlZGVkIGluIHNldHRpbmcgdXAgdGhlIHdhbGsgKi8KKwkJcHJpbnRfc3VibW9kdWxlX3N1bW1hcnkoJnJldiwgZiwgbGluZV9wcmVmaXgsIGRlbCwgYWRkLCByZXNldCk7CisJaWYgKGxlZnQpCiAJCWNsZWFyX2NvbW1pdF9tYXJrcyhsZWZ0LCB+MCk7CisJaWYgKHJpZ2h0KQogCQljbGVhcl9jb21taXRfbWFya3MocmlnaHQsIH4wKTsKLQl9CiAKIAlzdHJidWZfcmVsZWFzZSgmc2IpOwogfQpAQCAtNTc0LDggKzU3Nyw3IEBACiAJCQlESUZGX09QVF9TRVQoJmRpZmZfb3B0cywgUkVDVVJTSVZFKTsKIAkJCWRpZmZfb3B0cy5vdXRwdXRfZm9ybWF0IHw9IERJRkZfRk9STUFUX0NBTExCQUNLOwogCQkJZGlmZl9vcHRzLmZvcm1hdF9jYWxsYmFjayA9IHN1Ym1vZHVsZV9jb2xsZWN0X2NoYW5nZWRfY2I7Ci0JCQlpZiAoZGlmZl9zZXR1cF9kb25lKCZkaWZmX29wdHMpIDwgMCkKLQkJCQlkaWUoImRpZmZfc2V0dXBfZG9uZSBmYWlsZWQiKTsKKwkJCWRpZmZfc2V0dXBfZG9uZSgmZGlmZl9vcHRzKTsKIAkJCWRpZmZfdHJlZV9zaGExKHBhcmVudC0+aXRlbS0+b2JqZWN0LnNoYTEsIGNvbW1pdC0+b2JqZWN0LnNoYTEsICIiLCAmZGlmZl9vcHRzKTsKIAkJCWRpZmZjb3JlX3N0ZCgmZGlmZl9vcHRzKTsKIAkJCWRpZmZfZmx1c2goJmRpZmZfb3B0cyk7CkBAIC01ODksMzMgKzU5MSwyOCBAQAogCWluaXRpYWxpemVkX2ZldGNoX3JlZl90aXBzID0gMDsKIH0KIAotaW50IGZldGNoX3BvcHVsYXRlZF9zdWJtb2R1bGVzKGludCBudW1fb3B0aW9ucywgY29uc3QgY2hhciAqKm9wdGlvbnMsCitpbnQgZmV0Y2hfcG9wdWxhdGVkX3N1Ym1vZHVsZXMoY29uc3Qgc3RydWN0IGFyZ3ZfYXJyYXkgKm9wdGlvbnMsCiAJCQkgICAgICAgY29uc3QgY2hhciAqcHJlZml4LCBpbnQgY29tbWFuZF9saW5lX29wdGlvbiwKIAkJCSAgICAgICBpbnQgcXVpZXQpCiB7Ci0JaW50IGksIHJlc3VsdCA9IDAsIGFyZ2MgPSAwLCBkZWZhdWx0X2FyZ2M7CisJaW50IGksIHJlc3VsdCA9IDA7CiAJc3RydWN0IGNoaWxkX3Byb2Nlc3MgY3A7Ci0JY29uc3QgY2hhciAqKmFyZ3Y7CisJc3RydWN0IGFyZ3ZfYXJyYXkgYXJndiA9IEFSR1ZfQVJSQVlfSU5JVDsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqbmFtZV9mb3JfcGF0aDsKIAljb25zdCBjaGFyICp3b3JrX3RyZWUgPSBnZXRfZ2l0X3dvcmtfdHJlZSgpOwogCWlmICghd29ya190cmVlKQogCQlnb3RvIG91dDsKIAotCWlmICghdGhlX2luZGV4LmluaXRpYWxpemVkKQotCQlpZiAocmVhZF9jYWNoZSgpIDwgMCkKLQkJCWRpZSgiaW5kZXggZmlsZSBjb3JydXB0Iik7CisJaWYgKHJlYWRfY2FjaGUoKSA8IDApCisJCWRpZSgiaW5kZXggZmlsZSBjb3JydXB0Iik7CiAKLQkvKiA2OiAiZmV0Y2giIChvcHRpb25zKSAtLXJlY3Vyc2Utc3VibW9kdWxlcy1kZWZhdWx0IGRlZmF1bHQgIi0tc3VibW9kdWxlLXByZWZpeCIgcHJlZml4IE5VTEwgKi8KLQlhcmd2ID0geGNhbGxvYyhudW1fb3B0aW9ucyArIDYsIHNpemVvZihjb25zdCBjaGFyICopKTsKLQlhcmd2W2FyZ2MrK10gPSAiZmV0Y2giOwotCWZvciAoaSA9IDA7IGkgPCBudW1fb3B0aW9uczsgaSsrKQotCQlhcmd2W2FyZ2MrK10gPSBvcHRpb25zW2ldOwotCWFyZ3ZbYXJnYysrXSA9ICItLXJlY3Vyc2Utc3VibW9kdWxlcy1kZWZhdWx0IjsKLQlkZWZhdWx0X2FyZ2MgPSBhcmdjKys7Ci0JYXJndlthcmdjKytdID0gIi0tc3VibW9kdWxlLXByZWZpeCI7CisJYXJndl9hcnJheV9wdXNoKCZhcmd2LCAiZmV0Y2giKTsKKwlmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy0+YXJnYzsgaSsrKQorCQlhcmd2X2FycmF5X3B1c2goJmFyZ3YsIG9wdGlvbnMtPmFyZ3ZbaV0pOworCWFyZ3ZfYXJyYXlfcHVzaCgmYXJndiwgIi0tcmVjdXJzZS1zdWJtb2R1bGVzLWRlZmF1bHQiKTsKKwkvKiBkZWZhdWx0IHZhbHVlLCAiLS1zdWJtb2R1bGUtcHJlZml4IiBhbmQgaXRzIHZhbHVlIGFyZSBhZGRlZCBsYXRlciAqLwogCiAJbWVtc2V0KCZjcCwgMCwgc2l6ZW9mKGNwKSk7Ci0JY3AuYXJndiA9IGFyZ3Y7CiAJY3AuZW52ID0gbG9jYWxfcmVwb19lbnY7CiAJY3AuZ2l0X2NtZCA9IDE7CiAJY3Aubm9fc3RkaW4gPSAxOwpAQCAtNjc1LDE2ICs2NzIsMjEgQEAKIAkJCWlmICghcXVpZXQpCiAJCQkJcHJpbnRmKCJGZXRjaGluZyBzdWJtb2R1bGUgJXMlc1xuIiwgcHJlZml4LCBjZS0+bmFtZSk7CiAJCQljcC5kaXIgPSBzdWJtb2R1bGVfcGF0aC5idWY7Ci0JCQlhcmd2W2RlZmF1bHRfYXJnY10gPSBkZWZhdWx0X2FyZ3Y7Ci0JCQlhcmd2W2FyZ2NdID0gc3VibW9kdWxlX3ByZWZpeC5idWY7CisJCQlhcmd2X2FycmF5X3B1c2goJmFyZ3YsIGRlZmF1bHRfYXJndik7CisJCQlhcmd2X2FycmF5X3B1c2goJmFyZ3YsICItLXN1Ym1vZHVsZS1wcmVmaXgiKTsKKwkJCWFyZ3ZfYXJyYXlfcHVzaCgmYXJndiwgc3VibW9kdWxlX3ByZWZpeC5idWYpOworCQkJY3AuYXJndiA9IGFyZ3YuYXJndjsKIAkJCWlmIChydW5fY29tbWFuZCgmY3ApKQogCQkJCXJlc3VsdCA9IDE7CisJCQlhcmd2X2FycmF5X3BvcCgmYXJndik7CisJCQlhcmd2X2FycmF5X3BvcCgmYXJndik7CisJCQlhcmd2X2FycmF5X3BvcCgmYXJndik7CiAJCX0KIAkJc3RyYnVmX3JlbGVhc2UoJnN1Ym1vZHVsZV9wYXRoKTsKIAkJc3RyYnVmX3JlbGVhc2UoJnN1Ym1vZHVsZV9naXRfZGlyKTsKIAkJc3RyYnVmX3JlbGVhc2UoJnN1Ym1vZHVsZV9wcmVmaXgpOwogCX0KLQlmcmVlKGFyZ3YpOworCWFyZ3ZfYXJyYXlfY2xlYXIoJmFyZ3YpOwogb3V0OgogCXN0cmluZ19saXN0X2NsZWFyKCZjaGFuZ2VkX3N1Ym1vZHVsZV9wYXRocywgMSk7CiAJcmV0dXJuIHJlc3VsdDsKQEAgLTc1OSw2ICs3NjEsODYgQEAKIAlyZXR1cm4gZGlydHlfc3VibW9kdWxlOwogfQogCitpbnQgc3VibW9kdWxlX3VzZXNfZ2l0ZmlsZShjb25zdCBjaGFyICpwYXRoKQoreworCXN0cnVjdCBjaGlsZF9wcm9jZXNzIGNwOworCWNvbnN0IGNoYXIgKmFyZ3ZbXSA9IHsKKwkJInN1Ym1vZHVsZSIsCisJCSJmb3JlYWNoIiwKKwkJIi0tcXVpZXQiLAorCQkiLS1yZWN1cnNpdmUiLAorCQkidGVzdCAtZiAuZ2l0IiwKKwkJTlVMTCwKKwl9OworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisJY29uc3QgY2hhciAqZ2l0X2RpcjsKKworCXN0cmJ1Zl9hZGRmKCZidWYsICIlcy8uZ2l0IiwgcGF0aCk7CisJZ2l0X2RpciA9IHJlYWRfZ2l0ZmlsZShidWYuYnVmKTsKKwlpZiAoIWdpdF9kaXIpIHsKKwkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CisJCXJldHVybiAwOworCX0KKwlzdHJidWZfcmVsZWFzZSgmYnVmKTsKKworCS8qIE5vdyB0ZXN0IHRoYXQgYWxsIG5lc3RlZCBzdWJtb2R1bGVzIHVzZSBhIGdpdGZpbGUgdG9vICovCisJbWVtc2V0KCZjcCwgMCwgc2l6ZW9mKGNwKSk7CisJY3AuYXJndiA9IGFyZ3Y7CisJY3AuZW52ID0gbG9jYWxfcmVwb19lbnY7CisJY3AuZ2l0X2NtZCA9IDE7CisJY3Aubm9fc3RkaW4gPSAxOworCWNwLm5vX3N0ZGVyciA9IDE7CisJY3Aubm9fc3Rkb3V0ID0gMTsKKwljcC5kaXIgPSBwYXRoOworCWlmIChydW5fY29tbWFuZCgmY3ApKQorCQlyZXR1cm4gMDsKKworCXJldHVybiAxOworfQorCitpbnQgb2tfdG9fcmVtb3ZlX3N1Ym1vZHVsZShjb25zdCBjaGFyICpwYXRoKQoreworCXN0cnVjdCBzdGF0IHN0OworCXNzaXplX3QgbGVuOworCXN0cnVjdCBjaGlsZF9wcm9jZXNzIGNwOworCWNvbnN0IGNoYXIgKmFyZ3ZbXSA9IHsKKwkJInN0YXR1cyIsCisJCSItLXBvcmNlbGFpbiIsCisJCSItdSIsCisJCSItLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUiLAorCQlOVUxMLAorCX07CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKKwlpbnQgb2tfdG9fcmVtb3ZlID0gMTsKKworCWlmICgobHN0YXQocGF0aCwgJnN0KSA8IDApIHx8IGlzX2VtcHR5X2RpcihwYXRoKSkKKwkJcmV0dXJuIDE7CisKKwlpZiAoIXN1Ym1vZHVsZV91c2VzX2dpdGZpbGUocGF0aCkpCisJCXJldHVybiAwOworCisJbWVtc2V0KCZjcCwgMCwgc2l6ZW9mKGNwKSk7CisJY3AuYXJndiA9IGFyZ3Y7CisJY3AuZW52ID0gbG9jYWxfcmVwb19lbnY7CisJY3AuZ2l0X2NtZCA9IDE7CisJY3Aubm9fc3RkaW4gPSAxOworCWNwLm91dCA9IC0xOworCWNwLmRpciA9IHBhdGg7CisJaWYgKHN0YXJ0X2NvbW1hbmQoJmNwKSkKKwkJZGllKCJDb3VsZCBub3QgcnVuICdnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC11YWxsIC0taWdub3JlLXN1Ym1vZHVsZXM9bm9uZScgaW4gc3VibW9kdWxlICVzIiwgcGF0aCk7CisKKwlsZW4gPSBzdHJidWZfcmVhZCgmYnVmLCBjcC5vdXQsIDEwMjQpOworCWlmIChsZW4gPiAyKQorCQlva190b19yZW1vdmUgPSAwOworCWNsb3NlKGNwLm91dCk7CisKKwlpZiAoZmluaXNoX2NvbW1hbmQoJmNwKSkKKwkJZGllKCInZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAtdWFsbCAtLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUnIGZhaWxlZCBpbiBzdWJtb2R1bGUgJXMiLCBwYXRoKTsKKworCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOworCXJldHVybiBva190b19yZW1vdmU7Cit9CisKIHN0YXRpYyBpbnQgZmluZF9maXJzdF9tZXJnZXMoc3RydWN0IG9iamVjdF9hcnJheSAqcmVzdWx0LCBjb25zdCBjaGFyICpwYXRoLAogCQlzdHJ1Y3QgY29tbWl0ICphLCBzdHJ1Y3QgY29tbWl0ICpiKQogewpAQCAtNzg5LDcgKzg3MSw3IEBACiAJCWRpZSgicmV2aXNpb24gd2FsayBzZXR1cCBmYWlsZWQiKTsKIAl3aGlsZSAoKGNvbW1pdCA9IGdldF9yZXZpc2lvbigmcmV2cykpICE9IE5VTEwpIHsKIAkJc3RydWN0IG9iamVjdCAqbyA9ICYoY29tbWl0LT5vYmplY3QpOwotCQlpZiAoaW5fbWVyZ2VfYmFzZXMoYiwgJmNvbW1pdCwgMSkpCisJCWlmIChpbl9tZXJnZV9iYXNlcyhiLCBjb21taXQpKQogCQkJYWRkX29iamVjdF9hcnJheShvLCBOVUxMLCAmbWVyZ2VzKTsKIAl9CiAJcmVzZXRfcmV2aXNpb25fd2FsaygpOwpAQCAtODA0LDcgKzg4Niw3IEBACiAJCWNvbnRhaW5zX2Fub3RoZXIgPSAwOwogCQlmb3IgKGogPSAwOyBqIDwgbWVyZ2VzLm5yOyBqKyspIHsKIAkJCXN0cnVjdCBjb21taXQgKm0yID0gKHN0cnVjdCBjb21taXQgKikgbWVyZ2VzLm9iamVjdHNbal0uaXRlbTsKLQkJCWlmIChpICE9IGogJiYgaW5fbWVyZ2VfYmFzZXMobTIsICZtMSwgMSkpIHsKKwkJCWlmIChpICE9IGogJiYgaW5fbWVyZ2VfYmFzZXMobTIsIG0xKSkgewogCQkJCWNvbnRhaW5zX2Fub3RoZXIgPSAxOwogCQkJCWJyZWFrOwogCQkJfQpAQCAtODY2LDE4ICs5NDgsMTggQEAKIAl9CiAKIAkvKiBjaGVjayB3aGV0aGVyIGJvdGggY2hhbmdlcyBhcmUgZm9yd2FyZCAqLwotCWlmICghaW5fbWVyZ2VfYmFzZXMoY29tbWl0X2Jhc2UsICZjb21taXRfYSwgMSkgfHwKLQkgICAgIWluX21lcmdlX2Jhc2VzKGNvbW1pdF9iYXNlLCAmY29tbWl0X2IsIDEpKSB7CisJaWYgKCFpbl9tZXJnZV9iYXNlcyhjb21taXRfYmFzZSwgY29tbWl0X2EpIHx8CisJICAgICFpbl9tZXJnZV9iYXNlcyhjb21taXRfYmFzZSwgY29tbWl0X2IpKSB7CiAJCU1FUkdFX1dBUk5JTkcocGF0aCwgImNvbW1pdHMgZG9uJ3QgZm9sbG93IG1lcmdlLWJhc2UiKTsKIAkJcmV0dXJuIDA7CiAJfQogCiAJLyogQ2FzZSAjMTogYSBpcyBjb250YWluZWQgaW4gYiBvciB2aWNlIHZlcnNhICovCi0JaWYgKGluX21lcmdlX2Jhc2VzKGNvbW1pdF9hLCAmY29tbWl0X2IsIDEpKSB7CisJaWYgKGluX21lcmdlX2Jhc2VzKGNvbW1pdF9hLCBjb21taXRfYikpIHsKIAkJaGFzaGNweShyZXN1bHQsIGIpOwogCQlyZXR1cm4gMTsKIAl9Ci0JaWYgKGluX21lcmdlX2Jhc2VzKGNvbW1pdF9iLCAmY29tbWl0X2EsIDEpKSB7CisJaWYgKGluX21lcmdlX2Jhc2VzKGNvbW1pdF9iLCBjb21taXRfYSkpIHsKIAkJaGFzaGNweShyZXN1bHQsIGEpOwogCQlyZXR1cm4gMTsKIAl9CmRpZmYgLS1naXQgYS9zdWJtb2R1bGUuaCBiL3N1Ym1vZHVsZS5oCmluZGV4IGUxMDViMGUuLmM3ZmZjN2MgMTAwNjQ0Ci0tLSBhL3N1Ym1vZHVsZS5oCisrKyBiL3N1Ym1vZHVsZS5oCkBAIC0yLDYgKzIsNyBAQAogI2RlZmluZSBTVUJNT0RVTEVfSAogCiBzdHJ1Y3QgZGlmZl9vcHRpb25zOworc3RydWN0IGFyZ3ZfYXJyYXk7CiAKIGVudW0gewogCVJFQ1VSU0VfU1VCTU9EVUxFU19PTl9ERU1BTkQgPSAtMSwKQEAgLTE4LDE1ICsxOSwxOCBAQAogdm9pZCBoYW5kbGVfaWdub3JlX3N1Ym1vZHVsZXNfYXJnKHN0cnVjdCBkaWZmX29wdGlvbnMgKmRpZmZvcHQsIGNvbnN0IGNoYXIgKik7CiBpbnQgcGFyc2VfZmV0Y2hfcmVjdXJzZV9zdWJtb2R1bGVzX2FyZyhjb25zdCBjaGFyICpvcHQsIGNvbnN0IGNoYXIgKmFyZyk7CiB2b2lkIHNob3dfc3VibW9kdWxlX3N1bW1hcnkoRklMRSAqZiwgY29uc3QgY2hhciAqcGF0aCwKKwkJY29uc3QgY2hhciAqbGluZV9wcmVmaXgsCiAJCXVuc2lnbmVkIGNoYXIgb25lWzIwXSwgdW5zaWduZWQgY2hhciB0d29bMjBdLAotCQl1bnNpZ25lZCBkaXJ0eV9zdWJtb2R1bGUsCisJCXVuc2lnbmVkIGRpcnR5X3N1Ym1vZHVsZSwgY29uc3QgY2hhciAqbWV0YSwKIAkJY29uc3QgY2hhciAqZGVsLCBjb25zdCBjaGFyICphZGQsIGNvbnN0IGNoYXIgKnJlc2V0KTsKIHZvaWQgc2V0X2NvbmZpZ19mZXRjaF9yZWN1cnNlX3N1Ym1vZHVsZXMoaW50IHZhbHVlKTsKIHZvaWQgY2hlY2tfZm9yX25ld19zdWJtb2R1bGVfY29tbWl0cyh1bnNpZ25lZCBjaGFyIG5ld19zaGExWzIwXSk7Ci1pbnQgZmV0Y2hfcG9wdWxhdGVkX3N1Ym1vZHVsZXMoaW50IG51bV9vcHRpb25zLCBjb25zdCBjaGFyICoqb3B0aW9ucywKK2ludCBmZXRjaF9wb3B1bGF0ZWRfc3VibW9kdWxlcyhjb25zdCBzdHJ1Y3QgYXJndl9hcnJheSAqb3B0aW9ucywKIAkJCSAgICAgICBjb25zdCBjaGFyICpwcmVmaXgsIGludCBjb21tYW5kX2xpbmVfb3B0aW9uLAogCQkJICAgICAgIGludCBxdWlldCk7CiB1bnNpZ25lZCBpc19zdWJtb2R1bGVfbW9kaWZpZWQoY29uc3QgY2hhciAqcGF0aCwgaW50IGlnbm9yZV91bnRyYWNrZWQpOworaW50IHN1Ym1vZHVsZV91c2VzX2dpdGZpbGUoY29uc3QgY2hhciAqcGF0aCk7CitpbnQgb2tfdG9fcmVtb3ZlX3N1Ym1vZHVsZShjb25zdCBjaGFyICpwYXRoKTsKIGludCBtZXJnZV9zdWJtb2R1bGUodW5zaWduZWQgY2hhciByZXN1bHRbMjBdLCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCB1bnNpZ25lZCBjaGFyIGJhc2VbMjBdLAogCQkgICAgY29uc3QgdW5zaWduZWQgY2hhciBhWzIwXSwgY29uc3QgdW5zaWduZWQgY2hhciBiWzIwXSwgaW50IHNlYXJjaCk7CiBpbnQgZmluZF91bnB1c2hlZF9zdWJtb2R1bGVzKHVuc2lnbmVkIGNoYXIgbmV3X3NoYTFbMjBdLCBjb25zdCBjaGFyICpyZW1vdGVzX25hbWUsCmRpZmYgLS1naXQgYS9zeW1saW5rcy5jIGIvc3ltbGlua3MuYwppbmRleCAyOTAwMzY3Li5jMmI0MWE4IDEwMDY0NAotLS0gYS9zeW1saW5rcy5jCisrKyBiL3N5bWxpbmtzLmMKQEAgLTEsNSArMSw4IEBACiAjaW5jbHVkZSAiY2FjaGUuaCIKIAorc3RhdGljIGludCB0aHJlYWRlZF9jaGVja19sZWFkaW5nX3BhdGgoc3RydWN0IGNhY2hlX2RlZiAqY2FjaGUsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4pOworc3RhdGljIGludCB0aHJlYWRlZF9oYXNfZGlyc19vbmx5X3BhdGgoc3RydWN0IGNhY2hlX2RlZiAqY2FjaGUsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4sIGludCBwcmVmaXhfbGVuKTsKKwogLyoKICAqIFJldHVybnMgdGhlIGxlbmd0aCAob24gYSBwYXRoIGNvbXBvbmVudCBiYXNpcykgb2YgdGhlIGxvbmdlc3QKICAqIGNvbW1vbiBwcmVmaXggbWF0Y2ggb2YgJ25hbWVfYScgYW5kICduYW1lX2InLgpAQCAtMjMxLDcgKzIzNCw3IEBACiAgKiBSZXR1cm4gcGF0aCBsZW5ndGggaWYgbGVhZGluZyBwYXRoIGV4aXN0cyBhbmQgaXMgbmVpdGhlciBhCiAgKiBkaXJlY3Rvcnkgbm9yIGEgc3ltbGluay4KICAqLwotaW50IHRocmVhZGVkX2NoZWNrX2xlYWRpbmdfcGF0aChzdHJ1Y3QgY2FjaGVfZGVmICpjYWNoZSwgY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbikKK3N0YXRpYyBpbnQgdGhyZWFkZWRfY2hlY2tfbGVhZGluZ19wYXRoKHN0cnVjdCBjYWNoZV9kZWYgKmNhY2hlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbGVuKQogewogCWludCBmbGFnczsKIAlpbnQgbWF0Y2hfbGVuID0gbHN0YXRfY2FjaGVfbWF0Y2hsZW4oY2FjaGUsIG5hbWUsIGxlbiwgJmZsYWdzLApAQCAtMjYzLDcgKzI2Niw3IEBACiAgKiAncHJlZml4X2xlbicsIHRodXMgd2UgdGhlbiBhbGxvdyBmb3Igc3ltbGlua3MgaW4gdGhlIHByZWZpeCBwYXJ0IGFzCiAgKiBsb25nIGFzIHRob3NlIHBvaW50cyB0byByZWFsIGV4aXN0aW5nIGRpcmVjdG9yaWVzLgogICovCi1pbnQgdGhyZWFkZWRfaGFzX2RpcnNfb25seV9wYXRoKHN0cnVjdCBjYWNoZV9kZWYgKmNhY2hlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbGVuLCBpbnQgcHJlZml4X2xlbikKK3N0YXRpYyBpbnQgdGhyZWFkZWRfaGFzX2RpcnNfb25seV9wYXRoKHN0cnVjdCBjYWNoZV9kZWYgKmNhY2hlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbGVuLCBpbnQgcHJlZml4X2xlbikKIHsKIAlyZXR1cm4gbHN0YXRfY2FjaGUoY2FjaGUsIG5hbWUsIGxlbiwKIAkJCSAgIEZMX0RJUnxGTF9GVUxMUEFUSCwgcHJlZml4X2xlbikgJgpkaWZmIC0tZ2l0IGEvdC9HaXQtU1ZOLzAwY29tcGlsZS50IGIvdC9HaXQtU1ZOLzAwY29tcGlsZS50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5MmZlZTQKLS0tIC9kZXYvbnVsbAorKysgYi90L0dpdC1TVk4vMDBjb21waWxlLnQKQEAgLTAsMCArMSwxNCBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiA3OworCityZXF1aXJlX29rICdHaXQ6OlNWTic7CityZXF1aXJlX29rICdHaXQ6OlNWTjo6VXRpbHMnOworcmVxdWlyZV9vayAnR2l0OjpTVk46OlJhJzsKK3JlcXVpcmVfb2sgJ0dpdDo6U1ZOOjpMb2cnOworcmVxdWlyZV9vayAnR2l0OjpTVk46Ok1pZ3JhdGlvbic7CityZXF1aXJlX29rICdHaXQ6OkluZGV4SW5mbyc7CityZXF1aXJlX29rICdHaXQ6OlNWTjo6R2xvYlNwZWMnOwpkaWZmIC0tZ2l0IGEvdC9HaXQtU1ZOL1V0aWxzL2FkZF9wYXRoX3RvX3VybC50IGIvdC9HaXQtU1ZOL1V0aWxzL2FkZF9wYXRoX3RvX3VybC50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmYmQ4NzgKLS0tIC9kZXYvbnVsbAorKysgYi90L0dpdC1TVk4vVXRpbHMvYWRkX3BhdGhfdG9fdXJsLnQKQEAgLTAsMCArMSwyNyBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgVGVzdDo6TW9yZSAnbm9fcGxhbic7CisKK3VzZSBHaXQ6OlNWTjo6VXRpbHMgcXcoCisJYWRkX3BhdGhfdG9fdXJsCispOworCisjIEEgcmVmZXJlbmNlIGNhbm5vdCBiZSBhIGhhc2gga2V5LCBzbyB3ZSB1c2UgYW4gYXJyYXkuCitteSBAdGVzdHMgPSAoCisJWyJodHRwOi8veC5jb20iLCAiYmFyIl0JCQk9PiAnaHR0cDovL3guY29tL2JhcicsCisJWyJodHRwOi8veC5jb20iLCAiIl0JCQk9PiAnaHR0cDovL3guY29tJywKKwlbImh0dHA6Ly94LmNvbS9mb28vIiwgdW5kZWZdCQk9PiAnaHR0cDovL3guY29tL2Zvby8nLAorCVsiaHR0cDovL3guY29tL2Zvby8iLCAiL2Jhci9iYXovIl0JPT4gJ2h0dHA6Ly94LmNvbS9mb28vYmFyL2Jhei8nLAorCVsiaHR0cDovL3guY29tIiwgJ3BlciVjZW50J10JCT0+ICdodHRwOi8veC5jb20vcGVyJTI1Y2VudCcsCispOworCit3aGlsZShAdGVzdHMpIHsKKwlteSgkaGF2ZSwgJHdhbnQpID0gc3BsaWNlIEB0ZXN0cywgMCwgMjsKKworCW15ICRhcmdzID0gam9pbiAiLCAiLCBtYXAgeyBxcVsnJF8nXSB9IG1hcCB7IGRlZmluZWQoJF8pID8gJF8gOiAndW5kZWYnIH0gQCRoYXZlOworCW15ICRuYW1lID0gImFkZF9wYXRoX3RvX3VybCgkYXJncykgZXEgJHdhbnQiOworCWlzIGFkZF9wYXRoX3RvX3VybChAJGhhdmUpLCAkd2FudCwgJG5hbWU7Cit9CmRpZmYgLS1naXQgYS90L0dpdC1TVk4vVXRpbHMvY2FuX2NvbXByZXNzLnQgYi90L0dpdC1TVk4vVXRpbHMvY2FuX2NvbXByZXNzLnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdiNDliOAotLS0gL2Rldi9udWxsCisrKyBiL3QvR2l0LVNWTi9VdGlscy9jYW5fY29tcHJlc3MudApAQCAtMCwwICsxLDExIEBACisjIS91c3IvYmluL3BlcmwKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFRlc3Q6Ok1vcmUgJ25vX3BsYW4nOworCit1c2UgR2l0OjpTVk46OlV0aWxzIHF3KGNhbl9jb21wcmVzcyk7CisKKyMgISEgaXMgdGhlICJjb252ZXJ0IHRoaXMgdG8gYm9vbGVhbiIgb3BlcmF0b3IuCitpcyAhIWNhbl9jb21wcmVzcygpLCAhIWV2YWwgeyByZXF1aXJlIENvbXByZXNzOjpabGliIH07CmRpZmYgLS1naXQgYS90L0dpdC1TVk4vVXRpbHMvY2Fub25pY2FsaXplX3VybC50IGIvdC9HaXQtU1ZOL1V0aWxzL2Nhbm9uaWNhbGl6ZV91cmwudApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTc5NWFiCi0tLSAvZGV2L251bGwKKysrIGIvdC9HaXQtU1ZOL1V0aWxzL2Nhbm9uaWNhbGl6ZV91cmwudApAQCAtMCwwICsxLDI2IEBACisjIS91c3IvYmluL2VudiBwZXJsCisKKyMgVGVzdCBvdXIgb3duIGhvbWUgcm9sbGVkIFVSTCBjYW5vbmljYWxpemVyLiAgVGVzdCB0aGUgcHJpdmF0ZSBvbmUKKyMgZGlyZWN0bHkgYmVjYXVzZSB3ZSBjYW4ndCBwcmVkaWN0IHdoYXQgdGhlIFNWTiBBUEkgaXMgZG9pbmcgdG8gZG8uCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBUZXN0OjpNb3JlICdub19wbGFuJzsKKwordXNlIEdpdDo6U1ZOOjpVdGlsczsKK215ICRjYW5vbmljYWxpemVfdXJsID0gXCZHaXQ6OlNWTjo6VXRpbHM6Ol9jYW5vbmljYWxpemVfdXJsX291cnNlbHZlczsKKworbXkgJXRlc3RzID0gKAorCSJodHRwOi8veC5jb20iCQkJPT4gImh0dHA6Ly94LmNvbSIsCisJImh0dHA6Ly94LmNvbS8iCQkJPT4gImh0dHA6Ly94LmNvbSIsCisJImh0dHA6Ly94LmNvbS9mb28vYmFyIgkJPT4gImh0dHA6Ly94LmNvbS9mb28vYmFyIiwKKwkiaHR0cDovL3guY29tLy9mb28vL2Jhci8vIgk9PiAiaHR0cDovL3guY29tL2Zvby9iYXIiLAorCSJodHRwOi8veC5jb20vICAvJS8iCQk9PiAiaHR0cDovL3guY29tLyUyMCUyMC8lMjUiLAorKTsKKworZm9yIG15ICRhcmcgKGtleXMgJXRlc3RzKSB7CisJbXkgJHdhbnQgPSAkdGVzdHN7JGFyZ307CisKKwlpcyAkY2Fub25pY2FsaXplX3VybC0+KCRhcmcpLCAkd2FudCwgImNhbm9uaWNhbGl6ZV91cmwoJyRhcmcnKSA9PiAkd2FudCI7Cit9CmRpZmYgLS1naXQgYS90L0dpdC1TVk4vVXRpbHMvY29sbGFwc2VfZG90ZG90LnQgYi90L0dpdC1TVk4vVXRpbHMvY29sbGFwc2VfZG90ZG90LnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRhMWNjZQotLS0gL2Rldi9udWxsCisrKyBiL3QvR2l0LVNWTi9VdGlscy9jb2xsYXBzZV9kb3Rkb3QudApAQCAtMCwwICsxLDIzIEBACisjIS91c3IvYmluL2VudiBwZXJsCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBUZXN0OjpNb3JlICdub19wbGFuJzsKKwordXNlIEdpdDo6U1ZOOjpVdGlsczsKK215ICRjb2xsYXBzZV9kb3Rkb3QgPSBcJkdpdDo6U1ZOOjpVdGlsczo6X2NvbGxhcHNlX2RvdGRvdDsKKworbXkgJXRlc3RzID0gKAorCSJmb28vYmFyL2JheiIJCQk9PiAiZm9vL2Jhci9iYXoiLAorCSIuLiIJCQkJPT4gIi4uIiwKKwkiZm9vLy4uIgkJCT0+ICIiLAorCSIvZm9vL2Jhci8uLi8uLi9iYXoiCQk9PiAiL2JheiIsCisJImRlZXBseS8uLi8uL2RlZXBseS9uZXN0ZWQiCT0+ICIuL2RlZXBseS9uZXN0ZWQiLAorKTsKKworZm9yIG15ICRhcmcgKGtleXMgJXRlc3RzKSB7CisJbXkgJHdhbnQgPSAkdGVzdHN7JGFyZ307CisKKwlpcyAkY29sbGFwc2VfZG90ZG90LT4oJGFyZyksICR3YW50LCAiX2NvbGxhcHNlX2RvdGRvdCgnJGFyZycpID0+ICR3YW50IjsKK30KZGlmZiAtLWdpdCBhL3QvR2l0LVNWTi9VdGlscy9mYXRhbC50IGIvdC9HaXQtU1ZOL1V0aWxzL2ZhdGFsLnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDllMTQzOAotLS0gL2Rldi9udWxsCisrKyBiL3QvR2l0LVNWTi9VdGlscy9mYXRhbC50CkBAIC0wLDAgKzEsMzQgQEAKKyMhL3Vzci9iaW4vcGVybAorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgVGVzdDo6TW9yZSAnbm9fcGxhbic7CisKK0JFR0lOIHsKKwkjIE92ZXJyaWRlIGV4aXQgYXQgQkVHSU4gdGltZSBiZWZvcmUgR2l0OjpTVk46OlV0aWxzIGlzIGxvYWRlZAorCSMgc28gaXQgd2lsbCBzZWUgb3VyIGxvY2FsIGV4aXQgbGF0ZXIuCisJKkNPUkU6OkdMT0JBTDo6ZXhpdCA9IHN1Yig7JCkgeworCXJldHVybiBAXyA/IENPUkU6OmV4aXQoJF9bMF0pIDogQ09SRTo6ZXhpdCgpOworCX07Cit9CisKK3VzZSBHaXQ6OlNWTjo6VXRpbHMgcXcoZmF0YWwpOworCisjIGZhdGFsKCkKK3sKKwkjIENhcHR1cmUgdGhlIGV4aXQgY29kZSBhbmQgcHJldmVudCBleGl0LgorCW15ICRleGl0X3N0YXR1czsKKwlubyB3YXJuaW5ncyAncmVkZWZpbmUnOworCWxvY2FsICpDT1JFOjpHTE9CQUw6OmV4aXQgPSBzdWIgeyAkZXhpdF9zdGF0dXMgPSAkX1swXSB8fCAwIH07CisKKwkjIFRyYXAgZmF0YWwncyBtZXNzYWdlIHRvIFNUREVSUgorCW15ICRzdGRlcnI7CisJY2xvc2UgU1RERVJSOworCW9rIG9wZW4gU1RERVJSLCAiPiIsIFwkc3RkZXJyOworCisJZmF0YWwgIlNvbWUiLCAiU3R1ZmYiLCAiSGFwcGVuZWQiOworCisJaXMgJHN0ZGVyciwgIlNvbWUgU3R1ZmYgSGFwcGVuZWRcbiI7CisJaXMgJGV4aXRfc3RhdHVzLCAxOworfQpkaWZmIC0tZ2l0IGEvdC9HaXQtU1ZOL1V0aWxzL2pvaW5fcGF0aHMudCBiL3QvR2l0LVNWTi9VdGlscy9qb2luX3BhdGhzLnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ0ODhlNwotLS0gL2Rldi9udWxsCisrKyBiL3QvR2l0LVNWTi9VdGlscy9qb2luX3BhdGhzLnQKQEAgLTAsMCArMSwzMiBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgVGVzdDo6TW9yZSAnbm9fcGxhbic7CisKK3VzZSBHaXQ6OlNWTjo6VXRpbHMgcXcoCisJam9pbl9wYXRocworKTsKKworIyBBIHJlZmVyZW5jZSBjYW5ub3QgYmUgYSBoYXNoIGtleSwgc28gd2UgdXNlIGFuIGFycmF5LgorbXkgQHRlc3RzID0gKAorCVtdCQkJCQk9PiAnJywKKwlbIi94LmNvbSIsICJiYXIiXQkJCT0+ICcveC5jb20vYmFyJywKKwlbInguY29tIiwgIiJdCQkJCT0+ICd4LmNvbScsCisJWyIveC5jb20vZm9vLyIsIHVuZGVmLCAiYmFyIl0JCT0+ICcveC5jb20vZm9vL2JhcicsCisJWyJ4LmNvbS9mb28vIiwgIi9iYXIvYmF6LyJdCQk9PiAneC5jb20vZm9vL2Jhci9iYXovJywKKwlbImZvbyIsICJiYXIiXQkJCQk9PiAnZm9vL2JhcicsCisJWyIvZm9vL2JhciIsICJiYXoiLCAiL2JpZmYiXQkJPT4gJy9mb28vYmFyL2Jhei9iaWZmJywKKwlbIiIsIHVuZGVmLCAiLiJdCQkJPT4gJy4nLAorCVtdCQkJCQk9PiAnJywKKworKTsKKword2hpbGUoQHRlc3RzKSB7CisJbXkoJGhhdmUsICR3YW50KSA9IHNwbGljZSBAdGVzdHMsIDAsIDI7CisKKwlteSAkYXJncyA9IGpvaW4gIiwgIiwgbWFwIHsgcXFbJyRfJ10gfSBtYXAgeyBkZWZpbmVkKCRfKSA/ICRfIDogJ3VuZGVmJyB9IEAkaGF2ZTsKKwlteSAkbmFtZSA9ICJqb2luX3BhdGhzKCRhcmdzKSBlcSAnJHdhbnQnIjsKKwlpcyBqb2luX3BhdGhzKEAkaGF2ZSksICR3YW50LCAkbmFtZTsKK30KZGlmZiAtLWdpdCBhL3QvTWFrZWZpbGUgYi90L01ha2VmaWxlCmluZGV4IDg4ZTI4OWYuLjQ0Y2E3ZDMgMTAwNjQ0Ci0tLSBhL3QvTWFrZWZpbGUKKysrIGIvdC9NYWtlZmlsZQpAQCAtNiwxNiArNiwxOCBAQAogLWluY2x1ZGUgLi4vY29uZmlnLm1hay5hdXRvZ2VuCiAtaW5jbHVkZSAuLi9jb25maWcubWFrCiAKLSNHSVRfVEVTVF9PUFRTPS0tdmVyYm9zZSAtLWRlYnVnCisjR0lUX1RFU1RfT1BUUyA9IC0tdmVyYm9zZSAtLWRlYnVnCiBTSEVMTF9QQVRIID89ICQoU0hFTEwpCiBQRVJMX1BBVEggPz0gL3Vzci9iaW4vcGVybAogVEFSID89ICQoVEFSKQogUk0gPz0gcm0gLWYKIFBST1ZFID89IHByb3ZlCiBERUZBVUxUX1RFU1RfVEFSR0VUID89IHRlc3QKK1RFU1RfTElOVCA/PSB0ZXN0LWxpbnQtZHVwbGljYXRlcyB0ZXN0LWxpbnQtZXhlY3V0YWJsZQogCiAjIFNoZWxsIHF1b3RlOwogU0hFTExfUEFUSF9TUSA9ICQoc3Vic3QgJywnXCcnLCQoU0hFTExfUEFUSCkpCitQRVJMX1BBVEhfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKFBFUkxfUEFUSCkpCiAKIFQgPSAkKHNvcnQgJCh3aWxkY2FyZCB0WzAtOV1bMC05XVswLTldWzAtOV0tKi5zaCkpCiBUU1ZOID0gJChzb3J0ICQod2lsZGNhcmQgdDkxWzAtOV1bMC05XS0qLnNoKSkKQEAgLTQzLDcgKzQ1LDcgQEAKIGNsZWFuOiBjbGVhbi1leGNlcHQtcHJvdmUtY2FjaGUKIAkkKFJNKSAucHJvdmUKIAotdGVzdC1saW50OiB0ZXN0LWxpbnQtZHVwbGljYXRlcyB0ZXN0LWxpbnQtZXhlY3V0YWJsZQordGVzdC1saW50OiB0ZXN0LWxpbnQtZHVwbGljYXRlcyB0ZXN0LWxpbnQtZXhlY3V0YWJsZSB0ZXN0LWxpbnQtc2hlbGwtc3ludGF4CiAKIHRlc3QtbGludC1kdXBsaWNhdGVzOgogCUBkdXBzPWBlY2hvICQoVCkgfCB0ciAnICcgJ1xuJyB8IHNlZCAncy8tLiovLycgfCBzb3J0IHwgdW5pcSAtZGAgJiYgXApAQCAtNTUsNiArNTcsOSBAQAogCQl0ZXN0IC16ICIkJGJhZCIgfHwgeyBcCiAJCWVjaG8gPiYyICJub24tZXhlY3V0YWJsZSB0ZXN0czoiICQkYmFkOyBleGl0IDE7IH0KIAordGVzdC1saW50LXNoZWxsLXN5bnRheDoKKwlAJyQoUEVSTF9QQVRIX1NRKScgY2hlY2stbm9uLXBvcnRhYmxlLXNoZWxsLnBsICQoVCkKKwogYWdncmVnYXRlLXJlc3VsdHMtYW5kLWNsZWFudXA6ICQoVCkKIAkkKE1BS0UpIGFnZ3JlZ2F0ZS1yZXN1bHRzCiAJJChNQUtFKSBjbGVhbgpAQCAtNzgsNDIgKzgzLDQgQEAKIHBlcmY6CiAJJChNQUtFKSAtQyBwZXJmLyBhbGwKIAotIyBTbW9rZSB0ZXN0aW5nIHRhcmdldHMKLS1pbmNsdWRlIC4uL0dJVC1WRVJTSU9OLUZJTEUKLXVuYW1lX1MgOj0gJChzaGVsbCBzaCAtYyAndW5hbWUgLXMgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duJykKLXVuYW1lX00gOj0gJChzaGVsbCBzaCAtYyAndW5hbWUgLW0gMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duJykKLQotdGVzdC1yZXN1bHRzOgotCW1rZGlyIC1wIHRlc3QtcmVzdWx0cwotCi10ZXN0LXJlc3VsdHMvZ2l0LXNtb2tlLnRhci5nejogdGVzdC1yZXN1bHRzCi0JJChQRVJMX1BBVEgpIC4vaGFybmVzcyBcCi0JCS0tYXJjaGl2ZT0idGVzdC1yZXN1bHRzL2dpdC1zbW9rZS50YXIuZ3oiIFwKLQkJJChUKQotCi1zbW9rZTogdGVzdC1yZXN1bHRzL2dpdC1zbW9rZS50YXIuZ3oKLQotU01PS0VfVVBMT0FEX0ZMQUdTID0KLWlmZGVmIFNNT0tFX1VTRVJOQU1FCi0JU01PS0VfVVBMT0FEX0ZMQUdTICs9IC1GIHVzZXJuYW1lPSIkKFNNT0tFX1VTRVJOQU1FKSIgLUYgcGFzc3dvcmQ9IiQoU01PS0VfUEFTU1dPUkQpIgotZW5kaWYKLWlmZGVmIFNNT0tFX0NPTU1FTlQKLQlTTU9LRV9VUExPQURfRkxBR1MgKz0gLUYgY29tbWVudHM9IiQoU01PS0VfQ09NTUVOVCkiCi1lbmRpZgotaWZkZWYgU01PS0VfVEFHUwotCVNNT0tFX1VQTE9BRF9GTEFHUyArPSAtRiB0YWdzPSIkKFNNT0tFX1RBR1MpIgotZW5kaWYKLQotc21va2VfcmVwb3J0OiBzbW9rZQotCWN1cmwgXAotCQktSCAiRXhwZWN0OiAiIFwKLQkJLUYgcHJvamVjdD1HaXQgXAotCQktRiBhcmNoaXRlY3R1cmU9IiQodW5hbWVfTSkiIFwKLQkJLUYgcGxhdGZvcm09IiQodW5hbWVfUykiIFwKLQkJLUYgcmV2aXNpb249IiQoR0lUX1ZFUlNJT04pIiBcCi0JCS1GIHJlcG9ydF9maWxlPUB0ZXN0LXJlc3VsdHMvZ2l0LXNtb2tlLnRhci5neiBcCi0JCSQoU01PS0VfVVBMT0FEX0ZMQUdTKSBcCi0JCWh0dHA6Ly9zbW9rZS5naXQubml4LmlzL2FwcC9wcm9qZWN0cy9wcm9jZXNzX2FkZF9yZXBvcnQvMSBcCi0JfCBncmVwIC12IF5SZWRpcmVjdGluZwotCiAuUEhPTlk6IHByZS1jbGVhbiAkKFQpIGFnZ3JlZ2F0ZS1yZXN1bHRzIGNsZWFuIHZhbGdyaW5kIHBlcmYKZGlmZiAtLWdpdCBhL3QvUkVBRE1FIGIvdC9SRUFETUUKaW5kZXggMzUzNGY0My4uMzViM2M1YyAxMDA2NDQKLS0tIGEvdC9SRUFETUUKKysrIGIvdC9SRUFETUUKQEAgLTg2LDIzICs4NiwzNSBAQAogCiAtLWltbWVkaWF0ZTo6CiAJVGhpcyBjYXVzZXMgdGhlIHRlc3QgdG8gaW1tZWRpYXRlbHkgZXhpdCB1cG9uIHRoZSBmaXJzdAotCWZhaWxlZCB0ZXN0LgorCWZhaWxlZCB0ZXN0LiBDbGVhbnVwIGNvbW1hbmRzIHJlcXVlc3RlZCB3aXRoCisJdGVzdF93aGVuX2ZpbmlzaGVkIGFyZSBub3QgZXhlY3V0ZWQgaWYgdGhlIHRlc3QgZmFpbGVkLAorCWluIG9yZGVyIHRvIGtlZXAgdGhlIHN0YXRlIGZvciBpbnNwZWN0aW9uIGJ5IHRoZSB0ZXN0ZXIKKwl0byBkaWFnbm9zZSB0aGUgYnVnLgogCiAtLWxvbmctdGVzdHM6OgogCVRoaXMgY2F1c2VzIGFkZGl0aW9uYWwgbG9uZy1ydW5uaW5nIHRlc3RzIHRvIGJlIHJ1biAod2hlcmUKIAlhdmFpbGFibGUpLCBmb3IgbW9yZSBleGhhdXN0aXZlIHRlc3RpbmcuCiAKLS0tdmFsZ3JpbmQ6OgotCUV4ZWN1dGUgYWxsIEdpdCBiaW5hcmllcyB3aXRoIHZhbGdyaW5kIGFuZCBleGl0IHdpdGggc3RhdHVzCi0JMTI2IG9uIGVycm9ycyAoanVzdCBsaWtlIHJlZ3VsYXIgdGVzdHMsIHRoaXMgd2lsbCBvbmx5IHN0b3AKLQl0aGUgdGVzdCBzY3JpcHQgd2hlbiBydW5uaW5nIHVuZGVyIC1pKS4gIFZhbGdyaW5kIGVycm9ycwotCWdvIHRvIHN0ZGVyciwgc28geW91IG1pZ2h0IHdhbnQgdG8gcGFzcyB0aGUgLXYgb3B0aW9uLCB0b28uCistLXZhbGdyaW5kPTx0b29sPjo6CisJRXhlY3V0ZSBhbGwgR2l0IGJpbmFyaWVzIHVuZGVyIHZhbGdyaW5kIHRvb2wgPHRvb2w+IGFuZCBleGl0CisJd2l0aCBzdGF0dXMgMTI2IG9uIGVycm9ycyAoanVzdCBsaWtlIHJlZ3VsYXIgdGVzdHMsIHRoaXMgd2lsbAorCW9ubHkgc3RvcCB0aGUgdGVzdCBzY3JpcHQgd2hlbiBydW5uaW5nIHVuZGVyIC1pKS4KIAogCVNpbmNlIGl0IG1ha2VzIG5vIHNlbnNlIHRvIHJ1biB0aGUgdGVzdHMgd2l0aCAtLXZhbGdyaW5kIGFuZAogCW5vdCBzZWUgYW55IG91dHB1dCwgdGhpcyBvcHRpb24gaW1wbGllcyAtLXZlcmJvc2UuICBGb3IKIAljb252ZW5pZW5jZSwgaXQgYWxzbyBpbXBsaWVzIC0tdGVlLgogCi0JTm90ZSB0aGF0IHZhbGdyaW5kIGlzIHJ1biB3aXRoIHRoZSBvcHRpb24gLS1sZWFrLWNoZWNrPW5vLAorCTx0b29sPiBkZWZhdWx0cyB0byAnbWVtY2hlY2snLCBqdXN0IGxpa2UgdmFsZ3JpbmQgaXRzZWxmLgorCU90aGVyIHBhcnRpY3VsYXJseSB1c2VmdWwgY2hvaWNlcyBpbmNsdWRlICdoZWxncmluZCcgYW5kCisJJ2RyZCcsIGJ1dCB5b3UgbWF5IHVzZSBhbnkgdG9vbCByZWNvZ25pemVkIGJ5IHlvdXIgdmFsZ3JpbmQKKwlpbnN0YWxsYXRpb24uCisKKwlBcyBhIHNwZWNpYWwgY2FzZSwgPHRvb2w+IGNhbiBiZSAnbWVtY2hlY2stZmFzdCcsIHdoaWNoIHVzZXMKKwltZW1jaGVjayBidXQgZGlzYWJsZXMgLS10cmFjay1vcmlnaW5zLiAgVXNlIHRoaXMgaWYgeW91IGFyZQorCXJ1bm5pbmcgdGVzdHMgaW4gYnVsaywgdG8gc2VlIGlmIHRoZXJlIGFyZSBfYW55XyBtZW1vcnkKKwlpc3N1ZXMuCisKKwlOb3RlIHRoYXQgbWVtY2hlY2sgaXMgcnVuIHdpdGggdGhlIG9wdGlvbiAtLWxlYWstY2hlY2s9bm8sCiAJYXMgdGhlIGdpdCBwcm9jZXNzIGlzIHNob3J0LWxpdmVkIGFuZCBzb21lIGVycm9ycyBhcmUgbm90CiAJaW50ZXJlc3RpbmcuIEluIG9yZGVyIHRvIHJ1biBhIHNpbmdsZSBjb21tYW5kIHVuZGVyIHRoZSBzYW1lCiAJY29uZGl0aW9ucyBtYW51YWxseSwgeW91IHNob3VsZCBzZXQgR0lUX1ZBTEdSSU5EIHRvIHBvaW50IHRvCkBAIC0zMDcsNiArMzE5LDI4IEBACiAgICBVc2UgdGVzdF9kb25lIGluc3RlYWQgaWYgeW91IG5lZWQgdG8gc3RvcCB0aGUgdGVzdHMgZWFybHkgKHNlZQogICAgIlNraXBwaW5nIHRlc3RzIiBiZWxvdykuCiAKKyAtIHVzZSAnISBnaXQgY21kJyB3aGVuIHlvdSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgZ2l0IGNvbW1hbmQgZXhpdHMKKyAgIHdpdGggZmFpbHVyZSBpbiBhIGNvbnRyb2xsZWQgd2F5IGJ5IGNhbGxpbmcgImRpZSgpIi4gIEluc3RlYWQsCisgICB1c2UgJ3Rlc3RfbXVzdF9mYWlsIGdpdCBjbWQnLiAgVGhpcyB3aWxsIHNpZ25hbCBhIGZhaWx1cmUgaWYgZ2l0CisgICBkaWVzIGluIGFuIHVuZXhwZWN0ZWQgd2F5IChlLmcuIHNlZ2ZhdWx0KS4KKworICAgT24gdGhlIG90aGVyIGhhbmQsIGRvbid0IHVzZSB0ZXN0X211c3RfZmFpbCBmb3IgcnVubmluZyByZWd1bGFyCisgICBwbGF0Zm9ybSBjb21tYW5kczsganVzdCB1c2UgJyEgY21kJy4KKworIC0gdXNlIHBlcmwgd2l0aG91dCBzcGVsbGluZyBpdCBhcyAiJFBFUkxfUEFUSCIuIFRoaXMgaXMgdG8gaGVscCBvdXIKKyAgIGZyaWVuZHMgb24gV2luZG93cyB3aGVyZSB0aGUgcGxhdGZvcm0gUGVybCBvZnRlbiBhZGRzIENSIGJlZm9yZQorICAgdGhlIGVuZCBvZiBsaW5lLCBhbmQgdGhleSBidW5kbGUgR2l0IHdpdGggYSB2ZXJzaW9uIG9mIFBlcmwgdGhhdAorICAgZG9lcyBub3QgZG8gc28sIHdob3NlIHBhdGggaXMgc3BlY2lmaWVkIHdpdGggJFBFUkxfUEFUSC4KKworIC0gdXNlIHNoIHdpdGhvdXQgc3BlbGxpbmcgaXQgYXMgIiRTSEVMTF9QQVRIIiwgd2hlbiB0aGUgc2NyaXB0IGNhbgorICAgYmUgbWlzaW50ZXJwcmV0ZWQgYnkgYnJva2VuIHBsYXRmb3JtIHNoZWxsIChlLmcuIFNvbGFyaXMpLgorCisgLSBjaGRpciBhcm91bmQgaW4gdGVzdHMuICBJdCBpcyBub3Qgc3VmZmljaWVudCB0byBjaGRpciB0bworICAgc29tZXdoZXJlIGFuZCB0aGVuIGNoZGlyIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGxvY2F0aW9uIGxhdGVyIGluCisgICB0aGUgdGVzdCwgYXMgYW55IGludGVybWVkaWF0ZSBzdGVwIGNhbiBmYWlsIGFuZCBhYm9ydCB0aGUgdGVzdCwKKyAgIGNhdXNpbmcgdGhlIG5leHQgdGVzdCB0byBzdGFydCBpbiBhbiB1bmV4cGVjdGVkIGRpcmVjdG9yeS4gIERvIHNvCisgICBpbnNpZGUgYSBzdWJzaGVsbCBpZiBuZWNlc3NhcnkuCisKICAtIEJyZWFrIHRoZSBUQVAgb3V0cHV0CiAKICAgIFRoZSByYXcgb3V0cHV0IGZyb20geW91ciB0ZXN0IG1heSBiZSBpbnRlcnByZXRlZCBieSBhIFRBUCBoYXJuZXNzLiBUQVAKQEAgLTM0Miw5ICszNzYsOSBAQAogb2YgdGhlIHRlc3RfKiBmdW5jdGlvbnMgKHNlZSB0aGUgIlRlc3QgaGFybmVzcyBsaWJyYXJ5IiBzZWN0aW9uCiBiZWxvdyksIGUuZy46CiAKLSAgICB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ0kgbmVlZCBQZXJsJyAiCi0gICAgICAgICckUEVSTF9QQVRIJyAtZSAnaGxhZ2goKSBpZiB1bmZfdW5mKCknCi0gICAgIgorICAgIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnSSBuZWVkIFBlcmwnICcKKyAgICAgICAgIiRQRVJMX1BBVEgiIC1lICJobGFnaCgpIGlmIHVuZl91bmYoKSIKKyAgICAnCiAKIFRoZSBhZHZhbnRhZ2Ugb2Ygc2tpcHBpbmcgdGVzdHMgbGlrZSB0aGlzIGlzIHRoYXQgcGxhdGZvcm1zIHRoYXQgZG9uJ3QKIGhhdmUgdGhlIFBFUkwgYW5kIG90aGVyIG9wdGlvbmFsIGRlcGVuZGVuY2llcyBnZXQgYW4gaW5kaWNhdGlvbiBvZiBob3cKQEAgLTU5MSw2ICs2MjUsMTEgQEAKICAgIFRoZSBwcm9jZXNzIHJldGFpbnMgdGhlIHNhbWUgcGlkIGFjcm9zcyBleGVjKDIpLiBTZWUgZmI5YTJiZWEgZm9yCiAgICBkZXRhaWxzLgogCisgLSBQSVBFCisKKyAgIFRoZSBmaWxlc3lzdGVtIHdlJ3JlIG9uIHN1cHBvcnRzIGNyZWF0aW9uIG9mIEZJRk9zIChuYW1lZCBwaXBlcykKKyAgIHZpYSBta2ZpZm8oMSkuCisKICAtIFNZTUxJTktTCiAKICAgIFRoZSBmaWxlc3lzdGVtIHdlJ3JlIG9uIHN1cHBvcnRzIHN5bWJvbGljIGxpbmtzLiBFLmcuIGEgRkFUCkBAIC02MDYsNiArNjQ1LDE1IEBACiAgICBHaXQgd2FzIGNvbXBpbGVkIHdpdGggVVNFX0xJQlBDUkU9WWVzUGxlYXNlLiBXcmFwIGFueSB0ZXN0cwogICAgdGhhdCB1c2UgZ2l0LWdyZXAgLS1wZXJsLXJlZ2V4cCBvciBnaXQtZ3JlcCAtUCBpbiB0aGVzZS4KIAorIC0gQ0FTRV9JTlNFTlNJVElWRV9GUworCisgICBUZXN0IGlzIHJ1biBvbiBhIGNhc2UgaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW0uCisKKyAtIFVURjhfTkZEX1RPX05GQworCisgICBUZXN0IGlzIHJ1biBvbiBhIGZpbGVzeXN0ZW0gd2hpY2ggY29udmVydHMgZGVjb21wb3NlZCB1dGYtOCAobmZkKQorICAgdG8gcHJlY29tcG9zZWQgdXRmLTggKG5mYykuCisKIFRpcHMgZm9yIFdyaXRpbmcgVGVzdHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvdC9jaGVjay1ub24tcG9ydGFibGUtc2hlbGwucGwgYi90L2NoZWNrLW5vbi1wb3J0YWJsZS1zaGVsbC5wbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44YjVhNzFkCi0tLSAvZGV2L251bGwKKysrIGIvdC9jaGVjay1ub24tcG9ydGFibGUtc2hlbGwucGwKQEAgLTAsMCArMSwyNyBAQAorIyEvdXNyL2Jpbi9wZXJsCisKKyMgVGVzdCB0MDAwMC4udDk5OTkuc2ggZm9yIG5vbiBwb3J0YWJsZSBzaGVsbCBzY3JpcHRzCisjIFRoaXMgc2NyaXB0IGNhbiBiZSBjYWxsZWQgd2l0aCBvbmUgb3IgbW9yZSBmaWxlbmFtZXMgYXMgcGFyYW1ldGVycworCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCitteSAkZXhpdF9jb2RlPTA7CisKK3N1YiBlcnIgeworCW15ICRtc2cgPSBzaGlmdDsKKwlwcmludCAiJEFSR1Y6JC46IGVycm9yOiAkbXNnOiAkX1xuIjsKKwkkZXhpdF9jb2RlID0gMTsKK30KKword2hpbGUgKDw+KSB7CisJY2hvbXA7CisJL15ccypzZWRccystaS8gYW5kIGVyciAnc2VkIC1pIGlzIG5vdCBwb3J0YWJsZSc7CisJL15ccyplY2hvXHMrLW4vIGFuZCBlcnIgJ2VjaG8gLW4gaXMgbm90IHBvcnRhYmxlIChwbGVhc2UgdXNlIHByaW50ZiknOworCS9eXHMqZGVjbGFyZVxzKy8gYW5kIGVyciAnYXJyYXlzL2RlY2xhcmUgbm90IHBvcnRhYmxlJzsKKwkvXlxzKlteI11ccyp3aGljaFxzLyBhbmQgZXJyICd3aGljaCBpcyBub3QgcG9ydGFibGUgKHBsZWFzZSB1c2UgdHlwZSknOworCS90ZXN0XHMrW149XSo9PS8gYW5kIGVyciAnInRlc3QgYSA9PSBiIiBpcyBub3QgcG9ydGFibGUgKHBsZWFzZSB1c2UgPSknOworCSMgdGhpcyByZXNldHMgb3VyICQuIGZvciBlYWNoIGZpbGUKKwljbG9zZSBBUkdWIGlmIGVvZjsKK30KK2V4aXQgJGV4aXRfY29kZTsKZGlmZiAtLWdpdCBhL3QvbGliLWJhc2guc2ggYi90L2xpYi1iYXNoLnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMzk3ZjcKLS0tIC9kZXYvbnVsbAorKysgYi90L2xpYi1iYXNoLnNoCkBAIC0wLDAgKzEsMTggQEAKKyMhL2Jpbi9zaAorIworIyBFbnN1cmVzIHRoYXQgdGVzdHMgYXJlIHJ1biB1bmRlciBCYXNoOyBwcmltYXJpbHkgaW50ZW5kZWQgZm9yIHJ1bm5pbmcgdGVzdHMKKyMgb2YgdGhlIGNvbXBsZXRpb24gc2NyaXB0LgorCitpZiB0ZXN0IC1uICIkQkFTSCIgJiYgdGVzdCAteiAiJFBPU0lYTFlfQ09SUkVDVCI7IHRoZW4KKwkjIHdlIGFyZSBpbiBmdWxsLW9uIGJhc2ggbW9kZQorCXRydWUKK2VsaWYgdHlwZSBiYXNoID4vZGV2L251bGwgMj4mMTsgdGhlbgorCSMgZXhlY3V0ZSBpbiBmdWxsLW9uIGJhc2ggbW9kZQorCXVuc2V0IFBPU0lYTFlfQ09SUkVDVAorCWV4ZWMgYmFzaCAiJDAiICIkQCIKK2Vsc2UKKwllY2hvICcxLi4wICNTS0lQIHNraXBwaW5nIGJhc2ggY29tcGxldGlvbiB0ZXN0czsgYmFzaCBub3QgYXZhaWxhYmxlJworCWV4aXQgMAorZmkKKworLiAuL3Rlc3QtbGliLnNoCmRpZmYgLS1naXQgYS90L2xpYi1jcmVkZW50aWFsLnNoIGIvdC9saWItY3JlZGVudGlhbC5zaAppbmRleCA0YTM3Y2Q3Li4zYzQzZmYxIDEwMDc1NQotLS0gYS90L2xpYi1jcmVkZW50aWFsLnNoCisrKyBiL3QvbGliLWNyZWRlbnRpYWwuc2gKQEAgLTQsMTAgKzQsMjQgQEAKICMgc3Rkb3V0IGFuZCBzdGRlcnIgc2hvdWxkIGJlIHByb3ZpZGVkIG9uIHN0ZGluLAogIyBzZXBhcmF0ZWQgYnkgIi0tIi4KIGNoZWNrKCkgeworCWNyZWRlbnRpYWxfb3B0cz0KKwljcmVkZW50aWFsX2NtZD0kMQorCXNoaWZ0CisJZm9yIGFyZyBpbiAiJEAiOyBkbworCQljcmVkZW50aWFsX29wdHM9IiRjcmVkZW50aWFsX29wdHMgLWMgY3JlZGVudGlhbC5oZWxwZXI9JyRhcmcnIgorCWRvbmUKIAlyZWFkX2NodW5rID5zdGRpbiAmJgogCXJlYWRfY2h1bmsgPmV4cGVjdC1zdGRvdXQgJiYKIAlyZWFkX2NodW5rID5leHBlY3Qtc3RkZXJyICYmCi0JdGVzdC1jcmVkZW50aWFsICIkQCIgPHN0ZGluID5zdGRvdXQgMj5zdGRlcnIgJiYKKwlpZiAhIGV2YWwgImdpdCAkY3JlZGVudGlhbF9vcHRzIGNyZWRlbnRpYWwgJGNyZWRlbnRpYWxfY21kIDxzdGRpbiA+c3Rkb3V0IDI+c3RkZXJyIjsgdGhlbgorCQllY2hvICJnaXQgY3JlZGVudGlhbCBmYWlsZWQgd2l0aCBjb2RlICQ/IiAmJgorCQljYXQgc3RkZXJyICYmCisJCWZhbHNlCisJZmkgJiYKKwlpZiB0ZXN0X2hhdmVfcHJlcmVxIE1JTkdXCisJdGhlbgorCQlkb3MydW5peCAtcSBzdGRlcnIKKwlmaSAmJgogCXRlc3RfY21wIGV4cGVjdC1zdGRvdXQgc3Rkb3V0ICYmCiAJdGVzdF9jbXAgZXhwZWN0LXN0ZGVyciBzdGRlcnIKIH0KQEAgLTQxLDcgKzU1LDcgQEAKIAkJZWNobyBwcm90b2NvbD0kMgogCQllY2hvIGhvc3Q9JDMKIAkJZWNobyB1c2VybmFtZT0kNAotCSkgfCB0ZXN0LWNyZWRlbnRpYWwgcmVqZWN0ICQxCisJKSB8IGdpdCAtYyBjcmVkZW50aWFsLmhlbHBlcj0kMSBjcmVkZW50aWFsIHJlamVjdAogfQogCiBoZWxwZXJfdGVzdCgpIHsKQEAgLTUyLDYgKzY2LDggQEAKIAkJcHJvdG9jb2w9aHR0cHMKIAkJaG9zdD1leGFtcGxlLmNvbQogCQktLQorCQlwcm90b2NvbD1odHRwcworCQlob3N0PWV4YW1wbGUuY29tCiAJCXVzZXJuYW1lPWFza3Bhc3MtdXNlcm5hbWUKIAkJcGFzc3dvcmQ9YXNrcGFzcy1wYXNzd29yZAogCQktLQpAQCAtNzQsNiArOTAsOCBAQAogCQlwcm90b2NvbD1odHRwcwogCQlob3N0PWV4YW1wbGUuY29tCiAJCS0tCisJCXByb3RvY29sPWh0dHBzCisJCWhvc3Q9ZXhhbXBsZS5jb20KIAkJdXNlcm5hbWU9c3RvcmUtdXNlcgogCQlwYXNzd29yZD1zdG9yZS1wYXNzCiAJCS0tCkBAIC04NSw2ICsxMDMsOCBAQAogCQlwcm90b2NvbD1odHRwCiAJCWhvc3Q9ZXhhbXBsZS5jb20KIAkJLS0KKwkJcHJvdG9jb2w9aHR0cAorCQlob3N0PWV4YW1wbGUuY29tCiAJCXVzZXJuYW1lPWFza3Bhc3MtdXNlcm5hbWUKIAkJcGFzc3dvcmQ9YXNrcGFzcy1wYXNzd29yZAogCQktLQpAQCAtOTgsNiArMTE4LDggQEAKIAkJcHJvdG9jb2w9aHR0cHMKIAkJaG9zdD1vdGhlci50bGQKIAkJLS0KKwkJcHJvdG9jb2w9aHR0cHMKKwkJaG9zdD1vdGhlci50bGQKIAkJdXNlcm5hbWU9YXNrcGFzcy11c2VybmFtZQogCQlwYXNzd29yZD1hc2twYXNzLXBhc3N3b3JkCiAJCS0tCkBAIC0xMTIsNiArMTM0LDggQEAKIAkJaG9zdD1leGFtcGxlLmNvbQogCQl1c2VybmFtZT1vdGhlcgogCQktLQorCQlwcm90b2NvbD1odHRwcworCQlob3N0PWV4YW1wbGUuY29tCiAJCXVzZXJuYW1lPW90aGVyCiAJCXBhc3N3b3JkPWFza3Bhc3MtcGFzc3dvcmQKIAkJLS0KQEAgLTEzMyw2ICsxNTcsOSBAQAogCQlob3N0PXBhdGgudGxkCiAJCXBhdGg9YmFyLmdpdAogCQktLQorCQlwcm90b2NvbD1odHRwCisJCWhvc3Q9cGF0aC50bGQKKwkJcGF0aD1iYXIuZ2l0CiAJCXVzZXJuYW1lPWFza3Bhc3MtdXNlcm5hbWUKIAkJcGFzc3dvcmQ9YXNrcGFzcy1wYXNzd29yZAogCQktLQpAQCAtMTUwLDYgKzE3Nyw4IEBACiAJCXByb3RvY29sPWh0dHBzCiAJCWhvc3Q9ZXhhbXBsZS5jb20KIAkJLS0KKwkJcHJvdG9jb2w9aHR0cHMKKwkJaG9zdD1leGFtcGxlLmNvbQogCQl1c2VybmFtZT1hc2twYXNzLXVzZXJuYW1lCiAJCXBhc3N3b3JkPWFza3Bhc3MtcGFzc3dvcmQKIAkJLS0KQEAgLTE3Niw2ICsyMDUsOCBAQAogCQlob3N0PWV4YW1wbGUuY29tCiAJCXVzZXJuYW1lPXVzZXIxCiAJCS0tCisJCXByb3RvY29sPWh0dHBzCisJCWhvc3Q9ZXhhbXBsZS5jb20KIAkJdXNlcm5hbWU9dXNlcjEKIAkJcGFzc3dvcmQ9cGFzczEKIAkJRU9GCkBAIC0xODQsNiArMjE1LDggQEAKIAkJaG9zdD1leGFtcGxlLmNvbQogCQl1c2VybmFtZT11c2VyMgogCQktLQorCQlwcm90b2NvbD1odHRwcworCQlob3N0PWV4YW1wbGUuY29tCiAJCXVzZXJuYW1lPXVzZXIyCiAJCXBhc3N3b3JkPXBhc3MyCiAJCUVPRgpAQCAtMjAwLDYgKzIzMyw4IEBACiAJCWhvc3Q9ZXhhbXBsZS5jb20KIAkJdXNlcm5hbWU9dXNlcjEKIAkJLS0KKwkJcHJvdG9jb2w9aHR0cHMKKwkJaG9zdD1leGFtcGxlLmNvbQogCQl1c2VybmFtZT11c2VyMQogCQlwYXNzd29yZD1hc2twYXNzLXBhc3N3b3JkCiAJCS0tCkBAIC0yMTMsNiArMjQ4LDggQEAKIAkJaG9zdD1leGFtcGxlLmNvbQogCQl1c2VybmFtZT11c2VyMgogCQktLQorCQlwcm90b2NvbD1odHRwcworCQlob3N0PWV4YW1wbGUuY29tCiAJCXVzZXJuYW1lPXVzZXIyCiAJCXBhc3N3b3JkPXBhc3MyCiAJCUVPRgpAQCAtMjM0LDYgKzI3MSw4IEBACiAJCXByb3RvY29sPWh0dHBzCiAJCWhvc3Q9dGltZW91dC50bGQKIAkJLS0KKwkJcHJvdG9jb2w9aHR0cHMKKwkJaG9zdD10aW1lb3V0LnRsZAogCQl1c2VybmFtZT1hc2twYXNzLXVzZXJuYW1lCiAJCXBhc3N3b3JkPWFza3Bhc3MtcGFzc3dvcmQKIAkJLS0KZGlmZiAtLWdpdCBhL3QvbGliLWdldHRleHQuc2ggYi90L2xpYi1nZXR0ZXh0LnNoCmluZGV4IDBmNzZmNmMuLmFlODg4M2EgMTAwNjQ0Ci0tLSBhL3QvbGliLWdldHRleHQuc2gKKysrIGIvdC9saWItZ2V0dGV4dC5zaApAQCAtMTQsMTIgKzE0LDE0IEBACiBpZiB0ZXN0X2hhdmVfcHJlcmVxIEdFVFRFWFQgJiYgISB0ZXN0X2hhdmVfcHJlcmVxIEdFVFRFWFRfUE9JU09OCiB0aGVuCiAJIyBpc19JUy5VVEYtOCBvbiBTb2xhcmlzIGFuZCBGcmVlQlNELCBpc19JUy51dGY4IG9uIERlYmlhbgotCWlzX0lTX2xvY2FsZT0kKGxvY2FsZSAtYSB8IHNlZCAtbiAnL15pc19JU1wuW3VVXVt0VF1bZkZdLSo4JC97CisJaXNfSVNfbG9jYWxlPSQobG9jYWxlIC1hIDI+L2Rldi9udWxsIHwKKwkJc2VkIC1uICcvXmlzX0lTXC5bdVVdW3RUXVtmRl0tKjgkL3sKIAkJcAogCQlxCiAJfScpCiAJIyBpc19JUy5JU084ODU5LTEgb24gU29sYXJpcyBhbmQgRnJlZUJTRCwgaXNfSVMuaXNvODg1OTEgb24gRGViaWFuCi0JaXNfSVNfaXNvX2xvY2FsZT0kKGxvY2FsZSAtYSB8IHNlZCAtbiAnL15pc19JU1wuW2lJXVtzU11bb09dODg1OS0qMSQveworCWlzX0lTX2lzb19sb2NhbGU9JChsb2NhbGUgLWEgMj4vZGV2L251bGwgfAorCQlzZWQgLW4gJy9eaXNfSVNcLltpSV1bc1NdW29PXTg4NTktKjEkL3sKIAkJcAogCQlxCiAJfScpCmRpZmYgLS1naXQgYS90L2xpYi1naXQtcDQuc2ggYi90L2xpYi1naXQtcDQuc2gKaW5kZXggMTIxZTM4MC4uMjA5OGI5YiAxMDA2NDQKLS0tIGEvdC9saWItZ2l0LXA0LnNoCisrKyBiL3QvbGliLWdpdC1wNC5zaApAQCAtMiw5ICsyLDE0IEBACiAjIExpYnJhcnkgY29kZSBmb3IgZ2l0IHA0IHRlc3RzCiAjCiAKKyMgcDQgdGVzdHMgbmV2ZXIgdXNlIHRoZSB0b3AtbGV2ZWwgcmVwbzsgYWx3YXlzIGJ1aWxkL2Nsb25lIGludG8KKyMgYSBzdWJkaXJlY3RvcnkgY2FsbGVkICIkZ2l0IgorVEVTVF9OT19DUkVBVEVfUkVQTz1Ob1RoYW5rcworCiAuIC4vdGVzdC1saWIuc2gKIAotaWYgISB0ZXN0X2hhdmVfcHJlcmVxIFBZVEhPTjsgdGhlbgoraWYgISB0ZXN0X2hhdmVfcHJlcmVxIFBZVEhPTgordGhlbgogCXNraXBfYWxsPSdza2lwcGluZyBnaXQgcDQgdGVzdHM7IHB5dGhvbiBub3QgYXZhaWxhYmxlJwogCXRlc3RfZG9uZQogZmkKQEAgLTEzLDYgKzE4LDI0IEBACiAJdGVzdF9kb25lCiB9CiAKKyMgT24gY3lnd2luLCB0aGUgTlQgdmVyc2lvbiBvZiBQZXJmb3JjZSBjYW4gYmUgdXNlZC4gIFdoZW4gZ2l2aW5nCisjIGl0IHBhdGhzLCBlaXRoZXIgb24gdGhlIGNvbW1hbmQtbGluZSBvciBpbiBjbGllbnQgc3BlY2lmaWNhdGlvbnMsCisjIGJlIHN1cmUgdG8gdXNlIHRoZSBuYXRpdmUgd2luZG93cyBmb3JtLgorIworIyBPbGRlciB2ZXJzaW9ucyBvZiBwZXJmb3JjZSB3ZXJlIGF2YWlsYWJsZSBjb21waWxlZCBuYXRpdmVseSBmb3IKKyMgY3lnd2luLiAgVGhvc2UgZG8gbm90IGFjY2VwdCBuYXRpdmUgd2luZG93cyBwYXRocywgc28gbWFrZSBzdXJlCisjIG5vdCB0byBjb252ZXJ0IGZvciB0aGVtLgorbmF0aXZlX3BhdGgoKSB7CisJcGF0aD0iJDEiICYmCisJaWYgdGVzdF9oYXZlX3ByZXJlcSBDWUdXSU4gJiYgISBwNCAtViB8IGdyZXAgLXEgQ1lHV0lOCisJdGhlbgorCQlwYXRoPSQoY3lncGF0aCAtLXdpbmRvd3MgIiRwYXRoIikKKwllbHNlCisJCXBhdGg9JCh0ZXN0LXBhdGgtdXRpbHMgcmVhbF9wYXRoICIkcGF0aCIpCisJZmkgJiYKKwllY2hvICIkcGF0aCIKK30KKwogIyBUcnkgdG8gcGljayBhIHVuaXF1ZSBwb3J0OiBndWVzcyBhIGxhcmdlIG51bWJlciwgdGhlbiBob3BlCiAjIG5vIG1vcmUgdGhhbiBvbmUgb2YgZWFjaCB0ZXN0IGlzIHJ1bm5pbmcuCiAjCkBAIC0yMiw5ICs0NSwxMCBAQAogZ2l0X3A0X3Rlc3Rfc3RhcnQ9OTgwMAogUDREUE9SVD0kKCgxMDY2OSArICgkdGVzdGlkIC0gJGdpdF9wNF90ZXN0X3N0YXJ0KSkpCiAKLWV4cG9ydCBQNFBPUlQ9bG9jYWxob3N0OiRQNERQT1JUCi1leHBvcnQgUDRDTElFTlQ9Y2xpZW50Ci1leHBvcnQgUDRFRElUT1I9OgorUDRQT1JUPWxvY2FsaG9zdDokUDREUE9SVAorUDRDTElFTlQ9Y2xpZW50CitQNEVESVRPUj06CitleHBvcnQgUDRQT1JUIFA0Q0xJRU5UIFA0RURJVE9SCiAKIGRiPSIkVFJBU0hfRElSRUNUT1JZL2RiIgogY2xpPSIkVFJBU0hfRElSRUNUT1JZL2NsaSIKQEAgLTMzLDI2ICs1Nyw0OCBAQAogCiBzdGFydF9wNGQoKSB7CiAJbWtkaXIgLXAgIiRkYiIgIiRjbGkiICIkZ2l0IiAmJgorCXJtIC1mICIkcGlkZmlsZSIgJiYKIAkoCi0JCXA0ZCAtcSAtciAiJGRiIiAtcCAkUDREUE9SVCAmCi0JCWVjaG8gJCEgPiIkcGlkZmlsZSIKKwkJY2QgIiRkYiIgJiYKKwkJeworCQkJcDRkIC1xIC1wICRQNERQT1JUICYKKwkJCWVjaG8gJCEgPiIkcGlkZmlsZSIKKwkJfQogCSkgJiYKLQlmb3IgaSBpbiAxIDIgMyA0IDUgOyBkbwotCQlwNCBpbmZvID4vZGV2L251bGwgMj4mMSAmJiBicmVhayB8fCB0cnVlICYmCi0JCWVjaG8gd2FpdGluZyBmb3IgcDRkIHRvIHN0YXJ0ICYmCisKKwkjIFRoaXMgZ2l2ZXMgcDRkIGEgbG9uZyB0aW1lIHRvIHN0YXJ0IHVwLCBhcyBpdCBjYW4gYmUKKwkjIHF1aXRlIHNsb3cgZGVwZW5kaW5nIG9uIHRoZSBtYWNoaW5lLiAgU2V0IHRoaXMgZW52aXJvbm1lbnQKKwkjIHZhcmlhYmxlIHRvIHNvbWV0aGluZyBzbWFsbGVyIHRvIGZhaWwgZmFzdGVyIGluLCBzYXksCisJIyBhbiBhdXRvbWF0ZWQgdGVzdCBzZXR1cC4gIElmIHRoZSBwNGQgcHJvY2VzcyBkaWVzLCB0aGF0CisJIyB3aWxsIGJlIGNhdWdodCB3aXRoIHRoZSAia2lsbCAtMCIgY2hlY2sgYmVsb3cuCisJaT0ke1A0RF9TVEFSVF9QQVRJRU5DRTotMzAwfQorCXBpZD0kKGNhdCAiJHBpZGZpbGUiKQorCXJlYWR5PQorCXdoaWxlIHRlc3QgJGkgLWd0IDAKKwlkbworCQkjIHN1Y2NlZWQgd2hlbiBwNCBjbGllbnQgY29tbWFuZHMgc3RhcnQgdG8gd29yaworCQlpZiBwNCBpbmZvID4vZGV2L251bGwgMj4mMQorCQl0aGVuCisJCQlyZWFkeT10cnVlCisJCQlicmVhaworCQlmaQorCQkjIGZhaWwgaWYgcDRkIGRpZWQKKwkJa2lsbCAtMCAkcGlkIDI+L2Rldi9udWxsIHx8IGJyZWFrCisJCWVjaG8gd2FpdGluZyBmb3IgcDRkIHRvIHN0YXJ0CiAJCXNsZWVwIDEKLQlkb25lICYmCi0JIyBjb21wbGFpbiBpZiBpdCBuZXZlciBzdGFydGVkCi0JcDQgaW5mbyA+L2Rldi9udWxsICYmCi0JKAotCQljZCAiJGNsaSIgJiYKLQkJcDQgY2xpZW50IC1pIDw8LUVPRgotCQlDbGllbnQ6IGNsaWVudAotCQlEZXNjcmlwdGlvbjogY2xpZW50Ci0JCVJvb3Q6ICRjbGkKLQkJVmlldzogLy9kZXBvdC8uLi4gLy9jbGllbnQvLi4uCi0JCUVPRgotCSkKKwkJaT0kKCggJGkgLSAxICkpCisJZG9uZQorCisJaWYgdGVzdCAteiAiJHJlYWR5IgorCXRoZW4KKwkJIyBwNGQgZmFpbGVkIHRvIHN0YXJ0CisJCXJldHVybiAxCisJZmkKKworCSMgYnVpbGQgYSBjbGllbnQKKwljbGllbnRfdmlldyAiLy9kZXBvdC8uLi4gLy9jbGllbnQvLi4uIiAmJgorCisJcmV0dXJuIDAKIH0KIAoga2lsbF9wNGQoKSB7CkBAIC02OSw1ICsxMTUsNDkgQEAKIH0KIAogY2xlYW51cF9naXQoKSB7Ci0Jcm0gLXJmICIkZ2l0IgorCXJtIC1yZiAiJGdpdCIgJiYKKwlta2RpciAiJGdpdCIKK30KKworbWFyc2hhbF9kdW1wKCkgeworCXdoYXQ9JDEgJiYKKwlsaW5lPSR7MjotMX0gJiYKKwljYXQgPiIkVFJBU0hfRElSRUNUT1JZL21hcnNoYWwtZHVtcC5weSIgPDwtRU9GICYmCisJaW1wb3J0IG1hcnNoYWwKKwlpbXBvcnQgc3lzCisJZm9yIGkgaW4gcmFuZ2UoJGxpbmUpOgorCSAgICBkID0gbWFyc2hhbC5sb2FkKHN5cy5zdGRpbikKKwlwcmludCBkWyckd2hhdCddCisJRU9GCisJIiRQWVRIT05fUEFUSCIgIiRUUkFTSF9ESVJFQ1RPUlkvbWFyc2hhbC1kdW1wLnB5IgorfQorCisjCisjIENvbnN0cnVjdCBhIGNsaWVudCB3aXRoIHRoaXMgbGlzdCBvZiBWaWV3IGxpbmVzCisjCitjbGllbnRfdmlldygpIHsKKwkoCisJCWNhdCA8PC1FT0YgJiYKKwkJQ2xpZW50OiAkUDRDTElFTlQKKwkJRGVzY3JpcHRpb246ICRQNENMSUVOVAorCQlSb290OiAkY2xpCisJCUFsdFJvb3RzOiAkKG5hdGl2ZV9wYXRoICIkY2xpIikKKwkJTGluZUVuZDogdW5peAorCQlWaWV3OgorCQlFT0YKKwkJcHJpbnRmICJcdCVzXG4iICIkQCIKKwkpIHwgcDQgY2xpZW50IC1pCit9CisKK2lzX2NsaV9maWxlX3dyaXRlYWJsZSgpIHsKKwkjIGN5Z3dpbiB2ZXJzaW9uIG9mIHA0IGRvZXMgbm90IHNldCByZWFkLW9ubHkgYXR0ciwKKwkjIHdpbGwgYmUgbWFya2VkIDQ0NCBidXQgLXcgaXMgdHJ1ZQorCWZpbGU9IiQxIiAmJgorCWlmIHRlc3RfaGF2ZV9wcmVyZXEgQ1lHV0lOICYmIHA0IC1WIHwgZ3JlcCAtcSBDWUdXSU4KKwl0aGVuCisJCXN0YXQ9JChzdGF0IC0tZm9ybWF0PSVhICIkZmlsZSIpICYmCisJCXRlc3QgJHN0YXQgPSA2NDQKKwllbHNlCisJCXRlc3QgLXcgIiRmaWxlIgorCWZpCiB9CmRpZmYgLS1naXQgYS90L2xpYi1naXQtc3ZuLnNoIGIvdC9saWItZ2l0LXN2bi5zaAppbmRleCAxOTlmMjJjLi5jNWU1NWIxIDEwMDY0NAotLS0gYS90L2xpYi1naXQtc3ZuLnNoCisrKyBiL3QvbGliLWdpdC1zdm4uc2gKQEAgLTE0OCw3ICsxNDgsNyBAQAogY29udmVydF90b19yZXZfZGIgKCkgewogCSIkUEVSTF9QQVRIIiAtdyAtLSAtICIkQCIgPDxcRU9GCiB1c2Ugc3RyaWN0OwotQEFSR1YgPT0gMiBvciBkaWUgIlVzYWdlOiBjb252ZXJ0X3RvX3Jldl9kYiA8aW5wdXQ+IDxvdXRwdXQ+IjsKK0BBUkdWID09IDIgb3IgZGllICJ1c2FnZTogY29udmVydF90b19yZXZfZGIgPGlucHV0PiA8b3V0cHV0PiI7CiBvcGVuIG15ICR3ciwgJys+JywgJEFSR1ZbMV0gb3IgZGllICIkITogY291bGRuJ3Qgb3BlbjogJEFSR1ZbMV0iOwogb3BlbiBteSAkcmQsICc8JywgJEFSR1ZbMF0gb3IgZGllICIkITogY291bGRuJ3Qgb3BlbjogJEFSR1ZbMF0iOwogbXkgJHNpemUgPSAoc3RhdCgkcmQpKVs3XTsKZGlmZiAtLWdpdCBhL3QvbGliLWdwZy9wdWJyaW5nLmdwZyBiL3QvbGliLWdwZy9wdWJyaW5nLmdwZwppbmRleCA4Mzg1NWZhLi4xYTNjMmQ0IDEwMDY0NAotLS0gYS90L2xpYi1ncGcvcHVicmluZy5ncGcKKysrIGIvdC9saWItZ3BnL3B1YnJpbmcuZ3BnCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3QvbGliLWdwZy9yYW5kb21fc2VlZCBiL3QvbGliLWdwZy9yYW5kb21fc2VlZAppbmRleCA4ZmVkMTMzLi45NWQyNDlmIDEwMDY0NAotLS0gYS90L2xpYi1ncGcvcmFuZG9tX3NlZWQKKysrIGIvdC9saWItZ3BnL3JhbmRvbV9zZWVkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3QvbGliLWdwZy9zZWNyaW5nLmdwZyBiL3QvbGliLWdwZy9zZWNyaW5nLmdwZwppbmRleCBkODMxY2Q5Li44MmRjYThmIDEwMDY0NAotLS0gYS90L2xpYi1ncGcvc2VjcmluZy5ncGcKKysrIGIvdC9saWItZ3BnL3NlY3JpbmcuZ3BnCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3QvbGliLWdwZy90cnVzdGRiLmdwZyBiL3QvbGliLWdwZy90cnVzdGRiLmdwZwppbmRleCBhYmFjZTk2Li40ODc5YWU5IDEwMDY0NAotLS0gYS90L2xpYi1ncGcvdHJ1c3RkYi5ncGcKKysrIGIvdC9saWItZ3BnL3RydXN0ZGIuZ3BnCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3QvbGliLWh0dHBkLnNoIGIvdC9saWItaHR0cGQuc2gKaW5kZXggMDk0ZDQ5MC4uODk1YjkyNSAxMDA2NDQKLS0tIGEvdC9saWItaHR0cGQuc2gKKysrIGIvdC9saWItaHR0cGQuc2gKQEAgLTQzLDYgKzQzLDEwIEBACiBIVFRQRF9ST09UX1BBVEg9IiRQV0QiL2h0dHBkCiBIVFRQRF9ET0NVTUVOVF9ST09UX1BBVEg9JEhUVFBEX1JPT1RfUEFUSC93d3cKIAorIyBoYWNrIHRvIHN1cHByZXNzIGFwYWNoZSBQYXNzRW52IHdhcm5pbmdzCitHSVRfVkFMR1JJTkQ9JEdJVF9WQUxHUklORDsgZXhwb3J0IEdJVF9WQUxHUklORAorR0lUX1ZBTEdSSU5EX09QVElPTlM9JEdJVF9WQUxHUklORF9PUFRJT05TOyBleHBvcnQgR0lUX1ZBTEdSSU5EX09QVElPTlMKKwogaWYgISB0ZXN0IC14ICIkTElCX0hUVFBEX1BBVEgiCiB0aGVuCiAJc2tpcF9hbGw9InNraXBwaW5nIHRlc3QsIG5vIHdlYiBzZXJ2ZXIgZm91bmQgYXQgJyRMSUJfSFRUUERfUEFUSCciCkBAIC03Niw2ICs4MCw3IEBACiBwcmVwYXJlX2h0dHBkKCkgewogCW1rZGlyIC1wICIkSFRUUERfRE9DVU1FTlRfUk9PVF9QQVRIIgogCWNwICIkVEVTVF9QQVRIIi9wYXNzd2QgIiRIVFRQRF9ST09UX1BBVEgiCisJY3AgIiRURVNUX1BBVEgiL2Jyb2tlbi1zbWFydC1odHRwLnNoICIkSFRUUERfUk9PVF9QQVRIIgogCiAJbG4gLXMgIiRMSUJfSFRUUERfTU9EVUxFX1BBVEgiICIkSFRUUERfUk9PVF9QQVRIL21vZHVsZXMiCiAKQEAgLTE2MywzICsxNjgsNDIgQEAKIAkJdGVzdF9pMThuZ3JlcCAiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UiIG91dHB1dAogCScKIH0KKworc2V0dXBfYXNrcGFzc19oZWxwZXIoKSB7CisJdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgYXNrcGFzcyBoZWxwZXInICcKKwkJd3JpdGVfc2NyaXB0ICIkVFJBU0hfRElSRUNUT1JZL2Fza3Bhc3MiIDw8LVxFT0YgJiYKKwkJZWNobyA+PiIkVFJBU0hfRElSRUNUT1JZL2Fza3Bhc3MtcXVlcnkiICJhc2twYXNzOiAkKiIgJiYKKwkJY2F0ICIkVFJBU0hfRElSRUNUT1JZL2Fza3Bhc3MtcmVzcG9uc2UiCisJCUVPRgorCQlHSVRfQVNLUEFTUz0iJFRSQVNIX0RJUkVDVE9SWS9hc2twYXNzIiAmJgorCQlleHBvcnQgR0lUX0FTS1BBU1MgJiYKKwkJZXhwb3J0IFRSQVNIX0RJUkVDVE9SWQorCScKK30KKworc2V0X2Fza3Bhc3MoKSB7CisJPiIkVFJBU0hfRElSRUNUT1JZL2Fza3Bhc3MtcXVlcnkiICYmCisJZWNobyAiJCoiID4iJFRSQVNIX0RJUkVDVE9SWS9hc2twYXNzLXJlc3BvbnNlIgorfQorCitleHBlY3RfYXNrcGFzcygpIHsKKwlkZXN0PSRIVFRQRF9ERVNUCisJeworCQljYXNlICIkMSIgaW4KKwkJbm9uZSkKKwkJCTs7CisJCXBhc3MpCisJCQllY2hvICJhc2twYXNzOiBQYXNzd29yZCBmb3IgJ2h0dHA6Ly8kMkAkZGVzdCc6ICIKKwkJCTs7CisJCWJvdGgpCisJCQllY2hvICJhc2twYXNzOiBVc2VybmFtZSBmb3IgJ2h0dHA6Ly8kZGVzdCc6ICIKKwkJCWVjaG8gImFza3Bhc3M6IFBhc3N3b3JkIGZvciAnaHR0cDovLyQyQCRkZXN0JzogIgorCQkJOzsKKwkJKikKKwkJCWZhbHNlCisJCQk7OworCQllc2FjCisJfSA+IiRUUkFTSF9ESVJFQ1RPUlkvYXNrcGFzcy1leHBlY3QiICYmCisJdGVzdF9jbXAgIiRUUkFTSF9ESVJFQ1RPUlkvYXNrcGFzcy1leHBlY3QiIFwKKwkJICIkVFJBU0hfRElSRUNUT1JZL2Fza3Bhc3MtcXVlcnkiCit9CmRpZmYgLS1naXQgYS90L2xpYi1odHRwZC9hcGFjaGUuY29uZiBiL3QvbGliLWh0dHBkL2FwYWNoZS5jb25mCmluZGV4IGRlMzc2MmUuLmI1YmNlNDUgMTAwNjQ0Ci0tLSBhL3QvbGliLWh0dHBkL2FwYWNoZS5jb25mCisrKyBiL3QvbGliLWh0dHBkL2FwYWNoZS5jb25mCkBAIC00MCwzMCArNDAsNDMgQEAKIDxJZk1vZHVsZSAhbW9kX2F1dGh6X3VzZXIuYz4KIAlMb2FkTW9kdWxlIGF1dGh6X3VzZXJfbW9kdWxlIG1vZHVsZXMvbW9kX2F1dGh6X3VzZXIuc28KIDwvSWZNb2R1bGU+Cis8SWZNb2R1bGUgIW1vZF9hdXRoel9ob3N0LmM+CisJTG9hZE1vZHVsZSBhdXRoel9ob3N0X21vZHVsZSBtb2R1bGVzL21vZF9hdXRoel9ob3N0LnNvCis8L0lmTW9kdWxlPgogPC9JZlZlcnNpb24+CiAKLUFsaWFzIC9kdW1iLyB3d3cvCi1BbGlhcyAvYXV0aC8gd3d3L2F1dGgvCitQYXNzRW52IEdJVF9WQUxHUklORAorUGFzc0VudiBHSVRfVkFMR1JJTkRfT1BUSU9OUwogCi08TG9jYXRpb24gL3NtYXJ0Lz4KK0FsaWFzIC9kdW1iLyB3d3cvCitBbGlhcyAvYXV0aC9kdW1iLyB3d3cvYXV0aC9kdW1iLworCis8TG9jYXRpb25NYXRjaCAvc21hcnQvPgogCVNldEVudiBHSVRfRVhFQ19QQVRIICR7R0lUX0VYRUNfUEFUSH0KIAlTZXRFbnYgR0lUX0hUVFBfRVhQT1JUX0FMTAotPC9Mb2NhdGlvbj4KLTxMb2NhdGlvbiAvc21hcnRfbm9leHBvcnQvPgorPC9Mb2NhdGlvbk1hdGNoPgorPExvY2F0aW9uTWF0Y2ggL3NtYXJ0X25vZXhwb3J0Lz4KIAlTZXRFbnYgR0lUX0VYRUNfUEFUSCAke0dJVF9FWEVDX1BBVEh9Ci08L0xvY2F0aW9uPgotPExvY2F0aW9uIC9zbWFydF9jdXN0b21fZW52Lz4KKzwvTG9jYXRpb25NYXRjaD4KKzxMb2NhdGlvbk1hdGNoIC9zbWFydF9jdXN0b21fZW52Lz4KIAlTZXRFbnYgR0lUX0VYRUNfUEFUSCAke0dJVF9FWEVDX1BBVEh9CiAJU2V0RW52IEdJVF9IVFRQX0VYUE9SVF9BTEwKIAlTZXRFbnYgR0lUX0NPTU1JVFRFUl9OQU1FICJDdXN0b20gVXNlciIKIAlTZXRFbnYgR0lUX0NPTU1JVFRFUl9FTUFJTCBjdXN0b21AZXhhbXBsZS5jb20KLTwvTG9jYXRpb24+Ci1TY3JpcHRBbGlhcyAvc21hcnQvICR7R0lUX0VYRUNfUEFUSH0vZ2l0LWh0dHAtYmFja2VuZC8KLVNjcmlwdEFsaWFzIC9zbWFydF9ub2V4cG9ydC8gJHtHSVRfRVhFQ19QQVRIfS9naXQtaHR0cC1iYWNrZW5kLwotU2NyaXB0QWxpYXMgL3NtYXJ0X2N1c3RvbV9lbnYvICR7R0lUX0VYRUNfUEFUSH0vZ2l0LWh0dHAtYmFja2VuZC8KKzwvTG9jYXRpb25NYXRjaD4KKzxMb2NhdGlvbk1hdGNoIC9zbWFydF9uYW1lc3BhY2UvPgorCVNldEVudiBHSVRfRVhFQ19QQVRIICR7R0lUX0VYRUNfUEFUSH0KKwlTZXRFbnYgR0lUX0hUVFBfRVhQT1JUX0FMTAorCVNldEVudiBHSVRfTkFNRVNQQUNFIG5zCis8L0xvY2F0aW9uTWF0Y2g+CitTY3JpcHRBbGlhc01hdGNoIC9zbWFydF8qW14vXSovKC4qKSAke0dJVF9FWEVDX1BBVEh9L2dpdC1odHRwLWJhY2tlbmQvJDEKK1NjcmlwdEFsaWFzIC9icm9rZW5fc21hcnQvIGJyb2tlbi1zbWFydC1odHRwLnNoLwogPERpcmVjdG9yeSAke0dJVF9FWEVDX1BBVEh9PgotCU9wdGlvbnMgTm9uZQorCU9wdGlvbnMgRm9sbG93U3ltbGlua3MKIDwvRGlyZWN0b3J5PgorPEZpbGVzIGJyb2tlbi1zbWFydC1odHRwLnNoPgorCU9wdGlvbnMgRXhlY0NHSQorPC9GaWxlcz4KIDxGaWxlcyAke0dJVF9FWEVDX1BBVEh9L2dpdC1odHRwLWJhY2tlbmQ+CiAJT3B0aW9ucyBFeGVjQ0dJCiA8L0ZpbGVzPgpAQCAtOTEsNiArMTA0LDM1IEBACiAJUmVxdWlyZSB2YWxpZC11c2VyCiA8L0xvY2F0aW9uPgogCis8TG9jYXRpb25NYXRjaCAiXi9hdXRoLXB1c2gvLiovZ2l0LXJlY2VpdmUtcGFjayQiPgorCUF1dGhUeXBlIEJhc2ljCisJQXV0aE5hbWUgImdpdC1hdXRoIgorCUF1dGhVc2VyRmlsZSBwYXNzd2QKKwlSZXF1aXJlIHZhbGlkLXVzZXIKKzwvTG9jYXRpb25NYXRjaD4KKworPExvY2F0aW9uTWF0Y2ggIl4vYXV0aC1mZXRjaC8uKi9naXQtdXBsb2FkLXBhY2skIj4KKwlBdXRoVHlwZSBCYXNpYworCUF1dGhOYW1lICJnaXQtYXV0aCIKKwlBdXRoVXNlckZpbGUgcGFzc3dkCisJUmVxdWlyZSB2YWxpZC11c2VyCis8L0xvY2F0aW9uTWF0Y2g+CisKK1Jld3JpdGVDb25kICV7UVVFUllfU1RSSU5HfSBzZXJ2aWNlPWdpdC1yZWNlaXZlLXBhY2sgW09SXQorUmV3cml0ZUNvbmQgJXtSRVFVRVNUX1VSSX0gL2dpdC1yZWNlaXZlLXBhY2skCitSZXdyaXRlUnVsZSBeL2hhbGYtYXV0aC1jb21wbGV0ZS8gLSBbRT1BVVRIUkVRVUlSRUQ6eWVzXQorCis8TG9jYXRpb24gL2hhbGYtYXV0aC1jb21wbGV0ZS8+CisgIE9yZGVyIERlbnksQWxsb3cKKyAgRGVueSBmcm9tIGVudj1BVVRIUkVRVUlSRUQKKworICBBdXRoVHlwZSBCYXNpYworICBBdXRoTmFtZSAiR2l0IEFjY2VzcyIKKyAgQXV0aFVzZXJGaWxlIHBhc3N3ZAorICBSZXF1aXJlIHZhbGlkLXVzZXIKKyAgU2F0aXNmeSBBbnkKKzwvTG9jYXRpb24+CisKIDxJZkRlZmluZSBEQVY+CiAJTG9hZE1vZHVsZSBkYXZfbW9kdWxlIG1vZHVsZXMvbW9kX2Rhdi5zbwogCUxvYWRNb2R1bGUgZGF2X2ZzX21vZHVsZSBtb2R1bGVzL21vZF9kYXZfZnMuc28KZGlmZiAtLWdpdCBhL3QvbGliLWh0dHBkL2Jyb2tlbi1zbWFydC1odHRwLnNoIGIvdC9saWItaHR0cGQvYnJva2VuLXNtYXJ0LWh0dHAuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjdlYmZmZgotLS0gL2Rldi9udWxsCisrKyBiL3QvbGliLWh0dHBkL2Jyb2tlbi1zbWFydC1odHRwLnNoCkBAIC0wLDAgKzEsMTEgQEAKKyMhL2Jpbi9zaAorcHJpbnRmICJDb250ZW50LVR5cGU6IHRleHQvJXNcbiIgImh0bWwiCitlY2hvCitwcmludGYgIiVzXG4iICIwMDFlIyBzZXJ2aWNlPWdpdC11cGxvYWQtcGFjayIKK3ByaW50ZiAiJXMiICAgIjAwMDAiCitwcmludGYgIiVzJWMlcyVzXG4iIFwKKwkiMDBhNTg2ODFkOWYyODZhNDhiMDhmMzdiM2EwOTUzMzBkYTE2Njg5ZTM2OTMgSEVBRCIgXAorCTAgXAorCSIgaW5jbHVkZS10YWcgbXVsdGlfYWNrX2RldGFpbGVkIG11bHRpX2FjayBvZnMtZGVsdGEiIFwKKwkiIHNpZGUtYmFuZCBzaWRlLWJhbmQtNjRrIHRoaW4tcGFjayBuby1wcm9ncmVzcyBzaGFsbG93IG5vLWRvbmUgIgorcHJpbnRmICIlcyIgICAiMDAwMCIKZGlmZiAtLWdpdCBhL3QvbGliLXJlYmFzZS5zaCBiL3QvbGliLXJlYmFzZS5zaAppbmRleCA2Y2NmNzk3Li44MDk4YTg4IDEwMDY0NAotLS0gYS90L2xpYi1yZWJhc2Uuc2gKKysrIGIvdC9saWItcmViYXNlLnNoCkBAIC0xNyw2ICsxNyw4IEBACiAjICAgICAgICgic3F1YXNoIiwgImZpeHVwIiwgImVkaXQiLCBvciAicmV3b3JkIikgYW5kIHRoZSBTSEExIHRha2VuCiAjICAgICAgIGZyb20gdGhlIHNwZWNpZmllZCBsaW5lLgogIworIyAgICJleGVjX2NtZF93aXRoX2FyZ3MiIC0tIGFkZCBhbiAiZXhlYyBjbWQgd2l0aCBhcmdzIiBsaW5lLgorIwogIyAgICIjIiAtLSBBZGQgYSBjb21tZW50IGxpbmUuCiAjCiAjICAgIj4iIC0tIEFkZCBhIGJsYW5rIGxpbmUuCmRpZmYgLS1naXQgYS90L3BlcmYvLmdpdGlnbm9yZSBiL3QvcGVyZi8uZ2l0aWdub3JlCmluZGV4IDUwZjVjYzEuLjk4MmViOGUgMTAwNjQ0Ci0tLSBhL3QvcGVyZi8uZ2l0aWdub3JlCisrKyBiL3QvcGVyZi8uZ2l0aWdub3JlCkBAIC0xLDIgKzEsMyBAQAotYnVpbGQvCi10ZXN0LXJlc3VsdHMvCisvYnVpbGQvCisvdGVzdC1yZXN1bHRzLworL3RyYXNoIGRpcmVjdG9yeSovCmRpZmYgLS1naXQgYS90L3BlcmYvUkVBRE1FIGIvdC9wZXJmL1JFQURNRQppbmRleCBiMmRiYWQ0Li5jNTUyZjU2IDEwMDY0NAotLS0gYS90L3BlcmYvUkVBRE1FCisrKyBiL3QvcGVyZi9SRUFETUUKQEAgLTU2LDcgKzU2LDcgQEAKIAogICAgIEdJVF9QRVJGX1JFUEVBVF9DT1VOVAogCU51bWJlciBvZiB0aW1lcyBhIHRlc3Qgc2hvdWxkIGJlIHJlcGVhdGVkIGZvciBiZXN0LW9mLU4KLQltZWFzdXJlbWVudHMuICBEZWZhdWx0cyB0byA1LgorCW1lYXN1cmVtZW50cy4gIERlZmF1bHRzIHRvIDMuCiAKICAgICBHSVRfUEVSRl9NQUtFX09QVFMKIAlPcHRpb25zIHRvIHVzZSB3aGVuIGF1dG9tYXRpY2FsbHkgYnVpbGRpbmcgYSBnaXQgdHJlZSBmb3IKZGlmZiAtLWdpdCBhL3QvcGVyZi9wZXJmLWxpYi5zaCBiL3QvcGVyZi9wZXJmLWxpYi5zaAppbmRleCA1NTgwYzIyLi5hODE2ZmJjIDEwMDY0NAotLS0gYS90L3BlcmYvcGVyZi1saWIuc2gKKysrIGIvdC9wZXJmL3BlcmYtbGliLnNoCkBAIC00Miw2ICs0Miw3IEBACiBmaQogCiBURVNUX05PX0NSRUFURV9SRVBPPXQKK1RFU1RfTk9fTUFMTE9DX0NIRUNLPXQKIAogLiAuLi90ZXN0LWxpYi5zaAogCkBAIC0xNjMsNyArMTY0LDcgQEAKIAkJZWxzZQogCQkJZWNobyAicGVyZiAkdGVzdF9jb3VudCAtICQxOiIKIAkJZmkKLQkJZm9yIGkgaW4gJChzZXEgMSAkR0lUX1BFUkZfUkVQRUFUX0NPVU5UKTsgZG8KKwkJZm9yIGkgaW4gJCh0ZXN0X3NlcSAxICRHSVRfUEVSRl9SRVBFQVRfQ09VTlQpOyBkbwogCQkJc2F5ID4mMyAicnVubmluZzogJDIiCiAJCQlpZiB0ZXN0X3J1bl9wZXJmXyAiJDIiCiAJCQl0aGVuCmRpZmYgLS1naXQgYS90L3QwMDAwLWJhc2ljLnNoIGIvdC90MDAwMC1iYXNpYy5zaAppbmRleCBjY2I1NDM1Li5jZWZlMzNkIDEwMDc1NQotLS0gYS90L3QwMDAwLWJhc2ljLnNoCisrKyBiL3QvdDAwMDAtYmFzaWMuc2gKQEAgLTE4LDE2ICsxOCw2IEBACiBtb2RpZmljYXRpb24gKnNob3VsZCogdGFrZSBub3RpY2UgYW5kIHVwZGF0ZSB0aGUgdGVzdCB2ZWN0b3JzIGhlcmUuCiAnCiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgSXQgYXBwZWFycyB0aGF0IHBlb3BsZSB0cnkgdG8gcnVuIHRlc3RzIHdpdGhvdXQgYnVpbGRpbmcuLi4KLQotLi4vZ2l0ID4vZGV2L251bGwKLWlmIHRlc3QgJD8gIT0gMQotdGhlbgotCWVjaG8gPiYyICdZb3UgZG8gbm90IHNlZW0gdG8gaGF2ZSBidWlsdCBnaXQgeWV0LicKLQlleGl0IDEKLWZpCi0KIC4gLi90ZXN0LWxpYi5zaAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC01NSwzOSArNDUsMTc2IEBACiAJZmFsc2UKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJldGVuZCB3ZSBoYXZlIGZpeGVkIGEga25vd24gYnJlYWthZ2UgKHJ1biBpbiBzdWIgdGVzdC1saWIpJyAiCi0JbWtkaXIgcGFzc2luZy10b2RvICYmCi0JKGNkIHBhc3NpbmctdG9kbyAmJgotCWNhdCA+cGFzc2luZy10b2RvLnNoIDw8LUVPRiAmJgotCSMhJFNIRUxMX1BBVEgKK3J1bl9zdWJfdGVzdF9saWJfdGVzdCAoKSB7CisJbmFtZT0iJDEiIGRlc2NyPSIkMiIgIyBzdGRpbiBpcyB0aGUgYm9keSBvZiB0aGUgdGVzdCBjb2RlCisJbWtkaXIgIiRuYW1lIiAmJgorCSgKKwkJY2QgIiRuYW1lIiAmJgorCQljYXQgPiIkbmFtZS5zaCIgPDwtRU9GICYmCisJCSMhJFNIRUxMX1BBVEgKIAotCXRlc3RfZGVzY3JpcHRpb249J0EgcGFzc2luZyBUT0RPIHRlc3QKKwkJdGVzdF9kZXNjcmlwdGlvbj0nJGRlc2NyIChydW4gaW4gc3ViIHRlc3QtbGliKQogCi0JVGhpcyBpcyBydW4gaW4gYSBzdWIgdGVzdC1saWIgc28gdGhhdCB3ZSBkbyBub3QgZ2V0IGluY29ycmVjdAotCXBhc3NpbmcgbWV0cmljcwotCScKKwkJVGhpcyBpcyBydW4gaW4gYSBzdWIgdGVzdC1saWIgc28gdGhhdCB3ZSBkbyBub3QgZ2V0IGluY29ycmVjdAorCQlwYXNzaW5nIG1ldHJpY3MKKwkJJwogCi0JIyBQb2ludCB0byB0aGUgdC90ZXN0LWxpYi5zaCwgd2hpY2ggaXNuJ3QgaW4gLi4vIGFzIHVzdWFsCi0JVEVTVF9ESVJFQ1RPUlk9XCIkVEVTVF9ESVJFQ1RPUllcIgotCS4gXCJcJFRFU1RfRElSRUNUT1JZXCIvdGVzdC1saWIuc2gKKwkJIyBQb2ludCB0byB0aGUgdC90ZXN0LWxpYi5zaCwgd2hpY2ggaXNuJ3QgaW4gLi4vIGFzIHVzdWFsCisJCS4gIlwkVEVTVF9ESVJFQ1RPUlkiL3Rlc3QtbGliLnNoCisJCUVPRgorCQljYXQgPj4iJG5hbWUuc2giICYmCisJCWNobW9kICt4ICIkbmFtZS5zaCIgJiYKKwkJZXhwb3J0IFRFU1RfRElSRUNUT1JZICYmCisJCS4vIiRuYW1lLnNoIiA+b3V0IDI+ZXJyCisJKQorfQogCi0JdGVzdF9leHBlY3RfZmFpbHVyZSAncHJldGVuZCB3ZSBoYXZlIGZpeGVkIGEga25vd24gYnJlYWthZ2UnICcKLQkJOgotCScKK2NoZWNrX3N1Yl90ZXN0X2xpYl90ZXN0ICgpIHsKKwluYW1lPSIkMSIgIyBzdGRpbiBpcyB0aGUgZXhwZWN0ZWQgb3V0cHV0IGZyb20gdGhlIHRlc3QKKwkoCisJCWNkICIkbmFtZSIgJiYKKwkJISB0ZXN0IC1zIGVyciAmJgorCQlzZWQgLWUgJ3MvXj4gLy8nIC1lICdzL1okLy8nID5leHBlY3QgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IG91dAorCSkKK30KIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJldGVuZCB3ZSBoYXZlIGEgZnVsbHkgcGFzc2luZyB0ZXN0IHN1aXRlJyAiCisJcnVuX3N1Yl90ZXN0X2xpYl90ZXN0IGZ1bGwtcGFzcyAnMyBwYXNzaW5nIHRlc3RzJyA8PC1cXEVPRiAmJgorCWZvciBpIGluIDEgMiAzCisJZG8KKwkJdGVzdF9leHBlY3Rfc3VjY2VzcyBcInBhc3NpbmcgdGVzdCAjXCRpXCIgJ3RydWUnCisJZG9uZQogCXRlc3RfZG9uZQogCUVPRgotCWNobW9kICt4IHBhc3NpbmctdG9kby5zaCAmJgotCS4vcGFzc2luZy10b2RvLnNoID5vdXQgMj5lcnIgJiYKLQkhIHRlc3QgLXMgZXJyICYmCi0Jc2VkIC1lICdzL14+IC8vJyA+ZXhwZWN0IDw8LVxcRU9GICYmCi0JPiBvayAxIC0gcHJldGVuZCB3ZSBoYXZlIGZpeGVkIGEga25vd24gYnJlYWthZ2UgIyBUT0RPIGtub3duIGJyZWFrYWdlCi0JPiAjIGZpeGVkIDEga25vd24gYnJlYWthZ2UocykKLQk+ICMgcGFzc2VkIGFsbCAxIHRlc3QocykKKwljaGVja19zdWJfdGVzdF9saWJfdGVzdCBmdWxsLXBhc3MgPDwtXFxFT0YKKwk+IG9rIDEgLSBwYXNzaW5nIHRlc3QgIzEKKwk+IG9rIDIgLSBwYXNzaW5nIHRlc3QgIzIKKwk+IG9rIDMgLSBwYXNzaW5nIHRlc3QgIzMKKwk+ICMgcGFzc2VkIGFsbCAzIHRlc3QocykKKwk+IDEuLjMKKwlFT0YKKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJldGVuZCB3ZSBoYXZlIGEgcGFydGlhbGx5IHBhc3NpbmcgdGVzdCBzdWl0ZScgIgorCXRlc3RfbXVzdF9mYWlsIHJ1bl9zdWJfdGVzdF9saWJfdGVzdCBcCisJCXBhcnRpYWwtcGFzcyAnMi8zIHRlc3RzIHBhc3NpbmcnIDw8LVxcRU9GICYmCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAncGFzc2luZyB0ZXN0ICMxJyAndHJ1ZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdmYWlsaW5nIHRlc3QgIzInICdmYWxzZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdwYXNzaW5nIHRlc3QgIzMnICd0cnVlJworCXRlc3RfZG9uZQorCUVPRgorCWNoZWNrX3N1Yl90ZXN0X2xpYl90ZXN0IHBhcnRpYWwtcGFzcyA8PC1cXEVPRgorCT4gb2sgMSAtIHBhc3NpbmcgdGVzdCAjMQorCT4gbm90IG9rIDIgLSBmYWlsaW5nIHRlc3QgIzIKKwkjCWZhbHNlCisJPiBvayAzIC0gcGFzc2luZyB0ZXN0ICMzCisJPiAjIGZhaWxlZCAxIGFtb25nIDMgdGVzdChzKQorCT4gMS4uMworCUVPRgorIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZScgIgorCXJ1bl9zdWJfdGVzdF9saWJfdGVzdCBmYWlsaW5nLXRvZG8gJ0EgZmFpbGluZyBUT0RPIHRlc3QnIDw8LVxcRU9GICYmCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAncGFzc2luZyB0ZXN0JyAndHJ1ZScKKwl0ZXN0X2V4cGVjdF9mYWlsdXJlICdwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZScgJ2ZhbHNlJworCXRlc3RfZG9uZQorCUVPRgorCWNoZWNrX3N1Yl90ZXN0X2xpYl90ZXN0IGZhaWxpbmctdG9kbyA8PC1cXEVPRgorCT4gb2sgMSAtIHBhc3NpbmcgdGVzdAorCT4gbm90IG9rIDIgLSBwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZSAjIFRPRE8ga25vd24gYnJlYWthZ2UKKwk+ICMgc3RpbGwgaGF2ZSAxIGtub3duIGJyZWFrYWdlKHMpCisJPiAjIHBhc3NlZCBhbGwgcmVtYWluaW5nIDEgdGVzdChzKQorCT4gMS4uMgorCUVPRgorIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcmV0ZW5kIHdlIGhhdmUgZml4ZWQgYSBrbm93biBicmVha2FnZScgIgorCXJ1bl9zdWJfdGVzdF9saWJfdGVzdCBwYXNzaW5nLXRvZG8gJ0EgcGFzc2luZyBUT0RPIHRlc3QnIDw8LVxcRU9GICYmCisJdGVzdF9leHBlY3RfZmFpbHVyZSAncHJldGVuZCB3ZSBoYXZlIGZpeGVkIGEga25vd24gYnJlYWthZ2UnICd0cnVlJworCXRlc3RfZG9uZQorCUVPRgorCWNoZWNrX3N1Yl90ZXN0X2xpYl90ZXN0IHBhc3NpbmctdG9kbyA8PC1cXEVPRgorCT4gb2sgMSAtIHByZXRlbmQgd2UgaGF2ZSBmaXhlZCBhIGtub3duIGJyZWFrYWdlICMgVE9ETyBrbm93biBicmVha2FnZSB2YW5pc2hlZAorCT4gIyAxIGtub3duIGJyZWFrYWdlKHMpIHZhbmlzaGVkOyBwbGVhc2UgdXBkYXRlIHRlc3QocykKIAk+IDEuLjEKIAlFT0YKLQl0ZXN0X2NtcCBleHBlY3Qgb3V0KQogIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcmV0ZW5kIHdlIGhhdmUgZml4ZWQgb25lIG9mIHR3byBrbm93biBicmVha2FnZXMgKHJ1biBpbiBzdWIgdGVzdC1saWIpJyAiCisJcnVuX3N1Yl90ZXN0X2xpYl90ZXN0IHBhcnRpYWxseS1wYXNzaW5nLXRvZG9zIFwKKwkJJzIgVE9ETyB0ZXN0cywgb25lIHBhc3NpbmcnIDw8LVxcRU9GICYmCisJdGVzdF9leHBlY3RfZmFpbHVyZSAncHJldGVuZCB3ZSBoYXZlIGEga25vd24gYnJlYWthZ2UnICdmYWxzZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcmV0ZW5kIHdlIGhhdmUgYSBwYXNzaW5nIHRlc3QnICd0cnVlJworCXRlc3RfZXhwZWN0X2ZhaWx1cmUgJ3ByZXRlbmQgd2UgaGF2ZSBmaXhlZCBhbm90aGVyIGtub3duIGJyZWFrYWdlJyAndHJ1ZScKKwl0ZXN0X2RvbmUKKwlFT0YKKwljaGVja19zdWJfdGVzdF9saWJfdGVzdCBwYXJ0aWFsbHktcGFzc2luZy10b2RvcyA8PC1cXEVPRgorCT4gbm90IG9rIDEgLSBwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZSAjIFRPRE8ga25vd24gYnJlYWthZ2UKKwk+IG9rIDIgLSBwcmV0ZW5kIHdlIGhhdmUgYSBwYXNzaW5nIHRlc3QKKwk+IG9rIDMgLSBwcmV0ZW5kIHdlIGhhdmUgZml4ZWQgYW5vdGhlciBrbm93biBicmVha2FnZSAjIFRPRE8ga25vd24gYnJlYWthZ2UgdmFuaXNoZWQKKwk+ICMgMSBrbm93biBicmVha2FnZShzKSB2YW5pc2hlZDsgcGxlYXNlIHVwZGF0ZSB0ZXN0KHMpCisJPiAjIHN0aWxsIGhhdmUgMSBrbm93biBicmVha2FnZShzKQorCT4gIyBwYXNzZWQgYWxsIHJlbWFpbmluZyAxIHRlc3QocykKKwk+IDEuLjMKKwlFT0YKKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJldGVuZCB3ZSBoYXZlIGEgcGFzcywgZmFpbCwgYW5kIGtub3duIGJyZWFrYWdlJyAiCisJdGVzdF9tdXN0X2ZhaWwgcnVuX3N1Yl90ZXN0X2xpYl90ZXN0IFwKKwkJbWl4ZWQtcmVzdWx0czEgJ21peGVkIHJlc3VsdHMgIzEnIDw8LVxcRU9GICYmCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAncGFzc2luZyB0ZXN0JyAndHJ1ZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdmYWlsaW5nIHRlc3QnICdmYWxzZScKKwl0ZXN0X2V4cGVjdF9mYWlsdXJlICdwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZScgJ2ZhbHNlJworCXRlc3RfZG9uZQorCUVPRgorCWNoZWNrX3N1Yl90ZXN0X2xpYl90ZXN0IG1peGVkLXJlc3VsdHMxIDw8LVxcRU9GCisJPiBvayAxIC0gcGFzc2luZyB0ZXN0CisJPiBub3Qgb2sgMiAtIGZhaWxpbmcgdGVzdAorCT4gIwlmYWxzZQorCT4gbm90IG9rIDMgLSBwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZSAjIFRPRE8ga25vd24gYnJlYWthZ2UKKwk+ICMgc3RpbGwgaGF2ZSAxIGtub3duIGJyZWFrYWdlKHMpCisJPiAjIGZhaWxlZCAxIGFtb25nIHJlbWFpbmluZyAyIHRlc3QocykKKwk+IDEuLjMKKwlFT0YKKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJldGVuZCB3ZSBoYXZlIGEgbWl4IG9mIGFsbCBwb3NzaWJsZSByZXN1bHRzJyAiCisJdGVzdF9tdXN0X2ZhaWwgcnVuX3N1Yl90ZXN0X2xpYl90ZXN0IFwKKwkJbWl4ZWQtcmVzdWx0czIgJ21peGVkIHJlc3VsdHMgIzInIDw8LVxcRU9GICYmCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAncGFzc2luZyB0ZXN0JyAndHJ1ZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdwYXNzaW5nIHRlc3QnICd0cnVlJworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Bhc3NpbmcgdGVzdCcgJ3RydWUnCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAncGFzc2luZyB0ZXN0JyAndHJ1ZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdmYWlsaW5nIHRlc3QnICdmYWxzZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdmYWlsaW5nIHRlc3QnICdmYWxzZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdmYWlsaW5nIHRlc3QnICdmYWxzZScKKwl0ZXN0X2V4cGVjdF9mYWlsdXJlICdwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZScgJ2ZhbHNlJworCXRlc3RfZXhwZWN0X2ZhaWx1cmUgJ3ByZXRlbmQgd2UgaGF2ZSBhIGtub3duIGJyZWFrYWdlJyAnZmFsc2UnCisJdGVzdF9leHBlY3RfZmFpbHVyZSAncHJldGVuZCB3ZSBoYXZlIGZpeGVkIGEga25vd24gYnJlYWthZ2UnICd0cnVlJworCXRlc3RfZG9uZQorCUVPRgorCWNoZWNrX3N1Yl90ZXN0X2xpYl90ZXN0IG1peGVkLXJlc3VsdHMyIDw8LVxcRU9GCisJPiBvayAxIC0gcGFzc2luZyB0ZXN0CisJPiBvayAyIC0gcGFzc2luZyB0ZXN0CisJPiBvayAzIC0gcGFzc2luZyB0ZXN0CisJPiBvayA0IC0gcGFzc2luZyB0ZXN0CisJPiBub3Qgb2sgNSAtIGZhaWxpbmcgdGVzdAorCT4gIwlmYWxzZQorCT4gbm90IG9rIDYgLSBmYWlsaW5nIHRlc3QKKwk+ICMJZmFsc2UKKwk+IG5vdCBvayA3IC0gZmFpbGluZyB0ZXN0CisJPiAjCWZhbHNlCisJPiBub3Qgb2sgOCAtIHByZXRlbmQgd2UgaGF2ZSBhIGtub3duIGJyZWFrYWdlICMgVE9ETyBrbm93biBicmVha2FnZQorCT4gbm90IG9rIDkgLSBwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZSAjIFRPRE8ga25vd24gYnJlYWthZ2UKKwk+IG9rIDEwIC0gcHJldGVuZCB3ZSBoYXZlIGZpeGVkIGEga25vd24gYnJlYWthZ2UgIyBUT0RPIGtub3duIGJyZWFrYWdlIHZhbmlzaGVkCisJPiAjIDEga25vd24gYnJlYWthZ2UocykgdmFuaXNoZWQ7IHBsZWFzZSB1cGRhdGUgdGVzdChzKQorCT4gIyBzdGlsbCBoYXZlIDIga25vd24gYnJlYWthZ2UocykKKwk+ICMgZmFpbGVkIDMgYW1vbmcgcmVtYWluaW5nIDcgdGVzdChzKQorCT4gMS4uMTAKKwlFT0YKKyIKKwogdGVzdF9zZXRfcHJlcmVxIEhBVkVJVAogaGF2ZWl0PW5vCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIEhBVkVJVCAndGVzdCBydW5zIGlmIHByZXJlcXVpc2l0ZSBpcyBzYXRpc2ZpZWQnICcKQEAgLTEyNSw2ICsyNTIsMzggQEAKIAlleGl0IDEKIGZpCiAKK3Rlc3RfbGF6eV9wcmVyZXEgTEFaWV9UUlVFIHRydWUKK2hhdmV0cnVlPW5vCit0ZXN0X2V4cGVjdF9zdWNjZXNzIExBWllfVFJVRSAndGVzdCBydW5zIGlmIGxhenkgcHJlcmVxIGlzIHNhdGlzZmllZCcgJworCWhhdmV0cnVlPXllcworJworZG9udGhhdmV0cnVlPXllcwordGVzdF9leHBlY3Rfc3VjY2VzcyAhTEFaWV9UUlVFICdtaXNzaW5nIGxhenkgcHJlcmVxcyBza2lwIHRlc3RzJyAnCisJZG9udGhhdmV0cnVlPW5vCisnCisKK2lmIHRlc3QgIiRoYXZldHJ1ZSRkb250aGF2ZXRydWUiICE9IHllc3llcwordGhlbgorCXNheSAnYnVnIGluIHRlc3QgZnJhbWV3b3JrOiBsYXp5IHByZXJlcXVpc2l0ZXMgZG8gbm90IHdvcmsnCisJZXhpdCAxCitmaQorCit0ZXN0X2xhenlfcHJlcmVxIExBWllfRkFMU0UgZmFsc2UKK25vdGhhdmVmYWxzZT1ubwordGVzdF9leHBlY3Rfc3VjY2VzcyAhTEFaWV9GQUxTRSAnbmVnYXRpdmUgbGF6eSBwcmVyZXFzIGNoZWNrZWQnICcKKwlub3RoYXZlZmFsc2U9eWVzCisnCitoYXZlZmFsc2U9eWVzCit0ZXN0X2V4cGVjdF9zdWNjZXNzIExBWllfRkFMU0UgJ21pc3NpbmcgbmVnYXRpdmUgbGF6eSBwcmVyZXFzIHdpbGwgc2tpcCcgJworCWhhdmVmYWxzZT1ubworJworCitpZiB0ZXN0ICIkbm90aGF2ZWZhbHNlJGhhdmVmYWxzZSIgIT0geWVzeWVzCit0aGVuCisJc2F5ICdidWcgaW4gdGVzdCBmcmFtZXdvcms6IG5lZ2F0aXZlIGxhenkgcHJlcmVxdWlzaXRlcyBkbyBub3Qgd29yaycKKwlleGl0IDEKK2ZpCisKIGNsZWFuPW5vCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0cyBjbGVhbiB1cCBhZnRlciB0aGVtc2VsdmVzJyAnCiAJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFuPXllcwpAQCAtMTM3LDE5ICsyOTYsOCBAQAogZmkKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdHMgY2xlYW4gdXAgZXZlbiBvbiBmYWlsdXJlcycgIgotCW1rZGlyIGZhaWxpbmctY2xlYW51cCAmJgotCSgKLQljZCBmYWlsaW5nLWNsZWFudXAgJiYKLQotCWNhdCA+ZmFpbGluZy1jbGVhbnVwLnNoIDw8LUVPRiAmJgotCSMhJFNIRUxMX1BBVEgKLQotCXRlc3RfZGVzY3JpcHRpb249J0ZhaWxpbmcgdGVzdHMgd2l0aCBjbGVhbnVwIGNvbW1hbmRzJwotCi0JIyBQb2ludCB0byB0aGUgdC90ZXN0LWxpYi5zaCwgd2hpY2ggaXNuJ3QgaW4gLi4vIGFzIHVzdWFsCi0JVEVTVF9ESVJFQ1RPUlk9XCIkVEVTVF9ESVJFQ1RPUllcIgotCS4gXCJcJFRFU1RfRElSRUNUT1JZXCIvdGVzdC1saWIuc2gKLQorCXRlc3RfbXVzdF9mYWlsIHJ1bl9zdWJfdGVzdF9saWJfdGVzdCBcCisJCWZhaWxpbmctY2xlYW51cCAnRmFpbGluZyB0ZXN0cyB3aXRoIGNsZWFudXAgY29tbWFuZHMnIDw8LVxcRU9GICYmCiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdHMgY2xlYW4gdXAgZXZlbiBhZnRlciBhIGZhaWx1cmUnICcKIAkJdG91Y2ggY2xlYW4tYWZ0ZXItZmFpbHVyZSAmJgogCQl0ZXN0X3doZW5fZmluaXNoZWQgcm0gY2xlYW4tYWZ0ZXItZmFpbHVyZSAmJgpAQCAtMTU5LDI5ICszMDcsMjEgQEAKIAkJdGVzdF93aGVuX2ZpbmlzaGVkIFwiKGV4aXQgMilcIgogCScKIAl0ZXN0X2RvbmUKLQogCUVPRgotCi0JY2htb2QgK3ggZmFpbGluZy1jbGVhbnVwLnNoICYmCi0JdGVzdF9tdXN0X2ZhaWwgLi9mYWlsaW5nLWNsZWFudXAuc2ggPm91dCAyPmVyciAmJgotCSEgdGVzdCAtcyBlcnIgJiYKLQkhIHRlc3QgLWYgXCJ0cmFzaCBkaXJlY3RvcnkuZmFpbGluZy1jbGVhbnVwL2NsZWFuLWFmdGVyLWZhaWx1cmVcIiAmJgotCXNlZCAtZSAncy9aJC8vJyAtZSAncy9ePiAvLycgPmV4cGVjdCA8PC1cXEVPRiAmJgotCT4gbm90IG9rIC0gMSB0ZXN0cyBjbGVhbiB1cCBldmVuIGFmdGVyIGEgZmFpbHVyZQorCWNoZWNrX3N1Yl90ZXN0X2xpYl90ZXN0IGZhaWxpbmctY2xlYW51cCA8PC1cXEVPRgorCT4gbm90IG9rIDEgLSB0ZXN0cyBjbGVhbiB1cCBldmVuIGFmdGVyIGEgZmFpbHVyZQogCT4gIwlaCiAJPiAjCXRvdWNoIGNsZWFuLWFmdGVyLWZhaWx1cmUgJiYKIAk+ICMJdGVzdF93aGVuX2ZpbmlzaGVkIHJtIGNsZWFuLWFmdGVyLWZhaWx1cmUgJiYKIAk+ICMJKGV4aXQgMSkKIAk+ICMJWgotCT4gbm90IG9rIC0gMiBmYWlsdXJlIHRvIGNsZWFuIHVwIGNhdXNlcyB0aGUgdGVzdCB0byBmYWlsCisJPiBub3Qgb2sgMiAtIGZhaWx1cmUgdG8gY2xlYW4gdXAgY2F1c2VzIHRoZSB0ZXN0IHRvIGZhaWwKIAk+ICMJWgogCT4gIwl0ZXN0X3doZW5fZmluaXNoZWQgXCIoZXhpdCAyKVwiCiAJPiAjCVoKIAk+ICMgZmFpbGVkIDIgYW1vbmcgMiB0ZXN0KHMpCiAJPiAxLi4yCiAJRU9GCi0JdGVzdF9jbXAgZXhwZWN0IG91dAotCSkKICIKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNDUwLDI0ICs1OTAsNiBAQAogCXRlc3QgJG51bXBhdGgwID0gMQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdyZWFsIHBhdGggd29ya3MgYXMgZXhwZWN0ZWQnICcKLQlta2RpciBmaXJzdCAmJgotCWxuIC1zIC4uLy5naXQgZmlyc3QvLmdpdCAmJgotCW1rZGlyIHNlY29uZCAmJgotCWxuIC1zIC4uL2ZpcnN0IHNlY29uZC9vdGhlciAmJgotCW1rZGlyIHRoaXJkICYmCi0JZGlyPSIkKGNkIC5naXQ7IHB3ZCAtUCkiICYmCi0JZGlyMj10aGlyZC8uLi9zZWNvbmQvb3RoZXIvLmdpdCAmJgotCXRlc3QgIiRkaXIiID0gIiQodGVzdC1wYXRoLXV0aWxzIHJlYWxfcGF0aCAkZGlyMikiICYmCi0JZmlsZT0iJGRpciIvaW5kZXggJiYKLQl0ZXN0ICIkZmlsZSIgPSAiJCh0ZXN0LXBhdGgtdXRpbHMgcmVhbF9wYXRoICRkaXIyL2luZGV4KSIgJiYKLQliYXNlbmFtZT1ibHViICYmCi0JdGVzdCAiJGRpci8kYmFzZW5hbWUiID0gIiQoY2QgLmdpdCAmJiB0ZXN0LXBhdGgtdXRpbHMgcmVhbF9wYXRoICIkYmFzZW5hbWUiKSIgJiYKLQlsbiAtcyAuLi9maXJzdC9maWxlIC5naXQvc3ltbCAmJgotCXN5bT0iJChjZCBmaXJzdDsgcHdkIC1QKSIvZmlsZSAmJgotCXRlc3QgIiRzeW0iID0gIiQodGVzdC1wYXRoLXV0aWxzIHJlYWxfcGF0aCAiJGRpcjIvc3ltbCIpIgotJwotCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJ5IGxvbmcgbmFtZSBpbiB0aGUgaW5kZXggaGFuZGxlZCBzYW5lbHknICcKIAogCWE9YSAmJiAjIDEKZGlmZiAtLWdpdCBhL3QvdDAwMDMtYXR0cmlidXRlcy5zaCBiL3QvdDAwMDMtYXR0cmlidXRlcy5zaAppbmRleCA1MWYzMDQ1Li4wYjk4YjZmIDEwMDc1NQotLS0gYS90L3QwMDAzLWF0dHJpYnV0ZXMuc2gKKysrIGIvdC90MDAwMy1hdHRyaWJ1dGVzLnNoCkBAIC0xMjMsMTYgKzEyMyw2IEBACiAKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgd2hldGhlciBGUyBpcyBjYXNlLWluc2Vuc2l0aXZlJyAnCi0JbWtkaXIganVuayAmJgotCWVjaG8gZ29vZCA+anVuay9DYW1lbENhc2UgJiYKLQllY2hvIGJhZCA+anVuay9jYW1lbGNhc2UgJiYKLQlpZiB0ZXN0ICIkKGNhdCBqdW5rL0NhbWVsQ2FzZSkiICE9IGdvb2QKLQl0aGVuCi0JCXRlc3Rfc2V0X3ByZXJlcSBDQVNFX0lOU0VOU0lUSVZFX0ZTCi0JZmkKLScKLQogdGVzdF9leHBlY3Rfc3VjY2VzcyBDQVNFX0lOU0VOU0lUSVZFX0ZTICdhZGRpdGlvbmFsIGNhc2UgaW5zZW5zaXRpdml0eSB0ZXN0cycgJwogCXRlc3RfbXVzdF9mYWlsIGF0dHJfY2hlY2sgYS9CL0QvZyAiYS9iL2QvKiIgIi1jIGNvcmUuaWdub3JlY2FzZT0wIiAmJgogCXRlc3RfbXVzdF9mYWlsIGF0dHJfY2hlY2sgQS9CL0QvTk8gImEvYi9kLyoiICItYyBjb3JlLmlnbm9yZWNhc2U9MCIgJiYKQEAgLTIwNiw2ICsxOTYsNTQgQEAKIAlhdHRyX2NoZWNrIHN1YmRpci9hL2kgdW5zcGVjaWZpZWQKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnbmVnYXRpdmUgcGF0dGVybnMnICcKKwllY2hvICIhZiB0ZXN0PWJhciIgPi5naXRhdHRyaWJ1dGVzICYmCisJZ2l0IGNoZWNrLWF0dHIgdGVzdCAtLSAnIiciJyFmJyInIicgMj5lcnJvcnMgJiYKKwl0ZXN0X2kxOG5ncmVwICJOZWdhdGl2ZSBwYXR0ZXJucyBhcmUgaWdub3JlZCIgZXJyb3JzCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3BhdHRlcm5zIHN0YXJ0aW5nIHdpdGggZXhjbGFtYXRpb24nICcKKwllY2hvICJcIWYgdGVzdD1mb28iID4uZ2l0YXR0cmlidXRlcyAmJgorCWF0dHJfY2hlY2sgIiFmIiBmb28KKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnIioqIiB0ZXN0JyAnCisJZWNobyAiKiovZiBmb289YmFyIiA+LmdpdGF0dHJpYnV0ZXMgJiYKKwljYXQgPDxcRU9GID5leHBlY3QgJiYKK2Y6IGZvbzogYmFyCithL2Y6IGZvbzogYmFyCithL2IvZjogZm9vOiBiYXIKK2EvYi9jL2Y6IGZvbzogYmFyCitFT0YKKwlnaXQgY2hlY2stYXR0ciBmb28gLS0gImYiID5hY3R1YWwgMj5lcnIgJiYKKwlnaXQgY2hlY2stYXR0ciBmb28gLS0gImEvZiIgPj5hY3R1YWwgMj4+ZXJyICYmCisJZ2l0IGNoZWNrLWF0dHIgZm9vIC0tICJhL2IvZiIgPj5hY3R1YWwgMj4+ZXJyICYmCisJZ2l0IGNoZWNrLWF0dHIgZm9vIC0tICJhL2IvYy9mIiA+PmFjdHVhbCAyPj5lcnIgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisJdGVzdF9saW5lX2NvdW50ID0gMCBlcnIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnIioqIiB3aXRoIG5vIHNsYXNoZXMgdGVzdCcgJworCWVjaG8gImEqKmYgZm9vPWJhciIgPi5naXRhdHRyaWJ1dGVzICYmCisJZ2l0IGNoZWNrLWF0dHIgZm9vIC0tICJmIiA+YWN0dWFsICYmCisJY2F0IDw8XEVPRiA+ZXhwZWN0ICYmCitmOiBmb286IHVuc3BlY2lmaWVkCithZjogZm9vOiBiYXIKK2F4ZjogZm9vOiBiYXIKK2EvZjogZm9vOiB1bnNwZWNpZmllZAorYS9iL2Y6IGZvbzogdW5zcGVjaWZpZWQKK2EvYi9jL2Y6IGZvbzogdW5zcGVjaWZpZWQKK0VPRgorCWdpdCBjaGVjay1hdHRyIGZvbyAtLSAiZiIgPmFjdHVhbCAyPmVyciAmJgorCWdpdCBjaGVjay1hdHRyIGZvbyAtLSAiYWYiID4+YWN0dWFsIDI+ZXJyICYmCisJZ2l0IGNoZWNrLWF0dHIgZm9vIC0tICJheGYiID4+YWN0dWFsIDI+ZXJyICYmCisJZ2l0IGNoZWNrLWF0dHIgZm9vIC0tICJhL2YiID4+YWN0dWFsIDI+PmVyciAmJgorCWdpdCBjaGVjay1hdHRyIGZvbyAtLSAiYS9iL2YiID4+YWN0dWFsIDI+PmVyciAmJgorCWdpdCBjaGVjay1hdHRyIGZvbyAtLSAiYS9iL2MvZiIgPj5hY3R1YWwgMj4+ZXJyICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgorCXRlc3RfbGluZV9jb3VudCA9IDAgZXJyCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGJhcmUnICcKIAlnaXQgY2xvbmUgLS1iYXJlIC4gYmFyZS5naXQgJiYKIAljZCBiYXJlLmdpdApkaWZmIC0tZ2l0IGEvdC90MDAwNi1kYXRlLnNoIGIvdC90MDAwNi1kYXRlLnNoCmluZGV4IDFkMjk4MTAuLmU1M2NmNmQgMTAwNzU1Ci0tLSBhL3QvdDAwMDYtZGF0ZS5zaAorKysgYi90L3QwMDA2LWRhdGUuc2gKQEAgLTExLDcgKzExLDcgQEAKIAllY2hvICIkdCAtPiAkMiIgPmV4cGVjdAogCXRlc3RfZXhwZWN0XyR7Mzotc3VjY2Vzc30gInJlbGF0aXZlIGRhdGUgKCQyKSIgIgogCXRlc3QtZGF0ZSBzaG93ICR0ID5hY3R1YWwgJiYKLQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisJdGVzdF9pMThuY21wIGV4cGVjdCBhY3R1YWwKIAkiCiB9CiAKZGlmZiAtLWdpdCBhL3QvdDAwMDctZ2l0LXZhci5zaCBiL3QvdDAwMDctZ2l0LXZhci5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41ODY4YTg3Ci0tLSAvZGV2L251bGwKKysrIGIvdC90MDAwNy1naXQtdmFyLnNoCkBAIC0wLDAgKzEsNDkgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdiYXNpYyBzYW5pdHkgY2hlY2tzIGZvciBnaXQgdmFyJworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldCBHSVRfQVVUSE9SX0lERU5UJyAnCisJdGVzdF90aWNrICYmCisJZWNobyAiJEdJVF9BVVRIT1JfTkFNRSA8JEdJVF9BVVRIT1JfRU1BSUw+ICRHSVRfQVVUSE9SX0RBVEUiID5leHBlY3QgJiYKKwlnaXQgdmFyIEdJVF9BVVRIT1JfSURFTlQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2V0IEdJVF9DT01NSVRURVJfSURFTlQnICcKKwl0ZXN0X3RpY2sgJiYKKwllY2hvICIkR0lUX0NPTU1JVFRFUl9OQU1FIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4gJEdJVF9DT01NSVRURVJfREFURSIgPmV4cGVjdCAmJgorCWdpdCB2YXIgR0lUX0NPTU1JVFRFUl9JREVOVCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICFBVVRPSURFTlQgJ3JlcXVlc3RlZCBpZGVudGl0ZXMgYXJlIHN0cmljdCcgJworCSgKKwkJc2FuZV91bnNldCBHSVRfQ09NTUlUVEVSX05BTUUgJiYKKwkJc2FuZV91bnNldCBHSVRfQ09NTUlUVEVSX0VNQUlMICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCB2YXIgR0lUX0NPTU1JVFRFUl9JREVOVAorCSkKKycKKworIyBGb3IgZ2l0IHZhciAtbCwgd2UgY2hlY2sgb25seSBhIHJlcHJlc2VudGF0aXZlIHZhcmlhYmxlOworIyB0ZXN0aW5nIHRoZSB3aG9sZSBvdXRwdXQgd291bGQgbWFrZSBvdXIgdGVzdCB0b28gYnJpdHRsZSB3aXRoCisjIHJlc3BlY3QgdG8gdW5yZWxhdGVkIGNoYW5nZXMgaW4gdGhlIHRlc3Qgc3VpdGUncyBlbnZpcm9ubWVudC4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCB2YXIgLWwgbGlzdHMgdmFyaWFibGVzJyAnCisJZ2l0IHZhciAtbCA+YWN0dWFsICYmCisJZWNobyAiJEdJVF9BVVRIT1JfTkFNRSA8JEdJVF9BVVRIT1JfRU1BSUw+ICRHSVRfQVVUSE9SX0RBVEUiID5leHBlY3QgJiYKKwlzZWQgLW4gcy9HSVRfQVVUSE9SX0lERU5UPS8vcCA8YWN0dWFsID5hY3R1YWwuYXV0aG9yICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbC5hdXRob3IKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHZhciAtbCBsaXN0cyBjb25maWcnICcKKwlnaXQgdmFyIC1sID5hY3R1YWwgJiYKKwllY2hvIGZhbHNlID5leHBlY3QgJiYKKwlzZWQgLW4gcy9jb3JlXFwuYmFyZT0vL3AgPGFjdHVhbCA+YWN0dWFsLmJhcmUgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsLmJhcmUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbGlzdGluZyBhbmQgYXNraW5nIGZvciB2YXJpYWJsZXMgYXJlIGV4Y2x1c2l2ZScgJworCXRlc3RfbXVzdF9mYWlsIGdpdCB2YXIgLWwgR0lUX0NPTU1JVFRFUl9JREVOVAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDAwMDgtaWdub3Jlcy5zaCBiL3QvdDAwMDgtaWdub3Jlcy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45YzFiZGUxCi0tLSAvZGV2L251bGwKKysrIGIvdC90MDAwOC1pZ25vcmVzLnNoCkBAIC0wLDAgKzEsNjUyIEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj1jaGVjay1pZ25vcmUKKworLiAuL3Rlc3QtbGliLnNoCisKK2luaXRfdmFycyAoKSB7CisJZ2xvYmFsX2V4Y2x1ZGVzPSIkKHB3ZCkvZ2xvYmFsLWV4Y2x1ZGVzIgorfQorCitlbmFibGVfZ2xvYmFsX2V4Y2x1ZGVzICgpIHsKKwlpbml0X3ZhcnMgJiYKKwlnaXQgY29uZmlnIGNvcmUuZXhjbHVkZXNmaWxlICIkZ2xvYmFsX2V4Y2x1ZGVzIgorfQorCitleHBlY3RfaW4gKCkgeworCWRlc3Q9IiRIT01FL2V4cGVjdGVkLSQxIiB0ZXh0PSIkMiIKKwlpZiB0ZXN0IC16ICIkdGV4dCIKKwl0aGVuCisJCT4iJGRlc3QiICMgYXZvaWQgbmV3bGluZQorCWVsc2UKKwkJZWNobyAiJHRleHQiID4iJGRlc3QiCisJZmkKK30KKworZXhwZWN0ICgpIHsKKwlleHBlY3RfaW4gc3Rkb3V0ICIkMSIKK30KKworZXhwZWN0X2Zyb21fc3RkaW4gKCkgeworCWNhdCA+IiRIT01FL2V4cGVjdGVkLXN0ZG91dCIKK30KKwordGVzdF9zdGRlcnIgKCkgeworCWV4cGVjdGVkPSIkMSIKKwlleHBlY3RfaW4gc3RkZXJyICIkMSIgJiYKKwl0ZXN0X2NtcCAiJEhPTUUvZXhwZWN0ZWQtc3RkZXJyIiAiJEhPTUUvc3RkZXJyIgorfQorCitzdGRlcnJfY29udGFpbnMgKCkgeworCXJlZ2V4cD0iJDEiCisJaWYgZ3JlcCAiJHJlZ2V4cCIgIiRIT01FL3N0ZGVyciIKKwl0aGVuCisJCXJldHVybiAwCisJZWxzZQorCQllY2hvICJkaWRuJ3QgZmluZCAvJHJlZ2V4cC8gaW4gJEhPTUUvc3RkZXJyIgorCQljYXQgIiRIT01FL3N0ZGVyciIKKwkJcmV0dXJuIDEKKwlmaQorfQorCitzdGRlcnJfZW1wdHlfb25fc3VjY2VzcyAoKSB7CisJZXhwZWN0X2NvZGU9IiQxIgorCWlmIHRlc3QgJGV4cGVjdF9jb2RlID0gMAorCXRoZW4KKwkJdGVzdF9zdGRlcnIgIiIKKwllbHNlCisJCSMgSWYgd2UgZXhwZWN0IGZhaWx1cmUgdGhlbiBzdGRlcnIgbWlnaHQgb3IgbWlnaHQgbm90IGJlIGVtcHR5CisJCSMgZHVlIHRvIC0tcXVpZXQgLSB0aGUgY2FsbGVyIGNhbiBjaGVjayBpdHMgY29udGVudHMKKwkJcmV0dXJuIDAKKwlmaQorfQorCit0ZXN0X2NoZWNrX2lnbm9yZSAoKSB7CisJYXJncz0iJDEiIGV4cGVjdF9jb2RlPSIkezI6LTB9IiBnbG9iYWxfYXJncz0iJDMiCisKKwlpbml0X3ZhcnMgJiYKKwlybSAtZiAiJEhPTUUvc3Rkb3V0IiAiJEhPTUUvc3RkZXJyIiAiJEhPTUUvY21kIiAmJgorCWVjaG8gZ2l0ICRnbG9iYWxfYXJncyBjaGVjay1pZ25vcmUgJHF1aWV0X29wdCAkdmVyYm9zZV9vcHQgJGFyZ3MgXAorCQk+IiRIT01FL2NtZCIgJiYKKwl0ZXN0X2V4cGVjdF9jb2RlICIkZXhwZWN0X2NvZGUiIFwKKwkJZ2l0ICRnbG9iYWxfYXJncyBjaGVjay1pZ25vcmUgJHF1aWV0X29wdCAkdmVyYm9zZV9vcHQgJGFyZ3MgXAorCQk+IiRIT01FL3N0ZG91dCIgMj4iJEhPTUUvc3RkZXJyIiAmJgorCXRlc3RfY21wICIkSE9NRS9leHBlY3RlZC1zdGRvdXQiICIkSE9NRS9zdGRvdXQiICYmCisJc3RkZXJyX2VtcHR5X29uX3N1Y2Nlc3MgIiRleHBlY3RfY29kZSIKK30KKworIyBSdW5zIHRoZSBzYW1lIGNvZGUgd2l0aCAzIGRpZmZlcmVudCBsZXZlbHMgb2Ygb3V0cHV0IHZlcmJvc2l0eSwKKyMgZXhwZWN0aW5nIHN1Y2Nlc3MgZWFjaCB0aW1lLiAgVGFrZXMgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQKKyMgY2hlY2staWdub3JlIC0tdmVyYm9zZSBvdXRwdXQgaXMgdGhlIHNhbWUgYXMgbm9ybWFsIG91dHB1dCBleGNlcHQKKyMgZm9yIHRoZSBleHRyYSBmaXJzdCBjb2x1bW4uCisjCisjIEFyZ3VtZW50czoKKyMgICAtIChvcHRpb25hbCkgcHJlcmVxcyBmb3IgdGhpcyB0ZXN0LCBlLmcuICdTWU1MSU5LUycKKyMgICAtIHRlc3QgbmFtZQorIyAgIC0gb3V0cHV0IHRvIGV4cGVjdCBmcm9tIC12IC8gLS12ZXJib3NlIG1vZGUKKyMgICAtIGNvZGUgdG8gcnVuIChzaG91bGQgaW52b2tlIHRlc3RfY2hlY2tfaWdub3JlKQordGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSAoKSB7CisJcHJlcmVxPQorCWlmIHRlc3QgJCMgLWVxIDQKKwl0aGVuCisJCXByZXJlcT0kMQorCQlzaGlmdAorCWZpCisJdGVzdG5hbWU9IiQxIiBleHBlY3RfdmVyYm9zZT0iJDIiIGNvZGU9IiQzIgorCisJZXhwZWN0PSQoIGVjaG8gIiRleHBlY3RfdmVyYm9zZSIgfCBzZWQgLWUgJ3MvLioJLy8nICkKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJHByZXJlcSAiJHRlc3RuYW1lIiAnCisJCWV4cGVjdCAiJGV4cGVjdCIgJiYKKwkJZXZhbCAiJGNvZGUiCisJJworCisJZm9yIHF1aWV0X29wdCBpbiAnLXEnICctLXF1aWV0JworCWRvCisJCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJHByZXJlcSAiJHRlc3RuYW1lJHtxdWlldF9vcHQ6KyB3aXRoICRxdWlldF9vcHR9IiAiCisJCQlleHBlY3QgJycgJiYKKwkJCSRjb2RlCisJCSIKKwlkb25lCisJcXVpZXRfb3B0PQorCisJZm9yIHZlcmJvc2Vfb3B0IGluICctdicgJy0tdmVyYm9zZScKKwlkbworCQl0ZXN0X2V4cGVjdF9zdWNjZXNzICRwcmVyZXEgIiR0ZXN0bmFtZSR7dmVyYm9zZV9vcHQ6KyB3aXRoICR2ZXJib3NlX29wdH0iICIKKwkJCWV4cGVjdCAnJGV4cGVjdF92ZXJib3NlJyAmJgorCQkJJGNvZGUKKwkJIgorCWRvbmUKKwl2ZXJib3NlX29wdD0KK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKwlpbml0X3ZhcnMgJiYKKwlta2RpciAtcCBhL2IvaWdub3JlZC1kaXIgYS9zdWJtb2R1bGUgYiAmJgorCWlmIHRlc3RfaGF2ZV9wcmVyZXEgU1lNTElOS1MKKwl0aGVuCisJCWxuIC1zIGIgYS9zeW1saW5rCisJZmkgJiYKKwkoCisJCWNkIGEvc3VibW9kdWxlICYmCisJCWdpdCBpbml0ICYmCisJCWVjaG8gYSA+YSAmJgorCQlnaXQgYWRkIGEgJiYKKwkJZ2l0IGNvbW1pdCAtbSJjb21taXQgaW4gc3VibW9kdWxlIgorCSkgJiYKKwlnaXQgYWRkIGEvc3VibW9kdWxlICYmCisJY2F0IDw8LVxFT0YgPi5naXRpZ25vcmUgJiYKKwkJb25lCisJCWlnbm9yZWQtKgorCQl0b3AtbGV2ZWwtZGlyLworCUVPRgorCWZvciBkaXIgaW4gLiBhCisJZG8KKwkJOiA+JGRpci9ub3QtaWdub3JlZCAmJgorCQk6ID4kZGlyL2lnbm9yZWQtYW5kLXVudHJhY2tlZCAmJgorCQk6ID4kZGlyL2lnbm9yZWQtYnV0LWluLWluZGV4CisJZG9uZSAmJgorCWdpdCBhZGQgLWYgaWdub3JlZC1idXQtaW4taW5kZXggYS9pZ25vcmVkLWJ1dC1pbi1pbmRleCAmJgorCWNhdCA8PC1cRU9GID5hLy5naXRpZ25vcmUgJiYKKwkJdHdvKgorCQkqdGhyZWUKKwlFT0YKKwljYXQgPDwtXEVPRiA+YS9iLy5naXRpZ25vcmUgJiYKKwkJZm91cgorCQlmaXZlCisJCSMgdGhpcyBjb21tZW50IHNob3VsZCBhZmZlY3QgdGhlIGxpbmUgbnVtYmVycworCQlzaXgKKwkJaWdub3JlZC1kaXIvCisJCSMgYW5kIHNvIHNob3VsZCB0aGlzIGJsYW5rIGxpbmU6CisKKwkJIW9uKgorCQkhdHdvCisJRU9GCisJZWNobyAic2V2ZW4iID5hL2IvaWdub3JlZC1kaXIvLmdpdGlnbm9yZSAmJgorCXRlc3QgLW4gIiRIT01FIiAmJgorCWNhdCA8PC1cRU9GID4iJGdsb2JhbF9leGNsdWRlcyIgJiYKKwkJZ2xvYmFsb25lCisJCSFnbG9iYWx0d28KKwkJZ2xvYmFsdGhyZWUKKwlFT0YKKwljYXQgPDwtXEVPRiA+Pi5naXQvaW5mby9leGNsdWRlCisJCXBlci1yZXBvCisJRU9GCisnCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgdGVzdCBpbnZhbGlkIGlucHV0cworCit0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICcuIGNvcm5lci1jYXNlJyAnJyAnCisJdGVzdF9jaGVja19pZ25vcmUgLiAxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgJ2VtcHR5IGNvbW1hbmQgbGluZScgJycgJworCXRlc3RfY2hlY2tfaWdub3JlICIiIDEyOCAmJgorCXN0ZGVycl9jb250YWlucyAiZmF0YWw6IG5vIHBhdGggc3BlY2lmaWVkIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICctLXN0ZGluIHdpdGggZW1wdHkgU1RESU4nICcnICcKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiLS1zdGRpbiIgMSA8L2Rldi9udWxsICYmCisJaWYgdGVzdCAtbiAiJHF1aWV0X29wdCI7IHRoZW4KKwkJdGVzdF9zdGRlcnIgIiIKKwllbHNlCisJCXRlc3Rfc3RkZXJyICJubyBwYXRoc3BlYyBnaXZlbi4iCisJZmkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLXEgd2l0aCBtdWx0aXBsZSBhcmdzJyAnCisJZXhwZWN0ICIiICYmCisJdGVzdF9jaGVja19pZ25vcmUgIi1xIG9uZSB0d28iIDEyOCAmJgorCXN0ZGVycl9jb250YWlucyAiZmF0YWw6IC0tcXVpZXQgaXMgb25seSB2YWxpZCB3aXRoIGEgc2luZ2xlIHBhdGhuYW1lIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXF1aWV0IHdpdGggbXVsdGlwbGUgYXJncycgJworCWV4cGVjdCAiIiAmJgorCXRlc3RfY2hlY2tfaWdub3JlICItLXF1aWV0IG9uZSB0d28iIDEyOCAmJgorCXN0ZGVycl9jb250YWlucyAiZmF0YWw6IC0tcXVpZXQgaXMgb25seSB2YWxpZCB3aXRoIGEgc2luZ2xlIHBhdGhuYW1lIgorJworCitmb3IgdmVyYm9zZV9vcHQgaW4gJy12JyAnLS12ZXJib3NlJworZG8KKwlmb3IgcXVpZXRfb3B0IGluICctcScgJy0tcXVpZXQnCisJZG8KKwkJdGVzdF9leHBlY3Rfc3VjY2VzcyAiJHF1aWV0X29wdCAkdmVyYm9zZV9vcHQiICIKKwkJCWV4cGVjdCAnJyAmJgorCQkJdGVzdF9jaGVja19pZ25vcmUgJyRxdWlldF9vcHQgJHZlcmJvc2Vfb3B0IGZvbycgMTI4ICYmCisJCQlzdGRlcnJfY29udGFpbnMgJ2ZhdGFsOiBjYW5ub3QgaGF2ZSBib3RoIC0tcXVpZXQgYW5kIC0tdmVyYm9zZScKKwkJIgorCWRvbmUKK2RvbmUKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1xdWlldCB3aXRoIG11bHRpcGxlIGFyZ3MnICcKKwlleHBlY3QgIiIgJiYKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiLS1xdWlldCBvbmUgdHdvIiAxMjggJiYKKwlzdGRlcnJfY29udGFpbnMgImZhdGFsOiAtLXF1aWV0IGlzIG9ubHkgdmFsaWQgd2l0aCBhIHNpbmdsZSBwYXRobmFtZSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSAnZXJyb25lb3VzIHVzZSBvZiAtLScgJycgJworCXRlc3RfY2hlY2tfaWdub3JlICItLSIgMTI4ICYmCisJc3RkZXJyX2NvbnRhaW5zICJmYXRhbDogbm8gcGF0aCBzcGVjaWZpZWQiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgJy0tc3RkaW4gd2l0aCBzdXBlcmZsdW91cyBhcmcnICcnICcKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiLS1zdGRpbiBmb28iIDEyOCAmJgorCXN0ZGVycl9jb250YWlucyAiZmF0YWw6IGNhbm5vdCBzcGVjaWZ5IHBhdGhuYW1lcyB3aXRoIC0tc3RkaW4iCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgJy0tc3RkaW4gLXogd2l0aCBzdXBlcmZsdW91cyBhcmcnICcnICcKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiLS1zdGRpbiAteiBmb28iIDEyOCAmJgorCXN0ZGVycl9jb250YWlucyAiZmF0YWw6IGNhbm5vdCBzcGVjaWZ5IHBhdGhuYW1lcyB3aXRoIC0tc3RkaW4iCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgJy16IHdpdGhvdXQgLS1zdGRpbicgJycgJworCXRlc3RfY2hlY2tfaWdub3JlICIteiIgMTI4ICYmCisJc3RkZXJyX2NvbnRhaW5zICJmYXRhbDogLXogb25seSBtYWtlcyBzZW5zZSB3aXRoIC0tc3RkaW4iCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgJy16IHdpdGhvdXQgLS1zdGRpbiBhbmQgc3VwZXJmbHVvdXMgYXJnJyAnJyAnCisJdGVzdF9jaGVja19pZ25vcmUgIi16IGZvbyIgMTI4ICYmCisJc3RkZXJyX2NvbnRhaW5zICJmYXRhbDogLXogb25seSBtYWtlcyBzZW5zZSB3aXRoIC0tc3RkaW4iCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgJ25lZWRzIHdvcmsgdHJlZScgJycgJworCSgKKwkJY2QgLmdpdCAmJgorCQl0ZXN0X2NoZWNrX2lnbm9yZSAiZm9vIiAxMjgKKwkpICYmCisJc3RkZXJyX2NvbnRhaW5zICJmYXRhbDogVGhpcyBvcGVyYXRpb24gbXVzdCBiZSBydW4gaW4gYSB3b3JrIHRyZWUiCisnCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgdGVzdCBzdGFuZGFyZCBpZ25vcmVzCisKKyMgRmlyc3QgbWFrZSBzdXJlIHRoYXQgdGhlIHByZXNlbmNlIG9mIGEgZmlsZSBpbiB0aGUgd29ya2luZyB0cmVlCisjIGRvZXMgbm90IGltcGFjdCByZXN1bHRzLCBidXQgdGhhdCB0aGUgcHJlc2VuY2Ugb2YgYSBmaWxlIGluIHRoZQorIyBpbmRleCBkb2VzLgorCitmb3Igc3ViZGlyIGluICcnICdhLycKK2RvCisJaWYgdGVzdCAteiAiJHN1YmRpciIKKwl0aGVuCisJCXdoZXJlPSJhdCB0b3AtbGV2ZWwiCisJZWxzZQorCQl3aGVyZT0iaW4gc3ViZGlyICRzdWJkaXIiCisJZmkKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgIm5vbi1leGlzdGVudCBmaWxlICR3aGVyZSBub3QgaWdub3JlZCIgJycgIgorCQl0ZXN0X2NoZWNrX2lnbm9yZSAnJHtzdWJkaXJ9bm9uLWV4aXN0ZW50JyAxCisJIgorCisJdGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSAibm9uLWV4aXN0ZW50IGZpbGUgJHdoZXJlIGlnbm9yZWQiIFwKKwkJIi5naXRpZ25vcmU6MTpvbmUJJHtzdWJkaXJ9b25lIiAiCisJCXRlc3RfY2hlY2tfaWdub3JlICcke3N1YmRpcn1vbmUnCisJIgorCisJdGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSAiZXhpc3RpbmcgdW50cmFja2VkIGZpbGUgJHdoZXJlIG5vdCBpZ25vcmVkIiAnJyAiCisJCXRlc3RfY2hlY2tfaWdub3JlICcke3N1YmRpcn1ub3QtaWdub3JlZCcgMQorCSIKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgImV4aXN0aW5nIHRyYWNrZWQgZmlsZSAkd2hlcmUgbm90IGlnbm9yZWQiICcnICIKKwkJdGVzdF9jaGVja19pZ25vcmUgJyR7c3ViZGlyfWlnbm9yZWQtYnV0LWluLWluZGV4JyAxCisJIgorCisJdGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSAiZXhpc3RpbmcgdW50cmFja2VkIGZpbGUgJHdoZXJlIGlnbm9yZWQiIFwKKwkJIi5naXRpZ25vcmU6MjppZ25vcmVkLSoJJHtzdWJkaXJ9aWdub3JlZC1hbmQtdW50cmFja2VkIiAiCisJCXRlc3RfY2hlY2tfaWdub3JlICcke3N1YmRpcn1pZ25vcmVkLWFuZC11bnRyYWNrZWQnCisJIgorZG9uZQorCisjIEhhdmluZyBlc3RhYmxpc2hlZCB0aGUgYWJvdmUsIGZyb20gbm93IG9uIHdlIG1vc3RseSB0ZXN0IGFnYWluc3QKKyMgZmlsZXMgd2hpY2ggZG8gbm90IGV4aXN0IGluIHRoZSB3b3JraW5nIHRyZWUgb3IgaW5kZXguCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Yi1kaXJlY3RvcnkgbG9jYWwgaWdub3JlJyAnCisJZXhwZWN0ICJhLzMtdGhyZWUiICYmCisJdGVzdF9jaGVja19pZ25vcmUgImEvMy10aHJlZSBhL3RocmVlLW5vdC10aGlzLW9uZSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3ViLWRpcmVjdG9yeSBsb2NhbCBpZ25vcmUgd2l0aCAtLXZlcmJvc2UnICAnCisJZXhwZWN0ICJhLy5naXRpZ25vcmU6MjoqdGhyZWUJYS8zLXRocmVlIiAmJgorCXRlc3RfY2hlY2tfaWdub3JlICItLXZlcmJvc2UgYS8zLXRocmVlIGEvdGhyZWUtbm90LXRoaXMtb25lIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2NhbCBpZ25vcmUgaW5zaWRlIGEgc3ViLWRpcmVjdG9yeScgJworCWV4cGVjdCAiMy10aHJlZSIgJiYKKwkoCisJCWNkIGEgJiYKKwkJdGVzdF9jaGVja19pZ25vcmUgIjMtdGhyZWUgdGhyZWUtbm90LXRoaXMtb25lIgorCSkKKycKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvY2FsIGlnbm9yZSBpbnNpZGUgYSBzdWItZGlyZWN0b3J5IHdpdGggLS12ZXJib3NlJyAnCisJZXhwZWN0ICJhLy5naXRpZ25vcmU6MjoqdGhyZWUJMy10aHJlZSIgJiYKKwkoCisJCWNkIGEgJiYKKwkJdGVzdF9jaGVja19pZ25vcmUgIi0tdmVyYm9zZSAzLXRocmVlIHRocmVlLW5vdC10aGlzLW9uZSIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgJ25lc3RlZCBpbmNsdWRlJyBcCisJJ2EvYi8uZ2l0aWdub3JlOjg6IW9uKglhL2Ivb25lJyAnCisJdGVzdF9jaGVja19pZ25vcmUgImEvYi9vbmUiCisnCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgdGVzdCBpZ25vcmVkIHN1Yi1kaXJlY3RvcmllcworCit0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICdpZ25vcmVkIHN1Yi1kaXJlY3RvcnknIFwKKwknYS9iLy5naXRpZ25vcmU6NTppZ25vcmVkLWRpci8JYS9iL2lnbm9yZWQtZGlyJyAnCisJdGVzdF9jaGVja19pZ25vcmUgImEvYi9pZ25vcmVkLWRpciIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbXVsdGlwbGUgZmlsZXMgaW5zaWRlIGlnbm9yZWQgc3ViLWRpcmVjdG9yeScgJworCWV4cGVjdF9mcm9tX3N0ZGluIDw8LVxFT0YgJiYKKwkJYS9iL2lnbm9yZWQtZGlyL2ZvbworCQlhL2IvaWdub3JlZC1kaXIvdHdvb29vCisJCWEvYi9pZ25vcmVkLWRpci9zZXZlbgorCUVPRgorCXRlc3RfY2hlY2tfaWdub3JlICJhL2IvaWdub3JlZC1kaXIvZm9vIGEvYi9pZ25vcmVkLWRpci90d29vb28gYS9iL2lnbm9yZWQtZGlyL3NldmVuIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtdWx0aXBsZSBmaWxlcyBpbnNpZGUgaWdub3JlZCBzdWItZGlyZWN0b3J5IHdpdGggLXYnICcKKwlleHBlY3RfZnJvbV9zdGRpbiA8PC1cRU9GICYmCisJCWEvYi8uZ2l0aWdub3JlOjU6aWdub3JlZC1kaXIvCWEvYi9pZ25vcmVkLWRpci9mb28KKwkJYS9iLy5naXRpZ25vcmU6NTppZ25vcmVkLWRpci8JYS9iL2lnbm9yZWQtZGlyL3R3b29vbworCQlhL2IvLmdpdGlnbm9yZTo1Omlnbm9yZWQtZGlyLwlhL2IvaWdub3JlZC1kaXIvc2V2ZW4KKwlFT0YKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiLXYgYS9iL2lnbm9yZWQtZGlyL2ZvbyBhL2IvaWdub3JlZC1kaXIvdHdvb29vIGEvYi9pZ25vcmVkLWRpci9zZXZlbiIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2QgdG8gaWdub3JlZCBzdWItZGlyZWN0b3J5JyAnCisJZXhwZWN0X2Zyb21fc3RkaW4gPDwtXEVPRiAmJgorCQlmb28KKwkJdHdvb29vCisJCS4uL29uZQorCQlzZXZlbgorCQkuLi8uLi9vbmUKKwlFT0YKKwkoCisJCWNkIGEvYi9pZ25vcmVkLWRpciAmJgorCQl0ZXN0X2NoZWNrX2lnbm9yZSAiZm9vIHR3b29vbyAuLi9vbmUgc2V2ZW4gLi4vLi4vb25lIgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2QgdG8gaWdub3JlZCBzdWItZGlyZWN0b3J5IHdpdGggLXYnICcKKwlleHBlY3RfZnJvbV9zdGRpbiA8PC1cRU9GICYmCisJCWEvYi8uZ2l0aWdub3JlOjU6aWdub3JlZC1kaXIvCWZvbworCQlhL2IvLmdpdGlnbm9yZTo1Omlnbm9yZWQtZGlyLwl0d29vb28KKwkJYS9iLy5naXRpZ25vcmU6ODohb24qCS4uL29uZQorCQlhL2IvLmdpdGlnbm9yZTo1Omlnbm9yZWQtZGlyLwlzZXZlbgorCQkuZ2l0aWdub3JlOjE6b25lCS4uLy4uL29uZQorCUVPRgorCSgKKwkJY2QgYS9iL2lnbm9yZWQtZGlyICYmCisJCXRlc3RfY2hlY2tfaWdub3JlICItdiBmb28gdHdvb29vIC4uL29uZSBzZXZlbiAuLi8uLi9vbmUiCisJKQorJworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHRlc3QgaGFuZGxpbmcgb2Ygc3ltbGlua3MKKwordGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSBTWU1MSU5LUyAnc3ltbGluaycgJycgJworCXRlc3RfY2hlY2tfaWdub3JlICJhL3N5bWxpbmsiIDEKKycKKwordGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSBTWU1MSU5LUyAnYmV5b25kIGEgc3ltbGluaycgJycgJworCXRlc3RfY2hlY2tfaWdub3JlICJhL3N5bWxpbmsvZm9vIiAxMjggJiYKKwl0ZXN0X3N0ZGVyciAiZmF0YWw6ICdcJydhL3N5bWxpbmsvZm9vJ1wnJyBpcyBiZXlvbmQgYSBzeW1ib2xpYyBsaW5rIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpIFNZTUxJTktTICdiZXlvbmQgYSBzeW1saW5rIGZyb20gc3ViZGlyZWN0b3J5JyAnJyAnCisJKAorCQljZCBhICYmCisJCXRlc3RfY2hlY2tfaWdub3JlICJzeW1saW5rL2ZvbyIgMTI4CisJKSAmJgorCXRlc3Rfc3RkZXJyICJmYXRhbDogJ1wnJ3N5bWxpbmsvZm9vJ1wnJyBpcyBiZXlvbmQgYSBzeW1ib2xpYyBsaW5rIgorJworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHRlc3QgaGFuZGxpbmcgb2Ygc3VibW9kdWxlcworCit0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICdzdWJtb2R1bGUnICcnICcKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiYS9zdWJtb2R1bGUvb25lIiAxMjggJiYKKwl0ZXN0X3N0ZGVyciAiZmF0YWw6IFBhdGggJ1wnJ2Evc3VibW9kdWxlL29uZSdcJycgaXMgaW4gc3VibW9kdWxlICdcJydhL3N1Ym1vZHVsZSdcJyciCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgJ3N1Ym1vZHVsZSBmcm9tIHN1YmRpcmVjdG9yeScgJycgJworCSgKKwkJY2QgYSAmJgorCQl0ZXN0X2NoZWNrX2lnbm9yZSAic3VibW9kdWxlL29uZSIgMTI4CisJKSAmJgorCXRlc3Rfc3RkZXJyICJmYXRhbDogUGF0aCAnXCcnYS9zdWJtb2R1bGUvb25lJ1wnJyBpcyBpbiBzdWJtb2R1bGUgJ1wnJ2Evc3VibW9kdWxlJ1wnJyIKKycKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyB0ZXN0IGhhbmRsaW5nIG9mIGdsb2JhbCBpZ25vcmUgZmlsZXMKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2xvYmFsIGlnbm9yZSBub3QgeWV0IGVuYWJsZWQnICcKKwlleHBlY3RfZnJvbV9zdGRpbiA8PC1cRU9GICYmCisJCS5naXQvaW5mby9leGNsdWRlOjc6cGVyLXJlcG8JcGVyLXJlcG8KKwkJYS8uZ2l0aWdub3JlOjI6KnRocmVlCWEvZ2xvYmFsdGhyZWUKKwkJLmdpdC9pbmZvL2V4Y2x1ZGU6NzpwZXItcmVwbwlhL3Blci1yZXBvCisJRU9GCisJdGVzdF9jaGVja19pZ25vcmUgIi12IGdsb2JhbG9uZSBwZXItcmVwbyBhL2dsb2JhbHRocmVlIGEvcGVyLXJlcG8gbm90LWlnbm9yZWQgYS9nbG9iYWx0d28iCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dsb2JhbCBpZ25vcmUnICcKKwllbmFibGVfZ2xvYmFsX2V4Y2x1ZGVzICYmCisJZXhwZWN0X2Zyb21fc3RkaW4gPDwtXEVPRiAmJgorCQlnbG9iYWxvbmUKKwkJcGVyLXJlcG8KKwkJZ2xvYmFsdGhyZWUKKwkJYS9nbG9iYWx0aHJlZQorCQlhL3Blci1yZXBvCisJCWdsb2JhbHR3bworCUVPRgorCXRlc3RfY2hlY2tfaWdub3JlICJnbG9iYWxvbmUgcGVyLXJlcG8gZ2xvYmFsdGhyZWUgYS9nbG9iYWx0aHJlZSBhL3Blci1yZXBvIG5vdC1pZ25vcmVkIGdsb2JhbHR3byIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2xvYmFsIGlnbm9yZSB3aXRoIC12JyAnCisJZW5hYmxlX2dsb2JhbF9leGNsdWRlcyAmJgorCWV4cGVjdF9mcm9tX3N0ZGluIDw8LUVPRiAmJgorCQkkZ2xvYmFsX2V4Y2x1ZGVzOjE6Z2xvYmFsb25lCWdsb2JhbG9uZQorCQkuZ2l0L2luZm8vZXhjbHVkZTo3OnBlci1yZXBvCXBlci1yZXBvCisJCSRnbG9iYWxfZXhjbHVkZXM6MzpnbG9iYWx0aHJlZQlnbG9iYWx0aHJlZQorCQlhLy5naXRpZ25vcmU6MjoqdGhyZWUJYS9nbG9iYWx0aHJlZQorCQkuZ2l0L2luZm8vZXhjbHVkZTo3OnBlci1yZXBvCWEvcGVyLXJlcG8KKwkJJGdsb2JhbF9leGNsdWRlczoyOiFnbG9iYWx0d28JZ2xvYmFsdHdvCisJRU9GCisJdGVzdF9jaGVja19pZ25vcmUgIi12IGdsb2JhbG9uZSBwZXItcmVwbyBnbG9iYWx0aHJlZSBhL2dsb2JhbHRocmVlIGEvcGVyLXJlcG8gbm90LWlnbm9yZWQgZ2xvYmFsdHdvIgorJworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHRlc3QgLS1zdGRpbgorCitjYXQgPDwtXEVPRiA+c3RkaW4KKwlvbmUKKwlub3QtaWdub3JlZAorCWEvb25lCisJYS9ub3QtaWdub3JlZAorCWEvYi9vbgorCWEvYi9vbmUKKwlhL2Ivb25lIG9uZQorCSJhL2Ivb25lIHR3byIKKwkiYS9iL29uZVwidGhyZWUiCisJYS9iL25vdC1pZ25vcmVkCisJYS9iL3R3bworCWEvYi90d29vbworCWdsb2JhbHR3bworCWEvZ2xvYmFsdHdvCisJYS9iL2dsb2JhbHR3bworCWIvZ2xvYmFsdHdvCitFT0YKK2NhdCA8PC1cRU9GID5leHBlY3RlZC1kZWZhdWx0CisJb25lCisJYS9vbmUKKwlhL2Ivb24KKwlhL2Ivb25lCisJYS9iL29uZSBvbmUKKwlhL2Ivb25lIHR3bworCSJhL2Ivb25lXCJ0aHJlZSIKKwlhL2IvdHdvCisJYS9iL3R3b29vCisJZ2xvYmFsdHdvCisJYS9nbG9iYWx0d28KKwlhL2IvZ2xvYmFsdHdvCisJYi9nbG9iYWx0d28KK0VPRgorY2F0IDw8LUVPRiA+ZXhwZWN0ZWQtdmVyYm9zZQorCS5naXRpZ25vcmU6MTpvbmUJb25lCisJLmdpdGlnbm9yZToxOm9uZQlhL29uZQorCWEvYi8uZ2l0aWdub3JlOjg6IW9uKglhL2Ivb24KKwlhL2IvLmdpdGlnbm9yZTo4OiFvbioJYS9iL29uZQorCWEvYi8uZ2l0aWdub3JlOjg6IW9uKglhL2Ivb25lIG9uZQorCWEvYi8uZ2l0aWdub3JlOjg6IW9uKglhL2Ivb25lIHR3bworCWEvYi8uZ2l0aWdub3JlOjg6IW9uKgkiYS9iL29uZVwidGhyZWUiCisJYS9iLy5naXRpZ25vcmU6OTohdHdvCWEvYi90d28KKwlhLy5naXRpZ25vcmU6MTp0d28qCWEvYi90d29vbworCSRnbG9iYWxfZXhjbHVkZXM6MjohZ2xvYmFsdHdvCWdsb2JhbHR3bworCSRnbG9iYWxfZXhjbHVkZXM6MjohZ2xvYmFsdHdvCWEvZ2xvYmFsdHdvCisJJGdsb2JhbF9leGNsdWRlczoyOiFnbG9iYWx0d28JYS9iL2dsb2JhbHR3bworCSRnbG9iYWxfZXhjbHVkZXM6MjohZ2xvYmFsdHdvCWIvZ2xvYmFsdHdvCitFT0YKKworc2VkIC1lICdzL14iLy8nIC1lICdzL1xcLy8nIC1lICdzLyIkLy8nIHN0ZGluIHwgXAorCXRyICJcbiIgIlwwIiA+c3RkaW4wCitzZWQgLWUgJ3MvXiIvLycgLWUgJ3MvXFwvLycgLWUgJ3MvIiQvLycgZXhwZWN0ZWQtZGVmYXVsdCB8IFwKKwl0ciAiXG4iICJcMCIgPmV4cGVjdGVkLWRlZmF1bHQwCitzZWQgLWUgJ3MvCSIvCS8nIC1lICdzL1xcLy8nIC1lICdzLyIkLy8nIGV4cGVjdGVkLXZlcmJvc2UgfCBcCisJdHIgIjpcdFxuIiAiXDAiID5leHBlY3RlZC12ZXJib3NlMAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXN0ZGluJyAnCisJZXhwZWN0X2Zyb21fc3RkaW4gPGV4cGVjdGVkLWRlZmF1bHQgJiYKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiLS1zdGRpbiIgPHN0ZGluCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc3RkaW4gLXEnICcKKwlleHBlY3QgIiIgJiYKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiLXEgLS1zdGRpbiIgPHN0ZGluCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc3RkaW4gLXYnICcKKwlleHBlY3RfZnJvbV9zdGRpbiA8ZXhwZWN0ZWQtdmVyYm9zZSAmJgorCXRlc3RfY2hlY2tfaWdub3JlICItdiAtLXN0ZGluIiA8c3RkaW4KKycKKworZm9yIG9wdHMgaW4gJy0tc3RkaW4gLXonICcteiAtLXN0ZGluJworZG8KKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICIkb3B0cyIgIgorCQlleHBlY3RfZnJvbV9zdGRpbiA8ZXhwZWN0ZWQtZGVmYXVsdDAgJiYKKwkJdGVzdF9jaGVja19pZ25vcmUgJyRvcHRzJyA8c3RkaW4wCisJIgorCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiJG9wdHMgLXEiICIKKwkJZXhwZWN0ICIiICYmCisJCXRlc3RfY2hlY2tfaWdub3JlICctcSAkb3B0cycgPHN0ZGluMAorCSIKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRvcHRzIC12IiAiCisJCWV4cGVjdF9mcm9tX3N0ZGluIDxleHBlY3RlZC12ZXJib3NlMCAmJgorCQl0ZXN0X2NoZWNrX2lnbm9yZSAnLXYgJG9wdHMnIDxzdGRpbjAKKwkiCitkb25lCisKK2NhdCA8PC1cRU9GID5zdGRpbgorCS4uL29uZQorCS4uL25vdC1pZ25vcmVkCisJb25lCisJbm90LWlnbm9yZWQKKwliL29uCisJYi9vbmUKKwliL29uZSBvbmUKKwkiYi9vbmUgdHdvIgorCSJiL29uZVwidGhyZWUiCisJYi90d28KKwliL25vdC1pZ25vcmVkCisJYi90d29vbworCS4uL2dsb2JhbHR3bworCWdsb2JhbHR3bworCWIvZ2xvYmFsdHdvCisJLi4vYi9nbG9iYWx0d28KK0VPRgorY2F0IDw8LVxFT0YgPmV4cGVjdGVkLWRlZmF1bHQKKwkuLi9vbmUKKwlvbmUKKwliL29uCisJYi9vbmUKKwliL29uZSBvbmUKKwliL29uZSB0d28KKwkiYi9vbmVcInRocmVlIgorCWIvdHdvCisJYi90d29vbworCS4uL2dsb2JhbHR3bworCWdsb2JhbHR3bworCWIvZ2xvYmFsdHdvCisJLi4vYi9nbG9iYWx0d28KK0VPRgorY2F0IDw8LUVPRiA+ZXhwZWN0ZWQtdmVyYm9zZQorCS5naXRpZ25vcmU6MTpvbmUJLi4vb25lCisJLmdpdGlnbm9yZToxOm9uZQlvbmUKKwlhL2IvLmdpdGlnbm9yZTo4OiFvbioJYi9vbgorCWEvYi8uZ2l0aWdub3JlOjg6IW9uKgliL29uZQorCWEvYi8uZ2l0aWdub3JlOjg6IW9uKgliL29uZSBvbmUKKwlhL2IvLmdpdGlnbm9yZTo4OiFvbioJYi9vbmUgdHdvCisJYS9iLy5naXRpZ25vcmU6ODohb24qCSJiL29uZVwidGhyZWUiCisJYS9iLy5naXRpZ25vcmU6OTohdHdvCWIvdHdvCisJYS8uZ2l0aWdub3JlOjE6dHdvKgliL3R3b29vCisJJGdsb2JhbF9leGNsdWRlczoyOiFnbG9iYWx0d28JLi4vZ2xvYmFsdHdvCisJJGdsb2JhbF9leGNsdWRlczoyOiFnbG9iYWx0d28JZ2xvYmFsdHdvCisJJGdsb2JhbF9leGNsdWRlczoyOiFnbG9iYWx0d28JYi9nbG9iYWx0d28KKwkkZ2xvYmFsX2V4Y2x1ZGVzOjI6IWdsb2JhbHR3bwkuLi9iL2dsb2JhbHR3bworRU9GCisKK3NlZCAtZSAncy9eIi8vJyAtZSAncy9cXC8vJyAtZSAncy8iJC8vJyBzdGRpbiB8IFwKKwl0ciAiXG4iICJcMCIgPnN0ZGluMAorc2VkIC1lICdzL14iLy8nIC1lICdzL1xcLy8nIC1lICdzLyIkLy8nIGV4cGVjdGVkLWRlZmF1bHQgfCBcCisJdHIgIlxuIiAiXDAiID5leHBlY3RlZC1kZWZhdWx0MAorc2VkIC1lICdzLwkiLwkvJyAtZSAncy9cXC8vJyAtZSAncy8iJC8vJyBleHBlY3RlZC12ZXJib3NlIHwgXAorCXRyICI6XHRcbiIgIlwwIiA+ZXhwZWN0ZWQtdmVyYm9zZTAKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zdGRpbiBmcm9tIHN1YmRpcmVjdG9yeScgJworCWV4cGVjdF9mcm9tX3N0ZGluIDxleHBlY3RlZC1kZWZhdWx0ICYmCisJKAorCQljZCBhICYmCisJCXRlc3RfY2hlY2tfaWdub3JlICItLXN0ZGluIiA8Li4vc3RkaW4KKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc3RkaW4gZnJvbSBzdWJkaXJlY3Rvcnkgd2l0aCAtdicgJworCWV4cGVjdF9mcm9tX3N0ZGluIDxleHBlY3RlZC12ZXJib3NlICYmCisJKAorCQljZCBhICYmCisJCXRlc3RfY2hlY2tfaWdub3JlICItLXN0ZGluIC12IiA8Li4vc3RkaW4KKwkpCisnCisKK2ZvciBvcHRzIGluICctLXN0ZGluIC16JyAnLXogLS1zdGRpbicKK2RvCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiJG9wdHMgZnJvbSBzdWJkaXJlY3RvcnkiICcKKwkJZXhwZWN0X2Zyb21fc3RkaW4gPGV4cGVjdGVkLWRlZmF1bHQwICYmCisJCSgKKwkJCWNkIGEgJiYKKwkJCXRlc3RfY2hlY2tfaWdub3JlICInIiRvcHRzIiciIDwuLi9zdGRpbjAKKwkJKQorCScKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRvcHRzIGZyb20gc3ViZGlyZWN0b3J5IHdpdGggLXYiICcKKwkJZXhwZWN0X2Zyb21fc3RkaW4gPGV4cGVjdGVkLXZlcmJvc2UwICYmCisJCSgKKwkJCWNkIGEgJiYKKwkJCXRlc3RfY2hlY2tfaWdub3JlICInIiRvcHRzIicgLXYiIDwuLi9zdGRpbjAKKwkJKQorCScKK2RvbmUKKworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDAwMjQtY3JsZi1hcmNoaXZlLnNoIGIvdC90MDAyNC1jcmxmLWFyY2hpdmUuc2gKaW5kZXggZWM2YzFiMy4uNGU5ZmEzYyAxMDA3NTUKLS0tIGEvdC90MDAyNC1jcmxmLWFyY2hpdmUuc2gKKysrIGIvdC90MDAyNC1jcmxmLWFyY2hpdmUuc2gKQEAgLTMsNyArMyw2IEBACiB0ZXN0X2Rlc2NyaXB0aW9uPSdyZXNwZWN0IGNybGYgaW4gZ2l0IGFyY2hpdmUnCiAKIC4gLi90ZXN0LWxpYi5zaAotVU5aSVA9JHtVTlpJUDotdW56aXB9CiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJwogCkBAIC0yNiwxOCArMjUsMTEgQEAKIAogJwogCi0iJFVOWklQIiAtdiA+L2Rldi9udWxsIDI+JjEKLWlmIFsgJD8gLWVxIDEyNyBdOyB0aGVuCi0Jc2F5ICJTa2lwcGluZyBaSVAgdGVzdCwgYmVjYXVzZSB1bnppcCB3YXMgbm90IGZvdW5kIgotZWxzZQotCXRlc3Rfc2V0X3ByZXJlcSBVTlpJUAotZmkKLQogdGVzdF9leHBlY3Rfc3VjY2VzcyBVTlpJUCAnemlwIGFyY2hpdmUnICcKIAogCWdpdCBhcmNoaXZlIC0tZm9ybWF0PXppcCBIRUFEID50ZXN0LnppcCAmJgogCi0JKCBta2RpciB1bnppcHBlZCAmJiBjZCB1bnppcHBlZCAmJiB1bnppcCAuLi90ZXN0LnppcCApICYmCisJKCBta2RpciB1bnppcHBlZCAmJiBjZCB1bnppcHBlZCAmJiAiJEdJVF9VTlpJUCIgLi4vdGVzdC56aXAgKSAmJgogCiAJdGVzdF9jbXAgc2FtcGxlIHVuemlwcGVkL3NhbXBsZQogCmRpZmYgLS1naXQgYS90L3QwMDMwLXN0cmlwc3BhY2Uuc2ggYi90L3QwMDMwLXN0cmlwc3BhY2Uuc2gKaW5kZXggY2NiMGEzYy4uYThlODRkOCAxMDA3NTUKLS0tIGEvdC90MDAzMC1zdHJpcHNwYWNlLnNoCisrKyBiL3QvdDAwMzAtc3RyaXBzcGFjZS5zaApAQCAtMzk3LDQgKzM5NywzOSBAQAogCXRlc3QgLXogIiQoZWNobyAiIyBjb21tZW50IiB8IGdpdCBzdHJpcHNwYWNlIC1zKSIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RyaXAgY29tbWVudHMgd2l0aCBjaGFuZ2VkIGNvbW1lbnQgY2hhcicgJworCXRlc3QgISAteiAiJChlY2hvICI7IGNvbW1lbnQiIHwgZ2l0IC1jIGNvcmUuY29tbWVudGNoYXI9IjsiIHN0cmlwc3BhY2UpIiAmJgorCXRlc3QgLXogIiQoZWNobyAiOyBjb21tZW50IiB8IGdpdCAtYyBjb3JlLmNvbW1lbnRjaGFyPSI7IiBzdHJpcHNwYWNlIC1zKSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLWMgd2l0aCBzaW5nbGUgbGluZScgJworCXByaW50ZiAiIyBmb29cbiIgPmV4cGVjdCAmJgorCXByaW50ZiAiZm9vIiB8IGdpdCBzdHJpcHNwYWNlIC1jID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy1jIHdpdGggc2luZ2xlIGxpbmUgZm9sbG93ZWQgYnkgZW1wdHkgbGluZScgJworCXByaW50ZiAiIyBmb29cbiNcbiIgPmV4cGVjdCAmJgorCXByaW50ZiAiZm9vXG5cbiIgfCBnaXQgc3RyaXBzcGFjZSAtYyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctYyB3aXRoIG5ld2xpbmUgb25seScgJworCXByaW50ZiAiI1xuIiA+ZXhwZWN0ICYmCisJcHJpbnRmICJcbiIgfCBnaXQgc3RyaXBzcGFjZSAtYyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLWNvbW1lbnQtbGluZXMgd2l0aCBzaW5nbGUgbGluZScgJworCXByaW50ZiAiIyBmb29cbiIgPmV4cGVjdCAmJgorCXByaW50ZiAiZm9vIiB8IGdpdCBzdHJpcHNwYWNlIC1jID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy1jIHdpdGggY2hhbmdlZCBjb21tZW50IGNoYXInICcKKwlwcmludGYgIjsgZm9vXG4iID5leHBlY3QgJiYKKwlwcmludGYgImZvbyIgfCBnaXQgLWMgY29yZS5jb21tZW50Y2hhcj0iOyIgc3RyaXBzcGFjZSAtYyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDAwNDAtcGFyc2Utb3B0aW9ucy5zaCBiL3QvdDAwNDAtcGFyc2Utb3B0aW9ucy5zaAppbmRleCBlM2YzNTRhLi4yNDRhNDNjIDEwMDc1NQotLS0gYS90L3QwMDQwLXBhcnNlLW9wdGlvbnMuc2gKKysrIGIvdC90MDA0MC1wYXJzZS1vcHRpb25zLnNoCkBAIC01MSw3ICs1MSw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IGhlbHAnICcKIAl0ZXN0X211c3RfZmFpbCB0ZXN0LXBhcnNlLW9wdGlvbnMgLWggPiBvdXRwdXQgMj4gb3V0cHV0LmVyciAmJgogCXRlc3QgISAtcyBvdXRwdXQuZXJyICYmCi0JdGVzdF9jbXAgZXhwZWN0IG91dHB1dAorCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0CiAnCiAKIG12IGV4cGVjdCBleHBlY3QuZXJyCkBAIC03OSw2ICs3OSwxNyBAQAogCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKIH0KIAorY2hlY2tfaTE4bigpIHsKKwl3aGF0PSIkMSIgJiYKKwlzaGlmdCAmJgorCWV4cGVjdD0iJDEiICYmCisJc2hpZnQgJiYKKwlzZWQgInMvXiR3aGF0IC4qLyR3aGF0ICRleHBlY3QvIiA8ZXhwZWN0LnRlbXBsYXRlID5leHBlY3QgJiYKKwl0ZXN0LXBhcnNlLW9wdGlvbnMgJCogPm91dHB1dCAyPm91dHB1dC5lcnIgJiYKKwl0ZXN0ICEgLXMgb3V0cHV0LmVyciAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0Cit9CisKIGNoZWNrX3Vua25vd24oKSB7CiAJY2FzZSAiJDEiIGluCiAJLS0qKQpAQCAtOTIsNiArMTAzLDE5IEBACiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dC5lcnIKIH0KIAorY2hlY2tfdW5rbm93bl9pMThuKCkgeworCWNhc2UgIiQxIiBpbgorCS0tKikKKwkJZWNobyBlcnJvcjogdW5rbm93biBvcHRpb24gXGAkezEjLS19XCcgPmV4cGVjdCA7OworCS0qKQorCQllY2hvIGVycm9yOiB1bmtub3duIHN3aXRjaCBcYCR7MSMtfVwnID5leHBlY3QgOzsKKwllc2FjICYmCisJY2F0IGV4cGVjdC5lcnIgPj5leHBlY3QgJiYKKwl0ZXN0X211c3RfZmFpbCB0ZXN0LXBhcnNlLW9wdGlvbnMgJCogPm91dHB1dCAyPm91dHB1dC5lcnIgJiYKKwl0ZXN0ICEgLXMgb3V0cHV0ICYmCisJdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQuZXJyCit9CisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ09QVF9CT09MKCkgIzEnICdjaGVjayBib29sZWFuOiAxIC0teWVzJwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnT1BUX0JPT0woKSAjMicgJ2NoZWNrIGJvb2xlYW46IDEgLS1uby1kb3VidCcKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ09QVF9CT09MKCkgIzMnICdjaGVjayBib29sZWFuOiAxIC1EJwpAQCAtMTA0LDggKzEyOCw4IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdPUFRfQk9PTCgpIG5lZ2F0aW9uICMxJyAnY2hlY2sgYm9vbGVhbjogMCAtRCAtLW5vLXllcycKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ09QVF9CT09MKCkgbmVnYXRpb24gIzInICdjaGVjayBib29sZWFuOiAwIC1EIC0tbm8tbm8tZG91YnQnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ09QVF9CT09MKCkgbm8gbmVnYXRpb24gIzEnICdjaGVja191bmtub3duIC0tZmVhcicKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ09QVF9CT09MKCkgbm8gbmVnYXRpb24gIzInICdjaGVja191bmtub3duIC0tbm8tbm8tZmVhcicKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ09QVF9CT09MKCkgbm8gbmVnYXRpb24gIzEnICdjaGVja191bmtub3duX2kxOG4gLS1mZWFyJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnT1BUX0JPT0woKSBubyBuZWdhdGlvbiAjMicgJ2NoZWNrX3Vua25vd25faTE4biAtLW5vLW5vLWZlYXInCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ09QVF9CT09MKCkgcG9zaXRpdmF0aW9uJyAnY2hlY2sgYm9vbGVhbjogMCAtRCAtLWRvdWJ0JwogCkBAIC0zMTAsOCArMzM0LDggQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnT1BUX0NBTExCQUNLKCkgYW5kIGNhbGxiYWNrIGVycm9ycyB3b3JrJyAnCiAJdGVzdF9tdXN0X2ZhaWwgdGVzdC1wYXJzZS1vcHRpb25zIC0tbm8tbGVuZ3RoID4gb3V0cHV0IDI+IG91dHB1dC5lcnIgJiYKLQl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0ICYmCi0JdGVzdF9jbXAgZXhwZWN0LmVyciBvdXRwdXQuZXJyCisJdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0LmVyciBvdXRwdXQuZXJyCiAnCiAKIGNhdCA+IGV4cGVjdCA8PEVPRgpkaWZmIC0tZ2l0IGEvdC90MDA1MC1maWxlc3lzdGVtLnNoIGIvdC90MDA1MC1maWxlc3lzdGVtLnNoCmluZGV4IDE1NDJjZjYuLjA1ZDc4ZDIgMTAwNzU1Ci0tLSBhL3QvdDAwNTAtZmlsZXN5c3RlbS5zaAorKysgYi90L3QwMDUwLWZpbGVzeXN0ZW0uc2gKQEAgLTcsNzggKzcsNTEgQEAKIGF1bWw9JChwcmludGYgJ1wzMDNcMjQ0JykKIGF1bWxjZGlhcj0kKHByaW50ZiAnXDE0MVwzMTRcMjEwJykKIAotY2FzZV9pbnNlbnNpdGl2ZT0KLXVuaWJhZD0KLW5vX3N5bWxpbmtzPQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2VlIHdoYXQgd2UgZXhwZWN0JyAnCi0KLQl0ZXN0X2Nhc2U9dGVzdF9leHBlY3Rfc3VjY2VzcyAmJgotCXRlc3RfdW5pY29kZT10ZXN0X2V4cGVjdF9zdWNjZXNzICYmCi0JbWtkaXIganVuayAmJgotCWVjaG8gZ29vZCA+anVuay9DYW1lbENhc2UgJiYKLQllY2hvIGJhZCA+anVuay9jYW1lbGNhc2UgJiYKLQlpZiB0ZXN0ICIkKGNhdCBqdW5rL0NhbWVsQ2FzZSkiICE9IGdvb2QKLQl0aGVuCi0JCXRlc3RfY2FzZT10ZXN0X2V4cGVjdF9mYWlsdXJlICYmCi0JCWNhc2VfaW5zZW5zaXRpdmU9dAotCWZpICYmCi0Jcm0gLWZyIGp1bmsgJiYKLQlta2RpciBqdW5rICYmCi0JPmp1bmsvIiRhdW1sIiAmJgotCWNhc2UgIiQoY2QganVuayAmJiBlY2hvICopIiBpbgotCSIkYXVtbGNkaWFyIikKLQkJdGVzdF91bmljb2RlPXRlc3RfZXhwZWN0X2ZhaWx1cmUgJiYKLQkJdW5pYmFkPXQKLQkJOzsKLQkqKQk7OwotCWVzYWMgJiYKLQlybSAtZnIganVuayAmJgotCXsKLQkJbG4gLXMgeCB5IDI+IC9kZXYvbnVsbCAmJgotCQl0ZXN0IC1oIHkgMj4gL2Rldi9udWxsIHx8Ci0JCW5vX3N5bWxpbmtzPTEgJiYKLQkJcm0gLWYgeQotCX0KLScKLQotdGVzdCAiJGNhc2VfaW5zZW5zaXRpdmUiICYmCitpZiB0ZXN0X2hhdmVfcHJlcmVxIENBU0VfSU5TRU5TSVRJVkVfRlMKK3RoZW4KIAlzYXkgIndpbGwgdGVzdCBvbiBhIGNhc2UgaW5zZW5zaXRpdmUgZmlsZXN5c3RlbSIKLXRlc3QgIiR1bmliYWQiICYmCisJdGVzdF9jYXNlPXRlc3RfZXhwZWN0X2ZhaWx1cmUKK2Vsc2UKKwl0ZXN0X2Nhc2U9dGVzdF9leHBlY3Rfc3VjY2VzcworZmkKKworaWYgdGVzdF9oYXZlX3ByZXJlcSBVVEY4X05GRF9UT19ORkMKK3RoZW4KIAlzYXkgIndpbGwgdGVzdCBvbiBhIHVuaWNvZGUgY29ycnVwdGluZyBmaWxlc3lzdGVtIgotdGVzdCAiJG5vX3N5bWxpbmtzIiAmJgorCXRlc3RfdW5pY29kZT10ZXN0X2V4cGVjdF9mYWlsdXJlCitlbHNlCisJdGVzdF91bmljb2RlPXRlc3RfZXhwZWN0X3N1Y2Nlc3MKK2ZpCisKK3Rlc3RfaGF2ZV9wcmVyZXEgU1lNTElOS1MgfHwKIAlzYXkgIndpbGwgdGVzdCBvbiBhIGZpbGVzeXN0ZW0gbGFja2luZyBzeW1ib2xpYyBsaW5rcyIKIAotaWYgdGVzdCAiJGNhc2VfaW5zZW5zaXRpdmUiCitpZiB0ZXN0X2hhdmVfcHJlcmVxIENBU0VfSU5TRU5TSVRJVkVfRlMKIHRoZW4KIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgImRldGVjdGlvbiBvZiBjYXNlIGluc2Vuc2l0aXZlIGZpbGVzeXN0ZW0gZHVyaW5nIHJlcG8gaW5pdCIgJwotCiAJdGVzdCAkKGdpdCBjb25maWcgLS1ib29sIGNvcmUuaWdub3JlY2FzZSkgPSB0cnVlCiAnCiBlbHNlCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICJkZXRlY3Rpb24gb2YgY2FzZSBpbnNlbnNpdGl2ZSBmaWxlc3lzdGVtIGR1cmluZyByZXBvIGluaXQiICcKLQogCXRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgLS1ib29sIGNvcmUuaWdub3JlY2FzZSA+L2Rldi9udWxsIHx8CiAJdGVzdCAkKGdpdCBjb25maWcgLS1ib29sIGNvcmUuaWdub3JlY2FzZSkgPSBmYWxzZQogJwogZmkKIAotaWYgdGVzdCAiJG5vX3N5bWxpbmtzIgoraWYgdGVzdF9oYXZlX3ByZXJlcSBTWU1MSU5LUwogdGhlbgogdGVzdF9leHBlY3Rfc3VjY2VzcyAiZGV0ZWN0aW9uIG9mIGZpbGVzeXN0ZW0gdy9vIHN5bWxpbmsgc3VwcG9ydCBkdXJpbmcgcmVwbyBpbml0IiAnCi0KLQl2PSQoZ2l0IGNvbmZpZyAtLWJvb2wgY29yZS5zeW1saW5rcykgJiYKLQl0ZXN0ICIkdiIgPSBmYWxzZQorCXRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgLS1ib29sIGNvcmUuc3ltbGlua3MgfHwKKwl0ZXN0ICIkKGdpdCBjb25maWcgLS1ib29sIGNvcmUuc3ltbGlua3MpIiA9IHRydWUKICcKIGVsc2UKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgImRldGVjdGlvbiBvZiBmaWxlc3lzdGVtIHcvbyBzeW1saW5rIHN1cHBvcnQgZHVyaW5nIHJlcG8gaW5pdCIgJwotCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyAtLWJvb2wgY29yZS5zeW1saW5rcyB8fAotCXRlc3QgIiQoZ2l0IGNvbmZpZyAtLWJvb2wgY29yZS5zeW1saW5rcykiID0gdHJ1ZQorCXY9JChnaXQgY29uZmlnIC0tYm9vbCBjb3JlLnN5bWxpbmtzKSAmJgorCXRlc3QgIiR2IiA9IGZhbHNlCiAnCiBmaQogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICJzZXR1cCBjYXNlIHRlc3RzIiAnCi0KIAlnaXQgY29uZmlnIGNvcmUuaWdub3JlY2FzZSB0cnVlICYmCiAJdG91Y2ggY2FtZWxjYXNlICYmCiAJZ2l0IGFkZCBjYW1lbGNhc2UgJiYKQEAgLTg5LDI5ICs2MiwyMyBAQAogCWdpdCBtdiB0bXAgQ2FtZWxDYXNlICYmCiAJZ2l0IGNvbW1pdCAtbSAicmVuYW1lIiAmJgogCWdpdCBjaGVja291dCAtZiBtYXN0ZXIKLQogJwogCiAkdGVzdF9jYXNlICdyZW5hbWUgKGNhc2UgY2hhbmdlKScgJwotCiAJZ2l0IG12IGNhbWVsY2FzZSBDYW1lbENhc2UgJiYKIAlnaXQgY29tbWl0IC1tICJyZW5hbWUiCi0KICcKIAotJHRlc3RfY2FzZSAnbWVyZ2UgKGNhc2UgY2hhbmdlKScgJwotCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSAoY2FzZSBjaGFuZ2UpJyAnCiAJcm0gLWYgQ2FtZWxDYXNlICYmCiAJcm0gLWYgY2FtZWxjYXNlICYmCiAJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCiAJZ2l0IG1lcmdlIHRvcGljCi0KICcKIAogCiAKLXRlc3RfZXhwZWN0X2ZhaWx1cmUgJ2FkZCAod2l0aCBkaWZmZXJlbnQgY2FzZSknICcKLQordGVzdF9leHBlY3RfZmFpbHVyZSBDQVNFX0lOU0VOU0lUSVZFX0ZTICdhZGQgKHdpdGggZGlmZmVyZW50IGNhc2UpJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCiAJcm0gY2FtZWxjYXNlICYmCiAJZWNobyAxID5DYW1lbENhc2UgJiYKQEAgLTExOSwzNyArODYsMzAgQEAKIAljYW1lbD0kKGdpdCBscy1maWxlcyB8IGdyZXAgLWkgY2FtZWxjYXNlKSAmJgogCXRlc3QgJChlY2hvICIkY2FtZWwiIHwgd2MgLWwpID0gMSAmJgogCXRlc3QgInokKGdpdCBjYXQtZmlsZSBibG9iIDokY2FtZWwpIiA9IHoxCi0KICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAic2V0dXAgdW5pY29kZSBub3JtYWxpemF0aW9uIHRlc3RzIiAnCi0KLSAgdGVzdF9jcmVhdGVfcmVwbyB1bmljb2RlICYmCi0gIGNkIHVuaWNvZGUgJiYKLSAgdG91Y2ggIiRhdW1sY2RpYXIiICYmCi0gIGdpdCBhZGQgIiRhdW1sY2RpYXIiICYmCi0gIGdpdCBjb21taXQgLW0gaW5pdGlhbCAmJgotICBnaXQgdGFnIGluaXRpYWwgJiYKLSAgZ2l0IGNoZWNrb3V0IC1iIHRvcGljICYmCi0gIGdpdCBtdiAkYXVtbGNkaWFyIHRtcCAmJgotICBnaXQgbXYgdG1wICIkYXVtbCIgJiYKLSAgZ2l0IGNvbW1pdCAtbSByZW5hbWUgJiYKLSAgZ2l0IGNoZWNrb3V0IC1mIG1hc3RlcgotCisJdGVzdF9jcmVhdGVfcmVwbyB1bmljb2RlICYmCisJY2QgdW5pY29kZSAmJgorCXRvdWNoICIkYXVtbGNkaWFyIiAmJgorCWdpdCBhZGQgIiRhdW1sY2RpYXIiICYmCisJZ2l0IGNvbW1pdCAtbSBpbml0aWFsICYmCisJZ2l0IHRhZyBpbml0aWFsICYmCisJZ2l0IGNoZWNrb3V0IC1iIHRvcGljICYmCisJZ2l0IG12ICRhdW1sY2RpYXIgdG1wICYmCisJZ2l0IG12IHRtcCAiJGF1bWwiICYmCisJZ2l0IGNvbW1pdCAtbSByZW5hbWUgJiYKKwlnaXQgY2hlY2tvdXQgLWYgbWFzdGVyCiAnCiAKICR0ZXN0X3VuaWNvZGUgJ3JlbmFtZSAoc2lsZW50IHVuaWNvZGUgbm9ybWFsaXphdGlvbiknICcKLQotIGdpdCBtdiAiJGF1bWxjZGlhciIgIiRhdW1sIiAmJgotIGdpdCBjb21taXQgLW0gcmVuYW1lCi0KKwlnaXQgbXYgIiRhdW1sY2RpYXIiICIkYXVtbCIgJiYKKwlnaXQgY29tbWl0IC1tIHJlbmFtZQogJwogCiAkdGVzdF91bmljb2RlICdtZXJnZSAoc2lsZW50IHVuaWNvZGUgbm9ybWFsaXphdGlvbiknICcKLQotIGdpdCByZXNldCAtLWhhcmQgaW5pdGlhbCAmJgotIGdpdCBtZXJnZSB0b3BpYwotCisJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCisJZ2l0IG1lcmdlIHRvcGljCiAnCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MDA2MC1wYXRoLXV0aWxzLnNoIGIvdC90MDA2MC1wYXRoLXV0aWxzLnNoCmluZGV4IDUzY2YxZjguLjA5YTQyYTQgMTAwNzU1Ci0tLSBhL3QvdDAwNjAtcGF0aC11dGlscy5zaAorKysgYi90L3QwMDYwLXBhdGgtdXRpbHMuc2gKQEAgLTkzLDUwICs5Myw5NCBAQAogbm9ybV9wYXRoIC9kMS8uLi4vZDIgL2QxLy4uLi9kMiBQT1NJWAogbm9ybV9wYXRoIC9kMS8uLi4vLi8uLi9kMiAvZDEvZDIgUE9TSVgKIAotYW5jZXN0b3IgLyAiIiAtMQogYW5jZXN0b3IgLyAvIC0xCi1hbmNlc3RvciAvZm9vICIiIC0xCi1hbmNlc3RvciAvZm9vIDogLTEKLWFuY2VzdG9yIC9mb28gOjouIC0xCi1hbmNlc3RvciAvZm9vIDo6Li46OiAtMQogYW5jZXN0b3IgL2ZvbyAvIDAKIGFuY2VzdG9yIC9mb28gL2ZvIC0xCiBhbmNlc3RvciAvZm9vIC9mb28gLTEKLWFuY2VzdG9yIC9mb28gL2Zvby8gLTEKIGFuY2VzdG9yIC9mb28gL2JhciAtMQotYW5jZXN0b3IgL2ZvbyAvYmFyLyAtMQogYW5jZXN0b3IgL2ZvbyAvZm9vL2JhciAtMQotYW5jZXN0b3IgL2ZvbyAvZm9vOi9iYXIvIC0xCi1hbmNlc3RvciAvZm9vIC9mb28vOi9iYXIvIC0xCi1hbmNlc3RvciAvZm9vIC9mb286Oi9iYXIvIC0xCi1hbmNlc3RvciAvZm9vIC86L2ZvbzovYmFyLyAwCi1hbmNlc3RvciAvZm9vIC9mb286LzovYmFyLyAwCi1hbmNlc3RvciAvZm9vIC86L2Jhci86L2ZvbyAwCi1hbmNlc3RvciAvZm9vL2JhciAiIiAtMQorYW5jZXN0b3IgL2ZvbyAvZm9vOi9iYXIgLTEKK2FuY2VzdG9yIC9mb28gLzovZm9vOi9iYXIgMAorYW5jZXN0b3IgL2ZvbyAvZm9vOi86L2JhciAwCithbmNlc3RvciAvZm9vIC86L2JhcjovZm9vIDAKIGFuY2VzdG9yIC9mb28vYmFyIC8gMAogYW5jZXN0b3IgL2Zvby9iYXIgL2ZvIC0xCi1hbmNlc3RvciAvZm9vL2JhciBmb28gLTEKIGFuY2VzdG9yIC9mb28vYmFyIC9mb28gNAotYW5jZXN0b3IgL2Zvby9iYXIgL2Zvby8gNAogYW5jZXN0b3IgL2Zvby9iYXIgL2Zvby9iYSAtMQogYW5jZXN0b3IgL2Zvby9iYXIgLzovZm8gMAogYW5jZXN0b3IgL2Zvby9iYXIgL2ZvbzovZm9vL2JhIDQKIGFuY2VzdG9yIC9mb28vYmFyIC9iYXIgLTEKLWFuY2VzdG9yIC9mb28vYmFyIC9iYXIvIC0xCi1hbmNlc3RvciAvZm9vL2JhciAvZm86IC0xCi1hbmNlc3RvciAvZm9vL2JhciA6L2ZvIC0xCi1hbmNlc3RvciAvZm9vL2JhciAvZm9vOi9iYXIvIDQKLWFuY2VzdG9yIC9mb28vYmFyIC86L2ZvbzovYmFyLyA0Ci1hbmNlc3RvciAvZm9vL2JhciAvZm9vOi86L2Jhci8gNAotYW5jZXN0b3IgL2Zvby9iYXIgLzovYmFyLzovZm8gMAotYW5jZXN0b3IgL2Zvby9iYXIgLzovYmFyLyAwCi1hbmNlc3RvciAvZm9vL2JhciAuOi9mb28vLiA0Ci1hbmNlc3RvciAvZm9vL2JhciAuOi9mb28vLjouOiA0Ci1hbmNlc3RvciAvZm9vL2JhciAvZm9vLy4vOi46L2JhciA0Ci1hbmNlc3RvciAvZm9vL2JhciAuOi9iYXIgLTEKK2FuY2VzdG9yIC9mb28vYmFyIC9mbyAtMQorYW5jZXN0b3IgL2Zvby9iYXIgL2ZvbzovYmFyIDQKK2FuY2VzdG9yIC9mb28vYmFyIC86L2ZvbzovYmFyIDQKK2FuY2VzdG9yIC9mb28vYmFyIC9mb286LzovYmFyIDQKK2FuY2VzdG9yIC9mb28vYmFyIC86L2JhcjovZm8gMAorYW5jZXN0b3IgL2Zvby9iYXIgLzovYmFyIDAKK2FuY2VzdG9yIC9mb28vYmFyIC9mb28gNAorYW5jZXN0b3IgL2Zvby9iYXIgL2ZvbzovYmFyIDQKK2FuY2VzdG9yIC9mb28vYmFyIC9iYXIgLTEKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RyaXBfcGF0aF9zdWZmaXgnICcKIAl0ZXN0IGM6L21zeXNnaXQgPSAkKHRlc3QtcGF0aC11dGlscyBzdHJpcF9wYXRoX3N1ZmZpeCBcCiAJCWM6L21zeXNnaXQvbGliZXhlYy8vZ2l0LWNvcmUgbGliZXhlYy9naXQtY29yZSkKICcKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYWJzb2x1dGUgcGF0aCByZWplY3RzIHRoZSBlbXB0eSBzdHJpbmcnICcKKwl0ZXN0X211c3RfZmFpbCB0ZXN0LXBhdGgtdXRpbHMgYWJzb2x1dGVfcGF0aCAiIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWFsIHBhdGggcmVqZWN0cyB0aGUgZW1wdHkgc3RyaW5nJyAnCisJdGVzdF9tdXN0X2ZhaWwgdGVzdC1wYXRoLXV0aWxzIHJlYWxfcGF0aCAiIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFBPU0lYICdyZWFsIHBhdGggd29ya3Mgb24gYWJzb2x1dGUgcGF0aHMgMScgJworCW5vcGF0aD0iaG9wZWZ1bGx5LWFic2VudC1wYXRoIiAmJgorCXRlc3QgIi8iID0gIiQodGVzdC1wYXRoLXV0aWxzIHJlYWxfcGF0aCAiLyIpIiAmJgorCXRlc3QgIi8kbm9wYXRoIiA9ICIkKHRlc3QtcGF0aC11dGlscyByZWFsX3BhdGggIi8kbm9wYXRoIikiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYWwgcGF0aCB3b3JrcyBvbiBhYnNvbHV0ZSBwYXRocyAyJyAnCisJbm9wYXRoPSJob3BlZnVsbHktYWJzZW50LXBhdGgiICYmCisJIyBGaW5kIGFuIGV4aXN0aW5nIHRvcC1sZXZlbCBkaXJlY3RvcnkgZm9yIHRoZSByZW1haW5pbmcgdGVzdHM6CisJZD0kKHB3ZCAtUCB8IHNlZCAtZSAic3xeXChbXi9dKi9bXi9dKlwpLy4qfFwxfCIpICYmCisJdGVzdCAiJGQiID0gIiQodGVzdC1wYXRoLXV0aWxzIHJlYWxfcGF0aCAiJGQiKSIgJiYKKwl0ZXN0ICIkZC8kbm9wYXRoIiA9ICIkKHRlc3QtcGF0aC11dGlscyByZWFsX3BhdGggIiRkLyRub3BhdGgiKSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBQT1NJWCAncmVhbCBwYXRoIHJlbW92ZXMgZXh0cmEgbGVhZGluZyBzbGFzaGVzJyAnCisJbm9wYXRoPSJob3BlZnVsbHktYWJzZW50LXBhdGgiICYmCisJdGVzdCAiLyIgPSAiJCh0ZXN0LXBhdGgtdXRpbHMgcmVhbF9wYXRoICIvLy8iKSIgJiYKKwl0ZXN0ICIvJG5vcGF0aCIgPSAiJCh0ZXN0LXBhdGgtdXRpbHMgcmVhbF9wYXRoICIvLy8kbm9wYXRoIikiICYmCisJIyBGaW5kIGFuIGV4aXN0aW5nIHRvcC1sZXZlbCBkaXJlY3RvcnkgZm9yIHRoZSByZW1haW5pbmcgdGVzdHM6CisJZD0kKHB3ZCAtUCB8IHNlZCAtZSAic3xeXChbXi9dKi9bXi9dKlwpLy4qfFwxfCIpICYmCisJdGVzdCAiJGQiID0gIiQodGVzdC1wYXRoLXV0aWxzIHJlYWxfcGF0aCAiLy8kZCIpIiAmJgorCXRlc3QgIiRkLyRub3BhdGgiID0gIiQodGVzdC1wYXRoLXV0aWxzIHJlYWxfcGF0aCAiLy8kZC8kbm9wYXRoIikiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYWwgcGF0aCByZW1vdmVzIG90aGVyIGV4dHJhIHNsYXNoZXMnICcKKwlub3BhdGg9ImhvcGVmdWxseS1hYnNlbnQtcGF0aCIgJiYKKwkjIEZpbmQgYW4gZXhpc3RpbmcgdG9wLWxldmVsIGRpcmVjdG9yeSBmb3IgdGhlIHJlbWFpbmluZyB0ZXN0czoKKwlkPSQocHdkIC1QIHwgc2VkIC1lICJzfF5cKFteL10qL1teL10qXCkvLip8XDF8IikgJiYKKwl0ZXN0ICIkZCIgPSAiJCh0ZXN0LXBhdGgtdXRpbHMgcmVhbF9wYXRoICIkZC8vLyIpIiAmJgorCXRlc3QgIiRkLyRub3BhdGgiID0gIiQodGVzdC1wYXRoLXV0aWxzIHJlYWxfcGF0aCAiJGQvLy8kbm9wYXRoIikiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3JlYWwgcGF0aCB3b3JrcyBvbiBzeW1saW5rcycgJworCW1rZGlyIGZpcnN0ICYmCisJbG4gLXMgLi4vLmdpdCBmaXJzdC8uZ2l0ICYmCisJbWtkaXIgc2Vjb25kICYmCisJbG4gLXMgLi4vZmlyc3Qgc2Vjb25kL290aGVyICYmCisJbWtkaXIgdGhpcmQgJiYKKwlkaXI9IiQoY2QgLmdpdDsgcHdkIC1QKSIgJiYKKwlkaXIyPXRoaXJkLy4uL3NlY29uZC9vdGhlci8uZ2l0ICYmCisJdGVzdCAiJGRpciIgPSAiJCh0ZXN0LXBhdGgtdXRpbHMgcmVhbF9wYXRoICRkaXIyKSIgJiYKKwlmaWxlPSIkZGlyIi9pbmRleCAmJgorCXRlc3QgIiRmaWxlIiA9ICIkKHRlc3QtcGF0aC11dGlscyByZWFsX3BhdGggJGRpcjIvaW5kZXgpIiAmJgorCWJhc2VuYW1lPWJsdWIgJiYKKwl0ZXN0ICIkZGlyLyRiYXNlbmFtZSIgPSAiJChjZCAuZ2l0ICYmIHRlc3QtcGF0aC11dGlscyByZWFsX3BhdGggIiRiYXNlbmFtZSIpIiAmJgorCWxuIC1zIC4uL2ZpcnN0L2ZpbGUgLmdpdC9zeW1sICYmCisJc3ltPSIkKGNkIGZpcnN0OyBwd2QgLVApIi9maWxlICYmCisJdGVzdCAiJHN5bSIgPSAiJCh0ZXN0LXBhdGgtdXRpbHMgcmVhbF9wYXRoICIkZGlyMi9zeW1sIikiCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MDA2My1zdHJpbmctbGlzdC5zaCBiL3QvdDAwNjMtc3RyaW5nLWxpc3Quc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGJmYzA1ZQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDAwNjMtc3RyaW5nLWxpc3Quc2gKQEAgLTAsMCArMSw5MSBAQAorIyEvYmluL3NoCisjCisjIENvcHlyaWdodCAoYykgMjAxMiBNaWNoYWVsIEhhZ2dlcnR5CisjCisKK3Rlc3RfZGVzY3JpcHRpb249J1Rlc3Qgc3RyaW5nIGxpc3QgZnVuY3Rpb25hbGl0eScKKworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3Rfc3BsaXQgKCkgeworCWNhdCA+ZXhwZWN0ZWQgJiYKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJzcGxpdCAkMSBhdCAkMiwgbWF4ICQzIiAiCisJCXRlc3Qtc3RyaW5nLWxpc3Qgc3BsaXQgJyQxJyAnJDInICckMycgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwgJiYKKwkJdGVzdC1zdHJpbmctbGlzdCBzcGxpdF9pbl9wbGFjZSAnJDEnICckMicgJyQzJyA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorCSIKK30KKwordGVzdF9zcGxpdCAiZm9vOmJhcjpiYXoiICI6IiAiLTEiIDw8RU9GCiszCitbMF06ICJmb28iCitbMV06ICJiYXIiCitbMl06ICJiYXoiCitFT0YKKwordGVzdF9zcGxpdCAiZm9vOmJhcjpiYXoiICI6IiAiMCIgPDxFT0YKKzEKK1swXTogImZvbzpiYXI6YmF6IgorRU9GCisKK3Rlc3Rfc3BsaXQgImZvbzpiYXI6YmF6IiAiOiIgIjEiIDw8RU9GCisyCitbMF06ICJmb28iCitbMV06ICJiYXI6YmF6IgorRU9GCisKK3Rlc3Rfc3BsaXQgImZvbzpiYXI6YmF6IiAiOiIgIjIiIDw8RU9GCiszCitbMF06ICJmb28iCitbMV06ICJiYXIiCitbMl06ICJiYXoiCitFT0YKKwordGVzdF9zcGxpdCAiZm9vOmJhcjoiICI6IiAiLTEiIDw8RU9GCiszCitbMF06ICJmb28iCitbMV06ICJiYXIiCitbMl06ICIiCitFT0YKKwordGVzdF9zcGxpdCAiIiAiOiIgIi0xIiA8PEVPRgorMQorWzBdOiAiIgorRU9GCisKK3Rlc3Rfc3BsaXQgIjoiICI6IiAiLTEiIDw8RU9GCisyCitbMF06ICIiCitbMV06ICIiCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAidGVzdCBmaWx0ZXJfc3RyaW5nX2xpc3QiICcKKwl0ZXN0ICJ4LSIgPSAieCQodGVzdC1zdHJpbmctbGlzdCBmaWx0ZXIgLSB5KSIgJiYKKwl0ZXN0ICJ4LSIgPSAieCQodGVzdC1zdHJpbmctbGlzdCBmaWx0ZXIgbm8geSkiICYmCisJdGVzdCB5ZXMgPSAiJCh0ZXN0LXN0cmluZy1saXN0IGZpbHRlciB5ZXMgeSkiICYmCisJdGVzdCB5ZXMgPSAiJCh0ZXN0LXN0cmluZy1saXN0IGZpbHRlciBubzp5ZXMgeSkiICYmCisJdGVzdCB5ZXMgPSAiJCh0ZXN0LXN0cmluZy1saXN0IGZpbHRlciB5ZXM6bm8geSkiICYmCisJdGVzdCB5MTp5MiA9ICIkKHRlc3Qtc3RyaW5nLWxpc3QgZmlsdGVyIHkxOnkyIHkpIiAmJgorCXRlc3QgeTI6eTEgPSAiJCh0ZXN0LXN0cmluZy1saXN0IGZpbHRlciB5Mjp5MSB5KSIgJiYKKwl0ZXN0ICJ4LSIgPSAieCQodGVzdC1zdHJpbmctbGlzdCBmaWx0ZXIgeDE6eDIgeSkiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgInRlc3QgcmVtb3ZlX2R1cGxpY2F0ZXMiICcKKwl0ZXN0ICJ4LSIgPSAieCQodGVzdC1zdHJpbmctbGlzdCByZW1vdmVfZHVwbGljYXRlcyAtKSIgJiYKKwl0ZXN0ICJ4IiA9ICJ4JCh0ZXN0LXN0cmluZy1saXN0IHJlbW92ZV9kdXBsaWNhdGVzICIiKSIgJiYKKwl0ZXN0IGEgPSAiJCh0ZXN0LXN0cmluZy1saXN0IHJlbW92ZV9kdXBsaWNhdGVzIGEpIiAmJgorCXRlc3QgYSA9ICIkKHRlc3Qtc3RyaW5nLWxpc3QgcmVtb3ZlX2R1cGxpY2F0ZXMgYTphKSIgJiYKKwl0ZXN0IGEgPSAiJCh0ZXN0LXN0cmluZy1saXN0IHJlbW92ZV9kdXBsaWNhdGVzIGE6YTphOmE6YSkiICYmCisJdGVzdCBhOmIgPSAiJCh0ZXN0LXN0cmluZy1saXN0IHJlbW92ZV9kdXBsaWNhdGVzIGE6YikiICYmCisJdGVzdCBhOmIgPSAiJCh0ZXN0LXN0cmluZy1saXN0IHJlbW92ZV9kdXBsaWNhdGVzIGE6YTpiKSIgJiYKKwl0ZXN0IGE6YiA9ICIkKHRlc3Qtc3RyaW5nLWxpc3QgcmVtb3ZlX2R1cGxpY2F0ZXMgYTpiOmIpIiAmJgorCXRlc3QgYTpiOmMgPSAiJCh0ZXN0LXN0cmluZy1saXN0IHJlbW92ZV9kdXBsaWNhdGVzIGE6YjpjKSIgJiYKKwl0ZXN0IGE6YjpjID0gIiQodGVzdC1zdHJpbmctbGlzdCByZW1vdmVfZHVwbGljYXRlcyBhOmE6YjpjKSIgJiYKKwl0ZXN0IGE6YjpjID0gIiQodGVzdC1zdHJpbmctbGlzdCByZW1vdmVfZHVwbGljYXRlcyBhOmI6YjpjKSIgJiYKKwl0ZXN0IGE6YjpjID0gIiQodGVzdC1zdHJpbmctbGlzdCByZW1vdmVfZHVwbGljYXRlcyBhOmI6YzpjKSIgJiYKKwl0ZXN0IGE6YjpjID0gIiQodGVzdC1zdHJpbmctbGlzdCByZW1vdmVfZHVwbGljYXRlcyBhOmE6YjpiOmM6YykiICYmCisJdGVzdCBhOmI6YyA9ICIkKHRlc3Qtc3RyaW5nLWxpc3QgcmVtb3ZlX2R1cGxpY2F0ZXMgYTphOmE6YjpiOmI6YzpjOmMpIgorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDAwNzAtZnVuZGFtZW50YWwuc2ggYi90L3QwMDcwLWZ1bmRhbWVudGFsLnNoCmluZGV4IDliZWU4YmYuLjk4NmIyYTggMTAwNzU1Ci0tLSBhL3QvdDAwNzAtZnVuZGFtZW50YWwuc2gKKysrIGIvdC90MDA3MC1mdW5kYW1lbnRhbC5zaApAQCAtMTcsNyArMTcsNyBAQAogCWdyZXAgImRvZXNub3RleGlzdC90ZXN0IiBlcnIKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBQT1NJWFBFUk0gJ21rdGVtcCB0byB1bndyaXRhYmxlIGRpcmVjdG9yeSBwcmludHMgZmlsZW5hbWUnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgUE9TSVhQRVJNLFNBTklUWSAnbWt0ZW1wIHRvIHVud3JpdGFibGUgZGlyZWN0b3J5IHByaW50cyBmaWxlbmFtZScgJwogCW1rZGlyIGNhbm5vdHdyaXRlICYmCiAJY2htb2QgLXcgY2Fubm90d3JpdGUgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImNobW9kICt3IGNhbm5vdHdyaXRlIiAmJgpAQCAtMjUsNCArMjUsOSBAQAogCWdyZXAgImNhbm5vdHdyaXRlL3Rlc3QiIGVycgogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBmb3IgYSBidWcgaW4gdGhlIHJlZ2V4IHJvdXRpbmVzJyAnCisJIyBpZiB0aGlzIHRlc3QgZmFpbHMsIHJlLWJ1aWxkIGdpdCB3aXRoIE5PX1JFR0VYPTEKKwl0ZXN0LXJlZ2V4CisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MDEwMC1wcmV2aW91cy5zaCBiL3QvdDAxMDAtcHJldmlvdXMuc2gKaW5kZXggMzE1YjliMy4uZTBhNjk0MCAxMDA3NTUKLS0tIGEvdC90MDEwMC1wcmV2aW91cy5zaAorKysgYi90L3QwMTAwLXByZXZpb3VzLnNoCkBAIC0yNyw2ICsyNyw3IEBACiAJdGVzdF9jb21taXQgQiAmJgogCWdpdCBjaGVja291dCBBICYmCiAJdGVzdF9jb21taXQgQyAmJgorCXRlc3RfY29tbWl0IEQgJiYKIAlnaXQgYnJhbmNoIC1mIG1hc3RlciBCICYmCiAJZ2l0IGJyYW5jaCAtZiBvdGhlciAmJgogCWdpdCBjaGVja291dCBvdGhlciAmJgpAQCAtMzUsMTQgKzM2LDI0IEBACiAJZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgZ3JlcCAiTWVyZ2UgYnJhbmNoICdcJydvdGhlcidcJyciCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIEB7LTF9IHdoZW4gdGhlcmUgaXMgbm90IGVub3VnaCBzd2l0Y2hlcyB5ZXQnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIEB7LTF9fjEnICcKKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJZ2l0IHJlc2V0IC0taGFyZCBCICYmCisJZ2l0IGNoZWNrb3V0IG90aGVyICYmCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCWdpdCBtZXJnZSBAey0xfX4xICYmCisJZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEID5hY3R1YWwgJiYKKwlncmVwICJNZXJnZSBicmFuY2ggJ1wnJ290aGVyJ1wnJyIgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIEB7LTEwMH0gYmVmb3JlIGNoZWNraW5nIG91dCB0aGF0IG1hbnkgYnJhbmNoZXMgeWV0JyAnCiAJZ2l0IHJlZmxvZyBleHBpcmUgLS1leHBpcmU9bm93ICYmCiAJZ2l0IGNoZWNrb3V0IC1mIG1hc3RlciAmJgogCWdpdCByZXNldCAtLWhhcmQgQiAmJgogCWdpdCBicmFuY2ggLWYgb3RoZXIgQyAmJgogCWdpdCBjaGVja291dCBvdGhlciAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKLQl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgQHstMTJ9CisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIEB7LTEwMH0KICcKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QwMjAxLWdldHRleHQtZmFsbGJhY2tzLnNoIGIvdC90MDIwMS1nZXR0ZXh0LWZhbGxiYWNrcy5zaAppbmRleCA1MmIxYzI3Li41ZDgwYTk4IDEwMDc1NQotLS0gYS90L3QwMjAxLWdldHRleHQtZmFsbGJhY2tzLnNoCisrKyBiL3QvdDAyMDEtZ2V0dGV4dC1mYWxsYmFja3Muc2gKQEAgLTUxLDE2ICs1MSwxNiBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZXZhbF9nZXR0ZXh0OiBvdXIgZXZhbF9nZXR0ZXh0KCkgZmFsbGJhY2sgY2FuIGludGVycG9sYXRlIHZhcmlhYmxlcyB3aXRoIHNwYWNlcycgJwogICAgIGNtZGxpbmU9ImdpdCBhbSIgJiYKICAgICBleHBvcnQgY21kbGluZTsKLSAgICBwcmludGYgIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtIHJ1biBnaXQgYW0gLS1yZXNvbHZlZC4iID5leHBlY3QgJiYKLSAgICBldmFsX2dldHRleHQgIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtIHJ1biBcJGNtZGxpbmUgLS1yZXNvbHZlZC4iID5hY3R1YWwKKyAgICBwcmludGYgIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtLCBydW4gZ2l0IGFtIC0tcmVzb2x2ZWQuIiA+ZXhwZWN0ICYmCisgICAgZXZhbF9nZXR0ZXh0ICJXaGVuIHlvdSBoYXZlIHJlc29sdmVkIHRoaXMgcHJvYmxlbSwgcnVuIFwkY21kbGluZSAtLXJlc29sdmVkLiIgPmFjdHVhbAogICAgIHRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2V2YWxfZ2V0dGV4dDogb3VyIGV2YWxfZ2V0dGV4dCgpIGZhbGxiYWNrIGNhbiBpbnRlcnBvbGF0ZSB2YXJpYWJsZXMgd2l0aCBzcGFjZXMgYW5kIHF1b3RlcycgJwogICAgIGNtZGxpbmU9ImdpdCBhbSIgJiYKICAgICBleHBvcnQgY21kbGluZTsKLSAgICBwcmludGYgIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtIHJ1biBcImdpdCBhbSAtLXJlc29sdmVkXCIuIiA+ZXhwZWN0ICYmCi0gICAgZXZhbF9nZXR0ZXh0ICJXaGVuIHlvdSBoYXZlIHJlc29sdmVkIHRoaXMgcHJvYmxlbSBydW4gXCJcJGNtZGxpbmUgLS1yZXNvbHZlZFwiLiIgPmFjdHVhbAorICAgIHByaW50ZiAiV2hlbiB5b3UgaGF2ZSByZXNvbHZlZCB0aGlzIHByb2JsZW0sIHJ1biBcImdpdCBhbSAtLXJlc29sdmVkXCIuIiA+ZXhwZWN0ICYmCisgICAgZXZhbF9nZXR0ZXh0ICJXaGVuIHlvdSBoYXZlIHJlc29sdmVkIHRoaXMgcHJvYmxlbSwgcnVuIFwiXCRjbWRsaW5lIC0tcmVzb2x2ZWRcIi4iID5hY3R1YWwKICAgICB0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbAogJwogCmRpZmYgLS1naXQgYS90L3QwMzAwLWNyZWRlbnRpYWxzLnNoIGIvdC90MDMwMC1jcmVkZW50aWFscy5zaAppbmRleCAyMGUyOGUzLi41MzhlYTVmIDEwMDc1NQotLS0gYS90L3QwMzAwLWNyZWRlbnRpYWxzLnNoCisrKyBiL3QvdDAzMDAtY3JlZGVudGlhbHMuc2gKQEAgLTgyLDYgKzgyLDkgQEAKIAlob3N0PWV4YW1wbGUuY29tCiAJcGF0aD1mb28uZ2l0CiAJLS0KKwlwcm90b2NvbD1mdHAKKwlob3N0PWV4YW1wbGUuY29tCisJcGF0aD1mb28uZ2l0CiAJdXNlcm5hbWU9b25lCiAJcGFzc3dvcmQ9dHdvCiAJLS0KQEAgLTIxMyw2ICsyMTYsOCBAQAogCWhvc3Q9ZXhhbXBsZS5jb20KIAlwYXRoPXJlcG8uZ2l0CiAJLS0KKwlwcm90b2NvbD1odHRwcworCWhvc3Q9ZXhhbXBsZS5jb20KIAl1c2VybmFtZT1mb28KIAlwYXNzd29yZD1iYXIKIAktLQpAQCAtMjI1LDYgKzIzMCw4IEBACiAJcHJvdG9jb2w9aHR0cHMKIAlob3N0PWJhcgogCS0tCisJcHJvdG9jb2w9aHR0cHMKKwlob3N0PWJhcgogCXVzZXJuYW1lPWFza3Bhc3MtdXNlcm5hbWUKIAlwYXNzd29yZD1hc2twYXNzLXBhc3N3b3JkCiAJLS0KQEAgLTIzOSw2ICsyNDYsOCBAQAogCXByb3RvY29sPWh0dHBzCiAJaG9zdD1leGFtcGxlLmNvbQogCS0tCisJcHJvdG9jb2w9aHR0cHMKKwlob3N0PWV4YW1wbGUuY29tCiAJdXNlcm5hbWU9Zm9vCiAJcGFzc3dvcmQ9YXNrcGFzcy1wYXNzd29yZAogCS0tCkBAIC0yNTIsNiArMjYxLDggQEAKIAlob3N0PWV4YW1wbGUuY29tCiAJcGF0aD1mb28uZ2l0CiAJLS0KKwlwcm90b2NvbD1odHRwcworCWhvc3Q9ZXhhbXBsZS5jb20KIAl1c2VybmFtZT1mb28KIAlwYXNzd29yZD1iYXIKIAktLQpAQCAtMjY1LDYgKzI3Niw5IEBACiAJaG9zdD1leGFtcGxlLmNvbQogCXBhdGg9Zm9vLmdpdAogCS0tCisJcHJvdG9jb2w9aHR0cHMKKwlob3N0PWV4YW1wbGUuY29tCisJcGF0aD1mb28uZ2l0CiAJdXNlcm5hbWU9Zm9vCiAJcGFzc3dvcmQ9YmFyCiAJLS0KZGlmZiAtLWdpdCBhL3QvdDEwMDYtY2F0LWZpbGUuc2ggYi90L3QxMDA2LWNhdC1maWxlLnNoCmluZGV4IGQ4YjdmMmYuLjljYzVjNmIgMTAwNzU1Ci0tLSBhL3QvdDEwMDYtY2F0LWZpbGUuc2gKKysrIGIvdC90MTAwNi1jYXQtZmlsZS5zaApAQCAtMTE2LDkgKzExNiw5IEBACiAKIHJ1bl90ZXN0cyAndHJlZScgJHRyZWVfc2hhMSAkdHJlZV9zaXplICIiICIkdHJlZV9wcmV0dHlfY29udGVudCIKIAotY29tbWl0X21lc3NhZ2U9IkludGlhbCBjb21taXQiCitjb21taXRfbWVzc2FnZT0iSW5pdGlhbCBjb21taXQiCiBjb21taXRfc2hhMT0kKGVjaG9fd2l0aG91dF9uZXdsaW5lICIkY29tbWl0X21lc3NhZ2UiIHwgZ2l0IGNvbW1pdC10cmVlICR0cmVlX3NoYTEpCi1jb21taXRfc2l6ZT0xNzYKK2NvbW1pdF9zaXplPTE3NwogY29tbWl0X2NvbnRlbnQ9InRyZWUgJHRyZWVfc2hhMQogYXV0aG9yICRHSVRfQVVUSE9SX05BTUUgPCRHSVRfQVVUSE9SX0VNQUlMPiAwMDAwMDAwMDAwICswMDAwCiBjb21taXR0ZXIgJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+IDAwMDAwMDAwMDAgKzAwMDAKQEAgLTEzNSwxNCArMTM1LDExIEBACiB0YWdfY29udGVudD0iJHRhZ19oZWFkZXJfd2l0aG91dF90aW1lc3RhbXAgMDAwMDAwMDAwMCArMDAwMAogCiAkdGFnX2Rlc2NyaXB0aW9uIgotdGFnX3ByZXR0eV9jb250ZW50PSIkdGFnX2hlYWRlcl93aXRob3V0X3RpbWVzdGFtcCBUaHUgSmFuIDEgMDA6MDA6MDAgMTk3MCArMDAwMAotCi0kdGFnX2Rlc2NyaXB0aW9uIgogCiB0YWdfc2hhMT0kKGVjaG9fd2l0aG91dF9uZXdsaW5lICIkdGFnX2NvbnRlbnQiIHwgZ2l0IG1rdGFnKQogdGFnX3NpemU9JChzdHJsZW4gIiR0YWdfY29udGVudCIpCiAKLXJ1bl90ZXN0cyAndGFnJyAkdGFnX3NoYTEgJHRhZ19zaXplICIkdGFnX2NvbnRlbnQiICIkdGFnX3ByZXR0eV9jb250ZW50IiAxCitydW5fdGVzdHMgJ3RhZycgJHRhZ19zaGExICR0YWdfc2l6ZSAiJHRhZ19jb250ZW50IiAiJHRhZ19jb250ZW50IiAxCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICJSZWFjaCBhIGJsb2IgZnJvbSBhIHRhZyBwb2ludGluZyB0byBpdCIgXApkaWZmIC0tZ2l0IGEvdC90MTAxMC1ta3RyZWUuc2ggYi90L3QxMDEwLW1rdHJlZS5zaAppbmRleCBiOTQ2Zjg3Li5kZjU3M2M0IDEwMDc1NQotLS0gYS90L3QxMDEwLW1rdHJlZS5zaAorKysgYi90L3QxMDEwLW1rdHJlZS5zaApAQCAtNDIsMTMgKzQyLDEzIEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xzLXRyZWUgb3V0cHV0IGluIHdyb25nIG9yZGVyIGdpdmVuIHRvIG1rdHJlZSAoMSknICcKLQlwZXJsIC1lICJwcmludCByZXZlcnNlIDw+IiA8dG9wIHwKKwkiJFBFUkxfUEFUSCIgLWUgInByaW50IHJldmVyc2UgPD4iIDx0b3AgfAogCWdpdCBta3RyZWUgPmFjdHVhbCAmJgogCXRlc3RfY21wIHRyZWUgYWN0dWFsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xzLXRyZWUgb3V0cHV0IGluIHdyb25nIG9yZGVyIGdpdmVuIHRvIG1rdHJlZSAoMiknICcKLQlwZXJsIC1lICJwcmludCByZXZlcnNlIDw+IiA8dG9wLndpdGhzdWIgfAorCSIkUEVSTF9QQVRIIiAtZSAicHJpbnQgcmV2ZXJzZSA8PiIgPHRvcC53aXRoc3ViIHwKIAlnaXQgbWt0cmVlID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCB0cmVlLndpdGhzdWIgYWN0dWFsCiAnCmRpZmYgLS1naXQgYS90L3QxMDExLXJlYWQtdHJlZS1zcGFyc2UtY2hlY2tvdXQuc2ggYi90L3QxMDExLXJlYWQtdHJlZS1zcGFyc2UtY2hlY2tvdXQuc2gKaW5kZXggNWMwMDUzYS4uMGM3NGJlZSAxMDA3NTUKLS0tIGEvdC90MTAxMS1yZWFkLXRyZWUtc3BhcnNlLWNoZWNrb3V0LnNoCisrKyBiL3QvdDEwMTEtcmVhZC10cmVlLXNwYXJzZS1jaGVja291dC5zaApAQCAtMjUwLDQgKzI1MCwyOCBAQAogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja291dCB3aXRob3V0IC0taWdub3JlLXNraXAtd29ya3RyZWUtYml0cycgJworCWVjaG8gIioiID4uZ2l0L2luZm8vc3BhcnNlLWNoZWNrb3V0ICYmCisJZ2l0IGNoZWNrb3V0IC1mIHRvcCAmJgorCXRlc3RfcGF0aF9pc19maWxlIGluaXQudCAmJgorCWVjaG8gc3ViID4uZ2l0L2luZm8vc3BhcnNlLWNoZWNrb3V0ICYmCisJZ2l0IGNoZWNrb3V0ICYmCisJZWNobyBtb2RpZmllZCA+PiBzdWIvYWRkZWQgJiYKKwlnaXQgY2hlY2tvdXQgLiAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIGluaXQudCAmJgorCWdpdCBkaWZmIC0tZXhpdC1jb2RlIEhFQUQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgd2l0aCAtLWlnbm9yZS1za2lwLXdvcmt0cmVlLWJpdHMnICcKKwllY2hvICIqIiA+LmdpdC9pbmZvL3NwYXJzZS1jaGVja291dCAmJgorCWdpdCBjaGVja291dCAtZiB0b3AgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBpbml0LnQgJiYKKwllY2hvIHN1YiA+LmdpdC9pbmZvL3NwYXJzZS1jaGVja291dCAmJgorCWdpdCBjaGVja291dCAmJgorCWVjaG8gbW9kaWZpZWQgPj4gc3ViL2FkZGVkICYmCisJZ2l0IGNoZWNrb3V0IC0taWdub3JlLXNraXAtd29ya3RyZWUtYml0cyAuICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgaW5pdC50ICYmCisJZ2l0IGRpZmYgLS1leGl0LWNvZGUgSEVBRAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDEwMjAtc3ViZGlyZWN0b3J5LnNoIGIvdC90MTAyMC1zdWJkaXJlY3Rvcnkuc2gKaW5kZXggZTIzYWMwZS4uMWUyOTQ1ZSAxMDA3NTUKLS0tIGEvdC90MTAyMC1zdWJkaXJlY3Rvcnkuc2gKKysrIGIvdC90MTAyMC1zdWJkaXJlY3Rvcnkuc2gKQEAgLTExMSwxOSArMTExLDE5IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsaWFzIGV4cGFuc2lvbicgJwogCSgKLQkJZ2l0IGNvbmZpZyBhbGlhcy5zcyBzdGF0dXMgJiYKKwkJZ2l0IGNvbmZpZyBhbGlhcy50ZXN0LXN0YXR1cy1hbGlhcyBzdGF0dXMgJiYKIAkJY2QgZGlyICYmCiAJCWdpdCBzdGF0dXMgJiYKLQkJZ2l0IHNzCisJCWdpdCB0ZXN0LXN0YXR1cy1hbGlhcwogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBOT1RfTUlOR1cgJyFhbGlhcyBleHBhbnNpb24nICcKIAlwd2QgPmV4cGVjdCAmJgogCSgKLQkJZ2l0IGNvbmZpZyBhbGlhcy50ZXN0ICFwd2QgJiYKKwkJZ2l0IGNvbmZpZyBhbGlhcy50ZXN0LWFsaWFzLWRpcmVjdG9yeSAhcHdkICYmCiAJCWNkIGRpciAmJgotCQlnaXQgdGVzdCA+Li4vYWN0dWFsCisJCWdpdCB0ZXN0LWFsaWFzLWRpcmVjdG9yeSA+Li4vYWN0dWFsCiAJKSAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKQEAgLTEzMSw5ICsxMzEsOSBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnR0lUX1BSRUZJWCBmb3IgIWFsaWFzJyAnCiAJcHJpbnRmICJkaXIvIiA+ZXhwZWN0ICYmCiAJKAotCQlnaXQgY29uZmlnIGFsaWFzLnRlc3QgIiFzaCAtYyBcInByaW50ZiBcJEdJVF9QUkVGSVhcIiIgJiYKKwkJZ2l0IGNvbmZpZyBhbGlhcy50ZXN0LWFsaWFzLWRpcmVjdG9yeSAiIXNoIC1jIFwicHJpbnRmIFwkR0lUX1BSRUZJWFwiIiAmJgogCQljZCBkaXIgJiYKLQkJZ2l0IHRlc3QgPi4uL2FjdHVhbAorCQlnaXQgdGVzdC1hbGlhcy1kaXJlY3RvcnkgPi4uL2FjdHVhbAogCSkgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCmRpZmYgLS1naXQgYS90L3QxMDUwLWxhcmdlLnNoIGIvdC90MTA1MC1sYXJnZS5zaAppbmRleCA1NWVkOTU1Li5mZDEwNTI4IDEwMDc1NQotLS0gYS90L3QxMDUwLWxhcmdlLnNoCisrKyBiL3QvdDEwNTAtbGFyZ2Uuc2gKQEAgLTEzMCwxMCArMTMwLDI3IEBACiAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5kZXgtcGFjaycgJworCWdpdCBjbG9uZSBmaWxlOi8vImBwd2RgIi8uZ2l0IGZvbyAmJgorCUdJVF9ESVI9bm9uLWV4aXN0ZW50IGdpdCBpbmRleC1wYWNrIC0tc3RyaWN0IC0tdmVyaWZ5IGZvby8uZ2l0L29iamVjdHMvcGFjay8qLnBhY2sKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmVwYWNrJyAnCiAJZ2l0IHJlcGFjayAtYWQKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncGFjay1vYmplY3RzIHdpdGggbGFyZ2UgbG9vc2Ugb2JqZWN0JyAnCisJU0hBMT1gZ2l0IGhhc2gtb2JqZWN0IGh1Z2VgICYmCisJdGVzdF9jcmVhdGVfcmVwbyBsb29zZSAmJgorCWVjaG8gJFNIQTEgfCBnaXQgcGFjay1vYmplY3RzIC0tc3Rkb3V0IHwKKwkJR0lUX0FMTE9DX0xJTUlUPTAgR0lUX0RJUj1sb29zZS8uZ2l0IGdpdCB1bnBhY2stb2JqZWN0cyAmJgorCWVjaG8gJFNIQTEgfCBHSVRfRElSPWxvb3NlLy5naXQgZ2l0IHBhY2stb2JqZWN0cyBwYWNrICYmCisJdGVzdF9jcmVhdGVfcmVwbyBwYWNrZWQgJiYKKwltdiBwYWNrLSogcGFja2VkLy5naXQvb2JqZWN0cy9wYWNrICYmCisJR0lUX0RJUj1wYWNrZWQvLmdpdCBnaXQgY2F0LWZpbGUgYmxvYiAkU0hBMSA+YWN0dWFsICYmCisJY21wIGh1Z2UgYWN0dWFsCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3RhciBhY2hpdmluZycgJwogCWdpdCBhcmNoaXZlIC0tZm9ybWF0PXRhciBIRUFEID4vZGV2L251bGwKICcKZGlmZiAtLWdpdCBhL3QvdDEwNjAtb2JqZWN0LWNvcnJ1cHRpb24uc2ggYi90L3QxMDYwLW9iamVjdC1jb3JydXB0aW9uLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNmODcwNTEKLS0tIC9kZXYvbnVsbAorKysgYi90L3QxMDYwLW9iamVjdC1jb3JydXB0aW9uLnNoCkBAIC0wLDAgKzEsMTA0IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nc2VlIGhvdyB3ZSBoYW5kbGUgdmFyaW91cyBmb3JtcyBvZiBjb3JydXB0aW9uJworLiAuL3Rlc3QtbGliLnNoCisKKyMgY29udmVydCAiMTIzNGFiY2QiIHRvICIuZ2l0L29iamVjdHMvMTIvMzRhYmNkIgorb2JqX3RvX2ZpbGUoKSB7CisJZWNobyAiJChnaXQgcmV2LXBhcnNlIC0tZ2l0LWRpcikvb2JqZWN0cy8kKGdpdCByZXYtcGFyc2UgIiQxIiB8IHNlZCAncywuLiwmLywnKSIKK30KKworIyBDb252ZXJ0IGJ5dGUgYXQgb2Zmc2V0ICIkMiIgb2Ygb2JqZWN0ICIkMSIgaW50byAnXDAnCitjb3JydXB0X2J5dGUoKSB7CisJb2JqX2ZpbGU9JChvYmpfdG9fZmlsZSAiJDEiKSAmJgorCWNobW9kICt3ICIkb2JqX2ZpbGUiICYmCisJcHJpbnRmICdcMCcgfCBkZCBvZj0iJG9ial9maWxlIiBicz0xIHNlZWs9IiQyIiBjb252PW5vdHJ1bmMKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgY29ycnVwdCByZXBvJyAnCisJZ2l0IGluaXQgYml0LWVycm9yICYmCisJKAorCQljZCBiaXQtZXJyb3IgJiYKKwkJdGVzdF9jb21taXQgY29udGVudCAmJgorCQljb3JydXB0X2J5dGUgSEVBRDpjb250ZW50LnQgMTAKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHJlcG8gd2l0aCBtaXNzaW5nIG9iamVjdCcgJworCWdpdCBpbml0IG1pc3NpbmcgJiYKKwkoCisJCWNkIG1pc3NpbmcgJiYKKwkJdGVzdF9jb21taXQgY29udGVudCAmJgorCQlybSAtZiAiJChvYmpfdG9fZmlsZSBIRUFEOmNvbnRlbnQudCkiCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCByZXBvIHdpdGggbWlzbmFtZWQgb2JqZWN0JyAnCisJZ2l0IGluaXQgbWlzbmFtZWQgJiYKKwkoCisJCWNkIG1pc25hbWVkICYmCisJCXRlc3RfY29tbWl0IGNvbnRlbnQgJiYKKwkJZ29vZD0kKG9ial90b19maWxlIEhFQUQ6Y29udGVudC50KSAmJgorCQlibG9iPSQoZWNobyBjb3JydXB0IHwgZ2l0IGhhc2gtb2JqZWN0IC13IC0tc3RkaW4pICYmCisJCWJhZD0kKG9ial90b19maWxlICRibG9iKSAmJgorCQlybSAtZiAiJGdvb2QiICYmCisJCW12ICIkYmFkIiAiJGdvb2QiCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdHJlYW1pbmcgYSBjb3JydXB0IGJsb2IgZmFpbHMnICcKKwkoCisJCWNkIGJpdC1lcnJvciAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgY2F0LWZpbGUgYmxvYiBIRUFEOmNvbnRlbnQudAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVhZC10cmVlIC11IGRldGVjdHMgYml0LWVycm9ycyBpbiBibG9icycgJworCSgKKwkJY2QgYml0LWVycm9yICYmCisJCXJtIC1mIGNvbnRlbnQudCAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmVhZC10cmVlIC0tcmVzZXQgLXUgSEVBRAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVhZC10cmVlIC11IGRldGVjdHMgbWlzc2luZyBvYmplY3RzJyAnCisJKAorCQljZCBtaXNzaW5nICYmCisJCXJtIC1mIGNvbnRlbnQudCAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmVhZC10cmVlIC0tcmVzZXQgLXUgSEVBRAorCSkKKycKKworIyBXZSB1c2UgLS1iYXJlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSB0cmFuc3BvcnQgZGV0ZWN0cyBpdCwgbm90IHRoZSBjaGVja291dAorIyBwaGFzZS4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIC0tbm8tbG9jYWwgLS1iYXJlIGRldGVjdHMgY29ycnVwdGlvbicgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBjbG9uZSAtLW5vLWxvY2FsIC0tYmFyZSBiaXQtZXJyb3IgY29ycnVwdC10cmFuc3BvcnQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgLS1uby1sb2NhbCAtLWJhcmUgZGV0ZWN0cyBtaXNzaW5nIG9iamVjdCcgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBjbG9uZSAtLW5vLWxvY2FsIC0tYmFyZSBtaXNzaW5nIG1pc3NpbmctdHJhbnNwb3J0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIC0tbm8tbG9jYWwgLS1iYXJlIGRldGVjdHMgbWlzbmFtZWQgb2JqZWN0JyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNsb25lIC0tbm8tbG9jYWwgLS1iYXJlIG1pc25hbWVkIG1pc25hbWVkLXRyYW5zcG9ydAorJworCisjIFdlIGRvIG5vdCBleHBlY3QgLS1sb2NhbCB0byBkZXRlY3QgY29ycnVwdGlvbiBhdCB0aGUgdHJhbnNwb3J0IGxheWVyLAorIyBzbyB3ZSBhcmUgcmVhbGx5IGNoZWNraW5nIHRoZSBjaGVja291dCgpIGNvZGUgcGF0aC4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIC0tbG9jYWwgZGV0ZWN0cyBjb3JydXB0aW9uJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNsb25lIC0tbG9jYWwgYml0LWVycm9yIGNvcnJ1cHQtY2hlY2tvdXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZXJyb3IgZGV0ZWN0ZWQgZHVyaW5nIGNoZWNrb3V0IGxlYXZlcyByZXBvIGludGFjdCcgJworCXRlc3RfcGF0aF9pc19kaXIgY29ycnVwdC1jaGVja291dC8uZ2l0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIC0tbG9jYWwgZGV0ZWN0cyBtaXNzaW5nIG9iamVjdHMnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgY2xvbmUgLS1sb2NhbCBtaXNzaW5nIG1pc3NpbmctY2hlY2tvdXQKKycKKwordGVzdF9leHBlY3RfZmFpbHVyZSAnY2xvbmUgLS1sb2NhbCBkZXRlY3RzIG1pc25hbWVkIG9iamVjdHMnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgY2xvbmUgLS1sb2NhbCBtaXNuYW1lZCBtaXNuYW1lZC1jaGVja291dAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDExMDAtY29tbWl0LXRyZWUtb3B0aW9ucy5zaCBiL3QvdDExMDAtY29tbWl0LXRyZWUtb3B0aW9ucy5zaAppbmRleCBjNDQxNGZmLi5mODQ1N2Y5IDEwMDc1NQotLS0gYS90L3QxMTAwLWNvbW1pdC10cmVlLW9wdGlvbnMuc2gKKysrIGIvdC90MTEwMC1jb21taXQtdHJlZS1vcHRpb25zLnNoCkBAIC03LDYgKzcsOSBAQAogCiBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgZ2l0IGNvbW1pdC10cmVlIGNhbiBjcmVhdGUgYSBzcGVjaWZpYyBjb21taXQKIG9iamVjdCBieSBkZWZpbmluZyBhbGwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgaXQgdW5kZXJzdGFuZHMuCisKK0Fsc28gbWFrZSBzdXJlIHRoYXQgY29tbWFuZCBsaW5lIHBhcnNlciB1bmRlcnN0YW5kcyB0aGUgbm9ybWFsCisiZmxhZ3MgZmlyc3QgYW5kIHRoZW4gbm9uIGZsYWcgYXJndW1lbnRzIiBjb21tYW5kIGxpbmUuCiAnCiAKIC4gLi90ZXN0LWxpYi5zaApAQCAtNDIsNCArNDUsMTkgQEAKICAgICAnY29tcGFyZSBjb21taXQnIFwKICAgICAndGVzdF9jbXAgZXhwZWN0ZWQgY29tbWl0JwogCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZsYWdzIGFuZCB0aGVuIG5vbiBmbGFncycgJworCXRlc3RfdGljayAmJgorCWVjaG8gY29tbWVudCB0ZXh0IHwKKwlnaXQgY29tbWl0LXRyZWUgJChjYXQgdHJlZWlkKSA+Y29tbWl0aWQgJiYKKwllY2hvIGNvbW1lbnQgdGV4dCB8CisJZ2l0IGNvbW1pdC10cmVlICQoY2F0IHRyZWVpZCkgLXAgJChjYXQgY29tbWl0aWQpID5jaGlsZGlkLTEgJiYKKwllY2hvIGNvbW1lbnQgdGV4dCB8CisJZ2l0IGNvbW1pdC10cmVlIC1wICQoY2F0IGNvbW1pdGlkKSAkKGNhdCB0cmVlaWQpID5jaGlsZGlkLTIgJiYKKwl0ZXN0X2NtcCBjaGlsZGlkLTEgY2hpbGRpZC0yICYmCisJZ2l0IGNvbW1pdC10cmVlICQoY2F0IHRyZWVpZCkgLW0gZm9vID5jaGlsZGlkLTMgJiYKKwlnaXQgY29tbWl0LXRyZWUgLW0gZm9vICQoY2F0IHRyZWVpZCkgPmNoaWxkaWQtNCAmJgorCXRlc3RfY21wIGNoaWxkaWQtMyBjaGlsZGlkLTQKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QxMzAwLXJlcG8tY29uZmlnLnNoIGIvdC90MTMwMC1yZXBvLWNvbmZpZy5zaAppbmRleCBhNDc3NDUzLi5jNGE3ZDg0IDEwMDc1NQotLS0gYS90L3QxMzAwLXJlcG8tY29uZmlnLnNoCisrKyBiL3QvdDEzMDAtcmVwby1jb25maWcuc2gKQEAgLTU1LDExICs1NSwxMyBAQAogCXRlc3RfY21wIGV4cGVjdCAuZ2l0L2NvbmZpZwogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXBsYWNlIHdpdGggbm9uLW1hdGNoJyBcCi0JJ2dpdCBjb25maWcgY29yZS5wZW5ndWluIGtpbmdwaW4gIWJsdWUnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXBsYWNlIHdpdGggbm9uLW1hdGNoJyAnCisJZ2l0IGNvbmZpZyBjb3JlLnBlbmd1aW4ga2luZ3BpbiAhYmx1ZQorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXBsYWNlIHdpdGggbm9uLW1hdGNoIChhY3R1YWxseSBtYXRjaGluZyknIFwKLQknZ2l0IGNvbmZpZyBjb3JlLnBlbmd1aW4gInZlcnkgYmx1ZSIgIWtpbmdwaW4nCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXBsYWNlIHdpdGggbm9uLW1hdGNoIChhY3R1YWxseSBtYXRjaGluZyknICcKKwlnaXQgY29uZmlnIGNvcmUucGVuZ3VpbiAidmVyeSBibHVlIiAha2luZ3BpbgorJwogCiBjYXQgPiBleHBlY3QgPDwgRU9GCiBbY29yZV0KQEAgLTEwOCw4ICsxMTAsOSBAQAogbGluZXMKIEVPRgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICd1bnNldCB3aXRoIGNvbnQuIGxpbmVzJyBcCi0JJ2dpdCBjb25maWcgLS11bnNldCBiZXRhLmJheicKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Vuc2V0IHdpdGggY29udC4gbGluZXMnICcKKwlnaXQgY29uZmlnIC0tdW5zZXQgYmV0YS5iYXoKKycKIAogY2F0ID4gZXhwZWN0IDw8XEVPRgogW2FscGhhXQpAQCAtMTMzLDggKzEzNiw5IEBACiAKIGNwIC5naXQvY29uZmlnIC5naXQvY29uZmlnMgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdtdWx0aXBsZSB1bnNldCcgXAotCSdnaXQgY29uZmlnIC0tdW5zZXQtYWxsIGJldGEuaGFoYScKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ211bHRpcGxlIHVuc2V0JyAnCisJZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBiZXRhLmhhaGEKKycKIAogY2F0ID4gZXhwZWN0IDw8IEVPRgogW2JldGFdIDsgc2lsbHkgY29tbWVudCAjIGFub3RoZXIgY29tbWVudApAQCAtMTQ1LDcgKzE0OSw5IEBACiBbbmV4dFNlY3Rpb25dIG5vTmV3bGluZSA9IG91Y2gKIEVPRgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdtdWx0aXBsZSB1bnNldCBpcyBjb3JyZWN0JyAndGVzdF9jbXAgZXhwZWN0IC5naXQvY29uZmlnJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbXVsdGlwbGUgdW5zZXQgaXMgY29ycmVjdCcgJworCXRlc3RfY21wIGV4cGVjdCAuZ2l0L2NvbmZpZworJwogCiBjcCAuZ2l0L2NvbmZpZzIgLmdpdC9jb25maWcKIApAQCAtMTU2LDggKzE2Miw5IEBACiAKIHJtIC5naXQvY29uZmlnMgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICctLXJlcGxhY2UtYWxsJyBcCi0JJ2dpdCBjb25maWcgLS1yZXBsYWNlLWFsbCBiZXRhLmhhaGEgZ2FtbWEnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXJlcGxhY2UtYWxsJyAnCisJZ2l0IGNvbmZpZyAtLXJlcGxhY2UtYWxsIGJldGEuaGFoYSBnYW1tYQorJwogCiBjYXQgPiBleHBlY3QgPDwgRU9GCiBbYmV0YV0gOyBzaWxseSBjb21tZW50ICMgYW5vdGhlciBjb21tZW50CkBAIC0xNjksNyArMTc2LDkgQEAKIFtuZXh0U2VjdGlvbl0gbm9OZXdsaW5lID0gb3VjaAogRU9GCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsbCByZXBsYWNlZCcgJ3Rlc3RfY21wIGV4cGVjdCAuZ2l0L2NvbmZpZycKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsbCByZXBsYWNlZCcgJworCXRlc3RfY21wIGV4cGVjdCAuZ2l0L2NvbmZpZworJwogCiBjYXQgPiBleHBlY3QgPDwgRU9GCiBbYmV0YV0gOyBzaWxseSBjb21tZW50ICMgYW5vdGhlciBjb21tZW50CkBAIC0yMDAsNyArMjA5LDExIEBACiAJdGVzdF9jbXAgZXhwZWN0IC5naXQvY29uZmlnCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldCB2YWx1ZScgJ3Rlc3QgYWxwaGEgPSAkKGdpdCBjb25maWcgYmV0YS5oYWhhKScKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldCB2YWx1ZScgJworCWVjaG8gYWxwaGEgPmV4cGVjdCAmJgorCWdpdCBjb25maWcgYmV0YS5oYWhhID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCiAKIGNhdCA+IGV4cGVjdCA8PCBFT0YKIFtiZXRhXSA7IHNpbGx5IGNvbW1lbnQgIyBhbm90aGVyIGNvbW1lbnQKQEAgLTIzMSwxOCArMjQ0LDMwIEBACiAJdGVzdF9jbXAgZXhwZWN0IC5naXQvY29uZmlnCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vbi1tYXRjaCcgXAotCSdnaXQgY29uZmlnIC0tZ2V0IG5leHRzZWN0aW9uLm5vbmV3bGluZSAhZm9yJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdub24tbWF0Y2ggdmFsdWUnIFwKLQkndGVzdCB3b3cgPSAkKGdpdCBjb25maWcgLS1nZXQgbmV4dHNlY3Rpb24ubm9uZXdsaW5lICFmb3IpJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdhbWJpZ3VvdXMgZ2V0JyAnCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyAtLWdldCBuZXh0c2VjdGlvbi5ub25ld2xpbmUKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vbi1tYXRjaCcgJworCWdpdCBjb25maWcgLS1nZXQgbmV4dHNlY3Rpb24ubm9uZXdsaW5lICFmb3IKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2V0IG11bHRpdmFyJyBcCi0JJ2dpdCBjb25maWcgLS1nZXQtYWxsIG5leHRzZWN0aW9uLm5vbmV3bGluZScKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vbi1tYXRjaCB2YWx1ZScgJworCWVjaG8gd293ID5leHBlY3QgJiYKKwlnaXQgY29uZmlnIC0tZ2V0IG5leHRzZWN0aW9uLm5vbmV3bGluZSAhZm9yID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ211bHRpLXZhbHVlZCBnZXQgcmV0dXJucyBmaW5hbCBvbmUnICcKKwllY2hvICJ3b3cyIGZvciBtZSIgPmV4cGVjdCAmJgorCWdpdCBjb25maWcgLS1nZXQgbmV4dHNlY3Rpb24ubm9uZXdsaW5lID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ211bHRpLXZhbHVlZCBnZXQtYWxsIHJldHVybnMgYWxsJyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCXdvdworCXdvdzIgZm9yIG1lCisJRU9GCisJZ2l0IGNvbmZpZyAtLWdldC1hbGwgbmV4dHNlY3Rpb24ubm9uZXdsaW5lID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCiAKIGNhdCA+IGV4cGVjdCA8PCBFT0YKIFtiZXRhXSA7IHNpbGx5IGNvbW1lbnQgIyBhbm90aGVyIGNvbW1lbnQKQEAgLTI1OSwxMCArMjg0LDYgQEAKIAl0ZXN0X2NtcCBleHBlY3QgLmdpdC9jb25maWcKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnYW1iaWd1b3VzIHZhbHVlJyAnCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyBuZXh0c2VjdGlvbi5ub25ld2xpbmUKLScKLQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYW1iaWd1b3VzIHVuc2V0JyAnCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyAtLXVuc2V0IG5leHRzZWN0aW9uLm5vbmV3bGluZQogJwpAQCAtMjkwLDggKzMxMSw5IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvcnJlY3Qga2V5JyAnZ2l0IGNvbmZpZyAxMjM0NTYuYTEyMyA5ODcnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2hpZXJhcmNoaWNhbCBzZWN0aW9uJyBcCi0JJ2dpdCBjb25maWcgVmVyc2lvbi4xLjIuM2VYLkFscGhhIGJldGEnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdoaWVyYXJjaGljYWwgc2VjdGlvbicgJworCWdpdCBjb25maWcgVmVyc2lvbi4xLjIuM2VYLkFscGhhIGJldGEKKycKIAogY2F0ID4gZXhwZWN0IDw8IEVPRgogW2JldGFdIDsgc2lsbHkgY29tbWVudCAjIGFub3RoZXIgY29tbWVudApAQCAtMzA3LDcgKzMyOSw5IEBACiAJQWxwaGEgPSBiZXRhCiBFT0YKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnaGllcmFyY2hpY2FsIHNlY3Rpb24gdmFsdWUnICd0ZXN0X2NtcCBleHBlY3QgLmdpdC9jb25maWcnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdoaWVyYXJjaGljYWwgc2VjdGlvbiB2YWx1ZScgJworCXRlc3RfY21wIGV4cGVjdCAuZ2l0L2NvbmZpZworJwogCiBjYXQgPiBleHBlY3QgPDwgRU9GCiBiZXRhLm5vaW5kZW50PXNpbGx5VmFsdWUKQEAgLTMxNiw5ICszNDAsMTAgQEAKIHZlcnNpb24uMS4yLjNlWC5hbHBoYT1iZXRhCiBFT0YKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnd29ya2luZyAtLWxpc3QnIFwKLQknZ2l0IGNvbmZpZyAtLWxpc3QgPiBvdXRwdXQgJiYgY21wIG91dHB1dCBleHBlY3QnCi0KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dvcmtpbmcgLS1saXN0JyAnCisJZ2l0IGNvbmZpZyAtLWxpc3QgPiBvdXRwdXQgJiYKKwl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0CisnCiBjYXQgPiBleHBlY3QgPDwgRU9GCiBFT0YKIApAQCAtMzMyLDggKzM1NywxMCBAQAogbmV4dHNlY3Rpb24ubm9uZXdsaW5lIHdvdzIgZm9yIG1lCiBFT0YKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1nZXQtcmVnZXhwJyBcCi0JJ2dpdCBjb25maWcgLS1nZXQtcmVnZXhwIGluID4gb3V0cHV0ICYmIGNtcCBvdXRwdXQgZXhwZWN0JwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1nZXQtcmVnZXhwJyAnCisJZ2l0IGNvbmZpZyAtLWdldC1yZWdleHAgaW4gPm91dHB1dCAmJgorCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKKycKIAogY2F0ID4gZXhwZWN0IDw8IEVPRgogd293MiBmb3IgbWUKQEAgLTM1Myw0NSArMzgwLDUyIEBACiAJdmFyaWFibGUgPQogRU9GCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldCB2YXJpYWJsZSB3aXRoIG5vIHZhbHVlJyBcCi0JJ2dpdCBjb25maWcgLS1nZXQgbm92YWx1ZS52YXJpYWJsZSBeJCcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldCB2YXJpYWJsZSB3aXRoIG5vIHZhbHVlJyAnCisJZ2l0IGNvbmZpZyAtLWdldCBub3ZhbHVlLnZhcmlhYmxlIF4kCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldCB2YXJpYWJsZSB3aXRoIGVtcHR5IHZhbHVlJyBcCi0JJ2dpdCBjb25maWcgLS1nZXQgZW1wdHl2YWx1ZS52YXJpYWJsZSBeJCcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldCB2YXJpYWJsZSB3aXRoIGVtcHR5IHZhbHVlJyAnCisJZ2l0IGNvbmZpZyAtLWdldCBlbXB0eXZhbHVlLnZhcmlhYmxlIF4kCisnCiAKIGVjaG8gbm92YWx1ZS52YXJpYWJsZSA+IGV4cGVjdAogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdnZXQtcmVnZXhwIHZhcmlhYmxlIHdpdGggbm8gdmFsdWUnIFwKLQknZ2l0IGNvbmZpZyAtLWdldC1yZWdleHAgbm92YWx1ZSA+IG91dHB1dCAmJgotCSBjbXAgb3V0cHV0IGV4cGVjdCcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldC1yZWdleHAgdmFyaWFibGUgd2l0aCBubyB2YWx1ZScgJworCWdpdCBjb25maWcgLS1nZXQtcmVnZXhwIG5vdmFsdWUgPiBvdXRwdXQgJiYKKwl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0CisnCiAKIGVjaG8gJ25vdmFsdWUudmFyaWFibGUgdHJ1ZScgPiBleHBlY3QKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2V0LXJlZ2V4cCAtLWJvb2wgdmFyaWFibGUgd2l0aCBubyB2YWx1ZScgXAotCSdnaXQgY29uZmlnIC0tYm9vbCAtLWdldC1yZWdleHAgbm92YWx1ZSA+IG91dHB1dCAmJgotCSBjbXAgb3V0cHV0IGV4cGVjdCcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldC1yZWdleHAgLS1ib29sIHZhcmlhYmxlIHdpdGggbm8gdmFsdWUnICcKKwlnaXQgY29uZmlnIC0tYm9vbCAtLWdldC1yZWdleHAgbm92YWx1ZSA+IG91dHB1dCAmJgorCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKKycKIAogZWNobyAnZW1wdHl2YWx1ZS52YXJpYWJsZSAnID4gZXhwZWN0CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldC1yZWdleHAgdmFyaWFibGUgd2l0aCBlbXB0eSB2YWx1ZScgXAotCSdnaXQgY29uZmlnIC0tZ2V0LXJlZ2V4cCBlbXB0eXZhbHVlID4gb3V0cHV0ICYmCi0JIGNtcCBvdXRwdXQgZXhwZWN0JwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2V0LXJlZ2V4cCB2YXJpYWJsZSB3aXRoIGVtcHR5IHZhbHVlJyAnCisJZ2l0IGNvbmZpZyAtLWdldC1yZWdleHAgZW1wdHl2YWx1ZSA+IG91dHB1dCAmJgorCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKKycKIAogZWNobyB0cnVlID4gZXhwZWN0CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldCBib29sIHZhcmlhYmxlIHdpdGggbm8gdmFsdWUnIFwKLQknZ2l0IGNvbmZpZyAtLWJvb2wgbm92YWx1ZS52YXJpYWJsZSA+IG91dHB1dCAmJgotCSBjbXAgb3V0cHV0IGV4cGVjdCcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldCBib29sIHZhcmlhYmxlIHdpdGggbm8gdmFsdWUnICcKKwlnaXQgY29uZmlnIC0tYm9vbCBub3ZhbHVlLnZhcmlhYmxlID4gb3V0cHV0ICYmCisJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAorJwogCiBlY2hvIGZhbHNlID4gZXhwZWN0CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldCBib29sIHZhcmlhYmxlIHdpdGggZW1wdHkgdmFsdWUnIFwKLQknZ2l0IGNvbmZpZyAtLWJvb2wgZW1wdHl2YWx1ZS52YXJpYWJsZSA+IG91dHB1dCAmJgotCSBjbXAgb3V0cHV0IGV4cGVjdCcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldCBib29sIHZhcmlhYmxlIHdpdGggZW1wdHkgdmFsdWUnICcKKwlnaXQgY29uZmlnIC0tYm9vbCBlbXB0eXZhbHVlLnZhcmlhYmxlID4gb3V0cHV0ICYmCisJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAorJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdubyBhcmd1bWVudHMsIGJ1dCBubyBjcmFzaCcgJwogCXRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgPm91dHB1dCAyPiYxICYmCi0JZ3JlcCB1c2FnZSBvdXRwdXQKKwl0ZXN0X2kxOG5ncmVwIHVzYWdlIG91dHB1dAogJwogCiBjYXQgPiAuZ2l0L2NvbmZpZyA8PCBFT0YKQEAgLTQyNyw4ICs0NjEsOSBAQAogCXRlc3RfY21wIGV4cGVjdCAuZ2l0L2NvbmZpZwogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdhbHRlcm5hdGl2ZSBHSVRfQ09ORklHIChub24tZXhpc3RpbmcgZmlsZSBzaG91bGQgZmFpbCknIFwKLQkndGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyAtLWZpbGUgbm9uLWV4aXN0aW5nLWNvbmZpZyAtbCcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsdGVybmF0aXZlIEdJVF9DT05GSUcgKG5vbi1leGlzdGluZyBmaWxlIHNob3VsZCBmYWlsKScgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgLS1maWxlIG5vbi1leGlzdGluZy1jb25maWcgLWwKKycKIAogY2F0ID4gb3RoZXItY29uZmlnIDw8IEVPRgogW2Vpbl0KQEAgLTQ0NCw4ICs0NzksMTAgQEAKIAl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0CiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsdGVybmF0aXZlIEdJVF9DT05GSUcgKC0tZmlsZSknIFwKLQknZ2l0IGNvbmZpZyAtLWZpbGUgb3RoZXItY29uZmlnIC1sID4gb3V0cHV0ICYmIGNtcCBvdXRwdXQgZXhwZWN0JwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYWx0ZXJuYXRpdmUgR0lUX0NPTkZJRyAoLS1maWxlKScgJworCWdpdCBjb25maWcgLS1maWxlIG90aGVyLWNvbmZpZyAtbCA+IG91dHB1dCAmJgorCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKKycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmVmZXIgY29uZmlnIGZyb20gc3ViZGlyZWN0b3J5JyAnCiAJbWtkaXIgeCAmJgpAQCAtNDg5LDggKzUyNiw5IEBACiB3ZWlyZAogRU9GCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlbmFtZSBzZWN0aW9uIiBcCi0JImdpdCBjb25maWcgLS1yZW5hbWUtc2VjdGlvbiBicmFuY2guZWlucyBicmFuY2guendlaSIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbmFtZSBzZWN0aW9uJyAnCisJZ2l0IGNvbmZpZyAtLXJlbmFtZS1zZWN0aW9uIGJyYW5jaC5laW5zIGJyYW5jaC56d2VpCisnCiAKIGNhdCA+IGV4cGVjdCA8PCBFT0YKICMgSGFsbG8KQEAgLTUwMywxNyArNTQxLDIyIEBACiB3ZWlyZAogRU9GCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlbmFtZSBzdWNjZWVkZWQiICJ0ZXN0X2NtcCBleHBlY3QgLmdpdC9jb25maWciCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW5hbWUgc3VjY2VlZGVkJyAnCisJdGVzdF9jbXAgZXhwZWN0IC5naXQvY29uZmlnCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlbmFtZSBub24tZXhpc3Rpbmcgc2VjdGlvbiIgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVuYW1lIG5vbi1leGlzdGluZyBzZWN0aW9uJyAnCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyAtLXJlbmFtZS1zZWN0aW9uIFwKIAkJYnJhbmNoLiJ3b3JsZCBkb21pbmF0aW9uIiBicmFuY2guZHJlaQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICJyZW5hbWUgc3VjY2VlZGVkIiAidGVzdF9jbXAgZXhwZWN0IC5naXQvY29uZmlnIgordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVuYW1lIHN1Y2NlZWRlZCcgJworCXRlc3RfY21wIGV4cGVjdCAuZ2l0L2NvbmZpZworJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICJyZW5hbWUgYW5vdGhlciBzZWN0aW9uIiBcCi0JJ2dpdCBjb25maWcgLS1yZW5hbWUtc2VjdGlvbiBicmFuY2guIjEgMjM0IGJsYWJsL2EiIGJyYW5jaC5kcmVpJwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVuYW1lIGFub3RoZXIgc2VjdGlvbicgJworCWdpdCBjb25maWcgLS1yZW5hbWUtc2VjdGlvbiBicmFuY2guIjEgMjM0IGJsYWJsL2EiIGJyYW5jaC5kcmVpCisnCiAKIGNhdCA+IGV4cGVjdCA8PCBFT0YKICMgSGFsbG8KQEAgLTUyNiwxNCArNTY5LDE3IEBACiB3ZWlyZAogRU9GCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlbmFtZSBzdWNjZWVkZWQiICJ0ZXN0X2NtcCBleHBlY3QgLmdpdC9jb25maWciCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW5hbWUgc3VjY2VlZGVkJyAnCisJdGVzdF9jbXAgZXhwZWN0IC5naXQvY29uZmlnCisnCiAKIGNhdCA+PiAuZ2l0L2NvbmZpZyA8PCBFT0YKIFticmFuY2ggInZpZXIiXSB6ID0gMQogRU9GCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlbmFtZSBhIHNlY3Rpb24gd2l0aCBhIHZhciBvbiB0aGUgc2FtZSBsaW5lIiBcCi0JJ2dpdCBjb25maWcgLS1yZW5hbWUtc2VjdGlvbiBicmFuY2gudmllciBicmFuY2guendlaScKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbmFtZSBhIHNlY3Rpb24gd2l0aCBhIHZhciBvbiB0aGUgc2FtZSBsaW5lJyAnCisJZ2l0IGNvbmZpZyAtLXJlbmFtZS1zZWN0aW9uIGJyYW5jaC52aWVyIGJyYW5jaC56d2VpCisnCiAKIGNhdCA+IGV4cGVjdCA8PCBFT0YKICMgSGFsbG8KQEAgLTU0OCw3ICs1OTQsOSBAQAogCXogPSAxCiBFT0YKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAicmVuYW1lIHN1Y2NlZWRlZCIgInRlc3RfY21wIGV4cGVjdCAuZ2l0L2NvbmZpZyIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbmFtZSBzdWNjZWVkZWQnICcKKwl0ZXN0X2NtcCBleHBlY3QgLmdpdC9jb25maWcKKycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmVuYW1pbmcgZW1wdHkgc2VjdGlvbiBuYW1lIGlzIHJlamVjdGVkJyAnCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyAtLXJlbmFtZS1zZWN0aW9uIGJyYW5jaC56d2VpICIiCkBAIC01NjIsNyArNjEwLDkgQEAKICAgW2JyYW5jaCAiendlaSJdIGEgPSAxIFticmFuY2ggInZpZXIiXQogRU9GCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlbW92ZSBzZWN0aW9uIiAiZ2l0IGNvbmZpZyAtLXJlbW92ZS1zZWN0aW9uIGJyYW5jaC56d2VpIgordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVtb3ZlIHNlY3Rpb24nICcKKwlnaXQgY29uZmlnIC0tcmVtb3ZlLXNlY3Rpb24gYnJhbmNoLnp3ZWkKKycKIAogY2F0ID4gZXhwZWN0IDw8IEVPRgogIyBIYWxsbwpAQCAtNTcxLDggKzYyMSw5IEBACiB3ZWlyZAogRU9GCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInNlY3Rpb24gd2FzIHJlbW92ZWQgcHJvcGVybHkiIFwKLQkidGVzdF9jbXAgZXhwZWN0IC5naXQvY29uZmlnIgordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2VjdGlvbiB3YXMgcmVtb3ZlZCBwcm9wZXJseScgJworCXRlc3RfY21wIGV4cGVjdCAuZ2l0L2NvbmZpZworJwogCiBjYXQgPiBleHBlY3QgPDwgRU9GCiBbZ2l0Y3ZzXQpAQCAtNTgzLDcgKzYzNCw2IEBACiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2VjdGlvbiBlbmRpbmcnICcKLQogCXJtIC1mIC5naXQvY29uZmlnICYmCiAJZ2l0IGNvbmZpZyBnaXRjdnMuZW5hYmxlZCB0cnVlICYmCiAJZ2l0IGNvbmZpZyBnaXRjdnMuZXh0LmRibmFtZSAlR2dpdGN2czEuJWEuJW0uc3FsaXRlICYmCkBAIC01OTMsMzAgKzY0MywyNSBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIG51bWJlcnMgJwotCiAJZ2l0IGNvbmZpZyBraWxvLmdyYW0gMWsgJiYKIAlnaXQgY29uZmlnIG1lZ2EudG9uIDFtICYmCi0Jaz0kKGdpdCBjb25maWcgLS1pbnQgLS1nZXQga2lsby5ncmFtKSAmJgotCXRlc3QgejEwMjQgPSAieiRrIiAmJgotCW09JChnaXQgY29uZmlnIC0taW50IC0tZ2V0IG1lZ2EudG9uKSAmJgotCXRlc3QgejEwNDg1NzYgPSAieiRtIgorCWVjaG8gMTAyNCA+ZXhwZWN0ICYmCisJZWNobyAxMDQ4NTc2ID4+ZXhwZWN0ICYmCisJZ2l0IGNvbmZpZyAtLWludCAtLWdldCBraWxvLmdyYW0gPmFjdHVhbCAmJgorCWdpdCBjb25maWcgLS1pbnQgLS1nZXQgbWVnYS50b24gPj5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKLWNhdCA+IGV4cGVjdCA8PEVPRgotZmF0YWw6IGJhZCBjb25maWcgdmFsdWUgZm9yICdhbmludmFsaWQudW5pdCcgaW4gLmdpdC9jb25maWcKLUVPRgotCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbnZhbGlkIHVuaXQnICcKLQogCWdpdCBjb25maWcgYW5pbnZhbGlkLnVuaXQgIjFhdXRvIiAmJgotCXM9JChnaXQgY29uZmlnIGFuaW52YWxpZC51bml0KSAmJgotCXRlc3QgInoxYXV0byIgPSAieiRzIiAmJgotCWlmIGdpdCBjb25maWcgLS1pbnQgLS1nZXQgYW5pbnZhbGlkLnVuaXQgMj5hY3R1YWwKLQl0aGVuCi0JCWVjaG8gY29uZmlnIHNob3VsZCBoYXZlIGZhaWxlZAotCQlmYWxzZQotCWZpICYmCi0JY21wIGFjdHVhbCBleHBlY3QKKwllY2hvIDFhdXRvID5leHBlY3QgJiYKKwlnaXQgY29uZmlnIGFuaW52YWxpZC51bml0ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisJY2F0ID4gZXhwZWN0IDw8LVxFT0YKKwlmYXRhbDogYmFkIGNvbmZpZyB2YWx1ZSBmb3IgJ1wnJ2FuaW52YWxpZC51bml0J1wnJyBpbiAuZ2l0L2NvbmZpZworCUVPRgorCXRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgLS1pbnQgLS1nZXQgYW5pbnZhbGlkLnVuaXQgMj5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBhY3R1YWwgZXhwZWN0CiAnCiAKIGNhdCA+IGV4cGVjdCA8PCBFT0YKQEAgLTY0Niw3ICs2OTEsNyBAQAogCSAgICBnaXQgY29uZmlnIC0tYm9vbCAtLWdldCBib29sLnRydWUkaSA+PnJlc3VsdAogCSAgICBnaXQgY29uZmlnIC0tYm9vbCAtLWdldCBib29sLmZhbHNlJGkgPj5yZXN1bHQKICAgICAgICAgZG9uZSAmJgotCWNtcCBleHBlY3QgcmVzdWx0JworCXRlc3RfY21wIGV4cGVjdCByZXN1bHQnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ludmFsaWQgYm9vbCAoLS1nZXQpJyAnCiAKQEAgLTY4MCw3ICs3MjUsNyBAQAogCWdpdCBjb25maWcgLS1ib29sIGJvb2wuZmFsc2UyICIiICYmCiAJZ2l0IGNvbmZpZyAtLWJvb2wgYm9vbC5mYWxzZTMgbk8gJiYKIAlnaXQgY29uZmlnIC0tYm9vbCBib29sLmZhbHNlNCBGQUxTRSAmJgotCWNtcCBleHBlY3QgLmdpdC9jb25maWcnCisJdGVzdF9jbXAgZXhwZWN0IC5naXQvY29uZmlnJwogCiBjYXQgPiBleHBlY3QgPDxcRU9GCiBbaW50XQpAQCAtNjk1LDM5ICs3NDAsMzcgQEAKIAlnaXQgY29uZmlnIC0taW50IGludC52YWwxIDAxICYmCiAJZ2l0IGNvbmZpZyAtLWludCBpbnQudmFsMiAtMSAmJgogCWdpdCBjb25maWcgLS1pbnQgaW50LnZhbDMgNW0gJiYKLQljbXAgZXhwZWN0IC5naXQvY29uZmlnJworCXRlc3RfY21wIGV4cGVjdCAuZ2l0L2NvbmZpZworJwogCi1jYXQgPmV4cGVjdCA8PFxFT0YKLVtib29sXQotCXRydWUxID0gdHJ1ZQordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2V0IC0tYm9vbC1vci1pbnQnICcKKwljYXQgPi5naXQvY29uZmlnIDw8LVxFT0YgJiYKKwlbYm9vbF0KKwl0cnVlMQogCXRydWUyID0gdHJ1ZQotCWZhbHNlMSA9IGZhbHNlCi0JZmFsc2UyID0gZmFsc2UKLVtpbnRdCisJZmFsc2UgPSBmYWxzZQorCVtpbnRdCiAJaW50MSA9IDAKIAlpbnQyID0gMQogCWludDMgPSAtMQotRU9GCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldCAtLWJvb2wtb3ItaW50JyAnCi0Jcm0gLWYgLmdpdC9jb25maWcgJiYKLQkoCi0JCWVjaG8gIltib29sXSIKLQkJZWNobyB0cnVlMQotCQllY2hvIHRydWUyID0gdHJ1ZQotCQllY2hvIGZhbHNlID0gZmFsc2UKLQkJZWNobyAiW2ludF0iCi0JCWVjaG8gaW50MSA9IDAKLQkJZWNobyBpbnQyID0gMQotCQllY2hvIGludDMgPSAtMQotCSkgPj4uZ2l0L2NvbmZpZyAmJgotCXRlc3QgJChnaXQgY29uZmlnIC0tYm9vbC1vci1pbnQgYm9vbC50cnVlMSkgPSB0cnVlICYmCi0JdGVzdCAkKGdpdCBjb25maWcgLS1ib29sLW9yLWludCBib29sLnRydWUyKSA9IHRydWUgJiYKLQl0ZXN0ICQoZ2l0IGNvbmZpZyAtLWJvb2wtb3ItaW50IGJvb2wuZmFsc2UpID0gZmFsc2UgJiYKLQl0ZXN0ICQoZ2l0IGNvbmZpZyAtLWJvb2wtb3ItaW50IGludC5pbnQxKSA9IDAgJiYKLQl0ZXN0ICQoZ2l0IGNvbmZpZyAtLWJvb2wtb3ItaW50IGludC5pbnQyKSA9IDEgJiYKLQl0ZXN0ICQoZ2l0IGNvbmZpZyAtLWJvb2wtb3ItaW50IGludC5pbnQzKSA9IC0xCi0KKwlFT0YKKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJdHJ1ZQorCXRydWUKKwlmYWxzZQorCTAKKwkxCisJLTEKKwlFT0YKKwl7CisJCWdpdCBjb25maWcgLS1ib29sLW9yLWludCBib29sLnRydWUxICYmCisJCWdpdCBjb25maWcgLS1ib29sLW9yLWludCBib29sLnRydWUyICYmCisJCWdpdCBjb25maWcgLS1ib29sLW9yLWludCBib29sLmZhbHNlICYmCisJCWdpdCBjb25maWcgLS1ib29sLW9yLWludCBpbnQuaW50MSAmJgorCQlnaXQgY29uZmlnIC0tYm9vbC1vci1pbnQgaW50LmludDIgJiYKKwkJZ2l0IGNvbmZpZyAtLWJvb2wtb3ItaW50IGludC5pbnQzCisJfSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCiBjYXQgPmV4cGVjdCA8PFxFT0YKQEAgLTgwMyw2ICs4NDYsMTEgQEAKIAl0ZXN0X2NtcCBleHBlY3QgcmVzdWx0CiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dldCAtLXBhdGggYmFyZnMgb24gYm9vbGVhbiB2YXJpYWJsZScgJworCWVjaG8gIltwYXRoXWJvb2wiID4uZ2l0L2NvbmZpZyAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgLS1nZXQgLS1wYXRoIHBhdGguYm9vbAorJworCiBjYXQgPiBleHBlY3QgPDwgRU9GCiBbcXVvdGVdCiAJbGVhZGluZyA9ICIgdGVzdCIKQEAgLTg0NCw3ICs4OTIsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd2YWx1ZSBjb250aW51ZWQgb24gbmV4dCBsaW5lJyAnCiAJZ2l0IGNvbmZpZyAtLWxpc3QgPiByZXN1bHQgJiYKLQljbXAgcmVzdWx0IGV4cGVjdAorCXRlc3RfY21wIHJlc3VsdCBleHBlY3QKICcKIAogY2F0ID4gLmdpdC9jb25maWcgPDxcRU9GCkBAIC04ODAsMTEgKzkyOCwxMiBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbm5lciB3aGl0ZXNwYWNlIGtlcHQgdmVyYmF0aW0nICcKIAlnaXQgY29uZmlnIHNlY3Rpb24udmFsICJmb28gCSAgYmFyIiAmJgotCXRlc3QgInokKGdpdCBjb25maWcgc2VjdGlvbi52YWwpIiA9ICJ6Zm9vIAkgIGJhciIKKwllY2hvICJmb28gCSAgYmFyIiA+ZXhwZWN0ICYmCisJZ2l0IGNvbmZpZyBzZWN0aW9uLnZhbCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdzeW1saW5rZWQgY29uZmlndXJhdGlvbicgJwotCiAJbG4gLXMgbm90eWV0IG15Y29uZmlnICYmCiAJR0lUX0NPTkZJRz1teWNvbmZpZyBnaXQgY29uZmlnIHRlc3QuZnJvdHogbml0Zm9sICYmCiAJdGVzdCAtaCBteWNvbmZpZyAmJgpAQCAtODkzLDkgKzk0MiwxNSBAQAogCUdJVF9DT05GSUc9bXljb25maWcgZ2l0IGNvbmZpZyB0ZXN0Lnh5enp5IHJlenJvdiAmJgogCXRlc3QgLWggbXljb25maWcgJiYKIAl0ZXN0IC1mIG5vdHlldCAmJgotCXRlc3QgInokKEdJVF9DT05GSUc9bm90eWV0IGdpdCBjb25maWcgdGVzdC5mcm90eikiID0gem5pdGZvbCAmJgotCXRlc3QgInokKEdJVF9DT05GSUc9bm90eWV0IGdpdCBjb25maWcgdGVzdC54eXp6eSkiID0genJlenJvdgotCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCW5pdGZvbAorCXJlenJvdgorCUVPRgorCXsKKwkJR0lUX0NPTkZJRz1ub3R5ZXQgZ2l0IGNvbmZpZyB0ZXN0LmZyb3R6ICYmCisJCUdJVF9DT05GSUc9bm90eWV0IGdpdCBjb25maWcgdGVzdC54eXp6eQorCX0gPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbm9uZXhpc3RlbnQgY29uZmlndXJhdGlvbicgJwpAQCAtOTI3LDEyICs5ODIsMjAgQEAKIAlnaXQgY29tbWl0IC1tICdpbml0aWFsIGNvbW1pdCcgJiYKIAlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICdlY2hvIFwiJyAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSBtYXN0ZXIKLQkiCisiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCAtYyAia2V5PXZhbHVlIiBzdXBwb3J0JyAnCi0JdGVzdCAieiQoZ2l0IC1jIGNvcmUubmFtZT12YWx1ZSBjb25maWcgY29yZS5uYW1lKSIgPSB6dmFsdWUgJiYKLQl0ZXN0ICJ6JChnaXQgLWMgZm9vLkNhbWVsQ2FzZT12YWx1ZSBjb25maWcgZm9vLmNhbWVsY2FzZSkiID0genZhbHVlICYmCi0JdGVzdCAieiQoZ2l0IC1jIGZvby5mbGFnIGNvbmZpZyAtLWJvb2wgZm9vLmZsYWcpIiA9IHp0cnVlICYmCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCXZhbHVlCisJdmFsdWUKKwl0cnVlCisJRU9GCisJeworCQlnaXQgLWMgY29yZS5uYW1lPXZhbHVlIGNvbmZpZyBjb3JlLm5hbWUgJiYKKwkJZ2l0IC1jIGZvby5DYW1lbENhc2U9dmFsdWUgY29uZmlnIGZvby5jYW1lbGNhc2UgJiYKKwkJZ2l0IC1jIGZvby5mbGFnIGNvbmZpZyAtLWJvb2wgZm9vLmZsYWcKKwl9ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IC1jIG5hbWU9dmFsdWUgY29uZmlnIGNvcmUubmFtZQogJwogCkBAIC0xMDI0LDQgKzEwODcsMzkgQEAKIAlncmVwICIgbGluZSAzICIgZXJyb3IKICcKIAorIyBnb29kIHNlY3Rpb24gaHlnaWVuZQordGVzdF9leHBlY3RfZmFpbHVyZSAndW5zZXR0aW5nIHRoZSBsYXN0IGtleSBpbiBhIHNlY3Rpb24gcmVtb3ZlcyBoZWFkZXInICcKKwljYXQgPi5naXQvY29uZmlnIDw8LVxFT0YgJiYKKwkjIHNvbWUgZ2VuZXJpYyBjb21tZW50IG9uIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXRzZWxmCisJIyBhIGNvbW1lbnQgc3BlY2lmaWMgdG8gdGhpcyAic2VjdGlvbiIgc2VjdGlvbi4KKwlbc2VjdGlvbl0KKwkjIHNvbWUgaW50ZXJ2ZW5pbmcgbGluZXMKKwkjIHRoYXQgc2hvdWxkIGFsc28gYmUgZHJvcHBlZAorCisJa2V5ID0gdmFsdWUKKwkjIHBsZWFzZSBiZSBjYXJlZnVsIHdoZW4geW91IHVwZGF0ZSB0aGUgYWJvdmUgdmFyaWFibGUKKwlFT0YKKworCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwkjIHNvbWUgZ2VuZXJpYyBjb21tZW50IG9uIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXRzZWxmCisJRU9GCisKKwlnaXQgY29uZmlnIC0tdW5zZXQgc2VjdGlvbi5rZXkgJiYKKwl0ZXN0X2NtcCBleHBlY3QgLmdpdC9jb25maWcKKycKKwordGVzdF9leHBlY3RfZmFpbHVyZSAnYWRkaW5nIGEga2V5IGludG8gYW4gZW1wdHkgc2VjdGlvbiByZXVzZXMgaGVhZGVyJyAnCisJY2F0ID4uZ2l0L2NvbmZpZyA8PC1cRU9GICYmCisJW3NlY3Rpb25dCisJRU9GCisKKwlxX3RvX3RhYiA+ZXhwZWN0IDw8LVxFT0YgJiYKKwlbc2VjdGlvbl0KKwlRa2V5ID0gdmFsdWUKKwlFT0YKKworCWdpdCBjb25maWcgc2VjdGlvbi5rZXkgdmFsdWUKKwl0ZXN0X2NtcCBleHBlY3QgLmdpdC9jb25maWcKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QxMzA0LWRlZmF1bHQtYWNsLnNoIGIvdC90MTMwNC1kZWZhdWx0LWFjbC5zaAppbmRleCAyYjk2MmNmLi43OTA0NWFiIDEwMDc1NQotLS0gYS90L3QxMzA0LWRlZmF1bHQtYWNsLnNoCisrKyBiL3QvdDEzMDQtZGVmYXVsdC1hY2wuc2gKQEAgLTE0LDE2ICsxNCwxNSBAQAogIyBXZSBuZWVkIGFuIGFyYml0cmFyeSBvdGhlciB1c2VyIGdpdmUgcGVybWlzc2lvbiB0byB1c2luZyBBQ0xzLiByb290CiAjIGlzIGEgZ29vZCBjYW5kaWRhdGU6IGV4aXN0cyBvbiBhbGwgdW5pY2VzLCBhbmQgaXQgaGFzIHBlcm1pc3Npb24KICMgYW55d2F5LCBzbyB3ZSBkb24ndCBjcmVhdGUgYSBzZWN1cml0eSBob2xlIHJ1bm5pbmcgdGhlIHRlc3RzdWl0ZS4KLQotc2V0ZmFjbF9vdXQ9IiQoc2V0ZmFjbCAtbSB1OnJvb3Q6cnd4IC4gMj4mMSkiCi1zZXRmYWNsX3JldD0kPwotCi1pZiB0ZXN0ICRzZXRmYWNsX3JldCAhPSAwCi10aGVuCi0Jc2F5ICJVbmFibGUgdG8gdXNlIHNldGZhY2wgKG91dHB1dDogJyRzZXRmYWNsX291dCc7IHJldHVybiBjb2RlOiAnJHNldGZhY2xfcmV0JykiCi1lbHNlCi0JdGVzdF9zZXRfcHJlcmVxIFNFVEZBQ0wKLWZpCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja2luZyBmb3IgYSB3b3JraW5nIGFjbCBzZXR1cCcgJworCWlmIHNldGZhY2wgLW0gZDptOnJ3eCAtbSB1OnJvb3Q6cnd4IC4gJiYKKwkgICBnZXRmYWNsIC4gfCBncmVwIHVzZXI6cm9vdDpyd3ggJiYKKwkgICB0b3VjaCBzaG91bGQtaGF2ZS1yZWFkYWJsZS1hY2wgJiYKKwkgICBnZXRmYWNsIHNob3VsZC1oYXZlLXJlYWRhYmxlLWFjbCB8IGVncmVwICJtYXNrOjo/cnctIgorCXRoZW4KKwkJdGVzdF9zZXRfcHJlcmVxIFNFVEZBQ0wKKwlmaQorJwogCiBpZiB0ZXN0IC16ICIkTE9HTkFNRSIKIHRoZW4KZGlmZiAtLWdpdCBhL3QvdDEzMDYteGRnLWZpbGVzLnNoIGIvdC90MTMwNi14ZGctZmlsZXMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGIxNGFiMQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDEzMDYteGRnLWZpbGVzLnNoCkBAIC0wLDAgKzEsMTk3IEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDEyIFZhbGVudGluIER1cGVycmF5LCBMdWNpZW4gS29uZywgRnJhbmNrIEpvbmFzLAorIwkJICAgICBUaG9tYXMgTmd1eSwgS2hvaSBOZ3V5ZW4KKyMJCSAgICAgR3Jlbm9ibGUgSU5QIEVuc2ltYWcKKyMKKwordGVzdF9kZXNjcmlwdGlvbj0nQ29tcGF0aWJpbGl0eSB3aXRoICRYREdfQ09ORklHX0hPTUUvZ2l0LyBmaWxlcycKKworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYWQgY29uZmlnOiB4ZGcgZmlsZSBleGlzdHMgYW5kIH4vLmdpdGNvbmZpZyBkb2VzbidcJyd0JyAnCisJbWtkaXIgLXAgLmNvbmZpZy9naXQgJiYKKwllY2hvICJbYWxpYXNdIiA+LmNvbmZpZy9naXQvY29uZmlnICYmCisJZWNobyAiCW15YWxpYXMgPSAhZWNobyBpbl9jb25maWciID4+LmNvbmZpZy9naXQvY29uZmlnICYmCisJZWNobyBpbl9jb25maWcgPmV4cGVjdGVkICYmCisJZ2l0IG15YWxpYXMgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYWQgY29uZmlnOiB4ZGcgZmlsZSBleGlzdHMgYW5kIH4vLmdpdGNvbmZpZyBleGlzdHMnICcKKwk+LmdpdGNvbmZpZyAmJgorCWVjaG8gIlthbGlhc10iID4uZ2l0Y29uZmlnICYmCisJZWNobyAiCW15YWxpYXMgPSAhZWNobyBpbl9naXRjb25maWciID4+LmdpdGNvbmZpZyAmJgorCWVjaG8gaW5fZ2l0Y29uZmlnID5leHBlY3RlZCAmJgorCWdpdCBteWFsaWFzID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWFkIHdpdGggLS1nZXQ6IHhkZyBmaWxlIGV4aXN0cyBhbmQgfi8uZ2l0Y29uZmlnIGRvZXNuJ1wnJ3QnICcKKwlybSAuZ2l0Y29uZmlnICYmCisJZWNobyAiW3VzZXJdIiA+LmNvbmZpZy9naXQvY29uZmlnICYmCisJZWNobyAiCW5hbWUgPSByZWFkX2NvbmZpZyIgPj4uY29uZmlnL2dpdC9jb25maWcgJiYKKwllY2hvIHJlYWRfY29uZmlnID5leHBlY3RlZCAmJgorCWdpdCBjb25maWcgLS1nZXQgdXNlci5uYW1lID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnIiRYREdfQ09ORklHX0hPTUUgb3ZlcnJpZGVzICRIT01FLy5jb25maWcvZ2l0JyAnCisJbWtkaXIgLXAgIiRIT01FIi94ZGcvZ2l0ICYmCisJZWNobyAiW3VzZXJdbmFtZSA9IGluX3hkZyIgPiIkSE9NRSIveGRnL2dpdC9jb25maWcgJiYKKwllY2hvIGluX3hkZyA+ZXhwZWN0ZWQgJiYKKwlYREdfQ09ORklHX0hPTUU9IiRIT01FIi94ZGcgZ2l0IGNvbmZpZyAtLWdldC1hbGwgdXNlci5uYW1lID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVhZCB3aXRoIC0tZ2V0OiB4ZGcgZmlsZSBleGlzdHMgYW5kIH4vLmdpdGNvbmZpZyBleGlzdHMnICcKKwk+LmdpdGNvbmZpZyAmJgorCWVjaG8gIlt1c2VyXSIgPi5naXRjb25maWcgJiYKKwllY2hvICIJbmFtZSA9IHJlYWRfZ2l0Y29uZmlnIiA+Pi5naXRjb25maWcgJiYKKwllY2hvIHJlYWRfZ2l0Y29uZmlnID5leHBlY3RlZCAmJgorCWdpdCBjb25maWcgLS1nZXQgdXNlci5uYW1lID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWFkIHdpdGggLS1saXN0OiB4ZGcgZmlsZSBleGlzdHMgYW5kIH4vLmdpdGNvbmZpZyBkb2VzbidcJyd0JyAnCisJcm0gLmdpdGNvbmZpZyAmJgorCWVjaG8gdXNlci5uYW1lPXJlYWRfY29uZmlnID5leHBlY3RlZCAmJgorCWdpdCBjb25maWcgLS1nbG9iYWwgLS1saXN0ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWFkIHdpdGggLS1saXN0OiB4ZGcgZmlsZSBleGlzdHMgYW5kIH4vLmdpdGNvbmZpZyBleGlzdHMnICcKKwk+LmdpdGNvbmZpZyAmJgorCWVjaG8gIlt1c2VyXSIgPi5naXRjb25maWcgJiYKKwllY2hvICIJbmFtZSA9IHJlYWRfZ2l0Y29uZmlnIiA+Pi5naXRjb25maWcgJiYKKwllY2hvIHVzZXIubmFtZT1yZWFkX2dpdGNvbmZpZyA+ZXhwZWN0ZWQgJiYKKwlnaXQgY29uZmlnIC0tZ2xvYmFsIC0tbGlzdCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnU2V0dXAnICcKKwlnaXQgaW5pdCBnaXQgJiYKKwljZCBnaXQgJiYKKwllY2hvIGZvbyA+dG9fYmVfZXhjbHVkZWQKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdFeGNsdXNpb24gb2YgYSBmaWxlIGluIHRoZSBYREcgaWdub3JlIGZpbGUnICcKKwlta2RpciAtcCAiJEhPTUUiLy5jb25maWcvZ2l0LyAmJgorCWVjaG8gdG9fYmVfZXhjbHVkZWQgPiIkSE9NRSIvLmNvbmZpZy9naXQvaWdub3JlICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFkZCB0b19iZV9leGNsdWRlZAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICckWERHX0NPTkZJR19IT01FIG92ZXJyaWRlcyAkSE9NRS8uY29uZmlnL2dpdC9pZ25vcmUnICcKKwlta2RpciAtcCAiJEhPTUUiL3hkZy9naXQgJiYKKwllY2hvIGNvbnRlbnQgPmV4Y2x1ZGVkX2J5X3hkZ19vbmx5ICYmCisJZWNobyBleGNsdWRlZF9ieV94ZGdfb25seSA+IiRIT01FIi94ZGcvZ2l0L2lnbm9yZSAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYWQtdHJlZSAtLWVtcHR5IiAmJgorCShYREdfQ09ORklHX0hPTUU9IiRIT01FL3hkZyIgJiYKKwkgZXhwb3J0IFhER19DT05GSUdfSE9NRSAmJgorCSBnaXQgYWRkIHRvX2JlX2V4Y2x1ZGVkICYmCisJIHRlc3RfbXVzdF9mYWlsIGdpdCBhZGQgZXhjbHVkZWRfYnlfeGRnX29ubHkKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0V4Y2x1c2lvbiBpbiBib3RoIFhERyBhbmQgbG9jYWwgaWdub3JlIGZpbGVzJyAnCisJZWNobyB0b19iZV9leGNsdWRlZCA+LmdpdGlnbm9yZSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBhZGQgdG9fYmVfZXhjbHVkZWQKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdFeGNsdXNpb24gaW4gYSBub24tWERHIGdsb2JhbCBpZ25vcmUgZmlsZScgJworCXJtIC5naXRpZ25vcmUgJiYKKwllY2hvID4iJEhPTUUiLy5jb25maWcvZ2l0L2lnbm9yZSAmJgorCWVjaG8gdG9fYmVfZXhjbHVkZWQgPiIkSE9NRSIvbXlfZ2l0aWdub3JlICYmCisJZ2l0IGNvbmZpZyBjb3JlLmV4Y2x1ZGVzZmlsZSAiJEhPTUUiL215X2dpdGlnbm9yZSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBhZGQgdG9fYmVfZXhjbHVkZWQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnQ2hlY2tpbmcgWERHIGlnbm9yZSBmaWxlIHdoZW4gSE9NRSBpcyB1bnNldCcgJworCT5leHBlY3RlZCAmJgorCShzYW5lX3Vuc2V0IEhPTUUgJiYKKwkgZ2l0IGNvbmZpZyAtLXVuc2V0IGNvcmUuZXhjbHVkZXNmaWxlICYmCisJIGdpdCBscy1maWxlcyAtLWV4Y2x1ZGUtc3RhbmRhcmQgLS1pZ25vcmVkID5hY3R1YWwpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0NoZWNraW5nIGF0dHJpYnV0ZXMgaW4gdGhlIFhERyBhdHRyaWJ1dGVzIGZpbGUnICcKKwllY2hvIGZvbyA+ZiAmJgorCWdpdCBjaGVjay1hdHRyIC1hIGYgPmFjdHVhbCAmJgorCXRlc3RfbGluZV9jb3VudCAtZXEgMCBhY3R1YWwgJiYKKwllY2hvICJmIGF0dHJfZiIgPiIkSE9NRSIvLmNvbmZpZy9naXQvYXR0cmlidXRlcyAmJgorCWVjaG8gImY6IGF0dHJfZjogc2V0IiA+ZXhwZWN0ZWQgJiYKKwlnaXQgY2hlY2stYXR0ciAtYSBmID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnQ2hlY2tpbmcgWERHIGF0dHJpYnV0ZXMgd2hlbiBIT01FIGlzIHVuc2V0JyAnCisJPmV4cGVjdGVkICYmCisJKHNhbmVfdW5zZXQgSE9NRSAmJgorCSBnaXQgY2hlY2stYXR0ciAtYSBmID5hY3R1YWwpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyRYREdfQ09ORklHX0hPTUUgb3ZlcnJpZGVzICRIT01FLy5jb25maWcvZ2l0L2F0dHJpYnV0ZXMnICcKKwlta2RpciAtcCAiJEhPTUUiL3hkZy9naXQgJiYKKwllY2hvICJmIGF0dHJfZj14ZGciID4iJEhPTUUiL3hkZy9naXQvYXR0cmlidXRlcyAmJgorCWVjaG8gImY6IGF0dHJfZjogeGRnIiA+ZXhwZWN0ZWQgJiYKKwlYREdfQ09ORklHX0hPTUU9IiRIT01FL3hkZyIgZ2l0IGNoZWNrLWF0dHIgLWEgZiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0NoZWNraW5nIGF0dHJpYnV0ZXMgaW4gYm90aCBYREcgYW5kIGxvY2FsIGF0dHJpYnV0ZXMgZmlsZXMnICcKKwllY2hvICJmIC1hdHRyX2YiID4uZ2l0YXR0cmlidXRlcyAmJgorCWVjaG8gImY6IGF0dHJfZjogdW5zZXQiID5leHBlY3RlZCAmJgorCWdpdCBjaGVjay1hdHRyIC1hIGYgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0NoZWNraW5nIGF0dHJpYnV0ZXMgaW4gYSBub24tWERHIGdsb2JhbCBhdHRyaWJ1dGVzIGZpbGUnICcKKwl0ZXN0X21pZ2h0X2ZhaWwgcm0gLmdpdGF0dHJpYnV0ZXMgJiYKKwllY2hvICJmIGF0dHJfZj10ZXN0IiA+IiRIT01FIi9teV9naXRhdHRyaWJ1dGVzICYmCisJZ2l0IGNvbmZpZyBjb3JlLmF0dHJpYnV0ZXNmaWxlICIkSE9NRSIvbXlfZ2l0YXR0cmlidXRlcyAmJgorCWVjaG8gImY6IGF0dHJfZjogdGVzdCIgPmV4cGVjdGVkICYmCisJZ2l0IGNoZWNrLWF0dHIgLWEgZiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnd3JpdGU6IHhkZyBmaWxlIGV4aXN0cyBhbmQgfi8uZ2l0Y29uZmlnIGRvZXNuJ1wnJ3QnICcKKwlta2RpciAtcCAiJEhPTUUiLy5jb25maWcvZ2l0ICYmCisJPiIkSE9NRSIvLmNvbmZpZy9naXQvY29uZmlnICYmCisJdGVzdF9taWdodF9mYWlsIHJtICIkSE9NRSIvLmdpdGNvbmZpZyAmJgorCWdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5uYW1lICJ3cml0ZV9jb25maWciICYmCisJZWNobyAiW3VzZXJdIiA+ZXhwZWN0ZWQgJiYKKwllY2hvICIJbmFtZSA9IHdyaXRlX2NvbmZpZyIgPj5leHBlY3RlZCAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkSE9NRSIvLmNvbmZpZy9naXQvY29uZmlnCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnd3JpdGU6IHhkZyBmaWxlIGV4aXN0cyBhbmQgfi8uZ2l0Y29uZmlnIGV4aXN0cycgJworCT4iJEhPTUUiLy5naXRjb25maWcgJiYKKwlnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIubmFtZSAid3JpdGVfZ2l0Y29uZmlnIiAmJgorCWVjaG8gIlt1c2VyXSIgPmV4cGVjdGVkICYmCisJZWNobyAiCW5hbWUgPSB3cml0ZV9naXRjb25maWciID4+ZXhwZWN0ZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJEhPTUUiLy5naXRjb25maWcKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd3cml0ZTogfi8uY29uZmlnL2dpdC8gZXhpc3RzIGFuZCBjb25maWcgZmlsZSBkb2VzbidcJyd0JyAnCisJdGVzdF9taWdodF9mYWlsIHJtICIkSE9NRSIvLmdpdGNvbmZpZyAmJgorCXRlc3RfbWlnaHRfZmFpbCBybSAiJEhPTUUiLy5jb25maWcvZ2l0L2NvbmZpZyAmJgorCWdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5uYW1lICJ3cml0ZV9naXRjb25maWciICYmCisJZWNobyAiW3VzZXJdIiA+ZXhwZWN0ZWQgJiYKKwllY2hvICIJbmFtZSA9IHdyaXRlX2dpdGNvbmZpZyIgPj5leHBlY3RlZCAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkSE9NRSIvLmdpdGNvbmZpZworJworCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MTQwMC11cGRhdGUtcmVmLnNoIGIvdC90MTQwMC11cGRhdGUtcmVmLnNoCmluZGV4IDRmZDgzYTYuLmU0MTVlZTAgMTAwNzU1Ci0tLSBhL3QvdDE0MDAtdXBkYXRlLXJlZi5zaAorKysgYi90L3QxNDAwLXVwZGF0ZS1yZWYuc2gKQEAgLTc0LDYgKzc0LDI0IEBACiAnCiBybSAtZiAuZ2l0LyRtCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorCSJjcmVhdGUgJG0gKGJ5IEhFQUQpIiBcCisJImdpdCB1cGRhdGUtcmVmIEhFQUQgJEEgJiYKKwkgdGVzdCAkQSInID0gJChjYXQgLmdpdC8nIiRtIicpJwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisJInBhY2sgcmVmcyIgXAorCSJnaXQgcGFjay1yZWZzIC0tYWxsIgordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisJIm1vdmUgJG0gKGJ5IEhFQUQpIiBcCisJImdpdCB1cGRhdGUtcmVmIEhFQUQgJEIgJEEgJiYKKwkgdGVzdCAkQiInID0gJChjYXQgLmdpdC8nIiRtIicpJwordGVzdF9leHBlY3Rfc3VjY2VzcyAiZGVsZXRlICRtIChieSBIRUFEKSBzaG91bGQgcmVtb3ZlIGJvdGggcGFja2VkIGFuZCBsb29zZSAkbSIgJworCWdpdCB1cGRhdGUtcmVmIC1kIEhFQUQgJEIgJiYKKwkhIGdyZXAgIiRtIiAuZ2l0L3BhY2tlZC1yZWZzICYmCisJISB0ZXN0IC1mIC5naXQvJG0KKycKK3JtIC1mIC5naXQvJG0KKwogY3AgLWYgLmdpdC9IRUFEIC5naXQvSEVBRC5vcmlnCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICJkZWxldGUgc3ltcmVmIHdpdGhvdXQgZGVyZWZlcmVuY2UiICcKIAlnaXQgdXBkYXRlLXJlZiAtLW5vLWRlcmVmIC1kIEhFQUQgJiYKZGlmZiAtLWdpdCBhL3QvdDE0MDEtc3ltYm9saWMtcmVmLnNoIGIvdC90MTQwMS1zeW1ib2xpYy1yZWYuc2gKaW5kZXggMmM5NjU1MS4uMzYzNzhiMCAxMDA3NTUKLS0tIGEvdC90MTQwMS1zeW1ib2xpYy1yZWYuc2gKKysrIGIvdC90MTQwMS1zeW1ib2xpYy1yZWYuc2gKQEAgLTMzLDQgKzMzLDM0IEBACiAnCiByZXNldF90b19zYW5lCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N5bWJvbGljLXJlZiBkZWxldGVzIEhFQUQnICcKKwlnaXQgc3ltYm9saWMtcmVmIC1kIEhFQUQgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L3JlZnMvaGVhZHMvZm9vICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9IRUFECisnCityZXNldF90b19zYW5lCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N5bWJvbGljLXJlZiBkZWxldGVzIGRhbmdsaW5nIEhFQUQnICcKKwlnaXQgc3ltYm9saWMtcmVmIEhFQUQgcmVmcy9oZWFkcy9taXNzaW5nICYmCisJZ2l0IHN5bWJvbGljLXJlZiAtZCBIRUFEICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWZzL2hlYWRzL21pc3NpbmcgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L0hFQUQKKycKK3Jlc2V0X3RvX3NhbmUKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3ltYm9saWMtcmVmIGZhaWxzIHRvIGRlbGV0ZSBtaXNzaW5nIEZPTycgJworCWVjaG8gImZhdGFsOiBDYW5ub3QgZGVsZXRlIEZPTywgbm90IGEgc3ltYm9saWMgcmVmIiA+ZXhwZWN0ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN5bWJvbGljLXJlZiAtZCBGT08gPmFjdHVhbCAyPiYxICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworcmVzZXRfdG9fc2FuZQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzeW1ib2xpYy1yZWYgZmFpbHMgdG8gZGVsZXRlIHJlYWwgcmVmJyAnCisJZWNobyAiZmF0YWw6IENhbm5vdCBkZWxldGUgcmVmcy9oZWFkcy9mb28sIG5vdCBhIHN5bWJvbGljIHJlZiIgPmV4cGVjdCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBzeW1ib2xpYy1yZWYgLWQgcmVmcy9oZWFkcy9mb28gPmFjdHVhbCAyPiYxICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgLmdpdC9yZWZzL2hlYWRzL2ZvbyAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKK3Jlc2V0X3RvX3NhbmUKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QxNDAyLWNoZWNrLXJlZi1mb3JtYXQuc2ggYi90L3QxNDAyLWNoZWNrLXJlZi1mb3JtYXQuc2gKaW5kZXggMWFlNGQ4Ny4uMWE1YTVmMyAxMDA3NTUKLS0tIGEvdC90MTQwMi1jaGVjay1yZWYtZm9ybWF0LnNoCisrKyBiL3QvdDE0MDItY2hlY2stcmVmLWZvcm1hdC5zaApAQCAtMTEsNyArMTEsOCBAQAogCQlwcmVyZXE9JDEKIAkJc2hpZnQKIAllc2FjCi0JdGVzdF9leHBlY3Rfc3VjY2VzcyAkcHJlcmVxICJyZWYgbmFtZSAnJDEnIGlzIHZhbGlkJHsyOisgd2l0aCBvcHRpb25zICQyfSIgIgorCWRlc2M9InJlZiBuYW1lICckMScgaXMgdmFsaWQkezI6KyB3aXRoIG9wdGlvbnMgJDJ9IgorCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJHByZXJlcSAiJGRlc2MiICIKIAkJZ2l0IGNoZWNrLXJlZi1mb3JtYXQgJDIgJyQxJwogCSIKIH0KQEAgLTIyLDcgKzIzLDggQEAKIAkJcHJlcmVxPSQxCiAJCXNoaWZ0CiAJZXNhYwotCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJHByZXJlcSAicmVmIG5hbWUgJyQxJyBpcyBpbnZhbGlkJHsyOisgd2l0aCBvcHRpb25zICQyfSIgIgorCWRlc2M9InJlZiBuYW1lICckMScgaXMgaW52YWxpZCR7MjorIHdpdGggb3B0aW9ucyAkMn0iCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAkcHJlcmVxICIkZGVzYyIgIgogCQl0ZXN0X211c3RfZmFpbCBnaXQgY2hlY2stcmVmLWZvcm1hdCAkMiAnJDEnCiAJIgogfQpkaWZmIC0tZ2l0IGEvdC90MTQ1MC1mc2NrLnNoIGIvdC90MTQ1MC1mc2NrLnNoCmluZGV4IDViNzljNTEuLmQ3MzA3MzQgMTAwNzU1Ci0tLSBhL3QvdDE0NTAtZnNjay5zaAorKysgYi90L3QxNDUwLWZzY2suc2gKQEAgLTE3Nyw5ICsxNzcsNyBAQAogCXRlc3Rfd2hlbl9maW5pc2hlZCAicmVtb3ZlX29iamVjdCAkdGFnIiAmJgogCWVjaG8gJHRhZyA+LmdpdC9yZWZzL3RhZ3Mvd3JvbmcgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCB1cGRhdGUtcmVmIC1kIHJlZnMvdGFncy93cm9uZyIgJiYKLQl0ZXN0X211c3RfZmFpbCBnaXQgZnNjayAtLXRhZ3MgMj5vdXQgJiYKLQljYXQgb3V0ICYmCi0JZ3JlcCAiZXJyb3IgaW4gdGFnLipicm9rZW4gbGlua3MiIG91dAorCXRlc3RfbXVzdF9mYWlsIGdpdCBmc2NrIC0tdGFncwogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbmVkIHVwJyAnCkBAIC0yMTMsNCArMjExLDYxIEBACiAJZ3JlcCAtcSAiZXJyb3I6IHNoYTEgbWlzbWF0Y2ggNjNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZiIgb3V0CiAnCiAKK19iej0nXDAnCitfYno1PSIkX2J6JF9ieiRfYnokX2J6JF9ieiIKK19iejIwPSIkX2J6NSRfYno1JF9iejUkX2J6NSIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZnNjayBub3RpY2VzIGJsb2IgZW50cnkgcG9pbnRpbmcgdG8gbnVsbCBzaGExJyAnCisJKGdpdCBpbml0IG51bGwtYmxvYiAmJgorCSBjZCBudWxsLWJsb2IgJiYKKwkgc2hhPSQocHJpbnRmICIxMDA2NDQgZmlsZSRfYnokX2J6MjAiIHwKKwkgICAgICAgZ2l0IGhhc2gtb2JqZWN0IC13IC0tc3RkaW4gLXQgdHJlZSkgJiYKKwkgIGdpdCBmc2NrIDI+b3V0ICYmCisJICBjYXQgb3V0ICYmCisJICBncmVwICJ3YXJuaW5nLipudWxsIHNoYTEiIG91dAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZnNjayBub3RpY2VzIHN1Ym1vZHVsZSBlbnRyeSBwb2ludGluZyB0byBudWxsIHNoYTEnICcKKwkoZ2l0IGluaXQgbnVsbC1jb21taXQgJiYKKwkgY2QgbnVsbC1jb21taXQgJiYKKwkgc2hhPSQocHJpbnRmICIxNjAwMDAgc3VibW9kdWxlJF9ieiRfYnoyMCIgfAorCSAgICAgICBnaXQgaGFzaC1vYmplY3QgLXcgLS1zdGRpbiAtdCB0cmVlKSAmJgorCSAgZ2l0IGZzY2sgMj5vdXQgJiYKKwkgIGNhdCBvdXQgJiYKKwkgIGdyZXAgIndhcm5pbmcuKm51bGwgc2hhMSIgb3V0CisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmc2NrIG5vdGljZXMgIi4iIGFuZCAiLi4iIGluIHRyZWVzJyAnCisJKAorCQlnaXQgaW5pdCBkb3RzICYmCisJCWNkIGRvdHMgJiYKKwkJYmxvYj0kKGVjaG8gZm9vIHwgZ2l0IGhhc2gtb2JqZWN0IC13IC0tc3RkaW4pICYmCisJCXRhYj0kKHByaW50ZiAiXFx0IikgJiYKKwkJZ2l0IG1rdHJlZSA8PC1FT0YgJiYKKwkJMTAwNjQ0IGJsb2IgJGJsb2IkdGFiLgorCQkxMDA2NDQgYmxvYiAkYmxvYiR0YWIuLgorCQlFT0YKKwkJZ2l0IGZzY2sgMj5vdXQgJiYKKwkJY2F0IG91dCAmJgorCQlncmVwICJ3YXJuaW5nLipcXC4iIG91dAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZnNjayBub3RpY2VzICIuZ2l0IiBpbiB0cmVlcycgJworCSgKKwkJZ2l0IGluaXQgZG90Z2l0ICYmCisJCWNkIGRvdGdpdCAmJgorCQlibG9iPSQoZWNobyBmb28gfCBnaXQgaGFzaC1vYmplY3QgLXcgLS1zdGRpbikgJiYKKwkJdGFiPSQocHJpbnRmICJcXHQiKSAmJgorCQlnaXQgbWt0cmVlIDw8LUVPRiAmJgorCQkxMDA2NDQgYmxvYiAkYmxvYiR0YWIuZ2l0CisJCUVPRgorCQlnaXQgZnNjayAyPm91dCAmJgorCQljYXQgb3V0ICYmCisJCWdyZXAgIndhcm5pbmcuKlxcLmdpdCIgb3V0CisJKQorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDE1MDItcmV2LXBhcnNlLXBhcnNlb3B0LnNoIGIvdC90MTUwMi1yZXYtcGFyc2UtcGFyc2VvcHQuc2gKaW5kZXggMWVmZDdmNy4uMTNjODhjOSAxMDA3NTUKLS0tIGEvdC90MTUwMi1yZXYtcGFyc2UtcGFyc2VvcHQuc2gKKysrIGIvdC90MTUwMi1yZXYtcGFyc2UtcGFyc2VvcHQuc2gKQEAgLTQxLDcgKzQxLDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCAtLXBhcnNlb3B0IGhlbHAgb3V0cHV0JyAnCiAJdGVzdF9leHBlY3RfY29kZSAxMjkgZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IC0tIC1oID4gb3V0cHV0IDwgb3B0aW9uc3BlYyAmJgotCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0IG91dHB1dAogJwogCiBjYXQgPiBleHBlY3QgPDxFT0YKZGlmZiAtLWdpdCBhL3QvdDE1MDQtY2VpbGluZy1kaXJzLnNoIGIvdC90MTUwNC1jZWlsaW5nLWRpcnMuc2gKaW5kZXggY2NlODdhNS4uM2Q1MTYxNSAxMDA3NTUKLS0tIGEvdC90MTUwNC1jZWlsaW5nLWRpcnMuc2gKKysrIGIvdC90MTUwNC1jZWlsaW5nLWRpcnMuc2gKQEAgLTQ0LDYgKzQ0LDEwIEBACiBHSVRfQ0VJTElOR19ESVJFQ1RPUklFUz0iJFRSQVNIX1JPT1Qvc3ViLyIKIHRlc3RfcHJlZml4IGNlaWxfYXRfc3ViX3NsYXNoICIiCiAKK2lmIHRlc3RfaGF2ZV9wcmVyZXEgU1lNTElOS1MKK3RoZW4KKwlsbiAtcyBzdWIgdG9wCitmaQogCiBta2RpciAtcCBzdWIvZGlyIHx8IGV4aXQgMQogY2Qgc3ViL2RpciB8fCBleGl0IDEKQEAgLTY4LDYgKzcyLDE5IEBACiBHSVRfQ0VJTElOR19ESVJFQ1RPUklFUz0iJFRSQVNIX1JPT1Qvc3ViLyIKIHRlc3RfZmFpbCBzdWJkaXJfY2VpbF9hdF9zdWJfc2xhc2gKIAoraWYgdGVzdF9oYXZlX3ByZXJlcSBTWU1MSU5LUwordGhlbgorCUdJVF9DRUlMSU5HX0RJUkVDVE9SSUVTPSIkVFJBU0hfUk9PVC90b3AiCisJdGVzdF9mYWlsIHN1YmRpcl9jZWlsX2F0X3RvcAorCUdJVF9DRUlMSU5HX0RJUkVDVE9SSUVTPSIkVFJBU0hfUk9PVC90b3AvIgorCXRlc3RfZmFpbCBzdWJkaXJfY2VpbF9hdF90b3Bfc2xhc2gKKworCUdJVF9DRUlMSU5HX0RJUkVDVE9SSUVTPSI6JFRSQVNIX1JPT1QvdG9wIgorCXRlc3RfcHJlZml4IHN1YmRpcl9jZWlsX2F0X3RvcF9ub19yZXNvbHZlICJzdWIvZGlyLyIKKwlHSVRfQ0VJTElOR19ESVJFQ1RPUklFUz0iOiRUUkFTSF9ST09UL3RvcC8iCisJdGVzdF9wcmVmaXggc3ViZGlyX2NlaWxfYXRfdG9wX3NsYXNoX25vX3Jlc29sdmUgInN1Yi9kaXIvIgorZmkKKwogR0lUX0NFSUxJTkdfRElSRUNUT1JJRVM9IiRUUkFTSF9ST09UL3N1Yi9kaXIiCiB0ZXN0X3ByZWZpeCBzdWJkaXJfY2VpbF9hdF9zdWJkaXIgInN1Yi9kaXIvIgogCmRpZmYgLS1naXQgYS90L3QxNTA1LXJldi1wYXJzZS1sYXN0LnNoIGIvdC90MTUwNS1yZXYtcGFyc2UtbGFzdC5zaAppbmRleCBkNzA5ZWNmLi40OTY5ZWRiIDEwMDc1NQotLS0gYS90L3QxNTA1LXJldi1wYXJzZS1sYXN0LnNoCisrKyBiL3QvdDE1MDUtcmV2LXBhcnNlLWxhc3Quc2gKQEAgLTMyLDMyICszMiwyNCBAQAogIwogIyBhbmQgJ3NpZGUnIHNob3VsZCBiZSB0aGUgbGFzdCBicmFuY2gKIAotdGVzdF9yZXZfZXF1aXZhbGVudCAoKSB7Ci0KLQlnaXQgcmV2LXBhcnNlICIkMSIgPiBleHBlY3QgJiYKLQlnaXQgcmV2LXBhcnNlICIkMiIgPiBvdXRwdXQgJiYKLQl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0Ci0KLX0KLQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnQHstMX0gd29ya3MnICcKLQl0ZXN0X3Jldl9lcXVpdmFsZW50IHNpZGUgQHstMX0KKwl0ZXN0X2NtcF9yZXYgc2lkZSBAey0xfQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdAey0xfX4yIHdvcmtzJyAnCi0JdGVzdF9yZXZfZXF1aXZhbGVudCBzaWRlfjIgQHstMX1+MgorCXRlc3RfY21wX3JldiBzaWRlfjIgQHstMX1+MgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdAey0xfV4yIHdvcmtzJyAnCi0JdGVzdF9yZXZfZXF1aXZhbGVudCBzaWRlXjIgQHstMX1eMgorCXRlc3RfY21wX3JldiBzaWRlXjIgQHstMX1eMgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdAey0xfUB7MX0gd29ya3MnICcKLQl0ZXN0X3Jldl9lcXVpdmFsZW50IHNpZGVAezF9IEB7LTF9QHsxfQorCXRlc3RfY21wX3JldiBzaWRlQHsxfSBAey0xfUB7MX0KICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnQHstMn0gd29ya3MnICcKLQl0ZXN0X3Jldl9lcXVpdmFsZW50IG1hc3RlciBAey0yfQorCXRlc3RfY21wX3JldiBtYXN0ZXIgQHstMn0KICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnQHstM30gZmFpbHMnICcKZGlmZiAtLWdpdCBhL3QvdDE1MDYtcmV2LXBhcnNlLWRpYWdub3Npcy5zaCBiL3QvdDE1MDYtcmV2LXBhcnNlLWRpYWdub3Npcy5zaAppbmRleCAwODQzYTFjLi5mOTUwYzEwIDEwMDc1NQotLS0gYS90L3QxNTA2LXJldi1wYXJzZS1kaWFnbm9zaXMuc2gKKysrIGIvdC90MTUwNi1yZXYtcGFyc2UtZGlhZ25vc2lzLnNoCkBAIC0xNzEsNCArMTcxLDI5IEBACiAJZ3JlcCAiQlVHOiBzdGFydHVwX2luZm8gc3RydWN0IGlzIG5vdCBpbml0aWFsaXplZC4iIGVycm9yCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzxjb21taXQ+OmZpbGUgY29ycmVjdGx5IGRpYWdub3NlZCBhZnRlciBhIHBhdGhuYW1lJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSBmaWxlLnR4dCBIRUFEOmZpbGUudHh0IDE+YWN0dWFsIDI+ZXJyb3IgJiYKKwl0ZXN0X2kxOG5ncmVwICEgImV4aXN0cyBvbiBkaXNrIiBlcnJvciAmJgorCXRlc3RfaTE4bmdyZXAgIm5vIHN1Y2ggcGF0aCBpbiB0aGUgd29ya2luZyB0cmVlIiBlcnJvciAmJgorCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwlmaWxlLnR4dAorCUhFQUQ6ZmlsZS50eHQKKwlFT0YKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RvdGRvdCBpcyBub3QgYW4gZW1wdHkgc2V0JyAnCisJKCBIPSQoZ2l0IHJldi1wYXJzZSBIRUFEKSAmJiBlY2hvICRIICYmIGVjaG8gXiRIICkgPmV4cGVjdCAmJgorCisJZ2l0IHJldi1wYXJzZSBIRUFELi4gPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKworCWdpdCByZXYtcGFyc2UgLi5IRUFEID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisKKwllY2hvIC4uID5leHBlY3QgJiYKKwlnaXQgcmV2LXBhcnNlIC4uID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MTUwNy1yZXYtcGFyc2UtdXBzdHJlYW0uc2ggYi90L3QxNTA3LXJldi1wYXJzZS11cHN0cmVhbS5zaAppbmRleCBkNmU1NzYxLi4yYTE5ZTc5IDEwMDc1NQotLS0gYS90L3QxNTA3LXJldi1wYXJzZS11cHN0cmVhbS5zaAorKysgYi90L3QxNTA3LXJldi1wYXJzZS11cHN0cmVhbS5zaApAQCAtNTQsNiArNTQsMTAgQEAKIAl0ZXN0IHJlZnMvcmVtb3Rlcy9vcmlnaW4vc2lkZSA9ICIkKGZ1bGxfbmFtZSBteS1zaWRlQHt1fSkiCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZnMvaGVhZHMvbXktc2lkZUB7dXBzdHJlYW19IGRvZXMgbm90IHJlc29sdmUgdG8gbXktc2lkZXt1cHN0cmVhbX0nICcKKwl0ZXN0X211c3RfZmFpbCBmdWxsX25hbWUgcmVmcy9oZWFkcy9teS1zaWRlQHt1cHN0cmVhbX0KKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbXktc2lkZUB7dX0gcmVzb2x2ZXMgdG8gY29ycmVjdCBjb21taXQnICcKIAlnaXQgY2hlY2tvdXQgc2lkZSAmJgogCXRlc3RfY29tbWl0IDUgJiYKQEAgLTEyNSw4ICsxMjksNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdicmFuY2hAe3V9IGVycm9yIG1lc3NhZ2Ugd2hlbiBubyB1cHN0cmVhbScgJwogCWNhdCA+ZXhwZWN0IDw8LUVPRiAmJgotCWVycm9yOiBObyB1cHN0cmVhbSBjb25maWd1cmVkIGZvciBicmFuY2ggJHtzcX1ub24tdHJhY2tpbmcke3NxfQotCWZhdGFsOiBOZWVkZWQgYSBzaW5nbGUgcmV2aXNpb24KKwlmYXRhbDogTm8gdXBzdHJlYW0gY29uZmlndXJlZCBmb3IgYnJhbmNoICR7c3F9bm9uLXRyYWNraW5nJHtzcX0KIAlFT0YKIAllcnJvcl9tZXNzYWdlIG5vbi10cmFja2luZ0B7dX0gMj5hY3R1YWwgJiYKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbApAQCAtMTM0LDggKzEzNyw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0B7dX0gZXJyb3IgbWVzc2FnZSB3aGVuIG5vIHVwc3RyZWFtJyAnCiAJY2F0ID5leHBlY3QgPDwtRU9GICYmCi0JZXJyb3I6IE5vIHVwc3RyZWFtIGNvbmZpZ3VyZWQgZm9yIGJyYW5jaCAke3NxfW1hc3RlciR7c3F9Ci0JZmF0YWw6IE5lZWRlZCBhIHNpbmdsZSByZXZpc2lvbgorCWZhdGFsOiBObyB1cHN0cmVhbSBjb25maWd1cmVkIGZvciBicmFuY2ggJHtzcX1tYXN0ZXIke3NxfQogCUVPRgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgQHt1fSAyPmFjdHVhbCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCkBAIC0xNDMsOCArMTQ1LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYnJhbmNoQHt1fSBlcnJvciBtZXNzYWdlIHdpdGggbWlzc3BlbHQgYnJhbmNoJyAnCiAJY2F0ID5leHBlY3QgPDwtRU9GICYmCi0JZXJyb3I6IE5vIHN1Y2ggYnJhbmNoOiAke3NxfW5vLXN1Y2gtYnJhbmNoJHtzcX0KLQlmYXRhbDogTmVlZGVkIGEgc2luZ2xlIHJldmlzaW9uCisJZmF0YWw6IE5vIHN1Y2ggYnJhbmNoOiAke3NxfW5vLXN1Y2gtYnJhbmNoJHtzcX0KIAlFT0YKIAllcnJvcl9tZXNzYWdlIG5vLXN1Y2gtYnJhbmNoQHt1fSAyPmFjdHVhbCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCkBAIC0xNTIsOCArMTUzLDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnQHt1fSBlcnJvciBtZXNzYWdlIHdoZW4gbm90IG9uIGEgYnJhbmNoJyAnCiAJY2F0ID5leHBlY3QgPDwtRU9GICYmCi0JZXJyb3I6IEhFQUQgZG9lcyBub3QgcG9pbnQgdG8gYSBicmFuY2gKLQlmYXRhbDogTmVlZGVkIGEgc2luZ2xlIHJldmlzaW9uCisJZmF0YWw6IEhFQUQgZG9lcyBub3QgcG9pbnQgdG8gYSBicmFuY2gKIAlFT0YKIAlnaXQgY2hlY2tvdXQgSEVBRF4wICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBAe3V9IDI+YWN0dWFsICYmCkBAIC0xNjIsOCArMTYyLDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYnJhbmNoQHt1fSBlcnJvciBtZXNzYWdlIGlmIHVwc3RyZWFtIGJyYW5jaCBub3QgZmV0Y2hlZCcgJwogCWNhdCA+ZXhwZWN0IDw8LUVPRiAmJgotCWVycm9yOiBVcHN0cmVhbSBicmFuY2ggJHtzcX1yZWZzL2hlYWRzL3NpZGUke3NxfSBub3Qgc3RvcmVkIGFzIGEgcmVtb3RlLXRyYWNraW5nIGJyYW5jaAotCWZhdGFsOiBOZWVkZWQgYSBzaW5nbGUgcmV2aXNpb24KKwlmYXRhbDogVXBzdHJlYW0gYnJhbmNoICR7c3F9cmVmcy9oZWFkcy9zaWRlJHtzcX0gbm90IHN0b3JlZCBhcyBhIHJlbW90ZS10cmFja2luZyBicmFuY2gKIAlFT0YKIAllcnJvcl9tZXNzYWdlIGJhZC11cHN0cmVhbUB7dX0gMj5hY3R1YWwgJiYKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbApkaWZmIC0tZ2l0IGEvdC90MTUwOS9wcmVwYXJlLWNocm9vdC5zaCBiL3QvdDE1MDkvcHJlcGFyZS1jaHJvb3Quc2gKaW5kZXggYzUzMzRhOC4uNjI2OTExNyAxMDA3NTUKLS0tIGEvdC90MTUwOS9wcmVwYXJlLWNocm9vdC5zaAorKysgYi90L3QxNTA5L3ByZXBhcmUtY2hyb290LnNoCkBAIC0xNCw3ICsxNCw3IEBACiAKIFI9IiQxIgogCi1bIC1uICIkUiIgXSB8fCBkaWUgIlVzYWdlOiBwcmVwYXJlLWNocm9vdC5zaCA8cm9vdD4iCitbIC1uICIkUiIgXSB8fCBkaWUgInVzYWdlOiBwcmVwYXJlLWNocm9vdC5zaCA8cm9vdD4iCiBbIC14IGdpdCBdIHx8IGRpZSAiVGhpcyBzY3JpcHQgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgYXQgZ2l0IHNvdXJjZSBjb2RlJ3MgdG9wIGRpcmVjdG9yeSIKIFsgLXggL2Jpbi9idXN5Ym94IF0gfHwgZGllICJZb3UgbmVlZCBidXN5Ym94IgogCmRpZmYgLS1naXQgYS90L3QxNTEwLXJlcG8tc2V0dXAuc2ggYi90L3QxNTEwLXJlcG8tc2V0dXAuc2gKaW5kZXggODBhZWRmYy4uY2YyZWU3OCAxMDA3NTUKLS0tIGEvdC90MTUxMC1yZXBvLXNldHVwLnNoCisrKyBiL3QvdDE1MTAtcmVwby1zZXR1cC5zaApAQCAtNTE3LDYgKzUxNywyNSBAQAogCQkiJGhlcmUvMTZjLy5naXQiICIobnVsbCkiICIkaGVyZS8xNmMvc3ViIiAiKG51bGwpIgogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcjMTZkOiBiYXJlbmVzcyBwcmVzZXJ2ZWQgYWNyb3NzIGFsaWFzJyAnCisJc2V0dXBfcmVwbyAxNmQgdW5zZXQgIiIgdW5zZXQgJiYKKwkoCisJCWNkIDE2ZC8uZ2l0ICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCBzdGF0dXMgJiYKKwkJZ2l0IGNvbmZpZyBhbGlhcy5zdCBzdGF0dXMgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN0CisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcjMTZlOiBiYXJlbmVzcyBwcmVzZXJ2ZWQgYnkgLS1iYXJlJyAnCisJc2V0dXBfcmVwbyAxNmUgdW5zZXQgIiIgdW5zZXQgJiYKKwkoCisJCWNkIDE2ZS8uZ2l0ICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCBzdGF0dXMgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IC0tYmFyZSBzdGF0dXMKKwkpCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJyMxNzogR0lUX1dPUktfVFJFRSB3aXRob3V0IGV4cGxpY2l0IEdJVF9ESVIgaXMgYWNjZXB0ZWQgKGJhcmUgY2FzZSknICcKIAkjIEp1c3QgbGlrZSAjMTYuCiAJc2V0dXBfcmVwbyAxN2EgdW5zZXQgIiIgdHJ1ZSAmJgpkaWZmIC0tZ2l0IGEvdC90MTUxMi1yZXYtcGFyc2UtZGlzYW1iaWd1YXRpb24uc2ggYi90L3QxNTEyLXJldi1wYXJzZS1kaXNhbWJpZ3VhdGlvbi5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42YjNkNzk3Ci0tLSAvZGV2L251bGwKKysrIGIvdC90MTUxMi1yZXYtcGFyc2UtZGlzYW1iaWd1YXRpb24uc2gKQEAgLTAsMCArMSwyNjQgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdvYmplY3QgbmFtZSBkaXNhbWJpZ3VhdGlvbgorCitDcmVhdGUgYmxvYnMsIHRyZWVzLCBjb21taXRzIGFuZCBhIHRhZyB0aGF0IGFsbCBzaGFyZSB0aGUgc2FtZQorcHJlZml4LCBhbmQgbWFrZSBzdXJlICJnaXQgcmV2LXBhcnNlIiBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YKK3R5cGUgaW5mb3JtYXRpb24gdG8gZGlzYW1iaWd1YXRlIHNob3J0IG9iamVjdCBuYW1lcyB0aGF0IGFyZQorbm90IG5lY2Vzc2FyaWx5IHVuaXF1ZS4KKworVGhlIGZpbmFsIGhpc3RvcnkgdXNlZCBpbiB0aGUgdGVzdCBoYXMgZml2ZSBjb21taXRzLCB3aXRoIHRoZSBib3R0b20KK29uZSB0YWdnZWQgYXMgdjEuMC4wLiAgVGhleSBhbGwgaGF2ZSBvbmUgcmVndWxhciBmaWxlIGVhY2guCisKKyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICB8ICAgICAgICAgICAuLS0tLS0tLWIzd2V0dHZpLS0tLSBhZDJ1ZWUgICAgIHwKKyAgfCAgICAgICAgICAvICAgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICB8CisgIHwgIGEyb25zeGJ2ai0tLWN6eThmNzN0LS1pb2lsZXk1byAgICAgICAgICAgfAorICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKycKKworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Jsb2IgYW5kIHRyZWUnICcKKwl0ZXN0X3RpY2sgJiYKKwkoCisJCWZvciBpIGluIDAgMSAyIDMgNCA1IDYgNyA4IDkKKwkJZG8KKwkJCWVjaG8gJGkKKwkJZG9uZQorCQllY2hvCisJCWVjaG8gYjFyd3p5YzMKKwkpID5hMGJsZ3FzamMgJiYKKworCSMgY3JlYXRlIG9uZSBibG9iIDAwMDAwMDAwMDBiMzYKKwlnaXQgYWRkIGEwYmxncXNqYyAmJgorCisJIyBjcmVhdGUgb25lIHRyZWUgMDAwMDAwMDAwMGNkYworCWdpdCB3cml0ZS10cmVlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dhcm4gYW1iaWd1aXR5IHdoZW4gbm8gY2FuZGlkYXRlIG1hdGNoZXMgdHlwZSBoaW50JyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAwMDAwMDAwMDBee2NvbW1pdH0gMj5hY3R1YWwgJiYKKwlncmVwICJzaG9ydCBTSEExIDAwMDAwMDAwMCBpcyBhbWJpZ3VvdXMiIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkaXNhbWJpZ3VhdGUgdHJlZS1pc2gnICcKKwkjIGZlZWQgdHJlZS1pc2ggaW4gYW4gdW5hbWJpZ3VvdXMgd2F5CisJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAwMDAwMDAwMDAwY2RjOmEwYmxncXNqYyAmJgorCisJIyBhbWJpZ3VvdXMgYXQgdGhlIG9iamVjdCBuYW1lIGxldmVsLCBidXQgdGhlcmUgaXMgb25seSBvbmUKKwkjIHN1Y2ggdHJlZS1pc2ggKHRoZSBvdGhlciBpcyBhIGJsb2IpCisJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAwMDAwMDAwMDA6YTBibGdxc2pjCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Rpc2FtYmlndWF0ZSBibG9iJyAnCisJc2VkIC1lICJzL3wkLy8iID5wYXRjaCA8PC1FT0YgJiYKKwlkaWZmIC0tZ2l0IGEvZnJvdHogYi9mcm90egorCWluZGV4IDAwMDAwMDAwMC4uZmZmZmZmIDEwMDY0NAorCS0tLSBhL2Zyb3R6CisJKysrIGIvZnJvdHoKKwlAQCAtMTAsMyArMTAsNCBAQAorCSA5CisJIHwKKwkgYjFyd3p5YzMKKwkraXJ3cnkKKwlFT0YKKwkoCisJCUdJVF9JTkRFWF9GSUxFPWZyb3R6ICYmCisJCWV4cG9ydCBHSVRfSU5ERVhfRklMRSAmJgorCQlnaXQgYXBwbHkgLS1idWlsZC1mYWtlLWFuY2VzdG9yIGZyb3R6IHBhdGNoICYmCisJCWdpdCBjYXQtZmlsZSBibG9iIDpmcm90eiA+YWN0dWFsCisJKSAmJgorCXRlc3RfY21wIGEwYmxncXNqYyBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlzYW1iaWd1YXRlIHRyZWUnICcKKwljb21taXQ9JChlY2hvICJkN3htIiB8IGdpdCBjb21taXQtdHJlZSAwMDAwMDAwMDApICYmCisJdGVzdCAkKGdpdCByZXYtcGFyc2UgJGNvbW1pdF57dHJlZX0pID0gJChnaXQgcmV2LXBhcnNlIDAwMDAwMDAwMDBjZGMpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZpcnN0IGNvbW1pdCcgJworCSMgY3JlYXRlIG9uZSBjb21taXQgMDAwMDAwMDAwMGU0ZgorCWdpdCBjb21taXQgLW0gYTJvbnN4YnZqCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Rpc2FtYmlndWF0ZSBjb21taXQtaXNoJyAnCisJIyBmZWVkIGNvbW1pdC1pc2ggaW4gYW4gdW5hbWJpZ3VvdXMgd2F5CisJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAwMDAwMDAwMDAwZTRmXntjb21taXR9ICYmCisKKwkjIGFtYmlndW91cyBhdCB0aGUgb2JqZWN0IG5hbWUgbGV2ZWwsIGJ1dCB0aGVyZSBpcyBvbmx5IG9uZQorCSMgc3VjaCBjb21taXQgKHRoZSBvdGhlcnMgYXJlIHRyZWUgYW5kIGJsb2IpCisJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAwMDAwMDAwMDBee2NvbW1pdH0gJiYKKworCSMgbGlrZXdpc2UKKwlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IDAwMDAwMDAwMF4wCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Rpc2FtYmlndWF0ZSBjb21taXQnICcKKwljb21taXQ9JChlY2hvICJob2F4aiIgfCBnaXQgY29tbWl0LXRyZWUgMDAwMDAwMDAwMGNkYyAtcCAwMDAwMDAwMDApICYmCisJdGVzdCAkKGdpdCByZXYtcGFyc2UgJGNvbW1pdF4pID0gJChnaXQgcmV2LXBhcnNlIDAwMDAwMDAwMDBlNGYpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyBuYW1lMS4ubmFtZTIgdGFrZXMgb25seSBjb21taXQtaXNoZXMgb24gYm90aCBlbmRzJyAnCisJZ2l0IGxvZyAwMDAwMDAwMDAuLjAwMDAwMDAwMCAmJgorCWdpdCBsb2cgLi4wMDAwMDAwMDAgJiYKKwlnaXQgbG9nIDAwMDAwMDAwMC4uICYmCisJZ2l0IGxvZyAwMDAwMDAwMDAuLi4wMDAwMDAwMDAgJiYKKwlnaXQgbG9nIC4uLjAwMDAwMDAwMCAmJgorCWdpdCBsb2cgMDAwMDAwMDAwLi4uCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jldi1wYXJzZSBuYW1lMS4ubmFtZTIgdGFrZXMgb25seSBjb21taXQtaXNoZXMgb24gYm90aCBlbmRzJyAnCisJZ2l0IHJldi1wYXJzZSAwMDAwMDAwMDAuLjAwMDAwMDAwMCAmJgorCWdpdCByZXYtcGFyc2UgLi4wMDAwMDAwMDAgJiYKKwlnaXQgcmV2LXBhcnNlIDAwMDAwMDAwMC4uCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBsb2cgdGFrZXMgb25seSBjb21taXQtaXNoJyAnCisJZ2l0IGxvZyAwMDAwMDAwMDAKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHJlc2V0IHRha2VzIG9ubHkgY29tbWl0LWlzaCcgJworCWdpdCByZXNldCAwMDAwMDAwMDAKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmlyc3QgdGFnJyAnCisJIyBjcmVhdGUgb25lIHRhZyAwMDAwMDAwMDAwZjhmCisJZ2l0IHRhZyAtYSAtbSBqN2NwODN1bSB2MS4wLjAKKycKKwordGVzdF9leHBlY3RfZmFpbHVyZSAndHdvIHNlbWktYW1iaWd1b3VzIGNvbW1pdC1pc2gnICcKKwkjIE9uY2UgdGhlIHBhcnNlciBiZWNvbWVzIHVsdHJhLXNtYXJ0LCBpdCBjb3VsZCBub3RpY2UgdGhhdAorCSMgMTEwMjgyIGJlZm9yZSBee2NvbW1pdH0gbmFtZSBtYW55IGRpZmZlcmVudCBvYmplY3RzLCBidXQKKwkjIHRoYXQgb25seSB0d28gKEhFQUQgYW5kIHYxLjAuMCB0YWcpIGNhbiBiZSBwZWVsZWQgdG8gY29tbWl0LAorCSMgYW5kIHRoYXQgcGVlbGluZyB0aGVtIGRvd24gdG8gY29tbWl0IHlpZWxkIHRoZSBzYW1lIGNvbW1pdAorCSMgd2l0aG91dCBhbWJpZ3VpdHkuCisJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAxMTAyODJee2NvbW1pdH0gJiYKKworCSMgbGlrZXdpc2UKKwlnaXQgbG9nIDAwMDAwMDAwMC4uMDAwMDAwMDAwICYmCisJZ2l0IGxvZyAuLjAwMDAwMDAwMCAmJgorCWdpdCBsb2cgMDAwMDAwMDAwLi4gJiYKKwlnaXQgbG9nIDAwMDAwMDAwMC4uLjAwMDAwMDAwMCAmJgorCWdpdCBsb2cgLi4uMDAwMDAwMDAwICYmCisJZ2l0IGxvZyAwMDAwMDAwMDAuLi4KKycKKwordGVzdF9leHBlY3RfZmFpbHVyZSAndGhyZWUgc2VtaS1hbWJpZ3VvdXMgdHJlZS1pc2gnICcKKwkjIExpa2V3aXNlIGZvciB0cmVlLWlzaC4gIEhFQUQsIHYxLjAuMCBhbmQgSEVBRF57dHJlZX0gc2hhcmUKKwkjIHRoZSBwcmVmaXggYnV0IHBlZWxpbmcgdGhlbSB0byB0cmVlIHlpZWxkcyB0aGUgc2FtZSB0aGluZworCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgMDAwMDAwMDAwXnt0cmVlfQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwYXJzZSBkZXNjcmliZSBuYW1lJyAnCisJIyBmZWVkIGFuIHVuYW1iaWd1b3VzIGRlc2NyaWJlIG5hbWUKKwlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHYxLjAuMC0wLWcwMDAwMDAwMDAwZTRmICYmCisKKwkjIGFtYmlndW91cyBhdCB0aGUgb2JqZWN0IG5hbWUgbGV2ZWwsIGJ1dCB0aGVyZSBpcyBvbmx5IG9uZQorCSMgc3VjaCBjb21taXQgKG90aGVycyBhcmUgYmxvYiwgdHJlZSBhbmQgdGFnKQorCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgdjEuMC4wLTAtZzAwMDAwMDAwMAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb3JlIGhpc3RvcnknICcKKwkjIGNvbW1pdCAwMDAwMDAwMDAwMDQzCisJZ2l0IG12IGEwYmxncXNqYyBkMTJjcjNoOHQgJiYKKwllY2hvIGg2MnhzamV1ID4+ZDEyY3IzaDh0ICYmCisJZ2l0IGFkZCBkMTJjcjNoOHQgJiYKKworCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gY3p5OGY3M3QgJiYKKworCSMgY29tbWl0IDAwMDAwMDAwMDA4ZWMKKwlnaXQgbXYgZDEyY3IzaDh0IGowMDBqbXB6biAmJgorCWVjaG8gajA4YmVrZnZ0ID4+ajAwMGptcHpuICYmCisJZ2l0IGFkZCBqMDAwam1wem4gJiYKKworCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gaW9pbGV5NW8gJiYKKworCSMgY29tbWl0IDAwMDAwMDAwMDViMAorCWdpdCBjaGVja291dCB2MS4wLjBeMCAmJgorCWdpdCBtdiBhMGJsZ3FzamMgZjU1MThud3UgJiYKKworCWZvciBpIGluIGg2MnhzamV1IGowOGJla2Z2dCBrZzd4ZmxobQorCWRvCisJCWVjaG8gJGkKKwlkb25lID4+ZjU1MThud3UgJiYKKwlnaXQgYWRkIGY1NTE4bnd1ICYmCisKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tIGIzd2V0dHZpICYmCisJc2lkZT0kKGdpdCByZXYtcGFyc2UgSEVBRCkgJiYKKworCSMgY29tbWl0IDAwMDAwMDAwMDA2NgorCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKworCSMgSWYgeW91IHVzZSByZWN1cnNpdmUsIG1lcmdlIHdpbGwgZmFpbCBhbmQgeW91IHdpbGwgbmVlZCB0bworCSMgY2xlYW4gdXAgYTBibGdxc2pjIGFzIHdlbGwuICBJZiB5b3UgdXNlIHJlc29sdmUsIG1lcmdlIHdpbGwKKwkjIHN1Y2NlZWQuCisJdGVzdF9taWdodF9mYWlsIGdpdCBtZXJnZSAtLW5vLWNvbW1pdCAtcyByZWN1cnNpdmUgJHNpZGUgJiYKKwlnaXQgcm0gLWYgZjU1MThud3UgajAwMGptcHpuICYmCisKKwl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IHJtIC1mIGEwYmxncXNqYyAmJgorCSgKKwkJZ2l0IGNhdC1maWxlIGJsb2IgJHNpZGU6ZjU1MThud3UKKwkJZWNobyBqM2wwaTlzNgorCSkgPmFiMmdzODc5ICYmCisJZ2l0IGFkZCBhYjJnczg3OSAmJgorCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSBhZDJ1ZWUKKworJworCit0ZXN0X2V4cGVjdF9mYWlsdXJlICdwYXJzZSBkZXNjcmliZSBuYW1lIHRha2luZyBhZHZhbnRhZ2Ugb2YgZ2VuZXJhdGlvbicgJworCSMgYW1iaWd1b3VzIGF0IHRoZSBvYmplY3QgbmFtZSBsZXZlbCwgYnV0IHRoZXJlIGlzIG9ubHkgb25lCisJIyBzdWNoIGNvbW1pdCBhdCBnZW5lcmF0aW9uIDAKKwlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHYxLjAuMC0wLWcwMDAwMDAwMDAgJiYKKworCSMgbGlrZXdpc2UgZm9yIGdlbmVyYXRpb24gMiBhbmQgNAorCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgdjEuMC4wLTItZzAwMDAwMDAwMCAmJgorCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgdjEuMC4wLTQtZzAwMDAwMDAwMAorJworCisjIE5vdGU6IGJlY2F1c2UgcmV2LXBhcnNlIGRvZXMgbm90IGV2ZW4gdHJ5IHRvIGRpc2FtYmlndWF0ZSBiYXNlZCBvbgorIyB0aGUgZ2VuZXJhdGlvbiBudW1iZXIsIHRoaXMgdGVzdCBjdXJyZW50bHkgc3VjY2VlZHMgZm9yIGEgd3JvbmcKKyMgcmVhc29uLiAgV2hlbiBpdCBsZWFybnMgdG8gdXNlIHRoZSBnZW5lcmF0aW9uIG51bWJlciwgdGhlIHByZXZpb3VzCisjIHRlc3Qgc2hvdWxkIHN1Y2NlZWQsIGFuZCBhbHNvIHRoaXMgdGVzdCBzaG91bGQgZmFpbCBiZWNhdXNlIHRoZQorIyBkZXNjcmliZSBuYW1lIHVzZWQgaW4gdGhlIHRlc3Qgd2l0aCBnZW5lcmF0aW9uIG51bWJlciBjYW4gbmFtZSB0d28KKyMgY29tbWl0cy4gIE1ha2Ugc3VyZSB0aGF0IHN1Y2ggYSBmdXR1cmUgZW5oYW5jZW1lbnQgZG9lcyBub3QgcmFuZG9tbHkKKyMgcGljayBvbmUuCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwYXJzZSBkZXNjcmliZSBuYW1lIG5vdCBpZ25vcmluZyBhbWJpZ3VpdHknICcKKwkjIGFtYmlndW91cyBhdCB0aGUgb2JqZWN0IG5hbWUgbGV2ZWwsIGFuZCB0aGVyZSBhcmUgdHdvIHN1Y2gKKwkjIGNvbW1pdHMgYXQgZ2VuZXJhdGlvbiAxCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSB2MS4wLjAtMS1nMDAwMDAwMDAwCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FtYmlndW91cyBjb21taXQtaXNoJyAnCisJIyBOb3cgdGhlcmUgYXJlIG1hbnkgY29tbWl0cyB0aGF0IGJlZ2luIHdpdGggdGhlCisJIyBjb21tb24gcHJlZml4LCBub25lIG9mIHRoZXNlIHNob3VsZCBwaWNrIG9uZSBhdAorCSMgcmFuZG9tLiAgVGhleSBhbGwgc2hvdWxkIHJlc3VsdCBpbiBhbWJpZ3VpdHkgZXJyb3JzLgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgMTEwMjgyXntjb21taXR9ICYmCisKKwkjIGxpa2V3aXNlCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGxvZyAwMDAwMDAwMDAuLjAwMDAwMDAwMCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBsb2cgLi4wMDAwMDAwMDAgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbG9nIDAwMDAwMDAwMC4uICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGxvZyAwMDAwMDAwMDAuLi4wMDAwMDAwMDAgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbG9nIC4uLjAwMDAwMDAwMCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBsb2cgMDAwMDAwMDAwLi4uCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jldi1wYXJzZSAtLWRpc2FtYmlndWF0ZScgJworCSMgVGhlIHRlc3QgY3JlYXRlcyAxNiBvYmplY3RzIHRoYXQgc2hhcmUgdGhlIHByZWZpeCBhbmQgdHdvCisJIyBjb21taXRzIGNyZWF0ZWQgYnkgY29tbWl0LXRyZWUgaW4gZWFybGllciB0ZXN0cyBzaGFyZSBhCisJIyBkaWZmZXJlbnQgcHJlZml4LgorCWdpdCByZXYtcGFyc2UgLS1kaXNhbWJpZ3VhdGU9MDAwMDAwMDAwID5hY3R1YWwgJiYKKwl0ZXN0ICQod2MgLWwgPGFjdHVhbCkgPSAxNiAmJgorCXRlc3QgIiQoc2VkIC1lICJzL15cKC4uLi4uLi4uLlwpLiovXDEvIiBhY3R1YWwgfCBzb3J0IC11KSIgPSAwMDAwMDAwMDAKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QyMDAzLWNoZWNrb3V0LWNhY2hlLW1rZGlyLnNoIGIvdC90MjAwMy1jaGVja291dC1jYWNoZS1ta2Rpci5zaAppbmRleCAwMmE0ZmM1Li5mZjE2M2NmIDEwMDc1NQotLS0gYS90L3QyMDAzLWNoZWNrb3V0LWNhY2hlLW1rZGlyLnNoCisrKyBiL3QvdDIwMDMtY2hlY2tvdXQtY2FjaGUtbWtkaXIuc2gKQEAgLTEyLDg1ICsxMiwxMDggQEAKIAogLiAuL3Rlc3QtbGliLnNoCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdzZXR1cCcgXAotICAgICdta2RpciBwYXRoMSAmJgotICAgIGVjaG8gZnJvdHogPnBhdGgwICYmCi0gICAgZWNobyByZXpyb3YgPnBhdGgxL2ZpbGUxICYmCi0gICAgZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBwYXRoMCBwYXRoMS9maWxlMScKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCisJbWtkaXIgcGF0aDEgJiYKKwllY2hvIGZyb3R6ID5wYXRoMCAmJgorCWVjaG8gcmV6cm92ID5wYXRoMS9maWxlMSAmJgorCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgcGF0aDAgcGF0aDEvZmlsZTEKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyBcCi0gICAgJ2hhdmUgc3ltbGluayBpbiBwbGFjZSB3aGVyZSBkaXIgaXMgZXhwZWN0ZWQuJyBcCi0gICAgJ3JtIC1mciBwYXRoMCBwYXRoMSAmJgotICAgICBta2RpciBwYXRoMiAmJgotICAgICBsbiAtcyBwYXRoMiBwYXRoMSAmJgotICAgICBnaXQgY2hlY2tvdXQtaW5kZXggLWYgLWEgJiYKLSAgICAgdGVzdCAhIC1oIHBhdGgxICYmIHRlc3QgLWQgcGF0aDEgJiYKLSAgICAgdGVzdCAtZiBwYXRoMS9maWxlMSAmJiB0ZXN0ICEgLWYgcGF0aDIvZmlsZTEnCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdoYXZlIHN5bWxpbmsgaW4gcGxhY2Ugd2hlcmUgZGlyIGlzIGV4cGVjdGVkLicgJworCXJtIC1mciBwYXRoMCBwYXRoMSAmJgorCW1rZGlyIHBhdGgyICYmCisJbG4gLXMgcGF0aDIgcGF0aDEgJiYKKwlnaXQgY2hlY2tvdXQtaW5kZXggLWYgLWEgJiYKKwl0ZXN0ICEgLWggcGF0aDEgJiYgdGVzdCAtZCBwYXRoMSAmJgorCXRlc3QgLWYgcGF0aDEvZmlsZTEgJiYgdGVzdCAhIC1mIHBhdGgyL2ZpbGUxCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICd1c2UgLS1wcmVmaXg9cGF0aDIvJyBcCi0gICAgJ3JtIC1mciBwYXRoMCBwYXRoMSBwYXRoMiAmJgotICAgICBta2RpciBwYXRoMiAmJgotICAgICBnaXQgY2hlY2tvdXQtaW5kZXggLS1wcmVmaXg9cGF0aDIvIC1mIC1hICYmCi0gICAgIHRlc3QgLWYgcGF0aDIvcGF0aDAgJiYKLSAgICAgdGVzdCAtZiBwYXRoMi9wYXRoMS9maWxlMSAmJgotICAgICB0ZXN0ICEgLWYgcGF0aDAgJiYKLSAgICAgdGVzdCAhIC1mIHBhdGgxL2ZpbGUxJwordGVzdF9leHBlY3Rfc3VjY2VzcyAndXNlIC0tcHJlZml4PXBhdGgyLycgJworCXJtIC1mciBwYXRoMCBwYXRoMSBwYXRoMiAmJgorCW1rZGlyIHBhdGgyICYmCisJZ2l0IGNoZWNrb3V0LWluZGV4IC0tcHJlZml4PXBhdGgyLyAtZiAtYSAmJgorCXRlc3QgLWYgcGF0aDIvcGF0aDAgJiYKKwl0ZXN0IC1mIHBhdGgyL3BhdGgxL2ZpbGUxICYmCisJdGVzdCAhIC1mIHBhdGgwICYmCisJdGVzdCAhIC1mIHBhdGgxL2ZpbGUxCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICd1c2UgLS1wcmVmaXg9dG1wLScgXAotICAgICdybSAtZnIgcGF0aDAgcGF0aDEgcGF0aDIgdG1wKiAmJgotICAgICBnaXQgY2hlY2tvdXQtaW5kZXggLS1wcmVmaXg9dG1wLSAtZiAtYSAmJgotICAgICB0ZXN0IC1mIHRtcC1wYXRoMCAmJgotICAgICB0ZXN0IC1mIHRtcC1wYXRoMS9maWxlMSAmJgotICAgICB0ZXN0ICEgLWYgcGF0aDAgJiYKLSAgICAgdGVzdCAhIC1mIHBhdGgxL2ZpbGUxJwordGVzdF9leHBlY3Rfc3VjY2VzcyAndXNlIC0tcHJlZml4PXRtcC0nICcKKwlybSAtZnIgcGF0aDAgcGF0aDEgcGF0aDIgdG1wKiAmJgorCWdpdCBjaGVja291dC1pbmRleCAtLXByZWZpeD10bXAtIC1mIC1hICYmCisJdGVzdCAtZiB0bXAtcGF0aDAgJiYKKwl0ZXN0IC1mIHRtcC1wYXRoMS9maWxlMSAmJgorCXRlc3QgISAtZiBwYXRoMCAmJgorCXRlc3QgISAtZiBwYXRoMS9maWxlMQorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAndXNlIC0tcHJlZml4PXRtcC0gYnV0IHdpdGggYSBjb25mbGljdGluZyBmaWxlIGFuZCBkaXInIFwKLSAgICAncm0gLWZyIHBhdGgwIHBhdGgxIHBhdGgyIHRtcCogJiYKLSAgICAgZWNobyBuaXRmb2wgPnRtcC1wYXRoMSAmJgotICAgICBta2RpciB0bXAtcGF0aDAgJiYKLSAgICAgZ2l0IGNoZWNrb3V0LWluZGV4IC0tcHJlZml4PXRtcC0gLWYgLWEgJiYKLSAgICAgdGVzdCAtZiB0bXAtcGF0aDAgJiYKLSAgICAgdGVzdCAtZiB0bXAtcGF0aDEvZmlsZTEgJiYKLSAgICAgdGVzdCAhIC1mIHBhdGgwICYmCi0gICAgIHRlc3QgISAtZiBwYXRoMS9maWxlMScKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3VzZSAtLXByZWZpeD10bXAtIGJ1dCB3aXRoIGEgY29uZmxpY3RpbmcgZmlsZSBhbmQgZGlyJyAnCisJcm0gLWZyIHBhdGgwIHBhdGgxIHBhdGgyIHRtcCogJiYKKwllY2hvIG5pdGZvbCA+dG1wLXBhdGgxICYmCisJbWtkaXIgdG1wLXBhdGgwICYmCisJZ2l0IGNoZWNrb3V0LWluZGV4IC0tcHJlZml4PXRtcC0gLWYgLWEgJiYKKwl0ZXN0IC1mIHRtcC1wYXRoMCAmJgorCXRlc3QgLWYgdG1wLXBhdGgxL2ZpbGUxICYmCisJdGVzdCAhIC1mIHBhdGgwICYmCisJdGVzdCAhIC1mIHBhdGgxL2ZpbGUxCisnCiAKLSMgTGludXMgZml4ICMxCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTIFwKLSAgICAndXNlIC0tcHJlZml4PXRtcC9vcmFyeS8gd2hlcmUgdG1wIGlzIGEgc3ltbGluaycgXAotICAgICdybSAtZnIgcGF0aDAgcGF0aDEgcGF0aDIgdG1wKiAmJgotICAgICBta2RpciB0bXAxIHRtcDEvb3JhcnkgJiYKLSAgICAgbG4gLXMgdG1wMSB0bXAgJiYKLSAgICAgZ2l0IGNoZWNrb3V0LWluZGV4IC0tcHJlZml4PXRtcC9vcmFyeS8gLWYgLWEgJiYKLSAgICAgdGVzdCAtZCB0bXAxL29yYXJ5ICYmCi0gICAgIHRlc3QgLWYgdG1wMS9vcmFyeS9wYXRoMCAmJgotICAgICB0ZXN0IC1mIHRtcDEvb3JhcnkvcGF0aDEvZmlsZTEgJiYKLSAgICAgdGVzdCAtaCB0bXAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICd1c2UgLS1wcmVmaXg9dG1wL29yYXJ5LyB3aGVyZSB0bXAgaXMgYSBzeW1saW5rJyAnCisJcm0gLWZyIHBhdGgwIHBhdGgxIHBhdGgyIHRtcCogJiYKKwlta2RpciB0bXAxIHRtcDEvb3JhcnkgJiYKKwlsbiAtcyB0bXAxIHRtcCAmJgorCWdpdCBjaGVja291dC1pbmRleCAtLXByZWZpeD10bXAvb3JhcnkvIC1mIC1hICYmCisJdGVzdCAtZCB0bXAxL29yYXJ5ICYmCisJdGVzdCAtZiB0bXAxL29yYXJ5L3BhdGgwICYmCisJdGVzdCAtZiB0bXAxL29yYXJ5L3BhdGgxL2ZpbGUxICYmCisJdGVzdCAtaCB0bXAKKycKIAotIyBMaW51cyBmaXggIzIKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgXAotICAgICd1c2UgLS1wcmVmaXg9dG1wL29yYXJ5LSB3aGVyZSB0bXAgaXMgYSBzeW1saW5rJyBcCi0gICAgJ3JtIC1mciBwYXRoMCBwYXRoMSBwYXRoMiB0bXAqICYmCi0gICAgIG1rZGlyIHRtcDEgJiYKLSAgICAgbG4gLXMgdG1wMSB0bXAgJiYKLSAgICAgZ2l0IGNoZWNrb3V0LWluZGV4IC0tcHJlZml4PXRtcC9vcmFyeS0gLWYgLWEgJiYKLSAgICAgdGVzdCAtZiB0bXAxL29yYXJ5LXBhdGgwICYmCi0gICAgIHRlc3QgLWYgdG1wMS9vcmFyeS1wYXRoMS9maWxlMSAmJgotICAgICB0ZXN0IC1oIHRtcCcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3VzZSAtLXByZWZpeD10bXAvb3JhcnktIHdoZXJlIHRtcCBpcyBhIHN5bWxpbmsnICcKKwlybSAtZnIgcGF0aDAgcGF0aDEgcGF0aDIgdG1wKiAmJgorCW1rZGlyIHRtcDEgJiYKKwlsbiAtcyB0bXAxIHRtcCAmJgorCWdpdCBjaGVja291dC1pbmRleCAtLXByZWZpeD10bXAvb3JhcnktIC1mIC1hICYmCisJdGVzdCAtZiB0bXAxL29yYXJ5LXBhdGgwICYmCisJdGVzdCAtZiB0bXAxL29yYXJ5LXBhdGgxL2ZpbGUxICYmCisJdGVzdCAtaCB0bXAKKycKIAotIyBMaW51cyBmaXggIzMKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgXAotICAgICd1c2UgLS1wcmVmaXg9dG1wLSB3aGVyZSB0bXAtcGF0aDEgaXMgYSBzeW1saW5rJyBcCi0gICAgJ3JtIC1mciBwYXRoMCBwYXRoMSBwYXRoMiB0bXAqICYmCi0gICAgIG1rZGlyIHRtcDEgJiYKLSAgICAgbG4gLXMgdG1wMSB0bXAtcGF0aDEgJiYKLSAgICAgZ2l0IGNoZWNrb3V0LWluZGV4IC0tcHJlZml4PXRtcC0gLWYgLWEgJiYKLSAgICAgdGVzdCAtZiB0bXAtcGF0aDAgJiYKLSAgICAgdGVzdCAhIC1oIHRtcC1wYXRoMSAmJgotICAgICB0ZXN0IC1kIHRtcC1wYXRoMSAmJgotICAgICB0ZXN0IC1mIHRtcC1wYXRoMS9maWxlMScKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3VzZSAtLXByZWZpeD10bXAtIHdoZXJlIHRtcC1wYXRoMSBpcyBhIHN5bWxpbmsnICcKKwlybSAtZnIgcGF0aDAgcGF0aDEgcGF0aDIgdG1wKiAmJgorCW1rZGlyIHRtcDEgJiYKKwlsbiAtcyB0bXAxIHRtcC1wYXRoMSAmJgorCWdpdCBjaGVja291dC1pbmRleCAtLXByZWZpeD10bXAtIC1mIC1hICYmCisJdGVzdCAtZiB0bXAtcGF0aDAgJiYKKwl0ZXN0ICEgLWggdG1wLXBhdGgxICYmCisJdGVzdCAtZCB0bXAtcGF0aDEgJiYKKwl0ZXN0IC1mIHRtcC1wYXRoMS9maWxlMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhcHBseSBmaWx0ZXIgZnJvbSB3b3JraW5nIHRyZWUgLmdpdGF0dHJpYnV0ZXMgd2l0aCAtLXByZWZpeCcgJworCXJtIC1mciBwYXRoMCBwYXRoMSBwYXRoMiB0bXAqICYmCisJbWtkaXIgcGF0aDEgJiYKKwlta2RpciB0bXAgJiYKKwlnaXQgY29uZmlnIGZpbHRlci5yZXBsYWNlLWFsbC5zbXVkZ2UgInNlZCAtZSBzLy4vLC9nIiAmJgorCWdpdCBjb25maWcgZmlsdGVyLnJlcGxhY2UtYWxsLmNsZWFuIGNhdCAmJgorCWdpdCBjb25maWcgZmlsdGVyLnJlcGxhY2UtYWxsLnJlcXVpcmVkIHRydWUgJiYKKwllY2hvICJmaWxlMSBmaWx0ZXI9cmVwbGFjZS1hbGwiID5wYXRoMS8uZ2l0YXR0cmlidXRlcyAmJgorCWdpdCBjaGVja291dC1pbmRleCAtLXByZWZpeD10bXAvIC1mIC1hICYmCisJZWNobyBmcm90eiA+ZXhwZWN0ZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCB0bXAvcGF0aDAgJiYKKwllY2hvICwsLCwsLCA+ZXhwZWN0ZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCB0bXAvcGF0aDEvZmlsZTEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYXBwbHkgQ1JMRiBmaWx0ZXIgZnJvbSB3b3JraW5nIHRyZWUgLmdpdGF0dHJpYnV0ZXMgd2l0aCAtLXByZWZpeCcgJworCXJtIC1mciBwYXRoMCBwYXRoMSBwYXRoMiB0bXAqICYmCisJbWtkaXIgcGF0aDEgJiYKKwlta2RpciB0bXAgJiYKKwllY2hvICJmaWxlMSBlb2w9Y3JsZiIgPnBhdGgxLy5naXRhdHRyaWJ1dGVzICYmCisJZ2l0IGNoZWNrb3V0LWluZGV4IC0tcHJlZml4PXRtcC8gLWYgLWEgJiYKKwllY2hvIHJlenJvdlEgPmV4cGVjdGVkICYmCisJdHIgXFwwMTUgUSA8dG1wL3BhdGgxL2ZpbGUxID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QyMDA2LWNoZWNrb3V0LWluZGV4LWJhc2ljLnNoIGIvdC90MjAwNi1jaGVja291dC1pbmRleC1iYXNpYy5zaAppbmRleCBiODU1OTgzLi41N2NiZGZlIDEwMDc1NQotLS0gYS90L3QyMDA2LWNoZWNrb3V0LWluZGV4LWJhc2ljLnNoCisrKyBiL3QvdDIwMDYtY2hlY2tvdXQtaW5kZXgtYmFzaWMuc2gKQEAgLTcsNyArNyw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrb3V0LWluZGV4IC0tZ29iYmxlZGVnb29rJyAnCiAJdGVzdF9leHBlY3RfY29kZSAxMjkgZ2l0IGNoZWNrb3V0LWluZGV4IC0tZ29iYmxlZGVnb29rIDI+ZXJyICYmCi0JZ3JlcCAiW1V1XXNhZ2UiIGVycgorCXRlc3RfaTE4bmdyZXAgIltVdV1zYWdlIiBlcnIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQtaW5kZXggLWggaW4gYnJva2VuIHJlcG9zaXRvcnknICcKQEAgLTE4LDcgKzE4LDcgQEAKIAkJPi5naXQvaW5kZXggJiYKIAkJdGVzdF9leHBlY3RfY29kZSAxMjkgZ2l0IGNoZWNrb3V0LWluZGV4IC1oID51c2FnZSAyPiYxCiAJKSAmJgotCWdyZXAgIltVdV1zYWdlIiBicm9rZW4vdXNhZ2UKKwl0ZXN0X2kxOG5ncmVwICJbVXVdc2FnZSIgYnJva2VuL3VzYWdlCiAnCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MjAxMy1jaGVja291dC1zdWJtb2R1bGUuc2ggYi90L3QyMDEzLWNoZWNrb3V0LXN1Ym1vZHVsZS5zaAppbmRleCA3MGVkYmIzLi4wNmIxOGY4IDEwMDc1NQotLS0gYS90L3QyMDEzLWNoZWNrb3V0LXN1Ym1vZHVsZS5zaAorKysgYi90L3QyMDEzLWNoZWNrb3V0LXN1Ym1vZHVsZS5zaApAQCAtMjMsNyArMjMsNyBAQAogCWdpdCB1cGRhdGUtaW5kZXggLS1yZWZyZXNoICYmCiAJZ2l0IGRpZmYtZmlsZXMgLS1xdWlldCAmJgogCWdpdCBkaWZmLWluZGV4IC0tcXVpZXQgLS1jYWNoZWQgSEVBRCAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCByZXNldCBIRUFEXiBzdWJtb2R1bGUgJiYKKwlnaXQgcmVzZXQgSEVBRF4gc3VibW9kdWxlICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGRpZmYtZmlsZXMgLS1xdWlldCAmJgogCWdpdCByZXNldCBzdWJtb2R1bGUgJiYKIAlnaXQgZGlmZi1maWxlcyAtLXF1aWV0CmRpZmYgLS1naXQgYS90L3QyMDE3LWNoZWNrb3V0LW9ycGhhbi5zaCBiL3QvdDIwMTctY2hlY2tvdXQtb3JwaGFuLnNoCmluZGV4IDBlM2I4NTguLjY1NWYyNzggMTAwNzU1Ci0tLSBhL3QvdDIwMTctY2hlY2tvdXQtb3JwaGFuLnNoCisrKyBiL3QvdDIwMTctY2hlY2tvdXQtb3JwaGFuLnNoCkBAIC0xMTYsNCArMTE2LDEwIEBACiAJZ2l0IHJlc2V0IC0taGFyZAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjYW5ub3QgLS1kZXRhY2ggb24gYW4gdW5ib3JuIGJyYW5jaCcgJworCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwlnaXQgY2hlY2tvdXQgLS1vcnBoYW4gbmV3ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNoZWNrb3V0IC0tZGV0YWNoCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MjAyMC1jaGVja291dC1kZXRhY2guc2ggYi90L3QyMDIwLWNoZWNrb3V0LWRldGFjaC5zaAppbmRleCA4MTAwNTM3Li41ZDY4NzI5IDEwMDc1NQotLS0gYS90L3QyMDIwLWNoZWNrb3V0LWRldGFjaC5zaAorKysgYi90L3QyMDIwLWNoZWNrb3V0LWRldGFjaC5zaApAQCAtMTUxLDYgKzE1MSw3IEBACiAKIGNhdCA+ZXhwZWN0IDw8J0VPRicKIFlvdXIgYnJhbmNoIGlzIGJlaGluZCAnbWFzdGVyJyBieSAxIGNvbW1pdCwgYW5kIGNhbiBiZSBmYXN0LWZvcndhcmRlZC4KKyAgKHVzZSAiZ2l0IHB1bGwiIHRvIHVwZGF0ZSB5b3VyIGxvY2FsIGJyYW5jaCkKIEVPRgogdGVzdF9leHBlY3Rfc3VjY2VzcyAndHJhY2tpbmcgY291bnQgaXMgYWNjdXJhdGUgYWZ0ZXIgb3JwaGFuIGNoZWNrJyAnCiAJcmVzZXQgJiYKZGlmZiAtLWdpdCBhL3QvdDIwMjItY2hlY2tvdXQtcGF0aHMuc2ggYi90L3QyMDIyLWNoZWNrb3V0LXBhdGhzLnNoCmluZGV4IDU2MDkwZDIuLjhlMzU0NWQgMTAwNzU1Ci0tLSBhL3QvdDIwMjItY2hlY2tvdXQtcGF0aHMuc2gKKysrIGIvdC90MjAyMi1jaGVja291dC1wYXRocy5zaApAQCAtMzksNCArMzksMjYgQEAKIAl0ZXN0X2NtcCBleHBlY3QubmV4dDIgZGlyL25leHQyCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RvIG5vdCB0b3VjaCB1bm1lcmdlZCBlbnRyaWVzIG1hdGNoaW5nICRwYXRoIGJ1dCBub3QgaW4gJHRyZWUnICcKKwlnaXQgY2hlY2tvdXQgbmV4dCAmJgorCWdpdCByZXNldCAtLWhhcmQgJiYKKworCWNhdCBkaXIvY29tbW9uID5leHBlY3QuY29tbW9uICYmCisJRU1QVFlfU0hBMT0kKGdpdCBoYXNoLW9iamVjdCAtdyAtLXN0ZGluIDwvZGV2L251bGwpICYmCisJZ2l0IHJtIGRpci9uZXh0MCAmJgorCWNhdCA+ZXhwZWN0Lm5leHQwIDw8LUVPRiAmJgorCTEwMDY0NCAkRU1QVFlfU0hBMSAxCWRpci9uZXh0MAorCTEwMDY0NCAkRU1QVFlfU0hBMSAyCWRpci9uZXh0MAorCUVPRgorCWdpdCB1cGRhdGUtaW5kZXggLS1pbmRleC1pbmZvIDxleHBlY3QubmV4dDAgJiYKKworCWdpdCBjaGVja291dCBtYXN0ZXIgZGlyICYmCisKKwl0ZXN0X2NtcCBleHBlY3QuY29tbW9uIGRpci9jb21tb24gJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBkaXIvbWFzdGVyICYmCisJZ2l0IGRpZmYgLS1leGl0LWNvZGUgbWFzdGVyIGRpci9tYXN0ZXIgJiYKKwlnaXQgbHMtZmlsZXMgLXMgZGlyL25leHQwID5hY3R1YWwubmV4dDAgJiYKKwl0ZXN0X2NtcCBleHBlY3QubmV4dDAgYWN0dWFsLm5leHQwCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MjAyNC1jaGVja291dC1kd2ltLnNoIGIvdC90MjAyNC1jaGVja291dC1kd2ltLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmRlZTU1ZTQKLS0tIC9kZXYvbnVsbAorKysgYi90L3QyMDI0LWNoZWNrb3V0LWR3aW0uc2gKQEAgLTAsMCArMSwxNjcgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdjaGVja291dCA8YnJhbmNoPgorCitFbnN1cmVzIHRoYXQgY2hlY2tvdXQgb24gYW4gdW5ib3JuIGJyYW5jaCBkb2VzIHdoYXQgdGhlIHVzZXIgZXhwZWN0cycKKworLiAuL3Rlc3QtbGliLnNoCisKKyMgSXMgdGhlIGN1cnJlbnQgYnJhbmNoICJyZWZzL2hlYWRzLyQxIj8KK3Rlc3RfYnJhbmNoICgpIHsKKwlwcmludGYgIiVzXG4iICJyZWZzL2hlYWRzLyQxIiA+ZXhwZWN0LkhFQUQgJiYKKwlnaXQgc3ltYm9saWMtcmVmIEhFQUQgPmFjdHVhbC5IRUFEICYmCisJdGVzdF9jbXAgZXhwZWN0LkhFQUQgYWN0dWFsLkhFQUQKK30KKworIyBJcyBicmFuY2ggInJlZnMvaGVhZHMvJDEiIHNldCB0byBwdWxsIGZyb20gIiQyLyQzIj8KK3Rlc3RfYnJhbmNoX3Vwc3RyZWFtICgpIHsKKwlwcmludGYgIiVzXG4iICIkMiIgInJlZnMvaGVhZHMvJDMiID5leHBlY3QudXBzdHJlYW0gJiYKKwl7CisJCWdpdCBjb25maWcgImJyYW5jaC4kMS5yZW1vdGUiICYmCisJCWdpdCBjb25maWcgImJyYW5jaC4kMS5tZXJnZSIKKwl9ID5hY3R1YWwudXBzdHJlYW0gJiYKKwl0ZXN0X2NtcCBleHBlY3QudXBzdHJlYW0gYWN0dWFsLnVwc3RyZWFtCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCisJdGVzdF9jb21taXQgbXlfbWFzdGVyICYmCisJZ2l0IGluaXQgcmVwb19hICYmCisJKAorCQljZCByZXBvX2EgJiYKKwkJdGVzdF9jb21taXQgYV9tYXN0ZXIgJiYKKwkJZ2l0IGNoZWNrb3V0IC1iIGZvbyAmJgorCQl0ZXN0X2NvbW1pdCBhX2ZvbyAmJgorCQlnaXQgY2hlY2tvdXQgLWIgYmFyICYmCisJCXRlc3RfY29tbWl0IGFfYmFyCisJKSAmJgorCWdpdCBpbml0IHJlcG9fYiAmJgorCSgKKwkJY2QgcmVwb19iICYmCisJCXRlc3RfY29tbWl0IGJfbWFzdGVyICYmCisJCWdpdCBjaGVja291dCAtYiBmb28gJiYKKwkJdGVzdF9jb21taXQgYl9mb28gJiYKKwkJZ2l0IGNoZWNrb3V0IC1iIGJheiAmJgorCQl0ZXN0X2NvbW1pdCBiX2JhegorCSkgJiYKKwlnaXQgcmVtb3RlIGFkZCByZXBvX2EgcmVwb19hICYmCisJZ2l0IHJlbW90ZSBhZGQgcmVwb19iIHJlcG9fYiAmJgorCWdpdCBjb25maWcgcmVtb3RlLnJlcG9fYi5mZXRjaCBcCisJCSIrcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy9vdGhlcl9iLyoiICYmCisJZ2l0IGZldGNoIC0tYWxsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrb3V0IG9mIG5vbi1leGlzdGluZyBicmFuY2ggZmFpbHMnICcKKwlnaXQgY2hlY2tvdXQgLUIgbWFzdGVyICYmCisJdGVzdF9taWdodF9mYWlsIGdpdCBicmFuY2ggLUQgeHl6enkgJiYKKworCXRlc3RfbXVzdF9mYWlsIGdpdCBjaGVja291dCB4eXp6eSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy94eXp6eSAmJgorCXRlc3RfYnJhbmNoIG1hc3RlcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja291dCBvZiBicmFuY2ggZnJvbSBtdWx0aXBsZSByZW1vdGVzIGZhaWxzICMxJyAnCisJZ2l0IGNoZWNrb3V0IC1CIG1hc3RlciAmJgorCXRlc3RfbWlnaHRfZmFpbCBnaXQgYnJhbmNoIC1EIGZvbyAmJgorCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNoZWNrb3V0IGZvbyAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9mb28gJiYKKwl0ZXN0X2JyYW5jaCBtYXN0ZXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgb2YgYnJhbmNoIGZyb20gYSBzaW5nbGUgcmVtb3RlIHN1Y2NlZWRzICMxJyAnCisJZ2l0IGNoZWNrb3V0IC1CIG1hc3RlciAmJgorCXRlc3RfbWlnaHRfZmFpbCBnaXQgYnJhbmNoIC1EIGJhciAmJgorCisJZ2l0IGNoZWNrb3V0IGJhciAmJgorCXRlc3RfYnJhbmNoIGJhciAmJgorCXRlc3RfY21wX3JldiByZW1vdGVzL3JlcG9fYS9iYXIgSEVBRCAmJgorCXRlc3RfYnJhbmNoX3Vwc3RyZWFtIGJhciByZXBvX2EgYmFyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrb3V0IG9mIGJyYW5jaCBmcm9tIGEgc2luZ2xlIHJlbW90ZSBzdWNjZWVkcyAjMicgJworCWdpdCBjaGVja291dCAtQiBtYXN0ZXIgJiYKKwl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGJyYW5jaCAtRCBiYXogJiYKKworCWdpdCBjaGVja291dCBiYXogJiYKKwl0ZXN0X2JyYW5jaCBiYXogJiYKKwl0ZXN0X2NtcF9yZXYgcmVtb3Rlcy9vdGhlcl9iL2JheiBIRUFEICYmCisJdGVzdF9icmFuY2hfdXBzdHJlYW0gYmF6IHJlcG9fYiBiYXoKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1uby1ndWVzcyBzdXBwcmVzc2VzIGJyYW5jaCBhdXRvLXZpdmlmaWNhdGlvbicgJworCWdpdCBjaGVja291dCAtQiBtYXN0ZXIgJiYKKwl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGJyYW5jaCAtRCBiYXIgJiYKKworCXRlc3RfbXVzdF9mYWlsIGdpdCBjaGVja291dCAtLW5vLWd1ZXNzIGJhciAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9iYXIgJiYKKwl0ZXN0X2JyYW5jaCBtYXN0ZXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgbW9yZSByZW1vdGVzIHdpdGggdW5jb252ZW50aW9uYWwgcmVmc3BlY3MnICcKKwlnaXQgY2hlY2tvdXQgLUIgbWFzdGVyICYmCisJZ2l0IGluaXQgcmVwb19jICYmCisJKAorCQljZCByZXBvX2MgJiYKKwkJdGVzdF9jb21taXQgY19tYXN0ZXIgJiYKKwkJZ2l0IGNoZWNrb3V0IC1iIGJhciAmJgorCQl0ZXN0X2NvbW1pdCBjX2JhcgorCQlnaXQgY2hlY2tvdXQgLWIgc3BhbSAmJgorCQl0ZXN0X2NvbW1pdCBjX3NwYW0KKwkpICYmCisJZ2l0IGluaXQgcmVwb19kICYmCisJKAorCQljZCByZXBvX2QgJiYKKwkJdGVzdF9jb21taXQgZF9tYXN0ZXIgJiYKKwkJZ2l0IGNoZWNrb3V0IC1iIGJheiAmJgorCQl0ZXN0X2NvbW1pdCBmX2JhegorCQlnaXQgY2hlY2tvdXQgLWIgZWdncyAmJgorCQl0ZXN0X2NvbW1pdCBjX2VnZ3MKKwkpICYmCisJZ2l0IHJlbW90ZSBhZGQgcmVwb19jIHJlcG9fYyAmJgorCWdpdCBjb25maWcgcmVtb3RlLnJlcG9fYy5mZXRjaCBcCisJCSIrcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy9leHRyYV9kaXIvcmVwb19jL2V4dHJhX2Rpci8qIiAmJgorCWdpdCByZW1vdGUgYWRkIHJlcG9fZCByZXBvX2QgJiYKKwlnaXQgY29uZmlnIHJlbW90ZS5yZXBvX2QuZmV0Y2ggXAorCQkiK3JlZnMvaGVhZHMvKjpyZWZzL3JlcG9fZC8qIiAmJgorCWdpdCBmZXRjaCAtLWFsbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja291dCBvZiBicmFuY2ggZnJvbSBtdWx0aXBsZSByZW1vdGVzIGZhaWxzICMyJyAnCisJZ2l0IGNoZWNrb3V0IC1CIG1hc3RlciAmJgorCXRlc3RfbWlnaHRfZmFpbCBnaXQgYnJhbmNoIC1EIGJhciAmJgorCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNoZWNrb3V0IGJhciAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9iYXIgJiYKKwl0ZXN0X2JyYW5jaCBtYXN0ZXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgb2YgYnJhbmNoIGZyb20gbXVsdGlwbGUgcmVtb3RlcyBmYWlscyAjMycgJworCWdpdCBjaGVja291dCAtQiBtYXN0ZXIgJiYKKwl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGJyYW5jaCAtRCBiYXogJiYKKworCXRlc3RfbXVzdF9mYWlsIGdpdCBjaGVja291dCBiYXogJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvYmF6ICYmCisJdGVzdF9icmFuY2ggbWFzdGVyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrb3V0IG9mIGJyYW5jaCBmcm9tIGEgc2luZ2xlIHJlbW90ZSBzdWNjZWVkcyAjMycgJworCWdpdCBjaGVja291dCAtQiBtYXN0ZXIgJiYKKwl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGJyYW5jaCAtRCBzcGFtICYmCisKKwlnaXQgY2hlY2tvdXQgc3BhbSAmJgorCXRlc3RfYnJhbmNoIHNwYW0gJiYKKwl0ZXN0X2NtcF9yZXYgcmVmcy9yZW1vdGVzL2V4dHJhX2Rpci9yZXBvX2MvZXh0cmFfZGlyL3NwYW0gSEVBRCAmJgorCXRlc3RfYnJhbmNoX3Vwc3RyZWFtIHNwYW0gcmVwb19jIHNwYW0KKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgb2YgYnJhbmNoIGZyb20gYSBzaW5nbGUgcmVtb3RlIHN1Y2NlZWRzICM0JyAnCisJZ2l0IGNoZWNrb3V0IC1CIG1hc3RlciAmJgorCXRlc3RfbWlnaHRfZmFpbCBnaXQgYnJhbmNoIC1EIGVnZ3MgJiYKKworCWdpdCBjaGVja291dCBlZ2dzICYmCisJdGVzdF9icmFuY2ggZWdncyAmJgorCXRlc3RfY21wX3JldiByZWZzL3JlcG9fZC9lZ2dzIEhFQUQgJiYKKwl0ZXN0X2JyYW5jaF91cHN0cmVhbSBlZ2dzIHJlcG9fZCBlZ2dzCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MjAzMC11bnJlc29sdmUtaW5mby5zaCBiL3QvdDIwMzAtdW5yZXNvbHZlLWluZm8uc2gKaW5kZXggZjI2MjA2NS4uMzA5MTk5YiAxMDA3NTUKLS0tIGEvdC90MjAzMC11bnJlc29sdmUtaW5mby5zaAorKysgYi90L3QyMDMwLXVucmVzb2x2ZS1pbmZvLnNoCkBAIC00NCwxNCArNDQsMjEgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCiAJbWtkaXIgZmkgJiYKKwlwcmludGYgImFcMGEiID5iaW5hcnkgJiYKKwlnaXQgYWRkIGJpbmFyeSAmJgogCXRlc3RfY29tbWl0IGluaXRpYWwgZmkvbGUgZmlyc3QgJiYKIAlnaXQgYnJhbmNoIHNpZGUgJiYKIAlnaXQgYnJhbmNoIGFub3RoZXIgJiYKKwlwcmludGYgImFcMGIiID5iaW5hcnkgJiYKKwlnaXQgYWRkIGJpbmFyeSAmJgogCXRlc3RfY29tbWl0IHNlY29uZCBmaS9sZSBzZWNvbmQgJiYKIAlnaXQgY2hlY2tvdXQgc2lkZSAmJgogCXRlc3RfY29tbWl0IHRoaXJkIGZpL2xlIHRoaXJkICYmCisJZ2l0IGJyYW5jaCBhZGQtYWRkICYmCiAJZ2l0IGNoZWNrb3V0IGFub3RoZXIgJiYKIAl0ZXN0X2NvbW1pdCBmb3VydGggZmkvbGUgZm91cnRoICYmCisJZ2l0IGNoZWNrb3V0IGFkZC1hZGQgJiYKKwl0ZXN0X2NvbW1pdCBmaWZ0aCBhZGQtZGlmZmVyZW50bHkgJiYKIAlnaXQgY2hlY2tvdXQgbWFzdGVyCiAnCiAKQEAgLTE2Nyw0ICsxNzQsMjIgQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlcmVyZSBmb3JnZXQgKGJpbmFyeSknICcKKwlnaXQgY2hlY2tvdXQgLWYgc2lkZSAmJgorCXByaW50ZiAiYVwwYyIgPmJpbmFyeSAmJgorCWdpdCBjb21taXQgLWEgLW0gYmluYXJ5ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIHNlY29uZCAmJgorCWdpdCByZXJlcmUgZm9yZ2V0IGJpbmFyeQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXJlcmUgZm9yZ2V0IChhZGQtYWRkIGNvbmZsaWN0KScgJworCWdpdCBjaGVja291dCAtZiBtYXN0ZXIgJiYKKwllY2hvIG1hc3RlciA+YWRkLWRpZmZlcmVudGx5ICYmCisJZ2l0IGFkZCBhZGQtZGlmZmVyZW50bHkgJiYKKwlnaXQgY29tbWl0IC1tICJhZGQgZGlmZmVyZW50bHkiICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIGZpZnRoICYmCisJZ2l0IHJlcmVyZSBmb3JnZXQgYWRkLWRpZmZlcmVudGx5IDI+YWN0dWFsICYmCisJdGVzdF9pMThuZ3JlcCAibm8gcmVtZW1iZXJlZCIgYWN0dWFsCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MjEwNy11cGRhdGUtaW5kZXgtYmFzaWMuc2ggYi90L3QyMTA3LXVwZGF0ZS1pbmRleC1iYXNpYy5zaAppbmRleCA4MDlmYWZlLi5hNjQwNWQzIDEwMDc1NQotLS0gYS90L3QyMTA3LXVwZGF0ZS1pbmRleC1iYXNpYy5zaAorKysgYi90L3QyMTA3LXVwZGF0ZS1pbmRleC1iYXNpYy5zaApAQCAtMTUsNyArMTUsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd1cGRhdGUtaW5kZXggLS1ub25zZW5zZSBkdW1wcyB1c2FnZScgJwogCXRlc3RfZXhwZWN0X2NvZGUgMTI5IGdpdCB1cGRhdGUtaW5kZXggLS1ub25zZW5zZSAyPmVyciAmJgotCWdyZXAgIltVdV1zYWdlOiBnaXQgdXBkYXRlLWluZGV4IiBlcnIKKwl0ZXN0X2kxOG5ncmVwICJbVXVdc2FnZTogZ2l0IHVwZGF0ZS1pbmRleCIgZXJyCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3VwZGF0ZS1pbmRleCAtaCB3aXRoIGNvcnJ1cHQgaW5kZXgnICcKQEAgLTI2LDcgKzI2LDI2IEBACiAJCT4uZ2l0L2luZGV4ICYmCiAJCXRlc3RfZXhwZWN0X2NvZGUgMTI5IGdpdCB1cGRhdGUtaW5kZXggLWggPnVzYWdlIDI+JjEKIAkpICYmCi0JZ3JlcCAiW1V1XXNhZ2U6IGdpdCB1cGRhdGUtaW5kZXgiIGJyb2tlbi91c2FnZQorCXRlc3RfaTE4bmdyZXAgIltVdV1zYWdlOiBnaXQgdXBkYXRlLWluZGV4IiBicm9rZW4vdXNhZ2UKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1jYWNoZWluZm8gZG9lcyBub3QgYWNjZXB0IGJsb2IgbnVsbCBzaGExJyAnCisJZWNobyBjb250ZW50ID5maWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJZ2l0IHJldi1wYXJzZSA6ZmlsZSA+ZXhwZWN0ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHVwZGF0ZS1pbmRleCAtLWNhY2hlaW5mbyAxMDA2NDQgJF96NDAgZmlsZSAmJgorCWdpdCByZXYtcGFyc2UgOmZpbGUgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1jYWNoZWluZm8gZG9lcyBub3QgYWNjZXB0IGdpdGxpbmsgbnVsbCBzaGExJyAnCisJZ2l0IGluaXQgc3VibW9kdWxlICYmCisJKGNkIHN1Ym1vZHVsZSAmJiB0ZXN0X2NvbW1pdCBmb28pICYmCisJZ2l0IGFkZCBzdWJtb2R1bGUgJiYKKwlnaXQgcmV2LXBhcnNlIDpzdWJtb2R1bGUgPmV4cGVjdCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCB1cGRhdGUtaW5kZXggLS1jYWNoZWluZm8gMTYwMDAwICRfejQwIHN1Ym1vZHVsZSAmJgorCWdpdCByZXYtcGFyc2UgOnN1Ym1vZHVsZSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDIyMDAtYWRkLXVwZGF0ZS5zaCBiL3QvdDIyMDAtYWRkLXVwZGF0ZS5zaAppbmRleCA0Y2RlYmRhLi5iMmJkNDE5IDEwMDc1NQotLS0gYS90L3QyMjAwLWFkZC11cGRhdGUuc2gKKysrIGIvdC90MjIwMC1hZGQtdXBkYXRlLnNoCkBAIC04MCw2ICs4MCwyMiBAQAogCiAnCiAKKyMgTm90ZSB0aGF0IHRoaXMgaXMgc2NoZWR1bGVkIHRvIGNoYW5nZSBpbiBHaXQgMi4wLCB3aGVuCisjICJnaXQgYWRkIC11IiB3aWxsIGJlY29tZSBmdWxsLXRyZWUgYnkgZGVmYXVsdC4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vbi1saW1pdGVkIHVwZGF0ZSBpbiBzdWJkaXIgbGVhdmVzIHJvb3QgYWxvbmUnICcKKwkoCisJCWNkIGRpcjEgJiYKKwkJZWNobyBldmVuIG1vcmUgPj5zdWIyICYmCisJCWdpdCBhZGQgLXUKKwkpICYmCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCWNoZWNrCisJdG9wCisJRU9GCisJZ2l0IGRpZmYtZmlsZXMgLS1uYW1lLW9ubHkgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAncmVwbGFjZSBhIGZpbGUgd2l0aCBhIHN5bWxpbmsnICcKIAogCXJtIGZvbyAmJgpAQCAtMTUwLDkgKzE2Niw5IEBACiAJZWNobyAyID5wYXRoMyAmJgogCWVjaG8gMiA+cGF0aDUgJiYKIAotCSMgRXhwbGljaXQgcmVzb2x2aW5nIGJ5IGFkZGluZyByZW1vdmVkIHBhdGhzIHNob3VsZCBmYWlsCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IGFkZCBwYXRoNCAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCBhZGQgcGF0aDYgJiYKKwkjIEZhaWwgdG8gZXhwbGljaXRseSByZXNvbHZlIHJlbW92ZWQgcGF0aHMgd2l0aCAiZ2l0IGFkZCIKKwl0ZXN0X211c3RfZmFpbCBnaXQgYWRkIC0tbm8tYWxsIHBhdGg0ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFkZCAtLW5vLWFsbCBwYXRoNiAmJgogCiAJIyAiYWRkIC11IiBzaG91bGQgbm90aWNlIHJlbW92YWxzIG5vIG1hdHRlciB3aGF0IHN0YWdlcwogCSMgdGhlIGluZGV4IGVudHJpZXMgYXJlIGluLgpkaWZmIC0tZ2l0IGEvdC90MjIwMy1hZGQtaW50ZW50LnNoIGIvdC90MjIwMy1hZGQtaW50ZW50LnNoCmluZGV4IGVjMzU0MDkuLjJhNGE3NDkgMTAwNzU1Ci0tLSBhL3QvdDIyMDMtYWRkLWludGVudC5zaAorKysgYi90L3QyMjAzLWFkZC1pbnRlbnQuc2gKQEAgLTYyLDUgKzYyLDI1IEBACiAJZ2l0IGNvbW1pdCAtYSAtbSBhbGwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2FjaGUtdHJlZSBpbnZhbGlkYXRlcyBpLXQtYSBwYXRocycgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwlta2RpciBkaXIgJiYKKwk6ID5kaXIvZm9vICYmCisJZ2l0IGFkZCBkaXIvZm9vICYmCisJZ2l0IGNvbW1pdCAtbSBmb28gJiYKKworCTogPmRpci9iYXIgJiYKKwlnaXQgYWRkIC1OIGRpci9iYXIgJiYKKwlnaXQgZGlmZiAtLWNhY2hlZCAtLW5hbWUtb25seSA+YWN0dWFsICYmCisJZWNobyBkaXIvYmFyID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisKKwlnaXQgd3JpdGUtdHJlZSA+L2Rldi9udWxsICYmCisKKwlnaXQgZGlmZiAtLWNhY2hlZCAtLW5hbWUtb25seSA+YWN0dWFsICYmCisJZWNobyBkaXIvYmFyID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKIHRlc3RfZG9uZQogCmRpZmYgLS1naXQgYS90L3QzMDAxLWxzLWZpbGVzLW90aGVycy1leGNsdWRlLnNoIGIvdC90MzAwMS1scy1maWxlcy1vdGhlcnMtZXhjbHVkZS5zaAppbmRleCBjOGZlOTc4Li5mMDQyMWMwIDEwMDc1NQotLS0gYS90L3QzMDAxLWxzLWZpbGVzLW90aGVycy1leGNsdWRlLnNoCisrKyBiL3QvdDMwMDEtbHMtZmlsZXMtb3RoZXJzLWV4Y2x1ZGUuc2gKQEAgLTEwMyw3ICsxMDMsNyBAQAogICAgICB0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0JwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXN0b3JlIGdpdGlnbm9yZScgJwotCWdpdCBjaGVja291dCAkYWxsaWdub3JlcyAmJgorCWdpdCBjaGVja291dCAtLWlnbm9yZS1za2lwLXdvcmt0cmVlLWJpdHMgJGFsbGlnbm9yZXMgJiYKIAlybSAuZ2l0L2luZGV4CiAnCiAKQEAgLTE3NSw2ICsxNzUsMjQgQEAKIAlncmVwICJeYS4xIiBvdXRwdXQKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZXhjbHVkZWQgZGlyZWN0b3J5IG92ZXJyaWRlcyBjb250ZW50IHBhdHRlcm5zJyAnCisKKwlnaXQgbHMtZmlsZXMgLS1vdGhlcnMgLS1leGNsdWRlPSJvbmUiIC0tZXhjbHVkZT0iIW9uZS9hLjEiID5vdXRwdXQgJiYKKwlpZiBncmVwICJeb25lL2EuMSIgb3V0cHV0CisJdGhlbgorCQlmYWxzZQorCWZpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25lZ2F0ZWQgZGlyZWN0b3J5IGRvZXNuJ1wnJ3QgYWZmZWN0IGNvbnRlbnQgcGF0dGVybnMnICcKKworCWdpdCBscy1maWxlcyAtLW90aGVycyAtLWV4Y2x1ZGU9IiFvbmUiIC0tZXhjbHVkZT0ib25lL2EuMSIgPm91dHB1dCAmJgorCWlmIGdyZXAgIl5vbmUvYS4xIiBvdXRwdXQKKwl0aGVuCisJCWZhbHNlCisJZmkKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3ViZGlyZWN0b3J5IGlnbm9yZSAoc2V0dXApJyAnCiAJbWtkaXIgLXAgdG9wL2wxL2wyICYmCiAJKApAQCAtMjE0LDQgKzIzMiw3NyBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvdy9oaWRlIGVtcHR5IGlnbm9yZWQgZGlyZWN0b3J5IChzZXR1cCknICcKKwlybSB0b3AvbDEvbDIvbDEgJiYKKwlybSB0b3AvbDEvLmdpdGlnbm9yZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG93IGVtcHR5IGlnbm9yZWQgZGlyZWN0b3J5IHdpdGggLS1kaXJlY3RvcnknICcKKwkoCisJCWNkIHRvcCAmJgorCQlnaXQgbHMtZmlsZXMgLW8gLWkgLS1leGNsdWRlIGwxIC0tZGlyZWN0b3J5CisJKSA+YWN0dWFsICYmCisJZWNobyBsMS8gPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaGlkZSBlbXB0eSBpZ25vcmVkIGRpcmVjdG9yeSB3aXRoIC0tbm8tZW1wdHktZGlyZWN0b3J5JyAnCisJKAorCQljZCB0b3AgJiYKKwkJZ2l0IGxzLWZpbGVzIC1vIC1pIC0tZXhjbHVkZSBsMSAtLWRpcmVjdG9yeSAtLW5vLWVtcHR5LWRpcmVjdG9yeQorCSkgPmFjdHVhbCAmJgorCT5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3cvaGlkZSBlbXB0eSBpZ25vcmVkIHN1Yi1kaXJlY3RvcnkgKHNldHVwKScgJworCT4gdG9wL2wxL3RyYWNrZWQgJiYKKwkoCisJCWNkIHRvcCAmJgorCQlnaXQgYWRkIC1mIGwxL3RyYWNrZWQKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3cgZW1wdHkgaWdub3JlZCBzdWItZGlyZWN0b3J5IHdpdGggLS1kaXJlY3RvcnknICcKKwkoCisJCWNkIHRvcCAmJgorCQlnaXQgbHMtZmlsZXMgLW8gLWkgLS1leGNsdWRlIGwxIC0tZGlyZWN0b3J5CisJKSA+YWN0dWFsICYmCisJZWNobyBsMS9sMi8gPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaGlkZSBlbXB0eSBpZ25vcmVkIHN1Yi1kaXJlY3Rvcnkgd2l0aCAtLW5vLWVtcHR5LWRpcmVjdG9yeScgJworCSgKKwkJY2QgdG9wICYmCisJCWdpdCBscy1maWxlcyAtbyAtaSAtLWV4Y2x1ZGUgbDEgLS1kaXJlY3RvcnkgLS1uby1lbXB0eS1kaXJlY3RvcnkKKwkpID5hY3R1YWwgJiYKKwk+ZXhwZWN0ICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwYXR0ZXJuIG1hdGNoZXMgcHJlZml4IGNvbXBsZXRlbHknICcKKwk6ID5leHBlY3QgJiYKKwlnaXQgbHMtZmlsZXMgLWkgLW8gLS1leGNsdWRlICIvdGhyZWUvYS4zW2FiY10iID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xzLWZpbGVzIHdpdGggIioqIiBwYXR0ZXJucycgJworCWNhdCA8PFxFT0YgPmV4cGVjdCAmJgorYS4xCitvbmUvYS4xCitvbmUvdHdvL2EuMQordGhyZWUvYS4xCitFT0YKKwlnaXQgbHMtZmlsZXMgLW8gLWkgLS1leGNsdWRlICIqKi9hLjEiID5hY3R1YWwKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbHMtZmlsZXMgd2l0aCAiKioiIHBhdHRlcm5zIGFuZCBubyBzbGFzaGVzJyAnCisJOiA+ZXhwZWN0ICYmCisJZ2l0IGxzLWZpbGVzIC1vIC1pIC0tZXhjbHVkZSAib25lKiphLjEiID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzAwNC1scy1maWxlcy1iYXNpYy5zaCBiL3QvdDMwMDQtbHMtZmlsZXMtYmFzaWMuc2gKaW5kZXggNDkwZTA1Mi4uOGQ5YmMzYyAxMDA3NTUKLS0tIGEvdC90MzAwNC1scy1maWxlcy1iYXNpYy5zaAorKysgYi90L3QzMDA0LWxzLWZpbGVzLWJhc2ljLnNoCkBAIC0yMiw3ICsyMiw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xzLWZpbGVzIHdpdGggbm9uc2Vuc2Ugb3B0aW9uJyAnCiAJdGVzdF9leHBlY3RfY29kZSAxMjkgZ2l0IGxzLWZpbGVzIC0tbm9uc2Vuc2UgMj5hY3R1YWwgJiYKLQlncmVwICJbVXVdc2FnZTogZ2l0IGxzLWZpbGVzIiBhY3R1YWwKKwl0ZXN0X2kxOG5ncmVwICJbVXVdc2FnZTogZ2l0IGxzLWZpbGVzIiBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbHMtZmlsZXMgLWggaW4gY29ycnVwdCByZXBvc2l0b3J5JyAnCkBAIC0zMyw3ICszMyw3IEBACiAJCT4uZ2l0L2luZGV4ICYmCiAJCXRlc3RfZXhwZWN0X2NvZGUgMTI5IGdpdCBscy1maWxlcyAtaCA+dXNhZ2UgMj4mMQogCSkgJiYKLQlncmVwICJbVXVdc2FnZTogZ2l0IGxzLWZpbGVzICIgYnJva2VuL3VzYWdlCisJdGVzdF9pMThuZ3JlcCAiW1V1XXNhZ2U6IGdpdCBscy1maWxlcyAiIGJyb2tlbi91c2FnZQogJwogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDMwMDYtbHMtZmlsZXMtbG9uZy5zaCBiL3QvdDMwMDYtbHMtZmlsZXMtbG9uZy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yMDJhZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvdC90MzAwNi1scy1maWxlcy1sb25nLnNoCkBAIC0wLDAgKzEsMzkgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdvdmVybHkgbG9uZyBwYXRocycKKy4gLi90ZXN0LWxpYi5zaAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKKwlwPWZpbGVmaWxlZmlsZWZpbGVmaWxlZmlsZWZpbGVmaWxlICYmCisJcD0kcCRwJHAkcCRwJHAkcCRwJHAkcCRwJHAkcCRwJHAkcCAmJgorCXA9JHAkcCRwJHAkcCRwJHAkcCRwJHAkcCRwJHAkcCRwJHAgJiYKKworCXBhdGhfYT0ke3B9X2EgJiYKKwlwYXRoX3o9JHtwfV96ICYmCisKKwlibG9iX2E9JChlY2hvIGZyb3R6IHwgZ2l0IGhhc2gtb2JqZWN0IC13IC0tc3RkaW4pICYmCisJYmxvYl96PSQoZWNobyBuaXRmb2wgfCBnaXQgaGFzaC1vYmplY3QgLXcgLS1zdGRpbikgJiYKKworCXBhdD0iMTAwNjQ0ICVzIDBcdCVzXG4iCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ292ZXJseS1sb25nIHBhdGggYnkgaXRzZWxmIGlzIG5vdCBhIHByb2JsZW0nICcKKwlwcmludGYgIiRwYXQiICIkYmxvYl9hIiAiJHBhdGhfYSIgfAorCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgLS1pbmRleC1pbmZvICYmCisJZWNobyAiJHBhdGhfYSIgPmV4cGVjdCAmJgorCWdpdCBscy1maWxlcyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdvdmVybHktbG9uZyBwYXRoIGRvZXMgbm90IHJlcGxhY2UgYW5vdGhlciBieSBtaXN0YWtlJyAnCisJcHJpbnRmICIkcGF0IiAiJGJsb2JfYSIgIiRwYXRoX2EiICIkYmxvYl96IiAiJHBhdGhfeiIgfAorCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgLS1pbmRleC1pbmZvICYmCisJKAorCQllY2hvICIkcGF0aF9hIgorCQllY2hvICIkcGF0aF96IgorCSkgPmV4cGVjdCAmJgorCWdpdCBscy1maWxlcyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDMwNzAtd2lsZG1hdGNoLnNoIGIvdC90MzA3MC13aWxkbWF0Y2guc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzg0NDZhMAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDMwNzAtd2lsZG1hdGNoLnNoCkBAIC0wLDAgKzEsMjgxIEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nd2lsZG1hdGNoIHRlc3RzJworCisuIC4vdGVzdC1saWIuc2gKKworbWF0Y2goKSB7CisgICAgaWYgWyAkMSA9IDEgXTsgdGhlbgorCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIndpbGRtYXRjaDogICAgIG1hdGNoICckMycgJyQ0JyIgIgorCSAgICB0ZXN0LXdpbGRtYXRjaCB3aWxkbWF0Y2ggJyQzJyAnJDQnCisJIgorICAgIGVsc2UKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJ3aWxkbWF0Y2g6ICBubyBtYXRjaCAnJDMnICckNCciICIKKwkgICAgISB0ZXN0LXdpbGRtYXRjaCB3aWxkbWF0Y2ggJyQzJyAnJDQnCisJIgorICAgIGZpCisgICAgaWYgWyAkMiA9IDEgXTsgdGhlbgorCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgImZubWF0Y2g6ICAgICAgIG1hdGNoICckMycgJyQ0JyIgIgorCSAgICB0ZXN0LXdpbGRtYXRjaCBmbm1hdGNoICckMycgJyQ0JworCSIKKyAgICBlbGlmIFsgJDIgPSAwIF07IHRoZW4KKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJmbm1hdGNoOiAgICBubyBtYXRjaCAnJDMnICckNCciICIKKwkgICAgISB0ZXN0LXdpbGRtYXRjaCBmbm1hdGNoICckMycgJyQ0JworCSIKKyMgICAgZWxzZQorIwl0ZXN0X2V4cGVjdF9zdWNjZXNzIEJST0tFTl9GTk1BVENIICJmbm1hdGNoOiAgICAgICAnJDMnICckNCciICIKKyMJICAgICEgdGVzdC13aWxkbWF0Y2ggZm5tYXRjaCAnJDMnICckNCcKKyMJIgorICAgIGZpCit9CisKK2ltYXRjaCgpIHsKKyAgICBpZiBbICQxID0gMSBdOyB0aGVuCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiaXdpbGRtYXRjaDogICAgbWF0Y2ggJyQyJyAnJDMnIiAiCisJICAgIHRlc3Qtd2lsZG1hdGNoIGl3aWxkbWF0Y2ggJyQyJyAnJDMnCisJIgorICAgIGVsc2UKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJpd2lsZG1hdGNoOiBubyBtYXRjaCAnJDInICckMyciICIKKwkgICAgISB0ZXN0LXdpbGRtYXRjaCBpd2lsZG1hdGNoICckMicgJyQzJworCSIKKyAgICBmaQorfQorCitwYXRobWF0Y2goKSB7CisgICAgaWYgWyAkMSA9IDEgXTsgdGhlbgorCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInBhdGhtYXRjaDogICAgIG1hdGNoICckMicgJyQzJyIgIgorCSAgICB0ZXN0LXdpbGRtYXRjaCBwYXRobWF0Y2ggJyQyJyAnJDMnCisJIgorICAgIGVsc2UKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJwYXRobWF0Y2g6ICBubyBtYXRjaCAnJDInICckMyciICIKKwkgICAgISB0ZXN0LXdpbGRtYXRjaCBwYXRobWF0Y2ggJyQyJyAnJDMnCisJIgorICAgIGZpCit9CisKKyMgQmFzaWMgd2lsZG1hdCBmZWF0dXJlcworbWF0Y2ggMSAxIGZvbyBmb28KK21hdGNoIDAgMCBmb28gYmFyCittYXRjaCAxIDEgJycgIiIKK21hdGNoIDEgMSBmb28gJz8/PycKK21hdGNoIDAgMCBmb28gJz8/JworbWF0Y2ggMSAxIGZvbyAnKicKK21hdGNoIDEgMSBmb28gJ2YqJworbWF0Y2ggMCAwIGZvbyAnKmYnCittYXRjaCAxIDEgZm9vICcqZm9vKicKK21hdGNoIDEgMSBmb29iYXIgJypvYiphKnIqJworbWF0Y2ggMSAxIGFhYWFhYWFiYWJhYmFiICcqYWInCittYXRjaCAxIDEgJ2ZvbyonICdmb29cKicKK21hdGNoIDAgMCBmb29iYXIgJ2Zvb1wqYmFyJworbWF0Y2ggMSAxICdmXG9vJyAnZlxcb28nCittYXRjaCAxIDEgYmFsbCAnKlthbF0/JworbWF0Y2ggMCAwIHRlbiAnW3Rlbl0nCittYXRjaCAwIDEgdGVuICcqKlshdGVdJworbWF0Y2ggMCAwIHRlbiAnKipbIXRlbl0nCittYXRjaCAxIDEgdGVuICd0W2EtZ11uJworbWF0Y2ggMCAwIHRlbiAndFshYS1nXW4nCittYXRjaCAxIDEgdG9uICd0WyFhLWddbicKK21hdGNoIDEgMSB0b24gJ3RbXmEtZ11uJworbWF0Y2ggMSB4ICdhXWInICdhW11dYicKK21hdGNoIDEgeCBhLWIgJ2FbXS1dYicKK21hdGNoIDEgeCAnYV1iJyAnYVtdLV1iJworbWF0Y2ggMCB4IGFhYiAnYVtdLV1iJworbWF0Y2ggMSB4IGFhYiAnYVtdYS1dYicKK21hdGNoIDEgMSAnXScgJ10nCisKKyMgRXh0ZW5kZWQgc2xhc2gtbWF0Y2hpbmcgZmVhdHVyZXMKK21hdGNoIDAgMCAnZm9vL2Jhei9iYXInICdmb28qYmFyJworbWF0Y2ggMCAwICdmb28vYmF6L2JhcicgJ2ZvbyoqYmFyJworbWF0Y2ggMCAxICdmb29iYXpiYXInICdmb28qKmJhcicKK21hdGNoIDEgMSAnZm9vL2Jhei9iYXInICdmb28vKiovYmFyJworbWF0Y2ggMSAwICdmb28vYmF6L2JhcicgJ2Zvby8qKi8qKi9iYXInCittYXRjaCAxIDAgJ2Zvby9iL2Evei9iYXInICdmb28vKiovYmFyJworbWF0Y2ggMSAwICdmb28vYi9hL3ovYmFyJyAnZm9vLyoqLyoqL2JhcicKK21hdGNoIDEgMCAnZm9vL2JhcicgJ2Zvby8qKi9iYXInCittYXRjaCAxIDAgJ2Zvby9iYXInICdmb28vKiovKiovYmFyJworbWF0Y2ggMCAwICdmb28vYmFyJyAnZm9vP2JhcicKK21hdGNoIDAgMCAnZm9vL2JhcicgJ2Zvb1svXWJhcicKK21hdGNoIDAgMCAnZm9vL2JhcicgJ2ZbXmVpdV1bXmVpdV1bXmVpdV1bXmVpdV1bXmVpdV1yJworbWF0Y2ggMSAxICdmb28tYmFyJyAnZlteZWl1XVteZWl1XVteZWl1XVteZWl1XVteZWl1XXInCittYXRjaCAxIDAgJ2ZvbycgJyoqL2ZvbycKK21hdGNoIDEgeCAnWFhYL2ZvbycgJyoqL2ZvbycKK21hdGNoIDEgMCAnYmFyL2Jhei9mb28nICcqKi9mb28nCittYXRjaCAwIDAgJ2Jhci9iYXovZm9vJyAnKi9mb28nCittYXRjaCAwIDAgJ2Zvby9iYXIvYmF6JyAnKiovYmFyKicKK21hdGNoIDEgMCAnZGVlcC9mb28vYmFyL2JheicgJyoqL2Jhci8qJworbWF0Y2ggMCAwICdkZWVwL2Zvby9iYXIvYmF6LycgJyoqL2Jhci8qJworbWF0Y2ggMSAwICdkZWVwL2Zvby9iYXIvYmF6LycgJyoqL2Jhci8qKicKK21hdGNoIDAgMCAnZGVlcC9mb28vYmFyJyAnKiovYmFyLyonCittYXRjaCAxIDAgJ2RlZXAvZm9vL2Jhci8nICcqKi9iYXIvKionCittYXRjaCAwIDAgJ2Zvby9iYXIvYmF6JyAnKiovYmFyKionCittYXRjaCAxIDAgJ2Zvby9iYXIvYmF6L3gnICcqL2Jhci8qKicKK21hdGNoIDAgMCAnZGVlcC9mb28vYmFyL2Jhei94JyAnKi9iYXIvKionCittYXRjaCAxIDAgJ2RlZXAvZm9vL2Jhci9iYXoveCcgJyoqL2Jhci8qLyonCisKKyMgVmFyaW91cyBhZGRpdGlvbmFsIHRlc3RzCittYXRjaCAwIDAgJ2FjcnQnICdhW2MtY11zdCcKK21hdGNoIDEgMSAnYWNydCcgJ2FbYy1jXXJ0JworbWF0Y2ggMCAwICddJyAnWyFdLV0nCittYXRjaCAxIHggJ2EnICdbIV0tXScKK21hdGNoIDAgMCAnJyAnXCcKK21hdGNoIDAgeCAnXCcgJ1wnCittYXRjaCAwIHggJ1hYWC9cJyAnKi9cJworbWF0Y2ggMSB4ICdYWFgvXCcgJyovXFwnCittYXRjaCAxIDEgJ2ZvbycgJ2ZvbycKK21hdGNoIDEgMSAnQGZvbycgJ0Bmb28nCittYXRjaCAwIDAgJ2ZvbycgJ0Bmb28nCittYXRjaCAxIDEgJ1thYl0nICdcW2FiXScKK21hdGNoIDEgMSAnW2FiXScgJ1tbXWFiXScKK21hdGNoIDEgeCAnW2FiXScgJ1tbOl1hYl0nCittYXRjaCAwIHggJ1thYl0nICdbWzo6XWFiXScKK21hdGNoIDEgeCAnW2FiXScgJ1tbOmRpZ2l0XWFiXScKK21hdGNoIDEgeCAnW2FiXScgJ1tcWzpdYWJdJworbWF0Y2ggMSAxICc/YT9iJyAnXD8/XD9iJworbWF0Y2ggMSAxICdhYmMnICdcYVxiXGMnCittYXRjaCAwIDAgJ2ZvbycgJycKK21hdGNoIDEgMCAnZm9vL2Jhci9iYXovdG8nICcqKi90W29dJworCisjIENoYXJhY3RlciBjbGFzcyB0ZXN0cworbWF0Y2ggMSB4ICdhMUInICdbWzphbHBoYTpdXVtbOmRpZ2l0Ol1dW1s6dXBwZXI6XV0nCittYXRjaCAwIHggJ2EnICdbWzpkaWdpdDpdWzp1cHBlcjpdWzpzcGFjZTpdXScKK21hdGNoIDEgeCAnQScgJ1tbOmRpZ2l0Ol1bOnVwcGVyOl1bOnNwYWNlOl1dJworbWF0Y2ggMSB4ICcxJyAnW1s6ZGlnaXQ6XVs6dXBwZXI6XVs6c3BhY2U6XV0nCittYXRjaCAwIHggJzEnICdbWzpkaWdpdDpdWzp1cHBlcjpdWzpzcGFjaTpdXScKK21hdGNoIDEgeCAnICcgJ1tbOmRpZ2l0Ol1bOnVwcGVyOl1bOnNwYWNlOl1dJworbWF0Y2ggMCB4ICcuJyAnW1s6ZGlnaXQ6XVs6dXBwZXI6XVs6c3BhY2U6XV0nCittYXRjaCAxIHggJy4nICdbWzpkaWdpdDpdWzpwdW5jdDpdWzpzcGFjZTpdXScKK21hdGNoIDEgeCAnNScgJ1tbOnhkaWdpdDpdXScKK21hdGNoIDEgeCAnZicgJ1tbOnhkaWdpdDpdXScKK21hdGNoIDEgeCAnRCcgJ1tbOnhkaWdpdDpdXScKK21hdGNoIDEgeCAnXycgJ1tbOmFsbnVtOl1bOmFscGhhOl1bOmJsYW5rOl1bOmNudHJsOl1bOmRpZ2l0Ol1bOmdyYXBoOl1bOmxvd2VyOl1bOnByaW50Ol1bOnB1bmN0Ol1bOnNwYWNlOl1bOnVwcGVyOl1bOnhkaWdpdDpdXScKK21hdGNoIDEgeCAnXycgJ1tbOmFsbnVtOl1bOmFscGhhOl1bOmJsYW5rOl1bOmNudHJsOl1bOmRpZ2l0Ol1bOmdyYXBoOl1bOmxvd2VyOl1bOnByaW50Ol1bOnB1bmN0Ol1bOnNwYWNlOl1bOnVwcGVyOl1bOnhkaWdpdDpdXScKK21hdGNoIDEgeCAnLicgJ1teWzphbG51bTpdWzphbHBoYTpdWzpibGFuazpdWzpjbnRybDpdWzpkaWdpdDpdWzpsb3dlcjpdWzpzcGFjZTpdWzp1cHBlcjpdWzp4ZGlnaXQ6XV0nCittYXRjaCAxIHggJzUnICdbYS1jWzpkaWdpdDpdeC16XScKK21hdGNoIDEgeCAnYicgJ1thLWNbOmRpZ2l0Ol14LXpdJworbWF0Y2ggMSB4ICd5JyAnW2EtY1s6ZGlnaXQ6XXgtel0nCittYXRjaCAwIHggJ3EnICdbYS1jWzpkaWdpdDpdeC16XScKKworIyBBZGRpdGlvbmFsIHRlc3RzLCBpbmNsdWRpbmcgc29tZSBtYWxmb3JtZWQgd2lsZG1hdHMKK21hdGNoIDEgeCAnXScgJ1tcXC1eXScKK21hdGNoIDAgMCAnWycgJ1tcXC1eXScKK21hdGNoIDEgeCAnLScgJ1tcLV9dJworbWF0Y2ggMSB4ICddJyAnW1xdXScKK21hdGNoIDAgMCAnXF0nICdbXF1dJworbWF0Y2ggMCAwICdcJyAnW1xdXScKK21hdGNoIDAgMCAnYWInICdhW11iJworbWF0Y2ggMCB4ICdhW11iJyAnYVtdYicKK21hdGNoIDAgeCAnYWJbJyAnYWJbJworbWF0Y2ggMCAwICdhYicgJ1shJworbWF0Y2ggMCAwICdhYicgJ1stJworbWF0Y2ggMSAxICctJyAnWy1dJworbWF0Y2ggMCAwICctJyAnW2EtJworbWF0Y2ggMCAwICctJyAnWyFhLScKK21hdGNoIDEgeCAnLScgJ1stLUFdJworbWF0Y2ggMSB4ICc1JyAnWy0tQV0nCittYXRjaCAxIDEgJyAnICdbIC0tXScKK21hdGNoIDEgMSAnJCcgJ1sgLS1dJworbWF0Y2ggMSAxICctJyAnWyAtLV0nCittYXRjaCAwIDAgJzAnICdbIC0tXScKK21hdGNoIDEgeCAnLScgJ1stLS1dJworbWF0Y2ggMSB4ICctJyAnWy0tLS0tLV0nCittYXRjaCAwIDAgJ2onICdbYS1lLW5dJworbWF0Y2ggMSB4ICctJyAnW2EtZS1uXScKK21hdGNoIDEgeCAnYScgJ1shLS0tLS0tXScKK21hdGNoIDAgMCAnWycgJ1tdLWFdJworbWF0Y2ggMSB4ICdeJyAnW10tYV0nCittYXRjaCAwIDAgJ14nICdbIV0tYV0nCittYXRjaCAxIHggJ1snICdbIV0tYV0nCittYXRjaCAxIDEgJ14nICdbYV5iY10nCittYXRjaCAxIHggJy1iXScgJ1thLV1iXScKK21hdGNoIDAgMCAnXCcgJ1tcXScKK21hdGNoIDEgMSAnXCcgJ1tcXF0nCittYXRjaCAwIDAgJ1wnICdbIVxcXScKK21hdGNoIDEgMSAnRycgJ1tBLVxcXScKK21hdGNoIDAgMCAnYWFhYmJiJyAnYiphJworbWF0Y2ggMCAwICdhYWJjYWEnICcqYmEqJworbWF0Y2ggMSAxICcsJyAnWyxdJworbWF0Y2ggMSAxICcsJyAnW1xcLF0nCittYXRjaCAxIDEgJ1wnICdbXFwsXScKK21hdGNoIDEgMSAnLScgJ1ssLS5dJworbWF0Y2ggMCAwICcrJyAnWywtLl0nCittYXRjaCAwIDAgJy0uXScgJ1ssLS5dJworbWF0Y2ggMSAxICcyJyAnW1wxLVwzXScKK21hdGNoIDEgMSAnMycgJ1tcMS1cM10nCittYXRjaCAwIDAgJzQnICdbXDEtXDNdJworbWF0Y2ggMSAxICdcJyAnW1stXF1dJworbWF0Y2ggMSAxICdbJyAnW1stXF1dJworbWF0Y2ggMSAxICddJyAnW1stXF1dJworbWF0Y2ggMCAwICctJyAnW1stXF1dJworCisjIFRlc3QgcmVjdXJzaW9uIGFuZCB0aGUgYWJvcnQgY29kZSAodXNlICJ3aWxkdGVzdCAtaSIgdG8gc2VlIGl0ZXJhdGlvbiBjb3VudHMpCittYXRjaCAxIDEgJy1hZG9iZS1jb3VyaWVyLWJvbGQtby1ub3JtYWwtLTEyLTEyMC03NS03NS1tLTcwLWlzbzg4NTktMScgJy0qLSotKi0qLSotKi0xMi0qLSotKi1tLSotKi0qJworbWF0Y2ggMCAwICctYWRvYmUtY291cmllci1ib2xkLW8tbm9ybWFsLS0xMi0xMjAtNzUtNzUtWC03MC1pc284ODU5LTEnICctKi0qLSotKi0qLSotMTItKi0qLSotbS0qLSotKicKK21hdGNoIDAgMCAnLWFkb2JlLWNvdXJpZXItYm9sZC1vLW5vcm1hbC0tMTItMTIwLTc1LTc1LS8tNzAtaXNvODg1OS0xJyAnLSotKi0qLSotKi0qLTEyLSotKi0qLW0tKi0qLSonCittYXRjaCAxIDEgJ1hYWC9hZG9iZS9jb3VyaWVyL2JvbGQvby9ub3JtYWwvLzEyLzEyMC83NS83NS9tLzcwL2lzbzg4NTkvMScgJ1hYWC8qLyovKi8qLyovKi8xMi8qLyovKi9tLyovKi8qJworbWF0Y2ggMCAwICdYWFgvYWRvYmUvY291cmllci9ib2xkL28vbm9ybWFsLy8xMi8xMjAvNzUvNzUvWC83MC9pc284ODU5LzEnICdYWFgvKi8qLyovKi8qLyovMTIvKi8qLyovbS8qLyovKicKK21hdGNoIDEgMCAnYWJjZC9hYmNkZWZnL2FiY2RlZmdoaWprL2FiY2RlZmdoaWprbG1ub3AudHh0JyAnKiovKmEqYipnKm4qdCcKK21hdGNoIDAgMCAnYWJjZC9hYmNkZWZnL2FiY2RlZmdoaWprL2FiY2RlZmdoaWprbG1ub3AudHh0eicgJyoqLyphKmIqZypuKnQnCittYXRjaCAwIHggZm9vICcqLyovKicKK21hdGNoIDAgeCBmb28vYmFyICcqLyovKicKK21hdGNoIDEgeCBmb28vYmJhL2FyciAnKi8qLyonCittYXRjaCAwIHggZm9vL2JiL2FhL3JyICcqLyovKicKK21hdGNoIDEgeCBmb28vYmIvYWEvcnIgJyoqLyoqLyoqJworbWF0Y2ggMSB4IGFiY1hkZWZYZ2hpICcqWCppJworbWF0Y2ggMCB4IGFiL2NYZC9lZlhnL2hpICcqWCppJworbWF0Y2ggMSB4IGFiL2NYZC9lZlhnL2hpICcqLypYKi8qLyppJworbWF0Y2ggMSB4IGFiL2NYZC9lZlhnL2hpICcqKi8qWCovKiovKmknCisKK3BhdGhtYXRjaCAxIGZvbyBmb28KK3BhdGhtYXRjaCAwIGZvbyBmbworcGF0aG1hdGNoIDEgZm9vL2JhciBmb28vYmFyCitwYXRobWF0Y2ggMSBmb28vYmFyICdmb28vKicKK3BhdGhtYXRjaCAxIGZvby9iYmEvYXJyICdmb28vKicKK3BhdGhtYXRjaCAxIGZvby9iYmEvYXJyICdmb28vKionCitwYXRobWF0Y2ggMSBmb28vYmJhL2FyciAnZm9vKicKK3BhdGhtYXRjaCAxIGZvby9iYmEvYXJyICdmb28qKicKK3BhdGhtYXRjaCAxIGZvby9iYmEvYXJyICdmb28vKmFycicKK3BhdGhtYXRjaCAxIGZvby9iYmEvYXJyICdmb28vKiphcnInCitwYXRobWF0Y2ggMCBmb28vYmJhL2FyciAnZm9vLyp6JworcGF0aG1hdGNoIDAgZm9vL2JiYS9hcnIgJ2Zvby8qKnonCitwYXRobWF0Y2ggMSBmb28vYmFyICdmb28/YmFyJworcGF0aG1hdGNoIDEgZm9vL2JhciAnZm9vWy9dYmFyJworcGF0aG1hdGNoIDAgZm9vICcqLyovKicKK3BhdGhtYXRjaCAwIGZvby9iYXIgJyovKi8qJworcGF0aG1hdGNoIDEgZm9vL2JiYS9hcnIgJyovKi8qJworcGF0aG1hdGNoIDEgZm9vL2JiL2FhL3JyICcqLyovKicKK3BhdGhtYXRjaCAxIGFiY1hkZWZYZ2hpICcqWCppJworcGF0aG1hdGNoIDEgYWIvY1hkL2VmWGcvaGkgJyovKlgqLyovKmknCitwYXRobWF0Y2ggMSBhYi9jWGQvZWZYZy9oaSAnKlhnKmknCisKKyMgQ2FzZS1zZW5zaXRpdnkgZmVhdHVyZXMKK21hdGNoIDAgeCAnYScgJ1tBLVpdJworbWF0Y2ggMSB4ICdBJyAnW0EtWl0nCittYXRjaCAwIHggJ0EnICdbYS16XScKK21hdGNoIDEgeCAnYScgJ1thLXpdJworbWF0Y2ggMCB4ICdhJyAnW1s6dXBwZXI6XV0nCittYXRjaCAxIHggJ0EnICdbWzp1cHBlcjpdXScKK21hdGNoIDAgeCAnQScgJ1tbOmxvd2VyOl1dJworbWF0Y2ggMSB4ICdhJyAnW1s6bG93ZXI6XV0nCittYXRjaCAwIHggJ0EnICdbQi1aYV0nCittYXRjaCAxIHggJ2EnICdbQi1aYV0nCittYXRjaCAwIHggJ0EnICdbQi1hXScKK21hdGNoIDEgeCAnYScgJ1tCLWFdJworbWF0Y2ggMCB4ICd6JyAnW1oteV0nCittYXRjaCAxIHggJ1onICdbWi15XScKKworaW1hdGNoIDEgJ2EnICdbQS1aXScKK2ltYXRjaCAxICdBJyAnW0EtWl0nCitpbWF0Y2ggMSAnQScgJ1thLXpdJworaW1hdGNoIDEgJ2EnICdbYS16XScKK2ltYXRjaCAxICdhJyAnW1s6dXBwZXI6XV0nCitpbWF0Y2ggMSAnQScgJ1tbOnVwcGVyOl1dJworaW1hdGNoIDEgJ0EnICdbWzpsb3dlcjpdXScKK2ltYXRjaCAxICdhJyAnW1s6bG93ZXI6XV0nCitpbWF0Y2ggMSAnQScgJ1tCLVphXScKK2ltYXRjaCAxICdhJyAnW0ItWmFdJworaW1hdGNoIDEgJ0EnICdbQi1hXScKK2ltYXRjaCAxICdhJyAnW0ItYV0nCitpbWF0Y2ggMSAneicgJ1taLXldJworaW1hdGNoIDEgJ1onICdbWi15XScKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QzMjAwLWJyYW5jaC5zaCBiL3QvdDMyMDAtYnJhbmNoLnNoCmluZGV4IGExN2Y4YjIuLjQ0ZWM2YTQgMTAwNzU1Ci0tLSBhL3QvdDMyMDAtYnJhbmNoLnNoCisrKyBiL3QvdDMyMDAtYnJhbmNoLnNoCkBAIC03LDIwICs3LDE4IEBACiAKIC4gLi90ZXN0LWxpYi5zaAogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAncHJlcGFyZSBhIHRyaXZpYWwgcmVwb3NpdG9yeScgXAotICAgICdlY2hvIEhlbGxvID4gQSAmJgotICAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIEEgJiYKLSAgICAgZ2l0IGNvbW1pdCAtbSAiSW5pdGlhbCBjb21taXQuIiAmJgotICAgICBlY2hvIFdvcmxkID4+IEEgJiYKLSAgICAgZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBBICYmCi0gICAgIGdpdCBjb21taXQgLW0gIlNlY29uZCBjb21taXQuIiAmJgotICAgICBIRUFEPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKScKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ByZXBhcmUgYSB0cml2aWFsIHJlcG9zaXRvcnknICcKKwllY2hvIEhlbGxvID5BICYmCisJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBBICYmCisJZ2l0IGNvbW1pdCAtbSAiSW5pdGlhbCBjb21taXQuIiAmJgorCWVjaG8gV29ybGQgPj5BICYmCisJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBBICYmCisJZ2l0IGNvbW1pdCAtbSAiU2Vjb25kIGNvbW1pdC4iICYmCisJSEVBRD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCknCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgYnJhbmNoIC0taGVscCBzaG91bGQgbm90IGhhdmUgY3JlYXRlZCBhIGJvZ3VzIGJyYW5jaCcgJwotICAgICB0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGJyYW5jaCAtLWhlbHAgPC9kZXYvbnVsbCA+L2Rldi9udWxsIDI+L2Rldi9udWxsICYmCi0gICAgIHRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmVmcy9oZWFkcy8tLWhlbHAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBicmFuY2ggLS1oZWxwIHNob3VsZCBub3QgaGF2ZSBjcmVhdGVkIGEgYm9ndXMgYnJhbmNoJyAnCisJdGVzdF9taWdodF9mYWlsIGdpdCBicmFuY2ggLS1oZWxwIDwvZGV2L251bGwgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmVmcy9oZWFkcy8tLWhlbHAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYnJhbmNoIC1oIGluIGJyb2tlbiByZXBvc2l0b3J5JyAnCkBAIC0zMSw2NiArMjksNzAgQEAKIAkJPi5naXQvcmVmcy9oZWFkcy9tYXN0ZXIgJiYKIAkJdGVzdF9leHBlY3RfY29kZSAxMjkgZ2l0IGJyYW5jaCAtaCA+dXNhZ2UgMj4mMQogCSkgJiYKLQlncmVwICJbVXVdc2FnZSIgYnJva2VuL3VzYWdlCisJdGVzdF9pMThuZ3JlcCAiW1V1XXNhZ2UiIGJyb2tlbi91c2FnZQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnZ2l0IGJyYW5jaCBhYmMgc2hvdWxkIGNyZWF0ZSBhIGJyYW5jaCcgXAotICAgICdnaXQgYnJhbmNoIGFiYyAmJiB0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L3JlZnMvaGVhZHMvYWJjJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGJyYW5jaCBhYmMgc2hvdWxkIGNyZWF0ZSBhIGJyYW5jaCcgJworCWdpdCBicmFuY2ggYWJjICYmIHRlc3RfcGF0aF9pc19maWxlIC5naXQvcmVmcy9oZWFkcy9hYmMKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ2dpdCBicmFuY2ggYS9iL2Mgc2hvdWxkIGNyZWF0ZSBhIGJyYW5jaCcgXAotICAgICdnaXQgYnJhbmNoIGEvYi9jICYmIHRlc3RfcGF0aF9pc19maWxlIC5naXQvcmVmcy9oZWFkcy9hL2IvYycKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBicmFuY2ggYS9iL2Mgc2hvdWxkIGNyZWF0ZSBhIGJyYW5jaCcgJworCWdpdCBicmFuY2ggYS9iL2MgJiYgdGVzdF9wYXRoX2lzX2ZpbGUgLmdpdC9yZWZzL2hlYWRzL2EvYi9jCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBicmFuY2ggSEVBRCBzaG91bGQgZmFpbCcgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBicmFuY2ggSEVBRAorJwogCiBjYXQgPmV4cGVjdCA8PEVPRgogJF96NDAgJEhFQUQgJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+IDExMTcxNTAyMDAgKzAwMDAJYnJhbmNoOiBDcmVhdGVkIGZyb20gbWFzdGVyCiBFT0YKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgYnJhbmNoIC1sIGQvZS9mIHNob3VsZCBjcmVhdGUgYSBicmFuY2ggYW5kIGEgbG9nJyBcCi0JJ0dJVF9DT01NSVRURVJfREFURT0iMjAwNS0wNS0yNiAyMzozMCIgXAotICAgICBnaXQgYnJhbmNoIC1sIGQvZS9mICYmCi0JIHRlc3RfcGF0aF9pc19maWxlIC5naXQvcmVmcy9oZWFkcy9kL2UvZiAmJgotCSB0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9kL2UvZiAmJgotCSB0ZXN0X2NtcCBleHBlY3QgLmdpdC9sb2dzL3JlZnMvaGVhZHMvZC9lL2YnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgYnJhbmNoIC1sIGQvZS9mIHNob3VsZCBjcmVhdGUgYSBicmFuY2ggYW5kIGEgbG9nJyAnCisJR0lUX0NPTU1JVFRFUl9EQVRFPSIyMDA1LTA1LTI2IDIzOjMwIiBcCisJZ2l0IGJyYW5jaCAtbCBkL2UvZiAmJgorCXRlc3RfcGF0aF9pc19maWxlIC5naXQvcmVmcy9oZWFkcy9kL2UvZiAmJgorCXRlc3RfcGF0aF9pc19maWxlIC5naXQvbG9ncy9yZWZzL2hlYWRzL2QvZS9mICYmCisJdGVzdF9jbXAgZXhwZWN0IC5naXQvbG9ncy9yZWZzL2hlYWRzL2QvZS9mCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgYnJhbmNoIC1kIGQvZS9mIHNob3VsZCBkZWxldGUgYSBicmFuY2ggYW5kIGEgbG9nJyBcCi0JJ2dpdCBicmFuY2ggLWQgZC9lL2YgJiYKLQkgdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWZzL2hlYWRzL2QvZS9mICYmCi0JIHRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvbG9ncy9yZWZzL2hlYWRzL2QvZS9mJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGJyYW5jaCAtZCBkL2UvZiBzaG91bGQgZGVsZXRlIGEgYnJhbmNoIGFuZCBhIGxvZycgJworCWdpdCBicmFuY2ggLWQgZC9lL2YgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L3JlZnMvaGVhZHMvZC9lL2YgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9kL2UvZgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnZ2l0IGJyYW5jaCBqL2sgc2hvdWxkIHdvcmsgYWZ0ZXIgYnJhbmNoIGogaGFzIGJlZW4gZGVsZXRlZCcgXAotICAgICAgICdnaXQgYnJhbmNoIGogJiYKLSAgICAgICAgZ2l0IGJyYW5jaCAtZCBqICYmCi0gICAgICAgIGdpdCBicmFuY2ggai9rJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGJyYW5jaCBqL2sgc2hvdWxkIHdvcmsgYWZ0ZXIgYnJhbmNoIGogaGFzIGJlZW4gZGVsZXRlZCcgJworCWdpdCBicmFuY2ggaiAmJgorCWdpdCBicmFuY2ggLWQgaiAmJgorCWdpdCBicmFuY2ggai9rCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgYnJhbmNoIGwgc2hvdWxkIHdvcmsgYWZ0ZXIgYnJhbmNoIGwvbSBoYXMgYmVlbiBkZWxldGVkJyBcCi0gICAgICAgJ2dpdCBicmFuY2ggbC9tICYmCi0gICAgICAgIGdpdCBicmFuY2ggLWQgbC9tICYmCi0gICAgICAgIGdpdCBicmFuY2ggbCcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBicmFuY2ggbCBzaG91bGQgd29yayBhZnRlciBicmFuY2ggbC9tIGhhcyBiZWVuIGRlbGV0ZWQnICcKKwlnaXQgYnJhbmNoIGwvbSAmJgorCWdpdCBicmFuY2ggLWQgbC9tICYmCisJZ2l0IGJyYW5jaCBsCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgYnJhbmNoIC1tIGR1bXBzIHVzYWdlJyBcCi0gICAgICAgJ3Rlc3RfZXhwZWN0X2NvZGUgMTI5IGdpdCBicmFuY2ggLW0gMj5lcnIgJiYKLQlncmVwICJbVXVdc2FnZTogZ2l0IGJyYW5jaCIgZXJyJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGJyYW5jaCAtbSBkdW1wcyB1c2FnZScgJworCXRlc3RfZXhwZWN0X2NvZGUgMTI4IGdpdCBicmFuY2ggLW0gMj5lcnIgJiYKKwl0ZXN0X2kxOG5ncmVwICJicmFuY2ggbmFtZSByZXF1aXJlZCIgZXJyCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgYnJhbmNoIC1tIG0gbS9tIHNob3VsZCB3b3JrJyBcCi0gICAgICAgJ2dpdCBicmFuY2ggLWwgbSAmJgotICAgICAgICBnaXQgYnJhbmNoIC1tIG0gbS9tICYmCi0JdGVzdF9wYXRoX2lzX2ZpbGUgLmdpdC9sb2dzL3JlZnMvaGVhZHMvbS9tJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGJyYW5jaCAtbSBtIG0vbSBzaG91bGQgd29yaycgJworCWdpdCBicmFuY2ggLWwgbSAmJgorCWdpdCBicmFuY2ggLW0gbSBtL20gJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9tL20KKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ2dpdCBicmFuY2ggLW0gbi9uIG4gc2hvdWxkIHdvcmsnIFwKLSAgICAgICAnZ2l0IGJyYW5jaCAtbCBuL24gJiYKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBicmFuY2ggLW0gbi9uIG4gc2hvdWxkIHdvcmsnICcKKwlnaXQgYnJhbmNoIC1sIG4vbiAmJgogCWdpdCBicmFuY2ggLW0gbi9uIG4gJiYKLQl0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9uJworCXRlc3RfcGF0aF9pc19maWxlIC5naXQvbG9ncy9yZWZzL2hlYWRzL24KKycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGJyYW5jaCAtbSBvL28gbyBzaG91bGQgZmFpbCB3aGVuIG8vcCBleGlzdHMnICcKIAlnaXQgYnJhbmNoIG8vbyAmJgotICAgICAgICBnaXQgYnJhbmNoIG8vcCAmJgorCWdpdCBicmFuY2ggby9wICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJyYW5jaCAtbSBvL28gbwogJwogCkBAIC0yNDgsMjIgKzI1MCw0MSBAQAogCiBnaXQgY29uZmlnIGJyYW5jaC5zL3MuZHVtbXkgSGVsbG8KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ2dpdCBicmFuY2ggLW0gcy9zIHMgc2hvdWxkIHdvcmsgd2hlbiBzL3QgaXMgZGVsZXRlZCcgXAotICAgICAgICdnaXQgYnJhbmNoIC1sIHMvcyAmJgordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGJyYW5jaCAtbSBzL3MgcyBzaG91bGQgd29yayB3aGVuIHMvdCBpcyBkZWxldGVkJyAnCisJZ2l0IGJyYW5jaCAtbCBzL3MgJiYKIAl0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9zL3MgJiYKLSAgICAgICAgZ2l0IGJyYW5jaCAtbCBzL3QgJiYKKwlnaXQgYnJhbmNoIC1sIHMvdCAmJgogCXRlc3RfcGF0aF9pc19maWxlIC5naXQvbG9ncy9yZWZzL2hlYWRzL3MvdCAmJgotICAgICAgICBnaXQgYnJhbmNoIC1kIHMvdCAmJgotICAgICAgICBnaXQgYnJhbmNoIC1tIHMvcyBzICYmCi0JdGVzdF9wYXRoX2lzX2ZpbGUgLmdpdC9sb2dzL3JlZnMvaGVhZHMvcycKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29uZmlnIGluZm9ybWF0aW9uIHdhcyByZW5hbWVkLCB0b28nIFwKLQkidGVzdCAkKGdpdCBjb25maWcgYnJhbmNoLnMuZHVtbXkpID0gSGVsbG8gJiYKLQkgdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyBicmFuY2gucy9zL2R1bW15IgotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW5hbWluZyBhIHN5bXJlZiBpcyBub3QgYWxsb3dlZCcgXAorCWdpdCBicmFuY2ggLWQgcy90ICYmCisJZ2l0IGJyYW5jaCAtbSBzL3MgcyAmJgorCXRlc3RfcGF0aF9pc19maWxlIC5naXQvbG9ncy9yZWZzL2hlYWRzL3MKICcKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY29uZmlnIGluZm9ybWF0aW9uIHdhcyByZW5hbWVkLCB0b28nICcKKwl0ZXN0ICQoZ2l0IGNvbmZpZyBicmFuY2gucy5kdW1teSkgPSBIZWxsbyAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgYnJhbmNoLnMvcy9kdW1teQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZWxldGluZyBhIHN5bXJlZicgJworCWdpdCBicmFuY2ggdGFyZ2V0ICYmCisJZ2l0IHN5bWJvbGljLXJlZiByZWZzL2hlYWRzL3N5bXJlZiByZWZzL2hlYWRzL3RhcmdldCAmJgorCWVjaG8gIkRlbGV0ZWQgYnJhbmNoIHN5bXJlZiAod2FzIHJlZnMvaGVhZHMvdGFyZ2V0KS4iID5leHBlY3QgJiYKKwlnaXQgYnJhbmNoIC1kIHN5bXJlZiA+YWN0dWFsICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgLmdpdC9yZWZzL2hlYWRzL3RhcmdldCAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmVmcy9oZWFkcy9zeW1yZWYgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZWxldGluZyBhIGRhbmdsaW5nIHN5bXJlZicgJworCWdpdCBzeW1ib2xpYy1yZWYgcmVmcy9oZWFkcy9kYW5nbGluZy1zeW1yZWYgbm93aGVyZSAmJgorCXRlc3RfcGF0aF9pc19maWxlIC5naXQvcmVmcy9oZWFkcy9kYW5nbGluZy1zeW1yZWYgJiYKKwllY2hvICJEZWxldGVkIGJyYW5jaCBkYW5nbGluZy1zeW1yZWYgKHdhcyBub3doZXJlKS4iID5leHBlY3QgJiYKKwlnaXQgYnJhbmNoIC1kIGRhbmdsaW5nLXN5bXJlZiA+YWN0dWFsICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWZzL2hlYWRzL2RhbmdsaW5nLXN5bXJlZiAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbmFtaW5nIGEgc3ltcmVmIGlzIG5vdCBhbGxvd2VkJyAnCiAJZ2l0IHN5bWJvbGljLXJlZiByZWZzL2hlYWRzL21hc3RlcjIgcmVmcy9oZWFkcy9tYXN0ZXIgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC1tIG1hc3RlcjIgbWFzdGVyMyAmJgogCWdpdCBzeW1ib2xpYy1yZWYgcmVmcy9oZWFkcy9tYXN0ZXIyICYmCkBAIC0yNzEsMTE1ICsyOTIsMjMwIEBACiAJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWZzL2hlYWRzL21hc3RlcjMKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyBcCi0gICAgJ2dpdCBicmFuY2ggLW0gdSB2IHNob3VsZCBmYWlsIHdoZW4gdGhlIHJlZmxvZyBmb3IgdSBpcyBhIHN5bWxpbmsnICcKLSAgICAgZ2l0IGJyYW5jaCAtbCB1ICYmCi0gICAgIG12IC5naXQvbG9ncy9yZWZzL2hlYWRzL3UgcmVhbC11ICYmCi0gICAgIGxuIC1zIHJlYWwtdSAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy91ICYmCi0gICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBicmFuY2ggLW0gdSB2Cit0ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdnaXQgYnJhbmNoIC1tIHUgdiBzaG91bGQgZmFpbCB3aGVuIHRoZSByZWZsb2cgZm9yIHUgaXMgYSBzeW1saW5rJyAnCisJZ2l0IGJyYW5jaCAtbCB1ICYmCisJbXYgLmdpdC9sb2dzL3JlZnMvaGVhZHMvdSByZWFsLXUgJiYKKwlsbiAtcyByZWFsLXUgLmdpdC9sb2dzL3JlZnMvaGVhZHMvdSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBicmFuY2ggLW0gdSB2CiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgdHJhY2tpbmcgc2V0dXAgdmlhIC0tdHJhY2snIFwKLSAgICAnZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwudXJsIC4gJiYKLSAgICAgZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwuZmV0Y2ggcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy9sb2NhbC8qICYmCi0gICAgIChnaXQgc2hvdy1yZWYgLXEgcmVmcy9yZW1vdGVzL2xvY2FsL21hc3RlciB8fCBnaXQgZmV0Y2ggbG9jYWwpICYmCi0gICAgIGdpdCBicmFuY2ggLS10cmFjayBteTEgbG9jYWwvbWFzdGVyICYmCi0gICAgIHRlc3QgJChnaXQgY29uZmlnIGJyYW5jaC5teTEucmVtb3RlKSA9IGxvY2FsICYmCi0gICAgIHRlc3QgJChnaXQgY29uZmlnIGJyYW5jaC5teTEubWVyZ2UpID0gcmVmcy9oZWFkcy9tYXN0ZXInCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IHRyYWNraW5nIHNldHVwIHZpYSAtLXRyYWNrJyAnCisJZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwudXJsIC4gJiYKKwlnaXQgY29uZmlnIHJlbW90ZS5sb2NhbC5mZXRjaCByZWZzL2hlYWRzLyo6cmVmcy9yZW1vdGVzL2xvY2FsLyogJiYKKwkoZ2l0IHNob3ctcmVmIC1xIHJlZnMvcmVtb3Rlcy9sb2NhbC9tYXN0ZXIgfHwgZ2l0IGZldGNoIGxvY2FsKSAmJgorCWdpdCBicmFuY2ggLS10cmFjayBteTEgbG9jYWwvbWFzdGVyICYmCisJdGVzdCAkKGdpdCBjb25maWcgYnJhbmNoLm15MS5yZW1vdGUpID0gbG9jYWwgJiYKKwl0ZXN0ICQoZ2l0IGNvbmZpZyBicmFuY2gubXkxLm1lcmdlKSA9IHJlZnMvaGVhZHMvbWFzdGVyCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgdHJhY2tpbmcgc2V0dXAgKG5vbi13aWxkY2FyZCwgbWF0Y2hpbmcpJyBcCi0gICAgJ2dpdCBjb25maWcgcmVtb3RlLmxvY2FsLnVybCAuICYmCi0gICAgIGdpdCBjb25maWcgcmVtb3RlLmxvY2FsLmZldGNoIHJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvcmVtb3Rlcy9sb2NhbC9tYXN0ZXIgJiYKLSAgICAgKGdpdCBzaG93LXJlZiAtcSByZWZzL3JlbW90ZXMvbG9jYWwvbWFzdGVyIHx8IGdpdCBmZXRjaCBsb2NhbCkgJiYKLSAgICAgZ2l0IGJyYW5jaCAtLXRyYWNrIG15NCBsb2NhbC9tYXN0ZXIgJiYKLSAgICAgdGVzdCAkKGdpdCBjb25maWcgYnJhbmNoLm15NC5yZW1vdGUpID0gbG9jYWwgJiYKLSAgICAgdGVzdCAkKGdpdCBjb25maWcgYnJhbmNoLm15NC5tZXJnZSkgPSByZWZzL2hlYWRzL21hc3RlcicKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgdHJhY2tpbmcgc2V0dXAgKG5vbi13aWxkY2FyZCwgbWF0Y2hpbmcpJyAnCisJZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwudXJsIC4gJiYKKwlnaXQgY29uZmlnIHJlbW90ZS5sb2NhbC5mZXRjaCByZWZzL2hlYWRzL21hc3RlcjpyZWZzL3JlbW90ZXMvbG9jYWwvbWFzdGVyICYmCisJKGdpdCBzaG93LXJlZiAtcSByZWZzL3JlbW90ZXMvbG9jYWwvbWFzdGVyIHx8IGdpdCBmZXRjaCBsb2NhbCkgJiYKKwlnaXQgYnJhbmNoIC0tdHJhY2sgbXk0IGxvY2FsL21hc3RlciAmJgorCXRlc3QgJChnaXQgY29uZmlnIGJyYW5jaC5teTQucmVtb3RlKSA9IGxvY2FsICYmCisJdGVzdCAkKGdpdCBjb25maWcgYnJhbmNoLm15NC5tZXJnZSkgPSByZWZzL2hlYWRzL21hc3RlcgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IHRyYWNraW5nIHNldHVwIChub24td2lsZGNhcmQsIG5vdCBtYXRjaGluZyknIFwKLSAgICAnZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwudXJsIC4gJiYKLSAgICAgZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwuZmV0Y2ggcmVmcy9oZWFkcy9zOnJlZnMvcmVtb3Rlcy9sb2NhbC9zICYmCi0gICAgIChnaXQgc2hvdy1yZWYgLXEgcmVmcy9yZW1vdGVzL2xvY2FsL21hc3RlciB8fCBnaXQgZmV0Y2ggbG9jYWwpICYmCi0gICAgIGdpdCBicmFuY2ggLS10cmFjayBteTUgbG9jYWwvbWFzdGVyICYmCi0gICAgICEgdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5teTUucmVtb3RlKSIgPSBsb2NhbCAmJgotICAgICAhIHRlc3QgIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk1Lm1lcmdlKSIgPSByZWZzL2hlYWRzL21hc3RlcicKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3RyYWNraW5nIHNldHVwIGZhaWxzIG9uIG5vbi1tYXRjaGluZyByZWZzcGVjJyAnCisJZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwudXJsIC4gJiYKKwlnaXQgY29uZmlnIHJlbW90ZS5sb2NhbC5mZXRjaCByZWZzL2hlYWRzL3M6cmVmcy9yZW1vdGVzL2xvY2FsL3MgJiYKKwkoZ2l0IHNob3ctcmVmIC1xIHJlZnMvcmVtb3Rlcy9sb2NhbC9tYXN0ZXIgfHwgZ2l0IGZldGNoIGxvY2FsKSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBicmFuY2ggLS10cmFjayBteTUgbG9jYWwvbWFzdGVyICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyBicmFuY2gubXk1LnJlbW90ZSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgYnJhbmNoLm15NS5tZXJnZQorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IHRyYWNraW5nIHNldHVwIHZpYSBjb25maWcnIFwKLSAgICAnZ2l0IGNvbmZpZyBicmFuY2guYXV0b3NldHVwbWVyZ2UgdHJ1ZSAmJgotICAgICBnaXQgY29uZmlnIHJlbW90ZS5sb2NhbC51cmwgLiAmJgotICAgICBnaXQgY29uZmlnIHJlbW90ZS5sb2NhbC5mZXRjaCByZWZzL2hlYWRzLyo6cmVmcy9yZW1vdGVzL2xvY2FsLyogJiYKLSAgICAgKGdpdCBzaG93LXJlZiAtcSByZWZzL3JlbW90ZXMvbG9jYWwvbWFzdGVyIHx8IGdpdCBmZXRjaCBsb2NhbCkgJiYKLSAgICAgZ2l0IGJyYW5jaCBteTMgbG9jYWwvbWFzdGVyICYmCi0gICAgIHRlc3QgJChnaXQgY29uZmlnIGJyYW5jaC5teTMucmVtb3RlKSA9IGxvY2FsICYmCi0gICAgIHRlc3QgJChnaXQgY29uZmlnIGJyYW5jaC5teTMubWVyZ2UpID0gcmVmcy9oZWFkcy9tYXN0ZXInCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IHRyYWNraW5nIHNldHVwIHZpYSBjb25maWcnICcKKwlnaXQgY29uZmlnIGJyYW5jaC5hdXRvc2V0dXBtZXJnZSB0cnVlICYmCisJZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwudXJsIC4gJiYKKwlnaXQgY29uZmlnIHJlbW90ZS5sb2NhbC5mZXRjaCByZWZzL2hlYWRzLyo6cmVmcy9yZW1vdGVzL2xvY2FsLyogJiYKKwkoZ2l0IHNob3ctcmVmIC1xIHJlZnMvcmVtb3Rlcy9sb2NhbC9tYXN0ZXIgfHwgZ2l0IGZldGNoIGxvY2FsKSAmJgorCWdpdCBicmFuY2ggbXkzIGxvY2FsL21hc3RlciAmJgorCXRlc3QgJChnaXQgY29uZmlnIGJyYW5jaC5teTMucmVtb3RlKSA9IGxvY2FsICYmCisJdGVzdCAkKGdpdCBjb25maWcgYnJhbmNoLm15My5tZXJnZSkgPSByZWZzL2hlYWRzL21hc3RlcgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IG92ZXJyaWRpbmcgdHJhY2tpbmcgc2V0dXAgdmlhIC0tbm8tdHJhY2snIFwKLSAgICAnZ2l0IGNvbmZpZyBicmFuY2guYXV0b3NldHVwbWVyZ2UgdHJ1ZSAmJgotICAgICBnaXQgY29uZmlnIHJlbW90ZS5sb2NhbC51cmwgLiAmJgotICAgICBnaXQgY29uZmlnIHJlbW90ZS5sb2NhbC5mZXRjaCByZWZzL2hlYWRzLyo6cmVmcy9yZW1vdGVzL2xvY2FsLyogJiYKLSAgICAgKGdpdCBzaG93LXJlZiAtcSByZWZzL3JlbW90ZXMvbG9jYWwvbWFzdGVyIHx8IGdpdCBmZXRjaCBsb2NhbCkgJiYKLSAgICAgZ2l0IGJyYW5jaCAtLW5vLXRyYWNrIG15MiBsb2NhbC9tYXN0ZXIgJiYKLSAgICAgZ2l0IGNvbmZpZyBicmFuY2guYXV0b3NldHVwbWVyZ2UgZmFsc2UgJiYKLSAgICAgISB0ZXN0ICIkKGdpdCBjb25maWcgYnJhbmNoLm15Mi5yZW1vdGUpIiA9IGxvY2FsICYmCi0gICAgICEgdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5teTIubWVyZ2UpIiA9IHJlZnMvaGVhZHMvbWFzdGVyJwordGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCBvdmVycmlkaW5nIHRyYWNraW5nIHNldHVwIHZpYSAtLW5vLXRyYWNrJyAnCisJZ2l0IGNvbmZpZyBicmFuY2guYXV0b3NldHVwbWVyZ2UgdHJ1ZSAmJgorCWdpdCBjb25maWcgcmVtb3RlLmxvY2FsLnVybCAuICYmCisJZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwuZmV0Y2ggcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy9sb2NhbC8qICYmCisJKGdpdCBzaG93LXJlZiAtcSByZWZzL3JlbW90ZXMvbG9jYWwvbWFzdGVyIHx8IGdpdCBmZXRjaCBsb2NhbCkgJiYKKwlnaXQgYnJhbmNoIC0tbm8tdHJhY2sgbXkyIGxvY2FsL21hc3RlciAmJgorCWdpdCBjb25maWcgYnJhbmNoLmF1dG9zZXR1cG1lcmdlIGZhbHNlICYmCisJISB0ZXN0ICIkKGdpdCBjb25maWcgYnJhbmNoLm15Mi5yZW1vdGUpIiA9IGxvY2FsICYmCisJISB0ZXN0ICIkKGdpdCBjb25maWcgYnJhbmNoLm15Mi5tZXJnZSkiID0gcmVmcy9oZWFkcy9tYXN0ZXIKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnbm8gdHJhY2tpbmcgd2l0aG91dCAuZmV0Y2ggZW50cmllcycgXAotICAgICdnaXQgY29uZmlnIGJyYW5jaC5hdXRvc2V0dXBtZXJnZSB0cnVlICYmCi0gICAgIGdpdCBicmFuY2ggbXk2IHMgJiYKLSAgICAgZ2l0IGNvbmZpZyBicmFuY2guYXV0b21zZXR1cG1lcmdlIGZhbHNlICYmCi0gICAgIHRlc3QgLXogIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk2LnJlbW90ZSkiICYmCi0gICAgIHRlc3QgLXogIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk2Lm1lcmdlKSInCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdubyB0cmFja2luZyB3aXRob3V0IC5mZXRjaCBlbnRyaWVzJyAnCisJZ2l0IGNvbmZpZyBicmFuY2guYXV0b3NldHVwbWVyZ2UgdHJ1ZSAmJgorCWdpdCBicmFuY2ggbXk2IHMgJiYKKwlnaXQgY29uZmlnIGJyYW5jaC5hdXRvbXNldHVwbWVyZ2UgZmFsc2UgJiYKKwl0ZXN0IC16ICIkKGdpdCBjb25maWcgYnJhbmNoLm15Ni5yZW1vdGUpIiAmJgorCXRlc3QgLXogIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk2Lm1lcmdlKSIKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCB0cmFja2luZyBzZXR1cCB2aWEgLS10cmFjayBidXQgZGVlcGVyJyBcCi0gICAgJ2dpdCBjb25maWcgcmVtb3RlLmxvY2FsLnVybCAuICYmCi0gICAgIGdpdCBjb25maWcgcmVtb3RlLmxvY2FsLmZldGNoIHJlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvbG9jYWwvKiAmJgotICAgICAoZ2l0IHNob3ctcmVmIC1xIHJlZnMvcmVtb3Rlcy9sb2NhbC9vL28gfHwgZ2l0IGZldGNoIGxvY2FsKSAmJgotICAgICBnaXQgYnJhbmNoIC0tdHJhY2sgbXk3IGxvY2FsL28vbyAmJgotICAgICB0ZXN0ICIkKGdpdCBjb25maWcgYnJhbmNoLm15Ny5yZW1vdGUpIiA9IGxvY2FsICYmCi0gICAgIHRlc3QgIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk3Lm1lcmdlKSIgPSByZWZzL2hlYWRzL28vbycKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgdHJhY2tpbmcgc2V0dXAgdmlhIC0tdHJhY2sgYnV0IGRlZXBlcicgJworCWdpdCBjb25maWcgcmVtb3RlLmxvY2FsLnVybCAuICYmCisJZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwuZmV0Y2ggcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy9sb2NhbC8qICYmCisJKGdpdCBzaG93LXJlZiAtcSByZWZzL3JlbW90ZXMvbG9jYWwvby9vIHx8IGdpdCBmZXRjaCBsb2NhbCkgJiYKKwlnaXQgYnJhbmNoIC0tdHJhY2sgbXk3IGxvY2FsL28vbyAmJgorCXRlc3QgIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk3LnJlbW90ZSkiID0gbG9jYWwgJiYKKwl0ZXN0ICIkKGdpdCBjb25maWcgYnJhbmNoLm15Ny5tZXJnZSkiID0gcmVmcy9oZWFkcy9vL28KKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCBkZWxldGluZyBicmFuY2ggZGVsZXRlcyBicmFuY2ggY29uZmlnJyBcCi0gICAgJ2dpdCBicmFuY2ggLWQgbXk3ICYmCi0gICAgIHRlc3QgLXogIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk3LnJlbW90ZSkiICYmCi0gICAgIHRlc3QgLXogIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk3Lm1lcmdlKSInCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IGRlbGV0aW5nIGJyYW5jaCBkZWxldGVzIGJyYW5jaCBjb25maWcnICcKKwlnaXQgYnJhbmNoIC1kIG15NyAmJgorCXRlc3QgLXogIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk3LnJlbW90ZSkiICYmCisJdGVzdCAteiAiJChnaXQgY29uZmlnIGJyYW5jaC5teTcubWVyZ2UpIgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IGRlbGV0aW5nIGJyYW5jaCB3aXRob3V0IGNvbmZpZycgXAotICAgICdnaXQgYnJhbmNoIG15NyBzICYmCi0gICAgIHNoYTE9JChnaXQgcmV2LXBhcnNlIG15NyB8IGN1dCAtYyAxLTcpICYmCi0gICAgIGVjaG8gIkRlbGV0ZWQgYnJhbmNoIG15NyAod2FzICRzaGExKS4iID5leHBlY3QgJiYKLSAgICAgZ2l0IGJyYW5jaCAtZCBteTcgPmFjdHVhbCAyPiYxICYmCi0gICAgIHRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsJwordGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCBkZWxldGluZyBicmFuY2ggd2l0aG91dCBjb25maWcnICcKKwlnaXQgYnJhbmNoIG15NyBzICYmCisJc2hhMT0kKGdpdCByZXYtcGFyc2UgbXk3IHwgY3V0IC1jIDEtNykgJiYKKwllY2hvICJEZWxldGVkIGJyYW5jaCBteTcgKHdhcyAkc2hhMSkuIiA+ZXhwZWN0ICYmCisJZ2l0IGJyYW5jaCAtZCBteTcgPmFjdHVhbCAyPiYxICYmCisJdGVzdF9pMThuY21wIGV4cGVjdCBhY3R1YWwKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCAtLXRyYWNrIHdpdGhvdXQgLmZldGNoIGVudHJpZXMnIFwKLSAgICAnZ2l0IGJyYW5jaCAtLXRyYWNrIG15OCAmJgotICAgICB0ZXN0ICIkKGdpdCBjb25maWcgYnJhbmNoLm15OC5yZW1vdGUpIiAmJgotICAgICB0ZXN0ICIkKGdpdCBjb25maWcgYnJhbmNoLm15OC5tZXJnZSkiJwordGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCAtLXRyYWNrIHdpdGhvdXQgLmZldGNoIGVudHJpZXMnICcKKwlnaXQgYnJhbmNoIC0tdHJhY2sgbXk4ICYmCisJdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5teTgucmVtb3RlKSIgJiYKKwl0ZXN0ICIkKGdpdCBjb25maWcgYnJhbmNoLm15OC5tZXJnZSkiCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdicmFuY2ggZnJvbSBub24tYnJhbmNoIEhFQUQgdy9hdXRvc2V0dXBtZXJnZT1hbHdheXMnIFwKLSAgICAnZ2l0IGNvbmZpZyBicmFuY2guYXV0b3NldHVwbWVyZ2UgYWx3YXlzICYmCi0gICAgIGdpdCBicmFuY2ggbXk5IEhFQUReICYmCi0gICAgIGdpdCBjb25maWcgYnJhbmNoLmF1dG9zZXR1cG1lcmdlIGZhbHNlJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYnJhbmNoIGZyb20gbm9uLWJyYW5jaCBIRUFEIHcvYXV0b3NldHVwbWVyZ2U9YWx3YXlzJyAnCisJZ2l0IGNvbmZpZyBicmFuY2guYXV0b3NldHVwbWVyZ2UgYWx3YXlzICYmCisJZ2l0IGJyYW5jaCBteTkgSEVBRF4gJiYKKwlnaXQgY29uZmlnIGJyYW5jaC5hdXRvc2V0dXBtZXJnZSBmYWxzZQorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnYnJhbmNoIGZyb20gbm9uLWJyYW5jaCBIRUFEIHcvLS10cmFjayBjYXVzZXMgZmFpbHVyZScgXAotICAgICd0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tdHJhY2sgbXkxMCBIRUFEXicKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JyYW5jaCBmcm9tIG5vbi1icmFuY2ggSEVBRCB3Ly0tdHJhY2sgY2F1c2VzIGZhaWx1cmUnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tdHJhY2sgbXkxMCBIRUFEXgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnYnJhbmNoIGZyb20gdGFnIHcvLS10cmFjayBjYXVzZXMgZmFpbHVyZScgXAotICAgICdnaXQgdGFnIGZvb2JhciAmJgotICAgICB0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tdHJhY2sgbXkxMSBmb29iYXInCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdicmFuY2ggZnJvbSB0YWcgdy8tLXRyYWNrIGNhdXNlcyBmYWlsdXJlJyAnCisJZ2l0IHRhZyBmb29iYXIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tdHJhY2sgbXkxMSBmb29iYXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zZXQtdXBzdHJlYW0tdG8gZmFpbHMgb24gbXVsdGlwbGUgYnJhbmNoZXMnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIG1hc3RlciBhIGIgYworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXNldC11cHN0cmVhbS10byBmYWlscyBvbiBkZXRhY2hlZCBIRUFEJyAnCisJZ2l0IGNoZWNrb3V0IEhFQURee30gJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIG1hc3RlciAmJgorCWdpdCBjaGVja291dCAtCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc2V0LXVwc3RyZWFtLXRvIGZhaWxzIG9uIGEgbWlzc2luZyBkc3QgYnJhbmNoJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byBtYXN0ZXIgZG9lcy1ub3QtZXhpc3QKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zZXQtdXBzdHJlYW0tdG8gZmFpbHMgb24gYSBtaXNzaW5nIHNyYyBicmFuY2gnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIGRvZXMtbm90LWV4aXN0IG1hc3RlcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXNldC11cHN0cmVhbS10byBmYWlscyBvbiBhIG5vbi1yZWYnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIEhFQURee30KKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndXNlIC0tc2V0LXVwc3RyZWFtLXRvIG1vZGlmeSBIRUFEJyAnCisJdGVzdF9jb25maWcgYnJhbmNoLm1hc3Rlci5yZW1vdGUgZm9vICYmCisJdGVzdF9jb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZSBmb28gJiYKKwlnaXQgYnJhbmNoIG15MTIKKwlnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIG15MTIgJiYKKwl0ZXN0ICIkKGdpdCBjb25maWcgYnJhbmNoLm1hc3Rlci5yZW1vdGUpIiA9ICIuIiAmJgorCXRlc3QgIiQoZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlKSIgPSAicmVmcy9oZWFkcy9teTEyIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd1c2UgLS1zZXQtdXBzdHJlYW0tdG8gbW9kaWZ5IGEgcGFydGljdWxhciBicmFuY2gnICcKKwlnaXQgYnJhbmNoIG15MTMKKwlnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIG1hc3RlciBteTEzICYmCisJdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5teTEzLnJlbW90ZSkiID0gIi4iICYmCisJdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5teTEzLm1lcmdlKSIgPSAicmVmcy9oZWFkcy9tYXN0ZXIiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tdW5zZXQtdXBzdHJlYW0gc2hvdWxkIGZhaWwgaWYgZ2l2ZW4gYSBub24tZXhpc3RlbnQgYnJhbmNoJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJyYW5jaCAtLXVuc2V0LXVwc3RyZWFtIGktZG9udC1leGlzdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IC0tdW5zZXQtdXBzdHJlYW0gb24gSEVBRCcgJworCWdpdCBicmFuY2ggbXkxNAorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIucmVtb3RlIGZvbyAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2UgZm9vICYmCisJZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byBteTE0ICYmCisJZ2l0IGJyYW5jaCAtLXVuc2V0LXVwc3RyZWFtICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLnJlbW90ZSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZSAmJgorCSMgZmFpbCBmb3IgYSBicmFuY2ggd2l0aG91dCB1cHN0cmVhbSBzZXQKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tdW5zZXQtdXBzdHJlYW0KKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS11bnNldC11cHN0cmVhbSBzaG91bGQgZmFpbCBvbiBtdWx0aXBsZSBicmFuY2hlcycgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBicmFuY2ggLS11bnNldC11cHN0cmVhbSBhIGIgYworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXVuc2V0LXVwc3RyZWFtIHNob3VsZCBmYWlsIG9uIGRldGFjaGVkIEhFQUQnICcKKwlnaXQgY2hlY2tvdXQgSEVBRF57fSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBicmFuY2ggLS11bnNldC11cHN0cmVhbSAmJgorCWdpdCBjaGVja291dCAtCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgLS11bnNldC11cHN0cmVhbSBvbiBhIHBhcnRpY3VsYXIgYnJhbmNoJyAnCisJZ2l0IGJyYW5jaCBteTE1CisJZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byBtYXN0ZXIgbXkxNCAmJgorCWdpdCBicmFuY2ggLS11bnNldC11cHN0cmVhbSBteTE0ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyBicmFuY2gubXkxNC5yZW1vdGUgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgY29uZmlnIGJyYW5jaC5teTE0Lm1lcmdlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc2V0LXVwc3RyZWFtIHNob3dzIG1lc3NhZ2Ugd2hlbiBjcmVhdGluZyBhIG5ldyBicmFuY2ggdGhhdCBleGlzdHMgYXMgcmVtb3RlLXRyYWNraW5nJyAnCisJZ2l0IHVwZGF0ZS1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIgSEVBRCAmJgorCWdpdCBicmFuY2ggLS1zZXQtdXBzdHJlYW0gb3JpZ2luL21hc3RlciAyPmFjdHVhbCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgdXBkYXRlLXJlZiAtZCByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgYnJhbmNoIC1kIG9yaWdpbi9tYXN0ZXIgJiYKKwljYXQgPmV4cGVjdGVkIDw8RU9GICYmCitUaGUgLS1zZXQtdXBzdHJlYW0gZmxhZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIENvbnNpZGVyIHVzaW5nIC0tdHJhY2sgb3IgLS1zZXQtdXBzdHJlYW0tdG8KKworSWYgeW91IHdhbnRlZCB0byBtYWtlICciJ21hc3RlciciJyB0cmFjayAnIidvcmlnaW4vbWFzdGVyJyInLCBkbyB0aGlzOgorCisgICAgZ2l0IGJyYW5jaCAtZCBvcmlnaW4vbWFzdGVyCisgICAgZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byBvcmlnaW4vbWFzdGVyCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zZXQtdXBzdHJlYW0gd2l0aCB0d28gYXJncyBvbmx5IHNob3dzIHRoZSBkZXByZWNhdGlvbiBtZXNzYWdlJyAnCisJZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbSBtYXN0ZXIgbXkxMyAyPmFjdHVhbCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgYnJhbmNoIC0tdW5zZXQtdXBzdHJlYW0gbWFzdGVyICYmCisJY2F0ID5leHBlY3RlZCA8PEVPRiAmJgorVGhlIC0tc2V0LXVwc3RyZWFtIGZsYWcgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBDb25zaWRlciB1c2luZyAtLXRyYWNrIG9yIC0tc2V0LXVwc3RyZWFtLXRvCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zZXQtdXBzdHJlYW0gd2l0aCBvbmUgYXJnIG9ubHkgc2hvd3MgdGhlIGRlcHJlY2F0aW9uIG1lc3NhZ2UgaWYgdGhlIGJyYW5jaCBleGlzdGVkJyAnCisJZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbSBteTEzIDI+YWN0dWFsICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkIGdpdCBicmFuY2ggLS11bnNldC11cHN0cmVhbSBteTEzICYmCisJY2F0ID5leHBlY3RlZCA8PEVPRiAmJgorVGhlIC0tc2V0LXVwc3RyZWFtIGZsYWcgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBDb25zaWRlciB1c2luZyAtLXRyYWNrIG9yIC0tc2V0LXVwc3RyZWFtLXRvCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKIAogIyBLZWVwIHRoaXMgdGVzdCBsYXN0LCBhcyBpdCBjaGFuZ2VzIHRoZSBjdXJyZW50IGJyYW5jaAogY2F0ID5leHBlY3QgPDxFT0YKICRfejQwICRIRUFEICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPiAxMTE3MTUwMjAwICswMDAwCWJyYW5jaDogQ3JlYXRlZCBmcm9tIG1hc3RlcgogRU9GCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnZ2l0IGNoZWNrb3V0IC1iIGcvaC9pIC1sIHNob3VsZCBjcmVhdGUgYSBicmFuY2ggYW5kIGEgbG9nJyBcCi0JJ0dJVF9DT01NSVRURVJfREFURT0iMjAwNS0wNS0yNiAyMzozMCIgXAotICAgICBnaXQgY2hlY2tvdXQgLWIgZy9oL2kgLWwgbWFzdGVyICYmCi0JIHRlc3RfcGF0aF9pc19maWxlIC5naXQvcmVmcy9oZWFkcy9nL2gvaSAmJgotCSB0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9nL2gvaSAmJgotCSB0ZXN0X2NtcCBleHBlY3QgLmdpdC9sb2dzL3JlZnMvaGVhZHMvZy9oL2knCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgY2hlY2tvdXQgLWIgZy9oL2kgLWwgc2hvdWxkIGNyZWF0ZSBhIGJyYW5jaCBhbmQgYSBsb2cnICcKKwlHSVRfQ09NTUlUVEVSX0RBVEU9IjIwMDUtMDUtMjYgMjM6MzAiIFwKKwlnaXQgY2hlY2tvdXQgLWIgZy9oL2kgLWwgbWFzdGVyICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgLmdpdC9yZWZzL2hlYWRzL2cvaC9pICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgLmdpdC9sb2dzL3JlZnMvaGVhZHMvZy9oL2kgJiYKKwl0ZXN0X2NtcCBleHBlY3QgLmdpdC9sb2dzL3JlZnMvaGVhZHMvZy9oL2kKKycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgLWIgbWFrZXMgcmVmbG9nIGJ5IGRlZmF1bHQnICcKIAlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCkBAIC02NTAsNyArNzg2LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGV0ZWN0IG1pc2NvbmZpZ3VyZWQgYXV0b3NldHVwcmViYXNlIChubyB2YWx1ZSknICcKIAlnaXQgY29uZmlnIC0tdW5zZXQgYnJhbmNoLmF1dG9zZXR1cHJlYmFzZSAmJgotCWVjaG8gIlticmFuY2hdIGF1dG9zZXR1cHJlYmFzZSIgPj4gLmdpdC9jb25maWcgJiYKKwllY2hvICJbYnJhbmNoXSBhdXRvc2V0dXByZWJhc2UiID4+LmdpdC9jb25maWcgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoICYmCiAJZ2l0IGNvbmZpZyAtLXVuc2V0IGJyYW5jaC5hdXRvc2V0dXByZWJhc2UKICcKZGlmZiAtLWdpdCBhL3QvdDMyMDEtYnJhbmNoLWNvbnRhaW5zLnNoIGIvdC90MzIwMS1icmFuY2gtY29udGFpbnMuc2gKaW5kZXggZjg2ZjRiYy4uMTQxYjA2MSAxMDA3NTUKLS0tIGEvdC90MzIwMS1icmFuY2gtY29udGFpbnMuc2gKKysrIGIvdC90MzIwMS1icmFuY2gtY29udGFpbnMuc2gKQEAgLTU1LDYgKzU1LDE2IEBACiAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnYnJhbmNoIC0tY29udGFpbnMgd2l0aCBwYXR0ZXJuIGltcGxpZXMgLS1saXN0JyAnCisKKwlnaXQgYnJhbmNoIC0tY29udGFpbnM9bWFzdGVyIG1hc3RlciA+YWN0dWFsICYmCisJeworCQllY2hvICIgIG1hc3RlciIKKwl9ID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lkZTogYnJhbmNoIC0tbWVyZ2VkJyAnCiAKIAlnaXQgYnJhbmNoIC0tbWVyZ2VkID5hY3R1YWwgJiYKQEAgLTY2LDYgKzc2LDE2IEBACiAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnYnJhbmNoIC0tbWVyZ2VkIHdpdGggcGF0dGVybiBpbXBsaWVzIC0tbGlzdCcgJworCisJZ2l0IGJyYW5jaCAtLW1lcmdlZD1zaWRlIG1hc3RlciA+YWN0dWFsICYmCisJeworCQllY2hvICIgIG1hc3RlciIKKwl9ID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lkZTogYnJhbmNoIC0tbm8tbWVyZ2VkJyAnCiAKIAlnaXQgYnJhbmNoIC0tbm8tbWVyZ2VkID5hY3R1YWwgJiYKQEAgLTk1LDQgKzExNSwxOSBAQAogCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JyYW5jaCAtLW5vLW1lcmdlZCB3aXRoIHBhdHRlcm4gaW1wbGllcyAtLWxpc3QnICcKKworCWdpdCBicmFuY2ggLS1uby1tZXJnZWQ9bWFzdGVyIG1hc3RlciA+YWN0dWFsICYmCisJPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbXBsaWNpdCAtLWxpc3QgY29uZmxpY3RzIHdpdGggbW9kaWZpY2F0aW9uIG9wdGlvbnMnICcKKworCXRlc3RfbXVzdF9mYWlsIGdpdCBicmFuY2ggLS1jb250YWlucz1tYXN0ZXIgLWQgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tY29udGFpbnM9bWFzdGVyIC1tIGZvbworCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzIwMy1icmFuY2gtb3V0cHV0LnNoIGIvdC90MzIwMy1icmFuY2gtb3V0cHV0LnNoCmluZGV4IDc2ZmU3ZTAuLmJhNGY5OGUgMTAwNzU1Ci0tLSBhL3QvdDMyMDMtYnJhbmNoLW91dHB1dC5zaAorKysgYi90L3QzMjAzLWJyYW5jaC1vdXRwdXQuc2gKQEAgLTk0LDEzICs5NCwxMyBAQAogCXRlc3RfbXVzdF9mYWlsIGdpdCBicmFuY2ggLXYgYnJhbmNoKgogJwogCi1jYXQgPmV4cGVjdCA8PCdFT0YnCi0qIChubyBicmFuY2gpCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgYnJhbmNoIHNob3dzIGRldGFjaGVkIEhFQUQgcHJvcGVybHknICcKKwljYXQgPmV4cGVjdCA8PEVPRiAmJgorKiAoZGV0YWNoZWQgZnJvbSAkKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEXjApKQogICBicmFuY2gtb25lCiAgIGJyYW5jaC10d28KICAgbWFzdGVyCiBFT0YKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBicmFuY2ggc2hvd3MgZGV0YWNoZWQgSEVBRCBwcm9wZXJseScgJwogCWdpdCBjaGVja291dCBIRUFEXjAgJiYKIAlnaXQgYnJhbmNoID5hY3R1YWwgJiYKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbApkaWZmIC0tZ2l0IGEvdC90MzIxMS1wZWVsLXJlZi5zaCBiL3QvdDMyMTEtcGVlbC1yZWYuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDRkNzc5MgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDMyMTEtcGVlbC1yZWYuc2gKQEAgLTAsMCArMSw2NCBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J3Rlc3RzIGZvciB0aGUgcGVlbF9yZWYgb3B0aW1pemF0aW9uIG9mIHBhY2tlZC1yZWZzJworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0ZSBhbm5vdGF0ZWQgdGFnIGluIHJlZnMvdGFncycgJworCXRlc3RfY29tbWl0IGJhc2UgJiYKKwlnaXQgdGFnIC1tIGFubm90YXRlZCBmb28KKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3JlYXRlIGFubm90YXRlZCB0YWcgb3V0c2lkZSBvZiByZWZzL3RhZ3MnICcKKwlnaXQgdXBkYXRlLXJlZiByZWZzL291dHNpZGUvZm9vIHJlZnMvdGFncy9mb28KKycKKworIyBUaGlzIG1hdGNoZXMgc2hvdy1yZWYncyBvdXRwdXQKK3ByaW50X3JlZigpIHsKKwllY2hvICIkKGdpdCByZXYtcGFyc2UgIiQxIikgJDEiCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldCB1cCBleHBlY3RlZCBzaG93LXJlZiBvdXRwdXQnICcKKwl7CisJCXByaW50X3JlZiAicmVmcy9oZWFkcy9tYXN0ZXIiICYmCisJCXByaW50X3JlZiAicmVmcy9vdXRzaWRlL2ZvbyIgJiYKKwkJcHJpbnRfcmVmICJyZWZzL291dHNpZGUvZm9vXnt9IiAmJgorCQlwcmludF9yZWYgInJlZnMvdGFncy9iYXNlIiAmJgorCQlwcmludF9yZWYgInJlZnMvdGFncy9mb28iICYmCisJCXByaW50X3JlZiAicmVmcy90YWdzL2Zvb157fSIKKwl9ID5leHBlY3QKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVmcyBhcmUgcGVlbGVkIG91dHNpZGUgb2YgcmVmcy90YWdzIChsb29zZSknICcKKwlnaXQgc2hvdy1yZWYgLWQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVmcyBhcmUgcGVlbGVkIG91dHNpZGUgb2YgcmVmcy90YWdzIChwYWNrZWQpJyAnCisJZ2l0IHBhY2stcmVmcyAtLWFsbCAmJgorCWdpdCBzaG93LXJlZiAtZCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjcmVhdGUgb2xkLXN0eWxlIHBhY2stcmVmcyB3aXRob3V0IGZ1bGx5LXBlZWxlZCcgJworCSMgR2l0IG5vIGxvbmdlciB3cml0ZXMgd2l0aG91dCBmdWxseS1wZWVsZWQsIHNvIHdlIGp1c3Qgd3JpdGUgb3VyIG93bgorCSMgZnJvbSBzY3JhdGNoOyB3ZSBjb3VsZCBhbHNvIG11bmdlIHRoZSBleGlzdGluZyBmaWxlIHRvIHJlbW92ZSB0aGUKKwkjIGZ1bGx5LXBlZWxlZCBiaXRzLCBidXQgdGhhdCBzZWVtcyBldmVuIG1vcmUgcHJvbmUgdG8gZmFpbHVyZSwKKwkjIGVzcGVjaWFsbHkgaWYgdGhlIGZvcm1hdCBldmVyIGNoYW5nZXMgYWdhaW4uIEF0IGxlYXN0IHRoaXMgd2F5IHdlCisJIyBrbm93IHdlIGFyZSBlbXVsYXRpbmcgZXhhY3RseSB3aGF0IGFuIG9sZGVyIGdpdCB3b3VsZCBoYXZlIHdyaXR0ZW4uCisJeworCQllY2hvICIjIHBhY2stcmVmcyB3aXRoOiBwZWVsZWQgIiAmJgorCQlwcmludF9yZWYgInJlZnMvaGVhZHMvbWFzdGVyIiAmJgorCQlwcmludF9yZWYgInJlZnMvb3V0c2lkZS9mb28iICYmCisJCXByaW50X3JlZiAicmVmcy90YWdzL2Jhc2UiICYmCisJCXByaW50X3JlZiAicmVmcy90YWdzL2ZvbyIgJiYKKwkJZWNobyAiXiQoZ2l0IHJldi1wYXJzZSAicmVmcy90YWdzL2Zvb157fSIpIgorCX0gPnRtcCAmJgorCW12IHRtcCAuZ2l0L3BhY2tlZC1yZWZzCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZnMgYXJlIHBlZWxlZCBvdXRzaWRlIG9mIHJlZnMvdGFncyAob2xkIHBhY2tlZCknICcKKwlnaXQgc2hvdy1yZWYgLWQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QzMzAwLWZ1bm55LW5hbWVzLnNoIGIvdC90MzMwMC1mdW5ueS1uYW1lcy5zaAppbmRleCBjNTNjOWY2Li43NDgwZDZlIDEwMDc1NQotLS0gYS90L3QzMzAwLWZ1bm55LW5hbWVzLnNoCisrKyBiL3QvdDMzMDAtZnVubnktbmFtZXMuc2gKQEAgLTExLDYgKzExLDE2IEBACiAKIC4gLi90ZXN0LWxpYi5zaAogCitIVD0nCScKKworZWNobyAyPi9kZXYvbnVsbCA+ICJOYW1lIHdpdGggYW4ke0hUfUhUIgoraWYgISB0ZXN0IC1mICJOYW1lIHdpdGggYW4ke0hUfUhUIgordGhlbgorCSMgc2luY2UgRkFUL05URlMgZG9lcyBub3QgYWxsb3cgdGFicyBpbiBmaWxlbmFtZXMsIHNraXAgdGhpcyB0ZXN0CisJc2tpcF9hbGw9J1lvdXIgZmlsZXN5c3RlbSBkb2VzIG5vdCBhbGxvdyB0YWJzIGluIGZpbGVuYW1lcycKKwl0ZXN0X2RvbmUKK2ZpCisKIHAwPSduby1mdW5ueScKIHAxPSd0YWJzCSwiIChkcSkgYW5kIHNwYWNlcycKIHAyPSdqdXN0IHNwYWNlJwpAQCAtMjMsMjEgKzMzLDkgQEAKIAlFT0YKIAogCXsgY2F0ICIkcDAiID4iJHAxIiB8fCA6OyB9ICYmCi0JeyBlY2hvICJGb28gQmFyIEJheiIgPiIkcDIiIHx8IDo7IH0gJiYKLQotCWlmIHRlc3QgLWYgIiRwMSIgJiYgY21wICIkcDAiICIkcDEiCi0JdGhlbgotCQl0ZXN0X3NldF9wcmVyZXEgVEFCU19JTl9GSUxFTkFNRVMKLQlmaQorCXsgZWNobyAiRm9vIEJhciBCYXoiID4iJHAyIiB8fCA6OyB9CiAnCiAKLWlmICEgdGVzdF9oYXZlX3ByZXJlcSBUQUJTX0lOX0ZJTEVOQU1FUwotdGhlbgotCSMgc2luY2UgRkFUL05URlMgZG9lcyBub3QgYWxsb3cgdGFicyBpbiBmaWxlbmFtZXMsIHNraXAgdGhpcyB0ZXN0Ci0Jc2tpcF9hbGw9J1lvdXIgZmlsZXN5c3RlbSBkb2VzIG5vdCBhbGxvdyB0YWJzIGluIGZpbGVuYW1lcycKLQl0ZXN0X2RvbmUKLWZpCi0KIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwOiBwb3B1bGF0ZSBpbmRleCBhbmQgdHJlZScgJwogCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgIiRwMCIgIiRwMiIgJiYKIAl0MD0kKGdpdCB3cml0ZS10cmVlKQpAQCAtNzEsNyArNjksNyBAQAogCXRhYnMJLCIgKGRxKSBhbmQgc3BhY2VzCiAJRU9GCiAJZ2l0IGxzLWZpbGVzIC16ID5scy1maWxlcy56ICYmCi0JcGVybCAtcGUgInkvXDAwMC9cMDEyLyIgPGxzLWZpbGVzLnogPmN1cnJlbnQgJiYKKwkiJFBFUkxfUEFUSCIgLXBlICJ5L1wwMDAvXDAxMi8iIDxscy1maWxlcy56ID5jdXJyZW50ICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgY3VycmVudAogJwogCkBAIC0xMDgsNyArMTA2LDcgQEAKIAl0YWJzCSwiIChkcSkgYW5kIHNwYWNlcwogCUVPRgogCWdpdCBkaWZmLWluZGV4IC16IC0tbmFtZS1zdGF0dXMgJHQwID5kaWZmLWluZGV4LnogJiYKLQlwZXJsIC1wZSAieS9cMDAwL1wwMTIvIiA8ZGlmZi1pbmRleC56ID5jdXJyZW50ICYmCisJIiRQRVJMX1BBVEgiIC1wZSAieS9cMDAwL1wwMTIvIiA8ZGlmZi1pbmRleC56ID5jdXJyZW50ICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgY3VycmVudAogJwogCkBAIC0xMTgsNyArMTE2LDcgQEAKIAl0YWJzCSwiIChkcSkgYW5kIHNwYWNlcwogCUVPRgogCWdpdCBkaWZmLXRyZWUgLXogLS1uYW1lLXN0YXR1cyAkdDAgJHQxID5kaWZmLXRyZWUueiAmJgotCXBlcmwgLXBlIHkvXFwwMDAvXFwwMTIvIDxkaWZmLXRyZWUueiA+Y3VycmVudCAmJgorCSIkUEVSTF9QQVRIIiAtcGUgeS9cXDAwMC9cXDAxMi8gPGRpZmYtdHJlZS56ID5jdXJyZW50ICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgY3VycmVudAogJwogCmRpZmYgLS1naXQgYS90L3QzNDAwLXJlYmFzZS5zaCBiL3QvdDM0MDAtcmViYXNlLnNoCmluZGV4IDc3ODhhZTAuLmI1OGZhMWEgMTAwNzU1Ci0tLSBhL3QvdDM0MDAtcmViYXNlLnNoCisrKyBiL3QvdDM0MDAtcmViYXNlLnNoCkBAIC02OCwyNCArNjgsMjQgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGFnYWluc3QgbWFzdGVyIHR3aWNlJyAnCiAJZ2l0IHJlYmFzZSBtYXN0ZXIgPm91dCAmJgotCWdyZXAgIkN1cnJlbnQgYnJhbmNoIG15LXRvcGljLWJyYW5jaCBpcyB1cCB0byBkYXRlIiBvdXQKKwl0ZXN0X2kxOG5ncmVwICJDdXJyZW50IGJyYW5jaCBteS10b3BpYy1icmFuY2ggaXMgdXAgdG8gZGF0ZSIgb3V0CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSBhZ2FpbnN0IG1hc3RlciB0d2ljZSB3aXRoIC0tZm9yY2UnICcKIAlnaXQgcmViYXNlIC0tZm9yY2UtcmViYXNlIG1hc3RlciA+b3V0ICYmCi0JZ3JlcCAiQ3VycmVudCBicmFuY2ggbXktdG9waWMtYnJhbmNoIGlzIHVwIHRvIGRhdGUsIHJlYmFzZSBmb3JjZWQiIG91dAorCXRlc3RfaTE4bmdyZXAgIkN1cnJlbnQgYnJhbmNoIG15LXRvcGljLWJyYW5jaCBpcyB1cCB0byBkYXRlLCByZWJhc2UgZm9yY2VkIiBvdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGFnYWluc3QgbWFzdGVyIHR3aWNlIGZyb20gYW5vdGhlciBicmFuY2gnICcKIAlnaXQgY2hlY2tvdXQgbXktdG9waWMtYnJhbmNoXiAmJgogCWdpdCByZWJhc2UgbWFzdGVyIG15LXRvcGljLWJyYW5jaCA+b3V0ICYmCi0JZ3JlcCAiQ3VycmVudCBicmFuY2ggbXktdG9waWMtYnJhbmNoIGlzIHVwIHRvIGRhdGUiIG91dAorCXRlc3RfaTE4bmdyZXAgIkN1cnJlbnQgYnJhbmNoIG15LXRvcGljLWJyYW5jaCBpcyB1cCB0byBkYXRlIiBvdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGZhc3QtZm9yd2FyZCB0byBtYXN0ZXInICcKIAlnaXQgY2hlY2tvdXQgbXktdG9waWMtYnJhbmNoXiAmJgogCWdpdCByZWJhc2UgbXktdG9waWMtYnJhbmNoID5vdXQgJiYKLQlncmVwICJGYXN0LWZvcndhcmRlZCBIRUFEIHRvIG15LXRvcGljLWJyYW5jaCIgb3V0CisJdGVzdF9pMThuZ3JlcCAiRmFzdC1mb3J3YXJkZWQgSEVBRCB0byBteS10b3BpYy1icmFuY2giIG91dAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0aGUgcmViYXNlIG9wZXJhdGlvbiBzaG91bGQgbm90IGhhdmUgZGVzdHJveWVkIGF1dGhvciBpbmZvcm1hdGlvbicgJwpAQCAtMTAxLDcgKzEwMSwxNCBAQAogCXRlc3QgJChnaXQgcmV2LXBhcnNlIEhFQURAezF9KSAhPSAkKGdpdCByZXYtcGFyc2UgbXktdG9waWMtYnJhbmNoQHsxfSkKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGZyb20gYW1iaWd1b3VzIGJyYW5jaCBuYW1lJyAnCisJZ2l0IGNoZWNrb3V0IC1iIHRvcGljIHNpZGUgJiYKKwlnaXQgcmViYXNlIG1hc3RlcgorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgYWZ0ZXIgbWVyZ2UgbWFzdGVyJyAnCisJZ2l0IGNoZWNrb3V0IC0tZGV0YWNoIHJlZnMvdGFncy90b3BpYyAmJgorCWdpdCBicmFuY2ggLUQgdG9waWMgJiYKIAlnaXQgcmVzZXQgLS1oYXJkIHRvcGljICYmCiAJZ2l0IG1lcmdlIG1hc3RlciAmJgogCWdpdCByZWJhc2UgbWFzdGVyICYmCkBAIC0xMzgsOCArMTQ1LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGlzIG5vdCBicm9rZW4gYnkgZGlmZi5yZW5hbWVzJyAnCi0JZ2l0IGNvbmZpZyBkaWZmLnJlbmFtZXMgY29waWVzICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgZGlmZi5yZW5hbWVzIiAmJgorCXRlc3RfY29uZmlnIGRpZmYucmVuYW1lcyBjb3BpZXMgJiYKIAlnaXQgY2hlY2tvdXQgZmlsZW1vdmUgJiYKIAlHSVRfVFJBQ0U9MSBnaXQgcmViYXNlIGZvcmNlLTN3YXkKICcKZGlmZiAtLWdpdCBhL3QvdDM0MDEtcmViYXNlLXBhcnRpYWwuc2ggYi90L3QzNDAxLXJlYmFzZS1wYXJ0aWFsLnNoCmluZGV4IDdiYTE3OTcuLjU4ZjQ4MjMgMTAwNzU1Ci0tLSBhL3QvdDM0MDEtcmViYXNlLXBhcnRpYWwuc2gKKysrIGIvdC90MzQwMS1yZWJhc2UtcGFydGlhbC5zaApAQCAtNDIsNCArNDIsMjggQEAKIAl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L3JlYmFzZS1tZXJnZQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgaWdub3JlcyBlbXB0eSBjb21taXQnICcKKwlnaXQgcmVzZXQgLS1oYXJkIEEgJiYKKwlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gZW1wdHkgJiYKKwl0ZXN0X2NvbW1pdCBEICYmCisJZ2l0IHJlYmFzZSBDICYmCisJdGVzdCAiJChnaXQgbG9nIC0tZm9ybWF0PSVzIEMuLikiID0gIkQiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtLWtlZXAtZW1wdHknICcKKwlnaXQgcmVzZXQgLS1oYXJkIEQgJiYKKwlnaXQgcmViYXNlIC0ta2VlcC1lbXB0eSBDICYmCisJdGVzdCAiJChnaXQgbG9nIC0tZm9ybWF0PSVzIEMuLikiID0gIkQKK2VtcHR5IgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLS1rZWVwLWVtcHR5IGtlZXBzIGVtcHR5IGV2ZW4gaWYgYWxyZWFkeSBpbiB1cHN0cmVhbScgJworCWdpdCByZXNldCAtLWhhcmQgQSAmJgorCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBhbHNvLWVtcHR5ICYmCisJZ2l0IHJlYmFzZSAtLWtlZXAtZW1wdHkgRCAmJgorCXRlc3QgIiQoZ2l0IGxvZyAtLWZvcm1hdD0lcyBBLi4pIiA9ICJhbHNvLWVtcHR5CitECitlbXB0eSIKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QzNDA0LXJlYmFzZS1pbnRlcmFjdGl2ZS5zaCBiL3QvdDM0MDQtcmViYXNlLWludGVyYWN0aXZlLnNoCmluZGV4IDAyNWMxYzYuLmE1ODQwNmQgMTAwNzU1Ci0tLSBhL3QvdDM0MDQtcmViYXNlLWludGVyYWN0aXZlLnNoCisrKyBiL3QvdDM0MDQtcmViYXNlLWludGVyYWN0aXZlLnNoCkBAIC0yOSwxMiArMjksNiBAQAogCiAuICIkVEVTVF9ESVJFQ1RPUlkiL2xpYi1yZWJhc2Uuc2gKIAotdGVzdF9jbXBfcmV2ICgpIHsKLQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICIkMSIgPmV4cGVjdC5yZXYgJiYKLQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICIkMiIgPmFjdHVhbC5yZXYgJiYKLQl0ZXN0X2NtcCBleHBlY3QucmV2IGFjdHVhbC5yZXYKLX0KLQogc2V0X2Zha2VfZWRpdG9yCiAKICMgV0FSTklORzogTW9kaWZpY2F0aW9ucyB0byB0aGUgaW5pdGlhbCByZXBvc2l0b3J5IGNhbiBjaGFuZ2UgdGhlIFNIQSBJRCB1c2VkCkBAIC0xMTgsNiArMTEyLDE3IEBACiAJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtaSB3aXRoIGV4ZWMgb2YgaW5leGlzdGVudCBjb21tYW5kJyAnCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgorCSgKKwlGQUtFX0xJTkVTPSJleGVjX3RoaXMtY29tbWFuZC1kb2VzLW5vdC1leGlzdCAxIiAmJgorCWV4cG9ydCBGQUtFX0xJTkVTICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSAtaSBIRUFEXiA+YWN0dWFsIDI+JjEKKwkpICYmCisJISBncmVwICJNYXliZSBnaXQtcmViYXNlIGlzIGJyb2tlbiIgYWN0dWFsCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vIGNoYW5nZXMgYXJlIGEgbm9wJyAnCiAJZ2l0IGNoZWNrb3V0IGJyYW5jaDIgJiYKIAlnaXQgcmViYXNlIC1pIEYgJiYKQEAgLTc1NSw0ICs3NjAsMTkxIEBACiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ByZXBhcmUgZm9yIHJlYmFzZSAtaSAtLWV4ZWMnICcKKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJZ2l0IGNoZWNrb3V0IC1iIGV4ZWN1dGUgJiYKKwl0ZXN0X2NvbW1pdCBvbmVfZXhlYyBtYWluLnR4dCBvbmVfZXhlYyAmJgorCXRlc3RfY29tbWl0IHR3b19leGVjIG1haW4udHh0IHR3b19leGVjICYmCisJdGVzdF9jb21taXQgdGhyZWVfZXhlYyBtYWluLnR4dCB0aHJlZV9leGVjCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncnVubmluZyAiZ2l0IHJlYmFzZSAtaSAtLWV4ZWMgZ2l0IHNob3cgSEVBRCInICcKKwlnaXQgcmViYXNlIC1pIC0tZXhlYyAiZ2l0IHNob3cgSEVBRCIgSEVBRH4yID5hY3R1YWwgJiYKKwkoCisJCUZBS0VfTElORVM9IjEgZXhlY19naXRfc2hvd19IRUFEIDIgZXhlY19naXRfc2hvd19IRUFEIiAmJgorCQlleHBvcnQgRkFLRV9MSU5FUyAmJgorCQlnaXQgcmViYXNlIC1pIEhFQUR+MiA+ZXhwZWN0CisJKSAmJgorCXNlZCAtZSAiMSw5ZCIgZXhwZWN0ID5leHBlY3RlZCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3J1bm5pbmcgImdpdCByZWJhc2UgLS1leGVjIGdpdCBzaG93IEhFQUQgLWkiJyAnCisJZ2l0IHJlc2V0IC0taGFyZCBleGVjdXRlICYmCisJZ2l0IHJlYmFzZSAtLWV4ZWMgImdpdCBzaG93IEhFQUQiIC1pIEhFQUR+MiA+YWN0dWFsICYmCisJKAorCQlGQUtFX0xJTkVTPSIxIGV4ZWNfZ2l0X3Nob3dfSEVBRCAyIGV4ZWNfZ2l0X3Nob3dfSEVBRCIgJiYKKwkJZXhwb3J0IEZBS0VfTElORVMgJiYKKwkJZ2l0IHJlYmFzZSAtaSBIRUFEfjIgPmV4cGVjdAorCSkgJiYKKwlzZWQgLWUgIjEsOWQiIGV4cGVjdCA+ZXhwZWN0ZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdydW5uaW5nICJnaXQgcmViYXNlIC1peCBnaXQgc2hvdyBIRUFEIicgJworCWdpdCByZXNldCAtLWhhcmQgZXhlY3V0ZSAmJgorCWdpdCByZWJhc2UgLWl4ICJnaXQgc2hvdyBIRUFEIiBIRUFEfjIgPmFjdHVhbCAmJgorCSgKKwkJRkFLRV9MSU5FUz0iMSBleGVjX2dpdF9zaG93X0hFQUQgMiBleGVjX2dpdF9zaG93X0hFQUQiICYmCisJCWV4cG9ydCBGQUtFX0xJTkVTICYmCisJCWdpdCByZWJhc2UgLWkgSEVBRH4yID5leHBlY3QKKwkpICYmCisJc2VkIC1lICIxLDlkIiBleHBlY3QgPmV4cGVjdGVkICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC1peCB3aXRoIHNldmVyYWwgPENNRD4nICcKKwlnaXQgcmVzZXQgLS1oYXJkIGV4ZWN1dGUgJiYKKwlnaXQgcmViYXNlIC1peCAiZ2l0IHNob3cgSEVBRDsgcHdkIiBIRUFEfjIgPmFjdHVhbCAmJgorCSgKKwkJRkFLRV9MSU5FUz0iMSBleGVjX2dpdF9zaG93X0hFQUQ7X3B3ZCAyIGV4ZWNfZ2l0X3Nob3dfSEVBRDtfcHdkIiAmJgorCQlleHBvcnQgRkFLRV9MSU5FUyAmJgorCQlnaXQgcmViYXNlIC1pIEhFQUR+MiA+ZXhwZWN0CisJKSAmJgorCXNlZCAtZSAiMSw5ZCIgZXhwZWN0ID5leHBlY3RlZCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtaXggd2l0aCBzZXZlcmFsIGluc3RhbmNlcyBvZiAtLWV4ZWMnICcKKwlnaXQgcmVzZXQgLS1oYXJkIGV4ZWN1dGUgJiYKKwlnaXQgcmViYXNlIC1pIC0tZXhlYyAiZ2l0IHNob3cgSEVBRCIgLS1leGVjICJwd2QiIEhFQUR+MiA+YWN0dWFsICYmCisJKAorCQlGQUtFX0xJTkVTPSIxIGV4ZWNfZ2l0X3Nob3dfSEVBRCBleGVjX3B3ZCAyCisJCQkJZXhlY19naXRfc2hvd19IRUFEIGV4ZWNfcHdkIiAmJgorCQlleHBvcnQgRkFLRV9MSU5FUyAmJgorCQlnaXQgcmViYXNlIC1pIEhFQUR+MiA+ZXhwZWN0CisJKSAmJgorCXNlZCAtZSAiMSwxMWQiIGV4cGVjdCA+ZXhwZWN0ZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLWl4IHdpdGggLS1hdXRvc3F1YXNoJyAnCisJZ2l0IHJlc2V0IC0taGFyZCBleGVjdXRlICYmCisJZ2l0IGNoZWNrb3V0IC1iIGF1dG9zcXVhc2ggJiYKKwllY2hvIHNlY29uZCA+c2Vjb25kLnR4dCAmJgorCWdpdCBhZGQgc2Vjb25kLnR4dCAmJgorCWdpdCBjb21taXQgLW0gImZpeHVwISB0d29fZXhlYyIgJiYKKwllY2hvIGJpcyA+YmlzLnR4dCAmJgorCWdpdCBhZGQgYmlzLnR4dCAmJgorCWdpdCBjb21taXQgLW0gImZpeHVwISB0d29fZXhlYyIgJiYKKwkoCisJCWdpdCBjaGVja291dCAtYiBhdXRvc3F1YXNoX2FjdHVhbCAmJgorCQlnaXQgcmViYXNlIC1pIC0tZXhlYyAiZ2l0IHNob3cgSEVBRCIgLS1hdXRvc3F1YXNoIEhFQUR+NCA+YWN0dWFsCisJKSAmJgorCWdpdCBjaGVja291dCBhdXRvc3F1YXNoICYmCisJKAorCQlnaXQgY2hlY2tvdXQgLWIgYXV0b3NxdWFzaF9leHBlY3RlZCAmJgorCQlGQUtFX0xJTkVTPSIxIGZpeHVwIDMgZml4dXAgNCBleGVjX2dpdF9zaG93X0hFQUQgMiBleGVjX2dpdF9zaG93X0hFQUQiICYmCisJCWV4cG9ydCBGQUtFX0xJTkVTICYmCisJCWdpdCByZWJhc2UgLWkgSEVBRH40ID5leHBlY3QKKwkpICYmCisJc2VkIC1lICIxLDEzZCIgZXhwZWN0ID5leHBlY3RlZCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtLWV4ZWMgd2l0aG91dCAtaSBzaG93cyBlcnJvciBtZXNzYWdlJyAnCisJZ2l0IHJlc2V0IC0taGFyZCBleGVjdXRlICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSAtLWV4ZWMgImdpdCBzaG93IEhFQUQiIEhFQUR+MiAyPmFjdHVhbCAmJgorCWVjaG8gIlRoZSAtLWV4ZWMgb3B0aW9uIG11c3QgYmUgdXNlZCB3aXRoIHRoZSAtLWludGVyYWN0aXZlIG9wdGlvbiIgPmV4cGVjdGVkICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtaSAtLWV4ZWMgd2l0aG91dCA8Q01EPicgJworCWdpdCByZXNldCAtLWhhcmQgZXhlY3V0ZSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLWkgLS1leGVjIDI+dG1wICYmCisJc2VkIC1lICIxZCIgdG1wID5hY3R1YWwgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC1oID5leHBlY3RlZCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbCAmJgorCWdpdCBjaGVja291dCBtYXN0ZXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC1pIC0tcm9vdCByZS1vcmRlciBhbmQgZHJvcCBjb21taXRzJyAnCisJZ2l0IGNoZWNrb3V0IEUgJiYKKwlGQUtFX0xJTkVTPSIzIDEgMiA1IiBnaXQgcmViYXNlIC1pIC0tcm9vdCAmJgorCXRlc3QgRSA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgc2VkIC1uZSBcJHApICYmCisJdGVzdCBCID0gJChnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUReIHwgc2VkIC1uZSBcJHApICYmCisJdGVzdCBBID0gJChnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUReXiB8IHNlZCAtbmUgXCRwKSAmJgorCXRlc3QgQyA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEXl5eIHwgc2VkIC1uZSBcJHApICYmCisJdGVzdCAwID0gJChnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUReXl4gfCBncmVwIC1jIF5wYXJlbnRcICkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC1pIC0tcm9vdCByZXRhaW4gcm9vdCBjb21taXQgYXV0aG9yIGFuZCBtZXNzYWdlJyAnCisJZ2l0IGNoZWNrb3V0IEEgJiYKKwllY2hvIEIgPmZpbGU3ICYmCisJZ2l0IGFkZCBmaWxlNyAmJgorCUdJVF9BVVRIT1JfTkFNRT0iVHdlcnAgU25vZyIgZ2l0IGNvbW1pdCAtbSAiZGlmZmVyZW50IGF1dGhvciIgJiYKKwlGQUtFX0xJTkVTPSIyIiBnaXQgcmViYXNlIC1pIC0tcm9vdCAmJgorCWdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IGdyZXAgLXEgIl5hdXRob3IgVHdlcnAgU25vZyIgJiYKKwlnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgfCBncmVwIC1xICJeZGlmZmVyZW50IGF1dGhvciQiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtaSAtLXJvb3QgdGVtcG9yYXJ5IHNlbnRpbmVsIGNvbW1pdCcgJworCWdpdCBjaGVja291dCBCICYmCisJKAorCQlGQUtFX0xJTkVTPSIyIiAmJgorCQlleHBvcnQgRkFLRV9MSU5FUyAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC1pIC0tcm9vdAorCSkgJiYKKwlnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgfCBncmVwICJedHJlZSA0YjgyNWRjNjQyY2IiICYmCisJZ2l0IHJlYmFzZSAtLWFib3J0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtaSAtLXJvb3QgZml4dXAgcm9vdCBjb21taXQnICcKKwlnaXQgY2hlY2tvdXQgQiAmJgorCUZBS0VfTElORVM9IjEgZml4dXAgMiIgZ2l0IHJlYmFzZSAtaSAtLXJvb3QgJiYKKwl0ZXN0IEEgPSAkKGdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IHNlZCAtbmUgXCRwKSAmJgorCXRlc3QgQiA9ICQoZ2l0IHNob3cgSEVBRDpmaWxlMSkgJiYKKwl0ZXN0IDAgPSAkKGdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IGdyZXAgLWMgXnBhcmVudFwgKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLS1lZGl0LXRvZG8gZG9lcyBub3Qgd29ya3Mgb24gbm9uLWludGVyYWN0aXZlIHJlYmFzZScgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgY2hlY2tvdXQgY29uZmxpY3QtYnJhbmNoICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSAtLW9udG8gSEVBRH4yIEhFQUR+ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSAtLWVkaXQtdG9kbyAmJgorCWdpdCByZWJhc2UgLS1hYm9ydAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLS1lZGl0LXRvZG8gY2FuIGJlIHVzZWQgdG8gbW9kaWZ5IHRvZG8nICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGNoZWNrb3V0IG5vLWNvbmZsaWN0LWJyYW5jaF4wICYmCisJRkFLRV9MSU5FUz0iZWRpdCAxIDIgMyIgZ2l0IHJlYmFzZSAtaSBIRUFEfjMgJiYKKwlGQUtFX0xJTkVTPSIyIDEiIGdpdCByZWJhc2UgLS1lZGl0LXRvZG8gJiYKKwlnaXQgcmViYXNlIC0tY29udGludWUKKwl0ZXN0IE0gPSAkKGdpdCBjYXQtZmlsZSBjb21taXQgSEVBRF4gfCBzZWQgLW5lIFwkcCkgJiYKKwl0ZXN0IEwgPSAkKGdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IHNlZCAtbmUgXCRwKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLWkgcmVzcGVjdHMgY29yZS5jb21tZW50Y2hhcicgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgY2hlY2tvdXQgRV4wICYmCisJdGVzdF9jb25maWcgY29yZS5jb21tZW50Y2hhciAiXFwiICYmCisJd3JpdGVfc2NyaXB0IHJlbW92ZS1hbGwtYnV0LWZpcnN0LnNoIDw8LVxFT0YgJiYKKwlzZWQgLWUgIjIsXCRzL14vXFxcXC8iICIkMSIgPiIkMS50bXAiICYmCisJbXYgIiQxLnRtcCIgIiQxIgorCUVPRgorCXRlc3Rfc2V0X2VkaXRvciAiJChwd2QpL3JlbW92ZS1hbGwtYnV0LWZpcnN0LnNoIiAmJgorCWdpdCByZWJhc2UgLWkgQiAmJgorCXRlc3QgQiA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEXiB8IHNlZCAtbmUgXCRwKQorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM0MDUtcmViYXNlLW1hbGZvcm1lZC5zaCBiL3QvdDM0MDUtcmViYXNlLW1hbGZvcm1lZC5zaAppbmRleCBlNWFkNjdjLi4xOWVkZGFkIDEwMDc1NQotLS0gYS90L3QzNDA1LXJlYmFzZS1tYWxmb3JtZWQuc2gKKysrIGIvdC90MzQwNS1yZWJhc2UtbWFsZm9ybWVkLnNoCkBAIC0xLDYgKzEsNiBAQAogIyEvYmluL3NoCiAKLXRlc3RfZGVzY3JpcHRpb249J3JlYmFzZSBzaG91bGQgbm90IGluc2lzdCBvbiBnaXQgbWVzc2FnZSBjb252ZW50aW9uJwordGVzdF9kZXNjcmlwdGlvbj0ncmViYXNlIHNob3VsZCBoYW5kbGUgYXJiaXRyYXJ5IGdpdCBtZXNzYWdlJwogCiAuIC4vdGVzdC1saWIuc2gKIApAQCAtMTIsNiArMTIsMTEgQEAKIHRvIG9uZWxpbmUgc3VtbWFyeSBmb3JtYXQuCiBFT0YKIAorY2F0ID5HIDw8XEVPRgorY29tbWl0IGxvZyBtZXNzYWdlIGNvbnRhaW5pbmcgYSBkaWZmCitFT0YKKworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKIAogCT5maWxlMSAmJgpAQCAtMTksOCArMjQsOSBAQAogCWdpdCBhZGQgZmlsZTEgZmlsZTIgJiYKIAl0ZXN0X3RpY2sgJiYKIAlnaXQgY29tbWl0IC1tICJJbml0aWFsIGNvbW1pdCIgJiYKKwlnaXQgYnJhbmNoIGRpZmYtaW4tbWVzc2FnZQogCi0JZ2l0IGNoZWNrb3V0IC1iIHNpZGUgJiYKKwlnaXQgY2hlY2tvdXQgLWIgbXVsdGktbGluZS1zdWJqZWN0ICYmCiAJY2F0IEYgPmZpbGUyICYmCiAJZ2l0IGFkZCBmaWxlMiAmJgogCXRlc3RfdGljayAmJgpAQCAtMjgsNiArMzQsMTcgQEAKIAogCWdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IHNlZCAtZSAiMSwvXlwkL2QiID5GMCAmJgogCisJZ2l0IGNoZWNrb3V0IGRpZmYtaW4tbWVzc2FnZSAmJgorCWVjaG8gImNvbW1pdCBsb2cgbWVzc2FnZSBjb250YWluaW5nIGEgZGlmZiIgPkcgJiYKKwllY2hvICIiID4+RworCWNhdCBHID5maWxlMiAmJgorCWdpdCBhZGQgZmlsZTIgJiYKKwlnaXQgZGlmZiAtLWNhY2hlZCA+PkcgJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1GIEcgJiYKKworCWdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IHNlZCAtZSAiMSwvXlwkL2QiID5HMCAmJgorCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCiAJZWNobyBPbmUgPmZpbGUxICYmCkBAIC0zNiwxMyArNTMsMjAgQEAKIAlnaXQgY29tbWl0IC1tICJTZWNvbmQgY29tbWl0IgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIHJlYmFzZSAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgY29tbWl0IHdpdGggbXVsdGktbGluZSBzdWJqZWN0JyAnCiAKLQlnaXQgcmViYXNlIG1hc3RlciBzaWRlICYmCisJZ2l0IHJlYmFzZSBtYXN0ZXIgbXVsdGktbGluZS1zdWJqZWN0ICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgc2VkIC1lICIxLC9eXCQvZCIgPkYxICYmCiAKIAl0ZXN0X2NtcCBGMCBGMSAmJgogCXRlc3RfY21wIEYgRjAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGNvbW1pdCB3aXRoIGRpZmYgaW4gbWVzc2FnZScgJworCWdpdCByZWJhc2UgbWFzdGVyIGRpZmYtaW4tbWVzc2FnZSAmJgorCWdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IHNlZCAtZSAiMSwvXiQvZCIgPkcxICYmCisJdGVzdF9jbXAgRzAgRzEgJiYKKwl0ZXN0X2NtcCBHIEcwCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzQwNi1yZWJhc2UtbWVzc2FnZS5zaCBiL3QvdDM0MDYtcmViYXNlLW1lc3NhZ2Uuc2gKaW5kZXggNjg5ODM3Ny4uZTZhOWEwZCAxMDA3NTUKLS0tIGEvdC90MzQwNi1yZWJhc2UtbWVzc2FnZS5zaAorKysgYi90L3QzNDA2LXJlYmFzZS1tZXNzYWdlLnNoCkBAIC02Miw5ICs2MiwxNiBAQAogICAgICAgICAhIGdyZXAgIl4gZmlsZVggfCAgKjEgKyQiIGRpZmZzdGF0LnR4dAogJwogCisjIE91dHB1dCB0byBzdGRlcnI6CisjCisjICAgICAiRG9lcyBub3QgcG9pbnQgdG8gYSB2YWxpZCBjb21taXQ6IGludmFsaWQtcmVmIgorIworIyBORUVEU1dPUks6IFRoaXMgImdyZXAiIGlzIGZpbmUgaW4gcmVhbCBub24tQyBsb2NhbGVzLCBidXQKKyMgR0VUVEVYVF9QT0lTT04gcG9pc29ucyB0aGUgcmVmbmFtZSBhbG9uZyB3aXRoIHRoZSBlbmNsb3NpbmcKKyMgZXJyb3IgbWVzc2FnZS4KIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtLW9udG8gb3V0cHV0cyB0aGUgaW52YWxpZCByZWYnICcKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC0tb250byBpbnZhbGlkLXJlZiBIRUFEIEhFQUQgMj5lcnIgJiYKLQlncmVwICJpbnZhbGlkLXJlZiIgZXJyCisJdGVzdF9pMThuZ3JlcCAiaW52YWxpZC1yZWYiIGVycgogJwogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM0MTItcmViYXNlLXJvb3Quc2ggYi90L3QzNDEyLXJlYmFzZS1yb290LnNoCmluZGV4IDA4NmM5MWMuLjBiNTIxMDUgMTAwNzU1Ci0tLSBhL3QvdDM0MTItcmViYXNlLXJvb3Quc2gKKysrIGIvdC90MzQxMi1yZWJhc2Utcm9vdC5zaApAQCAtMjIsOCArMjIsOSBAQAogCXRlc3RfY29tbWl0IDQgQgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLS1yb290IGV4cGVjdHMgLS1vbnRvJyAnCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSAtLXJvb3QKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtLXJvb3QgZmFpbHMgd2l0aCB0b28gbWFueSBhcmdzJyAnCisJZ2l0IGNoZWNrb3V0IC1CIGZhaWwgb3RoZXIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC0tb250byBtYXN0ZXIgLS1yb290IGZhaWwgZmFpbAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBwcmUtcmViYXNlIGhvb2snICcKQEAgLTQyLDcgKzQzLDcgQEAKIEVPRgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLS1yb290IC0tb250byA8bmV3YmFzZT4nICcKLQlnaXQgY2hlY2tvdXQgLWIgd29yayAmJgorCWdpdCBjaGVja291dCAtYiB3b3JrIG90aGVyICYmCiAJZ2l0IHJlYmFzZSAtLXJvb3QgLS1vbnRvIG1hc3RlciAmJgogCWdpdCBsb2cgLS1wcmV0dHk9dGZvcm1hdDoiJXMiID4gcmViYXNlZCAmJgogCXRlc3RfY21wIGV4cGVjdCByZWJhc2VkCmRpZmYgLS1naXQgYS90L3QzNTAxLXJldmVydC1jaGVycnktcGljay5zaCBiL3QvdDM1MDEtcmV2ZXJ0LWNoZXJyeS1waWNrLnNoCmluZGV4IDU5NWQyZmYuLjZmNDg5ZTIgMTAwNzU1Ci0tLSBhL3QvdDM1MDEtcmV2ZXJ0LWNoZXJyeS1waWNrLnNoCisrKyBiL3QvdDM1MDEtcmV2ZXJ0LWNoZXJyeS1waWNrLnNoCkBAIC00Nyw3ICs0Nyw3IEBACiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgSEVBRCAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBjaGVycnktcGljayAtLW5vbnNlbnNlIDI+bXNnICYmCiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgSEVBRCAiJHBvcyIgJiYKLQlncmVwICdbVXVdc2FnZTonIG1zZworCXRlc3RfaTE4bmdyZXAgJ1tVdV1zYWdlOicgbXNnCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JldmVydCAtLW5vbnNlbnNlJyAnCkBAIC01Niw3ICs1Niw3IEBACiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgSEVBRCAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZXZlcnQgLS1ub25zZW5zZSAyPm1zZyAmJgogCWdpdCBkaWZmIC0tZXhpdC1jb2RlIEhFQUQgIiRwb3MiICYmCi0JZ3JlcCAnW1V1XXNhZ2U6JyBtc2cKKwl0ZXN0X2kxOG5ncmVwICdbVXVdc2FnZTonIG1zZwogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVycnktcGljayBhZnRlciByZW5hbWluZyBicmFuY2gnICcKQEAgLTEwMCw0ICsxMDAsMTMgQEAKIAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVyeS1waWNrIG9uIHVuYm9ybiBicmFuY2gnICcKKwlnaXQgY2hlY2tvdXQgLS1vcnBoYW4gdW5ib3JuICYmCisJZ2l0IHJtIC0tY2FjaGVkIC1yIC4gJiYKKwlybSAtcmYgKiAmJgorCWdpdCBjaGVycnktcGljayBpbml0aWFsICYmCisJZ2l0IGRpZmYgLS1xdWlldCBpbml0aWFsICYmCisJISB0ZXN0X2NtcF9yZXYgaW5pdGlhbCBIRUFECisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzUwNS1jaGVycnktcGljay1lbXB0eS5zaCBiL3QvdDM1MDUtY2hlcnJ5LXBpY2stZW1wdHkuc2gKaW5kZXggNWExMzQwYy4uYTBjNmUzMCAxMDA3NTUKLS0tIGEvdC90MzUwNS1jaGVycnktcGljay1lbXB0eS5zaAorKysgYi90L3QzNTA1LWNoZXJyeS1waWNrLWVtcHR5LnNoCkBAIC01Myw2ICs1MywxMSBAQAogCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJyeS1waWNrIGEgY29tbWl0IHdpdGggYW4gZW1wdHkgbWVzc2FnZSB3aXRoIC0tYWxsb3ctZW1wdHktbWVzc2FnZScgJworCWdpdCBjaGVja291dCAtZiBtYXN0ZXIgJiYKKwlnaXQgY2hlcnJ5LXBpY2sgLS1hbGxvdy1lbXB0eS1tZXNzYWdlIGVtcHR5LWJyYW5jaAorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVycnkgcGljayBhbiBlbXB0eSBub24tZmYgY29tbWl0IHdpdGhvdXQgLS1hbGxvdy1lbXB0eScgJwogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAllY2hvIGZvdXJ0aCA+PmZpbGUyICYmCmRpZmYgLS1naXQgYS90L3QzNTA2LWNoZXJyeS1waWNrLWZmLnNoIGIvdC90MzUwNi1jaGVycnktcGljay1mZi5zaAppbmRleCA1MWNhMzkxLi4zNzNhYWQ2IDEwMDc1NQotLS0gYS90L3QzNTA2LWNoZXJyeS1waWNrLWZmLnNoCisrKyBiL3QvdDM1MDYtY2hlcnJ5LXBpY2stZmYuc2gKQEAgLTEwNSw0ICsxMDUsMTIgQEAKIAl0ZXN0ICIkKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkiID0gIjFkZjE5MmNkOGJjNThhMmIyNzVkODQyY2VkZTRkMjIxYWQ5MDAwZDEiCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJ5LXBpY2sgLS1mZiBvbiB1bmJvcm4gYnJhbmNoJyAnCisJZ2l0IGNoZWNrb3V0IC0tb3JwaGFuIHVuYm9ybiAmJgorCWdpdCBybSAtLWNhY2hlZCAtciAuICYmCisJcm0gLXJmICogJiYKKwlnaXQgY2hlcnJ5LXBpY2sgLS1mZiBmaXJzdCAmJgorCXRlc3RfY21wX3JldiBmaXJzdCBIRUFECisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzUwNy1jaGVycnktcGljay1jb25mbGljdC5zaCBiL3QvdDM1MDctY2hlcnJ5LXBpY2stY29uZmxpY3Quc2gKaW5kZXggMGM4MWIzYy4uMjIzYjk4NCAxMDA3NTUKLS0tIGEvdC90MzUwNy1jaGVycnktcGljay1jb25mbGljdC5zaAorKysgYi90L3QzNTA3LWNoZXJyeS1waWNrLWNvbmZsaWN0LnNoCkBAIC0xMSwxMiArMTEsNiBAQAogCiAuIC4vdGVzdC1saWIuc2gKIAotdGVzdF9jbXBfcmV2ICgpIHsKLQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICIkMSIgPmV4cGVjdC5yZXYgJiYKLQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICIkMiIgPmFjdHVhbC5yZXYgJiYKLQl0ZXN0X2NtcCBleHBlY3QucmV2IGFjdHVhbC5yZXYKLX0KLQogcHJpc3RpbmVfZGV0YWNoICgpIHsKIAlnaXQgY2hlY2tvdXQgLWYgIiQxXjAiICYmCiAJZ2l0IHJlYWQtdHJlZSAtdSAtLXJlc2V0IEhFQUQgJiYKQEAgLTMwLDYgKzI0LDcgQEAKIAl0ZXN0X2NvbW1pdCBpbml0aWFsIGZvbyBhICYmCiAJdGVzdF9jb21taXQgYmFzZSBmb28gYiAmJgogCXRlc3RfY29tbWl0IHBpY2tlZCBmb28gYyAmJgorCXRlc3RfY29tbWl0IC0tc2lnbm9mZiBwaWNrZWQtc2lnbmVkIGZvbyBkICYmCiAJZ2l0IGNvbmZpZyBhZHZpY2UuZGV0YWNoZWRoZWFkIGZhbHNlCiAKICcKQEAgLTM0MCw0ICszMzUsMzUgQEAKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmFpbGVkIGNoZXJyeS1waWNrIGRvZXMgbm90IGZvcmdldCAtcycgJworCXByaXN0aW5lX2RldGFjaCBpbml0aWFsICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNoZXJyeS1waWNrIC1zIHBpY2tlZCAmJgorCXRlc3RfaTE4bmdyZXAgLWUgIlNpZ25lZC1vZmYtYnkiIC5naXQvTUVSR0VfTVNHCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbW1pdCBhZnRlciBmYWlsZWQgY2hlcnJ5LXBpY2sgZG9lcyBub3QgYWRkIGR1cGxpY2F0ZWQgLXMnICcKKwlwcmlzdGluZV9kZXRhY2ggaW5pdGlhbCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBjaGVycnktcGljayAtcyBwaWNrZWQtc2lnbmVkICYmCisJZ2l0IGNvbW1pdCAtYSAtcyAmJgorCXRlc3QgJChnaXQgc2hvdyAtcyB8Z3JlcCAtYyAiU2lnbmVkLW9mZi1ieSIpID0gMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQgYWZ0ZXIgZmFpbGVkIGNoZXJyeS1waWNrIGFkZHMgLXMgYXQgdGhlIHJpZ2h0IHBsYWNlJyAnCisJcHJpc3RpbmVfZGV0YWNoIGluaXRpYWwgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgY2hlcnJ5LXBpY2sgcGlja2VkICYmCisJZ2l0IGNvbW1pdCAtYSAtcyAmJgorCXB3ZCAmJgorCWNhdCA8PEVPRiA+IGV4cGVjdGVkICYmCitwaWNrZWQKKworU2lnbmVkLW9mZi1ieTogQyBPIE1pdHRlciA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPgorCitDb25mbGljdHM6CisJZm9vCitFT0YKKworCWdpdCBzaG93IC1zIC0tcHJldHR5PWZvcm1hdDolQiA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM1MDgtY2hlcnJ5LXBpY2stbWFueS1jb21taXRzLnNoIGIvdC90MzUwOC1jaGVycnktcGljay1tYW55LWNvbW1pdHMuc2gKaW5kZXggNzVmN2ZmNC4uMTljOTlkNyAxMDA3NTUKLS0tIGEvdC90MzUwOC1jaGVycnktcGljay1tYW55LWNvbW1pdHMuc2gKKysrIGIvdC90MzUwOC1jaGVycnktcGljay1tYW55LWNvbW1pdHMuc2gKQEAgLTUsMTUgKzUsMTEgQEAKIC4gLi90ZXN0LWxpYi5zaAogCiBjaGVja19oZWFkX2RpZmZlcnNfZnJvbSgpIHsKLQloZWFkPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKSAmJgotCWFyZz0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgIiQxIikgJiYKLQl0ZXN0ICIkaGVhZCIgIT0gIiRhcmciCisJISB0ZXN0X2NtcF9yZXYgSEVBRCAiJDEiCiB9CiAKIGNoZWNrX2hlYWRfZXF1YWxzKCkgewotCWhlYWQ9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpICYmCi0JYXJnPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJDEiKSAmJgotCXRlc3QgIiRoZWFkIiA9ICIkYXJnIgorCXRlc3RfY21wX3JldiBIRUFEICIkMSIKIH0KIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCkBAIC00NCw2ICs0MCwyNyBAQAogCWNoZWNrX2hlYWRfZGlmZmVyc19mcm9tIGZvdXJ0aAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVycnktcGljayB0aHJlZSBvbmUgdHdvIHdvcmtzJyAnCisJZ2l0IGNoZWNrb3V0IC1mIGZpcnN0ICYmCisJdGVzdF9jb21taXQgb25lICYmCisJdGVzdF9jb21taXQgdHdvICYmCisJdGVzdF9jb21taXQgdGhyZWUgJiYKKwlnaXQgY2hlY2tvdXQgLWYgbWFzdGVyICYmCisJZ2l0IHJlc2V0IC0taGFyZCBmaXJzdCAmJgorCWdpdCBjaGVycnktcGljayB0aHJlZSBvbmUgdHdvICYmCisJZ2l0IGRpZmYgLS1xdWlldCB0aHJlZSAmJgorCWdpdCBkaWZmIC0tcXVpZXQgSEVBRCB0aHJlZSAmJgorCXRlc3QgIiQoZ2l0IGxvZyAtLXJldmVyc2UgLS1mb3JtYXQ9JXMgZmlyc3QuLikiID0gInRocmVlCitvbmUKK3R3byIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlcnJ5LXBpY2sgdGhyZWUgb25lIHR3bzogZmFpbHMnICcKKwlnaXQgY2hlY2tvdXQgLWYgbWFzdGVyICYmCisJZ2l0IHJlc2V0IC0taGFyZCBmaXJzdCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBjaGVycnktcGljayB0aHJlZSBvbmUgdHdvOgorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdvdXRwdXQgdG8ga2VlcCB1c2VyIGVudGVydGFpbmVkIGR1cmluZyBtdWx0aS1waWNrJyAnCiAJY2F0IDw8LVxFT0YgPmV4cGVjdGVkICYmCiAJW21hc3RlciBPQkpJRF0gc2Vjb25kCmRpZmYgLS1naXQgYS90L3QzNTEwLWNoZXJyeS1waWNrLXNlcXVlbmNlLnNoIGIvdC90MzUxMC1jaGVycnktcGljay1zZXF1ZW5jZS5zaAppbmRleCBmNGU2NDUwLi43YjdhODlkIDEwMDc1NQotLS0gYS90L3QzNTEwLWNoZXJyeS1waWNrLXNlcXVlbmNlLnNoCisrKyBiL3QvdDM1MTAtY2hlcnJ5LXBpY2stc2VxdWVuY2Uuc2gKQEAgLTI0LDEyICsyNCw2IEBACiAJZ2l0IGNsZWFuIC1kIC1mIC1mIC1xIC14CiB9CiAKLXRlc3RfY21wX3JldiAoKSB7Ci0JZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJDEiID5leHBlY3QucmV2ICYmCi0JZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJDIiID5hY3R1YWwucmV2ICYmCi0JdGVzdF9jbXAgZXhwZWN0LnJldiBhY3R1YWwucmV2Ci19Ci0KIHRlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJwogCWdpdCBjb25maWcgYWR2aWNlLmRldGFjaGVkaGVhZCBmYWxzZSAmJgogCWVjaG8gdW5yZWxhdGVkID51bnJlbGF0ZWQgJiYKQEAgLTQxMCw3ICs0MDQsNyBAQAogCWdyZXAgImNoZXJyeSBwaWNrZWQgZnJvbS4qJHBpY2tlZCIgbXNnCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc2lnbm9mZiBpcyBub3QgYXV0b21hdGljYWxseSBwcm9wYWdhdGVkIHRvIHJlc29sdmVkIGNvbmZsaWN0JyAnCit0ZXN0X2V4cGVjdF9mYWlsdXJlICctLXNpZ25vZmYgaXMgYXV0b21hdGljYWxseSBwcm9wYWdhdGVkIHRvIHJlc29sdmVkIGNvbmZsaWN0JyAnCiAJcHJpc3RpbmVfZGV0YWNoIGluaXRpYWwgJiYKIAl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IGNoZXJyeS1waWNrIC0tc2lnbm9mZiBiYXNlLi5hbm90aGVycGljayAmJgogCWVjaG8gImMiID5mb28gJiYKQEAgLTQyOCw3ICs0MjIsNyBAQAogCWdyZXAgIlNpZ25lZC1vZmYtYnk6IiBhbm90aGVycGlja19tc2cKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zaWdub2ZmIGRyb3BwZWQgZm9yIGltcGxpY2l0IGNvbW1pdCBvZiByZXNvbHV0aW9uLCBtdWx0aS1waWNrIGNhc2UnICcKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJy0tc2lnbm9mZiBkcm9wcGVkIGZvciBpbXBsaWNpdCBjb21taXQgb2YgcmVzb2x1dGlvbiwgbXVsdGktcGljayBjYXNlJyAnCiAJcHJpc3RpbmVfZGV0YWNoIGluaXRpYWwgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgY2hlcnJ5LXBpY2sgLXMgcGlja2VkIGFub3RoZXJwaWNrICYmCiAJZWNobyBjID5mb28gJiYKQEAgLTQ0MSw3ICs0MzUsNyBAQAogCSEgZ3JlcCBTaWduZWQtb2ZmLWJ5OiBtc2cKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lnbi1vZmYgbmVlZHMgdG8gYmUgcmVhZmZpcm1lZCBhZnRlciBjb25mbGljdCByZXNvbHV0aW9uLCBzaW5nbGUtcGljayBjYXNlJyAnCit0ZXN0X2V4cGVjdF9mYWlsdXJlICdzaWduLW9mZiBuZWVkcyB0byBiZSByZWFmZmlybWVkIGFmdGVyIGNvbmZsaWN0IHJlc29sdXRpb24sIHNpbmdsZS1waWNrIGNhc2UnICcKIAlwcmlzdGluZV9kZXRhY2ggaW5pdGlhbCAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBjaGVycnktcGljayAtcyBwaWNrZWQgJiYKIAllY2hvIGMgPmZvbyAmJgpkaWZmIC0tZ2l0IGEvdC90MzUxMS1jaGVycnktcGljay14LnNoIGIvdC90MzUxMS1jaGVycnktcGljay14LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY5NzcyNzkKLS0tIC9kZXYvbnVsbAorKysgYi90L3QzNTExLWNoZXJyeS1waWNrLXguc2gKQEAgLTAsMCArMSwyMTkgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdUZXN0IGNoZXJyeS1waWNrIC14IGFuZCAtcycKKworLiAuL3Rlc3QtbGliLnNoCisKK3ByaXN0aW5lX2RldGFjaCAoKSB7CisJZ2l0IGNoZXJyeS1waWNrIC0tcXVpdCAmJgorCWdpdCBjaGVja291dCAtZiAiJDFeMCIgJiYKKwlnaXQgcmVhZC10cmVlIC11IC0tcmVzZXQgSEVBRCAmJgorCWdpdCBjbGVhbiAtZCAtZiAtZiAtcSAteAorfQorCittZXNnX29uZV9saW5lPSdiYXNlOiBjb21taXQgbWVzc2FnZScKKworbWVzZ19ub19mb290ZXI9IiRtZXNnX29uZV9saW5lCisKK09uZVdvcmRCb2R5VGhhdHNOb3RBLVMtby1CIgorCittZXNnX3dpdGhfZm9vdGVyPSIkbWVzZ19ub19mb290ZXIKKworU2lnbmVkLW9mZi1ieTogJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+CitTaWduZWQtb2ZmLWJ5OiBBLlUuIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEIuVS4gVGhvciA8YnV0aG9yQGV4YW1wbGUuY29tPiIKKworbWVzZ19icm9rZW5fZm9vdGVyPSIkbWVzZ19ub19mb290ZXIKKworVGhlIHNpZ25lZC1vZmYtYnkgc3RyaW5nIHNob3VsZCBiZWdpbiB3aXRoIHRoZSB3b3JkcyBTaWduZWQtb2ZmLWJ5IGZvbGxvd2VkCitieSBhIGNvbG9uIGFuZCBzcGFjZSwgYW5kIHRoZW4gdGhlIHNpZ25lcnMgbmFtZSBhbmQgZW1haWwgYWRkcmVzcy4gZS5nLgorU2lnbmVkLW9mZi1ieTogJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+IgorCittZXNnX3dpdGhfZm9vdGVyX3NvYj0iJG1lc2dfd2l0aF9mb290ZXIKK1NpZ25lZC1vZmYtYnk6ICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPiIKKworbWVzZ193aXRoX2NoZXJyeV9mb290ZXI9IiRtZXNnX3dpdGhfZm9vdGVyX3NvYgorKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOSkKK1Rlc3RlZC1ieTogQy5VLiBUaG9yIDxjdXRob3JAZXhhbXBsZS5jb20+IgorCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJworCWdpdCBjb25maWcgYWR2aWNlLmRldGFjaGVkaGVhZCBmYWxzZSAmJgorCWVjaG8gdW5yZWxhdGVkID51bnJlbGF0ZWQgJiYKKwlnaXQgYWRkIHVucmVsYXRlZCAmJgorCXRlc3RfY29tbWl0IGluaXRpYWwgZm9vIGEgJiYKKwl0ZXN0X2NvbW1pdCAiJG1lc2dfb25lX2xpbmUiIGZvbyBiIG1lc2ctb25lLWxpbmUgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIGluaXRpYWwgJiYKKwl0ZXN0X2NvbW1pdCAiJG1lc2dfbm9fZm9vdGVyIiBmb28gYiBtZXNnLW5vLWZvb3RlciAmJgorCWdpdCByZXNldCAtLWhhcmQgaW5pdGlhbCAmJgorCXRlc3RfY29tbWl0ICIkbWVzZ19icm9rZW5fZm9vdGVyIiBmb28gYiBtZXNnLWJyb2tlbi1mb290ZXIgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIGluaXRpYWwgJiYKKwl0ZXN0X2NvbW1pdCAiJG1lc2dfd2l0aF9mb290ZXIiIGZvbyBiIG1lc2ctd2l0aC1mb290ZXIgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIGluaXRpYWwgJiYKKwl0ZXN0X2NvbW1pdCAiJG1lc2dfd2l0aF9mb290ZXJfc29iIiBmb28gYiBtZXNnLXdpdGgtZm9vdGVyLXNvYiAmJgorCWdpdCByZXNldCAtLWhhcmQgaW5pdGlhbCAmJgorCXRlc3RfY29tbWl0ICIkbWVzZ193aXRoX2NoZXJyeV9mb290ZXIiIGZvbyBiIG1lc2ctd2l0aC1jaGVycnktZm9vdGVyICYmCisJcHJpc3RpbmVfZGV0YWNoIGluaXRpYWwgJiYKKwl0ZXN0X2NvbW1pdCBjb25mbGljdGluZyB1bnJlbGF0ZWQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlcnJ5LXBpY2sgLXggaW5zZXJ0cyBibGFuayBsaW5lIGFmdGVyIG9uZSBsaW5lIHN1YmplY3QnICcKKwlwcmlzdGluZV9kZXRhY2ggaW5pdGlhbCAmJgorCXNoYTE9YGdpdCByZXYtcGFyc2UgbWVzZy1vbmUtbGluZV4wYCAmJgorCWdpdCBjaGVycnktcGljayAteCBtZXNnLW9uZS1saW5lICYmCisJY2F0IDw8LUVPRiA+ZXhwZWN0ICYmCisJCSRtZXNnX29uZV9saW5lCisKKwkJKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgJHNoYTEpCisJRU9GCisJZ2l0IGxvZyAtMSAtLXByZXR0eT1mb3JtYXQ6JUIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlcnJ5LXBpY2sgLXMgaW5zZXJ0cyBibGFuayBsaW5lIGFmdGVyIG9uZSBsaW5lIHN1YmplY3QnICcKKwlwcmlzdGluZV9kZXRhY2ggaW5pdGlhbCAmJgorCWdpdCBjaGVycnktcGljayAtcyBtZXNnLW9uZS1saW5lICYmCisJY2F0IDw8LUVPRiA+ZXhwZWN0ICYmCisJCSRtZXNnX29uZV9saW5lCisKKwkJU2lnbmVkLW9mZi1ieTogJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+CisJRU9GCisJZ2l0IGxvZyAtMSAtLXByZXR0eT1mb3JtYXQ6JUIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlcnJ5LXBpY2sgLXMgaW5zZXJ0cyBibGFuayBsaW5lIGFmdGVyIG5vbi1jb25mb3JtaW5nIGZvb3RlcicgJworCXByaXN0aW5lX2RldGFjaCBpbml0aWFsICYmCisJZ2l0IGNoZXJyeS1waWNrIC1zIG1lc2ctYnJva2VuLWZvb3RlciAmJgorCWNhdCA8PC1FT0YgPmV4cGVjdCAmJgorCQkkbWVzZ19icm9rZW5fZm9vdGVyCisKKwkJU2lnbmVkLW9mZi1ieTogJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+CisJRU9GCisJZ2l0IGxvZyAtMSAtLXByZXR0eT1mb3JtYXQ6JUIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlcnJ5LXBpY2sgLXggaW5zZXJ0cyBibGFuayBsaW5lIHdoZW4gY29uZm9ybWluZyBmb290ZXIgbm90IGZvdW5kJyAnCisJcHJpc3RpbmVfZGV0YWNoIGluaXRpYWwgJiYKKwlzaGExPWBnaXQgcmV2LXBhcnNlIG1lc2ctbm8tZm9vdGVyXjBgICYmCisJZ2l0IGNoZXJyeS1waWNrIC14IG1lc2ctbm8tZm9vdGVyICYmCisJY2F0IDw8LUVPRiA+ZXhwZWN0ICYmCisJCSRtZXNnX25vX2Zvb3RlcgorCisJCShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0ICRzaGExKQorCUVPRgorCWdpdCBsb2cgLTEgLS1wcmV0dHk9Zm9ybWF0OiVCID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJyeS1waWNrIC1zIGluc2VydHMgYmxhbmsgbGluZSB3aGVuIGNvbmZvcm1pbmcgZm9vdGVyIG5vdCBmb3VuZCcgJworCXByaXN0aW5lX2RldGFjaCBpbml0aWFsICYmCisJZ2l0IGNoZXJyeS1waWNrIC1zIG1lc2ctbm8tZm9vdGVyICYmCisJY2F0IDw8LUVPRiA+ZXhwZWN0ICYmCisJCSRtZXNnX25vX2Zvb3RlcgorCisJCVNpZ25lZC1vZmYtYnk6ICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPgorCUVPRgorCWdpdCBsb2cgLTEgLS1wcmV0dHk9Zm9ybWF0OiVCID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJyeS1waWNrIC14IC1zIGluc2VydHMgYmxhbmsgbGluZSB3aGVuIGNvbmZvcm1pbmcgZm9vdGVyIG5vdCBmb3VuZCcgJworCXByaXN0aW5lX2RldGFjaCBpbml0aWFsICYmCisJc2hhMT1gZ2l0IHJldi1wYXJzZSBtZXNnLW5vLWZvb3Rlcl4wYCAmJgorCWdpdCBjaGVycnktcGljayAteCAtcyBtZXNnLW5vLWZvb3RlciAmJgorCWNhdCA8PC1FT0YgPmV4cGVjdCAmJgorCQkkbWVzZ19ub19mb290ZXIKKworCQkoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAkc2hhMSkKKwkJU2lnbmVkLW9mZi1ieTogJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+CisJRU9GCisJZ2l0IGxvZyAtMSAtLXByZXR0eT1mb3JtYXQ6JUIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlcnJ5LXBpY2sgLXMgYWRkcyBzb2Igd2hlbiBsYXN0IHNvYiBkb2VzbnQgbWF0Y2ggY29tbWl0dGVyJyAnCisJcHJpc3RpbmVfZGV0YWNoIGluaXRpYWwgJiYKKwlnaXQgY2hlcnJ5LXBpY2sgLXMgbWVzZy13aXRoLWZvb3RlciAmJgorCWNhdCA8PC1FT0YgPmV4cGVjdCAmJgorCQkkbWVzZ193aXRoX2Zvb3RlcgorCQlTaWduZWQtb2ZmLWJ5OiAkR0lUX0NPTU1JVFRFUl9OQU1FIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4KKwlFT0YKKwlnaXQgbG9nIC0xIC0tcHJldHR5PWZvcm1hdDolQiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVycnktcGljayAteCAtcyBhZGRzIHNvYiB3aGVuIGxhc3Qgc29iIGRvZXNudCBtYXRjaCBjb21taXR0ZXInICcKKwlwcmlzdGluZV9kZXRhY2ggaW5pdGlhbCAmJgorCXNoYTE9YGdpdCByZXYtcGFyc2UgbWVzZy13aXRoLWZvb3Rlcl4wYCAmJgorCWdpdCBjaGVycnktcGljayAteCAtcyBtZXNnLXdpdGgtZm9vdGVyICYmCisJY2F0IDw8LUVPRiA+ZXhwZWN0ICYmCisJCSRtZXNnX3dpdGhfZm9vdGVyCisJCShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0ICRzaGExKQorCQlTaWduZWQtb2ZmLWJ5OiAkR0lUX0NPTU1JVFRFUl9OQU1FIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4KKwlFT0YKKwlnaXQgbG9nIC0xIC0tcHJldHR5PWZvcm1hdDolQiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVycnktcGljayAtcyByZWZyYWlucyBmcm9tIGFkZGluZyBkdXBsaWNhdGUgdHJhaWxpbmcgc29iJyAnCisJcHJpc3RpbmVfZGV0YWNoIGluaXRpYWwgJiYKKwlnaXQgY2hlcnJ5LXBpY2sgLXMgbWVzZy13aXRoLWZvb3Rlci1zb2IgJiYKKwljYXQgPDwtRU9GID5leHBlY3QgJiYKKwkJJG1lc2dfd2l0aF9mb290ZXJfc29iCisJRU9GCisJZ2l0IGxvZyAtMSAtLXByZXR0eT1mb3JtYXQ6JUIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlcnJ5LXBpY2sgLXggLXMgYWRkcyBzb2IgZXZlbiB3aGVuIHRyYWlsaW5nIHNvYiBleGlzdHMgZm9yIGNvbW1pdHRlcicgJworCXByaXN0aW5lX2RldGFjaCBpbml0aWFsICYmCisJc2hhMT1gZ2l0IHJldi1wYXJzZSBtZXNnLXdpdGgtZm9vdGVyLXNvYl4wYCAmJgorCWdpdCBjaGVycnktcGljayAteCAtcyBtZXNnLXdpdGgtZm9vdGVyLXNvYiAmJgorCWNhdCA8PC1FT0YgPmV4cGVjdCAmJgorCQkkbWVzZ193aXRoX2Zvb3Rlcl9zb2IKKwkJKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgJHNoYTEpCisJCVNpZ25lZC1vZmYtYnk6ICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPgorCUVPRgorCWdpdCBsb2cgLTEgLS1wcmV0dHk9Zm9ybWF0OiVCID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJyeS1waWNrIC14IHRyZWF0cyAiKGNoZXJyeSBwaWNrZWQgZnJvbS4uLiIgbGluZSBhcyBwYXJ0IG9mIGZvb3RlcicgJworCXByaXN0aW5lX2RldGFjaCBpbml0aWFsICYmCisJc2hhMT1gZ2l0IHJldi1wYXJzZSBtZXNnLXdpdGgtY2hlcnJ5LWZvb3Rlcl4wYCAmJgorCWdpdCBjaGVycnktcGljayAteCBtZXNnLXdpdGgtY2hlcnJ5LWZvb3RlciAmJgorCWNhdCA8PC1FT0YgPmV4cGVjdCAmJgorCQkkbWVzZ193aXRoX2NoZXJyeV9mb290ZXIKKwkJKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgJHNoYTEpCisJRU9GCisJZ2l0IGxvZyAtMSAtLXByZXR0eT1mb3JtYXQ6JUIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlcnJ5LXBpY2sgLXMgdHJlYXRzICIoY2hlcnJ5IHBpY2tlZCBmcm9tLi4uIiBsaW5lIGFzIHBhcnQgb2YgZm9vdGVyJyAnCisJcHJpc3RpbmVfZGV0YWNoIGluaXRpYWwgJiYKKwlnaXQgY2hlcnJ5LXBpY2sgLXMgbWVzZy13aXRoLWNoZXJyeS1mb290ZXIgJiYKKwljYXQgPDwtRU9GID5leHBlY3QgJiYKKwkJJG1lc2dfd2l0aF9jaGVycnlfZm9vdGVyCisJCVNpZ25lZC1vZmYtYnk6ICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPgorCUVPRgorCWdpdCBsb2cgLTEgLS1wcmV0dHk9Zm9ybWF0OiVCID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJyeS1waWNrIC14IC1zIHRyZWF0cyAiKGNoZXJyeSBwaWNrZWQgZnJvbS4uLiIgbGluZSBhcyBwYXJ0IG9mIGZvb3RlcicgJworCXByaXN0aW5lX2RldGFjaCBpbml0aWFsICYmCisJc2hhMT1gZ2l0IHJldi1wYXJzZSBtZXNnLXdpdGgtY2hlcnJ5LWZvb3Rlcl4wYCAmJgorCWdpdCBjaGVycnktcGljayAteCAtcyBtZXNnLXdpdGgtY2hlcnJ5LWZvb3RlciAmJgorCWNhdCA8PC1FT0YgPmV4cGVjdCAmJgorCQkkbWVzZ193aXRoX2NoZXJyeV9mb290ZXIKKwkJKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgJHNoYTEpCisJCVNpZ25lZC1vZmYtYnk6ICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPgorCUVPRgorCWdpdCBsb2cgLTEgLS1wcmV0dHk9Zm9ybWF0OiVCID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzYwMC1ybS5zaCBiL3QvdDM2MDAtcm0uc2gKaW5kZXggOWZkMjhiY2YuLjBjNDRlOWYgMTAwNzU1Ci0tLSBhL3QvdDM2MDAtcm0uc2gKKysrIGIvdC90MzYwMC1ybS5zaApAQCAtMjYyLDQgKzI2Miw0MjkgQEAKIAkhIHRlc3QgLWQgZGlyCiAnCiAKK2NhdCA+ZXhwZWN0IDw8RU9GCitEICBzdWJtb2QKK0VPRgorCitjYXQgPmV4cGVjdC5tb2RpZmllZCA8PEVPRgorIE0gc3VibW9kCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncm0gcmVtb3ZlcyBlbXB0eSBzdWJtb2R1bGVzIGZyb20gd29yayB0cmVlJyAnCisJbWtkaXIgc3VibW9kICYmCisJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCAtLWNhY2hlaW5mbyAxNjAwMDAgJChnaXQgcmV2LXBhcnNlIEhFQUQpIHN1Ym1vZCAmJgorCWdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLnN1Yi51cmwgLi8uICYmCisJZ2l0IGNvbmZpZyAtZiAuZ2l0bW9kdWxlcyBzdWJtb2R1bGUuc3ViLnBhdGggc3VibW9kICYmCisJZ2l0IHN1Ym1vZHVsZSBpbml0ICYmCisJZ2l0IGFkZCAuZ2l0bW9kdWxlcyAmJgorCWdpdCBjb21taXQgLW0gImFkZCBzdWJtb2R1bGUiICYmCisJZ2l0IHJtIHN1Ym1vZCAmJgorCXRlc3QgISAtZSBzdWJtb2QgJiYKKwlnaXQgc3RhdHVzIC1zIC11bm8gLS1pZ25vcmUtc3VibW9kdWxlcz1ub25lID4gYWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSByZW1vdmVzIHJlbW92ZWQgc3VibW9kdWxlIGZyb20gaW5kZXgnICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgJiYKKwlybSAtcmYgc3VibW9kICYmCisJZ2l0IHJtIHN1Ym1vZCAmJgorCWdpdCBzdGF0dXMgLXMgLXVubyAtLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JtIHJlbW92ZXMgd29yayB0cmVlIG9mIHVubW9kaWZpZWQgc3VibW9kdWxlcycgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgc3VibW9kdWxlIHVwZGF0ZSAmJgorCWdpdCBybSBzdWJtb2QgJiYKKwl0ZXN0ICEgLWQgc3VibW9kICYmCisJZ2l0IHN0YXR1cyAtcyAtdW5vIC0taWdub3JlLXN1Ym1vZHVsZXM9bm9uZSA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncm0gcmVtb3ZlcyBhIHN1Ym1vZHVsZSB3aXRoIGEgdHJhaWxpbmcgLycgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgc3VibW9kdWxlIHVwZGF0ZSAmJgorCWdpdCBybSBzdWJtb2QvICYmCisJdGVzdCAhIC1kIHN1Ym1vZCAmJgorCWdpdCBzdGF0dXMgLXMgLXVubyAtLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JtIGZhaWxzIHdoZW4gZ2l2ZW4gYSBmaWxlIHdpdGggYSB0cmFpbGluZyAvJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIGVtcHR5LworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBzdWNjZWVkcyB3aGVuIGdpdmVuIGEgZGlyZWN0b3J5IHdpdGggYSB0cmFpbGluZyAvJyAnCisJZ2l0IHJtIC1yIGZyb3R6LworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBvZiBhIHBvcHVsYXRlZCBzdWJtb2R1bGUgd2l0aCBkaWZmZXJlbnQgSEVBRCBmYWlscyB1bmxlc3MgZm9yY2VkJyAnCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBzdWJtb2R1bGUgdXBkYXRlICYmCisJKGNkIHN1Ym1vZCAmJgorCQlnaXQgY2hlY2tvdXQgSEVBRF4KKwkpICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIHN1Ym1vZCAmJgorCXRlc3QgLWQgc3VibW9kICYmCisJdGVzdCAtZiBzdWJtb2QvLmdpdCAmJgorCWdpdCBzdGF0dXMgLXMgLXVubyAtLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QubW9kaWZpZWQgYWN0dWFsICYmCisJZ2l0IHJtIC1mIHN1Ym1vZCAmJgorCXRlc3QgISAtZCBzdWJtb2QgJiYKKwlnaXQgc3RhdHVzIC1zIC11bm8gLS1pZ25vcmUtc3VibW9kdWxlcz1ub25lID4gYWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBvZiBhIHBvcHVsYXRlZCBzdWJtb2R1bGUgd2l0aCBtb2RpZmljYXRpb25zIGZhaWxzIHVubGVzcyBmb3JjZWQnICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgJiYKKwkoY2Qgc3VibW9kICYmCisJCWVjaG8gWCA+ZW1wdHkKKwkpICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIHN1Ym1vZCAmJgorCXRlc3QgLWQgc3VibW9kICYmCisJdGVzdCAtZiBzdWJtb2QvLmdpdCAmJgorCWdpdCBzdGF0dXMgLXMgLXVubyAtLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QubW9kaWZpZWQgYWN0dWFsICYmCisJZ2l0IHJtIC1mIHN1Ym1vZCAmJgorCXRlc3QgISAtZCBzdWJtb2QgJiYKKwlnaXQgc3RhdHVzIC1zIC11bm8gLS1pZ25vcmUtc3VibW9kdWxlcz1ub25lID4gYWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBvZiBhIHBvcHVsYXRlZCBzdWJtb2R1bGUgd2l0aCB1bnRyYWNrZWQgZmlsZXMgZmFpbHMgdW5sZXNzIGZvcmNlZCcgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgc3VibW9kdWxlIHVwZGF0ZSAmJgorCShjZCBzdWJtb2QgJiYKKwkJZWNobyBYID51bnRyYWNrZWQKKwkpICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIHN1Ym1vZCAmJgorCXRlc3QgLWQgc3VibW9kICYmCisJdGVzdCAtZiBzdWJtb2QvLmdpdCAmJgorCWdpdCBzdGF0dXMgLXMgLXVubyAtLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QubW9kaWZpZWQgYWN0dWFsICYmCisJZ2l0IHJtIC1mIHN1Ym1vZCAmJgorCXRlc3QgISAtZCBzdWJtb2QgJiYKKwlnaXQgc3RhdHVzIC1zIC11bm8gLS1pZ25vcmUtc3VibW9kdWxlcz1ub25lID4gYWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBzdWJtb2R1bGUgY29uZmxpY3QnICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgJiYKKwlnaXQgY2hlY2tvdXQgLWIgYnJhbmNoMSAmJgorCWVjaG8gMSA+bml0Zm9sICYmCisJZ2l0IGFkZCBuaXRmb2wgJiYKKwlnaXQgY29tbWl0IC1tICJhZGRlZCBuaXRmb2wgMSIgJiYKKwlnaXQgY2hlY2tvdXQgLWIgYnJhbmNoMiBtYXN0ZXIgJiYKKwllY2hvIDIgPm5pdGZvbCAmJgorCWdpdCBhZGQgbml0Zm9sICYmCisJZ2l0IGNvbW1pdCAtbSAiYWRkZWQgbml0Zm9sIDIiICYmCisJZ2l0IGNoZWNrb3V0IC1iIGNvbmZsaWN0MSBtYXN0ZXIgJiYKKwkoY2Qgc3VibW9kICYmCisJCWdpdCBmZXRjaCAmJgorCQlnaXQgY2hlY2tvdXQgYnJhbmNoMQorCSkgJiYKKwlnaXQgYWRkIHN1Ym1vZCAmJgorCWdpdCBjb21taXQgLW0gInN1Ym1vZCAxIiAmJgorCWdpdCBjaGVja291dCAtYiBjb25mbGljdDIgbWFzdGVyICYmCisJKGNkIHN1Ym1vZCAmJgorCQlnaXQgY2hlY2tvdXQgYnJhbmNoMgorCSkgJiYKKwlnaXQgYWRkIHN1Ym1vZCAmJgorCWdpdCBjb21taXQgLW0gInN1Ym1vZCAyIgorJworCitjYXQgPmV4cGVjdC5jb25mbGljdCA8PEVPRgorVVUgc3VibW9kCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncm0gcmVtb3ZlcyB3b3JrIHRyZWUgb2YgdW5tb2RpZmllZCBjb25mbGljdGVkIHN1Ym1vZHVsZScgJworCWdpdCBjaGVja291dCBjb25mbGljdDEgJiYKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgY29uZmxpY3QyICYmCisJZ2l0IHJtIHN1Ym1vZCAmJgorCXRlc3QgISAtZCBzdWJtb2QgJiYKKwlnaXQgc3RhdHVzIC1zIC11bm8gLS1pZ25vcmUtc3VibW9kdWxlcz1ub25lID4gYWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBvZiBhIGNvbmZsaWN0ZWQgcG9wdWxhdGVkIHN1Ym1vZHVsZSB3aXRoIGRpZmZlcmVudCBIRUFEIGZhaWxzIHVubGVzcyBmb3JjZWQnICcKKwlnaXQgY2hlY2tvdXQgY29uZmxpY3QxICYmCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBzdWJtb2R1bGUgdXBkYXRlICYmCisJKGNkIHN1Ym1vZCAmJgorCQlnaXQgY2hlY2tvdXQgSEVBRF4KKwkpICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIGNvbmZsaWN0MiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBybSBzdWJtb2QgJiYKKwl0ZXN0IC1kIHN1Ym1vZCAmJgorCXRlc3QgLWYgc3VibW9kLy5naXQgJiYKKwlnaXQgc3RhdHVzIC1zIC11bm8gLS1pZ25vcmUtc3VibW9kdWxlcz1ub25lID4gYWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0LmNvbmZsaWN0IGFjdHVhbCAmJgorCWdpdCBybSAtZiBzdWJtb2QgJiYKKwl0ZXN0ICEgLWQgc3VibW9kICYmCisJZ2l0IHN0YXR1cyAtcyAtdW5vIC0taWdub3JlLXN1Ym1vZHVsZXM9bm9uZSA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncm0gb2YgYSBjb25mbGljdGVkIHBvcHVsYXRlZCBzdWJtb2R1bGUgd2l0aCBtb2RpZmljYXRpb25zIGZhaWxzIHVubGVzcyBmb3JjZWQnICcKKwlnaXQgY2hlY2tvdXQgY29uZmxpY3QxICYmCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBzdWJtb2R1bGUgdXBkYXRlICYmCisJKGNkIHN1Ym1vZCAmJgorCQllY2hvIFggPmVtcHR5CisJKSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSBjb25mbGljdDIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcm0gc3VibW9kICYmCisJdGVzdCAtZCBzdWJtb2QgJiYKKwl0ZXN0IC1mIHN1Ym1vZC8uZ2l0ICYmCisJZ2l0IHN0YXR1cyAtcyAtdW5vIC0taWdub3JlLXN1Ym1vZHVsZXM9bm9uZSA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdC5jb25mbGljdCBhY3R1YWwgJiYKKwlnaXQgcm0gLWYgc3VibW9kICYmCisJdGVzdCAhIC1kIHN1Ym1vZCAmJgorCWdpdCBzdGF0dXMgLXMgLXVubyAtLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JtIG9mIGEgY29uZmxpY3RlZCBwb3B1bGF0ZWQgc3VibW9kdWxlIHdpdGggdW50cmFja2VkIGZpbGVzIGZhaWxzIHVubGVzcyBmb3JjZWQnICcKKwlnaXQgY2hlY2tvdXQgY29uZmxpY3QxICYmCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBzdWJtb2R1bGUgdXBkYXRlICYmCisJKGNkIHN1Ym1vZCAmJgorCQllY2hvIFggPnVudHJhY2tlZAorCSkgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgY29uZmxpY3QyICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIHN1Ym1vZCAmJgorCXRlc3QgLWQgc3VibW9kICYmCisJdGVzdCAtZiBzdWJtb2QvLmdpdCAmJgorCWdpdCBzdGF0dXMgLXMgLXVubyAtLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QuY29uZmxpY3QgYWN0dWFsICYmCisJZ2l0IHJtIC1mIHN1Ym1vZCAmJgorCXRlc3QgISAtZCBzdWJtb2QgJiYKKwlnaXQgc3RhdHVzIC1zIC11bm8gLS1pZ25vcmUtc3VibW9kdWxlcz1ub25lID4gYWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBvZiBhIGNvbmZsaWN0ZWQgcG9wdWxhdGVkIHN1Ym1vZHVsZSB3aXRoIGEgLmdpdCBkaXJlY3RvcnkgZmFpbHMgZXZlbiB3aGVuIGZvcmNlZCcgJworCWdpdCBjaGVja291dCBjb25mbGljdDEgJiYKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgJiYKKwkoY2Qgc3VibW9kICYmCisJCXJtIC5naXQgJiYKKwkJY3AgLVIgLi4vLmdpdC9tb2R1bGVzL3N1YiAuZ2l0ICYmCisJCUdJVF9XT1JLX1RSRUU9LiBnaXQgY29uZmlnIC0tdW5zZXQgY29yZS53b3JrdHJlZQorCSkgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgY29uZmxpY3QyICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIHN1Ym1vZCAmJgorCXRlc3QgLWQgc3VibW9kICYmCisJdGVzdCAtZCBzdWJtb2QvLmdpdCAmJgorCWdpdCBzdGF0dXMgLXMgLXVubyAtLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QuY29uZmxpY3QgYWN0dWFsICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIC1mIHN1Ym1vZCAmJgorCXRlc3QgLWQgc3VibW9kICYmCisJdGVzdCAtZCBzdWJtb2QvLmdpdCAmJgorCWdpdCBzdGF0dXMgLXMgLXVubyAtLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QuY29uZmxpY3QgYWN0dWFsICYmCisJZ2l0IG1lcmdlIC0tYWJvcnQgJiYKKwlybSAtcmYgc3VibW9kCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JtIG9mIGEgY29uZmxpY3RlZCB1bnBvcHVsYXRlZCBzdWJtb2R1bGUgc3VjY2VlZHMnICcKKwlnaXQgY2hlY2tvdXQgY29uZmxpY3QxICYmCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSBjb25mbGljdDIgJiYKKwlnaXQgcm0gc3VibW9kICYmCisJdGVzdCAhIC1kIHN1Ym1vZCAmJgorCWdpdCBzdGF0dXMgLXMgLXVubyAtLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JtIG9mIGEgcG9wdWxhdGVkIHN1Ym1vZHVsZSB3aXRoIGEgLmdpdCBkaXJlY3RvcnkgZmFpbHMgZXZlbiB3aGVuIGZvcmNlZCcgJworCWdpdCBjaGVja291dCAtZiBtYXN0ZXIgJiYKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgJiYKKwkoY2Qgc3VibW9kICYmCisJCXJtIC5naXQgJiYKKwkJY3AgLVIgLi4vLmdpdC9tb2R1bGVzL3N1YiAuZ2l0ICYmCisJCUdJVF9XT1JLX1RSRUU9LiBnaXQgY29uZmlnIC0tdW5zZXQgY29yZS53b3JrdHJlZQorCSkgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcm0gc3VibW9kICYmCisJdGVzdCAtZCBzdWJtb2QgJiYKKwl0ZXN0IC1kIHN1Ym1vZC8uZ2l0ICYmCisJZ2l0IHN0YXR1cyAtcyAtdW5vIC0taWdub3JlLXN1Ym1vZHVsZXM9bm9uZSA+IGFjdHVhbCAmJgorCSEgdGVzdCAtcyBhY3R1YWwgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcm0gLWYgc3VibW9kICYmCisJdGVzdCAtZCBzdWJtb2QgJiYKKwl0ZXN0IC1kIHN1Ym1vZC8uZ2l0ICYmCisJZ2l0IHN0YXR1cyAtcyAtdW5vIC0taWdub3JlLXN1Ym1vZHVsZXM9bm9uZSA+IGFjdHVhbCAmJgorCSEgdGVzdCAtcyBhY3R1YWwgJiYKKwlybSAtcmYgc3VibW9kCisnCisKK2NhdCA+ZXhwZWN0LmRlZXBtb2RpZmllZCA8PEVPRgorIE0gc3VibW9kL3N1YnN1Ym1vZAorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHN1YnN1Ym1vZHVsZScgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgc3VibW9kdWxlIHVwZGF0ZSAmJgorCShjZCBzdWJtb2QgJiYKKwkJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCAtLWNhY2hlaW5mbyAxNjAwMDAgJChnaXQgcmV2LXBhcnNlIEhFQUQpIHN1YnN1Ym1vZCAmJgorCQlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS5zdWIudXJsIC4uLy4gJiYKKwkJZ2l0IGNvbmZpZyAtZiAuZ2l0bW9kdWxlcyBzdWJtb2R1bGUuc3ViLnBhdGggc3Vic3VibW9kICYmCisJCWdpdCBzdWJtb2R1bGUgaW5pdCAmJgorCQlnaXQgYWRkIC5naXRtb2R1bGVzICYmCisJCWdpdCBjb21taXQgLW0gImFkZCBzdWJzdWJtb2R1bGUiICYmCisJCWdpdCBzdWJtb2R1bGUgdXBkYXRlIHN1YnN1Ym1vZAorCSkgJiYKKwlnaXQgY29tbWl0IC1hIC1tICJhZGRlZCBkZWVwIHN1Ym1vZHVsZSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncm0gcmVjdXJzaXZlbHkgcmVtb3ZlcyB3b3JrIHRyZWUgb2YgdW5tb2RpZmllZCBzdWJtb2R1bGVzJyAnCisJZ2l0IHJtIHN1Ym1vZCAmJgorCXRlc3QgISAtZCBzdWJtb2QgJiYKKwlnaXQgc3RhdHVzIC1zIC11bm8gLS1pZ25vcmUtc3VibW9kdWxlcz1ub25lID4gYWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBvZiBhIHBvcHVsYXRlZCBuZXN0ZWQgc3VibW9kdWxlIHdpdGggZGlmZmVyZW50IG5lc3RlZCBIRUFEIGZhaWxzIHVubGVzcyBmb3JjZWQnICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1yZWN1cnNpdmUgJiYKKwkoY2Qgc3VibW9kL3N1YnN1Ym1vZCAmJgorCQlnaXQgY2hlY2tvdXQgSEVBRF4KKwkpICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIHN1Ym1vZCAmJgorCXRlc3QgLWQgc3VibW9kICYmCisJdGVzdCAtZiBzdWJtb2QvLmdpdCAmJgorCWdpdCBzdGF0dXMgLXMgLXVubyAtLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QubW9kaWZpZWQgYWN0dWFsICYmCisJZ2l0IHJtIC1mIHN1Ym1vZCAmJgorCXRlc3QgISAtZCBzdWJtb2QgJiYKKwlnaXQgc3RhdHVzIC1zIC11bm8gLS1pZ25vcmUtc3VibW9kdWxlcz1ub25lID4gYWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBvZiBhIHBvcHVsYXRlZCBuZXN0ZWQgc3VibW9kdWxlIHdpdGggbmVzdGVkIG1vZGlmaWNhdGlvbnMgZmFpbHMgdW5sZXNzIGZvcmNlZCcgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLXJlY3Vyc2l2ZSAmJgorCShjZCBzdWJtb2Qvc3Vic3VibW9kICYmCisJCWVjaG8gWCA+ZW1wdHkKKwkpICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIHN1Ym1vZCAmJgorCXRlc3QgLWQgc3VibW9kICYmCisJdGVzdCAtZiBzdWJtb2QvLmdpdCAmJgorCWdpdCBzdGF0dXMgLXMgLXVubyAtLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QubW9kaWZpZWQgYWN0dWFsICYmCisJZ2l0IHJtIC1mIHN1Ym1vZCAmJgorCXRlc3QgISAtZCBzdWJtb2QgJiYKKwlnaXQgc3RhdHVzIC1zIC11bm8gLS1pZ25vcmUtc3VibW9kdWxlcz1ub25lID4gYWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBvZiBhIHBvcHVsYXRlZCBuZXN0ZWQgc3VibW9kdWxlIHdpdGggbmVzdGVkIHVudHJhY2tlZCBmaWxlcyBmYWlscyB1bmxlc3MgZm9yY2VkJyAnCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBzdWJtb2R1bGUgdXBkYXRlIC0tcmVjdXJzaXZlICYmCisJKGNkIHN1Ym1vZC9zdWJzdWJtb2QgJiYKKwkJZWNobyBYID51bnRyYWNrZWQKKwkpICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIHN1Ym1vZCAmJgorCXRlc3QgLWQgc3VibW9kICYmCisJdGVzdCAtZiBzdWJtb2QvLmdpdCAmJgorCWdpdCBzdGF0dXMgLXMgLXVubyAtLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QubW9kaWZpZWQgYWN0dWFsICYmCisJZ2l0IHJtIC1mIHN1Ym1vZCAmJgorCXRlc3QgISAtZCBzdWJtb2QgJiYKKwlnaXQgc3RhdHVzIC1zIC11bm8gLS1pZ25vcmUtc3VibW9kdWxlcz1ub25lID4gYWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBvZiBhIHBvcHVsYXRlZCBuZXN0ZWQgc3VibW9kdWxlIHdpdGggYSBuZXN0ZWQgLmdpdCBkaXJlY3RvcnkgZmFpbHMgZXZlbiB3aGVuIGZvcmNlZCcgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLXJlY3Vyc2l2ZSAmJgorCShjZCBzdWJtb2Qvc3Vic3VibW9kICYmCisJCXJtIC5naXQgJiYKKwkJY3AgLVIgLi4vLi4vLmdpdC9tb2R1bGVzL3N1Yi9tb2R1bGVzL3N1YiAuZ2l0ICYmCisJCUdJVF9XT1JLX1RSRUU9LiBnaXQgY29uZmlnIC0tdW5zZXQgY29yZS53b3JrdHJlZQorCSkgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcm0gc3VibW9kICYmCisJdGVzdCAtZCBzdWJtb2QgJiYKKwl0ZXN0IC1kIHN1Ym1vZC9zdWJzdWJtb2QvLmdpdCAmJgorCWdpdCBzdGF0dXMgLXMgLXVubyAtLWlnbm9yZS1zdWJtb2R1bGVzPW5vbmUgPiBhY3R1YWwgJiYKKwkhIHRlc3QgLXMgYWN0dWFsICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIC1mIHN1Ym1vZCAmJgorCXRlc3QgLWQgc3VibW9kICYmCisJdGVzdCAtZCBzdWJtb2Qvc3Vic3VibW9kLy5naXQgJiYKKwlnaXQgc3RhdHVzIC1zIC11bm8gLS1pZ25vcmUtc3VibW9kdWxlcz1ub25lID4gYWN0dWFsICYmCisJISB0ZXN0IC1zIGFjdHVhbCAmJgorCXJtIC1yZiBzdWJtb2QKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncm0gb2YgZC9mIHdoZW4gZCBoYXMgYmVjb21lIGEgbm9uLWRpcmVjdG9yeScgJworCXJtIC1yZiBkICYmCisJbWtkaXIgZCAmJgorCT5kL2YgJiYKKwlnaXQgYWRkIGQgJiYKKwlybSAtcmYgZCAmJgorCT5kICYmCisJZ2l0IHJtIGQvZiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgOmQvZiAmJgorCXRlc3RfcGF0aF9pc19maWxlIGQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAncm0gb2YgZC9mIHdoZW4gZCBoYXMgYmVjb21lIGEgZGFuZ2xpbmcgc3ltbGluaycgJworCXJtIC1yZiBkICYmCisJbWtkaXIgZCAmJgorCT5kL2YgJiYKKwlnaXQgYWRkIGQgJiYKKwlybSAtcmYgZCAmJgorCWxuIC1zIG5vbmV4aXN0ZW50IGQgJiYKKwlnaXQgcm0gZC9mICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSA6ZC9mICYmCisJdGVzdCAtaCBkICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgZAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBvZiBmaWxlIHdoZW4gaXQgaGFzIGJlY29tZSBhIGRpcmVjdG9yeScgJworCXJtIC1yZiBkICYmCisJPmQgJiYKKwlnaXQgYWRkIGQgJiYKKwlybSAtZiBkICYmCisJbWtkaXIgZCAmJgorCT5kL2YgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcm0gZCAmJgorCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgOmQgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBkL2YKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAncm0gYWNyb3NzIGEgc3ltbGlua2VkIGxlYWRpbmcgcGF0aCAobm8gaW5kZXgpJyAnCisJcm0gLXJmIGQgZSAmJgorCW1rZGlyIGUgJiYKKwllY2hvIGNvbnRlbnQgPmUvZiAmJgorCWxuIC1zIGUgZCAmJgorCWdpdCBhZGQgLUEgZSBkICYmCisJZ2l0IGNvbW1pdCAtbSAic3ltbGluayBkIHRvIGUsIGUvZiBleGlzdHMiICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIGQvZiAmJgorCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgOmQgJiYKKwlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IDplL2YgJiYKKwl0ZXN0IC1oIGQgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBlL2YKKycKKwordGVzdF9leHBlY3RfZmFpbHVyZSBTWU1MSU5LUyAncm0gYWNyb3NzIGEgc3ltbGlua2VkIGxlYWRpbmcgcGF0aCAody8gaW5kZXgpJyAnCisJcm0gLXJmIGQgZSAmJgorCW1rZGlyIGQgJiYKKwllY2hvIGNvbnRlbnQgPmQvZiAmJgorCWdpdCBhZGQgLUEgZSBkICYmCisJZ2l0IGNvbW1pdCAtbSAiZC9mIGV4aXN0cyIgJiYKKwltdiBkIGUgJiYKKwlsbiAtcyBlIGQgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcm0gZC9mICYmCisJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSA6ZC9mICYmCisJdGVzdCAtaCBkICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgZS9mCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzcwMS1hZGQtaW50ZXJhY3RpdmUuc2ggYi90L3QzNzAxLWFkZC1pbnRlcmFjdGl2ZS5zaAppbmRleCAwOThhNmFlLi45ZmFiMjVjIDEwMDc1NQotLS0gYS90L3QzNzAxLWFkZC1pbnRlcmFjdGl2ZS5zaAorKysgYi90L3QzNzAxLWFkZC1pbnRlcmFjdGl2ZS5zaApAQCAtMzE5LDcgKzMxOSw3IEBACiAJIyB0aW1lcyB0byBnZXQgb3V0LgogCSMKIAkjIDIuIENvcnJlY3QgdmVyc2lvbiBhcHBsaWVzIHRoZSAobm90KWVkaXRlZCB2ZXJzaW9uLCBhbmQgYXNrcwotCSMgICAgYWJvdXQgdGhlIG5leHQgaHVuaywgYWdhaW5zdCB3aWNoIHdlIHNheSBxIGFuZCBwcm9ncmFtCisJIyAgICBhYm91dCB0aGUgbmV4dCBodW5rLCBhZ2FpbnN0IHdoaWNoIHdlIHNheSBxIGFuZCBwcm9ncmFtCiAJIyAgICBleGl0cy4KIAlmb3IgYSBpbiBzIGUgICAgIHEgbiBxIHEKIAlkbwpkaWZmIC0tZ2l0IGEvdC90MzkwMi1xdW90ZWQuc2ggYi90L3QzOTAyLXF1b3RlZC5zaAppbmRleCA1MzRlZTA4Li44OTJmNTY3IDEwMDc1NQotLS0gYS90L3QzOTAyLXF1b3RlZC5zaAorKysgYi90L3QzOTAyLXF1b3RlZC5zaApAQCAtMTYsOSArMTYsOCBAQAogaWYgISB0ZXN0IC1mICJOYW1lIGFuZCBhbiR7SFR9SFQiCiB0aGVuCiAJIyBGQVQvTlRGUyBkb2VzIG5vdCBhbGxvdyB0YWJzIGluIGZpbGVuYW1lcwotCXNheSAnWW91ciBmaWxlc3lzdGVtIGRvZXMgbm90IGFsbG93IHRhYnMgaW4gZmlsZW5hbWVzJwotZWxzZQotCXRlc3Rfc2V0X3ByZXJlcSBUQUJTX0lOX0ZJTEVOQU1FUworCXNraXBfYWxsPSdZb3VyIGZpbGVzeXN0ZW0gZG9lcyBub3QgYWxsb3cgdGFicyBpbiBmaWxlbmFtZXMnCisJdGVzdF9kb25lCiBmaQogCiBmb3JfZWFjaF9uYW1lICgpIHsKQEAgLTMxLDcgKzMwLDcgQEAKIAlkb25lCiB9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgVEFCU19JTl9GSUxFTkFNRVMgJ3NldHVwJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJwogCiAJbWtkaXIgIiRGTiIgJiYKIAlmb3JfZWFjaF9uYW1lICJlY2hvIGluaXRpYWwgPlwiXCRuYW1lXCIiICYmCkBAIC00NSw3ICs0NCw3IEBACiAKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBUQUJTX0lOX0ZJTEVOQU1FUyAnc2V0dXAgZXhwZWN0ZWQgZmlsZXMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGV4cGVjdGVkIGZpbGVzJyAnCiBjYXQgPmV4cGVjdC5xdW90ZWQgPDxcRU9GICYmCiBOYW1lCiAiTmFtZSBhbmQgYVxuTEYiCkBAIC03NSw3NCArNzQsNzQgQEAKIEVPRgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFRBQlNfSU5fRklMRU5BTUVTICdjaGVjayBmdWxseSBxdW90ZWQgb3V0cHV0IGZyb20gbHMtZmlsZXMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIGZ1bGx5IHF1b3RlZCBvdXRwdXQgZnJvbSBscy1maWxlcycgJwogCiAJZ2l0IGxzLWZpbGVzID5jdXJyZW50ICYmIHRlc3RfY21wIGV4cGVjdC5xdW90ZWQgY3VycmVudAogCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgVEFCU19JTl9GSUxFTkFNRVMgJ2NoZWNrIGZ1bGx5IHF1b3RlZCBvdXRwdXQgZnJvbSBkaWZmLWZpbGVzJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBmdWxseSBxdW90ZWQgb3V0cHV0IGZyb20gZGlmZi1maWxlcycgJwogCiAJZ2l0IGRpZmYgLS1uYW1lLW9ubHkgPmN1cnJlbnQgJiYKIAl0ZXN0X2NtcCBleHBlY3QucXVvdGVkIGN1cnJlbnQKIAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFRBQlNfSU5fRklMRU5BTUVTICdjaGVjayBmdWxseSBxdW90ZWQgb3V0cHV0IGZyb20gZGlmZi1pbmRleCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgZnVsbHkgcXVvdGVkIG91dHB1dCBmcm9tIGRpZmYtaW5kZXgnICcKIAogCWdpdCBkaWZmIC0tbmFtZS1vbmx5IEhFQUQgPmN1cnJlbnQgJiYKIAl0ZXN0X2NtcCBleHBlY3QucXVvdGVkIGN1cnJlbnQKIAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFRBQlNfSU5fRklMRU5BTUVTICdjaGVjayBmdWxseSBxdW90ZWQgb3V0cHV0IGZyb20gZGlmZi10cmVlJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBmdWxseSBxdW90ZWQgb3V0cHV0IGZyb20gZGlmZi10cmVlJyAnCiAKIAlnaXQgZGlmZiAtLW5hbWUtb25seSBIRUFEXiBIRUFEID5jdXJyZW50ICYmCiAJdGVzdF9jbXAgZXhwZWN0LnF1b3RlZCBjdXJyZW50CiAKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBUQUJTX0lOX0ZJTEVOQU1FUyAnY2hlY2sgZnVsbHkgcXVvdGVkIG91dHB1dCBmcm9tIGxzLXRyZWUnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIGZ1bGx5IHF1b3RlZCBvdXRwdXQgZnJvbSBscy10cmVlJyAnCiAKIAlnaXQgbHMtdHJlZSAtLW5hbWUtb25seSAtciBIRUFEID5jdXJyZW50ICYmCiAJdGVzdF9jbXAgZXhwZWN0LnF1b3RlZCBjdXJyZW50CiAKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBUQUJTX0lOX0ZJTEVOQU1FUyAnc2V0dGluZyBjb3JlLnF1b3RlcGF0aCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dGluZyBjb3JlLnF1b3RlcGF0aCcgJwogCiAJZ2l0IGNvbmZpZyAtLWJvb2wgY29yZS5xdW90ZXBhdGggZmFsc2UKIAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFRBQlNfSU5fRklMRU5BTUVTICdjaGVjayBmdWxseSBxdW90ZWQgb3V0cHV0IGZyb20gbHMtZmlsZXMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIGZ1bGx5IHF1b3RlZCBvdXRwdXQgZnJvbSBscy1maWxlcycgJwogCiAJZ2l0IGxzLWZpbGVzID5jdXJyZW50ICYmIHRlc3RfY21wIGV4cGVjdC5yYXcgY3VycmVudAogCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgVEFCU19JTl9GSUxFTkFNRVMgJ2NoZWNrIGZ1bGx5IHF1b3RlZCBvdXRwdXQgZnJvbSBkaWZmLWZpbGVzJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBmdWxseSBxdW90ZWQgb3V0cHV0IGZyb20gZGlmZi1maWxlcycgJwogCiAJZ2l0IGRpZmYgLS1uYW1lLW9ubHkgPmN1cnJlbnQgJiYKIAl0ZXN0X2NtcCBleHBlY3QucmF3IGN1cnJlbnQKIAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFRBQlNfSU5fRklMRU5BTUVTICdjaGVjayBmdWxseSBxdW90ZWQgb3V0cHV0IGZyb20gZGlmZi1pbmRleCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgZnVsbHkgcXVvdGVkIG91dHB1dCBmcm9tIGRpZmYtaW5kZXgnICcKIAogCWdpdCBkaWZmIC0tbmFtZS1vbmx5IEhFQUQgPmN1cnJlbnQgJiYKIAl0ZXN0X2NtcCBleHBlY3QucmF3IGN1cnJlbnQKIAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFRBQlNfSU5fRklMRU5BTUVTICdjaGVjayBmdWxseSBxdW90ZWQgb3V0cHV0IGZyb20gZGlmZi10cmVlJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBmdWxseSBxdW90ZWQgb3V0cHV0IGZyb20gZGlmZi10cmVlJyAnCiAKIAlnaXQgZGlmZiAtLW5hbWUtb25seSBIRUFEXiBIRUFEID5jdXJyZW50ICYmCiAJdGVzdF9jbXAgZXhwZWN0LnJhdyBjdXJyZW50CiAKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBUQUJTX0lOX0ZJTEVOQU1FUyAnY2hlY2sgZnVsbHkgcXVvdGVkIG91dHB1dCBmcm9tIGxzLXRyZWUnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIGZ1bGx5IHF1b3RlZCBvdXRwdXQgZnJvbSBscy10cmVlJyAnCiAKIAlnaXQgbHMtdHJlZSAtLW5hbWUtb25seSAtciBIRUFEID5jdXJyZW50ICYmCiAJdGVzdF9jbXAgZXhwZWN0LnJhdyBjdXJyZW50CmRpZmYgLS1naXQgYS90L3QzOTAzLXN0YXNoLnNoIGIvdC90MzkwMy1zdGFzaC5zaAppbmRleCBjZDA0MjYzLi41ZGZiZGE3IDEwMDc1NQotLS0gYS90L3QzOTAzLXN0YXNoLnNoCisrKyBiL3QvdDM5MDMtc3Rhc2guc2gKQEAgLTYxMCw3ICs2MTAsNyBAQAogCQlnaXQgc3Rhc2ggYXBwbHkKIAkpIHwKIAlzZWQgLWUgMSwyZCA+YWN0dWFsICYmICMgZHJvcCAiU2F2ZWQuLi4iIGFuZCAiSEVBRCBpcyBub3cuLi4iCi0JdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCiAnCiAKIGNhdCA+IGV4cGVjdCA8PCBFT0YKZGlmZiAtLWdpdCBhL3QvdDM5MTAtbWFjLW9zLXByZWNvbXBvc2Uuc2ggYi90L3QzOTEwLW1hYy1vcy1wcmVjb21wb3NlLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjVmZTU3YzUKLS0tIC9kZXYvbnVsbAorKysgYi90L3QzOTEwLW1hYy1vcy1wcmVjb21wb3NlLnNoCkBAIC0wLDAgKzEsMTUzIEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDEyIFRvcnN0ZW4gQsO2Z2Vyc2hhdXNlbgorIworCit0ZXN0X2Rlc2NyaXB0aW9uPSd1dGYtOCBkZWNvbXBvc2VkIChuZmQpIGNvbnZlcnRlZCB0byBwcmVjb21wb3NlZCAobmZjKScKKworLiAuL3Rlc3QtbGliLnNoCisKK2lmICEgdGVzdF9oYXZlX3ByZXJlcSBVVEY4X05GRF9UT19ORkMKK3RoZW4KKwlza2lwX2FsbD0iZmlsZXN5c3RlbSBkb2VzIG5vdCBjb3JydXB0IHV0Zi04IgorCXRlc3RfZG9uZQorZmkKKworIyBjcmVhdGUgdXRmLTggdmFyaWFibGVzCitBZGlhcm5mYz1gcHJpbnRmICdcMzAzXDIwNCdgCitBZGlhcm5mZD1gcHJpbnRmICdBXDMxNFwyMTAnYAorCitPZGlhcm5mYz1gcHJpbnRmICdcMzAzXDIyNidgCitPZGlhcm5mZD1gcHJpbnRmICdPXDMxNFwyMTAnYAorQUVsaWdhdHU9YHByaW50ZiAnXDMwM1wyMDYnYAorSW52YWxpZHU9YHByaW50ZiAnXDMwM1wzNzcnYAorCisKKyNDcmVhdGUgYSBzdHJpbmcgd2l0aCAyNTUgYnl0ZXMgKGRlY29tcG9zZWQpCitBbG9uZ2Q9JEFkaWFybmZkJEFkaWFybmZkJEFkaWFybmZkJEFkaWFybmZkJEFkaWFybmZkJEFkaWFybmZkJEFkaWFybmZkICMyMSBCeXRlCitBbG9uZ2Q9JEFsb25nZCRBbG9uZ2QkQWxvbmdkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM2MyBCeXRlCitBbG9uZ2Q9JEFsb25nZCRBbG9uZ2QkQWxvbmdkJEFsb25nZCRBZGlhcm5mZCAgICAgICAgICAgICAgICAgICAgICAgICAgICMyNTUgQnl0ZQorCisjQ3JlYXRlIGEgc3RyaW5nIHdpdGggMjU0IGJ5dGVzIChwcmVjb21wb3NlZCkKK0Fsb25nYz0kQUVsaWdhdHUkQUVsaWdhdHUkQUVsaWdhdHUkQUVsaWdhdHUkQUVsaWdhdHUgIzEwIEJ5dGUKK0Fsb25nYz0kQWxvbmdjJEFsb25nYyRBbG9uZ2MkQWxvbmdjJEFsb25nYyAgICAgICAgICAgIzUwIEJ5dGUKK0Fsb25nYz0kQWxvbmdjJEFsb25nYyRBbG9uZ2MkQWxvbmdjJEFsb25nYyAgICAgICAgICAgIzI1MCBCeXRlCitBbG9uZ2M9JEFsb25nYyRBRWxpZ2F0dSRBRWxpZ2F0dSAgICAgICAgICAgICAgICAgICAgICMyNTQgQnl0ZQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJkZXRlY3QgaWYgbmZkIG5lZWRlZCIgJworCXByZWNvbXBvc2V1bmljb2RlPWBnaXQgY29uZmlnIGNvcmUucHJlY29tcG9zZXVuaWNvZGVgICYmCisJdGVzdCAiJHByZWNvbXBvc2V1bmljb2RlIiA9IGZhbHNlICYmCisJZ2l0IGNvbmZpZyBjb3JlLnByZWNvbXBvc2V1bmljb2RlIHRydWUKKycKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgInNldHVwIiAnCisJPnggJiYKKwlnaXQgYWRkIHggJiYKKwlnaXQgY29tbWl0IC1tICIxc3QgY29tbWl0IiAmJgorCWdpdCBybSB4ICYmCisJZ2l0IGNvbW1pdCAtbSAicm0geCIKKycKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgInNldHVwIGNhc2UgbWFjIiAnCisJZ2l0IGNoZWNrb3V0IC1iIG1hY19vcworJworIyBUaGlzIHdpbGwgdGVzdCBuZmQybmZjIGluIHJlYWRkaXIoKQordGVzdF9leHBlY3Rfc3VjY2VzcyAiYWRkIGZpbGUgQWRpYXJuZmMiICcKKwllY2hvIGYuQWRpYXJuZmMgPmYuJEFkaWFybmZjICYmCisJZ2l0IGFkZCBmLiRBZGlhcm5mYyAmJgorCWdpdCBjb21taXQgLW0gImFkZCBmLiRBZGlhcm5mYyIKKycKKyMgVGhpcyB3aWxsIHRlc3QgbmZkMm5mYyBpbiBnaXQgc3RhZ2UoKQordGVzdF9leHBlY3Rfc3VjY2VzcyAic3RhZ2UgZmlsZSBkLkFkaWFybmZkL2YuQWRpYXJuZmQiICcKKwlta2RpciBkLiRBZGlhcm5mZCAmJgorCWVjaG8gZC4kQWRpYXJuZmQvZi4kQWRpYXJuZmQgPmQuJEFkaWFybmZkL2YuJEFkaWFybmZkICYmCisJZ2l0IHN0YWdlIGQuJEFkaWFybmZkL2YuJEFkaWFybmZkICYmCisJZ2l0IGNvbW1pdCAtbSAiYWRkIGQuJEFkaWFybmZkL2YuJEFkaWFybmZkIgorJwordGVzdF9leHBlY3Rfc3VjY2VzcyAiYWRkIGxpbmsgQWRpYXJuZmMiICcKKwlsbiAtcyBkLiRBZGlhcm5mZC9mLiRBZGlhcm5mZCBsLiRBZGlhcm5mYyAmJgorCWdpdCBhZGQgbC4kQWRpYXJuZmMgJiYKKwlnaXQgY29tbWl0IC1tICJhZGQgbC5BZGlhcm5mYyIKKycKKyMgVGhpcyB3aWxsIHRlc3QgZ2l0IGxvZwordGVzdF9leHBlY3Rfc3VjY2VzcyAiZ2l0IGxvZyBmLkFkaWFyIiAnCisJZ2l0IGxvZyBmLiRBZGlhcm5mYyA+IGYuQWRpYXJuZmMubG9nICYmCisJZ2l0IGxvZyBmLiRBZGlhcm5mZCA+IGYuQWRpYXJuZmQubG9nICYmCisJdGVzdCAtcyBmLkFkaWFybmZjLmxvZyAmJgorCXRlc3QgLXMgZi5BZGlhcm5mZC5sb2cgJiYKKwl0ZXN0X2NtcCBmLkFkaWFybmZjLmxvZyBmLkFkaWFybmZkLmxvZyAmJgorCXJtIGYuQWRpYXJuZmMubG9nIGYuQWRpYXJuZmQubG9nCisnCisjIFRoaXMgd2lsbCB0ZXN0IGdpdCBscy1maWxlcwordGVzdF9leHBlY3Rfc3VjY2VzcyAiZ2l0IGxzZmlsZXMgZi5BZGlhciIgJworCWdpdCBscy1maWxlcyBmLiRBZGlhcm5mYyA+IGYuQWRpYXJuZmMubG9nICYmCisJZ2l0IGxzLWZpbGVzIGYuJEFkaWFybmZkID4gZi5BZGlhcm5mZC5sb2cgJiYKKwl0ZXN0IC1zIGYuQWRpYXJuZmMubG9nICYmCisJdGVzdCAtcyBmLkFkaWFybmZkLmxvZyAmJgorCXRlc3RfY21wIGYuQWRpYXJuZmMubG9nIGYuQWRpYXJuZmQubG9nICYmCisJcm0gZi5BZGlhcm5mYy5sb2cgZi5BZGlhcm5mZC5sb2cKKycKKyMgVGhpcyB3aWxsIHRlc3QgZ2l0IG12Cit0ZXN0X2V4cGVjdF9zdWNjZXNzICJnaXQgbXYiICcKKwlnaXQgbXYgZi4kQWRpYXJuZmQgZi4kT2RpYXJuZmMgJiYKKwlnaXQgbXYgZC4kQWRpYXJuZmQgZC4kT2RpYXJuZmMgJiYKKwlnaXQgbXYgbC4kQWRpYXJuZmQgbC4kT2RpYXJuZmMgJiYKKwlnaXQgY29tbWl0IC1tICJtdiBBZGlhcm5mZCBPZGlhcm5mYyIKKycKKyMgRmlsZXMgY2FuIGJlIGNoZWNrZWQgb3V0IGFzIG5mYworIyBBbmQgdGhlIGxpbmsgaGFzIGJlZW4gY29ycmVjdGVkIGZyb20gbmZkIHRvIG5mYwordGVzdF9leHBlY3Rfc3VjY2VzcyAiZ2l0IGNoZWNrb3V0IG5mYyIgJworCXJtIGYuJE9kaWFybmZjICYmCisJZ2l0IGNoZWNrb3V0IGYuJE9kaWFybmZjCisnCisjIE1ha2UgaXQgcG9zc2libGUgdG8gY2hlY2tvdXQgZmlsZXMgd2l0aCB0aGVpciBORkQgbmFtZXMKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgImdpdCBjaGVja291dCBmaWxlIG5mZCIgJworCXJtIC1mIGYuKiAmJgorCWdpdCBjaGVja291dCBmLiRPZGlhcm5mZAorJworIyBNYWtlIGl0IHBvc3NpYmxlIHRvIGNoZWNrb3V0IGxpbmtzIHdpdGggdGhlaXIgTkZEIG5hbWVzCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJnaXQgY2hlY2tvdXQgbGluayBuZmQiICcKKwlybSBsLiogJiYKKwlnaXQgY2hlY2tvdXQgbC4kT2RpYXJuZmQKKycKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgInNldHVwIGNhc2UgbWFjMiIgJworCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGNoZWNrb3V0IC1iIG1hY19vc18yCisnCisjIFRoaXMgd2lsbCB0ZXN0IG5mZDJuZmMgaW4gZ2l0IGNvbW1pdAordGVzdF9leHBlY3Rfc3VjY2VzcyAiY29tbWl0IGZpbGUgZDIuQWRpYXJuZmQvZi5BZGlhcm5mZCIgJworCW1rZGlyIGQyLiRBZGlhcm5mZCAmJgorCWVjaG8gZDIuJEFkaWFybmZkL2YuJEFkaWFybmZkID5kMi4kQWRpYXJuZmQvZi4kQWRpYXJuZmQgJiYKKwlnaXQgYWRkIGQyLiRBZGlhcm5mZC9mLiRBZGlhcm5mZCAmJgorCWdpdCBjb21taXQgLW0gImFkZCBkMi4kQWRpYXJuZmQvZi4kQWRpYXJuZmQiIC0tIGQyLiRBZGlhcm5mZC9mLiRBZGlhcm5mZAorJwordGVzdF9leHBlY3Rfc3VjY2VzcyAic2V0dXAgZm9yIGxvbmcgZGVjb21wb3NlZCBmaWxlbmFtZSIgJworCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGNoZWNrb3V0IC1iIG1hY19vc19sb25nX25mZF9mbgorJwordGVzdF9leHBlY3Rfc3VjY2VzcyAiQWRkIGxvbmcgZGVjb21wb3NlZCBmaWxlbmFtZSIgJworCWVjaG8gbG9uZ2QgPiRBbG9uZ2QgJiYKKwlnaXQgYWRkICogJiYKKwlnaXQgY29tbWl0IC1tICJMb25nIGZpbGVuYW1lIgorJwordGVzdF9leHBlY3Rfc3VjY2VzcyAic2V0dXAgZm9yIGxvbmcgcHJlY29tcG9zZWQgZmlsZW5hbWUiICcKKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBjaGVja291dCAtYiBtYWNfb3NfbG9uZ19uZmNfZm4KKycKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgIkFkZCBsb25nIHByZWNvbXBvc2VkIGZpbGVuYW1lIiAnCisJZWNobyBsb25nYyA+JEFsb25nYyAmJgorCWdpdCBhZGQgKiAmJgorCWdpdCBjb21taXQgLW0gIkxvbmcgZmlsZW5hbWUiCisnCisjIFRlc3QgaWYgdGhlIGdsb2JhbCBjb3JlLnByZWNvbXBvc2V1bmljb2RlIHN0b3BzIGF1dG9zZW5zaW5nCisjIE11c3QgYmUgdGhlIGxhc3QgdGVzdCBjYXNlCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZXNwZWN0IGdpdCBjb25maWcgLS1nbG9iYWwgY29yZS5wcmVjb21wb3NldW5pY29kZSIgJworCWdpdCBjb25maWcgLS1nbG9iYWwgY29yZS5wcmVjb21wb3NldW5pY29kZSB0cnVlICYmCisJcm0gLXJmIC5naXQgJiYKKwlnaXQgaW5pdCAmJgorCXByZWNvbXBvc2V1bmljb2RlPWBnaXQgY29uZmlnIGNvcmUucHJlY29tcG9zZXVuaWNvZGVgICYmCisJdGVzdCAiJHByZWNvbXBvc2V1bmljb2RlIiA9ICJ0cnVlIgorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDQwMDEtZGlmZi1yZW5hbWUuc2ggYi90L3Q0MDAxLWRpZmYtcmVuYW1lLnNoCmluZGV4IDg0NDI3N2MuLjJmMzI3YjcgMTAwNzU1Ci0tLSBhL3QvdDQwMDEtZGlmZi1yZW5hbWUuc2gKKysrIGIvdC90NDAwMS1kaWZmLXJlbmFtZS5zaApAQCAtMTAyLDQgKzEwMiw1OCBAQAogCWdyZXAgd2FybmluZyBhY3R1YWwuZXJyCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbmFtZSBwcmV0dHkgcHJpbnQgd2l0aCBub3RoaW5nIGluIGNvbW1vbicgJworCW1rZGlyIC1wIGEvYi8gJiYKKwk6ID5hL2IvYyAmJgorCWdpdCBhZGQgYS9iL2MgJiYKKwlnaXQgY29tbWl0IC1tICJjcmVhdGUgYS9iL2MiICYmCisJbWtkaXIgLXAgYy9iLyAmJgorCWdpdCBtdiBhL2IvYyBjL2IvYSAmJgorCWdpdCBjb21taXQgLW0gImEvYi9jIC0+IGMvYi9hIiAmJgorCWdpdCBkaWZmIC1NIC0tc3VtbWFyeSBIRUFEXiBIRUFEID5vdXRwdXQgJiYKKwl0ZXN0X2kxOG5ncmVwICIgYS9iL2MgPT4gYy9iL2EgIiBvdXRwdXQgJiYKKwlnaXQgZGlmZiAtTSAtLXN0YXQgSEVBRF4gSEVBRCA+b3V0cHV0ICYmCisJdGVzdF9pMThuZ3JlcCAiIGEvYi9jID0+IGMvYi9hICIgb3V0cHV0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbmFtZSBwcmV0dHkgcHJpbnQgd2l0aCBjb21tb24gcHJlZml4JyAnCisJbWtkaXIgLXAgYy9kICYmCisJZ2l0IG12IGMvYi9hIGMvZC9lICYmCisJZ2l0IGNvbW1pdCAtbSAiYy9iL2EgLT4gYy9kL2UiICYmCisJZ2l0IGRpZmYgLU0gLS1zdW1tYXJ5IEhFQUReIEhFQUQgPm91dHB1dCAmJgorCXRlc3RfaTE4bmdyZXAgIiBjL3tiL2EgPT4gZC9lfSAiIG91dHB1dCAmJgorCWdpdCBkaWZmIC1NIC0tc3RhdCBIRUFEXiBIRUFEID5vdXRwdXQgJiYKKwl0ZXN0X2kxOG5ncmVwICIgYy97Yi9hID0+IGQvZX0gIiBvdXRwdXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVuYW1lIHByZXR0eSBwcmludCB3aXRoIGNvbW1vbiBzdWZmaXgnICcKKwlta2RpciBkICYmCisJZ2l0IG12IGMvZC9lIGQvZSAmJgorCWdpdCBjb21taXQgLW0gImMvZC9lIC0+IGQvZSIgJiYKKwlnaXQgZGlmZiAtTSAtLXN1bW1hcnkgSEVBRF4gSEVBRCA+b3V0cHV0ICYmCisJdGVzdF9pMThuZ3JlcCAiIHtjL2QgPT4gZH0vZSAiIG91dHB1dCAmJgorCWdpdCBkaWZmIC1NIC0tc3RhdCBIRUFEXiBIRUFEID5vdXRwdXQgJiYKKwl0ZXN0X2kxOG5ncmVwICIge2MvZCA9PiBkfS9lICIgb3V0cHV0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbmFtZSBwcmV0dHkgcHJpbnQgd2l0aCBjb21tb24gcHJlZml4IGFuZCBzdWZmaXgnICcKKwlta2RpciBkL2YgJiYKKwlnaXQgbXYgZC9lIGQvZi9lICYmCisJZ2l0IGNvbW1pdCAtbSAiZC9lIC0+IGQvZi9lIiAmJgorCWdpdCBkaWZmIC1NIC0tc3VtbWFyeSBIRUFEXiBIRUFEID5vdXRwdXQgJiYKKwl0ZXN0X2kxOG5ncmVwICIgZC97ID0+IGZ9L2UgIiBvdXRwdXQgJiYKKwlnaXQgZGlmZiAtTSAtLXN0YXQgSEVBRF4gSEVBRCA+b3V0cHV0ICYmCisJdGVzdF9pMThuZ3JlcCAiIGQveyA9PiBmfS9lICIgb3V0cHV0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbmFtZSBwcmV0dHkgcHJpbnQgY29tbW9uIHByZWZpeCBhbmQgc3VmZml4IG92ZXJsYXAnICcKKwlta2RpciBkL2YvZiAmJgorCWdpdCBtdiBkL2YvZSBkL2YvZi9lICYmCisJZ2l0IGNvbW1pdCAtbSAiZC9mL2UgZC9mL2YvZSIgJiYKKwlnaXQgZGlmZiAtTSAtLXN1bW1hcnkgSEVBRF4gSEVBRCA+b3V0cHV0ICYmCisJdGVzdF9pMThuZ3JlcCAiIGQvZi97ID0+IGZ9L2UgIiBvdXRwdXQgJiYKKwlnaXQgZGlmZiAtTSAtLXN0YXQgSEVBRF4gSEVBRCA+b3V0cHV0ICYmCisJdGVzdF9pMThuZ3JlcCAiIGQvZi97ID0+IGZ9L2UgIiBvdXRwdXQKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q0MDA2LWRpZmYtbW9kZS5zaCBiL3QvdDQwMDYtZGlmZi1tb2RlLnNoCmluZGV4IDdhM2UxZjkuLjA1OTExNDkgMTAwNzU1Ci0tLSBhL3QvdDQwMDYtZGlmZi1tb2RlLnNoCisrKyBiL3QvdDQwMDYtZGlmZi1tb2RlLnNoCkBAIC0zMiwyOCArMzIsMjggQEAKIAlnaXQgY29tbWl0IC1tIGJpbmJpbgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICctLXN0YXQgb3V0cHV0IGFmdGVyIHRleHQgY2htb2QnICcKLQl0ZXN0X2NobW9kIC14IHJlenJvdiAmJgotCWVjaG8gIiAwIGZpbGVzIGNoYW5nZWQiID5leHBlY3QgJiYKLQlnaXQgZGlmZiBIRUFEIC0tc3RhdCA+YWN0dWFsICYmCi0JdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICctLXNob3J0c3RhdCBvdXRwdXQgYWZ0ZXIgdGV4dCBjaG1vZCcgJwotCWdpdCBkaWZmIEhFQUQgLS1zaG9ydHN0YXQgPmFjdHVhbCAmJgotCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zdGF0IG91dHB1dCBhZnRlciBiaW5hcnkgY2htb2QnICcKLQl0ZXN0X2NobW9kICt4IGJpbmJpbiAmJgotCWVjaG8gIiAwIGZpbGVzIGNoYW5nZWQiID5leHBlY3QgJiYKLQlnaXQgZGlmZiBIRUFEIC0tc3RhdCA+YWN0dWFsICYmCi0JdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICctLXNob3J0c3RhdCBvdXRwdXQgYWZ0ZXIgYmluYXJ5IGNobW9kJyAnCi0JZ2l0IGRpZmYgSEVBRCAtLXNob3J0c3RhdCA+YWN0dWFsICYmCi0JdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAotJworIyB0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXN0YXQgb3V0cHV0IGFmdGVyIHRleHQgY2htb2QnICcKKyMgCXRlc3RfY2htb2QgLXggcmV6cm92ICYmCisjIAllY2hvICIgMCBmaWxlcyBjaGFuZ2VkIiA+ZXhwZWN0ICYmCisjIAlnaXQgZGlmZiBIRUFEIC0tc3RhdCA+YWN0dWFsICYmCisjCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCisjICcKKyMKKyMgdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zaG9ydHN0YXQgb3V0cHV0IGFmdGVyIHRleHQgY2htb2QnICcKKyMgCWdpdCBkaWZmIEhFQUQgLS1zaG9ydHN0YXQgPmFjdHVhbCAmJgorIyAJdGVzdF9pMThuY21wIGV4cGVjdCBhY3R1YWwKKyMgJworIworIyB0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXN0YXQgb3V0cHV0IGFmdGVyIGJpbmFyeSBjaG1vZCcgJworIyAJdGVzdF9jaG1vZCAreCBiaW5iaW4gJiYKKyMgCWVjaG8gIiAwIGZpbGVzIGNoYW5nZWQiID5leHBlY3QgJiYKKyMgCWdpdCBkaWZmIEhFQUQgLS1zdGF0ID5hY3R1YWwgJiYKKyMgCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCisjICcKKyMKKyMgdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zaG9ydHN0YXQgb3V0cHV0IGFmdGVyIGJpbmFyeSBjaG1vZCcgJworIyAJZ2l0IGRpZmYgSEVBRCAtLXNob3J0c3RhdCA+YWN0dWFsICYmCisjIAl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbAorIyAnCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDAxMi1kaWZmLWJpbmFyeS5zaCBiL3QvdDQwMTItZGlmZi1iaW5hcnkuc2gKaW5kZXggNmNlYmIzOS4uMTIxNWFlNSAxMDA3NTUKLS0tIGEvdC90NDAxMi1kaWZmLWJpbmFyeS5zaAorKysgYi90L3Q0MDEyLWRpZmYtYmluYXJ5LnNoCkBAIC0xNSwxMyArMTUsMTQgQEAKIC0JLQlkCiBFT0YKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJlcGFyZSByZXBvc2l0b3J5JyBcCi0JJ2VjaG8gQUlUID5hICYmIGVjaG8gQklUID5iICYmIGVjaG8gQ0lUID5jICYmIGVjaG8gRElUID5kICYmCi0JIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQgYSBiIGMgZCAmJgotCSBlY2hvIGdpdCA+YSAmJgotCSBjYXQgIiRURVNUX0RJUkVDVE9SWSIvdGVzdC1iaW5hcnktMS5wbmcgPmIgJiYKLQkgZWNobyBnaXQgPmMgJiYKLQkgY2F0IGIgYiA+ZCcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ByZXBhcmUgcmVwb3NpdG9yeScgJworCWVjaG8gQUlUID5hICYmIGVjaG8gQklUID5iICYmIGVjaG8gQ0lUID5jICYmIGVjaG8gRElUID5kICYmCisJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBhIGIgYyBkICYmCisJZWNobyBnaXQgPmEgJiYKKwljYXQgIiRURVNUX0RJUkVDVE9SWSIvdGVzdC1iaW5hcnktMS5wbmcgPmIgJiYKKwllY2hvIGdpdCA+YyAmJgorCWNhdCBiIGIgPmQKKycKIAogY2F0ID4gZXhwZWN0ZWQgPDxcRU9GCiAgYSB8ICAgIDIgKy0KQEAgLTMwLDE2ICszMSwxNiBAQAogIGQgfCAgQmluCiAgNCBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBFT0YKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJhcHBseSAtLXN0YXQiIG91dHB1dCBmb3IgYmluYXJ5IGZpbGUgY2hhbmdlJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhcHBseSAtLXN0YXQgb3V0cHV0IGZvciBiaW5hcnkgZmlsZSBjaGFuZ2UnICcKIAlnaXQgZGlmZiA+ZGlmZiAmJgogCWdpdCBhcHBseSAtLXN0YXQgLS1zdW1tYXJ5IDxkaWZmID5jdXJyZW50ICYmCiAJdGVzdF9pMThuY21wIGV4cGVjdGVkIGN1cnJlbnQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZiAtLXNob3J0c3RhdCBvdXRwdXQgZm9yIGJpbmFyeSBmaWxlIGNoYW5nZScgJwotCWVjaG8gIiA0IGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkiID5leHBlY3RlZCAmJgorCXRhaWwgLW4gMSBleHBlY3RlZCA+ZXhwZWN0ICYmCiAJZ2l0IGRpZmYgLS1zaG9ydHN0YXQgPmN1cnJlbnQgJiYKLQl0ZXN0X2kxOG5jbXAgZXhwZWN0ZWQgY3VycmVudAorCXRlc3RfaTE4bmNtcCBleHBlY3QgY3VycmVudAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkaWZmIC0tc2hvcnRzdGF0IG91dHB1dCBmb3IgYmluYXJ5IGZpbGUgY2hhbmdlIG9ubHknICcKQEAgLTYyLDQ5ICs2Myw0MiBAQAogCiAjIGFwcGx5IG5lZWRzIHRvIGJlIGFibGUgdG8gc2tpcCB0aGUgYmluYXJ5IG1hdGVyaWFsIGNvcnJlY3RseQogIyBpbiBvcmRlciB0byByZXBvcnQgdGhlIGxpbmUgbnVtYmVyIG9mIGEgY29ycnVwdCBwYXRjaC4KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FwcGx5IGRldGVjdGluZyBjb3JydXB0IHBhdGNoIGNvcnJlY3RseScgXAotCSdnaXQgZGlmZiB8IHNlZCAtZSAncy8tQ0lUL3hDSVQvJyA+YnJva2VuICYmCi0JIGlmIGdpdCBhcHBseSAtLXN0YXQgLS1zdW1tYXJ5IGJyb2tlbiAyPmRldGVjdGVkCi0JIHRoZW4KLQkJZWNobyB1bmhhcHB5IC0gc2hvdWxkIGhhdmUgZGV0ZWN0ZWQgYW4gZXJyb3IKLQkJKGV4aXQgMSkKLQkgZWxzZQotCQllY2hvIGhhcHB5Ci0JIGZpICYmCi0JIGRldGVjdGVkPWBjYXQgZGV0ZWN0ZWRgICYmCi0JIGRldGVjdGVkPWBleHByICIkZGV0ZWN0ZWQiIDogImZhdGFsLiphdCBsaW5lIFxcKFswLTldKlxcKVwkImAgJiYKLQkgZGV0ZWN0ZWQ9YHNlZCAtbmUgIiR7ZGV0ZWN0ZWR9cCIgYnJva2VuYCAmJgotCSB0ZXN0ICIkZGV0ZWN0ZWQiID0geENJVCcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgQ19MT0NBTEVfT1VUUFVUICdhcHBseSBkZXRlY3RpbmcgY29ycnVwdCBwYXRjaCBjb3JyZWN0bHknICcKKwlnaXQgZGlmZiA+b3V0cHV0ICYmCisJc2VkIC1lICJzLy1DSVQveENJVC8iIDxvdXRwdXQgPmJyb2tlbiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBhcHBseSAtLXN0YXQgLS1zdW1tYXJ5IGJyb2tlbiAyPmRldGVjdGVkICYmCisJZGV0ZWN0ZWQ9YGNhdCBkZXRlY3RlZGAgJiYKKwlkZXRlY3RlZD1gZXhwciAiJGRldGVjdGVkIiA6ICJmYXRhbC4qYXQgbGluZSBcXChbMC05XSpcXClcJCJgICYmCisJZGV0ZWN0ZWQ9YHNlZCAtbmUgIiR7ZGV0ZWN0ZWR9cCIgYnJva2VuYCAmJgorCXRlc3QgIiRkZXRlY3RlZCIgPSB4Q0lUCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FwcGx5IGRldGVjdGluZyBjb3JydXB0IHBhdGNoIGNvcnJlY3RseScgXAotCSdnaXQgZGlmZiAtLWJpbmFyeSB8IHNlZCAtZSAncy8tQ0lUL3hDSVQvJyA+YnJva2VuICYmCi0JIGlmIGdpdCBhcHBseSAtLXN0YXQgLS1zdW1tYXJ5IGJyb2tlbiAyPmRldGVjdGVkCi0JIHRoZW4KLQkJZWNobyB1bmhhcHB5IC0gc2hvdWxkIGhhdmUgZGV0ZWN0ZWQgYW4gZXJyb3IKLQkJKGV4aXQgMSkKLQkgZWxzZQotCQllY2hvIGhhcHB5Ci0JIGZpICYmCi0JIGRldGVjdGVkPWBjYXQgZGV0ZWN0ZWRgICYmCi0JIGRldGVjdGVkPWBleHByICIkZGV0ZWN0ZWQiIDogImZhdGFsLiphdCBsaW5lIFxcKFswLTldKlxcKVwkImAgJiYKLQkgZGV0ZWN0ZWQ9YHNlZCAtbmUgIiR7ZGV0ZWN0ZWR9cCIgYnJva2VuYCAmJgotCSB0ZXN0ICIkZGV0ZWN0ZWQiID0geENJVCcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgQ19MT0NBTEVfT1VUUFVUICdhcHBseSBkZXRlY3RpbmcgY29ycnVwdCBwYXRjaCBjb3JyZWN0bHknICcKKwlnaXQgZGlmZiAtLWJpbmFyeSB8IHNlZCAtZSAicy8tQ0lUL3hDSVQvIiA+YnJva2VuICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFwcGx5IC0tc3RhdCAtLXN1bW1hcnkgYnJva2VuIDI+ZGV0ZWN0ZWQgJiYKKwlkZXRlY3RlZD1gY2F0IGRldGVjdGVkYCAmJgorCWRldGVjdGVkPWBleHByICIkZGV0ZWN0ZWQiIDogImZhdGFsLiphdCBsaW5lIFxcKFswLTldKlxcKVwkImAgJiYKKwlkZXRlY3RlZD1gc2VkIC1uZSAiJHtkZXRlY3RlZH1wIiBicm9rZW5gICYmCisJdGVzdCAiJGRldGVjdGVkIiA9IHhDSVQKKycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdGlhbCBjb21taXQnICdnaXQgY29tbWl0IC1hIC1tIGluaXRpYWwnCiAKICMgVHJ5IHJlbW92YWwgKGIpLCBtb2RpZmljYXRpb24gKGQpLCBhbmQgY3JlYXRpb24gKGUpLgotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZi1pbmRleCB3aXRoIC0tYmluYXJ5JyBcCi0JJ2VjaG8gQUlUID5hICYmIG12IGIgZSAmJiBlY2hvIENJVCA+YyAmJiBjYXQgZSA+ZCAmJgotCSBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIC0tcmVtb3ZlIGEgYiBjIGQgZSAmJgotCSB0cmVlMD1gZ2l0IHdyaXRlLXRyZWVgICYmCi0JIGdpdCBkaWZmIC0tY2FjaGVkIC0tYmluYXJ5ID5jdXJyZW50ICYmCi0JIGdpdCBhcHBseSAtLXN0YXQgLS1zdW1tYXJ5IGN1cnJlbnQnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkaWZmLWluZGV4IHdpdGggLS1iaW5hcnknICcKKwllY2hvIEFJVCA+YSAmJiBtdiBiIGUgJiYgZWNobyBDSVQgPmMgJiYgY2F0IGUgPmQgJiYKKwlnaXQgdXBkYXRlLWluZGV4IC0tYWRkIC0tcmVtb3ZlIGEgYiBjIGQgZSAmJgorCXRyZWUwPWBnaXQgd3JpdGUtdHJlZWAgJiYKKwlnaXQgZGlmZiAtLWNhY2hlZCAtLWJpbmFyeSA+Y3VycmVudCAmJgorCWdpdCBhcHBseSAtLXN0YXQgLS1zdW1tYXJ5IGN1cnJlbnQKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnYXBwbHkgYmluYXJ5IHBhdGNoJyBcCi0JJ2dpdCByZXNldCAtLWhhcmQgJiYKLQkgZ2l0IGFwcGx5IC0tYmluYXJ5IC0taW5kZXggPGN1cnJlbnQgJiYKLQkgdHJlZTE9YGdpdCB3cml0ZS10cmVlYCAmJgotCSB0ZXN0ICIkdHJlZTEiID0gIiR0cmVlMCInCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhcHBseSBiaW5hcnkgcGF0Y2gnICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGFwcGx5IC0tYmluYXJ5IC0taW5kZXggPGN1cnJlbnQgJiYKKwl0cmVlMT1gZ2l0IHdyaXRlLXRyZWVgICYmCisJdGVzdCAiJHRyZWUxIiA9ICIkdHJlZTAiCisnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmYgLS1uby1pbmRleCB3aXRoIGJpbmFyeSBjcmVhdGlvbicgJwogCWVjaG8gUSB8IHFfdG9fbnVsID5iaW5hcnkgJiYKQEAgLTEyNSw3ICsxMTksNyBAQAogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmYgLS1zdGF0IHdpdGggYmluYXJ5IGZpbGVzIGFuZCBiaWcgY2hhbmdlIGNvdW50JyAnCi0JZWNobyBYIHwgZGQgb2Y9YmluZmlsZSBicz0xayBzZWVrPTEgJiYKKwlwcmludGYgIlwwMVwwMCUxMDI0ZCIgMSA+YmluZmlsZSAmJgogCWdpdCBhZGQgYmluZmlsZSAmJgogCWk9MCAmJgogCXdoaWxlIHRlc3QgJGkgLWx0IDEwMDAwOyBkbwpkaWZmIC0tZ2l0IGEvdC90NDAxNC1mb3JtYXQtcGF0Y2guc2ggYi90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaAppbmRleCBiNDczYjZkLi41OGQ0MTgwIDEwMDc1NQotLS0gYS90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaAorKysgYi90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaApAQCAtMTEwLDczICsxMTAsMTA3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2V4dHJhIGhlYWRlcnMnICcKIAotCWdpdCBjb25maWcgZm9ybWF0LmhlYWRlcnMgIlRvOiBSLiBFLiBDaXBpZW50IDxyY2lwaWVudEBleGFtcGxlLmNvbT4KKwlnaXQgY29uZmlnIGZvcm1hdC5oZWFkZXJzICJUbzogUiBFIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPgogIiAmJgotCWdpdCBjb25maWcgLS1hZGQgZm9ybWF0LmhlYWRlcnMgIkNjOiBTLiBFLiBDaXBpZW50IDxzY2lwaWVudEBleGFtcGxlLmNvbT4KKwlnaXQgY29uZmlnIC0tYWRkIGZvcm1hdC5oZWFkZXJzICJDYzogUyBFIENpcGllbnQgPHNjaXBpZW50QGV4YW1wbGUuY29tPgogIiAmJgogCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgbWFzdGVyLi5zaWRlID4gcGF0Y2gyICYmCiAJc2VkIC1lICIvXlwkL3EiIHBhdGNoMiA+IGhkcnMyICYmCi0JZ3JlcCAiXlRvOiBSLiBFLiBDaXBpZW50IDxyY2lwaWVudEBleGFtcGxlLmNvbT5cJCIgaGRyczIgJiYKLQlncmVwICJeQ2M6IFMuIEUuIENpcGllbnQgPHNjaXBpZW50QGV4YW1wbGUuY29tPlwkIiBoZHJzMgorCWdyZXAgIl5UbzogUiBFIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPlwkIiBoZHJzMiAmJgorCWdyZXAgIl5DYzogUyBFIENpcGllbnQgPHNjaXBpZW50QGV4YW1wbGUuY29tPlwkIiBoZHJzMgogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2V4dHJhIGhlYWRlcnMgd2l0aG91dCBuZXdsaW5lcycgJwogCi0JZ2l0IGNvbmZpZyAtLXJlcGxhY2UtYWxsIGZvcm1hdC5oZWFkZXJzICJUbzogUi4gRS4gQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+IiAmJgotCWdpdCBjb25maWcgLS1hZGQgZm9ybWF0LmhlYWRlcnMgIkNjOiBTLiBFLiBDaXBpZW50IDxzY2lwaWVudEBleGFtcGxlLmNvbT4iICYmCisJZ2l0IGNvbmZpZyAtLXJlcGxhY2UtYWxsIGZvcm1hdC5oZWFkZXJzICJUbzogUiBFIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPiIgJiYKKwlnaXQgY29uZmlnIC0tYWRkIGZvcm1hdC5oZWFkZXJzICJDYzogUyBFIENpcGllbnQgPHNjaXBpZW50QGV4YW1wbGUuY29tPiIgJiYKIAlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IG1hc3Rlci4uc2lkZSA+cGF0Y2gzICYmCiAJc2VkIC1lICIvXlwkL3EiIHBhdGNoMyA+IGhkcnMzICYmCi0JZ3JlcCAiXlRvOiBSLiBFLiBDaXBpZW50IDxyY2lwaWVudEBleGFtcGxlLmNvbT5cJCIgaGRyczMgJiYKLQlncmVwICJeQ2M6IFMuIEUuIENpcGllbnQgPHNjaXBpZW50QGV4YW1wbGUuY29tPlwkIiBoZHJzMworCWdyZXAgIl5UbzogUiBFIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPlwkIiBoZHJzMyAmJgorCWdyZXAgIl5DYzogUyBFIENpcGllbnQgPHNjaXBpZW50QGV4YW1wbGUuY29tPlwkIiBoZHJzMwogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2V4dHJhIGhlYWRlcnMgd2l0aCBtdWx0aXBsZSBUbzpzJyAnCiAKLQlnaXQgY29uZmlnIC0tcmVwbGFjZS1hbGwgZm9ybWF0LmhlYWRlcnMgIlRvOiBSLiBFLiBDaXBpZW50IDxyY2lwaWVudEBleGFtcGxlLmNvbT4iICYmCi0JZ2l0IGNvbmZpZyAtLWFkZCBmb3JtYXQuaGVhZGVycyAiVG86IFMuIEUuIENpcGllbnQgPHNjaXBpZW50QGV4YW1wbGUuY29tPiIgJiYKKwlnaXQgY29uZmlnIC0tcmVwbGFjZS1hbGwgZm9ybWF0LmhlYWRlcnMgIlRvOiBSIEUgQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+IiAmJgorCWdpdCBjb25maWcgLS1hZGQgZm9ybWF0LmhlYWRlcnMgIlRvOiBTIEUgQ2lwaWVudCA8c2NpcGllbnRAZXhhbXBsZS5jb20+IiAmJgogCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgbWFzdGVyLi5zaWRlID4gcGF0Y2g0ICYmCiAJc2VkIC1lICIvXlwkL3EiIHBhdGNoNCA+IGhkcnM0ICYmCi0JZ3JlcCAiXlRvOiBSLiBFLiBDaXBpZW50IDxyY2lwaWVudEBleGFtcGxlLmNvbT4sXCQiIGhkcnM0ICYmCi0JZ3JlcCAiXiAqUy4gRS4gQ2lwaWVudCA8c2NpcGllbnRAZXhhbXBsZS5jb20+XCQiIGhkcnM0CisJZ3JlcCAiXlRvOiBSIEUgQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+LFwkIiBoZHJzNCAmJgorCWdyZXAgIl4gKlMgRSBDaXBpZW50IDxzY2lwaWVudEBleGFtcGxlLmNvbT5cJCIgaGRyczQKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkaXRpb25hbCBjb21tYW5kIGxpbmUgY2MnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZGl0aW9uYWwgY29tbWFuZCBsaW5lIGNjIChhc2NpaSknICcKIAotCWdpdCBjb25maWcgLS1yZXBsYWNlLWFsbCBmb3JtYXQuaGVhZGVycyAiQ2M6IFIuIEUuIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPiIgJiYKKwlnaXQgY29uZmlnIC0tcmVwbGFjZS1hbGwgZm9ybWF0LmhlYWRlcnMgIkNjOiBSIEUgQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+IiAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLS1jYz0iUyBFIENpcGllbnQgPHNjaXBpZW50QGV4YW1wbGUuY29tPiIgLS1zdGRvdXQgbWFzdGVyLi5zaWRlIHwgc2VkIC1lICIvXlwkL3EiID5wYXRjaDUgJiYKKwlncmVwICJeQ2M6IFIgRSBDaXBpZW50IDxyY2lwaWVudEBleGFtcGxlLmNvbT4sXCQiIHBhdGNoNSAmJgorCWdyZXAgIl4gKlMgRSBDaXBpZW50IDxzY2lwaWVudEBleGFtcGxlLmNvbT5cJCIgcGF0Y2g1CisnCisKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ2FkZGl0aW9uYWwgY29tbWFuZCBsaW5lIGNjIChyZmM4MjIpJyAnCisKKwlnaXQgY29uZmlnIC0tcmVwbGFjZS1hbGwgZm9ybWF0LmhlYWRlcnMgIkNjOiBSIEUgQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+IiAmJgogCWdpdCBmb3JtYXQtcGF0Y2ggLS1jYz0iUy4gRS4gQ2lwaWVudCA8c2NpcGllbnRAZXhhbXBsZS5jb20+IiAtLXN0ZG91dCBtYXN0ZXIuLnNpZGUgfCBzZWQgLWUgIi9eXCQvcSIgPnBhdGNoNSAmJgotCWdyZXAgIl5DYzogUi4gRS4gQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+LFwkIiBwYXRjaDUgJiYKLQlncmVwICJeICpTLiBFLiBDaXBpZW50IDxzY2lwaWVudEBleGFtcGxlLmNvbT5cJCIgcGF0Y2g1CisJZ3JlcCAiXkNjOiBSIEUgQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+LFwkIiBwYXRjaDUgJiYKKwlncmVwICJeICpcIlMuIEUuIENpcGllbnRcIiA8c2NpcGllbnRAZXhhbXBsZS5jb20+XCQiIHBhdGNoNQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21tYW5kIGxpbmUgaGVhZGVycycgJwogCiAJZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBmb3JtYXQuaGVhZGVycyAmJgotCWdpdCBmb3JtYXQtcGF0Y2ggLS1hZGQtaGVhZGVyPSJDYzogUi4gRS4gQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+IiAtLXN0ZG91dCBtYXN0ZXIuLnNpZGUgfCBzZWQgLWUgIi9eXCQvcSIgPnBhdGNoNiAmJgotCWdyZXAgIl5DYzogUi4gRS4gQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+XCQiIHBhdGNoNgorCWdpdCBmb3JtYXQtcGF0Y2ggLS1hZGQtaGVhZGVyPSJDYzogUiBFIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPiIgLS1zdGRvdXQgbWFzdGVyLi5zaWRlIHwgc2VkIC1lICIvXlwkL3EiID5wYXRjaDYgJiYKKwlncmVwICJeQ2M6IFIgRSBDaXBpZW50IDxyY2lwaWVudEBleGFtcGxlLmNvbT5cJCIgcGF0Y2g2CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbmZpZ3VyYXRpb24gaGVhZGVycyBhbmQgY29tbWFuZCBsaW5lIGhlYWRlcnMnICcKIAotCWdpdCBjb25maWcgLS1yZXBsYWNlLWFsbCBmb3JtYXQuaGVhZGVycyAiQ2M6IFIuIEUuIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPiIgJiYKLQlnaXQgZm9ybWF0LXBhdGNoIC0tYWRkLWhlYWRlcj0iQ2M6IFMuIEUuIENpcGllbnQgPHNjaXBpZW50QGV4YW1wbGUuY29tPiIgLS1zdGRvdXQgbWFzdGVyLi5zaWRlIHwgc2VkIC1lICIvXlwkL3EiID5wYXRjaDcgJiYKLQlncmVwICJeQ2M6IFIuIEUuIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPixcJCIgcGF0Y2g3ICYmCi0JZ3JlcCAiXiAqUy4gRS4gQ2lwaWVudCA8c2NpcGllbnRAZXhhbXBsZS5jb20+XCQiIHBhdGNoNworCWdpdCBjb25maWcgLS1yZXBsYWNlLWFsbCBmb3JtYXQuaGVhZGVycyAiQ2M6IFIgRSBDaXBpZW50IDxyY2lwaWVudEBleGFtcGxlLmNvbT4iICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtLWFkZC1oZWFkZXI9IkNjOiBTIEUgQ2lwaWVudCA8c2NpcGllbnRAZXhhbXBsZS5jb20+IiAtLXN0ZG91dCBtYXN0ZXIuLnNpZGUgfCBzZWQgLWUgIi9eXCQvcSIgPnBhdGNoNyAmJgorCWdyZXAgIl5DYzogUiBFIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPixcJCIgcGF0Y2g3ICYmCisJZ3JlcCAiXiAqUyBFIENpcGllbnQgPHNjaXBpZW50QGV4YW1wbGUuY29tPlwkIiBwYXRjaDcKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tbWFuZCBsaW5lIFRvOiBoZWFkZXInICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbW1hbmQgbGluZSBUbzogaGVhZGVyIChhc2NpaSknICcKIAogCWdpdCBjb25maWcgLS11bnNldC1hbGwgZm9ybWF0LmhlYWRlcnMgJiYKLQlnaXQgZm9ybWF0LXBhdGNoIC0tdG89IlIuIEUuIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPiIgLS1zdGRvdXQgbWFzdGVyLi5zaWRlIHwgc2VkIC1lICIvXlwkL3EiID5wYXRjaDggJiYKLQlncmVwICJeVG86IFIuIEUuIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPlwkIiBwYXRjaDgKKwlnaXQgZm9ybWF0LXBhdGNoIC0tdG89IlIgRSBDaXBpZW50IDxyY2lwaWVudEBleGFtcGxlLmNvbT4iIC0tc3Rkb3V0IG1hc3Rlci4uc2lkZSB8IHNlZCAtZSAiL15cJC9xIiA+cGF0Y2g4ICYmCisJZ3JlcCAiXlRvOiBSIEUgQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+XCQiIHBhdGNoOAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdjb25maWd1cmF0aW9uIFRvOiBoZWFkZXInICcKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ2NvbW1hbmQgbGluZSBUbzogaGVhZGVyIChyZmM4MjIpJyAnCisKKwlnaXQgZm9ybWF0LXBhdGNoIC0tdG89IlIuIEUuIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPiIgLS1zdGRvdXQgbWFzdGVyLi5zaWRlIHwgc2VkIC1lICIvXlwkL3EiID5wYXRjaDggJiYKKwlncmVwICJeVG86IFwiUi4gRS4gQ2lwaWVudFwiIDxyY2lwaWVudEBleGFtcGxlLmNvbT5cJCIgcGF0Y2g4CisnCisKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ2NvbW1hbmQgbGluZSBUbzogaGVhZGVyIChyZmMyMDQ3KScgJworCisJZ2l0IGZvcm1hdC1wYXRjaCAtLXRvPSJSIMOEIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPiIgLS1zdGRvdXQgbWFzdGVyLi5zaWRlIHwgc2VkIC1lICIvXlwkL3EiID5wYXRjaDggJiYKKwlncmVwICJeVG86ID0/VVRGLTg/cT9SPTIwPUMzPTg0PTIwQ2lwaWVudD89IDxyY2lwaWVudEBleGFtcGxlLmNvbT5cJCIgcGF0Y2g4CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbmZpZ3VyYXRpb24gVG86IGhlYWRlciAoYXNjaWkpJyAnCisKKwlnaXQgY29uZmlnIGZvcm1hdC50byAiUiBFIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPiIgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IG1hc3Rlci4uc2lkZSB8IHNlZCAtZSAiL15cJC9xIiA+cGF0Y2g5ICYmCisJZ3JlcCAiXlRvOiBSIEUgQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+XCQiIHBhdGNoOQorJworCit0ZXN0X2V4cGVjdF9mYWlsdXJlICdjb25maWd1cmF0aW9uIFRvOiBoZWFkZXIgKHJmYzgyMiknICcKIAogCWdpdCBjb25maWcgZm9ybWF0LnRvICJSLiBFLiBDaXBpZW50IDxyY2lwaWVudEBleGFtcGxlLmNvbT4iICYmCiAJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCBtYXN0ZXIuLnNpZGUgfCBzZWQgLWUgIi9eXCQvcSIgPnBhdGNoOSAmJgotCWdyZXAgIl5UbzogUi4gRS4gQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+XCQiIHBhdGNoOQorCWdyZXAgIl5UbzogXCJSLiBFLiBDaXBpZW50XCIgPHJjaXBpZW50QGV4YW1wbGUuY29tPlwkIiBwYXRjaDkKKycKKwordGVzdF9leHBlY3RfZmFpbHVyZSAnY29uZmlndXJhdGlvbiBUbzogaGVhZGVyIChyZmMyMDQ3KScgJworCisJZ2l0IGNvbmZpZyBmb3JtYXQudG8gIlIgw4QgQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+IiAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgbWFzdGVyLi5zaWRlIHwgc2VkIC1lICIvXlwkL3EiID5wYXRjaDkgJiYKKwlncmVwICJeVG86ID0/VVRGLTg/cT9SPTIwPUMzPTg0PTIwQ2lwaWVudD89IDxyY2lwaWVudEBleGFtcGxlLmNvbT5cJCIgcGF0Y2g5CiAnCiAKICMgY2hlY2tfcGF0Y2ggPHBhdGNoPjogVmVyaWZ5IHRoYXQgPHBhdGNoPiBsb29rcyBsaWtlIGEgaGFsZi1zYW5lCkBAIC0xOTAsMTEgKzIyNCwxMSBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1uby10byBvdmVycmlkZXMgY29uZmlnLnRvJyAnCiAKIAlnaXQgY29uZmlnIC0tcmVwbGFjZS1hbGwgZm9ybWF0LnRvIFwKLQkJIlIuIEUuIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPiIgJiYKKwkJIlIgRSBDaXBpZW50IDxyY2lwaWVudEBleGFtcGxlLmNvbT4iICYmCiAJZ2l0IGZvcm1hdC1wYXRjaCAtLW5vLXRvIC0tc3Rkb3V0IG1hc3Rlci4uc2lkZSB8CiAJc2VkIC1lICIvXlwkL3EiID5wYXRjaDEwICYmCiAJY2hlY2tfcGF0Y2ggcGF0Y2gxMCAmJgotCSEgZ3JlcCAiXlRvOiBSLiBFLiBDaXBpZW50IDxyY2lwaWVudEBleGFtcGxlLmNvbT5cJCIgcGF0Y2gxMAorCSEgZ3JlcCAiXlRvOiBSIEUgQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+XCQiIHBhdGNoMTAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1uby10byBhbmQgLS10byByZXBsYWNlcyBjb25maWcudG8nICcKQEAgLTIxMiwyMSArMjQ2LDIxIEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICctLW5vLWNjIG92ZXJyaWRlcyBjb25maWcuY2MnICcKIAogCWdpdCBjb25maWcgLS1yZXBsYWNlLWFsbCBmb3JtYXQuY2MgXAotCQkiQy4gRS4gQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+IiAmJgorCQkiQyBFIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPiIgJiYKIAlnaXQgZm9ybWF0LXBhdGNoIC0tbm8tY2MgLS1zdGRvdXQgbWFzdGVyLi5zaWRlIHwKIAlzZWQgLWUgIi9eXCQvcSIgPnBhdGNoMTIgJiYKIAljaGVja19wYXRjaCBwYXRjaDEyICYmCi0JISBncmVwICJeQ2M6IEMuIEUuIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPlwkIiBwYXRjaDEyCisJISBncmVwICJeQ2M6IEMgRSBDaXBpZW50IDxyY2lwaWVudEBleGFtcGxlLmNvbT5cJCIgcGF0Y2gxMgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICctLW5vLWFkZC1oZWFkZXIgb3ZlcnJpZGVzIGNvbmZpZy5oZWFkZXJzJyAnCiAKIAlnaXQgY29uZmlnIC0tcmVwbGFjZS1hbGwgZm9ybWF0LmhlYWRlcnMgXAotCQkiSGVhZGVyMTogQi4gRS4gQ2lwaWVudCA8cmNpcGllbnRAZXhhbXBsZS5jb20+IiAmJgorCQkiSGVhZGVyMTogQiBFIENpcGllbnQgPHJjaXBpZW50QGV4YW1wbGUuY29tPiIgJiYKIAlnaXQgZm9ybWF0LXBhdGNoIC0tbm8tYWRkLWhlYWRlciAtLXN0ZG91dCBtYXN0ZXIuLnNpZGUgfAogCXNlZCAtZSAiL15cJC9xIiA+cGF0Y2gxMyAmJgogCWNoZWNrX3BhdGNoIHBhdGNoMTMgJiYKLQkhIGdyZXAgIl5IZWFkZXIxOiBCLiBFLiBDaXBpZW50IDxyY2lwaWVudEBleGFtcGxlLmNvbT5cJCIgcGF0Y2gxMworCSEgZ3JlcCAiXkhlYWRlcjE6IEIgRSBDaXBpZW50IDxyY2lwaWVudEBleGFtcGxlLmNvbT5cJCIgcGF0Y2gxMwogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtdWx0aXBsZSBmaWxlcycgJwpAQCAtMjM3LDEzICsyNzEsMjkgQEAKIAlscyBwYXRjaGVzLzAwMDEtU2lkZS1jaGFuZ2VzLTEucGF0Y2ggcGF0Y2hlcy8wMDAyLVNpZGUtY2hhbmdlcy0yLnBhdGNoIHBhdGNoZXMvMDAwMy1TaWRlLWNoYW5nZXMtMy13aXRoLW4tYmFja3NsYXNoLW4taW4taXQucGF0Y2gKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVyb2xsIGNvdW50JyAnCisJcm0gLWZyIHBhdGNoZXMgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC1vIHBhdGNoZXMgLS1jb3Zlci1sZXR0ZXIgLS1yZXJvbGwtY291bnQgNCBtYXN0ZXIuLnNpZGUgPmxpc3QgJiYKKwkhIGdyZXAgLXYgIl5wYXRjaGVzL3Y0LTAwMFswLTNdLSIgbGlzdCAmJgorCXNlZCAtbiAtZSAiL15TdWJqZWN0OiAvcCIgJChjYXQgbGlzdCkgPnN1YmplY3RzICYmCisJISBncmVwIC12ICJeU3ViamVjdDogXFtQQVRDSCB2NCBbMC0zXS8zXF0gIiBzdWJqZWN0cworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXJvbGwgY291bnQgKC12KScgJworCXJtIC1mciBwYXRjaGVzICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtbyBwYXRjaGVzIC0tY292ZXItbGV0dGVyIC12NCBtYXN0ZXIuLnNpZGUgPmxpc3QgJiYKKwkhIGdyZXAgLXYgIl5wYXRjaGVzL3Y0LTAwMFswLTNdLSIgbGlzdCAmJgorCXNlZCAtbiAtZSAiL15TdWJqZWN0OiAvcCIgJChjYXQgbGlzdCkgPnN1YmplY3RzICYmCisJISBncmVwIC12ICJeU3ViamVjdDogXFtQQVRDSCB2NCBbMC0zXS8zXF0gIiBzdWJqZWN0cworJworCiBjaGVja190aHJlYWRpbmcgKCkgewogCWV4cGVjdD0iJDEiICYmCiAJc2hpZnQgJiYKIAkoZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAiJEAiOyBlY2hvICQ/ID4gc3RhdHVzLm91dCkgfAogCSMgUHJpbnRzIGV2ZXJ5dGhpbmcgYmV0d2VlbiB0aGUgTWVzc2FnZS1JRCBhbmQgSW4tUmVwbHktVG8sCiAJIyBhbmQgcmVwbGFjZXMgYWxsIE1lc3NhZ2UtSUQtbG9va2FsaWtlcyBieSBhIHNlcXVlbmNlIG51bWJlcgotCXBlcmwgLW5lICcKKwkiJFBFUkxfUEFUSCIgLW5lICcKIAkJaWYgKC9eKG1lc3NhZ2UtaWR8cmVmZXJlbmNlc3xpbi1yZXBseS10bykvaSkgewogCQkJJHByaW50aW5nID0gMTsKIAkJfSBlbHNpZiAoL15cUy8pIHsKQEAgLTYxNiw4ICs2NjYsMTkgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0LXBhdGNoIC0tc2lnbm9mZicgJwotCWdpdCBmb3JtYXQtcGF0Y2ggLTEgLS1zaWdub2ZmIC0tc3Rkb3V0IHwKLQlncmVwICJeU2lnbmVkLW9mZi1ieTogJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+IgorCWdpdCBmb3JtYXQtcGF0Y2ggLTEgLS1zaWdub2ZmIC0tc3Rkb3V0ID5vdXQgJiYKKwlncmVwICJeU2lnbmVkLW9mZi1ieTogJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+IiBvdXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0LXBhdGNoIC0tbm90ZXMgLS1zaWdub2ZmJyAnCisJZ2l0IG5vdGVzIC0tcmVmIHRlc3QgYWRkIC1tICJ0ZXN0IG1lc3NhZ2UiIEhFQUQgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC0xIC0tc2lnbm9mZiAtLXN0ZG91dCAtLW5vdGVzPXRlc3QgPm91dCAmJgorCSMgVGhyZWUgZGFzaGVzIG11c3QgY29tZSBhZnRlciBTLW8tYgorCSEgc2VkICIvXlNpZ25lZC1vZmYtYnk6IC9xIiBvdXQgfCBncmVwICJ0ZXN0IG1lc3NhZ2UiICYmCisJc2VkICIxLC9eU2lnbmVkLW9mZi1ieTogL2QiIG91dCB8IGdyZXAgInRlc3QgbWVzc2FnZSIgJiYKKwkjIE5vdGVzIG1lc3NhZ2UgbXVzdCBjb21lIGFmdGVyIHRocmVlIGRhc2hlcworCSEgc2VkICIvXi0tLSQvcSIgb3V0IHwgZ3JlcCAidGVzdCBtZXNzYWdlIiAmJgorCXNlZCAiMSwvXi0tLSQvZCIgb3V0IHwgZ3JlcCAidGVzdCBtZXNzYWdlIgogJwogCiBlY2hvICJmYXRhbDogLS1uYW1lLW9ubHkgZG9lcyBub3QgbWFrZSBzZW5zZSIgPiBleHBlY3QubmFtZS1vbmx5CkBAIC02ODEsMjEgKzc0MiwyMSBAQAogCXRlc3QgMiA9ICQoZ3JlcCAibXkgc2lnIiBvdXRwdXQgfCB3YyAtbCkKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0LnNpZ25hdHVyZT0iIiBzdXByZXNzZXMgc2lnbmF0dXJlcycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0LnNpZ25hdHVyZT0iIiBzdXBwcmVzc2VzIHNpZ25hdHVyZXMnICcKIAlnaXQgY29uZmlnIGZvcm1hdC5zaWduYXR1cmUgIiIgJiYKIAlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IC0xID5vdXRwdXQgJiYKIAljaGVja19wYXRjaCBvdXRwdXQgJiYKIAkhIGdyZXAgIl4tLSBcJCIgb3V0cHV0CiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdC1wYXRjaCAtLW5vLXNpZ25hdHVyZSBzdXByZXNzZXMgc2lnbmF0dXJlcycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0LXBhdGNoIC0tbm8tc2lnbmF0dXJlIHN1cHByZXNzZXMgc2lnbmF0dXJlcycgJwogCWdpdCBjb25maWcgLS11bnNldC1hbGwgZm9ybWF0LnNpZ25hdHVyZSAmJgogCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLS1uby1zaWduYXR1cmUgLTEgPm91dHB1dCAmJgogCWNoZWNrX3BhdGNoIG91dHB1dCAmJgogCSEgZ3JlcCAiXi0tIFwkIiBvdXRwdXQKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0LXBhdGNoIC0tc2lnbmF0dXJlPSIiIHN1cHJlc3NlcyBzaWduYXR1cmVzJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmb3JtYXQtcGF0Y2ggLS1zaWduYXR1cmU9IiIgc3VwcHJlc3NlcyBzaWduYXR1cmVzJyAnCiAJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLXNpZ25hdHVyZT0iIiAtMSA+b3V0cHV0ICYmCiAJY2hlY2tfcGF0Y2ggb3V0cHV0ICYmCiAJISBncmVwICJeLS0gXCQiIG91dHB1dApAQCAtNzUyLDE2ICs4MTMsMTQgQEAKIE01MTI9JE02NCRNNjQkTTY0JE02NCRNNjQkTTY0JE02NCRNNjQKIGNhdCA+ZXhwZWN0IDw8J0VPRicKIFN1YmplY3Q6IFtQQVRDSF0gZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28KLSBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhcgotIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vCi0gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIKLSBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbwotIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyCi0gZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28KLSBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhcgotIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIKKyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIKKyBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28KKyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIKKyBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28KKyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIKKyBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhciBmb28gYmFyIGZvbyBiYXIgZm9vIGJhcgogRU9GCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdmb3JtYXQtcGF0Y2ggd3JhcHMgZXh0cmVtZWx5IGxvbmcgaGVhZGVycyAoYXNjaWkpJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmb3JtYXQtcGF0Y2ggd3JhcHMgZXh0cmVtZWx5IGxvbmcgc3ViamVjdCAoYXNjaWkpJyAnCiAJZWNobyBjb250ZW50ID4+ZmlsZSAmJgogCWdpdCBhZGQgZmlsZSAmJgogCWdpdCBjb21taXQgLW0gIiRNNTEyIiAmJgpAQCAtNzc0LDMwICs4MzMsMzIgQEAKIE02ND0kTTgkTTgkTTgkTTgkTTgkTTgkTTgkTTgKIE01MTI9JE02NCRNNjQkTTY0JE02NCRNNjQkTTY0JE02NCRNNjQKIGNhdCA+ZXhwZWN0IDw8J0VPRicKLVN1YmplY3Q6IFtQQVRDSF0gPT9VVEYtOD9xP2Y9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI/PQorU3ViamVjdDogW1BBVENIXSA9P1VURi04P3E/Zj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPz0KKyA9P1VURi04P3E/PUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI/PQorID0/VVRGLTg/cT89MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjA/PQorID0/VVRGLTg/cT9iYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY/PQorID0/VVRGLTg/cT89MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY/PQorID0/VVRGLTg/cT89QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY/PQorID0/VVRGLTg/cT89QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj89CisgPT9VVEYtOD9xPz0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMD89CisgPT9VVEYtOD9xP2Jhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj89CisgPT9VVEYtOD9xPz0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89CisgPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj89CisgPT9VVEYtOD9xPz1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPz0KKyA9P1VURi04P3E/PTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwPz0KKyA9P1VURi04P3E/YmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2Pz0KKyA9P1VURi04P3E/PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2Pz0KKyA9P1VURi04P3E/PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPz0KKyA9P1VURi04P3E/PUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI/PQorID0/VVRGLTg/cT89MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjA/PQorID0/VVRGLTg/cT9iYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY/PQorID0/VVRGLTg/cT89MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY/PQorID0/VVRGLTg/cT89QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY/PQorID0/VVRGLTg/cT89QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj89CisgPT9VVEYtOD9xPz0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMD89CisgPT9VVEYtOD9xP2Jhcj89CiBFT0YKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdC1wYXRjaCB3cmFwcyBleHRyZW1lbHkgbG9uZyBoZWFkZXJzIChyZmMyMDQ3KScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0LXBhdGNoIHdyYXBzIGV4dHJlbWVseSBsb25nIHN1YmplY3QgKHJmYzIwNDcpJyAnCiAJcm0gLXJmIHBhdGNoZXMvICYmCiAJZWNobyBjb250ZW50ID4+ZmlsZSAmJgogCWdpdCBhZGQgZmlsZSAmJgpAQCAtODA3LDUyICs4NjgsODAgQEAKIAl0ZXN0X2NtcCBleHBlY3Qgc3ViamVjdAogJwogCi1NOD0iZm9vX2Jhcl8iCi1NNjQ9JE04JE04JE04JE04JE04JE04JE04JE04Ci1jYXQgPmV4cGVjdCA8PEVPRgotRnJvbTogJE02NAotIDxmb29iYXJAZm9vLmJhcj4KLUVPRgotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0LXBhdGNoIHdyYXBzIG5vbi1xdW90YWJsZSBoZWFkZXJzJyAnCi0Jcm0gLXJmIHBhdGNoZXMvICYmCi0JZWNobyBjb250ZW50ID4+ZmlsZSAmJgotCWdpdCBhZGQgZmlsZSAmJgotCWdpdCBjb21taXQgLW1mb28gLS1hdXRob3IgIiRNNjQgPGZvb2JhckBmb28uYmFyPiIgJiYKLQlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IC0xID5wYXRjaCAmJgotCXNlZCAtbiAiL15Gcm9tOiAvcDsgL14gL3A7IC9eJC9xIiA8cGF0Y2ggPmZyb20gJiYKLQl0ZXN0X2NtcCBleHBlY3QgZnJvbQotJwotCiBjaGVja19hdXRob3IoKSB7CiAJZWNobyBjb250ZW50ID4+ZmlsZSAmJgogCWdpdCBhZGQgZmlsZSAmJgogCUdJVF9BVVRIT1JfTkFNRT0kMSBnaXQgY29tbWl0IC1tIGF1dGhvci1jaGVjayAmJgogCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLTEgPnBhdGNoICYmCi0JZ3JlcCBeRnJvbTogcGF0Y2ggPmFjdHVhbCAmJgorCXNlZCAtbiAiL15Gcm9tOiAvcDsgL14gL3A7IC9eJC9xIiA8cGF0Y2ggPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKIH0KIAogY2F0ID5leHBlY3QgPDwnRU9GJwogRnJvbTogIkZvbyBCLiBCYXIiIDxhdXRob3JAZXhhbXBsZS5jb20+CiBFT0YKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdC1wYXRjaCBxdW90ZXMgZG90IGluIGhlYWRlcnMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdC1wYXRjaCBxdW90ZXMgZG90IGluIGZyb20taGVhZGVycycgJwogCWNoZWNrX2F1dGhvciAiRm9vIEIuIEJhciIKICcKIAogY2F0ID5leHBlY3QgPDwnRU9GJwogRnJvbTogIkZvbyBcIlRoZSBCYXpcIiBCYXIiIDxhdXRob3JAZXhhbXBsZS5jb20+CiBFT0YKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdC1wYXRjaCBxdW90ZXMgZG91YmxlLXF1b3RlIGluIGhlYWRlcnMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdC1wYXRjaCBxdW90ZXMgZG91YmxlLXF1b3RlIGluIGZyb20taGVhZGVycycgJwogCWNoZWNrX2F1dGhvciAiRm9vIFwiVGhlIEJhelwiIEJhciIKICcKIAogY2F0ID5leHBlY3QgPDwnRU9GJwotRnJvbTogPT9VVEYtOD9xPyJGPUMzPUI2bz0yMEIuPTIwQmFyIj89IDxhdXRob3JAZXhhbXBsZS5jb20+CitGcm9tOiA9P1VURi04P3E/Rj1DMz1CNm89MjBCYXI/PSA8YXV0aG9yQGV4YW1wbGUuY29tPgogRU9GCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdyZmMyMDQ3LWVuY29kZWQgaGVhZGVycyBhbHNvIGRvdWJsZS1xdW90ZSA4MjIgc3BlY2lhbHMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdC1wYXRjaCB1c2VzIHJmYzIwNDctZW5jb2RlZCBmcm9tLWhlYWRlcnMgd2hlbiBuZWNlc3NhcnknICcKKwljaGVja19hdXRob3IgIkbDtm8gQmFyIgorJworCitjYXQgPmV4cGVjdCA8PCdFT0YnCitGcm9tOiA9P1VURi04P3E/Rj1DMz1CNm89MjBCPTJFPTIwQmFyPz0gPGF1dGhvckBleGFtcGxlLmNvbT4KK0VPRgordGVzdF9leHBlY3Rfc3VjY2VzcyAncmZjMjA0Ny1lbmNvZGVkIGZyb20taGVhZGVycyBsZWF2ZSBubyByZmM4MjIgc3BlY2lhbHMnICcKIAljaGVja19hdXRob3IgIkbDtm8gQi4gQmFyIgogJwogCitjYXQgPmV4cGVjdCA8PEVPRgorRnJvbTogZm9vX2Jhcl9mb29fYmFyX2Zvb19iYXJfZm9vX2Jhcl9mb29fYmFyX2Zvb19iYXJfZm9vX2Jhcl9mb29fYmFyXworIDxhdXRob3JAZXhhbXBsZS5jb20+CitFT0YKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdC1wYXRjaCB3cmFwcyBtb2RlcmF0ZWx5IGxvbmcgZnJvbS1oZWFkZXIgKGFzY2lpKScgJworCWNoZWNrX2F1dGhvciAiZm9vX2Jhcl9mb29fYmFyX2Zvb19iYXJfZm9vX2Jhcl9mb29fYmFyX2Zvb19iYXJfZm9vX2Jhcl9mb29fYmFyXyIKKycKKworY2F0ID5leHBlY3QgPDwnRU9GJworRnJvbTogRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIKKyBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28KKyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgPGF1dGhvckBleGFtcGxlLmNvbT4KK0VPRgordGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0LXBhdGNoIHdyYXBzIGV4dHJlbWVseSBsb25nIGZyb20taGVhZGVyIChhc2NpaSknICcKKwljaGVja19hdXRob3IgIkZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIiCisnCisKK2NhdCA+ZXhwZWN0IDw8J0VPRicKK0Zyb206ICJGb28uQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhcgorIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbworIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciIgPGF1dGhvckBleGFtcGxlLmNvbT4KK0VPRgordGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0LXBhdGNoIHdyYXBzIGV4dHJlbWVseSBsb25nIGZyb20taGVhZGVyIChyZmM4MjIpJyAnCisJY2hlY2tfYXV0aG9yICJGb28uQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIgorJworCitjYXQgPmV4cGVjdCA8PCdFT0YnCitGcm9tOiA9P1VURi04P3E/Rm89QzM9QjY9MjBCYXI9MjBGb289MjBCYXI9MjBGb289MjBCYXI9MjBGb289MjBCYXI9MjBGb28/PQorID0/VVRGLTg/cT89MjBCYXI9MjBGb289MjBCYXI9MjBGb289MjBCYXI9MjBGb289MjBCYXI9MjBGb289MjBCYXI9MjBGb289MjA/PQorID0/VVRGLTg/cT9CYXI9MjBGb289MjBCYXI9MjBGb289MjBCYXI9MjBGb289MjBCYXI9MjBGb289MjBCYXI9MjBGb289MjBCYXI/PQorID0/VVRGLTg/cT89MjBGb289MjBCYXI9MjBGb289MjBCYXI9MjBGb289MjBCYXI9MjBGb289MjBCYXI9MjBGb289MjBCYXI9MjA/PQorID0/VVRGLTg/cT9Gb289MjBCYXI9MjBGb289MjBCYXI/PSA8YXV0aG9yQGV4YW1wbGUuY29tPgorRU9GCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmb3JtYXQtcGF0Y2ggd3JhcHMgZXh0cmVtZWx5IGxvbmcgZnJvbS1oZWFkZXIgKHJmYzIwNDcpJyAnCisJY2hlY2tfYXV0aG9yICJGb8O2IEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciBGb28gQmFyIEZvbyBCYXIgRm9vIEJhciIKKycKKwogY2F0ID5leHBlY3QgPDwnRU9GJwogU3ViamVjdDogaGVhZGVyIHdpdGggLiBpbiBpdAogRU9GCkBAIC04ODMsNiArOTcyLDI2OCBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAorYXBwZW5kX3NpZ25vZmYoKQoreworCUM9JChnaXQgY29tbWl0LXRyZWUgSEVBRF5ee3RyZWV9IC1wIEhFQUQpICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLXNpZ25vZmYgJENeLi4kQyA+YXBwZW5kX3NpZ25vZmYucGF0Y2ggJiYKKwlzZWQgLW4gLWUgIjEsL14tLS0kL3AiIGFwcGVuZF9zaWdub2ZmLnBhdGNoIHwKKwkJZWdyZXAgLW4gIl5TdWJqZWN0fFNpZ258XiQiCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NpZ25vZmY6IGNvbW1pdCB3aXRoIG5vIGJvZHknICcKKwlhcHBlbmRfc2lnbm9mZiA8L2Rldi9udWxsID5hY3R1YWwgJiYKKwljYXQgPDxcRU9GIHwgc2VkICJzL0VPTCQvLyIgPmV4cGVjdGVkICYmCis0OlN1YmplY3Q6IFtQQVRDSF0gRU9MCis4OgorOTpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lnbm9mZjogY29tbWl0IHdpdGggb25seSBzdWJqZWN0JyAnCisJZWNobyBzdWJqZWN0IHwgYXBwZW5kX3NpZ25vZmYgPmFjdHVhbCAmJgorCWNhdCA+ZXhwZWN0ZWQgPDxcRU9GICYmCis0OlN1YmplY3Q6IFtQQVRDSF0gc3ViamVjdAorODoKKzk6U2lnbmVkLW9mZi1ieTogQyBPIE1pdHRlciA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPgorRU9GCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NpZ25vZmY6IGNvbW1pdCB3aXRoIG9ubHkgc3ViamVjdCB0aGF0IGRvZXMgbm90IGVuZCB3aXRoIE5MJyAnCisJcHJpbnRmIHN1YmplY3QgfCBhcHBlbmRfc2lnbm9mZiA+YWN0dWFsICYmCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorOTpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lnbm9mZjogbm8gZXhpc3Rpbmcgc2lnbm9mZnMnICcKKwlhcHBlbmRfc2lnbm9mZiA8PFxFT0YgPmFjdHVhbCAmJgorc3ViamVjdAorCitib2R5CitFT0YKKwljYXQgPmV4cGVjdGVkIDw8XEVPRiAmJgorNDpTdWJqZWN0OiBbUEFUQ0hdIHN1YmplY3QKKzg6CisxMDoKKzExOlNpZ25lZC1vZmYtYnk6IEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaWdub2ZmOiBubyBleGlzdGluZyBzaWdub2ZmcyBhbmQgbm8gdHJhaWxpbmcgTkwnICcKKwlwcmludGYgInN1YmplY3RcblxuYm9keSIgfCBhcHBlbmRfc2lnbm9mZiA+YWN0dWFsICYmCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorMTA6CisxMTpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lnbm9mZjogc29tZSByYW5kb20gc2lnbm9mZicgJworCWFwcGVuZF9zaWdub2ZmIDw8XEVPRiA+YWN0dWFsICYmCitzdWJqZWN0CisKK2JvZHkKKworU2lnbmVkLW9mZi1ieTogbXlAaG91c2UKK0VPRgorCWNhdCA+ZXhwZWN0ZWQgPDxcRU9GICYmCis0OlN1YmplY3Q6IFtQQVRDSF0gc3ViamVjdAorODoKKzEwOgorMTE6U2lnbmVkLW9mZi1ieTogbXlAaG91c2UKKzEyOlNpZ25lZC1vZmYtYnk6IEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaWdub2ZmOiBtaXNjIGNvbmZvcm1pbmcgZm9vdGVyIGVsZW1lbnRzJyAnCisJYXBwZW5kX3NpZ25vZmYgPDxcRU9GID5hY3R1YWwgJiYKK3N1YmplY3QKKworYm9keQorCitTaWduZWQtb2ZmLWJ5OiBteUBob3VzZQorKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOSkKK1Rlc3RlZC1ieTogU29tZSBPbmUgPHNvbWVvbmVAZXhhbXBsZS5jb20+CitCdWc6IDEyMzQKK0VPRgorCWNhdCA+ZXhwZWN0ZWQgPDxcRU9GICYmCis0OlN1YmplY3Q6IFtQQVRDSF0gc3ViamVjdAorODoKKzEwOgorMTE6U2lnbmVkLW9mZi1ieTogbXlAaG91c2UKKzE1OlNpZ25lZC1vZmYtYnk6IEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaWdub2ZmOiBzb21lIHJhbmRvbSBzaWdub2ZmLWFsaWtlJyAnCisJYXBwZW5kX3NpZ25vZmYgPDxcRU9GID5hY3R1YWwgJiYKK3N1YmplY3QKKworYm9keQorRm9vbGVkLWJ5LW1lOiBteUBob3VzZQorRU9GCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorMTE6CisxMjpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lnbm9mZjogbm90IHJlYWxseSBhIHNpZ25vZmYnICcKKwlhcHBlbmRfc2lnbm9mZiA8PFxFT0YgPmFjdHVhbCAmJgorc3ViamVjdAorCitJIHdhbnQgdG8gbWVudGlvbiBhYm91dCBTaWduZWQtb2ZmLWJ5OiBoZXJlLgorRU9GCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorOTpJIHdhbnQgdG8gbWVudGlvbiBhYm91dCBTaWduZWQtb2ZmLWJ5OiBoZXJlLgorMTA6CisxMTpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lnbm9mZjogbm90IHJlYWxseSBhIHNpZ25vZmYgKDIpJyAnCisJYXBwZW5kX3NpZ25vZmYgPDxcRU9GID5hY3R1YWwgJiYKK3N1YmplY3QKKworTXkgdW5mb3J0dW5hdGUKK1NpZ25lZC1vZmYtYnk6IGV4YW1wbGUgaGFwcGVucyB0byBiZSB3cmFwcGVkIGhlcmUuCitFT0YKKwljYXQgPmV4cGVjdGVkIDw8XEVPRiAmJgorNDpTdWJqZWN0OiBbUEFUQ0hdIHN1YmplY3QKKzg6CisxMDpTaWduZWQtb2ZmLWJ5OiBleGFtcGxlIGhhcHBlbnMgdG8gYmUgd3JhcHBlZCBoZXJlLgorMTE6CisxMjpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lnbm9mZjogdmFsaWQgUy1vLWIgcGFyYWdyYXBoIGluIHRoZSBtaWRkbGUnICcKKwlhcHBlbmRfc2lnbm9mZiA8PFxFT0YgPmFjdHVhbCAmJgorc3ViamVjdAorCitTaWduZWQtb2ZmLWJ5OiBteUBob3VzZQorU2lnbmVkLW9mZi1ieTogeW91ckBob3VzZQorCitBIGxvdCBvZiBob3VzZXMuCitFT0YKKwljYXQgPmV4cGVjdGVkIDw8XEVPRiAmJgorNDpTdWJqZWN0OiBbUEFUQ0hdIHN1YmplY3QKKzg6Cis5OlNpZ25lZC1vZmYtYnk6IG15QGhvdXNlCisxMDpTaWduZWQtb2ZmLWJ5OiB5b3VyQGhvdXNlCisxMToKKzEzOgorMTQ6U2lnbmVkLW9mZi1ieTogQyBPIE1pdHRlciA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPgorRU9GCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NpZ25vZmY6IHRoZSBzYW1lIHNpZ25vZmYgYXQgdGhlIGVuZCcgJworCWFwcGVuZF9zaWdub2ZmIDw8XEVPRiA+YWN0dWFsICYmCitzdWJqZWN0CisKK2JvZHkKKworU2lnbmVkLW9mZi1ieTogQyBPIE1pdHRlciA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPgorRU9GCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorMTA6CisxMTpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lnbm9mZjogdGhlIHNhbWUgc2lnbm9mZiBhdCB0aGUgZW5kLCBubyB0cmFpbGluZyBOTCcgJworCXByaW50ZiAic3ViamVjdFxuXG5TaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+IiB8CisJCWFwcGVuZF9zaWdub2ZmID5hY3R1YWwgJiYKKwljYXQgPmV4cGVjdGVkIDw8XEVPRiAmJgorNDpTdWJqZWN0OiBbUEFUQ0hdIHN1YmplY3QKKzg6Cis5OlNpZ25lZC1vZmYtYnk6IEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaWdub2ZmOiB0aGUgc2FtZSBzaWdub2ZmIE5PVCBhdCB0aGUgZW5kJyAnCisJYXBwZW5kX3NpZ25vZmYgPDxcRU9GID5hY3R1YWwgJiYKK3N1YmplY3QKKworYm9keQorCitTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBteUBob3VzZQorRU9GCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorMTA6CisxMTpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CisxMjpTaWduZWQtb2ZmLWJ5OiBteUBob3VzZQorRU9GCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NpZ25vZmY6IGRldGVjdCBnYXJiYWdlIGluIG5vbi1jb25mb3JtaW5nIGZvb3RlcicgJworCWFwcGVuZF9zaWdub2ZmIDw8XEVPRiA+YWN0dWFsICYmCitzdWJqZWN0CisKK2JvZHkKKworVGVzdGVkLWJ5OiBteUBob3VzZQorU29tZSBUcmFzaAorU2lnbmVkLW9mZi1ieTogQyBPIE1pdHRlciA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPgorRU9GCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorMTA6CisxMzpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CisxNDoKKzE1OlNpZ25lZC1vZmYtYnk6IEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaWdub2ZmOiBmb290ZXIgYmVnaW5zIHdpdGggbm9uLXNpZ25vZmYgd2l0aG91dCBAIHNpZ24nICcKKwlhcHBlbmRfc2lnbm9mZiA8PFxFT0YgPmFjdHVhbCAmJgorc3ViamVjdAorCitib2R5CisKK1Jldmlld2VkLWlkOiBOb29uZQorVGVzdGVkLWJ5OiBteUBob3VzZQorQ2hhbmdlLWlkOiBJZGVhZGJlZWYKK1NpZ25lZC1vZmYtYnk6IEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KK0J1ZzogMTIzNAorRU9GCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorMTA6CisxNDpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0IHBhdGNoIGlnbm9yZXMgY29sb3IudWknICcKIAl0ZXN0X3VuY29uZmlnIGNvbG9yLnVpICYmCiAJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtMSA+ZXhwZWN0ICYmCkBAIC04OTEsNCArMTI0Miw3OSBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIHVzaW5nIGJyYW5jaCBkZXNjcmlwdGlvbiAoMSknICcKKwlnaXQgY2hlY2tvdXQgcmVidWlsZC0xICYmCisJdGVzdF9jb25maWcgYnJhbmNoLnJlYnVpbGQtMS5kZXNjcmlwdGlvbiBoZWxsbyAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLS1jb3Zlci1sZXR0ZXIgbWFzdGVyID5hY3R1YWwgJiYKKwlncmVwIGhlbGxvIGFjdHVhbCA+L2Rldi9udWxsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvdmVyIGxldHRlciB1c2luZyBicmFuY2ggZGVzY3JpcHRpb24gKDIpJyAnCisJZ2l0IGNoZWNrb3V0IHJlYnVpbGQtMSAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5yZWJ1aWxkLTEuZGVzY3JpcHRpb24gaGVsbG8gJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IC0tY292ZXItbGV0dGVyIHJlYnVpbGQtMX4yLi5yZWJ1aWxkLTEgPmFjdHVhbCAmJgorCWdyZXAgaGVsbG8gYWN0dWFsID4vZGV2L251bGwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIHVzaW5nIGJyYW5jaCBkZXNjcmlwdGlvbiAoMyknICcKKwlnaXQgY2hlY2tvdXQgcmVidWlsZC0xICYmCisJdGVzdF9jb25maWcgYnJhbmNoLnJlYnVpbGQtMS5kZXNjcmlwdGlvbiBoZWxsbyAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLS1jb3Zlci1sZXR0ZXIgXm1hc3RlciByZWJ1aWxkLTEgPmFjdHVhbCAmJgorCWdyZXAgaGVsbG8gYWN0dWFsID4vZGV2L251bGwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIHVzaW5nIGJyYW5jaCBkZXNjcmlwdGlvbiAoNCknICcKKwlnaXQgY2hlY2tvdXQgcmVidWlsZC0xICYmCisJdGVzdF9jb25maWcgYnJhbmNoLnJlYnVpbGQtMS5kZXNjcmlwdGlvbiBoZWxsbyAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLS1jb3Zlci1sZXR0ZXIgbWFzdGVyLi4gPmFjdHVhbCAmJgorCWdyZXAgaGVsbG8gYWN0dWFsID4vZGV2L251bGwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIHVzaW5nIGJyYW5jaCBkZXNjcmlwdGlvbiAoNSknICcKKwlnaXQgY2hlY2tvdXQgcmVidWlsZC0xICYmCisJdGVzdF9jb25maWcgYnJhbmNoLnJlYnVpbGQtMS5kZXNjcmlwdGlvbiBoZWxsbyAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLS1jb3Zlci1sZXR0ZXIgLTIgSEVBRCA+YWN0dWFsICYmCisJZ3JlcCBoZWxsbyBhY3R1YWwgPi9kZXYvbnVsbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb3ZlciBsZXR0ZXIgdXNpbmcgYnJhbmNoIGRlc2NyaXB0aW9uICg2KScgJworCWdpdCBjaGVja291dCByZWJ1aWxkLTEgJiYKKwl0ZXN0X2NvbmZpZyBicmFuY2gucmVidWlsZC0xLmRlc2NyaXB0aW9uIGhlbGxvICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLWNvdmVyLWxldHRlciAtMiA+YWN0dWFsICYmCisJZ3JlcCBoZWxsbyBhY3R1YWwgPi9kZXYvbnVsbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb3ZlciBsZXR0ZXIgd2l0aCBub3RoaW5nJyAnCisJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLWNvdmVyLWxldHRlciA+YWN0dWFsICYmCisJdGVzdF9saW5lX2NvdW50ID0gMCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIGF1dG8nICcKKwlta2RpciAtcCB0bXAgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiB0bXA7CisJCWdpdCBjb25maWcgLS11bnNldCBmb3JtYXQuY292ZXJsZXR0ZXIiICYmCisKKwlnaXQgY29uZmlnIGZvcm1hdC5jb3ZlcmxldHRlciBhdXRvICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtbyB0bXAgLTEgPmxpc3QgJiYKKwl0ZXN0X2xpbmVfY291bnQgPSAxIGxpc3QgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC1vIHRtcCAtMiA+bGlzdCAmJgorCXRlc3RfbGluZV9jb3VudCA9IDMgbGlzdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb3ZlciBsZXR0ZXIgYXV0byB1c2VyIG92ZXJyaWRlJyAnCisJbWtkaXIgLXAgdG1wICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgdG1wOworCQlnaXQgY29uZmlnIC0tdW5zZXQgZm9ybWF0LmNvdmVybGV0dGVyIiAmJgorCisJZ2l0IGNvbmZpZyBmb3JtYXQuY292ZXJsZXR0ZXIgYXV0byAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLW8gdG1wIC0tY292ZXItbGV0dGVyIC0xID5saXN0ICYmCisJdGVzdF9saW5lX2NvdW50ID0gMiBsaXN0ICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtbyB0bXAgLS1jb3Zlci1sZXR0ZXIgLTIgPmxpc3QgJiYKKwl0ZXN0X2xpbmVfY291bnQgPSAzIGxpc3QgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC1vIHRtcCAtLW5vLWNvdmVyLWxldHRlciAtMSA+bGlzdCAmJgorCXRlc3RfbGluZV9jb3VudCA9IDEgbGlzdCAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLW8gdG1wIC0tbm8tY292ZXItbGV0dGVyIC0yID5saXN0ICYmCisJdGVzdF9saW5lX2NvdW50ID0gMiBsaXN0CisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDAxNi1kaWZmLXF1b3RlLnNoIGIvdC90NDAxNi1kaWZmLXF1b3RlLnNoCmluZGV4IDk3YjgxNzcuLmNkNTQzZWMgMTAwNzU1Ci0tLSBhL3QvdDQwMTYtZGlmZi1xdW90ZS5zaAorKysgYi90L3Q0MDE2LWRpZmYtcXVvdGUuc2gKQEAgLTEzLDE0ICsxMywxMiBAQAogUDI9J3BhdGhuYW1lIHdpdGggU1AnCiBQMz0ncGF0aG5hbWUKIHdpdGggTEYnCi1pZiA6IDI+L2Rldi9udWxsID4iJFAxIiAmJiB0ZXN0IC1mICIkUDEiICYmIHJtIC1mICIkUDEiCi10aGVuCi0JdGVzdF9zZXRfcHJlcmVxIFRBQlNfSU5fRklMRU5BTUVTCi1lbHNlCi0Jc2F5ICdZb3VyIGZpbGVzeXN0ZW0gZG9lcyBub3QgYWxsb3cgdGFicyBpbiBmaWxlbmFtZXMnCi1maQorZWNobyAyPi9kZXYvbnVsbCA+IiRQMSIgJiYgdGVzdCAtZiAiJFAxIiAmJiBybSAtZiAiJFAxIiB8fCB7CisJc2tpcF9hbGw9J1lvdXIgZmlsZXN5c3RlbSBkb2VzIG5vdCBhbGxvdyB0YWJzIGluIGZpbGVuYW1lcycKKwl0ZXN0X2RvbmUKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBUQUJTX0lOX0ZJTEVOQU1FUyBzZXR1cCAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKIAllY2hvIFAwLjAgPiIkUDAuMCIgJiYKIAllY2hvIFAwLjEgPiIkUDAuMSIgJiYKIAllY2hvIFAwLjIgPiIkUDAuMiIgJiYKQEAgLTQwLDcgKzM4LDcgQEAKIAk6CiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgVEFCU19JTl9GSUxFTkFNRVMgJ3NldHVwIGV4cGVjdGVkIGZpbGVzJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBleHBlY3RlZCBmaWxlcycgJwogY2F0ID5leHBlY3QgPDxcRU9GCiAgcmVuYW1lIHBhdGhuYW1lLjEgPT4gIlJwYXRobmFtZVx0d2l0aCBIVC4wIiAoMTAwJSkKICByZW5hbWUgcGF0aG5hbWUuMyA9PiAiUnBhdGhuYW1lXG53aXRoIExGLjAiICgxMDAlKQpAQCAtNTIsMTIgKzUwLDEyIEBACiBFT0YKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBUQUJTX0lOX0ZJTEVOQU1FUyAnZ2l0IGRpZmYgLS1zdW1tYXJ5IC1NIEhFQUQnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBkaWZmIC0tc3VtbWFyeSAtTSBIRUFEJyAnCiAJZ2l0IGRpZmYgLS1zdW1tYXJ5IC1NIEhFQUQgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBUQUJTX0lOX0ZJTEVOQU1FUyAnZ2l0IGRpZmYgLS1udW1zdGF0IC1NIEhFQUQnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBkaWZmIC0tbnVtc3RhdCAtTSBIRUFEJyAnCiAJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgogCTAJMAlwYXRobmFtZS4xID0+ICJScGF0aG5hbWVcdHdpdGggSFQuMCIKIAkwCTAJcGF0aG5hbWUuMyA9PiAiUnBhdGhuYW1lXG53aXRoIExGLjAiCkBAIC03MSw3ICs2OSw3IEBACiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFRBQlNfSU5fRklMRU5BTUVTICdnaXQgZGlmZiAtLXN0YXQgLU0gSEVBRCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGRpZmYgLS1zdGF0IC1NIEhFQUQnICcKIAljYXQgPmV4cGVjdCA8PC1cRU9GICYmCiAJIHBhdGhuYW1lLjEgPT4gIlJwYXRobmFtZVx0d2l0aCBIVC4wIiAgICAgICAgICAgIHwgMAogCSBwYXRobmFtZS4zID0+ICJScGF0aG5hbWVcbndpdGggTEYuMCIgICAgICAgICAgICB8IDAKZGlmZiAtLWdpdCBhL3QvdDQwMTgtZGlmZi1mdW5jbmFtZS5zaCBiL3QvdDQwMTgtZGlmZi1mdW5jbmFtZS5zaAppbmRleCA0YmQyYTFjLi4zOGEwOTJhIDEwMDc1NQotLS0gYS90L3Q0MDE4LWRpZmYtZnVuY25hbWUuc2gKKysrIGIvdC90NDAxOC1kaWZmLWZ1bmNuYW1lLnNoCkBAIC05MywxMSArOTMsNiBAQAogCXMvc29uZzsvc29uZygpOy8KICcgPEJlZXIucGVybCA+QmVlci1jb3JyZWN0LnBlcmwKIAotdGVzdF9jb25maWcgKCkgewotCWdpdCBjb25maWcgIiQxIiAiJDIiICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgJDEiCi19Ci0KIHRlc3RfZXhwZWN0X2Z1bmNuYW1lICgpIHsKIAlsYW5nPSR7Mi1qYXZhfQogCXRlc3RfZXhwZWN0X2NvZGUgMSBnaXQgZGlmZiAtLW5vLWluZGV4IC1VMSBcCkBAIC0xMDUsNyArMTAwLDcgQEAKIAlncmVwICJeQEAuKkBAICQxIiBkaWZmCiB9CiAKLWZvciBwIGluIGJpYnRleCBjcHAgY3NoYXJwIGZvcnRyYW4gaHRtbCBqYXZhIG1hdGxhYiBvYmpjIHBhc2NhbCBwZXJsIHBocCBweXRob24gcnVieSB0ZXgKK2ZvciBwIGluIGFkYSBiaWJ0ZXggY3BwIGNzaGFycCBmb3J0cmFuIGh0bWwgamF2YSBtYXRsYWIgb2JqYyBwYXNjYWwgcGVybCBwaHAgcHl0aG9uIHJ1YnkgdGV4CiBkbwogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgImJ1aWx0aW4gJHAgcGF0dGVybiBjb21waWxlcyIgJwogCQllY2hvICIqLmphdmEgZGlmZj0kcCIgPi5naXRhdHRyaWJ1dGVzICYmCmRpZmYgLS1naXQgYS90L3Q0MDIwLWRpZmYtZXh0ZXJuYWwuc2ggYi90L3Q0MDIwLWRpZmYtZXh0ZXJuYWwuc2gKaW5kZXggMDgzZjYyZC4uMmU3ZDczZiAxMDA3NTUKLS0tIGEvdC90NDAyMC1kaWZmLWV4dGVybmFsLnNoCisrKyBiL3QvdDQwMjAtZGlmZi1leHRlcm5hbC5zaApAQCAtNDgsNyArNDgsNTMgQEAKIAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICd0eXBlY2hhbmdlIGRpZmYnICcKKwlybSAtZiBmaWxlICYmCisJbG4gLXMgZWxpZiBmaWxlICYmCisJR0lUX0VYVEVSTkFMX0RJRkY9ZWNobyBnaXQgZGlmZiAgfCB7CisJCXJlYWQgcGF0aCBvbGRmaWxlIG9sZGhleCBvbGRtb2RlIG5ld2ZpbGUgbmV3aGV4IG5ld21vZGUgJiYKKwkJdGVzdCAieiRwYXRoIiA9IHpmaWxlICYmCisJCXRlc3QgInokb2xkbW9kZSIgPSB6MTAwNjQ0ICYmCisJCXRlc3QgInokbmV3aGV4IiA9ICJ6JF96NDAiICYmCisJCXRlc3QgInokbmV3bW9kZSIgPSB6MTIwMDAwICYmCisJCW9oPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEOmZpbGUpICYmCisJCXRlc3QgInokb2giID0gInokb2xkaGV4IgorCX0gJiYKKwlHSVRfRVhURVJOQUxfRElGRj1lY2hvIGdpdCBkaWZmIC0tbm8tZXh0LWRpZmYgPmFjdHVhbCAmJgorCWdpdCBkaWZmID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmYuZXh0ZXJuYWwnICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZWNobyB0aGlyZCA+ZmlsZSAmJgorCXRlc3RfY29uZmlnIGRpZmYuZXh0ZXJuYWwgZWNobyAmJgorCWdpdCBkaWZmIHwgeworCQlyZWFkIHBhdGggb2xkZmlsZSBvbGRoZXggb2xkbW9kZSBuZXdmaWxlIG5ld2hleCBuZXdtb2RlICYmCisJCXRlc3QgInokcGF0aCIgPSB6ZmlsZSAmJgorCQl0ZXN0ICJ6JG9sZG1vZGUiID0gejEwMDY0NCAmJgorCQl0ZXN0ICJ6JG5ld2hleCIgPSAieiRfejQwIiAmJgorCQl0ZXN0ICJ6JG5ld21vZGUiID0gejEwMDY0NCAmJgorCQlvaD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRDpmaWxlKSAmJgorCQl0ZXN0ICJ6JG9oIiA9ICJ6JG9sZGhleCIKKwl9CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmYuZXh0ZXJuYWwgc2hvdWxkIGFwcGx5IG9ubHkgdG8gZGlmZicgJworCXRlc3RfY29uZmlnIGRpZmYuZXh0ZXJuYWwgZWNobyAmJgorCWdpdCBsb2cgLXAgLTEgSEVBRCB8CisJZ3JlcCAiXmRpZmYgLS1naXQgYS9maWxlIGIvZmlsZSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZi5leHRlcm5hbCBhbmQgLS1uby1leHQtZGlmZicgJworCXRlc3RfY29uZmlnIGRpZmYuZXh0ZXJuYWwgZWNobyAmJgorCWdpdCBkaWZmIC0tbm8tZXh0LWRpZmYgfAorCWdyZXAgIl5kaWZmIC0tZ2l0IGEvZmlsZSBiL2ZpbGUiCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmYgYXR0cmlidXRlJyAnCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWVjaG8gdGhpcmQgPmZpbGUgJiYKIAogCWdpdCBjb25maWcgZGlmZi5wYXJyb3QuY29tbWFuZCBlY2hvICYmCiAKQEAgLTExMywxMiArMTU5LDI1IEBACiAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnR0lUX0VYVEVSTkFMX0RJRkYgdHJ1bXBzIGRpZmYuZXh0ZXJuYWwnICcKKwk+LmdpdGF0dHJpYnV0ZXMgJiYKKwl0ZXN0X2NvbmZpZyBkaWZmLmV4dGVybmFsICJlY2hvIGV4dC1nbG9iYWwiICYmCisJR0lUX0VYVEVSTkFMX0RJRkY9ImVjaG8gZXh0LWVudiIgZ2l0IGRpZmYgfCBncmVwIGV4dC1lbnYKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYXR0cmlidXRlcyB0cnVtcCBHSVRfRVhURVJOQUxfRElGRiBhbmQgZGlmZi5leHRlcm5hbCcgJworCXRlc3RfY29uZmlnIGRpZmYuZm9vLmNvbW1hbmQgImVjaG8gZXh0LWF0dHJpYnV0ZSIgJiYKKwl0ZXN0X2NvbmZpZyBkaWZmLmV4dGVybmFsICJlY2hvIGV4dC1nbG9iYWwiICYmCisJZWNobyAiZmlsZSBkaWZmPWZvbyIgPi5naXRhdHRyaWJ1dGVzICYmCisJR0lUX0VYVEVSTkFMX0RJRkY9ImVjaG8gZXh0LWVudiIgZ2l0IGRpZmYgfCBncmVwIGV4dC1hdHRyaWJ1dGUKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbm8gZGlmZiB3aXRoIC1kaWZmJyAnCiAJZWNobyA+LmdpdGF0dHJpYnV0ZXMgImZpbGUgLWRpZmYiICYmCiAJZ2l0IGRpZmYgfCBncmVwIEJpbmFyeQogJwogCi1lY2hvIE5VTFpiZXR3ZWVuWndvcmRzIHwgcGVybCAtcGUgJ3kvWi9cMDAwLycgPiBmaWxlCitlY2hvIE5VTFpiZXR3ZWVuWndvcmRzIHwgIiRQRVJMX1BBVEgiIC1wZSAneS9aL1wwMDAvJyA+IGZpbGUKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9yY2UgZGlmZiB3aXRoICJkaWZmIicgJwogCWVjaG8gPi5naXRhdHRyaWJ1dGVzICJmaWxlIGRpZmYiICYmCmRpZmYgLS1naXQgYS90L3Q0MDIyLWRpZmYtcmV3cml0ZS5zaCBiL3QvdDQwMjItZGlmZi1yZXdyaXRlLnNoCmluZGV4IGMwMGE5NGIuLjJkMDMwYTQgMTAwNzU1Ci0tLSBhL3QvdDQwMjItZGlmZi1yZXdyaXRlLnNoCisrKyBiL3QvdDQwMjItZGlmZi1yZXdyaXRlLnNoCkBAIC02Niw1ICs2NiwzNSBAQAogCWdyZXAgLXYgIkxpbnVzIFRvcnZhbGRzIiBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJlcGFyZSBhIGZpbGUgdGhhdCBlbmRzIHdpdGggYW4gaW5jb21wbGV0ZSBsaW5lJyAnCisJdGVzdF9zZXEgMSA5OSA+c2VxICYmCisJcHJpbnRmIDEwMCA+PnNlcSAmJgorCWdpdCBhZGQgc2VxICYmCisJZ2l0IGNvbW1pdCBzZXEgLW0gc2VxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jld3JpdGUgdGhlIG1pZGRsZSA5MCUgb2Ygc2VxdWVuY2UgZmlsZSBhbmQgdGVybWluYXRlIHdpdGggbmV3bGluZScgJworCXRlc3Rfc2VxIDEgNSA+c2VxICYmCisJdGVzdF9zZXEgOTMzMSA5NDIwID4+c2VxICYmCisJdGVzdF9zZXEgOTYgMTAwID4+c2VxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbmZpcm0gdGhhdCBzZXF1ZW5jZSBmaWxlIGlzIGNvbnNpZGVyZWQgYSByZXdyaXRlJyAnCisJZ2l0IGRpZmYgLUIgc2VxID5yZXMgJiYKKwlncmVwICJkaXNzaW1pbGFyaXR5IGluZGV4IiByZXMKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbm8gbmV3bGluZSBhdCBlb2YgaXMgb24gaXRzIG93biBsaW5lIHdpdGhvdXQgLUInICcKKwlnaXQgZGlmZiBzZXEgPnJlcyAmJgorCWdyZXAgIl5cXFxcICIgcmVzICYmCisJISBncmVwICJeLi4qXFxcXCAiIHJlcworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdubyBuZXdsaW5lIGF0IGVvZiBpcyBvbiBpdHMgb3duIGxpbmUgd2l0aCAtQicgJworCWdpdCBkaWZmIC1CIHNlcSA+cmVzICYmCisJZ3JlcCAiXlxcXFwgIiByZXMgJiYKKwkhIGdyZXAgIl4uLipcXFxcICIgcmVzCisnCisKIHRlc3RfZG9uZQogCmRpZmYgLS1naXQgYS90L3Q0MDI5LWRpZmYtdHJhaWxpbmctc3BhY2Uuc2ggYi90L3Q0MDI5LWRpZmYtdHJhaWxpbmctc3BhY2Uuc2gKaW5kZXggM2NjYzIzNy4uMzZlMmYwNyAxMDA3NTUKLS0tIGEvdC90NDAyOS1kaWZmLXRyYWlsaW5nLXNwYWNlLnNoCisrKyBiL3QvdDQwMjktZGlmZi10cmFpbGluZy1zcGFjZS5zaApAQCAtMjcsNyArMjcsNyBAQAogICAgICBnaXQgY29uZmlnIC0tYm9vbCBkaWZmLnN1cHByZXNzQmxhbmtFbXB0eSB0cnVlICYmCiAgICAgIGdpdCBkaWZmIGYgPiBhY3R1YWwgJiYKICAgICAgdGVzdF9jbXAgZXhwIGFjdHVhbCAmJgotICAgICBwZXJsIC1pLmJhayAtcCAtZSAicy9eXCQvIC8iIGV4cCAmJgorICAgICAiJFBFUkxfUEFUSCIgLWkuYmFrIC1wIC1lICJzL15cJC8gLyIgZXhwICYmCiAgICAgIGdpdCBjb25maWcgLS1ib29sIGRpZmYuc3VwcHJlc3NCbGFua0VtcHR5IGZhbHNlICYmCiAgICAgIGdpdCBkaWZmIGYgPiBhY3R1YWwgJiYKICAgICAgdGVzdF9jbXAgZXhwIGFjdHVhbCAmJgpkaWZmIC0tZ2l0IGEvdC90NDAzMC1kaWZmLXRleHRjb252LnNoIGIvdC90NDAzMC1kaWZmLXRleHRjb252LnNoCmluZGV4IGQ0YWI0ZjIuLjUzZWMzMzAgMTAwNzU1Ci0tLSBhL3QvdDQwMzAtZGlmZi10ZXh0Y29udi5zaAorKysgYi90L3Q0MDMwLWRpZmYtdGV4dGNvbnYuc2gKQEAgLTIxLDcgKzIxLDcgQEAKIAogY2F0ID5oZXhkdW1wIDw8J0VPRicKICMhL2Jpbi9zaAotcGVybCAtZSAnJC8gPSB1bmRlZjsgJF8gPSA8Pjsgcy8uL29yZCgkJikvZ2U7IHByaW50ICRfJyA8ICIkMSIKKyIkUEVSTF9QQVRIIiAtZSAnJC8gPSB1bmRlZjsgJF8gPSA8Pjsgcy8uL29yZCgkJikvZ2U7IHByaW50ICRfJyA8ICIkMSIKIEVPRgogY2htb2QgK3ggaGV4ZHVtcAogCkBAIC04NCw2ICs4NCwzMCBAQAogCWdpdCByZXNldCAtLXNvZnQgSEVBREB7MX0KICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ3JlcC1kaWZmICgtRykgb3BlcmF0ZXMgb24gdGV4dGNvbnYgZGF0YSAoYWRkKScgJworCWVjaG8gb25lID5leHBlY3QgJiYKKwlnaXQgbG9nIC0tcm9vdCAtLWZvcm1hdD0lcyAtRzAgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ3JlcC1kaWZmICgtRykgb3BlcmF0ZXMgb24gdGV4dGNvbnYgZGF0YSAobW9kaWZpY2F0aW9uKScgJworCWVjaG8gdHdvID5leHBlY3QgJiYKKwlnaXQgbG9nIC0tcm9vdCAtLWZvcm1hdD0lcyAtRzEgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncGlja2F4ZSAoLVMpIG9wZXJhdGVzIG9uIHRleHRjb252IGRhdGEgKGFkZCknICcKKwllY2hvIG9uZSA+ZXhwZWN0ICYmCisJZ2l0IGxvZyAtLXJvb3QgLS1mb3JtYXQ9JXMgLVMwID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3BpY2theGUgKC1TKSBvcGVyYXRlcyBvbiB0ZXh0Y29udiBkYXRhIChtb2RpZmljYXRpb24pJyAnCisJZWNobyB0d28gPmV4cGVjdCAmJgorCWdpdCBsb2cgLS1yb290IC0tZm9ybWF0PSVzIC1TMSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCiBjYXQgPmV4cGVjdC5zdGF0IDw8J0VPRicKICBmaWxlIHwgQmluIDIgLT4gNCBieXRlcwogIDEgZmlsZSBjaGFuZ2VkLCAwIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS90L3Q0MDMxLWRpZmYtcmV3cml0ZS1iaW5hcnkuc2ggYi90L3Q0MDMxLWRpZmYtcmV3cml0ZS1iaW5hcnkuc2gKaW5kZXggYzgyOTZmYS4uZWFjYzY2OSAxMDA3NTUKLS0tIGEvdC90NDAzMS1kaWZmLXJld3JpdGUtYmluYXJ5LnNoCisrKyBiL3QvdDQwMzEtZGlmZi1yZXdyaXRlLWJpbmFyeS5zaApAQCAtNjAsNyArNjAsNyBAQAogewogCWVjaG8gIiMhJFNIRUxMX1BBVEgiCiAJY2F0IDw8J0VPRicKLXBlcmwgLWUgJyQvID0gdW5kZWY7ICRfID0gPD47IHMvLi9vcmQoJCYpL2dlOyBwcmludCAkXycgPCAiJDEiCisiJFBFUkxfUEFUSCIgLWUgJyQvID0gdW5kZWY7ICRfID0gPD47IHMvLi9vcmQoJCYpL2dlOyBwcmludCAkXycgPCAiJDEiCiBFT0YKIH0gPmR1bXAKIGNobW9kICt4IGR1bXAKZGlmZiAtLWdpdCBhL3QvdDQwMzQtZGlmZi13b3Jkcy5zaCBiL3QvdDQwMzQtZGlmZi13b3Jkcy5zaAppbmRleCAzMGQ0MmNiLi5mMmY1NWZjIDEwMDc1NQotLS0gYS90L3Q0MDM0LWRpZmYtd29yZHMuc2gKKysrIGIvdC90NDAzNC1kaWZmLXdvcmRzLnNoCkBAIC0yMzAsNyArMjMwLDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXA6IHJlbW92ZSBkaWZmIGRyaXZlciByZWdleCcgJwotCXRlc3RfbWlnaHRfZmFpbCBnaXQgY29uZmlnIC0tdW5zZXQgZGlmZi50ZXN0ZHJpdmVyLndvcmRSZWdleAorCXRlc3RfdW5jb25maWcgZGlmZi50ZXN0ZHJpdmVyLndvcmRSZWdleAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd1c2UgY29uZmlndXJlZCByZWdleCcgJwpAQCAtMjk4LDYgKzI5OCw3IEBACiAJdGVzdF91bmNvbmZpZyBkaWZmLndvcmRyZWdleAogJwogCit0ZXN0X2xhbmd1YWdlX2RyaXZlciBhZGEKIHRlc3RfbGFuZ3VhZ2VfZHJpdmVyIGJpYnRleAogdGVzdF9sYW5ndWFnZV9kcml2ZXIgY3BwCiB0ZXN0X2xhbmd1YWdlX2RyaXZlciBjc2hhcnAKQEAgLTMzNCw4ICszMzUsNyBAQAogCiAJYwogCUVPRgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNvbmZpZyAtLXVuc2V0IGRpZmYuc3VwcHJlc3MtYmxhbmstZW1wdHkiICYmCi0JZ2l0IGNvbmZpZyBkaWZmLnN1cHByZXNzLWJsYW5rLWVtcHR5IHRydWUgJiYKKwl0ZXN0X2NvbmZpZyBkaWZmLnN1cHByZXNzLWJsYW5rLWVtcHR5IHRydWUgJiYKIAl3b3JkX2RpZmYgLS13b3JkLWRpZmY9cGxhaW4KICcKIApAQCAtMzY3LDcgKzM2Nyw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dvcmRSZWdleCBmb3IgdGhlIGZpcnN0IGZpbGUgZG9lcyBub3QgYXBwbHkgdG8gdGhlIHNlY29uZCcgJwogCWVjaG8gIioudGV4IGRpZmY9dGV4IiA+LmdpdGF0dHJpYnV0ZXMgJiYKLQlnaXQgY29uZmlnIGRpZmYudGV4LndvcmRSZWdleCAiW2Etel0rfC4iICYmCisJdGVzdF9jb25maWcgZGlmZi50ZXgud29yZFJlZ2V4ICJbYS16XSt8LiIgJiYKIAljYXQgPmV4cGVjdCA8PC1cRU9GICYmCiAJCWRpZmYgLS1naXQgYS9hLnRleCBiL2EudGV4CiAJCS0tLSBhL2EudGV4CmRpZmYgLS1naXQgYS90L3Q0MDM0L2FkYS9leHBlY3QgYi90L3Q0MDM0L2FkYS9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUyMzc2ZQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQwMzQvYWRhL2V4cGVjdApAQCAtMCwwICsxLDI3IEBACis8Qk9MRD5kaWZmIC0tZ2l0IGEvcHJlIGIvcG9zdDxSRVNFVD4KKzxCT0xEPmluZGV4IGQ5NmZkZDEuLmRmMjFiYjAgMTAwNjQ0PFJFU0VUPgorPEJPTEQ+LS0tIGEvcHJlPFJFU0VUPgorPEJPTEQ+KysrIGIvcG9zdDxSRVNFVD4KKzxDWUFOPkBAIC0xLDEzICsxLDEzIEBAPFJFU0VUPgorQWRhLlRleHRfSU8uUHV0X0xpbmUoIkhlbGxvIFdvcmxkPFJFRD4hPFJFU0VUPjxHUkVFTj4/PFJFU0VUPiIpOworMSAxZTxSRUQ+LTxSRVNFVD4xMCAxNiNGRTEyI0UyIDMuMTQxXzU5MiAnPFJFRD54PFJFU0VUPjxHUkVFTj55PFJFU0VUPicKKzxSRUQ+YTxSRVNFVD48R1JFRU4+eDxSRVNFVD4rPFJFRD5iIGE8UkVTRVQ+PEdSRUVOPnkgeDxSRVNFVD4tPFJFRD5iPFJFU0VUPgorPFJFRD5hPFJFU0VUPjxHUkVFTj55PFJFU0VUPgorPEdSRUVOPng8UkVTRVQ+KjxSRUQ+YiBhPFJFU0VUPjxHUkVFTj55IHg8UkVTRVQ+LzxSRUQ+YjxSRVNFVD4KKzxSRUQ+YTxSRVNFVD48R1JFRU4+eTxSRVNFVD4KKzxHUkVFTj54PFJFU0VUPioqPFJFRD5iPFJFU0VUPgorPFJFRD5hPFJFU0VUPjxHUkVFTj55PFJFU0VUPgorPEdSRUVOPng8UkVTRVQ+KDxSRUQ+YjxSRVNFVD48R1JFRU4+eTxSRVNFVD4pCis8UkVEPmE8UkVTRVQ+PEdSRUVOPng8UkVTRVQ+Oj08UkVEPmI8UkVTRVQ+Cis8UkVEPmE8UkVTRVQ+PEdSRUVOPnk8UkVTRVQ+Cis8R1JFRU4+eDxSRVNFVD49PFJFRD5iIGE8UkVTRVQ+PEdSRUVOPnkgeDxSRVNFVD4vPSA8UkVEPmI8UkVTRVQ+Cis8UkVEPmE8UkVTRVQ+PEdSRUVOPnk8UkVTRVQ+Cis8R1JFRU4+eDxSRVNFVD48PFJFRD5iIGE8UkVTRVQ+PEdSRUVOPnkgeDxSRVNFVD48PTxSRUQ+YiBhPFJFU0VUPjxHUkVFTj55IHg8UkVTRVQ+PjxSRUQ+YiBhPFJFU0VUPjxHUkVFTj55IHg8UkVTRVQ+Pj08UkVEPmI8UkVTRVQ+Cis8UkVEPmE8UkVTRVQ+PEdSRUVOPnk8UkVTRVQ+Cis8R1JFRU4+eDxSRVNFVD4sPFJFRD5iPFJFU0VUPgorPFJFRD5hPFJFU0VUPjxHUkVFTj55PFJFU0VUPgorPEdSRUVOPng8UkVTRVQ+PT48UkVEPmI8UkVTRVQ+Cis8UkVEPmE8UkVTRVQ+PEdSRUVOPnk8UkVTRVQ+Cis8R1JFRU4+eDxSRVNFVD4uLjxSRUQ+YjxSRVNFVD4KKzxSRUQ+YTxSRVNFVD48R1JFRU4+eTxSRVNFVD4KKzxHUkVFTj54PFJFU0VUPjw+PFJFRD5iPFJFU0VUPjxHUkVFTj55PFJFU0VUPgpkaWZmIC0tZ2l0IGEvdC90NDAzNC9hZGEvcG9zdCBiL3QvdDQwMzQvYWRhL3Bvc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYyMWJiMAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQwMzQvYWRhL3Bvc3QKQEAgLTAsMCArMSwxMyBAQAorQWRhLlRleHRfSU8uUHV0X0xpbmUoIkhlbGxvIFdvcmxkPyIpOworMSAxZTEwIDE2I0ZFMTIjRTIgMy4xNDFfNTkyICd5JworeCt5IHgteQoreCp5IHgveQoreCoqeQoreCh5KQoreDo9eQoreD15IHgvPSB5Cit4PHkgeDw9eSB4PnkgeD49eQoreCx5Cit4PT55Cit4Li55Cit4PD55CmRpZmYgLS1naXQgYS90L3Q0MDM0L2FkYS9wcmUgYi90L3Q0MDM0L2FkYS9wcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk2ZmRkMQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQwMzQvYWRhL3ByZQpAQCAtMCwwICsxLDEzIEBACitBZGEuVGV4dF9JTy5QdXRfTGluZSgiSGVsbG8gV29ybGQhIik7CisxIDFlLTEwIDE2I0ZFMTIjRTIgMy4xNDFfNTkyICd4JworYStiIGEtYgorYSpiIGEvYgorYSoqYgorYShiKQorYTo9YgorYT1iIGEvPSBiCithPGIgYTw9YiBhPmIgYT49YgorYSxiCithPT5iCithLi5iCithPD5iCmRpZmYgLS1naXQgYS90L3Q0MDM1LWRpZmYtcXVpZXQuc2ggYi90L3Q0MDM1LWRpZmYtcXVpZXQuc2gKaW5kZXggY2RiOTIwMi4uMjMxNDEyZCAxMDA3NTUKLS0tIGEvdC90NDAzNS1kaWZmLXF1aWV0LnNoCisrKyBiL3QvdDQwMzUtZGlmZi1xdWlldC5zaApAQCAtMTAsNyArMTAsMjIgQEAKIAlnaXQgY29tbWl0IC1tIGZpcnN0ICYmCiAJZWNobyAyID5iICYmCiAJZ2l0IGFkZCAuICYmCi0JZ2l0IGNvbW1pdCAtYSAtbSBzZWNvbmQKKwlnaXQgY29tbWl0IC1hIC1tIHNlY29uZCAmJgorCW1rZGlyIC1wIHRlc3Qtb3V0c2lkZS9yZXBvICYmICgKKwkJY2QgdGVzdC1vdXRzaWRlL3JlcG8gJiYKKwkJZ2l0IGluaXQgJiYKKwkJZWNobyAiMSAxIiA+YSAmJgorCQlnaXQgYWRkIC4gJiYKKwkJZ2l0IGNvbW1pdCAtbSAxCisJKSAmJgorCW1rZGlyIC1wIHRlc3Qtb3V0c2lkZS9ub24vZ2l0ICYmICgKKwkJY2QgdGVzdC1vdXRzaWRlL25vbi9naXQgJiYKKwkJZWNobyAiMSAxIiA+YSAmJgorCQllY2hvICIxIDEiID5tYXRjaGluZy1maWxlICYmCisJCWVjaG8gIjEgMSAiID50cmFpbGluZy1zcGFjZSAmJgorCQllY2hvICIxICAgMSIgPmV4dHJhLXNwYWNlICYmCisJCWVjaG8gIjIiID5uZXZlci1tYXRjaAorCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGRpZmYtdHJlZSBIRUFEXiBIRUFEJyAnCkBAIC03Nyw0ICs5Miw2MCBAQAogCX0KICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGRpZmYsIG9uZSBmaWxlIG91dHNpZGUgcmVwbycgJworCSgKKwkJY2QgdGVzdC1vdXRzaWRlL3JlcG8gJiYKKwkJdGVzdF9leHBlY3RfY29kZSAwIGdpdCBkaWZmIC0tcXVpZXQgYSAuLi9ub24vZ2l0L21hdGNoaW5nLWZpbGUgJiYKKwkJdGVzdF9leHBlY3RfY29kZSAxIGdpdCBkaWZmIC0tcXVpZXQgYSAuLi9ub24vZ2l0L2V4dHJhLXNwYWNlCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgZGlmZiwgYm90aCBmaWxlcyBvdXRzaWRlIHJlcG8nICcKKwkoCisJCUdJVF9DRUlMSU5HX0RJUkVDVE9SSUVTPSIkVFJBU0hfRElSRUNUT1JZL3Rlc3Qtb3V0c2lkZSIgJiYKKwkJZXhwb3J0IEdJVF9DRUlMSU5HX0RJUkVDVE9SSUVTICYmCisJCWNkIHRlc3Qtb3V0c2lkZS9ub24vZ2l0ICYmCisJCXRlc3RfZXhwZWN0X2NvZGUgMCBnaXQgZGlmZiAtLXF1aWV0IGEgbWF0Y2hpbmctZmlsZSAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IGRpZmYgLS1xdWlldCBhIGV4dHJhLXNwYWNlCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgZGlmZiAtLWlnbm9yZS1zcGFjZS1hdC1lb2wsIG9uZSBmaWxlIG91dHNpZGUgcmVwbycgJworCSgKKwkJY2QgdGVzdC1vdXRzaWRlL3JlcG8gJiYKKwkJdGVzdF9leHBlY3RfY29kZSAwIGdpdCBkaWZmIC0tcXVpZXQgLS1pZ25vcmUtc3BhY2UtYXQtZW9sIGEgLi4vbm9uL2dpdC90cmFpbGluZy1zcGFjZSAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IGRpZmYgLS1xdWlldCAtLWlnbm9yZS1zcGFjZS1hdC1lb2wgYSAuLi9ub24vZ2l0L2V4dHJhLXNwYWNlCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgZGlmZiAtLWlnbm9yZS1zcGFjZS1hdC1lb2wsIGJvdGggZmlsZXMgb3V0c2lkZSByZXBvJyAnCisJKAorCQlHSVRfQ0VJTElOR19ESVJFQ1RPUklFUz0iJFRSQVNIX0RJUkVDVE9SWS90ZXN0LW91dHNpZGUiICYmCisJCWV4cG9ydCBHSVRfQ0VJTElOR19ESVJFQ1RPUklFUyAmJgorCQljZCB0ZXN0LW91dHNpZGUvbm9uL2dpdCAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDAgZ2l0IGRpZmYgLS1xdWlldCAtLWlnbm9yZS1zcGFjZS1hdC1lb2wgYSB0cmFpbGluZy1zcGFjZSAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IGRpZmYgLS1xdWlldCAtLWlnbm9yZS1zcGFjZS1hdC1lb2wgYSBleHRyYS1zcGFjZQorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGRpZmYgLS1pZ25vcmUtYWxsLXNwYWNlLCBvbmUgZmlsZSBvdXRzaWRlIHJlcG8nICcKKwkoCisJCWNkIHRlc3Qtb3V0c2lkZS9yZXBvICYmCisJCXRlc3RfZXhwZWN0X2NvZGUgMCBnaXQgZGlmZiAtLXF1aWV0IC0taWdub3JlLWFsbC1zcGFjZSBhIC4uL25vbi9naXQvdHJhaWxpbmctc3BhY2UgJiYKKwkJdGVzdF9leHBlY3RfY29kZSAwIGdpdCBkaWZmIC0tcXVpZXQgLS1pZ25vcmUtYWxsLXNwYWNlIGEgLi4vbm9uL2dpdC9leHRyYS1zcGFjZSAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IGRpZmYgLS1xdWlldCAtLWlnbm9yZS1hbGwtc3BhY2UgYSAuLi9ub24vZ2l0L25ldmVyLW1hdGNoCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgZGlmZiAtLWlnbm9yZS1hbGwtc3BhY2UsIGJvdGggZmlsZXMgb3V0c2lkZSByZXBvJyAnCisJKAorCQlHSVRfQ0VJTElOR19ESVJFQ1RPUklFUz0iJFRSQVNIX0RJUkVDVE9SWS90ZXN0LW91dHNpZGUiICYmCisJCWV4cG9ydCBHSVRfQ0VJTElOR19ESVJFQ1RPUklFUyAmJgorCQljZCB0ZXN0LW91dHNpZGUvbm9uL2dpdCAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDAgZ2l0IGRpZmYgLS1xdWlldCAtLWlnbm9yZS1hbGwtc3BhY2UgYSB0cmFpbGluZy1zcGFjZSAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDAgZ2l0IGRpZmYgLS1xdWlldCAtLWlnbm9yZS1hbGwtc3BhY2UgYSBleHRyYS1zcGFjZSAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IGRpZmYgLS1xdWlldCAtLWlnbm9yZS1hbGwtc3BhY2UgYSBuZXZlci1tYXRjaAorCSkKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q0MDM4LWRpZmYtY29tYmluZWQuc2ggYi90L3Q0MDM4LWRpZmYtY29tYmluZWQuc2gKaW5kZXggNDAyNzdjNy4uMTAxOWQ3YiAxMDA3NTUKLS0tIGEvdC90NDAzOC1kaWZmLWNvbWJpbmVkLnNoCisrKyBiL3QvdDQwMzgtZGlmZi1jb21iaW5lZC5zaApAQCAtMyw2ICszLDcgQEAKIHRlc3RfZGVzY3JpcHRpb249J2NvbWJpbmVkIGRpZmYnCiAKIC4gLi90ZXN0LWxpYi5zaAorLiAiJFRFU1RfRElSRUNUT1JZIi9kaWZmLWxpYi5zaAogCiBzZXR1cF9oZWxwZXIgKCkgewogCW9uZT0kMSBicmFuY2g9JDIgc2lkZT0kMyAmJgpAQCAtODksNCArOTAsMzE1IEBACiAJZ3JlcCAiZGlmZiAtLWNjIGZpbGUiIG91dAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBmb3IgLS1jYyAtLXJhdycgJworCWJsb2I9JChlY2hvIGZpbGUgfCBnaXQgaGFzaC1vYmplY3QgLS1zdGRpbiAtdykgJiYKKwliYXNlX3RyZWU9JChlY2hvICIxMDA2NDQgYmxvYiAkYmxvYglmaWxlIiB8IGdpdCBta3RyZWUpICYmCisJdHJlZXM9ICYmCisJZm9yIGkgaW4gYHRlc3Rfc2VxIDEgNDBgCisJZG8KKwkJYmxvYj0kKGVjaG8gZmlsZSRpIHwgZ2l0IGhhc2gtb2JqZWN0IC0tc3RkaW4gLXcpICYmCisJCXRyZWVzPSIkdHJlZXMkKGVjaG8gIjEwMDY0NCBibG9iICRibG9iCWZpbGUiIHwgZ2l0IG1rdHJlZSkkTEYiCisJZG9uZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayAtLWNjIC0tcmF3IHdpdGggZm91ciB0cmVlcycgJworCWZvdXJfdHJlZXM9JChlY2hvICIkdHJlZXMiIHwgc2VkIC1lIDRxKSAmJgorCWdpdCBkaWZmIC0tY2MgLS1yYXcgJGZvdXJfdHJlZXMgJGJhc2VfdHJlZSA+b3V0ICYmCisJIyBDaGVjayBmb3IgZm91ciBsZWFkaW5nIGNvbG9ucyBpbiB0aGUgb3V0cHV0OgorCWdyZXAgIl46Ojo6W146XSIgb3V0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIC0tY2MgLS1yYXcgd2l0aCBmb3J0eSB0cmVlcycgJworCWdpdCBkaWZmIC0tY2MgLS1yYXcgJHRyZWVzICRiYXNlX3RyZWUgPm91dCAmJgorCSMgQ2hlY2sgZm9yIGZvcnR5IGxlYWRpbmcgY29sb25zIGluIHRoZSBvdXRwdXQ6CisJZ3JlcCAiXjo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6OjpbXjpdIiBvdXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgY29tYmluZWQgaWdub3JlIHNwYWNlcycgJworCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwk+dGVzdCAmJgorCWdpdCBhZGQgdGVzdCAmJgorCWdpdCBjb21taXQgLW0gaW5pdGlhbCAmJgorCisJdHIgLWQgUSA8PC1cRU9GID50ZXN0ICYmCisJYWx3YXlzIGNvYWxlc2NlCisJZW9sIHNwYWNlIGNvYWxlc2NlIFEKKwlzcGFjZSAgY2hhbmdlIGNvYWxlc2NlCisJYWxsIHNwYSBjZXMgY29hbGVzY2UKKwllb2wgc3BhY2VzIFEKKwlzcGFjZSAgY2hhbmdlCisJYWxsIHNwYSBjZXMKKwlFT0YKKwlnaXQgY29tbWl0IC1tICJ0ZXN0IHNwYWNlIGNoYW5nZSIgLWEgJiYKKworCWdpdCBjaGVja291dCAtYiBzaWRlIEhFQUReICYmCisJdHIgLWQgUSA8PC1cRU9GID50ZXN0ICYmCisJYWx3YXlzIGNvYWxlc2NlCisJZW9sIHNwYWNlIGNvYWxlc2NlCisJc3BhY2UgY2hhbmdlIGNvYWxlc2NlCisJYWxsIHNwYWNlcyBjb2FsZXNjZQorCWVvbCBzcGFjZXMKKwlzcGFjZSBjaGFuZ2UKKwlhbGwgc3BhY2VzCisJRU9GCisJZ2l0IGNvbW1pdCAtbSAidGVzdCBvdGhlciBzcGFjZSBjaGFuZ2VzIiAtYSAmJgorCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIG1hc3RlciAmJgorCXRyIC1kIFEgPDwtXEVPRiA+dGVzdCAmJgorCWVvbCBzcGFjZXMgUQorCXNwYWNlICBjaGFuZ2UKKwlhbGwgc3BhIGNlcworCUVPRgorCWdpdCBjb21taXQgLW0gbWVyZ2VkIC1hCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIGNvbWJpbmVkIG91dHB1dCAobm8gaWdub3JlIHNwYWNlKScgJworCWdpdCBzaG93ID5hY3R1YWwudG1wICYmCisJc2VkIC1lICIxLC9eQEBAL2QiIDwgYWN0dWFsLnRtcCA+YWN0dWFsICYmCisJdHIgLWQgUSA8PC1cRU9GID5leHBlY3RlZCAmJgorCS0tYWx3YXlzIGNvYWxlc2NlCisJLSBlb2wgc3BhY2UgY29hbGVzY2UKKwktIHNwYWNlIGNoYW5nZSBjb2FsZXNjZQorCS0gYWxsIHNwYWNlcyBjb2FsZXNjZQorCS0gZW9sIHNwYWNlcworCS0gc3BhY2UgY2hhbmdlCisJLSBhbGwgc3BhY2VzCisJIC1lb2wgc3BhY2UgY29hbGVzY2UgUQorCSAtc3BhY2UgIGNoYW5nZSBjb2FsZXNjZQorCSAtYWxsIHNwYSBjZXMgY29hbGVzY2UKKwkrIGVvbCBzcGFjZXMgUQorCSsgc3BhY2UgIGNoYW5nZQorCSsgYWxsIHNwYSBjZXMKKwlFT0YKKwljb21wYXJlX2RpZmZfcGF0Y2ggZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIGNvbWJpbmVkIG91dHB1dCAoaWdub3JlIHNwYWNlIGF0IGVvbCknICcKKwlnaXQgc2hvdyAtLWlnbm9yZS1zcGFjZS1hdC1lb2wgPmFjdHVhbC50bXAgJiYKKwlzZWQgLWUgIjEsL15AQEAvZCIgPCBhY3R1YWwudG1wID5hY3R1YWwgJiYKKwl0ciAtZCBRIDw8LVxFT0YgPmV4cGVjdGVkICYmCisJLS1hbHdheXMgY29hbGVzY2UKKwktLWVvbCBzcGFjZSBjb2FsZXNjZQorCS0gc3BhY2UgY2hhbmdlIGNvYWxlc2NlCisJLSBhbGwgc3BhY2VzIGNvYWxlc2NlCisJIC1zcGFjZSAgY2hhbmdlIGNvYWxlc2NlCisJIC1hbGwgc3BhIGNlcyBjb2FsZXNjZQorCSAgZW9sIHNwYWNlcyBRCisJLSBzcGFjZSBjaGFuZ2UKKwktIGFsbCBzcGFjZXMKKwkrIHNwYWNlICBjaGFuZ2UKKwkrIGFsbCBzcGEgY2VzCisJRU9GCisJY29tcGFyZV9kaWZmX3BhdGNoIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBjb21iaW5lZCBvdXRwdXQgKGlnbm9yZSBzcGFjZSBjaGFuZ2UpJyAnCisJZ2l0IHNob3cgLWIgPmFjdHVhbC50bXAgJiYKKwlzZWQgLWUgIjEsL15AQEAvZCIgPCBhY3R1YWwudG1wID5hY3R1YWwgJiYKKwl0ciAtZCBRIDw8LVxFT0YgPmV4cGVjdGVkICYmCisJLS1hbHdheXMgY29hbGVzY2UKKwktLWVvbCBzcGFjZSBjb2FsZXNjZQorCS0tc3BhY2UgY2hhbmdlIGNvYWxlc2NlCisJLSBhbGwgc3BhY2VzIGNvYWxlc2NlCisJIC1hbGwgc3BhIGNlcyBjb2FsZXNjZQorCSAgZW9sIHNwYWNlcyBRCisJICBzcGFjZSAgY2hhbmdlCisJLSBhbGwgc3BhY2VzCisJKyBhbGwgc3BhIGNlcworCUVPRgorCWNvbXBhcmVfZGlmZl9wYXRjaCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgY29tYmluZWQgb3V0cHV0IChpZ25vcmUgYWxsIHNwYWNlcyknICcKKwlnaXQgc2hvdyAtdyA+YWN0dWFsLnRtcCAmJgorCXNlZCAtZSAiMSwvXkBAQC9kIiA8IGFjdHVhbC50bXAgPmFjdHVhbCAmJgorCXRyIC1kIFEgPDwtXEVPRiA+ZXhwZWN0ZWQgJiYKKwktLWFsd2F5cyBjb2FsZXNjZQorCS0tZW9sIHNwYWNlIGNvYWxlc2NlCisJLS1zcGFjZSBjaGFuZ2UgY29hbGVzY2UKKwktLWFsbCBzcGFjZXMgY29hbGVzY2UKKwkgIGVvbCBzcGFjZXMgUQorCSAgc3BhY2UgIGNoYW5nZQorCSAgYWxsIHNwYSBjZXMKKwlFT0YKKwljb21wYXJlX2RpZmZfcGF0Y2ggZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbWJpbmUgZGlmZiBjb2FsZXNjZSBzaW1wbGUnICcKKwk+dGVzdCAmJgorCWdpdCBhZGQgdGVzdCAmJgorCWdpdCBjb21taXQgLW0gaW5pdGlhbCAmJgorCXRlc3Rfc2VxIDQgPnRlc3QgJiYKKwlnaXQgY29tbWl0IC1hIC1tIGVtcHR5MSAmJgorCWdpdCBicmFuY2ggc2lkZTEgJiYKKwlnaXQgY2hlY2tvdXQgSEVBRF4gJiYKKwl0ZXN0X3NlcSA1ID50ZXN0ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBlbXB0eTIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2Ugc2lkZTEgJiYKKwk+dGVzdCAmJgorCWdpdCBjb21taXQgLWEgLW0gbWVyZ2UgJiYKKwlnaXQgc2hvdyA+YWN0dWFsLnRtcCAmJgorCXNlZCAtZSAiMSwvXkBAQC9kIiA8IGFjdHVhbC50bXAgPmFjdHVhbCAmJgorCXRyIC1kIFEgPDwtXEVPRiA+ZXhwZWN0ZWQgJiYKKwktLTEKKwktLTIKKwktLTMKKwktLTQKKwktIDUKKwlFT0YKKwljb21wYXJlX2RpZmZfcGF0Y2ggZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbWJpbmUgZGlmZiBjb2FsZXNjZSB0cmlja3knICcKKwk+dGVzdCAmJgorCWdpdCBhZGQgdGVzdCAmJgorCWdpdCBjb21taXQgLW0gaW5pdGlhbCAtLWFsbG93LWVtcHR5ICYmCisJY2F0IDw8LVxFT0YgPnRlc3QgJiYKKwkzCisJMQorCTIKKwkzCisJNAorCUVPRgorCWdpdCBjb21taXQgLWEgLW0gZW1wdHkxICYmCisJZ2l0IGJyYW5jaCAtZiBzaWRlMSAmJgorCWdpdCBjaGVja291dCBIRUFEXiAmJgorCWNhdCA8PC1cRU9GID50ZXN0ICYmCisJMQorCTMKKwk1CisJNAorCUVPRgorCWdpdCBjb21taXQgLWEgLW0gZW1wdHkyICYmCisJZ2l0IGJyYW5jaCAtZiBzaWRlMiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSBzaWRlMSAmJgorCT50ZXN0ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBtZXJnZSAmJgorCWdpdCBzaG93ID5hY3R1YWwudG1wICYmCisJc2VkIC1lICIxLC9eQEBAL2QiIDwgYWN0dWFsLnRtcCA+YWN0dWFsICYmCisJdHIgLWQgUSA8PC1cRU9GID5leHBlY3RlZCAmJgorCSAtMworCS0tMQorCSAtMgorCS0tMworCS0gNQorCS0tNAorCUVPRgorCWNvbXBhcmVfZGlmZl9wYXRjaCBleHBlY3RlZCBhY3R1YWwgJiYKKwlnaXQgY2hlY2tvdXQgLWYgc2lkZTEgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2Ugc2lkZTIgJiYKKwk+dGVzdCAmJgorCWdpdCBjb21taXQgLWEgLW0gbWVyZ2UgJiYKKwlnaXQgc2hvdyA+YWN0dWFsLnRtcCAmJgorCXNlZCAtZSAiMSwvXkBAQC9kIiA8IGFjdHVhbC50bXAgPmFjdHVhbCAmJgorCXRyIC1kIFEgPDwtXEVPRiA+ZXhwZWN0ZWQgJiYKKwktIDMKKwktLTEKKwktIDIKKwktLTMKKwkgLTUKKwktLTQKKwlFT0YKKwljb21wYXJlX2RpZmZfcGF0Y2ggZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ2NvbWJpbmUgZGlmZiBjb2FsZXNjZSB0aHJlZSBwYXJlbnRzJyAnCisJPnRlc3QgJiYKKwlnaXQgYWRkIHRlc3QgJiYKKwlnaXQgY29tbWl0IC1tIGluaXRpYWwgLS1hbGxvdy1lbXB0eSAmJgorCWNhdCA8PC1cRU9GID50ZXN0ICYmCisJMworCTEKKwkyCisJMworCTQKKwlFT0YKKwlnaXQgY29tbWl0IC1hIC1tIGVtcHR5MSAmJgorCWdpdCBjaGVja291dCAtQiBzaWRlMSAmJgorCWdpdCBjaGVja291dCBIRUFEXiAmJgorCWNhdCA8PC1cRU9GID50ZXN0ICYmCisJMQorCTMKKwk3CisJNQorCTQKKwlFT0YKKwlnaXQgY29tbWl0IC1hIC1tIGVtcHR5MiAmJgorCWdpdCBicmFuY2ggLWYgc2lkZTIgJiYKKwlnaXQgY2hlY2tvdXQgSEVBRF4gJiYKKwljYXQgPDwtXEVPRiA+dGVzdCAmJgorCTMKKwkxCisJNgorCTUKKwk0CisJRU9GCisJZ2l0IGNvbW1pdCAtYSAtbSBlbXB0eTMgJiYKKwk+dGVzdCAmJgorCWdpdCBhZGQgdGVzdCAmJgorCVRSRUU9JChnaXQgd3JpdGUtdHJlZSkgJiYKKwlDT01NSVQ9JChnaXQgY29tbWl0LXRyZWUgLXAgSEVBRCAtcCBzaWRlMSAtcCBzaWRlMiAtbSBtZXJnZSAkVFJFRSkgJiYKKwlnaXQgc2hvdyAkQ09NTUlUID5hY3R1YWwudG1wICYmCisJc2VkIC1lICIxLC9eQEBAL2QiIDwgYWN0dWFsLnRtcCA+YWN0dWFsICYmCisJdHIgLWQgUSA8PC1cRU9GID5leHBlY3RlZCAmJgorCS0tIDMKKwktLS0xCisJLSAgNgorCSAtIDIKKwkgLS0zCisJICAtNworCS0gLTUKKwktLS00CisJRU9GCisJY29tcGFyZV9kaWZmX3BhdGNoIGV4cGVjdGVkIGFjdHVhbAorJworCisjIFRlc3QgZm9yIGEgYnVnIHJlcG9ydGVkIGF0CisjIGh0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dtYW5lLmNvbXAudmVyc2lvbi1jb250cm9sLmdpdC8yMjQ0MTAKKyMgd2hlcmUgYSBkZWxldGUgbGluZXMgd2VyZSBtaXNzaW5nIGZyb20gY29tYmluZWQgZGlmZiBvdXRwdXQgd2hlbiB0aGV5CisjIG9jY3VycmVkIGV4YWN0bHkgYmVmb3JlIHRoZSBjb250ZXh0IGxpbmVzIG9mIGEgbGF0ZXIgY2hhbmdlLgordGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tYmluZSBkaWZmIG1pc3NpbmcgZGVsZXRlIGJ1ZycgJworCWdpdCBjb21taXQgLW0gaW5pdGlhbCAtLWFsbG93LWVtcHR5ICYmCisJY2F0IDw8LVxFT0YgPnRlc3QgJiYKKwkxCisJMgorCTMKKwk0CisJRU9GCisJZ2l0IGFkZCB0ZXN0ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBzaWRlMSAmJgorCWdpdCBjaGVja291dCAtQiBzaWRlMSAmJgorCWdpdCBjaGVja291dCBIRUFEXiAmJgorCWNhdCA8PC1cRU9GID50ZXN0ICYmCisJMAorCTEKKwkyCisJMworCTRtb2RpZmllZAorCUVPRgorCWdpdCBhZGQgdGVzdCAmJgorCWdpdCBjb21taXQgLW0gc2lkZTIgJiYKKwlnaXQgYnJhbmNoIC1mIHNpZGUyICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIC0tbm8tY29tbWl0IHNpZGUxICYmCisJY2F0IDw8LVxFT0YgPnRlc3QgJiYKKwkxCisJMgorCTMKKwk0bW9kaWZpZWQKKwlFT0YKKwlnaXQgYWRkIHRlc3QgJiYKKwlnaXQgY29tbWl0IC1hIC1tIG1lcmdlICYmCisJZ2l0IGRpZmYtdHJlZSAtYyAtcCBIRUFEID5hY3R1YWwudG1wICYmCisJc2VkIC1lICIxLC9eQEBAL2QiIDwgYWN0dWFsLnRtcCA+YWN0dWFsICYmCisJdHIgLWQgUSA8PC1cRU9GID5leHBlY3RlZCAmJgorCS0gMAorCSAgMQorCSAgMgorCSAgMworCSAtNAorCSArNG1vZGlmaWVkCisJRU9GCisJY29tcGFyZV9kaWZmX3BhdGNoIGV4cGVjdGVkIGFjdHVhbAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDQwNDEtZGlmZi1zdWJtb2R1bGUtb3B0aW9uLnNoIGIvdC90NDA0MS1kaWZmLXN1Ym1vZHVsZS1vcHRpb24uc2gKaW5kZXggNmMwMWQwYy4uMzJkNGE2MCAxMDA3NTUKLS0tIGEvdC90NDA0MS1kaWZmLXN1Ym1vZHVsZS1vcHRpb24uc2gKKysrIGIvdC90NDA0MS1kaWZmLXN1Ym1vZHVsZS1vcHRpb24uc2gKQEAgLTExLDE4ICsxMSwxOCBAQAogLiAuL3Rlc3QtbGliLnNoCiAKIGFkZF9maWxlICgpIHsKLQlzbT0kMQotCXNoaWZ0Ci0Jb3dkPSQocHdkKQotCWNkICIkc20iCi0JZm9yIG5hbWU7IGRvCi0JCWVjaG8gIiRuYW1lIiA+ICIkbmFtZSIgJiYKLQkJZ2l0IGFkZCAiJG5hbWUiICYmCi0JCXRlc3RfdGljayAmJgotCQlnaXQgY29tbWl0IC1tICJBZGQgJG5hbWUiCi0JZG9uZSA+L2Rldi9udWxsCi0JZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEIHwgY3V0IC1jMS03Ci0JY2QgIiRvd2QiCisJKAorCQljZCAiJDEiICYmCisJCXNoaWZ0ICYmCisJCWZvciBuYW1lCisJCWRvCisJCQllY2hvICIkbmFtZSIgPiIkbmFtZSIgJiYKKwkJCWdpdCBhZGQgIiRuYW1lIiAmJgorCQkJdGVzdF90aWNrICYmCisJCQlnaXQgY29tbWl0IC1tICJBZGQgJG5hbWUiIHx8IGV4aXQKKwkJZG9uZSA+L2Rldi9udWxsICYmCisJCWdpdCByZXYtcGFyc2UgLS1zaG9ydCAtLXZlcmlmeSBIRUFECisJKQogfQogY29tbWl0X2ZpbGUgKCkgewogCXRlc3RfdGljayAmJgpAQCAtMzMsOTIgKzMzLDEzMyBAQAogYWRkX2ZpbGUgLiBmb28gPi9kZXYvbnVsbAogCiBoZWFkMT0kKGFkZF9maWxlIHNtMSBmb28xIGZvbzIpCitmdWxsaGVhZDE9JChjZCBzbTE7IGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkZWQgc3VibW9kdWxlJyAiCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGRlZCBzdWJtb2R1bGUnICcKIAlnaXQgYWRkIHNtMSAmJgogCWdpdCBkaWZmLWluZGV4IC1wIC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotU3VibW9kdWxlIHNtMSAwMDAwMDAwLi4uJGhlYWQxIChuZXcgc3VibW9kdWxlKQotRU9GCisJU3VibW9kdWxlIHNtMSAwMDAwMDAwLi4uJGhlYWQxIChuZXcgc3VibW9kdWxlKQorCUVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAotIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGRlZCBzdWJtb2R1bGUsIHNldCBkaWZmLnN1Ym1vZHVsZScgJworCWdpdCBjb25maWcgZGlmZi5zdWJtb2R1bGUgbG9nICYmCisJZ2l0IGFkZCBzbTEgJiYKKwlnaXQgZGlmZiAtLWNhY2hlZCA+YWN0dWFsICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwlTdWJtb2R1bGUgc20xIDAwMDAwMDAuLi4kaGVhZDEgKG5ldyBzdWJtb2R1bGUpCisJRU9GCisJZ2l0IGNvbmZpZyAtLXVuc2V0IGRpZmYuc3VibW9kdWxlICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc3VibW9kdWxlPXNob3J0IG92ZXJyaWRlcyBkaWZmLnN1Ym1vZHVsZScgJworCXRlc3RfY29uZmlnIGRpZmYuc3VibW9kdWxlIGxvZyAmJgorCWdpdCBhZGQgc20xICYmCisJZ2l0IGRpZmYgLS1zdWJtb2R1bGU9c2hvcnQgLS1jYWNoZWQgPmFjdHVhbCAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJZGlmZiAtLWdpdCBhL3NtMSBiL3NtMQorCW5ldyBmaWxlIG1vZGUgMTYwMDAwCisJaW5kZXggMDAwMDAwMC4uJGhlYWQxCisJLS0tIC9kZXYvbnVsbAorCSsrKyBiL3NtMQorCUBAIC0wLDAgKzEgQEAKKwkrU3VicHJvamVjdCBjb21taXQgJGZ1bGxoZWFkMQorCUVPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkaWZmLnN1Ym1vZHVsZSBkb2VzIG5vdCBhZmZlY3QgcGx1bWJpbmcnICcKKwl0ZXN0X2NvbmZpZyBkaWZmLnN1Ym1vZHVsZSBsb2cgJiYKKwlnaXQgZGlmZi1pbmRleCAtcCBIRUFEID5hY3R1YWwgJiYKKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCWRpZmYgLS1naXQgYS9zbTEgYi9zbTEKKwluZXcgZmlsZSBtb2RlIDE2MDAwMAorCWluZGV4IDAwMDAwMDAuLiRoZWFkMQorCS0tLSAvZGV2L251bGwKKwkrKysgYi9zbTEKKwlAQCAtMCwwICsxIEBACisJK1N1YnByb2plY3QgY29tbWl0ICRmdWxsaGVhZDEKKwlFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKIAogY29tbWl0X2ZpbGUgc20xICYmCiBoZWFkMj0kKGFkZF9maWxlIHNtMSBmb28zKQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUoZm9yd2FyZCknICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZShmb3J3YXJkKScgJwogCWdpdCBkaWZmLWluZGV4IC1wIC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotU3VibW9kdWxlIHNtMSAkaGVhZDEuLiRoZWFkMjoKLSAgPiBBZGQgZm9vMwotRU9GCisJU3VibW9kdWxlIHNtMSAkaGVhZDEuLiRoZWFkMjoKKwkgID4gQWRkIGZvbzMKKwlFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKLSIKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnbW9kaWZpZWQgc3VibW9kdWxlKGZvcndhcmQpJyAiCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUoZm9yd2FyZCknICcKIAlnaXQgZGlmZiAtLXN1Ym1vZHVsZT1sb2cgPmFjdHVhbCAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCi1TdWJtb2R1bGUgc20xICRoZWFkMS4uJGhlYWQyOgotICA+IEFkZCBmb28zCi1FT0YKKwlTdWJtb2R1bGUgc20xICRoZWFkMS4uJGhlYWQyOgorCSAgPiBBZGQgZm9vMworCUVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAotIgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUoZm9yd2FyZCkgLS1zdWJtb2R1bGUnICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZShmb3J3YXJkKSAtLXN1Ym1vZHVsZScgJwogCWdpdCBkaWZmIC0tc3VibW9kdWxlID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotU3VibW9kdWxlIHNtMSAkaGVhZDEuLiRoZWFkMjoKLSAgPiBBZGQgZm9vMwotRU9GCisJU3VibW9kdWxlIHNtMSAkaGVhZDEuLiRoZWFkMjoKKwkgID4gQWRkIGZvbzMKKwlFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKLSIKKycKIAotZnVsbGhlYWQxPSQoY2Qgc20xOyBnaXQgcmV2LWxpc3QgLS1tYXgtY291bnQ9MSAkaGVhZDEpCi1mdWxsaGVhZDI9JChjZCBzbTE7IGdpdCByZXYtbGlzdCAtLW1heC1jb3VudD0xICRoZWFkMikKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZShmb3J3YXJkKSAtLXN1Ym1vZHVsZT1zaG9ydCcgIgorZnVsbGhlYWQyPSQoY2Qgc20xOyBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUoZm9yd2FyZCkgLS1zdWJtb2R1bGU9c2hvcnQnICcKIAlnaXQgZGlmZiAtLXN1Ym1vZHVsZT1zaG9ydCA+YWN0dWFsICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLWRpZmYgLS1naXQgYS9zbTEgYi9zbTEKLWluZGV4ICRoZWFkMS4uJGhlYWQyIDE2MDAwMAotLS0tIGEvc20xCi0rKysgYi9zbTEKLUBAIC0xICsxIEBACi0tU3VicHJvamVjdCBjb21taXQgJGZ1bGxoZWFkMQotK1N1YnByb2plY3QgY29tbWl0ICRmdWxsaGVhZDIKLUVPRgorCWRpZmYgLS1naXQgYS9zbTEgYi9zbTEKKwlpbmRleCAkaGVhZDEuLiRoZWFkMiAxNjAwMDAKKwktLS0gYS9zbTEKKwkrKysgYi9zbTEKKwlAQCAtMSArMSBAQAorCS1TdWJwcm9qZWN0IGNvbW1pdCAkZnVsbGhlYWQxCisJK1N1YnByb2plY3QgY29tbWl0ICRmdWxsaGVhZDIKKwlFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKLSIKKycKIAogY29tbWl0X2ZpbGUgc20xICYmCiBoZWFkMz0kKAogCWNkIHNtMSAmJgogCWdpdCByZXNldCAtLWhhcmQgSEVBRH4yID4vZGV2L251bGwgJiYKLQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQgfCBjdXQgLWMxLTcKKwlnaXQgcmV2LXBhcnNlIC0tc2hvcnQgLS12ZXJpZnkgSEVBRAogKQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUoYmFja3dhcmQpJyAiCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUoYmFja3dhcmQpJyAnCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1zdWJtb2R1bGU9bG9nIEhFQUQgPmFjdHVhbCAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCi1TdWJtb2R1bGUgc20xICRoZWFkMi4uJGhlYWQzIChyZXdpbmQpOgotICA8IEFkZCBmb28zCi0gIDwgQWRkIGZvbzIKLUVPRgorCVN1Ym1vZHVsZSBzbTEgJGhlYWQyLi4kaGVhZDMgKHJld2luZCk6CisJICA8IEFkZCBmb28zCisJICA8IEFkZCBmb28yCisJRU9GCiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCi0iCisnCiAKLWhlYWQ0PSQoYWRkX2ZpbGUgc20xIGZvbzQgZm9vNSkgJiYKLWhlYWQ0X2Z1bGw9JChHSVRfRElSPXNtMS8uZ2l0IGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZShiYWNrd2FyZCBhbmQgZm9yd2FyZCknICIKK2hlYWQ0PSQoYWRkX2ZpbGUgc20xIGZvbzQgZm9vNSkKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZShiYWNrd2FyZCBhbmQgZm9yd2FyZCknICcKIAlnaXQgZGlmZi1pbmRleCAtcCAtLXN1Ym1vZHVsZT1sb2cgSEVBRCA+YWN0dWFsICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLVN1Ym1vZHVsZSBzbTEgJGhlYWQyLi4uJGhlYWQ0OgotICA+IEFkZCBmb281Ci0gID4gQWRkIGZvbzQKLSAgPCBBZGQgZm9vMwotICA8IEFkZCBmb28yCi1FT0YKKwlTdWJtb2R1bGUgc20xICRoZWFkMi4uLiRoZWFkNDoKKwkgID4gQWRkIGZvbzUKKwkgID4gQWRkIGZvbzQKKwkgIDwgQWRkIGZvbzMKKwkgIDwgQWRkIGZvbzIKKwlFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKLSIKKycKIAogY29tbWl0X2ZpbGUgc20xICYmCiBtdiBzbTEgc20xLWJhayAmJgpAQCAtMTI4LDMxOSArMTY5LDMxOSBAQAogcm0gLWYgc20xICYmCiBtdiBzbTEtYmFrIHNtMQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICd0eXBlY2hhbmdlZCBzdWJtb2R1bGUoc3VibW9kdWxlLT5ibG9iKSwgLS1jYWNoZWQnICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3R5cGVjaGFuZ2VkIHN1Ym1vZHVsZShzdWJtb2R1bGUtPmJsb2IpLCAtLWNhY2hlZCcgJwogCWdpdCBkaWZmIC0tc3VibW9kdWxlPWxvZyAtLWNhY2hlZCA+YWN0dWFsICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLVN1Ym1vZHVsZSBzbTEgNDFmYmVhOS4uLjAwMDAwMDAgKHN1Ym1vZHVsZSBkZWxldGVkKQotZGlmZiAtLWdpdCBhL3NtMSBiL3NtMQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjlkYTVmYjgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NtMQotQEAgLTAsMCArMSBAQAotK3NtMQotRU9GCisJU3VibW9kdWxlIHNtMSAkaGVhZDQuLi4wMDAwMDAwIChzdWJtb2R1bGUgZGVsZXRlZCkKKwlkaWZmIC0tZ2l0IGEvc20xIGIvc20xCisJbmV3IGZpbGUgbW9kZSAxMDA2NDQKKwlpbmRleCAwMDAwMDAwLi4kaGVhZDUKKwktLS0gL2Rldi9udWxsCisJKysrIGIvc20xCisJQEAgLTAsMCArMSBAQAorCStzbTEKKwlFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKLSIKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAndHlwZWNoYW5nZWQgc3VibW9kdWxlKHN1Ym1vZHVsZS0+YmxvYiknICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3R5cGVjaGFuZ2VkIHN1Ym1vZHVsZShzdWJtb2R1bGUtPmJsb2IpJyAnCiAJZ2l0IGRpZmYgLS1zdWJtb2R1bGU9bG9nID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotZGlmZiAtLWdpdCBhL3NtMSBiL3NtMQotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA5ZGE1ZmI4Li4wMDAwMDAwCi0tLS0gYS9zbTEKLSsrKyAvZGV2L251bGwKLUBAIC0xICswLDAgQEAKLS1zbTEKLVN1Ym1vZHVsZSBzbTEgMDAwMDAwMC4uLiRoZWFkNCAobmV3IHN1Ym1vZHVsZSkKLUVPRgorCWRpZmYgLS1naXQgYS9zbTEgYi9zbTEKKwlkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKKwlpbmRleCAkaGVhZDUuLjAwMDAwMDAKKwktLS0gYS9zbTEKKwkrKysgL2Rldi9udWxsCisJQEAgLTEgKzAsMCBAQAorCS1zbTEKKwlTdWJtb2R1bGUgc20xIDAwMDAwMDAuLi4kaGVhZDQgKG5ldyBzdWJtb2R1bGUpCisJRU9GCiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCi0iCisnCiAKIHJtIC1yZiBzbTEgJiYKIGdpdCBjaGVja291dC1pbmRleCBzbTEKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3R5cGVjaGFuZ2VkIHN1Ym1vZHVsZShzdWJtb2R1bGUtPmJsb2IpJyAiCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0eXBlY2hhbmdlZCBzdWJtb2R1bGUoc3VibW9kdWxlLT5ibG9iKScgJwogCWdpdCBkaWZmLWluZGV4IC1wIC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotU3VibW9kdWxlIHNtMSAkaGVhZDQuLi4wMDAwMDAwIChzdWJtb2R1bGUgZGVsZXRlZCkKLWRpZmYgLS1naXQgYS9zbTEgYi9zbTEKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4kaGVhZDUKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NtMQotQEAgLTAsMCArMSBAQAotK3NtMQotRU9GCisJU3VibW9kdWxlIHNtMSAkaGVhZDQuLi4wMDAwMDAwIChzdWJtb2R1bGUgZGVsZXRlZCkKKwlkaWZmIC0tZ2l0IGEvc20xIGIvc20xCisJbmV3IGZpbGUgbW9kZSAxMDA2NDQKKwlpbmRleCAwMDAwMDAwLi4kaGVhZDUKKwktLS0gL2Rldi9udWxsCisJKysrIGIvc20xCisJQEAgLTAsMCArMSBAQAorCStzbTEKKwlFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKLSIKKycKIAogcm0gLWYgc20xICYmCiB0ZXN0X2NyZWF0ZV9yZXBvIHNtMSAmJgogaGVhZDY9JChhZGRfZmlsZSBzbTEgZm9vNiBmb283KQotZnVsbGhlYWQ2PSQoY2Qgc20xOyBnaXQgcmV2LWxpc3QgLS1tYXgtY291bnQ9MSAkaGVhZDYpCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdub25leGlzdGVudCBjb21taXQnICIKK2Z1bGxoZWFkNj0kKGNkIHNtMTsgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKQordGVzdF9leHBlY3Rfc3VjY2VzcyAnbm9uZXhpc3RlbnQgY29tbWl0JyAnCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1zdWJtb2R1bGU9bG9nIEhFQUQgPmFjdHVhbCAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCi1TdWJtb2R1bGUgc20xICRoZWFkNC4uLiRoZWFkNiAoY29tbWl0cyBub3QgcHJlc2VudCkKLUVPRgorCVN1Ym1vZHVsZSBzbTEgJGhlYWQ0Li4uJGhlYWQ2IChjb21taXRzIG5vdCBwcmVzZW50KQorCUVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAotIgorJwogCiBjb21taXRfZmlsZQotdGVzdF9leHBlY3Rfc3VjY2VzcyAndHlwZWNoYW5nZWQgc3VibW9kdWxlKGJsb2ItPnN1Ym1vZHVsZSknICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3R5cGVjaGFuZ2VkIHN1Ym1vZHVsZShibG9iLT5zdWJtb2R1bGUpJyAnCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1zdWJtb2R1bGU9bG9nIEhFQUQgPmFjdHVhbCAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCi1kaWZmIC0tZ2l0IGEvc20xIGIvc20xCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4ICRoZWFkNS4uMDAwMDAwMAotLS0tIGEvc20xCi0rKysgL2Rldi9udWxsCi1AQCAtMSArMCwwIEBACi0tc20xCi1TdWJtb2R1bGUgc20xIDAwMDAwMDAuLi4kaGVhZDYgKG5ldyBzdWJtb2R1bGUpCi1FT0YKKwlkaWZmIC0tZ2l0IGEvc20xIGIvc20xCisJZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CisJaW5kZXggJGhlYWQ1Li4wMDAwMDAwCisJLS0tIGEvc20xCisJKysrIC9kZXYvbnVsbAorCUBAIC0xICswLDAgQEAKKwktc20xCisJU3VibW9kdWxlIHNtMSAwMDAwMDAwLi4uJGhlYWQ2IChuZXcgc3VibW9kdWxlKQorCUVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAotIgorJwogCiBjb21taXRfZmlsZSBzbTEgJiYKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBpcyB1cCB0byBkYXRlJyAiCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgaXMgdXAgdG8gZGF0ZScgJwogCWdpdCBkaWZmLWluZGV4IC1wIC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotRU9GCisJRU9GCiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCi0iCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgY29udGVudCcgIgordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBjb250ZW50JyAnCiAJZWNobyBuZXcgPiBzbTEvbmV3LWZpbGUgJiYKIAlnaXQgZGlmZi1pbmRleCAtcCAtLXN1Ym1vZHVsZT1sb2cgSEVBRCA+YWN0dWFsICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLVN1Ym1vZHVsZSBzbTEgY29udGFpbnMgdW50cmFja2VkIGNvbnRlbnQKLUVPRgorCVN1Ym1vZHVsZSBzbTEgY29udGFpbnMgdW50cmFja2VkIGNvbnRlbnQKKwlFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKLSIKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBjb250ZW50ICh1bnRyYWNrZWQgaWdub3JlZCknICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgY29udGVudCAodW50cmFja2VkIGlnbm9yZWQpJyAnCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1pZ25vcmUtc3VibW9kdWxlcz11bnRyYWNrZWQgLS1zdWJtb2R1bGU9bG9nIEhFQUQgPmFjdHVhbCAmJgogCSEgdGVzdCAtcyBhY3R1YWwKLSIKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBjb250ZW50IChkaXJ0eSBpZ25vcmVkKScgIgordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBjb250ZW50IChkaXJ0eSBpZ25vcmVkKScgJwogCWdpdCBkaWZmLWluZGV4IC1wIC0taWdub3JlLXN1Ym1vZHVsZXM9ZGlydHkgLS1zdWJtb2R1bGU9bG9nIEhFQUQgPmFjdHVhbCAmJgogCSEgdGVzdCAtcyBhY3R1YWwKLSIKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBjb250ZW50IChhbGwgaWdub3JlZCknICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgY29udGVudCAoYWxsIGlnbm9yZWQpJyAnCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1pZ25vcmUtc3VibW9kdWxlcz1hbGwgLS1zdWJtb2R1bGU9bG9nIEhFQUQgPmFjdHVhbCAmJgogCSEgdGVzdCAtcyBhY3R1YWwKLSIKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBhbmQgbW9kaWZlZCBjb250ZW50JyAiCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgY29udGFpbnMgdW50cmFja2VkIGFuZCBtb2RpZmVkIGNvbnRlbnQnICcKIAllY2hvIG5ldyA+IHNtMS9mb282ICYmCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1zdWJtb2R1bGU9bG9nIEhFQUQgPmFjdHVhbCAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCi1TdWJtb2R1bGUgc20xIGNvbnRhaW5zIHVudHJhY2tlZCBjb250ZW50Ci1TdWJtb2R1bGUgc20xIGNvbnRhaW5zIG1vZGlmaWVkIGNvbnRlbnQKLUVPRgorCVN1Ym1vZHVsZSBzbTEgY29udGFpbnMgdW50cmFja2VkIGNvbnRlbnQKKwlTdWJtb2R1bGUgc20xIGNvbnRhaW5zIG1vZGlmaWVkIGNvbnRlbnQKKwlFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKLSIKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBhbmQgbW9kaWZlZCBjb250ZW50ICh1bnRyYWNrZWQgaWdub3JlZCknICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgYW5kIG1vZGlmZWQgY29udGVudCAodW50cmFja2VkIGlnbm9yZWQpJyAnCiAJZWNobyBuZXcgPiBzbTEvZm9vNiAmJgogCWdpdCBkaWZmLWluZGV4IC1wIC0taWdub3JlLXN1Ym1vZHVsZXM9dW50cmFja2VkIC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotU3VibW9kdWxlIHNtMSBjb250YWlucyBtb2RpZmllZCBjb250ZW50Ci1FT0YKKwlTdWJtb2R1bGUgc20xIGNvbnRhaW5zIG1vZGlmaWVkIGNvbnRlbnQKKwlFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKLSIKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBhbmQgbW9kaWZlZCBjb250ZW50IChkaXJ0eSBpZ25vcmVkKScgIgordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBhbmQgbW9kaWZlZCBjb250ZW50IChkaXJ0eSBpZ25vcmVkKScgJwogCWVjaG8gbmV3ID4gc20xL2ZvbzYgJiYKIAlnaXQgZGlmZi1pbmRleCAtcCAtLWlnbm9yZS1zdWJtb2R1bGVzPWRpcnR5IC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAkhIHRlc3QgLXMgYWN0dWFsCi0iCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgYW5kIG1vZGlmZWQgY29udGVudCAoYWxsIGlnbm9yZWQpJyAiCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgY29udGFpbnMgdW50cmFja2VkIGFuZCBtb2RpZmVkIGNvbnRlbnQgKGFsbCBpZ25vcmVkKScgJwogCWVjaG8gbmV3ID4gc20xL2ZvbzYgJiYKIAlnaXQgZGlmZi1pbmRleCAtcCAtLWlnbm9yZS1zdWJtb2R1bGVzIC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAkhIHRlc3QgLXMgYWN0dWFsCi0iCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBjb250YWlucyBtb2RpZmVkIGNvbnRlbnQnICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBjb250YWlucyBtb2RpZmVkIGNvbnRlbnQnICcKIAlybSAtZiBzbTEvbmV3LWZpbGUgJiYKIAlnaXQgZGlmZi1pbmRleCAtcCAtLXN1Ym1vZHVsZT1sb2cgSEVBRCA+YWN0dWFsICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLVN1Ym1vZHVsZSBzbTEgY29udGFpbnMgbW9kaWZpZWQgY29udGVudAotRU9GCisJU3VibW9kdWxlIHNtMSBjb250YWlucyBtb2RpZmllZCBjb250ZW50CisJRU9GCiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCi0iCisnCiAKIChjZCBzbTE7IGdpdCBjb21taXQgLW1jaGFuZ2UgZm9vNiA+L2Rldi9udWxsKSAmJgotaGVhZDg9JChjZCBzbTE7IGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCB8IGN1dCAtYzEtNykgJiYKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBpcyBtb2RpZmllZCcgIgoraGVhZDg9JChjZCBzbTE7IGdpdCByZXYtcGFyc2UgLS1zaG9ydCAtLXZlcmlmeSBIRUFEKSAmJgordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGlzIG1vZGlmaWVkJyAnCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1zdWJtb2R1bGU9bG9nIEhFQUQgPmFjdHVhbCAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCi1TdWJtb2R1bGUgc20xICRoZWFkNi4uJGhlYWQ4OgotICA+IGNoYW5nZQotRU9GCisJU3VibW9kdWxlIHNtMSAkaGVhZDYuLiRoZWFkODoKKwkgID4gY2hhbmdlCisJRU9GCiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCi0iCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgY29udGVudCcgIgordGVzdF9leHBlY3Rfc3VjY2VzcyAnbW9kaWZpZWQgc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBjb250ZW50JyAnCiAJZWNobyBuZXcgPiBzbTEvbmV3LWZpbGUgJiYKIAlnaXQgZGlmZi1pbmRleCAtcCAtLXN1Ym1vZHVsZT1sb2cgSEVBRCA+YWN0dWFsICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLVN1Ym1vZHVsZSBzbTEgY29udGFpbnMgdW50cmFja2VkIGNvbnRlbnQKLVN1Ym1vZHVsZSBzbTEgJGhlYWQ2Li4kaGVhZDg6Ci0gID4gY2hhbmdlCi1FT0YKKwlTdWJtb2R1bGUgc20xIGNvbnRhaW5zIHVudHJhY2tlZCBjb250ZW50CisJU3VibW9kdWxlIHNtMSAkaGVhZDYuLiRoZWFkODoKKwkgID4gY2hhbmdlCisJRU9GCiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCi0iCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgY29udGVudCAodW50cmFja2VkIGlnbm9yZWQpJyAiCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUgY29udGFpbnMgdW50cmFja2VkIGNvbnRlbnQgKHVudHJhY2tlZCBpZ25vcmVkKScgJwogCWdpdCBkaWZmLWluZGV4IC1wIC0taWdub3JlLXN1Ym1vZHVsZXM9dW50cmFja2VkIC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotU3VibW9kdWxlIHNtMSAkaGVhZDYuLiRoZWFkODoKLSAgPiBjaGFuZ2UKLUVPRgorCVN1Ym1vZHVsZSBzbTEgJGhlYWQ2Li4kaGVhZDg6CisJICA+IGNoYW5nZQorCUVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAotIgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUgY29udGFpbnMgdW50cmFja2VkIGNvbnRlbnQgKGRpcnR5IGlnbm9yZWQpJyAiCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUgY29udGFpbnMgdW50cmFja2VkIGNvbnRlbnQgKGRpcnR5IGlnbm9yZWQpJyAnCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1pZ25vcmUtc3VibW9kdWxlcz1kaXJ0eSAtLXN1Ym1vZHVsZT1sb2cgSEVBRCA+YWN0dWFsICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLVN1Ym1vZHVsZSBzbTEgJGhlYWQ2Li4kaGVhZDg6Ci0gID4gY2hhbmdlCi1FT0YKKwlTdWJtb2R1bGUgc20xICRoZWFkNi4uJGhlYWQ4OgorCSAgPiBjaGFuZ2UKKwlFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKLSIKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnbW9kaWZpZWQgc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBjb250ZW50IChhbGwgaWdub3JlZCknICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgY29udGVudCAoYWxsIGlnbm9yZWQpJyAnCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1pZ25vcmUtc3VibW9kdWxlcz1hbGwgLS1zdWJtb2R1bGU9bG9nIEhFQUQgPmFjdHVhbCAmJgogCSEgdGVzdCAtcyBhY3R1YWwKLSIKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnbW9kaWZpZWQgc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBhbmQgbW9kaWZlZCBjb250ZW50JyAiCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUgY29udGFpbnMgdW50cmFja2VkIGFuZCBtb2RpZmVkIGNvbnRlbnQnICcKIAllY2hvIG1vZGlmaWNhdGlvbiA+PiBzbTEvZm9vNiAmJgogCWdpdCBkaWZmLWluZGV4IC1wIC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotU3VibW9kdWxlIHNtMSBjb250YWlucyB1bnRyYWNrZWQgY29udGVudAotU3VibW9kdWxlIHNtMSBjb250YWlucyBtb2RpZmllZCBjb250ZW50Ci1TdWJtb2R1bGUgc20xICRoZWFkNi4uJGhlYWQ4OgotICA+IGNoYW5nZQotRU9GCisJU3VibW9kdWxlIHNtMSBjb250YWlucyB1bnRyYWNrZWQgY29udGVudAorCVN1Ym1vZHVsZSBzbTEgY29udGFpbnMgbW9kaWZpZWQgY29udGVudAorCVN1Ym1vZHVsZSBzbTEgJGhlYWQ2Li4kaGVhZDg6CisJICA+IGNoYW5nZQorCUVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAotIgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUgY29udGFpbnMgdW50cmFja2VkIGFuZCBtb2RpZmVkIGNvbnRlbnQgKHVudHJhY2tlZCBpZ25vcmVkKScgIgordGVzdF9leHBlY3Rfc3VjY2VzcyAnbW9kaWZpZWQgc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBhbmQgbW9kaWZlZCBjb250ZW50ICh1bnRyYWNrZWQgaWdub3JlZCknICcKIAllY2hvIG1vZGlmaWNhdGlvbiA+PiBzbTEvZm9vNiAmJgogCWdpdCBkaWZmLWluZGV4IC1wIC0taWdub3JlLXN1Ym1vZHVsZXM9dW50cmFja2VkIC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotU3VibW9kdWxlIHNtMSBjb250YWlucyBtb2RpZmllZCBjb250ZW50Ci1TdWJtb2R1bGUgc20xICRoZWFkNi4uJGhlYWQ4OgotICA+IGNoYW5nZQotRU9GCisJU3VibW9kdWxlIHNtMSBjb250YWlucyBtb2RpZmllZCBjb250ZW50CisJU3VibW9kdWxlIHNtMSAkaGVhZDYuLiRoZWFkODoKKwkgID4gY2hhbmdlCisJRU9GCiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCi0iCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgYW5kIG1vZGlmZWQgY29udGVudCAoZGlydHkgaWdub3JlZCknICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgYW5kIG1vZGlmZWQgY29udGVudCAoZGlydHkgaWdub3JlZCknICcKIAllY2hvIG1vZGlmaWNhdGlvbiA+PiBzbTEvZm9vNiAmJgogCWdpdCBkaWZmLWluZGV4IC1wIC0taWdub3JlLXN1Ym1vZHVsZXM9ZGlydHkgLS1zdWJtb2R1bGU9bG9nIEhFQUQgPmFjdHVhbCAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCi1TdWJtb2R1bGUgc20xICRoZWFkNi4uJGhlYWQ4OgotICA+IGNoYW5nZQotRU9GCisJU3VibW9kdWxlIHNtMSAkaGVhZDYuLiRoZWFkODoKKwkgID4gY2hhbmdlCisJRU9GCiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCi0iCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgYW5kIG1vZGlmZWQgY29udGVudCAoYWxsIGlnbm9yZWQpJyAiCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUgY29udGFpbnMgdW50cmFja2VkIGFuZCBtb2RpZmVkIGNvbnRlbnQgKGFsbCBpZ25vcmVkKScgJwogCWVjaG8gbW9kaWZpY2F0aW9uID4+IHNtMS9mb282ICYmCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1pZ25vcmUtc3VibW9kdWxlcyAtLXN1Ym1vZHVsZT1sb2cgSEVBRCA+YWN0dWFsICYmCiAJISB0ZXN0IC1zIGFjdHVhbAotIgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUgY29udGFpbnMgbW9kaWZlZCBjb250ZW50JyAiCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUgY29udGFpbnMgbW9kaWZlZCBjb250ZW50JyAnCiAJcm0gLWYgc20xL25ldy1maWxlICYmCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1zdWJtb2R1bGU9bG9nIEhFQUQgPmFjdHVhbCAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCi1TdWJtb2R1bGUgc20xIGNvbnRhaW5zIG1vZGlmaWVkIGNvbnRlbnQKLVN1Ym1vZHVsZSBzbTEgJGhlYWQ2Li4kaGVhZDg6Ci0gID4gY2hhbmdlCi1FT0YKKwlTdWJtb2R1bGUgc20xIGNvbnRhaW5zIG1vZGlmaWVkIGNvbnRlbnQKKwlTdWJtb2R1bGUgc20xICRoZWFkNi4uJGhlYWQ4OgorCSAgPiBjaGFuZ2UKKwlFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKLSIKKycKIAogcm0gLXJmIHNtMQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGVsZXRlZCBzdWJtb2R1bGUnICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RlbGV0ZWQgc3VibW9kdWxlJyAnCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1zdWJtb2R1bGU9bG9nIEhFQUQgPmFjdHVhbCAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCi1TdWJtb2R1bGUgc20xICRoZWFkNi4uLjAwMDAwMDAgKHN1Ym1vZHVsZSBkZWxldGVkKQotRU9GCisJU3VibW9kdWxlIHNtMSAkaGVhZDYuLi4wMDAwMDAwIChzdWJtb2R1bGUgZGVsZXRlZCkKKwlFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKLSIKKycKIAogdGVzdF9jcmVhdGVfcmVwbyBzbTIgJiYKIGhlYWQ3PSQoYWRkX2ZpbGUgc20yIGZvbzggZm9vOSkgJiYKIGdpdCBhZGQgc20yCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ211bHRpcGxlIHN1Ym1vZHVsZXMnICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ211bHRpcGxlIHN1Ym1vZHVsZXMnICcKIAlnaXQgZGlmZi1pbmRleCAtcCAtLXN1Ym1vZHVsZT1sb2cgSEVBRCA+YWN0dWFsICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLVN1Ym1vZHVsZSBzbTEgJGhlYWQ2Li4uMDAwMDAwMCAoc3VibW9kdWxlIGRlbGV0ZWQpCi1TdWJtb2R1bGUgc20yIDAwMDAwMDAuLi4kaGVhZDcgKG5ldyBzdWJtb2R1bGUpCi1FT0YKKwlTdWJtb2R1bGUgc20xICRoZWFkNi4uLjAwMDAwMDAgKHN1Ym1vZHVsZSBkZWxldGVkKQorCVN1Ym1vZHVsZSBzbTIgMDAwMDAwMC4uLiRoZWFkNyAobmV3IHN1Ym1vZHVsZSkKKwlFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKLSIKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAncGF0aCBmaWx0ZXInICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3BhdGggZmlsdGVyJyAnCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1zdWJtb2R1bGU9bG9nIEhFQUQgc20yID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotU3VibW9kdWxlIHNtMiAwMDAwMDAwLi4uJGhlYWQ3IChuZXcgc3VibW9kdWxlKQotRU9GCisJU3VibW9kdWxlIHNtMiAwMDAwMDAwLi4uJGhlYWQ3IChuZXcgc3VibW9kdWxlKQorCUVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAotIgorJwogCiBjb21taXRfZmlsZSBzbTIKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdmVuIGNvbW1pdCcgIgordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l2ZW4gY29tbWl0JyAnCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1zdWJtb2R1bGU9bG9nIEhFQUReID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotU3VibW9kdWxlIHNtMSAkaGVhZDYuLi4wMDAwMDAwIChzdWJtb2R1bGUgZGVsZXRlZCkKLVN1Ym1vZHVsZSBzbTIgMDAwMDAwMC4uLiRoZWFkNyAobmV3IHN1Ym1vZHVsZSkKLUVPRgorCVN1Ym1vZHVsZSBzbTEgJGhlYWQ2Li4uMDAwMDAwMCAoc3VibW9kdWxlIGRlbGV0ZWQpCisJU3VibW9kdWxlIHNtMiAwMDAwMDAwLi4uJGhlYWQ3IChuZXcgc3VibW9kdWxlKQorCUVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAotIgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXZlbiBjb21taXQgLS1zdWJtb2R1bGUnICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdmVuIGNvbW1pdCAtLXN1Ym1vZHVsZScgJwogCWdpdCBkaWZmLWluZGV4IC1wIC0tc3VibW9kdWxlIEhFQUReID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotU3VibW9kdWxlIHNtMSAkaGVhZDYuLi4wMDAwMDAwIChzdWJtb2R1bGUgZGVsZXRlZCkKLVN1Ym1vZHVsZSBzbTIgMDAwMDAwMC4uLiRoZWFkNyAobmV3IHN1Ym1vZHVsZSkKLUVPRgorCVN1Ym1vZHVsZSBzbTEgJGhlYWQ2Li4uMDAwMDAwMCAoc3VibW9kdWxlIGRlbGV0ZWQpCisJU3VibW9kdWxlIHNtMiAwMDAwMDAwLi4uJGhlYWQ3IChuZXcgc3VibW9kdWxlKQorCUVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAotIgorJwogCi1mdWxsaGVhZDc9JChjZCBzbTI7IGdpdCByZXYtbGlzdCAtLW1heC1jb3VudD0xICRoZWFkNykKK2Z1bGxoZWFkNz0kKGNkIHNtMjsgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXZlbiBjb21taXQgLS1zdWJtb2R1bGU9c2hvcnQnICIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdmVuIGNvbW1pdCAtLXN1Ym1vZHVsZT1zaG9ydCcgJwogCWdpdCBkaWZmLWluZGV4IC1wIC0tc3VibW9kdWxlPXNob3J0IEhFQUReID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotZGlmZiAtLWdpdCBhL3NtMSBiL3NtMQotZGVsZXRlZCBmaWxlIG1vZGUgMTYwMDAwCi1pbmRleCAkaGVhZDYuLjAwMDAwMDAKLS0tLSBhL3NtMQotKysrIC9kZXYvbnVsbAotQEAgLTEgKzAsMCBAQAotLVN1YnByb2plY3QgY29tbWl0ICRmdWxsaGVhZDYKLWRpZmYgLS1naXQgYS9zbTIgYi9zbTIKLW5ldyBmaWxlIG1vZGUgMTYwMDAwCi1pbmRleCAwMDAwMDAwLi4kaGVhZDcKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NtMgotQEAgLTAsMCArMSBAQAotK1N1YnByb2plY3QgY29tbWl0ICRmdWxsaGVhZDcKLUVPRgorCWRpZmYgLS1naXQgYS9zbTEgYi9zbTEKKwlkZWxldGVkIGZpbGUgbW9kZSAxNjAwMDAKKwlpbmRleCAkaGVhZDYuLjAwMDAwMDAKKwktLS0gYS9zbTEKKwkrKysgL2Rldi9udWxsCisJQEAgLTEgKzAsMCBAQAorCS1TdWJwcm9qZWN0IGNvbW1pdCAkZnVsbGhlYWQ2CisJZGlmZiAtLWdpdCBhL3NtMiBiL3NtMgorCW5ldyBmaWxlIG1vZGUgMTYwMDAwCisJaW5kZXggMDAwMDAwMC4uJGhlYWQ3CisJLS0tIC9kZXYvbnVsbAorCSsrKyBiL3NtMgorCUBAIC0wLDAgKzEgQEAKKwkrU3VicHJvamVjdCBjb21taXQgJGZ1bGxoZWFkNworCUVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAotIgorJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCAuZ2l0IGZpbGUgZm9yIHNtMicgJwogCShjZCBzbTIgJiYKQEAgLTQ1Miw5ICs0OTMsOSBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZiAtLXN1Ym1vZHVsZSB3aXRoIC5naXQgZmlsZScgJwogCWdpdCBkaWZmIC0tc3VibW9kdWxlIEhFQUReID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotU3VibW9kdWxlIHNtMSAkaGVhZDYuLi4wMDAwMDAwIChzdWJtb2R1bGUgZGVsZXRlZCkKLVN1Ym1vZHVsZSBzbTIgMDAwMDAwMC4uLiRoZWFkNyAobmV3IHN1Ym1vZHVsZSkKLUVPRgorCVN1Ym1vZHVsZSBzbTEgJGhlYWQ2Li4uMDAwMDAwMCAoc3VibW9kdWxlIGRlbGV0ZWQpCisJU3VibW9kdWxlIHNtMiAwMDAwMDAwLi4uJGhlYWQ3IChuZXcgc3VibW9kdWxlKQorCUVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCmRpZmYgLS1naXQgYS90L3Q0MDQyLWRpZmYtdGV4dGNvbnYtY2FjaGluZy5zaCBiL3QvdDQwNDItZGlmZi10ZXh0Y29udi1jYWNoaW5nLnNoCmluZGV4IDkxZjgxOTguLjA0YTQ0ZDUgMTAwNzU1Ci0tLSBhL3QvdDQwNDItZGlmZi10ZXh0Y29udi1jYWNoaW5nLnNoCisrKyBiL3QvdDQwNDItZGlmZi10ZXh0Y29udi1jYWNoaW5nLnNoCkBAIC0xMDYsNCArMTA2LDEyIEBACiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCisjIFRoZSBwb2ludCBoZXJlIGlzIHRvIHRlc3QgdGhhdCB3ZSBjYW4gbG9nIHRoZSBub3RlcyBjYWNoZSBhbmQgc3RpbGwgdXNlIGl0IHRvCisjIHByb2R1Y2UgYSBkaWZmIGxhdGVyIChvbGRlciB2ZXJzaW9ucyBvZiBnaXQgd291bGQgc2VnZmF1bHQgb24gdGhpcykuIEl0J3MKKyMgbXVjaCBtb3JlIGxpa2VseSB0byBjb21lIHVwIGluIHRoZSByZWFsIHdvcmxkIHdpdGggImxvZyAtLWFsbCAtcCIsIGJ1dCB1c2luZworIyAtLW5vLXdhbGsgbGV0cyB1cyByZWxpYWJseSByZXByb2R1Y2UgdGhlIG9yZGVyIG9mIHRyYXZlcnNhbC4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyBub3RlcyBjYWNoZSBhbmQgc3RpbGwgdXNlIGNhY2hlIGZvciAtcCcgJworCWdpdCBsb2cgLS1uby13YWxrIC1wIHJlZnMvbm90ZXMvdGV4dGNvbnYvbWFnaWMgSEVBRAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDQwNDktZGlmZi1zdGF0LWNvdW50LnNoIGIvdC90NDA0OS1kaWZmLXN0YXQtY291bnQuc2gKaW5kZXggYjQxZWI2MS4uNWI1OTRlOCAxMDA3NTUKLS0tIGEvdC90NDA0OS1kaWZmLXN0YXQtY291bnQuc2gKKysrIGIvdC90NDA0OS1kaWZmLXN0YXQtY291bnQuc2gKQEAgLTQsMTkgKzQsNjIgQEAKIHRlc3RfZGVzY3JpcHRpb249J2RpZmYgLS1zdGF0LWNvdW50JwogLiAuL3Rlc3QtbGliLnNoCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKIAk+YSAmJgogCT5iICYmCiAJPmMgJiYKIAk+ZCAmJgogCWdpdCBhZGQgYSBiIGMgZCAmJgotCWNobW9kICt4IGMgZCAmJgorCWdpdCBjb21taXQgLW0gaW5pdGlhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RlLW9ubHkgY2hhbmdlIHNob3cgYXMgYSAwLWxpbmUgY2hhbmdlJyAnCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCXRlc3RfY2htb2QgK3ggYiBkICYmCisJZWNobyBhID5hICYmCisJZWNobyBjID5jICYmCisJY2F0ID5leHBlY3QgPDwtXEVPRgorCSBhIHwgMSArCisJIGIgfCAwCisJIC4uLgorCSA0IGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCUVPRgorCWdpdCBkaWZmIC0tc3RhdCAtLXN0YXQtY291bnQ9MiBIRUFEID5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdiaW5hcnkgY2hhbmdlcyBkbyBub3QgY291bnQgaW4gbGluZXMnICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZWNobyBhID5hICYmCisJZWNobyBjID5jICYmCisJY2F0ICIkVEVTVF9ESVJFQ1RPUlkiL3Rlc3QtYmluYXJ5LTEucG5nID5kICYmCisJY2F0ID5leHBlY3QgPDwtXEVPRgorCSBhIHwgMSArCisJIGMgfCAxICsKKwkgLi4uCisJIDMgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisJRU9GCisJZ2l0IGRpZmYgLS1zdGF0IC0tc3RhdC1jb3VudD0yID5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdleGNsdWRlIHVubWVyZ2VkIGVudHJpZXMgZnJvbSB0b3RhbCBmaWxlIGNvdW50JyAnCisJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWVjaG8gYSA+YSAmJgogCWVjaG8gYiA+YiAmJgorCWdpdCBscy1maWxlcyAtcyBhID54ICYmCisJZ2l0IHJtIC1mIGQgJiYKKwlmb3Igc3RhZ2UgaW4gMSAyIDMKKwlkbworCQlzZWQgLWUgInMvIDAJYS8gJHN0YWdlCWQvIiB4CisJZG9uZSB8CisJZ2l0IHVwZGF0ZS1pbmRleCAtLWluZGV4LWluZm8gJiYKKwllY2hvIGQgPmQgJiYKIAljYXQgPmV4cGVjdCA8PC1cRU9GCiAJIGEgfCAxICsKIAkgYiB8IDEgKwotCSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCSAuLi4KKwkgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKIAlFT0YKIAlnaXQgZGlmZiAtLXN0YXQgLS1zdGF0LWNvdW50PTIgPmFjdHVhbCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCmRpZmYgLS1naXQgYS90L3Q0MDUzLWRpZmYtbm8taW5kZXguc2ggYi90L3Q0MDUzLWRpZmYtbm8taW5kZXguc2gKaW5kZXggNGRjOGM2Ny4uOTc5ZTk4MyAxMDA3NTUKLS0tIGEvdC90NDA1My1kaWZmLW5vLWluZGV4LnNoCisrKyBiL3QvdDQwNTMtZGlmZi1uby1pbmRleC5zaApAQCAtOCw3ICs4LDEyIEBACiAJbWtkaXIgYSAmJgogCW1rZGlyIGIgJiYKIAllY2hvIDEgPmEvMSAmJgotCWVjaG8gMiA+YS8yCisJZWNobyAyID5hLzIgJiYKKwlnaXQgaW5pdCByZXBvICYmCisJZWNobyAxID5yZXBvL2EgJiYKKwlta2RpciAtcCBub24vZ2l0ICYmCisJZWNobyAxID5ub24vZ2l0L2EgJiYKKwllY2hvIDEgPm5vbi9naXQvYgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgZGlmZiAtLW5vLWluZGV4IGRpcmVjdG9yaWVzJyAnCkBAIC0xNiw0ICsyMSwxMiBAQAogCXRlc3QgJD8gPSAxICYmIHRlc3RfbGluZV9jb3VudCA9IDE0IGNudAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgZGlmZiAtLW5vLWluZGV4IHJlbGF0aXZlIHBhdGggb3V0c2lkZSByZXBvJyAnCisJKAorCQljZCByZXBvICYmCisJCXRlc3RfZXhwZWN0X2NvZGUgMCBnaXQgZGlmZiAtLW5vLWluZGV4IGEgLi4vbm9uL2dpdC9hICYmCisJCXRlc3RfZXhwZWN0X2NvZGUgMCBnaXQgZGlmZiAtLW5vLWluZGV4IC4uL25vbi9naXQvYSAuLi9ub24vZ2l0L2IKKwkpCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDA1NC1kaWZmLWJvZ3VzLXRyZWUuc2ggYi90L3Q0MDU0LWRpZmYtYm9ndXMtdHJlZS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wODQzYzg3Ci0tLSAvZGV2L251bGwKKysrIGIvdC90NDA1NC1kaWZmLWJvZ3VzLXRyZWUuc2gKQEAgLTAsMCArMSw4MyBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J3Rlc3QgZGlmZiB3aXRoIGEgYm9ndXMgdHJlZSBjb250YWluaW5nIHRoZSBudWxsIHNoYTEnCisuIC4vdGVzdC1saWIuc2gKKworZW1wdHlfdHJlZT00YjgyNWRjNjQyY2I2ZWI5YTA2MGU1NGJmOGQ2OTI4OGZiZWU0OTA0CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0ZSBib2d1cyB0cmVlJyAnCisJYm9ndXNfdHJlZT0kKAorCQlwcmludGYgIjEwMDY0NCBmb29RUVFRUVFRUVFRUVFRUVFRUVFRUVEiIHwKKwkJcV90b19udWwgfAorCQlnaXQgaGFzaC1vYmplY3QgLXcgLS1zdGRpbiAtdCB0cmVlCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjcmVhdGUgdHJlZSB3aXRoIG1hdGNoaW5nIGZpbGUnICcKKwllY2hvIGJhciA+Zm9vICYmCisJZ2l0IGFkZCBmb28gJiYKKwlnb29kX3RyZWU9JChnaXQgd3JpdGUtdHJlZSkKKwlibG9iPSQoZ2l0IHJldi1wYXJzZSA6Zm9vKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyYXcgZGlmZiBzaG93cyBudWxsIHNoYTEgKGFkZGl0aW9uKScgJworCWVjaG8gIjowMDAwMDAgMTAwNjQ0ICRfejQwICRfejQwIEEJZm9vIiA+ZXhwZWN0ICYmCisJZ2l0IGRpZmYtdHJlZSAkZW1wdHlfdHJlZSAkYm9ndXNfdHJlZSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyYXcgZGlmZiBzaG93cyBudWxsIHNoYTEgKHJlbW92YWwpJyAnCisJZWNobyAiOjEwMDY0NCAwMDAwMDAgJF96NDAgJF96NDAgRAlmb28iID5leHBlY3QgJiYKKwlnaXQgZGlmZi10cmVlICRib2d1c190cmVlICRlbXB0eV90cmVlID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JhdyBkaWZmIHNob3dzIG51bGwgc2hhMSAobW9kaWZpY2F0aW9uKScgJworCWVjaG8gIjoxMDA2NDQgMTAwNjQ0ICRibG9iICRfejQwIE0JZm9vIiA+ZXhwZWN0ICYmCisJZ2l0IGRpZmYtdHJlZSAkZ29vZF90cmVlICRib2d1c190cmVlID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JhdyBkaWZmIHNob3dzIG51bGwgc2hhMSAob3RoZXIgZGlyZWN0aW9uKScgJworCWVjaG8gIjoxMDA2NDQgMTAwNjQ0ICRfejQwICRibG9iIE0JZm9vIiA+ZXhwZWN0ICYmCisJZ2l0IGRpZmYtdHJlZSAkYm9ndXNfdHJlZSAkZ29vZF90cmVlID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JhdyBkaWZmIHNob3dzIG51bGwgc2hhMSAocmV2ZXJzZSknICcKKwllY2hvICI6MTAwNjQ0IDEwMDY0NCAkX3o0MCAkYmxvYiBNCWZvbyIgPmV4cGVjdCAmJgorCWdpdCBkaWZmLXRyZWUgLVIgJGdvb2RfdHJlZSAkYm9ndXNfdHJlZSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyYXcgZGlmZiBzaG93cyBudWxsIHNoYTEgKGluZGV4KScgJworCWVjaG8gIjoxMDA2NDQgMTAwNjQ0ICRfejQwICRibG9iIE0JZm9vIiA+ZXhwZWN0ICYmCisJZ2l0IGRpZmYtaW5kZXggJGJvZ3VzX3RyZWUgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncGF0Y2ggZmFpbHMgZHVlIHRvIGJvZ3VzIHNoYTEgKGFkZGl0aW9uKScgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBkaWZmLXRyZWUgLXAgJGVtcHR5X3RyZWUgJGJvZ3VzX3RyZWUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncGF0Y2ggZmFpbHMgZHVlIHRvIGJvZ3VzIHNoYTEgKHJlbW92YWwpJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGRpZmYtdHJlZSAtcCAkYm9ndXNfdHJlZSAkZW1wdHlfdHJlZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwYXRjaCBmYWlscyBkdWUgdG8gYm9ndXMgc2hhMSAobW9kaWZpY2F0aW9uKScgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBkaWZmLXRyZWUgLXAgJGdvb2RfdHJlZSAkYm9ndXNfdHJlZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwYXRjaCBmYWlscyBkdWUgdG8gYm9ndXMgc2hhMSAob3RoZXIgZGlyZWN0aW9uKScgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBkaWZmLXRyZWUgLXAgJGJvZ3VzX3RyZWUgJGdvb2RfdHJlZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwYXRjaCBmYWlscyBkdWUgdG8gYm9ndXMgc2hhMSAocmV2ZXJzZSknICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgZGlmZi10cmVlIC1SIC1wICRnb29kX3RyZWUgJGJvZ3VzX3RyZWUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncGF0Y2ggZmFpbHMgZHVlIHRvIGJvZ3VzIHNoYTEgKGluZGV4KScgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBkaWZmLWluZGV4IC1wICRib2d1c190cmVlCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDA1NS1kaWZmLWNvbnRleHQuc2ggYi90L3Q0MDU1LWRpZmYtY29udGV4dC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45NzE3MmI0Ci0tLSAvZGV2L251bGwKKysrIGIvdC90NDA1NS1kaWZmLWNvbnRleHQuc2gKQEAgLTAsMCArMSw5MiBAQAorIyEvYmluL3NoCisjCisjIENvcHlyaWdodCAoYykgMjAxMiBNb3ppbGxhIEZvdW5kYXRpb24KKyMKKwordGVzdF9kZXNjcmlwdGlvbj0nZGlmZi5jb250ZXh0IGNvbmZpZ3VyYXRpb24nCisKKy4gLi90ZXN0LWxpYi5zaAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJworCWNhdCA+dGVtcGxhdGUgPDwtXEVPRiAmJgorCWZpcnN0bGluZQorCWIKKwljCisJZAorCWUKKwlmCisJcHJlbGluZQorCVRBUkdFVAorCXBvc3RsaW5lCisJaQorCWoKKwlrCisJbAorCW0KKwluCisJRU9GCisJc2VkICIvVEFSR0VUL2QiID54IDx0ZW1wbGF0ZSAmJgorCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgeCAmJgorCWdpdCBjb21taXQgLW0gaW5pdGlhbCAmJgorCisJc2VkICJzL1RBUkdFVC9BRERFRC8iID54IDx0ZW1wbGF0ZSAmJgorCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgeCAmJgorCWdpdCBjb21taXQgLW0gbmV4dCAmJgorCisJc2VkICJzL1RBUkdFVC9NT0RJRklFRC8iID54IDx0ZW1wbGF0ZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0aGUgZGVmYXVsdCBudW1iZXIgb2YgY29udGV4dCBsaW5lcyBpcyAzJyAnCisJZ2l0IGRpZmYgPm91dHB1dCAmJgorCSEgZ3JlcCAiXiBkIiBvdXRwdXQgJiYKKwlncmVwICJeIGUiIG91dHB1dCAmJgorCWdyZXAgIl4gaiIgb3V0cHV0ICYmCisJISBncmVwICJeIGsiIG91dHB1dAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkaWZmLmNvbnRleHQgaG9ub3JlZCBieSAibG9nIicgJworCWdpdCBsb2cgLTEgLXAgPm91dHB1dCAmJgorCSEgZ3JlcCBmaXJzdGxpbmUgb3V0cHV0ICYmCisJZ2l0IGNvbmZpZyBkaWZmLmNvbnRleHQgOCAmJgorCWdpdCBsb2cgLTEgLXAgPm91dHB1dCAmJgorCWdyZXAgIl4gZmlyc3RsaW5lIiBvdXRwdXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnVGhlIC1VIG9wdGlvbiBvdmVycmlkZXMgZGlmZi5jb250ZXh0JyAnCisJZ2l0IGNvbmZpZyBkaWZmLmNvbnRleHQgOCAmJgorCWdpdCBsb2cgLVU0IC0xID5vdXRwdXQgJiYKKwkhIGdyZXAgIl4gZmlyc3RsaW5lIiBvdXRwdXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZi5jb250ZXh0IGhvbm9yZWQgYnkgImRpZmYiJyAnCisJZ2l0IGNvbmZpZyBkaWZmLmNvbnRleHQgOCAmJgorCWdpdCBkaWZmID5vdXRwdXQgJiYKKwlncmVwICJeIGZpcnN0bGluZSIgb3V0cHV0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3BsdW1iaW5nIG5vdCBhZmZlY3RlZCcgJworCWdpdCBjb25maWcgZGlmZi5jb250ZXh0IDggJiYKKwlnaXQgZGlmZi1maWxlcyAtcCA+b3V0cHV0ICYmCisJISBncmVwICJeIGZpcnN0bGluZSIgb3V0cHV0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vbi1pbnRlZ2VyIGNvbmZpZyBwYXJzaW5nJyAnCisJZ2l0IGNvbmZpZyBkaWZmLmNvbnRleHQgbm8gJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgZGlmZiAyPm91dHB1dCAmJgorCXRlc3RfaTE4bmdyZXAgImJhZCBjb25maWcgdmFsdWUiIG91dHB1dAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICduZWdhdGl2ZSBpbnRlZ2VyIGNvbmZpZyBwYXJzaW5nJyAnCisJZ2l0IGNvbmZpZyBkaWZmLmNvbnRleHQgLTEgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgZGlmZiAyPm91dHB1dCAmJgorCXRlc3RfaTE4bmdyZXAgImJhZCBjb25maWcgZmlsZSIgb3V0cHV0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy1VMCBpcyB2YWxpZCwgc28gaXMgZGlmZi5jb250ZXh0PTAnICcKKwlnaXQgY29uZmlnIGRpZmYuY29udGV4dCAwICYmCisJZ2l0IGRpZmYgPm91dHB1dCAmJgorCWdyZXAgIl4tQURERUQiIG91dHB1dCAmJgorCWdyZXAgIl4rTU9ESUZJRUQiIG91dHB1dAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDQxMDMtYXBwbHktYmluYXJ5LnNoIGIvdC90NDEwMy1hcHBseS1iaW5hcnkuc2gKaW5kZXggZGJiZjU2Yy4uYjFiOTA2YiAxMDA3NTUKLS0tIGEvdC90NDEwMy1hcHBseS1iaW5hcnkuc2gKKysrIGIvdC90NDEwMy1hcHBseS1iaW5hcnkuc2gKQEAgLTgsMzAgKzgsMjggQEAKICcKIC4gLi90ZXN0LWxpYi5zaAogCi0jIHNldHVwCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJworCWNhdCA+ZmlsZTEgPDwtXEVPRiAmJgorCUEgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLgorCUEgdGlueSBsaXR0bGUgcGVuZ3VpbiBydW5zIGFyb3VuZCBpbiBjaXJjbGVzLgorCVRoZXJlIGlzIGEgZmxhZyB3aXRoIExpbnV4IHdyaXR0ZW4gb24gaXQuCisJQSBzbG93IGJsYWNrLWFuZC13aGl0ZSBwYW5kYSBqdXN0IHNpdHMgdGhlcmUsCisJbXVuY2hpbmcgb24gaGlzIGJhbWJvby4KKwlFT0YKKwljYXQgZmlsZTEgPmZpbGUyICYmCisJY2F0IGZpbGUxID5maWxlNCAmJgogCi1jYXQgPmZpbGUxIDw8RU9GCi1BIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4KLUEgdGlueSBsaXR0bGUgcGVuZ3VpbiBydW5zIGFyb3VuZCBpbiBjaXJjbGVzLgotVGhlcmUgaXMgYSBmbGFnIHdpdGggTGludXggd3JpdHRlbiBvbiBpdC4KLUEgc2xvdyBibGFjay1hbmQtd2hpdGUgcGFuZGEganVzdCBzaXRzIHRoZXJlLAotbXVuY2hpbmcgb24gaGlzIGJhbWJvby4KLUVPRgotY2F0IGZpbGUxID5maWxlMgotY2F0IGZpbGUxID5maWxlNAotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgIgogCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgLS1yZW1vdmUgZmlsZTEgZmlsZTIgZmlsZTQgJiYKLQlnaXQgY29tbWl0IC1tICdJbml0aWFsIFZlcnNpb24nIDI+L2Rldi9udWxsICYmCisJZ2l0IGNvbW1pdCAtbSAiSW5pdGlhbCBWZXJzaW9uIiAyPi9kZXYvbnVsbCAmJgogCiAJZ2l0IGNoZWNrb3V0IC1iIGJpbmFyeSAmJgotCXBlcmwgLXBlICd5L3gvXDAwMC8nIDxmaWxlMSA+ZmlsZTMgJiYKKwkiJFBFUkxfUEFUSCIgLXBlICJ5L3gvXDAwMC8iIDxmaWxlMSA+ZmlsZTMgJiYKIAljYXQgZmlsZTMgPmZpbGU0ICYmCiAJZ2l0IGFkZCBmaWxlMiAmJgotCXBlcmwgLXBlICd5L1wwMDAvdi8nIDxmaWxlMyA+ZmlsZTEgJiYKKwkiJFBFUkxfUEFUSCIgLXBlICJ5L1wwMDAvdi8iIDxmaWxlMyA+ZmlsZTEgJiYKIAlybSAtZiBmaWxlMiAmJgogCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgLS1yZW1vdmUgZmlsZTEgZmlsZTIgZmlsZTMgZmlsZTQgJiYKLQlnaXQgY29tbWl0IC1tICdTZWNvbmQgVmVyc2lvbicgJiYKKwlnaXQgY29tbWl0IC1tICJTZWNvbmQgVmVyc2lvbiIgJiYKIAogCWdpdCBkaWZmLXRyZWUgLXAgbWFzdGVyIGJpbmFyeSA+Qi5kaWZmICYmCiAJZ2l0IGRpZmYtdHJlZSAtcCAtQyBtYXN0ZXIgYmluYXJ5ID5DLmRpZmYgJiYKQEAgLTQyLDE3ICs0MCwyNSBAQAogCWdpdCBkaWZmLXRyZWUgLXAgLS1mdWxsLWluZGV4IG1hc3RlciBiaW5hcnkgPkItaW5kZXguZGlmZiAmJgogCWdpdCBkaWZmLXRyZWUgLXAgLUMgLS1mdWxsLWluZGV4IG1hc3RlciBiaW5hcnkgPkMtaW5kZXguZGlmZiAmJgogCisJZ2l0IGRpZmYtdHJlZSAtcCAtLWJpbmFyeSAtLW5vLXByZWZpeCBtYXN0ZXIgYmluYXJ5IC0tIGZpbGUzID5CMC5kaWZmICYmCisKIAlnaXQgaW5pdCBvdGhlci1yZXBvICYmCi0JKGNkIG90aGVyLXJlcG8gJiYKLQkgZ2l0IGZldGNoIC4uIG1hc3RlciAmJgotCSBnaXQgcmVzZXQgLS1oYXJkIEZFVENIX0hFQUQKKwkoCisJCWNkIG90aGVyLXJlcG8gJiYKKwkJZ2l0IGZldGNoIC4uIG1hc3RlciAmJgorCQlnaXQgcmVzZXQgLS1oYXJkIEZFVENIX0hFQUQKIAkpCi0iCisnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXQgYmluYXJ5IGRpZmYgLS0gc2hvdWxkIG5vdCBmYWlsLicgXAogCSdnaXQgY2hlY2tvdXQgbWFzdGVyICYmCiAJIGdpdCBhcHBseSAtLXN0YXQgLS1zdW1tYXJ5IEIuZGlmZicKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdCBiaW5hcnkgLXAwIGRpZmYgLS0gc2hvdWxkIG5vdCBmYWlsLicgJworCSBnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJIGdpdCBhcHBseSAtLXN0YXQgLXAwIEIwLmRpZmYKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdCBiaW5hcnkgZGlmZiAoY29weSkgLS0gc2hvdWxkIG5vdCBmYWlsLicgXAogCSdnaXQgY2hlY2tvdXQgbWFzdGVyICYmCiAJIGdpdCBhcHBseSAtLXN0YXQgLS1zdW1tYXJ5IEMuZGlmZicKQEAgLTE0Myw0ICsxNDksMTAgQEAKIAkgZ2l0IGFwcGx5IC0tYWxsb3ctYmluYXJ5LXJlcGxhY2VtZW50IC0taW5kZXggQ0YuZGlmZiAmJgogCSB0ZXN0IC16ICIkKGdpdCBkaWZmIC0tbmFtZS1zdGF0dXMgYmluYXJ5KSInCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FwcGx5IGJpbmFyeSAtcDAgZGlmZicgJworCWRvX3Jlc2V0ICYmCisJZ2l0IGFwcGx5IC1wMCAtLWluZGV4IEIwLmRpZmYgJiYKKwl0ZXN0IC16ICIkKGdpdCBkaWZmIC0tbmFtZS1zdGF0dXMgYmluYXJ5IC0tIGZpbGUzKSIKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q0MTA4LWFwcGx5LXRocmVld2F5LnNoIGIvdC90NDEwOC1hcHBseS10aHJlZXdheS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mYTVkNGVmCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDEwOC1hcHBseS10aHJlZXdheS5zaApAQCAtMCwwICsxLDE1NyBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBhcHBseSAtLTN3YXknCisKKy4gLi90ZXN0LWxpYi5zaAorCitjcmVhdGVfZmlsZSAoKSB7CisJZm9yIGkKKwlkbworCQllY2hvICIkaSIKKwlkb25lCit9CisKK3Nhbml0aXplX2NvbmZsaWN0ZWRfZGlmZiAoKSB7CisJc2VkIC1lICcKKwkJL15pbmRleCAvZAorCQlzL15cKCtbPD5dWzw+XVs8Pl1bPD5dKlwpIC4qL1wxLworCScKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCisJdGVzdF90aWNrICYmCisJY3JlYXRlX2ZpbGUgPm9uZSAxIDIgMyA0IDUgNiA3ICYmCisJY2F0IG9uZSA+dHdvICYmCisJZ2l0IGFkZCBvbmUgdHdvICYmCisJZ2l0IGNvbW1pdCAtbSBpbml0aWFsICYmCisKKwlnaXQgYnJhbmNoIHNpZGUgJiYKKworCXRlc3RfdGljayAmJgorCWNyZWF0ZV9maWxlID5vbmUgMSB0d28gMyA0IDUgc2l4IDcgJiYKKwljcmVhdGVfZmlsZSA+dHdvIDEgdHdvIDMgNCA1IDYgNyAmJgorCWdpdCBjb21taXQgLWEgLW0gbWFzdGVyICYmCisKKwlnaXQgY2hlY2tvdXQgc2lkZSAmJgorCWNyZWF0ZV9maWxlID5vbmUgMSAyIDMgNCBmaXZlIDYgNyAmJgorCWNyZWF0ZV9maWxlID50d28gMSAyIDMgNCBmaXZlIDYgNyAmJgorCWdpdCBjb21taXQgLWEgLW0gc2lkZSAmJgorCisJZ2l0IGNoZWNrb3V0IG1hc3RlcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhcHBseSB3aXRob3V0IC0tM3dheScgJworCWdpdCBkaWZmIHNpZGVeIHNpZGUgPlAuZGlmZiAmJgorCisJIyBzaG91bGQgZmFpbCB0byBhcHBseQorCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgY2hlY2tvdXQgbWFzdGVyXjAgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgYXBwbHkgLS1pbmRleCBQLmRpZmYgJiYKKwkjIHNob3VsZCBsZWF2ZSB0aGluZ3MgaW50YWN0CisJZ2l0IGRpZmYtZmlsZXMgLS1leGl0LWNvZGUgJiYKKwlnaXQgZGlmZi1pbmRleCAtLWV4aXQtY29kZSAtLWNhY2hlZCBIRUFECisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FwcGx5IHdpdGggLS0zd2F5JyAnCisJIyBNZXJnaW5nIHNpZGUgc2hvdWxkIGJlIHNpbWlsYXIgdG8gYXBwbHlpbmcgdGhpcyBwYXRjaAorCWdpdCBkaWZmIC4uLnNpZGUgPlAuZGlmZiAmJgorCisJIyBUaGUgY29ycmVzcG9uZGluZyBjb25mbGljdGVkIG1lcmdlCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBjaGVja291dCBtYXN0ZXJeMCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSAtLW5vLWNvbW1pdCBzaWRlICYmCisJZ2l0IGxzLWZpbGVzIC1zID5leHBlY3QubHMgJiYKKwlnaXQgZGlmZiBIRUFEIHwgc2FuaXRpemVfY29uZmxpY3RlZF9kaWZmID5leHBlY3QuZGlmZiAmJgorCisJIyBzaG91bGQgZmFpbCB0byBhcHBseQorCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgY2hlY2tvdXQgbWFzdGVyXjAgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgYXBwbHkgLS1pbmRleCAtLTN3YXkgUC5kaWZmICYmCisJZ2l0IGxzLWZpbGVzIC1zID5hY3R1YWwubHMgJiYKKwlnaXQgZGlmZiBIRUFEIHwgc2FuaXRpemVfY29uZmxpY3RlZF9kaWZmID5hY3R1YWwuZGlmZiAmJgorCisJIyBUaGUgcmVzdWx0IHNob3VsZCByZXNlbWJsZSB0aGUgY29ycmVzcG9uZGluZyBtZXJnZQorCXRlc3RfY21wIGV4cGVjdC5scyBhY3R1YWwubHMgJiYKKwl0ZXN0X2NtcCBleHBlY3QuZGlmZiBhY3R1YWwuZGlmZgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhcHBseSB3aXRoIC0tM3dheSB3aXRoIHJlcmVyZSBlbmFibGVkJyAnCisJZ2l0IGNvbmZpZyByZXJlcmUuZW5hYmxlZCB0cnVlICYmCisKKwkjIE1lcmdpbmcgc2lkZSBzaG91bGQgYmUgc2ltaWxhciB0byBhcHBseWluZyB0aGlzIHBhdGNoCisJZ2l0IGRpZmYgLi4uc2lkZSA+UC5kaWZmICYmCisKKwkjIFRoZSBjb3JyZXNwb25kaW5nIGNvbmZsaWN0ZWQgbWVyZ2UKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGNoZWNrb3V0IG1hc3Rlcl4wICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIC0tbm8tY29tbWl0IHNpZGUgJiYKKworCSMgTWFudWFsbHkgcmVzb2x2ZSBhbmQgcmVjb3JkIHRoZSByZXNvbHV0aW9uCisJY3JlYXRlX2ZpbGUgMSB0d28gMyA0IGZpdmUgc2l4IDcgPm9uZSAmJgorCWdpdCByZXJlcmUgJiYKKwljYXQgb25lID5leHBlY3QgJiYKKworCSMgc2hvdWxkIGZhaWwgdG8gYXBwbHkKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGNoZWNrb3V0IG1hc3Rlcl4wICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFwcGx5IC0taW5kZXggLS0zd2F5IFAuZGlmZiAmJgorCisJIyBidXQgcmVyZXJlIHNob3VsZCBoYXZlIHJlcGxheWVkIHRoZSByZWNvcmRlZCByZXNvbHV0aW9uCisJdGVzdF9jbXAgZXhwZWN0IG9uZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhcHBseSAtMyB3aXRoIGFkZC9hZGQgY29uZmxpY3Qgc2V0dXAnICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisKKwlnaXQgY2hlY2tvdXQgLWIgYWRkZXIgJiYKKwljcmVhdGVfZmlsZSAxIDIgMyA0IDUgNiA3ID50aHJlZSAmJgorCWNyZWF0ZV9maWxlIDEgMiAzIDQgNSA2IDcgPmZvdXIgJiYKKwlnaXQgYWRkIHRocmVlIGZvdXIgJiYKKwlnaXQgY29tbWl0IC1tICJhZGQgdGhyZWUgYW5kIGZvdXIiICYmCisKKwlnaXQgY2hlY2tvdXQgLWIgYW5vdGhlciBhZGRlcl4gJiYKKwljcmVhdGVfZmlsZSAxIDIgMyA0IDUgNiA3ID50aHJlZSAmJgorCWNyZWF0ZV9maWxlIDEgMiAzIGZvdXIgNSA2IDcgPmZvdXIgJiYKKwlnaXQgYWRkIHRocmVlIGZvdXIgJiYKKwlnaXQgY29tbWl0IC1tICJhZGQgdGhyZWUgYW5kIGZvdXIiICYmCisKKwkjIE1lcmdpbmcgYW5vdGhlciBzaG91bGQgYmUgc2ltaWxhciB0byBhcHBseWluZyB0aGlzIHBhdGNoCisJZ2l0IGRpZmYgYWRkZXIuLi5hbm90aGVyID5QLmRpZmYgJiYKKworCWdpdCBjaGVja291dCBhZGRlcl4wICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIC0tbm8tY29tbWl0IGFub3RoZXIgJiYKKwlnaXQgbHMtZmlsZXMgLXMgPmV4cGVjdC5scyAmJgorCWdpdCBkaWZmIEhFQUQgfCBzYW5pdGl6ZV9jb25mbGljdGVkX2RpZmYgPmV4cGVjdC5kaWZmCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FwcGx5IC0zIHdpdGggYWRkL2FkZCBjb25mbGljdCcgJworCSMgc2hvdWxkIGZhaWwgdG8gYXBwbHkgLi4uCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBjaGVja291dCBhZGRlcl4wICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFwcGx5IC0taW5kZXggLS0zd2F5IFAuZGlmZiAmJgorCSMgLi4uIGFuZCBsZWF2ZSBjb25mbGljdHMgaW4gdGhlIGluZGV4IGFuZCBpbiB0aGUgd29ya2luZyB0cmVlCisJZ2l0IGxzLWZpbGVzIC1zID5hY3R1YWwubHMgJiYKKwlnaXQgZGlmZiBIRUFEIHwgc2FuaXRpemVfY29uZmxpY3RlZF9kaWZmID5hY3R1YWwuZGlmZiAmJgorCisJIyBUaGUgcmVzdWx0IHNob3VsZCByZXNlbWJsZSB0aGUgY29ycmVzcG9uZGluZyBtZXJnZQorCXRlc3RfY21wIGV4cGVjdC5scyBhY3R1YWwubHMgJiYKKwl0ZXN0X2NtcCBleHBlY3QuZGlmZiBhY3R1YWwuZGlmZgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhcHBseSAtMyB3aXRoIGFkZC9hZGQgY29uZmxpY3QgKGRpcnR5IHdvcmtpbmcgdHJlZSknICcKKwkjIHNob3VsZCBmYWlsIHRvIGFwcGx5IC4uLgorCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgY2hlY2tvdXQgYWRkZXJeMCAmJgorCWVjaG8gPj5mb3VyICYmCisJY2F0IGZvdXIgPmZvdXIuc2F2ZSAmJgorCWNhdCB0aHJlZSA+dGhyZWUuc2F2ZSAmJgorCWdpdCBscy1maWxlcyAtcyA+ZXhwZWN0LmxzICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFwcGx5IC0taW5kZXggLS0zd2F5IFAuZGlmZiAmJgorCSMgLi4uIGFuZCBzaG91bGQgbm90IHRvdWNoIGFueXRoaW5nCisJZ2l0IGxzLWZpbGVzIC1zID5hY3R1YWwubHMgJiYKKwl0ZXN0X2NtcCBleHBlY3QubHMgYWN0dWFsLmxzICYmCisJdGVzdF9jbXAgZm91ci5zYXZlIGZvdXIgJiYKKwl0ZXN0X2NtcCB0aHJlZS5zYXZlIHRocmVlCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDExNi1hcHBseS1yZXZlcnNlLnNoIGIvdC90NDExNi1hcHBseS1yZXZlcnNlLnNoCmluZGV4IDIyOThlY2UuLmZjYTgxNTMgMTAwNzU1Ci0tLSBhL3QvdDQxMTYtYXBwbHktcmV2ZXJzZS5zaAorKysgYi90L3Q0MTE2LWFwcGx5LXJldmVyc2Uuc2gKQEAgLTEyLDE0ICsxMiwxNCBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCiAKIAlmb3IgaSBpbiBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG47IGRvIGVjaG8gJGk7IGRvbmUgPmZpbGUxICYmCi0JcGVybCAtcGUgInkvaWprL1xcMDAwXFwwMDFcXDAwMi8iIDxmaWxlMSA+ZmlsZTIgJiYKKwkiJFBFUkxfUEFUSCIgLXBlICJ5L2lqay9cXDAwMFxcMDAxXFwwMDIvIiA8ZmlsZTEgPmZpbGUyICYmCiAKIAlnaXQgYWRkIGZpbGUxIGZpbGUyICYmCiAJZ2l0IGNvbW1pdCAtbSBpbml0aWFsICYmCiAJZ2l0IHRhZyBpbml0aWFsICYmCiAKIAlmb3IgaSBpbiBhIGIgYyBnIGggaSBKIEsgTCBtIG8gbiBwIHE7IGRvIGVjaG8gJGk7IGRvbmUgPmZpbGUxICYmCi0JcGVybCAtcGUgInkvbW9uL1xcMDAwXFwwMDFcXDAwMi8iIDxmaWxlMSA+ZmlsZTIgJiYKKwkiJFBFUkxfUEFUSCIgLXBlICJ5L21vbi9cXDAwMFxcMDAxXFwwMDIvIiA8ZmlsZTEgPmZpbGUyICYmCiAKIAlnaXQgY29tbWl0IC1hIC1tIHNlY29uZCAmJgogCWdpdCB0YWcgc2Vjb25kICYmCmRpZmYgLS1naXQgYS90L3Q0MTE3LWFwcGx5LXJlamVjdC5zaCBiL3QvdDQxMTctYXBwbHktcmVqZWN0LnNoCmluZGV4IGU5Y2NkMTYuLjhlMTVlY2IgMTAwNzU1Ci0tLSBhL3QvdDQxMTctYXBwbHktcmVqZWN0LnNoCisrKyBiL3QvdDQxMTctYXBwbHktcmVqZWN0LnNoCkBAIC00Niw2ICs0NiwxNCBAQAogCWNhdCBmaWxlMSA+c2F2ZWQuZmlsZTEKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnYXBwbHkgLS1yZWplY3QgaXMgaW5jb21wYXRpYmxlIHdpdGggLS0zd2F5JyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJjYXQgc2F2ZWQuZmlsZTEgPmZpbGUxIiAmJgorCWdpdCBkaWZmID5wYXRjaC4wICYmCisJZ2l0IGNoZWNrb3V0IGZpbGUxICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFwcGx5IC0tcmVqZWN0IC0tM3dheSBwYXRjaC4wICYmCisJZ2l0IGRpZmYgLS1leGl0LWNvZGUKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYXBwbHkgd2l0aG91dCAtLXJlamVjdCBzaG91bGQgZmFpbCcgJwogCiAJaWYgZ2l0IGFwcGx5IHBhdGNoLjEKZGlmZiAtLWdpdCBhL3QvdDQxMjAtYXBwbHktcG9wdC5zaCBiL3QvdDQxMjAtYXBwbHktcG9wdC5zaAppbmRleCBhMzNkNTEwLi5jNWZlY2RmIDEwMDc1NQotLS0gYS90L3Q0MTIwLWFwcGx5LXBvcHQuc2gKKysrIGIvdC90NDEyMC1hcHBseS1wb3B0LnNoCkBAIC0zMiw3ICszMiw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhcHBseSB3aXRoIHRvbyBsYXJnZSAtcCcgJwogCWNwIGZpbGUxLnNhdmVkIGZpbGUxICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFwcGx5IC0tc3RhdCAtcDMgcGF0Y2guZmlsZSAyPmVyciAmJgotCWdyZXAgInJlbW92aW5nIDMgbGVhZGluZyIgZXJyCisJdGVzdF9pMThuZ3JlcCAicmVtb3ZpbmcgMyBsZWFkaW5nIiBlcnIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYXBwbHkgKC1wMikgdHJhZGl0aW9uYWwgZGlmZiB3aXRoIGZ1bm55IGZpbGVuYW1lcycgJwpAQCAtNTQsNyArNTQsNyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYXBwbHkgd2l0aCB0b28gbGFyZ2UgLXAgYW5kIGZhbmN5IGZpbGVuYW1lJyAnCiAJY3AgZmlsZTEuc2F2ZWQgZmlsZTEgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgYXBwbHkgLS1zdGF0IC1wMyBwYXRjaC5lc2NhcGVkIDI+ZXJyICYmCi0JZ3JlcCAicmVtb3ZpbmcgMyBsZWFkaW5nIiBlcnIKKwl0ZXN0X2kxOG5ncmVwICJyZW1vdmluZyAzIGxlYWRpbmciIGVycgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhcHBseSAoLXAyKSBkaWZmLCBtb2RlIGNoYW5nZSBvbmx5JyAnCmRpZmYgLS1naXQgYS90L3Q0MTI0LWFwcGx5LXdzLXJ1bGUuc2ggYi90L3Q0MTI0LWFwcGx5LXdzLXJ1bGUuc2gKaW5kZXggNmY2ZWU4OC4uNWQwYzU5OCAxMDA3NTUKLS0tIGEvdC90NDEyNC1hcHBseS13cy1ydWxlLnNoCisrKyBiL3QvdDQxMjQtYXBwbHktd3MtcnVsZS5zaApAQCAtNDcsNyArNDcsNyBAQAogCSMgZmluZCB0b3VjaGVkIGxpbmVzCiAJJERJRkYgZmlsZSB0YXJnZXQgfCBzZWQgLW4gLWUgInMvXj4gLy9wIiA+Zml4ZWQKIAotCSMgdGhlIGNoYW5nZWQgbGluZXMgYXJlIGFsbCBleHBlY2VkIHRvIGNoYW5nZQorCSMgdGhlIGNoYW5nZWQgbGluZXMgYXJlIGFsbCBleHBlY3RlZCB0byBjaGFuZ2UKIAlmaXhlZF9jbnQ9JCh3YyAtbCA8Zml4ZWQpCiAJY2FzZSAiJDEiIGluCiAJJycpIGV4cGVjdF9jbnQ9JGZpeGVkX2NudCA7OwpAQCAtNDg2LDQgKzQ4NiwzMCBAQAogCXRlc3RfY21wIG9uZSBleHBlY3QKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnd2hpdGVzcGFjZT1maXggdG8gZXhwYW5kJyAnCisJcXpfdG9fdGFiX3NwYWNlID5wcmVpbWFnZSA8PC1cRU9GICYmCisJUVFhCisJUVFiCisJUVFjCisJWlpaWlpaWlpaWlpaWlpaWmQKKwlRUWUKKwlRUWYKKwlRUWcKKwlFT0YKKwlxel90b190YWJfc3BhY2UgPnBhdGNoIDw8LVxFT0YgJiYKKwlkaWZmIC0tZ2l0IGEvcHJlaW1hZ2UgYi9wcmVpbWFnZQorCS0tLSBhL3ByZWltYWdlCisJKysrIGIvcHJlaW1hZ2UKKwlAQCAtMSw3ICsxLDYgQEAKKwkgUVFhCisJIFFRYgorCSBRUWMKKwktUVFkCisJIFFRZQorCSBRUWYKKwkgUVFnCisJRU9GCisJZ2l0IC1jIGNvcmUud2hpdGVzcGFjZT10YWItaW4taW5kZW50IGFwcGx5IC0td2hpdGVzcGFjZT1maXggcGF0Y2gKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q0MTMzLWFwcGx5LWZpbGVuYW1lcy5zaCBiL3QvdDQxMzMtYXBwbHktZmlsZW5hbWVzLnNoCmluZGV4IDk0ZGE5OTAuLjJlY2I0MjEgMTAwNzU1Ci0tLSBhL3QvdDQxMzMtYXBwbHktZmlsZW5hbWVzLnNoCisrKyBiL3QvdDQxMzMtYXBwbHktZmlsZW5hbWVzLnNoCkBAIC0zMCw5ICszMCw5IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FwcGx5IGRpZmYgd2l0aCBpbmNvbnNpc3RlbnQgZmlsZW5hbWVzIGluIGhlYWRlcnMnICcKIAl0ZXN0X211c3RfZmFpbCBnaXQgYXBwbHkgYmFkMS5wYXRjaCAyPmVyciAmJgotCWdyZXAgImluY29uc2lzdGVudCBuZXcgZmlsZW5hbWUiIGVyciAmJgorCXRlc3RfaTE4bmdyZXAgImluY29uc2lzdGVudCBuZXcgZmlsZW5hbWUiIGVyciAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBhcHBseSBiYWQyLnBhdGNoIDI+ZXJyICYmCi0JZ3JlcCAiaW5jb25zaXN0ZW50IG9sZCBmaWxlbmFtZSIgZXJyCisJdGVzdF9pMThuZ3JlcCAiaW5jb25zaXN0ZW50IG9sZCBmaWxlbmFtZSIgZXJyCiAnCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDE1MC1hbS5zaCBiL3QvdDQxNTAtYW0uc2gKaW5kZXggY2RhZmQ3ZS4uMTJmNmIwMiAxMDA3NTUKLS0tIGEvdC90NDE1MC1hbS5zaAorKysgYi90L3Q0MTUwLWFtLnNoCkBAIC0xNyw3ICsxNyw3IEBACiAJdmVybyBlb3MgZXQgYWNjdXNhbSBldCBqdXN0byBkdW8gZG9sb3JlcyBldCBlYSByZWJ1bS4KIAogCUVPRgotCXFfdG9fdGFiIDw8LVxFT0YgPj5tc2cgJiYKKwlxel90b190YWJfc3BhY2UgPDwtXEVPRiA+Pm1zZyAmJgogCVFEdWlzIGF1dGVtIHZlbCBldW0gaXJpdXJlIGRvbG9yIGluIGhlbmRyZXJpdCBpbiB2dWxwdXRhdGUgdmVsaXQKIAlRZXNzZSBtb2xlc3RpZSBjb25zZXF1YXQsIHZlbCBpbGx1bSBkb2xvcmUgZXUgZmV1Z2lhdCBudWxsYSBmYWNpbGlzaXMKIAlRYXQgdmVybyBlcm9zIGV0IGFjY3Vtc2FuIGV0IGl1c3RvIG9kaW8gZGlnbmlzc2ltIHF1aSBibGFuZGl0CmRpZmYgLS1naXQgYS90L3Q0MjAwLXJlcmVyZS5zaCBiL3QvdDQyMDAtcmVyZXJlLnNoCmluZGV4IDM2MjU1ZDYuLjdmNjY2NmYgMTAwNzU1Ci0tLSBhL3QvdDQyMDAtcmVyZXJlLnNoCisrKyBiL3QvdDQyMDAtcmVyZXJlLnNoCkBAIC03OCw3ICs3OCw3IEBACiAJdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldCByZXJlcmUuZW5hYmxlZCAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSBmaXJzdCAmJgogCi0Jc2hhMT0kKHBlcmwgLXBlICJzLwkuKi8vIiAuZ2l0L01FUkdFX1JSKSAmJgorCXNoYTE9JCgiJFBFUkxfUEFUSCIgLXBlICJzLwkuKi8vIiAuZ2l0L01FUkdFX1JSKSAmJgogCXJyPS5naXQvcnItY2FjaGUvJHNoYTEgJiYKIAlncmVwICJePT09PT09PVwkIiAkcnIvcHJlaW1hZ2UgJiYKIAkhIHRlc3QgLWYgJHJyL3Bvc3RpbWFnZSAmJgpAQCAtOTEsNyArOTEsNyBAQAogCWdpdCByZXNldCAtLWhhcmQgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgZmlyc3QgJiYKIAotCXNoYTE9JChwZXJsIC1wZSAicy8JLiovLyIgLmdpdC9NRVJHRV9SUikgJiYKKwlzaGExPSQoIiRQRVJMX1BBVEgiIC1wZSAicy8JLiovLyIgLmdpdC9NRVJHRV9SUikgJiYKIAlycj0uZ2l0L3JyLWNhY2hlLyRzaGExICYmCiAJZ3JlcCBePT09PT09PSQgJHJyL3ByZWltYWdlCiAnCkBAIC0xMDEsNyArMTAxLDcgQEAKIAlnaXQgY29uZmlnIHJlcmVyZS5lbmFibGVkIHRydWUgJiYKIAlnaXQgcmVzZXQgLS1oYXJkICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIGZpcnN0ICYmCi0Jc2hhMT0kKHBlcmwgLXBlICJzLwkuKi8vIiAuZ2l0L01FUkdFX1JSKSAmJgorCXNoYTE9JCgiJFBFUkxfUEFUSCIgLXBlICJzLwkuKi8vIiAuZ2l0L01FUkdFX1JSKSAmJgogCXJyPS5naXQvcnItY2FjaGUvJHNoYTEKICcKIApAQCAtMTg1LDcgKzE4NSw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlcmVyZSBjbGVhcicgJwogCXJtICRyci9wb3N0aW1hZ2UgJiYKLQllY2hvICIkc2hhMQlhMSIgfCBwZXJsIC1wZSAieS9cMDEyL1wwMDAvIiA+LmdpdC9NRVJHRV9SUiAmJgorCWVjaG8gIiRzaGExCWExIiB8ICIkUEVSTF9QQVRIIiAtcGUgInkvXDAxMi9cMDAwLyIgPi5naXQvTUVSR0VfUlIgJiYKIAlnaXQgcmVyZXJlIGNsZWFyICYmCiAJISB0ZXN0IC1kICRycgogJwpAQCAtMzgyLDEzICszODIsMTMgQEAKIAlnaXQgdXBkYXRlLWluZGV4IC0taW5kZXgtaW5mbyA8ZmFpbGVkbWVyZ2UgJiYKIAljcCBmaWxlMy5jb25mbGljdCBmaWxlMyAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZXJlcmUgLS1uby1uby1yZXJlcmUtYXV0b3VwZGF0ZSAyPmVyciAmJgotCWdyZXAgW1V1XXNhZ2UgZXJyICYmCisJdGVzdF9pMThuZ3JlcCBbVXVdc2FnZSBlcnIgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgdXBkYXRlLWluZGV4IC0tcmVmcmVzaAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXJlcmUgLWgnICcKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmVyZXJlIC1oID5oZWxwICYmCi0JZ3JlcCBbVXVdc2FnZSBoZWxwCisJdGVzdF9pMThuZ3JlcCBbVXVdc2FnZSBoZWxwCiAnCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDIwMS1zaG9ydGxvZy5zaCBiL3QvdDQyMDEtc2hvcnRsb2cuc2gKaW5kZXggNjg3MmJhMS4uNTQ5MzUwMCAxMDA3NTUKLS0tIGEvdC90NDIwMS1zaG9ydGxvZy5zaAorKysgYi90L3Q0MjAxLXNob3J0bG9nLnNoCkBAIC0xMjAsNiArMTIwLDMwIEBACiAJdGVzdF9jbXAgZXhwZWN0IG91dAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyBzaG91bGQgYWRkIG5ld2xpbmUgd2hlbiBpbnB1dCBsaW5lIG1hdGNoZXMgd3JhcGxlbicgJworCWNhdCA+ZXhwZWN0IDw8XEVPRiAmJgorQSBVIFRob3IgKDIpOgorICAgICAgYmJiYmJiYmJiYmJiYmJiYmJiOiBiYmJiYmJiYiBiYmIgYmJiYiBiYmJiYmJiIGJiIGJiYmIgYmJiIGJiYmJiIGJiYmJiYgorICAgICAgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYTogYWFhYWFhIGFhYWFhYWFhYWEgYWFhYSBhYWFhYWFhYSBhYSBhYWFhIGFhIGFhYQorCitFT0YKKwlnaXQgc2hvcnRsb2cgLXcgPm91dCA8PFxFT0YgJiYKK2NvbW1pdCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxCitBdXRob3I6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CitEYXRlOiAgIFRodSBBcHIgNyAxNToxNDoxMyAyMDA1IC0wNzAwCisKKyAgICBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhOiBhYWFhYWEgYWFhYWFhYWFhYSBhYWFhIGFhYWFhYWFhIGFhIGFhYWEgYWEgYWFhCisKK2NvbW1pdCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyCitBdXRob3I6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CitEYXRlOiAgIFRodSBBcHIgNyAxNToxNDoxMyAyMDA1IC0wNzAwCisKKyAgICBiYmJiYmJiYmJiYmJiYmJiYmI6IGJiYmJiYmJiIGJiYiBiYmJiIGJiYmJiYmIgYmIgYmJiYiBiYmIgYmJiYmIgYmJiYmJiCisKK0VPRgorCXRlc3RfY21wIGV4cGVjdCBvdXQKKycKKwogaWNvbnZmcm9tdXRmOHRvaXNvODg1OTEoKSB7CiAJcHJpbnRmICIlcyIgIiQqIiB8IGljb252IC1mIFVURi04IC10IElTTzg4NTktMQogfQpkaWZmIC0tZ2l0IGEvdC90NDIwMi1sb2cuc2ggYi90L3Q0MjAyLWxvZy5zaAppbmRleCA3MWJlNTlkLi5jYjAzZDI4IDEwMDc1NQotLS0gYS90L3Q0MjAyLWxvZy5zaAorKysgYi90L3Q0MjAyLWxvZy5zaApAQCAtNzIsOSArNzIsOSBAQAogICBjb21taXQuCiBFT0YKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0ICV3KDEyLDEsMiknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdCAldygxMSwxLDIpJyAnCiAKLQlnaXQgbG9nIC0yIC0tZm9ybWF0PSIldygxMiwxLDIpVGhpcyBpcyB0aGUgJXMgY29tbWl0LiIgPiBhY3R1YWwgJiYKKwlnaXQgbG9nIC0yIC0tZm9ybWF0PSIldygxMSwxLDIpVGhpcyBpcyB0aGUgJXMgY29tbWl0LiIgPiBhY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKQEAgLTE3OCwxMSArMTc4LDIxIEBACiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgbG9nIC0tbm8td2Fsaz1zb3J0ZWQgPGNvbW1pdHM+IHNvcnRzIGJ5IGNvbW1pdCB0aW1lJyAnCisJZ2l0IGxvZyAtLW5vLXdhbGs9c29ydGVkIC0tb25lbGluZSA1ZDMxMTU5IDgwNGE3ODcgMzk0ZWY3OCA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwogY2F0ID4gZXhwZWN0IDw8IEVPRgogNWQzMTE1OSBmb3VydGgKIDgwNGE3ODcgc2l4dGgKIDM5NGVmNzggZmlmdGgKIEVPRgordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGxvZyAtLW5vLXdhbGs9dW5zb3J0ZWQgPGNvbW1pdHM+IGxlYXZlcyBsaXN0IG9mIGNvbW1pdHMgYXMgZ2l2ZW4nICcKKwlnaXQgbG9nIC0tbm8td2Fsaz11bnNvcnRlZCAtLW9uZWxpbmUgNWQzMTE1OSA4MDRhNzg3IDM5NGVmNzggPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBzaG93IDxjb21taXRzPiBsZWF2ZXMgbGlzdCBvZiBjb21taXRzIGFzIGdpdmVuJyAnCiAJZ2l0IHNob3cgLS1vbmVsaW5lIC1zIDVkMzExNTkgODA0YTc4NyAzOTRlZjc4ID4gYWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbApAQCAtMjIwLDYgKzIzMCwxMiBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIC1GIC1FIC0tZ3JlcD08ZXJlPiB1c2VzIGVyZScgJworCWVjaG8gc2Vjb25kID5leHBlY3QgJiYKKwlnaXQgbG9nIC0xIC0tcHJldHR5PSJ0Zm9ybWF0OiVzIiAtRiAtRSAtLWdyZXA9cy5jLm5kID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKIGNhdCA+IGV4cGVjdCA8PEVPRgogKiBTZWNvbmQKICogc2l4dGgKQEAgLTI2NCw2ICsyODAsMTYgQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtLXJhdyAtLWdyYXBoIC1tIHdpdGggbWVyZ2UnICcKKwlnaXQgbG9nIC0tcmF3IC0tZ3JhcGggLS1vbmVsaW5lIC1tIG1hc3RlciB8IGhlYWQgLW4gNTAwID5hY3R1YWwgJiYKKwlncmVwICJpbml0aWFsIiBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZi10cmVlIC0tZ3JhcGgnICcKKwlnaXQgZGlmZi10cmVlIC0tZ3JhcGggbWFzdGVyXiB8IGhlYWQgLW4gNTAwID5hY3R1YWwgJiYKKwlncmVwICJvbmUiIGFjdHVhbAorJworCiBjYXQgPiBleHBlY3QgPDxcRU9GCiAqICAgY29tbWl0IG1hc3RlcgogfFwgIE1lcmdlOiBBIEIKQEAgLTM5Myw4ICs0MTksNiBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cuZGVjb3JhdGUgY29uZmlndXJhdGlvbicgJwotCXRlc3RfbWlnaHRfZmFpbCBnaXQgY29uZmlnIC0tdW5zZXQtYWxsIGxvZy5kZWNvcmF0ZSAmJgotCiAJZ2l0IGxvZyAtLW9uZWxpbmUgPmV4cGVjdC5ub25lICYmCiAJZ2l0IGxvZyAtLW9uZWxpbmUgLS1kZWNvcmF0ZSA+ZXhwZWN0LnNob3J0ICYmCiAJZ2l0IGxvZyAtLW9uZWxpbmUgLS1kZWNvcmF0ZT1mdWxsID5leHBlY3QuZnVsbCAmJgpAQCAtNDAzLDggKzQyNyw3IEBACiAJZ2l0IGxvZyAtLW9uZWxpbmUgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdC5zaG9ydCBhY3R1YWwgJiYKIAotCWdpdCBjb25maWcgLS11bnNldC1hbGwgbG9nLmRlY29yYXRlICYmCi0JZ2l0IGNvbmZpZyBsb2cuZGVjb3JhdGUgdHJ1ZSAmJgorCXRlc3RfY29uZmlnIGxvZy5kZWNvcmF0ZSB0cnVlICYmCiAJZ2l0IGxvZyAtLW9uZWxpbmUgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdC5zaG9ydCBhY3R1YWwgJiYKIAlnaXQgbG9nIC0tb25lbGluZSAtLWRlY29yYXRlPWZ1bGwgPmFjdHVhbCAmJgpAQCAtNDEyLDggKzQzNSw3IEBACiAJZ2l0IGxvZyAtLW9uZWxpbmUgLS1kZWNvcmF0ZT1ubyA+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0Lm5vbmUgYWN0dWFsICYmCiAKLQlnaXQgY29uZmlnIC0tdW5zZXQtYWxsIGxvZy5kZWNvcmF0ZSAmJgotCWdpdCBjb25maWcgbG9nLmRlY29yYXRlIG5vICYmCisJdGVzdF9jb25maWcgbG9nLmRlY29yYXRlIG5vICYmCiAJZ2l0IGxvZyAtLW9uZWxpbmUgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdC5ub25lIGFjdHVhbCAmJgogCWdpdCBsb2cgLS1vbmVsaW5lIC0tZGVjb3JhdGUgPmFjdHVhbCAmJgpAQCAtNDIxLDggKzQ0Myw3IEBACiAJZ2l0IGxvZyAtLW9uZWxpbmUgLS1kZWNvcmF0ZT1mdWxsID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QuZnVsbCBhY3R1YWwgJiYKIAotCWdpdCBjb25maWcgLS11bnNldC1hbGwgbG9nLmRlY29yYXRlICYmCi0JZ2l0IGNvbmZpZyBsb2cuZGVjb3JhdGUgMSAmJgorCXRlc3RfY29uZmlnIGxvZy5kZWNvcmF0ZSAxICYmCiAJZ2l0IGxvZyAtLW9uZWxpbmUgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdC5zaG9ydCBhY3R1YWwgJiYKIAlnaXQgbG9nIC0tb25lbGluZSAtLWRlY29yYXRlPWZ1bGwgPmFjdHVhbCAmJgpAQCAtNDMwLDggKzQ1MSw3IEBACiAJZ2l0IGxvZyAtLW9uZWxpbmUgLS1kZWNvcmF0ZT1ubyA+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0Lm5vbmUgYWN0dWFsICYmCiAKLQlnaXQgY29uZmlnIC0tdW5zZXQtYWxsIGxvZy5kZWNvcmF0ZSAmJgotCWdpdCBjb25maWcgbG9nLmRlY29yYXRlIHNob3J0ICYmCisJdGVzdF9jb25maWcgbG9nLmRlY29yYXRlIHNob3J0ICYmCiAJZ2l0IGxvZyAtLW9uZWxpbmUgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdC5zaG9ydCBhY3R1YWwgJiYKIAlnaXQgbG9nIC0tb25lbGluZSAtLW5vLWRlY29yYXRlID5hY3R1YWwgJiYKQEAgLTQzOSw4ICs0NTksNyBAQAogCWdpdCBsb2cgLS1vbmVsaW5lIC0tZGVjb3JhdGU9ZnVsbCA+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0LmZ1bGwgYWN0dWFsICYmCiAKLQlnaXQgY29uZmlnIC0tdW5zZXQtYWxsIGxvZy5kZWNvcmF0ZSAmJgotCWdpdCBjb25maWcgbG9nLmRlY29yYXRlIGZ1bGwgJiYKKwl0ZXN0X2NvbmZpZyBsb2cuZGVjb3JhdGUgZnVsbCAmJgogCWdpdCBsb2cgLS1vbmVsaW5lID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QuZnVsbCBhY3R1YWwgJiYKIAlnaXQgbG9nIC0tb25lbGluZSAtLW5vLWRlY29yYXRlID5hY3R1YWwgJiYKQEAgLTQ0OCwxNiArNDY3LDE1IEBACiAJZ2l0IGxvZyAtLW9uZWxpbmUgLS1kZWNvcmF0ZSA+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0LnNob3J0IGFjdHVhbAogCi0JZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBsb2cuZGVjb3JhdGUgJiYKKwl0ZXN0X3VuY29uZmlnIGxvZy5kZWNvcmF0ZSAmJgogCWdpdCBsb2cgLS1wcmV0dHk9cmF3ID5leHBlY3QucmF3ICYmCi0JZ2l0IGNvbmZpZyBsb2cuZGVjb3JhdGUgZnVsbCAmJgorCXRlc3RfY29uZmlnIGxvZy5kZWNvcmF0ZSBmdWxsICYmCiAJZ2l0IGxvZyAtLXByZXR0eT1yYXcgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdC5yYXcgYWN0dWFsCiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmVmbG9nIGlzIGV4cGVjdGVkIGZvcm1hdCcgJwotCXRlc3RfbWlnaHRfZmFpbCBnaXQgY29uZmlnIC0tcmVtb3ZlLXNlY3Rpb24gbG9nICYmCiAJZ2l0IGxvZyAtZyAtLWFiYnJldi1jb21taXQgLS1wcmV0dHk9b25lbGluZSA+ZXhwZWN0ICYmCiAJZ2l0IHJlZmxvZyA+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbApAQCAtNDcwLDEwICs0ODgsNiBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cuYWJicmV2Q29tbWl0IGNvbmZpZ3VyYXRpb24nICcKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjb25maWcgLS11bnNldCBsb2cuYWJicmV2Q29tbWl0IiAmJgotCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldCBsb2cuYWJicmV2Q29tbWl0ICYmCi0KIAlnaXQgbG9nIC0tYWJicmV2LWNvbW1pdCA+ZXhwZWN0LmxvZy5hYmJyZXYgJiYKIAlnaXQgbG9nIC0tbm8tYWJicmV2LWNvbW1pdCA+ZXhwZWN0LmxvZy5mdWxsICYmCiAJZ2l0IGxvZyAtLXByZXR0eT1yYXcgPmV4cGVjdC5sb2cucmF3ICYmCkBAIC00ODIsNyArNDk2LDcgQEAKIAlnaXQgd2hhdGNoYW5nZWQgLS1hYmJyZXYtY29tbWl0ID5leHBlY3Qud2hhdGNoYW5nZWQuYWJicmV2ICYmCiAJZ2l0IHdoYXRjaGFuZ2VkIC0tbm8tYWJicmV2LWNvbW1pdCA+ZXhwZWN0LndoYXRjaGFuZ2VkLmZ1bGwgJiYKIAotCWdpdCBjb25maWcgbG9nLmFiYnJldkNvbW1pdCB0cnVlICYmCisJdGVzdF9jb25maWcgbG9nLmFiYnJldkNvbW1pdCB0cnVlICYmCiAKIAlnaXQgbG9nID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QubG9nLmFiYnJldiBhY3R1YWwgJiYKQEAgLTUxNiw2ICs1MzAsMjAgQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBsb2cgLWMgLS1mb2xsb3cnICcKKwl0ZXN0X2NyZWF0ZV9yZXBvIGZvbGxvdy1jICYmCisJKAorCQljZCBmb2xsb3ctYyAmJgorCQl0ZXN0X2NvbW1pdCBpbml0aWFsIGZpbGUgb3JpZ2luYWwgJiYKKwkJZ2l0IHJtIGZpbGUgJiYKKwkJdGVzdF9jb21taXQgcmVuYW1lIGZpbGUyIG9yaWdpbmFsICYmCisJCWdpdCByZXNldCAtLWhhcmQgaW5pdGlhbCAmJgorCQl0ZXN0X2NvbW1pdCBtb2RpZnkgZmlsZSBmb28gJiYKKwkJZ2l0IG1lcmdlIC1tIG1lcmdlIHJlbmFtZSAmJgorCQlnaXQgbG9nIC1jIC0tZm9sbG93IGZpbGUyCisJKQorJworCiBjYXQgPmV4cGVjdCA8PFxFT0YKICogICBjb21taXQgQ09NTUlUX09CSkVDVF9OQU1FCiB8XCAgTWVyZ2U6IE1FUkdFX1BBUkVOVFMKQEAgLTgwMyw3ICs4MzEsMTQgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtLWdyYXBoIHdpdGggZGlmZiBhbmQgc3RhdHMnICcKIAlnaXQgbG9nIC0tZ3JhcGggLS1wcmV0dHk9c2hvcnQgLS1zdGF0IC1wID5hY3R1YWwgJiYKIAlzYW5pdGl6ZV9vdXRwdXQgPmFjdHVhbC5zYW5pdGl6ZWQgPGFjdHVhbCAmJgotCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwuc2FuaXRpemVkCisJdGVzdF9pMThuY21wIGV4cGVjdCBhY3R1YWwuc2FuaXRpemVkCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RvdGRvdCBpcyBhIHBhcmVudCBkaXJlY3RvcnknICcKKwlta2RpciAtcCBhL2IgJiYKKwkoIGVjaG8gc2l4dGggJiYgZWNobyBmaWZ0aCApID5leHBlY3QgJiYKKwkoIGNkIGEvYiAmJiBnaXQgbG9nIC0tZm9ybWF0PSVzIC4uICkgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q0MjAzLW1haWxtYXAuc2ggYi90L3Q0MjAzLW1haWxtYXAuc2gKaW5kZXggMWYxODJmNi4uODQyYjc1NCAxMDA3NTUKLS0tIGEvdC90NDIwMy1tYWlsbWFwLnNoCisrKyBiL3QvdDQyMDMtbWFpbG1hcC5zaApAQCAtMTQ5LDYgKzE0OSwxMDQgQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIG1haWxtYXAgYmxvYiB0ZXN0cycgJworCWdpdCBjaGVja291dCAtYiBtYXAgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjaGVja291dCBtYXN0ZXIiICYmCisJY2F0ID5qdXN0LWJ1Z3MgPDwtXEVPRiAmJgorCUJsb2IgR3V5IDxidWdzQGNvbXBhbnkueHg+CisJRU9GCisJY2F0ID5ib3RoIDw8LVxFT0YgJiYKKwlCbG9iIEd1eSA8YXV0aG9yQGV4YW1wbGUuY29tPgorCUJsb2IgR3V5IDxidWdzQGNvbXBhbnkueHg+CisJRU9GCisJZ2l0IGFkZCBqdXN0LWJ1Z3MgYm90aCAmJgorCWdpdCBjb21taXQgLW0gIm15IG1haWxtYXBzIiAmJgorCWVjaG8gIlJlcG8gR3V5IDxhdXRob3JAZXhhbXBsZS5jb20+IiA+Lm1haWxtYXAgJiYKKwllY2hvICJJbnRlcm5hbCBHdXkgPGF1dGhvckBleGFtcGxlLmNvbT4iID5pbnRlcm5hbC5tYXAKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWFpbG1hcC5ibG9iIHNldCcgJworCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwlCbG9iIEd1eSAoMSk6CisJICAgICAgc2Vjb25kCisKKwlSZXBvIEd1eSAoMSk6CisJICAgICAgaW5pdGlhbAorCisJRU9GCisJZ2l0IC1jIG1haWxtYXAuYmxvYj1tYXA6anVzdC1idWdzIHNob3J0bG9nIEhFQUQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWFpbG1hcC5ibG9iIG92ZXJyaWRlcyAubWFpbG1hcCcgJworCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwlCbG9iIEd1eSAoMik6CisJICAgICAgaW5pdGlhbAorCSAgICAgIHNlY29uZAorCisJRU9GCisJZ2l0IC1jIG1haWxtYXAuYmxvYj1tYXA6Ym90aCBzaG9ydGxvZyBIRUFEID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21haWxtYXAuZmlsZSBvdmVycmlkZXMgbWFpbG1hcC5ibG9iJyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCUJsb2IgR3V5ICgxKToKKwkgICAgICBzZWNvbmQKKworCUludGVybmFsIEd1eSAoMSk6CisJICAgICAgaW5pdGlhbAorCisJRU9GCisJZ2l0IFwKKwkgIC1jIG1haWxtYXAuYmxvYj1tYXA6Ym90aCBcCisJICAtYyBtYWlsbWFwLmZpbGU9aW50ZXJuYWwubWFwIFwKKwkgIHNob3J0bG9nIEhFQUQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWFpbG1hcC5ibG9iIGNhbiBiZSBtaXNzaW5nJyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCVJlcG8gR3V5ICgxKToKKwkgICAgICBpbml0aWFsCisKKwluaWNrMSAoMSk6CisJICAgICAgc2Vjb25kCisKKwlFT0YKKwlnaXQgLWMgbWFpbG1hcC5ibG9iPW1hcDpub25leGlzdGVudCBzaG9ydGxvZyBIRUFEID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21haWxtYXAuYmxvYiBkZWZhdWx0cyB0byBvZmYgaW4gbm9uLWJhcmUgcmVwbycgJworCWdpdCBpbml0IG5vbi1iYXJlICYmCisJKAorCQljZCBub24tYmFyZSAmJgorCQl0ZXN0X2NvbW1pdCBvbmUgLm1haWxtYXAgIkZha2UgTmFtZSA8YXV0aG9yQGV4YW1wbGUuY29tPiIgJiYKKwkJZWNobyAiICAgICAxCUZha2UgTmFtZSIgPmV4cGVjdCAmJgorCQlnaXQgc2hvcnRsb2cgLW5zIEhFQUQgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisJCXJtIC5tYWlsbWFwICYmCisJCWVjaG8gIiAgICAgMQlBIFUgVGhvciIgPmV4cGVjdCAmJgorCQlnaXQgc2hvcnRsb2cgLW5zIEhFQUQgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtYWlsbWFwLmJsb2IgZGVmYXVsdHMgdG8gSEVBRDoubWFpbG1hcCBpbiBiYXJlIHJlcG8nICcKKwlnaXQgY2xvbmUgLS1iYXJlIG5vbi1iYXJlIGJhcmUgJiYKKwkoCisJCWNkIGJhcmUgJiYKKwkJZWNobyAiICAgICAxCUZha2UgTmFtZSIgPmV4cGVjdCAmJgorCQlnaXQgc2hvcnRsb2cgLW5zIEhFQUQgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGFmdGVyIG1haWxtYXAuYmxvYiB0ZXN0cycgJworCXJtIC1mIC5tYWlsbWFwCisnCisKICMgRXh0ZW5kZWQgbWFpbG1hcCBjb25maWd1cmF0aW9ucyBzaG91bGQgZ2l2ZSB1cyB0aGUgZm9sbG93aW5nIG91dHB1dCBmb3Igc2hvcnRsb2cKIGNhdCA+ZXhwZWN0IDw8XEVPRgogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4gKDEpOgpAQCAtMjM5LDYgKzMzNyw2MiBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAorY2F0ID5leHBlY3QgPDxcRU9GCitBdXRob3I6IENUTyA8Y3RvQGNvbXBhbnkueHg+CitBdXRob3I6IFNhbnRhIENsYXVzIDxzYW50YS5jbGF1c0Bub3J0aHBvbGUueHg+CitBdXRob3I6IFNhbnRhIENsYXVzIDxzYW50YS5jbGF1c0Bub3J0aHBvbGUueHg+CitBdXRob3I6IE90aGVyIEF1dGhvciA8b3RoZXJAYXV0aG9yLnh4PgorQXV0aG9yOiBPdGhlciBBdXRob3IgPG90aGVyQGF1dGhvci54eD4KK0F1dGhvcjogU29tZSBEdWRlIDxzb21lQGR1ZGUueHg+CitBdXRob3I6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnTG9nIG91dHB1dCB3aXRoIC0tdXNlLW1haWxtYXAnICcKKwlnaXQgbG9nIC0tdXNlLW1haWxtYXAgfCBncmVwIEF1dGhvciA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCitjYXQgPmV4cGVjdCA8PFxFT0YKK0F1dGhvcjogQ1RPIDxjdG9AY29tcGFueS54eD4KK0F1dGhvcjogU2FudGEgQ2xhdXMgPHNhbnRhLmNsYXVzQG5vcnRocG9sZS54eD4KK0F1dGhvcjogU2FudGEgQ2xhdXMgPHNhbnRhLmNsYXVzQG5vcnRocG9sZS54eD4KK0F1dGhvcjogT3RoZXIgQXV0aG9yIDxvdGhlckBhdXRob3IueHg+CitBdXRob3I6IE90aGVyIEF1dGhvciA8b3RoZXJAYXV0aG9yLnh4PgorQXV0aG9yOiBTb21lIER1ZGUgPHNvbWVAZHVkZS54eD4KK0F1dGhvcjogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdMb2cgb3V0cHV0IHdpdGggbG9nLm1haWxtYXAnICcKKwlnaXQgLWMgbG9nLm1haWxtYXA9VHJ1ZSBsb2cgfCBncmVwIEF1dGhvciA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCitjYXQgPmV4cGVjdCA8PFxFT0YKK0F1dGhvcjogU2FudGEgQ2xhdXMgPHNhbnRhLmNsYXVzQG5vcnRocG9sZS54eD4KK0F1dGhvcjogU2FudGEgQ2xhdXMgPHNhbnRhLmNsYXVzQG5vcnRocG9sZS54eD4KK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdHcmVwIGF1dGhvciB3aXRoIC0tdXNlLW1haWxtYXAnICcKKwlnaXQgbG9nIC0tdXNlLW1haWxtYXAgLS1hdXRob3IgU2FudGEgfCBncmVwIEF1dGhvciA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworY2F0ID5leHBlY3QgPDxcRU9GCitBdXRob3I6IFNhbnRhIENsYXVzIDxzYW50YS5jbGF1c0Bub3J0aHBvbGUueHg+CitBdXRob3I6IFNhbnRhIENsYXVzIDxzYW50YS5jbGF1c0Bub3J0aHBvbGUueHg+CitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnR3JlcCBhdXRob3Igd2l0aCBsb2cubWFpbG1hcCcgJworCWdpdCAtYyBsb2cubWFpbG1hcD1UcnVlIGxvZyAtLWF1dGhvciBTYW50YSB8IGdyZXAgQXV0aG9yID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKKz5leHBlY3QKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnT25seSBncmVwIHJlcGxhY2VkIGF1dGhvciB3aXRoIC0tdXNlLW1haWxtYXAnICcKKwlnaXQgbG9nIC0tdXNlLW1haWxtYXAgLS1hdXRob3IgIjxjdG9AY29vbXBhbnkueHg+IiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCiAjIGdpdCBibGFtZQogY2F0ID5leHBlY3QgPDxcRU9GCiBeT0JKSSAoQSBVIFRob3IgICAgIERBVEUgMSkgb25lCmRpZmYgLS1naXQgYS90L3Q0MjA1LWxvZy1wcmV0dHktZm9ybWF0cy5zaCBiL3QvdDQyMDUtbG9nLXByZXR0eS1mb3JtYXRzLnNoCmluZGV4IDRhZmQ3NzguLjI2ZmJmZGUgMTAwNzU1Ci0tLSBhL3QvdDQyMDUtbG9nLXByZXR0eS1mb3JtYXRzLnNoCisrKyBiL3QvdDQyMDUtbG9nLXByZXR0eS1mb3JtYXRzLnNoCkBAIC04NSwxNyArODUsMTkyIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ05VTCBzZXBhcmF0aW9uIHdpdGggLS1zdGF0JyAnCiAJc3RhdDBfcGFydD0kKGdpdCBkaWZmIC0tc3RhdCBIRUFEXiBIRUFEKSAmJgotCXN0YXQxX3BhcnQ9JChnaXQgZGlmZiAtLXN0YXQgLS1yb290IEhFQUReKSAmJgorCXN0YXQxX3BhcnQ9JChnaXQgZGlmZi10cmVlIC0tbm8tY29tbWl0LWlkIC0tc3RhdCAtLXJvb3QgSEVBRF4pICYmCiAJcHJpbnRmICJhZGQgYmFyXG4kc3RhdDBfcGFydFxuXDBpbml0aWFsXG4kc3RhdDFfcGFydFxuIiA+ZXhwZWN0ZWQgJiYKIAlnaXQgbG9nIC16IC0tc3RhdCAtLXByZXR0eT0iZm9ybWF0OiVzIiA+YWN0dWFsICYmCi0JdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCiB0ZXN0X2V4cGVjdF9mYWlsdXJlICdOVUwgdGVybWluYXRpb24gd2l0aCAtLXN0YXQnICcKIAlzdGF0MF9wYXJ0PSQoZ2l0IGRpZmYgLS1zdGF0IEhFQUReIEhFQUQpICYmCi0Jc3RhdDFfcGFydD0kKGdpdCBkaWZmIC0tc3RhdCAtLXJvb3QgSEVBRF4pICYmCisJc3RhdDFfcGFydD0kKGdpdCBkaWZmLXRyZWUgLS1uby1jb21taXQtaWQgLS1zdGF0IC0tcm9vdCBIRUFEXikgJiYKIAlwcmludGYgImFkZCBiYXJcbiRzdGF0MF9wYXJ0XG5cMGluaXRpYWxcbiRzdGF0MV9wYXJ0XG5cMCIgPmV4cGVjdGVkICYmCiAJZ2l0IGxvZyAteiAtLXN0YXQgLS1wcmV0dHk9InRmb3JtYXQ6JXMiID5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIG1vcmUgY29tbWl0cycgJworCXRlc3RfY29tbWl0ICJtZXNzYWdlIG9uZSIgb25lIG9uZSBtZXNzYWdlLW9uZSAmJgorCXRlc3RfY29tbWl0ICJtZXNzYWdlIHR3byIgdHdvIHR3byBtZXNzYWdlLXR3bworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsZWZ0IGFsaWdubWVudCBmb3JtYXR0aW5nJyAnCisJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiU8KDQwKSVzIiA+YWN0dWFsICYmCisJIyBjb21wbGV0ZSB0aGUgaW5jb21wbGV0ZSBsaW5lIGF0IHRoZSBlbmQKKwllY2hvID4+YWN0dWFsICYmCisJcXpfdG9fdGFiX3NwYWNlIDw8XEVPRiA+ZXhwZWN0ZWQgJiYKK21lc3NhZ2UgdHdvICAgICAgICAgICAgICAgICAgICAgICAgICAgIFoKK21lc3NhZ2Ugb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIFoKK2FkZCBiYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFoKK2luaXRpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFoKK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsZWZ0IGFsaWdubWVudCBmb3JtYXR0aW5nIGF0IHRoZSBudGggY29sdW1uJyAnCisJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiVoICU8fCg0MCklcyIgPmFjdHVhbCAmJgorCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCisJZWNobyA+PmFjdHVhbCAmJgorCXF6X3RvX3RhYl9zcGFjZSA8PFxFT0YgPmV4cGVjdGVkICYmCitmYTMzYWIxIG1lc3NhZ2UgdHdvICAgICAgICAgICAgICAgICAgICBaCis3Y2Q2YzYzIG1lc3NhZ2Ugb25lICAgICAgICAgICAgICAgICAgICBaCisxNzExYmY5IGFkZCBiYXIgICAgICAgICAgICAgICAgICAgICAgICBaCithZjIwYzA2IGluaXRpYWwgICAgICAgICAgICAgICAgICAgICAgICBaCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbGVmdCBhbGlnbm1lbnQgZm9ybWF0dGluZyB3aXRoIG5vIHBhZGRpbmcnICcKKwlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JTwoMSklcyIgPmFjdHVhbCAmJgorCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCisJZWNobyA+PmFjdHVhbCAmJgorCWNhdCA8PFxFT0YgPmV4cGVjdGVkICYmCittZXNzYWdlIHR3bworbWVzc2FnZSBvbmUKK2FkZCBiYXIKK2luaXRpYWwKK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsZWZ0IGFsaWdubWVudCBmb3JtYXR0aW5nIHdpdGggdHJ1bmMnICcKKwlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JTwoMTAsdHJ1bmMpJXMiID5hY3R1YWwgJiYKKwkjIGNvbXBsZXRlIHRoZSBpbmNvbXBsZXRlIGxpbmUgYXQgdGhlIGVuZAorCWVjaG8gPj5hY3R1YWwgJiYKKwlxel90b190YWJfc3BhY2UgPDxcRU9GID5leHBlY3RlZCAmJgorbWVzc2FnZSAuLgorbWVzc2FnZSAuLgorYWRkIGJhciAgWgoraW5pdGlhbCAgWgorRU9GCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xlZnQgYWxpZ25tZW50IGZvcm1hdHRpbmcgd2l0aCBsdHJ1bmMnICcKKwlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JTwoMTAsbHRydW5jKSVzIiA+YWN0dWFsICYmCisJIyBjb21wbGV0ZSB0aGUgaW5jb21wbGV0ZSBsaW5lIGF0IHRoZSBlbmQKKwllY2hvID4+YWN0dWFsICYmCisJcXpfdG9fdGFiX3NwYWNlIDw8XEVPRiA+ZXhwZWN0ZWQgJiYKKy4uc2FnZSB0d28KKy4uc2FnZSBvbmUKK2FkZCBiYXIgIFoKK2luaXRpYWwgIFoKK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsZWZ0IGFsaWdubWVudCBmb3JtYXR0aW5nIHdpdGggbXRydW5jJyAnCisJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiU8KDEwLG10cnVuYyklcyIgPmFjdHVhbCAmJgorCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCisJZWNobyA+PmFjdHVhbCAmJgorCXF6X3RvX3RhYl9zcGFjZSA8PFxFT0YgPmV4cGVjdGVkICYmCittZXNzLi4gdHdvCittZXNzLi4gb25lCithZGQgYmFyICBaCitpbml0aWFsICBaCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmlnaHQgYWxpZ25tZW50IGZvcm1hdHRpbmcnICcKKwlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JT4oNDApJXMiID5hY3R1YWwgJiYKKwkjIGNvbXBsZXRlIHRoZSBpbmNvbXBsZXRlIGxpbmUgYXQgdGhlIGVuZAorCWVjaG8gPj5hY3R1YWwgJiYKKwlxel90b190YWJfc3BhY2UgPDxcRU9GID5leHBlY3RlZCAmJgorWiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlIHR3bworWiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlIG9uZQorWiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGJhcgorWiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbAorRU9GCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JpZ2h0IGFsaWdubWVudCBmb3JtYXR0aW5nIGF0IHRoZSBudGggY29sdW1uJyAnCisJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiVoICU+fCg0MCklcyIgPmFjdHVhbCAmJgorCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCisJZWNobyA+PmFjdHVhbCAmJgorCXF6X3RvX3RhYl9zcGFjZSA8PFxFT0YgPmV4cGVjdGVkICYmCitmYTMzYWIxICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgdHdvCis3Y2Q2YzYzICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Ugb25lCisxNzExYmY5ICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgYmFyCithZjIwYzA2ICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmlnaHQgYWxpZ25tZW50IGZvcm1hdHRpbmcgd2l0aCBubyBwYWRkaW5nJyAnCisJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiU+KDEpJXMiID5hY3R1YWwgJiYKKwkjIGNvbXBsZXRlIHRoZSBpbmNvbXBsZXRlIGxpbmUgYXQgdGhlIGVuZAorCWVjaG8gPj5hY3R1YWwgJiYKKwljYXQgPDxcRU9GID5leHBlY3RlZCAmJgorbWVzc2FnZSB0d28KK21lc3NhZ2Ugb25lCithZGQgYmFyCitpbml0aWFsCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2VudGVyIGFsaWdubWVudCBmb3JtYXR0aW5nJyAnCisJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiU+PCg0MCklcyIgPmFjdHVhbCAmJgorCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCisJZWNobyA+PmFjdHVhbCAmJgorCXF6X3RvX3RhYl9zcGFjZSA8PFxFT0YgPmV4cGVjdGVkICYmCitaICAgICAgICAgICAgIG1lc3NhZ2UgdHdvICAgICAgICAgICAgICBaCitaICAgICAgICAgICAgIG1lc3NhZ2Ugb25lICAgICAgICAgICAgICBaCitaICAgICAgICAgICAgICAgYWRkIGJhciAgICAgICAgICAgICAgICBaCitaICAgICAgICAgICAgICAgaW5pdGlhbCAgICAgICAgICAgICAgICBaCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2VudGVyIGFsaWdubWVudCBmb3JtYXR0aW5nIGF0IHRoZSBudGggY29sdW1uJyAnCisJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiVoICU+PHwoNDApJXMiID5hY3R1YWwgJiYKKwkjIGNvbXBsZXRlIHRoZSBpbmNvbXBsZXRlIGxpbmUgYXQgdGhlIGVuZAorCWVjaG8gPj5hY3R1YWwgJiYKKwlxel90b190YWJfc3BhY2UgPDxcRU9GID5leHBlY3RlZCAmJgorZmEzM2FiMSAgICAgICAgICAgbWVzc2FnZSB0d28gICAgICAgICAgWgorN2NkNmM2MyAgICAgICAgICAgbWVzc2FnZSBvbmUgICAgICAgICAgWgorMTcxMWJmOSAgICAgICAgICAgICBhZGQgYmFyICAgICAgICAgICAgWgorYWYyMGMwNiAgICAgICAgICAgICBpbml0aWFsICAgICAgICAgICAgWgorRU9GCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NlbnRlciBhbGlnbm1lbnQgZm9ybWF0dGluZyB3aXRoIG5vIHBhZGRpbmcnICcKKwlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JT48KDEpJXMiID5hY3R1YWwgJiYKKwkjIGNvbXBsZXRlIHRoZSBpbmNvbXBsZXRlIGxpbmUgYXQgdGhlIGVuZAorCWVjaG8gPj5hY3R1YWwgJiYKKwljYXQgPDxcRU9GID5leHBlY3RlZCAmJgorbWVzc2FnZSB0d28KK21lc3NhZ2Ugb25lCithZGQgYmFyCitpbml0aWFsCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbGVmdC9yaWdodCBhbGlnbm1lbnQgZm9ybWF0dGluZyB3aXRoIHN0ZWFsaW5nJyAnCisJZ2l0IGNvbW1pdCAtLWFtZW5kIC1tIHNob3J0IC0tYXV0aG9yICJsb25nIGxvbmcgbG9uZyA8bG9uZ0BtZS5jb20+IiAmJgorCWdpdCBsb2cgLS1wcmV0dHk9ImZvcm1hdDolPCgxMCx0cnVuYyklcyU+PigxMCxsdHJ1bmMpJSBhbiIgPmFjdHVhbCAmJgorCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCisJZWNobyA+PmFjdHVhbCAmJgorCWNhdCA8PFxFT0YgPmV4cGVjdGVkICYmCitzaG9ydCBsb25nICBsb25nIGxvbmcKK21lc3NhZ2UgLi4gICBBIFUgVGhvcgorYWRkIGJhciAgICAgIEEgVSBUaG9yCitpbml0aWFsICAgICAgQSBVIFRob3IKK0VPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCmRpZmYgLS1naXQgYS90L3Q0MjA3LWxvZy1kZWNvcmF0aW9uLWNvbG9ycy5zaCBiL3QvdDQyMDctbG9nLWRlY29yYXRpb24tY29sb3JzLnNoCmluZGV4IGJiZGUzMWIuLjkyNWY1NzcgMTAwNzU1Ci0tLSBhL3QvdDQyMDctbG9nLWRlY29yYXRpb24tY29sb3JzLnNoCisrKyBiL3QvdDQyMDctbG9nLWRlY29yYXRpb24tY29sb3JzLnNoCkBAIC00NCwxNSArNDQsMTUgQEAKICcKIAogY2F0ID5leHBlY3RlZCA8PEVPRgotJHtjX2NvbW1pdH1DT01NSVRfSUQgKCR7Y19IRUFEfUhFQUQke2NfcmVzZXR9JHtjX2NvbW1pdH0sXAorJHtjX2NvbW1pdH1DT01NSVRfSUQke2NfcmVzZXR9JHtjX2NvbW1pdH0gKCR7Y19IRUFEfUhFQUQke2NfcmVzZXR9JHtjX2NvbW1pdH0sXAogICR7Y190YWd9dGFnOiB2MS4wJHtjX3Jlc2V0fSR7Y19jb21taXR9LFwKICAke2NfdGFnfXRhZzogQiR7Y19yZXNldH0ke2NfY29tbWl0fSxcCiAgJHtjX2JyYW5jaH1tYXN0ZXIke2NfcmVzZXR9JHtjX2NvbW1pdH0pJHtjX3Jlc2V0fSBCCi0ke2NfY29tbWl0fUNPTU1JVF9JRCAoJHtjX3RhZ310YWc6IEExJHtjX3Jlc2V0fSR7Y19jb21taXR9LFwKKyR7Y19jb21taXR9Q09NTUlUX0lEJHtjX3Jlc2V0fSR7Y19jb21taXR9ICgke2NfdGFnfXRhZzogQTEke2NfcmVzZXR9JHtjX2NvbW1pdH0sXAogICR7Y19yZW1vdGVCcmFuY2h9b3RoZXIvbWFzdGVyJHtjX3Jlc2V0fSR7Y19jb21taXR9KSR7Y19yZXNldH0gQTEKLSR7Y19jb21taXR9Q09NTUlUX0lEICgke2Nfc3Rhc2h9cmVmcy9zdGFzaCR7Y19yZXNldH0ke2NfY29tbWl0fSkke2NfcmVzZXR9XAorJHtjX2NvbW1pdH1DT01NSVRfSUQke2NfcmVzZXR9JHtjX2NvbW1pdH0gKCR7Y19zdGFzaH1yZWZzL3N0YXNoJHtjX3Jlc2V0fSR7Y19jb21taXR9KSR7Y19yZXNldH1cCiAgT24gbWFzdGVyOiBDaGFuZ2VzIHRvIEEudAotJHtjX2NvbW1pdH1DT01NSVRfSUQgKCR7Y190YWd9dGFnOiBBJHtjX3Jlc2V0fSR7Y19jb21taXR9KSR7Y19yZXNldH0gQQorJHtjX2NvbW1pdH1DT01NSVRfSUQke2NfcmVzZXR9JHtjX2NvbW1pdH0gKCR7Y190YWd9dGFnOiBBJHtjX3Jlc2V0fSR7Y19jb21taXR9KSR7Y19yZXNldH0gQQogRU9GCiAKICMgV2Ugd2FudCBsb2cgdG8gc2hvdyBhbGwsIGJ1dCB0aGUgc2Vjb25kIHBhcmVudCB0byByZWZzL3N0YXNoIGlzIGlycmVsZXZhbnQKZGlmZiAtLWdpdCBhL3QvdDQyMDgtbG9nLW1hZ2ljLXBhdGhzcGVjLnNoIGIvdC90NDIwOC1sb2ctbWFnaWMtcGF0aHNwZWMuc2gKaW5kZXggMmM0ODJiNi4uNzIzMDBiNSAxMDA3NTUKLS0tIGEvdC90NDIwOC1sb2ctbWFnaWMtcGF0aHNwZWMuc2gKKysrIGIvdC90NDIwOC1sb2ctbWFnaWMtcGF0aHNwZWMuc2gKQEAgLTExLDExICsxMSwyNCBAQAogCW1rZGlyIHN1YgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICciZ2l0IGxvZyA6LyIgc2hvdWxkIGJlIGFtYmlndW91cycgJwotCXRlc3RfbXVzdF9mYWlsIGdpdCBsb2cgOi8gMj5lcnJvciAmJgordGVzdF9leHBlY3Rfc3VjY2VzcyAnImdpdCBsb2cgOi8iIHNob3VsZCBub3QgYmUgYW1iaWd1b3VzJyAnCisJZ2l0IGxvZyA6LworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICciZ2l0IGxvZyA6L2EiIHNob3VsZCBiZSBhbWJpZ3VvdXMgKGFwcGxpZWQgYm90aCByZXYgYW5kIHdvcmt0cmVlKScgJworCTogPmEgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbG9nIDovYSAyPmVycm9yICYmCiAJZ3JlcCBhbWJpZ3VvdXMgZXJyb3IKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnImdpdCBsb2cgOi9hIC0tICIgc2hvdWxkIG5vdCBiZSBhbWJpZ3VvdXMnICcKKwlnaXQgbG9nIDovYSAtLQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICciZ2l0IGxvZyAtLSA6L2EiIHNob3VsZCBub3QgYmUgYW1iaWd1b3VzJyAnCisJZ2l0IGxvZyAtLSA6L2EKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnImdpdCBsb2cgOiIgc2hvdWxkIGJlIGFtYmlndW91cycgJwogCXRlc3RfbXVzdF9mYWlsIGdpdCBsb2cgOiAyPmVycm9yICYmCiAJZ3JlcCBhbWJpZ3VvdXMgZXJyb3IKZGlmZiAtLWdpdCBhL3QvdDQyMDktbG9nLXBpY2theGUuc2ggYi90L3Q0MjA5LWxvZy1waWNrYXhlLnNoCmluZGV4IGVlZDcyNzMuLjM4ZmI4MGYgMTAwNzU1Ci0tLSBhL3QvdDQyMDktbG9nLXBpY2theGUuc2gKKysrIGIvdC90NDIwOS1sb2ctcGlja2F4ZS5zaApAQCAtODAsNiArODAsMjAgQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtRyAtLXRleHRjb252IChtaXNzaW5nIHRleHRjb252IHRvb2wpJyAnCisJZWNobyAiKiBkaWZmPXRlc3QiID4uZ2l0YXR0cmlidXRlcyAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCAtYyBkaWZmLnRlc3QudGV4dGNvbnY9bWlzc2luZyBsb2cgLUdmb28gJiYKKwlybSAuZ2l0YXR0cmlidXRlcworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgLUcgLS1uby10ZXh0Y29udiAobWlzc2luZyB0ZXh0Y29udiB0b29sKScgJworCWVjaG8gIiogZGlmZj10ZXN0IiA+LmdpdGF0dHJpYnV0ZXMgJiYKKwlnaXQgLWMgZGlmZi50ZXN0LnRleHRjb252PW1pc3NpbmcgbG9nIC1HZm9vIC0tbm8tdGV4dGNvbnYgPmFjdHVhbCAmJgorCT5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisJcm0gLmdpdGF0dHJpYnV0ZXMKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIC1TIChub21hdGNoKScgJwogCWdpdCBsb2cgLVNwaWNrZWQgLS1mb3JtYXQ9JUggPmFjdHVhbCAmJgogCT5leHBlY3QgJiYKQEAgLTExNiw0ICsxMzAsMTggQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtUyAtLXRleHRjb252IChtaXNzaW5nIHRleHRjb252IHRvb2wpJyAnCisJZWNobyAiKiBkaWZmPXRlc3QiID4uZ2l0YXR0cmlidXRlcyAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCAtYyBkaWZmLnRlc3QudGV4dGNvbnY9bWlzc2luZyBsb2cgLVNmb28gJiYKKwlybSAuZ2l0YXR0cmlidXRlcworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgLVMgLS1uby10ZXh0Y29udiAobWlzc2luZyB0ZXh0Y29udiB0b29sKScgJworCWVjaG8gIiogZGlmZj10ZXN0IiA+LmdpdGF0dHJpYnV0ZXMgJiYKKwlnaXQgLWMgZGlmZi50ZXN0LnRleHRjb252PW1pc3NpbmcgbG9nIC1TZm9vIC0tbm8tdGV4dGNvbnYgPmFjdHVhbCAmJgorCT5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisJcm0gLmdpdGF0dHJpYnV0ZXMKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q0MjEwLWxvZy1pMThuLnNoIGIvdC90NDIxMC1sb2ctaTE4bi5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41MmE3NDcyCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDIxMC1sb2ctaTE4bi5zaApAQCAtMCwwICsxLDU4IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0ndGVzdCBsb2cgd2l0aCBpMThuIGZlYXR1cmVzJworLiAuL3Rlc3QtbGliLnNoCisKKyMgdHdvIGZvcm1zIG9mIMOpCit1dGY4X2U9JChwcmludGYgJ1wzMDNcMjUxJykKK2xhdGluMV9lPSQocHJpbnRmICdcMzUxJykKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3JlYXRlIGNvbW1pdHMgaW4gZGlmZmVyZW50IGVuY29kaW5ncycgJworCXRlc3RfdGljayAmJgorCWNhdCA+bXNnIDw8LUVPRiAmJgorCXV0ZjgKKworCXQke3V0ZjhfZX1zdAorCUVPRgorCWdpdCBhZGQgbXNnICYmCisJZ2l0IC1jIGkxOG4uY29tbWl0ZW5jb2Rpbmc9dXRmOCBjb21taXQgLUYgbXNnICYmCisJY2F0ID5tc2cgPDwtRU9GICYmCisJbGF0aW4xCisKKwl0JHtsYXRpbjFfZX1zdAorCUVPRgorCWdpdCBhZGQgbXNnICYmCisJZ2l0IC1jIGkxOG4uY29tbWl0ZW5jb2Rpbmc9SVNPLTg4NTktMSBjb21taXQgLUYgbXNnCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtLWdyZXAgc2VhcmNoZXMgaW4gbG9nIG91dHB1dCBlbmNvZGluZyAodXRmOCknICcKKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJbGF0aW4xCisJdXRmOAorCUVPRgorCWdpdCBsb2cgLS1lbmNvZGluZz11dGY4IC0tZm9ybWF0PSVzIC0tZ3JlcD0kdXRmOF9lID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtLWdyZXAgc2VhcmNoZXMgaW4gbG9nIG91dHB1dCBlbmNvZGluZyAobGF0aW4xKScgJworCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwlsYXRpbjEKKwl1dGY4CisJRU9GCisJZ2l0IGxvZyAtLWVuY29kaW5nPUlTTy04ODU5LTEgLS1mb3JtYXQ9JXMgLS1ncmVwPSRsYXRpbjFfZSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgLS1ncmVwIGRvZXMgbm90IGZpbmQgbm9uLXJlZW5jb2RlZCB2YWx1ZXMgKHV0ZjgpJyAnCisJPmV4cGVjdCAmJgorCWdpdCBsb2cgLS1lbmNvZGluZz11dGY4IC0tZm9ybWF0PSVzIC0tZ3JlcD0kbGF0aW4xX2UgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIC0tZ3JlcCBkb2VzIG5vdCBmaW5kIG5vbi1yZWVuY29kZWQgdmFsdWVzIChsYXRpbjEpJyAnCisJPmV4cGVjdCAmJgorCWdpdCBsb2cgLS1lbmNvZGluZz1JU08tODg1OS0xIC0tZm9ybWF0PSVzIC0tZ3JlcD0kdXRmOF9lID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDIxMi1sb2ctY29ycnVwdC5zaCBiL3QvdDQyMTItbG9nLWNvcnJ1cHQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZWM1MDk5YgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyMTItbG9nLWNvcnJ1cHQuc2gKQEAgLTAsMCArMSw0MiBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBsb2cgd2l0aCBpbnZhbGlkIGNvbW1pdCBoZWFkZXJzJworCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKwl0ZXN0X2NvbW1pdCBmb28gJiYKKworCWdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8CisJc2VkICIvXmF1dGhvciAvcy8+Lz4tPD4vIiA+YnJva2VuX2VtYWlsLmNvbW1pdCAmJgorCWdpdCBoYXNoLW9iamVjdCAtdyAtdCBjb21taXQgYnJva2VuX2VtYWlsLmNvbW1pdCA+YnJva2VuX2VtYWlsLmhhc2ggJiYKKwlnaXQgdXBkYXRlLXJlZiByZWZzL2hlYWRzL2Jyb2tlbl9lbWFpbCAkKGNhdCBicm9rZW5fZW1haWwuaGFzaCkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGxvZyB3aXRoIGJyb2tlbiBhdXRob3IgZW1haWwnICcKKwl7CisJCWVjaG8gY29tbWl0ICQoY2F0IGJyb2tlbl9lbWFpbC5oYXNoKQorCQllY2hvICJBdXRob3I6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+IgorCQllY2hvICJEYXRlOiAgIFRodSBKYW4gMSAwMDowMDowMCAxOTcwICswMDAwIgorCQllY2hvCisJCWVjaG8gIiAgICBmb28iCisJfSA+ZXhwZWN0Lm91dCAmJgorCTogPmV4cGVjdC5lcnIgJiYKKworCWdpdCBsb2cgYnJva2VuX2VtYWlsID5hY3R1YWwub3V0IDI+YWN0dWFsLmVyciAmJgorCisJdGVzdF9jbXAgZXhwZWN0Lm91dCBhY3R1YWwub3V0ICYmCisJdGVzdF9jbXAgZXhwZWN0LmVyciBhY3R1YWwuZXJyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBsb2cgLS1mb3JtYXQgd2l0aCBicm9rZW4gYXV0aG9yIGVtYWlsJyAnCisJZWNobyAiQSBVIFRob3IrYXV0aG9yQGV4YW1wbGUuY29tKyIgPmV4cGVjdC5vdXQgJiYKKwk6ID5leHBlY3QuZXJyICYmCisKKwlnaXQgbG9nIC0tZm9ybWF0PSIlYW4rJWFlKyVhZCIgYnJva2VuX2VtYWlsID5hY3R1YWwub3V0IDI+YWN0dWFsLmVyciAmJgorCisJdGVzdF9jbXAgZXhwZWN0Lm91dCBhY3R1YWwub3V0ICYmCisJdGVzdF9jbXAgZXhwZWN0LmVyciBhY3R1YWwuZXJyCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDI1My1hbS1rZWVwLWNyLWRvcy5zaCBiL3QvdDQyNTMtYW0ta2VlcC1jci1kb3Muc2gKaW5kZXggNzM1ZTU1ZC4uNTUzZmUzZSAxMDA3NTUKLS0tIGEvdC90NDI1My1hbS1rZWVwLWNyLWRvcy5zaAorKysgYi90L3Q0MjUzLWFtLWtlZXAtY3ItZG9zLnNoCkBAIC02Miw3ICs2Miw3IEBACiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgbWFzdGVyCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FtIHdpdGggZG9zIGZpbGVzIGNvbmZpZyBhbS5rZWVwY3Igb3ZlcnJpZGVuIGJ5IC0tbm8ta2VlcC1jcicgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYW0gd2l0aCBkb3MgZmlsZXMgY29uZmlnIGFtLmtlZXBjciBvdmVycmlkZGVuIGJ5IC0tbm8ta2VlcC1jcicgJwogCWdpdCBjb25maWcgYW0ua2VlcGNyIDEgJiYKIAlnaXQgY2hlY2tvdXQgLWIgZG9zZmlsZXMtY29uZi1rZWVwY3Itb3ZlcnJpZGUgaW5pdGlhbCAmJgogCWdpdCBmb3JtYXQtcGF0Y2ggLWsgaW5pdGlhbC4ubWFzdGVyICYmCkBAIC04Myw3ICs4Myw3IEBACiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgbWFzdGVyCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FtIHdpdGggdW5peCBmaWxlcyBjb25maWcgYW0ua2VlcGNyIG92ZXJyaWRlbiBieSAtLW5vLWtlZXAtY3InICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FtIHdpdGggdW5peCBmaWxlcyBjb25maWcgYW0ua2VlcGNyIG92ZXJyaWRkZW4gYnkgLS1uby1rZWVwLWNyJyAnCiAJZ2l0IGNvbmZpZyBhbS5rZWVwY3IgMSAmJgogCWdpdCBjaGVja291dCAtYiB1bml4ZmlsZXMtY29uZi1rZWVwY3Itb3ZlcnJpZGUgaW5pdGlhbCAmJgogCWNwIC1mIGZpbGUxIGZpbGUgJiYKZGlmZiAtLWdpdCBhL3QvdDQzMDAtbWVyZ2UtdHJlZS5zaCBiL3QvdDQzMDAtbWVyZ2UtdHJlZS5zaAppbmRleCA0NmMzZmU3Li45MDE1ZTQ3IDEwMDc1NQotLS0gYS90L3Q0MzAwLW1lcmdlLXRyZWUuc2gKKysrIGIvdC90NDMwMC1tZXJnZS10cmVlLnNoCkBAIC0yNiw4ICsyNiw2IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZpbGUgYWRkICFBLCBCJyAnCiAJY2F0ID5leHBlY3RlZCA8PFxFWFBFQ1RFRCAmJgotYWRkZWQgaW4gbG9jYWwKLSAgb3VyICAgIDEwMDY0NCA0M2Q1YThlZDZlZjZjMDBmZjc3NTAwODYzM2Y5NTc4N2QwODgyODVkIE9ORQogRVhQRUNURUQKIAogCWdpdCByZXNldCAtLWhhcmQgaW5pdGlhbCAmJgpAQCAtMzgsOSArMzYsNiBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmaWxlIGFkZCBBLCBCIChzYW1lKScgJwogCWNhdCA+ZXhwZWN0ZWQgPDxcRVhQRUNURUQgJiYKLWFkZGVkIGluIGJvdGgKLSAgb3VyICAgIDEwMDY0NCA0M2Q1YThlZDZlZjZjMDBmZjc3NTAwODYzM2Y5NTc4N2QwODgyODVkIE9ORQotICB0aGVpciAgMTAwNjQ0IDQzZDVhOGVkNmVmNmMwMGZmNzc1MDA4NjMzZjk1Nzg3ZDA4ODI4NWQgT05FCiBFWFBFQ1RFRAogCiAJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCkBAIC0xODEsOSArMTc2LDYgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmlsZSByZW1vdmUgQSwgIUInICcKIAljYXQgPmV4cGVjdGVkIDw8XEVYUEVDVEVEICYmCi1yZW1vdmVkIGluIGxvY2FsCi0gIGJhc2UgICAxMDA2NDQgNDNkNWE4ZWQ2ZWY2YzAwZmY3NzUwMDg2MzNmOTU3ODdkMDg4Mjg1ZCBPTkUKLSAgdGhlaXIgIDEwMDY0NCA0M2Q1YThlZDZlZjZjMDBmZjc3NTAwODYzM2Y5NTc4N2QwODgyODVkIE9ORQogRVhQRUNURUQKIAogCWdpdCByZXNldCAtLWhhcmQgaW5pdGlhbCAmJgpAQCAtMjEzLDYgKzIwNSwxOSBAQAogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmaWxlIHJlbW92ZSBBLCBCIChzYW1lKScgJworCWNhdCA+ZXhwZWN0ZWQgPDxcRVhQRUNURUQgJiYKK0VYUEVDVEVECisKKwlnaXQgcmVzZXQgLS1oYXJkIGluaXRpYWwgJiYKKwl0ZXN0X2NvbW1pdCAicm0tYS1iLWJhc2UiICJPTkUiICJBQUEiICYmCisJZ2l0IHJtIE9ORSAmJgorCWdpdCBjb21taXQgLW0gInJtLWEtYiIgJiYKKwlnaXQgdGFnICJybS1hLWIiICYmCisJZ2l0IG1lcmdlLXRyZWUgcm0tYS1iLWJhc2Ugcm0tYS1iIHJtLWEtYiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZpbGUgY2hhbmdlIEEsIHJlbW92ZSBCJyAnCiAJY2F0ID5leHBlY3RlZCA8PFxFWFBFQ1RFRCAmJgogcmVtb3ZlZCBpbiByZW1vdGUKQEAgLTI1NCw0ICsyNTksOTcgQEAKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAndHJlZSBhZGQgQSwgQiAoc2FtZSknICcKKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJRU9GCisJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCisJbWtkaXIgc3ViICYmCisJdGVzdF9jb21taXQgImFkZCBzdWIvZmlsZSIgInN1Yi9maWxlIiAiZmlsZSIgYWRkLXRyZWUtQSAmJgorCWdpdCBtZXJnZS10cmVlIGluaXRpYWwgYWRkLXRyZWUtQSBhZGQtdHJlZS1BID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3RyZWUgYWRkIEEsIEIgKGRpZmZlcmVudCknICcKKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJYWRkZWQgaW4gYm90aAorCSAgb3VyICAgIDEwMDY0NCA0M2Q1YThlZDZlZjZjMDBmZjc3NTAwODYzM2Y5NTc4N2QwODgyODVkIHN1Yi9maWxlCisJICB0aGVpciAgMTAwNjQ0IGJhNjI5MjM4Y2E4OTQ4OWYyYjM1MGUxOTZjYTQ0NWUwOWQ4YmI4MzQgc3ViL2ZpbGUKKwlAQCAtMSArMSw1IEBACisJKzw8PDw8PDwgLm91cgorCSBBQUEKKwkrPT09PT09PQorCStCQkIKKwkrPj4+Pj4+PiAudGhlaXIKKwlFT0YKKwlnaXQgcmVzZXQgLS1oYXJkIGluaXRpYWwgJiYKKwlta2RpciBzdWIgJiYKKwl0ZXN0X2NvbW1pdCAiYWRkIHN1Yi9maWxlIiAic3ViL2ZpbGUiICJBQUEiIGFkZC10cmVlLWEtYi1BICYmCisJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCisJbWtkaXIgc3ViICYmCisJdGVzdF9jb21taXQgImFkZCBzdWIvZmlsZSIgInN1Yi9maWxlIiAiQkJCIiBhZGQtdHJlZS1hLWItQiAmJgorCWdpdCBtZXJnZS10cmVlIGluaXRpYWwgYWRkLXRyZWUtYS1iLUEgYWRkLXRyZWUtYS1iLUIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndHJlZSB1bmNoYW5nZWQgQSwgcmVtb3ZlZCBCJyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCXJlbW92ZWQgaW4gcmVtb3RlCisJICBiYXNlICAgMTAwNjQ0IDQzZDVhOGVkNmVmNmMwMGZmNzc1MDA4NjMzZjk1Nzg3ZDA4ODI4NWQgc3ViL2ZpbGUKKwkgIG91ciAgICAxMDA2NDQgNDNkNWE4ZWQ2ZWY2YzAwZmY3NzUwMDg2MzNmOTU3ODdkMDg4Mjg1ZCBzdWIvZmlsZQorCUBAIC0xICswLDAgQEAKKwktQUFBCisJRU9GCisJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCisJbWtkaXIgc3ViICYmCisJdGVzdF9jb21taXQgImFkZCBzdWIvZmlsZSIgInN1Yi9maWxlIiAiQUFBIiB0cmVlLXJlbW92ZS1iLWluaXRpYWwgJiYKKwlnaXQgcm0gc3ViL2ZpbGUgJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tICJyZW1vdmUgc3ViL2ZpbGUiICYmCisJZ2l0IHRhZyB0cmVlLXJlbW92ZS1iLUIgJiYKKwlnaXQgbWVyZ2UtdHJlZSB0cmVlLXJlbW92ZS1iLWluaXRpYWwgdHJlZS1yZW1vdmUtYi1pbml0aWFsIHRyZWUtcmVtb3ZlLWItQiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0dXJuIGZpbGUgdG8gdHJlZScgJworCWdpdCByZXNldCAtLWhhcmQgaW5pdGlhbCAmJgorCXJtIGluaXRpYWwtZmlsZSAmJgorCW1rZGlyIGluaXRpYWwtZmlsZSAmJgorCXRlc3RfY29tbWl0ICJ0dXJuLWZpbGUtdG8tdHJlZSIgImluaXRpYWwtZmlsZS9PTkUiICJDQ0MiICYmCisJZ2l0IG1lcmdlLXRyZWUgaW5pdGlhbCBpbml0aWFsIHR1cm4tZmlsZS10by10cmVlID5hY3R1YWwgJiYKKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJYWRkZWQgaW4gcmVtb3RlCisJICB0aGVpciAgMTAwNjQ0IDQzYWE0ZmRlYzMxZWI5MmUxZmRjMmYwY2U2ZWE5ZGRiN2MzMmJjZjcgaW5pdGlhbC1maWxlL09ORQorCUBAIC0wLDAgKzEgQEAKKwkrQ0NDCisJcmVtb3ZlZCBpbiByZW1vdGUKKwkgIGJhc2UgICAxMDA2NDQgZTc5YzVlOGY5NjQ0OTMyOTBhNDA5ODg4ZDU0MTNhNzM3ZThlNWRkNSBpbml0aWFsLWZpbGUKKwkgIG91ciAgICAxMDA2NDQgZTc5YzVlOGY5NjQ0OTMyOTBhNDA5ODg4ZDU0MTNhNzM3ZThlNWRkNSBpbml0aWFsLWZpbGUKKwlAQCAtMSArMCwwIEBACisJLWluaXRpYWwKKwlFT0YKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3R1cm4gdHJlZSB0byBmaWxlJyAnCisJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCisJbWtkaXIgZGlyICYmCisJdGVzdF9jb21taXQgImFkZC10cmVlIiAiZGlyL3BhdGgiICJBQUEiICYmCisJdGVzdF9jb21taXQgImFkZC1hbm90aGVyLXRyZWUiICJkaXIvYW5vdGhlciIgIkJCQiIgJiYKKwlybSAtZnIgZGlyICYmCisJdGVzdF9jb21taXQgIm1ha2UtZmlsZSIgImRpciIgIkNDQyIgJiYKKwlnaXQgbWVyZ2UtdHJlZSBhZGQtdHJlZSBhZGQtYW5vdGhlci10cmVlIG1ha2UtZmlsZSA+YWN0dWFsICYmCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCXJlbW92ZWQgaW4gcmVtb3RlCisJICBiYXNlICAgMTAwNjQ0IDQzZDVhOGVkNmVmNmMwMGZmNzc1MDA4NjMzZjk1Nzg3ZDA4ODI4NWQgZGlyL3BhdGgKKwkgIG91ciAgICAxMDA2NDQgNDNkNWE4ZWQ2ZWY2YzAwZmY3NzUwMDg2MzNmOTU3ODdkMDg4Mjg1ZCBkaXIvcGF0aAorCUBAIC0xICswLDAgQEAKKwktQUFBCisJYWRkZWQgaW4gcmVtb3RlCisJICB0aGVpciAgMTAwNjQ0IDQzYWE0ZmRlYzMxZWI5MmUxZmRjMmYwY2U2ZWE5ZGRiN2MzMmJjZjcgZGlyCisJQEAgLTAsMCArMSBAQAorCStDQ0MKKwlFT0YKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NTAwMC10YXItdHJlZS5zaCBiL3QvdDUwMDAtdGFyLXRyZWUuc2gKaW5kZXggZWNmMDBlZC4uM2ZiZDM2NiAxMDA3NTUKLS0tIGEvdC90NTAwMC10YXItdHJlZS5zaAorKysgYi90L3Q1MDAwLXRhci10cmVlLnNoCkBAIC0yNSwzMiArMjUsMTEgQEAKICcKIAogLiAuL3Rlc3QtbGliLnNoCi1VTlpJUD0ke1VOWklQOi11bnppcH0KIEdaSVA9JHtHWklQOi1nemlwfQogR1VOWklQPSR7R1VOWklQOi1nemlwIC1kfQogCiBTVUJTVEZPUk1BVD0lSCVuCiAKLWNoZWNrX3ppcCgpIHsKLQl6aXBmaWxlPSQxLnppcAotCWxpc3RmaWxlPSQxLmxzdAotCWRpcj0kMQotCWRpcl93aXRoX3ByZWZpeD0kZGlyLyQyCi0KLQl0ZXN0X2V4cGVjdF9zdWNjZXNzIFVOWklQICIgZXh0cmFjdCBaSVAgYXJjaGl2ZSIgIgotCQkobWtkaXIgJGRpciAmJiBjZCAkZGlyICYmICRVTlpJUCAuLi8kemlwZmlsZSkKLQkiCi0KLQl0ZXN0X2V4cGVjdF9zdWNjZXNzIFVOWklQICIgdmFsaWRhdGUgZmlsZW5hbWVzIiAiCi0JCShjZCAke2Rpcl93aXRoX3ByZWZpeH1hICYmIGZpbmQgLikgfCBzb3J0ID4kbGlzdGZpbGUgJiYKLQkJdGVzdF9jbXAgYS5sc3QgJGxpc3RmaWxlCi0JIgotCi0JdGVzdF9leHBlY3Rfc3VjY2VzcyBVTlpJUCAiIHZhbGlkYXRlIGZpbGUgY29udGVudHMiICIKLQkJZGlmZiAtciBhICR7ZGlyX3dpdGhfcHJlZml4fWEKLQkiCi19Ci0KIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdwb3B1bGF0ZSB3b3JrZGlyJyBcCiAgICAgJ21rZGlyIGEgYiBjICYmCkBAIC0yMDEsNjIgKzE4MCwxMiBAQAogICAgICAgdGVzdF9jbXAgYS9zdWJzdGZpbGUyIGcvcHJlZml4L2Evc3Vic3RmaWxlMgogJwogCi0kVU5aSVAgLXYgPi9kZXYvbnVsbCAyPiYxCi1pZiBbICQ/IC1lcSAxMjcgXTsgdGhlbgotCXNheSAiU2tpcHBpbmcgWklQIHRlc3RzLCBiZWNhdXNlIHVuemlwIHdhcyBub3QgZm91bmQiCi1lbHNlCi0JdGVzdF9zZXRfcHJlcmVxIFVOWklQCi1maQotCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9emlwJyBcCi0gICAgJ2dpdCBhcmNoaXZlIC0tZm9ybWF0PXppcCBIRUFEID5kLnppcCcKLQotY2hlY2tfemlwIGQKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ2dpdCBhcmNoaXZlIC0tZm9ybWF0PXppcCBpbiBhIGJhcmUgcmVwbycgXAotICAgICcoY2QgYmFyZS5naXQgJiYgZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9emlwIEhFQUQpID5kMS56aXAnCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgYXJjaGl2ZSAtLWZvcm1hdD16aXAgdnMuIHRoZSBzYW1lIGluIGEgYmFyZSByZXBvJyBcCi0gICAgJ3Rlc3RfY21wIGQuemlwIGQxLnppcCcKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9emlwIHdpdGggLS1vdXRwdXQnIFwKLSAgICAnZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9emlwIC0tb3V0cHV0PWQyLnppcCBIRUFEICYmCi0gICAgdGVzdF9jbXAgZC56aXAgZDIuemlwJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgYXJjaGl2ZSB3aXRoIC0tb3V0cHV0LCBpbmZlcnJpbmcgZm9ybWF0JyAnCi0JZ2l0IGFyY2hpdmUgLS1vdXRwdXQ9ZDMuemlwIEhFQUQgJiYKLQl0ZXN0X2NtcCBkLnppcCBkMy56aXAKLScKLQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGFyY2hpdmUgd2l0aCAtLW91dHB1dCwgb3ZlcnJpZGUgaW5mZXJyZWQgZm9ybWF0JyAnCiAJZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9dGFyIC0tb3V0cHV0PWQ0LnppcCBIRUFEICYmCiAJdGVzdF9jbXAgYi50YXIgZDQuemlwCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgYXJjaGl2ZSAtLWZvcm1hdD16aXAgd2l0aCBwcmVmaXgnIFwKLSAgICAnZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9emlwIC0tcHJlZml4PXByZWZpeC8gSEVBRCA+ZS56aXAnCi0KLWNoZWNrX3ppcCBlIHByZWZpeC8KLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGFyY2hpdmUgLTAgLS1mb3JtYXQ9emlwIG9uIGxhcmdlIGZpbGVzJyAnCi0JdGVzdF9jb25maWcgY29yZS5iaWdmaWxldGhyZXNob2xkIDEgJiYKLQlnaXQgYXJjaGl2ZSAtMCAtLWZvcm1hdD16aXAgSEVBRCA+bGFyZ2UuemlwCi0nCi0KLWNoZWNrX3ppcCBsYXJnZQotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgYXJjaGl2ZSAtLWZvcm1hdD16aXAgb24gbGFyZ2UgZmlsZXMnICcKLQl0ZXN0X2NvbmZpZyBjb3JlLmJpZ2ZpbGV0aHJlc2hvbGQgMSAmJgotCWdpdCBhcmNoaXZlIC0tZm9ybWF0PXppcCBIRUFEID5sYXJnZS1jb21wcmVzc2VkLnppcAotJwotCi1jaGVja196aXAgbGFyZ2UtY29tcHJlc3NlZAotCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnZ2l0IGFyY2hpdmUgLS1saXN0IG91dHNpZGUgb2YgYSBnaXQgcmVwbycgXAogICAgICdHSVRfRElSPXNvbWUvbm9uLWV4aXN0aW5nL2RpcmVjdG9yeSBnaXQgYXJjaGl2ZSAtLWxpc3QnCiAKQEAgLTI4Myw3ICsyMTIsOCBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgdGFyIGZpbHRlcnMnICcKIAlnaXQgY29uZmlnIHRhci50YXIuZm9vLmNvbW1hbmQgInRyIGFiIGJhIiAmJgogCWdpdCBjb25maWcgdGFyLmJhci5jb21tYW5kICJ0ciBhYiBiYSIgJiYKLQlnaXQgY29uZmlnIHRhci5iYXIucmVtb3RlIHRydWUKKwlnaXQgY29uZmlnIHRhci5iYXIucmVtb3RlIHRydWUgJiYKKwlnaXQgY29uZmlnIHRhci5pbnZhbGlkIGJhegogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhcmNoaXZlIC0tbGlzdCBtZW50aW9ucyB1c2VyIGZpbHRlcicgJwpkaWZmIC0tZ2l0IGEvdC90NTAwMi1hcmNoaXZlLWF0dHItcGF0dGVybi5zaCBiL3QvdDUwMDItYXJjaGl2ZS1hdHRyLXBhdHRlcm4uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjY2N2QxNQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDUwMDItYXJjaGl2ZS1hdHRyLXBhdHRlcm4uc2gKQEAgLTAsMCArMSw4NCBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBhcmNoaXZlIGF0dHJpYnV0ZSBwYXR0ZXJuIHRlc3RzJworCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9leHBlY3RfZXhpc3RzKCkgeworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiAkMSBleGlzdHMiICJ0ZXN0IC1lICQxIgorfQorCit0ZXN0X2V4cGVjdF9taXNzaW5nKCkgeworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiAkMSBkb2VzIG5vdCBleGlzdCIgInRlc3QgISAtZSAkMSIKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKwllY2hvIGlnbm9yZWQgPmlnbm9yZWQgJiYKKwllY2hvIGlnbm9yZWQgZXhwb3J0LWlnbm9yZSA+Pi5naXQvaW5mby9hdHRyaWJ1dGVzICYmCisJZ2l0IGFkZCBpZ25vcmVkICYmCisKKwlta2RpciBub3QtaWdub3JlZC1kaXIgJiYKKwllY2hvIGlnbm9yZWQtaW4tdHJlZSA+bm90LWlnbm9yZWQtZGlyL2lnbm9yZWQgJiYKKwllY2hvIG5vdC1pZ25vcmVkLWluLXRyZWUgPm5vdC1pZ25vcmVkLWRpci9pZ25vcmVkLW9ubHktaWYtZGlyICYmCisJZ2l0IGFkZCBub3QtaWdub3JlZC1kaXIgJiYKKworCW1rZGlyIGlnbm9yZWQtb25seS1pZi1kaXIgJiYKKwllY2hvIGlnbm9yZWQgYnkgaWdub3JlZCBkaXIgPmlnbm9yZWQtb25seS1pZi1kaXIvaWdub3JlZC1ieS1pZ25vcmVkLWRpciAmJgorCWVjaG8gaWdub3JlZC1vbmx5LWlmLWRpci8gZXhwb3J0LWlnbm9yZSA+Pi5naXQvaW5mby9hdHRyaWJ1dGVzICYmCisJZ2l0IGFkZCBpZ25vcmVkLW9ubHktaWYtZGlyICYmCisKKwlta2RpciAtcCBpZ25vcmVkLXdpdGhvdXQtc2xhc2ggJiYKKwllY2hvICJpZ25vcmVkIHdpdGhvdXQgc2xhc2giID5pZ25vcmVkLXdpdGhvdXQtc2xhc2gvZm9vICYmCisJZ2l0IGFkZCBpZ25vcmVkLXdpdGhvdXQtc2xhc2gvZm9vICYmCisJZWNobyAiaWdub3JlZC13aXRob3V0LXNsYXNoIGV4cG9ydC1pZ25vcmUiID4+LmdpdC9pbmZvL2F0dHJpYnV0ZXMgJiYKKworCW1rZGlyIC1wIHdpbGRjYXJkLXdpdGhvdXQtc2xhc2ggJiYKKwllY2hvICJpZ25vcmVkIHdpdGhvdXQgc2xhc2giID53aWxkY2FyZC13aXRob3V0LXNsYXNoL2ZvbyAmJgorCWdpdCBhZGQgd2lsZGNhcmQtd2l0aG91dC1zbGFzaC9mb28gJiYKKwllY2hvICJ3aWxkKi13aXRob3V0LXNsYXNoIGV4cG9ydC1pZ25vcmUiID4+LmdpdC9pbmZvL2F0dHJpYnV0ZXMgJiYKKworCW1rZGlyIC1wIGRlZXAvYW5kL3NsYXNobGVzcyAmJgorCWVjaG8gImlnbm9yZWQgd2l0aG91dCBzbGFzaCIgPmRlZXAvYW5kL3NsYXNobGVzcy9mb28gJiYKKwlnaXQgYWRkIGRlZXAvYW5kL3NsYXNobGVzcy9mb28gJiYKKwllY2hvICJkZWVwL2FuZC9zbGFzaGxlc3MgZXhwb3J0LWlnbm9yZSIgPj4uZ2l0L2luZm8vYXR0cmlidXRlcyAmJgorCisJbWtkaXIgLXAgZGVlcC93aXRoL3dpbGRjYXJkICYmCisJZWNobyAiaWdub3JlZCB3aXRob3V0IHNsYXNoIiA+ZGVlcC93aXRoL3dpbGRjYXJkL2ZvbyAmJgorCWdpdCBhZGQgZGVlcC93aXRoL3dpbGRjYXJkL2ZvbyAmJgorCWVjaG8gImRlZXAvKnQqL3dpbGRjYXJkIGV4cG9ydC1pZ25vcmUiID4+LmdpdC9pbmZvL2F0dHJpYnV0ZXMgJiYKKworCW1rZGlyIC1wIG9uZS1sZXZlbC1sb3dlci90d28tbGV2ZWxzLWxvd2VyL2lnbm9yZWQtb25seS1pZi1kaXIgJiYKKwllY2hvIGlnbm9yZWQgYnkgaWdub3JlZCBkaXIgPm9uZS1sZXZlbC1sb3dlci90d28tbGV2ZWxzLWxvd2VyL2lnbm9yZWQtb25seS1pZi1kaXIvaWdub3JlZC1ieS1pZ25vcmVkLWRpciAmJgorCWdpdCBhZGQgb25lLWxldmVsLWxvd2VyICYmCisKKwlnaXQgY29tbWl0IC1tLiAmJgorCisJZ2l0IGNsb25lIC0tYmFyZSAuIGJhcmUgJiYKKwljcCAuZ2l0L2luZm8vYXR0cmlidXRlcyBiYXJlL2luZm8vYXR0cmlidXRlcworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgYXJjaGl2ZScgJworCWdpdCBhcmNoaXZlIEhFQUQgPmFyY2hpdmUudGFyICYmCisJKG1rZGlyIGFyY2hpdmUgJiYgY2QgYXJjaGl2ZSAmJiAiJFRBUiIgeGYgLSkgPGFyY2hpdmUudGFyCisnCisKK3Rlc3RfZXhwZWN0X21pc3NpbmcJYXJjaGl2ZS9pZ25vcmVkCit0ZXN0X2V4cGVjdF9taXNzaW5nCWFyY2hpdmUvbm90LWlnbm9yZWQtZGlyL2lnbm9yZWQKK3Rlc3RfZXhwZWN0X2V4aXN0cwlhcmNoaXZlL25vdC1pZ25vcmVkLWRpci9pZ25vcmVkLW9ubHktaWYtZGlyCit0ZXN0X2V4cGVjdF9leGlzdHMJYXJjaGl2ZS9ub3QtaWdub3JlZC1kaXIvCit0ZXN0X2V4cGVjdF9taXNzaW5nCWFyY2hpdmUvaWdub3JlZC1vbmx5LWlmLWRpci8KK3Rlc3RfZXhwZWN0X21pc3NpbmcJYXJjaGl2ZS9pZ25vcmVkLW9ueS1pZi1kaXIvaWdub3JlZC1ieS1pZ25vcmVkLWRpcgordGVzdF9leHBlY3RfbWlzc2luZwlhcmNoaXZlL2lnbm9yZWQtd2l0aG91dC1zbGFzaC8gJiYKK3Rlc3RfZXhwZWN0X21pc3NpbmcJYXJjaGl2ZS9pZ25vcmVkLXdpdGhvdXQtc2xhc2gvZm9vICYmCit0ZXN0X2V4cGVjdF9taXNzaW5nCWFyY2hpdmUvd2lsZGNhcmQtd2l0aG91dC1zbGFzaC8KK3Rlc3RfZXhwZWN0X21pc3NpbmcJYXJjaGl2ZS93aWxkY2FyZC13aXRob3V0LXNsYXNoL2ZvbyAmJgordGVzdF9leHBlY3RfbWlzc2luZwlhcmNoaXZlL2RlZXAvYW5kL3NsYXNobGVzcy8gJiYKK3Rlc3RfZXhwZWN0X21pc3NpbmcJYXJjaGl2ZS9kZWVwL2FuZC9zbGFzaGxlc3MvZm9vICYmCit0ZXN0X2V4cGVjdF9taXNzaW5nCWFyY2hpdmUvZGVlcC93aXRoL3dpbGRjYXJkLyAmJgordGVzdF9leHBlY3RfbWlzc2luZwlhcmNoaXZlL2RlZXAvd2l0aC93aWxkY2FyZC9mb28gJiYKK3Rlc3RfZXhwZWN0X2V4aXN0cwlhcmNoaXZlL29uZS1sZXZlbC1sb3dlci8KK3Rlc3RfZXhwZWN0X21pc3NpbmcJYXJjaGl2ZS9vbmUtbGV2ZWwtbG93ZXIvdHdvLWxldmVscy1sb3dlci9pZ25vcmVkLW9ubHktaWYtZGlyLwordGVzdF9leHBlY3RfbWlzc2luZwlhcmNoaXZlL29uZS1sZXZlbC1sb3dlci90d28tbGV2ZWxzLWxvd2VyL2lnbm9yZWQtb255LWlmLWRpci9pZ25vcmVkLWJ5LWlnbm9yZWQtZGlyCisKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q1MDAzLWFyY2hpdmUtemlwLnNoIGIvdC90NTAwMy1hcmNoaXZlLXppcC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40ZTdiMDVkCi0tLSAvZGV2L251bGwKKysrIGIvdC90NTAwMy1hcmNoaXZlLXppcC5zaApAQCAtMCwwICsxLDEzMSBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBhcmNoaXZlIC0tZm9ybWF0PXppcCB0ZXN0JworCisuIC4vdGVzdC1saWIuc2gKKworU1VCU1RGT1JNQVQ9JUglbgorCit0ZXN0X2xhenlfcHJlcmVxIFVOWklQX1NZTUxJTktTICcKKwkoCisJCW1rZGlyIHVuemlwLXN5bWxpbmtzICYmCisJCWNkIHVuemlwLXN5bWxpbmtzICYmCisJCSIkR0lUX1VOWklQIiAiJFRFU1RfRElSRUNUT1JZIi90NTAwMy9pbmZvemlwLXN5bWxpbmtzLnppcCAmJgorCQl0ZXN0IC1oIHN5bWxpbmsKKwkpCisnCisKK2NoZWNrX3ppcCgpIHsKKwl6aXBmaWxlPSQxLnppcAorCWxpc3RmaWxlPSQxLmxzdAorCWRpcj0kMQorCWRpcl93aXRoX3ByZWZpeD0kZGlyLyQyCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzIFVOWklQICIgZXh0cmFjdCBaSVAgYXJjaGl2ZSIgJworCQkobWtkaXIgJGRpciAmJiBjZCAkZGlyICYmICIkR0lUX1VOWklQIiAuLi8kemlwZmlsZSkKKwknCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzIFVOWklQICIgdmFsaWRhdGUgZmlsZW5hbWVzIiAiCisJCShjZCAke2Rpcl93aXRoX3ByZWZpeH1hICYmIGZpbmQgLikgfCBzb3J0ID4kbGlzdGZpbGUgJiYKKwkJdGVzdF9jbXAgYS5sc3QgJGxpc3RmaWxlCisJIgorCisJdGVzdF9leHBlY3Rfc3VjY2VzcyBVTlpJUCAiIHZhbGlkYXRlIGZpbGUgY29udGVudHMiICIKKwkJZGlmZiAtciBhICR7ZGlyX3dpdGhfcHJlZml4fWEKKwkiCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICdwb3B1bGF0ZSB3b3JrZGlyJyBcCisgICAgJ21rZGlyIGEgYiBjICYmCisgICAgIGVjaG8gc2ltcGxlIHRleHRmaWxlID5hL2EgJiYKKyAgICAgbWtkaXIgYS9iaW4gJiYKKyAgICAgY3AgL2Jpbi9zaCBhL2JpbiAmJgorICAgICBwcmludGYgIkFcJEZvcm1hdDolc1wkTyIgIiRTVUJTVEZPUk1BVCIgPmEvc3Vic3RmaWxlMSAmJgorICAgICBwcmludGYgIkEgbm90IHN1YnN0aXR1dGVkIE8iID5hL3N1YnN0ZmlsZTIgJiYKKyAgICAgKHA9bG9uZ19wYXRoX3RvX2FfZmlsZSAmJiBjZCBhICYmCisgICAgICBmb3IgZGVwdGggaW4gMSAyIDMgNCA1OyBkbyBta2RpciAkcCAmJiBjZCAkcDsgZG9uZSAmJgorICAgICAgZWNobyB0ZXh0ID5maWxlX3dpdGhfbG9uZ19wYXRoKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTLFVOWklQX1NZTUxJTktTICdhZGQgc3ltbGluaycgJworCWxuIC1zIGEgYS9zeW1saW5rX3RvX2EKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJlcGFyZSBmaWxlIGxpc3QnICcKKwkoY2QgYSAmJiBmaW5kIC4pIHwgc29ydCA+YS5sc3QKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisgICAgJ2FkZCBpZ25vcmVkIGZpbGUnIFwKKyAgICAnZWNobyBpZ25vcmUgbWUgPmEvaWdub3JlZCAmJgorICAgICBlY2hvIGlnbm9yZWQgZXhwb3J0LWlnbm9yZSA+LmdpdC9pbmZvL2F0dHJpYnV0ZXMnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICdhZGQgZmlsZXMgdG8gcmVwb3NpdG9yeScgXAorICAgICdmaW5kIGEgLXR5cGUgZiB8IHhhcmdzIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQgJiYKKyAgICAgZmluZCBhIC10eXBlIGwgfCB4YXJncyBnaXQgdXBkYXRlLWluZGV4IC0tYWRkICYmCisgICAgIHRyZWVpZD1gZ2l0IHdyaXRlLXRyZWVgICYmCisgICAgIGVjaG8gJHRyZWVpZCA+dHJlZWlkICYmCisgICAgIGdpdCB1cGRhdGUtcmVmIEhFQUQgJChUWj1HTVQgR0lUX0NPTU1JVFRFUl9EQVRFPSIyMDA1LTA1LTI3IDIyOjAwOjAwIiBcCisgICAgIGdpdCBjb21taXQtdHJlZSAkdHJlZWlkIDwvZGV2L251bGwpJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBleHBvcnQtc3Vic3QnICcKKwllY2hvICJzdWJzdGZpbGU/IiBleHBvcnQtc3Vic3QgPj4uZ2l0L2luZm8vYXR0cmlidXRlcyAmJgorCWdpdCBsb2cgLS1tYXgtY291bnQ9MSAiLS1wcmV0dHk9Zm9ybWF0OkEke1NVQlNURk9STUFUfU8iIEhFQUQgXAorCQk+YS9zdWJzdGZpbGUxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICdjcmVhdGUgYmFyZSBjbG9uZScgXAorICAgICdnaXQgY2xvbmUgLS1iYXJlIC4gYmFyZS5naXQgJiYKKyAgICAgY3AgLmdpdC9pbmZvL2F0dHJpYnV0ZXMgYmFyZS5naXQvaW5mby9hdHRyaWJ1dGVzJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAncmVtb3ZlIGlnbm9yZWQgZmlsZScgXAorICAgICdybSBhL2lnbm9yZWQnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICdnaXQgYXJjaGl2ZSAtLWZvcm1hdD16aXAnIFwKKyAgICAnZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9emlwIEhFQUQgPmQuemlwJworCitjaGVja196aXAgZAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9emlwIGluIGEgYmFyZSByZXBvJyBcCisgICAgJyhjZCBiYXJlLmdpdCAmJiBnaXQgYXJjaGl2ZSAtLWZvcm1hdD16aXAgSEVBRCkgPmQxLnppcCcKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisgICAgJ2dpdCBhcmNoaXZlIC0tZm9ybWF0PXppcCB2cy4gdGhlIHNhbWUgaW4gYSBiYXJlIHJlcG8nIFwKKyAgICAndGVzdF9jbXAgZC56aXAgZDEuemlwJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgYXJjaGl2ZSAtLWZvcm1hdD16aXAgd2l0aCAtLW91dHB1dCcgXAorICAgICdnaXQgYXJjaGl2ZSAtLWZvcm1hdD16aXAgLS1vdXRwdXQ9ZDIuemlwIEhFQUQgJiYKKyAgICB0ZXN0X2NtcCBkLnppcCBkMi56aXAnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBhcmNoaXZlIHdpdGggLS1vdXRwdXQsIGluZmVycmluZyBmb3JtYXQnICcKKwlnaXQgYXJjaGl2ZSAtLW91dHB1dD1kMy56aXAgSEVBRCAmJgorCXRlc3RfY21wIGQuemlwIGQzLnppcAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9emlwIHdpdGggcHJlZml4JyBcCisgICAgJ2dpdCBhcmNoaXZlIC0tZm9ybWF0PXppcCAtLXByZWZpeD1wcmVmaXgvIEhFQUQgPmUuemlwJworCitjaGVja196aXAgZSBwcmVmaXgvCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBhcmNoaXZlIC0wIC0tZm9ybWF0PXppcCBvbiBsYXJnZSBmaWxlcycgJworCXRlc3RfY29uZmlnIGNvcmUuYmlnZmlsZXRocmVzaG9sZCAxICYmCisJZ2l0IGFyY2hpdmUgLTAgLS1mb3JtYXQ9emlwIEhFQUQgPmxhcmdlLnppcAorJworCitjaGVja196aXAgbGFyZ2UKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9emlwIG9uIGxhcmdlIGZpbGVzJyAnCisJdGVzdF9jb25maWcgY29yZS5iaWdmaWxldGhyZXNob2xkIDEgJiYKKwlnaXQgYXJjaGl2ZSAtLWZvcm1hdD16aXAgSEVBRCA+bGFyZ2UtY29tcHJlc3NlZC56aXAKKycKKworY2hlY2tfemlwIGxhcmdlLWNvbXByZXNzZWQKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q1MDAzL2luZm96aXAtc3ltbGlua3MuemlwIGIvdC90NTAwMy9pbmZvemlwLXN5bWxpbmtzLnppcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjU3MjhjCi0tLSAvZGV2L251bGwKKysrIGIvdC90NTAwMy9pbmZvemlwLXN5bWxpbmtzLnppcApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90L3Q1MDA0LWFyY2hpdmUtY29ybmVyLWNhc2VzLnNoIGIvdC90NTAwNC1hcmNoaXZlLWNvcm5lci1jYXNlcy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42N2YzYjU0Ci0tLSAvZGV2L251bGwKKysrIGIvdC90NTAwNC1hcmNoaXZlLWNvcm5lci1jYXNlcy5zaApAQCAtMCwwICsxLDExNiBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J3Rlc3QgY29ybmVyIGNhc2VzIG9mIGdpdC1hcmNoaXZlJworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0ZSBjb21taXQgd2l0aCBlbXB0eSB0cmVlJyAnCisJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIGZvbworJworCisjIE1ha2UgYSBkaXIgYW5kIGNsZWFuIGl0IHVwIGFmdGVyd2FyZHMKK21ha2VfZGlyKCkgeworCW1rZGlyICIkMSIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiAnJDEnIgorfQorCisjIENoZWNrIHRoYXQgdGhlIGRpciBnaXZlbiBpbiAiJDEiIGNvbnRhaW5zIGV4YWN0bHkgdGhlCisjIHNldCBvZiBwYXRocyBnaXZlbiBhcyBhcmd1bWVudHMuCitjaGVja19kaXIoKSB7CisJZGlyPSQxOyBzaGlmdAorCXsKKwkJZWNobyAiJGRpciIgJiYKKwkJZm9yIGkgaW4gIiRAIjsgZG8KKwkJCWVjaG8gIiRkaXIvJGkiCisJCWRvbmUKKwl9IHwgc29ydCA+ZXhwZWN0ICYmCisJZmluZCAiJGRpciIgISAtbmFtZSBwYXhfZ2xvYmFsX2hlYWRlciAtcHJpbnQgfCBzb3J0ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCit9CisKKworIyBic2R0YXIvbGliYXJjaGl2ZSB2ZXJzaW9ucyBiZWZvcmUgMy4xLjMgY29uc2lkZXIgYSB0YXIgZmlsZSB3aXRoIGEKKyMgZ2xvYmFsIHBheCBoZWFkZXIgdGhhdCBpcyBub3QgZm9sbG93ZWQgYnkgYSBmaWxlIHJlY29yZCBhcyBjb3JydXB0LgoraWYgIiRUQVIiIHRmICIkVEVTVF9ESVJFQ1RPUlkiL3Q1MDA0L2VtcHR5LXdpdGgtcGF4LWhlYWRlci50YXIgPi9kZXYvbnVsbCAyPiYxCit0aGVuCisJdGVzdF9zZXRfcHJlcmVxIEhFQURFUl9PTkxZX1RBUl9PSworZmkKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBIRUFERVJfT05MWV9UQVJfT0sgJ3RhciBhcmNoaXZlIG9mIGNvbW1pdCB3aXRoIGVtcHR5IHRyZWUnICcKKwlnaXQgYXJjaGl2ZSAtLWZvcm1hdD10YXIgSEVBRCA+ZW1wdHktd2l0aC1wYXgtaGVhZGVyLnRhciAmJgorCW1ha2VfZGlyIGV4dHJhY3QgJiYKKwkiJFRBUiIgeGYgZW1wdHktd2l0aC1wYXgtaGVhZGVyLnRhciAtQyBleHRyYWN0ICYmCisJY2hlY2tfZGlyIGV4dHJhY3QKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndGFyIGFyY2hpdmUgb2YgZW1wdHkgdHJlZSBpcyBlbXB0eScgJworCWdpdCBhcmNoaXZlIC0tZm9ybWF0PXRhciBIRUFEOiA+ZW1wdHkudGFyICYmCisJcGVybCAtZSAicHJpbnQgXCJcXDBcIiB4IDEwMjQwIiA+MTBrbnVscy50YXIgJiYKKwl0ZXN0X2NtcCAxMGtudWxzLnRhciBlbXB0eS50YXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndGFyIGFyY2hpdmUgb2YgZW1wdHkgdHJlZSB3aXRoIHByZWZpeCcgJworCWdpdCBhcmNoaXZlIC0tZm9ybWF0PXRhciAtLXByZWZpeD1mb28vIEhFQUQgPnByZWZpeC50YXIgJiYKKwltYWtlX2RpciBleHRyYWN0ICYmCisJIiRUQVIiIHhmIHByZWZpeC50YXIgLUMgZXh0cmFjdCAmJgorCWNoZWNrX2RpciBleHRyYWN0IGZvbworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFVOWklQICd6aXAgYXJjaGl2ZSBvZiBlbXB0eSB0cmVlIGlzIGVtcHR5JyAnCisJIyBEZXRlY3QgdGhlIGV4aXQgY29kZSBwcm9kdWNlZCB3aGVuIG91ciBwYXJ0aWN1bGFyIGZsYXZvciBvZiB1bnppcAorCSMgc2VlcyBhbiBlbXB0eSBhcmNoaXZlLiBJbmZvemlwIHdpbGwgZ2VuZXJhdGUgYSB3YXJuaW5nIGFuZCBleGl0IHdpdGgKKwkjIGNvZGUgMS4gQnV0IGluIHRoZSBuYW1lIG9mIHNhbml0eSwgd2UgZG8gbm90IGV4cGVjdCBvdGhlciB1bnppcAorCSMgaW1wbGVtZW50YXRpb25zIHRvIGRvIHRoZSBzYW1lIHRoaW5nIChpdCB3b3VsZCBiZSBwZXJmZWN0bHkKKwkjIHJlYXNvbmFibGUgdG8gZXhpdCAwLCBmb3IgZXhhbXBsZSkuCisJIworCSMgVGhpcyBtYWtlcyBvdXIgdGVzdCBsZXNzIHJpZ29yb3VzIG9uIHNvbWUgcGxhdGZvcm1zICh1bnppcCBtYXkgbm90CisJIyBoYW5kbGUgdGhlIGVtcHR5IHJlcG8gYXQgYWxsLCBtYWtpbmcgb3VyIGxhdGVyIGNoZWNrIG9mIGl0cyBleGl0IGNvZGUKKwkjIGEgbm8tb3ApLiBCdXQgd2UgY2Fubm90IGRvIGFueXRoaW5nIHJlYXNvbmFibGUgZXhjZXB0IHNraXAgdGhlIHRlc3QKKwkjIG9uIHN1Y2ggcGxhdGZvcm1zIGFueXdheSwgYW5kIHRoaXMgaXMgdGhlIG1vcmFsIGVxdWl2YWxlbnQuCisJIiRHSVRfVU5aSVAiICIkVEVTVF9ESVJFQ1RPUlkiL3Q1MDA0L2VtcHR5LnppcAorCWV4cGVjdF9jb2RlPSQ/CisKKwlnaXQgYXJjaGl2ZSAtLWZvcm1hdD16aXAgSEVBRCA+ZW1wdHkuemlwICYmCisJbWFrZV9kaXIgZXh0cmFjdCAmJgorCSgKKwkJY2QgZXh0cmFjdCAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlICRleHBlY3RfY29kZSAiJEdJVF9VTlpJUCIgLi4vZW1wdHkuemlwCisJKSAmJgorCWNoZWNrX2RpciBleHRyYWN0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgVU5aSVAgJ3ppcCBhcmNoaXZlIG9mIGVtcHR5IHRyZWUgd2l0aCBwcmVmaXgnICcKKwkjIFdlIGRvIG5vdCBoYXZlIHRvIHBsYXkgZXhpdC1jb2RlIHRyaWNrcyBoZXJlLCBiZWNhdXNlIG91cgorCSMgcmVzdWx0IHNob3VsZCBub3QgYmUgZW1wdHk7IGl0IGhhcyBhIGRpcmVjdG9yeSBpbiBpdC4KKwlnaXQgYXJjaGl2ZSAtLWZvcm1hdD16aXAgLS1wcmVmaXg9Zm9vLyBIRUFEID5wcmVmaXguemlwICYmCisJbWFrZV9kaXIgZXh0cmFjdCAmJgorCSgKKwkJY2QgZXh0cmFjdCAmJgorCQkiJEdJVF9VTlpJUCIgLi4vcHJlZml4LnppcAorCSkgJiYKKwljaGVja19kaXIgZXh0cmFjdCBmb28KKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYXJjaGl2ZSBjb21wbGFpbnMgYWJvdXQgcGF0aHNwZWMgb24gZW1wdHkgdHJlZScgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBhcmNoaXZlIC0tZm9ybWF0PXRhciBIRUFEIC0tIGZvbyA+L2Rldi9udWxsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0ZSBhIGNvbW1pdCB3aXRoIGFuIGVtcHR5IHN1YnRyZWUnICcKKwllbXB0eV90cmVlPSQoZ2l0IGhhc2gtb2JqZWN0IC10IHRyZWUgL2Rldi9udWxsKSAmJgorCXJvb3RfdHJlZT0kKHByaW50ZiAiMDQwMDAwIHRyZWUgJGVtcHR5X3RyZWVcdHN1YlxuIiB8IGdpdCBta3RyZWUpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FyY2hpdmUgZW1wdHkgc3VidHJlZSB3aXRoIG5vIHBhdGhzcGVjJyAnCisJZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9dGFyICRyb290X3RyZWUgPnN1YnRyZWUtYWxsLnRhciAmJgorCW1ha2VfZGlyIGV4dHJhY3QgJiYKKwkiJFRBUiIgeGYgc3VidHJlZS1hbGwudGFyIC1DIGV4dHJhY3QgJiYKKwljaGVja19kaXIgZXh0cmFjdCBzdWIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYXJjaGl2ZSBlbXB0eSBzdWJ0cmVlIGJ5IGRpcmVjdCBwYXRoc3BlYycgJworCWdpdCBhcmNoaXZlIC0tZm9ybWF0PXRhciAkcm9vdF90cmVlIC0tIHN1YiA+c3VidHJlZS1wYXRoLnRhciAmJgorCW1ha2VfZGlyIGV4dHJhY3QgJiYKKwkiJFRBUiIgeGYgc3VidHJlZS1wYXRoLnRhciAtQyBleHRyYWN0ICYmCisJY2hlY2tfZGlyIGV4dHJhY3Qgc3ViCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NTAwNC9lbXB0eS13aXRoLXBheC1oZWFkZXIudGFyIGIvdC90NTAwNC9lbXB0eS13aXRoLXBheC1oZWFkZXIudGFyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhOWUzOWUKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q1MDA0L2VtcHR5LXdpdGgtcGF4LWhlYWRlci50YXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdC90NTAwNC9lbXB0eS56aXAgYi90L3Q1MDA0L2VtcHR5LnppcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTc2YmI2Ci0tLSAvZGV2L251bGwKKysrIGIvdC90NTAwNC9lbXB0eS56aXAKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdC90NTEwMC1tYWlsaW5mby5zaCBiL3QvdDUxMDAtbWFpbGluZm8uc2gKaW5kZXggODE5MDRkOS4uM2U2NGE3YSAxMDA3NTUKLS0tIGEvdC90NTEwMC1tYWlsaW5mby5zaAorKysgYi90L3Q1MTAwLW1haWxpbmZvLnNoCkBAIC0xMSw3ICsxMSw3IEBACiAJJ2dpdCBtYWlsc3BsaXQgLW8uICIkVEVTVF9ESVJFQ1RPUlkiL3Q1MTAwL3NhbXBsZS5tYm94ID5sYXN0ICYmCiAJbGFzdD1gY2F0IGxhc3RgICYmCiAJZWNobyB0b3RhbCBpcyAkbGFzdCAmJgotCXRlc3QgYGNhdCBsYXN0YCA9IDE2JworCXRlc3QgYGNhdCBsYXN0YCA9IDE3JwogCiBjaGVja19tYWlsaW5mbyAoKSB7CiAJbWFpbD0kMSBvcHQ9JDIKZGlmZiAtLWdpdCBhL3QvdDUxMDAvaW5mbzAwMTcgYi90L3Q1MTAwL2luZm8wMDE3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYmM4OWYKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q1MTAwL2luZm8wMDE3CkBAIC0wLDAgKzEsNSBAQAorQXV0aG9yOiBBIFUgVGhvcgorRW1haWw6IGEudS50aG9yQGV4YW1wbGUuY29tCitTdWJqZWN0OiBBIEUgSSBPIFUKK0RhdGU6IE1vbiwgMTcgU2VwIDIwMTIgMTQ6MjM6NDQgLTA3MDAKKwpkaWZmIC0tZ2l0IGEvdC90NTEwMC9tc2cwMDE3IGIvdC90NTEwMC9tc2cwMDE3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZTA5MDAKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q1MTAwL21zZzAwMTcKQEAgLTAsMCArMSwyIEBACitOZXcgY29udGVudCBoZXJlCisKZGlmZiAtLWdpdCBhL3QvdDUxMDAvcGF0Y2gwMDE3IGIvdC90NTEwMC9wYXRjaDAwMTcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVjZjg0YwotLS0gL2Rldi9udWxsCisrKyBiL3QvdDUxMDAvcGF0Y2gwMDE3CkBAIC0wLDAgKzEsNiBAQAorZGlmZiAtLWdpdCBhL2ZvbyBiL2ZvbworaW5kZXggZTY5ZGUyOS4uZDk1ZjNhZCAxMDA2NDQKKy0tLSBhL2ZvbworKysrIGIvZm9vCitAQCAtMCwwICsxIEBACisrTmV3IGNvbnRlbnQKZGlmZiAtLWdpdCBhL3QvdDUxMDAvc2FtcGxlLm1ib3ggYi90L3Q1MTAwL3NhbXBsZS5tYm94CmluZGV4IDM0YTA5YTAuLjhiMmFlMDYgMTAwNjQ0Ci0tLSBhL3QvdDUxMDAvc2FtcGxlLm1ib3gKKysrIGIvdC90NTEwMC9zYW1wbGUubWJveApAQCAtNjgzLDMgKzY4MywxOSBAQAogQEAgLTAsMCArMSBAQAogK2NvbnRlbnQKIAorRnJvbSBub2JvZHkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBIFUgVGhvciA8YS51LnRob3JAZXhhbXBsZS5jb20+CitTdWJqZWN0OiBBIEUgSSBPIFUKK0RhdGU6IE1vbiwgMTcgU2VwIDIwMTIgMTQ6MjM6NDQgLTA3MDAKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9Imlzby0yMDIyLWpwIgorQ29udGVudC10eXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJVVEYtOCIKKworTmV3IGNvbnRlbnQgaGVyZQorCitkaWZmIC0tZ2l0IGEvZm9vIGIvZm9vCitpbmRleCBlNjlkZTI5Li5kOTVmM2FkIDEwMDY0NAorLS0tIGEvZm9vCisrKysgYi9mb28KK0BAIC0wLDAgKzEgQEAKKytOZXcgY29udGVudApkaWZmIC0tZ2l0IGEvdC90NTMwMC1wYWNrLW9iamVjdC5zaCBiL3QvdDUzMDAtcGFjay1vYmplY3Quc2gKaW5kZXggZDlkODU2Yi4uYTA3Yzg3MSAxMDA3NTUKLS0tIGEvdC90NTMwMC1wYWNrLW9iamVjdC5zaAorKysgYi90L3Q1MzAwLXBhY2stb2JqZWN0LnNoCkBAIC0xMyw5ICsxMyw5IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnc2V0dXAnIFwKICAgICAncm0gLWYgLmdpdC9pbmRleCogJiYKLSAgICAgcGVybCAtZSAicHJpbnQgXCJhXCIgeCA0MDk2OyIgPiBhICYmCi0gICAgIHBlcmwgLWUgInByaW50IFwiYlwiIHggNDA5NjsiID4gYiAmJgotICAgICBwZXJsIC1lICJwcmludCBcImNcIiB4IDQwOTY7IiA+IGMgJiYKKyAgICAgIiRQRVJMX1BBVEgiIC1lICJwcmludCBcImFcIiB4IDQwOTY7IiA+IGEgJiYKKyAgICAgIiRQRVJMX1BBVEgiIC1lICJwcmludCBcImJcIiB4IDQwOTY7IiA+IGIgJiYKKyAgICAgIiRQRVJMX1BBVEgiIC1lICJwcmludCBcImNcIiB4IDQwOTY7IiA+IGMgJiYKICAgICAgdGVzdC1nZW5yYW5kb20gInNlZWQgYSIgMjA5NzE1MiA+IGFfYmlnICYmCiAgICAgIHRlc3QtZ2VucmFuZG9tICJzZWVkIGIiIDIwOTcxNTIgPiBiX2JpZyAmJgogICAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIGEgYV9iaWcgYiBiX2JpZyBjICYmCkBAIC0xMjksNyArMTI5LDcgQEAKIGNkICIkVFJBU0giCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbXBhcmUgZGVsdGEgZmxhdm9ycycgJwotCXBlcmwgLWUgJ1wnJworCSIkUEVSTF9QQVRIIiAtZSAnXCcnCiAJCWRlZmluZWQoJF8gPSAtcyAkXykgb3IgZGllIGZvciBAQVJHVjsKIAkJZXhpdCAxIGlmICRBUkdWWzBdIDw9ICRBUkdWWzFdOwogCSdcJycgdGVzdC0yLSRwYWNrbmFtZV8yLnBhY2sgdGVzdC0zLSRwYWNrbmFtZV8zLnBhY2sKQEAgLTQxNiw2ICs0MTYsMTEgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdtYWtlIHN1cmUgaW5kZXgtcGFjayBkZXRlY3RzIHRoZSBTSEExIGNvbGxpc2lvbicgXAogICAgICd0ZXN0X211c3RfZmFpbCBnaXQgaW5kZXgtcGFjayAtbyBiYWQuaWR4IHRlc3QtMy5wYWNrIDI+bXNnICYmCi0gICAgIGdyZXAgIlNIQTEgQ09MTElTSU9OIEZPVU5EIiBtc2cnCisgICAgIHRlc3RfaTE4bmdyZXAgIlNIQTEgQ09MTElTSU9OIEZPVU5EIiBtc2cnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICdtYWtlIHN1cmUgaW5kZXgtcGFjayBkZXRlY3RzIHRoZSBTSEExIGNvbGxpc2lvbiAobGFyZ2UgYmxvYnMpJyBcCisgICAgJ3Rlc3RfbXVzdF9mYWlsIGdpdCAtYyBjb3JlLmJpZ2ZpbGV0aHJlc2hvbGQ9MSBpbmRleC1wYWNrIC1vIGJhZC5pZHggdGVzdC0zLnBhY2sgMj5tc2cgJiYKKyAgICAgdGVzdF9pMThuZ3JlcCAiU0hBMSBDT0xMSVNJT04gRk9VTkQiIG1zZycKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q1MzAzLXBhY2stY29ycnVwdGlvbi1yZXNpbGllbmNlLnNoIGIvdC90NTMwMy1wYWNrLWNvcnJ1cHRpb24tcmVzaWxpZW5jZS5zaAppbmRleCA1ZjZjZDRmLi41YjEyNTBmIDEwMDc1NQotLS0gYS90L3Q1MzAzLXBhY2stY29ycnVwdGlvbi1yZXNpbGllbmNlLnNoCisrKyBiL3QvdDUzMDMtcGFjay1jb3JydXB0aW9uLXJlc2lsaWVuY2Uuc2gKQEAgLTk4LDcgKzk4LDcgQEAKICAgICAnY3JlYXRlX25ld19wYWNrICYmCiAgICAgIGdpdCBwcnVuZS1wYWNrZWQgJiYKICAgICAgY2htb2QgK3cgJHtwYWNrfS5wYWNrICYmCi0gICAgIHBlcmwgLWkuYmFrIC1wZSAicy8gYmFzZSAvYWJjZGVmLyIgJHtwYWNrfS5wYWNrICYmCisgICAgICIkUEVSTF9QQVRIIiAtaS5iYWsgLXBlICJzLyBiYXNlIC9hYmNkZWYvIiAke3BhY2t9LnBhY2sgJiYKICAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMSA+IC9kZXYvbnVsbCAmJgogICAgICB0ZXN0X211c3RfZmFpbCBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8yID4gL2Rldi9udWxsICYmCiAgICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPiAvZGV2L251bGwnCkBAIC0xNTUsNyArMTU1LDcgQEAKICAgICAnY3JlYXRlX25ld19wYWNrICYmCiAgICAgIGdpdCBwcnVuZS1wYWNrZWQgJiYKICAgICAgY2htb2QgK3cgJHtwYWNrfS5wYWNrICYmCi0gICAgIHBlcmwgLWkuYmFrIC1wZSAicy8gZGVsdGExIC9hYmNkZWZnaC8iICR7cGFja30ucGFjayAmJgorICAgICAiJFBFUkxfUEFUSCIgLWkuYmFrIC1wZSAicy8gZGVsdGExIC9hYmNkZWZnaC8iICR7cGFja30ucGFjayAmJgogICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8xID4gL2Rldi9udWxsICYmCiAgICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzIgPiAvZGV2L251bGwgJiYKICAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMyA+IC9kZXYvbnVsbCcKZGlmZiAtLWdpdCBhL3QvdDUzMDQtcHJ1bmUuc2ggYi90L3Q1MzA0LXBydW5lLnNoCmluZGV4IGQ2NDUzMjguLmU0YmIzYTEgMTAwNzU1Ci0tLSBhL3QvdDUzMDQtcHJ1bmUuc2gKKysrIGIvdC90NTMwNC1wcnVuZS5zaApAQCAtMTk1LDQgKzE5NSwzMCBAQAogCSkKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2FyYmFnZSByZXBvcnQgaW4gY291bnQtb2JqZWN0cyAtdicgJworCTogPi5naXQvb2JqZWN0cy9wYWNrL2ZvbyAmJgorCTogPi5naXQvb2JqZWN0cy9wYWNrL2Zvby5iYXIgJiYKKwk6ID4uZ2l0L29iamVjdHMvcGFjay9mb28ua2VlcCAmJgorCTogPi5naXQvb2JqZWN0cy9wYWNrL2Zvby5wYWNrICYmCisJOiA+LmdpdC9vYmplY3RzL3BhY2svZmFrZS5iYXIgJiYKKwk6ID4uZ2l0L29iamVjdHMvcGFjay9mYWtlLmtlZXAgJiYKKwk6ID4uZ2l0L29iamVjdHMvcGFjay9mYWtlLnBhY2sgJiYKKwk6ID4uZ2l0L29iamVjdHMvcGFjay9mYWtlLmlkeCAmJgorCTogPi5naXQvb2JqZWN0cy9wYWNrL2Zha2UyLmtlZXAgJiYKKwk6ID4uZ2l0L29iamVjdHMvcGFjay9mYWtlMy5pZHggJiYKKwlnaXQgY291bnQtb2JqZWN0cyAtdiAyPnN0ZGVyciAmJgorCWdyZXAgImluZGV4IGZpbGUgLmdpdC9vYmplY3RzL3BhY2svZmFrZS5pZHggaXMgdG9vIHNtYWxsIiBzdGRlcnIgJiYKKwlncmVwICJed2FybmluZzoiIHN0ZGVyciB8IHNvcnQgPmFjdHVhbCAmJgorCWNhdCA+ZXhwZWN0ZWQgPDxcRU9GICYmCit3YXJuaW5nOiBnYXJiYWdlIGZvdW5kOiAuZ2l0L29iamVjdHMvcGFjay9mYWtlLmJhcgord2FybmluZzogZ2FyYmFnZSBmb3VuZDogLmdpdC9vYmplY3RzL3BhY2svZm9vCit3YXJuaW5nOiBnYXJiYWdlIGZvdW5kOiAuZ2l0L29iamVjdHMvcGFjay9mb28uYmFyCit3YXJuaW5nOiBubyBjb3JyZXNwb25kaW5nIC5pZHggbm9yIC5wYWNrOiAuZ2l0L29iamVjdHMvcGFjay9mYWtlMi5rZWVwCit3YXJuaW5nOiBubyBjb3JyZXNwb25kaW5nIC5pZHg6IC5naXQvb2JqZWN0cy9wYWNrL2Zvby5rZWVwCit3YXJuaW5nOiBubyBjb3JyZXNwb25kaW5nIC5pZHg6IC5naXQvb2JqZWN0cy9wYWNrL2Zvby5wYWNrCit3YXJuaW5nOiBubyBjb3JyZXNwb25kaW5nIC5wYWNrOiAuZ2l0L29iamVjdHMvcGFjay9mYWtlMy5pZHgKK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDU0MDAtc2VuZC1wYWNrLnNoIGIvdC90NTQwMC1zZW5kLXBhY2suc2gKaW5kZXggMGVhY2UzNy4uMTI5ZmM4OCAxMDA3NTUKLS0tIGEvdC90NTQwMC1zZW5kLXBhY2suc2gKKysrIGIvdC90NTQwMC1zZW5kLXBhY2suc2gKQEAgLTE0NSw2ICsxNDUsNDAgQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlY2VpdmUtcGFjayBydW5zIGF1dG8tZ2MgaW4gcmVtb3RlIHJlcG8nICcKKwlybSAtcmYgcGFyZW50IGNoaWxkICYmCisJZ2l0IGluaXQgcGFyZW50ICYmCisJKAorCSAgICAjIFNldHVwIGEgcmVwbyB3aXRoIDIgcGFja3MKKwkgICAgY2QgcGFyZW50ICYmCisJICAgIGVjaG8gIlNvbWUgdGV4dCIgPmZpbGUudHh0ICYmCisJICAgIGdpdCBhZGQgLiAmJgorCSAgICBnaXQgY29tbWl0IC1tICJJbml0aWFsIGNvbW1pdCIgJiYKKwkgICAgZ2l0IHJlcGFjayAtYWRsICYmCisJICAgIGVjaG8gIlNvbWUgbW9yZSB0ZXh0IiA+PmZpbGUudHh0ICYmCisJICAgIGdpdCBjb21taXQgLWEgLW0gIlNlY29uZCBjb21taXQiICYmCisJICAgIGdpdCByZXBhY2sKKwkpICYmCisJY3AgLVIgcGFyZW50IGNoaWxkICYmCisJKAorCSAgICAjIFNldCB0aGUgY2hpbGQgdG8gYXV0by1wYWNrIGlmIG1vcmUgdGhhbiBvbmUgcGFjayBleGlzdHMKKwkgICAgY2QgY2hpbGQgJiYKKwkgICAgZ2l0IGNvbmZpZyBnYy5hdXRvcGFja2xpbWl0IDEgJiYKKwkgICAgZ2l0IGJyYW5jaCB0ZXN0X2F1dG9fZ2MgJiYKKwkgICAgIyBBbmQgY3JlYXRlIGEgZmlsZSB0aGF0IGZvbGxvd3MgdGhlIHRlbXBvcmFyeSBvYmplY3QgbmFtaW5nCisJICAgICMgY29udmVudGlvbiBmb3IgdGhlIGF1dG8tZ2MgdG8gcmVtb3ZlCisJICAgIDogPi5naXQvb2JqZWN0cy90bXBfdGVzdF9vYmplY3QgJiYKKwkgICAgdGVzdC1jaG10aW1lID0tMTIwOTYwMSAuZ2l0L29iamVjdHMvdG1wX3Rlc3Rfb2JqZWN0CisJKSAmJgorCSgKKwkgICAgY2QgcGFyZW50ICYmCisJICAgIGVjaG8gIkV2ZW4gbW9yZSB0ZXh0IiA+PmZpbGUudHh0ICYmCisJICAgIGdpdCBjb21taXQgLWEgLW0gIlRoaXJkIGNvbW1pdCIgJiYKKwkgICAgZ2l0IHNlbmQtcGFjayAuLi9jaGlsZCBIRUFEOnJlZnMvaGVhZHMvdGVzdF9hdXRvX2djCisJKSAmJgorCXRlc3QgISAtZSBjaGlsZC8uZ2l0L29iamVjdHMvdG1wX3Rlc3Rfb2JqZWN0CisnCisKIHJld291bmRfcHVzaF9zZXR1cCgpIHsKIAlybSAtcmYgcGFyZW50IGNoaWxkICYmCiAJbWtkaXIgcGFyZW50ICYmCmRpZmYgLS1naXQgYS90L3Q1NDA0LXRyYWNraW5nLWJyYW5jaGVzLnNoIGIvdC90NTQwNC10cmFja2luZy1icmFuY2hlcy5zaAppbmRleCBjMjQwMDM1Li4yYjhjMGJhIDEwMDc1NQotLS0gYS90L3Q1NDA0LXRyYWNraW5nLWJyYW5jaGVzLnNoCisrKyBiL3QvdDU0MDQtdHJhY2tpbmctYnJhbmNoZXMuc2gKQEAgLTM2LDcgKzM2LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWl4ZWQtc3VjY2VzcyBwdXNoIHJldHVybnMgZXJyb3InICcKLQl0ZXN0X211c3RfZmFpbCBnaXQgcHVzaAorCXRlc3RfbXVzdF9mYWlsIGdpdCBwdXNoIG9yaWdpbiA6CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIHRyYWNraW5nIGJyYW5jaGVzIHVwZGF0ZWQgY29ycmVjdGx5IGFmdGVyIHB1c2gnICcKZGlmZiAtLWdpdCBhL3QvdDU1MDAtZmV0Y2gtcGFjay5zaCBiL3QvdDU1MDAtZmV0Y2gtcGFjay5zaAppbmRleCAxZDFjYTk4Li5mZDI1OThlIDEwMDc1NQotLS0gYS90L3Q1NTAwLWZldGNoLXBhY2suc2gKKysrIGIvdC90NTUwMC1mZXRjaC1wYWNrLnNoCkBAIC0xMjUsMTYgKzEyNSwzNyBAQAogCXRlc3RfY21wIGV4cGVjdGVkIGNvdW50LnNpbmdsZWJyYW5jaAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaW5nbGUgZ2l2ZW4gYnJhbmNoIGNsb25lJyAnCisJZ2l0IGNsb25lIC0tc2luZ2xlLWJyYW5jaCAtLWJyYW5jaCBBICJmaWxlOi8vJChwd2QpLy4iIGJyYW5jaC1hICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IC0tZ2l0LWRpcj1icmFuY2gtYS8uZ2l0IHJldi1wYXJzZSBvcmlnaW4vQgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBzaGFsbG93IGRlcHRoIDEnICcKKwlnaXQgY2xvbmUgLS1uby1zaW5nbGUtYnJhbmNoIC0tZGVwdGggMSAiZmlsZTovLyQocHdkKS8uIiBzaGFsbG93MCAmJgorCXRlc3QgImBnaXQgLS1naXQtZGlyPXNoYWxsb3cwLy5naXQgcmV2LWxpc3QgLS1jb3VudCBIRUFEYCIgPSAxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIHNoYWxsb3cgZGVwdGggMSB3aXRoIGZzY2snICcKKwlnaXQgY29uZmlnIC0tZ2xvYmFsIGZldGNoLmZzY2tvYmplY3RzIHRydWUgJiYKKwlnaXQgY2xvbmUgLS1uby1zaW5nbGUtYnJhbmNoIC0tZGVwdGggMSAiZmlsZTovLyQocHdkKS8uIiBzaGFsbG93MGZzY2sgJiYKKwl0ZXN0ICJgZ2l0IC0tZ2l0LWRpcj1zaGFsbG93MGZzY2svLmdpdCByZXYtbGlzdCAtLWNvdW50IEhFQURgIiA9IDEgJiYKKwlnaXQgY29uZmlnIC0tZ2xvYmFsIC0tdW5zZXQgZmV0Y2guZnNja29iamVjdHMKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgc2hhbGxvdycgJwogCWdpdCBjbG9uZSAtLW5vLXNpbmdsZS1icmFuY2ggLS1kZXB0aCAyICJmaWxlOi8vJChwd2QpLy4iIHNoYWxsb3cKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgc2hhbGxvdyBkZXB0aCBjb3VudCcgJworCXRlc3QgImBnaXQgLS1naXQtZGlyPXNoYWxsb3cvLmdpdCByZXYtbGlzdCAtLWNvdW50IEhFQURgIiA9IDIKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgc2hhbGxvdyBvYmplY3QgY291bnQnICcKIAkoCiAJCWNkIHNoYWxsb3cgJiYKIAkJZ2l0IGNvdW50LW9iamVjdHMgLXYKIAkpID4gY291bnQuc2hhbGxvdyAmJgotCWdyZXAgIl5pbi1wYWNrOiAxOCIgY291bnQuc2hhbGxvdworCWdyZXAgIl5pbi1wYWNrOiAxMiIgY291bnQuc2hhbGxvdwogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBzaGFsbG93IG9iamVjdCBjb3VudCAocGFydCAyKScgJwpAQCAtMjUxLDEyICsyNzIsMzYgQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIHNoYWxsb3cgZGVwdGggY291bnQnICcKKwl0ZXN0ICJgZ2l0IC0tZ2l0LWRpcj1zaGFsbG93Ly5naXQgcmV2LWxpc3QgLS1jb3VudCBIRUFEYCIgPSAxMQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBzaGFsbG93IG9iamVjdCBjb3VudCcgJwogCSgKIAkJY2Qgc2hhbGxvdyAmJgogCQlnaXQgY291bnQtb2JqZWN0cyAtdgogCSkgPiBjb3VudC5zaGFsbG93ICYmCi0JZ3JlcCAiXmNvdW50OiA1MiIgY291bnQuc2hhbGxvdworCWdyZXAgIl5jb3VudDogNTUiIGNvdW50LnNoYWxsb3cKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggLS1uby1zaGFsbG93IG9uIGZ1bGwgcmVwbycgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBmZXRjaCAtLW5vc2hhbGxvdworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCAtLWRlcHRoIC0tbm8tc2hhbGxvdycgJworCSgKKwkJY2Qgc2hhbGxvdyAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgZmV0Y2ggLS1kZXB0aD0xIC0tbm9zaGFsbG93CisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0dXJuIHNoYWxsb3cgdG8gY29tcGxldGUgcmVwb3NpdG9yeScgJworCSgKKwkJY2Qgc2hhbGxvdyAmJgorCQlnaXQgZmV0Y2ggLS11bnNoYWxsb3cgJiYKKwkJISB0ZXN0IC1mIC5naXQvc2hhbGxvdyAmJgorCQlnaXQgZnNjayAtLWZ1bGwKKwkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIHNoYWxsb3cgd2l0aG91dCAtLW5vLXNpbmdsZS1icmFuY2gnICcKQEAgLTI2OCw3ICszMTMsNyBAQAogCQljZCBzaGFsbG93MiAmJgogCQlnaXQgY291bnQtb2JqZWN0cyAtdgogCSkgPiBjb3VudC5zaGFsbG93MiAmJgotCWdyZXAgIl5pbi1wYWNrOiA2IiBjb3VudC5zaGFsbG93MgorCWdyZXAgIl5pbi1wYWNrOiAzIiBjb3VudC5zaGFsbG93MgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBzaGFsbG93IHdpdGggLS1icmFuY2gnICcKQEAgLTI3Niw3ICszMjEsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBzaGFsbG93IG9iamVjdCBjb3VudCcgJwotCWVjaG8gImluLXBhY2s6IDEyIiA+IGNvdW50My5leHBlY3RlZCAmJgorCWVjaG8gImluLXBhY2s6IDMiID4gY291bnQzLmV4cGVjdGVkICYmCiAJR0lUX0RJUj1zaGFsbG93My8uZ2l0IGdpdCBjb3VudC1vYmplY3RzIC12IHwKIAkJZ3JlcCAiXmluLXBhY2siID4gY291bnQzLmFjdHVhbCAmJgogCXRlc3RfY21wIGNvdW50My5leHBlY3RlZCBjb3VudDMuYWN0dWFsCkBAIC0zMDUsNyArMzUwLDcgQEAKIAlHSVRfRElSPXNoYWxsb3c2Ly5naXQgZ2l0IHRhZyAtbCA+dGFnbGlzdC5hY3R1YWwgJiYKIAl0ZXN0X2NtcCB0YWdsaXN0LmV4cGVjdGVkIHRhZ2xpc3QuYWN0dWFsICYmCiAKLQllY2hvICJpbi1wYWNrOiA3IiA+IGNvdW50Ni5leHBlY3RlZCAmJgorCWVjaG8gImluLXBhY2s6IDQiID4gY291bnQ2LmV4cGVjdGVkICYmCiAJR0lUX0RJUj1zaGFsbG93Ni8uZ2l0IGdpdCBjb3VudC1vYmplY3RzIC12IHwKIAkJZ3JlcCAiXmluLXBhY2siID4gY291bnQ2LmFjdHVhbCAmJgogCXRlc3RfY21wIGNvdW50Ni5leHBlY3RlZCBjb3VudDYuYWN0dWFsCkBAIC0zMjAsMTIgKzM2NSwzNSBAQAogCUdJVF9ESVI9c2hhbGxvdzcvLmdpdCBnaXQgdGFnIC1sID50YWdsaXN0LmFjdHVhbCAmJgogCXRlc3RfY21wIHRhZ2xpc3QuZXhwZWN0ZWQgdGFnbGlzdC5hY3R1YWwgJiYKIAotCWVjaG8gImluLXBhY2s6IDciID4gY291bnQ3LmV4cGVjdGVkICYmCisJZWNobyAiaW4tcGFjazogNCIgPiBjb3VudDcuZXhwZWN0ZWQgJiYKIAlHSVRfRElSPXNoYWxsb3c3Ly5naXQgZ2l0IGNvdW50LW9iamVjdHMgLXYgfAogCQlncmVwICJeaW4tcGFjayIgPiBjb3VudDcuYWN0dWFsICYmCiAJdGVzdF9jbXAgY291bnQ3LmV4cGVjdGVkIGNvdW50Ny5hY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgc2hhbGxvdyB3aXRoIHBhY2tlZCByZWZzJyAnCisJZ2l0IHBhY2stcmVmcyAtLWFsbCAmJgorCWdpdCBjbG9uZSAtLWRlcHRoIDEgLS1icmFuY2ggQSAiZmlsZTovLyQocHdkKS8uIiBzaGFsbG93OCAmJgorCWVjaG8gImluLXBhY2s6IDQiID4gY291bnQ4LmV4cGVjdGVkICYmCisJR0lUX0RJUj1zaGFsbG93OC8uZ2l0IGdpdCBjb3VudC1vYmplY3RzIC12IHwKKwkJZ3JlcCAiXmluLXBhY2siID4gY291bnQ4LmFjdHVhbCAmJgorCXRlc3RfY21wIGNvdW50OC5leHBlY3RlZCBjb3VudDguYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZldGNoIGluIHNoYWxsb3cgcmVwbyB1bnJlYWNoYWJsZSBzaGFsbG93IG9iamVjdHMnICcKKwkoCisJCWdpdCBjbG9uZSAtLWJhcmUgLS1icmFuY2ggQiAtLXNpbmdsZS1icmFuY2ggImZpbGU6Ly8kKHB3ZCkvLiIgbm8tcmVmbG9nICYmCisJCWdpdCBjbG9uZSAtLWRlcHRoIDEgImZpbGU6Ly8kKHB3ZCkvbm8tcmVmbG9nIiBzaGFsbG93OSAmJgorCQljZCBuby1yZWZsb2cgJiYKKwkJZ2l0IHRhZyAtZCBUQUdCMSBUQUdCMiAmJgorCQlnaXQgdXBkYXRlLXJlZiByZWZzL2hlYWRzL0IgQn5+ICYmCisJCWdpdCBnYyAtLXBydW5lPW5vdyAmJgorCQljZCAuLi9zaGFsbG93OSAmJgorCQlnaXQgZmV0Y2ggb3JpZ2luICYmCisJCWdpdCBmc2NrIC0tbm8tZGFuZ2xpbmcKKwkpCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHRlc3RzIGZvciB0aGUgLS1zdGRpbiBwYXJhbWV0ZXInICcKIAlmb3IgaGVhZCBpbiBDIEQgRSBGCiAJZG8KQEAgLTM4NiwxMCArNDU0LDU1IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IGR1cGxpY2F0ZSByZWZzIGZyb20gc3RkaW4nICcKIAkoCiAJY2QgY2xpZW50ICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IGZldGNoLXBhY2sgLS1zdGRpbiAtLW5vLXByb2dyZXNzIC4uIDwuLi9pbnB1dC5kdXAKKwlnaXQgZmV0Y2gtcGFjayAtLXN0ZGluIC0tbm8tcHJvZ3Jlc3MgLi4gPC4uL2lucHV0LmR1cAogCSkgPm91dHB1dCAmJgogCWN1dCAtZCAiICIgLWYgMiA8b3V0cHV0IHwgc29ydCA+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXQgdXAgdGVzdHMgb2YgbWlzc2luZyByZWZlcmVuY2UnICcKKwljYXQgPmV4cGVjdC1lcnJvciA8PC1cRU9GCisJZXJyb3I6IG5vIHN1Y2ggcmVtb3RlIHJlZiByZWZzL2hlYWRzL3h5enp5CisJRU9GCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgbG9uZWx5IG1pc3NpbmcgcmVmJyAnCisJKAorCQljZCBjbGllbnQgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IGZldGNoLXBhY2sgLS1uby1wcm9ncmVzcyAuLiByZWZzL2hlYWRzL3h5enp5CisJKSA+L2Rldi9udWxsIDI+ZXJyb3ItbSAmJgorCXRlc3RfY21wIGV4cGVjdC1lcnJvciBlcnJvci1tCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgbWlzc2luZyByZWYgYWZ0ZXIgZXhpc3RpbmcnICcKKwkoCisJCWNkIGNsaWVudCAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgZmV0Y2gtcGFjayAtLW5vLXByb2dyZXNzIC4uIHJlZnMvaGVhZHMvQSByZWZzL2hlYWRzL3h5enp5CisJKSA+L2Rldi9udWxsIDI+ZXJyb3ItZW0gJiYKKwl0ZXN0X2NtcCBleHBlY3QtZXJyb3IgZXJyb3ItZW0KKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCBtaXNzaW5nIHJlZiBiZWZvcmUgZXhpc3RpbmcnICcKKwkoCisJCWNkIGNsaWVudCAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgZmV0Y2gtcGFjayAtLW5vLXByb2dyZXNzIC4uIHJlZnMvaGVhZHMveHl6enkgcmVmcy9oZWFkcy9BCisJKSA+L2Rldi9udWxsIDI+ZXJyb3ItbWUgJiYKKwl0ZXN0X2NtcCBleHBlY3QtZXJyb3IgZXJyb3ItbWUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCAtLWFsbCwgLS1kZXB0aCwgYW5kIGV4cGxpY2l0IGhlYWQnICcKKwkoCisJCWNkIGNsaWVudCAmJgorCQlnaXQgZmV0Y2gtcGFjayAtLW5vLXByb2dyZXNzIC0tYWxsIC0tZGVwdGg9MSAuLiByZWZzL2hlYWRzL0EKKwkpID5vdXQtYWRoIDI+ZXJyb3ItYWRoCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgLS1hbGwsIC0tZGVwdGgsIGFuZCBleHBsaWNpdCB0YWcnICcKKwlnaXQgdGFnIE9MRFRBRyByZWZzL2hlYWRzL0J+NSAmJgorCSgKKwkJY2QgY2xpZW50ICYmCisJCWdpdCBmZXRjaC1wYWNrIC0tbm8tcHJvZ3Jlc3MgLS1hbGwgLS1kZXB0aD0xIC4uIHJlZnMvdGFncy9PTERUQUcKKwkpID5vdXQtYWR0IDI+ZXJyb3ItYWR0CisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NTUwMy10YWdmb2xsb3cuc2ggYi90L3Q1NTAzLXRhZ2ZvbGxvdy5zaAppbmRleCA2MGRlMmQ2Li5mMzBjMDM4IDEwMDc1NQotLS0gYS90L3Q1NTAzLXRhZ2ZvbGxvdy5zaAorKysgYi90L3Q1NTAzLXRhZ2ZvbGxvdy5zaApAQCAtNCwxMCArNCw2IEBACiAKIC4gLi90ZXN0LWxpYi5zaAogCi1pZiAhIHRlc3RfaGF2ZV9wcmVyZXEgTk9UX01JTkdXOyB0aGVuCi0Jc2F5ICJHSVRfREVCVUdfU0VORF9QQUNLIG5vdCBzdXBwb3J0ZWQgLSBza2lwcGluZyB0ZXN0cyIKLWZpCi0KICMgRW5kIHN0YXRlIG9mIHRoZSByZXBvc2l0b3J5OgogIwogIyAgICAgICAgIFQgLSB0YWcxICAgICAgICAgIFMgLSB0YWcyCkBAIC0xNyw3ICsxMyw3IEBACiAjICAgICBcICAgQyAtIG9yaWdpbi9jYXQgICAgXAogIyAgICAgIG9yaWdpbi9tYXN0ZXIgICAgICAgICBtYXN0ZXIKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBOT1RfTUlOR1cgc2V0dXAgJwordGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCiAJdGVzdF90aWNrICYmCiAJZWNobyBpY2hpID5maWxlICYmCiAJZ2l0IGFkZCBmaWxlICYmCkBAIC0zOSwyOCArMzUsMzUgQEAKICcKIAogVT1VUExPQURfTE9HCitVUEFUSD0iJChwd2QpLyRVIgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIE5PVF9NSU5HVyAnc2V0dXAgZXhwZWN0JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBleHBlY3QnICcKIGNhdCAtIDw8RU9GID5leHBlY3QKLSNTCiB3YW50ICRBCi0jRQogRU9GCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgTk9UX01JTkdXICdmZXRjaCBBIChuZXcgY29tbWl0IDogMSBjb25uZWN0aW9uKScgJworZ2V0X25lZWRzICgpIHsKKwl0ZXN0IC1zICIkMSIgJiYKKwlwZXJsIC1hbG5lICcKKwkJbmV4dCB1bmxlc3MgJEZbMV0gZXEgInVwbG9hZC1wYWNrPCI7CisJCWxhc3QgaWYgJEZbMl0gZXEgIjAwMDAiOworCQlwcmludCAkRlsyXSwgIiAiLCAkRlszXTsKKwknICIkMSIKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggQSAobmV3IGNvbW1pdCA6IDEgY29ubmVjdGlvbiknICcKIAlybSAtZiAkVSAmJgogCSgKIAkJY2QgY2xvbmVkICYmCi0JCUdJVF9ERUJVR19TRU5EX1BBQ0s9MyBnaXQgZmV0Y2ggMz4uLi8kVSAmJgorCQlHSVRfVFJBQ0VfUEFDS0VUPSRVUEFUSCBnaXQgZmV0Y2ggJiYKIAkJdGVzdCAkQSA9ICQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBvcmlnaW4vbWFzdGVyKQogCSkgJiYKLQl0ZXN0IC1zICRVICYmCi0JY3V0IC1kIiAiIC1mMSwyICRVID5hY3R1YWwgJiYKKwlnZXRfbmVlZHMgJFUgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBOT1RfTUlOR1cgImNyZWF0ZSB0YWcgVCBvbiBBLCBjcmVhdGUgQyBvbiBicmFuY2ggY2F0IiAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJjcmVhdGUgdGFnIFQgb24gQSwgY3JlYXRlIEMgb24gYnJhbmNoIGNhdCIgJwogCWdpdCB0YWcgLWEgLW0gdGFnMSB0YWcxICRBICYmCiAJVD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgdGFnMSkgJiYKIApAQCAtNzIsMzAgKzc1LDI3IEBACiAJZ2l0IGNoZWNrb3V0IG1hc3RlcgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIE5PVF9NSU5HVyAnc2V0dXAgZXhwZWN0JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBleHBlY3QnICcKIGNhdCAtIDw8RU9GID5leHBlY3QKLSNTCiB3YW50ICRDCiB3YW50ICRUCi0jRQogRU9GCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgTk9UX01JTkdXICdmZXRjaCBDLCBUIChuZXcgYnJhbmNoLCB0YWcgOiAxIGNvbm5lY3Rpb24pJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCBDLCBUIChuZXcgYnJhbmNoLCB0YWcgOiAxIGNvbm5lY3Rpb24pJyAnCiAJcm0gLWYgJFUgJiYKIAkoCiAJCWNkIGNsb25lZCAmJgotCQlHSVRfREVCVUdfU0VORF9QQUNLPTMgZ2l0IGZldGNoIDM+Li4vJFUgJiYKKwkJR0lUX1RSQUNFX1BBQ0tFVD0kVVBBVEggZ2l0IGZldGNoICYmCiAJCXRlc3QgJEMgPSAkKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgb3JpZ2luL2NhdCkgJiYKIAkJdGVzdCAkVCA9ICQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSB0YWcxKSAmJgogCQl0ZXN0ICRBID0gJChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHRhZzFeMCkKIAkpICYmCi0JdGVzdCAtcyAkVSAmJgotCWN1dCAtZCIgIiAtZjEsMiAkVSA+YWN0dWFsICYmCisJZ2V0X25lZWRzICRVID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgTk9UX01JTkdXICJjcmVhdGUgY29tbWl0cyBPLCBCLCB0YWcgUyBvbiBCIiAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJjcmVhdGUgY29tbWl0cyBPLCBCLCB0YWcgUyBvbiBCIiAnCiAJdGVzdF90aWNrICYmCiAJZWNobyBPID5maWxlICYmCiAJZ2l0IGFkZCBmaWxlICYmCkBAIC0xMTEsMzkgKzExMSwzNCBAQAogCVM9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHRhZzIpCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgTk9UX01JTkdXICdzZXR1cCBleHBlY3QnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGV4cGVjdCcgJwogY2F0IC0gPDxFT0YgPmV4cGVjdAotI1MKIHdhbnQgJEIKIHdhbnQgJFMKLSNFCiBFT0YKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBOT1RfTUlOR1cgJ2ZldGNoIEIsIFMgKGNvbW1pdCBhbmQgdGFnIDogMSBjb25uZWN0aW9uKScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggQiwgUyAoY29tbWl0IGFuZCB0YWcgOiAxIGNvbm5lY3Rpb24pJyAnCiAJcm0gLWYgJFUgJiYKIAkoCiAJCWNkIGNsb25lZCAmJgotCQlHSVRfREVCVUdfU0VORF9QQUNLPTMgZ2l0IGZldGNoIDM+Li4vJFUgJiYKKwkJR0lUX1RSQUNFX1BBQ0tFVD0kVVBBVEggZ2l0IGZldGNoICYmCiAJCXRlc3QgJEIgPSAkKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgb3JpZ2luL21hc3RlcikgJiYKIAkJdGVzdCAkQiA9ICQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSB0YWcyXjApICYmCiAJCXRlc3QgJFMgPSAkKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgdGFnMikKIAkpICYmCi0JdGVzdCAtcyAkVSAmJgotCWN1dCAtZCIgIiAtZjEsMiAkVSA+YWN0dWFsICYmCisJZ2V0X25lZWRzICRVID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgTk9UX01JTkdXICdzZXR1cCBleHBlY3QnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGV4cGVjdCcgJwogY2F0IC0gPDxFT0YgPmV4cGVjdAotI1MKIHdhbnQgJEIKIHdhbnQgJFMKLSNFCiBFT0YKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBOT1RfTUlOR1cgJ25ldyBjbG9uZSBmZXRjaCBtYXN0ZXIgYW5kIHRhZ3MnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25ldyBjbG9uZSBmZXRjaCBtYXN0ZXIgYW5kIHRhZ3MnICcKIAlnaXQgYnJhbmNoIC1EIGNhdAogCXJtIC1mICRVCiAJKApAQCAtMTUxLDE1ICsxNDYsMTQgQEAKIAkJY2QgY2xvbmUyICYmCiAJCWdpdCBpbml0ICYmCiAJCWdpdCByZW1vdGUgYWRkIG9yaWdpbiAuLiAmJgotCQlHSVRfREVCVUdfU0VORF9QQUNLPTMgZ2l0IGZldGNoIDM+Li4vJFUgJiYKKwkJR0lUX1RSQUNFX1BBQ0tFVD0kVVBBVEggZ2l0IGZldGNoICYmCiAJCXRlc3QgJEIgPSAkKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgb3JpZ2luL21hc3RlcikgJiYKIAkJdGVzdCAkUyA9ICQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSB0YWcyKSAmJgogCQl0ZXN0ICRCID0gJChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHRhZzJeMCkgJiYKIAkJdGVzdCAkVCA9ICQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSB0YWcxKSAmJgogCQl0ZXN0ICRBID0gJChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHRhZzFeMCkKIAkpICYmCi0JdGVzdCAtcyAkVSAmJgotCWN1dCAtZCIgIiAtZjEsMiAkVSA+YWN0dWFsICYmCisJZ2V0X25lZWRzICRVID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDU1MDQtZmV0Y2gtcmVjZWl2ZS1zdHJpY3Quc2ggYi90L3Q1NTA0LWZldGNoLXJlY2VpdmUtc3RyaWN0LnNoCmluZGV4IDM1ZWMyOTQuLjY5ZWUxM2MgMTAwNzU1Ci0tLSBhL3QvdDU1MDQtZmV0Y2gtcmVjZWl2ZS1zdHJpY3Quc2gKKysrIGIvdC90NTUwNC1mZXRjaC1yZWNlaXZlLXN0cmljdC5zaApAQCAtODksNyArODksNyBAQAogCiBjYXQgPmV4cCA8PEVPRgogVG8gZHN0Ci0hCXJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvaGVhZHMvdGVzdAlbcmVtb3RlIHJlamVjdGVkXSAobi9hICh1bnBhY2tlciBlcnJvcikpCishCXJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvaGVhZHMvdGVzdAlbcmVtb3RlIHJlamVjdGVkXSAodW5wYWNrZXIgZXJyb3IpCiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIHJlY2VpdmUuZnNja29iamVjdHMnICcKZGlmZiAtLWdpdCBhL3QvdDU1MDUtcmVtb3RlLnNoIGIvdC90NTUwNS1yZW1vdGUuc2gKaW5kZXggZThhZjYxNS4uZGQxMGZmMCAxMDA3NTUKLS0tIGEvdC90NTUwNS1yZW1vdGUuc2gKKysrIGIvdC90NTUwNS1yZW1vdGUuc2gKQEAgLTUyLDcgKzUyLDcgQEAKIAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW1vdGUgaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW4nICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgQ19MT0NBTEVfT1VUUFVUICdyZW1vdGUgaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW4nICcKICgKIAljZCB0ZXN0ICYmCiAJdG9rZW5zX21hdGNoIG9yaWdpbiAiJChnaXQgcmVtb3RlKSIgJiYKQEAgLTY2LDggKzY2LDYgQEAKIAljZCB0ZXN0ICYmCiAJZ2l0IHJlbW90ZSBhZGQgLWYgc2Vjb25kIC4uL3R3byAmJgogCXRva2Vuc19tYXRjaCAib3JpZ2luIHNlY29uZCIgIiQoZ2l0IHJlbW90ZSkiICYmCi0JY2hlY2tfcmVtb3RlX3RyYWNrIG9yaWdpbiBtYXN0ZXIgc2lkZSAmJgotCWNoZWNrX3JlbW90ZV90cmFjayBzZWNvbmQgbWFzdGVyIHNpZGUgYW5vdGhlciAmJgogCWNoZWNrX3RyYWNraW5nX2JyYW5jaCBzZWNvbmQgbWFzdGVyIHNpZGUgYW5vdGhlciAmJgogCWdpdCBmb3ItZWFjaC1yZWYgIi0tZm9ybWF0PSUocmVmbmFtZSkiIHJlZnMvcmVtb3RlcyB8CiAJc2VkIC1lICIvXnJlZnNcL3JlbW90ZXNcL29yaWdpblwvL2QiIFwKQEAgLTc3LDYgKzc1LDE0IEBACiApCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgQ19MT0NBTEVfT1VUUFVUICdjaGVjayByZW1vdGUgdHJhY2tpbmcnICcKKygKKwljZCB0ZXN0ICYmCisJY2hlY2tfcmVtb3RlX3RyYWNrIG9yaWdpbiBtYXN0ZXIgc2lkZSAmJgorCWNoZWNrX3JlbW90ZV90cmFjayBzZWNvbmQgbWFzdGVyIHNpZGUgYW5vdGhlcgorKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW1vdGUgZm9yY2VzIHRyYWNraW5nIGJyYW5jaGVzJyAnCiAoCiAJY2QgdGVzdCAmJgpAQCAtOTUsNyArMTAxLDcgQEAKICkKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAncmVtb3ZlIHJlbW90ZScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyBDX0xPQ0FMRV9PVVRQVVQgJ3JlbW92ZSByZW1vdGUnICcKICgKIAljZCB0ZXN0ICYmCiAJdG9rZW5zX21hdGNoIG9yaWdpbiAiJChnaXQgcmVtb3RlKSIgJiYKQEAgLTEyNSwxNCArMTMxLDE0IEBACiAJfSAmJgogCWdpdCB0YWcgZm9vdGFnICYmCiAJZ2l0IGNvbmZpZyAtLWFkZCByZW1vdGUub29wcy5mZXRjaCAiK3JlZnMvKjpyZWZzLyoiICYmCi0JZ2l0IHJlbW90ZSBybSBvb3BzIDI+YWN0dWFsMSAmJgorCWdpdCByZW1vdGUgcmVtb3ZlIG9vcHMgMj5hY3R1YWwxICYmCiAJZ2l0IGJyYW5jaCBmb29icmFuY2ggJiYKIAlnaXQgY29uZmlnIC0tYWRkIHJlbW90ZS5vb3BzLmZldGNoICIrcmVmcy8qOnJlZnMvKiIgJiYKIAlnaXQgcmVtb3RlIHJtIG9vcHMgMj5hY3R1YWwyICYmCiAJZ2l0IGJyYW5jaCAtZCBmb29icmFuY2ggJiYKIAlnaXQgdGFnIC1kIGZvb3RhZyAmJgotCXRlc3RfY21wIGV4cGVjdDEgYWN0dWFsMSAmJgotCXRlc3RfY21wIGV4cGVjdDIgYWN0dWFsMgorCXRlc3RfaTE4bmNtcCBleHBlY3QxIGFjdHVhbDEgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0MiBhY3R1YWwyCiApCiAnCiAKQEAgLTE5Miw3ICsxOTgsNyBAQAogCSBnaXQgY29uZmlnIC0tYWRkIHJlbW90ZS50d28ucHVzaCByZWZzL2hlYWRzL21hc3RlcjpyZWZzL2hlYWRzL2Fub3RoZXIgJiYKIAkgZ2l0IHJlbW90ZSBzaG93IG9yaWdpbiB0d28gPiBvdXRwdXQgJiYKIAkgZ2l0IGJyYW5jaCAtZCByZWJhc2Ugb2N0b3B1cyAmJgotCSB0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0KQorCSB0ZXN0X2kxOG5jbXAgZXhwZWN0IG91dHB1dCkKICcKIAogY2F0ID4gdGVzdC9leHBlY3QgPDwgRU9GCkBAIC0yMTcsNyArMjIzLDcgQEAKIAkgY2QgdGVzdCAmJgogCSBnaXQgcmVtb3RlIHNob3cgLW4gb3JpZ2luID4gb3V0cHV0ICYmCiAJIG12IC4uL29uZS51bnJlYWNoYWJsZSAuLi9vbmUgJiYKLQkgdGVzdF9jbXAgZXhwZWN0IG91dHB1dCkKKwkgdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3BydW5lJyAnCkBAIC0yNTUsNyArMjYxLDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldC1oZWFkIC0tYXV0byBmYWlscyB3L211bHRpcGxlIEhFQURzJyAnCiAJKGNkIHRlc3QgJiYKIAkgdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlbW90ZSBzZXQtaGVhZCAtLWF1dG8gdHdvID5vdXRwdXQgMj4mMSAmJgotCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQpCisJdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQpCiAnCiAKIGNhdCA+dGVzdC9leHBlY3QgPDxFT0YKQEAgLTI4NSw3ICsyOTEsNyBAQAogCSB0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIHJlZnMvcmVtb3Rlcy9vcmlnaW4vc2lkZSAmJgogCShjZCAuLi9vbmUgJiYKIAkgZ2l0IGJyYW5jaCAtbSBzaWRlIHNpZGUyKSAmJgotCSB0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0KQorCSB0ZXN0X2kxOG5jbXAgZXhwZWN0IG91dHB1dCkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIC0tbWlycm9yICYmIHBydW5lJyAnCkBAIC0zMzksNyArMzQ1LDcgQEAKIAkpICYmCiAJKGNkIG1pcnJvci1mZXRjaC9jaGlsZCAmJgogCSBnaXQgYnJhbmNoIC1tIHJlbmFtZWQgcmVuYW1lZDIgJiYKLQkgZ2l0IHB1c2ggcGFyZW50CisJIGdpdCBwdXNoIHBhcmVudCA6CiAJKSAmJgogCShjZCBtaXJyb3ItZmV0Y2gvcGFyZW50ICYmCiAJIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVuYW1lZCAmJgpAQCAtNjcyLDcgKzY3OCw3IEBACiAJZ2l0IGNsb25lIG9uZSBmaXZlICYmCiAJb3JpZ2luX3VybD0kKHB3ZCkvb25lICYmCiAJKGNkIGZpdmUgJiYKLQkgZ2l0IHJlbW90ZSBybSBvcmlnaW4gJiYKKwkgZ2l0IHJlbW90ZSByZW1vdmUgb3JpZ2luICYmCiAJIG1rZGlyIC1wIC5naXQvcmVtb3RlcyAmJgogCSBjYXQgLi4vcmVtb3Rlc19vcmlnaW4gPiAuZ2l0L3JlbW90ZXMvb3JpZ2luICYmCiAJIGdpdCByZW1vdGUgcmVuYW1lIG9yaWdpbiBvcmlnaW4gJiYKQEAgLTcwNSw3ICs3MTEsNyBAQAogCQljZCBzZXZlbiAmJgogCQlnaXQgcmVtb3RlIHBydW5lIG9yaWdpbgogCSkgPmVyciAyPiYxICYmCi0JZ3JlcCAiaGFzIGJlY29tZSBkYW5nbGluZyIgZXJyICYmCisJdGVzdF9pMThuZ3JlcCAiaGFzIGJlY29tZSBkYW5nbGluZyIgZXJyICYmCiAKIAk6IEFuZCB0aGUgZGFuZ2xpbmcgc3ltcmVmIHdpbGwgbm90IGNhdXNlIG90aGVyIGFubm95aW5nIGVycm9ycyAmJgogCSgKQEAgLTk5Nyw0ICsxMDAzLDI2IEBACiAJY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZXh0cmEgYXJnczogc2V0dXAnICcKKwkjIGFkZCBhIGR1bW15IG9yaWdpbiBzbyB0aGF0IHRoaXMgZG9lcyBub3QgdHJpZ2dlciBmYWlsdXJlCisJZ2l0IHJlbW90ZSBhZGQgb3JpZ2luIC4KKycKKwordGVzdF9leHRyYV9hcmcgKCkgeworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgImV4dHJhIGFyZ3M6ICQqIiAiCisJCXRlc3RfbXVzdF9mYWlsIGdpdCByZW1vdGUgJCogYm9ndXNfZXh0cmFfYXJnIDI+YWN0dWFsICYmCisJCWdyZXAgJ151c2FnZTonIGFjdHVhbAorCSIKK30KKwordGVzdF9leHRyYV9hcmcgYWRkIG5pY2sgdXJsCit0ZXN0X2V4dHJhX2FyZyByZW5hbWUgb3JpZ2luIG5ld25hbWUKK3Rlc3RfZXh0cmFfYXJnIHJlbW92ZSBvcmlnaW4KK3Rlc3RfZXh0cmFfYXJnIHNldC1oZWFkIG9yaWdpbiBtYXN0ZXIKKyMgc2V0LWJyYW5jaGVzIHRha2VzIGFueSBudW1iZXIgb2YgYXJncwordGVzdF9leHRyYV9hcmcgc2V0LXVybCBvcmlnaW4gbmV3dXJsIG9sZHVybAorIyBzaG93IHRha2VzIGFueSBudW1iZXIgb2YgYXJncworIyBwcnVuZSB0YWtlcyBhbnkgbnVtYmVyIG9mIGFyZ3MKKyMgdXBkYXRlIHRha2VzIGFueSBudW1iZXIgb2YgYXJncworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDU1MTItbHMtcmVtb3RlLnNoIGIvdC90NTUxMi1scy1yZW1vdGUuc2gKaW5kZXggNjc2NGQ1MS4uMzIxYzNlNSAxMDA3NTUKLS0tIGEvdC90NTUxMi1scy1yZW1vdGUuc2gKKysrIGIvdC90NTUxMi1scy1yZW1vdGUuc2gKQEAgLTg3LDE3ICs4NywxNSBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29uZnVzZXMgcGF0dGVybiBhcyByZW1vdGUgd2hlbiBubyByZW1vdGUgc3BlY2lmaWVkJyAnCiAJY2F0ID5leHAgPDwtXEVPRiAmJgogCWZhdGFsOiAnXCcncmVmcyptYXN0ZXInXCcnIGRvZXMgbm90IGFwcGVhciB0byBiZSBhIGdpdCByZXBvc2l0b3J5Ci0JZmF0YWw6IFRoZSByZW1vdGUgZW5kIGh1bmcgdXAgdW5leHBlY3RlZGx5CisJZmF0YWw6IENvdWxkIG5vdCByZWFkIGZyb20gcmVtb3RlIHJlcG9zaXRvcnkuCisKKwlQbGVhc2UgbWFrZSBzdXJlIHlvdSBoYXZlIHRoZSBjb3JyZWN0IGFjY2VzcyByaWdodHMKKwlhbmQgdGhlIHJlcG9zaXRvcnkgZXhpc3RzLgogCUVPRgogCSMKLQkjIERvIG5vdCBleHBlY3QgImdpdCBscy1yZW1vdGUgPHBhdHRlcm4+IiB0byB3b3JrOyBscy1yZW1vdGUsIGNvcnJlY3RseSwKLQkjIGNvbmZ1c2VzIDxwYXR0ZXJuPiBmb3IgPHJlbW90ZT4uIEFsdGhvdWdoIHVnbHksIHRoaXMgYmVoYXZpb3VyIGlzIGFraW4KLQkjIHRvIHRoZSBjb25mdXNpb24gb2YgcmVmc3BlY3MgZm9yIHJlbW90ZXMgYnkgZ2l0LWZldGNoIGFuZCBnaXQtcHVzaCwKLQkjIGVnOgotCSMKLQkjICAgJCBnaXQgZmV0Y2ggYnJhbmNoCi0JIwotCisJIyBEbyBub3QgZXhwZWN0ICJnaXQgbHMtcmVtb3RlIDxwYXR0ZXJuPiIgdG8gd29yazsgbHMtcmVtb3RlIG5lZWRzCisJIyA8cmVtb3RlPiBpZiB5b3Ugd2FudCB0byBmZWVkIDxwYXR0ZXJuPiwganVzdCBsaWtlIHlvdSBjYW5ub3Qgc2F5CisJIyBmZXRjaCA8YnJhbmNoPi4KIAkjIFdlIGNvdWxkIGp1c3QgYXMgZWFzaWx5IGhhdmUgdXNlZCAibWFzdGVyIjsgdGhlICIqIiBlbXBoYXNpemVzIGl0cwogCSMgcm9sZSBhcyBhIHBhdHRlcm4uCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGxzLXJlbW90ZSByZWZzKm1hc3RlciA+YWN0dWFsIDI+JjEgJiYKQEAgLTEyOCw0ICsxMjYsMTYgQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKK2ZvciBjb25maWdzZWN0aW9uIGluIHRyYW5zZmVyIHVwbG9hZHBhY2sKK2RvCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiSGlkZSBzb21lIHJlZnMgd2l0aCAkY29uZmlnc2VjdGlvbi5oaWRlcmVmcyIgJworCQl0ZXN0X2NvbmZpZyAkY29uZmlnc2VjdGlvbi5oaWRlcmVmcyByZWZzL3RhZ3MgJiYKKwkJZ2l0IGxzLXJlbW90ZSAuID5hY3R1YWwgJiYKKwkJdGVzdF91bmNvbmZpZyAkY29uZmlnc2VjdGlvbi5oaWRlcmVmcyAmJgorCQlnaXQgbHMtcmVtb3RlIC4gfAorCQlzZWQgLWUgIi8JcmVmc1wvdGFnc1wvL2QiID5leHBlY3QgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorCScKK2RvbmUKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q1NTE0LWZldGNoLW11bHRpcGxlLnNoIGIvdC90NTUxNC1mZXRjaC1tdWx0aXBsZS5zaAppbmRleCAyMjdkZDU2Li4wZjgxNDA5IDEwMDc1NQotLS0gYS90L3Q1NTE0LWZldGNoLW11bHRpcGxlLnNoCisrKyBiL3QvdDU1MTQtZmV0Y2gtbXVsdGlwbGUuc2gKQEAgLTE1MSw0ICsxNTEsMzQgQEAKIAkgdGVzdF9jbXAgLi4vZXhwZWN0IG91dHB1dCkKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGZldGNoIC0tYWxsIC0tbm8tdGFncycgJworCT5leHBlY3QgJiYKKwlnaXQgY2xvbmUgb25lIHRlc3Q1ICYmCisJZ2l0IGNsb25lIHRlc3Q1IHRlc3Q2ICYmCisJKGNkIHRlc3Q1ICYmIGdpdCB0YWcgdGVzdC10YWcpICYmCisJKAorCQljZCB0ZXN0NiAmJgorCQlnaXQgZmV0Y2ggLS1hbGwgLS1uby10YWdzICYmCisJCWdpdCB0YWcgPm91dHB1dAorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3QgdGVzdDYvb3V0cHV0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBmZXRjaCAtLWFsbCAtLXRhZ3MnICcKKwllY2hvIHRlc3QtdGFnID5leHBlY3QgJiYKKwlnaXQgY2xvbmUgb25lIHRlc3Q3ICYmCisJZ2l0IGNsb25lIHRlc3Q3IHRlc3Q4ICYmCisJKAorCQljZCB0ZXN0NyAmJgorCQl0ZXN0X2NvbW1pdCB0ZXN0LXRhZyAmJgorCQlnaXQgcmVzZXQgLS1oYXJkIEhFQUReCisJKSAmJgorCSgKKwkJY2QgdGVzdDggJiYKKwkJZ2l0IGZldGNoIC0tYWxsIC0tdGFncyAmJgorCQlnaXQgdGFnID5vdXRwdXQKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0IHRlc3Q4L291dHB1dAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDU1MTYtZmV0Y2gtcHVzaC5zaCBiL3QvdDU1MTYtZmV0Y2gtcHVzaC5zaAppbmRleCBiNTQxN2NjLi40NjkxZDUxIDEwMDc1NQotLS0gYS90L3Q1NTE2LWZldGNoLXB1c2guc2gKKysrIGIvdC90NTUxNi1mZXRjaC1wdXNoLnNoCkBAIC0xLDE2ICsxLDI4IEBACiAjIS9iaW4vc2gKIAotdGVzdF9kZXNjcmlwdGlvbj0nZmV0Y2hpbmcgYW5kIHB1c2hpbmcsIHdpdGggb3Igd2l0aG91dCB3aWxkY2FyZCcKK3Rlc3RfZGVzY3JpcHRpb249J0Jhc2ljIGZldGNoL3B1c2ggZnVuY3Rpb25hbGl0eS4KKworVGhpcyB0ZXN0IGNoZWNrcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uYWxpdHk6CisKKyogY29tbWFuZC1saW5lIHN5bnRheAorKiByZWZzcGVjcworKiBmYXN0LWZvcndhcmQgZGV0ZWN0aW9uLCBhbmQgb3ZlcnJpZGluZyBpdAorKiBjb25maWd1cmF0aW9uCisqIGhvb2tzCisqIC0tcG9yY2VsYWluIG91dHB1dCBmb3JtYXQKKyogaGlkZXJlZnMKKycKIAogLiAuL3Rlc3QtbGliLnNoCiAKIEQ9YHB3ZGAKIAogbWtfZW1wdHkgKCkgewotCXJtIC1mciB0ZXN0cmVwbyAmJgotCW1rZGlyIHRlc3RyZXBvICYmCisJcmVwb19uYW1lPSIkMSIKKwlybSAtZnIgIiRyZXBvX25hbWUiICYmCisJbWtkaXIgIiRyZXBvX25hbWUiICYmCiAJKAotCQljZCB0ZXN0cmVwbyAmJgorCQljZCAiJHJlcG9fbmFtZSIgJiYKIAkJZ2l0IGluaXQgJiYKIAkJZ2l0IGNvbmZpZyByZWNlaXZlLmRlbnlDdXJyZW50QnJhbmNoIHdhcm4gJiYKIAkJbXYgLmdpdC9ob29rcyAuZ2l0L2hvb2tzLWRpc2FibGVkCkBAIC0xOCwzMiArMzAsMzMgQEAKIH0KIAogbWtfdGVzdCAoKSB7Ci0JbWtfZW1wdHkgJiYKKwlyZXBvX25hbWU9IiQxIgorCXNoaWZ0CisKKwlta19lbXB0eSAiJHJlcG9fbmFtZSIgJiYKIAkoCiAJCWZvciByZWYgaW4gIiRAIgogCQlkbwotCQkJZ2l0IHB1c2ggdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQ6cmVmcy8kcmVmIHx8IHsKLQkJCQllY2hvICJPb3BzLCBwdXNoIHJlZnMvJHJlZiBmYWlsdXJlIgotCQkJCWV4aXQgMQotCQkJfQorCQkJZ2l0IHB1c2ggIiRyZXBvX25hbWUiICR0aGVfZmlyc3RfY29tbWl0OnJlZnMvJHJlZiB8fAorCQkJZXhpdAogCQlkb25lICYmCi0JCWNkIHRlc3RyZXBvICYmCisJCWNkICIkcmVwb19uYW1lIiAmJgogCQlmb3IgcmVmIGluICIkQCIKIAkJZG8KLQkJCXI9JChnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy8kcmVmKSAmJgotCQkJdGVzdCAieiRyIiA9ICJ6JHRoZV9maXJzdF9jb21taXQiIHx8IHsKLQkJCQllY2hvICJPb3BzLCByZWZzLyRyZWYgaXMgd3JvbmciCi0JCQkJZXhpdCAxCi0JCQl9CisJCQllY2hvICIkdGhlX2ZpcnN0X2NvbW1pdCIgPmV4cGVjdCAmJgorCQkJZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvJHJlZiA+YWN0dWFsICYmCisJCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsIHx8CisJCQlleGl0CiAJCWRvbmUgJiYKIAkJZ2l0IGZzY2sgLS1mdWxsCiAJKQogfQogCiBta190ZXN0X3dpdGhfaG9va3MoKSB7CisJcmVwb19uYW1lPSQxCiAJbWtfdGVzdCAiJEAiICYmCiAJKAotCQljZCB0ZXN0cmVwbyAmJgorCQljZCAiJHJlcG9fbmFtZSIgJiYKIAkJbWtkaXIgLmdpdC9ob29rcyAmJgogCQljZCAuZ2l0L2hvb2tzICYmCiAKQEAgLTc1LDIyICs4OCwyMyBAQAogfQogCiBta19jaGlsZCgpIHsKLQlybSAtcmYgIiQxIiAmJgotCWdpdCBjbG9uZSB0ZXN0cmVwbyAiJDEiCisJcm0gLXJmICIkMiIgJiYKKwlnaXQgY2xvbmUgIiQxIiAiJDIiCiB9CiAKIGNoZWNrX3B1c2hfcmVzdWx0ICgpIHsKKwlyZXBvX25hbWU9IiQxIgorCXNoaWZ0CisKIAkoCi0JCWNkIHRlc3RyZXBvICYmCi0JCWl0PSIkMSIgJiYKLQkJc2hpZnQKKwkJY2QgIiRyZXBvX25hbWUiICYmCisJCWVjaG8gIiQxIiA+ZXhwZWN0ICYmCisJCXNoaWZ0ICYmCiAJCWZvciByZWYgaW4gIiRAIgogCQlkbwotCQkJcj0kKGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzLyRyZWYpICYmCi0JCQl0ZXN0ICJ6JHIiID0gInokaXQiIHx8IHsKLQkJCQllY2hvICJPb3BzLCByZWZzLyRyZWYgaXMgd3JvbmciCi0JCQkJZXhpdCAxCi0JCQl9CisJCQlnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy8kcmVmID5hY3R1YWwgJiYKKwkJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgfHwKKwkJCWV4aXQKIAkJZG9uZSAmJgogCQlnaXQgZnNjayAtLWZ1bGwKIAkpCkBAIC0xMTMsMzUgKzEyNywzMyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCB3aXRob3V0IHdpbGRjYXJkJyAnCi0JbWtfZW1wdHkgJiYKKwlta19lbXB0eSB0ZXN0cmVwbyAmJgogCSgKIAkJY2QgdGVzdHJlcG8gJiYKIAkJZ2l0IGZldGNoIC4uIHJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyICYmCiAKLQkJcj0kKGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlcikgJiYKLQkJdGVzdCAieiRyIiA9ICJ6JHRoZV9jb21taXQiICYmCi0KLQkJdGVzdCAxID0gJChnaXQgZm9yLWVhY2gtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4gfCB3YyAtbCkKKwkJZWNobyAiJHRoZV9jb21taXQgY29tbWl0CXJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyIiA+ZXhwZWN0ICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZldGNoIHdpdGggd2lsZGNhcmQnICcKLQlta19lbXB0eSAmJgorCW1rX2VtcHR5IHRlc3RyZXBvICYmCiAJKAogCQljZCB0ZXN0cmVwbyAmJgogCQlnaXQgY29uZmlnIHJlbW90ZS51cC51cmwgLi4gJiYKIAkJZ2l0IGNvbmZpZyByZW1vdGUudXAuZmV0Y2ggInJlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvb3JpZ2luLyoiICYmCiAJCWdpdCBmZXRjaCB1cCAmJgogCi0JCXI9JChnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIpICYmCi0JCXRlc3QgInokciIgPSAieiR0aGVfY29tbWl0IiAmJgotCi0JCXRlc3QgMSA9ICQoZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luIHwgd2MgLWwpCisJCWVjaG8gIiR0aGVfY29tbWl0IGNvbW1pdAlyZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciIgPmV4cGVjdCAmJgorCQlnaXQgZm9yLWVhY2gtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4gPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCB3aXRoIGluc3RlYWRPZicgJwotCW1rX2VtcHR5ICYmCisJbWtfZW1wdHkgdGVzdHJlcG8gJiYKIAkoCiAJCVRSQVNIPSQocHdkKS8gJiYKIAkJY2QgdGVzdHJlcG8gJiYKQEAgLTE1MCwxNSArMTYyLDE0IEBACiAJCWdpdCBjb25maWcgcmVtb3RlLnVwLmZldGNoICJyZWZzL2hlYWRzLyo6cmVmcy9yZW1vdGVzL29yaWdpbi8qIiAmJgogCQlnaXQgZmV0Y2ggdXAgJiYKIAotCQlyPSQoZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSAmJgotCQl0ZXN0ICJ6JHIiID0gInokdGhlX2NvbW1pdCIgJiYKLQotCQl0ZXN0IDEgPSAkKGdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiB8IHdjIC1sKQorCQllY2hvICIkdGhlX2NvbW1pdCBjb21taXQJcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIiID5leHBlY3QgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggd2l0aCBwdXNoSW5zdGVhZE9mIChzaG91bGQgbm90IHJld3JpdGUpJyAnCi0JbWtfZW1wdHkgJiYKKwlta19lbXB0eSB0ZXN0cmVwbyAmJgogCSgKIAkJVFJBU0g9JChwd2QpLyAmJgogCQljZCB0ZXN0cmVwbyAmJgpAQCAtMTY3LDMyMSArMTc4LDMxMCBAQAogCQlnaXQgY29uZmlnIHJlbW90ZS51cC5mZXRjaCAicmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy9vcmlnaW4vKiIgJiYKIAkJZ2l0IGZldGNoIHVwICYmCiAKLQkJcj0kKGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlcikgJiYKLQkJdGVzdCAieiRyIiA9ICJ6JHRoZV9jb21taXQiICYmCi0KLQkJdGVzdCAxID0gJChnaXQgZm9yLWVhY2gtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4gfCB3YyAtbCkKKwkJZWNobyAiJHRoZV9jb21taXQgY29tbWl0CXJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyIiA+ZXhwZWN0ICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aG91dCB3aWxkY2FyZCcgJwotCW1rX2VtcHR5ICYmCisJbWtfZW1wdHkgdGVzdHJlcG8gJiYKIAogCWdpdCBwdXNoIHRlc3RyZXBvIHJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyICYmCiAJKAogCQljZCB0ZXN0cmVwbyAmJgotCQlyPSQoZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSAmJgotCQl0ZXN0ICJ6JHIiID0gInokdGhlX2NvbW1pdCIgJiYKLQotCQl0ZXN0IDEgPSAkKGdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiB8IHdjIC1sKQorCQllY2hvICIkdGhlX2NvbW1pdCBjb21taXQJcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIiID5leHBlY3QgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIHdpbGRjYXJkJyAnCi0JbWtfZW1wdHkgJiYKKwlta19lbXB0eSB0ZXN0cmVwbyAmJgogCiAJZ2l0IHB1c2ggdGVzdHJlcG8gInJlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvb3JpZ2luLyoiICYmCiAJKAogCQljZCB0ZXN0cmVwbyAmJgotCQlyPSQoZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSAmJgotCQl0ZXN0ICJ6JHIiID0gInokdGhlX2NvbW1pdCIgJiYKLQotCQl0ZXN0IDEgPSAkKGdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiB8IHdjIC1sKQorCQllY2hvICIkdGhlX2NvbW1pdCBjb21taXQJcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIiID5leHBlY3QgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIGluc3RlYWRPZicgJwotCW1rX2VtcHR5ICYmCisJbWtfZW1wdHkgdGVzdHJlcG8gJiYKIAlUUkFTSD0iJChwd2QpLyIgJiYKLQlnaXQgY29uZmlnICJ1cmwuJFRSQVNILmluc3RlYWRPZiIgdHJhc2gvICYmCisJdGVzdF9jb25maWcgInVybC4kVFJBU0guaW5zdGVhZE9mIiB0cmFzaC8gJiYKIAlnaXQgcHVzaCB0cmFzaC90ZXN0cmVwbyByZWZzL2hlYWRzL21hc3RlcjpyZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciAmJgogCSgKIAkJY2QgdGVzdHJlcG8gJiYKLQkJcj0kKGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlcikgJiYKLQkJdGVzdCAieiRyIiA9ICJ6JHRoZV9jb21taXQiICYmCi0KLQkJdGVzdCAxID0gJChnaXQgZm9yLWVhY2gtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4gfCB3YyAtbCkKKwkJZWNobyAiJHRoZV9jb21taXQgY29tbWl0CXJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyIiA+ZXhwZWN0ICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCBwdXNoSW5zdGVhZE9mJyAnCi0JbWtfZW1wdHkgJiYKKwlta19lbXB0eSB0ZXN0cmVwbyAmJgogCVRSQVNIPSIkKHB3ZCkvIiAmJgotCWdpdCBjb25maWcgInVybC4kVFJBU0gucHVzaEluc3RlYWRPZiIgdHJhc2gvICYmCisJdGVzdF9jb25maWcgInVybC4kVFJBU0gucHVzaEluc3RlYWRPZiIgdHJhc2gvICYmCiAJZ2l0IHB1c2ggdHJhc2gvdGVzdHJlcG8gcmVmcy9oZWFkcy9tYXN0ZXI6cmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIgJiYKIAkoCiAJCWNkIHRlc3RyZXBvICYmCi0JCXI9JChnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIpICYmCi0JCXRlc3QgInokciIgPSAieiR0aGVfY29tbWl0IiAmJgotCi0JCXRlc3QgMSA9ICQoZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luIHwgd2MgLWwpCisJCWVjaG8gIiR0aGVfY29tbWl0IGNvbW1pdAlyZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciIgPmV4cGVjdCAmJgorCQlnaXQgZm9yLWVhY2gtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4gPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggcHVzaEluc3RlYWRPZiBhbmQgZXhwbGljaXQgcHVzaHVybCAocHVzaEluc3RlYWRPZiBzaG91bGQgbm90IHJld3JpdGUpJyAnCi0JbWtfZW1wdHkgJiYKLQlUUkFTSD0iJChwd2QpLyIgJiYKLQlnaXQgY29uZmlnICJ1cmwudHJhc2gyLy5wdXNoSW5zdGVhZE9mIiB0cmFzaC8gJiYKLQlnaXQgY29uZmlnIHJlbW90ZS5yLnVybCB0cmFzaC93cm9uZyAmJgotCWdpdCBjb25maWcgcmVtb3RlLnIucHVzaHVybCAiJFRSQVNIL3Rlc3RyZXBvIiAmJgorCW1rX2VtcHR5IHRlc3RyZXBvICYmCisJdGVzdF9jb25maWcgInVybC50cmFzaDIvLnB1c2hJbnN0ZWFkT2YiIHRlc3RyZXBvLyAmJgorCXRlc3RfY29uZmlnICJ1cmwudHJhc2gzLy5wdXNuSW5zdGVhZE9mIiB0cmFzaC93cm9uZyAmJgorCXRlc3RfY29uZmlnIHJlbW90ZS5yLnVybCB0cmFzaC93cm9uZyAmJgorCXRlc3RfY29uZmlnIHJlbW90ZS5yLnB1c2h1cmwgInRlc3RyZXBvLyIgJiYKIAlnaXQgcHVzaCByIHJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyICYmCiAJKAogCQljZCB0ZXN0cmVwbyAmJgotCQlyPSQoZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSAmJgotCQl0ZXN0ICJ6JHIiID0gInokdGhlX2NvbW1pdCIgJiYKLQotCQl0ZXN0IDEgPSAkKGdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiB8IHdjIC1sKQorCQllY2hvICIkdGhlX2NvbW1pdCBjb21taXQJcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIiID5leHBlY3QgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIG1hdGNoaW5nIGhlYWRzJyAnCiAKLQlta190ZXN0IGhlYWRzL21hc3RlciAmJgotCWdpdCBwdXNoIHRlc3RyZXBvICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKKwlnaXQgcHVzaCB0ZXN0cmVwbyA6ICYmCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIG1hdGNoaW5nIGhlYWRzIG9uIHRoZSBjb21tYW5kIGxpbmUnICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyA6ICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmFpbGVkIChub24tZmFzdC1mb3J3YXJkKSBwdXNoIHdpdGggbWF0Y2hpbmcgaGVhZHMnICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyA6ICYmCiAJZ2l0IGNvbW1pdCAtLWFtZW5kIC1tYXNzYWdlZCAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBwdXNoIHRlc3RyZXBvICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyICYmCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyICYmCiAJZ2l0IHJlc2V0IC0taGFyZCAkdGhlX2NvbW1pdAogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggLS1mb3JjZSB3aXRoIG1hdGNoaW5nIGhlYWRzJyAnCiAKLQlta190ZXN0IGhlYWRzL21hc3RlciAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gOiAmJgogCWdpdCBjb21taXQgLS1hbWVuZCAtbWFzc2FnZWQgJiYKLQlnaXQgcHVzaCAtLWZvcmNlIHRlc3RyZXBvICYmCi0JISBjaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKKwlnaXQgcHVzaCAtLWZvcmNlIHRlc3RyZXBvIDogJiYKKwkhIGNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL21hc3RlciAmJgogCWdpdCByZXNldCAtLWhhcmQgJHRoZV9jb21taXQKIAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggbWF0Y2hpbmcgaGVhZHMgYW5kIGZvcmNlZCB1cGRhdGUnICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyA6ICYmCiAJZ2l0IGNvbW1pdCAtLWFtZW5kIC1tYXNzYWdlZCAmJgogCWdpdCBwdXNoIHRlc3RyZXBvICs6ICYmCi0JISBjaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKKwkhIGNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL21hc3RlciAmJgogCWdpdCByZXNldCAtLWhhcmQgJHRoZV9jb21taXQKIAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggbm8gYW1iaWd1aXR5ICgxKScgJwogCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIG1hc3RlcjptYXN0ZXIgJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIKIAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggbm8gYW1iaWd1aXR5ICgyKScgJwogCi0JbWtfdGVzdCByZW1vdGVzL29yaWdpbi9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIHJlbW90ZXMvb3JpZ2luL21hc3RlciAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIG1hc3RlcjpvcmlnaW4vbWFzdGVyICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgcmVtb3Rlcy9vcmlnaW4vbWFzdGVyCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgcmVtb3Rlcy9vcmlnaW4vbWFzdGVyCiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIGNvbG9uLWxlc3MgcmVmc3BlYywgbm8gYW1iaWd1aXR5JyAnCiAKLQlta190ZXN0IGhlYWRzL21hc3RlciBoZWFkcy90L21hc3RlciAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyIGhlYWRzL3QvbWFzdGVyICYmCiAJZ2l0IGJyYW5jaCAtZiB0L21hc3RlciBtYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyBtYXN0ZXIgJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2ZpcnN0X2NvbW1pdCBoZWFkcy90L21hc3RlcgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL21hc3RlciAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfZmlyc3RfY29tbWl0IGhlYWRzL3QvbWFzdGVyCiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIHdlYWsgYW1iaWd1aXR5ICgxKScgJwogCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgcmVtb3Rlcy9vcmlnaW4vbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgcmVtb3Rlcy9vcmlnaW4vbWFzdGVyICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyOm1hc3RlciAmJgotCWNoZWNrX3B1c2hfcmVzdWx0ICR0aGVfY29tbWl0IGhlYWRzL21hc3RlciAmJgotCWNoZWNrX3B1c2hfcmVzdWx0ICR0aGVfZmlyc3RfY29tbWl0IHJlbW90ZXMvb3JpZ2luL21hc3RlcgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL21hc3RlciAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfZmlyc3RfY29tbWl0IHJlbW90ZXMvb3JpZ2luL21hc3RlcgogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCB3ZWFrIGFtYmlndWl0eSAoMiknICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyIHJlbW90ZXMvb3JpZ2luL21hc3RlciByZW1vdGVzL2Fub3RoZXIvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgcmVtb3Rlcy9vcmlnaW4vbWFzdGVyIHJlbW90ZXMvYW5vdGhlci9tYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyBtYXN0ZXI6bWFzdGVyICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9maXJzdF9jb21taXQgcmVtb3Rlcy9vcmlnaW4vbWFzdGVyIHJlbW90ZXMvYW5vdGhlci9tYXN0ZXIKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2ZpcnN0X2NvbW1pdCByZW1vdGVzL29yaWdpbi9tYXN0ZXIgcmVtb3Rlcy9hbm90aGVyL21hc3RlcgogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCBhbWJpZ3VpdHknICcKIAotCW1rX3Rlc3QgaGVhZHMvZnJvdHogdGFncy9mcm90eiAmJgotCWlmIGdpdCBwdXNoIHRlc3RyZXBvIG1hc3Rlcjpmcm90egotCXRoZW4KLQkJZWNobyAiT29wcywgc2hvdWxkIGhhdmUgZmFpbGVkIgotCQlmYWxzZQotCWVsc2UKLQkJY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9maXJzdF9jb21taXQgaGVhZHMvZnJvdHogdGFncy9mcm90egotCWZpCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9mcm90eiB0YWdzL2Zyb3R6ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyOmZyb3R6ICYmCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQgaGVhZHMvZnJvdHogdGFncy9mcm90egogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCBjb2xvbi1sZXNzIHJlZnNwZWMgKDEpJyAnCiAKLQlta190ZXN0IGhlYWRzL2Zyb3R6IHRhZ3MvZnJvdHogJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL2Zyb3R6IHRhZ3MvZnJvdHogJiYKIAlnaXQgYnJhbmNoIC1mIGZyb3R6IG1hc3RlciAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIGZyb3R6ICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvZnJvdHogJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2ZpcnN0X2NvbW1pdCB0YWdzL2Zyb3R6CisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgaGVhZHMvZnJvdHogJiYKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2ZpcnN0X2NvbW1pdCB0YWdzL2Zyb3R6CiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIGNvbG9uLWxlc3MgcmVmc3BlYyAoMiknICcKIAotCW1rX3Rlc3QgaGVhZHMvZnJvdHogdGFncy9mcm90eiAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvZnJvdHogdGFncy9mcm90eiAmJgogCWlmIGdpdCBzaG93LXJlZiAtLXZlcmlmeSAtcSByZWZzL2hlYWRzL2Zyb3R6CiAJdGhlbgogCQlnaXQgYnJhbmNoIC1EIGZyb3R6CiAJZmkgJiYKIAlnaXQgdGFnIC1mIGZyb3R6ICYmCi0JZ2l0IHB1c2ggdGVzdHJlcG8gZnJvdHogJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCB0YWdzL2Zyb3R6ICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9maXJzdF9jb21taXQgaGVhZHMvZnJvdHoKKwlnaXQgcHVzaCAtZiB0ZXN0cmVwbyBmcm90eiAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IHRhZ3MvZnJvdHogJiYKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2ZpcnN0X2NvbW1pdCBoZWFkcy9mcm90egogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCBjb2xvbi1sZXNzIHJlZnNwZWMgKDMpJyAnCiAKLQlta190ZXN0ICYmCisJbWtfdGVzdCB0ZXN0cmVwbyAmJgogCWlmIGdpdCBzaG93LXJlZiAtLXZlcmlmeSAtcSByZWZzL3RhZ3MvZnJvdHoKIAl0aGVuCiAJCWdpdCB0YWcgLWQgZnJvdHoKIAlmaSAmJgogCWdpdCBicmFuY2ggLWYgZnJvdHogbWFzdGVyICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gZnJvdHogJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCBoZWFkcy9mcm90eiAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL2Zyb3R6ICYmCiAJdGVzdCAxID0gJCggY2QgdGVzdHJlcG8gJiYgZ2l0IHNob3ctcmVmIHwgd2MgLWwgKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggY29sb24tbGVzcyByZWZzcGVjICg0KScgJwogCi0JbWtfdGVzdCAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gJiYKIAlpZiBnaXQgc2hvdy1yZWYgLS12ZXJpZnkgLXEgcmVmcy9oZWFkcy9mcm90egogCXRoZW4KIAkJZ2l0IGJyYW5jaCAtRCBmcm90egogCWZpICYmCiAJZ2l0IHRhZyAtZiBmcm90eiAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIGZyb3R6ICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgdGFncy9mcm90eiAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IHRhZ3MvZnJvdHogJiYKIAl0ZXN0IDEgPSAkKCBjZCB0ZXN0cmVwbyAmJiBnaXQgc2hvdy1yZWYgfCB3YyAtbCApCiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCBoZWFkIHdpdGggbm9uLWV4aXN0ZW50LCBpbmNvbXBsZXRlIGRlc3QnICcKIAotCW1rX3Rlc3QgJiYKKwlta190ZXN0IHRlc3RyZXBvICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyOmJyYW5jaCAmJgotCWNoZWNrX3B1c2hfcmVzdWx0ICR0aGVfY29tbWl0IGhlYWRzL2JyYW5jaAorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL2JyYW5jaAogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggdGFnIHdpdGggbm9uLWV4aXN0ZW50LCBpbmNvbXBsZXRlIGRlc3QnICcKIAotCW1rX3Rlc3QgJiYKKwlta190ZXN0IHRlc3RyZXBvICYmCiAJZ2l0IHRhZyAtZiB2MS4wICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gdjEuMDp0YWcgJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCB0YWdzL3RhZworCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IHRhZ3MvdGFnCiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCBzaGExIHdpdGggbm9uLWV4aXN0ZW50LCBpbmNvbXBsZXRlIGRlc3QnICcKIAotCW1rX3Rlc3QgJiYKKwlta190ZXN0IHRlc3RyZXBvICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggdGVzdHJlcG8gYGdpdCByZXYtcGFyc2UgbWFzdGVyYDpmb28KIAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHJlZiBleHByZXNzaW9uIHdpdGggbm9uLWV4aXN0ZW50LCBpbmNvbXBsZXRlIGRlc3QnICcKIAotCW1rX3Rlc3QgJiYKKwlta190ZXN0IHRlc3RyZXBvICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyXjpicmFuY2gKIAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggSEVBRCcgJwogCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyBIRUFEICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIEhFQUQgbm9uZXhpc3RpbmcgYXQgcmVtb3RlJyAnCiAKLQlta190ZXN0IGhlYWRzL21hc3RlciAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCiAJZ2l0IGNoZWNrb3V0IC1iIGxvY2FsIG1hc3RlciAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIEhFQUQgJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCBoZWFkcy9sb2NhbAorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL2xvY2FsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCArSEVBRCcgJwogCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAlnaXQgYnJhbmNoIC1EIGxvY2FsICYmCiAJZ2l0IGNoZWNrb3V0IC1iIGxvY2FsICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyIGxvY2FsICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbG9jYWwgJiYKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2NvbW1pdCBoZWFkcy9sb2NhbCAmJgogCiAJIyBXaXRob3V0IGZvcmNlIHJld2luZGluZyBzaG91bGQgZmFpbAogCWdpdCByZXNldCAtLWhhcmQgSEVBRF4gJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcHVzaCB0ZXN0cmVwbyBIRUFEICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbG9jYWwgJiYKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2NvbW1pdCBoZWFkcy9sb2NhbCAmJgogCiAJIyBXaXRoIGZvcmNlIHJld2luZGluZyBzaG91bGQgc3VjY2VlZAogCWdpdCBwdXNoIHRlc3RyZXBvICtIRUFEICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9maXJzdF9jb21taXQgaGVhZHMvbG9jYWwKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2ZpcnN0X2NvbW1pdCBoZWFkcy9sb2NhbAogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggSEVBRCB3aXRoIG5vbi1leGlzdGVudCwgaW5jb21wbGV0ZSBkZXN0JyAnCiAKLQlta190ZXN0ICYmCisJbWtfdGVzdCB0ZXN0cmVwbyAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyBIRUFEOmJyYW5jaCAmJgotCWNoZWNrX3B1c2hfcmVzdWx0ICR0aGVfY29tbWl0IGhlYWRzL2JyYW5jaAorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL2JyYW5jaAogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCBjb25maWcgcmVtb3RlLioucHVzaCA9IEhFQUQnICcKIAotCW1rX3Rlc3QgaGVhZHMvbG9jYWwgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL2xvY2FsICYmCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCWdpdCBicmFuY2ggLWYgbG9jYWwgJHRoZV9jb21taXQgJiYKIAkoCkBAIC00ODksNDYgKzQ4OSw2OCBAQAogCQlnaXQgY2hlY2tvdXQgbG9jYWwgJiYKIAkJZ2l0IHJlc2V0IC0taGFyZCAkdGhlX2ZpcnN0X2NvbW1pdAogCSkgJiYKLQlnaXQgY29uZmlnIHJlbW90ZS50aGVyZS51cmwgdGVzdHJlcG8gJiYKLQlnaXQgY29uZmlnIHJlbW90ZS50aGVyZS5wdXNoIEhFQUQgJiYKLQlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIucmVtb3RlIHRoZXJlICYmCisJdGVzdF9jb25maWcgcmVtb3RlLnRoZXJlLnVybCB0ZXN0cmVwbyAmJgorCXRlc3RfY29uZmlnIHJlbW90ZS50aGVyZS5wdXNoIEhFQUQgJiYKKwl0ZXN0X2NvbmZpZyBicmFuY2gubWFzdGVyLnJlbW90ZSB0aGVyZSAmJgogCWdpdCBwdXNoICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9maXJzdF9jb21taXQgaGVhZHMvbG9jYWwKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2ZpcnN0X2NvbW1pdCBoZWFkcy9sb2NhbAogJwogCi0jIGNsZWFuIHVwIHRoZSBjcnVmdCBsZWZ0IHdpdGggdGhlIHByZXZpb3VzIG9uZQotZ2l0IGNvbmZpZyAtLXJlbW92ZS1zZWN0aW9uIHJlbW90ZS50aGVyZQotZ2l0IGNvbmZpZyAtLXJlbW92ZS1zZWN0aW9uIGJyYW5jaC5tYXN0ZXIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCByZW1vdGUucHVzaGRlZmF1bHQnICcKKwlta190ZXN0IHVwX3JlcG8gaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCBkb3duX3JlcG8gaGVhZHMvbWFzdGVyICYmCisJdGVzdF9jb25maWcgcmVtb3RlLnVwLnVybCB1cF9yZXBvICYmCisJdGVzdF9jb25maWcgcmVtb3RlLmRvd24udXJsIGRvd25fcmVwbyAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIucmVtb3RlIHVwICYmCisJdGVzdF9jb25maWcgcmVtb3RlLnB1c2hkZWZhdWx0IGRvd24gJiYKKwl0ZXN0X2NvbmZpZyBwdXNoLmRlZmF1bHQgbWF0Y2hpbmcgJiYKKwlnaXQgcHVzaCAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHVwX3JlcG8gJHRoZV9maXJzdF9jb21taXQgaGVhZHMvbWFzdGVyICYmCisJY2hlY2tfcHVzaF9yZXN1bHQgZG93bl9yZXBvICR0aGVfY29tbWl0IGhlYWRzL21hc3RlcgorJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggY29uZmlnIHJlbW90ZS4qLnB1c2h1cmwnICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCi0JZ2l0IGNvbmZpZyByZW1vdGUudGhlcmUudXJsIHRlc3QycmVwbyAmJgotCWdpdCBjb25maWcgcmVtb3RlLnRoZXJlLnB1c2h1cmwgdGVzdHJlcG8gJiYKLQlnaXQgcHVzaCB0aGVyZSAmJgotCWNoZWNrX3B1c2hfcmVzdWx0ICR0aGVfY29tbWl0IGhlYWRzL21hc3RlcgorCXRlc3RfY29uZmlnIHJlbW90ZS50aGVyZS51cmwgdGVzdDJyZXBvICYmCisJdGVzdF9jb25maWcgcmVtb3RlLnRoZXJlLnB1c2h1cmwgdGVzdHJlcG8gJiYKKwlnaXQgcHVzaCB0aGVyZSA6ICYmCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCiAnCiAKLSMgY2xlYW4gdXAgdGhlIGNydWZ0IGxlZnQgd2l0aCB0aGUgcHJldmlvdXMgb25lCi1naXQgY29uZmlnIC0tcmVtb3ZlLXNlY3Rpb24gcmVtb3RlLnRoZXJlCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggY29uZmlnIGJyYW5jaC4qLnB1c2hyZW1vdGUnICcKKwlta190ZXN0IHVwX3JlcG8gaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCBzaWRlX3JlcG8gaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCBkb3duX3JlcG8gaGVhZHMvbWFzdGVyICYmCisJdGVzdF9jb25maWcgcmVtb3RlLnVwLnVybCB1cF9yZXBvICYmCisJdGVzdF9jb25maWcgcmVtb3RlLnB1c2hkZWZhdWx0IHNpZGVfcmVwbyAmJgorCXRlc3RfY29uZmlnIHJlbW90ZS5kb3duLnVybCBkb3duX3JlcG8gJiYKKwl0ZXN0X2NvbmZpZyBicmFuY2gubWFzdGVyLnJlbW90ZSB1cCAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIucHVzaHJlbW90ZSBkb3duICYmCisJdGVzdF9jb25maWcgcHVzaC5kZWZhdWx0IG1hdGNoaW5nICYmCisJZ2l0IHB1c2ggJiYKKwljaGVja19wdXNoX3Jlc3VsdCB1cF9yZXBvICR0aGVfZmlyc3RfY29tbWl0IGhlYWRzL21hc3RlciAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHNpZGVfcmVwbyAkdGhlX2ZpcnN0X2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKKwljaGVja19wdXNoX3Jlc3VsdCBkb3duX3JlcG8gJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCisnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCBkcnktcnVuJyAnCiAKLQlta190ZXN0IGhlYWRzL21hc3RlciAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCiAJKAogCQljZCB0ZXN0cmVwbyAmJgogCQlvbGRfY29tbWl0PSQoZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbWFzdGVyKQogCSkgJiYKLQlnaXQgcHVzaCAtLWRyeS1ydW4gdGVzdHJlcG8gJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkb2xkX2NvbW1pdCBoZWFkcy9tYXN0ZXIKKwlnaXQgcHVzaCAtLWRyeS1ydW4gdGVzdHJlcG8gOiAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICRvbGRfY29tbWl0IGhlYWRzL21hc3RlcgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHVwZGF0ZXMgbG9jYWwgcmVmcycgJwogCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKLQlta19jaGlsZCBjaGlsZCAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCisJbWtfY2hpbGQgdGVzdHJlcG8gY2hpbGQgJiYKIAkoCiAJCWNkIGNoaWxkICYmCiAJCWdpdCBwdWxsIC4uIG1hc3RlciAmJgpAQCAtNTQxLDkgKzU2Myw5IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggdXBkYXRlcyB1cC10by1kYXRlIGxvY2FsIHJlZnMnICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCi0JbWtfY2hpbGQgY2hpbGQxICYmCi0JbWtfY2hpbGQgY2hpbGQyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKKwlta19jaGlsZCB0ZXN0cmVwbyBjaGlsZDEgJiYKKwlta19jaGlsZCB0ZXN0cmVwbyBjaGlsZDIgJiYKIAkoY2QgY2hpbGQxICYmIGdpdCBwdWxsIC4uIG1hc3RlciAmJiBnaXQgcHVzaCkgJiYKIAkoCiAJCWNkIGNoaWxkMiAmJgpAQCAtNTU3LDggKzU3OSw4IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggcHJlc2VydmVzIHVwLXRvLWRhdGUgcGFja2VkIHJlZnMnICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCi0JbWtfY2hpbGQgY2hpbGQgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgorCW1rX2NoaWxkIHRlc3RyZXBvIGNoaWxkICYmCiAJKAogCQljZCBjaGlsZCAmJgogCQlnaXQgcHVzaCAmJgpAQCAtNTY5LDggKzU5MSw4IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggZG9lcyBub3QgdXBkYXRlIGxvY2FsIHJlZnMgb24gZmFpbHVyZScgJwogCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKLQlta19jaGlsZCBjaGlsZCAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCisJbWtfY2hpbGQgdGVzdHJlcG8gY2hpbGQgJiYKIAlta2RpciB0ZXN0cmVwby8uZ2l0L2hvb2tzICYmCiAJZWNobyAiIyEvbm8vZnJvYm5pY2F0aW9uL3RvZGF5IiA+dGVzdHJlcG8vLmdpdC9ob29rcy9wcmUtcmVjZWl2ZSAmJgogCWNobW9kICt4IHRlc3RyZXBvLy5naXQvaG9va3MvcHJlLXJlY2VpdmUgJiYKQEAgLTU4Niw3ICs2MDgsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbGxvdyBkZWxldGluZyBhbiBpbnZhbGlkIHJlbW90ZSByZWYnICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAlybSAtZiB0ZXN0cmVwby8uZ2l0L29iamVjdHMvPz8vKiAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIDpyZWZzL2hlYWRzL21hc3RlciAmJgogCShjZCB0ZXN0cmVwbyAmJiB0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbWFzdGVyKQpAQCAtNTk0LDcgKzYxNiw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2hpbmcgdmFsaWQgcmVmcyB0cmlnZ2VycyBwb3N0LXJlY2VpdmUgYW5kIHBvc3QtdXBkYXRlIGhvb2tzJyAnCi0JbWtfdGVzdF93aXRoX2hvb2tzIGhlYWRzL21hc3RlciBoZWFkcy9uZXh0ICYmCisJbWtfdGVzdF93aXRoX2hvb2tzIHRlc3RyZXBvIGhlYWRzL21hc3RlciBoZWFkcy9uZXh0ICYmCiAJb3JnbWFzdGVyPSQoY2QgdGVzdHJlcG8gJiYgZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbWFzdGVyKSAmJgogCW5ld21hc3Rlcj0kKGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzL2hlYWRzL21hc3RlcikgJiYKIAlvcmduZXh0PSQoY2QgdGVzdHJlcG8gJiYgZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbmV4dCkgJiYKQEAgLTYzMCw3ICs2NTIsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZWxldGluZyBkYW5nbGluZyByZWYgdHJpZ2dlcnMgaG9va3Mgd2l0aCBjb3JyZWN0IGFyZ3MnICcKLQlta190ZXN0X3dpdGhfaG9va3MgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdF93aXRoX2hvb2tzIHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCXJtIC1mIHRlc3RyZXBvLy5naXQvb2JqZWN0cy8/Py8qICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gOnJlZnMvaGVhZHMvbWFzdGVyICYmCiAJKApAQCAtNjU5LDcgKzY4MSw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RlbGV0aW9uIG9mIGEgbm9uLWV4aXN0ZW50IHJlZiBpcyBub3QgZmVkIHRvIHBvc3QtcmVjZWl2ZSBhbmQgcG9zdC11cGRhdGUgaG9va3MnICcKLQlta190ZXN0X3dpdGhfaG9va3MgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdF93aXRoX2hvb2tzIHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCW9yZ21hc3Rlcj0kKGNkIHRlc3RyZXBvICYmIGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzL2hlYWRzL21hc3RlcikgJiYKIAluZXdtYXN0ZXI9JChnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9oZWFkcy9tYXN0ZXIpICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyIDpyZWZzL2hlYWRzL25vbmV4aXN0ZW50ICYmCkBAIC02OTEsNyArNzEzLDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGVsZXRpb24gb2YgYSBub24tZXhpc3RlbnQgcmVmIGFsb25lIGRvZXMgdHJpZ2dlciBwb3N0LXJlY2VpdmUgYW5kIHBvc3QtdXBkYXRlIGhvb2tzJyAnCi0JbWtfdGVzdF93aXRoX2hvb2tzIGhlYWRzL21hc3RlciAmJgorCW1rX3Rlc3Rfd2l0aF9ob29rcyB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyA6cmVmcy9oZWFkcy9ub25leGlzdGVudCAmJgogCSgKIAkJY2QgdGVzdHJlcG8vLmdpdCAmJgpAQCAtNzExLDcgKzczMyw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21peGVkIHJlZiB1cGRhdGVzLCBkZWxldGVzLCBpbnZhbGlkIGRlbGV0ZXMgdHJpZ2dlciBob29rcyB3aXRoIGNvcnJlY3QgaW5wdXQnICcKLQlta190ZXN0X3dpdGhfaG9va3MgaGVhZHMvbWFzdGVyIGhlYWRzL25leHQgaGVhZHMvcHUgJiYKKwlta190ZXN0X3dpdGhfaG9va3MgdGVzdHJlcG8gaGVhZHMvbWFzdGVyIGhlYWRzL25leHQgaGVhZHMvcHUgJiYKIAlvcmdtYXN0ZXI9JChjZCB0ZXN0cmVwbyAmJiBnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9oZWFkcy9tYXN0ZXIpICYmCiAJbmV3bWFzdGVyPSQoZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbWFzdGVyKSAmJgogCW9yZ25leHQ9JChjZCB0ZXN0cmVwbyAmJiBnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9oZWFkcy9uZXh0KSAmJgpAQCAtNzU3LDE0ICs3NzksMTQgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWxsb3cgZGVsZXRpbmcgYSByZWYgdXNpbmcgLS1kZWxldGUnICcKLQlta190ZXN0IGhlYWRzL21hc3RlciAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCiAJKGNkIHRlc3RyZXBvICYmIGdpdCBjb25maWcgcmVjZWl2ZS5kZW55RGVsZXRlQ3VycmVudCB3YXJuKSAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIC0tZGVsZXRlIG1hc3RlciAmJgogCShjZCB0ZXN0cmVwbyAmJiB0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbWFzdGVyKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbGxvdyBkZWxldGluZyBhIHRhZyB1c2luZyAtLWRlbGV0ZScgJwotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAlnaXQgdGFnIC1hIC1tIGR1bW15X21lc3NhZ2UgZGVsdGFnIGhlYWRzL21hc3RlciAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIC0tdGFncyAmJgogCShjZCB0ZXN0cmVwbyAmJiBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IC1xIHJlZnMvdGFncy9kZWx0YWcpICYmCkBAIC03NzMsMTcgKzc5NSwxNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIC0tZGVsZXRlIHdpdGhvdXQgYXJncyBhYm9ydHMnICcKLQlta190ZXN0IGhlYWRzL21hc3RlciAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggdGVzdHJlcG8gLS1kZWxldGUKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCAtLWRlbGV0ZSByZWZ1c2VzIHNyYzpkZXN0IHJlZnNwZWNzJyAnCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBwdXNoIHRlc3RyZXBvIC0tZGVsZXRlIG1hc3Rlcjpmb28KICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnd2FybiBvbiBwdXNoIHRvIEhFQUQgb2Ygbm9uLWJhcmUgcmVwb3NpdG9yeScgJwotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAkoCiAJCWNkIHRlc3RyZXBvICYmCiAJCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKQEAgLTc5NCw3ICs4MTYsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZW55IHB1c2ggdG8gSEVBRCBvZiBub24tYmFyZSByZXBvc2l0b3J5JyAnCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCSgKIAkJY2QgdGVzdHJlcG8gJiYKIAkJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgpAQCAtODA0LDcgKzgyNiw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsbG93IHB1c2ggdG8gSEVBRCBvZiBiYXJlIHJlcG9zaXRvcnkgKGJhcmUpJyAnCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCSgKIAkJY2QgdGVzdHJlcG8gJiYKIAkJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgpAQCAtODE2LDcgKzgzOCw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsbG93IHB1c2ggdG8gSEVBRCBvZiBub24tYmFyZSByZXBvc2l0b3J5IChjb25maWcpJyAnCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCSgKIAkJY2QgdGVzdHJlcG8gJiYKIAkJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgpAQCAtODI3LDYzICs4NDksNjMgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggd2l0aCBicmFuY2hlcycgJwotCW1rX2VtcHR5ICYmCisJbWtfZW1wdHkgdGVzdHJlcG8gJiYKIAlnaXQgYnJhbmNoIHNlY29uZCAkdGhlX2ZpcnN0X2NvbW1pdCAmJgogCWdpdCBjaGVja291dCBzZWNvbmQgJiYKIAllY2hvICIuLiIgPiB0ZXN0cmVwby8uZ2l0L2JyYW5jaGVzL2JyYW5jaDEgJiYKIAkoCiAJCWNkIHRlc3RyZXBvICYmCiAJCWdpdCBmZXRjaCBicmFuY2gxICYmCi0JCXI9JChnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9oZWFkcy9icmFuY2gxKSAmJgotCQl0ZXN0ICJ6JHIiID0gInokdGhlX2NvbW1pdCIgJiYKLQkJdGVzdCAxID0gJChnaXQgZm9yLWVhY2gtcmVmIHJlZnMvaGVhZHMgfCB3YyAtbCkKKwkJZWNobyAiJHRoZV9jb21taXQgY29tbWl0CXJlZnMvaGVhZHMvYnJhbmNoMSIgPmV4cGVjdCAmJgorCQlnaXQgZm9yLWVhY2gtcmVmIHJlZnMvaGVhZHMgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAJKSAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggd2l0aCBicmFuY2hlcyBjb250YWluaW5nICMnICcKLQlta19lbXB0eSAmJgorCW1rX2VtcHR5IHRlc3RyZXBvICYmCiAJZWNobyAiLi4jc2Vjb25kIiA+IHRlc3RyZXBvLy5naXQvYnJhbmNoZXMvYnJhbmNoMiAmJgogCSgKIAkJY2QgdGVzdHJlcG8gJiYKIAkJZ2l0IGZldGNoIGJyYW5jaDIgJiYKLQkJcj0kKGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzL2hlYWRzL2JyYW5jaDIpICYmCi0JCXRlc3QgInokciIgPSAieiR0aGVfZmlyc3RfY29tbWl0IiAmJgotCQl0ZXN0IDEgPSAkKGdpdCBmb3ItZWFjaC1yZWYgcmVmcy9oZWFkcyB8IHdjIC1sKQorCQllY2hvICIkdGhlX2ZpcnN0X2NvbW1pdCBjb21taXQJcmVmcy9oZWFkcy9icmFuY2gyIiA+ZXhwZWN0ICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy9oZWFkcyA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKIAkpICYmCiAJZ2l0IGNoZWNrb3V0IG1hc3RlcgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggYnJhbmNoZXMnICcKLQlta19lbXB0eSAmJgorCW1rX2VtcHR5IHRlc3RyZXBvICYmCiAJZ2l0IGNoZWNrb3V0IHNlY29uZCAmJgogCWVjaG8gInRlc3RyZXBvIiA+IC5naXQvYnJhbmNoZXMvYnJhbmNoMSAmJgogCWdpdCBwdXNoIGJyYW5jaDEgJiYKIAkoCiAJCWNkIHRlc3RyZXBvICYmCi0JCXI9JChnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9oZWFkcy9tYXN0ZXIpICYmCi0JCXRlc3QgInokciIgPSAieiR0aGVfZmlyc3RfY29tbWl0IiAmJgotCQl0ZXN0IDEgPSAkKGdpdCBmb3ItZWFjaC1yZWYgcmVmcy9oZWFkcyB8IHdjIC1sKQorCQllY2hvICIkdGhlX2ZpcnN0X2NvbW1pdCBjb21taXQJcmVmcy9oZWFkcy9tYXN0ZXIiID5leHBlY3QgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiByZWZzL2hlYWRzID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIGJyYW5jaGVzIGNvbnRhaW5pbmcgIycgJwotCW1rX2VtcHR5ICYmCisJbWtfZW1wdHkgdGVzdHJlcG8gJiYKIAllY2hvICJ0ZXN0cmVwbyNicmFuY2gzIiA+IC5naXQvYnJhbmNoZXMvYnJhbmNoMiAmJgogCWdpdCBwdXNoIGJyYW5jaDIgJiYKIAkoCiAJCWNkIHRlc3RyZXBvICYmCi0JCXI9JChnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9oZWFkcy9icmFuY2gzKSAmJgotCQl0ZXN0ICJ6JHIiID0gInokdGhlX2ZpcnN0X2NvbW1pdCIgJiYKLQkJdGVzdCAxID0gJChnaXQgZm9yLWVhY2gtcmVmIHJlZnMvaGVhZHMgfCB3YyAtbCkKKwkJZWNobyAiJHRoZV9maXJzdF9jb21taXQgY29tbWl0CXJlZnMvaGVhZHMvYnJhbmNoMyIgPmV4cGVjdCAmJgorCQlnaXQgZm9yLWVhY2gtcmVmIHJlZnMvaGVhZHMgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAJKSAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCBpbnRvIGFsaWFzZWQgcmVmcyAoY29uc2lzdGVudCknICcKLQlta190ZXN0IGhlYWRzL21hc3RlciAmJgotCW1rX2NoaWxkIGNoaWxkMSAmJgotCW1rX2NoaWxkIGNoaWxkMiAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCisJbWtfY2hpbGQgdGVzdHJlcG8gY2hpbGQxICYmCisJbWtfY2hpbGQgdGVzdHJlcG8gY2hpbGQyICYmCiAJKAogCQljZCBjaGlsZDEgJiYKIAkJZ2l0IGJyYW5jaCBmb28gJiYKQEAgLTkwMyw5ICs5MjUsOSBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIGludG8gYWxpYXNlZCByZWZzIChpbmNvbnNpc3RlbnQpJyAnCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKLQlta19jaGlsZCBjaGlsZDEgJiYKLQlta19jaGlsZCBjaGlsZDIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgorCW1rX2NoaWxkIHRlc3RyZXBvIGNoaWxkMSAmJgorCW1rX2NoaWxkIHRlc3RyZXBvIGNoaWxkMiAmJgogCSgKIAkJY2QgY2hpbGQxICYmCiAJCWdpdCBicmFuY2ggZm9vICYmCkBAIC05MjksMjkgKzk1MSw1MCBAQAogCSkKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCByZXF1aXJlcyAtLWZvcmNlIHRvIHVwZGF0ZSBsaWdodHdlaWdodCB0YWcnICcKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgorCW1rX2NoaWxkIHRlc3RyZXBvIGNoaWxkMSAmJgorCW1rX2NoaWxkIHRlc3RyZXBvIGNoaWxkMiAmJgorCSgKKwkJY2QgY2hpbGQxICYmCisJCWdpdCB0YWcgVGFnICYmCisJCWdpdCBwdXNoIC4uL2NoaWxkMiBUYWcgJiYKKwkJZ2l0IHB1c2ggLi4vY2hpbGQyIFRhZyAmJgorCQk+ZmlsZTEgJiYKKwkJZ2l0IGFkZCBmaWxlMSAmJgorCQlnaXQgY29tbWl0IC1tICJmaWxlMSIgJiYKKwkJZ2l0IHRhZyAtZiBUYWcgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggLi4vY2hpbGQyIFRhZyAmJgorCQlnaXQgcHVzaCAtLWZvcmNlIC4uL2NoaWxkMiBUYWcgJiYKKwkJZ2l0IHRhZyAtZiBUYWcgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggLi4vY2hpbGQyIFRhZyBIRUFEfiAmJgorCQlnaXQgcHVzaCAtLWZvcmNlIC4uL2NoaWxkMiBUYWcKKwkpCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggLS1wb3JjZWxhaW4nICcKLQlta19lbXB0eSAmJgorCW1rX2VtcHR5IHRlc3RyZXBvICYmCiAJZWNobyA+LmdpdC9mb28gICJUbyB0ZXN0cmVwbyIgJiYKIAllY2hvID4+LmdpdC9mb28gIioJcmVmcy9oZWFkcy9tYXN0ZXI6cmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIJW25ldyBicmFuY2hdIiAgJiYKIAllY2hvID4+LmdpdC9mb28gIkRvbmUiICYmCiAJZ2l0IHB1c2ggPi5naXQvYmFyIC0tcG9yY2VsYWluICB0ZXN0cmVwbyByZWZzL2hlYWRzL21hc3RlcjpyZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciAmJgogCSgKIAkJY2QgdGVzdHJlcG8gJiYKLQkJcj0kKGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlcikgJiYKLQkJdGVzdCAieiRyIiA9ICJ6JHRoZV9jb21taXQiICYmCi0JCXRlc3QgMSA9ICQoZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luIHwgd2MgLWwpCisJCWVjaG8gIiR0aGVfY29tbWl0IGNvbW1pdAlyZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciIgPmV4cGVjdCAmJgorCQlnaXQgZm9yLWVhY2gtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4gPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAJKSAmJgogCXRlc3RfY21wIC5naXQvZm9vIC5naXQvYmFyCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggLS1wb3JjZWxhaW4gYmFkIHVybCcgJwotCW1rX2VtcHR5ICYmCisJbWtfZW1wdHkgdGVzdHJlcG8gJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcHVzaCA+LmdpdC9iYXIgLS1wb3JjZWxhaW4gYXNkZmFzZGZhc2QgcmVmcy9oZWFkcy9tYXN0ZXI6cmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIgJiYKIAl0ZXN0X211c3RfZmFpbCBncmVwIC1xIERvbmUgLmdpdC9iYXIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCAtLXBvcmNlbGFpbiByZWplY3RlZCcgJwotCW1rX2VtcHR5ICYmCisJbWtfZW1wdHkgdGVzdHJlcG8gJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyByZWZzL2hlYWRzL21hc3RlcjpyZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciAmJgogCShjZCB0ZXN0cmVwbyAmJgogCQlnaXQgcmVzZXQgLS1oYXJkIG9yaWdpbi9tYXN0ZXJeCkBAIC05NjUsNyArMTAwOCw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggLS1wb3JjZWxhaW4gLS1kcnktcnVuIHJlamVjdGVkJyAnCi0JbWtfZW1wdHkgJiYKKwlta19lbXB0eSB0ZXN0cmVwbyAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIHJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyICYmCiAJKGNkIHRlc3RyZXBvICYmCiAJCWdpdCByZXNldCAtLWhhcmQgb3JpZ2luL21hc3RlcgpAQCAtOTgwLDE5ICsxMDIzLDE1MyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIC0tcHJ1bmUnICcKLQlta190ZXN0IGhlYWRzL21hc3RlciBoZWFkcy9zZWNvbmQgaGVhZHMvZm9vIGhlYWRzL2JhciAmJgotCWdpdCBwdXNoIC0tcHJ1bmUgdGVzdHJlcG8gJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2ZpcnN0X2NvbW1pdCBoZWFkcy9zZWNvbmQgJiYKLQkhIGNoZWNrX3B1c2hfcmVzdWx0ICR0aGVfZmlyc3RfY29tbWl0IGhlYWRzL2ZvbyBoZWFkcy9iYXIKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciBoZWFkcy9zZWNvbmQgaGVhZHMvZm9vIGhlYWRzL2JhciAmJgorCWdpdCBwdXNoIC0tcHJ1bmUgdGVzdHJlcG8gOiAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL21hc3RlciAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfZmlyc3RfY29tbWl0IGhlYWRzL3NlY29uZCAmJgorCSEgY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQgaGVhZHMvZm9vIGhlYWRzL2JhcgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIC0tcHJ1bmUgcmVmc3BlYycgJwotCW1rX3Rlc3QgdG1wL21hc3RlciB0bXAvc2Vjb25kIHRtcC9mb28gdG1wL2JhciAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gdG1wL21hc3RlciB0bXAvc2Vjb25kIHRtcC9mb28gdG1wL2JhciAmJgogCWdpdCBwdXNoIC0tcHJ1bmUgdGVzdHJlcG8gInJlZnMvaGVhZHMvKjpyZWZzL3RtcC8qIiAmJgotCWNoZWNrX3B1c2hfcmVzdWx0ICR0aGVfY29tbWl0IHRtcC9tYXN0ZXIgJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2ZpcnN0X2NvbW1pdCB0bXAvc2Vjb25kICYmCi0JISBjaGVja19wdXNoX3Jlc3VsdCAkdGhlX2ZpcnN0X2NvbW1pdCB0bXAvZm9vIHRtcC9iYXIKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2NvbW1pdCB0bXAvbWFzdGVyICYmCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQgdG1wL3NlY29uZCAmJgorCSEgY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQgdG1wL2ZvbyB0bXAvYmFyCisnCisKK2ZvciBjb25maWdzZWN0aW9uIGluIHRyYW5zZmVyIHJlY2VpdmUKK2RvCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAicHVzaCB0byB1cGRhdGUgYSByZWYgaGlkZGVuIGJ5ICRjb25maWdzZWN0aW9uLmhpZGVyZWZzIiAnCisJCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyIGhpZGRlbi9vbmUgaGlkZGVuL3R3byBoaWRkZW4vdGhyZWUgJiYKKwkJKAorCQkJY2QgdGVzdHJlcG8gJiYKKwkJCWdpdCBjb25maWcgJGNvbmZpZ3NlY3Rpb24uaGlkZXJlZnMgcmVmcy9oaWRkZW4KKwkJKSAmJgorCisJCSMgcHVzaCB0byB1bmhpZGRlbiByZWYgc3VjY2VlZHMgbm9ybWFsbHkKKwkJZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyOnJlZnMvaGVhZHMvbWFzdGVyICYmCisJCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL21hc3RlciAmJgorCisJCSMgcHVzaCB0byB1cGRhdGUgYSBoaWRkZW4gcmVmIHNob3VsZCBmYWlsCisJCXRlc3RfbXVzdF9mYWlsIGdpdCBwdXNoIHRlc3RyZXBvIG1hc3RlcjpyZWZzL2hpZGRlbi9vbmUgJiYKKwkJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQgaGlkZGVuL29uZSAmJgorCisJCSMgcHVzaCB0byBkZWxldGUgYSBoaWRkZW4gcmVmIHNob3VsZCBmYWlsCisJCXRlc3RfbXVzdF9mYWlsIGdpdCBwdXNoIHRlc3RyZXBvIDpyZWZzL2hpZGRlbi90d28gJiYKKwkJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQgaGlkZGVuL3R3byAmJgorCisJCSMgaWRlbXBvdGVudCBwdXNoIHRvIHVwZGF0ZSBhIGhpZGRlbiByZWYgc2hvdWxkIGZhaWwKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQ6cmVmcy9oaWRkZW4vdGhyZWUgJiYKKwkJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQgaGlkZGVuL3RocmVlCisJJworZG9uZQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCBleGFjdCBTSEExJyAnCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgaGlkZGVuL29uZSAmJgorCWdpdCBwdXNoIHRlc3RyZXBvIG1hc3RlcjpyZWZzL2hpZGRlbi9vbmUgJiYKKwkoCisJCWNkIHRlc3RyZXBvICYmCisJCWdpdCBjb25maWcgdHJhbnNmZXIuaGlkZXJlZnMgcmVmcy9oaWRkZW4KKwkpICYmCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgaGlkZGVuL29uZSAmJgorCisJbWtfY2hpbGQgdGVzdHJlcG8gY2hpbGQgJiYKKwkoCisJCWNkIGNoaWxkICYmCisKKwkJIyBtYWtlIHN1cmUgJHRoZV9jb21taXQgZG9lcyBub3QgZXhpc3QgaGVyZQorCQlnaXQgcmVwYWNrIC1hIC1kICYmCisJCWdpdCBwcnVuZSAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgY2F0LWZpbGUgLXQgJHRoZV9jb21taXQgJiYKKworCQkjIGZldGNoaW5nIHRoZSBoaWRkZW4gb2JqZWN0IHNob3VsZCBmYWlsIGJ5IGRlZmF1bHQKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IGZldGNoIC12IC4uL3Rlc3RyZXBvICR0aGVfY29tbWl0OnJlZnMvaGVhZHMvY29weSAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvY29weSAmJgorCisJCSMgdGhlIHNlcnZlciBzaWRlIGNhbiBhbGxvdyBpdCB0byBzdWNjZWVkCisJCSgKKwkJCWNkIC4uL3Rlc3RyZXBvICYmCisJCQlnaXQgY29uZmlnIHVwbG9hZHBhY2suYWxsb3d0aXBzaGExaW53YW50IHRydWUKKwkJKSAmJgorCisJCWdpdCBmZXRjaCAtdiAuLi90ZXN0cmVwbyAkdGhlX2NvbW1pdDpyZWZzL2hlYWRzL2NvcHkgJiYKKwkJcmVzdWx0PSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL2NvcHkpICYmCisJCXRlc3QgIiR0aGVfY29tbWl0IiA9ICIkcmVzdWx0IgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggZm9sbG93cyB0YWdzIGJ5IGRlZmF1bHQnICcKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgorCXJtIC1mciBzcmMgZHN0ICYmCisJZ2l0IGluaXQgc3JjICYmCisJKAorCQljZCBzcmMgJiYKKwkJZ2l0IHB1bGwgLi4vdGVzdHJlcG8gbWFzdGVyICYmCisJCWdpdCB0YWcgLW0gImFubm90YXRlZCIgdGFnICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgPnRtcDEgJiYKKwkJKAorCQkJY2F0IHRtcDEKKwkJCXNlZCAtbiAic3xyZWZzL2hlYWRzL21hc3RlciR8cmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXJ8cCIgdG1wMQorCQkpIHwKKwkJc29ydCAtayAzID4uLi9leHBlY3QKKwkpICYmCisJZ2l0IGluaXQgZHN0ICYmCisJKAorCQljZCBkc3QgJiYKKwkJZ2l0IHJlbW90ZSBhZGQgb3JpZ2luIC4uL3NyYyAmJgorCQlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIucmVtb3RlIG9yaWdpbiAmJgorCQlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2UgcmVmcy9oZWFkcy9tYXN0ZXIgJiYKKwkJZ2l0IHB1bGwgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiA+Li4vYWN0dWFsCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCBkb2VzIG5vdCBmb2xsb3cgdGFncyBieSBkZWZhdWx0JyAnCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKKwlybSAtZnIgc3JjIGRzdCAmJgorCWdpdCBpbml0IHNyYyAmJgorCWdpdCBpbml0IC0tYmFyZSBkc3QgJiYKKwkoCisJCWNkIHNyYyAmJgorCQlnaXQgcHVsbCAuLi90ZXN0cmVwbyBtYXN0ZXIgJiYKKwkJZ2l0IHRhZyAtbSAiYW5ub3RhdGVkIiB0YWcgJiYKKwkJZ2l0IGNoZWNrb3V0IC1iIGFub3RoZXIgJiYKKwkJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tICJmdXR1cmUgY29tbWl0IiAmJgorCQlnaXQgdGFnIC1tICJmdXR1cmUiIGZ1dHVyZSAmJgorCQlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy9oZWFkcy9tYXN0ZXIgPi4uL2V4cGVjdCAmJgorCQlnaXQgcHVzaCAuLi9kc3QgbWFzdGVyCisJKSAmJgorCSgKKwkJY2QgZHN0ICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgPi4uL2FjdHVhbAorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggLS1mb2xsb3ctdGFnIG9ubHkgcHVzaGVzIHJlbGV2YW50IHRhZ3MnICcKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgorCXJtIC1mciBzcmMgZHN0ICYmCisJZ2l0IGluaXQgc3JjICYmCisJZ2l0IGluaXQgLS1iYXJlIGRzdCAmJgorCSgKKwkJY2Qgc3JjICYmCisJCWdpdCBwdWxsIC4uL3Rlc3RyZXBvIG1hc3RlciAmJgorCQlnaXQgdGFnIC1tICJhbm5vdGF0ZWQiIHRhZyAmJgorCQlnaXQgY2hlY2tvdXQgLWIgYW5vdGhlciAmJgorCQlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gImZ1dHVyZSBjb21taXQiICYmCisJCWdpdCB0YWcgLW0gImZ1dHVyZSIgZnV0dXJlICYmCisJCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiByZWZzL2hlYWRzL21hc3RlciByZWZzL3RhZ3MvdGFnID4uLi9leHBlY3QKKwkJZ2l0IHB1c2ggLS1mb2xsb3ctdGFnIC4uL2RzdCBtYXN0ZXIKKwkpICYmCisJKAorCQljZCBkc3QgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiA+Li4vYWN0dWFsCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q1NTE3LXB1c2gtbWlycm9yLnNoIGIvdC90NTUxNy1wdXNoLW1pcnJvci5zaAppbmRleCBlMmFkMjYwLi4xMmE1ZGZiIDEwMDc1NQotLS0gYS90L3Q1NTE3LXB1c2gtbWlycm9yLnNoCisrKyBiL3QvdDU1MTctcHVzaC1taXJyb3Iuc2gKQEAgLTI1Niw3ICsyNTYsNyBAQAogCQlnaXQgYnJhbmNoIGtlZXAgbWFzdGVyICYmCiAJCWdpdCBwdXNoIC0tbWlycm9yIHVwICYmCiAJCWdpdCBicmFuY2ggLUQga2VlcCAmJgotCQlnaXQgcHVzaCB1cAorCQlnaXQgcHVzaCB1cCA6CiAJKSAmJgogCSgKIAkJY2QgbWlycm9yICYmCmRpZmYgLS1naXQgYS90L3Q1NTE5LXB1c2gtYWx0ZXJuYXRlcy5zaCBiL3QvdDU1MTktcHVzaC1hbHRlcm5hdGVzLnNoCmluZGV4IGMwMGM5YjAuLjExZmNkMzcgMTAwNzU1Ci0tLSBhL3QvdDU1MTktcHVzaC1hbHRlcm5hdGVzLnNoCisrKyBiL3QvdDU1MTktcHVzaC1hbHRlcm5hdGVzLnNoCkBAIC00MCw3ICs0MCw3IEBACiAJCWNkIGFsaWNlLXdvcmsgJiYKIAkJZWNobyBtb3JlID5maWxlICYmCiAJCWdpdCBjb21taXQgLWEgLW0gc2Vjb25kICYmCi0JCWdpdCBwdXNoIC4uL2FsaWNlLXB1YgorCQlnaXQgcHVzaCAuLi9hbGljZS1wdWIgOgogCSkKICcKIApAQCAtNTcsNyArNTcsNyBAQAogCQlnaXQgcHVsbCAuLi9hbGljZS1wdWIgbWFzdGVyICYmCiAJCWVjaG8gbW9yZSBib2IgPmZpbGUgJiYKIAkJZ2l0IGNvbW1pdCAtYSAtbSB0aGlyZCAmJgotCQlnaXQgcHVzaCAuLi9ib2ItcHViCisJCWdpdCBwdXNoIC4uL2JvYi1wdWIgOgogCSkgJiYKIAogCSMgQ2hlY2sgdGhhdCB0aGUgc2Vjb25kIGNvbW1pdCBieSBBbGljZSBpcyBub3Qgc2VudApAQCAtODYsNyArODYsNyBAQAogCQljZCBhbGljZS13b3JrICYmCiAJCWVjaG8gbW9yZSBhbGljZSA+ZmlsZSAmJgogCQlnaXQgY29tbWl0IC1hIC1tIGZvdXJ0aCAmJgotCQlnaXQgcHVzaCAuLi9hbGljZS1wdWIKKwkJZ2l0IHB1c2ggLi4vYWxpY2UtcHViIDoKIAkpCiAnCiAKQEAgLTk5LDcgKzk5LDcgQEAKIAkJY2QgYm9iLXdvcmsgJiYKIAkJZWNobyB5ZXQgbW9yZSBib2IgPmZpbGUgJiYKIAkJZ2l0IGNvbW1pdCAtYSAtbSBmaWZ0aCAmJgotCQlnaXQgcHVzaCAuLi9ib2ItcHViCisJCWdpdCBwdXNoIC4uL2JvYi1wdWIgOgogCSkKICcKIApAQCAtMTE1LDcgKzExNSw3IEBACiAJCWdpdCBjb21taXQgLWEgLW0gc2l4dGguMiAmJgogCQllY2hvIG1vcmUgYW5kIG1vcmUgYWxpY2UgPj5maWxlICYmCiAJCWdpdCBjb21taXQgLWEgLW0gc2l4dGguMyAmJgotCQlnaXQgcHVzaCAuLi9hbGljZS1wdWIKKwkJZ2l0IHB1c2ggLi4vYWxpY2UtcHViIDoKIAkpCiAnCiAKQEAgLTEzNiw3ICsxMzYsNyBAQAogCQlnaXQgaGFzaC1vYmplY3QgLXQgY29tbWl0IC13IGNvbW1pdCAmJgogCQllY2hvIGV2ZW4gbW9yZSBib2IgPmZpbGUgJiYKIAkJZ2l0IGNvbW1pdCAtYSAtbSBzZXZlbnRoICYmCi0JCWdpdCBwdXNoIC4uL2JvYi1wdWIKKwkJZ2l0IHB1c2ggLi4vYm9iLXB1YiA6CiAJKQogJwogCmRpZmYgLS1naXQgYS90L3Q1NTIwLXB1bGwuc2ggYi90L3Q1NTIwLXB1bGwuc2gKaW5kZXggMzUzMDRiNC4uZWQ0ZDljOCAxMDA3NTUKLS0tIGEvdC90NTUyMC1wdWxsLnNoCisrKyBiL3QvdDU1MjAtcHVsbC5zaApAQCAtNTcsNiArNTcsMzUgQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1bGxpbmcgaW50byB2b2lkIGRvZXMgbm90IG92ZXJ3cml0ZSBzdGFnZWQgZmlsZXMnICcKKwlnaXQgaW5pdCBjbG9uZWQtc3RhZ2VkLWNvbGxpZGluZyAmJgorCSgKKwkJY2QgY2xvbmVkLXN0YWdlZC1jb2xsaWRpbmcgJiYKKwkJZWNobyAiYWx0ZXJuYXRlIGNvbnRlbnQiID5maWxlICYmCisJCWdpdCBhZGQgZmlsZSAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcHVsbCAuLiBtYXN0ZXIgJiYKKwkJZWNobyAiYWx0ZXJuYXRlIGNvbnRlbnQiID5leHBlY3QgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGZpbGUgJiYKKwkJZ2l0IGNhdC1maWxlIGJsb2IgOmZpbGUgPmZpbGUuaW5kZXggJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGZpbGUuaW5kZXgKKwkpCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVsbGluZyBpbnRvIHZvaWQgZG9lcyBub3QgcmVtb3ZlIG5ldyBzdGFnZWQgZmlsZXMnICcKKwlnaXQgaW5pdCBjbG9uZWQtc3RhZ2VkLW5ldyAmJgorCSgKKwkJY2QgY2xvbmVkLXN0YWdlZC1uZXcgJiYKKwkJZWNobyAibmV3IHRyYWNrZWQgZmlsZSIgPm5ld2ZpbGUgJiYKKwkJZ2l0IGFkZCBuZXdmaWxlICYmCisJCWdpdCBwdWxsIC4uIG1hc3RlciAmJgorCQllY2hvICJuZXcgdHJhY2tlZCBmaWxlIiA+ZXhwZWN0ICYmCisJCXRlc3RfY21wIGV4cGVjdCBuZXdmaWxlICYmCisJCWdpdCBjYXQtZmlsZSBibG9iIDpuZXdmaWxlID5uZXdmaWxlLmluZGV4ICYmCisJCXRlc3RfY21wIGV4cGVjdCBuZXdmaWxlLmluZGV4CisJKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IC4gYXMgYSByZW1vdGUnICcKIAogCWdpdCBicmFuY2ggY29weSBtYXN0ZXIgJiYKQEAgLTk2LDggKzEyNSw3IEBACiAnCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdWxsLnJlYmFzZScgJwogCWdpdCByZXNldCAtLWhhcmQgYmVmb3JlLXJlYmFzZSAmJgotCWdpdCBjb25maWcgLS1ib29sIHB1bGwucmViYXNlIHRydWUgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjb25maWcgLS11bnNldCBwdWxsLnJlYmFzZSIgJiYKKwl0ZXN0X2NvbmZpZyBwdWxsLnJlYmFzZSB0cnVlICYmCiAJZ2l0IHB1bGwgLiBjb3B5ICYmCiAJdGVzdCAkKGdpdCByZXYtcGFyc2UgSEVBRF4pID0gJChnaXQgcmV2LXBhcnNlIGNvcHkpICYmCiAJdGVzdCBuZXcgPSAkKGdpdCBzaG93IEhFQUQ6ZmlsZTIpCkBAIC0xMDUsOCArMTMzLDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYnJhbmNoLnRvLXJlYmFzZS5yZWJhc2UnICcKIAlnaXQgcmVzZXQgLS1oYXJkIGJlZm9yZS1yZWJhc2UgJiYKLQlnaXQgY29uZmlnIC0tYm9vbCBicmFuY2gudG8tcmViYXNlLnJlYmFzZSB0cnVlICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgYnJhbmNoLnRvLXJlYmFzZS5yZWJhc2UiICYmCisJdGVzdF9jb25maWcgYnJhbmNoLnRvLXJlYmFzZS5yZWJhc2UgdHJ1ZSAmJgogCWdpdCBwdWxsIC4gY29weSAmJgogCXRlc3QgJChnaXQgcmV2LXBhcnNlIEhFQUReKSA9ICQoZ2l0IHJldi1wYXJzZSBjb3B5KSAmJgogCXRlc3QgbmV3ID0gJChnaXQgc2hvdyBIRUFEOmZpbGUyKQpAQCAtMTE0LDEwICsxNDEsOCBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdicmFuY2gudG8tcmViYXNlLnJlYmFzZSBzaG91bGQgb3ZlcnJpZGUgcHVsbC5yZWJhc2UnICcKIAlnaXQgcmVzZXQgLS1oYXJkIGJlZm9yZS1yZWJhc2UgJiYKLQlnaXQgY29uZmlnIC0tYm9vbCBwdWxsLnJlYmFzZSB0cnVlICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgcHVsbC5yZWJhc2UiICYmCi0JZ2l0IGNvbmZpZyAtLWJvb2wgYnJhbmNoLnRvLXJlYmFzZS5yZWJhc2UgZmFsc2UgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjb25maWcgLS11bnNldCBicmFuY2gudG8tcmViYXNlLnJlYmFzZSIgJiYKKwl0ZXN0X2NvbmZpZyBwdWxsLnJlYmFzZSB0cnVlICYmCisJdGVzdF9jb25maWcgYnJhbmNoLnRvLXJlYmFzZS5yZWJhc2UgZmFsc2UgJiYKIAlnaXQgcHVsbCAuIGNvcHkgJiYKIAl0ZXN0ICQoZ2l0IHJldi1wYXJzZSBIRUFEXikgIT0gJChnaXQgcmV2LXBhcnNlIGNvcHkpICYmCiAJdGVzdCBuZXcgPSAkKGdpdCBzaG93IEhFQUQ6ZmlsZTIpCkBAIC0xNzEsOSArMTk2LDkgQEAKIAlnaXQgdXBkYXRlLXJlZiByZWZzL3JlbW90ZXMvbWUvY29weSBjb3B5XiAmJgogCUNPUFk9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IG1lL2NvcHkpICYmCiAJZ2l0IHJlYmFzZSAtLW9udG8gJENPUFkgY29weSAmJgotCWdpdCBjb25maWcgYnJhbmNoLnRvLXJlYmFzZS5yZW1vdGUgbWUgJiYKLQlnaXQgY29uZmlnIGJyYW5jaC50by1yZWJhc2UubWVyZ2UgcmVmcy9oZWFkcy9jb3B5ICYmCi0JZ2l0IGNvbmZpZyBicmFuY2gudG8tcmViYXNlLnJlYmFzZSB0cnVlICYmCisJdGVzdF9jb25maWcgYnJhbmNoLnRvLXJlYmFzZS5yZW1vdGUgbWUgJiYKKwl0ZXN0X2NvbmZpZyBicmFuY2gudG8tcmViYXNlLm1lcmdlIHJlZnMvaGVhZHMvY29weSAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC50by1yZWJhc2UucmViYXNlIHRydWUgJiYKIAllY2hvIGRpcnR5ID4+IGZpbGUgJiYKIAlnaXQgYWRkIGZpbGUgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcHVsbCAmJgpkaWZmIC0tZ2l0IGEvdC90NTUyMS1wdWxsLW9wdGlvbnMuc2ggYi90L3Q1NTIxLXB1bGwtb3B0aW9ucy5zaAppbmRleCAxYjA2NjkxLi5hYTMxYWJlIDEwMDc1NQotLS0gYS90L3Q1NTIxLXB1bGwtb3B0aW9ucy5zaAorKysgYi90L3Q1NTIxLXB1bGwtb3B0aW9ucy5zaApAQCAtMTksNiArMTksMTcgQEAKIAl0ZXN0ICEgLXMgb3V0KQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgcHVsbCAtcSAtLXJlYmFzZScgJworCW1rZGlyIGNsb25lZHFyYiAmJgorCShjZCBjbG9uZWRxcmIgJiYgZ2l0IGluaXQgJiYKKwlnaXQgcHVsbCAtcSAtLXJlYmFzZSAiLi4vcGFyZW50IiA+b3V0IDI+ZXJyICYmCisJdGVzdCAhIC1zIGVyciAmJgorCXRlc3QgISAtcyBvdXQgJiYKKwlnaXQgcHVsbCAtcSAtLXJlYmFzZSAiLi4vcGFyZW50IiA+b3V0IDI+ZXJyICYmCisJdGVzdCAhIC1zIGVyciAmJgorCXRlc3QgISAtcyBvdXQpCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBwdWxsJyAnCiAJbWtkaXIgY2xvbmVkICYmCiAJKGNkIGNsb25lZCAmJiBnaXQgaW5pdCAmJgpAQCAtMjcsNiArMzgsMTQgQEAKIAl0ZXN0ICEgLXMgb3V0KQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgcHVsbCAtLXJlYmFzZScgJworCW1rZGlyIGNsb25lZHJiICYmCisJKGNkIGNsb25lZHJiICYmIGdpdCBpbml0ICYmCisJZ2l0IHB1bGwgLS1yZWJhc2UgIi4uL3BhcmVudCIgPm91dCAyPmVyciAmJgorCXRlc3QgLXMgZXJyICYmCisJdGVzdCAhIC1zIG91dCkKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1bGwgLXYnICcKIAlta2RpciBjbG9uZWR2ICYmCiAJKGNkIGNsb25lZHYgJiYgZ2l0IGluaXQgJiYKQEAgLTM1LDYgKzU0LDE0IEBACiAJdGVzdCAhIC1zIG91dCkKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1bGwgLXYgLS1yZWJhc2UnICcKKwlta2RpciBjbG9uZWR2cmIgJiYKKwkoY2QgY2xvbmVkdnJiICYmIGdpdCBpbml0ICYmCisJZ2l0IHB1bGwgLXYgLS1yZWJhc2UgIi4uL3BhcmVudCIgPm91dCAyPmVyciAmJgorCXRlc3QgLXMgZXJyICYmCisJdGVzdCAhIC1zIG91dCkKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1bGwgLXYgLXEnICcKIAlta2RpciBjbG9uZWR2cSAmJgogCShjZCBjbG9uZWR2cSAmJiBnaXQgaW5pdCAmJgpkaWZmIC0tZ2l0IGEvdC90NTUzMC11cGxvYWQtcGFjay1lcnJvci5zaCBiL3QvdDU1MzAtdXBsb2FkLXBhY2stZXJyb3Iuc2gKaW5kZXggNmIyYTVmNC4uYzk4M2QzNiAxMDA3NTUKLS0tIGEvdC90NTUzMC11cGxvYWQtcGFjay1lcnJvci5zaAorKysgYi90L3Q1NTMwLXVwbG9hZC1wYWNrLWVycm9yLnNoCkBAIC0zNSw4ICszNSw4IEBACiAJcHJpbnRmICIwMDMyd2FudCAlc1xuMDAwMDAwMDlkb25lXG4wMDAwIiBcCiAJCSQoZ2l0IHJldi1wYXJzZSBIRUFEKSA+aW5wdXQgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgdXBsb2FkLXBhY2sgLiA8aW5wdXQgPi9kZXYvbnVsbCAyPm91dHB1dC5lcnIgJiYKLQlncmVwICJ1bmFibGUgdG8gcmVhZCIgb3V0cHV0LmVyciAmJgotCWdyZXAgInBhY2stb2JqZWN0cyBkaWVkIiBvdXRwdXQuZXJyCisJdGVzdF9pMThuZ3JlcCAidW5hYmxlIHRvIHJlYWQiIG91dHB1dC5lcnIgJiYKKwl0ZXN0X2kxOG5ncmVwICJwYWNrLW9iamVjdHMgZGllZCIgb3V0cHV0LmVycgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb3JydXB0IHJlcG8gZGlmZmVyZW50bHknICcKZGlmZiAtLWdpdCBhL3QvdDU1MzEtZGVlcC1zdWJtb2R1bGUtcHVzaC5zaCBiL3QvdDU1MzEtZGVlcC1zdWJtb2R1bGUtcHVzaC5zaAppbmRleCAxOTQ3YzI4Li44YzE2ZTA0IDEwMDc1NQotLS0gYS90L3Q1NTMxLWRlZXAtc3VibW9kdWxlLXB1c2guc2gKKysrIGIvdC90NTUzMS1kZWVwLXN1Ym1vZHVsZS1wdXNoLnNoCkBAIC0xNiw2ICsxNiw3IEBACiAJCSgKIAkJCWNkIGdhci9iYWdlICYmCiAJCQlnaXQgaW5pdCAmJgorCQkJZ2l0IGNvbmZpZyBwdXNoLmRlZmF1bHQgbWF0Y2hpbmcgJiYKIAkJCT5qdW5rICYmCiAJCQlnaXQgYWRkIGp1bmsgJiYKIAkJCWdpdCBjb21taXQgLW0gIkluaXRpYWwganVuayIKZGlmZiAtLWdpdCBhL3QvdDU1MzItZmV0Y2gtcHJveHkuc2ggYi90L3Q1NTMyLWZldGNoLXByb3h5LnNoCmluZGV4IDYyZjI0NjAuLjU1MzFiZDEgMTAwNzU1Ci0tLSBhL3QvdDU1MzItZmV0Y2gtcHJveHkuc2gKKysrIGIvdC90NTUzMi1mZXRjaC1wcm94eS5zaApAQCAtMTUsNyArMTUsNyBAQAogY2F0ID5wcm94eSA8PCdFT0YnCiAjIS9iaW4vc2gKIGVjaG8gPiYyICJwcm94eWluZyBmb3IgJCoiCi1jbWQ9YHBlcmwgLWUgJworY21kPWAiJFBFUkxfUEFUSCIgLWUgJwogCXJlYWQoU1RESU4sICRidWYsIDQpOwogCW15ICRuID0gaGV4KCRidWYpIC0gNDsKIAlyZWFkKFNURElOLCAkYnVmLCAkbik7CmRpZmYgLS1naXQgYS90L3Q1NTM1LWZldGNoLXB1c2gtc3ltcmVmLnNoIGIvdC90NTUzNS1mZXRjaC1wdXNoLXN5bXJlZi5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ZWQ1OGQyCi0tLSAvZGV2L251bGwKKysrIGIvdC90NTUzNS1mZXRjaC1wdXNoLXN5bXJlZi5zaApAQCAtMCwwICsxLDQyIEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nYXZvaWRpbmcgY29uZmxpY3RpbmcgdXBkYXRlIHRocnUgc3ltcmVmIGFsaWFzaW5nJworCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKwl0ZXN0X2NvbW1pdCBvbmUgJiYKKwlnaXQgY2xvbmUgLiBzcmMgJiYKKwlnaXQgY2xvbmUgc3JjIGRzdDEgJiYKKwlnaXQgY2xvbmUgc3JjIGRzdDIgJiYKKwl0ZXN0X2NvbW1pdCB0d28gJiYKKwkoIGNkIHNyYyAmJiBnaXQgcHVsbCApCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2gnICcKKwkoCisJCWNkIHNyYyAmJgorCQlnaXQgcHVzaCAuLi9kc3QxICJyZWZzL3JlbW90ZXMvKjpyZWZzL3JlbW90ZXMvKiIKKwkpICYmCisJZ2l0IGxzLXJlbW90ZSBzcmMgInJlZnMvcmVtb3Rlcy8qIiA+ZXhwZWN0ICYmCisJZ2l0IGxzLXJlbW90ZSBkc3QxICJyZWZzL3JlbW90ZXMvKiIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKwkoIGNkIHNyYyAmJiBnaXQgc3ltYm9saWMtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4vSEVBRCApID5leHBlY3QgJiYKKwkoIGNkIGRzdDEgJiYgZ2l0IHN5bWJvbGljLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luL0hFQUQgKSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCcgJworCSgKKwkJY2QgZHN0MiAmJgorCQlnaXQgZmV0Y2ggLi4vc3JjICJyZWZzL3JlbW90ZXMvKjpyZWZzL3JlbW90ZXMvKiIKKwkpICYmCisJZ2l0IGxzLXJlbW90ZSBzcmMgInJlZnMvcmVtb3Rlcy8qIiA+ZXhwZWN0ICYmCisJZ2l0IGxzLXJlbW90ZSBkc3QyICJyZWZzL3JlbW90ZXMvKiIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKwkoIGNkIHNyYyAmJiBnaXQgc3ltYm9saWMtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4vSEVBRCApID5leHBlY3QgJiYKKwkoIGNkIGRzdDIgJiYgZ2l0IHN5bWJvbGljLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luL0hFQUQgKSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDU1NDAtaHR0cC1wdXNoLnNoIGIvdC90NTU0MC1odHRwLXB1c2guc2gKaW5kZXggMWVlYTY0Ny4uMDFkMGQ5NSAxMDA3NTUKLS0tIGEvdC90NTU0MC1odHRwLXB1c2guc2gKKysrIGIvdC90NTU0MC1odHRwLXB1c2guc2gKQEAgLTQ2LDE1ICs0Niw3IEBACiAJICAgICAgICIkSFRUUERfRE9DVU1FTlRfUk9PVF9QQVRIL2F1dGgvZHVtYi90ZXN0X3JlcG8uZ2l0IgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBhc2twYXNzIGhlbHBlcicgJwotCWNhdCA+YXNrcGFzcyA8PC1cRU9GICYmCi0JIyEvYmluL3NoCi0JZWNobyB1c2VyQGhvc3QKLQlFT0YKLQljaG1vZCAreCBhc2twYXNzICYmCi0JR0lUX0FTS1BBU1M9IiRQV0QvYXNrcGFzcyIgJiYKLQlleHBvcnQgR0lUX0FTS1BBU1MKLScKK3NldHVwX2Fza3Bhc3NfaGVscGVyCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIHJlbW90ZSByZXBvc2l0b3J5JyAnCiAJY2QgIiRST09UX1BBVEgiICYmCkBAIC0xMTcsNyArMTA5LDcgQEAKIAkjIEJ5IHJlc2V0LCB3ZSBmb3JjZSBnaXQgdG8gcmV0cmlldmUgdGhlIHBhY2tlZCBvYmplY3QKIAkoY2QgIiRST09UX1BBVEgiL3Rlc3RfcmVwb19jbG9uZV9wYWNrZWQgJiYKIAkgZ2l0IHJlc2V0IC0taGFyZCBIRUFEXiAmJgotCSBnaXQgcmVtb3RlIHJtIG9yaWdpbiAmJgorCSBnaXQgcmVtb3RlIHJlbW92ZSBvcmlnaW4gJiYKIAkgZ2l0IHJlZmxvZyBleHBpcmUgLS1leHBpcmU9MCAtLWFsbCAmJgogCSBnaXQgcHJ1bmUgJiYKIAkgZ2l0IHB1c2ggLWYgLXYgJEhUVFBEX1VSTC9kdW1iL3Rlc3RfcmVwb19wYWNrZWQuZ2l0IG1hc3RlcikKQEAgLTE2Miw2ICsxNTQsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHRvIHBhc3N3b3JkLXByb3RlY3RlZCByZXBvc2l0b3J5ICh1c2VyIGluIFVSTCknICcKIAl0ZXN0X2NvbW1pdCBwdy11c2VyICYmCisJc2V0X2Fza3Bhc3MgdXNlckBob3N0ICYmCiAJZ2l0IHB1c2ggIiRIVFRQRF9VUkxfVVNFUi9hdXRoL2R1bWIvdGVzdF9yZXBvLmdpdCIgSEVBRCAmJgogCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCA+ZXhwZWN0ICYmCiAJZ2l0IC0tZ2l0LWRpcj0iJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSC9hdXRoL2R1bWIvdGVzdF9yZXBvLmdpdCIgXApAQCAtMTY5LDkgKzE2MiwxNSBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3RfZmFpbHVyZSAndXNlciB3YXMgcHJvbXB0ZWQgb25seSBvbmNlIGZvciBwYXNzd29yZCcgJworCWV4cGVjdF9hc2twYXNzIHBhc3MgdXNlckBob3N0CisnCisKIHRlc3RfZXhwZWN0X2ZhaWx1cmUgJ3B1c2ggdG8gcGFzc3dvcmQtcHJvdGVjdGVkIHJlcG9zaXRvcnkgKG5vIHVzZXIgaW4gVVJMKScgJwogCXRlc3RfY29tbWl0IHB3LW5vdXNlciAmJgorCXNldF9hc2twYXNzIHVzZXJAaG9zdCAmJgogCWdpdCBwdXNoICIkSFRUUERfVVJML2F1dGgvZHVtYi90ZXN0X3JlcG8uZ2l0IiBIRUFEICYmCisJZXhwZWN0X2Fza3Bhc3MgYm90aCB1c2VyQGhvc3QKIAlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQgPmV4cGVjdCAmJgogCWdpdCAtLWdpdC1kaXI9IiRIVFRQRF9ET0NVTUVOVF9ST09UX1BBVEgvYXV0aC9kdW1iL3Rlc3RfcmVwby5naXQiIFwKIAkJcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQgPmFjdHVhbCAmJgpkaWZmIC0tZ2l0IGEvdC90NTU0MS1odHRwLXB1c2guc2ggYi90L3Q1NTQxLWh0dHAtcHVzaC5zaAppbmRleCAzMTJlNDg0Li5iZWIwMGJlIDEwMDc1NQotLS0gYS90L3Q1NTQxLWh0dHAtcHVzaC5zaAorKysgYi90L3Q1NTQxLWh0dHAtcHVzaC5zaApAQCAtMzYsNiArMzYsOCBAQAogCW12IHRlc3RfcmVwby5naXQgIiRIVFRQRF9ET0NVTUVOVF9ST09UX1BBVEgiCiAnCiAKK3NldHVwX2Fza3Bhc3NfaGVscGVyCisKIGNhdCA+ZXhwIDw8RU9GCiBHRVQgIC9zbWFydC90ZXN0X3JlcG8uZ2l0L2luZm8vcmVmcz9zZXJ2aWNlPWdpdC11cGxvYWQtcGFjayBIVFRQLzEuMSAyMDAKIFBPU1QgL3NtYXJ0L3Rlc3RfcmVwby5naXQvZ2l0LXVwbG9hZC1wYWNrIEhUVFAvMS4xIDIwMApAQCAtNjQsNyArNjYsMTAgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgcmVtb3RlIHJlcG9zaXRvcnknICcKIAlybSAtcmYgdGVzdF9yZXBvX2Nsb25lICYmCi0JZ2l0IGNsb25lICRIVFRQRF9VUkwvc21hcnQvdGVzdF9yZXBvLmdpdCB0ZXN0X3JlcG9fY2xvbmUKKwlnaXQgY2xvbmUgJEhUVFBEX1VSTC9zbWFydC90ZXN0X3JlcG8uZ2l0IHRlc3RfcmVwb19jbG9uZSAmJgorCSgKKwkJY2QgdGVzdF9yZXBvX2Nsb25lICYmIGdpdCBjb25maWcgcHVzaC5kZWZhdWx0IG1hdGNoaW5nCisJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHRvIHJlbW90ZSByZXBvc2l0b3J5IChzdGFuZGFyZCknICcKQEAgLTE3Niw4ICsxODEsNyBAQAogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAl0ZXN0X2NvbW1pdCBjb21taXQgcGF0aDMgJiYKIAlIRUFEPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKSAmJgotCWdpdCBjb25maWcgaHR0cC5wb3N0YnVmZmVyIDQgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjb25maWcgLS11bnNldCBodHRwLnBvc3RidWZmZXIiICYmCisJdGVzdF9jb25maWcgaHR0cC5wb3N0YnVmZmVyIDQgJiYKIAlnaXQgcHVzaCAtdiAtdiBvcmlnaW4gJEJSQU5DSCAyPmVyciAmJgogCWdyZXAgIlBPU1QgZ2l0LXJlY2VpdmUtcGFjayAoY2h1bmtlZCkiIGVyciAmJgogCShjZCAiJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSCIvdGVzdF9yZXBvLmdpdCAmJgpAQCAtMjY2LDUgKzI3MCw1OSBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCBvdmVyIHNtYXJ0IGh0dHAgd2l0aCBhdXRoJyAnCisJY2QgIiRST09UX1BBVEgvdGVzdF9yZXBvX2Nsb25lIiAmJgorCWVjaG8gcHVzaC1hdXRoLXRlc3QgPmV4cGVjdCAmJgorCXRlc3RfY29tbWl0IHB1c2gtYXV0aC10ZXN0ICYmCisJc2V0X2Fza3Bhc3MgdXNlckBob3N0ICYmCisJZ2l0IHB1c2ggIiRIVFRQRF9VUkwiL2F1dGgvc21hcnQvdGVzdF9yZXBvLmdpdCAmJgorCWdpdCAtLWdpdC1kaXI9IiRIVFRQRF9ET0NVTUVOVF9ST09UX1BBVEgvdGVzdF9yZXBvLmdpdCIgXAorCQlsb2cgLTEgLS1mb3JtYXQ9JXMgPmFjdHVhbCAmJgorCWV4cGVjdF9hc2twYXNzIGJvdGggdXNlckBob3N0ICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHRvIGF1dGgtb25seS1mb3ItcHVzaCByZXBvJyAnCisJY2QgIiRST09UX1BBVEgvdGVzdF9yZXBvX2Nsb25lIiAmJgorCWVjaG8gcHVzaC1oYWxmLWF1dGggPmV4cGVjdCAmJgorCXRlc3RfY29tbWl0IHB1c2gtaGFsZi1hdXRoICYmCisJc2V0X2Fza3Bhc3MgdXNlckBob3N0ICYmCisJZ2l0IHB1c2ggIiRIVFRQRF9VUkwiL2F1dGgtcHVzaC9zbWFydC90ZXN0X3JlcG8uZ2l0ICYmCisJZ2l0IC0tZ2l0LWRpcj0iJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSC90ZXN0X3JlcG8uZ2l0IiBcCisJCWxvZyAtMSAtLWZvcm1hdD0lcyA+YWN0dWFsICYmCisJZXhwZWN0X2Fza3Bhc3MgYm90aCB1c2VyQGhvc3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0ZSByZXBvIHdpdGhvdXQgaHR0cC5yZWNlaXZlcGFjayBzZXQnICcKKwljZCAiJFJPT1RfUEFUSCIgJiYKKwlnaXQgaW5pdCBoYWxmLWF1dGggJiYKKwkoCisJCWNkIGhhbGYtYXV0aCAmJgorCQl0ZXN0X2NvbW1pdCBvbmUKKwkpICYmCisJZ2l0IGNsb25lIC0tYmFyZSBoYWxmLWF1dGggIiRIVFRQRF9ET0NVTUVOVF9ST09UX1BBVEgvaGFsZi1hdXRoLmdpdCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgdmlhIGhhbGYtYXV0aC1jb21wbGV0ZSBkb2VzIG5vdCBuZWVkIHBhc3N3b3JkJyAnCisJY2QgIiRST09UX1BBVEgiICYmCisJc2V0X2Fza3Bhc3Mgd3JvbmcgJiYKKwlnaXQgY2xvbmUgIiRIVFRQRF9VUkwiL2hhbGYtYXV0aC1jb21wbGV0ZS9zbWFydC9oYWxmLWF1dGguZ2l0IFwKKwkJaGFsZi1hdXRoLWNsb25lICYmCisJZXhwZWN0X2Fza3Bhc3Mgbm9uZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIGludG8gaGFsZi1hdXRoLWNvbXBsZXRlIHJlcXVpcmVzIHBhc3N3b3JkJyAnCisJY2QgIiRST09UX1BBVEgvaGFsZi1hdXRoLWNsb25lIiAmJgorCWVjaG8gdHdvID5leHBlY3QgJiYKKwl0ZXN0X2NvbW1pdCB0d28gJiYKKwlzZXRfYXNrcGFzcyB1c2VyQGhvc3QgJiYKKwlnaXQgcHVzaCAiJEhUVFBEX1VSTC9oYWxmLWF1dGgtY29tcGxldGUvc21hcnQvaGFsZi1hdXRoLmdpdCIgJiYKKwlnaXQgLS1naXQtZGlyPSIkSFRUUERfRE9DVU1FTlRfUk9PVF9QQVRIL2hhbGYtYXV0aC5naXQiIFwKKwkJbG9nIC0xIC0tZm9ybWF0PSVzID5hY3R1YWwgJiYKKwlleHBlY3RfYXNrcGFzcyBib3RoIHVzZXJAaG9zdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwogc3RvcF9odHRwZAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q1NTUwLWh0dHAtZmV0Y2guc2ggYi90L3Q1NTUwLWh0dHAtZmV0Y2guc2gKaW5kZXggYjA2ZjgxNy4uZjdkMGYxNCAxMDA3NTUKLS0tIGEvdC90NTU1MC1odHRwLWZldGNoLnNoCisrKyBiL3QvdDU1NTAtaHR0cC1mZXRjaC5zaApAQCAtMTMsNiArMTMsNyBAQAogc3RhcnRfaHR0cGQKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgcmVwb3NpdG9yeScgJworCWdpdCBjb25maWcgcHVzaC5kZWZhdWx0IG1hdGNoaW5nICYmCiAJZWNobyBjb250ZW50MSA+ZmlsZSAmJgogCWdpdCBhZGQgZmlsZSAmJgogCWdpdCBjb21taXQgLW0gb25lCkBAIC0yMiw3ICsyMyw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0ZSBodHRwLWFjY2Vzc2libGUgYmFyZSByZXBvc2l0b3J5IHdpdGggbG9vc2Ugb2JqZWN0cycgJwotCWNwIC1hIC5naXQgIiRIVFRQRF9ET0NVTUVOVF9ST09UX1BBVEgvcmVwby5naXQiICYmCisJY3AgLVIgLmdpdCAiJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSC9yZXBvLmdpdCIgJiYKIAkoY2QgIiRIVFRQRF9ET0NVTUVOVF9ST09UX1BBVEgvcmVwby5naXQiICYmCiAJIGdpdCBjb25maWcgY29yZS5iYXJlIHRydWUgJiYKIAkgbWtkaXIgLXAgaG9va3MgJiYKQEAgLTQxLDY4ICs0MiwzNCBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjcmVhdGUgcGFzc3dvcmQtcHJvdGVjdGVkIHJlcG9zaXRvcnknICcKLQlta2RpciAiJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSC9hdXRoLyIgJiYKKwlta2RpciAtcCAiJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSC9hdXRoL2R1bWIvIiAmJgogCWNwIC1SZiAiJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSC9yZXBvLmdpdCIgXAotCSAgICAgICAiJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSC9hdXRoL3JlcG8uZ2l0IgorCSAgICAgICAiJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSC9hdXRoL2R1bWIvcmVwby5naXQiCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGFza3Bhc3MgaGVscGVycycgJwotCWNhdCA+YXNrcGFzcyA8PC1FT0YgJiYKLQkjIS9iaW4vc2gKLQllY2hvID4+IiRQV0QvYXNrcGFzcy1xdWVyeSIgImFza3Bhc3M6IFwkKiIgJiYKLQljYXQgIiRQV0QvYXNrcGFzcy1yZXNwb25zZSIKLQlFT0YKLQljaG1vZCAreCBhc2twYXNzICYmCi0JR0lUX0FTS1BBU1M9IiRQV0QvYXNrcGFzcyIgJiYKLQlleHBvcnQgR0lUX0FTS1BBU1MKLScKLQotZXhwZWN0X2Fza3Bhc3MoKSB7Ci0JZGVzdD0kSFRUUERfREVTVAotCXsKLQkJY2FzZSAiJDEiIGluCi0JCW5vbmUpCi0JCQk7OwotCQlwYXNzKQotCQkJZWNobyAiYXNrcGFzczogUGFzc3dvcmQgZm9yICdodHRwOi8vJDJAJGRlc3QnOiAiCi0JCQk7OwotCQlib3RoKQotCQkJZWNobyAiYXNrcGFzczogVXNlcm5hbWUgZm9yICdodHRwOi8vJGRlc3QnOiAiCi0JCQllY2hvICJhc2twYXNzOiBQYXNzd29yZCBmb3IgJ2h0dHA6Ly8kMkAkZGVzdCc6ICIKLQkJCTs7Ci0JCSopCi0JCQlmYWxzZQotCQkJOzsKLQkJZXNhYwotCX0gPmFza3Bhc3MtZXhwZWN0ICYmCi0JdGVzdF9jbXAgYXNrcGFzcy1leHBlY3QgYXNrcGFzcy1xdWVyeQotfQorc2V0dXBfYXNrcGFzc19oZWxwZXIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZyBwYXNzd29yZC1wcm90ZWN0ZWQgcmVwb3NpdG9yeSBjYW4gZmFpbCcgJwotCT5hc2twYXNzLXF1ZXJ5ICYmCi0JZWNobyB3cm9uZyA+YXNrcGFzcy1yZXNwb25zZSAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCBjbG9uZSAiJEhUVFBEX1VSTC9hdXRoL3JlcG8uZ2l0IiBjbG9uZS1hdXRoLWZhaWwgJiYKKwlzZXRfYXNrcGFzcyB3cm9uZyAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBjbG9uZSAiJEhUVFBEX1VSTC9hdXRoL2R1bWIvcmVwby5naXQiIGNsb25lLWF1dGgtZmFpbCAmJgogCWV4cGVjdF9hc2twYXNzIGJvdGggd3JvbmcKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaHR0cCBhdXRoIGNhbiB1c2UgdXNlci9wYXNzIGluIFVSTCcgJwotCT5hc2twYXNzLXF1ZXJ5ICYmCi0JZWNobyB3cm9uZyA+YXNrcGFzcy1yZXNwb25zZSAmJgotCWdpdCBjbG9uZSAiJEhUVFBEX1VSTF9VU0VSX1BBU1MvYXV0aC9yZXBvLmdpdCIgY2xvbmUtYXV0aC1ub25lICYmCisJc2V0X2Fza3Bhc3Mgd3JvbmcgJiYKKwlnaXQgY2xvbmUgIiRIVFRQRF9VUkxfVVNFUl9QQVNTL2F1dGgvZHVtYi9yZXBvLmdpdCIgY2xvbmUtYXV0aC1ub25lICYmCiAJZXhwZWN0X2Fza3Bhc3Mgbm9uZQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdodHRwIGF1dGggY2FuIHVzZSBqdXN0IHVzZXIgaW4gVVJMJyAnCi0JPmFza3Bhc3MtcXVlcnkgJiYKLQllY2hvIHVzZXJAaG9zdCA+YXNrcGFzcy1yZXNwb25zZSAmJgotCWdpdCBjbG9uZSAiJEhUVFBEX1VSTF9VU0VSL2F1dGgvcmVwby5naXQiIGNsb25lLWF1dGgtcGFzcyAmJgorCXNldF9hc2twYXNzIHVzZXJAaG9zdCAmJgorCWdpdCBjbG9uZSAiJEhUVFBEX1VSTF9VU0VSL2F1dGgvZHVtYi9yZXBvLmdpdCIgY2xvbmUtYXV0aC1wYXNzICYmCiAJZXhwZWN0X2Fza3Bhc3MgcGFzcyB1c2VyQGhvc3QKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaHR0cCBhdXRoIGNhbiByZXF1ZXN0IGJvdGggdXNlciBhbmQgcGFzcycgJwotCT5hc2twYXNzLXF1ZXJ5ICYmCi0JZWNobyB1c2VyQGhvc3QgPmFza3Bhc3MtcmVzcG9uc2UgJiYKLQlnaXQgY2xvbmUgIiRIVFRQRF9VUkwvYXV0aC9yZXBvLmdpdCIgY2xvbmUtYXV0aC1ib3RoICYmCisJc2V0X2Fza3Bhc3MgdXNlckBob3N0ICYmCisJZ2l0IGNsb25lICIkSFRUUERfVVJML2F1dGgvZHVtYi9yZXBvLmdpdCIgY2xvbmUtYXV0aC1ib3RoICYmCiAJZXhwZWN0X2Fza3Bhc3MgYm90aCB1c2VyQGhvc3QKICcKIApAQCAtMTEyLDI1ICs3OSwyMiBAQAogCQllY2hvIHVzZXJuYW1lPXVzZXJAaG9zdAogCQllY2hvIHBhc3N3b3JkPXVzZXJAaG9zdAogCX07IGYiICYmCi0JPmFza3Bhc3MtcXVlcnkgJiYKLQllY2hvIHdyb25nID5hc2twYXNzLXJlc3BvbnNlICYmCi0JZ2l0IGNsb25lICIkSFRUUERfVVJML2F1dGgvcmVwby5naXQiIGNsb25lLWF1dGgtaGVscGVyICYmCisJc2V0X2Fza3Bhc3Mgd3JvbmcgJiYKKwlnaXQgY2xvbmUgIiRIVFRQRF9VUkwvYXV0aC9kdW1iL3JlcG8uZ2l0IiBjbG9uZS1hdXRoLWhlbHBlciAmJgogCWV4cGVjdF9hc2twYXNzIG5vbmUKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaHR0cCBhdXRoIGNhbiBnZXQgdXNlcm5hbWUgZnJvbSBjb25maWcnICcKIAl0ZXN0X2NvbmZpZ19nbG9iYWwgImNyZWRlbnRpYWwuJEhUVFBEX1VSTC51c2VybmFtZSIgdXNlckBob3N0ICYmCi0JPmFza3Bhc3MtcXVlcnkgJiYKLQllY2hvIHVzZXJAaG9zdCA+YXNrcGFzcy1yZXNwb25zZSAmJgotCWdpdCBjbG9uZSAiJEhUVFBEX1VSTC9hdXRoL3JlcG8uZ2l0IiBjbG9uZS1hdXRoLXVzZXIgJiYKKwlzZXRfYXNrcGFzcyB1c2VyQGhvc3QgJiYKKwlnaXQgY2xvbmUgIiRIVFRQRF9VUkwvYXV0aC9kdW1iL3JlcG8uZ2l0IiBjbG9uZS1hdXRoLXVzZXIgJiYKIAlleHBlY3RfYXNrcGFzcyBwYXNzIHVzZXJAaG9zdAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb25maWd1cmVkIHVzZXJuYW1lIGRvZXMgbm90IG92ZXJyaWRlIFVSTCcgJwogCXRlc3RfY29uZmlnX2dsb2JhbCAiY3JlZGVudGlhbC4kSFRUUERfVVJMLnVzZXJuYW1lIiB3cm9uZyAmJgotCT5hc2twYXNzLXF1ZXJ5ICYmCi0JZWNobyB1c2VyQGhvc3QgPmFza3Bhc3MtcmVzcG9uc2UgJiYKLQlnaXQgY2xvbmUgIiRIVFRQRF9VUkxfVVNFUi9hdXRoL3JlcG8uZ2l0IiBjbG9uZS1hdXRoLXVzZXIyICYmCisJc2V0X2Fza3Bhc3MgdXNlckBob3N0ICYmCisJZ2l0IGNsb25lICIkSFRUUERfVVJMX1VTRVIvYXV0aC9kdW1iL3JlcG8uZ2l0IiBjbG9uZS1hdXRoLXVzZXIyICYmCiAJZXhwZWN0X2Fza3Bhc3MgcGFzcyB1c2VyQGhvc3QKICcKIApkaWZmIC0tZ2l0IGEvdC90NTU1MS1odHRwLWZldGNoLnNoIGIvdC90NTU1MS1odHRwLWZldGNoLnNoCmluZGV4IGJlNjA5NGIuLjU1YTg2NmEgMTAwNzU1Ci0tLSBhL3QvdDU1NTEtaHR0cC1mZXRjaC5zaAorKysgYi90L3Q1NTUxLWh0dHAtZmV0Y2guc2gKQEAgLTEzLDYgKzEzLDcgQEAKIHN0YXJ0X2h0dHBkCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHJlcG9zaXRvcnknICcKKwlnaXQgY29uZmlnIHB1c2guZGVmYXVsdCBtYXRjaGluZyAmJgogCWVjaG8gY29udGVudCA+ZmlsZSAmJgogCWdpdCBhZGQgZmlsZSAmJgogCWdpdCBjb21taXQgLW0gb25lCkBAIC0yNywxNiArMjgsMTkgQEAKIAlnaXQgcHVzaCBwdWJsaWMgbWFzdGVyOm1hc3RlcgogJwogCitzZXR1cF9hc2twYXNzX2hlbHBlcgorCiBjYXQgPmV4cCA8PEVPRgogPiBHRVQgL3NtYXJ0L3JlcG8uZ2l0L2luZm8vcmVmcz9zZXJ2aWNlPWdpdC11cGxvYWQtcGFjayBIVFRQLzEuMQogPiBBY2NlcHQ6ICovKgorPiBBY2NlcHQtRW5jb2Rpbmc6IGd6aXAKID4gUHJhZ21hOiBuby1jYWNoZQogPCBIVFRQLzEuMSAyMDAgT0sKIDwgUHJhZ21hOiBuby1jYWNoZQogPCBDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbWF4LWFnZT0wLCBtdXN0LXJldmFsaWRhdGUKIDwgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWdpdC11cGxvYWQtcGFjay1hZHZlcnRpc2VtZW50CiA+IFBPU1QgL3NtYXJ0L3JlcG8uZ2l0L2dpdC11cGxvYWQtcGFjayBIVFRQLzEuMQotPiBBY2NlcHQtRW5jb2Rpbmc6IGRlZmxhdGUsIGd6aXAKKz4gQWNjZXB0LUVuY29kaW5nOiBnemlwCiA+IENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1naXQtdXBsb2FkLXBhY2stcmVxdWVzdAogPiBBY2NlcHQ6IGFwcGxpY2F0aW9uL3gtZ2l0LXVwbG9hZC1wYWNrLXJlc3VsdAogPiBDb250ZW50LUxlbmd0aDogeHh4CkBAIC0xMDksMTIgKzExMyw4NiBAQAogCWdpdCBjbG9uZSAkSFRUUERfVVJML3NtYXJ0LXJlZGlyLXRlbXAvcmVwby5naXQgLS1xdWlldCByZXBvLXQKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgZnJvbSBwYXNzd29yZC1wcm90ZWN0ZWQgcmVwb3NpdG9yeScgJworCWVjaG8gdHdvID5leHBlY3QgJiYKKwlzZXRfYXNrcGFzcyB1c2VyQGhvc3QgJiYKKwlnaXQgY2xvbmUgLS1iYXJlICIkSFRUUERfVVJML2F1dGgvc21hcnQvcmVwby5naXQiIHNtYXJ0LWF1dGggJiYKKwlleHBlY3RfYXNrcGFzcyBib3RoIHVzZXJAaG9zdCAmJgorCWdpdCAtLWdpdC1kaXI9c21hcnQtYXV0aCBsb2cgLTEgLS1mb3JtYXQ9JXMgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgZnJvbSBhdXRoLW9ubHktZm9yLXB1c2ggcmVwb3NpdG9yeScgJworCWVjaG8gdHdvID5leHBlY3QgJiYKKwlzZXRfYXNrcGFzcyB3cm9uZyAmJgorCWdpdCBjbG9uZSAtLWJhcmUgIiRIVFRQRF9VUkwvYXV0aC1wdXNoL3NtYXJ0L3JlcG8uZ2l0IiBzbWFydC1ub2F1dGggJiYKKwlleHBlY3RfYXNrcGFzcyBub25lICYmCisJZ2l0IC0tZ2l0LWRpcj1zbWFydC1ub2F1dGggbG9nIC0xIC0tZm9ybWF0PSVzID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIGZyb20gYXV0aC1vbmx5LWZvci1vYmplY3RzIHJlcG9zaXRvcnknICcKKwllY2hvIHR3byA+ZXhwZWN0ICYmCisJc2V0X2Fza3Bhc3MgdXNlckBob3N0ICYmCisJZ2l0IGNsb25lIC0tYmFyZSAiJEhUVFBEX1VSTC9hdXRoLWZldGNoL3NtYXJ0L3JlcG8uZ2l0IiBoYWxmLWF1dGggJiYKKwlleHBlY3RfYXNrcGFzcyBib3RoIHVzZXJAaG9zdCAmJgorCWdpdCAtLWdpdC1kaXI9aGFsZi1hdXRoIGxvZyAtMSAtLWZvcm1hdD0lcyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICduby1vcCBoYWxmLWF1dGggZmV0Y2ggZG9lcyBub3QgcmVxdWlyZSBhIHBhc3N3b3JkJyAnCisJc2V0X2Fza3Bhc3Mgd3JvbmcgJiYKKwlnaXQgLS1naXQtZGlyPWhhbGYtYXV0aCBmZXRjaCAmJgorCWV4cGVjdF9hc2twYXNzIG5vbmUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlzYWJsZSBkdW1iIGh0dHAgb24gc2VydmVyJyAnCisJZ2l0IC0tZ2l0LWRpcj0iJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSC9yZXBvLmdpdCIgXAorCQljb25maWcgaHR0cC5nZXRhbnlmaWxlIGZhbHNlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0dJVF9TTUFSVF9IVFRQIGNhbiBkaXNhYmxlIHNtYXJ0IGh0dHAnICcKKwkoR0lUX1NNQVJUX0hUVFA9MCAmJgorCSBleHBvcnQgR0lUX1NNQVJUX0hUVFAgJiYKKwkgY2QgY2xvbmUgJiYKKwkgdGVzdF9tdXN0X2ZhaWwgZ2l0IGZldGNoKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbnZhbGlkIENvbnRlbnQtVHlwZSByZWplY3RlZCcgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBjbG9uZSAkSFRUUERfVVJML2Jyb2tlbl9zbWFydC9yZXBvLmdpdCAyPmFjdHVhbAorCWdyZXAgIm5vdCB2YWxpZDoiIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjcmVhdGUgbmFtZXNwYWNlZCByZWZzJyAnCisJdGVzdF9jb21taXQgbmFtZXNwYWNlZCAmJgorCWdpdCBwdXNoIHB1YmxpYyBIRUFEOnJlZnMvbmFtZXNwYWNlcy9ucy9yZWZzL2hlYWRzL21hc3RlciAmJgorCWdpdCAtLWdpdC1kaXI9IiRIVFRQRF9ET0NVTUVOVF9ST09UX1BBVEgvcmVwby5naXQiIFwKKwkJc3ltYm9saWMtcmVmIHJlZnMvbmFtZXNwYWNlcy9ucy9IRUFEIHJlZnMvbmFtZXNwYWNlcy9ucy9yZWZzL2hlYWRzL21hc3RlcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzbWFydCBjbG9uZSByZXNwZWN0cyBuYW1lc3BhY2UnICcKKwlnaXQgY2xvbmUgIiRIVFRQRF9VUkwvc21hcnRfbmFtZXNwYWNlL3JlcG8uZ2l0IiBucy1zbWFydCAmJgorCWVjaG8gbmFtZXNwYWNlZCA+ZXhwZWN0ICYmCisJZ2l0IC0tZ2l0LWRpcj1ucy1zbWFydC8uZ2l0IGxvZyAtMSAtLWZvcm1hdD0lcyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkdW1iIGNsb25lIHZpYSBodHRwLWJhY2tlbmQgcmVzcGVjdHMgbmFtZXNwYWNlJyAnCisJZ2l0IC0tZ2l0LWRpcj0iJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSC9yZXBvLmdpdCIgXAorCQljb25maWcgaHR0cC5nZXRhbnlmaWxlIHRydWUgJiYKKwlHSVRfU01BUlRfSFRUUD0wIGdpdCBjbG9uZSBcCisJCSIkSFRUUERfVVJML3NtYXJ0X25hbWVzcGFjZS9yZXBvLmdpdCIgbnMtZHVtYiAmJgorCWVjaG8gbmFtZXNwYWNlZCA+ZXhwZWN0ICYmCisJZ2l0IC0tZ2l0LWRpcj1ucy1kdW1iLy5naXQgbG9nIC0xIC0tZm9ybWF0PSVzID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKIHRlc3QgLW4gIiRHSVRfVEVTVF9MT05HIiAmJiB0ZXN0X3NldF9wcmVyZXEgRVhQRU5TSVZFCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgRVhQRU5TSVZFICdjcmVhdGUgNTAsMDAwIHRhZ3MgaW4gdGhlIHJlcG8nICcKIAkoCiAJY2QgIiRIVFRQRF9ET0NVTUVOVF9ST09UX1BBVEgvcmVwby5naXQiICYmCi0JZm9yIGkgaW4gYHNlcSA1MDAwMGAKKwlmb3IgaSBpbiBgdGVzdF9zZXEgNTAwMDBgCiAJZG8KIAkJZWNobyAiY29tbWl0IHJlZnMvaGVhZHMvdG9vLW1hbnktcmVmcyIKIAkJZWNobyAibWFyayA6JGkiCkBAIC0xMzAsMTQgKzIwOCwxOCBAQAogCWRvbmUgfCBnaXQgZmFzdC1pbXBvcnQgLS1leHBvcnQtbWFya3M9bWFya3MgJiYKIAogCSMgbm93IGFzc2lnbiB0YWdzIHRvIGFsbCB0aGUgZGFuZ2xpbmcgY29tbWl0cyB3ZSBjcmVhdGVkIGFib3ZlCi0JdGFnPSQocGVybCAtZSAicHJpbnQgXCJibGFcIiB4IDMwIikgJiYKLQlzZWQgLWUgInMvXjpcKC5cK1wpIFwoLlwrXCkkL1wyIHJlZnNcL3RhZ3NcLyR0YWctXDEvIiA8bWFya3MgPj5wYWNrZWQtcmVmcworCXRhZz0kKCIkUEVSTF9QQVRIIiAtZSAicHJpbnQgXCJibGFcIiB4IDMwIikgJiYKKwlzZWQgLWUgInN8XjpcKFteIF0qXCkgXCguKlwpJHxcMiByZWZzL3RhZ3MvJHRhZy1cMXwiIDxtYXJrcyA+PnBhY2tlZC1yZWZzCiAJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIEVYUEVOU0lWRSAnY2xvbmUgdGhlIDUwLDAwMCB0YWcgcmVwbyB0byBjaGVjayBPUyBjb21tYW5kIGxpbmUgb3ZlcmZsb3cnICcKIAlnaXQgY2xvbmUgJEhUVFBEX1VSTC9zbWFydC9yZXBvLmdpdCB0b28tbWFueS1yZWZzIDI+ZXJyICYmCi0JdGVzdF9saW5lX2NvdW50ID0gMCBlcnIKKwl0ZXN0X2xpbmVfY291bnQgPSAwIGVyciAmJgorCSgKKwkJY2QgdG9vLW1hbnktcmVmcyAmJgorCQl0ZXN0ICQoZ2l0IGZvci1lYWNoLXJlZiByZWZzL3RhZ3MgfCB3YyAtbCkgPSA1MDAwMAorCSkKICcKIAogc3RvcF9odHRwZApkaWZmIC0tZ2l0IGEvdC90NTU3MC1naXQtZGFlbW9uLnNoIGIvdC90NTU3MC1naXQtZGFlbW9uLnNoCmluZGV4IGEzYTRlNDcuLmYwMWVkZmYgMTAwNzU1Ci0tLSBhL3QvdDU1NzAtZ2l0LWRhZW1vbi5zaAorKysgYi90L3Q1NTcwLWdpdC1kYWVtb24uc2gKQEAgLTgsNiArOCw3IEBACiBzdGFydF9naXRfZGFlbW9uCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHJlcG9zaXRvcnknICcKKwlnaXQgY29uZmlnIHB1c2guZGVmYXVsdCBtYXRjaGluZyAmJgogCWVjaG8gY29udGVudCA+ZmlsZSAmJgogCWdpdCBhZGQgZmlsZSAmJgogCWdpdCBjb21taXQgLW0gb25lCmRpZmYgLS1naXQgYS90L3Q1NTcxLXByZS1wdXNoLWhvb2suc2ggYi90L3Q1NTcxLXByZS1wdXNoLWhvb2suc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmY5OTE2YQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDU1NzEtcHJlLXB1c2gtaG9vay5zaApAQCAtMCwwICsxLDEzMSBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J2NoZWNrIHByZS1wdXNoIGhvb2tzJworLiAuL3Rlc3QtbGliLnNoCisKKyMgU2V0dXAgaG9vayB0aGF0IGFsd2F5cyBzdWNjZWVkcworSE9PS0RJUj0iJChnaXQgcmV2LXBhcnNlIC0tZ2l0LWRpcikvaG9va3MiCitIT09LPSIkSE9PS0RJUi9wcmUtcHVzaCIKK21rZGlyIC1wICIkSE9PS0RJUiIKK3dyaXRlX3NjcmlwdCAiJEhPT0siIDw8RU9GCitjYXQgPi9kZXYvbnVsbAorZXhpdCAwCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKwlnaXQgY29uZmlnIHB1c2guZGVmYXVsdCB1cHN0cmVhbSAmJgorCWdpdCBpbml0IC0tYmFyZSByZXBvMSAmJgorCWdpdCByZW1vdGUgYWRkIHBhcmVudDEgcmVwbzEgJiYKKwl0ZXN0X2NvbW1pdCBvbmUgJiYKKwlnaXQgcHVzaCBwYXJlbnQxIEhFQUQ6Zm9yZWlnbgorJword3JpdGVfc2NyaXB0ICIkSE9PSyIgPDxFT0YKK2NhdCA+L2Rldi9udWxsCitleGl0IDEKK0VPRgorCitDT01NSVQxPSIkKGdpdCByZXYtcGFyc2UgSEVBRCkiCitleHBvcnQgQ09NTUlUMQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggZmFpbGluZyBob29rJyAnCisJdGVzdF9jb21taXQgdHdvICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggcGFyZW50MSBIRUFECisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tbm8tdmVyaWZ5IGJ5cGFzc2VzIGhvb2snICcKKwlnaXQgcHVzaCAtLW5vLXZlcmlmeSBwYXJlbnQxIEhFQUQKKycKKworQ09NTUlUMj0iJChnaXQgcmV2LXBhcnNlIEhFQUQpIgorZXhwb3J0IENPTU1JVDIKKword3JpdGVfc2NyaXB0ICIkSE9PSyIgPDwnRU9GJworZWNobyAiJDEiID5hY3R1YWwKK2VjaG8gIiQyIiA+PmFjdHVhbAorY2F0ID4+YWN0dWFsCitFT0YKKworY2F0ID5leHBlY3RlZCA8PEVPRgorcGFyZW50MQorcmVwbzEKK3JlZnMvaGVhZHMvbWFzdGVyICRDT01NSVQyIHJlZnMvaGVhZHMvZm9yZWlnbiAkQ09NTUlUMQorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCBob29rJyAnCisJZ2l0IHB1c2ggcGFyZW50MSBtYXN0ZXI6Zm9yZWlnbiAmJgorCWRpZmYgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBhIGJyYW5jaCcgJworCWdpdCBjaGVja291dCAtYiBvdGhlciBwYXJlbnQxL2ZvcmVpZ24gJiYKKwl0ZXN0X2NvbW1pdCB0aHJlZQorJworCitDT01NSVQzPSIkKGdpdCByZXYtcGFyc2UgSEVBRCkiCitleHBvcnQgQ09NTUlUMworCitjYXQgPmV4cGVjdGVkIDw8RU9GCitwYXJlbnQxCityZXBvMQorcmVmcy9oZWFkcy9vdGhlciAkQ09NTUlUMyByZWZzL2hlYWRzL2ZvcmVpZ24gJENPTU1JVDIKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHRvIGRlZmF1bHQnICcKKwlnaXQgcHVzaCAmJgorCWRpZmYgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxFT0YKK3BhcmVudDEKK3JlcG8xCityZWZzL3RhZ3Mvb25lICRDT01NSVQxIHJlZnMvdGFncy90YWcxICRfejQwCitIRUFEfiAkQ09NTUlUMiByZWZzL2hlYWRzL3ByZXYgJF96NDAKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIG5vbi1icmFuY2hlcycgJworCWdpdCBwdXNoIHBhcmVudDEgb25lOnRhZzEgSEVBRH46cmVmcy9oZWFkcy9wcmV2ICYmCisJZGlmZiBleHBlY3RlZCBhY3R1YWwKKycKKworY2F0ID5leHBlY3RlZCA8PEVPRgorcGFyZW50MQorcmVwbzEKKyhkZWxldGUpICRfejQwIHJlZnMvaGVhZHMvcHJldiAkQ09NTUlUMgorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggZGVsZXRlJyAnCisJZ2l0IHB1c2ggcGFyZW50MSA6cHJldiAmJgorCWRpZmYgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxFT0YKK3JlcG8xCityZXBvMQorSEVBRCAkQ09NTUlUMyByZWZzL2hlYWRzL290aGVyICRfejQwCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB0byBVUkwnICcKKwlnaXQgcHVzaCByZXBvMSBIRUFEICYmCisJZGlmZiBleHBlY3RlZCBhY3R1YWwKKycKKworIyBUZXN0IHRoYXQgZmlsbGluZyBwaXBlIGJ1ZmZlcnMgZG9lc24ndCBjYXVzZSBmYWlsdXJlCisjIFRvbyBzbG93IHRvIGxlYXZlIGVuYWJsZWQgZm9yIGdlbmVyYWwgdXNlCitpZiBmYWxzZQordGhlbgorCXByaW50ZiAncGFyZW50MVxucmVwbzFcbicgPmV4cGVjdGVkCisJbnI9MTAwMAorCXdoaWxlIHRlc3QgJG5yIC1sdCAyMDAwCisJZG8KKwkJbnI9JCgoICRuciArIDEgKSkKKwkJZ2l0IGJyYW5jaCBiLyRuciAkQ09NTUlUMworCQllY2hvICJyZWZzL2hlYWRzL2IvJG5yICRDT01NSVQzIHJlZnMvaGVhZHMvYi8kbnIgJF96NDAiID4+ZXhwZWN0ZWQKKwlkb25lCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIG1hbnkgcmVmcycgJworCQlnaXQgcHVzaCBwYXJlbnQxICJyZWZzL2hlYWRzL2IvKjpyZWZzL2hlYWRzL2IvKiIgJiYKKwkJZGlmZiBleHBlY3RlZCBhY3R1YWwKKwknCitmaQorCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDU2MDAtY2xvbmUtZmFpbC1jbGVhbnVwLnNoIGIvdC90NTYwMC1jbG9uZS1mYWlsLWNsZWFudXAuc2gKaW5kZXggZWUwNmQyOC4uNDQzNTY5MyAxMDA3NTUKLS0tIGEvdC90NTYwMC1jbG9uZS1mYWlsLWNsZWFudXAuc2gKKysrIGIvdC90NTYwMC1jbG9uZS1mYWlsLWNsZWFudXAuc2gKQEAgLTM3LDYgKzM3LDE2IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdzdWNjZXNzZnVsIGNsb25lIG11c3QgbGVhdmUgdGhlIGRpcmVjdG9yeScgXAotICAgICdjZCBiYXInCisgICAgJ3Rlc3QgLWQgYmFyJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmYWlsZWQgY2xvbmUgLS1zZXBhcmF0ZS1naXQtZGlyIHNob3VsZCBub3QgbGVhdmUgYW55IGRpcmVjdG9yaWVzJyAnCisJbWtkaXIgZm9vLy5naXQvb2JqZWN0cy5iYWsvICYmCisJbXYgZm9vLy5naXQvb2JqZWN0cy8qIGZvby8uZ2l0L29iamVjdHMuYmFrLyAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBjbG9uZSAtLXNlcGFyYXRlLWdpdC1kaXIgZ2l0ZGlyIGZvbyB3b3JrdHJlZSAmJgorCXRlc3RfbXVzdF9mYWlsIHRlc3QgLWUgZ2l0ZGlyICYmCisJdGVzdF9tdXN0X2ZhaWwgdGVzdCAtZSB3b3JrdHJlZSAmJgorCW12IGZvby8uZ2l0L29iamVjdHMuYmFrLyogZm9vLy5naXQvb2JqZWN0cy8gJiYKKwlybWRpciBmb28vLmdpdC9vYmplY3RzLmJhaworJwogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDU3MDAtY2xvbmUtcmVmZXJlbmNlLnNoIGIvdC90NTcwMC1jbG9uZS1yZWZlcmVuY2Uuc2gKaW5kZXggYzQ3ZDQ1MC4uNjUzNzkxMSAxMDA3NTUKLS0tIGEvdC90NTcwMC1jbG9uZS1yZWZlcmVuY2Uuc2gKKysrIGIvdC90NTcwMC1jbG9uZS1yZWZlcmVuY2Uuc2gKQEAgLTU0LDExICs1NCwxNCBAQAogCiBybSAtZiAiJFUuRCIKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZyB3aXRoIHJlZmVyZW5jZSAobm8gLWwgLXMpJyBcCi0nR0lUX0RFQlVHX1NFTkRfUEFDSz0zIGdpdCBjbG9uZSAtLXJlZmVyZW5jZSBCICJmaWxlOi8vJChwd2QpL0EiIEQgMz4iJFUuRCInCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uaW5nIHdpdGggcmVmZXJlbmNlIChubyAtbCAtcyknICcKKwlHSVRfVFJBQ0VfUEFDS0VUPSRVLkQgZ2l0IGNsb25lIC0tcmVmZXJlbmNlIEIgImZpbGU6Ly8kKHB3ZCkvQSIgRAorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaGVkIG5vIG9iamVjdHMnIFwKLSchIGdyZXAgIl53YW50IiAiJFUuRCInCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaGVkIG5vIG9iamVjdHMnICcKKwl0ZXN0IC1zICIkVS5EIiAmJgorCSEgZ3JlcCAiIHdhbnQiICIkVS5EIgorJwogCiBjZCAiJGJhc2VfZGlyIgogCkBAIC0xNzMsMTIgKzE3NiwyNiBAQAogCSgKIAkJY2QgSyAmJgogCQlnaXQgcmVtb3RlIGFkZCBKICJmaWxlOi8vJGJhc2VfZGlyL0oiICYmCi0JCUdJVF9ERUJVR19TRU5EX1BBQ0s9MyBnaXQgZmV0Y2ggSiAzPiIkVS5LIgorCQlHSVRfVFJBQ0VfUEFDS0VUPSRVLksgZ2l0IGZldGNoIEoKIAkpICYmCiAJbWFzdGVyX29iamVjdD0kKGNkIEEgJiYgZ2l0IGZvci1lYWNoLXJlZiAtLWZvcm1hdD0iJShvYmplY3RuYW1lKSIgcmVmcy9oZWFkcy9tYXN0ZXIpICYmCi0JISBncmVwICJed2FudCAkbWFzdGVyX29iamVjdCIgIiRVLksiICYmCisJdGVzdCAtcyAiJFUuSyIgJiYKKwkhIGdyZXAgIiB3YW50ICRtYXN0ZXJfb2JqZWN0IiAiJFUuSyIgJiYKIAl0YWdfb2JqZWN0PSQoY2QgQSAmJiBnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSIlKG9iamVjdG5hbWUpIiByZWZzL3RhZ3MvSEVBRCkgJiYKLQkhIGdyZXAgIl53YW50ICR0YWdfb2JqZWN0IiAiJFUuSyIKKwkhIGdyZXAgIiB3YW50ICR0YWdfb2JqZWN0IiAiJFUuSyIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgdXNpbmcgcmVwbyB3aXRoIGdpdGZpbGUgYXMgYSByZWZlcmVuY2UnICcKKwlnaXQgY2xvbmUgLS1zZXBhcmF0ZS1naXQtZGlyPUwgQSBNICYmCisJZ2l0IGNsb25lIC0tcmVmZXJlbmNlPU0gQSBOICYmCisJZWNobyAiJGJhc2VfZGlyL0wvb2JqZWN0cyIgPmV4cGVjdGVkICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRiYXNlX2Rpci9OLy5naXQvb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIHVzaW5nIHJlcG8gcG9pbnRlZCBhdCBieSBnaXRmaWxlIGFzIHJlZmVyZW5jZScgJworCWdpdCBjbG9uZSAtLXJlZmVyZW5jZT1NLy5naXQgQSBPICYmCisJZWNobyAiJGJhc2VfZGlyL0wvb2JqZWN0cyIgPmV4cGVjdGVkICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRiYXNlX2Rpci9PLy5naXQvb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMiCiAnCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NTcwMS1jbG9uZS1sb2NhbC5zaCBiL3QvdDU3MDEtY2xvbmUtbG9jYWwuc2gKaW5kZXggYzZmZWNhNC4uN2ZmNmUwZSAxMDA3NTUKLS0tIGEvdC90NTcwMS1jbG9uZS1sb2NhbC5zaAorKysgYi90L3Q1NzAxLWNsb25lLWxvY2FsLnNoCkBAIC0xMjQsNCArMTI0LDE0IEBACiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNsb25lIG5vdC1hLWdpdC1yZXBvIG5vdC1hLWdpdC1yZXBvLWNsb25lCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25pbmcgZmlsZTovLyBkb2VzIG5vdCBoYXJkbGluaycgJworCWdpdCBjbG9uZSAtLWJhcmUgZmlsZTovLyIkKHB3ZCkiL2Egbm9uLWxvY2FsICYmCisJISByZXBvX2lzX2hhcmRsaW5rZWQgbm9uLWxvY2FsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25pbmcgYSBsb2NhbCBwYXRoIHdpdGggLS1uby1sb2NhbCBkb2VzIG5vdCBoYXJkbGluaycgJworCWdpdCBjbG9uZSAtLWJhcmUgLS1uby1sb2NhbCBhIGZvcmNlLW5vbmxvY2FsICYmCisJISByZXBvX2lzX2hhcmRsaW5rZWQgZm9yY2Utbm9ubG9jYWwKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q1NzA0LWJ1bmRsZS5zaCBiL3QvdDU3MDQtYnVuZGxlLnNoCmluZGV4IDllNDM3MzEuLmE0NWMzMTYgMTAwNzU1Ci0tLSBhL3QvdDU3MDQtYnVuZGxlLnNoCisrKyBiL3QvdDU3MDQtYnVuZGxlLnNoCkBAIC01OCw0ICs1OCwxNCBAQAogCWdyZXAgIl4tWzAtOWEtZl1cXHs0MFxcfSAiIGJvdW5kYXJ5CiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ByZXJlcXVpc2l0ZXMgd2l0aCBhbiBlbXB0eSBjb21taXQgbWVzc2FnZScgJworCTogPmZpbGUxICYmCisJZ2l0IGFkZCBmaWxlMSAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eS1tZXNzYWdlIC1tICIiICYmCisJdGVzdF9jb21taXQgZmlsZTIgJiYKKwlnaXQgYnVuZGxlIGNyZWF0ZSBidW5kbGUgSEVBRF4uLiAmJgorCWdpdCBidW5kbGUgdmVyaWZ5IGJ1bmRsZQorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDU3MDktY2xvbmUtcmVmc3BlYy5zaCBiL3QvdDU3MDktY2xvbmUtcmVmc3BlYy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42ZjFlYTk4Ci0tLSAvZGV2L251bGwKKysrIGIvdC90NTcwOS1jbG9uZS1yZWZzcGVjLnNoCkBAIC0wLDAgKzEsMTU2IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0ndGVzdCByZWZzcGVjIHdyaXR0ZW4gYnkgY2xvbmUtY29tbWFuZCcKKy4gLi90ZXN0LWxpYi5zaAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJworCSMgTWFrZSB0d28gYnJhbmNoZXMsICJtYXN0ZXIiIGFuZCAic2lkZSIKKwllY2hvIG9uZSA+ZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCWdpdCBjb21taXQgLW0gb25lICYmCisJZWNobyB0d28gPmZpbGUgJiYKKwlnaXQgY29tbWl0IC1hIC1tIHR3byAmJgorCWdpdCB0YWcgdHdvICYmCisJZWNobyB0aHJlZSA+ZmlsZSAmJgorCWdpdCBjb21taXQgLWEgLW0gdGhyZWUgJiYKKwlnaXQgY2hlY2tvdXQgLWIgc2lkZSAmJgorCWVjaG8gZm91ciA+ZmlsZSAmJgorCWdpdCBjb21taXQgLWEgLW0gZm91ciAmJgorCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKworCSMgZGVmYXVsdCBjbG9uZQorCWdpdCBjbG9uZSAuIGRpcl9hbGwgJiYKKworCSMgZGVmYXVsdCAtLXNpbmdsZSB0aGF0IGZvbGxvd3MgSEVBRD1tYXN0ZXIKKwlnaXQgY2xvbmUgLS1zaW5nbGUtYnJhbmNoIC4gZGlyX21hc3RlciAmJgorCisJIyBkZWZhdWx0IC0tc2luZ2xlIHRoYXQgZm9sbG93cyBIRUFEPXNpZGUKKwlnaXQgY2hlY2tvdXQgc2lkZSAmJgorCWdpdCBjbG9uZSAtLXNpbmdsZS1icmFuY2ggLiBkaXJfc2lkZSAmJgorCisJIyBleHBsaWNpdCAtLXNpbmdsZSB0aGF0IGZvbGxvd3Mgc2lkZQorCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwlnaXQgY2xvbmUgLS1zaW5nbGUtYnJhbmNoIC0tYnJhbmNoIHNpZGUgLiBkaXJfc2lkZTIgJiYKKworCSMgZGVmYXVsdCAtLXNpbmdsZSB3aXRoIC0tbWlycm9yCisJZ2l0IGNsb25lIC0tc2luZ2xlLWJyYW5jaCAtLW1pcnJvciAuIGRpcl9taXJyb3IgJiYKKworCSMgZGVmYXVsdCAtLXNpbmdsZSB3aXRoIC0tYnJhbmNoIGFuZCAtLW1pcnJvcgorCWdpdCBjbG9uZSAtLXNpbmdsZS1icmFuY2ggLS1taXJyb3IgLS1icmFuY2ggc2lkZSAuIGRpcl9taXJyb3Jfc2lkZSAmJgorCisJIyAtLXNpbmdsZSB0aGF0IGRvZXMgbm90IGtub3cgd2hhdCBicmFuY2ggdG8gZm9sbG93CisJZ2l0IGNoZWNrb3V0IHR3b14gJiYKKwlnaXQgY2xvbmUgLS1zaW5nbGUtYnJhbmNoIC4gZGlyX2RldGFjaGVkICYmCisKKwkjIGV4cGxpY2l0IC0tc2luZ2xlIHdpdGggdGFnCisJZ2l0IGNsb25lIC0tc2luZ2xlLWJyYW5jaCAtLWJyYW5jaCB0d28gLiBkaXJfdGFnICYmCisKKwkjIGFkdmFuY2UgYm90aCAibWFzdGVyIiBhbmQgInNpZGUiIGJyYW5jaGVzCisJZ2l0IGNoZWNrb3V0IHNpZGUgJiYKKwllY2hvIGZpdmUgPmZpbGUgJiYKKwlnaXQgY29tbWl0IC1hIC1tIGZpdmUgJiYKKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJZWNobyBzaXggPmZpbGUgJiYKKwlnaXQgY29tbWl0IC1hIC1tIHNpeCAmJgorCisJIyB1cGRhdGUgdGFnCisJZ2l0IHRhZyAtZCB0d28gJiYgZ2l0IHRhZyB0d28KKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYnkgZGVmYXVsdCBhbGwgYnJhbmNoZXMgd2lsbCBiZSBrZXB0IHVwZGF0ZWQnICcKKwkoCisJCWNkIGRpcl9hbGwgJiYgZ2l0IGZldGNoICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiB8CisJCXNlZCAtZSAiL0hFQUQkL2QiIFwKKwkJICAgIC1lICJzfC9yZW1vdGVzL29yaWdpbi98L2hlYWRzL3wiID4uLi9hY3R1YWwKKwkpICYmCisJIyBmb2xsb3cgYm90aCBtYXN0ZXIgYW5kIHNpZGUKKwlnaXQgZm9yLWVhY2gtcmVmIHJlZnMvaGVhZHMgPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYnkgZGVmYXVsdCBubyB0YWdzIHdpbGwgYmUga2VwdCB1cGRhdGVkJyAnCisJKAorCQljZCBkaXJfYWxsICYmIGdpdCBmZXRjaCAmJgorCQlnaXQgZm9yLWVhY2gtcmVmIHJlZnMvdGFncyA+Li4vYWN0dWFsCisJKSAmJgorCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy90YWdzID5leHBlY3QgJiYKKwl0ZXN0X211c3RfZmFpbCB0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc2luZ2xlLWJyYW5jaCB3aGlsZSBIRUFEIHBvaW50aW5nIGF0IG1hc3RlcicgJworCSgKKwkJY2QgZGlyX21hc3RlciAmJiBnaXQgZmV0Y2ggJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luIHwKKwkJc2VkIC1lICIvSEVBRCQvZCIgXAorCQkgICAgLWUgInN8L3JlbW90ZXMvb3JpZ2luL3wvaGVhZHMvfCIgPi4uL2FjdHVhbAorCSkgJiYKKwkjIG9ubHkgZm9sbG93IG1hc3RlcgorCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy9oZWFkcy9tYXN0ZXIgPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zaW5nbGUtYnJhbmNoIHdoaWxlIEhFQUQgcG9pbnRpbmcgYXQgc2lkZScgJworCSgKKwkJY2QgZGlyX3NpZGUgJiYgZ2l0IGZldGNoICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiB8CisJCXNlZCAtZSAiL0hFQUQkL2QiIFwKKwkJICAgIC1lICJzfC9yZW1vdGVzL29yaWdpbi98L2hlYWRzL3wiID4uLi9hY3R1YWwKKwkpICYmCisJIyBvbmx5IGZvbGxvdyBzaWRlCisJZ2l0IGZvci1lYWNoLXJlZiByZWZzL2hlYWRzL3NpZGUgPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zaW5nbGUtYnJhbmNoIHdpdGggZXhwbGljaXQgLS1icmFuY2ggc2lkZScgJworCSgKKwkJY2QgZGlyX3NpZGUyICYmIGdpdCBmZXRjaCAmJgorCQlnaXQgZm9yLWVhY2gtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4gfAorCQlzZWQgLWUgIi9IRUFEJC9kIiBcCisJCSAgICAtZSAic3wvcmVtb3Rlcy9vcmlnaW4vfC9oZWFkcy98IiA+Li4vYWN0dWFsCisJKSAmJgorCSMgb25seSBmb2xsb3cgc2lkZQorCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy9oZWFkcy9zaWRlID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc2luZ2xlLWJyYW5jaCB3aXRoIGV4cGxpY2l0IC0tYnJhbmNoIHdpdGggdGFnIGZldGNoZXMgdXBkYXRlZCB0YWcnICcKKwkoCisJCWNkIGRpcl90YWcgJiYgZ2l0IGZldGNoICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy90YWdzID4uLi9hY3R1YWwKKwkpICYmCisJZ2l0IGZvci1lYWNoLXJlZiByZWZzL3RhZ3MgPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zaW5nbGUtYnJhbmNoIHdpdGggLS1taXJyb3InICcKKwkoCisJCWNkIGRpcl9taXJyb3IgJiYgZ2l0IGZldGNoICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgcmVmcyA+IC4uL2FjdHVhbAorCSkgJiYKKwlnaXQgZm9yLWVhY2gtcmVmIHJlZnMgPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zaW5nbGUtYnJhbmNoIHdpdGggZXhwbGljaXQgLS1icmFuY2ggYW5kIC0tbWlycm9yJyAnCisJKAorCQljZCBkaXJfbWlycm9yX3NpZGUgJiYgZ2l0IGZldGNoICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgcmVmcyA+IC4uL2FjdHVhbAorCSkgJiYKKwlnaXQgZm9yLWVhY2gtcmVmIHJlZnMgPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zaW5nbGUtYnJhbmNoIHdpdGggZGV0YWNoZWQnICcKKwkoCisJCWNkIGRpcl9kZXRhY2hlZCAmJiBnaXQgZmV0Y2ggJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luIHwKKwkJc2VkIC1lICIvSEVBRCQvZCIgXAorCQkgICAgLWUgInN8L3JlbW90ZXMvb3JpZ2luL3wvaGVhZHMvfCIgPi4uL2FjdHVhbAorCSkKKwkjIG5vdGhpbmcKKwk+ZXhwZWN0ICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDU3MTAtaW5mby1hbHRlcm5hdGUuc2ggYi90L3Q1NzEwLWluZm8tYWx0ZXJuYXRlLnNoCmluZGV4IGFhMDQ1MjkuLjg5NTZjMjEgMTAwNzU1Ci0tLSBhL3QvdDU3MTAtaW5mby1hbHRlcm5hdGUuc2gKKysrIGIvdC90NTcxMC1pbmZvLWFsdGVybmF0ZS5zaApAQCAtNTgsMTMgKzU4LDcgQEAKIGdpdCBjbG9uZSAtbCAtcyBEIEUgJiYKIGdpdCBjbG9uZSAtbCAtcyBFIEYgJiYKIGdpdCBjbG9uZSAtbCAtcyBGIEcgJiYKLWdpdCBjbG9uZSAtbCAtcyBHIEgnCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ludmFsaWRpdHkgb2YgZGVlcGVzdCByZXBvc2l0b3J5JyBcCi0nY2QgSCAmJiB7Ci0JdGVzdF92YWxpZF9yZXBvCi0JdGVzdCAkPyAtbmUgMAotfScKK3Rlc3RfbXVzdF9mYWlsIGdpdCBjbG9uZSAtLWJhcmUgLWwgLXMgRyBIJwogCiBjZCAiJGJhc2VfZGlyIgogCmRpZmYgLS1naXQgYS90L3Q1ODAwLXJlbW90ZS1oZWxwZXJzLnNoIGIvdC90NTgwMC1yZW1vdGUtdGVzdHB5LnNoCnNpbWlsYXJpdHkgaW5kZXggNzQlCnJlbmFtZSBmcm9tIHQvdDU4MDAtcmVtb3RlLWhlbHBlcnMuc2gKcmVuYW1lIHRvIHQvdDU4MDAtcmVtb3RlLXRlc3RweS5zaAppbmRleCA1NzAyMzM0Li4xZTY4M2Q0IDEwMDc1NQotLS0gYS90L3Q1ODAwLXJlbW90ZS1oZWxwZXJzLnNoCisrKyBiL3QvdDU4MDAtcmVtb3RlLXRlc3RweS5zaApAQCAtMywxMiArMywxMiBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMTAgU3ZlcnJlIFJhYmJlbGllcgogIwogCi10ZXN0X2Rlc2NyaXB0aW9uPSdUZXN0IHJlbW90ZS1oZWxwZXIgaW1wb3J0IGFuZCBleHBvcnQgY29tbWFuZHMnCit0ZXN0X2Rlc2NyaXB0aW9uPSdUZXN0IHB5dGhvbiByZW1vdGUtaGVscGVyIGZyYW1ld29yaycKIAogLiAuL3Rlc3QtbGliLnNoCiAKIGlmICEgdGVzdF9oYXZlX3ByZXJlcSBQWVRIT04gOyB0aGVuCi0Jc2tpcF9hbGw9J3NraXBwaW5nIGdpdC1yZW1vdGUtaGcgdGVzdHMsIHB5dGhvbiBub3QgYXZhaWxhYmxlJworCXNraXBfYWxsPSdza2lwcGluZyBweXRob24gcmVtb3RlLWhlbHBlciB0ZXN0cywgcHl0aG9uIG5vdCBhdmFpbGFibGUnCiAJdGVzdF9kb25lCiBmaQogCkBAIC0xNyw3ICsxNyw3IEBACiBpZiBzeXMuaGV4dmVyc2lvbiA8IDB4MDIwNDAwMDA6CiAgICAgc3lzLmV4aXQoMSkKICcgfHwgewotCXNraXBfYWxsPSdza2lwcGluZyBnaXQtcmVtb3RlLWhnIHRlc3RzLCBweXRob24gdmVyc2lvbiA8IDIuNCcKKwlza2lwX2FsbD0nc2tpcHBpbmcgcHl0aG9uIHJlbW90ZS1oZWxwZXIgdGVzdHMsIHB5dGhvbiB2ZXJzaW9uIDwgMi40JwogCXRlc3RfZG9uZQogfQogCkBAIC0zOCwxMiArMzgsMTIgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZyBmcm9tIGxvY2FsIHJlcG8nICcKLQlnaXQgY2xvbmUgInRlc3RnaXQ6OiR7UFdEfS9zZXJ2ZXIiIGxvY2FsY2xvbmUgJiYKKwlnaXQgY2xvbmUgInRlc3RweTo6JHtQV0R9L3NlcnZlciIgbG9jYWxjbG9uZSAmJgogCXRlc3RfY21wIHB1YmxpYy9maWxlIGxvY2FsY2xvbmUvZmlsZQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uaW5nIGZyb20gcmVtb3RlIHJlcG8nICcKLQlnaXQgY2xvbmUgInRlc3RnaXQ6OmZpbGU6Ly8ke1BXRH0vc2VydmVyIiBjbG9uZSAmJgorCWdpdCBjbG9uZSAidGVzdHB5OjpmaWxlOi8vJHtQV0R9L3NlcnZlciIgY2xvbmUgJiYKIAl0ZXN0X2NtcCBwdWJsaWMvZmlsZSBjbG9uZS9maWxlCiAnCiAKQEAgLTczLDExICs3MywxMSBAQAogJwogCiAjIEdlbmVyYWxseSwgc2tpcCB0aGlzIHRlc3QuICBJdCBkZW1vbnN0cmF0ZXMgYSBub3ctZml4ZWQgcmFjZSBpbgotIyBnaXQtcmVtb3RlLXRlc3RnaXQsIGJ1dCBpcyB0b28gc2xvdyB0byBsZWF2ZSBpbiBmb3IgZ2VuZXJhbCB1c2UuCisjIGdpdC1yZW1vdGUtdGVzdHB5LCBidXQgaXMgdG9vIHNsb3cgdG8gbGVhdmUgaW4gZm9yIGdlbmVyYWwgdXNlLgogOiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyYWNpbHkgcHVzaGluZyB0byBsb2NhbCByZXBvJyAnCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgc2VydmVyMiBsb2NhbGNsb25lMiIgJiYKLQljcCAtYSBzZXJ2ZXIgc2VydmVyMiAmJgotCWdpdCBjbG9uZSAidGVzdGdpdDo6JHtQV0R9L3NlcnZlcjIiIGxvY2FsY2xvbmUyICYmCisJY3AgLVIgc2VydmVyIHNlcnZlcjIgJiYKKwlnaXQgY2xvbmUgInRlc3RweTo6JHtQV0R9L3NlcnZlcjIiIGxvY2FsY2xvbmUyICYmCiAJKGNkIGxvY2FsY2xvbmUyICYmCiAJZWNobyBjb250ZW50ID4+ZmlsZSAmJgogCWdpdCBjb21taXQgLWEgLW0gdGhyZWUgJiYKQEAgLTE0NSw0ICsxNDUsMjUgQEAKIAljb21wYXJlX3JlZnMgY2xvbmUgSEVBRCBzZXJ2ZXIgcmVmcy9oZWFkcy9uZXctcmVmc3BlYwogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9wZXIgZmFpbHVyZSBjaGVja3MgZm9yIGZldGNoaW5nJyAnCisJKEdJVF9SRU1PVEVfVEVTVEdJVF9GQUlMVVJFPTEgJiYKKwlleHBvcnQgR0lUX1JFTU9URV9URVNUR0lUX0ZBSUxVUkUgJiYKKwljZCBsb2NhbGNsb25lICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGZldGNoIDI+JjEgfCBcCisJCWdyZXAgIkVycm9yIHdoaWxlIHJ1bm5pbmcgZmFzdC1pbXBvcnQiCisJKQorJworCisjIFdlIHNsZWVwIHRvIGdpdmUgZmFzdC1leHBvcnQgYSBjaGFuY2UgdG8gY2F0Y2ggdGhlIFNJR1BJUEUKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ3Byb3BlciBmYWlsdXJlIGNoZWNrcyBmb3IgcHVzaGluZycgJworCShHSVRfUkVNT1RFX1RFU1RHSVRfRkFJTFVSRT0xICYmCisJZXhwb3J0IEdJVF9SRU1PVEVfVEVTVEdJVF9GQUlMVVJFICYmCisJR0lUX1JFTU9URV9URVNUR0lUX1NMRUVQWT0xICYmCisJZXhwb3J0IEdJVF9SRU1PVEVfVEVTVEdJVF9TTEVFUFkgJiYKKwljZCBsb2NhbGNsb25lICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggLS1hbGwgMj4mMSB8IFwKKwkJZ3JlcCAiRXJyb3Igd2hpbGUgcnVubmluZyBmYXN0LWV4cG9ydCIKKwkpCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NTgwMS1yZW1vdGUtaGVscGVycy5zaCBiL3QvdDU4MDEtcmVtb3RlLWhlbHBlcnMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGJiMDJlMgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDU4MDEtcmVtb3RlLWhlbHBlcnMuc2gKQEAgLTAsMCArMSwyMDMgQEAKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKGMpIDIwMTAgU3ZlcnJlIFJhYmJlbGllcgorIworCit0ZXN0X2Rlc2NyaXB0aW9uPSdUZXN0IHJlbW90ZS1oZWxwZXIgaW1wb3J0IGFuZCBleHBvcnQgY29tbWFuZHMnCisKKy4gLi90ZXN0LWxpYi5zaAorLiAiJFRFU1RfRElSRUNUT1JZIi9saWItZ3BnLnNoCisKK2lmICEgdHlwZSAiJHtCQVNILWJhc2h9IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwlza2lwX2FsbD0nc2tpcHBpbmcgcmVtb3RlLXRlc3RnaXQgdGVzdHMsIGJhc2ggbm90IGF2YWlsYWJsZScKKwl0ZXN0X2RvbmUKK2ZpCisKK2NvbXBhcmVfcmVmcygpIHsKKwlnaXQgLS1naXQtZGlyPSIkMS8uZ2l0IiByZXYtcGFyc2UgLS12ZXJpZnkgJDIgPmV4cGVjdCAmJgorCWdpdCAtLWdpdC1kaXI9IiQzLy5naXQiIHJldi1wYXJzZSAtLXZlcmlmeSAkNCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorfQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCByZXBvc2l0b3J5JyAnCisJZ2l0IGluaXQgc2VydmVyICYmCisJKGNkIHNlcnZlciAmJgorCSBlY2hvIGNvbnRlbnQgPmZpbGUgJiYKKwkgZ2l0IGFkZCBmaWxlICYmCisJIGdpdCBjb21taXQgLW0gb25lKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uaW5nIGZyb20gbG9jYWwgcmVwbycgJworCWdpdCBjbG9uZSAidGVzdGdpdDo6JHtQV0R9L3NlcnZlciIgbG9jYWwgJiYKKwl0ZXN0X2NtcCBzZXJ2ZXIvZmlsZSBsb2NhbC9maWxlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0ZSBuZXcgY29tbWl0IG9uIHJlbW90ZScgJworCShjZCBzZXJ2ZXIgJiYKKwkgZWNobyBjb250ZW50ID4+ZmlsZSAmJgorCSBnaXQgY29tbWl0IC1hIC1tIHR3bykKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVsbGluZyBmcm9tIGxvY2FsIHJlcG8nICcKKwkoY2QgbG9jYWwgJiYgZ2l0IHB1bGwpICYmCisJdGVzdF9jbXAgc2VydmVyL2ZpbGUgbG9jYWwvZmlsZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoaW5nIHRvIGxvY2FsIHJlcG8nICcKKwkoY2QgbG9jYWwgJiYKKwllY2hvIGNvbnRlbnQgPj5maWxlICYmCisJZ2l0IGNvbW1pdCAtYSAtbSB0aHJlZSAmJgorCWdpdCBwdXNoKSAmJgorCWNvbXBhcmVfcmVmcyBsb2NhbCBIRUFEIHNlcnZlciBIRUFECisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZldGNoIG5ldyBicmFuY2gnICcKKwkoY2Qgc2VydmVyICYmCisJIGdpdCByZXNldCAtLWhhcmQgJiYKKwkgZ2l0IGNoZWNrb3V0IC1iIG5ldyAmJgorCSBlY2hvIGNvbnRlbnQgPj5maWxlICYmCisJIGdpdCBjb21taXQgLWEgLW0gZml2ZQorCSkgJiYKKwkoY2QgbG9jYWwgJiYKKwkgZ2l0IGZldGNoIG9yaWdpbiBuZXcKKwkpICYmCisJY29tcGFyZV9yZWZzIHNlcnZlciBIRUFEIGxvY2FsIEZFVENIX0hFQUQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggbXVsdGlwbGUgYnJhbmNoZXMnICcKKwkoY2QgbG9jYWwgJiYKKwkgZ2l0IGZldGNoCisJKSAmJgorCWNvbXBhcmVfcmVmcyBzZXJ2ZXIgbWFzdGVyIGxvY2FsIHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyICYmCisJY29tcGFyZV9yZWZzIHNlcnZlciBuZXcgbG9jYWwgcmVmcy9yZW1vdGVzL29yaWdpbi9uZXcKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aGVuIHJlbW90ZSBoYXMgZXh0cmEgcmVmcycgJworCShjZCBsb2NhbCAmJgorCSBnaXQgcmVzZXQgLS1oYXJkIG9yaWdpbi9tYXN0ZXIgJiYKKwkgZWNobyBjb250ZW50ID4+ZmlsZSAmJgorCSBnaXQgY29tbWl0IC1hIC1tIHNpeCAmJgorCSBnaXQgcHVzaAorCSkgJiYKKwljb21wYXJlX3JlZnMgbG9jYWwgbWFzdGVyIHNlcnZlciBtYXN0ZXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCBuZXcgYnJhbmNoIGJ5IG5hbWUnICcKKwkoY2QgbG9jYWwgJiYKKwkgZ2l0IGNoZWNrb3V0IC1iIG5ldy1uYW1lICAmJgorCSBlY2hvIGNvbnRlbnQgPj5maWxlICYmCisJIGdpdCBjb21taXQgLWEgLW0gc2V2ZW4gJiYKKwkgZ2l0IHB1c2ggb3JpZ2luIG5ldy1uYW1lCisJKSAmJgorCWNvbXBhcmVfcmVmcyBsb2NhbCBIRUFEIHNlcnZlciByZWZzL2hlYWRzL25ldy1uYW1lCisnCisKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ3B1c2ggbmV3IGJyYW5jaCB3aXRoIG9sZDpuZXcgcmVmc3BlYycgJworCShjZCBsb2NhbCAmJgorCSBnaXQgcHVzaCBvcmlnaW4gbmV3LW5hbWU6bmV3LXJlZnNwZWMKKwkpICYmCisJY29tcGFyZV9yZWZzIGxvY2FsIEhFQUQgc2VydmVyIHJlZnMvaGVhZHMvbmV3LXJlZnNwZWMKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZyB3aXRob3V0IHJlZnNwZWMnICcKKwlHSVRfUkVNT1RFX1RFU1RHSVRfUkVGU1BFQz0iIiBcCisJZ2l0IGNsb25lICJ0ZXN0Z2l0Ojoke1BXRH0vc2VydmVyIiBsb2NhbDIgJiYKKwljb21wYXJlX3JlZnMgbG9jYWwyIEhFQUQgc2VydmVyIEhFQUQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVsbGluZyB3aXRob3V0IHJlZnNwZWNzJyAnCisJKGNkIGxvY2FsMiAmJgorCWdpdCByZXNldCAtLWhhcmQgJiYKKwlHSVRfUkVNT1RFX1RFU1RHSVRfUkVGU1BFQz0iIiBnaXQgcHVsbCkgJiYKKwljb21wYXJlX3JlZnMgbG9jYWwyIEhFQUQgc2VydmVyIEhFQUQKKycKKwordGVzdF9leHBlY3RfZmFpbHVyZSAncHVzaGluZyB3aXRob3V0IHJlZnNwZWNzJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICIoY2QgbG9jYWwyICYmIGdpdCByZXNldCAtLWhhcmQgb3JpZ2luKSIgJiYKKwkoY2QgbG9jYWwyICYmCisJZWNobyBjb250ZW50ID4+ZmlsZSAmJgorCWdpdCBjb21taXQgLWEgLW0gdGVuICYmCisJR0lUX1JFTU9URV9URVNUR0lUX1JFRlNQRUM9IiIgZ2l0IHB1c2gpICYmCisJY29tcGFyZV9yZWZzIGxvY2FsMiBIRUFEIHNlcnZlciBIRUFECisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1bGxpbmcgd2l0aCBzdHJhaWdodCByZWZzcGVjJyAnCisJKGNkIGxvY2FsMiAmJgorCUdJVF9SRU1PVEVfVEVTVEdJVF9SRUZTUEVDPSIqOioiIGdpdCBwdWxsKSAmJgorCWNvbXBhcmVfcmVmcyBsb2NhbDIgSEVBRCBzZXJ2ZXIgSEVBRAorJworCit0ZXN0X2V4cGVjdF9mYWlsdXJlICdwdXNoaW5nIHdpdGggc3RyYWlnaHQgcmVmc3BlYycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAiKGNkIGxvY2FsMiAmJiBnaXQgcmVzZXQgLS1oYXJkIG9yaWdpbikiICYmCisJKGNkIGxvY2FsMiAmJgorCWVjaG8gY29udGVudCA+PmZpbGUgJiYKKwlnaXQgY29tbWl0IC1hIC1tIGVsZXZlbiAmJgorCUdJVF9SRU1PVEVfVEVTVEdJVF9SRUZTUEVDPSIqOioiIGdpdCBwdXNoKSAmJgorCWNvbXBhcmVfcmVmcyBsb2NhbDIgSEVBRCBzZXJ2ZXIgSEVBRAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdWxsaW5nIHdpdGhvdXQgbWFya3MnICcKKwkoY2QgbG9jYWwyICYmCisJR0lUX1JFTU9URV9URVNUR0lUX05PX01BUktTPTEgZ2l0IHB1bGwpICYmCisJY29tcGFyZV9yZWZzIGxvY2FsMiBIRUFEIHNlcnZlciBIRUFECisnCisKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ3B1c2hpbmcgd2l0aG91dCBtYXJrcycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAiKGNkIGxvY2FsMiAmJiBnaXQgcmVzZXQgLS1oYXJkIG9yaWdpbikiICYmCisJKGNkIGxvY2FsMiAmJgorCWVjaG8gY29udGVudCA+PmZpbGUgJiYKKwlnaXQgY29tbWl0IC1hIC1tIHR3ZWx2ZSAmJgorCUdJVF9SRU1PVEVfVEVTVEdJVF9OT19NQVJLUz0xIGdpdCBwdXNoKSAmJgorCWNvbXBhcmVfcmVmcyBsb2NhbDIgSEVBRCBzZXJ2ZXIgSEVBRAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIGFsbCB3aXRoIGV4aXN0aW5nIG9iamVjdCcgJworCShjZCBsb2NhbCAmJgorCWdpdCBicmFuY2ggZHVwMiBtYXN0ZXIgJiYKKwlnaXQgcHVzaCBvcmlnaW4gLS1hbGwKKwkpICYmCisJY29tcGFyZV9yZWZzIGxvY2FsIGR1cDIgc2VydmVyIGR1cDIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCByZWYgd2l0aCBleGlzdGluZyBvYmplY3QnICcKKwkoY2QgbG9jYWwgJiYKKwlnaXQgYnJhbmNoIGR1cCBtYXN0ZXIgJiYKKwlnaXQgcHVzaCBvcmlnaW4gZHVwCisJKSAmJgorCWNvbXBhcmVfcmVmcyBsb2NhbCBkdXAgc2VydmVyIGR1cAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIEdQRyAncHVzaCBzaWduZWQgdGFnJyAnCisJKGNkIGxvY2FsICYmCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCWdpdCB0YWcgLXMgLW0gc2lnbmVkLXRhZyBzaWduZWQtdGFnICYmCisJZ2l0IHB1c2ggb3JpZ2luIHNpZ25lZC10YWcKKwkpICYmCisJY29tcGFyZV9yZWZzIGxvY2FsIHNpZ25lZC10YWdee30gc2VydmVyIHNpZ25lZC10YWdee30gJiYKKwl0ZXN0X211c3RfZmFpbCBjb21wYXJlX3JlZnMgbG9jYWwgc2lnbmVkLXRhZyBzZXJ2ZXIgc2lnbmVkLXRhZworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIEdQRyAncHVzaCBzaWduZWQgdGFnIHdpdGggc2lnbmVkLXRhZ3MgY2FwYWJpbGl0eScgJworCShjZCBsb2NhbCAmJgorCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwlnaXQgdGFnIC1zIC1tIHNpZ25lZC10YWcgc2lnbmVkLXRhZy0yICYmCisJR0lUX1JFTU9URV9URVNUR0lUX1NJR05FRF9UQUdTPTEgZ2l0IHB1c2ggb3JpZ2luIHNpZ25lZC10YWctMgorCSkgJiYKKwljb21wYXJlX3JlZnMgbG9jYWwgc2lnbmVkLXRhZy0yIHNlcnZlciBzaWduZWQtdGFnLTIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCBtZXNzYWdlcycgJworCShjZCBsb2NhbCAmJgorCWdpdCBjaGVja291dCAtYiBuZXdfYnJhbmNoIG1hc3RlciAmJgorCWVjaG8gbmV3ID4+ZmlsZSAmJgorCWdpdCBjb21taXQgLWEgLW0gbmV3ICYmCisJZ2l0IHB1c2ggb3JpZ2luIG5ld19icmFuY2ggJiYKKwlnaXQgZmV0Y2ggb3JpZ2luICYmCisJZWNobyBuZXcgPj5maWxlICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBuZXcgJiYKKwlnaXQgcHVzaCBvcmlnaW4gbmV3X2JyYW5jaCAyPiBtc2cgJiYKKwkhIGdyZXAgIlxbbmV3IGJyYW5jaFxdIiBtc2cKKwkpCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjAwNi1yZXYtbGlzdC1mb3JtYXQuc2ggYi90L3Q2MDA2LXJldi1saXN0LWZvcm1hdC5zaAppbmRleCBmOTRmMGM0Li4wMzkzYzlmIDEwMDc1NQotLS0gYS90L3Q2MDA2LXJldi1saXN0LWZvcm1hdC5zaAorKysgYi90L3Q2MDA2LXJldi1saXN0LWZvcm1hdC5zaApAQCAtMyw2ICszLDcgQEAKIHRlc3RfZGVzY3JpcHRpb249J2dpdCByZXYtbGlzdCAtLXByZXR0eT1mb3JtYXQgdGVzdCcKIAogLiAuL3Rlc3QtbGliLnNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2xpYi10ZXJtaW5hbC5zaAogCiB0ZXN0X3RpY2sKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCkBAIC0xMSwxMiArMTIsMjQgQEAKICcKIAogIyB1c2FnZTogdGVzdF9mb3JtYXQgbmFtZSBmb3JtYXRfc3RyaW5nIDxleHBlY3RlZF9vdXRwdXQKLXRlc3RfZm9ybWF0KCkgewordGVzdF9mb3JtYXQgKCkgewogCWNhdCA+ZXhwZWN0LiQxCiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAiZm9ybWF0ICQxIiAiCi1naXQgcmV2LWxpc3QgLS1wcmV0dHk9Zm9ybWF0OickMicgbWFzdGVyID5vdXRwdXQuJDEgJiYKLXRlc3RfY21wIGV4cGVjdC4kMSBvdXRwdXQuJDEKLSIKKwkJZ2l0IHJldi1saXN0IC0tcHJldHR5PWZvcm1hdDonJDInIG1hc3RlciA+b3V0cHV0LiQxICYmCisJCXRlc3RfY21wIGV4cGVjdC4kMSBvdXRwdXQuJDEKKwkiCit9CisKKyMgRmVlZCB0byAtLWZvcm1hdCB0byBwcm92aWRlIHByZWRpY3RhYmxlIGNvbG9yZWQgc2VxdWVuY2VzLgorQVVUT19DT0xPUj0nJUMoYXV0byxyZWQpZm9vJUMoYXV0byxyZXNldCknCitoYXNfY29sb3IgKCkgeworCXByaW50ZiAnXDAzM1szMW1mb29cMDMzW21cbicgPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCAiJDEiCit9CisKK2hhc19ub19jb2xvciAoKSB7CisJZWNobyBmb28gPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCAiJDEiCiB9CiAKIHRlc3RfZm9ybWF0IHBlcmNlbnQgJSVoIDw8J0VPRicKQEAgLTEyNCwxMiArMTM3LDU0IEBACiAbWzE7MzE7NDNtZm9vG1ttCiBFT0YKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnJUMoYXV0bykgZG9lcyBub3QgZW5hYmxlIGNvbG9yIGJ5IGRlZmF1bHQnICcKKwlnaXQgbG9nIC0tZm9ybWF0PSRBVVRPX0NPTE9SIC0xID5hY3R1YWwgJiYKKwloYXNfbm9fY29sb3IgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyVDKGF1dG8pIGVuYWJsZXMgY29sb3JzIGZvciBjb2xvci5kaWZmJyAnCisJZ2l0IC1jIGNvbG9yLmRpZmY9YWx3YXlzIGxvZyAtLWZvcm1hdD0kQVVUT19DT0xPUiAtMSA+YWN0dWFsICYmCisJaGFzX2NvbG9yIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICclQyhhdXRvKSBlbmFibGVzIGNvbG9ycyBmb3IgY29sb3IudWknICcKKwlnaXQgLWMgY29sb3IudWk9YWx3YXlzIGxvZyAtLWZvcm1hdD0kQVVUT19DT0xPUiAtMSA+YWN0dWFsICYmCisJaGFzX2NvbG9yIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICclQyhhdXRvKSByZXNwZWN0cyAtLWNvbG9yJyAnCisJZ2l0IGxvZyAtLWZvcm1hdD0kQVVUT19DT0xPUiAtMSAtLWNvbG9yID5hY3R1YWwgJiYKKwloYXNfY29sb3IgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyVDKGF1dG8pIHJlc3BlY3RzIC0tbm8tY29sb3InICcKKwlnaXQgLWMgY29sb3IudWk9YWx3YXlzIGxvZyAtLWZvcm1hdD0kQVVUT19DT0xPUiAtMSAtLW5vLWNvbG9yID5hY3R1YWwgJiYKKwloYXNfbm9fY29sb3IgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgVFRZICclQyhhdXRvKSByZXNwZWN0cyAtLWNvbG9yPWF1dG8gKHN0ZG91dCBpcyB0dHkpJyAnCisJKAorCQlURVJNPXZ0MTAwICYmIGV4cG9ydCBURVJNICYmCisJCXRlc3RfdGVybWluYWwgXAorCQkJZ2l0IGxvZyAtLWZvcm1hdD0kQVVUT19DT0xPUiAtMSAtLWNvbG9yPWF1dG8gPmFjdHVhbCAmJgorCQloYXNfY29sb3IgYWN0dWFsCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICclQyhhdXRvKSByZXNwZWN0cyAtLWNvbG9yPWF1dG8gKHN0ZG91dCBub3QgdHR5KScgJworCSgKKwkJVEVSTT12dDEwMCAmJiBleHBvcnQgVEVSTSAmJgorCQlnaXQgbG9nIC0tZm9ybWF0PSRBVVRPX0NPTE9SIC0xIC0tY29sb3I9YXV0byA+YWN0dWFsICYmCisJCWhhc19ub19jb2xvciBhY3R1YWwKKwkpCisnCisKIGNhdCA+Y29tbWl0LW1zZyA8PCdFT0YnCiBUZXN0IHByaW50aW5nIG9mIGNvbXBsZXggYm9kaWVzCiAKIFRoaXMgY29tbWl0IG1lc3NhZ2UgaXMgbXVjaCBsb25nZXIgdGhhbiB0aGUgb3RoZXJzLAogYW5kIGl0IHdpbGwgYmUgZW5jb2RlZCBpbiBpc284ODU5LTEuIFdlIHNob3VsZCB0aGVyZWZvcmUKLWluY2x1ZGUgYW4gaXNvODg1OSBjaGFyYWN0ZXI6IMKhYnVlbm8hCitpbmNsdWRlIGFuIGlzbzg4NTkgY2hhcmFjdGVyOiChYnVlbm8hCiBFT0YKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGNvbXBsZXggYm9keScgJwogZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIGlzbzg4NTktMSAmJgpAQCAtMTM3LDE0ICsxOTIsMTQgQEAKICcKIAogdGVzdF9mb3JtYXQgY29tcGxleC1lbmNvZGluZyAlZSA8PCdFT0YnCi1jb21taXQgZjU4ZGI3MGIwNTVjNTcxODYzMWU1YzYxNTI4YjI4YjEyMDkwY2RlYQorY29tbWl0IDFlZDg4ZGE0YTViNWVkOGM0NDkxMTRhYzEzMWVmYzYyMTc4NzM0YzMKIGlzbzg4NTktMQogY29tbWl0IDEzMWEzMTBlYjkxM2QxMDdkZDNjMDlhNjVkMTY1MTE3NTg5ODczNWQKIGNvbW1pdCA4NmM3NWNmZDcwOGEwZTU4NjhkYzg3NmVkNWI4YmI2NmM4MGI0ODczCiBFT0YKIAogdGVzdF9mb3JtYXQgY29tcGxleC1zdWJqZWN0ICVzIDw8J0VPRicKLWNvbW1pdCBmNThkYjcwYjA1NWM1NzE4NjMxZTVjNjE1MjhiMjhiMTIwOTBjZGVhCitjb21taXQgMWVkODhkYTRhNWI1ZWQ4YzQ0OTExNGFjMTMxZWZjNjIxNzg3MzRjMwogVGVzdCBwcmludGluZyBvZiBjb21wbGV4IGJvZGllcwogY29tbWl0IDEzMWEzMTBlYjkxM2QxMDdkZDNjMDlhNjVkMTY1MTE3NTg5ODczNWQKIGNoYW5nZWQgZm9vCkBAIC0xNTMsMTcgKzIwOCwxNyBAQAogRU9GCiAKIHRlc3RfZm9ybWF0IGNvbXBsZXgtYm9keSAlYiA8PCdFT0YnCi1jb21taXQgZjU4ZGI3MGIwNTVjNTcxODYzMWU1YzYxNTI4YjI4YjEyMDkwY2RlYQorY29tbWl0IDFlZDg4ZGE0YTViNWVkOGM0NDkxMTRhYzEzMWVmYzYyMTc4NzM0YzMKIFRoaXMgY29tbWl0IG1lc3NhZ2UgaXMgbXVjaCBsb25nZXIgdGhhbiB0aGUgb3RoZXJzLAogYW5kIGl0IHdpbGwgYmUgZW5jb2RlZCBpbiBpc284ODU5LTEuIFdlIHNob3VsZCB0aGVyZWZvcmUKLWluY2x1ZGUgYW4gaXNvODg1OSBjaGFyYWN0ZXI6IMKhYnVlbm8hCitpbmNsdWRlIGFuIGlzbzg4NTkgY2hhcmFjdGVyOiChYnVlbm8hCiAKIGNvbW1pdCAxMzFhMzEwZWI5MTNkMTA3ZGQzYzA5YTY1ZDE2NTExNzU4OTg3MzVkCiBjb21taXQgODZjNzVjZmQ3MDhhMGU1ODY4ZGM4NzZlZDViOGJiNjZjODBiNDg3MwogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJyV4MDAgc2hvd3MgTlVMJyAnCi0JZWNobyAgPmV4cGVjdCBjb21taXQgZjU4ZGI3MGIwNTVjNTcxODYzMWU1YzYxNTI4YjI4YjEyMDkwY2RlYSAmJgorCWVjaG8gID5leHBlY3QgY29tbWl0IDFlZDg4ZGE0YTViNWVkOGM0NDkxMTRhYzEzMWVmYzYyMTc4NzM0YzMgJiYKIAllY2hvID4+ZXhwZWN0IGZvb1FiYXIgJiYKIAlnaXQgcmV2LWxpc3QgLTEgLS1mb3JtYXQ9Zm9vJXgwMGJhciBIRUFEID5hY3R1YWwubnVsICYmCiAJbnVsX3RvX3EgPGFjdHVhbC5udWwgPmFjdHVhbCAmJgpkaWZmIC0tZ2l0IGEvdC90NjAwOS1yZXYtbGlzdC1wYXJlbnQuc2ggYi90L3Q2MDA5LXJldi1saXN0LXBhcmVudC5zaAppbmRleCAzMDUwNzQwLi42NmNkYTE3IDEwMDc1NQotLS0gYS90L3Q2MDA5LXJldi1saXN0LXBhcmVudC5zaAorKysgYi90L3Q2MDA5LXJldi1saXN0LXBhcmVudC5zaApAQCAtMTMzLDQgKzEzMywxNyBAQAogCWNoZWNrX3Jldmxpc3QgIi0tbWluLXBhcmVudHM9MTMiICYmCiAJY2hlY2tfcmV2bGlzdCAiLS1taW4tcGFyZW50cz00IC0tbWF4LXBhcmVudHM9MTEiIHRldHJhcHVzCiAnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FuY2VzdG9ycyB3aXRoIHRoZSBzYW1lIGNvbW1pdCB0aW1lJyAnCisKKwl0ZXN0X3RpY2tfa2VlcD0kdGVzdF90aWNrICYmCisJZm9yIGkgaW4gMSAyIDMgNCA1IDYgNyA4OyBkbworCQl0ZXN0X3RpY2s9JHRlc3RfdGlja19rZWVwCisJCXRlc3RfY29tbWl0IHQkaQorCWRvbmUgJiYKKwlnaXQgcmV2LWxpc3QgdDFeISAtLW5vdCB0JGkgPnJlc3VsdCAmJgorCT5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgcmVzdWx0CisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjAxMS1yZXYtbGlzdC13aXRoLWJhZC1jb21taXQuc2ggYi90L3Q2MDExLXJldi1saXN0LXdpdGgtYmFkLWNvbW1pdC5zaAppbmRleCBlNTFlYjQxLi5iYmIwNTgxIDEwMDc1NQotLS0gYS90L3Q2MDExLXJldi1saXN0LXdpdGgtYmFkLWNvbW1pdC5zaAorKysgYi90L3Q2MDExLXJldi1saXN0LXdpdGgtYmFkLWNvbW1pdC5zaApAQCAtMzcsNyArMzcsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb3JydXB0IHNlY29uZCBjb21taXQgb2JqZWN0JyBcCiAgICAnCi0gICBwZXJsIC1pLmJhayAtcGUgInMvc2Vjb25kIGNvbW1pdC9zb2NvbmQgY29tbWl0LyIgLmdpdC9vYmplY3RzL3BhY2svKi5wYWNrICYmCisgICAiJFBFUkxfUEFUSCIgLWkuYmFrIC1wZSAicy9zZWNvbmQgY29tbWl0L3NvY29uZCBjb21taXQvIiAuZ2l0L29iamVjdHMvcGFjay8qLnBhY2sgJiYKICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBmc2NrIC0tZnVsbAogICAgJwogCmRpZmYgLS1naXQgYS90L3Q2MDEyLXJldi1saXN0LXNpbXBsaWZ5LnNoIGIvdC90NjAxMi1yZXYtbGlzdC1zaW1wbGlmeS5zaAppbmRleCA4MzlhZDk3Li5kZDZkYzg0IDEwMDc1NQotLS0gYS90L3Q2MDEyLXJldi1saXN0LXNpbXBsaWZ5LnNoCisrKyBiL3QvdDYwMTItcmV2LWxpc3Qtc2ltcGxpZnkuc2gKQEAgLTU2LDE5ICs1NiwzNyBAQAogCiAJZWNobyAiRmluYWwgY2hhbmdlIiA+ZmlsZSAmJgogCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC1hIC1tICJGaW5hbCBjaGFuZ2UiICYmCi0Jbm90ZSBJCisJbm90ZSBJICYmCisKKwlnaXQgc3ltYm9saWMtcmVmIEhFQUQgcmVmcy9oZWFkcy91bnJlbGF0ZWQgJiYKKwlnaXQgcm0gLWYgIioiICYmCisJZWNobyAiVW5yZWxhdGVkIGJyYW5jaCIgPnNpZGUgJiYKKwlnaXQgYWRkIHNpZGUgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtbSAiU2lkZSByb290IiAmJgorCW5vdGUgSiAmJgorCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCXRlc3RfdGljayAmJiBnaXQgbWVyZ2UgLW0gIkNvb2xlc3QiIHVucmVsYXRlZCAmJgorCW5vdGUgSyAmJgorCisJZWNobyAiSW1tYXRlcmlhbCIgPmVsaWYgJiYKKwlnaXQgYWRkIGVsaWYgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtbSAiTGFzdCIgJiYKKwlub3RlIEwKICcKIAogRk1UPSd0Zm9ybWF0OiVQIAklSCB8ICVzJwogCi1jaGVja19yZXN1bHQgKCkgeworY2hlY2tfb3V0Y29tZSAoKSB7CisJb3V0Y29tZT0kMQorCXNoaWZ0CiAJZm9yIGMgaW4gJDEKIAlkbwogCQllY2hvICIkYyIKIAlkb25lID5leHBlY3QgJiYKIAlzaGlmdCAmJgogCXBhcmFtPSIkKiIgJiYKLQl0ZXN0X2V4cGVjdF9zdWNjZXNzICJsb2cgJHBhcmFtIiAnCisJdGVzdF9leHBlY3RfJG91dGNvbWUgImxvZyAkcGFyYW0iICcKIAkJZ2l0IGxvZyAtLXByZXR0eT0iJEZNVCIgLS1wYXJlbnRzICRwYXJhbSB8CiAJCXVubm90ZSA+YWN0dWFsICYmCiAJCXNlZCAtZSAicy9eLioJXChbXiBdKlwpIC4qL1wxLyIgPmNoZWNrIDxhY3R1YWwgJiYKQEAgLTc5LDExICs5NywxNSBAQAogCScKIH0KIAotY2hlY2tfcmVzdWx0ICdJIEggRyBGIEUgRCBDIEIgQScgLS1mdWxsLWhpc3RvcnkKLWNoZWNrX3Jlc3VsdCAnSSBIIEUgQyBCIEEnIC0tZnVsbC1oaXN0b3J5IC0tIGZpbGUKLWNoZWNrX3Jlc3VsdCAnSSBIIEUgQyBCIEEnIC0tZnVsbC1oaXN0b3J5IC0tdG9wby1vcmRlciAtLSBmaWxlCi1jaGVja19yZXN1bHQgJ0kgSCBFIEMgQiBBJyAtLWZ1bGwtaGlzdG9yeSAtLWRhdGUtb3JkZXIgLS0gZmlsZQotY2hlY2tfcmVzdWx0ICdJIEUgQyBCIEEnIC0tc2ltcGxpZnktbWVyZ2VzIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAoKSB7CisJY2hlY2tfb3V0Y29tZSBzdWNjZXNzICIkQCIKK30KKworY2hlY2tfcmVzdWx0ICdMIEsgSiBJIEggRyBGIEUgRCBDIEIgQScgLS1mdWxsLWhpc3RvcnkKK2NoZWNrX3Jlc3VsdCAnSyBJIEggRSBDIEIgQScgLS1mdWxsLWhpc3RvcnkgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdLIEkgSCBFIEMgQiBBJyAtLWZ1bGwtaGlzdG9yeSAtLXRvcG8tb3JkZXIgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdLIEkgSCBFIEMgQiBBJyAtLWZ1bGwtaGlzdG9yeSAtLWRhdGUtb3JkZXIgLS0gZmlsZQorY2hlY2tfb3V0Y29tZSBmYWlsdXJlICdJIEUgQyBCIEEnIC0tc2ltcGxpZnktbWVyZ2VzIC0tIGZpbGUKIGNoZWNrX3Jlc3VsdCAnSSBCIEEnIC0tIGZpbGUKIGNoZWNrX3Jlc3VsdCAnSSBCIEEnIC0tdG9wby1vcmRlciAtLSBmaWxlCiBjaGVja19yZXN1bHQgJ0gnIC0tZmlyc3QtcGFyZW50IC0tIGFub3RoZXItZmlsZQpkaWZmIC0tZ2l0IGEvdC90NjAxMy1yZXYtbGlzdC1yZXZlcnNlLXBhcmVudHMuc2ggYi90L3Q2MDEzLXJldi1saXN0LXJldmVyc2UtcGFyZW50cy5zaAppbmRleCA1OWZjMmYwLi44OTJhNTM3IDEwMDc1NQotLS0gYS90L3Q2MDEzLXJldi1saXN0LXJldmVyc2UtcGFyZW50cy5zaAorKysgYi90L3Q2MDEzLXJldi1saXN0LXJldmVyc2UtcGFyZW50cy5zaApAQCAtMjUsNyArMjUsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXJldmVyc2UgLS1wYXJlbnRzIC0tZnVsbC1oaXN0b3J5IGNvbWJpbmVzIGNvcnJlY3RseScgJwogCWdpdCByZXYtbGlzdCAtLXBhcmVudHMgLS1mdWxsLWhpc3RvcnkgbWFzdGVyIC0tIGZvbyB8Ci0JCXBlcmwgLWUgInByaW50IHJldmVyc2UgPD4iID4gZXhwZWN0ZWQgJiYKKwkJIiRQRVJMX1BBVEgiIC1lICJwcmludCByZXZlcnNlIDw+IiA+IGV4cGVjdGVkICYmCiAJZ2l0IHJldi1saXN0IC0tcmV2ZXJzZSAtLXBhcmVudHMgLS1mdWxsLWhpc3RvcnkgbWFzdGVyIC0tIGZvbyBcCiAJCT4gYWN0dWFsICYmCiAJdGVzdF9jbXAgYWN0dWFsIGV4cGVjdGVkCkBAIC0zMyw3ICszMyw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tYm91bmRhcnkgZG9lcyB0b28nICcKIAlnaXQgcmV2LWxpc3QgLS1ib3VuZGFyeSAtLXBhcmVudHMgLS1mdWxsLWhpc3RvcnkgbWFzdGVyIF5yb290IC0tIGZvbyB8Ci0JCXBlcmwgLWUgInByaW50IHJldmVyc2UgPD4iID4gZXhwZWN0ZWQgJiYKKwkJIiRQRVJMX1BBVEgiIC1lICJwcmludCByZXZlcnNlIDw+IiA+IGV4cGVjdGVkICYmCiAJZ2l0IHJldi1saXN0IC0tYm91bmRhcnkgLS1yZXZlcnNlIC0tcGFyZW50cyAtLWZ1bGwtaGlzdG9yeSBcCiAJCW1hc3RlciBecm9vdCAtLSBmb28gPiBhY3R1YWwgJiYKIAl0ZXN0X2NtcCBhY3R1YWwgZXhwZWN0ZWQKZGlmZiAtLWdpdCBhL3QvdDYwMTktcmV2LWxpc3QtYW5jZXN0cnktcGF0aC5zaCBiL3QvdDYwMTktcmV2LWxpc3QtYW5jZXN0cnktcGF0aC5zaAppbmRleCAzOWI0Y2IwLi5kZDViMGU1IDEwMDc1NQotLS0gYS90L3Q2MDE5LXJldi1saXN0LWFuY2VzdHJ5LXBhdGguc2gKKysrIGIvdC90NjAxOS1yZXYtbGlzdC1hbmNlc3RyeS1wYXRoLnNoCkBAIC0xMyw2ICsxMyw5IEBACiAjCiAjICBELi5NIC0tIE0udCAgICAgICAgICAgICAgICAgPT0gTQogIyAgLS1hbmNlc3RyeS1wYXRoIEQuLk0gLS0gTS50ID09IE0KKyMKKyMgIEYuLi5JICAgICAgICAgICAgICAgICA9PSBGIEcgSCBJCisjICAtLWFuY2VzdHJ5LXBhdGggRi4uLkkgPT0gRiBIIEkKIAogLiAuL3Rlc3QtbGliLnNoCiAKQEAgLTYzLDEzICs2NiwyOSBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAncmV2LWxpc3QgLS1hbmNlc3RyeS1wYXRjaCBELi5NIC0tIE0udCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmV2LWxpc3QgLS1hbmNlc3RyeS1wYXRoIEQuLk0gLS0gTS50JyAnCiAJZWNobyBNID5leHBlY3QgJiYKIAlnaXQgcmV2LWxpc3QgLS1hbmNlc3RyeS1wYXRoIC0tZm9ybWF0PSVzIEQuLk0gLS0gTS50IHwKIAlzZWQgLWUgIi9eY29tbWl0IC9kIiA+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXYtbGlzdCBGLi4uSScgJworCWZvciBjIGluIEYgRyBIIEk7IGRvIGVjaG8gJGM7IGRvbmUgPmV4cGVjdCAmJgorCWdpdCByZXYtbGlzdCAtLWZvcm1hdD0lcyBGLi4uSSB8CisJc2VkIC1lICIvXmNvbW1pdCAvZCIgfAorCXNvcnQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmV2LWxpc3QgLS1hbmNlc3RyeS1wYXRoIEYuLi5JJyAnCisJZm9yIGMgaW4gRiBIIEk7IGRvIGVjaG8gJGM7IGRvbmUgPmV4cGVjdCAmJgorCWdpdCByZXYtbGlzdCAtLWFuY2VzdHJ5LXBhdGggLS1mb3JtYXQ9JXMgRi4uLkkgfAorCXNlZCAtZSAiL15jb21taXQgL2QiIHwKKwlzb3J0ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKICMgICBiLS0tYmMKICMgIC8gXCAvCiAjIGEgICBYCmRpZmYgLS1naXQgYS90L3Q2MDIyLW1lcmdlLXJlbmFtZS5zaCBiL3QvdDYwMjItbWVyZ2UtcmVuYW1lLnNoCmluZGV4IDExMDQyNDkuLmM2ODBmNzggMTAwNzU1Ci0tLSBhL3QvdDYwMjItbWVyZ2UtcmVuYW1lLnNoCisrKyBiL3QvdDYwMjItbWVyZ2UtcmVuYW1lLnNoCkBAIC0yNDIsMTAgKzI0MiwxMCBAQAogCXJtIC1mIEEgTSBOICYmCiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBjaGFuZ2UrcmVuYW1lICYmCi0JR0lUX01FUkdFX1ZFUkJPU0lUWT0zIGdpdCBtZXJnZSBjaGFuZ2UgfCBncmVwICJeU2tpcHBlZCBCIiAmJgorCUdJVF9NRVJHRV9WRVJCT1NJVFk9MyBnaXQgbWVyZ2UgY2hhbmdlIHwgdGVzdF9pMThuZ3JlcCAiXlNraXBwZWQgQiIgJiYKIAlnaXQgcmVzZXQgLS1oYXJkIEhFQUReICYmCiAJZ2l0IGNoZWNrb3V0IGNoYW5nZSAmJgotCUdJVF9NRVJHRV9WRVJCT1NJVFk9MyBnaXQgbWVyZ2UgY2hhbmdlK3JlbmFtZSB8IGdyZXAgIl5Ta2lwcGVkIEIiCisJR0lUX01FUkdFX1ZFUkJPU0lUWT0zIGdpdCBtZXJnZSBjaGFuZ2UrcmVuYW1lIHwgdGVzdF9pMThuZ3JlcCAiXlNraXBwZWQgQiIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgZm9yIHJlbmFtZSArIGQvZiBjb25mbGljdHMnICcKQEAgLTMwMyw5ICszMDMsOSBAQAogCWdpdCBjaGVja291dCAtcSByZW5hbWVkLWZpbGUtaGFzLW5vLWNvbmZsaWN0c14wICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIC0tc3RyYXRlZ3k9cmVjdXJzaXZlIGRpci1pbi13YXkgPm91dHB1dCAmJgogCi0JZ3JlcCAiQ09ORkxJQ1QgKG1vZGlmeS9kZWxldGUpOiBkaXIvZmlsZS1pbi10aGUtd2F5IiBvdXRwdXQgJiYKLQlncmVwICJBdXRvLW1lcmdpbmcgZGlyIiBvdXRwdXQgJiYKLQlncmVwICJBZGRpbmcgYXMgZGlyfkhFQUQgaW5zdGVhZCIgb3V0cHV0ICYmCisJdGVzdF9pMThuZ3JlcCAiQ09ORkxJQ1QgKG1vZGlmeS9kZWxldGUpOiBkaXIvZmlsZS1pbi10aGUtd2F5IiBvdXRwdXQgJiYKKwl0ZXN0X2kxOG5ncmVwICJBdXRvLW1lcmdpbmcgZGlyIiBvdXRwdXQgJiYKKwl0ZXN0X2kxOG5ncmVwICJBZGRpbmcgYXMgZGlyfkhFQUQgaW5zdGVhZCIgb3V0cHV0ICYmCiAKIAl0ZXN0IDMgLWVxICIkKGdpdCBscy1maWxlcyAtdSB8IHdjIC1sKSIgJiYKIAl0ZXN0IDIgLWVxICIkKGdpdCBscy1maWxlcyAtdSBkaXIvZmlsZS1pbi10aGUtd2F5IHwgd2MgLWwpIiAmJgpAQCAtMzI1LDkgKzMyNSw5IEBACiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIC0tc3RyYXRlZ3k9cmVjdXJzaXZlIHJlbmFtZWQtZmlsZS1oYXMtbm8tY29uZmxpY3RzID5vdXRwdXQgMj5lcnJvcnMgJiYKIAogCSEgZ3JlcCAiZXJyb3I6IHJlZnVzaW5nIHRvIGxvc2UgdW50cmFja2VkIGZpbGUgYXQiIGVycm9ycyAmJgotCWdyZXAgIkNPTkZMSUNUIChtb2RpZnkvZGVsZXRlKTogZGlyL2ZpbGUtaW4tdGhlLXdheSIgb3V0cHV0ICYmCi0JZ3JlcCAiQXV0by1tZXJnaW5nIGRpciIgb3V0cHV0ICYmCi0JZ3JlcCAiQWRkaW5nIGFzIGRpcn5yZW5hbWVkLWZpbGUtaGFzLW5vLWNvbmZsaWN0cyBpbnN0ZWFkIiBvdXRwdXQgJiYKKwl0ZXN0X2kxOG5ncmVwICJDT05GTElDVCAobW9kaWZ5L2RlbGV0ZSk6IGRpci9maWxlLWluLXRoZS13YXkiIG91dHB1dCAmJgorCXRlc3RfaTE4bmdyZXAgIkF1dG8tbWVyZ2luZyBkaXIiIG91dHB1dCAmJgorCXRlc3RfaTE4bmdyZXAgIkFkZGluZyBhcyBkaXJ+cmVuYW1lZC1maWxlLWhhcy1uby1jb25mbGljdHMgaW5zdGVhZCIgb3V0cHV0ICYmCiAKIAl0ZXN0IDMgLWVxICIkKGdpdCBscy1maWxlcyAtdSB8IHdjIC1sKSIgJiYKIAl0ZXN0IDIgLWVxICIkKGdpdCBscy1maWxlcyAtdSBkaXIvZmlsZS1pbi10aGUtd2F5IHwgd2MgLWwpIiAmJgpkaWZmIC0tZ2l0IGEvdC90NjAzMC1iaXNlY3QtcG9yY2VsYWluLnNoIGIvdC90NjAzMC1iaXNlY3QtcG9yY2VsYWluLnNoCmluZGV4IDcyZTI4ZWUuLjA2NGY1Y2UgMTAwNzU1Ci0tLSBhL3QvdDYwMzAtYmlzZWN0LXBvcmNlbGFpbi5zaAorKysgYi90L3Q2MDMwLWJpc2VjdC1wb3JjZWxhaW4uc2gKQEAgLTE2NCw3ICsxNjQsNyBAQAogCWNwIC5naXQvQklTRUNUX1NUQVJUIHNhdmVkICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJpc2VjdCBzdGFydCAkSEFTSDQgZm9vIC0tICYmCiAJZ2l0IGJyYW5jaCA+IGJyYW5jaC5vdXRwdXQgJiYKLQl0ZXN0X2kxOG5ncmVwICIqIChubyBicmFuY2gpIiBicmFuY2gub3V0cHV0ID4gL2Rldi9udWxsICYmCisJdGVzdF9pMThuZ3JlcCAiKiAobm8gYnJhbmNoLCBiaXNlY3Qgc3RhcnRlZCBvbiBvdGhlcikiIGJyYW5jaC5vdXRwdXQgPiAvZGV2L251bGwgJiYKIAl0ZXN0X2NtcCBzYXZlZCAuZ2l0L0JJU0VDVF9TVEFSVAogJwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYmlzZWN0IHN0YXJ0OiBubyAiLmdpdC9CSVNFQ1RfU1RBUlQiIGlmIG1pc3Rha2VuIHJldicgJwpAQCAtMTkwLDcgKzE5MCw3IEBACiAjICRIQVNIMSBpcyBnb29kLCAkSEFTSDQgaXMgYmFkLCB3ZSBza2lwICRIQVNIMwogIyBidXQgJEhBU0gyIGlzIGJhZCwKICMgc28gd2Ugc2hvdWxkIGZpbmQgJEhBU0gyIGFzIHRoZSBmaXJzdCBiYWQgY29tbWl0Ci10ZXN0X2V4cGVjdF9zdWNjZXNzICdiaXNlY3Qgc2tpcDogc3VjY2Vzc2Z1bGwgcmVzdWx0JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdiaXNlY3Qgc2tpcDogc3VjY2Vzc2Z1bCByZXN1bHQnICcKIAlnaXQgYmlzZWN0IHJlc2V0ICYmCiAJZ2l0IGJpc2VjdCBzdGFydCAkSEFTSDQgJEhBU0gxICYmCiAJZ2l0IGJpc2VjdCBza2lwICYmCkBAIC02NzYsOSArNjc2LDcgQEAKIGNoZWNrX3NhbWUoKQogewogCWVjaG8gIkNoZWNraW5nICQxIGlzIHRoZSBzYW1lIGFzICQyIiAmJgotCWdpdCByZXYtcGFyc2UgIiQxIiA+IGV4cGVjdGVkLnNhbWUgJiYKLQlnaXQgcmV2LXBhcnNlICIkMiIgPiBleHBlY3RlZC5hY3R1YWwgJiYKLQl0ZXN0X2NtcCBleHBlY3RlZC5zYW1lIGV4cGVjdGVkLmFjdHVhbAorCXRlc3RfY21wX3JldiAiJDEiICIkMiIKIH0KIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYmlzZWN0OiAtLW5vLWNoZWNrb3V0IC0gc3RhcnQgY29tbWl0IGJhZCcgJwpAQCAtNzQzLDQgKzc0MSw0MiBAQAogCWdpdCBiaXNlY3QgcmVzZXQKICIKIAorY2F0ID4gZXhwZWN0ZWQuYmlzZWN0LWxvZyA8PEVPRgorIyBiYWQ6IFszMmE1OTRhM2ZkYWMyZDU3Y2Y2ZDAyOTg3ZTMwZWVjNjg1MTE0OThjXSBBZGQgPDQ6IENpYW8gZm9yIG5vdz4gaW50byA8aGVsbG8+LgorIyBnb29kOiBbN2I3ZjIwNGE3NDljMzEyNWQ1MjI0ZWQ2MWVhMmFlMTE4N2FkMDQ2Zl0gQWRkIDwyOiBBIG5ldyBkYXkgZm9yIGdpdD4gaW50byA8aGVsbG8+LgorZ2l0IGJpc2VjdCBzdGFydCAnMzJhNTk0YTNmZGFjMmQ1N2NmNmQwMjk4N2UzMGVlYzY4NTExNDk4YycgJzdiN2YyMDRhNzQ5YzMxMjVkNTIyNGVkNjFlYTJhZTExODdhZDA0NmYnCisjIGdvb2Q6IFszZGU5NTJmMjQxNmI2MDg0ZjU1N2VjNDE3NzA5ZWFjNzQwYzY4MThjXSBBZGQgPDM6IEFub3RoZXIgbmV3IGRheSBmb3IgZ2l0PiBpbnRvIDxoZWxsbz4uCitnaXQgYmlzZWN0IGdvb2QgM2RlOTUyZjI0MTZiNjA4NGY1NTdlYzQxNzcwOWVhYzc0MGM2ODE4YworIyBmaXJzdCBiYWQgY29tbWl0OiBbMzJhNTk0YTNmZGFjMmQ1N2NmNmQwMjk4N2UzMGVlYzY4NTExNDk4Y10gQWRkIDw0OiBDaWFvIGZvciBub3c+IGludG8gPGhlbGxvPi4KK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdiaXNlY3QgbG9nOiBzdWNjZXNzZnVsbCByZXN1bHQnICcKKwlnaXQgYmlzZWN0IHJlc2V0ICYmCisJZ2l0IGJpc2VjdCBzdGFydCAkSEFTSDQgJEhBU0gyICYmCisJZ2l0IGJpc2VjdCBnb29kICYmCisJZ2l0IGJpc2VjdCBsb2cgPmJpc2VjdC1sb2cudHh0ICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQuYmlzZWN0LWxvZyBiaXNlY3QtbG9nLnR4dCAmJgorCWdpdCBiaXNlY3QgcmVzZXQKKycKKworY2F0ID4gZXhwZWN0ZWQuYmlzZWN0LXNraXAtbG9nIDw8RU9GCisjIGJhZDogWzMyYTU5NGEzZmRhYzJkNTdjZjZkMDI5ODdlMzBlZWM2ODUxMTQ5OGNdIEFkZCA8NDogQ2lhbyBmb3Igbm93PiBpbnRvIDxoZWxsbz4uCisjIGdvb2Q6IFs3YjdmMjA0YTc0OWMzMTI1ZDUyMjRlZDYxZWEyYWUxMTg3YWQwNDZmXSBBZGQgPDI6IEEgbmV3IGRheSBmb3IgZ2l0PiBpbnRvIDxoZWxsbz4uCitnaXQgYmlzZWN0IHN0YXJ0ICczMmE1OTRhM2ZkYWMyZDU3Y2Y2ZDAyOTg3ZTMwZWVjNjg1MTE0OThjJyAnN2I3ZjIwNGE3NDljMzEyNWQ1MjI0ZWQ2MWVhMmFlMTE4N2FkMDQ2ZicKKyMgc2tpcDogWzNkZTk1MmYyNDE2YjYwODRmNTU3ZWM0MTc3MDllYWM3NDBjNjgxOGNdIEFkZCA8MzogQW5vdGhlciBuZXcgZGF5IGZvciBnaXQ+IGludG8gPGhlbGxvPi4KK2dpdCBiaXNlY3Qgc2tpcCAzZGU5NTJmMjQxNmI2MDg0ZjU1N2VjNDE3NzA5ZWFjNzQwYzY4MThjCisjIG9ubHkgc2tpcHBlZCBjb21taXRzIGxlZnQgdG8gdGVzdAorIyBwb3NzaWJsZSBmaXJzdCBiYWQgY29tbWl0OiBbMzJhNTk0YTNmZGFjMmQ1N2NmNmQwMjk4N2UzMGVlYzY4NTExNDk4Y10gQWRkIDw0OiBDaWFvIGZvciBub3c+IGludG8gPGhlbGxvPi4KKyMgcG9zc2libGUgZmlyc3QgYmFkIGNvbW1pdDogWzNkZTk1MmYyNDE2YjYwODRmNTU3ZWM0MTc3MDllYWM3NDBjNjgxOGNdIEFkZCA8MzogQW5vdGhlciBuZXcgZGF5IGZvciBnaXQ+IGludG8gPGhlbGxvPi4KK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdiaXNlY3QgbG9nOiBvbmx5IHNraXAgY29tbWl0cyBsZWZ0JyAnCisJZ2l0IGJpc2VjdCByZXNldCAmJgorCWdpdCBiaXNlY3Qgc3RhcnQgJEhBU0g0ICRIQVNIMiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBiaXNlY3Qgc2tpcCAmJgorCWdpdCBiaXNlY3QgbG9nID5iaXNlY3Qtc2tpcC1sb2cudHh0ICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQuYmlzZWN0LXNraXAtbG9nIGJpc2VjdC1za2lwLWxvZy50eHQgJiYKKwlnaXQgYmlzZWN0IHJlc2V0CisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjAzNy1tZXJnZS1vdXJzLXRoZWlycy5zaCBiL3QvdDYwMzctbWVyZ2Utb3Vycy10aGVpcnMuc2gKaW5kZXggMmNmNDJjNy4uMzg4OWVjYSAxMDA3NTUKLS0tIGEvdC90NjAzNy1tZXJnZS1vdXJzLXRoZWlycy5zaAorKysgYi90L3Q2MDM3LW1lcmdlLW91cnMtdGhlaXJzLnNoCkBAIC01Myw3ICs1MywxOSBAQAogCSEgZ3JlcCAxIGZpbGUKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVsbCB3aXRoIC1YJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdiaW5hcnkgZmlsZSB3aXRoIC1Yb3Vycy8tWHRoZWlycycgJworCWVjaG8gZmlsZSBiaW5hcnkgPi5naXRhdHRyaWJ1dGVzICYmCisKKwlnaXQgcmVzZXQgLS1oYXJkIG1hc3RlciAmJgorCWdpdCBtZXJnZSAtcyByZWN1cnNpdmUgLVggdGhlaXJzIHNpZGUgJiYKKwlnaXQgZGlmZiAtLWV4aXQtY29kZSBzaWRlIEhFQUQgLS0gZmlsZSAmJgorCisJZ2l0IHJlc2V0IC0taGFyZCBtYXN0ZXIgJiYKKwlnaXQgbWVyZ2UgLXMgcmVjdXJzaXZlIC1YIG91cnMgc2lkZSAmJgorCWdpdCBkaWZmIC0tZXhpdC1jb2RlIG1hc3RlciBIRUFEIC0tIGZpbGUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVsbCBwYXNzZXMgLVggdG8gdW5kZXJseWluZyBtZXJnZScgJwogCWdpdCByZXNldCAtLWhhcmQgbWFzdGVyICYmIGdpdCBwdWxsIC1zIHJlY3Vyc2l2ZSAtWG91cnMgLiBzaWRlICYmCiAJZ2l0IHJlc2V0IC0taGFyZCBtYXN0ZXIgJiYgZ2l0IHB1bGwgLXMgcmVjdXJzaXZlIC1YIG91cnMgLiBzaWRlICYmCiAJZ2l0IHJlc2V0IC0taGFyZCBtYXN0ZXIgJiYgZ2l0IHB1bGwgLXMgcmVjdXJzaXZlIC1YdGhlaXJzIC4gc2lkZSAmJgpkaWZmIC0tZ2l0IGEvdC90NjA0Mi1tZXJnZS1yZW5hbWUtY29ybmVyLWNhc2VzLnNoIGIvdC90NjA0Mi1tZXJnZS1yZW5hbWUtY29ybmVyLWNhc2VzLnNoCmluZGV4IDQ2NmZhMzguLjQxMTU1MGQgMTAwNzU1Ci0tLSBhL3QvdDYwNDItbWVyZ2UtcmVuYW1lLWNvcm5lci1jYXNlcy5zaAorKysgYi90L3Q2MDQyLW1lcmdlLXJlbmFtZS1jb3JuZXItY2FzZXMuc2gKQEAgLTM4MCw3ICszODAsNyBAQAogCWdpdCBjaGVja291dCBCXjAgJiYKIAogCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSAtcyByZWN1cnNpdmUgQ14wID5vdXQgJiYKLQlncmVwICJDT05GTElDVCAocmVuYW1lL3JlbmFtZSkiIG91dCAmJgorCXRlc3RfaTE4bmdyZXAgIkNPTkZMSUNUIChyZW5hbWUvcmVuYW1lKSIgb3V0ICYmCiAKIAl0ZXN0IDIgLWVxICQoZ2l0IGxzLWZpbGVzIC1zIHwgd2MgLWwpICYmCiAJdGVzdCAyIC1lcSAkKGdpdCBscy1maWxlcyAtdSB8IHdjIC1sKSAmJgpkaWZmIC0tZ2l0IGEvdC90NjA1MC1yZXBsYWNlLnNoIGIvdC90NjA1MC1yZXBsYWNlLnNoCmluZGV4IDVjODdmMjguLmRlY2RjMzMgMTAwNzU1Ci0tLSBhL3QvdDYwNTAtcmVwbGFjZS5zaAorKysgYi90L3Q2MDUwLXJlcGxhY2Uuc2gKQEAgLTE0MCw2ICsxNDAsMTcgQEAKICAgICAgdGVzdCAiJEhBU0gyIiA9ICIkKGdpdCByZXBsYWNlKSIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnImdpdCByZXBsYWNlIiByZXNvbHZlcyBzaGExJyAnCisgICAgIFNIT1JUSEFTSDI9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQ9OCAkSEFTSDIpICYmCisgICAgIGdpdCByZXBsYWNlIC1kICRTSE9SVEhBU0gyICYmCisgICAgIGdpdCByZXBsYWNlICRTSE9SVEhBU0gyICRSICYmCisgICAgIGdpdCBzaG93ICRIQVNIMiB8IGdyZXAgIk8gVGhvciIgJiYKKyAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlcGxhY2UgJEhBU0gyICRSICYmCisgICAgIGdpdCByZXBsYWNlIC1mICRIQVNIMiAkUiAmJgorICAgICB0ZXN0X211c3RfZmFpbCBnaXQgcmVwbGFjZSAtZiAmJgorICAgICB0ZXN0ICIkSEFTSDIiID0gIiQoZ2l0IHJlcGxhY2UpIgorJworCiAjIFRoaXMgY3JlYXRlcyBhIHNpZGUgYnJhbmNoIHdoZXJlIHRoZSBidWcgaW4gSDIKICMgZG9lcyBub3QgYXBwZWFyIGJlY2F1c2UgUDIgaXMgY3JlYXRlZCBieSBhcHBseWluZwogIyBIMiBhbmQgc3F1YXNoaW5nIEg1IGludG8gaXQuCmRpZmYgLS1naXQgYS90L3Q2MTMwLXBhdGhzcGVjLW5vZ2xvYi5zaCBiL3QvdDYxMzAtcGF0aHNwZWMtbm9nbG9iLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjM5ZWY2MTkKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q2MTMwLXBhdGhzcGVjLW5vZ2xvYi5zaApAQCAtMCwwICsxLDY4IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0ndGVzdCBnbG9iYmluZyAoYW5kIG5vZ2xvYikgb2YgcGF0aHNwZWMgbGltaXRpbmcnCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3JlYXRlIGNvbW1pdHMgd2l0aCBnbG9iIGNoYXJhY3RlcnMnICcKKwl0ZXN0X2NvbW1pdCB1bnJlbGF0ZWQgYmFyICYmCisJdGVzdF9jb21taXQgdmFuaWxsYSBmb28gJiYKKwkjIGluc2VydCBmaWxlICJmKiIgaW4gdGhlIGNvbW1pdCwgYnV0IGluIGEgd2F5IHRoYXQgYXZvaWRzCisJIyB0aGUgbmFtZSAiZioiIGluIHRoZSB3b3JrdHJlZSwgYmVjYXVzZSBpdCBpcyBub3QgYWxsb3dlZAorCSMgb24gV2luZG93cyAodGhlIHRlc3RzIGJlbG93IGRvIG5vdCBkZXBlbmQgb24gdGhlIHByZXNlbmNlCisJIyBvZiB0aGUgZmlsZSBpbiB0aGUgd29ya3RyZWUpCisJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCAtLWNhY2hlaW5mbyAxMDA2NDQgIiQoZ2l0IHJldi1wYXJzZSBIRUFEOmZvbykiICJmKiIgJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tIHN0YXIgJiYKKwl0ZXN0X2NvbW1pdCBicmFja2V0ICJmW29dW29dIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2YW5pbGxhIHBhdGhzcGVjIG1hdGNoZXMgbGl0ZXJhbGx5JyAnCisJZWNobyB2YW5pbGxhID5leHBlY3QgJiYKKwlnaXQgbG9nIC0tZm9ybWF0PSVzIC0tIGZvbyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGFyIHBhdGhzcGVjIGdsb2JzJyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCWJyYWNrZXQKKwlzdGFyCisJdmFuaWxsYQorCUVPRgorCWdpdCBsb2cgLS1mb3JtYXQ9JXMgLS0gImYqIiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdicmFja2V0IHBhdGhzcGVjIGdsb2JzIGFuZCBtYXRjaGVzIGxpdGVyYWwgYnJhY2tldHMnICcKKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJYnJhY2tldAorCXZhbmlsbGEKKwlFT0YKKwlnaXQgbG9nIC0tZm9ybWF0PSVzIC0tICJmW29dW29dIiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICduby1nbG9iIG9wdGlvbiBtYXRjaGVzIGxpdGVyYWxseSAodmFuaWxsYSknICcKKwllY2hvIHZhbmlsbGEgPmV4cGVjdCAmJgorCWdpdCAtLWxpdGVyYWwtcGF0aHNwZWNzIGxvZyAtLWZvcm1hdD0lcyAtLSBmb28gPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbm8tZ2xvYiBvcHRpb24gbWF0Y2hlcyBsaXRlcmFsbHkgKHN0YXIpJyAnCisJZWNobyBzdGFyID5leHBlY3QgJiYKKwlnaXQgLS1saXRlcmFsLXBhdGhzcGVjcyBsb2cgLS1mb3JtYXQ9JXMgLS0gImYqIiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICduby1nbG9iIG9wdGlvbiBtYXRjaGVzIGxpdGVyYWxseSAoYnJhY2tldCknICcKKwllY2hvIGJyYWNrZXQgPmV4cGVjdCAmJgorCWdpdCAtLWxpdGVyYWwtcGF0aHNwZWNzIGxvZyAtLWZvcm1hdD0lcyAtLSAiZltvXVtvXSIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbm8tZ2xvYiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3b3JrcycgJworCWVjaG8gc3RhciA+ZXhwZWN0ICYmCisJR0lUX0xJVEVSQUxfUEFUSFNQRUNTPTEgZ2l0IGxvZyAtLWZvcm1hdD0lcyAtLSAiZioiID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjIwMC1mbXQtbWVyZ2UtbXNnLnNoIGIvdC90NjIwMC1mbXQtbWVyZ2UtbXNnLnNoCmluZGV4IDk5MmMyYTAuLjU0YjU3NDQgMTAwNzU1Ci0tLSBhL3QvdDYyMDAtZm10LW1lcmdlLW1zZy5zaAorKysgYi90L3Q2MjAwLWZtdC1tZXJnZS1tc2cuc2gKQEAgLTExMiw4ICsxMTIsOCBAQAogCSAgQ29tbW9uICMxCiAJRU9GCiAKLQlnaXQgY29uZmlnIG1lcmdlLmxvZyB0cnVlICYmCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldC1hbGwgbWVyZ2Uuc3VtbWFyeSAmJgorCXRlc3RfY29uZmlnIG1lcmdlLmxvZyB0cnVlICYmCisJdGVzdF91bmNvbmZpZyBtZXJnZS5zdW1tYXJ5ICYmCiAKIAlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCiAJdGVzdF90aWNrICYmCkBAIC0xMjEsOCArMTIxLDggQEAKIAogCWdpdCBmbXQtbWVyZ2UtbXNnIDwuZ2l0L0ZFVENIX0hFQUQgPmFjdHVhbDEgJiYKIAotCXRlc3RfbWlnaHRfZmFpbCBnaXQgY29uZmlnIC0tdW5zZXQtYWxsIG1lcmdlLmxvZyAmJgotCWdpdCBjb25maWcgbWVyZ2Uuc3VtbWFyeSB0cnVlICYmCisJdGVzdF91bmNvbmZpZyBtZXJnZS5sb2cgJiYKKwl0ZXN0X2NvbmZpZyBtZXJnZS5zdW1tYXJ5IHRydWUgJiYKIAogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAl0ZXN0X3RpY2sgJiYKQEAgLTEzNCwxMSArMTM0LDYgQEAKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwyCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwOiBjbGVhciBbbWVyZ2VdIGNvbmZpZ3VyYXRpb24nICcKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBtZXJnZS5sb2cgJiYKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBtZXJnZS5zdW1tYXJ5Ci0nCi0KIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIEZFVENIX0hFQUQnICcKIAlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCiAJdGVzdF90aWNrICYmCkBAIC0xODAsNiArMTc1LDI0IEBACiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tbG9nPTUgd2l0aCBjdXN0b20gY29tbWVudCBjaGFyYWN0ZXInICcKKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCU1lcmdlIGJyYW5jaCAke2Fwb3N9bGVmdCR7YXBvc30KKworCXggQnkgQW5vdGhlciBBdXRob3IgKDMpIGFuZCBBIFUgVGhvciAoMikKKwl4IFZpYSBBbm90aGVyIENvbW1pdHRlcgorCSogbGVmdDoKKwkgIExlZnQgIzUKKwkgIExlZnQgIzQKKwkgIExlZnQgIzMKKwkgIENvbW1vbiAjMgorCSAgQ29tbW9uICMxCisJRU9GCisKKwlnaXQgLWMgY29yZS5jb21tZW50Y2hhcj0ieCIgZm10LW1lcmdlLW1zZyAtLWxvZz01IDwuZ2l0L0ZFVENIX0hFQUQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZS5sb2c9MCBkaXNhYmxlcyBzaG9ydGxvZycgJwogCWVjaG8gIk1lcmdlIGJyYW5jaCAke2Fwb3N9bGVmdCR7YXBvc30iID5leHBlY3RlZAogCWdpdCAtYyBtZXJnZS5sb2c9MCBmbXQtbWVyZ2UtbXNnIDwuZ2l0L0ZFVENIX0hFQUQgPmFjdHVhbCAmJgpAQCAtMjQ4LDE0ICsyNjEsMTQgQEAKIAkgIENvbW1vbiAjMQogCUVPRgogCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldCBtZXJnZS5sb2cgJiYKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbmZpZyAtLXVuc2V0IG1lcmdlLnN1bW1hcnkgJiYKKwl0ZXN0X3VuY29uZmlnIG1lcmdlLmxvZyAmJgorCXRlc3RfdW5jb25maWcgbWVyZ2Uuc3VtbWFyeSAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAlnaXQgZmV0Y2ggIiQocHdkKSIgbGVmdCAmJgogCWdpdCBmbXQtbWVyZ2UtbXNnIC1tICJTeW5jIHdpdGggbGVmdCIgPC5naXQvRkVUQ0hfSEVBRCA+YWN0dWFsICYmCiAJZ2l0IGZtdC1tZXJnZS1tc2cgLS1sb2cgLW0gIlN5bmMgd2l0aCBsZWZ0IiBcCiAJCQkJCTwuZ2l0L0ZFVENIX0hFQUQgPmFjdHVhbC5sb2cgJiYKLQlnaXQgY29uZmlnIG1lcmdlLmxvZyB0cnVlICYmCisJdGVzdF9jb25maWcgbWVyZ2UubG9nIHRydWUgJiYKIAlnaXQgZm10LW1lcmdlLW1zZyAtbSAiU3luYyB3aXRoIGxlZnQiIFwKIAkJCQkJPC5naXQvRkVUQ0hfSEVBRCA+YWN0dWFsLmxvZy1jb25maWcgJiYKIAlnaXQgZm10LW1lcmdlLW1zZyAtLW5vLWxvZyAtbSAiU3luYyB3aXRoIGxlZnQiIFwKQEAgLTI5MCwyOSArMzAzLDI5IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIGZvciB0d28gYnJhbmNoZXMnICcKLQlnaXQgY29uZmlnIG1lcmdlLmxvZyB0cnVlICYmCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldC1hbGwgbWVyZ2Uuc3VtbWFyeSAmJgorCXRlc3RfY29uZmlnIG1lcmdlLmxvZyB0cnVlICYmCisJdGVzdF91bmNvbmZpZyBtZXJnZS5zdW1tYXJ5ICYmCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCXRlc3RfdGljayAmJgogCWdpdCBmZXRjaCAuIGxlZnQgcmlnaHQgJiYKIAlnaXQgZm10LW1lcmdlLW1zZyA8LmdpdC9GRVRDSF9IRUFEID5hY3R1YWwxICYmCiAKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBtZXJnZS5sb2cgJiYKLQlnaXQgY29uZmlnIG1lcmdlLnN1bW1hcnkgdHJ1ZSAmJgorCXRlc3RfdW5jb25maWcgbWVyZ2UubG9nICYmCisJdGVzdF9jb25maWcgbWVyZ2Uuc3VtbWFyeSB0cnVlICYmCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCXRlc3RfdGljayAmJgogCWdpdCBmZXRjaCAuIGxlZnQgcmlnaHQgJiYKIAlnaXQgZm10LW1lcmdlLW1zZyA8LmdpdC9GRVRDSF9IRUFEID5hY3R1YWwyICYmCiAKLQlnaXQgY29uZmlnIG1lcmdlLmxvZyB5ZXMgJiYKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBtZXJnZS5zdW1tYXJ5ICYmCisJdGVzdF9jb25maWcgbWVyZ2UubG9nIHllcyAmJgorCXRlc3RfdW5jb25maWcgbWVyZ2Uuc3VtbWFyeSAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAl0ZXN0X3RpY2sgJiYKIAlnaXQgZmV0Y2ggLiBsZWZ0IHJpZ2h0ICYmCiAJZ2l0IGZtdC1tZXJnZS1tc2cgPC5naXQvRkVUQ0hfSEVBRCA+YWN0dWFsMyAmJgogCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldC1hbGwgbWVyZ2UubG9nICYmCi0JZ2l0IGNvbmZpZyBtZXJnZS5zdW1tYXJ5IHllcyAmJgorCXRlc3RfdW5jb25maWcgbWVyZ2UubG9nICYmCisJdGVzdF9jb25maWcgbWVyZ2Uuc3VtbWFyeSB5ZXMgJiYKIAlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCiAJdGVzdF90aWNrICYmCiAJZ2l0IGZldGNoIC4gbGVmdCByaWdodCAmJgpAQCAtMzI1LDggKzMzOCw4IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlLW1zZyAtRicgJwotCXRlc3RfbWlnaHRfZmFpbCBnaXQgY29uZmlnIC0tdW5zZXQtYWxsIG1lcmdlLmxvZyAmJgotCWdpdCBjb25maWcgbWVyZ2Uuc3VtbWFyeSB5ZXMgJiYKKwl0ZXN0X3VuY29uZmlnIG1lcmdlLmxvZyAmJgorCXRlc3RfY29uZmlnIG1lcmdlLnN1bW1hcnkgeWVzICYmCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCXRlc3RfdGljayAmJgogCWdpdCBmZXRjaCAuIGxlZnQgcmlnaHQgJiYKQEAgLTMzNSw4ICszNDgsOCBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZS1tc2cgLUYgaW4gc3ViZGlyZWN0b3J5JyAnCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldC1hbGwgbWVyZ2UubG9nICYmCi0JZ2l0IGNvbmZpZyBtZXJnZS5zdW1tYXJ5IHllcyAmJgorCXRlc3RfdW5jb25maWcgbWVyZ2UubG9nICYmCisJdGVzdF9jb25maWcgbWVyZ2Uuc3VtbWFyeSB5ZXMgJiYKIAlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCiAJdGVzdF90aWNrICYmCiAJZ2l0IGZldGNoIC4gbGVmdCByaWdodCAmJgpAQCAtMzUwLDggKzM2Myw4IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlLW1zZyB3aXRoIG5vdGhpbmcgdG8gbWVyZ2UnICcKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBtZXJnZS5sb2cgJiYKLQlnaXQgY29uZmlnIG1lcmdlLnN1bW1hcnkgeWVzICYmCisJdGVzdF91bmNvbmZpZyBtZXJnZS5sb2cgJiYKKwl0ZXN0X2NvbmZpZyBtZXJnZS5zdW1tYXJ5IHllcyAmJgogCiAJPmVtcHR5ICYmCiAKQEAgLTM3Niw4ICszODksOCBAQAogCSAgQ29tbW9uICMxCiAJRU9GCiAKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBtZXJnZS5sb2cgJiYKLQlnaXQgY29uZmlnIG1lcmdlLnN1bW1hcnkgeWVzICYmCisJdGVzdF91bmNvbmZpZyBtZXJnZS5sb2cgJiYKKwl0ZXN0X2NvbmZpZyBtZXJnZS5zdW1tYXJ5IHllcyAmJgogCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCXRlc3RfdGljayAmJgpAQCAtNDA2LDggKzQxOSw4IEBACiAJICBDb21tb24gIzEKIAlFT0YKIAotCXRlc3RfbWlnaHRfZmFpbCBnaXQgY29uZmlnIC0tdW5zZXQtYWxsIG1lcmdlLmxvZyAmJgotCWdpdCBjb25maWcgbWVyZ2Uuc3VtbWFyeSB5ZXMgJiYKKwl0ZXN0X3VuY29uZmlnIG1lcmdlLmxvZyAmJgorCXRlc3RfY29uZmlnIG1lcmdlLnN1bW1hcnkgeWVzICYmCiAKIAlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCiAJdGVzdF90aWNrICYmCkBAIC00MzYsOCArNDQ5LDggQEAKIAkgIENvbW1vbiAjMQogCUVPRgogCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldC1hbGwgbWVyZ2UubG9nICYmCi0JZ2l0IGNvbmZpZyBtZXJnZS5zdW1tYXJ5IHllcyAmJgorCXRlc3RfdW5jb25maWcgbWVyZ2UubG9nICYmCisJdGVzdF9jb25maWcgbWVyZ2Uuc3VtbWFyeSB5ZXMgJiYKIAogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAl0ZXN0X3RpY2sgJiYKQEAgLTQ2NCw2ICs0NzcsOCBAQAogCQllY2hvICIgIC4uLiIKIAl9ID5leHBlY3RlZCAmJgogCisJdGVzdF9jb25maWcgbWVyZ2Uuc3VtbWFyeSB5ZXMgJiYKKwogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAl0ZXN0X3RpY2sgJiYKIAlnaXQgZmV0Y2ggLiBsb25nICYmCkBAIC00NzIsNCArNDg3LDQzIEBACiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlLW1zZyB3aXRoICJtZXJnaW5nIiBhbiBhbm5vdGF0ZWQgdGFnJyAnCisJdGVzdF9jb25maWcgbWVyZ2UubG9nIHRydWUgJiYKKworCWdpdCBjaGVja291dCBtYXN0ZXJeMCAmJgorCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSAiT25lIHN0ZXAgYWhlYWQiICYmCisJZ2l0IHRhZyAtYSAtbSAiQW4gYW5ub3RhdGVkIG9uZSIgYW5ub3RlIEhFQUQgJiYKKworCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwlnaXQgZmV0Y2ggLiBhbm5vdGUgJiYKKworCWdpdCBmbXQtbWVyZ2UtbXNnIDwuZ2l0L0ZFVENIX0hFQUQgPmFjdHVhbCAmJgorCXsKKwkJY2F0IDw8LVxFT0YKKwkJTWVyZ2UgdGFnICdcJydhbm5vdGUnXCcnCisKKwkJQW4gYW5ub3RhdGVkIG9uZQorCisJCSogdGFnICdcJydhbm5vdGUnXCcnOgorCQkgIE9uZSBzdGVwIGFoZWFkCisJCUVPRgorCX0gPmV4cGVjdGVkICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsICYmCisKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZXNldCAtLWhhcmQiICYmCisJYW5ub3RlPSQoZ2l0IHJldi1wYXJzZSBhbm5vdGUpICYmCisJZ2l0IG1lcmdlIC0tbm8tY29tbWl0ICRhbm5vdGUgJiYKKwl7CisJCWNhdCA8PC1FT0YKKwkJTWVyZ2UgdGFnICdcJyckYW5ub3RlJ1wnJworCisJCUFuIGFubm90YXRlZCBvbmUKKworCQkqIHRhZyAnXCcnJGFubm90ZSdcJyc6CisJCSAgT25lIHN0ZXAgYWhlYWQKKwkJRU9GCisJfSA+ZXhwZWN0ZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAuZ2l0L01FUkdFX01TRworJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDYzMDAtZm9yLWVhY2gtcmVmLnNoIGIvdC90NjMwMC1mb3ItZWFjaC1yZWYuc2gKaW5kZXggMTcyMTc4NC4uNzUyZjVjYiAxMDA3NTUKLS0tIGEvdC90NjMwMC1mb3ItZWFjaC1yZWYuc2gKKysrIGIvdC90NjMwMC1mb3ItZWFjaC1yZWYuc2gKQEAgLTQ1Niw0ICs0NTYsMTQgQEAKIGJvZHkgY29udGVudHMKICRzaWciCiAKK2NhdCA+ZXhwZWN0ZWQgPDxcRU9GCis0MDhmZTc2ZDAyYTc4NWEwMDZjMmU5YzY2OWI3YmU1NTg5ZWRlOTZkIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+IHJlZnMvdGFncy9tYXN0ZXIKKzkwYjVlYmVkZTQ4OTllZGE2NDg5M2JjMmE0YzhmMWQ2ZmI2ZGZjNDAgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4gcmVmcy90YWdzL2JvZ28KK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdWZXJpZnkgc29ydCB3aXRoIG11bHRpcGxlIGtleXMnICcKKwlnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSIlKG9iamVjdG5hbWUpICUodGFnZ2VyZW1haWwpICUocmVmbmFtZSkiIC0tc29ydD1vYmplY3RuYW1lIC0tc29ydD10YWdnZXJlbWFpbCBcCisJCXJlZnMvdGFncy9ib2dvIHJlZnMvdGFncy9tYXN0ZXIgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjUwMC1nYy5zaCBiL3QvdDY1MDAtZ2Muc2gKaW5kZXggODJmMzYzOS4uYjFhNjM2NSAxMDA3NTUKLS0tIGEvdC90NjUwMC1nYy5zaAorKysgYi90L3Q2NTAwLWdjLnNoCkBAIC0xMSw3ICsxMSw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2djIC0tZ29iYmxlZGVnb29rJyAnCiAJdGVzdF9leHBlY3RfY29kZSAxMjkgZ2l0IGdjIC0tbm9uc2Vuc2UgMj5lcnIgJiYKLQlncmVwICJbVXVdc2FnZTogZ2l0IGdjIiBlcnIKKwl0ZXN0X2kxOG5ncmVwICJbVXVdc2FnZTogZ2l0IGdjIiBlcnIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2MgLWggd2l0aCBpbnZhbGlkIGNvbmZpZ3VyYXRpb24nICcKQEAgLTIyLDcgKzIyLDcgQEAKIAkJZWNobyAiW2djXSBwcnVuZWV4cGlyZSA9IENPUlJVUFQiID4+LmdpdC9jb25maWcgJiYKIAkJdGVzdF9leHBlY3RfY29kZSAxMjkgZ2l0IGdjIC1oID51c2FnZSAyPiYxCiAJKSAmJgotCWdyZXAgIltVdV1zYWdlIiBicm9rZW4vdXNhZ2UKKwl0ZXN0X2kxOG5ncmVwICJbVXVdc2FnZSIgYnJva2VuL3VzYWdlCiAnCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzAwMy1maWx0ZXItYnJhbmNoLnNoIGIvdC90NzAwMy1maWx0ZXItYnJhbmNoLnNoCmluZGV4IGUwMjI3NzMuLjk0OTY3MzYgMTAwNzU1Ci0tLSBhL3QvdDcwMDMtZmlsdGVyLWJyYW5jaC5zaAorKysgYi90L3Q3MDAzLWZpbHRlci1icmFuY2guc2gKQEAgLTUsNyArNSw4IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCiAJdGVzdF9jb21taXQgQSAmJgotCXRlc3RfY29tbWl0IEIgJiYKKwlHSVRfQ09NTUlUVEVSX0RBVEU9IkAwICswMDAwIiBHSVRfQVVUSE9SX0RBVEU9IkAwICswMDAwIiAmJgorCXRlc3RfY29tbWl0IC0tbm90aWNrIEIgJiYKIAlnaXQgY2hlY2tvdXQgLWIgYnJhbmNoIEIgJiYKIAl0ZXN0X2NvbW1pdCBEICYmCiAJbWtkaXIgZGlyICYmCkBAIC02Myw2ICs2NCwyMCBAQAogCWdyZXAgZHJlcG8gIiRUUkFTSERJUi9iYWNrdXAtcmVmcyIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAndHJlZS1maWx0ZXIgd29ya3Mgd2l0aCAtZCcgJworCWdpdCBpbml0IGRyZXBvLXRyZWUgJiYKKwkoCisJCWNkIGRyZXBvLXRyZWUgJiYKKwkJdGVzdF9jb21taXQgb25lICYmCisJCWdpdCBmaWx0ZXItYnJhbmNoIC1kICIkVFJBU0hESVIvZGZvbyIgXAorCQkJLS10cmVlLWZpbHRlciAiZWNobyBjaGFuZ2VkID5vbmUudCIgJiYKKwkJZWNobyBjaGFuZ2VkID5leHBlY3QgJiYKKwkJZ2l0IGNhdC1maWxlIGJsb2IgSEVBRDpvbmUudCA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKwkJdGVzdF9jbXAgb25lLnQgYWN0dWFsCisJKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdGYWlsIGlmIGNvbW1pdCBmaWx0ZXIgZmFpbHMnICcKIAl0ZXN0X211c3RfZmFpbCBnaXQgZmlsdGVyLWJyYW5jaCAtZiAtLWNvbW1pdC1maWx0ZXIgImV4aXQgMSIgSEVBRAogJwpAQCAtMTY2LDEwICsxODEsMTEgQEAKIAl0ZXN0X3RpY2sgJiYKIAlHSVRfQVVUSE9SX05BTUU9IkIgViBVaXBzIiBnaXQgY29tbWl0IC1tIGJ2dWlwcyAmJgogCWdpdCBicmFuY2ggcHJlc2VydmVkLWF1dGhvciAmJgotCWdpdCBmaWx0ZXItYnJhbmNoIC1mIC0tbXNnLWZpbHRlciAiY2F0OyBcCisJKHNhbmVfdW5zZXQgR0lUX0FVVEhPUl9OQU1FICYmCisJIGdpdCBmaWx0ZXItYnJhbmNoIC1mIC0tbXNnLWZpbHRlciAiY2F0OyBcCiAJCQl0ZXN0IFwkR0lUX0NPTU1JVCAhPSAkKGdpdCByZXYtcGFyc2UgbWFzdGVyKSB8fCBcCiAJCQllY2hvIEhhbGxvIiBcCi0JCXByZXNlcnZlZC1hdXRob3IgJiYKKwkJcHJlc2VydmVkLWF1dGhvcikgJiYKIAl0ZXN0IDEgPSAkKGdpdCByZXYtbGlzdCAtLWF1dGhvcj0iQiBWIFVpcHMiIHByZXNlcnZlZC1hdXRob3IgfCB3YyAtbCkKICcKIApkaWZmIC0tZ2l0IGEvdC90NzAwNC10YWcuc2ggYi90L3Q3MDA0LXRhZy5zaAppbmRleCA1MTg5NDQ2Li5jOGQ2ZTlmIDEwMDc1NQotLS0gYS90L3Q3MDA0LXRhZy5zaAorKysgYi90L3Q3MDA0LXRhZy5zaApAQCAtMTA0LDYgKzEwNCwxOCBAQAogCXRhZ19leGlzdHMgbXloZWFkCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tZm9yY2UgY2FuIGNyZWF0ZSBhIHRhZyB3aXRoIHRoZSBuYW1lIG9mIG9uZSBleGlzdGluZycgJworCXRhZ19leGlzdHMgbXl0YWcgJiYKKwlnaXQgdGFnIC0tZm9yY2UgbXl0YWcgJiYKKwl0YWdfZXhpc3RzIG15dGFnJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLWZvcmNlIGlzIG1vb3Qgd2l0aCBhIG5vbi1leGlzdGluZyB0YWcgbmFtZScgJworCWdpdCB0YWcgbmV3dGFnID5leHBlY3QgJiYKKwlnaXQgdGFnIC0tZm9yY2UgZm9yY2V0YWcgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKK2dpdCB0YWcgLWQgbmV3dGFnIGZvcmNldGFnCisKICMgZGVsZXRpbmcgdGFnczoKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndHJ5aW5nIHRvIGRlbGV0ZSBhbiB1bmtub3duIHRhZyBzaG91bGQgZmFpbCcgJwpAQCAtMTA2NiwxMiArMTA3OCwxMiBAQAogJwogCiAjIHVzYWdlIHdpdGggcmZjMTk5MSBzaWduYXR1cmVzCi1lY2hvICJyZmMxOTkxIiA+IGdwZ2hvbWUvZ3BnLmNvbmYKIGdldF90YWdfaGVhZGVyIHJmYzE5OTEtc2lnbmVkLXRhZyAkY29tbWl0IGNvbW1pdCAkdGltZSA+ZXhwZWN0CiBlY2hvICJSRkMxOTkxIHNpZ25lZCB0YWciID4+ZXhwZWN0CiBlY2hvICctLS0tLUJFR0lOIFBHUCBNRVNTQUdFLS0tLS0nID4+ZXhwZWN0CiB0ZXN0X2V4cGVjdF9zdWNjZXNzIEdQRyBcCiAJJ2NyZWF0aW5nIGEgc2lnbmVkIHRhZyB3aXRoIHJmYzE5OTEnICcKKwllY2hvICJyZmMxOTkxIiA+Z3BnaG9tZS9ncGcuY29uZiAmJgogCWdpdCB0YWcgLXMgLW0gIlJGQzE5OTEgc2lnbmVkIHRhZyIgcmZjMTk5MS1zaWduZWQtdGFnICRjb21taXQgJiYKIAlnZXRfdGFnX21zZyByZmMxOTkxLXNpZ25lZC10YWcgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKQEAgLTEwODUsNiArMTA5Nyw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgR1BHIFwKIAkncmVlZGl0aW5nIGEgc2lnbmVkIHRhZyBib2R5IG9taXRzIHNpZ25hdHVyZScgJworCWVjaG8gInJmYzE5OTEiID5ncGdob21lL2dwZy5jb25mICYmCiAJZWNobyAiUkZDMTk5MSBzaWduZWQgdGFnIiA+ZXhwZWN0ICYmCiAJR0lUX0VESVRPUj0uL2Zha2VlZGl0b3IgZ2l0IHRhZyAtZiAtcyByZmMxOTkxLXNpZ25lZC10YWcgJGNvbW1pdCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKQEAgLTEwOTIsMTEgKzExMDUsMTMgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBHUEcgXAogCSd2ZXJpZnlpbmcgcmZjMTk5MSBzaWduYXR1cmUnICcKKwllY2hvICJyZmMxOTkxIiA+Z3BnaG9tZS9ncGcuY29uZiAmJgogCWdpdCB0YWcgLXYgcmZjMTk5MS1zaWduZWQtdGFnCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgR1BHIFwKIAknbGlzdCB0YWcgd2l0aCByZmMxOTkxIHNpZ25hdHVyZScgJworCWVjaG8gInJmYzE5OTEiID5ncGdob21lL2dwZy5jb25mICYmCiAJZWNobyAicmZjMTk5MS1zaWduZWQtdGFnIFJGQzE5OTEgc2lnbmVkIHRhZyIgPmV4cGVjdCAmJgogCWdpdCB0YWcgLWwgLW4xIHJmYzE5OTEtc2lnbmVkLXRhZyA+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgpkaWZmIC0tZ2l0IGEvdC90NzAwNy1zaG93LnNoIGIvdC90NzAwNy1zaG93LnNoCmluZGV4IGNjZTIyMmYuLmU0MWZhMDAgMTAwNzU1Ci0tLSBhL3QvdDcwMDctc2hvdy5zaAorKysgYi90L3Q3MDA3LXNob3cuc2gKQEAgLTE3LDQgKzE3LDEwNyBAQAogCXRlc3RfbXVzdF9mYWlsIGdpdCAtLW5vLXBhZ2VyIHNob3cgZm9vLXRhZwogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXQgdXAgYSBiaXQgb2YgaGlzdG9yeScgJworCXRlc3RfY29tbWl0IG1haW4xICYmCisJdGVzdF9jb21taXQgbWFpbjIgJiYKKwl0ZXN0X2NvbW1pdCBtYWluMyAmJgorCWdpdCB0YWcgLW0gImFubm90YXRlZCB0YWciIGFubm90YXRlZCAmJgorCWdpdCBjaGVja291dCAtYiBzaWRlIEhFQUReXiAmJgorCXRlc3RfY29tbWl0IHNpZGUyICYmCisJdGVzdF9jb21taXQgc2lkZTMKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvd2luZyB0d28gY29tbWl0cycgJworCWNhdCA+ZXhwZWN0IDw8LUVPRiAmJgorCWNvbW1pdCAkKGdpdCByZXYtcGFyc2UgbWFpbjIpCisJY29tbWl0ICQoZ2l0IHJldi1wYXJzZSBtYWluMykKKwlFT0YKKwlnaXQgc2hvdyBtYWluMiBtYWluMyA+YWN0dWFsICYmCisJZ3JlcCBeY29tbWl0IGFjdHVhbCA+YWN0dWFsLmZpbHRlcmVkICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbC5maWx0ZXJlZAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG93aW5nIGEgcmFuZ2Ugd2Fsa3MgKGxpbmVhciknICcKKwljYXQgPmV4cGVjdCA8PC1FT0YgJiYKKwljb21taXQgJChnaXQgcmV2LXBhcnNlIG1haW4zKQorCWNvbW1pdCAkKGdpdCByZXYtcGFyc2UgbWFpbjIpCisJRU9GCisJZ2l0IHNob3cgbWFpbjEuLm1haW4zID5hY3R1YWwgJiYKKwlncmVwIF5jb21taXQgYWN0dWFsID5hY3R1YWwuZmlsdGVyZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsLmZpbHRlcmVkCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3dpbmcgYSByYW5nZSB3YWxrcyAoWSBzaGFwZSwgXiBmaXJzdCknICcKKwljYXQgPmV4cGVjdCA8PC1FT0YgJiYKKwljb21taXQgJChnaXQgcmV2LXBhcnNlIG1haW4zKQorCWNvbW1pdCAkKGdpdCByZXYtcGFyc2UgbWFpbjIpCisJRU9GCisJZ2l0IHNob3cgXnNpZGUzIG1haW4zID5hY3R1YWwgJiYKKwlncmVwIF5jb21taXQgYWN0dWFsID5hY3R1YWwuZmlsdGVyZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsLmZpbHRlcmVkCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3dpbmcgYSByYW5nZSB3YWxrcyAoWSBzaGFwZSwgXiBsYXN0KScgJworCWNhdCA+ZXhwZWN0IDw8LUVPRiAmJgorCWNvbW1pdCAkKGdpdCByZXYtcGFyc2UgbWFpbjMpCisJY29tbWl0ICQoZ2l0IHJldi1wYXJzZSBtYWluMikKKwlFT0YKKwlnaXQgc2hvdyBtYWluMyBec2lkZTMgPmFjdHVhbCAmJgorCWdyZXAgXmNvbW1pdCBhY3R1YWwgPmFjdHVhbC5maWx0ZXJlZCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwuZmlsdGVyZWQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvd2luZyB3aXRoIC1OIHdhbGtzJyAnCisJY2F0ID5leHBlY3QgPDwtRU9GICYmCisJY29tbWl0ICQoZ2l0IHJldi1wYXJzZSBtYWluMykKKwljb21taXQgJChnaXQgcmV2LXBhcnNlIG1haW4yKQorCUVPRgorCWdpdCBzaG93IC0yIG1haW4zID5hY3R1YWwgJiYKKwlncmVwIF5jb21taXQgYWN0dWFsID5hY3R1YWwuZmlsdGVyZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsLmZpbHRlcmVkCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3dpbmcgYW5ub3RhdGVkIHRhZycgJworCWNhdCA+ZXhwZWN0IDw8LUVPRiAmJgorCXRhZyBhbm5vdGF0ZWQKKwljb21taXQgJChnaXQgcmV2LXBhcnNlIGFubm90YXRlZF57Y29tbWl0fSkKKwlFT0YKKwlnaXQgc2hvdyBhbm5vdGF0ZWQgPmFjdHVhbCAmJgorCWdyZXAgLUUgIl4oY29tbWl0fHRhZykiIGFjdHVhbCA+YWN0dWFsLmZpbHRlcmVkICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbC5maWx0ZXJlZAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG93aW5nIGFubm90YXRlZCB0YWcgcGx1cyBjb21taXQnICcKKwljYXQgPmV4cGVjdCA8PC1FT0YgJiYKKwl0YWcgYW5ub3RhdGVkCisJY29tbWl0ICQoZ2l0IHJldi1wYXJzZSBhbm5vdGF0ZWRee2NvbW1pdH0pCisJY29tbWl0ICQoZ2l0IHJldi1wYXJzZSBzaWRlMykKKwlFT0YKKwlnaXQgc2hvdyBhbm5vdGF0ZWQgc2lkZTMgPmFjdHVhbCAmJgorCWdyZXAgLUUgIl4oY29tbWl0fHRhZykiIGFjdHVhbCA+YWN0dWFsLmZpbHRlcmVkICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbC5maWx0ZXJlZAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG93aW5nIHJhbmdlJyAnCisJY2F0ID5leHBlY3QgPDwtRU9GICYmCisJY29tbWl0ICQoZ2l0IHJldi1wYXJzZSBtYWluMykKKwljb21taXQgJChnaXQgcmV2LXBhcnNlIG1haW4yKQorCUVPRgorCWdpdCBzaG93IF5zaWRlMyBhbm5vdGF0ZWQgPmFjdHVhbCAmJgorCWdyZXAgLUUgIl4oY29tbWl0fHRhZykiIGFjdHVhbCA+YWN0dWFsLmZpbHRlcmVkICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbC5maWx0ZXJlZAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctcyBzdXBwcmVzc2VzIGRpZmYnICcKKwllY2hvIG1haW4zID5leHBlY3QgJiYKKwlnaXQgc2hvdyAtcyAtLWZvcm1hdD0lcyBtYWluMyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXF1aWV0IHN1cHByZXNzZXMgZGlmZicgJworCWVjaG8gbWFpbjMgPmV4cGVjdCAmJgorCWdpdCBzaG93IC0tcXVpZXQgLS1mb3JtYXQ9JXMgbWFpbjMgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3MDA4LWdyZXAtYmluYXJ5LnNoIGIvdC90NzAwOC1ncmVwLWJpbmFyeS5zaAppbmRleCBmZDY0MTBmLi4yNmY4MzE5IDEwMDc1NQotLS0gYS90L3Q3MDA4LWdyZXAtYmluYXJ5LnNoCisrKyBiL3QvdDcwMDgtZ3JlcC1iaW5hcnkuc2gKQEAgLTExMSw2ICsxMTEsMjggQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dyZXAgLS1jYWNoZWQgcmVzcGVjdHMgYmluYXJ5IGRpZmYgYXR0cmlidXRlJyAnCisJZ2l0IGdyZXAgLS1jYWNoZWQgdGV4dCB0ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dyZXAgLS1jYWNoZWQgcmVzcGVjdHMgYmluYXJ5IGRpZmYgYXR0cmlidXRlICgyKScgJworCWdpdCBhZGQgLmdpdGF0dHJpYnV0ZXMgJiYKKwlybSAuZ2l0YXR0cmlidXRlcyAmJgorCWdpdCBncmVwIC0tY2FjaGVkIHRleHQgdCA+YWN0dWFsICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcm0gLS1jYWNoZWQgLmdpdGF0dHJpYnV0ZXMiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY2hlY2tvdXQgLmdpdGF0dHJpYnV0ZXMiICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdncmVwIHJldmlzaW9uIHJlc3BlY3RzIGJpbmFyeSBkaWZmIGF0dHJpYnV0ZScgJworCWdpdCBjb21taXQgLW0gbmV3ICYmCisJZWNobyAiQmluYXJ5IGZpbGUgSEVBRDp0IG1hdGNoZXMiID5leHBlY3QgJiYKKwlnaXQgZ3JlcCB0ZXh0IEhFQUQgLS0gdCA+YWN0dWFsICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmVzZXQgSEVBRF4iICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdncmVwIHJlc3BlY3RzIG5vdC1iaW5hcnkgZGlmZiBhdHRyaWJ1dGUnICcKIAllY2hvIGJpblFhcnkgfCBxX3RvX251bCA+YiAmJgogCWdpdCBhZGQgYiAmJgpkaWZmIC0tZ2l0IGEvdC90NzAxMS1za2lwLXdvcmt0cmVlLXJlYWRpbmcuc2ggYi90L3Q3MDExLXNraXAtd29ya3RyZWUtcmVhZGluZy5zaAppbmRleCA4ZjNiNTRkLi44OGQ2MGMxIDEwMDc1NQotLS0gYS90L3Q3MDExLXNraXAtd29ya3RyZWUtcmVhZGluZy5zaAorKysgYi90L3Q3MDExLXNraXAtd29ya3RyZWUtcmVhZGluZy5zaApAQCAtOTEsMTIgKzkxLDEyIEBACiAJdGVzdF9jbXAgZXhwZWN0ZWQgMQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdscy1maWxlcyAtLWRlbGV0ZScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbHMtZmlsZXMgLS1kZWxldGVkJyAnCiAJc2V0dXBfYWJzZW50ICYmCiAJdGVzdCAteiAiJChnaXQgbHMtZmlsZXMgLWQpIgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdscy1maWxlcyAtLWRlbGV0ZScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbHMtZmlsZXMgLS1kZWxldGVkJyAnCiAJc2V0dXBfZGlydHkgJiYKIAl0ZXN0IC16ICIkKGdpdCBscy1maWxlcyAtZCkiCiAnCmRpZmYgLS1naXQgYS90L3Q3MDYwLXd0c3RhdHVzLnNoIGIvdC90NzA2MC13dHN0YXR1cy5zaAppbmRleCBiOGNiNDkwLi41MmVmMDZiIDEwMDc1NQotLS0gYS90L3Q3MDYwLXd0c3RhdHVzLnNoCisrKyBiL3QvdDcwNjAtd3RzdGF0dXMuc2gKQEAgLTUsNiArNSw3IEBACiAuIC4vdGVzdC1saWIuc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCisJZ2l0IGNvbmZpZyAtLWdsb2JhbCBhZHZpY2Uuc3RhdHVzdW9wdGlvbiBmYWxzZSAmJgogCXRlc3RfY29tbWl0IEEgJiYKIAl0ZXN0X2NvbW1pdCBCIG9uZXNpZGUgYWRkZWQgJiYKIAlnaXQgY2hlY2tvdXQgQV4wICYmCkBAIC0zMCw2ICszMSw5IEBACiAKIGNhdCA+ZXhwZWN0IDw8RU9GCiAjIE9uIGJyYW5jaCBzaWRlCisjIFlvdSBoYXZlIHVubWVyZ2VkIHBhdGhzLgorIyAgIChmaXggY29uZmxpY3RzIGFuZCBydW4gImdpdCBjb21taXQiKQorIwogIyBVbm1lcmdlZCBwYXRoczoKICMgICAodXNlICJnaXQgYWRkL3JtIDxmaWxlPi4uLiIgYXMgYXBwcm9wcmlhdGUgdG8gbWFyayByZXNvbHV0aW9uKQogIwpAQCAtMTE4LDQgKzEyMiw5NyBAQAogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aGVuIGNvbmZsaWN0cyB3aXRoIGFkZCBhbmQgcm0gYWR2aWNlIChkZWxldGVkIGJ5IHRoZW0pJyAnCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwl0ZXN0X2NvbW1pdCBpbml0IG1haW4udHh0IGluaXQgJiYKKwlnaXQgY2hlY2tvdXQgLWIgc2Vjb25kX2JyYW5jaCAmJgorCWdpdCBybSBtYWluLnR4dCAmJgorCWdpdCBjb21taXQgLW0gIm1haW4udHh0IGRlbGV0ZWQgb24gc2Vjb25kX2JyYW5jaCIgJiYKKwl0ZXN0X2NvbW1pdCBzZWNvbmQgY29uZmxpY3QudHh0IHNlY29uZCAmJgorCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwl0ZXN0X2NvbW1pdCBvbl9zZWNvbmQgbWFpbi50eHQgb25fc2Vjb25kICYmCisJdGVzdF9jb21taXQgbWFzdGVyIGNvbmZsaWN0LnR4dCBtYXN0ZXIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2Ugc2Vjb25kX2JyYW5jaCAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgorCSMgT24gYnJhbmNoIG1hc3RlcgorCSMgWW91IGhhdmUgdW5tZXJnZWQgcGF0aHMuCisJIyAgIChmaXggY29uZmxpY3RzIGFuZCBydW4gImdpdCBjb21taXQiKQorCSMKKwkjIFVubWVyZ2VkIHBhdGhzOgorCSMgICAodXNlICJnaXQgYWRkL3JtIDxmaWxlPi4uLiIgYXMgYXBwcm9wcmlhdGUgdG8gbWFyayByZXNvbHV0aW9uKQorCSMKKwkjCWJvdGggYWRkZWQ6ICAgICAgICAgY29uZmxpY3QudHh0CisJIwlkZWxldGVkIGJ5IHRoZW06ICAgIG1haW4udHh0CisJIworCW5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0ICh1c2UgImdpdCBhZGQiIGFuZC9vciAiZ2l0IGNvbW1pdCAtYSIpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ByZXBhcmUgZm9yIGNvbmZsaWN0cycgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgY2hlY2tvdXQgLWIgY29uZmxpY3QgJiYKKwl0ZXN0X2NvbW1pdCBvbmUgbWFpbi50eHQgb25lICYmCisJZ2l0IGJyYW5jaCBjb25mbGljdF9zZWNvbmQgJiYKKwlnaXQgbXYgbWFpbi50eHQgc3ViX21hc3Rlci50eHQgJiYKKwlnaXQgY29tbWl0IC1tICJtYWluLnR4dCByZW5hbWVkIGluIHN1Yl9tYXN0ZXIudHh0IiAmJgorCWdpdCBjaGVja291dCBjb25mbGljdF9zZWNvbmQgJiYKKwlnaXQgbXYgbWFpbi50eHQgc3ViX3NlY29uZC50eHQgJiYKKwlnaXQgY29tbWl0IC1tICJtYWluLnR4dCByZW5hbWVkIGluIHN1Yl9zZWNvbmQudHh0IgorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aGVuIGNvbmZsaWN0cyB3aXRoIGFkZCBhbmQgcm0gYWR2aWNlIChib3RoIGRlbGV0ZWQpJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIGNvbmZsaWN0ICYmCisJY2F0ID5leHBlY3RlZCA8PC1cRU9GICYmCisJIyBPbiBicmFuY2ggY29uZmxpY3Rfc2Vjb25kCisJIyBZb3UgaGF2ZSB1bm1lcmdlZCBwYXRocy4KKwkjICAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biAiZ2l0IGNvbW1pdCIpCisJIworCSMgVW5tZXJnZWQgcGF0aHM6CisJIyAgICh1c2UgImdpdCBhZGQvcm0gPGZpbGU+Li4uIiBhcyBhcHByb3ByaWF0ZSB0byBtYXJrIHJlc29sdXRpb24pCisJIworCSMJYm90aCBkZWxldGVkOiAgICAgICBtYWluLnR4dAorCSMJYWRkZWQgYnkgdGhlbTogICAgICBzdWJfbWFzdGVyLnR4dAorCSMJYWRkZWQgYnkgdXM6ICAgICAgICBzdWJfc2Vjb25kLnR4dAorCSMKKwlubyBjaGFuZ2VzIGFkZGVkIHRvIGNvbW1pdCAodXNlICJnaXQgYWRkIiBhbmQvb3IgImdpdCBjb21taXQgLWEiKQorCUVPRgorCWdpdCBzdGF0dXMgLS11bnRyYWNrZWQtZmlsZXM9bm8gPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3RlZCBhY3R1YWwKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgd2hlbiBjb25mbGljdHMgd2l0aCBvbmx5IHJtIGFkdmljZSAoYm90aCBkZWxldGVkKScgJworCWdpdCByZXNldCAtLWhhcmQgY29uZmxpY3Rfc2Vjb25kICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIGNvbmZsaWN0ICYmCisJZ2l0IGFkZCBzdWJfbWFzdGVyLnR4dCAmJgorCWdpdCBhZGQgc3ViX3NlY29uZC50eHQgJiYKKwljYXQgPmV4cGVjdGVkIDw8LVxFT0YgJiYKKwkjIE9uIGJyYW5jaCBjb25mbGljdF9zZWNvbmQKKwkjIFlvdSBoYXZlIHVubWVyZ2VkIHBhdGhzLgorCSMgICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuICJnaXQgY29tbWl0IikKKwkjCisJIyBDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoKKwkjCisJIwluZXcgZmlsZTogICBzdWJfbWFzdGVyLnR4dAorCSMKKwkjIFVubWVyZ2VkIHBhdGhzOgorCSMgICAodXNlICJnaXQgcm0gPGZpbGU+Li4uIiB0byBtYXJrIHJlc29sdXRpb24pCisJIworCSMJYm90aCBkZWxldGVkOiAgICAgICBtYWluLnR4dAorCSMKKwkjIFVudHJhY2tlZCBmaWxlcyBub3QgbGlzdGVkICh1c2UgLXUgb3B0aW9uIHRvIHNob3cgdW50cmFja2VkIGZpbGVzKQorCUVPRgorCWdpdCBzdGF0dXMgLS11bnRyYWNrZWQtZmlsZXM9bm8gPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3RlZCBhY3R1YWwgJiYKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGNoZWNrb3V0IG1hc3RlcgorJworCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzA2MS13dHN0YXR1cy1pZ25vcmUuc2ggYi90L3Q3MDYxLXd0c3RhdHVzLWlnbm9yZS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40NjA3ODliCi0tLSAvZGV2L251bGwKKysrIGIvdC90NzA2MS13dHN0YXR1cy1pZ25vcmUuc2gKQEAgLTAsMCArMSwyNjUgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3RhdHVzIGlnbm9yZWQgZmlsZXMnCisKKy4gLi90ZXN0LWxpYi5zaAorCitjYXQgPmV4cGVjdGVkIDw8XEVPRgorPz8gLmdpdGlnbm9yZQorPz8gYWN0dWFsCis/PyBleHBlY3RlZAorPz8gdW50cmFja2VkLworRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB1bnRyYWNrZWQgZGlyZWN0b3J5IHdpdGggLS1pZ25vcmVkJyAnCisJZWNobyAiaWdub3JlZCIgPi5naXRpZ25vcmUgJiYKKwlta2RpciB1bnRyYWNrZWQgJiYKKwk6ID51bnRyYWNrZWQvaWdub3JlZCAmJgorCTogPnVudHJhY2tlZC91bmNvbW1pdHRlZCAmJgorCWdpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLS1pZ25vcmVkID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworY2F0ID5leHBlY3RlZCA8PFxFT0YKKz8/IC5naXRpZ25vcmUKKz8/IGFjdHVhbAorPz8gZXhwZWN0ZWQKKz8/IHVudHJhY2tlZC91bmNvbW1pdHRlZAorISEgdW50cmFja2VkL2lnbm9yZWQKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgdW50cmFja2VkIGRpcmVjdG9yeSB3aXRoIC0taWdub3JlZCAtdScgJworCWdpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLS1pZ25vcmVkIC11ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKK2NhdCA+ZXhwZWN0ZWQgPDxcRU9GCis/PyB1bnRyYWNrZWQvdW5jb21taXR0ZWQKKyEhIHVudHJhY2tlZC9pZ25vcmVkCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIHByZWZpeGVkIHVudHJhY2tlZCBkaXJlY3Rvcnkgd2l0aCAtLWlnbm9yZWQnICcKKwlnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0taWdub3JlZCB1bnRyYWNrZWQvID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworY2F0ID5leHBlY3RlZCA8PFxFT0YKKz8/IHVudHJhY2tlZC91bmNvbW1pdHRlZAorISEgdW50cmFja2VkL2lnbm9yZWQKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgcHJlZml4ZWQgdW50cmFja2VkIHN1Yi1kaXJlY3Rvcnkgd2l0aCAtLWlnbm9yZWQgLXUnICcKKwlnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0taWdub3JlZCAtdSB1bnRyYWNrZWQvID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworY2F0ID5leHBlY3RlZCA8PFxFT0YKKz8/IC5naXRpZ25vcmUKKz8/IGFjdHVhbAorPz8gZXhwZWN0ZWQKKyEhIGlnbm9yZWQvCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIGlnbm9yZWQgZGlyZWN0b3J5IHdpdGggLS1pZ25vcmUnICcKKwlybSAtcmYgdW50cmFja2VkICYmCisJbWtkaXIgaWdub3JlZCAmJgorCTogPmlnbm9yZWQvdW5jb21taXR0ZWQgJiYKKwlnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0taWdub3JlZCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxcRU9GCis/PyAuZ2l0aWdub3JlCis/PyBhY3R1YWwKKz8/IGV4cGVjdGVkCishISBpZ25vcmVkL3VuY29tbWl0dGVkCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIGlnbm9yZWQgZGlyZWN0b3J5IHdpdGggLS1pZ25vcmUgLXUnICcKKwlnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0taWdub3JlZCAtdSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxcRU9GCis/PyAuZ2l0aWdub3JlCis/PyBhY3R1YWwKKz8/IGV4cGVjdGVkCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIGVtcHR5IHVudHJhY2tlZCBkaXJlY3Rvcnkgd2l0aCAtLWlnbm9yZScgJworCXJtIC1yZiBpZ25vcmVkICYmCisJbWtkaXIgdW50cmFja2VkLWlnbm9yZWQgJiYKKwlta2RpciB1bnRyYWNrZWQtaWdub3JlZC90ZXN0ICYmCisJZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAtLWlnbm9yZWQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCitjYXQgPmV4cGVjdGVkIDw8XEVPRgorPz8gLmdpdGlnbm9yZQorPz8gYWN0dWFsCis/PyBleHBlY3RlZAorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyBlbXB0eSB1bnRyYWNrZWQgZGlyZWN0b3J5IHdpdGggLS1pZ25vcmUgLXUnICcKKwlnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0taWdub3JlZCAtdSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxcRU9GCis/PyAuZ2l0aWdub3JlCis/PyBhY3R1YWwKKz8/IGV4cGVjdGVkCishISB1bnRyYWNrZWQtaWdub3JlZC8KK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgdW50cmFja2VkIGRpcmVjdG9yeSB3aXRoIGlnbm9yZWQgZmlsZXMgd2l0aCAtLWlnbm9yZScgJworCTogPnVudHJhY2tlZC1pZ25vcmVkL2lnbm9yZWQgJiYKKwk6ID51bnRyYWNrZWQtaWdub3JlZC90ZXN0L2lnbm9yZWQgJiYKKwlnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0taWdub3JlZCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxcRU9GCis/PyAuZ2l0aWdub3JlCis/PyBhY3R1YWwKKz8/IGV4cGVjdGVkCishISB1bnRyYWNrZWQtaWdub3JlZC9pZ25vcmVkCishISB1bnRyYWNrZWQtaWdub3JlZC90ZXN0L2lnbm9yZWQKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgdW50cmFja2VkIGRpcmVjdG9yeSB3aXRoIGlnbm9yZWQgZmlsZXMgd2l0aCAtLWlnbm9yZSAtdScgJworCWdpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLS1pZ25vcmVkIC11ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworY2F0ID5leHBlY3RlZCA8PFxFT0YKKz8/IC5naXRpZ25vcmUKKz8/IGFjdHVhbAorPz8gZXhwZWN0ZWQKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgaWdub3JlZCB0cmFja2VkIGRpcmVjdG9yeSB3aXRoIC0taWdub3JlJyAnCisJcm0gLXJmIHVudHJhY2tlZC1pZ25vcmVkICYmCisJbWtkaXIgdHJhY2tlZCAmJgorCTogPnRyYWNrZWQvY29tbWl0dGVkICYmCisJZ2l0IGFkZCB0cmFja2VkL2NvbW1pdHRlZCAmJgorCWdpdCBjb21taXQgLW0uICYmCisJZWNobyAidHJhY2tlZCIgPi5naXRpZ25vcmUgJiYKKwlnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0taWdub3JlZCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxcRU9GCis/PyAuZ2l0aWdub3JlCis/PyBhY3R1YWwKKz8/IGV4cGVjdGVkCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIGlnbm9yZWQgdHJhY2tlZCBkaXJlY3Rvcnkgd2l0aCAtLWlnbm9yZSAtdScgJworCWdpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLS1pZ25vcmVkIC11ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworY2F0ID5leHBlY3RlZCA8PFxFT0YKKz8/IC5naXRpZ25vcmUKKz8/IGFjdHVhbAorPz8gZXhwZWN0ZWQKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgaWdub3JlZCB0cmFja2VkIGRpcmVjdG9yeSBhbmQgaWdub3JlZCBmaWxlIHdpdGggLS1pZ25vcmUnICcKKwllY2hvICJjb21taXR0ZWQiID4+LmdpdGlnbm9yZSAmJgorCWdpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLS1pZ25vcmVkID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworY2F0ID5leHBlY3RlZCA8PFxFT0YKKz8/IC5naXRpZ25vcmUKKz8/IGFjdHVhbAorPz8gZXhwZWN0ZWQKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgaWdub3JlZCB0cmFja2VkIGRpcmVjdG9yeSBhbmQgaWdub3JlZCBmaWxlIHdpdGggLS1pZ25vcmUgLXUnICcKKwlnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0taWdub3JlZCAtdSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxcRU9GCis/PyAuZ2l0aWdub3JlCis/PyBhY3R1YWwKKz8/IGV4cGVjdGVkCishISB0cmFja2VkL3VuY29tbWl0dGVkCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIGlnbm9yZWQgdHJhY2tlZCBkaXJlY3RvcnkgYW5kIHVuY29tbWl0dGVkIGZpbGUgd2l0aCAtLWlnbm9yZScgJworCWVjaG8gInRyYWNrZWQiID4uZ2l0aWdub3JlICYmCisJOiA+dHJhY2tlZC91bmNvbW1pdHRlZCAmJgorCWdpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLS1pZ25vcmVkID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworY2F0ID5leHBlY3RlZCA8PFxFT0YKKz8/IC5naXRpZ25vcmUKKz8/IGFjdHVhbAorPz8gZXhwZWN0ZWQKKyEhIHRyYWNrZWQvdW5jb21taXR0ZWQKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgaWdub3JlZCB0cmFja2VkIGRpcmVjdG9yeSBhbmQgdW5jb21taXR0ZWQgZmlsZSB3aXRoIC0taWdub3JlIC11JyAnCisJZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAtLWlnbm9yZWQgLXUgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCitjYXQgPmV4cGVjdGVkIDw8XEVPRgorPz8gLmdpdGlnbm9yZQorPz8gYWN0dWFsCis/PyBleHBlY3RlZAorISEgdHJhY2tlZC9pZ25vcmVkLworRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyBpZ25vcmVkIHRyYWNrZWQgZGlyZWN0b3J5IHdpdGggdW5jb21taXR0ZWQgZmlsZSBpbiB1bnRyYWNrZWQgc3ViZGlyIHdpdGggLS1pZ25vcmUnICcKKwlybSAtcmYgdHJhY2tlZC91bmNvbW1pdHRlZCAmJgorCW1rZGlyIHRyYWNrZWQvaWdub3JlZCAmJgorCTogPnRyYWNrZWQvaWdub3JlZC91bmNvbW1pdHRlZCAmJgorCWdpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLS1pZ25vcmVkID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworY2F0ID5leHBlY3RlZCA8PFxFT0YKKz8/IC5naXRpZ25vcmUKKz8/IGFjdHVhbAorPz8gZXhwZWN0ZWQKKyEhIHRyYWNrZWQvaWdub3JlZC91bmNvbW1pdHRlZAorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyBpZ25vcmVkIHRyYWNrZWQgZGlyZWN0b3J5IHdpdGggdW5jb21taXR0ZWQgZmlsZSBpbiB1bnRyYWNrZWQgc3ViZGlyIHdpdGggLS1pZ25vcmUgLXUnICcKKwlnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0taWdub3JlZCAtdSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxcRU9GCis/PyAuZ2l0aWdub3JlCis/PyBhY3R1YWwKKz8/IGV4cGVjdGVkCishISB0cmFja2VkL2lnbm9yZWQvdW5jb21taXR0ZWQKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgaWdub3JlZCB0cmFja2VkIGRpcmVjdG9yeSB3aXRoIHVuY29tbWl0dGVkIGZpbGUgaW4gdHJhY2tlZCBzdWJkaXIgd2l0aCAtLWlnbm9yZScgJworCTogPnRyYWNrZWQvaWdub3JlZC9jb21taXR0ZWQgJiYKKwlnaXQgYWRkIC1mIHRyYWNrZWQvaWdub3JlZC9jb21taXR0ZWQgJiYKKwlnaXQgY29tbWl0IC1tLiAmJgorCWdpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLS1pZ25vcmVkID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworY2F0ID5leHBlY3RlZCA8PFxFT0YKKz8/IC5naXRpZ25vcmUKKz8/IGFjdHVhbAorPz8gZXhwZWN0ZWQKKyEhIHRyYWNrZWQvaWdub3JlZC91bmNvbW1pdHRlZAorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyBpZ25vcmVkIHRyYWNrZWQgZGlyZWN0b3J5IHdpdGggdW5jb21taXR0ZWQgZmlsZSBpbiB0cmFja2VkIHN1YmRpciB3aXRoIC0taWdub3JlIC11JyAnCisJZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAtLWlnbm9yZWQgLXUgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDcwNjItd3RzdGF0dXMtaWdub3JlY2FzZS5zaCBiL3QvdDcwNjItd3RzdGF0dXMtaWdub3JlY2FzZS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43MzcwOWRiCi0tLSAvZGV2L251bGwKKysrIGIvdC90NzA2Mi13dHN0YXR1cy1pZ25vcmVjYXNlLnNoCkBAIC0wLDAgKzEsMjAgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3RhdHVzIHdpdGggY29yZS5pZ25vcmVjYXNlPXRydWUnCisKKy4gLi90ZXN0LWxpYi5zaAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgd2l0aCBoYXNoIGNvbGxpc2lvbnMnICcKKwkjIG5vdGU6ICJWLyIsICJWL1hRQU5ZLyIgYW5kICJXVVJaQVVQLyIgcHJvZHVjZSB0aGUgc2FtZSBoYXNoIGNvZGUKKwkjIGluIG5hbWUtaGFzaC5jOjpoYXNoX25hbWUKKwlta2RpciBWICYmCisJbWtkaXIgVi9YUUFOWSAmJgorCW1rZGlyIFdVUlpBVVAgJiYKKwl0b3VjaCBWL1hRQU5ZL3Rlc3QgJiYKKwlnaXQgY29uZmlnIGNvcmUuaWdub3JlY2FzZSB0cnVlICYmCisJZ2l0IGFkZCAuICYmCisJIyB0ZXN0IGlzIHN1Y2Nlc3NmdWwgaWYgZ2l0IHN0YXR1cyBjb21wbGV0ZXMgKG5vIGVuZGxlc3MgbG9vcCkKKwlnaXQgc3RhdHVzCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzEwMi1yZXNldC5zaCBiL3QvdDcxMDItcmVzZXQuc2gKaW5kZXggYjA5NmRjOC4uZGY4MmVjOSAxMDA3NTUKLS0tIGEvdC90NzEwMi1yZXNldC5zaAorKysgYi90L3Q3MTAyLXJlc2V0LnNoCkBAIC0yOCw3ICsyOCw4IEBACiAKIAllY2hvICIxc3QgbGluZSAybmQgZmlsZSIgPnNlY29uZGZpbGUgJiYKIAllY2hvICIybmQgbGluZSAybmQgZmlsZSIgPj5zZWNvbmRmaWxlICYmCi0JZ2l0IGNvbW1pdCAtYSAtbSAibW9kaWZ5IDJuZCBmaWxlIgorCWdpdCBjb21taXQgLWEgLW0gIm1vZGlmeSAybmQgZmlsZSIgJiYKKwloZWFkNT0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkKICcKICMgZ2l0IGxvZyAtLXByZXR0eT1vbmVsaW5lICMgdG8gc2VlIHRob3NlIFNIQTEgaW52b2x2ZWQKIApAQCAtNTYsNyArNTcsNyBAQAogCXRlc3RfbXVzdF9mYWlsIGdpdCByZXNldCAtLW1peGVkIGFhYWFhYSAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZXNldCAtLXNvZnQgYWFhYWFhICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlc2V0IC0taGFyZCBhYWFhYWEgJiYKLQljaGVja19jaGFuZ2VzIDNlYzM5NjUxZTdmNDRlYTUzMWE1ZGUxOGE5ZmE3OTFjMGZkMzcwZmMKKwljaGVja19jaGFuZ2VzICRoZWFkNQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXNldCAtLXNvZnQgd2l0aCB1bm1lcmdlZCBpbmRleCBzaG91bGQgZmFpbCcgJwpAQCAtNzQsNyArNzUsNyBAQAogCXRlc3RfbXVzdF9mYWlsIGdpdCByZXNldCAtLWhhcmQgLS0gZmlyc3QgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmVzZXQgLS1zb2Z0IEhFQUReIC0tIGZpcnN0ICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlc2V0IC0taGFyZCBIRUFEXiAtLSBmaXJzdCAmJgotCWNoZWNrX2NoYW5nZXMgM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYworCWNoZWNrX2NoYW5nZXMgJGhlYWQ1CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdmluZyB1bnJlY29nbml6ZWQgb3B0aW9ucyBzaG91bGQgZmFpbCcgJwpAQCAtODYsNyArODcsNyBAQAogCXRlc3RfbXVzdF9mYWlsIGdpdCByZXNldCAtLXNvZnQgLW8gJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmVzZXQgLS1oYXJkIC0tb3RoZXIgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmVzZXQgLS1oYXJkIC1vICYmCi0JY2hlY2tfY2hhbmdlcyAzZWMzOTY1MWU3ZjQ0ZWE1MzFhNWRlMThhOWZhNzkxYzBmZDM3MGZjCisJY2hlY2tfY2hhbmdlcyAkaGVhZDUKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCkBAIC0xMTAsNyArMTExLDcgQEAKIAogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAlnaXQgYnJhbmNoIC1EIGJyYW5jaDEgYnJhbmNoMiAmJgotCWNoZWNrX2NoYW5nZXMgM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYworCWNoZWNrX2NoYW5nZXMgJGhlYWQ1CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXApAQCAtMTMzLDI3ICsxMzQsMjcgQEAKIAogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAlnaXQgYnJhbmNoIC1EIGJyYW5jaDMgYnJhbmNoNCAmJgotCWNoZWNrX2NoYW5nZXMgM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYworCWNoZWNrX2NoYW5nZXMgJGhlYWQ1CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdyZXNldHRpbmcgdG8gSEVBRCB3aXRoIG5vIGNoYW5nZXMgc2hvdWxkIHN1Y2NlZWQgYW5kIGRvIG5vdGhpbmcnICcKIAlnaXQgcmVzZXQgLS1oYXJkICYmCi0JCWNoZWNrX2NoYW5nZXMgM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYyAmJgorCQljaGVja19jaGFuZ2VzICRoZWFkNSAmJgogCWdpdCByZXNldCAtLWhhcmQgSEVBRCAmJgotCQljaGVja19jaGFuZ2VzIDNlYzM5NjUxZTdmNDRlYTUzMWE1ZGUxOGE5ZmE3OTFjMGZkMzcwZmMgJiYKKwkJY2hlY2tfY2hhbmdlcyAkaGVhZDUgJiYKIAlnaXQgcmVzZXQgLS1zb2Z0ICYmCi0JCWNoZWNrX2NoYW5nZXMgM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYyAmJgorCQljaGVja19jaGFuZ2VzICRoZWFkNSAmJgogCWdpdCByZXNldCAtLXNvZnQgSEVBRCAmJgotCQljaGVja19jaGFuZ2VzIDNlYzM5NjUxZTdmNDRlYTUzMWE1ZGUxOGE5ZmE3OTFjMGZkMzcwZmMgJiYKKwkJY2hlY2tfY2hhbmdlcyAkaGVhZDUgJiYKIAlnaXQgcmVzZXQgLS1taXhlZCAmJgotCQljaGVja19jaGFuZ2VzIDNlYzM5NjUxZTdmNDRlYTUzMWE1ZGUxOGE5ZmE3OTFjMGZkMzcwZmMgJiYKKwkJY2hlY2tfY2hhbmdlcyAkaGVhZDUgJiYKIAlnaXQgcmVzZXQgLS1taXhlZCBIRUFEICYmCi0JCWNoZWNrX2NoYW5nZXMgM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYyAmJgorCQljaGVja19jaGFuZ2VzICRoZWFkNSAmJgogCWdpdCByZXNldCAmJgotCQljaGVja19jaGFuZ2VzIDNlYzM5NjUxZTdmNDRlYTUzMWE1ZGUxOGE5ZmE3OTFjMGZkMzcwZmMgJiYKKwkJY2hlY2tfY2hhbmdlcyAkaGVhZDUgJiYKIAlnaXQgcmVzZXQgSEVBRCAmJgotCQljaGVja19jaGFuZ2VzIDNlYzM5NjUxZTdmNDRlYTUzMWE1ZGUxOGE5ZmE3OTFjMGZkMzcwZmMKKwkJY2hlY2tfY2hhbmdlcyAkaGVhZDUKICcKIAogPi5kaWZmX2V4cGVjdApAQCAtMTc2LDcgKzE3Nyw3IEBACiAJZ2l0IHJlc2V0IC0tc29mdCBIRUFEXiAmJgogCWNoZWNrX2NoYW5nZXMgZDFhNGJjM2FiY2U0ODI5NjI4YWUyZGNiMGQ2MGVmM2QxYTc4YjFjNCAmJgogCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBPUklHX0hFQUQpIiA9IFwKLQkJCTNlYzM5NjUxZTdmNDRlYTUzMWE1ZGUxOGE5ZmE3OTFjMGZkMzcwZmMKKwkJCSRoZWFkNQogJwogCiA+LmRpZmZfZXhwZWN0CkBAIC0xOTMsNyArMTk0LDcgQEAKIAlnaXQgY29tbWl0IC1hIC1DIE9SSUdfSEVBRCAmJgogCWNoZWNrX2NoYW5nZXMgM2QzYjdiZTAxMWE1OGNhMGMxNzlhZTQ1ZDk0ZTZjODNjMGIwY2QwZCAmJgogCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBPUklHX0hFQUQpIiA9IFwKLQkJCTNlYzM5NjUxZTdmNDRlYTUzMWE1ZGUxOGE5ZmE3OTFjMGZkMzcwZmMKKwkJCSRoZWFkNQogJwogCiA+LmRpZmZfZXhwZWN0CkBAIC0zMDMsNyArMzA0LDcgQEAKIAllY2hvICIxc3QgbGluZSAybmQgZmlsZSIgPnNlY29uZGZpbGUgJiYKIAllY2hvICIybmQgbGluZSAybmQgZmlsZSIgPj5zZWNvbmRmaWxlICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSAibW9kaWZ5IDJuZCBmaWxlIiAmJgotCWNoZWNrX2NoYW5nZXMgM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYworCWNoZWNrX2NoYW5nZXMgJGhlYWQ1CiAnCiAKID4uZGlmZl9leHBlY3QKQEAgLTM0MSwxNSArMzQyLDE1IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknLS1oYXJkIHJlc2V0IHRvIE9SSUdfSEVBRCBzaG91bGQgY2xlYXIgYSBmYXN0LWZvcndhcmQgbWVyZ2UnICcKIAlnaXQgcmVzZXQgLS1oYXJkIEhFQUReICYmCi0JY2hlY2tfY2hhbmdlcyAzZWMzOTY1MWU3ZjQ0ZWE1MzFhNWRlMThhOWZhNzkxYzBmZDM3MGZjICYmCisJY2hlY2tfY2hhbmdlcyAkaGVhZDUgJiYKIAogCWdpdCBwdWxsIC4gYnJhbmNoMSAmJgogCWdpdCByZXNldCAtLWhhcmQgT1JJR19IRUFEICYmCi0JY2hlY2tfY2hhbmdlcyAzZWMzOTY1MWU3ZjQ0ZWE1MzFhNWRlMThhOWZhNzkxYzBmZDM3MGZjICYmCisJY2hlY2tfY2hhbmdlcyAkaGVhZDUgJiYKIAogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAlnaXQgYnJhbmNoIC1EIGJyYW5jaDEgYnJhbmNoMiAmJgotCWNoZWNrX2NoYW5nZXMgM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYworCWNoZWNrX2NoYW5nZXMgJGhlYWQ1CiAnCiAKIGNhdCA+IGV4cGVjdCA8PCBFT0YKQEAgLTM4OCw3ICszODksOCBAQAogCWVjaG8gNCA+IGZpbGU0ICYmCiAJZWNobyA1ID4gZmlsZTEgJiYKIAlnaXQgYWRkIGZpbGUxIGZpbGUzIGZpbGU0ICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlc2V0IEhFQUQgLS0gZmlsZTEgZmlsZTIgZmlsZTMgJiYKKwlnaXQgcmVzZXQgSEVBRCAtLSBmaWxlMSBmaWxlMiBmaWxlMyAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBkaWZmIC0tcXVpZXQgJiYKIAlnaXQgZGlmZiA+IG91dHB1dCAmJgogCXRlc3RfY21wIG91dHB1dCBleHBlY3QgJiYKIAlnaXQgZGlmZiAtLWNhY2hlZCA+IG91dHB1dCAmJgpAQCAtNDAyLDcgKzQwNCw4IEBACiAJPnN1Yi9maWxlMiAmJgogCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgc3ViL2ZpbGUxIHN1Yi9maWxlMiAmJgogCVQ9JChnaXQgd3JpdGUtdHJlZSkgJiYKLQl0ZXN0X211c3RfZmFpbCBnaXQgcmVzZXQgSEVBRCBzdWIvZmlsZTIgJiYKKwlnaXQgcmVzZXQgSEVBRCBzdWIvZmlsZTIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgZGlmZiAtLXF1aWV0ICYmCiAJVT0kKGdpdCB3cml0ZS10cmVlKSAmJgogCWVjaG8gIiRUIiAmJgogCWVjaG8gIiRVIiAmJgpAQCAtNDQwLDcgKzQ0Myw4IEBACiAJCWVjaG8gIjEwMDY0NCAkRjMgMwlmaWxlMiIKIAl9IHwgZ2l0IHVwZGF0ZS1pbmRleCAtLWluZGV4LWluZm8gJiYKIAlnaXQgbHMtZmlsZXMgLXUgJiYKLQl0ZXN0X211c3RfZmFpbCBnaXQgcmVzZXQgSEVBRCBmaWxlMiAmJgorCWdpdCByZXNldCBIRUFEIGZpbGUyICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGRpZmYgLS1xdWlldCAmJgogCWdpdCBkaWZmLWluZGV4IC0tZXhpdC1jb2RlIC0tY2FjaGVkIEhFQUQKICcKIApAQCAtNDQ5LDcgKzQ1Myw4IEBACiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCT5zZWNvbmRmaWxlICYmCiAJZ2l0IGFkZCBzZWNvbmRmaWxlICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlc2V0IHNlY29uZGZpbGUgJiYKKwlnaXQgcmVzZXQgc2Vjb25kZmlsZSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBkaWZmIC0tcXVpZXQgLS0gc2Vjb25kZmlsZSAmJgogCXRlc3QgLXogIiQoZ2l0IGRpZmYgLS1jYWNoZWQgLS1uYW1lLW9ubHkpIiAmJgogCXRlc3QgLWYgc2Vjb25kZmlsZSAmJgogCXRlc3QgISAtcyBzZWNvbmRmaWxlCkBAIC00NzQsNyArNDc5LDggQEAKIAk+c2Vjb25kZmlsZSAmJgogCWdpdCBhZGQgc2Vjb25kZmlsZSAmJgogCXJtIC1mIHNlY29uZGZpbGUgJiYKLQl0ZXN0X211c3RfZmFpbCBnaXQgcmVzZXQgSEVBRCBzZWNvbmRmaWxlICYmCisJZ2l0IHJlc2V0IEhFQUQgc2Vjb25kZmlsZSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBkaWZmIC0tcXVpZXQgJiYKIAl0ZXN0IC16ICIkKGdpdCBkaWZmIC0tY2FjaGVkIC0tbmFtZS1vbmx5KSIgJiYKIAl0ZXN0ICEgLWYgc2Vjb25kZmlsZQogCkBAIC00ODYsOSArNDkyLDE4IEBACiAJPnNlY29uZGZpbGUgJiYKIAlnaXQgYWRkIHNlY29uZGZpbGUgJiYKIAlybSAtZiBzZWNvbmRmaWxlICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlc2V0IC0tIHNlY29uZGZpbGUgJiYKKwlnaXQgcmVzZXQgLS0gc2Vjb25kZmlsZSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBkaWZmIC0tcXVpZXQgJiYKIAl0ZXN0IC16ICIkKGdpdCBkaWZmIC0tY2FjaGVkIC0tbmFtZS1vbmx5KSIgJiYKIAl0ZXN0ICEgLWYgc2Vjb25kZmlsZQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXNldCB3aXRoIHBhdGhzIGFjY2VwdHMgdHJlZScgJworCSMgZm9yIHNpbXBsZXIgdGVzdHMsIGRyb3AgbGFzdCBjb21taXQgY29udGFpbmluZyBhZGRlZCBmaWxlcworCWdpdCByZXNldCAtLWhhcmQgSEVBRF4gJiYKKwlnaXQgcmVzZXQgSEVBRF5ee3RyZWV9IC0tIC4gJiYKKwlnaXQgZGlmZiAtLWNhY2hlZCBIRUFEXiAtLWV4aXQtY29kZSAmJgorCWdpdCBkaWZmIEhFQUQgLS1leGl0LWNvZGUKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3MTA2LXJlc2V0LXVuYm9ybi1icmFuY2guc2ggYi90L3Q3MTA2LXJlc2V0LXVuYm9ybi1icmFuY2guc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODA2MmNmNQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDcxMDYtcmVzZXQtdW5ib3JuLWJyYW5jaC5zaApAQCAtMCwwICsxLDUyIEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHJlc2V0IHNob3VsZCB3b3JrIG9uIHVuYm9ybiBicmFuY2gnCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKwllY2hvIGEgPmEgJiYKKwllY2hvIGIgPmIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVzZXQnICcKKwlnaXQgYWRkIGEgYiAmJgorCWdpdCByZXNldCAmJgorCXRlc3QgIiQoZ2l0IGxzLWZpbGVzKSIgPSAiIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXNldCBIRUFEJyAnCisJcm0gLmdpdC9pbmRleCAmJgorCWdpdCBhZGQgYSBiICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlc2V0IEhFQUQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVzZXQgJGZpbGUnICcKKwlybSAuZ2l0L2luZGV4ICYmCisJZ2l0IGFkZCBhIGIgJiYKKwlnaXQgcmVzZXQgYSAmJgorCXRlc3QgIiQoZ2l0IGxzLWZpbGVzKSIgPSAiYiIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVzZXQgLXAnICcKKwlybSAuZ2l0L2luZGV4ICYmCisJZ2l0IGFkZCBhICYmCisJZWNobyB5IHwgZ2l0IHJlc2V0IC1wICYmCisJdGVzdCAiJChnaXQgbHMtZmlsZXMpIiA9ICIiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jlc2V0IC0tc29mdCBpcyBhIG5vLW9wJyAnCisJcm0gLmdpdC9pbmRleCAmJgorCWdpdCBhZGQgYSAmJgorCWdpdCByZXNldCAtLXNvZnQKKwl0ZXN0ICIkKGdpdCBscy1maWxlcykiID0gImEiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jlc2V0IC0taGFyZCcgJworCXJtIC5naXQvaW5kZXggJiYKKwlnaXQgYWRkIGEgJiYKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJdGVzdCAiJChnaXQgbHMtZmlsZXMpIiA9ICIiICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgYQorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDcyMDEtY28uc2ggYi90L3Q3MjAxLWNvLnNoCmluZGV4IGJlOTY3MmUuLjBjOWVjMGEgMTAwNzU1Ci0tLSBhL3QvdDcyMDEtY28uc2gKKysrIGIvdC90NzIwMS1jby5zaApAQCAtNDMxLDYgKzQzMSw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdjaGVja291dCB3aXRoIC0tdHJhY2sgZmFrZXMgYSBzZW5zaWJsZSAtYiA8bmFtZT4nICcKKyAgICBnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4uZmV0Y2ggIityZWZzL2hlYWRzLyo6cmVmcy9yZW1vdGVzL29yaWdpbi8qIiAmJgogICAgIGdpdCB1cGRhdGUtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4va29hbGEvYmVhciByZW5hbWVyICYmCiAKICAgICBnaXQgY2hlY2tvdXQgLS10cmFjayBvcmlnaW4va29hbGEvYmVhciAmJgpkaWZmIC0tZ2l0IGEvdC90NzMwMC1jbGVhbi5zaCBiL3QvdDczMDAtY2xlYW4uc2gKaW5kZXggY2NmYjU0ZC4uNzEwYmU5MCAxMDA3NTUKLS0tIGEvdC90NzMwMC1jbGVhbi5zaAorKysgYi90L3Q3MzAwLWNsZWFuLnNoCkBAIC0yOTgsNiArMjk4LDIzIEBACiAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGNsZWFuIC1kIC14IHdpdGggaWdub3JlZCB0cmFja2VkIGRpcmVjdG9yeScgJworCisJbWtkaXIgLXAgYnVpbGQgZG9jcyAmJgorCXRvdWNoIGEub3V0IHNyYy9wYXJ0My5jIGRvY3MvbWFudWFsLnR4dCBvYmoubyBidWlsZC9saWIuc28gJiYKKwlnaXQgY2xlYW4gLWQgLXggLWUgc3JjICYmCisJdGVzdCAtZiBNYWtlZmlsZSAmJgorCXRlc3QgLWYgUkVBRE1FICYmCisJdGVzdCAtZiBzcmMvcGFydDEuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQyLmMgJiYKKwl0ZXN0ICEgLWYgYS5vdXQgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0My5jICYmCisJdGVzdCAhIC1kIGRvY3MgJiYKKwl0ZXN0ICEgLWYgb2JqLm8gJiYKKwl0ZXN0ICEgLWQgYnVpbGQKKworJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgY2xlYW4gLVgnICcKIAogCW1rZGlyIC1wIGJ1aWxkIGRvY3MgJiYKQEAgLTMzMiw2ICszNDksMjMgQEAKIAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgY2xlYW4gLWQgLVggd2l0aCBpZ25vcmVkIHRyYWNrZWQgZGlyZWN0b3J5JyAnCisKKwlta2RpciAtcCBidWlsZCBkb2NzICYmCisJdG91Y2ggYS5vdXQgc3JjL3BhcnQzLmMgZG9jcy9tYW51YWwudHh0IG9iai5vIGJ1aWxkL2xpYi5zbyAmJgorCWdpdCBjbGVhbiAtZCAtWCAtZSBzcmMgJiYKKwl0ZXN0IC1mIE1ha2VmaWxlICYmCisJdGVzdCAtZiBSRUFETUUgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0MS5jICYmCisJdGVzdCAtZiBzcmMvcGFydDIuYyAmJgorCXRlc3QgLWYgYS5vdXQgJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQzLmMgJiYKKwl0ZXN0IC1mIGRvY3MvbWFudWFsLnR4dCAmJgorCXRlc3QgISAtZiBvYmoubyAmJgorCXRlc3QgISAtZCBidWlsZAorCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFuLnJlcXVpcmVGb3JjZSBkZWZhdWx0cyB0byB0cnVlJyAnCiAKIAlnaXQgY29uZmlnIC0tdW5zZXQgY2xlYW4ucmVxdWlyZUZvcmNlICYmCmRpZmYgLS1naXQgYS90L3Q3NDAwLXN1Ym1vZHVsZS1iYXNpYy5zaCBiL3QvdDc0MDAtc3VibW9kdWxlLWJhc2ljLnNoCmluZGV4IDgxODI3ZTYuLjdlMjM0MjEgMTAwNzU1Ci0tLSBhL3QvdDc0MDAtc3VibW9kdWxlLWJhc2ljLnNoCisrKyBiL3QvdDc0MDAtc3VibW9kdWxlLWJhc2ljLnNoCkBAIC0xMzMsNiArMTMzLDcgQEAKIAkoCiAJCWNkIGFkZHRlc3QgJiYKIAkJZ2l0IHN1Ym1vZHVsZSBhZGQgLWIgaW5pdGlhbCAiJHN1Ym1vZHVybCIgc3VibW9kLWJyYW5jaCAmJgorCQl0ZXN0ICJpbml0aWFsIiA9ICIkKGdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLnN1Ym1vZC1icmFuY2guYnJhbmNoKSIgJiYKIAkJZ2l0IHN1Ym1vZHVsZSBpbml0CiAJKSAmJgogCkBAIC0yNTgsNiArMjU5LDI3IEBACiAJdGVzdF9jbXAgZXhwZWN0IHVybAogJwogCit0ZXN0X2ZhaWx1cmVfd2l0aF91bmtub3duX3N1Ym1vZHVsZSAoKSB7CisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN1Ym1vZHVsZSAkMSBuby1zdWNoLXN1Ym1vZHVsZSAyPm91dHB1dC5lcnIgJiYKKwlncmVwICJeZXJyb3I6IC4qbm8tc3VjaC1zdWJtb2R1bGUiIG91dHB1dC5lcnIKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdCBzaG91bGQgZmFpbCB3aXRoIHVua25vd24gc3VibW9kdWxlJyAnCisJdGVzdF9mYWlsdXJlX3dpdGhfdW5rbm93bl9zdWJtb2R1bGUgaW5pdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd1cGRhdGUgc2hvdWxkIGZhaWwgd2l0aCB1bmtub3duIHN1Ym1vZHVsZScgJworCXRlc3RfZmFpbHVyZV93aXRoX3Vua25vd25fc3VibW9kdWxlIHVwZGF0ZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgc2hvdWxkIGZhaWwgd2l0aCB1bmtub3duIHN1Ym1vZHVsZScgJworCXRlc3RfZmFpbHVyZV93aXRoX3Vua25vd25fc3VibW9kdWxlIHN0YXR1cworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzeW5jIHNob3VsZCBmYWlsIHdpdGggdW5rbm93biBzdWJtb2R1bGUnICcKKwl0ZXN0X2ZhaWx1cmVfd2l0aF91bmtub3duX3N1Ym1vZHVsZSBzeW5jCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3VwZGF0ZSBzaG91bGQgZmFpbCB3aGVuIHBhdGggaXMgdXNlZCBieSBhIGZpbGUnICcKIAllY2hvIGhlbGxvID5leHBlY3QgJiYKIApAQCAtNDE3LDExICs0MzksOCBAQAogCWdpdCBjaGVja291dCBzZWNvbmQKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIDxpbnZhbGlkLXBhdGg+IHdhcm5zJyAnCi0KLQlnaXQgc3VibW9kdWxlIG5vLXN1Y2gtc3VibW9kdWxlIDI+IG91dHB1dC5lcnIgJiYKLQlncmVwICJeZXJyb3I6IC4qbm8tc3VjaC1zdWJtb2R1bGUiIG91dHB1dC5lcnIKLQordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIDxpbnZhbGlkLXN1YmNvbW1hbmQ+IGZhaWxzJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN1Ym1vZHVsZSBuby1zdWNoLXN1YmNvbW1hbmQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIHN1Ym1vZHVsZXMgd2l0aG91dCBzcGVjaWZ5aW5nIGFuIGV4cGxpY2l0IHBhdGgnICcKQEAgLTQ4MywyMSArNTAyLDcyIEBACiAJCWdpdCBhZGQgc3ViICYmCiAJCWdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLnN1Yi5wYXRoIHN1YiAmJgogCQlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS5zdWIudXJsIC4uL3N1YnJlcG8gJiYKLQkJY3AgLmdpdC9jb25maWcgcHJpc3RpbmUtLmdpdC1jb25maWcKKwkJY3AgLmdpdC9jb25maWcgcHJpc3RpbmUtLmdpdC1jb25maWcgJiYKKwkJY3AgLmdpdG1vZHVsZXMgcHJpc3RpbmUtLmdpdG1vZHVsZXMKIAkpCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbGF0aXZlIHBhdGggd29ya3Mgd2l0aCBVUkwnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy4uL3N1YnJlcG8gd29ya3Mgd2l0aCBVUkwgLSBzc2g6Ly9ob3N0bmFtZS9yZXBvJyAnCiAJKAogCQljZCByZWx0ZXN0ICYmCiAJCWNwIHByaXN0aW5lLS5naXQtY29uZmlnIC5naXQvY29uZmlnICYmCisJCWNwIHByaXN0aW5lLS5naXRtb2R1bGVzIC5naXRtb2R1bGVzICYmCiAJCWdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwgc3NoOi8vaG9zdG5hbWUvcmVwbyAmJgogCQlnaXQgc3VibW9kdWxlIGluaXQgJiYKIAkJdGVzdCAiJChnaXQgY29uZmlnIHN1Ym1vZHVsZS5zdWIudXJsKSIgPSBzc2g6Ly9ob3N0bmFtZS9zdWJyZXBvCiAJKQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWxhdGl2ZSBwYXRoIHdvcmtzIHdpdGggdXNlckBob3N0OnBhdGgnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy4uL3N1YnJlcG8gd29ya3Mgd2l0aCBwb3J0LXF1YWxpZmllZCBVUkwgLSBzc2g6Ly9ob3N0bmFtZToyMi9yZXBvJyAnCisJKAorCQljZCByZWx0ZXN0ICYmCisJCWNwIHByaXN0aW5lLS5naXQtY29uZmlnIC5naXQvY29uZmlnICYmCisJCWNwIHByaXN0aW5lLS5naXRtb2R1bGVzIC5naXRtb2R1bGVzICYmCisJCWdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwgc3NoOi8vaG9zdG5hbWU6MjIvcmVwbyAmJgorCQlnaXQgc3VibW9kdWxlIGluaXQgJiYKKwkJdGVzdCAiJChnaXQgY29uZmlnIHN1Ym1vZHVsZS5zdWIudXJsKSIgPSBzc2g6Ly9ob3N0bmFtZToyMi9zdWJyZXBvCisJKQorJworCisjIEFib3V0IHRoZSBjaG9pY2Ugb2YgdGhlIHBhdGggaW4gdGhlIG5leHQgdGVzdDoKKyMgLSBkb3VibGUtc2xhc2ggc2lkZS1zdGVwcyBwYXRoIG1hbmdsaW5nIGlzc3VlcyBvbiBXaW5kb3dzCisjIC0gaXQgaXMgc3RpbGwgYW4gYWJzb2x1dGUgbG9jYWwgcGF0aAorIyAtIHRoZXJlIGNhbm5vdCBiZSBhIHNlcnZlciB3aXRoIGEgYmxhbmsgaW4gaXRzIG5hbWUganVzdCBpbiBjYXNlIHRoZQorIyAgIHBhdGggaXMgdXNlZCBlcnJvbmVvdXNseSB0byBhY2Nlc3MgYSAvL3NlcnZlci9zaGFyZSBzdHlsZSBwYXRoCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcuLi9zdWJyZXBvIHBhdGggd29ya3Mgd2l0aCBsb2NhbCBwYXRoIC0gLy9zb21ld2hlcmUgZWxzZS9yZXBvJyAnCisJKAorCQljZCByZWx0ZXN0ICYmCisJCWNwIHByaXN0aW5lLS5naXQtY29uZmlnIC5naXQvY29uZmlnICYmCisJCWNwIHByaXN0aW5lLS5naXRtb2R1bGVzIC5naXRtb2R1bGVzICYmCisJCWdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwgIi8vc29tZXdoZXJlIGVsc2UvcmVwbyIgJiYKKwkJZ2l0IHN1Ym1vZHVsZSBpbml0ICYmCisJCXRlc3QgIiQoZ2l0IGNvbmZpZyBzdWJtb2R1bGUuc3ViLnVybCkiID0gIi8vc29tZXdoZXJlIGVsc2Uvc3VicmVwbyIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy4uL3N1YnJlcG8gd29ya3Mgd2l0aCBmaWxlIFVSTCAtIGZpbGU6Ly8vdG1wL3JlcG8nICcKKwkoCisJCWNkIHJlbHRlc3QgJiYKKwkJY3AgcHJpc3RpbmUtLmdpdC1jb25maWcgLmdpdC9jb25maWcgJiYKKwkJY3AgcHJpc3RpbmUtLmdpdG1vZHVsZXMgLmdpdG1vZHVsZXMgJiYKKwkJZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCBmaWxlOi8vL3RtcC9yZXBvICYmCisJCWdpdCBzdWJtb2R1bGUgaW5pdCAmJgorCQl0ZXN0ICIkKGdpdCBjb25maWcgc3VibW9kdWxlLnN1Yi51cmwpIiA9IGZpbGU6Ly8vdG1wL3N1YnJlcG8KKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy4uL3N1YnJlcG8gd29ya3Mgd2l0aCBoZWxwZXIgVVJMLSBoZWxwZXI6Oi8vaG9zdG5hbWUvcmVwbycgJworCSgKKwkJY2QgcmVsdGVzdCAmJgorCQljcCBwcmlzdGluZS0uZ2l0LWNvbmZpZyAuZ2l0L2NvbmZpZyAmJgorCQljcCBwcmlzdGluZS0uZ2l0bW9kdWxlcyAuZ2l0bW9kdWxlcyAmJgorCQlnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsIGhlbHBlcjo6Ly9ob3N0bmFtZS9yZXBvICYmCisJCWdpdCBzdWJtb2R1bGUgaW5pdCAmJgorCQl0ZXN0ICIkKGdpdCBjb25maWcgc3VibW9kdWxlLnN1Yi51cmwpIiA9IGhlbHBlcjo6Ly9ob3N0bmFtZS9zdWJyZXBvCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcuLi9zdWJyZXBvIHdvcmtzIHdpdGggc2NwLXN0eWxlIFVSTCAtIHVzZXJAaG9zdDpyZXBvJyAnCiAJKAogCQljZCByZWx0ZXN0ICYmCiAJCWNwIHByaXN0aW5lLS5naXQtY29uZmlnIC5naXQvY29uZmlnICYmCkBAIC01MDcsNiArNTc3LDk4IEBACiAJKQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcuLi9zdWJyZXBvIHdvcmtzIHdpdGggc2NwLXN0eWxlIFVSTCAtIHVzZXJAaG9zdDpwYXRoL3RvL3JlcG8nICcKKwkoCisJCWNkIHJlbHRlc3QgJiYKKwkJY3AgcHJpc3RpbmUtLmdpdC1jb25maWcgLmdpdC9jb25maWcgJiYKKwkJY3AgcHJpc3RpbmUtLmdpdG1vZHVsZXMgLmdpdG1vZHVsZXMgJiYKKwkJZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCB1c2VyQGhvc3Q6cGF0aC90by9yZXBvICYmCisJCWdpdCBzdWJtb2R1bGUgaW5pdCAmJgorCQl0ZXN0ICIkKGdpdCBjb25maWcgc3VibW9kdWxlLnN1Yi51cmwpIiA9IHVzZXJAaG9zdDpwYXRoL3RvL3N1YnJlcG8KKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy4uL3N1YnJlcG8gd29ya3Mgd2l0aCByZWxhdGl2ZSBsb2NhbCBwYXRoIC0gZm9vJyAnCisJKAorCQljZCByZWx0ZXN0ICYmCisJCWNwIHByaXN0aW5lLS5naXQtY29uZmlnIC5naXQvY29uZmlnICYmCisJCWNwIHByaXN0aW5lLS5naXRtb2R1bGVzIC5naXRtb2R1bGVzICYmCisJCWdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwgZm9vICYmCisJCSMgYWN0dWFsOiBmYWlscyB3aXRoIGFuIGVycm9yCisJCWdpdCBzdWJtb2R1bGUgaW5pdCAmJgorCQl0ZXN0ICIkKGdpdCBjb25maWcgc3VibW9kdWxlLnN1Yi51cmwpIiA9IHN1YnJlcG8KKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy4uL3N1YnJlcG8gd29ya3Mgd2l0aCByZWxhdGl2ZSBsb2NhbCBwYXRoIC0gZm9vL2JhcicgJworCSgKKwkJY2QgcmVsdGVzdCAmJgorCQljcCBwcmlzdGluZS0uZ2l0LWNvbmZpZyAuZ2l0L2NvbmZpZyAmJgorCQljcCBwcmlzdGluZS0uZ2l0bW9kdWxlcyAuZ2l0bW9kdWxlcyAmJgorCQlnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsIGZvby9iYXIgJiYKKwkJZ2l0IHN1Ym1vZHVsZSBpbml0ICYmCisJCXRlc3QgIiQoZ2l0IGNvbmZpZyBzdWJtb2R1bGUuc3ViLnVybCkiID0gZm9vL3N1YnJlcG8KKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy4uL3N1YnJlcG8gd29ya3Mgd2l0aCByZWxhdGl2ZSBsb2NhbCBwYXRoIC0gLi9mb28nICcKKwkoCisJCWNkIHJlbHRlc3QgJiYKKwkJY3AgcHJpc3RpbmUtLmdpdC1jb25maWcgLmdpdC9jb25maWcgJiYKKwkJY3AgcHJpc3RpbmUtLmdpdG1vZHVsZXMgLmdpdG1vZHVsZXMgJiYKKwkJZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCAuL2ZvbyAmJgorCQlnaXQgc3VibW9kdWxlIGluaXQgJiYKKwkJdGVzdCAiJChnaXQgY29uZmlnIHN1Ym1vZHVsZS5zdWIudXJsKSIgPSBzdWJyZXBvCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcuLi9zdWJyZXBvIHdvcmtzIHdpdGggcmVsYXRpdmUgbG9jYWwgcGF0aCAtIC4vZm9vL2JhcicgJworCSgKKwkJY2QgcmVsdGVzdCAmJgorCQljcCBwcmlzdGluZS0uZ2l0LWNvbmZpZyAuZ2l0L2NvbmZpZyAmJgorCQljcCBwcmlzdGluZS0uZ2l0bW9kdWxlcyAuZ2l0bW9kdWxlcyAmJgorCQlnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsIC4vZm9vL2JhciAmJgorCQlnaXQgc3VibW9kdWxlIGluaXQgJiYKKwkJdGVzdCAiJChnaXQgY29uZmlnIHN1Ym1vZHVsZS5zdWIudXJsKSIgPSBmb28vc3VicmVwbworCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLi4vc3VicmVwbyB3b3JrcyB3aXRoIHJlbGF0aXZlIGxvY2FsIHBhdGggLSAuLi9mb28nICcKKwkoCisJCWNkIHJlbHRlc3QgJiYKKwkJY3AgcHJpc3RpbmUtLmdpdC1jb25maWcgLmdpdC9jb25maWcgJiYKKwkJY3AgcHJpc3RpbmUtLmdpdG1vZHVsZXMgLmdpdG1vZHVsZXMgJiYKKwkJZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCAuLi9mb28gJiYKKwkJZ2l0IHN1Ym1vZHVsZSBpbml0ICYmCisJCXRlc3QgIiQoZ2l0IGNvbmZpZyBzdWJtb2R1bGUuc3ViLnVybCkiID0gLi4vc3VicmVwbworCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLi4vc3VicmVwbyB3b3JrcyB3aXRoIHJlbGF0aXZlIGxvY2FsIHBhdGggLSAuLi9mb28vYmFyJyAnCisJKAorCQljZCByZWx0ZXN0ICYmCisJCWNwIHByaXN0aW5lLS5naXQtY29uZmlnIC5naXQvY29uZmlnICYmCisJCWNwIHByaXN0aW5lLS5naXRtb2R1bGVzIC5naXRtb2R1bGVzICYmCisJCWdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwgLi4vZm9vL2JhciAmJgorCQlnaXQgc3VibW9kdWxlIGluaXQgJiYKKwkJdGVzdCAiJChnaXQgY29uZmlnIHN1Ym1vZHVsZS5zdWIudXJsKSIgPSAuLi9mb28vc3VicmVwbworCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLi4vYmFyL2EvYi9jIHdvcmtzIHdpdGggcmVsYXRpdmUgbG9jYWwgcGF0aCAtIC4uL2Zvby9iYXIuZ2l0JyAnCisJKAorCQljZCByZWx0ZXN0ICYmCisJCWNwIHByaXN0aW5lLS5naXQtY29uZmlnIC5naXQvY29uZmlnICYmCisJCWNwIHByaXN0aW5lLS5naXRtb2R1bGVzIC5naXRtb2R1bGVzICYmCisJCW1rZGlyIC1wIGEvYi9jICYmCisJCShjZCBhL2IvYzsgZ2l0IGluaXQpICYmCisJCWdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwgLi4vZm9vL2Jhci5naXQgJiYKKwkJZ2l0IHN1Ym1vZHVsZSBhZGQgLi4vYmFyL2EvYi9jIC4vYS9iL2MgJiYKKwkJZ2l0IHN1Ym1vZHVsZSBpbml0ICYmCisJCXRlc3QgIiQoZ2l0IGNvbmZpZyBzdWJtb2R1bGUuYS9iL2MudXJsKSIgPSAuLi9mb28vYmFyL2EvYi9jCisJKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb3ZpbmcgdGhlIHN1cGVycHJvamVjdCBkb2VzIG5vdCBicmVhayBzdWJtb2R1bGVzJyAnCiAJKAogCQljZCBhZGR0ZXN0ICYmCkBAIC01MjAsNCArNjgyLDIwNSBAQAogCSkKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGFkZCAtLW5hbWUgYWxsb3dzIHRvIHJlcGxhY2UgYSBzdWJtb2R1bGUgd2l0aCBhbm90aGVyIGF0IHRoZSBzYW1lIHBhdGgnICcKKwkoCisJCWNkIGFkZHRlc3QyICYmCisJCSgKKwkJCWNkIHJlcG8gJiYKKwkJCWVjaG8gIiRzdWJtb2R1cmwvcmVwbyIgPmV4cGVjdCAmJgorCQkJZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCA+YWN0dWFsICYmCisJCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisJCQllY2hvICJnaXRkaXI6IC4uLy5naXQvbW9kdWxlcy9yZXBvIiA+ZXhwZWN0ICYmCisJCQl0ZXN0X2NtcCBleHBlY3QgLmdpdAorCQkpICYmCisJCXJtIC1yZiByZXBvICYmCisJCWdpdCBybSByZXBvICYmCisJCWdpdCBzdWJtb2R1bGUgYWRkIC1xIC0tbmFtZSByZXBvX25ldyAiJHN1Ym1vZHVybC9iYXJlLmdpdCIgcmVwbyA+YWN0dWFsICYmCisJCXRlc3QgISAtcyBhY3R1YWwgJiYKKwkJZWNobyAiZ2l0ZGlyOiAuLi8uZ2l0L21vZHVsZXMvc3VibW9kIiA+ZXhwZWN0ICYmCisJCXRlc3RfY21wIGV4cGVjdCBzdWJtb2QvLmdpdCAmJgorCQkoCisJCQljZCByZXBvICYmCisJCQllY2hvICIkc3VibW9kdXJsL2JhcmUuZ2l0IiA+ZXhwZWN0ICYmCisJCQlnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsID5hY3R1YWwgJiYKKwkJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKwkJCWVjaG8gImdpdGRpcjogLi4vLmdpdC9tb2R1bGVzL3JlcG9fbmV3IiA+ZXhwZWN0ICYmCisJCQl0ZXN0X2NtcCBleHBlY3QgLmdpdAorCQkpICYmCisJCWVjaG8gInJlcG8iID5leHBlY3QgJiYKKwkJZ2l0IGNvbmZpZyAtZiAuZ2l0bW9kdWxlcyBzdWJtb2R1bGUucmVwby5wYXRoID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgorCQlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS5yZXBvX25ldy5wYXRoID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCYmCisJCWVjaG8gIiRzdWJtb2R1cmwvcmVwbyIgPmV4cGVjdCAmJgorCQlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS5yZXBvLnVybCA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKwkJZWNobyAiJHN1Ym1vZHVybC9iYXJlLmdpdCIgPmV4cGVjdCAmJgorCQlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS5yZXBvX25ldy51cmwgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisJCWVjaG8gIiRzdWJtb2R1cmwvcmVwbyIgPmV4cGVjdCAmJgorCQlnaXQgY29uZmlnIHN1Ym1vZHVsZS5yZXBvLnVybCA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKwkJZWNobyAiJHN1Ym1vZHVybC9iYXJlLmdpdCIgPmV4cGVjdCAmJgorCQlnaXQgY29uZmlnIHN1Ym1vZHVsZS5yZXBvX25ldy51cmwgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgYWRkIHdpdGggYW4gZXhpc3RpbmcgbmFtZSBmYWlscyB1bmxlc3MgZm9yY2VkJyAnCisJKAorCQljZCBhZGR0ZXN0MiAmJgorCQlybSAtcmYgcmVwbyAmJgorCQlnaXQgcm0gcmVwbyAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgc3VibW9kdWxlIGFkZCAtcSAtLW5hbWUgcmVwb19uZXcgIiRzdWJtb2R1cmwvcmVwby5naXQiIHJlcG8gJiYKKwkJdGVzdCAhIC1kIHJlcG8gJiYKKwkJZWNobyAicmVwbyIgPmV4cGVjdCAmJgorCQlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS5yZXBvX25ldy5wYXRoID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCYmCisJCWVjaG8gIiRzdWJtb2R1cmwvYmFyZS5naXQiID5leHBlY3QgJiYKKwkJZ2l0IGNvbmZpZyAtZiAuZ2l0bW9kdWxlcyBzdWJtb2R1bGUucmVwb19uZXcudXJsID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgorCQllY2hvICIkc3VibW9kdXJsL2JhcmUuZ2l0IiA+ZXhwZWN0ICYmCisJCWdpdCBjb25maWcgc3VibW9kdWxlLnJlcG9fbmV3LnVybCA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKwkJZ2l0IHN1Ym1vZHVsZSBhZGQgLWYgLXEgLS1uYW1lIHJlcG9fbmV3ICIkc3VibW9kdXJsL3JlcG8uZ2l0IiByZXBvICYmCisJCXRlc3QgLWQgcmVwbyAmJgorCQllY2hvICJyZXBvIiA+ZXhwZWN0ICYmCisJCWdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLnJlcG9fbmV3LnBhdGggPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsJiYKKwkJZWNobyAiJHN1Ym1vZHVybC9yZXBvLmdpdCIgPmV4cGVjdCAmJgorCQlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS5yZXBvX25ldy51cmwgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisJCWVjaG8gIiRzdWJtb2R1cmwvcmVwby5naXQiID5leHBlY3QgJiYKKwkJZ2l0IGNvbmZpZyBzdWJtb2R1bGUucmVwb19uZXcudXJsID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0IHVwIGEgc2Vjb25kIHN1Ym1vZHVsZScgJworCWdpdCBzdWJtb2R1bGUgYWRkIC4vaW5pdDIgZXhhbXBsZTIgJiYKKwlnaXQgY29tbWl0IC1tICJzdWJtb2R1bGUgZXhhbXBsZTIgYWRkZWQiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBkZWluaXQgc2hvdWxkIHJlbW92ZSB0aGUgd2hvbGUgc3VibW9kdWxlIHNlY3Rpb24gZnJvbSAuZ2l0L2NvbmZpZycgJworCWdpdCBjb25maWcgc3VibW9kdWxlLmV4YW1wbGUuZm9vIGJhciAmJgorCWdpdCBjb25maWcgc3VibW9kdWxlLmV4YW1wbGUyLmZyb3R6IG5pdGZvbCAmJgorCWdpdCBzdWJtb2R1bGUgZGVpbml0IGluaXQgJiYKKwl0ZXN0IC16ICIkKGdpdCBjb25maWcgLS1nZXQtcmVnZXhwICJzdWJtb2R1bGVcLmV4YW1wbGVcLiIpIiAmJgorCXRlc3QgLW4gIiQoZ2l0IGNvbmZpZyAtLWdldC1yZWdleHAgInN1Ym1vZHVsZVwuZXhhbXBsZTJcLiIpIiAmJgorCXRlc3QgLWYgZXhhbXBsZTIvLmdpdCAmJgorCXJtZGlyIGluaXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGRlaW5pdCAuIGRlaW5pdHMgYWxsIGluaXRpYWxpemVkIHN1Ym1vZHVsZXMnICcKKwlnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgJiYKKwlnaXQgY29uZmlnIHN1Ym1vZHVsZS5leGFtcGxlLmZvbyBiYXIgJiYKKwlnaXQgY29uZmlnIHN1Ym1vZHVsZS5leGFtcGxlMi5mcm90eiBuaXRmb2wgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3VibW9kdWxlIGRlaW5pdCAmJgorCWdpdCBzdWJtb2R1bGUgZGVpbml0IC4gPmFjdHVhbCAmJgorCXRlc3QgLXogIiQoZ2l0IGNvbmZpZyAtLWdldC1yZWdleHAgInN1Ym1vZHVsZVwuZXhhbXBsZVwuIikiICYmCisJdGVzdCAteiAiJChnaXQgY29uZmlnIC0tZ2V0LXJlZ2V4cCAic3VibW9kdWxlXC5leGFtcGxlMlwuIikiICYmCisJdGVzdF9pMThuZ3JlcCAiQ2xlYXJlZCBkaXJlY3RvcnkgLmluaXQiIGFjdHVhbCAmJgorCXRlc3RfaTE4bmdyZXAgIkNsZWFyZWQgZGlyZWN0b3J5IC5leGFtcGxlMiIgYWN0dWFsICYmCisJcm1kaXIgaW5pdCBleGFtcGxlMgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgZGVpbml0IGRlaW5pdHMgYSBzdWJtb2R1bGUgd2hlbiBpdHMgd29yayB0cmVlIGlzIG1pc3Npbmcgb3IgZW1wdHknICcKKwlnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgJiYKKwlybSAtcmYgaW5pdCBleGFtcGxlMi8qIGV4YW1wbGUyLy5naXQgJiYKKwlnaXQgc3VibW9kdWxlIGRlaW5pdCBpbml0IGV4YW1wbGUyID5hY3R1YWwgJiYKKwl0ZXN0IC16ICIkKGdpdCBjb25maWcgLS1nZXQtcmVnZXhwICJzdWJtb2R1bGVcLmV4YW1wbGVcLiIpIiAmJgorCXRlc3QgLXogIiQoZ2l0IGNvbmZpZyAtLWdldC1yZWdleHAgInN1Ym1vZHVsZVwuZXhhbXBsZTJcLiIpIiAmJgorCXRlc3RfaTE4bmdyZXAgISAiQ2xlYXJlZCBkaXJlY3RvcnkgLmluaXQiIGFjdHVhbCAmJgorCXRlc3RfaTE4bmdyZXAgIkNsZWFyZWQgZGlyZWN0b3J5IC5leGFtcGxlMiIgYWN0dWFsICYmCisJcm1kaXIgaW5pdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgZGVpbml0IGZhaWxzIHdoZW4gdGhlIHN1Ym1vZHVsZSBjb250YWlucyBtb2RpZmljYXRpb25zIHVubGVzcyBmb3JjZWQnICcKKwlnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgJiYKKwllY2hvIFggPj5pbml0L3MgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3VibW9kdWxlIGRlaW5pdCBpbml0ICYmCisJdGVzdCAtbiAiJChnaXQgY29uZmlnIC0tZ2V0LXJlZ2V4cCAic3VibW9kdWxlXC5leGFtcGxlXC4iKSIgJiYKKwl0ZXN0IC1mIGV4YW1wbGUyLy5naXQgJiYKKwlnaXQgc3VibW9kdWxlIGRlaW5pdCAtZiBpbml0ID5hY3R1YWwgJiYKKwl0ZXN0IC16ICIkKGdpdCBjb25maWcgLS1nZXQtcmVnZXhwICJzdWJtb2R1bGVcLmV4YW1wbGVcLiIpIiAmJgorCXRlc3RfaTE4bmdyZXAgIkNsZWFyZWQgZGlyZWN0b3J5IC5pbml0IiBhY3R1YWwgJiYKKwlybWRpciBpbml0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBkZWluaXQgZmFpbHMgd2hlbiB0aGUgc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBmaWxlcyB1bmxlc3MgZm9yY2VkJyAnCisJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0ICYmCisJZWNobyBYID4+aW5pdC91bnRyYWNrZWQgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3VibW9kdWxlIGRlaW5pdCBpbml0ICYmCisJdGVzdCAtbiAiJChnaXQgY29uZmlnIC0tZ2V0LXJlZ2V4cCAic3VibW9kdWxlXC5leGFtcGxlXC4iKSIgJiYKKwl0ZXN0IC1mIGV4YW1wbGUyLy5naXQgJiYKKwlnaXQgc3VibW9kdWxlIGRlaW5pdCAtZiBpbml0ID5hY3R1YWwgJiYKKwl0ZXN0IC16ICIkKGdpdCBjb25maWcgLS1nZXQtcmVnZXhwICJzdWJtb2R1bGVcLmV4YW1wbGVcLiIpIiAmJgorCXRlc3RfaTE4bmdyZXAgIkNsZWFyZWQgZGlyZWN0b3J5IC5pbml0IiBhY3R1YWwgJiYKKwlybWRpciBpbml0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBkZWluaXQgZmFpbHMgd2hlbiB0aGUgc3VibW9kdWxlIEhFQUQgZG9lcyBub3QgbWF0Y2ggdW5sZXNzIGZvcmNlZCcgJworCWdpdCBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAmJgorCSgKKwkJY2QgaW5pdCAmJgorCQlnaXQgY2hlY2tvdXQgSEVBRF4KKwkpICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN1Ym1vZHVsZSBkZWluaXQgaW5pdCAmJgorCXRlc3QgLW4gIiQoZ2l0IGNvbmZpZyAtLWdldC1yZWdleHAgInN1Ym1vZHVsZVwuZXhhbXBsZVwuIikiICYmCisJdGVzdCAtZiBleGFtcGxlMi8uZ2l0ICYmCisJZ2l0IHN1Ym1vZHVsZSBkZWluaXQgLWYgaW5pdCA+YWN0dWFsICYmCisJdGVzdCAteiAiJChnaXQgY29uZmlnIC0tZ2V0LXJlZ2V4cCAic3VibW9kdWxlXC5leGFtcGxlXC4iKSIgJiYKKwl0ZXN0X2kxOG5ncmVwICJDbGVhcmVkIGRpcmVjdG9yeSAuaW5pdCIgYWN0dWFsICYmCisJcm1kaXIgaW5pdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgZGVpbml0IGlzIHNpbGVudCB3aGVuIHVzZWQgb24gYW4gdW5pbml0aWFsaXplZCBzdWJtb2R1bGUnICcKKwlnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgJiYKKwlnaXQgc3VibW9kdWxlIGRlaW5pdCBpbml0ID5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5ncmVwICJTdWJtb2R1bGUgLmV4YW1wbGUuICguKikgdW5yZWdpc3RlcmVkIGZvciBwYXRoIC5pbml0IiBhY3R1YWwgJiYKKwl0ZXN0X2kxOG5ncmVwICJDbGVhcmVkIGRpcmVjdG9yeSAuaW5pdCIgYWN0dWFsICYmCisJZ2l0IHN1Ym1vZHVsZSBkZWluaXQgaW5pdCA+YWN0dWFsICYmCisJdGVzdF9pMThuZ3JlcCAhICJTdWJtb2R1bGUgLmV4YW1wbGUuICguKikgdW5yZWdpc3RlcmVkIGZvciBwYXRoIC5pbml0IiBhY3R1YWwgJiYKKwl0ZXN0X2kxOG5ncmVwICJDbGVhcmVkIGRpcmVjdG9yeSAuaW5pdCIgYWN0dWFsICYmCisJZ2l0IHN1Ym1vZHVsZSBkZWluaXQgLiA+YWN0dWFsICYmCisJdGVzdF9pMThuZ3JlcCAhICJTdWJtb2R1bGUgLmV4YW1wbGUuICguKikgdW5yZWdpc3RlcmVkIGZvciBwYXRoIC5pbml0IiBhY3R1YWwgJiYKKwl0ZXN0X2kxOG5ncmVwICJTdWJtb2R1bGUgLmV4YW1wbGUyLiAoLiopIHVucmVnaXN0ZXJlZCBmb3IgcGF0aCAuZXhhbXBsZTIiIGFjdHVhbCAmJgorCXRlc3RfaTE4bmdyZXAgIkNsZWFyZWQgZGlyZWN0b3J5IC5pbml0IiBhY3R1YWwgJiYKKwlnaXQgc3VibW9kdWxlIGRlaW5pdCAuID5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5ncmVwICEgIlN1Ym1vZHVsZSAuZXhhbXBsZS4gKC4qKSB1bnJlZ2lzdGVyZWQgZm9yIHBhdGggLmluaXQiIGFjdHVhbCAmJgorCXRlc3RfaTE4bmdyZXAgISAiU3VibW9kdWxlIC5leGFtcGxlMi4gKC4qKSB1bnJlZ2lzdGVyZWQgZm9yIHBhdGggLmV4YW1wbGUyIiBhY3R1YWwgJiYKKwl0ZXN0X2kxOG5ncmVwICJDbGVhcmVkIGRpcmVjdG9yeSAuaW5pdCIgYWN0dWFsICYmCisJcm1kaXIgaW5pdCBleGFtcGxlMgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgZGVpbml0IGZhaWxzIHdoZW4gc3VibW9kdWxlIGhhcyBhIC5naXQgZGlyZWN0b3J5IGV2ZW4gd2hlbiBmb3JjZWQnICcKKwlnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgJiYKKwkoCisJCWNkIGluaXQgJiYKKwkJcm0gLmdpdCAmJgorCQljcCAtUiAuLi8uZ2l0L21vZHVsZXMvZXhhbXBsZSAuZ2l0ICYmCisJCUdJVF9XT1JLX1RSRUU9LiBnaXQgY29uZmlnIC0tdW5zZXQgY29yZS53b3JrdHJlZQorCSkgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3VibW9kdWxlIGRlaW5pdCBpbml0ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN1Ym1vZHVsZSBkZWluaXQgLWYgaW5pdCAmJgorCXRlc3QgLWQgaW5pdC8uZ2l0ICYmCisJdGVzdCAtbiAiJChnaXQgY29uZmlnIC0tZ2V0LXJlZ2V4cCAic3VibW9kdWxlXC5leGFtcGxlXC4iKSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIHdpdGggVVRGLTggbmFtZScgJworCXN2bmFtZT0kKHByaW50ZiAiXDMwM1wyNDUgXDMwM1wyNDRcMzAzXDI2NiIpICYmCisJbWtkaXIgIiRzdm5hbWUiICYmCisJKAorCQljZCAiJHN2bmFtZSIgJiYKKwkJZ2l0IGluaXQgJiYKKwkJPnN1YiAmJgorCQlnaXQgYWRkIHN1YiAmJgorCQlnaXQgY29tbWl0IC1tICJpbml0IHN1YiIKKwkpICYmCisJdGVzdF9jb25maWcgY29yZS5wcmVjb21wb3NldW5pY29kZSB0cnVlICYmCisJZ2l0IHN1Ym1vZHVsZSBhZGQgLi8iJHN2bmFtZSIgJiYKKwlnaXQgc3VibW9kdWxlID4mMiAmJgorCXRlc3QgLW4gIiQoZ2l0IHN1Ym1vZHVsZSB8IGdyZXAgIiRzdm5hbWUiKSIKKycKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzQwMi1zdWJtb2R1bGUtcmViYXNlLnNoIGIvdC90NzQwMi1zdWJtb2R1bGUtcmViYXNlLnNoCmluZGV4IGY5MTljOGQuLjhlMzJmMTkgMTAwNzU1Ci0tLSBhL3QvdDc0MDItc3VibW9kdWxlLXJlYmFzZS5zaAorKysgYi90L3Q3NDAyLXN1Ym1vZHVsZS1yZWJhc2Uuc2gKQEAgLTMsNyArMyw3IEBACiAjIENvcHlyaWdodCAoYykgMjAwOCBKb2hhbm5lcyBTY2hpbmRlbGluCiAjCiAKLXRlc3RfZGVzY3JpcHRpb249J1Rlc3QgcmViYXNpbmcgYW5kIHN0YXNoaW5nIHdpdGggZGlydHkgc3VibW9kdWxlcycKK3Rlc3RfZGVzY3JpcHRpb249J1Rlc3QgcmViYXNpbmcsIHN0YXNoaW5nLCBldGMuIHdpdGggc3VibW9kdWxlcycKIAogLiAuL3Rlc3QtbGliLnNoCiAKQEAgLTIwLDcgKzIwLDggQEAKIAllY2hvIHNlY29uZCBsaW5lID4+IGZpbGUgJiYKIAkoY2Qgc3VibW9kdWxlICYmIGdpdCBwdWxsKSAmJgogCXRlc3RfdGljayAmJgotCWdpdCBjb21taXQgLW0gZmlsZS1hbmQtc3VibW9kdWxlIC1hCisJZ2l0IGNvbW1pdCAtbSBmaWxlLWFuZC1zdWJtb2R1bGUgLWEgJiYKKwlnaXQgYnJhbmNoIGFkZGVkLXN1Ym1vZHVsZQogCiAnCiAKQEAgLTg5LDQgKzkwLDI5IEBACiAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNpbmcgc3VibW9kdWxlIHRoYXQgc2hvdWxkIGNvbmZsaWN0JyAnCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBjaGVja291dCBhZGRlZC1zdWJtb2R1bGUgJiYKKwlnaXQgYWRkIHN1Ym1vZHVsZSAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gdGhpcmQgJiYKKwkoCisJCWNkIHN1Ym1vZHVsZSAmJgorCQlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gZXh0cmEKKwkpICYmCisJZ2l0IGFkZCBzdWJtb2R1bGUgJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tIGZvdXJ0aCAmJgorCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSAtLW9udG8gSEVBRF5eIEhFQUReIEhFQUReMCAmJgorCWdpdCBscy1maWxlcyAtcyBzdWJtb2R1bGUgPmFjdHVhbCAmJgorCSgKKwkJY2Qgc3VibW9kdWxlICYmCisJCWVjaG8gIjE2MDAwMCAkKGdpdCByZXYtcGFyc2UgSEVBRF4pIDEJc3VibW9kdWxlIiAmJgorCQllY2hvICIxNjAwMDAgJChnaXQgcmV2LXBhcnNlIEhFQUReXikgMglzdWJtb2R1bGUiICYmCisJCWVjaG8gIjE2MDAwMCAkKGdpdCByZXYtcGFyc2UgSEVBRCkgMwlzdWJtb2R1bGUiCisJKSA+ZXhwZWN0ICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDc0MDMtc3VibW9kdWxlLXN5bmMuc2ggYi90L3Q3NDAzLXN1Ym1vZHVsZS1zeW5jLnNoCmluZGV4IDM2MjAyMTUuLjk0ZTI2YzQgMTAwNzU1Ci0tLSBhL3QvdDc0MDMtc3VibW9kdWxlLXN5bmMuc2gKKysrIGIvdC90NzQwMy1zdWJtb2R1bGUtc3luYy5zaApAQCAtMTcsMTYgKzE3LDI1IEBACiAJZ2l0IGNvbW1pdCAtbSB1cHN0cmVhbSAmJgogCWdpdCBjbG9uZSAuIHN1cGVyICYmCiAJZ2l0IGNsb25lIHN1cGVyIHN1Ym1vZHVsZSAmJgorCShjZCBzdWJtb2R1bGUgJiYKKwkgZ2l0IHN1Ym1vZHVsZSBhZGQgLi4vc3VibW9kdWxlIHN1Yi1zdWJtb2R1bGUgJiYKKwkgdGVzdF90aWNrICYmCisJIGdpdCBjb21taXQgLW0gInN1Yi1zdWJtb2R1bGUiCisJKSAmJgogCShjZCBzdXBlciAmJgogCSBnaXQgc3VibW9kdWxlIGFkZCAuLi9zdWJtb2R1bGUgc3VibW9kdWxlICYmCiAJIHRlc3RfdGljayAmJgogCSBnaXQgY29tbWl0IC1tICJzdWJtb2R1bGUiCiAJKSAmJgogCWdpdCBjbG9uZSBzdXBlciBzdXBlci1jbG9uZSAmJgotCShjZCBzdXBlci1jbG9uZSAmJiBnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQpICYmCisJKGNkIHN1cGVyLWNsb25lICYmIGdpdCBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAtLXJlY3Vyc2l2ZSkgJiYKIAlnaXQgY2xvbmUgc3VwZXIgZW1wdHktY2xvbmUgJiYKIAkoY2QgZW1wdHktY2xvbmUgJiYgZ2l0IHN1Ym1vZHVsZSBpbml0KSAmJgotCWdpdCBjbG9uZSBzdXBlciB0b3Atb25seS1jbG9uZQorCWdpdCBjbG9uZSBzdXBlciB0b3Atb25seS1jbG9uZSAmJgorCWdpdCBjbG9uZSBzdXBlciByZWxhdGl2ZS1jbG9uZSAmJgorCShjZCByZWxhdGl2ZS1jbG9uZSAmJiBnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgLS1yZWN1cnNpdmUpICYmCisJZ2l0IGNsb25lIHN1cGVyIHJlY3Vyc2l2ZS1jbG9uZSAmJgorCShjZCByZWN1cnNpdmUtY2xvbmUgJiYgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0IC0tcmVjdXJzaXZlKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGFuZ2Ugc3VibW9kdWxlJyAnCkBAIC00NCw2ICs1MywxMSBAQAogCSBnaXQgcHVsbAogCSkgJiYKIAltdiBzdWJtb2R1bGUgbW92ZWQtc3VibW9kdWxlICYmCisJKGNkIG1vdmVkLXN1Ym1vZHVsZSAmJgorCSBnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS5zdWItc3VibW9kdWxlLnVybCAuLi9tb3ZlZC1zdWJtb2R1bGUgJiYKKwkgdGVzdF90aWNrICYmCisJIGdpdCBjb21taXQgLWEgLW0gbW92ZWQtc3ViLXN1Ym1vZHVsZQorCSkgJiYKIAkoY2Qgc3VwZXIgJiYKIAkgZ2l0IGNvbmZpZyAtZiAuZ2l0bW9kdWxlcyBzdWJtb2R1bGUuc3VibW9kdWxlLnVybCAuLi9tb3ZlZC1zdWJtb2R1bGUgJiYKIAkgdGVzdF90aWNrICYmCkBAIC01OSw2ICs3Myw5IEBACiAJdGVzdCAtZCAiJChjZCBzdXBlci1jbG9uZS9zdWJtb2R1bGUgJiYKIAkgZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybAogCSkiICYmCisJdGVzdCAhIC1kICIkKGNkIHN1cGVyLWNsb25lL3N1Ym1vZHVsZS9zdWItc3VibW9kdWxlICYmCisJIGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwKKwkpIiAmJgogCShjZCBzdXBlci1jbG9uZS9zdWJtb2R1bGUgJiYKIAkgZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCSBnaXQgcHVsbApAQCAtNjgsNiArODUsMjUgQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJnaXQgc3VibW9kdWxlIHN5bmMgLS1yZWN1cnNpdmUiIHNob3VsZCB1cGRhdGUgYWxsIHN1Ym1vZHVsZSBVUkxzJyAnCisJKGNkIHN1cGVyLWNsb25lICYmCisJIChjZCBzdWJtb2R1bGUgJiYKKwkgIGdpdCBwdWxsIC0tbm8tcmVjdXJzZS1zdWJtb2R1bGVzCisJICkgJiYKKwkgZ2l0IHN1Ym1vZHVsZSBzeW5jIC0tcmVjdXJzaXZlCisJKSAmJgorCXRlc3QgLWQgIiQoY2Qgc3VwZXItY2xvbmUvc3VibW9kdWxlICYmCisJIGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwKKwkpIiAmJgorCXRlc3QgLWQgIiQoY2Qgc3VwZXItY2xvbmUvc3VibW9kdWxlL3N1Yi1zdWJtb2R1bGUgJiYKKwkgZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybAorCSkiICYmCisJKGNkIHN1cGVyLWNsb25lL3N1Ym1vZHVsZS9zdWItc3VibW9kdWxlICYmCisJIGdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwkgZ2l0IHB1bGwKKwkpCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJnaXQgc3VibW9kdWxlIHN5bmMiIHNob3VsZCB1cGRhdGUga25vd24gc3VibW9kdWxlIFVSTHMnICcKIAkoY2QgZW1wdHktY2xvbmUgJiYKIAkgZ2l0IHB1bGwgJiYKQEAgLTg2LDQgKzEyMiwxMDcgQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJnaXQgc3VibW9kdWxlIHN5bmMiIGhhbmRsZXMgb3JpZ2luIFVSTCBvZiB0aGUgZm9ybSBmb28nICcKKwkoY2QgcmVsYXRpdmUtY2xvbmUgJiYKKwkgZ2l0IHJlbW90ZSBzZXQtdXJsIG9yaWdpbiBmb28gJiYKKwkgZ2l0IHN1Ym1vZHVsZSBzeW5jICYmCisJKGNkIHN1Ym1vZHVsZSAmJgorCSAjYWN0dWFsIGZhaWxzIHdpdGg6ICJjYW5ub3Qgc3RyaXAgb2ZmIHVybCBmb28KKwkgdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsKSIgPSAiLi4vc3VibW9kdWxlIgorCSkKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJnaXQgc3VibW9kdWxlIHN5bmMiIGhhbmRsZXMgb3JpZ2luIFVSTCBvZiB0aGUgZm9ybSBmb28vYmFyJyAnCisJKGNkIHJlbGF0aXZlLWNsb25lICYmCisJIGdpdCByZW1vdGUgc2V0LXVybCBvcmlnaW4gZm9vL2JhciAmJgorCSBnaXQgc3VibW9kdWxlIHN5bmMgJiYKKwkoY2Qgc3VibW9kdWxlICYmCisJICNhY3R1YWwgZm9vL3N1Ym1vZHVsZQorCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwpIiA9ICIuLi9mb28vc3VibW9kdWxlIgorCSkKKwkoY2Qgc3VibW9kdWxlL3N1Yi1zdWJtb2R1bGUgJiYKKwkgdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsKSIgIT0gIi4uLy4uL2Zvby9zdWJtb2R1bGUiCisJKQorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnImdpdCBzdWJtb2R1bGUgc3luYyAtLXJlY3Vyc2l2ZSIgcHJvcGFnYXRlcyBjaGFuZ2VzIGluIG9yaWdpbicgJworCShjZCByZWN1cnNpdmUtY2xvbmUgJiYKKwkgZ2l0IHJlbW90ZSBzZXQtdXJsIG9yaWdpbiBmb28vYmFyICYmCisJIGdpdCBzdWJtb2R1bGUgc3luYyAtLXJlY3Vyc2l2ZSAmJgorCShjZCBzdWJtb2R1bGUgJiYKKwkgI2FjdHVhbCBmb28vc3VibW9kdWxlCisJIHRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCkiID0gIi4uL2Zvby9zdWJtb2R1bGUiCisJKQorCShjZCBzdWJtb2R1bGUvc3ViLXN1Ym1vZHVsZSAmJgorCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwpIiA9ICIuLi8uLi9mb28vc3VibW9kdWxlIgorCSkKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJnaXQgc3VibW9kdWxlIHN5bmMiIGhhbmRsZXMgb3JpZ2luIFVSTCBvZiB0aGUgZm9ybSAuL2ZvbycgJworCShjZCByZWxhdGl2ZS1jbG9uZSAmJgorCSBnaXQgcmVtb3RlIHNldC11cmwgb3JpZ2luIC4vZm9vICYmCisJIGdpdCBzdWJtb2R1bGUgc3luYyAmJgorCShjZCBzdWJtb2R1bGUgJiYKKwkgI2FjdHVhbCAuL3N1Ym1vZHVsZQorCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwpIiA9ICIuLi9zdWJtb2R1bGUiCisJKQorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnImdpdCBzdWJtb2R1bGUgc3luYyIgaGFuZGxlcyBvcmlnaW4gVVJMIG9mIHRoZSBmb3JtIC4vZm9vL2JhcicgJworCShjZCByZWxhdGl2ZS1jbG9uZSAmJgorCSBnaXQgcmVtb3RlIHNldC11cmwgb3JpZ2luIC4vZm9vL2JhciAmJgorCSBnaXQgc3VibW9kdWxlIHN5bmMgJiYKKwkoY2Qgc3VibW9kdWxlICYmCisJICNhY3R1YWwgLi9mb28vc3VibW9kdWxlCisJIHRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCkiID0gIi4uL2Zvby9zdWJtb2R1bGUiCisJKQorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnImdpdCBzdWJtb2R1bGUgc3luYyIgaGFuZGxlcyBvcmlnaW4gVVJMIG9mIHRoZSBmb3JtIC4uL2ZvbycgJworCShjZCByZWxhdGl2ZS1jbG9uZSAmJgorCSBnaXQgcmVtb3RlIHNldC11cmwgb3JpZ2luIC4uL2ZvbyAmJgorCSBnaXQgc3VibW9kdWxlIHN5bmMgJiYKKwkoY2Qgc3VibW9kdWxlICYmCisJICNhY3R1YWwgLi4vc3VibW9kdWxlCisJIHRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCkiID0gIi4uLy4uL3N1Ym1vZHVsZSIKKwkpCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICciZ2l0IHN1Ym1vZHVsZSBzeW5jIiBoYW5kbGVzIG9yaWdpbiBVUkwgb2YgdGhlIGZvcm0gLi4vZm9vL2JhcicgJworCShjZCByZWxhdGl2ZS1jbG9uZSAmJgorCSBnaXQgcmVtb3RlIHNldC11cmwgb3JpZ2luIC4uL2Zvby9iYXIgJiYKKwkgZ2l0IHN1Ym1vZHVsZSBzeW5jICYmCisJKGNkIHN1Ym1vZHVsZSAmJgorCSAjYWN0dWFsIC4uL2Zvby9zdWJtb2R1bGUKKwkgdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsKSIgPSAiLi4vLi4vZm9vL3N1Ym1vZHVsZSIKKwkpCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICciZ2l0IHN1Ym1vZHVsZSBzeW5jIiBoYW5kbGVzIG9yaWdpbiBVUkwgb2YgdGhlIGZvcm0gLi4vZm9vL2JhciB3aXRoIGRlZXBseSBuZXN0ZWQgc3VibW9kdWxlJyAnCisJKGNkIHJlbGF0aXZlLWNsb25lICYmCisJIGdpdCByZW1vdGUgc2V0LXVybCBvcmlnaW4gLi4vZm9vL2JhciAmJgorCSBta2RpciAtcCBhL2IvYyAmJgorCSAoIGNkIGEvYi9jICYmCisJICAgZ2l0IGluaXQgJiYKKwkgICA6PiAuZ2l0aWdub3JlICYmCisJICAgZ2l0IGFkZCAuZ2l0aWdub3JlICYmCisJICAgdGVzdF90aWNrICYmCisJICAgZ2l0IGNvbW1pdCAtbSAiaW5pdGlhbCBjb21taXQiICkgJiYKKwkgZ2l0IHN1Ym1vZHVsZSBhZGQgLi4vYmFyL2EvYi9jIC4vYS9iL2MgJiYKKwkgZ2l0IHN1Ym1vZHVsZSBzeW5jICYmCisJKGNkIGEvYi9jICYmCisJICNhY3R1YWwgLi4vZm9vL2Jhci9hL2IvYworCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwpIiA9ICIuLi8uLi8uLi8uLi9mb28vYmFyL2EvYi9jIgorCSkKKwkpCisnCisKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3NDA2LXN1Ym1vZHVsZS11cGRhdGUuc2ggYi90L3Q3NDA2LXN1Ym1vZHVsZS11cGRhdGUuc2gKaW5kZXggZGNiMTk1Yi4uYTRmZmVhMCAxMDA3NTUKLS0tIGEvdC90NzQwNi1zdWJtb2R1bGUtdXBkYXRlLnNoCisrKyBiL3QvdDc0MDYtc3VibW9kdWxlLXVwZGF0ZS5zaApAQCAtMTIzLDYgKzEyMyw0OSBAQAogCSkKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIHVwZGF0ZSAtLWZvcmNlIGZvcmNpYmx5IGNoZWNrcyBvdXQgc3VibW9kdWxlcycgJworCShjZCBzdXBlciAmJgorCSAoY2Qgc3VibW9kdWxlICYmCisJICBybSAtZiBmaWxlCisJICkgJiYKKwkgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1mb3JjZSBzdWJtb2R1bGUgJiYKKwkgKGNkIHN1Ym1vZHVsZSAmJgorCSAgdGVzdCAiJChnaXQgc3RhdHVzIC1zIGZpbGUpIiA9ICIiCisJICkKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSB1cGRhdGUgLS1yZW1vdGUgc2hvdWxkIGZldGNoIHVwc3RyZWFtIGNoYW5nZXMnICcKKwkoY2Qgc3VibW9kdWxlICYmCisJIGVjaG8gbGluZTQgPj4gZmlsZSAmJgorCSBnaXQgYWRkIGZpbGUgJiYKKwkgdGVzdF90aWNrICYmCisJIGdpdCBjb21taXQgLW0gInVwc3RyZWFtIGxpbmU0IgorCSkgJiYKKwkoY2Qgc3VwZXIgJiYKKwkgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1yZW1vdGUgLS1mb3JjZSBzdWJtb2R1bGUgJiYKKwkgY2Qgc3VibW9kdWxlICYmCisJIHRlc3QgIiQoZ2l0IGxvZyAtMSAtLW9uZWxpbmUpIiA9ICIkKEdJVF9ESVI9Li4vLi4vc3VibW9kdWxlLy5naXQgZ2l0IGxvZyAtMSAtLW9uZWxpbmUpIgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9jYWwgY29uZmlnIHNob3VsZCBvdmVycmlkZSAuZ2l0bW9kdWxlcyBicmFuY2gnICcKKwkoY2Qgc3VibW9kdWxlICYmCisJIGdpdCBjaGVja291dCAtYiB0ZXN0LWJyYW5jaCAmJgorCSBlY2hvIGxpbmU1ID4+IGZpbGUgJiYKKwkgZ2l0IGFkZCBmaWxlICYmCisJIHRlc3RfdGljayAmJgorCSBnaXQgY29tbWl0IC1tICJ1cHN0cmVhbSBsaW5lNSIgJiYKKwkgZ2l0IGNoZWNrb3V0IG1hc3RlcgorCSkgJiYKKwkoY2Qgc3VwZXIgJiYKKwkgZ2l0IGNvbmZpZyBzdWJtb2R1bGUuc3VibW9kdWxlLmJyYW5jaCB0ZXN0LWJyYW5jaCAmJgorCSBnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLXJlbW90ZSAtLWZvcmNlIHN1Ym1vZHVsZSAmJgorCSBjZCBzdWJtb2R1bGUgJiYKKwkgdGVzdCAiJChnaXQgbG9nIC0xIC0tb25lbGluZSkiID0gIiQoR0lUX0RJUj0uLi8uLi9zdWJtb2R1bGUvLmdpdCBnaXQgbG9nIC0xIC0tb25lbGluZSB0ZXN0LWJyYW5jaCkiCisJKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgdXBkYXRlIC0tcmViYXNlIHN0YXlpbmcgb24gbWFzdGVyJyAnCiAJKGNkIHN1cGVyL3N1Ym1vZHVsZSAmJgogCSAgZ2l0IGNoZWNrb3V0IG1hc3RlcgpAQCAtMzY3LDcgKzQxMCw3IEBACiAJIGdpdCBzdWJtb2R1bGUgaW5pdCAmJgogCSBnaXQgY29tbWl0IC1hbSAibmV3X3N1Ym1vZHVsZSIgJiYKIAkgKGNkIHN1Ym1vZHVsZTIgJiYKLQkgIGdpdCByZXYtcGFyc2UgLS1tYXgtY291bnQ9MSBIRUFEID4gLi4vZXhwZWN0CisJICBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQgPi4uL2V4cGVjdAogCSApICYmCiAJIChjZCBzdWJtb2R1bGUgJiYKIAkgIHRlc3RfY29tbWl0ICJ1cGRhdGVfc3VibW9kdWxlIiBmaWxlCkBAIC0zODQsNyArNDI3LDcgQEAKIAkgZ2l0IGNoZWNrb3V0IEhFQUReICYmCiAJIHRlc3RfbXVzdF9mYWlsIGdpdCBzdWJtb2R1bGUgdXBkYXRlICYmCiAJIChjZCBzdWJtb2R1bGUyICYmCi0JICBnaXQgcmV2LXBhcnNlIC0tbWF4LWNvdW50PTEgSEVBRCA+IC4uL2FjdHVhbAorCSAgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEID4uLi9hY3R1YWwKIAkgKSAmJgogCSB0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAJKQpAQCAtNDEzLDcgKzQ1Niw3IEBACiAJICB0ZXN0X2NvbW1pdCAidXBkYXRlX3N1Ym1vZHVsZV9hZ2Fpbl9hZ2FpbiIgZmlsZQogCSApICYmCiAJIChjZCBzdWJtb2R1bGUyICYmCi0JICBnaXQgcmV2LXBhcnNlIC0tbWF4LWNvdW50PTEgSEVBRCA+IC4uL2V4cGVjdCAmJgorCSAgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEID4uLi9leHBlY3QgJiYKIAkgIHRlc3RfY29tbWl0ICJ1cGRhdGVfc3VibW9kdWxlMl9hZ2FpbiIgZmlsZQogCSApICYmCiAJIGdpdCBhZGQgc3VibW9kdWxlICYmCkBAIC00MjgsNyArNDcxLDcgQEAKIAkgKSAmJgogCSB0ZXN0X211c3RfZmFpbCBnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLXJlY3Vyc2l2ZSAmJgogCSAoY2Qgc3VibW9kdWxlMiAmJgotCSAgZ2l0IHJldi1wYXJzZSAtLW1heC1jb3VudD0xIEhFQUQgPiAuLi9hY3R1YWwKKwkgIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCA+Li4vYWN0dWFsCiAJICkgJiYKIAkgdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogCSkKQEAgLTQ2MCwxMiArNTAzLDEyIEBACiAJICkgJiYKIAkgZ2l0IGNoZWNrb3V0IEhFQUReICYmCiAJIChjZCBzdWJtb2R1bGUyICYmCi0JICBnaXQgcmV2LXBhcnNlIC0tbWF4LWNvdW50PTEgSEVBRCA+IC4uL2V4cGVjdAorCSAgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEID4uLi9leHBlY3QKIAkgKSAmJgogCSBnaXQgY29uZmlnIHN1Ym1vZHVsZS5zdWJtb2R1bGUudXBkYXRlIG1lcmdlICYmCiAJIHRlc3RfbXVzdF9mYWlsIGdpdCBzdWJtb2R1bGUgdXBkYXRlICYmCiAJIChjZCBzdWJtb2R1bGUyICYmCi0JICBnaXQgcmV2LXBhcnNlIC0tbWF4LWNvdW50PTEgSEVBRCA+IC4uL2FjdHVhbAorCSAgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEID4uLi9hY3R1YWwKIAkgKSAmJgogCSB0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAJKQpAQCAtNDk1LDEyICs1MzgsMTIgQEAKIAkgKSAmJgogCSBnaXQgY2hlY2tvdXQgSEVBRF4gJiYKIAkgKGNkIHN1Ym1vZHVsZTIgJiYKLQkgIGdpdCByZXYtcGFyc2UgLS1tYXgtY291bnQ9MSBIRUFEID4gLi4vZXhwZWN0CisJICBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQgPi4uL2V4cGVjdAogCSApICYmCiAJIGdpdCBjb25maWcgc3VibW9kdWxlLnN1Ym1vZHVsZS51cGRhdGUgcmViYXNlICYmCiAJIHRlc3RfbXVzdF9mYWlsIGdpdCBzdWJtb2R1bGUgdXBkYXRlICYmCiAJIChjZCBzdWJtb2R1bGUyICYmCi0JICBnaXQgcmV2LXBhcnNlIC0tbWF4LWNvdW50PTEgSEVBRCA+IC4uL2FjdHVhbAorCSAgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEID4uLi9hY3R1YWwKIAkgKSAmJgogCSB0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAJKQpAQCAtNTUzLDE0ICs1OTYsMTQgQEAKIAkgICBnaXQgbG9nID4gLi4vLi4vLi4vZXhwZWN0ZWQKIAkgICkgJiYKIAkgIGdpdCBjb21taXQgLW0gImFkZGVkIHN1YnN1Ym1vZHVsZSIgJiYKLQkgIGdpdCBwdXNoCisJICBnaXQgcHVzaCBvcmlnaW4gOgogCSApICYmCiAJIChjZCAuZ2l0L21vZHVsZXMvZGVlcGVyL3N1Ym1vZHVsZS9tb2R1bGVzL3N1YnN1Ym1vZHVsZSAmJgogCSAgZ2l0IGxvZyA+IC4uLy4uLy4uLy4uLy4uL2FjdHVhbAogCSApICYmCiAJIGdpdCBhZGQgZGVlcGVyL3N1Ym1vZHVsZSAmJgogCSBnaXQgY29tbWl0IC1tICJ1cGRhdGUgc3VibW9kdWxlIiAmJgotCSBnaXQgcHVzaCAmJgorCSBnaXQgcHVzaCBvcmlnaW4gOiAmJgogCSB0ZXN0X2NtcCBhY3R1YWwgZXhwZWN0ZWQKIAkpCiAnCkBAIC02MDAsNyArNjQzLDggQEAKIAlybSAtcmYgc3VwZXJfdXBkYXRlX3IyICYmCiAJZ2l0IGNsb25lIHN1cGVyX3VwZGF0ZV9yIHN1cGVyX3VwZGF0ZV9yMiAmJgogCShjZCBzdXBlcl91cGRhdGVfcjIgJiYKLQkgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0IC0tcmVjdXJzaXZlICYmCisJIGdpdCBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAtLXJlY3Vyc2l2ZSA+YWN0dWFsICYmCisJIHRlc3RfaTE4bmdyZXAgIlN1Ym1vZHVsZSBwYXRoIC5zdWJtb2R1bGUvc3Vic3VibW9kdWxlLjogY2hlY2tlZCBvdXQiIGFjdHVhbCAmJgogCSAoY2Qgc3VibW9kdWxlL3N1YnN1Ym1vZHVsZSAmJgogCSAgZ2l0IGxvZyA+IC4uLy4uL2V4cGVjdGVkCiAJICkgJiYKQEAgLTYxNSwxNCArNjU5LDE2IEBACiAJKGNkIHN1cGVyICYmCiAJIGdpdCByZXNldCAtLWhhcmQgbWFzdGVyICYmCiAJIHJtIC1yZiBkZWVwZXIvICYmCi0JIGdpdCBzdWJtb2R1bGUgYWRkIC4uL3N1Ym1vZHVsZSBkZWVwZXIvc3VibW9kdWxlCisJIGdpdCBzdWJtb2R1bGUgYWRkIC0tZm9yY2UgLi4vc3VibW9kdWxlIGRlZXBlci9zdWJtb2R1bGUKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSB1cGRhdGUgcHJvcGVybHkgcmV2aXZlcyBhIG1vdmVkIHN1Ym1vZHVsZScgJwogCShjZCBzdXBlciAmJgorCSBIPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUQpICYmCiAJIGdpdCBjb21taXQgLWFtICJwcmUgbW92ZSIgJiYKLQkgZ2l0IHN0YXR1cyA+ZXhwZWN0JiYKKwkgSDI9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRCkgJiYKKwkgZ2l0IHN0YXR1cyB8IHNlZCAicy8kSC9YWFgvIiA+ZXhwZWN0ICYmCiAJIEg9JChjZCBzdWJtb2R1bGUyOyBnaXQgcmV2LXBhcnNlIEhFQUQpICYmCiAJIGdpdCBybSAtLWNhY2hlZCBzdWJtb2R1bGUyICYmCiAJIHJtIC1yZiBzdWJtb2R1bGUyICYmCkBAIC02MzEsOSArNjc3LDIyIEBACiAJIGdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLnN1Ym1vZHVsZTIucGF0aCAibW92ZWQvc3ViIG1vZHVsZSIKIAkgZ2l0IGNvbW1pdCAtYW0gInBvc3QgbW92ZSIgJiYKIAkgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgJiYKLQkgZ2l0IHN0YXR1cyA+YWN0dWFsICYmCisJIGdpdCBzdGF0dXMgfCBzZWQgInMvJEgyL1hYWC8iID5hY3R1YWwgJiYKIAkgdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogCSkKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnc3VibW9kdWxlIHVwZGF0ZSBjYW4gaGFuZGxlIHN5bWJvbGljIGxpbmtzIGluIHB3ZCcgJworCW1rZGlyIC1wIGxpbmtlZC9kaXIgJiYKKwlsbiAtcyBsaW5rZWQvZGlyIGxpbmt0byAmJgorCSgKKwkJY2QgbGlua3RvICYmCisJCWdpdCBjbG9uZSAiJFRSQVNIX0RJUkVDVE9SWSIvc3VwZXJfdXBkYXRlX3IyIHN1cGVyICYmCisJCSgKKwkJCWNkIHN1cGVyICYmCisJCQlnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgLS1yZWN1cnNpdmUKKwkJKQorCSkKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3NDA3LXN1Ym1vZHVsZS1mb3JlYWNoLnNoIGIvdC90NzQwNy1zdWJtb2R1bGUtZm9yZWFjaC5zaAppbmRleCA5YjY5ZmUyLi4xMDdiNGI3IDEwMDc1NQotLS0gYS90L3Q3NDA3LXN1Ym1vZHVsZS1mb3JlYWNoLnNoCisrKyBiL3QvdDc0MDctc3VibW9kdWxlLWZvcmVhY2guc2gKQEAgLTIyNiwxNCArMjI2LDE0IEBACiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCi1zZWQgLWUgIi9uZXN0ZWQxIC9zLy4qLyskbmVzdGVkMXNoYTEgbmVzdGVkMSAoZmlsZTJ+MSkvOy9zdWJbMS0zXS9kIiA8IGV4cGVjdCA+IGV4cGVjdDIKK3NlZCAtZSAiL25lc3RlZDIgL3MvLiovKyRuZXN0ZWQyc2hhMSBuZXN0ZWQxXC9uZXN0ZWQyIChmaWxlMn4xKS87L3N1YlsxLTNdL2QiIDwgZXhwZWN0ID4gZXhwZWN0MgogbXYgLWYgZXhwZWN0MiBleHBlY3QKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZW5zdXJlICJzdGF0dXMgLS1jYWNoZWQgLS1yZWN1cnNpdmUiIHByZXNlcnZlcyB0aGUgLS1jYWNoZWQgZmxhZycgJwogCSgKIAkJY2QgY2xvbmUzICYmCiAJCSgKLQkJCWNkIG5lc3RlZDEgJiYKKwkJCWNkIG5lc3RlZDEvbmVzdGVkMiAmJgogCQkJdGVzdF9jb21taXQgZmlsZTIKIAkJKSAmJgogCQlnaXQgc3VibW9kdWxlIHN0YXR1cyAtLWNhY2hlZCAtLXJlY3Vyc2l2ZSAtLSBuZXN0ZWQxID4gLi4vYWN0dWFsCmRpZmYgLS1naXQgYS90L3Q3NDA5LXN1Ym1vZHVsZS1kZXRhY2hlZC13b3JrdHJlZS5zaCBiL3QvdDc0MDktc3VibW9kdWxlLWRldGFjaGVkLXdvcmt0cmVlLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmMyMDcxNzEKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q3NDA5LXN1Ym1vZHVsZS1kZXRhY2hlZC13b3JrdHJlZS5zaApAQCAtMCwwICsxLDg0IEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDEyIERhbmllbCBHcmHDsWEKKyMKKwordGVzdF9kZXNjcmlwdGlvbj0nVGVzdCBzdWJtb2R1bGVzIG9uIGRldGFjaGVkIHdvcmtpbmcgdHJlZQorCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCAiZ2l0IHN1Ym1vZHVsZSIgaW5pdGlhbGl6YXRpb24sIHVwZGF0ZSBhbmQgYWRkaXRpb24gd29ya3MKK29uIGRldGFoY2VkIHdvcmtpbmcgdHJlZXMKKycKKworVEVTVF9OT19DUkVBVEVfUkVQTz0xCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIG9uIGRldGFjaGVkIHdvcmtpbmcgdHJlZScgJworCWdpdCBpbml0IC0tYmFyZSByZW1vdGUgJiYKKwl0ZXN0X2NyZWF0ZV9yZXBvIGJ1bmRsZTEgJiYKKwkoCisJCWNkIGJ1bmRsZTEgJiYKKwkJdGVzdF9jb21taXQgInNob290IiAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQgPi4uL2V4cGVjdAorCSkgJiYKKwlta2RpciBob21lICYmCisJKAorCQljZCBob21lICYmCisJCUdJVF9XT1JLX1RSRUU9IiQocHdkKSIgJiYKKwkJR0lUX0RJUj0iJChwd2QpLy5kb3RmaWxlcyIgJiYKKwkJZXhwb3J0IEdJVF9XT1JLX1RSRUUgR0lUX0RJUiAmJgorCQlnaXQgY2xvbmUgLS1iYXJlIC4uL3JlbW90ZSAuZG90ZmlsZXMgJiYKKwkJZ2l0IHN1Ym1vZHVsZSBhZGQgLi4vYnVuZGxlMSAudmltL2J1bmRsZS9zb2dvb2QgJiYKKwkJdGVzdF9jb21taXQgInNvZ29vZCIgJiYKKwkJKAorCQkJdW5zZXQgR0lUX1dPUktfVFJFRSBHSVRfRElSICYmCisJCQljZCAudmltL2J1bmRsZS9zb2dvb2QgJiYKKwkJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCA+YWN0dWFsICYmCisJCQl0ZXN0X2NtcCAuLi8uLi8uLi8uLi9leHBlY3QgYWN0dWFsCisJCSkgJiYKKwkJZ2l0IHB1c2ggb3JpZ2luIG1hc3RlcgorCSkgJiYKKwlta2RpciBob21lMiAmJgorCSgKKwkJY2QgaG9tZTIgJiYKKwkJZ2l0IGNsb25lIC0tYmFyZSAuLi9yZW1vdGUgLmRvdGZpbGVzICYmCisJCUdJVF9XT1JLX1RSRUU9IiQocHdkKSIgJiYKKwkJR0lUX0RJUj0iJChwd2QpLy5kb3RmaWxlcyIgJiYKKwkJZXhwb3J0IEdJVF9XT1JLX1RSRUUgR0lUX0RJUiAmJgorCQlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJCWdpdCBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAmJgorCQkoCisJCQl1bnNldCBHSVRfV09SS19UUkVFIEdJVF9ESVIgJiYKKwkJCWNkIC52aW0vYnVuZGxlL3NvZ29vZCAmJgorCQkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEID5hY3R1YWwgJiYKKwkJCXRlc3RfY21wIC4uLy4uLy4uLy4uL2V4cGVjdCBhY3R1YWwKKwkJKQorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIG9uIGRldGFjaGVkIHdvcmtpbmcgcG9pbnRlZCBieSBjb3JlLndvcmt0cmVlJyAnCisJbWtkaXIgaG9tZTMgJiYKKwkoCisJCWNkIGhvbWUzICYmCisJCUdJVF9ESVI9IiQocHdkKS8uZG90ZmlsZXMiICYmCisJCWV4cG9ydCBHSVRfRElSICYmCisJCWdpdCBjbG9uZSAtLWJhcmUgLi4vcmVtb3RlICIkR0lUX0RJUiIgJiYKKwkJZ2l0IGNvbmZpZyBjb3JlLmJhcmUgZmFsc2UgJiYKKwkJZ2l0IGNvbmZpZyBjb3JlLndvcmt0cmVlIC4uICYmCisJCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwkJZ2l0IHN1Ym1vZHVsZSBhZGQgLi4vYnVuZGxlMSAudmltL2J1bmRsZS9kdXBlICYmCisJCXRlc3RfY29tbWl0ICJkdXBlIiAmJgorCQlnaXQgcHVzaCBvcmlnaW4gbWFzdGVyCisJKSAmJgorCSgKKwkJY2QgaG9tZSAmJgorCQlHSVRfRElSPSIkKHB3ZCkvLmRvdGZpbGVzIiAmJgorCQlleHBvcnQgR0lUX0RJUiAmJgorCQlnaXQgY29uZmlnIGNvcmUuYmFyZSBmYWxzZSAmJgorCQlnaXQgY29uZmlnIGNvcmUud29ya3RyZWUgLi4gJiYKKwkJZ2l0IHB1bGwgJiYKKwkJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0ICYmCisJCXRlc3QgLWYgLnZpbS9idW5kbGUvZHVwZS9zaG9vdC50CisJKQorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDc1MDAtY29tbWl0LnNoIGIvdC90NzUwMC1jb21taXQuc2gKaW5kZXggMWM5MDhmNC4uYmRjMWYyOSAxMDA3NTUKLS0tIGEvdC90NzUwMC1jb21taXQuc2gKKysrIGIvdC90NzUwMC1jb21taXQuc2gKQEAgLTEzLDkgKzEzLDkgQEAKIAlleHBlY3Q9Y29tbWl0X21zZ19pcy5leHBlY3QKIAlhY3R1YWw9Y29tbWl0X21zZ19pcy5hY3R1YWwKIAotCXByaW50ZiAiJXMiICIkKGdpdCBsb2cgLS1wcmV0dHk9Zm9ybWF0OiVzJWIgLTEpIiA+JGV4cGVjdCAmJgotCXByaW50ZiAiJXMiICIkMSIgPiRhY3R1YWwgJiYKLQl0ZXN0X2kxOG5jbXAgJGV4cGVjdCAkYWN0dWFsCisJcHJpbnRmICIlcyIgIiQoZ2l0IGxvZyAtLXByZXR0eT1mb3JtYXQ6JXMlYiAtMSkiID4iJGFjdHVhbCIgJiYKKwlwcmludGYgIiVzIiAiJDEiID4iJGV4cGVjdCIgJiYKKwl0ZXN0X2kxOG5jbXAgIiRleHBlY3QiICIkYWN0dWFsIgogfQogCiAjIEEgc2FuaXR5IGNoZWNrIHRvIHNlZSBpZiBjb21taXQgaXMgd29ya2luZyBhdCBhbGwuCkBAIC0zNiw4ICszNiw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vbmV4aXN0ZW50IHRlbXBsYXRlIGZpbGUgaW4gY29uZmlnIHNob3VsZCByZXR1cm4gZXJyb3InICcKLQlnaXQgY29uZmlnIGNvbW1pdC50ZW1wbGF0ZSAiJFBXRCIvbm90ZXhpc3QgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjb25maWcgLS11bnNldCBjb21taXQudGVtcGxhdGUiICYmCisJdGVzdF9jb25maWcgY29tbWl0LnRlbXBsYXRlICIkUFdEIi9ub3RleGlzdCAmJgogCSgKIAkJR0lUX0VESVRPUj0iZWNobyBoZWxsbyA+XCJcJDFcIiIgJiYKIAkJZXhwb3J0IEdJVF9FRElUT1IgJiYKQEAgLTkzLDE0ICs5MiwxMyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb25maWctc3BlY2lmaWVkIHRlbXBsYXRlIHNob3VsZCBjb21taXQnICcKIAllY2hvICJuZXcgdGVtcGxhdGUiID4gIiRURU1QTEFURSIgJiYKLQlnaXQgY29uZmlnIGNvbW1pdC50ZW1wbGF0ZSAiJFRFTVBMQVRFIiAmJgorCXRlc3RfY29uZmlnIGNvbW1pdC50ZW1wbGF0ZSAiJFRFTVBMQVRFIiAmJgogCWVjaG8gIm1vcmUgY29udGVudCIgPj4gZm9vICYmCiAJZ2l0IGFkZCBmb28gJiYKIAkoCiAJCXRlc3Rfc2V0X2VkaXRvciAiJFRFU1RfRElSRUNUT1JZIi90NzUwMC9hZGQtY29udGVudCAmJgogCQlnaXQgY29tbWl0CiAJKSAmJgotCWdpdCBjb25maWcgLS11bnNldCBjb21taXQudGVtcGxhdGUgJiYKIAljb21taXRfbXNnX2lzICJuZXcgdGVtcGxhdGVjb21taXQgbWVzc2FnZSIKICcKIApkaWZmIC0tZ2l0IGEvdC90NzUwMC9hZGQtY29udGVudC1hbmQtY29tbWVudCBiL3QvdDc1MDAvYWRkLWNvbnRlbnQtYW5kLWNvbW1lbnQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzRkY2NmZgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDc1MDAvYWRkLWNvbnRlbnQtYW5kLWNvbW1lbnQKQEAgLTAsMCArMSw1IEBACisjIS9iaW4vc2gKK2VjaG8gImNvbW1pdCBtZXNzYWdlIiA+PiAiJDEiCitlY2hvICIjIGNvbW1lbnQiID4+ICIkMSIKK2V4aXQgMAorCmRpZmYgLS1naXQgYS90L3Q3NTAxLWNvbW1pdC5zaCBiL3QvdDc1MDEtY29tbWl0LnNoCmluZGV4IGIyMGNhMGUuLjE5NWU3NDcgMTAwNzU1Ci0tLSBhL3QvdDc1MDEtY29tbWl0LnNoCisrKyBiL3QvdDc1MDEtY29tbWl0LnNoCkBAIC0xMDgsNiArMTA4LDE2IEBACiAJRURJVE9SPS4vZWRpdG9yIGdpdCBjb21taXQgLS1hbWVuZAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbWVuZCAtLW9ubHkgaWdub3JlcyBzdGFnZWQgY29udGVudHMnICcKKwljcCBmaWxlIGZpbGUuZXhwZWN0ICYmCisJZWNobyBjaGFuZ2VkID5maWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJZ2l0IGNvbW1pdCAtLW5vLWVkaXQgLS1hbWVuZCAtLW9ubHkgJiYKKwlnaXQgY2F0LWZpbGUgYmxvYiBIRUFEOmZpbGUgPmZpbGUuYWN0dWFsICYmCisJdGVzdF9jbXAgZmlsZS5leHBlY3QgZmlsZS5hY3R1YWwgJiYKKwlnaXQgZGlmZiAtLWV4aXQtY29kZQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXQgdXAgZWRpdG9yJyAnCiAJY2F0ID5lZGl0b3IgPDwtXEVPRiAmJgogCSMhL2Jpbi9zaApAQCAtMTM4LDYgKzE0OCwyMSBAQAogCXRlc3RfY21wIGV4cGVjdCBtc2cKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1hbWVuZCAtLWVkaXQgb2YgZW1wdHkgbWVzc2FnZScgJworCWNhdCA+cmVwbGFjZSA8PC1cRU9GICYmCisJIyEvYmluL3NoCisJZWNobyAiYW1lbmRlZCIgPiIkMSIKKwlFT0YKKwljaG1vZCA3NTUgcmVwbGFjZSAmJgorCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtLWFsbG93LWVtcHR5LW1lc3NhZ2UgLW0gIiIgJiYKKwllY2hvIG1vcmUgYm9uZ28gPmZpbGUgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwlFRElUT1I9Li9yZXBsYWNlIGdpdCBjb21taXQgLS1lZGl0IC0tYW1lbmQgJiYKKwlnaXQgZGlmZi10cmVlIC1zIC0tZm9ybWF0PSVzIEhFQUQgPm1zZyAmJgorCS4vcmVwbGFjZSBleHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgbXNnCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy1tIC0tZWRpdCcgJwogCWVjaG8gYW1lbmRlZCA+ZXhwZWN0ICYmCiAJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIGJ1ZmZlciAmJgpAQCAtNDg3LDQgKzUxMiwxNiBAQAogCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbW1pdCBhIGZpbGUgd2hvc2UgbmFtZSBpcyBhIGRhc2gnICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZm9yIGkgaW4gMSAyIDMgNCA1CisJZG8KKwkJZWNobyAkaQorCWRvbmUgPi4vLSAmJgorCWdpdCBhZGQgLi8tICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSAiYWRkIGRhc2giID5vdXRwdXQgPC9kZXYvbnVsbCAmJgorCXRlc3RfaTE4bmdyZXAgIiBjaGFuZ2VkLCA1IGluc2VydGlvbnMiIG91dHB1dAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDc1MDItY29tbWl0LnNoIGIvdC90NzUwMi1jb21taXQuc2gKaW5kZXggMTgxNDU2YS4uNjMxM2RhMiAxMDA3NTUKLS0tIGEvdC90NzUwMi1jb21taXQuc2gKKysrIGIvdC90NzUwMi1jb21taXQuc2gKQEAgLTQsNiArNCwxNSBAQAogCiAuIC4vdGVzdC1saWIuc2gKIAorY29tbWl0X21zZ19pcyAoKSB7CisJZXhwZWN0PWNvbW1pdF9tc2dfaXMuZXhwZWN0CisJYWN0dWFsPWNvbW1pdF9tc2dfaXMuYWN0dWFsCisKKwlwcmludGYgIiVzIiAiJChnaXQgbG9nIC0tcHJldHR5PWZvcm1hdDolcyViIC0xKSIgPiRhY3R1YWwgJiYKKwlwcmludGYgIiVzIiAiJDEiID4kZXhwZWN0ICYmCisJdGVzdF9pMThuY21wICRleHBlY3QgJGFjdHVhbAorfQorCiAjIEFyZ3VtZW50czogWzxwcmVmaXhdIFs8Y29tbWl0IG1lc3NhZ2U+XSBbPGNvbW1pdCBvcHRpb25zPl0KIGNoZWNrX3N1bW1hcnlfb25lbGluZSgpIHsKIAl0ZXN0X3RpY2sgJiYKQEAgLTE2MiwyMyArMTcxLDMwIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZlcmJvc2UgcmVzcGVjdHMgZGlmZiBjb25maWcnICcKIAotCWdpdCBjb25maWcgY29sb3IuZGlmZiBhbHdheXMgJiYKKwl0ZXN0X2NvbmZpZyBjb2xvci5kaWZmIGFsd2F5cyAmJgogCWdpdCBzdGF0dXMgLXYgPmFjdHVhbCAmJgotCWdyZXAgIlxbMW1kaWZmIC0tZ2l0IiBhY3R1YWwgJiYKLQlnaXQgY29uZmlnIC0tdW5zZXQgY29sb3IuZGlmZgorCWdyZXAgIlxbMW1kaWZmIC0tZ2l0IiBhY3R1YWwKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb21taXQgbWVzc2FnZXMgKHZlcmJhdGltLC10KScgJworbWVzZ193aXRoX2NvbW1lbnRfYW5kX25ld2xpbmVzPScKKyMgdGV4dAorCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ByZXBhcmUgZmlsZSB3aXRoIGNvbW1lbnQgbGluZSBhbmQgdHJhaWxpbmcgbmV3bGluZXMnICAnCisJcHJpbnRmICIlcyIgIiRtZXNnX3dpdGhfY29tbWVudF9hbmRfbmV3bGluZXMiID5leHBlY3QKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb21taXQgbWVzc2FnZXMgKHZlcmJhdGltIG9wdGlvbiwtdCknICcKIAogCWVjaG8gPj5uZWdhdGl2ZSAmJgotCXsgZWNobztlY2hvICIjIHRleHQiO2VjaG87IH0gPmV4cGVjdCAmJgotCWdpdCBjb21taXQgLS1jbGVhbnVwPXZlcmJhdGltIC10IGV4cGVjdCAtYSAmJgotCWdpdCBjYXQtZmlsZSAtcCBIRUFEIHxzZWQgLWUgIjEsL15cJC9kIiB8aGVhZCAtbiAzID5hY3R1YWwgJiYKKwlnaXQgY29tbWl0IC0tY2xlYW51cD12ZXJiYXRpbSAtLW5vLXN0YXR1cyAtdCBleHBlY3QgLWEgJiYKKwlnaXQgY2F0LWZpbGUgLXAgSEVBRCB8c2VkIC1lICIxLC9eXCQvZCIgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKIAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlcyAodmVyYmF0aW0sLUYpJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlcyAodmVyYmF0aW0gb3B0aW9uLC1GKScgJwogCiAJZWNobyA+Pm5lZ2F0aXZlICYmCiAJZ2l0IGNvbW1pdCAtLWNsZWFudXA9dmVyYmF0aW0gLUYgZXhwZWN0IC1hICYmCkBAIC0xODcsMTYgKzIwMywxNiBAQAogCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2VzICh2ZXJiYXRpbSwtbSknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2VzICh2ZXJiYXRpbSBvcHRpb24sLW0pJyAnCiAKIAllY2hvID4+bmVnYXRpdmUgJiYKLQlnaXQgY29tbWl0IC0tY2xlYW51cD12ZXJiYXRpbSAtbSAiJChjYXQgZXhwZWN0KSIgLWEgJiYKKwlnaXQgY29tbWl0IC0tY2xlYW51cD12ZXJiYXRpbSAtbSAiJG1lc2dfd2l0aF9jb21tZW50X2FuZF9uZXdsaW5lcyIgLWEgJiYKIAlnaXQgY2F0LWZpbGUgLXAgSEVBRCB8c2VkIC1lICIxLC9eXCQvZCI+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2VzICh3aGl0ZXNwYWNlLC1GKScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb21taXQgbWVzc2FnZXMgKHdoaXRlc3BhY2Ugb3B0aW9uLC1GKScgJwogCiAJZWNobyA+Pm5lZ2F0aXZlICYmCiAJeyBlY2hvO2VjaG8gIiMgdGV4dCI7ZWNobzsgfSA+dGV4dCAmJgpAQCAtMjA3LDcgKzIyMyw3IEBACiAKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb21taXQgbWVzc2FnZXMgKHN0cmlwLC1GKScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb21taXQgbWVzc2FnZXMgKHN0cmlwIG9wdGlvbiwtRiknICcKIAogCWVjaG8gPj5uZWdhdGl2ZSAmJgogCXsgZWNobztlY2hvICIjIHRleHQiO2VjaG8gc2FtcGxlO2VjaG87IH0gPnRleHQgJiYKQEAgLTIxOCw3ICsyMzQsNyBAQAogCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2VzIChzdHJpcCwtRiwtZSknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2VzIChzdHJpcCBvcHRpb24sLUYsLWUpJyAnCiAKIAllY2hvID4+bmVnYXRpdmUgJiYKIAl7IGVjaG87ZWNobyBzYW1wbGU7ZWNobzsgfSA+dGV4dCAmJgpAQCAtMjMxLDQ4ICsyNDcsMTM2IEBACiAjIFBsZWFzZSBlbnRlciB0aGUgY29tbWl0IG1lc3NhZ2UgZm9yIHlvdXIgY2hhbmdlcy4gTGluZXMgc3RhcnRpbmcKICMgd2l0aCAnIycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkgbWVzc2FnZSBhYm9ydHMgdGhlIGNvbW1pdC4iID5leHBlY3QKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb21taXQgbWVzc2FnZXMgKHN0cmlwLC1GLC1lKTogb3V0cHV0JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlcyAoc3RyaXAgb3B0aW9uLC1GLC1lKTogb3V0cHV0JyAnCiAJdGVzdF9pMThuY21wIGV4cGVjdCBhY3R1YWwKICcKIAotZWNobyAiIwotIyBBdXRob3I6ICAgICRHSVRfQVVUSE9SX05BTUUgPCRHSVRfQVVUSE9SX0VNQUlMPgotIyIgPj4gZXhwZWN0Cit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlIChmYWlsIG9uIGludmFsaWQgY2xlYW51cCBtb2RlIG9wdGlvbiknICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgY29tbWl0IC0tY2xlYW51cD1ub24tZXhpc3RlbnQKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnYXV0aG9yIGRpZmZlcmVudCBmcm9tIGNvbW1pdHRlcicgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb21taXQgbWVzc2FnZSAoZmFpbCBvbiBpbnZhbGlkIGNsZWFudXAgbW9kZSBjb25maWd1cmF0aW9uKScgJworCXRlc3RfbXVzdF9mYWlsIGdpdCAtYyBjb21taXQuY2xlYW51cD1ub24tZXhpc3RlbnQgY29tbWl0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2UgKG5vIGNvbmZpZyBhbmQgbm8gb3B0aW9uIHVzZXMgZGVmYXVsdCknICcKKwllY2hvIGNvbnRlbnQgPj5maWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJKAorCSAgdGVzdF9zZXRfZWRpdG9yICIkVEVTVF9ESVJFQ1RPUlkiL3Q3NTAwL2FkZC1jb250ZW50LWFuZC1jb21tZW50ICYmCisJICBnaXQgY29tbWl0IC0tbm8tc3RhdHVzCisJKSAmJgorCWNvbW1pdF9tc2dfaXMgImNvbW1pdCBtZXNzYWdlIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlIChvcHRpb24gb3ZlcnJpZGVzIGRlZmF1bHQpJyAnCisJZWNobyBjb250ZW50ID4+ZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCSgKKwkgIHRlc3Rfc2V0X2VkaXRvciAiJFRFU1RfRElSRUNUT1JZIi90NzUwMC9hZGQtY29udGVudC1hbmQtY29tbWVudCAmJgorCSAgZ2l0IGNvbW1pdCAtLWNsZWFudXA9d2hpdGVzcGFjZSAtLW5vLXN0YXR1cworCSkgJiYKKwljb21taXRfbXNnX2lzICJjb21taXQgbWVzc2FnZSAjIGNvbW1lbnQiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2UgKGNvbmZpZyBvdmVycmlkZXMgZGVmYXVsdCknICcKKwllY2hvIGNvbnRlbnQgPj5maWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJKAorCSAgdGVzdF9zZXRfZWRpdG9yICIkVEVTVF9ESVJFQ1RPUlkiL3Q3NTAwL2FkZC1jb250ZW50LWFuZC1jb21tZW50ICYmCisJICBnaXQgLWMgY29tbWl0LmNsZWFudXA9d2hpdGVzcGFjZSBjb21taXQgLS1uby1zdGF0dXMKKwkpICYmCisJY29tbWl0X21zZ19pcyAiY29tbWl0IG1lc3NhZ2UgIyBjb21tZW50IgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlIChvcHRpb24gb3ZlcnJpZGVzIGNvbmZpZyknICcKKwllY2hvIGNvbnRlbnQgPj5maWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJKAorCSAgdGVzdF9zZXRfZWRpdG9yICIkVEVTVF9ESVJFQ1RPUlkiL3Q3NTAwL2FkZC1jb250ZW50LWFuZC1jb21tZW50ICYmCisJICBnaXQgLWMgY29tbWl0LmNsZWFudXA9d2hpdGVzcGFjZSBjb21taXQgLS1jbGVhbnVwPWRlZmF1bHQKKwkpICYmCisJY29tbWl0X21zZ19pcyAiY29tbWl0IG1lc3NhZ2UiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2UgKGRlZmF1bHQsIC1tKScgJworCWVjaG8gY29udGVudCA+PmZpbGUgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwlnaXQgY29tbWl0IC1tICJtZXNzYWdlICNjb21tZW50ICIgJiYKKwljb21taXRfbXNnX2lzICJtZXNzYWdlICNjb21tZW50IgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlICh3aGl0ZXNwYWNlIG9wdGlvbiwgLW0pJyAnCisJZWNobyBjb250ZW50ID4+ZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCWdpdCBjb21taXQgLS1jbGVhbnVwPXdoaXRlc3BhY2UgLS1uby1zdGF0dXMgLW0gIm1lc3NhZ2UgI2NvbW1lbnQgIiAmJgorCWNvbW1pdF9tc2dfaXMgIm1lc3NhZ2UgI2NvbW1lbnQiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2UgKHdoaXRlc3BhY2UgY29uZmlnLCAtbSknICcKKwllY2hvIGNvbnRlbnQgPj5maWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJZ2l0IC1jIGNvbW1pdC5jbGVhbnVwPXdoaXRlc3BhY2UgY29tbWl0IC0tbm8tc3RhdHVzIC1tICJtZXNzYWdlICNjb21tZW50ICIgJiYKKwljb21taXRfbXNnX2lzICJtZXNzYWdlICNjb21tZW50IgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXNzYWdlIHNob3dzIGF1dGhvciB3aGVuIGl0IGlzIG5vdCBlcXVhbCB0byBjb21taXR0ZXInICcKIAllY2hvID4+bmVnYXRpdmUgJiYKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbW1pdCAtZSAtbSAic2FtcGxlIiAmJgotCWhlYWQgLW4gNyAuZ2l0L0NPTU1JVF9FRElUTVNHID5hY3R1YWwgJiYKLQl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbAorCWdpdCBjb21taXQgLWUgLW0gInNhbXBsZSIgLWEgJiYKKwl0ZXN0X2kxOG5ncmVwIFwKKwkgICJeIyBBdXRob3I6ICpBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPlwkIiBcCisJICAuZ2l0L0NPTU1JVF9FRElUTVNHCiAnCiAKLW12IGV4cGVjdCBleHBlY3QudG1wCi1zZWQgJyRkJyA8IGV4cGVjdC50bXAgPiBleHBlY3QKLXJtIC1mIGV4cGVjdC50bXAKLWVjaG8gIiMgQ29tbWl0dGVyOgotIyIgPj4gZXhwZWN0Ci0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbW1pdHRlciBpcyBhdXRvbWF0aWMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgQVVUT0lERU5UICdtZXNzYWdlIHNob3dzIGNvbW1pdHRlciB3aGVuIGl0IGlzIGF1dG9tYXRpYycgJwogCiAJZWNobyA+Pm5lZ2F0aXZlICYmCiAJKAogCQlzYW5lX3Vuc2V0IEdJVF9DT01NSVRURVJfRU1BSUwgJiYKIAkJc2FuZV91bnNldCBHSVRfQ09NTUlUVEVSX05BTUUgJiYKLQkJIyBtdXN0IGZhaWwgYmVjYXVzZSB0aGVyZSBpcyBubyBjaGFuZ2UKLQkJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbW1pdCAtZSAtbSAic2FtcGxlIgorCQlnaXQgY29tbWl0IC1lIC1tICJzYW1wbGUiIC1hCiAJKSAmJgotCWhlYWQgLW4gOCAuZ2l0L0NPTU1JVF9FRElUTVNHIHwJXAotCXNlZCAicy9eIyBDb21taXR0ZXI6IC4qLyMgQ29tbWl0dGVyOi8iID5hY3R1YWwKLQl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbAorCSMgdGhlIGlkZW50IGlzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgc3lzdGVtLCBzbyB3ZSBjYW5ub3QKKwkjIGNoZWNrIHRoZSBhY3R1YWwgdmFsdWUsIG9ubHkgdGhhdCBpdCBpcyB0aGVyZQorCXRlc3RfaTE4bmdyZXAgIl4jIENvbW1pdHRlcjogIiAuZ2l0L0NPTU1JVF9FRElUTVNHCiAnCiAKLXB3ZD1gcHdkYAotY2F0ID4+IC5naXQvRkFLRV9FRElUT1IgPDwgRU9GCi0jISAvYmluL3NoCi1lY2hvIGVkaXRvciBzdGFydGVkID4gIiRwd2QvLmdpdC9yZXN1bHQiCit3cml0ZV9zY3JpcHQgLmdpdC9GQUtFX0VESVRPUiA8PEVPRgorZWNobyBlZGl0b3Igc3RhcnRlZCA+ICIkKHB3ZCkvLmdpdC9yZXN1bHQiCiBleGl0IDAKIEVPRgotY2htb2QgK3ggLmdpdC9GQUtFX0VESVRPUgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICFBVVRPSURFTlQgJ2RvIG5vdCBmaXJlIGVkaXRvciB3aGVuIGNvbW1pdHRlciBpcyBib2d1cycgJworCT4uZ2l0L3Jlc3VsdAorCT5leHBlY3QgJiYKKworCWVjaG8gPj5uZWdhdGl2ZSAmJgorCSgKKwkJc2FuZV91bnNldCBHSVRfQ09NTUlUVEVSX0VNQUlMICYmCisJCXNhbmVfdW5zZXQgR0lUX0NPTU1JVFRFUl9OQU1FICYmCisJCUdJVF9FRElUT1I9IlwiJChwd2QpLy5naXQvRkFLRV9FRElUT1JcIiIgJiYKKwkJZXhwb3J0IEdJVF9FRElUT1IgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbW1pdCAtZSAtbSBzYW1wbGUgLWEKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0IC5naXQvcmVzdWx0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RvIG5vdCBmaXJlIGVkaXRvciBpZiAtbSA8bXNnPiB3YXMgZ2l2ZW4nICcKKwllY2hvIHRpY2sgPmZpbGUgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwllY2hvICJlZGl0b3Igbm90IHN0YXJ0ZWQiID4uZ2l0L3Jlc3VsdCAmJgorCShHSVRfRURJVE9SPSJcIiQocHdkKS8uZ2l0L0ZBS0VfRURJVE9SXCIiIGdpdCBjb21taXQgLW0gdGljaykgJiYKKwl0ZXN0ICIkKGNhdCAuZ2l0L3Jlc3VsdCkiID0gImVkaXRvciBub3Qgc3RhcnRlZCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZG8gbm90IGZpcmUgZWRpdG9yIGlmIC1tICIiIHdhcyBnaXZlbicgJworCWVjaG8gdG9jayA+ZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCWVjaG8gImVkaXRvciBub3Qgc3RhcnRlZCIgPi5naXQvcmVzdWx0ICYmCisJKEdJVF9FRElUT1I9IlwiJChwd2QpLy5naXQvRkFLRV9FRElUT1JcIiIgXAorCSBnaXQgY29tbWl0IC1tICIiIC0tYWxsb3ctZW1wdHktbWVzc2FnZSkgJiYKKwl0ZXN0ICIkKGNhdCAuZ2l0L3Jlc3VsdCkiID0gImVkaXRvciBub3Qgc3RhcnRlZCIKKycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZG8gbm90IGZpcmUgZWRpdG9yIGluIHRoZSBwcmVzZW5jZSBvZiBjb25mbGljdHMnICcKIApAQCAtMjkzLDE2ICszOTcsMTQgQEAKIAl0ZXN0X211c3RfZmFpbCBnaXQgY2hlcnJ5LXBpY2sgLW4gbWFzdGVyICYmCiAJZWNobyAiZWRpdG9yIG5vdCBzdGFydGVkIiA+LmdpdC9yZXN1bHQgJiYKIAkoCi0JCUdJVF9FRElUT1I9IiQocHdkKS8uZ2l0L0ZBS0VfRURJVE9SIiAmJgorCQlHSVRfRURJVE9SPSJcIiQocHdkKS8uZ2l0L0ZBS0VfRURJVE9SXCIiICYmCiAJCWV4cG9ydCBHSVRfRURJVE9SICYmCiAJCXRlc3RfbXVzdF9mYWlsIGdpdCBjb21taXQKIAkpICYmCiAJdGVzdCAiJChjYXQgLmdpdC9yZXN1bHQpIiA9ICJlZGl0b3Igbm90IHN0YXJ0ZWQiCiAnCiAKLXB3ZD1gcHdkYAotY2F0ID4uZ2l0L0ZBS0VfRURJVE9SIDw8RU9GCi0jISAkU0hFTExfUEFUSAord3JpdGVfc2NyaXB0IC5naXQvRkFLRV9FRElUT1IgPDxFT0YKICMga2lsbCAtVEVSTSBjb21tYW5kIGFkZGVkIGJlbG93LgogRU9GCiAKQEAgLTMzOSwyNyArNDQxLDI4IEBACiAKICcKIAotY2F0ID4uZ2l0L0ZBS0VfRURJVE9SIDw8RU9GCi0jISRTSEVMTF9QQVRICi1tdiAiXCQxIiAiXCQxLm9yaWciCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQgLXMgcGxhY2VzIHNvYiBvbiB0aGlyZCBsaW5lIGFmdGVyIHR3byBlbXB0eSBsaW5lcycgJworCWdpdCBjb21taXQgLXMgLS1hbGxvdy1lbXB0eSAtLWFsbG93LWVtcHR5LW1lc3NhZ2UgJiYKKwljYXQgPDwtRU9GID5leHBlY3QgJiYKKworCisJU2lnbmVkLW9mZi1ieTogJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+CisKKwlFT0YKKwlzZWQgLWUgIi9eIy9kIiAtZSAicy9eOi4qLy8iIC5naXQvQ09NTUlUX0VESVRNU0cgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKword3JpdGVfc2NyaXB0IC5naXQvRkFLRV9FRElUT1IgPDxcRU9GCittdiAiJDEiICIkMS5vcmlnIgogKAogCWVjaG8gbWVzc2FnZQotCWNhdCAiXCQxLm9yaWciCi0pID4iXCQxIgorCWNhdCAiJDEub3JpZyIKKykgPiIkMSIKIEVPRgogCiBlY2hvICcjIyBDdXN0b20gdGVtcGxhdGUnID50ZW1wbGF0ZQogCi1jbGVhcl9jb25maWcgKCkgewotCSgKLQkJZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCAiJDEiCi0JCWNhc2UgJD8gaW4KLQkJMHw1KQlleGl0IDAgOzsKLQkJKikJZXhpdCAxIDs7Ci0JCWVzYWMKLQkpCi19Ci0KIHRyeV9jb21taXQgKCkgewogCWdpdCByZXNldCAtLWhhcmQgJiYKIAllY2hvID4+bmVnYXRpdmUgJiYKQEAgLTM3NSw2NyArNDc4LDU3IEBACiB0cnlfY29tbWl0X3N0YXR1c19jb21ibyAoKSB7CiAKIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQnICcKLQkJY2xlYXJfY29uZmlnIGNvbW1pdC5zdGF0dXMgJiYKIAkJdHJ5X2NvbW1pdCAiIiAmJgogCQl0ZXN0X2kxOG5ncmVwICJeIyBDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiIC5naXQvQ09NTUlUX0VESVRNU0cKIAknCiAKIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQnICcKLQkJY2xlYXJfY29uZmlnIGNvbW1pdC5zdGF0dXMgJiYKIAkJdHJ5X2NvbW1pdCAiIiAmJgogCQl0ZXN0X2kxOG5ncmVwICJeIyBDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiIC5naXQvQ09NTUlUX0VESVRNU0cKIAknCiAKIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQgLS1zdGF0dXMnICcKLQkJY2xlYXJfY29uZmlnIGNvbW1pdC5zdGF0dXMgJiYKIAkJdHJ5X2NvbW1pdCAtLXN0YXR1cyAmJgogCQl0ZXN0X2kxOG5ncmVwICJeIyBDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiIC5naXQvQ09NTUlUX0VESVRNU0cKIAknCiAKIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQgLS1uby1zdGF0dXMnICcKLQkJY2xlYXJfY29uZmlnIGNvbW1pdC5zdGF0dXMgJiYKIAkJdHJ5X2NvbW1pdCAtLW5vLXN0YXR1cyAmJgogCQl0ZXN0X2kxOG5ncmVwICEgIl4jIENoYW5nZXMgdG8gYmUgY29tbWl0dGVkOiIgLmdpdC9DT01NSVRfRURJVE1TRwogCScKIAogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbW1pdCB3aXRoIGNvbW1pdC5zdGF0dXMgPSB5ZXMnICcKLQkJY2xlYXJfY29uZmlnIGNvbW1pdC5zdGF0dXMgJiYKLQkJZ2l0IGNvbmZpZyBjb21taXQuc3RhdHVzIHllcyAmJgorCQl0ZXN0X2NvbmZpZyBjb21taXQuc3RhdHVzIHllcyAmJgogCQl0cnlfY29tbWl0ICIiICYmCiAJCXRlc3RfaTE4bmdyZXAgIl4jIENoYW5nZXMgdG8gYmUgY29tbWl0dGVkOiIgLmdpdC9DT01NSVRfRURJVE1TRwogCScKIAogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbW1pdCB3aXRoIGNvbW1pdC5zdGF0dXMgPSBubycgJwotCQljbGVhcl9jb25maWcgY29tbWl0LnN0YXR1cyAmJgotCQlnaXQgY29uZmlnIGNvbW1pdC5zdGF0dXMgbm8gJiYKKwkJdGVzdF9jb25maWcgY29tbWl0LnN0YXR1cyBubyAmJgogCQl0cnlfY29tbWl0ICIiICYmCiAJCXRlc3RfaTE4bmdyZXAgISAiXiMgQ2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6IiAuZ2l0L0NPTU1JVF9FRElUTVNHCiAJJwogCiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tbWl0IC0tc3RhdHVzIHdpdGggY29tbWl0LnN0YXR1cyA9IHllcycgJwotCQljbGVhcl9jb25maWcgY29tbWl0LnN0YXR1cyAmJgotCQlnaXQgY29uZmlnIGNvbW1pdC5zdGF0dXMgeWVzICYmCisJCXRlc3RfY29uZmlnIGNvbW1pdC5zdGF0dXMgeWVzICYmCiAJCXRyeV9jb21taXQgLS1zdGF0dXMgJiYKIAkJdGVzdF9pMThuZ3JlcCAiXiMgQ2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6IiAuZ2l0L0NPTU1JVF9FRElUTVNHCiAJJwogCiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tbWl0IC0tbm8tc3RhdHVzIHdpdGggY29tbWl0LnN0YXR1cyA9IHllcycgJwotCQljbGVhcl9jb25maWcgY29tbWl0LnN0YXR1cyAmJgotCQlnaXQgY29uZmlnIGNvbW1pdC5zdGF0dXMgeWVzICYmCisJCXRlc3RfY29uZmlnIGNvbW1pdC5zdGF0dXMgeWVzICYmCiAJCXRyeV9jb21taXQgLS1uby1zdGF0dXMgJiYKIAkJdGVzdF9pMThuZ3JlcCAhICJeIyBDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiIC5naXQvQ09NTUlUX0VESVRNU0cKIAknCiAKIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQgLS1zdGF0dXMgd2l0aCBjb21taXQuc3RhdHVzID0gbm8nICcKLQkJY2xlYXJfY29uZmlnIGNvbW1pdC5zdGF0dXMgJiYKLQkJZ2l0IGNvbmZpZyBjb21taXQuc3RhdHVzIG5vICYmCisJCXRlc3RfY29uZmlnIGNvbW1pdC5zdGF0dXMgbm8gJiYKIAkJdHJ5X2NvbW1pdCAtLXN0YXR1cyAmJgogCQl0ZXN0X2kxOG5ncmVwICJeIyBDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiIC5naXQvQ09NTUlUX0VESVRNU0cKIAknCiAKIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQgLS1uby1zdGF0dXMgd2l0aCBjb21taXQuc3RhdHVzID0gbm8nICcKLQkJY2xlYXJfY29uZmlnIGNvbW1pdC5zdGF0dXMgJiYKLQkJZ2l0IGNvbmZpZyBjb21taXQuc3RhdHVzIG5vICYmCisJCXRlc3RfY29uZmlnIGNvbW1pdC5zdGF0dXMgbm8gJiYKIAkJdHJ5X2NvbW1pdCAtLW5vLXN0YXR1cyAmJgogCQl0ZXN0X2kxOG5ncmVwICEgIl4jIENoYW5nZXMgdG8gYmUgY29tbWl0dGVkOiIgLmdpdC9DT01NSVRfRURJVE1TRwogCScKQEAgLTQ0OCw0ICs1NDEsMTAgQEAKIAogdHJ5X2NvbW1pdF9zdGF0dXNfY29tYm8KIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tbWl0IC0tc3RhdHVzIHdpdGggY3VzdG9tIGNvbW1lbnQgY2hhcmFjdGVyJyAnCisJdGVzdF9jb25maWcgY29yZS5jb21tZW50Y2hhciAiOyIgJiYKKwl0cnlfY29tbWl0IC0tc3RhdHVzICYmCisJdGVzdF9pMThuZ3JlcCAiXjsgQ2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6IiAuZ2l0L0NPTU1JVF9FRElUTVNHCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzUwNS1wcmVwYXJlLWNvbW1pdC1tc2ctaG9vay5zaCBiL3QvdDc1MDUtcHJlcGFyZS1jb21taXQtbXNnLWhvb2suc2gKaW5kZXggNWI0YjY5NC4uMzU3Mzc1MSAxMDA3NTUKLS0tIGEvdC90NzUwNS1wcmVwYXJlLWNvbW1pdC1tc2ctaG9vay5zaAorKysgYi90L3Q3NTA1LXByZXBhcmUtY29tbWl0LW1zZy1ob29rLnNoCkBAIC0xNjcsNSArMTY3LDE5IEBACiAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnd2l0aCBmYWlsaW5nIGhvb2sgKG1lcmdlKScgJworCisJZ2l0IGNoZWNrb3V0IC1CIG90aGVyIEhFQURAezF9ICYmCisJZWNobyAibW9yZSIgPj4gZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCXJtIC1mICIkSE9PSyIgJiYKKwlnaXQgY29tbWl0IC1tIG90aGVyICYmCisJd3JpdGVfc2NyaXB0ICIkSE9PSyIgPDwtRU9GCisJZXhpdCAxCisJRU9GCisJZ2l0IGNoZWNrb3V0IC0gJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2Ugb3RoZXIKKworJwogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDc1MDgtc3RhdHVzLnNoIGIvdC90NzUwOC1zdGF0dXMuc2gKaW5kZXggMjhlMTg0OC4uZTJmZmRhYyAxMDA3NTUKLS0tIGEvdC90NzUwOC1zdGF0dXMuc2gKKysrIGIvdC90NzUwOC1zdGF0dXMuc2gKQEAgLTgsNiArOCw3IEBACiAuIC4vdGVzdC1saWIuc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIC1oIGluIGJyb2tlbiByZXBvc2l0b3J5JyAnCisJZ2l0IGNvbmZpZyAtLWdsb2JhbCBhZHZpY2Uuc3RhdHVzdW9wdGlvbiBmYWxzZSAmJgogCW1rZGlyIGJyb2tlbiAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLWZyIGJyb2tlbiIgJiYKIAkoCkBAIC04MCw3ICs4MSw3IEBACiAjCWRpcjEvdW50cmFja2VkIGRpcjIvdW50cmFja2VkIHVudHJhY2tlZAogIwlkaXIyL21vZGlmaWVkICBvdXRwdXQKIEVPRgotCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0IG91dHB1dAogJwogCiBjYXQgPmV4cGVjdCA8PFxFT0YKQEAgLTEzMCw4ICsxMzEsNyBAQAogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyAoYWR2aWNlLnN0YXR1c0hpbnRzIGZhbHNlKScgJwotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNvbmZpZyAtLXVuc2V0IGFkdmljZS5zdGF0dXNIaW50cyIgJiYKLQlnaXQgY29uZmlnIGFkdmljZS5zdGF0dXNIaW50cyBmYWxzZSAmJgorCXRlc3RfY29uZmlnIGFkdmljZS5zdGF0dXNIaW50cyBmYWxzZSAmJgogCWdpdCBzdGF0dXMgPm91dHB1dCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0CiAKQEAgLTMzMSw4ICszMzEsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgKHN0YXR1cy5zaG93VW50cmFja2VkRmlsZXMgbm8pJyAnCi0JZ2l0IGNvbmZpZyBzdGF0dXMuc2hvd3VudHJhY2tlZGZpbGVzIG5vCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgc3RhdHVzLnNob3d1bnRyYWNrZWRmaWxlcyIgJiYKKwl0ZXN0X2NvbmZpZyBzdGF0dXMuc2hvd3VudHJhY2tlZGZpbGVzIG5vICYmCiAJZ2l0IHN0YXR1cyA+b3V0cHV0ICYmCiAJdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQKICcKQEAgLTM0NywxMiArMzQ2LDExIEBACiAjCiAjIFVudHJhY2tlZCBmaWxlcyBub3QgbGlzdGVkCiBFT0YKLWdpdCBjb25maWcgYWR2aWNlLnN0YXR1c0hpbnRzIGZhbHNlCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgLXVubyAoYWR2aWNlLnN0YXR1c0hpbnRzIGZhbHNlKScgJworCXRlc3RfY29uZmlnIGFkdmljZS5zdGF0dXNIaW50cyBmYWxzZSAmJgogCWdpdCBzdGF0dXMgLXVubyA+b3V0cHV0ICYmCiAJdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQKICcKLWdpdCBjb25maWcgLS11bnNldCBhZHZpY2Uuc3RhdHVzSGludHMKIAogY2F0ID5leHBlY3QgPDwgRU9GCiAgTSBkaXIxL21vZGlmaWVkCkBAIC0zOTksOCArMzk3LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIChzdGF0dXMuc2hvd1VudHJhY2tlZEZpbGVzIG5vcm1hbCknICcKLQlnaXQgY29uZmlnIHN0YXR1cy5zaG93dW50cmFja2VkZmlsZXMgbm9ybWFsCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgc3RhdHVzLnNob3d1bnRyYWNrZWRmaWxlcyIgJiYKKwl0ZXN0X2NvbmZpZyBzdGF0dXMuc2hvd3VudHJhY2tlZGZpbGVzIG5vcm1hbAogCWdpdCBzdGF0dXMgPm91dHB1dCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0CiAnCkBAIC00NTgsOCArNDU1LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIChzdGF0dXMuc2hvd1VudHJhY2tlZEZpbGVzIGFsbCknICcKLQlnaXQgY29uZmlnIHN0YXR1cy5zaG93dW50cmFja2VkZmlsZXMgYWxsCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgc3RhdHVzLnNob3d1bnRyYWNrZWRmaWxlcyIgJiYKKwl0ZXN0X2NvbmZpZyBzdGF0dXMuc2hvd3VudHJhY2tlZGZpbGVzIGFsbAogCWdpdCBzdGF0dXMgPm91dHB1dCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0CiAnCkBAIC00ODQsMTAgKzQ4MCw5IEBACiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIC1zIChzdGF0dXMuc2hvd1VudHJhY2tlZEZpbGVzIGFsbCknICcKLQlnaXQgY29uZmlnIHN0YXR1cy5zaG93dW50cmFja2VkZmlsZXMgYWxsCisJdGVzdF9jb25maWcgc3RhdHVzLnNob3d1bnRyYWNrZWRmaWxlcyBhbGwgJiYKIAlnaXQgc3RhdHVzIC1zID5vdXRwdXQgJiYKIAlybSAtcmYgZGlyMyAmJgotCWdpdCBjb25maWcgLS11bnNldCBzdGF0dXMuc2hvd3VudHJhY2tlZGZpbGVzICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogCkBAIC01ODcsMTUgKzU4MiwxMyBAQAogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aXRoIGNvbG9yLnVpJyAnCi0JZ2l0IGNvbmZpZyBjb2xvci51aSBhbHdheXMgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjb25maWcgLS11bnNldCBjb2xvci51aSIgJiYKKwl0ZXN0X2NvbmZpZyBjb2xvci51aSBhbHdheXMgJiYKIAlnaXQgc3RhdHVzIHwgdGVzdF9kZWNvZGVfY29sb3IgPm91dHB1dCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aXRoIGNvbG9yLnN0YXR1cycgJwotCWdpdCBjb25maWcgY29sb3Iuc3RhdHVzIGFsd2F5cyAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNvbmZpZyAtLXVuc2V0IGNvbG9yLnN0YXR1cyIgJiYKKwl0ZXN0X2NvbmZpZyBjb2xvci5zdGF0dXMgYWx3YXlzICYmCiAJZ2l0IHN0YXR1cyB8IHRlc3RfZGVjb2RlX2NvbG9yID5vdXRwdXQgJiYKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0IG91dHB1dAogJwpAQCAtNzE5LDggKzcxMiw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aXRob3V0IHJlbGF0aXZlIHBhdGhzJyAnCiAKLQlnaXQgY29uZmlnIHN0YXR1cy5yZWxhdGl2ZVBhdGhzIGZhbHNlICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgc3RhdHVzLnJlbGF0aXZlUGF0aHMiICYmCisJdGVzdF9jb25maWcgc3RhdHVzLnJlbGF0aXZlUGF0aHMgZmFsc2UgJiYKIAkoY2QgZGlyMSAmJiBnaXQgc3RhdHVzKSA+b3V0cHV0ICYmCiAJdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQKIApAQCAtNzM5LDggKzczMSw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyAtcyB3aXRob3V0IHJlbGF0aXZlIHBhdGhzJyAnCiAKLQlnaXQgY29uZmlnIHN0YXR1cy5yZWxhdGl2ZVBhdGhzIGZhbHNlICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgc3RhdHVzLnJlbGF0aXZlUGF0aHMiICYmCisJdGVzdF9jb25maWcgc3RhdHVzLnJlbGF0aXZlUGF0aHMgZmFsc2UgJiYKIAkoY2QgZGlyMSAmJiBnaXQgc3RhdHVzIC1zKSA+b3V0cHV0ICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogCkBAIC05NDEsNyArOTMyLDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIC16IGltcGxpZXMgcG9yY2VsYWluJyAnCiAJZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiB8Ci0JcGVybCAtcGUgInMvXDAxMi9cMDAwL2ciID5leHBlY3QgJiYKKwkiJFBFUkxfUEFUSCIgLXBlICJzL1wwMTIvXDAwMC9nIiA+ZXhwZWN0ICYmCiAJZ2l0IHN0YXR1cyAteiA+b3V0cHV0ICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwpAQCAtMTAzNywxNSArMTAyOCwxNCBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICcuZ2l0bW9kdWxlcyBpZ25vcmU9dW50cmFja2VkIHN1cHByZXNzZXMgc3VibW9kdWxlcyB3aXRoIHVudHJhY2tlZCBjb250ZW50JyAnCi0JZ2l0IGNvbmZpZyBkaWZmLmlnbm9yZVN1Ym1vZHVsZXMgZGlydHkgJiYKKwl0ZXN0X2NvbmZpZyBkaWZmLmlnbm9yZVN1Ym1vZHVsZXMgZGlydHkgJiYKIAlnaXQgc3RhdHVzID5vdXRwdXQgJiYKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0IG91dHB1dCAmJgogCWdpdCBjb25maWcgLS1hZGQgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLnN1Ym5hbWUuaWdub3JlIHVudHJhY2tlZCAmJgogCWdpdCBjb25maWcgLS1hZGQgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLnN1Ym5hbWUucGF0aCBzbSAmJgogCWdpdCBzdGF0dXMgPm91dHB1dCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0ICYmCi0JZ2l0IGNvbmZpZyAtZiAuZ2l0bW9kdWxlcyAgLS1yZW1vdmUtc2VjdGlvbiBzdWJtb2R1bGUuc3VibmFtZSAmJgotCWdpdCBjb25maWcgLS11bnNldCBkaWZmLmlnbm9yZVN1Ym1vZHVsZXMKKwlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzICAtLXJlbW92ZS1zZWN0aW9uIHN1Ym1vZHVsZS5zdWJuYW1lCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy5naXQvY29uZmlnIGlnbm9yZT11bnRyYWNrZWQgc3VwcHJlc3NlcyBzdWJtb2R1bGVzIHdpdGggdW50cmFja2VkIGNvbnRlbnQnICcKQEAgLTEwNjUsMTUgKzEwNTUsMTQgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnLmdpdG1vZHVsZXMgaWdub3JlPWRpcnR5IHN1cHByZXNzZXMgc3VibW9kdWxlcyB3aXRoIHVudHJhY2tlZCBjb250ZW50JyAnCi0JZ2l0IGNvbmZpZyBkaWZmLmlnbm9yZVN1Ym1vZHVsZXMgZGlydHkgJiYKKwl0ZXN0X2NvbmZpZyBkaWZmLmlnbm9yZVN1Ym1vZHVsZXMgZGlydHkgJiYKIAlnaXQgc3RhdHVzID5vdXRwdXQgJiYKIAkhIHRlc3QgLXMgYWN0dWFsICYmCiAJZ2l0IGNvbmZpZyAtLWFkZCAtZiAuZ2l0bW9kdWxlcyBzdWJtb2R1bGUuc3VibmFtZS5pZ25vcmUgZGlydHkgJiYKIAlnaXQgY29uZmlnIC0tYWRkIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS5zdWJuYW1lLnBhdGggc20gJiYKIAlnaXQgc3RhdHVzID5vdXRwdXQgJiYKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0IG91dHB1dCAmJgotCWdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgIC0tcmVtb3ZlLXNlY3Rpb24gc3VibW9kdWxlLnN1Ym5hbWUgJiYKLQlnaXQgY29uZmlnIC0tdW5zZXQgZGlmZi5pZ25vcmVTdWJtb2R1bGVzCisJZ2l0IGNvbmZpZyAtZiAuZ2l0bW9kdWxlcyAgLS1yZW1vdmUtc2VjdGlvbiBzdWJtb2R1bGUuc3VibmFtZQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICcuZ2l0L2NvbmZpZyBpZ25vcmU9ZGlydHkgc3VwcHJlc3NlcyBzdWJtb2R1bGVzIHdpdGggdW50cmFja2VkIGNvbnRlbnQnICcKQEAgLTEyNTQsNiArMTI0Myw1NCBAQAogJwogCiBjYXQgPiBleHBlY3QgPDwgRU9GCis7IE9uIGJyYW5jaCBtYXN0ZXIKKzsgQ2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6Cis7ICAgKHVzZSAiZ2l0IHJlc2V0IEhFQUQgPGZpbGU+Li4uIiB0byB1bnN0YWdlKQorOworOwltb2RpZmllZDogICBzbQorOworOyBDaGFuZ2VzIG5vdCBzdGFnZWQgZm9yIGNvbW1pdDoKKzsgICAodXNlICJnaXQgYWRkIDxmaWxlPi4uLiIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpCis7ICAgKHVzZSAiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLiIgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHdvcmtpbmcgZGlyZWN0b3J5KQorOworOwltb2RpZmllZDogICBkaXIxL21vZGlmaWVkCis7CW1vZGlmaWVkOiAgIHNtIChuZXcgY29tbWl0cykKKzsKKzsgU3VibW9kdWxlIGNoYW5nZXMgdG8gYmUgY29tbWl0dGVkOgorOworOyAqIHNtICRoZWFkLi4uJG5ld19oZWFkICgxKToKKzsgICA+IEFkZCBiYXIKKzsKKzsgU3VibW9kdWxlcyBjaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoKKzsKKzsgKiBzbSAkbmV3X2hlYWQuLi4kaGVhZDIgKDEpOgorOyAgID4gMm5kIGNvbW1pdAorOworOyBVbnRyYWNrZWQgZmlsZXM6Cis7ICAgKHVzZSAiZ2l0IGFkZCA8ZmlsZT4uLi4iIHRvIGluY2x1ZGUgaW4gd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkKKzsKKzsJLmdpdG1vZHVsZXMKKzsJZGlyMS91bnRyYWNrZWQKKzsJZGlyMi9tb2RpZmllZAorOwlkaXIyL3VudHJhY2tlZAorOwlleHBlY3QKKzsJb3V0cHV0Cis7CXVudHJhY2tlZAorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgInN0YXR1cyAoY29yZS5jb21tZW50Y2hhciB3aXRoIHN1Ym1vZHVsZSBzdW1tYXJ5KSIgJworCXRlc3RfY29uZmlnIGNvcmUuY29tbWVudGNoYXIgIjsiICYmCisJZ2l0IHN0YXR1cyA+b3V0cHV0ICYmCisJdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAic3RhdHVzIChjb3JlLmNvbW1lbnRjaGFyIHdpdGggdHdvIGNoYXJzIHdpdGggc3VibW9kdWxlIHN1bW1hcnkpIiAnCisJdGVzdF9jb25maWcgY29yZS5jb21tZW50Y2hhciAiOzsiICYmCisJZ2l0IHN0YXR1cyA+b3V0cHV0ICYmCisJdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQKKycKKworY2F0ID4gZXhwZWN0IDw8IEVPRgogIyBPbiBicmFuY2ggbWFzdGVyCiAjIENoYW5nZXMgbm90IHN0YWdlZCBmb3IgY29tbWl0OgogIyAgICh1c2UgImdpdCBhZGQgPGZpbGU+Li4uIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkKZGlmZiAtLWdpdCBhL3QvdDc1MTItc3RhdHVzLWhlbHAuc2ggYi90L3Q3NTEyLXN0YXR1cy1oZWxwLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJmMDhkNGUKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q3NTEyLXN0YXR1cy1oZWxwLnNoCkBAIC0wLDAgKzEsNzM5IEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDEyIFZhbGVudGluIER1cGVycmF5LCBMdWNpZW4gS29uZywgRnJhbmNrIEpvbmFzLAorIwkJICAgICBUaG9tYXMgTmd1eSwgS2hvaSBOZ3V5ZW4KKyMJCSAgICAgR3Jlbm9ibGUgSU5QIEVuc2ltYWcKKyMKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN0YXR1cyBhZHZpY2UnCisKKy4gLi90ZXN0LWxpYi5zaAorCisuICIkVEVTVF9ESVJFQ1RPUlkiL2xpYi1yZWJhc2Uuc2gKKworc2V0X2Zha2VfZWRpdG9yCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ByZXBhcmUgZm9yIGNvbmZsaWN0cycgJworCWdpdCBjb25maWcgLS1nbG9iYWwgYWR2aWNlLnN0YXR1c3VvcHRpb24gZmFsc2UgJiYKKwl0ZXN0X2NvbW1pdCBpbml0IG1haW4udHh0IGluaXQgJiYKKwlnaXQgYnJhbmNoIGNvbmZsaWN0cyAmJgorCXRlc3RfY29tbWl0IG9uX21hc3RlciBtYWluLnR4dCBvbl9tYXN0ZXIgJiYKKwlnaXQgY2hlY2tvdXQgY29uZmxpY3RzICYmCisJdGVzdF9jb21taXQgb25fY29uZmxpY3RzIG1haW4udHh0IG9uX2NvbmZsaWN0cworJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aGVuIGNvbmZsaWN0cyB1bnJlc29sdmVkJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIG1hc3RlciAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgorCSMgT24gYnJhbmNoIGNvbmZsaWN0cworCSMgWW91IGhhdmUgdW5tZXJnZWQgcGF0aHMuCisJIyAgIChmaXggY29uZmxpY3RzIGFuZCBydW4gImdpdCBjb21taXQiKQorCSMKKwkjIFVubWVyZ2VkIHBhdGhzOgorCSMgICAodXNlICJnaXQgYWRkIDxmaWxlPi4uLiIgdG8gbWFyayByZXNvbHV0aW9uKQorCSMKKwkjCWJvdGggbW9kaWZpZWQ6ICAgICAgbWFpbi50eHQKKwkjCisJbm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXQgKHVzZSAiZ2l0IGFkZCIgYW5kL29yICJnaXQgY29tbWl0IC1hIikKKwlFT0YKKwlnaXQgc3RhdHVzIC0tdW50cmFja2VkLWZpbGVzPW5vID5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIHdoZW4gY29uZmxpY3RzIHJlc29sdmVkIGJlZm9yZSBjb21taXQnICcKKwlnaXQgcmVzZXQgLS1oYXJkIGNvbmZsaWN0cyAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSBtYXN0ZXIgJiYKKwllY2hvIG9uZSA+bWFpbi50eHQgJiYKKwlnaXQgYWRkIG1haW4udHh0ICYmCisJY2F0ID5leHBlY3RlZCA8PC1cRU9GICYmCisJIyBPbiBicmFuY2ggY29uZmxpY3RzCisJIyBBbGwgY29uZmxpY3RzIGZpeGVkIGJ1dCB5b3UgYXJlIHN0aWxsIG1lcmdpbmcuCisJIyAgICh1c2UgImdpdCBjb21taXQiIHRvIGNvbmNsdWRlIG1lcmdlKQorCSMKKwkjIENoYW5nZXMgdG8gYmUgY29tbWl0dGVkOgorCSMKKwkjCW1vZGlmaWVkOiAgIG1haW4udHh0CisJIworCSMgVW50cmFja2VkIGZpbGVzIG5vdCBsaXN0ZWQgKHVzZSAtdSBvcHRpb24gdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ByZXBhcmUgZm9yIHJlYmFzZSBjb25mbGljdHMnICcKKwlnaXQgcmVzZXQgLS1oYXJkIG1hc3RlciAmJgorCWdpdCBjaGVja291dCAtYiByZWJhc2VfY29uZmxpY3RzICYmCisJdGVzdF9jb21taXQgb25lX3JlYmFzZSBtYWluLnR4dCBvbmUgJiYKKwl0ZXN0X2NvbW1pdCB0d29fcmViYXNlIG1haW4udHh0IHR3byAmJgorCXRlc3RfY29tbWl0IHRocmVlX3JlYmFzZSBtYWluLnR4dCB0aHJlZQorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aGVuIHJlYmFzZSBpbiBwcm9ncmVzcyBiZWZvcmUgcmVzb2x2aW5nIGNvbmZsaWN0cycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgorCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRF5eKSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgSEVBRF4gLS1vbnRvIEhFQUReXiAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJIyBIRUFEIGRldGFjaGVkIGF0ICRPTlRPCisJIyBZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZyBicmFuY2ggJ1wnJ3JlYmFzZV9jb25mbGljdHMnXCcnIG9uICdcJyckT05UTydcJycuCisJIyAgIChmaXggY29uZmxpY3RzIGFuZCB0aGVuIHJ1biAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIikKKwkjICAgKHVzZSAiZ2l0IHJlYmFzZSAtLXNraXAiIHRvIHNraXAgdGhpcyBwYXRjaCkKKwkjICAgKHVzZSAiZ2l0IHJlYmFzZSAtLWFib3J0IiB0byBjaGVjayBvdXQgdGhlIG9yaWdpbmFsIGJyYW5jaCkKKwkjCisJIyBVbm1lcmdlZCBwYXRoczoKKwkjICAgKHVzZSAiZ2l0IHJlc2V0IEhFQUQgPGZpbGU+Li4uIiB0byB1bnN0YWdlKQorCSMgICAodXNlICJnaXQgYWRkIDxmaWxlPi4uLiIgdG8gbWFyayByZXNvbHV0aW9uKQorCSMKKwkjCWJvdGggbW9kaWZpZWQ6ICAgICAgbWFpbi50eHQKKwkjCisJbm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXQgKHVzZSAiZ2l0IGFkZCIgYW5kL29yICJnaXQgY29tbWl0IC1hIikKKwlFT0YKKwlnaXQgc3RhdHVzIC0tdW50cmFja2VkLWZpbGVzPW5vID5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIHdoZW4gcmViYXNlIGluIHByb2dyZXNzIGJlZm9yZSByZWJhc2UgLS1jb250aW51ZScgJworCWdpdCByZXNldCAtLWhhcmQgcmViYXNlX2NvbmZsaWN0cyAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgorCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRF5eKSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgSEVBRF4gLS1vbnRvIEhFQUReXiAmJgorCWVjaG8gdGhyZWUgPm1haW4udHh0ICYmCisJZ2l0IGFkZCBtYWluLnR4dCAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJIyBIRUFEIGRldGFjaGVkIGF0ICRPTlRPCisJIyBZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZyBicmFuY2ggJ1wnJ3JlYmFzZV9jb25mbGljdHMnXCcnIG9uICdcJyckT05UTydcJycuCisJIyAgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gImdpdCByZWJhc2UgLS1jb250aW51ZSIpCisJIworCSMgQ2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6CisJIyAgICh1c2UgImdpdCByZXNldCBIRUFEIDxmaWxlPi4uLiIgdG8gdW5zdGFnZSkKKwkjCisJIwltb2RpZmllZDogICBtYWluLnR4dAorCSMKKwkjIFVudHJhY2tlZCBmaWxlcyBub3QgbGlzdGVkICh1c2UgLXUgb3B0aW9uIHRvIHNob3cgdW50cmFja2VkIGZpbGVzKQorCUVPRgorCWdpdCBzdGF0dXMgLS11bnRyYWNrZWQtZmlsZXM9bm8gPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3RlZCBhY3R1YWwKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcmVwYXJlIGZvciByZWJhc2VfaV9jb25mbGljdHMnICcKKwlnaXQgcmVzZXQgLS1oYXJkIG1hc3RlciAmJgorCWdpdCBjaGVja291dCAtYiByZWJhc2VfaV9jb25mbGljdHMgJiYKKwl0ZXN0X2NvbW1pdCBvbmVfdW5tZXJnZSBtYWluLnR4dCBvbmVfdW5tZXJnZSAmJgorCWdpdCBicmFuY2ggcmViYXNlX2lfY29uZmxpY3RzX3NlY29uZCAmJgorCXRlc3RfY29tbWl0IG9uZV9tYXN0ZXIgbWFpbi50eHQgb25lX21hc3RlciAmJgorCWdpdCBjaGVja291dCByZWJhc2VfaV9jb25mbGljdHNfc2Vjb25kICYmCisJdGVzdF9jb21taXQgb25lX3NlY29uZCBtYWluLnR4dCBvbmVfc2Vjb25kCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIGR1cmluZyByZWJhc2UgLWkgd2hlbiBjb25mbGljdHMgdW5yZXNvbHZlZCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgorCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgcmViYXNlX2lfY29uZmxpY3RzKSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLWkgcmViYXNlX2lfY29uZmxpY3RzICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwkjIEhFQUQgZGV0YWNoZWQgYXQgJE9OVE8KKwkjIFlvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nIGJyYW5jaCAnXCcncmViYXNlX2lfY29uZmxpY3RzX3NlY29uZCdcJycgb24gJ1wnJyRPTlRPJ1wnJy4KKwkjICAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuICJnaXQgcmViYXNlIC0tY29udGludWUiKQorCSMgICAodXNlICJnaXQgcmViYXNlIC0tc2tpcCIgdG8gc2tpcCB0aGlzIHBhdGNoKQorCSMgICAodXNlICJnaXQgcmViYXNlIC0tYWJvcnQiIHRvIGNoZWNrIG91dCB0aGUgb3JpZ2luYWwgYnJhbmNoKQorCSMKKwkjIFVubWVyZ2VkIHBhdGhzOgorCSMgICAodXNlICJnaXQgcmVzZXQgSEVBRCA8ZmlsZT4uLi4iIHRvIHVuc3RhZ2UpCisJIyAgICh1c2UgImdpdCBhZGQgPGZpbGU+Li4uIiB0byBtYXJrIHJlc29sdXRpb24pCisJIworCSMJYm90aCBtb2RpZmllZDogICAgICBtYWluLnR4dAorCSMKKwlubyBjaGFuZ2VzIGFkZGVkIHRvIGNvbW1pdCAodXNlICJnaXQgYWRkIiBhbmQvb3IgImdpdCBjb21taXQgLWEiKQorCUVPRgorCWdpdCBzdGF0dXMgLS11bnRyYWNrZWQtZmlsZXM9bm8gPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3RlZCBhY3R1YWwKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgZHVyaW5nIHJlYmFzZSAtaSBhZnRlciByZXNvbHZpbmcgY29uZmxpY3RzJyAnCisJZ2l0IHJlc2V0IC0taGFyZCByZWJhc2VfaV9jb25mbGljdHNfc2Vjb25kICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCisJT05UTz0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCByZWJhc2VfaV9jb25mbGljdHMpICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSAtaSByZWJhc2VfaV9jb25mbGljdHMgJiYKKwlnaXQgYWRkIG1haW4udHh0ICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwkjIEhFQUQgZGV0YWNoZWQgYXQgJE9OVE8KKwkjIFlvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nIGJyYW5jaCAnXCcncmViYXNlX2lfY29uZmxpY3RzX3NlY29uZCdcJycgb24gJ1wnJyRPTlRPJ1wnJy4KKwkjICAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIikKKwkjCisJIyBDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoKKwkjICAgKHVzZSAiZ2l0IHJlc2V0IEhFQUQgPGZpbGU+Li4uIiB0byB1bnN0YWdlKQorCSMKKwkjCW1vZGlmaWVkOiAgIG1haW4udHh0CisJIworCSMgVW50cmFja2VkIGZpbGVzIG5vdCBsaXN0ZWQgKHVzZSAtdSBvcHRpb24gdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aGVuIHJlYmFzaW5nIC1pIGluIGVkaXQgbW9kZScgJworCWdpdCByZXNldCAtLWhhcmQgbWFzdGVyICYmCisJZ2l0IGNoZWNrb3V0IC1iIHJlYmFzZV9pX2VkaXQgJiYKKwl0ZXN0X2NvbW1pdCBvbmVfcmViYXNlX2kgbWFpbi50eHQgb25lICYmCisJdGVzdF9jb21taXQgdHdvX3JlYmFzZV9pIG1haW4udHh0IHR3byAmJgorCXRlc3RfY29tbWl0IHRocmVlX3JlYmFzZV9pIG1haW4udHh0IHRocmVlICYmCisJRkFLRV9MSU5FUz0iMSBlZGl0IDIiICYmCisJZXhwb3J0IEZBS0VfTElORVMgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZWJhc2UgLS1hYm9ydCIgJiYKKwlPTlRPPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUR+MikgJiYKKwlUR1Q9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgdHdvX3JlYmFzZV9pKSAmJgorCWdpdCByZWJhc2UgLWkgSEVBRH4yICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwkjIEhFQUQgZGV0YWNoZWQgZnJvbSAkVEdUCisJIyBZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIGEgY29tbWl0IHdoaWxlIHJlYmFzaW5nIGJyYW5jaCAnXCcncmViYXNlX2lfZWRpdCdcJycgb24gJ1wnJyRPTlRPJ1wnJy4KKwkjICAgKHVzZSAiZ2l0IGNvbW1pdCAtLWFtZW5kIiB0byBhbWVuZCB0aGUgY3VycmVudCBjb21taXQpCisJIyAgICh1c2UgImdpdCByZWJhc2UgLS1jb250aW51ZSIgb25jZSB5b3UgYXJlIHNhdGlzZmllZCB3aXRoIHlvdXIgY2hhbmdlcykKKwkjCisJbm90aGluZyB0byBjb21taXQgKHVzZSAtdSB0byBzaG93IHVudHJhY2tlZCBmaWxlcykKKwlFT0YKKwlnaXQgc3RhdHVzIC0tdW50cmFja2VkLWZpbGVzPW5vID5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIHdoZW4gc3BsaXR0aW5nIGEgY29tbWl0JyAnCisJZ2l0IHJlc2V0IC0taGFyZCBtYXN0ZXIgJiYKKwlnaXQgY2hlY2tvdXQgLWIgc3BsaXRfY29tbWl0ICYmCisJdGVzdF9jb21taXQgb25lX3NwbGl0IG1haW4udHh0IG9uZSAmJgorCXRlc3RfY29tbWl0IHR3b19zcGxpdCBtYWluLnR4dCB0d28gJiYKKwl0ZXN0X2NvbW1pdCB0aHJlZV9zcGxpdCBtYWluLnR4dCB0aHJlZSAmJgorCXRlc3RfY29tbWl0IGZvdXJfc3BsaXQgbWFpbi50eHQgZm91ciAmJgorCUZBS0VfTElORVM9IjEgZWRpdCAyIDMiICYmCisJZXhwb3J0IEZBS0VfTElORVMgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZWJhc2UgLS1hYm9ydCIgJiYKKwlPTlRPPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUR+MykgJiYKKwlnaXQgcmViYXNlIC1pIEhFQUR+MyAmJgorCWdpdCByZXNldCBIRUFEXiAmJgorCVRHVD0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEKSAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJIyBIRUFEIGRldGFjaGVkIGF0ICRUR1QKKwkjIFlvdSBhcmUgY3VycmVudGx5IHNwbGl0dGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ3NwbGl0X2NvbW1pdCdcJycgb24gJ1wnJyRPTlRPJ1wnJy4KKwkjICAgKE9uY2UgeW91ciB3b3JraW5nIGRpcmVjdG9yeSBpcyBjbGVhbiwgcnVuICJnaXQgcmViYXNlIC0tY29udGludWUiKQorCSMKKwkjIENoYW5nZXMgbm90IHN0YWdlZCBmb3IgY29tbWl0OgorCSMgICAodXNlICJnaXQgYWRkIDxmaWxlPi4uLiIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpCisJIyAgICh1c2UgImdpdCBjaGVja291dCAtLSA8ZmlsZT4uLi4iIHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSkKKwkjCisJIwltb2RpZmllZDogICBtYWluLnR4dAorCSMKKwlubyBjaGFuZ2VzIGFkZGVkIHRvIGNvbW1pdCAodXNlICJnaXQgYWRkIiBhbmQvb3IgImdpdCBjb21taXQgLWEiKQorCUVPRgorCWdpdCBzdGF0dXMgLS11bnRyYWNrZWQtZmlsZXM9bm8gPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3RlZCBhY3R1YWwKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgYWZ0ZXIgZWRpdGluZyB0aGUgbGFzdCBjb21taXQgd2l0aCAtLWFtZW5kIGR1cmluZyBhIHJlYmFzZSAtaScgJworCWdpdCByZXNldCAtLWhhcmQgbWFzdGVyICYmCisJZ2l0IGNoZWNrb3V0IC1iIGFtZW5kX2xhc3QgJiYKKwl0ZXN0X2NvbW1pdCBvbmVfYW1lbmQgbWFpbi50eHQgb25lICYmCisJdGVzdF9jb21taXQgdHdvX2FtZW5kIG1haW4udHh0IHR3byAmJgorCXRlc3RfY29tbWl0IHRocmVlX2FtZW5kIG1haW4udHh0IHRocmVlICYmCisJdGVzdF9jb21taXQgZm91cl9hbWVuZCBtYWluLnR4dCBmb3VyICYmCisJRkFLRV9MSU5FUz0iMSAyIGVkaXQgMyIgJiYKKwlleHBvcnQgRkFLRV9MSU5FUyAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgorCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRH4zKSAmJgorCVRHVD0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCB0aHJlZV9hbWVuZCkgJiYKKwlnaXQgcmViYXNlIC1pIEhFQUR+MyAmJgorCWdpdCBjb21taXQgLS1hbWVuZCAtbSAiZm9vIiAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJIyBIRUFEIGRldGFjaGVkIGZyb20gJFRHVAorCSMgWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ2FtZW5kX2xhc3QnXCcnIG9uICdcJyckT05UTydcJycuCisJIyAgICh1c2UgImdpdCBjb21taXQgLS1hbWVuZCIgdG8gYW1lbmQgdGhlIGN1cnJlbnQgY29tbWl0KQorCSMgICAodXNlICJnaXQgcmViYXNlIC0tY29udGludWUiIG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQgd2l0aCB5b3VyIGNoYW5nZXMpCisJIworCW5vdGhpbmcgdG8gY29tbWl0ICh1c2UgLXUgdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ByZXBhcmUgZm9yIHNldmVyYWwgZWRpdHMnICcKKwlnaXQgcmVzZXQgLS1oYXJkIG1hc3RlciAmJgorCWdpdCBjaGVja291dCAtYiBzZXZlcmFsX2VkaXRzICYmCisJdGVzdF9jb21taXQgb25lX2VkaXRzIG1haW4udHh0IG9uZSAmJgorCXRlc3RfY29tbWl0IHR3b19lZGl0cyBtYWluLnR4dCB0d28gJiYKKwl0ZXN0X2NvbW1pdCB0aHJlZV9lZGl0cyBtYWluLnR4dCB0aHJlZSAmJgorCXRlc3RfY29tbWl0IGZvdXJfZWRpdHMgbWFpbi50eHQgZm91cgorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1czogKGNvbnRpbnVlIGZpcnN0IGVkaXQpIHNlY29uZCBlZGl0JyAnCisJRkFLRV9MSU5FUz0iZWRpdCAxIGVkaXQgMiAzIiAmJgorCWV4cG9ydCBGQUtFX0xJTkVTICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCisJT05UTz0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEfjMpICYmCisJZ2l0IHJlYmFzZSAtaSBIRUFEfjMgJiYKKwlnaXQgcmViYXNlIC0tY29udGludWUgJiYKKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCSMgSEVBRCBkZXRhY2hlZCBmcm9tICRPTlRPCisJIyBZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIGEgY29tbWl0IHdoaWxlIHJlYmFzaW5nIGJyYW5jaCAnXCcnc2V2ZXJhbF9lZGl0cydcJycgb24gJ1wnJyRPTlRPJ1wnJy4KKwkjICAgKHVzZSAiZ2l0IGNvbW1pdCAtLWFtZW5kIiB0byBhbWVuZCB0aGUgY3VycmVudCBjb21taXQpCisJIyAgICh1c2UgImdpdCByZWJhc2UgLS1jb250aW51ZSIgb25jZSB5b3UgYXJlIHNhdGlzZmllZCB3aXRoIHlvdXIgY2hhbmdlcykKKwkjCisJbm90aGluZyB0byBjb21taXQgKHVzZSAtdSB0byBzaG93IHVudHJhY2tlZCBmaWxlcykKKwlFT0YKKwlnaXQgc3RhdHVzIC0tdW50cmFja2VkLWZpbGVzPW5vID5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzOiAoY29udGludWUgZmlyc3QgZWRpdCkgc2Vjb25kIGVkaXQgYW5kIHNwbGl0JyAnCisJZ2l0IHJlc2V0IC0taGFyZCBzZXZlcmFsX2VkaXRzICYmCisJRkFLRV9MSU5FUz0iZWRpdCAxIGVkaXQgMiAzIiAmJgorCWV4cG9ydCBGQUtFX0xJTkVTICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCisJT05UTz0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEfjMpICYmCisJZ2l0IHJlYmFzZSAtaSBIRUFEfjMgJiYKKwlnaXQgcmViYXNlIC0tY29udGludWUgJiYKKwlnaXQgcmVzZXQgSEVBRF4gJiYKKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCSMgSEVBRCBkZXRhY2hlZCBmcm9tICRPTlRPCisJIyBZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICdcJydzZXZlcmFsX2VkaXRzJ1wnJyBvbiAnXCcnJE9OVE8nXCcnLgorCSMgICAoT25jZSB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IGlzIGNsZWFuLCBydW4gImdpdCByZWJhc2UgLS1jb250aW51ZSIpCisJIworCSMgQ2hhbmdlcyBub3Qgc3RhZ2VkIGZvciBjb21taXQ6CisJIyAgICh1c2UgImdpdCBhZGQgPGZpbGU+Li4uIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkKKwkjICAgKHVzZSAiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLiIgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHdvcmtpbmcgZGlyZWN0b3J5KQorCSMKKwkjCW1vZGlmaWVkOiAgIG1haW4udHh0CisJIworCW5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0ICh1c2UgImdpdCBhZGQiIGFuZC9vciAiZ2l0IGNvbW1pdCAtYSIpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1czogKGNvbnRpbnVlIGZpcnN0IGVkaXQpIHNlY29uZCBlZGl0IGFuZCBhbWVuZCcgJworCWdpdCByZXNldCAtLWhhcmQgc2V2ZXJhbF9lZGl0cyAmJgorCUZBS0VfTElORVM9ImVkaXQgMSBlZGl0IDIgMyIgJiYKKwlleHBvcnQgRkFLRV9MSU5FUyAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgorCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRH4zKSAmJgorCWdpdCByZWJhc2UgLWkgSEVBRH4zICYmCisJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCisJZ2l0IGNvbW1pdCAtLWFtZW5kIC1tICJmb28iICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwkjIEhFQUQgZGV0YWNoZWQgZnJvbSAkT05UTworCSMgWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ3NldmVyYWxfZWRpdHMnXCcnIG9uICdcJyckT05UTydcJycuCisJIyAgICh1c2UgImdpdCBjb21taXQgLS1hbWVuZCIgdG8gYW1lbmQgdGhlIGN1cnJlbnQgY29tbWl0KQorCSMgICAodXNlICJnaXQgcmViYXNlIC0tY29udGludWUiIG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQgd2l0aCB5b3VyIGNoYW5nZXMpCisJIworCW5vdGhpbmcgdG8gY29tbWl0ICh1c2UgLXUgdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1czogKGFtZW5kIGZpcnN0IGVkaXQpIHNlY29uZCBlZGl0JyAnCisJZ2l0IHJlc2V0IC0taGFyZCBzZXZlcmFsX2VkaXRzICYmCisJRkFLRV9MSU5FUz0iZWRpdCAxIGVkaXQgMiAzIiAmJgorCWV4cG9ydCBGQUtFX0xJTkVTICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCisJT05UTz0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEfjMpICYmCisJZ2l0IHJlYmFzZSAtaSBIRUFEfjMgJiYKKwlnaXQgY29tbWl0IC0tYW1lbmQgLW0gImEiICYmCisJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwkjIEhFQUQgZGV0YWNoZWQgZnJvbSAkT05UTworCSMgWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ3NldmVyYWxfZWRpdHMnXCcnIG9uICdcJyckT05UTydcJycuCisJIyAgICh1c2UgImdpdCBjb21taXQgLS1hbWVuZCIgdG8gYW1lbmQgdGhlIGN1cnJlbnQgY29tbWl0KQorCSMgICAodXNlICJnaXQgcmViYXNlIC0tY29udGludWUiIG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQgd2l0aCB5b3VyIGNoYW5nZXMpCisJIworCW5vdGhpbmcgdG8gY29tbWl0ICh1c2UgLXUgdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1czogKGFtZW5kIGZpcnN0IGVkaXQpIHNlY29uZCBlZGl0IGFuZCBzcGxpdCcgJworCWdpdCByZXNldCAtLWhhcmQgc2V2ZXJhbF9lZGl0cyAmJgorCUZBS0VfTElORVM9ImVkaXQgMSBlZGl0IDIgMyIgJiYKKwlleHBvcnQgRkFLRV9MSU5FUyAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgorCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRH4zKSAmJgorCWdpdCByZWJhc2UgLWkgSEVBRH4zICYmCisJZ2l0IGNvbW1pdCAtLWFtZW5kIC1tICJiIiAmJgorCWdpdCByZWJhc2UgLS1jb250aW51ZSAmJgorCWdpdCByZXNldCBIRUFEXiAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJIyBIRUFEIGRldGFjaGVkIGZyb20gJE9OVE8KKwkjIFlvdSBhcmUgY3VycmVudGx5IHNwbGl0dGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ3NldmVyYWxfZWRpdHMnXCcnIG9uICdcJyckT05UTydcJycuCisJIyAgIChPbmNlIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4sIHJ1biAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIikKKwkjCisJIyBDaGFuZ2VzIG5vdCBzdGFnZWQgZm9yIGNvbW1pdDoKKwkjICAgKHVzZSAiZ2l0IGFkZCA8ZmlsZT4uLi4iIHRvIHVwZGF0ZSB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKQorCSMgICAodXNlICJnaXQgY2hlY2tvdXQgLS0gPGZpbGU+Li4uIiB0byBkaXNjYXJkIGNoYW5nZXMgaW4gd29ya2luZyBkaXJlY3RvcnkpCisJIworCSMJbW9kaWZpZWQ6ICAgbWFpbi50eHQKKwkjCisJbm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXQgKHVzZSAiZ2l0IGFkZCIgYW5kL29yICJnaXQgY29tbWl0IC1hIikKKwlFT0YKKwlnaXQgc3RhdHVzIC0tdW50cmFja2VkLWZpbGVzPW5vID5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzOiAoYW1lbmQgZmlyc3QgZWRpdCkgc2Vjb25kIGVkaXQgYW5kIGFtZW5kJyAnCisJZ2l0IHJlc2V0IC0taGFyZCBzZXZlcmFsX2VkaXRzICYmCisJRkFLRV9MSU5FUz0iZWRpdCAxIGVkaXQgMiAzIiAmJgorCWV4cG9ydCBGQUtFX0xJTkVTICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCisJT05UTz0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEfjMpICYmCisJZ2l0IHJlYmFzZSAtaSBIRUFEfjMgJiYKKwlnaXQgY29tbWl0IC0tYW1lbmQgLW0gImMiICYmCisJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCisJZ2l0IGNvbW1pdCAtLWFtZW5kIC1tICJkIiAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJIyBIRUFEIGRldGFjaGVkIGZyb20gJE9OVE8KKwkjIFlvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICdcJydzZXZlcmFsX2VkaXRzJ1wnJyBvbiAnXCcnJE9OVE8nXCcnLgorCSMgICAodXNlICJnaXQgY29tbWl0IC0tYW1lbmQiIHRvIGFtZW5kIHRoZSBjdXJyZW50IGNvbW1pdCkKKwkjICAgKHVzZSAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIiBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzKQorCSMKKwlub3RoaW5nIHRvIGNvbW1pdCAodXNlIC11IHRvIHNob3cgdW50cmFja2VkIGZpbGVzKQorCUVPRgorCWdpdCBzdGF0dXMgLS11bnRyYWNrZWQtZmlsZXM9bm8gPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3RlZCBhY3R1YWwKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXM6IChzcGxpdCBmaXJzdCBlZGl0KSBzZWNvbmQgZWRpdCcgJworCWdpdCByZXNldCAtLWhhcmQgc2V2ZXJhbF9lZGl0cyAmJgorCUZBS0VfTElORVM9ImVkaXQgMSBlZGl0IDIgMyIgJiYKKwlleHBvcnQgRkFLRV9MSU5FUyAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgorCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRH4zKSAmJgorCWdpdCByZWJhc2UgLWkgSEVBRH4zICYmCisJZ2l0IHJlc2V0IEhFQUReICYmCisJZ2l0IGFkZCBtYWluLnR4dCAmJgorCWdpdCBjb21taXQgLW0gImUiICYmCisJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwkjIEhFQUQgZGV0YWNoZWQgZnJvbSAkT05UTworCSMgWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ3NldmVyYWxfZWRpdHMnXCcnIG9uICdcJyckT05UTydcJycuCisJIyAgICh1c2UgImdpdCBjb21taXQgLS1hbWVuZCIgdG8gYW1lbmQgdGhlIGN1cnJlbnQgY29tbWl0KQorCSMgICAodXNlICJnaXQgcmViYXNlIC0tY29udGludWUiIG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQgd2l0aCB5b3VyIGNoYW5nZXMpCisJIworCW5vdGhpbmcgdG8gY29tbWl0ICh1c2UgLXUgdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1czogKHNwbGl0IGZpcnN0IGVkaXQpIHNlY29uZCBlZGl0IGFuZCBzcGxpdCcgJworCWdpdCByZXNldCAtLWhhcmQgc2V2ZXJhbF9lZGl0cyAmJgorCUZBS0VfTElORVM9ImVkaXQgMSBlZGl0IDIgMyIgJiYKKwlleHBvcnQgRkFLRV9MSU5FUyAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgorCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRH4zKSAmJgorCWdpdCByZWJhc2UgLWkgSEVBRH4zICYmCisJZ2l0IHJlc2V0IEhFQUReICYmCisJZ2l0IGFkZCBtYWluLnR4dCAmJgorCWdpdCBjb21taXQgLS1hbWVuZCAtbSAiZiIgJiYKKwlnaXQgcmViYXNlIC0tY29udGludWUgJiYKKwlnaXQgcmVzZXQgSEVBRF4gJiYKKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCSMgSEVBRCBkZXRhY2hlZCBmcm9tICRPTlRPCisJIyBZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICdcJydzZXZlcmFsX2VkaXRzJ1wnJyBvbiAnXCcnJE9OVE8nXCcnLgorCSMgICAoT25jZSB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IGlzIGNsZWFuLCBydW4gImdpdCByZWJhc2UgLS1jb250aW51ZSIpCisJIworCSMgQ2hhbmdlcyBub3Qgc3RhZ2VkIGZvciBjb21taXQ6CisJIyAgICh1c2UgImdpdCBhZGQgPGZpbGU+Li4uIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkKKwkjICAgKHVzZSAiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLiIgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHdvcmtpbmcgZGlyZWN0b3J5KQorCSMKKwkjCW1vZGlmaWVkOiAgIG1haW4udHh0CisJIworCW5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0ICh1c2UgImdpdCBhZGQiIGFuZC9vciAiZ2l0IGNvbW1pdCAtYSIpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1czogKHNwbGl0IGZpcnN0IGVkaXQpIHNlY29uZCBlZGl0IGFuZCBhbWVuZCcgJworCWdpdCByZXNldCAtLWhhcmQgc2V2ZXJhbF9lZGl0cyAmJgorCUZBS0VfTElORVM9ImVkaXQgMSBlZGl0IDIgMyIgJiYKKwlleHBvcnQgRkFLRV9MSU5FUyAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgorCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRH4zKSAmJgorCWdpdCByZWJhc2UgLWkgSEVBRH4zICYmCisJZ2l0IHJlc2V0IEhFQUReICYmCisJZ2l0IGFkZCBtYWluLnR4dCAmJgorCWdpdCBjb21taXQgLS1hbWVuZCAtbSAiZyIgJiYKKwlnaXQgcmViYXNlIC0tY29udGludWUgJiYKKwlnaXQgY29tbWl0IC0tYW1lbmQgLW0gImgiICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwkjIEhFQUQgZGV0YWNoZWQgZnJvbSAkT05UTworCSMgWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ3NldmVyYWxfZWRpdHMnXCcnIG9uICdcJyckT05UTydcJycuCisJIyAgICh1c2UgImdpdCBjb21taXQgLS1hbWVuZCIgdG8gYW1lbmQgdGhlIGN1cnJlbnQgY29tbWl0KQorCSMgICAodXNlICJnaXQgcmViYXNlIC0tY29udGludWUiIG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQgd2l0aCB5b3VyIGNoYW5nZXMpCisJIworCW5vdGhpbmcgdG8gY29tbWl0ICh1c2UgLXUgdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ByZXBhcmUgYW1fc2Vzc2lvbicgJworCWdpdCByZXNldCAtLWhhcmQgbWFzdGVyICYmCisJZ2l0IGNoZWNrb3V0IC1iIGFtX3Nlc3Npb24gJiYKKwl0ZXN0X2NvbW1pdCBvbmVfYW0gb25lLnR4dCAib25lIiAmJgorCXRlc3RfY29tbWl0IHR3b19hbSB0d28udHh0ICJ0d28iICYmCisJdGVzdF9jb21taXQgdGhyZWVfYW0gdGhyZWUudHh0ICJ0aHJlZSIKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgaW4gYW4gYW0gc2Vzc2lvbjogZmlsZSBhbHJlYWR5IGV4aXN0cycgJworCWdpdCBjaGVja291dCAtYiBhbV9hbHJlYWR5X2V4aXN0cyAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gTWFpbGRpci8qICYmIGdpdCBhbSAtLWFib3J0IiAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLTEgLW9NYWlsZGlyICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFtIE1haWxkaXIvKi5wYXRjaCAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgorCSMgT24gYnJhbmNoIGFtX2FscmVhZHlfZXhpc3RzCisJIyBZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYW4gYW0gc2Vzc2lvbi4KKwkjICAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuICJnaXQgYW0gLS1yZXNvbHZlZCIpCisJIyAgICh1c2UgImdpdCBhbSAtLXNraXAiIHRvIHNraXAgdGhpcyBwYXRjaCkKKwkjICAgKHVzZSAiZ2l0IGFtIC0tYWJvcnQiIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGJyYW5jaCkKKwkjCisJbm90aGluZyB0byBjb21taXQgKHVzZSAtdSB0byBzaG93IHVudHJhY2tlZCBmaWxlcykKKwlFT0YKKwlnaXQgc3RhdHVzIC0tdW50cmFja2VkLWZpbGVzPW5vID5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIGluIGFuIGFtIHNlc3Npb246IGZpbGUgZG9lcyBub3QgZXhpc3QnICcKKwlnaXQgcmVzZXQgLS1oYXJkIGFtX3Nlc3Npb24gJiYKKwlnaXQgY2hlY2tvdXQgLWIgYW1fbm90X2V4aXN0cyAmJgorCWdpdCBybSB0aHJlZS50eHQgJiYKKwlnaXQgY29tbWl0IC1tICJkZWxldGUgdGhyZWUudHh0IiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gTWFpbGRpci8qICYmIGdpdCBhbSAtLWFib3J0IiAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLTEgLW9NYWlsZGlyICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFtIE1haWxkaXIvKi5wYXRjaCAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgorCSMgT24gYnJhbmNoIGFtX25vdF9leGlzdHMKKwkjIFlvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhbiBhbSBzZXNzaW9uLgorCSMgICAoZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBydW4gImdpdCBhbSAtLXJlc29sdmVkIikKKwkjICAgKHVzZSAiZ2l0IGFtIC0tc2tpcCIgdG8gc2tpcCB0aGlzIHBhdGNoKQorCSMgICAodXNlICJnaXQgYW0gLS1hYm9ydCIgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoKQorCSMKKwlub3RoaW5nIHRvIGNvbW1pdCAodXNlIC11IHRvIHNob3cgdW50cmFja2VkIGZpbGVzKQorCUVPRgorCWdpdCBzdGF0dXMgLS11bnRyYWNrZWQtZmlsZXM9bm8gPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3RlZCBhY3R1YWwKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgaW4gYW4gYW0gc2Vzc2lvbjogZW1wdHkgcGF0Y2gnICcKKwlnaXQgcmVzZXQgLS1oYXJkIGFtX3Nlc3Npb24gJiYKKwlnaXQgY2hlY2tvdXQgLWIgYW1fZW1wdHkgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIE1haWxkaXIvKiAmJiBnaXQgYW0gLS1hYm9ydCIgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC0zIC1vTWFpbGRpciAmJgorCWdpdCBybSBvbmUudHh0IHR3by50eHQgdGhyZWUudHh0ICYmCisJZ2l0IGNvbW1pdCAtbSAiZGVsZXRlIGFsbCBhbV9lbXB0eSIgJiYKKwllY2hvIGVycm9yID5NYWlsZGlyLzAwMDItdHdvX2FtLnBhdGNoICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFtIE1haWxkaXIvKi5wYXRjaCAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgorCSMgT24gYnJhbmNoIGFtX2VtcHR5CisJIyBZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYW4gYW0gc2Vzc2lvbi4KKwkjIFRoZSBjdXJyZW50IHBhdGNoIGlzIGVtcHR5LgorCSMgICAodXNlICJnaXQgYW0gLS1za2lwIiB0byBza2lwIHRoaXMgcGF0Y2gpCisJIyAgICh1c2UgImdpdCBhbSAtLWFib3J0IiB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBicmFuY2gpCisJIworCW5vdGhpbmcgdG8gY29tbWl0ICh1c2UgLXUgdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aGVuIGJpc2VjdGluZycgJworCWdpdCByZXNldCAtLWhhcmQgbWFzdGVyICYmCisJZ2l0IGNoZWNrb3V0IC1iIGJpc2VjdCAmJgorCXRlc3RfY29tbWl0IG9uZV9iaXNlY3QgbWFpbi50eHQgb25lICYmCisJdGVzdF9jb21taXQgdHdvX2Jpc2VjdCBtYWluLnR4dCB0d28gJiYKKwl0ZXN0X2NvbW1pdCB0aHJlZV9iaXNlY3QgbWFpbi50eHQgdGhyZWUgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBiaXNlY3QgcmVzZXQiICYmCisJZ2l0IGJpc2VjdCBzdGFydCAmJgorCWdpdCBiaXNlY3QgYmFkICYmCisJZ2l0IGJpc2VjdCBnb29kIG9uZV9iaXNlY3QgJiYKKwlUR1Q9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgdHdvX2Jpc2VjdCkgJiYKKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCSMgSEVBRCBkZXRhY2hlZCBhdCAkVEdUCisJIyBZb3UgYXJlIGN1cnJlbnRseSBiaXNlY3RpbmcsIHN0YXJ0ZWQgZnJvbSBicmFuY2ggJ1wnJ2Jpc2VjdCdcJycuCisJIyAgICh1c2UgImdpdCBiaXNlY3QgcmVzZXQiIHRvIGdldCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBicmFuY2gpCisJIworCW5vdGhpbmcgdG8gY29tbWl0ICh1c2UgLXUgdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aGVuIHJlYmFzZSBjb25mbGljdHMgd2l0aCBzdGF0dXNoaW50cyBkaXNhYmxlZCcgJworCWdpdCByZXNldCAtLWhhcmQgbWFzdGVyICYmCisJZ2l0IGNoZWNrb3V0IC1iIHN0YXR1c2hpbnRzX2Rpc2FibGVkICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tbG9jYWwgYWR2aWNlLnN0YXR1c2hpbnRzIHRydWUiICYmCisJZ2l0IGNvbmZpZyAtLWxvY2FsIGFkdmljZS5zdGF0dXNoaW50cyBmYWxzZSAmJgorCXRlc3RfY29tbWl0IG9uZV9zdGF0dXNoaW50cyBtYWluLnR4dCBvbmUgJiYKKwl0ZXN0X2NvbW1pdCB0d29fc3RhdHVzaGludHMgbWFpbi50eHQgdHdvICYmCisJdGVzdF9jb21taXQgdGhyZWVfc3RhdHVzaGludHMgbWFpbi50eHQgdGhyZWUgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZWJhc2UgLS1hYm9ydCIgJiYKKwlPTlRPPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUReXikgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIEhFQUReIC0tb250byBIRUFEXl4gJiYKKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCSMgSEVBRCBkZXRhY2hlZCBhdCAkT05UTworCSMgWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcgYnJhbmNoICdcJydzdGF0dXNoaW50c19kaXNhYmxlZCdcJycgb24gJ1wnJyRPTlRPJ1wnJy4KKwkjCisJIyBVbm1lcmdlZCBwYXRoczoKKwkjCWJvdGggbW9kaWZpZWQ6ICAgICAgbWFpbi50eHQKKwkjCisJbm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXQKKwlFT0YKKwlnaXQgc3RhdHVzIC0tdW50cmFja2VkLWZpbGVzPW5vID5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJlcGFyZSBmb3IgY2hlcnJ5LXBpY2sgY29uZmxpY3RzJyAnCisJZ2l0IHJlc2V0IC0taGFyZCBtYXN0ZXIgJiYKKwlnaXQgY2hlY2tvdXQgLWIgY2hlcnJ5X2JyYW5jaCAmJgorCXRlc3RfY29tbWl0IG9uZV9jaGVycnkgbWFpbi50eHQgb25lICYmCisJdGVzdF9jb21taXQgdHdvX2NoZXJyaWVzIG1haW4udHh0IHR3byAmJgorCWdpdCBjaGVja291dCAtYiBjaGVycnlfYnJhbmNoX3NlY29uZCAmJgorCXRlc3RfY29tbWl0IHNlY29uZF9jaGVycnkgbWFpbi50eHQgc2Vjb25kICYmCisJZ2l0IGNoZWNrb3V0IGNoZXJyeV9icmFuY2ggJiYKKwl0ZXN0X2NvbW1pdCB0aHJlZV9jaGVycmllcyBtYWluLnR4dCB0aHJlZQorJworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aGVuIGNoZXJyeS1waWNraW5nIGJlZm9yZSByZXNvbHZpbmcgY29uZmxpY3RzJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY2hlcnJ5LXBpY2sgLS1hYm9ydCIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgY2hlcnJ5LXBpY2sgY2hlcnJ5X2JyYW5jaF9zZWNvbmQgJiYKKwljYXQgPmV4cGVjdGVkIDw8LVxFT0YgJiYKKwkjIE9uIGJyYW5jaCBjaGVycnlfYnJhbmNoCisJIyBZb3UgYXJlIGN1cnJlbnRseSBjaGVycnktcGlja2luZy4KKwkjICAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biAiZ2l0IGNvbW1pdCIpCisJIworCSMgVW5tZXJnZWQgcGF0aHM6CisJIyAgICh1c2UgImdpdCBhZGQgPGZpbGU+Li4uIiB0byBtYXJrIHJlc29sdXRpb24pCisJIworCSMJYm90aCBtb2RpZmllZDogICAgICBtYWluLnR4dAorCSMKKwlubyBjaGFuZ2VzIGFkZGVkIHRvIGNvbW1pdCAodXNlICJnaXQgYWRkIiBhbmQvb3IgImdpdCBjb21taXQgLWEiKQorCUVPRgorCWdpdCBzdGF0dXMgLS11bnRyYWNrZWQtZmlsZXM9bm8gPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3RlZCBhY3R1YWwKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgd2hlbiBjaGVycnktcGlja2luZyBhZnRlciByZXNvbHZpbmcgY29uZmxpY3RzJyAnCisJZ2l0IHJlc2V0IC0taGFyZCBjaGVycnlfYnJhbmNoICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY2hlcnJ5LXBpY2sgLS1hYm9ydCIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgY2hlcnJ5LXBpY2sgY2hlcnJ5X2JyYW5jaF9zZWNvbmQgJiYKKwllY2hvIGVuZCA+bWFpbi50eHQgJiYKKwlnaXQgYWRkIG1haW4udHh0ICYmCisJY2F0ID5leHBlY3RlZCA8PC1cRU9GICYmCisJIyBPbiBicmFuY2ggY2hlcnJ5X2JyYW5jaAorCSMgWW91IGFyZSBjdXJyZW50bHkgY2hlcnJ5LXBpY2tpbmcuCisJIyAgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gImdpdCBjb21taXQiKQorCSMKKwkjIENoYW5nZXMgdG8gYmUgY29tbWl0dGVkOgorCSMKKwkjCW1vZGlmaWVkOiAgIG1haW4udHh0CisJIworCSMgVW50cmFja2VkIGZpbGVzIG5vdCBsaXN0ZWQgKHVzZSAtdSBvcHRpb24gdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgc2hvd2luZyBkZXRhY2hlZCBmcm9tIGEgdGFnJyAnCisJdGVzdF9jb21taXQgYXRhZyB0YWdnaW5nICYmCisJZ2l0IGNoZWNrb3V0IGF0YWcgJiYKKwljYXQgPmV4cGVjdGVkIDw8LVxFT0YKKwkjIEhFQUQgZGV0YWNoZWQgYXQgYXRhZworCW5vdGhpbmcgdG8gY29tbWl0ICh1c2UgLXUgdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgd2hpbGUgcmV2ZXJ0aW5nIGNvbW1pdCAoY29uZmxpY3RzKScgJworCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwllY2hvIGJlZm9yZSA+dG8tcmV2ZXJ0LnR4dCAmJgorCXRlc3RfY29tbWl0IGJlZm9yZSB0by1yZXZlcnQudHh0ICYmCisJZWNobyBvbGQgPnRvLXJldmVydC50eHQgJiYKKwl0ZXN0X2NvbW1pdCBvbGQgdG8tcmV2ZXJ0LnR4dCAmJgorCWVjaG8gbmV3ID50by1yZXZlcnQudHh0ICYmCisJdGVzdF9jb21taXQgbmV3IHRvLXJldmVydC50eHQgJiYKKwlUT19SRVZFUlQ9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRF4pICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldmVydCAkVE9fUkVWRVJUICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YKKwkjIE9uIGJyYW5jaCBtYXN0ZXIKKwkjIFlvdSBhcmUgY3VycmVudGx5IHJldmVydGluZyBjb21taXQgJFRPX1JFVkVSVC4KKwkjICAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biAiZ2l0IHJldmVydCAtLWNvbnRpbnVlIikKKwkjICAgKHVzZSAiZ2l0IHJldmVydCAtLWFib3J0IiB0byBjYW5jZWwgdGhlIHJldmVydCBvcGVyYXRpb24pCisJIworCSMgVW5tZXJnZWQgcGF0aHM6CisJIyAgICh1c2UgImdpdCByZXNldCBIRUFEIDxmaWxlPi4uLiIgdG8gdW5zdGFnZSkKKwkjICAgKHVzZSAiZ2l0IGFkZCA8ZmlsZT4uLi4iIHRvIG1hcmsgcmVzb2x1dGlvbikKKwkjCisJIwlib3RoIG1vZGlmaWVkOiAgICAgIHRvLXJldmVydC50eHQKKwkjCisJbm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXQgKHVzZSAiZ2l0IGFkZCIgYW5kL29yICJnaXQgY29tbWl0IC1hIikKKwlFT0YKKwlnaXQgc3RhdHVzIC0tdW50cmFja2VkLWZpbGVzPW5vID5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aGlsZSByZXZlcnRpbmcgY29tbWl0IChjb25mbGljdHMgcmVzb2x2ZWQpJyAnCisJZWNobyByZXZlcnRlZCA+dG8tcmV2ZXJ0LnR4dCAmJgorCWdpdCBhZGQgdG8tcmV2ZXJ0LnR4dCAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GCisJIyBPbiBicmFuY2ggbWFzdGVyCisJIyBZb3UgYXJlIGN1cnJlbnRseSByZXZlcnRpbmcgY29tbWl0ICRUT19SRVZFUlQuCisJIyAgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gImdpdCByZXZlcnQgLS1jb250aW51ZSIpCisJIyAgICh1c2UgImdpdCByZXZlcnQgLS1hYm9ydCIgdG8gY2FuY2VsIHRoZSByZXZlcnQgb3BlcmF0aW9uKQorCSMKKwkjIENoYW5nZXMgdG8gYmUgY29tbWl0dGVkOgorCSMgICAodXNlICJnaXQgcmVzZXQgSEVBRCA8ZmlsZT4uLi4iIHRvIHVuc3RhZ2UpCisJIworCSMJbW9kaWZpZWQ6ICAgdG8tcmV2ZXJ0LnR4dAorCSMKKwkjIFVudHJhY2tlZCBmaWxlcyBub3QgbGlzdGVkICh1c2UgLXUgb3B0aW9uIHRvIHNob3cgdW50cmFja2VkIGZpbGVzKQorCUVPRgorCWdpdCBzdGF0dXMgLS11bnRyYWNrZWQtZmlsZXM9bm8gPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIGFmdGVyIHJldmVydGluZyBjb21taXQnICcKKwlnaXQgcmV2ZXJ0IC0tY29udGludWUgJiYKKwljYXQgPmV4cGVjdGVkIDw8LVxFT0YKKwkjIE9uIGJyYW5jaCBtYXN0ZXIKKwlub3RoaW5nIHRvIGNvbW1pdCAodXNlIC11IHRvIHNob3cgdW50cmFja2VkIGZpbGVzKQorCUVPRgorCWdpdCBzdGF0dXMgLS11bnRyYWNrZWQtZmlsZXM9bm8gPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3NjAwLW1lcmdlLnNoIGIvdC90NzYwMC1tZXJnZS5zaAppbmRleCA5ZTI3YmJmLi4yZjcwNDMzIDEwMDc1NQotLS0gYS90L3Q3NjAwLW1lcmdlLnNoCisrKyBiL3QvdDc2MDAtbWVyZ2Uuc2gKQEAgLTU2LDcgKzU2LDggQEAKIAkJZWNobyAmJgogCQlnaXQgbG9nIC0tbm8tbWVyZ2VzIF5IRUFEIGMyIGMzCiAJfSA+c3F1YXNoLjEtNS05ICYmCi0JZWNobyA+bXNnLm5vbG9nICYmCisJOiA+bXNnLm5vbG9nZmYgJiYKKwllY2hvID5tc2cubm9sb2dub2ZmICYmCiAJewogCQllY2hvICIqIHRhZyAnYzMnOiIgJiYKIAkJZWNobyAiICBjb21taXQgMyIgJiYKQEAgLTE1Nyw3ICsxNTgsNyBAQAogCQk+LmdpdC9pbmRleCAmJgogCQl0ZXN0X2V4cGVjdF9jb2RlIDEyOSBnaXQgbWVyZ2UgLWggMj51c2FnZQogCSkgJiYKLQlncmVwICJbVXVdc2FnZTogZ2l0IG1lcmdlIiBicm9rZW4vdXNhZ2UKKwl0ZXN0X2kxOG5ncmVwICJbVXVdc2FnZTogZ2l0IG1lcmdlIiBicm9rZW4vdXNhZ2UKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmVqZWN0IG5vbi1zdHJhdGVneSB3aXRoIGEgZ2l0LW1lcmdlLWZvbyBuYW1lJyAnCkBAIC0yNDQsOCArMjQ1LDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlcyB3aXRoIG1lcmdlLmZmPW9ubHknICcKIAlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCiAJdGVzdF90aWNrICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgbWVyZ2UuZmYiICYmCi0JZ2l0IGNvbmZpZyBtZXJnZS5mZiBvbmx5ICYmCisJdGVzdF9jb25maWcgbWVyZ2UuZmYgIm9ubHkiICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIGMyICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIGMzICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIGMyIGMzICYmCkBAIC0zMzYsNyArMzM2LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgYzEgd2l0aCBjMiAobm8tY29tbWl0IGluIGNvbmZpZyknICcKIAlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCi0JZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiLS1uby1jb21taXQiICYmCisJdGVzdF9jb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIi0tbm8tY29tbWl0IiAmJgogCWdpdCBtZXJnZSBjMiAmJgogCXZlcmlmeV9tZXJnZSBmaWxlIHJlc3VsdC4xLTUgJiYKIAl2ZXJpZnlfaGVhZCAkYzEgJiYKQEAgLTM0NiwxMiArMzQ2LDExIEBACiB0ZXN0X2RlYnVnICdnaXQgbG9nIC0tZ3JhcGggLS1kZWNvcmF0ZSAtLW9uZWxpbmUgLS1hbGwnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGMxIHdpdGggYzIgKGxvZyBpbiBjb25maWcpJyAnCi0JZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiIiAmJgogCWdpdCByZXNldCAtLWhhcmQgYzEgJiYKIAlnaXQgbWVyZ2UgLS1sb2cgYzIgJiYKIAlnaXQgc2hvdyAtcyAtLXByZXR0eT10Zm9ybWF0OiVzJW4lYiA+ZXhwZWN0ICYmCiAKLQlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zIC0tbG9nICYmCisJdGVzdF9jb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIi0tbG9nIiAmJgogCWdpdCByZXNldCAtLWhhcmQgYzEgJiYKIAlnaXQgbWVyZ2UgYzIgJiYKIAlnaXQgc2hvdyAtcyAtLXByZXR0eT10Zm9ybWF0OiVzJW4lYiA+YWN0dWFsICYmCkBAIC0zNjAsMTcgKzM1OSwxMiBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBjMSB3aXRoIGMyIChsb2cgaW4gY29uZmlnIGdldHMgb3ZlcnJpZGRlbiknICcKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjb25maWcgLS1yZW1vdmUtc2VjdGlvbiBicmFuY2gubWFzdGVyIiAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNvbmZpZyAtLXJlbW92ZS1zZWN0aW9uIG1lcmdlIiAmJgotCXRlc3RfbWlnaHRfZmFpbCBnaXQgY29uZmlnIC0tcmVtb3ZlLXNlY3Rpb24gYnJhbmNoLm1hc3RlciAmJgotCXRlc3RfbWlnaHRfZmFpbCBnaXQgY29uZmlnIC0tcmVtb3ZlLXNlY3Rpb24gbWVyZ2UgJiYKLQogCWdpdCByZXNldCAtLWhhcmQgYzEgJiYKIAlnaXQgbWVyZ2UgYzIgJiYKIAlnaXQgc2hvdyAtcyAtLXByZXR0eT10Zm9ybWF0OiVzJW4lYiA+ZXhwZWN0ICYmCiAKLQlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICItLW5vLWxvZyIgJiYKLQlnaXQgY29uZmlnIG1lcmdlLmxvZyB0cnVlICYmCisJdGVzdF9jb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIi0tbm8tbG9nIiAmJgorCXRlc3RfY29uZmlnIG1lcmdlLmxvZyAidHJ1ZSIgJiYKIAlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCiAJZ2l0IG1lcmdlIGMyICYmCiAJZ2l0IHNob3cgLXMgLS1wcmV0dHk9dGZvcm1hdDolcyVuJWIgPmFjdHVhbCAmJgpAQCAtMzgwLDcgKzM3NCw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGMxIHdpdGggYzIgKHNxdWFzaCBpbiBjb25maWcpJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCBjMSAmJgotCWdpdCBjb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIi0tc3F1YXNoIiAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICItLXNxdWFzaCIgJiYKIAlnaXQgbWVyZ2UgYzIgJiYKIAl2ZXJpZnlfbWVyZ2UgZmlsZSByZXN1bHQuMS01ICYmCiAJdmVyaWZ5X2hlYWQgJGMxICYmCkBAIC0zOTIsNyArMzg2LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnb3ZlcnJpZGUgY29uZmlnIG9wdGlvbiAtbiB3aXRoIC0tc3VtbWFyeScgJwogCWdpdCByZXNldCAtLWhhcmQgYzEgJiYKLQlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICItbiIgJiYKKwl0ZXN0X2NvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiLW4iICYmCiAJdGVzdF90aWNrICYmCiAJZ2l0IG1lcmdlIC0tc3VtbWFyeSBjMiA+ZGlmZnN0YXQudHh0ICYmCiAJdmVyaWZ5X21lcmdlIGZpbGUgcmVzdWx0LjEtNSBtc2cuMS01ICYmCkBAIC00MDYsNyArNDAwLDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnb3ZlcnJpZGUgY29uZmlnIG9wdGlvbiAtbiB3aXRoIC0tc3RhdCcgJwogCWdpdCByZXNldCAtLWhhcmQgYzEgJiYKLQlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICItbiIgJiYKKwl0ZXN0X2NvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiLW4iICYmCiAJdGVzdF90aWNrICYmCiAJZ2l0IG1lcmdlIC0tc3RhdCBjMiA+ZGlmZnN0YXQudHh0ICYmCiAJdmVyaWZ5X21lcmdlIGZpbGUgcmVzdWx0LjEtNSBtc2cuMS01ICYmCkBAIC00MjIsNyArNDE2LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnb3ZlcnJpZGUgY29uZmlnIG9wdGlvbiAtLXN0YXQnICcKIAlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCi0JZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiLS1zdGF0IiAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICItLXN0YXQiICYmCiAJdGVzdF90aWNrICYmCiAJZ2l0IG1lcmdlIC1uIGMyID5kaWZmc3RhdC50eHQgJiYKIAl2ZXJpZnlfbWVyZ2UgZmlsZSByZXN1bHQuMS01IG1zZy4xLTUgJiYKQEAgLTQzOCw3ICs0MzIsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBjMSB3aXRoIGMyIChvdmVycmlkZSAtLW5vLWNvbW1pdCknICcKIAlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCi0JZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiLS1uby1jb21taXQiICYmCisJdGVzdF9jb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIi0tbm8tY29tbWl0IiAmJgogCXRlc3RfdGljayAmJgogCWdpdCBtZXJnZSAtLWNvbW1pdCBjMiAmJgogCXZlcmlmeV9tZXJnZSBmaWxlIHJlc3VsdC4xLTUgbXNnLjEtNSAmJgpAQCAtNDQ5LDcgKzQ0Myw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGMxIHdpdGggYzIgKG92ZXJyaWRlIC0tc3F1YXNoKScgJwogCWdpdCByZXNldCAtLWhhcmQgYzEgJiYKLQlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICItLXNxdWFzaCIgJiYKKwl0ZXN0X2NvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiLS1zcXVhc2giICYmCiAJdGVzdF90aWNrICYmCiAJZ2l0IG1lcmdlIC0tbm8tc3F1YXNoIGMyICYmCiAJdmVyaWZ5X21lcmdlIGZpbGUgcmVzdWx0LjEtNSBtc2cuMS01ICYmCkBAIC00NjAsNyArNDU0LDYgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgYzAgd2l0aCBjMSAobm8tZmYpJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCBjMCAmJgotCWdpdCBjb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIiIgJiYKIAl0ZXN0X3RpY2sgJiYKIAlnaXQgbWVyZ2UgLS1uby1mZiBjMSAmJgogCXZlcmlmeV9tZXJnZSBmaWxlIHJlc3VsdC4xICYmCkBAIC00NzEsMTAgKzQ2NCw5IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGMwIHdpdGggYzEgKG1lcmdlLmZmPWZhbHNlKScgJwogCWdpdCByZXNldCAtLWhhcmQgYzAgJiYKLQlnaXQgY29uZmlnIG1lcmdlLmZmIGZhbHNlICYmCisJdGVzdF9jb25maWcgbWVyZ2UuZmYgImZhbHNlIiAmJgogCXRlc3RfdGljayAmJgogCWdpdCBtZXJnZSBjMSAmJgotCWdpdCBjb25maWcgLS1yZW1vdmUtc2VjdGlvbiBtZXJnZSAmJgogCXZlcmlmeV9tZXJnZSBmaWxlIHJlc3VsdC4xICYmCiAJdmVyaWZ5X3BhcmVudHMgJGMwICRjMQogJwpAQCAtNDgyLDIyICs0NzQsMTkgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tYmluZSBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyB3aXRoIG1lcmdlLmZmJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCBjMCAmJgotCWdpdCBjb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgLS1mZiAmJgotCWdpdCBjb25maWcgbWVyZ2UuZmYgZmFsc2UgJiYKKwl0ZXN0X2NvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiLS1mZiIgJiYKKwl0ZXN0X2NvbmZpZyBtZXJnZS5mZiAiZmFsc2UiICYmCiAJdGVzdF90aWNrICYmCiAJZ2l0IG1lcmdlIGMxICYmCi0JZ2l0IGNvbmZpZyAtLXJlbW92ZS1zZWN0aW9uICJicmFuY2gubWFzdGVyIiAmJgotCWdpdCBjb25maWcgLS1yZW1vdmUtc2VjdGlvbiAibWVyZ2UiICYmCiAJdmVyaWZ5X21lcmdlIGZpbGUgcmVzdWx0LjEgJiYKIAl2ZXJpZnlfcGFyZW50cyAiJGMwIgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0b2xlcmF0ZSB1bmtub3duIHZhbHVlcyBmb3IgbWVyZ2UuZmYnICcKIAlnaXQgcmVzZXQgLS1oYXJkIGMwICYmCi0JZ2l0IGNvbmZpZyBtZXJnZS5mZiBzb21ldGhpbmctbmV3ICYmCisJdGVzdF9jb25maWcgbWVyZ2UuZmYgInNvbWV0aGluZy1uZXciICYmCiAJdGVzdF90aWNrICYmCiAJZ2l0IG1lcmdlIGMxIDI+bWVzc2FnZSAmJgotCWdpdCBjb25maWcgLS1yZW1vdmUtc2VjdGlvbiAibWVyZ2UiICYmCiAJdmVyaWZ5X2hlYWQgIiRjMSIgJiYKIAl0ZXN0X2NtcCBlbXB0eSBtZXNzYWdlCiAnCkBAIC01MTUsNyArNTA0LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgYzAgd2l0aCBjMSAoZmYgb3ZlcnJpZGVzIG5vLWZmKScgJwogCWdpdCByZXNldCAtLWhhcmQgYzAgJiYKLQlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICItLW5vLWZmIiAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICItLW5vLWZmIiAmJgogCWdpdCBtZXJnZSAtLWZmIGMxICYmCiAJdmVyaWZ5X21lcmdlIGZpbGUgcmVzdWx0LjEgJiYKIAl2ZXJpZnlfaGVhZCAkYzEKQEAgLTUyNSwxNCArNTE0LDIwIEBACiAJZ2l0IHJlc2V0IC0taGFyZCBjMCAmJgogCWdpdCBtZXJnZSAtLW5vLWxvZyBjMiAmJgogCWdpdCBzaG93IC1zIC0tcHJldHR5PWZvcm1hdDolYiBIRUFEID5tc2cuYWN0ICYmCi0JdGVzdF9jbXAgbXNnLm5vbG9nIG1zZy5hY3QgJiYKKwl0ZXN0X2NtcCBtc2cubm9sb2dmZiBtc2cuYWN0ICYmCisKKwlnaXQgcmVzZXQgLS1oYXJkIGMwICYmCisJdGVzdF9jb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIi0tbm8tZmYiICYmCisJZ2l0IG1lcmdlIC0tbm8tbG9nIGMyICYmCisJZ2l0IHNob3cgLXMgLS1wcmV0dHk9Zm9ybWF0OiViIEhFQUQgPm1zZy5hY3QgJiYKKwl0ZXN0X2NtcCBtc2cubm9sb2dub2ZmIG1zZy5hY3QgJiYKIAogCWdpdCBtZXJnZSAtLWxvZyBjMyAmJgogCWdpdCBzaG93IC1zIC0tcHJldHR5PWZvcm1hdDolYiBIRUFEID5tc2cuYWN0ICYmCiAJdGVzdF9jbXAgbXNnLmxvZyBtc2cuYWN0ICYmCiAKIAlnaXQgcmVzZXQgLS1oYXJkIEhFQUReICYmCi0JZ2l0IGNvbmZpZyBtZXJnZS5sb2cgeWVzICYmCisJdGVzdF9jb25maWcgbWVyZ2UubG9nICJ5ZXMiICYmCiAJZ2l0IG1lcmdlIGMzICYmCiAJZ2l0IHNob3cgLXMgLS1wcmV0dHk9Zm9ybWF0OiViIEhFQUQgPm1zZy5hY3QgJiYKIAl0ZXN0X2NtcCBtc2cubG9nIG1zZy5hY3QKQEAgLTU0Miw3ICs1MzcsNiBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBjMSB3aXRoIGMwLCBjMiwgYzAsIGFuZCBjMScgJwogICAgICAgIGdpdCByZXNldCAtLWhhcmQgYzEgJiYKLSAgICAgICBnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICIiICYmCiAgICAgICAgdGVzdF90aWNrICYmCiAgICAgICAgZ2l0IG1lcmdlIGMwIGMyIGMwIGMxICYmCiAgICAgICAgdmVyaWZ5X21lcmdlIGZpbGUgcmVzdWx0LjEtNSAmJgpAQCAtNTUzLDcgKzU0Nyw2IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGMxIHdpdGggYzAsIGMyLCBjMCwgYW5kIGMxJyAnCiAgICAgICAgZ2l0IHJlc2V0IC0taGFyZCBjMSAmJgotICAgICAgIGdpdCBjb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIiIgJiYKICAgICAgICB0ZXN0X3RpY2sgJiYKICAgICAgICBnaXQgbWVyZ2UgYzAgYzIgYzAgYzEgJiYKICAgICAgICB2ZXJpZnlfbWVyZ2UgZmlsZSByZXN1bHQuMS01ICYmCkBAIC01NjQsNyArNTU3LDYgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgYzEgd2l0aCBjMSBhbmQgYzInICcKICAgICAgICBnaXQgcmVzZXQgLS1oYXJkIGMxICYmCi0gICAgICAgZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiIiAmJgogICAgICAgIHRlc3RfdGljayAmJgogICAgICAgIGdpdCBtZXJnZSBjMSBjMiAmJgogICAgICAgIHZlcmlmeV9tZXJnZSBmaWxlIHJlc3VsdC4xLTUgJiYKZGlmZiAtLWdpdCBhL3QvdDc2MDEtbWVyZ2UtcHVsbC1jb25maWcuc2ggYi90L3Q3NjAxLW1lcmdlLXB1bGwtY29uZmlnLnNoCmluZGV4IGI0NGIyOTMuLjI1ZGFjNzkgMTAwNzU1Ci0tLSBhL3QvdDc2MDEtbWVyZ2UtcHVsbC1jb25maWcuc2gKKysrIGIvdC90NzYwMS1tZXJnZS1wdWxsLWNvbmZpZy5zaApAQCAtMTA5LDcgKzEwOSw3IEBACiAnCiAKICMgRmlyc3QgZG8gdGhlIG1lcmdlIHdpdGggcmVzb2x2ZSBhbmQgcmVjdXJzaXZlIHRoZW4gdmVyaWZ5IHRoYXQKLSMgcmVjdXNpdmUgaXMgY2hvb3Nlbi4KKyMgcmVjdXNpdmUgaXMgY2hvc2VuLgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBwaWNrcyB1cCB0aGUgYmVzdCByZXN1bHQnICcKIAlnaXQgY29uZmlnIC0tdW5zZXQtYWxsIHB1bGwudHdvaGVhZCAmJgpkaWZmIC0tZ2l0IGEvdC90NzYxMC1tZXJnZXRvb2wuc2ggYi90L3Q3NjEwLW1lcmdldG9vbC5zaAppbmRleCBmNWUxNmZjLi5kNTI2YjFkIDEwMDc1NQotLS0gYS90L3Q3NjEwLW1lcmdldG9vbC5zaAorKysgYi90L3Q3NjEwLW1lcmdldG9vbC5zaApAQCAtNTUsNiArNTUsMTYgQEAKICAgICBnaXQgcm0gZmlsZTEyICYmCiAgICAgZ2l0IGNvbW1pdCAtbSAiYnJhbmNoMSBjaGFuZ2VzIiAmJgogCisgICAgZ2l0IGNoZWNrb3V0IC1iIHN0YXNoMSBtYXN0ZXIgJiYKKyAgICBlY2hvIHN0YXNoMSBjaGFuZ2UgZmlsZTExID5maWxlMTEgJiYKKyAgICBnaXQgYWRkIGZpbGUxMSAmJgorICAgIGdpdCBjb21taXQgLW0gInN0YXNoMSBjaGFuZ2VzIiAmJgorCisgICAgZ2l0IGNoZWNrb3V0IC1iIHN0YXNoMiBtYXN0ZXIgJiYKKyAgICBlY2hvIHN0YXNoMiBjaGFuZ2UgZmlsZTExID5maWxlMTEgJiYKKyAgICBnaXQgYWRkIGZpbGUxMSAmJgorICAgIGdpdCBjb21taXQgLW0gInN0YXNoMiBjaGFuZ2VzIiAmJgorCiAgICAgZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogICAgIGdpdCBzdWJtb2R1bGUgdXBkYXRlIC1OICYmCiAgICAgZWNobyBtYXN0ZXIgdXBkYXRlZCA+ZmlsZTEgJiYKQEAgLTE5MywxMyArMjAzLDQxIEBACiAgICAgZ2l0IHJlc2V0IC0taGFyZAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb25mbGljdGVkIHN0YXNoIHNldHMgdXAgcmVyZXJlJyAgJworICAgIGdpdCBjb25maWcgcmVyZXJlLmVuYWJsZWQgdHJ1ZSAmJgorICAgIGdpdCBjaGVja291dCBzdGFzaDEgJiYKKyAgICBlY2hvICJDb25mbGljdGluZyBzdGFzaCBjb250ZW50IiA+ZmlsZTExICYmCisgICAgZ2l0IHN0YXNoICYmCisKKyAgICBnaXQgY2hlY2tvdXQgLS1kZXRhY2ggc3Rhc2gyICYmCisgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IHN0YXNoIGFwcGx5ICYmCisKKyAgICB0ZXN0IC1uICIkKGdpdCBscy1maWxlcyAtdSkiICYmCisgICAgY29uZmxpY3RzPSIkKGdpdCByZXJlcmUgcmVtYWluaW5nKSIgJiYKKyAgICB0ZXN0ICIkY29uZmxpY3RzIiA9ICJmaWxlMTEiICYmCisgICAgb3V0cHV0PSIkKGdpdCBtZXJnZXRvb2wgLS1uby1wcm9tcHQpIiAmJgorICAgIHRlc3QgIiRvdXRwdXQiICE9ICJObyBmaWxlcyBuZWVkIG1lcmdpbmciICYmCisKKyAgICBnaXQgY29tbWl0IC1hbSAic2F2ZSB0aGUgc3Rhc2ggcmVzb2x1dGlvbiIgJiYKKworICAgIGdpdCByZXNldCAtLWhhcmQgc3Rhc2gyICYmCisgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IHN0YXNoIGFwcGx5ICYmCisKKyAgICB0ZXN0IC1uICIkKGdpdCBscy1maWxlcyAtdSkiICYmCisgICAgY29uZmxpY3RzPSIkKGdpdCByZXJlcmUgcmVtYWluaW5nKSIgJiYKKyAgICB0ZXN0IC16ICIkY29uZmxpY3RzIiAmJgorICAgIG91dHB1dD0iJChnaXQgbWVyZ2V0b29sIC0tbm8tcHJvbXB0KSIgJiYKKyAgICB0ZXN0ICIkb3V0cHV0IiA9ICJObyBmaWxlcyBuZWVkIG1lcmdpbmciCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdldG9vbCB0YWtlcyBwYXJ0aWFsIHBhdGgnICcKKyAgICBnaXQgcmVzZXQgLS1oYXJkCiAgICAgZ2l0IGNvbmZpZyByZXJlcmUuZW5hYmxlZCBmYWxzZSAmJgogICAgIGdpdCBjaGVja291dCAtYiB0ZXN0MTIgYnJhbmNoMSAmJgogICAgIGdpdCBzdWJtb2R1bGUgdXBkYXRlIC1OICYmCiAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIG1hc3RlciAmJgogCi0gICAgI3Nob3VsZG50IG5lZWQgdGhlc2UgbGluZXMKKyAgICAjc2hvdWxkIG5vdCBuZWVkIHRoZXNlIGxpbmVzCiAgICAgIyggeWVzICJkIiB8IGdpdCBtZXJnZXRvb2wgZmlsZTExID4vZGV2L251bGwgMj4mMSApICYmCiAgICAgIyggeWVzICJkIiB8IGdpdCBtZXJnZXRvb2wgZmlsZTEyID4vZGV2L251bGwgMj4mMSApICYmCiAgICAgIyggeWVzICJsIiB8IGdpdCBtZXJnZXRvb2wgc3VibW9kID4vZGV2L251bGwgMj4mMSApICYmCkBAIC00NzEsNCArNTA5LDE3IEBACiAgICAgZ2l0IHJlc2V0IC0taGFyZCBtYXN0ZXIgPi9kZXYvbnVsbCAyPiYxCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N1c3RvbSBjb21tYW5kcyBvdmVycmlkZSBidWlsdC1pbnMnICcKKyAgICBnaXQgY2hlY2tvdXQgLWIgdGVzdDE0IGJyYW5jaDEgJiYKKyAgICBnaXQgY29uZmlnIG1lcmdldG9vbC5kZWZhdWx0cy5jbWQgImNhdCBcIlwkUkVNT1RFXCIgPlwiXCRNRVJHRURcIiIgJiYKKyAgICBnaXQgY29uZmlnIG1lcmdldG9vbC5kZWZhdWx0cy50cnVzdEV4aXRDb2RlIHRydWUgJiYKKyAgICB0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgbWFzdGVyICYmCisgICAgZ2l0IG1lcmdldG9vbCAtLW5vLXByb21wdCAtLXRvb2wgZGVmYXVsdHMgLS0gYm90aCAmJgorICAgIGVjaG8gbWFzdGVyIGJvdGggYWRkZWQgPmV4cGVjdGVkICYmCisgICAgdGVzdF9jbXAgYm90aCBleHBlY3RlZCAmJgorICAgIGdpdCBjb25maWcgLS11bnNldCBtZXJnZXRvb2wuZGVmYXVsdHMuY21kICYmCisgICAgZ2l0IGNvbmZpZyAtLXVuc2V0IG1lcmdldG9vbC5kZWZhdWx0cy50cnVzdEV4aXRDb2RlICYmCisgICAgZ2l0IHJlc2V0IC0taGFyZCBtYXN0ZXIgPi9kZXYvbnVsbCAyPiYxCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzYxMi1tZXJnZS12ZXJpZnktc2lnbmF0dXJlcy5zaCBiL3QvdDc2MTItbWVyZ2UtdmVyaWZ5LXNpZ25hdHVyZXMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjFhMGJmOAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDc2MTItbWVyZ2UtdmVyaWZ5LXNpZ25hdHVyZXMuc2gKQEAgLTAsMCArMSw2MSBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J21lcmdlIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gdGVzdHMnCisuIC4vdGVzdC1saWIuc2gKKy4gIiRURVNUX0RJUkVDVE9SWS9saWItZ3BnLnNoIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIEdQRyAnY3JlYXRlIHNpZ25lZCBjb21taXRzJyAnCisJZWNobyAxID5maWxlICYmIGdpdCBhZGQgZmlsZSAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC1tIGluaXRpYWwgJiYKKwlnaXQgdGFnIGluaXRpYWwgJiYKKworCWdpdCBjaGVja291dCAtYiBzaWRlLXNpZ25lZCAmJgorCWVjaG8gMyA+ZWxpZiAmJiBnaXQgYWRkIGVsaWYgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtUyAtbSAic2lnbmVkIG9uIHNpZGUiICYmCisJZ2l0IGNoZWNrb3V0IGluaXRpYWwgJiYKKworCWdpdCBjaGVja291dCAtYiBzaWRlLXVuc2lnbmVkICYmCisJZWNobyAzID5mb28gJiYgZ2l0IGFkZCBmb28gJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtbSAidW5zaWduZWQgb24gc2lkZSIgJiYKKwlnaXQgY2hlY2tvdXQgaW5pdGlhbCAmJgorCisJZ2l0IGNoZWNrb3V0IC1iIHNpZGUtYmFkICYmCisJZWNobyAzID5iYXIgJiYgZ2l0IGFkZCBiYXIgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtUyAtbSAiYmFkIG9uIHNpZGUiICYmCisJZ2l0IGNhdC1maWxlIGNvbW1pdCBzaWRlLWJhZCA+cmF3ICYmCisJc2VkIC1lICJzL2JhZC9mb3JnZWQgYmFkLyIgcmF3ID5mb3JnZWQgJiYKKwlnaXQgaGFzaC1vYmplY3QgLXcgLXQgY29tbWl0IGZvcmdlZCA+Zm9yZ2VkLmNvbW1pdCAmJgorCWdpdCBjaGVja291dCBpbml0aWFsICYmCisKKwlnaXQgY2hlY2tvdXQgLWIgc2lkZS11bnRydXN0ZWQgJiYKKwllY2hvIDMgPmJheiAmJiBnaXQgYWRkIGJheiAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC1TQjcyMjcxODkgLW0gInVudHJ1c3RlZCBvbiBzaWRlIgorCisJZ2l0IGNoZWNrb3V0IG1hc3RlcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIEdQRyAnbWVyZ2UgdW5zaWduZWQgY29tbWl0IHdpdGggdmVyaWZpY2F0aW9uJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIC0tZmYtb25seSAtLXZlcmlmeS1zaWduYXR1cmVzIHNpZGUtdW5zaWduZWQgMj5tZXJnZWVycm9yICYmCisJdGVzdF9pMThuZ3JlcCAiZG9lcyBub3QgaGF2ZSBhIEdQRyBzaWduYXR1cmUiIG1lcmdlZXJyb3IKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBHUEcgJ21lcmdlIGNvbW1pdCB3aXRoIGJhZCBzaWduYXR1cmUgd2l0aCB2ZXJpZmljYXRpb24nICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgLS1mZi1vbmx5IC0tdmVyaWZ5LXNpZ25hdHVyZXMgJChjYXQgZm9yZ2VkLmNvbW1pdCkgMj5tZXJnZWVycm9yICYmCisJdGVzdF9pMThuZ3JlcCAiaGFzIGEgYmFkIEdQRyBzaWduYXR1cmUiIG1lcmdlZXJyb3IKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBHUEcgJ21lcmdlIGNvbW1pdCB3aXRoIHVudHJ1c3RlZCBzaWduYXR1cmUgd2l0aCB2ZXJpZmljYXRpb24nICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgLS1mZi1vbmx5IC0tdmVyaWZ5LXNpZ25hdHVyZXMgc2lkZS11bnRydXN0ZWQgMj5tZXJnZWVycm9yICYmCisJdGVzdF9pMThuZ3JlcCAiaGFzIGFuIHVudHJ1c3RlZCBHUEcgc2lnbmF0dXJlIiBtZXJnZWVycm9yCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgR1BHICdtZXJnZSBzaWduZWQgY29tbWl0IHdpdGggdmVyaWZpY2F0aW9uJyAnCisJZ2l0IG1lcmdlIC0tdmVyYm9zZSAtLWZmLW9ubHkgLS12ZXJpZnktc2lnbmF0dXJlcyBzaWRlLXNpZ25lZCA+bWVyZ2VvdXRwdXQgJiYKKwl0ZXN0X2kxOG5ncmVwICJoYXMgYSBnb29kIEdQRyBzaWduYXR1cmUiIG1lcmdlb3V0cHV0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgR1BHICdtZXJnZSBjb21taXQgd2l0aCBiYWQgc2lnbmF0dXJlIHdpdGhvdXQgdmVyaWZpY2F0aW9uJyAnCisJZ2l0IG1lcmdlICQoY2F0IGZvcmdlZC5jb21taXQpCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzgwMC1kaWZmdG9vbC5zaCBiL3QvdDc4MDAtZGlmZnRvb2wuc2gKaW5kZXggOWMzZTk5Ny4uMjQxODUyOCAxMDA3NTUKLS0tIGEvdC90NzgwMC1kaWZmdG9vbC5zaAorKysgYi90L3Q3ODAwLWRpZmZ0b29sLnNoCkBAIC0xLDYgKzEsNiBAQAogIyEvYmluL3NoCiAjCi0jIENvcHlyaWdodCAoYykgMjAwOSwgMjAxMCBEYXZpZCBBZ3VpbGFyCisjIENvcHlyaWdodCAoYykgMjAwOSwgMjAxMCwgMjAxMiwgMjAxMyBEYXZpZCBBZ3VpbGFyCiAjCiAKIHRlc3RfZGVzY3JpcHRpb249J2dpdC1kaWZmdG9vbApAQCAtMTAsNDcgKzEwLDE5IEBACiAKIC4gLi90ZXN0LWxpYi5zaAogCi1yZW1vdmVfY29uZmlnX3ZhcnMoKQorZGlmZnRvb2xfdGVzdF9zZXR1cCAoKQogewotCSMgVW5zZXQgYWxsIGNvbmZpZyB2YXJpYWJsZXMgdXNlZCBieSBnaXQtZGlmZnRvb2wKLQlnaXQgY29uZmlnIC0tdW5zZXQgZGlmZi50b29sCi0JZ2l0IGNvbmZpZyAtLXVuc2V0IGRpZmYuZ3VpdG9vbAotCWdpdCBjb25maWcgLS11bnNldCBkaWZmdG9vbC50ZXN0LXRvb2wuY21kCi0JZ2l0IGNvbmZpZyAtLXVuc2V0IGRpZmZ0b29sLnByb21wdAotCWdpdCBjb25maWcgLS11bnNldCBtZXJnZS50b29sCi0JZ2l0IGNvbmZpZyAtLXVuc2V0IG1lcmdldG9vbC50ZXN0LXRvb2wuY21kCi0JZ2l0IGNvbmZpZyAtLXVuc2V0IG1lcmdldG9vbC5wcm9tcHQKLQlyZXR1cm4gMAorCXRlc3RfY29uZmlnIGRpZmYudG9vbCB0ZXN0LXRvb2wgJiYKKwl0ZXN0X2NvbmZpZyBkaWZmdG9vbC50ZXN0LXRvb2wuY21kICdjYXQgIiRMT0NBTCInICYmCisJdGVzdF9jb25maWcgZGlmZnRvb2wuYm9ndXMtdG9vbC5jbWQgZmFsc2UKIH0KIAotcmVzdG9yZV90ZXN0X2RlZmF1bHRzKCkKLXsKLQkjIFJlc3RvcmVzIHRoZSB0ZXN0IGRlZmF1bHRzIHVzZWQgYnkgc2V2ZXJhbCB0ZXN0cwotCXJlbW92ZV9jb25maWdfdmFycwotCXVuc2V0IEdJVF9ESUZGX1RPT0wKLQl1bnNldCBHSVRfRElGRlRPT0xfUFJPTVBUCi0JdW5zZXQgR0lUX0RJRkZUT09MX05PX1BST01QVAotCWdpdCBjb25maWcgZGlmZi50b29sIHRlc3QtdG9vbCAmJgotCWdpdCBjb25maWcgZGlmZnRvb2wudGVzdC10b29sLmNtZCAnY2F0ICRMT0NBTCcKLQlnaXQgY29uZmlnIGRpZmZ0b29sLmJvZ3VzLXRvb2wuY21kIGZhbHNlCi19Ci0KLXByb21wdF9naXZlbigpCitwcm9tcHRfZ2l2ZW4gKCkKIHsKIAlwcm9tcHQ9IiQxIgogCXRlc3QgIiRwcm9tcHQiID0gIkxhdW5jaCAndGVzdC10b29sJyBbWS9uXTogYnJhbmNoIgogfQogCi1zdGRpbl9jb250YWlucygpCi17Ci0JZ3JlcCA+L2Rldi9udWxsICIkMSIKLX0KLQotc3RkaW5fZG9lc25vdF9jb250YWluKCkKLXsKLQkhIHN0ZGluX2NvbnRhaW5zICIkMSIKLX0KLQogIyBDcmVhdGUgYSBmaWxlIG9uIG1hc3RlciBhbmQgY2hhbmdlIGl0IG9uIGJyYW5jaAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdzZXR1cCcgJwogCWVjaG8gbWFzdGVyID5maWxlICYmCkBAIC02NSwyMzggKzM3LDIzNyBAQAogCiAjIENvbmZpZ3VyZSBhIGN1c3RvbSBkaWZmdG9vbC48dG9vbD4uY21kIGFuZCB1c2UgaXQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnY3VzdG9tIGNvbW1hbmRzJyAnCi0JcmVzdG9yZV90ZXN0X2RlZmF1bHRzICYmCi0JZ2l0IGNvbmZpZyBkaWZmdG9vbC50ZXN0LXRvb2wuY21kICJjYXQgXCRSRU1PVEUiICYmCisJZGlmZnRvb2xfdGVzdF9zZXR1cCAmJgorCXRlc3RfY29uZmlnIGRpZmZ0b29sLnRlc3QtdG9vbC5jbWQgImNhdCBcIlwkUkVNT1RFXCIiICYmCisJZWNobyBtYXN0ZXIgPmV4cGVjdCAmJgorCWdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKIAotCWRpZmY9JChnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgYnJhbmNoKSAmJgotCXRlc3QgIiRkaWZmIiA9ICJtYXN0ZXIiICYmCi0KLQlyZXN0b3JlX3Rlc3RfZGVmYXVsdHMgJiYKLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IGJyYW5jaCkgJiYKLQl0ZXN0ICIkZGlmZiIgPSAiYnJhbmNoIgorCXRlc3RfY29uZmlnIGRpZmZ0b29sLnRlc3QtdG9vbC5jbWQgImNhdCBcIlwkTE9DQUxcIiIgJiYKKwllY2hvIGJyYW5jaCA+ZXhwZWN0ICYmCisJZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IGJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCi0jIEVuc3VyZXMgdGhhdCBnaXQtZGlmZnRvb2wgaWdub3JlcyBib2d1cyAtLXRvb2wgdmFsdWVzCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2N1c3RvbSB0b29sIGNvbW1hbmRzIG92ZXJyaWRlIGJ1aWx0LWlucycgJworCXRlc3RfY29uZmlnIGRpZmZ0b29sLnZpbWRpZmYuY21kICJjYXQgXCJcJFJFTU9URVwiIiAmJgorCWVjaG8gbWFzdGVyID5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgLS10b29sIHZpbWRpZmYgLS1uby1wcm9tcHQgYnJhbmNoID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgaWdub3JlcyBiYWQgLS10b29sIHZhbHVlcycgJwotCWRpZmY9JChnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLS10b29sPWJhZC10b29sIGJyYW5jaCkKLQl0ZXN0ICIkPyIgPSAxICYmCi0JdGVzdCAiJGRpZmYiID0gIiIKKwk6ID5leHBlY3QgJiYKKwl0ZXN0X2V4cGVjdF9jb2RlIDEgXAorCQlnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLS10b29sPWJhZC10b29sIGJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sIGZvcndhcmRzIGFyZ3VtZW50cyB0byBkaWZmJyAnCisJZGlmZnRvb2xfdGVzdF9zZXR1cCAmJgogCT5mb3ItZGlmZiAmJgogCWdpdCBhZGQgZm9yLWRpZmYgJiYKIAllY2hvIGNoYW5nZXM+Zm9yLWRpZmYgJiYKIAlnaXQgYWRkIGZvci1kaWZmICYmCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLWNhY2hlZCAtLW5vLXByb21wdCAtLSBmb3ItZGlmZikgJiYKLQl0ZXN0ICIkZGlmZiIgPSAiIiAmJgorCTogPmV4cGVjdCAmJgorCWdpdCBkaWZmdG9vbCAtLWNhY2hlZCAtLW5vLXByb21wdCAtLSBmb3ItZGlmZiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgogCWdpdCByZXNldCAtLSBmb3ItZGlmZiAmJgogCXJtIGZvci1kaWZmCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgaG9ub3JzIC0tZ3VpJyAnCi0JZ2l0IGNvbmZpZyBtZXJnZS50b29sIGJvZ3VzLXRvb2wgJiYKLQlnaXQgY29uZmlnIGRpZmYudG9vbCBib2d1cy10b29sICYmCi0JZ2l0IGNvbmZpZyBkaWZmLmd1aXRvb2wgdGVzdC10b29sICYmCisJZGlmZnRvb2xfdGVzdF9zZXR1cCAmJgorCXRlc3RfY29uZmlnIG1lcmdlLnRvb2wgYm9ndXMtdG9vbCAmJgorCXRlc3RfY29uZmlnIGRpZmYudG9vbCBib2d1cy10b29sICYmCisJdGVzdF9jb25maWcgZGlmZi5ndWl0b29sIHRlc3QtdG9vbCAmJgogCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLWd1aSBicmFuY2gpICYmCi0JdGVzdCAiJGRpZmYiID0gImJyYW5jaCIgJiYKLQotCXJlc3RvcmVfdGVzdF9kZWZhdWx0cworCWVjaG8gYnJhbmNoID5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLS1ndWkgYnJhbmNoID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgLS1ndWkgbGFzdCBzZXR0aW5nIHdpbnMnICcKLQlnaXQgY29uZmlnIGRpZmYuZ3VpdG9vbCBib2d1cy10b29sICYmCi0JZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IC0tZ3VpIC0tbm8tZ3VpICYmCisJZGlmZnRvb2xfdGVzdF9zZXR1cCAmJgorCTogPmV4cGVjdCAmJgorCWdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLWd1aSAtLW5vLWd1aSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgogCi0JZ2l0IGNvbmZpZyBtZXJnZS50b29sIGJvZ3VzLXRvb2wgJiYKLQlnaXQgY29uZmlnIGRpZmYudG9vbCBib2d1cy10b29sICYmCi0JZ2l0IGNvbmZpZyBkaWZmLmd1aXRvb2wgdGVzdC10b29sICYmCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLW5vLWd1aSAtLWd1aSBicmFuY2gpICYmCi0JdGVzdCAiJGRpZmYiID0gImJyYW5jaCIgJiYKLQotCXJlc3RvcmVfdGVzdF9kZWZhdWx0cworCXRlc3RfY29uZmlnIG1lcmdlLnRvb2wgYm9ndXMtdG9vbCAmJgorCXRlc3RfY29uZmlnIGRpZmYudG9vbCBib2d1cy10b29sICYmCisJdGVzdF9jb25maWcgZGlmZi5ndWl0b29sIHRlc3QtdG9vbCAmJgorCWVjaG8gYnJhbmNoID5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLS1uby1ndWkgLS1ndWkgYnJhbmNoID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgLS1ndWkgd29ya3Mgd2l0aG91dCBjb25maWd1cmVkIGRpZmYuZ3VpdG9vbCcgJwotCWdpdCBjb25maWcgZGlmZi50b29sIHRlc3QtdG9vbCAmJgotCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLWd1aSBicmFuY2gpICYmCi0JdGVzdCAiJGRpZmYiID0gImJyYW5jaCIgJiYKLQotCXJlc3RvcmVfdGVzdF9kZWZhdWx0cworCWRpZmZ0b29sX3Rlc3Rfc2V0dXAgJiYKKwllY2hvIGJyYW5jaCA+ZXhwZWN0ICYmCisJZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IC0tZ3VpIGJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCiAjIFNwZWNpZnkgdGhlIGRpZmYgdG9vbCB1c2luZyAkR0lUX0RJRkZfVE9PTAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdHSVRfRElGRl9UT09MIHZhcmlhYmxlJyAnCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldCBkaWZmLnRvb2wgJiYKLQlHSVRfRElGRl9UT09MPXRlc3QtdG9vbCAmJgotCWV4cG9ydCBHSVRfRElGRl9UT09MICYmCi0KLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IGJyYW5jaCkgJiYKLQl0ZXN0ICIkZGlmZiIgPSAiYnJhbmNoIiAmJgotCi0JcmVzdG9yZV90ZXN0X2RlZmF1bHRzCisJZGlmZnRvb2xfdGVzdF9zZXR1cCAmJgorCWdpdCBjb25maWcgLS11bnNldCBkaWZmLnRvb2wgJiYKKwllY2hvIGJyYW5jaCA+ZXhwZWN0ICYmCisJR0lUX0RJRkZfVE9PTD10ZXN0LXRvb2wgZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IGJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCiAjIFRlc3QgdGhlICRHSVRfKl9UT09MIHZhcmlhYmxlcyBhbmQgZW5zdXJlCiAjIHRoYXQgJEdJVF9ESUZGX1RPT0wgYWx3YXlzIHdpbnMgdW5sZXNzIC0tdG9vbCBpcyBzcGVjaWZpZWQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnR0lUX0RJRkZfVE9PTCBvdmVycmlkZXMnICcKLQlnaXQgY29uZmlnIGRpZmYudG9vbCBib2d1cy10b29sICYmCi0JZ2l0IGNvbmZpZyBtZXJnZS50b29sIGJvZ3VzLXRvb2wgJiYKKwlkaWZmdG9vbF90ZXN0X3NldHVwICYmCisJdGVzdF9jb25maWcgZGlmZi50b29sIGJvZ3VzLXRvb2wgJiYKKwl0ZXN0X2NvbmZpZyBtZXJnZS50b29sIGJvZ3VzLXRvb2wgJiYKIAotCUdJVF9ESUZGX1RPT0w9dGVzdC10b29sICYmCi0JZXhwb3J0IEdJVF9ESUZGX1RPT0wgJiYKKwllY2hvIGJyYW5jaCA+ZXhwZWN0ICYmCisJR0lUX0RJRkZfVE9PTD10ZXN0LXRvb2wgZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IGJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgogCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCBicmFuY2gpICYmCi0JdGVzdCAiJGRpZmYiID0gImJyYW5jaCIgJiYKLQotCUdJVF9ESUZGX1RPT0w9Ym9ndXMtdG9vbCAmJgotCWV4cG9ydCBHSVRfRElGRl9UT09MICYmCi0KLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IC0tdG9vbD10ZXN0LXRvb2wgYnJhbmNoKSAmJgotCXRlc3QgIiRkaWZmIiA9ICJicmFuY2giICYmCi0KLQlyZXN0b3JlX3Rlc3RfZGVmYXVsdHMKKwl0ZXN0X2NvbmZpZyBkaWZmLnRvb2wgYm9ndXMtdG9vbCAmJgorCXRlc3RfY29uZmlnIG1lcmdlLnRvb2wgYm9ndXMtdG9vbCAmJgorCUdJVF9ESUZGX1RPT0w9Ym9ndXMtdG9vbCBcCisJCWdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLXRvb2w9dGVzdC10b29sIGJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCiAjIFRlc3QgdGhhdCB3ZSBkb24ndCBoYXZlIHRvIHBhc3MgLS1uby1wcm9tcHQgdG8gZGlmZnRvb2wKICMgd2hlbiAkR0lUX0RJRkZUT09MX05PX1BST01QVCBpcyB0cnVlCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ0dJVF9ESUZGVE9PTF9OT19QUk9NUFQgdmFyaWFibGUnICcKLQlHSVRfRElGRlRPT0xfTk9fUFJPTVBUPXRydWUgJiYKLQlleHBvcnQgR0lUX0RJRkZUT09MX05PX1BST01QVCAmJgotCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCBicmFuY2gpICYmCi0JdGVzdCAiJGRpZmYiID0gImJyYW5jaCIgJiYKLQotCXJlc3RvcmVfdGVzdF9kZWZhdWx0cworCWRpZmZ0b29sX3Rlc3Rfc2V0dXAgJiYKKwllY2hvIGJyYW5jaCA+ZXhwZWN0ICYmCisJR0lUX0RJRkZUT09MX05PX1BST01QVD10cnVlIGdpdCBkaWZmdG9vbCBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogIyBnaXQtZGlmZnRvb2wgc3VwcG9ydHMgdGhlIGRpZmZ0b29sLnByb21wdCB2YXJpYWJsZS4KICMgVGVzdCB0aGF0IEdJVF9ESUZGVE9PTF9QUk9NUFQgY2FuIG92ZXJyaWRlIGRpZmZ0b29sLnByb21wdCA9IGZhbHNlCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ0dJVF9ESUZGVE9PTF9QUk9NUFQgdmFyaWFibGUnICcKLQlnaXQgY29uZmlnIGRpZmZ0b29sLnByb21wdCBmYWxzZSAmJgotCUdJVF9ESUZGVE9PTF9QUk9NUFQ9dHJ1ZSAmJgotCWV4cG9ydCBHSVRfRElGRlRPT0xfUFJPTVBUICYmCi0KLQlwcm9tcHQ9JChlY2hvIHwgZ2l0IGRpZmZ0b29sIGJyYW5jaCB8IHRhaWwgLTEpICYmCi0JcHJvbXB0X2dpdmVuICIkcHJvbXB0IiAmJgotCi0JcmVzdG9yZV90ZXN0X2RlZmF1bHRzCisJZGlmZnRvb2xfdGVzdF9zZXR1cCAmJgorCXRlc3RfY29uZmlnIGRpZmZ0b29sLnByb21wdCBmYWxzZSAmJgorCWVjaG8gPmlucHV0ICYmCisJR0lUX0RJRkZUT09MX1BST01QVD10cnVlIGdpdCBkaWZmdG9vbCBicmFuY2ggPGlucHV0ID5vdXRwdXQgJiYKKwlwcm9tcHQ9JCh0YWlsIC0xIDxvdXRwdXQpICYmCisJcHJvbXB0X2dpdmVuICIkcHJvbXB0IgogJwogCiAjIFRlc3QgdGhhdCB3ZSBkb24ndCBoYXZlIHRvIHBhc3MgLS1uby1wcm9tcHQgd2hlbiBkaWZmdG9vbC5wcm9tcHQgaXMgZmFsc2UKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wucHJvbXB0IGNvbmZpZyB2YXJpYWJsZSBpcyBmYWxzZScgJwotCWdpdCBjb25maWcgZGlmZnRvb2wucHJvbXB0IGZhbHNlICYmCi0KLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIGJyYW5jaCkgJiYKLQl0ZXN0ICIkZGlmZiIgPSAiYnJhbmNoIiAmJgotCi0JcmVzdG9yZV90ZXN0X2RlZmF1bHRzCisJZGlmZnRvb2xfdGVzdF9zZXR1cCAmJgorCXRlc3RfY29uZmlnIGRpZmZ0b29sLnByb21wdCBmYWxzZSAmJgorCWVjaG8gYnJhbmNoID5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgYnJhbmNoID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKICMgVGVzdCB0aGF0IHdlIGRvbid0IGhhdmUgdG8gcGFzcyAtLW5vLXByb21wdCB3aGVuIG1lcmdldG9vbC5wcm9tcHQgaXMgZmFsc2UKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgbWVyZ2UucHJvbXB0ID0gZmFsc2UnICcKKwlkaWZmdG9vbF90ZXN0X3NldHVwICYmCiAJdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldCBkaWZmdG9vbC5wcm9tcHQgJiYKLQlnaXQgY29uZmlnIG1lcmdldG9vbC5wcm9tcHQgZmFsc2UgJiYKLQotCWRpZmY9JChnaXQgZGlmZnRvb2wgYnJhbmNoKSAmJgotCXRlc3QgIiRkaWZmIiA9ICJicmFuY2giICYmCi0KLQlyZXN0b3JlX3Rlc3RfZGVmYXVsdHMKKwl0ZXN0X2NvbmZpZyBtZXJnZXRvb2wucHJvbXB0IGZhbHNlICYmCisJZWNobyBicmFuY2ggPmV4cGVjdCAmJgorCWdpdCBkaWZmdG9vbCBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogIyBUZXN0IHRoYXQgdGhlIC15IGZsYWcgY2FuIG92ZXJyaWRlIGRpZmZ0b29sLnByb21wdCA9IHRydWUKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wucHJvbXB0IGNhbiBvdmVycmlkZGVuIHdpdGggLXknICcKLQlnaXQgY29uZmlnIGRpZmZ0b29sLnByb21wdCB0cnVlICYmCi0KLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC15IGJyYW5jaCkgJiYKLQl0ZXN0ICIkZGlmZiIgPSAiYnJhbmNoIiAmJgotCi0JcmVzdG9yZV90ZXN0X2RlZmF1bHRzCisJZGlmZnRvb2xfdGVzdF9zZXR1cCAmJgorCXRlc3RfY29uZmlnIGRpZmZ0b29sLnByb21wdCB0cnVlICYmCisJZWNobyBicmFuY2ggPmV4cGVjdCAmJgorCWdpdCBkaWZmdG9vbCAteSBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogIyBUZXN0IHRoYXQgdGhlIC0tcHJvbXB0IGZsYWcgY2FuIG92ZXJyaWRlIGRpZmZ0b29sLnByb21wdCA9IGZhbHNlCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sLnByb21wdCBjYW4gb3ZlcnJpZGRlbiB3aXRoIC0tcHJvbXB0JyAnCi0JZ2l0IGNvbmZpZyBkaWZmdG9vbC5wcm9tcHQgZmFsc2UgJiYKLQotCXByb21wdD0kKGVjaG8gfCBnaXQgZGlmZnRvb2wgLS1wcm9tcHQgYnJhbmNoIHwgdGFpbCAtMSkgJiYKLQlwcm9tcHRfZ2l2ZW4gIiRwcm9tcHQiICYmCi0KLQlyZXN0b3JlX3Rlc3RfZGVmYXVsdHMKKwlkaWZmdG9vbF90ZXN0X3NldHVwICYmCisJdGVzdF9jb25maWcgZGlmZnRvb2wucHJvbXB0IGZhbHNlICYmCisJZWNobyA+aW5wdXQgJiYKKwlnaXQgZGlmZnRvb2wgLS1wcm9tcHQgYnJhbmNoIDxpbnB1dCA+b3V0cHV0ICYmCisJcHJvbXB0PSQodGFpbCAtMSA8b3V0cHV0KSAmJgorCXByb21wdF9naXZlbiAiJHByb21wdCIKICcKIAogIyBUZXN0IHRoYXQgdGhlIGxhc3QgZmxhZyBwYXNzZWQgb24gdGhlIGNvbW1hbmQtbGluZSB3aW5zCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sIGxhc3QgZmxhZyB3aW5zJyAnCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLXByb21wdCAtLW5vLXByb21wdCBicmFuY2gpICYmCi0JdGVzdCAiJGRpZmYiID0gImJyYW5jaCIgJiYKLQotCXJlc3RvcmVfdGVzdF9kZWZhdWx0cyAmJgotCi0JcHJvbXB0PSQoZWNobyB8IGdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLXByb21wdCBicmFuY2ggfCB0YWlsIC0xKSAmJgotCXByb21wdF9naXZlbiAiJHByb21wdCIgJiYKLQotCXJlc3RvcmVfdGVzdF9kZWZhdWx0cworCWRpZmZ0b29sX3Rlc3Rfc2V0dXAgJiYKKwllY2hvIGJyYW5jaCA+ZXhwZWN0ICYmCisJZ2l0IGRpZmZ0b29sIC0tcHJvbXB0IC0tbm8tcHJvbXB0IGJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgorCWVjaG8gPmlucHV0ICYmCisJZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IC0tcHJvbXB0IGJyYW5jaCA8aW5wdXQgPm91dHB1dCAmJgorCXByb21wdD0kKHRhaWwgLTEgPG91dHB1dCkgJiYKKwlwcm9tcHRfZ2l2ZW4gIiRwcm9tcHQiCiAnCiAKICMgZ2l0LWRpZmZ0b29sIGZhbGxzIGJhY2sgdG8gZ2l0LW1lcmdldG9vbCBjb25maWcgdmFyaWFibGVzCiAjIHNvIHRlc3QgdGhhdCBiZWhhdmlvciBoZXJlCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sICsgbWVyZ2V0b29sIGNvbmZpZyB2YXJpYWJsZXMnICcKLQlyZW1vdmVfY29uZmlnX3ZhcnMgJiYKLQlnaXQgY29uZmlnIG1lcmdlLnRvb2wgdGVzdC10b29sICYmCi0JZ2l0IGNvbmZpZyBtZXJnZXRvb2wudGVzdC10b29sLmNtZCAiY2F0IFwkTE9DQUwiICYmCi0KLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IGJyYW5jaCkgJiYKLQl0ZXN0ICIkZGlmZiIgPSAiYnJhbmNoIiAmJgorCXRlc3RfY29uZmlnIG1lcmdlLnRvb2wgdGVzdC10b29sICYmCisJdGVzdF9jb25maWcgbWVyZ2V0b29sLnRlc3QtdG9vbC5jbWQgImNhdCBcJExPQ0FMIiAmJgorCWVjaG8gYnJhbmNoID5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgYnJhbmNoID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCiAKIAkjIHNldCBtZXJnZS50b29sIHRvIHNvbWV0aGluZyBib2d1cywgZGlmZi50b29sIHRvIHRlc3QtdG9vbAotCWdpdCBjb25maWcgbWVyZ2UudG9vbCBib2d1cy10b29sICYmCi0JZ2l0IGNvbmZpZyBkaWZmLnRvb2wgdGVzdC10b29sICYmCi0KLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IGJyYW5jaCkgJiYKLQl0ZXN0ICIkZGlmZiIgPSAiYnJhbmNoIiAmJgotCi0JcmVzdG9yZV90ZXN0X2RlZmF1bHRzCisJdGVzdF9jb25maWcgbWVyZ2UudG9vbCBib2d1cy10b29sICYmCisJdGVzdF9jb25maWcgZGlmZi50b29sIHRlc3QtdG9vbCAmJgorCWdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdkaWZmdG9vbC48dG9vbD4ucGF0aCcgJwotCWdpdCBjb25maWcgZGlmZnRvb2wudGtkaWZmLnBhdGggZWNobyAmJgotCWRpZmY9JChnaXQgZGlmZnRvb2wgLS10b29sPXRrZGlmZiAtLW5vLXByb21wdCBicmFuY2gpICYmCi0JZ2l0IGNvbmZpZyAtLXVuc2V0IGRpZmZ0b29sLnRrZGlmZi5wYXRoICYmCi0JbGluZXM9JChlY2hvICIkZGlmZiIgfCBncmVwIGZpbGUgfCB3YyAtbCkgJiYKLQl0ZXN0ICIkbGluZXMiIC1lcSAxICYmCi0KLQlyZXN0b3JlX3Rlc3RfZGVmYXVsdHMKKwl0ZXN0X2NvbmZpZyBkaWZmdG9vbC50a2RpZmYucGF0aCBlY2hvICYmCisJZ2l0IGRpZmZ0b29sIC0tdG9vbD10a2RpZmYgLS1uby1wcm9tcHQgYnJhbmNoID5vdXRwdXQgJiYKKwlsaW5lcz0kKGdyZXAgZmlsZSBvdXRwdXQgfCB3YyAtbCkgJiYKKwl0ZXN0ICIkbGluZXMiIC1lcSAxCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgLS1leHRjbWQ9Y2F0JyAnCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLWV4dGNtZD1jYXQgYnJhbmNoKSAmJgotCXRlc3QgIiRkaWZmIiA9IGJyYW5jaCIkTEYibWFzdGVyCisJZWNobyBicmFuY2ggPmV4cGVjdCAmJgorCWVjaG8gbWFzdGVyID4+ZXhwZWN0ICYmCisJZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IC0tZXh0Y21kPWNhdCBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdkaWZmdG9vbCAtLWV4dGNtZCBjYXQnICcKLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IC0tZXh0Y21kIGNhdCBicmFuY2gpICYmCi0JdGVzdCAiJGRpZmYiID0gYnJhbmNoIiRMRiJtYXN0ZXIKKwllY2hvIGJyYW5jaCA+ZXhwZWN0ICYmCisJZWNobyBtYXN0ZXIgPj5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLS1leHRjbWQ9Y2F0IGJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sIC14IGNhdCcgJwotCWRpZmY9JChnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLXggY2F0IGJyYW5jaCkgJiYKLQl0ZXN0ICIkZGlmZiIgPSBicmFuY2giJExGIm1hc3RlcgorCWVjaG8gYnJhbmNoID5leHBlY3QgJiYKKwllY2hvIG1hc3RlciA+PmV4cGVjdCAmJgorCWdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAteCBjYXQgYnJhbmNoID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgLS1leHRjbWQgZWNobyBhcmcxJyAnCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLWV4dGNtZCBzaFwgLWNcIFwiZWNob1wgXCQxXCIgYnJhbmNoKSAmJgotCXRlc3QgIiRkaWZmIiA9IGZpbGUKKwllY2hvIGZpbGUgPmV4cGVjdCAmJgorCWdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCBcCisJCS0tZXh0Y21kIHNoXCAtY1wgXCJlY2hvXCBcJDFcIiBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdkaWZmdG9vbCAtLWV4dGNtZCBjYXQgYXJnMScgJwotCWRpZmY9JChnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLS1leHRjbWQgc2hcIC1jXCBcImNhdFwgXCQxXCIgYnJhbmNoKSAmJgotCXRlc3QgIiRkaWZmIiA9IG1hc3RlcgorCWVjaG8gbWFzdGVyID5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgXAorCQktLWV4dGNtZCBzaFwgLWNcIFwiY2F0XCBcJDFcIiBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdkaWZmdG9vbCAtLWV4dGNtZCBjYXQgYXJnMicgJwotCWRpZmY9JChnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLS1leHRjbWQgc2hcIC1jXCBcImNhdFwgXCQyXCIgYnJhbmNoKSAmJgotCXRlc3QgIiRkaWZmIiA9IGJyYW5jaAorCWVjaG8gYnJhbmNoID5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgXAorCQktLWV4dGNtZCBzaFwgLWNcIFwiY2F0XCBcJDJcIiBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogIyBDcmVhdGUgYSBzZWNvbmQgZmlsZSBvbiBtYXN0ZXIgYW5kIGEgZGlmZmVyZW50IHZlcnNpb24gb24gYnJhbmNoCkBAIC0zMTMsMjYgKzI4NCwyNiBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ3NheSBubyB0byB0aGUgZmlyc3QgZmlsZScgJwotCWRpZmY9JCggKGVjaG8gbjsgZWNobykgfCBnaXQgZGlmZnRvb2wgLXggY2F0IGJyYW5jaCApICYmCi0KLQllY2hvICIkZGlmZiIgfCBzdGRpbl9jb250YWlucyBtMiAmJgotCWVjaG8gIiRkaWZmIiB8IHN0ZGluX2NvbnRhaW5zIGJyMiAmJgotCWVjaG8gIiRkaWZmIiB8IHN0ZGluX2RvZXNub3RfY29udGFpbiBtYXN0ZXIgJiYKLQllY2hvICIkZGlmZiIgfCBzdGRpbl9kb2Vzbm90X2NvbnRhaW4gYnJhbmNoCisJKGVjaG8gbiAmJiBlY2hvKSA+aW5wdXQgJiYKKwlnaXQgZGlmZnRvb2wgLXggY2F0IGJyYW5jaCA8aW5wdXQgPm91dHB1dCAmJgorCWdyZXAgbTIgb3V0cHV0ICYmCisJZ3JlcCBicjIgb3V0cHV0ICYmCisJISBncmVwIG1hc3RlciBvdXRwdXQgJiYKKwkhIGdyZXAgYnJhbmNoIG91dHB1dAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ3NheSBubyB0byB0aGUgc2Vjb25kIGZpbGUnICcKLQlkaWZmPSQoIChlY2hvOyBlY2hvIG4pIHwgZ2l0IGRpZmZ0b29sIC14IGNhdCBicmFuY2ggKSAmJgotCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fY29udGFpbnMgbWFzdGVyICYmCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fY29udGFpbnMgYnJhbmNoICYmCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fZG9lc25vdF9jb250YWluIG0yICYmCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fZG9lc25vdF9jb250YWluIGJyMgorCShlY2hvICYmIGVjaG8gbikgPmlucHV0ICYmCisJZ2l0IGRpZmZ0b29sIC14IGNhdCBicmFuY2ggPGlucHV0ID5vdXRwdXQgJiYKKwlncmVwIG1hc3RlciBvdXRwdXQgJiYKKwlncmVwIGJyYW5jaCBvdXRwdXQgJiYKKwkhIGdyZXAgbTIgb3V0cHV0ICYmCisJISBncmVwIGJyMiBvdXRwdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdkaWZmdG9vbCAtLXRvb2wtaGVscCcgJwotCXRvb2xfaGVscD0kKGdpdCBkaWZmdG9vbCAtLXRvb2wtaGVscCkgJiYKLQllY2hvICIkdG9vbF9oZWxwIiB8IHN0ZGluX2NvbnRhaW5zIHRvb2wKKwlnaXQgZGlmZnRvb2wgLS10b29sLWhlbHAgPm91dHB1dCAmJgorCWdyZXAgdG9vbCBvdXRwdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdzZXR1cCBjaGFuZ2UgaW4gc3ViZGlyZWN0b3J5JyAnCkBAIC0zNDMsMzQgKzMxNCwxMjMgQEAKIAlnaXQgY29tbWl0IC1tICJhZGRlZCBzdWIvc3ViIiAmJgogCWVjaG8gdGVzdCA+PmZpbGUgJiYKIAllY2hvIHRlc3QgPj5zdWIvc3ViICYmCi0JZ2l0IGFkZCAuICYmCisJZ2l0IGFkZCBmaWxlIHN1Yi9zdWIgJiYKIAlnaXQgY29tbWl0IC1tICJtb2RpZmllZCBib3RoIgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sIC1kJyAnCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtZCAtLWV4dGNtZCBscyBicmFuY2gpICYmCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fY29udGFpbnMgc3ViICYmCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fY29udGFpbnMgZmlsZQorcnVuX2Rpcl9kaWZmX3Rlc3QgKCkgeworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAiJDEgLS1uby1zeW1saW5rcyIgIgorCQlzeW1saW5rcz0tLW5vLXN5bWxpbmtzICYmCisJCSQyCisJIgorCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCxTWU1MSU5LUyAiJDEgLS1zeW1saW5rcyIgIgorCQlzeW1saW5rcz0tLXN5bWxpbmtzICYmCisJCSQyCisJIgorfQorCitydW5fZGlyX2RpZmZfdGVzdCAnZGlmZnRvb2wgLWQnICcKKwlnaXQgZGlmZnRvb2wgLWQgJHN5bWxpbmtzIC0tZXh0Y21kIGxzIGJyYW5jaCA+b3V0cHV0ICYmCisJZ3JlcCBzdWIgb3V0cHV0ICYmCisJZ3JlcCBmaWxlIG91dHB1dAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sIC0tZGlyLWRpZmYnICcKLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC0tZGlyLWRpZmYgLS1leHRjbWQgbHMgYnJhbmNoKSAmJgotCWVjaG8gIiRkaWZmIiB8IHN0ZGluX2NvbnRhaW5zIHN1YiAmJgotCWVjaG8gIiRkaWZmIiB8IHN0ZGluX2NvbnRhaW5zIGZpbGUKK3J1bl9kaXJfZGlmZl90ZXN0ICdkaWZmdG9vbCAtLWRpci1kaWZmJyAnCisJZ2l0IGRpZmZ0b29sIC0tZGlyLWRpZmYgJHN5bWxpbmtzIC0tZXh0Y21kIGxzIGJyYW5jaCA+b3V0cHV0ICYmCisJZ3JlcCBzdWIgb3V0cHV0ICYmCisJZ3JlcCBmaWxlIG91dHB1dAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sIC0tZGlyLWRpZmYgaWdub3JlcyAtLXByb21wdCcgJwotCWRpZmY9JChnaXQgZGlmZnRvb2wgLS1kaXItZGlmZiAtLXByb21wdCAtLWV4dGNtZCBscyBicmFuY2gpICYmCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fY29udGFpbnMgc3ViICYmCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fY29udGFpbnMgZmlsZQorcnVuX2Rpcl9kaWZmX3Rlc3QgJ2RpZmZ0b29sIC0tZGlyLWRpZmYgaWdub3JlcyAtLXByb21wdCcgJworCWdpdCBkaWZmdG9vbCAtLWRpci1kaWZmICRzeW1saW5rcyAtLXByb21wdCAtLWV4dGNtZCBscyBicmFuY2ggPm91dHB1dCAmJgorCWdyZXAgc3ViIG91dHB1dCAmJgorCWdyZXAgZmlsZSBvdXRwdXQKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdkaWZmdG9vbCAtLWRpci1kaWZmIGZyb20gc3ViZGlyZWN0b3J5JyAnCitydW5fZGlyX2RpZmZfdGVzdCAnZGlmZnRvb2wgLS1kaXItZGlmZiBmcm9tIHN1YmRpcmVjdG9yeScgJwogCSgKIAkJY2Qgc3ViICYmCi0JCWRpZmY9JChnaXQgZGlmZnRvb2wgLS1kaXItZGlmZiAtLWV4dGNtZCBscyBicmFuY2gpICYmCi0JCWVjaG8gIiRkaWZmIiB8IHN0ZGluX2NvbnRhaW5zIHN1YiAmJgotCQllY2hvICIkZGlmZiIgfCBzdGRpbl9jb250YWlucyBmaWxlCisJCWdpdCBkaWZmdG9vbCAtLWRpci1kaWZmICRzeW1saW5rcyAtLWV4dGNtZCBscyBicmFuY2ggPm91dHB1dCAmJgorCQlncmVwIHN1YiBvdXRwdXQgJiYKKwkJZ3JlcCBmaWxlIG91dHB1dAorCSkKKycKKworcnVuX2Rpcl9kaWZmX3Rlc3QgJ2RpZmZ0b29sIC0tZGlyLWRpZmYgd2hlbiB3b3JrdHJlZSBmaWxlIGlzIG1pc3NpbmcnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgZ2l0IHJlc2V0IC0taGFyZCAmJgorCXJtIGZpbGUyICYmCisJZ2l0IGRpZmZ0b29sIC0tZGlyLWRpZmYgJHN5bWxpbmtzIC0tZXh0Y21kIGxzIGJyYW5jaCBtYXN0ZXIgPm91dHB1dCAmJgorCWdyZXAgZmlsZTIgb3V0cHV0CisnCisKK3dyaXRlX3NjcmlwdCAuZ2l0L0NIRUNLX1NZTUxJTktTIDw8XEVPRgorZm9yIGYgaW4gZmlsZSBmaWxlMiBzdWIvc3ViCitkbworCWVjaG8gIiRmIgorCXJlYWRsaW5rICIkMi8kZiIKK2RvbmUgPmFjdHVhbAorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCxTWU1MSU5LUyAnZGlmZnRvb2wgLS1kaXItZGlmZiAtLXN5bWxpbmsgd2l0aG91dCB1bnN0YWdlZCBjaGFuZ2VzJyAnCisJY2F0ID5leHBlY3QgPDwtRU9GICYmCisJZmlsZQorCSQocHdkKS9maWxlCisJZmlsZTIKKwkkKHB3ZCkvZmlsZTIKKwlzdWIvc3ViCisJJChwd2QpL3N1Yi9zdWIKKwlFT0YKKwlnaXQgZGlmZnRvb2wgLS1kaXItZGlmZiAtLXN5bWxpbmsgXAorCQktLWV4dGNtZCAiLi8uZ2l0L0NIRUNLX1NZTUxJTktTIiBicmFuY2ggSEVBRCAmJgorCXRlc3RfY21wIGFjdHVhbCBleHBlY3QKKycKKword3JpdGVfc2NyaXB0IG1vZGlmeS1yaWdodC1maWxlIDw8XEVPRgorZWNobyAibmV3IGNvbnRlbnQiID4iJDIvZmlsZSIKK0VPRgorCitydW5fZGlyX2RpZmZfdGVzdCAnZGlmZnRvb2wgLS1kaXItZGlmZiBzeW5jcyB3b3JrdHJlZSB3aXRoIHVuc3RhZ2VkIGNoYW5nZScgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgcmVzZXQgLS1oYXJkICYmCisJZWNobyAib3JpZyBjb250ZW50IiA+ZmlsZSAmJgorCWdpdCBkaWZmdG9vbCAtZCAkc3ltbGlua3MgLS1leHRjbWQgIiQocHdkKS9tb2RpZnktcmlnaHQtZmlsZSIgYnJhbmNoICYmCisJZWNobyAibmV3IGNvbnRlbnQiID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgZmlsZQorJworCitydW5fZGlyX2RpZmZfdGVzdCAnZGlmZnRvb2wgLS1kaXItZGlmZiBzeW5jcyB3b3JrdHJlZSB3aXRob3V0IHVuc3RhZ2VkIGNoYW5nZScgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGRpZmZ0b29sIC1kICRzeW1saW5rcyAtLWV4dGNtZCAiJChwd2QpL21vZGlmeS1yaWdodC1maWxlIiBicmFuY2ggJiYKKwllY2hvICJuZXcgY29udGVudCIgPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBmaWxlCisnCisKK3dyaXRlX3NjcmlwdCBtb2RpZnktZmlsZSA8PFxFT0YKK2VjaG8gIm5ldyBjb250ZW50IiA+ZmlsZQorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgLS1uby1zeW1saW5rcyBkb2VzIG5vdCBvdmVyd3JpdGUgd29ya2luZyB0cmVlIGZpbGUgJyAnCisJZWNobyAib3JpZyBjb250ZW50IiA+ZmlsZSAmJgorCWdpdCBkaWZmdG9vbCAtLWRpci1kaWZmIC0tbm8tc3ltbGlua3MgLS1leHRjbWQgIiQocHdkKS9tb2RpZnktZmlsZSIgYnJhbmNoICYmCisJZWNobyAibmV3IGNvbnRlbnQiID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgZmlsZQorJworCit3cml0ZV9zY3JpcHQgbW9kaWZ5LWJvdGgtZmlsZXMgPDxcRU9GCitlY2hvICJ3dCBjb250ZW50IiA+ZmlsZSAmJgorZWNobyAidG1wIGNvbnRlbnQiID4iJDIvZmlsZSIgJiYKK2VjaG8gIiQyIiA+dG1wZGlyCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdkaWZmdG9vbCAtLW5vLXN5bWxpbmtzIGRldGVjdHMgY29uZmxpY3QgJyAnCisJKAorCQlUTVBESVI9JFRSQVNIX0RJUkVDVE9SWSAmJgorCQlleHBvcnQgVE1QRElSICYmCisJCWVjaG8gIm9yaWcgY29udGVudCIgPmZpbGUgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IGRpZmZ0b29sIC0tZGlyLWRpZmYgLS1uby1zeW1saW5rcyAtLWV4dGNtZCAiJChwd2QpL21vZGlmeS1ib3RoLWZpbGVzIiBicmFuY2ggJiYKKwkJZWNobyAid3QgY29udGVudCIgPmV4cGVjdCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgZmlsZSAmJgorCQllY2hvICJ0bXAgY29udGVudCIgPmV4cGVjdCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgIiQoY2F0IHRtcGRpcikvZmlsZSIKIAkpCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDc4MTAtZ3JlcC5zaCBiL3QvdDc4MTAtZ3JlcC5zaAppbmRleCAyNGU5YjE5Li5mNjk4MDAxIDEwMDc1NQotLS0gYS90L3Q3ODEwLWdyZXAuc2gKKysrIGIvdC90NzgxMC1ncmVwLnNoCkBAIC0yNTAsNiArMjUwLDg0IEBACiAJCWdpdCAtYyBncmVwLmV4dGVuZGVkUmVnZXhwPXRydWUgZ3JlcCAiYStiKmMiIGFiID5hY3R1YWwgJiYKIAkJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAJJworCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiZ3JlcCAkTCB3aXRoIGdyZXAucGF0dGVybnR5cGU9YmFzaWMiICcKKwkJZWNobyAiYWI6YStiYyIgPmV4cGVjdGVkICYmCisJCWdpdCAtYyBncmVwLnBhdHRlcm50eXBlPWJhc2ljIGdyZXAgImErYipjIiBhYiA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorCScKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgImdyZXAgJEwgd2l0aCBncmVwLnBhdHRlcm50eXBlPWV4dGVuZGVkIiAnCisJCWVjaG8gImFiOmFiYyIgPmV4cGVjdGVkICYmCisJCWdpdCAtYyBncmVwLnBhdHRlcm50eXBlPWV4dGVuZGVkIGdyZXAgImErYipjIiBhYiA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorCScKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgImdyZXAgJEwgd2l0aCBncmVwLnBhdHRlcm50eXBlPWZpeGVkIiAnCisJCWVjaG8gImFiOmErYipjIiA+ZXhwZWN0ZWQgJiYKKwkJZ2l0IC1jIGdyZXAucGF0dGVybnR5cGU9Zml4ZWQgZ3JlcCAiYStiKmMiIGFiID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisJJworCisJdGVzdF9leHBlY3Rfc3VjY2VzcyBMSUJQQ1JFICJncmVwICRMIHdpdGggZ3JlcC5wYXR0ZXJudHlwZT1wZXJsIiAnCisJCWVjaG8gImFiOmErYipjIiA+ZXhwZWN0ZWQgJiYKKwkJZ2l0IC1jIGdyZXAucGF0dGVybnR5cGU9cGVybCBncmVwICJhXHh7MmJ9Ylx4ezJhfWMiIGFiID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisJJworCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiZ3JlcCAkTCB3aXRoIGdyZXAucGF0dGVyblR5cGU9ZGVmYXVsdCBhbmQgZ3JlcC5leHRlbmRlZFJlZ2V4cD10cnVlIiAnCisJCWVjaG8gImFiOmFiYyIgPmV4cGVjdGVkICYmCisJCWdpdCBcCisJCQktYyBncmVwLnBhdHRlcm5UeXBlPWRlZmF1bHQgXAorCQkJLWMgZ3JlcC5leHRlbmRlZFJlZ2V4cD10cnVlIFwKKwkJCWdyZXAgImErYipjIiBhYiA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorCScKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgImdyZXAgJEwgd2l0aCBncmVwLmV4dGVuZGVkUmVnZXhwPXRydWUgYW5kIGdyZXAucGF0dGVyblR5cGU9ZGVmYXVsdCIgJworCQllY2hvICJhYjphYmMiID5leHBlY3RlZCAmJgorCQlnaXQgXAorCQkJLWMgZ3JlcC5leHRlbmRlZFJlZ2V4cD10cnVlIFwKKwkJCS1jIGdyZXAucGF0dGVyblR5cGU9ZGVmYXVsdCBcCisJCQlncmVwICJhK2IqYyIgYWIgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKwknCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdncmVwICRMIHdpdGggZ3JlcC5wYXR0ZXJuVHlwZT1leHRlbmRlZCBhbmQgZ3JlcC5leHRlbmRlZFJlZ2V4cD1mYWxzZScgJworCQllY2hvICJhYjphYmMiID5leHBlY3RlZCAmJgorCQlnaXQgXAorCQkJLWMgZ3JlcC5wYXR0ZXJuVHlwZT1leHRlbmRlZCBcCisJCQktYyBncmVwLmV4dGVuZGVkUmVnZXhwPWZhbHNlIFwKKwkJCWdyZXAgImErYipjIiBhYiA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorCScKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dyZXAgJEwgd2l0aCBncmVwLnBhdHRlcm5UeXBlPWJhc2ljIGFuZCBncmVwLmV4dGVuZGVkUmVnZXhwPXRydWUnICcKKwkJZWNobyAiYWI6YStiYyIgPmV4cGVjdGVkICYmCisJCWdpdCBcCisJCQktYyBncmVwLnBhdHRlcm5UeXBlPWJhc2ljIFwKKwkJCS1jIGdyZXAuZXh0ZW5kZWRSZWdleHA9dHJ1ZSBcCisJCQlncmVwICJhK2IqYyIgYWIgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKwknCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdncmVwICRMIHdpdGggZ3JlcC5leHRlbmRlZFJlZ2V4cD1mYWxzZSBhbmQgZ3JlcC5wYXR0ZXJuVHlwZT1leHRlbmRlZCcgJworCQllY2hvICJhYjphYmMiID5leHBlY3RlZCAmJgorCQlnaXQgXAorCQkJLWMgZ3JlcC5leHRlbmRlZFJlZ2V4cD1mYWxzZSBcCisJCQktYyBncmVwLnBhdHRlcm5UeXBlPWV4dGVuZGVkIFwKKwkJCWdyZXAgImErYipjIiBhYiA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorCScKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dyZXAgJEwgd2l0aCBncmVwLmV4dGVuZGVkUmVnZXhwPXRydWUgYW5kIGdyZXAucGF0dGVyblR5cGU9YmFzaWMnICcKKwkJZWNobyAiYWI6YStiYyIgPmV4cGVjdGVkICYmCisJCWdpdCBcCisJCQktYyBncmVwLmV4dGVuZGVkUmVnZXhwPXRydWUgXAorCQkJLWMgZ3JlcC5wYXR0ZXJuVHlwZT1iYXNpYyBcCisJCQlncmVwICJhK2IqYyIgYWIgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKwknCiBkb25lCiAKIGNhdCA+ZXhwZWN0ZWQgPDxFT0YKQEAgLTM5OSwxNyArNDc3LDYgQEAKIAl0ZXN0X2NtcCBlbXB0eSBhY3R1YWwKICcKIAotIyBDcmVhdGUgMTAyNCBmaWxlIG5hbWVzIHRoYXQgc29ydCBiZXR3ZWVuICJ5IiBhbmQgInoiIHRvIG1ha2Ugc3VyZQotIyB0aGUgdHdvIGZpbGVzIGFyZSBoYW5kbGVkIGJ5IGRpZmZlcmVudCBjYWxscyB0byBhbiBleHRlcm5hbCBncmVwLgotIyBUaGlzIGRlcGVuZHMgb24gTUFYQVJHUyBpbiBidWlsdGluLWdyZXAuYyBiZWluZyAxMDI0IG9yIGxlc3MuCi1jMzI9IjAgMSAyIDMgNCA1IDYgNyA4IDkgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgbSBuIG8gcCBxIHIgcyB0IHUgdiIKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dyZXAgLUMxLCBodW5rIG1hcmsgYmV0d2VlbiBmaWxlcycgJwotCWZvciBhIGluICRjMzI7IGRvIGZvciBiIGluICRjMzI7IGRvIDogPnktJGEkYjsgZG9uZTsgZG9uZSAmJgotCWdpdCBhZGQgeS0/PyAmJgotCWdpdCBncmVwIC1DMSAiXlt5el0iID5hY3R1YWwgJiYKLQl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKLScKLQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ3JlcCAtQzEgaHVuayBtYXJrIGJldHdlZW4gZmlsZXMnICcKIAlnaXQgZ3JlcCAtQzEgIl5beXpdIiA+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCkBAIC00MzUsMzEgKzUwMiw0MSBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgZ3JlcCAoMSknICcKIAlnaXQgbG9nIC0tYXV0aG9yPWF1dGhvciAtLXByZXR0eT10Zm9ybWF0OiVzID5hY3R1YWwgJiYKLQkoIGVjaG8gdGhpcmQgOyBlY2hvIGluaXRpYWwgKSA+ZXhwZWN0ICYmCisJeworCQllY2hvIHRoaXJkICYmIGVjaG8gaW5pdGlhbAorCX0gPmV4cGVjdCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIGdyZXAgKDIpJyAnCiAJZ2l0IGxvZyAtLWF1dGhvcj0iICogIiAtRiAtLXByZXR0eT10Zm9ybWF0OiVzID5hY3R1YWwgJiYKLQkoIGVjaG8gc2Vjb25kICkgPmV4cGVjdCAmJgorCXsKKwkJZWNobyBzZWNvbmQKKwl9ID5leHBlY3QgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyBncmVwICgzKScgJwogCWdpdCBsb2cgLS1hdXRob3I9Il5BIFUiIC0tcHJldHR5PXRmb3JtYXQ6JXMgPmFjdHVhbCAmJgotCSggZWNobyB0aGlyZCA7IGVjaG8gaW5pdGlhbCApID5leHBlY3QgJiYKKwl7CisJCWVjaG8gdGhpcmQgJiYgZWNobyBpbml0aWFsCisJfSA+ZXhwZWN0ICYmCiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgZ3JlcCAoNCknICcKIAlnaXQgbG9nIC0tYXV0aG9yPSJmcm90elwuY29tPiQiIC0tcHJldHR5PXRmb3JtYXQ6JXMgPmFjdHVhbCAmJgotCSggZWNobyBzZWNvbmQgKSA+ZXhwZWN0ICYmCisJeworCQllY2hvIHNlY29uZAorCX0gPmV4cGVjdCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIGdyZXAgKDUpJyAnCiAJZ2l0IGxvZyAtLWF1dGhvcj1UaG9yIC1GIC0tcHJldHR5PXRmb3JtYXQ6JXMgPmFjdHVhbCAmJgotCSggZWNobyB0aGlyZCA7IGVjaG8gaW5pdGlhbCApID5leHBlY3QgJiYKKwl7CisJCWVjaG8gdGhpcmQgJiYgZWNobyBpbml0aWFsCisJfSA+ZXhwZWN0ICYmCiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCkBAIC00NjksMTEgKzU0Niw0OSBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIC0tZ3JlcCAtLWF1dGhvciBpbXBsaWNpdGx5IHVzZXMgYWxsLW1hdGNoJyAnCi0JIyBncmVwIG1hdGNoZXMgaW5pdGlhbCBhbmQgc2Vjb25kIGJ1dCBub3QgdGhpcmQKLQkjIGF1dGhvciBtYXRjaGVzIG9ubHkgaW5pdGlhbCBhbmQgdGhpcmQKLQlnaXQgbG9nIC0tYXV0aG9yPSJBIFUgVGhvciIgLS1ncmVwPXMgLS1ncmVwPWwgLS1mb3JtYXQ9JXMgPmFjdHVhbCAmJgotCWVjaG8gaW5pdGlhbCA+ZXhwZWN0ICYmCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgZ3JlcCAoNyknICcKKwlnaXQgbG9nIC1nIC0tZ3JlcC1yZWZsb2c9ImNvbW1pdDogdGhpcmQiIC0tcHJldHR5PXRmb3JtYXQ6JXMgPmFjdHVhbCAmJgorCWVjaG8gdGhpcmQgPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIGdyZXAgKDgpJyAnCisJZ2l0IGxvZyAtZyAtLWdyZXAtcmVmbG9nPSJjb21taXQ6IHRoaXJkIiAtLWdyZXAtcmVmbG9nPSJjb21taXQ6IHNlY29uZCIgLS1wcmV0dHk9dGZvcm1hdDolcyA+YWN0dWFsICYmCisJeworCQllY2hvIHRoaXJkICYmIGVjaG8gc2Vjb25kCisJfSA+ZXhwZWN0ICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgZ3JlcCAoOSknICcKKwlnaXQgbG9nIC1nIC0tZ3JlcC1yZWZsb2c9ImNvbW1pdDogdGhpcmQiIC0tYXV0aG9yPSJUaG9yIiAtLXByZXR0eT10Zm9ybWF0OiVzID5hY3R1YWwgJiYKKwllY2hvIHRoaXJkID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyBncmVwICg5KScgJworCWdpdCBsb2cgLWcgLS1ncmVwLXJlZmxvZz0iY29tbWl0OiB0aGlyZCIgLS1hdXRob3I9Im5vbi1leGlzdGFudCIgLS1wcmV0dHk9dGZvcm1hdDolcyA+YWN0dWFsICYmCisJOiA+ZXhwZWN0ICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgLS1ncmVwLXJlZmxvZyBjYW4gb25seSBiZSB1c2VkIHVuZGVyIC1nJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGxvZyAtLWdyZXAtcmVmbG9nPSJjb21taXQ6IHRoaXJkIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgd2l0aCBtdWx0aXBsZSAtLWdyZXAgdXNlcyB1bmlvbicgJworCWdpdCBsb2cgLS1ncmVwPWkgLS1ncmVwPXIgLS1mb3JtYXQ9JXMgPmFjdHVhbCAmJgorCXsKKwkJZWNobyBmb3VydGggJiYgZWNobyB0aGlyZCAmJiBlY2hvIGluaXRpYWwKKwl9ID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtLWFsbC1tYXRjaCB3aXRoIG11bHRpcGxlIC0tZ3JlcCB1c2VzIGludGVyc2VjdGlvbicgJworCWdpdCBsb2cgLS1hbGwtbWF0Y2ggLS1ncmVwPWkgLS1ncmVwPXIgLS1mb3JtYXQ9JXMgPmFjdHVhbCAmJgorCXsKKwkJZWNobyB0aGlyZAorCX0gPmV4cGVjdCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIApAQCAtNDg1LDcgKzYwMCw0NyBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIHdpdGggLS1ncmVwIGFuZCBtdWx0aXBsZSAtLWF1dGhvciB1c2VzIGFsbC1tYXRjaCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIC0tYWxsLW1hdGNoIHdpdGggbXVsdGlwbGUgLS1hdXRob3Igc3RpbGwgdXNlcyB1bmlvbicgJworCWdpdCBsb2cgLS1hbGwtbWF0Y2ggLS1hdXRob3I9IlRob3IiIC0tYXV0aG9yPSJBc3RlciIgLS1mb3JtYXQ9JXMgPmFjdHVhbCAmJgorCXsKKwkgICAgZWNobyB0aGlyZCAmJiBlY2hvIHNlY29uZCAmJiBlY2hvIGluaXRpYWwKKwl9ID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtLWdyZXAgLS1hdXRob3IgdXNlcyBpbnRlcnNlY3Rpb24nICcKKwkjIGdyZXAgbWF0Y2hlcyBvbmx5IHRoaXJkIGFuZCBmb3VydGgKKwkjIGF1dGhvciBtYXRjaGVzIG9ubHkgaW5pdGlhbCBhbmQgdGhpcmQKKwlnaXQgbG9nIC0tYXV0aG9yPSJBIFUgVGhvciIgLS1ncmVwPXIgLS1mb3JtYXQ9JXMgPmFjdHVhbCAmJgorCXsKKwkJZWNobyB0aGlyZAorCX0gPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIC0tZ3JlcCAtLWdyZXAgLS1hdXRob3IgdGFrZXMgdW5pb24gb2YgZ3JlcHMgYW5kIGludGVyc2VjdHMgd2l0aCBhdXRob3InICcKKwkjIGdyZXAgbWF0Y2hlcyBpbml0aWFsIGFuZCBzZWNvbmQgYnV0IG5vdCB0aGlyZAorCSMgYXV0aG9yIG1hdGNoZXMgb25seSBpbml0aWFsIGFuZCB0aGlyZAorCWdpdCBsb2cgLS1hdXRob3I9IkEgVSBUaG9yIiAtLWdyZXA9cyAtLWdyZXA9bCAtLWZvcm1hdD0lcyA+YWN0dWFsICYmCisJeworCQllY2hvIGluaXRpYWwKKwl9ID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtLS1hbGwtbWF0Y2ggLWdyZXAgLS1hdXRob3IgLS1hdXRob3Igc3RpbGwgdGFrZXMgdW5pb24gb2YgYXV0aG9ycyBhbmQgaW50ZXJzZWN0cyB3aXRoIGdyZXAnICcKKwkjIGdyZXAgbWF0Y2hlcyBvbmx5IGluaXRpYWwgYW5kIHRoaXJkCisJIyBhdXRob3IgbWF0Y2hlcyBhbGwgYnV0IHNlY29uZAorCWdpdCBsb2cgLS1hbGwtbWF0Y2ggLS1hdXRob3I9IlRob3IiIC0tYXV0aG9yPSJOaWdodCIgLS1ncmVwPWkgLS1mb3JtYXQ9JXMgPmFjdHVhbCAmJgorCXsKKwkgICAgZWNobyB0aGlyZCAmJiBlY2hvIGluaXRpYWwKKwl9ID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtLWdyZXAgLS1hdXRob3IgLS1hdXRob3IgdGFrZXMgdW5pb24gb2YgYXV0aG9ycyBhbmQgaW50ZXJzZWN0cyB3aXRoIGdyZXAnICcKKwkjIGdyZXAgbWF0Y2hlcyBvbmx5IGluaXRpYWwgYW5kIHRoaXJkCisJIyBhdXRob3IgbWF0Y2hlcyBhbGwgYnV0IHNlY29uZAogCWdpdCBsb2cgLS1hdXRob3I9IlRob3IiIC0tYXV0aG9yPSJOaWdodCIgLS1ncmVwPWkgLS1mb3JtYXQ9JXMgPmFjdHVhbCAmJgogCXsKIAkgICAgZWNobyB0aGlyZCAmJiBlY2hvIGluaXRpYWwKQEAgLTQ5Myw5ICs2NDgsMjUgQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyB3aXRoIC0tZ3JlcCBhbmQgbXVsdGlwbGUgLS1hdXRob3IgdXNlcyBhbGwtbWF0Y2gnICcKLQlnaXQgbG9nIC0tYXV0aG9yPSJUaG9yIiAtLWF1dGhvcj0iTmlnaHQiIC0tZ3JlcD1xIC0tZm9ybWF0PSVzID5hY3R1YWwgJiYKLQk+ZXhwZWN0ICYmCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgLS1hbGwtbWF0Y2ggLS1ncmVwIC0tZ3JlcCAtLWF1dGhvciB0YWtlcyBpbnRlcnNlY3Rpb24nICcKKwkjIGdyZXAgbWF0Y2hlcyBvbmx5IHRoaXJkCisJIyBhdXRob3IgbWF0Y2hlcyBvbmx5IGluaXRpYWwgYW5kIHRoaXJkCisJZ2l0IGxvZyAtLWFsbC1tYXRjaCAtLWF1dGhvcj0iQSBVIFRob3IiIC0tZ3JlcD1pIC0tZ3JlcD1yIC0tZm9ybWF0PSVzID5hY3R1YWwgJiYKKwl7CisJCWVjaG8gdGhpcmQKKwl9ID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtLWF1dGhvciBkb2VzIG5vdCBzZWFyY2ggaW4gdGltZXN0YW1wJyAnCisJOiA+ZXhwZWN0ICYmCisJZ2l0IGxvZyAtLWF1dGhvcj0iJEdJVF9BVVRIT1JfREFURSIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIC0tY29tbWl0dGVyIGRvZXMgbm90IHNlYXJjaCBpbiB0aW1lc3RhbXAnICcKKwk6ID5leHBlY3QgJiYKKwlnaXQgbG9nIC0tY29tbWl0dGVyPSIkR0lUX0NPTU1JVFRFUl9EQVRFIiA+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCkBAIC03NzIsNDQgKzk0MywxNDcgQEAKIAl0ZXN0X211c3RfZmFpbCBnaXQgZ3JlcCAtRyAiYVsiCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dyZXAgaW52YWxpZHBhdHRlcm4gcHJvcGVybHkgZGllcyB3aXRoIGdyZXAucGF0dGVyblR5cGU9YmFzaWMnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgLWMgZ3JlcC5wYXR0ZXJudHlwZT1iYXNpYyBncmVwICJhWyIKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ3JlcCAtRSBpbnZhbGlkcGF0dGVybiBwcm9wZXJseSBkaWVzICcgJwogCXRlc3RfbXVzdF9mYWlsIGdpdCBncmVwIC1FICJhWyIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ3JlcCBpbnZhbGlkcGF0dGVybiBwcm9wZXJseSBkaWVzIHdpdGggZ3JlcC5wYXR0ZXJuVHlwZT1leHRlbmRlZCcgJworCXRlc3RfbXVzdF9mYWlsIGdpdCAtYyBncmVwLnBhdHRlcm50eXBlPWV4dGVuZGVkIGdyZXAgImFbIgorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIExJQlBDUkUgJ2dyZXAgLVAgaW52YWxpZHBhdHRlcm4gcHJvcGVybHkgZGllcyAnICcKIAl0ZXN0X211c3RfZmFpbCBnaXQgZ3JlcCAtUCAiYVsiCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgTElCUENSRSAnZ3JlcCBpbnZhbGlkcGF0dGVybiBwcm9wZXJseSBkaWVzIHdpdGggZ3JlcC5wYXR0ZXJuVHlwZT1wZXJsJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IC1jIGdyZXAucGF0dGVybnR5cGU9cGVybCBncmVwICJhWyIKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ3JlcCAtRyAtRSAtRiBwYXR0ZXJuJyAnCiAJZWNobyAiYWI6YStiKmMiID5leHBlY3RlZCAmJgogCWdpdCBncmVwIC1HIC1FIC1GICJhK2IqYyIgYWIgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdncmVwIHBhdHRlcm4gd2l0aCBncmVwLnBhdHRlcm5UeXBlPWJhc2ljLCA9ZXh0ZW5kZWQsID1maXhlZCcgJworCWVjaG8gImFiOmErYipjIiA+ZXhwZWN0ZWQgJiYKKwlnaXQgXAorCQktYyBncmVwLnBhdHRlcm50eXBlPWJhc2ljIFwKKwkJLWMgZ3JlcC5wYXR0ZXJudHlwZT1leHRlbmRlZCBcCisJCS1jIGdyZXAucGF0dGVybnR5cGU9Zml4ZWQgXAorCQlncmVwICJhK2IqYyIgYWIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdncmVwIC1FIC1GIC1HIHBhdHRlcm4nICcKIAllY2hvICJhYjphK2JjIiA+ZXhwZWN0ZWQgJiYKIAlnaXQgZ3JlcCAtRSAtRiAtRyAiYStiKmMiIGFiID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ3JlcCBwYXR0ZXJuIHdpdGggZ3JlcC5wYXR0ZXJuVHlwZT1leHRlbmRlZCwgPWZpeGVkLCA9YmFzaWMnICcKKwllY2hvICJhYjphK2JjIiA+ZXhwZWN0ZWQgJiYKKwlnaXQgXAorCQktYyBncmVwLnBhdHRlcm50eXBlPWV4dGVuZGVkIFwKKwkJLWMgZ3JlcC5wYXR0ZXJudHlwZT1maXhlZCBcCisJCS1jIGdyZXAucGF0dGVybnR5cGU9YmFzaWMgXAorCQlncmVwICJhK2IqYyIgYWIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdncmVwIC1GIC1HIC1FIHBhdHRlcm4nICcKIAllY2hvICJhYjphYmMiID5leHBlY3RlZCAmJgogCWdpdCBncmVwIC1GIC1HIC1FICJhK2IqYyIgYWIgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdncmVwIHBhdHRlcm4gd2l0aCBncmVwLnBhdHRlcm5UeXBlPWZpeGVkLCA9YmFzaWMsID1leHRlbmRlZCcgJworCWVjaG8gImFiOmFiYyIgPmV4cGVjdGVkICYmCisJZ2l0IFwKKwkJLWMgZ3JlcC5wYXR0ZXJudHlwZT1maXhlZCBcCisJCS1jIGdyZXAucGF0dGVybnR5cGU9YmFzaWMgXAorCQktYyBncmVwLnBhdHRlcm50eXBlPWV4dGVuZGVkIFwKKwkJZ3JlcCAiYStiKmMiIGFiID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ3JlcCAtRyAtRiAtUCAtRSBwYXR0ZXJuJyAnCiAJPmVtcHR5ICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGdyZXAgLUcgLUYgLVAgLUUgImFceHsyYn1iXHh7MmF9YyIgYWIgPmFjdHVhbCAmJgogCXRlc3RfY21wIGVtcHR5IGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdncmVwIHBhdHRlcm4gd2l0aCBncmVwLnBhdHRlcm5UeXBlPWZpeGVkLCA9YmFzaWMsID1wZXJsLCA9ZXh0ZW5kZWQnICcKKwk+ZW1wdHkgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgXAorCQktYyBncmVwLnBhdHRlcm50eXBlPWZpeGVkIFwKKwkJLWMgZ3JlcC5wYXR0ZXJudHlwZT1iYXNpYyBcCisJCS1jIGdyZXAucGF0dGVybnR5cGU9cGVybCBcCisJCS1jIGdyZXAucGF0dGVybnR5cGU9ZXh0ZW5kZWQgXAorCQlncmVwICJhXHh7MmJ9Ylx4ezJhfWMiIGFiID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBlbXB0eSBhY3R1YWwKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyBMSUJQQ1JFICdncmVwIC1HIC1GIC1FIC1QIHBhdHRlcm4nICcKIAllY2hvICJhYjphK2IqYyIgPmV4cGVjdGVkICYmCiAJZ2l0IGdyZXAgLUcgLUYgLUUgLVAgImFceHsyYn1iXHh7MmF9YyIgYWIgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzIExJQlBDUkUgJ2dyZXAgcGF0dGVybiB3aXRoIGdyZXAucGF0dGVyblR5cGU9Zml4ZWQsID1iYXNpYywgPWV4dGVuZGVkLCA9cGVybCcgJworCWVjaG8gImFiOmErYipjIiA+ZXhwZWN0ZWQgJiYKKwlnaXQgXAorCQktYyBncmVwLnBhdHRlcm50eXBlPWZpeGVkIFwKKwkJLWMgZ3JlcC5wYXR0ZXJudHlwZT1iYXNpYyBcCisJCS1jIGdyZXAucGF0dGVybnR5cGU9ZXh0ZW5kZWQgXAorCQktYyBncmVwLnBhdHRlcm50eXBlPXBlcmwgXAorCQlncmVwICJhXHh7MmJ9Ylx4ezJhfWMiIGFiID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBMSUJQQ1JFICdncmVwIC1QIHBhdHRlcm4gd2l0aCBncmVwLnBhdHRlcm5UeXBlPWZpeGVkJyAnCisJZWNobyAiYWI6YStiKmMiID5leHBlY3RlZCAmJgorCWdpdCBcCisJCS1jIGdyZXAucGF0dGVybnR5cGU9Zml4ZWQgXAorCQlncmVwIC1QICJhXHh7MmJ9Ylx4ezJhfWMiIGFiID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ3JlcCAtRiBwYXR0ZXJuIHdpdGggZ3JlcC5wYXR0ZXJuVHlwZT1iYXNpYycgJworCWVjaG8gImFiOmErYipjIiA+ZXhwZWN0ZWQgJiYKKwlnaXQgXAorCQktYyBncmVwLnBhdHRlcm50eXBlPWJhc2ljIFwKKwkJZ3JlcCAtRiAiKmMiIGFiID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ3JlcCAtRyBwYXR0ZXJuIHdpdGggZ3JlcC5wYXR0ZXJuVHlwZT1maXhlZCcgJworCXsKKwkJZWNobyAiYWI6YStiKmMiCisJCWVjaG8gImFiOmErYmMiCisJfSA+ZXhwZWN0ZWQgJiYKKwlnaXQgXAorCQktYyBncmVwLnBhdHRlcm50eXBlPWZpeGVkIFwKKwkJZ3JlcCAtRyAiYStiIiBhYiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dyZXAgLUUgcGF0dGVybiB3aXRoIGdyZXAucGF0dGVyblR5cGU9Zml4ZWQnICcKKwl7CisJCWVjaG8gImFiOmErYipjIgorCQllY2hvICJhYjphK2JjIgorCQllY2hvICJhYjphYmMiCisJfSA+ZXhwZWN0ZWQgJiYKKwlnaXQgXAorCQktYyBncmVwLnBhdHRlcm50eXBlPWZpeGVkIFwKKwkJZ3JlcCAtRSAiYSsiIGFiID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwogdGVzdF9jb25maWcoKSB7CiAJZ2l0IGNvbmZpZyAiJDEiICIkMiIgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjb25maWcgLS11bnNldCAkMSIKZGlmZiAtLWdpdCBhL3QvdDc4MTEtZ3JlcC1vcGVuLnNoIGIvdC90NzgxMS1ncmVwLW9wZW4uc2gKaW5kZXggYTg5NTc3OC4uZTE5NTFhNSAxMDA3NTUKLS0tIGEvdC90NzgxMS1ncmVwLW9wZW4uc2gKKysrIGIvdC90NzgxMS1ncmVwLW9wZW4uc2gKQEAgLTEyNSwxMSArMTI1LDYgQEAKIAl0ZXN0X2NtcCBlbXB0eSBvdXQKICcKIAotdGVzdF9jb25maWcoKSB7Ci0JZ2l0IGNvbmZpZyAiJDEiICIkMiIgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjb25maWcgLS11bnNldCAkMSIKLX0KLQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29wZXMgd2l0aCBjb2xvciBzZXR0aW5ncycgJwogCXJtIC1mIGFjdHVhbCAmJgogCWVjaG8gZ3JlcC5oID5leHBlY3QgJiYKZGlmZiAtLWdpdCBhL3QvdDgwMDQtYmxhbWUtd2l0aC1jb25mbGljdHMuc2ggYi90L3Q4MDA0LWJsYW1lLXdpdGgtY29uZmxpY3RzLnNoCmluZGV4IGJhMTlhYzEuLjljMzUzYWIgMTAwNzU1Ci0tLSBhL3QvdDgwMDQtYmxhbWUtd2l0aC1jb25mbGljdHMuc2gKKysrIGIvdC90ODAwNC1ibGFtZS13aXRoLWNvbmZsaWN0cy5zaApAQCAtNjYsNyArNjYsNyBAQAogCWdpdCBibGFtZSBmaWxlMgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdibGFtZSBydW5zIG9uIGNvbmZsaWN0ZWQgZmlsZSBpbiBzdGFnZXMgMSwzJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdibGFtZSBkb2VzIG5vdCBjcmFzaCB3aXRoIGNvbmZsaWN0ZWQgZmlsZSBpbiBzdGFnZXMgMSwzJyAnCiAJZ2l0IGJsYW1lIGZpbGUxCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDgwMDYtYmxhbWUtdGV4dGNvbnYuc2ggYi90L3Q4MDA2LWJsYW1lLXRleHRjb252LnNoCmluZGV4IGMzYzIyZjcuLmJmNmNhYTQgMTAwNzU1Ci0tLSBhL3QvdDgwMDYtYmxhbWUtdGV4dGNvbnYuc2gKKysrIGIvdC90ODAwNi1ibGFtZS10ZXh0Y29udi5zaApAQCAtMTAsNyArMTAsNyBAQAogY2F0ID5oZWxwZXIgPDwnRU9GJwogIyEvYmluL3NoCiBncmVwIC1xICdeYmluOiAnICIkMSIgfHwgeyBlY2hvICJFOiAkMSBpcyBub3QgXCJiaW5hcnlcIiBmaWxlIiAxPiYyOyBleGl0IDE7IH0KLXBlcmwgLXAgLWUgJ3MvXmJpbjogL2NvbnZlcnRlZDogLycgIiQxIgorIiRQRVJMX1BBVEgiIC1wIC1lICdzL15iaW46IC9jb252ZXJ0ZWQ6IC8nICIkMSIKIEVPRgogY2htb2QgK3ggaGVscGVyCiAKZGlmZiAtLWdpdCBhL3QvdDkwMDEtc2VuZC1lbWFpbC5zaCBiL3QvdDkwMDEtc2VuZC1lbWFpbC5zaAppbmRleCA4YzEyYzY1Li5kNmYwMjcxIDEwMDc1NQotLS0gYS90L3Q5MDAxLXNlbmQtZW1haWwuc2gKKysrIGIvdC90OTAwMS1zZW5kLWVtYWlsLnNoCkBAIC0xMDEsNyArMTAxLDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRICdTZW5kIHBhdGNoZXMgd2l0aCAtLWVudmVsb3BlLXNlbmRlcicgJwogICAgIGNsZWFuX2Zha2Vfc2VuZG1haWwgJiYKLSAgICAgZ2l0IHNlbmQtZW1haWwgLS1lbnZlbG9wZS1zZW5kZXI9IlBhdGNoIENvbnRyaWJ1dGVyIDxwYXRjaEBleGFtcGxlLmNvbT4iIC0tc3VwcHJlc3MtY2M9c29iIC0tZnJvbT0iRXhhbXBsZSA8bm9ib2R5QGV4YW1wbGUuY29tPiIgLS10bz1ub2JvZHlAZXhhbXBsZS5jb20gLS1zbXRwLXNlcnZlcj0iJChwd2QpL2Zha2Uuc2VuZG1haWwiICRwYXRjaGVzIDI+ZXJyb3JzCisgICAgIGdpdCBzZW5kLWVtYWlsIC0tZW52ZWxvcGUtc2VuZGVyPSJQYXRjaCBDb250cmlidXRvciA8cGF0Y2hAZXhhbXBsZS5jb20+IiAtLXN1cHByZXNzLWNjPXNvYiAtLWZyb209IkV4YW1wbGUgPG5vYm9keUBleGFtcGxlLmNvbT4iIC0tdG89bm9ib2R5QGV4YW1wbGUuY29tIC0tc210cC1zZXJ2ZXI9IiQocHdkKS9mYWtlLnNlbmRtYWlsIiAkcGF0Y2hlcyAyPmVycm9ycwogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ3NldHVwIGV4cGVjdCcgJwpAQCAtMTcxLDYgKzE3MSw4MSBAQAogRU9GCiAiCiAKK3Rlc3Rfc3VwcHJlc3Nfc2VsZiAoKSB7CisJdGVzdF9jb21taXQgJDMgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZXNldCAtLWhhcmQgSEVBRF4iICYmCisKKwl3cml0ZV9zY3JpcHQgY2NjbWQtc2VkIDw8LUVPRiAmJgorCQlzZWQgLW4gLWUgcy9eY2NjbWQtLS8vcCAiXCQxIgorCUVPRgorCisJZ2l0IGNvbW1pdCAtLWFtZW5kIC0tYXV0aG9yPSIkMSA8JDI+IiAtRiAtICYmCisJY2xlYW5fZmFrZV9zZW5kbWFpbCAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLTEgPiJzdXBwcmVzcy1zZWxmLSQzLnBhdGNoIiAmJgorCisJZ2l0IHNlbmQtZW1haWwgLS1mcm9tPSIkMSA8JDI+IiBcCisJCS0tdG89bm9ib2R5QGV4YW1wbGUuY29tIFwKKwkJLS1jYy1jbWQ9Li9jY2NtZC1zZWQgXAorCQktLXN1cHByZXNzLWNjPXNlbGYgXAorCQktLXNtdHAtc2VydmVyPSIkKHB3ZCkvZmFrZS5zZW5kbWFpbCIgXAorCQlzdXBwcmVzcy1zZWxmLSQzLnBhdGNoICYmCisKKwltdiBtc2d0eHQxIG1zZ3R4dDEtJDMgJiYKKwlzZWQgLWUgJy9eJC9xJyBtc2d0eHQxLSQzID4ibXNnaGRyMS0kMyIgJiYKKwk+ImV4cGVjdGVkLW5vLWNjLSQzIiAmJgorCisJKGdyZXAgJ15DYzonIG1zZ2hkcjEtJDMgPiJhY3R1YWwtbm8tY2MtJDMiOworCSB0ZXN0X2NtcCBleHBlY3RlZC1uby1jYy0kMyBhY3R1YWwtbm8tY2MtJDMpCit9CisKK3Rlc3Rfc3VwcHJlc3Nfc2VsZl91bnF1b3RlZCAoKSB7CisJdGVzdF9zdXBwcmVzc19zZWxmICIkMSIgIiQyIiAidW5xdW90ZWQtJDMiIDw8LUVPRgorCQl0ZXN0IHN1cHByZXNzLWNjLnNlbGYgdW5xdW90ZWQtJDMgd2l0aCBuYW1lICQxIGVtYWlsICQyCisKKwkJdW5xdW90ZWQtJDMKKworCQljY2NtZC0tJDEgPCQyPgorCisJCUNjOiAkMSA8JDI+CisJCVNpZ25lZC1vZmYtYnk6ICQxIDwkMj4KKwlFT0YKK30KKwordGVzdF9zdXBwcmVzc19zZWxmX3F1b3RlZCAoKSB7CisJdGVzdF9zdXBwcmVzc19zZWxmICIkMSIgIiQyIiAicXVvdGVkLSQzIiA8PC1FT0YKKwkJdGVzdCBzdXBwcmVzcy1jYy5zZWxmIHF1b3RlZC0kMyB3aXRoIG5hbWUgJDEgZW1haWwgJDIKKworCQlxdW90ZWQtJDMKKworCQljY2NtZC0tIiQxIiA8JDI+CisKKwkJQ2M6ICQxIDwkMj4KKwkJQ2M6ICIkMSIgPCQyPgorCQlTaWduZWQtb2ZmLWJ5OiAkMSA8JDI+CisJCVNpZ25lZC1vZmYtYnk6ICIkMSIgPCQyPgorCUVPRgorfQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ3NlbGYgbmFtZSBpcyBzdXBwcmVzc2VkJyAiCisJdGVzdF9zdXBwcmVzc19zZWxmX3VucXVvdGVkICdBIFUgVGhvcicgJ2F1dGhvckBleGFtcGxlLmNvbScgXAorCQknc2VsZl9uYW1lX3N1cHByZXNzZWQnCisiCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJFBSRVJFUSAnc2VsZiBuYW1lIHdpdGggZG90IGlzIHN1cHByZXNzZWQnICIKKwl0ZXN0X3N1cHByZXNzX3NlbGZfcXVvdGVkICdBIFUuIFRob3InICdhdXRob3JAZXhhbXBsZS5jb20nIFwKKwkJJ3NlbGZfbmFtZV9kb3Rfc3VwcHJlc3NlZCcKKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRICdub24tYXNjaWkgc2VsZiBuYW1lIGlzIHN1cHByZXNzZWQnICIKKwl0ZXN0X3N1cHByZXNzX3NlbGZfcXVvdGVkICdGw7zDsW7DvSBOw6Jtw6knICdvZGRfPz1tYWlsQGV4YW1wbGUuY29tJyBcCisJCSdub25fYXNjaWlfc2VsZl9zdXBwcmVzc2VkJworIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ3Nhbml0aXplZCBzZWxmIG5hbWUgaXMgc3VwcHJlc3NlZCcgIgorCXRlc3Rfc3VwcHJlc3Nfc2VsZl91bnF1b3RlZCAnXCJBIFUuIFRob3JcIicgJ2F1dGhvckBleGFtcGxlLmNvbScgXAorCQknc2VsZl9uYW1lX3Nhbml0aXplZF9zdXBwcmVzc2VkJworIgorCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ1Nob3cgYWxsIGhlYWRlcnMnICcKIAlnaXQgc2VuZC1lbWFpbCBcCiAJCS0tZHJ5LXJ1biBcCkBAIC0xOTEsMTcgKzI2Niw0NCBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ1Byb21wdGluZyB3b3JrcycgJwogCWNsZWFuX2Zha2Vfc2VuZG1haWwgJiYKLQkoZWNobyAiRXhhbXBsZSA8ZnJvbUBleGFtcGxlLmNvbT4iCi0JIGVjaG8gInRvQGV4YW1wbGUuY29tIgorCShlY2hvICJ0b0BleGFtcGxlLmNvbSIKIAkgZWNobyAiIgogCSkgfCBHSVRfU0VORF9FTUFJTF9OT1RUWT0xIGdpdCBzZW5kLWVtYWlsIFwKIAkJLS1zbXRwLXNlcnZlcj0iJChwd2QpL2Zha2Uuc2VuZG1haWwiIFwKIAkJJHBhdGNoZXMgXAogCQkyPmVycm9ycyAmJgotCQlncmVwICJeRnJvbTogRXhhbXBsZSA8ZnJvbUBleGFtcGxlLmNvbT5cJCIgbXNndHh0MSAmJgorCQlncmVwICJeRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT5cJCIgbXNndHh0MSAmJgogCQlncmVwICJeVG86IHRvQGV4YW1wbGUuY29tXCQiIG1zZ3R4dDEKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRLEFVVE9JREVOVCAnaW1wbGljaXQgaWRlbnQgaXMgYWxsb3dlZCcgJworCWNsZWFuX2Zha2Vfc2VuZG1haWwgJiYKKwkoc2FuZV91bnNldCBHSVRfQVVUSE9SX05BTUUgJiYKKwlzYW5lX3Vuc2V0IEdJVF9BVVRIT1JfRU1BSUwgJiYKKwlzYW5lX3Vuc2V0IEdJVF9DT01NSVRURVJfTkFNRSAmJgorCXNhbmVfdW5zZXQgR0lUX0NPTU1JVFRFUl9FTUFJTCAmJgorCUdJVF9TRU5EX0VNQUlMX05PVFRZPTEgZ2l0IHNlbmQtZW1haWwgXAorCQktLXNtdHAtc2VydmVyPSIkKHB3ZCkvZmFrZS5zZW5kbWFpbCIgXAorCQktLXRvPXRvQGV4YW1wbGUuY29tIFwKKwkJJHBhdGNoZXMgPC9kZXYvbnVsbCAyPmVycm9ycworCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRLCFBVVRPSURFTlQgJ2Jyb2tlbiBpbXBsaWNpdCBpZGVudCBhYm9ydHMgc2VuZC1lbWFpbCcgJworCWNsZWFuX2Zha2Vfc2VuZG1haWwgJiYKKwkoc2FuZV91bnNldCBHSVRfQVVUSE9SX05BTUUgJiYKKwlzYW5lX3Vuc2V0IEdJVF9BVVRIT1JfRU1BSUwgJiYKKwlzYW5lX3Vuc2V0IEdJVF9DT01NSVRURVJfTkFNRSAmJgorCXNhbmVfdW5zZXQgR0lUX0NPTU1JVFRFUl9FTUFJTCAmJgorCUdJVF9TRU5EX0VNQUlMX05PVFRZPTEgJiYgZXhwb3J0IEdJVF9TRU5EX0VNQUlMX05PVFRZICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHNlbmQtZW1haWwgXAorCQktLXNtdHAtc2VydmVyPSIkKHB3ZCkvZmFrZS5zZW5kbWFpbCIgXAorCQktLXRvPXRvQGV4YW1wbGUuY29tIFwKKwkJJHBhdGNoZXMgPC9kZXYvbnVsbCAyPmVycm9ycyAmJgorCXRlc3RfaTE4bmdyZXAgInRlbGwgbWUgd2hvIHlvdSBhcmUiIGVycm9ycworCSkKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRICd0b2NtZCB3b3JrcycgJwogCWNsZWFuX2Zha2Vfc2VuZG1haWwgJiYKIAljcCAkcGF0Y2hlcyB0b2NtZC5wYXRjaCAmJgpAQCAtNzYwLDcgKzg2Miw3IEBACiAJdGVzdCAkcmV0ID0gIjAiCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJFBSRVJFUSAnY29uZmlybSBkb2VzbnQgbG9vcCBmb3JldmVyJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ2NvbmZpcm0gZG9lcyBub3QgbG9vcCBmb3JldmVyJyAnCiAJQ09ORklSTT0kKGdpdCBjb25maWcgLS1nZXQgc2VuZGVtYWlsLmNvbmZpcm0pICYmCiAJZ2l0IGNvbmZpZyBzZW5kZW1haWwuY29uZmlybSBhdXRvICYmCiAJR0lUX1NFTkRfRU1BSUxfTk9UVFk9MSAmJgpAQCAtODQxLDYgKzk0MywxMDIgQEAKIAlncmVwICJeU3ViamVjdDogPT9VVEYtOD9xP3V0Zjgtcz1DMz1CQ2JqPUMzPUFCY3Q/PSIgbXNndHh0MQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ3V0ZjggYXV0aG9yIGlzIGNvcnJlY3RseSBwYXNzZWQgb24nICcKKwljbGVhbl9mYWtlX3NlbmRtYWlsICYmCisJdGVzdF9jb21taXQgd2VpcmRfYXV0aG9yICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmVzZXQgLS1oYXJkIEhFQUReIiAmJgorCWdpdCBjb21taXQgLS1hbWVuZCAtLWF1dGhvciAiRsO8w7Fuw70gTsOibcOpIDxvZGRfPz1tYWlsQGV4YW1wbGUuY29tPiIgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IC0xID5mdW5ueV9uYW1lLnBhdGNoICYmCisJZ2l0IHNlbmQtZW1haWwgLS1mcm9tPSJFeGFtcGxlIDxub2JvZHlAZXhhbXBsZS5jb20+IiBcCisJICAtLXRvPW5vYm9keUBleGFtcGxlLmNvbSBcCisJICAtLXNtdHAtc2VydmVyPSIkKHB3ZCkvZmFrZS5zZW5kbWFpbCIgXAorCSAgZnVubnlfbmFtZS5wYXRjaCAmJgorCWdyZXAgIl5Gcm9tOiBGw7zDsW7DvSBOw6Jtw6kgPG9kZF8/PW1haWxAZXhhbXBsZS5jb20+IiBtc2d0eHQxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJFBSRVJFUSAndXRmOCBzZW5kZXIgaXMgbm90IGR1cGxpY2F0ZWQnICcKKwljbGVhbl9mYWtlX3NlbmRtYWlsICYmCisJdGVzdF9jb21taXQgd2VpcmRfc2VuZGVyICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmVzZXQgLS1oYXJkIEhFQUReIiAmJgorCWdpdCBjb21taXQgLS1hbWVuZCAtLWF1dGhvciAiRsO8w7Fuw70gTsOibcOpIDxvZGRfPz1tYWlsQGV4YW1wbGUuY29tPiIgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IC0xID5mdW5ueV9uYW1lLnBhdGNoICYmCisJZ2l0IHNlbmQtZW1haWwgLS1mcm9tPSJGw7zDsW7DvSBOw6Jtw6kgPG9kZF8/PW1haWxAZXhhbXBsZS5jb20+IiBcCisJICAtLXRvPW5vYm9keUBleGFtcGxlLmNvbSBcCisJICAtLXNtdHAtc2VydmVyPSIkKHB3ZCkvZmFrZS5zZW5kbWFpbCIgXAorCSAgZnVubnlfbmFtZS5wYXRjaCAmJgorCWdyZXAgIl5Gcm9tOiAiIG1zZ3R4dDEgPm1zZ2Zyb20gJiYKKwl0ZXN0X2xpbmVfY291bnQgPSAxIG1zZ2Zyb20KKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRICdzZW5kZW1haWwuY29tcG9zZWVuY29kaW5nIHdvcmtzJyAnCisJY2xlYW5fZmFrZV9zZW5kbWFpbCAmJgorCWdpdCBjb25maWcgc2VuZGVtYWlsLmNvbXBvc2VlbmNvZGluZyBpc28tODg1OS0xICYmCisJKGVjaG8gIiMhJFNIRUxMX1BBVEgiICYmCisJIGVjaG8gImVjaG8gdXRmOCBib2R5OiDDoMOpw6zDtsO6ID4+XCJcJDFcIiIKKwkpID5mYWtlLWVkaXRvci11dGY4ICYmCisJY2htb2QgK3ggZmFrZS1lZGl0b3ItdXRmOCAmJgorCSAgR0lUX0VESVRPUj0iXCIkKHB3ZCkvZmFrZS1lZGl0b3ItdXRmOFwiIiBcCisJICBnaXQgc2VuZC1lbWFpbCBcCisJICAtLWNvbXBvc2UgLS1zdWJqZWN0IGZvbyBcCisJICAtLWZyb209IkV4YW1wbGUgPG5vYm9keUBleGFtcGxlLmNvbT4iIFwKKwkgIC0tdG89bm9ib2R5QGV4YW1wbGUuY29tIFwKKwkgIC0tc210cC1zZXJ2ZXI9IiQocHdkKS9mYWtlLnNlbmRtYWlsIiBcCisJICAkcGF0Y2hlcyAmJgorCWdyZXAgIl51dGY4IGJvZHkiIG1zZ3R4dDEgJiYKKwlncmVwICJeQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PWlzby04ODU5LTEiIG1zZ3R4dDEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRICctLWNvbXBvc2UtZW5jb2Rpbmcgd29ya3MnICcKKwljbGVhbl9mYWtlX3NlbmRtYWlsICYmCisJKGVjaG8gIiMhJFNIRUxMX1BBVEgiICYmCisJIGVjaG8gImVjaG8gdXRmOCBib2R5OiDDoMOpw6zDtsO6ID4+XCJcJDFcIiIKKwkpID5mYWtlLWVkaXRvci11dGY4ICYmCisJY2htb2QgK3ggZmFrZS1lZGl0b3ItdXRmOCAmJgorCSAgR0lUX0VESVRPUj0iXCIkKHB3ZCkvZmFrZS1lZGl0b3ItdXRmOFwiIiBcCisJICBnaXQgc2VuZC1lbWFpbCBcCisJICAtLWNvbXBvc2UtZW5jb2RpbmcgaXNvLTg4NTktMSBcCisJICAtLWNvbXBvc2UgLS1zdWJqZWN0IGZvbyBcCisJICAtLWZyb209IkV4YW1wbGUgPG5vYm9keUBleGFtcGxlLmNvbT4iIFwKKwkgIC0tdG89bm9ib2R5QGV4YW1wbGUuY29tIFwKKwkgIC0tc210cC1zZXJ2ZXI9IiQocHdkKS9mYWtlLnNlbmRtYWlsIiBcCisJICAkcGF0Y2hlcyAmJgorCWdyZXAgIl51dGY4IGJvZHkiIG1zZ3R4dDEgJiYKKwlncmVwICJeQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PWlzby04ODU5LTEiIG1zZ3R4dDEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRICctLWNvbXBvc2UtZW5jb2Rpbmcgb3ZlcnJpZGVzIHNlbmRlbWFpbC5jb21wb3NlZW5jb2RpbmcnICcKKwljbGVhbl9mYWtlX3NlbmRtYWlsICYmCisJZ2l0IGNvbmZpZyBzZW5kZW1haWwuY29tcG9zZWVuY29kaW5nIGlzby04ODU5LTEgJiYKKwkoZWNobyAiIyEkU0hFTExfUEFUSCIgJiYKKwkgZWNobyAiZWNobyB1dGY4IGJvZHk6IMOgw6nDrMO2w7ogPj5cIlwkMVwiIgorCSkgPmZha2UtZWRpdG9yLXV0ZjggJiYKKwljaG1vZCAreCBmYWtlLWVkaXRvci11dGY4ICYmCisJICBHSVRfRURJVE9SPSJcIiQocHdkKS9mYWtlLWVkaXRvci11dGY4XCIiIFwKKwkgIGdpdCBzZW5kLWVtYWlsIFwKKwkgIC0tY29tcG9zZS1lbmNvZGluZyBpc28tODg1OS0yIFwKKwkgIC0tY29tcG9zZSAtLXN1YmplY3QgZm9vIFwKKwkgIC0tZnJvbT0iRXhhbXBsZSA8bm9ib2R5QGV4YW1wbGUuY29tPiIgXAorCSAgLS10bz1ub2JvZHlAZXhhbXBsZS5jb20gXAorCSAgLS1zbXRwLXNlcnZlcj0iJChwd2QpL2Zha2Uuc2VuZG1haWwiIFwKKwkgICRwYXRjaGVzICYmCisJZ3JlcCAiXnV0ZjggYm9keSIgbXNndHh0MSAmJgorCWdyZXAgIl5Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9aXNvLTg4NTktMiIgbXNndHh0MQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJy0tY29tcG9zZS1lbmNvZGluZyBhZGRzIGNvcnJlY3QgTUlNRSBmb3Igc3ViamVjdCcgJworCWNsZWFuX2Zha2Vfc2VuZG1haWwgJiYKKwkgIEdJVF9FRElUT1I9IlwiJChwd2QpL2Zha2UtZWRpdG9yXCIiIFwKKwkgIGdpdCBzZW5kLWVtYWlsIFwKKwkgIC0tY29tcG9zZS1lbmNvZGluZyBpc28tODg1OS0yIFwKKwkgIC0tY29tcG9zZSAtLXN1YmplY3QgdXRmOC1zw7xiasOrY3QgXAorCSAgLS1mcm9tPSJFeGFtcGxlIDxub2JvZHlAZXhhbXBsZS5jb20+IiBcCisJICAtLXRvPW5vYm9keUBleGFtcGxlLmNvbSBcCisJICAtLXNtdHAtc2VydmVyPSIkKHB3ZCkvZmFrZS5zZW5kbWFpbCIgXAorCSAgJHBhdGNoZXMgJiYKKwlncmVwICJeZmFrZSBlZGl0IiBtc2d0eHQxICYmCisJZ3JlcCAiXlN1YmplY3Q6ID0/aXNvLTg4NTktMj9xP3V0Zjgtcz1DMz1CQ2JqPUMzPUFCY3Q/PSIgbXNndHh0MQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ2RldGVjdHMgYW1iaWd1b3VzIHJlZmVyZW5jZS9maWxlIGNvbmZsaWN0JyAnCiAJZWNobyBtYXN0ZXIgPiBtYXN0ZXIgJiYKIAlnaXQgYWRkIG1hc3RlciAmJgpAQCAtMTA2MSw2ICsxMjU5LDIzIEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJFBSRVJFUSAnc2V0dXAgZXhwZWN0JyAnCitjYXQgPmV4cGVjdGVkIDw8RU9GCitTdWJqZWN0OiBzdWJqZWN0IGdvZXMgaGVyZQorRU9GCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJFBSRVJFUSAnQVNDSUkgc3ViamVjdCBpcyBub3QgUkZDMjA0NyBxdW90ZWQnICcKKwljbGVhbl9mYWtlX3NlbmRtYWlsICYmCisJZWNobyBib2d1cyB8CisJZ2l0IHNlbmQtZW1haWwgLS1mcm9tPWF1dGhvckBleGFtcGxlLmNvbSAtLXRvPW5vYm9keUBleGFtcGxlLmNvbSBcCisJCQktLXNtdHAtc2VydmVyPSIkKHB3ZCkvZmFrZS5zZW5kbWFpbCIgXAorCQkJLS04Yml0LWVuY29kaW5nPVVURi04IFwKKwkJCWVtYWlsLXVzaW5nLThiaXQgPnN0ZG91dCAmJgorCWdyZXAgIlN1YmplY3QiIG1zZ3R4dDEgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ3NldHVwIGV4cGVjdCcgJwogY2F0ID5jb250ZW50LXR5cGUtZGVjbCA8PEVPRgogTUlNRS1WZXJzaW9uOiAxLjAKIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApkaWZmIC0tZ2l0IGEvdC90OTAxMC1zdm4tZmUuc2ggYi90L3Q5MDEwLXN2bi1mZS5zaAppbmRleCBiN2VlZDI0Li42ZGFmZTdlIDEwMDc1NQotLS0gYS90L3Q5MDEwLXN2bi1mZS5zaAorKysgYi90L3Q5MDEwLXN2bi1mZS5zaApAQCAtNTQsMTQgKzU0LDYgQEAKIAogPmVtcHR5CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwOiBoYXZlIHBpcGVzPycgJwotCXJtIC1mIGZyb2IgJiYKLQlpZiBta2ZpZm8gZnJvYgotCXRoZW4KLQkJdGVzdF9zZXRfcHJlcmVxIFBJUEUKLQlmaQotJwotCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBJUEUgJ2VtcHR5IGR1bXAnICcKIAlyZWluaXRfZ2l0ICYmCiAJZWNobyAiU1ZOLWZzLWR1bXAtZm9ybWF0LXZlcnNpb246IDIiID5pbnB1dCAmJgpkaWZmIC0tZ2l0IGEvdC90OTAyMC1yZW1vdGUtc3ZuLnNoIGIvdC90OTAyMC1yZW1vdGUtc3ZuLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ5ZjZiNzMKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q5MDIwLXJlbW90ZS1zdm4uc2gKQEAgLTAsMCArMSw4OSBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J3Rlc3RzIHJlbW90ZS1zdm4nCisKKy4gLi90ZXN0LWxpYi5zaAorCitNQVJLU1BBVEg9LmdpdC9pbmZvL2Zhc3QtaW1wb3J0L3JlbW90ZS1zdm4KKworaWYgISB0ZXN0X2hhdmVfcHJlcmVxIFBZVEhPTgordGhlbgorCXNraXBfYWxsPSdza2lwcGluZyByZW1vdGUtc3ZuIHRlc3RzLCBweXRob24gbm90IGF2YWlsYWJsZScKKwl0ZXN0X2RvbmUKK2ZpCisKKyMgT3ZlcnJpZGUgc3ZucmR1bXAgd2l0aCBvdXIgc2ltdWxhdG9yCitQQVRIPSIkSE9NRTokUEFUSCIKK2V4cG9ydCBQQVRIIFBZVEhPTl9QQVRIIEdJVF9CVUlMRF9ESVIKKword3JpdGVfc2NyaXB0ICIkSE9NRS9zdm5yZHVtcCIgPDxcRU9GCitleGVjICIkUFlUSE9OX1BBVEgiICIkR0lUX0JVSUxEX0RJUi9jb250cmliL3N2bi1mZS9zdm5yZHVtcF9zaW0ucHkiICIkQCIKK0VPRgorCitpbml0X2dpdCAoKSB7CisJcm0gLWZyIC5naXQgJiYKKwlnaXQgaW5pdCAmJgorCSNnaXQgcmVtb3RlIGFkZCBzdm5zaW0gdGVzdHN2bjo6c2ltOi8vLyRURVNUX0RJUkVDVE9SWS90OTAyMC9leGFtcGxlLnN2bnJkdW1wCisJIyBsZXQncyByZXVzZSBhbiBleGlzaXRpbmcgZHVtcCBmaWxlIT8KKwlnaXQgcmVtb3RlIGFkZCBzdm5zaW0gdGVzdHN2bjo6c2ltOi8vJFRFU1RfRElSRUNUT1JZL3Q5MTU0L3N2bi5kdW1wCisJZ2l0IHJlbW90ZSBhZGQgc3ZuZmlsZSB0ZXN0c3ZuOjpmaWxlOi8vJFRFU1RfRElSRUNUT1JZL3Q5MTU0L3N2bi5kdW1wCit9CisKK2lmIHRlc3QgLWUgIiRHSVRfQlVJTERfRElSL2dpdC1yZW1vdGUtdGVzdHN2biIKK3RoZW4KKwl0ZXN0X3NldF9wcmVyZXEgUkVNT1RFX1NWTgorZmkKKwordGVzdF9kZWJ1ZyAnCisJZ2l0IC0tdmVyc2lvbgorCXR5cGUgZ2l0CisJdHlwZSBzdm5yZHVtcAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFJFTU9URV9TVk4gJ3NpbXBsZSBmZXRjaCcgJworCWluaXRfZ2l0ICYmCisJZ2l0IGZldGNoIHN2bnNpbSAmJgorCXRlc3RfY21wIC5naXQvcmVmcy9zdm4vc3Zuc2ltL21hc3RlciAuZ2l0L3JlZnMvcmVtb3Rlcy9zdm5zaW0vbWFzdGVyICAmJgorCWNwIC5naXQvcmVmcy9yZW1vdGVzL3N2bnNpbS9tYXN0ZXIgbWFzdGVyLmdvb2QKKycKKwordGVzdF9kZWJ1ZyAnCisJY2F0IC5naXQvcmVmcy9zdm4vc3Zuc2ltL21hc3RlcgorCWNhdCAuZ2l0L3JlZnMvcmVtb3Rlcy9zdm5zaW0vbWFzdGVyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgUkVNT1RFX1NWTiAncmVwZWF0ZWQgZmV0Y2gsIG5vdGhpbmcgc2hhbGwgY2hhbmdlJyAnCisJZ2l0IGZldGNoIHN2bnNpbSAmJgorCXRlc3RfY21wIG1hc3Rlci5nb29kIC5naXQvcmVmcy9yZW1vdGVzL3N2bnNpbS9tYXN0ZXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBSRU1PVEVfU1ZOICdmZXRjaCBmcm9tIGEgZmlsZTovLyB1cmwgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0JyAnCisJZ2l0IGZldGNoIHN2bmZpbGUKKycKKwordGVzdF9leHBlY3RfZmFpbHVyZSBSRU1PVEVfU1ZOICd0aGUgc2hhMSBkaWZmZXIgYmVjYXVzZSB0aGUgZ2l0LXN2bi1pZCBsaW5lIGluIHRoZSBjb21taXQgbXNnIGNvbnRhaW5zIHRoZSB1cmwnICcKKwl0ZXN0X2NtcCAuZ2l0L3JlZnMvcmVtb3Rlcy9zdm5maWxlL21hc3RlciAuZ2l0L3JlZnMvcmVtb3Rlcy9zdm5zaW0vbWFzdGVyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgUkVNT1RFX1NWTiAnbWFyay1maWxlIHJlZ2VuZXJhdGlvbicgJworCSMgZmlsdGVyIG91dCBhbnkgb3RoZXIgbWFya3MsIHRoYXQgY2FuIG5vdCBiZSByZWdlbmVyYXRlZC4gT25seSB1cCB0byAzIGRpZ2l0IHJldmlzaW9ucyBhcmUgYWxsb3dlZCBoZXJlCisJZ3JlcCAiOlswLTldXHsxLDNcfSAiICRNQVJLU1BBVEgvc3Zuc2ltLm1hcmtzID4gJE1BUktTUEFUSC9zdm5zaW0ubWFya3Mub2xkICYmCisJcm0gJE1BUktTUEFUSC9zdm5zaW0ubWFya3MgJiYKKwlnaXQgZmV0Y2ggc3Zuc2ltICYmCisJdGVzdF9jbXAgJE1BUktTUEFUSC9zdm5zaW0ubWFya3Mub2xkICRNQVJLU1BBVEgvc3Zuc2ltLm1hcmtzCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgUkVNT1RFX1NWTiAnaW5jcmVtZW50YWwgaW1wb3J0cyBtdXN0IGxlYWQgdG8gdGhlIHNhbWUgaGVhZCcgJworCVNWTlJNQVg9MyAmJgorCWV4cG9ydCBTVk5STUFYICYmCisJaW5pdF9naXQgJiYKKwlnaXQgZmV0Y2ggc3Zuc2ltICYmCisJdGVzdF9jbXAgLmdpdC9yZWZzL3N2bi9zdm5zaW0vbWFzdGVyIC5naXQvcmVmcy9yZW1vdGVzL3N2bnNpbS9tYXN0ZXIgICYmCisJdW5zZXQgU1ZOUk1BWCAmJgorCWdpdCBmZXRjaCBzdm5zaW0gJiYKKwl0ZXN0X2NtcCBtYXN0ZXIuZ29vZCAuZ2l0L3JlZnMvcmVtb3Rlcy9zdm5zaW0vbWFzdGVyCisnCisKK3Rlc3RfZGVidWcgJ2dpdCBicmFuY2ggLWEnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTEwMC1naXQtc3ZuLWJhc2ljLnNoIGIvdC90OTEwMC1naXQtc3ZuLWJhc2ljLnNoCmluZGV4IDc0OWI3NWUuLjRmZWE4ZDkgMTAwNzU1Ci0tLSBhL3QvdDkxMDAtZ2l0LXN2bi1iYXNpYy5zaAorKysgYi90L3Q5MTAwLWdpdC1zdm4tYmFzaWMuc2gKQEAgLTMwNiw1ICszMDYsMTMgQEAKIAlnaXQgc3ZuIGZldGNoICkgJiYKIAlybSAtcmYgYmFyZS1yZXBvCiAJJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0LXN2biB3b3JrcyBpbiBpbiBhIHJlcG9zaXRvcnkgd2l0aCBhIGdpdGRpcjogbGluaycgJworCW1rZGlyIHdvcmt0cmVlIGdpdGRpciAmJgorCSggY2Qgd29ya3RyZWUgJiYKKwlnaXQgc3ZuIGluaXQgIiRzdm5yZXBvIiAmJgorCWdpdCBpbml0IC0tc2VwYXJhdGUtZ2l0LWRpciAuLi9naXRkaXIgJiYKKwlnaXQgc3ZuIGZldGNoICkgJiYKKwlybSAtcmYgd29ya3RyZWUgZ2l0ZGlyCisJJwogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDkxMDctZ2l0LXN2bi1taWdyYXRlLnNoIGIvdC90OTEwNy1naXQtc3ZuLW1pZ3JhdGUuc2gKaW5kZXggMjg5ZmMzMS4uZWU3MzAxMyAxMDA3NTUKLS0tIGEvdC90OTEwNy1naXQtc3ZuLW1pZ3JhdGUuc2gKKysrIGIvdC90OTEwNy1naXQtc3ZuLW1pZ3JhdGUuc2gKQEAgLTI3LDE1ICsyNywxNyBAQAogaGVhZD1gZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL2dpdC1zdm4tSEVBRF4wYAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0LXN2bi1IRUFEIGlzIGEgcmVhbCBIRUFEJyAidGVzdCAtbiAnJGhlYWQnIgogCitzdm5yZXBvX2VzY2FwZWQ9YGVjaG8gJHN2bnJlcG8gfCBzZWQgJ3MvIC8lMjAvJ2AKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdGlhbGl6ZSBvbGQtc3R5bGUgKHYwKSBnaXQgc3ZuIGxheW91dCcgJwogCW1rZGlyIC1wICIkR0lUX0RJUiIvZ2l0LXN2bi9pbmZvICIkR0lUX0RJUiIvc3ZuL2luZm8gJiYKIAllY2hvICIkc3ZucmVwbyIgPiAiJEdJVF9ESVIiL2dpdC1zdm4vaW5mby91cmwgJiYKIAllY2hvICIkc3ZucmVwbyIgPiAiJEdJVF9ESVIiL3N2bi9pbmZvL3VybCAmJgogCWdpdCBzdm4gbWlncmF0ZSAmJgotCSEgdGVzdCAtZCAiJEdJVF9ESVIiL2dpdCBzdm4gJiYKKwkhIHRlc3QgLWQgIiRHSVRfRElSIi9naXQtc3ZuICYmCiAJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzLyR7cmVtb3Rlc19naXRfc3ZufV4wICYmCiAJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvc3ZuXjAgJiYKLQl0ZXN0ICIkKGdpdCBjb25maWcgLS1nZXQgc3ZuLXJlbW90ZS5zdm4udXJsKSIgPSAiJHN2bnJlcG8iICYmCisJdGVzdCAiJChnaXQgY29uZmlnIC0tZ2V0IHN2bi1yZW1vdGUuc3ZuLnVybCkiID0gIiRzdm5yZXBvX2VzY2FwZWQiICYmCiAJdGVzdCBgZ2l0IGNvbmZpZyAtLWdldCBzdm4tcmVtb3RlLnN2bi5mZXRjaGAgPSBcCiAgICAgICAgICAgICAgIjpyZWZzLyR7cmVtb3Rlc19naXRfc3ZufSIKIAknCmRpZmYgLS1naXQgYS90L3Q5MTE0LWdpdC1zdm4tZGNvbW1pdC1tZXJnZS5zaCBiL3QvdDkxMTQtZ2l0LXN2bi1kY29tbWl0LW1lcmdlLnNoCmluZGV4IDMwNzc4NTEuLmY1MjRkMmYgMTAwNzU1Ci0tLSBhL3QvdDkxMTQtZ2l0LXN2bi1kY29tbWl0LW1lcmdlLnNoCisrKyBiL3QvdDkxMTQtZ2l0LXN2bi1kY29tbWl0LW1lcmdlLnNoCkBAIC00OCw3ICs0OCw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBnaXQgbWlycm9yIGFuZCBtZXJnZScgJwogCWdpdCBzdm4gaW5pdCAiJHN2bnJlcG8iIC10IHRhZ3MgLVQgdHJ1bmsgLWIgYnJhbmNoZXMgJiYKIAlnaXQgc3ZuIGZldGNoICYmCi0JZ2l0IGNoZWNrb3V0IC0tdHJhY2sgLWIgc3ZuIHJlbW90ZXMvdHJ1bmsgJiYKKwlnaXQgY2hlY2tvdXQgLWIgc3ZuIHJlbW90ZXMvdHJ1bmsgJiYKIAlnaXQgY2hlY2tvdXQgLWIgbWVyZ2UgJiYKIAllY2hvIG5ldyBmaWxlID4gbmV3X2ZpbGUgJiYKIAlnaXQgYWRkIG5ld19maWxlICYmCmRpZmYgLS1naXQgYS90L3Q5MTE4LWdpdC1zdm4tZnVua3ktYnJhbmNoLW5hbWVzLnNoIGIvdC90OTExOC1naXQtc3ZuLWZ1bmt5LWJyYW5jaC1uYW1lcy5zaAppbmRleCA2M2ZjOTgyLi4xNWY5M2I0IDEwMDc1NQotLS0gYS90L3Q5MTE4LWdpdC1zdm4tZnVua3ktYnJhbmNoLW5hbWVzLnNoCisrKyBiL3QvdDkxMTgtZ2l0LXN2bi1mdW5reS1icmFuY2gtbmFtZXMuc2gKQEAgLTI4LDEwICsyOCwxNSBAQAogCXN2bl9jbWQgY3AgLW0gInRyYWlsaW5nIC5sb2NrIiAiJHN2bnJlcG8vcHIgamVjdC90cnVuayIgXAogCQkJIiRzdm5yZXBvL3ByIGplY3QvYnJhbmNoZXMvdHJhaWxpbmdfZG90bG9jay5sb2NrIiAmJgogCXN2bl9jbWQgY3AgLW0gInJlZmxvZyIgIiRzdm5yZXBvL3ByIGplY3QvdHJ1bmsiIFwKLQkJCSIkc3ZucmVwby9wciBqZWN0L2JyYW5jaGVzL25vdC1hJTQwezB9cmVmbG9nIiAmJgorCQkJIiRzdm5yZXBvL3ByIGplY3QvYnJhbmNoZXMvbm90LWFAezB9cmVmbG9nQCIgJiYKIAlzdGFydF9odHRwZAogCScKIAorIyBTVk4gMS43IHdpbGwgdHJ1bmNhdGUgIm5vdC1hJTQwezBdIiB0byBqdXN0ICJub3QtYSIuCisjIExvb2sgYXQgd2hhdCBTVk4gd291bmQgdXAgbmFtaW5nIHRoZSBicmFuY2ggYW5kIHVzZSB0aGF0LgorIyBCZSBzdXJlIHRvIGVzY2FwZSB0aGUgQCBpZiBpdCBzaG93cyB1cC4KK25vbl9yZWZsb2c9YHN2bl9jbWQgbHMgIiRzdm5yZXBvL3ByIGplY3QvYnJhbmNoZXMiIHwgZ3JlcCBub3QtYSB8IHNlZCAncy9cLy8vJyB8IHNlZCAncy9ALyU0MC8nYAorCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IGNsb25lIHdpdGggZnVua3kgYnJhbmNoIG5hbWVzJyAnCiAJZ2l0IHN2biBjbG9uZSAtcyAiJHN2bnJlcG8vcHIgamVjdCIgcHJvamVjdCAmJgogCSgKQEAgLTQyLDcgKzQ3LDcgQEAKIAkJZ2l0IHJldi1wYXJzZSAicmVmcy9yZW1vdGVzLyUyRWxlYWRpbmdfZG90IiAmJgogCQlnaXQgcmV2LXBhcnNlICJyZWZzL3JlbW90ZXMvdHJhaWxpbmdfZG90JTJFIiAmJgogCQlnaXQgcmV2LXBhcnNlICJyZWZzL3JlbW90ZXMvdHJhaWxpbmdfZG90bG9jayUyRWxvY2siICYmCi0JCWdpdCByZXYtcGFyc2UgInJlZnMvcmVtb3Rlcy9ub3QtYSU0MHswfXJlZmxvZyIKKwkJZ2l0IHJldi1wYXJzZSAicmVmcy9yZW1vdGVzLyRub25fcmVmbG9nIgogCSkKIAknCiAKZGlmZiAtLWdpdCBhL3QvdDkxMjktZ2l0LXN2bi1pMThuLWNvbW1pdGVuY29kaW5nLnNoIGIvdC90OTEyOS1naXQtc3ZuLWkxOG4tY29tbWl0ZW5jb2Rpbmcuc2gKaW5kZXggOGNmZGZlNy4uOWE0MGYxZSAxMDA3NTUKLS0tIGEvdC90OTEyOS1naXQtc3ZuLWkxOG4tY29tbWl0ZW5jb2Rpbmcuc2gKKysrIGIvdC90OTEyOS1naXQtc3ZuLWkxOG4tY29tbWl0ZW5jb2Rpbmcuc2gKQEAgLTI5LDcgKzI5LDcgQEAKIGNvbXBhcmVfc3ZuX2hlYWRfd2l0aCAoKSB7CiAJIyBleHRyYWN0IGp1c3QgdGhlIGxvZyBtZXNzYWdlIGFuZCBzdHJpcCBvdXQgY29tbWl0dGVyIGluZm8uCiAJIyBkb24ndCB1c2UgLS1saW1pdCBoZXJlIHNpbmNlIHN2biAxLjEueCBkb2Vzbid0IGhhdmUgaXQsCi0JTENfQUxMPSIkYV91dGY4X2xvY2FsZSIgc3ZuIGxvZyBgZ2l0IHN2biBpbmZvIC0tdXJsYCB8IHBlcmwgLXcgLWUgJworCUxDX0FMTD0iJGFfdXRmOF9sb2NhbGUiIHN2biBsb2cgYGdpdCBzdm4gaW5mbyAtLXVybGAgfCAiJFBFUkxfUEFUSCIgLXcgLWUgJwogCQl1c2UgYnl0ZXM7CiAJCSQvID0gKCItIng3MikgLiAiXG4iOwogCQlteSBAeCA9IDxTVERJTj47CmRpZmYgLS1naXQgYS90L3Q5MTM3LWdpdC1zdm4tZGNvbW1pdC1jbG9iYmVyLXNlcmllcy5zaCBiL3QvdDkxMzctZ2l0LXN2bi1kY29tbWl0LWNsb2JiZXItc2VyaWVzLnNoCmluZGV4IGQ2MGRhNjMuLmMxN2FhMzEgMTAwNzU1Ci0tLSBhL3QvdDkxMzctZ2l0LXN2bi1kY29tbWl0LWNsb2JiZXItc2VyaWVzLnNoCisrKyBiL3QvdDkxMzctZ2l0LXN2bi1kY29tbWl0LWNsb2JiZXItc2VyaWVzLnNoCkBAIC0yMCw4ICsyMCw4IEBACiAJdGVzdCB4ImBzZWQgLW4gLWUgNjFwIDwgZmlsZWAiID0geDYxICYmCiAJc3ZuX2NtZCBjbyAiJHN2bnJlcG8iIHRtcCAmJgogCShjZCB0bXAgJiYKLQkJcGVybCAtaS5iYWsgLXAgLWUgInMvXjU4JC81NTg4LyIgZmlsZSAmJgotCQlwZXJsIC1pLmJhayAtcCAtZSAicy9eNjEkLzY2MTEvIiBmaWxlICYmCisJCSIkUEVSTF9QQVRIIiAtaS5iYWsgLXAgLWUgInMvXjU4JC81NTg4LyIgZmlsZSAmJgorCQkiJFBFUkxfUEFUSCIgLWkuYmFrIC1wIC1lICJzL142MSQvNjYxMS8iIGZpbGUgJiYKIAkJcG9rZSBmaWxlICYmCiAJCXRlc3QgeCJgc2VkIC1uIC1lIDU4cCA8IGZpbGVgIiA9IHg1NTg4ICYmCiAJCXRlc3QgeCJgc2VkIC1uIC1lIDYxcCA8IGZpbGVgIiA9IHg2NjExICYmCkBAIC00MCw4ICs0MCw4IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGFuZ2UgZmlsZSBidXQgaW4gdW5yZWxhdGVkIGFyZWEnICIKIAl0ZXN0IHhcIlxgc2VkIC1uIC1lIDRwIDwgZmlsZVxgXCIgPSB4NCAmJgogCXRlc3QgeFwiXGBzZWQgLW4gLWUgN3AgPCBmaWxlXGBcIiA9IHg3ICYmCi0JcGVybCAtaS5iYWsgLXAgLWUgJ3MvXjRcJC80NDQ0LycgZmlsZSAmJgotCXBlcmwgLWkuYmFrIC1wIC1lICdzL143XCQvNzc3Ny8nIGZpbGUgJiYKKwkiJFBFUkxfUEFUSCIgLWkuYmFrIC1wIC1lICdzL140XCQvNDQ0NC8nIGZpbGUgJiYKKwkiJFBFUkxfUEFUSCIgLWkuYmFrIC1wIC1lICdzL143XCQvNzc3Ny8nIGZpbGUgJiYKIAl0ZXN0IHhcIlxgc2VkIC1uIC1lIDRwIDwgZmlsZVxgXCIgPSB4NDQ0NCAmJgogCXRlc3QgeFwiXGBzZWQgLW4gLWUgN3AgPCBmaWxlXGBcIiA9IHg3Nzc3ICYmCiAJZ2l0IGNvbW1pdCAtbSAnNCA9PiA0NDQ0LCA3ID0+IDc3NzcnIGZpbGUgJiYKZGlmZiAtLWdpdCBhL3QvdDkxNDctZ2l0LXN2bi1pbmNsdWRlLXBhdGhzLnNoIGIvdC90OTE0Ny1naXQtc3ZuLWluY2x1ZGUtcGF0aHMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTkwZmY1OAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDkxNDctZ2l0LXN2bi1pbmNsdWRlLXBhdGhzLnNoCkBAIC0wLDAgKzEsMTQ5IEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDEzIFBhdWwgV2FsbXNsZXkgLSBiYXNlZCBvbiB0OTEzNCBieSBWaXRhbHkgU2h1a2VsYQorIworCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIHByb3BlcnR5IHRlc3RzJworLiAuL2xpYi1naXQtc3ZuLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHRlc3QgcmVwb3NpdG9yeScgJworCXN2bl9jbWQgY28gIiRzdm5yZXBvIiBzICYmCisJKAorCQljZCBzICYmCisJCW1rZGlyIHFxcSB3d3cgeHh4ICYmCisJCWVjaG8gdGVzdF9xcXEgPiBxcXEvdGVzdF9xcXEudHh0ICYmCisJCWVjaG8gdGVzdF93d3cgPiB3d3cvdGVzdF93d3cudHh0ICYmCisJCWVjaG8gdGVzdF94eHggPiB4eHgvdGVzdF94eHgudHh0ICYmCisJCXN2bl9jbWQgYWRkIHFxcSAmJgorCQlzdm5fY21kIGFkZCB3d3cgJiYKKwkJc3ZuX2NtZCBhZGQgeHh4ICYmCisJCXN2bl9jbWQgY29tbWl0IC1tICJjcmVhdGUgc29tZSBmaWxlcyIgJiYKKwkJc3ZuX2NtZCB1cCAmJgorCQllY2hvIGhpID4+IHd3dy90ZXN0X3d3dy50eHQgJiYKKwkJc3ZuX2NtZCBjb21taXQgLW0gIm1vZGlmeSB3d3cvdGVzdF93d3cudHh0IiAmJgorCQlzdm5fY21kIHVwCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBhbiBTVk4gcmVwb3NpdG9yeSB3aXRoIGZpbHRlciB0byBpbmNsdWRlIHFxcSBkaXJlY3RvcnknICcKKwlnaXQgc3ZuIGNsb25lIC0taW5jbHVkZS1wYXRocz0icXFxIiAiJHN2bnJlcG8iIGcgJiYKKwllY2hvIHRlc3RfcXFxID4gZXhwZWN0ICYmCisJZm9yIGkgaW4gZy8qLyoudHh0OyBkbyBjYXQgJGkgPj4gZXhwZWN0MjsgZG9uZSAmJgorCXRlc3RfY21wIGV4cGVjdCBleHBlY3QyCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdCtmZXRjaCBhbiBTVk4gcmVwb3NpdG9yeSB3aXRoIGluY2x1ZGVkIHFxcSBkaXJlY3RvcnknICcKKwlnaXQgc3ZuIGluaXQgIiRzdm5yZXBvIiBjICYmCisJKCBjZCBjICYmIGdpdCBzdm4gZmV0Y2ggLS1pbmNsdWRlLXBhdGhzPSJxcXEiICkgJiYKKwlybSBleHBlY3QyICYmCisJZWNobyB0ZXN0X3FxcSA+IGV4cGVjdCAmJgorCWZvciBpIGluIGMvKi8qLnR4dDsgZG8gY2F0ICRpID4+IGV4cGVjdDI7IGRvbmUgJiYKKwl0ZXN0X2NtcCBleHBlY3QgZXhwZWN0MgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJpZnkgaW5jbHVkZS1wYXRocyBjb25maWcgc2F2ZWQgYnkgY2xvbmUnICcKKwkoCisJICAgIGNkIGcgJiYKKwkgICAgZ2l0IGNvbmZpZyAtLWdldCBzdm4tcmVtb3RlLnN2bi5pbmNsdWRlLXBhdGhzIHwgZmdyZXAgInFxcSIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1NWTi1zaWRlIGNoYW5nZSBvdXRzaWRlIG9mIHd3dycgJworCSgKKwkJY2QgcyAmJgorCQllY2hvIGIgPj4gcXFxL3Rlc3RfcXFxLnR4dCAmJgorCQlzdm5fY21kIGNvbW1pdCAtbSAiU1ZOLXNpZGUgY2hhbmdlIG91dHNpZGUgb2Ygd3d3IiAmJgorCQlzdm5fY21kIHVwICYmCisJCXN2bl9jbWQgbG9nIC12IHwgZmdyZXAgIlNWTi1zaWRlIGNoYW5nZSBvdXRzaWRlIG9mIHd3dyIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3VwZGF0ZSBnaXQgc3ZuLWNsb25lZCByZXBvIChjb25maWcgaW5jbHVkZSknICcKKwkoCisJCWNkIGcgJiYKKwkJZ2l0IHN2biByZWJhc2UgJiYKKwkJcHJpbnRmICJ0ZXN0X3FxcVxuYlxuIiA+IGV4cGVjdCAmJgorCQlmb3IgaSBpbiAqLyoudHh0OyBkbyBjYXQgJGkgPj4gZXhwZWN0MjsgZG9uZSAmJgorCQl0ZXN0X2NtcCBleHBlY3QyIGV4cGVjdCAmJgorCQlybSBleHBlY3QgZXhwZWN0MgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndXBkYXRlIGdpdCBzdm4tY2xvbmVkIHJlcG8gKG9wdGlvbiBpbmNsdWRlKScgJworCSgKKwkJY2QgYyAmJgorCQlnaXQgc3ZuIHJlYmFzZSAtLWluY2x1ZGUtcGF0aHM9InFxcSIgJiYKKwkJcHJpbnRmICJ0ZXN0X3FxcVxuYlxuIiA+IGV4cGVjdCAmJgorCQlmb3IgaSBpbiAqLyoudHh0OyBkbyBjYXQgJGkgPj4gZXhwZWN0MjsgZG9uZSAmJgorCQl0ZXN0X2NtcCBleHBlY3QyIGV4cGVjdCAmJgorCQlybSBleHBlY3QgZXhwZWN0MgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnU1ZOLXNpZGUgY2hhbmdlIGluc2lkZSBvZiBpZ25vcmVkIHd3dycgJworCSgKKwkJY2QgcyAmJgorCQllY2hvIHphcSA+PiB3d3cvdGVzdF93d3cudHh0CisJCXN2bl9jbWQgY29tbWl0IC1tICJTVk4tc2lkZSBjaGFuZ2UgaW5zaWRlIG9mIHd3dy90ZXN0X3d3dy50eHQiICYmCisJCXN2bl9jbWQgdXAgJiYKKwkJc3ZuX2NtZCBsb2cgLXYgfCBmZ3JlcCAiU1ZOLXNpZGUgY2hhbmdlIGluc2lkZSBvZiB3d3cvdGVzdF93d3cudHh0IgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndXBkYXRlIGdpdCBzdm4tY2xvbmVkIHJlcG8gKGNvbmZpZyBpbmNsdWRlKScgJworCSgKKwkJY2QgZyAmJgorCQlnaXQgc3ZuIHJlYmFzZSAmJgorCQlwcmludGYgInRlc3RfcXFxXG5iXG4iID4gZXhwZWN0ICYmCisJCWZvciBpIGluICovKi50eHQ7IGRvIGNhdCAkaSA+PiBleHBlY3QyOyBkb25lICYmCisJCXRlc3RfY21wIGV4cGVjdDIgZXhwZWN0ICYmCisJCXJtIGV4cGVjdCBleHBlY3QyCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd1cGRhdGUgZ2l0IHN2bi1jbG9uZWQgcmVwbyAob3B0aW9uIGluY2x1ZGUpJyAnCisJKAorCQljZCBjICYmCisJCWdpdCBzdm4gcmViYXNlIC0taW5jbHVkZS1wYXRocz0icXFxIiAmJgorCQlwcmludGYgInRlc3RfcXFxXG5iXG4iID4gZXhwZWN0ICYmCisJCWZvciBpIGluICovKi50eHQ7IGRvIGNhdCAkaSA+PiBleHBlY3QyOyBkb25lICYmCisJCXRlc3RfY21wIGV4cGVjdDIgZXhwZWN0ICYmCisJCXJtIGV4cGVjdCBleHBlY3QyCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdTVk4tc2lkZSBjaGFuZ2UgaW4gYW5kIG91dCBvZiBpbmNsdWRlZCBxcXEnICcKKwkoCisJCWNkIHMgJiYKKwkJZWNobyBjdmYgPj4gd3d3L3Rlc3Rfd3d3LnR4dAorCQllY2hvIHlnZyA+PiBxcXEvdGVzdF9xcXEudHh0CisJCXN2bl9jbWQgY29tbWl0IC1tICJTVk4tc2lkZSBjaGFuZ2UgaW4gYW5kIG91dCBvZiBpZ25vcmVkIHd3dyIgJiYKKwkJc3ZuX2NtZCB1cCAmJgorCQlzdm5fY21kIGxvZyAtdiB8IGZncmVwICJTVk4tc2lkZSBjaGFuZ2UgaW4gYW5kIG91dCBvZiBpZ25vcmVkIHd3dyIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3VwZGF0ZSBnaXQgc3ZuLWNsb25lZCByZXBvIGFnYWluIChjb25maWcgaW5jbHVkZSknICcKKwkoCisJCWNkIGcgJiYKKwkJZ2l0IHN2biByZWJhc2UgJiYKKwkJcHJpbnRmICJ0ZXN0X3FxcVxuYlxueWdnXG4iID4gZXhwZWN0ICYmCisJCWZvciBpIGluICovKi50eHQ7IGRvIGNhdCAkaSA+PiBleHBlY3QyOyBkb25lICYmCisJCXRlc3RfY21wIGV4cGVjdDIgZXhwZWN0ICYmCisJCXJtIGV4cGVjdCBleHBlY3QyCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd1cGRhdGUgZ2l0IHN2bi1jbG9uZWQgcmVwbyBhZ2FpbiAob3B0aW9uIGluY2x1ZGUpJyAnCisJKAorCQljZCBjICYmCisJCWdpdCBzdm4gcmViYXNlIC0taW5jbHVkZS1wYXRocz0icXFxIiAmJgorCQlwcmludGYgInRlc3RfcXFxXG5iXG55Z2dcbiIgPiBleHBlY3QgJiYKKwkJZm9yIGkgaW4gKi8qLnR4dDsgZG8gY2F0ICRpID4+IGV4cGVjdDI7IGRvbmUgJiYKKwkJdGVzdF9jbXAgZXhwZWN0MiBleHBlY3QgJiYKKwkJcm0gZXhwZWN0IGV4cGVjdDIKKwkpCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTE1NC1naXQtc3ZuLWZhbmN5LWdsb2Iuc2ggYi90L3Q5MTU0LWdpdC1zdm4tZmFuY3ktZ2xvYi5zaAppbmRleCBhNmE1NmE2Li5iNzgwZTBlIDEwMDc1NQotLS0gYS90L3Q5MTU0LWdpdC1zdm4tZmFuY3ktZ2xvYi5zaAorKysgYi90L3Q5MTU0LWdpdC1zdm4tZmFuY3ktZ2xvYi5zaApAQCAtMjEsNiArMjEsMTUgQEAKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIHJlZnMvcmVtb3Rlcy9ibHVlCiAJIgogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgZ3JlIGJyYW5jaCcgIgorCUdJVF9DT05GSUc9LmdpdC9zdm4vLm1ldGFkYXRhIGdpdCBjb25maWcgLS11bnNldCBzdm4tcmVtb3RlLnN2bi5icmFuY2hlcy1tYXhSZXYgJiYKKwlnaXQgY29uZmlnIHN2bi1yZW1vdGUuc3ZuLmJyYW5jaGVzICdicmFuY2hlcy97cmVkLGdyZX06cmVmcy9yZW1vdGVzLyonICYmCisJZ2l0IHN2biBmZXRjaCAmJgorCWdpdCByZXYtcGFyc2UgcmVmcy9yZW1vdGVzL3JlZCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgcmVmcy9yZW1vdGVzL2dyZWVuICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSByZWZzL3JlbW90ZXMvYmx1ZQorCSIKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIGdyZWVuIGJyYW5jaCcgIgogCUdJVF9DT05GSUc9LmdpdC9zdm4vLm1ldGFkYXRhIGdpdCBjb25maWcgLS11bnNldCBzdm4tcmVtb3RlLnN2bi5icmFuY2hlcy1tYXhSZXYgJiYKIAlnaXQgY29uZmlnIHN2bi1yZW1vdGUuc3ZuLmJyYW5jaGVzICdicmFuY2hlcy97cmVkLGdyZWVufTpyZWZzL3JlbW90ZXMvKicgJiYKZGlmZiAtLWdpdCBhL3QvdDkxNjEtZ2l0LXN2bi1tZXJnZWluZm8tcHVzaC5zaCBiL3QvdDkxNjEtZ2l0LXN2bi1tZXJnZWluZm8tcHVzaC5zaAppbmRleCA2ZWYwYzBiLi4xZWFiNzAxIDEwMDc1NQotLS0gYS90L3Q5MTYxLWdpdC1zdm4tbWVyZ2VpbmZvLXB1c2guc2gKKysrIGIvdC90OTE2MS1naXQtc3ZuLW1lcmdlaW5mby1wdXNoLnNoCkBAIC04OCw3ICs4OCw2IEBACiAJdGVzdCAiJG1lcmdlaW5mbyIgPSAiL2JyYW5jaGVzL3N2bmIxOjItNCw3LTksMTMtMTgKIC9icmFuY2hlcy9zdm5iMjozLDgsMTYtMTcKIC9icmFuY2hlcy9zdm5iMzo0LDkKLS9icmFuY2hlcy9zdm5iNDo1LTYsMTAtMTIKIC9icmFuY2hlcy9zdm5iNTo2LDExIgogCScKIApkaWZmIC0tZ2l0IGEvdC90OTE2My1naXQtc3ZuLXJlc2V0LWNsZWFycy1jYWNoZXMuc2ggYi90L3Q5MTYzLWdpdC1zdm4tcmVzZXQtY2xlYXJzLWNhY2hlcy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jZDRjNjYyCi0tLSAvZGV2L251bGwKKysrIGIvdC90OTE2My1naXQtc3ZuLXJlc2V0LWNsZWFycy1jYWNoZXMuc2gKQEAgLTAsMCArMSw3OCBAQAorIyEvYmluL3NoCisjCisjIENvcHlyaWdodCAoYykgMjAxMiBQZXRlciBCYXVtYW5uCisjCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gcmVzZXQgY2xlYXJzIG1lbW9pemVkIGNhY2hlcycKKy4gLi9saWItZ2l0LXN2bi5zaAorCitzdm5fdmVyPSIkKHN2biAtLXZlcnNpb24gLS1xdWlldCkiCitjYXNlICRzdm5fdmVyIGluCiswLiogfCAxLlswLTRdLiopCisJc2tpcF9hbGw9InNraXBwaW5nIGdpdC1zdm4gdGVzdCAtIFNWTiB0b28gb2xkICgkc3ZuX3ZlcikiCisJdGVzdF9kb25lCisJOzsKK2VzYWMKKworIyAuLi4gYSAgLSAgYiAtIG0gICA8LSB0cnVuaworIyAgICAgIFwgICAgICAgLworIyAgICAgICAuLi4gYyAgICAgICA8LSBicmFuY2gxCisjCisjIFNWTiBDb21taXRzIG5vdCBpbnRlcmVzdGluZyBmb3IgdGhpcyB0ZXN0IGFyZSBhYmJyZXZpYXRlZCB3aXRoICIuLi4iCisjCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0aWFsaXplIHNvdXJjZSBzdm4gcmVwbycgJworCXN2bl9jbWQgbWtkaXIgLW0gImNyZWF0ZSB0cnVuayIgIiRzdm5yZXBvIi90cnVuayAmJgorCXN2bl9jbWQgbWtkaXIgLW0gImNyZWF0ZSBicmFuY2hlcyIgIiRzdm5yZXBvL2JyYW5jaGVzIiAmJgorCXN2bl9jbWQgY28gIiRzdm5yZXBvIi90cnVuayAiJFNWTl9UUkVFIiAmJgorCSgKKwkJY2QgIiRTVk5fVFJFRSIgJiYKKwkJdG91Y2ggZm9vICYmCisJCXN2bl9jbWQgYWRkIGZvbyAmJgorCQlzdm5fY21kIGNvbW1pdCAtbSAiYSIgJiYKKwkJc3ZuX2NtZCBjcCAtbSBicmFuY2ggIiRzdm5yZXBvIi90cnVuayAiJHN2bnJlcG8iL2JyYW5jaGVzL2JyYW5jaDEgJiYKKwkJc3ZuX2NtZCBzd2l0Y2ggIiRzdm5yZXBvIi9icmFuY2hlcy9icmFuY2gxICYmCisJCXRvdWNoIGJhciAmJgorCQlzdm5fY21kIGFkZCBiYXIgJiYKKwkJc3ZuX2NtZCBjb21taXQgLW0gYiAmJgorCQlzdm5fY21kIHN3aXRjaCAiJHN2bnJlcG8iL3RydW5rICYmCisJCXRvdWNoIGJheiAmJgorCQlzdm5fY21kIGFkZCBiYXogJiYKKwkJc3ZuX2NtZCBjb21taXQgLW0gYyAmJgorCQlzdm5fY21kIHVwICYmCisJCXN2bl9jbWQgbWVyZ2UgIiRzdm5yZXBvIi9icmFuY2hlcy9icmFuY2gxICYmCisJCXN2bl9jbWQgY29tbWl0IC1tICJtIgorCSkgJiYKKwlybSAtcmYgIiRTVk5fVFJFRSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggdG8gbWVyZ2UtYmFzZSAoYSknICcKKwlnaXQgc3ZuIGluaXQgLXMgIiRzdm5yZXBvIiAmJgorCWdpdCBzdm4gZmV0Y2ggLS1yZXZpc2lvbiBCQVNFOjMKKycKKworIyBnaXQgc3ZuIHJlYmFzZSBsb29zZXMgdGhlIG1lcmdlIGNvbW1pdAorIworIyAuLi4gYSAgLSAgYiAtIG0gIDwtIHRydW5rCisjICAgICAgXAorIyAgICAgICAuLi4gYworIwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGxvb3NlcyBTVk4gbWVyZ2UgKG0pJyAnCisJZ2l0IHN2biByZWJhc2UgJiYKKwlnaXQgc3ZuIGZldGNoICYmCisJdGVzdCAxID0gJChnaXQgY2F0LWZpbGUgLXAgbWFzdGVyfGdyZXAgcGFyZW50fHdjIC1sKQorJworCisjIGdpdCBzdm4gZmV0Y2ggY3JlYXRlcyBjb3JyZWN0IGhpc3Rvcnkgd2l0aCBtZXJnZSBjb21taXQKKyMKKyMgLi4uIGEgIC0gIGIgLSBtICA8LSB0cnVuaworIyAgICAgIFwgICAgICAgLworIyAgICAgICAuLi4gYyAgICAgIDwtIGJyYW5jaDEKKyMKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jlc2V0IGFuZCBmZXRjaCBnZXRzIHRoZSBTVk4gbWVyZ2UgKG0pIGNvcnJlY3RseScgJworCWdpdCBzdm4gcmVzZXQgLXIgMyAmJgorCWdpdCByZXNldCAtLWhhcmQgdHJ1bmsgJiYKKwlnaXQgc3ZuIGZldGNoICYmCisJdGVzdCAyID0gJChnaXQgY2F0LWZpbGUgLXAgdHJ1bmt8Z3JlcCBwYXJlbnR8d2MgLWwpCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTE2NC1naXQtc3ZuLWRjb21taXQtY29uY3VycmVudC5zaCBiL3QvdDkxNjQtZ2l0LXN2bi1kY29tbWl0LWNvbmN1cnJlbnQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDg0NjRkNAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDkxNjQtZ2l0LXN2bi1kY29tbWl0LWNvbmN1cnJlbnQuc2gKQEAgLTAsMCArMSwyMTYgQEAKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKGMpIDIwMTIgUm9iZXJ0IEx1YmVyZGEKKyMKKwordGVzdF9kZXNjcmlwdGlvbj0nY29uY3VycmVudCBnaXQgc3ZuIGRjb21taXQnCisuIC4vbGliLWdpdC1zdm4uc2gKKworCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHN2biByZXBvc2l0b3J5JyAnCisJc3ZuX2NtZCBjaGVja291dCAiJHN2bnJlcG8iIHdvcmsuc3ZuICYmCisJKAorCQljZCB3b3JrLnN2biAmJgorCQllY2hvID5maWxlICYmIGVjaG8gPiBhdXRvX3VwZGF0ZWRfZmlsZQorCQlzdm5fY21kIGFkZCBmaWxlIGF1dG9fdXBkYXRlZF9maWxlICYmCisJCXN2bl9jbWQgY29tbWl0IC1tICJpbml0aWFsIGNvbW1pdCIKKwkpICYmCisJc3ZuX2NtZCBjaGVja291dCAiJHN2bnJlcG8iIHdvcmstYXV0by1jb21taXRzLnN2bgorJworTj0wCituZXh0X04oKQoreworCU49JCgoICROICsgMSApKQorfQorCisjIFNldHVwIFNWTiByZXBvc2l0b3J5IGhvb2tzIHRvIGVtdWxhdGUgU1ZOIGZhaWx1cmVzIG9yIGNvbmN1cnJlbnQgY29tbWl0cworIyBUaGUgZnVuY3Rpb24gYWRkcworIyBlaXRoZXIgcHJlLWNvbW1pdCAgaG9vaywgd2hpY2ggY2F1c2VzIFNWTiBjb21taXQgZ2l2ZW4gaW4gc2Vjb25kIGFyZ3VtZW50CisjICAgICAgICAgICAgICAgICAgICB0byBmYWlsCisjIG9yICAgICBwb3N0LWNvbW1pdCBob29rLCB3aGljaCBjcmVhdGVzIGEgbmV3IGNvbW1pdCAoYSBuZXcgbGluZSBhZGRlZCB0bworIyAgICAgICAgICAgICAgICAgICAgYXV0b191cGRhdGVkX2ZpbGUpIGFmdGVyIGdpdmVuIFNWTiBjb21taXQKKyMgVGhlIGZpcnN0IGFyZ3VtZW50IGNvbnRhaW5zIGEgdHlwZSBvZiB0aGUgaG9vaworIyBUaGUgc2Vjb25kIGFyZ3VtZW50IGNvbnRhaW5zIGEgbnVtYmVyIChub3QgU1ZOIHJldmlzaW9uKSBvZiBjb21taXQKKyMgdGhlIGhvb2sgc2hvdWxkIGJlIGFwcGxpZWQgZm9yIChlYWNoIHRpbWUgdGhlIGhvb2sgaXMgcnVuLCB0aGUgZ2l2ZW4KKyMgbnVtYmVyIGlzIGRlY3JlYXNlZCBieSBvbmUgdW50aWwgaXQgZ2V0cyAwLCBpbiB3aGljaCBjYXNlIHRoZSBob29rCisjIHdpbGwgZXhlY3V0ZSBpdHMgcmVhbCBhY3Rpb24pCitzZXR1cF9ob29rKCkKK3sKKwlob29rX3R5cGU9IiQxIiAgIyAicHJlLWNvbW1pdCIgb3IgInBvc3QtY29tbWl0IgorCXNraXBfcmV2cz0iJDIiCisJWyAiJGhvb2tfdHlwZSIgPSAicHJlLWNvbW1pdCIgXSB8fAorCQlbICIkaG9va190eXBlIiA9ICJwb3N0LWNvbW1pdCIgXSB8fAorCQl7IGVjaG8gIkVSUk9SOiBpbnZhbGlkIGFyZ3VtZW50ICgkaG9va190eXBlKSIgXAorCQkJInBhc3NlZCB0byBzZXR1cF9ob29rIiA+JjIgOyByZXR1cm4gMTsgfQorCWVjaG8gImNudD0kc2tpcF9yZXZzIiA+ICIkaG9va190eXBlLWNvdW50ZXIiCisJcm0gLWYgIiRyYXdzdm5yZXBvL2hvb2tzLyIqLWNvbW1pdCAjIGRyb3AgcHJldmlvdXMgaG9va3MKKwlob29rPSIkcmF3c3ZucmVwby9ob29rcy8kaG9va190eXBlIgorCWNhdCA+ICIkaG9vayIgPDwtICdFT0YxJworCQkjIS9iaW4vc2gKKwkJc2V0IC1lCisJCWNkICIkMS8uLiIgICMgIiQxIiBpcyByZXBvc2l0b3J5IGxvY2F0aW9uCisJCWV4ZWMgPj4gc3ZuLWhvb2subG9nIDI+JjEKKwkJaG9vaz0iJChiYXNlbmFtZSAiJDAiKSIKKwkJZWNobyAiKioqIEV4ZWN1dGluZyAkaG9vayAkQCIKKwkJc2V0IC14CisJCS4gLi8kaG9vay1jb3VudGVyCisJCWNudD0iJCgoJGNudCAtIDEpKSIKKwkJZWNobyAiY250PSRjbnQiID4gLi8kaG9vay1jb3VudGVyCisJCVsgIiRjbnQiID0gIjAiIF0gfHwgZXhpdCAwCitFT0YxCisJaWYgWyAiJGhvb2tfdHlwZSIgPSAicHJlLWNvbW1pdCIgXTsgdGhlbgorCQllY2hvICJlY2hvICdjb21taXQgZGlzYWxsb3dlZCcgPiYyOyBleGl0IDEiID4+IiRob29rIgorCWVsc2UKKwkJZWNobyAiUEFUSD1cIiRQQVRIXCI7IGV4cG9ydCBQQVRIIiA+PiIkaG9vayIKKwkJZWNobyAic3ZuY29uZj1cIiRzdm5jb25mXCIiID4+IiRob29rIgorCQljYXQgPj4iJGhvb2siIDw8LSAnRU9GMicKKwkJCWNkIHdvcmstYXV0by1jb21taXRzLnN2bgorCQkJc3ZuIHVwIC0tY29uZmlnLWRpciAiJHN2bmNvbmYiCisJCQllY2hvICIkJCIgPj4gYXV0b191cGRhdGVkX2ZpbGUKKwkJCXN2biBjb21taXQgLS1jb25maWctZGlyICIkc3ZuY29uZiIgXAorCQkJCS1tICJhdXRvLWNvbW1pdHRpbmcgY29uY3VycmVudCBjaGFuZ2UiCisJCQlleGl0IDAKK0VPRjIKKwlmaQorCWNobW9kIDc1NSAiJGhvb2siCit9CisKK2NoZWNrX2NvbnRlbnRzKCkKK3sKKwlnaXRkaXI9IiQxIgorCShjZCAuLi93b3JrLnN2biAmJiBzdm5fY21kIHVwKSAmJgorCXRlc3RfY21wIGZpbGUgLi4vd29yay5zdm4vZmlsZSAmJgorCXRlc3RfY21wIGF1dG9fdXBkYXRlZF9maWxlIC4uL3dvcmsuc3ZuL2F1dG9fdXBkYXRlZF9maWxlCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIGlmIHBvc3QtY29tbWl0IGhvb2sgY3JlYXRlcyBhIGNvbmN1cnJlbnQgY29tbWl0JyAnCisJc2V0dXBfaG9vayBwb3N0LWNvbW1pdCAxICYmCisJKAorCQljZCB3b3JrLnN2biAmJgorCQljcCBhdXRvX3VwZGF0ZWRfZmlsZSBhdV9maWxlX3NhdmVkICYmCisJCWVjaG8gMSA+PiBmaWxlICYmCisJCXN2bl9jbWQgY29tbWl0IC1tICJjaGFuZ2luZyBmaWxlIiAmJgorCQlzdm5fY21kIHVwICYmCisJCXRlc3RfbXVzdF9mYWlsIHRlc3RfY21wIGF1dG9fdXBkYXRlZF9maWxlIGF1X2ZpbGVfc2F2ZWQKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIGlmIHByZS1jb21taXQgaG9vayBmYWlscycgJworCXNldHVwX2hvb2sgcHJlLWNvbW1pdCAyICYmCisJKAorCQljZCB3b3JrLnN2biAmJgorCQllY2hvIDIgPj4gZmlsZSAmJgorCQlzdm5fY21kIGNvbW1pdCAtbSAiY2hhbmdpbmcgZmlsZSBvbmNlIGFnYWluIiAmJgorCQllY2hvIDMgPj4gZmlsZSAmJgorCQl0ZXN0X211c3RfZmFpbCBzdm5fY21kIGNvbW1pdCAtbSAidGhpcyBjb21taXQgc2hvdWxkIGZhaWwiICYmCisJCXN2bl9jbWQgcmV2ZXJ0IGZpbGUKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Rjb21taXQgZXJyb3IgaGFuZGxpbmcnICcKKwlzZXR1cF9ob29rIHByZS1jb21taXQgMiAmJgorCW5leHRfTiAmJiBnaXQgc3ZuIGNsb25lICIkc3ZucmVwbyIgd29yayROLmdpdCAmJgorCSgKKwkJY2Qgd29yayROLmdpdCAmJgorCQllY2hvIDEgPj4gZmlsZSAmJiBnaXQgY29tbWl0IC1hbSAiY29tbWl0IGNoYW5nZSAkTi4xIiAmJgorCQllY2hvIDIgPj4gZmlsZSAmJiBnaXQgY29tbWl0IC1hbSAiY29tbWl0IGNoYW5nZSAkTi4yIiAmJgorCQllY2hvIDMgPj4gZmlsZSAmJiBnaXQgY29tbWl0IC1hbSAiY29tbWl0IGNoYW5nZSAkTi4zIiAmJgorCQkjIHNob3VsZCBmYWlsIHRvIGRjb21taXQgMm5kIGFuZCAzcmQgY2hhbmdlCisJCSMgYnV0IHN0aWxsIHNob3VsZCBsZWF2ZSB0aGUgcmVwb3NpdG9yeSBpbiByZWFzb25hYmxlIHN0YXRlCisJCXRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gZGNvbW1pdCAmJgorCQlnaXQgdXBkYXRlLWluZGV4IC0tcmVmcmVzaCAmJgorCQlnaXQgc2hvdyBIRUFEfjIgICB8IGdyZXAgLXEgZ2l0LXN2bi1pZCAmJgorCQkhIGdpdCBzaG93IEhFQUR+MSB8IGdyZXAgLXEgZ2l0LXN2bi1pZCAmJgorCQkhIGdpdCBzaG93IEhFQUQgICB8IGdyZXAgLXEgZ2l0LXN2bi1pZAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGNvbW1pdCBjb25jdXJyZW50IGNoYW5nZSBpbiBub24tY2hhbmdlZCBmaWxlJyAnCisJc2V0dXBfaG9vayBwb3N0LWNvbW1pdCAyICYmCisJbmV4dF9OICYmIGdpdCBzdm4gY2xvbmUgIiRzdm5yZXBvIiB3b3JrJE4uZ2l0ICYmCisJKAorCQljZCB3b3JrJE4uZ2l0ICYmCisJCWVjaG8gMSA+PiBmaWxlICYmIGdpdCBjb21taXQgLWFtICJjb21taXQgY2hhbmdlICROLjEiICYmCisJCWVjaG8gMiA+PiBmaWxlICYmIGdpdCBjb21taXQgLWFtICJjb21taXQgY2hhbmdlICROLjIiICYmCisJCWVjaG8gMyA+PiBmaWxlICYmIGdpdCBjb21taXQgLWFtICJjb21taXQgY2hhbmdlICROLjMiICYmCisJCSMgc2hvdWxkIHJlYmFzZSBhbmQgbGVhdmUgdGhlIHJlcG9zaXRvcnkgaW4gcmVhc29uYWJsZSBzdGF0ZQorCQlnaXQgc3ZuIGRjb21taXQgJiYKKwkJZ2l0IHVwZGF0ZS1pbmRleCAtLXJlZnJlc2ggJiYKKwkJY2hlY2tfY29udGVudHMgJiYKKwkJZ2l0IHNob3cgSEVBRH4zIHwgZ3JlcCAtcSBnaXQtc3ZuLWlkICYmCisJCWdpdCBzaG93IEhFQUR+MiB8IGdyZXAgLXEgZ2l0LXN2bi1pZCAmJgorCQlnaXQgc2hvdyBIRUFEfjEgfCBncmVwIC1xIGF1dG8tY29tbWl0dGluZyAmJgorCQlnaXQgc2hvdyBIRUFEICAgfCBncmVwIC1xIGdpdC1zdm4taWQKKwkpCisnCisKKyMgQW4gdXRpbGl0eSBmdW5jdGlvbiB1c2VkIGluIHRoZSBmb2xsb3dpbmcgdGVzdAorZGVsZXRlX2ZpcnN0X2xpbmUoKQoreworCWZpbGU9IiQxIiAmJgorCXNlZCAxZCA8ICIkZmlsZSIgPiAiJHtmaWxlfS50bXAiICYmCisJcm0gIiRmaWxlIiAmJgorCW12ICIke2ZpbGV9LnRtcCIgIiRmaWxlIgorfQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkY29tbWl0IGNvbmN1cnJlbnQgbm9uLWNvbmZsaWN0aW5nIGNoYW5nZScgJworCXNldHVwX2hvb2sgcG9zdC1jb21taXQgMiAmJgorCW5leHRfTiAmJiBnaXQgc3ZuIGNsb25lICIkc3ZucmVwbyIgd29yayROLmdpdCAmJgorCSgKKwkJY2Qgd29yayROLmdpdCAmJgorCQljYXQgZmlsZSA+PiBhdXRvX3VwZGF0ZWRfZmlsZSAmJgorCQkJZ2l0IGNvbW1pdCAtYW0gImNvbW1pdCBjaGFuZ2UgJE4uMSIgJiYKKwkJZGVsZXRlX2ZpcnN0X2xpbmUgYXV0b191cGRhdGVkX2ZpbGUgJiYKKwkJCWdpdCBjb21taXQgLWFtICJjb21taXQgY2hhbmdlICROLjIiICYmCisJCWRlbGV0ZV9maXJzdF9saW5lIGF1dG9fdXBkYXRlZF9maWxlICYmCisJCQlnaXQgY29tbWl0IC1hbSAiY29tbWl0IGNoYW5nZSAkTi4zIiAmJgorCQkjIHNob3VsZCByZWJhc2UgYW5kIGxlYXZlIHRoZSByZXBvc2l0b3J5IGluIHJlYXNvbmFibGUgc3RhdGUKKwkJZ2l0IHN2biBkY29tbWl0ICYmCisJCWdpdCB1cGRhdGUtaW5kZXggLS1yZWZyZXNoICYmCisJCWNoZWNrX2NvbnRlbnRzICYmCisJCWdpdCBzaG93IEhFQUR+MyB8IGdyZXAgLXEgZ2l0LXN2bi1pZCAmJgorCQlnaXQgc2hvdyBIRUFEfjIgfCBncmVwIC1xIGdpdC1zdm4taWQgJiYKKwkJZ2l0IHNob3cgSEVBRH4xIHwgZ3JlcCAtcSBhdXRvLWNvbW1pdHRpbmcgJiYKKwkJZ2l0IHNob3cgSEVBRCAgIHwgZ3JlcCAtcSBnaXQtc3ZuLWlkCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkY29tbWl0IC0tbm8tcmViYXNlIGNvbmN1cnJlbnQgbm9uLWNvbmZsaWN0aW5nIGNoYW5nZScgJworCXNldHVwX2hvb2sgcG9zdC1jb21taXQgMiAmJgorCW5leHRfTiAmJiBnaXQgc3ZuIGNsb25lICIkc3ZucmVwbyIgd29yayROLmdpdCAmJgorCSgKKwkJY2Qgd29yayROLmdpdCAmJgorCQljYXQgZmlsZSA+PiBhdXRvX3VwZGF0ZWRfZmlsZSAmJgorCQkJZ2l0IGNvbW1pdCAtYW0gImNvbW1pdCBjaGFuZ2UgJE4uMSIgJiYKKwkJZGVsZXRlX2ZpcnN0X2xpbmUgYXV0b191cGRhdGVkX2ZpbGUgJiYKKwkJCWdpdCBjb21taXQgLWFtICJjb21taXQgY2hhbmdlICROLjIiICYmCisJCWRlbGV0ZV9maXJzdF9saW5lIGF1dG9fdXBkYXRlZF9maWxlICYmCisJCQlnaXQgY29tbWl0IC1hbSAiY29tbWl0IGNoYW5nZSAkTi4zIiAmJgorCQkjIHNob3VsZCBmYWlsIGFzIHJlYmFzZSBpcyBuZWVkZWQKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBkY29tbWl0IC0tbm8tcmViYXNlICYmCisJCSMgYnV0IHNob3VsZCBsZWF2ZSBIRUFEIHVuY2hhbmdlZAorCQlnaXQgdXBkYXRlLWluZGV4IC0tcmVmcmVzaCAmJgorCQkhIGdpdCBzaG93IEhFQUR+MiB8IGdyZXAgLXEgZ2l0LXN2bi1pZCAmJgorCQkhIGdpdCBzaG93IEhFQUR+MSB8IGdyZXAgLXEgZ2l0LXN2bi1pZCAmJgorCQkhIGdpdCBzaG93IEhFQUQgICB8IGdyZXAgLXEgZ2l0LXN2bi1pZAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGNvbW1pdCBmYWlscyBvbiBjb25jdXJyZW50IGNvbmZsaWN0aW5nIGNoYW5nZScgJworCXNldHVwX2hvb2sgcG9zdC1jb21taXQgMSAmJgorCW5leHRfTiAmJiBnaXQgc3ZuIGNsb25lICIkc3ZucmVwbyIgd29yayROLmdpdCAmJgorCSgKKwkJY2Qgd29yayROLmdpdCAmJgorCQllY2hvIGEgPj4gZmlsZSAmJgorCQkJZ2l0IGNvbW1pdCAtYW0gImNvbW1pdCBjaGFuZ2UgJE4uMSIgJiYKKwkJZWNobyBiID4+IGF1dG9fdXBkYXRlZF9maWxlICYmCisJCQlnaXQgY29tbWl0IC1hbSAiY29tbWl0IGNoYW5nZSAkTi4yIiAmJgorCQllY2hvIGMgPj4gYXV0b191cGRhdGVkX2ZpbGUgJiYKKwkJCWdpdCBjb21taXQgLWFtICJjb21taXQgY2hhbmdlICROLjMiICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gZGNvbW1pdCAmJiAjIHJlYmFzZSBzaG91bGQgZmFpbAorCQl0ZXN0X211c3RfZmFpbCBnaXQgdXBkYXRlLWluZGV4IC0tcmVmcmVzaAorCSkKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5MTY1LWdpdC1zdm4tZmV0Y2gtbWVyZ2UtYnJhbmNoLW9mLWJyYW5jaC5zaCBiL3QvdDkxNjUtZ2l0LXN2bi1mZXRjaC1tZXJnZS1icmFuY2gtb2YtYnJhbmNoLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjEzYWU3ZTMKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q5MTY1LWdpdC1zdm4tZmV0Y2gtbWVyZ2UtYnJhbmNoLW9mLWJyYW5jaC5zaApAQCAtMCwwICsxLDYwIEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDEyIFN0ZXZlbiBXYWx0ZXIKKyMKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biBtZXJnZSBkZXRlY3Rpb24nCisuIC4vbGliLWdpdC1zdm4uc2gKKworc3ZuX3Zlcj0iJChzdm4gLS12ZXJzaW9uIC0tcXVpZXQpIgorY2FzZSAkc3ZuX3ZlciBpbgorMC4qIHwgMS5bMC00XS4qKQorCXNraXBfYWxsPSJza2lwcGluZyBnaXQtc3ZuIHRlc3QgLSBTVk4gdG9vIG9sZCAoJHN2bl92ZXIpIgorCXRlc3RfZG9uZQorCTs7Citlc2FjCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luaXRpYWxpemUgc291cmNlIHN2biByZXBvJyAnCisJc3ZuX2NtZCBta2RpciAtbSB4ICIkc3ZucmVwbyIvdHJ1bmsgJiYKKwlzdm5fY21kIG1rZGlyIC1tIHggIiRzdm5yZXBvIi9icmFuY2hlcyAmJgorCXN2bl9jbWQgY28gIiRzdm5yZXBvIi90cnVuayAiJFNWTl9UUkVFIiAmJgorCSgKKwkJY2QgIiRTVk5fVFJFRSIgJiYKKwkJdG91Y2ggZm9vICYmCisJCXN2bl9jbWQgYWRkIGZvbyAmJgorCQlzdm5fY21kIGNvbW1pdCAtbSAiaW5pdGlhbCBjb21taXQiICYmCisJCXN2bl9jbWQgY3AgLW0gYnJhbmNoICIkc3ZucmVwbyIvdHJ1bmsgIiRzdm5yZXBvIi9icmFuY2hlcy9icmFuY2gxICYmCisJCXN2bl9jbWQgc3dpdGNoICIkc3ZucmVwbyIvYnJhbmNoZXMvYnJhbmNoMSAmJgorCQl0b3VjaCBiYXIgJiYKKwkJc3ZuX2NtZCBhZGQgYmFyICYmCisJCXN2bl9jbWQgY29tbWl0IC1tIGJyYW5jaDEgJiYKKwkJc3ZuX2NtZCBjcCAtbSBicmFuY2ggIiRzdm5yZXBvIi9icmFuY2hlcy9icmFuY2gxICIkc3ZucmVwbyIvYnJhbmNoZXMvYnJhbmNoMiAmJgorCQlzdm5fY21kIHN3aXRjaCAiJHN2bnJlcG8iL2JyYW5jaGVzL2JyYW5jaDIgJiYKKwkJdG91Y2ggYmF6ICYmCisJCXN2bl9jbWQgYWRkIGJheiAmJgorCQlzdm5fY21kIGNvbW1pdCAtbSBicmFuY2gyICYmCisJCXN2bl9jbWQgc3dpdGNoICIkc3ZucmVwbyIvdHJ1bmsgJiYKKwkJdG91Y2ggYmFyMiAmJgorCQlzdm5fY21kIGFkZCBiYXIyICYmCisJCXN2bl9jbWQgY29tbWl0IC1tIHRydW5rICYmCisJCXN2bl9jbWQgc3dpdGNoICIkc3ZucmVwbyIvYnJhbmNoZXMvYnJhbmNoMiAmJgorCQlzdm5fY21kIG1lcmdlICIkc3ZucmVwbyIvdHJ1bmsgJiYKKwkJc3ZuX2NtZCBjb21taXQgLW0gIm1lcmdlIHRydW5rIgorCQlzdm5fY21kIHN3aXRjaCAiJHN2bnJlcG8iL3RydW5rICYmCisJCXN2bl9jbWQgbWVyZ2UgLS1yZWludGVncmF0ZSAiJHN2bnJlcG8iL2JyYW5jaGVzL2JyYW5jaDIgJiYKKwkJc3ZuX2NtZCBjb21taXQgLW0gIm1lcmdlIGJyYW5jaDIiCisJKSAmJgorCXJtIC1yZiAiJFNWTl9UUkVFIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBzdm4gcmVwbycgJworCWdpdCBzdm4gaW5pdCAtcyAiJHN2bnJlcG8iICYmCisJZ2l0IHN2biBmZXRjaAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJpZnkgbWVyZ2UgY29tbWl0JyAneD0kKGdpdCByZXYtcGFyc2UgSEVBRF4yKSAmJgorCXk9JChnaXQgcmV2LXBhcnNlIGJyYW5jaDIpICYmCisJdGVzdCAieCR4IiA9ICJ4JHkiCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTE2Ni1naXQtc3ZuLWZldGNoLW1lcmdlLWJyYW5jaC1vZi1icmFuY2gyLnNoIGIvdC90OTE2Ni1naXQtc3ZuLWZldGNoLW1lcmdlLWJyYW5jaC1vZi1icmFuY2gyLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFmMGVjMGUKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q5MTY2LWdpdC1zdm4tZmV0Y2gtbWVyZ2UtYnJhbmNoLW9mLWJyYW5jaDIuc2gKQEAgLTAsMCArMSw1MyBAQAorIyEvYmluL3NoCisjCisjIENvcHlyaWdodCAoYykgMjAxMiBTdGV2ZW4gV2FsdGVyCisjCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gbWVyZ2UgZGV0ZWN0aW9uJworLiAuL2xpYi1naXQtc3ZuLnNoCisKK3N2bl92ZXI9IiQoc3ZuIC0tdmVyc2lvbiAtLXF1aWV0KSIKK2Nhc2UgJHN2bl92ZXIgaW4KKzAuKiB8IDEuWzAtNF0uKikKKwlza2lwX2FsbD0ic2tpcHBpbmcgZ2l0LXN2biB0ZXN0IC0gU1ZOIHRvbyBvbGQgKCRzdm5fdmVyKSIKKwl0ZXN0X2RvbmUKKwk7OworZXNhYworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0aWFsaXplIHNvdXJjZSBzdm4gcmVwbycgJworCXN2bl9jbWQgbWtkaXIgLW0geCAiJHN2bnJlcG8iL3RydW5rICYmCisJc3ZuX2NtZCBta2RpciAtbSB4ICIkc3ZucmVwbyIvYnJhbmNoZXMgJiYKKwlzdm5fY21kIGNvICIkc3ZucmVwbyIvdHJ1bmsgIiRTVk5fVFJFRSIgJiYKKwkoCisJCWNkICIkU1ZOX1RSRUUiICYmCisJCXRvdWNoIGZvbyAmJgorCQlzdm5fY21kIGFkZCBmb28gJiYKKwkJc3ZuX2NtZCBjb21taXQgLW0gImluaXRpYWwgY29tbWl0IiAmJgorCQlzdm5fY21kIGNwIC1tIGJyYW5jaCAiJHN2bnJlcG8iL3RydW5rICIkc3ZucmVwbyIvYnJhbmNoZXMvYnJhbmNoMSAmJgorCQlzdm5fY21kIHN3aXRjaCAiJHN2bnJlcG8iL2JyYW5jaGVzL2JyYW5jaDEgJiYKKwkJdG91Y2ggYmFyICYmCisJCXN2bl9jbWQgYWRkIGJhciAmJgorCQlzdm5fY21kIGNvbW1pdCAtbSBicmFuY2gxICYmCisJCXN2bl9jbWQgY3AgLW0gYnJhbmNoICIkc3ZucmVwbyIvYnJhbmNoZXMvYnJhbmNoMSAiJHN2bnJlcG8iL2JyYW5jaGVzL2JyYW5jaDIgJiYKKwkJc3ZuX2NtZCBzd2l0Y2ggIiRzdm5yZXBvIi9icmFuY2hlcy9icmFuY2gyICYmCisJCXRvdWNoIGJheiAmJgorCQlzdm5fY21kIGFkZCBiYXogJiYKKwkJc3ZuX2NtZCBjb21taXQgLW0gYnJhbmNoMiAmJgorCQlzdm5fY21kIHN3aXRjaCAiJHN2bnJlcG8iL3RydW5rICYmCisJCXN2bl9jbWQgbWVyZ2UgLS1yZWludGVncmF0ZSAiJHN2bnJlcG8iL2JyYW5jaGVzL2JyYW5jaDIgJiYKKwkJc3ZuX2NtZCBjb21taXQgLW0gIm1lcmdlIGJyYW5jaDIiCisJKSAmJgorCXJtIC1yZiAiJFNWTl9UUkVFIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBzdm4gcmVwbycgJworCWdpdCBzdm4gaW5pdCAtcyAiJHN2bnJlcG8iICYmCisJZ2l0IHN2biBmZXRjaAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJpZnkgbWVyZ2UgY29tbWl0JyAneD0kKGdpdCByZXYtcGFyc2UgSEVBRF4yKSAmJgorCXk9JChnaXQgcmV2LXBhcnNlIGJyYW5jaDIpICYmCisJdGVzdCAieCR4IiA9ICJ4JHkiCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTE2Ny1naXQtc3ZuLWNtZC1icmFuY2gtc3VicHJvamVjdC5zaCBiL3QvdDkxNjctZ2l0LXN2bi1jbWQtYnJhbmNoLXN1YnByb2plY3Quc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTNkZWY4NwotLS0gL2Rldi9udWxsCisrKyBiL3QvdDkxNjctZ2l0LXN2bi1jbWQtYnJhbmNoLXN1YnByb2plY3Quc2gKQEAgLTAsMCArMSw0OCBAQAorIyEvYmluL3NoCisjCisjIENvcHlyaWdodCAoYykgMjAxMyBUb2JpYXMgU2NodWx0ZQorIworCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIGJyYW5jaCBmb3Igc3VicHJvamVjdCBjbG9uZXMnCisuIC4vbGliLWdpdC1zdm4uc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdGlhbGl6ZSBzdm5yZXBvJyAnCisJbWtkaXIgaW1wb3J0ICYmCisJKAorCQljZCBpbXBvcnQgJiYKKwkJbWtkaXIgLXAgdHJ1bmsvcHJvamVjdCBicmFuY2hlcyB0YWdzICYmCisJCSgKKwkJCWNkIHRydW5rL3Byb2plY3QgJiYKKwkJCWVjaG8gZm9vID4gZm9vCisJCSkgJiYKKwkJc3ZuX2NtZCBpbXBvcnQgLW0gImltcG9ydCBmb3IgZ2l0LXN2biIgLiAiJHN2bnJlcG8iID4vZGV2L251bGwKKwkpICYmCisJcm0gLXJmIGltcG9ydCAmJgorCXN2bl9jbWQgY28gIiRzdm5yZXBvIi90cnVuay9wcm9qZWN0IHRydW5rL3Byb2plY3QgJiYKKwkoCisJCWNkIHRydW5rL3Byb2plY3QgJiYKKwkJZWNobyBiYXIgPj4gZm9vICYmCisJCXN2bl9jbWQgY2kgLW0gInVwZGF0ZWQgdHJ1bmsiCisJKSAmJgorCXJtIC1yZiB0cnVuaworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbXBvcnQgaW50byBnaXQnICcKKwlnaXQgc3ZuIGluaXQgLS10cnVuaz10cnVuay9wcm9qZWN0IC0tYnJhbmNoZXM9YnJhbmNoZXMvKi9wcm9qZWN0IFwKKwkJLS10YWdzPXRhZ3MvKi9wcm9qZWN0ICIkc3ZucmVwbyIgJiYKKwlnaXQgc3ZuIGZldGNoICYmCisJZ2l0IGNoZWNrb3V0IHJlbW90ZXMvdHJ1bmsKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHN2biBicmFuY2ggdGVzdHMnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIGJyYW5jaCBhICYmCisJZ2l0IHN2biBicmFuY2ggLS1wYXJlbnRzIGEgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIGJyYW5jaCAtdCB0YWcxICYmCisJZ2l0IHN2biBicmFuY2ggLS1wYXJlbnRzIC10IHRhZzEgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIGJyYW5jaCAtLXRhZyB0YWcyICYmCisJZ2l0IHN2biBicmFuY2ggLS1wYXJlbnRzIC0tdGFnIHRhZzIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIHRhZyB0YWczICYmCisJZ2l0IHN2biB0YWcgLS1wYXJlbnRzIHRhZzMKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5MjAwLWdpdC1jdnNleHBvcnRjb21taXQuc2ggYi90L3Q5MjAwLWdpdC1jdnNleHBvcnRjb21taXQuc2gKaW5kZXggYjU5YmU5YS4uM2ZiMzM2OCAxMDA3NTUKLS0tIGEvdC90OTIwMC1naXQtY3ZzZXhwb3J0Y29tbWl0LnNoCisrKyBiL3QvdDkyMDAtZ2l0LWN2c2V4cG9ydGNvbW1pdC5zaApAQCAtMTksMTQgKzE5LDE1IEBACiAgICAgdGVzdF9kb25lCiBmaQogCi1DVlNST09UPSRQV0QvY3Zzcm9vdAorQ1ZTUk9PVD0kUFdEL3RtcGN2c3Jvb3QKIENWU1dPUks9JFBXRC9jdnN3b3JrCiBHSVRfRElSPSRQV0QvLmdpdAogZXhwb3J0IENWU1JPT1QgQ1ZTV09SSyBHSVRfRElSCiAKIHJtIC1yZiAiJENWU1JPT1QiICIkQ1ZTV09SSyIKLW1rZGlyICIkQ1ZTUk9PVCIgJiYKKwogY3ZzIGluaXQgJiYKK3Rlc3QgLWQgIiRDVlNST09UIiAmJgogY3ZzIC1RIGNvIC1kICIkQ1ZTV09SSyIgLiAmJgogZWNobyA+ZW1wdHkgJiYKIGdpdCBhZGQgZW1wdHkgJiYKZGlmZiAtLWdpdCBhL3QvdDkzMDAtZmFzdC1pbXBvcnQuc2ggYi90L3Q5MzAwLWZhc3QtaW1wb3J0LnNoCmluZGV4IDJhYTE4MjQuLmFjNmYzYjYgMTAwNzU1Ci0tLSBhL3QvdDkzMDAtZmFzdC1pbXBvcnQuc2gKKysrIGIvdC90OTMwMC1mYXN0LWltcG9ydC5zaApAQCAtMTIsNyArMTIsNyBAQAogIyBUaGlzIGNvdWxkIGJlIHdyaXR0ZW4gYXMgImhlYWQgLWMgJDEiLCBidXQgSVJJWCAiaGVhZCIgZG9lcyBub3QKICMgc3VwcG9ydCB0aGUgLWMgb3B0aW9uLgogaGVhZF9jICgpIHsKLQlwZXJsIC1lICcKKwkiJFBFUkxfUEFUSCIgLWUgJwogCQlteSAkbGVuID0gJEFSR1ZbMV07CiAJCXdoaWxlICgkbGVuID4gMCkgewogCQkJbXkgJHM7CkBAIC00OSwxNCArNDksNiBAQAogCiA+ZW1wdHkKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXA6IGhhdmUgcGlwZXM/JyAnCi0Jcm0gLWYgZnJvYiAmJgotCWlmIG1rZmlmbyBmcm9iCi0JdGhlbgotCQl0ZXN0X3NldF9wcmVyZXEgUElQRQotCWZpCi0nCi0KICMjIwogIyMjIHNlcmllcyBBCiAjIyMKQEAgLTIxMTcsNyArMjEwOSw3IEBACiAgICAgZ3JlcCA6MSBnaXQubWFya3MnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdSOiBleHBvcnQtbWFya3Mgb3B0aW9ucyBjYW4gYmUgb3ZlcnJpZGVuIGJ5IGNvbW1hbmRsaW5lIG9wdGlvbnMnIFwKKyAgICAnUjogZXhwb3J0LW1hcmtzIG9wdGlvbnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgY29tbWFuZGxpbmUgb3B0aW9ucycgXAogICAgICdjYXQgaW5wdXQgfCBnaXQgZmFzdC1pbXBvcnQgLS1leHBvcnQtbWFya3M9b3RoZXIubWFya3MgJiYKICAgICBncmVwIDoxIG90aGVyLm1hcmtzJwogCmRpZmYgLS1naXQgYS90L3Q5MzUwLWZhc3QtZXhwb3J0LnNoIGIvdC90OTM1MC1mYXN0LWV4cG9ydC5zaAppbmRleCBiMDAxOTZiLi4yNDcxYmM2IDEwMDc1NQotLS0gYS90L3Q5MzUwLWZhc3QtZXhwb3J0LnNoCisrKyBiL3QvdDkzNTAtZmFzdC1leHBvcnQuc2gKQEAgLTE0Niw2ICsxNDYsMTIgQEAKIAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaWduZWQtdGFncz13YXJuLXN0cmlwJyAnCisJZ2l0IGZhc3QtZXhwb3J0IC0tc2lnbmVkLXRhZ3M9d2Fybi1zdHJpcCBzaWduLXlvdXItbmFtZSA+b3V0cHV0IDI+ZXJyICYmCisJISBncmVwIFBHUCBvdXRwdXQgJiYKKwl0ZXN0IC1zIGVycgorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBzdWJtb2R1bGUnICcKIAogCWdpdCBjaGVja291dCAtZiBtYXN0ZXIgJiYKQEAgLTMwMyw3ICszMDksNyBAQAogKAogCWNkIGxpbWl0LWJ5LXBhdGhzICYmCiAJZ2l0IGZhc3QtZXhwb3J0IC0tdGFnLW9mLWZpbHRlcmVkLW9iamVjdD1kcm9wIG15dGFnIC0tIHRoZXJlID4gb3V0cHV0ICYmCi0JdGVzdF9jbXAgb3V0cHV0IGV4cGVjdGVkCisJdGVzdF9jbXAgZXhwZWN0ZWQgb3V0cHV0CiApCiAnCiAKQEAgLTMyMCw3ICszMjYsNyBAQAogKAogCWNkIGxpbWl0LWJ5LXBhdGhzICYmCiAJZ2l0IGZhc3QtZXhwb3J0IC0tdGFnLW9mLWZpbHRlcmVkLW9iamVjdD1yZXdyaXRlIG15dGFnIC0tIHRoZXJlID4gb3V0cHV0ICYmCi0JdGVzdF9jbXAgb3V0cHV0IGV4cGVjdGVkCisJdGVzdF9jbXAgZXhwZWN0ZWQgb3V0cHV0CiApCiAnCiAKQEAgLTM1MSw3ICszNTcsNyBAQAogCSgKIAkJY2QgbGltaXQtYnktcGF0aHMgJiYKIAkJZ2l0IGZhc3QtZXhwb3J0IG1hc3Rlcn4yLi5tYXN0ZXJ+MSA+IG91dHB1dCAmJgotCQl0ZXN0X2NtcCBvdXRwdXQgZXhwZWN0ZWQKKwkJdGVzdF9jbXAgZXhwZWN0ZWQgb3V0cHV0CiAJKQogJwogCkBAIC00MjQsMTMgKzQzMCwxMyBAQAogCQktLWNhY2hlaW5mbyAxMDA2NDQgJGJsb2IgInBhdGggd2l0aCBcXGJhY2tzbGFzaCIgXAogCQktLWNhY2hlaW5mbyAxMDA2NDQgJGJsb2IgInBhdGggd2l0aCBzcGFjZSIgJiYKIAkgZ2l0IGNvbW1pdCAtbSBhZGRpdGlvbiAmJgotCSBnaXQgbHMtZmlsZXMgLXogLXMgfCBwZXJsIC0wcGUgInN7XFx0fXskJnN1YmRpci99IiA+aW5kZXggJiYKKwkgZ2l0IGxzLWZpbGVzIC16IC1zIHwgIiRQRVJMX1BBVEgiIC0wcGUgInN7XFx0fXskJnN1YmRpci99IiA+aW5kZXggJiYKIAkgZ2l0IHJlYWQtdHJlZSAtLWVtcHR5ICYmCiAJIGdpdCB1cGRhdGUtaW5kZXggLXogLS1pbmRleC1pbmZvIDxpbmRleCAmJgogCSBnaXQgY29tbWl0IC1tIHJlbmFtZSAmJgogCSBnaXQgcmVhZC10cmVlIC0tZW1wdHkgJiYKIAkgZ2l0IGNvbW1pdCAtbSBkZWxldGlvbiAmJgotCSBnaXQgZmFzdC1leHBvcnQgSEVBRCA+ZXhwb3J0Lm91dCAmJgorCSBnaXQgZmFzdC1leHBvcnQgLU0gSEVBRCA+ZXhwb3J0Lm91dCAmJgogCSBnaXQgcmV2LWxpc3QgSEVBRCA+ZXhwZWN0ICYmCiAJIGdpdCBpbml0IHJlc3VsdCAmJgogCSBjZCByZXN1bHQgJiYKQEAgLTQ0MCw0ICs0NDYsNjMgQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgYmlkaXJlY3Rpb25hbGl0eScgJworCT5tYXJrcy1jdXIgJiYKKwk+bWFya3MtbmV3ICYmCisJZ2l0IGluaXQgbWFya3MtdGVzdCAmJgorCWdpdCBmYXN0LWV4cG9ydCAtLWV4cG9ydC1tYXJrcz1tYXJrcy1jdXIgLS1pbXBvcnQtbWFya3M9bWFya3MtY3VyIC0tYnJhbmNoZXMgfCBcCisJZ2l0IC0tZ2l0LWRpcj1tYXJrcy10ZXN0Ly5naXQgZmFzdC1pbXBvcnQgLS1leHBvcnQtbWFya3M9bWFya3MtbmV3IC0taW1wb3J0LW1hcmtzPW1hcmtzLW5ldyAmJgorCShjZCBtYXJrcy10ZXN0ICYmCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWVjaG8gV29obGF1ZiA+IGZpbGUgJiYKKwlnaXQgY29tbWl0IC1hIC1tICJiYWNrIGluIHRpbWUiKSAmJgorCWdpdCAtLWdpdC1kaXI9bWFya3MtdGVzdC8uZ2l0IGZhc3QtZXhwb3J0IC0tZXhwb3J0LW1hcmtzPW1hcmtzLW5ldyAtLWltcG9ydC1tYXJrcz1tYXJrcy1uZXcgLS1icmFuY2hlcyB8IFwKKwlnaXQgZmFzdC1pbXBvcnQgLS1leHBvcnQtbWFya3M9bWFya3MtY3VyIC0taW1wb3J0LW1hcmtzPW1hcmtzLWN1cgorJworCitjYXQgPiBleHBlY3RlZCA8PCBFT0YKK2Jsb2IKK21hcmsgOjEzCitkYXRhIDUKK2J1bXAKKworY29tbWl0IHJlZnMvaGVhZHMvbWFzdGVyCittYXJrIDoxNAorYXV0aG9yIEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+IDExMTI5MTI3NzMgLTA3MDAKK2NvbW1pdHRlciBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+IDExMTI5MTI3NzMgLTA3MDAKK2RhdGEgNQorYnVtcAorZnJvbSA6MTIKK00gMTAwNjQ0IDoxMyBmaWxlCisKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhdm9pZCB1bmludGVyZXN0aW5nIHJlZnMnICcKKwk+IHRtcC1tYXJrcyAmJgorCWdpdCBmYXN0LWV4cG9ydCAtLWltcG9ydC1tYXJrcz10bXAtbWFya3MgXAorCQktLWV4cG9ydC1tYXJrcz10bXAtbWFya3MgbWFzdGVyID4gL2Rldi9udWxsICYmCisJZ2l0IHRhZyB2MS4wICYmCisJZ2l0IGJyYW5jaCB1bmludGVyZXN0aW5nICYmCisJZWNobyBidW1wID4gZmlsZSAmJgorCWdpdCBjb21taXQgLWEgLW0gYnVtcCAmJgorCWdpdCBmYXN0LWV4cG9ydCAtLWltcG9ydC1tYXJrcz10bXAtbWFya3MgXAorCQktLWV4cG9ydC1tYXJrcz10bXAtbWFya3MgXnVuaW50ZXJlc3RpbmcgXnYxLjAgbWFzdGVyID4gYWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+IGV4cGVjdGVkIDw8IEVPRgorcmVzZXQgcmVmcy9oZWFkcy9tYXN0ZXIKK2Zyb20gOjE0CisKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWZzIGFyZSB1cGRhdGVkIGV2ZW4gaWYgbm8gY29tbWl0cyBuZWVkIHRvIGJlIGV4cG9ydGVkJyAnCisJPiB0bXAtbWFya3MgJiYKKwlnaXQgZmFzdC1leHBvcnQgLS1pbXBvcnQtbWFya3M9dG1wLW1hcmtzIFwKKwkJLS1leHBvcnQtbWFya3M9dG1wLW1hcmtzIG1hc3RlciA+IC9kZXYvbnVsbCAmJgorCWdpdCBmYXN0LWV4cG9ydCAtLWltcG9ydC1tYXJrcz10bXAtbWFya3MgXAorCQktLWV4cG9ydC1tYXJrcz10bXAtbWFya3MgbWFzdGVyID4gYWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTQwMC1naXQtY3Zzc2VydmVyLXNlcnZlci5zaCBiL3QvdDk0MDAtZ2l0LWN2c3NlcnZlci1zZXJ2ZXIuc2gKaW5kZXggODA2NjIzZS4uMDQzMTM4NiAxMDA3NTUKLS0tIGEvdC90OTQwMC1naXQtY3Zzc2VydmVyLXNlcnZlci5zaAorKysgYi90L3Q5NDAwLWdpdC1jdnNzZXJ2ZXItc2VydmVyLnNoCkBAIC0zNiw2ICszNiw3IEBACiAKIHJtIC1yZiAiJENWU1dPUksiICIkU0VSVkVSRElSIgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKyAgZ2l0IGNvbmZpZyBwdXNoLmRlZmF1bHQgbWF0Y2hpbmcgJiYKICAgZWNobyA+ZW1wdHkgJiYKICAgZ2l0IGFkZCBlbXB0eSAmJgogICBnaXQgY29tbWl0IC1xIC1tICJGaXJzdCBDb21taXQiICYmCkBAIC00MDAsNyArNDAxLDcgQEAKIExpbmUgMAogPT09PT09PQogTElORSAwCi0+Pj4+Pj4+IG1lcmdlLjMKKz4+Pj4+Pj4gbWVyZ2UuMS4zCiBFT0YKIAogZm9yIGkgaW4gMSAyIDMgNCA1IDYgNyA4CkBAIC01MDUsNiArNTA2LDc2IEBACiAnCiAKICMtLS0tLS0tLS0tLS0KKyMgQ1ZTIExPRworIy0tLS0tLS0tLS0tLQorCisjIEtub3duIGlzc3VlcyB3aXRoIGdpdC1jdnNzZXJ2ZXIgY3VycmVudCBsb2cgb3V0cHV0OgorIyAgLSBIYXJkIGNvZGVkICJsaW5lczogKzIgLTMiIHBsYWNlaG9sZGVyLCBpbnN0ZWFkIG9mIHJlYWwgbnVtYmVycy4KKyMgIC0gQ1ZTIG5vcm1hbGx5IGRvZXMgbm90IGludGVybmFsbHkgYWRkIGEgYmxhbmsgZmlyc3QgbGluZQorIyAgICBub3IgYSBsYXN0IGxpbmUgd2l0aCBub3RoaW5nIGJ1dCBhIHNwYWNlIHRvIGxvZyBtZXNzYWdlcy4KKyMgIC0gVGhlIGxhdGVzdCBjdnMgMS4xMi54IHNlcnZlciBzZW5kcyArMDAwMCB0aW1lem9uZSAod2l0aCBzb21lIGhpZGRlbiAiTVQiCisjICAgIHRhZ2dpbmcgaW4gdGhlIHByb3RvY29sKSwgYW5kIGlmIGN2cyAxLjEyLnggY2xpZW50IHNlZXMgdGhlIE1UIHRhZ3MsCisjICAgIGl0IGNvbnZlcnRzIHRvIGxvY2FsIHRpbWUgem9uZS4gIGdpdC1jdnNzZXJ2ZXIgZG9lc24ndCBkbyB0aGUgKzAwMDAKKyMgICAgb3IgdGhlIE1UIHRhZ3MuLi4KKyMgIC0gVGhlIGxhdGVzdCAxLjEyLnggcmVsZWFzZXMgYWRkIGEgImNvbW1pdGlkOiIgZmllbGQgb24gdG8gdGhlIGVuZCBvZiB0aGUKKyMgICAgImRhdGU6IiBsaW5lIChhZnRlciAibGluZXM6IikuICBNYXliZSB3ZSBjb3VsZCBzdGljayBnaXQncyBjb21taXQgaWQKKyMgICAgaW4gaXQ/ICBPciBkb2VzIENWUyBleHBlY3QgYSBjZXJ0YWluIG51bWJlciBvZiBiaXRzICh0b28gZmV3IGZvcgorIyAgICBhIGZ1bGwgc2hhMSk/CisjCisjIEdpdmVuIHRoZSBhYm92ZSwgZXhwZWN0IHRoZSBmb2xsb3dpbmcgdGVzdCB0byBicmVhayBpZiBnaXQtY3Zzc2VydmVyJ3MKKyMgbG9nIG91dHB1dCBpcyBpbXByb3ZlZC4gIFRoZSB0ZXN0IGlzIGp1c3QgdG8gZW5zdXJlIGl0IGRvZXNuJ3QKKyMgYWNjaWRlbnRhbGx5IGdldCB3b3JzZS4KKworc2VkIC1lICdzL154Ly8nIC1lICdzL1NQJC8gLycgPiAiJFdPUktESVIvZXhwZWN0IiA8PEVPRgoreAoreFJDUyBmaWxlOiAkV09SS0RJUi9naXRjdnMuZ2l0L21hc3Rlci9tZXJnZSx2Cit4V29ya2luZyBmaWxlOiBtZXJnZQoreGhlYWQ6IDEuNAoreGJyYW5jaDoKK3hsb2Nrczogc3RyaWN0Cit4YWNjZXNzIGxpc3Q6Cit4c3ltYm9saWMgbmFtZXM6Cit4a2V5d29yZCBzdWJzdGl0dXRpb246IGt2Cit4dG90YWwgcmV2aXNpb25zOiA0OwlzZWxlY3RlZCByZXZpc2lvbnM6IDQKK3hkZXNjcmlwdGlvbjoKK3gtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit4cmV2aXNpb24gMS40Cit4ZGF0ZTogX19EQVRFX187ICBhdXRob3I6IGF1dGhvcjsgIHN0YXRlOiBFeHA7ICBsaW5lczogKzIgLTMKK3gKK3hNZXJnZSB0ZXN0IChuby1vcCkKK3hTUAoreC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3hyZXZpc2lvbiAxLjMKK3hkYXRlOiBfX0RBVEVfXzsgIGF1dGhvcjogYXV0aG9yOyAgc3RhdGU6IEV4cDsgIGxpbmVzOiArMiAtMworeAoreE1lcmdlIHRlc3QgKGNvbmZsaWN0KQoreFNQCit4LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoreHJldmlzaW9uIDEuMgoreGRhdGU6IF9fREFURV9fOyAgYXV0aG9yOiBhdXRob3I7ICBzdGF0ZTogRXhwOyAgbGluZXM6ICsyIC0zCit4Cit4TWVyZ2UgdGVzdCAobWVyZ2UpCit4U1AKK3gtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit4cmV2aXNpb24gMS4xCit4ZGF0ZTogX19EQVRFX187ICBhdXRob3I6IGF1dGhvcjsgIHN0YXRlOiBFeHA7ICBsaW5lczogKzIgLTMKK3gKK3hNZXJnZSB0ZXN0IChwcmUtbWVyZ2UpCit4U1AKK3g9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRU9GCitleHBlY3RTdGF0PSIkPyIKKworY2QgIiRXT1JLRElSIgordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3ZzIGxvZycgJworICAgIGNkIGN2c3dvcmsgJiYKKyAgICB0ZXN0IHgiJGV4cGVjdFN0YXQiID0geCIwIiAmJgorICAgIEdJVF9DT05GSUc9IiRnaXRfY29uZmlnIiBjdnMgbG9nIG1lcmdlID4uLi9vdXQgJiYKKyAgICBzZWQgLWUgInMlMlswLTldWzAtOV1bMC05XS9bMDFdWzAtOV0vWzAtM11bMC05XSBbMC0yXVswLTldOlswLTVdWzAtOV06WzAtNV1bMC05XSVfX0RBVEVfXyUiIC4uL291dCA+IC4uL2FjdHVhbCAmJgorICAgIHRlc3RfY21wIC4uL2V4cGVjdCAuLi9hY3R1YWwKKycKKworIy0tLS0tLS0tLS0tLQogIyBDVlMgQU5OT1RBVEUKICMtLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvdC90OTQwMS1naXQtY3Zzc2VydmVyLWNybGYuc2ggYi90L3Q5NDAxLWdpdC1jdnNzZXJ2ZXItY3JsZi5zaAppbmRleCBmZjZkNmZiLi44YzNkYjc2IDEwMDc1NQotLS0gYS90L3Q5NDAxLWdpdC1jdnNzZXJ2ZXItY3JsZi5zaAorKysgYi90L3Q5NDAxLWdpdC1jdnNzZXJ2ZXItY3JsZi5zaApAQCAtMzgsNiArMzgsMjUgQEAKICAgICBmaQogfQogCitjaGVja19zdGF0dXNfb3B0aW9ucygpIHsKKyAgICAoY2QgIiQxIiAmJgorICAgIEdJVF9DT05GSUc9IiRnaXRfY29uZmlnIiBjdnMgLVEgc3RhdHVzICIkMiIgPiAiJHtXT1JLRElSfS9zdGF0dXMub3V0IiAyPiYxCisgICAgKQorICAgIGlmIFsgeCIkPyIgIT0geCIwIiBdIDsgdGhlbgorCWVjaG8gIkVycm9yIGZyb20gY3ZzIHN0YXR1czogJDEgJDIiID4+ICIke1dPUktESVJ9L21hcmtlZC5sb2ciCisJcmV0dXJuIDE7CisgICAgZmkKKyAgICBnb3Q9IiQoc2VkIC1uIC1lICdzL15bIAldKlN0aWNreSBPcHRpb25zOlsgCV0qLy9wJyAiJHtXT1JLRElSfS9zdGF0dXMub3V0IikiCisgICAgZXhwZWN0PSIkMyIKKyAgICBpZiBbIHgiJGV4cGVjdCIgPSB4IiIgXSA7IHRoZW4KKwlleHBlY3Q9Iihub25lKSIKKyAgICBmaQorICAgIHRlc3QgeCIkZ290IiA9IHgiJGV4cGVjdCIKKyAgICBzdGF0PSQ/CisgICAgZWNobyAiY3ZzIHN0YXR1czogJDEgJDIgJHN0YXQgJyQzJyAnJGdvdCciID4+ICIke1dPUktESVJ9L21hcmtlZC5sb2ciCisgICAgcmV0dXJuICRzdGF0Cit9CisKIGN2cyA+L2Rldi9udWxsIDI+JjEKIGlmIHRlc3QgJD8gLW5lIDEKIHRoZW4KQEAgLTY1LDYgKzg0LDcgQEAKIAogcm0gLXJmICIkQ1ZTV09SSyIgIiRTRVJWRVJESVIiCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJworICAgIGdpdCBjb25maWcgcHVzaC5kZWZhdWx0IG1hdGNoaW5nICYmCiAgICAgZWNobyAiU2ltcGxlIHRleHQgZmlsZSIgPnRleHRmaWxlLmMgJiYKICAgICBlY2hvICJGaWxlIHdpdGggZW1iZWRkZWQgTlVMOiBRIDwtIHRoZXJlIiB8IHFfdG9fbnVsID4gYmluZmlsZS5iaW4gJiYKICAgICBta2RpciBzdWJkaXIgJiYKQEAgLTIzMyw2ICsyNTMsMjIgQEAKICAgICBtYXJrZWRfYXMgY3Zzd29yazIvc3ViZGlyIG5ld2ZpbGUuYyAiIgogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgc3RhdHVzIC0gc3RpY2t5IG9wdGlvbnMnICcKKyAgICBjaGVja19zdGF0dXNfb3B0aW9ucyBjdnN3b3JrMiB0ZXh0ZmlsZS5jICIiICYmCisgICAgY2hlY2tfc3RhdHVzX29wdGlvbnMgY3Zzd29yazIgYmluZmlsZS5iaW4gLWtiICYmCisgICAgY2hlY2tfc3RhdHVzX29wdGlvbnMgY3Zzd29yazIgLmdpdGF0dHJpYnV0ZXMgIiIgJiYKKyAgICBjaGVja19zdGF0dXNfb3B0aW9ucyBjdnN3b3JrMiBtaXhlZFVwLmMgLWtiICYmCisgICAgY2hlY2tfc3RhdHVzX29wdGlvbnMgY3Zzd29yazIgbXVsdGlsaW5lLmMgLWtiICYmCisgICAgY2hlY2tfc3RhdHVzX29wdGlvbnMgY3Zzd29yazIgbXVsdGlsaW5lVHh0LmMgIiIgJiYKKyAgICBjaGVja19zdGF0dXNfb3B0aW9ucyBjdnN3b3JrMi9zdWJkaXIgd2l0aENyLmJpbiAta2IgJiYKKyAgICBjaGVja19zdGF0dXNfb3B0aW9ucyBjdnN3b3JrMiBzdWJkaXIvd2l0aENyLmJpbiAta2IgJiYKKyAgICBjaGVja19zdGF0dXNfb3B0aW9ucyBjdnN3b3JrMi9zdWJkaXIgZmlsZS5oICIiICYmCisgICAgY2hlY2tfc3RhdHVzX29wdGlvbnMgY3Zzd29yazIgc3ViZGlyL2ZpbGUuaCAiIiAmJgorICAgIGNoZWNrX3N0YXR1c19vcHRpb25zIGN2c3dvcmsyL3N1YmRpciB1bnNwZWNpZmllZC5vdGhlciAiIiAmJgorICAgIGNoZWNrX3N0YXR1c19vcHRpb25zIGN2c3dvcmsyL3N1YmRpciBuZXdmaWxlLmJpbiAiIiAmJgorICAgIGNoZWNrX3N0YXR1c19vcHRpb25zIGN2c3dvcmsyL3N1YmRpciBuZXdmaWxlLmMgIiIKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIHRleHQgKGd1ZXNzKScgJwogICAgIChjZCBjdnN3b3JrICYmCiAgICAgZWNobyAic2ltcGxlVGV4dCIgPiBzaW1wbGVUZXh0LmMgJiYKZGlmZiAtLWdpdCBhL3QvdDk0MDItZ2l0LWN2c3NlcnZlci1yZWZzLnNoIGIvdC90OTQwMi1naXQtY3Zzc2VydmVyLXJlZnMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzM1YTAxOAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDk0MDItZ2l0LWN2c3NlcnZlci1yZWZzLnNoCkBAIC0wLDAgKzEsNTUxIEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0LWN2c3NlcnZlciBhbmQgZ2l0IHJlZnNwZWNzCisKK3Rlc3RzIGFiaWxpdHkgZm9yIGdpdC1jdnNzZXJ2ZXIgdG8gc3dpdGNoIGJldHdlZW4gYW5kIGNvbXBhcmUKK3RhZ3MsIGJyYW5jaGVzIGFuZCBvdGhlciBnaXQgcmVmc3BlY3MnCisKKy4gLi90ZXN0LWxpYi5zaAorCisjIyMjIyMjIyMKKworY2hlY2tfc3RhcnRfdHJlZSgpIHsKKwlybSAtZiAiJFdPUktESVIvbGlzdC5leHBlY3RlZCIKKwllY2hvICJzdGFydCAkMSIgPj4iJHtXT1JLRElSfS9jaGVjay5sb2ciCit9CisKK2NoZWNrX2ZpbGUoKSB7CisJc2FuZGJveD0iJDEiCisJZmlsZT0iJDIiCisJdmVyPSIkMyIKKwlHSVRfRElSPSRTRVJWRVJESVIgZ2l0IHNob3cgIiR7dmVyfToke2ZpbGV9IiBcCisJCT4iJFdPUktESVIvY2hlY2suZ290IiAyPiIkV09SS0RJUi9jaGVjay5zdGRlcnIiCisJdGVzdF9jbXAgIiRXT1JLRElSL2NoZWNrLmdvdCIgIiRzYW5kYm94LyRmaWxlIgorCXN0YXQ9JD8KKwllY2hvICJjaGVja19maWxlICRzYW5kYm94ICRmaWxlICR2ZXIgOiAkc3RhdCIgPj4iJFdPUktESVIvY2hlY2subG9nIgorCWVjaG8gIiRmaWxlIiA+PiIkV09SS0RJUi9saXN0LmV4cGVjdGVkIgorCXJldHVybiAkc3RhdAorfQorCitjaGVja19lbmRfdHJlZSgpIHsKKwlzYW5kYm94PSIkMSIgJiYKKwlmaW5kICIkc2FuZGJveCIgLW5hbWUgQ1ZTIC1wcnVuZSAtbyAtdHlwZSBmIC1wcmludCA+IiRXT1JLRElSL2xpc3QuYWN0dWFsIiAmJgorCXNvcnQgPCIkV09SS0RJUi9saXN0LmV4cGVjdGVkIiA+ZXhwZWN0ZWQgJiYKKwlzb3J0IDwiJFdPUktESVIvbGlzdC5hY3R1YWwiIHwgc2VkIC1lICJzJWN2c3dvcmsvJSUiID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwgJiYKKwlybSBleHBlY3RlZCBhY3R1YWwKK30KKworY2hlY2tfZW5kX2Z1bGxfdHJlZSgpIHsKKwlzYW5kYm94PSIkMSIgJiYKKwlzb3J0IDwiJFdPUktESVIvbGlzdC5leHBlY3RlZCIgPmV4cGVjdGVkICYmCisJZmluZCAiJHNhbmRib3giIC1uYW1lIENWUyAtcHJ1bmUgLW8gLXR5cGUgZiAtcHJpbnQgfAorCXNlZCAtZSAicyUkc2FuZGJveC8lJSIgfCBzb3J0ID5hY3QxICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0MSAmJgorCWdpdCBscy10cmVlIC0tbmFtZS1vbmx5IC1yICIkMiIgfCBzb3J0ID5hY3QyICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0MiAmJgorCXJtIGV4cGVjdGVkIGFjdDEgYWN0MgorfQorCisjIyMjIyMjIyMKKworY2hlY2tfZGlmZigpIHsKKwlkaWZmRmlsZT0iJDEiCisJdk9sZD0iJDIiCisJdk5ldz0iJDMiCisJcm0gLXJmIGRpZmZTYW5kYm94CisJZ2l0IGNsb25lIC1xIC1uIC4gZGlmZlNhbmRib3ggJiYKKwkoCisJCWNkIGRpZmZTYW5kYm94ICYmCisJCWdpdCBjaGVja291dCAiJHZPbGQiICYmCisJCWdpdCBhcHBseSAtcDAgLS1pbmRleCA8Ii4uLyRkaWZmRmlsZSIgJiYKKwkJZ2l0IGRpZmYgLS1leGl0LWNvZGUgIiR2TmV3IgorCSkgPmNoZWNrX2RpZmZfYXBwbHkub3V0IDI+JjEKK30KKworIyMjIyMjIyMjCisKK2N2cyA+L2Rldi9udWxsIDI+JjEKK2lmIHRlc3QgJD8gLW5lIDEKK3RoZW4KKwlza2lwX2FsbD0nc2tpcHBpbmcgZ2l0LWN2c3NlcnZlciB0ZXN0cywgY3ZzIG5vdCBmb3VuZCcKKwl0ZXN0X2RvbmUKK2ZpCitpZiAhIHRlc3RfaGF2ZV9wcmVyZXEgUEVSTAordGhlbgorCXNraXBfYWxsPSdza2lwcGluZyBnaXQtY3Zzc2VydmVyIHRlc3RzLCBwZXJsIG5vdCBhdmFpbGFibGUnCisJdGVzdF9kb25lCitmaQorIiRQRVJMX1BBVEgiIC1lICd1c2UgREJJOyB1c2UgREJEOjpTUUxpdGUnID4vZGV2L251bGwgMj4mMSB8fCB7CisJc2tpcF9hbGw9J3NraXBwaW5nIGdpdC1jdnNzZXJ2ZXIgdGVzdHMsIFBlcmwgU1FMaXRlIGludGVyZmFjZSB1bmF2YWlsYWJsZScKKwl0ZXN0X2RvbmUKK30KKwordW5zZXQgR0lUX0RJUiBHSVRfQ09ORklHCitXT1JLRElSPSQocHdkKQorU0VSVkVSRElSPSQocHdkKS9naXRjdnMuZ2l0CitnaXRfY29uZmlnPSIkU0VSVkVSRElSL2NvbmZpZyIKK0NWU1JPT1Q9Ijpmb3JrOiRTRVJWRVJESVIiCitDVlNXT1JLPSIkKHB3ZCkvY3Zzd29yayIKK0NWU19TRVJWRVI9Z2l0LWN2c3NlcnZlcgorZXhwb3J0IENWU1JPT1QgQ1ZTX1NFUlZFUgorCitybSAtcmYgIiRDVlNXT1JLIiAiJFNFUlZFUkRJUiIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHYxLCBiMScgJworCWVjaG8gIlNpbXBsZSB0ZXh0IGZpbGUiID50ZXh0ZmlsZS5jICYmCisJZWNobyAidDIiID50MiAmJgorCW1rZGlyIGFkaXIgJiYKKwllY2hvICJhZGlyL2FmaWxlIGxpbmUxIiA+YWRpci9hZmlsZSAmJgorCWVjaG8gImFkaXIvYWZpbGUgbGluZTIiID4+YWRpci9hZmlsZSAmJgorCWVjaG8gImFkaXIvYWZpbGUgbGluZTMiID4+YWRpci9hZmlsZSAmJgorCWVjaG8gImFkaXIvYWZpbGUgbGluZTQiID4+YWRpci9hZmlsZSAmJgorCWVjaG8gImFkaXIvYTJmaWxlIiA+PmFkaXIvYTJmaWxlICYmCisJbWtkaXIgYWRpci9iZGlyICYmCisJZWNobyAiYWRpci9iZGlyL2JmaWxlIGxpbmUgMSIgPmFkaXIvYmRpci9iZmlsZSAmJgorCWVjaG8gImFkaXIvYmRpci9iZmlsZSBsaW5lIDIiID4+YWRpci9iZGlyL2JmaWxlICYmCisJZWNobyAiYWRpci9iZGlyL2IyZmlsZSIgPmFkaXIvYmRpci9iMmZpbGUgJiYKKwlnaXQgYWRkIHRleHRmaWxlLmMgdDIgYWRpciAmJgorCWdpdCBjb21taXQgLXEgLW0gIkZpcnN0IENvbW1pdCAodjEpIiAmJgorCWdpdCB0YWcgdjEgJiYKKwlnaXQgYnJhbmNoIGIxICYmCisJZ2l0IGNsb25lIC1xIC0tYmFyZSAiJFdPUktESVIvLmdpdCIgIiRTRVJWRVJESVIiID4vZGV2L251bGwgMj4mMSAmJgorCUdJVF9ESVI9IiRTRVJWRVJESVIiIGdpdCBjb25maWcgLS1ib29sIGdpdGN2cy5lbmFibGVkIHRydWUgJiYKKwlHSVRfRElSPSIkU0VSVkVSRElSIiBnaXQgY29uZmlnIGdpdGN2cy5sb2dmaWxlICIkU0VSVkVSRElSL2dpdGN2cy5sb2ciCisnCisKK3JtIC1yZiBjdnN3b3JrCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgY28gdjEnICcKKwljdnMgLWYgLVEgY28gLXIgdjEgLWQgY3Zzd29yayBtYXN0ZXIgPmN2cy5sb2cgMj4mMSAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yayAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0ZXh0ZmlsZS5jIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHQyIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYWZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hMmZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2JmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iMmZpbGUgdjEgJiYKKwljaGVja19lbmRfdHJlZSBjdnN3b3JrCisnCisKK3JtIC1yZiBjdnN3b3JrCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgY28gYjEnICcKKwljdnMgLWYgY28gLXIgYjEgLWQgY3Zzd29yayBtYXN0ZXIgPmN2cy5sb2cgMj4mMSAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yayAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0ZXh0ZmlsZS5jIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHQyIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYWZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hMmZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2JmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iMmZpbGUgdjEgJiYKKwljaGVja19lbmRfdHJlZSBjdnN3b3JrCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyBjbyBiMSBbY3Zzd29yazNdJyAnCisJY3ZzIC1mIGNvIC1yIGIxIC1kIGN2c3dvcmszIG1hc3RlciA+Y3ZzLmxvZyAyPiYxICYmCisJY2hlY2tfc3RhcnRfdHJlZSBjdnN3b3JrMyAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgdGV4dGZpbGUuYyB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgdDIgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmszIGFkaXIvYWZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmszIGFkaXIvYTJmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMyBhZGlyL2JkaXIvYmZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmszIGFkaXIvYmRpci9iMmZpbGUgdjEgJiYKKwljaGVja19lbmRfZnVsbF90cmVlIGN2c3dvcmszIHYxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2VkaXQgY3Zzd29yazMgYW5kIHNhdmUgZGlmZicgJworCSgKKwkJY2QgY3Zzd29yazMgJiYKKwkJc2VkIC1lICJzL2xpbmUxL2xpbmUxIC0gZGF0YS8iIGFkaXIvYWZpbGUgPmFkaXIvYWZpbGVORVcgJiYKKwkJbXYgLWYgYWRpci9hZmlsZU5FVyBhZGlyL2FmaWxlICYmCisJCWVjaG8gImFmaWxlNSIgPmFkaXIvYWZpbGU1ICYmCisJCXJtIHQyICYmCisJCWN2cyAtZiBhZGQgYWRpci9hZmlsZTUgJiYKKwkJY3ZzIC1mIHJtIHQyICYmCisJCSEgY3ZzIC1mIGRpZmYgLU4gLXUgPiIkV09SS0RJUi9jdnN3b3JrM2VkaXQuZGlmZiIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHYxLjIgb24gYjEnICcKKwlnaXQgY2hlY2tvdXQgYjEgJiYKKwllY2hvICJuZXcgdjEuMiIgPnQzICYmCisJcm0gdDIgJiYKKwlzZWQgLWUgInMvbGluZTMvbGluZTMgLSBtb3JlIGRhdGEvIiBhZGlyL2FmaWxlID5hZGlyL2FmaWxlTkVXICYmCisJbXYgLWYgYWRpci9hZmlsZU5FVyBhZGlyL2FmaWxlICYmCisJcm0gYWRpci9hMmZpbGUgJiYKKwllY2hvICJhM2ZpbGUiID4+YWRpci9hM2ZpbGUgJiYKKwllY2hvICJiZmlsZSBsaW5lIDMiID4+YWRpci9iZGlyL2JmaWxlICYmCisJcm0gYWRpci9iZGlyL2IyZmlsZSAmJgorCWVjaG8gImIzZmlsZSIgPmFkaXIvYmRpci9iM2ZpbGUgJiYKKwlta2RpciBjZGlyICYmCisJZWNobyAiY2Rpci9jZmlsZSIgPmNkaXIvY2ZpbGUgJiYKKwlnaXQgYWRkIC1BIGNkaXIgYWRpciB0MyB0MiAmJgorCWdpdCBjb21taXQgLXEgLW0gJ3YxLjInICYmCisJZ2l0IHRhZyB2MS4yICYmCisJZ2l0IHB1c2ggLS10YWdzIGdpdGN2cy5naXQgYjE6YjEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3ZzIC1mIHVwIChvbiBiMSBhZGlyKScgJworCSggY2QgY3Zzd29yay9hZGlyICYmIGN2cyAtZiB1cCAtZCApID5jdnMubG9nIDI+JjEgJiYKKwljaGVja19zdGFydF90cmVlIGN2c3dvcmsgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdGV4dGZpbGUuYyB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0MiB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2FmaWxlIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hM2ZpbGUgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYmZpbGUgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYjNmaWxlIHYxLjIgJiYKKwljaGVja19lbmRfdHJlZSBjdnN3b3JrCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyB1cCAob24gYjEgLyknICcKKwkoIGNkIGN2c3dvcmsgJiYgY3ZzIC1mIHVwIC1kICkgPmN2cy5sb2cgMj4mMSAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yayAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0ZXh0ZmlsZS5jIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdDMgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2FmaWxlIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hM2ZpbGUgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYmZpbGUgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYjNmaWxlIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgY2Rpci9jZmlsZSB2MS4yICYmCisJY2hlY2tfZW5kX3RyZWUgY3Zzd29yaworJworCisjIE1ha2Ugc3VyZSAiQ1ZTL1RhZyIgZmlsZXMgZGlkbid0IGdldCBtZXNzZWQgdXA6Cit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgdXAgKG9uIGIxIC8pIChhZ2FpbjsgY2hlY2sgQ1ZTL1RhZyBmaWxlcyknICcKKwkoIGNkIGN2c3dvcmsgJiYgY3ZzIC1mIHVwIC1kICkgPmN2cy5sb2cgMj4mMSAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yayAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0ZXh0ZmlsZS5jIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdDMgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2FmaWxlIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hM2ZpbGUgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYmZpbGUgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYjNmaWxlIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgY2Rpci9jZmlsZSB2MS4yICYmCisJY2hlY2tfZW5kX3RyZWUgY3Zzd29yaworJworCisjIHVwZGF0ZSB0byBhbm90aGVyIHZlcnNpb246Cit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgdXAgLXIgdjEnICcKKwkoIGNkIGN2c3dvcmsgJiYgY3ZzIC1mIHVwIC1yIHYxICkgPmN2cy5sb2cgMj4mMSAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yayAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0ZXh0ZmlsZS5jIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHQyIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYWZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hMmZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2JmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iMmZpbGUgdjEgJiYKKwljaGVja19lbmRfdHJlZSBjdnN3b3JrCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyB1cCcgJworCSggY2QgY3Zzd29yayAmJiBjdnMgLWYgdXAgKSA+Y3ZzLmxvZyAyPiYxICYmCisJY2hlY2tfc3RhcnRfdHJlZSBjdnN3b3JrICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHRleHRmaWxlLmMgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdDIgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2EyZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYmZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2IyZmlsZSB2MSAmJgorCWNoZWNrX2VuZF90cmVlIGN2c3dvcmsKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3ZzIHVwIChhZ2FpbjsgY2hlY2sgQ1ZTL1RhZyBmaWxlcyknICcKKwkoIGNkIGN2c3dvcmsgJiYgY3ZzIC1mIHVwIC1kICkgPmN2cy5sb2cgMj4mMSAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yayAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0ZXh0ZmlsZS5jIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHQyIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYWZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hMmZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2JmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iMmZpbGUgdjEgJiYKKwljaGVja19lbmRfdHJlZSBjdnN3b3JrCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHNpbXBsZSBiMicgJworCWdpdCBicmFuY2ggYjIgdjEgJiYKKwlnaXQgcHVzaCAtLXRhZ3MgZ2l0Y3ZzLmdpdCBiMjpiMgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgY28gYjIgW2ludG8gY3Zzd29yazJdJyAnCisJY3ZzIC1mIGNvIC1yIGIyIC1kIGN2c3dvcmsyIG1hc3RlciA+Y3ZzLmxvZyAyPiYxICYmCisJY2hlY2tfc3RhcnRfdHJlZSBjdnN3b3JrICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHRleHRmaWxlLmMgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdDIgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2EyZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYmZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2IyZmlsZSB2MSAmJgorCWNoZWNrX2VuZF90cmVlIGN2c3dvcmsKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncm9vdCBkaXIgZWRpdCBbY3Zzd29yazJdJyAnCisJKAorCQljZCBjdnN3b3JrMiAmJiBlY2hvICJMaW5lIDIiID4+dGV4dGZpbGUuYyAmJgorCQkhIGN2cyAtZiBkaWZmIC11ID4iJFdPUktESVIvY3ZzRWRpdDEuZGlmZiIgJiYKKwkJY3ZzIC1mIGNvbW1pdCAtbSAiZWRpdCB0ZXh0ZmlsZS5jIiB0ZXh0ZmlsZS5jCisJKSA+Y3ZzRWRpdDEubG9nIDI+JjEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncm9vdCBkaXIgcm0gZmlsZSBbY3Zzd29yazJdJyAnCisJKAorCQljZCBjdnN3b3JrMiAmJgorCQljdnMgLWYgcm0gLWYgdDIgJiYKKwkJY3ZzIC1mIGRpZmYgLXUgPi4uL2N2c0VkaXQyLWVtcHR5LmRpZmYgJiYKKwkJISBjdnMgLWYgZGlmZiAtTiAtdSA+IiRXT1JLRElSL2N2c0VkaXQyLU4uZGlmZiIgJiYKKwkJY3ZzIC1mIGNvbW1pdCAtbSAicm0gdDIiCisJKSA+Y3ZzRWRpdDIubG9nIDI+JjEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3ViZGlyIGVkaXQvYWRkL3JtIGZpbGVzIFtjdnN3b3JrMl0nICcKKwkoCisJCWNkIGN2c3dvcmsyICYmCisJCXNlZCAtZSAicy9saW5lIDEvbGluZSAxICh2MikvIiBhZGlyL2JkaXIvYmZpbGUgPmFkaXIvYmRpci9iZmlsZU5FVyAmJgorCQltdiAtZiBhZGlyL2JkaXIvYmZpbGVORVcgYWRpci9iZGlyL2JmaWxlICYmCisJCXJtIGFkaXIvYmRpci9iMmZpbGUgJiYKKwkJY2QgYWRpciAmJgorCQljdnMgLWYgcm0gYmRpci9iMmZpbGUgJiYKKwkJZWNobyAiNHRoIGZpbGUiID5iZGlyL2I0ZmlsZSAmJgorCQljdnMgLWYgYWRkIGJkaXIvYjRmaWxlICYmCisJCSEgY3ZzIC1mIGRpZmYgLU4gLXUgPiIkV09SS0RJUi9jdnNFZGl0My5kaWZmIiAmJgorCQlnaXQgZmV0Y2ggZ2l0Y3ZzLmdpdCBiMjpiMiAmJgorCQkoCisJCSAgY2QgLi4gJiYKKwkJICAhIGN2cyAtZiBkaWZmIC11IC1OIC1yIHYxLjIgPiIkV09SS0RJUi9jdnNFZGl0My12MS4yLmRpZmYiICYmCisJCSAgISBjdnMgLWYgZGlmZiAtdSAtTiAtciB2MS4yIC1yIHYxID4iJFdPUktESVIvY3ZzRWRpdDMtdjEuMi12MS5kaWZmIgorCQkpICYmCisJCWN2cyAtZiBjb21taXQgLW0gInZhcmlvdXMgYWRkL3JtL2VkaXQiCisJKSA+Y3ZzLmxvZyAyPiYxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZhbGlkYXRlIHJlc3VsdCBvZiBlZGl0cyBbY3Zzd29yazJdJyAnCisJZ2l0IGZldGNoIGdpdGN2cy5naXQgYjI6YjIgJiYKKwlnaXQgdGFnIHYyIGIyICYmCisJZ2l0IHB1c2ggLS10YWdzIGdpdGN2cy5naXQgYjI6YjIgJiYKKwljaGVja19zdGFydF90cmVlIGN2c3dvcmsyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMiB0ZXh0ZmlsZS5jIHYyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMiBhZGlyL2FmaWxlIHYyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMiBhZGlyL2EyZmlsZSB2MiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazIgYWRpci9iZGlyL2JmaWxlIHYyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMiBhZGlyL2JkaXIvYjRmaWxlIHYyICYmCisJY2hlY2tfZW5kX2Z1bGxfdHJlZSBjdnN3b3JrMiB2MgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2YWxpZGF0ZSBiYXNpYyBkaWZmcyBzYXZlZCBkdXJpbmcgYWJvdmUgY3Zzd29yazIgZWRpdHMnICcKKwl0ZXN0ICQoZ3JlcCBJbmRleDogY3ZzRWRpdDEuZGlmZiB8IHdjIC1sKSA9IDEgJiYKKwl0ZXN0ICEgLXMgY3ZzRWRpdDItZW1wdHkuZGlmZiAmJgorCXRlc3QgJChncmVwIEluZGV4OiBjdnNFZGl0Mi1OLmRpZmYgfCB3YyAtbCkgPSAxICYmCisJdGVzdCAkKGdyZXAgSW5kZXg6IGN2c0VkaXQzLmRpZmYgfCB3YyAtbCkgPSAzICYmCisJcm0gLXJmIGRpZmZTYW5kYm94ICYmCisJZ2l0IGNsb25lIC1xIC1uIC4gZGlmZlNhbmRib3ggJiYKKwkoCisJCWNkIGRpZmZTYW5kYm94ICYmCisJCWdpdCBjaGVja291dCB2MSAmJgorCQlnaXQgYXBwbHkgLXAwIC0taW5kZXggPCIkV09SS0RJUi9jdnNFZGl0MS5kaWZmIiAmJgorCQlnaXQgYXBwbHkgLXAwIC0taW5kZXggPCIkV09SS0RJUi9jdnNFZGl0Mi1OLmRpZmYiICYmCisJCWdpdCBhcHBseSAtcDAgLS1kaXJlY3Rvcnk9YWRpciAtLWluZGV4IDwiJFdPUktESVIvY3ZzRWRpdDMuZGlmZiIgJiYKKwkJZ2l0IGRpZmYgLS1leGl0LWNvZGUgdjIKKwkpID4iY2hlY2tfZGlmZl9hcHBseS5vdXQiIDI+JjEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndmFsaWRhdGUgdjEuMiBkaWZmIHNhdmVkIGR1cmluZyBsYXN0IGN2c3dvcmsyIGVkaXQnICcKKwl0ZXN0ICQoZ3JlcCBJbmRleDogY3ZzRWRpdDMtdjEuMi5kaWZmIHwgd2MgLWwpID0gOSAmJgorCWNoZWNrX2RpZmYgY3ZzRWRpdDMtdjEuMi5kaWZmIHYxLjIgdjIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndmFsaWRhdGUgdjEuMiB2MSBkaWZmIHNhdmVkIGR1cmluZyBsYXN0IGN2c3dvcmsyIGVkaXQnICcKKwl0ZXN0ICQoZ3JlcCBJbmRleDogY3ZzRWRpdDMtdjEuMi12MS5kaWZmIHwgd2MgLWwpID0gOSAmJgorCWNoZWNrX2RpZmYgY3ZzRWRpdDMtdjEuMi12MS5kaWZmIHYxLjIgdjEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3ZzIHVwIFtjdnN3b3JrMl0nICcKKwkoIGNkIGN2c3dvcmsyICYmIGN2cyAtZiB1cCApID5jdnMubG9nIDI+JjEgJiYKKwljaGVja19zdGFydF90cmVlIGN2c3dvcmsyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMiB0ZXh0ZmlsZS5jIHYyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMiBhZGlyL2FmaWxlIHYyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMiBhZGlyL2EyZmlsZSB2MiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazIgYWRpci9iZGlyL2JmaWxlIHYyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMiBhZGlyL2JkaXIvYjRmaWxlIHYyICYmCisJY2hlY2tfZW5kX2Z1bGxfdHJlZSBjdnN3b3JrMiB2MgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgdXAgLXIgYjIgW2JhY2sgdG8gY3Zzd29ya10nICcKKwkoIGNkIGN2c3dvcmsgJiYgY3ZzIC1mIHVwIC1yIGIyICkgPmN2cy5sb2cgMj4mMSAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yayAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0ZXh0ZmlsZS5jIHYyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYWZpbGUgdjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hMmZpbGUgdjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2JmaWxlIHYyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iNGZpbGUgdjIgJiYKKwljaGVja19lbmRfZnVsbF90cmVlIGN2c3dvcmsgdjIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3ZzIHVwIC1yIGIxJyAnCisJKCBjZCBjdnN3b3JrICYmIGN2cyAtZiB1cCAtciBiMSApID5jdnMubG9nIDI+JjEgJiYKKwljaGVja19zdGFydF90cmVlIGN2c3dvcmsgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdGV4dGZpbGUuYyB2MS4yICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHQzIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hZmlsZSB2MS4yICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYTNmaWxlIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2JmaWxlIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2IzZmlsZSB2MS4yICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGNkaXIvY2ZpbGUgdjEuMiAmJgorCWNoZWNrX2VuZF9mdWxsX3RyZWUgY3Zzd29yayB2MS4yCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyB1cCAtQScgJworCSggY2QgY3Zzd29yayAmJiBjdnMgLWYgdXAgLUEgKSA+Y3ZzLmxvZyAyPiYxICYmCisJY2hlY2tfc3RhcnRfdHJlZSBjdnN3b3JrICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHRleHRmaWxlLmMgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdDIgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2EyZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYmZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2IyZmlsZSB2MSAmJgorCWNoZWNrX2VuZF9mdWxsX3RyZWUgY3Zzd29yayB2MQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgdXAgKGNoZWNrIENWUy9UYWcgZmlsZXMpJyAnCisJKCBjZCBjdnN3b3JrICYmIGN2cyAtZiB1cCApID5jdnMubG9nIDI+JjEgJiYKKwljaGVja19zdGFydF90cmVlIGN2c3dvcmsgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdGV4dGZpbGUuYyB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0MiB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2FmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYTJmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYjJmaWxlIHYxICYmCisJY2hlY2tfZW5kX2Z1bGxfdHJlZSBjdnN3b3JrIHYxCisnCisKKyMgVGhpcyBpcyBub3QgcmVhbGx5IGxlZ2FsIENWUywgYnV0IGl0IHNlZW1zIHRvIHdvcmsgYW55d2F5OgordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3ZzIHVwIC1yIGhlYWRzL2IxJyAnCisJKCBjZCBjdnN3b3JrICYmIGN2cyAtZiB1cCAtciBoZWFkcy9iMSApID5jdnMubG9nIDI+JjEgJiYKKwljaGVja19zdGFydF90cmVlIGN2c3dvcmsgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdGV4dGZpbGUuYyB2MS4yICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHQzIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hZmlsZSB2MS4yICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYTNmaWxlIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2JmaWxlIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2IzZmlsZSB2MS4yICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGNkaXIvY2ZpbGUgdjEuMiAmJgorCWNoZWNrX2VuZF9mdWxsX3RyZWUgY3Zzd29yayB2MS4yCisnCisKKyMgQnV0IHRoaXMgc2hvdWxkIHdvcmsgZXZlbiBpZiBDVlMgY2xpZW50IGNoZWNrcyAtciBtb3JlIGNhcmVmdWxseToKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyB1cCAtciBoZWFkc18tcy1iMiAoY3Zzc2VydmVyIGVzY2FwZSBtZWNoYW5pc20pJyAnCisJKCBjZCBjdnN3b3JrICYmIGN2cyAtZiB1cCAtciBoZWFkc18tcy1iMiApID5jdnMubG9nIDI+JjEgJiYKKwljaGVja19zdGFydF90cmVlIGN2c3dvcmsgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdGV4dGZpbGUuYyB2MiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2FmaWxlIHYyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYTJmaWxlIHYyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iZmlsZSB2MiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYjRmaWxlIHYyICYmCisJY2hlY2tfZW5kX2Z1bGxfdHJlZSBjdnN3b3JrIHYyCisnCisKK3YxaGFzaD0kKGdpdCByZXYtcGFyc2UgdjEpCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgdXAgLXIgJChnaXQgcmV2LXBhcnNlIHYxKScgJworCXRlc3QgLW4gIiR2MWhhc2giICYmCisJKCBjZCBjdnN3b3JrICYmIGN2cyAtZiB1cCAtciAiJHYxaGFzaCIgKSA+Y3ZzLmxvZyAyPiYxICYmCisJY2hlY2tfc3RhcnRfdHJlZSBjdnN3b3JrICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHRleHRmaWxlLmMgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdDIgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2EyZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYmZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2IyZmlsZSB2MSAmJgorCWNoZWNrX2VuZF9mdWxsX3RyZWUgY3Zzd29yayB2MQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgZGlmZiAtciB2MSAtdScgJworCSggY2QgY3Zzd29yayAmJiBjdnMgLWYgZGlmZiAtciB2MSAtdSApID5jdnNEaWZmLm91dCAyPmN2cy5sb2cgJiYKKwl0ZXN0ICEgLXMgY3ZzRGlmZi5vdXQgJiYKKwl0ZXN0ICEgLXMgY3ZzLmxvZworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgZGlmZiAtTiAtciB2MiAtdScgJworCSggY2QgY3Zzd29yayAmJiAhIGN2cyAtZiBkaWZmIC1OIC1yIHYyIC11ICkgPmN2c0RpZmYub3V0IDI+Y3ZzLmxvZyAmJgorCXRlc3QgISAtcyBjdnMubG9nICYmCisJdGVzdCAtcyBjdnNEaWZmLm91dCAmJgorCWNoZWNrX2RpZmYgY3ZzRGlmZi5vdXQgdjIgdjEgPmNoZWNrX2RpZmYub3V0IDI+JjEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3ZzIGRpZmYgLU4gLXIgdjIgLXIgdjEuMicgJworCSggY2QgY3Zzd29yayAmJiAhIGN2cyAtZiBkaWZmIC1OIC1yIHYyIC1yIHYxLjIgLXUgKSA+Y3ZzRGlmZi5vdXQgMj5jdnMubG9nICYmCisJdGVzdCAhIC1zIGN2cy5sb2cgJiYKKwl0ZXN0IC1zIGN2c0RpZmYub3V0ICYmCisJY2hlY2tfZGlmZiBjdnNEaWZmLm91dCB2MiB2MS4yID5jaGVja19kaWZmLm91dCAyPiYxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FwcGx5IGVhcmx5IFtjdnN3b3JrM10gZGlmZiB0byBiMycgJworCWdpdCBjbG9uZSAtcSAuIGdpdHdvcmszICYmCisJKAorCQljZCBnaXR3b3JrMyAmJgorCQlnaXQgY2hlY2tvdXQgLWIgYjMgdjEgJiYKKwkJZ2l0IGFwcGx5IC1wMCAtLWluZGV4IDwiJFdPUktESVIvY3Zzd29yazNlZGl0LmRpZmYiICYmCisJCWdpdCBjb21taXQgLW0gImN2c3dvcmszIGVkaXRzIGFwcGxpZWQiCisJKSAmJgorCWdpdCBmZXRjaCBnaXR3b3JrMyBiMzpiMyAmJgorCWdpdCB0YWcgdjMgYjMKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgW2N2c3dvcmszXSBkaWZmJyAnCisJKCBjZCBjdnN3b3JrMyAmJiAhIGN2cyAtZiBkaWZmIC1OIC11ICkgPiIkV09SS0RJUi9jdnNEaWZmLm91dCIgMj5jdnMubG9nICYmCisJdGVzdCAhIC1zIGN2cy5sb2cgJiYKKwl0ZXN0IC1zIGN2c0RpZmYub3V0ICYmCisJdGVzdCAkKGdyZXAgSW5kZXg6IGN2c0RpZmYub3V0IHwgd2MgLWwpID0gMyAmJgorCXRlc3RfY21wIGN2c0RpZmYub3V0IGN2c3dvcmszZWRpdC5kaWZmICYmCisJY2hlY2tfZGlmZiBjdnNEaWZmLm91dCB2MSB2MyA+Y2hlY2tfZGlmZi5vdXQgMj4mMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBlYXJseSBbY3Zzd29yazNdIGIzIHdpdGggYjEnICcKKwkoIGNkIGdpdHdvcmszICYmIGdpdCBtZXJnZSAibWVzc2FnZSIgSEVBRCBiMSApICYmCisJZ2l0IGZldGNoIGdpdHdvcmszIGIzOmIzICYmCisJZ2l0IHRhZyB2M21lcmdlZCBiMyAmJgorCWdpdCBwdXNoIC0tdGFncyBnaXRjdnMuZ2l0IGIzOmIzCisnCisKKyMgVGhpcyB0ZXN0IHdvdWxkIGZhaWwgaWYgY3Zzc2VydmVyIHByb3Blcmx5IGNyZWF0ZWQgYSAiLiNhZmlsZSIqIGZpbGUKKyMgZm9yIHRoZSBtZXJnZS4KKyMgVE9ETzogVmFsaWRhdGUgdGhhdCB0aGUgLiMgZmlsZSB3YXMgc2F2ZWQgcHJvcGVybHksIGFuZCB0aGVuCisjICAgZGVsZXRlL2lnbm9yZSBpdCB3aGVuIGNoZWNraW5nIHRoZSB0cmVlLgordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3ZzIHVwIGRpcnR5IFtjdnN3b3JrM10nICcKKwkoCisJCWNkIGN2c3dvcmszICYmCisJCWN2cyAtZiB1cCAmJgorCQkhIGN2cyAtZiBkaWZmIC1OIC11ID4iJFdPUktESVIvY3ZzRGlmZi5vdXQiCisJKSA+Y3ZzLmxvZyAyPiYxICYmCisJdGVzdCAtcyBjdnNEaWZmLm91dCAmJgorCXRlc3QgJChncmVwIEluZGV4OiBjdnNEaWZmLm91dCB8IHdjIC1sKSA9IDIgJiYKKwljaGVja19zdGFydF90cmVlIGN2c3dvcmszICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMyB0ZXh0ZmlsZS5jIHYzbWVyZ2VkICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMyB0MyB2M21lcmdlZCAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgYWRpci9hZmlsZSB2M21lcmdlZCAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgYWRpci9hM2ZpbGUgdjNtZXJnZWQgJiYKKwljaGVja19maWxlIGN2c3dvcmszIGFkaXIvYWZpbGU1IHYzbWVyZ2VkICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMyBhZGlyL2JkaXIvYmZpbGUgdjNtZXJnZWQgJiYKKwljaGVja19maWxlIGN2c3dvcmszIGFkaXIvYmRpci9iM2ZpbGUgdjNtZXJnZWQgJiYKKwljaGVja19maWxlIGN2c3dvcmszIGNkaXIvY2ZpbGUgdjNtZXJnZWQgJiYKKwljaGVja19lbmRfZnVsbF90cmVlIGN2c3dvcmszIHYzbWVyZ2VkCisnCisKKyMgVE9ETzogdGVzdCBjdnMgc3RhdHVzCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyBjb21taXQgW2N2c3dvcmszXScgJworCSgKKwkJY2QgY3Zzd29yazMgJiYKKwkJY3ZzIC1mIGNvbW1pdCAtbSAiZGlydHkgc2FuZGJveCBhZnRlciBhdXRvLW1lcmdlIgorCSkgPmN2cy5sb2cgMj4mMSAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yazMgJiYKKwljaGVja19maWxlIGN2c3dvcmszIHRleHRmaWxlLmMgdjNtZXJnZWQgJiYKKwljaGVja19maWxlIGN2c3dvcmszIHQzIHYzbWVyZ2VkICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMyBhZGlyL2FmaWxlIHYzbWVyZ2VkICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMyBhZGlyL2EzZmlsZSB2M21lcmdlZCAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgYWRpci9hZmlsZTUgdjNtZXJnZWQgJiYKKwljaGVja19maWxlIGN2c3dvcmszIGFkaXIvYmRpci9iZmlsZSB2M21lcmdlZCAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgYWRpci9iZGlyL2IzZmlsZSB2M21lcmdlZCAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgY2Rpci9jZmlsZSB2M21lcmdlZCAmJgorCWNoZWNrX2VuZF9mdWxsX3RyZWUgY3Zzd29yazMgdjNtZXJnZWQgJiYKKwlnaXQgZmV0Y2ggZ2l0Y3ZzLmdpdCBiMzpiNCAmJgorCWdpdCB0YWcgdjQuMSBiNCAmJgorCWdpdCBkaWZmIC0tZXhpdC1jb2RlIHY0LjEgdjNtZXJnZWQgPmNoZWNrX2RpZmZfYXBwbHkub3V0IDI+JjEKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5NTAwLWdpdHdlYi1zdGFuZGFsb25lLW5vLWVycm9ycy5zaCBiL3QvdDk1MDAtZ2l0d2ViLXN0YW5kYWxvbmUtbm8tZXJyb3JzLnNoCmluZGV4IDkwYmI2MDUuLjY3ODNjMTQgMTAwNzU1Ci0tLSBhL3QvdDk1MDAtZ2l0d2ViLXN0YW5kYWxvbmUtbm8tZXJyb3JzLnNoCisrKyBiL3QvdDk1MDAtZ2l0d2ViLXN0YW5kYWxvbmUtbm8tZXJyb3JzLnNoCkBAIC01MzksOCArNTM5LDcgQEAKIAkgdGVzdF93aGVuX2ZpbmlzaGVkICJHSVRfQ09NTUlUVEVSX05BTUU9XCJDIE8gTWl0dGVyXCIiICYmCiAJIGVjaG8gIklTTy04ODU5LTEiID4+IGZpbGUgJiYKIAkgZ2l0IGFkZCBmaWxlICYmCi0JIGdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBJU08tODg1OS0xICYmCi0JIHRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNvbmZpZyAtLXVuc2V0IGkxOG4uY29tbWl0ZW5jb2RpbmciICYmCisJIHRlc3RfY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgSVNPLTg4NTktMSAmJgogCSBnaXQgY29tbWl0IC1GICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAwL0lTTzg4NTktMS50eHQgJiYKIAkgZ2l0d2ViX3J1biAicD0uZ2l0O2E9Y29tbWl0IicKIApkaWZmIC0tZ2l0IGEvdC90OTUwMS1naXR3ZWItc3RhbmRhbG9uZS1odHRwLXN0YXR1cy5zaCBiL3QvdDk1MDEtZ2l0d2ViLXN0YW5kYWxvbmUtaHR0cC1zdGF0dXMuc2gKaW5kZXggZWY4Njk0OC4uZDNhNWJhYyAxMDA3NTUKLS0tIGEvdC90OTUwMS1naXR3ZWItc3RhbmRhbG9uZS1odHRwLXN0YXR1cy5zaAorKysgYi90L3Q5NTAxLWdpdHdlYi1zdGFuZGFsb25lLWh0dHAtc3RhdHVzLnNoCkBAIC0xMzAsNyArMTMwLDggQEAKIHRlc3RfZGVidWcgJ2NhdCBnaXR3ZWIuaGVhZGVycycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBEQVRFX1BBUlNFUiAnbW9kaWZpY2F0aW9uOiBmZWVkIGlmLW1vZGlmaWVkLXNpbmNlIChtb2RpZmllZCknICcKLQlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRT0iV2VkLCA2IEFwciAyMDA1IDIyOjE0OjEzICswMDAwIiAmJgorCUhUVFBfSUZfTU9ESUZJRURfU0lOQ0U9IldlZCwgNiBBcHIgMjAwNSAyMjoxNDoxMyArMDAwMCIgJiYKKwlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAidW5zZXQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSIgJiYKIAlnaXR3ZWJfcnVuICJwPS5naXQ7YT1hdG9tO2g9bWFzdGVyIiAmJgogCWdyZXAgIlN0YXR1czogMjAwIE9LIiBnaXR3ZWIuaGVhZGVycwpAQCAtMTM4LDcgKzEzOSw4IEBACiB0ZXN0X2RlYnVnICdjYXQgZ2l0d2ViLmhlYWRlcnMnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgREFURV9QQVJTRVIgJ21vZGlmaWNhdGlvbjogZmVlZCBpZi1tb2RpZmllZC1zaW5jZSAodW5tb2RpZmllZCknICcKLQlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRT0iVGh1LCA3IEFwciAyMDA1IDIyOjE0OjEzICswMDAwIiAmJgorCUhUVFBfSUZfTU9ESUZJRURfU0lOQ0U9IlRodSwgNyBBcHIgMjAwNSAyMjoxNDoxMyArMDAwMCIgJiYKKwlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAidW5zZXQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSIgJiYKIAlnaXR3ZWJfcnVuICJwPS5naXQ7YT1hdG9tO2g9bWFzdGVyIiAmJgogCWdyZXAgIlN0YXR1czogMzA0IE5vdCBNb2RpZmllZCIgZ2l0d2ViLmhlYWRlcnMKQEAgLTE1Myw3ICsxNTUsOCBAQAogdGVzdF9kZWJ1ZyAnY2F0IGdpdHdlYi5oZWFkZXJzJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIERBVEVfUEFSU0VSICdtb2RpZmljYXRpb246IHNuYXBzaG90IGlmLW1vZGlmaWVkLXNpbmNlIChtb2RpZmllZCknICcKLQlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRT0iV2VkLCA2IEFwciAyMDA1IDIyOjE0OjEzICswMDAwIiAmJgorCUhUVFBfSUZfTU9ESUZJRURfU0lOQ0U9IldlZCwgNiBBcHIgMjAwNSAyMjoxNDoxMyArMDAwMCIgJiYKKwlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAidW5zZXQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSIgJiYKIAlnaXR3ZWJfcnVuICJwPS5naXQ7YT1zbmFwc2hvdDtoPW1hc3RlcjtzZj10Z3oiICYmCiAJZ3JlcCAiU3RhdHVzOiAyMDAgT0siIGdpdHdlYi5oZWFkZXJzCkBAIC0xNjEsNyArMTY0LDggQEAKIHRlc3RfZGVidWcgJ2NhdCBnaXR3ZWIuaGVhZGVycycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBEQVRFX1BBUlNFUiAnbW9kaWZpY2F0aW9uOiBzbmFwc2hvdCBpZi1tb2RpZmllZC1zaW5jZSAodW5tb2RpZmllZCknICcKLQlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRT0iVGh1LCA3IEFwciAyMDA1IDIyOjE0OjEzICswMDAwIiAmJgorCUhUVFBfSUZfTU9ESUZJRURfU0lOQ0U9IlRodSwgNyBBcHIgMjAwNSAyMjoxNDoxMyArMDAwMCIgJiYKKwlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAidW5zZXQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSIgJiYKIAlnaXR3ZWJfcnVuICJwPS5naXQ7YT1zbmFwc2hvdDtoPW1hc3RlcjtzZj10Z3oiICYmCiAJZ3JlcCAiU3RhdHVzOiAzMDQgTm90IE1vZGlmaWVkIiBnaXR3ZWIuaGVhZGVycwpAQCAtMTcwLDcgKzE3NCw4IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgREFURV9QQVJTRVIgJ21vZGlmaWNhdGlvbjogdHJlZSBzbmFwc2hvdCcgJwogCUlEPWBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQURee3RyZWV9YCAmJgotCWV4cG9ydCBIVFRQX0lGX01PRElGSUVEX1NJTkNFPSJXZWQsIDYgQXByIDIwMDUgMjI6MTQ6MTMgKzAwMDAiICYmCisJSFRUUF9JRl9NT0RJRklFRF9TSU5DRT0iV2VkLCA2IEFwciAyMDA1IDIyOjE0OjEzICswMDAwIiAmJgorCWV4cG9ydCBIVFRQX0lGX01PRElGSUVEX1NJTkNFICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJ1bnNldCBIVFRQX0lGX01PRElGSUVEX1NJTkNFIiAmJgogCWdpdHdlYl9ydW4gInA9LmdpdDthPXNuYXBzaG90O2g9JElEO3NmPXRneiIgJiYKIAlncmVwICJTdGF0dXM6IDIwMCBPSyIgZ2l0d2ViLmhlYWRlcnMgJiYKZGlmZiAtLWdpdCBhL3QvdDk1MDItZ2l0d2ViLXN0YW5kYWxvbmUtcGFyc2Utb3V0cHV0LnNoIGIvdC90OTUwMi1naXR3ZWItc3RhbmRhbG9uZS1wYXJzZS1vdXRwdXQuc2gKaW5kZXggNzMxZTY0Yy4uODZkZmVlMiAxMDA3NTUKLS0tIGEvdC90OTUwMi1naXR3ZWItc3RhbmRhbG9uZS1wYXJzZS1vdXRwdXQuc2gKKysrIGIvdC90OTUwMi1naXR3ZWItc3RhbmRhbG9uZS1wYXJzZS1vdXRwdXQuc2gKQEAgLTQwLDcgKzQwLDcgQEAKIAllY2hvICJiYXNlbmFtZT0kYmFzZW5hbWUiCiAJZ3JlcCAiZmlsZW5hbWU9LiokYmFzZW5hbWUudGFyIiBnaXR3ZWIuaGVhZGVycyA+L2Rldi9udWxsIDI+JjEgJiYKIAkiJFRBUiIgdGYgZ2l0d2ViLmJvZHkgPmZpbGVfbGlzdCAmJgotCSEgZ3JlcCAtdiAiXiRwcmVmaXgvIiBmaWxlX2xpc3QKKwkhIGdyZXAgLXYgLWUgIl4kcHJlZml4JCIgLWUgIl4kcHJlZml4LyIgLWUgIl5wYXhfZ2xvYmFsX2hlYWRlciQiIGZpbGVfbGlzdAogfQogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKQEAgLTE4NSw1ICsxODUsMjAgQEAKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKIAoreHNzKCkgeworCWVjaG8gPiYyICJDaGVja2luZyAkMS4uLiIgJiYKKwlnaXR3ZWJfcnVuICIkMSIgJiYKKwlpZiBncmVwICIkVEFHIiBnaXR3ZWIuYm9keTsgdGhlbgorCQllY2hvID4mMiAieHNzOiAkVEFHIHNob3VsZCBoYXZlIGJlZW4gcXVvdGVkIGluIG91dHB1dCIKKwkJcmV0dXJuIDEKKwlmaQorCXJldHVybiAwCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3hzcyBjaGVja3MnICcKKwlUQUc9IjxtYWdpYy14c3MtdGFnPiIgJiYKKwl4c3MgImE9cnNzJnA9JFRBRyIgJiYKKwl4c3MgImE9cnNzJnA9Zm9vLmdpdCZmPSRUQUciCisnCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTYwNC1jdnNpbXBvcnQtdGltZXN0YW1wcy5zaCBiL3QvdDk2MDQtY3ZzaW1wb3J0LXRpbWVzdGFtcHMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWZkNTE0MgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDk2MDQtY3ZzaW1wb3J0LXRpbWVzdGFtcHMuc2gKQEAgLTAsMCArMSw3MSBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBjdnNpbXBvcnQgdGltZXN0YW1wcycKKy4gLi9saWItY3ZzLnNoCisKK3NldHVwX2N2c190ZXN0X3JlcG9zaXRvcnkgdDk2MDQKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgdGltZXN0YW1wcyBhcmUgVVRDIChUWj1DU1Q2Q0RUKScgJworCisJVFo9Q1NUNkNEVCBnaXQgY3ZzaW1wb3J0IC1wIi14IiAtQyBtb2R1bGUtMSBtb2R1bGUgJiYKKwlnaXQgY3ZzaW1wb3J0IC1wIi14IiAtQyBtb2R1bGUtMSBtb2R1bGUgJiYKKwkoCisJCWNkIG1vZHVsZS0xICYmCisJCWdpdCBsb2cgLS1mb3JtYXQ9IiVzICVhaSIKKwkpID5hY3R1YWwtMSAmJgorCWNhdCA+ZXhwZWN0LTEgPDwtRU9GICYmCisJUmV2IDE2IDIwMDYtMTAtMjkgMDc6MDA6MDEgKzAwMDAKKwlSZXYgMTUgMjAwNi0xMC0yOSAwNjo1OTo1OSArMDAwMAorCVJldiAxNCAyMDA2LTA0LTAyIDA4OjAwOjAxICswMDAwCisJUmV2IDEzIDIwMDYtMDQtMDIgMDc6NTk6NTkgKzAwMDAKKwlSZXYgMTIgMjAwNS0xMi0wMSAwMDowMDowMCArMDAwMAorCVJldiAxMSAyMDA1LTExLTAxIDAwOjAwOjAwICswMDAwCisJUmV2IDEwIDIwMDUtMTAtMDEgMDA6MDA6MDAgKzAwMDAKKwlSZXYgIDkgMjAwNS0wOS0wMSAwMDowMDowMCArMDAwMAorCVJldiAgOCAyMDA1LTA4LTAxIDAwOjAwOjAwICswMDAwCisJUmV2ICA3IDIwMDUtMDctMDEgMDA6MDA6MDAgKzAwMDAKKwlSZXYgIDYgMjAwNS0wNi0wMSAwMDowMDowMCArMDAwMAorCVJldiAgNSAyMDA1LTA1LTAxIDAwOjAwOjAwICswMDAwCisJUmV2ICA0IDIwMDUtMDQtMDEgMDA6MDA6MDAgKzAwMDAKKwlSZXYgIDMgMjAwNS0wMy0wMSAwMDowMDowMCArMDAwMAorCVJldiAgMiAyMDA1LTAyLTAxIDAwOjAwOjAwICswMDAwCisJUmV2ICAxIDIwMDUtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKwlFT0YKKwl0ZXN0X2NtcCBhY3R1YWwtMSBleHBlY3QtMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayB0aW1lc3RhbXBzIHdpdGggYXV0aG9yLXNwZWNpZmljIHRpbWV6b25lcycgJworCisJY2F0ID5jdnMtYXV0aG9ycyA8PC1FT0YgJiYKKwl1c2VyMT1Vc2VyIE9uZSA8dXNlcjFAZG9tYWluLm9yZz4KKwl1c2VyMj1Vc2VyIFR3byA8dXNlcjJAZG9tYWluLm9yZz4gQ1NUNkNEVAorCXVzZXIzPVVzZXIgVGhyZWUgPHVzZXIzQGRvbWFpbi5vcmc+IEVTVDVFRFQKKwl1c2VyND1Vc2VyIEZvdXIgPHVzZXI0QGRvbWFpbi5vcmc+IE1TVDdNRFQKKwlFT0YKKwlnaXQgY3ZzaW1wb3J0IC1wIi14IiAtQSBjdnMtYXV0aG9ycyAtQyBtb2R1bGUtMiBtb2R1bGUgJiYKKwkoCisJCWNkIG1vZHVsZS0yICYmCisJCWdpdCBsb2cgLS1mb3JtYXQ9IiVzICVhaSAlYW4iCisJKSA+YWN0dWFsLTIgJiYKKwljYXQgPmV4cGVjdC0yIDw8LUVPRiAmJgorCVJldiAxNiAyMDA2LTEwLTI5IDAxOjAwOjAxIC0wNjAwIFVzZXIgVHdvCisJUmV2IDE1IDIwMDYtMTAtMjkgMDE6NTk6NTkgLTA1MDAgVXNlciBUd28KKwlSZXYgMTQgMjAwNi0wNC0wMiAwMzowMDowMSAtMDUwMCBVc2VyIFR3bworCVJldiAxMyAyMDA2LTA0LTAyIDAxOjU5OjU5IC0wNjAwIFVzZXIgVHdvCisJUmV2IDEyIDIwMDUtMTEtMzAgMTc6MDA6MDAgLTA3MDAgVXNlciBGb3VyCisJUmV2IDExIDIwMDUtMTAtMzEgMTk6MDA6MDAgLTA1MDAgVXNlciBUaHJlZQorCVJldiAxMCAyMDA1LTA5LTMwIDE5OjAwOjAwIC0wNTAwIFVzZXIgVHdvCisJUmV2ICA5IDIwMDUtMDktMDEgMDA6MDA6MDAgKzAwMDAgVXNlciBPbmUKKwlSZXYgIDggMjAwNS0wNy0zMSAxODowMDowMCAtMDYwMCBVc2VyIEZvdXIKKwlSZXYgIDcgMjAwNS0wNi0zMCAyMDowMDowMCAtMDQwMCBVc2VyIFRocmVlCisJUmV2ICA2IDIwMDUtMDUtMzEgMTk6MDA6MDAgLTA1MDAgVXNlciBUd28KKwlSZXYgIDUgMjAwNS0wNS0wMSAwMDowMDowMCArMDAwMCBVc2VyIE9uZQorCVJldiAgNCAyMDA1LTAzLTMxIDE3OjAwOjAwIC0wNzAwIFVzZXIgRm91cgorCVJldiAgMyAyMDA1LTAyLTI4IDE5OjAwOjAwIC0wNTAwIFVzZXIgVGhyZWUKKwlSZXYgIDIgMjAwNS0wMS0zMSAxODowMDowMCAtMDYwMCBVc2VyIFR3bworCVJldiAgMSAyMDA1LTAxLTAxIDAwOjAwOjAwICswMDAwIFVzZXIgT25lCisJRU9GCisJdGVzdF9jbXAgYWN0dWFsLTIgZXhwZWN0LTIKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5NjA0L2N2c3Jvb3QvLmdpdGF0dHJpYnV0ZXMgYi90L3Q5NjA0L2N2c3Jvb3QvLmdpdGF0dHJpYnV0ZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYyYjEyZQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDk2MDQvY3Zzcm9vdC8uZ2l0YXR0cmlidXRlcwpAQCAtMCwwICsxIEBACisqIC13aGl0ZXNwYWNlCmRpZmYgLS1naXQgYS90L3Q5NjA0L2N2c3Jvb3QvQ1ZTUk9PVC8uZ2l0aWdub3JlIGIvdC90OTYwNC9jdnNyb290L0NWU1JPT1QvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmI5YjM0Ci0tLSAvZGV2L251bGwKKysrIGIvdC90OTYwNC9jdnNyb290L0NWU1JPT1QvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDIgQEAKK2hpc3RvcnkKK3ZhbC10YWdzCmRpZmYgLS1naXQgYS90L3Q5NjA0L2N2c3Jvb3QvbW9kdWxlL2EsdiBiL3QvdDk2MDQvY3Zzcm9vdC9tb2R1bGUvYSx2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNjU4YzMKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q5NjA0L2N2c3Jvb3QvbW9kdWxlL2EsdgpAQCAtMCwwICsxLDI2NCBAQAoraGVhZAkxLjE2OworYWNjZXNzOworc3ltYm9sczsKK2xvY2tzOyBzdHJpY3Q7Citjb21tZW50CUAjIEA7CisKKworMS4xNgorZGF0ZQkyMDA2LjEwLjI5LjA3LjAwLjAxOwlhdXRob3IgdXNlcjI7CXN0YXRlIEV4cDsKK2JyYW5jaGVzOworbmV4dAkxLjE1OworCisxLjE1CitkYXRlCTIwMDYuMTAuMjkuMDYuNTkuNTk7CWF1dGhvciB1c2VyMjsJc3RhdGUgRXhwOworYnJhbmNoZXM7CituZXh0CTEuMTQ7CisKKzEuMTQKK2RhdGUJMjAwNi4wNC4wMi4wOC4wMC4wMTsJYXV0aG9yIHVzZXIyOwlzdGF0ZSBFeHA7CiticmFuY2hlczsKK25leHQJMS4xMzsKKworMS4xMworZGF0ZQkyMDA2LjA0LjAyLjA3LjU5LjU5OwlhdXRob3IgdXNlcjI7CXN0YXRlIEV4cDsKK2JyYW5jaGVzOworbmV4dAkxLjEyOworCisxLjEyCitkYXRlCTIwMDUuMTIuMDEuMDAuMDAuMDA7CWF1dGhvciB1c2VyNDsJc3RhdGUgRXhwOworYnJhbmNoZXM7CituZXh0CTEuMTE7CisKKzEuMTEKK2RhdGUJMjAwNS4xMS4wMS4wMC4wMC4wMDsJYXV0aG9yIHVzZXIzOwlzdGF0ZSBFeHA7CiticmFuY2hlczsKK25leHQJMS4xMDsKKworMS4xMAorZGF0ZQkyMDA1LjEwLjAxLjAwLjAwLjAwOwlhdXRob3IgdXNlcjI7CXN0YXRlIEV4cDsKK2JyYW5jaGVzOworbmV4dAkxLjk7CisKKzEuOQorZGF0ZQkyMDA1LjA5LjAxLjAwLjAwLjAwOwlhdXRob3IgdXNlcjE7CXN0YXRlIEV4cDsKK2JyYW5jaGVzOworbmV4dAkxLjg7CisKKzEuOAorZGF0ZQkyMDA1LjA4LjAxLjAwLjAwLjAwOwlhdXRob3IgdXNlcjQ7CXN0YXRlIEV4cDsKK2JyYW5jaGVzOworbmV4dAkxLjc7CisKKzEuNworZGF0ZQkyMDA1LjA3LjAxLjAwLjAwLjAwOwlhdXRob3IgdXNlcjM7CXN0YXRlIEV4cDsKK2JyYW5jaGVzOworbmV4dAkxLjY7CisKKzEuNgorZGF0ZQkyMDA1LjA2LjAxLjAwLjAwLjAwOwlhdXRob3IgdXNlcjI7CXN0YXRlIEV4cDsKK2JyYW5jaGVzOworbmV4dAkxLjU7CisKKzEuNQorZGF0ZQkyMDA1LjA1LjAxLjAwLjAwLjAwOwlhdXRob3IgdXNlcjE7CXN0YXRlIEV4cDsKK2JyYW5jaGVzOworbmV4dAkxLjQ7CisKKzEuNAorZGF0ZQkyMDA1LjA0LjAxLjAwLjAwLjAwOwlhdXRob3IgdXNlcjQ7CXN0YXRlIEV4cDsKK2JyYW5jaGVzOworbmV4dAkxLjM7CisKKzEuMworZGF0ZQkyMDA1LjAzLjAxLjAwLjAwLjAwOwlhdXRob3IgdXNlcjM7CXN0YXRlIEV4cDsKK2JyYW5jaGVzOworbmV4dAkxLjI7CisKKzEuMgorZGF0ZQkyMDA1LjAyLjAxLjAwLjAwLjAwOwlhdXRob3IgdXNlcjI7CXN0YXRlIEV4cDsKK2JyYW5jaGVzOworbmV4dAkxLjE7CisKKzEuMQorZGF0ZQkyMDA1LjAxLjAxLjAwLjAwLjAwOwlhdXRob3IgdXNlcjE7CXN0YXRlIEV4cDsKK2JyYW5jaGVzOworbmV4dAk7CisKKworZGVzYworQEAKKworCisxLjE2Citsb2cKK0BSZXYgMTYKK0AKK3RleHQKK0BSZXYgMTYKK0AKKworCisxLjE1Citsb2cKK0BSZXYgMTUKK0AKK3RleHQKK0BkMSAxCithMSAxCitSZXYgMTUKK0AKKworCisxLjE0Citsb2cKK0BSZXYgMTQKK0AKK3RleHQKK0BkMSAxCithMSAxCitSZXYgMTQKK0AKKworCisxLjEzCitsb2cKK0BSZXYgMTMKK0AKK3RleHQKK0BkMSAxCithMSAxCitSZXYgMTMKK0AKKworCisxLjEyCitsb2cKK0BSZXYgMTIKK0AKK3RleHQKK0BkMSAxCithMSAxCitSZXYgMTIKK0AKKworCisxLjExCitsb2cKK0BSZXYgMTEKK0AKK3RleHQKK0BkMSAxCithMSAxCitSZXYgMTEKK0AKKworCisxLjEwCitsb2cKK0BSZXYgMTAKK0AKK3RleHQKK0BkMSAxCithMSAxCitSZXYgMTAKK0AKKworCisxLjkKK2xvZworQFJldiAgOQorQAordGV4dAorQGQxIDEKK2ExIDEKK1JldiA5CitACisKKworMS44Citsb2cKK0BSZXYgIDgKK0AKK3RleHQKK0BkMSAxCithMSAxCitSZXYgOAorQAorCisKKzEuNworbG9nCitAUmV2ICA3CitACit0ZXh0CitAZDEgMQorYTEgMQorUmV2IDcKK0AKKworCisxLjYKK2xvZworQFJldiAgNgorQAordGV4dAorQGQxIDEKK2ExIDEKK1JldiA2CitACisKKworMS41Citsb2cKK0BSZXYgIDUKK0AKK3RleHQKK0BkMSAxCithMSAxCitSZXYgNQorQAorCisKKzEuNAorbG9nCitAUmV2ICA0CitACit0ZXh0CitAZDEgMQorYTEgMQorUmV2IDQKK0AKKworCisxLjMKK2xvZworQFJldiAgMworQAordGV4dAorQGQxIDEKK2ExIDEKK1JldiAzCitACisKKworMS4yCitsb2cKK0BSZXYgIDIKK0AKK3RleHQKK0BkMSAxCithMSAxCitSZXYgMgorQAorCisKKzEuMQorbG9nCitAUmV2ICAxCitACit0ZXh0CitAZDEgMQorYTEgMQorUmV2IDEKK0AKZGlmZiAtLWdpdCBhL3QvdDk3MDAvdGVzdC5wbCBiL3QvdDk3MDAvdGVzdC5wbAppbmRleCAzYjliNDg0Li4xMTQwNzY3IDEwMDc1NQotLS0gYS90L3Q5NzAwL3Rlc3QucGwKKysrIGIvdC90OTcwMC90ZXN0LnBsCkBAIC00NSw5ICs0NSw5IEBACiAjIEZhaWx1cmUgY2FzZXMgZm9yIGNvbmZpZzoKICMgU2F2ZSBhbmQgcmVzdG9yZSBTVERFUlI7IHdlIHdpbGwgcHJvYmFibHkgZXh0cmFjdCB0aGlzIGludG8gYQogIyAiZGllc19vayIgbWV0aG9kIGFuZCBwb3NzaWJseSBtb3ZlIHRoZSBTVERFUlIgaGFuZGxpbmcgdG8gR2l0LnBtLgotb3BlbiBvdXIgJHRtcHN0ZGVyciwgIj4mU1RERVJSIiBvciBkaWUgImNhbm5vdCBzYXZlIFNUREVSUiI7IGNsb3NlIFNUREVSUjsKLWV2YWwgeyAkci0+Y29uZmlnKCJ0ZXN0LmR1cHN0cmluZyIpIH07Ci1vaygkQCwgImNvbmZpZzogZHVwbGljYXRlIGVudHJ5IGluIHNjYWxhciBjb250ZXh0IGZhaWxzIik7CitvcGVuIG91ciAkdG1wc3RkZXJyLCAiPiZTVERFUlIiIG9yIGRpZSAiY2Fubm90IHNhdmUgU1RERVJSIjsKK29wZW4gU1RERVJSLCAiPiIsICIvZGV2L251bGwiIG9yIGRpZSAiY2Fubm90IHJlZGlyZWN0IFNUREVSUiB0byAvZGV2L251bGwiOworaXMoJHItPmNvbmZpZygidGVzdC5kdXBzdHJpbmciKSwgInZhbHVlMiIsICJjb25maWc6IG11bHRpdmFyIik7CiBldmFsIHsgJHItPmNvbmZpZ19ib29sKCJ0ZXN0LmJvb2xvdGhlciIpIH07CiBvaygkQCwgImNvbmZpZ19ib29sOiBub24tYm9vbGVhbiB2YWx1ZXMgZmFpbCIpOwogb3BlbiBTVERFUlIsICI+JiIsICR0bXBzdGRlcnIgb3IgZGllICJjYW5ub3QgcmVzdG9yZSBTVERFUlIiOwpkaWZmIC0tZ2l0IGEvdC90OTgwMC1naXQtcDQtYmFzaWMuc2ggYi90L3Q5ODAwLWdpdC1wNC1iYXNpYy5zaAppbmRleCAwZjQxMGM0Li42NjU2MDdjIDEwMDc1NQotLS0gYS90L3Q5ODAwLWdpdC1wNC1iYXNpYy5zaAorKysgYi90L3Q5ODAwLWdpdC1wNC1iYXNpYy5zaApAQCAtMzAsNiArMzAsMTEgQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RlcG90IHR5cG8gZXJyb3InICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvZGVwb3QgMj5lcnJzICYmCisJZ3JlcCAiRGVwb3QgcGF0aHMgbXVzdCBzdGFydCB3aXRoIiBlcnJzCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBwNCBjbG9uZSBAYWxsJyAnCiAJZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdEBhbGwgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKQEAgLTQ1LDcgKzUwLDggQEAKIAl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKIAkoCiAJCWNkICIkZ2l0IiAmJgotCQl0ZXN0X211c3RfZmFpbCBnaXQgcDQgc3luYworCQl0ZXN0X211c3RfZmFpbCBnaXQgcDQgc3luYyAyPmVycnMgJiYKKwkJdGVzdF9pMThuZ3JlcCAiUGVyaGFwcyB5b3UgbmV2ZXIgZGlkIiBlcnJzCiAJKQogJwogCkBAIC0xMjYsMjkyICsxMzIsNDggQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZXhpdCB3aGVuIHA0IGZhaWxzIHRvIHByb2R1Y2UgbWFyc2hhbGVkIG91dHB1dCcgJwotCWJhZHA0ZGlyPSIkVFJBU0hfRElSRUNUT1JZL2JhZHA0ZGlyIiAmJgotCW1rZGlyICIkYmFkcDRkaXIiICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJybSBcIiRiYWRwNGRpci9wNFwiICYmIHJtZGlyIFwiJGJhZHA0ZGlyXCIiICYmCi0JY2F0ID4iJGJhZHA0ZGlyIi9wNCA8PC1FT0YgJiYKKwlta2RpciBiYWRwNGRpciAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gYmFkcDRkaXIvcDQgJiYgcm1kaXIgYmFkcDRkaXIiICYmCisJY2F0ID5iYWRwNGRpci9wNCA8PC1FT0YgJiYKIAkjISRTSEVMTF9QQVRICiAJZXhpdCAxCiAJRU9GCi0JY2htb2QgNzU1ICIkYmFkcDRkaXIiL3A0ICYmCi0JUEFUSD0iJGJhZHA0ZGlyOiRQQVRIIiBnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ID5lcnJzIDI+JjEgOyByZXR2YWw9JD8gJiYKLQl0ZXN0ICRyZXR2YWwgLWVxIDEgJiYKLQl0ZXN0X211c3RfZmFpbCBncmVwIC1xIFRyYWNlYmFjayBlcnJzCi0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBwNCBmaWxlcyB3aXRoIHdpbGRjYXJkcyBpbiB0aGUgbmFtZXMnICcKKwljaG1vZCA3NTUgYmFkcDRkaXIvcDQgJiYKIAkoCi0JCWNkICIkY2xpIiAmJgotCQllY2hvIGZpbGUtd2lsZC1oYXNoID5maWxlLXdpbGQjaGFzaCAmJgotCQllY2hvIGZpbGUtd2lsZC1zdGFyID5maWxlLXdpbGRcKnN0YXIgJiYKLQkJZWNobyBmaWxlLXdpbGQtYXQgPmZpbGUtd2lsZEBhdCAmJgotCQllY2hvIGZpbGUtd2lsZC1wZXJjZW50ID5maWxlLXdpbGQlcGVyY2VudCAmJgotCQlwNCBhZGQgLWYgZmlsZS13aWxkKiAmJgotCQlwNCBzdWJtaXQgLWQgImZpbGUgd2lsZGNhcmRzIgotCSkKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnd2lsZGNhcmQgZmlsZXMgZ2l0IHA0IGNsb25lJyAnCi0JZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgotCSgKLQkJY2QgIiRnaXQiICYmCi0JCXRlc3QgLWYgZmlsZS13aWxkI2hhc2ggJiYKLQkJdGVzdCAtZiBmaWxlLXdpbGRcKnN0YXIgJiYKLQkJdGVzdCAtZiBmaWxlLXdpbGRAYXQgJiYKLQkJdGVzdCAtZiBmaWxlLXdpbGQlcGVyY2VudAotCSkKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnd2lsZGNhcmQgZmlsZXMgc3VibWl0IGJhY2sgdG8gcDQsIGFkZCcgJwotCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgotCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKLQkoCi0JCWNkICIkZ2l0IiAmJgotCQllY2hvIGdpdC13aWxkLWhhc2ggPmdpdC13aWxkI2hhc2ggJiYKLQkJZWNobyBnaXQtd2lsZC1zdGFyID5naXQtd2lsZFwqc3RhciAmJgotCQllY2hvIGdpdC13aWxkLWF0ID5naXQtd2lsZEBhdCAmJgotCQllY2hvIGdpdC13aWxkLXBlcmNlbnQgPmdpdC13aWxkJXBlcmNlbnQgJiYKLQkJZ2l0IGFkZCBnaXQtd2lsZCogJiYKLQkJZ2l0IGNvbW1pdCAtbSAiYWRkIHNvbWUgd2lsZGNhcmQgZmlsZW5hbWVzIiAmJgotCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdCB0cnVlICYmCi0JCWdpdCBwNCBzdWJtaXQKKwkJUEFUSD0iJFRSQVNIX0RJUkVDVE9SWS9iYWRwNGRpcjokUEFUSCIgJiYKKwkJZXhwb3J0IFBBVEggJiYKKwkJdGVzdF9leHBlY3RfY29kZSAxIGdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgPmVycnMgMj4mMQogCSkgJiYKLQkoCi0JCWNkICIkY2xpIiAmJgotCQl0ZXN0X3BhdGhfaXNfZmlsZSBnaXQtd2lsZCNoYXNoICYmCi0JCXRlc3RfcGF0aF9pc19maWxlIGdpdC13aWxkXCpzdGFyICYmCi0JCXRlc3RfcGF0aF9pc19maWxlIGdpdC13aWxkQGF0ICYmCi0JCXRlc3RfcGF0aF9pc19maWxlIGdpdC13aWxkJXBlcmNlbnQKLQkpCisJY2F0IGVycnMgJiYKKwkhIHRlc3RfaTE4bmdyZXAgVHJhY2ViYWNrIGVycnMKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnd2lsZGNhcmQgZmlsZXMgc3VibWl0IGJhY2sgdG8gcDQsIG1vZGlmeScgJworIyBIaWRlIGEgZmlsZSBmcm9tIHA0ZCwgbWFrZSBzdXJlIHdlIGNhdGNoIGl0cyBjb21wbGFpbnQuICBUaGlzIHdvbid0IGZhaWwgaW4KKyMgcDQgY2hhbmdlcywgZmlsZXMsIG9yIGRlc2NyaWJlOyBqdXN0IGluIHA0IHByaW50LiAgSWYgUDRDTElFTlQgaXMgdW5zZXQsIHRoZQorIyBtZXNzYWdlIHdpbGwgaW5jbHVkZSAiTGlicmFyaWFuIGNoZWNrb3V0Ii4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2V4aXQgZ3JhY2VmdWxseSBmb3IgcDQgc2VydmVyIGVycm9ycycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAibXYgXCIkZGJcIi9kZXBvdC9maWxlMSx2LGhpZGRlbiBcIiRkYlwiL2RlcG90L2ZpbGUxLHYiICYmCisJbXYgIiRkYiIvZGVwb3QvZmlsZTEsdiAiJGRiIi9kZXBvdC9maWxlMSx2LGhpZGRlbiAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgotCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKLQkoCi0JCWNkICIkZ2l0IiAmJgotCQllY2hvIG5ldy1saW5lID4+Z2l0LXdpbGQjaGFzaCAmJgotCQllY2hvIG5ldy1saW5lID4+Z2l0LXdpbGRcKnN0YXIgJiYKLQkJZWNobyBuZXctbGluZSA+PmdpdC13aWxkQGF0ICYmCi0JCWVjaG8gbmV3LWxpbmUgPj5naXQtd2lsZCVwZXJjZW50ICYmCi0JCWdpdCBhZGQgZ2l0LXdpbGQqICYmCi0JCWdpdCBjb21taXQgLW0gIm1vZGlmeSB0aGUgd2lsZGNhcmQgZmlsZXMiICYmCi0JCWdpdCBjb25maWcgZ2l0LXA0LnNraXBTdWJtaXRFZGl0IHRydWUgJiYKLQkJZ2l0IHA0IHN1Ym1pdAotCSkgJiYKLQkoCi0JCWNkICIkY2xpIiAmJgotCQl0ZXN0X2xpbmVfY291bnQgPSAyIGdpdC13aWxkI2hhc2ggJiYKLQkJdGVzdF9saW5lX2NvdW50ID0gMiBnaXQtd2lsZFwqc3RhciAmJgotCQl0ZXN0X2xpbmVfY291bnQgPSAyIGdpdC13aWxkQGF0ICYmCi0JCXRlc3RfbGluZV9jb3VudCA9IDIgZ2l0LXdpbGQlcGVyY2VudAotCSkKKwl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdEAxID5vdXQgMj5lcnIgJiYKKwl0ZXN0X2kxOG5ncmVwICJFcnJvciBmcm9tIHA0IHByaW50IiBlcnIKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnd2lsZGNhcmQgZmlsZXMgc3VibWl0IGJhY2sgdG8gcDQsIGNvcHknICcKLQl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKLQlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCi0JKAotCQljZCAiJGdpdCIgJiYKLQkJY3AgZmlsZTIgZ2l0LXdpbGQtY3AjaGFzaCAmJgotCQlnaXQgYWRkIGdpdC13aWxkLWNwI2hhc2ggJiYKLQkJY3AgZ2l0LXdpbGRcKnN0YXIgZmlsZS13aWxkLTMgJiYKLQkJZ2l0IGFkZCBmaWxlLXdpbGQtMyAmJgotCQlnaXQgY29tbWl0IC1tICJ3aWxkY2FyZCBjb3BpZXMiICYmCi0JCWdpdCBjb25maWcgZ2l0LXA0LmRldGVjdENvcGllcyB0cnVlICYmCi0JCWdpdCBjb25maWcgZ2l0LXA0LmRldGVjdENvcGllc0hhcmRlciB0cnVlICYmCi0JCWdpdCBjb25maWcgZ2l0LXA0LnNraXBTdWJtaXRFZGl0IHRydWUgJiYKLQkJZ2l0IHA0IHN1Ym1pdAotCSkgJiYKLQkoCi0JCWNkICIkY2xpIiAmJgotCQl0ZXN0X3BhdGhfaXNfZmlsZSBnaXQtd2lsZC1jcCNoYXNoICYmCi0JCXRlc3RfcGF0aF9pc19maWxlIGZpbGUtd2lsZC0zCi0JKQotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICd3aWxkY2FyZCBmaWxlcyBzdWJtaXQgYmFjayB0byBwNCwgcmVuYW1lJyAnCi0JdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCi0JZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgotCSgKLQkJY2QgIiRnaXQiICYmCi0JCWdpdCBtdiBnaXQtd2lsZEBhdCBmaWxlLXdpbGQtNCAmJgotCQlnaXQgbXYgZmlsZS13aWxkLTMgZ2l0LXdpbGQtY3AlcGVyY2VudCAmJgotCQlnaXQgY29tbWl0IC1tICJ3aWxkY2FyZCByZW5hbWVzIiAmJgotCQlnaXQgY29uZmlnIGdpdC1wNC5kZXRlY3RSZW5hbWVzIHRydWUgJiYKLQkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgotCQlnaXQgcDQgc3VibWl0Ci0JKSAmJgotCSgKLQkJY2QgIiRjbGkiICYmCi0JCXRlc3RfcGF0aF9pc19taXNzaW5nIGdpdC13aWxkQGF0ICYmCi0JCXRlc3RfcGF0aF9pc19maWxlIGdpdC13aWxkLWNwJXBlcmNlbnQKLQkpCi0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dpbGRjYXJkIGZpbGVzIHN1Ym1pdCBiYWNrIHRvIHA0LCBkZWxldGUnICcKLQl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKLQlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCi0JKAotCQljZCAiJGdpdCIgJiYKLQkJZ2l0IHJtIGdpdC13aWxkKiAmJgotCQlnaXQgY29tbWl0IC1tICJkZWxldGUgdGhlIHdpbGRjYXJkIGZpbGVzIiAmJgotCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdCB0cnVlICYmCi0JCWdpdCBwNCBzdWJtaXQKLQkpICYmCi0JKAotCQljZCAiJGNsaSIgJiYKLQkJdGVzdF9wYXRoX2lzX21pc3NpbmcgZ2l0LXdpbGQjaGFzaCAmJgotCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBnaXQtd2lsZFwqc3RhciAmJgotCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBnaXQtd2lsZEBhdCAmJgotCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBnaXQtd2lsZCVwZXJjZW50Ci0JKQotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBiYXJlJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSAtLWJhcmUgc2hvdWxkIG1ha2UgYSBiYXJlIHJlcG9zaXRvcnknICcKKwlybSAtcmYgIiRnaXQiICYmCiAJZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLS1iYXJlIC8vZGVwb3QgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKIAkoCiAJCWNkICIkZ2l0IiAmJgotCQl0ZXN0ICEgLWQgLmdpdCAmJgotCQliYXJlPWBnaXQgY29uZmlnIC0tZ2V0IGNvcmUuYmFyZWAgJiYKLQkJdGVzdCAiJGJhcmUiID0gdHJ1ZQorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0ICYmCisJCWdpdCBjb25maWcgLS1nZXQgLS1ib29sIGNvcmUuYmFyZSB0cnVlICYmCisJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL3A0L21hc3RlciAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9wNC9IRUFEICYmCisJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9tYXN0ZXIgJiYKKwkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFECiAJKQogJwogCi1wNF9hZGRfdXNlcigpIHsKLQluYW1lPSQxIGZ1bGxuYW1lPSQyICYmCi0JcDQgdXNlciAtZiAtaSA8PC1FT0YgJiYKLQlVc2VyOiAkbmFtZQotCUVtYWlsOiAkbmFtZUBsb2NhbGhvc3QKLQlGdWxsTmFtZTogJGZ1bGxuYW1lCi0JRU9GCi0JcDQgcGFzc3dkIC1QIHNlY3JldCAkbmFtZQotfQotCi1wNF9ncmFudF9hZG1pbigpIHsKLQluYW1lPSQxICYmCi0JewotCQlwNCBwcm90ZWN0IC1vICYmCi0JCWVjaG8gIiAgICBhZG1pbiB1c2VyICRuYW1lICogLy9kZXBvdC8uLi4iCi0JfSB8IHA0IHByb3RlY3QgLWkKLX0KLQotcDRfY2hlY2tfY29tbWl0X2F1dGhvcigpIHsKLQlmaWxlPSQxIHVzZXI9JDIgJiYKLQlwNCBjaGFuZ2VzIC1tIDEgLy9kZXBvdC8kZmlsZSB8IGdyZXAgLXEgJHVzZXIKLX0KLQotbWFrZV9jaGFuZ2VfYnlfdXNlcigpIHsKLQlmaWxlPSQxIG5hbWU9JDIgZW1haWw9JDMgJiYKLQllY2hvICJ1c2VybmFtZTogYSBjaGFuZ2UgYnkgJG5hbWUiID4+IiRmaWxlIiAmJgotCWdpdCBhZGQgIiRmaWxlIiAmJgotCWdpdCBjb21taXQgLS1hdXRob3IgIiRuYW1lIDwkZW1haWw+IiAtbSAiYSBjaGFuZ2UgYnkgJG5hbWUiCi19Ci0KLSMgVGVzdCB1c2VybmFtZSBzdXBwb3J0LCBzdWJtaXR0aW5nIGFzIHVzZXIgJ2FsaWNlJwotdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJlc2VydmUgdXNlcnMnICcKLQlwNF9hZGRfdXNlciBhbGljZSBBbGljZSAmJgotCXA0X2FkZF91c2VyIGJvYiBCb2IgJiYKLQlwNF9ncmFudF9hZG1pbiBhbGljZSAmJgotCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKLQkoCi0JCWNkICIkZ2l0IiAmJgotCQllY2hvICJ1c2VybmFtZTogYSBjaGFuZ2UgYnkgYWxpY2UiID4+ZmlsZTEgJiYKLQkJZWNobyAidXNlcm5hbWU6IGEgY2hhbmdlIGJ5IGJvYiIgPj5maWxlMiAmJgotCQlnaXQgY29tbWl0IC0tYXV0aG9yICJBbGljZSA8YWxpY2VAbG9jYWxob3N0PiIgLW0gImEgY2hhbmdlIGJ5IGFsaWNlIiBmaWxlMSAmJgotCQlnaXQgY29tbWl0IC0tYXV0aG9yICJCb2IgPGJvYkBsb2NhbGhvc3Q+IiAtbSAiYSBjaGFuZ2UgYnkgYm9iIiBmaWxlMiAmJgotCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdENoZWNrIHRydWUgJiYKLQkJUDRFRElUT1I9dG91Y2ggUDRVU0VSPWFsaWNlIFA0UEFTU1dEPXNlY3JldCBnaXQgcDQgY29tbWl0IC0tcHJlc2VydmUtdXNlciAmJgotCQlwNF9jaGVja19jb21taXRfYXV0aG9yIGZpbGUxIGFsaWNlICYmCi0JCXA0X2NoZWNrX2NvbW1pdF9hdXRob3IgZmlsZTIgYm9iCi0JKQotJwotCi0jIFRlc3QgdXNlcm5hbWUgc3VwcG9ydCwgc3VibWl0dGluZyBhcyBib2IsIHdobyBsYWNrcyBhZG1pbiByaWdodHMuIFNob3VsZAotIyBub3Qgc3VibWl0IGNoYW5nZSB0byBwNCAoZ2l0IGRpZmYgc2hvdWxkIHNob3cgZGVsdGFzKS4KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZnVzZSB0byBwcmVzZXJ2ZSB1c2VycyB3aXRob3V0IHBlcm1zJyAnCi0JZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgotCSgKLQkJY2QgIiRnaXQiICYmCi0JCWdpdCBjb25maWcgZ2l0LXA0LnNraXBTdWJtaXRFZGl0Q2hlY2sgdHJ1ZSAmJgotCQllY2hvICJ1c2VybmFtZS1ub3Blcm1zOiBhIGNoYW5nZSBieSBhbGljZSIgPj5maWxlMSAmJgotCQlnaXQgY29tbWl0IC0tYXV0aG9yICJBbGljZSA8YWxpY2VAbG9jYWxob3N0PiIgLW0gInBlcm1zOiBhIGNoYW5nZSBieSBhbGljZSIgZmlsZTEgJiYKLQkJUDRFRElUT1I9dG91Y2ggUDRVU0VSPWJvYiBQNFBBU1NXRD1zZWNyZXQgJiYKLQkJZXhwb3J0IFA0RURJVE9SIFA0VVNFUiBQNFBBU1NXRCAmJgotCQl0ZXN0X211c3RfZmFpbCBnaXQgcDQgY29tbWl0IC0tcHJlc2VydmUtdXNlciAmJgotCQkhIGdpdCBkaWZmIC0tZXhpdC1jb2RlIEhFQUQuLnA0L21hc3RlcgotCSkKLScKLQotIyBXaGF0IGhhcHBlbnMgd2l0aCB1bmtub3duIGF1dGhvcj8gV2l0aG91dCBhbGxvd01pc3NpbmdQNFVzZXJzIGl0IHNob3VsZCBmYWlsLgotdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJlc2VydmUgdXNlciB3aGVyZSBhdXRob3IgaXMgdW5rbm93biB0byBwNCcgJwotCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKLQkoCi0JCWNkICIkZ2l0IiAmJgotCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdENoZWNrIHRydWUgJiYKLQkJZWNobyAidXNlcm5hbWUtYm9iOiBhIGNoYW5nZSBieSBib2IiID4+ZmlsZTEgJiYKLQkJZ2l0IGNvbW1pdCAtLWF1dGhvciAiQm9iIDxib2JAbG9jYWxob3N0PiIgLW0gInByZXNlcnZlOiBhIGNoYW5nZSBieSBib2IiIGZpbGUxICYmCi0JCWVjaG8gInVzZXJuYW1lLXVua25vd246IGEgY2hhbmdlIGJ5IGNoYXJsaWUiID4+ZmlsZTEgJiYKLQkJZ2l0IGNvbW1pdCAtLWF1dGhvciAiQ2hhcmxpZSA8Y2hhcmxpZUBsb2NhbGhvc3Q+IiAtbSAicHJlc2VydmU6IGEgY2hhbmdlIGJ5IGNoYXJsaWUiIGZpbGUxICYmCi0JCVA0RURJVE9SPXRvdWNoIFA0VVNFUj1hbGljZSBQNFBBU1NXRD1zZWNyZXQgJiYKLQkJZXhwb3J0IFA0RURJVE9SIFA0VVNFUiBQNFBBU1NXRCAmJgotCQl0ZXN0X211c3RfZmFpbCBnaXQgcDQgY29tbWl0IC0tcHJlc2VydmUtdXNlciAmJgotCQkhIGdpdCBkaWZmIC0tZXhpdC1jb2RlIEhFQUQuLnA0L21hc3RlciAmJgotCi0JCWVjaG8gIiQwOiByZXBlYXQgd2l0aCBhbGxvd01pc3NpbmdQNFVzZXJzIGVuYWJsZWQiICYmCi0JCWdpdCBjb25maWcgZ2l0LXA0LmFsbG93TWlzc2luZ1A0VXNlcnMgdHJ1ZSAmJgotCQlnaXQgY29uZmlnIGdpdC1wNC5wcmVzZXJ2ZVVzZXIgdHJ1ZSAmJgotCQlnaXQgcDQgY29tbWl0ICYmCi0JCWdpdCBkaWZmIC0tZXhpdC1jb2RlIEhFQUQuLnA0L21hc3RlciAmJgotCQlwNF9jaGVja19jb21taXRfYXV0aG9yIGZpbGUxIGFsaWNlCi0JKQotJwotCi0jIElmIHdlJ3JlICpub3QqIHVzaW5nIC0tcHJlc2VydmUtdXNlciwgZ2l0IHA0IHNob3VsZCB3YXJuIGlmIHdlJ3JlIHN1Ym1pdHRpbmcKLSMgY2hhbmdlcyB0aGF0IGFyZSBub3QgYWxsIG91cnMuCi0jIFRlc3Q6IHVzZXIgaW4gcDQgYW5kIHVzZXIgdW5rbm93biB0byBwNC4KLSMgVGVzdDogd2FybmluZyBkaXNhYmxlZCBhbmQgdXNlciBpcyB0aGUgc2FtZS4KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vdCBwcmVzZXJ2aW5nIHVzZXIgd2l0aCBtaXhlZCBhdXRob3JzaGlwJyAnCi0JZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgotCSgKLQkJY2QgIiRnaXQiICYmCi0JCWdpdCBjb25maWcgZ2l0LXA0LnNraXBTdWJtaXRFZGl0Q2hlY2sgdHJ1ZSAmJgotCQlwNF9hZGRfdXNlciBkZXJlayBEZXJlayAmJgotCi0JCW1ha2VfY2hhbmdlX2J5X3VzZXIgdXNlcm5hbWVmaWxlMyBEZXJlayBkZXJla0Bsb2NhbGhvc3QgJiYKLQkJUDRFRElUT1I9Y2F0IFA0VVNFUj1hbGljZSBQNFBBU1NXRD1zZWNyZXQgJiYKLQkJZXhwb3J0IFA0RURJVE9SIFA0VVNFUiBQNFBBU1NXRCAmJgotCQlnaXQgcDQgY29tbWl0IHxcCi0JCWdyZXAgImdpdCBhdXRob3IgZGVyZWtAbG9jYWxob3N0IGRvZXMgbm90IG1hdGNoIiAmJgotCi0JCW1ha2VfY2hhbmdlX2J5X3VzZXIgdXNlcm5hbWVmaWxlMyBDaGFybGllIGNoYXJsaWVAbG9jYWxob3N0ICYmCi0JCWdpdCBwNCBjb21taXQgfFwKLQkJZ3JlcCAiZ2l0IGF1dGhvciBjaGFybGllQGxvY2FsaG9zdCBkb2VzIG5vdCBtYXRjaCIgJiYKLQotCQltYWtlX2NoYW5nZV9ieV91c2VyIHVzZXJuYW1lZmlsZTMgYWxpY2UgYWxpY2VAbG9jYWxob3N0ICYmCi0JCWdpdCBwNCBjb21taXQgfFwKLQkJdGVzdF9tdXN0X2ZhaWwgZ3JlcCAiZ2l0IGF1dGhvci4qZG9lcyBub3QgbWF0Y2giICYmCi0KLQkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFVzZXJOYW1lQ2hlY2sgdHJ1ZSAmJgotCQltYWtlX2NoYW5nZV9ieV91c2VyIHVzZXJuYW1lZmlsZTMgQ2hhcmxpZSBjaGFybGllQGxvY2FsaG9zdCAmJgotCQlnaXQgcDQgY29tbWl0IHxcCi0JCXRlc3RfbXVzdF9mYWlsIGdyZXAgImdpdCBhdXRob3IuKmRvZXMgbm90IG1hdGNoIiAmJgotCi0JCXA0X2NoZWNrX2NvbW1pdF9hdXRob3IgdXNlcm5hbWVmaWxlMyBhbGljZQotCSkKLScKLQotbWFyc2hhbF9kdW1wKCkgewotCXdoYXQ9JDEKLQkiJFBZVEhPTl9QQVRIIiAtYyAnaW1wb3J0IG1hcnNoYWwsIHN5czsgZCA9IG1hcnNoYWwubG9hZChzeXMuc3RkaW4pOyBwcmludCBkWyInJHdoYXQnIl0nCi19Ci0KICMgU2xlZXAgYSBiaXQgc28gdGhhdCB0aGUgdG9wLW1vc3QgcDQgY2hhbmdlIGRpZCBub3QgaGFwcGVuICJub3ciLiAgVGhlbgogIyBpbXBvcnQgdGhlIHJlcG8gYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbml0aWFsIGltcG9ydCBoYXMgdGhlIHNhbWUgdGltZQogIyBhcyB0aGUgdG9wLW1vc3QgY2hhbmdlLgpAQCAtNDI5LDE0MyArMTkxLDE1IEBACiAJKQogJwogCi0jIFJlbmFtZSBhIGZpbGUgYW5kIGNvbmZpcm0gdGhhdCByZW5hbWUgaXMgbm90IGRldGVjdGVkIGluIFA0LgotIyBSZW5hbWUgdGhlIG5ldyBmaWxlIGFnYWluIHdpdGggZGV0ZWN0UmVuYW1lcyBvcHRpb24gZW5hYmxlZCBhbmQgY29uZmlybSB0aGF0Ci0jIHRoaXMgaXMgZGV0ZWN0ZWQgaW4gUDQuCi0jIFJlbmFtZSB0aGUgbmV3IGZpbGUgYWdhaW4gYWRkaW5nIGFuIGV4dHJhIGxpbmUsIGNvbmZpZ3VyZSBhIGJpZyB0aHJlc2hvbGQgaW4KLSMgZGV0ZWN0UmVuYW1lcyBhbmQgY29uZmlybSB0aGF0IHJlbmFtZSBpcyBub3QgZGV0ZWN0ZWQgaW4gUDQuCi0jIFJlcGVhdCwgdGhpcyB0aW1lIHdpdGggYSBzbWFsbGVyIHRocmVzaG9sZCBhbmQgY29uZmlybSB0aGF0IHRoZSByZW5hbWUgaXMKLSMgZGV0ZWN0ZWQgaW4gUDQuCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdkZXRlY3QgcmVuYW1lcycgJwotCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3RAYWxsICYmCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd1bnJlc29sdmFibGUgaG9zdCBpbiBQNFBPUlQgc2hvdWxkIGRpc3BsYXkgZXJyb3InICcKIAl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCiAJKAogCQljZCAiJGdpdCIgJiYKLQkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgotCi0JCWdpdCBtdiBmaWxlMSBmaWxlNCAmJgotCQlnaXQgY29tbWl0IC1hIC1tICJSZW5hbWUgZmlsZTEgdG8gZmlsZTQiICYmCi0JCWdpdCBkaWZmLXRyZWUgLXIgLU0gSEVBRCAmJgotCQlnaXQgcDQgc3VibWl0ICYmCi0JCXA0IGZpbGVsb2cgLy9kZXBvdC9maWxlNCAmJgotCQlwNCBmaWxlbG9nIC8vZGVwb3QvZmlsZTQgfCB0ZXN0X211c3RfZmFpbCBncmVwIC1xICJicmFuY2ggZnJvbSIgJiYKLQotCQlnaXQgbXYgZmlsZTQgZmlsZTUgJiYKLQkJZ2l0IGNvbW1pdCAtYSAtbSAiUmVuYW1lIGZpbGU0IHRvIGZpbGU1IiAmJgotCQlnaXQgZGlmZi10cmVlIC1yIC1NIEhFQUQgJiYKLQkJZ2l0IGNvbmZpZyBnaXQtcDQuZGV0ZWN0UmVuYW1lcyB0cnVlICYmCi0JCWdpdCBwNCBzdWJtaXQgJiYKLQkJcDQgZmlsZWxvZyAvL2RlcG90L2ZpbGU1ICYmCi0JCXA0IGZpbGVsb2cgLy9kZXBvdC9maWxlNSB8IGdyZXAgLXEgImJyYW5jaCBmcm9tIC8vZGVwb3QvZmlsZTQiICYmCi0KLQkJZ2l0IG12IGZpbGU1IGZpbGU2ICYmCi0JCWVjaG8gdXBkYXRlID4+ZmlsZTYgJiYKLQkJZ2l0IGFkZCBmaWxlNiAmJgotCQlnaXQgY29tbWl0IC1hIC1tICJSZW5hbWUgZmlsZTUgdG8gZmlsZTYgd2l0aCBjaGFuZ2VzIiAmJgotCQlnaXQgZGlmZi10cmVlIC1yIC1NIEhFQUQgJiYKLQkJbGV2ZWw9JChnaXQgZGlmZi10cmVlIC1yIC1NIEhFQUQgfCBzZWQgMWQgfCBjdXQgLWYxIHwgY3V0IC1kIiAiIC1mNSB8IHNlZCAicy9SMCovLyIpICYmCi0JCXRlc3QgLW4gIiRsZXZlbCIgJiYgdGVzdCAiJGxldmVsIiAtZ3QgMCAmJiB0ZXN0ICIkbGV2ZWwiIC1sdCA5OCAmJgotCQlnaXQgY29uZmlnIGdpdC1wNC5kZXRlY3RSZW5hbWVzICQoKCRsZXZlbCArIDIpKSAmJgotCQlnaXQgcDQgc3VibWl0ICYmCi0JCXA0IGZpbGVsb2cgLy9kZXBvdC9maWxlNiAmJgotCQlwNCBmaWxlbG9nIC8vZGVwb3QvZmlsZTYgfCB0ZXN0X211c3RfZmFpbCBncmVwIC1xICJicmFuY2ggZnJvbSIgJiYKLQotCQlnaXQgbXYgZmlsZTYgZmlsZTcgJiYKLQkJZWNobyB1cGRhdGUgPj5maWxlNyAmJgotCQlnaXQgYWRkIGZpbGU3ICYmCi0JCWdpdCBjb21taXQgLWEgLW0gIlJlbmFtZSBmaWxlNiB0byBmaWxlNyB3aXRoIGNoYW5nZXMiICYmCi0JCWdpdCBkaWZmLXRyZWUgLXIgLU0gSEVBRCAmJgotCQlsZXZlbD0kKGdpdCBkaWZmLXRyZWUgLXIgLU0gSEVBRCB8IHNlZCAxZCB8IGN1dCAtZjEgfCBjdXQgLWQiICIgLWY1IHwgc2VkICJzL1IwKi8vIikgJiYKLQkJdGVzdCAtbiAiJGxldmVsIiAmJiB0ZXN0ICIkbGV2ZWwiIC1ndCAyICYmIHRlc3QgIiRsZXZlbCIgLWx0IDEwMCAmJgotCQlnaXQgY29uZmlnIGdpdC1wNC5kZXRlY3RSZW5hbWVzICQoKCRsZXZlbCAtIDIpKSAmJgotCQlnaXQgcDQgc3VibWl0ICYmCi0JCXA0IGZpbGVsb2cgLy9kZXBvdC9maWxlNyAmJgotCQlwNCBmaWxlbG9nIC8vZGVwb3QvZmlsZTcgfCBncmVwIC1xICJicmFuY2ggZnJvbSAvL2RlcG90L2ZpbGU2IgotCSkKLScKLQotIyBDb3B5IGEgZmlsZSBhbmQgY29uZmlybSB0aGF0IGNvcHkgaXMgbm90IGRldGVjdGVkIGluIFA0LgotIyBDb3B5IGEgZmlsZSB3aXRoIGRldGVjdENvcGllcyBvcHRpb24gZW5hYmxlZCBhbmQgY29uZmlybSB0aGF0IGNvcHkgaXMgbm90Ci0jIGRldGVjdGVkIGluIFA0LgotIyBNb2RpZnkgYW5kIGNvcHkgYSBmaWxlIHdpdGggZGV0ZWN0Q29waWVzIG9wdGlvbiBlbmFibGVkIGFuZCBjb25maXJtIHRoYXQgY29weQotIyBpcyBkZXRlY3RlZCBpbiBQNC4KLSMgQ29weSBhIGZpbGUgd2l0aCBkZXRlY3RDb3BpZXMgYW5kIGRldGVjdENvcGllc0hhcmRlciBvcHRpb25zIGVuYWJsZWQgYW5kCi0jIGNvbmZpcm0gdGhhdCBjb3B5IGlzIGRldGVjdGVkIGluIFA0LgotIyBNb2RpZnkgYW5kIGNvcHkgYSBmaWxlLCBjb25maWd1cmUgYSBiaWdnZXIgdGhyZXNob2xkIGluIGRldGVjdENvcGllcyBhbmQKLSMgY29uZmlybSB0aGF0IGNvcHkgaXMgbm90IGRldGVjdGVkIGluIFA0LgotIyBNb2RpZnkgYW5kIGNvcHkgYSBmaWxlLCBjb25maWd1cmUgYSBzbWFsbGVyIHRocmVzaG9sZCBpbiBkZXRlY3RDb3BpZXMgYW5kCi0jIGNvbmZpcm0gdGhhdCBjb3B5IGlzIGRldGVjdGVkIGluIFA0LgotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGV0ZWN0IGNvcGllcycgJwotCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3RAYWxsICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCi0JKAotCQljZCAiJGdpdCIgJiYKLQkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgotCi0JCWNwIGZpbGUyIGZpbGU4ICYmCi0JCWdpdCBhZGQgZmlsZTggJiYKLQkJZ2l0IGNvbW1pdCAtYSAtbSAiQ29weSBmaWxlMiB0byBmaWxlOCIgJiYKLQkJZ2l0IGRpZmYtdHJlZSAtciAtQyBIRUFEICYmCi0JCWdpdCBwNCBzdWJtaXQgJiYKLQkJcDQgZmlsZWxvZyAvL2RlcG90L2ZpbGU4ICYmCi0JCXA0IGZpbGVsb2cgLy9kZXBvdC9maWxlOCB8IHRlc3RfbXVzdF9mYWlsIGdyZXAgLXEgImJyYW5jaCBmcm9tIiAmJgotCi0JCWNwIGZpbGUyIGZpbGU5ICYmCi0JCWdpdCBhZGQgZmlsZTkgJiYKLQkJZ2l0IGNvbW1pdCAtYSAtbSAiQ29weSBmaWxlMiB0byBmaWxlOSIgJiYKLQkJZ2l0IGRpZmYtdHJlZSAtciAtQyBIRUFEICYmCi0JCWdpdCBjb25maWcgZ2l0LXA0LmRldGVjdENvcGllcyB0cnVlICYmCi0JCWdpdCBwNCBzdWJtaXQgJiYKLQkJcDQgZmlsZWxvZyAvL2RlcG90L2ZpbGU5ICYmCi0JCXA0IGZpbGVsb2cgLy9kZXBvdC9maWxlOSB8IHRlc3RfbXVzdF9mYWlsIGdyZXAgLXEgImJyYW5jaCBmcm9tIiAmJgotCi0JCWVjaG8gImZpbGUyIiA+PmZpbGUyICYmCi0JCWNwIGZpbGUyIGZpbGUxMCAmJgotCQlnaXQgYWRkIGZpbGUyIGZpbGUxMCAmJgotCQlnaXQgY29tbWl0IC1hIC1tICJNb2RpZnkgYW5kIGNvcHkgZmlsZTIgdG8gZmlsZTEwIiAmJgotCQlnaXQgZGlmZi10cmVlIC1yIC1DIEhFQUQgJiYKLQkJZ2l0IHA0IHN1Ym1pdCAmJgotCQlwNCBmaWxlbG9nIC8vZGVwb3QvZmlsZTEwICYmCi0JCXA0IGZpbGVsb2cgLy9kZXBvdC9maWxlMTAgfCBncmVwIC1xICJicmFuY2ggZnJvbSAvL2RlcG90L2ZpbGUiICYmCi0KLQkJY3AgZmlsZTIgZmlsZTExICYmCi0JCWdpdCBhZGQgZmlsZTExICYmCi0JCWdpdCBjb21taXQgLWEgLW0gIkNvcHkgZmlsZTIgdG8gZmlsZTExIiAmJgotCQlnaXQgZGlmZi10cmVlIC1yIC1DIC0tZmluZC1jb3BpZXMtaGFyZGVyIEhFQUQgJiYKLQkJc3JjPSQoZ2l0IGRpZmYtdHJlZSAtciAtQyAtLWZpbmQtY29waWVzLWhhcmRlciBIRUFEIHwgc2VkIDFkIHwgY3V0IC1mMikgJiYKLQkJdGVzdCAiJHNyYyIgPSBmaWxlMTAgJiYKLQkJZ2l0IGNvbmZpZyBnaXQtcDQuZGV0ZWN0Q29waWVzSGFyZGVyIHRydWUgJiYKLQkJZ2l0IHA0IHN1Ym1pdCAmJgotCQlwNCBmaWxlbG9nIC8vZGVwb3QvZmlsZTExICYmCi0JCXA0IGZpbGVsb2cgLy9kZXBvdC9maWxlMTEgfCBncmVwIC1xICJicmFuY2ggZnJvbSAvL2RlcG90L2ZpbGUiICYmCi0KLQkJY3AgZmlsZTIgZmlsZTEyICYmCi0JCWVjaG8gInNvbWUgdGV4dCIgPj5maWxlMTIgJiYKLQkJZ2l0IGFkZCBmaWxlMTIgJiYKLQkJZ2l0IGNvbW1pdCAtYSAtbSAiQ29weSBmaWxlMiB0byBmaWxlMTIgd2l0aCBjaGFuZ2VzIiAmJgotCQlnaXQgZGlmZi10cmVlIC1yIC1DIC0tZmluZC1jb3BpZXMtaGFyZGVyIEhFQUQgJiYKLQkJbGV2ZWw9JChnaXQgZGlmZi10cmVlIC1yIC1DIC0tZmluZC1jb3BpZXMtaGFyZGVyIEhFQUQgfCBzZWQgMWQgfCBjdXQgLWYxIHwgY3V0IC1kIiAiIC1mNSB8IHNlZCAicy9DMCovLyIpICYmCi0JCXRlc3QgLW4gIiRsZXZlbCIgJiYgdGVzdCAiJGxldmVsIiAtZ3QgMCAmJiB0ZXN0ICIkbGV2ZWwiIC1sdCA5OCAmJgotCQlzcmM9JChnaXQgZGlmZi10cmVlIC1yIC1DIC0tZmluZC1jb3BpZXMtaGFyZGVyIEhFQUQgfCBzZWQgMWQgfCBjdXQgLWYyKSAmJgotCQl0ZXN0ICIkc3JjIiA9IGZpbGUxMCAmJgotCQlnaXQgY29uZmlnIGdpdC1wNC5kZXRlY3RDb3BpZXMgJCgoJGxldmVsICsgMikpICYmCi0JCWdpdCBwNCBzdWJtaXQgJiYKLQkJcDQgZmlsZWxvZyAvL2RlcG90L2ZpbGUxMiAmJgotCQlwNCBmaWxlbG9nIC8vZGVwb3QvZmlsZTEyIHwgdGVzdF9tdXN0X2ZhaWwgZ3JlcCAtcSAiYnJhbmNoIGZyb20iICYmCi0KLQkJY3AgZmlsZTIgZmlsZTEzICYmCi0JCWVjaG8gImRpZmZlcmVudCB0ZXh0IiA+PmZpbGUxMyAmJgotCQlnaXQgYWRkIGZpbGUxMyAmJgotCQlnaXQgY29tbWl0IC1hIC1tICJDb3B5IGZpbGUyIHRvIGZpbGUxMyB3aXRoIGNoYW5nZXMiICYmCi0JCWdpdCBkaWZmLXRyZWUgLXIgLUMgLS1maW5kLWNvcGllcy1oYXJkZXIgSEVBRCAmJgotCQlsZXZlbD0kKGdpdCBkaWZmLXRyZWUgLXIgLUMgLS1maW5kLWNvcGllcy1oYXJkZXIgSEVBRCB8IHNlZCAxZCB8IGN1dCAtZjEgfCBjdXQgLWQiICIgLWY1IHwgc2VkICJzL0MwKi8vIikgJiYKLQkJdGVzdCAtbiAiJGxldmVsIiAmJiB0ZXN0ICIkbGV2ZWwiIC1ndCAyICYmIHRlc3QgIiRsZXZlbCIgLWx0IDEwMCAmJgotCQlzcmM9JChnaXQgZGlmZi10cmVlIC1yIC1DIC0tZmluZC1jb3BpZXMtaGFyZGVyIEhFQUQgfCBzZWQgMWQgfCBjdXQgLWYyKSAmJgotCQl0ZXN0ICIkc3JjIiA9IGZpbGUxMCAmJgotCQlnaXQgY29uZmlnIGdpdC1wNC5kZXRlY3RDb3BpZXMgJCgoJGxldmVsIC0gMikpICYmCi0JCWdpdCBwNCBzdWJtaXQgJiYKLQkJcDQgZmlsZWxvZyAvL2RlcG90L2ZpbGUxMyAmJgotCQlwNCBmaWxlbG9nIC8vZGVwb3QvZmlsZTEzIHwgZ3JlcCAtcSAiYnJhbmNoIGZyb20gLy9kZXBvdC9maWxlIgorCQlQNFBPUlQ9bm9zdWNoaG9zdDo2NTUzNyAmJgorCQlleHBvcnQgUDRQT1JUICYmCisJCXRlc3RfZXhwZWN0X2NvZGUgMSBnaXQgcDQgc3luYyA+b3V0IDI+ZXJyICYmCisJCWdyZXAgImNvbm5lY3QgdG8gbm9zdWNoaG9zdCIgZXJyCiAJKQogJwogCmRpZmYgLS1naXQgYS90L3Q5ODAxLWdpdC1wNC1icmFuY2guc2ggYi90L3Q5ODAxLWdpdC1wNC1icmFuY2guc2gKaW5kZXggOTlmZTE2Yi4uOTczMDgyMSAxMDA3NTUKLS0tIGEvdC90OTgwMS1naXQtcDQtYnJhbmNoLnNoCisrKyBiL3QvdDk4MDEtZ2l0LXA0LWJyYW5jaC5zaApAQCAtNDEwLDYgKzQxMCw4MyBAQAogCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBmaWxlMwogCSkKICcKKworIyBGcm9tIGEgcmVwb3J0IGluIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTE4OTM2ODgKKyMgd2hlcmUgLS11c2UtY2xpZW50LXNwZWMgY2F1c2VkIGJyYW5jaCBwcmVmaXhlcyBub3QgdG8gYmUgcmVtb3ZlZDsKKyMgZXZlcnkgZmlsZSBpbiBnaXQgYXBwZWFyZWQgaW50byBhIHN1YmRpcmVjdG9yeSBvZiB0aGUgYnJhbmNoIG5hbWUuCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd1c2UtY2xpZW50LXNwZWMgZGV0ZWN0LWJyYW5jaGVzIHNldHVwJyAnCisJcm0gLXJmICIkY2xpIiAmJgorCW1rZGlyICIkY2xpIiAmJgorCSgKKwkJY2QgIiRjbGkiICYmCisJCWNsaWVudF92aWV3ICIvL2RlcG90L3VzZWNzLy4uLiAvL2NsaWVudC8uLi4iICYmCisJCW1rZGlyIGIxICYmCisJCWVjaG8gYjEvYjEtZmlsZTEgPmIxL2IxLWZpbGUxICYmCisJCXA0IGFkZCBiMS9iMS1maWxlMSAmJgorCQlwNCBzdWJtaXQgLWQgImIxL2IxLWZpbGUxIiAmJgorCisJCXA0IGludGVncmF0ZSAvL2RlcG90L3VzZWNzL2IxLy4uLiAvL2RlcG90L3VzZWNzL2IyLy4uLiAmJgorCQlwNCBzdWJtaXQgLWQgImIxIC0+IGIyIiAmJgorCQlwNCBicmFuY2ggLWkgPDwtRU9GICYmCisJCUJyYW5jaDogYjIKKwkJVmlldzogLy9kZXBvdC91c2Vjcy9iMS8uLi4gLy9kZXBvdC91c2Vjcy9iMi8uLi4KKwkJRU9GCisKKwkJZWNobyBiMi9iMi1maWxlMiA+YjIvYjItZmlsZTIgJiYKKwkJcDQgYWRkIGIyL2IyLWZpbGUyICYmCisJCXA0IHN1Ym1pdCAtZCAiYjIvYjItZmlsZTIiCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd1c2UtY2xpZW50LXNwZWMgZGV0ZWN0LWJyYW5jaGVzIGZpbGVzIGluIHRvcC1sZXZlbCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCXRlc3RfY3JlYXRlX3JlcG8gIiRnaXQiICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IHA0IHN5bmMgLS1kZXRlY3QtYnJhbmNoZXMgLS11c2UtY2xpZW50LXNwZWMgLy9kZXBvdC91c2Vjc0BhbGwgJiYKKwkJZ2l0IGNoZWNrb3V0IC1iIG1hc3RlciBwNC91c2Vjcy9iMSAmJgorCQl0ZXN0X3BhdGhfaXNfZmlsZSBiMS1maWxlMSAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBiMi1maWxlMiAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBiMSAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBiMiAmJgorCisJCWdpdCBjaGVja291dCAtYiBiMiBwNC91c2Vjcy9iMiAmJgorCQl0ZXN0X3BhdGhfaXNfZmlsZSBiMS1maWxlMSAmJgorCQl0ZXN0X3BhdGhfaXNfZmlsZSBiMi1maWxlMiAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBiMSAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBiMgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndXNlLWNsaWVudC1zcGVjIGRldGVjdC1icmFuY2hlcyBza2lwcyBicmFuY2hlcyBzZXR1cCcgJworCSgKKwkJY2QgIiRjbGkiICYmCisKKwkJcDQgaW50ZWdyYXRlIC8vZGVwb3QvdXNlY3MvYjEvLi4uIC8vZGVwb3QvdXNlY3MvYjMvLi4uICYmCisJCXA0IHN1Ym1pdCAtZCAiYjEgLT4gYjMiICYmCisJCXA0IGJyYW5jaCAtaSA8PC1FT0YgJiYKKwkJQnJhbmNoOiBiMworCQlWaWV3OiAvL2RlcG90L3VzZWNzL2IxLy4uLiAvL2RlcG90L3VzZWNzL2IzLy4uLgorCQlFT0YKKworCQllY2hvIGIzL2IzLWZpbGUzID5iMy9iMy1maWxlMyAmJgorCQlwNCBhZGQgYjMvYjMtZmlsZTMgJiYKKwkJcDQgc3VibWl0IC1kICJiMy9iMy1maWxlMyIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3VzZS1jbGllbnQtc3BlYyBkZXRlY3QtYnJhbmNoZXMgc2tpcHMgYnJhbmNoZXMnICcKKwljbGllbnRfdmlldyAiLy9kZXBvdC91c2Vjcy8uLi4gLy9jbGllbnQvLi4uIiBcCisJCSAgICAiLS8vZGVwb3QvdXNlY3MvYjMvLi4uIC8vY2xpZW50L2IzLy4uLiIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwl0ZXN0X2NyZWF0ZV9yZXBvICIkZ2l0IiAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWdpdCBwNCBzeW5jIC0tZGV0ZWN0LWJyYW5jaGVzIC0tdXNlLWNsaWVudC1zcGVjIC8vZGVwb3QvdXNlY3NAYWxsICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgcmVmcy9yZW1vdGVzL3A0L3VzZWNzL2IzCisJKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdraWxsIHA0ZCcgJwogCWtpbGxfcDRkCiAnCmRpZmYgLS1naXQgYS90L3Q5ODAyLWdpdC1wNC1maWxldHlwZS5zaCBiL3QvdDk4MDItZ2l0LXA0LWZpbGV0eXBlLnNoCmluZGV4IDIxOTI0ZGYuLmVlZWZhNjcgMTAwNzU1Ci0tLSBhL3QvdDk4MDItZ2l0LXA0LWZpbGV0eXBlLnNoCisrKyBiL3QvdDk4MDItZ2l0LXA0LWZpbGV0eXBlLnNoCkBAIC04LDYgKzgsMTIzIEBACiAJc3RhcnRfcDRkCiAnCiAKKyMKKyMgVGhpcyBzZXJpZXMgb2YgdGVzdHMgY2hlY2tzIG5ld2xpbmUgaGFuZGxpbmcgIEJvdGggcDQgYW5kCisjIGdpdCBzdG9yZSBuZXdsaW5lcyBhcyBcbiwgYW5kIGhhdmUgb3B0aW9ucyB0byBjaG9vc2UgaG93CisjIG5ld2xpbmVzIGFwcGVhciBpbiBjaGVja2VkLW91dCBmaWxlcy4KKyMKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3A0IGNsaWVudCBuZXdsaW5lcywgdW5peCcgJworCSgKKwkJY2QgIiRjbGkiICYmCisJCXA0IGNsaWVudCAtbyB8IHNlZCAiL0xpbmVFbmQvcy86LiovOnVuaXgvIiB8IHA0IGNsaWVudCAtaSAmJgorCQlwcmludGYgInVuaXhcbmNybGZcbiIgPmYtdW5peCAmJgorCQlwcmludGYgInVuaXhcclxuY3JsZlxyXG4iID5mLXVuaXgtYXMtY3JsZiAmJgorCQlwNCBhZGQgLXQgdGV4dCBmLXVuaXggJiYKKwkJcDQgc3VibWl0IC1kIGYtdW5peCAmJgorCisJCSMgTGluZUVuZDogdW5peDsgc2hvdWxkIGJlIG5vIGNoYW5nZSBhZnRlciBzeW5jCisJCWNwIGYtdW5peCBmLXVuaXgtb3JpZyAmJgorCQlwNCBzeW5jIC1mICYmCisJCXRlc3RfY21wIGYtdW5peC1vcmlnIGYtdW5peCAmJgorCisJCSMgbWFrZSBzdXJlIHN0b3JlZCBpbiByZXBvIGFzIHVuaXggbmV3bGluZXMKKwkJIyB1c2Ugc2VkIHRvIGVhdCBweXRob24tYXBwZW5lZCBuZXdsaW5lCisJCXA0IC1HIHByaW50IC8vZGVwb3QvZi11bml4IHwgbWFyc2hhbF9kdW1wIGRhdGEgMiB8XAorCQkgICAgc2VkIFwkZCA+Zi11bml4LXA0LXByaW50ICYmCisJCXRlc3RfY21wIGYtdW5peC1vcmlnIGYtdW5peC1wNC1wcmludCAmJgorCisJCSMgc3dpdGNoIHRvIHdpbiwgbWFrZSBzdXJlIGxmIC0+IGNybGYKKwkJcDQgY2xpZW50IC1vIHwgc2VkICIvTGluZUVuZC9zLzouKi86d2luLyIgfCBwNCBjbGllbnQgLWkgJiYKKwkJcDQgc3luYyAtZiAmJgorCQl0ZXN0X2NtcCBmLXVuaXgtYXMtY3JsZiBmLXVuaXgKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3A0IGNsaWVudCBuZXdsaW5lcywgd2luJyAnCisJKAorCQljZCAiJGNsaSIgJiYKKwkJcDQgY2xpZW50IC1vIHwgc2VkICIvTGluZUVuZC9zLzouKi86d2luLyIgfCBwNCBjbGllbnQgLWkgJiYKKwkJcHJpbnRmICJ3aW5cclxuY3JsZlxyXG4iID5mLXdpbiAmJgorCQlwcmludGYgIndpblxuY3JsZlxuIiA+Zi13aW4tYXMtbGYgJiYKKwkJcDQgYWRkIC10IHRleHQgZi13aW4gJiYKKwkJcDQgc3VibWl0IC1kIGYtd2luICYmCisKKwkJIyBMaW5lRW5kOiB3aW47IHNob3VsZCBiZSBubyBjaGFuZ2UgYWZ0ZXIgc3luYworCQljcCBmLXdpbiBmLXdpbi1vcmlnICYmCisJCXA0IHN5bmMgLWYgJiYKKwkJdGVzdF9jbXAgZi13aW4tb3JpZyBmLXdpbiAmJgorCisJCSMgbWFrZSBzdXJlIHN0b3JlZCBpbiByZXBvIGFzIHVuaXggbmV3bGluZXMKKwkJIyB1c2Ugc2VkIHRvIGVhdCBweXRob24tYXBwZW5lZCBuZXdsaW5lCisJCXA0IC1HIHByaW50IC8vZGVwb3QvZi13aW4gfCBtYXJzaGFsX2R1bXAgZGF0YSAyIHxcCisJCSAgICBzZWQgXCRkID5mLXdpbi1wNC1wcmludCAmJgorCQl0ZXN0X2NtcCBmLXdpbi1hcy1sZiBmLXdpbi1wNC1wcmludCAmJgorCisJCSMgc3dpdGNoIHRvIHVuaXgsIG1ha2Ugc3VyZSBsZiAtPiBjcmxmCisJCXA0IGNsaWVudCAtbyB8IHNlZCAiL0xpbmVFbmQvcy86LiovOnVuaXgvIiB8IHA0IGNsaWVudCAtaSAmJgorCQlwNCBzeW5jIC1mICYmCisJCXRlc3RfY21wIGYtd2luLWFzLWxmIGYtd2luCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdlbnN1cmUgYmxvYnMgc3RvcmUgb25seSBsZiBuZXdsaW5lcycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWdpdCBpbml0ICYmCisJCWdpdCBwNCBzeW5jIC8vZGVwb3RAYWxsICYmCisKKwkJIyB2ZXJpZnkgdGhlIGZpbGVzIGluIC5naXQgYXJlIHN0b3JlZCBvbmx5IHdpdGggbmV3bGluZXMKKwkJbz0kKGdpdCBscy10cmVlIHA0L21hc3RlciAtLSBmLXVuaXggfCBjdXQgLWYxIHwgY3V0IC1kXCAgLWYzKSAmJgorCQlnaXQgY2F0LWZpbGUgYmxvYiAkbyA+Zi11bml4LWJsb2IgJiYKKwkJdGVzdF9jbXAgIiRjbGkiL2YtdW5peC1vcmlnIGYtdW5peC1ibG9iICYmCisKKwkJbz0kKGdpdCBscy10cmVlIHA0L21hc3RlciAtLSBmLXdpbiB8IGN1dCAtZjEgfCBjdXQgLWRcICAtZjMpICYmCisJCWdpdCBjYXQtZmlsZSBibG9iICRvID5mLXdpbi1ibG9iICYmCisJCXRlc3RfY21wICIkY2xpIi9mLXdpbi1hcy1sZiBmLXdpbi1ibG9iICYmCisKKwkJcm0gZi11bml4LWJsb2IgZi13aW4tYmxvYgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0YXR0cmlidXRlcyBzZXR0aW5nIGVvbD1sZiBwcm9kdWNlcyBsZiBuZXdsaW5lcycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCSgKKwkJIyBjaGVja291dCB0aGUgZmlsZXMgYW5kIG1ha2Ugc3VyZSBjb3JlLmVvbCB3b3JrcyBhcyBwbGFubmVkCisJCWNkICIkZ2l0IiAmJgorCQlnaXQgaW5pdCAmJgorCQllY2hvICIqIGVvbD1sZiIgPi5naXRhdHRyaWJ1dGVzICYmCisJCWdpdCBwNCBzeW5jIC8vZGVwb3RAYWxsICYmCisJCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwkJdGVzdF9jbXAgIiRjbGkiL2YtdW5peC1vcmlnIGYtdW5peCAmJgorCQl0ZXN0X2NtcCAiJGNsaSIvZi13aW4tYXMtbGYgZi13aW4KKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdGF0dHJpYnV0ZXMgc2V0dGluZyBlb2w9Y3JsZiBwcm9kdWNlcyBjcmxmIG5ld2xpbmVzJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJKAorCQkjIGNoZWNrb3V0IHRoZSBmaWxlcyBhbmQgbWFrZSBzdXJlIGNvcmUuZW9sIHdvcmtzIGFzIHBsYW5uZWQKKwkJY2QgIiRnaXQiICYmCisJCWdpdCBpbml0ICYmCisJCWVjaG8gIiogZW9sPWNybGYiID4uZ2l0YXR0cmlidXRlcyAmJgorCQlnaXQgcDQgc3luYyAvL2RlcG90QGFsbCAmJgorCQlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJCXRlc3RfY21wICIkY2xpIi9mLXVuaXgtYXMtY3JsZiBmLXVuaXggJiYKKwkJdGVzdF9jbXAgIiRjbGkiL2Ytd2luLW9yaWcgZi13aW4KKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NybGYgY2xlYW51cCcgJworCSgKKwkJY2QgIiRjbGkiICYmCisJCXJtIGYtdW5peC1vcmlnIGYtdW5peC1hcy1jcmxmICYmCisJCXJtIGYtd2luLW9yaWcgZi13aW4tYXMtbGYgJiYKKwkJcDQgY2xpZW50IC1vIHwgc2VkICIvTGluZUVuZC9zLzouKi86dW5peC8iIHwgcDQgY2xpZW50IC1pICYmCisJCXA0IHN5bmMgLWYKKwkpCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3V0Zi0xNiBmaWxlIGNyZWF0ZScgJwogCSgKIAkJY2QgIiRjbGkiICYmCkBAIC0xMDUsMTIgKzIyMiwxMyBAQAogCWNhdCA+Z2VuZG91YmxlLnB5IDw8LVxFT0YKIAlpbXBvcnQgc3lzCiAJaW1wb3J0IHN0cnVjdAotCWltcG9ydCBhcnJheQogCi0JcyA9IGFycmF5LmFycmF5KCJjIiwgJ1wwJyAqIDI2KQotCXN0cnVjdC5wYWNrX2ludG8oIj5MIiwgcywgIDAsIDB4MDAwNTE2MDcpICAjIEFwcGxlRG91YmxlCi0Jc3RydWN0LnBhY2tfaW50bygiPkwiLCBzLCAgNCwgMHgwMDAyMDAwMCkgICMgdmVyc2lvbiAyCi0Jcy50b2ZpbGUoc3lzLnN0ZG91dCkKKwlzID0gc3RydWN0LnBhY2soIj5MTDE4cyIsCisJCQkweDAwMDUxNjA3LCAgIyBBcHBsZURvdWJsZQorCQkJMHgwMDAyMDAwMCwgICMgdmVyc2lvbiAyCisJCQkiIiAgICAgICAgICAgIyBwYWQgdG8gMjYgYnl0ZXMKKwkpCisJc3lzLnN0ZG91dC53cml0ZShzKQogCUVPRgogfQogCmRpZmYgLS1naXQgYS90L3Q5ODA1LWdpdC1wNC1za2lwLXN1Ym1pdC1lZGl0LnNoIGIvdC90OTgwNS1naXQtcDQtc2tpcC1zdWJtaXQtZWRpdC5zaAppbmRleCAzNTNkY2ZiLi5mZjJjYzc5IDEwMDc1NQotLS0gYS90L3Q5ODA1LWdpdC1wNC1za2lwLXN1Ym1pdC1lZGl0LnNoCisrKyBiL3QvdDk4MDUtZ2l0LXA0LXNraXAtc3VibWl0LWVkaXQuc2gKQEAgLTM4LDcgKzM4LDcgQEAKIAkJY2QgIiRnaXQiICYmCiAJCWVjaG8gbGluZSA+PmZpbGUxICYmCiAJCWdpdCBjb21taXQgLWEgLW0gImNoYW5nZSAzIChub3QgcmVhbGx5KSIgJiYKLQkJcHJpbnRmICJiYWQgcmVzcG9uc2Vcbm5cbiIgfCBnaXQgcDQgc3VibWl0ICYmCisJCXByaW50ZiAiYmFkIHJlc3BvbnNlXG5uXG4iIHwgdGVzdF9leHBlY3RfY29kZSAxIGdpdCBwNCBzdWJtaXQgJiYKIAkJcDQgY2hhbmdlcyAvL2RlcG90Ly4uLiA+d2MgJiYKIAkJdGVzdF9saW5lX2NvdW50ID0gMiB3YwogCSkKQEAgLTc4LDIwICs3OCwxOSBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbm8gY29uZmlnLCBlZGl0ZWQnICcKIAlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCi0JZWQ9IiRUUkFTSF9ESVJFQ1RPUlkvZWQuc2giICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJybSBcIiRlZFwiIiAmJgotCWNhdCA+IiRlZCIgPDwtRU9GICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSBlZC5zaCIgJiYKKwljYXQgPmVkLnNoIDw8LUVPRiAmJgogCQkjISRTSEVMTF9QQVRICiAJCXNsZWVwIDEKIAkJdG91Y2ggIlwkMSIKIAkJZXhpdCAwCiAJRU9GCi0JY2htb2QgNzU1ICIkZWQiICYmCisJY2htb2QgNzU1IGVkLnNoICYmCiAJKAogCQljZCAiJGdpdCIgJiYKIAkJZWNobyBsaW5lID4+ZmlsZTEgJiYKIAkJZ2l0IGNvbW1pdCAtYSAtbSAiY2hhbmdlIDUiICYmCi0JCVA0RURJVE9SPSIiIEVESVRPUj0iXCIkZWRcIiIgZ2l0IHA0IHN1Ym1pdCAmJgorCQlQNEVESVRPUj0iIiBFRElUT1I9IlwiJFRSQVNIX0RJUkVDVE9SWS9lZC5zaFwiIiBnaXQgcDQgc3VibWl0ICYmCiAJCXA0IGNoYW5nZXMgLy9kZXBvdC8uLi4gPndjICYmCiAJCXRlc3RfbGluZV9jb3VudCA9IDUgd2MKIAkpCmRpZmYgLS1naXQgYS90L3Q5ODA2LWdpdC1wNC1vcHRpb25zLnNoIGIvdC90OTgwNi1naXQtcDQtb3B0aW9ucy5zaAppbmRleCAyODkyMzY3Li4yNTRkNDI4IDEwMDc1NQotLS0gYS90L3Q5ODA2LWdpdC1wNC1vcHRpb25zLnNoCisrKyBiL3QvdDk4MDYtZ2l0LXA0LW9wdGlvbnMuc2gKQEAgLTI3LDIyICsyNywxMDkgQEAKIAl0ZXN0X211c3RfZmFpbCBnaXQgcDQgY2xvbmUgLS1naXQtZGlyPXh4IC8vZGVwb3QKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgLS1icmFuY2gnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIC0tYnJhbmNoIHNob3VsZCBjaGVja291dCBtYXN0ZXInICcKIAlnaXQgcDQgY2xvbmUgLS1icmFuY2g9cmVmcy9yZW1vdGVzL3A0L3NiIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgogCSgKIAkJY2QgIiRnaXQiICYmCi0JCWdpdCBscy1maWxlcyA+ZmlsZXMgJiYKLQkJdGVzdF9saW5lX2NvdW50ID0gMCBmaWxlcyAmJgotCQl0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L3JlZnMvcmVtb3Rlcy9wNC9zYgorCQlnaXQgcmV2LXBhcnNlIHJlZnMvcmVtb3Rlcy9wNC9zYiA+c2IgJiYKKwkJZ2l0IHJldi1wYXJzZSByZWZzL2hlYWRzL21hc3RlciA+bWFzdGVyICYmCisJCXRlc3RfY21wIHNiIG1hc3RlciAmJgorCQlnaXQgcmV2LXBhcnNlIEhFQUQgPmhlYWQgJiYKKwkJdGVzdF9jbXAgc2IgaGVhZAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3luYyB3aGVuIG5vIG1hc3RlciBicmFuY2ggcHJpbnRzIGEgbmljZSBlcnJvcicgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCWdpdCBwNCBjbG9uZSAtLWJyYW5jaD1yZWZzL3JlbW90ZXMvcDQvc2IgLS1kZXN0PSIkZ2l0IiAvL2RlcG90QDIgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcDQgc3luYyAyPmVyciAmJgorCQlncmVwICJFcnJvcjogbm8gYnJhbmNoIHJlZnMvcmVtb3Rlcy9wNC9tYXN0ZXIiIGVycgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3luYyAtLWJyYW5jaCBidWlsZHMgdGhlIGZ1bGwgcmVmIG5hbWUgY29ycmVjdGx5JyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IGluaXQgJiYKKworCQlnaXQgcDQgc3luYyAtLWJyYW5jaD1iMSAvL2RlcG90ICYmCisJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL3A0L2IxICYmCisJCWdpdCBwNCBzeW5jIC0tYnJhbmNoPXA0L2IyIC8vZGVwb3QgJiYKKwkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvcDQvYjIgJiYKKworCQlnaXQgcDQgc3luYyAtLWltcG9ydC1sb2NhbCAtLWJyYW5jaD1oMSAvL2RlcG90ICYmCisJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9wNC9oMSAmJgorCQlnaXQgcDQgc3luYyAtLWltcG9ydC1sb2NhbCAtLWJyYW5jaD1wNC9oMiAvL2RlcG90ICYmCisJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9wNC9oMiAmJgorCisJCWdpdCBwNCBzeW5jIC0tYnJhbmNoPXJlZnMvc3R1ZmYgLy9kZXBvdCAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvc3R1ZmYKKwkpCisnCisKKyMgZW5nYWdlcyAtLWRldGVjdC1icmFuY2hlcyBjb2RlLCB3aGljaCB3aWxsIGRvIGZpbGVuYW1lIGZpbHRlcmluZyBzbworIyBubyBzeW5jIHRvIGVpdGhlciBiMSBvciBiMgordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3luYyB3aGVuIHR3byBicmFuY2hlcyBidXQgbm8gbWFzdGVyIHNob3VsZCBub29wJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IGluaXQgJiYKKwkJZ2l0IHA0IHN5bmMgLS1icmFuY2g9cmVmcy9yZW1vdGVzL3A0L2IxIC8vZGVwb3RAMiAmJgorCQlnaXQgcDQgc3luYyAtLWJyYW5jaD1yZWZzL3JlbW90ZXMvcDQvYjIgLy9kZXBvdEAyICYmCisJCWdpdCBwNCBzeW5jICYmCisJCWdpdCBzaG93IC1zIC0tZm9ybWF0PSVzIHJlZnMvcmVtb3Rlcy9wNC9iMSA+c2hvdyAmJgorCQlncmVwICJJbml0aWFsIGltcG9ydCIgc2hvdyAmJgorCQlnaXQgc2hvdyAtcyAtLWZvcm1hdD0lcyByZWZzL3JlbW90ZXMvcDQvYjIgPnNob3cgJiYKKwkJZ3JlcCAiSW5pdGlhbCBpbXBvcnQiIHNob3cKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N5bmMgLS1icmFuY2ggdXBkYXRlcyBzcGVjaWZpYyBicmFuY2gsIG5vIGRldGVjdGlvbicgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWdpdCBpbml0ICYmCisJCWdpdCBwNCBzeW5jIC0tYnJhbmNoPWIxIC8vZGVwb3RAMiAmJgorCQlnaXQgcDQgc3luYyAtLWJyYW5jaD1iMiAvL2RlcG90QDIgJiYKKwkJZ2l0IHA0IHN5bmMgLS1icmFuY2g9YjIgJiYKKwkJZ2l0IHNob3cgLXMgLS1mb3JtYXQ9JXMgcmVmcy9yZW1vdGVzL3A0L2IxID5zaG93ICYmCisJCWdyZXAgIkluaXRpYWwgaW1wb3J0IiBzaG93ICYmCisJCWdpdCBzaG93IC1zIC0tZm9ybWF0PSVzIHJlZnMvcmVtb3Rlcy9wNC9iMiA+c2hvdyAmJgorCQlncmVwICJjaGFuZ2UgMyIgc2hvdworCSkKKycKKworIyBhbGxvd3MgdXNpbmcgdGhlIHJlZm5hbWUgInA0IiBhcyBhIHNob3J0IG5hbWUgZm9yIHA0L21hc3RlcgordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgY3JlYXRlcyBIRUFEIHN5bWJvbGljIHJlZmVyZW5jZScgJworCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9wNC9tYXN0ZXIgPm1hc3RlciAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHA0ID5wNCAmJgorCQl0ZXN0X2NtcCBtYXN0ZXIgcDQKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIC0tYnJhbmNoIGNyZWF0ZXMgSEVBRCBzeW1ib2xpYyByZWZlcmVuY2UnICcKKwlnaXQgcDQgY2xvbmUgLS1icmFuY2g9cmVmcy9yZW1vdGVzL3A0L3NiIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL3A0L3NiID5zYiAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHA0ID5wNCAmJgorCQl0ZXN0X2NtcCBzYiBwNAogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgLS1jaGFuZ2VzZmlsZScgJwotCWNmPSIkVFJBU0hfRElSRUNUT1JZL2NmIiAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gXCIkY2ZcIiIgJiYKLQlwcmludGYgIjFcbjNcbiIgPiIkY2YiICYmCi0JZ2l0IHA0IGNsb25lIC0tY2hhbmdlc2ZpbGU9IiRjZiIgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSBjZiIgJiYKKwlwcmludGYgIjFcbjNcbiIgPmNmICYmCisJZ2l0IHA0IGNsb25lIC0tY2hhbmdlc2ZpbGU9IiRUUkFTSF9ESVJFQ1RPUlkvY2YiIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgogCSgKIAkJY2QgIiRnaXQiICYmCkBAIC01NSwxMCArMTQyLDkgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgLS1jaGFuZ2VzZmlsZSwgQGFsbCcgJwotCWNmPSIkVFJBU0hfRElSRUNUT1JZL2NmIiAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gXCIkY2ZcIiIgJiYKLQlwcmludGYgIjFcbjNcbiIgPiIkY2YiICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IHA0IGNsb25lIC0tY2hhbmdlc2ZpbGU9IiRjZiIgLS1kZXN0PSIkZ2l0IiAvL2RlcG90QGFsbAorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gY2YiICYmCisJcHJpbnRmICIxXG4zXG4iID5jZiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBwNCBjbG9uZSAtLWNoYW5nZXNmaWxlPSIkVFJBU0hfRElSRUNUT1JZL2NmIiAtLWRlc3Q9IiRnaXQiIC8vZGVwb3RAYWxsCiAnCiAKICMgaW1wb3J0cyBib3RoIG1hc3RlciBhbmQgcDQvbWFzdGVyIGluIHJlZnMvaGVhZHMKQEAgLTEyOCwzOCArMjE0LDU4IEBACiAJCWV4ZWMgPi9kZXYvbnVsbCAmJgogCQl0ZXN0X211c3RfZmFpbCBnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAtLXVzZS1jbGllbnQtc3BlYwogCSkgJiYKKwkjIGJ1aWxkIGEgZGlmZmVyZW50IGNsaWVudAogCWNsaTI9IiRUUkFTSF9ESVJFQ1RPUlkvY2xpMiIgJiYKIAlta2RpciAtcCAiJGNsaTIiICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJybWRpciBcIiRjbGkyXCIiICYmCi0JKAotCQljZCAiJGNsaTIiICYmCi0JCXA0IGNsaWVudCAtaSA8PC1FT0YKLQkJQ2xpZW50OiBjbGllbnQyCi0JCURlc2NyaXB0aW9uOiBjbGllbnQyCi0JCVJvb3Q6ICRjbGkyCi0JCVZpZXc6IC8vZGVwb3Qvc3ViLy4uLiAvL2NsaWVudDIvYnVzLy4uLgotCQlFT0YKLQkpICYmCi0JUDRDTElFTlQ9Y2xpZW50MiAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgotCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC0tdXNlLWNsaWVudC1zcGVjIC8vZGVwb3QvLi4uICYmCiAJKAotCQljZCAiJGdpdCIgJiYKLQkJdGVzdF9wYXRoX2lzX2ZpbGUgYnVzL2Rpci9mNCAmJgotCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBmaWxlMQotCSkgJiYKLQljbGVhbnVwX2dpdCAmJgorCQkjIGdyb3VwIFA0Q0xJRU5UIGFuZCBjbGkgY2hhbmdlcyBpbiBhIHN1Yi1zaGVsbAorCQlQNENMSUVOVD1jbGllbnQyICYmCisJCWNsaT0iJGNsaTIiICYmCisJCWNsaWVudF92aWV3ICIvL2RlcG90L3N1Yi8uLi4gLy9jbGllbnQyL2J1cy8uLi4iICYmCisJCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC0tdXNlLWNsaWVudC1zcGVjIC8vZGVwb3QvLi4uICYmCisJCSgKKwkJCWNkICIkZ2l0IiAmJgorCQkJdGVzdF9wYXRoX2lzX2ZpbGUgYnVzL2Rpci9mNCAmJgorCQkJdGVzdF9wYXRoX2lzX21pc3NpbmcgZmlsZTEKKwkJKSAmJgorCQljbGVhbnVwX2dpdCAmJgorCQkjIHNhbWUgdGhpbmcgYWdhaW4sIHRoaXMgdGltZSB3aXRoIHZhcmlhYmxlIGluc3RlYWQgb2Ygb3B0aW9uCisJCSgKKwkJCWNkICIkZ2l0IiAmJgorCQkJZ2l0IGluaXQgJiYKKwkJCWdpdCBjb25maWcgZ2l0LXA0LnVzZUNsaWVudFNwZWMgdHJ1ZSAmJgorCQkJZ2l0IHA0IHN5bmMgLy9kZXBvdC8uLi4gJiYKKwkJCWdpdCBjaGVja291dCAtYiBtYXN0ZXIgcDQvbWFzdGVyICYmCisJCQl0ZXN0X3BhdGhfaXNfZmlsZSBidXMvZGlyL2Y0ICYmCisJCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBmaWxlMQorCQkpCisJKQorJwogCi0JIyBzYW1lIHRoaW5nIGFnYWluLCB0aGlzIHRpbWUgd2l0aCB2YXJpYWJsZSBpbnN0ZWFkIG9mIG9wdGlvbgotCW1rZGlyICIkZ2l0IiAmJgordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibWl0IHdvcmtzIHdpdGggbm8gcDQvbWFzdGVyJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJZ2l0IHA0IGNsb25lIC0tYnJhbmNoPWIxIC8vZGVwb3RAMSwyIC0tZGVzdGluYXRpb249IiRnaXQiICYmCiAJKAogCQljZCAiJGdpdCIgJiYKLQkJZ2l0IGluaXQgJiYKLQkJZ2l0IGNvbmZpZyBnaXQtcDQudXNlQ2xpZW50U3BlYyB0cnVlICYmCi0JCWdpdCBwNCBzeW5jIC8vZGVwb3QvLi4uICYmCi0JCWdpdCBjaGVja291dCAtYiBtYXN0ZXIgcDQvbWFzdGVyICYmCi0JCXRlc3RfcGF0aF9pc19maWxlIGJ1cy9kaXIvZjQgJiYKLQkJdGVzdF9wYXRoX2lzX21pc3NpbmcgZmlsZTEKKwkJdGVzdF9jb21taXQgc3VibWl0LTEtYnJhbmNoICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LnNraXBTdWJtaXRFZGl0IHRydWUgJiYKKwkJZ2l0IHA0IHN1Ym1pdCAtLWJyYW5jaD1iMQorCSkKKycKKworIyBUaGUgc3luYy9yZWJhc2UgcGFydCBwb3N0LXN1Ym1pdCB3aWxsIGVuZ2FnZSBkZXRlY3QtYnJhbmNoZXMKKyMgbWFjaGluZXJ5IHdoaWNoIHdpbGwgbm90IGRvIGFueXRoaW5nIGluIHRoaXMgcGFydGljdWxhciB0ZXN0LgordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibWl0IHdvcmtzIHdpdGggdHdvIGJyYW5jaGVzJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJZ2l0IHA0IGNsb25lIC0tYnJhbmNoPWIxIC8vZGVwb3RAMSwyIC0tZGVzdGluYXRpb249IiRnaXQiICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IHA0IHN5bmMgLS1icmFuY2g9YjIgLy9kZXBvdEAxLDMgJiYKKwkJdGVzdF9jb21taXQgc3VibWl0LTItYnJhbmNoZXMgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgorCQlnaXQgcDQgc3VibWl0CiAJKQogJwogCmRpZmYgLS1naXQgYS90L3Q5ODA3LWdpdC1wNC1zdWJtaXQuc2ggYi90L3Q5ODA3LWdpdC1wNC1zdWJtaXQuc2gKaW5kZXggZjIzYjRjMy4uMWZiN2JjNyAxMDA3NTUKLS0tIGEvdC90OTgwNy1naXQtcDQtc3VibWl0LnNoCisrKyBiL3QvdDk4MDctZ2l0LXA0LXN1Ym1pdC5zaApAQCAtMTcsNiArMTcsMTYgQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ2lzX2NsaV9maWxlX3dyaXRlYWJsZSBmdW5jdGlvbicgJworCSgKKwkJY2QgIiRjbGkiICYmCisJCWVjaG8gYSA+YSAmJgorCQlpc19jbGlfZmlsZV93cml0ZWFibGUgYSAmJgorCQkhIGlzX2NsaV9maWxlX3dyaXRlYWJsZSBmaWxlMSAmJgorCQlybSBhCisJKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtaXQgd2l0aCBubyBjbGllbnQgZGlyJyAnCiAJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCiAJZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgpAQCAtNTQsNiArNjQsNDcgQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1pdCAtLWRyeS1ydW4nICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJdGVzdF9jb21taXQgImRyeS1ydW4xIiAmJgorCQl0ZXN0X2NvbW1pdCAiZHJ5LXJ1bjIiICYmCisJCWdpdCBwNCBzdWJtaXQgLS1kcnktcnVuID5vdXQgJiYKKwkJdGVzdF9pMThuZ3JlcCAiV291bGQgYXBwbHkiIG91dAorCSkgJiYKKwkoCisJCWNkICIkY2xpIiAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyAiZHJ5LXJ1bjEudCIgJiYKKwkJdGVzdF9wYXRoX2lzX21pc3NpbmcgImRyeS1ydW4yLnQiCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtaXQgLS1kcnktcnVuIC0tZXhwb3J0LWxhYmVscycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQllY2hvIGRyeS1ydW4xID5kcnktcnVuMSAmJgorCQlnaXQgYWRkIGRyeS1ydW4xICYmCisJCWdpdCBjb21taXQgLW0gImRyeS1ydW4xIiBkcnktcnVuMSAmJgorCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdCB0cnVlICYmCisJCWdpdCBwNCBzdWJtaXQgJiYKKwkJZWNobyBkcnktcnVuMiA+ZHJ5LXJ1bjIgJiYKKwkJZ2l0IGFkZCBkcnktcnVuMiAmJgorCQlnaXQgY29tbWl0IC1tICJkcnktcnVuMiIgZHJ5LXJ1bjIgJiYKKwkJZ2l0IHRhZyAtbSAiZHJ5LXJ1bi10YWcxIiBkcnktcnVuLXRhZzEgSEVBRF4gJiYKKwkJZ2l0IHA0IHN1Ym1pdCAtLWRyeS1ydW4gLS1leHBvcnQtbGFiZWxzID5vdXQgJiYKKwkJdGVzdF9pMThuZ3JlcCAiV291bGQgY3JlYXRlIHA0IGxhYmVsIiBvdXQKKwkpICYmCisJKAorCQljZCAiJGNsaSIgJiYKKwkJdGVzdF9wYXRoX2lzX2ZpbGUgImRyeS1ydW4xIiAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyAiZHJ5LXJ1bjIiCisJKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtaXQgd2l0aCBhbGxvd1N1Ym1pdCcgJwogCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgogCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKQEAgLTE1OSw3ICsyMTAsNyBAQAogCSgKIAkJY2QgIiRjbGkiICYmCiAJCXRlc3RfcGF0aF9pc19maWxlIGZpbGU1LnRhICYmCi0JCXRlc3QgISAtdyBmaWxlNS50YQorCQkhIGlzX2NsaV9maWxlX3dyaXRlYWJsZSBmaWxlNS50YQogCSkKICcKIApAQCAtMTc4LDcgKzIyOSwxODYgQEAKIAkJY2QgIiRjbGkiICYmCiAJCXRlc3RfcGF0aF9pc19taXNzaW5nIGZpbGU2LnQgJiYKIAkJdGVzdF9wYXRoX2lzX2ZpbGUgZmlsZTYudGEgJiYKLQkJdGVzdCAhIC13IGZpbGU2LnRhCisJCSEgaXNfY2xpX2ZpbGVfd3JpdGVhYmxlIGZpbGU2LnRhCisJKQorJworCisjCisjIENvbnZlcnRpbmcgZ2l0IGNvbW1pdCBtZXNzYWdlIHRvIHA0IGNoYW5nZSBkZXNjcmlwdGlvbiwgaW5jbHVkaW5nCisjIHBhcnNpbmcgb3V0IHRoZSBvcHRpb25hbCBKb2JzOiBsaW5lLgorIwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2ltcGxlIG9uZS1saW5lIGRlc2NyaXB0aW9uJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWVjaG8gZGVzYzIgPmRlc2MyICYmCisJCWdpdCBhZGQgZGVzYzIgJiYKKwkJY2F0ID5tc2cgPDwtRU9GICYmCisJCU9uZS1saW5lIGRlc2NyaXB0aW9uIGxpbmUgZm9yIGRlc2MyLgorCQlFT0YKKwkJZ2l0IGNvbW1pdCAtRiAtIDxtc2cgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgorCQlnaXQgcDQgc3VibWl0ICYmCisJCWNoYW5nZT0kKHA0IC1HIGNoYW5nZXMgLW0gMSAvL2RlcG90Ly4uLiB8IFwKKwkJCSBtYXJzaGFsX2R1bXAgY2hhbmdlKSAmJgorCQkjIG1hcnNoYWxfZHVtcCBhbHdheXMgYWRkcyBhIG5ld2xpbmUKKwkJcDQgLUcgZGVzY3JpYmUgJGNoYW5nZSB8IG1hcnNoYWxfZHVtcCBkZXNjIHwgc2VkIFwkZCA+cG1zZyAmJgorCQl0ZXN0X2NtcCBtc2cgcG1zZworCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGVzY3JpcHRpb24gd2l0aCBvZGQgZm9ybWF0dGluZycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQllY2hvIGRlc2MzID5kZXNjMyAmJgorCQlnaXQgYWRkIGRlc2MzICYmCisJCSgKKwkJCXByaW50ZiAic3ViamVjdCBsaW5lXG5cblx0RXh0cmEgdGFiXG5saW5lLlxuXG4iICYmCisJCQlwcmludGYgIkRlc2NyaXB0aW9uOlxuXHRCb2d1cyBkZXNjcmlwdGlvbiBtYXJrZXJcblxuIiAmJgorCQkJIyBnaXQgY29tbWl0IGVhdHMgdHJhaWxpbmcgbmV3bGluZXM7IG9ubHkgdXNlIG9uZQorCQkJcHJpbnRmICJGaWxlczpcblx0Qm9ndXMgZGVzY3MgbWFya2VyXG4iCisJCSkgPm1zZyAmJgorCQlnaXQgY29tbWl0IC1GIC0gPG1zZyAmJgorCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdCB0cnVlICYmCisJCWdpdCBwNCBzdWJtaXQgJiYKKwkJY2hhbmdlPSQocDQgLUcgY2hhbmdlcyAtbSAxIC8vZGVwb3QvLi4uIHwgXAorCQkJIG1hcnNoYWxfZHVtcCBjaGFuZ2UpICYmCisJCSMgbWFyc2hhbF9kdW1wIGFsd2F5cyBhZGRzIGEgbmV3bGluZQorCQlwNCAtRyBkZXNjcmliZSAkY2hhbmdlIHwgbWFyc2hhbF9kdW1wIGRlc2MgfCBzZWQgXCRkID5wbXNnICYmCisJCXRlc3RfY21wIG1zZyBwbXNnCisJKQorJworCittYWtlX2pvYigpIHsKKwluYW1lPSIkMSIgJiYKKwl0YWI9IiQocHJpbnRmIFxcdCkiICYmCisJcDQgam9iIC1vIHwgXAorCXNlZCAtZSAiL15Kb2I6L3MvLiovSm9iOiAkbmFtZS8iIFwKKwkgICAgLWUgIi9eRGVzY3JpcHRpb24veyBuOyBzLy4qLyR0YWIgam9iIHRleHQvOyB9IiB8IFwKKwlwNCBqb2IgLWkKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGVzY3JpcHRpb24gd2l0aCBKb2JzIHNlY3Rpb24gYXQgZW5kJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWVjaG8gZGVzYzQgPmRlc2M0ICYmCisJCWdpdCBhZGQgZGVzYzQgJiYKKwkJZWNobyA2MDYwODQyID5qb2JuYW1lICYmCisJCSgKKwkJCXByaW50ZiAic3ViamVjdCBsaW5lXG5cblx0RXh0cmEgdGFiXG5saW5lLlxuXG4iICYmCisJCQlwcmludGYgIkZpbGVzOlxuXHRCb2d1cyBmaWxlcyBtYXJrZXJcbiIgJiYKKwkJCXByaW50ZiAiSnVuazogMzE2NDE3NVxuIiAmJgorCQkJcHJpbnRmICJKb2JzOiAkKGNhdCBqb2JuYW1lKVxuIgorCQkpID5tc2cgJiYKKwkJZ2l0IGNvbW1pdCAtRiAtIDxtc2cgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgorCQkjIGJ1aWxkIGEgam9iCisJCW1ha2Vfam9iICQoY2F0IGpvYm5hbWUpICYmCisJCWdpdCBwNCBzdWJtaXQgJiYKKwkJY2hhbmdlPSQocDQgLUcgY2hhbmdlcyAtbSAxIC8vZGVwb3QvLi4uIHwgXAorCQkJIG1hcnNoYWxfZHVtcCBjaGFuZ2UpICYmCisJCSMgbWFyc2hhbF9kdW1wIGFsd2F5cyBhZGRzIGEgbmV3bGluZQorCQlwNCAtRyBkZXNjcmliZSAkY2hhbmdlIHwgbWFyc2hhbF9kdW1wIGRlc2MgfCBzZWQgXCRkID5wbXNnICYmCisJCSMgbWFrZSBzdXJlIEpvYnMgbGluZSBhbmQgYWxsIGZvbGxvd2luZyBpcyBnb25lCisJCXNlZCAiL15Kb2JzOi8sXCRkIiBtc2cgPmptc2cgJiYKKwkJdGVzdF9jbXAgam1zZyBwbXNnICYmCisJCSMgbWFrZSBzdXJlIHA0IGtub3dzIGFib3V0IGpvYgorCQlwNCAtRyBkZXNjcmliZSAkY2hhbmdlIHwgbWFyc2hhbF9kdW1wIGpvYjAgPmpvYjAgJiYKKwkJdGVzdF9jbXAgam9ibmFtZSBqb2IwCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZXNjcmlwdGlvbiB3aXRoIEpvYnMgYW5kIHZhbHVlcyBvbiBzZXBhcmF0ZSBsaW5lcycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQllY2hvIGRlc2M1ID5kZXNjNSAmJgorCQlnaXQgYWRkIGRlc2M1ICYmCisJCWVjaG8gUFJPSi02MDYwODQyID5qb2JuYW1lMSAmJgorCQllY2hvIFBST0otNjA2MDg0NyA+am9ibmFtZTIgJiYKKwkJKAorCQkJcHJpbnRmICJzdWJqZWN0IGxpbmVcblxuXHRFeHRyYSB0YWJcbmxpbmUuXG5cbiIgJiYKKwkJCXByaW50ZiAiRmlsZXM6XG5cdEJvZ3VzIGZpbGVzIG1hcmtlclxuIiAmJgorCQkJcHJpbnRmICJKdW5rOiAzMTY0MTc1XG4iICYmCisJCQlwcmludGYgIkpvYnM6XG4iICYmCisJCQlwcmludGYgIlx0JChjYXQgam9ibmFtZTEpXG4iICYmCisJCQlwcmludGYgIlx0JChjYXQgam9ibmFtZTIpXG4iCisJCSkgPm1zZyAmJgorCQlnaXQgY29tbWl0IC1GIC0gPG1zZyAmJgorCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdCB0cnVlICYmCisJCSMgYnVpbGQgdHdvIGpvYnMKKwkJbWFrZV9qb2IgJChjYXQgam9ibmFtZTEpICYmCisJCW1ha2Vfam9iICQoY2F0IGpvYm5hbWUyKSAmJgorCQlnaXQgcDQgc3VibWl0ICYmCisJCWNoYW5nZT0kKHA0IC1HIGNoYW5nZXMgLW0gMSAvL2RlcG90Ly4uLiB8IFwKKwkJCSBtYXJzaGFsX2R1bXAgY2hhbmdlKSAmJgorCQkjIG1hcnNoYWxfZHVtcCBhbHdheXMgYWRkcyBhIG5ld2xpbmUKKwkJcDQgLUcgZGVzY3JpYmUgJGNoYW5nZSB8IG1hcnNoYWxfZHVtcCBkZXNjIHwgc2VkIFwkZCA+cG1zZyAmJgorCQkjIG1ha2Ugc3VyZSBKb2JzIGxpbmUgYW5kIGFsbCBmb2xsb3dpbmcgaXMgZ29uZQorCQlzZWQgIi9eSm9iczovLFwkZCIgbXNnID5qbXNnICYmCisJCXRlc3RfY21wIGptc2cgcG1zZyAmJgorCQkjIG1ha2Ugc3VyZSBwNCBrbm93cyBhYm91dCB0aGUgdHdvIGpvYnMKKwkJcDQgLUcgZGVzY3JpYmUgJGNoYW5nZSA+Y2hhbmdlICYmCisJCSgKKwkJCW1hcnNoYWxfZHVtcCBqb2IwIDxjaGFuZ2UgJiYKKwkJCW1hcnNoYWxfZHVtcCBqb2IxIDxjaGFuZ2UKKwkJKSB8IHNvcnQgPmpvYnMgJiYKKwkJY2F0IGpvYm5hbWUxIGpvYm5hbWUyIHwgc29ydCA+ZXhwZWN0ZWQgJiYKKwkJdGVzdF9jbXAgZXhwZWN0ZWQgam9icworCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGVzY3JpcHRpb24gd2l0aCBKb2JzIHNlY3Rpb24gYW5kIGJvZ3VzIGZvbGxvd2luZyB0ZXh0JyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWVjaG8gZGVzYzYgPmRlc2M2ICYmCisJCWdpdCBhZGQgZGVzYzYgJiYKKwkJZWNobyA2MDYwODQzID5qb2JuYW1lICYmCisJCSgKKwkJCXByaW50ZiAic3ViamVjdCBsaW5lXG5cblx0RXh0cmEgdGFiXG5saW5lLlxuXG4iICYmCisJCQlwcmludGYgIkZpbGVzOlxuXHRCb2d1cyBmaWxlcyBtYXJrZXJcbiIgJiYKKwkJCXByaW50ZiAiSnVuazogMzE2NDE3NVxuIiAmJgorCQkJcHJpbnRmICJKb2JzOiAkKGNhdCBqb2JuYW1lKVxuIiAmJgorCQkJcHJpbnRmICJNb3JlSnVuazogMzcxMVxuIgorCQkpID5tc2cgJiYKKwkJZ2l0IGNvbW1pdCAtRiAtIDxtc2cgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgorCQkjIGJ1aWxkIGEgam9iCisJCW1ha2Vfam9iICQoY2F0IGpvYm5hbWUpICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCBwNCBzdWJtaXQgMj5lcnIgJiYKKwkJdGVzdF9pMThuZ3JlcCAiVW5rbm93biBmaWVsZCBuYW1lIiBlcnIKKwkpICYmCisJKAorCQljZCAiJGNsaSIgJiYKKwkJcDQgcmV2ZXJ0IGRlc2M2ICYmCisJCXJtIGRlc2M2CisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtaXQgLS1wcmVwYXJlLXA0LW9ubHknICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZWNobyBwcmVwLW9ubHktYWRkID5wcmVwLW9ubHktYWRkICYmCisJCWdpdCBhZGQgcHJlcC1vbmx5LWFkZCAmJgorCQlnaXQgY29tbWl0IC1tICJwcmVwIG9ubHkgYWRkIiAmJgorCQlnaXQgcDQgc3VibWl0IC0tcHJlcGFyZS1wNC1vbmx5ID5vdXQgJiYKKwkJdGVzdF9pMThuZ3JlcCAicHJlcGFyZWQgZm9yIHN1Ym1pc3Npb24iIG91dCAmJgorCQl0ZXN0X2kxOG5ncmVwICJtdXN0IGJlIGRlbGV0ZWQiIG91dAorCSkgJiYKKwkoCisJCWNkICIkY2xpIiAmJgorCQl0ZXN0X3BhdGhfaXNfZmlsZSBwcmVwLW9ubHktYWRkICYmCisJCXA0IGZzdGF0IC1UIGFjdGlvbiBwcmVwLW9ubHktYWRkIHwgZ3JlcCAtdyBhZGQKIAkpCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDk4MDgtZ2l0LXA0LWNoZGlyLnNoIGIvdC90OTgwOC1naXQtcDQtY2hkaXIuc2gKaW5kZXggMmY4MDE0YS4uMTFkMmI1MSAxMDA3NTUKLS0tIGEvdC90OTgwOC1naXQtcDQtY2hkaXIuc2gKKysrIGIvdC90OTgwOC1naXQtcDQtY2hkaXIuc2gKQEAgLTIxLDcgKzIxLDcgQEAKICMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdQNENPTkZJRyBhbmQgYWJzb2x1dGUgZGlyIGNsb25lJyAnCiAJcHJpbnRmICJQNFBPUlQ9JFA0UE9SVFxuUDRDTElFTlQ9JFA0Q0xJRU5UXG4iID5wNGNvbmZpZyAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gXCIkVFJBU0hfRElSRUNUT1JZL3A0Y29uZmlnXCIiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSBwNGNvbmZpZyIgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKIAkoCiAJCVA0Q09ORklHPXA0Y29uZmlnICYmIGV4cG9ydCBQNENPTkZJRyAmJgpAQCAtMzMsNyArMzMsNyBAQAogIyBzYW1lIHRoaW5nLCBidXQgd2l0aCByZWxhdGl2ZSBkaXJlY3RvcnkgbmFtZSwgbm90ZSBtaXNzaW5nICQgb24gLS1kZXN0CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdQNENPTkZJRyBhbmQgcmVsYXRpdmUgZGlyIGNsb25lJyAnCiAJcHJpbnRmICJQNFBPUlQ9JFA0UE9SVFxuUDRDTElFTlQ9JFA0Q0xJRU5UXG4iID5wNGNvbmZpZyAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gXCIkVFJBU0hfRElSRUNUT1JZL3A0Y29uZmlnXCIiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSBwNGNvbmZpZyIgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKIAkoCiAJCVA0Q09ORklHPXA0Y29uZmlnICYmIGV4cG9ydCBQNENPTkZJRyAmJgpAQCAtNDIsNiArNDIsNDcgQEAKIAkpCiAnCiAKKyMgQ29tbW9uIHNldHVwIHVzaW5nIC5wNGNvbmZpZyB0byBzZXQgUDRDTElFTlQgYW5kIFA0UE9SVCBicmVha3MKKyMgaWYgY2xvbmUgZGVzdGluYXRpb24gaXMgcmVsYXRpdmUuICBNYWtlIHN1cmUgdGhhdCBjaGRpcigpIGV4cGFuZHMKKyMgdGhlIHJlbGF0aXZlIHBhdGggaW4gLS1kZXN0IHRvIGFic29sdXRlLgordGVzdF9leHBlY3Rfc3VjY2VzcyAncDQgY2xpZW50IHJvb3Qgd291bGQgYmUgcmVsYXRpdmUgZHVlIHRvIGNsb25lIC0tZGVzdCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCSgKKwkJZWNobyBQNFBPUlQ9JFA0UE9SVCA+Z2l0Ly5wNGNvbmZpZyAmJgorCQlQNENPTkZJRz0ucDRjb25maWcgJiYKKwkJZXhwb3J0IFA0Q09ORklHICYmCisJCXVuc2V0IFA0UE9SVCAmJgorCQlnaXQgcDQgY2xvbmUgLS1kZXN0PSJnaXQiIC8vZGVwb3QKKwkpCisnCisKKyMgV2hlbiB0aGUgcDQgY2xpZW50IFJvb3QgaXMgYSBzeW1saW5rLCBtYWtlIHN1cmUgY2hkaXIoKSBkb2VzIG5vdCB1c2UKKyMgZ2V0Y3dkKCkgdG8gY29udmVydCBpdCB0byBhIHBoeXNpY2FsIHBhdGguCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdwNCBjbGllbnQgcm9vdCBzeW1saW5rIHNob3VsZCBzdGF5IHN5bWJvbGljJyAnCisJcGh5c2ljYWw9IiRUUkFTSF9ESVJFQ1RPUlkvcGh5c2ljYWwiICYmCisJc3ltYm9saWM9IiRUUkFTSF9ESVJFQ1RPUlkvc3ltYm9saWMiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgXCIkcGh5c2ljYWxcIiIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIFwiJHN5bWJvbGljXCIiICYmCisJbWtkaXIgLXAgIiRwaHlzaWNhbCIgJiYKKwlsbiAtcyAiJHBoeXNpY2FsIiAiJHN5bWJvbGljIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCSgKKwkJUDRDTElFTlQ9Y2xpZW50LXN5bSAmJgorCQlwNCBjbGllbnQgLWkgPDwtRU9GICYmCisJCUNsaWVudDogJFA0Q0xJRU5UCisJCURlc2NyaXB0aW9uOiAkUDRDTElFTlQKKwkJUm9vdDogJHN5bWJvbGljCisJCUxpbmVFbmQ6IHVuaXgKKwkJVmlldzogLy9kZXBvdC8uLi4gLy8kUDRDTElFTlQvLi4uCisJCUVPRgorCQlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCisJCWNkICIkZ2l0IiAmJgorCQl0ZXN0X2NvbW1pdCBmaWxlMiAmJgorCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdCB0cnVlICYmCisJCWdpdCBwNCBzdWJtaXQKKwkpCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2tpbGwgcDRkJyAnCiAJa2lsbF9wNGQKICcKZGlmZiAtLWdpdCBhL3QvdDk4MDktZ2l0LXA0LWNsaWVudC12aWV3LnNoIGIvdC90OTgwOS1naXQtcDQtY2xpZW50LXZpZXcuc2gKaW5kZXggN2Q5OTNlZi4uNzdmNjM0OSAxMDA3NTUKLS0tIGEvdC90OTgwOS1naXQtcDQtY2xpZW50LXZpZXcuc2gKKysrIGIvdC90OTgwOS1naXQtcDQtY2xpZW50LXZpZXcuc2gKQEAgLTksMjMgKzksNiBAQAogJwogCiAjCi0jIENvbnN0cnVjdCBhIGNsaWVudCB3aXRoIHRoaXMgbGlzdCBvZiBWaWV3IGxpbmVzCi0jCi1jbGllbnRfdmlldygpIHsKLQkoCi0JCWNhdCA8PC1FT0YgJiYKLQkJQ2xpZW50OiBjbGllbnQKLQkJRGVzY3JpcHRpb246IGNsaWVudAotCQlSb290OiAkY2xpCi0JCVZpZXc6Ci0JCUVPRgotCQlmb3IgYXJnIDsgZG8KLQkJCXByaW50ZiAiXHQkYXJnXG4iCi0JCWRvbmUKLQkpIHwgcDQgY2xpZW50IC1pCi19Ci0KLSMKICMgVmVyaWZ5IHRoZXNlIGZpbGVzIGV4aXN0LCBleGFjdGx5LiAgQ2FsbGVyIGNyZWF0ZXMKICMgYSBsaXN0IG9mIGZpbGVzIGluIGZpbGUgImZpbGVzIi4KICMKQEAgLTIxMyw3ICsxOTYsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdvdmVybGF5IHdpbGRjYXJkJyAnCiAJY2xpZW50X3ZpZXcgIi8vZGVwb3QvZGlyMS8uLi4gLy9jbGllbnQvY2xpLy4uLiIgXAotCQkgICAgIisvL2RlcG90L2RpcjIvLi4uIC8vY2xpZW50L2NsaS8uLi5cbiIgJiYKKwkJICAgICIrLy9kZXBvdC9kaXIyLy4uLiAvL2NsaWVudC9jbGkvLi4uIiAmJgogCWZpbGVzPSJjbGkvZmlsZTExIGNsaS9maWxlMTIgY2xpL2ZpbGUyMSBjbGkvZmlsZTIyIiAmJgogCWNsaWVudF92ZXJpZnkgJGZpbGVzICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCkBAIC0zNTAsNyArMzMzLDcgQEAKIAkoCiAJCWNkICIkY2xpIiAmJgogCQl0ZXN0X3BhdGhfaXNfZmlsZSBkaXIxL2ZpbGUxMWEgJiYKLQkJdGVzdCAhIC13IGRpcjEvZmlsZTExYQorCQkhIGlzX2NsaV9maWxlX3dyaXRlYWJsZSBkaXIxL2ZpbGUxMWEKIAkpCiAnCiAKQEAgLTM3MCw3ICszNTMsNyBAQAogCQljZCAiJGNsaSIgJiYKIAkJdGVzdF9wYXRoX2lzX21pc3NpbmcgZGlyMS9maWxlMTMgJiYKIAkJdGVzdF9wYXRoX2lzX2ZpbGUgZGlyMS9maWxlMTNhICYmCi0JCXRlc3QgISAtdyBkaXIxL2ZpbGUxM2EKKwkJISBpc19jbGlfZmlsZV93cml0ZWFibGUgZGlyMS9maWxlMTNhCiAJKQogJwogCkBAIC0zODIsNyArMzY1LDEwIEBACiAJKAogCQljZCAiJGdpdCIgJiYKIAkJZWNobyBnaXQtd2lsZC1oYXNoID5kaXIxL2dpdC13aWxkI2hhc2ggJiYKLQkJZWNobyBnaXQtd2lsZC1zdGFyID5kaXIxL2dpdC13aWxkXCpzdGFyICYmCisJCWlmIHRlc3RfaGF2ZV9wcmVyZXEgTk9UX01JTkdXIE5PVF9DWUdXSU4KKwkJdGhlbgorCQkJZWNobyBnaXQtd2lsZC1zdGFyID5kaXIxL2dpdC13aWxkXCpzdGFyCisJCWZpICYmCiAJCWVjaG8gZ2l0LXdpbGQtYXQgPmRpcjEvZ2l0LXdpbGRAYXQgJiYKIAkJZWNobyBnaXQtd2lsZC1wZXJjZW50ID5kaXIxL2dpdC13aWxkJXBlcmNlbnQgJiYKIAkJZ2l0IGFkZCBkaXIxL2dpdC13aWxkKiAmJgpAQCAtMzkzLDcgKzM3OSwxMCBAQAogCSgKIAkJY2QgIiRjbGkiICYmCiAJCXRlc3RfcGF0aF9pc19maWxlIGRpcjEvZ2l0LXdpbGQjaGFzaCAmJgotCQl0ZXN0X3BhdGhfaXNfZmlsZSBkaXIxL2dpdC13aWxkXCpzdGFyICYmCisJCWlmIHRlc3RfaGF2ZV9wcmVyZXEgTk9UX01JTkdXIE5PVF9DWUdXSU4KKwkJdGhlbgorCQkJdGVzdF9wYXRoX2lzX2ZpbGUgZGlyMS9naXQtd2lsZFwqc3RhcgorCQlmaSAmJgogCQl0ZXN0X3BhdGhfaXNfZmlsZSBkaXIxL2dpdC13aWxkQGF0ICYmCiAJCXRlc3RfcGF0aF9pc19maWxlIGRpcjEvZ2l0LXdpbGQlcGVyY2VudAogCSkgJiYKZGlmZiAtLWdpdCBhL3QvdDk4MTAtZ2l0LXA0LXJjcy5zaCBiL3QvdDk4MTAtZ2l0LXA0LXJjcy5zaAppbmRleCBkOGQ5Y2E0Li4zNGZiYzkwIDEwMDc1NQotLS0gYS90L3Q5ODEwLWdpdC1wNC1yY3Muc2gKKysrIGIvdC90OTgxMC1naXQtcDQtcmNzLnNoCkBAIC0xLDYgKzEsNiBAQAogIyEvYmluL3NoCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1wNCByY3Mga2V5d29yZHMnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgcDQgcmNzIGtleXdvcmRzJwogCiAuIC4vbGliLWdpdC1wNC5zaAogCkBAIC0yNiwxMCArMjYsOCBAQAogCQlsaW5lNwogCQlsaW5lOAogCQlFT0YKLQkJY3AgZmlsZWsgZmlsZWtvICYmCi0JCXNlZCAtaSAicy9SZXZpc2lvbi9SZXZpc2lvbjogZG8gbm90IHNjcnViIG1lLyIgZmlsZWtvCi0JCWNwIGZpbGVrbyBmaWxlX3RleHQgJiYKLQkJc2VkIC1pICJzL0lkL0lkOiBkbyBub3Qgc2NydWIgbWUvIiBmaWxlX3RleHQKKwkJc2VkICJzL1JldmlzaW9uL1JldmlzaW9uOiBkbyBub3Qgc2NydWIgbWUvIiA8ZmlsZWsgPmZpbGVrbyAmJgorCQlzZWQgInMvSWQvSWQ6IGRvIG5vdCBzY3J1YiBtZS8iIDxmaWxla28gPmZpbGVfdGV4dCAmJgogCQlwNCBhZGQgLXQgdGV4dCtrIGZpbGVrICYmCiAJCXA0IHN1Ym1pdCAtZCAiZmlsZWsiICYmCiAJCXA0IGFkZCAtdCB0ZXh0K2tvIGZpbGVrbyAmJgpAQCAtODgsNyArODYsOCBAQAogCSgKIAkJY2QgIiRnaXQiICYmCiAJCWdpdCBjb25maWcgZ2l0LXA0LnNraXBTdWJtaXRFZGl0IHRydWUgJiYKLQkJc2VkIC1pICJzL15saW5lNy9saW5lNyBlZGl0LyIgZmlsZWsgJiYKKwkJc2VkICJzL15saW5lNy9saW5lNyBlZGl0LyIgPGZpbGVrID5maWxlay50bXAgJiYKKwkJbXYgLWYgZmlsZWsudG1wIGZpbGVrICYmCiAJCWdpdCBjb21taXQgLW0gImZpbGVrIGxpbmU3IGVkaXQiIGZpbGVrICYmCiAJCWdpdCBwNCBzdWJtaXQgJiYKIAkJc2NydWJfa19jaGVjayBmaWxlawpAQCAtMTA1LDcgKzEwNCw4IEBACiAJCWNkICIkZ2l0IiAmJgogCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdCB0cnVlICYmCiAJCWdpdCBjb25maWcgZ2l0LXA0LmF0dGVtcHRSQ1NDbGVhbnVwIHRydWUgJiYKLQkJc2VkIC1pICJzL15saW5lNC9saW5lNCBlZGl0LyIgZmlsZWsgJiYKKwkJc2VkICJzL15saW5lNC9saW5lNCBlZGl0LyIgPGZpbGVrID5maWxlay50bXAgJiYKKwkJbXYgLWYgZmlsZWsudG1wIGZpbGVrICYmCiAJCWdpdCBjb21taXQgLW0gImZpbGVrIGxpbmU0IGVkaXQiIGZpbGVrICYmCiAJCWdpdCBwNCBzdWJtaXQgJiYKIAkJc2NydWJfa19jaGVjayBmaWxlawpAQCAtMTIyLDcgKzEyMiw4IEBACiAJCWNkICIkZ2l0IiAmJgogCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdCB0cnVlICYmCiAJCWdpdCBjb25maWcgZ2l0LXA0LmF0dGVtcHRSQ1NDbGVhbnVwIHRydWUgJiYKLQkJc2VkIC1pICIvUmV2aXNpb24vZCIgZmlsZWsgJiYKKwkJc2VkICIvUmV2aXNpb24vZCIgPGZpbGVrID5maWxlay50bXAgJiYKKwkJbXYgLWYgZmlsZWsudG1wIGZpbGVrICYmCiAJCWdpdCBjb21taXQgLW0gImZpbGVrIHJlbW92ZSBSZXZpc2lvbiBsaW5lIiBmaWxlayAmJgogCQlnaXQgcDQgc3VibWl0ICYmCiAJCXNjcnViX2tfY2hlY2sgZmlsZWsKQEAgLTEzOSw3ICsxNDAsOCBAQAogCQljZCAiJGdpdCIgJiYKIAkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgogCQlnaXQgY29uZmlnIGdpdC1wNC5hdHRlbXB0UkNTQ2xlYW51cCB0cnVlICYmCi0JCXNlZCAtaSAicy9ebGluZTQvbGluZTQgZWRpdC8iIGZpbGVrbyAmJgorCQlzZWQgInMvXmxpbmU0L2xpbmU0IGVkaXQvIiA8ZmlsZWtvID5maWxla28udG1wICYmCisJCW12IC1mIGZpbGVrby50bXAgZmlsZWtvICYmCiAJCWdpdCBjb21taXQgLW0gImZpbGVrbyBsaW5lNCBlZGl0IiBmaWxla28gJiYKIAkJZ2l0IHA0IHN1Ym1pdCAmJgogCQlzY3J1Yl9rb19jaGVjayBmaWxla28gJiYKQEAgLTE0Nyw3ICsxNDksNyBAQAogCSkKICcKIAotIyBoYWNrOyBnaXQtcDQgc3VibWl0IHNob3VsZCBkbyBpdCBvbiBpdHMgb3duCisjIGhhY2s7IGdpdCBwNCBzdWJtaXQgc2hvdWxkIGRvIGl0IG9uIGl0cyBvd24KIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgYWZ0ZXIgZmFpbHVyZScgJwogCSgKIAkJY2QgIiRjbGkiICYmCkBAIC0xNTUsMTQgKzE1NywzMCBAQAogCSkKICcKIAorIyBwZXJsICRGaWxlOjogYnVnIGNoZWNrCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdrdGV4dCBleHBhbnNpb24gc2hvdWxkIG5vdCBleHBhbmQgbXVsdGktbGluZSAkRmlsZTo6JyAnCisJKAorCQljZCAiJGNsaSIgJiYKKwkJY2F0ID5sdi5wbSA8PC1cRU9GCisJCW15ICR3YW50ZWQgPSBzdWIgeyBteSAkZiA9ICRGaWxlOjpGaW5kOjpuYW1lOworCQkJCSAgICBpZiAoIC1mICYmICRmID1+IC9mb28vICkgeworCQlFT0YKKwkJcDQgYWRkIC10IGt0ZXh0IGx2LnBtICYmCisJCXA0IHN1Ym1pdCAtZCAibHYucG0iCisJKSAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQl0ZXN0X2NtcCAiJGNsaS9sdi5wbSIgbHYucG0KKwkpCisnCisKICMKICMgRG8gbm90IHNjcnViIGFueXRoaW5nIGJ1dCArayBvciAra28gZmlsZXMuICBTbmVhayBhIGNoYW5nZSBpbnRvCiAjIHRoZSBjbGkgZmlsZSBzbyB0aGF0IHN1Ym1pdCB3aWxsIGdldCBhIGNvbmZsaWN0LiAgTWFrZSBzdXJlIHRoYXQKICMgc2NydWJiaW5nIGRvZXNuJ3QgbWFrZSBhIG1lc3Mgb2YgdGhpbmdzLgogIwotIyBBc3N1bWVzIHRoYXQgZ2l0LXA0IGV4aXRzIGxlYXZpbmcgdGhlIHA0IGZpbGUgb3Blbiwgd2l0aCB0aGUKLSMgY29uZmxpY3QtZ2VuZXJhdGluZyBwYXRjaCB1bmFwcGxpZWQuCi0jCiAjIFRoaXMgbWlnaHQgaGFwcGVuIG9ubHkgaWYgdGhlIGdpdCByZXBvIGlzIGJlaGluZCB0aGUgcDQgcmVwbyBhdAogIyBzdWJtaXQgdGltZSwgYW5kIHRoZXJlIGlzIGEgY29uZmxpY3QuCiAjCkBAIC0xNzMsMjcgKzE5MSwyNiBAQAogCQljZCAiJGdpdCIgJiYKIAkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgogCQlnaXQgY29uZmlnIGdpdC1wNC5hdHRlbXB0UkNTQ2xlYW51cCB0cnVlICYmCi0JCXNlZCAtaSAicy9ebGluZTQvbGluZTQgZWRpdC8iIGZpbGVfdGV4dCAmJgorCQlzZWQgInMvXmxpbmU0L2xpbmU0IGVkaXQvIiA8ZmlsZV90ZXh0ID5maWxlX3RleHQudG1wICYmCisJCW12IC1mIGZpbGVfdGV4dC50bXAgZmlsZV90ZXh0ICYmCiAJCWdpdCBjb21taXQgLW0gImZpbGVfdGV4dCBsaW5lNCBlZGl0IiBmaWxlX3RleHQgJiYKIAkJKAogCQkJY2QgIiRjbGkiICYmCiAJCQlwNCBvcGVuIGZpbGVfdGV4dCAmJgotCQkJc2VkIC1pICJzL15saW5lNS9saW5lNSBwNCBlZGl0LyIgZmlsZV90ZXh0ICYmCisJCQlzZWQgInMvXmxpbmU1L2xpbmU1IHA0IGVkaXQvIiA8ZmlsZV90ZXh0ID5maWxlX3RleHQudG1wICYmCisJCQltdiAtZiBmaWxlX3RleHQudG1wIGZpbGVfdGV4dCAmJgogCQkJcDQgc3VibWl0IC1kICJmaWxlNSBwNCBlZGl0IgogCQkpICYmCi0JCSEgZ2l0IHA0IHN1Ym1pdCAmJgorCQllY2hvIHMgfCB0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IHA0IHN1Ym1pdCAmJgogCQkoCi0JCQkjIGV4ZXBjdCBzb21ldGhpbmcgbGlrZToKLQkJCSMgICAgZmlsZV90ZXh0IC0gZmlsZShzKSBub3Qgb3BlbmVkIG9uIHRoaXMgY2xpZW50Ci0JCQkjIGJ1dCBub3QgY29waW91cyBkaWZmIG91dHB1dAorCQkJIyBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgbm90IGxlZnQgb3BlbgogCQkJY2QgIiRjbGkiICYmCi0JCQlwNCBkaWZmIGZpbGVfdGV4dCA+d2MgJiYKLQkJCXRlc3RfbGluZV9jb3VudCA9IDEgd2MKKwkJCSEgcDQgZnN0YXQgLVQgYWN0aW9uIGZpbGVfdGV4dAogCQkpCiAJKQogJwogCi0jIGhhY2s7IGdpdC1wNCBzdWJtaXQgc2hvdWxkIGRvIGl0IG9uIGl0cyBvd24KKyMgaGFjazsgZ2l0IHA0IHN1Ym1pdCBzaG91bGQgZG8gaXQgb24gaXRzIG93bgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBhZnRlciBmYWlsdXJlIDInICcKIAkoCiAJCWNkICIkY2xpIiAmJgpAQCAtMjQ0LDkgKzI2MSw5IEBACiAJCWNkICIkZ2l0IiAmJgogCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdCB0cnVlICYmCiAJCWdpdCBjb25maWcgZ2l0LXA0LmF0dGVtcHRSQ1NDbGVhbnVwIHRydWUgJiYKLQkJKGNkIC4uL2NsaSAmJiBwNF9hcHBlbmRfdG9fZmlsZSBrd2ZpbGUxLmMpICYmCisJCShjZCAiJGNsaSIgJiYgcDRfYXBwZW5kX3RvX2ZpbGUga3dmaWxlMS5jKSAmJgogCQlvbGRfbGluZXM9JCh3YyAtbCA8a3dmaWxlMS5jKSAmJgotCQlwZXJsIC1uIC1pIC1lICJwcmludCB1bmxlc3MgbS9SZXZpc2lvbjovIiBrd2ZpbGUxLmMgJiYKKwkJIiRQRVJMX1BBVEgiIC1uIC1pIC1lICJwcmludCB1bmxlc3MgbS9SZXZpc2lvbjovIiBrd2ZpbGUxLmMgJiYKIAkJbmV3X2xpbmVzPSQod2MgLWwgPGt3ZmlsZTEuYykgJiYKIAkJdGVzdCAkbmV3X2xpbmVzID0gJCgoJG9sZF9saW5lcyAtIDEpKSAmJgogCkBAIC0zNDMsNDQgKzM2MCw2IEBACiAJKQogJwogCi0jIENoZWNrIHRoYXQgdGhlIGV4aXN0aW5nIG1lcmdlIGNvbmZsaWN0IGhhbmRsaW5nIHN0aWxsIHdvcmtzLgotIyBNb2RpZnkga3dmaWxlMS5jIGluIGdpdCwgYW5kIGRlbGV0ZSBpbiBwNC4gV2Ugc2hvdWxkIGJlIGFibGUKLSMgdG8gc2tpcCB0aGUgZ2l0IGNvbW1pdC4KLSMKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGNvbmZsaWN0IGhhbmRsaW5nIHN0aWxsIHdvcmtzJyAnCi0JdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCi0JKAotCQljZCAiJGNsaSIgJiYKLQkJZWNobyAiSGVsbG86XCRJZFwkIiA+bWVyZ2UyLmMgJiYKLQkJZWNobyAiV29ybGQiID4+bWVyZ2UyLmMgJiYKLQkJcDQgYWRkIC10IGt0ZXh0IG1lcmdlMi5jICYmCi0JCXA0IHN1Ym1pdCAtZCAiYWRkIG1lcmdlIHRlc3QgZmlsZSIKLQkpICYmCi0JZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgotCSgKLQkJY2QgIiRnaXQiICYmCi0JCXNlZCAtZSAiL0hlbGxvL2QiIG1lcmdlMi5jID5tZXJnZTIuYy50bXAgJiYKLQkJbXYgbWVyZ2UyLmMudG1wIG1lcmdlMi5jICYmCi0JCWdpdCBhZGQgbWVyZ2UyLmMgJiYKLQkJZ2l0IGNvbW1pdCAtbSAiTW9kaWZ5aW5nIG1lcmdlMi5jIgotCSkgJiYKLQkoCi0JCWNkICIkY2xpIiAmJgotCQlwNCBkZWxldGUgbWVyZ2UyLmMgJiYKLQkJcDQgc3VibWl0IC1kICJyZW1vdmUgbWVyZ2UgdGVzdCBmaWxlIgotCSkgJiYKLQkoCi0JCWNkICIkZ2l0IiAmJgotCQl0ZXN0IC1mIG1lcmdlMi5jICYmCi0JCWdpdCBjb25maWcgZ2l0LXA0LnNraXBTdWJtaXRFZGl0IHRydWUgJiYKLQkJZ2l0IGNvbmZpZyBnaXQtcDQuYXR0ZW1wdFJDU0NsZWFudXAgdHJ1ZSAmJgotCQkhKGVjaG8gInMiIHwgZ2l0IHA0IHN1Ym1pdCkgJiYKLQkJZ2l0IHJlYmFzZSAtLXNraXAgJiYKLQkJISB0ZXN0IC1mIG1lcmdlMi5jCi0JKQotJwotCi0KIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2tpbGwgcDRkJyAnCiAJa2lsbF9wNGQKICcKZGlmZiAtLWdpdCBhL3QvdDk4MTItZ2l0LXA0LXdpbGRjYXJkcy5zaCBiL3QvdDk4MTItZ2l0LXA0LXdpbGRjYXJkcy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42NzYzMzI1Ci0tLSAvZGV2L251bGwKKysrIGIvdC90OTgxMi1naXQtcDQtd2lsZGNhcmRzLnNoCkBAIC0wLDAgKzEsMTY4IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHA0IHdpbGRjYXJkcycKKworLiAuL2xpYi1naXQtcDQuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhcnQgcDRkJyAnCisJc3RhcnRfcDRkCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBwNCBmaWxlcyB3aXRoIHdpbGRjYXJkcyBpbiB0aGUgbmFtZXMnICcKKwkoCisJCWNkICIkY2xpIiAmJgorCQlwcmludGYgImZpbGUyXG5oYXNcbnNvbWVcbnJhbmRvbVxudGV4dFxuIiA+ZmlsZTIgJiYKKwkJcDQgYWRkIGZpbGUyICYmCisJCWVjaG8gZmlsZS13aWxkLWhhc2ggPmZpbGUtd2lsZCNoYXNoICYmCisJCWlmIHRlc3RfaGF2ZV9wcmVyZXEgTk9UX01JTkdXIE5PVF9DWUdXSU4KKwkJdGhlbgorCQkJZWNobyBmaWxlLXdpbGQtc3RhciA+ZmlsZS13aWxkXCpzdGFyCisJCWZpICYmCisJCWVjaG8gZmlsZS13aWxkLWF0ID5maWxlLXdpbGRAYXQgJiYKKwkJZWNobyBmaWxlLXdpbGQtcGVyY2VudCA+ZmlsZS13aWxkJXBlcmNlbnQgJiYKKwkJcDQgYWRkIC1mIGZpbGUtd2lsZCogJiYKKwkJcDQgc3VibWl0IC1kICJmaWxlIHdpbGRjYXJkcyIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dpbGRjYXJkIGZpbGVzIGdpdCBwNCBjbG9uZScgJworCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQl0ZXN0IC1mIGZpbGUtd2lsZCNoYXNoICYmCisJCWlmIHRlc3RfaGF2ZV9wcmVyZXEgTk9UX01JTkdXIE5PVF9DWUdXSU4KKwkJdGhlbgorCQkJdGVzdCAtZiBmaWxlLXdpbGRcKnN0YXIKKwkJZmkgJiYKKwkJdGVzdCAtZiBmaWxlLXdpbGRAYXQgJiYKKwkJdGVzdCAtZiBmaWxlLXdpbGQlcGVyY2VudAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnd2lsZGNhcmQgZmlsZXMgc3VibWl0IGJhY2sgdG8gcDQsIGFkZCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQllY2hvIGdpdC13aWxkLWhhc2ggPmdpdC13aWxkI2hhc2ggJiYKKwkJaWYgdGVzdF9oYXZlX3ByZXJlcSBOT1RfTUlOR1cgTk9UX0NZR1dJTgorCQl0aGVuCisJCQllY2hvIGdpdC13aWxkLXN0YXIgPmdpdC13aWxkXCpzdGFyCisJCWZpICYmCisJCWVjaG8gZ2l0LXdpbGQtYXQgPmdpdC13aWxkQGF0ICYmCisJCWVjaG8gZ2l0LXdpbGQtcGVyY2VudCA+Z2l0LXdpbGQlcGVyY2VudCAmJgorCQlnaXQgYWRkIGdpdC13aWxkKiAmJgorCQlnaXQgY29tbWl0IC1tICJhZGQgc29tZSB3aWxkY2FyZCBmaWxlbmFtZXMiICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LnNraXBTdWJtaXRFZGl0IHRydWUgJiYKKwkJZ2l0IHA0IHN1Ym1pdAorCSkgJiYKKwkoCisJCWNkICIkY2xpIiAmJgorCQl0ZXN0X3BhdGhfaXNfZmlsZSBnaXQtd2lsZCNoYXNoICYmCisJCWlmIHRlc3RfaGF2ZV9wcmVyZXEgTk9UX01JTkdXIE5PVF9DWUdXSU4KKwkJdGhlbgorCQkJdGVzdF9wYXRoX2lzX2ZpbGUgZ2l0LXdpbGRcKnN0YXIKKwkJZmkgJiYKKwkJdGVzdF9wYXRoX2lzX2ZpbGUgZ2l0LXdpbGRAYXQgJiYKKwkJdGVzdF9wYXRoX2lzX2ZpbGUgZ2l0LXdpbGQlcGVyY2VudAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnd2lsZGNhcmQgZmlsZXMgc3VibWl0IGJhY2sgdG8gcDQsIG1vZGlmeScgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQllY2hvIG5ldy1saW5lID4+Z2l0LXdpbGQjaGFzaCAmJgorCQlpZiB0ZXN0X2hhdmVfcHJlcmVxIE5PVF9NSU5HVyBOT1RfQ1lHV0lOCisJCXRoZW4KKwkJCWVjaG8gbmV3LWxpbmUgPj5naXQtd2lsZFwqc3RhcgorCQlmaSAmJgorCQllY2hvIG5ldy1saW5lID4+Z2l0LXdpbGRAYXQgJiYKKwkJZWNobyBuZXctbGluZSA+PmdpdC13aWxkJXBlcmNlbnQgJiYKKwkJZ2l0IGFkZCBnaXQtd2lsZCogJiYKKwkJZ2l0IGNvbW1pdCAtbSAibW9kaWZ5IHRoZSB3aWxkY2FyZCBmaWxlcyIgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgorCQlnaXQgcDQgc3VibWl0CisJKSAmJgorCSgKKwkJY2QgIiRjbGkiICYmCisJCXRlc3RfbGluZV9jb3VudCA9IDIgZ2l0LXdpbGQjaGFzaCAmJgorCQlpZiB0ZXN0X2hhdmVfcHJlcmVxIE5PVF9NSU5HVyBOT1RfQ1lHV0lOCisJCXRoZW4KKwkJCXRlc3RfbGluZV9jb3VudCA9IDIgZ2l0LXdpbGRcKnN0YXIKKwkJZmkgJiYKKwkJdGVzdF9saW5lX2NvdW50ID0gMiBnaXQtd2lsZEBhdCAmJgorCQl0ZXN0X2xpbmVfY291bnQgPSAyIGdpdC13aWxkJXBlcmNlbnQKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dpbGRjYXJkIGZpbGVzIHN1Ym1pdCBiYWNrIHRvIHA0LCBjb3B5JyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWNwIGZpbGUyIGdpdC13aWxkLWNwI2hhc2ggJiYKKwkJZ2l0IGFkZCBnaXQtd2lsZC1jcCNoYXNoICYmCisJCWNwIGdpdC13aWxkI2hhc2ggZmlsZS13aWxkLTMgJiYKKwkJZ2l0IGFkZCBmaWxlLXdpbGQtMyAmJgorCQlnaXQgY29tbWl0IC1tICJ3aWxkY2FyZCBjb3BpZXMiICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LmRldGVjdENvcGllcyB0cnVlICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LmRldGVjdENvcGllc0hhcmRlciB0cnVlICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LnNraXBTdWJtaXRFZGl0IHRydWUgJiYKKwkJZ2l0IHA0IHN1Ym1pdAorCSkgJiYKKwkoCisJCWNkICIkY2xpIiAmJgorCQl0ZXN0X3BhdGhfaXNfZmlsZSBnaXQtd2lsZC1jcCNoYXNoICYmCisJCXRlc3RfcGF0aF9pc19maWxlIGZpbGUtd2lsZC0zCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd3aWxkY2FyZCBmaWxlcyBzdWJtaXQgYmFjayB0byBwNCwgcmVuYW1lJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWdpdCBtdiBnaXQtd2lsZEBhdCBmaWxlLXdpbGQtNCAmJgorCQlnaXQgbXYgZmlsZS13aWxkLTMgZ2l0LXdpbGQtY3AlcGVyY2VudCAmJgorCQlnaXQgY29tbWl0IC1tICJ3aWxkY2FyZCByZW5hbWVzIiAmJgorCQlnaXQgY29uZmlnIGdpdC1wNC5kZXRlY3RSZW5hbWVzIHRydWUgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgorCQlnaXQgcDQgc3VibWl0CisJKSAmJgorCSgKKwkJY2QgIiRjbGkiICYmCisJCXRlc3RfcGF0aF9pc19taXNzaW5nIGdpdC13aWxkQGF0ICYmCisJCXRlc3RfcGF0aF9pc19maWxlIGdpdC13aWxkLWNwJXBlcmNlbnQKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dpbGRjYXJkIGZpbGVzIHN1Ym1pdCBiYWNrIHRvIHA0LCBkZWxldGUnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IHJtIGdpdC13aWxkKiAmJgorCQlnaXQgY29tbWl0IC1tICJkZWxldGUgdGhlIHdpbGRjYXJkIGZpbGVzIiAmJgorCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdCB0cnVlICYmCisJCWdpdCBwNCBzdWJtaXQKKwkpICYmCisJKAorCQljZCAiJGNsaSIgJiYKKwkJdGVzdF9wYXRoX2lzX21pc3NpbmcgZ2l0LXdpbGQjaGFzaCAmJgorCQlpZiB0ZXN0X2hhdmVfcHJlcmVxIE5PVF9NSU5HVyBOT1RfQ1lHV0lOCisJCXRoZW4KKwkJCXRlc3RfcGF0aF9pc19taXNzaW5nIGdpdC13aWxkXCpzdGFyCisJCWZpICYmCisJCXRlc3RfcGF0aF9pc19taXNzaW5nIGdpdC13aWxkQGF0ICYmCisJCXRlc3RfcGF0aF9pc19taXNzaW5nIGdpdC13aWxkJXBlcmNlbnQKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2tpbGwgcDRkJyAnCisJa2lsbF9wNGQKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5ODEzLWdpdC1wNC1wcmVzZXJ2ZS11c2Vycy5zaCBiL3QvdDk4MTMtZ2l0LXA0LXByZXNlcnZlLXVzZXJzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmYyZTg1ZTUKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q5ODEzLWdpdC1wNC1wcmVzZXJ2ZS11c2Vycy5zaApAQCAtMCwwICsxLDE1MyBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBwNCBwcmVzZXJ2ZSB1c2VycycKKworLiAuL2xpYi1naXQtcDQuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhcnQgcDRkJyAnCisJc3RhcnRfcDRkCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0ZSBmaWxlcycgJworCSgKKwkJY2QgIiRjbGkiICYmCisJCXA0IGNsaWVudCAtbyB8IHNlZCAiL0xpbmVFbmQvcy86LiovOnVuaXgvIiB8IHA0IGNsaWVudCAtaSAmJgorCQllY2hvIGZpbGUxID5maWxlMSAmJgorCQllY2hvIGZpbGUyID5maWxlMiAmJgorCQlwNCBhZGQgZmlsZTEgZmlsZTIgJiYKKwkJcDQgc3VibWl0IC1kICJhZGQgZmlsZXMiCisJKQorJworCitwNF9hZGRfdXNlcigpIHsKKwluYW1lPSQxIGZ1bGxuYW1lPSQyICYmCisJcDQgdXNlciAtZiAtaSA8PC1FT0YgJiYKKwlVc2VyOiAkbmFtZQorCUVtYWlsOiAkbmFtZUBsb2NhbGhvc3QKKwlGdWxsTmFtZTogJGZ1bGxuYW1lCisJRU9GCisJcDQgcGFzc3dkIC1QIHNlY3JldCAkbmFtZQorfQorCitwNF9ncmFudF9hZG1pbigpIHsKKwluYW1lPSQxICYmCisJeworCQlwNCBwcm90ZWN0IC1vICYmCisJCWVjaG8gIiAgICBhZG1pbiB1c2VyICRuYW1lICogLy9kZXBvdC8uLi4iCisJfSB8IHA0IHByb3RlY3QgLWkKK30KKworcDRfY2hlY2tfY29tbWl0X2F1dGhvcigpIHsKKwlmaWxlPSQxIHVzZXI9JDIgJiYKKwlwNCBjaGFuZ2VzIC1tIDEgLy9kZXBvdC8kZmlsZSB8IGdyZXAgLXEgJHVzZXIKK30KKworbWFrZV9jaGFuZ2VfYnlfdXNlcigpIHsKKwlmaWxlPSQxIG5hbWU9JDIgZW1haWw9JDMgJiYKKwllY2hvICJ1c2VybmFtZTogYSBjaGFuZ2UgYnkgJG5hbWUiID4+IiRmaWxlIiAmJgorCWdpdCBhZGQgIiRmaWxlIiAmJgorCWdpdCBjb21taXQgLS1hdXRob3IgIiRuYW1lIDwkZW1haWw+IiAtbSAiYSBjaGFuZ2UgYnkgJG5hbWUiCit9CisKKyMgVGVzdCB1c2VybmFtZSBzdXBwb3J0LCBzdWJtaXR0aW5nIGFzIHVzZXIgJ2FsaWNlJwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJlc2VydmUgdXNlcnMnICcKKwlwNF9hZGRfdXNlciBhbGljZSBBbGljZSAmJgorCXA0X2FkZF91c2VyIGJvYiBCb2IgJiYKKwlwNF9ncmFudF9hZG1pbiBhbGljZSAmJgorCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQllY2hvICJ1c2VybmFtZTogYSBjaGFuZ2UgYnkgYWxpY2UiID4+ZmlsZTEgJiYKKwkJZWNobyAidXNlcm5hbWU6IGEgY2hhbmdlIGJ5IGJvYiIgPj5maWxlMiAmJgorCQlnaXQgY29tbWl0IC0tYXV0aG9yICJBbGljZSA8YWxpY2VAbG9jYWxob3N0PiIgLW0gImEgY2hhbmdlIGJ5IGFsaWNlIiBmaWxlMSAmJgorCQlnaXQgY29tbWl0IC0tYXV0aG9yICJCb2IgPGJvYkBsb2NhbGhvc3Q+IiAtbSAiYSBjaGFuZ2UgYnkgYm9iIiBmaWxlMiAmJgorCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdENoZWNrIHRydWUgJiYKKwkJUDRFRElUT1I9dG91Y2ggUDRVU0VSPWFsaWNlIFA0UEFTU1dEPXNlY3JldCBnaXQgcDQgY29tbWl0IC0tcHJlc2VydmUtdXNlciAmJgorCQlwNF9jaGVja19jb21taXRfYXV0aG9yIGZpbGUxIGFsaWNlICYmCisJCXA0X2NoZWNrX2NvbW1pdF9hdXRob3IgZmlsZTIgYm9iCisJKQorJworCisjIFRlc3QgdXNlcm5hbWUgc3VwcG9ydCwgc3VibWl0dGluZyBhcyBib2IsIHdobyBsYWNrcyBhZG1pbiByaWdodHMuIFNob3VsZAorIyBub3Qgc3VibWl0IGNoYW5nZSB0byBwNCAoZ2l0IGRpZmYgc2hvdWxkIHNob3cgZGVsdGFzKS4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZnVzZSB0byBwcmVzZXJ2ZSB1c2VycyB3aXRob3V0IHBlcm1zJyAnCisJZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LnNraXBTdWJtaXRFZGl0Q2hlY2sgdHJ1ZSAmJgorCQllY2hvICJ1c2VybmFtZS1ub3Blcm1zOiBhIGNoYW5nZSBieSBhbGljZSIgPj5maWxlMSAmJgorCQlnaXQgY29tbWl0IC0tYXV0aG9yICJBbGljZSA8YWxpY2VAbG9jYWxob3N0PiIgLW0gInBlcm1zOiBhIGNoYW5nZSBieSBhbGljZSIgZmlsZTEgJiYKKwkJUDRFRElUT1I9dG91Y2ggUDRVU0VSPWJvYiBQNFBBU1NXRD1zZWNyZXQgJiYKKwkJZXhwb3J0IFA0RURJVE9SIFA0VVNFUiBQNFBBU1NXRCAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcDQgY29tbWl0IC0tcHJlc2VydmUtdXNlciAmJgorCQkhIGdpdCBkaWZmIC0tZXhpdC1jb2RlIEhFQUQuLnA0L21hc3RlcgorCSkKKycKKworIyBXaGF0IGhhcHBlbnMgd2l0aCB1bmtub3duIGF1dGhvcj8gV2l0aG91dCBhbGxvd01pc3NpbmdQNFVzZXJzIGl0IHNob3VsZCBmYWlsLgordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJlc2VydmUgdXNlciB3aGVyZSBhdXRob3IgaXMgdW5rbm93biB0byBwNCcgJworCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdENoZWNrIHRydWUgJiYKKwkJZWNobyAidXNlcm5hbWUtYm9iOiBhIGNoYW5nZSBieSBib2IiID4+ZmlsZTEgJiYKKwkJZ2l0IGNvbW1pdCAtLWF1dGhvciAiQm9iIDxib2JAbG9jYWxob3N0PiIgLW0gInByZXNlcnZlOiBhIGNoYW5nZSBieSBib2IiIGZpbGUxICYmCisJCWVjaG8gInVzZXJuYW1lLXVua25vd246IGEgY2hhbmdlIGJ5IGNoYXJsaWUiID4+ZmlsZTEgJiYKKwkJZ2l0IGNvbW1pdCAtLWF1dGhvciAiQ2hhcmxpZSA8Y2hhcmxpZUBsb2NhbGhvc3Q+IiAtbSAicHJlc2VydmU6IGEgY2hhbmdlIGJ5IGNoYXJsaWUiIGZpbGUxICYmCisJCVA0RURJVE9SPXRvdWNoIFA0VVNFUj1hbGljZSBQNFBBU1NXRD1zZWNyZXQgJiYKKwkJZXhwb3J0IFA0RURJVE9SIFA0VVNFUiBQNFBBU1NXRCAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcDQgY29tbWl0IC0tcHJlc2VydmUtdXNlciAmJgorCQkhIGdpdCBkaWZmIC0tZXhpdC1jb2RlIEhFQUQuLnA0L21hc3RlciAmJgorCisJCWVjaG8gIiQwOiByZXBlYXQgd2l0aCBhbGxvd01pc3NpbmdQNFVzZXJzIGVuYWJsZWQiICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LmFsbG93TWlzc2luZ1A0VXNlcnMgdHJ1ZSAmJgorCQlnaXQgY29uZmlnIGdpdC1wNC5wcmVzZXJ2ZVVzZXIgdHJ1ZSAmJgorCQlnaXQgcDQgY29tbWl0ICYmCisJCWdpdCBkaWZmIC0tZXhpdC1jb2RlIEhFQUQuLnA0L21hc3RlciAmJgorCQlwNF9jaGVja19jb21taXRfYXV0aG9yIGZpbGUxIGFsaWNlCisJKQorJworCisjIElmIHdlJ3JlICpub3QqIHVzaW5nIC0tcHJlc2VydmUtdXNlciwgZ2l0LXA0IHNob3VsZCB3YXJuIGlmIHdlJ3JlIHN1Ym1pdHRpbmcKKyMgY2hhbmdlcyB0aGF0IGFyZSBub3QgYWxsIG91cnMuCisjIFRlc3Q6IHVzZXIgaW4gcDQgYW5kIHVzZXIgdW5rbm93biB0byBwNC4KKyMgVGVzdDogd2FybmluZyBkaXNhYmxlZCBhbmQgdXNlciBpcyB0aGUgc2FtZS4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vdCBwcmVzZXJ2aW5nIHVzZXIgd2l0aCBtaXhlZCBhdXRob3JzaGlwJyAnCisJZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LnNraXBTdWJtaXRFZGl0Q2hlY2sgdHJ1ZSAmJgorCQlwNF9hZGRfdXNlciBkZXJlayBEZXJlayAmJgorCisJCW1ha2VfY2hhbmdlX2J5X3VzZXIgdXNlcm5hbWVmaWxlMyBEZXJlayBkZXJla0Bsb2NhbGhvc3QgJiYKKwkJUDRFRElUT1I9Y2F0IFA0VVNFUj1hbGljZSBQNFBBU1NXRD1zZWNyZXQgJiYKKwkJZXhwb3J0IFA0RURJVE9SIFA0VVNFUiBQNFBBU1NXRCAmJgorCQlnaXQgcDQgY29tbWl0IHxcCisJCWdyZXAgImdpdCBhdXRob3IgZGVyZWtAbG9jYWxob3N0IGRvZXMgbm90IG1hdGNoIiAmJgorCisJCW1ha2VfY2hhbmdlX2J5X3VzZXIgdXNlcm5hbWVmaWxlMyBDaGFybGllIGNoYXJsaWVAbG9jYWxob3N0ICYmCisJCWdpdCBwNCBjb21taXQgfFwKKwkJZ3JlcCAiZ2l0IGF1dGhvciBjaGFybGllQGxvY2FsaG9zdCBkb2VzIG5vdCBtYXRjaCIgJiYKKworCQltYWtlX2NoYW5nZV9ieV91c2VyIHVzZXJuYW1lZmlsZTMgYWxpY2UgYWxpY2VAbG9jYWxob3N0ICYmCisJCWdpdCBwNCBjb21taXQgfFwKKwkJdGVzdF9tdXN0X2ZhaWwgZ3JlcCAiZ2l0IGF1dGhvci4qZG9lcyBub3QgbWF0Y2giICYmCisKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFVzZXJOYW1lQ2hlY2sgdHJ1ZSAmJgorCQltYWtlX2NoYW5nZV9ieV91c2VyIHVzZXJuYW1lZmlsZTMgQ2hhcmxpZSBjaGFybGllQGxvY2FsaG9zdCAmJgorCQlnaXQgcDQgY29tbWl0IHxcCisJCXRlc3RfbXVzdF9mYWlsIGdyZXAgImdpdCBhdXRob3IuKmRvZXMgbm90IG1hdGNoIiAmJgorCisJCXA0X2NoZWNrX2NvbW1pdF9hdXRob3IgdXNlcm5hbWVmaWxlMyBhbGljZQorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAna2lsbCBwNGQnICcKKwlraWxsX3A0ZAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDk4MTQtZ2l0LXA0LXJlbmFtZS5zaCBiL3QvdDk4MTQtZ2l0LXA0LXJlbmFtZS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iZTgwMmUwCi0tLSAvZGV2L251bGwKKysrIGIvdC90OTgxNC1naXQtcDQtcmVuYW1lLnNoCkBAIC0wLDAgKzEsMjQxIEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHA0IHJlbmFtZScKKworLiAuL2xpYi1naXQtcDQuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhcnQgcDRkJyAnCisJc3RhcnRfcDRkCisnCisKKyMgV2UgcmVseSBvbiB0aGlzIGJlaGF2aW9yIHRvIGRldGVjdCBmb3IgcDQgbW92ZSBhdmFpbGFiaWxpdHkuCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwNCBoZWxwIHVua25vd24gcmV0dXJucyAxJyAnCisJKAorCQljZCAiJGNsaSIgJiYKKwkJKAorCQkJcDQgaGVscCBjbGllbnQgPmVycnMgMj4mMQorCQkJZWNobyAkPyA+cmV0dmFsCisJCSkKKwkJZWNobyAwID5leHBlY3RlZCAmJgorCQl0ZXN0X2NtcCBleHBlY3RlZCByZXR2YWwgJiYKKwkJcm0gcmV0dmFsICYmCisJCSgKKwkJCXA0IGhlbHAgbm9zdWNoY29tbWFuZCA+ZXJycyAyPiYxCisJCQllY2hvICQ/ID5yZXR2YWwKKwkJKQorCQllY2hvIDEgPmV4cGVjdGVkICYmCisJCXRlc3RfY21wIGV4cGVjdGVkIHJldHZhbCAmJgorCQlybSByZXR2YWwKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0ZSBmaWxlcycgJworCSgKKwkJY2QgIiRjbGkiICYmCisJCXA0IGNsaWVudCAtbyB8IHNlZCAiL0xpbmVFbmQvcy86LiovOnVuaXgvIiB8IHA0IGNsaWVudCAtaSAmJgorCQljYXQgPmZpbGUxIDw8LUVPRiAmJgorCQlBIGxhcmdlIGJsb2NrIG9mIHRleHQKKwkJaW4gZmlsZTEgdGhhdCB3aWxsIGdlbmVyYXRlCisJCWVub3VnaCBjb250ZXh0IHNvIHRoYXQgcmVuYW1lCisJCWFuZCBjb3B5IGRldGVjdGlvbiB3aWxsIGZpbmQKKwkJc29tZXRoaW5nIGludGVyZXN0aW5nIHRvIGRvLgorCQlFT0YKKwkJY2F0ID5maWxlMiA8PC1FT0YgJiYKKwkJLyoKKwkJICogVGhpcyBibG9iIGxvb2tzIGEgYml0CisJCSAqIGRpZmZlcmVudC4KKwkJICovCisJCWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKwkJeworCQkJY2hhciB0ZXh0WzIwMF07CisKKwkJCXN0cmNweSh0ZXh0LCAiY29weS9yZW5hbWUgdGhpcyIpOworCQkJcHJpbnRmKCJ0ZXh0IGlzICVzXG4iLCB0ZXh0KTsKKwkJCXJldHVybiAwOworCQl9CisJCUVPRgorCQlwNCBhZGQgZmlsZTEgZmlsZTIgJiYKKwkJcDQgc3VibWl0IC1kICJhZGQgZmlsZXMiCisJKQorJworCisjIFJlbmFtZSBhIGZpbGUgYW5kIGNvbmZpcm0gdGhhdCByZW5hbWUgaXMgbm90IGRldGVjdGVkIGluIFA0LgorIyBSZW5hbWUgdGhlIG5ldyBmaWxlIGFnYWluIHdpdGggZGV0ZWN0UmVuYW1lcyBvcHRpb24gZW5hYmxlZCBhbmQgY29uZmlybSB0aGF0CisjIHRoaXMgaXMgZGV0ZWN0ZWQgaW4gUDQuCisjIFJlbmFtZSB0aGUgbmV3IGZpbGUgYWdhaW4gYWRkaW5nIGFuIGV4dHJhIGxpbmUsIGNvbmZpZ3VyZSBhIGJpZyB0aHJlc2hvbGQgaW4KKyMgZGV0ZWN0UmVuYW1lcyBhbmQgY29uZmlybSB0aGF0IHJlbmFtZSBpcyBub3QgZGV0ZWN0ZWQgaW4gUDQuCisjIFJlcGVhdCwgdGhpcyB0aW1lIHdpdGggYSBzbWFsbGVyIHRocmVzaG9sZCBhbmQgY29uZmlybSB0aGF0IHRoZSByZW5hbWUgaXMKKyMgZGV0ZWN0ZWQgaW4gUDQuCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZXRlY3QgcmVuYW1lcycgJworCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3RAYWxsICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgorCisJCWdpdCBtdiBmaWxlMSBmaWxlNCAmJgorCQlnaXQgY29tbWl0IC1hIC1tICJSZW5hbWUgZmlsZTEgdG8gZmlsZTQiICYmCisJCWdpdCBkaWZmLXRyZWUgLXIgLU0gSEVBRCAmJgorCQlnaXQgcDQgc3VibWl0ICYmCisJCXA0IGZpbGVsb2cgLy9kZXBvdC9maWxlNCA+ZmlsZWxvZyAmJgorCQkhIGdyZXAgIiBmcm9tIC8vZGVwb3QiIGZpbGVsb2cgJiYKKworCQlnaXQgbXYgZmlsZTQgZmlsZTUgJiYKKwkJZ2l0IGNvbW1pdCAtYSAtbSAiUmVuYW1lIGZpbGU0IHRvIGZpbGU1IiAmJgorCQlnaXQgZGlmZi10cmVlIC1yIC1NIEhFQUQgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuZGV0ZWN0UmVuYW1lcyB0cnVlICYmCisJCWdpdCBwNCBzdWJtaXQgJiYKKwkJcDQgZmlsZWxvZyAvL2RlcG90L2ZpbGU1ID5maWxlbG9nICYmCisJCWdyZXAgIiBmcm9tIC8vZGVwb3QvZmlsZTQiIGZpbGVsb2cgJiYKKworCQlnaXQgbXYgZmlsZTUgZmlsZTYgJiYKKwkJZWNobyB1cGRhdGUgPj5maWxlNiAmJgorCQlnaXQgYWRkIGZpbGU2ICYmCisJCWdpdCBjb21taXQgLWEgLW0gIlJlbmFtZSBmaWxlNSB0byBmaWxlNiB3aXRoIGNoYW5nZXMiICYmCisJCWdpdCBkaWZmLXRyZWUgLXIgLU0gSEVBRCAmJgorCQlsZXZlbD0kKGdpdCBkaWZmLXRyZWUgLXIgLU0gSEVBRCB8IHNlZCAxZCB8IGN1dCAtZjEgfCBjdXQgLWQiICIgLWY1IHwgc2VkICJzL1IwKi8vIikgJiYKKwkJdGVzdCAtbiAiJGxldmVsIiAmJiB0ZXN0ICIkbGV2ZWwiIC1ndCAwICYmIHRlc3QgIiRsZXZlbCIgLWx0IDk4ICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LmRldGVjdFJlbmFtZXMgJCgoJGxldmVsICsgMikpICYmCisJCWdpdCBwNCBzdWJtaXQgJiYKKwkJcDQgZmlsZWxvZyAvL2RlcG90L2ZpbGU2ID5maWxlbG9nICYmCisJCSEgZ3JlcCAiIGZyb20gLy9kZXBvdCIgZmlsZWxvZyAmJgorCisJCWdpdCBtdiBmaWxlNiBmaWxlNyAmJgorCQllY2hvIHVwZGF0ZSA+PmZpbGU3ICYmCisJCWdpdCBhZGQgZmlsZTcgJiYKKwkJZ2l0IGNvbW1pdCAtYSAtbSAiUmVuYW1lIGZpbGU2IHRvIGZpbGU3IHdpdGggY2hhbmdlcyIgJiYKKwkJZ2l0IGRpZmYtdHJlZSAtciAtTSBIRUFEICYmCisJCWxldmVsPSQoZ2l0IGRpZmYtdHJlZSAtciAtTSBIRUFEIHwgc2VkIDFkIHwgY3V0IC1mMSB8IGN1dCAtZCIgIiAtZjUgfCBzZWQgInMvUjAqLy8iKSAmJgorCQl0ZXN0IC1uICIkbGV2ZWwiICYmIHRlc3QgIiRsZXZlbCIgLWd0IDIgJiYgdGVzdCAiJGxldmVsIiAtbHQgMTAwICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LmRldGVjdFJlbmFtZXMgJCgoJGxldmVsIC0gMikpICYmCisJCWdpdCBwNCBzdWJtaXQgJiYKKwkJcDQgZmlsZWxvZyAvL2RlcG90L2ZpbGU3ID5maWxlbG9nICYmCisJCWdyZXAgIiBmcm9tIC8vZGVwb3QvZmlsZTYiIGZpbGVsb2cKKwkpCisnCisKKyMgQ29weSBhIGZpbGUgYW5kIGNvbmZpcm0gdGhhdCBjb3B5IGlzIG5vdCBkZXRlY3RlZCBpbiBQNC4KKyMgQ29weSBhIGZpbGUgd2l0aCBkZXRlY3RDb3BpZXMgb3B0aW9uIGVuYWJsZWQgYW5kIGNvbmZpcm0gdGhhdCBjb3B5IGlzIG5vdAorIyBkZXRlY3RlZCBpbiBQNC4KKyMgTW9kaWZ5IGFuZCBjb3B5IGEgZmlsZSB3aXRoIGRldGVjdENvcGllcyBvcHRpb24gZW5hYmxlZCBhbmQgY29uZmlybSB0aGF0IGNvcHkKKyMgaXMgZGV0ZWN0ZWQgaW4gUDQuCisjIENvcHkgYSBmaWxlIHdpdGggZGV0ZWN0Q29waWVzIGFuZCBkZXRlY3RDb3BpZXNIYXJkZXIgb3B0aW9ucyBlbmFibGVkIGFuZAorIyBjb25maXJtIHRoYXQgY29weSBpcyBkZXRlY3RlZCBpbiBQNC4KKyMgTW9kaWZ5IGFuZCBjb3B5IGEgZmlsZSwgY29uZmlndXJlIGEgYmlnZ2VyIHRocmVzaG9sZCBpbiBkZXRlY3RDb3BpZXMgYW5kCisjIGNvbmZpcm0gdGhhdCBjb3B5IGlzIG5vdCBkZXRlY3RlZCBpbiBQNC4KKyMgTW9kaWZ5IGFuZCBjb3B5IGEgZmlsZSwgY29uZmlndXJlIGEgc21hbGxlciB0aHJlc2hvbGQgaW4gZGV0ZWN0Q29waWVzIGFuZAorIyBjb25maXJtIHRoYXQgY29weSBpcyBkZXRlY3RlZCBpbiBQNC4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RldGVjdCBjb3BpZXMnICcKKwlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90QGFsbCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LnNraXBTdWJtaXRFZGl0IHRydWUgJiYKKworCQljcCBmaWxlMiBmaWxlOCAmJgorCQlnaXQgYWRkIGZpbGU4ICYmCisJCWdpdCBjb21taXQgLWEgLW0gIkNvcHkgZmlsZTIgdG8gZmlsZTgiICYmCisJCWdpdCBkaWZmLXRyZWUgLXIgLUMgSEVBRCAmJgorCQlnaXQgcDQgc3VibWl0ICYmCisJCXA0IGZpbGVsb2cgLy9kZXBvdC9maWxlOCAmJgorCQlwNCBmaWxlbG9nIC8vZGVwb3QvZmlsZTggfCB0ZXN0X211c3RfZmFpbCBncmVwIC1xICJicmFuY2ggZnJvbSIgJiYKKworCQljcCBmaWxlMiBmaWxlOSAmJgorCQlnaXQgYWRkIGZpbGU5ICYmCisJCWdpdCBjb21taXQgLWEgLW0gIkNvcHkgZmlsZTIgdG8gZmlsZTkiICYmCisJCWdpdCBkaWZmLXRyZWUgLXIgLUMgSEVBRCAmJgorCQlnaXQgY29uZmlnIGdpdC1wNC5kZXRlY3RDb3BpZXMgdHJ1ZSAmJgorCQlnaXQgcDQgc3VibWl0ICYmCisJCXA0IGZpbGVsb2cgLy9kZXBvdC9maWxlOSAmJgorCQlwNCBmaWxlbG9nIC8vZGVwb3QvZmlsZTkgfCB0ZXN0X211c3RfZmFpbCBncmVwIC1xICJicmFuY2ggZnJvbSIgJiYKKworCQllY2hvICJmaWxlMiIgPj5maWxlMiAmJgorCQljcCBmaWxlMiBmaWxlMTAgJiYKKwkJZ2l0IGFkZCBmaWxlMiBmaWxlMTAgJiYKKwkJZ2l0IGNvbW1pdCAtYSAtbSAiTW9kaWZ5IGFuZCBjb3B5IGZpbGUyIHRvIGZpbGUxMCIgJiYKKwkJZ2l0IGRpZmYtdHJlZSAtciAtQyBIRUFEICYmCisJCWdpdCBwNCBzdWJtaXQgJiYKKwkJcDQgZmlsZWxvZyAvL2RlcG90L2ZpbGUxMCAmJgorCQlwNCBmaWxlbG9nIC8vZGVwb3QvZmlsZTEwIHwgZ3JlcCAtcSAiYnJhbmNoIGZyb20gLy9kZXBvdC9maWxlIiAmJgorCisJCWNwIGZpbGUyIGZpbGUxMSAmJgorCQlnaXQgYWRkIGZpbGUxMSAmJgorCQlnaXQgY29tbWl0IC1hIC1tICJDb3B5IGZpbGUyIHRvIGZpbGUxMSIgJiYKKwkJZ2l0IGRpZmYtdHJlZSAtciAtQyAtLWZpbmQtY29waWVzLWhhcmRlciBIRUFEICYmCisJCXNyYz0kKGdpdCBkaWZmLXRyZWUgLXIgLUMgLS1maW5kLWNvcGllcy1oYXJkZXIgSEVBRCB8IHNlZCAxZCB8IGN1dCAtZjIpICYmCisJCXRlc3QgIiRzcmMiID0gZmlsZTEwICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LmRldGVjdENvcGllc0hhcmRlciB0cnVlICYmCisJCWdpdCBwNCBzdWJtaXQgJiYKKwkJcDQgZmlsZWxvZyAvL2RlcG90L2ZpbGUxMSAmJgorCQlwNCBmaWxlbG9nIC8vZGVwb3QvZmlsZTExIHwgZ3JlcCAtcSAiYnJhbmNoIGZyb20gLy9kZXBvdC9maWxlIiAmJgorCisJCWNwIGZpbGUyIGZpbGUxMiAmJgorCQllY2hvICJzb21lIHRleHQiID4+ZmlsZTEyICYmCisJCWdpdCBhZGQgZmlsZTEyICYmCisJCWdpdCBjb21taXQgLWEgLW0gIkNvcHkgZmlsZTIgdG8gZmlsZTEyIHdpdGggY2hhbmdlcyIgJiYKKwkJZ2l0IGRpZmYtdHJlZSAtciAtQyAtLWZpbmQtY29waWVzLWhhcmRlciBIRUFEICYmCisJCWxldmVsPSQoZ2l0IGRpZmYtdHJlZSAtciAtQyAtLWZpbmQtY29waWVzLWhhcmRlciBIRUFEIHwgc2VkIDFkIHwgY3V0IC1mMSB8IGN1dCAtZCIgIiAtZjUgfCBzZWQgInMvQzAqLy8iKSAmJgorCQl0ZXN0IC1uICIkbGV2ZWwiICYmIHRlc3QgIiRsZXZlbCIgLWd0IDAgJiYgdGVzdCAiJGxldmVsIiAtbHQgOTggJiYKKwkJc3JjPSQoZ2l0IGRpZmYtdHJlZSAtciAtQyAtLWZpbmQtY29waWVzLWhhcmRlciBIRUFEIHwgc2VkIDFkIHwgY3V0IC1mMikgJiYKKwkJdGVzdCAiJHNyYyIgPSBmaWxlMTAgLW8gIiRzcmMiID0gZmlsZTExICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LmRldGVjdENvcGllcyAkKCgkbGV2ZWwgKyAyKSkgJiYKKwkJZ2l0IHA0IHN1Ym1pdCAmJgorCQlwNCBmaWxlbG9nIC8vZGVwb3QvZmlsZTEyICYmCisJCXA0IGZpbGVsb2cgLy9kZXBvdC9maWxlMTIgfCB0ZXN0X211c3RfZmFpbCBncmVwIC1xICJicmFuY2ggZnJvbSIgJiYKKworCQljcCBmaWxlMiBmaWxlMTMgJiYKKwkJZWNobyAiZGlmZmVyZW50IHRleHQiID4+ZmlsZTEzICYmCisJCWdpdCBhZGQgZmlsZTEzICYmCisJCWdpdCBjb21taXQgLWEgLW0gIkNvcHkgZmlsZTIgdG8gZmlsZTEzIHdpdGggY2hhbmdlcyIgJiYKKwkJZ2l0IGRpZmYtdHJlZSAtciAtQyAtLWZpbmQtY29waWVzLWhhcmRlciBIRUFEICYmCisJCWxldmVsPSQoZ2l0IGRpZmYtdHJlZSAtciAtQyAtLWZpbmQtY29waWVzLWhhcmRlciBIRUFEIHwgc2VkIDFkIHwgY3V0IC1mMSB8IGN1dCAtZCIgIiAtZjUgfCBzZWQgInMvQzAqLy8iKSAmJgorCQl0ZXN0IC1uICIkbGV2ZWwiICYmIHRlc3QgIiRsZXZlbCIgLWd0IDIgJiYgdGVzdCAiJGxldmVsIiAtbHQgMTAwICYmCisJCXNyYz0kKGdpdCBkaWZmLXRyZWUgLXIgLUMgLS1maW5kLWNvcGllcy1oYXJkZXIgSEVBRCB8IHNlZCAxZCB8IGN1dCAtZjIpICYmCisJCXRlc3QgIiRzcmMiID0gZmlsZTEwIC1vICIkc3JjIiA9IGZpbGUxMSAtbyAiJHNyYyIgPSBmaWxlMTIgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuZGV0ZWN0Q29waWVzICQoKCRsZXZlbCAtIDIpKSAmJgorCQlnaXQgcDQgc3VibWl0ICYmCisJCXA0IGZpbGVsb2cgLy9kZXBvdC9maWxlMTMgJiYKKwkJcDQgZmlsZWxvZyAvL2RlcG90L2ZpbGUxMyB8IGdyZXAgLXEgImJyYW5jaCBmcm9tIC8vZGVwb3QvZmlsZSIKKwkpCisnCisKKyMgU2VlIGlmIGNvbmZpZ3VyYWJsZXMgY2FuIGJlIHNldCwgYW5kIGluIHBhcnRpY3VsYXIgaWYgdGhlIHJ1bi5tb3ZlLmFsbG93CisjIHZhcmlhYmxlIGV4aXN0cywgd2hpY2ggYWxsb3dzIGFkbWlucyB0byBkaXNhYmxlIHRoZSAicDQgbW92ZSIgY29tbWFuZC4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3A0IGNvbmZpZ3VyZSBjb21tYW5kIGFuZCBydW4ubW92ZS5hbGxvdyBhcmUgYXZhaWxhYmxlJyAnCisJcDQgY29uZmlndXJlIHNob3cgcnVuLm1vdmUuYWxsb3cgPm91dCA7IHJldHZhbD0kPyAmJgorCXRlc3QgJHJldHZhbCA9IDAgJiYKKwl7CisJCWVncmVwIF5ydW4ubW92ZS5hbGxvdzogb3V0ICYmCisJCXRlc3Rfc2V0X3ByZXJlcSBQNERfSEFWRV9DT05GSUdVUkFCTEVfUlVOX01PVkVfQUxMT1cgfHwKKwkJdHJ1ZQorCX0gfHwgdHJ1ZQorJworCisjIElmIG1vdmUgY2FuIGJlIGRpc2FibGVkLCB0dXJuIGl0IG9mZiBhbmQgdGVzdCBwNCBtb3ZlIGhhbmRsaW5nCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFA0RF9IQVZFX0NPTkZJR1VSQUJMRV9SVU5fTU9WRV9BTExPVyBcCisJCSAgICAnZG8gbm90IHVzZSBwNCBtb3ZlIHdoZW4gYWRtaW5pc3RyYXRpdmVseSBkaXNhYmxlZCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicDQgY29uZmlndXJlIHNldCBydW4ubW92ZS5hbGxvdz0xIiAmJgorCXA0IGNvbmZpZ3VyZSBzZXQgcnVuLm1vdmUuYWxsb3c9MCAmJgorCSgKKwkJY2QgIiRjbGkiICYmCisJCWVjaG8gbW92ZS1kaXNhbGxvdy1maWxlID5tb3ZlLWRpc2FsbG93LWZpbGUgJiYKKwkJcDQgYWRkIG1vdmUtZGlzYWxsb3ctZmlsZSAmJgorCQlwNCBzdWJtaXQgLWQgImFkZCBtb3ZlLWRpc2FsbG93LWZpbGUiCisJKSAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdCB0cnVlICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LmRldGVjdFJlbmFtZXMgdHJ1ZSAmJgorCQlnaXQgbXYgbW92ZS1kaXNhbGxvdy1maWxlIG1vdmUtZGlzYWxsb3ctZmlsZS1tb3ZlZCAmJgorCQlnaXQgY29tbWl0IC1tICJtb3ZlIG1vdmUtZGlzYWxsb3ctZmlsZSIgJiYKKwkJZ2l0IHA0IHN1Ym1pdAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAna2lsbCBwNGQnICcKKwlraWxsX3A0ZAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDk4MTUtZ2l0LXA0LXN1Ym1pdC1mYWlsLnNoIGIvdC90OTgxNS1naXQtcDQtc3VibWl0LWZhaWwuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTI0M2Q5NgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDk4MTUtZ2l0LXA0LXN1Ym1pdC1mYWlsLnNoCkBAIC0wLDAgKzEsNDMyIEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHA0IHN1Ym1pdCBmYWlsdXJlIGhhbmRsaW5nJworCisuIC4vbGliLWdpdC1wNC5zaAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGFydCBwNGQnICcKKwlzdGFydF9wNGQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdCBkZXBvdCcgJworCSgKKwkJY2QgIiRjbGkiICYmCisJCXA0IGNsaWVudCAtbyB8IHNlZCAiL0xpbmVFbmQvcy86LiovOnVuaXgvIiB8IHA0IGNsaWVudCAtaSAmJgorCQllY2hvIGxpbmUxID5maWxlMSAmJgorCQlwNCBhZGQgZmlsZTEgJiYKKwkJcDQgc3VibWl0IC1kICJsaW5lMSBpbiBmaWxlMSIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbmZsaWN0IG9uIG9uZSBjb21taXQnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCisJKAorCQljZCAiJGNsaSIgJiYKKwkJcDQgb3BlbiBmaWxlMSAmJgorCQllY2hvIGxpbmUyID4+ZmlsZTEgJiYKKwkJcDQgc3VibWl0IC1kICJsaW5lMiBpbiBmaWxlMSIKKwkpICYmCisJKAorCQkjIG5vdyB0aGlzIGNvbW1pdCBzaG91bGQgY2F1c2UgYSBjb25mbGljdAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgorCQllY2hvIGxpbmUzID4+ZmlsZTEgJiYKKwkJZ2l0IGFkZCBmaWxlMSAmJgorCQlnaXQgY29tbWl0IC1tICJsaW5lMyBpbiBmaWxlMSB3aWxsIGNvbmZsaWN0IiAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IHA0IHN1Ym1pdCA+b3V0ICYmCisJCXRlc3RfaTE4bmdyZXAgIk5vIGNvbW1pdHMgYXBwbGllZCIgb3V0CisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb25mbGljdCBvbiBzZWNvbmQgb2YgdHdvIGNvbW1pdHMnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCisJKAorCQljZCAiJGNsaSIgJiYKKwkJcDQgb3BlbiBmaWxlMSAmJgorCQllY2hvIGxpbmUzID4+ZmlsZTEgJiYKKwkJcDQgc3VibWl0IC1kICJsaW5lMyBpbiBmaWxlMSIKKwkpICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgorCQkjIHRoaXMgY29tbWl0IGlzIG9rYXkKKwkJdGVzdF9jb21taXQgImZpcnN0X2NvbW1pdF9va2F5IiAmJgorCQkjIG5vdyB0aGlzIHN1Ym1pdCBzaG91bGQgY2F1c2UgYSBjb25mbGljdAorCQllY2hvIGxpbmU0ID4+ZmlsZTEgJiYKKwkJZ2l0IGFkZCBmaWxlMSAmJgorCQlnaXQgY29tbWl0IC1tICJsaW5lNCBpbiBmaWxlMSB3aWxsIGNvbmZsaWN0IiAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IHA0IHN1Ym1pdCA+b3V0ICYmCisJCXRlc3RfaTE4bmdyZXAgIkFwcGxpZWQgb25seSB0aGUgY29tbWl0cyIgb3V0CisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb25mbGljdCBvbiBmaXJzdCBvZiB0d28gY29tbWl0cywgc2tpcCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwkoCisJCWNkICIkY2xpIiAmJgorCQlwNCBvcGVuIGZpbGUxICYmCisJCWVjaG8gbGluZTQgPj5maWxlMSAmJgorCQlwNCBzdWJtaXQgLWQgImxpbmU0IGluIGZpbGUxIgorCSkgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQlnaXQgY29uZmlnIGdpdC1wNC5za2lwU3VibWl0RWRpdCB0cnVlICYmCisJCSMgdGhpcyBzdWJtaXQgc2hvdWxkIGNhdXNlIGEgY29uZmxpY3QKKwkJZWNobyBsaW5lNSA+PmZpbGUxICYmCisJCWdpdCBhZGQgZmlsZTEgJiYKKwkJZ2l0IGNvbW1pdCAtbSAibGluZTUgaW4gZmlsZTEgd2lsbCBjb25mbGljdCIgJiYKKwkJIyBidXQgdGhpcyBjb21taXQgaXMgb2theQorCQl0ZXN0X2NvbW1pdCAib2theV9jb21taXRfYWZ0ZXJfc2tpcCIgJiYKKwkJZWNobyBzIHwgdGVzdF9leHBlY3RfY29kZSAxIGdpdCBwNCBzdWJtaXQgPm91dCAmJgorCQl0ZXN0X2kxOG5ncmVwICJBcHBsaWVkIG9ubHkgdGhlIGNvbW1pdHMiIG91dAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY29uZmxpY3Qgb24gZmlyc3Qgb2YgdHdvIGNvbW1pdHMsIHF1aXQnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCisJKAorCQljZCAiJGNsaSIgJiYKKwkJcDQgb3BlbiBmaWxlMSAmJgorCQllY2hvIGxpbmU3ID4+ZmlsZTEgJiYKKwkJcDQgc3VibWl0IC1kICJsaW5lNyBpbiBmaWxlMSIKKwkpICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgorCQkjIHRoaXMgc3VibWl0IHNob3VsZCBjYXVzZSBhIGNvbmZsaWN0CisJCWVjaG8gbGluZTggPj5maWxlMSAmJgorCQlnaXQgYWRkIGZpbGUxICYmCisJCWdpdCBjb21taXQgLW0gImxpbmU4IGluIGZpbGUxIHdpbGwgY29uZmxpY3QiICYmCisJCSMgYnV0IHRoaXMgY29tbWl0IGlzIG9rYXkKKwkJdGVzdF9jb21taXQgIm9rYXlfY29tbWl0X2FmdGVyX3F1aXQiICYmCisJCWVjaG8gcSB8IHRlc3RfZXhwZWN0X2NvZGUgMSBnaXQgcDQgc3VibWl0ID5vdXQgJiYKKwkJdGVzdF9pMThuZ3JlcCAiTm8gY29tbWl0cyBhcHBsaWVkIiBvdXQKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbmZsaWN0IGNsaSBhbmQgY29uZmlnIG9wdGlvbnMnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IHA0IHN1Ym1pdCAtLWNvbmZsaWN0PWFzayAmJgorCQlnaXQgcDQgc3VibWl0IC0tY29uZmxpY3Q9c2tpcCAmJgorCQlnaXQgcDQgc3VibWl0IC0tY29uZmxpY3Q9cXVpdCAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDIgZ2l0IHA0IHN1Ym1pdCAtLWNvbmZsaWN0PWZvbyAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDIgZ2l0IHA0IHN1Ym1pdCAtLWNvbmZsaWN0ICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LmNvbmZsaWN0IGZvbyAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IHA0IHN1Ym1pdCAmJgorCQlnaXQgY29uZmlnIC0tdW5zZXQgZ2l0LXA0LmNvbmZsaWN0ICYmCisJCWdpdCBwNCBzdWJtaXQKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbmZsaWN0IG9uIGZpcnN0IG9mIHR3byBjb21taXRzLCAtLWNvbmZsaWN0PXNraXAnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCisJKAorCQljZCAiJGNsaSIgJiYKKwkJcDQgb3BlbiBmaWxlMSAmJgorCQllY2hvIGxpbmU5ID4+ZmlsZTEgJiYKKwkJcDQgc3VibWl0IC1kICJsaW5lOSBpbiBmaWxlMSIKKwkpICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgorCQkjIHRoaXMgc3VibWl0IHNob3VsZCBjYXVzZSBhIGNvbmZsaWN0CisJCWVjaG8gbGluZTEwID4+ZmlsZTEgJiYKKwkJZ2l0IGFkZCBmaWxlMSAmJgorCQlnaXQgY29tbWl0IC1tICJsaW5lMTAgaW4gZmlsZTEgd2lsbCBjb25mbGljdCIgJiYKKwkJIyBidXQgdGhpcyBjb21taXQgaXMgb2theQorCQl0ZXN0X2NvbW1pdCAib2theV9jb21taXRfYWZ0ZXJfYXV0b19za2lwIiAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IHA0IHN1Ym1pdCAtLWNvbmZsaWN0PXNraXAgPm91dCAmJgorCQl0ZXN0X2kxOG5ncmVwICJBcHBsaWVkIG9ubHkgdGhlIGNvbW1pdHMiIG91dAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY29uZmxpY3Qgb24gZmlyc3Qgb2YgdHdvIGNvbW1pdHMsIC0tY29uZmxpY3Q9cXVpdCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwkoCisJCWNkICIkY2xpIiAmJgorCQlwNCBvcGVuIGZpbGUxICYmCisJCWVjaG8gbGluZTExID4+ZmlsZTEgJiYKKwkJcDQgc3VibWl0IC1kICJsaW5lMTEgaW4gZmlsZTEiCisJKSAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LnNraXBTdWJtaXRFZGl0IHRydWUgJiYKKwkJIyB0aGlzIHN1Ym1pdCBzaG91bGQgY2F1c2UgYSBjb25mbGljdAorCQllY2hvIGxpbmUxMiA+PmZpbGUxICYmCisJCWdpdCBhZGQgZmlsZTEgJiYKKwkJZ2l0IGNvbW1pdCAtbSAibGluZTEyIGluIGZpbGUxIHdpbGwgY29uZmxpY3QiICYmCisJCSMgYnV0IHRoaXMgY29tbWl0IGlzIG9rYXkKKwkJdGVzdF9jb21taXQgIm9rYXlfY29tbWl0X2FmdGVyX2F1dG9fcXVpdCIgJiYKKwkJdGVzdF9leHBlY3RfY29kZSAxIGdpdCBwNCBzdWJtaXQgLS1jb25mbGljdD1xdWl0ID5vdXQgJiYKKwkJdGVzdF9pMThuZ3JlcCAiTm8gY29tbWl0cyBhcHBsaWVkIiBvdXQKKwkpCisnCisKKyMKKyMgQ2xlYW51cCBhZnRlciBzdWJtaXQgZmFpbCwgYWxsIGNhc2VzLiAgU29tZSBtb2RpZmljYXRpb25zIGhhcHBlbgorIyBiZWZvcmUgdHJ5aW5nIHRvIGFwcGx5IHRoZSBwYXRjaC4gIE1ha2Ugc3VyZSB0aGVzZSBhcmUgdW53b3VuZAorIyBwcm9wZXJseS4gIFB1dCBlYWNoIG9uZSBpbiBhIGRpZmYgYWxvbmcgd2l0aCBzb21ldGhpbmcgdGhhdCB3aWxsCisjIG9idmlvdXNseSBjb25mbGljdC4gIE1ha2Ugc3VyZSBpdCBpcyBiYWNrIHRvIG5vcm1hbCBhZnRlci4KKyMKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBlZGl0IHA0IHBvcHVsYXRlJyAnCisJKAorCQljZCAiJGNsaSIgJiYKKwkJZWNobyB0ZXh0IGZpbGUgPnRleHQgJiYKKwkJcDQgYWRkIHRleHQgJiYKKwkJZWNobyB0ZXh0K3ggZmlsZSA+dGV4dCt4ICYmCisJCWNobW9kIDc1NSB0ZXh0K3ggJiYKKwkJcDQgYWRkIHRleHQreCAmJgorCQlwNCBzdWJtaXQgLWQgInBvcHVsYXRlIHA0IgorCSkKKycKKworc2V0dXBfY29uZmxpY3QoKSB7CisJIyBjbG9uZSBiZWZvcmUgbW9kaWZ5aW5nIGZpbGUxIHRvIGZvcmNlIGl0IHRvIGNvbmZsaWN0CisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgorCSMgdGlja3Mgb3V0c2lkZSBzdWJzaGVsbHMKKwl0ZXN0X3RpY2sgJiYKKwkoCisJCWNkICIkY2xpIiAmJgorCQlwNCBvcGVuIGZpbGUxICYmCisJCWVjaG8gJHRlc3RfdGljayA+PmZpbGUxICYmCisJCXA0IHN1Ym1pdCAtZCAiJHRlc3RfdGljayBpbiBmaWxlMSIKKwkpICYmCisJdGVzdF90aWNrICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgorCQkjIGVhc3kgY29uZmxpY3QKKwkJZWNobyAkdGVzdF90aWNrID4+ZmlsZTEgJiYKKwkJZ2l0IGFkZCBmaWxlMQorCQkjIGNhbGxlciB3aWxsIGFkZCBtb3JlIGFuZCBzdWJtaXQKKwkpCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgZWRpdCBhZnRlciBzdWJtaXQgZmFpbCcgJworCXNldHVwX2NvbmZsaWN0ICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZWNobyBhbm90aGVyIGxpbmUgPj50ZXh0ICYmCisJCWdpdCBhZGQgdGV4dCAmJgorCQlnaXQgY29tbWl0IC1tICJjb25mbGljdCIgJiYKKwkJdGVzdF9leHBlY3RfY29kZSAxIGdpdCBwNCBzdWJtaXQKKwkpICYmCisJKAorCQljZCAiJGNsaSIgJiYKKwkJIyBtYWtlIHN1cmUgaXQgaXMgbm90IG9wZW4KKwkJISBwNCBmc3RhdCAtVCBhY3Rpb24gdGV4dAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBhZGQgYWZ0ZXIgc3VibWl0IGZhaWwnICcKKwlzZXR1cF9jb25mbGljdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWVjaG8gbmV3IGZpbGUgPnRleHRuZXcgJiYKKwkJZ2l0IGFkZCB0ZXh0bmV3ICYmCisJCWdpdCBjb21taXQgLW0gImNvbmZsaWN0IiAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IHA0IHN1Ym1pdAorCSkgJiYKKwkoCisJCWNkICIkY2xpIiAmJgorCQkjIG1ha2Ugc3VyZSBpdCBpcyBub3QgdGhlcmUKKwkJIyBhbmQgdGhhdCBwNCB0aGlua3MgaXQgaXMgbm90IGFkZGVkCisJCSMgICBQNCByZXR1cm5zIDAgYm90aCBmb3IgIm5vdCB0aGVyZSBidXQgYWRkZWQiIGFuZAorCQkjICAgIm5vdCB0aGVyZSIsIHNvIGdyZXAuCisJCXRlc3RfcGF0aF9pc19taXNzaW5nIHRleHRuZXcgJiYKKwkJcDQgZnN0YXQgLVQgYWN0aW9uIHRleHRuZXcgMj4mMSB8IGdyZXAgIm5vIHN1Y2ggZmlsZSIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgZGVsZXRlIGFmdGVyIHN1Ym1pdCBmYWlsJyAnCisJc2V0dXBfY29uZmxpY3QgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQlnaXQgcm0gdGV4dCt4ICYmCisJCWdpdCBjb21taXQgLW0gImNvbmZsaWN0IiAmJgorCQl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IHA0IHN1Ym1pdAorCSkgJiYKKwkoCisJCWNkICIkY2xpIiAmJgorCQkjIG1ha2Ugc3VyZSBpdCBpcyB0aGVyZQorCQl0ZXN0X3BhdGhfaXNfZmlsZSB0ZXh0K3ggJiYKKwkJISBwNCBmc3RhdCAtVCBhY3Rpb24gdGV4dCt4CisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvcHkgYWZ0ZXIgc3VibWl0IGZhaWwnICcKKwlzZXR1cF9jb25mbGljdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWNwIHRleHQgdGV4dDIgJiYKKwkJZ2l0IGFkZCB0ZXh0MiAmJgorCQlnaXQgY29tbWl0IC1tICJjb25mbGljdCIgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuZGV0ZWN0Q29waWVzIHRydWUgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuZGV0ZWN0Q29waWVzSGFyZGVyIHRydWUgJiYKKwkJIyBtYWtlIHN1cmUgc2V0dXAgaXMgb2theQorCQlnaXQgZGlmZi10cmVlIC1yIC1DIC0tZmluZC1jb3BpZXMtaGFyZGVyIEhFQUQgfCBncmVwIHRleHQyIHwgZ3JlcCBDMTAwICYmCisJCXRlc3RfZXhwZWN0X2NvZGUgMSBnaXQgcDQgc3VibWl0CisJKSAmJgorCSgKKwkJY2QgIiRjbGkiICYmCisJCXRlc3RfcGF0aF9pc19taXNzaW5nIHRleHQyICYmCisJCXA0IGZzdGF0IC1UIGFjdGlvbiB0ZXh0MiAyPiYxIHwgZ3JlcCAibm8gc3VjaCBmaWxlIgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCByZW5hbWUgYWZ0ZXIgc3VibWl0IGZhaWwnICcKKwlzZXR1cF9jb25mbGljdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWdpdCBtdiB0ZXh0IHRleHQyICYmCisJCWdpdCBjb21taXQgLW0gImNvbmZsaWN0IiAmJgorCQlnaXQgY29uZmlnIGdpdC1wNC5kZXRlY3RSZW5hbWVzIHRydWUgJiYKKwkJIyBtYWtlIHN1cmUgc2V0dXAgaXMgb2theQorCQlnaXQgZGlmZi10cmVlIC1yIC1NIEhFQUQgfCBncmVwIHRleHQyIHwgZ3JlcCBSMTAwICYmCisJCXRlc3RfZXhwZWN0X2NvZGUgMSBnaXQgcDQgc3VibWl0CisJKSAmJgorCSgKKwkJY2QgIiRjbGkiICYmCisJCXRlc3RfcGF0aF9pc19taXNzaW5nIHRleHQyICYmCisJCXA0IGZzdGF0IC1UIGFjdGlvbiB0ZXh0MiAyPiYxIHwgZ3JlcCAibm8gc3VjaCBmaWxlIgorCSkKKycKKworIworIyBDbGVhbnVwIGFmdGVyIGRlY2lkaW5nIG5vdCB0byBzdWJtaXQgZHVyaW5nIGVkaXRUZW1wbGF0ZS4gIFRoaXMKKyMgaW52b2x2ZXMgdW53aW5kaW5nIG1vcmUgd29yaywgYmVjYXVzZSBmaWxlcyBoYXZlIGJlZW4gYWRkZWQsIGRlbGV0ZWQKKyMgYW5kIGNobW9kLWVkIG5vdy4gIFNhbWUgYXBwcm9hY2ggYXMgYWJvdmUuCisjCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgZWRpdCBhZnRlciBzdWJtaXQgY2FuY2VsJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWVjaG8gbGluZSA+PnRleHQgJiYKKwkJZ2l0IGFkZCB0ZXh0ICYmCisJCWdpdCBjb21taXQgLW0gdGV4dCAmJgorCQllY2hvIG4gfCB0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IHA0IHN1Ym1pdCAmJgorCQlnaXQgcmVzZXQgLS1oYXJkIEhFQUReCisJKSAmJgorCSgKKwkJY2QgIiRjbGkiICYmCisJCSEgcDQgZnN0YXQgLVQgYWN0aW9uIHRleHQgJiYKKwkJdGVzdF9jbXAgIiRnaXQiL3RleHQgdGV4dAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBhZGQgYWZ0ZXIgc3VibWl0IGNhbmNlbCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQllY2hvIGxpbmUgPnRleHRuZXcgJiYKKwkJZ2l0IGFkZCB0ZXh0bmV3ICYmCisJCWdpdCBjb21taXQgLW0gdGV4dG5ldyAmJgorCQllY2hvIG4gfCB0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IHA0IHN1Ym1pdAorCSkgJiYKKwkoCisJCWNkICIkY2xpIiAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyB0ZXh0bmV3ICYmCisJCXA0IGZzdGF0IC1UIGFjdGlvbiB0ZXh0bmV3IDI+JjEgfCBncmVwICJubyBzdWNoIGZpbGUiCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGRlbGV0ZSBhZnRlciBzdWJtaXQgY2FuY2VsJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWdpdCBybSB0ZXh0ICYmCisJCWdpdCBjb21taXQgLW0gInJtIHRleHQiICYmCisJCWVjaG8gbiB8IHRlc3RfZXhwZWN0X2NvZGUgMSBnaXQgcDQgc3VibWl0CisJKSAmJgorCSgKKwkJY2QgIiRjbGkiICYmCisJCXRlc3RfcGF0aF9pc19maWxlIHRleHQgJiYKKwkJISBwNCBmc3RhdCAtVCBhY3Rpb24gdGV4dAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb3B5IGFmdGVyIHN1Ym1pdCBjYW5jZWwnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJY3AgdGV4dCB0ZXh0MiAmJgorCQlnaXQgYWRkIHRleHQyICYmCisJCWdpdCBjb21taXQgLW0gdGV4dDIgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuZGV0ZWN0Q29waWVzIHRydWUgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuZGV0ZWN0Q29waWVzSGFyZGVyIHRydWUgJiYKKwkJZ2l0IGRpZmYtdHJlZSAtciAtQyAtLWZpbmQtY29waWVzLWhhcmRlciBIRUFEIHwgZ3JlcCB0ZXh0MiB8IGdyZXAgQzEwMCAmJgorCQllY2hvIG4gfCB0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IHA0IHN1Ym1pdAorCSkgJiYKKwkoCisJCWNkICIkY2xpIiAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyB0ZXh0MiAmJgorCQlwNCBmc3RhdCAtVCBhY3Rpb24gdGV4dDIgMj4mMSB8IGdyZXAgIm5vIHN1Y2ggZmlsZSIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgcmVuYW1lIGFmdGVyIHN1Ym1pdCBjYW5jZWwnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IG12IHRleHQgdGV4dDIgJiYKKwkJZ2l0IGNvbW1pdCAtbSB0ZXh0MiAmJgorCQlnaXQgY29uZmlnIGdpdC1wNC5kZXRlY3RSZW5hbWVzIHRydWUgJiYKKwkJZ2l0IGRpZmYtdHJlZSAtciAtTSBIRUFEIHwgZ3JlcCB0ZXh0MiB8IGdyZXAgUjEwMCAmJgorCQllY2hvIG4gfCB0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IHA0IHN1Ym1pdAorCSkgJiYKKwkoCisJCWNkICIkY2xpIiAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyB0ZXh0MiAmJgorCQlwNCBmc3RhdCAtVCBhY3Rpb24gdGV4dDIgMj4mMSB8IGdyZXAgIm5vIHN1Y2ggZmlsZSIKKwkJdGVzdF9wYXRoX2lzX2ZpbGUgdGV4dCAmJgorCQkhIHA0IGZzdGF0IC1UIGFjdGlvbiB0ZXh0CisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNobW9kIGFmdGVyIHN1Ym1pdCBjYW5jZWwnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJdGVzdF9jaG1vZCAreCB0ZXh0ICYmCisJCXRlc3RfY2htb2QgLXggdGV4dCt4ICYmCisJCWdpdCBhZGQgdGV4dCB0ZXh0K3ggJiYKKwkJZ2l0IGNvbW1pdCAtbSAiY2htb2QgdGV4dHMiICYmCisJCWVjaG8gbiB8IHRlc3RfZXhwZWN0X2NvZGUgMSBnaXQgcDQgc3VibWl0CisJKSAmJgorCSgKKwkJY2QgIiRjbGkiICYmCisJCXRlc3RfcGF0aF9pc19maWxlIHRleHQgJiYKKwkJISBwNCBmc3RhdCAtVCBhY3Rpb24gdGV4dCAmJgorCQl0ZXN0X3BhdGhfaXNfZmlsZSB0ZXh0K3ggJiYKKwkJISBwNCBmc3RhdCAtVCBhY3Rpb24gdGV4dCt4ICYmCisJCWlmIHRlc3RfaGF2ZV9wcmVyZXEgTk9UX0NZR1dJTgorCQl0aGVuCisJCQlzdGF0IC0tZm9ybWF0PSVBIHRleHQgfCBlZ3JlcCBeLXItLSAmJgorCQkJc3RhdCAtLWZvcm1hdD0lQSB0ZXh0K3ggfCBlZ3JlcCBeLXIteAorCQlmaQorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAna2lsbCBwNGQnICcKKwlraWxsX3A0ZAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDk5MDItY29tcGxldGlvbi5zaCBiL3QvdDk5MDItY29tcGxldGlvbi5zaAppbmRleCAyNTZlNmEwLi42ZDlkMTQxIDEwMDc1NQotLS0gYS90L3Q5OTAyLWNvbXBsZXRpb24uc2gKKysrIGIvdC90OTkwMi1jb21wbGV0aW9uLnNoCkBAIC0zLDIxICszLDkgQEAKICMgQ29weXJpZ2h0IChjKSAyMDEyIEZlbGlwZSBDb250cmVyYXMKICMKIAotaWYgdGVzdCAtbiAiJEJBU0giICYmIHRlc3QgLXogIiRQT1NJWExZX0NPUlJFQ1QiOyB0aGVuCi0JIyB3ZSBhcmUgaW4gZnVsbC1vbiBiYXNoIG1vZGUKLQl0cnVlCi1lbGlmIHR5cGUgYmFzaCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLQkjIGV4ZWN1dGUgaW4gZnVsbC1vbiBiYXNoIG1vZGUKLQl1bnNldCBQT1NJWExZX0NPUlJFQ1QKLQlleGVjIGJhc2ggIiQwIiAiJEAiCi1lbHNlCi0JZWNobyAnMS4uMCAjU0tJUCBza2lwcGluZyBiYXNoIGNvbXBsZXRpb24gdGVzdHM7IGJhc2ggbm90IGF2YWlsYWJsZScKLQlleGl0IDAKLWZpCi0KIHRlc3RfZGVzY3JpcHRpb249J3Rlc3QgYmFzaCBjb21wbGV0aW9uJwogCi0uIC4vdGVzdC1saWIuc2gKKy4gLi9saWItYmFzaC5zaAogCiBjb21wbGV0ZSAoKQogewpAQCAtMjUsNiArMTMsMjUgQEAKIAlyZXR1cm4gMAogfQogCisjIEJlIGNhcmVmdWwgd2hlbiB1cGRhdGluZyB0aGlzIGxpc3Q6CisjCisjICgxKSBUaGUgYnVpbGQgdHJlZSBtYXkgaGF2ZSBidWlsZCBhcnRpZmFjdCBmcm9tIGRpZmZlcmVudCBicmFuY2gsIG9yCisjICAgICB0aGUgdXNlcidzICRQQVRIIG1heSBoYXZlIGEgcmFuZG9tIGV4ZWN1dGFibGUgdGhhdCBtYXkgYmVnaW4KKyMgICAgIHdpdGggImdpdC1jaGVjayIgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIHN1YmNvbW1hbmRzIHRoaXMgYnVpbGQKKyMgICAgIHdpbGwgc2hpcCwgZS5nLiAgImNoZWNrLWlnbm9yZSIuICBUaGUgdGVzdHMgZm9yIGNvbXBsZXRpb24gZm9yCisjICAgICBzdWJjb21tYW5kIG5hbWVzIHRlc3RzIGhvdyAiY2hlY2siIGlzIGV4cGFuZGVkOyB3ZSBsaW1pdCB0aGUKKyMgICAgIHBvc3NpYmxlIGNhbmRpZGF0ZXMgdG8gImNoZWNrb3V0IiBhbmQgImNoZWNrLWF0dHIiIHRvIG1ha2Ugc3VyZQorIyAgICAgImNoZWNrLWF0dHIiLCB3aGljaCBpcyBrbm93biBieSB0aGUgZmlsdGVyIGZ1bmN0aW9uIGFzIGEKKyMgICAgIHN1YmNvbW1hbmQgdG8gYmUgdGhyb3duIG91dCwgd2hpbGUgZXhjbHVkaW5nIG90aGVyIHJhbmRvbSBmaWxlcworIyAgICAgdGhhdCBoYXBwZW4gdG8gYmVnaW4gd2l0aCAiY2hlY2siIHRvIGF2b2lkIGxldHRpbmcgdGhlbSBnZXQgaW4KKyMgICAgIHRoZSB3YXkuCisjCisjICgyKSBBIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGNvbW1vbiBzdWJjb21tYW5kcyBhcmUgaW5jbHVkZWQgaW4gdGhlCisjICAgICBjb21wbGV0aW9uIGZvciAiZ2l0IDxUQUI+IiwgYW5kIGEgcGx1bWJpbmcgaXMgZXhjbHVkZWQuICAiYWRkIiwKKyMgICAgICJmaWx0ZXItYnJhbmNoIiBhbmQgImxzLWZpbGVzIiBhcmUgbGlzdGVkIGZvciB0aGlzLgorCitHSVRfVEVTVElOR19DT01NQU5EX0NPTVBMRVRJT049J2FkZCBjaGVja291dCBjaGVjay1hdHRyIGZpbHRlci1icmFuY2ggbHMtZmlsZXMnCisKIC4gIiRHSVRfQlVJTERfRElSL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi5iYXNoIgogCiAjIFdlIGRvbid0IG5lZWQgdGhpcyBmdW5jdGlvbiB0byBhY3R1YWxseSBqb2luIHdvcmRzIG9yIGRvIGFueXRoaW5nIHNwZWNpYWwuCkBAIC02MiwxMDQgKzY5LDE0NyBAQAogCWxvY2FsIC1hIENPTVBSRVBMWSBfd29yZHMKIAlsb2NhbCBfY3dvcmQKIAlfd29yZHM9KCAkMSApCisJdGVzdCAiJHsxOiAtMX0iID09ICcgJyAmJiBfd29yZHMrPSgnJykKIAkoKCBfY3dvcmQgPSAkeyNfd29yZHNbQF19IC0gMSApKQogCV9fZ2l0X3dyYXBfX2dpdF9tYWluICYmIHByaW50X2NvbXAKIH0KIAorIyBUZXN0IGhpZ2gtbGV2ZWwgY29tcGxldGlvbgorIyBBcmd1bWVudHMgYXJlOgorIyAxOiB0eXBlZCB0ZXh0IHNvIGZhciAoY3VyKQorIyAyOiBleHBlY3RlZCBjb21wbGV0aW9uCiB0ZXN0X2NvbXBsZXRpb24gKCkKIHsKLQl0ZXN0ICQjIC1ndCAxICYmIGVjaG8gIiQyIiA+IGV4cGVjdGVkCi0JcnVuX2NvbXBsZXRpb24gIiRAIiAmJgorCWlmIHRlc3QgJCMgLWd0IDEKKwl0aGVuCisJCXByaW50ZiAnJXNcbicgIiQyIiA+ZXhwZWN0ZWQKKwllbHNlCisJCXNlZCAtZSAncy9aJC8vJyA+ZXhwZWN0ZWQKKwlmaSAmJgorCXJ1bl9jb21wbGV0aW9uICIkMSIgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCBvdXQKIH0KIAotbmV3bGluZT0kJ1xuJworIyBUZXN0IF9fZ2l0Y29tcC4KKyMgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSB0eXBlZCB0ZXh0IHNvIGZhciAoY3VyKTsgdGhlIHJlc3QgYXJlCisjIHBhc3NlZCB0byBfX2dpdGNvbXAuICBFeHBlY3RlZCBvdXRwdXQgY29tZXMgaXMgcmVhZCBmcm9tIHRoZQorIyBzdGFuZGFyZCBpbnB1dCwgbGlrZSB0ZXN0X2NvbXBsZXRpb24oKS4KK3Rlc3RfZ2l0Y29tcCAoKQoreworCWxvY2FsIC1hIENPTVBSRVBMWSAmJgorCXNlZCAtZSAncy9aJC8vJyA+ZXhwZWN0ZWQgJiYKKwljdXI9IiQxIiAmJgorCXNoaWZ0ICYmCisJX19naXRjb21wICIkQCIgJiYKKwlwcmludF9jb21wICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgb3V0Cit9CisKKyMgVGVzdCBfX2dpdGNvbXBfbmwKKyMgQXJndW1lbnRzIGFyZToKKyMgMTogY3VycmVudCB3b3JkIChjdXIpCisjIC06IHRoZSByZXN0IGFyZSBwYXNzZWQgdG8gX19naXRjb21wX25sCit0ZXN0X2dpdGNvbXBfbmwgKCkKK3sKKwlsb2NhbCAtYSBDT01QUkVQTFkgJiYKKwlzZWQgLWUgJ3MvWiQvLycgPmV4cGVjdGVkICYmCisJY3VyPSIkMSIgJiYKKwlzaGlmdCAmJgorCV9fZ2l0Y29tcF9ubCAiJEAiICYmCisJcHJpbnRfY29tcCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIG91dAorfQorCitpbnZhbGlkX3ZhcmlhYmxlX25hbWU9JyR7Zm9vLmJhcn0nCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ19fZ2l0Y29tcCAtIHRyYWlsaW5nIHNwYWNlIC0gb3B0aW9ucycgJwotCXNlZCAtZSAicy9aJC8vIiA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgorCXRlc3RfZ2l0Y29tcCAiLS1yZSIgIi0tZHJ5LXJ1biAtLXJldXNlLW1lc3NhZ2U9IC0tcmVlZGl0LW1lc3NhZ2U9CisJCS0tcmVzZXQtYXV0aG9yIiA8PC1FT0YKIAktLXJldXNlLW1lc3NhZ2U9WgogCS0tcmVlZGl0LW1lc3NhZ2U9WgogCS0tcmVzZXQtYXV0aG9yIFoKIAlFT0YKLQkoCi0JCWxvY2FsIC1hIENPTVBSRVBMWSAmJgotCQljdXI9Ii0tcmUiICYmCi0JCV9fZ2l0Y29tcCAiLS1kcnktcnVuIC0tcmV1c2UtbWVzc2FnZT0gLS1yZWVkaXQtbWVzc2FnZT0KLQkJCQktLXJlc2V0LWF1dGhvciIgJiYKLQkJSUZTPSIkbmV3bGluZSIgJiYKLQkJZWNobyAiJHtDT01QUkVQTFlbKl19IiA+IG91dAotCSkgJiYKLQl0ZXN0X2NtcCBleHBlY3RlZCBvdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnX19naXRjb21wIC0gdHJhaWxpbmcgc3BhY2UgLSBjb25maWcga2V5cycgJwotCXNlZCAtZSAicy9aJC8vIiA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgorCXRlc3RfZ2l0Y29tcCAiYnIiICJicmFuY2guIGJyYW5jaC5hdXRvc2V0dXBtZXJnZQorCQlicmFuY2guYXV0b3NldHVwcmViYXNlIGJyb3dzZXIuIiA8PC1cRU9GCiAJYnJhbmNoLloKIAlicmFuY2guYXV0b3NldHVwbWVyZ2UgWgogCWJyYW5jaC5hdXRvc2V0dXByZWJhc2UgWgogCWJyb3dzZXIuWgogCUVPRgotCSgKLQkJbG9jYWwgLWEgQ09NUFJFUExZICYmCi0JCWN1cj0iYnIiICYmCi0JCV9fZ2l0Y29tcCAiYnJhbmNoLiBicmFuY2guYXV0b3NldHVwbWVyZ2UKLQkJCQlicmFuY2guYXV0b3NldHVwcmViYXNlIGJyb3dzZXIuIiAmJgotCQlJRlM9IiRuZXdsaW5lIiAmJgotCQllY2hvICIke0NPTVBSRVBMWVsqXX0iID4gb3V0Ci0JKSAmJgotCXRlc3RfY21wIGV4cGVjdGVkIG91dAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdfX2dpdGNvbXAgLSBvcHRpb24gcGFyYW1ldGVyJyAnCi0Jc2VkIC1lICJzL1okLy8iID5leHBlY3RlZCA8PC1cRU9GICYmCisJdGVzdF9naXRjb21wICItLXN0cmF0ZWd5PXJlIiAib2N0b3B1cyBvdXJzIHJlY3Vyc2l2ZSByZXNvbHZlIHN1YnRyZWUiIFwKKwkJIiIgInJlIiA8PC1cRU9GCiAJcmVjdXJzaXZlIFoKIAlyZXNvbHZlIFoKIAlFT0YKLQkoCi0JCWxvY2FsIC1hIENPTVBSRVBMWSAmJgotCQljdXI9Ii0tc3RyYXRlZ3k9cmUiICYmCi0JCV9fZ2l0Y29tcCAib2N0b3B1cyBvdXJzIHJlY3Vyc2l2ZSByZXNvbHZlIHN1YnRyZWUKLQkJCSIgIiIgInJlIiAmJgotCQlJRlM9IiRuZXdsaW5lIiAmJgotCQllY2hvICIke0NPTVBSRVBMWVsqXX0iID4gb3V0Ci0JKSAmJgotCXRlc3RfY21wIGV4cGVjdGVkIG91dAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdfX2dpdGNvbXAgLSBwcmVmaXgnICcKLQlzZWQgLWUgInMvWiQvLyIgPmV4cGVjdGVkIDw8LVxFT0YgJiYKKwl0ZXN0X2dpdGNvbXAgImJyYW5jaC5tZSIgInJlbW90ZSBtZXJnZSBtZXJnZW9wdGlvbnMgcmViYXNlIiBcCisJCSJicmFuY2gubWFpbnQuIiAibWUiIDw8LVxFT0YKIAlicmFuY2gubWFpbnQubWVyZ2UgWgogCWJyYW5jaC5tYWludC5tZXJnZW9wdGlvbnMgWgogCUVPRgotCSgKLQkJbG9jYWwgLWEgQ09NUFJFUExZICYmCi0JCWN1cj0iYnJhbmNoLm1lIiAmJgotCQlfX2dpdGNvbXAgInJlbW90ZSBtZXJnZSBtZXJnZW9wdGlvbnMgcmViYXNlCi0JCQkiICJicmFuY2gubWFpbnQuIiAibWUiICYmCi0JCUlGUz0iJG5ld2xpbmUiICYmCi0JCWVjaG8gIiR7Q09NUFJFUExZWypdfSIgPiBvdXQKLQkpICYmCi0JdGVzdF9jbXAgZXhwZWN0ZWQgb3V0CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ19fZ2l0Y29tcCAtIHN1ZmZpeCcgJwotCXNlZCAtZSAicy9aJC8vIiA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgorCXRlc3RfZ2l0Y29tcCAiYnJhbmNoLm1lIiAibWFzdGVyIG1haW50IG5leHQgcHUiICJicmFuY2guIiBcCisJCSJtYSIgIi4iIDw8LVxFT0YKIAlicmFuY2gubWFzdGVyLloKIAlicmFuY2gubWFpbnQuWgogCUVPRgotCSgKLQkJbG9jYWwgLWEgQ09NUFJFUExZICYmCi0JCWN1cj0iYnJhbmNoLm1lIiAmJgotCQlfX2dpdGNvbXAgIm1hc3RlciBtYWludCBuZXh0IHB1Ci0JCQkiICJicmFuY2guIiAibWEiICIuIiAmJgotCQlJRlM9IiRuZXdsaW5lIiAmJgotCQllY2hvICIke0NPTVBSRVBMWVsqXX0iID4gb3V0Ci0JKSAmJgotCXRlc3RfY21wIGV4cGVjdGVkIG91dAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdfX2dpdGNvbXAgLSBkb2VzbnQgZmFpbCBiZWNhdXNlIG9mIGludmFsaWQgdmFyaWFibGUgbmFtZScgJworCV9fZ2l0Y29tcCAiJGludmFsaWRfdmFyaWFibGVfbmFtZSIKKycKKworcmVhZCAtciAtZCAiIiByZWZzIDw8LVxFT0YKK21haW50CittYXN0ZXIKK25leHQKK3B1CitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnX19naXRjb21wX25sIC0gdHJhaWxpbmcgc3BhY2UnICcKKwl0ZXN0X2dpdGNvbXBfbmwgIm0iICIkcmVmcyIgPDwtRU9GCisJbWFpbnQgWgorCW1hc3RlciBaCisJRU9GCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ19fZ2l0Y29tcF9ubCAtIHByZWZpeCcgJworCXRlc3RfZ2l0Y29tcF9ubCAiLS1maXh1cD1tIiAiJHJlZnMiICItLWZpeHVwPSIgIm0iIDw8LUVPRgorCS0tZml4dXA9bWFpbnQgWgorCS0tZml4dXA9bWFzdGVyIFoKKwlFT0YKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnX19naXRjb21wX25sIC0gc3VmZml4JyAnCisJdGVzdF9naXRjb21wX25sICJicmFuY2gubWEiICIkcmVmcyIgImJyYW5jaC4iICJtYSIgIi4iIDw8LVxFT0YKKwlicmFuY2gubWFpbnQuWgorCWJyYW5jaC5tYXN0ZXIuWgorCUVPRgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdfX2dpdGNvbXBfbmwgLSBubyBzdWZmaXgnICcKKwl0ZXN0X2dpdGNvbXBfbmwgIm1hIiAiJHJlZnMiICIiICJtYSIgIiIgPDwtXEVPRgorCW1haW50WgorCW1hc3RlcloKKwlFT0YKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnX19naXRjb21wX25sIC0gZG9lc250IGZhaWwgYmVjYXVzZSBvZiBpbnZhbGlkIHZhcmlhYmxlIG5hbWUnICcKKwlfX2dpdGNvbXBfbmwgIiRpbnZhbGlkX3ZhcmlhYmxlX25hbWUiCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Jhc2ljJyAnCi0JcnVuX2NvbXBsZXRpb24gImdpdCBcIlwiIiAmJgorCXJ1bl9jb21wbGV0aW9uICJnaXQgIiAmJgogCSMgYnVpbHQtaW4KIAlncmVwIC1xICJeYWRkIFwkIiBvdXQgJiYKIAkjIHNjcmlwdApAQCAtMTcyLDcgKzIyMiw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RvdWJsZSBkYXNoICJnaXQiIGl0c2VsZicgJwotCXNlZCAtZSAicy9aJC8vIiA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgorCXRlc3RfY29tcGxldGlvbiAiZ2l0IC0tIiA8PC1cRU9GCiAJLS1wYWdpbmF0ZSBaCiAJLS1uby1wYWdlciBaCiAJLS1naXQtZGlyPQpAQCAtMTg3LDExICsyMzcsMTAgQEAKIAktLW5vLXJlcGxhY2Utb2JqZWN0cyBaCiAJLS1oZWxwIFoKIAlFT0YKLQl0ZXN0X2NvbXBsZXRpb24gImdpdCAtLSIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZG91YmxlIGRhc2ggImdpdCBjaGVja291dCInICcKLQlzZWQgLWUgInMvWiQvLyIgPmV4cGVjdGVkIDw8LVxFT0YgJiYKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBjaGVja291dCAtLSIgPDwtXEVPRgogCS0tcXVpZXQgWgogCS0tb3VycyBaCiAJLS10aGVpcnMgWgpAQCAtMjAyLDE3ICsyNTEsMTUgQEAKIAktLW9ycGhhbiBaCiAJLS1wYXRjaCBaCiAJRU9GCi0JdGVzdF9jb21wbGV0aW9uICJnaXQgY2hlY2tvdXQgLS0iCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dlbmVyYWwgb3B0aW9ucycgJwogCXRlc3RfY29tcGxldGlvbiAiZ2l0IC0tdmVyIiAiLS12ZXJzaW9uICIgJiYKIAl0ZXN0X2NvbXBsZXRpb24gImdpdCAtLWhlbCIgIi0taGVscCAiICYmCi0Jc2VkIC1lICJzL1okLy8iID5leHBlY3RlZCA8PC1cRU9GICYmCisJdGVzdF9jb21wbGV0aW9uICJnaXQgLS1leGUiIDw8LVxFT0YgJiYKIAktLWV4ZWMtcGF0aCBaCiAJLS1leGVjLXBhdGg9CiAJRU9GCi0JdGVzdF9jb21wbGV0aW9uICJnaXQgLS1leGUiICYmCiAJdGVzdF9jb21wbGV0aW9uICJnaXQgLS1odG0iICItLWh0bWwtcGF0aCAiICYmCiAJdGVzdF9jb21wbGV0aW9uICJnaXQgLS1wYWciICItLXBhZ2luYXRlICIgJiYKIAl0ZXN0X2NvbXBsZXRpb24gImdpdCAtLW5vLXAiICItLW5vLXBhZ2VyICIgJiYKQEAgLTIyOSw3ICsyNzYsNiBAQAogCXRlc3RfY29tcGxldGlvbiAiZ2l0IC0tcGFnaW5hdGUgY2hlY2siICJjaGVja291dCAiICYmCiAJdGVzdF9jb21wbGV0aW9uICJnaXQgLS1naXQtZGlyPWZvbyBjaGVjayIgImNoZWNrb3V0ICIgJiYKIAl0ZXN0X2NvbXBsZXRpb24gImdpdCAtLWJhcmUgY2hlY2siICJjaGVja291dCAiICYmCi0JdGVzdF9jb21wbGV0aW9uICJnaXQgLS1oZWxwIGRlcyIgImRlc2NyaWJlICIgJiYKIAl0ZXN0X2NvbXBsZXRpb24gImdpdCAtLWV4ZWMtcGF0aD1mb28gY2hlY2siICJjaGVja291dCAiICYmCiAJdGVzdF9jb21wbGV0aW9uICJnaXQgLS1odG1sLXBhdGggY2hlY2siICJjaGVja291dCAiICYmCiAJdGVzdF9jb21wbGV0aW9uICJnaXQgLS1uby1wYWdlciBjaGVjayIgImNoZWNrb3V0ICIgJiYKQEAgLTI0MCw0ICsyODYsNjUgQEAKIAl0ZXN0X2NvbXBsZXRpb24gImdpdCAtLW5vLXJlcGxhY2Utb2JqZWN0cyBjaGVjayIgImNoZWNrb3V0ICIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IC0taGVscCBjb21wbGV0aW9uJyAnCisJdGVzdF9jb21wbGV0aW9uICJnaXQgLS1oZWxwIGFkIiAiYWRkICIgJiYKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCAtLWhlbHAgY29yZSIgImNvcmUtdHV0b3JpYWwgIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBmb3IgcmVmIGNvbXBsZXRpb24nICcKKwllY2hvIGNvbnRlbnQgPmZpbGUxICYmCisJZWNobyBtb3JlID5maWxlMiAmJgorCWdpdCBhZGQgLiAmJgorCWdpdCBjb21taXQgLW0gb25lICYmCisJZ2l0IGJyYW5jaCBteWJyYW5jaCAmJgorCWdpdCB0YWcgbXl0YWcKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgY29tcGxldGVzIHJlZiBuYW1lcycgJworCXRlc3RfY29tcGxldGlvbiAiZ2l0IGNoZWNrb3V0IG0iIDw8LVxFT0YKKwltYXN0ZXIgWgorCW15YnJhbmNoIFoKKwlteXRhZyBaCisJRU9GCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3cgY29tcGxldGVzIGFsbCByZWZzJyAnCisJdGVzdF9jb21wbGV0aW9uICJnaXQgc2hvdyBtIiA8PC1cRU9GCisJbWFzdGVyIFoKKwlteWJyYW5jaCBaCisJbXl0YWcgWgorCUVPRgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICc8cmVmPjogY29tcGxldGVzIHBhdGhzJyAnCisJdGVzdF9jb21wbGV0aW9uICJnaXQgc2hvdyBteXRhZzpmIiA8PC1cRU9GCisJZmlsZTEgWgorCWZpbGUyIFoKKwlFT0YKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tcGxldGUgdHJlZSBmaWxlbmFtZSB3aXRoIHNwYWNlcycgJworCWVjaG8gY29udGVudCA+Im5hbWUgd2l0aCBzcGFjZXMiICYmCisJZ2l0IGFkZCAuICYmCisJZ2l0IGNvbW1pdCAtbSBzcGFjZXMgJiYKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBzaG93IEhFQUQ6bmFtIiA8PC1cRU9GCisJbmFtZSB3aXRoIHNwYWNlcyBaCisJRU9GCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbXBsZXRlIHRyZWUgZmlsZW5hbWUgd2l0aCBtZXRhY2hhcmFjdGVycycgJworCWVjaG8gY29udGVudCA+Im5hbWUgd2l0aCBcJHttZXRhfSIgJiYKKwlnaXQgYWRkIC4gJiYKKwlnaXQgY29tbWl0IC1tIG1ldGEgJiYKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBzaG93IEhFQUQ6bmFtIiA8PC1cRU9GCisJbmFtZSB3aXRoICR7bWV0YX0gWgorCW5hbWUgd2l0aCBzcGFjZXMgWgorCUVPRgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZW5kLWVtYWlsJyAnCisJdGVzdF9jb21wbGV0aW9uICJnaXQgc2VuZC1lbWFpbCAtLWNvdiIgIi0tY292ZXItbGV0dGVyICIgJiYKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBzZW5kLWVtYWlsIG1hIiAibWFzdGVyICIKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5OTAzLWJhc2gtcHJvbXB0LnNoIGIvdC90OTkwMy1iYXNoLXByb21wdC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xNTUyMWNjCi0tLSAvZGV2L251bGwKKysrIGIvdC90OTkwMy1iYXNoLXByb21wdC5zaApAQCAtMCwwICsxLDUzOCBAQAorIyEvYmluL3NoCisjCisjIENvcHlyaWdodCAoYykgMjAxMiBTWkVERVIgR8OhYm9yCisjCisKK3Rlc3RfZGVzY3JpcHRpb249J3Rlc3QgZ2l0LXNwZWNpZmljIGJhc2ggcHJvbXB0IGZ1bmN0aW9ucycKKworLiAuL2xpYi1iYXNoLnNoCisKKy4gIiRHSVRfQlVJTERfRElSL2NvbnRyaWIvY29tcGxldGlvbi9naXQtcHJvbXB0LnNoIgorCithY3R1YWw9IiRUUkFTSF9ESVJFQ1RPUlkvYWN0dWFsIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBmb3IgcHJvbXB0IHRlc3RzJyAnCisJbWtkaXIgLXAgc3ViZGlyL3N1YnN1YmRpciAmJgorCWdpdCBpbml0IG90aGVycmVwbyAmJgorCWVjaG8gMSA+IGZpbGUgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tIGluaXRpYWwgJiYKKwlnaXQgdGFnIC1hIC1tIG1zZzEgdDEgJiYKKwlnaXQgY2hlY2tvdXQgLWIgYjEgJiYKKwllY2hvIDIgPiBmaWxlICYmCisJZ2l0IGNvbW1pdCAtbSAic2Vjb25kIGIxIiBmaWxlICYmCisJZWNobyAzID4gZmlsZSAmJgorCWdpdCBjb21taXQgLW0gInRoaXJkIGIxIiBmaWxlICYmCisJZ2l0IHRhZyAtYSAtbSBtc2cyIHQyICYmCisJZ2l0IGNoZWNrb3V0IC1iIGIyIG1hc3RlciAmJgorCWVjaG8gMCA+IGZpbGUgJiYKKwlnaXQgY29tbWl0IC1tICJzZWNvbmQgYjIiIGZpbGUgJiYKKwllY2hvIDAwID4gZmlsZSAmJgorCWdpdCBjb21taXQgLW0gImFub3RoZXIgYjIiIGZpbGUgJiYKKwllY2hvIDAwMCA+IGZpbGUgJiYKKwlnaXQgY29tbWl0IC1tICJ5ZXQgYW5vdGhlciBiMiIgZmlsZSAmJgorCWdpdCBjaGVja291dCBtYXN0ZXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0ZGlyIC0gZnJvbSBjb21tYW5kIGxpbmUgKHRocm91Z2ggJF9fZ2l0X2RpciknICcKKwllY2hvICIkVFJBU0hfRElSRUNUT1JZL290aGVycmVwby8uZ2l0IiA+IGV4cGVjdGVkICYmCisJKAorCQlfX2dpdF9kaXI9IiRUUkFTSF9ESVJFQ1RPUlkvb3RoZXJyZXBvLy5naXQiICYmCisJCV9fZ2l0ZGlyID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXRkaXIgLSByZXBvIGFzIGFyZ3VtZW50JyAnCisJZWNobyAib3RoZXJyZXBvLy5naXQiID4gZXhwZWN0ZWQgJiYKKwlfX2dpdGRpciAib3RoZXJyZXBvIiA+ICIkYWN0dWFsIiAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXRkaXIgLSByZW1vdGUgYXMgYXJndW1lbnQnICcKKwllY2hvICJyZW1vdGUiID4gZXhwZWN0ZWQgJiYKKwlfX2dpdGRpciAicmVtb3RlIiA+ICIkYWN0dWFsIiAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXRkaXIgLSAuZ2l0IGRpcmVjdG9yeSBpbiBjd2QnICcKKwllY2hvICIuZ2l0IiA+IGV4cGVjdGVkICYmCisJX19naXRkaXIgPiAiJGFjdHVhbCIgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0ZGlyIC0gLmdpdCBkaXJlY3RvcnkgaW4gcGFyZW50JyAnCisJZWNobyAiJChwd2QgLVApLy5naXQiID4gZXhwZWN0ZWQgJiYKKwkoCisJCWNkIHN1YmRpci9zdWJzdWJkaXIgJiYKKwkJX19naXRkaXIgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdGRpciAtIGN3ZCBpcyBhIC5naXQgZGlyZWN0b3J5JyAnCisJZWNobyAiLiIgPiBleHBlY3RlZCAmJgorCSgKKwkJY2QgLmdpdCAmJgorCQlfX2dpdGRpciA+ICIkYWN0dWFsIgorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0ZGlyIC0gcGFyZW50IGlzIGEgLmdpdCBkaXJlY3RvcnknICcKKwllY2hvICIkKHB3ZCAtUCkvLmdpdCIgPiBleHBlY3RlZCAmJgorCSgKKwkJY2QgLmdpdC9yZWZzL2hlYWRzICYmCisJCV9fZ2l0ZGlyID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXRkaXIgLSAkR0lUX0RJUiBzZXQgd2hpbGUgLmdpdCBkaXJlY3RvcnkgaW4gY3dkJyAnCisJZWNobyAiJFRSQVNIX0RJUkVDVE9SWS9vdGhlcnJlcG8vLmdpdCIgPiBleHBlY3RlZCAmJgorCSgKKwkJR0lUX0RJUj0iJFRSQVNIX0RJUkVDVE9SWS9vdGhlcnJlcG8vLmdpdCIgJiYKKwkJZXhwb3J0IEdJVF9ESVIgJiYKKwkJX19naXRkaXIgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdGRpciAtICRHSVRfRElSIHNldCB3aGlsZSAuZ2l0IGRpcmVjdG9yeSBpbiBwYXJlbnQnICcKKwllY2hvICIkVFJBU0hfRElSRUNUT1JZL290aGVycmVwby8uZ2l0IiA+IGV4cGVjdGVkICYmCisJKAorCQlHSVRfRElSPSIkVFJBU0hfRElSRUNUT1JZL290aGVycmVwby8uZ2l0IiAmJgorCQlleHBvcnQgR0lUX0RJUiAmJgorCQljZCBzdWJkaXIgJiYKKwkJX19naXRkaXIgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdGRpciAtIG5vbi1leGlzdGluZyAkR0lUX0RJUicgJworCSgKKwkJR0lUX0RJUj0iJFRSQVNIX0RJUkVDVE9SWS9ub24tZXhpc3RpbmciICYmCisJCWV4cG9ydCBHSVRfRElSICYmCisJCXRlc3RfbXVzdF9mYWlsIF9fZ2l0ZGlyCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXRkaXIgLSBnaXRmaWxlIGluIGN3ZCcgJworCWVjaG8gIiQocHdkIC1QKS9vdGhlcnJlcG8vLmdpdCIgPiBleHBlY3RlZCAmJgorCWVjaG8gImdpdGRpcjogJFRSQVNIX0RJUkVDVE9SWS9vdGhlcnJlcG8vLmdpdCIgPiBzdWJkaXIvLmdpdCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLWYgc3ViZGlyLy5naXQiICYmCisJKAorCQljZCBzdWJkaXIgJiYKKwkJX19naXRkaXIgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdGRpciAtIGdpdGZpbGUgaW4gcGFyZW50JyAnCisJZWNobyAiJChwd2QgLVApL290aGVycmVwby8uZ2l0IiA+IGV4cGVjdGVkICYmCisJZWNobyAiZ2l0ZGlyOiAkVFJBU0hfRElSRUNUT1JZL290aGVycmVwby8uZ2l0IiA+IHN1YmRpci8uZ2l0ICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtZiBzdWJkaXIvLmdpdCIgJiYKKwkoCisJCWNkIHN1YmRpci9zdWJzdWJkaXIgJiYKKwkJX19naXRkaXIgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2dpdGRpciAtIHJlc3VsdGluZyBwYXRoIGF2b2lkcyBzeW1saW5rcycgJworCWVjaG8gIiQocHdkIC1QKS9vdGhlcnJlcG8vLmdpdCIgPiBleHBlY3RlZCAmJgorCW1rZGlyIG90aGVycmVwby9kaXIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBvdGhlcnJlcG8vZGlyIiAmJgorCWxuIC1zIG90aGVycmVwby9kaXIgbGluayAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLWYgbGluayIgJiYKKwkoCisJCWNkIGxpbmsgJiYKKwkJX19naXRkaXIgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdGRpciAtIG5vdCBhIGdpdCByZXBvc2l0b3J5JyAnCisJKAorCQljZCBzdWJkaXIvc3Vic3ViZGlyICYmCisJCUdJVF9DRUlMSU5HX0RJUkVDVE9SSUVTPSIkVFJBU0hfRElSRUNUT1JZIiAmJgorCQlleHBvcnQgR0lUX0NFSUxJTkdfRElSRUNUT1JJRVMgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgX19naXRkaXIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGJyYW5jaCBuYW1lJyAnCisJcHJpbnRmICIgKG1hc3RlcikiID4gZXhwZWN0ZWQgJiYKKwlfX2dpdF9wczEgPiAiJGFjdHVhbCIgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gZGV0YWNoZWQgaGVhZCcgJworCXByaW50ZiAiICgoJXMuLi4pKSIgJChnaXQgbG9nIC0xIC0tZm9ybWF0PSIlaCIgYjFeKSA+IGV4cGVjdGVkICYmCisJZ2l0IGNoZWNrb3V0IGIxXiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNoZWNrb3V0IG1hc3RlciIgJiYKKwlfX2dpdF9wczEgPiAiJGFjdHVhbCIgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gZGVzY3JpYmUgZGV0YWNoZWQgaGVhZCAtIGNvbnRhaW5zJyAnCisJcHJpbnRmICIgKCh0Mn4xKSkiID4gZXhwZWN0ZWQgJiYKKwlnaXQgY2hlY2tvdXQgYjFeICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY2hlY2tvdXQgbWFzdGVyIiAmJgorCSgKKwkJR0lUX1BTMV9ERVNDUklCRV9TVFlMRT1jb250YWlucyAmJgorCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGRlc2NyaWJlIGRldGFjaGVkIGhlYWQgLSBicmFuY2gnICcKKwlwcmludGYgIiAoKGIxfjEpKSIgPiBleHBlY3RlZCAmJgorCWdpdCBjaGVja291dCBiMV4gJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjaGVja291dCBtYXN0ZXIiICYmCisJKAorCQlHSVRfUFMxX0RFU0NSSUJFX1NUWUxFPWJyYW5jaCAmJgorCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGRlc2NyaWJlIGRldGFjaGVkIGhlYWQgLSBkZXNjcmliZScgJworCXByaW50ZiAiICgodDEtMS1nJXMpKSIgJChnaXQgbG9nIC0xIC0tZm9ybWF0PSIlaCIgYjFeKSA+IGV4cGVjdGVkICYmCisJZ2l0IGNoZWNrb3V0IGIxXiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNoZWNrb3V0IG1hc3RlciIgJiYKKwkoCisJCUdJVF9QUzFfREVTQ1JJQkVfU1RZTEU9ZGVzY3JpYmUgJiYKKwkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBkZXNjcmliZSBkZXRhY2hlZCBoZWFkIC0gZGVmYXVsdCcgJworCXByaW50ZiAiICgodDIpKSIgPiBleHBlY3RlZCAmJgorCWdpdCBjaGVja291dCAtLWRldGFjaCBiMSAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNoZWNrb3V0IG1hc3RlciIgJiYKKwlfX2dpdF9wczEgPiAiJGFjdHVhbCIgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gaW5zaWRlIC5naXQgZGlyZWN0b3J5JyAnCisJcHJpbnRmICIgKEdJVF9ESVIhKSIgPiBleHBlY3RlZCAmJgorCSgKKwkJY2QgLmdpdCAmJgorCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGRlZXAgaW5zaWRlIC5naXQgZGlyZWN0b3J5JyAnCisJcHJpbnRmICIgKEdJVF9ESVIhKSIgPiBleHBlY3RlZCAmJgorCSgKKwkJY2QgLmdpdC9yZWZzL2hlYWRzICYmCisJCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gaW5zaWRlIGJhcmUgcmVwb3NpdG9yeScgJworCXByaW50ZiAiIChCQVJFOm1hc3RlcikiID4gZXhwZWN0ZWQgJiYKKwlnaXQgaW5pdCAtLWJhcmUgYmFyZS5naXQgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBiYXJlLmdpdCIgJiYKKwkoCisJCWNkIGJhcmUuZ2l0ICYmCisJCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gaW50ZXJhY3RpdmUgcmViYXNlJyAnCisJcHJpbnRmICIgKGIxfFJFQkFTRS1pIDIvMykiID4gZXhwZWN0ZWQKKwllY2hvICIjISRTSEVMTF9QQVRIIiA+ZmFrZV9lZGl0b3Iuc2ggJiYKKwljYXQgPj5mYWtlX2VkaXRvci5zaCA8PFxFT0YgJiYKK2VjaG8gImV4ZWMgZWNobyIgPiAiJDEiCitlY2hvICJlZGl0ICQoZ2l0IGxvZyAtMSAtLWZvcm1hdD0iJWgiKSIgPj4gIiQxIgorZWNobyAiZXhlYyBlY2hvIiA+PiAiJDEiCitFT0YKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1mIGZha2VfZWRpdG9yLnNoIiAmJgorCWNobW9kIGEreCBmYWtlX2VkaXRvci5zaCAmJgorCXRlc3Rfc2V0X2VkaXRvciAiJFRSQVNIX0RJUkVDVE9SWS9mYWtlX2VkaXRvci5zaCIgJiYKKwlnaXQgY2hlY2tvdXQgYjEgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjaGVja291dCBtYXN0ZXIiICYmCisJZ2l0IHJlYmFzZSAtaSBIRUFEXiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IgorCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIiAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSByZWJhc2UgbWVyZ2UnICcKKwlwcmludGYgIiAoYjJ8UkVCQVNFLW0gMS8zKSIgPiBleHBlY3RlZCAmJgorCWdpdCBjaGVja291dCBiMiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNoZWNrb3V0IG1hc3RlciIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC0tbWVyZ2UgYjEgYjIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZWJhc2UgLS1hYm9ydCIgJiYKKwlfX2dpdF9wczEgPiAiJGFjdHVhbCIgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gcmViYXNlJyAnCisJcHJpbnRmICIgKGIyfFJFQkFTRSAxLzMpIiA+IGV4cGVjdGVkICYmCisJZ2l0IGNoZWNrb3V0IGIyICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY2hlY2tvdXQgbWFzdGVyIiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgYjEgYjIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZWJhc2UgLS1hYm9ydCIgJiYKKwlfX2dpdF9wczEgPiAiJGFjdHVhbCIgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gbWVyZ2UnICcKKwlwcmludGYgIiAoYjF8TUVSR0lORykiID4gZXhwZWN0ZWQgJiYKKwlnaXQgY2hlY2tvdXQgYjEgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjaGVja291dCBtYXN0ZXIiICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIGIyICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmVzZXQgLS1oYXJkIiAmJgorCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIiAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBjaGVycnktcGljaycgJworCXByaW50ZiAiIChtYXN0ZXJ8Q0hFUlJZLVBJQ0tJTkcpIiA+IGV4cGVjdGVkICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNoZXJyeS1waWNrIGIxICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmVzZXQgLS1oYXJkIiAmJgorCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIiAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBiaXNlY3QnICcKKwlwcmludGYgIiAobWFzdGVyfEJJU0VDVElORykiID4gZXhwZWN0ZWQgJiYKKwlnaXQgYmlzZWN0IHN0YXJ0ICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgYmlzZWN0IHJlc2V0IiAmJgorCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIiAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBkaXJ0eSBzdGF0dXMgaW5kaWNhdG9yIC0gY2xlYW4nICcKKwlwcmludGYgIiAobWFzdGVyKSIgPiBleHBlY3RlZCAmJgorCSgKKwkJR0lUX1BTMV9TSE9XRElSVFlTVEFURT15ICYmCisJCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gZGlydHkgc3RhdHVzIGluZGljYXRvciAtIGRpcnR5IHdvcmt0cmVlJyAnCisJcHJpbnRmICIgKG1hc3RlciAqKSIgPiBleHBlY3RlZCAmJgorCWVjaG8gImRpcnR5IiA+IGZpbGUgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZXNldCAtLWhhcmQiICYmCisJKAorCQlHSVRfUFMxX1NIT1dESVJUWVNUQVRFPXkgJiYKKwkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBkaXJ0eSBzdGF0dXMgaW5kaWNhdG9yIC0gZGlydHkgaW5kZXgnICcKKwlwcmludGYgIiAobWFzdGVyICspIiA+IGV4cGVjdGVkICYmCisJZWNobyAiZGlydHkiID4gZmlsZSAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlc2V0IC0taGFyZCIgJiYKKwlnaXQgYWRkIC11ICYmCisJKAorCQlHSVRfUFMxX1NIT1dESVJUWVNUQVRFPXkgJiYKKwkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBkaXJ0eSBzdGF0dXMgaW5kaWNhdG9yIC0gZGlydHkgaW5kZXggYW5kIHdvcmt0cmVlJyAnCisJcHJpbnRmICIgKG1hc3RlciAqKykiID4gZXhwZWN0ZWQgJiYKKwllY2hvICJkaXJ0eSBpbmRleCIgPiBmaWxlICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmVzZXQgLS1oYXJkIiAmJgorCWdpdCBhZGQgLXUgJiYKKwllY2hvICJkaXJ0eSB3b3JrdHJlZSIgPiBmaWxlICYmCisJKAorCQlHSVRfUFMxX1NIT1dESVJUWVNUQVRFPXkgJiYKKwkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBkaXJ0eSBzdGF0dXMgaW5kaWNhdG9yIC0gYmVmb3JlIHJvb3QgY29tbWl0JyAnCisJcHJpbnRmICIgKG1hc3RlciAjKSIgPiBleHBlY3RlZCAmJgorCSgKKwkJR0lUX1BTMV9TSE9XRElSVFlTVEFURT15ICYmCisJCWNkIG90aGVycmVwbyAmJgorCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGRpcnR5IHN0YXR1cyBpbmRpY2F0b3IgLSBzaGVsbCB2YXJpYWJsZSB1bnNldCB3aXRoIGNvbmZpZyBkaXNhYmxlZCcgJworCXByaW50ZiAiIChtYXN0ZXIpIiA+IGV4cGVjdGVkICYmCisJZWNobyAiZGlydHkiID4gZmlsZSAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlc2V0IC0taGFyZCIgJiYKKwl0ZXN0X2NvbmZpZyBiYXNoLnNob3dEaXJ0eVN0YXRlIGZhbHNlICYmCisJKAorCQlzYW5lX3Vuc2V0IEdJVF9QUzFfU0hPV0RJUlRZU1RBVEUgJiYKKwkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBkaXJ0eSBzdGF0dXMgaW5kaWNhdG9yIC0gc2hlbGwgdmFyaWFibGUgdW5zZXQgd2l0aCBjb25maWcgZW5hYmxlZCcgJworCXByaW50ZiAiIChtYXN0ZXIpIiA+IGV4cGVjdGVkICYmCisJZWNobyAiZGlydHkiID4gZmlsZSAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlc2V0IC0taGFyZCIgJiYKKwl0ZXN0X2NvbmZpZyBiYXNoLnNob3dEaXJ0eVN0YXRlIHRydWUgJiYKKwkoCisJCXNhbmVfdW5zZXQgR0lUX1BTMV9TSE9XRElSVFlTVEFURSAmJgorCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGRpcnR5IHN0YXR1cyBpbmRpY2F0b3IgLSBzaGVsbCB2YXJpYWJsZSBzZXQgd2l0aCBjb25maWcgZGlzYWJsZWQnICcKKwlwcmludGYgIiAobWFzdGVyKSIgPiBleHBlY3RlZCAmJgorCWVjaG8gImRpcnR5IiA+IGZpbGUgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZXNldCAtLWhhcmQiICYmCisJdGVzdF9jb25maWcgYmFzaC5zaG93RGlydHlTdGF0ZSBmYWxzZSAmJgorCSgKKwkJR0lUX1BTMV9TSE9XRElSVFlTVEFURT15ICYmCisJCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gZGlydHkgc3RhdHVzIGluZGljYXRvciAtIHNoZWxsIHZhcmlhYmxlIHNldCB3aXRoIGNvbmZpZyBlbmFibGVkJyAnCisJcHJpbnRmICIgKG1hc3RlciAqKSIgPiBleHBlY3RlZCAmJgorCWVjaG8gImRpcnR5IiA+IGZpbGUgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZXNldCAtLWhhcmQiICYmCisJdGVzdF9jb25maWcgYmFzaC5zaG93RGlydHlTdGF0ZSB0cnVlICYmCisJKAorCQlHSVRfUFMxX1NIT1dESVJUWVNUQVRFPXkgJiYKKwkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBkaXJ0eSBzdGF0dXMgaW5kaWNhdG9yIC0gbm90IHNob3duIGluc2lkZSAuZ2l0IGRpcmVjdG9yeScgJworCXByaW50ZiAiIChHSVRfRElSISkiID4gZXhwZWN0ZWQgJiYKKwllY2hvICJkaXJ0eSIgPiBmaWxlICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmVzZXQgLS1oYXJkIiAmJgorCSgKKwkJR0lUX1BTMV9TSE9XRElSVFlTVEFURT15ICYmCisJCWNkIC5naXQgJiYKKwkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBzdGFzaCBzdGF0dXMgaW5kaWNhdG9yIC0gbm8gc3Rhc2gnICcKKwlwcmludGYgIiAobWFzdGVyKSIgPiBleHBlY3RlZCAmJgorCSgKKwkJR0lUX1BTMV9TSE9XU1RBU0hTVEFURT15ICYmCisJCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gc3Rhc2ggc3RhdHVzIGluZGljYXRvciAtIHN0YXNoJyAnCisJcHJpbnRmICIgKG1hc3RlciAkKSIgPiBleHBlY3RlZCAmJgorCWVjaG8gMiA+ZmlsZSAmJgorCWdpdCBzdGFzaCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHN0YXNoIGRyb3AiICYmCisJKAorCQlHSVRfUFMxX1NIT1dTVEFTSFNUQVRFPXkgJiYKKwkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBzdGFzaCBzdGF0dXMgaW5kaWNhdG9yIC0gbm90IHNob3duIGluc2lkZSAuZ2l0IGRpcmVjdG9yeScgJworCXByaW50ZiAiIChHSVRfRElSISkiID4gZXhwZWN0ZWQgJiYKKwllY2hvIDIgPmZpbGUgJiYKKwlnaXQgc3Rhc2ggJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBzdGFzaCBkcm9wIiAmJgorCSgKKwkJR0lUX1BTMV9TSE9XU1RBU0hTVEFURT15ICYmCisJCWNkIC5naXQgJiYKKwkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSB1bnRyYWNrZWQgZmlsZXMgc3RhdHVzIGluZGljYXRvciAtIG5vIHVudHJhY2tlZCBmaWxlcycgJworCXByaW50ZiAiIChtYXN0ZXIpIiA+IGV4cGVjdGVkICYmCisJKAorCQlHSVRfUFMxX1NIT1dVTlRSQUNLRURGSUxFUz15ICYmCisJCWNkIG90aGVycmVwbyAmJgorCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIHVudHJhY2tlZCBmaWxlcyBzdGF0dXMgaW5kaWNhdG9yIC0gdW50cmFja2VkIGZpbGVzJyAnCisJcHJpbnRmICIgKG1hc3RlciAlJSkiID4gZXhwZWN0ZWQgJiYKKwkoCisJCUdJVF9QUzFfU0hPV1VOVFJBQ0tFREZJTEVTPXkgJiYKKwkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSB1bnRyYWNrZWQgZmlsZXMgc3RhdHVzIGluZGljYXRvciAtIHNoZWxsIHZhcmlhYmxlIHVuc2V0IHdpdGggY29uZmlnIGRpc2FibGVkJyAnCisJcHJpbnRmICIgKG1hc3RlcikiID4gZXhwZWN0ZWQgJiYKKwl0ZXN0X2NvbmZpZyBiYXNoLnNob3dVbnRyYWNrZWRGaWxlcyBmYWxzZSAmJgorCSgKKwkJc2FuZV91bnNldCBHSVRfUFMxX1NIT1dVTlRSQUNLRURGSUxFUyAmJgorCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIHVudHJhY2tlZCBmaWxlcyBzdGF0dXMgaW5kaWNhdG9yIC0gc2hlbGwgdmFyaWFibGUgdW5zZXQgd2l0aCBjb25maWcgZW5hYmxlZCcgJworCXByaW50ZiAiIChtYXN0ZXIpIiA+IGV4cGVjdGVkICYmCisJdGVzdF9jb25maWcgYmFzaC5zaG93VW50cmFja2VkRmlsZXMgdHJ1ZSAmJgorCSgKKwkJc2FuZV91bnNldCBHSVRfUFMxX1NIT1dVTlRSQUNLRURGSUxFUyAmJgorCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIHVudHJhY2tlZCBmaWxlcyBzdGF0dXMgaW5kaWNhdG9yIC0gc2hlbGwgdmFyaWFibGUgc2V0IHdpdGggY29uZmlnIGRpc2FibGVkJyAnCisJcHJpbnRmICIgKG1hc3RlcikiID4gZXhwZWN0ZWQgJiYKKwl0ZXN0X2NvbmZpZyBiYXNoLnNob3dVbnRyYWNrZWRGaWxlcyBmYWxzZSAmJgorCSgKKwkJR0lUX1BTMV9TSE9XVU5UUkFDS0VERklMRVM9eSAmJgorCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIHVudHJhY2tlZCBmaWxlcyBzdGF0dXMgaW5kaWNhdG9yIC0gc2hlbGwgdmFyaWFibGUgc2V0IHdpdGggY29uZmlnIGVuYWJsZWQnICcKKwlwcmludGYgIiAobWFzdGVyICUlKSIgPiBleHBlY3RlZCAmJgorCXRlc3RfY29uZmlnIGJhc2guc2hvd1VudHJhY2tlZEZpbGVzIHRydWUgJiYKKwkoCisJCUdJVF9QUzFfU0hPV1VOVFJBQ0tFREZJTEVTPXkgJiYKKwkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSB1bnRyYWNrZWQgZmlsZXMgc3RhdHVzIGluZGljYXRvciAtIG5vdCBzaG93biBpbnNpZGUgLmdpdCBkaXJlY3RvcnknICcKKwlwcmludGYgIiAoR0lUX0RJUiEpIiA+IGV4cGVjdGVkICYmCisJKAorCQlHSVRfUFMxX1NIT1dVTlRSQUNLRURGSUxFUz15ICYmCisJCWNkIC5naXQgJiYKKwkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBmb3JtYXQgc3RyaW5nIHN0YXJ0aW5nIHdpdGggZGFzaCcgJworCXByaW50ZiAtLSAiLW1hc3RlciIgPiBleHBlY3RlZCAmJgorCV9fZ2l0X3BzMSAiLSVzIiA+ICIkYWN0dWFsIiAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdGVzdC1saWItZnVuY3Rpb25zLnNoIGIvdC90ZXN0LWxpYi1mdW5jdGlvbnMuc2gKaW5kZXggN2IzYjRiZS4uNTI1MTAwOSAxMDA2NDQKLS0tIGEvdC90ZXN0LWxpYi1mdW5jdGlvbnMuc2gKKysrIGIvdC90ZXN0LWxpYi1mdW5jdGlvbnMuc2gKQEAgLTc2LDExICs3NiwxMSBAQAogfQogCiBudWxfdG9fcSAoKSB7Ci0JcGVybCAtcGUgJ3kvXDAwMC9RLycKKwkiJFBFUkxfUEFUSCIgLXBlICd5L1wwMDAvUS8nCiB9CiAKIHFfdG9fbnVsICgpIHsKLQlwZXJsIC1wZSAneS9RL1wwMDAvJworCSIkUEVSTF9QQVRIIiAtcGUgJ3kvUS9cMDAwLycKIH0KIAogcV90b19jciAoKSB7CkBAIC05MSw2ICs5MSwxMCBAQAogCXRyIFEgJ1wwMTEnCiB9CiAKK3F6X3RvX3RhYl9zcGFjZSAoKSB7CisJdHIgUVogJ1wwMTFcMDQwJworfQorCiBhcHBlbmRfY3IgKCkgewogCXNlZCAtZSAncy8kL1EvJyB8IHRyIFEgJ1wwMTUnCiB9CkBAIC0xMzUsMjAgKzEzOSw0MCBAQAogCWZpCiB9CiAKLSMgQ2FsbCB0ZXN0X2NvbW1pdCB3aXRoIHRoZSBhcmd1bWVudHMgIjxtZXNzYWdlPiBbPGZpbGU+IFs8Y29udGVudHM+XV0iCisjIENhbGwgdGVzdF9jb21taXQgd2l0aCB0aGUgYXJndW1lbnRzICI8bWVzc2FnZT4gWzxmaWxlPiBbPGNvbnRlbnRzPiBbPHRhZz5dXV0iCiAjCiAjIFRoaXMgd2lsbCBjb21taXQgYSBmaWxlIHdpdGggdGhlIGdpdmVuIGNvbnRlbnRzIGFuZCB0aGUgZ2l2ZW4gY29tbWl0Ci0jIG1lc3NhZ2UuICBJdCB3aWxsIGFsc28gYWRkIGEgdGFnIHdpdGggPG1lc3NhZ2U+IGFzIG5hbWUuCisjIG1lc3NhZ2UsIGFuZCB0YWcgdGhlIHJlc3VsdGluZyBjb21taXQgd2l0aCB0aGUgZ2l2ZW4gdGFnIG5hbWUuCiAjCi0jIEJvdGggPGZpbGU+IGFuZCA8Y29udGVudHM+IGRlZmF1bHQgdG8gPG1lc3NhZ2U+LgorIyA8ZmlsZT4sIDxjb250ZW50cz4sIGFuZCA8dGFnPiBhbGwgZGVmYXVsdCB0byA8bWVzc2FnZT4uCiAKIHRlc3RfY29tbWl0ICgpIHsKLQlmaWxlPSR7MjotIiQxLnQifQorCW5vdGljaz0gJiYKKwlzaWdub2ZmPSAmJgorCXdoaWxlIHRlc3QgJCMgIT0gMAorCWRvCisJCWNhc2UgIiQxIiBpbgorCQktLW5vdGljaykKKwkJCW5vdGljaz15ZXMKKwkJCTs7CisJCS0tc2lnbm9mZikKKwkJCXNpZ25vZmY9IiQxIgorCQkJOzsKKwkJKikKKwkJCWJyZWFrCisJCQk7OworCQllc2FjCisJCXNoaWZ0CisJZG9uZSAmJgorCWZpbGU9JHsyOi0iJDEudCJ9ICYmCiAJZWNobyAiJHszLSQxfSIgPiAiJGZpbGUiICYmCiAJZ2l0IGFkZCAiJGZpbGUiICYmCi0JdGVzdF90aWNrICYmCi0JZ2l0IGNvbW1pdCAtbSAiJDEiICYmCi0JZ2l0IHRhZyAiJDEiCisJaWYgdGVzdCAteiAiJG5vdGljayIKKwl0aGVuCisJCXRlc3RfdGljaworCWZpICYmCisJZ2l0IGNvbW1pdCAkc2lnbm9mZiAtbSAiJDEiICYmCisJZ2l0IHRhZyAiJHs0Oi0kMX0iCiB9CiAKICMgQ2FsbCB0ZXN0X21lcmdlIHdpdGggdGhlIGFyZ3VtZW50cyAiPG1lc3NhZ2U+IDxjb21taXQ+Iiwgd2hlcmUgPGNvbW1pdD4KQEAgLTIxMiw5ICsyMzYsMzUgQEAKICMgY2FwaXRhbCBsZXR0ZXJzIGJ5IGNvbnZlbnRpb24pLgogCiB0ZXN0X3NldF9wcmVyZXEgKCkgewotCXNhdGlzZmllZD0iJHNhdGlzZmllZCQxICIKKwlzYXRpc2ZpZWRfcHJlcmVxPSIkc2F0aXNmaWVkX3ByZXJlcSQxICIKIH0KLXNhdGlzZmllZD0iICIKK3NhdGlzZmllZF9wcmVyZXE9IiAiCitsYXppbHlfdGVzdGFibGVfcHJlcmVxPSBsYXppbHlfdGVzdGVkX3ByZXJlcT0KKworIyBVc2FnZTogdGVzdF9sYXp5X3ByZXJlcSBQUkVSRVEgJ3NjcmlwdCcKK3Rlc3RfbGF6eV9wcmVyZXEgKCkgeworCWxhemlseV90ZXN0YWJsZV9wcmVyZXE9IiRsYXppbHlfdGVzdGFibGVfcHJlcmVxJDEgIgorCWV2YWwgdGVzdF9wcmVyZXFfbGF6aWx5XyQxPVwkMgorfQorCit0ZXN0X3J1bl9sYXp5X3ByZXJlcV8gKCkgeworCXNjcmlwdD0nCitta2RpciAtcCAiJFRSQVNIX0RJUkVDVE9SWS9wcmVyZXEtdGVzdC1kaXIiICYmCisoCisJY2QgIiRUUkFTSF9ESVJFQ1RPUlkvcHJlcmVxLXRlc3QtZGlyIiAmJiciJDIiJworKScKKwlzYXkgPiYzICJjaGVja2luZyBwcmVyZXF1aXNpdGU6ICQxIgorCXNheSA+JjMgIiRzY3JpcHQiCisJdGVzdF9ldmFsXyAiJHNjcmlwdCIKKwlldmFsX3JldD0kPworCXJtIC1yZiAiJFRSQVNIX0RJUkVDVE9SWS9wcmVyZXEtdGVzdC1kaXIiCisJaWYgdGVzdCAiJGV2YWxfcmV0IiA9IDA7IHRoZW4KKwkJc2F5ID4mMyAicHJlcmVxdWlzaXRlICQxIG9rIgorCWVsc2UKKwkJc2F5ID4mMyAicHJlcmVxdWlzaXRlICQxIG5vdCBzYXRpc2ZpZWQiCisJZmkKKwlyZXR1cm4gJGV2YWxfcmV0Cit9CiAKIHRlc3RfaGF2ZV9wcmVyZXEgKCkgewogCSMgcHJlcmVxdWlzaXRlcyBjYW4gYmUgY29uY2F0ZW5hdGVkIHdpdGggJywnCkBAIC0yMjksMTMgKzI3OSw0OCBAQAogCiAJZm9yIHByZXJlcXVpc2l0ZQogCWRvCi0JCXRvdGFsX3ByZXJlcT0kKCgkdG90YWxfcHJlcmVxICsgMSkpCi0JCWNhc2UgJHNhdGlzZmllZCBpbgorCQljYXNlICIkcHJlcmVxdWlzaXRlIiBpbgorCQkhKikKKwkJCW5lZ2F0aXZlX3ByZXJlcT10CisJCQlwcmVyZXF1aXNpdGU9JHtwcmVyZXF1aXNpdGUjIX0KKwkJCTs7CisJCSopCisJCQluZWdhdGl2ZV9wcmVyZXE9CisJCWVzYWMKKworCQljYXNlICIgJGxhemlseV90ZXN0ZWRfcHJlcmVxICIgaW4KIAkJKiIgJHByZXJlcXVpc2l0ZSAiKikKKwkJCTs7CisJCSopCisJCQljYXNlICIgJGxhemlseV90ZXN0YWJsZV9wcmVyZXEgIiBpbgorCQkJKiIgJHByZXJlcXVpc2l0ZSAiKikKKwkJCQlldmFsICJzY3JpcHQ9XCR0ZXN0X3ByZXJlcV9sYXppbHlfJHByZXJlcXVpc2l0ZSIgJiYKKwkJCQlpZiB0ZXN0X3J1bl9sYXp5X3ByZXJlcV8gIiRwcmVyZXF1aXNpdGUiICIkc2NyaXB0IgorCQkJCXRoZW4KKwkJCQkJdGVzdF9zZXRfcHJlcmVxICRwcmVyZXF1aXNpdGUKKwkJCQlmaQorCQkJCWxhemlseV90ZXN0ZWRfcHJlcmVxPSIkbGF6aWx5X3Rlc3RlZF9wcmVyZXEkcHJlcmVxdWlzaXRlICIKKwkJCWVzYWMKKwkJCTs7CisJCWVzYWMKKworCQl0b3RhbF9wcmVyZXE9JCgoJHRvdGFsX3ByZXJlcSArIDEpKQorCQljYXNlICIkc2F0aXNmaWVkX3ByZXJlcSIgaW4KKwkJKiIgJHByZXJlcXVpc2l0ZSAiKikKKwkJCXNhdGlzZmllZF90aGlzX3ByZXJlcT10CisJCQk7OworCQkqKQorCQkJc2F0aXNmaWVkX3RoaXNfcHJlcmVxPQorCQllc2FjCisKKwkJY2FzZSAiJHNhdGlzZmllZF90aGlzX3ByZXJlcSwkbmVnYXRpdmVfcHJlcmVxIiBpbgorCQl0LHwsdCkKIAkJCW9rX3ByZXJlcT0kKCgkb2tfcHJlcmVxICsgMSkpCiAJCQk7OwogCQkqKQotCQkJIyBLZWVwIGEgbGlzdCBvZiBtaXNzaW5nIHByZXJlcXVpc2l0ZXMKKwkJCSMgS2VlcCBhIGxpc3Qgb2YgbWlzc2luZyBwcmVyZXF1aXNpdGVzOyByZXN0b3JlCisJCQkjIHRoZSBuZWdhdGl2ZSBtYXJrZXIgaWYgbmVjZXNzYXJ5LgorCQkJcHJlcmVxdWlzaXRlPSR7bmVnYXRpdmVfcHJlcmVxOishfSRwcmVyZXF1aXNpdGUKIAkJCWlmIHRlc3QgLXogIiRtaXNzaW5nX3ByZXJlcSIKIAkJCXRoZW4KIAkJCQltaXNzaW5nX3ByZXJlcT0kcHJlcmVxdWlzaXRlCkBAIC00NTUsNiArNTQwLDkgQEAKIAllbGlmIHRlc3QgJGV4aXRfY29kZSA9IDEyNzsgdGhlbgogCQllY2hvID4mMiAidGVzdF9tdXN0X2ZhaWw6IGNvbW1hbmQgbm90IGZvdW5kOiAkKiIKIAkJcmV0dXJuIDEKKwllbGlmIHRlc3QgJGV4aXRfY29kZSA9IDEyNjsgdGhlbgorCQllY2hvID4mMiAidGVzdF9tdXN0X2ZhaWw6IHZhbGdyaW5kIGVycm9yOiAkKiIKKwkJcmV0dXJuIDEKIAlmaQogCXJldHVybiAwCiB9CkBAIC01MjEsNiArNjA5LDM0IEBACiAJJEdJVF9URVNUX0NNUCAiJEAiCiB9CiAKKyMgVGVzdHMgdGhhdCBpdHMgdHdvIHBhcmFtZXRlcnMgcmVmZXIgdG8gdGhlIHNhbWUgcmV2aXNpb24KK3Rlc3RfY21wX3JldiAoKSB7CisJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJDEiID5leHBlY3QucmV2ICYmCisJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJDIiID5hY3R1YWwucmV2ICYmCisJdGVzdF9jbXAgZXhwZWN0LnJldiBhY3R1YWwucmV2Cit9CisKKyMgUHJpbnQgYSBzZXF1ZW5jZSBvZiBudW1iZXJzIG9yIGxldHRlcnMgaW4gaW5jcmVhc2luZyBvcmRlci4gIFRoaXMgaXMKKyMgc2ltaWxhciB0byBHTlUgc2VxKDEpLCBidXQgdGhlIGxhdHRlciBtaWdodCBub3QgYmUgYXZhaWxhYmxlCisjIGV2ZXJ5d2hlcmUgKGFuZCBkb2VzIG5vdCBkbyBsZXR0ZXJzKS4gIEl0IG1heSBiZSB1c2VkIGxpa2U6CisjCisjCWZvciBpIGluIGB0ZXN0X3NlcSAxMDBgOyBkbworIwkJZm9yIGogaW4gYHRlc3Rfc2VxIDEwIDIwYDsgZG8KKyMJCQlmb3IgayBpbiBgdGVzdF9zZXEgYSB6YDsgZG8KKyMJCQkJZWNobyAkaS0kai0kaworIwkJCWRvbmUKKyMJCWRvbmUKKyMJZG9uZQorCit0ZXN0X3NlcSAoKSB7CisJY2FzZSAkIyBpbgorCTEpCXNldCAxICIkQCIgOzsKKwkyKQk7OworCSopCWVycm9yICJidWcgaW4gdGhlIHRlc3Qgc2NyaXB0OiBub3QgMSBvciAyIHBhcmFtZXRlcnMgdG8gdGVzdF9zZXEiIDs7CisJZXNhYworCSIkUEVSTF9QQVRIIiAtbGUgJ3ByaW50IGZvciAkQVJHVlswXS4uJEFSR1ZbMV0nIC0tICIkQCIKK30KKwogIyBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHNjaGVkdWxlIHNvbWUgY29tbWFuZHMgdG8gYmUgcnVuCiAjIHVuY29uZGl0aW9uYWxseSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IHRvIHJlc3RvcmUgc2FuaXR5OgogIwpkaWZmIC0tZ2l0IGEvdC90ZXN0LWxpYi5zaCBiL3QvdGVzdC1saWIuc2gKaW5kZXggOWUyYjcxMS4uY2E2YmRlZiAxMDA2NDQKLS0tIGEvdC90ZXN0LWxpYi5zaAorKysgYi90L3Rlc3QtbGliLnNoCkBAIC0xNSw2ICsxNSwzOCBAQAogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8gLgogCisjIEtlZXAgdGhlIG9yaWdpbmFsIFRFUk0gZm9yIHNheV9jb2xvcgorT1JJR0lOQUxfVEVSTT0kVEVSTQorCisjIFRlc3QgdGhlIGJpbmFyaWVzIHdlIGhhdmUganVzdCBidWlsdC4gIFRoZSB0ZXN0cyBhcmUga2VwdCBpbgorIyB0LyBzdWJkaXJlY3RvcnkgYW5kIGFyZSBydW4gaW4gJ3RyYXNoIGRpcmVjdG9yeScgc3ViZGlyZWN0b3J5LgoraWYgdGVzdCAteiAiJFRFU1RfRElSRUNUT1JZIgordGhlbgorCSMgV2UgYWxsb3cgdGVzdHMgdG8gb3ZlcnJpZGUgdGhpcywgaW4gY2FzZSB0aGV5IHdhbnQgdG8gcnVuIHRlc3RzCisJIyBvdXRzaWRlIG9mIHQvLCBlLmcuIGZvciBydW5uaW5nIHRlc3RzIG9uIHRoZSB0ZXN0IGxpYnJhcnkKKwkjIGl0c2VsZi4KKwlURVNUX0RJUkVDVE9SWT0kKHB3ZCkKK2ZpCitpZiB0ZXN0IC16ICIkVEVTVF9PVVRQVVRfRElSRUNUT1JZIgordGhlbgorCSMgU2ltaWxhcmx5LCBvdmVycmlkZSB0aGlzIHRvIHN0b3JlIHRoZSB0ZXN0LXJlc3VsdHMgc3ViZGlyCisJIyBlbHNld2hlcmUKKwlURVNUX09VVFBVVF9ESVJFQ1RPUlk9JFRFU1RfRElSRUNUT1JZCitmaQorR0lUX0JVSUxEX0RJUj0iJFRFU1RfRElSRUNUT1JZIi8uLgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEl0IGFwcGVhcnMgdGhhdCBwZW9wbGUgdHJ5IHRvIHJ1biB0ZXN0cyB3aXRob3V0IGJ1aWxkaW5nLi4uCisiJEdJVF9CVUlMRF9ESVIvZ2l0IiA+L2Rldi9udWxsCitpZiB0ZXN0ICQ/ICE9IDEKK3RoZW4KKwllY2hvID4mMiAnZXJyb3I6IHlvdSBkbyBub3Qgc2VlbSB0byBoYXZlIGJ1aWx0IGdpdCB5ZXQuJworCWV4aXQgMQorZmkKKworLiAiJEdJVF9CVUlMRF9ESVIiL0dJVC1CVUlMRC1PUFRJT05TCitleHBvcnQgUEVSTF9QQVRIIFNIRUxMX1BBVEgKKwogIyBpZiAtLXRlZSB3YXMgcGFzc2VkLCB3cml0ZSB0aGUgb3V0cHV0IG5vdCBvbmx5IHRvIHRoZSB0ZXJtaW5hbCwgYnV0CiAjIGFkZGl0aW9uYWxseSB0byB0aGUgZmlsZSB0ZXN0LXJlc3VsdHMvJEJBU0VOQU1FLm91dCwgdG9vLgogY2FzZSAiJEdJVF9URVNUX1RFRV9TVEFSVEVELCAkKiAiIGluCkBAIC0yNCwxNiArNTYsMTMgQEAKIConIC0tdGVlICcqfConIC0tdmEnKikKIAlta2RpciAtcCB0ZXN0LXJlc3VsdHMKIAlCQVNFPXRlc3QtcmVzdWx0cy8kKGJhc2VuYW1lICIkMCIgLnNoKQotCShHSVRfVEVTVF9URUVfU1RBUlRFRD1kb25lICR7U0hFTEwtc2h9ICIkMCIgIiRAIiAyPiYxOworCShHSVRfVEVTVF9URUVfU1RBUlRFRD1kb25lICR7U0hFTExfUEFUSH0gIiQwIiAiJEAiIDI+JjE7CiAJIGVjaG8gJD8gPiAkQkFTRS5leGl0KSB8IHRlZSAkQkFTRS5vdXQKIAl0ZXN0ICIkKGNhdCAkQkFTRS5leGl0KSIgPSAwCiAJZXhpdAogCTs7CiBlc2FjCiAKLSMgS2VlcCB0aGUgb3JpZ2luYWwgVEVSTSBmb3Igc2F5X2NvbG9yCi1PUklHSU5BTF9URVJNPSRURVJNCi0KICMgRm9yIHJlcGVhdGFiaWxpdHksIHJlc2V0IHRoZSBlbnZpcm9ubWVudCB0byBrbm93biB2YWx1ZS4KIExBTkc9QwogTENfQUxMPUMKQEAgLTQ2LDcgKzc1LDcgQEAKICMgL3Vzci94cGc0L2Jpbi9zaCBhbmQgL2Jpbi9rc2ggdG8gYmFpbCBvdXQuICBTbyBrZWVwIHRoZSB1bnNldHMKICMgZGVyaXZpbmcgZnJvbSB0aGUgY29tbWFuZCBzdWJzdGl0dXRpb24gY2x1c3RlcmVkIHdpdGggdGhlIG90aGVyCiAjIG9uZXMuCi11bnNldCBWSVNVQUwgRU1BSUwgTEFOR1VBR0UgQ09MVU1OUyAkKHBlcmwgLWUgJwordW5zZXQgVklTVUFMIEVNQUlMIExBTkdVQUdFIENPTFVNTlMgJCgiJFBFUkxfUEFUSCIgLWUgJwogCW15IEBlbnYgPSBrZXlzICVFTlY7CiAJbXkgJG9rID0gam9pbigifCIsIHF3KAogCQlUUkFDRQpAQCAtNTYsMTEgKzg1LDEzIEBACiAJCS4qX1RFU1QKIAkJUFJPVkUKIAkJVkFMR1JJTkQKLQkJUEVSRl9BR0dSRUdBVElOR19MQVRFUgorCQlVTlpJUAorCQlQRVJGXwogCSkpOwogCW15IEB2YXJzID0gZ3JlcCgvXkdJVF8vICYmICEvXkdJVF8oJG9rKS9vLCBAZW52KTsKIAlwcmludCBqb2luKCJcbiIsIEB2YXJzKTsKICcpCit1bnNldCBYREdfQ09ORklHX0hPTUUKIEdJVF9BVVRIT1JfRU1BSUw9YXV0aG9yQGV4YW1wbGUuY29tCiBHSVRfQVVUSE9SX05BTUU9J0EgVSBUaG9yJwogR0lUX0NPTU1JVFRFUl9FTUFJTD1jb21taXR0ZXJAZXhhbXBsZS5jb20KQEAgLTcyLDE5ICsxMDMsNDEgQEAKIGV4cG9ydCBHSVRfQ09NTUlUVEVSX0VNQUlMIEdJVF9DT01NSVRURVJfTkFNRQogZXhwb3J0IEVESVRPUgogCisjIEFkZCBsaWJjIE1BTExPQyBhbmQgTUFMTE9DX1BFUlRVUkIgdGVzdAorIyBvbmx5IGlmIHdlIGFyZSBub3QgZXhlY3V0aW5nIHRoZSB0ZXN0IHdpdGggdmFsZ3JpbmQKK2lmIGV4cHIgIiAkR0lUX1RFU1RfT1BUUyAiIDogIi4qIC0tdmFsZ3JpbmQgIiA+L2Rldi9udWxsIHx8CisgICB0ZXN0IC1uICIkVEVTVF9OT19NQUxMT0NfQ0hFQ0siCit0aGVuCisJc2V0dXBfbWFsbG9jX2NoZWNrICgpIHsKKwkJOiBub3RoaW5nCisJfQorCXRlYXJkb3duX21hbGxvY19jaGVjayAoKSB7CisJCTogbm90aGluZworCX0KK2Vsc2UKKwlzZXR1cF9tYWxsb2NfY2hlY2sgKCkgeworCQlNQUxMT0NfQ0hFQ0tfPTMJTUFMTE9DX1BFUlRVUkJfPTE2NQorCQlleHBvcnQgTUFMTE9DX0NIRUNLXyBNQUxMT0NfUEVSVFVSQl8KKwl9CisJdGVhcmRvd25fbWFsbG9jX2NoZWNrICgpIHsKKwkJdW5zZXQgTUFMTE9DX0NIRUNLXyBNQUxMT0NfUEVSVFVSQl8KKwl9CitmaQorCiAjIFByb3RlY3Qgb3Vyc2VsdmVzIGZyb20gY29tbW9uIG1pc2NvbmZpZ3VyYXRpb24gdG8gZXhwb3J0CiAjIENEUEFUSCBpbnRvIHRoZSBlbnZpcm9ubWVudAogdW5zZXQgQ0RQQVRICiAKIHVuc2V0IEdSRVBfT1BUSU9OUwordW5zZXQgVU5aSVAKIAogY2FzZSAkKGVjaG8gJEdJVF9UUkFDRSB8dHIgIltBLVpdIiAiW2Etel0iKSBpbgotCTF8Mnx0cnVlKQotCQllY2hvICIqIHdhcm5pbmc6IFNvbWUgdGVzdHMgd2lsbCBub3Qgd29yayBpZiBHSVRfVFJBQ0UiIFwKLQkJCSJpcyBzZXQgYXMgdG8gdHJhY2Ugb24gU1RERVJSICEgKiIKLQkJZWNobyAiKiB3YXJuaW5nOiBQbGVhc2Ugc2V0IEdJVF9UUkFDRSB0byBzb21ldGhpbmciIFwKLQkJCSJvdGhlciB0aGFuIDEsIDIgb3IgdHJ1ZSAhICoiCi0JCTs7CisxfDJ8dHJ1ZSkKKwllY2hvICIqIHdhcm5pbmc6IFNvbWUgdGVzdHMgd2lsbCBub3Qgd29yayBpZiBHSVRfVFJBQ0UiIFwKKwkJImlzIHNldCBhcyB0byB0cmFjZSBvbiBTVERFUlIgISAqIgorCWVjaG8gIiogd2FybmluZzogUGxlYXNlIHNldCBHSVRfVFJBQ0UgdG8gc29tZXRoaW5nIiBcCisJCSJvdGhlciB0aGFuIDEsIDIgb3IgdHJ1ZSAhICoiCisJOzsKIGVzYWMKIAogIyBDb252ZW5pZW5jZQpAQCAtMTQwLDcgKzE5MywxMSBAQAogCS0tbm8tY29sb3IpCiAJCWNvbG9yPTsgc2hpZnQgOzsKIAktLXZhfC0tdmFsfC0tdmFsZ3wtLXZhbGdyfC0tdmFsZ3JpfC0tdmFsZ3JpbnwtLXZhbGdyaW5kKQotCQl2YWxncmluZD10OyB2ZXJib3NlPXQ7IHNoaWZ0IDs7CisJCXZhbGdyaW5kPW1lbWNoZWNrCisJCXNoaWZ0IDs7CisJLS12YWxncmluZD0qKQorCQl2YWxncmluZD0kKGV4cHIgInokMSIgOiAneltePV0qPVwoLipcKScpCisJCXNoaWZ0IDs7CiAJLS10ZWUpCiAJCXNoaWZ0IDs7ICMgd2FzIGhhbmRsZWQgYWxyZWFkeQogCS0tcm9vdD0qKQpAQCAtMTUxLDE3ICsyMDgsMjcgQEAKIAllc2FjCiBkb25lCiAKLWlmIHRlc3QgLW4gIiRjb2xvciI7IHRoZW4KK3Rlc3QgLW4gIiR2YWxncmluZCIgJiYgdmVyYm9zZT10CisKK2lmIHRlc3QgLW4gIiRjb2xvciIKK3RoZW4KIAlzYXlfY29sb3IgKCkgewogCQkoCiAJCVRFUk09JE9SSUdJTkFMX1RFUk0KIAkJZXhwb3J0IFRFUk0KIAkJY2FzZSAiJDEiIGluCi0JCQllcnJvcikgdHB1dCBib2xkOyB0cHV0IHNldGFmIDE7OyAjIGJvbGQgcmVkCi0JCQlza2lwKSAgdHB1dCBib2xkOyB0cHV0IHNldGFmIDI7OyAjIGJvbGQgZ3JlZW4KLQkJCXBhc3MpICB0cHV0IHNldGFmIDI7OyAgICAgICAgICAgICMgZ3JlZW4KLQkJCWluZm8pICB0cHV0IHNldGFmIDM7OyAgICAgICAgICAgICMgYnJvd24KLQkJCSopIHRlc3QgLW4gIiRxdWlldCIgJiYgcmV0dXJuOzsKKwkJZXJyb3IpCisJCQl0cHV0IGJvbGQ7IHRwdXQgc2V0YWYgMTs7ICMgYm9sZCByZWQKKwkJc2tpcCkKKwkJCXRwdXQgc2V0YWYgNDs7ICMgYmx1ZQorCQl3YXJuKQorCQkJdHB1dCBzZXRhZiAzOzsgIyBicm93bi95ZWxsb3cKKwkJcGFzcykKKwkJCXRwdXQgc2V0YWYgMjs7ICMgZ3JlZW4KKwkJaW5mbykKKwkJCXRwdXQgc2V0YWYgNjs7ICMgY3lhbgorCQkqKQorCQkJdGVzdCAtbiAiJHF1aWV0IiAmJiByZXR1cm47OwogCQllc2FjCiAJCXNoaWZ0CiAJCXByaW50ZiAiJXMiICIkKiIKQEAgLTE3Myw3ICsyNDAsNyBAQAogCXNheV9jb2xvcigpIHsKIAkJdGVzdCAteiAiJDEiICYmIHRlc3QgLW4gIiRxdWlldCIgJiYgcmV0dXJuCiAJCXNoaWZ0Ci0JCWVjaG8gIiQqIgorCQlwcmludGYgIiVzXG4iICIkKiIKIAl9CiBmaQogCkBAIC0yMjksNyArMjk2LDcgQEAKIAogIyBUaGUgdXNlci1mYWNpbmcgZnVuY3Rpb25zIGFyZSBsb2FkZWQgZnJvbSBhIHNlcGFyYXRlIGZpbGUgc28gdGhhdAogIyB0ZXN0X3BlcmYgc3Vic2hlbGxzIGNhbiBoYXZlIHRoZW0gdG9vCi0uICIke1RFU1RfRElSRUNUT1JZOi0ufSIvdGVzdC1saWItZnVuY3Rpb25zLnNoCisuICIkVEVTVF9ESVJFQ1RPUlkvdGVzdC1saWItZnVuY3Rpb25zLnNoIgogCiAjIFlvdSBhcmUgbm90IGV4cGVjdGVkIHRvIGNhbGwgdGVzdF9va18gYW5kIHRlc3RfZmFpbHVyZV8gZGlyZWN0bHksIHVzZQogIyB0aGUgdGV4dF9leHBlY3RfKiBmdW5jdGlvbnMgaW5zdGVhZC4KQEAgLTI0MSw3ICszMDgsNyBAQAogCiB0ZXN0X2ZhaWx1cmVfICgpIHsKIAl0ZXN0X2ZhaWx1cmU9JCgoJHRlc3RfZmFpbHVyZSArIDEpKQotCXNheV9jb2xvciBlcnJvciAibm90IG9rIC0gJHRlc3RfY291bnQgJDEiCisJc2F5X2NvbG9yIGVycm9yICJub3Qgb2sgJHRlc3RfY291bnQgLSAkMSIKIAlzaGlmdAogCWVjaG8gIiRAIiB8IHNlZCAtZSAncy9eLyMJLycKIAl0ZXN0ICIkaW1tZWRpYXRlIiA9ICIiIHx8IHsgR0lUX0VYSVRfT0s9dDsgZXhpdCAxOyB9CkBAIC0yNDksMTIgKzMxNiwxMiBAQAogCiB0ZXN0X2tub3duX2Jyb2tlbl9va18gKCkgewogCXRlc3RfZml4ZWQ9JCgoJHRlc3RfZml4ZWQrMSkpCi0Jc2F5X2NvbG9yICIiICJvayAkdGVzdF9jb3VudCAtICRAICMgVE9ETyBrbm93biBicmVha2FnZSIKKwlzYXlfY29sb3IgZXJyb3IgIm9rICR0ZXN0X2NvdW50IC0gJEAgIyBUT0RPIGtub3duIGJyZWFrYWdlIHZhbmlzaGVkIgogfQogCiB0ZXN0X2tub3duX2Jyb2tlbl9mYWlsdXJlXyAoKSB7CiAJdGVzdF9icm9rZW49JCgoJHRlc3RfYnJva2VuKzEpKQotCXNheV9jb2xvciBza2lwICJub3Qgb2sgJHRlc3RfY291bnQgLSAkQCAjIFRPRE8ga25vd24gYnJlYWthZ2UiCisJc2F5X2NvbG9yIHdhcm4gIm5vdCBvayAkdGVzdF9jb3VudCAtICRAICMgVE9ETyBrbm93biBicmVha2FnZSIKIH0KIAogdGVzdF9kZWJ1ZyAoKSB7CkBAIC0yNzUsOSArMzQyLDEyIEBACiAKIAlpZiB0ZXN0IC16ICIkaW1tZWRpYXRlIiB8fCB0ZXN0ICRldmFsX3JldCA9IDAgfHwgdGVzdCAtbiAiJGV4cGVjdGluZ19mYWlsdXJlIgogCXRoZW4KKwkJc2V0dXBfbWFsbG9jX2NoZWNrCiAJCXRlc3RfZXZhbF8gIiR0ZXN0X2NsZWFudXAiCisJCXRlYXJkb3duX21hbGxvY19jaGVjawogCWZpCi0JaWYgdGVzdCAiJHZlcmJvc2UiID0gInQiICYmIHRlc3QgLW4gIiRIQVJORVNTX0FDVElWRSI7IHRoZW4KKwlpZiB0ZXN0ICIkdmVyYm9zZSIgPSAidCIgJiYgdGVzdCAtbiAiJEhBUk5FU1NfQUNUSVZFIgorCXRoZW4KIAkJZWNobyAiIgogCWZpCiAJcmV0dXJuICIkZXZhbF9yZXQiCkBAIC0zMjUsMTAgKzM5NSwxMiBAQAogdGVzdF9kb25lICgpIHsKIAlHSVRfRVhJVF9PSz10CiAKLQlpZiB0ZXN0IC16ICIkSEFSTkVTU19BQ1RJVkUiOyB0aGVuCisJaWYgdGVzdCAteiAiJEhBUk5FU1NfQUNUSVZFIgorCXRoZW4KIAkJdGVzdF9yZXN1bHRzX2Rpcj0iJFRFU1RfT1VUUFVUX0RJUkVDVE9SWS90ZXN0LXJlc3VsdHMiCiAJCW1rZGlyIC1wICIkdGVzdF9yZXN1bHRzX2RpciIKLQkJdGVzdF9yZXN1bHRzX3BhdGg9IiR0ZXN0X3Jlc3VsdHNfZGlyLyR7MCUuc2h9LSQkLmNvdW50cyIKKwkJYmFzZT0kezAjIyovfQorCQl0ZXN0X3Jlc3VsdHNfcGF0aD0iJHRlc3RfcmVzdWx0c19kaXIvJHtiYXNlJS5zaH0tJCQuY291bnRzIgogCiAJCWNhdCA+PiIkdGVzdF9yZXN1bHRzX3BhdGgiIDw8LUVPRgogCQl0b3RhbCAkdGVzdF9jb3VudApAQCAtMzQyLDIyICs0MTQsMzUgQEAKIAogCWlmIHRlc3QgIiR0ZXN0X2ZpeGVkIiAhPSAwCiAJdGhlbgotCQlzYXlfY29sb3IgcGFzcyAiIyBmaXhlZCAkdGVzdF9maXhlZCBrbm93biBicmVha2FnZShzKSIKKwkJc2F5X2NvbG9yIGVycm9yICIjICR0ZXN0X2ZpeGVkIGtub3duIGJyZWFrYWdlKHMpIHZhbmlzaGVkOyBwbGVhc2UgdXBkYXRlIHRlc3QocykiCiAJZmkKIAlpZiB0ZXN0ICIkdGVzdF9icm9rZW4iICE9IDAKIAl0aGVuCi0JCXNheV9jb2xvciBlcnJvciAiIyBzdGlsbCBoYXZlICR0ZXN0X2Jyb2tlbiBrbm93biBicmVha2FnZShzKSIKLQkJbXNnPSJyZW1haW5pbmcgJCgoJHRlc3RfY291bnQtJHRlc3RfYnJva2VuKSkgdGVzdChzKSIKKwkJc2F5X2NvbG9yIHdhcm4gIiMgc3RpbGwgaGF2ZSAkdGVzdF9icm9rZW4ga25vd24gYnJlYWthZ2UocykiCisJZmkKKwlpZiB0ZXN0ICIkdGVzdF9icm9rZW4iICE9IDAgfHwgdGVzdCAiJHRlc3RfZml4ZWQiICE9IDAKKwl0aGVuCisJCXRlc3RfcmVtYWluaW5nPSQoKCAkdGVzdF9jb3VudCAtICR0ZXN0X2Jyb2tlbiAtICR0ZXN0X2ZpeGVkICkpCisJCW1zZz0icmVtYWluaW5nICR0ZXN0X3JlbWFpbmluZyB0ZXN0KHMpIgogCWVsc2UKKwkJdGVzdF9yZW1haW5pbmc9JHRlc3RfY291bnQKIAkJbXNnPSIkdGVzdF9jb3VudCB0ZXN0KHMpIgogCWZpCiAJY2FzZSAiJHRlc3RfZmFpbHVyZSIgaW4KIAkwKQogCQkjIE1heWJlIHByaW50IFNLSVAgbWVzc2FnZQorCQlpZiB0ZXN0IC1uICIkc2tpcF9hbGwiICYmIHRlc3QgJHRlc3RfY291bnQgLWd0IDAKKwkJdGhlbgorCQkJZXJyb3IgIkNhbid0IHVzZSBza2lwX2FsbCBhZnRlciBydW5uaW5nIHNvbWUgdGVzdHMiCisJCWZpCiAJCVsgLXogIiRza2lwX2FsbCIgXSB8fCBza2lwX2FsbD0iICMgU0tJUCAkc2tpcF9hbGwiCiAKLQkJaWYgdGVzdCAkdGVzdF9leHRlcm5hbF9oYXNfdGFwIC1lcSAwOyB0aGVuCi0JCQlzYXlfY29sb3IgcGFzcyAiIyBwYXNzZWQgYWxsICRtc2ciCisJCWlmIHRlc3QgJHRlc3RfZXh0ZXJuYWxfaGFzX3RhcCAtZXEgMAorCQl0aGVuCisJCQlpZiB0ZXN0ICR0ZXN0X3JlbWFpbmluZyAtZ3QgMAorCQkJdGhlbgorCQkJCXNheV9jb2xvciBwYXNzICIjIHBhc3NlZCBhbGwgJG1zZyIKKwkJCWZpCiAJCQlzYXkgIjEuLiR0ZXN0X2NvdW50JHNraXBfYWxsIgogCQlmaQogCkBAIC0zNzAsNyArNDU1LDggQEAKIAkJZXhpdCAwIDs7CiAKIAkqKQotCQlpZiB0ZXN0ICR0ZXN0X2V4dGVybmFsX2hhc190YXAgLWVxIDA7IHRoZW4KKwkJaWYgdGVzdCAkdGVzdF9leHRlcm5hbF9oYXNfdGFwIC1lcSAwCisJCXRoZW4KIAkJCXNheV9jb2xvciBlcnJvciAiIyBmYWlsZWQgJHRlc3RfZmFpbHVyZSBhbW9uZyAkbXNnIgogCQkJc2F5ICIxLi4kdGVzdF9jb3VudCIKIAkJZmkKQEAgLTM4MCwyMyArNDY2LDYgQEAKIAllc2FjCiB9CiAKLSMgVGVzdCB0aGUgYmluYXJpZXMgd2UgaGF2ZSBqdXN0IGJ1aWx0LiAgVGhlIHRlc3RzIGFyZSBrZXB0IGluCi0jIHQvIHN1YmRpcmVjdG9yeSBhbmQgYXJlIHJ1biBpbiAndHJhc2ggZGlyZWN0b3J5JyBzdWJkaXJlY3RvcnkuCi1pZiB0ZXN0IC16ICIkVEVTVF9ESVJFQ1RPUlkiCi10aGVuCi0JIyBXZSBhbGxvdyB0ZXN0cyB0byBvdmVycmlkZSB0aGlzLCBpbiBjYXNlIHRoZXkgd2FudCB0byBydW4gdGVzdHMKLQkjIG91dHNpZGUgb2YgdC8sIGUuZy4gZm9yIHJ1bm5pbmcgdGVzdHMgb24gdGhlIHRlc3QgbGlicmFyeQotCSMgaXRzZWxmLgotCVRFU1RfRElSRUNUT1JZPSQocHdkKQotZmkKLWlmIHRlc3QgLXogIiRURVNUX09VVFBVVF9ESVJFQ1RPUlkiCi10aGVuCi0JIyBTaW1pbGFybHksIG92ZXJyaWRlIHRoaXMgdG8gc3RvcmUgdGhlIHRlc3QtcmVzdWx0cyBzdWJkaXIKLQkjIGVsc2V3aGVyZQotCVRFU1RfT1VUUFVUX0RJUkVDVE9SWT0kVEVTVF9ESVJFQ1RPUlkKLWZpCi1HSVRfQlVJTERfRElSPSIkVEVTVF9ESVJFQ1RPUlkiLy4uCi0KIGlmIHRlc3QgLW4gIiR2YWxncmluZCIKIHRoZW4KIAltYWtlX3N5bWxpbmsgKCkgewpAQCAtNDY3LDIyICs1MzYsMjggQEAKIAlQQVRIPSRHSVRfVkFMR1JJTkQvYmluOiRQQVRICiAJR0lUX0VYRUNfUEFUSD0kR0lUX1ZBTEdSSU5EL2JpbgogCWV4cG9ydCBHSVRfVkFMR1JJTkQKLWVsaWYgdGVzdCAtbiAiJEdJVF9URVNUX0lOU1RBTExFRCIgOyB0aGVuCisJR0lUX1ZBTEdSSU5EX01PREU9IiR2YWxncmluZCIKKwlleHBvcnQgR0lUX1ZBTEdSSU5EX01PREUKK2VsaWYgdGVzdCAtbiAiJEdJVF9URVNUX0lOU1RBTExFRCIKK3RoZW4KIAlHSVRfRVhFQ19QQVRIPSQoJEdJVF9URVNUX0lOU1RBTExFRC9naXQgLS1leGVjLXBhdGgpICB8fAogCWVycm9yICJDYW5ub3QgcnVuIGdpdCBmcm9tICRHSVRfVEVTVF9JTlNUQUxMRUQuIgogCVBBVEg9JEdJVF9URVNUX0lOU1RBTExFRDokR0lUX0JVSUxEX0RJUjokUEFUSAogCUdJVF9FWEVDX1BBVEg9JHtHSVRfVEVTVF9FWEVDX1BBVEg6LSRHSVRfRVhFQ19QQVRIfQogZWxzZSAjIG5vcm1hbCBjYXNlLCB1c2UgLi4vYmluLXdyYXBwZXJzIG9ubHkgdW5sZXNzICR3aXRoX2Rhc2hlczoKIAlnaXRfYmluX2Rpcj0iJEdJVF9CVUlMRF9ESVIvYmluLXdyYXBwZXJzIgotCWlmICEgdGVzdCAteCAiJGdpdF9iaW5fZGlyL2dpdCIgOyB0aGVuCi0JCWlmIHRlc3QgLXogIiR3aXRoX2Rhc2hlcyIgOyB0aGVuCisJaWYgISB0ZXN0IC14ICIkZ2l0X2Jpbl9kaXIvZ2l0IgorCXRoZW4KKwkJaWYgdGVzdCAteiAiJHdpdGhfZGFzaGVzIgorCQl0aGVuCiAJCQlzYXkgIiRnaXRfYmluX2Rpci9naXQgaXMgbm90IGV4ZWN1dGFibGU7IHVzaW5nIEdJVF9FWEVDX1BBVEgiCiAJCWZpCiAJCXdpdGhfZGFzaGVzPXQKIAlmaQogCVBBVEg9IiRnaXRfYmluX2RpcjokUEFUSCIKIAlHSVRfRVhFQ19QQVRIPSRHSVRfQlVJTERfRElSCi0JaWYgdGVzdCAtbiAiJHdpdGhfZGFzaGVzIiA7IHRoZW4KKwlpZiB0ZXN0IC1uICIkd2l0aF9kYXNoZXMiCisJdGhlbgogCQlQQVRIPSIkR0lUX0JVSUxEX0RJUjokUEFUSCIKIAlmaQogZmkKQEAgLTQ5Miw4ICs1NjcsNiBAQAogR0lUX0FUVFJfTk9TWVNURU09MQogZXhwb3J0IFBBVEggR0lUX0VYRUNfUEFUSCBHSVRfVEVNUExBVEVfRElSIEdJVF9DT05GSUdfTk9TWVNURU0gR0lUX0FUVFJfTk9TWVNURU0KIAotLiAiJEdJVF9CVUlMRF9ESVIiL0dJVC1CVUlMRC1PUFRJT05TCi0KIGlmIHRlc3QgLXogIiRHSVRfVEVTVF9DTVAiCiB0aGVuCiAJaWYgdGVzdCAtbiAiJEdJVF9URVNUX0NNUF9VU0VfQ09QSUVEX0NPTlRFWFQiCkBAIC01MTksMjEgKzU5MiwyMiBAQAogCX0KIGZpCiAKLWlmICEgdGVzdCAteCAiJEdJVF9CVUlMRF9ESVIiL3Rlc3QtY2htdGltZTsgdGhlbgoraWYgISB0ZXN0IC14ICIkR0lUX0JVSUxEX0RJUiIvdGVzdC1jaG10aW1lCit0aGVuCiAJZWNobyA+JjIgJ1lvdSBuZWVkIHRvIGJ1aWxkIHRlc3QtY2htdGltZTonCiAJZWNobyA+JjIgJ1J1biAibWFrZSB0ZXN0LWNobXRpbWUiIGluIHRoZSBzb3VyY2UgKHRvcGxldmVsKSBkaXJlY3RvcnknCiAJZXhpdCAxCiBmaQogCiAjIFRlc3QgcmVwb3NpdG9yeQotdGVzdD0idHJhc2ggZGlyZWN0b3J5LiQoYmFzZW5hbWUgIiQwIiAuc2gpIgotdGVzdCAtbiAiJHJvb3QiICYmIHRlc3Q9IiRyb290LyR0ZXN0IgotY2FzZSAiJHRlc3QiIGluCi0vKikgVFJBU0hfRElSRUNUT1JZPSIkdGVzdCIgOzsKLSAqKSBUUkFTSF9ESVJFQ1RPUlk9IiRURVNUX09VVFBVVF9ESVJFQ1RPUlkvJHRlc3QiIDs7CitUUkFTSF9ESVJFQ1RPUlk9InRyYXNoIGRpcmVjdG9yeS4kKGJhc2VuYW1lICIkMCIgLnNoKSIKK3Rlc3QgLW4gIiRyb290IiAmJiBUUkFTSF9ESVJFQ1RPUlk9IiRyb290LyRUUkFTSF9ESVJFQ1RPUlkiCitjYXNlICIkVFJBU0hfRElSRUNUT1JZIiBpbgorLyopIDs7ICMgYWJzb2x1dGUgcGF0aCBpcyBnb29kCisgKikgVFJBU0hfRElSRUNUT1JZPSIkVEVTVF9PVVRQVVRfRElSRUNUT1JZLyRUUkFTSF9ESVJFQ1RPUlkiIDs7CiBlc2FjCiB0ZXN0ICEgLXogIiRkZWJ1ZyIgfHwgcmVtb3ZlX3RyYXNoPSRUUkFTSF9ESVJFQ1RPUlkKLXJtIC1mciAiJHRlc3QiIHx8IHsKK3JtIC1mciAiJFRSQVNIX0RJUkVDVE9SWSIgfHwgewogCUdJVF9FWElUX09LPXQKIAllY2hvID4mNSAiRkFUQUw6IENhbm5vdCBwcmVwYXJlIHRlc3QgYXJlYSIKIAlleGl0IDEKQEAgLTU0MiwxNCArNjE2LDE1IEBACiBIT01FPSIkVFJBU0hfRElSRUNUT1JZIgogZXhwb3J0IEhPTUUKIAotaWYgdGVzdCAteiAiJFRFU1RfTk9fQ1JFQVRFX1JFUE8iOyB0aGVuCi0JdGVzdF9jcmVhdGVfcmVwbyAiJHRlc3QiCitpZiB0ZXN0IC16ICIkVEVTVF9OT19DUkVBVEVfUkVQTyIKK3RoZW4KKwl0ZXN0X2NyZWF0ZV9yZXBvICIkVFJBU0hfRElSRUNUT1JZIgogZWxzZQotCW1rZGlyIC1wICIkdGVzdCIKKwlta2RpciAtcCAiJFRSQVNIX0RJUkVDVE9SWSIKIGZpCiAjIFVzZSAtUCB0byByZXNvbHZlIHN5bWxpbmtzIGluIG91ciB3b3JraW5nIGRpcmVjdG9yeSBzbyB0aGF0IHRoZSBjd2QKICMgaW4gc3VicHJvY2Vzc2VzIGxpa2UgZ2l0IGVxdWFscyBvdXIgJFBXRCAoZm9yIHBhdGhuYW1lIGNvbXBhcmlzb25zKS4KLWNkIC1QICIkdGVzdCIgfHwgZXhpdCAxCitjZCAtUCAiJFRSQVNIX0RJUkVDVE9SWSIgfHwgZXhpdCAxCiAKIHRoaXNfdGVzdD0kezAjIyovfQogdGhpc190ZXN0PSR7dGhpc190ZXN0JSUtKn0KQEAgLTU1Nyw3ICs2MzIsNyBAQAogZG8KIAljYXNlICIkdGhpc190ZXN0IiBpbgogCSRza3ApCi0JCXNheV9jb2xvciBza2lwID4mMyAic2tpcHBpbmcgdGVzdCAkdGhpc190ZXN0IGFsdG9nZXRoZXIiCisJCXNheV9jb2xvciBpbmZvID4mMyAic2tpcHBpbmcgdGVzdCAkdGhpc190ZXN0IGFsdG9nZXRoZXIiCiAJCXNraXBfYWxsPSJza2lwIGFsbCB0ZXN0cyBpbiAkdGhpc190ZXN0IgogCQl0ZXN0X2RvbmUKIAllc2FjCkBAIC01OTksMTIgKzY3NCwxNCBAQAogCSMgYmFja3NsYXNoZXMgaW4gcGF0aHNwZWMgYXJlIGNvbnZlcnRlZCB0byAnLycKIAkjIGV4ZWMgZG9lcyBub3QgaW5oZXJpdCB0aGUgUElECiAJdGVzdF9zZXRfcHJlcmVxIE1JTkdXCisJdGVzdF9zZXRfcHJlcmVxIE5PVF9DWUdXSU4KIAl0ZXN0X3NldF9wcmVyZXEgU0VEX1NUUklQU19DUgogCTs7CiAqQ1lHV0lOKikKIAl0ZXN0X3NldF9wcmVyZXEgUE9TSVhQRVJNCiAJdGVzdF9zZXRfcHJlcmVxIEVYRUNLRUVQU1BJRAogCXRlc3Rfc2V0X3ByZXJlcSBOT1RfTUlOR1cKKwl0ZXN0X3NldF9wcmVyZXEgQ1lHV0lOCiAJdGVzdF9zZXRfcHJlcmVxIFNFRF9TVFJJUFNfQ1IKIAk7OwogKikKQEAgLTYxMiw2ICs2ODksNyBAQAogCXRlc3Rfc2V0X3ByZXJlcSBCU0xBU0hQU1BFQwogCXRlc3Rfc2V0X3ByZXJlcSBFWEVDS0VFUFNQSUQKIAl0ZXN0X3NldF9wcmVyZXEgTk9UX01JTkdXCisJdGVzdF9zZXRfcHJlcmVxIE5PVF9DWUdXSU4KIAk7OwogZXNhYwogCkBAIC02NTcsMTAgKzczNSw0NyBAQAogCWZpCiB9CiAKLSMgdGVzdCB3aGV0aGVyIHRoZSBmaWxlc3lzdGVtIHN1cHBvcnRzIHN5bWJvbGljIGxpbmtzCi1sbiAtcyB4IHkgMj4vZGV2L251bGwgJiYgdGVzdCAtaCB5IDI+L2Rldi9udWxsICYmIHRlc3Rfc2V0X3ByZXJlcSBTWU1MSU5LUwotcm0gLWYgeQordGVzdF9sYXp5X3ByZXJlcSBQSVBFICcKKwkjIHRlc3Qgd2hldGhlciB0aGUgZmlsZXN5c3RlbSBzdXBwb3J0cyBGSUZPcworCXJtIC1mIHRlc3RmaWZvICYmIG1rZmlmbyB0ZXN0ZmlmbworJworCit0ZXN0X2xhenlfcHJlcmVxIFNZTUxJTktTICcKKwkjIHRlc3Qgd2hldGhlciB0aGUgZmlsZXN5c3RlbSBzdXBwb3J0cyBzeW1ib2xpYyBsaW5rcworCWxuIC1zIHggeSAmJiB0ZXN0IC1oIHkKKycKKwordGVzdF9sYXp5X3ByZXJlcSBDQVNFX0lOU0VOU0lUSVZFX0ZTICcKKwllY2hvIGdvb2QgPkNhbWVsQ2FzZSAmJgorCWVjaG8gYmFkID5jYW1lbGNhc2UgJiYKKwl0ZXN0ICIkKGNhdCBDYW1lbENhc2UpIiAhPSBnb29kCisnCisKK3Rlc3RfbGF6eV9wcmVyZXEgVVRGOF9ORkRfVE9fTkZDICcKKwkjIGNoZWNrIHdoZXRoZXIgRlMgY29udmVydHMgbmZkIHVuaWNvZGUgdG8gbmZjCisJYXVtbD0kKHByaW50ZiAiXDMwM1wyNDQiKQorCWF1bWxjZGlhcj0kKHByaW50ZiAiXDE0MVwzMTRcMjEwIikKKwk+IiRhdW1sIiAmJgorCWNhc2UgIiQoZWNobyAqKSIgaW4KKwkiJGF1bWxjZGlhciIpCisJCXRydWUgOzsKKwkqKQorCQlmYWxzZSA7OworCWVzYWMKKycKKwordGVzdF9sYXp5X3ByZXJlcSBBVVRPSURFTlQgJworCXNhbmVfdW5zZXQgR0lUX0FVVEhPUl9OQU1FICYmCisJc2FuZV91bnNldCBHSVRfQVVUSE9SX0VNQUlMICYmCisJZ2l0IHZhciBHSVRfQVVUSE9SX0lERU5UCisnCiAKICMgV2hlbiB0aGUgdGVzdHMgYXJlIHJ1biBhcyByb290LCBwZXJtaXNzaW9uIHRlc3RzIHdpbGwgcmVwb3J0IHRoYXQKICMgdGhpbmdzIGFyZSB3cml0YWJsZSB3aGVuIHRoZXkgc2hvdWxkbid0IGJlLgogdGVzdCAtdyAvIHx8IHRlc3Rfc2V0X3ByZXJlcSBTQU5JVFkKKworR0lUX1VOWklQPSR7R0lUX1VOWklQOi11bnppcH0KK3Rlc3RfbGF6eV9wcmVyZXEgVU5aSVAgJworCSIkR0lUX1VOWklQIiAtdgorCXRlc3QgJD8gLW5lIDEyNworJwpkaWZmIC0tZ2l0IGEvdC90ZXN0LXRlcm1pbmFsLnBlcmwgYi90L3Rlc3QtdGVybWluYWwucGVybAppbmRleCAxMDE3MmFlLi4xZmIzNzNmIDEwMDc1NQotLS0gYS90L3Rlc3QtdGVybWluYWwucGVybAorKysgYi90L3Rlc3QtdGVybWluYWwucGVybApAQCAtMzEsNyArMzEsNyBAQAogCX0gZWxzaWYgKCQ/ICYgMTI3KSB7CiAJCW15ICRjb2RlID0gJD8gJiAxMjc7CiAJCXdhcm4gImRpZWQgb2Ygc2lnbmFsICRjb2RlIjsKLQkJcmV0dXJuICRjb2RlIC0gMTI4OworCQlyZXR1cm4gJGNvZGUgKyAxMjg7CiAJfSBlbHNlIHsKIAkJcmV0dXJuICQ/ID4+IDg7CiAJfQpkaWZmIC0tZ2l0IGEvdC92YWxncmluZC92YWxncmluZC5zaCBiL3QvdmFsZ3JpbmQvdmFsZ3JpbmQuc2gKaW5kZXggNTgyYjRkYy4uNmI4N2M5MSAxMDA3NTUKLS0tIGEvdC92YWxncmluZC92YWxncmluZC5zaAorKysgYi90L3ZhbGdyaW5kL3ZhbGdyaW5kLnNoCkBAIC0yLDIwICsyLDI3IEBACiAKIGJhc2U9JChiYXNlbmFtZSAiJDAiKQogCi1UUkFDS19PUklHSU5TPQorVE9PTF9PUFRJT05TPSctLWxlYWstY2hlY2s9bm8nCiAKLVZBTEdSSU5EX1ZFUlNJT049JCh2YWxncmluZCAtLXZlcnNpb24pCi1WQUxHUklORF9NQUpPUj0kKGV4cHIgIiRWQUxHUklORF9WRVJTSU9OIiA6ICdbXjAtOV0qXChbMC05XSpcKScpCi1WQUxHUklORF9NSU5PUj0kKGV4cHIgIiRWQUxHUklORF9WRVJTSU9OIiA6ICdbXjAtOV0qWzAtOV0qXC5cKFswLTldKlwpJykKLXRlc3QgMyAtZ3QgIiRWQUxHUklORF9NQUpPUiIgfHwKLXRlc3QgMyAtZXEgIiRWQUxHUklORF9NQUpPUiIgLWEgNCAtZ3QgIiRWQUxHUklORF9NSU5PUiIgfHwKLVRSQUNLX09SSUdJTlM9LS10cmFjay1vcmlnaW5zPXllcworY2FzZSAiJEdJVF9WQUxHUklORF9NT0RFIiBpbgorbWVtY2hlY2stZmFzdCkKKwk7OworbWVtY2hlY2spCisJVkFMR1JJTkRfVkVSU0lPTj0kKHZhbGdyaW5kIC0tdmVyc2lvbikKKwlWQUxHUklORF9NQUpPUj0kKGV4cHIgIiRWQUxHUklORF9WRVJTSU9OIiA6ICdbXjAtOV0qXChbMC05XSpcKScpCisJVkFMR1JJTkRfTUlOT1I9JChleHByICIkVkFMR1JJTkRfVkVSU0lPTiIgOiAnW14wLTldKlswLTldKlwuXChbMC05XSpcKScpCisJdGVzdCAzIC1ndCAiJFZBTEdSSU5EX01BSk9SIiB8fAorCXRlc3QgMyAtZXEgIiRWQUxHUklORF9NQUpPUiIgLWEgNCAtZ3QgIiRWQUxHUklORF9NSU5PUiIgfHwKKwlUT09MX09QVElPTlM9IiRUT09MX09QVElPTlMgLS10cmFjay1vcmlnaW5zPXllcyIKKwk7OworKikKKwlUT09MX09QVElPTlM9Ii0tdG9vbD0kR0lUX1ZBTEdSSU5EX01PREUiCitlc2FjCiAKIGV4ZWMgdmFsZ3JpbmQgLXEgLS1lcnJvci1leGl0Y29kZT0xMjYgXAotCS0tbGVhay1jaGVjaz1ubyBcCi0JLS1zdXBwcmVzc2lvbnM9IiRHSVRfVkFMR1JJTkQvZGVmYXVsdC5zdXBwIiBcCiAJLS1nZW4tc3VwcHJlc3Npb25zPWFsbCBcCi0JJFRSQUNLX09SSUdJTlMgXAorCS0tc3VwcHJlc3Npb25zPSIkR0lUX1ZBTEdSSU5EL2RlZmF1bHQuc3VwcCIgXAorCSRUT09MX09QVElPTlMgXAogCS0tbG9nLWZkPTQgXAogCS0taW5wdXQtZmQ9NCBcCiAJJEdJVF9WQUxHUklORF9PUFRJT05TIFwKZGlmZiAtLWdpdCBhL3RlbXBsYXRlcy9ob29rcy0tcHJlLXB1c2guc2FtcGxlIGIvdGVtcGxhdGVzL2hvb2tzLS1wcmUtcHVzaC5zYW1wbGUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTVhYjZkOAotLS0gL2Rldi9udWxsCisrKyBiL3RlbXBsYXRlcy9ob29rcy0tcHJlLXB1c2guc2FtcGxlCkBAIC0wLDAgKzEsNTMgQEAKKyMhL2Jpbi9zaAorCisjIEFuIGV4YW1wbGUgaG9vayBzY3JpcHQgdG8gdmVyaWZ5IHdoYXQgaXMgYWJvdXQgdG8gYmUgcHVzaGVkLiAgQ2FsbGVkIGJ5ICJnaXQKKyMgcHVzaCIgYWZ0ZXIgaXQgaGFzIGNoZWNrZWQgdGhlIHJlbW90ZSBzdGF0dXMsIGJ1dCBiZWZvcmUgYW55dGhpbmcgaGFzIGJlZW4KKyMgcHVzaGVkLiAgSWYgdGhpcyBzY3JpcHQgZXhpdHMgd2l0aCBhIG5vbi16ZXJvIHN0YXR1cyBub3RoaW5nIHdpbGwgYmUgcHVzaGVkLgorIworIyBUaGlzIGhvb2sgaXMgY2FsbGVkIHdpdGggdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgorIworIyAkMSAtLSBOYW1lIG9mIHRoZSByZW1vdGUgdG8gd2hpY2ggdGhlIHB1c2ggaXMgYmVpbmcgZG9uZQorIyAkMiAtLSBVUkwgdG8gd2hpY2ggdGhlIHB1c2ggaXMgYmVpbmcgZG9uZQorIworIyBJZiBwdXNoaW5nIHdpdGhvdXQgdXNpbmcgYSBuYW1lZCByZW1vdGUgdGhvc2UgYXJndW1lbnRzIHdpbGwgYmUgZXF1YWwuCisjCisjIEluZm9ybWF0aW9uIGFib3V0IHRoZSBjb21taXRzIHdoaWNoIGFyZSBiZWluZyBwdXNoZWQgaXMgc3VwcGxpZWQgYXMgbGluZXMgdG8KKyMgdGhlIHN0YW5kYXJkIGlucHV0IGluIHRoZSBmb3JtOgorIworIyAgIDxsb2NhbCByZWY+IDxsb2NhbCBzaGExPiA8cmVtb3RlIHJlZj4gPHJlbW90ZSBzaGExPgorIworIyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gcHJldmVudCBwdXNoIG9mIGNvbW1pdHMgd2hlcmUgdGhlIGxvZyBtZXNzYWdlIHN0YXJ0cworIyB3aXRoICJXSVAiICh3b3JrIGluIHByb2dyZXNzKS4KKworcmVtb3RlPSIkMSIKK3VybD0iJDIiCisKK3o0MD0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCisKK0lGUz0nICcKK3doaWxlIHJlYWQgbG9jYWxfcmVmIGxvY2FsX3NoYSByZW1vdGVfcmVmIHJlbW90ZV9zaGEKK2RvCisJaWYgWyAiJGxvY2FsX3NoYSIgPSAkejQwIF0KKwl0aGVuCisJCSMgSGFuZGxlIGRlbGV0ZQorCWVsc2UKKwkJaWYgWyAiJHJlbW90ZV9zaGEiID0gJHo0MCBdCisJCXRoZW4KKwkJCSMgTmV3IGJyYW5jaCwgZXhhbWluZSBhbGwgY29tbWl0cworCQkJcmFuZ2U9IiRsb2NhbF9zaGEiCisJCWVsc2UKKwkJCSMgVXBkYXRlIHRvIGV4aXN0aW5nIGJyYW5jaCwgZXhhbWluZSBuZXcgY29tbWl0cworCQkJcmFuZ2U9IiRyZW1vdGVfc2hhLi4kbG9jYWxfc2hhIgorCQlmaQorCisJCSMgQ2hlY2sgZm9yIFdJUCBjb21taXQKKwkJY29tbWl0PWBnaXQgcmV2LWxpc3QgLW4gMSAtLWdyZXAgJ15XSVAnICIkcmFuZ2UiYAorCQlpZiBbIC1uICIkY29tbWl0IiBdCisJCXRoZW4KKwkJCWVjaG8gIkZvdW5kIFdJUCBjb21taXQgaW4gJGxvY2FsX3JlZiwgbm90IHB1c2hpbmciCisJCQlleGl0IDEKKwkJZmkKKwlmaQorZG9uZQorCitleGl0IDAKZGlmZiAtLWdpdCBhL3RlbXBsYXRlcy9ob29rcy0tdXBkYXRlLnNhbXBsZSBiL3RlbXBsYXRlcy9ob29rcy0tdXBkYXRlLnNhbXBsZQppbmRleCA3MWFiMDRlLi5kODQ3NTgzIDEwMDc1NQotLS0gYS90ZW1wbGF0ZXMvaG9va3MtLXVwZGF0ZS5zYW1wbGUKKysrIGIvdGVtcGxhdGVzL2hvb2tzLS11cGRhdGUuc2FtcGxlCkBAIC0zOCw3ICszOCw3IEBACiBmaQogCiBpZiBbIC16ICIkcmVmbmFtZSIgLW8gLXogIiRvbGRyZXYiIC1vIC16ICIkbmV3cmV2IiBdOyB0aGVuCi0JZWNobyAiVXNhZ2U6ICQwIDxyZWY+IDxvbGRyZXY+IDxuZXdyZXY+IiA+JjIKKwllY2hvICJ1c2FnZTogJDAgPHJlZj4gPG9sZHJldj4gPG5ld3Jldj4iID4mMgogCWV4aXQgMQogZmkKIApkaWZmIC0tZ2l0IGEvdGVzdC1jaG10aW1lLmMgYi90ZXN0LWNobXRpbWUuYwppbmRleCA5MjcxM2QxLi4wMmI0MmJhIDEwMDY0NAotLS0gYS90ZXN0LWNobXRpbWUuYworKysgYi90ZXN0LWNobXRpbWUuYwpAQCAtMTE0LDYgKzExNCw2IEBACiAJcmV0dXJuIDA7CiAKIHVzYWdlOgotCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzICVzXG4iLCBhcmd2WzBdLCB1c2FnZV9zdHIpOworCWZwcmludGYoc3RkZXJyLCAidXNhZ2U6ICVzICVzXG4iLCBhcmd2WzBdLCB1c2FnZV9zdHIpOwogCXJldHVybiAtMTsKIH0KZGlmZiAtLWdpdCBhL3Rlc3QtY3JlZGVudGlhbC5jIGIvdGVzdC1jcmVkZW50aWFsLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZTIwMGUuLjAwMDAwMDAKLS0tIGEvdGVzdC1jcmVkZW50aWFsLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0jaW5jbHVkZSAiY2FjaGUuaCIKLSNpbmNsdWRlICJjcmVkZW50aWFsLmgiCi0jaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKLQotc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfbXNnW10gPQotInRlc3QtY3JlZGVudGlhbCA8ZmlsbHxhcHByb3ZlfHJlamVjdD4gW2hlbHBlci4uLl0iOwotCi1pbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCi17Ci0JY29uc3QgY2hhciAqb3A7Ci0Jc3RydWN0IGNyZWRlbnRpYWwgYyA9IENSRURFTlRJQUxfSU5JVDsKLQlpbnQgaTsKLQotCW9wID0gYXJndlsxXTsKLQlpZiAoIW9wKQotCQl1c2FnZSh1c2FnZV9tc2cpOwotCWZvciAoaSA9IDI7IGkgPCBhcmdjOyBpKyspCi0JCXN0cmluZ19saXN0X2FwcGVuZCgmYy5oZWxwZXJzLCBhcmd2W2ldKTsKLQotCWlmIChjcmVkZW50aWFsX3JlYWQoJmMsIHN0ZGluKSA8IDApCi0JCWRpZSgidW5hYmxlIHRvIHJlYWQgY3JlZGVudGlhbCBmcm9tIHN0ZGluIik7Ci0KLQlpZiAoIXN0cmNtcChvcCwgImZpbGwiKSkgewotCQljcmVkZW50aWFsX2ZpbGwoJmMpOwotCQlpZiAoYy51c2VybmFtZSkKLQkJCXByaW50ZigidXNlcm5hbWU9JXNcbiIsIGMudXNlcm5hbWUpOwotCQlpZiAoYy5wYXNzd29yZCkKLQkJCXByaW50ZigicGFzc3dvcmQ9JXNcbiIsIGMucGFzc3dvcmQpOwotCX0KLQllbHNlIGlmICghc3RyY21wKG9wLCAiYXBwcm92ZSIpKQotCQljcmVkZW50aWFsX2FwcHJvdmUoJmMpOwotCWVsc2UgaWYgKCFzdHJjbXAob3AsICJyZWplY3QiKSkKLQkJY3JlZGVudGlhbF9yZWplY3QoJmMpOwotCWVsc2UKLQkJdXNhZ2UodXNhZ2VfbXNnKTsKLQotCXJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvdGVzdC1kZWx0YS5jIGIvdGVzdC1kZWx0YS5jCmluZGV4IGFmNDBhM2MuLjQ1OTVjZDYgMTAwNjQ0Ci0tLSBhL3Rlc3QtZGVsdGEuYworKysgYi90ZXN0LWRlbHRhLmMKQEAgLTIzLDcgKzIzLDcgQEAKIAl1bnNpZ25lZCBsb25nIGZyb21fc2l6ZSwgZGF0YV9zaXplLCBvdXRfc2l6ZTsKIAogCWlmIChhcmdjICE9IDUgfHwgKHN0cmNtcChhcmd2WzFdLCAiLWQiKSAmJiBzdHJjbXAoYXJndlsxXSwgIi1wIikpKSB7Ci0JCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzXG4iLCB1c2FnZV9zdHIpOworCQlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiAlc1xuIiwgdXNhZ2Vfc3RyKTsKIAkJcmV0dXJuIDE7CiAJfQogCmRpZmYgLS1naXQgYS90ZXN0LWdlbnJhbmRvbS5jIGIvdGVzdC1nZW5yYW5kb20uYwppbmRleCBiM2MyOGQ5Li41NDgyNGQwIDEwMDY0NAotLS0gYS90ZXN0LWdlbnJhbmRvbS5jCisrKyBiL3Rlc3QtZ2VucmFuZG9tLmMKQEAgLTEyLDcgKzEyLDcgQEAKIAl1bnNpZ25lZCBjaGFyICpjOwogCiAJaWYgKGFyZ2MgPCAyIHx8IGFyZ2MgPiAzKSB7Ci0JCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIDxzZWVkX3N0cmluZz4gWzxzaXplPl1cbiIsIGFyZ3ZbMF0pOworCQlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiAlcyA8c2VlZF9zdHJpbmc+IFs8c2l6ZT5dXG4iLCBhcmd2WzBdKTsKIAkJcmV0dXJuIDE7CiAJfQogCmRpZmYgLS1naXQgYS90ZXN0LWxpbmUtYnVmZmVyLmMgYi90ZXN0LWxpbmUtYnVmZmVyLmMKaW5kZXggN2VjOWIxMy4uZWYxZDdiYSAxMDA2NDQKLS0tIGEvdGVzdC1saW5lLWJ1ZmZlci5jCisrKyBiL3Rlc3QtbGluZS1idWZmZXIuYwpAQCAtODcsNiArODcsNSBAQAogCQlkaWUoImlucHV0IGVycm9yIik7CiAJaWYgKGZlcnJvcihzdGRvdXQpKQogCQlkaWUoIm91dHB1dCBlcnJvciIpOwotCWJ1ZmZlcl9yZXNldCgmc3RkaW5fYnVmKTsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3Rlc3QtcGF0aC11dGlscy5jIGIvdGVzdC1wYXRoLXV0aWxzLmMKaW5kZXggM2JjMjBlOS4uMDA5MmNiZiAxMDA2NDQKLS0tIGEvdGVzdC1wYXRoLXV0aWxzLmMKKysrIGIvdGVzdC1wYXRoLXV0aWxzLmMKQEAgLTEsNCArMSwzMiBAQAogI2luY2x1ZGUgImNhY2hlLmgiCisjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKKworLyoKKyAqIEEgInN0cmluZ19saXN0X2VhY2hfZnVuY190IiBmdW5jdGlvbiB0aGF0IG5vcm1hbGl6ZXMgYW4gZW50cnkgZnJvbQorICogR0lUX0NFSUxJTkdfRElSRUNUT1JJRVMuICBJZiB0aGUgcGF0aCBpcyB1bnVzYWJsZSBmb3Igc29tZSByZWFzb24sCisgKiBkaWUgd2l0aCBhbiBleHBsYW5hdGlvbi4KKyAqLworc3RhdGljIGludCBub3JtYWxpemVfY2VpbGluZ19lbnRyeShzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbSwgdm9pZCAqdW51c2VkKQoreworCWNvbnN0IGNoYXIgKmNlaWwgPSBpdGVtLT5zdHJpbmc7CisJaW50IGxlbiA9IHN0cmxlbihjZWlsKTsKKwljaGFyIGJ1ZltQQVRIX01BWCsxXTsKKworCWlmIChsZW4gPT0gMCkKKwkJZGllKCJFbXB0eSBwYXRoIGlzIG5vdCBzdXBwb3J0ZWQiKTsKKwlpZiAobGVuID4gUEFUSF9NQVgpCisJCWRpZSgiUGF0aCBcIiVzXCIgaXMgdG9vIGxvbmciLCBjZWlsKTsKKwlpZiAoIWlzX2Fic29sdXRlX3BhdGgoY2VpbCkpCisJCWRpZSgiUGF0aCBcIiVzXCIgaXMgbm90IGFic29sdXRlIiwgY2VpbCk7CisJaWYgKG5vcm1hbGl6ZV9wYXRoX2NvcHkoYnVmLCBjZWlsKSA8IDApCisJCWRpZSgiUGF0aCBcIiVzXCIgY291bGQgbm90IGJlIG5vcm1hbGl6ZWQiLCBjZWlsKTsKKwlsZW4gPSBzdHJsZW4oYnVmKTsKKwlpZiAobGVuID4gMSAmJiBidWZbbGVuLTFdID09ICcvJykKKwkJZGllKCJOb3JtYWxpemVkIHBhdGggXCIlc1wiIGVuZGVkIHdpdGggc2xhc2giLCBidWYpOworCWZyZWUoaXRlbS0+c3RyaW5nKTsKKwlpdGVtLT5zdHJpbmcgPSB4c3RyZHVwKGJ1Zik7CisJcmV0dXJuIDE7Cit9CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKQEAgLTMwLDcgKzU4LDI4IEBACiAJfQogCiAJaWYgKGFyZ2MgPT0gNCAmJiAhc3RyY21wKGFyZ3ZbMV0sICJsb25nZXN0X2FuY2VzdG9yX2xlbmd0aCIpKSB7Ci0JCWludCBsZW4gPSBsb25nZXN0X2FuY2VzdG9yX2xlbmd0aChhcmd2WzJdLCBhcmd2WzNdKTsKKwkJaW50IGxlbjsKKwkJc3RydWN0IHN0cmluZ19saXN0IGNlaWxpbmdfZGlycyA9IFNUUklOR19MSVNUX0lOSVRfRFVQOworCQljaGFyICpwYXRoID0geHN0cmR1cChhcmd2WzJdKTsKKworCQkvKgorCQkgKiBXZSBoYXZlIHRvIG5vcm1hbGl6ZSB0aGUgYXJndW1lbnRzIGJlY2F1c2UgdW5kZXIKKwkJICogV2luZG93cywgYmFzaCBtYW5nbGVzIGFyZ3VtZW50cyB0aGF0IGxvb2sgbGlrZQorCQkgKiBhYnNvbHV0ZSBQT1NJWCBwYXRocyBvciBjb2xvbi1zZXBhcmF0ZSBsaXN0cyBvZgorCQkgKiBhYnNvbHV0ZSBQT1NJWCBwYXRocyBpbnRvIERPUyBwYXRocyAoZS5nLiwKKwkJICogIi9mb286L2Zvby9iYXIiIG1pZ2h0IGJlIGNvbnZlcnRlZCB0bworCQkgKiAiRDpcU3JjXG1zeXNnaXRcZm9vO0Q6XFNyY1xtc3lzZ2l0XGZvb1xiYXIiKSwKKwkJICogd2hlcmVhcyBsb25nZXN0X2FuY2VzdG9yX2xlbmd0aCgpIHJlcXVpcmVzIHBhdGhzCisJCSAqIHRoYXQgdXNlIGZvcndhcmQgc2xhc2hlcy4KKwkJICovCisJCWlmIChub3JtYWxpemVfcGF0aF9jb3B5KHBhdGgsIHBhdGgpKQorCQkJZGllKCJQYXRoIFwiJXNcIiBjb3VsZCBub3QgYmUgbm9ybWFsaXplZCIsIGFyZ3ZbMl0pOworCQlzdHJpbmdfbGlzdF9zcGxpdCgmY2VpbGluZ19kaXJzLCBhcmd2WzNdLCBQQVRIX1NFUCwgLTEpOworCQlmaWx0ZXJfc3RyaW5nX2xpc3QoJmNlaWxpbmdfZGlycywgMCwKKwkJCQkgICBub3JtYWxpemVfY2VpbGluZ19lbnRyeSwgTlVMTCk7CisJCWxlbiA9IGxvbmdlc3RfYW5jZXN0b3JfbGVuZ3RoKHBhdGgsICZjZWlsaW5nX2RpcnMpOworCQlzdHJpbmdfbGlzdF9jbGVhcigmY2VpbGluZ19kaXJzLCAwKTsKKwkJZnJlZShwYXRoKTsKIAkJcHJpbnRmKCIlZFxuIiwgbGVuKTsKIAkJcmV0dXJuIDA7CiAJfQpkaWZmIC0tZ2l0IGEvdGVzdC1yZWdleC5jIGIvdGVzdC1yZWdleC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1YmZkNTQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0LXJlZ2V4LmMKQEAgLTAsMCArMSwyMCBAQAorI2luY2x1ZGUgPGdpdC1jb21wYXQtdXRpbC5oPgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJY2hhciAqcGF0ID0gIltePXt9IFx0XSsiOworCWNoYXIgKnN0ciA9ICI9e31cbmZyZWQiOworCXJlZ2V4X3QgcjsKKwlyZWdtYXRjaF90IG1bMV07CisKKwlpZiAocmVnY29tcCgmciwgcGF0LCBSRUdfRVhURU5ERUQgfCBSRUdfTkVXTElORSkpCisJCWRpZSgiZmFpbGVkIHJlZ2NvbXAoKSBmb3IgcGF0dGVybiAnJXMnIiwgcGF0KTsKKwlpZiAocmVnZXhlYygmciwgc3RyLCAxLCBtLCAwKSkKKwkJZGllKCJubyBtYXRjaCBvZiBwYXR0ZXJuICclcycgdG8gc3RyaW5nICclcyciLCBwYXQsIHN0cik7CisKKwkvKiBodHRwOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTM5NTcgICovCisJaWYgKG1bMF0ucm1fc28gPT0gMykgLyogbWF0Y2hlcyAnXG4nIHdoZW4gaXQgc2hvdWxkIG5vdCAqLworCQlkaWUoInJlZ2V4IGJ1ZyBjb25maXJtZWQ6IHJlLWJ1aWxkIGdpdCB3aXRoIE5PX1JFR0VYPTEiKTsKKworCWV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS90ZXN0LXN0cmluZy1saXN0LmMgYi90ZXN0LXN0cmluZy1saXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBjZTZjOQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qtc3RyaW5nLWxpc3QuYwpAQCAtMCwwICsxLDEwMyBAQAorI2luY2x1ZGUgImNhY2hlLmgiCisjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKKworLyoKKyAqIFBhcnNlIGFuIGFyZ3VtZW50IGludG8gYSBzdHJpbmcgbGlzdC4gIGFyZyBzaG91bGQgZWl0aGVyIGJlIGEKKyAqICc6Jy1zZXBhcmF0ZWQgbGlzdCBvZiBzdHJpbmdzLCBvciAiLSIgdG8gaW5kaWNhdGUgYW4gZW1wdHkgc3RyaW5nCisgKiBsaXN0IChhcyBvcHBvc2VkIHRvICIiLCB3aGljaCBpbmRpY2F0ZXMgYSBzdHJpbmcgbGlzdCBjb250YWluaW5nIGEKKyAqIHNpbmdsZSBlbXB0eSBzdHJpbmcpLiAgbGlzdC0+c3RyZHVwX3N0cmluZ3MgbXVzdCBiZSBzZXQuCisgKi8KK3N0YXRpYyB2b2lkIHBhcnNlX3N0cmluZ19saXN0KHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCwgY29uc3QgY2hhciAqYXJnKQoreworCWlmICghc3RyY21wKGFyZywgIi0iKSkKKwkJcmV0dXJuOworCisJKHZvaWQpc3RyaW5nX2xpc3Rfc3BsaXQobGlzdCwgYXJnLCAnOicsIC0xKTsKK30KKworc3RhdGljIHZvaWQgd3JpdGVfbGlzdChjb25zdCBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmxpc3QpCit7CisJaW50IGk7CisJZm9yIChpID0gMDsgaSA8IGxpc3QtPm5yOyBpKyspCisJCXByaW50ZigiWyVkXTogXCIlc1wiXG4iLCBpLCBsaXN0LT5pdGVtc1tpXS5zdHJpbmcpOworfQorCitzdGF0aWMgdm9pZCB3cml0ZV9saXN0X2NvbXBhY3QoY29uc3Qgc3RydWN0IHN0cmluZ19saXN0ICpsaXN0KQoreworCWludCBpOworCWlmICghbGlzdC0+bnIpCisJCXByaW50ZigiLVxuIik7CisJZWxzZSB7CisJCXByaW50ZigiJXMiLCBsaXN0LT5pdGVtc1swXS5zdHJpbmcpOworCQlmb3IgKGkgPSAxOyBpIDwgbGlzdC0+bnI7IGkrKykKKwkJCXByaW50ZigiOiVzIiwgbGlzdC0+aXRlbXNbaV0uc3RyaW5nKTsKKwkJcHJpbnRmKCJcbiIpOworCX0KK30KKworc3RhdGljIGludCBwcmVmaXhfY2Ioc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW0sIHZvaWQgKmNiX2RhdGEpCit7CisJY29uc3QgY2hhciAqcHJlZml4ID0gKGNvbnN0IGNoYXIgKiljYl9kYXRhOworCXJldHVybiAhcHJlZml4Y21wKGl0ZW0tPnN0cmluZywgcHJlZml4KTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWlmIChhcmdjID09IDUgJiYgIXN0cmNtcChhcmd2WzFdLCAic3BsaXQiKSkgeworCQlzdHJ1Y3Qgc3RyaW5nX2xpc3QgbGlzdCA9IFNUUklOR19MSVNUX0lOSVRfRFVQOworCQlpbnQgaTsKKwkJY29uc3QgY2hhciAqcyA9IGFyZ3ZbMl07CisJCWludCBkZWxpbSA9ICphcmd2WzNdOworCQlpbnQgbWF4c3BsaXQgPSBhdG9pKGFyZ3ZbNF0pOworCisJCWkgPSBzdHJpbmdfbGlzdF9zcGxpdCgmbGlzdCwgcywgZGVsaW0sIG1heHNwbGl0KTsKKwkJcHJpbnRmKCIlZFxuIiwgaSk7CisJCXdyaXRlX2xpc3QoJmxpc3QpOworCQlzdHJpbmdfbGlzdF9jbGVhcigmbGlzdCwgMCk7CisJCXJldHVybiAwOworCX0KKworCWlmIChhcmdjID09IDUgJiYgIXN0cmNtcChhcmd2WzFdLCAic3BsaXRfaW5fcGxhY2UiKSkgeworCQlzdHJ1Y3Qgc3RyaW5nX2xpc3QgbGlzdCA9IFNUUklOR19MSVNUX0lOSVRfTk9EVVA7CisJCWludCBpOworCQljaGFyICpzID0geHN0cmR1cChhcmd2WzJdKTsKKwkJaW50IGRlbGltID0gKmFyZ3ZbM107CisJCWludCBtYXhzcGxpdCA9IGF0b2koYXJndls0XSk7CisKKwkJaSA9IHN0cmluZ19saXN0X3NwbGl0X2luX3BsYWNlKCZsaXN0LCBzLCBkZWxpbSwgbWF4c3BsaXQpOworCQlwcmludGYoIiVkXG4iLCBpKTsKKwkJd3JpdGVfbGlzdCgmbGlzdCk7CisJCXN0cmluZ19saXN0X2NsZWFyKCZsaXN0LCAwKTsKKwkJZnJlZShzKTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKGFyZ2MgPT0gNCAmJiAhc3RyY21wKGFyZ3ZbMV0sICJmaWx0ZXIiKSkgeworCQkvKgorCQkgKiBSZXRhaW4gb25seSB0aGUgaXRlbXMgdGhhdCBoYXZlIHRoZSBzcGVjaWZpZWQgcHJlZml4LgorCQkgKiBBcmd1bWVudHM6IGxpc3R8LSBwcmVmaXgKKwkJICovCisJCXN0cnVjdCBzdHJpbmdfbGlzdCBsaXN0ID0gU1RSSU5HX0xJU1RfSU5JVF9EVVA7CisJCWNvbnN0IGNoYXIgKnByZWZpeCA9IGFyZ3ZbM107CisKKwkJcGFyc2Vfc3RyaW5nX2xpc3QoJmxpc3QsIGFyZ3ZbMl0pOworCQlmaWx0ZXJfc3RyaW5nX2xpc3QoJmxpc3QsIDAsIHByZWZpeF9jYiwgKHZvaWQgKilwcmVmaXgpOworCQl3cml0ZV9saXN0X2NvbXBhY3QoJmxpc3QpOworCQlzdHJpbmdfbGlzdF9jbGVhcigmbGlzdCwgMCk7CisJCXJldHVybiAwOworCX0KKworCWlmIChhcmdjID09IDMgJiYgIXN0cmNtcChhcmd2WzFdLCAicmVtb3ZlX2R1cGxpY2F0ZXMiKSkgeworCQlzdHJ1Y3Qgc3RyaW5nX2xpc3QgbGlzdCA9IFNUUklOR19MSVNUX0lOSVRfRFVQOworCisJCXBhcnNlX3N0cmluZ19saXN0KCZsaXN0LCBhcmd2WzJdKTsKKwkJc3RyaW5nX2xpc3RfcmVtb3ZlX2R1cGxpY2F0ZXMoJmxpc3QsIDApOworCQl3cml0ZV9saXN0X2NvbXBhY3QoJmxpc3QpOworCQlzdHJpbmdfbGlzdF9jbGVhcigmbGlzdCwgMCk7CisJCXJldHVybiAwOworCX0KKworCWZwcmludGYoc3RkZXJyLCAiJXM6IHVua25vd24gZnVuY3Rpb24gbmFtZTogJXNcbiIsIGFyZ3ZbMF0sCisJCWFyZ3ZbMV0gPyBhcmd2WzFdIDogIih0aGVyZSB3YXMgbm9uZSkiKTsKKwlyZXR1cm4gMTsKK30KZGlmZiAtLWdpdCBhL3Rlc3Qtc3ZuLWZlLmMgYi90ZXN0LXN2bi1mZS5jCmluZGV4IDMzMmE1ZjcuLjEyMGVjOTYgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3ZuLWZlLmMKKysrIGIvdGVzdC1zdm4tZmUuYwpAQCAtMjQsMTYgKzI0LDE0IEBACiAJCWRpZV9lcnJubygiY2Fubm90IG9wZW4gcHJlaW1hZ2UiKTsKIAlpZiAoYnVmZmVyX2luaXQoJmRlbHRhLCBhcmd2WzNdKSkKIAkJZGllX2Vycm5vKCJjYW5ub3Qgb3BlbiBkZWx0YSIpOwotCWlmIChzdm5kaWZmMF9hcHBseSgmZGVsdGEsIChvZmZfdCkgc3RydG91bGwoYXJndls0XSwgTlVMTCwgMCksCisJaWYgKHN2bmRpZmYwX2FwcGx5KCZkZWx0YSwgKG9mZl90KSBzdHJ0b3VtYXgoYXJndls0XSwgTlVMTCwgMCksCiAJCQkJCSZwcmVpbWFnZV92aWV3LCBzdGRvdXQpKQogCQlyZXR1cm4gMTsKIAlpZiAoYnVmZmVyX2RlaW5pdCgmcHJlaW1hZ2UpKQogCQlkaWVfZXJybm8oImNhbm5vdCBjbG9zZSBwcmVpbWFnZSIpOwogCWlmIChidWZmZXJfZGVpbml0KCZkZWx0YSkpCiAJCWRpZV9lcnJubygiY2Fubm90IGNsb3NlIGRlbHRhIik7Ci0JYnVmZmVyX3Jlc2V0KCZwcmVpbWFnZSk7CiAJc3RyYnVmX3JlbGVhc2UoJnByZWltYWdlX3ZpZXcuYnVmKTsKLQlidWZmZXJfcmVzZXQoJmRlbHRhKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNDIsNyArNDAsNyBAQAogCWlmIChhcmdjID09IDIpIHsKIAkJaWYgKHN2bmR1bXBfaW5pdChhcmd2WzFdKSkKIAkJCXJldHVybiAxOwotCQlzdm5kdW1wX3JlYWQoTlVMTCk7CisJCXN2bmR1bXBfcmVhZChOVUxMLCAicmVmcy9oZWFkcy9tYXN0ZXIiLCAicmVmcy9ub3Rlcy9zdm4vcmV2cyIpOwogCQlzdm5kdW1wX2RlaW5pdCgpOwogCQlzdm5kdW1wX3Jlc2V0KCk7CiAJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvdGVzdC13aWxkbWF0Y2guYyBiL3Rlc3Qtd2lsZG1hdGNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNlMjY0MwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qtd2lsZG1hdGNoLmMKQEAgLTAsMCArMSwxMDAgQEAKKyNpZmRlZiBVU0VfV0lMRE1BVENICisjdW5kZWYgVVNFX1dJTERNQVRDSCAgLyogV2UgbmVlZCByZWFsIGZubWF0Y2ggaW1wbGVtZW50YXRpb24gaGVyZSAqLworI2VuZGlmCisjaW5jbHVkZSAiY2FjaGUuaCIKKyNpbmNsdWRlICJ3aWxkbWF0Y2guaCIKKworc3RhdGljIGludCBwZXJmKGludCBhYywgY2hhciAqKmF2KQoreworCXN0cnVjdCB0aW1ldmFsIHR2MSwgdHYyOworCXN0cnVjdCBzdGF0IHN0OworCWludCBmZCwgaSwgbiwgZmxhZ3MxID0gMCwgZmxhZ3MyID0gMDsKKwljaGFyICpidWZmZXIsICpwOworCXVpbnQzMl90IHVzZWMxLCB1c2VjMjsKKwljb25zdCBjaGFyICpsYW5nOworCWNvbnN0IGNoYXIgKmZpbGUgPSBhdlswXTsKKwljb25zdCBjaGFyICpwYXR0ZXJuID0gYXZbMV07CisKKwlsYW5nID0gZ2V0ZW52KCJMQU5HIik7CisJaWYgKGxhbmcgJiYgc3RyY21wKGxhbmcsICJDIikpCisJCWRpZSgiUGxlYXNlIHRlc3QgaXQgb24gQyBsb2NhbGUuIik7CisKKwlpZiAoKGZkID0gb3BlbihmaWxlLCBPX1JET05MWSkpID09IC0xIHx8IGZzdGF0KGZkLCAmc3QpKQorCQlkaWVfZXJybm8oImZpbGUgb3BlbiIpOworCisJYnVmZmVyID0geG1hbGxvYyhzdC5zdF9zaXplICsgMik7CisJaWYgKHJlYWQoZmQsIGJ1ZmZlciwgc3Quc3Rfc2l6ZSkgIT0gc3Quc3Rfc2l6ZSkKKwkJZGllX2Vycm5vKCJyZWFkIik7CisKKwlidWZmZXJbc3Quc3Rfc2l6ZV0gPSAnXDAnOworCWJ1ZmZlcltzdC5zdF9zaXplICsgMV0gPSAnXDAnOworCWZvciAoaSA9IDA7IGkgPCBzdC5zdF9zaXplOyBpKyspCisJCWlmIChidWZmZXJbaV0gPT0gJ1xuJykKKwkJCWJ1ZmZlcltpXSA9ICdcMCc7CisKKwluID0gYXRvaShhdlsyXSk7CisJaWYgKGF2WzNdICYmICFzdHJjbXAoYXZbM10sICJwYXRobmFtZSIpKSB7CisJCWZsYWdzMSA9IFdNX1BBVEhOQU1FOworCQlmbGFnczIgPSBGTk1fUEFUSE5BTUU7CisJfQorCisJZ2V0dGltZW9mZGF5KCZ0djEsIE5VTEwpOworCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJZm9yIChwID0gYnVmZmVyOyAqcDsgcCArPSBzdHJsZW4ocCkgKyAxKQorCQkJd2lsZG1hdGNoKHBhdHRlcm4sIHAsIGZsYWdzMSwgTlVMTCk7CisJfQorCWdldHRpbWVvZmRheSgmdHYyLCBOVUxMKTsKKworCXVzZWMxID0gKHVpbnQzMl90KXR2Mi50dl9zZWMgKiAxMDAwMDAwICsgdHYyLnR2X3VzZWM7CisJdXNlYzEgLT0gKHVpbnQzMl90KXR2MS50dl9zZWMgKiAxMDAwMDAwICsgdHYxLnR2X3VzZWM7CisJcHJpbnRmKCJ3aWxkbWF0Y2ggJWRzICVkdXNcbiIsCisJICAgICAgIChpbnQpKHVzZWMxIC8gMTAwMDAwMCksCisJICAgICAgIChpbnQpKHVzZWMxICUgMTAwMDAwMCkpOworCisJZ2V0dGltZW9mZGF5KCZ0djEsIE5VTEwpOworCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJZm9yIChwID0gYnVmZmVyOyAqcDsgcCArPSBzdHJsZW4ocCkgKyAxKQorCQkJZm5tYXRjaChwYXR0ZXJuLCBwLCBmbGFnczIpOworCX0KKwlnZXR0aW1lb2ZkYXkoJnR2MiwgTlVMTCk7CisKKwl1c2VjMiA9ICh1aW50MzJfdCl0djIudHZfc2VjICogMTAwMDAwMCArIHR2Mi50dl91c2VjOworCXVzZWMyIC09ICh1aW50MzJfdCl0djEudHZfc2VjICogMTAwMDAwMCArIHR2MS50dl91c2VjOworCWlmICh1c2VjMiA+IHVzZWMxKQorCQlwcmludGYoImZubWF0Y2ggICAlZHMgJWR1cyBvciAlLjJmJSUgc2xvd2VyXG4iLAorCQkgICAgICAgKGludCkoKHVzZWMyIC0gdXNlYzEpIC8gMTAwMDAwMCksCisJCSAgICAgICAoaW50KSgodXNlYzIgLSB1c2VjMSkgJSAxMDAwMDAwKSwKKwkJICAgICAgIChmbG9hdCkodXNlYzIgLSB1c2VjMSkgLyB1c2VjMSAqIDEwMCk7CisJZWxzZQorCQlwcmludGYoImZubWF0Y2ggICAlZHMgJWR1cyBvciAlLjJmJSUgZmFzdGVyXG4iLAorCQkgICAgICAgKGludCkoKHVzZWMxIC0gdXNlYzIpIC8gMTAwMDAwMCksCisJCSAgICAgICAoaW50KSgodXNlYzEgLSB1c2VjMikgJSAxMDAwMDAwKSwKKwkJICAgICAgIChmbG9hdCkodXNlYzEgLSB1c2VjMikgLyB1c2VjMSAqIDEwMCk7CisJcmV0dXJuIDA7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpbnQgaTsKKworCWlmICghc3RyY21wKGFyZ3ZbMV0sICJwZXJmIikpCisJCXJldHVybiBwZXJmKGFyZ2MgLSAyLCBhcmd2ICsgMik7CisKKwlmb3IgKGkgPSAyOyBpIDwgYXJnYzsgaSsrKSB7CisJCWlmIChhcmd2W2ldWzBdID09ICcvJykKKwkJCWRpZSgiRm9yd2FyZCBzbGFzaCBpcyBub3QgYWxsb3dlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuIgorCQkJICAgICJwYXR0ZXJuIGJlY2F1c2UgV2luZG93cyBkb2VzIG5vdCBsaWtlIGl0LiBVc2UgYFhYWC8nIGluc3RlYWQuIik7CisJCWVsc2UgaWYgKCFzdHJuY21wKGFyZ3ZbaV0sICJYWFgvIiwgNCkpCisJCQlhcmd2W2ldICs9IDM7CisJfQorCWlmICghc3RyY21wKGFyZ3ZbMV0sICJ3aWxkbWF0Y2giKSkKKwkJcmV0dXJuICEhd2lsZG1hdGNoKGFyZ3ZbM10sIGFyZ3ZbMl0sIFdNX1BBVEhOQU1FLCBOVUxMKTsKKwllbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJpd2lsZG1hdGNoIikpCisJCXJldHVybiAhIXdpbGRtYXRjaChhcmd2WzNdLCBhcmd2WzJdLCBXTV9QQVRITkFNRSB8IFdNX0NBU0VGT0xELCBOVUxMKTsKKwllbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJwYXRobWF0Y2giKSkKKwkJcmV0dXJuICEhd2lsZG1hdGNoKGFyZ3ZbM10sIGFyZ3ZbMl0sIDAsIE5VTEwpOworCWVsc2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgImZubWF0Y2giKSkKKwkJcmV0dXJuICEhZm5tYXRjaChhcmd2WzNdLCBhcmd2WzJdLCBGTk1fUEFUSE5BTUUpOworCWVsc2UKKwkJcmV0dXJuIDE7Cit9CmRpZmYgLS1naXQgYS90cmFjZS5jIGIvdHJhY2UuYwppbmRleCBkOTUzNDE2Li41ZWMwZTNiIDEwMDY0NAotLS0gYS90cmFjZS5jCisrKyBiL3RyYWNlLmMKQEAgLTYyLDcgKzYyLDcgQEAKIHN0YXRpYyBjb25zdCBjaGFyIGVycl9tc2dbXSA9ICJDb3VsZCBub3QgdHJhY2UgaW50byBmZCBnaXZlbiBieSAiCiAJIkdJVF9UUkFDRSBlbnZpcm9ubWVudCB2YXJpYWJsZSI7CiAKLXZvaWQgdHJhY2VfdnByaW50Zihjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCkKK3N0YXRpYyB2b2lkIHRyYWNlX3ZwcmludGYoY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXApCiB7CiAJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIApkaWZmIC0tZ2l0IGEvdHJhbnNwb3J0LWhlbHBlci5jIGIvdHJhbnNwb3J0LWhlbHBlci5jCmluZGV4IDYxYzkyOGYuLjUyMmQ3OTEgMTAwNjQ0Ci0tLSBhL3RyYW5zcG9ydC1oZWxwZXIuYworKysgYi90cmFuc3BvcnQtaGVscGVyLmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlICJzdHJpbmctbGlzdC5oIgogI2luY2x1ZGUgInRocmVhZC11dGlscy5oIgogI2luY2x1ZGUgInNpZ2NoYWluLmgiCisjaW5jbHVkZSAiYXJndi1hcnJheS5oIgogCiBzdGF0aWMgaW50IGRlYnVnOwogCkBAIC0xOSwxMCArMjAsMTIgQEAKIAlGSUxFICpvdXQ7CiAJdW5zaWduZWQgZmV0Y2ggOiAxLAogCQlpbXBvcnQgOiAxLAorCQliaWRpX2ltcG9ydCA6IDEsCiAJCWV4cG9ydCA6IDEsCiAJCW9wdGlvbiA6IDEsCiAJCXB1c2ggOiAxLAogCQljb25uZWN0IDogMSwKKwkJc2lnbmVkX3RhZ3MgOiAxLAogCQlub19kaXNjb25uZWN0X3JlcSA6IDE7CiAJY2hhciAqZXhwb3J0X21hcmtzOwogCWNoYXIgKmltcG9ydF9tYXJrczsKQEAgLTEwMSw2ICsxMDQsNyBAQAogc3RhdGljIHN0cnVjdCBjaGlsZF9wcm9jZXNzICpnZXRfaGVscGVyKHN0cnVjdCB0cmFuc3BvcnQgKnRyYW5zcG9ydCkKIHsKIAlzdHJ1Y3QgaGVscGVyX2RhdGEgKmRhdGEgPSB0cmFuc3BvcnQtPmRhdGE7CisJc3RydWN0IGFyZ3ZfYXJyYXkgYXJndiA9IEFSR1ZfQVJSQVlfSU5JVDsKIAlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCXN0cnVjdCBjaGlsZF9wcm9jZXNzICpoZWxwZXI7CiAJY29uc3QgY2hhciAqKnJlZnNwZWNzID0gTlVMTDsKQEAgLTEyMiwxMSArMTI2LDEwIEBACiAJaGVscGVyLT5pbiA9IC0xOwogCWhlbHBlci0+b3V0ID0gLTE7CiAJaGVscGVyLT5lcnIgPSAwOwotCWhlbHBlci0+YXJndiA9IHhjYWxsb2MoNCwgc2l6ZW9mKCpoZWxwZXItPmFyZ3YpKTsKLQlzdHJidWZfYWRkZigmYnVmLCAiZ2l0LXJlbW90ZS0lcyIsIGRhdGEtPm5hbWUpOwotCWhlbHBlci0+YXJndlswXSA9IHN0cmJ1Zl9kZXRhY2goJmJ1ZiwgTlVMTCk7Ci0JaGVscGVyLT5hcmd2WzFdID0gdHJhbnNwb3J0LT5yZW1vdGUtPm5hbWU7Ci0JaGVscGVyLT5hcmd2WzJdID0gcmVtb3ZlX2V4dF9mb3JjZSh0cmFuc3BvcnQtPnVybCk7CisJYXJndl9hcnJheV9wdXNoZigmYXJndiwgImdpdC1yZW1vdGUtJXMiLCBkYXRhLT5uYW1lKTsKKwlhcmd2X2FycmF5X3B1c2goJmFyZ3YsIHRyYW5zcG9ydC0+cmVtb3RlLT5uYW1lKTsKKwlhcmd2X2FycmF5X3B1c2goJmFyZ3YsIHJlbW92ZV9leHRfZm9yY2UodHJhbnNwb3J0LT51cmwpKTsKKwloZWxwZXItPmFyZ3YgPSBhcmd2X2FycmF5X2RldGFjaCgmYXJndiwgTlVMTCk7CiAJaGVscGVyLT5naXRfY21kID0gMDsKIAloZWxwZXItPnNpbGVudF9leGVjX2ZhaWx1cmUgPSAxOwogCkBAIC0xNzgsNiArMTgxLDggQEAKIAkJCWRhdGEtPnB1c2ggPSAxOwogCQllbHNlIGlmICghc3RyY21wKGNhcG5hbWUsICJpbXBvcnQiKSkKIAkJCWRhdGEtPmltcG9ydCA9IDE7CisJCWVsc2UgaWYgKCFzdHJjbXAoY2FwbmFtZSwgImJpZGktaW1wb3J0IikpCisJCQlkYXRhLT5iaWRpX2ltcG9ydCA9IDE7CiAJCWVsc2UgaWYgKCFzdHJjbXAoY2FwbmFtZSwgImV4cG9ydCIpKQogCQkJZGF0YS0+ZXhwb3J0ID0gMTsKIAkJZWxzZSBpZiAoIWRhdGEtPnJlZnNwZWNzICYmICFwcmVmaXhjbXAoY2FwbmFtZSwgInJlZnNwZWMgIikpIHsKQEAgLTE4Nyw2ICsxOTIsOCBAQAogCQkJcmVmc3BlY3NbcmVmc3BlY19ucisrXSA9IHhzdHJkdXAoY2FwbmFtZSArIHN0cmxlbigicmVmc3BlYyAiKSk7CiAJCX0gZWxzZSBpZiAoIXN0cmNtcChjYXBuYW1lLCAiY29ubmVjdCIpKSB7CiAJCQlkYXRhLT5jb25uZWN0ID0gMTsKKwkJfSBlbHNlIGlmICghc3RyY21wKGNhcG5hbWUsICJzaWduZWQtdGFncyIpKSB7CisJCQlkYXRhLT5zaWduZWRfdGFncyA9IDE7CiAJCX0gZWxzZSBpZiAoIXByZWZpeGNtcChjYXBuYW1lLCAiZXhwb3J0LW1hcmtzICIpKSB7CiAJCQlzdHJ1Y3Qgc3RyYnVmIGFyZyA9IFNUUkJVRl9JTklUOwogCQkJc3RyYnVmX2FkZHN0cigmYXJnLCAiLS1leHBvcnQtbWFya3M9Iik7CkBAIC0yMDcsOSArMjE0LDggQEAKIAkJaW50IGk7CiAJCWRhdGEtPnJlZnNwZWNfbnIgPSByZWZzcGVjX25yOwogCQlkYXRhLT5yZWZzcGVjcyA9IHBhcnNlX2ZldGNoX3JlZnNwZWMocmVmc3BlY19uciwgcmVmc3BlY3MpOwotCQlmb3IgKGkgPSAwOyBpIDwgcmVmc3BlY19ucjsgaSsrKSB7CisJCWZvciAoaSA9IDA7IGkgPCByZWZzcGVjX25yOyBpKyspCiAJCQlmcmVlKChjaGFyICopcmVmc3BlY3NbaV0pOwotCQl9CiAJCWZyZWUocmVmc3BlY3MpOwogCX0KIAlzdHJidWZfcmVsZWFzZSgmYnVmKTsKQEAgLTI0MSw4ICsyNDcsNyBAQAogCQljbG9zZShkYXRhLT5oZWxwZXItPm91dCk7CiAJCWZjbG9zZShkYXRhLT5vdXQpOwogCQlyZXMgPSBmaW5pc2hfY29tbWFuZChkYXRhLT5oZWxwZXIpOwotCQlmcmVlKChjaGFyICopZGF0YS0+aGVscGVyLT5hcmd2WzBdKTsKLQkJZnJlZShkYXRhLT5oZWxwZXItPmFyZ3YpOworCQlhcmd2X2FycmF5X2ZyZWVfZGV0YWNoZWQoZGF0YS0+aGVscGVyLT5hcmd2KTsKIAkJZnJlZShkYXRhLT5oZWxwZXIpOwogCQlkYXRhLT5oZWxwZXIgPSBOVUxMOwogCX0KQEAgLTM3NiwxNCArMzgxLDIzIEBACiBzdGF0aWMgaW50IGdldF9pbXBvcnRlcihzdHJ1Y3QgdHJhbnNwb3J0ICp0cmFuc3BvcnQsIHN0cnVjdCBjaGlsZF9wcm9jZXNzICpmYXN0aW1wb3J0KQogewogCXN0cnVjdCBjaGlsZF9wcm9jZXNzICpoZWxwZXIgPSBnZXRfaGVscGVyKHRyYW5zcG9ydCk7CisJc3RydWN0IGhlbHBlcl9kYXRhICpkYXRhID0gdHJhbnNwb3J0LT5kYXRhOworCXN0cnVjdCBhcmd2X2FycmF5IGFyZ3YgPSBBUkdWX0FSUkFZX0lOSVQ7CisJaW50IGNhdF9ibG9iX2ZkLCBjb2RlOwogCW1lbXNldChmYXN0aW1wb3J0LCAwLCBzaXplb2YoKmZhc3RpbXBvcnQpKTsKIAlmYXN0aW1wb3J0LT5pbiA9IGhlbHBlci0+b3V0OwotCWZhc3RpbXBvcnQtPmFyZ3YgPSB4Y2FsbG9jKDUsIHNpemVvZigqZmFzdGltcG9ydC0+YXJndikpOwotCWZhc3RpbXBvcnQtPmFyZ3ZbMF0gPSAiZmFzdC1pbXBvcnQiOwotCWZhc3RpbXBvcnQtPmFyZ3ZbMV0gPSAiLS1xdWlldCI7CisJYXJndl9hcnJheV9wdXNoKCZhcmd2LCAiZmFzdC1pbXBvcnQiKTsKKwlhcmd2X2FycmF5X3B1c2goJmFyZ3YsIGRlYnVnID8gIi0tc3RhdHMiIDogIi0tcXVpZXQiKTsKIAorCWlmIChkYXRhLT5iaWRpX2ltcG9ydCkgeworCQljYXRfYmxvYl9mZCA9IHhkdXAoaGVscGVyLT5pbik7CisJCWFyZ3ZfYXJyYXlfcHVzaGYoJmFyZ3YsICItLWNhdC1ibG9iLWZkPSVkIiwgY2F0X2Jsb2JfZmQpOworCX0KKwlmYXN0aW1wb3J0LT5hcmd2ID0gYXJndi5hcmd2OwogCWZhc3RpbXBvcnQtPmdpdF9jbWQgPSAxOwotCXJldHVybiBzdGFydF9jb21tYW5kKGZhc3RpbXBvcnQpOworCisJY29kZSA9IHN0YXJ0X2NvbW1hbmQoZmFzdGltcG9ydCk7CisJcmV0dXJuIGNvZGU7CiB9CiAKIHN0YXRpYyBpbnQgZ2V0X2V4cG9ydGVyKHN0cnVjdCB0cmFuc3BvcnQgKnRyYW5zcG9ydCwKQEAgLTM5OCw5ICs0MTIsMTEgQEAKIAkvKiB3ZSBuZWVkIHRvIGR1cGxpY2F0ZSBoZWxwZXItPmluIGJlY2F1c2Ugd2Ugd2FudCB0byB1c2UgaXQgYWZ0ZXIKIAkgKiBmYXN0ZXhwb3J0IGlzIGRvbmUgd2l0aCBpdC4gKi8KIAlmYXN0ZXhwb3J0LT5vdXQgPSBkdXAoaGVscGVyLT5pbik7Ci0JZmFzdGV4cG9ydC0+YXJndiA9IHhjYWxsb2MoNSArIHJldmxpc3RfYXJncy0+bnIsIHNpemVvZigqZmFzdGV4cG9ydC0+YXJndikpOworCWZhc3RleHBvcnQtPmFyZ3YgPSB4Y2FsbG9jKDYgKyByZXZsaXN0X2FyZ3MtPm5yLCBzaXplb2YoKmZhc3RleHBvcnQtPmFyZ3YpKTsKIAlmYXN0ZXhwb3J0LT5hcmd2W2FyZ2MrK10gPSAiZmFzdC1leHBvcnQiOwogCWZhc3RleHBvcnQtPmFyZ3ZbYXJnYysrXSA9ICItLXVzZS1kb25lLWZlYXR1cmUiOworCWZhc3RleHBvcnQtPmFyZ3ZbYXJnYysrXSA9IGRhdGEtPnNpZ25lZF90YWdzID8KKwkJIi0tc2lnbmVkLXRhZ3M9dmVyYmF0aW0iIDogIi0tc2lnbmVkLXRhZ3M9d2Fybi1zdHJpcCI7CiAJaWYgKGRhdGEtPmV4cG9ydF9tYXJrcykKIAkJZmFzdGV4cG9ydC0+YXJndlthcmdjKytdID0gZGF0YS0+ZXhwb3J0X21hcmtzOwogCWlmIChkYXRhLT5pbXBvcnRfbWFya3MpCkBAIC00MzgsMTIgKzQ1NCwzMyBAQAogCX0KIAogCXdyaXRlX2NvbnN0YW50KGRhdGEtPmhlbHBlci0+aW4sICJcbiIpOworCS8qCisJICogcmVtb3RlLWhlbHBlcnMgdGhhdCBhZHZlcnRpc2UgdGhlIGJpZGktaW1wb3J0IGNhcGFiaWxpdHkgYXJlIHJlcXVpcmVkIHRvCisJICogYnVmZmVyIHRoZSBjb21wbGV0ZSBiYXRjaCBvZiBpbXBvcnQgY29tbWFuZHMgdW50aWwgdGhpcyBuZXdsaW5lIGJlZm9yZQorCSAqIHNlbmRpbmcgZGF0YSB0byBmYXN0LWltcG9ydC4KKwkgKiBUaGVzZSBoZWxwZXJzIHJlYWQgYmFjayBkYXRhIGZyb20gZmFzdC1pbXBvcnQgb24gdGhlaXIgc3RkaW4sIHdoaWNoIGNvdWxkCisJICogYmUgbWl4ZWQgd2l0aCBpbXBvcnQgY29tbWFuZHMsIG90aGVyd2lzZS4KKwkgKi8KIAogCWlmIChmaW5pc2hfY29tbWFuZCgmZmFzdGltcG9ydCkpCiAJCWRpZSgiRXJyb3Igd2hpbGUgcnVubmluZyBmYXN0LWltcG9ydCIpOwotCWZyZWUoZmFzdGltcG9ydC5hcmd2KTsKLQlmYXN0aW1wb3J0LmFyZ3YgPSBOVUxMOworCWFyZ3ZfYXJyYXlfZnJlZV9kZXRhY2hlZChmYXN0aW1wb3J0LmFyZ3YpOwogCisJLyoKKwkgKiBUaGUgZmFzdC1pbXBvcnQgc3RyZWFtIG9mIGEgcmVtb3RlIGhlbHBlciB0aGF0IGFkdmVydGlzZXMKKwkgKiB0aGUgInJlZnNwZWMiIGNhcGFiaWxpdHkgd3JpdGVzIHRvIHRoZSByZWZzIG5hbWVkIGFmdGVyIHRoZQorCSAqIHJpZ2h0IGhhbmQgc2lkZSBvZiB0aGUgZmlyc3QgcmVmc3BlYyBtYXRjaGluZyBlYWNoIHJlZiB3ZQorCSAqIHdlcmUgZmV0Y2hpbmcuCisJICoKKwkgKiAoSWYgbm8gInJlZnNwZWMiIGNhcGFiaWxpdHkgd2FzIHNwZWNpZmllZCwgZm9yIGhpc3RvcmljYWwKKwkgKiByZWFzb25zIHdlIGRlZmF1bHQgdG8gKjoqLikKKwkgKgorCSAqIFN0b3JlIHRoZSByZXN1bHQgaW4gdG9fZmV0Y2hbaV0ub2xkX3NoYTEuICBDYWxsZXJzIHN1Y2gKKwkgKiBhcyAiZ2l0IGZldGNoIiBjYW4gdXNlIHRoZSB2YWx1ZSB0byB3cml0ZSBmZWVkYmFjayB0byB0aGUKKwkgKiB0ZXJtaW5hbCwgcG9wdWxhdGUgRkVUQ0hfSEVBRCwgYW5kIGRldGVybWluZSB3aGF0IG5ldyB2YWx1ZQorCSAqIHNob3VsZCBiZSB3cml0dGVuIHRvIHBlZXJfcmVmIGlmIHRoZSB1cGRhdGUgaXMgYQorCSAqIGZhc3QtZm9yd2FyZCBvciB0aGlzIGlzIGEgZm9yY2VkIHVwZGF0ZS4KKwkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnJfaGVhZHM7IGkrKykgewogCQljaGFyICpwcml2YXRlOwogCQlwb3NuID0gdG9fZmV0Y2hbaV07CkBAIC02MjgsNiArNjY1LDIxIEBACiAJCQlmcmVlKG1zZyk7CiAJCQltc2cgPSBOVUxMOwogCQl9CisJCWVsc2UgaWYgKCFzdHJjbXAobXNnLCAiYWxyZWFkeSBleGlzdHMiKSkgeworCQkJc3RhdHVzID0gUkVGX1NUQVRVU19SRUpFQ1RfQUxSRUFEWV9FWElTVFM7CisJCQlmcmVlKG1zZyk7CisJCQltc2cgPSBOVUxMOworCQl9CisJCWVsc2UgaWYgKCFzdHJjbXAobXNnLCAiZmV0Y2ggZmlyc3QiKSkgeworCQkJc3RhdHVzID0gUkVGX1NUQVRVU19SRUpFQ1RfRkVUQ0hfRklSU1Q7CisJCQlmcmVlKG1zZyk7CisJCQltc2cgPSBOVUxMOworCQl9CisJCWVsc2UgaWYgKCFzdHJjbXAobXNnLCAibmVlZHMgZm9yY2UiKSkgeworCQkJc3RhdHVzID0gUkVGX1NUQVRVU19SRUpFQ1RfTkVFRFNfRk9SQ0U7CisJCQlmcmVlKG1zZyk7CisJCQltc2cgPSBOVUxMOworCQl9CiAJfQogCiAJaWYgKCpyZWYpCkBAIC02ODcsNiArNzM5LDcgQEAKIAkJLyogQ2hlY2sgZm9yIHN0YXR1c2VzIHNldCBieSBzZXRfcmVmX3N0YXR1c19mb3JfcHVzaCgpICovCiAJCXN3aXRjaCAocmVmLT5zdGF0dXMpIHsKIAkJY2FzZSBSRUZfU1RBVFVTX1JFSkVDVF9OT05GQVNURk9SV0FSRDoKKwkJY2FzZSBSRUZfU1RBVFVTX1JFSkVDVF9BTFJFQURZX0VYSVNUUzoKIAkJY2FzZSBSRUZfU1RBVFVTX1VQVE9EQVRFOgogCQkJY29udGludWU7CiAJCWRlZmF1bHQ6CkBAIC03NTIsNiArODA1LDcgQEAKIAkJaWYgKHByaXZhdGUgJiYgIWdldF9zaGExKHByaXZhdGUsIHNoYTEpKSB7CiAJCQlzdHJidWZfYWRkZigmYnVmLCAiXiVzIiwgcHJpdmF0ZSk7CiAJCQlzdHJpbmdfbGlzdF9hcHBlbmQoJnJldmxpc3RfYXJncywgc3RyYnVmX2RldGFjaCgmYnVmLCBOVUxMKSk7CisJCQloYXNoY3B5KHJlZi0+b2xkX3NoYTEsIHNoYTEpOwogCQl9CiAJCWZyZWUocHJpdmF0ZSk7CiAKQEAgLTk0Miw3ICs5OTYsNyBAQAogCWludCBzcmNfaXNfc29jazsKIAkvKiBJcyBkZXN0aW5hdGlvbiBzb2NrZXQ/ICovCiAJaW50IGRlc3RfaXNfc29jazsKLQkvKiBUcmFuc2ZlciBzdGF0ZSAoVFJBTlNGRVJJTkcvRkxVU0hJTkcvRklOSVNIRUQpICovCisJLyogVHJhbnNmZXIgc3RhdGUgKFRSQU5TRkVSUklORy9GTFVTSElORy9GSU5JU0hFRCkgKi8KIAlpbnQgc3RhdGU7CiAJLyogQnVmZmVyLiAqLwogCWNoYXIgYnVmW0JVRkZFUlNJWkVdOwpkaWZmIC0tZ2l0IGEvdHJhbnNwb3J0LmMgYi90cmFuc3BvcnQuYwppbmRleCAxODExYjUwLi5iYTVkOGFmIDEwMDY0NAotLS0gYS90cmFuc3BvcnQuYworKysgYi90cmFuc3BvcnQuYwpAQCAtMTA2LDcgKzEwNiw4IEBACiAJCXJldHVybjsKIAogCWZvciAoOzspIHsKLQkJaW50IGNtcCA9IGNtcCwgbGVuOworCQlpbnQgY21wID0gMDsgLyogYXNzaWduZWQgYmVmb3JlIHVzZWQgKi8KKwkJaW50IGxlbjsKIAogCQlpZiAoIWZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGYpKSB7CiAJCQlmY2xvc2UoZik7CkBAIC01MDcsNyArNTA4LDcgQEAKIAlzdHJ1Y3QgcmVmICpyZWZzOwogCiAJY29ubmVjdF9zZXR1cCh0cmFuc3BvcnQsIGZvcl9wdXNoLCAwKTsKLQlnZXRfcmVtb3RlX2hlYWRzKGRhdGEtPmZkWzBdLCAmcmVmcywKKwlnZXRfcmVtb3RlX2hlYWRzKGRhdGEtPmZkWzBdLCBOVUxMLCAwLCAmcmVmcywKIAkJCSBmb3JfcHVzaCA/IFJFRl9OT1JNQUwgOiAwLCAmZGF0YS0+ZXh0cmFfaGF2ZSk7CiAJZGF0YS0+Z290X3JlbW90ZV9oZWFkcyA9IDE7CiAKQEAgLTUxOCwxMiArNTE5LDkgQEAKIAkJCSAgICAgICBpbnQgbnJfaGVhZHMsIHN0cnVjdCByZWYgKip0b19mZXRjaCkKIHsKIAlzdHJ1Y3QgZ2l0X3RyYW5zcG9ydF9kYXRhICpkYXRhID0gdHJhbnNwb3J0LT5kYXRhOwotCWNoYXIgKipoZWFkcyA9IHhtYWxsb2MobnJfaGVhZHMgKiBzaXplb2YoKmhlYWRzKSk7Ci0JY2hhciAqKm9yaWdoID0geG1hbGxvYyhucl9oZWFkcyAqIHNpemVvZigqb3JpZ2gpKTsKIAljb25zdCBzdHJ1Y3QgcmVmICpyZWZzOwogCWNoYXIgKmRlc3QgPSB4c3RyZHVwKHRyYW5zcG9ydC0+dXJsKTsKIAlzdHJ1Y3QgZmV0Y2hfcGFja19hcmdzIGFyZ3M7Ci0JaW50IGk7CiAJc3RydWN0IHJlZiAqcmVmc190bXAgPSBOVUxMOwogCiAJbWVtc2V0KCZhcmdzLCAwLCBzaXplb2YoYXJncykpOwpAQCAtNTM3LDE4ICs1MzUsMTYgQEAKIAlhcmdzLm5vX3Byb2dyZXNzID0gIXRyYW5zcG9ydC0+cHJvZ3Jlc3M7CiAJYXJncy5kZXB0aCA9IGRhdGEtPm9wdGlvbnMuZGVwdGg7CiAKLQlmb3IgKGkgPSAwOyBpIDwgbnJfaGVhZHM7IGkrKykKLQkJb3JpZ2hbaV0gPSBoZWFkc1tpXSA9IHhzdHJkdXAodG9fZmV0Y2hbaV0tPm5hbWUpOwotCiAJaWYgKCFkYXRhLT5nb3RfcmVtb3RlX2hlYWRzKSB7CiAJCWNvbm5lY3Rfc2V0dXAodHJhbnNwb3J0LCAwLCAwKTsKLQkJZ2V0X3JlbW90ZV9oZWFkcyhkYXRhLT5mZFswXSwgJnJlZnNfdG1wLCAwLCBOVUxMKTsKKwkJZ2V0X3JlbW90ZV9oZWFkcyhkYXRhLT5mZFswXSwgTlVMTCwgMCwgJnJlZnNfdG1wLCAwLCBOVUxMKTsKIAkJZGF0YS0+Z290X3JlbW90ZV9oZWFkcyA9IDE7CiAJfQogCiAJcmVmcyA9IGZldGNoX3BhY2soJmFyZ3MsIGRhdGEtPmZkLCBkYXRhLT5jb25uLAogCQkJICByZWZzX3RtcCA/IHJlZnNfdG1wIDogdHJhbnNwb3J0LT5yZW1vdGVfcmVmcywKLQkJCSAgZGVzdCwgbnJfaGVhZHMsIGhlYWRzLCAmdHJhbnNwb3J0LT5wYWNrX2xvY2tmaWxlKTsKKwkJCSAgZGVzdCwgdG9fZmV0Y2gsIG5yX2hlYWRzLAorCQkJICAmdHJhbnNwb3J0LT5wYWNrX2xvY2tmaWxlKTsKIAljbG9zZShkYXRhLT5mZFswXSk7CiAJY2xvc2UoZGF0YS0+ZmRbMV0pOwogCWlmIChmaW5pc2hfY29ubmVjdChkYXRhLT5jb25uKSkKQEAgLTU1OCwxMCArNTU0LDYgQEAKIAogCWZyZWVfcmVmcyhyZWZzX3RtcCk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgbnJfaGVhZHM7IGkrKykKLQkJZnJlZShvcmlnaFtpXSk7Ci0JZnJlZShvcmlnaCk7Ci0JZnJlZShoZWFkcyk7CiAJZnJlZShkZXN0KTsKIAlyZXR1cm4gKHJlZnMgPyAwIDogLTEpOwogfQpAQCAtNjYzLDcgKzY1NSw3IEBACiAJCWNvbnN0IGNoYXIgKm1zZzsKIAogCQlzdHJjcHkocXVpY2tyZWYsIHN0YXR1c19hYmJyZXYocmVmLT5vbGRfc2hhMSkpOwotCQlpZiAocmVmLT5ub25mYXN0Zm9yd2FyZCkgeworCQlpZiAocmVmLT5mb3JjZWRfdXBkYXRlKSB7CiAJCQlzdHJjYXQocXVpY2tyZWYsICIuLi4iKTsKIAkJCXR5cGUgPSAnKyc7CiAJCQltc2cgPSAiZm9yY2VkIHVwZGF0ZSI7CkBAIC02OTksNiArNjkxLDE4IEBACiAJCXByaW50X3JlZl9zdGF0dXMoJyEnLCAiW3JlamVjdGVkXSIsIHJlZiwgcmVmLT5wZWVyX3JlZiwKIAkJCQkJCSAibm9uLWZhc3QtZm9yd2FyZCIsIHBvcmNlbGFpbik7CiAJCWJyZWFrOworCWNhc2UgUkVGX1NUQVRVU19SRUpFQ1RfQUxSRUFEWV9FWElTVFM6CisJCXByaW50X3JlZl9zdGF0dXMoJyEnLCAiW3JlamVjdGVkXSIsIHJlZiwgcmVmLT5wZWVyX3JlZiwKKwkJCQkJCSAiYWxyZWFkeSBleGlzdHMiLCBwb3JjZWxhaW4pOworCQlicmVhazsKKwljYXNlIFJFRl9TVEFUVVNfUkVKRUNUX0ZFVENIX0ZJUlNUOgorCQlwcmludF9yZWZfc3RhdHVzKCchJywgIltyZWplY3RlZF0iLCByZWYsIHJlZi0+cGVlcl9yZWYsCisJCQkJCQkgImZldGNoIGZpcnN0IiwgcG9yY2VsYWluKTsKKwkJYnJlYWs7CisJY2FzZSBSRUZfU1RBVFVTX1JFSkVDVF9ORUVEU19GT1JDRToKKwkJcHJpbnRfcmVmX3N0YXR1cygnIScsICJbcmVqZWN0ZWRdIiwgcmVmLCByZWYtPnBlZXJfcmVmLAorCQkJCQkJICJuZWVkcyBmb3JjZSIsIHBvcmNlbGFpbik7CisJCWJyZWFrOwogCWNhc2UgUkVGX1NUQVRVU19SRU1PVEVfUkVKRUNUOgogCQlwcmludF9yZWZfc3RhdHVzKCchJywgIltyZW1vdGUgcmVqZWN0ZWRdIiwgcmVmLAogCQkJCQkJIHJlZi0+ZGVsZXRpb24gPyBOVUxMIDogcmVmLT5wZWVyX3JlZiwKQEAgLTcxOCw3ICs3MjIsNyBAQAogfQogCiB2b2lkIHRyYW5zcG9ydF9wcmludF9wdXNoX3N0YXR1cyhjb25zdCBjaGFyICpkZXN0LCBzdHJ1Y3QgcmVmICpyZWZzLAotCQkJCSAgaW50IHZlcmJvc2UsIGludCBwb3JjZWxhaW4sIGludCAqbm9uZmFzdGZvcndhcmQpCisJCQkJICBpbnQgdmVyYm9zZSwgaW50IHBvcmNlbGFpbiwgdW5zaWduZWQgaW50ICpyZWplY3RfcmVhc29ucykKIHsKIAlzdHJ1Y3QgcmVmICpyZWY7CiAJaW50IG4gPSAwOwpAQCAtNzM3LDE4ICs3NDEsMjMgQEAKIAkJaWYgKHJlZi0+c3RhdHVzID09IFJFRl9TVEFUVVNfT0spCiAJCQluICs9IHByaW50X29uZV9wdXNoX3N0YXR1cyhyZWYsIGRlc3QsIG4sIHBvcmNlbGFpbik7CiAKLQkqbm9uZmFzdGZvcndhcmQgPSAwOworCSpyZWplY3RfcmVhc29ucyA9IDA7CiAJZm9yIChyZWYgPSByZWZzOyByZWY7IHJlZiA9IHJlZi0+bmV4dCkgewogCQlpZiAocmVmLT5zdGF0dXMgIT0gUkVGX1NUQVRVU19OT05FICYmCiAJCSAgICByZWYtPnN0YXR1cyAhPSBSRUZfU1RBVFVTX1VQVE9EQVRFICYmCiAJCSAgICByZWYtPnN0YXR1cyAhPSBSRUZfU1RBVFVTX09LKQogCQkJbiArPSBwcmludF9vbmVfcHVzaF9zdGF0dXMocmVmLCBkZXN0LCBuLCBwb3JjZWxhaW4pOwotCQlpZiAocmVmLT5zdGF0dXMgPT0gUkVGX1NUQVRVU19SRUpFQ1RfTk9ORkFTVEZPUldBUkQgJiYKLQkJICAgICpub25mYXN0Zm9yd2FyZCAhPSBOT05fRkZfSEVBRCkgewotCQkJaWYgKCFzdHJjbXAoaGVhZCwgcmVmLT5uYW1lKSkKLQkJCQkqbm9uZmFzdGZvcndhcmQgPSBOT05fRkZfSEVBRDsKKwkJaWYgKHJlZi0+c3RhdHVzID09IFJFRl9TVEFUVVNfUkVKRUNUX05PTkZBU1RGT1JXQVJEKSB7CisJCQlpZiAoaGVhZCAhPSBOVUxMICYmICFzdHJjbXAoaGVhZCwgcmVmLT5uYW1lKSkKKwkJCQkqcmVqZWN0X3JlYXNvbnMgfD0gUkVKRUNUX05PTl9GRl9IRUFEOwogCQkJZWxzZQotCQkJCSpub25mYXN0Zm9yd2FyZCA9IE5PTl9GRl9PVEhFUjsKKwkJCQkqcmVqZWN0X3JlYXNvbnMgfD0gUkVKRUNUX05PTl9GRl9PVEhFUjsKKwkJfSBlbHNlIGlmIChyZWYtPnN0YXR1cyA9PSBSRUZfU1RBVFVTX1JFSkVDVF9BTFJFQURZX0VYSVNUUykgeworCQkJKnJlamVjdF9yZWFzb25zIHw9IFJFSkVDVF9BTFJFQURZX0VYSVNUUzsKKwkJfSBlbHNlIGlmIChyZWYtPnN0YXR1cyA9PSBSRUZfU1RBVFVTX1JFSkVDVF9GRVRDSF9GSVJTVCkgeworCQkJKnJlamVjdF9yZWFzb25zIHw9IFJFSkVDVF9GRVRDSF9GSVJTVDsKKwkJfSBlbHNlIGlmIChyZWYtPnN0YXR1cyA9PSBSRUZfU1RBVFVTX1JFSkVDVF9ORUVEU19GT1JDRSkgeworCQkJKnJlamVjdF9yZWFzb25zIHw9IFJFSkVDVF9ORUVEU19GT1JDRTsKIAkJfQogCX0KIH0KQEAgLTc4Niw3ICs3OTUsNyBAQAogCQlzdHJ1Y3QgcmVmICp0bXBfcmVmczsKIAkJY29ubmVjdF9zZXR1cCh0cmFuc3BvcnQsIDEsIDApOwogCi0JCWdldF9yZW1vdGVfaGVhZHMoZGF0YS0+ZmRbMF0sICZ0bXBfcmVmcywgUkVGX05PUk1BTCwgTlVMTCk7CisJCWdldF9yZW1vdGVfaGVhZHMoZGF0YS0+ZmRbMF0sIE5VTEwsIDAsICZ0bXBfcmVmcywgUkVGX05PUk1BTCwgTlVMTCk7CiAJCWRhdGEtPmdvdF9yZW1vdGVfaGVhZHMgPSAxOwogCX0KIApAQCAtMTAzMywxMSArMTA0Miw2NyBAQAogCWRpZSgiQWJvcnRpbmcuIik7CiB9CiAKK3N0YXRpYyBpbnQgcnVuX3ByZV9wdXNoX2hvb2soc3RydWN0IHRyYW5zcG9ydCAqdHJhbnNwb3J0LAorCQkJICAgICBzdHJ1Y3QgcmVmICpyZW1vdGVfcmVmcykKK3sKKwlpbnQgcmV0ID0gMCwgeDsKKwlzdHJ1Y3QgcmVmICpyOworCXN0cnVjdCBjaGlsZF9wcm9jZXNzIHByb2M7CisJc3RydWN0IHN0cmJ1ZiBidWY7CisJY29uc3QgY2hhciAqYXJndls0XTsKKworCWlmICghKGFyZ3ZbMF0gPSBmaW5kX2hvb2soInByZS1wdXNoIikpKQorCQlyZXR1cm4gMDsKKworCWFyZ3ZbMV0gPSB0cmFuc3BvcnQtPnJlbW90ZS0+bmFtZTsKKwlhcmd2WzJdID0gdHJhbnNwb3J0LT51cmw7CisJYXJndlszXSA9IE5VTEw7CisKKwltZW1zZXQoJnByb2MsIDAsIHNpemVvZihwcm9jKSk7CisJcHJvYy5hcmd2ID0gYXJndjsKKwlwcm9jLmluID0gLTE7CisKKwlpZiAoc3RhcnRfY29tbWFuZCgmcHJvYykpIHsKKwkJZmluaXNoX2NvbW1hbmQoJnByb2MpOworCQlyZXR1cm4gLTE7CisJfQorCisJc3RyYnVmX2luaXQoJmJ1ZiwgMjU2KTsKKworCWZvciAociA9IHJlbW90ZV9yZWZzOyByOyByID0gci0+bmV4dCkgeworCQlpZiAoIXItPnBlZXJfcmVmKSBjb250aW51ZTsKKwkJaWYgKHItPnN0YXR1cyA9PSBSRUZfU1RBVFVTX1JFSkVDVF9OT05GQVNURk9SV0FSRCkgY29udGludWU7CisJCWlmIChyLT5zdGF0dXMgPT0gUkVGX1NUQVRVU19VUFRPREFURSkgY29udGludWU7CisKKwkJc3RyYnVmX3Jlc2V0KCZidWYpOworCQlzdHJidWZfYWRkZiggJmJ1ZiwgIiVzICVzICVzICVzXG4iLAorCQkJIHItPnBlZXJfcmVmLT5uYW1lLCBzaGExX3RvX2hleChyLT5uZXdfc2hhMSksCisJCQkgci0+bmFtZSwgc2hhMV90b19oZXgoci0+b2xkX3NoYTEpKTsKKworCQlpZiAod3JpdGVfaW5fZnVsbChwcm9jLmluLCBidWYuYnVmLCBidWYubGVuKSAhPSBidWYubGVuKSB7CisJCQlyZXQgPSAtMTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CisKKwl4ID0gY2xvc2UocHJvYy5pbik7CisJaWYgKCFyZXQpCisJCXJldCA9IHg7CisKKwl4ID0gZmluaXNoX2NvbW1hbmQoJnByb2MpOworCWlmICghcmV0KQorCQlyZXQgPSB4OworCisJcmV0dXJuIHJldDsKK30KKwogaW50IHRyYW5zcG9ydF9wdXNoKHN0cnVjdCB0cmFuc3BvcnQgKnRyYW5zcG9ydCwKIAkJICAgaW50IHJlZnNwZWNfbnIsIGNvbnN0IGNoYXIgKipyZWZzcGVjLCBpbnQgZmxhZ3MsCi0JCSAgIGludCAqbm9uZmFzdGZvcndhcmQpCisJCSAgIHVuc2lnbmVkIGludCAqcmVqZWN0X3JlYXNvbnMpCiB7Ci0JKm5vbmZhc3Rmb3J3YXJkID0gMDsKKwkqcmVqZWN0X3JlYXNvbnMgPSAwOwogCXRyYW5zcG9ydF92ZXJpZnlfcmVtb3RlX25hbWVzKHJlZnNwZWNfbnIsIHJlZnNwZWMpOwogCiAJaWYgKHRyYW5zcG9ydC0+cHVzaCkgewpAQCAtMTA2Myw2ICsxMTI4LDggQEAKIAkJCW1hdGNoX2ZsYWdzIHw9IE1BVENIX1JFRlNfTUlSUk9SOwogCQlpZiAoZmxhZ3MgJiBUUkFOU1BPUlRfUFVTSF9QUlVORSkKIAkJCW1hdGNoX2ZsYWdzIHw9IE1BVENIX1JFRlNfUFJVTkU7CisJCWlmIChmbGFncyAmIFRSQU5TUE9SVF9QVVNIX0ZPTExPV19UQUdTKQorCQkJbWF0Y2hfZmxhZ3MgfD0gTUFUQ0hfUkVGU19GT0xMT1dfVEFHUzsKIAogCQlpZiAobWF0Y2hfcHVzaF9yZWZzKGxvY2FsX3JlZnMsICZyZW1vdGVfcmVmcywKIAkJCQkgICAgcmVmc3BlY19uciwgcmVmc3BlYywgbWF0Y2hfZmxhZ3MpKSB7CkBAIC0xMDczLDYgKzExNDAsMTAgQEAKIAkJCWZsYWdzICYgVFJBTlNQT1JUX1BVU0hfTUlSUk9SLAogCQkJZmxhZ3MgJiBUUkFOU1BPUlRfUFVTSF9GT1JDRSk7CiAKKwkJaWYgKCEoZmxhZ3MgJiBUUkFOU1BPUlRfUFVTSF9OT19IT09LKSkKKwkJCWlmIChydW5fcHJlX3B1c2hfaG9vayh0cmFuc3BvcnQsIHJlbW90ZV9yZWZzKSkKKwkJCQlyZXR1cm4gLTE7CisKIAkJaWYgKChmbGFncyAmIFRSQU5TUE9SVF9SRUNVUlNFX1NVQk1PRFVMRVNfT05fREVNQU5EKSAmJiAhaXNfYmFyZV9yZXBvc2l0b3J5KCkpIHsKIAkJCXN0cnVjdCByZWYgKnJlZiA9IHJlbW90ZV9yZWZzOwogCQkJZm9yICg7IHJlZjsgcmVmID0gcmVmLT5uZXh0KQpAQCAtMTEwMyw3ICsxMTc0LDcgQEAKIAkJaWYgKCFxdWlldCB8fCBlcnIpCiAJCQl0cmFuc3BvcnRfcHJpbnRfcHVzaF9zdGF0dXModHJhbnNwb3J0LT51cmwsIHJlbW90ZV9yZWZzLAogCQkJCQl2ZXJib3NlIHwgcG9yY2VsYWluLCBwb3JjZWxhaW4sCi0JCQkJCW5vbmZhc3Rmb3J3YXJkKTsKKwkJCQkJcmVqZWN0X3JlYXNvbnMpOwogCiAJCWlmIChmbGFncyAmIFRSQU5TUE9SVF9QVVNIX1NFVF9VUFNUUkVBTSkKIAkJCXNldF91cHN0cmVhbXModHJhbnNwb3J0LCByZW1vdGVfcmVmcywgcHJldGVuZCk7CmRpZmYgLS1naXQgYS90cmFuc3BvcnQuaCBiL3RyYW5zcG9ydC5oCmluZGV4IGI4NjZjMTIuLmZjYjFkMjUgMTAwNjQ0Ci0tLSBhL3RyYW5zcG9ydC5oCisrKyBiL3RyYW5zcG9ydC5oCkBAIC03NCw3ICs3NCw3IEBACiAJCSAgICAgICBjb25zdCBjaGFyICpleGVjdXRhYmxlLCBpbnQgZmRbMl0pOwogCiAJLyoqIGdldF9yZWZzX2xpc3QoKSwgZmV0Y2goKSwgYW5kIHB1c2hfcmVmcygpIGNhbiBrZWVwCi0JICogcmVzb3VyY2VzIChzdWNoIGFzIGEgY29ubmVjdGlvbikgcmVzZXJ2ZWQgZm9yIGZ1dGhlcgorCSAqIHJlc291cmNlcyAoc3VjaCBhcyBhIGNvbm5lY3Rpb24pIHJlc2VydmVkIGZvciBmdXJ0aGVyCiAJICogdXNlLiBkaXNjb25uZWN0KCkgcmVsZWFzZXMgdGhlc2UgcmVzb3VyY2VzLgogCSAqKi8KIAlpbnQgKCpkaXNjb25uZWN0KShzdHJ1Y3QgdHJhbnNwb3J0ICpjb25uZWN0aW9uKTsKQEAgLTEwNCw4ICsxMDQsMTEgQEAKICNkZWZpbmUgVFJBTlNQT1JUX1JFQ1VSU0VfU1VCTU9EVUxFU19DSEVDSyA2NAogI2RlZmluZSBUUkFOU1BPUlRfUFVTSF9QUlVORSAxMjgKICNkZWZpbmUgVFJBTlNQT1JUX1JFQ1VSU0VfU1VCTU9EVUxFU19PTl9ERU1BTkQgMjU2CisjZGVmaW5lIFRSQU5TUE9SVF9QVVNIX05PX0hPT0sgNTEyCisjZGVmaW5lIFRSQU5TUE9SVF9QVVNIX0ZPTExPV19UQUdTIDEwMjQKIAogI2RlZmluZSBUUkFOU1BPUlRfU1VNTUFSWV9XSURUSCAoMiAqIERFRkFVTFRfQUJCUkVWICsgMykKKyNkZWZpbmUgVFJBTlNQT1JUX1NVTU1BUlkoeCkgKGludCkoVFJBTlNQT1JUX1NVTU1BUllfV0lEVEggKyBzdHJsZW4oeCkgLSBnZXR0ZXh0X3dpZHRoKHgpKSwgKHgpCiAKIC8qIFJldHVybnMgYSB0cmFuc3BvcnQgc3VpdGFibGUgZm9yIHRoZSB1cmwgKi8KIHN0cnVjdCB0cmFuc3BvcnQgKnRyYW5zcG9ydF9nZXQoc3RydWN0IHJlbW90ZSAqLCBjb25zdCBjaGFyICopOwpAQCAtMTM5LDExICsxNDIsMTUgQEAKIHZvaWQgdHJhbnNwb3J0X3NldF92ZXJib3NpdHkoc3RydWN0IHRyYW5zcG9ydCAqdHJhbnNwb3J0LCBpbnQgdmVyYm9zaXR5LAogCWludCBmb3JjZV9wcm9ncmVzcyk7CiAKLSNkZWZpbmUgTk9OX0ZGX0hFQUQgMQotI2RlZmluZSBOT05fRkZfT1RIRVIgMgorI2RlZmluZSBSRUpFQ1RfTk9OX0ZGX0hFQUQgICAgIDB4MDEKKyNkZWZpbmUgUkVKRUNUX05PTl9GRl9PVEhFUiAgICAweDAyCisjZGVmaW5lIFJFSkVDVF9BTFJFQURZX0VYSVNUUyAgMHgwNAorI2RlZmluZSBSRUpFQ1RfRkVUQ0hfRklSU1QgICAgIDB4MDgKKyNkZWZpbmUgUkVKRUNUX05FRURTX0ZPUkNFICAgICAweDEwCisKIGludCB0cmFuc3BvcnRfcHVzaChzdHJ1Y3QgdHJhbnNwb3J0ICpjb25uZWN0aW9uLAogCQkgICBpbnQgcmVmc3BlY19uciwgY29uc3QgY2hhciAqKnJlZnNwZWMsIGludCBmbGFncywKLQkJICAgaW50ICogbm9uZmFzdGZvcndhcmQpOworCQkgICB1bnNpZ25lZCBpbnQgKiByZWplY3RfcmVhc29ucyk7CiAKIGNvbnN0IHN0cnVjdCByZWYgKnRyYW5zcG9ydF9nZXRfcmVtb3RlX3JlZnMoc3RydWN0IHRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKIApAQCAtMTY5LDkgKzE3NiwxNCBAQAogaW50IHRyYW5zcG9ydF9yZWZzX3B1c2hlZChzdHJ1Y3QgcmVmICpyZWYpOwogCiB2b2lkIHRyYW5zcG9ydF9wcmludF9wdXNoX3N0YXR1cyhjb25zdCBjaGFyICpkZXN0LCBzdHJ1Y3QgcmVmICpyZWZzLAotCQkgIGludCB2ZXJib3NlLCBpbnQgcG9yY2VsYWluLCBpbnQgKm5vbmZhc3Rmb3J3YXJkKTsKKwkJICBpbnQgdmVyYm9zZSwgaW50IHBvcmNlbGFpbiwgdW5zaWduZWQgaW50ICpyZWplY3RfcmVhc29ucyk7CiAKIHR5cGVkZWYgdm9pZCBhbHRlcm5hdGVfcmVmX2ZuKGNvbnN0IHN0cnVjdCByZWYgKiwgdm9pZCAqKTsKIGV4dGVybiB2b2lkIGZvcl9lYWNoX2FsdGVybmF0ZV9yZWYoYWx0ZXJuYXRlX3JlZl9mbiwgdm9pZCAqKTsKIAorc3RydWN0IHNlbmRfcGFja19hcmdzOworZXh0ZXJuIGludCBzZW5kX3BhY2soc3RydWN0IHNlbmRfcGFja19hcmdzICphcmdzLAorCQkgICAgIGludCBmZFtdLCBzdHJ1Y3QgY2hpbGRfcHJvY2VzcyAqY29ubiwKKwkJICAgICBzdHJ1Y3QgcmVmICpyZW1vdGVfcmVmcywKKwkJICAgICBzdHJ1Y3QgZXh0cmFfaGF2ZV9vYmplY3RzICpleHRyYV9oYXZlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvdHJlZS1kaWZmLmMgYi90cmVlLWRpZmYuYwppbmRleCAyOGFkNmRiLi5iYTAxNTYzIDEwMDY0NAotLS0gYS90cmVlLWRpZmYuYworKysgYi90cmVlLWRpZmYuYwpAQCAtNDksMTIgKzQ5LDEyIEBACiAJaWYgKERJRkZfT1BUX1RTVChvcHQsIFJFQ1VSU0lWRSkgJiYgU19JU0RJUihtb2RlMSkpIHsKIAkJaWYgKERJRkZfT1BUX1RTVChvcHQsIFRSRUVfSU5fUkVDVVJTSVZFKSkgewogCQkJb3B0LT5jaGFuZ2Uob3B0LCBtb2RlMSwgbW9kZTIsCi0JCQkJICAgIHNoYTEsIHNoYTIsIGJhc2UtPmJ1ZiwgMCwgMCk7CisJCQkJICAgIHNoYTEsIHNoYTIsIDEsIDEsIGJhc2UtPmJ1ZiwgMCwgMCk7CiAJCX0KIAkJc3RyYnVmX2FkZGNoKGJhc2UsICcvJyk7CiAJCWRpZmZfdHJlZV9zaGExKHNoYTEsIHNoYTIsIGJhc2UtPmJ1Ziwgb3B0KTsKIAl9IGVsc2UgewotCQlvcHQtPmNoYW5nZShvcHQsIG1vZGUxLCBtb2RlMiwgc2hhMSwgc2hhMiwgYmFzZS0+YnVmLCAwLCAwKTsKKwkJb3B0LT5jaGFuZ2Uob3B0LCBtb2RlMSwgbW9kZTIsIHNoYTEsIHNoYTIsIDEsIDEsIGJhc2UtPmJ1ZiwgMCwgMCk7CiAJfQogCXN0cmJ1Zl9zZXRsZW4oYmFzZSwgb2xkX2Jhc2VsZW4pOwogCXJldHVybiAwOwpAQCAtMTAwLDcgKzEwMCw3IEBACiAJCQlkaWUoImNvcnJ1cHQgdHJlZSBzaGEgJXMiLCBzaGExX3RvX2hleChzaGExKSk7CiAKIAkJaWYgKERJRkZfT1BUX1RTVChvcHQsIFRSRUVfSU5fUkVDVVJTSVZFKSkKLQkJCW9wdC0+YWRkX3JlbW92ZShvcHQsICpwcmVmaXgsIG1vZGUsIHNoYTEsIGJhc2UtPmJ1ZiwgMCk7CisJCQlvcHQtPmFkZF9yZW1vdmUob3B0LCAqcHJlZml4LCBtb2RlLCBzaGExLCAxLCBiYXNlLT5idWYsIDApOwogCiAJCXN0cmJ1Zl9hZGRjaChiYXNlLCAnLycpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAKIAkJc2hvd190cmVlKG9wdCwgcHJlZml4LCAmaW5uZXIsIGJhc2UpOwogCQlmcmVlKHRyZWUpOwogCX0gZWxzZQotCQlvcHQtPmFkZF9yZW1vdmUob3B0LCBwcmVmaXhbMF0sIG1vZGUsIHNoYTEsIGJhc2UtPmJ1ZiwgMCk7CisJCW9wdC0+YWRkX3JlbW92ZShvcHQsIHByZWZpeFswXSwgbW9kZSwgc2hhMSwgMSwgYmFzZS0+YnVmLCAwKTsKIAogCXN0cmJ1Zl9zZXRsZW4oYmFzZSwgb2xkX2Jhc2VsZW4pOwogfQpAQCAtMjEyLDggKzIxMiw3IEBACiAJZGlmZl9vcHRzLnJlbmFtZV9zY29yZSA9IG9wdC0+cmVuYW1lX3Njb3JlOwogCXBhdGhzWzBdID0gTlVMTDsKIAlkaWZmX3RyZWVfc2V0dXBfcGF0aHMocGF0aHMsICZkaWZmX29wdHMpOwotCWlmIChkaWZmX3NldHVwX2RvbmUoJmRpZmZfb3B0cykgPCAwKQotCQlkaWUoInVuYWJsZSB0byBzZXQgdXAgZGlmZiBvcHRpb25zIHRvIGZvbGxvdyByZW5hbWVzIik7CisJZGlmZl9zZXR1cF9kb25lKCZkaWZmX29wdHMpOwogCWRpZmZfdHJlZSh0MSwgdDIsIGJhc2UsICZkaWZmX29wdHMpOwogCWRpZmZjb3JlX3N0ZCgmZGlmZl9vcHRzKTsKIAlkaWZmX3RyZWVfcmVsZWFzZV9wYXRocygmZGlmZl9vcHRzKTsKZGlmZiAtLWdpdCBhL3RyZWUtd2Fsay5jIGIvdHJlZS13YWxrLmMKaW5kZXggNDkyYzdjZC4uNmUzMGVmOSAxMDA2NDQKLS0tIGEvdHJlZS13YWxrLmMKKysrIGIvdHJlZS13YWxrLmMKQEAgLTQ5MCwxMSArNDkwLDExIEBACiAKIHN0YXRpYyBpbnQgbWF0Y2hfZW50cnkoY29uc3Qgc3RydWN0IG5hbWVfZW50cnkgKmVudHJ5LCBpbnQgcGF0aGxlbiwKIAkJICAgICAgIGNvbnN0IGNoYXIgKm1hdGNoLCBpbnQgbWF0Y2hsZW4sCi0JCSAgICAgICBpbnQgKm5ldmVyX2ludGVyZXN0aW5nKQorCQkgICAgICAgZW51bSBpbnRlcmVzdGluZyAqbmV2ZXJfaW50ZXJlc3RpbmcpCiB7CiAJaW50IG0gPSAtMTsgLyogc2lnbmFscyB0aGF0IHdlIGhhdmVuJ3QgY2FsbGVkIHN0cm5jbXAoKSAqLwogCi0JaWYgKCpuZXZlcl9pbnRlcmVzdGluZykgeworCWlmICgqbmV2ZXJfaW50ZXJlc3RpbmcgIT0gZW50cnlfbm90X2ludGVyZXN0aW5nKSB7CiAJCS8qCiAJCSAqIFdlIGhhdmUgbm90IHNlZW4gYW55IG1hdGNoIHRoYXQgc29ydHMgbGF0ZXIKIAkJICogdGhhbiB0aGUgY3VycmVudCBwYXRoLgpAQCAtNTIyLDcgKzUyMiw3IEBACiAJCSAqIHRoZSB2YXJpYWJsZSB0byAtMSBhbmQgdGhhdCBpcyB3aGF0IHdpbGwgYmUKIAkJICogcmV0dXJuZWQsIGFsbG93aW5nIHRoZSBjYWxsZXIgdG8gdGVybWluYXRlIGVhcmx5LgogCQkgKi8KLQkJKm5ldmVyX2ludGVyZXN0aW5nID0gMDsKKwkJKm5ldmVyX2ludGVyZXN0aW5nID0gZW50cnlfbm90X2ludGVyZXN0aW5nOwogCX0KIAogCWlmIChwYXRobGVuID4gbWF0Y2hsZW4pCkBAIC01NzMsNiArNTczLDU0IEBACiB9CiAKIC8qCisgKiBQZXJmb3JtIG1hdGNoaW5nIG9uIHRoZSBsZWFkaW5nIG5vbi13aWxkY2FyZCBwYXJ0IG9mCisgKiBwYXRoc3BlYy4gaXRlbS0+bm93aWxkY2FyZF9sZW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4gUmV0dXJuCisgKiBub24temVybyBpZiBiYXNlIGlzIG1hdGNoZWQuCisgKi8KK3N0YXRpYyBpbnQgbWF0Y2hfd2lsZGNhcmRfYmFzZShjb25zdCBzdHJ1Y3QgcGF0aHNwZWNfaXRlbSAqaXRlbSwKKwkJCSAgICAgICBjb25zdCBjaGFyICpiYXNlLCBpbnQgYmFzZWxlbiwKKwkJCSAgICAgICBpbnQgKm1hdGNoZWQpCit7CisJY29uc3QgY2hhciAqbWF0Y2ggPSBpdGVtLT5tYXRjaDsKKwkvKiB0aGUgd2lsZGNhcmQgcGFydCBpcyBub3QgY29uc2lkZXJlZCBpbiB0aGlzIGZ1bmN0aW9uICovCisJaW50IG1hdGNobGVuID0gaXRlbS0+bm93aWxkY2FyZF9sZW47CisKKwlpZiAoYmFzZWxlbikgeworCQlpbnQgZGlybGVuOworCQkvKgorCQkgKiBSZXR1cm4gZWFybHkgaWYgYmFzZSBpcyBsb25nZXIgdGhhbiB0aGUKKwkJICogbm9uLXdpbGRjYXJkIHBhcnQgYnV0IGl0IGRvZXMgbm90IG1hdGNoLgorCQkgKi8KKwkJaWYgKGJhc2VsZW4gPj0gbWF0Y2hsZW4pIHsKKwkJCSptYXRjaGVkID0gbWF0Y2hsZW47CisJCQlyZXR1cm4gIXN0cm5jbXAoYmFzZSwgbWF0Y2gsIG1hdGNobGVuKTsKKwkJfQorCisJCWRpcmxlbiA9IG1hdGNobGVuOworCQl3aGlsZSAoZGlybGVuICYmIG1hdGNoW2RpcmxlbiAtIDFdICE9ICcvJykKKwkJCWRpcmxlbi0tOworCisJCS8qCisJCSAqIFJldHVybiBlYXJseSBpZiBiYXNlIGlzIHNob3J0ZXIgdGhhbiB0aGUKKwkJICogbm9uLXdpbGRjYXJkIHBhcnQgYnV0IGl0IGRvZXMgbm90IG1hdGNoLiBOb3RlIHRoYXQKKwkJICogYmFzZSBlbmRzIHdpdGggJy8nIHNvIHdlIGFyZSBzdXJlIGl0IHJlYWxseSBtYXRjaGVzCisJCSAqIGRpcmVjdG9yeQorCQkgKi8KKwkJaWYgKHN0cm5jbXAoYmFzZSwgbWF0Y2gsIGJhc2VsZW4pKQorCQkJcmV0dXJuIDA7CisJCSptYXRjaGVkID0gYmFzZWxlbjsKKwl9IGVsc2UKKwkJKm1hdGNoZWQgPSAwOworCS8qCisJICogd2UgY291bGQgaGF2ZSBjaGVja2VkIGVudHJ5IGFnYWluc3QgdGhlIG5vbi13aWxkY2FyZCBwYXJ0CisJICogdGhhdCBpcyBub3QgaW4gYmFzZSBhbmQgZG9lcyBzaW1pbGFyIG5ldmVyX2ludGVyZXN0aW5nCisJICogb3B0aW1pemF0aW9uIGFzIGluIG1hdGNoX2VudHJ5LiBGb3Igbm93IGp1c3QgYmUgaGFwcHkgd2l0aAorCSAqIGJhc2UgY29tcGFyaXNvbi4KKwkgKi8KKwlyZXR1cm4gZW50cnlfaW50ZXJlc3Rpbmc7Cit9CisKKy8qCiAgKiBJcyBhIHRyZWUgZW50cnkgaW50ZXJlc3RpbmcgZ2l2ZW4gdGhlIHBhdGhzcGVjIHdlIGhhdmU/CiAgKgogICogUHJlLWNvbmRpdGlvbjogZWl0aGVyIGJhc2VsZW4gPT0gYmFzZV9vZmZzZXQgKGkuZS4gZW1wdHkgcGF0aCkKQEAgLTU4NCw3ICs2MzIsNyBAQAogewogCWludCBpOwogCWludCBwYXRobGVuLCBiYXNlbGVuID0gYmFzZS0+bGVuIC0gYmFzZV9vZmZzZXQ7Ci0JaW50IG5ldmVyX2ludGVyZXN0aW5nID0gcHMtPmhhc193aWxkY2FyZCA/CisJZW51bSBpbnRlcmVzdGluZyBuZXZlcl9pbnRlcmVzdGluZyA9IHBzLT5oYXNfd2lsZGNhcmQgPwogCQllbnRyeV9ub3RfaW50ZXJlc3RpbmcgOiBhbGxfZW50cmllc19ub3RfaW50ZXJlc3Rpbmc7CiAKIAlpZiAoIXBzLT5ucikgewpAQCAtNjAyLDcgKzY1MCw3IEBACiAJCWNvbnN0IHN0cnVjdCBwYXRoc3BlY19pdGVtICppdGVtID0gcHMtPml0ZW1zK2k7CiAJCWNvbnN0IGNoYXIgKm1hdGNoID0gaXRlbS0+bWF0Y2g7CiAJCWNvbnN0IGNoYXIgKmJhc2Vfc3RyID0gYmFzZS0+YnVmICsgYmFzZV9vZmZzZXQ7Ci0JCWludCBtYXRjaGxlbiA9IGl0ZW0tPmxlbjsKKwkJaW50IG1hdGNobGVuID0gaXRlbS0+bGVuLCBtYXRjaGVkID0gMDsKIAogCQlpZiAoYmFzZWxlbiA+PSBtYXRjaGxlbikgewogCQkJLyogSWYgaXQgZG9lc24ndCBtYXRjaCwgbW92ZSBhbG9uZy4uLiAqLwpAQCAtNjI2LDggKzY3NCwxMCBAQAogCQkJCQkmbmV2ZXJfaW50ZXJlc3RpbmcpKQogCQkJCXJldHVybiBlbnRyeV9pbnRlcmVzdGluZzsKIAotCQkJaWYgKGl0ZW0tPnVzZV93aWxkY2FyZCkgewotCQkJCWlmICghZm5tYXRjaChtYXRjaCArIGJhc2VsZW4sIGVudHJ5LT5wYXRoLCAwKSkKKwkJCWlmIChpdGVtLT5ub3dpbGRjYXJkX2xlbiA8IGl0ZW0tPmxlbikgeworCQkJCWlmICghZ2l0X2ZubWF0Y2gobWF0Y2ggKyBiYXNlbGVuLCBlbnRyeS0+cGF0aCwKKwkJCQkJCSBpdGVtLT5mbGFncyAmIFBBVEhTUEVDX09ORVNUQVIgPyBHRk5NX09ORVNUQVIgOiAwLAorCQkJCQkJIGl0ZW0tPm5vd2lsZGNhcmRfbGVuIC0gYmFzZWxlbikpCiAJCQkJCXJldHVybiBlbnRyeV9pbnRlcmVzdGluZzsKIAogCQkJCS8qCkBAIC02NDIsMTcgKzY5MiwzNCBAQAogCQl9CiAKIG1hdGNoX3dpbGRjYXJkczoKLQkJaWYgKCFpdGVtLT51c2Vfd2lsZGNhcmQpCisJCWlmIChpdGVtLT5ub3dpbGRjYXJkX2xlbiA9PSBpdGVtLT5sZW4pCiAJCQljb250aW51ZTsKIAorCQlpZiAoaXRlbS0+bm93aWxkY2FyZF9sZW4gJiYKKwkJICAgICFtYXRjaF93aWxkY2FyZF9iYXNlKGl0ZW0sIGJhc2Vfc3RyLCBiYXNlbGVuLCAmbWF0Y2hlZCkpCisJCQlyZXR1cm4gZW50cnlfbm90X2ludGVyZXN0aW5nOworCiAJCS8qCiAJCSAqIENvbmNhdGVuYXRlIGJhc2UgYW5kIGVudHJ5LT5wYXRoIGludG8gb25lIGFuZCBkbwogCQkgKiBmbm1hdGNoKCkgb24gaXQuCisJCSAqCisJCSAqIFdoaWxlIHdlIGNvdWxkIGF2b2lkIGNvbmNhdGVuYXRpb24gaW4gY2VydGFpbiBjYXNlcworCQkgKiBbMV0sIHdoaWNoIHNhdmVzIGEgbWVtY3B5IGFuZCBwb3RlbnRpYWxseSBhCisJCSAqIHJlYWxsb2MsIGl0IHR1cm5zIG91dCBub3Qgd29ydGggaXQuIE1lYXN1cmVtZW50IG9uCisJCSAqIGxpbnV4LTIuNiBkb2VzIG5vdCBzaG93IGFueSBjbGVhciBpbXByb3ZlbWVudHMsCisJCSAqIHBhcnRseSBiZWNhdXNlIG9mIHRoZSBub3dpbGRjYXJkX2xlbiBvcHRpbWl6YXRpb24KKwkJICogaW4gZ2l0X2ZubWF0Y2goKS4gQXZvaWQgbWljcm8tb3B0aW1pemF0aW9ucyBoZXJlLgorCQkgKgorCQkgKiBbMV0gaWYgbWF0Y2hfd2lsZGNhcmRfYmFzZSgpIHNheXMgdGhlIGJhc2UKKwkJICogZGlyZWN0b3J5IGlzIGFscmVhZHkgbWF0Y2hlZCwgd2Ugb25seSBuZWVkIHRvIG1hdGNoCisJCSAqIHRoZSByZXN0LCB3aGljaCBpcyBzaG9ydGVyIHNvIF9pbiB0aGVvcnlfIGZhc3Rlci4KIAkJICovCiAKIAkJc3RyYnVmX2FkZChiYXNlLCBlbnRyeS0+cGF0aCwgcGF0aGxlbik7CiAKLQkJaWYgKCFmbm1hdGNoKG1hdGNoLCBiYXNlLT5idWYgKyBiYXNlX29mZnNldCwgMCkpIHsKKwkJaWYgKCFnaXRfZm5tYXRjaChtYXRjaCwgYmFzZS0+YnVmICsgYmFzZV9vZmZzZXQsCisJCQkJIGl0ZW0tPmZsYWdzICYgUEFUSFNQRUNfT05FU1RBUiA/IEdGTk1fT05FU1RBUiA6IDAsCisJCQkJIGl0ZW0tPm5vd2lsZGNhcmRfbGVuKSkgewogCQkJc3RyYnVmX3NldGxlbihiYXNlLCBiYXNlX29mZnNldCArIGJhc2VsZW4pOwogCQkJcmV0dXJuIGVudHJ5X2ludGVyZXN0aW5nOwogCQl9CmRpZmYgLS1naXQgYS90cmVlLmMgYi90cmVlLmMKaW5kZXggNjc2ZTlmNy4uNjJmZWQ2MyAxMDA2NDQKLS0tIGEvdHJlZS5jCisrKyBiL3RyZWUuYwpAQCAtMjIsNyArMjIsOCBAQAogCWNlID0geGNhbGxvYygxLCBzaXplKTsKIAogCWNlLT5jZV9tb2RlID0gY3JlYXRlX2NlX21vZGUobW9kZSk7Ci0JY2UtPmNlX2ZsYWdzID0gY3JlYXRlX2NlX2ZsYWdzKGJhc2VsZW4gKyBsZW4sIHN0YWdlKTsKKwljZS0+Y2VfZmxhZ3MgPSBjcmVhdGVfY2VfZmxhZ3Moc3RhZ2UpOworCWNlLT5jZV9uYW1lbGVuID0gYmFzZWxlbiArIGxlbjsKIAltZW1jcHkoY2UtPm5hbWUsIGJhc2UsIGJhc2VsZW4pOwogCW1lbWNweShjZS0+bmFtZSArIGJhc2VsZW4sIHBhdGhuYW1lLCBsZW4rMSk7CiAJaGFzaGNweShjZS0+c2hhMSwgc2hhMSk7CkBAIC0xMzMsOCArMTM0LDggQEAKIAogCWNlMSA9ICooKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqKilhXyk7CiAJY2UyID0gKigoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICoqKWJfKTsKLQlyZXR1cm4gY2FjaGVfbmFtZV9jb21wYXJlKGNlMS0+bmFtZSwgY2UxLT5jZV9mbGFncywKLQkJCQkgIGNlMi0+bmFtZSwgY2UyLT5jZV9mbGFncyk7CisJcmV0dXJuIGNhY2hlX25hbWVfc3RhZ2VfY29tcGFyZShjZTEtPm5hbWUsIGNlMS0+Y2VfbmFtZWxlbiwgY2Vfc3RhZ2UoY2UxKSwKKwkJCQkgIGNlMi0+bmFtZSwgY2UyLT5jZV9uYW1lbGVuLCBjZV9zdGFnZShjZTIpKTsKIH0KIAogaW50IHJlYWRfdHJlZShzdHJ1Y3QgdHJlZSAqdHJlZSwgaW50IHN0YWdlLCBzdHJ1Y3QgcGF0aHNwZWMgKm1hdGNoKQpkaWZmIC0tZ2l0IGEvdW5wYWNrLXRyZWVzLmMgYi91bnBhY2stdHJlZXMuYwppbmRleCBhZDQwMTA5Li5lZGU0Mjk5IDEwMDY0NAotLS0gYS91bnBhY2stdHJlZXMuYworKysgYi91bnBhY2stdHJlZXMuYwpAQCAtNTM5LDcgKzUzOSw4IEBACiAJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IHhjYWxsb2MoMSwgY2FjaGVfZW50cnlfc2l6ZShsZW4pKTsKIAogCWNlLT5jZV9tb2RlID0gY3JlYXRlX2NlX21vZGUobi0+bW9kZSk7Ci0JY2UtPmNlX2ZsYWdzID0gY3JlYXRlX2NlX2ZsYWdzKGxlbiwgc3RhZ2UpOworCWNlLT5jZV9mbGFncyA9IGNyZWF0ZV9jZV9mbGFncyhzdGFnZSk7CisJY2UtPmNlX25hbWVsZW4gPSBsZW47CiAJaGFzaGNweShjZS0+c2hhMSwgbi0+c2hhMSk7CiAJbWFrZV90cmF2ZXJzZV9wYXRoKGNlLT5uYW1lLCBpbmZvLCBuKTsKIApAQCAtODM2LDcgKzgzNyw4IEBACiB7CiAJc3RydWN0IGNhY2hlX2VudHJ5ICoqY2FjaGVfZW5kOwogCWludCBkdHlwZSA9IERUX0RJUjsKLQlpbnQgcmV0ID0gZXhjbHVkZWRfZnJvbV9saXN0KHByZWZpeCwgcHJlZml4X2xlbiwgYmFzZW5hbWUsICZkdHlwZSwgZWwpOworCWludCByZXQgPSBpc19leGNsdWRlZF9mcm9tX2xpc3QocHJlZml4LCBwcmVmaXhfbGVuLAorCQkJCQliYXNlbmFtZSwgJmR0eXBlLCBlbCk7CiAKIAlwcmVmaXhbcHJlZml4X2xlbisrXSA9ICcvJzsKIApAQCAtODU1LDcgKzg1Nyw3IEBACiAJICogd2l0aCByZXQgKGlvdywgd2Uga25vdyBpbiBhZHZhbmNlIHRoZSBpbmNsL2V4Y2wKIAkgKiBkZWNpc2lvbiBmb3IgdGhlIGVudGlyZSBkaXJlY3RvcnkpLCBjbGVhciBmbGFnIGhlcmUgd2l0aG91dAogCSAqIGNhbGxpbmcgY2xlYXJfY2VfZmxhZ3NfMSgpLiBUaGF0IGZ1bmN0aW9uIHdpbGwgY2FsbAotCSAqIHRoZSBleHBlbnNpdmUgZXhjbHVkZWRfZnJvbV9saXN0KCkgb24gZXZlcnkgZW50cnkuCisJICogdGhlIGV4cGVuc2l2ZSBpc19leGNsdWRlZF9mcm9tX2xpc3QoKSBvbiBldmVyeSBlbnRyeS4KIAkgKi8KIAlyZXR1cm4gY2xlYXJfY2VfZmxhZ3NfMShjYWNoZSwgY2FjaGVfZW5kIC0gY2FjaGUsCiAJCQkJcHJlZml4LCBwcmVmaXhfbGVuLApAQCAtOTM4LDcgKzk0MCw4IEBACiAKIAkJLyogTm9uLWRpcmVjdG9yeSAqLwogCQlkdHlwZSA9IGNlX3RvX2R0eXBlKGNlKTsKLQkJcmV0ID0gZXhjbHVkZWRfZnJvbV9saXN0KGNlLT5uYW1lLCBjZV9uYW1lbGVuKGNlKSwgbmFtZSwgJmR0eXBlLCBlbCk7CisJCXJldCA9IGlzX2V4Y2x1ZGVkX2Zyb21fbGlzdChjZS0+bmFtZSwgY2VfbmFtZWxlbihjZSksCisJCQkJCSAgICBuYW1lLCAmZHR5cGUsIGVsKTsKIAkJaWYgKHJldCA8IDApCiAJCQlyZXQgPSBkZWZ2YWw7CiAJCWlmIChyZXQgPiAwKQpAQCAtMTAxNyw3ICsxMDIwLDcgQEAKIAlpZiAoIWNvcmVfYXBwbHlfc3BhcnNlX2NoZWNrb3V0IHx8ICFvLT51cGRhdGUpCiAJCW8tPnNraXBfc3BhcnNlX2NoZWNrb3V0ID0gMTsKIAlpZiAoIW8tPnNraXBfc3BhcnNlX2NoZWNrb3V0KSB7Ci0JCWlmIChhZGRfZXhjbHVkZXNfZnJvbV9maWxlX3RvX2xpc3QoZ2l0X3BhdGgoImluZm8vc3BhcnNlLWNoZWNrb3V0IiksICIiLCAwLCBOVUxMLCAmZWwsIDApIDwgMCkKKwkJaWYgKGFkZF9leGNsdWRlc19mcm9tX2ZpbGVfdG9fbGlzdChnaXRfcGF0aCgiaW5mby9zcGFyc2UtY2hlY2tvdXQiKSwgIiIsIDAsICZlbCwgMCkgPCAwKQogCQkJby0+c2tpcF9zcGFyc2VfY2hlY2tvdXQgPSAxOwogCQllbHNlCiAJCQlvLT5lbCA9ICZlbDsKQEAgLTExNDcsNyArMTE1MCw3IEBACiAJCSpvLT5kc3RfaW5kZXggPSBvLT5yZXN1bHQ7CiAKIGRvbmU6Ci0JZnJlZV9leGNsdWRlcygmZWwpOworCWNsZWFyX2V4Y2x1ZGVfbGlzdCgmZWwpOwogCXJldHVybiByZXQ7CiAKIHJldHVybl9mYWlsZWQ6CkBAIC0xMjg4LDcgKzEyOTEsNyBAQAogCSAqIEZpcnN0IGxldCdzIG1ha2Ugc3VyZSB3ZSBkbyBub3QgaGF2ZSBhIGxvY2FsIG1vZGlmaWNhdGlvbgogCSAqIGluIHRoYXQgZGlyZWN0b3J5LgogCSAqLwotCW5hbWVsZW4gPSBzdHJsZW4oY2UtPm5hbWUpOworCW5hbWVsZW4gPSBjZV9uYW1lbGVuKGNlKTsKIAlmb3IgKGkgPSBsb2NhdGVfaW5fc3JjX2luZGV4KGNlLCBvKTsKIAkgICAgIGkgPCBvLT5zcmNfaW5kZXgtPmNhY2hlX25yOwogCSAgICAgaSsrKSB7CkBAIC0xMzYzLDcgKzEzNjYsOCBAQAogCWlmIChpZ25vcmVfY2FzZSAmJiBpY2FzZV9leGlzdHMobywgbmFtZSwgbGVuLCBzdCkpCiAJCXJldHVybiAwOwogCi0JaWYgKG8tPmRpciAmJiBleGNsdWRlZChvLT5kaXIsIG5hbWUsICZkdHlwZSkpCisJaWYgKG8tPmRpciAmJgorCSAgICBpc19leGNsdWRlZChvLT5kaXIsIG5hbWUsICZkdHlwZSkpCiAJCS8qCiAJCSAqIGNlLT5uYW1lIGlzIGV4cGxpY2l0bHkgZXhjbHVkZWQsIHNvIGl0IGlzIE9rIHRvCiAJCSAqIG92ZXJ3cml0ZSBpdC4KQEAgLTE4MjQsNyArMTgyOCw3IEBACiAKIAlpZiAob2xkICYmIHNhbWUob2xkLCBhKSkgewogCQlpbnQgdXBkYXRlID0gMDsKLQkJaWYgKG8tPnJlc2V0ICYmICFjZV91cHRvZGF0ZShvbGQpICYmICFjZV9za2lwX3dvcmt0cmVlKG9sZCkpIHsKKwkJaWYgKG8tPnJlc2V0ICYmIG8tPnVwZGF0ZSAmJiAhY2VfdXB0b2RhdGUob2xkKSAmJiAhY2Vfc2tpcF93b3JrdHJlZShvbGQpKSB7CiAJCQlzdHJ1Y3Qgc3RhdCBzdDsKIAkJCWlmIChsc3RhdChvbGQtPm5hbWUsICZzdCkgfHwKIAkJCSAgICBpZV9tYXRjaF9zdGF0KG8tPnNyY19pbmRleCwgb2xkLCAmc3QsIENFX01BVENIX0lHTk9SRV9WQUxJRHxDRV9NQVRDSF9JR05PUkVfU0tJUF9XT1JLVFJFRSkpCmRpZmYgLS1naXQgYS91cGxvYWQtcGFjay5jIGIvdXBsb2FkLXBhY2suYwppbmRleCBiYjA4ZTJlLi4xMjdlNTlhIDEwMDY0NAotLS0gYS91cGxvYWQtcGFjay5jCisrKyBiL3VwbG9hZC1wYWNrLmMKQEAgLTExLDYgKzExLDggQEAKICNpbmNsdWRlICJsaXN0LW9iamVjdHMuaCIKICNpbmNsdWRlICJydW4tY29tbWFuZC5oIgogI2luY2x1ZGUgInNpZ2NoYWluLmgiCisjaW5jbHVkZSAidmVyc2lvbi5oIgorI2luY2x1ZGUgInN0cmluZy1saXN0LmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyIHVwbG9hZF9wYWNrX3VzYWdlW10gPSAiZ2l0IHVwbG9hZC1wYWNrIFstLXN0cmljdF0gWy0tdGltZW91dD08bj5dIDxkaXI+IjsKIApAQCAtMjQsMTMgKzI2LDE1IEBACiAjZGVmaW5lIFNIQUxMT1cJCSgxdSA8PCAxNikKICNkZWZpbmUgTk9UX1NIQUxMT1cJKDF1IDw8IDE3KQogI2RlZmluZSBDTElFTlRfU0hBTExPVwkoMXUgPDwgMTgpCisjZGVmaW5lIEhJRERFTl9SRUYJKDF1IDw8IDE5KQogCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBvbGRlc3RfaGF2ZTsKIAotc3RhdGljIGludCBtdWx0aV9hY2ssIG5yX291cl9yZWZzOworc3RhdGljIGludCBtdWx0aV9hY2s7CiBzdGF0aWMgaW50IG5vX2RvbmU7CiBzdGF0aWMgaW50IHVzZV90aGluX3BhY2ssIHVzZV9vZnNfZGVsdGEsIHVzZV9pbmNsdWRlX3RhZzsKIHN0YXRpYyBpbnQgbm9fcHJvZ3Jlc3MsIGRhZW1vbl9tb2RlOworc3RhdGljIGludCBhbGxvd190aXBfc2hhMV9pbl93YW50Owogc3RhdGljIGludCBzaGFsbG93X25yOwogc3RhdGljIHN0cnVjdCBvYmplY3RfYXJyYXkgaGF2ZV9vYmo7CiBzdGF0aWMgc3RydWN0IG9iamVjdF9hcnJheSB3YW50X29iajsKQEAgLTQwLDcgKzQ0LDYgQEAKICAqIG90aGVyd2lzZSBtYXhpbXVtIHBhY2tldCBzaXplICh1cCB0byA2NTUyMCBieXRlcykuCiAgKi8KIHN0YXRpYyBpbnQgdXNlX3NpZGViYW5kOwotc3RhdGljIGludCBkZWJ1Z19mZDsKIHN0YXRpYyBpbnQgYWR2ZXJ0aXNlX3JlZnM7CiBzdGF0aWMgaW50IHN0YXRlbGVzc19ycGM7CiAKQEAgLTQ5LDEzICs1Miw2IEBACiAJYWxhcm0odGltZW91dCk7CiB9CiAKLXN0YXRpYyBpbnQgc3RyaXAoY2hhciAqbGluZSwgaW50IGxlbikKLXsKLQlpZiAobGVuICYmIGxpbmVbbGVuLTFdID09ICdcbicpCi0JCWxpbmVbLS1sZW5dID0gMDsKLQlyZXR1cm4gbGVuOwotfQotCiBzdGF0aWMgc3NpemVfdCBzZW5kX2NsaWVudF9kYXRhKGludCBmZCwgY29uc3QgY2hhciAqZGF0YSwgc3NpemVfdCBzeikKIHsKIAlpZiAodXNlX3NpZGViYW5kKQpAQCAtNjgsNyArNjQsOCBAQAogCQl4d3JpdGUoZmQsIGRhdGEsIHN6KTsKIAkJcmV0dXJuIHN6OwogCX0KLQlyZXR1cm4gc2FmZV93cml0ZShmZCwgZGF0YSwgc3opOworCXdyaXRlX29yX2RpZShmZCwgZGF0YSwgc3opOworCXJldHVybiBzejsKIH0KIAogc3RhdGljIEZJTEUgKnBhY2tfcGlwZSA9IE5VTEw7CkBAIC0xMzgsNyArMTM1LDYgQEAKIHsKIAlzdHJ1Y3QgYXN5bmMgcmV2X2xpc3Q7CiAJc3RydWN0IGNoaWxkX3Byb2Nlc3MgcGFja19vYmplY3RzOwotCWludCBjcmVhdGVfZnVsbF9wYWNrID0gKG5yX291cl9yZWZzID09IHdhbnRfb2JqLm5yICYmICFoYXZlX29iai5ucik7CiAJY2hhciBkYXRhWzgxOTNdLCBwcm9ncmVzc1sxMjhdOwogCWNoYXIgYWJvcnRfbXNnW10gPSAiYWJvcnRpbmcgZHVlIHRvIHBvc3NpYmxlIHJlcG9zaXRvcnkgIgogCQkiY29ycnVwdGlvbiBvbiB0aGUgcmVtb3RlIHNpZGUuIjsKQEAgLTE1MCw5ICsxNDYsNyBAQAogCWFyZ3ZbYXJnKytdID0gInBhY2stb2JqZWN0cyI7CiAJaWYgKCFzaGFsbG93X25yKSB7CiAJCWFyZ3ZbYXJnKytdID0gIi0tcmV2cyI7Ci0JCWlmIChjcmVhdGVfZnVsbF9wYWNrKQotCQkJYXJndlthcmcrK10gPSAiLS1hbGwiOwotCQllbHNlIGlmICh1c2VfdGhpbl9wYWNrKQorCQlpZiAodXNlX3RoaW5fcGFjaykKIAkJCWFyZ3ZbYXJnKytdID0gIi0tdGhpbiI7CiAJfQogCkBAIC0xODQsMTUgKzE3OCwxNSBAQAogCX0KIAllbHNlIHsKIAkJRklMRSAqcGlwZV9mZCA9IHhmZG9wZW4ocGFja19vYmplY3RzLmluLCAidyIpOwotCQlpZiAoIWNyZWF0ZV9mdWxsX3BhY2spIHsKLQkJCWludCBpOwotCQkJZm9yIChpID0gMDsgaSA8IHdhbnRfb2JqLm5yOyBpKyspCi0JCQkJZnByaW50ZihwaXBlX2ZkLCAiJXNcbiIsIHNoYTFfdG9faGV4KHdhbnRfb2JqLm9iamVjdHNbaV0uaXRlbS0+c2hhMSkpOwotCQkJZnByaW50ZihwaXBlX2ZkLCAiLS1ub3RcbiIpOwotCQkJZm9yIChpID0gMDsgaSA8IGhhdmVfb2JqLm5yOyBpKyspCi0JCQkJZnByaW50ZihwaXBlX2ZkLCAiJXNcbiIsIHNoYTFfdG9faGV4KGhhdmVfb2JqLm9iamVjdHNbaV0uaXRlbS0+c2hhMSkpOwotCQl9CisJCWludCBpOwogCisJCWZvciAoaSA9IDA7IGkgPCB3YW50X29iai5ucjsgaSsrKQorCQkJZnByaW50ZihwaXBlX2ZkLCAiJXNcbiIsCisJCQkJc2hhMV90b19oZXgod2FudF9vYmoub2JqZWN0c1tpXS5pdGVtLT5zaGExKSk7CisJCWZwcmludGYocGlwZV9mZCwgIi0tbm90XG4iKTsKKwkJZm9yIChpID0gMDsgaSA8IGhhdmVfb2JqLm5yOyBpKyspCisJCQlmcHJpbnRmKHBpcGVfZmQsICIlc1xuIiwKKwkJCQlzaGExX3RvX2hleChoYXZlX29iai5vYmplY3RzW2ldLml0ZW0tPnNoYTEpKTsKIAkJZnByaW50ZihwaXBlX2ZkLCAiXG4iKTsKIAkJZmZsdXNoKHBpcGVfZmQpOwogCQlmY2xvc2UocGlwZV9mZCk7CkBAIC0zMjYsOSArMzIwLDcgQEAKIAlpZiAoIWhhc19zaGExX2ZpbGUoc2hhMSkpCiAJCXJldHVybiAtMTsKIAotCW8gPSBsb29rdXBfb2JqZWN0KHNoYTEpOwotCWlmICghKG8gJiYgby0+cGFyc2VkKSkKLQkJbyA9IHBhcnNlX29iamVjdChzaGExKTsKKwlvID0gcGFyc2Vfb2JqZWN0KHNoYTEpOwogCWlmICghbykKIAkJZGllKCJvb3BzICglcykiLCBzaGExX3RvX2hleChzaGExKSk7CiAJaWYgKG8tPnR5cGUgPT0gT0JKX0NPTU1JVCkgewpAQCAtNDE2LDcgKzQwOCw2IEBACiAKIHN0YXRpYyBpbnQgZ2V0X2NvbW1vbl9jb21taXRzKHZvaWQpCiB7Ci0Jc3RhdGljIGNoYXIgbGluZVsxMDAwXTsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCWNoYXIgbGFzdF9oZXhbNDFdOwogCWludCBnb3RfY29tbW9uID0gMDsKQEAgLTQyNiwxMCArNDE3LDEwIEBACiAJc2F2ZV9jb21taXRfYnVmZmVyID0gMDsKIAogCWZvciAoOzspIHsKLQkJaW50IGxlbiA9IHBhY2tldF9yZWFkX2xpbmUoMCwgbGluZSwgc2l6ZW9mKGxpbmUpKTsKKwkJY2hhciAqbGluZSA9IHBhY2tldF9yZWFkX2xpbmUoMCwgTlVMTCk7CiAJCXJlc2V0X3RpbWVvdXQoKTsKIAotCQlpZiAoIWxlbikgeworCQlpZiAoIWxpbmUpIHsKIAkJCWlmIChtdWx0aV9hY2sgPT0gMiAmJiBnb3RfY29tbW9uCiAJCQkgICAgJiYgIWdvdF9vdGhlciAmJiBva190b19naXZlX3VwKCkpIHsKIAkJCQlzZW50X3JlYWR5ID0gMTsKQEAgLTQ0OCw3ICs0MzksNiBAQAogCQkJZ290X290aGVyID0gMDsKIAkJCWNvbnRpbnVlOwogCQl9Ci0JCXN0cmlwKGxpbmUsIGxlbik7CiAJCWlmICghcHJlZml4Y21wKGxpbmUsICJoYXZlICIpKSB7CiAJCQlzd2l0Y2ggKGdvdF9zaGExKGxpbmUrNSwgc2hhMSkpIHsKIAkJCWNhc2UgLTE6IC8qIHRoZXkgaGF2ZSB3aGF0IHdlIGRvIG5vdCAqLwpAQCAtNDg4LDYgKzQ3OCwxMiBAQAogCX0KIH0KIAorc3RhdGljIGludCBpc19vdXJfcmVmKHN0cnVjdCBvYmplY3QgKm8pCit7CisJcmV0dXJuIG8tPmZsYWdzICYKKwkJKChhbGxvd190aXBfc2hhMV9pbl93YW50ID8gSElEREVOX1JFRiA6IDApIHwgT1VSX1JFRik7Cit9CisKIHN0YXRpYyB2b2lkIGNoZWNrX25vbl90aXAodm9pZCkKIHsKIAlzdGF0aWMgY29uc3QgY2hhciAqYXJndltdID0gewpAQCAtNTI0LDcgKzUyMCw3IEBACiAJCW8gPSBnZXRfaW5kZXhlZF9vYmplY3QoLS1pKTsKIAkJaWYgKCFvKQogCQkJY29udGludWU7Ci0JCWlmICghKG8tPmZsYWdzICYgT1VSX1JFRikpCisJCWlmICghaXNfb3VyX3JlZihvKSkKIAkJCWNvbnRpbnVlOwogCQltZW1jcHkobmFtZWJ1ZiArIDEsIHNoYTFfdG9faGV4KG8tPnNoYTEpLCA0MCk7CiAJCWlmICh3cml0ZV9pbl9mdWxsKGNtZC5pbiwgbmFtZWJ1ZiwgNDIpIDwgMCkKQEAgLTUzMyw3ICs1MjksNyBAQAogCW5hbWVidWZbNDBdID0gJ1xuJzsKIAlmb3IgKGkgPSAwOyBpIDwgd2FudF9vYmoubnI7IGkrKykgewogCQlvID0gd2FudF9vYmoub2JqZWN0c1tpXS5pdGVtOwotCQlpZiAoby0+ZmxhZ3MgJiBPVVJfUkVGKQorCQlpZiAoaXNfb3VyX3JlZihvKSkKIAkJCWNvbnRpbnVlOwogCQltZW1jcHkobmFtZWJ1Ziwgc2hhMV90b19oZXgoby0+c2hhMSksIDQwKTsKIAkJaWYgKHdyaXRlX2luX2Z1bGwoY21kLmluLCBuYW1lYnVmLCA0MSkgPCAwKQpAQCAtNTY3LDcgKzU2Myw3IEBACiAJLyogUGljayBvbmUgb2YgdGhlbSAod2Uga25vdyB0aGVyZSBhdCBsZWFzdCBpcyBvbmUpICovCiAJZm9yIChpID0gMDsgaSA8IHdhbnRfb2JqLm5yOyBpKyspIHsKIAkJbyA9IHdhbnRfb2JqLm9iamVjdHNbaV0uaXRlbTsKLQkJaWYgKCEoby0+ZmxhZ3MgJiBPVVJfUkVGKSkKKwkJaWYgKCFpc19vdXJfcmVmKG8pKQogCQkJZGllKCJnaXQgdXBsb2FkLXBhY2s6IG5vdCBvdXIgcmVmICVzIiwKIAkJCSAgICBzaGExX3RvX2hleChvLT5zaGExKSk7CiAJfQpAQCAtNTc2LDM0ICs1NzIsMzMgQEAKIHN0YXRpYyB2b2lkIHJlY2VpdmVfbmVlZHModm9pZCkKIHsKIAlzdHJ1Y3Qgb2JqZWN0X2FycmF5IHNoYWxsb3dzID0gT0JKRUNUX0FSUkFZX0lOSVQ7Ci0Jc3RhdGljIGNoYXIgbGluZVsxMDAwXTsKLQlpbnQgbGVuLCBkZXB0aCA9IDA7CisJaW50IGRlcHRoID0gMDsKIAlpbnQgaGFzX25vbl90aXAgPSAwOwogCiAJc2hhbGxvd19uciA9IDA7Ci0JaWYgKGRlYnVnX2ZkKQotCQl3cml0ZV9zdHJfaW5fZnVsbChkZWJ1Z19mZCwgIiNTXG4iKTsKIAlmb3IgKDs7KSB7CiAJCXN0cnVjdCBvYmplY3QgKm87CiAJCWNvbnN0IGNoYXIgKmZlYXR1cmVzOwogCQl1bnNpZ25lZCBjaGFyIHNoYTFfYnVmWzIwXTsKLQkJbGVuID0gcGFja2V0X3JlYWRfbGluZSgwLCBsaW5lLCBzaXplb2YobGluZSkpOworCQljaGFyICpsaW5lID0gcGFja2V0X3JlYWRfbGluZSgwLCBOVUxMKTsKIAkJcmVzZXRfdGltZW91dCgpOwotCQlpZiAoIWxlbikKKwkJaWYgKCFsaW5lKQogCQkJYnJlYWs7Ci0JCWlmIChkZWJ1Z19mZCkKLQkJCXdyaXRlX2luX2Z1bGwoZGVidWdfZmQsIGxpbmUsIGxlbik7CiAKIAkJaWYgKCFwcmVmaXhjbXAobGluZSwgInNoYWxsb3cgIikpIHsKIAkJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAJCQlzdHJ1Y3Qgb2JqZWN0ICpvYmplY3Q7Ci0JCQlpZiAoZ2V0X3NoYTEobGluZSArIDgsIHNoYTEpKQorCQkJaWYgKGdldF9zaGExX2hleChsaW5lICsgOCwgc2hhMSkpCiAJCQkJZGllKCJpbnZhbGlkIHNoYWxsb3cgbGluZTogJXMiLCBsaW5lKTsKIAkJCW9iamVjdCA9IHBhcnNlX29iamVjdChzaGExKTsKIAkJCWlmICghb2JqZWN0KQotCQkJCWRpZSgiZGlkIG5vdCBmaW5kIG9iamVjdCBmb3IgJXMiLCBsaW5lKTsKLQkJCW9iamVjdC0+ZmxhZ3MgfD0gQ0xJRU5UX1NIQUxMT1c7Ci0JCQlhZGRfb2JqZWN0X2FycmF5KG9iamVjdCwgTlVMTCwgJnNoYWxsb3dzKTsKKwkJCQljb250aW51ZTsKKwkJCWlmIChvYmplY3QtPnR5cGUgIT0gT0JKX0NPTU1JVCkKKwkJCQlkaWUoImludmFsaWQgc2hhbGxvdyBvYmplY3QgJXMiLCBzaGExX3RvX2hleChzaGExKSk7CisJCQlpZiAoIShvYmplY3QtPmZsYWdzICYgQ0xJRU5UX1NIQUxMT1cpKSB7CisJCQkJb2JqZWN0LT5mbGFncyB8PSBDTElFTlRfU0hBTExPVzsKKwkJCQlhZGRfb2JqZWN0X2FycmF5KG9iamVjdCwgTlVMTCwgJnNoYWxsb3dzKTsKKwkJCX0KIAkJCWNvbnRpbnVlOwogCQl9CiAJCWlmICghcHJlZml4Y21wKGxpbmUsICJkZWVwZW4gIikpIHsKQEAgLTYzOSwxOSArNjM0LDE3IEBACiAJCWlmIChwYXJzZV9mZWF0dXJlX3JlcXVlc3QoZmVhdHVyZXMsICJpbmNsdWRlLXRhZyIpKQogCQkJdXNlX2luY2x1ZGVfdGFnID0gMTsKIAotCQlvID0gbG9va3VwX29iamVjdChzaGExX2J1Zik7CisJCW8gPSBwYXJzZV9vYmplY3Qoc2hhMV9idWYpOwogCQlpZiAoIW8pCiAJCQlkaWUoImdpdCB1cGxvYWQtcGFjazogbm90IG91ciByZWYgJXMiLAogCQkJICAgIHNoYTFfdG9faGV4KHNoYTFfYnVmKSk7CiAJCWlmICghKG8tPmZsYWdzICYgV0FOVEVEKSkgewogCQkJby0+ZmxhZ3MgfD0gV0FOVEVEOwotCQkJaWYgKCEoby0+ZmxhZ3MgJiBPVVJfUkVGKSkKKwkJCWlmICghaXNfb3VyX3JlZihvKSkKIAkJCQloYXNfbm9uX3RpcCA9IDE7CiAJCQlhZGRfb2JqZWN0X2FycmF5KG8sIE5VTEwsICZ3YW50X29iaik7CiAJCX0KIAl9Ci0JaWYgKGRlYnVnX2ZkKQotCQl3cml0ZV9zdHJfaW5fZnVsbChkZWJ1Z19mZCwgIiNFXG4iKTsKIAogCS8qCiAJICogV2UgaGF2ZSBzZW50IGFsbCBvdXIgcmVmcyBhbHJlYWR5LCBhbmQgdGhlIG90aGVyIGVuZApAQCAtNjY5LDEwICs2NjIsMTcgQEAKIAlpZiAoZGVwdGggPT0gMCAmJiBzaGFsbG93cy5uciA9PSAwKQogCQlyZXR1cm47CiAJaWYgKGRlcHRoID4gMCkgewotCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKnJlc3VsdCwgKmJhY2t1cDsKKwkJc3RydWN0IGNvbW1pdF9saXN0ICpyZXN1bHQgPSBOVUxMLCAqYmFja3VwID0gTlVMTDsKIAkJaW50IGk7Ci0JCWJhY2t1cCA9IHJlc3VsdCA9IGdldF9zaGFsbG93X2NvbW1pdHMoJndhbnRfb2JqLCBkZXB0aCwKLQkJCVNIQUxMT1csIE5PVF9TSEFMTE9XKTsKKwkJaWYgKGRlcHRoID09IElORklOSVRFX0RFUFRIKQorCQkJZm9yIChpID0gMDsgaSA8IHNoYWxsb3dzLm5yOyBpKyspIHsKKwkJCQlzdHJ1Y3Qgb2JqZWN0ICpvYmplY3QgPSBzaGFsbG93cy5vYmplY3RzW2ldLml0ZW07CisJCQkJb2JqZWN0LT5mbGFncyB8PSBOT1RfU0hBTExPVzsKKwkJCX0KKwkJZWxzZQorCQkJYmFja3VwID0gcmVzdWx0ID0KKwkJCQlnZXRfc2hhbGxvd19jb21taXRzKCZ3YW50X29iaiwgZGVwdGgsCisJCQkJCQkgICAgU0hBTExPVywgTk9UX1NIQUxMT1cpOwogCQl3aGlsZSAocmVzdWx0KSB7CiAJCQlzdHJ1Y3Qgb2JqZWN0ICpvYmplY3QgPSAmcmVzdWx0LT5pdGVtLT5vYmplY3Q7CiAJCQlpZiAoIShvYmplY3QtPmZsYWdzICYgKENMSUVOVF9TSEFMTE9XfE5PVF9TSEFMTE9XKSkpIHsKQEAgLTcxOSw0OCArNzE5LDQ0IEBACiAJZnJlZShzaGFsbG93cy5vYmplY3RzKTsKIH0KIAorLyogcmV0dXJuIG5vbi16ZXJvIGlmIHRoZSByZWYgaXMgaGlkZGVuLCBvdGhlcndpc2UgMCAqLworc3RhdGljIGludCBtYXJrX291cl9yZWYoY29uc3QgY2hhciAqcmVmbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgaW50IGZsYWcsIHZvaWQgKmNiX2RhdGEpCit7CisJc3RydWN0IG9iamVjdCAqbyA9IGxvb2t1cF91bmtub3duX29iamVjdChzaGExKTsKKworCWlmIChyZWZfaXNfaGlkZGVuKHJlZm5hbWUpKSB7CisJCW8tPmZsYWdzIHw9IEhJRERFTl9SRUY7CisJCXJldHVybiAxOworCX0KKwlpZiAoIW8pCisJCWRpZSgiZ2l0IHVwbG9hZC1wYWNrOiBjYW5ub3QgZmluZCBvYmplY3QgJXM6Iiwgc2hhMV90b19oZXgoc2hhMSkpOworCW8tPmZsYWdzIHw9IE9VUl9SRUY7CisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgc2VuZF9yZWYoY29uc3QgY2hhciAqcmVmbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgaW50IGZsYWcsIHZvaWQgKmNiX2RhdGEpCiB7CiAJc3RhdGljIGNvbnN0IGNoYXIgKmNhcGFiaWxpdGllcyA9ICJtdWx0aV9hY2sgdGhpbi1wYWNrIHNpZGUtYmFuZCIKIAkJIiBzaWRlLWJhbmQtNjRrIG9mcy1kZWx0YSBzaGFsbG93IG5vLXByb2dyZXNzIgogCQkiIGluY2x1ZGUtdGFnIG11bHRpX2Fja19kZXRhaWxlZCI7Ci0Jc3RydWN0IG9iamVjdCAqbyA9IGxvb2t1cF91bmtub3duX29iamVjdChzaGExKTsKIAljb25zdCBjaGFyICpyZWZuYW1lX25vbnMgPSBzdHJpcF9uYW1lc3BhY2UocmVmbmFtZSk7CisJdW5zaWduZWQgY2hhciBwZWVsZWRbMjBdOwogCi0JaWYgKG8tPnR5cGUgPT0gT0JKX05PTkUpIHsKLQkJby0+dHlwZSA9IHNoYTFfb2JqZWN0X2luZm8oc2hhMSwgTlVMTCk7Ci0JCWlmIChvLT50eXBlIDwgMCkKLQkJICAgIGRpZSgiZ2l0IHVwbG9hZC1wYWNrOiBjYW5ub3QgZmluZCBvYmplY3QgJXM6Iiwgc2hhMV90b19oZXgoc2hhMSkpOwotCX0KKwlpZiAobWFya19vdXJfcmVmKHJlZm5hbWUsIHNoYTEsIGZsYWcsIGNiX2RhdGEpKQorCQlyZXR1cm4gMDsKIAogCWlmIChjYXBhYmlsaXRpZXMpCi0JCXBhY2tldF93cml0ZSgxLCAiJXMgJXMlYyVzJXNcbiIsIHNoYTFfdG9faGV4KHNoYTEpLCByZWZuYW1lX25vbnMsCisJCXBhY2tldF93cml0ZSgxLCAiJXMgJXMlYyVzJXMlcyBhZ2VudD0lc1xuIiwKKwkJCSAgICAgc2hhMV90b19oZXgoc2hhMSksIHJlZm5hbWVfbm9ucywKIAkJCSAgICAgMCwgY2FwYWJpbGl0aWVzLAotCQkJICAgICBzdGF0ZWxlc3NfcnBjID8gIiBuby1kb25lIiA6ICIiKTsKKwkJCSAgICAgYWxsb3dfdGlwX3NoYTFfaW5fd2FudCA/ICIgYWxsb3ctdGlwLXNoYTEtaW4td2FudCIgOiAiIiwKKwkJCSAgICAgc3RhdGVsZXNzX3JwYyA/ICIgbm8tZG9uZSIgOiAiIiwKKwkJCSAgICAgZ2l0X3VzZXJfYWdlbnRfc2FuaXRpemVkKCkpOwogCWVsc2UKIAkJcGFja2V0X3dyaXRlKDEsICIlcyAlc1xuIiwgc2hhMV90b19oZXgoc2hhMSksIHJlZm5hbWVfbm9ucyk7CiAJY2FwYWJpbGl0aWVzID0gTlVMTDsKLQlpZiAoIShvLT5mbGFncyAmIE9VUl9SRUYpKSB7Ci0JCW8tPmZsYWdzIHw9IE9VUl9SRUY7Ci0JCW5yX291cl9yZWZzKys7Ci0JfQotCWlmIChvLT50eXBlID09IE9CSl9UQUcpIHsKLQkJbyA9IGRlcmVmX3RhZ19ub3ZlcmlmeShvKTsKLQkJaWYgKG8pCi0JCQlwYWNrZXRfd3JpdGUoMSwgIiVzICVzXnt9XG4iLCBzaGExX3RvX2hleChvLT5zaGExKSwgcmVmbmFtZV9ub25zKTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgbWFya19vdXJfcmVmKGNvbnN0IGNoYXIgKnJlZm5hbWUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmbGFnLCB2b2lkICpjYl9kYXRhKQotewotCXN0cnVjdCBvYmplY3QgKm8gPSBwYXJzZV9vYmplY3Qoc2hhMSk7Ci0JaWYgKCFvKQotCQlkaWUoImdpdCB1cGxvYWQtcGFjazogY2Fubm90IGZpbmQgb2JqZWN0ICVzOiIsIHNoYTFfdG9faGV4KHNoYTEpKTsKLQlpZiAoIShvLT5mbGFncyAmIE9VUl9SRUYpKSB7Ci0JCW8tPmZsYWdzIHw9IE9VUl9SRUY7Ci0JCW5yX291cl9yZWZzKys7Ci0JfQorCWlmICghcGVlbF9yZWYocmVmbmFtZSwgcGVlbGVkKSkKKwkJcGFja2V0X3dyaXRlKDEsICIlcyAlc157fVxuIiwgc2hhMV90b19oZXgocGVlbGVkKSwgcmVmbmFtZV9ub25zKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNzg1LDYgKzc4MSwxMyBAQAogCX0KIH0KIAorc3RhdGljIGludCB1cGxvYWRfcGFja19jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqdW51c2VkKQoreworCWlmICghc3RyY21wKCJ1cGxvYWRwYWNrLmFsbG93dGlwc2hhMWlud2FudCIsIHZhcikpCisJCWFsbG93X3RpcF9zaGExX2luX3dhbnQgPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7CisJcmV0dXJuIHBhcnNlX2hpZGVfcmVmc19jb25maWcodmFyLCB2YWx1ZSwgInVwbG9hZHBhY2siKTsKK30KKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogCWNoYXIgKmRpcjsKQEAgLTgzNiw4ICs4MzksNyBAQAogCQlkaWUoIiclcycgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgZ2l0IHJlcG9zaXRvcnkiLCBkaXIpOwogCWlmIChpc19yZXBvc2l0b3J5X3NoYWxsb3coKSkKIAkJZGllKCJhdHRlbXB0IHRvIGZldGNoL2Nsb25lIGZyb20gYSBzaGFsbG93IHJlcG9zaXRvcnkiKTsKLQlpZiAoZ2V0ZW52KCJHSVRfREVCVUdfU0VORF9QQUNLIikpCi0JCWRlYnVnX2ZkID0gYXRvaShnZXRlbnYoIkdJVF9ERUJVR19TRU5EX1BBQ0siKSk7CisJZ2l0X2NvbmZpZyh1cGxvYWRfcGFja19jb25maWcsIE5VTEwpOwogCXVwbG9hZF9wYWNrKCk7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS91c2FnZS5jIGIvdXNhZ2UuYwppbmRleCBhMmE2Njc4Li5lZDE0NjQ1IDEwMDY0NAotLS0gYS91c2FnZS5jCisrKyBiL3VzYWdlLmMKQEAgLTQ3LDEyICs0NywxOSBAQAogCXZyZXBvcnRmKCJ3YXJuaW5nOiAiLCB3YXJuLCBwYXJhbXMpOwogfQogCitzdGF0aWMgaW50IGRpZV9pc19yZWN1cnNpbmdfYnVpbHRpbih2b2lkKQoreworCXN0YXRpYyBpbnQgZHlpbmc7CisJcmV0dXJuIGR5aW5nKys7Cit9CisKIC8qIElmIHdlIGFyZSBpbiBhIGRsb3BlbigpZWQgLnNvIHdyaXRlIHRvIGEgZ2xvYmFsIHZhcmlhYmxlIHdvdWxkIHNlZ2ZhdWx0CiAgKiAodWdoKSwgc28ga2VlcCB0aGluZ3Mgc3RhdGljLiAqLwogc3RhdGljIE5PUkVUVVJOX1BUUiB2b2lkICgqdXNhZ2Vfcm91dGluZSkoY29uc3QgY2hhciAqZXJyLCB2YV9saXN0IHBhcmFtcykgPSB1c2FnZV9idWlsdGluOwogc3RhdGljIE5PUkVUVVJOX1BUUiB2b2lkICgqZGllX3JvdXRpbmUpKGNvbnN0IGNoYXIgKmVyciwgdmFfbGlzdCBwYXJhbXMpID0gZGllX2J1aWx0aW47CiBzdGF0aWMgdm9pZCAoKmVycm9yX3JvdXRpbmUpKGNvbnN0IGNoYXIgKmVyciwgdmFfbGlzdCBwYXJhbXMpID0gZXJyb3JfYnVpbHRpbjsKIHN0YXRpYyB2b2lkICgqd2Fybl9yb3V0aW5lKShjb25zdCBjaGFyICplcnIsIHZhX2xpc3QgcGFyYW1zKSA9IHdhcm5fYnVpbHRpbjsKK3N0YXRpYyBpbnQgKCpkaWVfaXNfcmVjdXJzaW5nKSh2b2lkKSA9IGRpZV9pc19yZWN1cnNpbmdfYnVpbHRpbjsKIAogdm9pZCBzZXRfZGllX3JvdXRpbmUoTk9SRVRVUk5fUFRSIHZvaWQgKCpyb3V0aW5lKShjb25zdCBjaGFyICplcnIsIHZhX2xpc3QgcGFyYW1zKSkKIHsKQEAgLTY0LDYgKzcxLDExIEBACiAJZXJyb3Jfcm91dGluZSA9IHJvdXRpbmU7CiB9CiAKK3ZvaWQgc2V0X2RpZV9pc19yZWN1cnNpbmdfcm91dGluZShpbnQgKCpyb3V0aW5lKSh2b2lkKSkKK3sKKwlkaWVfaXNfcmVjdXJzaW5nID0gcm91dGluZTsKK30KKwogdm9pZCBOT1JFVFVSTiB1c2FnZWYoY29uc3QgY2hhciAqZXJyLCAuLi4pCiB7CiAJdmFfbGlzdCBwYXJhbXM7CkBAIC04Miw2ICs5NCwxMSBAQAogewogCXZhX2xpc3QgcGFyYW1zOwogCisJaWYgKGRpZV9pc19yZWN1cnNpbmcoKSkgeworCQlmcHV0cygiZmF0YWw6IHJlY3Vyc2lvbiBkZXRlY3RlZCBpbiBkaWUgaGFuZGxlclxuIiwgc3RkZXJyKTsKKwkJZXhpdCgxMjgpOworCX0KKwogCXZhX3N0YXJ0KHBhcmFtcywgZXJyKTsKIAlkaWVfcm91dGluZShlcnIsIHBhcmFtcyk7CiAJdmFfZW5kKHBhcmFtcyk7CkBAIC05NCw2ICsxMTEsMTIgQEAKIAljaGFyIHN0cl9lcnJvclsyNTZdLCAqZXJyOwogCWludCBpLCBqOwogCisJaWYgKGRpZV9pc19yZWN1cnNpbmcoKSkgeworCQlmcHV0cygiZmF0YWw6IHJlY3Vyc2lvbiBkZXRlY3RlZCBpbiBkaWVfZXJybm8gaGFuZGxlclxuIiwKKwkJCXN0ZGVycik7CisJCWV4aXQoMTI4KTsKKwl9CisKIAllcnIgPSBzdHJlcnJvcihlcnJubyk7CiAJZm9yIChpID0gaiA9IDA7IGVycltpXSAmJiBqIDwgc2l6ZW9mKHN0cl9lcnJvcikgLSAxOyApIHsKIAkJaWYgKChzdHJfZXJyb3JbaisrXSA9IGVycltpKytdKSAhPSAnJScpCkBAIC0xMTUsNiArMTM4LDcgQEAKIAl2YV9lbmQocGFyYW1zKTsKIH0KIAorI3VuZGVmIGVycm9yCiBpbnQgZXJyb3IoY29uc3QgY2hhciAqZXJyLCAuLi4pCiB7CiAJdmFfbGlzdCBwYXJhbXM7CmRpZmYgLS1naXQgYS91c2VyZGlmZi5jIGIvdXNlcmRpZmYuYwppbmRleCAxZTcxODRmLi5lYTQzYTAzIDEwMDY0NAotLS0gYS91c2VyZGlmZi5jCisrKyBiL3VzZXJkaWZmLmMKQEAgLTE0LDYgKzE0LDE1IEBACiAJeyBuYW1lLCBOVUxMLCAtMSwgeyBwYXR0ZXJuLCBSRUdfRVhURU5ERUQgfCBSRUdfSUNBU0UgfSwgXAogCSAgd29yZF9yZWdleCAifFteWzpzcGFjZTpdXXxbXHhjMC1ceGZmXVtceDgwLVx4YmZdKyIgfQogc3RhdGljIHN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgYnVpbHRpbl9kcml2ZXJzW10gPSB7CitJUEFUVEVSTigiYWRhIiwKKwkgIiFeKC4qWyBcdF0pPyhpcyBuZXd8cmVuYW1lc3xpcyBzZXBhcmF0ZSkoWyBcdF0uKik/JFxuIgorCSAiIV5bIFx0XSp3aXRoWyBcdF0uKiRcbiIKKwkgIl5bIFx0XSooKHByb2NlZHVyZXxmdW5jdGlvbilbIFx0XSsuKikkXG4iCisJICJeWyBcdF0qKChwYWNrYWdlfHByb3RlY3RlZHx0YXNrKVsgXHRdKy4qKSQiLAorCSAvKiAtLSAqLworCSAiW2EtekEtWl1bYS16QS1aMC05X10qIgorCSAifFswLTldWy0rMC05I18uZUVdIgorCSAifD0+fFxcLlxcLnxcXCpcXCp8Oj18Lz18Pj18PD18PDx8Pj58PD4iKSwKIElQQVRURVJOKCJmb3J0cmFuIiwKIAkgIiFeKFtDKl18WyBcdF0qISlcbiIKIAkgIiFeWyBcdF0qTU9EVUxFWyBcdF0rUFJPQ0VEVVJFWyBcdF1cbiIKQEAgLTE3NSwzNSArMTg0LDYgQEAKIAlyZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIHN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKnBhcnNlX2RyaXZlcihjb25zdCBjaGFyICp2YXIsCi0JCWNvbnN0IGNoYXIgKnZhbHVlLCBjb25zdCBjaGFyICp0eXBlKQotewotCXN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKmRydjsKLQljb25zdCBjaGFyICpkb3Q7Ci0JY29uc3QgY2hhciAqbmFtZTsKLQlpbnQgbmFtZWxlbjsKLQotCWlmIChwcmVmaXhjbXAodmFyLCAiZGlmZi4iKSkKLQkJcmV0dXJuIE5VTEw7Ci0JZG90ID0gc3RycmNocih2YXIsICcuJyk7Ci0JaWYgKGRvdCA9PSB2YXIgKyA0KQotCQlyZXR1cm4gTlVMTDsKLQlpZiAoc3RyY21wKHR5cGUsIGRvdCsxKSkKLQkJcmV0dXJuIE5VTEw7Ci0KLQluYW1lID0gdmFyICsgNTsKLQluYW1lbGVuID0gZG90IC0gbmFtZTsKLQlkcnYgPSB1c2VyZGlmZl9maW5kX2J5X25hbWVsZW4obmFtZSwgbmFtZWxlbik7Ci0JaWYgKCFkcnYpIHsKLQkJQUxMT0NfR1JPVyhkcml2ZXJzLCBuZHJpdmVycysxLCBkcml2ZXJzX2FsbG9jKTsKLQkJZHJ2ID0gJmRyaXZlcnNbbmRyaXZlcnMrK107Ci0JCW1lbXNldChkcnYsIDAsIHNpemVvZigqZHJ2KSk7Ci0JCWRydi0+bmFtZSA9IHhtZW1kdXB6KG5hbWUsIG5hbWVsZW4pOwotCQlkcnYtPmJpbmFyeSA9IC0xOwotCX0KLQlyZXR1cm4gZHJ2OwotfQotCiBzdGF0aWMgaW50IHBhcnNlX2Z1bmNuYW1lKHN0cnVjdCB1c2VyZGlmZl9mdW5jbmFtZSAqZiwgY29uc3QgY2hhciAqaywKIAkJY29uc3QgY2hhciAqdiwgaW50IGNmbGFncykKIHsKQEAgLTIzMSwyMCArMjExLDM0IEBACiBpbnQgdXNlcmRpZmZfY29uZmlnKGNvbnN0IGNoYXIgKmssIGNvbnN0IGNoYXIgKnYpCiB7CiAJc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqZHJ2OworCWNvbnN0IGNoYXIgKm5hbWUsICp0eXBlOworCWludCBuYW1lbGVuOwogCi0JaWYgKChkcnYgPSBwYXJzZV9kcml2ZXIoaywgdiwgImZ1bmNuYW1lIikpKQorCWlmIChwYXJzZV9jb25maWdfa2V5KGssICJkaWZmIiwgJm5hbWUsICZuYW1lbGVuLCAmdHlwZSkgfHwgIW5hbWUpCisJCXJldHVybiAwOworCisJZHJ2ID0gdXNlcmRpZmZfZmluZF9ieV9uYW1lbGVuKG5hbWUsIG5hbWVsZW4pOworCWlmICghZHJ2KSB7CisJCUFMTE9DX0dST1coZHJpdmVycywgbmRyaXZlcnMrMSwgZHJpdmVyc19hbGxvYyk7CisJCWRydiA9ICZkcml2ZXJzW25kcml2ZXJzKytdOworCQltZW1zZXQoZHJ2LCAwLCBzaXplb2YoKmRydikpOworCQlkcnYtPm5hbWUgPSB4bWVtZHVweihuYW1lLCBuYW1lbGVuKTsKKwkJZHJ2LT5iaW5hcnkgPSAtMTsKKwl9CisKKwlpZiAoIXN0cmNtcCh0eXBlLCAiZnVuY25hbWUiKSkKIAkJcmV0dXJuIHBhcnNlX2Z1bmNuYW1lKCZkcnYtPmZ1bmNuYW1lLCBrLCB2LCAwKTsKLQlpZiAoKGRydiA9IHBhcnNlX2RyaXZlcihrLCB2LCAieGZ1bmNuYW1lIikpKQorCWlmICghc3RyY21wKHR5cGUsICJ4ZnVuY25hbWUiKSkKIAkJcmV0dXJuIHBhcnNlX2Z1bmNuYW1lKCZkcnYtPmZ1bmNuYW1lLCBrLCB2LCBSRUdfRVhURU5ERUQpOwotCWlmICgoZHJ2ID0gcGFyc2VfZHJpdmVyKGssIHYsICJiaW5hcnkiKSkpCisJaWYgKCFzdHJjbXAodHlwZSwgImJpbmFyeSIpKQogCQlyZXR1cm4gcGFyc2VfdHJpc3RhdGUoJmRydi0+YmluYXJ5LCBrLCB2KTsKLQlpZiAoKGRydiA9IHBhcnNlX2RyaXZlcihrLCB2LCAiY29tbWFuZCIpKSkKKwlpZiAoIXN0cmNtcCh0eXBlLCAiY29tbWFuZCIpKQogCQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJmRydi0+ZXh0ZXJuYWwsIGssIHYpOwotCWlmICgoZHJ2ID0gcGFyc2VfZHJpdmVyKGssIHYsICJ0ZXh0Y29udiIpKSkKKwlpZiAoIXN0cmNtcCh0eXBlLCAidGV4dGNvbnYiKSkKIAkJcmV0dXJuIGdpdF9jb25maWdfc3RyaW5nKCZkcnYtPnRleHRjb252LCBrLCB2KTsKLQlpZiAoKGRydiA9IHBhcnNlX2RyaXZlcihrLCB2LCAiY2FjaGV0ZXh0Y29udiIpKSkKKwlpZiAoIXN0cmNtcCh0eXBlLCAiY2FjaGV0ZXh0Y29udiIpKQogCQlyZXR1cm4gcGFyc2VfYm9vbCgmZHJ2LT50ZXh0Y29udl93YW50X2NhY2hlLCBrLCB2KTsKLQlpZiAoKGRydiA9IHBhcnNlX2RyaXZlcihrLCB2LCAid29yZHJlZ2V4IikpKQorCWlmICghc3RyY21wKHR5cGUsICJ3b3JkcmVnZXgiKSkKIAkJcmV0dXJuIGdpdF9jb25maWdfc3RyaW5nKCZkcnYtPndvcmRfcmVnZXgsIGssIHYpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS91dGY4LmMgYi91dGY4LmMKaW5kZXggOGFjYmM2Ni4uMGQyMGUwYSAxMDA2NDQKLS0tIGEvdXRmOC5jCisrKyBiL3V0ZjguYwpAQCAtOSw2ICs5LDIwIEBACiAgIGludCBsYXN0OwogfTsKIAorc2l6ZV90IGRpc3BsYXlfbW9kZV9lc2Nfc2VxdWVuY2VfbGVuKGNvbnN0IGNoYXIgKnMpCit7CisJY29uc3QgY2hhciAqcCA9IHM7CisJaWYgKCpwKysgIT0gJ1wwMzMnKQorCQlyZXR1cm4gMDsKKwlpZiAoKnArKyAhPSAnWycpCisJCXJldHVybiAwOworCXdoaWxlIChpc2RpZ2l0KCpwKSB8fCAqcCA9PSAnOycpCisJCXArKzsKKwlpZiAoKnArKyAhPSAnbScpCisJCXJldHVybiAwOworCXJldHVybiBwIC0gczsKK30KKwogLyogYXV4aWxpYXJ5IGZ1bmN0aW9uIGZvciBiaW5hcnkgc2VhcmNoIGluIGludGVydmFsIHRhYmxlICovCiBzdGF0aWMgaW50IGJpc2VhcmNoKHVjc19jaGFyX3QgdWNzLCBjb25zdCBzdHJ1Y3QgaW50ZXJ2YWwgKnRhYmxlLCBpbnQgbWF4KQogewpAQCAtMjUyLDE4ICsyNjYsMjYgQEAKICAqIHN0cmluZywgYXNzdW1pbmcgdGhhdCB0aGUgc3RyaW5nIGlzIHV0ZjguICBSZXR1cm5zIHN0cmxlbigpIGluc3RlYWQKICAqIGlmIHRoZSBzdHJpbmcgZG9lcyBub3QgbG9vayBsaWtlIGEgdmFsaWQgdXRmOCBzdHJpbmcuCiAgKi8KLWludCB1dGY4X3N0cndpZHRoKGNvbnN0IGNoYXIgKnN0cmluZykKK2ludCB1dGY4X3N0cm53aWR0aChjb25zdCBjaGFyICpzdHJpbmcsIGludCBsZW4sIGludCBza2lwX2Fuc2kpCiB7CiAJaW50IHdpZHRoID0gMDsKIAljb25zdCBjaGFyICpvcmlnID0gc3RyaW5nOwogCi0Jd2hpbGUgKDEpIHsKLQkJaWYgKCFzdHJpbmcpCi0JCQlyZXR1cm4gc3RybGVuKG9yaWcpOwotCQlpZiAoISpzdHJpbmcpCi0JCQlyZXR1cm4gd2lkdGg7CisJaWYgKGxlbiA9PSAtMSkKKwkJbGVuID0gc3RybGVuKHN0cmluZyk7CisJd2hpbGUgKHN0cmluZyAmJiBzdHJpbmcgPCBvcmlnICsgbGVuKSB7CisJCWludCBza2lwOworCQl3aGlsZSAoc2tpcF9hbnNpICYmCisJCSAgICAgICAoc2tpcCA9IGRpc3BsYXlfbW9kZV9lc2Nfc2VxdWVuY2VfbGVuKHN0cmluZykpICE9IDApCisJCQlzdHJpbmcgKz0gc2tpcDsKIAkJd2lkdGggKz0gdXRmOF93aWR0aCgmc3RyaW5nLCBOVUxMKTsKIAl9CisJcmV0dXJuIHN0cmluZyA/IHdpZHRoIDogbGVuOworfQorCitpbnQgdXRmOF9zdHJ3aWR0aChjb25zdCBjaGFyICpzdHJpbmcpCit7CisJcmV0dXJuIHV0Zjhfc3RybndpZHRoKHN0cmluZywgLTEsIDApOwogfQogCiBpbnQgaXNfdXRmOChjb25zdCBjaGFyICp0ZXh0KQpAQCAtMzAzLDI3ICszMjUsMTMgQEAKIAl9CiB9CiAKLXN0YXRpYyBzaXplX3QgZGlzcGxheV9tb2RlX2VzY19zZXF1ZW5jZV9sZW4oY29uc3QgY2hhciAqcykKLXsKLQljb25zdCBjaGFyICpwID0gczsKLQlpZiAoKnArKyAhPSAnXDAzMycpCi0JCXJldHVybiAwOwotCWlmICgqcCsrICE9ICdbJykKLQkJcmV0dXJuIDA7Ci0Jd2hpbGUgKGlzZGlnaXQoKnApIHx8ICpwID09ICc7JykKLQkJcCsrOwotCWlmICgqcCsrICE9ICdtJykKLQkJcmV0dXJuIDA7Ci0JcmV0dXJuIHAgLSBzOwotfQotCiAvKgogICogV3JhcCB0aGUgdGV4dCwgaWYgbmVjZXNzYXJ5LiBUaGUgdmFyaWFibGUgaW5kZW50IGlzIHRoZSBpbmRlbnQgZm9yIHRoZQogICogZmlyc3QgbGluZSwgaW5kZW50MiBpcyB0aGUgaW5kZW50IGZvciBhbGwgb3RoZXIgbGluZXMuCiAgKiBJZiBpbmRlbnQgaXMgbmVnYXRpdmUsIGFzc3VtZSB0aGF0IGFscmVhZHkgLWluZGVudCBjb2x1bW5zIGhhdmUgYmVlbgogICogY29uc3VtZWQgKGFuZCBubyBleHRyYSBpbmRlbnQgaXMgbmVjZXNzYXJ5IGZvciB0aGUgZmlyc3QgbGluZSkuCiAgKi8KLWludCBzdHJidWZfYWRkX3dyYXBwZWRfdGV4dChzdHJ1Y3Qgc3RyYnVmICpidWYsCit2b2lkIHN0cmJ1Zl9hZGRfd3JhcHBlZF90ZXh0KHN0cnVjdCBzdHJidWYgKmJ1ZiwKIAkJY29uc3QgY2hhciAqdGV4dCwgaW50IGluZGVudDEsIGludCBpbmRlbnQyLCBpbnQgd2lkdGgpCiB7CiAJaW50IGluZGVudCwgdywgYXNzdW1lX3V0ZjggPSAxOwpAQCAtMzMyLDcgKzM0MCw3IEBACiAKIAlpZiAod2lkdGggPD0gMCkgewogCQlzdHJidWZfYWRkX2luZGVudGVkX3RleHQoYnVmLCB0ZXh0LCBpbmRlbnQxLCBpbmRlbnQyKTsKLQkJcmV0dXJuIDE7CisJCXJldHVybjsKIAl9CiAKIHJldHJ5OgpAQCAtMzUzLDE3ICszNjEsMTcgQEAKIAogCQljID0gKnRleHQ7CiAJCWlmICghYyB8fCBpc3NwYWNlKGMpKSB7Ci0JCQlpZiAodyA8IHdpZHRoIHx8ICFzcGFjZSkgeworCQkJaWYgKHcgPD0gd2lkdGggfHwgIXNwYWNlKSB7CiAJCQkJY29uc3QgY2hhciAqc3RhcnQgPSBib2w7CiAJCQkJaWYgKCFjICYmIHRleHQgPT0gc3RhcnQpCi0JCQkJCXJldHVybiB3OworCQkJCQlyZXR1cm47CiAJCQkJaWYgKHNwYWNlKQogCQkJCQlzdGFydCA9IHNwYWNlOwogCQkJCWVsc2UKIAkJCQkJc3RyYnVmX2FkZGNoYXJzKGJ1ZiwgJyAnLCBpbmRlbnQpOwogCQkJCXN0cmJ1Zl9hZGQoYnVmLCBzdGFydCwgdGV4dCAtIHN0YXJ0KTsKIAkJCQlpZiAoIWMpCi0JCQkJCXJldHVybiB3OworCQkJCQlyZXR1cm47CiAJCQkJc3BhY2UgPSB0ZXh0OwogCQkJCWlmIChjID09ICdcdCcpCiAJCQkJCXcgfD0gMHgwNzsKQEAgLTQwNSwxMyArNDEzLDU4IEBACiAJfQogfQogCi1pbnQgc3RyYnVmX2FkZF93cmFwcGVkX2J5dGVzKHN0cnVjdCBzdHJidWYgKmJ1ZiwgY29uc3QgY2hhciAqZGF0YSwgaW50IGxlbiwKK3ZvaWQgc3RyYnVmX2FkZF93cmFwcGVkX2J5dGVzKHN0cnVjdCBzdHJidWYgKmJ1ZiwgY29uc3QgY2hhciAqZGF0YSwgaW50IGxlbiwKIAkJCSAgICAgaW50IGluZGVudCwgaW50IGluZGVudDIsIGludCB3aWR0aCkKIHsKIAljaGFyICp0bXAgPSB4c3RybmR1cChkYXRhLCBsZW4pOwotCWludCByID0gc3RyYnVmX2FkZF93cmFwcGVkX3RleHQoYnVmLCB0bXAsIGluZGVudCwgaW5kZW50Miwgd2lkdGgpOworCXN0cmJ1Zl9hZGRfd3JhcHBlZF90ZXh0KGJ1ZiwgdG1wLCBpbmRlbnQsIGluZGVudDIsIHdpZHRoKTsKIAlmcmVlKHRtcCk7Ci0JcmV0dXJuIHI7Cit9CisKK3ZvaWQgc3RyYnVmX3V0ZjhfcmVwbGFjZShzdHJ1Y3Qgc3RyYnVmICpzYl9zcmMsIGludCBwb3MsIGludCB3aWR0aCwKKwkJCSBjb25zdCBjaGFyICpzdWJzdCkKK3sKKwlzdHJ1Y3Qgc3RyYnVmIHNiX2RzdCA9IFNUUkJVRl9JTklUOworCWNoYXIgKnNyYyA9IHNiX3NyYy0+YnVmOworCWNoYXIgKmVuZCA9IHNyYyArIHNiX3NyYy0+bGVuOworCWNoYXIgKmRzdDsKKwlpbnQgdyA9IDAsIHN1YnN0X2xlbiA9IDA7CisKKwlpZiAoc3Vic3QpCisJCXN1YnN0X2xlbiA9IHN0cmxlbihzdWJzdCk7CisJc3RyYnVmX2dyb3coJnNiX2RzdCwgc2Jfc3JjLT5sZW4gKyBzdWJzdF9sZW4pOworCWRzdCA9IHNiX2RzdC5idWY7CisKKwl3aGlsZSAoc3JjIDwgZW5kKSB7CisJCWNoYXIgKm9sZDsKKwkJc2l6ZV90IG47CisKKwkJd2hpbGUgKChuID0gZGlzcGxheV9tb2RlX2VzY19zZXF1ZW5jZV9sZW4oc3JjKSkpIHsKKwkJCW1lbWNweShkc3QsIHNyYywgbik7CisJCQlzcmMgKz0gbjsKKwkJCWRzdCArPSBuOworCQl9CisKKwkJb2xkID0gc3JjOworCQluID0gdXRmOF93aWR0aCgoY29uc3QgY2hhcioqKSZzcmMsIE5VTEwpOworCQlpZiAoIXNyYykgCS8qIGJyb2tlbiB1dGYtOCwgZG8gbm90aGluZyAqLworCQkJcmV0dXJuOworCQlpZiAobiAmJiB3ID49IHBvcyAmJiB3IDwgcG9zICsgd2lkdGgpIHsKKwkJCWlmIChzdWJzdCkgeworCQkJCW1lbWNweShkc3QsIHN1YnN0LCBzdWJzdF9sZW4pOworCQkJCWRzdCArPSBzdWJzdF9sZW47CisJCQkJc3Vic3QgPSBOVUxMOworCQkJfQorCQkJdyArPSBuOworCQkJY29udGludWU7CisJCX0KKwkJbWVtY3B5KGRzdCwgb2xkLCBzcmMgLSBvbGQpOworCQlkc3QgKz0gc3JjIC0gb2xkOworCQl3ICs9IG47CisJfQorCXN0cmJ1Zl9zZXRsZW4oJnNiX2RzdCwgZHN0IC0gc2JfZHN0LmJ1Zik7CisJc3RyYnVmX3N3YXAoc2Jfc3JjLCAmc2JfZHN0KTsKKwlzdHJidWZfcmVsZWFzZSgmc2JfZHN0KTsKIH0KIAogaW50IGlzX2VuY29kaW5nX3V0ZjgoY29uc3QgY2hhciAqbmFtZSkKQEAgLTQyMyw2ICs0NzYsMzQgQEAKIAlyZXR1cm4gMDsKIH0KIAoraW50IHNhbWVfZW5jb2RpbmcoY29uc3QgY2hhciAqc3JjLCBjb25zdCBjaGFyICpkc3QpCit7CisJaWYgKGlzX2VuY29kaW5nX3V0Zjgoc3JjKSAmJiBpc19lbmNvZGluZ191dGY4KGRzdCkpCisJCXJldHVybiAxOworCXJldHVybiAhc3RyY2FzZWNtcChzcmMsIGRzdCk7Cit9CisKKy8qCisgKiBXcmFwcGVyIGZvciBmcHJpbnRmIGFuZCByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgY29sdW1ucyByZXF1aXJlZAorICogZm9yIHRoZSBwcmludGVkIHN0cmluZywgYXNzdW1pbmcgdGhhdCB0aGUgc3RyaW5nIGlzIHV0ZjguCisgKi8KK2ludCB1dGY4X2ZwcmludGYoRklMRSAqc3RyZWFtLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCXZhX2xpc3QgYXJnOworCWludCBjb2x1bW5zOworCisJdmFfc3RhcnQoYXJnLCBmb3JtYXQpOworCXN0cmJ1Zl92YWRkZigmYnVmLCBmb3JtYXQsIGFyZyk7CisJdmFfZW5kKGFyZyk7CisKKwljb2x1bW5zID0gZnB1dHMoYnVmLmJ1Ziwgc3RyZWFtKTsKKwlpZiAoMCA8PSBjb2x1bW5zKSAvKiBrZWVwIHRoZSBlcnJvciBmcm9tIHRoZSBJL08gKi8KKwkJY29sdW1ucyA9IHV0Zjhfc3Ryd2lkdGgoYnVmLmJ1Zik7CisJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CisJcmV0dXJuIGNvbHVtbnM7Cit9CisKIC8qCiAgKiBHaXZlbiBhIGJ1ZmZlciBhbmQgaXRzIGVuY29kaW5nLCByZXR1cm4gaXQgcmUtZW5jb2RlZAogICogd2l0aCBpY29udi4gIElmIHRoZSBjb252ZXJzaW9uIGZhaWxzLCByZXR1cm5zIE5VTEwuCkBAIC00MzMsMTkgKzUxNCwxMiBAQAogI2Vsc2UKIAl0eXBlZGVmIGNoYXIgKiBpY29udl9pYnA7CiAjZW5kaWYKLWNoYXIgKnJlZW5jb2RlX3N0cmluZyhjb25zdCBjaGFyICppbiwgY29uc3QgY2hhciAqb3V0X2VuY29kaW5nLCBjb25zdCBjaGFyICppbl9lbmNvZGluZykKK2NoYXIgKnJlZW5jb2RlX3N0cmluZ19pY29udihjb25zdCBjaGFyICppbiwgc2l6ZV90IGluc3osIGljb252X3QgY29udiwgaW50ICpvdXRzel9wKQogewotCWljb252X3QgY29udjsKLQlzaXplX3QgaW5zeiwgb3V0c3osIG91dGFsbG9jOworCXNpemVfdCBvdXRzeiwgb3V0YWxsb2M7CiAJY2hhciAqb3V0LCAqb3V0cG9zOwogCWljb252X2licCBjcDsKIAotCWlmICghaW5fZW5jb2RpbmcpCi0JCXJldHVybiBOVUxMOwotCWNvbnYgPSBpY29udl9vcGVuKG91dF9lbmNvZGluZywgaW5fZW5jb2RpbmcpOwotCWlmIChjb252ID09IChpY29udl90KSAtMSkKLQkJcmV0dXJuIE5VTEw7Ci0JaW5zeiA9IHN0cmxlbihpbik7CiAJb3V0c3ogPSBpbnN6OwogCW91dGFsbG9jID0gb3V0c3ogKyAxOyAvKiBmb3IgdGVybWluYXRpbmcgTlVMICovCiAJb3V0ID0geG1hbGxvYyhvdXRhbGxvYyk7CkBAIC00NTksNyArNTMzLDYgQEAKIAkJCXNpemVfdCBzb2ZhcjsKIAkJCWlmIChlcnJubyAhPSBFMkJJRykgewogCQkJCWZyZWUob3V0KTsKLQkJCQlpY29udl9jbG9zZShjb252KTsKIAkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KIAkJCS8qIGluc3ogaGFzIHJlbWFpbmluZyBudW1iZXIgb2YgYnl0ZXMuCkBAIC00NzUsMTAgKzU0OCw4MyBAQAogCQl9CiAJCWVsc2UgewogCQkJKm91dHBvcyA9ICdcMCc7CisJCQlpZiAob3V0c3pfcCkKKwkJCQkqb3V0c3pfcCA9IG91dHBvcyAtIG91dDsKIAkJCWJyZWFrOwogCQl9CiAJfQorCXJldHVybiBvdXQ7Cit9CisKK2NoYXIgKnJlZW5jb2RlX3N0cmluZ19sZW4oY29uc3QgY2hhciAqaW4sIGludCBpbnN6LAorCQkJICBjb25zdCBjaGFyICpvdXRfZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmluX2VuY29kaW5nLAorCQkJICBpbnQgKm91dHN6KQoreworCWljb252X3QgY29udjsKKwljaGFyICpvdXQ7CisKKwlpZiAoIWluX2VuY29kaW5nKQorCQlyZXR1cm4gTlVMTDsKKworCWNvbnYgPSBpY29udl9vcGVuKG91dF9lbmNvZGluZywgaW5fZW5jb2RpbmcpOworCWlmIChjb252ID09IChpY29udl90KSAtMSkgeworCQkvKgorCQkgKiBTb21lIHBsYXRmb3JtcyBkbyBub3QgaGF2ZSB0aGUgdmFyaW91c2x5IHNwZWxsZWQgdmFyaWFudHMgb2YKKwkJICogVVRGLTgsIHNvIGxldCdzIGZhbGwgYmFjayB0byB0cnlpbmcgdGhlIG1vc3Qgb2ZmaWNpYWwKKwkJICogc3BlbGxpbmcuIFdlIGRvIHNvIG9ubHkgYXMgYSBmYWxsYmFjayBpbiBjYXNlIHRoZSBwbGF0Zm9ybQorCQkgKiBkb2VzIHVuZGVyc3RhbmQgdGhlIHVzZXIncyBzcGVsbGluZywgYnV0IG5vdCBvdXIgb2ZmaWNpYWwKKwkJICogb25lLgorCQkgKi8KKwkJaWYgKGlzX2VuY29kaW5nX3V0ZjgoaW5fZW5jb2RpbmcpKQorCQkJaW5fZW5jb2RpbmcgPSAiVVRGLTgiOworCQlpZiAoaXNfZW5jb2RpbmdfdXRmOChvdXRfZW5jb2RpbmcpKQorCQkJb3V0X2VuY29kaW5nID0gIlVURi04IjsKKwkJY29udiA9IGljb252X29wZW4ob3V0X2VuY29kaW5nLCBpbl9lbmNvZGluZyk7CisJCWlmIChjb252ID09IChpY29udl90KSAtMSkKKwkJCXJldHVybiBOVUxMOworCX0KKworCW91dCA9IHJlZW5jb2RlX3N0cmluZ19pY29udihpbiwgaW5zeiwgY29udiwgb3V0c3opOwogCWljb252X2Nsb3NlKGNvbnYpOwogCXJldHVybiBvdXQ7CiB9CiAjZW5kaWYKKworLyoKKyAqIFJldHVybnMgZmlyc3QgY2hhcmFjdGVyIGxlbmd0aCBpbiBieXRlcyBmb3IgbXVsdGktYnl0ZSBgdGV4dGAgYWNjb3JkaW5nIHRvCisgKiBgZW5jb2RpbmdgLgorICoKKyAqIC0gVGhlIGB0ZXh0YCBwb2ludGVyIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYXQgdGhlIG5leHQgY2hhcmFjdGVyLgorICogLSBXaGVuIGByZW1haW5kZXJfcGAgaXMgbm90IE5VTEwsIG9uIGVudHJ5IGAqcmVtYWluZGVyX3BgIGlzIGhvdyBtdWNoIGJ5dGVzCisgKiAgIHdlIGNhbiBjb25zdW1lIGZyb20gdGV4dCwgYW5kIG9uIGV4aXQgYCpyZW1haW5kZXJfcGAgaXMgcmVkdWNlZCBieSByZXR1cm5lZAorICogICBjaGFyYWN0ZXIgbGVuZ3RoLiBPdGhlcndpc2UgYHRleHRgIGlzIHRyZWF0ZWQgYXMgbGltaXRlZCBieSBOVUwuCisgKi8KK2ludCBtYnNfY2hybGVuKGNvbnN0IGNoYXIgKip0ZXh0LCBzaXplX3QgKnJlbWFpbmRlcl9wLCBjb25zdCBjaGFyICplbmNvZGluZykKK3sKKwlpbnQgY2hybGVuOworCWNvbnN0IGNoYXIgKnAgPSAqdGV4dDsKKwlzaXplX3QgciA9IChyZW1haW5kZXJfcCA/ICpyZW1haW5kZXJfcCA6IFNJWkVfTUFYKTsKKworCWlmIChyIDwgMSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoaXNfZW5jb2RpbmdfdXRmOChlbmNvZGluZykpIHsKKwkJcGlja19vbmVfdXRmOF9jaGFyKCZwLCAmcik7CisKKwkJY2hybGVuID0gcCA/IChwIC0gKnRleHQpCisJCQkgICA6IDEgLyogbm90IHZhbGlkIFVURi04IC0+IHJhdyBieXRlIHNlcXVlbmNlICovOworCX0KKwllbHNlIHsKKwkJLyoKKwkJICogVE9ETyB1c2UgaWNvbnYgdG8gZGVjb2RlIG9uZSBjaGFyIGFuZCBvYnRhaW4gaXRzIGNocmxlbgorCQkgKiBmb3Igbm93LCBsZXQncyB0cmVhdCBlbmNvZGluZ3MgIT0gVVRGLTggYXMgb25lLWJ5dGUKKwkJICovCisJCWNocmxlbiA9IDE7CisJfQorCisJKnRleHQgKz0gY2hybGVuOworCWlmIChyZW1haW5kZXJfcCkKKwkJKnJlbWFpbmRlcl9wIC09IGNocmxlbjsKKworCXJldHVybiBjaHJsZW47Cit9CmRpZmYgLS1naXQgYS91dGY4LmggYi91dGY4LmgKaW5kZXggODFmMmM4Mi4uMzJhN2JmYiAxMDA2NDQKLS0tIGEvdXRmOC5oCisrKyBiL3V0ZjguaApAQCAtMywyMCArMyw0MiBAQAogCiB0eXBlZGVmIHVuc2lnbmVkIGludCB1Y3NfY2hhcl90OyAgLyogYXNzdW1pbmcgMzJiaXQgaW50ICovCiAKK3NpemVfdCBkaXNwbGF5X21vZGVfZXNjX3NlcXVlbmNlX2xlbihjb25zdCBjaGFyICpzKTsKIGludCB1dGY4X3dpZHRoKGNvbnN0IGNoYXIgKipzdGFydCwgc2l6ZV90ICpyZW1haW5kZXJfcCk7CitpbnQgdXRmOF9zdHJud2lkdGgoY29uc3QgY2hhciAqc3RyaW5nLCBpbnQgbGVuLCBpbnQgc2tpcF9hbnNpKTsKIGludCB1dGY4X3N0cndpZHRoKGNvbnN0IGNoYXIgKnN0cmluZyk7CiBpbnQgaXNfdXRmOChjb25zdCBjaGFyICp0ZXh0KTsKIGludCBpc19lbmNvZGluZ191dGY4KGNvbnN0IGNoYXIgKm5hbWUpOworaW50IHNhbWVfZW5jb2RpbmcoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworaW50IHV0ZjhfZnByaW50ZihGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKIAotaW50IHN0cmJ1Zl9hZGRfd3JhcHBlZF90ZXh0KHN0cnVjdCBzdHJidWYgKmJ1ZiwKK3ZvaWQgc3RyYnVmX2FkZF93cmFwcGVkX3RleHQoc3RydWN0IHN0cmJ1ZiAqYnVmLAogCQljb25zdCBjaGFyICp0ZXh0LCBpbnQgaW5kZW50LCBpbnQgaW5kZW50MiwgaW50IHdpZHRoKTsKLWludCBzdHJidWZfYWRkX3dyYXBwZWRfYnl0ZXMoc3RydWN0IHN0cmJ1ZiAqYnVmLCBjb25zdCBjaGFyICpkYXRhLCBpbnQgbGVuLAordm9pZCBzdHJidWZfYWRkX3dyYXBwZWRfYnl0ZXMoc3RydWN0IHN0cmJ1ZiAqYnVmLCBjb25zdCBjaGFyICpkYXRhLCBpbnQgbGVuLAogCQkJICAgICBpbnQgaW5kZW50LCBpbnQgaW5kZW50MiwgaW50IHdpZHRoKTsKK3ZvaWQgc3RyYnVmX3V0ZjhfcmVwbGFjZShzdHJ1Y3Qgc3RyYnVmICpzYiwgaW50IHBvcywgaW50IHdpZHRoLAorCQkJIGNvbnN0IGNoYXIgKnN1YnN0KTsKIAogI2lmbmRlZiBOT19JQ09OVgotY2hhciAqcmVlbmNvZGVfc3RyaW5nKGNvbnN0IGNoYXIgKmluLCBjb25zdCBjaGFyICpvdXRfZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmluX2VuY29kaW5nKTsKK2NoYXIgKnJlZW5jb2RlX3N0cmluZ19pY29udihjb25zdCBjaGFyICppbiwgc2l6ZV90IGluc3osCisJCQkgICAgaWNvbnZfdCBjb252LCBpbnQgKm91dHN6KTsKK2NoYXIgKnJlZW5jb2RlX3N0cmluZ19sZW4oY29uc3QgY2hhciAqaW4sIGludCBpbnN6LAorCQkJICBjb25zdCBjaGFyICpvdXRfZW5jb2RpbmcsCisJCQkgIGNvbnN0IGNoYXIgKmluX2VuY29kaW5nLAorCQkJICBpbnQgKm91dHN6KTsKICNlbHNlCi0jZGVmaW5lIHJlZW5jb2RlX3N0cmluZyhhLGIsYykgTlVMTAorI2RlZmluZSByZWVuY29kZV9zdHJpbmdfbGVuKGEsYixjLGQsZSkgTlVMTAogI2VuZGlmCiAKK3N0YXRpYyBpbmxpbmUgY2hhciAqcmVlbmNvZGVfc3RyaW5nKGNvbnN0IGNoYXIgKmluLAorCQkJCSAgICBjb25zdCBjaGFyICpvdXRfZW5jb2RpbmcsCisJCQkJICAgIGNvbnN0IGNoYXIgKmluX2VuY29kaW5nKQoreworCXJldHVybiByZWVuY29kZV9zdHJpbmdfbGVuKGluLCBzdHJsZW4oaW4pLAorCQkJCSAgIG91dF9lbmNvZGluZywgaW5fZW5jb2RpbmcsCisJCQkJICAgTlVMTCk7Cit9CisKK2ludCBtYnNfY2hybGVuKGNvbnN0IGNoYXIgKip0ZXh0LCBzaXplX3QgKnJlbWFpbmRlcl9wLCBjb25zdCBjaGFyICplbmNvZGluZyk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvdmNzLXN2bi9mYXN0X2V4cG9ydC5jIGIvdmNzLXN2bi9mYXN0X2V4cG9ydC5jCmluZGV4IGI4MjNiODUuLmYyYjIzYzggMTAwNjQ0Ci0tLSBhL3Zjcy1zdm4vZmFzdF9leHBvcnQuYworKysgYi92Y3Mtc3ZuL2Zhc3RfZXhwb3J0LmMKQEAgLTMsOCArMyw3IEBACiAgKiBTZWUgTElDRU5TRSBmb3IgZGV0YWlscy4KICAqLwogCi0jaW5jbHVkZSAiZ2l0LWNvbXBhdC11dGlsLmgiCi0jaW5jbHVkZSAic3RyYnVmLmgiCisjaW5jbHVkZSAiY2FjaGUuaCIKICNpbmNsdWRlICJxdW90ZS5oIgogI2luY2x1ZGUgImZhc3RfZXhwb3J0LmgiCiAjaW5jbHVkZSAicmVwb190cmVlLmgiCkBAIC00MiwxMSArNDEsNiBAQAogCQlkaWVfZXJybm8oImVycm9yIGNsb3NpbmcgZmFzdC1pbXBvcnQgZmVlZGJhY2sgc3RyZWFtIik7CiB9CiAKLXZvaWQgZmFzdF9leHBvcnRfcmVzZXQodm9pZCkKLXsKLQlidWZmZXJfcmVzZXQoJnJlcG9ydF9idWZmZXIpOwotfQotCiB2b2lkIGZhc3RfZXhwb3J0X2RlbGV0ZShjb25zdCBjaGFyICpwYXRoKQogewogCXB1dGNoYXIoJ0QnKTsKQEAgLTczLDExICs2NywzMyBAQAogCXB1dGNoYXIoJ1xuJyk7CiB9CiAKK3ZvaWQgZmFzdF9leHBvcnRfYmVnaW5fbm90ZSh1aW50MzJfdCByZXZpc2lvbiwgY29uc3QgY2hhciAqYXV0aG9yLAorCQljb25zdCBjaGFyICpsb2csIHVuc2lnbmVkIGxvbmcgdGltZXN0YW1wLCBjb25zdCBjaGFyICpub3RlX3JlZikKK3sKKwlzdGF0aWMgaW50IGZpcnN0bm90ZSA9IDE7CisJc2l6ZV90IGxvZ2xlbiA9IHN0cmxlbihsb2cpOworCXByaW50ZigiY29tbWl0ICVzXG4iLCBub3RlX3JlZik7CisJcHJpbnRmKCJjb21taXR0ZXIgJXMgPCVzQCVzPiAlbGQgKzAwMDBcbiIsIGF1dGhvciwgYXV0aG9yLCAibG9jYWwiLCB0aW1lc3RhbXApOworCXByaW50ZigiZGF0YSAlIlBSSXVNQVgiXG4iLCAodWludG1heF90KWxvZ2xlbik7CisJZndyaXRlKGxvZywgbG9nbGVuLCAxLCBzdGRvdXQpOworCWlmIChmaXJzdG5vdGUpIHsKKwkJaWYgKHJldmlzaW9uID4gMSkKKwkJCXByaW50ZigiZnJvbSAlc14wIiwgbm90ZV9yZWYpOworCQlmaXJzdG5vdGUgPSAwOworCX0KKwlmcHV0YygnXG4nLCBzdGRvdXQpOworfQorCit2b2lkIGZhc3RfZXhwb3J0X25vdGUoY29uc3QgY2hhciAqY29tbWl0dGlzaCwgY29uc3QgY2hhciAqZGF0YXJlZikKK3sKKwlwcmludGYoIk4gJXMgJXNcbiIsIGRhdGFyZWYsIGNvbW1pdHRpc2gpOworfQorCiBzdGF0aWMgY2hhciBnaXRzdm5saW5lW01BWF9HSVRTVk5fTElORV9MRU5dOwogdm9pZCBmYXN0X2V4cG9ydF9iZWdpbl9jb21taXQodWludDMyX3QgcmV2aXNpb24sIGNvbnN0IGNoYXIgKmF1dGhvciwKIAkJCWNvbnN0IHN0cnVjdCBzdHJidWYgKmxvZywKIAkJCWNvbnN0IGNoYXIgKnV1aWQsIGNvbnN0IGNoYXIgKnVybCwKLQkJCXVuc2lnbmVkIGxvbmcgdGltZXN0YW1wKQorCQkJdW5zaWduZWQgbG9uZyB0aW1lc3RhbXAsIGNvbnN0IGNoYXIgKmxvY2FsX3JlZikKIHsKIAlzdGF0aWMgY29uc3Qgc3RydWN0IHN0cmJ1ZiBlbXB0eSA9IFNUUkJVRl9JTklUOwogCWlmICghbG9nKQpAQCAtODksNyArMTA1LDcgQEAKIAl9IGVsc2UgewogCQkqZ2l0c3ZubGluZSA9ICdcMCc7CiAJfQotCXByaW50ZigiY29tbWl0IHJlZnMvaGVhZHMvbWFzdGVyXG4iKTsKKwlwcmludGYoImNvbW1pdCAlc1xuIiwgbG9jYWxfcmVmKTsKIAlwcmludGYoIm1hcmsgOiUiUFJJdTMyIlxuIiwgcmV2aXNpb24pOwogCXByaW50ZigiY29tbWl0dGVyICVzIDwlc0Alcz4gJWxkICswMDAwXG4iLAogCQkgICAqYXV0aG9yID8gYXV0aG9yIDogIm5vYm9keSIsCkBAIC0xNjMsNyArMTc5LDcgQEAKIAogCWlmIChlbmRzX3dpdGgoaGVhZGVyLCBoZWFkZXJsZW4sICIgbWlzc2luZyIpKQogCQlyZXR1cm4gZXJyb3IoImNhdC1ibG9iIHJlcG9ydHMgbWlzc2luZyBibG9iOiAlcyIsIGhlYWRlcik7Ci0JdHlwZSA9IG1lbW1lbShoZWFkZXIsIGhlYWRlcmxlbiwgIiBibG9iICIsIHN0cmxlbigiIGJsb2IgIikpOworCXR5cGUgPSBzdHJzdHIoaGVhZGVyLCAiIGJsb2IgIik7CiAJaWYgKCF0eXBlKQogCQlyZXR1cm4gZXJyb3IoImNhdC1ibG9iIGhlYWRlciBoYXMgd3Jvbmcgb2JqZWN0IHR5cGU6ICVzIiwgaGVhZGVyKTsKIAluID0gc3RydG91bWF4KHR5cGUgKyBzdHJsZW4oIiBibG9iICIpLCAoY2hhciAqKikgJmVuZCwgMTApOwpAQCAtMjI3LDYgKzI0MywxMyBAQAogCXJldHVybiByZXQ7CiB9CiAKK3ZvaWQgZmFzdF9leHBvcnRfYnVmX3RvX2RhdGEoY29uc3Qgc3RydWN0IHN0cmJ1ZiAqZGF0YSkKK3sKKwlwcmludGYoImRhdGEgJSJQUkl1TUFYIlxuIiwgKHVpbnRtYXhfdClkYXRhLT5sZW4pOworCWZ3cml0ZShkYXRhLT5idWYsIGRhdGEtPmxlbiwgMSwgc3Rkb3V0KTsKKwlmcHV0YygnXG4nLCBzdGRvdXQpOworfQorCiB2b2lkIGZhc3RfZXhwb3J0X2RhdGEodWludDMyX3QgbW9kZSwgb2ZmX3QgbGVuLCBzdHJ1Y3QgbGluZV9idWZmZXIgKmlucHV0KQogewogCWFzc2VydChsZW4gPj0gMCk7CkBAIC0yNTksNyArMjgyLDcgQEAKIAl9CiAKIAkvKiBNb2RlLiAqLwotCWlmIChyZXNwb25zZV9lbmQgLSByZXNwb25zZSA8IHN0cmxlbigiMTAwNjQ0IikgfHwKKwlpZiAocmVzcG9uc2VfZW5kIC0gcmVzcG9uc2UgPCAoc2lnbmVkKSBzdHJsZW4oIjEwMDY0NCIpIHx8CiAJICAgIHJlc3BvbnNlW3N0cmxlbigiMTAwNjQ0IildICE9ICcgJykKIAkJZGllKCJpbnZhbGlkIGxzIHJlc3BvbnNlOiBtaXNzaW5nIG1vZGU6ICVzIiwgcmVzcG9uc2UpOwogCSptb2RlID0gMDsKQEAgLTI3Miw3ICsyOTUsNyBAQAogCX0KIAogCS8qICcgYmxvYiAnIG9yICcgdHJlZSAnICovCi0JaWYgKHJlc3BvbnNlX2VuZCAtIHJlc3BvbnNlIDwgc3RybGVuKCIgYmxvYiAiKSB8fAorCWlmIChyZXNwb25zZV9lbmQgLSByZXNwb25zZSA8IChzaWduZWQpIHN0cmxlbigiIGJsb2IgIikgfHwKIAkgICAgKHJlc3BvbnNlWzFdICE9ICdiJyAmJiByZXNwb25zZVsxXSAhPSAndCcpKQogCQlkaWUoInVuZXhwZWN0ZWQgbHMgcmVzcG9uc2U6IG5vdCBhIHRyZWUgb3IgYmxvYjogJXMiLCByZXNwb25zZSk7CiAJcmVzcG9uc2UgKz0gc3RybGVuKCIgYmxvYiAiKTsKZGlmZiAtLWdpdCBhL3Zjcy1zdm4vZmFzdF9leHBvcnQuaCBiL3Zjcy1zdm4vZmFzdF9leHBvcnQuaAppbmRleCBhYTYyOWY1Li5jOGI1YWRiIDEwMDY0NAotLS0gYS92Y3Mtc3ZuL2Zhc3RfZXhwb3J0LmgKKysrIGIvdmNzLXN2bi9mYXN0X2V4cG9ydC5oCkBAIC02LDE1ICs2LDE4IEBACiAKIHZvaWQgZmFzdF9leHBvcnRfaW5pdChpbnQgZmQpOwogdm9pZCBmYXN0X2V4cG9ydF9kZWluaXQodm9pZCk7Ci12b2lkIGZhc3RfZXhwb3J0X3Jlc2V0KHZvaWQpOwogCiB2b2lkIGZhc3RfZXhwb3J0X2RlbGV0ZShjb25zdCBjaGFyICpwYXRoKTsKIHZvaWQgZmFzdF9leHBvcnRfbW9kaWZ5KGNvbnN0IGNoYXIgKnBhdGgsIHVpbnQzMl90IG1vZGUsIGNvbnN0IGNoYXIgKmRhdGFyZWYpOwordm9pZCBmYXN0X2V4cG9ydF9ub3RlKGNvbnN0IGNoYXIgKmNvbW1pdHRpc2gsIGNvbnN0IGNoYXIgKmRhdGFyZWYpOwordm9pZCBmYXN0X2V4cG9ydF9iZWdpbl9ub3RlKHVpbnQzMl90IHJldmlzaW9uLCBjb25zdCBjaGFyICphdXRob3IsCisJCWNvbnN0IGNoYXIgKmxvZywgdW5zaWduZWQgbG9uZyB0aW1lc3RhbXAsIGNvbnN0IGNoYXIgKm5vdGVfcmVmKTsKIHZvaWQgZmFzdF9leHBvcnRfYmVnaW5fY29tbWl0KHVpbnQzMl90IHJldmlzaW9uLCBjb25zdCBjaGFyICphdXRob3IsCi0JCQljb25zdCBzdHJ1Y3Qgc3RyYnVmICpsb2csIGNvbnN0IGNoYXIgKnV1aWQsCi0JCQljb25zdCBjaGFyICp1cmwsIHVuc2lnbmVkIGxvbmcgdGltZXN0YW1wKTsKKwkJCWNvbnN0IHN0cnVjdCBzdHJidWYgKmxvZywgY29uc3QgY2hhciAqdXVpZCxjb25zdCBjaGFyICp1cmwsCisJCQl1bnNpZ25lZCBsb25nIHRpbWVzdGFtcCwgY29uc3QgY2hhciAqbG9jYWxfcmVmKTsKIHZvaWQgZmFzdF9leHBvcnRfZW5kX2NvbW1pdCh1aW50MzJfdCByZXZpc2lvbik7CiB2b2lkIGZhc3RfZXhwb3J0X2RhdGEodWludDMyX3QgbW9kZSwgb2ZmX3QgbGVuLCBzdHJ1Y3QgbGluZV9idWZmZXIgKmlucHV0KTsKK3ZvaWQgZmFzdF9leHBvcnRfYnVmX3RvX2RhdGEoY29uc3Qgc3RydWN0IHN0cmJ1ZiAqZGF0YSk7CiB2b2lkIGZhc3RfZXhwb3J0X2Jsb2JfZGVsdGEodWludDMyX3QgbW9kZSwKIAkJCXVpbnQzMl90IG9sZF9tb2RlLCBjb25zdCBjaGFyICpvbGRfZGF0YSwKIAkJCW9mZl90IGxlbiwgc3RydWN0IGxpbmVfYnVmZmVyICppbnB1dCk7CmRpZmYgLS1naXQgYS92Y3Mtc3ZuL2xpbmVfYnVmZmVyLmMgYi92Y3Mtc3ZuL2xpbmVfYnVmZmVyLmMKaW5kZXggMDFmY2I4NC4uNTdjYzFjZSAxMDA2NDQKLS0tIGEvdmNzLXN2bi9saW5lX2J1ZmZlci5jCisrKyBiL3Zjcy1zdm4vbGluZV9idWZmZXIuYwpAQCAtMTI0LDcgKzEyNCwzIEBACiAJfQogCXJldHVybiBkb25lOwogfQotCi12b2lkIGJ1ZmZlcl9yZXNldChzdHJ1Y3QgbGluZV9idWZmZXIgKmJ1ZikKLXsKLX0KZGlmZiAtLWdpdCBhL3Zjcy1zdm4vbGluZV9idWZmZXIuaCBiL3Zjcy1zdm4vbGluZV9idWZmZXIuaAppbmRleCA4OTAxZjIxLi5lZTIzYjRmIDEwMDY0NAotLS0gYS92Y3Mtc3ZuL2xpbmVfYnVmZmVyLmgKKysrIGIvdmNzLXN2bi9saW5lX2J1ZmZlci5oCkBAIC0xNCw3ICsxNCw2IEBACiBpbnQgYnVmZmVyX2luaXQoc3RydWN0IGxpbmVfYnVmZmVyICpidWYsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKIGludCBidWZmZXJfZmRpbml0KHN0cnVjdCBsaW5lX2J1ZmZlciAqYnVmLCBpbnQgZmQpOwogaW50IGJ1ZmZlcl9kZWluaXQoc3RydWN0IGxpbmVfYnVmZmVyICpidWYpOwotdm9pZCBidWZmZXJfcmVzZXQoc3RydWN0IGxpbmVfYnVmZmVyICpidWYpOwogCiBpbnQgYnVmZmVyX3RtcGZpbGVfaW5pdChzdHJ1Y3QgbGluZV9idWZmZXIgKmJ1Zik7CiBGSUxFICpidWZmZXJfdG1wZmlsZV9yZXdpbmQoc3RydWN0IGxpbmVfYnVmZmVyICpidWYpOwkvKiBwcmVwYXJlIHRvIHdyaXRlLiAqLwpkaWZmIC0tZ2l0IGEvdmNzLXN2bi9zbGlkaW5nX3dpbmRvdy5jIGIvdmNzLXN2bi9zbGlkaW5nX3dpbmRvdy5jCmluZGV4IGVjMjcwN2MuLmYxMWQ0OTAgMTAwNjQ0Ci0tLSBhL3Zjcy1zdm4vc2xpZGluZ193aW5kb3cuYworKysgYi92Y3Mtc3ZuL3NsaWRpbmdfd2luZG93LmMKQEAgLTU0LDcgKzU0LDcgQEAKIAkJcmV0dXJuIC0xOwogCWlmIChvZmYgPCB2aWV3LT5vZmYgfHwgb2ZmICsgd2lkdGggPCB2aWV3LT5vZmYgKyB2aWV3LT53aWR0aCkKIAkJcmV0dXJuIGVycm9yKCJpbnZhbGlkIGRlbHRhOiB3aW5kb3cgc2xpZGVzIGxlZnQiKTsKLQlpZiAodmlldy0+bWF4X29mZiA+PSAwICYmIHZpZXctPm1heF9vZmYgPCBvZmYgKyB3aWR0aCkKKwlpZiAodmlldy0+bWF4X29mZiA+PSAwICYmIHZpZXctPm1heF9vZmYgPCBvZmYgKyAob2ZmX3QpIHdpZHRoKQogCQlyZXR1cm4gZXJyb3IoImRlbHRhIHByZWltYWdlIGVuZHMgZWFybHkiKTsKIAogCWZpbGVfb2Zmc2V0ID0gdmlldy0+b2ZmICsgdmlldy0+YnVmLmxlbjsKZGlmZiAtLWdpdCBhL3Zjcy1zdm4vc3ZuZGlmZi5jIGIvdmNzLXN2bi9zdm5kaWZmLmMKaW5kZXggMTY0N2MxYS4uNzRjOTdjNCAxMDA2NDQKLS0tIGEvdmNzLXN2bi9zdm5kaWZmLmMKKysrIGIvdmNzLXN2bi9zdm5kaWZmLmMKQEAgLTc3LDggKzc3LDkgQEAKIHN0YXRpYyBpbnQgcmVhZF9jaHVuayhzdHJ1Y3QgbGluZV9idWZmZXIgKmRlbHRhLCBvZmZfdCAqZGVsdGFfbGVuLAogCQkgICAgICBzdHJ1Y3Qgc3RyYnVmICpidWYsIHNpemVfdCBsZW4pCiB7CisJYXNzZXJ0KCpkZWx0YV9sZW4gPj0gMCk7CiAJc3RyYnVmX3Jlc2V0KGJ1Zik7Ci0JaWYgKGxlbiA+ICpkZWx0YV9sZW4gfHwKKwlpZiAobGVuID4gKHVpbnRtYXhfdCkgKmRlbHRhX2xlbiB8fAogCSAgICBidWZmZXJfcmVhZF9iaW5hcnkoZGVsdGEsIGJ1ZiwgbGVuKSAhPSBsZW4pCiAJCXJldHVybiBlcnJvcl9zaG9ydF9yZWFkKGRlbHRhKTsKIAkqZGVsdGFfbGVuIC09IGJ1Zi0+bGVuOwpAQCAtMjU4LDYgKzI1OSw3IEBACiBzdGF0aWMgaW50IGFwcGx5X29uZV93aW5kb3coc3RydWN0IGxpbmVfYnVmZmVyICpkZWx0YSwgb2ZmX3QgKmRlbHRhX2xlbiwKIAkJCSAgICBzdHJ1Y3Qgc2xpZGluZ192aWV3ICpwcmVpbWFnZSwgRklMRSAqb3V0KQogeworCWludCBydiA9IC0xOwogCXN0cnVjdCB3aW5kb3cgY3R4ID0gV0lORE9XX0lOSVQocHJlaW1hZ2UpOwogCXNpemVfdCBvdXRfbGVuOwogCXNpemVfdCBpbnN0cnVjdGlvbnNfbGVuOwpAQCAtMjc1LDI3ICsyNzcsMjYgQEAKIAlpZiAoYXBwbHlfd2luZG93X2luX2NvcmUoJmN0eCkpCiAJCWdvdG8gZXJyb3Jfb3V0OwogCWlmIChjdHgub3V0LmxlbiAhPSBvdXRfbGVuKSB7Ci0JCWVycm9yKCJpbnZhbGlkIGRlbHRhOiBpbmNvcnJlY3QgcG9zdGltYWdlIGxlbmd0aCIpOworCQlydiA9IGVycm9yKCJpbnZhbGlkIGRlbHRhOiBpbmNvcnJlY3QgcG9zdGltYWdlIGxlbmd0aCIpOwogCQlnb3RvIGVycm9yX291dDsKIAl9CiAJaWYgKHdyaXRlX3N0cmJ1ZigmY3R4Lm91dCwgb3V0KSkKIAkJZ290byBlcnJvcl9vdXQ7Ci0Jd2luZG93X3JlbGVhc2UoJmN0eCk7Ci0JcmV0dXJuIDA7CisJcnYgPSAwOwogZXJyb3Jfb3V0OgogCXdpbmRvd19yZWxlYXNlKCZjdHgpOwotCXJldHVybiAtMTsKKwlyZXR1cm4gcnY7CiB9CiAKIGludCBzdm5kaWZmMF9hcHBseShzdHJ1Y3QgbGluZV9idWZmZXIgKmRlbHRhLCBvZmZfdCBkZWx0YV9sZW4sCiAJCQlzdHJ1Y3Qgc2xpZGluZ192aWV3ICpwcmVpbWFnZSwgRklMRSAqcG9zdGltYWdlKQogewotCWFzc2VydChkZWx0YSAmJiBwcmVpbWFnZSAmJiBwb3N0aW1hZ2UpOworCWFzc2VydChkZWx0YSAmJiBwcmVpbWFnZSAmJiBwb3N0aW1hZ2UgJiYgZGVsdGFfbGVuID49IDApOwogCiAJaWYgKHJlYWRfbWFnaWMoZGVsdGEsICZkZWx0YV9sZW4pKQogCQlyZXR1cm4gLTE7CiAJd2hpbGUgKGRlbHRhX2xlbikgewkvKiBGb3IgZWFjaCB3aW5kb3c6ICovCi0JCW9mZl90IHByZV9vZmYgPSBwcmVfb2ZmOyAvKiBzdHVwaWQgR0NDLi4uICovCisJCW9mZl90IHByZV9vZmYgPSAtMTsKIAkJc2l6ZV90IHByZV9sZW47CiAKIAkJaWYgKHJlYWRfb2Zmc2V0KGRlbHRhLCAmcHJlX29mZiwgJmRlbHRhX2xlbikgfHwKZGlmZiAtLWdpdCBhL3Zjcy1zdm4vc3ZuZHVtcC5jIGIvdmNzLXN2bi9zdm5kdW1wLmMKaW5kZXggMDg5OTc5MC4uMzFkMWQ4MyAxMDA2NDQKLS0tIGEvdmNzLXN2bi9zdm5kdW1wLmMKKysrIGIvdmNzLXN2bi9zdm5kdW1wLmMKQEAgLTM0LDE0ICszNCwxMyBAQAogI2RlZmluZSBOT0RFX0NUWCAyCS8qIG5vZGUgbWV0YWRhdGEgKi8KICNkZWZpbmUgSU5URVJOT0RFX0NUWCAzCS8qIGJldHdlZW4gbm9kZXMgKi8KIAotI2RlZmluZSBMRU5HVEhfVU5LTk9XTiAofjApCiAjZGVmaW5lIERBVEVfUkZDMjgyMl9MRU4gMzEKIAogc3RhdGljIHN0cnVjdCBsaW5lX2J1ZmZlciBpbnB1dCA9IExJTkVfQlVGRkVSX0lOSVQ7CiAKIHN0YXRpYyBzdHJ1Y3QgewotCXVpbnQzMl90IGFjdGlvbiwgcHJvcExlbmd0aCwgc3JjUmV2LCB0eXBlOwotCW9mZl90IHRleHRfbGVuZ3RoOworCXVpbnQzMl90IGFjdGlvbiwgc3JjUmV2LCB0eXBlOworCW9mZl90IHByb3BfbGVuZ3RoLCB0ZXh0X2xlbmd0aDsKIAlzdHJ1Y3Qgc3RyYnVmIHNyYywgZHN0OwogCXVpbnQzMl90IHRleHRfZGVsdGEsIHByb3BfZGVsdGE7CiB9IG5vZGVfY3R4OwpAQCAtNDksNyArNDgsNyBAQAogc3RhdGljIHN0cnVjdCB7CiAJdWludDMyX3QgcmV2aXNpb247CiAJdW5zaWduZWQgbG9uZyB0aW1lc3RhbXA7Ci0Jc3RydWN0IHN0cmJ1ZiBsb2csIGF1dGhvcjsKKwlzdHJ1Y3Qgc3RyYnVmIGxvZywgYXV0aG9yLCBub3RlOwogfSByZXZfY3R4OwogCiBzdGF0aWMgc3RydWN0IHsKQEAgLTYxLDcgKzYwLDcgQEAKIHsKIAlub2RlX2N0eC50eXBlID0gMDsKIAlub2RlX2N0eC5hY3Rpb24gPSBOT0RFQUNUX1VOS05PV047Ci0Jbm9kZV9jdHgucHJvcExlbmd0aCA9IExFTkdUSF9VTktOT1dOOworCW5vZGVfY3R4LnByb3BfbGVuZ3RoID0gLTE7CiAJbm9kZV9jdHgudGV4dF9sZW5ndGggPSAtMTsKIAlzdHJidWZfcmVzZXQoJm5vZGVfY3R4LnNyYyk7CiAJbm9kZV9jdHguc3JjUmV2ID0gMDsKQEAgLTc4LDYgKzc3LDcgQEAKIAlyZXZfY3R4LnRpbWVzdGFtcCA9IDA7CiAJc3RyYnVmX3Jlc2V0KCZyZXZfY3R4LmxvZyk7CiAJc3RyYnVmX3Jlc2V0KCZyZXZfY3R4LmF1dGhvcik7CisJc3RyYnVmX3Jlc2V0KCZyZXZfY3R4Lm5vdGUpOwogfQogCiBzdGF0aWMgdm9pZCByZXNldF9kdW1wX2N0eChjb25zdCBjaGFyICp1cmwpCkBAIC0yMDksNyArMjA5LDcgQEAKIHN0YXRpYyB2b2lkIGhhbmRsZV9ub2RlKHZvaWQpCiB7CiAJY29uc3QgdWludDMyX3QgdHlwZSA9IG5vZGVfY3R4LnR5cGU7Ci0JY29uc3QgaW50IGhhdmVfcHJvcHMgPSBub2RlX2N0eC5wcm9wTGVuZ3RoICE9IExFTkdUSF9VTktOT1dOOworCWNvbnN0IGludCBoYXZlX3Byb3BzID0gbm9kZV9jdHgucHJvcF9sZW5ndGggIT0gLTE7CiAJY29uc3QgaW50IGhhdmVfdGV4dCA9IG5vZGVfY3R4LnRleHRfbGVuZ3RoICE9IC0xOwogCS8qCiAJICogT2xkIHRleHQgZm9yIHRoaXMgbm9kZToKQEAgLTI3Myw3ICsyNzMsNyBAQAogCWlmIChoYXZlX3Byb3BzKSB7CiAJCWlmICghbm9kZV9jdHgucHJvcF9kZWx0YSkKIAkJCW5vZGVfY3R4LnR5cGUgPSB0eXBlOwotCQlpZiAobm9kZV9jdHgucHJvcExlbmd0aCkKKwkJaWYgKG5vZGVfY3R4LnByb3BfbGVuZ3RoKQogCQkJcmVhZF9wcm9wcygpOwogCX0KIApAQCAtMzAwLDIyICszMDAsMjkgQEAKIAkJCQlub2RlX2N0eC50ZXh0X2xlbmd0aCwgJmlucHV0KTsKIH0KIAotc3RhdGljIHZvaWQgYmVnaW5fcmV2aXNpb24odm9pZCkKK3N0YXRpYyB2b2lkIGJlZ2luX3JldmlzaW9uKGNvbnN0IGNoYXIgKnJlbW90ZV9yZWYpCiB7CiAJaWYgKCFyZXZfY3R4LnJldmlzaW9uKQkvKiByZXZpc2lvbiAwIGdldHMgbm8gZ2l0IGNvbW1pdC4gKi8KIAkJcmV0dXJuOwogCWZhc3RfZXhwb3J0X2JlZ2luX2NvbW1pdChyZXZfY3R4LnJldmlzaW9uLCByZXZfY3R4LmF1dGhvci5idWYsCiAJCSZyZXZfY3R4LmxvZywgZHVtcF9jdHgudXVpZC5idWYsIGR1bXBfY3R4LnVybC5idWYsCi0JCXJldl9jdHgudGltZXN0YW1wKTsKKwkJcmV2X2N0eC50aW1lc3RhbXAsIHJlbW90ZV9yZWYpOwogfQogCi1zdGF0aWMgdm9pZCBlbmRfcmV2aXNpb24odm9pZCkKK3N0YXRpYyB2b2lkIGVuZF9yZXZpc2lvbihjb25zdCBjaGFyICpub3RlX3JlZikKIHsKLQlpZiAocmV2X2N0eC5yZXZpc2lvbikKKwlzdHJ1Y3Qgc3RyYnVmIG1hcmsgPSBTVFJCVUZfSU5JVDsKKwlpZiAocmV2X2N0eC5yZXZpc2lvbikgewogCQlmYXN0X2V4cG9ydF9lbmRfY29tbWl0KHJldl9jdHgucmV2aXNpb24pOworCQlmYXN0X2V4cG9ydF9iZWdpbl9ub3RlKHJldl9jdHgucmV2aXNpb24sICJyZW1vdGUtc3ZuIiwKKwkJCQkiTm90ZSBjcmVhdGVkIGJ5IHJlbW90ZS1zdm4uIiwgcmV2X2N0eC50aW1lc3RhbXAsIG5vdGVfcmVmKTsKKwkJc3RyYnVmX2FkZGYoJm1hcmssICI6JSJQUkl1MzIsIHJldl9jdHgucmV2aXNpb24pOworCQlmYXN0X2V4cG9ydF9ub3RlKG1hcmsuYnVmLCAiaW5saW5lIik7CisJCWZhc3RfZXhwb3J0X2J1Zl90b19kYXRhKCZyZXZfY3R4Lm5vdGUpOworCX0KIH0KIAotdm9pZCBzdm5kdW1wX3JlYWQoY29uc3QgY2hhciAqdXJsKQordm9pZCBzdm5kdW1wX3JlYWQoY29uc3QgY2hhciAqdXJsLCBjb25zdCBjaGFyICpsb2NhbF9yZWYsIGNvbnN0IGNoYXIgKm5vdGVzX3JlZikKIHsKIAljaGFyICp2YWw7CiAJY2hhciAqdDsKQEAgLTM1NCwyNiArMzYxLDI5IEBACiAJCQlpZiAoYWN0aXZlX2N0eCA9PSBOT0RFX0NUWCkKIAkJCQloYW5kbGVfbm9kZSgpOwogCQkJaWYgKGFjdGl2ZV9jdHggPT0gUkVWX0NUWCkKLQkJCQliZWdpbl9yZXZpc2lvbigpOworCQkJCWJlZ2luX3JldmlzaW9uKGxvY2FsX3JlZik7CiAJCQlpZiAoYWN0aXZlX2N0eCAhPSBEVU1QX0NUWCkKLQkJCQllbmRfcmV2aXNpb24oKTsKKwkJCQllbmRfcmV2aXNpb24obm90ZXNfcmVmKTsKIAkJCWFjdGl2ZV9jdHggPSBSRVZfQ1RYOwogCQkJcmVzZXRfcmV2X2N0eChhdG9pKHZhbCkpOworCQkJc3RyYnVmX2FkZGYoJnJldl9jdHgubm90ZSwgIiVzXG4iLCB0KTsKIAkJCWJyZWFrOwogCQljYXNlIHNpemVvZigiTm9kZS1wYXRoIik6Ci0JCQlpZiAocHJlZml4Y21wKHQsICJOb2RlLSIpKQorCQkJaWYgKGNvbnN0Y21wKHQsICJOb2RlLSIpKQogCQkJCWNvbnRpbnVlOwogCQkJaWYgKCFjb25zdGNtcCh0ICsgc3RybGVuKCJOb2RlLSIpLCAicGF0aCIpKSB7CiAJCQkJaWYgKGFjdGl2ZV9jdHggPT0gTk9ERV9DVFgpCiAJCQkJCWhhbmRsZV9ub2RlKCk7CiAJCQkJaWYgKGFjdGl2ZV9jdHggPT0gUkVWX0NUWCkKLQkJCQkJYmVnaW5fcmV2aXNpb24oKTsKKwkJCQkJYmVnaW5fcmV2aXNpb24obG9jYWxfcmVmKTsKIAkJCQlhY3RpdmVfY3R4ID0gTk9ERV9DVFg7CiAJCQkJcmVzZXRfbm9kZV9jdHgodmFsKTsKKwkJCQlzdHJidWZfYWRkZigmcmV2X2N0eC5ub3RlLCAiJXNcbiIsIHQpOwogCQkJCWJyZWFrOwogCQkJfQogCQkJaWYgKGNvbnN0Y21wKHQgKyBzdHJsZW4oIk5vZGUtIiksICJraW5kIikpCiAJCQkJY29udGludWU7CisJCQlzdHJidWZfYWRkZigmcmV2X2N0eC5ub3RlLCAiJXNcbiIsIHQpOwogCQkJaWYgKCFzdHJjbXAodmFsLCAiZGlyIikpCiAJCQkJbm9kZV9jdHgudHlwZSA9IFJFUE9fTU9ERV9ESVI7CiAJCQllbHNlIGlmICghc3RyY21wKHZhbCwgImZpbGUiKSkKQEAgLTM4NCw2ICszOTQsNyBAQAogCQljYXNlIHNpemVvZigiTm9kZS1hY3Rpb24iKToKIAkJCWlmIChjb25zdGNtcCh0LCAiTm9kZS1hY3Rpb24iKSkKIAkJCQljb250aW51ZTsKKwkJCXN0cmJ1Zl9hZGRmKCZyZXZfY3R4Lm5vdGUsICIlc1xuIiwgdCk7CiAJCQlpZiAoIXN0cmNtcCh2YWwsICJkZWxldGUiKSkgewogCQkJCW5vZGVfY3R4LmFjdGlvbiA9IE5PREVBQ1RfREVMRVRFOwogCQkJfSBlbHNlIGlmICghc3RyY21wKHZhbCwgImFkZCIpKSB7CkBAIC00MDIsMjkgKzQxMywzNSBAQAogCQkJCWNvbnRpbnVlOwogCQkJc3RyYnVmX3Jlc2V0KCZub2RlX2N0eC5zcmMpOwogCQkJc3RyYnVmX2FkZHN0cigmbm9kZV9jdHguc3JjLCB2YWwpOworCQkJc3RyYnVmX2FkZGYoJnJldl9jdHgubm90ZSwgIiVzXG4iLCB0KTsKIAkJCWJyZWFrOwogCQljYXNlIHNpemVvZigiTm9kZS1jb3B5ZnJvbS1yZXYiKToKIAkJCWlmIChjb25zdGNtcCh0LCAiTm9kZS1jb3B5ZnJvbS1yZXYiKSkKIAkJCQljb250aW51ZTsKIAkJCW5vZGVfY3R4LnNyY1JldiA9IGF0b2kodmFsKTsKKwkJCXN0cmJ1Zl9hZGRmKCZyZXZfY3R4Lm5vdGUsICIlc1xuIiwgdCk7CiAJCQlicmVhazsKIAkJY2FzZSBzaXplb2YoIlRleHQtY29udGVudC1sZW5ndGgiKToKLQkJCWlmICghY29uc3RjbXAodCwgIlRleHQtY29udGVudC1sZW5ndGgiKSkgeworCQkJaWYgKGNvbnN0Y21wKHQsICJUZXh0IikgJiYgY29uc3RjbXAodCwgIlByb3AiKSkKKwkJCQljb250aW51ZTsKKwkJCWlmIChjb25zdGNtcCh0ICsgNCwgIi1jb250ZW50LWxlbmd0aCIpKQorCQkJCWNvbnRpbnVlOworCQkJewogCQkJCWNoYXIgKmVuZDsKLQkJCQl1aW50bWF4X3QgdGV4dGxlbjsKKwkJCQl1aW50bWF4X3QgbGVuOwogCi0JCQkJdGV4dGxlbiA9IHN0cnRvdW1heCh2YWwsICZlbmQsIDEwKTsKKwkJCQlsZW4gPSBzdHJ0b3VtYXgodmFsLCAmZW5kLCAxMCk7CiAJCQkJaWYgKCFpc2RpZ2l0KCp2YWwpIHx8ICplbmQpCiAJCQkJCWRpZSgiaW52YWxpZCBkdW1wOiBub24tbnVtZXJpYyBsZW5ndGggJXMiLCB2YWwpOwotCQkJCWlmICh0ZXh0bGVuID4gbWF4aW11bV9zaWduZWRfdmFsdWVfb2ZfdHlwZShvZmZfdCkpCisJCQkJaWYgKGxlbiA+IG1heGltdW1fc2lnbmVkX3ZhbHVlX29mX3R5cGUob2ZmX3QpKQogCQkJCQlkaWUoInVucmVwcmVzZW50YWJsZSBsZW5ndGggaW4gZHVtcDogJXMiLCB2YWwpOwotCQkJCW5vZGVfY3R4LnRleHRfbGVuZ3RoID0gKG9mZl90KSB0ZXh0bGVuOworCisJCQkJaWYgKCp0ID09ICdUJykKKwkJCQkJbm9kZV9jdHgudGV4dF9sZW5ndGggPSAob2ZmX3QpIGxlbjsKKwkJCQllbHNlCisJCQkJCW5vZGVfY3R4LnByb3BfbGVuZ3RoID0gKG9mZl90KSBsZW47CiAJCQkJYnJlYWs7CiAJCQl9Ci0JCQlpZiAoY29uc3RjbXAodCwgIlByb3AtY29udGVudC1sZW5ndGgiKSkKLQkJCQljb250aW51ZTsKLQkJCW5vZGVfY3R4LnByb3BMZW5ndGggPSBhdG9pKHZhbCk7Ci0JCQlicmVhazsKIAkJY2FzZSBzaXplb2YoIlRleHQtZGVsdGEiKToKIAkJCWlmICghY29uc3RjbXAodCwgIlRleHQtZGVsdGEiKSkgewogCQkJCW5vZGVfY3R4LnRleHRfZGVsdGEgPSAhc3RyY21wKHZhbCwgInRydWUiKTsKQEAgLTQ2MCwyNSArNDc3LDQwIEBACiAJaWYgKGFjdGl2ZV9jdHggPT0gTk9ERV9DVFgpCiAJCWhhbmRsZV9ub2RlKCk7CiAJaWYgKGFjdGl2ZV9jdHggPT0gUkVWX0NUWCkKLQkJYmVnaW5fcmV2aXNpb24oKTsKKwkJYmVnaW5fcmV2aXNpb24obG9jYWxfcmVmKTsKIAlpZiAoYWN0aXZlX2N0eCAhPSBEVU1QX0NUWCkKLQkJZW5kX3JldmlzaW9uKCk7CisJCWVuZF9yZXZpc2lvbihub3Rlc19yZWYpOwogfQogCi1pbnQgc3ZuZHVtcF9pbml0KGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorc3RhdGljIHZvaWQgaW5pdChpbnQgcmVwb3J0X2ZkKQogewotCWlmIChidWZmZXJfaW5pdCgmaW5wdXQsIGZpbGVuYW1lKSkKLQkJcmV0dXJuIGVycm9yKCJjYW5ub3Qgb3BlbiAlczogJXMiLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKLQlmYXN0X2V4cG9ydF9pbml0KFJFUE9SVF9GSUxFTk8pOworCWZhc3RfZXhwb3J0X2luaXQocmVwb3J0X2ZkKTsKIAlzdHJidWZfaW5pdCgmZHVtcF9jdHgudXVpZCwgNDA5Nik7CiAJc3RyYnVmX2luaXQoJmR1bXBfY3R4LnVybCwgNDA5Nik7CiAJc3RyYnVmX2luaXQoJnJldl9jdHgubG9nLCA0MDk2KTsKIAlzdHJidWZfaW5pdCgmcmV2X2N0eC5hdXRob3IsIDQwOTYpOworCXN0cmJ1Zl9pbml0KCZyZXZfY3R4Lm5vdGUsIDQwOTYpOwogCXN0cmJ1Zl9pbml0KCZub2RlX2N0eC5zcmMsIDQwOTYpOwogCXN0cmJ1Zl9pbml0KCZub2RlX2N0eC5kc3QsIDQwOTYpOwogCXJlc2V0X2R1bXBfY3R4KE5VTEwpOwogCXJlc2V0X3Jldl9jdHgoMCk7CiAJcmVzZXRfbm9kZV9jdHgoTlVMTCk7CisJcmV0dXJuOworfQorCitpbnQgc3ZuZHVtcF9pbml0KGNvbnN0IGNoYXIgKmZpbGVuYW1lKQoreworCWlmIChidWZmZXJfaW5pdCgmaW5wdXQsIGZpbGVuYW1lKSkKKwkJcmV0dXJuIGVycm9yKCJjYW5ub3Qgb3BlbiAlczogJXMiLCBmaWxlbmFtZSA/IGZpbGVuYW1lIDogIk5VTEwiLCBzdHJlcnJvcihlcnJubykpOworCWluaXQoUkVQT1JUX0ZJTEVOTyk7CisJcmV0dXJuIDA7Cit9CisKK2ludCBzdm5kdW1wX2luaXRfZmQoaW50IGluX2ZkLCBpbnQgYmFja19mZCkKK3sKKwlpZihidWZmZXJfZmRpbml0KCZpbnB1dCwgeGR1cChpbl9mZCkpKQorCQlyZXR1cm4gZXJyb3IoImNhbm5vdCBvcGVuIGZkICVkOiAlcyIsIGluX2ZkLCBzdHJlcnJvcihlcnJubykpOworCWluaXQoeGR1cChiYWNrX2ZkKSk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTQ4OSw2ICs1MjEsOCBAQAogCXJlc2V0X3Jldl9jdHgoMCk7CiAJcmVzZXRfbm9kZV9jdHgoTlVMTCk7CiAJc3RyYnVmX3JlbGVhc2UoJnJldl9jdHgubG9nKTsKKwlzdHJidWZfcmVsZWFzZSgmcmV2X2N0eC5hdXRob3IpOworCXN0cmJ1Zl9yZWxlYXNlKCZyZXZfY3R4Lm5vdGUpOwogCXN0cmJ1Zl9yZWxlYXNlKCZub2RlX2N0eC5zcmMpOwogCXN0cmJ1Zl9yZWxlYXNlKCZub2RlX2N0eC5kc3QpOwogCWlmIChidWZmZXJfZGVpbml0KCZpbnB1dCkpCkBAIC00OTksOCArNTMzLDYgQEAKIAogdm9pZCBzdm5kdW1wX3Jlc2V0KHZvaWQpCiB7Ci0JZmFzdF9leHBvcnRfcmVzZXQoKTsKLQlidWZmZXJfcmVzZXQoJmlucHV0KTsKIAlzdHJidWZfcmVsZWFzZSgmZHVtcF9jdHgudXVpZCk7CiAJc3RyYnVmX3JlbGVhc2UoJmR1bXBfY3R4LnVybCk7CiAJc3RyYnVmX3JlbGVhc2UoJnJldl9jdHgubG9nKTsKZGlmZiAtLWdpdCBhL3Zjcy1zdm4vc3ZuZHVtcC5oIGIvdmNzLXN2bi9zdm5kdW1wLmgKaW5kZXggZGY5Y2ViMC4uYjhlYjEyOSAxMDA2NDQKLS0tIGEvdmNzLXN2bi9zdm5kdW1wLmgKKysrIGIvdmNzLXN2bi9zdm5kdW1wLmgKQEAgLTIsNyArMiw4IEBACiAjZGVmaW5lIFNWTkRVTVBfSF8KIAogaW50IHN2bmR1bXBfaW5pdChjb25zdCBjaGFyICpmaWxlbmFtZSk7Ci12b2lkIHN2bmR1bXBfcmVhZChjb25zdCBjaGFyICp1cmwpOworaW50IHN2bmR1bXBfaW5pdF9mZChpbnQgaW5fZmQsIGludCBiYWNrX2ZkKTsKK3ZvaWQgc3ZuZHVtcF9yZWFkKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhciAqbG9jYWxfcmVmLCBjb25zdCBjaGFyICpub3Rlc19yZWYpOwogdm9pZCBzdm5kdW1wX2RlaW5pdCh2b2lkKTsKIHZvaWQgc3ZuZHVtcF9yZXNldCh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvdmVyc2lvbi5jIGIvdmVyc2lvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMDZhODAKLS0tIC9kZXYvbnVsbAorKysgYi92ZXJzaW9uLmMKQEAgLTAsMCArMSwzOCBAQAorI2luY2x1ZGUgImdpdC1jb21wYXQtdXRpbC5oIgorI2luY2x1ZGUgInZlcnNpb24uaCIKKyNpbmNsdWRlICJzdHJidWYuaCIKKworY29uc3QgY2hhciBnaXRfdmVyc2lvbl9zdHJpbmdbXSA9IEdJVF9WRVJTSU9OOworCitjb25zdCBjaGFyICpnaXRfdXNlcl9hZ2VudCh2b2lkKQoreworCXN0YXRpYyBjb25zdCBjaGFyICphZ2VudCA9IE5VTEw7CisKKwlpZiAoIWFnZW50KSB7CisJCWFnZW50ID0gZ2V0ZW52KCJHSVRfVVNFUl9BR0VOVCIpOworCQlpZiAoIWFnZW50KQorCQkJYWdlbnQgPSBHSVRfVVNFUl9BR0VOVDsKKwl9CisKKwlyZXR1cm4gYWdlbnQ7Cit9CisKK2NvbnN0IGNoYXIgKmdpdF91c2VyX2FnZW50X3Nhbml0aXplZCh2b2lkKQoreworCXN0YXRpYyBjb25zdCBjaGFyICphZ2VudCA9IE5VTEw7CisKKwlpZiAoIWFnZW50KSB7CisJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisJCWludCBpOworCisJCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgZ2l0X3VzZXJfYWdlbnQoKSk7CisJCXN0cmJ1Zl90cmltKCZidWYpOworCQlmb3IgKGkgPSAwOyBpIDwgYnVmLmxlbjsgaSsrKSB7CisJCQlpZiAoYnVmLmJ1ZltpXSA8PSAzMiB8fCBidWYuYnVmW2ldID49IDEyNykKKwkJCQlidWYuYnVmW2ldID0gJy4nOworCQl9CisJCWFnZW50ID0gYnVmLmJ1ZjsKKwl9CisKKwlyZXR1cm4gYWdlbnQ7Cit9CmRpZmYgLS1naXQgYS92ZXJzaW9uLmggYi92ZXJzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkxMWE0ZgotLS0gL2Rldi9udWxsCisrKyBiL3ZlcnNpb24uaApAQCAtMCwwICsxLDkgQEAKKyNpZm5kZWYgVkVSU0lPTl9ICisjZGVmaW5lIFZFUlNJT05fSAorCitleHRlcm4gY29uc3QgY2hhciBnaXRfdmVyc2lvbl9zdHJpbmdbXTsKKworY29uc3QgY2hhciAqZ2l0X3VzZXJfYWdlbnQodm9pZCk7Citjb25zdCBjaGFyICpnaXRfdXNlcl9hZ2VudF9zYW5pdGl6ZWQodm9pZCk7CisKKyNlbmRpZiAvKiBWRVJTSU9OX0ggKi8KZGlmZiAtLWdpdCBhL3dpbGRtYXRjaC5jIGIvd2lsZG1hdGNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkxYmE5OQotLS0gL2Rldi9udWxsCisrKyBiL3dpbGRtYXRjaC5jCkBAIC0wLDAgKzEsMjc5IEBACisvKgorKiogIERvIHNoZWxsLXN0eWxlIHBhdHRlcm4gbWF0Y2hpbmcgZm9yID8sIFwsIFtdLCBhbmQgKiBjaGFyYWN0ZXJzLgorKiogIEl0IGlzIDhiaXQgY2xlYW4uCisqKgorKiogIFdyaXR0ZW4gYnkgUmljaCAkYWx6LCBtaXJyb3IhcnMsIFdlZCBOb3YgMjYgMTk6MDM6MTcgRVNUIDE5ODYuCisqKiAgUmljaCAkYWx6IGlzIG5vdyA8cnNhbHpAYmJuLmNvbT4uCisqKgorKiogIE1vZGlmaWVkIGJ5IFdheW5lIERhdmlzb24gdG8gc3BlY2lhbC1jYXNlICcvJyBtYXRjaGluZywgdG8gbWFrZSAnKionCisqKiAgd29yayBkaWZmZXJlbnRseSB0aGFuICcqJywgYW5kIHRvIGZpeCB0aGUgY2hhcmFjdGVyLWNsYXNzIGNvZGUuCisqLworCisjaW5jbHVkZSAiY2FjaGUuaCIKKyNpbmNsdWRlICJ3aWxkbWF0Y2guaCIKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVjaGFyOworCisvKiBXaGF0IGNoYXJhY3RlciBtYXJrcyBhbiBpbnZlcnRlZCBjaGFyYWN0ZXIgY2xhc3M/ICovCisjZGVmaW5lIE5FR0FURV9DTEFTUwknIScKKyNkZWZpbmUgTkVHQVRFX0NMQVNTMgknXicKKworI2RlZmluZSBDQ19FUShjbGFzcywgbGVuLCBsaXRtYXRjaCkgKChsZW4pID09IHNpemVvZiAobGl0bWF0Y2gpLTEgXAorCQkJCSAgICAmJiAqKGNsYXNzKSA9PSAqKGxpdG1hdGNoKSBcCisJCQkJICAgICYmIHN0cm5jbXAoKGNoYXIqKWNsYXNzLCBsaXRtYXRjaCwgbGVuKSA9PSAwKQorCisjaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgIWRlZmluZWQgaXNhc2NpaQorIyBkZWZpbmUgSVNBU0NJSShjKSAxCisjZWxzZQorIyBkZWZpbmUgSVNBU0NJSShjKSBpc2FzY2lpKGMpCisjZW5kaWYKKworI2lmZGVmIGlzYmxhbmsKKyMgZGVmaW5lIElTQkxBTksoYykgKElTQVNDSUkoYykgJiYgaXNibGFuayhjKSkKKyNlbHNlCisjIGRlZmluZSBJU0JMQU5LKGMpICgoYykgPT0gJyAnIHx8IChjKSA9PSAnXHQnKQorI2VuZGlmCisKKyNpZmRlZiBpc2dyYXBoCisjIGRlZmluZSBJU0dSQVBIKGMpIChJU0FTQ0lJKGMpICYmIGlzZ3JhcGgoYykpCisjZWxzZQorIyBkZWZpbmUgSVNHUkFQSChjKSAoSVNBU0NJSShjKSAmJiBpc3ByaW50KGMpICYmICFpc3NwYWNlKGMpKQorI2VuZGlmCisKKyNkZWZpbmUgSVNQUklOVChjKSAoSVNBU0NJSShjKSAmJiBpc3ByaW50KGMpKQorI2RlZmluZSBJU0RJR0lUKGMpIChJU0FTQ0lJKGMpICYmIGlzZGlnaXQoYykpCisjZGVmaW5lIElTQUxOVU0oYykgKElTQVNDSUkoYykgJiYgaXNhbG51bShjKSkKKyNkZWZpbmUgSVNBTFBIQShjKSAoSVNBU0NJSShjKSAmJiBpc2FscGhhKGMpKQorI2RlZmluZSBJU0NOVFJMKGMpIChJU0FTQ0lJKGMpICYmIGlzY250cmwoYykpCisjZGVmaW5lIElTTE9XRVIoYykgKElTQVNDSUkoYykgJiYgaXNsb3dlcihjKSkKKyNkZWZpbmUgSVNQVU5DVChjKSAoSVNBU0NJSShjKSAmJiBpc3B1bmN0KGMpKQorI2RlZmluZSBJU1NQQUNFKGMpIChJU0FTQ0lJKGMpICYmIGlzc3BhY2UoYykpCisjZGVmaW5lIElTVVBQRVIoYykgKElTQVNDSUkoYykgJiYgaXN1cHBlcihjKSkKKyNkZWZpbmUgSVNYRElHSVQoYykgKElTQVNDSUkoYykgJiYgaXN4ZGlnaXQoYykpCisKKy8qIE1hdGNoIHBhdHRlcm4gInAiIGFnYWluc3QgInRleHQiICovCitzdGF0aWMgaW50IGRvd2lsZChjb25zdCB1Y2hhciAqcCwgY29uc3QgdWNoYXIgKnRleHQsIHVuc2lnbmVkIGludCBmbGFncykKK3sKKwl1Y2hhciBwX2NoOworCWNvbnN0IHVjaGFyICpwYXR0ZXJuID0gcDsKKworCWZvciAoIDsgKHBfY2ggPSAqcCkgIT0gJ1wwJzsgdGV4dCsrLCBwKyspIHsKKwkJaW50IG1hdGNoZWQsIG1hdGNoX3NsYXNoLCBuZWdhdGVkOworCQl1Y2hhciB0X2NoLCBwcmV2X2NoOworCQlpZiAoKHRfY2ggPSAqdGV4dCkgPT0gJ1wwJyAmJiBwX2NoICE9ICcqJykKKwkJCXJldHVybiBXTV9BQk9SVF9BTEw7CisJCWlmICgoZmxhZ3MgJiBXTV9DQVNFRk9MRCkgJiYgSVNVUFBFUih0X2NoKSkKKwkJCXRfY2ggPSB0b2xvd2VyKHRfY2gpOworCQlpZiAoKGZsYWdzICYgV01fQ0FTRUZPTEQpICYmIElTVVBQRVIocF9jaCkpCisJCQlwX2NoID0gdG9sb3dlcihwX2NoKTsKKwkJc3dpdGNoIChwX2NoKSB7CisJCWNhc2UgJ1xcJzoKKwkJCS8qIExpdGVyYWwgbWF0Y2ggd2l0aCBmb2xsb3dpbmcgY2hhcmFjdGVyLiAgTm90ZSB0aGF0IHRoZSB0ZXN0CisJCQkgKiBpbiAiZGVmYXVsdCIgaGFuZGxlcyB0aGUgcFsxXSA9PSAnXDAnIGZhaWx1cmUgY2FzZS4gKi8KKwkJCXBfY2ggPSAqKytwOworCQkJLyogRkFMTFRIUk9VR0ggKi8KKwkJZGVmYXVsdDoKKwkJCWlmICh0X2NoICE9IHBfY2gpCisJCQkJcmV0dXJuIFdNX05PTUFUQ0g7CisJCQljb250aW51ZTsKKwkJY2FzZSAnPyc6CisJCQkvKiBNYXRjaCBhbnl0aGluZyBidXQgJy8nLiAqLworCQkJaWYgKChmbGFncyAmIFdNX1BBVEhOQU1FKSAmJiB0X2NoID09ICcvJykKKwkJCQlyZXR1cm4gV01fTk9NQVRDSDsKKwkJCWNvbnRpbnVlOworCQljYXNlICcqJzoKKwkJCWlmICgqKytwID09ICcqJykgeworCQkJCWNvbnN0IHVjaGFyICpwcmV2X3AgPSBwIC0gMjsKKwkJCQl3aGlsZSAoKisrcCA9PSAnKicpIHt9CisJCQkJaWYgKCEoZmxhZ3MgJiBXTV9QQVRITkFNRSkpCisJCQkJCS8qIHdpdGhvdXQgV01fUEFUSE5BTUUsICcqJyA9PSAnKionICovCisJCQkJCW1hdGNoX3NsYXNoID0gMTsKKwkJCQllbHNlIGlmICgocHJldl9wIDwgcGF0dGVybiB8fCAqcHJldl9wID09ICcvJykgJiYKKwkJCQkgICAgKCpwID09ICdcMCcgfHwgKnAgPT0gJy8nIHx8CisJCQkJICAgICAocFswXSA9PSAnXFwnICYmIHBbMV0gPT0gJy8nKSkpIHsKKwkJCQkJLyoKKwkJCQkJICogQXNzdW1pbmcgd2UgYWxyZWFkeSBtYXRjaCAnZm9vLycgYW5kIGFyZSBhdAorCQkJCQkgKiA8c3RhciBzdGFyIHNsYXNoPiwganVzdCBhc3N1bWUgaXQgbWF0Y2hlcworCQkJCQkgKiBub3RoaW5nIGFuZCBnbyBhaGVhZCBtYXRjaCB0aGUgcmVzdCBvZiB0aGUKKwkJCQkJICogcGF0dGVybiB3aXRoIHRoZSByZW1haW5pbmcgc3RyaW5nLiBUaGlzCisJCQkJCSAqIGhlbHBzIG1ha2UgZm9vLzwqPjwqPi9iYXIgKDw+IGJlY2F1c2UKKwkJCQkJICogb3RoZXJ3aXNlIGl0IGJyZWFrcyBDIGNvbW1lbnQgc3ludGF4KSBtYXRjaAorCQkJCQkgKiBib3RoIGZvby9iYXIgYW5kIGZvby9hL2Jhci4KKwkJCQkJICovCisJCQkJCWlmIChwWzBdID09ICcvJyAmJgorCQkJCQkgICAgZG93aWxkKHAgKyAxLCB0ZXh0LCBmbGFncykgPT0gV01fTUFUQ0gpCisJCQkJCQlyZXR1cm4gV01fTUFUQ0g7CisJCQkJCW1hdGNoX3NsYXNoID0gMTsKKwkJCQl9IGVsc2UKKwkJCQkJcmV0dXJuIFdNX0FCT1JUX01BTEZPUk1FRDsKKwkJCX0gZWxzZQorCQkJCS8qIHdpdGhvdXQgV01fUEFUSE5BTUUsICcqJyA9PSAnKionICovCisJCQkJbWF0Y2hfc2xhc2ggPSBmbGFncyAmIFdNX1BBVEhOQU1FID8gMCA6IDE7CisJCQlpZiAoKnAgPT0gJ1wwJykgeworCQkJCS8qIFRyYWlsaW5nICIqKiIgbWF0Y2hlcyBldmVyeXRoaW5nLiAgVHJhaWxpbmcgIioiIG1hdGNoZXMKKwkJCQkgKiBvbmx5IGlmIHRoZXJlIGFyZSBubyBtb3JlIHNsYXNoIGNoYXJhY3RlcnMuICovCisJCQkJaWYgKCFtYXRjaF9zbGFzaCkgeworCQkJCQlpZiAoc3RyY2hyKChjaGFyKil0ZXh0LCAnLycpICE9IE5VTEwpCisJCQkJCQlyZXR1cm4gV01fTk9NQVRDSDsKKwkJCQl9CisJCQkJcmV0dXJuIFdNX01BVENIOworCQkJfSBlbHNlIGlmICghbWF0Y2hfc2xhc2ggJiYgKnAgPT0gJy8nKSB7CisJCQkJLyoKKwkJCQkgKiBfb25lXyBhc3RlcmlzayBmb2xsb3dlZCBieSBhIHNsYXNoCisJCQkJICogd2l0aCBXTV9QQVRITkFNRSBtYXRjaGVzIHRoZSBuZXh0CisJCQkJICogZGlyZWN0b3J5CisJCQkJICovCisJCQkJY29uc3QgY2hhciAqc2xhc2ggPSBzdHJjaHIoKGNoYXIqKXRleHQsICcvJyk7CisJCQkJaWYgKCFzbGFzaCkKKwkJCQkJcmV0dXJuIFdNX05PTUFUQ0g7CisJCQkJdGV4dCA9IChjb25zdCB1Y2hhciopc2xhc2g7CisJCQkJLyogdGhlIHNsYXNoIGlzIGNvbnN1bWVkIGJ5IHRoZSB0b3AtbGV2ZWwgZm9yIGxvb3AgKi8KKwkJCQlicmVhazsKKwkJCX0KKwkJCXdoaWxlICgxKSB7CisJCQkJaWYgKHRfY2ggPT0gJ1wwJykKKwkJCQkJYnJlYWs7CisJCQkJLyoKKwkJCQkgKiBUcnkgdG8gYWR2YW5jZSBmYXN0ZXIgd2hlbiBhbiBhc3RlcmlzayBpcworCQkJCSAqIGZvbGxvd2VkIGJ5IGEgbGl0ZXJhbC4gV2Uga25vdyBpbiB0aGlzIGNhc2UKKwkJCQkgKiB0aGF0IHRoZSB0aGUgc3RyaW5nIGJlZm9yZSB0aGUgbGl0ZXJhbAorCQkJCSAqIG11c3QgYmVsb25nIHRvICIqIi4KKwkJCQkgKiBJZiBtYXRjaF9zbGFzaCBpcyBmYWxzZSwgZG8gbm90IGxvb2sgcGFzdAorCQkJCSAqIHRoZSBmaXJzdCBzbGFzaCBhcyBpdCBjYW5ub3QgYmVsb25nIHRvICcqJy4KKwkJCQkgKi8KKwkJCQlpZiAoIWlzX2dsb2Jfc3BlY2lhbCgqcCkpIHsKKwkJCQkJcF9jaCA9ICpwOworCQkJCQlpZiAoKGZsYWdzICYgV01fQ0FTRUZPTEQpICYmIElTVVBQRVIocF9jaCkpCisJCQkJCQlwX2NoID0gdG9sb3dlcihwX2NoKTsKKwkJCQkJd2hpbGUgKCh0X2NoID0gKnRleHQpICE9ICdcMCcgJiYKKwkJCQkJICAgICAgIChtYXRjaF9zbGFzaCB8fCB0X2NoICE9ICcvJykpIHsKKwkJCQkJCWlmICgoZmxhZ3MgJiBXTV9DQVNFRk9MRCkgJiYgSVNVUFBFUih0X2NoKSkKKwkJCQkJCQl0X2NoID0gdG9sb3dlcih0X2NoKTsKKwkJCQkJCWlmICh0X2NoID09IHBfY2gpCisJCQkJCQkJYnJlYWs7CisJCQkJCQl0ZXh0Kys7CisJCQkJCX0KKwkJCQkJaWYgKHRfY2ggIT0gcF9jaCkKKwkJCQkJCXJldHVybiBXTV9OT01BVENIOworCQkJCX0KKwkJCQlpZiAoKG1hdGNoZWQgPSBkb3dpbGQocCwgdGV4dCwgZmxhZ3MpKSAhPSBXTV9OT01BVENIKSB7CisJCQkJCWlmICghbWF0Y2hfc2xhc2ggfHwgbWF0Y2hlZCAhPSBXTV9BQk9SVF9UT19TVEFSU1RBUikKKwkJCQkJCXJldHVybiBtYXRjaGVkOworCQkJCX0gZWxzZSBpZiAoIW1hdGNoX3NsYXNoICYmIHRfY2ggPT0gJy8nKQorCQkJCQlyZXR1cm4gV01fQUJPUlRfVE9fU1RBUlNUQVI7CisJCQkJdF9jaCA9ICorK3RleHQ7CisJCQl9CisJCQlyZXR1cm4gV01fQUJPUlRfQUxMOworCQljYXNlICdbJzoKKwkJCXBfY2ggPSAqKytwOworI2lmZGVmIE5FR0FURV9DTEFTUzIKKwkJCWlmIChwX2NoID09IE5FR0FURV9DTEFTUzIpCisJCQkJcF9jaCA9IE5FR0FURV9DTEFTUzsKKyNlbmRpZgorCQkJLyogQXNzaWduIGxpdGVyYWwgMS8wIGJlY2F1c2Ugb2YgIm1hdGNoZWQiIGNvbXBhcmlzb24uICovCisJCQluZWdhdGVkID0gcF9jaCA9PSBORUdBVEVfQ0xBU1MgPyAxIDogMDsKKwkJCWlmIChuZWdhdGVkKSB7CisJCQkJLyogSW52ZXJ0ZWQgY2hhcmFjdGVyIGNsYXNzLiAqLworCQkJCXBfY2ggPSAqKytwOworCQkJfQorCQkJcHJldl9jaCA9IDA7CisJCQltYXRjaGVkID0gMDsKKwkJCWRvIHsKKwkJCQlpZiAoIXBfY2gpCisJCQkJCXJldHVybiBXTV9BQk9SVF9BTEw7CisJCQkJaWYgKHBfY2ggPT0gJ1xcJykgeworCQkJCQlwX2NoID0gKisrcDsKKwkJCQkJaWYgKCFwX2NoKQorCQkJCQkJcmV0dXJuIFdNX0FCT1JUX0FMTDsKKwkJCQkJaWYgKHRfY2ggPT0gcF9jaCkKKwkJCQkJCW1hdGNoZWQgPSAxOworCQkJCX0gZWxzZSBpZiAocF9jaCA9PSAnLScgJiYgcHJldl9jaCAmJiBwWzFdICYmIHBbMV0gIT0gJ10nKSB7CisJCQkJCXBfY2ggPSAqKytwOworCQkJCQlpZiAocF9jaCA9PSAnXFwnKSB7CisJCQkJCQlwX2NoID0gKisrcDsKKwkJCQkJCWlmICghcF9jaCkKKwkJCQkJCQlyZXR1cm4gV01fQUJPUlRfQUxMOworCQkJCQl9CisJCQkJCWlmICh0X2NoIDw9IHBfY2ggJiYgdF9jaCA+PSBwcmV2X2NoKQorCQkJCQkJbWF0Y2hlZCA9IDE7CisJCQkJCWVsc2UgaWYgKChmbGFncyAmIFdNX0NBU0VGT0xEKSAmJiBJU0xPV0VSKHRfY2gpKSB7CisJCQkJCQl1Y2hhciB0X2NoX3VwcGVyID0gdG91cHBlcih0X2NoKTsKKwkJCQkJCWlmICh0X2NoX3VwcGVyIDw9IHBfY2ggJiYgdF9jaF91cHBlciA+PSBwcmV2X2NoKQorCQkJCQkJCW1hdGNoZWQgPSAxOworCQkJCQl9CisJCQkJCXBfY2ggPSAwOyAvKiBUaGlzIG1ha2VzICJwcmV2X2NoIiBnZXQgc2V0IHRvIDAuICovCisJCQkJfSBlbHNlIGlmIChwX2NoID09ICdbJyAmJiBwWzFdID09ICc6JykgeworCQkJCQljb25zdCB1Y2hhciAqczsKKwkJCQkJaW50IGk7CisJCQkJCWZvciAocyA9IHAgKz0gMjsgKHBfY2ggPSAqcCkgJiYgcF9jaCAhPSAnXSc7IHArKykge30gLypTSEFSRUQgSVRFUkFUT1IqLworCQkJCQlpZiAoIXBfY2gpCisJCQkJCQlyZXR1cm4gV01fQUJPUlRfQUxMOworCQkJCQlpID0gcCAtIHMgLSAxOworCQkJCQlpZiAoaSA8IDAgfHwgcFstMV0gIT0gJzonKSB7CisJCQkJCQkvKiBEaWRuJ3QgZmluZCAiOl0iLCBzbyB0cmVhdCBsaWtlIGEgbm9ybWFsIHNldC4gKi8KKwkJCQkJCXAgPSBzIC0gMjsKKwkJCQkJCXBfY2ggPSAnWyc7CisJCQkJCQlpZiAodF9jaCA9PSBwX2NoKQorCQkJCQkJCW1hdGNoZWQgPSAxOworCQkJCQkJY29udGludWU7CisJCQkJCX0KKwkJCQkJaWYgKENDX0VRKHMsaSwgImFsbnVtIikpIHsKKwkJCQkJCWlmIChJU0FMTlVNKHRfY2gpKQorCQkJCQkJCW1hdGNoZWQgPSAxOworCQkJCQl9IGVsc2UgaWYgKENDX0VRKHMsaSwgImFscGhhIikpIHsKKwkJCQkJCWlmIChJU0FMUEhBKHRfY2gpKQorCQkJCQkJCW1hdGNoZWQgPSAxOworCQkJCQl9IGVsc2UgaWYgKENDX0VRKHMsaSwgImJsYW5rIikpIHsKKwkJCQkJCWlmIChJU0JMQU5LKHRfY2gpKQorCQkJCQkJCW1hdGNoZWQgPSAxOworCQkJCQl9IGVsc2UgaWYgKENDX0VRKHMsaSwgImNudHJsIikpIHsKKwkJCQkJCWlmIChJU0NOVFJMKHRfY2gpKQorCQkJCQkJCW1hdGNoZWQgPSAxOworCQkJCQl9IGVsc2UgaWYgKENDX0VRKHMsaSwgImRpZ2l0IikpIHsKKwkJCQkJCWlmIChJU0RJR0lUKHRfY2gpKQorCQkJCQkJCW1hdGNoZWQgPSAxOworCQkJCQl9IGVsc2UgaWYgKENDX0VRKHMsaSwgImdyYXBoIikpIHsKKwkJCQkJCWlmIChJU0dSQVBIKHRfY2gpKQorCQkJCQkJCW1hdGNoZWQgPSAxOworCQkJCQl9IGVsc2UgaWYgKENDX0VRKHMsaSwgImxvd2VyIikpIHsKKwkJCQkJCWlmIChJU0xPV0VSKHRfY2gpKQorCQkJCQkJCW1hdGNoZWQgPSAxOworCQkJCQl9IGVsc2UgaWYgKENDX0VRKHMsaSwgInByaW50IikpIHsKKwkJCQkJCWlmIChJU1BSSU5UKHRfY2gpKQorCQkJCQkJCW1hdGNoZWQgPSAxOworCQkJCQl9IGVsc2UgaWYgKENDX0VRKHMsaSwgInB1bmN0IikpIHsKKwkJCQkJCWlmIChJU1BVTkNUKHRfY2gpKQorCQkJCQkJCW1hdGNoZWQgPSAxOworCQkJCQl9IGVsc2UgaWYgKENDX0VRKHMsaSwgInNwYWNlIikpIHsKKwkJCQkJCWlmIChJU1NQQUNFKHRfY2gpKQorCQkJCQkJCW1hdGNoZWQgPSAxOworCQkJCQl9IGVsc2UgaWYgKENDX0VRKHMsaSwgInVwcGVyIikpIHsKKwkJCQkJCWlmIChJU1VQUEVSKHRfY2gpKQorCQkJCQkJCW1hdGNoZWQgPSAxOworCQkJCQkJZWxzZSBpZiAoKGZsYWdzICYgV01fQ0FTRUZPTEQpICYmIElTTE9XRVIodF9jaCkpCisJCQkJCQkJbWF0Y2hlZCA9IDE7CisJCQkJCX0gZWxzZSBpZiAoQ0NfRVEocyxpLCAieGRpZ2l0IikpIHsKKwkJCQkJCWlmIChJU1hESUdJVCh0X2NoKSkKKwkJCQkJCQltYXRjaGVkID0gMTsKKwkJCQkJfSBlbHNlIC8qIG1hbGZvcm1lZCBbOmNsYXNzOl0gc3RyaW5nICovCisJCQkJCQlyZXR1cm4gV01fQUJPUlRfQUxMOworCQkJCQlwX2NoID0gMDsgLyogVGhpcyBtYWtlcyAicHJldl9jaCIgZ2V0IHNldCB0byAwLiAqLworCQkJCX0gZWxzZSBpZiAodF9jaCA9PSBwX2NoKQorCQkJCQltYXRjaGVkID0gMTsKKwkJCX0gd2hpbGUgKHByZXZfY2ggPSBwX2NoLCAocF9jaCA9ICorK3ApICE9ICddJyk7CisJCQlpZiAobWF0Y2hlZCA9PSBuZWdhdGVkIHx8CisJCQkgICAgKChmbGFncyAmIFdNX1BBVEhOQU1FKSAmJiB0X2NoID09ICcvJykpCisJCQkJcmV0dXJuIFdNX05PTUFUQ0g7CisJCQljb250aW51ZTsKKwkJfQorCX0KKworCXJldHVybiAqdGV4dCA/IFdNX05PTUFUQ0ggOiBXTV9NQVRDSDsKK30KKworLyogTWF0Y2ggdGhlICJwYXR0ZXJuIiBhZ2FpbnN0IHRoZSAidGV4dCIgc3RyaW5nLiAqLworaW50IHdpbGRtYXRjaChjb25zdCBjaGFyICpwYXR0ZXJuLCBjb25zdCBjaGFyICp0ZXh0LAorCSAgICAgIHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IHdpbGRvcHRzICp3bykKK3sKKwlyZXR1cm4gZG93aWxkKChjb25zdCB1Y2hhciopcGF0dGVybiwgKGNvbnN0IHVjaGFyKil0ZXh0LCBmbGFncyk7Cit9CmRpZmYgLS1naXQgYS93aWxkbWF0Y2guaCBiL3dpbGRtYXRjaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwOTBjOGYKLS0tIC9kZXYvbnVsbAorKysgYi93aWxkbWF0Y2guaApAQCAtMCwwICsxLDE4IEBACisjaWZuZGVmIFdJTERNQVRDSF9ICisjZGVmaW5lIFdJTERNQVRDSF9ICisKKyNkZWZpbmUgV01fQ0FTRUZPTEQgMQorI2RlZmluZSBXTV9QQVRITkFNRSAyCisKKyNkZWZpbmUgV01fQUJPUlRfTUFMRk9STUVEIDIKKyNkZWZpbmUgV01fTk9NQVRDSCAxCisjZGVmaW5lIFdNX01BVENIIDAKKyNkZWZpbmUgV01fQUJPUlRfQUxMIC0xCisjZGVmaW5lIFdNX0FCT1JUX1RPX1NUQVJTVEFSIC0yCisKK3N0cnVjdCB3aWxkb3B0czsKKworaW50IHdpbGRtYXRjaChjb25zdCBjaGFyICpwYXR0ZXJuLCBjb25zdCBjaGFyICp0ZXh0LAorCSAgICAgIHVuc2lnbmVkIGludCBmbGFncywKKwkgICAgICBzdHJ1Y3Qgd2lsZG9wdHMgKndvKTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvd3JhcHBlci5jIGIvd3JhcHBlci5jCmluZGV4IGI1ZTMzZTQuLmRkN2VjYmIgMTAwNjQ0Ci0tLSBhL3dyYXBwZXIuYworKysgYi93cmFwcGVyLmMKQEAgLTIyOSw3ICsyMjksNyBAQAogCQlpbnQgc2F2ZWRfZXJybm8gPSBlcnJubzsKIAkJY29uc3QgY2hhciAqbm9ucmVsYXRpdmVfdGVtcGxhdGU7CiAKLQkJaWYgKCF0ZW1wbGF0ZVswXSkKKwkJaWYgKHN0cmxlbih0ZW1wbGF0ZSkgIT0gc3RybGVuKG9yaWd0ZW1wbGF0ZSkpCiAJCQl0ZW1wbGF0ZSA9IG9yaWd0ZW1wbGF0ZTsKIAogCQlub25yZWxhdGl2ZV90ZW1wbGF0ZSA9IGFic29sdXRlX3BhdGgodGVtcGxhdGUpOwpAQCAtNDAzLDYgKzQwMywzMyBAQAogCXJldHVybiBTX0lTR0lUTElOSyhtb2RlKSA/IHJtZGlyX29yX3dhcm4oZmlsZSkgOiB1bmxpbmtfb3Jfd2FybihmaWxlKTsKIH0KIAordm9pZCB3YXJuX29uX2luYWNjZXNzaWJsZShjb25zdCBjaGFyICpwYXRoKQoreworCXdhcm5pbmcoXygidW5hYmxlIHRvIGFjY2VzcyAnJXMnOiAlcyIpLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworfQorCitzdGF0aWMgaW50IGFjY2Vzc19lcnJvcl9pc19vayhpbnQgZXJyLCB1bnNpZ25lZCBmbGFnKQoreworCXJldHVybiBlcnIgPT0gRU5PRU5UIHx8IGVyciA9PSBFTk9URElSIHx8CisJCSgoZmxhZyAmIEFDQ0VTU19FQUNDRVNfT0spICYmIGVyciA9PSBFQUNDRVMpOworfQorCitpbnQgYWNjZXNzX29yX3dhcm4oY29uc3QgY2hhciAqcGF0aCwgaW50IG1vZGUsIHVuc2lnbmVkIGZsYWcpCit7CisJaW50IHJldCA9IGFjY2VzcyhwYXRoLCBtb2RlKTsKKwlpZiAocmV0ICYmICFhY2Nlc3NfZXJyb3JfaXNfb2soZXJybm8sIGZsYWcpKQorCQl3YXJuX29uX2luYWNjZXNzaWJsZShwYXRoKTsKKwlyZXR1cm4gcmV0OworfQorCitpbnQgYWNjZXNzX29yX2RpZShjb25zdCBjaGFyICpwYXRoLCBpbnQgbW9kZSwgdW5zaWduZWQgZmxhZykKK3sKKwlpbnQgcmV0ID0gYWNjZXNzKHBhdGgsIG1vZGUpOworCWlmIChyZXQgJiYgIWFjY2Vzc19lcnJvcl9pc19vayhlcnJubywgZmxhZykpCisJCWRpZV9lcnJubyhfKCJ1bmFibGUgdG8gYWNjZXNzICclcyciKSwgcGF0aCk7CisJcmV0dXJuIHJldDsKK30KKwogc3RydWN0IHBhc3N3ZCAqeGdldHB3dWlkX3NlbGYodm9pZCkKIHsKIAlzdHJ1Y3QgcGFzc3dkICpwdzsKZGlmZiAtLWdpdCBhL3dyaXRlX29yX2RpZS5jIGIvd3JpdGVfb3JfZGllLmMKaW5kZXggZDQ1YjUzNi4uYjUwZjk5YSAxMDA2NDQKLS0tIGEvd3JpdGVfb3JfZGllLmMKKysrIGIvd3JpdGVfb3JfZGllLmMKQEAgLTEsNSArMSwxNSBAQAogI2luY2x1ZGUgImNhY2hlLmgiCiAKK3N0YXRpYyB2b2lkIGNoZWNrX3BpcGUoaW50IGVycikKK3sKKwlpZiAoZXJyID09IEVQSVBFKSB7CisJCXNpZ25hbChTSUdQSVBFLCBTSUdfREZMKTsKKwkJcmFpc2UoU0lHUElQRSk7CisJCS8qIFNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dCBqdXN0IGluIGNhc2UuLi4gKi8KKwkJZXhpdCgxNDEpOworCX0KK30KKwogLyoKICAqIFNvbWUgY2FzZXMgdXNlIHN0ZGlvLCBidXQgd2FudCB0byBmbHVzaCBhZnRlciB0aGUgd3JpdGUKICAqIHRvIGdldCBlcnJvciBoYW5kbGluZyAoYW5kIHRvIGdldCBiZXR0ZXIgaW50ZXJhY3RpdmUKQEAgLTM0LDEzICs0NCw3IEBACiAJCQlyZXR1cm47CiAJfQogCWlmIChmZmx1c2goZikpIHsKLQkJLyoKLQkJICogT24gV2luZG93cywgRVBJUEUgaXMgcmV0dXJuZWQgb25seSBieSB0aGUgZmlyc3Qgd3JpdGUoKQotCQkgKiBhZnRlciB0aGUgcmVhZGluZyBlbmQgaGFzIGNsb3NlZCBpdHMgaGFuZGxlOyBzdWJzZXF1ZW50Ci0JCSAqIHdyaXRlKClzIHJldHVybiBFSU5WQUwuCi0JCSAqLwotCQlpZiAoZXJybm8gPT0gRVBJUEUgfHwgZXJybm8gPT0gRUlOVkFMKQotCQkJZXhpdCgwKTsKKwkJY2hlY2tfcGlwZShlcnJubyk7CiAJCWRpZV9lcnJubygid3JpdGUgZmFpbHVyZSBvbiAnJXMnIiwgZGVzYyk7CiAJfQogfQpAQCAtNTUsOCArNTksNyBAQAogdm9pZCB3cml0ZV9vcl9kaWUoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKIHsKIAlpZiAod3JpdGVfaW5fZnVsbChmZCwgYnVmLCBjb3VudCkgPCAwKSB7Ci0JCWlmIChlcnJubyA9PSBFUElQRSkKLQkJCWV4aXQoMCk7CisJCWNoZWNrX3BpcGUoZXJybm8pOwogCQlkaWVfZXJybm8oIndyaXRlIGVycm9yIik7CiAJfQogfQpAQCAtNjQsOCArNjcsNyBAQAogaW50IHdyaXRlX29yX3doaW5lX3BpcGUoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCwgY29uc3QgY2hhciAqbXNnKQogewogCWlmICh3cml0ZV9pbl9mdWxsKGZkLCBidWYsIGNvdW50KSA8IDApIHsKLQkJaWYgKGVycm5vID09IEVQSVBFKQotCQkJZXhpdCgwKTsKKwkJY2hlY2tfcGlwZShlcnJubyk7CiAJCWZwcmludGYoc3RkZXJyLCAiJXM6IHdyaXRlIGVycm9yICglcylcbiIsCiAJCQltc2csIHN0cmVycm9yKGVycm5vKSk7CiAJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvd3Qtc3RhdHVzLmMgYi93dC1zdGF0dXMuYwppbmRleCBkZDZkOGM0Li5iZjg0YTg2IDEwMDY0NAotLS0gYS93dC1zdGF0dXMuYworKysgYi93dC1zdGF0dXMuYwpAQCAtMTIsNiArMTIsNyBAQAogI2luY2x1ZGUgInJlZnMuaCIKICNpbmNsdWRlICJzdWJtb2R1bGUuaCIKICNpbmNsdWRlICJjb2x1bW4uaCIKKyNpbmNsdWRlICJzdHJidWYuaCIKIAogc3RhdGljIGNoYXIgZGVmYXVsdF93dF9zdGF0dXNfY29sb3JzW11bQ09MT1JfTUFYTEVOXSA9IHsKIAlHSVRfQ09MT1JfTk9STUFMLCAvKiBXVF9TVEFUVVNfSEVBREVSICovCkBAIC00NCw3ICs0NSw3IEBACiAKIAlzdHJidWZfdmFkZGYoJnNiLCBmbXQsIGFwKTsKIAlpZiAoIXNiLmxlbikgewotCQlzdHJidWZfYWRkY2goJnNiLCAnIycpOworCQlzdHJidWZfYWRkY2goJnNiLCBjb21tZW50X2xpbmVfY2hhcik7CiAJCWlmICghdHJhaWwpCiAJCQlzdHJidWZfYWRkY2goJnNiLCAnICcpOwogCQljb2xvcl9wcmludF9zdHJidWYocy0+ZnAsIGNvbG9yLCAmc2IpOwpAQCAtNTgsNyArNTksNyBAQAogCiAJCXN0cmJ1Zl9yZXNldCgmbGluZWJ1Zik7CiAJCWlmIChhdF9ib2wpIHsKLQkJCXN0cmJ1Zl9hZGRjaCgmbGluZWJ1ZiwgJyMnKTsKKwkJCXN0cmJ1Zl9hZGRjaCgmbGluZWJ1ZiwgY29tbWVudF9saW5lX2NoYXIpOwogCQkJaWYgKCpsaW5lICE9ICdcbicgJiYgKmxpbmUgIT0gJ1x0JykKIAkJCQlzdHJidWZfYWRkY2goJmxpbmVidWYsICcgJyk7CiAJCX0KQEAgLTk5LDggKzEwMCw4IEBACiAJdmFfZW5kKGFwKTsKIH0KIAotdm9pZCBzdGF0dXNfcHJpbnRmX21vcmUoc3RydWN0IHd0X3N0YXR1cyAqcywgY29uc3QgY2hhciAqY29sb3IsCi0JCQljb25zdCBjaGFyICpmbXQsIC4uLikKK3N0YXRpYyB2b2lkIHN0YXR1c19wcmludGZfbW9yZShzdHJ1Y3Qgd3Rfc3RhdHVzICpzLCBjb25zdCBjaGFyICpjb2xvciwKKwkJCSAgICAgICBjb25zdCBjaGFyICpmbXQsIC4uLikKIHsKIAl2YV9saXN0IGFwOwogCkBAIC0xMzAsOSArMTMxLDM0IEBACiAKIHN0YXRpYyB2b2lkIHd0X3N0YXR1c19wcmludF91bm1lcmdlZF9oZWFkZXIoc3RydWN0IHd0X3N0YXR1cyAqcykKIHsKKwlpbnQgaTsKKwlpbnQgZGVsX21vZF9jb25mbGljdCA9IDA7CisJaW50IGJvdGhfZGVsZXRlZCA9IDA7CisJaW50IG5vdF9kZWxldGVkID0gMDsKIAljb25zdCBjaGFyICpjID0gY29sb3IoV1RfU1RBVFVTX0hFQURFUiwgcyk7CiAKIAlzdGF0dXNfcHJpbnRmX2xuKHMsIGMsIF8oIlVubWVyZ2VkIHBhdGhzOiIpKTsKKworCWZvciAoaSA9IDA7IGkgPCBzLT5jaGFuZ2UubnI7IGkrKykgeworCQlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXQgPSAmKHMtPmNoYW5nZS5pdGVtc1tpXSk7CisJCXN0cnVjdCB3dF9zdGF0dXNfY2hhbmdlX2RhdGEgKmQgPSBpdC0+dXRpbDsKKworCQlzd2l0Y2ggKGQtPnN0YWdlbWFzaykgeworCQljYXNlIDA6CisJCQlicmVhazsKKwkJY2FzZSAxOgorCQkJYm90aF9kZWxldGVkID0gMTsKKwkJCWJyZWFrOworCQljYXNlIDM6CisJCWNhc2UgNToKKwkJCWRlbF9tb2RfY29uZmxpY3QgPSAxOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlub3RfZGVsZXRlZCA9IDE7CisJCQlicmVhazsKKwkJfQorCX0KKwogCWlmICghYWR2aWNlX3N0YXR1c19oaW50cykKIAkJcmV0dXJuOwogCWlmIChzLT53aGVuY2UgIT0gRlJPTV9DT01NSVQpCkBAIC0xNDEsNyArMTY3LDE3IEBACiAJCXN0YXR1c19wcmludGZfbG4ocywgYywgXygiICAodXNlIFwiZ2l0IHJlc2V0ICVzIDxmaWxlPi4uLlwiIHRvIHVuc3RhZ2UpIiksIHMtPnJlZmVyZW5jZSk7CiAJZWxzZQogCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGMsIF8oIiAgKHVzZSBcImdpdCBybSAtLWNhY2hlZCA8ZmlsZT4uLi5cIiB0byB1bnN0YWdlKSIpKTsKLQlzdGF0dXNfcHJpbnRmX2xuKHMsIGMsIF8oIiAgKHVzZSBcImdpdCBhZGQvcm0gPGZpbGU+Li4uXCIgYXMgYXBwcm9wcmlhdGUgdG8gbWFyayByZXNvbHV0aW9uKSIpKTsKKworCWlmICghYm90aF9kZWxldGVkKSB7CisJCWlmICghZGVsX21vZF9jb25mbGljdCkKKwkJCXN0YXR1c19wcmludGZfbG4ocywgYywgXygiICAodXNlIFwiZ2l0IGFkZCA8ZmlsZT4uLi5cIiB0byBtYXJrIHJlc29sdXRpb24pIikpOworCQllbHNlCisJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGMsIF8oIiAgKHVzZSBcImdpdCBhZGQvcm0gPGZpbGU+Li4uXCIgYXMgYXBwcm9wcmlhdGUgdG8gbWFyayByZXNvbHV0aW9uKSIpKTsKKwl9IGVsc2UgaWYgKCFkZWxfbW9kX2NvbmZsaWN0ICYmICFub3RfZGVsZXRlZCkgeworCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGMsIF8oIiAgKHVzZSBcImdpdCBybSA8ZmlsZT4uLi5cIiB0byBtYXJrIHJlc29sdXRpb24pIikpOworCX0gZWxzZSB7CisJCXN0YXR1c19wcmludGZfbG4ocywgYywgXygiICAodXNlIFwiZ2l0IGFkZC9ybSA8ZmlsZT4uLi5cIiBhcyBhcHByb3ByaWF0ZSB0byBtYXJrIHJlc29sdXRpb24pIikpOworCX0KIAlzdGF0dXNfcHJpbnRmX2xuKHMsIGMsICIiKTsKIH0KIApAQCAtMTg1LDcgKzIyMSw3IEBACiAJCQkJCSBjb25zdCBjaGFyICpob3cpCiB7CiAJY29uc3QgY2hhciAqYyA9IGNvbG9yKFdUX1NUQVRVU19IRUFERVIsIHMpOwotCXN0YXR1c19wcmludGZfbG4ocywgYywgXygiJXMgZmlsZXM6IiksIHdoYXQpOworCXN0YXR1c19wcmludGZfbG4ocywgYywgIiVzOiIsIHdoYXQpOwogCWlmICghYWR2aWNlX3N0YXR1c19oaW50cykKIAkJcmV0dXJuOwogCXN0YXR1c19wcmludGZfbG4ocywgYywgXygiICAodXNlIFwiZ2l0ICVzIDxmaWxlPi4uLlwiIHRvIGluY2x1ZGUgaW4gd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiKSwgaG93KTsKQEAgLTIyOCw3ICsyNjQsNyBAQAogewogCXN0cnVjdCB3dF9zdGF0dXNfY2hhbmdlX2RhdGEgKmQgPSBpdC0+dXRpbDsKIAljb25zdCBjaGFyICpjID0gY29sb3IoY2hhbmdlX3R5cGUsIHMpOwotCWludCBzdGF0dXMgPSBzdGF0dXM7CisJaW50IHN0YXR1czsKIAljaGFyICpvbmVfbmFtZTsKIAljaGFyICp0d29fbmFtZTsKIAljb25zdCBjaGFyICpvbmUsICp0d287CkBAIC0yNTYsNiArMjkyLDkgQEAKIAkJfQogCQlzdGF0dXMgPSBkLT53b3JrdHJlZV9zdGF0dXM7CiAJCWJyZWFrOworCWRlZmF1bHQ6CisJCWRpZSgiQlVHOiB1bmhhbmRsZWQgY2hhbmdlX3R5cGUgJWQgaW4gd3Rfc3RhdHVzX3ByaW50X2NoYW5nZV9kYXRhIiwKKwkJICAgIGNoYW5nZV90eXBlKTsKIAl9CiAKIAlvbmUgPSBxdW90ZV9wYXRoKG9uZV9uYW1lLCAtMSwgJm9uZWJ1Ziwgcy0+cHJlZml4KTsKQEAgLTQ2MCwxNiArNDk5LDI0IEBACiB7CiAJaW50IGk7CiAJc3RydWN0IGRpcl9zdHJ1Y3QgZGlyOworCXN0cnVjdCB0aW1ldmFsIHRfYmVnaW47CiAKIAlpZiAoIXMtPnNob3dfdW50cmFja2VkX2ZpbGVzKQogCQlyZXR1cm47CisKKwlpZiAoYWR2aWNlX3N0YXR1c191X29wdGlvbikKKwkJZ2V0dGltZW9mZGF5KCZ0X2JlZ2luLCBOVUxMKTsKKwogCW1lbXNldCgmZGlyLCAwLCBzaXplb2YoZGlyKSk7CiAJaWYgKHMtPnNob3dfdW50cmFja2VkX2ZpbGVzICE9IFNIT1dfQUxMX1VOVFJBQ0tFRF9GSUxFUykKIAkJZGlyLmZsYWdzIHw9CiAJCQlESVJfU0hPV19PVEhFUl9ESVJFQ1RPUklFUyB8IERJUl9ISURFX0VNUFRZX0RJUkVDVE9SSUVTOworCWlmIChzLT5zaG93X2lnbm9yZWRfZmlsZXMpCisJCWRpci5mbGFncyB8PSBESVJfU0hPV19JR05PUkVEX1RPTzsKIAlzZXR1cF9zdGFuZGFyZF9leGNsdWRlcygmZGlyKTsKIAogCWZpbGxfZGlyZWN0b3J5KCZkaXIsIHMtPnBhdGhzcGVjKTsKKwogCWZvciAoaSA9IDA7IGkgPCBkaXIubnI7IGkrKykgewogCQlzdHJ1Y3QgZGlyX2VudHJ5ICplbnQgPSBkaXIuZW50cmllc1tpXTsKIAkJaWYgKGNhY2hlX25hbWVfaXNfb3RoZXIoZW50LT5uYW1lLCBlbnQtPmxlbikgJiYKQEAgLTQ3OCwyMCArNTI1LDI1IEBACiAJCWZyZWUoZW50KTsKIAl9CiAKLQlpZiAocy0+c2hvd19pZ25vcmVkX2ZpbGVzKSB7Ci0JCWRpci5uciA9IDA7Ci0JCWRpci5mbGFncyA9IERJUl9TSE9XX0lHTk9SRUQgfCBESVJfU0hPV19PVEhFUl9ESVJFQ1RPUklFUzsKLQkJZmlsbF9kaXJlY3RvcnkoJmRpciwgcy0+cGF0aHNwZWMpOwotCQlmb3IgKGkgPSAwOyBpIDwgZGlyLm5yOyBpKyspIHsKLQkJCXN0cnVjdCBkaXJfZW50cnkgKmVudCA9IGRpci5lbnRyaWVzW2ldOwotCQkJaWYgKGNhY2hlX25hbWVfaXNfb3RoZXIoZW50LT5uYW1lLCBlbnQtPmxlbikgJiYKLQkJCSAgICBtYXRjaF9wYXRoc3BlYyhzLT5wYXRoc3BlYywgZW50LT5uYW1lLCBlbnQtPmxlbiwgMCwgTlVMTCkpCi0JCQkJc3RyaW5nX2xpc3RfaW5zZXJ0KCZzLT5pZ25vcmVkLCBlbnQtPm5hbWUpOwotCQkJZnJlZShlbnQpOwotCQl9CisJZm9yIChpID0gMDsgaSA8IGRpci5pZ25vcmVkX25yOyBpKyspIHsKKwkJc3RydWN0IGRpcl9lbnRyeSAqZW50ID0gZGlyLmlnbm9yZWRbaV07CisJCWlmIChjYWNoZV9uYW1lX2lzX290aGVyKGVudC0+bmFtZSwgZW50LT5sZW4pICYmCisJCSAgICBtYXRjaF9wYXRoc3BlYyhzLT5wYXRoc3BlYywgZW50LT5uYW1lLCBlbnQtPmxlbiwgMCwgTlVMTCkpCisJCQlzdHJpbmdfbGlzdF9pbnNlcnQoJnMtPmlnbm9yZWQsIGVudC0+bmFtZSk7CisJCWZyZWUoZW50KTsKIAl9CiAKIAlmcmVlKGRpci5lbnRyaWVzKTsKKwlmcmVlKGRpci5pZ25vcmVkKTsKKwljbGVhcl9kaXJlY3RvcnkoJmRpcik7CisKKwlpZiAoYWR2aWNlX3N0YXR1c191X29wdGlvbikgeworCQlzdHJ1Y3QgdGltZXZhbCB0X2VuZDsKKwkJZ2V0dGltZW9mZGF5KCZ0X2VuZCwgTlVMTCk7CisJCXMtPnVudHJhY2tlZF9pbl9tcyA9CisJCQkodWludDY0X3QpdF9lbmQudHZfc2VjICogMTAwMCArIHRfZW5kLnR2X3VzZWMgLyAxMDAwIC0KKwkJCSgodWludDY0X3QpdF9iZWdpbi50dl9zZWMgKiAxMDAwICsgdF9iZWdpbi50dl91c2VjIC8gMTAwMCk7CisJfQogfQogCiB2b2lkIHd0X3N0YXR1c19jb2xsZWN0KHN0cnVjdCB3dF9zdGF0dXMgKnMpCkBAIC03MjQsMTQgKzc3NiwzOTggQEAKIAogCWZvciAoY3AgPSBzYi5idWY7IChlcCA9IHN0cmNocihjcCwgJ1xuJykpICE9IE5VTEw7IGNwID0gZXAgKyAxKQogCQljb2xvcl9mcHJpbnRmX2xuKHMtPmZwLCBjb2xvcihXVF9TVEFUVVNfSEVBREVSLCBzKSwKLQkJCQkgIiMgJS4qcyIsIChpbnQpKGVwIC0gY3ApLCBjcCk7Ci0JY29sb3JfZnByaW50Zl9sbihzLT5mcCwgY29sb3IoV1RfU1RBVFVTX0hFQURFUiwgcyksICIjIik7CisJCQkJICIlYyAlLipzIiwgY29tbWVudF9saW5lX2NoYXIsCisJCQkJIChpbnQpKGVwIC0gY3ApLCBjcCk7CisJY29sb3JfZnByaW50Zl9sbihzLT5mcCwgY29sb3IoV1RfU1RBVFVTX0hFQURFUiwgcyksICIlYyIsCisJCQkgY29tbWVudF9saW5lX2NoYXIpOworfQorCitzdGF0aWMgaW50IGhhc191bm1lcmdlZChzdHJ1Y3Qgd3Rfc3RhdHVzICpzKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IHMtPmNoYW5nZS5ucjsgaSsrKSB7CisJCXN0cnVjdCB3dF9zdGF0dXNfY2hhbmdlX2RhdGEgKmQ7CisJCWQgPSBzLT5jaGFuZ2UuaXRlbXNbaV0udXRpbDsKKwkJaWYgKGQtPnN0YWdlbWFzaykKKwkJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgc2hvd19tZXJnZV9pbl9wcm9ncmVzcyhzdHJ1Y3Qgd3Rfc3RhdHVzICpzLAorCQkJCXN0cnVjdCB3dF9zdGF0dXNfc3RhdGUgKnN0YXRlLAorCQkJCWNvbnN0IGNoYXIgKmNvbG9yKQoreworCWlmIChoYXNfdW5tZXJnZWQocykpIHsKKwkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwgXygiWW91IGhhdmUgdW5tZXJnZWQgcGF0aHMuIikpOworCQlpZiAoYWR2aWNlX3N0YXR1c19oaW50cykKKwkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJXygiICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuIFwiZ2l0IGNvbW1pdFwiKSIpKTsKKwl9IGVsc2UgeworCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLAorCQkJXygiQWxsIGNvbmZsaWN0cyBmaXhlZCBidXQgeW91IGFyZSBzdGlsbCBtZXJnaW5nLiIpKTsKKwkJaWYgKGFkdmljZV9zdGF0dXNfaGludHMpCisJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLAorCQkJCV8oIiAgKHVzZSBcImdpdCBjb21taXRcIiB0byBjb25jbHVkZSBtZXJnZSkiKSk7CisJfQorCXd0X3N0YXR1c19wcmludF90cmFpbGVyKHMpOworfQorCitzdGF0aWMgdm9pZCBzaG93X2FtX2luX3Byb2dyZXNzKHN0cnVjdCB3dF9zdGF0dXMgKnMsCisJCQkJc3RydWN0IHd0X3N0YXR1c19zdGF0ZSAqc3RhdGUsCisJCQkJY29uc3QgY2hhciAqY29sb3IpCit7CisJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKKwkJXygiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGFuIGFtIHNlc3Npb24uIikpOworCWlmIChzdGF0ZS0+YW1fZW1wdHlfcGF0Y2gpCisJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQlfKCJUaGUgY3VycmVudCBwYXRjaCBpcyBlbXB0eS4iKSk7CisJaWYgKGFkdmljZV9zdGF0dXNfaGludHMpIHsKKwkJaWYgKCFzdGF0ZS0+YW1fZW1wdHlfcGF0Y2gpCisJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLAorCQkJCV8oIiAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuIFwiZ2l0IGFtIC0tcmVzb2x2ZWRcIikiKSk7CisJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQlfKCIgICh1c2UgXCJnaXQgYW0gLS1za2lwXCIgdG8gc2tpcCB0aGlzIHBhdGNoKSIpKTsKKwkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKKwkJCV8oIiAgKHVzZSBcImdpdCBhbSAtLWFib3J0XCIgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoKSIpKTsKKwl9CisJd3Rfc3RhdHVzX3ByaW50X3RyYWlsZXIocyk7Cit9CisKK3N0YXRpYyBjaGFyICpyZWFkX2xpbmVfZnJvbV9naXRfcGF0aChjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCUZJTEUgKmZwID0gZm9wZW4oZ2l0X3BhdGgoIiVzIiwgZmlsZW5hbWUpLCAiciIpOworCWlmICghZnApIHsKKwkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CisJCXJldHVybiBOVUxMOworCX0KKwlzdHJidWZfZ2V0bGluZSgmYnVmLCBmcCwgJ1xuJyk7CisJaWYgKCFmY2xvc2UoZnApKSB7CisJCXJldHVybiBzdHJidWZfZGV0YWNoKCZidWYsIE5VTEwpOworCX0gZWxzZSB7CisJCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOworCQlyZXR1cm4gTlVMTDsKKwl9Cit9CisKK3N0YXRpYyBpbnQgc3BsaXRfY29tbWl0X2luX3Byb2dyZXNzKHN0cnVjdCB3dF9zdGF0dXMgKnMpCit7CisJaW50IHNwbGl0X2luX3Byb2dyZXNzID0gMDsKKwljaGFyICpoZWFkID0gcmVhZF9saW5lX2Zyb21fZ2l0X3BhdGgoIkhFQUQiKTsKKwljaGFyICpvcmlnX2hlYWQgPSByZWFkX2xpbmVfZnJvbV9naXRfcGF0aCgiT1JJR19IRUFEIik7CisJY2hhciAqcmViYXNlX2FtZW5kID0gcmVhZF9saW5lX2Zyb21fZ2l0X3BhdGgoInJlYmFzZS1tZXJnZS9hbWVuZCIpOworCWNoYXIgKnJlYmFzZV9vcmlnX2hlYWQgPSByZWFkX2xpbmVfZnJvbV9naXRfcGF0aCgicmViYXNlLW1lcmdlL29yaWctaGVhZCIpOworCisJaWYgKCFoZWFkIHx8ICFvcmlnX2hlYWQgfHwgIXJlYmFzZV9hbWVuZCB8fCAhcmViYXNlX29yaWdfaGVhZCB8fAorCSAgICAhcy0+YnJhbmNoIHx8IHN0cmNtcChzLT5icmFuY2gsICJIRUFEIikpCisJCXJldHVybiBzcGxpdF9pbl9wcm9ncmVzczsKKworCWlmICghc3RyY21wKHJlYmFzZV9hbWVuZCwgcmViYXNlX29yaWdfaGVhZCkpIHsKKwkJaWYgKHN0cmNtcChoZWFkLCByZWJhc2VfYW1lbmQpKQorCQkJc3BsaXRfaW5fcHJvZ3Jlc3MgPSAxOworCX0gZWxzZSBpZiAoc3RyY21wKG9yaWdfaGVhZCwgcmViYXNlX29yaWdfaGVhZCkpIHsKKwkJc3BsaXRfaW5fcHJvZ3Jlc3MgPSAxOworCX0KKworCWlmICghcy0+YW1lbmQgJiYgIXMtPm5vd2FybiAmJiAhcy0+d29ya2Rpcl9kaXJ0eSkKKwkJc3BsaXRfaW5fcHJvZ3Jlc3MgPSAwOworCisJZnJlZShoZWFkKTsKKwlmcmVlKG9yaWdfaGVhZCk7CisJZnJlZShyZWJhc2VfYW1lbmQpOworCWZyZWUocmViYXNlX29yaWdfaGVhZCk7CisJcmV0dXJuIHNwbGl0X2luX3Byb2dyZXNzOworfQorCitzdGF0aWMgdm9pZCBzaG93X3JlYmFzZV9pbl9wcm9ncmVzcyhzdHJ1Y3Qgd3Rfc3RhdHVzICpzLAorCQkJCXN0cnVjdCB3dF9zdGF0dXNfc3RhdGUgKnN0YXRlLAorCQkJCWNvbnN0IGNoYXIgKmNvbG9yKQoreworCXN0cnVjdCBzdGF0IHN0OworCisJaWYgKGhhc191bm1lcmdlZChzKSkgeworCQlpZiAoc3RhdGUtPmJyYW5jaCkKKwkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJCSBfKCJZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZyBicmFuY2ggJyVzJyBvbiAnJXMnLiIpLAorCQkJCQkgc3RhdGUtPmJyYW5jaCwKKwkJCQkJIHN0YXRlLT5vbnRvKTsKKwkJZWxzZQorCQkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKKwkJCQkJIF8oIllvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nLiIpKTsKKwkJaWYgKGFkdmljZV9zdGF0dXNfaGludHMpIHsKKwkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJXygiICAoZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIikiKSk7CisJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLAorCQkJCV8oIiAgKHVzZSBcImdpdCByZWJhc2UgLS1za2lwXCIgdG8gc2tpcCB0aGlzIHBhdGNoKSIpKTsKKwkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJXygiICAodXNlIFwiZ2l0IHJlYmFzZSAtLWFib3J0XCIgdG8gY2hlY2sgb3V0IHRoZSBvcmlnaW5hbCBicmFuY2gpIikpOworCQl9CisJfSBlbHNlIGlmIChzdGF0ZS0+cmViYXNlX2luX3Byb2dyZXNzIHx8ICFzdGF0KGdpdF9wYXRoKCJNRVJHRV9NU0ciKSwgJnN0KSkgeworCQlpZiAoc3RhdGUtPmJyYW5jaCkKKwkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJCSBfKCJZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZyBicmFuY2ggJyVzJyBvbiAnJXMnLiIpLAorCQkJCQkgc3RhdGUtPmJyYW5jaCwKKwkJCQkJIHN0YXRlLT5vbnRvKTsKKwkJZWxzZQorCQkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKKwkJCQkJIF8oIllvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nLiIpKTsKKwkJaWYgKGFkdmljZV9zdGF0dXNfaGludHMpCisJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLAorCQkJCV8oIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiKSIpKTsKKwl9IGVsc2UgaWYgKHNwbGl0X2NvbW1pdF9pbl9wcm9ncmVzcyhzKSkgeworCQlpZiAoc3RhdGUtPmJyYW5jaCkKKwkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJCSBfKCJZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iKSwKKwkJCQkJIHN0YXRlLT5icmFuY2gsCisJCQkJCSBzdGF0ZS0+b250byk7CisJCWVsc2UKKwkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJCSBfKCJZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLiIpKTsKKwkJaWYgKGFkdmljZV9zdGF0dXNfaGludHMpCisJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLAorCQkJCV8oIiAgKE9uY2UgeW91ciB3b3JraW5nIGRpcmVjdG9yeSBpcyBjbGVhbiwgcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIikpOworCX0gZWxzZSB7CisJCWlmIChzdGF0ZS0+YnJhbmNoKQorCQkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKKwkJCQkJIF8oIllvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iKSwKKwkJCQkJIHN0YXRlLT5icmFuY2gsCisJCQkJCSBzdGF0ZS0+b250byk7CisJCWVsc2UKKwkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJCSBfKCJZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIGEgY29tbWl0IGR1cmluZyBhIHJlYmFzZS4iKSk7CisJCWlmIChhZHZpY2Vfc3RhdHVzX2hpbnRzICYmICFzLT5hbWVuZCkgeworCQkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKKwkJCQlfKCIgICh1c2UgXCJnaXQgY29tbWl0IC0tYW1lbmRcIiB0byBhbWVuZCB0aGUgY3VycmVudCBjb21taXQpIikpOworCQkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKKwkJCQlfKCIgICh1c2UgXCJnaXQgcmViYXNlIC0tY29udGludWVcIiBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzKSIpKTsKKwkJfQorCX0KKwl3dF9zdGF0dXNfcHJpbnRfdHJhaWxlcihzKTsKK30KKworc3RhdGljIHZvaWQgc2hvd19jaGVycnlfcGlja19pbl9wcm9ncmVzcyhzdHJ1Y3Qgd3Rfc3RhdHVzICpzLAorCQkJCQlzdHJ1Y3Qgd3Rfc3RhdHVzX3N0YXRlICpzdGF0ZSwKKwkJCQkJY29uc3QgY2hhciAqY29sb3IpCit7CisJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwgXygiWW91IGFyZSBjdXJyZW50bHkgY2hlcnJ5LXBpY2tpbmcuIikpOworCWlmIChhZHZpY2Vfc3RhdHVzX2hpbnRzKSB7CisJCWlmIChoYXNfdW5tZXJnZWQocykpCisJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLAorCQkJCV8oIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCBjb21taXRcIikiKSk7CisJCWVsc2UKKwkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJXygiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IGNvbW1pdFwiKSIpKTsKKwl9CisJd3Rfc3RhdHVzX3ByaW50X3RyYWlsZXIocyk7Cit9CisKK3N0YXRpYyB2b2lkIHNob3dfcmV2ZXJ0X2luX3Byb2dyZXNzKHN0cnVjdCB3dF9zdGF0dXMgKnMsCisJCQkJCXN0cnVjdCB3dF9zdGF0dXNfc3RhdGUgKnN0YXRlLAorCQkJCQljb25zdCBjaGFyICpjb2xvcikKK3sKKwlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLCBfKCJZb3UgYXJlIGN1cnJlbnRseSByZXZlcnRpbmcgY29tbWl0ICVzLiIpLAorCQkJIGZpbmRfdW5pcXVlX2FiYnJldihzdGF0ZS0+cmV2ZXJ0X2hlYWRfc2hhMSwgREVGQVVMVF9BQkJSRVYpKTsKKwlpZiAoYWR2aWNlX3N0YXR1c19oaW50cykgeworCQlpZiAoaGFzX3VubWVyZ2VkKHMpKQorCQkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKKwkJCQlfKCIgIChmaXggY29uZmxpY3RzIGFuZCBydW4gXCJnaXQgcmV2ZXJ0IC0tY29udGludWVcIikiKSk7CisJCWVsc2UKKwkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJXygiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCIpIikpOworCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLAorCQkJXygiICAodXNlIFwiZ2l0IHJldmVydCAtLWFib3J0XCIgdG8gY2FuY2VsIHRoZSByZXZlcnQgb3BlcmF0aW9uKSIpKTsKKwl9CisJd3Rfc3RhdHVzX3ByaW50X3RyYWlsZXIocyk7Cit9CisKK3N0YXRpYyB2b2lkIHNob3dfYmlzZWN0X2luX3Byb2dyZXNzKHN0cnVjdCB3dF9zdGF0dXMgKnMsCisJCQkJc3RydWN0IHd0X3N0YXR1c19zdGF0ZSAqc3RhdGUsCisJCQkJY29uc3QgY2hhciAqY29sb3IpCit7CisJaWYgKHN0YXRlLT5icmFuY2gpCisJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJIF8oIllvdSBhcmUgY3VycmVudGx5IGJpc2VjdGluZywgc3RhcnRlZCBmcm9tIGJyYW5jaCAnJXMnLiIpLAorCQkJCSBzdGF0ZS0+YnJhbmNoKTsKKwllbHNlCisJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJIF8oIllvdSBhcmUgY3VycmVudGx5IGJpc2VjdGluZy4iKSk7CisJaWYgKGFkdmljZV9zdGF0dXNfaGludHMpCisJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQlfKCIgICh1c2UgXCJnaXQgYmlzZWN0IHJlc2V0XCIgdG8gZ2V0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIGJyYW5jaCkiKSk7CisJd3Rfc3RhdHVzX3ByaW50X3RyYWlsZXIocyk7Cit9CisKKy8qCisgKiBFeHRyYWN0IGJyYW5jaCBpbmZvcm1hdGlvbiBmcm9tIHJlYmFzZS9iaXNlY3QKKyAqLworc3RhdGljIGNoYXIgKnJlYWRfYW5kX3N0cmlwX2JyYW5jaChjb25zdCBjaGFyICpwYXRoKQoreworCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKKwl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOworCisJaWYgKHN0cmJ1Zl9yZWFkX2ZpbGUoJnNiLCBnaXRfcGF0aCgiJXMiLCBwYXRoKSwgMCkgPD0gMCkKKwkJZ290byBnb3Rfbm90aGluZzsKKworCXdoaWxlICgmc2IubGVuICYmIHNiLmJ1ZltzYi5sZW4gLSAxXSA9PSAnXG4nKQorCQlzdHJidWZfc2V0bGVuKCZzYiwgc2IubGVuIC0gMSk7CisJaWYgKCFzYi5sZW4pCisJCWdvdG8gZ290X25vdGhpbmc7CisJaWYgKCFwcmVmaXhjbXAoc2IuYnVmLCAicmVmcy9oZWFkcy8iKSkKKwkJc3RyYnVmX3JlbW92ZSgmc2IsMCwgc3RybGVuKCJyZWZzL2hlYWRzLyIpKTsKKwllbHNlIGlmICghcHJlZml4Y21wKHNiLmJ1ZiwgInJlZnMvIikpCisJCTsKKwllbHNlIGlmICghZ2V0X3NoYTFfaGV4KHNiLmJ1Ziwgc2hhMSkpIHsKKwkJY29uc3QgY2hhciAqYWJicmV2OworCQlhYmJyZXYgPSBmaW5kX3VuaXF1ZV9hYmJyZXYoc2hhMSwgREVGQVVMVF9BQkJSRVYpOworCQlzdHJidWZfcmVzZXQoJnNiKTsKKwkJc3RyYnVmX2FkZHN0cigmc2IsIGFiYnJldik7CisJfSBlbHNlIGlmICghc3RyY21wKHNiLmJ1ZiwgImRldGFjaGVkIEhFQUQiKSkgLyogcmViYXNlICovCisJCWdvdG8gZ290X25vdGhpbmc7CisJZWxzZQkJCS8qIGJpc2VjdCAqLworCQk7CisJcmV0dXJuIHN0cmJ1Zl9kZXRhY2goJnNiLCBOVUxMKTsKKworZ290X25vdGhpbmc6CisJc3RyYnVmX3JlbGVhc2UoJnNiKTsKKwlyZXR1cm4gTlVMTDsKK30KKworc3RydWN0IGdyYWJfMXN0X3N3aXRjaF9jYmRhdGEgeworCWludCBmb3VuZDsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwl1bnNpZ25lZCBjaGFyIG5zaGExWzIwXTsKK307CisKK3N0YXRpYyBpbnQgZ3JhYl8xc3Rfc3dpdGNoKHVuc2lnbmVkIGNoYXIgKm9zaGExLCB1bnNpZ25lZCBjaGFyICpuc2hhMSwKKwkJCSAgIGNvbnN0IGNoYXIgKmVtYWlsLCB1bnNpZ25lZCBsb25nIHRpbWVzdGFtcCwgaW50IHR6LAorCQkJICAgY29uc3QgY2hhciAqbWVzc2FnZSwgdm9pZCAqY2JfZGF0YSkKK3sKKwlzdHJ1Y3QgZ3JhYl8xc3Rfc3dpdGNoX2NiZGF0YSAqY2IgPSBjYl9kYXRhOworCWNvbnN0IGNoYXIgKnRhcmdldCA9IE5VTEwsICplbmQ7CisKKwlpZiAocHJlZml4Y21wKG1lc3NhZ2UsICJjaGVja291dDogbW92aW5nIGZyb20gIikpCisJCXJldHVybiAwOworCW1lc3NhZ2UgKz0gc3RybGVuKCJjaGVja291dDogbW92aW5nIGZyb20gIik7CisJdGFyZ2V0ID0gc3Ryc3RyKG1lc3NhZ2UsICIgdG8gIik7CisJaWYgKCF0YXJnZXQpCisJCXJldHVybiAwOworCXRhcmdldCArPSBzdHJsZW4oIiB0byAiKTsKKwlzdHJidWZfcmVzZXQoJmNiLT5idWYpOworCWhhc2hjcHkoY2ItPm5zaGExLCBuc2hhMSk7CisJZm9yIChlbmQgPSB0YXJnZXQ7ICplbmQgJiYgKmVuZCAhPSAnXG4nOyBlbmQrKykKKwkJOworCXN0cmJ1Zl9hZGQoJmNiLT5idWYsIHRhcmdldCwgZW5kIC0gdGFyZ2V0KTsKKwljYi0+Zm91bmQgPSAxOworCXJldHVybiAxOworfQorCitzdGF0aWMgdm9pZCB3dF9zdGF0dXNfZ2V0X2RldGFjaGVkX2Zyb20oc3RydWN0IHd0X3N0YXR1c19zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0IGdyYWJfMXN0X3N3aXRjaF9jYmRhdGEgY2I7CisJc3RydWN0IGNvbW1pdCAqY29tbWl0OworCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisJY2hhciAqcmVmID0gTlVMTDsKKworCXN0cmJ1Zl9pbml0KCZjYi5idWYsIDApOworCWlmIChmb3JfZWFjaF9yZWZsb2dfZW50X3JldmVyc2UoIkhFQUQiLCBncmFiXzFzdF9zd2l0Y2gsICZjYikgPD0gMCkgeworCQlzdHJidWZfcmVsZWFzZSgmY2IuYnVmKTsKKwkJcmV0dXJuOworCX0KKworCWlmIChkd2ltX3JlZihjYi5idWYuYnVmLCBjYi5idWYubGVuLCBzaGExLCAmcmVmKSA9PSAxICYmCisJICAgIC8qIHNoYTEgaXMgYSBjb21taXQ/IG1hdGNoIHdpdGhvdXQgZnVydGhlciBsb29rdXAgKi8KKwkgICAgKCFoYXNoY21wKGNiLm5zaGExLCBzaGExKSB8fAorCSAgICAgLyogcGVyaGFwcyBzaGExIGlzIGEgdGFnLCB0cnkgdG8gZGVyZWZlcmVuY2UgdG8gYSBjb21taXQgKi8KKwkgICAgICgoY29tbWl0ID0gbG9va3VwX2NvbW1pdF9yZWZlcmVuY2VfZ2VudGx5KHNoYTEsIDEpKSAhPSBOVUxMICYmCisJICAgICAgIWhhc2hjbXAoY2IubnNoYTEsIGNvbW1pdC0+b2JqZWN0LnNoYTEpKSkpIHsKKwkJaW50IG9mczsKKwkJaWYgKCFwcmVmaXhjbXAocmVmLCAicmVmcy90YWdzLyIpKQorCQkJb2ZzID0gc3RybGVuKCJyZWZzL3RhZ3MvIik7CisJCWVsc2UgaWYgKCFwcmVmaXhjbXAocmVmLCAicmVmcy9yZW1vdGVzLyIpKQorCQkJb2ZzID0gc3RybGVuKCJyZWZzL3JlbW90ZXMvIik7CisJCWVsc2UKKwkJCW9mcyA9IDA7CisJCXN0YXRlLT5kZXRhY2hlZF9mcm9tID0geHN0cmR1cChyZWYgKyBvZnMpOworCX0gZWxzZQorCQlzdGF0ZS0+ZGV0YWNoZWRfZnJvbSA9CisJCQl4c3RyZHVwKGZpbmRfdW5pcXVlX2FiYnJldihjYi5uc2hhMSwgREVGQVVMVF9BQkJSRVYpKTsKKwloYXNoY3B5KHN0YXRlLT5kZXRhY2hlZF9zaGExLCBjYi5uc2hhMSk7CisKKwlmcmVlKHJlZik7CisJc3RyYnVmX3JlbGVhc2UoJmNiLmJ1Zik7Cit9CisKK3ZvaWQgd3Rfc3RhdHVzX2dldF9zdGF0ZShzdHJ1Y3Qgd3Rfc3RhdHVzX3N0YXRlICpzdGF0ZSwKKwkJCSBpbnQgZ2V0X2RldGFjaGVkX2Zyb20pCit7CisJc3RydWN0IHN0YXQgc3Q7CisJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKKworCWlmICghc3RhdChnaXRfcGF0aCgiTUVSR0VfSEVBRCIpLCAmc3QpKSB7CisJCXN0YXRlLT5tZXJnZV9pbl9wcm9ncmVzcyA9IDE7CisJfSBlbHNlIGlmICghc3RhdChnaXRfcGF0aCgicmViYXNlLWFwcGx5IiksICZzdCkpIHsKKwkJaWYgKCFzdGF0KGdpdF9wYXRoKCJyZWJhc2UtYXBwbHkvYXBwbHlpbmciKSwgJnN0KSkgeworCQkJc3RhdGUtPmFtX2luX3Byb2dyZXNzID0gMTsKKwkJCWlmICghc3RhdChnaXRfcGF0aCgicmViYXNlLWFwcGx5L3BhdGNoIiksICZzdCkgJiYgIXN0LnN0X3NpemUpCisJCQkJc3RhdGUtPmFtX2VtcHR5X3BhdGNoID0gMTsKKwkJfSBlbHNlIHsKKwkJCXN0YXRlLT5yZWJhc2VfaW5fcHJvZ3Jlc3MgPSAxOworCQkJc3RhdGUtPmJyYW5jaCA9IHJlYWRfYW5kX3N0cmlwX2JyYW5jaCgicmViYXNlLWFwcGx5L2hlYWQtbmFtZSIpOworCQkJc3RhdGUtPm9udG8gPSByZWFkX2FuZF9zdHJpcF9icmFuY2goInJlYmFzZS1hcHBseS9vbnRvIik7CisJCX0KKwl9IGVsc2UgaWYgKCFzdGF0KGdpdF9wYXRoKCJyZWJhc2UtbWVyZ2UiKSwgJnN0KSkgeworCQlpZiAoIXN0YXQoZ2l0X3BhdGgoInJlYmFzZS1tZXJnZS9pbnRlcmFjdGl2ZSIpLCAmc3QpKQorCQkJc3RhdGUtPnJlYmFzZV9pbnRlcmFjdGl2ZV9pbl9wcm9ncmVzcyA9IDE7CisJCWVsc2UKKwkJCXN0YXRlLT5yZWJhc2VfaW5fcHJvZ3Jlc3MgPSAxOworCQlzdGF0ZS0+YnJhbmNoID0gcmVhZF9hbmRfc3RyaXBfYnJhbmNoKCJyZWJhc2UtbWVyZ2UvaGVhZC1uYW1lIik7CisJCXN0YXRlLT5vbnRvID0gcmVhZF9hbmRfc3RyaXBfYnJhbmNoKCJyZWJhc2UtbWVyZ2Uvb250byIpOworCX0gZWxzZSBpZiAoIXN0YXQoZ2l0X3BhdGgoIkNIRVJSWV9QSUNLX0hFQUQiKSwgJnN0KSkgeworCQlzdGF0ZS0+Y2hlcnJ5X3BpY2tfaW5fcHJvZ3Jlc3MgPSAxOworCX0KKwlpZiAoIXN0YXQoZ2l0X3BhdGgoIkJJU0VDVF9MT0ciKSwgJnN0KSkgeworCQlzdGF0ZS0+YmlzZWN0X2luX3Byb2dyZXNzID0gMTsKKwkJc3RhdGUtPmJyYW5jaCA9IHJlYWRfYW5kX3N0cmlwX2JyYW5jaCgiQklTRUNUX1NUQVJUIik7CisJfQorCWlmICghc3RhdChnaXRfcGF0aCgiUkVWRVJUX0hFQUQiKSwgJnN0KSAmJgorCSAgICAhZ2V0X3NoYTEoIlJFVkVSVF9IRUFEIiwgc2hhMSkpIHsKKwkJc3RhdGUtPnJldmVydF9pbl9wcm9ncmVzcyA9IDE7CisJCWhhc2hjcHkoc3RhdGUtPnJldmVydF9oZWFkX3NoYTEsIHNoYTEpOworCX0KKworCWlmIChnZXRfZGV0YWNoZWRfZnJvbSkKKwkJd3Rfc3RhdHVzX2dldF9kZXRhY2hlZF9mcm9tKHN0YXRlKTsKK30KKworc3RhdGljIHZvaWQgd3Rfc3RhdHVzX3ByaW50X3N0YXRlKHN0cnVjdCB3dF9zdGF0dXMgKnMsCisJCQkJICBzdHJ1Y3Qgd3Rfc3RhdHVzX3N0YXRlICpzdGF0ZSkKK3sKKwljb25zdCBjaGFyICpzdGF0ZV9jb2xvciA9IGNvbG9yKFdUX1NUQVRVU19IRUFERVIsIHMpOworCWlmIChzdGF0ZS0+bWVyZ2VfaW5fcHJvZ3Jlc3MpCisJCXNob3dfbWVyZ2VfaW5fcHJvZ3Jlc3Mocywgc3RhdGUsIHN0YXRlX2NvbG9yKTsKKwllbHNlIGlmIChzdGF0ZS0+YW1faW5fcHJvZ3Jlc3MpCisJCXNob3dfYW1faW5fcHJvZ3Jlc3Mocywgc3RhdGUsIHN0YXRlX2NvbG9yKTsKKwllbHNlIGlmIChzdGF0ZS0+cmViYXNlX2luX3Byb2dyZXNzIHx8IHN0YXRlLT5yZWJhc2VfaW50ZXJhY3RpdmVfaW5fcHJvZ3Jlc3MpCisJCXNob3dfcmViYXNlX2luX3Byb2dyZXNzKHMsIHN0YXRlLCBzdGF0ZV9jb2xvcik7CisJZWxzZSBpZiAoc3RhdGUtPmNoZXJyeV9waWNrX2luX3Byb2dyZXNzKQorCQlzaG93X2NoZXJyeV9waWNrX2luX3Byb2dyZXNzKHMsIHN0YXRlLCBzdGF0ZV9jb2xvcik7CisJZWxzZSBpZiAoc3RhdGUtPnJldmVydF9pbl9wcm9ncmVzcykKKwkJc2hvd19yZXZlcnRfaW5fcHJvZ3Jlc3Mocywgc3RhdGUsIHN0YXRlX2NvbG9yKTsKKwlpZiAoc3RhdGUtPmJpc2VjdF9pbl9wcm9ncmVzcykKKwkJc2hvd19iaXNlY3RfaW5fcHJvZ3Jlc3Mocywgc3RhdGUsIHN0YXRlX2NvbG9yKTsKIH0KIAogdm9pZCB3dF9zdGF0dXNfcHJpbnQoc3RydWN0IHd0X3N0YXR1cyAqcykKIHsKIAljb25zdCBjaGFyICpicmFuY2hfY29sb3IgPSBjb2xvcihXVF9TVEFUVVNfT05CUkFOQ0gsIHMpOwogCWNvbnN0IGNoYXIgKmJyYW5jaF9zdGF0dXNfY29sb3IgPSBjb2xvcihXVF9TVEFUVVNfSEVBREVSLCBzKTsKKwlzdHJ1Y3Qgd3Rfc3RhdHVzX3N0YXRlIHN0YXRlOworCisJbWVtc2V0KCZzdGF0ZSwgMCwgc2l6ZW9mKHN0YXRlKSk7CisJd3Rfc3RhdHVzX2dldF9zdGF0ZSgmc3RhdGUsCisJCQkgICAgcy0+YnJhbmNoICYmICFzdHJjbXAocy0+YnJhbmNoLCAiSEVBRCIpKTsKIAogCWlmIChzLT5icmFuY2gpIHsKIAkJY29uc3QgY2hhciAqb25fd2hhdCA9IF8oIk9uIGJyYW5jaCAiKTsKQEAgLTczOSw5ICsxMTc1LDE5IEBACiAJCWlmICghcHJlZml4Y21wKGJyYW5jaF9uYW1lLCAicmVmcy9oZWFkcy8iKSkKIAkJCWJyYW5jaF9uYW1lICs9IDExOwogCQllbHNlIGlmICghc3RyY21wKGJyYW5jaF9uYW1lLCAiSEVBRCIpKSB7Ci0JCQlicmFuY2hfbmFtZSA9ICIiOwogCQkJYnJhbmNoX3N0YXR1c19jb2xvciA9IGNvbG9yKFdUX1NUQVRVU19OT0JSQU5DSCwgcyk7Ci0JCQlvbl93aGF0ID0gXygiTm90IGN1cnJlbnRseSBvbiBhbnkgYnJhbmNoLiIpOworCQkJaWYgKHN0YXRlLmRldGFjaGVkX2Zyb20pIHsKKwkJCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOworCQkJCWJyYW5jaF9uYW1lID0gc3RhdGUuZGV0YWNoZWRfZnJvbTsKKwkJCQlpZiAoIWdldF9zaGExKCJIRUFEIiwgc2hhMSkgJiYKKwkJCQkgICAgIWhhc2hjbXAoc2hhMSwgc3RhdGUuZGV0YWNoZWRfc2hhMSkpCisJCQkJCW9uX3doYXQgPSBfKCJIRUFEIGRldGFjaGVkIGF0ICIpOworCQkJCWVsc2UKKwkJCQkJb25fd2hhdCA9IF8oIkhFQUQgZGV0YWNoZWQgZnJvbSAiKTsKKwkJCX0gZWxzZSB7CisJCQkJYnJhbmNoX25hbWUgPSAiIjsKKwkJCQlvbl93aGF0ID0gXygiTm90IGN1cnJlbnRseSBvbiBhbnkgYnJhbmNoLiIpOworCQkJfQogCQl9CiAJCXN0YXR1c19wcmludGYocywgY29sb3IoV1RfU1RBVFVTX0hFQURFUiwgcyksICIiKTsKIAkJc3RhdHVzX3ByaW50Zl9tb3JlKHMsIGJyYW5jaF9zdGF0dXNfY29sb3IsICIlcyIsIG9uX3doYXQpOwpAQCAtNzUwLDYgKzExOTYsMTEgQEAKIAkJCXd0X3N0YXR1c19wcmludF90cmFja2luZyhzKTsKIAl9CiAKKwl3dF9zdGF0dXNfcHJpbnRfc3RhdGUocywgJnN0YXRlKTsKKwlmcmVlKHN0YXRlLmJyYW5jaCk7CisJZnJlZShzdGF0ZS5vbnRvKTsKKwlmcmVlKHN0YXRlLmRldGFjaGVkX2Zyb20pOworCiAJaWYgKHMtPmlzX2luaXRpYWwpIHsKIAkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvcihXVF9TVEFUVVNfSEVBREVSLCBzKSwgIiIpOwogCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yKFdUX1NUQVRVU19IRUFERVIsIHMpLCBfKCJJbml0aWFsIGNvbW1pdCIpKTsKQEAgLTc2Niw5ICsxMjE3LDE3IEBACiAJCXd0X3N0YXR1c19wcmludF9zdWJtb2R1bGVfc3VtbWFyeShzLCAxKTsgIC8qIHVuc3RhZ2VkICovCiAJfQogCWlmIChzLT5zaG93X3VudHJhY2tlZF9maWxlcykgewotCQl3dF9zdGF0dXNfcHJpbnRfb3RoZXIocywgJnMtPnVudHJhY2tlZCwgXygiVW50cmFja2VkIiksICJhZGQiKTsKKwkJd3Rfc3RhdHVzX3ByaW50X290aGVyKHMsICZzLT51bnRyYWNrZWQsIF8oIlVudHJhY2tlZCBmaWxlcyIpLCAiYWRkIik7CiAJCWlmIChzLT5zaG93X2lnbm9yZWRfZmlsZXMpCi0JCQl3dF9zdGF0dXNfcHJpbnRfb3RoZXIocywgJnMtPmlnbm9yZWQsIF8oIklnbm9yZWQiKSwgImFkZCAtZiIpOworCQkJd3Rfc3RhdHVzX3ByaW50X290aGVyKHMsICZzLT5pZ25vcmVkLCBfKCJJZ25vcmVkIGZpbGVzIiksICJhZGQgLWYiKTsKKwkJaWYgKGFkdmljZV9zdGF0dXNfdV9vcHRpb24gJiYgMjAwMCA8IHMtPnVudHJhY2tlZF9pbl9tcykgeworCQkJc3RhdHVzX3ByaW50Zl9sbihzLCBHSVRfQ09MT1JfTk9STUFMLCAiIik7CisJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIEdJVF9DT0xPUl9OT1JNQUwsCisJCQkJCSBfKCJJdCB0b29rICUuMmYgc2Vjb25kcyB0byBlbnVtZXJhdGUgdW50cmFja2VkIGZpbGVzLiAnc3RhdHVzIC11bm8nXG4iCisJCQkJCSAgICJtYXkgc3BlZWQgaXQgdXAsIGJ1dCB5b3UgaGF2ZSB0byBiZSBjYXJlZnVsIG5vdCB0byBmb3JnZXQgdG8gYWRkXG4iCisJCQkJCSAgICJuZXcgZmlsZXMgeW91cnNlbGYgKHNlZSAnZ2l0IGhlbHAgc3RhdHVzJykuIiksCisJCQkJCSBzLT51bnRyYWNrZWRfaW5fbXMgLyAxMDAwLjApOworCQl9CiAJfSBlbHNlIGlmIChzLT5jb21taXRhYmxlKQogCQlzdGF0dXNfcHJpbnRmX2xuKHMsIEdJVF9DT0xPUl9OT1JNQUwsIF8oIlVudHJhY2tlZCBmaWxlcyBub3QgbGlzdGVkJXMiKSwKIAkJCWFkdmljZV9zdGF0dXNfaGludHMKQEAgLTc4MSwyMyArMTI0MCwzMSBAQAogCQkJc3RhdHVzX3ByaW50Zl9sbihzLCBHSVRfQ09MT1JfTk9STUFMLCBfKCJObyBjaGFuZ2VzIikpOwogCQllbHNlIGlmIChzLT5ub3dhcm4pCiAJCQk7IC8qIG5vdGhpbmcgKi8KLQkJZWxzZSBpZiAocy0+d29ya2Rpcl9kaXJ0eSkKLQkJCXByaW50ZihfKCJubyBjaGFuZ2VzIGFkZGVkIHRvIGNvbW1pdCVzXG4iKSwKLQkJCQlhZHZpY2Vfc3RhdHVzX2hpbnRzCi0JCQkJPyBfKCIgKHVzZSBcImdpdCBhZGRcIiBhbmQvb3IgXCJnaXQgY29tbWl0IC1hXCIpIikgOiAiIik7Ci0JCWVsc2UgaWYgKHMtPnVudHJhY2tlZC5ucikKLQkJCXByaW50ZihfKCJub3RoaW5nIGFkZGVkIHRvIGNvbW1pdCBidXQgdW50cmFja2VkIGZpbGVzIHByZXNlbnQlc1xuIiksCi0JCQkJYWR2aWNlX3N0YXR1c19oaW50cwotCQkJCT8gXygiICh1c2UgXCJnaXQgYWRkXCIgdG8gdHJhY2spIikgOiAiIik7Ci0JCWVsc2UgaWYgKHMtPmlzX2luaXRpYWwpCi0JCQlwcmludGYoXygibm90aGluZyB0byBjb21taXQlc1xuIiksIGFkdmljZV9zdGF0dXNfaGludHMKLQkJCQk/IF8oIiAoY3JlYXRlL2NvcHkgZmlsZXMgYW5kIHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaykiKSA6ICIiKTsKLQkJZWxzZSBpZiAoIXMtPnNob3dfdW50cmFja2VkX2ZpbGVzKQotCQkJcHJpbnRmKF8oIm5vdGhpbmcgdG8gY29tbWl0JXNcbiIpLCBhZHZpY2Vfc3RhdHVzX2hpbnRzCi0JCQkJPyBfKCIgKHVzZSAtdSB0byBzaG93IHVudHJhY2tlZCBmaWxlcykiKSA6ICIiKTsKLQkJZWxzZQotCQkJcHJpbnRmKF8oIm5vdGhpbmcgdG8gY29tbWl0JXNcbiIpLCBhZHZpY2Vfc3RhdHVzX2hpbnRzCi0JCQkJPyBfKCIgKHdvcmtpbmcgZGlyZWN0b3J5IGNsZWFuKSIpIDogIiIpOworCQllbHNlIGlmIChzLT53b3JrZGlyX2RpcnR5KSB7CisJCQlpZiAoYWR2aWNlX3N0YXR1c19oaW50cykKKwkJCQlwcmludGYoXygibm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXQgIgorCQkJCQkgIih1c2UgXCJnaXQgYWRkXCIgYW5kL29yIFwiZ2l0IGNvbW1pdCAtYVwiKVxuIikpOworCQkJZWxzZQorCQkJCXByaW50ZihfKCJubyBjaGFuZ2VzIGFkZGVkIHRvIGNvbW1pdFxuIikpOworCQl9IGVsc2UgaWYgKHMtPnVudHJhY2tlZC5ucikgeworCQkJaWYgKGFkdmljZV9zdGF0dXNfaGludHMpCisJCQkJcHJpbnRmKF8oIm5vdGhpbmcgYWRkZWQgdG8gY29tbWl0IGJ1dCB1bnRyYWNrZWQgZmlsZXMgIgorCQkJCQkgInByZXNlbnQgKHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaylcbiIpKTsKKwkJCWVsc2UKKwkJCQlwcmludGYoXygibm90aGluZyBhZGRlZCB0byBjb21taXQgYnV0IHVudHJhY2tlZCBmaWxlcyBwcmVzZW50XG4iKSk7CisJCX0gZWxzZSBpZiAocy0+aXNfaW5pdGlhbCkgeworCQkJaWYgKGFkdmljZV9zdGF0dXNfaGludHMpCisJCQkJcHJpbnRmKF8oIm5vdGhpbmcgdG8gY29tbWl0IChjcmVhdGUvY29weSBmaWxlcyAiCisJCQkJCSAiYW5kIHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaylcbiIpKTsKKwkJCWVsc2UKKwkJCQlwcmludGYoXygibm90aGluZyB0byBjb21taXRcbiIpKTsKKwkJfSBlbHNlIGlmICghcy0+c2hvd191bnRyYWNrZWRfZmlsZXMpIHsKKwkJCWlmIChhZHZpY2Vfc3RhdHVzX2hpbnRzKQorCQkJCXByaW50ZihfKCJub3RoaW5nIHRvIGNvbW1pdCAodXNlIC11IHRvIHNob3cgdW50cmFja2VkIGZpbGVzKVxuIikpOworCQkJZWxzZQorCQkJCXByaW50ZihfKCJub3RoaW5nIHRvIGNvbW1pdFxuIikpOworCQl9IGVsc2UKKwkJCXByaW50ZihfKCJub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyBkaXJlY3RvcnkgY2xlYW5cbiIpKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3d0LXN0YXR1cy5oIGIvd3Qtc3RhdHVzLmgKaW5kZXggMTRhYTlmNy4uNDEyMWJjMiAxMDA2NDQKLS0tIGEvd3Qtc3RhdHVzLmgKKysrIGIvd3Qtc3RhdHVzLmgKQEAgLTY5LDExICs2OSwyOSBAQAogCXN0cnVjdCBzdHJpbmdfbGlzdCBjaGFuZ2U7CiAJc3RydWN0IHN0cmluZ19saXN0IHVudHJhY2tlZDsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3QgaWdub3JlZDsKKwl1aW50MzJfdCB1bnRyYWNrZWRfaW5fbXM7Cit9OworCitzdHJ1Y3Qgd3Rfc3RhdHVzX3N0YXRlIHsKKwlpbnQgbWVyZ2VfaW5fcHJvZ3Jlc3M7CisJaW50IGFtX2luX3Byb2dyZXNzOworCWludCBhbV9lbXB0eV9wYXRjaDsKKwlpbnQgcmViYXNlX2luX3Byb2dyZXNzOworCWludCByZWJhc2VfaW50ZXJhY3RpdmVfaW5fcHJvZ3Jlc3M7CisJaW50IGNoZXJyeV9waWNrX2luX3Byb2dyZXNzOworCWludCBiaXNlY3RfaW5fcHJvZ3Jlc3M7CisJaW50IHJldmVydF9pbl9wcm9ncmVzczsKKwljaGFyICpicmFuY2g7CisJY2hhciAqb250bzsKKwljaGFyICpkZXRhY2hlZF9mcm9tOworCXVuc2lnbmVkIGNoYXIgZGV0YWNoZWRfc2hhMVsyMF07CisJdW5zaWduZWQgY2hhciByZXZlcnRfaGVhZF9zaGExWzIwXTsKIH07CiAKIHZvaWQgd3Rfc3RhdHVzX3ByZXBhcmUoc3RydWN0IHd0X3N0YXR1cyAqcyk7CiB2b2lkIHd0X3N0YXR1c19wcmludChzdHJ1Y3Qgd3Rfc3RhdHVzICpzKTsKIHZvaWQgd3Rfc3RhdHVzX2NvbGxlY3Qoc3RydWN0IHd0X3N0YXR1cyAqcyk7Cit2b2lkIHd0X3N0YXR1c19nZXRfc3RhdGUoc3RydWN0IHd0X3N0YXR1c19zdGF0ZSAqc3RhdGUsIGludCBnZXRfZGV0YWNoZWRfZnJvbSk7CiAKIHZvaWQgd3Rfc2hvcnRzdGF0dXNfcHJpbnQoc3RydWN0IHd0X3N0YXR1cyAqcyk7CiB2b2lkIHd0X3BvcmNlbGFpbl9wcmludChzdHJ1Y3Qgd3Rfc3RhdHVzICpzKTsKQEAgLTgyLDcgKzEwMCw1IEBACiAJOwogdm9pZCBzdGF0dXNfcHJpbnRmKHN0cnVjdCB3dF9zdGF0dXMgKnMsIGNvbnN0IGNoYXIgKmNvbG9yLCBjb25zdCBjaGFyICpmbXQsIC4uLikKIAk7Ci12b2lkIHN0YXR1c19wcmludGZfbW9yZShzdHJ1Y3Qgd3Rfc3RhdHVzICpzLCBjb25zdCBjaGFyICpjb2xvciwgY29uc3QgY2hhciAqZm10LCAuLi4pCi0JX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZiwgMywgNCkpKTsKIAogI2VuZGlmIC8qIFNUQVRVU19IICovCmRpZmYgLS1naXQgYS94ZGlmZi94ZGlmZmkuYyBiL3hkaWZmL3hkaWZmaS5jCmluZGV4IDFiNzAxMmEuLmIyZWI2ZGIgMTAwNjQ0Ci0tLSBhL3hkaWZmL3hkaWZmaS5jCisrKyBiL3hkaWZmL3hkaWZmaS5jCkBAIC00OTAsNyArNDkwLDcgQEAKIAogCQkvKgogCQkgKiBUcnkgdG8gbW92ZSBiYWNrIHRoZSBwb3NzaWJseSBtZXJnZWQgZ3JvdXAgb2YgY2hhbmdlcywgdG8gbWF0Y2gKLQkJICogdGhlIHJlY29yZGVkIHBvc3Rpb24gaW4gdGhlIG90aGVyIGZpbGUuCisJCSAqIHRoZSByZWNvcmRlZCBwb3NpdGlvbiBpbiB0aGUgb3RoZXIgZmlsZS4KIAkJICovCiAJCXdoaWxlIChpeHJlZiA8IGl4KSB7CiAJCQlyY2hnWy0taXhzXSA9IDE7CmRpZmYgLS1naXQgYS94ZGlmZi94aGlzdG9ncmFtLmMgYi94ZGlmZi94aGlzdG9ncmFtLmMKaW5kZXggYmY5OTc4Ny4uNzMyMTBjYiAxMDA2NDQKLS0tIGEveGRpZmYveGhpc3RvZ3JhbS5jCisrKyBiL3hkaWZmL3hoaXN0b2dyYW0uYwpAQCAtNTUsNyArNTUsNyBAQAogCXN0cnVjdCByZWNvcmQgewogCQl1bnNpZ25lZCBpbnQgcHRyLCBjbnQ7CiAJCXN0cnVjdCByZWNvcmQgKm5leHQ7Ci0JfSAqKnJlY29yZHMsIC8qIGFuIG9jdXJyZW5jZSAqLworCX0gKipyZWNvcmRzLCAvKiBhbiBvY2N1cnJlbmNlICovCiAJICAqKmxpbmVfbWFwOyAvKiBtYXAgb2YgbGluZSB0byByZWNvcmQgY2hhaW4gKi8KIAljaGFzdG9yZV90IHJjaGE7CiAJdW5zaWduZWQgaW50ICpuZXh0X3B0cnM7CmRpZmYgLS1naXQgYS96bGliLmMgYi96bGliLmMKaW5kZXggMmIyYzBjNy4uNjFlNmRmMCAxMDA2NDQKLS0tIGEvemxpYi5jCisrKyBiL3psaWIuYwpAQCAtMTY4LDEzICsxNjgsOCBAQAogCSAgICBzdHJtLT56Lm1zZyA/IHN0cm0tPnoubXNnIDogIm5vIG1lc3NhZ2UiKTsKIH0KIAotdm9pZCBnaXRfZGVmbGF0ZV9pbml0X2d6aXAoZ2l0X3pzdHJlYW0gKnN0cm0sIGludCBsZXZlbCkKK3N0YXRpYyB2b2lkIGRvX2dpdF9kZWZsYXRlX2luaXQoZ2l0X3pzdHJlYW0gKnN0cm0sIGludCBsZXZlbCwgaW50IHdpbmRvd0JpdHMpCiB7Ci0JLyoKLQkgKiBVc2UgZGVmYXVsdCAxNSBiaXRzLCArMTYgaXMgdG8gZ2VuZXJhdGUgZ3ppcCBoZWFkZXIvdHJhaWxlcgotCSAqIGluc3RlYWQgb2YgdGhlIHpsaWIgd3JhcHBlci4KLQkgKi8KLQljb25zdCBpbnQgd2luZG93Qml0cyA9IDE1ICsgMTY7CiAJaW50IHN0YXR1czsKIAogCXpsaWJfcHJlX2NhbGwoc3RybSk7CkBAIC0xODgsNiArMTgzLDI0IEBACiAJICAgIHN0cm0tPnoubXNnID8gc3RybS0+ei5tc2cgOiAibm8gbWVzc2FnZSIpOwogfQogCit2b2lkIGdpdF9kZWZsYXRlX2luaXRfZ3ppcChnaXRfenN0cmVhbSAqc3RybSwgaW50IGxldmVsKQoreworCS8qCisJICogVXNlIGRlZmF1bHQgMTUgYml0cywgKzE2IGlzIHRvIGdlbmVyYXRlIGd6aXAgaGVhZGVyL3RyYWlsZXIKKwkgKiBpbnN0ZWFkIG9mIHRoZSB6bGliIHdyYXBwZXIuCisJICovCisJZG9fZ2l0X2RlZmxhdGVfaW5pdChzdHJtLCBsZXZlbCwgMTUgKyAxNik7Cit9CisKK3ZvaWQgZ2l0X2RlZmxhdGVfaW5pdF9yYXcoZ2l0X3pzdHJlYW0gKnN0cm0sIGludCBsZXZlbCkKK3sKKwkvKgorCSAqIFVzZSBkZWZhdWx0IDE1IGJpdHMsIG5lZ2F0ZSB0aGUgdmFsdWUgdG8gZ2V0IHJhdyBjb21wcmVzc2VkCisJICogZGF0YSB3aXRob3V0IHpsaWIgaGVhZGVyIGFuZCB0cmFpbGVyLgorCSAqLworCWRvX2dpdF9kZWZsYXRlX2luaXQoc3RybSwgbGV2ZWwsIC0xNSk7Cit9CisKIGludCBnaXRfZGVmbGF0ZV9hYm9ydChnaXRfenN0cmVhbSAqc3RybSkKIHsKIAlpbnQgc3RhdHVzOwo=