From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rebase the Intel VLA patchset. Date: Sat, 27 Jun 2026 23:56:42 GMT Message-ID: <178260460260.1.8082936091386737635.rpms-gdb-cec929771252@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: cec929771252d3560ec30522be36990ab1703b4f ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogY2VjOTI5NzcxMjUyZDM1NjBlYzMwNTIyYmUzNjk5MGFiMTcw M2I0ZgogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxNC0wNy0wOFQyMToxMTowNSswMjow MAogICAgICAgICAgICBTdGF0cyAgOiArNDExMC8tNTExOSBpbiAyOSBmaWxlKHMpCiAgICAgICAg ICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvY2Vj OTI5NzcxMjUyZDM1NjBlYzMwNTIyYmUzNjk5MGFiMTcwM2I0Zj9icmFuY2g9Z2RiLTE3LjItcmVi YXNlLWY0NAoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICBSZWJhc2UgdGhlIEludGVsIFZM QSBwYXRjaHNldC4KCi0gUHl0aG9uIGNvbXBsZXRpb24gdy9vdmVycmlkZW4gY29tcGxldGVyIChT ZXJnaW8gRHVyaWdhbiBKdW5pb3IsIEJaIDEwNzUxOTkpLgotIFJlbW92ZSAle19iaW5kaXJ9L21v bm8tZ2RiLnB5IHdvcmthcm91bmQgb2YgbW9ubyBCWiA4MTU1MDEuCgotLS0KZGlmZiAtLWdpdCBh L2dkYi1hcmNoZXItdmxhLXRlc3RzLnBhdGNoIGIvZ2RiLWFyY2hlci12bGEtdGVzdHMucGF0Y2gK aW5kZXggMWY4ODg2ZC4uYjhjNGVkYyAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci12bGEtdGVzdHMu cGF0Y2gKKysrIGIvZ2RiLWFyY2hlci12bGEtdGVzdHMucGF0Y2gKQEAgLTE0LDU4NyArMTQsNiBA QCBJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5hZGEvcGFja2Vk X2FycmF5LmV4cAogKyAgICB9CiAgfQogIAotSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2lu dGVyLWZvby5TCTIwMTQtMDYtMTYgMjM6MzA6MzAuMTA4OTQwNDg0ICswMjAwCi1AQCAtMCwwICsx LDQ1NyBAQAotKwkuZmlsZQkieDg2XzY0LXZsYS1wb2ludGVyLmMiCi0rCS5zZWN0aW9uCS5kZWJ1 Z19hYmJyZXYsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19hYmJyZXYwOgotKwkuc2VjdGlvbgkuZGVi dWdfaW5mbywiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2luZm8wOgotKwkuc2VjdGlvbgkuZGVidWdf bGluZSwiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xpbmUwOgotKwkudGV4dAotKy5MdGV4dDA6Ci0r Lmdsb2JsIGZvbwotKwkudHlwZQlmb28sIEBmdW5jdGlvbgotK2ZvbzoKLSsuTEZCMjoKLSsJLmZp bGUgMSAieDg2XzY0LXZsYS1wb2ludGVyLmMiCi0rCS5sb2MgMSAyMiAwCi0rCXB1c2hxCSVyYnAK LSsuTENGSTA6Ci0rCW1vdnEJJXJzcCwgJXJicAotKy5MQ0ZJMToKLSsJc3VicQkkNjQsICVyc3AK LSsuTENGSTI6Ci0rCW1vdmwJJWVkaSwgLTM2KCVyYnApCi0rCS5sb2MgMSAyMiAwCi0rCW1vdnEJ JXJzcCwgJXJheAotKwltb3ZxCSVyYXgsIC00OCglcmJwKQotKwkubG9jIDEgMjMgMAotKwltb3Zs CS0zNiglcmJwKSwgJWVkeAotKwltb3ZzbHEJJWVkeCwlcmF4Ci0rCXN1YnEJJDEsICVyYXgKLSsJ bW92cQklcmF4LCAtMjQoJXJicCkKLSsJLmxvYyAxIDI0IDAKLSsJbW92c2xxCSVlZHgsJXJheAot KwlhZGRxCSQxNSwgJXJheAotKwlhZGRxCSQxNSwgJXJheAotKwlzaHJxCSQ0LCAlcmF4Ci0rCXNh bHEJJDQsICVyYXgKLSsJc3VicQklcmF4LCAlcnNwCi0rCW1vdnEJJXJzcCwgLTU2KCVyYnApCi0r CW1vdnEJLTU2KCVyYnApLCAlcmF4Ci0rCWFkZHEJJDE1LCAlcmF4Ci0rCXNocnEJJDQsICVyYXgK LSsJc2FscQkkNCwgJXJheAotKwltb3ZxCSVyYXgsIC01NiglcmJwKQotKwltb3ZxCS01NiglcmJw KSwgJXJheAotKwltb3ZxCSVyYXgsIC0xNiglcmJwKQotKwkubG9jIDEgMjcgMAotKwltb3ZsCSQw LCAtNCglcmJwKQotKwlqbXAJLkwyCi0rLkwzOgotKwkubG9jIDEgMjggMAotKwltb3ZsCS00KCVy YnApLCAlZXNpCi0rCW1vdmwJLTQoJXJicCksICVlYXgKLSsJbW92bAklZWF4LCAlZWN4Ci0rCW1v dnEJLTE2KCVyYnApLCAlcmR4Ci0rCW1vdnNscQklZXNpLCVyYXgKLSsJbW92YgklY2wsICglcmR4 LCVyYXgpCi0rCS5sb2MgMSAyNyAwCi0rCWFkZGwJJDEsIC00KCVyYnApCi0rLkwyOgotKwltb3Zs CS00KCVyYnApLCAlZWF4Ci0rCWNtcGwJLTM2KCVyYnApLCAlZWF4Ci0rCWpsCS5MMwotKwkubG9j IDEgMzAgMAotKwkuZ2xvYmwJYnJlYWtfaGVyZQotK2JyZWFrX2hlcmU6Ci0rCW1vdnEJLTE2KCVy YnApLCAlcmF4Ci0rCW1vdmIJJDAsICglcmF4KQotKwltb3ZxCS00OCglcmJwKSwgJXJzcAotKwku bG9jIDEgMzEgMAotKwlsZWF2ZQotKwlyZXQKLSsuTEZFMjoKLSsJLnNpemUJZm9vLCAuLWZvbwot Kwkuc2VjdGlvbgkuZGVidWdfZnJhbWUsIiIsQHByb2diaXRzCi0rLkxmcmFtZTA6Ci0rCS5sb25n CS5MRUNJRTAtLkxTQ0lFMAotKy5MU0NJRTA6Ci0rCS5sb25nCTB4ZmZmZmZmZmYKLSsJLmJ5dGUJ MHgxCi0rCS5zdHJpbmcJIiIKLSsJLnVsZWIxMjggMHgxCi0rCS5zbGViMTI4IC04Ci0rCS5ieXRl CTB4MTAKLSsJLmJ5dGUJMHhjCi0rCS51bGViMTI4IDB4NwotKwkudWxlYjEyOCAweDgKLSsJLmJ5 dGUJMHg5MAotKwkudWxlYjEyOCAweDEKLSsJLmFsaWduIDgKLSsuTEVDSUUwOgotKy5MU0ZERTA6 Ci0rCS5sb25nCS5MRUZERTAtLkxBU0ZERTAKLSsuTEFTRkRFMDoKLSsJLmxvbmcJLkxmcmFtZTAK LSsJLnF1YWQJLkxGQjIKLSsJLnF1YWQJLkxGRTItLkxGQjIKLSsJLmJ5dGUJMHg0Ci0rCS5sb25n CS5MQ0ZJMC0uTEZCMgotKwkuYnl0ZQkweGUKLSsJLnVsZWIxMjggMHgxMAotKwkuYnl0ZQkweDg2 Ci0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDQKLSsJLmxvbmcJLkxDRkkxLS5MQ0ZJMAotKwku Ynl0ZQkweGQKLSsJLnVsZWIxMjggMHg2Ci0rCS5hbGlnbiA4Ci0rLkxFRkRFMDoKLSsJLnNlY3Rp b24JLmVoX2ZyYW1lLCJhIixAcHJvZ2JpdHMKLSsuTGZyYW1lMToKLSsJLmxvbmcJLkxFQ0lFMS0u TFNDSUUxCi0rLkxTQ0lFMToKLSsJLmxvbmcJMHgwCi0rCS5ieXRlCTB4MQotKwkuc3RyaW5nCSJ6 UiIKLSsJLnVsZWIxMjggMHgxCi0rCS5zbGViMTI4IC04Ci0rCS5ieXRlCTB4MTAKLSsJLnVsZWIx MjggMHgxCi0rCS5ieXRlCTB4MwotKwkuYnl0ZQkweGMKLSsJLnVsZWIxMjggMHg3Ci0rCS51bGVi MTI4IDB4OAotKwkuYnl0ZQkweDkwCi0rCS51bGViMTI4IDB4MQotKwkuYWxpZ24gOAotKy5MRUNJ RTE6Ci0rLkxTRkRFMToKLSsJLmxvbmcJLkxFRkRFMS0uTEFTRkRFMQotKy5MQVNGREUxOgotKwku bG9uZwkuTEFTRkRFMS0uTGZyYW1lMQotKwkubG9uZwkuTEZCMgotKwkubG9uZwkuTEZFMi0uTEZC MgotKwkudWxlYjEyOCAweDAKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMC0uTEZCMgotKwku Ynl0ZQkweGUKLSsJLnVsZWIxMjggMHgxMAotKwkuYnl0ZQkweDg2Ci0rCS51bGViMTI4IDB4Mgot KwkuYnl0ZQkweDQKLSsJLmxvbmcJLkxDRkkxLS5MQ0ZJMAotKwkuYnl0ZQkweGQKLSsJLnVsZWIx MjggMHg2Ci0rCS5hbGlnbiA4Ci0rLkxFRkRFMToKLSsJLnRleHQKLSsuTGV0ZXh0MDoKLSsJLnNl Y3Rpb24JLmRlYnVnX2xvYywiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xvYzA6Ci0rLkxMU1QwOgot KwkucXVhZAkuTEZCMi0uTHRleHQwCi0rCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCi0rCS52YWx1ZQkw eDIKLSsJLmJ5dGUJMHg3NwotKwkuc2xlYjEyOCA4Ci0rCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCi0r CS5xdWFkCS5MQ0ZJMS0uTHRleHQwCi0rCS52YWx1ZQkweDIKLSsJLmJ5dGUJMHg3NwotKwkuc2xl YjEyOCAxNgotKwkucXVhZAkuTENGSTEtLkx0ZXh0MAotKwkucXVhZAkuTEZFMi0uTHRleHQwCi0r CS52YWx1ZQkweDIKLSsJLmJ5dGUJMHg3NgotKwkuc2xlYjEyOCAxNgotKwkucXVhZAkweDAKLSsJ LnF1YWQJMHgwCi0rCS5zZWN0aW9uCS5kZWJ1Z19pbmZvCi0rLkxkZWJ1Z19yZWxhdGl2ZToKLSsJ LmxvbmcJLkxkZWJ1Z19lbmQgLSAuTGRlYnVnX3N0YXJ0Ci0rLkxkZWJ1Z19zdGFydDoKLSsJLnZh bHVlCTB4MgotKwkubG9uZwkuTGRlYnVnX2FiYnJldjAKLSsJLmJ5dGUJMHg4Ci0rCS51bGViMTI4 IDB4MQotKwkubG9uZwkuTEFTRjIKLSsJLmJ5dGUJMHgxCi0rCS5sb25nCS5MQVNGMwotKwkubG9u ZwkuTEFTRjQKLSsJLnF1YWQJLkx0ZXh0MAotKwkucXVhZAkuTGV0ZXh0MAotKwkubG9uZwkuTGRl YnVnX2xpbmUwCi0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDEKLSsJLnN0cmluZwkiZm9vIgot KwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHgxNgotKwkuYnl0ZQkweDEKLSsJLnF1YWQJLkxGQjIKLSsJ LnF1YWQJLkxGRTIKLSsJLmxvbmcJLkxMU1QwCi0rCS5sb25nCS5MdHlwZV9pbnQgLSAuTGRlYnVn X3JlbGF0aXZlCi0rCS51bGViMTI4IDB4MwotKwkubG9uZwkuTEFTRjUKLSsJLmJ5dGUJMHgxCi0r CS5ieXRlCTB4MTUKLSsJLmxvbmcJLkx0eXBlX2ludCAtIC5MZGVidWdfcmVsYXRpdmUKLSsJLmJ5 dGUJMHgyCi0rCS5ieXRlCTB4OTEKLSsJLnNsZWIxMjggLTUyCi0rLkx0YWdfcG9pbnRlcjoKLSsJ LnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4OAkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmxvbmcJ Lkx0YWdfYXJyYXlfdHlwZSAtIC5kZWJ1Z19pbmZvCS8qIERXX0FUX3R5cGUgKi8KLSsJLnVsZWIx MjggMHg1CS8qIEFiYnJldiBOdW1iZXI6IDUgKERXX1RBR192YXJpYWJsZSkgKi8KLSsJLmxvbmcJ LkxBU0YwCi0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDE4Ci0rI2lmIDEKLSsJLmxvbmcJLkx0YWdf cG9pbnRlciAtIC5kZWJ1Z19pbmZvCi0rI2Vsc2UKLSsJLyogRGVidWdnaW5nIG9ubHk6IFNraXAg dGhlIHR5cGVkZWYgaW5kaXJlY3Rpb24uICAqLwotKwkubG9uZwkuTHRhZ19hcnJheV90eXBlIC0g LmRlYnVnX2luZm8KLSsjZW5kaWYKLSsJLyogRFdfQVRfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sx OiBzdGFydCAqLwotKwkuYnl0ZQkweDMKLSsJLmJ5dGUJMHg5MQotKwkuc2xlYjEyOCAtMzIKLSsj aWYgMAotKwkuYnl0ZQkweDYJLyogRFdfT1BfZGVyZWYgKi8KLSsjZWxzZQotKwkuYnl0ZQkweDk2 CS8qIERXX09QX25vcCAqLwotKyNlbmRpZgotKwkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9STV9i bG9jazE6IGVuZCAqLwotKwkudWxlYjEyOCAweDYKLSsJLnN0cmluZwkiaSIKLSsJLmJ5dGUJMHgx Ci0rCS5ieXRlCTB4MTkKLSsJLmxvbmcJLkx0eXBlX2ludCAtIC5MZGVidWdfcmVsYXRpdmUKLSsJ LmJ5dGUJMHgyCi0rCS5ieXRlCTB4OTEKLSsJLnNsZWIxMjggLTIwCi0rCS5ieXRlCTB4MAotKy5M dHlwZV9pbnQ6Ci0rCS51bGViMTI4IDB4NwotKwkuYnl0ZQkweDQKLSsJLmJ5dGUJMHg1Ci0rCS5z dHJpbmcJImludCIKLSsuTHRhZ19hcnJheV90eXBlOgotKwkudWxlYjEyOCAweDgJLyogQWJicmV2 IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUpICovCi0rCS5sb25nCS5MdHlwZV9jaGFyIC0g LkxkZWJ1Z19yZWxhdGl2ZQotKwkubG9uZwkuTHR5cGVfdWxvbmcgLSAuTGRlYnVnX3JlbGF0aXZl CS8qIERXX0FUX3NpYmxpbmc6IERXX0ZPUk1fcmVmNCAqLwotKzE6CS8qIERXX0FUX2RhdGFfbG9j YXRpb246IERXX0ZPUk1fYmxvY2sxOiBzdGFydCAqLwotKwkuYnl0ZQkyZiAtIDNmCS8qIGxlbmd0 aCAqLwotKzM6Ci0rCS5ieXRlCTB4OTcJLyogRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcyAqLwot KyNpZiAxCi0rCS5ieXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLwotKyNlbHNlCi0rCS5ieXRlCTB4 OTYJLyogRFdfT1Bfbm9wICovCi0rI2VuZGlmCi0rMjoJLyogRFdfQVRfZGF0YV9sb2NhdGlvbjog RFdfRk9STV9ibG9jazE6IGVuZCAqLwotKwkudWxlYjEyOCAweDkKLSsJLmxvbmcJLkx0eXBlX2No YXIgLSAuTGRlYnVnX3JlbGF0aXZlCS8qIERXX0FUX3R5cGU6IERXX0ZPUk1fcmVmNCAqLwotKwku Ynl0ZQkweDMKLSsJLmJ5dGUJMHg5MQotKwkuc2xlYjEyOCAtNDAKLSsJLmJ5dGUJMHg2Ci0rCS5i eXRlCTB4MAotKy5MdHlwZV91bG9uZzoKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4OAotKwku Ynl0ZQkweDcKLSsuTHR5cGVfY2hhcjoKLSsJLnVsZWIxMjggMHhiCi0rCS5ieXRlCTB4MQotKwku Ynl0ZQkweDYKLSsJLmxvbmcJLkxBU0YxCi0rCS5ieXRlCTB4MAotKy5MZGVidWdfZW5kOgotKwku c2VjdGlvbgkuZGVidWdfYWJicmV2Ci0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDExCi0r CS5ieXRlCTB4MQotKwkudWxlYjEyOCAweDI1Ci0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAw eDEzCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS51 bGViMTI4IDB4MWIKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4MTEKLSsJLnVsZWIxMjgg MHgxCi0rCS51bGViMTI4IDB4MTIKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTAKLSsJ LnVsZWIxMjggMHg2Ci0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgyCi0r CS51bGViMTI4IDB4MmUKLSsJLmJ5dGUJMHgxCi0rCS51bGViMTI4IDB4M2YKLSsJLnVsZWIxMjgg MHhjCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweDgKLSsJLnVsZWIxMjggMHgzYQotKwku dWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjgg MHgyNwotKwkudWxlYjEyOCAweGMKLSsJLnVsZWIxMjggMHgxMQotKwkudWxlYjEyOCAweDEKLSsJ LnVsZWIxMjggMHgxMgotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHg0MAotKwkudWxlYjEy OCAweDYKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTMKLSsJLmJ5dGUJMHgwCi0rCS5i eXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHg1Ci0rCS5ieXRlCTB4MAotKwku dWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjgg MHhiCi0rCS51bGViMTI4IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJ LnVsZWIxMjggMHgxMwotKwkudWxlYjEyOCAweDIKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4 MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg0CS8qIC5MdGFnX3BvaW50ZXIgYWJicmV2ICov Ci0rCS51bGViMTI4IDB4MGYJLyogRFdfVEFHX3BvaW50ZXJfdHlwZSAqLwotKwkuYnl0ZQkweDAK LSsJLnVsZWIxMjggMHgwYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHg0OQotKwkudWxl YjEyOCAweDEzCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg1Ci0rCS51 bGViMTI4IDB4MzQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweGUK LSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxl YjEyOCAweGIKLSsJLnVsZWIxMjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0rCS51bGViMTI4IDB4 MgotKwkudWxlYjEyOCAweGEKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAw eDYKLSsJLnVsZWIxMjggMHgzNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGVi MTI4IDB4OAotKwkudWxlYjEyOCAweDNhCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNi Ci0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDQ5Ci0rCS51bGViMTI4IDB4MTMKLSsJLnVs ZWIxMjggMHgyCi0rCS51bGViMTI4IDB4YQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51 bGViMTI4IDB4NwotKwkudWxlYjEyOCAweDI0Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIK LSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2UKLSsJLnVsZWIxMjggMHhiCi0rCS51bGVi MTI4IDB4MwotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxl YjEyOCAweDgJLyogQWJicmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUpICovCi0rCS51 bGViMTI4IDB4MQotKwkuYnl0ZQkweDEKLSsJLnVsZWIxMjggMHg0OQkvKiBEV19BVF90eXBlICov Ci0rCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4MQkvKiBE V19BVF9zaWJsaW5nICovCi0rCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51 bGViMTI4IDB4NTAJLyogRFdfQVRfZGF0YV9sb2NhdGlvbiAqLwotKwkudWxlYjEyOCAweGEJLyog RFdfRk9STV9ibG9jazEgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAw eDkKLSsJLnVsZWIxMjggMHgyMQotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg0OQkvKiBEV19B VF90eXBlICovCi0rCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4 IDB4MmYKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIx MjggMHhhCi0rCS51bGViMTI4IDB4MjQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YgotKwku dWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzZQotKwkudWxlYjEyOCAweGIKLSsJLmJ5dGUJMHgw Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgyNAotKwkuYnl0ZQkw eDAKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNlCi0rCS51 bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS5ieXRlCTB4MAot KwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS5zZWN0aW9uCS5kZWJ1Z19wdWJuYW1lcywiIixA cHJvZ2JpdHMKLSsJLmxvbmcJMHgxNgotKwkudmFsdWUJMHgyCi0rCS5sb25nCS5MZGVidWdfaW5m bzAKLSsJLmxvbmcJMHhhOAotKwkubG9uZwkweDJkCi0rCS5zdHJpbmcJImZvbyIKLSsJLmxvbmcJ MHgwCi0rCS5zZWN0aW9uCS5kZWJ1Z19hcmFuZ2VzLCIiLEBwcm9nYml0cwotKwkubG9uZwkweDJj Ci0rCS52YWx1ZQkweDIKLSsJLmxvbmcJLkxkZWJ1Z19pbmZvMAotKwkuYnl0ZQkweDgKLSsJLmJ5 dGUJMHgwCi0rCS52YWx1ZQkweDAKLSsJLnZhbHVlCTB4MAotKwkucXVhZAkuTHRleHQwCi0rCS5x dWFkCS5MZXRleHQwLS5MdGV4dDAKLSsJLnF1YWQJMHgwCi0rCS5xdWFkCTB4MAotKwkuc2VjdGlv bgkuZGVidWdfc3RyLCJNUyIsQHByb2diaXRzLDEKLSsuTEFTRjA6Ci0rCS5zdHJpbmcJImFycmF5 IgotKy5MQVNGNToKLSsJLnN0cmluZwkic2l6ZSIKLSsuTEFTRjM6Ci0rCS5zdHJpbmcJIng4Nl82 NC12bGEtcG9pbnRlci5jIgotKy5MQVNGNjoKLSsJLnN0cmluZwkiYXJyYXlfdCIKLSsuTEFTRjE6 Ci0rCS5zdHJpbmcJImNoYXIiCi0rLkxBU0Y0OgotKwkuc3RyaW5nCSJnZGIuYXJjaCIKLSsuTEFT RjI6Ci0rCS5zdHJpbmcJIkdOVSBDIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgot KwkuaWRlbnQJIkdDQzogKEdOVSkgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4zLjItNykiCi0r CS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKLUluZGV4OiBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKLSsrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0 LXZsYS1wb2ludGVyLmMJMjAxNC0wNi0xNiAyMzozMDozMC4xMDg5NDA0ODQgKzAyMDAKLUBAIC0w LDAgKzEsNDMgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRl YnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsj aWYgMAotKwotK3ZvaWQKLStmb28gKGludCBzaXplKQotK3sKLSsgIHR5cGVkZWYgY2hhciBhcnJh eV90W3NpemVdOwotKyAgYXJyYXlfdCBhcnJheTsKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0g MDsgaSA8IHNpemU7IGkrKykKLSsgICAgYXJyYXlbaV0gPSBpOwotKwotKyAgYXJyYXlbMF0gPSAw OwkvKiBicmVhay1oZXJlICovCi0rfQotKwotKyNlbHNlCi0rCi0raW50Ci0rbWFpbiAodm9pZCkK LSt7Ci0rICBmb28gKDI2KTsKLSsgIGZvbyAoNzgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKyNl bmRpZgotSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94 ODZfNjQtdmxhLXBvaW50ZXIuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv dGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAJMjAxNC0wNi0xNiAyMzoz MDozMC4xMDg5NDA0ODQgKzAyMDAKLUBAIC0wLDAgKzEsNjYgQEAKLSsjIENvcHlyaWdodCAyMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KLSsKLStpZiAhW2lzdGFyZ2V0ICJ4ODZfNjQtKi0qIl0gdGhlbiB7Ci0rICAgIHZl cmJvc2UgIlNraXBwaW5nIG92ZXIgZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmV4cCB0ZXN0 IG1hZGUgb25seSBmb3IgeDg2XzY0LiIKLSsgICAgcmV0dXJuCi0rfQotKwotK3NldCB0ZXN0Zmls ZSB4ODZfNjQtdmxhLXBvaW50ZXIKLStzZXQgc3JjYXNtZmlsZSAke3Rlc3RmaWxlfS1mb28uUwot K3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJk aXJ9LyR7dGVzdGZpbGV9Ci0rc2V0IGJpbm9iamZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rl c3RmaWxlfS1mb28ubwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e3NyY2FzbWZpbGV9IiAiJHtiaW5vYmpmaWxlfSIgb2JqZWN0IHt9XSAhPSAiIiB9IHsKLSsgICAg dW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEK LSt9Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0g JHtiaW5vYmpmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7 Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAgcmV0 dXJuIC0xCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9k aXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG9f bWFpbl0gewotKyAgICB1bnRlc3RlZCB4ODZfNjQtdmxhLXBvaW50ZXIKLSsgICAgcmV0dXJuIC0x Ci0rfQotKwotK2dkYl9icmVha3BvaW50ICJicmVha19oZXJlIgotKwotK2dkYl9jb250aW51ZV90 b19icmVha3BvaW50ICJicmVha19oZXJlIgotKwotK2dkYl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0 eXBlID0gY2hhciBcXChcXCpcXClcXFxbMjZcXFxdIiAiZmlyc3Q6IHdoYXRpcyBhcnJheSIKLStn ZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbMjZcXFxdIiAi Zmlyc3Q6IHB0eXBlIGFycmF5IgotKwotK2dkYl90ZXN0ICJ3aGF0aXMgKmFycmF5IiAidHlwZSA9 IGNoYXIgXFxcW3ZhcmlhYmxlIGxlbmd0aFxcXF0iICJmaXJzdDogd2hhdGlzICphcnJheSIKLStn ZGJfdGVzdCAicHR5cGUgKmFycmF5IiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlIGxlbmd0aFxc XF0iICJmaXJzdDogcHR5cGUgKmFycmF5IgotKwotK2dkYl90ZXN0ICJwICgqYXJyYXkpXFsxXF0i ICJcXCRcWzAtOVxdID0gMSAnXFxcXDAwMSciCi0rZ2RiX3Rlc3QgInAgKCphcnJheSlcWzJcXSIg IlxcJFxbMC05XF0gPSAyICdcXFxcMDAyJyIKLStnZGJfdGVzdCAicCAoKmFycmF5KVxbM1xdIiAi XFwkXFswLTlcXSA9IDMgJ1xcXFwwMDMnIgotK2dkYl90ZXN0ICJwICgqYXJyYXkpXFs0XF0iICJc XCRcWzAtOVxdID0gNCAnXFxcXDAwNCciCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg ImJyZWFrX2hlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBjaGFyIFxc KFxcKlxcKVxcXFs3OFxcXF0iICJzZWNvbmQ6IHdoYXRpcyBhcnJheSIKLStnZGJfdGVzdCAicHR5 cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlw ZSBhcnJheSIKLSsKLStnZGJfdGVzdCAid2hhdGlzICphcnJheSIgInR5cGUgPSBjaGFyIFxcXFt2 YXJpYWJsZSBsZW5ndGhcXFxdIiAic2Vjb25kOiB3aGF0aXMgKmFycmF5IgotK2dkYl90ZXN0ICJw dHlwZSAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbdmFyaWFibGUgbGVuZ3RoXFxcXSIgInNlY29u ZDogcHR5cGUgKmFycmF5IgogSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYtZm9vLlMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKCmRpZmYgLS1naXQgYS9n ZGItcHl0aG9uLWNvbXBsZXRlci0xb2YyLnBhdGNoIGIvZ2RiLXB5dGhvbi1jb21wbGV0ZXItMW9m Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDc4ODIyCi0tLSAv ZGV2L251bGwKKysrIGIvZ2RiLXB5dGhvbi1jb21wbGV0ZXItMW9mMi5wYXRjaApAQCAtMCwwICsx LDc0NyBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTQtMDcvbXNn MDAwMDIuaHRtbAorU3ViamVjdDogUmU6IFtQQVRDSF0gUFIgcHl0aG9uLzE2Njk5OiBHREIgUHl0 aG9uIGNvbW1hbmQgY29tcGxldGlvbiB3aXRoIG92ZXJyaWRlbiBjb21wbGV0ZSB2cy4gY29tcGxl dGVyIGNsYXNzCitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTEw NzUxOTkKKworT24gV2VkbmVzZGF5LCBNYXkgMjEgMjAxNCwgRG91ZyBFdmFucyB3cm90ZToKKwor PiBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2RqQHJlZGhhdC5jb20+IHdyaXRlczoKKz4+ IFsuLi5dCis+PiBUaGFua3MuICBXRFlUIG9mIHRoZSBmb2xsb3dpbmcgcGF0Y2g/Cis+Cis+IEhp LgorPgorPiBmd2l3IGl0J3MgdG9vIGJhZCB0aGUgYWJpbGl0eSB0byBwbHVnIGluIGRpZmZlcmVu dCBjb21wbGV0ZXJzIGlzbid0IG1vcmUsCis+IEkgZHVubm8sIHBhcmFtZXRlcml6ZWQgKGNvdWxk bid0IHBpY2sgYSBiZXR0ZXIgdGVybSwgYXBvbG9naWVzIC0KKz4gSSB0aG91Z2h0IG9mICJvYmpl Y3Qgb3JpZW50ZWQiIGJ1dCB0aGF0IGNhcnJpZXMgaXRzIG93biBiYWdnYWdlKS4KKz4gUGVyZm9y bWluZyBjb21wbGV0aW9uIG9idmlvdXNseSBpbnZvbHZlcyBzcGVjaWZ5aW5nIG1vcmUgdGhhbiBh IGp1c3QKKz4gc2luZ2xlIGZ1bmN0aW9uICh3aXRuZXNzIHRoZSBjb21wYXJpc29uIG9mIHRoZSBj b21wbGV0ZXIgd2l0aCBzcGVjaWZpYworPiBmdW5jdGlvbnMpLgorCitUaGFua3MgZm9yIHRoZSBy ZXBseSwgYW5kIHNvcnJ5IGZvciB0aGUgbG9uZyBkZWxheSBpbiBhbnN3ZXJpbmcuCisKKz4gUGx1 cyBpdCdzIG1vcmUgdGhhbiBzcGVjaWZ5aW5nIGJya2NoYXJzLgorPiBXaXRuZXNzIGNvZGUgbGlr ZSB0aGlzOgorPgorPiAJCSAgICAgIC8qIE1hbnkgY29tbWFuZHMgd2hpY2ggd2FudCB0byBjb21w bGV0ZSBvbgorPiAJCQkgZmlsZSBuYW1lcyBhY2NlcHQgc2V2ZXJhbCBmaWxlIG5hbWVzLCBhcwor PiAJCQkgaW4gInJ1biBmb28gYmFyID4+YmF6Ii4gIFNvIHdlIGRvbid0IHdhbnQKKz4gCQkJIHRv IGNvbXBsZXRlIHRoZSBlbnRpcmUgdGV4dCBhZnRlciB0aGUKKz4gCQkJIGNvbW1hbmQsIGp1c3Qg dGhlIGxhc3Qgd29yZC4gIFRvIHRoaXMKKz4gCQkJIGVuZCwgd2UgbmVlZCB0byBmaW5kIHRoZSBi ZWdpbm5pbmcgb2YgdGhlCis+IAkJCSBmaWxlIG5hbWUgYnkgc3RhcnRpbmcgYXQgYHdvcmQnIGFu ZCBnb2luZworPiAJCQkgYmFja3dhcmRzLiAgKi8KKz4gCQkgICAgICBmb3IgKHAgPSB3b3JkOwor PiAJCQkgICBwID4gdG1wX2NvbW1hbmQKKz4gCQkJICAgICAmJiBzdHJjaHIgKGdkYl9jb21wbGV0 ZXJfZmlsZV9uYW1lX2JyZWFrX2NoYXJhY3RlcnMsIHBbLTFdKSA9PSBOVUxMOworPiAJCQkgICBw LS0pCis+IAkJCTsKKz4KKz4gSVdCTiBpZiBhICJjb21wbGV0ZXIiIG9iamVjdCBkZXNjcmliZWQg aG93IHRvIGRvIGFsbCB0aGVzZSB0aHJlZSB0aGluZ3MuCis+IFRoZW4gdGhlIHNwZWNpYWwgY2Fz ZSBjb2RlIGZvciBmaWxlbmFtZV9jb21wbGV0ZXIgKGFuZCBsb2NhdGlvbl9jb21wbGV0ZXIpCis+ IGluIGNvbXBsZXRlci5jIGNvdWxkIGRpc2FwcGVhci4gIEJ1dCBtYXliZSB0aGF0J3MgYSBwYXRj aCBmb3IgYW5vdGhlciBkYXkuCisKK1doaWxlIEkgYWdyZWUgd2l0aCB5b3UgdGhhdCB0aGUgY29t cGxldGlvbiBtZWNoYW5pc20gY291bGQgYmUgYmV0dGVyIChJCitteXNlbGYgaGFkIGEgbG90IG9m IHRyb3VibGUgd2l0aCBpdCksIEkgdW5mb3J0dW5hdGVseSBkb24ndCBoYXZlIGVub3VnaAordGlt ZSB0byB0YWNrbGUgdGhpcyBwcm9ibGVtIG5vdy4gIFNvIHllYWgsIEkgdGhpbmsgaXQgd2lsbCBi ZSBhIHBhdGNoCitmb3IgYW5vdGhlciBkYXkuLi4KKworPiBSZWdhcmRpbmcgdGhlIGhhY2sgb2Yg dXNpbmcgYSBzdGF0aWMgbG9jYWwgdG8gcGFzcyBkYXRhIGZyb20KKz4gaGFuZGxlX2Jya2NoYXJz IHRvIGhhbmRsZV9jb21wbGV0aW9uLCBJIGtub3cgaXQncyBhIGhhY2t5IHByYWdtYXRpYworPiBj aG9pY2UuICBUbyBnZXQgdGhlIHJlZmVyZW5jZSBjb3VudGluZyByaWdodCB0aGUgY29kZSBhc3N1 bWVzIHRoYXQKKz4gaWYgdGhlIGhhbmRsZV9icmtjaGFycyBwaGFzZSBpcyBkb25lIHRoZW4gdGhl IGhhbmRsZV9jb21wbGV0aW9uCis+IHBoYXNlIHdpbGwgYmUgZG9uZSB0b28sIHJpZ2h0PworCitZ ZWFoLiAgVGhpcyBpcyB0cnVlIGZvciB0aGUgY3VycmVudCBjb2RlICh3ZWxsLCBleGNlcHQgbWF5 YmUgZm9yIHRoZQorY2FzZSB5b3UgZGVzY3JpYmUgYmVsb3cuLi4pLgorCis+IEkgd29uZGVyIGlm IGEgU0lHSU5UIGNvdWxkIHNuZWFrIGluCis+IHRoZXJlIGJldHdlZW4gdGhlIHR3byBwYXNzZXMg KGVpdGhlciB0b2RheSBvciB0b21vcnJvdykuCis+IE1heWJlIHRoZSBjb2RlIGluIGNtZHB5X2Nv bXBsZXRlcl9oZWxwZXIgZm9yIGhhbmRsZV9icmtjaGFyc19wIGNvdWxkCis+IGZpcnN0IGNoZWNr IHdoZXRoZXIgcmVzdWx0b2JqIGlzIGFscmVhZHkgbm9uLU5VTEwsIGFuZCBkZWNyZW1lbnQgaXRz Cis+IHJlZmVyZW5jZSBjb3VudCBiZWZvcmUgc2V0dGluZyBpdCB0byBOVUxMPworCitZZXMsIGRv bmUgKEkgdGhpbmspLiAgVGhhbmtzIGZvciByYWlzaW5nIHRoaXMgaXNzdWUuCisKKz4gQW5kIGNt ZHB5X2NvbXBsZXRlcl9oZWxwZXIKKz4gY291bGQgYmUgZGVmaW5lZCB0byByZXR1cm4gYSBib3Jy b3dlZCByZWZlcmVuY2UgdG8gcmVzdWx0b2JqPworPiBEdW5ubywganVzdCB0aGlua2luZyBvdXQg bG91ZC4KKworRG9uZSwgSSBndWVzcy4KKworPiBTb21ldGhpbmcgcHV6emxlcyBtZSB0aG91Z2g6 IElmIGl0J3Mgb2sgdG8gY2FjaGUgdGhlIGNvbXBsZXRpb24gcmVzdWx0IGZyb20gdGhlCis+IGhh bmRsZV9icmtjaGFycyBwYXNzIHRvIHRoZSBoYW5kbGVfY29tcGxldGlvbiBwYXNzLCB3aHkgaGF2 ZSB0d28gcGFzc2VzPworPiBJdCBmZWVscyBsaWtlIHRoZXJlIG11c3QgYmUgYSBjYXNlIHdoZXJl IHRoaXMgY2FjaGluZyBvZiB0aGUgcmVzdWx0Cis+IGluIGEgc3RhdGljIGxvY2FsIGZyb20gb25l IHBhc3MgdG8gdGhlIG5leHQgd29uJ3Qgd29yay4KKworSSdtIG5vdCBzdXJlIEkgZm9sbG93Lgor CitJdCdzIE9LIHRvIGNhY2hlIHRoZSByZXN1bHQgYmVjYXVzZSBoYW5kbGVfYnJrY2hhcnMgYW5k CitoYW5kbGVfY29tcGxldGlvbiB3b3JrIG9uIHRoZSBzYW1lIHNldCBvZiBkYXRhLiAgSW4gZmFj dCwgd2Ugd291bGRuJ3QKK25lZWQgdG8gaGF2ZSB0d28gcGFzc2VzIGhlcmU7IG15IHByZXZpb3Vz IHBhdGNoIGRpZG4ndCBoYXZlIHR3byBwYXNzZXMsCithbmQgd29ya2VkIGZpbmUuICBJIGp1c3Qg aW1wbGVtZW50ZWQgaXQgdGhpcyB3YXkgYmVjYXVzZSBUb20gKGNvcnJlY3RseSkKK3JhaXNlZCB0 aGUgcG9pbnQgdGhhdCB0aGUgY29tcGxldGlvbiBpdHNlbGYgbWlnaHQgYmUgdGltZS1jb25zdW1p bmcsIGFuZAordGh1cyB3ZSBjb3VsZCByZXVzZSBpdHMgcmVzdWx0IGluIHRoZSB0d28gcGhhc2Vz LgorCis+IEFub3RoZXIgcXVlc3Rpb246Cis+IEkgbm90aWNlZCBjb21wbGV0ZV9jb21tYW5kIGRv ZXNuJ3QgZG8gdGhpcyB0d28tcGhhc2UgZGFuY2UKKz4gb2YgaGFuZGxlX2Jya2NoYXJzIGZvbGxv d2VkIGJ5IGhhbmRsZV9jb21wbGV0aW9ucy4gIFNob3VsZCBpdD8KKz4gSXQganVzdCBnb2VzIHN0 cmFpZ2h0IHRvIGhhbmRsZV9jb21wbGV0aW9ucy4KKworSSBkb24ndCB0aGluayBpdCBzaG91bGQs IGJlY2F1c2UgZm9yIGNvbXBsZXRlX2NvbW1hbmQgKGFuZAorY29tcGxldGVfZmlsZW5hbWUgZXQg YWwpIHRoZSBoYW5kbGVfYnJrY2hhcnMgaXMgYWxyZWFkeSBkZWZpbmVkCitpbnRlcm5hbGx5IGJ5 IEdEQi4gIFNlZToKKworICAgIC4uLgorICAvKiBDaG9vc2UgdGhlIGRlZmF1bHQgc2V0IG9mIHdv cmQgYnJlYWsgY2hhcmFjdGVycyB0byBicmVhaworICAgICBjb21wbGV0aW9ucy4gIElmIHdlIGxh dGVyIGZpbmQgb3V0IHRoYXQgd2UgYXJlIGRvaW5nIGNvbXBsZXRpb25zCisgICAgIG9uIGNvbW1h bmQgc3RyaW5ncyAoYXMgb3Bwb3NlZCB0byBzdHJpbmdzIHN1cHBsaWVkIGJ5IHRoZQorICAgICBp bmRpdmlkdWFsIGNvbW1hbmQgY29tcGxldGVyIGZ1bmN0aW9ucywgd2hpY2ggY2FuIGJlIGFueSBz dHJpbmcpCisgICAgIHRoZW4gd2Ugd2lsbCBzd2l0Y2ggdG8gdGhlIHNwZWNpYWwgd29yZCBicmVh ayBzZXQgZm9yIGNvbW1hbmQKKyAgICAgc3RyaW5ncywgd2hpY2ggbGVhdmVzIG91dCB0aGUgJy0n IGNoYXJhY3RlciB1c2VkIGluIHNvbWUKKyAgICAgY29tbWFuZHMuICAqLworICBybF9jb21wbGV0 ZXJfd29yZF9icmVha19jaGFyYWN0ZXJzID0KKyAgICBjdXJyZW50X2xhbmd1YWdlLT5sYV93b3Jk X2JyZWFrX2NoYXJhY3RlcnMoKTsKKyAgICAuLi4KKworICAgIC8qIEl0IGlzIGEgbm9ybWFsIGNv bW1hbmQ7IHdoYXQgY29tZXMgYWZ0ZXIgaXQgaXMKKyAgICAgICBjb21wbGV0ZWQgYnkgdGhlIGNv bW1hbmQncyBjb21wbGV0ZXIgZnVuY3Rpb24uICAqLworICAgIGlmIChjLT5jb21wbGV0ZXIgPT0g ZmlsZW5hbWVfY29tcGxldGVyKQorICAgICAgeworICAgICAgICAvKiBNYW55IGNvbW1hbmRzIHdo aWNoIHdhbnQgdG8gY29tcGxldGUgb24KKyAgICAgICAgICAgZmlsZSBuYW1lcyBhY2NlcHQgc2V2 ZXJhbCBmaWxlIG5hbWVzLCBhcworICAgICAgICAgICBpbiAicnVuIGZvbyBiYXIgPj5iYXoiLiAg U28gd2UgZG9uJ3Qgd2FudAorICAgICAgICAgICB0byBjb21wbGV0ZSB0aGUgZW50aXJlIHRleHQg YWZ0ZXIgdGhlCisgICAgICAgICAgIGNvbW1hbmQsIGp1c3QgdGhlIGxhc3Qgd29yZC4gIFRvIHRo aXMKKyAgICAgICAgICAgZW5kLCB3ZSBuZWVkIHRvIGZpbmQgdGhlIGJlZ2lubmluZyBvZiB0aGUK KyAgICAgICAgICAgZmlsZSBuYW1lIGJ5IHN0YXJ0aW5nIGF0IGB3b3JkJyBhbmQgZ29pbmcKKyAg ICAgICAgICAgYmFja3dhcmRzLiAgKi8KKyAgICAgICAgZm9yIChwID0gd29yZDsKKyAgICAgICAg ICAgICBwID4gdG1wX2NvbW1hbmQKKyAgICAgICAgICAgICAgICYmIHN0cmNociAoZ2RiX2NvbXBs ZXRlcl9maWxlX25hbWVfYnJlYWtfY2hhcmFjdGVycywgcFstMV0pID09IE5VTEw7CisgICAgICAg ICAgICAgcC0tKQorICAgICAgICAgIDsKKyAgICAgICAgcmxfY29tcGxldGVyX3dvcmRfYnJlYWtf Y2hhcmFjdGVycyA9CisgICAgICAgICAgZ2RiX2NvbXBsZXRlcl9maWxlX25hbWVfYnJlYWtfY2hh cmFjdGVyczsKKyAgICAgIH0KKyAgICBlbHNlIGlmIChjLT5jb21wbGV0ZXIgPT0gbG9jYXRpb25f Y29tcGxldGVyKQorICAgICAgeworICAgICAgICAvKiBDb21tYW5kcyB3aGljaCBjb21wbGV0ZSBv biBsb2NhdGlvbnMgd2FudCB0bworICAgICAgICAgICBzZWUgdGhlIGVudGlyZSBhcmd1bWVudC4g ICovCisgICAgICAgIGZvciAocCA9IHdvcmQ7CisgICAgICAgICAgICAgcCA+IHRtcF9jb21tYW5k CisgICAgICAgICAgICAgICAmJiBwWy0xXSAhPSAnICcgJiYgcFstMV0gIT0gJ1x0JzsKKyAgICAg ICAgICAgICBwLS0pCisgICAgICAgICAgOworICAgICAgfQorICAgIGlmIChyZWFzb24gPT0gaGFu ZGxlX2Jya2NoYXJzCisgICAgICAgICYmIGMtPmNvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMgIT0g TlVMTCkKKyAgICAgICgqYy0+Y29tcGxldGVyX2hhbmRsZV9icmtjaGFycykgKGMsIHAsIHdvcmQp OworICAgIGlmIChyZWFzb24gIT0gaGFuZGxlX2Jya2NoYXJzICYmIGMtPmNvbXBsZXRlciAhPSBO VUxMKQorICAgICAgbGlzdCA9ICgqYy0+Y29tcGxldGVyKSAoYywgcCwgd29yZCk7CisKKworVGhl IGNvbXBsZXRlX2NvbW1hbmQgZnVuY3Rpb24gd2lsbCBvbmx5IGJlIGNhbGxlZCBieSB0aGUgbGFz dCAiaWYiCitjbGF1c2UsIHdoZW4gcmVhc29uICE9IGhhbmRsZV9icmtjaGFycy4gIE90aGVyd2lz ZSwKK2NvbXBsZXRlX2xpbmVfaW50ZXJuYWwgd2lsbCBqdXN0IGRlYWwgd2l0aCBoYW5kbGVfYnJr Y2hhcnMuICBBbmQgZm9yCitjb21wbGV0ZV9jb21tYW5kLCB0aGUgcmlnaHQgdmFsdWUgZm9yIHJs X2NvbXBsZXRlcl93b3JkX2JyZWFrX2NoYXJhY3RlcnMKK2lzIHdoYXQgaXMgYXR0cmlidXRlZCBh dCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmdW5jdGlvbi4KKworTXkgcGF0Y2ggaW1wbGVtZW50cyB0 aGlzICJ0d28tcGhhc2UiIGRhbmNlIGZvciBQeXRob24gYmVjYXVzZSBpbiB0aGlzCitzcGVjaWZp YyBjYXNlIChpLmUuLCBhIGNvbXBsZXRpb24gbWV0aG9kIGRlZmluZWQgaW4gdGhlIFB5dGhvbiBz Y3JpcHQpCit0aGVyZSBpcyBubyB3YXkgdG8ga25vdyB0aGUgdmFsdWUgb2YgaGFuZGxlX2Jya2No YXJzIGJlZm9yZSB3ZSBhY3R1YWxseQorZG8gdGhlIGNvbXBsZXRpb24gaXRzZWxmLgorCitJbiBm YWN0LCBteSBwYXRjaCBjb3VsZCBwcm9iYWJseSBiZSAic2ltcGxpZmllZCIgYW5kIGJlIG1hZGUg dG8gY2FsbAorY21kcHlfY29tcGxldGVyIGRpcmVjdGx5ICh3aXRob3V0IGFueSBjbWRweV9jb21w bGV0ZXJfaGFuZGxlX2Jya2NoYXJzKSwKK2Fzc3VtaW5nIHRoYXQgdGhpcyBmdW5jdGlvbiB0b29r IGNhcmUgb2YgZmlsbGluZyBoYW5kbGVfYnJrY2hhcnMKK2NvcnJlY3RseS4gIFdoYXQgSSBtZWFu IGlzOiB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgaGFuZGxlX2Jya2NoYXJzIGNhc2UsCit0aGUgY29t cGxldGVyIGNvbW1hbmQgY2FuIGRvIGFueXRoaW5nIGl0IHdhbnRzLgorCis+IFtNYXliZSB0aGF0 IGV4cGxhaW5zIHRoZSBkaWZmZXJlbmNlIGZyb20gdXNpbmcgVEFCLiAgRHVubm8gb2ZmIGhhbmQu XQorPiBJdCBzZWVtcyBsaWtlIGNvbXBsZXRlX2NvbW1hbmQgaXMgdHJ5aW5nIHRvIGhhbmQtY29k ZSBpdHMgb3duCis+IGhhbmRsZV9icmtjaGFycyBoYW5kbGluZzoKKz4KKz4gc3RhdGljIHZvaWQK Kz4gY29tcGxldGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCis+IHsKKz4gICBp bnQgYXJncG9pbnQ7Cis+ICAgY2hhciAqcG9pbnQsICphcmdfcHJlZml4OworPiAgIFZFQyAoY2hh cl9wdHIpICpjb21wbGV0aW9uczsKKz4KKz4gICBkb250X3JlcGVhdCAoKTsKKz4KKz4gICBpZiAo YXJnID09IE5VTEwpCis+ICAgICBhcmcgPSAiIjsKKz4gICBhcmdwb2ludCA9IHN0cmxlbiAoYXJn KTsKKz4KKz4gICAvKiBjb21wbGV0ZV9saW5lIGFzc3VtZXMgdGhhdCBpdHMgZmlyc3QgYXJndW1l bnQgaXMgc29tZXdoZXJlCis+ICAgICAgd2l0aGluLCBhbmQgZXhjZXB0IGZvciBmaWxlbmFtZXMg YXQgdGhlIGJlZ2lubmluZyBvZiwgdGhlIHdvcmQgdG8KKz4gICAgICBiZSBjb21wbGV0ZWQuICBU aGUgZm9sbG93aW5nIGNydWRlIGltaXRhdGlvbiBvZiByZWFkbGluZSdzCis+ICAgICAgd29yZC1i cmVha2luZyB0cmllcyB0byBhY2NvbW9kYXRlIHRoaXMuICAqLworPiAgIHBvaW50ID0gYXJnICsg YXJncG9pbnQ7Cis+ICAgd2hpbGUgKHBvaW50ID4gYXJnKQorPiAgICAgeworPiAgICAgICBpZiAo c3RyY2hyIChybF9jb21wbGV0ZXJfd29yZF9icmVha19jaGFyYWN0ZXJzLCBwb2ludFstMV0pICE9 IDApCis+ICAgICAgICAgYnJlYWs7Cis+ICAgICAgIHBvaW50LS07Cis+ICAgICB9Cis+Cis+ICAg YXJnX3ByZWZpeCA9IGFsbG9jYSAocG9pbnQgLSBhcmcgKyAxKTsKKz4gICBtZW1jcHkgKGFyZ19w cmVmaXgsIGFyZywgcG9pbnQgLSBhcmcpOworPiAgIGFyZ19wcmVmaXhbcG9pbnQgLSBhcmddID0g MDsKKz4KKz4gICBjb21wbGV0aW9ucyA9IGNvbXBsZXRlX2xpbmUgKHBvaW50LCBhcmcsIGFyZ3Bv aW50KTsKKz4KKz4gICAuLi4KKz4gfQorCitZZXMsIGl0IHNlZW1zIHNvLCBidXQgSSBkaWQgbm90 IGNoZWNrIGZ1cnRoZXIuCisKKz4gVEFCIGFuZCB0aGUgY29tcGxldGUgY29tbWFuZCBzaG91bGQg d29yayBpZGVudGljYWxseSBvZiBjb3Vyc2UsCis+IGJ1dCBmb3IgeW91ciB0ZXN0Y2FzZSwgbWF5 YmUgeW91IHNob3VsZCB0ZXN0IGJvdGgganVzdCB0byB2ZXJpZnkKKz4gYm90aCB3b3JrIHJlYXNv bmFibHkgd2VsbCAoZXZlbiBpZiBub3QgaWRlbnRpY2FsbHkpLgorPiBHaXZlbiB0aGF0IGNvbXBs ZXRlX2NvbW1hbmQgZG9lc24ndCBkbyB0aGUgdHdvIHBoYXNlIGRhbmNlLAorPiBkb2VzIGl0IHdv cmsgd2l0aCB5b3VyIHBhdGNoPworPiBNYXliZSBpdCBkb2VzLCBidXQgSVdCTiB0byBjb25maXJt IHRoYXQuCisKK1RoZSAnY29tcGxldGUnIGNvbW1hbmQgZG9lcyBub3Qgd29yayBhcyBpdCBzaG91 bGQgd2l0aCBteSBwYXRjaDoKKworICAoZ2RiKSBjb21wbGV0ZSBjb21wbGV0ZWZpbGVpbml0IC9o b20KKyAgY29tcGxldGVmaWxlaW5pdCAvaG9tZQorICAoZ2RiKSBjb21wbGV0ZSBjb21wbGV0ZWZp bGVtZXRob2QgL2hvbQorICBjb21wbGV0ZWZpbGVtZXRob2QgL2hvbWUKKworQnV0IHRoZW4sIGl0 IGFsc28gZG9lcyBub3Qgd29yayB3aXRob3V0IG15IHBhdGNoIGVpdGhlcjoKKworICAoZ2RiKSBj b21wbGV0ZSBmaWxlIC9ob20KKyAgZmlsZSAvaG9tZQorCitTbyBJIGFtIG5vdCBleHRlbmRpbmcg dGhlIHRlc3RjYXNlIGZvciBub3csIGJlY2F1c2UgdGhpcyBidWcgbmVlZHMgdG8gYmUKK2ZpeGVk IGZpcnN0IChhbmQgaXQgaXMgdW5yZWxhdGVkIHRvIHRoZSBwYXRjaCBJIGFtIHByb3Bvc2luZyku CisKK1dEWVQgb2YgdGhpcyB2ZXJzaW9uPworCitUaGFua3MsCisKKy0tIAorU2VyZ2lvCitHUEcg a2V5IElEOiA2NUZDNUUzNgorUGxlYXNlIHNlbmQgZW5jcnlwdGVkIGUtbWFpbCBpZiBwb3NzaWJs ZQoraHR0cDovL2Jsb2cuc2VyZ2lvZGoubmV0LworCitnZGIvCisyMDE0LTA2LTMwICBTZXJnaW8g RHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgorCisJUFIgcHl0aG9uLzE2Njk5 CisJKiBjbGkvY2xpLWRlY29kZS5jIChzZXRfY21kX2NvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMp OiBOZXcKKwlmdW5jdGlvbi4KKwkoYWRkX2NtZCk6IFNldCAiY29tcGxldGVyX2hhbmRsZV9icmtj aGFycyIgdG8gTlVMTC4KKwkqIGNsaS9jbGktZGVjb2RlLmggKHN0cnVjdCBjbWRfbGlzdF9lbGVt ZW50KQorCTxjb21wbGV0ZXJfaGFuZGxlX2Jya2NoYXJzPjogTmV3IGZpZWxkLgorCSogY29tbWFu ZC5oIChjb21wbGV0ZXJfZnR5cGVfdm9pZCk6IE5ldyB0eXBlZGVmLgorCShzZXRfY21kX2NvbXBs ZXRlcl9oYW5kbGVfYnJrY2hhcnMpOiBOZXcgcHJvdG90eXBlLgorCSogY29tcGxldGVyLmMgKHNl dF9nZGJfY29tcGxldGlvbl93b3JkX2JyZWFrX2NoYXJhY3RlcnMpOiBOZXcKKwlmdW5jdGlvbi4K KwkoY29tcGxldGVfbGluZV9pbnRlcm5hbCk6IENhbGwgImNvbXBsZXRlcl9oYW5kbGVfYnJrY2hh cnMiCisJY2FsbGJhY2sgZnJvbSBjb21tYW5kLgorCSogY29tcGxldGVyLmg6IEluY2x1ZGUgImNv bW1hbmQuaCIuCisJKHNldF9nZGJfY29tcGxldGlvbl93b3JkX2JyZWFrX2NoYXJhY3RlcnMpOiBO ZXcgcHJvdG90eXBlLgorCSogcHl0aG9uL3B5LWNtZC5jIChjbWRweV9jb21wbGV0ZXJfaGVscGVy KTogTmV3IGZ1bmN0aW9uLgorCShjbWRweV9jb21wbGV0ZXJfaGFuZGxlX2Jya2NoYXJzKTogTmV3 IGZ1bmN0aW9uLgorCShjbWRweV9jb21wbGV0ZXIpOiBBZGp1c3QgdG8gdXNlIGNtZHB5X2NvbXBs ZXRlcl9oZWxwZXIuCisJKGNtZHB5X2luaXQpOiBTZXQgY29tcGxldGVyX2hhbmRsZV9icmtjaGFy cyB0bworCWNtZHB5X2NvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMuCisKK2dkYi90ZXN0c3VpdGUv CisyMDE0LTA2LTMwICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29t PgorCisJUFIgcHl0aG9uLzE2Njk5CisJKiBnZGIucHl0aG9uL3B5LWNvbXBsZXRpb24uZXhwOiBO ZXcgZmlsZS4KKwkqIGdkYi5weXRob24vcHktY29tcGxldGlvbi5weTogTGlrZXdpc2UuCisKKwor SW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MjcvZ2RiL2NsaS9jbGktZGVjb2RlLmMKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy43LjkwLjIwMTQwNjI3Lm9yaWcvZ2RiL2NsaS9jbGktZGVjb2RlLmMJMjAx NC0wNy0wNyAyMDo1Mzo1Mi42MzUxMDY5MTQgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjI3 L2dkYi9jbGkvY2xpLWRlY29kZS5jCTIwMTQtMDctMDcgMjA6NTM6NTUuNDI5MTEwMjA3ICswMjAw CitAQCAtMTY0LDYgKzE2NCwxNSBAQCBzZXRfY21kX2NvbXBsZXRlciAoc3RydWN0IGNtZF9saXN0 X2VsZW1lCisgICBjbWQtPmNvbXBsZXRlciA9IGNvbXBsZXRlcjsgLyogT2suICAqLworIH0KKyAK KysvKiBTZWUgZGVmaW5pdGlvbiBpbiBjb21tYW5kcy5oLiAgKi8KKysKKyt2b2lkCisrc2V0X2Nt ZF9jb21wbGV0ZXJfaGFuZGxlX2Jya2NoYXJzIChzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqY21k LAorKwkJCSAgICAgICBjb21wbGV0ZXJfZnR5cGVfdm9pZCAqY29tcGxldGVyX2hhbmRsZV9icmtj aGFycykKKyt7CisrICBjbWQtPmNvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMgPSBjb21wbGV0ZXJf aGFuZGxlX2Jya2NoYXJzOworK30KKysKKyAvKiBBZGQgZWxlbWVudCBuYW1lZCBOQU1FLgorICAg IFNwYWNlIGZvciBOQU1FIGFuZCBET0MgbXVzdCBiZSBhbGxvY2F0ZWQgYnkgdGhlIGNhbGxlci4K KyAgICBDTEFTUyBpcyB0aGUgdG9wIGxldmVsIGNhdGVnb3J5IGludG8gd2hpY2ggY29tbWFuZHMg YXJlIGJyb2tlbiBkb3duCitAQCAtMjM5LDYgKzI0OCw3IEBAIGFkZF9jbWQgKGNvbnN0IGNoYXIg Km5hbWUsIGVudW0gY29tbWFuZF8KKyAgIGMtPnByZWZpeCA9IE5VTEw7CisgICBjLT5hYmJyZXZf ZmxhZyA9IDA7CisgICBzZXRfY21kX2NvbXBsZXRlciAoYywgbWFrZV9zeW1ib2xfY29tcGxldGlv bl9saXN0X2ZuKTsKKysgIGMtPmNvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMgPSBOVUxMOworICAg Yy0+ZGVzdHJveWVyID0gTlVMTDsKKyAgIGMtPnR5cGUgPSBub3Rfc2V0X2NtZDsKKyAgIGMtPnZh ciA9IE5VTEw7CitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYyNy9nZGIvY2xpL2NsaS1kZWNvZGUu aAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjcuOTAuMjAxNDA2Mjcub3JpZy9nZGIvY2xpL2NsaS1k ZWNvZGUuaAkyMDE0LTA3LTA3IDIwOjUzOjUyLjYzNjEwNjkxNSArMDIwMAorKysrIGdkYi03Ljcu OTAuMjAxNDA2MjcvZ2RiL2NsaS9jbGktZGVjb2RlLmgJMjAxNC0wNy0wNyAyMDo1Mzo1NS40Mjkx MTAyMDcgKzAyMDAKK0BAIC0xNzYsNiArMTc2LDE1IEBAIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50 CisgICAgICAgICJiYXovZm9vIiwgcmV0dXJuICJiYXovZm9vYmFyIi4gICovCisgICAgIGNvbXBs ZXRlcl9mdHlwZSAqY29tcGxldGVyOworIAorKyAgICAvKiBIYW5kbGUgdGhlIHdvcmQgYnJlYWsg Y2hhcmFjdGVycyBmb3IgdGhpcyBjb21wbGV0ZXIuICBVc3VhbGx5CisrICAgICAgIHRoaXMgZnVu Y3Rpb24gbmVlZCBub3QgYmUgZGVmaW5lZCwgYnV0IGZvciBzb21lIHR5cGVzIG9mCisrICAgICAg IGNvbXBsZXRlcnMgKGUuZy4sIFB5dGhvbiBjb21wbGV0ZXJzIGRlY2xhcmVkIGFzIG1ldGhvZHMg aW5zaWRlCisrICAgICAgIGEgY2xhc3MpIHRoZSB3b3JkIGJyZWFrIGNoYXJzIG1heSBuZWVkIHRv IGJlIHJlZGVmaW5lZAorKyAgICAgICBkZXBlbmRpbmcgb24gdGhlIGNvbXBsZXRlciB0eXBlIChl LmcuLCBmb3IgZmlsZW5hbWUKKysgICAgICAgY29tcGxldGVycykuICAqLworKworKyAgICBjb21w bGV0ZXJfZnR5cGVfdm9pZCAqY29tcGxldGVyX2hhbmRsZV9icmtjaGFyczsKKysKKyAgICAgLyog RGVzdHJ1Y3Rpb24gcm91dGluZSBmb3IgdGhpcyBjb21tYW5kLiAgSWYgbm9uLU5VTEwsIHRoaXMg aXMKKyAgICAgICAgY2FsbGVkIHdoZW4gdGhpcyBjb21tYW5kIGluc3RhbmNlIGlzIGRlc3Ryb3ll ZC4gIFRoaXMgbWF5IGJlCisgICAgICAgIHVzZWQgdG8gZmluYWxpemUgdGhlIENPTlRFWFQgZmll bGQsIGlmIG5lZWRlZC4gICovCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYyNy9nZGIvY29tbWFu ZC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy45MC4yMDE0MDYyNy5vcmlnL2dkYi9jb21tYW5k LmgJMjAxNC0wNy0wNyAyMDo1Mzo1Mi42MzYxMDY5MTUgKzAyMDAKKysrKyBnZGItNy43LjkwLjIw MTQwNjI3L2dkYi9jb21tYW5kLmgJMjAxNC0wNy0wNyAyMDo1Mzo1NS40MzAxMTAyMDggKzAyMDAK K0BAIC0xNTgsOCArMTU4LDE2IEBAIGV4dGVybiB2b2lkIHNldF9jbWRfc2Z1bmMgKHN0cnVjdCBj bWRfbGkKKyB0eXBlZGVmIFZFQyAoY2hhcl9wdHIpICpjb21wbGV0ZXJfZnR5cGUgKHN0cnVjdCBj bWRfbGlzdF9lbGVtZW50ICosCisgCQkJCQkgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwor IAorK3R5cGVkZWYgdm9pZCBjb21wbGV0ZXJfZnR5cGVfdm9pZCAoc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKiwKKysJCQkJICAgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworKworIGV4dGVy biB2b2lkIHNldF9jbWRfY29tcGxldGVyIChzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqLCBjb21w bGV0ZXJfZnR5cGUgKik7CisgCisrLyogU2V0IHRoZSBjb21wbGV0ZXJfaGFuZGxlX2Jya2NoYXJz IGNhbGxiYWNrLiAgKi8KKysKKytleHRlcm4gdm9pZCBzZXRfY21kX2NvbXBsZXRlcl9oYW5kbGVf YnJrY2hhcnMgKHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICosCisrCQkJCQkgICAgICAgY29tcGxl dGVyX2Z0eXBlX3ZvaWQgKik7CisrCisgLyogSEFDSzogY2FnbmV5LzIwMDItMDItMjM6IENvZGUs IG1vc3RseSBpbiB0cmFjZXBvaW50cy5jLCBncnVicworICAgIGFyb3VuZCBpbiBjbWQgb2JqZWN0 cyB0byB0ZXN0IHRoZSB2YWx1ZSBvZiB0aGUgY29tbWFuZHMgc2Z1bmMoKS4gICovCisgZXh0ZXJu IGludCBjbWRfY2Z1bmNfZXEgKHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjbWQsCitJbmRleDog Z2RiLTcuNy45MC4yMDE0MDYyNy9nZGIvY29tcGxldGVyLmMKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny43LjkwLjIwMTQwNjI3Lm9yaWcvZ2RiL2NvbXBsZXRlci5jCTIwMTQtMDctMDcgMjA6NTM6NTIu NjM3MTA2OTE2ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYyNy9nZGIvY29tcGxldGVyLmMJ MjAxNC0wNy0wNyAyMDo1Mzo1NS40MzAxMTAyMDggKzAyMDAKK0BAIC00NTAsNiArNDUwLDIxIEBA IGV4cHJlc3Npb25fY29tcGxldGVyIChzdHJ1Y3QgY21kX2xpc3RfZWwKKyAgIHJldHVybiBsb2Nh dGlvbl9jb21wbGV0ZXIgKGlnbm9yZSwgcCwgd29yZCk7CisgfQorIAorKy8qIFNlZSBkZWZpbml0 aW9uIGluIGNvbXBsZXRlci5oLiAgKi8KKysKKyt2b2lkCisrc2V0X2dkYl9jb21wbGV0aW9uX3dv cmRfYnJlYWtfY2hhcmFjdGVycyAoY29tcGxldGVyX2Z0eXBlICpmbikKKyt7CisrICAvKiBTbyBm YXIgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBkaWZmZXJlbnRpYXRpbmcgZmlsZW5hbWUKKysg ICAgIGNvbXBsZXRlcnMgZnJvbSBldmVyeXRoaW5nIGVsc2UuICAqLworKyAgaWYgKGZuID09IGZp bGVuYW1lX2NvbXBsZXRlcikKKysgICAgcmxfY29tcGxldGVyX3dvcmRfYnJlYWtfY2hhcmFjdGVy cworKyAgICAgID0gZ2RiX2NvbXBsZXRlcl9maWxlX25hbWVfYnJlYWtfY2hhcmFjdGVyczsKKysg IGVsc2UKKysgICAgcmxfY29tcGxldGVyX3dvcmRfYnJlYWtfY2hhcmFjdGVycworKyAgICAgID0g Z2RiX2NvbXBsZXRlcl9jb21tYW5kX3dvcmRfYnJlYWtfY2hhcmFjdGVyczsKKyt9CisrCisgLyog SGVyZSBhcmUgc29tZSB1c2VmdWwgdGVzdCBjYXNlcyBmb3IgY29tcGxldGlvbi4gIEZJWE1FOiBU aGVzZQorICAgIHNob3VsZCBiZSBwdXQgaW4gdGhlIHRlc3Qgc3VpdGUuICBUaGV5IHNob3VsZCBi ZSB0ZXN0ZWQgd2l0aCBib3RoCisgICAgTS0/IGFuZCBUQUIuCitAQCAtNjc4LDYgKzY5Myw5IEBA IGNvbXBsZXRlX2xpbmVfaW50ZXJuYWwgKGNvbnN0IGNoYXIgKnRleHQKKyAJCQkgICBwLS0pCisg CQkJOworIAkJICAgIH0KKysJCSAgaWYgKHJlYXNvbiA9PSBoYW5kbGVfYnJrY2hhcnMKKysJCSAg ICAgICYmIGMtPmNvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMgIT0gTlVMTCkKKysJCSAgICAoKmMt PmNvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMpIChjLCBwLCB3b3JkKTsKKyAJCSAgaWYgKHJlYXNv biAhPSBoYW5kbGVfYnJrY2hhcnMgJiYgYy0+Y29tcGxldGVyICE9IE5VTEwpCisgCQkgICAgbGlz dCA9ICgqYy0+Y29tcGxldGVyKSAoYywgcCwgd29yZCk7CisgCQl9CitAQCAtNzUxLDYgKzc2OSw5 IEBAIGNvbXBsZXRlX2xpbmVfaW50ZXJuYWwgKGNvbnN0IGNoYXIgKnRleHQKKyAJCSAgICAgICBw LS0pCisgCQkgICAgOworIAkJfQorKwkgICAgICBpZiAocmVhc29uID09IGhhbmRsZV9icmtjaGFy cworKwkJICAmJiBjLT5jb21wbGV0ZXJfaGFuZGxlX2Jya2NoYXJzICE9IE5VTEwpCisrCQkoKmMt PmNvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMpIChjLCBwLCB3b3JkKTsKKyAJICAgICAgaWYgKHJl YXNvbiAhPSBoYW5kbGVfYnJrY2hhcnMgJiYgYy0+Y29tcGxldGVyICE9IE5VTEwpCisgCQlsaXN0 ID0gKCpjLT5jb21wbGV0ZXIpIChjLCBwLCB3b3JkKTsKKyAJICAgIH0KK0luZGV4OiBnZGItNy43 LjkwLjIwMTQwNjI3L2dkYi9jb21wbGV0ZXIuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjcuOTAu MjAxNDA2Mjcub3JpZy9nZGIvY29tcGxldGVyLmgJMjAxNC0wNy0wNyAyMDo1Mzo1Mi42MzcxMDY5 MTYgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjI3L2dkYi9jb21wbGV0ZXIuaAkyMDE0LTA3 LTA3IDIwOjU0OjEzLjI5NzEzMTgzMSArMDIwMAorQEAgLTE4LDYgKzE4LDcgQEAKKyAjZGVmaW5l IENPTVBMRVRFUl9IIDEKKyAKKyAjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKKysjaW5jbHVkZSAiY29t bWFuZC5oIgorIAorIGV4dGVybiBWRUMgKGNoYXJfcHRyKSAqY29tcGxldGVfbGluZSAoY29uc3Qg Y2hhciAqdGV4dCwKKyAJCQkJICAgICAgY2hhciAqbGluZV9idWZmZXIsCitAQCAtNDgsNiArNDks MTMgQEAgZXh0ZXJuIGNoYXIgKmdldF9nZGJfY29tcGxldGVyX3F1b3RlX2NoYQorIAorIGV4dGVy biBjaGFyICpnZGJfY29tcGxldGlvbl93b3JkX2JyZWFrX2NoYXJhY3RlcnMgKHZvaWQpOworIAor Ky8qIFNldCB0aGUgd29yZCBicmVhayBjaGFyYWN0ZXJzIGFycmF5IHRvIHRoZSBjb3JyZXNwb25k aW5nIHNldCBvZgorKyAgIGNoYXJzLCBiYXNlZCBvbiBGTi4gIFRoaXMgZnVuY3Rpb24gaXMgdXNl ZnVsIGZvciBjYXNlcyB3aGVuIHRoZQorKyAgIGNvbXBsZXRlciBkb2Vzbid0IGtub3cgdGhlIHR5 cGUgb2YgdGhlIGNvbXBsZXRpb24gdW50aWwgc29tZQorKyAgIGNhbGN1bGF0aW9uIGlzIGRvbmUg KGUuZy4sIGZvciBQeXRob24gZnVuY3Rpb25zKS4gICovCisrCisrZXh0ZXJuIHZvaWQgc2V0X2dk Yl9jb21wbGV0aW9uX3dvcmRfYnJlYWtfY2hhcmFjdGVycyAoY29tcGxldGVyX2Z0eXBlICpmbik7 CisrCisgLyogRXhwb3J0ZWQgdG8gbGluZXNwZWMuYyAqLworIAorIGV4dGVybiBjb25zdCBjaGFy ICpza2lwX3F1b3RlZF9jaGFycyAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosCitJbmRleDog Z2RiLTcuNy45MC4yMDE0MDYyNy9nZGIvcHl0aG9uL3B5LWNtZC5jCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuNy45MC4yMDE0MDYyNy5vcmlnL2dkYi9weXRob24vcHktY21kLmMJMjAxNC0wNy0wNyAy MDo1Mzo1Mi42MzcxMDY5MTYgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjI3L2dkYi9weXRo b24vcHktY21kLmMJMjAxNC0wNy0wNyAyMDo1Mzo1NS40MzExMTAyMDkgKzAyMDAKK0BAIC0yMDgs NDUgKzIwOCwxNTUgQEAgY21kcHlfZnVuY3Rpb24gKHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50Cisg ICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisgfQorIAorKy8qIEhlbHBlciBmdW5jdGlvbiBmb3Ig dGhlIFB5dGhvbiBjb21tYW5kIGNvbXBsZXRlcnMgKGJvdGggInB1cmUiCisrICAgY29tcGxldGVy IGFuZCBicmtjaGFyIGhhbmRsZXIpLiAgVGhpcyBmdW5jdGlvbiB0YWtlcyBDT01NQU5ELCBURVhU CisrICAgYW5kIFdPUkQgYW5kIHRyaWVzIHRvIGNhbGwgdGhlIFB5dGhvbiBtZXRob2QgZm9yIGNv bXBsZXRpb24gd2l0aAorKyAgIHRoZXNlIGFyZ3VtZW50cy4gIEl0IGFsc28gdGFrZXMgSEFORExF X0JSS0NIQVJTX1AsIGFuIGFyZ3VtZW50IHRvCisrICAgaWRlbnRpZnkgd2hldGhlciBpdCBpcyBi ZWluZyBjYWxsZWQgZnJvbSB0aGUgYnJrY2hhciBoYW5kbGVyIG9yCisrICAgZnJvbSB0aGUgInB1 cmUiIGNvbXBsZXRlci4gIEluIHRoZSBmaXJzdCBjYXNlLCBpdCBlZmZlY3RpdmVseSBjYWxscwor KyAgIHRoZSBQeXRob24gbWV0aG9kIGZvciBjb21wbGV0aW9uLCBhbmQgcmVjb3JkcyB0aGUgUHlP YmplY3QgaW4gYQorKyAgIHN0YXRpYyB2YXJpYWJsZSAodXNlZCBhcyBhICJjYWNoZSIpLiAgSW4g dGhlIHNlY29uZCBjYXNlLCBpdCBqdXN0CisrICAgcmV0dXJucyB0aGF0IHZhcmlhYmxlLCB3aXRo b3V0IGFjdHVhbGx5IGNhbGxpbmcgdGhlIFB5dGhvbiBtZXRob2QKKysgICBhZ2Fpbi4gIFRoaXMg c2F2ZXMgdXMgb25lIFB5dGhvbiBtZXRob2QgY2FsbC4KKysKKysgICBJdCBpcyBpbXBvcnRhbnQg dG8gbWVudGlvbiB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgYnVpbHQgb24gdGhlCisrICAgYXNzdW1w dGlvbiB0aGF0IHRoZSBjYWxscyB0byBjbWRweV9jb21wbGV0ZXJfaGFuZGxlX2Jya2NoYXJzIGFu ZAorKyAgIGNtZHB5X2NvbXBsZXRlciB3aWxsIGJlIHN1YnNlcXVlbnQgd2l0aCBub3RoaW5nIGlu dGVydmVuaW5nLiAgVGhpcworKyAgIGlzIHRydWUgZm9yIG91ciBjb21wbGV0ZXIgbWVjaGFuaXNt LgorKworKyAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgUHlPYmplY3QgcmVwcmVzZW50aW5n IHRoZSBQeXRob24gbWV0aG9kCisrICAgY2FsbC4gICovCisrCisrc3RhdGljIFB5T2JqZWN0ICoK KytjbWRweV9jb21wbGV0ZXJfaGVscGVyIChzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqY29tbWFu ZCwKKysJCQljb25zdCBjaGFyICp0ZXh0LCBjb25zdCBjaGFyICp3b3JkLAorKwkJCWludCBoYW5k bGVfYnJrY2hhcnNfcCkKKyt7CisrICBjbWRweV9vYmplY3QgKm9iaiA9IChjbWRweV9vYmplY3Qg KikgZ2V0X2NtZF9jb250ZXh0IChjb21tYW5kKTsKKysgIFB5T2JqZWN0ICp0ZXh0b2JqLCAqd29y ZG9iajsKKysgIC8qIFRoaXMgc3RhdGljIHZhcmlhYmxlIHdpbGwgc2VydmVyIGFzIGEgImNhY2hl IiBmb3IgdXMsIGluIG9yZGVyIHRvCisrICAgICBzdG9yZSB0aGUgUHlPYmplY3QgdGhhdCByZXN1 bHRzIGZyb20gY2FsbGluZyB0aGUgUHl0aG9uCisrICAgICBmdW5jdGlvbi4gICovCisrICBzdGF0 aWMgUHlPYmplY3QgKnJlc3VsdG9iaiA9IE5VTEw7CisrCisrICBpZiAoaGFuZGxlX2Jya2NoYXJz X3ApCisrICAgIHsKKysgICAgICAvKiBJZiB3ZSB3ZXJlIGNhbGxlZCB0byBoYW5kbGUgYnJrY2hh cnMsIGl0IG1lYW5zIHRoaXMgaXMgdGhlCisrCSBmaXJzdCBmdW5jdGlvbiBjYWxsIG9mIHR3byB0 aGF0IHdpbGwgaGFwcGVuIGluIGEgcm93LgorKwkgVGhlcmVmb3JlLCB3ZSBuZWVkIHRvIGNhbGwg dGhlIGNvbXBsZXRlciBvdXJzZWx2ZXMsIGFuZCBjYWNoZQorKwkgdGhlIHJldHVybiB2YWx1ZSBp biB0aGUgc3RhdGljIHZhcmlhYmxlIFJFU1VMVE9CSi4gIFRoZW4sIGluCisrCSB0aGUgc2Vjb25k IGNhbGwsIHdlIGNhbiBqdXN0IHVzZSB0aGUgdmFsdWUgb2YgUkVTVUxUT0JKIHRvIGRvCisrCSBv dXIgam9iLiAgKi8KKysgICAgICBpZiAocmVzdWx0b2JqICE9IE5VTEwpCisrCVB5X0RFQ1JFRiAo cmVzdWx0b2JqKTsKKysKKysgICAgICByZXN1bHRvYmogPSBOVUxMOworKyAgICAgIGlmICghb2Jq KQorKwllcnJvciAoXygiSW52YWxpZCBpbnZvY2F0aW9uIG9mIFB5dGhvbiBjb21tYW5kIG9iamVj dC4iKSk7CisrICAgICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyICgoUHlPYmplY3QgKikgb2JqLCBj b21wbGV0ZV9jc3QpKQorKwl7CisrCSAgLyogSWYgdGhlcmUgaXMgbm8gY29tcGxldGUgbWV0aG9k LCBkb24ndCBlcnJvci4gICovCisrCSAgcmV0dXJuIE5VTEw7CisrCX0KKysKKysgICAgICB0ZXh0 b2JqID0gUHlVbmljb2RlX0RlY29kZSAodGV4dCwgc3RybGVuICh0ZXh0KSwgaG9zdF9jaGFyc2V0 ICgpLCBOVUxMKTsKKysgICAgICBpZiAoIXRleHRvYmopCisrCWVycm9yIChfKCJDb3VsZCBub3Qg Y29udmVydCBhcmd1bWVudCB0byBQeXRob24gc3RyaW5nLiIpKTsKKysgICAgICB3b3Jkb2JqID0g UHlVbmljb2RlX0RlY29kZSAod29yZCwgc2l6ZW9mICh3b3JkKSwgaG9zdF9jaGFyc2V0ICgpLCBO VUxMKTsKKysgICAgICBpZiAoIXdvcmRvYmopCisrCXsKKysJICBQeV9ERUNSRUYgKHRleHRvYmop OworKwkgIGVycm9yIChfKCJDb3VsZCBub3QgY29udmVydCBhcmd1bWVudCB0byBQeXRob24gc3Ry aW5nLiIpKTsKKysJfQorKworKyAgICAgIHJlc3VsdG9iaiA9IFB5T2JqZWN0X0NhbGxNZXRob2RP YmpBcmdzICgoUHlPYmplY3QgKikgb2JqLCBjb21wbGV0ZV9jc3QsCisrCQkJCQkgICAgICB0ZXh0 b2JqLCB3b3Jkb2JqLCBOVUxMKTsKKysgICAgICBQeV9ERUNSRUYgKHRleHRvYmopOworKyAgICAg IFB5X0RFQ1JFRiAod29yZG9iaik7CisrICAgICAgaWYgKCFyZXN1bHRvYmopCisrCXsKKysJICAv KiBKdXN0IHN3YWxsb3cgZXJyb3JzIGhlcmUuICAqLworKwkgIFB5RXJyX0NsZWFyICgpOworKwl9 CisrCisrICAgICAgUHlfWElOQ1JFRiAocmVzdWx0b2JqKTsKKysgICAgfQorKworKyAgcmV0dXJu IHJlc3VsdG9iajsKKyt9CisrCisrLyogUHl0aG9uIGZ1bmN0aW9uIGNhbGxlZCB0byBkZXRlcm1p bmUgdGhlIGJyZWFrIGNoYXJhY3RlcnMgb2YgYQorKyAgIGNlcnRhaW4gY29tcGxldGVyLiAgV2Ug YXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBrbm93aW5nIGlmIHRoZQorKyAgIGNvbXBsZXRlciByZWdp c3RlcmVkIGJ5IHRoZSB1c2VyIHdpbGwgcmV0dXJuIG9uZSBvZiB0aGUgaW50ZWdlcgorKyAgIGNv ZGVzIChzZWUgQ09NUExFVEVSXyogc3ltYm9scykuICAqLworKworK3N0YXRpYyB2b2lkCisrY21k cHlfY29tcGxldGVyX2hhbmRsZV9icmtjaGFycyAoc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNv bW1hbmQsCisrCQkJCSBjb25zdCBjaGFyICp0ZXh0LCBjb25zdCBjaGFyICp3b3JkKQorK3sKKysg IFB5T2JqZWN0ICpyZXN1bHRvYmogPSBOVUxMOworKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7 CisrCisrICBjbGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCks IGN1cnJlbnRfbGFuZ3VhZ2UpOworKworKyAgLyogQ2FsbGluZyBvdXIgaGVscGVyIHRvIG9idGFp biB0aGUgUHlPYmplY3Qgb2YgdGhlIFB5dGhvbgorKyAgICAgZnVuY3Rpb24uICAqLworKyAgcmVz dWx0b2JqID0gY21kcHlfY29tcGxldGVyX2hlbHBlciAoY29tbWFuZCwgdGV4dCwgd29yZCwgMSk7 CisrCisrICAvKiBDaGVjayBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuICAqLworKyAgaWYgKHJlc3Vs dG9iaiA9PSBOVUxMKQorKyAgICBnb3RvIGRvbmU7CisrCisrICBpZiAoUHlJbnRfQ2hlY2sgKHJl c3VsdG9iaikpCisrICAgIHsKKysgICAgICAvKiBVc2VyIGNvZGUgbWF5IGFsc28gcmV0dXJuIG9u ZSBvZiB0aGUgY29tcGxldGlvbiBjb25zdGFudHMsCisrCSB0aHVzIHJlcXVlc3RpbmcgdGhhdCBz b3J0IG9mIGNvbXBsZXRpb24uICBXZSBhcmUgb25seQorKwkgaW50ZXJlc3RlZCBpbiB0aGlzIGtp bmQgb2YgcmV0dXJuLiAgKi8KKysgICAgICBsb25nIHZhbHVlOworKworKyAgICAgIGlmICghZ2Ri X3B5X2ludF9hc19sb25nIChyZXN1bHRvYmosICZ2YWx1ZSkpCisrCXsKKysJICAvKiBJZ25vcmUu ICAqLworKwkgIFB5RXJyX0NsZWFyICgpOworKwl9CisrICAgICAgZWxzZSBpZiAodmFsdWUgPj0g MCAmJiB2YWx1ZSA8IChsb25nKSBOX0NPTVBMRVRFUlMpCisrCXsKKysJICAvKiBUaGlzIGlzIHRo ZSBjb3JlIG9mIHRoaXMgZnVuY3Rpb24uICBEZXBlbmRpbmcgb24gd2hpY2gKKysJICAgICBjb21w bGV0ZXIgdHlwZSB0aGUgUHl0aG9uIGZ1bmN0aW9uIHJldHVybnMsIHdlIGhhdmUgdG8KKysJICAg ICBhZGp1c3QgdGhlIGJyZWFrIGNoYXJhY3RlcnMgYWNjb3JkaW5nbHkuICAqLworKwkgIHNldF9n ZGJfY29tcGxldGlvbl93b3JkX2JyZWFrX2NoYXJhY3RlcnMKKysJICAgIChjb21wbGV0ZXJzW3Zh bHVlXS5jb21wbGV0ZXIpOworKwl9CisrICAgIH0KKysKKysgZG9uZToKKysKKysgIC8qIFdlIGRv IG5vdCBjYWxsIFB5X1hERUNSRUYgaGVyZSBiZWNhdXNlIFJFU1VMVE9CSiB3aWxsIGJlIHVzZWQg aW4KKysgICAgIHRoZSBzdWJzZXF1ZW50IGNhbGwgdG8gY21kcHlfY29tcGxldGVyIGZ1bmN0aW9u LiAgKi8KKysgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyt9CisrCisgLyogQ2FsbGVkIGJ5IGdk YiBmb3IgY29tbWFuZCBjb21wbGV0aW9uLiAgKi8KKyAKKyBzdGF0aWMgVkVDIChjaGFyX3B0cikg KgorIGNtZHB5X2NvbXBsZXRlciAoc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNvbW1hbmQsCisg CQkgY29uc3QgY2hhciAqdGV4dCwgY29uc3QgY2hhciAqd29yZCkKKyB7CistICBjbWRweV9vYmpl Y3QgKm9iaiA9IChjbWRweV9vYmplY3QgKikgZ2V0X2NtZF9jb250ZXh0IChjb21tYW5kKTsKKy0g IFB5T2JqZWN0ICp0ZXh0b2JqLCAqd29yZG9iaiwgKnJlc3VsdG9iaiA9IE5VTEw7CisrICBQeU9i amVjdCAqcmVzdWx0b2JqID0gTlVMTDsKKyAgIFZFQyAoY2hhcl9wdHIpICpyZXN1bHQgPSBOVUxM OworICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7CisgCisgICBjbGVhbnVwID0gZW5zdXJlX3B5 dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOworIAorLSAg aWYgKCEgb2JqKQorLSAgICBlcnJvciAoXygiSW52YWxpZCBpbnZvY2F0aW9uIG9mIFB5dGhvbiBj b21tYW5kIG9iamVjdC4iKSk7CistICBpZiAoISBQeU9iamVjdF9IYXNBdHRyICgoUHlPYmplY3Qg Kikgb2JqLCBjb21wbGV0ZV9jc3QpKQorLSAgICB7CistICAgICAgLyogSWYgdGhlcmUgaXMgbm8g Y29tcGxldGUgbWV0aG9kLCBkb24ndCBlcnJvciAtLSBpbnN0ZWFkLCBqdXN0CistCSBzYXkgdGhh dCB0aGVyZSBhcmUgbm8gY29tcGxldGlvbnMuICAqLworLSAgICAgIGdvdG8gZG9uZTsKKy0gICAg fQorLQorLSAgdGV4dG9iaiA9IFB5VW5pY29kZV9EZWNvZGUgKHRleHQsIHN0cmxlbiAodGV4dCks IGhvc3RfY2hhcnNldCAoKSwgTlVMTCk7CistICBpZiAoISB0ZXh0b2JqKQorLSAgICBlcnJvciAo XygiQ291bGQgbm90IGNvbnZlcnQgYXJndW1lbnQgdG8gUHl0aG9uIHN0cmluZy4iKSk7CistICB3 b3Jkb2JqID0gUHlVbmljb2RlX0RlY29kZSAod29yZCwgc3RybGVuICh3b3JkKSwgaG9zdF9jaGFy c2V0ICgpLCBOVUxMKTsKKy0gIGlmICghIHdvcmRvYmopCistICAgIGVycm9yIChfKCJDb3VsZCBu b3QgY29udmVydCBhcmd1bWVudCB0byBQeXRob24gc3RyaW5nLiIpKTsKKy0KKy0gIHJlc3VsdG9i aiA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzICgoUHlPYmplY3QgKikgb2JqLCBjb21wbGV0 ZV9jc3QsCistCQkJCQkgIHRleHRvYmosIHdvcmRvYmosIE5VTEwpOworLSAgUHlfREVDUkVGICh0 ZXh0b2JqKTsKKy0gIFB5X0RFQ1JFRiAod29yZG9iaik7CistICBpZiAoISByZXN1bHRvYmopCist ICAgIHsKKy0gICAgICAvKiBKdXN0IHN3YWxsb3cgZXJyb3JzIGhlcmUuICAqLworLSAgICAgIFB5 RXJyX0NsZWFyICgpOworLSAgICAgIGdvdG8gZG9uZTsKKy0gICAgfQorKyAgLyogQ2FsbGluZyBv dXIgaGVscGVyIHRvIG9idGFpbiB0aGUgUHlPYmplY3Qgb2YgdGhlIFB5dGhvbgorKyAgICAgZnVu Y3Rpb24uICAqLworKyAgcmVzdWx0b2JqID0gY21kcHlfY29tcGxldGVyX2hlbHBlciAoY29tbWFu ZCwgdGV4dCwgd29yZCwgMCk7CisrCisrICAvKiBJZiB0aGUgcmVzdWx0IG9iamVjdCBvZiBjYWxs aW5nIHRoZSBQeXRob24gZnVuY3Rpb24gaXMgTlVMTCwgaXQKKysgICAgIG1lYW5zIHRoYXQgdGhl cmUgd2FzIGFuIGVycm9yLiAgSW4gdGhpcyBjYXNlLCBqdXN0IGdpdmUgdXAgYW5kCisrICAgICBy ZXR1cm4gTlVMTC4gICovCisrICBpZiAocmVzdWx0b2JqID09IE5VTEwpCisrICAgIGdvdG8gZG9u ZTsKKyAKKyAgIHJlc3VsdCA9IE5VTEw7CisgICBpZiAoUHlJbnRfQ2hlY2sgKHJlc3VsdG9iaikp CitAQCAtMzAyLDcgKzQxMiw2IEBAIGNtZHB5X2NvbXBsZXRlciAoc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQKKyAKKyAgZG9uZToKKyAKKy0gIFB5X1hERUNSRUYgKHJlc3VsdG9iaik7CisgICBkb19j bGVhbnVwcyAoY2xlYW51cCk7CisgCisgICByZXR1cm4gcmVzdWx0OworQEAgLTU0OCw2ICs2NTcs OSBAQCBjbWRweV9pbml0IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyCisgICAgICAgc2V0 X2NtZF9jb250ZXh0IChjbWQsIHNlbGYpOworICAgICAgIHNldF9jbWRfY29tcGxldGVyIChjbWQs ICgoY29tcGxldGV0eXBlID09IC0xKSA/IGNtZHB5X2NvbXBsZXRlcgorIAkJCSAgICAgICA6IGNv bXBsZXRlcnNbY29tcGxldGV0eXBlXS5jb21wbGV0ZXIpKTsKKysgICAgICBpZiAoY29tcGxldGV0 eXBlID09IC0xKQorKwlzZXRfY21kX2NvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMgKGNtZCwKKysJ CQkJCSAgIGNtZHB5X2NvbXBsZXRlcl9oYW5kbGVfYnJrY2hhcnMpOworICAgICB9CisgICBpZiAo ZXhjZXB0LnJlYXNvbiA8IDApCisgICAgIHsKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjI3L2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jb21wbGV0aW9uLmV4cAorPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03 LjcuOTAuMjAxNDA2MjcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNvbXBsZXRpb24uZXhw CTIwMTQtMDctMDcgMjA6NTM6NTUuNDMxMTEwMjA5ICswMjAwCitAQCAtMCwwICsxLDcwIEBACisr IyBDb3B5cmlnaHQgKEMpIDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisr IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIwor KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK3NldCB0ZXN0ZmlsZSAicHktY29tcGxl dGlvbiIKKysKKytsb2FkX2xpYiBnZGItcHl0aG9uLmV4cAorKworK2dkYl9leGl0CisrZ2RiX3N0 YXJ0CisrCisrIyBTa2lwIGFsbCB0ZXN0cyBpZiBQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBlbmFi bGVkLgorK2lmIHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9IHsgY29udGludWUgfQorKworK2dkYl90 ZXN0X25vX291dHB1dCAic291cmNlICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0ucHki CisrCisrIyBDcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5Cisrc2V0IHRlc3RkaXIgIiR7b2Jq ZGlyfS8ke3N1YmRpcn0vcHktY29tcGxldGlvbi10ZXN0ZGlyLyIKKytzZXQgdGVzdGRpcl9yZWdl eCBbc3RyaW5nX3RvX3JlZ2V4cCAkdGVzdGRpcl0KKytzZXQgdGVzdGRpcl9jb21wbGV0ZSAiJHtv YmpkaXJ9LyR7c3ViZGlyfS9weS1jb21wbGV0aW9uLXRlc3QiCisrZmlsZSBta2RpciAkdGVzdGRp cgorKworKyMgVGhpcyBvbmUgc2hvdWxkIGFsd2F5cyBwYXNzLgorK3NlbmRfZ2RiICJjb21wbGV0 ZWZpbGVpbml0ICR7dGVzdGRpcl9jb21wbGV0ZX1cdCIKKytnZGJfdGVzdF9tdWx0aXBsZSAiIiAi Y29tcGxldGVmaWxlaW5pdCBjb21wbGV0aW9uIiB7CisrICAgIC1yZSAiXmNvbXBsZXRlZmlsZWlu aXQgJHt0ZXN0ZGlyX3JlZ2V4fSQiIHsKKysgICAgICAgIHBhc3MgImNvbXBsZXRlZmlsZWluaXQg Y29tcGxldGlvbiIKKysgICAgfQorK30KKysKKysjIEp1c3QgZGlzY2FyZGluZyB3aGF0ZXZlciB3 ZSB0eXBlZC4KKytzZW5kX2dkYiAiXG4iCisrZ2RiX3Rlc3QgInByaW50IiAiLioiCisrCisrIyBU aGlzIGlzIHRoZSBwcm9ibGVtYXRpYyBvbmUuCisrc2VuZF9nZGIgImNvbXBsZXRlZmlsZW1ldGhv ZCAke3Rlc3RkaXJfY29tcGxldGV9XHQiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgImNvbXBsZXRl ZmlsZW1ldGhvZCBjb21wbGV0aW9uIiB7CisrICAgIC1yZSAiXmNvbXBsZXRlZmlsZW1ldGhvZCAk e3Rlc3RkaXJfcmVnZXh9ICQiIHsKKysgICAgICAgIGZhaWwgImNvbXBsZXRlZmlsZW1ldGhvZCBj b21wbGV0aW9uIChjb21wbGV0ZWQgZmlsZW5hbWUgYXMgd3JvbmcgY29tbWFuZCBhcmcpIgorKyAg ICB9CisrICAgIC1yZSAiXmNvbXBsZXRlZmlsZW1ldGhvZCAke3Rlc3RkaXJfcmVnZXh9JCIgewor KyAgICAgICAgcGFzcyAiY29tcGxldGVmaWxlbWV0aG9kIGNvbXBsZXRpb24iCisrICAgIH0KKyt9 CisrCisrIyBEaXNjYXJkaW5nIGFnYWluCisrc2VuZF9nZGIgIlxuIgorK2dkYl90ZXN0ICJwcmlu dCIgIi4qIgorKworKyMgQW5vdGhlciBwcm9ibGVtYXRpYworK3NlbmRfZ2RiICJjb21wbGV0ZWZp bGVjb21tYW5kY29uZCAke29iamRpcn0vJHtzdWJkaXJ9L3B5LWNvbXBsZXRpb24tdFx0IgorK2dk Yl90ZXN0X211bHRpcGxlICIiICJjb21wbGV0ZWZpbGVjb21tYW5kY29uZCBjb21wbGV0aW9uIiB7 CisrICAgIC1yZSAiXmNvbXBsZXRlZmlsZWNvbW1hbmRjb25kICR7dGVzdGRpcn0kIiB7CisrCWZh aWwgImNvbXBsZXRlZmlsZWNvbW1hbmRjb25kIGNvbXBsZXRpb24gKGNvbXBsZXRlZCBmaWxlbmFt ZSBpbnN0ZWFkIG9mIGNvbW1hbmQpIgorKyAgICB9CisrICAgIC1yZSAiXmNvbXBsZXRlZmlsZWNv bW1hbmRjb25kICR7b2JqZGlyfS8ke3N1YmRpcn0vcHktY29tcGxldGlvbi10JCIgeworKwlwYXNz ICJjb21wbGV0ZWZpbGVjb21tYW5kY29uZCBjb21wbGV0aW9uIgorKyAgICB9CisrfQorSW5kZXg6 IGdkYi03LjcuOTAuMjAxNDA2MjcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNvbXBsZXRp b24ucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjI3L2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1jb21wbGV0aW9uLnB5CTIwMTQtMDctMDcgMjA6NTM6NTUuNDMxMTEwMjA5ICswMjAw CitAQCAtMCwwICsxLDU4IEBACisrIyBDb3B5cmlnaHQgKEMpIDIwMTQgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyMg VGhpcyB0ZXN0Y2FzZSB0ZXN0cyBQUiBweXRob24vMTY2OTkKKysKKytpbXBvcnQgZ2RiCisrCisr Y2xhc3MgQ29tcGxldGVGaWxlSW5pdChnZGIuQ29tbWFuZCk6CisrCWRlZiBfX2luaXRfXyhzZWxm KToKKysJCWdkYi5Db21tYW5kLl9faW5pdF9fKHNlbGYsJ2NvbXBsZXRlZmlsZWluaXQnLGdkYi5D T01NQU5EX1VTRVIsZ2RiLkNPTVBMRVRFX0ZJTEVOQU1FKQorKworKwlkZWYgaW52b2tlKHNlbGYs YXJndW1lbnQsZnJvbV90dHkpOgorKwkJcmFpc2UgZ2RiLkdkYkVycm9yKCdub3QgaW1wbGVtZW50 ZWQnKQorKworK2NsYXNzIENvbXBsZXRlRmlsZU1ldGhvZChnZGIuQ29tbWFuZCk6CisrCWRlZiBf X2luaXRfXyhzZWxmKToKKysJCWdkYi5Db21tYW5kLl9faW5pdF9fKHNlbGYsJ2NvbXBsZXRlZmls ZW1ldGhvZCcsZ2RiLkNPTU1BTkRfVVNFUikKKysKKysJZGVmIGludm9rZShzZWxmLGFyZ3VtZW50 LGZyb21fdHR5KToKKysJCXJhaXNlIGdkYi5HZGJFcnJvcignbm90IGltcGxlbWVudGVkJykKKysK KysJZGVmIGNvbXBsZXRlKHNlbGYsdGV4dCx3b3JkKToKKysJCXJldHVybiBnZGIuQ09NUExFVEVf RklMRU5BTUUKKysKKytjbGFzcyBDb21wbGV0ZUZpbGVDb21tYW5kQ29uZChnZGIuQ29tbWFuZCk6 CisrCWRlZiBfX2luaXRfXyhzZWxmKToKKysJCWdkYi5Db21tYW5kLl9faW5pdF9fKHNlbGYsJ2Nv bXBsZXRlZmlsZWNvbW1hbmRjb25kJyxnZGIuQ09NTUFORF9VU0VSKQorKworKwlkZWYgaW52b2tl KHNlbGYsYXJndW1lbnQsZnJvbV90dHkpOgorKwkJcmFpc2UgZ2RiLkdkYkVycm9yKCdub3QgaW1w bGVtZW50ZWQnKQorKworKwlkZWYgY29tcGxldGUoc2VsZix0ZXh0LHdvcmQpOgorKwkJIyBUaGlz IGlzIGEgdGVzdCBtYWRlIHRvIGtub3cgaWYgdGhlIGNvbW1hbmQKKysJCSMgY29tcGxldGlvbiBz dGlsbCB3b3JrcyBmaW5lLiAgV2hlbiB0aGUgdXNlciBhc2tzIHRvCisrCQkjIGNvbXBsZXRlIHNv bWV0aGluZyBsaWtlICJjb21wbGV0ZWZpbGVjb21tYW5kY29uZAorKwkJIyAvcGF0aC90by9weS1j b21wbGV0aW9uLXQiLCBpdCBzaG91bGQgbm90IGNvbXBsZXRlIHRvCisrCQkjICIvcGF0aC90by9w eS1jb21wbGV0aW9uLXRlc3QvIiwgYnV0IGluc3RlYWQganVzdAorKwkJIyB3YWl0IGZvciBpbnB1 dC4KKysJCWlmICJweS1jb21wbGV0aW9uLXQiIGluIHRleHQ6CisrCQkJcmV0dXJuIGdkYi5DT01Q TEVURV9DT01NQU5ECisrCQllbHNlOgorKwkJCXJldHVybiBnZGIuQ09NUExFVEVfRklMRU5BTUUK KysKKytDb21wbGV0ZUZpbGVJbml0KCkKKytDb21wbGV0ZUZpbGVNZXRob2QoKQorK0NvbXBsZXRl RmlsZUNvbW1hbmRDb25kKCkKCmRpZmYgLS1naXQgYS9nZGItcHl0aG9uLWNvbXBsZXRlci0yb2Yy LnBhdGNoIGIvZ2RiLXB5dGhvbi1jb21wbGV0ZXItMm9mMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5lYzNjNjJmCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXB5dGhv bi1jb21wbGV0ZXItMm9mMi5wYXRjaApAQCAtMCwwICsxLDcyIEBACitodHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxNC0wNy9tc2cwMDE1NC5odG1sCitTdWJqZWN0OiBSZTog W1BBVENIXSBQUiBweXRob24vMTY2OTk6IEdEQiBQeXRob24gY29tbWFuZCBjb21wbGV0aW9uIHdp dGggb3ZlcnJpZGVuIGNvbXBsZXRlIHZzLiBjb21wbGV0ZXIgY2xhc3MKKworCistLXBXeWlFZ0pZ bTVmOXY1NS8KK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQorQ29u dGVudC1EaXNwb3NpdGlvbjogaW5saW5lCisKK09uIFR1ZSwgMDggSnVsIDIwMTQgMTc6MzI6MjEg KzAyMDAsIEphbiBLcmF0b2NodmlsIHdyb3RlOgorPiAtICAgIC1yZSAiXmNvbXBsZXRlZmlsZWNv bW1hbmRjb25kICR7b2JqZGlyfS8ke3N1YmRpcn0vcHktY29tcGxldGlvbi10JCIgeworPiArICAg IC1yZSAiXmNvbXBsZXRlZmlsZWNvbW1hbmRjb25kICR7Y29tcGxldGlvbl9yZWdleH0kIiB7CisK K1RoZXJlIHdhcyBhIHJhY3kgYnVnIGhlcmUgLSBhbmQgZXZlbiBpbiB0aGUgZm9ybWVyIHRlc3Qg LSBoZXJlIHNob3VsZCBiZToKKyAgKyAgICAtcmUgIl5jb21wbGV0ZWZpbGVjb21tYW5kY29uZCAk e2NvbXBsZXRpb25fcmVnZXh9XDAwNyQiIHsKKworVXBkYXRlZCBmaXggYXR0YWNoZWQuCisKKwor SmFuCisKKy0tcFd5aUVnSlltNWY5djU1LworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy c2V0PXVzLWFzY2lpCitDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7IGZpbGVuYW1lPSJweS1j b21wbGV0aW9uLXJhY2UyLnBhdGNoIgorCistLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktY29tcGxldGlvbi5leHAtb3JpZwkyMDE0LTA3LTA3IDIxOjMyOjE3Ljg5MTA0NTA1OCArMDIw MAorKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNvbXBsZXRpb24uZXhwCTIwMTQt MDctMDggMjA6MTQ6NTcuMTg5NzkxOTI4ICswMjAwCitAQCAtMjYsOSArMjYsOSBAQCBpZiB7IFtz a2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0KKyBnZGJfdGVzdF9ub19vdXRwdXQgInNv dXJjZSAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LnB5IgorIAorICMgQ3JlYXRlIGEg dGVtcG9yYXJ5IGRpcmVjdG9yeQorLXNldCB0ZXN0ZGlyICIke29iamRpcn0vJHtzdWJkaXJ9L3B5 LWNvbXBsZXRpb24tdGVzdGRpci8iCisrc2V0IHRlc3RkaXIgIltzdGFuZGFyZF9vdXRwdXRfZmls ZSAicHktY29tcGxldGlvbi10ZXN0ZGlyIl0vIgorIHNldCB0ZXN0ZGlyX3JlZ2V4IFtzdHJpbmdf dG9fcmVnZXhwICR0ZXN0ZGlyXQorLXNldCB0ZXN0ZGlyX2NvbXBsZXRlICIke29iamRpcn0vJHtz dWJkaXJ9L3B5LWNvbXBsZXRpb24tdGVzdCIKKytzZXQgdGVzdGRpcl9jb21wbGV0ZSBbc3RhbmRh cmRfb3V0cHV0X2ZpbGUgInB5LWNvbXBsZXRpb24tdGVzdCJdCisgZmlsZSBta2RpciAkdGVzdGRp cgorIAorICMgVGhpcyBvbmUgc2hvdWxkIGFsd2F5cyBwYXNzLgorQEAgLTQwLDggKzQwLDcgQEAg Z2RiX3Rlc3RfbXVsdGlwbGUgIiIgImNvbXBsZXRlZmlsZWluaXQgYworIH0KKyAKKyAjIEp1c3Qg ZGlzY2FyZGluZyB3aGF0ZXZlciB3ZSB0eXBlZC4KKy1zZW5kX2dkYiAiXG4iCistZ2RiX3Rlc3Qg InByaW50IiAiLioiCisrZ2RiX3Rlc3QgIiAiICIuKiIgImRpc2NhcmQgIzEiCisgCisgIyBUaGlz IGlzIHRoZSBwcm9ibGVtYXRpYyBvbmUuCisgc2VuZF9nZGIgImNvbXBsZXRlZmlsZW1ldGhvZCAk e3Rlc3RkaXJfY29tcGxldGV9XHQiCitAQCAtNTUsMTYgKzU0LDE2IEBAIGdkYl90ZXN0X211bHRp cGxlICIiICJjb21wbGV0ZWZpbGVtZXRob2QKKyB9CisgCisgIyBEaXNjYXJkaW5nIGFnYWluCist c2VuZF9nZGIgIlxuIgorLWdkYl90ZXN0ICJwcmludCIgIi4qIgorK2dkYl90ZXN0ICIgIiAiLioi ICJkaXNjYXJkICMyIgorIAorICMgQW5vdGhlciBwcm9ibGVtYXRpYworLXNlbmRfZ2RiICJjb21w bGV0ZWZpbGVjb21tYW5kY29uZCAke29iamRpcn0vJHtzdWJkaXJ9L3B5LWNvbXBsZXRpb24tdFx0 IgorK3NldCBjb21wbGV0aW9uX3JlZ2V4ICJbc3RyaW5nX3RvX3JlZ2V4cCBbc3RhbmRhcmRfb3V0 cHV0X2ZpbGUgInB5LWNvbXBsZXRpb24tdCJdXSIKKytzZW5kX2dkYiAiY29tcGxldGVmaWxlY29t bWFuZGNvbmQgW3N0YW5kYXJkX291dHB1dF9maWxlICJweS1jb21wbGV0aW9uLXRcdCJdIgorIGdk Yl90ZXN0X211bHRpcGxlICIiICJjb21wbGV0ZWZpbGVjb21tYW5kY29uZCBjb21wbGV0aW9uIiB7 CisgICAgIC1yZSAiXmNvbXBsZXRlZmlsZWNvbW1hbmRjb25kICR7dGVzdGRpcn0kIiB7CisgCWZh aWwgImNvbXBsZXRlZmlsZWNvbW1hbmRjb25kIGNvbXBsZXRpb24gKGNvbXBsZXRlZCBmaWxlbmFt ZSBpbnN0ZWFkIG9mIGNvbW1hbmQpIgorICAgICB9CistICAgIC1yZSAiXmNvbXBsZXRlZmlsZWNv bW1hbmRjb25kICR7b2JqZGlyfS8ke3N1YmRpcn0vcHktY29tcGxldGlvbi10JCIgeworKyAgICAt cmUgIl5jb21wbGV0ZWZpbGVjb21tYW5kY29uZCAke2NvbXBsZXRpb25fcmVnZXh9XDAwNyQiIHsK KyAJcGFzcyAiY29tcGxldGVmaWxlY29tbWFuZGNvbmQgY29tcGxldGlvbiIKKyAgICAgfQorIH0K KworLS1wV3lpRWdKWW01Zjl2NTUvLS0KKwoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDFv ZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0wMW9mMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDBiMzc4YTQuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0wMW9mMjMu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzAgKzAsMCBAQAotU3ViamVjdDogW1BBVENIIDAx LzIzXSBkd2FyZjogYWRkIGR3YXJmMyBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzIG9wY29kZQot TWVzc2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC0yLWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxs QGludGVsLmNvbT4KLQotVGhlIG9wY29kZSBwdXNoZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIG9iamVj dCBiZWluZyBldmFsdWF0ZWQuIFRoZSBzZW1hbnRpYyBpcwotZXF1aXZhbGVudCB0byB0aGUgaW1w bGljaXQgcHVzaCBvZiB0aGUgYmFzZSBhZGRyZXNzIG9mIGEgZGF0YSBtZW1iZXIgbG9jYXRpb24u Ci0KLTIwMTQtMDUtMjggIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29t PgotICAgICAgICAgICAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLQkq IGR3YXJmMmV4cHIuYyAoZXhlY3V0ZV9zdGFja19vcCkgPERXX09QX3B1c2hfb2JqZWN0X2FkZHJl c3M+OiBOZXcgY2FzZS4KLQkqIGR3YXJmMmV4cHIuaCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4 dF9mdW5jcykKLQk8RFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcz46IE5ldyBmdW5jdGlvbiBwb2lu dGVyIGdldF9vYmplY3RfYWRkci4KLQkqIGR3YXJmMmxvYy5jIChzdHJ1Y3QgZHdhcmZfZXhwcl9i YXRvbik6IEFkZCBvYmpfYWRkcmVzcy4KLQkoZHdhcmZfZXhwcl9nZXRfb2JqX2FkZHIpOiBOZXcg ZnVuY3Rpb24uCi0JKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MpOiBBZGQKLQlkd2Fy Zl9leHByX2dldF9vYmpfYWRkciB0byBkd2FyZl9leHByX2N0eF9mdW5jcy4KLQkoZHdhcmYyX2V2 YWx1YXRlX2xvY19kZXNjX2Z1bGwpOiBJbml0aWFsaXplIGJhdG9uLm9ial9hZGRyZXNzLgotCShk d2FyZjJfbG9jZXhwcl9iYXRvbl9ldmFsKTogU2V0IGJhdG9uLm9ial9hZGRyZXNzIHRvIGFkZHIu Ci0JKG5lZWRzX2dldF9vYmpfYWRkcik6IE5ldyBmdW5jdGlvbi4KLQkoc3RydWN0IGR3YXJmX2V4 cHJfY29udGV4dF9mdW5jcyk6IEFkZCBuZWVkc19nZXRfb2JqX2FkZHIgdG8KLQluZWVkc19mcmFt ZV9jdHhfZnVuY3MuCi0KLUNoYW5nZS1JZDogSWVkOWUxYmE2MzJlOGQzNWQwZWMwMGNjODMyYjk2 ZDQzMjQ0OWZkODIKLQotU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxsQGlu dGVsLmNvbT4KLS0tLQotIGdkYi9kd2FyZjJleHByLmMgfCAgICA2ICsrKysrKwotIGdkYi9kd2Fy ZjJleHByLmggfCAgICA0IC0tLS0KLSBnZGIvZHdhcmYybG9jLmMgIHwgICA0MSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQotIGdkYi9kd2FyZjJsb2MuaCAgfCAgICAx ICsKLSBnZGIvZ2RidHlwZXMuYyAgIHwgICAxNiArKysrKysrKy0tLS0tLS0tCi0gNSBmaWxlcyBj aGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdkYi03 LjcuOTAuMjAxNDA2MTMvZ2RiL2R3YXJmMmV4cHIuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03Ljcu OTAuMjAxNDA2MTMub3JpZy9nZGIvZHdhcmYyZXhwci5jCTIwMTQtMDYtMTQgMTU6MDI6MjEuNDg0 NTUxMTMyICswMjAwCi0rKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYyZXhwci5jCTIw MTQtMDYtMTQgMTU6MDI6NTIuMjk5NTc1MzY5ICswMjAwCi1AQCAtMTQ3OCw2ICsxNDc4LDEyIEBA IGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnQKLSAJICB9Ci0gCSAgYnJl YWs7Ci0gCi0rICAgICAgICBjYXNlIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3M6Ci0rCSAgLyog UmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBvYmplY3Qgd2UgYXJlIGN1cnJlbnRseSBvYnNlcnZp bmcuICAqLwotKwkgIHJlc3VsdCA9IChjdHgtPmZ1bmNzLT5nZXRfb2JqZWN0X2FkZHJlc3MpIChj dHgtPmJhdG9uKTsKLSsJICByZXN1bHRfdmFsID0gdmFsdWVfZnJvbV91bG9uZ2VzdCAoYWRkcmVz c190eXBlLCByZXN1bHQpOwotKwkgIGJyZWFrOwotKwotIAlkZWZhdWx0OgotIAkgIGVycm9yIChf KCJVbmhhbmRsZWQgZHdhcmYgZXhwcmVzc2lvbiBvcGNvZGUgMHgleCIpLCBvcCk7Ci0gCX0KLUlu ZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJleHByLmgKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMmV4cHIuaAkyMDE0LTA2LTE0IDE1 OjAyOjIxLjQ4NTU1MTEzMyArMDIwMAotKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2R3YXJm MmV4cHIuaAkyMDE0LTA2LTE0IDE1OjAyOjUyLjI5OTU3NTM2OSArMDIwMAotQEAgLTg0LDEyICs4 NCw4IEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MKLSAgICAgIFRoaXMgY2FuIHRo cm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLiAgKi8KLSAgIENP UkVfQUREUiAoKmdldF9hZGRyX2luZGV4KSAodm9pZCAqYmF0b24sIHVuc2lnbmVkIGludCBpbmRl eCk7Ci0gCi0tI2lmIDAKLS0gIC8qIE5vdCB5ZXQgaW1wbGVtZW50ZWQuICAqLwotLQotICAgLyog UmV0dXJuIHRoZSBgb2JqZWN0IGFkZHJlc3MnIGZvciBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNz LiAgKi8KLSAgIENPUkVfQUREUiAoKmdldF9vYmplY3RfYWRkcmVzcykgKHZvaWQgKmJhdG9uKTsK LS0jZW5kaWYKLSB9OwotIAotIC8qIFRoZSBsb2NhdGlvbiBvZiBhIHZhbHVlLiAgKi8KLUluZGV4 OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJsb2MuYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZHdhcmYybG9jLmMJMjAxNC0wNi0xNCAxNTowMjoy MS40ODc1NTExMzUgKzAyMDAKLSsrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJsb2Mu YwkyMDE0LTA2LTE0IDE1OjAyOjUyLjMwMTU3NTM3MCArMDIwMAotQEAgLTMwNiw2ICszMDYsNyBA QCBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbgotIHsKLSAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFt ZTsKLSAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdTsKLSsgIENPUkVfQUREUiBv YmpfYWRkcmVzczsKLSB9OwotIAotIC8qIEhlbHBlciBmdW5jdGlvbnMgZm9yIGR3YXJmMl9ldmFs dWF0ZV9sb2NfZGVzYy4gICovCi1AQCAtMTIwOSw2ICsxMjEwLDcgQEAgZHdhcmZfZXhwcl9wdXNo X2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAocwotIAotICAgYmF0b25fbG9jYWwuZnJhbWUgPSBjYWxs ZXJfZnJhbWU7Ci0gICBiYXRvbl9sb2NhbC5wZXJfY3UgPSBjYWxsZXJfcGVyX2N1OwotKyAgYmF0 b25fbG9jYWwub2JqX2FkZHJlc3MgPSAwOwotIAotICAgc2F2ZWRfY3R4LmdkYmFyY2ggPSBjdHgt PmdkYmFyY2g7Ci0gICBzYXZlZF9jdHguYWRkcl9zaXplID0gY3R4LT5hZGRyX3NpemU7Ci1AQCAt MTIzOCw2ICsxMjQwLDIyIEBAIGR3YXJmX2V4cHJfZ2V0X2FkZHJfaW5kZXggKHZvaWQgKmJhdG9u LAotICAgcmV0dXJuIGR3YXJmMl9yZWFkX2FkZHJfaW5kZXggKGRlYmF0b24tPnBlcl9jdSwgaW5k ZXgpOwotIH0KLSAKLSsvKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgZ2V0X29iamVjdF9hZGRyZXNz LiBSZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIFZMQQotKyAgIG9iamVjdC4gICovCi0rCi0rc3Rh dGljIENPUkVfQUREUgotK2R3YXJmX2V4cHJfZ2V0X29ial9hZGRyICh2b2lkICpiYXRvbikKLSt7 Ci0rICBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbiAqZGViYXRvbiA9IGJhdG9uOwotKwotKyAgZ2Ri X2Fzc2VydCAoZGViYXRvbiAhPSBOVUxMKTsKLSsKLSsgIGlmIChkZWJhdG9uLT5vYmpfYWRkcmVz cyA9PSAwKQotKyAgICBlcnJvciAoXygiTG9jYXRpb24gYWRkcmVzcyBpcyBub3Qgc2V0LiIpKTsK LSsKLSsgIHJldHVybiBkZWJhdG9uLT5vYmpfYWRkcmVzczsKLSt9Ci0rCi0gLyogVkFMVUUgbXVz dCBiZSBvZiB0eXBlIGx2YWxfY29tcHV0ZWQgd2l0aCBlbnRyeV9kYXRhX3ZhbHVlX2Z1bmNzLiAg UGVyZm9ybQotICAgIHRoZSBpbmRpcmVjdCBtZXRob2Qgb24gaXQsIHRoYXQgaXMgdXNlIGl0cyBz dG9yZWQgdGFyZ2V0IHZhbHVlLCB0aGUgc29sZQotICAgIHB1cnBvc2Ugb2YgZW50cnlfZGF0YV92 YWx1ZV9mdW5jcy4uICAqLwotQEAgLTIyMDYsNyArMjIyNCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHdhcmZfZXhwcl9jb250ZXh0X2YKLSAgIGR3YXJmX2V4cHJfZHdhcmZfY2FsbCwKLSAgIGR3 YXJmX2V4cHJfZ2V0X2Jhc2VfdHlwZSwKLSAgIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50 cnlfdmFsdWUsCi0tICBkd2FyZl9leHByX2dldF9hZGRyX2luZGV4Ci0rICBkd2FyZl9leHByX2dl dF9hZGRyX2luZGV4LAotKyAgZHdhcmZfZXhwcl9nZXRfb2JqX2FkZHIKLSB9OwotIAotIC8qIEV2 YWx1YXRlIGEgbG9jYXRpb24gZGVzY3JpcHRpb24sIHN0YXJ0aW5nIGF0IERBVEEgYW5kIHdpdGgg bGVuZ3RoCi1AQCAtMjIzNSw2ICsyMjU0LDcgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1 bGwgKHN0cnVjdCB0eQotIAotICAgYmF0b24uZnJhbWUgPSBmcmFtZTsKLSAgIGJhdG9uLnBlcl9j dSA9IHBlcl9jdTsKLSsgIGJhdG9uLm9ial9hZGRyZXNzID0gMDsKLSAKLSAgIGN0eCA9IG5ld19k d2FyZl9leHByX2NvbnRleHQgKCk7Ci0gICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZnJlZV9k d2FyZl9leHByX2NvbnRleHQgKGN0eCk7Ci1AQCAtMjQ0MCw2ICsyNDYwLDcgQEAgZHdhcmYyX2V2 YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3QgdHlwZSAqdAotIAotIHN0YXRpYyBpbnQKLSBkd2FyZjJf bG9jZXhwcl9iYXRvbl9ldmFsIChjb25zdCBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmRs YmF0b24sCi0rICAgICAgICAgQ09SRV9BRERSIGFkZHIsCi0gCQkJICAgQ09SRV9BRERSICp2YWxw KQotIHsKLSAgIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eDsKLUBAIC0yNDU1LDYgKzI0 NzYsNyBAQCBkd2FyZjJfbG9jZXhwcl9iYXRvbl9ldmFsIChjb25zdCBzdHJ1Y3QKLSAKLSAgIGJh dG9uLmZyYW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKTsKLSAgIGJhdG9uLnBlcl9jdSA9 IGRsYmF0b24tPnBlcl9jdTsKLSsgIGJhdG9uLm9ial9hZGRyZXNzID0gYWRkcjsKLSAKLSAgIG9i amZpbGUgPSBkd2FyZjJfcGVyX2N1X29iamZpbGUgKGRsYmF0b24tPnBlcl9jdSk7Ci0gCi1AQCAt MjQ5NSw3ICsyNTE3LDggQEAgZHdhcmYyX2xvY2V4cHJfYmF0b25fZXZhbCAoY29uc3Qgc3RydWN0 Ci0gLyogU2VlIGR3YXJmMmxvYy5oLiAgKi8KLSAKLSBpbnQKLS1kd2FyZjJfZXZhbHVhdGVfcHJv cGVydHkgKGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3AsIENPUkVfQUREUiAqdmFsdWUp Ci0rZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpw cm9wLCBDT1JFX0FERFIgYWRkcmVzcywKLSsgICAgICAgIENPUkVfQUREUiAqdmFsdWUpCi0gewot ICAgaWYgKHByb3AgPT0gTlVMTCkKLSAgICAgcmV0dXJuIDA7Ci1AQCAtMjUwNiw3ICsyNTI5LDcg QEAgZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZAotICAgICAgIHsKLSAJ Y29uc3Qgc3RydWN0IGR3YXJmMl9wcm9wZXJ0eV9iYXRvbiAqYmF0b24gPSBwcm9wLT5kYXRhLmJh dG9uOwotIAotLQlpZiAoZHdhcmYyX2xvY2V4cHJfYmF0b25fZXZhbCAoJmJhdG9uLT5sb2NleHBy LCB2YWx1ZSkpCi0rCWlmIChkd2FyZjJfbG9jZXhwcl9iYXRvbl9ldmFsICgmYmF0b24tPmxvY2V4 cHIsIGFkZHJlc3MsIHZhbHVlKSkKLSAJICB7Ci0gCSAgICBpZiAoYmF0b24tPnJlZmVyZW5jZWRf dHlwZSkKLSAJICAgICAgewotQEAgLTI2NTcsNiArMjY4MCwxNSBAQCBuZWVkc19nZXRfYWRkcl9p bmRleCAodm9pZCAqYmF0b24sIHVuc2lnCi0gICByZXR1cm4gMTsKLSB9Ci0gCi0rLyogRFdfT1Bf cHVzaF9vYmplY3RfYWRkcmVzcyBoYXMgYSBmcmFtZSBhbHJlYWR5IHBhc3NlZCB0aHJ1LiAgKi8K LSsKLStzdGF0aWMgQ09SRV9BRERSCi0rbmVlZHNfZ2V0X29ial9hZGRyICh2b2lkICpiYXRvbikK LSt7Ci0rICAvKiBOb3RoaW5nIHRvIGRvLiAgKi8KLSsgIHJldHVybiAxOwotK30KLSsKLSAvKiBW aXJ0dWFsIG1ldGhvZCB0YWJsZSBmb3IgZHdhcmYyX2xvY19kZXNjX25lZWRzX2ZyYW1lIGJlbG93 LiAgKi8KLSAKLSBzdGF0aWMgY29uc3Qgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dF9mdW5jcyBu ZWVkc19mcmFtZV9jdHhfZnVuY3MgPQotQEAgLTI2NzEsNyArMjcwMyw4IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0X2YKLSAgIG5lZWRzX2ZyYW1lX2R3YXJmX2NhbGws Ci0gICBOVUxMLAkJCQkvKiBnZXRfYmFzZV90eXBlICovCi0gICBuZWVkc19kd2FyZl9yZWdfZW50 cnlfdmFsdWUsCi0tICBuZWVkc19nZXRfYWRkcl9pbmRleAotKyAgbmVlZHNfZ2V0X2FkZHJfaW5k ZXgsCi0rICBuZWVkc19nZXRfb2JqX2FkZHIKLSB9OwotIAotIC8qIFJldHVybiBub24temVybyBp ZmYgdGhlIGxvY2F0aW9uIGV4cHJlc3Npb24gYXQgREFUQSAobGVuZ3RoIFNJWkUpCi1JbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmgKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMmxvYy5oCTIwMTQtMDYtMTQgMTU6MDI6MjEu NDg4NTUxMTM1ICswMjAwCi0rKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmgJ MjAxNC0wNi0xNCAxNTowMjo1Mi4zMDE1NzUzNzAgKzAyMDAKLUBAIC05Niw2ICs5Niw3IEBAIHN0 cnVjdCB2YWx1ZSAqZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjICgKLSAgICBpbnRvIFZBTFVFLCBv dGhlcndpc2UgcmV0dXJucyAwLiAgKi8KLSAKLSBpbnQgZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5 IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLAotKwkJCSAgICAgIENPUkVfQUREUiBh ZGRyZXNzLAotIAkJCSAgICAgIENPUkVfQUREUiAqdmFsdWUpOwotIAotIENPUkVfQUREUiBkd2Fy ZjJfcmVhZF9hZGRyX2luZGV4IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UsCi1J bmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZ2RidHlwZXMuYwkyMDE0LTA2LTE0IDE1OjAy OjIxLjQ5MDU1MTEzNyArMDIwMAotKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5cGVz LmMJMjAxNC0wNi0xNCAxNTowMzozNy45MTk2MDk5NTUgKzAyMDAKLUBAIC0xNjU3LDcgKzE2NTcs NyBAQCBpc19keW5hbWljX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQotICAgIG9mIHRoYXQgdHlw ZS4gICovCi0gCi0gc3RhdGljIHN0cnVjdCB0eXBlICoKLS1yZXNvbHZlX2R5bmFtaWNfcmFuZ2Ug KHN0cnVjdCB0eXBlICpkeW5fcmFuZ2VfdHlwZSkKLStyZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHN0 cnVjdCB0eXBlICpkeW5fcmFuZ2VfdHlwZSwgQ09SRV9BRERSIGFkZHIpCi0gewotICAgQ09SRV9B RERSIHZhbHVlOwotICAgc3RydWN0IHR5cGUgKnN0YXRpY19yYW5nZV90eXBlOwotQEAgLTE2Njgs NyArMTY2OCw3IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3RydWN0IHR5cGUgKmR5bl8KLSAg IGdkYl9hc3NlcnQgKFRZUEVfQ09ERSAoZHluX3JhbmdlX3R5cGUpID09IFRZUEVfQ09ERV9SQU5H RSk7Ci0gCi0gICBwcm9wID0gJlRZUEVfUkFOR0VfREFUQSAoZHluX3JhbmdlX3R5cGUpLT5sb3c7 Ci0tICBpZiAoZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChwcm9wLCAmdmFsdWUpKQotKyAgaWYg KGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgYWRkciwgJnZhbHVlKSkKLSAgICAgewot ICAgICAgIGxvd19ib3VuZC5raW5kID0gUFJPUF9DT05TVDsKLSAgICAgICBsb3dfYm91bmQuZGF0 YS5jb25zdF92YWwgPSB2YWx1ZTsKLUBAIC0xNjgwLDcgKzE2ODAsNyBAQCByZXNvbHZlX2R5bmFt aWNfcmFuZ2UgKHN0cnVjdCB0eXBlICpkeW5fCi0gICAgIH0KLSAKLSAgIHByb3AgPSAmVFlQRV9S QU5HRV9EQVRBIChkeW5fcmFuZ2VfdHlwZSktPmhpZ2g7Ci0tICBpZiAoZHdhcmYyX2V2YWx1YXRl X3Byb3BlcnR5IChwcm9wLCAmdmFsdWUpKQotKyAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0 eSAocHJvcCwgYWRkciwgJnZhbHVlKSkKLSAgICAgewotICAgICAgIGhpZ2hfYm91bmQua2luZCA9 IFBST1BfQ09OU1Q7Ci0gICAgICAgaGlnaF9ib3VuZC5kYXRhLmNvbnN0X3ZhbCA9IHZhbHVlOwot QEAgLTE3MDcsNyArMTcwNyw3IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3RydWN0IHR5cGUg KmR5bl8KLSAgICBvZiB0aGUgYXNzb2NpYXRlZCBhcnJheS4gICovCi0gCi0gc3RhdGljIHN0cnVj dCB0eXBlICoKLS1yZXNvbHZlX2R5bmFtaWNfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlKQotK3Jl c29sdmVfZHluYW1pY19hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKQot IHsKLSAgIENPUkVfQUREUiB2YWx1ZTsKLSAgIHN0cnVjdCB0eXBlICplbHRfdHlwZTsKLUBAIC0x NzE4LDEyICsxNzE4LDEyIEBAIHJlc29sdmVfZHluYW1pY19hcnJheSAoc3RydWN0IHR5cGUgKnR5 cGUKLSAKLSAgIGVsdF90eXBlID0gdHlwZTsKLSAgIHJhbmdlX3R5cGUgPSBjaGVja190eXBlZGVm IChUWVBFX0lOREVYX1RZUEUgKGVsdF90eXBlKSk7Ci0tICByYW5nZV90eXBlID0gcmVzb2x2ZV9k eW5hbWljX3JhbmdlIChyYW5nZV90eXBlKTsKLSsgIHJhbmdlX3R5cGUgPSByZXNvbHZlX2R5bmFt aWNfcmFuZ2UgKHJhbmdlX3R5cGUsIGFkZHIpOwotIAotICAgYXJ5X2RpbSA9IGNoZWNrX3R5cGVk ZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGVsdF90eXBlKSk7Ci0gCi0gICBpZiAoYXJ5X2RpbSAhPSBO VUxMICYmIFRZUEVfQ09ERSAoYXJ5X2RpbSkgPT0gVFlQRV9DT0RFX0FSUkFZKQotLSAgICBlbHRf dHlwZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwot KyAgICBlbHRfdHlwZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSksIGFkZHIpOwotICAgZWxzZQotICAgICBlbHRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUg KHR5cGUpOwotIAotQEAgLTE4NTMsMTEgKzE4NTMsMTEgQEAgcmVzb2x2ZV9keW5hbWljX3R5cGUg KHN0cnVjdCB0eXBlICp0eXBlLAotIAl9Ci0gCi0gICAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6 Ci0tCXJlc29sdmVkX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfYXJyYXkgKHR5cGUpOwotKwlyZXNv bHZlZF90eXBlID0gcmVzb2x2ZV9keW5hbWljX2FycmF5ICh0eXBlLCBhZGRyKTsKLSAJYnJlYWs7 Ci0gCi0gICAgICAgY2FzZSBUWVBFX0NPREVfUkFOR0U6Ci0tCXJlc29sdmVkX3R5cGUgPSByZXNv bHZlX2R5bmFtaWNfcmFuZ2UgKHR5cGUpOwotKwlyZXNvbHZlZF90eXBlID0gcmVzb2x2ZV9keW5h bWljX3JhbmdlICh0eXBlLCBhZGRyKTsKLSAJYnJlYWs7Ci0gCi0gICAgIGNhc2UgVFlQRV9DT0RF X1VOSU9OOgoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDJvZjIzLnBhdGNoIGIvZ2RiLXZs YS1pbnRlbC0wMm9mMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3OTdl Y2UuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0wMm9mMjMucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwxOTIgKzAsMCBAQAotU3ViamVjdDogW1BBVENIIDAyLzIzXSBkd2FyZjogYWRkIERX X0FUX2RhdGFfbG9jYXRpb24gc3VwcG9ydAotTWVzc2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC0z LWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4KLQotQW4gb2JqZWN0IG1pZ2h0 IGhhdmUgYSBkZXNjcmlwdG9yIHByb2NlZWRpbmcgdGhlIGFjdHVhbCB2YWx1ZS4KLVRvIHBvaW50 IHRoZSBkZWJ1Z2dlciB0byB0aGUgYWN0dWFsbHkgdmFsdWUgb2YgYW4gb2JqZWN0Ci1EV19BVF9k YXRhX2xvY2F0aW9uIGlzIHVzZWQgZm9yLiBGb3IgZXhhbXBsZSB0aGUgY29tcGlsZSBtYXkKLWVt aXQgZm9yIHRoaXMgZW50aXR5OgotCi0gIDF8IGludCBmb29bTl07Ci0KLXRoZSBmb2xsb3dpbmcg ZGVzY3JpcHRvcjoKLQotc3RydWN0IGFycmF5IHsKLSAgc2l6ZV90IHNpemU7Ci0gIHZvaWQqICBk YXRhOyAvLyBEV19BVF9kYXRhX2xvY2F0aW9uIGRlc2NyaWJlcyB0aGlzIGxvY2F0aW9uCi19Ci0K LVRoaXMgYWxsb3dzIEdEQiB0byBwcmludCB0aGUgYWN0dWFsIGRhdGEgb2YgYW4gdHlwZS4KLQot MjAxNC0wNS0yOCAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+Ci0g ICAgICAgICAgICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLQotCSogZHdh cmYycmVhZC5jIChzZXRfZGllX3R5cGUpOiBQYXJzZSBhbmQgc2F2ZSBEV19BVF9kYXRhX2xvY2F0 aW9uCi0JYXR0cmlidXRlLgotCSogZ2RidHlwZXMuYyAoaXNfZHluYW1pY190eXBlKTogQ29uc2lk ZXIgYSB0eXBlIGJlaW5nIGR5bmFtaWMgaWYKLQl0aGUgZGF0YSBsb2NhdGlvbiBoYXMgbm90IHll dCBiZWVuIHJlc29sdmVkLgotCShyZXNvbHZlX2R5bmFtaWNfdHlwZSk6IEV2YWx1YXRlIGRhdGEg bG9jYXRpb24gYmF0b24KLQlpZiBwcmVzZW50IGFuZCBzYXZlIGl0cyB2YWx1ZS4KLQkqIGdkYnR5 cGVzLmggPG1haW5fdHlwZT46IEFkZCBkYXRhX2xvY2F0aW9uLgotCShUWVBFX0RBVEFfTE9DQVRJ T04pOiBOZXcgbWFjcm8uCi0JKFRZUEVfREFUQV9MT0NBVElPTl9BRERSKTogTmV3IG1hY3JvLgot CShUWVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUkVTUyk6IE5ldyBtYWNyby4KLQkqIHZhbHVlLmM6 IEluY2x1ZGUgZHdhcmYybG9jLmguCi0JKHZhbHVlX2ZldGNoX2xhenkpOiBVc2UgZGF0YSBsb2Nh dGlvbiBhZGRyZXMgdG8gcmVhZCB2YWx1ZSBmcm9tCi0JbWVtb3J5LgotCShjb2VyY2VfcmVmKTog Q29uc3RydWN0IG5ldyB2YWx1ZSBmcm9tIGRhdGEgbG9jYXRpb24uCi0KLUNoYW5nZS1JZDogSWM2 MzNmYTEyNWVmZGI1ZTQzODIwNGU0ZjgwYmIzYTFjOTc3NThiMTIKLQotU2lnbmVkLW9mZi1ieTog S2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLS0tLQotIGdkYi9kd2FyZjJyZWFk LmMgfCAgIDE1ICsrKysrKysrKysrKysrKwotIGdkYi9nZGJ0eXBlcy5jICAgfCAgIDI5ICsrKysr KysrKysrKysrKysrKysrKysrKysrKy0tCi0gZ2RiL2dkYnR5cGVzLmggICB8ICAgMTQgKysrKysr KysrKysrKysKLSBnZGIvdmFsdWUuYyAgICAgIHwgICAgOCArKysrKysrLQotIDQgZmlsZXMgY2hh bmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL2R3YXJmMnJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuOTAu MjAxNDA2MTMub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTQtMDYtMTQgMTU6MDY6MDAuODM0NzE0 NDA5ICswMjAwCi0rKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYycmVhZC5jCTIwMTQt MDYtMTQgMTU6MDY6MDguMzI2NzE5NzUzICswMjAwCi1AQCAtMjE2NDIsNiArMjE2NDIsNyBAQCBz ZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Ci0gewotICAgc3RydWN0IGR3 YXJmMl9wZXJfY3Vfb2Zmc2V0X2FuZF90eXBlICoqc2xvdCwgb2ZzOwotICAgc3RydWN0IG9iamZp bGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsKLSsgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0g Ci0gICAvKiBGb3IgQWRhIHR5cGVzLCBtYWtlIHN1cmUgdGhhdCB0aGUgZ25hdC1zcGVjaWZpYyBk YXRhIGlzIGFsd2F5cwotICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBU aGVyZSBhcmUgYSBmZXcgdHlwZXMgd2hlcmUKLUBAIC0yMTY1Niw2ICsyMTY1NywyMCBAQCBzZXRf ZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Ci0gICAgICAgJiYgIUhBVkVfR05B VF9BVVhfSU5GTyAodHlwZSkpCi0gICAgIElOSVRfR05BVF9TUEVDSUZJQyAodHlwZSk7Ci0gCi0r ICAvKiBSZWFkIERXX0FUX2RhdGFfbG9jYXRpb24gYW5kIHNldCBpbiB0eXBlLiAgKi8KLSsgIGF0 dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9kYXRhX2xvY2F0aW9uLCBjdSk7Ci0rICBpZiAo YXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKLSsgICAgewotKyAgICAgIHN0cnVjdCBkeW5hbWlj X3Byb3AgcHJvcDsKLSsKLSsgICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRp ZSwgY3UsICZwcm9wKSkKLSsJewotKwkgIFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSkKLSsJICAg ID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9mIChwcm9w KSk7Ci0rCSAgKlRZUEVfREFUQV9MT0NBVElPTiAodHlwZSkgPSBwcm9wOwotKwl9Ci0rICAgIH0K LSsKLSAgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPmRpZV90eXBlX2hhc2ggPT0gTlVMTCkKLSAg ICAgewotICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+ZGllX3R5cGVfaGFzaCA9Ci1JbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZ2RidHlwZXMuYwkyMDE0LTA2LTE0IDE1OjA2OjAwLjgz NjcxNDQxMCArMDIwMAotKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5cGVzLmMJMjAx NC0wNi0xNCAxNToxMjoyOC45NjM5ODYzNDQgKzAyMDAKLUBAIC0xNjM0LDcgKzE2MzQsMTIgQEAg aXNfZHluYW1pY190eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAJICAgb3IgdGhlIGVsZW1lbnRz IGl0IGNvbnRhaW5zIGhhdmUgYSBkeW5hbWljIGNvbnRlbnRzLiAgKi8KLSAJaWYgKGlzX2R5bmFt aWNfdHlwZSAoVFlQRV9JTkRFWF9UWVBFICh0eXBlKSkpCi0gCSAgcmV0dXJuIDE7Ci0tCXJldHVy biBpc19keW5hbWljX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLSsJZWxzZSBpZiAo VFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKSAhPSBOVUxMCi0rICAgICAgICAgICYmIChUWVBFX0RB VEFfTE9DQVRJT05fS0lORCAodHlwZSkgPT0gUFJPUF9MT0NFWFBSCi0rICAgICAgICAgICAgICB8 fCBUWVBFX0RBVEFfTE9DQVRJT05fS0lORCAodHlwZSkgPT0gUFJPUF9MT0NMSVNUKSkKLSsgICAg cmV0dXJuIDE7Ci0rICBlbHNlCi0rICAgIHJldHVybiBpc19keW5hbWljX3R5cGUgKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpKTsKLSAgICAgICB9Ci0gCi0gICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVD VDoKLUBAIC0xODMwLDYgKzE4MzUsOCBAQCByZXNvbHZlX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5 cGUgKnR5cGUsCi0gewotICAgc3RydWN0IHR5cGUgKnJlYWxfdHlwZSA9IGNoZWNrX3R5cGVkZWYg KHR5cGUpOwotICAgc3RydWN0IHR5cGUgKnJlc29sdmVkX3R5cGUgPSB0eXBlOwotKyAgY29uc3Qg c3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKLSsgIENPUkVfQUREUiB2YWx1ZTsKLSAKLSAgIGlm ICghaXNfZHluYW1pY190eXBlIChyZWFsX3R5cGUpKQotICAgICByZXR1cm4gdHlwZTsKLUBAIC0x ODY5LDYgKzE4NzYsMTggQEAgcmVzb2x2ZV9keW5hbWljX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBl LAotICAgICAgIGJyZWFrOwotICAgICB9Ci0gCi0rICB0eXBlID0gcmVzb2x2ZWRfdHlwZTsKLSsK LSsgIC8qIFJlc29sdmUgZGF0YV9sb2NhdGlvbiBhdHRyaWJ1dGUuICAqLwotKyAgcHJvcCA9IFRZ UEVfREFUQV9MT0NBVElPTiAodHlwZSk7Ci0rICBpZiAoZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5 IChwcm9wLCBhZGRyLCAmdmFsdWUpKQotKyAgICB7Ci0rICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9O X0FERFIgKHR5cGUpID0gdmFsdWU7Ci0rICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5 cGUpID0gUFJPUF9DT05TVDsKLSsgICAgfQotKyAgZWxzZQotKyAgICBUWVBFX0RBVEFfTE9DQVRJ T04gKHR5cGUpID0gTlVMTDsKLSsKLSAgIHJldHVybiByZXNvbHZlZF90eXBlOwotIH0KLSAKLUBA IC00MDc4LDYgKzQwOTcsMTMgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUg Km9iagotICAgICAgICpUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKSA9ICpUWVBFX1JBTkdFX0RB VEEgKHR5cGUpOwotICAgICB9Ci0gCi0rICAvKiBDb3B5IHRoZSBkYXRhIGxvY2F0aW9uIGluZm9y bWF0aW9uLiAgKi8KLSsgIGlmIChUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUpICE9IE5VTEwpCi0r ICAgIHsKLSsgICAgICBUWVBFX0RBVEFfTE9DQVRJT04gKG5ld190eXBlKSA9IHhtYWxsb2MgKHNp emVvZiAoc3RydWN0IGR5bmFtaWNfcHJvcCkpOwotKyAgICAgICpUWVBFX0RBVEFfTE9DQVRJT04g KG5ld190eXBlKSA9ICpUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUpOwotKyAgICB9Ci0rCi0gICAv KiBDb3B5IHBvaW50ZXJzIHRvIG90aGVyIHR5cGVzLiAgKi8KLSAgIGlmIChUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSkKLSAgICAgVFlQRV9UQVJHRVRfVFlQRSAobmV3X3R5cGUpID0gCi1JbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuaAotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDE0LTA2LTE0IDE1OjA2OjAwLjgz NzcxNDQxMSArMDIwMAotKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5cGVzLmgJMjAx NC0wNi0xNCAxNTowNjowOC4zMjg3MTk3NTQgKzAyMDAKLUBAIC03MjUsNiArNzI1LDEwIEBAIHN0 cnVjdCBtYWluX3R5cGUKLSAKLSAgICAgc3RydWN0IGZ1bmNfdHlwZSAqZnVuY19zdHVmZjsKLSAg IH0gdHlwZV9zcGVjaWZpYzsKLSsKLSsgIC8qICogSW5kaXJlY3Rpb24gdG8gYWN0dWFsIGRhdGEu ICAqLwotKwotKyAgc3RydWN0IGR5bmFtaWNfcHJvcCAqZGF0YV9sb2NhdGlvbjsKLSB9OwotIAot IC8qICogQSBgYHN0cnVjdCB0eXBlJycgZGVzY3JpYmVzIGEgcGFydGljdWxhciBpbnN0YW5jZSBv ZiBhIHR5cGUsIHdpdGgKLUBAIC0xMjA0LDYgKzEyMDgsMTYgQEAgZXh0ZXJuIHZvaWQgYWxsb2Nh dGVfZ25hdF9hdXhfdHlwZSAoc3RydQotICNkZWZpbmUgVFlQRV9MT1dfQk9VTkRfS0lORChyYW5n ZV90eXBlKSBcCi0gICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvdy5raW5kCi0gCi0r LyogQXR0cmlidXRlIGFjY2Vzc29ycyBmb3IgVkxBIHN1cHBvcnQuICAqLwotKyNkZWZpbmUgVFlQ RV9EQVRBX0xPQ0FUSU9OKHRoaXN0eXBlKSBcCi0rICBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSkt PmRhdGFfbG9jYXRpb24KLSsjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTl9CQVRPTih0aGlzdHlw ZSkgXAotKyAgVFlQRV9EQVRBX0xPQ0FUSU9OICh0aGlzdHlwZSktPmRhdGEuYmF0b24KLSsjZGVm aW5lIFRZUEVfREFUQV9MT0NBVElPTl9BRERSKHRoaXN0eXBlKSBcCi0rICBUWVBFX0RBVEFfTE9D QVRJT04gKHRoaXN0eXBlKS0+ZGF0YS5jb25zdF92YWwKLSsjZGVmaW5lIFRZUEVfREFUQV9MT0NB VElPTl9LSU5EKHRoaXN0eXBlKSBcCi0rICBUWVBFX0RBVEFfTE9DQVRJT04gKHRoaXN0eXBlKS0+ a2luZAotKwotIC8qIE1vdG8tc3BlY2lmaWMgc3R1ZmYgZm9yIEZPUlRSQU4gYXJyYXlzLiAgKi8K LSAKLSAjZGVmaW5lIFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEKGFycmF5dHlw ZSkgXAotSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbHVlLmMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3ZhbHVlLmMJMjAxNC0wNi0xNCAxNTow NjowMC44Mzg3MTQ0MTIgKzAyMDAKLSsrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi92YWx1ZS5j CTIwMTQtMDYtMTQgMTU6MDY6MDguMzI5NzE5NzU1ICswMjAwCi1AQCAtMzY5OSw4ICszNjk5LDE0 IEBAIHZhbHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAqdmFsKQotICAgICB9Ci0gICBlbHNl IGlmIChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfbWVtb3J5KQotICAgICB7Ci0tICAgICAgQ09S RV9BRERSIGFkZHIgPSB2YWx1ZV9hZGRyZXNzICh2YWwpOwotICAgICAgIHN0cnVjdCB0eXBlICp0 eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfZW5jbG9zaW5nX3R5cGUgKHZhbCkpOwotKyAgICAg IENPUkVfQUREUiBhZGRyOwotKwotKyAgICAgIGlmIChUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUp ICE9IE5VTEwKLSsJICAmJiBUWVBFX0RBVEFfTE9DQVRJT05fS0lORCAodHlwZSkgPT0gUFJPUF9D T05TVCkKLSsJYWRkciA9IFRZUEVfREFUQV9MT0NBVElPTl9BRERSICh0eXBlKTsKLSsgICAgICBl bHNlCi0rCWFkZHIgPSB2YWx1ZV9hZGRyZXNzICh2YWwpOwotIAotICAgICAgIGlmIChUWVBFX0xF TkdUSCAodHlwZSkpCi0gCXJlYWRfdmFsdWVfbWVtb3J5ICh2YWwsIDAsIHZhbHVlX3N0YWNrICh2 YWwpLAoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDNvZjIzLnBhdGNoIGIvZ2RiLXZsYS1p bnRlbC0wM29mMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMjg0ZTku LjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0wM29mMjMucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxMTUgKzAsMCBAQAotU3ViamVjdDogW1BBVENIIDAzLzIzXSB2bGE6IGludHJvZHVjZSBh bGxvY2F0ZWQvYXNzb2NpYXRlZCBmbGFncwotTWVzc2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC00 LWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4KLQotRm9ydHJhbiA5MCBwcm92 aWRlIHR5cGVzIHdob3NlIHZhbHVlcyBtYXkgYmUgZHluYW1pY2FsbHkKLWFsbG9jYXRlZCBvciBh c3NvY2lhdGVkIHdpdGggYSB2YXJpYWJsZSB1bmRlciBleHBsaWNpdAotcHJvZ3JhbSBjb250cm9s LiBUaGUgcHVycG9zZSBvZiB0aGlzIGNvbW1pdCBpcyB0byByZWFkCi1hbGxvY2F0ZWQvYXNzb2Np YXRlZCBEV0FSRiB0YWdzIGFuZCBzdG9yZSB0aGVtIHRvIHRoZQotbWFpbl90eXBlLgotCi0yMDE0 LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLSAgICAgICAgICAg IFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgotCi0JKiBkd2FyZjJy ZWFkLmMgKHNldF9kaWVfdHlwZSk6IEFkZCByZWFkaW5nIG9mCi0JYWxsb2NhdGVkL2Fzc29jaWF0 ZWQgZmxhZ3MuCi0JKiBnZGJ0eXBlcy5oIChzdHJ1Y3QgbWFpbl90eXBlKTogQWRkIGFsbG9jYXRl ZC8KLQlhc3NvY2lhdGVkIGR3YXJmMl9wcm9wIGF0dHJpYnV0ZXMuCi0JKFRZUEVfQUxMT0NBVEVE X1BST1ApOiBOZXcgbWFjcm8uCi0JKFRZUEVfQVNTT0NJQVRFRF9QUk9QKTogTmV3IG1hY3JvLgot CShUWVBFX05PVF9BTExPQ0FURUQpOiBOZXcgbWFjcm8uCi0JKFRZUEVfTk9UX0FTU09DSUFURUQp OiBOZXcgbWFjcm8uCi0KLUNoYW5nZS1JZDogSTQ0YTllMjE5ODZkZTE2ZGUwNjFiM2VhMmE3Njg5 ZjFiZmEyOGVkMmUKLQotU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxsQGlu dGVsLmNvbT4KLS0tLQotIGdkYi9kd2FyZjJyZWFkLmMgfCAgIDI4ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysKLSBnZGIvZ2RidHlwZXMuaCAgIHwgICAyNiArKysrKysrKysrKysrKysrKysr KysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0 IGEvZ2RiL2R3YXJmMnJlYWQuYyBiL2dkYi9kd2FyZjJyZWFkLmMKLWluZGV4IDdhMGY3ZjQuLmVh NjY2MDIgMTAwNjQ0Ci0tLS0gYS9nZGIvZHdhcmYycmVhZC5jCi0rKysgYi9nZGIvZHdhcmYycmVh ZC5jCi1AQCAtMjE1MTQsNiArMjE1MTQsMzQgQEAgc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICAg ICYmICFIQVZFX0dOQVRfQVVYX0lORk8gKHR5cGUpKQotICAgICBJTklUX0dOQVRfU1BFQ0lGSUMg KHR5cGUpOwotIAotKyAgLyogUmVhZCBEV19BVF9hbGxvY2F0ZWQgYW5kIHNldCBpbiB0eXBlLiAg Ki8KLSsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9hbGxvY2F0ZWQsIGN1KTsKLSsg IGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGR5 bmFtaWNfcHJvcCBwcm9wOwotKwotKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0 ciwgZGllLCBjdSwgJnByb3ApKQotKyAgICAgICAgewotKyAgICAgICAgICBUWVBFX0FMTE9DQVRF RF9QUk9QICh0eXBlKQotKyAgICAgICAgICAgID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9i amZpbGVfb2JzdGFjaywgc2l6ZW9mIChwcm9wKSk7Ci0rICAgICAgICAgICpUWVBFX0FMTE9DQVRF RF9QUk9QICh0eXBlKSA9IHByb3A7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgIC8qIFJlYWQg RFdfQVRfYXNzb2NpYXRlZCBhbmQgc2V0IGluIHR5cGUuICAqLwotKyAgYXR0ciA9IGR3YXJmMl9h dHRyIChkaWUsIERXX0FUX2Fzc29jaWF0ZWQsIGN1KTsKLSsgIGlmIChhdHRyX2Zvcm1faXNfYmxv Y2sgKGF0dHIpKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGR5bmFtaWNfcHJvcCBwcm9wOwotKwot KyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJnByb3ApKQot KyAgICAgICAgewotKyAgICAgICAgICBUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSkKLSsgICAg ICAgICAgICA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVv ZiAocHJvcCkpOwotKyAgICAgICAgICAqVFlQRV9BU1NPQ0lBVEVEX1BST1AgKHR5cGUpID0gcHJv cDsKLSsgICAgICAgIH0KLSsgICAgfQotKwotICAgLyogUmVhZCBEV19BVF9kYXRhX2xvY2F0aW9u IGFuZCBzZXQgaW4gdHlwZS4gICovCi0gICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRf ZGF0YV9sb2NhdGlvbiwgY3UpOwotICAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi1k aWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmggYi9nZGIvZ2RidHlwZXMuaAotaW5kZXggYzZkMTRk Mi4uNTJlNjIzMyAxMDA2NDQKLS0tLSBhL2dkYi9nZGJ0eXBlcy5oCi0rKysgYi9nZGIvZ2RidHlw ZXMuaAotQEAgLTcyNiw2ICs3MjYsMTggQEAgc3RydWN0IG1haW5fdHlwZQotICAgLyogKiBJbmRp cmVjdGlvbiB0byBhY3R1YWwgZGF0YS4gICovCi0gCi0gICBzdHJ1Y3QgZHluYW1pY19wcm9wICpk YXRhX2xvY2F0aW9uOwotKwotKyAgLyogU3RydWN0dXJlIGZvciBEV19BVF9hbGxvY2F0ZWQuCi0r ICAgICBUaGUgcHJlc2VuY2Ugb2YgdGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIG9i amVjdCBvZiB0aGUgdHlwZQotKyAgICAgY2FuIGJlIGFsbG9jYXRlZC9kZWFsbG9jYXRlZC4gIFRo ZSB2YWx1ZSBjYW4gYmUgYSBkd2FyZiBleHByZXNzaW9uLAotKyAgICAgcmVmZXJlbmNlLCBvciBh IGNvbnN0YW50LiAgKi8KLSsgIHN0cnVjdCBkeW5hbWljX3Byb3AgKmFsbG9jYXRlZDsKLSsKLSsg IC8qIFN0cnVjdHVyZSBmb3IgRFdfQVRfYXNzb2NpYXRlZC4KLSsgICAgIFRoZSBwcmVzZW5jZSBv ZiB0aGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZWQgdGhhdCB0aGUgb2JqZWN0IG9mIHRoZSB0eXBlCi0r ICAgICBjYW4gYmUgYXNzb2NpYXRlZC4gIFRoZSB2YWx1ZSBjYW4gYmUgYSBkd2FyZiBleHByZXNz aW9uLAotKyAgICAgcmVmZXJlbmNlLCBvciBhIGNvbnN0YW50LiAgKi8KLSsgIHN0cnVjdCBkeW5h bWljX3Byb3AgKmFzc29jaWF0ZWQ7Ci0gfTsKLSAKLSAvKiAqIEEgYGBzdHJ1Y3QgdHlwZScnIGRl c2NyaWJlcyBhIHBhcnRpY3VsYXIgaW5zdGFuY2Ugb2YgYSB0eXBlLCB3aXRoCi1AQCAtMTIxNCw2 ICsxMjI2LDIwIEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0 eXBlICopOwotICAgVFlQRV9EQVRBX0xPQ0FUSU9OICh0aGlzdHlwZSktPmRhdGEuY29uc3RfdmFs Ci0gI2RlZmluZSBUWVBFX0RBVEFfTE9DQVRJT05fS0lORCh0aGlzdHlwZSkgXAotICAgVFlQRV9E QVRBX0xPQ0FUSU9OICh0aGlzdHlwZSktPmtpbmQKLSsjZGVmaW5lIFRZUEVfQUxMT0NBVEVEX1BS T1AodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+YWxsb2NhdGVkCi0rI2RlZmlu ZSBUWVBFX0FTU09DSUFURURfUFJPUCh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUp LT5hc3NvY2lhdGVkCi0rCi0rLyogQWxsb2NhdGVkIHN0YXR1cyBvZiB0eXBlIG9iamVjdC4gIElm IHNldCB0byBub24temVybyBpdCBtZWFucyB0aGUgb2JqZWN0Ci0rICAgaXMgYWxsb2NhdGVkLiBB IHplcm8gdmFsdWUgbWVhbnMgaXQgaXMgbm90IGFsbG9jYXRlZC4gICovCi0rI2RlZmluZSBUWVBF X05PVF9BTExPQ0FURUQodCkgIChUWVBFX0FMTE9DQVRFRF9QUk9QICh0KSBcCi0rICAmJiBUWVBF X0FMTE9DQVRFRF9QUk9QICh0KS0+a2luZCA9PSBQUk9QX0NPTlNUIFwKLSsgICYmICFUWVBFX0FM TE9DQVRFRF9QUk9QICh0KS0+ZGF0YS5jb25zdF92YWwpCi0rCi0rLyogQXNzb2NpYXRlZCBzdGF0 dXMgb2YgdHlwZSBvYmplY3QuICBJZiBzZXQgdG8gbm9uLXplcm8gaXQgbWVhbnMgdGhlIG9iamVj dAotKyAgIGlzIGFzc29jaWF0ZWQuIEEgemVybyB2YWx1ZSBtZWFucyBpdCBpcyBub3QgYXNzb2Np YXRlZC4gICovCi0rI2RlZmluZSBUWVBFX05PVF9BU1NPQ0lBVEVEKHQpICAoVFlQRV9BU1NPQ0lB VEVEX1BST1AgKHQpIFwKLSsgICYmIFRZUEVfQVNTT0NJQVRFRF9QUk9QICh0KS0+a2luZCA9PSBQ Uk9QX0NPTlNUIFwKLSsgICYmICFUWVBFX0FTU09DSUFURURfUFJPUCAodCktPmRhdGEuY29uc3Rf dmFsKQotIAotIC8qIE1vdG8tc3BlY2lmaWMgc3R1ZmYgZm9yIEZPUlRSQU4gYXJyYXlzLiAgKi8K LSAKLS0tIAotMS43LjkuNQotCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0wNG9mMjMtZml4 LnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0wNG9mMjMtZml4LnBhdGNoCmluZGV4IDMwNWM1NDEuLmFk MjM5YjUgMTAwNjQ0Ci0tLSBhL2dkYi12bGEtaW50ZWwtMDRvZjIzLWZpeC5wYXRjaAorKysgYi9n ZGItdmxhLWludGVsLTA0b2YyMy1maXgucGF0Y2gKQEAgLTEsMTYgKzEsMTcgQEAKIFJlOiBbUEFU Q0ggMDQvMjNdIHZsYTogbWFrZSBkeW5hbWljIGZvcnRyYW4gYXJyYXlzIGZ1bmN0aW9uYWwuCiBo dHRwczovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTQtMDYvbXNnMDA1NzAuaHRt bAogCi1JbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsYXJpdGguYworSW5kZXg6IGdk Yi03LjcuOTAuMjAxNDA2MjcvZ2RiL3ZhbGFyaXRoLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43 LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3ZhbGFyaXRoLmMJMjAxNC0wNi0xNiAyMzoxNjo0OC4xMjkx NjQ2NDQgKzAyMDAKLSsrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi92YWxhcml0aC5jCTIwMTQt MDYtMTYgMjM6MTc6NTIuNTQ0MjI1NDUyICswMjAwCi1AQCAtMTk1LDE5ICsxOTUsMTkgQEAgdmFs dWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKgorLS0tIGdkYi03LjcuOTAuMjAx NDA2Mjcub3JpZy9nZGIvdmFsYXJpdGguYwkyMDE0LTA3LTA3IDIwOjQ0OjAzLjEzNjM5NDUyNSAr MDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MjcvZ2RiL3ZhbGFyaXRoLmMJMjAxNC0wNy0wNyAy MDo0NTo0MS41ODg1MzY0NTkgKzAyMDAKK0BAIC0xOTUsMTAgKzE5NSwxNyBAQCB2YWx1ZV9zdWJz Y3JpcHRlZF9ydmFsdWUgKHN0cnVjdCB2YWx1ZSAqCiAgICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlw ZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7CiAgICBzdHJ1Y3QgdHlwZSAq ZWx0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKSk7 CiAgICB1bnNpZ25lZCBpbnQgZWx0X3NpemUgPSBUWVBFX0xFTkdUSCAoZWx0X3R5cGUpOwotLSAg dW5zaWduZWQgaW50IGVsdF9vZmZzID0gZWx0X3NpemUgKiBsb25nZXN0X3RvX2ludCAoaW5kZXgg LSBsb3dlcmJvdW5kKTsKKy0gIHVuc2lnbmVkIGludCBlbHRfb2ZmcyA9IGxvbmdlc3RfdG9faW50 IChpbmRleCAtIGxvd2VyYm91bmQpOwogKyAgdW5zaWduZWQgaW50IGVsdF9vZmZzOworICAgTE9O R0VTVCBlbHRfc3RyaWRlID0gVFlQRV9CWVRFX1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJh eV90eXBlKSk7CiAgICBzdHJ1Y3QgdmFsdWUgKnY7CiAgCiArICBpZiAoVFlQRV9OT1RfQVNTT0NJ QVRFRCAoYXJyYXlfdHlwZSkpCkBAIC0xOCw4ICsxOSwxMyBAQCBJbmRleDogZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvdmFsYXJpdGguYwogKyAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAoYXJyYXlf dHlwZSkpCiArICAgIGVycm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90 IGFsbG9jYXRlZCIpKTsKICsKLSsgIGVsdF9vZmZzID0gZWx0X3NpemUgKiBsb25nZXN0X3RvX2lu dCAoaW5kZXggLSBsb3dlcmJvdW5kKTsKKysgIGVsdF9vZmZzID0gbG9uZ2VzdF90b19pbnQgKGlu ZGV4IC0gbG93ZXJib3VuZCk7CiArCisgICBpZiAoZWx0X3N0cmlkZSA+IDApCisgICAgIGVsdF9v ZmZzICo9IGVsdF9zdHJpZGU7CisgICBlbHNlIGlmIChlbHRfc3RyaWRlIDwgMCkKK0BAIC0yMTIs MTQgKzIxOSw3IEBAIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICoKKyAK ICAgIGlmIChpbmRleCA8IGxvd2VyYm91bmQgfHwgKCFUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lT X1VOREVGSU5FRCAoYXJyYXlfdHlwZSkKICAJCQkgICAgICYmIGVsdF9vZmZzID49IFRZUEVfTEVO R1RIIChhcnJheV90eXBlKSkpCiAtICAgIHsKCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTA0 b2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMDRvZjIzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBmMDAzYWIzLi4wMDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtMDRvZjIz LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjE0ICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSCAw NC8yM10gdmxhOiBtYWtlIGR5bmFtaWMgZm9ydHJhbiBhcnJheXMgZnVuY3Rpb25hbC4KLU1lc3Nh Z2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtNS1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRl bC5jb20+Ci0KLVRoaXMgcGF0Y2ggZW5hYmxlcyBHREIgdG8gcHJpbnQgdGhlIHZhbHVlIG9mIGEg ZHluYW1pYwotYXJyYXkgKFZMQSkgaWYgYWxsb2NhdGVkL2Fzc29jaWF0ZWQgaW4gZm9ydHJhbi4g SWYgbm90IHRoZQotYWxsb2NhdGlvbiBzdGF0dXMgd2lsbCBiZSBwcmludGVkIHRvIHRoZSBjb21t YW5kIGxpbmUuCi0KLShnZGIpIHAgdmxhX25vdF9hbGxvY2F0ZWQKLSQxID0gPG5vdCBhbGxvY2F0 ZWQ+Ci0KLShnZGIpIHAgdmxhX2FsbG9jYXRlZAotJDEgPSAoMSwgMiwgMykKLQotKGdkYikgcCB2 bGFfbm90X2Fzc29jaWF0ZWQKLSQxID0gPG5vdCBhc3NvY2lhdGVkPgotCi0oZ2RiKSBwIHZsYV9h c3NvY2lhdGVkCi0kMSA9ICgzLCAyLCAxKQotCi1UaGUgcGF0Y2ggY292ZXJzIHZhcmlvdXMgbG9j YXRpb25zIHdoZXJlIHRoZSBhbGxvY2F0aW9uLwotYXNzb2NpYXRpb24gc3RhdHVzIG1ha2VzIHNl bnNlIHRvIHByaW50LgotCi0yMDE0LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGlu dGVsLmNvbT4KLSAgICAgICAgICAgIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50 ZWwuY29tPgotCi0JKiBkd2FyZjJsb2MuYyAoZHdhcmYyX2FkZHJlc3NfZGF0YV92YWxpZCk6IE5l dwotCWZ1bmN0aW9uLgotCSogZHdhcmYybG9jLmggKGR3YXJmMl9hZGRyZXNzX2RhdGFfdmFsaWQp OiBOZXcKLQlmdW5jdGlvbi4KLQkqIGYtdHlwZXByaW50LmMgKGZfcHJpbnRfdHlwZSk6IFByaW50 IGFsbG9jYXRpb24vCi0JYXNzb2NpYXRpb24gc3RhdHVzLgotCShmX3R5cGVfcHJpbnRfdmFyc3Bl Y19zdWZmaXgpOiBQcmludCBhbGxvY2F0aW9uLwotCWFzc29jaWF0aW9uIHN0YXR1cyBmb3IgJi1v cGVyYXRvciB1c2FnZXMuCi0JKiBnZGJ0eXBlcy5jIChjcmVhdGVfYXJyYXlfdHlwZV93aXRoX3N0 cmlkZSk6IEFkZAotCXF1ZXJ5IGZvciB2YWxpZCBkYXRhIGxvY2F0aW9uLgotCShpc19keW5hbWlj X3R5cGUpOiBFeHRlbmQgZHluYW1pYyB0eXBlIGRldGVjdGlvbgotCXdpdGggYWxsb2NhdGVkL2Fz c29jaWF0ZWQuIEFkZCB0eXBlIGRldGVjdGlvbiBmb3IKLQlmaWVsZHMuCi0JKHJlc29sdmVfZHlu YW1pY19yYW5nZSk6IENvcHkgdHlwZSBiZWZvcmUgcmVzb2x2aW5nCi0JaXQgYXMgZHluYW1pYyBh dHRyaWJ1dGVzIG5lZWQgdG8gYmUgcHJlc2VydmVkLgotCShyZXNvbHZlX2R5bmFtaWNfYXJyYXkp OiBDb3B5IHR5cGUgYmVmb3JlIHJlc29sdmluZwotCWl0IGFzIGR5bmFtaWMgYXR0cmlidXRlcyBu ZWVkIHRvIGJlIHByZXNlcnZlZC4gQWRkCi0JcmVzb2x2aW5nIG9mIGFsbG9jYXRlZC9hc3NvY2lh dGVkIGF0dHJpYnV0ZXMuCi0JKHJlc29sdmVfZHluYW1pY190eXBlKTogQWRkIGNhbGwgdG8gbmVz dGVkCi0JdHlwZSByZXNvbHZpbmcuCi0JKGNvcHlfdHlwZV9yZWN1cnNpdmUpOiBBZGQgYWxsb2Nh dGVkL2Fzc29jaWF0ZWQKLQlhdHRyaWJ1dGVzIHRvIGJlIGNvcGllZC4KLQkoY29weV90eXBlKTog Q29weSBhbGxvY2F0ZWQvYXNzb2NpYXRlZC9kYXRhX2xvY2F0aW9uCi0JYXMgd2VsbCBhcyB0aGUg ZmllbGRzIHN0cnVjdHVyZSBpZiBhdmFpbGFibGUuCi0JKHJlc29sdmVfZHluYW1pY19jb21wb3Vu ZCk6IE5ldyBmdW5jdGlvbi4KLQkqIHZhbGFyaXRoLmMgKHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1 ZSk6IFByaW50IGFsbG9jYXRlZC8KLQlhc3NvY2lhdGVkIHN0YXR1cyB3aGVuIGluZGV4aW5nIGEg VkxBLgotCSogdmFscHJpbnQuYyAodmFscHJpbnRfY2hlY2tfdmFsaWRpdHkpOiBQcmludCBhbGxv Y2F0ZWQvCi0JYXNzb2NpYXRlZCBzdGF0dXMuCi0JKHZhbF9wcmludF9ub3RfYWxsb2NhdGVkKTog TmV3IGZ1bmN0aW9uLgotCSh2YWxfcHJpbnRfbm90X2Fzc29jaWF0ZWQpOiBOZXcgZnVuY3Rpb24u Ci0JKiB2YWxwcmludC5oICh2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCk6IE5ldyBmdW5jdGlvbi4K LQkodmFsX3ByaW50X25vdF9hc3NvY2lhdGVkKTogTmV3IGZ1bmN0aW9uLgotCSogdmFsdWUuYyAo c2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbik6IEFkanVzdCB0aGUgdmFsdWUKLQlhZGRyZXNz IGZvciBzaW5nbGUgdmFsdWUgcHJpbnRzLgotCi1DaGFuZ2UtSWQ6IElkZmI0NGM4YTZiMzgwMDhm OGUyYzg0Y2IwZmRiMTM3MjllYzE2MGY0Ci0KLVNpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxr ZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0tLS0KLSBnZGIvZHdhcmYybG9jLmMgICB8ICAgMTQgKysr KysKLSBnZGIvZHdhcmYybG9jLmggICB8ICAgIDYgKysKLSBnZGIvZi10eXBlcHJpbnQuYyB8ICAg NjIgKysrKysrKysrKysrKy0tLS0tLS0KLSBnZGIvZ2RidHlwZXMuYyAgICB8ICAxNjUgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSBnZGIvdmFs YXJpdGguYyAgICB8ICAgIDkgKystCi0gZ2RiL3ZhbHByaW50LmMgICAgfCAgIDQwICsrKysrKysr KysrKysKLSBnZGIvdmFscHJpbnQuaCAgICB8ICAgIDQgKysKLSBnZGIvdmFsdWUuYyAgICAgICB8 ICAgMjAgKysrKysrKwotIDggZmlsZXMgY2hhbmdlZCwgMjkyIGluc2VydGlvbnMoKyksIDI4IGRl bGV0aW9ucygtKQotCi1JbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmMK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMmxvYy5j CTIwMTQtMDYtMTQgMTU6MTI6NDMuNzk3OTk2ODg1ICswMjAwCi0rKysgZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvZHdhcmYybG9jLmMJMjAxNC0wNi0xNCAxNToxMjo0NS40ODU5OTgwNDkgKzAyMDAK LUBAIC0yNTY5LDYgKzI1NjksMjAgQEAgZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBz dHJ1Y3QgZAotICAgcmV0dXJuIDA7Ci0gfQotIAotKy8qIFNlZSBkd2FyZjJsb2MuaC4gICovCi0r Ci0raW50Ci0rZHdhcmYyX2FkZHJlc3NfZGF0YV92YWxpZCAoY29uc3Qgc3RydWN0IHR5cGUgKnR5 cGUpCi0rewotKyAgaWYgKFRZUEVfTk9UX0FTU09DSUFURUQgKHR5cGUpKQotKyAgICByZXR1cm4g MDsKLSsKLSsgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUpKQotKyAgICByZXR1cm4gMDsK LSsKLSsgIHJldHVybiAxOwotK30KLSsKLSAMCi0gLyogSGVscGVyIGZ1bmN0aW9ucyBhbmQgYmF0 b24gZm9yIGR3YXJmMl9sb2NfZGVzY19uZWVkc19mcmFtZS4gICovCi0gCi1JbmRleDogZ2RiLTcu Ny45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43Ljkw LjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMmxvYy5oCTIwMTQtMDYtMTQgMTU6MTI6NDMuNzk3OTk2 ODg1ICswMjAwCi0rKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmgJMjAxNC0w Ni0xNCAxNToxMjo0NS40ODY5OTgwNjQgKzAyMDAKLUBAIC0xMDIsNiArMTAyLDEyIEBAIGludCBk d2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKGNvbnN0IHN0cnUKLSBDT1JFX0FERFIgZHdhcmYyX3Jl YWRfYWRkcl9pbmRleCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAotIAkJCQkg IHVuc2lnbmVkIGludCBhZGRyX2luZGV4KTsKLSAKLSsvKiBDaGVja3MgaWYgYSBkd2FyZiBsb2Nh dGlvbiBkZWZpbml0aW9uIGlzIHZhbGlkLgotKyAgIFJldHVybnMgMSBpZiB2YWxpZDsgMCBvdGhl cndpc2UuICAqLwotKwotK2V4dGVybiBpbnQgZHdhcmYyX2FkZHJlc3NfZGF0YV92YWxpZCAoY29u c3Qgc3RydWN0IHR5cGUgKnR5cGUpOwotKwotKwotIC8qIFRoZSBzeW1ib2wgbG9jYXRpb24gYmF0 b24gdHlwZXMgdXNlZCBieSB0aGUgRFdBUkYtMiByZWFkZXIgKGkuZS4KLSAgICBTWU1CT0xfTE9D QVRJT05fQkFUT04gZm9yIGEgTE9DX0NPTVBVVEVEIHN5bWJvbCkuICAic3RydWN0Ci0gICAgZHdh cmYyX2xvY2V4cHJfYmF0b24iIGlzIGZvciBhIHN5bWJvbCB3aXRoIGEgc2luZ2xlIGxvY2F0aW9u Ci1JbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZi10eXBlcHJpbnQuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZi10eXBlcHJpbnQuYwkyMDE0LTA2 LTE0IDE1OjEyOjQzLjc5ODk5Njg4NiArMDIwMAotKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L2YtdHlwZXByaW50LmMJMjAxNC0wNi0xNCAxNToxMjo0NS40ODY5OTgwNjQgKzAyMDAKLUBAIC0z MCw2ICszMCw3IEBACi0gI2luY2x1ZGUgImdkYmNvcmUuaCIKLSAjaW5jbHVkZSAidGFyZ2V0Lmgi Ci0gI2luY2x1ZGUgImYtbGFuZy5oIgotKyNpbmNsdWRlICJ2YWxwcmludC5oIgotIAotICNpbmNs dWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLUBAIC01Niw2ICs1NywxNyBAQCBm X3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBjCi0gICBlbnVtIHR5cGVfY29k ZSBjb2RlOwotICAgaW50IGRlbWFuZ2xlZF9hcmdzOwotIAotKyAgaWYgKFRZUEVfTk9UX0FTU09D SUFURUQgKHR5cGUpKQotKyAgICB7Ci0rICAgICAgdmFsX3ByaW50X25vdF9hc3NvY2lhdGVkIChz dHJlYW0pOwotKyAgICAgIHJldHVybjsKLSsgICAgfQotKyAgaWYgKFRZUEVfTk9UX0FMTE9DQVRF RCAodHlwZSkpCi0rICAgIHsKLSsgICAgICB2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCAoc3RyZWFt KTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSAgIGZfdHlwZV9wcmludF9iYXNlICh0eXBl LCBzdHJlYW0sIHNob3csIGxldmVsKTsKLSAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOwotICAg aWYgKCh2YXJzdHJpbmcgIT0gTlVMTCAmJiAqdmFyc3RyaW5nICE9ICdcMCcpCi1AQCAtMTcwLDI4 ICsxODIsMzYgQEAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZQotICAg ICAgIGlmIChhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwgPT0gMSkKLSAJZnByaW50Zl9maWx0ZXJl ZCAoc3RyZWFtLCAiKCIpOwotIAotLSAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpKSA9PSBUWVBFX0NPREVfQVJSQVkpCi0tCWZfdHlwZV9wcmludF92YXJzcGVjX3N1 ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCwgMCwKLS0JCQkJICAg ICBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwpOwotLQotLSAgICAgIGxvd2VyX2JvdW5kID0gZjc3 X2dldF9sb3dlcmJvdW5kICh0eXBlKTsKLS0gICAgICBpZiAobG93ZXJfYm91bmQgIT0gMSkJLyog Tm90IHRoZSBkZWZhdWx0LiAgKi8KLS0JZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQ6Iiwg bG93ZXJfYm91bmQpOwotLQotLSAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0LCBpZiB3ZSBoYXZlIGFu IGFzc3VtZWQgc2l6ZSBhcnJheSwgd2UKLS0gICAgICAgICBwcmludCBvdXQgYSB3YXJuaW5nIGFu ZCBwcmludCB0aGUgdXBwZXJib3VuZCBhcyAnKicuICAqLwotLQotLSAgICAgIGlmIChUWVBFX0FS UkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAodHlwZSkpCi0tCWZwcmludGZfZmlsdGVyZWQg KHN0cmVhbSwgIioiKTsKLSsgICAgICBpZiAoVFlQRV9OT1RfQVNTT0NJQVRFRCAodHlwZSkpCi0r ICAgICAgICB2YWxfcHJpbnRfbm90X2Fzc29jaWF0ZWQgKHN0cmVhbSk7Ci0rICAgICAgZWxzZSBp ZiAoVFlQRV9OT1RfQUxMT0NBVEVEICh0eXBlKSkKLSsgICAgICAgIHZhbF9wcmludF9ub3RfYWxs b2NhdGVkIChzdHJlYW0pOwotICAgICAgIGVsc2UKLS0JewotLQkgIHVwcGVyX2JvdW5kID0gZjc3 X2dldF91cHBlcmJvdW5kICh0eXBlKTsKLS0JICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIl ZCIsIHVwcGVyX2JvdW5kKTsKLS0JfQotLQotLSAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpKSAhPSBUWVBFX0NPREVfQVJSQVkpCi0tCWZfdHlwZV9wcmludF92YXJz cGVjX3N1ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCwgMCwKLS0J CQkJICAgICBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwpOwotKyAgICAgICAgewotKwotKyAgICAg ICAgICBpZiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgPT0gVFlQRV9DT0RF X0FSUkFZKQotKyAgICAgICAgICAgIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9U QVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCwgMCwKLSsgICAgICAgICAgICAgICAgIGFy cmF5cHJpbnRfcmVjdXJzZV9sZXZlbCk7Ci0rCi0rICAgICAgICAgIGxvd2VyX2JvdW5kID0gZjc3 X2dldF9sb3dlcmJvdW5kICh0eXBlKTsKLSsgICAgICAgICAgaWYgKGxvd2VyX2JvdW5kICE9IDEp CS8qIE5vdCB0aGUgZGVmYXVsdC4gICovCi0rICAgICAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiJWQ6IiwgbG93ZXJfYm91bmQpOwotKwotKyAgICAgICAgICAvKiBNYWtlIHN1cmUg dGhhdCwgaWYgd2UgaGF2ZSBhbiBhc3N1bWVkIHNpemUgYXJyYXksIHdlCi0rICAgICAgICAgICAg IHByaW50IG91dCBhIHdhcm5pbmcgYW5kIHByaW50IHRoZSB1cHBlcmJvdW5kIGFzICcqJy4gICov Ci0rCi0rICAgICAgICAgIGlmIChUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAo dHlwZSkpCi0rICAgICAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKiIpOwotKyAg ICAgICAgICBlbHNlCi0rICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgdXBwZXJfYm91bmQg PSBmNzdfZ2V0X3VwcGVyYm91bmQgKHR5cGUpOwotKyAgICAgICAgICAgICAgZnByaW50Zl9maWx0 ZXJlZCAoc3RyZWFtLCAiJWQiLCB1cHBlcl9ib3VuZCk7Ci0rICAgICAgICAgICAgfQotKwotKyAg ICAgICAgICBpZiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgIT0gVFlQRV9D T0RFX0FSUkFZKQotKyAgICAgICAgICAgIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCwgMCwKLSsgICAgICAgICAgICAgICAg IGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCk7Ci0rICAgICAgfQotICAgICAgIGlmIChhcnJheXBy aW50X3JlY3Vyc2VfbGV2ZWwgPT0gMSkKLSAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIp OwotICAgICAgIGVsc2UKLUluZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9nZGJ0eXBlcy5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9nZGJ0eXBlcy5j CTIwMTQtMDYtMTQgMTU6MTI6NDMuODAxOTk2ODg4ICswMjAwCi0rKysgZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvZ2RidHlwZXMuYwkyMDE0LTA2LTE0IDE1OjE0OjM0LjgzNzEwMjM2OSArMDIwMAot QEAgLTEwMDMsNyArMTAwMyw4IEBAIGNyZWF0ZV9hcnJheV90eXBlX3dpdGhfc3RyaWRlIChzdHJ1 Y3QgdHkKLSAKLSAgIFRZUEVfQ09ERSAocmVzdWx0X3R5cGUpID0gVFlQRV9DT0RFX0FSUkFZOwot ICAgVFlQRV9UQVJHRVRfVFlQRSAocmVzdWx0X3R5cGUpID0gZWxlbWVudF90eXBlOwotLSAgaWYg KGhhc19zdGF0aWNfcmFuZ2UgKFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSkpKQotKyAgaWYg KGhhc19zdGF0aWNfcmFuZ2UgKFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSkpCi0rICAgICAg JiYgZHdhcmYyX2FkZHJlc3NfZGF0YV92YWxpZCAocmVzdWx0X3R5cGUpKQotICAgICB7Ci0gICAg ICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7Ci0gCi1AQCAtMTYxNiwxMSArMTYxNywz MCBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCi0gaW50Ci0gaXNfZHluYW1pY190eXBl IChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSB7Ci0rICBpbnQgaW5kZXg7Ci0rCi0rICBpZiAoIXR5cGUp Ci0rICAgIHJldHVybiAwOwotKwotICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwotIAot ICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRikKLSAgICAgdHlwZSA9IGNo ZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLSAKLSsgIGlmIChUWVBFX0FT U09DSUFURURfUFJPUCAodHlwZSkpCi0rICAgIHJldHVybiAxOwotKwotKyAgaWYgKFRZUEVfQUxM T0NBVEVEX1BST1AgKHR5cGUpKQotKyAgICByZXR1cm4gMTsKLSsKLSsgIC8qIFNjYW4gZmllbGQg dHlwZXMgaW4gdGhlIEZvcnRyYW4gY2FzZSBmb3IgbmVzdGVkIGR5bmFtaWMgdHlwZXMuCi0rICAg ICBUaGlzIHdpbGwgYmUgZG9uZSBvbmx5IGZvciBGb3J0cmFuIGFzIGluIHRoZSBDKysgY2FzZSBh biBlbmRsZXNzIHJlY3Vyc2lvbgotKyAgICAgY2FuIG9jY3VyIGluIHRoZSBhcmVhIG9mIGNsYXNz ZXMuICAqLwotKyAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlID09IGxhbmd1YWdl X2ZvcnRyYW4pCi0rICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IFRZUEVfTkZJRUxEUyAodHlw ZSk7IGluZGV4KyspCi0rICAgICAgaWYgKGlzX2R5bmFtaWNfdHlwZSAoVFlQRV9GSUVMRF9UWVBF ICh0eXBlLCBpbmRleCkpKQotKyAgICAgICAgcmV0dXJuIDE7Ci0rCi0gICBzd2l0Y2ggKFRZUEVf Q09ERSAodHlwZSkpCi0gICAgIHsKLSAgICAgY2FzZSBUWVBFX0NPREVfUkFOR0U6Ci1AQCAtMTY2 OSw2ICsxNjg5LDcgQEAgcmVzb2x2ZV9keW5hbWljX3JhbmdlIChzdHJ1Y3QgdHlwZSAqZHluXwot ICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKLSAgIGNvbnN0IHN0cnVjdCBkd2Fy ZjJfbG9jZXhwcl9iYXRvbiAqYmF0b247Ci0gICBzdHJ1Y3QgZHluYW1pY19wcm9wIGxvd19ib3Vu ZCwgaGlnaF9ib3VuZDsKLSsgIHN0cnVjdCB0eXBlICpyYW5nZV9jb3B5ID0gY29weV90eXBlIChk eW5fcmFuZ2VfdHlwZSk7Ci0gCi0gICBnZGJfYXNzZXJ0IChUWVBFX0NPREUgKGR5bl9yYW5nZV90 eXBlKSA9PSBUWVBFX0NPREVfUkFOR0UpOwotIAotQEAgLTE3MDAsOCArMTcyMSw4IEBAIHJlc29s dmVfZHluYW1pY19yYW5nZSAoc3RydWN0IHR5cGUgKmR5bl8KLSAgICAgICBoaWdoX2JvdW5kLmRh dGEuY29uc3RfdmFsID0gMDsKLSAgICAgfQotIAotLSAgc3RhdGljX3JhbmdlX3R5cGUgPSBjcmVh dGVfcmFuZ2VfdHlwZSAoY29weV90eXBlIChkeW5fcmFuZ2VfdHlwZSksCi0tCQkJCQkgVFlQRV9U QVJHRVRfVFlQRSAoZHluX3JhbmdlX3R5cGUpLAotKyAgc3RhdGljX3JhbmdlX3R5cGUgPSBjcmVh dGVfcmFuZ2VfdHlwZSAocmFuZ2VfY29weSwKLSsJCQkJCSBUWVBFX1RBUkdFVF9UWVBFIChyYW5n ZV9jb3B5KSwKLSAJCQkJCSAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCk7Ci0gICBUWVBFX1JBTkdF X0RBVEEgKHN0YXRpY19yYW5nZV90eXBlKS0+ZmxhZ19ib3VuZF9ldmFsdWF0ZWQgPSAxOwotICAg cmV0dXJuIHN0YXRpY19yYW5nZV90eXBlOwotQEAgLTE3MTgsNiArMTczOSw4IEBAIHJlc29sdmVf ZHluYW1pY19hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUKLSAgIHN0cnVjdCB0eXBlICplbHRfdHlw ZTsKLSAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwotICAgc3RydWN0IHR5cGUgKmFyeV9kaW07 Ci0rICBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wOwotKyAgc3RydWN0IHR5cGUgKmNvcHkgPSBj b3B5X3R5cGUgKHR5cGUpOwotIAotICAgZ2RiX2Fzc2VydCAoVFlQRV9DT0RFICh0eXBlKSA9PSBU WVBFX0NPREVfQVJSQVkpOwotIAotQEAgLTE3MjUsMTggKzE3NDgsOTMgQEAgcmVzb2x2ZV9keW5h bWljX2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlwZQotICAgcmFuZ2VfdHlwZSA9IGNoZWNrX3R5cGVk ZWYgKFRZUEVfSU5ERVhfVFlQRSAoZWx0X3R5cGUpKTsKLSAgIHJhbmdlX3R5cGUgPSByZXNvbHZl X2R5bmFtaWNfcmFuZ2UgKHJhbmdlX3R5cGUsIGFkZHIpOwotIAotKyAgcHJvcCA9IFRZUEVfQUxM T0NBVEVEX1BST1AgKHR5cGUpOwotKyAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJv cCwgYWRkciwgJnZhbHVlKSkKLSsgICAgewotKyAgICAgIFRZUEVfQUxMT0NBVEVEX1BST1AgKGNv cHkpLT5raW5kID0gUFJPUF9DT05TVDsKLSsgICAgICBUWVBFX0FMTE9DQVRFRF9QUk9QIChjb3B5 KS0+ZGF0YS5jb25zdF92YWwgPSB2YWx1ZTsKLSsgICAgfQotKwotKyAgcHJvcCA9IFRZUEVfQVNT T0NJQVRFRF9QUk9QICh0eXBlKTsKLSsgIGlmIChkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKHBy b3AsIGFkZHIsICZ2YWx1ZSkpCi0rICAgIHsKLSsgICAgICBUWVBFX0FTU09DSUFURURfUFJPUCAo Y29weSktPmtpbmQgPSBQUk9QX0NPTlNUOwotKyAgICAgIFRZUEVfQVNTT0NJQVRFRF9QUk9QIChj b3B5KS0+ZGF0YS5jb25zdF92YWwgPSB2YWx1ZTsKLSsgICAgfQotKwotICAgYXJ5X2RpbSA9IGNo ZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGVsdF90eXBlKSk7Ci0gCi0gICBpZiAoYXJ5 X2RpbSAhPSBOVUxMICYmIFRZUEVfQ09ERSAoYXJ5X2RpbSkgPT0gVFlQRV9DT0RFX0FSUkFZKQot LSAgICBlbHRfdHlwZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSksIGFkZHIpOwotKyAgICBlbHRfdHlwZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQ RV9UQVJHRVRfVFlQRSAoY29weSksIGFkZHIpOwotICAgZWxzZQotICAgICBlbHRfdHlwZSA9IFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpOwotIAotLSAgcmV0dXJuIGNyZWF0ZV9hcnJheV90eXBlIChj b3B5X3R5cGUgKHR5cGUpLAotKyAgcmV0dXJuIGNyZWF0ZV9hcnJheV90eXBlIChjb3B5LAotIAkJ CSAgICBlbHRfdHlwZSwKLSAJCQkgICAgcmFuZ2VfdHlwZSk7Ci0gfQotIAotKy8qIFJlc29sdmVz IGR5bmFtaWMgY29tcG91bmQgdHlwZXMsIGUuZy4gU1RSVUNUUydzIHRvIHN0YXRpYyBvbmVzLgot KyAgIEFERFJFU1MgaXMgbmVlZGVkIHRvIHJlc29sdmUgdGhlIGNvbXBvdW5kIHR5cGUgZGF0YSBs b2NhdGlvbi4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB0eXBlICoKLStyZXNvbHZlX2R5bmFtaWNf Y29tcG91bmQgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcikKLSt7Ci0rICBzdHJ1 Y3QgdHlwZSAqY3VyX3R5cGUsICpwcmV2X3R5cGUsICpjb3B5OwotKyAgaW50IGluZGV4LCBkZXB0 aCA9IDA7Ci0rCi0rICBjdXJfdHlwZSA9IHR5cGU7Ci0rICBwcmV2X3R5cGUgPSBjdXJfdHlwZTsK LSsgIHdoaWxlIChjdXJfdHlwZSkKLSsgICAgewotKyAgICAgIHN3aXRjaCAoVFlQRV9DT0RFIChj dXJfdHlwZSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoK LSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICBjb3B5ID0gY29weV90eXBlIChjdXJfdHlw ZSk7Ci0rICAgICAgICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBUWVBFX05GSUVMRFMg KGNvcHkpOyBpbmRleCsrKQotKyAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAg c3RydWN0IHR5cGUgKmluZGV4X3R5cGUgPSBUWVBFX0ZJRUxEX1RZUEUgKGNvcHksIGluZGV4KTsK LSsKLSsgICAgICAgICAgICAgICAgICBpZiAoaW5kZXhfdHlwZSA9PSBOVUxMKQotKyAgICAgICAg ICAgICAgICAgICAgY29udGludWU7Ci0rCi0rICAgICAgICAgICAgICAgICAgaWYgKFRZUEVfQ09E RSAoaW5kZXhfdHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCi0rICAgICAgICAgICAgICAgICAgICAg IHx8IFRZUEVfQ09ERSAoaW5kZXhfdHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVDVCkKLSsgICAgICAg ICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgICAgaWYgKFRZUEVfQ09ERSAoaW5k ZXhfdHlwZSkgIT0gVFlQRV9DT0RFX1JBTkdFKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGFk ZHIgKz0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUWVBFX0ZJRUxEX0JJVFBP UyAoY29weSwgaW5kZXgpIC8gOCk7Ci0rCi0rICAgICAgICAgICAgICAgICAgICAgIFRZUEVfRklF TERfVFlQRSAoY29weSwgaW5kZXgpID0KLSsgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZl X2R5bmFtaWNfdHlwZSAoVFlQRV9GSUVMRF9UWVBFIChjb3B5LCBpbmRleCksCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYWRkcik7Ci0rICAgICAgICAgICAgICAgICAgICB9Ci0rICAg ICAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICAgIC8qIElmIGEgc3RydWN0IHR5cGUgd2ls bCBiZSByZXNvbHZlZCBhcyB0aGUgZmlyc3QgdHlwZSwgd2UgbmVlZAotKyAgICAgICAgICAgICAg ICAgdG8gYXNzaWduIGl0IGJhY2sgdGhlIHJlc29sdmVkX3R5cGUuIEluIHRoZSBvdGhlciBjYXNl IGl0IGNhbgotKyAgICAgICAgICAgICAgICAgYmUgdGhhdCB3ZSBoYXZlIGEgc3RydWN0LCB3aGlj aCBpcyBuZXN0ZWQgaW4gYW5vdGhlciB0eXBlLgotKyAgICAgICAgICAgICAgICAgVGhlcmVmb3Jl IHdlIG5lZWQgdG8gcHJlc2VydmUgdGhlIHByZXZpb3VzIHR5cGUsIHRvIGFzc2lnbiB0aGUKLSsg ICAgICAgICAgICAgICAgIG5ldyByZXNvbHZlZCB0eXBlIGFzIHRoZSBwcmV2aW91cycgdGFyZ2V0 IHR5cGUuICAqLwotKyAgICAgICAgICAgICAgaWYgKGRlcHRoID09IDApCi0rICAgICAgICAgICAg ICAgIHR5cGUgPSBjb3B5OwotKyAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICBU WVBFX1RBUkdFVF9UWVBFIChwcmV2X3R5cGUpID0gY29weTsKLSsgICAgICAgICAgICB9Ci0rICAg ICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKwotKyAgICAgIC8qIFN0b3JlIHRoZSBwcmV2aW91 cyB0eXBlLCBpbiBvcmRlciB0byBhc3NpZ24gcmVzb2x2ZWQgdHlwZXMgYmFjayB0bwotKyAgICAg ICAgdGhlIHJpZ2h0IHRhcmdldCB0eXBlLiAgKi8KLSsgICAgICBwcmV2X3R5cGUgPSBjdXJfdHlw ZTsKLSsgICAgICBjdXJfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGN1cl90eXBlKTsKLSsgICAg ICBkZXB0aCsrOwotKyAgICB9OwotKwotKyAgICByZXR1cm4gdHlwZTsKLSt9Ci0rCi0gLyogUmVz b2x2ZSBkeW5hbWljIGJvdW5kcyBvZiBtZW1iZXJzIG9mIHRoZSB1bmlvbiBUWVBFIHRvIHN0YXRp YwotICAgIGJvdW5kcy4gICovCi0gCi1AQCAtMTgzNiw3ICsxOTM0LDcgQEAgcmVzb2x2ZV9keW5h bWljX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLAotICAgc3RydWN0IHR5cGUgKnJlYWxfdHlwZSA9 IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwotICAgc3RydWN0IHR5cGUgKnJlc29sdmVkX3R5cGUgPSB0 eXBlOwotICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKLS0gIENPUkVfQUREUiB2 YWx1ZTsKLSsgIENPUkVfQUREUiB2YWx1ZSwgYWRqdXN0ZWRfYWRkcmVzcyA9IGFkZHI7Ci0gCi0g ICBpZiAoIWlzX2R5bmFtaWNfdHlwZSAocmVhbF90eXBlKSkKLSAgICAgcmV0dXJuIHR5cGU7Ci1A QCAtMTg4MiwxMiArMTk4MCwxNSBAQCByZXNvbHZlX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5cGUg KnR5cGUsCi0gICBwcm9wID0gVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKTsKLSAgIGlmIChkd2Fy ZjJfZXZhbHVhdGVfcHJvcGVydHkgKHByb3AsIGFkZHIsICZ2YWx1ZSkpCi0gICAgIHsKLSsgICAg ICBhZGp1c3RlZF9hZGRyZXNzID0gdmFsdWU7Ci0gICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0FE RFIgKHR5cGUpID0gdmFsdWU7Ci0gICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5cGUp ID0gUFJPUF9DT05TVDsKLSAgICAgfQotICAgZWxzZQotICAgICBUWVBFX0RBVEFfTE9DQVRJT04g KHR5cGUpID0gTlVMTDsKLSAKLSsgIHJlc29sdmVkX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfY29t cG91bmQgKHR5cGUsIGFkanVzdGVkX2FkZHJlc3MpOwotKwotICAgcmV0dXJuIHJlc29sdmVkX3R5 cGU7Ci0gfQotIAotQEAgLTQxMDQsNiArNDIwNSwyMCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqCi0gICAgICAgKlRZUEVfREFUQV9MT0NBVElPTiAobmV3X3R5cGUp ID0gKlRZUEVfREFUQV9MT0NBVElPTiAodHlwZSk7Ci0gICAgIH0KLSAKLSsgIC8qIENvcHkgYWxs b2NhdGVkIGluZm9ybWF0aW9uLiAgKi8KLSsgIGlmIChUWVBFX0FMTE9DQVRFRF9QUk9QICh0eXBl KSAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgVFlQRV9BTExPQ0FURURfUFJPUCAobmV3X3R5cGUp ID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZHluYW1pY19wcm9wKSk7Ci0rICAgICAgKlRZUEVf QUxMT0NBVEVEX1BST1AgKG5ld190eXBlKSA9ICpUWVBFX0FMTE9DQVRFRF9QUk9QICh0eXBlKTsK LSsgICAgfQotKwotKyAgLyogQ29weSBhc3NvY2lhdGVkIGluZm9ybWF0aW9uLiAgKi8KLSsgIGlm IChUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSkgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIFRZ UEVfQVNTT0NJQVRFRF9QUk9QIChuZXdfdHlwZSkgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBk eW5hbWljX3Byb3ApKTsKLSsgICAgICAqVFlQRV9BU1NPQ0lBVEVEX1BST1AgKG5ld190eXBlKSA9 ICpUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSk7Ci0rICAgIH0KLSsKLSAgIC8qIENvcHkgcG9p bnRlcnMgdG8gb3RoZXIgdHlwZXMuICAqLwotICAgaWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp KQotICAgICBUWVBFX1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSAKLUBAIC00MTUwLDYgKzQyNjUs NDQgQEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgIG1lbWNweSAoVFlQ RV9NQUlOX1RZUEUgKG5ld190eXBlKSwgVFlQRV9NQUlOX1RZUEUgKHR5cGUpLAotIAkgIHNpemVv ZiAoc3RydWN0IG1haW5fdHlwZSkpOwotIAotKyAgaWYgKFRZUEVfQUxMT0NBVEVEX1BST1AgKHR5 cGUpKQotKyAgICB7Ci0rICAgICAgVFlQRV9BTExPQ0FURURfUFJPUCAobmV3X3R5cGUpCi0rICAg ICAgICAgICAgICA9IE9CU1RBQ0tfWkFMTE9DICgmVFlQRV9PV05FUiAodHlwZSkub2JqZmlsZS0+ b2JqZmlsZV9vYnN0YWNrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGR5bmFtaWNfcHJvcCk7Ci0rICAgICAgbWVtY3B5IChUWVBFX0FMTE9DQVRFRF9QUk9QIChuZXdf dHlwZSksIFRZUEVfQUxMT0NBVEVEX1BST1AgKHR5cGUpLAotKyAgICAgICAgc2l6ZW9mIChzdHJ1 Y3QgZHluYW1pY19wcm9wKSk7Ci0rICAgIH0KLSsKLSsgIGlmIChUWVBFX0FTU09DSUFURURfUFJP UCAodHlwZSkpCi0rICAgIHsKLSsgICAgICBUWVBFX0FTU09DSUFURURfUFJPUCAobmV3X3R5cGUp Ci0rICAgICAgICAgICAgICA9IE9CU1RBQ0tfWkFMTE9DICgmVFlQRV9PV05FUiAodHlwZSkub2Jq ZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGR5bmFtaWNfcHJvcCk7Ci0rICAgICAgbWVtY3B5IChUWVBFX0FTU09DSUFURURfUFJP UCAobmV3X3R5cGUpLCBUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSksCi0rICAgICAgICBzaXpl b2YgKHN0cnVjdCBkeW5hbWljX3Byb3ApKTsKLSsgICAgfQotKwotKyAgaWYgKFRZUEVfREFUQV9M T0NBVElPTiAodHlwZSkpCi0rICAgIHsKLSsgICAgICBUWVBFX0RBVEFfTE9DQVRJT04gKG5ld190 eXBlKQotKyAgICAgICAgICAgICAgPSBPQlNUQUNLX1pBTExPQyAoJlRZUEVfT1dORVIgKHR5cGUp Lm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBkeW5hbWljX3Byb3ApOwotKyAgICAgIG1lbWNweSAoVFlQRV9EQVRBX0xPQ0FU SU9OIChuZXdfdHlwZSksIFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSksCi0rICAgICAgICBzaXpl b2YgKHN0cnVjdCBkeW5hbWljX3Byb3ApKTsKLSsgICAgfQotKwotKyAgaWYgKFRZUEVfTkZJRUxE UyAodHlwZSkpCi0rICAgIHsKLSsgICAgICBpbnQgbmZpZWxkcyA9IFRZUEVfTkZJRUxEUyAodHlw ZSk7Ci0rCi0rICAgICAgVFlQRV9GSUVMRFMgKG5ld190eXBlKQotKyAgICAgICAgICAgICAgPSBP QlNUQUNLX0NBTExPQyAoJlRZUEVfT1dORVIgKHR5cGUpLm9iamZpbGUtPm9iamZpbGVfb2JzdGFj aywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5maWVsZHMsIHN0cnVjdCBmaWVs ZCk7Ci0rICAgICAgbWVtY3B5IChUWVBFX0ZJRUxEUyAobmV3X3R5cGUpLCBUWVBFX0ZJRUxEUyAo dHlwZSksCi0rICAgICAgICBuZmllbGRzICogc2l6ZW9mIChzdHJ1Y3QgZmllbGQpKTsKLSsgICB9 Ci0rCi0gICByZXR1cm4gbmV3X3R5cGU7Ci0gfQotIAwKLUluZGV4OiBnZGItNy43LjkwLjIwMTQw NjEzL2dkYi92YWxhcml0aC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5v cmlnL2dkYi92YWxhcml0aC5jCTIwMTQtMDYtMTQgMTU6MTI6NDMuODAxOTk2ODg4ICswMjAwCi0r KysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsYXJpdGguYwkyMDE0LTA2LTE0IDE1OjEyOjQ1 LjQ4ODk5ODA3NSArMDIwMAotQEAgLTIwMCw3ICsyMDAsMTQgQEAgdmFsdWVfc3Vic2NyaXB0ZWRf cnZhbHVlIChzdHJ1Y3QgdmFsdWUgKgotIAotICAgaWYgKGluZGV4IDwgbG93ZXJib3VuZCB8fCAo IVRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEIChhcnJheV90eXBlKQotIAkJCSAg ICAgJiYgZWx0X29mZnMgPj0gVFlQRV9MRU5HVEggKGFycmF5X3R5cGUpKSkKLS0gICAgZXJyb3Ig KF8oIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiKSk7Ci0rICAgIHsKLSsgICAgICBpZiAoVFlQRV9O T1RfQVNTT0NJQVRFRCAoYXJyYXlfdHlwZSkpCi0rICAgICAgICBlcnJvciAoXygibm8gc3VjaCB2 ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhc3NvY2lhdGVkIikpOwotKyAgICAgIGVsc2UgaWYg KFRZUEVfTk9UX0FMTE9DQVRFRCAoYXJyYXlfdHlwZSkpCi0rICAgICAgICBlcnJvciAoXygibm8g c3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiKSk7Ci0rICAgICAgZWxz ZQotKyAgICAgICAgZXJyb3IgKF8oIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiKSk7Ci0rICAgIH0K LSAKLSAgIGlmIChWQUxVRV9MVkFMIChhcnJheSkgPT0gbHZhbF9tZW1vcnkgJiYgdmFsdWVfbGF6 eSAoYXJyYXkpKQotICAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAoZWx0X3R5cGUpOwotSW5k ZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbHByaW50LmMKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3ZhbHByaW50LmMJMjAxNC0wNi0xNCAxNToxMjo0 My44MDI5OTY4ODggKzAyMDAKLSsrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi92YWxwcmludC5j CTIwMTQtMDYtMTQgMTU6MTI6NDUuNDg4OTk4MDc1ICswMjAwCi1AQCAtMzA3LDYgKzMwNywxOCBA QCB2YWxwcmludF9jaGVja192YWxpZGl0eSAoc3RydWN0IHVpX2ZpbGUKLSB7Ci0gICBDSEVDS19U WVBFREVGICh0eXBlKTsKLSAKLSsgIGlmIChUWVBFX05PVF9BU1NPQ0lBVEVEICh0eXBlKSkKLSsg ICAgewotKyAgICAgIHZhbF9wcmludF9ub3RfYXNzb2NpYXRlZCAoc3RyZWFtKTsKLSsgICAgICBy ZXR1cm4gMDsKLSsgICAgfQotKwotKyAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAodHlwZSkpCi0r ICAgIHsKLSsgICAgICB2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCAoc3RyZWFtKTsKLSsgICAgICBy ZXR1cm4gMDsKLSsgICAgfQotKwotICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RF X1VOSU9OCi0gICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfU1RSVUNUCi0g ICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfQVJSQVkpCi1AQCAtMzYyLDYg KzM3NCwxOCBAQCB2YWxfcHJpbnRfaW52YWxpZF9hZGRyZXNzIChzdHJ1Y3QgdWlfZmlsCi0gICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sIF8oIjxpbnZhbGlkIGFkZHJlc3M+IikpOwotIH0KLSAK LSt2b2lkCi0rdmFsX3ByaW50X25vdF9hbGxvY2F0ZWQgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0p Ci0rewotKyAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBfKCI8bm90IGFsbG9jYXRlZD4iKSk7 Ci0rfQotKwotK3ZvaWQKLSt2YWxfcHJpbnRfbm90X2Fzc29jaWF0ZWQgKHN0cnVjdCB1aV9maWxl ICpzdHJlYW0pCi0rewotKyAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBfKCI8bm90IGFzc29j aWF0ZWQ+IikpOwotK30KLSsKLSAvKiBBIGdlbmVyaWMgdmFsX3ByaW50IHRoYXQgaXMgc3VpdGFi bGUgZm9yIHVzZSBieSBsYW5ndWFnZQotICAgIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgbGFfdmFs X3ByaW50IG1ldGhvZC4gIFRoaXMgZnVuY3Rpb24gY2FuCi0gICAgaGFuZGxlIG1vc3QgdHlwZSBj b2RlcywgdGhvdWdoIG5vdCBhbGwsIG5vdGFibHkgZXhjZXB0aW9uCi1AQCAtODAzLDEyICs4Mjcs MTYgQEAgc3RhdGljIGludAotIHZhbHVlX2NoZWNrX3ByaW50YWJsZSAoc3RydWN0IHZhbHVlICp2 YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCi0gCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCi0gewotKyAgY29uc3Qgc3RydWN0IHR5cGUgKnR5cGU7 Ci0rCi0gICBpZiAodmFsID09IDApCi0gICAgIHsKLSAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sIF8oIjxhZGRyZXNzIG9mIHZhbHVlIHVua25vd24+IikpOwotICAgICAgIHJldHVybiAw OwotICAgICB9Ci0gCi0rICB0eXBlID0gdmFsdWVfdHlwZSAodmFsKTsKLSsKLSAgIGlmICh2YWx1 ZV9lbnRpcmVseV9vcHRpbWl6ZWRfb3V0ICh2YWwpKQotICAgICB7Ci0gICAgICAgaWYgKG9wdGlv bnMtPnN1bW1hcnkgJiYgIXZhbF9wcmludF9zY2FsYXJfdHlwZV9wICh2YWx1ZV90eXBlICh2YWwp KSkKLUBAIC04MzQsNiArODYyLDE4IEBAIHZhbHVlX2NoZWNrX3ByaW50YWJsZSAoc3RydWN0IHZh bHVlICp2YWwKLSAgICAgICByZXR1cm4gMDsKLSAgICAgfQotIAotKyAgaWYgKFRZUEVfTk9UX0FT U09DSUFURUQgKHR5cGUpKQotKyAgICB7Ci0rICAgICAgdmFsX3ByaW50X25vdF9hc3NvY2lhdGVk IChzdHJlYW0pOwotKyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICBpZiAoVFlQRV9OT1Rf QUxMT0NBVEVEICh0eXBlKSkKLSsgICAgewotKyAgICAgIHZhbF9wcmludF9ub3RfYWxsb2NhdGVk IChzdHJlYW0pOwotKyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0gICByZXR1cm4gMTsKLSB9 Ci0gCi1JbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFscHJpbnQuaAotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdmFscHJpbnQuaAkyMDE0LTA2LTE0 IDE1OjEyOjQzLjgwMzk5Njg4OSArMDIwMAotKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Zh bHByaW50LmgJMjAxNC0wNi0xNCAxNToxMjo0NS40ODk5OTgwNzMgKzAyMDAKLUBAIC0yMTcsNCAr MjE3LDggQEAgZXh0ZXJuIHZvaWQgb3V0cHV0X2NvbW1hbmRfY29uc3QgKGNvbnN0Ci0gCi0gZXh0 ZXJuIGludCB2YWxfcHJpbnRfc2NhbGFyX3R5cGVfcCAoc3RydWN0IHR5cGUgKnR5cGUpOwotIAot K2V4dGVybiB2b2lkIHZhbF9wcmludF9ub3RfYWxsb2NhdGVkIChzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtKTsKLSsKLStleHRlcm4gdm9pZCB2YWxfcHJpbnRfbm90X2Fzc29jaWF0ZWQgKHN0cnVjdCB1 aV9maWxlICpzdHJlYW0pOwotKwotICNlbmRpZgotSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL3ZhbHVlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2Ri L3ZhbHVlLmMJMjAxNC0wNi0xNCAxNToxMjo0My44MDQ5OTY4OTAgKzAyMDAKLSsrKyBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi92YWx1ZS5jCTIwMTQtMDYtMTQgMTU6MTI6NDUuNDkwOTk4MDY5ICsw MjAwCi1AQCAtNDMsNiArNDMsNyBAQAotICNpbmNsdWRlICJ0cmFjZXBvaW50LmgiCi0gI2luY2x1 ZGUgImNwLWFiaS5oIgotICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKLSsjaW5jbHVkZSAiZHdhcmYy bG9jLmgiCi0gCi0gLyogUHJvdG90eXBlcyBmb3IgZXhwb3J0ZWQgZnVuY3Rpb25zLiAgKi8KLSAK LUBAIC0xNjQ2LDYgKzE2NDcsMjUgQEAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3Ry dWN0IHZhbAotICAgICAgIGlmIChmdW5jcy0+Y29weV9jbG9zdXJlKQotICAgICAgICAgY29tcG9u ZW50LT5sb2NhdGlvbi5jb21wdXRlZC5jbG9zdXJlID0gZnVuY3MtPmNvcHlfY2xvc3VyZSAod2hv bGUpOwotICAgICB9Ci0rCi0rICAvKiBGb3IgZHluYW1pYyB0eXBlcyBjb21wdXRlIHRoZSBhZGRy ZXNzIG9mIHRoZSBjb21wb25lbnQgdmFsdWUgbG9jYXRpb24gaW4KLSsgICAgIHN1YiByYW5nZSB0 eXBlcyBiYXNlZCBvbiB0aGUgbG9jYXRpb24gb2YgdGhlIHN1YiByYW5nZSB0eXBlLCBpZiBub3Qg YmVpbmcKLSsgICAgIGFuIGludGVybmFsIEdEQiB2YXJpYWJsZSBvciBwYXJ0cyBvZiBpdC4gICov Ci0rICBpZiAoVkFMVUVfTFZBTCAoY29tcG9uZW50KSAhPSBsdmFsX2ludGVybmFsdmFyCi0rICAg ICAgJiYgVkFMVUVfTFZBTCAoY29tcG9uZW50KSAhPSBsdmFsX2ludGVybmFsdmFyX2NvbXBvbmVu dCkKLSsgICAgewotKyAgICAgIENPUkVfQUREUiBhZGRyOwotKyAgICAgIHN0cnVjdCB0eXBlICp0 eXBlID0gdmFsdWVfdHlwZSAod2hvbGUpOwotKwotKyAgICAgIGFkZHIgPSB2YWx1ZV9yYXdfYWRk cmVzcyAoY29tcG9uZW50KTsKLSsKLSsgICAgICBpZiAoVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBl KQotKyAgICAgICAgICAmJiBUWVBFX0RBVEFfTE9DQVRJT05fS0lORCAodHlwZSkgPT0gUFJPUF9D T05TVCkKLSsgICAgICAgIHsKLSsgICAgICAgICAgYWRkciA9IFRZUEVfREFUQV9MT0NBVElPTl9B RERSICh0eXBlKTsKLSsgICAgICAgICAgc2V0X3ZhbHVlX2FkZHJlc3MgKGNvbXBvbmVudCwgYWRk cik7Ci0rICAgICAgICB9Ci0rICAgIH0KLSB9Ci0gCi0gDAoKZGlmZiAtLWdpdCBhL2dkYi12bGEt aW50ZWwtMDVvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0wNW9mMjMucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiMDk5MzcuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRl bC0wNW9mMjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1TdWJqZWN0OiBb UEFUQ0ggMDUvMjNdIHZsYTogbWFrZSBmaWVsZCBzZWxlY3Rpb24gd29yayB3aXRoIHZsYQotTWVz c2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC02LWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGlu dGVsLmNvbT4KLQotSW4gRm9ydHJhbiB2bGEgYXJlIHBvaW50ZXJzIHRvIGFycmF5cy4gVGh1cyBh Ci10eXBlIG9ubHkgY29udGFpbnMgYSBwb2ludGVyIHRvIHN1Y2ggYXJyYXkgYW5kCi13ZSBuZWVk IHRvIHJlLXJlYWQgdGhlIGZpZWxkIHRvIHJldHJpZXZlIHRoZQotY29ycmVjdCB2bGEuCi0KLW9s ZCAod3JvbmcgdmFsdWUpOgotKGdkYikgcCB0eXBlX3ZhciV2bGEoMTQpCi0kMSA9IDEKLQotbmV3 IChjb3JyZWN0IHZhbHVlKToKLShnZGIpIHAgdHlwZV92YXIldmxhKDE0KQotJDEgPSA0MgotCi0y MDE0LTA1LTI4ICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNvbT4KLSAg ICAgICAgICAgIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotCi0JKiB2YWx1 ZS5jICh2YWx1ZV9wcmltaXRpdmVfZmllbGQpOiBSZS1ldmFsdWF0ZQotCWZpZWxkIHZhbHVlIHRv IGdldCB0aGUgYWN0dWFsIHZhbHVlLgotCi1DaGFuZ2UtSWQ6IEljMjJjMzczMjQ5NjNhY2E1MjBj NTJhODBmYmJkMDA0MmQxZmRkYzA1Ci0KLVNpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZl bi5ib2VsbEBpbnRlbC5jb20+Ci0tLS0KLSBnZGIvdmFsdWUuYyB8ICAgMjEgKysrKysrKysrKysr KysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9nZGIvdmFsdWUuYyBiL2dkYi92YWx1ZS5jCi1pbmRleCAwODU5 M2I2Li4xZjBkOWE0IDEwMDY0NAotLS0tIGEvZ2RiL3ZhbHVlLmMKLSsrKyBiL2dkYi92YWx1ZS5j Ci1AQCAtMjkyOSwxMyArMjkyOSwyMiBAQCB2YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2 YWx1ZSAqYXJnMSwgaW50IG9mZnNldCwKLSAJdiA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5cGUp OwotICAgICAgIGVsc2UKLSAJewotLQkgIHYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7Ci0tCSAg dmFsdWVfY29udGVudHNfY29weV9yYXcgKHYsIHZhbHVlX2VtYmVkZGVkX29mZnNldCAodiksCi0t CQkJCSAgIGFyZzEsIHZhbHVlX2VtYmVkZGVkX29mZnNldCAoYXJnMSkgKyBvZmZzZXQsCi0tCQkJ CSAgIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0rCSAgaWYgKFRZUEVfREFUQV9MT0NBVElPTiAodHlw ZSkKLSsJICAgICAgJiYgVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5cGUpID09IFBST1BfQ09O U1QpCi0rCSAgICB2ID0gdmFsdWVfYXRfbGF6eSAodHlwZSwgdmFsdWVfYWRkcmVzcyAoYXJnMSkg KyBvZmZzZXQpOwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgdiA9IGFsbG9jYXRlX3ZhbHVl ICh0eXBlKTsKLSsJICAgICAgdmFsdWVfY29udGVudHNfY29weV9yYXcgKHYsIHZhbHVlX2VtYmVk ZGVkX29mZnNldCAodiksCi0rCQkJCSAgICAgICBhcmcxLCB2YWx1ZV9lbWJlZGRlZF9vZmZzZXQg KGFyZzEpICsgb2Zmc2V0LAotKwkJCQkgICAgICAgVFlQRV9MRU5HVEggKHR5cGUpKTsKLSsJICAg IH0KLSAJfQotLSAgICAgIHYtPm9mZnNldCA9ICh2YWx1ZV9vZmZzZXQgKGFyZzEpICsgb2Zmc2V0 Ci0tCQkgICArIHZhbHVlX2VtYmVkZGVkX29mZnNldCAoYXJnMSkpOwotKwotKyAgICAgIGlmICgh VFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKQotKyAgICAgICAgICB8fCAhVFlQRV9EQVRBX0xPQ0FU SU9OX0tJTkQgKHR5cGUpID09IFBST1BfQ09OU1QpCi0rCXYtPm9mZnNldCA9ICh2YWx1ZV9vZmZz ZXQgKGFyZzEpICsgb2Zmc2V0Ci0rCQkgICAgICsgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0IChhcmcx KSk7Ci0gICAgIH0KLSAgIHNldF92YWx1ZV9jb21wb25lbnRfbG9jYXRpb24gKHYsIGFyZzEpOwot ICAgVkFMVUVfUkVHTlVNICh2KSA9IFZBTFVFX1JFR05VTSAoYXJnMSk7Ci0tLSAKLTEuNy45LjUK LQoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDZvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRl bC0wNm9mMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5YzJkMDUuLjAw MDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0wNm9mMjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw2NyArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0ggMDYvMjNdIHZsYTogcmVjb25zdHJ1Y3QgdmFs dWUgdG8gY29tcHV0ZSBib3VuZHMgb2YgdGFyZ2V0IHR5cGUKLU1lc3NhZ2UtSWQ6IDwxNDAxODYx MjY2LTYyNDAtNy1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVByaW50 aW5nIGEgcG9pbnRlciB0byBhbiBhcnJheSwgZ2RiIHRyaWVzIHRvIHByaW50IHRoZQotdGFyZ2V0 IHR5cGUgaW5jbHVkaW5nIGl0cyBib3VuZHMuIFRvIGZvbGxvdyB0aGlzCi1zZW1hbnRpYyB3aXRo IHZsYSwgdGhpcyBwYXRjaCByZS1jb25zdHJ1Y3RzIHRoZSB2YWx1ZSB0bwotcmVzb2x2ZSB0aGUg Ym91bmRzIG9mIHRoZSB0YXJnZXQgdHlwZS4KLQotMjAxNC0wNS0yOCAgU2FuaW1pciBBZ292aWMg IDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+Ci0gICAgICAgICAgICBLZXZlbiBCb2VsbCAgPGtl dmVuLmJvZWxsQGludGVsLmNvbT4KLQotCSogdHlwZXByaW50LmMgKHdoYXRpc19leHApOiBSZS1j b25zdHJ1Y3QgdmFsdWUgdG8KLQljb21wdXRlIGJvdW5kcyBvZiB0YXJnZXQgdHlwZS4KLQkqIGMt dmFscHJpbnQuYyAoY192YWx1ZV9wcmludCk6IFJlLWNvbnN0cnVjdCB2YWx1ZQotCXRvIGNvbXB1 dGUgYm91bmRzIG9mIHRhcmdldCB0eXBlLgotCi1DaGFuZ2UtSWQ6IElhOGEyNTAyMWM3Y2MyMDY3 MTFjYTZmMzU5YWU1NTY2YTM2N2UzYjNkCi0KLVNpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxr ZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0tLS0KLSBnZGIvYy12YWxwcmludC5jIHwgICAxMSArKysr KysrKysrLQotIGdkYi90eXBlcHJpbnQuYyAgfCAgICA3ICsrKysrKysKLSAyIGZpbGVzIGNoYW5n ZWQsIDE3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2dkYi9j LXZhbHByaW50LmMgYi9nZGIvYy12YWxwcmludC5jCi1pbmRleCBmNDY5NGIwLi44YzQ1Mjc2IDEw MDY0NAotLS0tIGEvZ2RiL2MtdmFscHJpbnQuYwotKysrIGIvZ2RiL2MtdmFscHJpbnQuYwotQEAg LTUzOCw3ICs1MzgsMTYgQEAgY192YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVj dCB1aV9maWxlICpzdHJlYW0sCi0gCXsKLSAJICAvKiBub3JtYWwgY2FzZSAqLwotIAkgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIigiKTsKLS0JICB0eXBlX3ByaW50ICh2YWx1ZV90eXBlICh2 YWwpLCAiIiwgc3RyZWFtLCAtMSk7Ci0rCSAgaWYgKGlzX2R5bmFtaWNfdHlwZSAoVFlQRV9UQVJH RVRfVFlQRSAodHlwZSkpKQotKwkgICAgewotKwkgICAgICBzdHJ1Y3QgdmFsdWUgKnY7Ci0rCi0r CSAgICAgIHYgPSB2YWx1ZV9pbmQgKHZhbCk7Ci0rCSAgICAgIHYgPSB2YWx1ZV9hZGRyICh2KTsK LSsJICAgICAgdHlwZV9wcmludCAodmFsdWVfdHlwZSAodiksICIiLCBzdHJlYW0sIC0xKTsKLSsJ ICAgIH0KLSsJICBlbHNlCi0rCSAgICB0eXBlX3ByaW50ICh2YWx1ZV90eXBlICh2YWwpLCAiIiwg c3RyZWFtLCAtMSk7Ci0gCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSAiKTsKLSAJfQot ICAgICB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3R5cGVwcmludC5jIGIvZ2RiL3R5cGVwcmludC5jCi1p bmRleCBiNGFkNDMxLi5iM2M3M2E4IDEwMDY0NAotLS0tIGEvZ2RiL3R5cGVwcmludC5jCi0rKysg Yi9nZGIvdHlwZXByaW50LmMKLUBAIC00NTksNiArNDU5LDEzIEBAIHdoYXRpc19leHAgKGNoYXIg KmV4cCwgaW50IHNob3cpCi0gCi0gICB0eXBlID0gdmFsdWVfdHlwZSAodmFsKTsKLSAKLSsgIGlm IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9QVFIpCi0rICAgIGlmIChpc19keW5hbWlj X3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSkKLSsgICAgICB7Ci0rCXZhbCA9IHZhbHVl X2FkZHIgKHZhbHVlX2luZCAodmFsKSk7Ci0rCXR5cGUgPSB2YWx1ZV90eXBlICh2YWwpOwotKyAg ICAgIH0KLSsKLSAgIGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsKLSAgIGlmIChvcHRz Lm9iamVjdHByaW50KQotICAgICB7Ci0tLSAKLTEuNy45LjUKLQoKZGlmZiAtLWdpdCBhL2dkYi12 bGEtaW50ZWwtMDdvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0wN29mMjMucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlZWViZTIuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1p bnRlbC0wN29mMjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTEgKzAsMCBAQAotU3ViamVj dDogW1BBVENIIDA3LzIzXSB2bGE6IHVzZSB2YWx1ZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIHJh dy1idWZmZXIgbWFuaXB1bGF0aW9uCi1NZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQwLTgtZ2l0 LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotCi1JbnN0ZWFkIG9mIHByZS1jb21w dXRpbmcgaW5kaWNlcyBpbnRvIGEgZm9ydHJhbiBhcnJheSByZS11c2UKLXRoZSB2YWx1ZV8qIGlu dGVyZmFjZXMgdG8gc3Vic2NyaXB0IGEgZm9ydHJhbiBhcnJheS4KLQotMjAxNC0wNS0yOCAgU2Fu aW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+Ci0gICAgICAgICAgICBLZXZl biBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLQotCSogZi12YWxwcmludC5jIChmNzdf Y3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0X3RibCk6IFJlbW92ZQotCWZ1bmN0aW9uLgotCShGNzdf RElNX1NJWkUsIEY3N19ESU1fT0ZGU0VUKTogUmVtb3ZlIG1hY3JvLgotCShmNzdfcHJpbnRfYXJy YXlfMSk6IFVzZSB2YWx1ZV9zdWJzY3JpcHQgdG8gc3Vic2NyaXB0IGEKLQl2YWx1ZSBhcnJheS4K LQkoZjc3X3ByaW50X2FycmF5KTogUmVtb3ZlIGNhbGwgdG8gZjc3X2NyZWF0ZV9hcnJheXByaW50 X29mZnNldF90YmwuCi0JKGZfdmFsX3ByaW50KTogVXNlIHZhbHVlX2ZpZWxkIHRvIGNvbnN0cnVj dCBhIGZpZWxkIHZhbHVlLgotCi1DaGFuZ2UtSWQ6IEkwOWU0ODJjZWIxMTRlZWIwZjA4YjU1Mjhk NDBmZmVkOGQ3OTExOWVlCi0KLVNpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZlbi5ib2Vs bEBpbnRlbC5jb20+Ci0tLS0KLSBnZGIvZi12YWxwcmludC5jIHwgIDExOCArKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdl ZCwgMzkgaW5zZXJ0aW9ucygrKSwgNzkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nZGIv Zi12YWxwcmludC5jIGIvZ2RiL2YtdmFscHJpbnQuYwotaW5kZXggZDhjNzY3Zi4uMWFiNWJkOCAx MDA2NDQKLS0tLSBhL2dkYi9mLXZhbHByaW50LmMKLSsrKyBiL2dkYi9mLXZhbHByaW50LmMKLUBA IC0zOSw4ICszOSw2IEBACi0gCi0gZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZl92YWxwcmludCAo dm9pZCk7Ci0gc3RhdGljIHZvaWQgaW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqLCBpbnQpOwot LXN0YXRpYyB2b2lkIGY3N19jcmVhdGVfYXJyYXlwcmludF9vZmZzZXRfdGJsIChzdHJ1Y3QgdHlw ZSAqLAotLQkJCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKik7Ci0gc3RhdGljIHZvaWQgZjc3X2dl dF9keW5hbWljX2xlbmd0aF9vZl9hZ2dyZWdhdGUgKHN0cnVjdCB0eXBlICopOwotIAotIGludCBm NzdfYXJyYXlfb2Zmc2V0X3RibFtNQVhfRk9SVFJBTl9ESU1TICsgMV1bMl07Ci1AQCAtNDgsMTUg KzQ2LDYgQEAgaW50IGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9GT1JUUkFOX0RJTVMgKyAxXVsy XTsKLSAvKiBBcnJheSB3aGljaCBob2xkcyBvZmZzZXRzIHRvIGJlIGFwcGxpZWQgdG8gZ2V0IGEg cm93J3MgZWxlbWVudHMKLSAgICBmb3IgYSBnaXZlbiBhcnJheS4gIEFycmF5IGFsc28gaG9sZHMg dGhlIHNpemUgb2YgZWFjaCBzdWJhcnJheS4gICovCi0gCi0tLyogVGhlIGZvbGxvd2luZyBtYWNy byBnaXZlcyB1cyB0aGUgc2l6ZSBvZiB0aGUgbnRoIGRpbWVuc2lvbiwgV2hlcmUgCi0tICAgbiBp cyAxIGJhc2VkLiAgKi8KLS0KLS0jZGVmaW5lIEY3N19ESU1fU0laRShuKSAoZjc3X2FycmF5X29m ZnNldF90Ymxbbl1bMV0pCi0tCi0tLyogVGhlIGZvbGxvd2luZyBnaXZlcyB1cyB0aGUgb2Zmc2V0 IGZvciByb3cgbiB3aGVyZSBuIGlzIDEtYmFzZWQuICAqLwotLQotLSNkZWZpbmUgRjc3X0RJTV9P RkZTRVQobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25dWzBdKQotLQotIGludAotIGY3N19nZXRf bG93ZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gewotQEAgLTExNCw0NyArMTAzLDYgQEAg Zjc3X2dldF9keW5hbWljX2xlbmd0aF9vZl9hZ2dyZWdhdGUgKHN0cnVjdCB0eXBlICp0eXBlKQot ICAgICAqIFRZUEVfTEVOR1RIIChjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSkpOwotIH0KLSAKLS0vKiBGdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIGFycmF5IG9mZnNldCxz aXplIHRhYmxlIGZvciB0aGUgYXJyYXkgCi0tICAgdHlwZSAidHlwZSIuICAqLwotLQotLXN0YXRp YyB2b2lkCi0tZjc3X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90YmwgKHN0cnVjdCB0eXBlICp0 eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQotLXsKLS0gIHN0cnVjdCB0eXBlICp0bXBfdHlw ZTsKLS0gIGludCBlbHRsZW47Ci0tICBpbnQgbmRpbWVuID0gMTsKLS0gIGludCB1cHBlciwgbG93 ZXI7Ci0tCi0tICB0bXBfdHlwZSA9IHR5cGU7Ci0tCi0tICB3aGlsZSAoVFlQRV9DT0RFICh0bXBf dHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZKQotLSAgICB7Ci0tICAgICAgdXBwZXIgPSBmNzdfZ2V0 X3VwcGVyYm91bmQgKHRtcF90eXBlKTsKLS0gICAgICBsb3dlciA9IGY3N19nZXRfbG93ZXJib3Vu ZCAodG1wX3R5cGUpOwotLQotLSAgICAgIEY3N19ESU1fU0laRSAobmRpbWVuKSA9IHVwcGVyIC0g bG93ZXIgKyAxOwotLQotLSAgICAgIHRtcF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5 cGUpOwotLSAgICAgIG5kaW1lbisrOwotLSAgICB9Ci0tCi0tICAvKiBOb3cgd2UgbXVsdGlwbHkg ZWx0bGVuIGJ5IGFsbCB0aGUgb2Zmc2V0cywgc28gdGhhdCBsYXRlciB3ZSAKLS0gICAgIGNhbiBw cmludCBvdXQgYXJyYXkgZWxlbWVudHMgY29ycmVjdGx5LiAgVXAgdGlsbCBub3cgd2UgCi0tICAg ICBrbm93IGFuIG9mZnNldCB0byBhcHBseSB0byBnZXQgdGhlIGl0ZW0gYnV0IHdlIGFsc28gCi0t ICAgICBoYXZlIHRvIGtub3cgaG93IG11Y2ggdG8gYWRkIHRvIGdldCB0byB0aGUgbmV4dCBpdGVt LiAgKi8KLS0KLS0gIG5kaW1lbi0tOwotLSAgZWx0bGVuID0gVFlQRV9MRU5HVEggKHRtcF90eXBl KTsKLS0gIEY3N19ESU1fT0ZGU0VUIChuZGltZW4pID0gZWx0bGVuOwotLSAgd2hpbGUgKC0tbmRp bWVuID4gMCkKLS0gICAgewotLSAgICAgIGVsdGxlbiAqPSBGNzdfRElNX1NJWkUgKG5kaW1lbiAr IDEpOwotLSAgICAgIEY3N19ESU1fT0ZGU0VUIChuZGltZW4pID0gZWx0bGVuOwotLSAgICB9Ci0t fQotLQotLQotLQotIC8qIEFjdHVhbCBmdW5jdGlvbiB3aGljaCBwcmludHMgb3V0IEY3NyBhcnJh eXMsIFZhbGFkZHIgPT0gYWRkcmVzcyBpbiAKLSAgICB0aGUgc3VwZXJpb3IuICBBZGRyZXNzID09 IHRoZSBhZGRyZXNzIGluIHRoZSBpbmZlcmlvci4gICovCi0gCi1AQCAtMTY3LDQxICsxMTUsNTYg QEAgZjc3X3ByaW50X2FycmF5XzEgKGludCBuc3MsIGludCBuZGltZW5zaW9ucywgc3RydWN0IHR5 cGUgKnR5cGUsCi0gCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9u cywKLSAJCSAgIGludCAqZWx0cykKLSB7Ci0rICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSA9IFRZ UEVfSU5ERVhfVFlQRSAoY2hlY2tfdHlwZWRlZiAodHlwZSkpOwotKyAgQ09SRV9BRERSIGFkZHIg PSBhZGRyZXNzICsgZW1iZWRkZWRfb2Zmc2V0OwotKyAgTE9OR0VTVCBsb3dlcmJvdW5kLCB1cHBl cmJvdW5kOwotICAgaW50IGk7Ci0gCi0rICBnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBl LCAmbG93ZXJib3VuZCwgJnVwcGVyYm91bmQpOwotKwotICAgaWYgKG5zcyAhPSBuZGltZW5zaW9u cykKLSAgICAgewotLSAgICAgIGZvciAoaSA9IDA7Ci0tCSAgIChpIDwgRjc3X0RJTV9TSVpFIChu c3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXgpOwotKyAgICAgIHNpemVfdCBkaW1f c2l6ZSA9IFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0rICAgICAgc2l6 ZV90IG9mZnMgPSAwOwotKwotKyAgICAgIGZvciAoaSA9IGxvd2VyYm91bmQ7Ci0rCSAgIChpIDwg dXBwZXJib3VuZCArIDEgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7Ci0gCSAgIGkr KykKLSAJewotKwkgIHN0cnVjdCB2YWx1ZSAqc3ViYXJyYXkgPSB2YWx1ZV9mcm9tX2NvbnRlbnRz X2FuZF9hZGRyZXNzCi0rCSAgICAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHZhbHVlX2NvbnRl bnRzX2Zvcl9wcmludGluZ19jb25zdCAodmFsKQotKwkgICAgICsgb2ZmcywgYWRkciArIG9mZnMp OwotKwotIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiggIik7Ci0tCSAgZjc3X3ByaW50 X2FycmF5XzEgKG5zcyArIDEsIG5kaW1lbnNpb25zLCBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwK LS0JCQkgICAgIHZhbGFkZHIsCi0tCQkJICAgICBlbWJlZGRlZF9vZmZzZXQgKyBpICogRjc3X0RJ TV9PRkZTRVQgKG5zcyksCi0tCQkJICAgICBhZGRyZXNzLAotLQkJCSAgICAgc3RyZWFtLCByZWN1 cnNlLCB2YWwsIG9wdGlvbnMsIGVsdHMpOwotKwkgIGY3N19wcmludF9hcnJheV8xIChuc3MgKyAx LCBuZGltZW5zaW9ucywgdmFsdWVfdHlwZSAoc3ViYXJyYXkpLAotKwkJCSAgICAgdmFsdWVfY29u dGVudHNfZm9yX3ByaW50aW5nIChzdWJhcnJheSksCi0rCQkJICAgICB2YWx1ZV9lbWJlZGRlZF9v ZmZzZXQgKHN1YmFycmF5KSwKLSsJCQkgICAgIHZhbHVlX2FkZHJlc3MgKHN1YmFycmF5KSwKLSsJ CQkgICAgIHN0cmVhbSwgcmVjdXJzZSwgc3ViYXJyYXksIG9wdGlvbnMsIGVsdHMpOwotKwkgIG9m ZnMgKz0gZGltX3NpemU7Ci0gCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSAiKTsKLSAJ fQotLSAgICAgIGlmICgqZWx0cyA+PSBvcHRpb25zLT5wcmludF9tYXggJiYgaSA8IEY3N19ESU1f U0laRSAobnNzKSkgCi0rICAgICAgaWYgKCplbHRzID49IG9wdGlvbnMtPnByaW50X21heCAmJiBp IDwgdXBwZXJib3VuZCkKLSAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7Ci0gICAg IH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIGZvciAoaSA9IDA7IGkgPCBGNzdfRElNX1NJWkUg KG5zcykgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heDsKLSsgICAgICBmb3IgKGkgPSBs b3dlcmJvdW5kOyBpIDwgdXBwZXJib3VuZCArIDEgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50 X21heDsKLSAJICAgaSsrLCAoKmVsdHMpKyspCi0gCXsKLS0JICB2YWxfcHJpbnQgKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpLAotLQkJICAgICB2YWxhZGRyLAotLQkJICAgICBlbWJlZGRlZF9vZmZz ZXQgKyBpICogRjc3X0RJTV9PRkZTRVQgKG5kaW1lbnNpb25zKSwKLS0JCSAgICAgYWRkcmVzcywg c3RyZWFtLCByZWN1cnNlLAotLQkJICAgICB2YWwsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2Up OwotKwkgIHN0cnVjdCB2YWx1ZSAqZWx0ID0gdmFsdWVfc3Vic2NyaXB0ICgoc3RydWN0IHZhbHVl ICopdmFsLCBpKTsKLSsKLSsJICB2YWxfcHJpbnQgKHZhbHVlX3R5cGUgKGVsdCksCi0rCQkgICAg IHZhbHVlX2NvbnRlbnRzX2Zvcl9wcmludGluZyAoZWx0KSwKLSsJCSAgICAgdmFsdWVfZW1iZWRk ZWRfb2Zmc2V0IChlbHQpLAotKwkJICAgICB2YWx1ZV9hZGRyZXNzIChlbHQpLCBzdHJlYW0sIHJl Y3Vyc2UsCi0rCQkgICAgIGVsdCwgb3B0aW9ucywgY3VycmVudF9sYW5ndWFnZSk7Ci0gCi0tCSAg aWYgKGkgIT0gKEY3N19ESU1fU0laRSAobnNzKSAtIDEpKQotKwkgIGlmIChpICE9IHVwcGVyYm91 bmQpCi0gCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIsICIpOwotIAotIAkgIGlmICgo KmVsdHMgPT0gb3B0aW9ucy0+cHJpbnRfbWF4IC0gMSkKLS0JICAgICAgJiYgKGkgIT0gKEY3N19E SU1fU0laRSAobnNzKSAtIDEpKSkKLSsJICAgICAgJiYgKGkgIT0gdXBwZXJib3VuZCkpCi0gCSAg ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKLSAJfQotICAgICB9Ci1AQCAtMjI4 LDEyICsxOTEsNiBAQCBmNzdfcHJpbnRfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBn ZGJfYnl0ZSAqdmFsYWRkciwKLSBUeXBlIG5vZGUgY29ycnVwdCEgRjc3IGFycmF5cyBjYW5ub3Qg aGF2ZSAlZCBzdWJzY3JpcHRzICglZCBNYXgpIiksCi0gCSAgIG5kaW1lbnNpb25zLCBNQVhfRk9S VFJBTl9ESU1TKTsKLSAKLS0gIC8qIFNpbmNlIEY3NyBhcnJheXMgYXJlIHN0b3JlZCBjb2x1bW4t bWFqb3IsIHdlIHNldCB1cCBhbiAKLS0gICAgIG9mZnNldCB0YWJsZSB0byBnZXQgYXQgdGhlIHZh cmlvdXMgcm93J3MgZWxlbWVudHMuICBUaGUgCi0tICAgICBvZmZzZXQgdGFibGUgY29udGFpbnMg ZW50cmllcyBmb3IgYm90aCBvZmZzZXQgYW5kIHN1YmFycmF5IHNpemUuICAqLwotLQotLSAgZjc3 X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90YmwgKHR5cGUsIHN0cmVhbSk7Ci0tCi0gICBmNzdf cHJpbnRfYXJyYXlfMSAoMSwgbmRpbWVuc2lvbnMsIHR5cGUsIHZhbGFkZHIsIGVtYmVkZGVkX29m ZnNldCwKLSAJCSAgICAgYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlLCB2YWwsIG9wdGlvbnMsICZl bHRzKTsKLSB9Ci1AQCAtMzc4LDEyICszMzUsMTUgQEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKLSAg ICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoICIpOwotICAgICAgIGZvciAoaW5kZXgg PSAwOyBpbmRleCA8IFRZUEVfTkZJRUxEUyAodHlwZSk7IGluZGV4KyspCi0gICAgICAgICB7Ci0t ICAgICAgICAgIGludCBvZmZzZXQgPSBUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaW5kZXgpIC8g ODsKLSsJICBzdHJ1Y3QgdmFsdWUgKmZpZWxkID0gdmFsdWVfZmllbGQKLSsJICAgICgoc3RydWN0 IHZhbHVlICopb3JpZ2luYWxfdmFsdWUsIGluZGV4KTsKLSsKLSsgICAgICAgICAgdmFsX3ByaW50 ICh2YWx1ZV90eXBlIChmaWVsZCksCi0rCQkgICAgIHZhbHVlX2NvbnRlbnRzX2Zvcl9wcmludGlu ZyAoZmllbGQpLAotKwkJICAgICB2YWx1ZV9lbWJlZGRlZF9vZmZzZXQgKGZpZWxkKSwKLSsJCSAg ICAgdmFsdWVfYWRkcmVzcyAoZmllbGQpLCBzdHJlYW0sIHJlY3Vyc2UgKyAxLAotKwkJICAgICBm aWVsZCwgb3B0aW9ucywgY3VycmVudF9sYW5ndWFnZSk7Ci0gCi0tICAgICAgICAgIHZhbF9wcmlu dCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpbmRleCksIHZhbGFkZHIsCi0tCQkgICAgIGVtYmVk ZGVkX29mZnNldCArIG9mZnNldCwKLS0JCSAgICAgYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlICsg MSwKLS0JCSAgICAgb3JpZ2luYWxfdmFsdWUsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwot ICAgICAgICAgICBpZiAoaW5kZXggIT0gVFlQRV9ORklFTERTICh0eXBlKSAtIDEpCi0gICAgICAg ICAgICAgZnB1dHNfZmlsdGVyZWQgKCIsICIsIHN0cmVhbSk7Ci0gICAgICAgICB9Ci0tLSAKLTEu Ny45LjUKLQoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDhvZjIzLnBhdGNoIGIvZ2RiLXZs YS1pbnRlbC0wOG9mMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NTlk MDAuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0wOG9mMjMucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSw0OSArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0ggMDgvMjNdIHZsYTogZ2V0IGR5bmFt aWMgYXJyYXkgY29ybmVyIGNhc2VzIHRvIHdvcmsKLU1lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYy NDAtOS1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVRoaXMgcGF0Y2gg ZG9lcyBub3Qgb3ZlcndyaXRlIHRoZSB2YWx1ZSB0eXBlIGluCi1jYXNlIGl0IGlzIGEgZHluYW1p YyB0eXBlLiBGb3IgZHluYW1pYyB0eXBlcyBHREIKLXJlc29sdmVkIGl0cyBkeW5hbWljIHZhbHVl cyBpbiBhIGNvcHkgb2YgdGhlIHR5cGUuCi1UaGUgY2FsbCB0byBkZXByZWNhdGVkX3NldF92YWx1 ZV90eXBlIG92ZXJ3cml0ZXMgdGhlCi1yZXNvbHZlZCB0eXBlIHdpdGggdGhlIG9yaWdpbmFsIHR5 cGUsIHdoaWNoIGJyZWFrcwotZS5nLiBwb2ludGVyIHRvIGEgRm9ydHJhbiB0eXBlLCB3aGljaCBj b250YWlucyBhIGR5bmFtaWMKLWFycmF5LgotCi1PbGQ6Ci0oZ2RiKSBwcmludCAmdmxhMQotKFBU UiBUTyAtPiAoIHJlYWwoa2luZD00KSAoMjM5NTkxMzY6MjM5NTkxODQpKSkgMHg3ZmZmZmZmZmQ0 OTAKLQotTmV3OgotKGdkYikgcHJpbnQgJnZsYTEKLShQVFIgVE8gLT4gKCByZWFsKGtpbmQ9NCkg KDUpKSkgMHg3ZmZmZmZmZmQ0OTAKLQotMjAxNC0wNS0yOCAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5i b2VsbEBpbnRlbC5jb20+Ci0gICAgICAgICAgICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdv dmljQGludGVsLmNvbT4KLQotCSogdmFsdWUuYyAocmVhZGp1c3RfaW5kaXJlY3RfdmFsdWVfdHlw ZSk6IEFkZAotCWNoZWNrIGZvciBkeW5hbWljIHR5cGVzLgotCi1DaGFuZ2UtSWQ6IElmMWM2ZmIw YmQzYzFkMDQ2MTllODlhMWI1ODg1MGVkYjY5YmJmZGUwCi0KLVNpZ25lZC1vZmYtYnk6IEtldmVu IEJvZWxsIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0tLS0KLSBnZGIvdmFsdWUuYyB8ICAgIDMg KystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1k aWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmMgYi9nZGIvdmFsdWUuYwotaW5kZXggMWYwZDlhNC4uN2Fi YjIwYSAxMDA2NDQKLS0tLSBhL2dkYi92YWx1ZS5jCi0rKysgYi9nZGIvdmFsdWUuYwotQEAgLTM1 MDQsNyArMzUwNCw4IEBAIHJlYWRqdXN0X2luZGlyZWN0X3ZhbHVlX3R5cGUgKHN0cnVjdCB2YWx1 ZSAqdmFsdWUsIHN0cnVjdCB0eXBlICplbmNfdHlwZSwKLSAJCQkgICAgICBzdHJ1Y3QgdmFsdWUg Km9yaWdpbmFsX3ZhbHVlKQotIHsKLSAgIC8qIFJlLWFkanVzdCB0eXBlLiAgKi8KLS0gIGRlcHJl Y2F0ZWRfc2V0X3ZhbHVlX3R5cGUgKHZhbHVlLCBUWVBFX1RBUkdFVF9UWVBFIChvcmlnaW5hbF90 eXBlKSk7Ci0rICBpZiAoIWlzX2R5bmFtaWNfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAob3JpZ2lu YWxfdHlwZSkpKQotKyAgICBkZXByZWNhdGVkX3NldF92YWx1ZV90eXBlICh2YWx1ZSwgVFlQRV9U QVJHRVRfVFlQRSAob3JpZ2luYWxfdHlwZSkpOwotIAotICAgLyogQWRkIGVtYmVkZGluZyBpbmZv LiAgKi8KLSAgIHNldF92YWx1ZV9lbmNsb3NpbmdfdHlwZSAodmFsdWUsIGVuY190eXBlKTsKLS0t IAotMS43LjkuNQotCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0wOW9mMjMucGF0Y2ggYi9n ZGItdmxhLWludGVsLTA5b2YyMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg YjcyYmNjNS4uMDAwMDAwMAotLS0gYS9nZGItdmxhLWludGVsLTA5b2YyMy5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDMxNiArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0ggMDkvMjNdIHZsYTogY2hh bmdlZCBzdHJpbmcgbGVuZ3RoIHNlbWFudGljLgotTWVzc2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0 MC0xMC1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVRoaXMgcGF0Y2gg Y2hhbmdlcyB0aGUgc2VtYW50aWMgb2YgdGhlIER3YXJmIHN0cmluZyBsZW5ndGgKLWF0dHJpYnV0 ZSB0byByZWZsZWN0IHRoZSBzdGFuZGFyZC4gVGhpcyBzZXJ2ZXMgYXMgcHJlLXdvcmsKLXRvIGdl dCB2YXJpYWJsZSBzdHJpbmdzIGluIEZvcnRyYW4gdG8gd29yay4KLQotMjAxNC0wNS0yOCAgS2V2 ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0gICAgICAgICAgICBTYW5pbWlyIEFn b3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNvbT4KLQotCSogZHdhcmYycmVhZC5jIChyZWFk X3RhZ19zdHJpbmdfdHlwZSk6IGNoYW5nZWQKLQlzZW1hbnRpYyBvZiBEV19BVF9zdHJpbmdfbGVu Z3RoIHRvIGJlIGFibGUgdG8KLQloYW5kbGUgRHdhcmYgYmxvY2tzIGFzIHdlbGwuIFN1cHBvcnQg Zm9yCi0JRFdfQVRfYnl0ZV9sZW5ndGggYWRkZWQgdG8gZ2V0IGNvcnJlY3QgbGVuZ3RoCi0JaWYg c3BlY2lmaWVkIGluIGNvbWJpbmF0aW9uIHdpdGgKLQlEV19BVF9zdHJpbmdfbGVuZ3RoLgotCShh dHRyX3RvX2R5bmFtaWNfcHJvcCk6IGFkZGVkCi0JZnVuY3Rpb25hbGl0eSB0byBhZGQgRHdhcmYg b3BlcmF0b3JzIHRvIGJhdG9uCi0JZGF0YSBhdHRyaWJ1dGUuIEFkZGVkIHBvc3QgdmFsdWVzIHRv IGJhdG9uCi0JYXMgcmVxdWlyZWQgYnkgdGhlIHN0cmluZyBldmFsdWF0aW9uIGNhc2UuCi0JKHJl YWRfc3VicmFuZ2VfdHlwZSk6IEFkYXB0IGNhbGxlci4KLQkoc2V0X2RpZV90eXBlKTogQWRhcHQg Y2FsbGVyLgotCShhZGRfcG9zdF92YWx1ZXNfdG9fYmF0b24pOiBOZXcgZnVuY3Rpb24uCi0JKiBk d2FyZjJsb2MuYyAoZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5KTogRXZhbHVhdGUKLQlwb3N0IHBy b2Nlc3NpbmcgZHdhcmYuCi0JKiBkd2FyZjJsb2MuaCAoc3RydWN0IGR3YXJmMl9wcm9wZXJ0eV9i YXRvbik6IEFkZAotCXBvc3QgZHdhcmYgdmFsdWVzIGF0dHJpYnV0ZS4KLQotQ2hhbmdlLUlkOiBJ NmVkZmEwMDVmNDE2Y2RkYzhlMzY0ZDM0ODkxYjlhYmY2YjQ0Zjc1NwotCi1TaWduZWQtb2ZmLWJ5 OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotLS0tCi0gZ2RiL2R3YXJmMmxv Yy5jICB8ICAgMTAgKysrKysKLSBnZGIvZHdhcmYybG9jLmggIHwgICAgMyArKwotIGdkYi9kd2Fy ZjJyZWFkLmMgfCAgMTI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMTI3IGluc2VydGlvbnMoKyksIDE1IGRl bGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmxvYy5jIGIvZ2RiL2R3YXJmMmxv Yy5jCi1pbmRleCA3YWI3MzRkLi4yNDczZjgwIDEwMDY0NAotLS0tIGEvZ2RiL2R3YXJmMmxvYy5j Ci0rKysgYi9nZGIvZHdhcmYybG9jLmMKLUBAIC0yNTMzLDYgKzI1MzMsMTEgQEAgZHdhcmYyX2V2 YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLCBDT1JFX0FE RFIgYWRkcmVzcywKLSAKLSAJCSp2YWx1ZSA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbCk7Ci0gCSAg ICAgIH0KLSsJICAgIGlmIChiYXRvbi0+cG9zdF92YWx1ZXMuZGF0YSAmJiBiYXRvbi0+cG9zdF92 YWx1ZXMuc2l6ZSA+IDApCi0rCSAgICAgIHsKLSsJICAgICAgICBDT1JFX0FERFIgbmV3X2FkZHIg PSAqdmFsdWU7Ci0rCSAgICAgICAgZHdhcmYyX2xvY2V4cHJfYmF0b25fZXZhbCAoJmJhdG9uLT5w b3N0X3ZhbHVlcywgbmV3X2FkZHIsIHZhbHVlKTsKLSsJICAgICAgfQotIAkgICAgcmV0dXJuIDE7 Ci0gCSAgfQotICAgICAgIH0KLUBAIC0yNTU1LDYgKzI1NjAsMTEgQEAgZHdhcmYyX2V2YWx1YXRl X3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLCBDT1JFX0FERFIgYWRk cmVzcywKLSAJICAgIGlmICghdmFsdWVfb3B0aW1pemVkX291dCAodmFsKSkKLSAJICAgICAgewot IAkJKnZhbHVlID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsKTsKLSsJCWlmIChiYXRvbi0+cG9zdF92 YWx1ZXMuZGF0YSAmJiBiYXRvbi0+cG9zdF92YWx1ZXMuc2l6ZSA+IDApCi0rCQkgIHsKLSsJCSAg ICBDT1JFX0FERFIgbmV3X2FkZHIgPSAqdmFsdWU7Ci0rCQkgICAgZHdhcmYyX2xvY2V4cHJfYmF0 b25fZXZhbCAoJmJhdG9uLT5wb3N0X3ZhbHVlcywgbmV3X2FkZHIsIHZhbHVlKTsKLSsJCSAgfQot IAkJcmV0dXJuIDE7Ci0gCSAgICAgIH0KLSAJICB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmxv Yy5oIGIvZ2RiL2R3YXJmMmxvYy5oCi1pbmRleCBmYjY1YzVjLi5jZjY0OGViIDEwMDY0NAotLS0t IGEvZ2RiL2R3YXJmMmxvYy5oCi0rKysgYi9nZGIvZHdhcmYybG9jLmgKLUBAIC0xNjgsNiArMTY4 LDkgQEAgc3RydWN0IGR3YXJmMl9wcm9wZXJ0eV9iYXRvbgotICAgICAvKiBMb2NhdGlvbiBsaXN0 IHRvIGJlIGV2YWx1YXRlZCBpbiB0aGUgY29udGV4dCBvZiBSRUZFUkVOQ0VEX1RZUEUuICAqLwot ICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gbG9jbGlzdDsKLSAgIH07Ci0rCi0rICAv KiBBdHRyaWJ1dGVzLCB3aGljaCB3aWxsIGJlIHB1c2hlZCBhZnRlciBldmFsdWF0aW5nIGxvY2V4 cHIgb3IgbG9jbGlzdC4gICovCi0rICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gcG9zdF92 YWx1ZXM7Ci0gfTsKLSAKLSBleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMg ZHdhcmYyX2xvY2V4cHJfZnVuY3M7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMnJlYWQuYyBiL2dk Yi9kd2FyZjJyZWFkLmMKLWluZGV4IGVhNjY2MDIuLjBiMjM3MDEgMTAwNjQ0Ci0tLS0gYS9nZGIv ZHdhcmYycmVhZC5jCi0rKysgYi9nZGIvZHdhcmYycmVhZC5jCi1AQCAtMTg0Miw2ICsxODQyLDE1 IEBAIHN0YXRpYyB2b2lkIGZyZWVfZHdvX2ZpbGVfY2xlYW51cCAodm9pZCAqKTsKLSBzdGF0aWMg dm9pZCBwcm9jZXNzX2N1X2luY2x1ZGVzICh2b2lkKTsKLSAKLSBzdGF0aWMgdm9pZCBjaGVja19w cm9kdWNlciAoc3RydWN0IGR3YXJmMl9jdSAqY3UpOwotKwotK3N0YXRpYyBpbnQKLSthdHRyX3Rv X2R5bmFtaWNfcHJvcCAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGRpZV9p bmZvICpkaWUsCi0rCQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgc3RydWN0IGR5bmFtaWNf cHJvcCAqcHJvcCwKLSsJCSAgICAgIGNvbnN0IGdkYl9ieXRlICphZGRpdGlvbmFsX2RhdGEsIGlu dCBhZGRpdGlvbmFsX2RhdGFfc2l6ZSk7Ci0rCi0rc3RhdGljIHZvaWQgYWRkX3Bvc3RfdmFsdWVz X3RvX2JhdG9uIChzdHJ1Y3QgZHdhcmYyX3Byb3BlcnR5X2JhdG9uICpiYXRvbiwKLSsgICAgICAg IGNvbnN0IGdkYl9ieXRlICpkYXRhLCBpbnQgc2l6ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwot KwotIAwKLSAvKiBWYXJpb3VzIGNvbXBsYWludHMgYWJvdXQgc3ltYm9sIHJlYWRpbmcgdGhhdCBk b24ndCBhYm9ydCB0aGUgcHJvY2Vzcy4gICovCi0gCi1AQCAtMTQwMjksMjkgKzE0MDM4LDkwIEBA IHJlYWRfdGFnX3N0cmluZ190eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCi0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2gg KG9iamZpbGUpOwotICAgc3RydWN0IHR5cGUgKnR5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlw ZSwgKmNoYXJfdHlwZTsKLSAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0tICB1bnNpZ25lZCBp bnQgbGVuZ3RoOwotKyAgdW5zaWduZWQgaW50IGxlbmd0aCA9IFVJTlRfTUFYOwotKwotKyAgaW5k ZXhfdHlwZSA9IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0aW5faW50OwotKyAgcmFuZ2Vf dHlwZSA9IGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwgaW5kZXhfdHlwZSwgMSwgbGVu Z3RoKTsKLSAKLSsgIC8qIElmIERXX0FUX3N0cmluZ19sZW5ndGggaXMgZGVmaW5lZCwgdGhlIGxl bmd0aCBpcyBzdG9yZWQgYXQgc29tZSBsb2NhdGlvbgotKyAgICogaW4gbWVtb3J5LiAqLwotICAg YXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX3N0cmluZ19sZW5ndGgsIGN1KTsKLSAgIGlm IChhdHRyKQotICAgICB7Ci0tICAgICAgbGVuZ3RoID0gRFdfVU5TTkQgKGF0dHIpOwotKyAgICAg IGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQotKyAgICAgICAgewotKyAgICAgICAgICBz dHJ1Y3QgYXR0cmlidXRlICpieXRlX3NpemUsICpiaXRfc2l6ZTsKLSsgICAgICAgICAgc3RydWN0 IGR5bmFtaWNfcHJvcCBoaWdoOwotKwotKyAgICAgICAgICBieXRlX3NpemUgPSBkd2FyZjJfYXR0 ciAoZGllLCBEV19BVF9ieXRlX3NpemUsIGN1KTsKLSsgICAgICAgICAgYml0X3NpemUgPSBkd2Fy ZjJfYXR0ciAoZGllLCBEV19BVF9iaXRfc2l6ZSwgY3UpOwotKwotKyAgICAgICAgICAvKiBEV19B VF9ieXRlX3NpemUgc2hvdWxkIG5ldmVyIG9jY3VyIHRvZ2V0aGVyIGluIGNvbWJpbmF0aW9uIHdp dGgKLSsgICAgICAgICAgICAgRFdfQVRfc3RyaW5nX2xlbmd0aC4gICovCi0rICAgICAgICAgIGlm ICgoYnl0ZV9zaXplID09IE5VTEwgJiYgYml0X3NpemUgIT0gTlVMTCkgfHwKLSsgICAgICAgICAg ICAgICAgICAoYnl0ZV9zaXplICE9IE5VTEwgJiYgYml0X3NpemUgPT0gTlVMTCkpCi0rICAgICAg ICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJEV19BVF9ieXRlX3NpemUg QU5EICIKLSsgICAgICAgICAgICAgICAgICAgICAgIkRXX0FUX2JpdF9zaXplIGZvdW5kIHRvZ2V0 aGVyIGF0IHRoZSBzYW1lIHRpbWUuIikpOwotKwotKyAgICAgICAgICAvKiBJZiBEV19BVF9zdHJp bmdfbGVuZ3RoIEFORCBEV19BVF9ieXRlX3NpemUgZXhpc3QgdG9nZXRoZXIsIGl0Ci0rICAgICAg ICAgICAgIGRlc2NyaWJlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgc2hvdWxkIGJlIHJlYWQg ZnJvbSB0aGUgbGVuZ3RoCi0rICAgICAgICAgICAgIG1lbW9yeSBsb2NhdGlvbi4gICovCi0rICAg ICAgICAgIGlmIChieXRlX3NpemUgIT0gTlVMTCAmJiBiaXRfc2l6ZSA9PSBOVUxMKQotKyAgICAg ICAgICAgIHsKLSsgICAgICAgICAgICAgIC8qIEJ1aWxkIG5ldyBkd2FyZjJfbG9jZXhwcl9iYXRv biBzdHJ1Y3R1cmUgd2l0aCBhZGRpdGlvbnMgdG8gdGhlCi0rICAgICAgICAgICAgICAgICBkYXRh IGF0dHJpYnV0ZSwgdG8gcmVmbGVjdCBEV0FSRiBzcGVjaWFsaXRpZXMgdG8gZ2V0IGFkZHJlc3MK LSsgICAgICAgICAgICAgICAgIHNpemVzLiAgKi8KLSsgICAgICAgICAgICAgIGNvbnN0IGdkYl9i eXRlIGFwcGVuZF9vcHNbXSA9IHsKLSsgICAgICAgICAgICAgICAgRFdfT1BfcHVzaF9vYmplY3Rf YWRkcmVzcywKLSsgICAgICAgICAgICAgICAgLyogRFdfT1BfZGVyZWZfc2l6ZTogc2l6ZSBvZiBh biBhZGRyZXNzIG9uIHRoZSB0YXJnZXQgbWFjaGluZQotKyAgICAgICAgICAgICAgICAgICAoYnl0 ZXMpLCB3aGVyZSB0aGUgc2l6ZSB3aWxsIGJlIHNwZWNpZmllZCBieSB0aGUgbmV4dAotKyAgICAg ICAgICAgICAgICAgICBvcGVyYW5kLiAgKi8KLSsgICAgICAgICAgICAgICAgRFdfT1BfZGVyZWZf c2l6ZSwKLSsgICAgICAgICAgICAgICAgLyogT3BlcmFuZCBmb3IgRFdfT1BfZGVyZWZfc2l6ZS4g ICovCi0rICAgICAgICAgICAgICAgIERXX1VOU05EIChieXRlX3NpemUpIH07Ci0rCi0rICAgICAg ICAgICAgICBpZiAoIWF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmaGlnaCwK LSsgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kX29wcywgQVJSQVlfU0laRSAoYXBwZW5kX29w cykpKQotKyAgICAgICAgICAgICAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgXygiQ291bGQgbm90IHBhcnNlIERXX0FUX2J5dGVfc2l6 ZSIpKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgIGVsc2UgaWYgKGJpdF9zaXplICE9IE5V TEwgJiYgYnl0ZV9zaXplID09IE5VTEwpCi0rICAgICAgICAgICAgY29tcGxhaW50ICgmc3ltZmls ZV9jb21wbGFpbnRzLCBfKCJEV19BVF9zdHJpbmdfbGVuZ3RoIEFORCAiCi0rICAgICAgICAgICAg ICAgICAgICAgICJEV19BVF9iaXRfc2l6ZSBmb3VuZCBidXQgbm90IHN1cHBvcnRlZCB5ZXQuIikp OwotKyAgICAgICAgICAvKiBJZiBEV19BVF9zdHJpbmdfbGVuZ3RoIFdJVEhPVVQgRFdfQVRfYnl0 ZV9zaXplIGV4aXN0LCB0aGUgZGVmYXVsdAotKyAgICAgICAgICAgICBpcyB0aGUgYWRkcmVzcyBz aXplIG9mIHRoZSB0YXJnZXQgbWFjaGluZS4gICovCi0rICAgICAgICAgIGVsc2UKLSsgICAgICAg ICAgICB7Ci0rICAgICAgICAgICAgICBpZiAoIWF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBk aWUsIGN1LCAmaGlnaCwgTlVMTCwgMCkpCi0rICAgICAgICAgICAgICAgIGNvbXBsYWludCAoJnN5 bWZpbGVfY29tcGxhaW50cywKLSsgICAgICAgICAgICAgICAgICAgICAgICBfKCJDb3VsZCBub3Qg cGFyc2UgRFdfQVRfc3RyaW5nX2xlbmd0aCIpKTsKLSsgICAgICAgICAgICB9Ci0rCi0rICAgICAg ICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2ggPSBoaWdoOwotKyAgICAgICAg fQotKyAgICAgIGVsc2UKLSsgICAgICAgIHsKLSsgICAgICAgICAgVFlQRV9ISUdIX0JPVU5EIChy YW5nZV90eXBlKSA9IERXX1VOU05EIChhdHRyKTsKLSsgICAgICAgICAgVFlQRV9ISUdIX0JPVU5E X0tJTkQgKHJhbmdlX3R5cGUpID0gUFJPUF9DT05TVDsKLSsgICAgICAgIH0KLSAgICAgfQotICAg ZWxzZQotICAgICB7Ci0tICAgICAgLyogQ2hlY2sgZm9yIHRoZSBEV19BVF9ieXRlX3NpemUgYXR0 cmlidXRlLiAgKi8KLSsgICAgICAvKiBDaGVjayBmb3IgdGhlIERXX0FUX2J5dGVfc2l6ZSBhdHRy aWJ1dGUsIHdoaWNoIHJlcHJlc2VudHMgdGhlIGxlbmd0aAotKyAgICAgICAgIGluIHRoaXMgY2Fz ZS4gICovCi0gICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVfc2l6ZSwg Y3UpOwotICAgICAgIGlmIChhdHRyKQotICAgICAgICAgewotLSAgICAgICAgICBsZW5ndGggPSBE V19VTlNORCAoYXR0cik7Ci0rICAgICAgICAgIFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkg PSBEV19VTlNORCAoYXR0cik7Ci0rICAgICAgICAgIFRZUEVfSElHSF9CT1VORF9LSU5EIChyYW5n ZV90eXBlKSA9IFBST1BfQ09OU1Q7Ci0gICAgICAgICB9Ci0gICAgICAgZWxzZQotICAgICAgICAg ewotLSAgICAgICAgICBsZW5ndGggPSAxOwotKyAgICAgICAgICBUWVBFX0hJR0hfQk9VTkQgKHJh bmdlX3R5cGUpID0gMTsKLSsgICAgICAgICAgVFlQRV9ISUdIX0JPVU5EX0tJTkQgKHJhbmdlX3R5 cGUpID0gUFJPUF9DT05TVDsKLSAgICAgICAgIH0KLSAgICAgfQotIAotLSAgaW5kZXhfdHlwZSA9 IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0aW5faW50OwotLSAgcmFuZ2VfdHlwZSA9IGNy ZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwgaW5kZXhfdHlwZSwgMSwgbGVuZ3RoKTsKLSAg IGNoYXJfdHlwZSA9IGxhbmd1YWdlX3N0cmluZ19jaGFyX3R5cGUgKGN1LT5sYW5ndWFnZV9kZWZu LCBnZGJhcmNoKTsKLSAgIHR5cGUgPSBjcmVhdGVfc3RyaW5nX3R5cGUgKE5VTEwsIGNoYXJfdHlw ZSwgcmFuZ2VfdHlwZSk7Ci0gCi1AQCAtMTQzNjgsMTMgKzE0NDM4LDM2IEBAIHJlYWRfYmFzZV90 eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICByZXR1 cm4gc2V0X2RpZV90eXBlIChkaWUsIHR5cGUsIGN1KTsKLSB9Ci0gCi0rLyogQWRkIHBvc3QgcHJv Y2Vzc2luZyBvcC1jb2RlcyB0byBhIGR3YXJmMl9wcm9wZXJ0eV9iYXRvbi4gICovCi0rCi0rc3Rh dGljIHZvaWQgYWRkX3Bvc3RfdmFsdWVzX3RvX2JhdG9uIChzdHJ1Y3QgZHdhcmYyX3Byb3BlcnR5 X2JhdG9uICpiYXRvbiwKLSsgICAgICAgIGNvbnN0IGdkYl9ieXRlICpkYXRhLCBpbnQgc2l6ZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCi0rewotKyAgaWYgKGRhdGEgIT0gTlVMTCAmJiBzaXplID4g MCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrID0gJmN1LT5vYmpmaWxl LT5vYmpmaWxlX29ic3RhY2s7Ci0rICAgICAgZ2RiX2J5dGUgKnBvc3RfZGF0YTsKLSsKLSsgICAg ICBwb3N0X2RhdGEgPSBvYnN0YWNrX2FsbG9jIChvYnN0YWNrLCBzaXplKTsKLSsgICAgICBtZW1j cHkocG9zdF9kYXRhLCBkYXRhLCBzaXplKTsKLSsgICAgICBiYXRvbi0+cG9zdF92YWx1ZXMuZGF0 YSA9IHBvc3RfZGF0YTsKLSsgICAgICBiYXRvbi0+cG9zdF92YWx1ZXMuc2l6ZSA9IHNpemU7Ci0r ICAgICAgYmF0b24tPnBvc3RfdmFsdWVzLnBlcl9jdSA9IGN1LT5wZXJfY3U7Ci0rICAgIH0gZWxz ZSB7Ci0rICAgICAgYmF0b24tPnBvc3RfdmFsdWVzLmRhdGEgPSBOVUxMOwotKyAgICAgIGJhdG9u LT5wb3N0X3ZhbHVlcy5zaXplID0gMDsKLSsgICAgICBiYXRvbi0+cG9zdF92YWx1ZXMucGVyX2N1 ID0gTlVMTDsKLSsgICAgfQotK30KLSsKLSAvKiBQYXJzZSBkd2FyZiBhdHRyaWJ1dGUgaWYgaXQn cyBhIGJsb2NrLCByZWZlcmVuY2Ugb3IgY29uc3RhbnQgYW5kIHB1dCB0aGUKLSAgICByZXN1bHRp bmcgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBpbnRvIHN0cnVjdCBib3VuZF9wcm9wLgotICAgIFJl dHVybnMgMSBpZiBBVFRSIGNvdWxkIGJlIHJlc29sdmVkIGludG8gUFJPUCwgMCBvdGhlcndpc2Uu ICAqLwotIAotIHN0YXRpYyBpbnQKLSBhdHRyX3RvX2R5bmFtaWNfcHJvcCAoY29uc3Qgc3RydWN0 IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGRpZV9pbmZvICpkaWUsCi0tCQkgICAgICBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSwgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCkKLSsJCSAgICAgIHN0cnVj dCBkd2FyZjJfY3UgKmN1LCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLAotKwkJICAgICAgY29u c3QgZ2RiX2J5dGUgKmFkZGl0aW9uYWxfZGF0YSwgaW50IGFkZGl0aW9uYWxfZGF0YV9zaXplKQot IHsKLSAgIHN0cnVjdCBkd2FyZjJfcHJvcGVydHlfYmF0b24gKmJhdG9uOwotICAgc3RydWN0IG9i c3RhY2sgKm9ic3RhY2sgPSAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjazsKLUBAIC0xNDM4 Nyw4ICsxNDQ4MCwxMCBAQCBhdHRyX3RvX2R5bmFtaWNfcHJvcCAoY29uc3Qgc3RydWN0IGF0dHJp YnV0ZSAqYXR0ciwgc3RydWN0IGRpZV9pbmZvICpkaWUsCi0gICAgICAgYmF0b24gPSBvYnN0YWNr X2FsbG9jIChvYnN0YWNrLCBzaXplb2YgKCpiYXRvbikpOwotICAgICAgIGJhdG9uLT5yZWZlcmVu Y2VkX3R5cGUgPSBOVUxMOwotICAgICAgIGJhdG9uLT5sb2NleHByLnBlcl9jdSA9IGN1LT5wZXJf Y3U7Ci0tICAgICAgYmF0b24tPmxvY2V4cHIuc2l6ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6ZTsK LSAgICAgICBiYXRvbi0+bG9jZXhwci5kYXRhID0gRFdfQkxPQ0sgKGF0dHIpLT5kYXRhOwotKyAg ICAgIGJhdG9uLT5sb2NleHByLnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7Ci0rICAgICAg YWRkX3Bvc3RfdmFsdWVzX3RvX2JhdG9uIChiYXRvbiwgYWRkaXRpb25hbF9kYXRhLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9kYXRhX3NpemUsIGN1KTsKLSAg ICAgICBwcm9wLT5kYXRhLmJhdG9uID0gYmF0b247Ci0gICAgICAgcHJvcC0+a2luZCA9IFBST1Bf TE9DRVhQUjsKLSAgICAgICBnZGJfYXNzZXJ0IChwcm9wLT5kYXRhLmJhdG9uICE9IE5VTEwpOwot QEAgLTE0NDA5LDYgKzE0NTA0LDggQEAgYXR0cl90b19keW5hbWljX3Byb3AgKGNvbnN0IHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAotIAkgIGJhdG9uID0gb2Jz dGFja19hbGxvYyAob2JzdGFjaywgc2l6ZW9mICgqYmF0b24pKTsKLSAJICBiYXRvbi0+cmVmZXJl bmNlZF90eXBlID0gZGllX3R5cGUgKHRhcmdldF9kaWUsIHRhcmdldF9jdSk7Ci0gCSAgZmlsbF9p bl9sb2NsaXN0X2JhdG9uIChjdSwgJmJhdG9uLT5sb2NsaXN0LCB0YXJnZXRfYXR0cik7Ci0rCSAg YWRkX3Bvc3RfdmFsdWVzX3RvX2JhdG9uIChiYXRvbiwgYWRkaXRpb25hbF9kYXRhLAotKwkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9kYXRhX3NpemUsIGN1KTsKLSAJICBw cm9wLT5kYXRhLmJhdG9uID0gYmF0b247Ci0gCSAgcHJvcC0+a2luZCA9IFBST1BfTE9DTElTVDsK LSAJICBnZGJfYXNzZXJ0IChwcm9wLT5kYXRhLmJhdG9uICE9IE5VTEwpOwotQEAgLTE0NDIwLDYg KzE0NTE3LDggQEAgYXR0cl90b19keW5hbWljX3Byb3AgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHIsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAotIAkgIGJhdG9uLT5sb2NleHByLnBlcl9jdSA9 IGN1LT5wZXJfY3U7Ci0gCSAgYmF0b24tPmxvY2V4cHIuc2l6ZSA9IERXX0JMT0NLICh0YXJnZXRf YXR0ciktPnNpemU7Ci0gCSAgYmF0b24tPmxvY2V4cHIuZGF0YSA9IERXX0JMT0NLICh0YXJnZXRf YXR0ciktPmRhdGE7Ci0rCSAgYWRkX3Bvc3RfdmFsdWVzX3RvX2JhdG9uIChiYXRvbiwgYWRkaXRp b25hbF9kYXRhLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9kYXRh X3NpemUsIGN1KTsKLSAJICBwcm9wLT5kYXRhLmJhdG9uID0gYmF0b247Ci0gCSAgcHJvcC0+a2lu ZCA9IFBST1BfTE9DRVhQUjsKLSAJICBnZGJfYXNzZXJ0IChwcm9wLT5kYXRhLmJhdG9uICE9IE5V TEwpOwotQEAgLTE0NTA5LDE3ICsxNDYwOCwxNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAKLSAgIGF0dHIgPSBkd2Fy ZjJfYXR0ciAoZGllLCBEV19BVF9sb3dlcl9ib3VuZCwgY3UpOwotICAgaWYgKGF0dHIpCi0tICAg IGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmbG93KTsKLSsgICAgYXR0cl90 b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZsb3csIE5VTEwsIDApOwotICAgZWxzZSBp ZiAoIWxvd19kZWZhdWx0X2lzX3ZhbGlkKQotICAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBs YWludHMsIF8oIk1pc3NpbmcgRFdfQVRfbG93ZXJfYm91bmQgIgotIAkJCQkgICAgICAiLSBESUUg YXQgMHgleCBbaW4gbW9kdWxlICVzXSIpLAotIAkgICAgICAgZGllLT5vZmZzZXQuc2VjdF9vZmYs IG9iamZpbGVfbmFtZSAoY3UtPm9iamZpbGUpKTsKLSAKLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAo ZGllLCBEV19BVF91cHBlcl9ib3VuZCwgY3UpOwotLSAgaWYgKCFhdHRyX3RvX2R5bmFtaWNfcHJv cCAoYXR0ciwgZGllLCBjdSwgJmhpZ2gpKQotKyAgaWYgKCFhdHRyX3RvX2R5bmFtaWNfcHJvcCAo YXR0ciwgZGllLCBjdSwgJmhpZ2gsIE5VTEwsIDApKQotICAgICB7Ci0gICAgICAgYXR0ciA9IGR3 YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvdW50LCBjdSk7Ci0tICAgICAgaWYgKGF0dHJfdG9fZHlu YW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmaGlnaCkpCi0rICAgICAgaWYgKGF0dHJfdG9fZHlu YW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmaGlnaCwgTlVMTCwgMCkpCi0gCXsKLSAJICAvKiBJ ZiBib3VuZHMgYXJlIGNvbnN0YW50IGRvIHRoZSBmaW5hbCBjYWxjdWxhdGlvbiBoZXJlLiAgKi8K LSAJICBpZiAobG93LmtpbmQgPT0gUFJPUF9DT05TVCAmJiBoaWdoLmtpbmQgPT0gUFJPUF9DT05T VCkKLUBAIC0yMTUyMCw3ICsyMTYxOSw3IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgewot ICAgICAgIHN0cnVjdCBkeW5hbWljX3Byb3AgcHJvcDsKLSAKLS0gICAgICBpZiAoYXR0cl90b19k eW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZwcm9wKSkKLSsgICAgICBpZiAoYXR0cl90b19k eW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZwcm9wLCBOVUxMLCAwKSkKLSAgICAgICAgIHsK LSAgICAgICAgICAgVFlQRV9BTExPQ0FURURfUFJPUCAodHlwZSkKLSAgICAgICAgICAgICA9IG9i c3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAocHJvcCkpOwot QEAgLTIxNTM0LDcgKzIxNjMzLDcgQEAgc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICB7Ci0gICAg ICAgc3RydWN0IGR5bmFtaWNfcHJvcCBwcm9wOwotIAotLSAgICAgIGlmIChhdHRyX3RvX2R5bmFt aWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJnByb3ApKQotKyAgICAgIGlmIChhdHRyX3RvX2R5bmFt aWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJnByb3AsIE5VTEwsIDApKQotICAgICAgICAgewotICAg ICAgICAgICBUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSkKLSAgICAgICAgICAgICA9IG9ic3Rh Y2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAocHJvcCkpOwotQEAg LTIxNTQ4LDcgKzIxNjQ3LDcgQEAgc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICB7Ci0gICAgICAg c3RydWN0IGR5bmFtaWNfcHJvcCBwcm9wOwotIAotLSAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNf cHJvcCAoYXR0ciwgZGllLCBjdSwgJnByb3ApKQotKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNf cHJvcCAoYXR0ciwgZGllLCBjdSwgJnByb3AsIE5VTEwsIDApKQotIAl7Ci0gCSAgVFlQRV9EQVRB X0xPQ0FUSU9OICh0eXBlKQotIAkgICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmls ZV9vYnN0YWNrLCBzaXplb2YgKHByb3ApKTsKLS0tIAotMS43LjkuNQotCgpkaWZmIC0tZ2l0IGEv Z2RiLXZsYS1pbnRlbC0xMG9mMjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTEwb2YyMy5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ1NTk3OC4uMDAwMDAwMAotLS0gYS9nZGIt dmxhLWludGVsLTEwb2YyMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLVN1 YmplY3Q6IFtQQVRDSCAxMC8yM10gdmxhOiBnZXQgRm9ydHJhbiBkeW5hbWljIHN0cmluZ3Mgd29y a2luZy4KLU1lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMTEtZ2l0LXNlbmQtZW1haWwta2V2 ZW4uYm9lbGxAaW50ZWwuY29tPgotCi1UaGlzIHBhdGNoIGVuYWJsZXMgdGhlIGNvcnJlY3QgY2Fs Y3VsYXRpb24gb2YgZHluYW1pYwotc3RyaW5nIGxlbmd0aC4KLQotT2xkOgotKGdkYikgcCBteV9k eW5fc3RyaW5nCi0kMSA9IChQVFIgVE8gLT4gKCBjaGFyYWN0ZXIqMjM5NTkxMzYgKSkgMHg2MDVm YzAKLQotKGdkYikgcCAqbXlfZHluX3N0cmluZwotQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQgYWRk cmVzcyAweDYwNWZjMAotCi1OZXc6Ci0oZ2RiKSBwIG15X2R5bl9zdHJpbmcKLSQxID0gKFBUUiBU TyAtPiAoIGNoYXJhY3RlcioxMCApKSAweDYwNWZjMAotCi0oZ2RiKSBwICpteV9keW5fc3RyaW5n Ci0kMiA9ICdmb28nCi0KLTIwMTQtMDUtMjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50 ZWwuY29tPgotICAgICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRl bC5jb20+Ci0KLQkqIGdkYnR5cGVzLmMgKHJlc29sdmVfZHluYW1pY190eXBlKTogQWRkCi0JY29u ZGl0aW9ucyB0byBzdXBwb3J0IHN0cmluZyB0eXBlcy4KLQkocmVzb2x2ZV9keW5hbWljX2FycmF5 KTogQWRkIGNvbmRpdGlvbnMgZm9yIGR5bmFtaWMKLQlzdHJpbmdzIGFuZCBjcmVhdGUgYSBuZXcg c3RyaW5nIHR5cGUuCi0JKGlzX2R5bmFtaWNfdHlwZSk6IEZvbGxvdyBwb2ludGVyIGlmIGEgc3Ry aW5nIHR5cGUKLQl3YXMgZGV0ZWN0ZWQsIGFzIEZvcnRyYW4gc3RyaW5ncyBhcmUgcmVwcmVzZW50 ZWQKLQlhcyBwb2ludGVycyB0byBzdHJpbmdzIGludGVybmFsbHkuCi0KLUNoYW5nZS1JZDogSTdk NTRkNzYyYTA4MWNlMDM0YmUzN2FjM2UzNjhiYWM4MTExZGM0ZTYKLQotU2lnbmVkLW9mZi1ieTog S2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLS0tLQotIGdkYi9nZGJ0eXBlcy5j IHwgICAyNCArKysrKysrKysrKysrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjAgaW5z ZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL2dkYnR5cGVzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcv Z2RiL2dkYnR5cGVzLmMJMjAxNC0wNi0xNCAxNToxNDo0OC42MjMxMTU1OTcgKzAyMDAKLSsrKyBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi9nZGJ0eXBlcy5jCTIwMTQtMDYtMTQgMTU6MTU6MjYuODc2 MTUxMTg3ICswMjAwCi1AQCAtMTY2Miw2ICsxNjYyLDE1IEBAIGlzX2R5bmFtaWNfdHlwZSAoc3Ry dWN0IHR5cGUgKnR5cGUpCi0gICAgIHJldHVybiBpc19keW5hbWljX3R5cGUgKFRZUEVfVEFSR0VU X1RZUEUgKHR5cGUpKTsKLSAgICAgICB9Ci0gCi0rICAgIGNhc2UgVFlQRV9DT0RFX1BUUjoKLSsg ICAgICB7Ci0rICAgICAgICBpZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkKLSsgICAgICAgICAg ICAmJiBUWVBFX0NPREUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSA9PSBUWVBFX0NPREVfU1RS SU5HKQotKyAgICAgICAgICByZXR1cm4gaXNfZHluYW1pY190eXBlIChjaGVja190eXBlZGVmIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSkpOwotKwotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAg ICBicmVhazsKLSsgICAgICB9Ci0gICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoKLSAgICAgY2Fz ZSBUWVBFX0NPREVfVU5JT046Ci0gICAgICAgewotQEAgLTE3NDIsNyArMTc1MSw4IEBAIHJlc29s dmVfZHluYW1pY19hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUKLSAgIHN0cnVjdCBkeW5hbWljX3By b3AgKnByb3A7Ci0gICBzdHJ1Y3QgdHlwZSAqY29weSA9IGNvcHlfdHlwZSAodHlwZSk7Ci0gCi0t ICBnZGJfYXNzZXJ0IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSk7Ci0rICBn ZGJfYXNzZXJ0IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQotKyAgICAgICAg ICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSSU5HKTsKLSAKLSAgIGVs dF90eXBlID0gdHlwZTsKLSAgIHJhbmdlX3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX0lOREVY X1RZUEUgKGVsdF90eXBlKSk7Ci1AQCAtMTc2OSw5ICsxNzc5LDE0IEBAIHJlc29sdmVfZHluYW1p Y19hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUKLSAgIGVsc2UKLSAgICAgZWx0X3R5cGUgPSBUWVBF X1RBUkdFVF9UWVBFICh0eXBlKTsKLSAKLS0gIHJldHVybiBjcmVhdGVfYXJyYXlfdHlwZSAoY29w eSwKLS0JCQkgICAgZWx0X3R5cGUsCi0tCQkJICAgIHJhbmdlX3R5cGUpOwotKyAgaWYgKFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1NUUklORykKLSsgICAgcmV0dXJuIGNyZWF0ZV9zdHJp bmdfdHlwZSAoY29weSwKLSsgICAgICAgICAgICBlbHRfdHlwZSwKLSsgICAgICAgICAgICByYW5n ZV90eXBlKTsKLSsgIGVsc2UKLSsgICAgcmV0dXJuIGNyZWF0ZV9hcnJheV90eXBlIChjb3B5LAot KyAgICAgICAgICAgIGVsdF90eXBlLAotKyAgICAgICAgICAgIHJhbmdlX3R5cGUpOwotIH0KLSAK LSAvKiBSZXNvbHZlcyBkeW5hbWljIGNvbXBvdW5kIHR5cGVzLCBlLmcuIFNUUlVDVFMncyB0byBz dGF0aWMgb25lcy4KLUBAIC0xOTU4LDYgKzE5NzMsNyBAQCByZXNvbHZlX2R5bmFtaWNfdHlwZSAo c3RydWN0IHR5cGUgKnR5cGUsCi0gCX0KLSAKLSAgICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToK LSsgICAgICBjYXNlIFRZUEVfQ09ERV9TVFJJTkc6Ci0gCXJlc29sdmVkX3R5cGUgPSByZXNvbHZl X2R5bmFtaWNfYXJyYXkgKHR5cGUsIGFkZHIpOwotIAlicmVhazsKLSAKCmRpZmYgLS1naXQgYS9n ZGItdmxhLWludGVsLTExb2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMTFvZjIzLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjE4Y2YzLi4wMDAwMDAwCi0tLSBhL2dkYi12 bGEtaW50ZWwtMTFvZjIzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcyICswLDAgQEAKLVN1 YmplY3Q6IFtQQVRDSCAxMS8yM10gdmxhOiBhZGQgc3RyaWRlIHN1cHBvcnQgdG8gZm9ydHJhbiBh cnJheXMuCi1NZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQwLTEyLWdpdC1zZW5kLWVtYWlsLWtl dmVuLmJvZWxsQGludGVsLmNvbT4KLQotMjAxNC0wNS0yOCAgU2FuaW1pciBBZ292aWMgIDxzYW5p bWlyLmFnb3ZpY0BpbnRlbC5jb20+Ci0gICAgICAgICAgICBLZXZlbiBCb2VsbCAgPGtldmVuLmJv ZWxsQGludGVsLmNvbT4KLQotCSogZHdhcmYycmVhZC5jIChyZWFkX3N1YnJhbmdlX3R5cGUpOiBS ZWFkIGR5bmFtaWMKLQlzdHJpZGUgYXR0cmlidXRlcy4KLQkqIGdkYnR5cGVzLmMgKGNyZWF0ZV9h cnJheV90eXBlX3dpdGhfc3RyaWRlKTogQWRkCi0Jc3RyaWRlIHN1cHBvcnQKLQkoY3JlYXRlX3Jh bmdlX3R5cGUpOiBBZGQgc3RyaWRlIHBhcmFtZXRlci4KLQkoY3JlYXRlX3N0YXRpY19yYW5nZV90 eXBlKTogUGFzcyBkZWZhdWx0IHN0cmlkZQotCXBhcmFtZXRlci4KLQkocmVzb2x2ZV9keW5hbWlj X3JhbmdlKTogRXZhbHVhdGUgc3RyaWRlIGJhdG9uLgotCShyZXNvbHZlX2R5bmFtaWNfdHlwZSk6 IEFkanVzdCBkYXRhIGxvY2F0aW9uIHdpdGgKLQl0aGUgdmFsdWUgb2YgYnl0ZSBzdHJpZGUuCi0J KiBnZGJ0eXBlcy5oIChUWVBFX0JZVEVfU1RSSURFKTogTmV3IG1hY3JvLgotCShUWVBFX0JZVEVf U1RSSURFX0JMT0NLKTogTmV3IG1hY3JvLgotCShUWVBFX0JZVEVfU1RSSURFX0xPQ0xJU1QpOiBO ZXcgbWFjcm8uCi0JKFRZUEVfQllURV9TVFJJREVfS0lORCk6IE5ldyBtYWNyby4KLQkqIHZhbGFy aXRoLmMgKHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSk6IFVzZSBzdHJpZGUuCi0KLUNoYW5nZS1J ZDogSTNkODEwYzBkYzM3ZjlkOWZkODRkYmE0Yzc2NGNkZWZjNTJkODUwMWUKLQotU2lnbmVkLW9m Zi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLS0tLQotIGdkYi9kd2Fy ZjJyZWFkLmMgfCAgIDEzICsrKysrKysrKysrLS0KLSBnZGIvZ2RidHlwZXMuYyAgIHwgICA0MCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCi0gZ2RiL2dkYnR5cGVzLmgg ICB8ICAgMTcgKysrKysrKysrKysrKysrKysKLSBnZGIvdmFsYXJpdGguYyAgIHwgICAxNCArKysr KysrKysrKysrLQotIDQgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlv bnMoLSkKLQotSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2R3YXJmMnJlYWQuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIw MTQtMDYtMTYgMjM6MjQ6MTIuNzQxNTg0MzE1ICswMjAwCi0rKysgZ2RiLTcuNy45MC4yMDE0MDYx My9nZGIvZHdhcmYycmVhZC5jCTIwMTQtMDYtMTYgMjM6MjU6MTIuNzAyNjQwOTEwICswMjAwCi1A QCAtMTQ2OTYsNyArMTQ2OTYsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5m byAqZGllCi0gICBzdHJ1Y3QgdHlwZSAqYmFzZV90eXBlLCAqb3JpZ19iYXNlX3R5cGU7Ci0gICBz dHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKLSAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0tICBz dHJ1Y3QgZHluYW1pY19wcm9wIGxvdywgaGlnaDsKLSsgIHN0cnVjdCBkeW5hbWljX3Byb3AgbG93 LCBoaWdoLCBzdHJpZGU7Ci0gICBpbnQgbG93X2RlZmF1bHRfaXNfdmFsaWQ7Ci0gICBpbnQgaGln aF9ib3VuZF9pc19jb3VudCA9IDA7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotQEAgLTE0NzE2LDcg KzE0NzE2LDkgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZQotIAot ICAgbG93LmtpbmQgPSBQUk9QX0NPTlNUOwotICAgaGlnaC5raW5kID0gUFJPUF9DT05TVDsKLSsg IHN0cmlkZS5raW5kID0gUFJPUF9DT05TVDsKLSAgIGhpZ2guZGF0YS5jb25zdF92YWwgPSAwOwot KyAgc3RyaWRlLmRhdGEuY29uc3RfdmFsID0gMDsKLSAKLSAgIC8qIFNldCBMT1dfREVGQVVMVF9J U19WQUxJRCBpZiBjdXJyZW50IGxhbmd1YWdlIGFuZCBEV0FSRiB2ZXJzaW9uIGFsbG93Ci0gICAg ICBvbWl0dGluZyBEV19BVF9sb3dlcl9ib3VuZC4gICovCi1AQCAtMTQ3NDksNiArMTQ3NTEsMTMg QEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZQotICAgICAgIGJyZWFr OwotICAgICB9Ci0gCi0rICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zdHJp ZGUsIGN1KTsKLSsgIGlmIChhdHRyKQotKyAgICBpZiAoIWF0dHJfdG9fZHluYW1pY19wcm9wIChh dHRyLCBkaWUsIGN1LCAmc3RyaWRlLCBOVUxMLCAwKSkKLSsgICAgICAgIGNvbXBsYWludCAoJnN5 bWZpbGVfY29tcGxhaW50cywgXygiTWlzc2luZyBEV19BVF9ieXRlX3N0cmlkZSAiCi0rICAgICAg ICAgICAgICAgICAgIi0gRElFIGF0IDB4JXggW2luIG1vZHVsZSAlc10iKSwKLSsgICAgICAgICAg ICAgZGllLT5vZmZzZXQuc2VjdF9vZmYsIG9iamZpbGVfbmFtZSAoY3UtPm9iamZpbGUpKTsKLSsK LSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9sb3dlcl9ib3VuZCwgY3UpOwotICAg aWYgKGF0dHIpCi0gICAgIGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmbG93 LCBOVUxMLCAwKTsKLUBAIC0xNDgyNSw3ICsxNDgzNCw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUKLSAgICAgICAmJiAhVFlQRV9VTlNJR05FRCAoYmFzZV90eXBl KSAmJiAoaGlnaC5kYXRhLmNvbnN0X3ZhbCAmIG5lZ2F0aXZlX21hc2spKQotICAgICBoaWdoLmRh dGEuY29uc3RfdmFsIHw9IG5lZ2F0aXZlX21hc2s7Ci0gCi0tICByYW5nZV90eXBlID0gY3JlYXRl X3JhbmdlX3R5cGUgKE5VTEwsIG9yaWdfYmFzZV90eXBlLCAmbG93LCAmaGlnaCk7Ci0rICByYW5n ZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKE5VTEwsIG9yaWdfYmFzZV90eXBlLCAmbG93LCAm aGlnaCwgJnN0cmlkZSk7Ci0gCi0gICBpZiAoaGlnaF9ib3VuZF9pc19jb3VudCkKLSAgICAgVFlQ RV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+ZmxhZ191cHBlcl9ib3VuZF9pc19jb3VudCA9IDE7 Ci1JbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZ2RidHlwZXMuYwkyMDE0LTA2LTE2IDIz OjI0OjEyLjc0MTU4NDMxNSArMDIwMAotKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5 cGVzLmMJMjAxNC0wNi0xNiAyMzoyNToxMi43MDQ2NDA5MTEgKzAyMDAKLUBAIC04MDUsNyArODA1 LDggQEAgYWxsb2NhdGVfc3R1Yl9tZXRob2QgKHN0cnVjdCB0eXBlICp0eXBlKQotIHN0cnVjdCB0 eXBlICoKLSBjcmVhdGVfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlLCBzdHJ1 Y3QgdHlwZSAqaW5kZXhfdHlwZSwKLSAJCSAgIGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKmxv d19ib3VuZCwKLS0JCSAgIGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKmhpZ2hfYm91bmQpCi0r CQkgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpoaWdoX2JvdW5kLAotKwkJICAgY29uc3Qg c3RydWN0IGR5bmFtaWNfcHJvcCAqc3RyaWRlKQotIHsKLSAgIGlmIChyZXN1bHRfdHlwZSA9PSBO VUxMKQotICAgICByZXN1bHRfdHlwZSA9IGFsbG9jX3R5cGVfY29weSAoaW5kZXhfdHlwZSk7Ci1A QCAtODIwLDYgKzgyMSw3IEBAIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0 X3QKLSAgICAgVFlQRV9aQUxMT0MgKHJlc3VsdF90eXBlLCBzaXplb2YgKHN0cnVjdCByYW5nZV9i b3VuZHMpKTsKLSAgIFRZUEVfUkFOR0VfREFUQSAocmVzdWx0X3R5cGUpLT5sb3cgPSAqbG93X2Jv dW5kOwotICAgVFlQRV9SQU5HRV9EQVRBIChyZXN1bHRfdHlwZSktPmhpZ2ggPSAqaGlnaF9ib3Vu ZDsKLSsgIFRZUEVfUkFOR0VfREFUQSAocmVzdWx0X3R5cGUpLT5zdHJpZGUgPSAqc3RyaWRlOwot IAotICAgaWYgKGxvd19ib3VuZC0+a2luZCA9PSBQUk9QX0NPTlNUICYmIGxvd19ib3VuZC0+ZGF0 YS5jb25zdF92YWwgPj0gMCkKLSAgICAgVFlQRV9VTlNJR05FRCAocmVzdWx0X3R5cGUpID0gMTsK LUBAIC04NDEsNyArODQzLDcgQEAgc3RydWN0IHR5cGUgKgotIGNyZWF0ZV9zdGF0aWNfcmFuZ2Vf dHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlLCBzdHJ1Y3QgdHlwZSAqaW5kZXhfdHlwZSwK LSAJCQkgIExPTkdFU1QgbG93X2JvdW5kLCBMT05HRVNUIGhpZ2hfYm91bmQpCi0gewotLSAgc3Ry dWN0IGR5bmFtaWNfcHJvcCBsb3csIGhpZ2g7Ci0rICBzdHJ1Y3QgZHluYW1pY19wcm9wIGxvdywg aGlnaCwgc3RyaWRlOwotIAotICAgbG93LmtpbmQgPSBQUk9QX0NPTlNUOwotICAgbG93LmRhdGEu Y29uc3RfdmFsID0gbG93X2JvdW5kOwotQEAgLTg0OSw3ICs4NTEsMTEgQEAgY3JlYXRlX3N0YXRp Y19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcgotICAgaGlnaC5raW5kID0gUFJPUF9DT05TVDsK LSAgIGhpZ2guZGF0YS5jb25zdF92YWwgPSBoaWdoX2JvdW5kOwotIAotLSAgcmVzdWx0X3R5cGUg PSBjcmVhdGVfcmFuZ2VfdHlwZSAocmVzdWx0X3R5cGUsIGluZGV4X3R5cGUsICZsb3csICZoaWdo KTsKLSsgIHN0cmlkZS5raW5kID0gUFJPUF9DT05TVDsKLSsgIHN0cmlkZS5kYXRhLmNvbnN0X3Zh bCA9IDA7Ci0rCi0rICByZXN1bHRfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChyZXN1bHRfdHlw ZSwgaW5kZXhfdHlwZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb3cs ICZoaWdoLCAmc3RyaWRlKTsKLSAKLSAgIHJldHVybiByZXN1bHRfdHlwZTsKLSB9Ci1AQCAtMTAw NiwxNiArMTAxMiwyMSBAQCBjcmVhdGVfYXJyYXlfdHlwZV93aXRoX3N0cmlkZSAoc3RydWN0IHR5 Ci0gICBpZiAoaGFzX3N0YXRpY19yYW5nZSAoVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKSkK LSAgICAgICAmJiBkd2FyZjJfYWRkcmVzc19kYXRhX3ZhbGlkIChyZXN1bHRfdHlwZSkpCi0gICAg IHsKLS0gICAgICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKLSsgICAgICBMT05HRVNU IGxvd19ib3VuZCwgaGlnaF9ib3VuZCwgYnl0ZV9zdHJpZGU7Ci0gCi0gICAgICAgaWYgKGdldF9k aXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDAp Ci0gCWxvd19ib3VuZCA9IGhpZ2hfYm91bmQgPSAwOwotICAgICAgIENIRUNLX1RZUEVERUYgKGVs ZW1lbnRfdHlwZSk7Ci0rCi0rICAgICAgYnl0ZV9zdHJpZGUgPSBhYnMgKFRZUEVfQllURV9TVFJJ REUgKHJhbmdlX3R5cGUpKTsKLSsKLSAgICAgICAvKiBCZSBjYXJlZnVsIHdoZW4gc2V0dGluZyB0 aGUgYXJyYXkgbGVuZ3RoLiAgQWRhIGFycmF5cyBjYW4gYmUKLSAJIGVtcHR5IGFycmF5cyB3aXRo IHRoZSBoaWdoX2JvdW5kIGJlaW5nIHNtYWxsZXIgdGhhbiB0aGUgbG93X2JvdW5kLgotIAkgSW4g c3VjaCBjYXNlcywgdGhlIGFycmF5IGxlbmd0aCBzaG91bGQgYmUgemVyby4gICovCi0gICAgICAg aWYgKGhpZ2hfYm91bmQgPCBsb3dfYm91bmQpCi0gCVRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkg PSAwOwotKyAgICAgIGVsc2UgaWYgKGJ5dGVfc3RyaWRlID4gMCkKLSsJVFlQRV9MRU5HVEggKHJl c3VsdF90eXBlKSA9IGJ5dGVfc3RyaWRlICogKGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsK LSAgICAgICBlbHNlIGlmIChiaXRfc3RyaWRlID4gMCkKLSAJVFlQRV9MRU5HVEggKHJlc3VsdF90 eXBlKSA9Ci0gCSAgKGJpdF9zdHJpZGUgKiAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpICsg NykgLyA4OwotQEAgLTE2OTcsNyArMTcwOCw3IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3Ry dWN0IHR5cGUgKmR5bl8KLSAgIHN0cnVjdCB0eXBlICpzdGF0aWNfcmFuZ2VfdHlwZTsKLSAgIGNv bnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3A7Ci0gICBjb25zdCBzdHJ1Y3QgZHdhcmYyX2xv Y2V4cHJfYmF0b24gKmJhdG9uOwotLSAgc3RydWN0IGR5bmFtaWNfcHJvcCBsb3dfYm91bmQsIGhp Z2hfYm91bmQ7Ci0rICBzdHJ1Y3QgZHluYW1pY19wcm9wIGxvd19ib3VuZCwgaGlnaF9ib3VuZCwg c3RyaWRlOwotICAgc3RydWN0IHR5cGUgKnJhbmdlX2NvcHkgPSBjb3B5X3R5cGUgKGR5bl9yYW5n ZV90eXBlKTsKLSAKLSAgIGdkYl9hc3NlcnQgKFRZUEVfQ09ERSAoZHluX3JhbmdlX3R5cGUpID09 IFRZUEVfQ09ERV9SQU5HRSk7Ci1AQCAtMTcyOSwxMCArMTc0MCwxNyBAQCByZXNvbHZlX2R5bmFt aWNfcmFuZ2UgKHN0cnVjdCB0eXBlICpkeW5fCi0gICAgICAgaGlnaF9ib3VuZC5raW5kID0gUFJP UF9VTkRFRklORUQ7Ci0gICAgICAgaGlnaF9ib3VuZC5kYXRhLmNvbnN0X3ZhbCA9IDA7Ci0gICAg IH0KLSsgIAotKyAgcHJvcCA9ICZUWVBFX1JBTkdFX0RBVEEgKGR5bl9yYW5nZV90eXBlKS0+c3Ry aWRlOwotKyAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgYWRkciwgJnZhbHVl KSkKLSsgICAgewotKyAgICAgIHN0cmlkZS5raW5kID0gUFJPUF9DT05TVDsKLSsgICAgICBzdHJp ZGUuZGF0YS5jb25zdF92YWwgPSB2YWx1ZTsKLSsgICAgfQotIAotICAgc3RhdGljX3JhbmdlX3R5 cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAocmFuZ2VfY29weSwKLSAJCQkJCSBUWVBFX1RBUkdFVF9U WVBFIChyYW5nZV9jb3B5KSwKLS0JCQkJCSAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCk7Ci0rCQkJ CQkgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQsICZzdHJpZGUpOwotICAgVFlQRV9SQU5HRV9EQVRB IChzdGF0aWNfcmFuZ2VfdHlwZSktPmZsYWdfYm91bmRfZXZhbHVhdGVkID0gMTsKLSAgIHJldHVy biBzdGF0aWNfcmFuZ2VfdHlwZTsKLSB9Ci1AQCAtMTk5Niw3ICsyMDE0LDE3IEBAIHJlc29sdmVf ZHluYW1pY190eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSAgIHByb3AgPSBUWVBFX0RBVEFfTE9D QVRJT04gKHR5cGUpOwotICAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgYWRk ciwgJnZhbHVlKSkKLSAgICAgewotKyAgICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlID0gVFlQ RV9JTkRFWF9UWVBFICh0eXBlKTsKLSsKLSsgICAgICAvKiBBZGp1c3QgdGhlIGRhdGEgbG9jYXRp b24gd2l0aCB0aGUgdmFsdWUgb2YgYnl0ZSBzdHJpZGUgaWYgc2V0LCB3aGljaAotKyAgICAgICAg IGNhbiBkZXNjcmliZSB0aGUgc2VwYXJhdGlvbiBiZXR3ZWVuIHN1Y2Nlc3NpdmUgZWxlbWVudHMg YWxvbmcgdGhlCi0rICAgICAgICAgZGltZW5zaW9uLiAgKi8KLSsgICAgICBpZiAoVFlQRV9CWVRF X1NUUklERSAocmFuZ2VfdHlwZSkgPCAwKQotKyAgICAgICAgdmFsdWUgKz0gKFRZUEVfSElHSF9C T1VORCAocmFuZ2VfdHlwZSkgLSBUWVBFX0xPV19CT1VORCAocmFuZ2VfdHlwZSkpCi0rICAgICAg ICAgICAgICAgICAgKiBUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKTsKLSsKLSAgICAgICBh ZGp1c3RlZF9hZGRyZXNzID0gdmFsdWU7Ci0rCi0gICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0FE RFIgKHR5cGUpID0gdmFsdWU7Ci0gICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5cGUp ID0gUFJPUF9DT05TVDsKLSAgICAgfQotSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dk YnR5cGVzLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2dk YnR5cGVzLmgJMjAxNC0wNi0xNiAyMzoyNDoxMi43NDE1ODQzMTUgKzAyMDAKLSsrKyBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi9nZGJ0eXBlcy5oCTIwMTQtMDYtMTYgMjM6MjU6MTIuNzA0NjQwOTEx ICswMjAwCi1AQCAtNjcwLDYgKzY3MCwxMCBAQCBzdHJ1Y3QgbWFpbl90eXBlCi0gCi0gICAgICAg c3RydWN0IGR5bmFtaWNfcHJvcCBoaWdoOwotIAotKyAgICAgIC8qICogU3RyaWRlIG9mIHJhbmdl LiAgKi8KLSsKLSsgICAgICBzdHJ1Y3QgZHluYW1pY19wcm9wIHN0cmlkZTsKLSsKLSAgICAgICAv KiBUcnVlIGlmIEhJR0ggcmFuZ2UgYm91bmQgY29udGFpbnMgdGhlIG51bWJlciBvZiBlbGVtZW50 cyBpbiB0aGUKLSAJIHN1YnJhbmdlLiBUaGlzIGFmZmVjdHMgaG93IHRoZSBmaW5hbCBoaWdodCBi b3VuZCBpcyBjb21wdXRlZC4gICovCi0gCi1AQCAtMTIxOSw2ICsxMjIzLDE1IEBAIGV4dGVybiB2 b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKLSAgIFRZUEVfUkFOR0VfREFUQShyYW5n ZV90eXBlKS0+aGlnaC5raW5kCi0gI2RlZmluZSBUWVBFX0xPV19CT1VORF9LSU5EKHJhbmdlX3R5 cGUpIFwKLSAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93LmtpbmQKLSsjZGVmaW5l IFRZUEVfQllURV9TVFJJREUocmFuZ2VfdHlwZSkgXAotKyAgVFlQRV9SQU5HRV9EQVRBKHJhbmdl X3R5cGUpLT5zdHJpZGUuZGF0YS5jb25zdF92YWwKLSsjZGVmaW5lIFRZUEVfQllURV9TVFJJREVf QkxPQ0socmFuZ2VfdHlwZSkgXAotKyAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5zdHJp ZGUuZGF0YS5sb2NleHByCi0rI2RlZmluZSBUWVBFX0JZVEVfU1RSSURFX0xPQ0xJU1QocmFuZ2Vf dHlwZSkgXAotKyAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5zdHJpZGUuZGF0YS5sb2Ns aXN0Ci0rI2RlZmluZSBUWVBFX0JZVEVfU1RSSURFX0tJTkQocmFuZ2VfdHlwZSkgXAotKyAgVFlQ RV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5zdHJpZGUua2luZAotKwotIAotIC8qIEF0dHJpYnV0 ZSBhY2Nlc3NvcnMgZm9yIFZMQSBzdXBwb3J0LiAgKi8KLSAjZGVmaW5lIFRZUEVfREFUQV9MT0NB VElPTih0aGlzdHlwZSkgXAotQEAgLTEyNTAsNiArMTI2Myw5IEBAIGV4dGVybiB2b2lkIGFsbG9j YXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKLSAgICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEKFRZ UEVfSU5ERVhfVFlQRShhcnJheXR5cGUpKQotICNkZWZpbmUgVFlQRV9BUlJBWV9MT1dFUl9CT1VO RF9JU19VTkRFRklORUQoYXJyYXl0eXBlKSBcCi0gICAgVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVE KFRZUEVfSU5ERVhfVFlQRShhcnJheXR5cGUpKQotKyNkZWZpbmUgVFlQRV9BUlJBWV9TVFJJREVf SVNfVU5ERUZJTkVEKGFycmF5dHlwZSkgXAotKyAgIChUWVBFX0JZVEVfU1RSSURFKFRZUEVfSU5E RVhfVFlQRShhcnJheXR5cGUpKSA9PSAwKQotKwotIAotICNkZWZpbmUgVFlQRV9BUlJBWV9VUFBF Ul9CT1VORF9WQUxVRShhcnJheXR5cGUpIFwKLSAgICAoVFlQRV9ISUdIX0JPVU5EKFRZUEVfSU5E RVhfVFlQRSgoYXJyYXl0eXBlKSkpKQotQEAgLTE3MTgsNiArMTczNCw3IEBAIGV4dGVybiBzdHJ1 Y3QgdHlwZSAqY3JlYXRlX2FycmF5X3R5cGVfd2kKLSAKLSBleHRlcm4gc3RydWN0IHR5cGUgKmNy ZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAotIAkJCQkgICAg ICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqLAotKwkJCQkgICAgICAgY29uc3Qgc3RydWN0 IGR5bmFtaWNfcHJvcCAqLAotIAkJCQkgICAgICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAq KTsKLSAKLSBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlw ZSAqLCBzdHJ1Y3QgdHlwZSAqLAotSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbGFy aXRoLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3ZhbGFy aXRoLmMJMjAxNC0wNi0xNiAyMzoyNDoxMi43NDE1ODQzMTUgKzAyMDAKLSsrKyBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi92YWxhcml0aC5jCTIwMTQtMDYtMTYgMjM6MjY6NDIuNTQxNzI1ODg2ICsw MjAwCi1AQCAtMTk2LDYgKzE5Niw3IEBAIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0 IHZhbHVlICoKLSAgIHN0cnVjdCB0eXBlICplbHRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVf VEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKLSAgIHVuc2lnbmVkIGludCBlbHRfc2l6ZSA9IFRZ UEVfTEVOR1RIIChlbHRfdHlwZSk7Ci0gICB1bnNpZ25lZCBpbnQgZWx0X29mZnM7Ci0rICBMT05H RVNUIGVsdF9zdHJpZGUgPSBUWVBFX0JZVEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5 X3R5cGUpKTsKLSAgIHN0cnVjdCB2YWx1ZSAqdjsKLSAKLSAgIGlmIChUWVBFX05PVF9BU1NPQ0lB VEVEIChhcnJheV90eXBlKSkKLUBAIC0yMDMsNyArMjA0LDE4IEBAIHZhbHVlX3N1YnNjcmlwdGVk X3J2YWx1ZSAoc3RydWN0IHZhbHVlICoKLSAgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKGFycmF5 X3R5cGUpKQotICAgICBlcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5v dCBhbGxvY2F0ZWQiKSk7Ci0gCi0tICBlbHRfb2ZmcyA9IGVsdF9zaXplICogbG9uZ2VzdF90b19p bnQgKGluZGV4IC0gbG93ZXJib3VuZCk7Ci0rICBlbHRfb2ZmcyA9IGxvbmdlc3RfdG9faW50IChp bmRleCAtIGxvd2VyYm91bmQpOwotKwotKyAgaWYgKGVsdF9zdHJpZGUgPiAwKQotKyAgICBlbHRf b2ZmcyAqPSBlbHRfc3RyaWRlOwotKyAgZWxzZSBpZiAoZWx0X3N0cmlkZSA8IDApCi0rICAgIHsK LSsgICAgICBpbnQgb2ZmcyA9IChlbHRfb2ZmcyArIDEpICogZWx0X3N0cmlkZTsKLSsKLSsgICAg ICBlbHRfb2ZmcyA9IFRZUEVfTEVOR1RIIChhcnJheV90eXBlKSArIG9mZnM7Ci0rICAgIH0KLSsg IGVsc2UKLSsgICAgZWx0X29mZnMgKj0gZWx0X3NpemU7Ci0gCi0gICBpZiAoaW5kZXggPCBsb3dl cmJvdW5kIHx8ICghVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9JU19VTkRFRklORUQgKGFycmF5X3R5 cGUpCi0gCQkJICAgICAmJiBlbHRfb2ZmcyA+PSBUWVBFX0xFTkdUSCAoYXJyYXlfdHlwZSkpKQoK ZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMTJvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0x Mm9mMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMmVhYjAuLjAwMDAw MDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0xMm9mMjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwy NDMgKzAsMCBAQAotU3ViamVjdDogW1BBVENIIDEyLzIzXSB0ZXN0OiBiYXNpYyB0ZXN0cyBmb3Ig ZHluYW1pYyBhcnJheSBldmFsdWF0aW9ucyBpbiBGb3J0cmFuLgotTWVzc2FnZS1JZDogPDE0MDE4 NjEyNjYtNjI0MC0xMy1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVRl c3RzIGVuc3VyZSB0aGF0IHZhbHVlcyBvZiBGb3J0cmFuIGR5bmFtaWMgYXJyYXlzCi1jYW4gYmUg ZXZhbHVhdGVkIGNvcnJlY3RseSBpbiB2YXJpb3VzIHdheXMgYW5kIHN0YXRlcy4KLQotMjAxNC0w NS0yOCAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0gICAgICAgICAgICBT YW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNvbT4KLQotdGVzdHN1aXRlL2dk Yi5mb3J0cmFuLzoKLQotCSogdmxhLmY5MDogTmV3IGZpbGUuCi0JKiB2bGEtdmFsdWUuZXhwOiBO ZXcgZmlsZS4KLQotQ2hhbmdlLUlkOiBJMDIyOWMzYjU4ZjcyYWU4OWMyZWU0MmQxMjE5ZTQ1Mzhj YjZiZjAyMwotCi1TaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwu Y29tPgotLS0tCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUuZXhwIHwgIDE0 OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi92bGEuZjkwICAgICAgIHwgICA1NiArKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQs IDIwNCBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vdmxhLXZhbHVlLmV4cAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS5mOTAKLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vdmxhLXZhbHVlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVl LmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQ3YjhhMWUKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLmV4cAot QEAgLTAsMCArMSwxNDggQEAKLSsjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzdGFuZGFy ZF90ZXN0ZmlsZSAidmxhLmY5MCIKLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVz dGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKLSsgICAgIHtkZWJ1ZyBmOTAgcXVp ZXR9XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVu IHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAg IGNvbnRpbnVlCi0rfQotKwotKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gbm9uIGFsbG9jYXRl ZCBWTEEKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1pbml0Il0K LStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMS1pbml0IgotK2dkYl90ZXN0ICJwcmlu dCB2bGExIiAiID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHJpbnQgbm9uLWFsbG9jYXRlZCB2bGExIgot K2dkYl90ZXN0ICJwcmludCAmdmxhMSIgXAotKyAgIiA9IFxcXChQVFIgVE8gLT4gXFxcKCByZWFs XFxcKGtpbmQ9NFxcXCkgXFxcKDxub3QgYWxsb2NhdGVkPlxcXClcXFwpXFxcKSAkaGV4IiBcCi0r ICAicHJpbnQgbm9uLWFsbG9jYXRlZCAmdmxhMSIKLStnZGJfdGVzdCAicHJpbnQgdmxhMSgxLDEs MSkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIgXAotKyAg InByaW50IG1lbWJlciBpbiBub24tYWxsb2NhdGVkIHZsYTEgKDEpIgotK2dkYl90ZXN0ICJwcmlu dCB2bGExKDEwMSwyMDIsMzAzKSIgXAotKyAgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVz ZSBub3QgYWxsb2NhdGVkIiBcCi0rICAicHJpbnQgbWVtYmVyIGluIG5vbi1hbGxvY2F0ZWQgdmxh MSAoMikiCi0rZ2RiX3Rlc3QgInByaW50IHZsYTEoNSwyLDE4KT0xIiAibm8gc3VjaCB2ZWN0b3Ig ZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKLSsgICJzZXQgbWVtYmVyIGluIG5vbi1h bGxvY2F0ZWQgdmxhMSIKLSsKLSsjIFRyeSB0byBhY2Nlc3MgdmFsdWUgaW4gYWxsb2NhdGVkIFZM QQotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWFsbG9jYXRlZCJd Ci0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTItYWxsb2NhdGVkIgotK2dkYl90ZXN0 ICJuZXh0IiAiXFxkKyhcXHR8XFxzKSt2bGExXFxcKDMsIDYsIDlcXFwpID0gNDIiIFwKLSsgICJz dGVwIG92ZXIgdmFsdWUgYXNzaWdubWVudCBvZiB2bGExIgotK2dkYl90ZXN0ICJwcmludCAmdmxh MSIgXAotKyAgIiA9IFxcXChQVFIgVE8gLT4gXFxcKCByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDEw LDEwLDEwXFxcKVxcXClcXFwpICRoZXgiIFwKLSsgICJwcmludCBhbGxvY2F0ZWQgJnZsYTEiCi0r Z2RiX3Rlc3QgInByaW50IHZsYTEoMywgNiwgOSkiICIgPSAxMzExIiAicHJpbnQgYWxsb2NhdGVk IHZsYTEoMyw2LDkpIgotK2dkYl90ZXN0ICJwcmludCB2bGExKDEsIDMsIDgpIiAiID0gMTMxMSIg InByaW50IGFsbG9jYXRlZCB2bGExKDEsMyw4KSIKLStnZGJfdGVzdCAicHJpbnQgdmxhMSg5LCA5 LCA5KSA9IDk5OSIgIiA9IDk5OSIgXAotKyAgInByaW50IGFsbG9jYXRlZCB2bGExKDksOSw5KT0x IgotKwotKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gYWxsb2NhdGVkIFZMQSBhZnRlciBzcGVj aWZpYyBhc3NpZ25tZW50Ci0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZs YTEtZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMS1maWxsZWQiCi0r Z2RiX3Rlc3QgInByaW50IHZsYTEoMywgNiwgOSkiICIgPSA0MiIgXAotKyAgInByaW50IGFsbG9j YXRlZCB2bGExKDMsNiw5KSBhZnRlciBzcGVjaWZpYyBhc3NpZ25tZW50IChmaWxsZWQpIgotK2dk Yl90ZXN0ICJwcmludCB2bGExKDEsIDMsIDgpIiAiID0gMTAwMSIgXAotKyAgInByaW50IGFsbG9j YXRlZCB2bGExKDEsMyw4KSBhZnRlciBzcGVjaWZpYyBhc3NpZ25tZW50IChmaWxsZWQpIgotK2dk Yl90ZXN0ICJwcmludCB2bGExKDksIDksIDkpIiAiID0gOTk5IiBcCi0rICAicHJpbnQgYWxsb2Nh dGVkIHZsYTEoOSw5LDkpIGFmdGVyIGFzc2lnbm1lbnQgaW4gZGVidWdnZXIgKGZpbGxlZCkiCi0r Ci0rIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiB1bmRlZmluZWQgcG9pbnRlciB0byBWTEEgKGRh bmdsaW5nKQotK2dkYl90ZXN0ICJwcmludCBwdmxhIiAiID0gPG5vdCBhc3NvY2lhdGVkPiIgInBy aW50IHVuZGVmaW5lZCBwdmxhIgotK2dkYl90ZXN0ICJwcmludCAmcHZsYSIgXAotKyAgIiA9IFxc XChQVFIgVE8gLT4gXFxcKCByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDxub3QgYXNzb2NpYXRlZD5c XFwpXFxcKVxcXCkgJGhleCIgXAotKyAgInByaW50IG5vbi1hc3NvY2lhdGVkICZwdmxhIgotK2dk Yl90ZXN0ICJwcmludCBwdmxhKDEsIDMsIDgpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNh dXNlIG5vdCBhc3NvY2lhdGVkIiBcCi0rICAicHJpbnQgdW5kZWZpbmVkIHB2bGEoMSwzLDgpIgot KwotKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gcG9pbnRlciB0byBWTEEgYW5kIGNvbXBhcmUg dGhlbQotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLWFzc29jaWF0 ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWFzc29jaWF0ZWQiCi0rZ2Ri X3Rlc3QgInByaW50ICZwdmxhIiBcCi0rICAiID0gXFxcKFBUUiBUTyAtPiBcXFwoIHJlYWxcXFwo a2luZD00XFxcKSBcXFwoMTAsMTAsMTBcXFwpXFxcKVxcXCkgJGhleCIgXAotKyAgInByaW50IGFz c29jaWF0ZWQgJnB2bGEiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEoMywgNiwgOSkiICIgPSA0MiIg InByaW50IGFzc29jaWF0ZWQgcHZsYSgzLDYsOSkiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEoMSwg MywgOCkiICIgPSAxMDAxIiAicHJpbnQgYXNzb2NpYXRlZCBwdmxhKDEsMyw4KSIKLStnZGJfdGVz dCAicHJpbnQgcHZsYSg5LCA5LCA5KSIgIiA9IDk5OSIgInByaW50IGFzc29jaWF0ZWQgcHZsYSg5 LDksOSkiCi0rCi0rIyBGaWxsIHZhbHVlcyB0byBWTEEgdXNpbmcgcG9pbnRlciBhbmQgY2hlY2sK LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1yZS1hc3NvY2lhdGVk Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicHZsYS1yZS1hc3NvY2lhdGVkIgotK2dk Yl90ZXN0ICJwcmludCBwdmxhKDUsIDQ1LCAyMCkiIFwKLSsgICIgPSAxIiAicHJpbnQgcHZsYSg1 LCA0NSwgMjApIGFmdGVyIGZpbGxlZCB1c2luZyBwb2ludGVyIgotK2dkYl90ZXN0ICJwcmludCB2 bGEyKDUsIDQ1LCAyMCkiIFwKLSsgICIgPSAxIiAicHJpbnQgdmxhMig1LCA0NSwgMjApIGFmdGVy IGZpbGxlZCB1c2luZyBwb2ludGVyIgotK2dkYl90ZXN0ICJwcmludCBwdmxhKDcsIDQ1LCAxNCki ICIgPSAyIiBcCi0rICAicHJpbnQgcHZsYSg3LCA0NSwgMTQpIGFmdGVyIGZpbGxlZCB1c2luZyBw b2ludGVyIgotK2dkYl90ZXN0ICJwcmludCB2bGEyKDcsIDQ1LCAxNCkiICIgPSAyIiBcCi0rICAi cHJpbnQgdmxhMig3LCA0NSwgMTQpIGFmdGVyIGZpbGxlZCB1c2luZyBwb2ludGVyIgotKwotKyMg VHJ5IHRvIGFjY2VzcyB2YWx1ZXMgb2YgZGVhc3NvY2lhdGVkIFZMQSBwb2ludGVyCi0rZ2RiX2Jy ZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInB2bGEtZGVhc3NvY2lhdGVkIl0KLStnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAicHZsYS1kZWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInBy aW50IHB2bGEoNSwgNDUsIDIwKSIgXAotKyAgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVz ZSBub3QgYXNzb2NpYXRlZCIgXAotKyAgInByaW50IHB2bGEoNSwgNDUsIDIwKSBhZnRlciBkZWFz c29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEoNywgNDUsIDE0KSIgXAotKyAgIm5vIHN1 Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYXNzb2NpYXRlZCIgXAotKyAgInByaW50IHB2 bGEoNywgNDUsIDE0KSBhZnRlciBkaXNzYXNvY2lhdGVkIgotK2dkYl90ZXN0ICJwcmludCBwdmxh IiAiID0gPG5vdCBhc3NvY2lhdGVkPiIgXAotKyAgInByaW50IHZsYTEgYWZ0ZXIgZGVhc3NvY2lh dGVkIgotKwotKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgb2YgZGVhbGxvY2F0ZWQgVkxBCi0rZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtZGVhbGxvY2F0ZWQiXQotK2dk Yl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWRlYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJw cmludCB2bGExKDMsIDYsIDkpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBh bGxvY2F0ZWQiIFwKLSsgICJwcmludCBhbGxvY2F0ZWQgdmxhMSgzLDYsOSkgYWZ0ZXIgc3BlY2lm aWMgYXNzaWdubWVudCAoZGVhbGxvY2F0ZWQpIgotK2dkYl90ZXN0ICJwcmludCB2bGExKDEsIDMs IDgpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKLSsg ICJwcmludCBhbGxvY2F0ZWQgdmxhMSgxLDMsOCkgYWZ0ZXIgc3BlY2lmaWMgYXNzaWdubWVudCAo ZGVhbGxvY2F0ZWQpIgotK2dkYl90ZXN0ICJwcmludCB2bGExKDksIDksIDkpIiAibm8gc3VjaCB2 ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKLSsgICJwcmludCBhbGxvY2F0 ZWQgdmxhMSg5LDksOSkgYWZ0ZXIgYXNzaWdubWVudCBpbiBkZWJ1Z2dlciAoZGVhbGxvY2F0ZWQp IgotKwotKwotKyMgVHJ5IHRvIGFzc2lnbiBWTEEgdG8gdXNlciB2YXJpYWJsZQotK2NsZWFuX3Jl c3RhcnQgJHt0ZXN0ZmlsZX0KLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBl cnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQot K30KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMi1hbGxvY2F0ZWQi XQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEyLWFsbG9jYXRlZCIKLStnZGJfdGVz dCAibmV4dCIgIlxcZCsuKnZsYTFcXCgzLCA2LCA5XFwpID0gNDIiICJuZXh0ICgxKSIKLSsKLStn ZGJfdGVzdF9ub19vdXRwdXQgInNldCBcJG15dmFyID0gdmxhMSIgInNldCBcJG15dmFyID0gdmxh MSIKLStnZGJfdGVzdCAicHJpbnQgXCRteXZhciIgXAotKyAgIiA9IFxcKCAqXFwoICpcXCggKjEz MTEsICoxMzExLCAqMTMxMSxcWygpMTMxMSwgLlxdKlxcKSIgXAotKyAgInByaW50IFwkbXl2YXIg c2V0IHRvIHZsYTEiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiICJcXGQrLip2bGExXFwoMSwgMywgOFxc KSA9IDEwMDEiICJuZXh0ICgyKSIKLStnZGJfdGVzdCAicHJpbnQgXCRteXZhcigzLDYsOSkiICIg PSAxMzExIiAicHJpbnQgXCRteXZhcigzLDYsOSkiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9n ZXRfbGluZV9udW1iZXIgInB2bGEtYXNzb2NpYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgInB2bGEtYXNzb2NpYXRlZCIKLStnZGJfdGVzdF9ub19vdXRwdXQgInNldCBcJG15cHZh ciA9IHB2bGEiICJzZXQgXCRteXB2YXIgPSBwdmxhIgotK2dkYl90ZXN0ICJwcmludCBcJG15cHZh cigxLDMsOCkiICIgPSAxMDAxIiAicHJpbnQgXCRteXB2YXIoMSwzLDgpIgotKwotKyMgZGVhbGxv Y2F0ZSBwb2ludGVyIGFuZCBtYWtlIHN1cmUgdXNlciBkZWZpbmVkIHZhcmlhYmxlIHN0aWxsIGhh cyB0aGUKLSsjIHJpZ2h0IHZhbHVlLgotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJwdmxhLWRlYXNzb2NpYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2 bGEtZGVhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwcmludCBcJG15cHZhcigxLDMsOCkiICIgPSAx MDAxIiBcCi0rICAicHJpbnQgXCRteXB2YXIoMSwzLDgpIGFmdGVyIGRlYWxsb2NhdGVkIgotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLmY5MCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vdmxhLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAw MDAuLjczNDI1ZjMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vdmxhLmY5MAotQEAgLTAsMCArMSw1NiBAQAotKyEgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsh Ci0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K LSsKLStwcm9ncmFtIHZsYQotKyAgcmVhbCwgdGFyZ2V0LCBhbGxvY2F0YWJsZSA6OiB2bGExICg6 LCA6LCA6KQotKyAgcmVhbCwgdGFyZ2V0LCBhbGxvY2F0YWJsZSA6OiB2bGEyICg6LCA6LCA6KQot KyAgcmVhbCwgdGFyZ2V0LCBhbGxvY2F0YWJsZSA6OiB2bGEzICg6LCA6KQotKyAgcmVhbCwgcG9p bnRlciA6OiBwdmxhICg6LCA6LCA6KQotKyAgbG9naWNhbCA6OiBsCi0rCi0rICBhbGxvY2F0ZSAo dmxhMSAoMTAsMTAsMTApKSAgICAgICAgICAhIHZsYTEtaW5pdAotKyAgbCA9IGFsbG9jYXRlZCh2 bGExKQotKwotKyAgYWxsb2NhdGUgKHZsYTIgKDE6Nyw0Mjo1MCwxMzozNSkpICAgISB2bGExLWFs bG9jYXRlZAotKyAgbCA9IGFsbG9jYXRlZCh2bGEyKQotKwotKyAgdmxhMSg6LCA6LCA6KSA9IDEz MTEgICAgICAgICAgICAgICAgISB2bGEyLWFsbG9jYXRlZAotKyAgdmxhMSgzLCA2LCA5KSA9IDQy Ci0rICB2bGExKDEsIDMsIDgpID0gMTAwMQotKyAgdmxhMSg2LCAyLCA3KSA9IDEzCi0rCi0rICB2 bGEyKDosIDosIDopID0gMTMxMSAgICAgICAgICAgICAgICAhIHZsYTEtZmlsbGVkCi0rICB2bGEy KDUsIDQ1LCAyMCkgPSA0MgotKwotKyAgcHZsYSA9PiB2bGExICAgICAgICAgICAgICAgICAgICAg ICAgISB2bGEyLWZpbGxlZAotKyAgbCA9IGFzc29jaWF0ZWQocHZsYSkKLSsKLSsgIHB2bGEgPT4g dmxhMiAgICAgICAgICAgICAgICAgICAgICAgICEgcHZsYS1hc3NvY2lhdGVkCi0rICBsID0gYXNz b2NpYXRlZChwdmxhKQotKyAgcHZsYSg1LCA0NSwgMjApID0gMQotKyAgcHZsYSg3LCA0NSwgMTQp ID0gMgotKwotKyAgcHZsYSA9PiBudWxsKCkgICAgICAgICAgICAgICAgICAgICAgISBwdmxhLXJl LWFzc29jaWF0ZWQKLSsgIGwgPSBhc3NvY2lhdGVkKHB2bGEpCi0rCi0rICBkZWFsbG9jYXRlICh2 bGExKSAgICAgICAgICAgICAgICAgICAhIHB2bGEtZGVhc3NvY2lhdGVkCi0rICBsID0gYWxsb2Nh dGVkKHZsYTEpCi0rCi0rICBkZWFsbG9jYXRlICh2bGEyKSAgICAgICAgICAgICAgICAgICAhIHZs YTEtZGVhbGxvY2F0ZWQKLSsgIGwgPSBhbGxvY2F0ZWQodmxhMikKLSsKLSsgIGFsbG9jYXRlICh2 bGEzICgyLDIpKSAgICAgICAgICAgICAgICEgdmxhMi1kZWFsbG9jYXRlZAotKyAgdmxhMyg6LDop ID0gMTMKLStlbmQgcHJvZ3JhbSB2bGEKLS0tIAotMS43LjkuNQotCgpkaWZmIC0tZ2l0IGEvZ2Ri LXZsYS1pbnRlbC0xM29mMjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTEzb2YyMy5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzE0ZmRjOC4uMDAwMDAwMAotLS0gYS9nZGItdmxh LWludGVsLTEzb2YyMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3MyArMCwwIEBACi1TdWJq ZWN0OiBbUEFUQ0ggMTMvMjNdIHRlc3Q6IGV2YWx1YXRlIEZvcnRyYW4gZHluYW1pYyBhcnJheXMg b2YgdHlwZXMuCi1NZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQwLTE0LWdpdC1zZW5kLWVtYWls LWtldmVuLmJvZWxsQGludGVsLmNvbT4KLQotVGVzdHMgZW5zdXJlIHRoYXQgZHluYW1pYyBhcnJh eXMgb2YgdmFyaW91cyBGb3J0cmFuCi1kYXRhdHlwZXMgY2FuIGJlIGV2YWx1YXRlZCBjb3JyZWN0 bHkuCi0KLTIwMTQtMDUtMjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgot ICAgICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+Ci0K LXRlc3RzdWl0ZS9nZGIuZm9ydHJhbi86Ci0KLQkqIHZsYS10eXBlLmV4cDogTmV3IGZpbGUuCi0J KiB2bGEtdHlwZS5mOTA6IE5ldyBmaWxlLgotCi1DaGFuZ2UtSWQ6IEk3YzFhMzgxYzVjYjBhZDQ4 ODcyYjc3OTkzZTdjN2ZkYWM4NWJjNzU2Ci0KLVNpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxr ZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0tLS0KLSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3Zs YS10eXBlLmV4cCB8ICAxMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBnZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmY5MCB8ICAxMDcgKysrKysrKysrKysrKysr KysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMzQgaW5zZXJ0aW9ucygrKQotIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmV4cAotIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmY5MAot Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAuLmFkNTBkOWMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXR5cGUuZXhwCi1AQCAtMCwwICsxLDEyNyBAQAotKyMgQ29w eXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgotKwotK2lm IHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3Jj ZmlsZX0gXAotKyAgICAge2RlYnVnIGY5MCBxdWlldH1dIH0gewotKyAgICByZXR1cm4gLTEKLSt9 Ci0rCi0raWYgIVtydW50byBNQUlOX19dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1 biB0byBicmVha3BvaW50IE1BSU5fXyIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rIyBDaGVjayBp ZiBub3QgYWxsb2NhdGVkIFZMQSBpbiB0eXBlIGRvZXMgbm90IGJyZWFrCi0rIyB0aGUgZGVidWdn ZXIgd2hlbiBhY2Nlc3NpbmcgaXQuCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgImJlZm9yZS1hbGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJiZWZv cmUtYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwcmludCB0d292IiAiID0gXFxcKCA8bm90IGFsbG9j YXRlZD4sIDxub3QgYWxsb2NhdGVkPiBcXFwpIiBcCi0rICAicHJpbnQgdHdvdiBiZWZvcmUgYWxs b2NhdGVkIgotK2dkYl90ZXN0ICJwcmludCB0d292JWl2bGExIiAiID0gPG5vdCBhbGxvY2F0ZWQ+ IiBcCi0rICAicHJpbnQgdHdvdiVpdmxhMSBiZWZvcmUgYWxsb2NhdGVkIgotKwotKyMgQ2hlY2sg dHlwZSB3aXRoIG9uZSBWTEEncyBpbnNpZGUKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAib25ldi1maWxsZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJvbmV2 LWZpbGxlZCIKLStnZGJfdGVzdCAicHJpbnQgb25ldiVpdmxhKDUsIDExLCAyMykiICIgPSAxIiAi cHJpbnQgb25ldiVpdmxhKDUsIDExLCAyMykiCi0rZ2RiX3Rlc3QgInByaW50IG9uZXYlaXZsYSgx LCAyLCAzKSIgIiA9IDEyMyIgInByaW50IG9uZXYlaXZsYSgxLCAyLCAzKSIKLStnZGJfdGVzdCAi cHJpbnQgb25ldiVpdmxhKDMsIDIsIDEpIiAiID0gMzIxIiAicHJpbnQgb25ldiVpdmxhKDMsIDIs IDEpIgotK2dkYl90ZXN0ICJwdHlwZSBvbmV2IiBcCi0rICAidHlwZSA9IFR5cGUgb25lXHJcblxc cytyZWFsXFxcKGtpbmQ9NFxcXCkgOjogaXZsYVxcXCgxMSwyMiwzM1xcXClcclxuRW5kIFR5cGUg b25lIiBcCi0rICAicHR5cGUgb25ldiIKLSsKLSsjIENoZWNrIHR5cGUgd2l0aCB0d28gVkxBJ3Mg aW5zaWRlCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInR3b3YtZmlsbGVk Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidHdvdi1maWxsZWQiCi0rZ2RiX3Rlc3Qg InByaW50IHR3b3YlaXZsYTEoNSwgMTEsIDIzKSIgIiA9IDEiIFwKLSsgICJwcmludCB0d292JWl2 bGExKDUsIDExLCAyMykiCi0rZ2RiX3Rlc3QgInByaW50IHR3b3YlaXZsYTEoMSwgMiwgMykiICIg PSAxMjMiIFwKLSsgICJwcmludCB0d292JWl2bGExKDEsIDIsIDMpIgotK2dkYl90ZXN0ICJwcmlu dCB0d292JWl2bGExKDMsIDIsIDEpIiAiID0gMzIxIiBcCi0rICAicHJpbnQgdHdvdiVpdmxhMSgz LCAyLCAxKSIKLStnZGJfdGVzdCAicHR5cGUgdHdvdiIgXAotKyAgInR5cGUgPSBUeXBlIHR3b1xy XG5cXHMrcmVhbFxcXChraW5kPTRcXFwpIDo6IGl2bGExXFxcKDUsMTIsOTlcXFwpXHJcblxccyty ZWFsXFxcKGtpbmQ9NFxcXCkgOjogaXZsYTJcXFwoOSwxMlxcXClcclxuRW5kIFR5cGUgdHdvIiBc Ci0rICAicHR5cGUgdHdvdiIKLSsKLSsjIENoZWNrIHR5cGUgd2l0aCBhdHRyaWJ1dGUgYXQgYmVn aW5uIG9mIHR5cGUKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidGhyZWV2 LWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInRocmVldi1maWxsZWQiCi0r Z2RiX3Rlc3QgInByaW50IHRocmVldiVpdmxhKDEpIiAiID0gMSIgInByaW50IHRocmVldiVpdmxh KDEpIgotK2dkYl90ZXN0ICJwcmludCB0aHJlZXYlaXZsYSg1KSIgIiA9IDQyIiAicHJpbnQgdGhy ZWV2JWl2bGEoNSkiCi0rZ2RiX3Rlc3QgInByaW50IHRocmVldiVpdmxhKDE0KSIgIiA9IDI0IiAi cHJpbnQgdGhyZWV2JWl2bGEoMTQpIgotK2dkYl90ZXN0ICJwcmludCB0aHJlZXYlaXZhciIgIiA9 IDMuMTRcXGQrPyIgInByaW50IHRocmVldiVpdmFyIgotK2dkYl90ZXN0ICJwdHlwZSB0aHJlZXYi IFwKLSsgICJ0eXBlID0gVHlwZSB0aHJlZVxyXG5cXHMrcmVhbFxcXChraW5kPTRcXFwpIDo6IGl2 YXJcclxuXFxzK3JlYWxcXFwoa2luZD00XFxcKSA6OiBpdmxhXFxcKDIwXFxcKVxyXG5FbmQgVHlw ZSB0aHJlZSIgXAotKyAgInB0eXBlIHRocmVldiIKLSsKLSsjIENoZWNrIHR5cGUgd2l0aCBhdHRy aWJ1dGUgYXQgZW5kIG9mIHR5cGUKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAiZm91cnYtZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiZm91cnYtZmls bGVkIgotK2dkYl90ZXN0ICJwcmludCBmb3VydiVpdmxhKDEpIiAiID0gMSIgInByaW50IGZvdXJ2 JWl2bGEoMSkiCi0rZ2RiX3Rlc3QgInByaW50IGZvdXJ2JWl2bGEoMikiICIgPSAyIiAicHJpbnQg Zm91cnYlaXZsYSgyKSIKLStnZGJfdGVzdCAicHJpbnQgZm91cnYlaXZsYSg3KSIgIiA9IDciICJw cmludCBmb3VydiVpdmxhKDcpIgotK2dkYl90ZXN0ICJwcmludCBmb3VydiVpdmxhKDEyKSIgIm5v IHN1Y2ggdmVjdG9yIGVsZW1lbnQiICJwcmludCBmb3VydiVpdmxhKDEyKSIKLStnZGJfdGVzdCAi cHJpbnQgZm91cnYlaXZhciIgIiA9IDMuMTRcXGQrPyIgInByaW50IGZvdXJ2JWl2YXIiCi0rZ2Ri X3Rlc3QgInB0eXBlIGZvdXJ2IiBcCi0rICAidHlwZSA9IFR5cGUgZm91clxyXG5cXHMrcmVhbFxc XChraW5kPTRcXFwpIDo6IGl2bGFcXFwoMTBcXFwpXHJcblxccytyZWFsXFxcKGtpbmQ9NFxcXCkg OjogaXZhclxyXG5FbmQgVHlwZSBmb3VyIiBcCi0rICAicHR5cGUgZm91cnYiCi0rCi0rIyBDaGVj ayBWTEEgb2YgdHlwZXMKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAib25l dmxhLWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm9uZXZsYS1maWxsZWQi Ci0rZ2RiX3Rlc3QgInByaW50IG9uZXZsYSgyLDIpJWl2bGEoMywgNiwgOSkiIFwKLSsgICIgPSAz NjkiICJwcmludCBvbmV2bGEoMiwyKSVpdmxhKDMsIDYsIDkpIgotK2dkYl90ZXN0ICJwcmludCBv bmV2bGEoMiwyKSVpdmxhKDksIDMsIDYpIiBcCi0rICAiID0gOTM2IiAicHJpbnQgb25ldmxhKDIs MiklaXZsYSg5LCAzLCA2KSIKLSsKLSsjIENoZWNrIG5lc3RlZCB0eXBlcyBjb250YWluaW5nIGEg VkxBCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImZpdmV2LWZpbGxlZCJd Ci0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImZpdmV2LWZpbGxlZCIKLStnZGJfdGVzdCAi cHJpbnQgZml2ZXYldG9uZSVpdmxhKDUsIDUsIDEpIiAiID0gMSIgXAotKyAgInByaW50IGZpdmV2 JXRvbmUlaXZsYSg1LCA1LCAxKSIKLStnZGJfdGVzdCAicHJpbnQgZml2ZXYldG9uZSVpdmxhKDEs IDIsIDMpIiAiID0gMTIzIiBcCi0rICAicHJpbnQgZml2ZXYldG9uZSVpdmxhKDEsIDIsIDMpIgot K2dkYl90ZXN0ICJwcmludCBmaXZldiV0b25lJWl2bGEoMywgMiwgMSkiICIgPSAzMjEiIFwKLSsg ICJwcmludCBmaXZldiV0b25lJWl2bGEoMywgMiwgMSkiCi0rZ2RiX3Rlc3QgInB0eXBlIGZpdmV2 IiBcCi0rICAidHlwZSA9IFR5cGUgZml2ZVxyXG5cXHMrVHlwZSBvbmVcclxuXFxzK3JlYWxcXFwo a2luZD00XFxcKSA6OiBpdmxhXFxcKDEwLDEwLDEwXFxcKVxyXG5cXHMrRW5kIFR5cGUgb25lIDo6 IHRvbmVcclxuRW5kIFR5cGUgZml2ZSIgXAotKyAgInB0eXBlIGZpdmV2IgotKwotKyMgQ2hlY2sg cG9pbnRlciB0byB0eXBlLCBjb250YWluaW5nIGEgVkxBCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9n ZXRfbGluZV9udW1iZXIgIm9uZXAtYXNzb2NpYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgIm9uZXAtYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgb25ldiIgIi4qcmVhbFxc XChraW5kPTRcXFwpIDo6IGl2bGFcXFwoMTEsMjIsMzNcXFwpLioiIFwKLSsgICJwdHlwZSBvbmV2 IgotK2dkYl90ZXN0ICJwdHlwZSBvbmVwIiAiLipyZWFsXFxcKGtpbmQ9NFxcXCkgOjogaXZsYVxc XCgxMSwyMiwzM1xcXCkuKiIgXAotKyAgInB0eXBlIG9uZXAiCi0rCi0rZ2RiX3Rlc3QgInByaW50 IG9uZXYlaXZsYSIgIiA9IFxcKCAqXFwoICpcXCggKjIsICoyLCAqMixcWygpMiwgLlxdKlxcKSIg XAotKyAgInByaW50IG9uZXYlaXZsYSIKLStnZGJfdGVzdCAicHJpbnQgb25ldiIgIiA9IFxcKCAq XFwoICpcXCggKlxcKCAqMiwgKjIsICoyLFxbKCkyLCAuXF0qXFwpIiBcCi0rICAicHJpbnQgb25l diIKLStnZGJfdGVzdCAicHJpbnQgb25lcCIgIi4qcmVhbFxcXChraW5kPTRcXFwpIDo6IGl2bGFc XFwoMTEsMjIsMzNcXFwpLioiIFwKLSsgICJwcmludCBvbmVwIgotKwotK2dkYl90ZXN0ICJwdHlw ZSBvbmV2JWl2bGEiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIFxcXCgxMSwyMiwzM1xcXCki IFwKLSsgICJwdHlwZSBvbmV2JWl2bGEiCi0rZ2RiX3Rlc3QgInB0eXBlIG9uZXAlaXZsYSIgInR5 cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDExLDIyLDMzXFxcKSIgXAotKyAgInB0eXBlIG9u ZXAlaXZsYSIKLSsKLStnZGJfdGVzdCAicHR5cGUgb25ldiVpdmxhKDEsMSwxKSIgInR5cGUgPSBy ZWFsXFxcKGtpbmQ9NFxcXCkiIFwKLSsgICJwdHlwZSBvbmV2JWl2bGEoMSwxLDEpIgotK2dkYl90 ZXN0ICJwdHlwZSBvbmVwJWl2bGEoMSwxLDEpIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSIg XAotKyAgInB0eXBlIG9uZXAlaXZsYSgxLDEsMSkiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3Zs YS10eXBlLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjA2NjAwYzkK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXR5cGUu ZjkwCi1AQCAtMCwwICsxLDEwNyBAQAotKyEgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwg SW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcs IFVTQS4KLSsKLStwcm9ncmFtIHZsYV9zdHJ1Y3QKLSsgIHR5cGUgOjogb25lCi0rICAgIHJlYWws IGFsbG9jYXRhYmxlIDo6IGl2bGEgKDosIDosIDopCi0rICBlbmQgdHlwZSBvbmUKLSsgIHR5cGUg OjogdHdvCi0rICAgIHJlYWwsIGFsbG9jYXRhYmxlIDo6IGl2bGExICg6LCA6LCA6KQotKyAgICBy ZWFsLCBhbGxvY2F0YWJsZSA6OiBpdmxhMiAoOiwgOikKLSsgIGVuZCB0eXBlIHR3bwotKyAgdHlw ZSA6OiB0aHJlZQotKyAgICByZWFsIDo6IGl2YXIKLSsgICAgcmVhbCwgYWxsb2NhdGFibGUgOjog aXZsYSAoOikKLSsgIGVuZCB0eXBlIHRocmVlCi0rICB0eXBlIDo6IGZvdXIKLSsgICAgcmVhbCwg YWxsb2NhdGFibGUgOjogaXZsYSAoOikKLSsgICAgcmVhbCA6OiBpdmFyCi0rICBlbmQgdHlwZSBm b3VyCi0rICB0eXBlIDo6IGZpdmUKLSsgICAgdHlwZShvbmUpIDo6IHRvbmUKLSsgIGVuZCB0eXBl IGZpdmUKLSsKLSsgIHR5cGUob25lKSwgdGFyZ2V0ICAgICAgICA6OiBvbmV2Ci0rICB0eXBlKHR3 bykgICAgICAgICAgICAgICAgOjogdHdvdgotKyAgdHlwZSh0aHJlZSkgICAgICAgICAgICAgIDo6 IHRocmVldgotKyAgdHlwZShmb3VyKSAgICAgICAgICAgICAgIDo6IGZvdXJ2Ci0rICB0eXBlKGZp dmUpICAgICAgICAgICAgICAgOjogZml2ZXYKLSsgIHR5cGUob25lKSwgYWxsb2NhdGFibGUgICA6 OiBvbmV2bGEoOiwgOikKLSsgIHR5cGUob25lKSwgcG9pbnRlciAgICAgICA6OiBvbmVwCi0rICBs b2dpY2FsICAgICAgICAgICAgICAgICAgOjogbAotKyAgaW50ZWdlciAgICAgICAgICAgICAgICAg IDo6IGksIGoKLSsKLSsgIGFsbG9jYXRlIChvbmV2JWl2bGEgKDExLDIyLDMzKSkgICAgICAgICAh IGJlZm9yZS1hbGxvY2F0ZWQKLSsgIGwgPSBhbGxvY2F0ZWQob25ldiVpdmxhKQotKwotKyAgb25l diVpdmxhKDosIDosIDopID0gMQotKyAgb25ldiVpdmxhKDEsIDIsIDMpID0gMTIzCi0rICBvbmV2 JWl2bGEoMywgMiwgMSkgPSAzMjEKLSsKLSsgIGFsbG9jYXRlICh0d292JWl2bGExICg1LDEyLDk5 KSkgICAgICAgICAhIG9uZXYtZmlsbGVkCi0rICBsID0gYWxsb2NhdGVkKHR3b3YlaXZsYTEpCi0r ICBhbGxvY2F0ZSAodHdvdiVpdmxhMiAoOSwxMikpCi0rICBsID0gYWxsb2NhdGVkKHR3b3YlaXZs YTIpCi0rCi0rICB0d292JWl2bGExKDosIDosIDopID0gMQotKyAgdHdvdiVpdmxhMSgxLCAyLCAz KSA9IDEyMwotKyAgdHdvdiVpdmxhMSgzLCAyLCAxKSA9IDMyMQotKwotKyAgdHdvdiVpdmxhMig6 LCA6KSA9IDEKLSsgIHR3b3YlaXZsYTIoMSwgMikgPSAxMgotKyAgdHdvdiVpdmxhMigyLCAxKSA9 IDIxCi0rCi0rICB0aHJlZXYlaXZhciA9IDMuMTQgICAgICAgICAgICAgICAgICAgICAgISB0d292 LWZpbGxlZAotKyAgYWxsb2NhdGUgKHRocmVldiVpdmxhICgyMCkpCi0rICBsID0gYWxsb2NhdGVk KHRocmVldiVpdmxhKQotKwotKyAgdGhyZWV2JWl2bGEoOikgPSAxCi0rICB0aHJlZXYlaXZsYSg1 KSA9IDQyCi0rICB0aHJlZXYlaXZsYSgxNCkgPSAyNAotKwotKyAgYWxsb2NhdGUgKGZvdXJ2JWl2 bGEgKDEwKSkgICAgICAgICAgICAgISB0aHJlZXYtZmlsbGVkCi0rICBsID0gYWxsb2NhdGVkKGZv dXJ2JWl2bGEpCi0rCi0rICBmb3VydiVpdmFyID0gMy4xNAotKyAgZm91cnYlaXZsYSg6KSA9IDEK LSsgIGZvdXJ2JWl2bGEoMikgPSAyCi0rICBmb3VydiVpdmxhKDcpID0gNwotKwotKwotKyAgYWxs b2NhdGUgKG9uZXZsYSAoMTAsIDEwKSkgICAgICAgICAgICAgISBmb3Vydi1maWxsZWQKLSsgIGRv IGkgPSAxLCAxMAotKyAgICBkbyBqID0gMSwgMTAKLSsgICAgICBhbGxvY2F0ZSAob25ldmxhKGks aiklaXZsYSgxMCwxMCwxMCkpCi0rICAgICAgbCA9IGFsbG9jYXRlZChvbmV2bGEoaSxqKSVpdmxh KQotKwotKyAgICAgIG9uZXZsYShpLGopJWl2bGEoMywgNiwgOSkgPSAzNjkKLSsgICAgICBvbmV2 bGEoaSxqKSVpdmxhKDksIDMsIDYpID0gOTM2Ci0rICAgIGVuZCBkbwotKyAgZW5kIGRvCi0rCi0r ICBhbGxvY2F0ZSAoZml2ZXYldG9uZSVpdmxhICgxMCwgMTAsIDEwKSkgICAgICAgICAhIG9uZXZs YS1maWxsZWQKLSsgIGwgPSBhbGxvY2F0ZWQoZml2ZXYldG9uZSVpdmxhKQotKyAgZml2ZXYldG9u ZSVpdmxhKDosIDosIDopID0gMQotKyAgZml2ZXYldG9uZSVpdmxhKDEsIDIsIDMpID0gMTIzCi0r ICBmaXZldiV0b25lJWl2bGEoMywgMiwgMSkgPSAzMjEKLSsKLSsKLSsgIG9uZXYlaXZsYSg6LDos OikgPSAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgZml2ZXYtZmlsbGVkCi0rICBvbmVw ID0+IG9uZXYKLSsKLSsgICEgZHVtbXkgc3RhdGVtZW50IGZvciBicAotKyAgbCA9IGFsbG9jYXRl ZChmaXZldiV0b25lJWl2bGEpICAgICAgICAgICAgICAgICAgISBvbmVwLWFzc29jaWF0ZWQKLStl bmQgcHJvZ3JhbSB2bGFfc3RydWN0Ci0tLSAKLTEuNy45LjUKLQoKZGlmZiAtLWdpdCBhL2dkYi12 bGEtaW50ZWwtMTRvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0xNG9mMjMucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZGQ4ZjQuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1p bnRlbC0xNG9mMjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotU3ViamVj dDogW1BBVENIIDE0LzIzXSB0ZXN0OiBldmFsdWF0ZSBkeW5hbWljIGFycmF5cyB1c2luZyBGb3J0 cmFuIHByaW1pdGl2ZXMuCi1NZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQwLTE1LWdpdC1zZW5k LWVtYWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4KLQotVGVzdHMgZW5zdXJlIHRoYXQgRm9ydHJh biBwcmltaXRpdmVzIGNhbiBiZSBldmFsdWF0ZWQKLWNvcnJlY3RseSB3aGVuIHVzZWQgYXMgYSBk eW5hbWljIGFycmF5LgotCi0yMDE0LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGlu dGVsLmNvbT4KLSAgICAgICAgICAgIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50 ZWwuY29tPgotCi10ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vOgotCi0JKiB2bGEtZGF0YXR5cGVzLmY5 MDogTmV3IGZpbGUuCi0JKiB2bGEtZGF0YXR5cGVzLmV4cDogTmV3IGZpbGUuCi0KLUNoYW5nZS1J ZDogSThlODJmYTM4MzNkNzdiZmQ3ZTliNGJkYzQwZTNmOTZjZTVlNzJkYTIKLQotU2lnbmVkLW9m Zi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLS0tLQotIGdkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWRhdGF0eXBlcy5leHAgfCAgIDgyICsrKysrKysrKysrKysr KysrKysrKysrKysrKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWRhdGF0eXBlcy5m OTAgfCAgIDUxICsrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMzMgaW5zZXJ0 aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3Zs YS1kYXRhdHlwZXMuZXhwCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vdmxhLWRhdGF0eXBlcy5mOTAKLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vdmxhLWRhdGF0eXBlcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3Zs YS1kYXRhdHlwZXMuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjAy NzZkNgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEt ZGF0YXR5cGVzLmV4cAotQEAgLTAsMCArMSw4MiBAQAotKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgotKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rl c3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAotKyAgICB7ZGVi dWcgZjkwIHF1aWV0fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIGNoZWNrIHRoYXQg YWxsIGZvcnRyYW4gc3RhbmRhcmQgZGF0YXR5cGVzIHdpbGwgYmUKLSsjIGhhbmRsZWQgY29ycmVj dGx5IHdoZW4gdXNpbmcgYXMgVkxBJ3MKLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0r ICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250 aW51ZQotK30KLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhcy1h bGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGFzLWFsbG9jYXRlZCIK LStnZGJfdGVzdCAibmV4dCIgIiA9IGFsbG9jYXRlZFxcXChyZWFsdmxhXFxcKSIgXAotKyAgIm5l eHQgdG8gYWxsb2NhdGlvbiBzdGF0dXMgb2YgaW50dmxhIgotK2dkYl90ZXN0ICJwcmludCBsIiAi ID0gXFwuVFJVRVxcLiIgImludHZsYSBhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgIm5leHQiICIgPSBh bGxvY2F0ZWRcXFwoY29tcGxleHZsYVxcXCkiIFwKLSsgICJuZXh0IHRvIGFsbG9jYXRpb24gc3Rh dHVzIG9mIHJlYWx2bGEiCi0rZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5UUlVFXFwuIiAicmVh bHZsYSBhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgIm5leHQiICIgPSBhbGxvY2F0ZWRcXFwobG9naWNh bHZsYVxcXCkiIFwKLSsgICJuZXh0IHRvIGFsbG9jYXRpb24gc3RhdHVzIG9mIGNvbXBsZXh2bGEi Ci0rZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5UUlVFXFwuIiAiY29tcGxleHZsYSBhbGxvY2F0 ZWQiCi0rZ2RiX3Rlc3QgIm5leHQiICIgPSBhbGxvY2F0ZWRcXFwoY2hhcmFjdGVydmxhXFxcKSIg XAotKyAgIm5leHQgdG8gYWxsb2NhdGlvbiBzdGF0dXMgb2YgbG9naWNhbHZsYSIKLStnZGJfdGVz dCAicHJpbnQgbCIgIiA9IFxcLlRSVUVcXC4iICJsb2dpY2FsdmxhIGFsbG9jYXRlZCIKLStnZGJf dGVzdCAibmV4dCIgImludHZsYVxcXCg6LDosOlxcXCkgPSAxIiBcCi0rICAibmV4dCB0byBhbGxv Y2F0aW9uIHN0YXR1cyBvZiBjaGFyYWN0ZXJ2bGEiCi0rZ2RiX3Rlc3QgInByaW50IGwiICIgPSBc XC5UUlVFXFwuIiAiY2hhcmFjdGVydmxhIGFsbG9jYXRlZCIKLSsKLStnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAidmxhcy1pbml0aWFsaXplZCJdCi0rZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgInZsYXMtaW5pdGlhbGl6ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIGludHZsYSIg InR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkgXFxcKDExLDIyLDMzXFxcKSIgXAotKyAgInB0 eXBlIGludHZsYSIKLStnZGJfdGVzdCAicHR5cGUgcmVhbHZsYSIgInR5cGUgPSByZWFsXFxcKGtp bmQ9NFxcXCkgXFxcKDExLDIyLDMzXFxcKSIgXAotKyAgInB0eXBlIHJlYWx2bGEiCi0rZ2RiX3Rl c3QgInB0eXBlIGNvbXBsZXh2bGEiICJ0eXBlID0gY29tcGxleFxcXChraW5kPTRcXFwpIFxcXCgx MSwyMiwzM1xcXCkiIFwKLSsgICJwdHlwZSBjb21wbGV4dmxhIgotK2dkYl90ZXN0ICJwdHlwZSBs b2dpY2FsdmxhIiAidHlwZSA9IGxvZ2ljYWxcXFwoa2luZD00XFxcKSBcXFwoMTEsMjIsMzNcXFwp IiBcCi0rICAicHR5cGUgbG9naWNhbHZsYSIKLStnZGJfdGVzdCAicHR5cGUgY2hhcmFjdGVydmxh IiAidHlwZSA9IGNoYXJhY3RlclxcXCoxIFxcXCgxMSwyMiwzM1xcXCkiIFwKLSsgICJwdHlwZSBj aGFyYWN0ZXJ2bGEiCi0rCi0rZ2RiX3Rlc3QgInByaW50IGludHZsYSg1LDUsNSkiICIgPSAxIiAi cHJpbnQgaW50dmxhKDUsNSw1KSAoMXN0KSIKLStnZGJfdGVzdCAicHJpbnQgcmVhbHZsYSg1LDUs NSkiICIgPSAzLjE0XFxkKyIgXAotKyAgInByaW50IHJlYWx2bGEoNSw1LDUpICgxc3QpIgotK2dk Yl90ZXN0ICJwcmludCBjb21wbGV4dmxhKDUsNSw1KSIgIiA9IFxcXCgyLC0zXFxcKSIgXAotKyAg InByaW50IGNvbXBsZXh2bGEoNSw1LDUpICgxc3QpIgotK2dkYl90ZXN0ICJwcmludCBsb2dpY2Fs dmxhKDUsNSw1KSIgIiA9IFxcLlRSVUVcXC4iIFwKLSsgICJwcmludCBsb2dpY2FsdmxhKDUsNSw1 KSAoMXN0KSIKLStnZGJfdGVzdCAicHJpbnQgY2hhcmFjdGVydmxhKDUsNSw1KSIgIiA9ICdLJyIg XAotKyAgInByaW50IGNoYXJhY3RlcnZsYSg1LDUsNSkgKDFzdCkiCi0rCi0rZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYXMtbW9kaWZpZWQiXQotK2dkYl9jb250aW51ZV90 b19icmVha3BvaW50ICJ2bGFzLW1vZGlmaWVkIgotK2dkYl90ZXN0ICJwcmludCBpbnR2bGEoNSw1 LDUpIiAiID0gNDIiICJwcmludCBpbnR2bGEoNSw1LDUpICgybmQpIgotK2dkYl90ZXN0ICJwcmlu dCByZWFsdmxhKDUsNSw1KSIgIiA9IDQuMTNcXGQrIiBcCi0rICAicHJpbnQgcmVhbHZsYSg1LDUs NSkgKDJuZCkiCi0rZ2RiX3Rlc3QgInByaW50IGNvbXBsZXh2bGEoNSw1LDUpIiAiID0gXFxcKC0z LDJcXFwpIiBcCi0rICAicHJpbnQgY29tcGxleHZsYSg1LDUsNSkgKDJuZCkiCi0rZ2RiX3Rlc3Qg InByaW50IGxvZ2ljYWx2bGEoNSw1LDUpIiAiID0gXFwuRkFMU0VcXC4iIFwKLSsgICJwcmludCBs b2dpY2FsdmxhKDUsNSw1KSAoMm5kKSIKLStnZGJfdGVzdCAicHJpbnQgY2hhcmFjdGVydmxhKDUs NSw1KSIgIiA9ICdYJyIgXAotKyAgInByaW50IGNoYXJhY3RlcnZsYSg1LDUsNSkgKDJuZCkiCi1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZGF0YXR5cGVzLmY5MCBi L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWRhdGF0eXBlcy5mOTAKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iMTE4NzlhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1kYXRhdHlwZXMuZjkwCi1AQCAtMCwwICsxLDUx IEBACi0rISBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsh Ci0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsh IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r IQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rISBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh Y2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKwotK3Byb2dyYW0g dmxhX3ByaW1pdGl2ZXMKLSsgIGludGVnZXIsIGFsbG9jYXRhYmxlICAgIDo6IGludHZsYSg6LCA6 LCA6KQotKyAgcmVhbCwgYWxsb2NhdGFibGUgICAgICAgOjogcmVhbHZsYSg6LCA6LCA6KQotKyAg Y29tcGxleCwgYWxsb2NhdGFibGUgICAgOjogY29tcGxleHZsYSg6LCA6LCA6KQotKyAgbG9naWNh bCwgYWxsb2NhdGFibGUgICAgOjogbG9naWNhbHZsYSg6LCA6LCA6KQotKyAgY2hhcmFjdGVyLCBh bGxvY2F0YWJsZSAgOjogY2hhcmFjdGVydmxhKDosIDosIDopCi0rICBsb2dpY2FsICAgICAgICAg ICAgICAgICA6OiBsCi0rCi0rICBhbGxvY2F0ZSAoaW50dmxhICgxMSwyMiwzMykpCi0rICBhbGxv Y2F0ZSAocmVhbHZsYSAoMTEsMjIsMzMpKQotKyAgYWxsb2NhdGUgKGNvbXBsZXh2bGEgKDExLDIy LDMzKSkKLSsgIGFsbG9jYXRlIChsb2dpY2FsdmxhICgxMSwyMiwzMykpCi0rICBhbGxvY2F0ZSAo Y2hhcmFjdGVydmxhICgxMSwyMiwzMykpCi0rCi0rICBsID0gYWxsb2NhdGVkKGludHZsYSkgICAg ICAgICAgICAgICAgICAgISB2bGFzLWFsbG9jYXRlZAotKyAgbCA9IGFsbG9jYXRlZChyZWFsdmxh KQotKyAgbCA9IGFsbG9jYXRlZChjb21wbGV4dmxhKQotKyAgbCA9IGFsbG9jYXRlZChsb2dpY2Fs dmxhKQotKyAgbCA9IGFsbG9jYXRlZChjaGFyYWN0ZXJ2bGEpCi0rCi0rICBpbnR2bGEoOiw6LDop ID0gMQotKyAgcmVhbHZsYSg6LDosOikgPSAzLjE0Ci0rICBjb21wbGV4dmxhKDosOiw6KSA9IGNt cGx4KDIuMCwtMy4wKQotKyAgbG9naWNhbHZsYSg6LDosOikgPSAuVFJVRS4KLSsgIGNoYXJhY3Rl cnZsYSg6LDosOikgPSBjaGFyKDc1KQotKwotKyAgaW50dmxhKDUsNSw1KSA9IDQyICAgICAgICAg ICAgICAgICAgICAgICEgdmxhcy1pbml0aWFsaXplZAotKyAgcmVhbHZsYSg1LDUsNSkgPSA0LjEz Ci0rICBjb21wbGV4dmxhKDUsNSw1KSA9IGNtcGx4KC0zLjAsMi4wKQotKyAgbG9naWNhbHZsYSg1 LDUsNSkgPSAuRkFMU0UuCi0rICBjaGFyYWN0ZXJ2bGEoNSw1LDUpID0gJ1gnCi0rCi0rICAhIGR1 bW15IHN0YXRlbWVudCBmb3IgYnAKLSsgIGwgPSAuRkFMU0UuICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAhIHZsYXMtbW9kaWZpZWQKLStlbmQgcHJvZ3JhbSB2bGFfcHJpbWl0aXZlcwotLS0g Ci0xLjcuOS41Ci0KCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTE1b2YyMy5wYXRjaCBiL2dk Yi12bGEtaW50ZWwtMTVvZjIzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk NDZkNWFlLi4wMDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtMTVvZjIzLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsNDA5ICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSCAxNS8yM10gdGVzdDogZHlu YW1pYyBhcnJheXMgcGFzc2VkIHRvIHN1YnJvdXRpbmVzLgotTWVzc2FnZS1JZDogPDE0MDE4NjEy NjYtNjI0MC0xNi1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVRlc3Rz IGR5bmFtaWMgYXJyYXlzIHBhc3NlZCB0byBzdWJyb3V0aW5lcyBhbmQgaGFuZGxlZAotaW4gZGlm ZmVyZW50IHdheXMgaW5zaWRlIHRoZSByb3V0aW5lLgotCi0yMDE0LTA1LTI4ICBLZXZlbiBCb2Vs bCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLSAgICAgICAgICAgIFNhbmltaXIgQWdvdmljICA8 c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgotCi10ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vOgotCi0J KiB2bGEtc3ViLmY5MDogTmV3IGZpbGUuCi0JKiB2bGEtcHR5cGUtc3ViLmV4cDogTmV3IGZpbGUu Ci0JKiB2bGEtdmFsdWUtc3ViLWFyYml0cmFyeS5leHA6IE5ldyBmaWxlLgotCSogdmxhLXZhbHVl LXN1Yi1maW5pc2guZXhwOiBOZXcgZmlsZS4KLQkqIHZsYS12YWx1ZS1zdWIuZXhwOiBOZXcgZmls ZS4KLQotQ2hhbmdlLUlkOiBJNzZkYjk1MGZiYWNiZjE1YjFmNWU4ODdiZmQxNjRlYjhmODVjNTVk MQotCi1TaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgot LS0tCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUtc3ViLmV4cCAgICAgICAg fCAgIDg3ICsrKysrKysrKysrKysrKysrKysKLSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3Zs YS1zdWIuZjkwICAgICAgICAgICAgICB8ICAgODIgKysrKysrKysrKysrKysrKysrCi0gLi4uL2dk Yi5mb3J0cmFuL3ZsYS12YWx1ZS1zdWItYXJiaXRyYXJ5LmV4cCAgICAgICAgfCAgIDM1ICsrKysr KysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLWZpbmlzaC5leHAg fCAgIDQ5ICsrKysrKysrKysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUt c3ViLmV4cCAgICAgICAgfCAgIDkwICsrKysrKysrKysrKysrKysrKysrCi0gNSBmaWxlcyBjaGFu Z2VkLCAzNDMgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS1zdWIuZXhwCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN1Yi5mOTAKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLWFyYml0cmFyeS5leHAKLSBjcmVh dGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLWZp bmlzaC5leHAKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEtdmFsdWUtc3ViLmV4cAotCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi92bGEtcHR5cGUtc3ViLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXB0eXBl LXN1Yi5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yZWUyOTE0Ci0t LS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS1z dWIuZXhwCi1AQCAtMCwwICsxLDg3IEBACi0rIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0r c3RhbmRhcmRfdGVzdGZpbGUgInZsYS1zdWIuZjkwIgotKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rl c3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAotKyAgICB7ZGVi dWcgZjkwIHF1aWV0fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStpZiAhW3J1bnRvIE1B SU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJ Tl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLSsjIFBhc3MgZml4ZWQgYXJyYXkgdG8gZnVuY3Rp b24gYW5kIGhhbmRsZSB0aGVtIGFzIHZsYSBpbiBmdW5jdGlvbi4KLStnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAibm90LWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgIm5vdC1maWxsZWQgKDFzdCkiCi0rZ2RiX3Rlc3QgInB0eXBlIGFycmF5MSIgInR5cGUg PSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkgXFxcKDQyLDQyXFxcKSIgXAotKyAgInB0eXBlIGFycmF5 MSAocGFzc2VkIGZpeGVkKSIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkyIiAidHlwZSA9IHJlYWxc XFwoa2luZD00XFxcKSBcXFwoNDIsNDIsNDJcXFwpIiBcCi0rICAicHR5cGUgYXJyYXkyIChwYXNz ZWQgZml4ZWQpIgotK2dkYl90ZXN0ICJwdHlwZSBhcnJheTEoNDAsIDEwKSIgInR5cGUgPSBpbnRl Z2VyXFxcKGtpbmQ9NFxcXCkiIFwKLSsgICJwdHlwZSBhcnJheTEoNDAsIDEwKSAocGFzc2VkIGZp eGVkKSIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkyKDEzLCAxMSwgNSkiICJ0eXBlID0gcmVhbFxc XChraW5kPTRcXFwpIiBcCi0rICAicHR5cGUgYXJyYXkyKDEzLCAxMSwgNSkgKHBhc3NlZCBmaXhl ZCkiCi0rCi0rIyBQYXNzIHN1YiBhcnJheXMgdG8gZnVuY3Rpb24gYW5kIGhhbmRsZSB0aGVtIGFz IHZsYSBpbiBmdW5jdGlvbi4KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibm90LWZpbGxl ZCAoMm5kKSIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkxIiAidHlwZSA9IGludGVnZXJcXFwoa2lu ZD00XFxcKSBcXFwoNiw2XFxcKSIgXAotKyAgInB0eXBlIGFycmF5MSAocGFzc2VkIHN1Yi1hcnJh eSkiCi0rZ2RiX3Rlc3QgInB0eXBlIGFycmF5MiIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkg XFxcKDYsNiw2XFxcKSIgXAotKyAgInB0eXBlIGFycmF5MiAocGFzc2VkIHN1Yi1hcnJheSkiCi0r Z2RiX3Rlc3QgInB0eXBlIGFycmF5MSgzLCAzKSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxc XCkiIFwKLSsgICJwdHlwZSBhcnJheTEoMywgMykgKHBhc3NlZCBzdWItYXJyYXkpIgotK2dkYl90 ZXN0ICJwdHlwZSBhcnJheTIoNCwgNCwgNCkiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIiBc Ci0rICAicHR5cGUgYXJyYXkyKDQsIDQsIDQpIChwYXNzZWQgc3ViLWFycmF5KSIKLSsKLSsjIENo ZWNrIHB0eXBlIG91dHNpZGUgb2YgYm91bmRzLiBUaGlzIHNob3VsZCBub3QgY3Jhc2ggR0RCLgot K2dkYl90ZXN0ICJwdHlwZSBhcnJheTEoMTAwLCAxMDApIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVu dCIgXAotKyAgInB0eXBlIGFycmF5MSgxMDAsIDEwMCkgc3ViYXJyYXkgZG8gbm90IGNyYXNoIChw YXNzZWQgc3ViLWFycmF5KSIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkyKDEwMCwgMTAwLCAxMDAp IiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCIgXAotKyAgInB0eXBlIGFycmF5MigxMDAsIDEwMCwg MTAwKSBzdWJhcnJheSBkbyBub3QgY3Jhc2ggKHBhc3NlZCBzdWItYXJyYXkpIgotKwotKyMgUGFz cyB2bGEgdG8gZnVuY3Rpb24uCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5vdC1maWxs ZWQgKDNyZCkiCi0rZ2RiX3Rlc3QgInB0eXBlIGFycmF5MSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtp bmQ9NFxcXCkgXFxcKDIwLDIwXFxcKSIgXAotKyAgInB0eXBlIGFycmF5MSAocGFzc2VkIHZsYSki Ci0rZ2RiX3Rlc3QgInB0eXBlIGFycmF5MiIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkgXFxc KDEwLDEwLDEwXFxcKSIgXAotKyAgInB0eXBlIGFycmF5MiAocGFzc2VkIHZsYSkiCi0rZ2RiX3Rl c3QgInB0eXBlIGFycmF5MSgzLCAzKSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkiIFwK LSsgICJwdHlwZSBhcnJheTEoMywgMykgKHBhc3NlZCB2bGEpIgotK2dkYl90ZXN0ICJwdHlwZSBh cnJheTIoNCwgNCwgNCkiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIiBcCi0rICAicHR5cGUg YXJyYXkyKDQsIDQsIDQpIChwYXNzZWQgdmxhKSIKLSsKLSsjIENoZWNrIHB0eXBlIG91dHNpZGUg b2YgYm91bmRzLiBUaGlzIHNob3VsZCBub3QgY3Jhc2ggR0RCLgotK2dkYl90ZXN0ICJwdHlwZSBh cnJheTEoMTAwLCAxMDApIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCIgXAotKyAgInB0eXBlIGFy cmF5MSgxMDAsIDEwMCkgVkxBIGRvIG5vdCBjcmFzaCAocGFzc2VkIHZsYSkiCi0rZ2RiX3Rlc3Qg InB0eXBlIGFycmF5MigxMDAsIDEwMCwgMTAwKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiIFwK LSsgICJwdHlwZSBhcnJheTIoMTAwLCAxMDAsIDEwMCkgVkxBIGRvIG5vdCBjcmFzaCAocGFzc2Vk IHZsYSkiCi0rCi0rIyBQYXNzIGZpeGVkIGFycmF5IHRvIGZ1bmN0aW9uIGFuZCBoYW5kbGUgaXQg YXMgVkxBIG9mIGFyYml0cmFyeSBsZW5ndGggaW4KLSsjIGZ1bmN0aW9uLgotK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJlbmQtb2YtYmFyIl0KLStnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAiZW5kLW9mLWJhciIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkxIiBcCi0rICAi dHlwZSA9IChQVFIgVE8gLT4gXFwoICk/aW50ZWdlcihcXChraW5kPTRcXCl8XFwqNCkgXFwoXFwq XFwpXFwpPyIgXAotKyAgInB0eXBlIGFycmF5MSAoYXJiaXRyYXJ5IGxlbmd0aCkiCi0rZ2RiX3Rl c3QgInB0eXBlIGFycmF5MiIgXAotKyAgInR5cGUgPSAoUFRSIFRPIC0+IFxcKCApP2ludGVnZXIo XFwoa2luZD00XFwpfFxcKjQpIFxcKDQ6OSwxMDpcXCpcXClcXCk/IiBcCi0rICAicHR5cGUgYXJy YXkyIChhcmJpdHJhcnkgbGVuZ3RoKSIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkxKDEwMCkiICJ0 eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIiBcCi0rICAicHR5cGUgYXJyYXkxKDEwMCkgKGFy Yml0cmFyeSBsZW5ndGgpIgotK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIoNCwxMDApIiAidHlwZSA9 IGludGVnZXJcXFwoa2luZD00XFxcKSIgXAotKyAgInB0eXBlIGFycmF5Mig0LDEwMCkgKGFyYml0 cmFyeSBsZW5ndGgpIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LXN1Yi5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdWIuZjkwCi1uZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOGMyYzlmZgotLS0tIC9kZXYvbnVsbAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3ViLmY5MAotQEAgLTAsMCArMSw4MiBA QAotKyEgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQot KyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEK LSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNl IC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBPcmlnaW5h bCBmaWxlIHdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gYW5kCi0r ISBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0rISBNb2RpZmll ZCBmb3IgdGhlIEdEQiB0ZXN0Y2FzZXMgYnkgS2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxsQGludGVs LmNvbT4uCi0rCi0rc3Vicm91dGluZSBmb28gKGFycmF5MSwgYXJyYXkyKQotKyAgaW50ZWdlciA6 OiBhcnJheTEgKDosIDopCi0rICByZWFsICAgIDo6IGFycmF5MiAoOiwgOiwgOikKLSsKLSsgIGFy cmF5MSg6LDopID0gNSAgICAgICAgICAgICAgICAgICAgICAgISBub3QtZmlsbGVkCi0rICBhcnJh eTEoMSwgMSkgPSAzMAotKwotKyAgYXJyYXkyKDosOiw6KSA9IDYgICAgICAgICAgICAgICAgICAg ICAhIGFycmF5MS1maWxsZWQKLSsgIGFycmF5Mig6LDosOikgPSAzCi0rICBhcnJheTIoMSwxLDEp ID0gMzAKLSsgIGFycmF5MigzLDMsMykgPSA5MCAgICAgICAgICAgICAgICAgICAgISBhcnJheTIt YWxtb3N0LWZpbGxlZAotK2VuZCBzdWJyb3V0aW5lCi0rCi0rc3Vicm91dGluZSBiYXIgKGFycmF5 MSwgYXJyYXkyKQotKyAgaW50ZWdlciA6OiBhcnJheTEgKCopCi0rICBpbnRlZ2VyIDo6IGFycmF5 MiAoNDo5LCAxMDoqKQotKwotKyAgYXJyYXkxKDU6MTApID0gMTMxMQotKyAgYXJyYXkxKDcpID0g MQotKyAgYXJyYXkxKDEwMCkgPSAxMDAKLSsgIGFycmF5Mig0LDEwKSA9IGFycmF5MSg3KQotKyAg YXJyYXkyKDQsMTAwKSA9IGFycmF5MSg3KQotKyAgcmV0dXJuICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAhIGVuZC1vZi1iYXIKLStlbmQgc3Vicm91dGluZQotKwotK3Byb2dyYW0gdmxh X3N1YgotKyAgaW50ZXJmYWNlCi0rICAgIHN1YnJvdXRpbmUgZm9vIChhcnJheTEsIGFycmF5MikK LSsgICAgICBpbnRlZ2VyIDo6IGFycmF5MSAoOiwgOikKLSsgICAgICByZWFsIDo6IGFycmF5MiAo OiwgOiwgOikKLSsgICAgZW5kIHN1YnJvdXRpbmUKLSsgIGVuZCBpbnRlcmZhY2UKLSsgIGludGVy ZmFjZQotKyAgICBzdWJyb3V0aW5lIGJhciAoYXJyYXkxLCBhcnJheTIpCi0rICAgICAgaW50ZWdl ciA6OiBhcnJheTEgKCopCi0rICAgICAgaW50ZWdlciA6OiBhcnJheTIgKDQ6OSwgMTA6KikKLSsg ICAgZW5kIHN1YnJvdXRpbmUKLSsgIGVuZCBpbnRlcmZhY2UKLSsKLSsgIHJlYWwsIGFsbG9jYXRh YmxlIDo6IHZsYTEgKDosIDosIDopCi0rICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiB2bGEyICg6 LCA6KQotKwotKyAgISB1c2VkIGZvciBzdWJyb3V0aW5lCi0rICBpbnRlZ2VyIDo6IHN1Yl9hcnIx KDQyLCA0MikKLSsgIHJlYWwgICAgOjogc3ViX2FycjIoNDIsIDQyLCA0MikKLSsgIGludGVnZXIg Ojogc3ViX2FycjMoNDIpCi0rCi0rICBzdWJfYXJyMSg6LDopID0gMSAgICAgICAgICAgICAgICAg ICAhIHZsYTItZGVhbGxvY2F0ZWQKLSsgIHN1Yl9hcnIyKDosOiw6KSA9IDIKLSsgIHN1Yl9hcnIz KDopID0gMwotKwotKyAgY2FsbCBmb28oc3ViX2FycjEsIHN1Yl9hcnIyKQotKyAgY2FsbCBmb28o c3ViX2FycjEoNToxMCwgNToxMCksIHN1Yl9hcnIyKDEwOjE1LDEwOjE1LDEwOjE1KSkKLSsKLSsg IGFsbG9jYXRlICh2bGExICgxMCwxMCwxMCkpCi0rICBhbGxvY2F0ZSAodmxhMiAoMjAsMjApKQot KyAgdmxhMSg6LDosOikgPSAxMzExCi0rICB2bGEyKDosOikgPSA0MgotKyAgY2FsbCBmb28odmxh MiwgdmxhMSkKLSsKLSsgIGNhbGwgYmFyKHN1Yl9hcnIzLCBzdWJfYXJyMSkKLStlbmQgcHJvZ3Jh bSB2bGFfc3ViCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFs dWUtc3ViLWFyYml0cmFyeS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1 ZS1zdWItYXJiaXRyYXJ5LmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAu LmZkMTFhZGIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v dmxhLXZhbHVlLXN1Yi1hcmJpdHJhcnkuZXhwCi1AQCAtMCwwICsxLDM1IEBACi0rIyBDb3B5cmln aHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCi0rCi0rc3RhbmRhcmRfdGVzdGZpbGUgInZsYS1zdWIuZjkwIgotKwot K2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7 c3JjZmlsZX0gXAotKyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7Ci0rICAgIHJldHVybiAtMQot K30KLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3Qg cnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLSsjIENoZWNr IFZMQSB3aXRoIGFyYml0YXJ5IGxlbmd0aCBhbmQgY2hlY2sgdGhhdCBlbGVtZW50cyBvdXRzaWRl IG9mCi0rIyBib3VuZHMgb2YgdGhlIHBhc3NlZCBWTEEgY2FuIGJlIGFjY2Vzc2VkIGNvcnJlY3Rs eS4KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZW5kLW9mLWJhciJdCi0r Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImVuZC1vZi1iYXIiCi0rZ2RiX3Rlc3QgInAgYXJy YXkxKDQyKSIgIiA9IDMiICJwcmludCBhcmJpdGFyeSBhcnJheTEoNDIpIgotK2dkYl90ZXN0ICJw IGFycmF5MSgxMDApIiAiID0gMTAwIiAicHJpbnQgYXJiaXRhcnkgYXJyYXkxKDEwMCkiCi0rZ2Ri X3Rlc3QgInAgYXJyYXkyKDQsMTApIiAiID0gMSIgInByaW50IGFyYml0YXJ5IGFycmF5Mig0LDEw KSIKLStnZGJfdGVzdCAicCBhcnJheTIoNCwxMDApIiAiID0gMSIgInByaW50IGFyYml0YXJ5IGFy cmF5Mig0LDEwMCkiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEt dmFsdWUtc3ViLWZpbmlzaC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1 ZS1zdWItZmluaXNoLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmEx NjM2MTcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LXZhbHVlLXN1Yi1maW5pc2guZXhwCi1AQCAtMCwwICsxLDQ5IEBACi0rIyBDb3B5cmlnaHQgMjAx NCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCi0rCi0rc3RhbmRhcmRfdGVzdGZpbGUgInZsYS1zdWIuZjkwIgotKwotK2lmIHsg W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmls ZX0gXAotKyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsK LStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRv IGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLSsjICJ1cCIgd29ya3Mg d2l0aCBHQ0MgYnV0IG90aGVyIEZvcnRyYW4gY29tcGlsZXJzIG1heSBjb3B5IHRoZSB2YWx1ZXMg aW50byB0aGUKLSsjIG91dGVyIGZ1bmN0aW9uIG9ubHkgb24gdGhlIGV4aXQgb2YgdGhlIGlubmVy IGZ1bmN0aW9uLgotKyMgV2UgbmVlZCBib3RoIHZhcmlhbnRzIGFzIGRlcGVuZGluZyBvbiB0aGUg YXJjaCB3ZSBvcHRpb25hbGx5IG1heSBzdGlsbCBiZQotKyMgZXhlY3V0aW5nIHRoZSBjYWxsZXIg bGluZSBvciBub3QgYWZ0ZXIgYGZpbmlzaCcuCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgImFycmF5Mi1hbG1vc3QtZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAiYXJyYXkyLWFsbW9zdC1maWxsZWQiCi0rZ2RiX3Rlc3QgInByaW50IGFycmF5MiIg IiA9IFxcKCAqXFwoICpcXCggKjMwLCAqMywgKjMsXFsoKTMsIC5cXSpcXCkiIFwKLSsgICJwcmlu dCBhcnJheTIgaW4gZm9vIGFmdGVyIGl0IHdhcyBmaWxsZWQiCi0rZ2RiX3Rlc3QgInByaW50IGFy cmF5MigyLDEsMSk9MjAiICIgPSAyMCIgXAotKyAgInNldCBhcnJheSgyLDIsMikgdG8gMjAgaW4g c3Vicm91dGluZSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkyIiAiID0gXFwoICpcXCggKlxcKCAq MzAsICoyMCwgKjMsXFsoKTMsIC5cXSpcXCkiIFwKLSsgICJwcmludCBhcnJheTIgaW4gZm9vIGFm dGVyIGl0IHdhcyBtb2ZpZmllZCBpbiBkZWJ1Z2dlciIKLSsKLStnZGJfdGVzdCAiZmluaXNoIiBc Ci0rICAiLipmb29cXFwoc3ViX2FycjFcXFwoNToxMCwgNToxMFxcXCksIHN1Yl9hcnIyXFxcKDEw OjE1LDEwOjE1LDEwOjE1XFxcKVxcXCkiIFwKLSsgICJmaW5pc2ggZnVuY3Rpb24iCi0rZ2RiX3Rl c3QgInAgc3ViX2FycjEoNSwgNykiICIgPSA1IiAic3ViX2FycjEoNSwgNykgYWZ0ZXIgZmluaXNo IgotK2dkYl90ZXN0ICJwIHN1Yl9hcnIxKDEsIDEpIiAiID0gMzAiICJzdWJfYXJyMSgxLCAxKSBh ZnRlciBmaW5pc2giCi0rZ2RiX3Rlc3QgInAgc3ViX2FycjIoMSwgMSwgMSkiICIgPSAzMCIgInN1 Yl9hcnIyKDEsIDEsIDEpIGFmdGVyIGZpbmlzaCIKLStnZGJfdGVzdCAicCBzdWJfYXJyMigyLCAx LCAxKSIgIiA9IDIwIiAic3ViX2FycjIoMiwgMSwgMSkgYWZ0ZXIgZmluaXNoIgotKwotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS1zdWIuZXhwCi1uZXcgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggMDAwMDAwMC4uODQ4ZjlkNwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLmV4cAotQEAgLTAsMCArMSw5MCBAQAot KyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICJ2bGEtc3Vi LmY5MCIKLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rl c3RmaWxlfSAke3NyY2ZpbGV9IFwKLSsgICAge2RlYnVnIGY5MCBxdWlldH1dIH0gewotKyAgICBy ZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50byBNQUlOX19dIHRoZW4gewotKyAgICBwZXJyb3Ig ImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKLSsgICAgY29udGludWUKLSt9Ci0r Ci0rIyBDaGVjayB0aGUgdmFsdWVzIG9mIFZMQSdzIGluIHN1YnJvdXRpbmUgY2FuIGJlIGV2YWx1 YXRlZCBjb3JyZWN0bHkKLSsKLSsjIFRyeSB0byBhY2Nlc3MgdmFsdWVzIGZyb20gYSBmaXhlZCBh cnJheSBoYW5kbGVkIGFzIFZMQSBpbiBzdWJyb3V0aW5lLgotK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJub3QtZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAibm90LWZpbGxlZCAoMXN0KSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkxIiAiID0gXFwoXFso KTEsIC5cXSpcXCkiIFwKLSsgICJwcmludCBwYXNzZWQgYXJyYXkxIGluIGZvbyAocGFzc2VkIGZp eGVkIGFycmF5KSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYXJy YXkxLWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImFycmF5MS1maWxsZWQg KDFzdCkiCi0rZ2RiX3Rlc3QgInByaW50IGFycmF5MSg1LCA3KSIgIiA9IDUiIFwKLSsgICJwcmlu dCBhcnJheTEoNSwgNykgYWZ0ZXIgZmlsbGVkIGluIGZvbyAocGFzc2VkIGZpeGVkIGFycmF5KSIK LStnZGJfdGVzdCAicHJpbnQgYXJyYXkxKDEsIDEpIiAiID0gMzAiIFwKLSsgICJwcmludCBhcnJh eTEoMSwgMSkgYWZ0ZXIgZmlsbGVkIGluIGZvbyAocGFzc2VkIGZpeGVkIGFycmF5KSIKLSsKLStn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYXJyYXkyLWFsbW9zdC1maWxsZWQi XQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJhcnJheTItYWxtb3N0LWZpbGxlZCAoMXN0 KSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkyIiAiID0gXFwoICpcXCggKlxcKCAqMzAsICozLCAq MyxcWygpMywgLlxdKlxcKSIgXAotKyAgInByaW50IGFycmF5MiBpbiBmb28gYWZ0ZXIgaXQgd2Fz IGZpbGxlZCAocGFzc2VkIGZpeGVkIGFycmF5KSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkyKDIs MSwxKT0yMCIgIiA9IDIwIiBcCi0rICAic2V0IGFycmF5KDIsMiwyKSB0byAyMCBpbiBzdWJyb3V0 aW5lIChwYXNzZWQgZml4ZWQgYXJyYXkpIgotK2dkYl90ZXN0ICJwcmludCBhcnJheTIiICIgPSBc XCggKlxcKCAqXFwoICozMCwgKjIwLCAqMyxcWygpMywgLlxdKlxcKSIgXAotKyAgInByaW50IGFy cmF5MiBpbiBmb28gYWZ0ZXIgaXQgd2FzIG1vZmlmaWVkIGluIGRlYnVnZ2VyIChwYXNzZWQgZml4 ZWQgYXJyYXkpIgotKwotKwotKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgZnJvbSBhIGZpeGVkIHN1 Yi1hcnJheSBoYW5kbGVkIGFzIFZMQSBpbiBzdWJyb3V0aW5lLgotK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJub3QtZmlsbGVkICgybmQpIgotK2dkYl90ZXN0ICJwcmludCBhcnJheTEiICIg PSBcXChcWygpNSwgLlxdKlxcKSIgXAotKyAgInByaW50IHBhc3NlZCBhcnJheTEgaW4gZm9vIChw YXNzZWQgc3ViLWFycmF5KSIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYXJyYXkx LWZpbGxlZCAoMm5kKSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkxKDUsIDUpIiAiID0gNSIgXAot KyAgInByaW50IGFycmF5MSg1LCA1KSBhZnRlciBmaWxsZWQgaW4gZm9vIChwYXNzZWQgc3ViLWFy cmF5KSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkxKDEsIDEpIiAiID0gMzAiIFwKLSsgICJwcmlu dCBhcnJheTEoMSwgMSkgYWZ0ZXIgZmlsbGVkIGluIGZvbyAocGFzc2VkIHN1Yi1hcnJheSkiCi0r Ci0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImFycmF5Mi1hbG1vc3QtZmlsbGVkICgybmQp IgotK2dkYl90ZXN0ICJwcmludCBhcnJheTIiICIgPSBcXCggKlxcKCAqXFwoICozMCwgKjMsICoz LFxbKCkzLCAuXF0qXFwpIiBcCi0rICAicHJpbnQgYXJyYXkyIGluIGZvbyBhZnRlciBpdCB3YXMg ZmlsbGVkIChwYXNzZWQgc3ViLWFycmF5KSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkyKDIsMSwx KT0yMCIgIiA9IDIwIiBcCi0rICAic2V0IGFycmF5KDIsMiwyKSB0byAyMCBpbiBzdWJyb3V0aW5l IChwYXNzZWQgc3ViLWFycmF5KSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkyIiAiID0gXFwoICpc XCggKlxcKCAqMzAsICoyMCwgKjMsXFsoKTMsIC5cXSpcXCkiIFwKLSsgICJwcmludCBhcnJheTIg aW4gZm9vIGFmdGVyIGl0IHdhcyBtb2ZpZmllZCBpbiBkZWJ1Z2dlciAocGFzc2VkIHN1Yi1hcnJh eSkiCi0rCi0rCi0rIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBmcm9tIGEgVkxBIHBhc3NlZCB0byBz dWJyb3V0aW5lLgotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJub3QtZmlsbGVkICgzcmQp IgotK2dkYl90ZXN0ICJwcmludCBhcnJheTEiICIgPSBcXChcWygpNDIsIC5cXSpcXCkiIFwKLSsg ICJwcmludCBwYXNzZWQgYXJyYXkxIGluIGZvbyAocGFzc2VkIHZsYSkiCi0rCi0rZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgImFycmF5MS1maWxsZWQgKDNyZCkiCi0rZ2RiX3Rlc3QgInByaW50 IGFycmF5MSg1LCA1KSIgIiA9IDUiIFwKLSsgICJwcmludCBhcnJheTEoNSwgNSkgYWZ0ZXIgZmls bGVkIGluIGZvbyAocGFzc2VkIHZsYSkiCi0rZ2RiX3Rlc3QgInByaW50IGFycmF5MSgxLCAxKSIg IiA9IDMwIiBcCi0rICAicHJpbnQgYXJyYXkxKDEsIDEpIGFmdGVyIGZpbGxlZCBpbiBmb28gKHBh c3NlZCB2bGEpIgotKwotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJhcnJheTItYWxtb3N0 LWZpbGxlZCAoM3JkKSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkyIiAiID0gXFwoICpcXCggKlxc KCAqMzAsICozLCAqMyxcWygpMywgLlxdKlxcKSIgXAotKyAgInByaW50IGFycmF5MiBpbiBmb28g YWZ0ZXIgaXQgd2FzIGZpbGxlZCAocGFzc2VkIHZsYSkiCi0rZ2RiX3Rlc3QgInByaW50IGFycmF5 MigyLDEsMSk9MjAiICIgPSAyMCIgXAotKyAgInNldCBhcnJheSgyLDIsMikgdG8gMjAgaW4gc3Vi cm91dGluZSAocGFzc2VkIHZsYSkiCi0rZ2RiX3Rlc3QgInByaW50IGFycmF5MiIgIiA9IFxcKCAq XFwoICpcXCggKjMwLCAqMjAsICozLFxbKCkzLCAuXF0qXFwpIiBcCi0rICAicHJpbnQgYXJyYXky IGluIGZvbyBhZnRlciBpdCB3YXMgbW9maWZpZWQgaW4gZGVidWdnZXIgKHBhc3NlZCB2bGEpIgot LS0gCi0xLjcuOS41Ci0KCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTE2b2YyMy5wYXRjaCBi L2dkYi12bGEtaW50ZWwtMTZvZjIzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA3NGZjYWZhLi4wMDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtMTZvZjIzLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSCAxNi8yM10gdGVzdDog Y29ycmVjdCBwdHlwZSBvZiBkeW5hbWljIGFycmF5cyBpbiBGb3J0cmFuLgotTWVzc2FnZS1JZDog PDE0MDE4NjEyNjYtNjI0MC0xNy1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+ Ci0KLVRlc3RzIGVuc3VyZSB0aGF0IHRoZSBwdHlwZSBvZiBkeW5hbWljIGFycmF5cyBpbgotRm9y dHJhbiBjYW4gYmUgcHJpbnRlZCBpbiBHREIgY29ycmVjdGx5LgotCi0yMDE0LTA1LTI4ICBLZXZl biBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLSAgICAgICAgICAgIFNhbmltaXIgQWdv dmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgotCi10ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v OgotCi0JKiB2bGEtcHR5cGUuZXhwOiBOZXcgZmlsZS4KLQotQ2hhbmdlLUlkOiBJNTA4YTA1Mzdi ZTdjYWM1NzM5YTI2Mzc4OGJlODliMThlODRkOGY4ZgotCi1TaWduZWQtb2ZmLWJ5OiBLZXZlbiBC b2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotLS0tCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi92bGEtcHR5cGUuZXhwIHwgICA5NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ci0gMSBmaWxlIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQg Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUuZXhwCi0KLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3ZsYS1wdHlwZS5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwLi45MjY3NzIzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3ZsYS1wdHlwZS5leHAKLUBAIC0wLDAgKzEsOTYgQEAKLSsjIENvcHlyaWdodCAyMDE0IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSsKLStzdGFuZGFyZF90ZXN0ZmlsZSAidmxhLmY5MCIKLSsKLStpZiB7IFtwcmVwYXJl X2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKLSsg ICAge2RlYnVnIGY5MCBxdWlldH1dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVty dW50byBNQUlOX19dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3Bv aW50IE1BSU5fXyIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rIyBDaGVjayB0aGUgcHR5cGUgb2Yg dmFyaW91cyBWTEEgc3RhdGVzIGFuZCBwb2ludGVyIHRvIFZMQSdzLgotK2dkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWluaXQiXQotK2dkYl9jb250aW51ZV90b19icmVh a3BvaW50ICJ2bGExLWluaXQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZsYTEiICJ0eXBlID0gPG5vdCBh bGxvY2F0ZWQ+IiAicHR5cGUgdmxhMSBub3QgaW5pdGlhbGl6ZWQiCi0rZ2RiX3Rlc3QgInB0eXBl IHZsYTIiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmxhMiBub3QgaW5pdGlhbGl6 ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHB2bGEiICJ0eXBlID0gPG5vdCBhc3NvY2lhdGVkPiIgInB0 eXBlIHB2bGEgbm90IGluaXRpYWxpemVkIgotK2dkYl90ZXN0ICJwdHlwZSB2bGExKDMsIDYsIDkp IiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKLSsgICJw dHlwZSB2bGExKDMsIDYsIDkpIG5vdCBpbml0aWFsaXplZCIKLStnZGJfdGVzdCAicHR5cGUgdmxh Mig1LCA0NSwgMjApIiBcCi0rICAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBh bGxvY2F0ZWQiIFwKLSsgICJwdHlwZSB2bGExKDUsIDQ1LCAyMCkgbm90IGluaXRpYWxpemVkIgot KwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWFsbG9jYXRlZCJd Ci0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtYWxsb2NhdGVkIgotK2dkYl90ZXN0 ICJwdHlwZSB2bGExIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSBcXFwoMTAsMTAsMTBcXFwp IiBcCi0rICAicHR5cGUgdmxhMSBhbGxvY2F0ZWQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9n ZXRfbGluZV9udW1iZXIgInZsYTItYWxsb2NhdGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAidmxhMi1hbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZsYTIiICJ0eXBlID0gcmVh bFxcXChraW5kPTRcXFwpIFxcXCg3LDQyOjUwLDEzOjM1XFxcKSIgXAotKyAgInB0eXBlIHZsYTIg YWxsb2NhdGVkIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEx LWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtZmlsbGVkIgotK2dk Yl90ZXN0ICJwdHlwZSB2bGExIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSBcXFwoMTAsMTAs MTBcXFwpIiBcCi0rICAicHR5cGUgdmxhMSBmaWxsZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZsYTEo MywgNiwgOSkiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIiBcCi0rICAicHR5cGUgdmxhMSgz LCA2LCA5KSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMi1m aWxsZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEyLWZpbGxlZCIKLStnZGJf dGVzdCAicHR5cGUgdmxhMiIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDcsNDI6NTAs MTM6MzVcXFwpIiBcCi0rICAicHR5cGUgdmxhMiBmaWxsZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZs YTIoNSwgNDUsIDIwKSIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkiIFwKLSsgICJwdHlwZSB2 bGExKDUsIDQ1LCAyMCkgZmlsbGVkIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJwdmxhLWFzc29jaWF0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJw dmxhLWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHB2bGEiICJ0eXBlID0gcmVhbFxcXChr aW5kPTRcXFwpIFxcXCgxMCwxMCwxMFxcXCkiIFwKLSsgICJwdHlwZSBwdmxhIGFzc29jaWF0ZWQi Ci0rZ2RiX3Rlc3QgInB0eXBlIHB2bGEoMywgNiwgOSkiICJ0eXBlID0gcmVhbFxcXChraW5kPTRc XFwpIiBcCi0rICAicHR5cGUgcHZsYSgzLCA2LCA5KSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAicHZsYS1yZS1hc3NvY2lhdGVkIl0KLStnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAicHZsYS1yZS1hc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSBwdmxhIiAi dHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSBcXFwoNyw0Mjo1MCwxMzozNVxcXCkiIFwKLSsgICJw dHlwZSBwdmxhIHJlLWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZsYTIoNSwgNDUsIDIw KSIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkiIFwKLSsgICJwdHlwZSB2bGExKDUsIDQ1LCAy MCkgcmUtYXNzb2NpYXRlZCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAicHZsYS1kZWFzc29jaWF0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxh LWRlYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgcHZsYSIgInR5cGUgPSA8bm90IGFzc29j aWF0ZWQ+IiAicHR5cGUgcHZsYSBkZWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHB2bGEo NSwgNDUsIDIwKSIgXAotKyAgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYXNz b2NpYXRlZCIgXAotKyAgInB0eXBlIHB2bGEoNSwgNDUsIDIwKSBub3QgYXNzb2NpYXRlZCIKLSsK LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1kZWFsbG9jYXRlZCJd Ci0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtZGVhbGxvY2F0ZWQiCi0rZ2RiX3Rl c3QgInB0eXBlIHZsYTEiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmxhMSBub3Qg YWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2bGExKDMsIDYsIDkpIiAibm8gc3VjaCB2ZWN0 b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKLSsgICJwdHlwZSB2bGExKDMsIDYs IDkpIG5vdCBhbGxvY2F0ZWQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgInZsYTItZGVhbGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEy LWRlYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2bGEyIiAidHlwZSA9IDxub3QgYWxsb2Nh dGVkPiIgInB0eXBlIHZsYTIgbm90IGFsbG9jYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmxhMig1 LCA0NSwgMjApIiBcCi0rICAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxv Y2F0ZWQiIFwKLSsgICJwdHlwZSB2bGEyKDUsIDQ1LCAyMCkgbm90IGFsbG9jYXRlZCIKLS0tIAot MS43LjkuNQotCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0xN29mMjMucGF0Y2ggYi9nZGIt dmxhLWludGVsLTE3b2YyMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzZh MTYzMy4uMDAwMDAwMAotLS0gYS9nZGItdmxhLWludGVsLTE3b2YyMy5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDk1ICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSCAxNy8yM10gdGVzdDogZXZhbHVh dGluZyBhbGxvY2F0aW9uL2Fzc29jaWF0aW9uIHN0YXR1cwotTWVzc2FnZS1JZDogPDE0MDE4NjEy NjYtNjI0MC0xOC1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0KLVRlc3Rz IGVuc3VyZSB0aGF0IGR5bmFtaWMgYXJyYXlzIGluIGRpZmZlcmVudCBzdGF0ZXMKLShhbGxvY2F0 ZWQvYXNzb2NpYXRlZCkgY2FuIGJlIGV2YWx1YXRlZC4KLQotMjAxNC0wNS0yOCAgS2V2ZW4gQm9l bGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0gICAgICAgICAgICBTYW5pbWlyIEFnb3ZpYyAg PHNhbmltaXIuYWdvdmljQGludGVsLmNvbT4KLQotdGVzdHN1aXRlL2dkYi5mb3J0cmFuLzoKLQot CSogdmxhLWFsbG9jLWFzc29jLmV4cDogTmV3IGZpbGUuCi0KLUNoYW5nZS1JZDogSTY5NTA0NzNj M2YxNzI0ZWJmNWM3YjAzNzcwNjE4NmIyY2Q2YWY1ZjAKLQotU2lnbmVkLW9mZi1ieTogS2V2ZW4g Qm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLS0tLQotIGdkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vdmxhLWFsbG9jLWFzc29jLmV4cCB8ICAgNjUgKysrKysrKysrKysrKysrKysrKysrKysr KwotIDEgZmlsZSBjaGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0 IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWFsbG9jLWFzc29jLmV4cAotCi1kaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtYWxsb2MtYXNzb2MuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtYWxsb2MtYXNzb2MuZXhwCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjA2MDdjMwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtYWxsb2MtYXNzb2MuZXhwCi1AQCAtMCwwICsxLDY1 IEBACi0rIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsj Ci0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc3RhbmRhcmRfdGVzdGZpbGUgInZs YS5mOTAiCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0 ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCi0rICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKLSsgICAg cmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9y ICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQot KwotKyMgQ2hlY2sgdGhlIGFzc29jaWF0aW9uIHN0YXR1cyBvZiB2YXJpb3VzIHR5cGVzIG9mIFZM QSdzCi0rIyBhbmQgcG9pbnRlciB0byBWTEEncy4KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAidmxhMS1hbGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50 ICJ2bGExLWFsbG9jYXRlZCIKLStnZGJfdGVzdCAicHJpbnQgbCIgIiA9IFxcLlRSVUVcXC4iIFwK LSsgICJwcmludCB2bGExIGFsbG9jYXRpb24gc3RhdHVzIChhbGxvY2F0ZWQpIgotKwotK2dkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWFsbG9jYXRlZCJdCi0rZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTItYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwcmludCBs IiAiID0gXFwuVFJVRVxcLiIgXAotKyAgInByaW50IHZsYTIgYWxsb2NhdGlvbiBzdGF0dXMgKGFs bG9jYXRlZCkiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInB2bGEt YXNzb2NpYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEtYXNzb2NpYXRl ZCIKLStnZGJfdGVzdCAicHJpbnQgbCIgIiA9IFxcLlRSVUVcXC4iIFwKLSsgICJwcmludCBwdmxh IGFzc29jaWF0ZWQgc3RhdHVzIChhc3NvY2lhdGVkKSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAicHZsYS1yZS1hc3NvY2lhdGVkIl0KLStnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAicHZsYS1yZS1hc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwcmludCBsIiAiID0g XFwuVFJVRVxcLiIgXAotKyAgInByaW50IHB2bGEgYXNzb2NpYXRlZCBzdGF0dXMgKHJlLWFzc29j aWF0ZWQpIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLWRl YXNzb2NpYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEtZGVhc3NvY2lh dGVkIgotK2dkYl90ZXN0ICJwcmludCBsIiAiID0gXFwuRkFMU0VcXC4iIFwKLSsgICJwcmludCBw dmxhIGFsbG9jYXRpb24gc3RhdHVzIChkZWFzc29jaWF0ZWQpIgotKwotK2dkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWRlYWxsb2NhdGVkIl0KLStnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAidmxhMS1kZWFsbG9jYXRlZCIKLStnZGJfdGVzdCAicHJpbnQgbCIgIiA9 IFxcLkZBTFNFXFwuIiBcCi0rICAicHJpbnQgdmxhMSBhbGxvY2F0aW9uIHN0YXR1cyAoZGVhbGxv Y2F0ZWQpIgotK2dkYl90ZXN0ICJwcmludCB2bGExIiAiID0gPG5vdCBhbGxvY2F0ZWQ+IiBcCi0r ICAicHJpbnQgZGVhbGxvY2F0ZWQgdmxhMSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAidmxhMi1kZWFsbG9jYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgInZsYTItZGVhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5GQUxTRVxc LiIgInByaW50IHZsYTIgZGVhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInByaW50IHZsYTIiICIgPSA8 bm90IGFsbG9jYXRlZD4iICJwcmludCBkZWFsbG9jYXRlZCB2bGEyIgotLS0gCi0xLjcuOS41Ci0K CmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTE4b2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwt MThvZjIzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTViMzJmLi4wMDAw MDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtMThvZjIzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MTcxICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSCAxOC8yM10gdGVzdDogZHluYW1pYyBhcnJheXMg cGFzc2VkIHRvIGZ1bmN0aW9ucy4KLU1lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMTktZ2l0 LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotCi1UZXN0cyBmb3IgZHluYW1pYyBh cnJheXMgcGFzc2VkIHRvIGZ1bmN0aW9ucwotYW5kIHJldHVybmVkIGZyb20gZnVuY3Rpb25zLgot Ci0yMDE0LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KLSAgICAg ICAgICAgIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgotCi10ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vOgotCi0JKiB2bGEtZnVuYy5mOTA6IE5ldyBmaWxlLgotCSogdmxh LWZ1bmMuZXhwOiBOZXcgZmlsZS4KLQotQ2hhbmdlLUlkOiBJYzNlYjIxMmYzNWY1OTllNGMxMGEy ODRjMjMxMjU0OTE2NTNiMTdkZgotCi1TaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4u Ym9lbGxAaW50ZWwuY29tPgotLS0tCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVu Yy5leHAgfCAgIDYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGdkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vdmxhLWZ1bmMuZjkwIHwgICA3MSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTMyIGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5leHAKLSBjcmVhdGUg bW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5mOTAKLQotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1bmMuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCAwMDAwMDAwLi5mMGYyMzZiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1mdW5jLmV4cAotQEAgLTAsMCArMSw2MSBAQAotKyMgQ29weXJpZ2h0 IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgotKwotK2lmIHsgW3By ZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0g XAotKyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStp ZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJy ZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLSsjIENoZWNrIFZMQSBwYXNz ZWQgdG8gZmlyc3QgRm9ydHJhbiBmdW5jdGlvbi4KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAiZnVuYzEtdmxhLXBhc3NlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImZ1bmMxLXZsYS1wYXNzZWQiCi0rZ2RiX3Rlc3QgInByaW50IHZsYSIgIiA9IFxcKCAqXFwo ICoyMiwgKjIyLCAqMjIsXFsoKTIyLCAuXF0qXFwpIiBcCi0rICAicHJpbnQgdmxhIChmdW5jMSki Ci0rZ2RiX3Rlc3QgInB0eXBlIHZsYSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkgXFxc KDEwLDEwXFxcKSIgXAotKyAgInB0eXBlIHZsYSAoZnVuYzEpIgotKwotK2dkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmdW5jMS12bGEtbW9kaWZpZWQiXQotK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJmdW5jMS12bGEtbW9kaWZpZWQiCi0rZ2RiX3Rlc3QgInByaW50IHZs YSg1LDUpIiAiID0gNTUiICJwcmludCB2bGEoNSw1KSAoZnVuYzEpIgotK2dkYl90ZXN0ICJwcmlu dCB2bGEoNyw3KSIgIiA9IDc3IiAicHJpbnQgdmxhKDUsNSkgKGZ1bmMxKSIKLSsKLSsjIENoZWNr IGlmIHRoZSB2YWx1ZXMgYXJlIGNvcnJlY3QgYWZ0ZXIgcmV0dXJuaW5nIGZyb20gZnVuYzEKLStn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZnVuYzEtcmV0dXJuZWQiXQotK2dk Yl9jb250aW51ZV90b19icmVha3BvaW50ICJmdW5jMS1yZXR1cm5lZCIKLStnZGJfdGVzdCAicHJp bnQgcmV0IiAiID0gLlRSVUUuIiAicHJpbnQgcmV0IGFmdGVyIGZ1bmMxIHJldHVybmVkIgotKwot KyMgQ2hlY2sgVkxBIHBhc3NlZCB0byBzZWNvbmQgRm9ydHJhbiBmdW5jdGlvbgotK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmdW5jMi12bGEtcGFzc2VkIl0KLStnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAiZnVuYzItdmxhLXBhc3NlZCIKLStnZGJfdGVzdCAicHJpbnQg dmxhIiBcCi0rICAiID0gXFxcKDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0 XFxcKSIgXAotKyAgInByaW50IHZsYSAoZnVuYzIpIgotK2dkYl90ZXN0ICJwdHlwZSB2bGEiICJ0 eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIFxcXCgxMFxcXCkiIFwKLSsgICJwdHlwZSB2bGEg KGZ1bmMyKSIKLSsKLSsjIENoZWNrIGlmIHRoZSByZXR1cm5lZCBWTEEgaGFzIHRoZSBjb3JyZWN0 IHZhbHVlcyBhbmQgcHR5cGUuCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg ImZ1bmMyLXJldHVybmVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiZnVuYzItcmV0 dXJuZWQiCi0rZ2RiX3Rlc3QgInByaW50IHZsYTMiICIgPSBcXFwoMSwgMiwgNDQsIDQsIDQ0LCA0 NCwgNDQsIDgsIDQ0LCA0NFxcXCkiIFwKLSsgICJwcmludCB2bGEzIChhZnRlciBmdW5jMikiCi0r Z2RiX3Rlc3QgInB0eXBlIHZsYTMiICJ0eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIFxcXCgx MFxcXCkiIFwKLSsgICJwdHlwZSB2bGEzIChhZnRlciBmdW5jMikiCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3ZsYS1mdW5jLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAu LjRmNDVkYTEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v dmxhLWZ1bmMuZjkwCi1AQCAtMCwwICsxLDcxIEBACi0rISBDb3B5cmlnaHQgMjAxNCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rISBGb3Vu ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIx MTEtMTMwNywgVVNBLgotKwotK2xvZ2ljYWwgZnVuY3Rpb24gZnVuYzEgKHZsYSkKLSsgIGltcGxp Y2l0IG5vbmUKLSsgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IHZsYSAoOiwgOikKLSsgIGZ1bmMx ID0gYWxsb2NhdGVkKHZsYSkKLSsgIHZsYSg1LDUpID0gNTUgICAgICAgICAgICAgICAhIGZ1bmMx LXZsYS1wYXNzZWQKLSsgIHZsYSg3LDcpID0gNzcKLSsgIHJldHVybiAgICAgICAgICAgICAgICAg ICAgICAhIGZ1bmMxLXZsYS1tb2RpZmllZAotK2VuZCBmdW5jdGlvbiBmdW5jMQotKwotK2Z1bmN0 aW9uIGZ1bmMyKHZsYSkKLSsgIGltcGxpY2l0IG5vbmUKLSsgIGludGVnZXIgOjogdmxhICg6KQot KyAgaW50ZWdlciA6OiBmdW5jMihzaXplKHZsYSkpCi0rICBpbnRlZ2VyIDo6IGsKLSsKLSsgIHZs YSgxKSA9IDEgICAgICAgICAgICAgICAgICAgICEgZnVuYzItdmxhLXBhc3NlZAotKyAgdmxhKDIp ID0gMgotKyAgdmxhKDQpID0gNAotKyAgdmxhKDgpID0gOAotKwotKyAgZnVuYzIgPSB2bGEKLStl bmQgZnVuY3Rpb24gZnVuYzIKLSsKLStwcm9ncmFtIHZsYV9mdW5jCi0rICBpbXBsaWNpdCBub25l Ci0rICBpbnRlcmZhY2UKLSsgICAgbG9naWNhbCBmdW5jdGlvbiBmdW5jMSAodmxhKQotKyAgICAg IGludGVnZXIgOjogdmxhICg6LCA6KQotKyAgICBlbmQgZnVuY3Rpb24KLSsgIGVuZCBpbnRlcmZh Y2UKLSsgIGludGVyZmFjZQotKyAgICBmdW5jdGlvbiBmdW5jMiAodmxhKQotKyAgICAgIGludGVn ZXIgOjogdmxhICg6KQotKyAgICAgIGludGVnZXIgZnVuYzIoc2l6ZSh2bGEpKQotKyAgICBlbmQg ZnVuY3Rpb24KLSsgIGVuZCBpbnRlcmZhY2UKLSsKLSsgIGxvZ2ljYWwgOjogcmV0Ci0rICBpbnRl Z2VyLCBhbGxvY2F0YWJsZSA6OiB2bGExICg6LCA6KQotKyAgaW50ZWdlciwgYWxsb2NhdGFibGUg OjogdmxhMiAoOikKLSsgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IHZsYTMgKDopCi0rCi0rICBy ZXQgPSAuRkFMU0UuCi0rCi0rICBhbGxvY2F0ZSAodmxhMSAoMTAsMTApKQotKyAgdmxhMSg6LDop ID0gMjIKLSsKLSsgIGFsbG9jYXRlICh2bGEyICgxMCkpCi0rICB2bGEyKDopID0gNDQKLSsKLSsg IHJldCA9IGZ1bmMxKHZsYTEpCi0rICB2bGEzID0gZnVuYzIodmxhMikgICAgICAgICAgISBmdW5j MS1yZXR1cm5lZAotKwotKyAgcmV0ID0gLlRSVUUuICAgICAgICAgICAgICAgICEgZnVuYzItcmV0 dXJuZWQKLStlbmQgcHJvZ3JhbSB2bGFfZnVuYwotLS0gCi0xLjcuOS41Ci0KCmRpZmYgLS1naXQg YS9nZGItdmxhLWludGVsLTE5b2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMTlvZjIzLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWY5MWI4Li4wMDAwMDAwCi0tLSBhL2dk Yi12bGEtaW50ZWwtMTlvZjIzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAot U3ViamVjdDogW1BBVENIIDE5LzIzXSB0ZXN0OiBhY2Nlc3NpbmcgZHluYW1pYyBhcnJheSBoaXN0 b3J5IHZhbHVlcy4KLU1lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMjAtZ2l0LXNlbmQtZW1h aWwta2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotCi1UZXN0cyBpZiB0aGUgaGlzdG9yeSB2YWx1ZXMg b2YgZHluYW1pYyBhcnJheXMgY2FuIGJlCi1hY2Nlc3NlZCBhbmQgcHJpbnRlZCBhZ2FpbiB3aXRo IHRoZSBjb3JyZWN0IHZhbHVlcy4KLQotMjAxNC0wNS0yOCAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5i b2VsbEBpbnRlbC5jb20+Ci0gICAgICAgICAgICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdv dmljQGludGVsLmNvbT4KLQotdGVzdHN1aXRlL2dkYi5mb3J0cmFuLzoKLQotCSogdmxhLWhpc3Rv cnkuZXhwOiBOZXcgZmlsZS4KLQotQ2hhbmdlLUlkOiBJYjZkMmQzMDI3MmFlZmMyNGI2ZGI1ZmEw NjMzZmU3MjI3NDM5MGU5MQotCi1TaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9l bGxAaW50ZWwuY29tPgotLS0tCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtaGlzdG9y eS5leHAgfCAgIDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5n ZWQsIDYyIGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEtaGlzdG9yeS5leHAKLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vdmxhLWhpc3RvcnkuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEtaGlzdG9yeS5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xNzBl MWViCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1o aXN0b3J5LmV4cAotQEAgLTAsMCArMSw2MiBAQAotKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMK LSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgot KwotK3N0YW5kYXJkX3Rlc3RmaWxlICJ2bGEuZjkwIgotKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rl c3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAotKyAgICB7ZGVi dWcgZjkwIHF1aWV0fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStpZiAhW3J1bnRvIE1B SU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJ Tl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLSsjIFNldCBzb21lIGJyZWFrcG9pbnRzIGFuZCBw cmludCBjb21wbGV0ZSB2bGEuCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg InZsYTEtaW5pdCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtaW5pdCIKLStn ZGJfdGVzdCAicHJpbnQgdmxhMSIgIiA9IDxub3QgYWxsb2NhdGVkPiIgInByaW50IG5vbi1hbGxv Y2F0ZWQgdmxhMSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxh Mi1hbGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEyLWFsbG9jYXRl ZCIKLStnZGJfdGVzdCAicHJpbnQgdmxhMSIgIiA9IFxcKCAqXFwoICpcXCggKjAsICowLCAqMCxc WygpMCwgLlxdKlxcKSIgXAotKyAgInByaW50IHZsYTEgYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJw cmludCB2bGEyIiAiID0gXFwoICpcXCggKlxcKCAqMCwgKjAsICowLFxbKCkwLCAuXF0qXFwpIiBc Ci0rICAicHJpbnQgdmxhMiBhbGxvY2F0ZWQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgInZsYTEtZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi dmxhMS1maWxsZWQiCi0rZ2RiX3Rlc3QgInByaW50IHZsYTEiIFwKLSsgICIgPSBcXCggKlxcKCAq XFwoICoxMzExLCAqMTMxMSwgKjEzMTEsXFsoKTEzMTEsIC5cXSpcXCkiIFwKLSsgICJwcmludCB2 bGExIGZpbGxlZCIKLSsKLSsjIFRyeSB0byBhY2Nlc3MgaGlzdG9yeSB2YWx1ZXMgZm9yIGZ1bGwg dmxhIHByaW50cy4KLStnZGJfdGVzdCAicHJpbnQgXCQxIiAiID0gPG5vdCBhbGxvY2F0ZWQ+IiAi cHJpbnQgXCQxIgotK2dkYl90ZXN0ICJwcmludCBcJDIiICIgPSBcXCggKlxcKCAqXFwoICowLCAq MCwgKjAsXFsoKTAsIC5cXSpcXCkiIFwKLSsgICJwcmludCBcJDIiCi0rZ2RiX3Rlc3QgInByaW50 IFwkMyIgIiA9IFxcKCAqXFwoICpcXCggKjAsICowLCAqMCxcWygpMCwgLlxdKlxcKSIgXAotKyAg InByaW50IFwkMyIKLStnZGJfdGVzdCAicHJpbnQgXCQ0IiBcCi0rICAiID0gXFwoICpcXCggKlxc KCAqMTMxMSwgKjEzMTEsICoxMzExLFxbKCkxMzExLCAuXF0qXFwpIiAicHJpbnQgXCQ0IgotKwot K2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWZpbGxlZCJdCi0rZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTItZmlsbGVkIgotK2dkYl90ZXN0ICJwcmludCB2 bGEyKDEsNDMsMjApIiAiID0gMTMxMSIgInByaW50IHZsYTIoMSw0MywyMCkiCi0rZ2RiX3Rlc3Qg InByaW50IHZsYTEoMSwzLDgpIiAiID0gMTAwMSIgInByaW50IHZsYTIoMSwzLDgpIgotKwotKyMg VHJ5IHRvIGFjY2VzcyBoaXN0b3J5IHZhbHVlcyBmb3IgdmxhIHZhbHVlcy4KLStnZGJfdGVzdCAi cHJpbnQgXCQ5IiAiID0gMTMxMSIgInByaW50IFwkOSIKLStnZGJfdGVzdCAicHJpbnQgXCQxMCIg IiA9IDEwMDEiICJwcmludCBcJDEwIgotLS0gCi0xLjcuOS41Ci0KCmRpZmYgLS1naXQgYS9nZGIt dmxhLWludGVsLTIwb2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMjBvZjIzLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWY1YWM5Li4wMDAwMDAwCi0tLSBhL2dkYi12bGEt aW50ZWwtMjBvZjIzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLVN1Ympl Y3Q6IFtQQVRDSCAyMC8yM10gdGVzdDogZHluYW1pYyBzdHJpbmcgZXZhbHVhdGlvbnMuCi1NZXNz YWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQwLTIxLWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGlu dGVsLmNvbT4KLQotVGVzdHMgdmFyaW91cyBkeW5hbWljIHN0cmluZyBldmFsdWF0aW9ucy4gRHlu YW1pYyBzdHJpbmdzCi13aWxsIGJlIGhhbmRsZWQgaW50ZXJuYWxseSB0aGUgc2FtZSB3YXkgYXMg ZHluYW1pYyBhcnJheXMuCi0KLTIwMTQtMDUtMjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxA aW50ZWwuY29tPgotICAgICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0Bp bnRlbC5jb20+Ci0KLXRlc3RzdWl0ZS9nZGIuZm9ydHJhbi86Ci0KLQkqIHZsYS1zdHJpbmdzLmY5 MDogTmV3IGZpbGUuCi0JKiB2bGEtc3RyaW5ncy5leHA6IE5ldyBmaWxlLgotCi1DaGFuZ2UtSWQ6 IEliMmYzZGRlZDJmYmM1ZjBhOTY4NDA1MGM1Y2ZhMjJhNDUwZTE4MzU4Ci0KLVNpZ25lZC1vZmYt Ynk6IEtldmVuIEJvZWxsIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+Ci0tLS0KLSBnZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmV4cCB8ICAxMDQgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKLSBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmY5MCB8 ICAgMzggKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDE0MiBpbnNlcnRpb25zKCspCi0g Y3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3Mu ZXhwCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0 cmluZ3MuZjkwCi0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1z dHJpbmdzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZXhwCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uN2ZjMTczNAotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5leHAKLUBAIC0w LDAgKzEsMTA0IEBACi0rIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc3RhbmRhcmRfdGVz dGZpbGUgIi5mOTAiCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5l eHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCi0rICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsK LSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgY2hlY2sgdGhhdCBhbGwgZm9ydHJhbiBzdGFuZGFy ZCBkYXRhdHlwZXMgd2lsbCBiZQotKyMgaGFuZGxlZCBjb3JyZWN0bHkgd2hlbiB1c2luZyBhcyBW TEEncwotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4n dCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJfY2hhci1hbGxvY2F0ZWQtMSJdCi0r Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcl9jaGFyLWFsbG9jYXRlZC0xIgotK2dkYl90 ZXN0ICJwcmludCB2YXJfY2hhciIgXAotKyAgIiA9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFjdGVy XFwqMTAgXFwpXFwpICR7aGV4fSIgXAotKyAgInByaW50IHZhcl9jaGFyIGFmdGVyIGFsbG9jYXRl ZCBmaXJzdCB0aW1lIgotK2dkYl90ZXN0ICJwcmludCAqdmFyX2NoYXIiIFwKLSsgICIgPSAnXFxc XDAwMFxcXFwwMDBcXFxcMDAwXFxcXDAwMFxcXFwwMDBcXFxcMDAwXFxcXDAwMFxcXFwwMDBcXFxc MDAwXFxcXDAwMCciIFwKLSsgICJwcmludCAqdmFyX2NoYXIgYWZ0ZXIgYWxsb2NhdGVkIGZpcnN0 IHRpbWUiCi0rZ2RiX3Rlc3QgIndoYXRpcyB2YXJfY2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwo IGNoYXJhY3RlclxcKjEwIFxcKSIgXAotKyAgIndoYXRpcyB2YXJfY2hhciBmaXJzdCB0aW1lIgot K2dkYl90ZXN0ICJwdHlwZSB2YXJfY2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3Rl clxcKjEwIFxcKSIgXAotKyAgInB0eXBlIHZhcl9jaGFyIGZpcnN0IHRpbWUiCi0rZ2RiX3Rlc3Qg Im5leHQiICJcXGQrLip2YXJfY2hhciA9ICdmb28nLioiIFwKLSsgICJuZXh0IHRvIGFsbG9jYXRp b24gc3RhdHVzIG9mIHZhcl9jaGFyIgotK2dkYl90ZXN0ICJwcmludCBsIiAiID0gLlRSVUUuIiAi cHJpbnQgYWxsb2NhdGlvbiBzdGF0dXMgZmlyc3QgdGltZSIKLSsKLStnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAidmFyX2NoYXItZmlsbGVkLTEiXQotK2dkYl9jb250aW51ZV90 b19icmVha3BvaW50ICJ2YXJfY2hhci1maWxsZWQtMSIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2No YXIiIFwKLSsgICIgPSBcXChQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjMgXFwpXFwpICR7aGV4 fSIgXAotKyAgInByaW50IHZhcl9jaGFyIGFmdGVyIGZpbGxlZCBmaXJzdCB0aW1lIgotK2dkYl90 ZXN0ICJwcmludCAqdmFyX2NoYXIiICIgPSAnZm9vJyIgXAotKyAgInByaW50ICp2YXJfY2hhciBh ZnRlciBmaWxsZWQgZmlyc3QgdGltZSIKLStnZGJfdGVzdCAid2hhdGlzIHZhcl9jaGFyIiAidHlw ZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMyBcXCkiIFwKLSsgICJ3aGF0aXMgdmFyX2No YXIgYWZ0ZXIgZmlsbGVkIGZpcnN0IHRpbWUiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcl9jaGFyIiAi dHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMyBcXCkiIFwKLSsgICJwdHlwZSB2YXJf Y2hhciBhZnRlciBmaWxsZWQgZmlyc3QgdGltZSIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2NoYXIo MSkiICIgPSAxMDIgJ2YnIiAicHJpbnQgdmFyX2NoYXIoMSkiCi0rZ2RiX3Rlc3QgInByaW50IHZh cl9jaGFyKDMpIiAiID0gMTExICdvJyIgInByaW50IHZhcl9jaGFyKDMpIgotKwotK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJfY2hhci1maWxsZWQtMiJdCi0rZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcl9jaGFyLWZpbGxlZC0yIgotK2dkYl90ZXN0ICJwcmlu dCB2YXJfY2hhciIgXAotKyAgIiA9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqNiBcXClc XCkgJHtoZXh9IiBcCi0rICAicHJpbnQgdmFyX2NoYXIgYWZ0ZXIgYWxsb2NhdGVkIHNlY29uZCB0 aW1lIgotK2dkYl90ZXN0ICJwcmludCAqdmFyX2NoYXIiICIgPSAnZm9vYmFyJyIgXAotKyAgInBy aW50ICp2YXJfY2hhciBhZnRlciBhbGxvY2F0ZWQgc2Vjb25kIHRpbWUiCi0rZ2RiX3Rlc3QgIndo YXRpcyB2YXJfY2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjYgXFwpIiBc Ci0rICAid2hhdGlzIHZhcl9jaGFyIHNlY29uZCB0aW1lIgotK2dkYl90ZXN0ICJwdHlwZSB2YXJf Y2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjYgXFwpIiBcCi0rICAicHR5 cGUgdmFyX2NoYXIgc2Vjb25kIHRpbWUiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGlu ZV9udW1iZXIgInZhcl9jaGFyLWVtcHR5Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi dmFyX2NoYXItZW1wdHkiCi0rZ2RiX3Rlc3QgInByaW50IHZhcl9jaGFyIiBcCi0rICAiID0gXFwo UFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCowIFxcKVxcKSAke2hleH0iIFwKLSsgICJwcmludCB2 YXJfY2hhciBhZnRlciBzZXQgZW1wdHkiCi0rZ2RiX3Rlc3QgInByaW50ICp2YXJfY2hhciIgIiA9 IFwiXCIiICJwcmludCAqdmFyX2NoYXIgYWZ0ZXIgc2V0IGVtcHR5IgotK2dkYl90ZXN0ICJ3aGF0 aXMgdmFyX2NoYXIiICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCowIFxcKSIgXAot KyAgIndoYXRpcyB2YXJfY2hhciBhZnRlciBzZXQgZW1wdHkiCi0rZ2RiX3Rlc3QgInB0eXBlIHZh cl9jaGFyIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMCBcXCkiIFwKLSsgICJw dHlwZSB2YXJfY2hhciBhZnRlciBzZXQgZW1wdHkiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9n ZXRfbGluZV9udW1iZXIgInZhcl9jaGFyLWFsbG9jYXRlZC0zIl0KLStnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAidmFyX2NoYXItYWxsb2NhdGVkLTMiCi0rZ2RiX3Rlc3QgInByaW50IHZhcl9j aGFyIiBcCi0rICAiID0gXFwoUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCoyMSBcXClcXCkgJHto ZXh9IiBcCi0rICAicHJpbnQgdmFyX2NoYXIgYWZ0ZXIgYWxsb2NhdGVkIHRoaXJkIHRpbWUiCi0r Z2RiX3Rlc3QgIndoYXRpcyB2YXJfY2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3Rl clxcKjIxIFxcKSIgXAotKyAgIndoYXRpcyB2YXJfY2hhciBhZnRlciBhbGxvY2F0ZWQgdGhpcmQg dGltZSIKLStnZGJfdGVzdCAicHR5cGUgdmFyX2NoYXIiICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBj aGFyYWN0ZXJcXCoyMSBcXCkiIFwKLSsgICJwdHlwZSB2YXJfY2hhciBhZnRlciBhbGxvY2F0ZWQg dGhpcmQgdGltZSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFy X2NoYXJfcC1hc3NvY2lhdGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyX2No YXJfcC1hc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwcmludCB2YXJfY2hhcl9wIiBcCi0rICAiID0g XFwoUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCo3IFxcKVxcKSAke2hleH0iIFwKLSsgICJwcmlu dCB2YXJfY2hhcl9wIGFmdGVyIGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInByaW50ICp2YXJfY2hh cl9wIiAiID0gJ2pvaG5kb2UnIiBcCi0rICAicHJpbnQgKnZhcl9jaGFyXyBhZnRlciBhc3NvY2lh dGVkIgotK2dkYl90ZXN0ICJ3aGF0aXMgdmFyX2NoYXJfcCIgInR5cGUgPSBQVFIgVE8gLT4gXFwo IGNoYXJhY3RlclxcKjcgXFwpIiBcCi0rICAid2hhdGlzIHZhcl9jaGFyX3AgYWZ0ZXIgYXNzb2Np YXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFyX2NoYXJfcCIgInR5cGUgPSBQVFIgVE8gLT4gXFwo IGNoYXJhY3RlclxcKjcgXFwpIiBcCi0rICAicHR5cGUgdmFyX2NoYXJfcCBhZnRlciBhc3NvY2lh dGVkIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3Mu ZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5mOTAKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42Njc5MDQzCi0tLS0gL2Rldi9udWxsCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmY5MAotQEAgLTAsMCArMSwz OCBAQAotKyEgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r IQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r ISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0 ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBs YWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsKLStwcm9ncmFt IHZsYV9zdHJpbmdzCi0rICBjaGFyYWN0ZXIobGVuPTopLCB0YXJnZXQsIGFsbG9jYXRhYmxlICAg OjogdmFyX2NoYXIKLSsgIGNoYXJhY3RlcihsZW49OiksIHBvaW50ZXIgICAgICAgICAgICAgICA6 OiB2YXJfY2hhcl9wCi0rICBsb2dpY2FsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OjogbAotKwotKyAgYWxsb2NhdGUoY2hhcmFjdGVyKGxlbj0xMCkgOjogdmFyX2NoYXIpCi0rICBs ID0gYWxsb2NhdGVkKHZhcl9jaGFyKSAgICAgICAgICAgICAgICAgISB2YXJfY2hhci1hbGxvY2F0 ZWQtMQotKyAgdmFyX2NoYXIgPSAnZm9vJwotKyAgZGVhbGxvY2F0ZSh2YXJfY2hhcikgICAgICAg ICAgICAgICAgICAgICEgdmFyX2NoYXItZmlsbGVkLTEKLSsgIGwgPSBhbGxvY2F0ZWQodmFyX2No YXIpICAgICAgICAgICAgICAgICAhIHZhcl9jaGFyLWRlYWxsb2NhdGVkCi0rICBhbGxvY2F0ZShj aGFyYWN0ZXIobGVuPTQyKSA6OiB2YXJfY2hhcikKLSsgIGwgPSBhbGxvY2F0ZWQodmFyX2NoYXIp Ci0rICB2YXJfY2hhciA9ICdmb29iYXInCi0rICB2YXJfY2hhciA9ICcnICAgICAgICAgICAgICAg ICAgICAgICAgICAgISB2YXJfY2hhci1maWxsZWQtMgotKyAgYWxsb2NhdGUoY2hhcmFjdGVyKGxl bj0yMSkgOjogdmFyX2NoYXIpICEgdmFyX2NoYXItZW1wdHkKLSsgIGwgPSBhbGxvY2F0ZWQodmFy X2NoYXIpICAgICAgICAgICAgICAgICAhIHZhcl9jaGFyLWFsbG9jYXRlZC0zCi0rICB2YXJfY2hh ciA9ICdqb2huZG9lJwotKyAgdmFyX2NoYXJfcCA9PiB2YXJfY2hhcgotKyAgbCA9IGFzc29jaWF0 ZWQodmFyX2NoYXJfcCkgICAgICAgICAgICAgICEgdmFyX2NoYXJfcC1hc3NvY2lhdGVkCi0rICB2 YXJfY2hhcl9wID0+IG51bGwoKQotKyAgbCA9IGFzc29jaWF0ZWQodmFyX2NoYXJfcCkgICAgICAg ICAgICAgICEgdmFyX2NoYXJfcC1ub3QtYXNzb2NpYXRlZAotK2VuZCBwcm9ncmFtIHZsYV9zdHJp bmdzCi0tLSAKLTEuNy45LjUKLQoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMjFvZjIzLnBh dGNoIGIvZ2RiLXZsYS1pbnRlbC0yMW9mMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDk0OTRiOTIuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0yMW9mMjMucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwyNjIgKzAsMCBAQAotU3ViamVjdDogW1BBVENIIDIxLzIzXSB0 ZXN0OiBiYXNpYyBNSSB0ZXN0IGZvciB0aGUgZHluYW1pYyBhcnJheSBzdXBwb3J0LgotTWVzc2Fn ZS1JZDogPDE0MDE4NjEyNjYtNjI0MC0yMi1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRl bC5jb20+Ci0KLVRlc3RzIGR5bmFtaWMgYXJyYXkgZXZhbHVhdGlvbnMgdXNpbmcgTUkgcHJvdG9j b2wuCi0KLTIwMTQtMDUtMjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgot ICAgICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+Ci0K LXRlc3RzdWl0ZS9nZGIubWkvOgotCi0JKiBtaS12bGEtZm9ydHJhbi5leHA6IE5ldyBmaWxlLgot CSogdmxhLmY5MDogTmV3IGZpbGUuCi0KLUNoYW5nZS1JZDogSTM3Y2FhODViMTQ5ODQ3OGY1ZWZm MGY1MmQzZmQ0MzEzODhhYWFiNmYKLQotU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVu LmJvZWxsQGludGVsLmNvbT4KLS0tLQotIGdkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0 cmFuLmV4cCB8ICAxODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGdkYi90ZXN0 c3VpdGUvZ2RiLm1pL3ZsYS5mOTAgICAgICAgICAgICB8ICAgNDIgKysrKysrKwotIDIgZmlsZXMg Y2hhbmdlZCwgMjI0IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3Rz dWl0ZS9nZGIubWkvbWktdmxhLWZvcnRyYW4uZXhwCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90 ZXN0c3VpdGUvZ2RiLm1pL3ZsYS5mOTAKLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri Lm1pL21pLXZsYS1mb3J0cmFuLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0 cmFuLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjcyYjBiZTIKLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4 cAotQEAgLTAsMCArMSwxODIgQEAKLSsjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFZl cmlmeSB0aGF0LCB1c2luZyB0aGUgTUksIHdlIGNhbiBldmFsdWF0ZSBhIHNpbXBsZSBDIFZhcmlh YmxlIExlbmd0aAotKyMgQXJyYXkgKFZMQSkuCi0rCi0rbG9hZF9saWIgbWktc3VwcG9ydC5leHAK LStzZXQgTUlGTEFHUyAiLWk9bWkiCi0rCi0rZ2RiX2V4aXQKLStpZiBbbWlfZ2RiX3N0YXJ0XSB7 Ci0rICAgIGNvbnRpbnVlCi0rfQotKwotK3N0YW5kYXJkX3Rlc3RmaWxlIHZsYS5mOTAKLSsKLStp ZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5m aWxlfSIgZXhlY3V0YWJsZSBcCi0rICAgICB7ZGVidWcgZjkwfV0gIT0gIiIgfSB7Ci0rICAgICB1 bnRlc3RlZCBtaS12bGEtZm9ydHJhbi5leHAKLSsgICAgIHJldHVybiAtMQotK30KLSsKLSttaV9k ZWxldGVfYnJlYWtwb2ludHMKLSttaV9nZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJk aXIKLSttaV9nZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rc2V0IGJwX2xpbmVubyBbZ2RiX2dldF9s aW5lX251bWJlciAidmxhMS1ub3QtYWxsb2NhdGVkIl0KLSttaV9jcmVhdGVfYnJlYWtwb2ludCAi LXQgdmxhLmY5MDokYnBfbGluZW5vIiAxICJkZWwiICJ2bGEiIFwKLSsgICIuKnZsYS5mOTAiICRi cF9saW5lbm8gJGhleCBcCi0rICAiaW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5v ICh2bGEgbm90IGFsbG9jYXRlZCkiCi0rbWlfcnVuX2NtZAotK21pX2V4cGVjdF9zdG9wICJicmVh a3BvaW50LWhpdCIgInZsYSIgIiIgIi4qdmxhLmY5MCIgIiRicF9saW5lbm8iIFwKLSsgIHsgIiIg ImRpc3A9XCJkZWxcIiIgfSAicnVuIHRvIGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgot K21pX2dkYl90ZXN0ICI1MDAtZGF0YS1ldmFsdWF0ZS1leHByZXNzaW9uIHZsYTEiIFwKLSsgICI1 MDBcXF5kb25lLHZhbHVlPVwiPG5vdCBhbGxvY2F0ZWQ+XCIiICJldmFsdWF0ZSBub3QgYWxsb2Nh dGVkIHZsYSIKLSsKLSttaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgdmxhMV9ub3RfYWxsb2NhdGVk IHZsYTEgIjxub3QgYWxsb2NhdGVkPiIgXAotKyAgImNyZWF0ZSBsb2NhbCB2YXJpYWJsZSB2bGEx X25vdF9hbGxvY2F0ZWQiCi0rbWlfZ2RiX3Rlc3QgIjUwMS12YXItaW5mby10eXBlIHZsYTFfbm90 X2FsbG9jYXRlZCIgXAotKyAgIjUwMVxcXmRvbmUsdHlwZT1cIjxub3QgYWxsb2NhdGVkPlwiIiBc Ci0rICAiaW5mbyB0eXBlIHZhcmlhYmxlIHZsYTFfbm90X2FsbG9jYXRlZCIKLSttaV9nZGJfdGVz dCAiNTAyLXZhci1zaG93LWZvcm1hdCB2bGExX25vdF9hbGxvY2F0ZWQiIFwKLSsgICI1MDJcXF5k b25lLGZvcm1hdD1cIm5hdHVyYWxcIiIgXAotKyAgInNob3cgZm9ybWF0IHZhcmlhYmxlIHZsYTFf bm90X2FsbG9jYXRlZCIKLSttaV9nZGJfdGVzdCAiNTAzLXZhci1ldmFsdWF0ZS1leHByZXNzaW9u IHZsYTFfbm90X2FsbG9jYXRlZCIgXAotKyAgIjUwM1xcXmRvbmUsdmFsdWU9XCJcXFxbMFxcXF1c IiIgXAotKyAgImV2YWwgdmFyaWFibGUgdmxhMV9ub3RfYWxsb2NhdGVkIgotK21pX2xpc3RfYXJy YXlfdmFyb2JqX2NoaWxkcmVuX3dpdGhfaW5kZXggInZsYTFfbm90X2FsbG9jYXRlZCIgIjAiICIx IiBcCi0rICAgICJyZWFsXFxcKGtpbmQ9NFxcXCkiICJnZXQgY2hpbGRyZW4gb2YgdmxhMV9ub3Rf YWxsb2NhdGVkIgotKwotKwotKwotK3NldCBicF9saW5lbm8gW2dkYl9nZXRfbGluZV9udW1iZXIg InZsYTEtYWxsb2NhdGVkIl0KLSttaV9jcmVhdGVfYnJlYWtwb2ludCAiLXQgdmxhLmY5MDokYnBf bGluZW5vIiAyICJkZWwiICJ2bGEiICIuKnZsYS5mOTAiIFwKLSsgICRicF9saW5lbm8gJGhleCAi aW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vICh2bGEgYWxsb2NhdGVkKSIKLStt aV9ydW5fY21kCi0rbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2 bGEuZjkwIiAiJGJwX2xpbmVubyIgXAotKyAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8g YnJlYWtwb2ludCBhdCBsaW5lICRicF9saW5lbm8iCi0rbWlfZ2RiX3Rlc3QgIjUxMC1kYXRhLWV2 YWx1YXRlLWV4cHJlc3Npb24gdmxhMSIgXAotKyAgIjUxMFxcXmRvbmUsdmFsdWU9XCJcXCgwLCAw LCAwLCAwLCAwXFwpXCIiICJldmFsdWF0ZSBhbGxvY2F0ZWQgdmxhIgotKwotK21pX2NyZWF0ZV92 YXJvYmpfY2hlY2tlZCB2bGExX2FsbG9jYXRlZCB2bGExICJyZWFsXFxcKGtpbmQ9NFxcXCkgXFxc KDVcXFwpIiBcCi0rICAiY3JlYXRlIGxvY2FsIHZhcmlhYmxlIHZsYTFfYWxsb2NhdGVkIgotK21p X2dkYl90ZXN0ICI1MTEtdmFyLWluZm8tdHlwZSB2bGExX2FsbG9jYXRlZCIgXAotKyAgIjUxMVxc XmRvbmUsdHlwZT1cInJlYWxcXFwoa2luZD00XFxcKSBcXFwoNVxcXClcIiIgXAotKyAgImluZm8g dHlwZSB2YXJpYWJsZSB2bGExX2FsbG9jYXRlZCIKLSttaV9nZGJfdGVzdCAiNTEyLXZhci1zaG93 LWZvcm1hdCB2bGExX2FsbG9jYXRlZCIgXAotKyAgIjUxMlxcXmRvbmUsZm9ybWF0PVwibmF0dXJh bFwiIiBcCi0rICAic2hvdyBmb3JtYXQgdmFyaWFibGUgdmxhMV9hbGxvY2F0ZWQiCi0rbWlfZ2Ri X3Rlc3QgIjUxMy12YXItZXZhbHVhdGUtZXhwcmVzc2lvbiB2bGExX2FsbG9jYXRlZCIgXAotKyAg IjUxM1xcXmRvbmUsdmFsdWU9XCJcXFxbNVxcXF1cIiIgXAotKyAgImV2YWwgdmFyaWFibGUgdmxh MV9hbGxvY2F0ZWQiCi0rbWlfbGlzdF9hcnJheV92YXJvYmpfY2hpbGRyZW5fd2l0aF9pbmRleCAi dmxhMV9hbGxvY2F0ZWQiICI1IiAiMSIgXAotKyAgICAicmVhbFxcXChraW5kPTRcXFwpIiAiZ2V0 IGNoaWxkcmVuIG9mIHZsYTFfYWxsb2NhdGVkIgotKwotKwotK3NldCBicF9saW5lbm8gW2dkYl9n ZXRfbGluZV9udW1iZXIgInZsYTEtZmlsbGVkIl0KLSttaV9jcmVhdGVfYnJlYWtwb2ludCAiLXQg dmxhLmY5MDokYnBfbGluZW5vIiAzICJkZWwiICJ2bGEiICIuKnZsYS5mOTAiIFwKLSsgICRicF9s aW5lbm8gJGhleCAiaW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgotK21pX3J1 bl9jbWQKLSttaV9leHBlY3Rfc3RvcCAiYnJlYWtwb2ludC1oaXQiICJ2bGEiICIiICIuKnZsYS5m OTAiICIkYnBfbGluZW5vIiBcCi0rICB7ICIiICJkaXNwPVwiZGVsXCIiIH0gInJ1biB0byBicmVh a3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKLSttaV9nZGJfdGVzdCAiNTIwLWRhdGEtZXZhbHVh dGUtZXhwcmVzc2lvbiB2bGExIiBcCi0rICAiNTIwXFxeZG9uZSx2YWx1ZT1cIlxcKDEsIDEsIDEs IDEsIDFcXClcIiIgImV2YWx1YXRlIGZpbGxlZCB2bGEiCi0rCi0rCi0rc2V0IGJwX2xpbmVubyBb Z2RiX2dldF9saW5lX251bWJlciAidmxhMS1tb2RpZmllZCJdCi0rbWlfY3JlYXRlX2JyZWFrcG9p bnQgIi10IHZsYS5mOTA6JGJwX2xpbmVubyIgNCAiZGVsIiAidmxhIiAiLip2bGEuZjkwIiBcCi0r ICAkYnBfbGluZW5vICRoZXggImluc2VydCBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIK LSttaV9ydW5fY21kCi0rbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAi Lip2bGEuZjkwIiAiJGJwX2xpbmVubyIgXAotKyAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4g dG8gYnJlYWtwb2ludCBhdCBsaW5lICRicF9saW5lbm8iCi0rbWlfZ2RiX3Rlc3QgIjUzMC1kYXRh LWV2YWx1YXRlLWV4cHJlc3Npb24gdmxhMSIgXAotKyAgIjUzMFxcXmRvbmUsdmFsdWU9XCJcXCgx LCA0MiwgMSwgMjQsIDFcXClcIiIgImV2YWx1YXRlIGZpbGxlZCB2bGEiCi0rbWlfZ2RiX3Rlc3Qg IjU0MC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Npb24gdmxhMSgxKSIgXAotKyAgIjU0MFxcXmRvbmUs dmFsdWU9XCIxXCIiICJldmFsdWF0ZSBmaWxsZWQgdmxhIgotK21pX2dkYl90ZXN0ICI1NTAtZGF0 YS1ldmFsdWF0ZS1leHByZXNzaW9uIHZsYTEoMikiIFwKLSsgICI1NTBcXF5kb25lLHZhbHVlPVwi NDJcIiIgImV2YWx1YXRlIGZpbGxlZCB2bGEiCi0rbWlfZ2RiX3Rlc3QgIjU2MC1kYXRhLWV2YWx1 YXRlLWV4cHJlc3Npb24gdmxhMSg0KSIgXAotKyAgIjU2MFxcXmRvbmUsdmFsdWU9XCIyNFwiIiAi ZXZhbHVhdGUgZmlsbGVkIHZsYSIKLSsKLSsKLStzZXQgYnBfbGluZW5vIFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJ2bGExLWRlYWxsb2NhdGVkIl0KLSttaV9jcmVhdGVfYnJlYWtwb2ludCAiLXQgdmxh LmY5MDokYnBfbGluZW5vIiA1ICJkZWwiICJ2bGEiICIuKnZsYS5mOTAiIFwKLSsgICRicF9saW5l bm8gJGhleCAiaW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgotK21pX3J1bl9j bWQKLSttaV9leHBlY3Rfc3RvcCAiYnJlYWtwb2ludC1oaXQiICJ2bGEiICIiICIuKnZsYS5mOTAi ICIkYnBfbGluZW5vIiBcCi0rICB7ICIiICJkaXNwPVwiZGVsXCIiIH0gInJ1biB0byBicmVha3Bv aW50IGF0IGxpbmUgJGJwX2xpbmVubyIKLSttaV9nZGJfdGVzdCAiNTcwLWRhdGEtZXZhbHVhdGUt ZXhwcmVzc2lvbiB2bGExIiBcCi0rICAiNTcwXFxeZG9uZSx2YWx1ZT1cIjxub3QgYWxsb2NhdGVk PlwiIiAiZXZhbHVhdGUgbm90IGFsbG9jYXRlZCB2bGEiCi0rCi0rCi0rc2V0IGJwX2xpbmVubyBb Z2RiX2dldF9saW5lX251bWJlciAicHZsYTItbm90LWFzc29jaWF0ZWQiXQotK21pX2NyZWF0ZV9i cmVha3BvaW50ICItdCB2bGEuZjkwOiRicF9saW5lbm8iIDYgImRlbCIgInZsYSIgIi4qdmxhLmY5 MCIgXAotKyAgJGJwX2xpbmVubyAkaGV4ICJpbnNlcnQgYnJlYWtwb2ludCBhdCBsaW5lICRicF9s aW5lbm8iCi0rbWlfcnVuX2NtZAotK21pX2V4cGVjdF9zdG9wICJicmVha3BvaW50LWhpdCIgInZs YSIgIiIgIi4qdmxhLmY5MCIgIiRicF9saW5lbm8iIFwKLSsgIHsgIiIgImRpc3A9XCJkZWxcIiIg fSAicnVuIHRvIGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgotK21pX2dkYl90ZXN0ICI1 ODAtZGF0YS1ldmFsdWF0ZS1leHByZXNzaW9uIHB2bGEyIiBcCi0rICAiNTgwXFxeZG9uZSx2YWx1 ZT1cIjxub3QgYXNzb2NpYXRlZD5cIiIgImV2YWx1YXRlIG5vdCBhc3NvY2lhdGVkIHZsYSIKLSsK LSttaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgcHZsYTJfbm90X2Fzc29jaWF0ZWQgcHZsYTIgIjxu b3QgYXNzb2NpYXRlZD4iIFwKLSsgICJjcmVhdGUgbG9jYWwgdmFyaWFibGUgcHZsYTJfbm90X2Fz c29jaWF0ZWQiCi0rbWlfZ2RiX3Rlc3QgIjU4MS12YXItaW5mby10eXBlIHB2bGEyX25vdF9hc3Nv Y2lhdGVkIiBcCi0rICAiNTgxXFxeZG9uZSx0eXBlPVwiPG5vdCBhc3NvY2lhdGVkPlwiIiBcCi0r ICAiaW5mbyB0eXBlIHZhcmlhYmxlIHB2bGEyX25vdF9hc3NvY2lhdGVkIgotK21pX2dkYl90ZXN0 ICI1ODItdmFyLXNob3ctZm9ybWF0IHB2bGEyX25vdF9hc3NvY2lhdGVkIiBcCi0rICAiNTgyXFxe ZG9uZSxmb3JtYXQ9XCJuYXR1cmFsXCIiIFwKLSsgICJzaG93IGZvcm1hdCB2YXJpYWJsZSBwdmxh Ml9ub3RfYXNzb2NpYXRlZCIKLSttaV9nZGJfdGVzdCAiNTgzLXZhci1ldmFsdWF0ZS1leHByZXNz aW9uIHB2bGEyX25vdF9hc3NvY2lhdGVkIiBcCi0rICAiNTgzXFxeZG9uZSx2YWx1ZT1cIlxcXFsw XFxcXVwiIiBcCi0rICAiZXZhbCB2YXJpYWJsZSBwdmxhMl9ub3RfYXNzb2NpYXRlZCIKLSttaV9s aXN0X2FycmF5X3Zhcm9ial9jaGlsZHJlbl93aXRoX2luZGV4ICJwdmxhMl9ub3RfYXNzb2NpYXRl ZCIgIjAiICIxIiBcCi0rICAgICJyZWFsXFxcKGtpbmQ9NFxcXCkiICJnZXQgY2hpbGRyZW4gb2Yg cHZsYTJfbm90X2Fzc29jaWF0ZWQiCi0rCi0rCi0rc2V0IGJwX2xpbmVubyBbZ2RiX2dldF9saW5l X251bWJlciAicHZsYTItYXNzb2NpYXRlZCJdCi0rbWlfY3JlYXRlX2JyZWFrcG9pbnQgIi10IHZs YS5mOTA6JGJwX2xpbmVubyIgNyAiZGVsIiAidmxhIiAiLip2bGEuZjkwIiBcCi0rICAkYnBfbGlu ZW5vICRoZXggImluc2VydCBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKLSttaV9ydW5f Y21kCi0rbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkw IiAiJGJwX2xpbmVubyIgXAotKyAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8gYnJlYWtw b2ludCBhdCBsaW5lICRicF9saW5lbm8iCi0rbWlfZ2RiX3Rlc3QgIjU5MC1kYXRhLWV2YWx1YXRl LWV4cHJlc3Npb24gcHZsYTIiIFwKLSsgICI1OTBcXF5kb25lLHZhbHVlPVwiXFwoXFwoIDIsIDIs IDIsIDIsIDJcXCkgXFwoIDIsIDIsIDIsIDIsIDJcXCkgXFwpXCIiIFwKLSsgICJldmFsdWF0ZSBh c3NvY2lhdGVkIHZsYSIKLSsKLSttaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgcHZsYTJfYXNzb2Np YXRlZCBwdmxhMiBcCi0rICAicmVhbFxcXChraW5kPTRcXFwpIFxcXCg1LDJcXFwpIiAiY3JlYXRl IGxvY2FsIHZhcmlhYmxlIHB2bGEyX2Fzc29jaWF0ZWQiCi0rbWlfZ2RiX3Rlc3QgIjU5MS12YXIt aW5mby10eXBlIHB2bGEyX2Fzc29jaWF0ZWQiIFwKLSsgICI1OTFcXF5kb25lLHR5cGU9XCJyZWFs XFxcKGtpbmQ9NFxcXCkgXFxcKDUsMlxcXClcIiIgXAotKyAgImluZm8gdHlwZSB2YXJpYWJsZSBw dmxhMl9hc3NvY2lhdGVkIgotK21pX2dkYl90ZXN0ICI1OTItdmFyLXNob3ctZm9ybWF0IHB2bGEy X2Fzc29jaWF0ZWQiIFwKLSsgICI1OTJcXF5kb25lLGZvcm1hdD1cIm5hdHVyYWxcIiIgXAotKyAg InNob3cgZm9ybWF0IHZhcmlhYmxlIHB2bGEyX2Fzc29jaWF0ZWQiCi0rbWlfZ2RiX3Rlc3QgIjU5 My12YXItZXZhbHVhdGUtZXhwcmVzc2lvbiBwdmxhMl9hc3NvY2lhdGVkIiBcCi0rICAiNTkzXFxe ZG9uZSx2YWx1ZT1cIlxcXFsyXFxcXVwiIiBcCi0rICAiZXZhbCB2YXJpYWJsZSBwdmxhMl9hc3Nv Y2lhdGVkIgotKwotKwotK3NldCBicF9saW5lbm8gW2dkYl9nZXRfbGluZV9udW1iZXIgInB2bGEy LXNldC10by1udWxsIl0KLSttaV9jcmVhdGVfYnJlYWtwb2ludCAiLXQgdmxhLmY5MDokYnBfbGlu ZW5vIiA4ICJkZWwiICJ2bGEiICIuKnZsYS5mOTAiIFwKLSsgICRicF9saW5lbm8gJGhleCAiaW5z ZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgotK21pX3J1bl9jbWQKLSttaV9leHBl Y3Rfc3RvcCAiYnJlYWtwb2ludC1oaXQiICJ2bGEiICIiICIuKnZsYS5mOTAiICIkYnBfbGluZW5v IiBcCi0rICB7ICIiICJkaXNwPVwiZGVsXCIiIH0gInJ1biB0byBicmVha3BvaW50IGF0IGxpbmUg JGJwX2xpbmVubyIKLSttaV9nZGJfdGVzdCAiNjAwLWRhdGEtZXZhbHVhdGUtZXhwcmVzc2lvbiBw dmxhMiIgXAotKyAgIjYwMFxcXmRvbmUsdmFsdWU9XCI8bm90IGFzc29jaWF0ZWQ+XCIiICJldmFs dWF0ZSB2bGEgcG9pbnRlciBzZXQgdG8gbnVsbCIKLSsKLSttaV9nZGJfZXhpdAotK3JldHVybiAw Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvdmxhLmY5MCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLm1pL3ZsYS5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi40 NmVkYWQyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS92bGEuZjkw Ci1AQCAtMCwwICsxLDQyIEBACi0rISBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3Byb2dy YW0gdmxhCi0rICByZWFsLCBhbGxvY2F0YWJsZSA6OiB2bGExICg6KQotKyAgcmVhbCwgdGFyZ2V0 LCBhbGxvY2F0YWJsZSA6OiB2bGEyKDosIDopCi0rICByZWFsLCBwb2ludGVyIDo6IHB2bGEyICg6 LCA6KQotKyAgbG9naWNhbCA6OiBsCi0rCi0rICBhbGxvY2F0ZSAodmxhMSAoNSkpICAgICAgICAg ISB2bGExLW5vdC1hbGxvY2F0ZWQKLSsgIGwgPSBhbGxvY2F0ZWQodmxhMSkgICAgICAgICAhIHZs YTEtYWxsb2NhdGVkCi0rCi0rICB2bGExKDopID0gMQotKyAgdmxhMSgyKSA9IDQyICAgICAgICAg ICAgICAgICEgdmxhMS1maWxsZWQKLSsgIHZsYTEoNCkgPSAyNAotKwotKyAgZGVhbGxvY2F0ZSAo dmxhMSkgICAgICAgICAgICEgdmxhMS1tb2RpZmllZAotKyAgbCA9IGFsbG9jYXRlZCh2bGExKSAg ICAgICAgICEgdmxhMS1kZWFsbG9jYXRlZAotKwotKyAgYWxsb2NhdGUgKHZsYTIgKDUsIDIpKQot KyAgdmxhMig6LCA6KSA9IDIKLSsKLSsgIHB2bGEyID0+IHZsYTIgICAgICAgICAgICAgICAhIHB2 bGEyLW5vdC1hc3NvY2lhdGVkCi0rICBsID0gYXNzb2NpYXRlZChwdmxhMikgICAgICAgISBwdmxh Mi1hc3NvY2lhdGVkCi0rCi0rICBwdmxhMigyLCAxKSA9IDQyCi0rCi0rICBwdmxhMiA9PiBudWxs KCkKLSsgIGwgPSBhc3NvY2lhdGVkKHB2bGEyKSAgICAgICAhIHB2bGEyLXNldC10by1udWxsCi0r ZW5kIHByb2dyYW0gdmxhCi0tLSAKLTEuNy45LjUKLQoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50 ZWwtMjJvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0yMm9mMjMucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDFhMDY3NGMuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC0y Mm9mMjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1TdWJqZWN0OiBbUEFU Q0ggMjIvMjNdIHRlc3Q6IHRlc3Qgc2l6ZW9mIGZvciBkeW5hbWljIGZvcnRyYW4gYXJyYXlzLgot TWVzc2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC0yMy1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2Vs bEBpbnRlbC5jb20+Ci0KLVRlc3RzIHNpemVvZiBvdXRwdXQgb2YgZHluYW1pYyBhcnJheXMgaW4g dmFyaW91cyBzdGF0ZXMuCi0KLTIwMTQtMDUtMjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxA aW50ZWwuY29tPgotICAgICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0Bp bnRlbC5jb20+Ci0KLXRlc3RzdWl0ZS9nZGIuZm9ydHJhbi86Ci0KLQkqIHZsYS1zaXplb2YuZXhw OiBOZXcgZmlsZS4KLQotQ2hhbmdlLUlkOiBJNjhkODFkMDNmZjJkYWEzMmFiODdkMjc1MDg3MzY1 MmQ2ODRlNzM4OQotCi1TaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50 ZWwuY29tPgotLS0tCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9mLmV4cCB8 ICAgNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQ2 IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi92bGEtc2l6ZW9mLmV4cAotCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi92bGEtc2l6ZW9mLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXNpemVv Zi5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42MDUzYzE3Ci0tLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zaXplb2YuZXhw Ci1AQCAtMCwwICsxLDQ2IEBACi0rIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc3RhbmRh cmRfdGVzdGZpbGUgInZsYS5mOTAiCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rl c3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCi0rICAgIHtkZWJ1ZyBmOTAgcXVp ZXR9XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVu IHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAg IGNvbnRpbnVlCi0rfQotKwotKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gbm9uIGFsbG9jYXRl ZCBWTEEKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1pbml0Il0K LStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMS1pbml0IgotK2dkYl90ZXN0ICJwcmlu dCBzaXplb2YodmxhMSkiICIgPSAwIiAicHJpbnQgc2l6ZW9mIG5vbi1hbGxvY2F0ZWQgdmxhMSIK LSsKLSsjIFRyeSB0byBhY2Nlc3MgdmFsdWUgaW4gYWxsb2NhdGVkIFZMQQotK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWFsbG9jYXRlZCJdCi0rZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgInZsYTItYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwcmludCBzaXplb2Yo dmxhMSkiICIgPSA0MDAwIiAicHJpbnQgc2l6ZW9mIGFsbG9jYXRlZCB2bGExIgotKwotKyMgVHJ5 IHRvIGFjY2VzcyB2YWx1ZXMgaW4gdW5kZWZpbmVkIHBvaW50ZXIgdG8gVkxBIChkYW5nbGluZykK LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1maWxsZWQiXQotK2dk Yl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWZpbGxlZCIKLStnZGJfdGVzdCAicHJpbnQg c2l6ZW9mKHB2bGEpIiAiID0gMCIgInByaW50IHNpemVvZiBub24tYXNzb2NpYXRlZCBwdmxhIgot KwotKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gcG9pbnRlciB0byBWTEEgYW5kIGNvbXBhcmUg dGhlbQotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLWFzc29jaWF0 ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWFzc29jaWF0ZWQiCi0rZ2Ri X3Rlc3QgInByaW50IHNpemVvZihwdmxhKSIgIiA9IDQwMDAiICJwcmludCBzaXplb2YgYXNzb2Np YXRlZCBwdmxhIgotLS0gCi0xLjcuOS41Ci0KCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTIz b2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMjNvZjIzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBjOTY1N2QwLi4wMDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtMjNvZjIz LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSCAy My8yM10gdGVzdDogc3RyaWRlIHN1cHBvcnQgZm9yIGR5bmFtaWMgYXJyYXlzLgotTWVzc2FnZS1J ZDogPDE0MDE4NjEyNjYtNjI0MC0yNC1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5j b20+Ci0KLVRlc3RzIHRoZSB1c2FnZSBvZiBzdHJpZGUgdmFsdWVzIGluIGR5bmFtaWMgYXJyYXlz LgotCi0yMDE0LTA1LTI4ICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNv bT4KLSAgICAgICAgICAgIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgotCi10 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vOgotCi0JKiB2bGEtc3RyaWRlLmV4cDogTmV3IGZpbGUuCi0J KiB2bGEtc3RyaWRlLmY5MDogTmV3IGZpbGUuCi0KLUNoYW5nZS1JZDogSWM0ZjY4Y2Y5NzA0NmNj OWY1ZjM2NjRmZTRjMTJkMmI3NTI4YzIyZWUKLQotU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwg PGtldmVuLmJvZWxsQGludGVsLmNvbT4KLS0tLQotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v dmxhLXN0cmlkZS5leHAgfCAgIDUxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGdk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAgfCAgIDMwICsrKysrKysrKysr KysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgODEgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZXhwCi0gY3JlYXRl IG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAKLQot ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZXhwCi1uZXcgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggMDAwMDAwMC4uZTc5MTExNQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmV4cAotQEAgLTAsMCArMSw1MSBAQAotKyMg Q29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsj IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgotKwot K2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7 c3JjZmlsZX0gXAotKyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7Ci0rICAgIHJldHVybiAtMQot K30KLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3Qg cnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLStnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicmV2ZXJzZS1lbGVtZW50cyJdCi0rZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgInJldmVyc2UtZWxlbWVudHMiCi0rZ2RiX3Rlc3QgInByaW50 IHB2bGEiICIgPSBcXFwoMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDFcXFwpIiBcCi0rICAi cHJpbnQgcmV2ZXJzZS1lbGVtZW50cyIKLStnZGJfdGVzdCAicHJpbnQgcHZsYSgxKSIgIiA9IDEw IiAicHJpbnQgZmlyc3QgcmV2ZXJzZS1lbGVtZW50IgotK2dkYl90ZXN0ICJwcmludCBwdmxhKDEw KSIgIiA9IDEiICJwcmludCBsYXN0IHJldmVyc2UtZWxlbWVudCIKLSsKLStnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAicmUtcmV2ZXJzZS1lbGVtZW50cyJdCi0rZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgInJlLXJldmVyc2UtZWxlbWVudHMiCi0rZ2RiX3Rlc3QgInByaW50 IHB2bGEiICIgPSBcXFwoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBcXFwpIiBcCi0rICAi cHJpbnQgcmUtcmV2ZXJzZS1lbGVtZW50cyIKLStnZGJfdGVzdCAicHJpbnQgcHZsYSgxKSIgIiA9 IDEiICJwcmludCBmaXJzdCByZS1yZXZlcnNlLWVsZW1lbnQiCi0rZ2RiX3Rlc3QgInByaW50IHB2 bGEoMTApIiAiID0gMTAiICJwcmludCBsYXN0IHJlLXJldmVyc2UtZWxlbWVudCIKLSsKLStnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAib2RkLWVsZW1lbnRzIl0KLStnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAib2RkLWVsZW1lbnRzIgotK2dkYl90ZXN0ICJwcmludCBwdmxh IiAiID0gXFxcKDEsIDMsIDUsIDcsIDlcXFwpIiAicHJpbnQgb2RkLWVsZW1lbnRzIgotK2dkYl90 ZXN0ICJwcmludCBwdmxhKDEpIiAiID0gMSIgInByaW50IGZpcnN0IG9kZC1lbGVtZW50IgotK2dk Yl90ZXN0ICJwcmludCBwdmxhKDUpIiAiID0gOSIgInByaW50IGxhc3Qgb2RkLWVsZW1lbnQiCi0r Ci0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInNpbmdsZS1lbGVtZW50Il0K LStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAic2luZ2xlLWVsZW1lbnQiCi0rZ2RiX3Rlc3Qg InByaW50IHB2bGEiICIgPSBcXFwoNVxcXCkiICJwcmludCBzaW5nbGUtZWxlbWVudCIKLStnZGJf dGVzdCAicHJpbnQgcHZsYSgxKSIgIiA9IDUiICJwcmludCBvbmUgc2luZ2xlLWVsZW1lbnQiCi1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwLi4xZjhjYzU1Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZjkwCi1AQCAtMCwwICsxLDMwIEBACi0rISBD b3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSshCi0rISBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsh IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIQotKyEgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlCi0rISBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0 ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKwotK3Byb2dyYW0gdmxhX3N0cmlk ZQotKyAgaW50ZWdlciwgdGFyZ2V0LCBhbGxvY2F0YWJsZSA6OiB2bGEgKDopCi0rICBpbnRlZ2Vy LCBwb2ludGVyIDo6IHB2bGEgKDopCi0rCi0rICBhbGxvY2F0ZSh2bGEoMTApKQotKyAgdmxhID0g KC8gKEksIEkgPSAxLDEwKSAvKQotKwotKyAgcHZsYSA9PiB2bGEoMTA6MTotMSkKLSsgIHB2bGEg PT4gcHZsYSgxMDoxOi0xKSAhIHJldmVyc2UtZWxlbWVudHMKLSsgIHB2bGEgPT4gdmxhKDE6MTA6 MikgICAhIHJlLXJldmVyc2UtZWxlbWVudHMKLSsgIHB2bGEgPT4gdmxhKDU6NDotMikgICAhIG9k ZC1lbGVtZW50cwotKwotKyAgcHZsYSA9PiBudWxsKCkgICAgICAgICEgc2luZ2xlLWVsZW1lbnQK LStlbmQgcHJvZ3JhbSB2bGFfc3RyaWRlCi0tLSAKLTEuNy45LjUKLQoKZGlmZiAtLWdpdCBhL2dk Yi12bGEtaW50ZWwucGF0Y2ggYi9nZGItdmxhLWludGVsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjBhNjQ2YWIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdmxhLWlu dGVsLnBhdGNoCkBAIC0wLDAgKzEsMzI2NCBAQAorW1BBVENIIDAwLzIzXSBGb3J0cmFuIGR5bmFt aWMgYXJyYXkgc3VwcG9ydAoraHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDE0LTA2L21zZzAwMTA4Lmh0bWwKK2h0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC1nZGIvdmxhL3Ry ZWUvdmxhLWZvcnRyYW4KKworR0lUIHNuYXBzaG90OgorY29tbWl0IGM2MjJhMDQ3ZDIzYmNiYzRk YzY4Mzk4ZmM3MGI1MzFjZWJkOGY1ZWUKKworCitkaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIv TkVXUworaW5kZXggZDlhMTlhZS4uMWYyMmZlYSAxMDA2NDQKKyMjIyBhL2dkYi9ORVdTCisjIyMg Yi9nZGIvTkVXUworQEAgLTMsNiArMywxMCBAQAorIAorICoqKiBDaGFuZ2VzIHNpbmNlIEdEQiA3 LjgKKyAKKysqIEZvcnRyYW4gZHluYW1pYyBhcnJheSBzdXBwb3J0OiBHREIgaGFzIG5vdyBzdXBw b3J0IGZvcgorKyAgZHluYW1pYyBhcnJheXMgaW4gRm9ydHJhbi4gSXQgYWxsb3dzIHRoZSB1c2Vy IHRvIGV2YWx1YXRlCisrICBkeW5hbWljIGFycmF5cyBsaWtlIGFuIG9yZGluYXJ5IHN0YXRpYyBh cnJheS4KKysKKyAqKiogQ2hhbmdlcyBpbiBHREIgNy44CisgCisgKiBOZXcgY29tbWFuZCBsaW5l IG9wdGlvbnMKK2RpZmYgLS1naXQgYS9nZGIvYy12YWxwcmludC5jIGIvZ2RiL2MtdmFscHJpbnQu YworaW5kZXggZjQ2OTRiMC4uOGM0NTI3NiAxMDA2NDQKKy0tLSBhL2dkYi9jLXZhbHByaW50LmMK KysrKyBiL2dkYi9jLXZhbHByaW50LmMKK0BAIC01MzgsNyArNTM4LDE2IEBAIGNfdmFsdWVfcHJp bnQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAorIAl7CisgCSAg Lyogbm9ybWFsIGNhc2UgKi8KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoIik7Cist CSAgdHlwZV9wcmludCAodmFsdWVfdHlwZSAodmFsKSwgIiIsIHN0cmVhbSwgLTEpOworKwkgIGlm IChpc19keW5hbWljX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSkKKysJICAgIHsKKysJ ICAgICAgc3RydWN0IHZhbHVlICp2OworKworKwkgICAgICB2ID0gdmFsdWVfaW5kICh2YWwpOwor KwkgICAgICB2ID0gdmFsdWVfYWRkciAodik7CisrCSAgICAgIHR5cGVfcHJpbnQgKHZhbHVlX3R5 cGUgKHYpLCAiIiwgc3RyZWFtLCAtMSk7CisrCSAgICB9CisrCSAgZWxzZQorKwkgICAgdHlwZV9w cmludCAodmFsdWVfdHlwZSAodmFsKSwgIiIsIHN0cmVhbSwgLTEpOworIAkgIGZwcmludGZfZmls dGVyZWQgKHN0cmVhbSwgIikgIik7CisgCX0KKyAgICAgfQorZGlmZiAtLWdpdCBhL2dkYi9kd2Fy ZjJleHByLmMgYi9nZGIvZHdhcmYyZXhwci5jCitpbmRleCAzNmM5ZjY2Li4yNzRiYTYyIDEwMDY0 NAorLS0tIGEvZ2RiL2R3YXJmMmV4cHIuYworKysrIGIvZ2RiL2R3YXJmMmV4cHIuYworQEAgLTE0 NzgsNiArMTQ3OCwxMiBAQCBleGVjdXRlX3N0YWNrX29wIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250 ZXh0ICpjdHgsCisgCSAgfQorIAkgIGJyZWFrOworIAorKyAgICAgICAgY2FzZSBEV19PUF9wdXNo X29iamVjdF9hZGRyZXNzOgorKwkgIC8qIFJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgb2JqZWN0 IHdlIGFyZSBjdXJyZW50bHkgb2JzZXJ2aW5nLiAgKi8KKysJICByZXN1bHQgPSAoY3R4LT5mdW5j cy0+Z2V0X29iamVjdF9hZGRyZXNzKSAoY3R4LT5iYXRvbik7CisrCSAgcmVzdWx0X3ZhbCA9IHZh bHVlX2Zyb21fdWxvbmdlc3QgKGFkZHJlc3NfdHlwZSwgcmVzdWx0KTsKKysJICBicmVhazsKKysK KyAJZGVmYXVsdDoKKyAJICBlcnJvciAoXygiVW5oYW5kbGVkIGR3YXJmIGV4cHJlc3Npb24gb3Bj b2RlIDB4JXgiKSwgb3ApOworIAl9CitkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuaCBiL2dk Yi9kd2FyZjJleHByLmgKK2luZGV4IDM5ZGFkZjMuLjhjZWJiZTggMTAwNjQ0CistLS0gYS9nZGIv ZHdhcmYyZXhwci5oCisrKysgYi9nZGIvZHdhcmYyZXhwci5oCitAQCAtODQsMTIgKzg0LDggQEAg c3RydWN0IGR3YXJmX2V4cHJfY29udGV4dF9mdW5jcworICAgICAgVGhpcyBjYW4gdGhyb3cgYW4g ZXhjZXB0aW9uIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuICAqLworICAgQ09SRV9BRERS ICgqZ2V0X2FkZHJfaW5kZXgpICh2b2lkICpiYXRvbiwgdW5zaWduZWQgaW50IGluZGV4KTsKKyAK Ky0jaWYgMAorLSAgLyogTm90IHlldCBpbXBsZW1lbnRlZC4gICovCistCisgICAvKiBSZXR1cm4g dGhlIGBvYmplY3QgYWRkcmVzcycgZm9yIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLwor ICAgQ09SRV9BRERSICgqZ2V0X29iamVjdF9hZGRyZXNzKSAodm9pZCAqYmF0b24pOworLSNlbmRp ZgorIH07CisgCisgLyogVGhlIGxvY2F0aW9uIG9mIGEgdmFsdWUuICAqLworZGlmZiAtLWdpdCBh L2dkYi9kd2FyZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYworaW5kZXggZmNhYjliOS4uNGFhYzI3 OCAxMDA2NDQKKy0tLSBhL2dkYi9kd2FyZjJsb2MuYworKysrIGIvZ2RiL2R3YXJmMmxvYy5jCitA QCAtMzA2LDYgKzMwNiw3IEBAIHN0cnVjdCBkd2FyZl9leHByX2JhdG9uCisgeworICAgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lOworICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1 OworKyAgQ09SRV9BRERSIG9ial9hZGRyZXNzOworIH07CisgCisgLyogSGVscGVyIGZ1bmN0aW9u cyBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjLiAgKi8KK0BAIC0xMjA5LDYgKzEyMTAsNyBA QCBkd2FyZl9leHByX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlIChzdHJ1Y3QgZHdhcmZfZXhw cl9jb250ZXh0ICpjdHgsCisgCisgICBiYXRvbl9sb2NhbC5mcmFtZSA9IGNhbGxlcl9mcmFtZTsK KyAgIGJhdG9uX2xvY2FsLnBlcl9jdSA9IGNhbGxlcl9wZXJfY3U7CisrICBiYXRvbl9sb2NhbC5v YmpfYWRkcmVzcyA9IDA7CisgCisgICBzYXZlZF9jdHguZ2RiYXJjaCA9IGN0eC0+Z2RiYXJjaDsK KyAgIHNhdmVkX2N0eC5hZGRyX3NpemUgPSBjdHgtPmFkZHJfc2l6ZTsKK0BAIC0xMjM4LDYgKzEy NDAsMjIgQEAgZHdhcmZfZXhwcl9nZXRfYWRkcl9pbmRleCAodm9pZCAqYmF0b24sIHVuc2lnbmVk IGludCBpbmRleCkKKyAgIHJldHVybiBkd2FyZjJfcmVhZF9hZGRyX2luZGV4IChkZWJhdG9uLT5w ZXJfY3UsIGluZGV4KTsKKyB9CisgCisrLyogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIGdldF9vYmpl Y3RfYWRkcmVzcy4gUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBWTEEKKysgICBvYmplY3QuICAq LworKworK3N0YXRpYyBDT1JFX0FERFIKKytkd2FyZl9leHByX2dldF9vYmpfYWRkciAodm9pZCAq YmF0b24pCisreworKyAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24gKmRlYmF0b24gPSBiYXRvbjsK KysKKysgIGdkYl9hc3NlcnQgKGRlYmF0b24gIT0gTlVMTCk7CisrCisrICBpZiAoZGViYXRvbi0+ b2JqX2FkZHJlc3MgPT0gMCkKKysgICAgZXJyb3IgKF8oIkxvY2F0aW9uIGFkZHJlc3MgaXMgbm90 IHNldC4iKSk7CisrCisrICByZXR1cm4gZGViYXRvbi0+b2JqX2FkZHJlc3M7CisrfQorKworIC8q IFZBTFVFIG11c3QgYmUgb2YgdHlwZSBsdmFsX2NvbXB1dGVkIHdpdGggZW50cnlfZGF0YV92YWx1 ZV9mdW5jcy4gIFBlcmZvcm0KKyAgICB0aGUgaW5kaXJlY3QgbWV0aG9kIG9uIGl0LCB0aGF0IGlz IHVzZSBpdHMgc3RvcmVkIHRhcmdldCB2YWx1ZSwgdGhlIHNvbGUKKyAgICBwdXJwb3NlIG9mIGVu dHJ5X2RhdGFfdmFsdWVfZnVuY3MuLiAgKi8KK0BAIC0yMjAyLDcgKzIyMjAsOCBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dF9mdW5jcyBkd2FyZl9leHByX2N0eF9mdW5j cyA9CisgICBkd2FyZl9leHByX2R3YXJmX2NhbGwsCisgICBkd2FyZl9leHByX2dldF9iYXNlX3R5 cGUsCisgICBkd2FyZl9leHByX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlLAorLSAgZHdhcmZf ZXhwcl9nZXRfYWRkcl9pbmRleAorKyAgZHdhcmZfZXhwcl9nZXRfYWRkcl9pbmRleCwKKysgIGR3 YXJmX2V4cHJfZ2V0X29ial9hZGRyCisgfTsKKyAKKyAvKiBFdmFsdWF0ZSBhIGxvY2F0aW9uIGRl c2NyaXB0aW9uLCBzdGFydGluZyBhdCBEQVRBIGFuZCB3aXRoIGxlbmd0aAorQEAgLTIyMzEsNiAr MjI1MCw3IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAorIAorICAgYmF0b24uZnJhbWUgPSBmcmFtZTsK KyAgIGJhdG9uLnBlcl9jdSA9IHBlcl9jdTsKKysgIGJhdG9uLm9ial9hZGRyZXNzID0gMDsKKyAK KyAgIGN0eCA9IG5ld19kd2FyZl9leHByX2NvbnRleHQgKCk7CisgICBvbGRfY2hhaW4gPSBtYWtl X2NsZWFudXBfZnJlZV9kd2FyZl9leHByX2NvbnRleHQgKGN0eCk7CitAQCAtMjQzNiw2ICsyNDU2 LDcgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lLAorIAorIHN0YXRpYyBpbnQKKyBkd2FyZjJfbG9jZXhwcl9iYXRv bl9ldmFsIChjb25zdCBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmRsYmF0b24sCisrICAg ICAgICAgQ09SRV9BRERSIGFkZHIsCisgCQkJICAgQ09SRV9BRERSICp2YWxwKQorIHsKKyAgIHN0 cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eDsKK0BAIC0yNDUxLDYgKzI0NzIsNyBAQCBkd2Fy ZjJfbG9jZXhwcl9iYXRvbl9ldmFsIChjb25zdCBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24g KmRsYmF0b24sCisgCisgICBiYXRvbi5mcmFtZSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoTlVMTCk7 CisgICBiYXRvbi5wZXJfY3UgPSBkbGJhdG9uLT5wZXJfY3U7CisrICBiYXRvbi5vYmpfYWRkcmVz cyA9IGFkZHI7CisgCisgICBvYmpmaWxlID0gZHdhcmYyX3Blcl9jdV9vYmpmaWxlIChkbGJhdG9u LT5wZXJfY3UpOworIAorQEAgLTI0OTEsNyArMjUxMyw4IEBAIGR3YXJmMl9sb2NleHByX2JhdG9u X2V2YWwgKGNvbnN0IHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZGxiYXRvbiwKKyAvKiBT ZWUgZHdhcmYybG9jLmguICAqLworIAorIGludAorLWR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAo Y29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwgQ09SRV9BRERSICp2YWx1ZSkKKytkd2Fy ZjJfZXZhbHVhdGVfcHJvcGVydHkgKGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3AsIENP UkVfQUREUiBhZGRyZXNzLAorKyAgICAgICAgQ09SRV9BRERSICp2YWx1ZSkKKyB7CisgICBpZiAo cHJvcCA9PSBOVUxMKQorICAgICByZXR1cm4gMDsKK0BAIC0yNTAyLDcgKzI1MjUsNyBAQCBkd2Fy ZjJfZXZhbHVhdGVfcHJvcGVydHkgKGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3AsIENP UkVfQUREUiAqdmFsdWUpCisgICAgICAgeworIAljb25zdCBzdHJ1Y3QgZHdhcmYyX3Byb3BlcnR5 X2JhdG9uICpiYXRvbiA9IHByb3AtPmRhdGEuYmF0b247CisgCistCWlmIChkd2FyZjJfbG9jZXhw cl9iYXRvbl9ldmFsICgmYmF0b24tPmxvY2V4cHIsIHZhbHVlKSkKKysJaWYgKGR3YXJmMl9sb2Nl eHByX2JhdG9uX2V2YWwgKCZiYXRvbi0+bG9jZXhwciwgYWRkcmVzcywgdmFsdWUpKQorIAkgIHsK KyAJICAgIGlmIChiYXRvbi0+cmVmZXJlbmNlZF90eXBlKQorIAkgICAgICB7CitAQCAtMjUxMCw2 ICsyNTMzLDExIEBAIGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAoY29uc3Qgc3RydWN0IGR5bmFt aWNfcHJvcCAqcHJvcCwgQ09SRV9BRERSICp2YWx1ZSkKKyAKKyAJCSp2YWx1ZSA9IHZhbHVlX2Fz X2FkZHJlc3MgKHZhbCk7CisgCSAgICAgIH0KKysJICAgIGlmIChiYXRvbi0+cG9zdF92YWx1ZXMu ZGF0YSAmJiBiYXRvbi0+cG9zdF92YWx1ZXMuc2l6ZSA+IDApCisrCSAgICAgIHsKKysJICAgICAg ICBDT1JFX0FERFIgbmV3X2FkZHIgPSAqdmFsdWU7CisrCSAgICAgICAgZHdhcmYyX2xvY2V4cHJf YmF0b25fZXZhbCAoJmJhdG9uLT5wb3N0X3ZhbHVlcywgbmV3X2FkZHIsIHZhbHVlKTsKKysJICAg ICAgfQorIAkgICAgcmV0dXJuIDE7CisgCSAgfQorICAgICAgIH0KK0BAIC0yNTMyLDYgKzI1NjAs MTEgQEAgZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9w ICpwcm9wLCBDT1JFX0FERFIgKnZhbHVlKQorIAkgICAgaWYgKCF2YWx1ZV9vcHRpbWl6ZWRfb3V0 ICh2YWwpKQorIAkgICAgICB7CisgCQkqdmFsdWUgPSB2YWx1ZV9hc19hZGRyZXNzICh2YWwpOwor KwkJaWYgKGJhdG9uLT5wb3N0X3ZhbHVlcy5kYXRhICYmIGJhdG9uLT5wb3N0X3ZhbHVlcy5zaXpl ID4gMCkKKysJCSAgeworKwkJICAgIENPUkVfQUREUiBuZXdfYWRkciA9ICp2YWx1ZTsKKysJCSAg ICBkd2FyZjJfbG9jZXhwcl9iYXRvbl9ldmFsICgmYmF0b24tPnBvc3RfdmFsdWVzLCBuZXdfYWRk ciwgdmFsdWUpOworKwkJICB9CisgCQlyZXR1cm4gMTsKKyAJICAgICAgfQorIAkgIH0KK0BAIC0y NTQ2LDYgKzI1NzksMjAgQEAgZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3Qg ZHluYW1pY19wcm9wICpwcm9wLCBDT1JFX0FERFIgKnZhbHVlKQorICAgcmV0dXJuIDA7CisgfQor IAorKy8qIFNlZSBkd2FyZjJsb2MuaC4gICovCisrCisraW50CisrZHdhcmYyX2FkZHJlc3NfZGF0 YV92YWxpZCAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpCisreworKyAgaWYgKFRZUEVfTk9UX0FT U09DSUFURUQgKHR5cGUpKQorKyAgICByZXR1cm4gMDsKKysKKysgIGlmIChUWVBFX05PVF9BTExP Q0FURUQgKHR5cGUpKQorKyAgICByZXR1cm4gMDsKKysKKysgIHJldHVybiAxOworK30KKysKKyAM CisgLyogSGVscGVyIGZ1bmN0aW9ucyBhbmQgYmF0b24gZm9yIGR3YXJmMl9sb2NfZGVzY19uZWVk c19mcmFtZS4gICovCisgCitAQCAtMjY1Myw2ICsyNzAwLDE1IEBAIG5lZWRzX2dldF9hZGRyX2lu ZGV4ICh2b2lkICpiYXRvbiwgdW5zaWduZWQgaW50IGluZGV4KQorICAgcmV0dXJuIDE7CisgfQor IAorKy8qIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MgaGFzIGEgZnJhbWUgYWxyZWFkeSBwYXNz ZWQgdGhyb3VnaC4gICovCisrCisrc3RhdGljIENPUkVfQUREUgorK25lZWRzX2dldF9vYmpfYWRk ciAodm9pZCAqYmF0b24pCisreworKyAgLyogTm90aGluZyB0byBkby4gICovCisrICByZXR1cm4g MTsKKyt9CisrCisgLyogVmlydHVhbCBtZXRob2QgdGFibGUgZm9yIGR3YXJmMl9sb2NfZGVzY19u ZWVkc19mcmFtZSBiZWxvdy4gICovCisgCisgc3RhdGljIGNvbnN0IHN0cnVjdCBkd2FyZl9leHBy X2NvbnRleHRfZnVuY3MgbmVlZHNfZnJhbWVfY3R4X2Z1bmNzID0KK0BAIC0yNjY3LDcgKzI3MjMs OCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dF9mdW5jcyBuZWVkc19m cmFtZV9jdHhfZnVuY3MgPQorICAgbmVlZHNfZnJhbWVfZHdhcmZfY2FsbCwKKyAgIE5VTEwsCQkJ CS8qIGdldF9iYXNlX3R5cGUgKi8KKyAgIG5lZWRzX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSwKKy0g IG5lZWRzX2dldF9hZGRyX2luZGV4CisrICBuZWVkc19nZXRfYWRkcl9pbmRleCwKKysgIG5lZWRz X2dldF9vYmpfYWRkcgorIH07CisgCisgLyogUmV0dXJuIG5vbi16ZXJvIGlmZiB0aGUgbG9jYXRp b24gZXhwcmVzc2lvbiBhdCBEQVRBIChsZW5ndGggU0laRSkKK0BAIC0zMzE2LDYgKzMzNzMsMTAg QEAgZHdhcmYyX2NvbXBpbGVfZXhwcl90b19heCAoc3RydWN0IGFnZW50X2V4cHIgKmV4cHIsIHN0 cnVjdCBheHNfdmFsdWUgKmxvYywKKyAJICB1bmltcGxlbWVudGVkIChvcCk7CisgCSAgYnJlYWs7 CisgCisrICBjYXNlIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3M6CisrICAgIHVuaW1wbGVtZW50 ZWQgKG9wKTsKKysgICAgYnJlYWs7CisrCisgCWNhc2UgRFdfT1Bfc2tpcDoKKyAJICBvZmZzZXQg PSBleHRyYWN0X3NpZ25lZF9pbnRlZ2VyIChvcF9wdHIsIDIsIGJ5dGVfb3JkZXIpOworIAkgIG9w X3B0ciArPSAyOworZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuaCBiL2dkYi9kd2FyZjJsb2Mu aAoraW5kZXggOGFkNWZhOS4uY2Y2NDhlYiAxMDA2NDQKKy0tLSBhL2dkYi9kd2FyZjJsb2MuaAor KysrIGIvZ2RiL2R3YXJmMmxvYy5oCitAQCAtOTYsMTEgKzk2LDE4IEBAIHN0cnVjdCB2YWx1ZSAq ZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAgICBpbnRvIFZB TFVFLCBvdGhlcndpc2UgcmV0dXJucyAwLiAgKi8KKyAKKyBpbnQgZHdhcmYyX2V2YWx1YXRlX3By b3BlcnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLAorKwkJCSAgICAgIENPUkVf QUREUiBhZGRyZXNzLAorIAkJCSAgICAgIENPUkVfQUREUiAqdmFsdWUpOworIAorIENPUkVfQURE UiBkd2FyZjJfcmVhZF9hZGRyX2luZGV4IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJf Y3UsCisgCQkJCSAgdW5zaWduZWQgaW50IGFkZHJfaW5kZXgpOworIAorKy8qIENoZWNrcyBpZiBh IGR3YXJmIGxvY2F0aW9uIGRlZmluaXRpb24gaXMgdmFsaWQuCisrICAgUmV0dXJucyAxIGlmIHZh bGlkOyAwIG90aGVyd2lzZS4gICovCisrCisrZXh0ZXJuIGludCBkd2FyZjJfYWRkcmVzc19kYXRh X3ZhbGlkIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSk7CisrCisrCisgLyogVGhlIHN5bWJvbCBs b2NhdGlvbiBiYXRvbiB0eXBlcyB1c2VkIGJ5IHRoZSBEV0FSRi0yIHJlYWRlciAoaS5lLgorICAg IFNZTUJPTF9MT0NBVElPTl9CQVRPTiBmb3IgYSBMT0NfQ09NUFVURUQgc3ltYm9sKS4gICJzdHJ1 Y3QKKyAgICBkd2FyZjJfbG9jZXhwcl9iYXRvbiIgaXMgZm9yIGEgc3ltYm9sIHdpdGggYSBzaW5n bGUgbG9jYXRpb24KK0BAIC0xNjEsNiArMTY4LDkgQEAgc3RydWN0IGR3YXJmMl9wcm9wZXJ0eV9i YXRvbgorICAgICAvKiBMb2NhdGlvbiBsaXN0IHRvIGJlIGV2YWx1YXRlZCBpbiB0aGUgY29udGV4 dCBvZiBSRUZFUkVOQ0VEX1RZUEUuICAqLworICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0 b24gbG9jbGlzdDsKKyAgIH07CisrCisrICAvKiBBdHRyaWJ1dGVzLCB3aGljaCB3aWxsIGJlIHB1 c2hlZCBhZnRlciBldmFsdWF0aW5nIGxvY2V4cHIgb3IgbG9jbGlzdC4gICovCisrICBzdHJ1Y3Qg ZHdhcmYyX2xvY2V4cHJfYmF0b24gcG9zdF92YWx1ZXM7CisgfTsKKyAKKyBleHRlcm4gY29uc3Qg c3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYyX2xvY2V4cHJfZnVuY3M7CitkaWZmIC0t Z2l0IGEvZ2RiL2R3YXJmMnJlYWQuYyBiL2dkYi9kd2FyZjJyZWFkLmMKK2luZGV4IDI3NmQyZjEu LmY1YjM1ZDcgMTAwNjQ0CistLS0gYS9nZGIvZHdhcmYycmVhZC5jCisrKysgYi9nZGIvZHdhcmYy cmVhZC5jCitAQCAtMTg0Nyw2ICsxODQ3LDE1IEBAIHN0YXRpYyB2b2lkIGZyZWVfZHdvX2ZpbGVf Y2xlYW51cCAodm9pZCAqKTsKKyBzdGF0aWMgdm9pZCBwcm9jZXNzX2N1X2luY2x1ZGVzICh2b2lk KTsKKyAKKyBzdGF0aWMgdm9pZCBjaGVja19wcm9kdWNlciAoc3RydWN0IGR3YXJmMl9jdSAqY3Up OworKworK3N0YXRpYyBpbnQKKythdHRyX3RvX2R5bmFtaWNfcHJvcCAoY29uc3Qgc3RydWN0IGF0 dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGRpZV9pbmZvICpkaWUsCisrCQkgICAgICBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSwgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwKKysJCSAgICAgIGNvbnN0IGdk Yl9ieXRlICphZGRpdGlvbmFsX2RhdGEsIGludCBhZGRpdGlvbmFsX2RhdGFfc2l6ZSk7CisrCisr c3RhdGljIHZvaWQgYWRkX3Bvc3RfdmFsdWVzX3RvX2JhdG9uIChzdHJ1Y3QgZHdhcmYyX3Byb3Bl cnR5X2JhdG9uICpiYXRvbiwKKysgICAgICAgIGNvbnN0IGdkYl9ieXRlICpkYXRhLCBpbnQgc2l6 ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOworKworIAwKKyAvKiBWYXJpb3VzIGNvbXBsYWludHMg YWJvdXQgc3ltYm9sIHJlYWRpbmcgdGhhdCBkb24ndCBhYm9ydCB0aGUgcHJvY2Vzcy4gICovCisg CitAQCAtMTQyMDEsMjkgKzE0MjEwLDkwIEBAIHJlYWRfdGFnX3N0cmluZ190eXBlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworICAgc3RydWN0IHR5cGUgKnR5 cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZSwgKmNoYXJfdHlwZTsKKyAgIHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHI7CistICB1bnNpZ25lZCBpbnQgbGVuZ3RoOworKyAgdW5zaWduZWQgaW50IGxl bmd0aCA9IFVJTlRfTUFYOworKworKyAgaW5kZXhfdHlwZSA9IG9iamZpbGVfdHlwZSAob2JqZmls ZSktPmJ1aWx0aW5faW50OworKyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlw ZSAoTlVMTCwgaW5kZXhfdHlwZSwgMSwgbGVuZ3RoKTsKKyAKKysgIC8qIElmIERXX0FUX3N0cmlu Z19sZW5ndGggaXMgZGVmaW5lZCwgdGhlIGxlbmd0aCBpcyBzdG9yZWQgYXQgc29tZSBsb2NhdGlv bgorKyAgICogaW4gbWVtb3J5LiAqLworICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FU X3N0cmluZ19sZW5ndGgsIGN1KTsKKyAgIGlmIChhdHRyKQorICAgICB7CistICAgICAgbGVuZ3Ro ID0gRFdfVU5TTkQgKGF0dHIpOworKyAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIp KQorKyAgICAgICAgeworKyAgICAgICAgICBzdHJ1Y3QgYXR0cmlidXRlICpieXRlX3NpemUsICpi aXRfc2l6ZTsKKysgICAgICAgICAgc3RydWN0IGR5bmFtaWNfcHJvcCBoaWdoOworKworKyAgICAg ICAgICBieXRlX3NpemUgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3NpemUsIGN1KTsK KysgICAgICAgICAgYml0X3NpemUgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9iaXRfc2l6ZSwg Y3UpOworKworKyAgICAgICAgICAvKiBEV19BVF9ieXRlX3NpemUgc2hvdWxkIG5ldmVyIG9jY3Vy IHRvZ2V0aGVyIGluIGNvbWJpbmF0aW9uIHdpdGgKKysgICAgICAgICAgICAgRFdfQVRfc3RyaW5n X2xlbmd0aC4gICovCisrICAgICAgICAgIGlmICgoYnl0ZV9zaXplID09IE5VTEwgJiYgYml0X3Np emUgIT0gTlVMTCkgfHwKKysgICAgICAgICAgICAgICAgICAoYnl0ZV9zaXplICE9IE5VTEwgJiYg Yml0X3NpemUgPT0gTlVMTCkpCisrICAgICAgICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21w bGFpbnRzLCBfKCJEV19BVF9ieXRlX3NpemUgQU5EICIKKysgICAgICAgICAgICAgICAgICAgICAg IkRXX0FUX2JpdF9zaXplIGZvdW5kIHRvZ2V0aGVyIGF0IHRoZSBzYW1lIHRpbWUuIikpOworKwor KyAgICAgICAgICAvKiBJZiBEV19BVF9zdHJpbmdfbGVuZ3RoIEFORCBEV19BVF9ieXRlX3NpemUg ZXhpc3QgdG9nZXRoZXIsIGl0CisrICAgICAgICAgICAgIGRlc2NyaWJlcyB0aGUgbnVtYmVyIG9m IGJ5dGVzIHRoYXQgc2hvdWxkIGJlIHJlYWQgZnJvbSB0aGUgbGVuZ3RoCisrICAgICAgICAgICAg IG1lbW9yeSBsb2NhdGlvbi4gICovCisrICAgICAgICAgIGlmIChieXRlX3NpemUgIT0gTlVMTCAm JiBiaXRfc2l6ZSA9PSBOVUxMKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgIC8qIEJ1 aWxkIG5ldyBkd2FyZjJfbG9jZXhwcl9iYXRvbiBzdHJ1Y3R1cmUgd2l0aCBhZGRpdGlvbnMgdG8g dGhlCisrICAgICAgICAgICAgICAgICBkYXRhIGF0dHJpYnV0ZSwgdG8gcmVmbGVjdCBEV0FSRiBz cGVjaWFsaXRpZXMgdG8gZ2V0IGFkZHJlc3MKKysgICAgICAgICAgICAgICAgIHNpemVzLiAgKi8K KysgICAgICAgICAgICAgIGNvbnN0IGdkYl9ieXRlIGFwcGVuZF9vcHNbXSA9IHsKKysgICAgICAg ICAgICAgICAgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcywKKysgICAgICAgICAgICAgICAgLyog RFdfT1BfZGVyZWZfc2l6ZTogc2l6ZSBvZiBhbiBhZGRyZXNzIG9uIHRoZSB0YXJnZXQgbWFjaGlu ZQorKyAgICAgICAgICAgICAgICAgICAoYnl0ZXMpLCB3aGVyZSB0aGUgc2l6ZSB3aWxsIGJlIHNw ZWNpZmllZCBieSB0aGUgbmV4dAorKyAgICAgICAgICAgICAgICAgICBvcGVyYW5kLiAgKi8KKysg ICAgICAgICAgICAgICAgRFdfT1BfZGVyZWZfc2l6ZSwKKysgICAgICAgICAgICAgICAgLyogT3Bl cmFuZCBmb3IgRFdfT1BfZGVyZWZfc2l6ZS4gICovCisrICAgICAgICAgICAgICAgIERXX1VOU05E IChieXRlX3NpemUpIH07CisrCisrICAgICAgICAgICAgICBpZiAoIWF0dHJfdG9fZHluYW1pY19w cm9wIChhdHRyLCBkaWUsIGN1LCAmaGlnaCwKKysgICAgICAgICAgICAgICAgICAgICAgYXBwZW5k X29wcywgQVJSQVlfU0laRSAoYXBwZW5kX29wcykpKQorKyAgICAgICAgICAgICAgICBjb21wbGFp bnQgKCZzeW1maWxlX2NvbXBsYWludHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgXygiQ291 bGQgbm90IHBhcnNlIERXX0FUX2J5dGVfc2l6ZSIpKTsKKysgICAgICAgICAgICB9CisrICAgICAg ICAgIGVsc2UgaWYgKGJpdF9zaXplICE9IE5VTEwgJiYgYnl0ZV9zaXplID09IE5VTEwpCisrICAg ICAgICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJEV19BVF9zdHJpbmdf bGVuZ3RoIEFORCAiCisrICAgICAgICAgICAgICAgICAgICAgICJEV19BVF9iaXRfc2l6ZSBmb3Vu ZCBidXQgbm90IHN1cHBvcnRlZCB5ZXQuIikpOworKyAgICAgICAgICAvKiBJZiBEV19BVF9zdHJp bmdfbGVuZ3RoIFdJVEhPVVQgRFdfQVRfYnl0ZV9zaXplIGV4aXN0LCB0aGUgZGVmYXVsdAorKyAg ICAgICAgICAgICBpcyB0aGUgYWRkcmVzcyBzaXplIG9mIHRoZSB0YXJnZXQgbWFjaGluZS4gICov CisrICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBpZiAoIWF0 dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmaGlnaCwgTlVMTCwgMCkpCisrICAg ICAgICAgICAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKysgICAgICAgICAg ICAgICAgICAgICAgICBfKCJDb3VsZCBub3QgcGFyc2UgRFdfQVRfc3RyaW5nX2xlbmd0aCIpKTsK KysgICAgICAgICAgICB9CisrCisrICAgICAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlw ZSktPmhpZ2ggPSBoaWdoOworKyAgICAgICAgfQorKyAgICAgIGVsc2UKKysgICAgICAgIHsKKysg ICAgICAgICAgVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IERXX1VOU05EIChhdHRyKTsK KysgICAgICAgICAgVFlQRV9ISUdIX0JPVU5EX0tJTkQgKHJhbmdlX3R5cGUpID0gUFJPUF9DT05T VDsKKysgICAgICAgIH0KKyAgICAgfQorICAgZWxzZQorICAgICB7CistICAgICAgLyogQ2hlY2sg Zm9yIHRoZSBEV19BVF9ieXRlX3NpemUgYXR0cmlidXRlLiAgKi8KKysgICAgICAvKiBDaGVjayBm b3IgdGhlIERXX0FUX2J5dGVfc2l6ZSBhdHRyaWJ1dGUsIHdoaWNoIHJlcHJlc2VudHMgdGhlIGxl bmd0aAorKyAgICAgICAgIGluIHRoaXMgY2FzZS4gICovCisgICAgICAgYXR0ciA9IGR3YXJmMl9h dHRyIChkaWUsIERXX0FUX2J5dGVfc2l6ZSwgY3UpOworICAgICAgIGlmIChhdHRyKQorICAgICAg ICAgeworLSAgICAgICAgICBsZW5ndGggPSBEV19VTlNORCAoYXR0cik7CisrICAgICAgICAgIFRZ UEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSBEV19VTlNORCAoYXR0cik7CisrICAgICAgICAg IFRZUEVfSElHSF9CT1VORF9LSU5EIChyYW5nZV90eXBlKSA9IFBST1BfQ09OU1Q7CisgICAgICAg ICB9CisgICAgICAgZWxzZQorICAgICAgICAgeworLSAgICAgICAgICBsZW5ndGggPSAxOworKyAg ICAgICAgICBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gMTsKKysgICAgICAgICAgVFlQ RV9ISUdIX0JPVU5EX0tJTkQgKHJhbmdlX3R5cGUpID0gUFJPUF9DT05TVDsKKyAgICAgICAgIH0K KyAgICAgfQorIAorLSAgaW5kZXhfdHlwZSA9IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0 aW5faW50OworLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwg aW5kZXhfdHlwZSwgMSwgbGVuZ3RoKTsKKyAgIGNoYXJfdHlwZSA9IGxhbmd1YWdlX3N0cmluZ19j aGFyX3R5cGUgKGN1LT5sYW5ndWFnZV9kZWZuLCBnZGJhcmNoKTsKKyAgIHR5cGUgPSBjcmVhdGVf c3RyaW5nX3R5cGUgKE5VTEwsIGNoYXJfdHlwZSwgcmFuZ2VfdHlwZSk7CisgCitAQCAtMTQ1NDAs MTMgKzE0NjEwLDM2IEBAIHJlYWRfYmFzZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCisgICByZXR1cm4gc2V0X2RpZV90eXBlIChkaWUsIHR5cGUsIGN1 KTsKKyB9CisgCisrLyogQWRkIHBvc3QgcHJvY2Vzc2luZyBvcC1jb2RlcyB0byBhIGR3YXJmMl9w cm9wZXJ0eV9iYXRvbi4gICovCisrCisrc3RhdGljIHZvaWQgYWRkX3Bvc3RfdmFsdWVzX3RvX2Jh dG9uIChzdHJ1Y3QgZHdhcmYyX3Byb3BlcnR5X2JhdG9uICpiYXRvbiwKKysgICAgICAgIGNvbnN0 IGdkYl9ieXRlICpkYXRhLCBpbnQgc2l6ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisreworKyAg aWYgKGRhdGEgIT0gTlVMTCAmJiBzaXplID4gMCkKKysgICAgeworKyAgICAgIHN0cnVjdCBvYnN0 YWNrICpvYnN0YWNrID0gJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2s7CisrICAgICAgZ2Ri X2J5dGUgKnBvc3RfZGF0YTsKKysKKysgICAgICBwb3N0X2RhdGEgPSBvYnN0YWNrX2FsbG9jIChv YnN0YWNrLCBzaXplKTsKKysgICAgICBtZW1jcHkocG9zdF9kYXRhLCBkYXRhLCBzaXplKTsKKysg ICAgICBiYXRvbi0+cG9zdF92YWx1ZXMuZGF0YSA9IHBvc3RfZGF0YTsKKysgICAgICBiYXRvbi0+ cG9zdF92YWx1ZXMuc2l6ZSA9IHNpemU7CisrICAgICAgYmF0b24tPnBvc3RfdmFsdWVzLnBlcl9j dSA9IGN1LT5wZXJfY3U7CisrICAgIH0gZWxzZSB7CisrICAgICAgYmF0b24tPnBvc3RfdmFsdWVz LmRhdGEgPSBOVUxMOworKyAgICAgIGJhdG9uLT5wb3N0X3ZhbHVlcy5zaXplID0gMDsKKysgICAg ICBiYXRvbi0+cG9zdF92YWx1ZXMucGVyX2N1ID0gTlVMTDsKKysgICAgfQorK30KKysKKyAvKiBQ YXJzZSBkd2FyZiBhdHRyaWJ1dGUgaWYgaXQncyBhIGJsb2NrLCByZWZlcmVuY2Ugb3IgY29uc3Rh bnQgYW5kIHB1dCB0aGUKKyAgICByZXN1bHRpbmcgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBpbnRv IHN0cnVjdCBib3VuZF9wcm9wLgorICAgIFJldHVybnMgMSBpZiBBVFRSIGNvdWxkIGJlIHJlc29s dmVkIGludG8gUFJPUCwgMCBvdGhlcndpc2UuICAqLworIAorIHN0YXRpYyBpbnQKKyBhdHRyX3Rv X2R5bmFtaWNfcHJvcCAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGRpZV9p bmZvICpkaWUsCistCQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgc3RydWN0IGR5bmFtaWNf cHJvcCAqcHJvcCkKKysJCSAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1LCBzdHJ1Y3QgZHluYW1p Y19wcm9wICpwcm9wLAorKwkJICAgICAgY29uc3QgZ2RiX2J5dGUgKmFkZGl0aW9uYWxfZGF0YSwg aW50IGFkZGl0aW9uYWxfZGF0YV9zaXplKQorIHsKKyAgIHN0cnVjdCBkd2FyZjJfcHJvcGVydHlf YmF0b24gKmJhdG9uOworICAgc3RydWN0IG9ic3RhY2sgKm9ic3RhY2sgPSAmY3UtPm9iamZpbGUt Pm9iamZpbGVfb2JzdGFjazsKK0BAIC0xNDU1OSw4ICsxNDY1MiwxMCBAQCBhdHRyX3RvX2R5bmFt aWNfcHJvcCAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGRpZV9pbmZvICpk aWUsCisgICAgICAgYmF0b24gPSBvYnN0YWNrX2FsbG9jIChvYnN0YWNrLCBzaXplb2YgKCpiYXRv bikpOworICAgICAgIGJhdG9uLT5yZWZlcmVuY2VkX3R5cGUgPSBOVUxMOworICAgICAgIGJhdG9u LT5sb2NleHByLnBlcl9jdSA9IGN1LT5wZXJfY3U7CistICAgICAgYmF0b24tPmxvY2V4cHIuc2l6 ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6ZTsKKyAgICAgICBiYXRvbi0+bG9jZXhwci5kYXRhID0g RFdfQkxPQ0sgKGF0dHIpLT5kYXRhOworKyAgICAgIGJhdG9uLT5sb2NleHByLnNpemUgPSBEV19C TE9DSyAoYXR0ciktPnNpemU7CisrICAgICAgYWRkX3Bvc3RfdmFsdWVzX3RvX2JhdG9uIChiYXRv biwgYWRkaXRpb25hbF9kYXRhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRk aXRpb25hbF9kYXRhX3NpemUsIGN1KTsKKyAgICAgICBwcm9wLT5kYXRhLmJhdG9uID0gYmF0b247 CisgICAgICAgcHJvcC0+a2luZCA9IFBST1BfTE9DRVhQUjsKKyAgICAgICBnZGJfYXNzZXJ0IChw cm9wLT5kYXRhLmJhdG9uICE9IE5VTEwpOworQEAgLTE0NTgxLDYgKzE0Njc2LDggQEAgYXR0cl90 b19keW5hbWljX3Byb3AgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkaWVf aW5mbyAqZGllLAorIAkgIGJhdG9uID0gb2JzdGFja19hbGxvYyAob2JzdGFjaywgc2l6ZW9mICgq YmF0b24pKTsKKyAJICBiYXRvbi0+cmVmZXJlbmNlZF90eXBlID0gZGllX3R5cGUgKHRhcmdldF9k aWUsIHRhcmdldF9jdSk7CisgCSAgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChjdSwgJmJhdG9uLT5s b2NsaXN0LCB0YXJnZXRfYXR0cik7CisrCSAgYWRkX3Bvc3RfdmFsdWVzX3RvX2JhdG9uIChiYXRv biwgYWRkaXRpb25hbF9kYXRhLAorKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRp b25hbF9kYXRhX3NpemUsIGN1KTsKKyAJICBwcm9wLT5kYXRhLmJhdG9uID0gYmF0b247CisgCSAg cHJvcC0+a2luZCA9IFBST1BfTE9DTElTVDsKKyAJICBnZGJfYXNzZXJ0IChwcm9wLT5kYXRhLmJh dG9uICE9IE5VTEwpOworQEAgLTE0NTkyLDYgKzE0Njg5LDggQEAgYXR0cl90b19keW5hbWljX3By b3AgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAor IAkgIGJhdG9uLT5sb2NleHByLnBlcl9jdSA9IGN1LT5wZXJfY3U7CisgCSAgYmF0b24tPmxvY2V4 cHIuc2l6ZSA9IERXX0JMT0NLICh0YXJnZXRfYXR0ciktPnNpemU7CisgCSAgYmF0b24tPmxvY2V4 cHIuZGF0YSA9IERXX0JMT0NLICh0YXJnZXRfYXR0ciktPmRhdGE7CisrCSAgYWRkX3Bvc3RfdmFs dWVzX3RvX2JhdG9uIChiYXRvbiwgYWRkaXRpb25hbF9kYXRhLAorKwkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWRkaXRpb25hbF9kYXRhX3NpemUsIGN1KTsKKyAJICBwcm9wLT5kYXRhLmJh dG9uID0gYmF0b247CisgCSAgcHJvcC0+a2luZCA9IFBST1BfTE9DRVhQUjsKKyAJICBnZGJfYXNz ZXJ0IChwcm9wLT5kYXRhLmJhdG9uICE9IE5VTEwpOworQEAgLTE0NjI2LDcgKzE0NzI1LDcgQEAg cmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCisgICBzdHJ1Y3QgdHlwZSAqYmFzZV90eXBlLCAqb3JpZ19iYXNlX3R5cGU7CisgICBz dHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKKyAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CistICBz dHJ1Y3QgZHluYW1pY19wcm9wIGxvdywgaGlnaDsKKysgIHN0cnVjdCBkeW5hbWljX3Byb3AgbG93 LCBoaWdoLCBzdHJpZGU7CisgICBpbnQgbG93X2RlZmF1bHRfaXNfdmFsaWQ7CisgICBpbnQgaGln aF9ib3VuZF9pc19jb3VudCA9IDA7CisgICBjb25zdCBjaGFyICpuYW1lOworQEAgLTE0NjQ2LDcg KzE0NzQ1LDkgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCisgCisgICBsb3cua2luZCA9IFBST1BfQ09OU1Q7CisgICBoaWdo LmtpbmQgPSBQUk9QX0NPTlNUOworKyAgc3RyaWRlLmtpbmQgPSBQUk9QX0NPTlNUOworICAgaGln aC5kYXRhLmNvbnN0X3ZhbCA9IDA7CisrICBzdHJpZGUuZGF0YS5jb25zdF92YWwgPSAwOworIAor ICAgLyogU2V0IExPV19ERUZBVUxUX0lTX1ZBTElEIGlmIGN1cnJlbnQgbGFuZ3VhZ2UgYW5kIERX QVJGIHZlcnNpb24gYWxsb3cKKyAgICAgIG9taXR0aW5nIERXX0FUX2xvd2VyX2JvdW5kLiAgKi8K K0BAIC0xNDY3OSwxOSArMTQ3ODAsMjYgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAgICAgYnJlYWs7CisgICAgIH0K KyAKKysgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3N0cmlkZSwgY3UpOwor KyAgaWYgKGF0dHIpCisrICAgIGlmICghYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwg Y3UsICZzdHJpZGUsIE5VTEwsIDApKQorKyAgICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21w bGFpbnRzLCBfKCJNaXNzaW5nIERXX0FUX2J5dGVfc3RyaWRlICIKKysgICAgICAgICAgICAgICAg ICAiLSBESUUgYXQgMHgleCBbaW4gbW9kdWxlICVzXSIpLAorKyAgICAgICAgICAgICBkaWUtPm9m ZnNldC5zZWN0X29mZiwgb2JqZmlsZV9uYW1lIChjdS0+b2JqZmlsZSkpOworKworICAgYXR0ciA9 IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2xvd2VyX2JvdW5kLCBjdSk7CisgICBpZiAoYXR0cikK Ky0gICAgYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZsb3cpOworKyAgICBh dHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmxvdywgTlVMTCwgMCk7CisgICBl bHNlIGlmICghbG93X2RlZmF1bHRfaXNfdmFsaWQpCisgICAgIGNvbXBsYWludCAoJnN5bWZpbGVf Y29tcGxhaW50cywgXygiTWlzc2luZyBEV19BVF9sb3dlcl9ib3VuZCAiCisgCQkJCSAgICAgICIt IERJRSBhdCAweCV4IFtpbiBtb2R1bGUgJXNdIiksCisgCSAgICAgICBkaWUtPm9mZnNldC5zZWN0 X29mZiwgb2JqZmlsZV9uYW1lIChjdS0+b2JqZmlsZSkpOworIAorICAgYXR0ciA9IGR3YXJmMl9h dHRyIChkaWUsIERXX0FUX3VwcGVyX2JvdW5kLCBjdSk7CistICBpZiAoIWF0dHJfdG9fZHluYW1p Y19wcm9wIChhdHRyLCBkaWUsIGN1LCAmaGlnaCkpCisrICBpZiAoIWF0dHJfdG9fZHluYW1pY19w cm9wIChhdHRyLCBkaWUsIGN1LCAmaGlnaCwgTlVMTCwgMCkpCisgICAgIHsKKyAgICAgICBhdHRy ID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfY291bnQsIGN1KTsKKy0gICAgICBpZiAoYXR0cl90 b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZoaWdoKSkKKysgICAgICBpZiAoYXR0cl90 b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZoaWdoLCBOVUxMLCAwKSkKKyAJeworIAkg IC8qIElmIGJvdW5kcyBhcmUgY29uc3RhbnQgZG8gdGhlIGZpbmFsIGNhbGN1bGF0aW9uIGhlcmUu ICAqLworIAkgIGlmIChsb3cua2luZCA9PSBQUk9QX0NPTlNUICYmIGhpZ2gua2luZCA9PSBQUk9Q X0NPTlNUKQorQEAgLTE0NzU1LDcgKzE0ODYzLDcgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAgICAgJiYgIVRZUEVf VU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGhpZ2guZGF0YS5jb25zdF92YWwgJiBuZWdhdGl2ZV9t YXNrKSkKKyAgICAgaGlnaC5kYXRhLmNvbnN0X3ZhbCB8PSBuZWdhdGl2ZV9tYXNrOworIAorLSAg cmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBvcmlnX2Jhc2VfdHlwZSwgJmxv dywgJmhpZ2gpOworKyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBvcmln X2Jhc2VfdHlwZSwgJmxvdywgJmhpZ2gsICZzdHJpZGUpOworIAorICAgaWYgKGhpZ2hfYm91bmRf aXNfY291bnQpCisgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmZsYWdfdXBwZXJf Ym91bmRfaXNfY291bnQgPSAxOworQEAgLTIxNjczLDYgKzIxNzgxLDggQEAgc2V0X2RpZV90eXBl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQorIHsKKyAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X29mZnNldF9hbmRfdHlwZSAqKnNs b3QsIG9mczsKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gY3UtPm9iamZpbGU7CisrICBz dHJ1Y3QgYXR0cmlidXRlICphdHRyOworKyAgc3RydWN0IGR5bmFtaWNfcHJvcCBwcm9wOworIAor ICAgLyogRm9yIEFkYSB0eXBlcywgbWFrZSBzdXJlIHRoYXQgdGhlIGduYXQtc3BlY2lmaWMgZGF0 YSBpcyBhbHdheXMKKyAgICAgIGluaXRpYWxpemVkIChpZiBub3QgYWxyZWFkeSBzZXQpLiAgVGhl cmUgYXJlIGEgZmV3IHR5cGVzIHdoZXJlCitAQCAtMjE2ODcsNiArMjE3OTcsNDMgQEAgc2V0X2Rp ZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQorICAgICAgICYmICFIQVZFX0dOQVRfQVVYX0lORk8gKHR5cGUpKQorICAg ICBJTklUX0dOQVRfU1BFQ0lGSUMgKHR5cGUpOworIAorKyAgLyogUmVhZCBEV19BVF9hbGxvY2F0 ZWQgYW5kIHNldCBpbiB0eXBlLiAgKi8KKysgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19B VF9hbGxvY2F0ZWQsIGN1KTsKKysgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorKyAg ICB7CisrICAgICAgc3RydWN0IGR5bmFtaWNfcHJvcCBwcm9wOworKworKyAgICAgIGlmIChhdHRy X3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJnByb3AsIE5VTEwsIDApKQorKyAgICAg ICAgeworKyAgICAgICAgICBUWVBFX0FMTE9DQVRFRF9QUk9QICh0eXBlKQorKyAgICAgICAgICAg ID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9mIChwcm9w KSk7CisrICAgICAgICAgICpUWVBFX0FMTE9DQVRFRF9QUk9QICh0eXBlKSA9IHByb3A7CisrICAg ICAgICB9CisrICAgIH0KKysKKysgIC8qIFJlYWQgRFdfQVRfYXNzb2NpYXRlZCBhbmQgc2V0IGlu IHR5cGUuICAqLworKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2Fzc29jaWF0ZWQs IGN1KTsKKysgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorKyAgICB7CisrICAgICAg c3RydWN0IGR5bmFtaWNfcHJvcCBwcm9wOworKworKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNf cHJvcCAoYXR0ciwgZGllLCBjdSwgJnByb3AsIE5VTEwsIDApKQorKyAgICAgICAgeworKyAgICAg ICAgICBUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSkKKysgICAgICAgICAgICA9IG9ic3RhY2tf YWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAocHJvcCkpOworKyAgICAg ICAgICAqVFlQRV9BU1NPQ0lBVEVEX1BST1AgKHR5cGUpID0gcHJvcDsKKysgICAgICAgIH0KKysg ICAgfQorKworKyAgLyogUmVhZCBEV19BVF9kYXRhX2xvY2F0aW9uIGFuZCBzZXQgaW4gdHlwZS4g ICovCisrICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfZGF0YV9sb2NhdGlvbiwgY3Up OworKyAgaWYgKGF0dHJfdG9fZHluYW1pY19wcm9wIChhdHRyLCBkaWUsIGN1LCAmcHJvcCwgTlVM TCwgMCkpCisrICAgIHsKKysgICAgICBUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUpCisrICAgICAg ICA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAocHJv cCkpOworKyAgICAgICpUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUpID0gcHJvcDsKKysgICAgfQor KworICAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+ZGllX3R5cGVfaGFzaCA9PSBOVUxMKQorICAg ICB7CisgICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5kaWVfdHlwZV9oYXNoID0KK2RpZmYgLS1n aXQgYS9nZGIvZi10eXBlcHJpbnQuYyBiL2dkYi9mLXR5cGVwcmludC5jCitpbmRleCA4MzU2YWFi Li42OWU2N2Y0IDEwMDY0NAorLS0tIGEvZ2RiL2YtdHlwZXByaW50LmMKKysrKyBiL2dkYi9mLXR5 cGVwcmludC5jCitAQCAtMzAsNiArMzAsNyBAQAorICNpbmNsdWRlICJnZGJjb3JlLmgiCisgI2lu Y2x1ZGUgInRhcmdldC5oIgorICNpbmNsdWRlICJmLWxhbmcuaCIKKysjaW5jbHVkZSAidmFscHJp bnQuaCIKKyAKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CitAQCAt NTYsNiArNTcsMTcgQEAgZl9wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgY2hh ciAqdmFyc3RyaW5nLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAorICAgZW51bSB0eXBlX2NvZGUg Y29kZTsKKyAgIGludCBkZW1hbmdsZWRfYXJnczsKKyAKKysgIGlmIChUWVBFX05PVF9BU1NPQ0lB VEVEICh0eXBlKSkKKysgICAgeworKyAgICAgIHZhbF9wcmludF9ub3RfYXNzb2NpYXRlZCAoc3Ry ZWFtKTsKKysgICAgICByZXR1cm47CisrICAgIH0KKysgIGlmIChUWVBFX05PVF9BTExPQ0FURUQg KHR5cGUpKQorKyAgICB7CisrICAgICAgdmFsX3ByaW50X25vdF9hbGxvY2F0ZWQgKHN0cmVhbSk7 CisrICAgICAgcmV0dXJuOworKyAgICB9CisrCisgICBmX3R5cGVfcHJpbnRfYmFzZSAodHlwZSwg c3RyZWFtLCBzaG93LCBsZXZlbCk7CisgICBjb2RlID0gVFlQRV9DT0RFICh0eXBlKTsKKyAgIGlm ICgodmFyc3RyaW5nICE9IE5VTEwgJiYgKnZhcnN0cmluZyAhPSAnXDAnKQorQEAgLTE3MCwyOCAr MTgyLDM2IEBAIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUs IHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCisgICAgICAgaWYgKGFycmF5cHJpbnRfcmVjdXJzZV9s ZXZlbCA9PSAxKQorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoIik7CisgCistICAgICAg aWYgKFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpID09IFRZUEVfQ09ERV9BUlJB WSkKKy0JZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSwgc3RyZWFtLCAwLCAwLCAwLAorLQkJCQkgICAgIGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCk7 CistCistICAgICAgbG93ZXJfYm91bmQgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHR5cGUpOworLSAg ICAgIGlmIChsb3dlcl9ib3VuZCAhPSAxKQkvKiBOb3QgdGhlIGRlZmF1bHQuICAqLworLQlmcHJp bnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZDoiLCBsb3dlcl9ib3VuZCk7CistCistICAgICAgLyog TWFrZSBzdXJlIHRoYXQsIGlmIHdlIGhhdmUgYW4gYXNzdW1lZCBzaXplIGFycmF5LCB3ZQorLSAg ICAgICAgIHByaW50IG91dCBhIHdhcm5pbmcgYW5kIHByaW50IHRoZSB1cHBlcmJvdW5kIGFzICcq Jy4gICovCistCistICAgICAgaWYgKFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVE ICh0eXBlKSkKKy0JZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKiIpOworKyAgICAgIGlmIChU WVBFX05PVF9BU1NPQ0lBVEVEICh0eXBlKSkKKysgICAgICAgIHZhbF9wcmludF9ub3RfYXNzb2Np YXRlZCAoc3RyZWFtKTsKKysgICAgICBlbHNlIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUp KQorKyAgICAgICAgdmFsX3ByaW50X25vdF9hbGxvY2F0ZWQgKHN0cmVhbSk7CisgICAgICAgZWxz ZQorLQl7CistCSAgdXBwZXJfYm91bmQgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHR5cGUpOworLQkg IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVkIiwgdXBwZXJfYm91bmQpOworLQl9CistCist ICAgICAgaWYgKFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpICE9IFRZUEVfQ09E RV9BUlJBWSkKKy0JZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBF ICh0eXBlKSwgc3RyZWFtLCAwLCAwLCAwLAorLQkJCQkgICAgIGFycmF5cHJpbnRfcmVjdXJzZV9s ZXZlbCk7CisrICAgICAgICB7CisrCisrICAgICAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpKSA9PSBUWVBFX0NPREVfQVJSQVkpCisrICAgICAgICAgICAgZl90eXBl X3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCAw LCAwLCAwLAorKyAgICAgICAgICAgICAgICAgYXJyYXlwcmludF9yZWN1cnNlX2xldmVsKTsKKysK KysgICAgICAgICAgbG93ZXJfYm91bmQgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHR5cGUpOworKyAg ICAgICAgICBpZiAobG93ZXJfYm91bmQgIT0gMSkJLyogTm90IHRoZSBkZWZhdWx0LiAgKi8KKysg ICAgICAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZDoiLCBsb3dlcl9ib3VuZCk7 CisrCisrICAgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0LCBpZiB3ZSBoYXZlIGFuIGFzc3VtZWQg c2l6ZSBhcnJheSwgd2UKKysgICAgICAgICAgICAgcHJpbnQgb3V0IGEgd2FybmluZyBhbmQgcHJp bnQgdGhlIHVwcGVyYm91bmQgYXMgJyonLiAgKi8KKysKKysgICAgICAgICAgaWYgKFRZUEVfQVJS QVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEICh0eXBlKSkKKysgICAgICAgICAgICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICIqIik7CisrICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICB7 CisrICAgICAgICAgICAgICB1cHBlcl9ib3VuZCA9IGY3N19nZXRfdXBwZXJib3VuZCAodHlwZSk7 CisrICAgICAgICAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZCIsIHVwcGVyX2Jv dW5kKTsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVf VEFSR0VUX1RZUEUgKHR5cGUpKSAhPSBUWVBFX0NPREVfQVJSQVkpCisrICAgICAgICAgICAgZl90 eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFt LCAwLCAwLCAwLAorKyAgICAgICAgICAgICAgICAgYXJyYXlwcmludF9yZWN1cnNlX2xldmVsKTsK KysgICAgICB9CisgICAgICAgaWYgKGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCA9PSAxKQorIAlm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7CisgICAgICAgZWxzZQorZGlmZiAtLWdpdCBh L2dkYi9mLXZhbHByaW50LmMgYi9nZGIvZi12YWxwcmludC5jCitpbmRleCA0MDhjOGNjLi4zOGYz MmUwIDEwMDY0NAorLS0tIGEvZ2RiL2YtdmFscHJpbnQuYworKysrIGIvZ2RiL2YtdmFscHJpbnQu YworQEAgLTM5LDggKzM5LDYgQEAKKyAKKyBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9mX3ZhbHBy aW50ICh2b2lkKTsKKyBzdGF0aWMgdm9pZCBpbmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICosIGlu dCk7Cistc3RhdGljIHZvaWQgZjc3X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90YmwgKHN0cnVj dCB0eXBlICosCistCQkJCQkgICAgICBzdHJ1Y3QgdWlfZmlsZSAqKTsKKyBzdGF0aWMgdm9pZCBm NzdfZ2V0X2R5bmFtaWNfbGVuZ3RoX29mX2FnZ3JlZ2F0ZSAoc3RydWN0IHR5cGUgKik7CisgCisg aW50IGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9GT1JUUkFOX0RJTVMgKyAxXVsyXTsKK0BAIC00 OCwxNSArNDYsNiBAQCBpbnQgZjc3X2FycmF5X29mZnNldF90YmxbTUFYX0ZPUlRSQU5fRElNUyAr IDFdWzJdOworIC8qIEFycmF5IHdoaWNoIGhvbGRzIG9mZnNldHMgdG8gYmUgYXBwbGllZCB0byBn ZXQgYSByb3cncyBlbGVtZW50cworICAgIGZvciBhIGdpdmVuIGFycmF5LiAgQXJyYXkgYWxzbyBo b2xkcyB0aGUgc2l6ZSBvZiBlYWNoIHN1YmFycmF5LiAgKi8KKyAKKy0vKiBUaGUgZm9sbG93aW5n IG1hY3JvIGdpdmVzIHVzIHRoZSBzaXplIG9mIHRoZSBudGggZGltZW5zaW9uLCBXaGVyZSAKKy0g ICBuIGlzIDEgYmFzZWQuICAqLworLQorLSNkZWZpbmUgRjc3X0RJTV9TSVpFKG4pIChmNzdfYXJy YXlfb2Zmc2V0X3RibFtuXVsxXSkKKy0KKy0vKiBUaGUgZm9sbG93aW5nIGdpdmVzIHVzIHRoZSBv ZmZzZXQgZm9yIHJvdyBuIHdoZXJlIG4gaXMgMS1iYXNlZC4gICovCistCistI2RlZmluZSBGNzdf RElNX09GRlNFVChuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1bMF0pCistCisgaW50CisgZjc3 X2dldF9sb3dlcmJvdW5kIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyB7CitAQCAtMTE0LDQ3ICsxMDMs NiBAQCBmNzdfZ2V0X2R5bmFtaWNfbGVuZ3RoX29mX2FnZ3JlZ2F0ZSAoc3RydWN0IHR5cGUgKnR5 cGUpCisgICAgICogVFlQRV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUg KHR5cGUpKSk7CisgfQorIAorLS8qIEZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgYXJyYXkgb2Zm c2V0LHNpemUgdGFibGUgZm9yIHRoZSBhcnJheSAKKy0gICB0eXBlICJ0eXBlIi4gICovCistCist c3RhdGljIHZvaWQKKy1mNzdfY3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0X3RibCAoc3RydWN0IHR5 cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCisteworLSAgc3RydWN0IHR5cGUgKnRt cF90eXBlOworLSAgaW50IGVsdGxlbjsKKy0gIGludCBuZGltZW4gPSAxOworLSAgaW50IHVwcGVy LCBsb3dlcjsKKy0KKy0gIHRtcF90eXBlID0gdHlwZTsKKy0KKy0gIHdoaWxlIChUWVBFX0NPREUg KHRtcF90eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkpCistICAgIHsKKy0gICAgICB1cHBlciA9IGY3 N19nZXRfdXBwZXJib3VuZCAodG1wX3R5cGUpOworLSAgICAgIGxvd2VyID0gZjc3X2dldF9sb3dl cmJvdW5kICh0bXBfdHlwZSk7CistCistICAgICAgRjc3X0RJTV9TSVpFIChuZGltZW4pID0gdXBw ZXIgLSBsb3dlciArIDE7CistCistICAgICAgdG1wX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0 bXBfdHlwZSk7CistICAgICAgbmRpbWVuKys7CistICAgIH0KKy0KKy0gIC8qIE5vdyB3ZSBtdWx0 aXBseSBlbHRsZW4gYnkgYWxsIHRoZSBvZmZzZXRzLCBzbyB0aGF0IGxhdGVyIHdlIAorLSAgICAg Y2FuIHByaW50IG91dCBhcnJheSBlbGVtZW50cyBjb3JyZWN0bHkuICBVcCB0aWxsIG5vdyB3ZSAK Ky0gICAgIGtub3cgYW4gb2Zmc2V0IHRvIGFwcGx5IHRvIGdldCB0aGUgaXRlbSBidXQgd2UgYWxz byAKKy0gICAgIGhhdmUgdG8ga25vdyBob3cgbXVjaCB0byBhZGQgdG8gZ2V0IHRvIHRoZSBuZXh0 IGl0ZW0uICAqLworLQorLSAgbmRpbWVuLS07CistICBlbHRsZW4gPSBUWVBFX0xFTkdUSCAodG1w X3R5cGUpOworLSAgRjc3X0RJTV9PRkZTRVQgKG5kaW1lbikgPSBlbHRsZW47CistICB3aGlsZSAo LS1uZGltZW4gPiAwKQorLSAgICB7CistICAgICAgZWx0bGVuICo9IEY3N19ESU1fU0laRSAobmRp bWVuICsgMSk7CistICAgICAgRjc3X0RJTV9PRkZTRVQgKG5kaW1lbikgPSBlbHRsZW47CistICAg IH0KKy19CistCistCistCisgLyogQWN0dWFsIGZ1bmN0aW9uIHdoaWNoIHByaW50cyBvdXQgRjc3 IGFycmF5cywgVmFsYWRkciA9PSBhZGRyZXNzIGluIAorICAgIHRoZSBzdXBlcmlvci4gIEFkZHJl c3MgPT0gdGhlIGFkZHJlc3MgaW4gdGhlIGluZmVyaW9yLiAgKi8KKyAKK0BAIC0xNjcsNDEgKzEx NSw2MiBAQCBmNzdfcHJpbnRfYXJyYXlfMSAoaW50IG5zcywgaW50IG5kaW1lbnNpb25zLCBzdHJ1 Y3QgdHlwZSAqdHlwZSwKKyAJCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpv cHRpb25zLAorIAkJICAgaW50ICplbHRzKQorIHsKKysgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBl ID0gVFlQRV9JTkRFWF9UWVBFIChjaGVja190eXBlZGVmICh0eXBlKSk7CisrICBDT1JFX0FERFIg YWRkciA9IGFkZHJlc3MgKyBlbWJlZGRlZF9vZmZzZXQ7CisrICBMT05HRVNUIGxvd2VyYm91bmQs IHVwcGVyYm91bmQ7CisgICBpbnQgaTsKKyAKKysgIGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdl X3R5cGUsICZsb3dlcmJvdW5kLCAmdXBwZXJib3VuZCk7CisrCisgICBpZiAobnNzICE9IG5kaW1l bnNpb25zKQorICAgICB7CistICAgICAgZm9yIChpID0gMDsKKy0JICAgKGkgPCBGNzdfRElNX1NJ WkUgKG5zcykgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7CisrICAgICAgc2l6ZV90 IGRpbV9zaXplOworKyAgICAgIHNpemVfdCBvZmZzID0gMDsKKysgICAgICBMT05HRVNUIGJ5dGVf c3RyaWRlID0gYWJzIChUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKSk7CisrCisrICAgICAg aWYgKGJ5dGVfc3RyaWRlKQorKyAgICAgICAgZGltX3NpemUgPSBieXRlX3N0cmlkZTsKKysgICAg ICBlbHNlCisrICAgICAgICBkaW1fc2l6ZSA9IFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBF ICh0eXBlKSk7CisrCisrICAgICAgZm9yIChpID0gbG93ZXJib3VuZDsKKysJICAgKGkgPCB1cHBl cmJvdW5kICsgMSAmJiAoKmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4KTsKKyAJICAgaSsrKQor IAl7CisrCSAgc3RydWN0IHZhbHVlICpzdWJhcnJheSA9IHZhbHVlX2Zyb21fY29udGVudHNfYW5k X2FkZHJlc3MKKysJICAgIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgdmFsdWVfY29udGVudHNf Zm9yX3ByaW50aW5nX2NvbnN0ICh2YWwpCisrCSAgICAgKyBvZmZzLCBhZGRyICsgb2Zmcyk7Cisr CisgCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKCAiKTsKKy0JICBmNzdfcHJpbnRfYXJy YXlfMSAobnNzICsgMSwgbmRpbWVuc2lvbnMsIFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLAorLQkJ CSAgICAgdmFsYWRkciwKKy0JCQkgICAgIGVtYmVkZGVkX29mZnNldCArIGkgKiBGNzdfRElNX09G RlNFVCAobnNzKSwKKy0JCQkgICAgIGFkZHJlc3MsCistCQkJICAgICBzdHJlYW0sIHJlY3Vyc2Us IHZhbCwgb3B0aW9ucywgZWx0cyk7CisrCSAgZjc3X3ByaW50X2FycmF5XzEgKG5zcyArIDEsIG5k aW1lbnNpb25zLCB2YWx1ZV90eXBlIChzdWJhcnJheSksCisrCQkJICAgICB2YWx1ZV9jb250ZW50 c19mb3JfcHJpbnRpbmcgKHN1YmFycmF5KSwKKysJCQkgICAgIHZhbHVlX2VtYmVkZGVkX29mZnNl dCAoc3ViYXJyYXkpLAorKwkJCSAgICAgdmFsdWVfYWRkcmVzcyAoc3ViYXJyYXkpLAorKwkJCSAg ICAgc3RyZWFtLCByZWN1cnNlLCBzdWJhcnJheSwgb3B0aW9ucywgZWx0cyk7CisrCSAgb2ZmcyAr PSBkaW1fc2l6ZTsKKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpICIpOworIAl9Cist ICAgICAgaWYgKCplbHRzID49IG9wdGlvbnMtPnByaW50X21heCAmJiBpIDwgRjc3X0RJTV9TSVpF IChuc3MpKSAKKysgICAgICBpZiAoKmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCB1 cHBlcmJvdW5kKQorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKKyAgICAgfQor ICAgZWxzZQorICAgICB7CistICAgICAgZm9yIChpID0gMDsgaSA8IEY3N19ESU1fU0laRSAobnNz KSAmJiAoKmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4OworKyAgICAgIGZvciAoaSA9IGxvd2Vy Ym91bmQ7IGkgPCB1cHBlcmJvdW5kICsgMSAmJiAoKmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4 OworIAkgICBpKyssICgqZWx0cykrKykKKyAJeworLQkgIHZhbF9wcmludCAoVFlQRV9UQVJHRVRf VFlQRSAodHlwZSksCistCQkgICAgIHZhbGFkZHIsCistCQkgICAgIGVtYmVkZGVkX29mZnNldCAr IGkgKiBGNzdfRElNX09GRlNFVCAobmRpbWVuc2lvbnMpLAorLQkJICAgICBhZGRyZXNzLCBzdHJl YW0sIHJlY3Vyc2UsCistCQkgICAgIHZhbCwgb3B0aW9ucywgY3VycmVudF9sYW5ndWFnZSk7Cisr CSAgc3RydWN0IHZhbHVlICplbHQgPSB2YWx1ZV9zdWJzY3JpcHQgKChzdHJ1Y3QgdmFsdWUgKil2 YWwsIGkpOworKworKwkgIHZhbF9wcmludCAodmFsdWVfdHlwZSAoZWx0KSwKKysJCSAgICAgdmFs dWVfY29udGVudHNfZm9yX3ByaW50aW5nIChlbHQpLAorKwkJICAgICB2YWx1ZV9lbWJlZGRlZF9v ZmZzZXQgKGVsdCksCisrCQkgICAgIHZhbHVlX2FkZHJlc3MgKGVsdCksIHN0cmVhbSwgcmVjdXJz ZSwKKysJCSAgICAgZWx0LCBvcHRpb25zLCBjdXJyZW50X2xhbmd1YWdlKTsKKyAKKy0JICBpZiAo aSAhPSAoRjc3X0RJTV9TSVpFIChuc3MpIC0gMSkpCisrCSAgaWYgKGkgIT0gdXBwZXJib3VuZCkK KyAJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiwgIik7CisgCisgCSAgaWYgKCgqZWx0 cyA9PSBvcHRpb25zLT5wcmludF9tYXggLSAxKQorLQkgICAgICAmJiAoaSAhPSAoRjc3X0RJTV9T SVpFIChuc3MpIC0gMSkpKQorKwkgICAgICAmJiAoaSAhPSB1cHBlcmJvdW5kKSkKKyAJICAgIGZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIi4uLiIpOworIAl9CisgICAgIH0KK0BAIC0yMjgsMTIg KzE5Nyw2IEBAIGY3N19wcmludF9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9i eXRlICp2YWxhZGRyLAorIFR5cGUgbm9kZSBjb3JydXB0ISBGNzcgYXJyYXlzIGNhbm5vdCBoYXZl ICVkIHN1YnNjcmlwdHMgKCVkIE1heCkiKSwKKyAJICAgbmRpbWVuc2lvbnMsIE1BWF9GT1JUUkFO X0RJTVMpOworIAorLSAgLyogU2luY2UgRjc3IGFycmF5cyBhcmUgc3RvcmVkIGNvbHVtbi1tYWpv ciwgd2Ugc2V0IHVwIGFuIAorLSAgICAgb2Zmc2V0IHRhYmxlIHRvIGdldCBhdCB0aGUgdmFyaW91 cyByb3cncyBlbGVtZW50cy4gIFRoZSAKKy0gICAgIG9mZnNldCB0YWJsZSBjb250YWlucyBlbnRy aWVzIGZvciBib3RoIG9mZnNldCBhbmQgc3ViYXJyYXkgc2l6ZS4gICovCistCistICBmNzdfY3Jl YXRlX2FycmF5cHJpbnRfb2Zmc2V0X3RibCAodHlwZSwgc3RyZWFtKTsKKy0KKyAgIGY3N19wcmlu dF9hcnJheV8xICgxLCBuZGltZW5zaW9ucywgdHlwZSwgdmFsYWRkciwgZW1iZWRkZWRfb2Zmc2V0 LAorIAkJICAgICBhZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UsIHZhbCwgb3B0aW9ucywgJmVsdHMp OworIH0KK0BAIC0zNzgsMTIgKzM0MSwxNSBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAorICAgICAg IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiggIik7CisgICAgICAgZm9yIChpbmRleCA9IDA7 IGluZGV4IDwgVFlQRV9ORklFTERTICh0eXBlKTsgaW5kZXgrKykKKyAgICAgICAgIHsKKy0gICAg ICAgICAgaW50IG9mZnNldCA9IFRZUEVfRklFTERfQklUUE9TICh0eXBlLCBpbmRleCkgLyA4Owor KwkgIHN0cnVjdCB2YWx1ZSAqZmllbGQgPSB2YWx1ZV9maWVsZAorKwkgICAgKChzdHJ1Y3QgdmFs dWUgKilvcmlnaW5hbF92YWx1ZSwgaW5kZXgpOworKworKyAgICAgICAgICB2YWxfcHJpbnQgKHZh bHVlX3R5cGUgKGZpZWxkKSwKKysJCSAgICAgdmFsdWVfY29udGVudHNfZm9yX3ByaW50aW5nIChm aWVsZCksCisrCQkgICAgIHZhbHVlX2VtYmVkZGVkX29mZnNldCAoZmllbGQpLAorKwkJICAgICB2 YWx1ZV9hZGRyZXNzIChmaWVsZCksIHN0cmVhbSwgcmVjdXJzZSArIDEsCisrCQkgICAgIGZpZWxk LCBvcHRpb25zLCBjdXJyZW50X2xhbmd1YWdlKTsKKyAKKy0gICAgICAgICAgdmFsX3ByaW50IChU WVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGluZGV4KSwgdmFsYWRkciwKKy0JCSAgICAgZW1iZWRkZWRf b2Zmc2V0ICsgb2Zmc2V0LAorLQkJICAgICBhZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UgKyAxLAor LQkJICAgICBvcmlnaW5hbF92YWx1ZSwgb3B0aW9ucywgY3VycmVudF9sYW5ndWFnZSk7CisgICAg ICAgICAgIGlmIChpbmRleCAhPSBUWVBFX05GSUVMRFMgKHR5cGUpIC0gMSkKKyAgICAgICAgICAg ICBmcHV0c19maWx0ZXJlZCAoIiwgIiwgc3RyZWFtKTsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQg YS9nZGIvZ2RidHlwZXMuYyBiL2dkYi9nZGJ0eXBlcy5jCitpbmRleCBkMGMwMDJmLi4zZjUyZDYx IDEwMDY0NAorLS0tIGEvZ2RiL2dkYnR5cGVzLmMKKysrKyBiL2dkYi9nZGJ0eXBlcy5jCitAQCAt ODA1LDcgKzgwNSw4IEBAIGFsbG9jYXRlX3N0dWJfbWV0aG9kIChzdHJ1Y3QgdHlwZSAqdHlwZSkK KyBzdHJ1Y3QgdHlwZSAqCisgY3JlYXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRf dHlwZSwgc3RydWN0IHR5cGUgKmluZGV4X3R5cGUsCisgCQkgICBjb25zdCBzdHJ1Y3QgZHluYW1p Y19wcm9wICpsb3dfYm91bmQsCistCQkgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpoaWdo X2JvdW5kKQorKwkJICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqaGlnaF9ib3VuZCwKKysJ CSAgIGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKnN0cmlkZSkKKyB7CisgICBpZiAocmVzdWx0 X3R5cGUgPT0gTlVMTCkKKyAgICAgcmVzdWx0X3R5cGUgPSBhbGxvY190eXBlX2NvcHkgKGluZGV4 X3R5cGUpOworQEAgLTgyMCw2ICs4MjEsNyBAQCBjcmVhdGVfcmFuZ2VfdHlwZSAoc3RydWN0IHR5 cGUgKnJlc3VsdF90eXBlLCBzdHJ1Y3QgdHlwZSAqaW5kZXhfdHlwZSwKKyAgICAgVFlQRV9aQUxM T0MgKHJlc3VsdF90eXBlLCBzaXplb2YgKHN0cnVjdCByYW5nZV9ib3VuZHMpKTsKKyAgIFRZUEVf UkFOR0VfREFUQSAocmVzdWx0X3R5cGUpLT5sb3cgPSAqbG93X2JvdW5kOworICAgVFlQRV9SQU5H RV9EQVRBIChyZXN1bHRfdHlwZSktPmhpZ2ggPSAqaGlnaF9ib3VuZDsKKysgIFRZUEVfUkFOR0Vf REFUQSAocmVzdWx0X3R5cGUpLT5zdHJpZGUgPSAqc3RyaWRlOworIAorICAgaWYgKGxvd19ib3Vu ZC0+a2luZCA9PSBQUk9QX0NPTlNUICYmIGxvd19ib3VuZC0+ZGF0YS5jb25zdF92YWwgPj0gMCkK KyAgICAgVFlQRV9VTlNJR05FRCAocmVzdWx0X3R5cGUpID0gMTsKK0BAIC04NDEsNyArODQzLDcg QEAgc3RydWN0IHR5cGUgKgorIGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUg KnJlc3VsdF90eXBlLCBzdHJ1Y3QgdHlwZSAqaW5kZXhfdHlwZSwKKyAJCQkgIExPTkdFU1QgbG93 X2JvdW5kLCBMT05HRVNUIGhpZ2hfYm91bmQpCisgeworLSAgc3RydWN0IGR5bmFtaWNfcHJvcCBs b3csIGhpZ2g7CisrICBzdHJ1Y3QgZHluYW1pY19wcm9wIGxvdywgaGlnaCwgc3RyaWRlOworIAor ICAgbG93LmtpbmQgPSBQUk9QX0NPTlNUOworICAgbG93LmRhdGEuY29uc3RfdmFsID0gbG93X2Jv dW5kOworQEAgLTg0OSw3ICs4NTEsMTEgQEAgY3JlYXRlX3N0YXRpY19yYW5nZV90eXBlIChzdHJ1 Y3QgdHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAorICAgaGlnaC5r aW5kID0gUFJPUF9DT05TVDsKKyAgIGhpZ2guZGF0YS5jb25zdF92YWwgPSBoaWdoX2JvdW5kOwor IAorLSAgcmVzdWx0X3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAocmVzdWx0X3R5cGUsIGluZGV4 X3R5cGUsICZsb3csICZoaWdoKTsKKysgIHN0cmlkZS5raW5kID0gUFJPUF9DT05TVDsKKysgIHN0 cmlkZS5kYXRhLmNvbnN0X3ZhbCA9IDA7CisrCisrICByZXN1bHRfdHlwZSA9IGNyZWF0ZV9yYW5n ZV90eXBlIChyZXN1bHRfdHlwZSwgaW5kZXhfdHlwZSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZsb3csICZoaWdoLCAmc3RyaWRlKTsKKyAKKyAgIHJldHVybiByZXN1bHRf dHlwZTsKKyB9CitAQCAtMTAwMywxOCArMTAwOSwyNCBAQCBjcmVhdGVfYXJyYXlfdHlwZV93aXRo X3N0cmlkZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlLAorIAorICAgVFlQRV9DT0RFIChyZXN1 bHRfdHlwZSkgPSBUWVBFX0NPREVfQVJSQVk7CisgICBUWVBFX1RBUkdFVF9UWVBFIChyZXN1bHRf dHlwZSkgPSBlbGVtZW50X3R5cGU7CistICBpZiAoaGFzX3N0YXRpY19yYW5nZSAoVFlQRV9SQU5H RV9EQVRBIChyYW5nZV90eXBlKSkpCisrICBpZiAoaGFzX3N0YXRpY19yYW5nZSAoVFlQRV9SQU5H RV9EQVRBIChyYW5nZV90eXBlKSkKKysgICAgICAmJiBkd2FyZjJfYWRkcmVzc19kYXRhX3ZhbGlk IChyZXN1bHRfdHlwZSkpCisgICAgIHsKKy0gICAgICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9i b3VuZDsKKysgICAgICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZCwgYnl0ZV9zdHJpZGU7 CisgCisgICAgICAgaWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91 bmQsICZoaWdoX2JvdW5kKSA8IDApCisgCWxvd19ib3VuZCA9IGhpZ2hfYm91bmQgPSAwOworICAg ICAgIENIRUNLX1RZUEVERUYgKGVsZW1lbnRfdHlwZSk7CisrCisrICAgICAgYnl0ZV9zdHJpZGUg PSBhYnMgKFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpKTsKKysKKyAgICAgICAvKiBCZSBj YXJlZnVsIHdoZW4gc2V0dGluZyB0aGUgYXJyYXkgbGVuZ3RoLiAgQWRhIGFycmF5cyBjYW4gYmUK KyAJIGVtcHR5IGFycmF5cyB3aXRoIHRoZSBoaWdoX2JvdW5kIGJlaW5nIHNtYWxsZXIgdGhhbiB0 aGUgbG93X2JvdW5kLgorIAkgSW4gc3VjaCBjYXNlcywgdGhlIGFycmF5IGxlbmd0aCBzaG91bGQg YmUgemVyby4gICovCisgICAgICAgaWYgKGhpZ2hfYm91bmQgPCBsb3dfYm91bmQpCisgCVRZUEVf TEVOR1RIIChyZXN1bHRfdHlwZSkgPSAwOworKyAgICAgIGVsc2UgaWYgKGJ5dGVfc3RyaWRlID4g MCkKKysJVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9IGJ5dGVfc3RyaWRlICogKGhpZ2hfYm91 bmQgLSBsb3dfYm91bmQgKyAxKTsKKyAgICAgICBlbHNlIGlmIChiaXRfc3RyaWRlID4gMCkKKyAJ VFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9CisgCSAgKGJpdF9zdHJpZGUgKiAoaGlnaF9ib3Vu ZCAtIGxvd19ib3VuZCArIDEpICsgNykgLyA4OworQEAgLTE2MTYsMTEgKzE2MjgsMzAgQEAgc3R1 Yl9ub25hbWVfY29tcGxhaW50ICh2b2lkKQorIGludAorIGlzX2R5bmFtaWNfdHlwZSAoc3RydWN0 IHR5cGUgKnR5cGUpCisgeworKyAgaW50IGluZGV4OworKworKyAgaWYgKCF0eXBlKQorKyAgICBy ZXR1cm4gMDsKKysKKyAgIHR5cGUgPSBjaGVja190eXBlZGVmICh0eXBlKTsKKyAKKyAgIGlmIChU WVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SRUYpCisgICAgIHR5cGUgPSBjaGVja190eXBl ZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CisgCisrICBpZiAoVFlQRV9BU1NPQ0lBVEVE X1BST1AgKHR5cGUpKQorKyAgICByZXR1cm4gMTsKKysKKysgIGlmIChUWVBFX0FMTE9DQVRFRF9Q Uk9QICh0eXBlKSkKKysgICAgcmV0dXJuIDE7CisrCisrICAvKiBTY2FuIGZpZWxkIHR5cGVzIGlu IHRoZSBGb3J0cmFuIGNhc2UgZm9yIG5lc3RlZCBkeW5hbWljIHR5cGVzLgorKyAgICAgVGhpcyB3 aWxsIGJlIGRvbmUgb25seSBmb3IgRm9ydHJhbiBhcyBpbiB0aGUgQysrIGNhc2UgYW4gZW5kbGVz cyByZWN1cnNpb24KKysgICAgIGNhbiBvY2N1ciBpbiB0aGUgYXJlYSBvZiBjbGFzc2VzLiAgKi8K KysgIGlmIChjdXJyZW50X2xhbmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0cmFu KQorKyAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBpbmRl eCsrKQorKyAgICAgIGlmIChpc19keW5hbWljX3R5cGUgKFRZUEVfRklFTERfVFlQRSAodHlwZSwg aW5kZXgpKSkKKysgICAgICAgIHJldHVybiAxOworKworICAgc3dpdGNoIChUWVBFX0NPREUgKHR5 cGUpKQorICAgICB7CisgICAgIGNhc2UgVFlQRV9DT0RFX1JBTkdFOgorQEAgLTE2MzAsMTEgKzE2 NjEsMTkgQEAgaXNfZHluYW1pY190eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyAgICAgICB7Cisg CWdkYl9hc3NlcnQgKFRZUEVfTkZJRUxEUyAodHlwZSkgPT0gMSk7CisgCistCS8qIFRoZSBhcnJh eSBpcyBkeW5hbWljIGlmIGVpdGhlciB0aGUgYm91bmRzIGFyZSBkeW5hbWljLAorLQkgICBvciB0 aGUgZWxlbWVudHMgaXQgY29udGFpbnMgaGF2ZSBhIGR5bmFtaWMgY29udGVudHMuICAqLworKwkv KiBUaGUgYXJyYXkgaXMgZHluYW1pYyBpZiBlaXRoZXIKKysgICAgIC0gdGhlIGJvdW5kcyBhcmUg ZHluYW1pYywKKysJICAgLSB0aGUgZWxlbWVudHMgaXQgY29udGFpbnMgaGF2ZSBhIGR5bmFtaWMg Y29udGVudHMKKysgICAgIC0gYSBkYXRhX2xvY2F0b24gYXR0cmlidXRlIHdhcyBmb3VuZC4gICov CisgCWlmIChpc19keW5hbWljX3R5cGUgKFRZUEVfSU5ERVhfVFlQRSAodHlwZSkpKQorIAkgIHJl dHVybiAxOworLQlyZXR1cm4gaXNfZHluYW1pY190eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSk7CisrCWVsc2UgaWYgKFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSkgIT0gTlVMTAorKwkgICAg ICAgICAmJiAoVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5cGUpID09IFBST1BfTE9DRVhQUgor KwkgICAgICAgICAgICAgfHwgVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5cGUpID09IFBST1Bf TE9DTElTVCkpCisrICAgIHJldHVybiAxOworKyAgZWxzZQorKyAgICByZXR1cm4gaXNfZHluYW1p Y190eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CisrCWJyZWFrOworICAgICAgIH0KKyAK KyAgICAgY2FzZSBUWVBFX0NPREVfU1RSVUNUOgorQEAgLTE2NDcsMjggKzE2ODYsNDAgQEAgaXNf ZHluYW1pY190eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyAJICAgICAgJiYgaXNfZHluYW1pY190 eXBlIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKSkKKyAJICAgIHJldHVybiAxOworICAgICAg IH0KKysgICAgY2FzZSBUWVBFX0NPREVfUFRSOgorKyAgICAgIHsKKysgICAgICAgIGlmIChUWVBF X1RBUkdFVF9UWVBFICh0eXBlKQorKyAgICAgICAgICAgICYmIFRZUEVfQ09ERSAoVFlQRV9UQVJH RVRfVFlQRSAodHlwZSkpID09IFRZUEVfQ09ERV9TVFJJTkcpCisrICAgICAgICAgIHJldHVybiBp c19keW5hbWljX3R5cGUgKGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSk7 CisrCisrICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIGJyZWFrOworKyAgICAgIH0KKysgICAg ZGVmYXVsdDoKKysgICAgICByZXR1cm4gMDsKKyAgICAgICBicmVhazsKKyAgICAgfQorIAorICAg cmV0dXJuIDA7CisgfQorIAorLS8qIEdpdmVuIGEgZHluYW1pYyByYW5nZSB0eXBlIChkeW5fcmFu Z2VfdHlwZSksIHJldHVybiBhIHN0YXRpYyB2ZXJzaW9uCistICAgb2YgdGhhdCB0eXBlLiAgKi8K KysvKiBHaXZlbiBhIGR5bmFtaWMgcmFuZ2UgdHlwZSAoZHluX3JhbmdlX3R5cGUpIGFuZCBhZGRy ZXNzLAorKyAgIHJldHVybiBhIHN0YXRpYyB2ZXJzaW9uIG9mIHRoYXQgdHlwZS4gICovCisgCisg c3RhdGljIHN0cnVjdCB0eXBlICoKKy1yZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHN0cnVjdCB0eXBl ICpkeW5fcmFuZ2VfdHlwZSkKKytyZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHN0cnVjdCB0eXBlICpk eW5fcmFuZ2VfdHlwZSwgQ09SRV9BRERSIGFkZHIpCisgeworICAgQ09SRV9BRERSIHZhbHVlOwor ICAgc3RydWN0IHR5cGUgKnN0YXRpY19yYW5nZV90eXBlOworICAgY29uc3Qgc3RydWN0IGR5bmFt aWNfcHJvcCAqcHJvcDsKKyAgIGNvbnN0IHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYmF0 b247CistICBzdHJ1Y3QgZHluYW1pY19wcm9wIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKKysgIHN0 cnVjdCBkeW5hbWljX3Byb3AgbG93X2JvdW5kLCBoaWdoX2JvdW5kLCBzdHJpZGU7CisrICBzdHJ1 Y3QgdHlwZSAqcmFuZ2VfY29weSA9IGNvcHlfdHlwZSAoZHluX3JhbmdlX3R5cGUpOworIAorICAg Z2RiX2Fzc2VydCAoVFlQRV9DT0RFIChkeW5fcmFuZ2VfdHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdF KTsKKyAKKyAgIHByb3AgPSAmVFlQRV9SQU5HRV9EQVRBIChkeW5fcmFuZ2VfdHlwZSktPmxvdzsK Ky0gIGlmIChkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKHByb3AsICZ2YWx1ZSkpCisrICBpZiAo ZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChwcm9wLCBhZGRyLCAmdmFsdWUpKQorICAgICB7Cisg ICAgICAgbG93X2JvdW5kLmtpbmQgPSBQUk9QX0NPTlNUOworICAgICAgIGxvd19ib3VuZC5kYXRh LmNvbnN0X3ZhbCA9IHZhbHVlOworQEAgLTE2ODAsNyArMTczMSw3IEBAIHJlc29sdmVfZHluYW1p Y19yYW5nZSAoc3RydWN0IHR5cGUgKmR5bl9yYW5nZV90eXBlKQorICAgICB9CisgCisgICBwcm9w ID0gJlRZUEVfUkFOR0VfREFUQSAoZHluX3JhbmdlX3R5cGUpLT5oaWdoOworLSAgaWYgKGR3YXJm Ml9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgJnZhbHVlKSkKKysgIGlmIChkd2FyZjJfZXZhbHVh dGVfcHJvcGVydHkgKHByb3AsIGFkZHIsICZ2YWx1ZSkpCisgICAgIHsKKyAgICAgICBoaWdoX2Jv dW5kLmtpbmQgPSBQUk9QX0NPTlNUOworICAgICAgIGhpZ2hfYm91bmQuZGF0YS5jb25zdF92YWwg PSB2YWx1ZTsKK0BAIC0xNjk0LDEwICsxNzQ1LDE3IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAo c3RydWN0IHR5cGUgKmR5bl9yYW5nZV90eXBlKQorICAgICAgIGhpZ2hfYm91bmQua2luZCA9IFBS T1BfVU5ERUZJTkVEOworICAgICAgIGhpZ2hfYm91bmQuZGF0YS5jb25zdF92YWwgPSAwOworICAg ICB9CisrICAKKysgIHByb3AgPSAmVFlQRV9SQU5HRV9EQVRBIChkeW5fcmFuZ2VfdHlwZSktPnN0 cmlkZTsKKysgIGlmIChkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKHByb3AsIGFkZHIsICZ2YWx1 ZSkpCisrICAgIHsKKysgICAgICBzdHJpZGUua2luZCA9IFBST1BfQ09OU1Q7CisrICAgICAgc3Ry aWRlLmRhdGEuY29uc3RfdmFsID0gdmFsdWU7CisrICAgIH0KKyAKKy0gIHN0YXRpY19yYW5nZV90 eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKGNvcHlfdHlwZSAoZHluX3JhbmdlX3R5cGUpLAorLQkJ CQkJIFRZUEVfVEFSR0VUX1RZUEUgKGR5bl9yYW5nZV90eXBlKSwKKy0JCQkJCSAmbG93X2JvdW5k LCAmaGlnaF9ib3VuZCk7CisrICBzdGF0aWNfcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBl IChyYW5nZV9jb3B5LAorKwkJCQkJIFRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX2NvcHkpLAorKwkJ CQkJICZsb3dfYm91bmQsICZoaWdoX2JvdW5kLCAmc3RyaWRlKTsKKyAgIFRZUEVfUkFOR0VfREFU QSAoc3RhdGljX3JhbmdlX3R5cGUpLT5mbGFnX2JvdW5kX2V2YWx1YXRlZCA9IDE7CisgICByZXR1 cm4gc3RhdGljX3JhbmdlX3R5cGU7CisgfQorQEAgLTE3MDcsMjkgKzE3NjUsNTIgQEAgcmVzb2x2 ZV9keW5hbWljX3JhbmdlIChzdHJ1Y3QgdHlwZSAqZHluX3JhbmdlX3R5cGUpCisgICAgb2YgdGhl IGFzc29jaWF0ZWQgYXJyYXkuICAqLworIAorIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqCistcmVzb2x2 ZV9keW5hbWljX2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlwZSkKKytyZXNvbHZlX2R5bmFtaWNfYXJy YXkgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcikKKyB7CisgICBDT1JFX0FERFIg dmFsdWU7CisgICBzdHJ1Y3QgdHlwZSAqZWx0X3R5cGU7CisgICBzdHJ1Y3QgdHlwZSAqcmFuZ2Vf dHlwZTsKKyAgIHN0cnVjdCB0eXBlICphcnlfZGltOworKyAgc3RydWN0IGR5bmFtaWNfcHJvcCAq cHJvcDsKKysgIHN0cnVjdCB0eXBlICpjb3B5ID0gY29weV90eXBlICh0eXBlKTsKKyAKKy0gIGdk Yl9hc3NlcnQgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZKTsKKysgIGdkYl9h c3NlcnQgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCisrICAgICAgICAgICAg ICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9TVFJJTkcpOworIAorICAgZWx0X3R5 cGUgPSB0eXBlOworICAgcmFuZ2VfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfSU5ERVhfVFlQ RSAoZWx0X3R5cGUpKTsKKy0gIHJhbmdlX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHJh bmdlX3R5cGUpOworKyAgcmFuZ2VfdHlwZSA9IHJlc29sdmVfZHluYW1pY19yYW5nZSAocmFuZ2Vf dHlwZSwgYWRkcik7CisrCisrICBwcm9wID0gVFlQRV9BTExPQ0FURURfUFJPUCAodHlwZSk7Cisr ICBpZiAoZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChwcm9wLCBhZGRyLCAmdmFsdWUpKQorKyAg ICB7CisrICAgICAgVFlQRV9BTExPQ0FURURfUFJPUCAoY29weSktPmtpbmQgPSBQUk9QX0NPTlNU OworKyAgICAgIFRZUEVfQUxMT0NBVEVEX1BST1AgKGNvcHkpLT5kYXRhLmNvbnN0X3ZhbCA9IHZh bHVlOworKyAgICB9CisrCisrICBwcm9wID0gVFlQRV9BU1NPQ0lBVEVEX1BST1AgKHR5cGUpOwor KyAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgYWRkciwgJnZhbHVlKSkKKysg ICAgeworKyAgICAgIFRZUEVfQVNTT0NJQVRFRF9QUk9QIChjb3B5KS0+a2luZCA9IFBST1BfQ09O U1Q7CisrICAgICAgVFlQRV9BU1NPQ0lBVEVEX1BST1AgKGNvcHkpLT5kYXRhLmNvbnN0X3ZhbCA9 IHZhbHVlOworKyAgICB9CisgCisgICBhcnlfZGltID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJH RVRfVFlQRSAoZWx0X3R5cGUpKTsKKyAKKy0gIGlmIChhcnlfZGltICE9IE5VTEwgJiYgVFlQRV9D T0RFIChhcnlfZGltKSA9PSBUWVBFX0NPREVfQVJSQVkpCistICAgIGVsdF90eXBlID0gcmVzb2x2 ZV9keW5hbWljX2FycmF5IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CisrICBpZiAoYXJ5X2Rp bSAhPSBOVUxMICYmIChUWVBFX0NPREUgKGFyeV9kaW0pID09IFRZUEVfQ09ERV9BUlJBWQorKyAg ICAgICAgICB8fCBUWVBFX0NPREUgKGFyeV9kaW0pID09IFRZUEVfQ09ERV9TVFJJTkcpKQorKyAg ICBlbHRfdHlwZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQRV9UQVJHRVRfVFlQRSAoY29w eSksIGFkZHIpOworICAgZWxzZQorICAgICBlbHRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpOworIAorLSAgcmV0dXJuIGNyZWF0ZV9hcnJheV90eXBlIChjb3B5X3R5cGUgKHR5cGUpLAor LQkJCSAgICBlbHRfdHlwZSwKKy0JCQkgICAgcmFuZ2VfdHlwZSk7CisrICBpZiAoVFlQRV9DT0RF ICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSSU5HKQorKyAgICByZXR1cm4gY3JlYXRlX3N0cmluZ190 eXBlIChjb3B5LAorKyAgICAgICAgICAgIGVsdF90eXBlLAorKyAgICAgICAgICAgIHJhbmdlX3R5 cGUpOworKyAgZWxzZQorKyAgICByZXR1cm4gY3JlYXRlX2FycmF5X3R5cGUgKGNvcHksCisrICAg ICAgICAgICAgZWx0X3R5cGUsCisrICAgICAgICAgICAgcmFuZ2VfdHlwZSk7CisgfQorIAorIC8q IFJlc29sdmUgZHluYW1pYyBib3VuZHMgb2YgbWVtYmVycyBvZiB0aGUgdW5pb24gVFlQRSB0byBz dGF0aWMKK0BAIC0xODIzLDYgKzE5MDQsNyBAQCByZXNvbHZlX2R5bmFtaWNfc3RydWN0IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHIpCisgICByZXR1cm4gcmVzb2x2ZWRfdHlwZTsK KyB9CisgCisrCisgLyogU2VlIGdkYnR5cGVzLmggICovCisgCisgc3RydWN0IHR5cGUgKgorQEAg LTE4MzAsNiArMTkxMiw4IEBAIHJlc29sdmVfZHluYW1pY190eXBlIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgQ09SRV9BRERSIGFkZHIpCisgeworICAgc3RydWN0IHR5cGUgKnJlYWxfdHlwZSA9IGNoZWNr X3R5cGVkZWYgKHR5cGUpOworICAgc3RydWN0IHR5cGUgKnJlc29sdmVkX3R5cGUgPSB0eXBlOwor KyAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKKysgIENPUkVfQUREUiB2YWx1ZTsK KyAKKyAgIGlmICghaXNfZHluYW1pY190eXBlIChyZWFsX3R5cGUpKQorICAgICByZXR1cm4gdHlw ZTsKK0BAIC0xODUzLDExICsxOTM3LDEyIEBAIHJlc29sdmVfZHluYW1pY190eXBlIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHIpCisgCX0KKyAKKyAgICAgICBjYXNlIFRZUEVfQ09E RV9BUlJBWToKKy0JcmVzb2x2ZWRfdHlwZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAodHlwZSk7 CisrICAgICAgY2FzZSBUWVBFX0NPREVfU1RSSU5HOgorKwlyZXNvbHZlZF90eXBlID0gcmVzb2x2 ZV9keW5hbWljX2FycmF5ICh0eXBlLCBhZGRyKTsKKyAJYnJlYWs7CisgCisgICAgICAgY2FzZSBU WVBFX0NPREVfUkFOR0U6CistCXJlc29sdmVkX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfcmFuZ2Ug KHR5cGUpOworKwlyZXNvbHZlZF90eXBlID0gcmVzb2x2ZV9keW5hbWljX3JhbmdlICh0eXBlLCBh ZGRyKTsKKyAJYnJlYWs7CisgCisgICAgIGNhc2UgVFlQRV9DT0RFX1VOSU9OOgorQEAgLTE4Njks NiArMTk1NCwyNSBAQCByZXNvbHZlX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIENP UkVfQUREUiBhZGRyKQorICAgICAgIGJyZWFrOworICAgICB9CisgCisrICAvKiBSZXNvbHZlIGRh dGFfbG9jYXRpb24gYXR0cmlidXRlLiAgKi8KKysgIHByb3AgPSBUWVBFX0RBVEFfTE9DQVRJT04g KHJlc29sdmVkX3R5cGUpOworKyAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwg YWRkciwgJnZhbHVlKSkKKysgICAgeworKyAgICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlID0g VFlQRV9JTkRFWF9UWVBFIChyZXNvbHZlZF90eXBlKTsKKysKKysgICAgICAvKiBBZGp1c3QgdGhl IGRhdGEgbG9jYXRpb24gd2l0aCB0aGUgdmFsdWUgb2YgYnl0ZSBzdHJpZGUgaWYgc2V0LCB3aGlj aAorKyAgICAgICAgIGNhbiBkZXNjcmliZSB0aGUgc2VwYXJhdGlvbiBiZXR3ZWVuIHN1Y2Nlc3Np dmUgZWxlbWVudHMgYWxvbmcgdGhlCisrICAgICAgICAgZGltZW5zaW9uLiAgKi8KKysgICAgICBp ZiAoVFlQRV9CWVRFX1NUUklERSAocmFuZ2VfdHlwZSkgPCAwKQorKyAgICAgICAgdmFsdWUgKz0g KFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgLSBUWVBFX0xPV19CT1VORCAocmFuZ2VfdHlw ZSkpCisrICAgICAgICAgICAgICAgICAgKiBUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKTsK KysKKysgICAgICBUWVBFX0RBVEFfTE9DQVRJT05fQUREUiAocmVzb2x2ZWRfdHlwZSkgPSB2YWx1 ZTsKKysgICAgICBUWVBFX0RBVEFfTE9DQVRJT05fS0lORCAocmVzb2x2ZWRfdHlwZSkgPSBQUk9Q X0NPTlNUOworKyAgICB9CisrICBlbHNlCisrICAgIFRZUEVfREFUQV9MT0NBVElPTiAocmVzb2x2 ZWRfdHlwZSkgPSBOVUxMOworKworICAgcmV0dXJuIHJlc29sdmVkX3R5cGU7CisgfQorIAorQEAg LTQwNzgsNiArNDE4MiwyNyBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKKyAgICAgICAqVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSkgPSAqVFlQRV9SQU5H RV9EQVRBICh0eXBlKTsKKyAgICAgfQorIAorKyAgLyogQ29weSB0aGUgZGF0YSBsb2NhdGlvbiBp bmZvcm1hdGlvbi4gICovCisrICBpZiAoVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKSAhPSBOVUxM KQorKyAgICB7CisrICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9OIChuZXdfdHlwZSkgPSB4bWFsbG9j IChzaXplb2YgKHN0cnVjdCBkeW5hbWljX3Byb3ApKTsKKysgICAgICAqVFlQRV9EQVRBX0xPQ0FU SU9OIChuZXdfdHlwZSkgPSAqVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKTsKKysgICAgfQorKwor KyAgLyogQ29weSBhbGxvY2F0ZWQgaW5mb3JtYXRpb24uICAqLworKyAgaWYgKFRZUEVfQUxMT0NB VEVEX1BST1AgKHR5cGUpICE9IE5VTEwpCisrICAgIHsKKysgICAgICBUWVBFX0FMTE9DQVRFRF9Q Uk9QIChuZXdfdHlwZSkgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBkeW5hbWljX3Byb3ApKTsK KysgICAgICAqVFlQRV9BTExPQ0FURURfUFJPUCAobmV3X3R5cGUpID0gKlRZUEVfQUxMT0NBVEVE X1BST1AgKHR5cGUpOworKyAgICB9CisrCisrICAvKiBDb3B5IGFzc29jaWF0ZWQgaW5mb3JtYXRp b24uICAqLworKyAgaWYgKFRZUEVfQVNTT0NJQVRFRF9QUk9QICh0eXBlKSAhPSBOVUxMKQorKyAg ICB7CisrICAgICAgVFlQRV9BU1NPQ0lBVEVEX1BST1AgKG5ld190eXBlKSA9IHhtYWxsb2MgKHNp emVvZiAoc3RydWN0IGR5bmFtaWNfcHJvcCkpOworKyAgICAgICpUWVBFX0FTU09DSUFURURfUFJP UCAobmV3X3R5cGUpID0gKlRZUEVfQVNTT0NJQVRFRF9QUk9QICh0eXBlKTsKKysgICAgfQorKwor ICAgLyogQ29weSBwb2ludGVycyB0byBvdGhlciB0eXBlcy4gICovCisgICBpZiAoVFlQRV9UQVJH RVRfVFlQRSAodHlwZSkpCisgICAgIFRZUEVfVEFSR0VUX1RZUEUgKG5ld190eXBlKSA9IAorQEAg LTQxMjQsNiArNDI0OSw0NCBAQCBjb3B5X3R5cGUgKGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKQor ICAgbWVtY3B5IChUWVBFX01BSU5fVFlQRSAobmV3X3R5cGUpLCBUWVBFX01BSU5fVFlQRSAodHlw ZSksCisgCSAgc2l6ZW9mIChzdHJ1Y3QgbWFpbl90eXBlKSk7CisgCisrICBpZiAoVFlQRV9BTExP Q0FURURfUFJPUCAodHlwZSkpCisrICAgIHsKKysgICAgICBUWVBFX0FMTE9DQVRFRF9QUk9QIChu ZXdfdHlwZSkKKysgICAgICAgICAgICAgID0gT0JTVEFDS19aQUxMT0MgKCZUWVBFX09XTkVSICh0 eXBlKS5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZHluYW1pY19wcm9wKTsKKysgICAgICBtZW1jcHkgKFRZUEVfQUxMT0NB VEVEX1BST1AgKG5ld190eXBlKSwgVFlQRV9BTExPQ0FURURfUFJPUCAodHlwZSksCisrICAgICAg ICBzaXplb2YgKHN0cnVjdCBkeW5hbWljX3Byb3ApKTsKKysgICAgfQorKworKyAgaWYgKFRZUEVf QVNTT0NJQVRFRF9QUk9QICh0eXBlKSkKKysgICAgeworKyAgICAgIFRZUEVfQVNTT0NJQVRFRF9Q Uk9QIChuZXdfdHlwZSkKKysgICAgICAgICAgICAgID0gT0JTVEFDS19aQUxMT0MgKCZUWVBFX09X TkVSICh0eXBlKS5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZHluYW1pY19wcm9wKTsKKysgICAgICBtZW1jcHkgKFRZUEVf QVNTT0NJQVRFRF9QUk9QIChuZXdfdHlwZSksIFRZUEVfQVNTT0NJQVRFRF9QUk9QICh0eXBlKSwK KysgICAgICAgIHNpemVvZiAoc3RydWN0IGR5bmFtaWNfcHJvcCkpOworKyAgICB9CisrCisrICBp ZiAoVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKSkKKysgICAgeworKyAgICAgIFRZUEVfREFUQV9M T0NBVElPTiAobmV3X3R5cGUpCisrICAgICAgICAgICAgICA9IE9CU1RBQ0tfWkFMTE9DICgmVFlQ RV9PV05FUiAodHlwZSkub2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGR5bmFtaWNfcHJvcCk7CisrICAgICAgbWVtY3B5IChU WVBFX0RBVEFfTE9DQVRJT04gKG5ld190eXBlKSwgVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKSwK KysgICAgICAgIHNpemVvZiAoc3RydWN0IGR5bmFtaWNfcHJvcCkpOworKyAgICB9CisrCisrICBp ZiAoVFlQRV9ORklFTERTICh0eXBlKSkKKysgICAgeworKyAgICAgIGludCBuZmllbGRzID0gVFlQ RV9ORklFTERTICh0eXBlKTsKKysKKysgICAgICBUWVBFX0ZJRUxEUyAobmV3X3R5cGUpCisrICAg ICAgICAgICAgICA9IE9CU1RBQ0tfQ0FMTE9DICgmVFlQRV9PV05FUiAodHlwZSkub2JqZmlsZS0+ b2JqZmlsZV9vYnN0YWNrLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmZpZWxk cywgc3RydWN0IGZpZWxkKTsKKysgICAgICBtZW1jcHkgKFRZUEVfRklFTERTIChuZXdfdHlwZSks IFRZUEVfRklFTERTICh0eXBlKSwKKysgICAgICAgIG5maWVsZHMgKiBzaXplb2YgKHN0cnVjdCBm aWVsZCkpOworKyAgIH0KKysKKyAgIHJldHVybiBuZXdfdHlwZTsKKyB9CisgDAorZGlmZiAtLWdp dCBhL2dkYi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgKK2luZGV4IGJiNjM1MmQuLjU4MThm NzkgMTAwNjQ0CistLS0gYS9nZGIvZ2RidHlwZXMuaAorKysrIGIvZ2RiL2dkYnR5cGVzLmgKK0BA IC02NzAsNiArNjcwLDEwIEBAIHN0cnVjdCBtYWluX3R5cGUKKyAKKyAgICAgICBzdHJ1Y3QgZHlu YW1pY19wcm9wIGhpZ2g7CisgCisrICAgICAgLyogKiBTdHJpZGUgb2YgcmFuZ2UuICAqLworKwor KyAgICAgIHN0cnVjdCBkeW5hbWljX3Byb3Agc3RyaWRlOworKworICAgICAgIC8qIFRydWUgaWYg SElHSCByYW5nZSBib3VuZCBjb250YWlucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZQor IAkgc3VicmFuZ2UuIFRoaXMgYWZmZWN0cyBob3cgdGhlIGZpbmFsIGhpZ2h0IGJvdW5kIGlzIGNv bXB1dGVkLiAgKi8KKyAKK0BAIC03MjUsNiArNzI5LDIzIEBAIHN0cnVjdCBtYWluX3R5cGUKKyAK KyAgICAgc3RydWN0IGZ1bmNfdHlwZSAqZnVuY19zdHVmZjsKKyAgIH0gdHlwZV9zcGVjaWZpYzsK KysKKysgIC8qICogQ29udGFpbnMgYSBsb2NhdGlvbiBkZXNjcmlwdGlvbiB2YWx1ZSBmb3IgdGhl IGN1cnJlbnQgdHlwZS4gRXZhbHVhdGluZworKyAgICAgdGhpcyBmaWVsZCB5aWVsZHMgdG8gdGhl IGxvY2F0aW9uIG9mIHRoZSBkYXRhIGZvciBhbiBvYmplY3QuICAqLworKworKyAgc3RydWN0IGR5 bmFtaWNfcHJvcCAqZGF0YV9sb2NhdGlvbjsKKysKKysgIC8qIFN0cnVjdHVyZSBmb3IgRFdfQVRf YWxsb2NhdGVkLgorKyAgICAgVGhlIHByZXNlbmNlIG9mIHRoaXMgYXR0cmlidXRlIGluZGljYXRl cyB0aGF0IHRoZSBvYmplY3Qgb2YgdGhlIHR5cGUKKysgICAgIGNhbiBiZSBhbGxvY2F0ZWQvZGVh bGxvY2F0ZWQuICBUaGUgdmFsdWUgY2FuIGJlIGEgZHdhcmYgZXhwcmVzc2lvbiwKKysgICAgIHJl ZmVyZW5jZSwgb3IgYSBjb25zdGFudC4gICovCisrICBzdHJ1Y3QgZHluYW1pY19wcm9wICphbGxv Y2F0ZWQ7CisrCisrICAvKiBTdHJ1Y3R1cmUgZm9yIERXX0FUX2Fzc29jaWF0ZWQuCisrICAgICBU aGUgcHJlc2VuY2Ugb2YgdGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVkIHRoYXQgdGhlIG9iamVjdCBv ZiB0aGUgdHlwZQorKyAgICAgY2FuIGJlIGFzc29jaWF0ZWQuICBUaGUgdmFsdWUgY2FuIGJlIGEg ZHdhcmYgZXhwcmVzc2lvbiwKKysgICAgIHJlZmVyZW5jZSwgb3IgYSBjb25zdGFudC4gICovCisr ICBzdHJ1Y3QgZHluYW1pY19wcm9wICphc3NvY2lhdGVkOworIH07CisgCisgLyogKiBBIGBgc3Ry dWN0IHR5cGUnJyBkZXNjcmliZXMgYSBwYXJ0aWN1bGFyIGluc3RhbmNlIG9mIGEgdHlwZSwgd2l0 aAorQEAgLTEyMDMsNiArMTIyNCwzOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90 eXBlIChzdHJ1Y3QgdHlwZSAqKTsKKyAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+aGln aC5raW5kCisgI2RlZmluZSBUWVBFX0xPV19CT1VORF9LSU5EKHJhbmdlX3R5cGUpIFwKKyAgIFRZ UEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93LmtpbmQKKysjZGVmaW5lIFRZUEVfQllURV9T VFJJREUocmFuZ2VfdHlwZSkgXAorKyAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5zdHJp ZGUuZGF0YS5jb25zdF92YWwKKysjZGVmaW5lIFRZUEVfQllURV9TVFJJREVfQkxPQ0socmFuZ2Vf dHlwZSkgXAorKyAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5zdHJpZGUuZGF0YS5sb2Nl eHByCisrI2RlZmluZSBUWVBFX0JZVEVfU1RSSURFX0xPQ0xJU1QocmFuZ2VfdHlwZSkgXAorKyAg VFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5zdHJpZGUuZGF0YS5sb2NsaXN0CisrI2RlZmlu ZSBUWVBFX0JZVEVfU1RSSURFX0tJTkQocmFuZ2VfdHlwZSkgXAorKyAgVFlQRV9SQU5HRV9EQVRB KHJhbmdlX3R5cGUpLT5zdHJpZGUua2luZAorKworKworKy8qIEF0dHJpYnV0ZSBhY2Nlc3NvcnMg Zm9yIHRoZSB0eXBlIGRhdGEgbG9jYXRpb24uICAqLworKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FU SU9OKHRoaXN0eXBlKSBcCisrICBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmRhdGFfbG9jYXRp b24KKysjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTl9CQVRPTih0aGlzdHlwZSkgXAorKyAgVFlQ RV9EQVRBX0xPQ0FUSU9OICh0aGlzdHlwZSktPmRhdGEuYmF0b24KKysjZGVmaW5lIFRZUEVfREFU QV9MT0NBVElPTl9BRERSKHRoaXN0eXBlKSBcCisrICBUWVBFX0RBVEFfTE9DQVRJT04gKHRoaXN0 eXBlKS0+ZGF0YS5jb25zdF92YWwKKysjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTl9LSU5EKHRo aXN0eXBlKSBcCisrICBUWVBFX0RBVEFfTE9DQVRJT04gKHRoaXN0eXBlKS0+a2luZAorKyNkZWZp bmUgVFlQRV9BTExPQ0FURURfUFJPUCh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUp LT5hbGxvY2F0ZWQKKysjZGVmaW5lIFRZUEVfQVNTT0NJQVRFRF9QUk9QKHRoaXN0eXBlKSBUWVBF X01BSU5fVFlQRSh0aGlzdHlwZSktPmFzc29jaWF0ZWQKKysKKysvKiBBbGxvY2F0ZWQgc3RhdHVz IG9mIHR5cGUgb2JqZWN0LiAgSWYgc2V0IHRvIG5vbi16ZXJvIGl0IG1lYW5zIHRoZSBvYmplY3QK KysgICBpcyBhbGxvY2F0ZWQuIEEgemVybyB2YWx1ZSBtZWFucyBpdCBpcyBub3QgYWxsb2NhdGVk LiAgKi8KKysjZGVmaW5lIFRZUEVfTk9UX0FMTE9DQVRFRCh0KSAgKFRZUEVfQUxMT0NBVEVEX1BS T1AgKHQpIFwKKysgICYmIFRZUEVfQUxMT0NBVEVEX1BST1AgKHQpLT5raW5kID09IFBST1BfQ09O U1QgXAorKyAgJiYgIVRZUEVfQUxMT0NBVEVEX1BST1AgKHQpLT5kYXRhLmNvbnN0X3ZhbCkKKysK KysvKiBBc3NvY2lhdGVkIHN0YXR1cyBvZiB0eXBlIG9iamVjdC4gIElmIHNldCB0byBub24temVy byBpdCBtZWFucyB0aGUgb2JqZWN0CisrICAgaXMgYXNzb2NpYXRlZC4gQSB6ZXJvIHZhbHVlIG1l YW5zIGl0IGlzIG5vdCBhc3NvY2lhdGVkLiAgKi8KKysjZGVmaW5lIFRZUEVfTk9UX0FTU09DSUFU RUQodCkgIChUWVBFX0FTU09DSUFURURfUFJPUCAodCkgXAorKyAgJiYgVFlQRV9BU1NPQ0lBVEVE X1BST1AgKHQpLT5raW5kID09IFBST1BfQ09OU1QgXAorKyAgJiYgIVRZUEVfQVNTT0NJQVRFRF9Q Uk9QICh0KS0+ZGF0YS5jb25zdF92YWwpCisgCisgLyogTW90by1zcGVjaWZpYyBzdHVmZiBmb3Ig Rk9SVFJBTiBhcnJheXMuICAqLworIAorQEAgLTEyMTAsNiArMTI2NCw5IEBAIGV4dGVybiB2b2lk IGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOworICAgIFRZUEVfSElHSF9C T1VORF9VTkRFRklORUQoVFlQRV9JTkRFWF9UWVBFKGFycmF5dHlwZSkpCisgI2RlZmluZSBUWVBF X0FSUkFZX0xPV0VSX0JPVU5EX0lTX1VOREVGSU5FRChhcnJheXR5cGUpIFwKKyAgICBUWVBFX0xP V19CT1VORF9VTkRFRklORUQoVFlQRV9JTkRFWF9UWVBFKGFycmF5dHlwZSkpCisrI2RlZmluZSBU WVBFX0FSUkFZX1NUUklERV9JU19VTkRFRklORUQoYXJyYXl0eXBlKSBcCisrICAgKFRZUEVfQllU RV9TVFJJREUoVFlQRV9JTkRFWF9UWVBFKGFycmF5dHlwZSkpID09IDApCisrCisgCisgI2RlZmlu ZSBUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX1ZBTFVFKGFycmF5dHlwZSkgXAorICAgIChUWVBFX0hJ R0hfQk9VTkQoVFlQRV9JTkRFWF9UWVBFKChhcnJheXR5cGUpKSkpCitAQCAtMTY3OCw2ICsxNzM1 LDcgQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZV93aXRoX3N0cmlkZQor IAorIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICos IHN0cnVjdCB0eXBlICosCisgCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICos CisrCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICosCisgCQkJCSAgICAgICBj b25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICopOworIAorIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3Jl YXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCitkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtYWxsb2MtYXNzb2MuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtYWxsb2MtYXNzb2MuZXhwCituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMC4uMjA2MDdjMworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtYWxsb2MtYXNzb2MuZXhwCitAQCAtMCwwICsxLDY1IEBA CisrIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisr IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgInZsYS5m OTAiCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0 ZmlsZX0gJHtzcmNmaWxlfSBcCisrICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKKysgICAgcmV0 dXJuIC0xCisrfQorKworK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKKysgICAgcGVycm9yICJj b3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCisrICAgIGNvbnRpbnVlCisrfQorKwor KyMgQ2hlY2sgdGhlIGFzc29jaWF0aW9uIHN0YXR1cyBvZiB2YXJpb3VzIHR5cGVzIG9mIFZMQSdz CisrIyBhbmQgcG9pbnRlciB0byBWTEEncy4KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAidmxhMS1hbGxvY2F0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2 bGExLWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgbCIgIiA9IFxcLlRSVUVcXC4iIFwKKysg ICJwcmludCB2bGExIGFsbG9jYXRpb24gc3RhdHVzIChhbGxvY2F0ZWQpIgorKworK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgInZsYTItYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwcmludCBsIiAi ID0gXFwuVFJVRVxcLiIgXAorKyAgInByaW50IHZsYTIgYWxsb2NhdGlvbiBzdGF0dXMgKGFsbG9j YXRlZCkiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInB2bGEtYXNz b2NpYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEtYXNzb2NpYXRlZCIK KytnZGJfdGVzdCAicHJpbnQgbCIgIiA9IFxcLlRSVUVcXC4iIFwKKysgICJwcmludCBwdmxhIGFz c29jaWF0ZWQgc3RhdHVzIChhc3NvY2lhdGVkKSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAicHZsYS1yZS1hc3NvY2lhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAicHZsYS1yZS1hc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwcmludCBsIiAiID0gXFwu VFJVRVxcLiIgXAorKyAgInByaW50IHB2bGEgYXNzb2NpYXRlZCBzdGF0dXMgKHJlLWFzc29jaWF0 ZWQpIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLWRlYXNz b2NpYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEtZGVhc3NvY2lhdGVk IgorK2dkYl90ZXN0ICJwcmludCBsIiAiID0gXFwuRkFMU0VcXC4iIFwKKysgICJwcmludCBwdmxh IGFsbG9jYXRpb24gc3RhdHVzIChkZWFzc29jaWF0ZWQpIgorKworK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWRlYWxsb2NhdGVkIl0KKytnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAidmxhMS1kZWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgbCIgIiA9IFxc LkZBTFNFXFwuIiBcCisrICAicHJpbnQgdmxhMSBhbGxvY2F0aW9uIHN0YXR1cyAoZGVhbGxvY2F0 ZWQpIgorK2dkYl90ZXN0ICJwcmludCB2bGExIiAiID0gPG5vdCBhbGxvY2F0ZWQ+IiBcCisrICAi cHJpbnQgZGVhbGxvY2F0ZWQgdmxhMSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAidmxhMi1kZWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg InZsYTItZGVhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5GQUxTRVxcLiIg InByaW50IHZsYTIgZGVhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInByaW50IHZsYTIiICIgPSA8bm90 IGFsbG9jYXRlZD4iICJwcmludCBkZWFsbG9jYXRlZCB2bGEyIgorZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWRhdGF0eXBlcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3ZsYS1kYXRhdHlwZXMuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMC4uMjAyNzZkNgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtZGF0YXR5cGVzLmV4cAorQEAgLTAsMCArMSw4MiBAQAorKyMgQ29weXJpZ2h0 IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgorKworK2lmIHsgW3By ZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0g XAorKyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKysj IGNoZWNrIHRoYXQgYWxsIGZvcnRyYW4gc3RhbmRhcmQgZGF0YXR5cGVzIHdpbGwgYmUKKysjIGhh bmRsZWQgY29ycmVjdGx5IHdoZW4gdXNpbmcgYXMgVkxBJ3MKKysKKytpZiAhW3J1bnRvIE1BSU5f X10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9f IgorKyAgICBjb250aW51ZQorK30KKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAidmxhcy1hbGxvY2F0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGFz LWFsbG9jYXRlZCIKKytnZGJfdGVzdCAibmV4dCIgIiA9IGFsbG9jYXRlZFxcXChyZWFsdmxhXFxc KSIgXAorKyAgIm5leHQgdG8gYWxsb2NhdGlvbiBzdGF0dXMgb2YgaW50dmxhIgorK2dkYl90ZXN0 ICJwcmludCBsIiAiID0gXFwuVFJVRVxcLiIgImludHZsYSBhbGxvY2F0ZWQiCisrZ2RiX3Rlc3Qg Im5leHQiICIgPSBhbGxvY2F0ZWRcXFwoY29tcGxleHZsYVxcXCkiIFwKKysgICJuZXh0IHRvIGFs bG9jYXRpb24gc3RhdHVzIG9mIHJlYWx2bGEiCisrZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5U UlVFXFwuIiAicmVhbHZsYSBhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgIm5leHQiICIgPSBhbGxvY2F0 ZWRcXFwobG9naWNhbHZsYVxcXCkiIFwKKysgICJuZXh0IHRvIGFsbG9jYXRpb24gc3RhdHVzIG9m IGNvbXBsZXh2bGEiCisrZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5UUlVFXFwuIiAiY29tcGxl eHZsYSBhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgIm5leHQiICIgPSBhbGxvY2F0ZWRcXFwoY2hhcmFj dGVydmxhXFxcKSIgXAorKyAgIm5leHQgdG8gYWxsb2NhdGlvbiBzdGF0dXMgb2YgbG9naWNhbHZs YSIKKytnZGJfdGVzdCAicHJpbnQgbCIgIiA9IFxcLlRSVUVcXC4iICJsb2dpY2FsdmxhIGFsbG9j YXRlZCIKKytnZGJfdGVzdCAibmV4dCIgImludHZsYVxcXCg6LDosOlxcXCkgPSAxIiBcCisrICAi bmV4dCB0byBhbGxvY2F0aW9uIHN0YXR1cyBvZiBjaGFyYWN0ZXJ2bGEiCisrZ2RiX3Rlc3QgInBy aW50IGwiICIgPSBcXC5UUlVFXFwuIiAiY2hhcmFjdGVydmxhIGFsbG9jYXRlZCIKKysKKytnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhcy1pbml0aWFsaXplZCJdCisrZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYXMtaW5pdGlhbGl6ZWQiCisrZ2RiX3Rlc3QgInB0 eXBlIGludHZsYSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkgXFxcKDExLDIyLDMzXFxc KSIgXAorKyAgInB0eXBlIGludHZsYSIKKytnZGJfdGVzdCAicHR5cGUgcmVhbHZsYSIgInR5cGUg PSByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDExLDIyLDMzXFxcKSIgXAorKyAgInB0eXBlIHJlYWx2 bGEiCisrZ2RiX3Rlc3QgInB0eXBlIGNvbXBsZXh2bGEiICJ0eXBlID0gY29tcGxleFxcXChraW5k PTRcXFwpIFxcXCgxMSwyMiwzM1xcXCkiIFwKKysgICJwdHlwZSBjb21wbGV4dmxhIgorK2dkYl90 ZXN0ICJwdHlwZSBsb2dpY2FsdmxhIiAidHlwZSA9IGxvZ2ljYWxcXFwoa2luZD00XFxcKSBcXFwo MTEsMjIsMzNcXFwpIiBcCisrICAicHR5cGUgbG9naWNhbHZsYSIKKytnZGJfdGVzdCAicHR5cGUg Y2hhcmFjdGVydmxhIiAidHlwZSA9IGNoYXJhY3RlclxcXCoxIFxcXCgxMSwyMiwzM1xcXCkiIFwK KysgICJwdHlwZSBjaGFyYWN0ZXJ2bGEiCisrCisrZ2RiX3Rlc3QgInByaW50IGludHZsYSg1LDUs NSkiICIgPSAxIiAicHJpbnQgaW50dmxhKDUsNSw1KSAoMXN0KSIKKytnZGJfdGVzdCAicHJpbnQg cmVhbHZsYSg1LDUsNSkiICIgPSAzLjE0XFxkKyIgXAorKyAgInByaW50IHJlYWx2bGEoNSw1LDUp ICgxc3QpIgorK2dkYl90ZXN0ICJwcmludCBjb21wbGV4dmxhKDUsNSw1KSIgIiA9IFxcXCgyLC0z XFxcKSIgXAorKyAgInByaW50IGNvbXBsZXh2bGEoNSw1LDUpICgxc3QpIgorK2dkYl90ZXN0ICJw cmludCBsb2dpY2FsdmxhKDUsNSw1KSIgIiA9IFxcLlRSVUVcXC4iIFwKKysgICJwcmludCBsb2dp Y2FsdmxhKDUsNSw1KSAoMXN0KSIKKytnZGJfdGVzdCAicHJpbnQgY2hhcmFjdGVydmxhKDUsNSw1 KSIgIiA9ICdLJyIgXAorKyAgInByaW50IGNoYXJhY3RlcnZsYSg1LDUsNSkgKDFzdCkiCisrCisr Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYXMtbW9kaWZpZWQiXQorK2dk Yl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGFzLW1vZGlmaWVkIgorK2dkYl90ZXN0ICJwcmlu dCBpbnR2bGEoNSw1LDUpIiAiID0gNDIiICJwcmludCBpbnR2bGEoNSw1LDUpICgybmQpIgorK2dk Yl90ZXN0ICJwcmludCByZWFsdmxhKDUsNSw1KSIgIiA9IDQuMTNcXGQrIiBcCisrICAicHJpbnQg cmVhbHZsYSg1LDUsNSkgKDJuZCkiCisrZ2RiX3Rlc3QgInByaW50IGNvbXBsZXh2bGEoNSw1LDUp IiAiID0gXFxcKC0zLDJcXFwpIiBcCisrICAicHJpbnQgY29tcGxleHZsYSg1LDUsNSkgKDJuZCki CisrZ2RiX3Rlc3QgInByaW50IGxvZ2ljYWx2bGEoNSw1LDUpIiAiID0gXFwuRkFMU0VcXC4iIFwK KysgICJwcmludCBsb2dpY2FsdmxhKDUsNSw1KSAoMm5kKSIKKytnZGJfdGVzdCAicHJpbnQgY2hh cmFjdGVydmxhKDUsNSw1KSIgIiA9ICdYJyIgXAorKyAgInByaW50IGNoYXJhY3RlcnZsYSg1LDUs NSkgKDJuZCkiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZGF0 YXR5cGVzLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWRhdGF0eXBlcy5mOTAK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5iMTE4NzlhCistLS0gL2Rldi9u dWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1kYXRhdHlwZXMuZjkwCitA QCAtMCwwICsxLDUxIEBACisrISBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyshIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y CisrISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyEKKyshIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor KyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrISBGb3VuZGF0aW9uLCBJbmMuLCA1 OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgor KworK3Byb2dyYW0gdmxhX3ByaW1pdGl2ZXMKKysgIGludGVnZXIsIGFsbG9jYXRhYmxlICAgIDo6 IGludHZsYSg6LCA6LCA6KQorKyAgcmVhbCwgYWxsb2NhdGFibGUgICAgICAgOjogcmVhbHZsYSg6 LCA6LCA6KQorKyAgY29tcGxleCwgYWxsb2NhdGFibGUgICAgOjogY29tcGxleHZsYSg6LCA6LCA6 KQorKyAgbG9naWNhbCwgYWxsb2NhdGFibGUgICAgOjogbG9naWNhbHZsYSg6LCA6LCA6KQorKyAg Y2hhcmFjdGVyLCBhbGxvY2F0YWJsZSAgOjogY2hhcmFjdGVydmxhKDosIDosIDopCisrICBsb2dp Y2FsICAgICAgICAgICAgICAgICA6OiBsCisrCisrICBhbGxvY2F0ZSAoaW50dmxhICgxMSwyMiwz MykpCisrICBhbGxvY2F0ZSAocmVhbHZsYSAoMTEsMjIsMzMpKQorKyAgYWxsb2NhdGUgKGNvbXBs ZXh2bGEgKDExLDIyLDMzKSkKKysgIGFsbG9jYXRlIChsb2dpY2FsdmxhICgxMSwyMiwzMykpCisr ICBhbGxvY2F0ZSAoY2hhcmFjdGVydmxhICgxMSwyMiwzMykpCisrCisrICBsID0gYWxsb2NhdGVk KGludHZsYSkgICAgICAgICAgICAgICAgICAgISB2bGFzLWFsbG9jYXRlZAorKyAgbCA9IGFsbG9j YXRlZChyZWFsdmxhKQorKyAgbCA9IGFsbG9jYXRlZChjb21wbGV4dmxhKQorKyAgbCA9IGFsbG9j YXRlZChsb2dpY2FsdmxhKQorKyAgbCA9IGFsbG9jYXRlZChjaGFyYWN0ZXJ2bGEpCisrCisrICBp bnR2bGEoOiw6LDopID0gMQorKyAgcmVhbHZsYSg6LDosOikgPSAzLjE0CisrICBjb21wbGV4dmxh KDosOiw6KSA9IGNtcGx4KDIuMCwtMy4wKQorKyAgbG9naWNhbHZsYSg6LDosOikgPSAuVFJVRS4K KysgIGNoYXJhY3RlcnZsYSg6LDosOikgPSBjaGFyKDc1KQorKworKyAgaW50dmxhKDUsNSw1KSA9 IDQyICAgICAgICAgICAgICAgICAgICAgICEgdmxhcy1pbml0aWFsaXplZAorKyAgcmVhbHZsYSg1 LDUsNSkgPSA0LjEzCisrICBjb21wbGV4dmxhKDUsNSw1KSA9IGNtcGx4KC0zLjAsMi4wKQorKyAg bG9naWNhbHZsYSg1LDUsNSkgPSAuRkFMU0UuCisrICBjaGFyYWN0ZXJ2bGEoNSw1LDUpID0gJ1gn CisrCisrICAhIGR1bW15IHN0YXRlbWVudCBmb3IgYnAKKysgIGwgPSAuRkFMU0UuICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAhIHZsYXMtbW9kaWZpZWQKKytlbmQgcHJvZ3JhbSB2bGFfcHJp bWl0aXZlcworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1bmMu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5leHAKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5mMGYyMzZiCistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1mdW5jLmV4cAorQEAgLTAsMCArMSw2MSBAQAor KyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgor KworK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9 ICR7c3JjZmlsZX0gXAorKyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7CisrICAgIHJldHVybiAt MQorK30KKysKKytpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRu J3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgorKyAgICBjb250aW51ZQorK30KKysKKysjIENo ZWNrIFZMQSBwYXNzZWQgdG8gZmlyc3QgRm9ydHJhbiBmdW5jdGlvbi4KKytnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAiZnVuYzEtdmxhLXBhc3NlZCJdCisrZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImZ1bmMxLXZsYS1wYXNzZWQiCisrZ2RiX3Rlc3QgInByaW50IHZsYSIg IiA9IFxcKCAqXFwoICoyMiwgKjIyLCAqMjIsXFsoKTIyLCAuXF0qXFwpIiBcCisrICAicHJpbnQg dmxhIChmdW5jMSkiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtp bmQ9NFxcXCkgXFxcKDEwLDEwXFxcKSIgXAorKyAgInB0eXBlIHZsYSAoZnVuYzEpIgorKworK2dk Yl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmdW5jMS12bGEtbW9kaWZpZWQiXQor K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJmdW5jMS12bGEtbW9kaWZpZWQiCisrZ2RiX3Rl c3QgInByaW50IHZsYSg1LDUpIiAiID0gNTUiICJwcmludCB2bGEoNSw1KSAoZnVuYzEpIgorK2dk Yl90ZXN0ICJwcmludCB2bGEoNyw3KSIgIiA9IDc3IiAicHJpbnQgdmxhKDUsNSkgKGZ1bmMxKSIK KysKKysjIENoZWNrIGlmIHRoZSB2YWx1ZXMgYXJlIGNvcnJlY3QgYWZ0ZXIgcmV0dXJuaW5nIGZy b20gZnVuYzEKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZnVuYzEtcmV0 dXJuZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJmdW5jMS1yZXR1cm5lZCIKKytn ZGJfdGVzdCAicHJpbnQgcmV0IiAiID0gLlRSVUUuIiAicHJpbnQgcmV0IGFmdGVyIGZ1bmMxIHJl dHVybmVkIgorKworKyMgQ2hlY2sgVkxBIHBhc3NlZCB0byBzZWNvbmQgRm9ydHJhbiBmdW5jdGlv bgorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmdW5jMi12bGEtcGFzc2Vk Il0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiZnVuYzItdmxhLXBhc3NlZCIKKytnZGJf dGVzdCAicHJpbnQgdmxhIiBcCisrICAiID0gXFxcKDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0 LCA0NCwgNDQsIDQ0XFxcKSIgXAorKyAgInByaW50IHZsYSAoZnVuYzIpIgorK2dkYl90ZXN0ICJw dHlwZSB2bGEiICJ0eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIFxcXCgxMFxcXCkiIFwKKysg ICJwdHlwZSB2bGEgKGZ1bmMyKSIKKysKKysjIENoZWNrIGlmIHRoZSByZXR1cm5lZCBWTEEgaGFz IHRoZSBjb3JyZWN0IHZhbHVlcyBhbmQgcHR5cGUuCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgImZ1bmMyLXJldHVybmVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAiZnVuYzItcmV0dXJuZWQiCisrZ2RiX3Rlc3QgInByaW50IHZsYTMiICIgPSBcXFwoMSwgMiwg NDQsIDQsIDQ0LCA0NCwgNDQsIDgsIDQ0LCA0NFxcXCkiIFwKKysgICJwcmludCB2bGEzIChhZnRl ciBmdW5jMikiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTMiICJ0eXBlID0gaW50ZWdlclxcXChraW5k PTRcXFwpIFxcXCgxMFxcXCkiIFwKKysgICJwdHlwZSB2bGEzIChhZnRlciBmdW5jMikiCitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5mOTAgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1mdW5jLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu ZGV4IDAwMDAwMDAuLjRmNDVkYTEKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vdmxhLWZ1bmMuZjkwCitAQCAtMCwwICsxLDcxIEBACisrISBDb3B5cmlnaHQg MjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyshCisrISBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor KyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKyshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIQorKyEgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysh IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlCisrISBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJv c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKworK2xvZ2ljYWwgZnVuY3Rpb24gZnVuYzEgKHZs YSkKKysgIGltcGxpY2l0IG5vbmUKKysgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IHZsYSAoOiwg OikKKysgIGZ1bmMxID0gYWxsb2NhdGVkKHZsYSkKKysgIHZsYSg1LDUpID0gNTUgICAgICAgICAg ICAgICAhIGZ1bmMxLXZsYS1wYXNzZWQKKysgIHZsYSg3LDcpID0gNzcKKysgIHJldHVybiAgICAg ICAgICAgICAgICAgICAgICAhIGZ1bmMxLXZsYS1tb2RpZmllZAorK2VuZCBmdW5jdGlvbiBmdW5j MQorKworK2Z1bmN0aW9uIGZ1bmMyKHZsYSkKKysgIGltcGxpY2l0IG5vbmUKKysgIGludGVnZXIg OjogdmxhICg6KQorKyAgaW50ZWdlciA6OiBmdW5jMihzaXplKHZsYSkpCisrICBpbnRlZ2VyIDo6 IGsKKysKKysgIHZsYSgxKSA9IDEgICAgICAgICAgICAgICAgICAgICEgZnVuYzItdmxhLXBhc3Nl ZAorKyAgdmxhKDIpID0gMgorKyAgdmxhKDQpID0gNAorKyAgdmxhKDgpID0gOAorKworKyAgZnVu YzIgPSB2bGEKKytlbmQgZnVuY3Rpb24gZnVuYzIKKysKKytwcm9ncmFtIHZsYV9mdW5jCisrICBp bXBsaWNpdCBub25lCisrICBpbnRlcmZhY2UKKysgICAgbG9naWNhbCBmdW5jdGlvbiBmdW5jMSAo dmxhKQorKyAgICAgIGludGVnZXIgOjogdmxhICg6LCA6KQorKyAgICBlbmQgZnVuY3Rpb24KKysg IGVuZCBpbnRlcmZhY2UKKysgIGludGVyZmFjZQorKyAgICBmdW5jdGlvbiBmdW5jMiAodmxhKQor KyAgICAgIGludGVnZXIgOjogdmxhICg6KQorKyAgICAgIGludGVnZXIgZnVuYzIoc2l6ZSh2bGEp KQorKyAgICBlbmQgZnVuY3Rpb24KKysgIGVuZCBpbnRlcmZhY2UKKysKKysgIGxvZ2ljYWwgOjog cmV0CisrICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiB2bGExICg6LCA6KQorKyAgaW50ZWdlciwg YWxsb2NhdGFibGUgOjogdmxhMiAoOikKKysgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IHZsYTMg KDopCisrCisrICByZXQgPSAuRkFMU0UuCisrCisrICBhbGxvY2F0ZSAodmxhMSAoMTAsMTApKQor KyAgdmxhMSg6LDopID0gMjIKKysKKysgIGFsbG9jYXRlICh2bGEyICgxMCkpCisrICB2bGEyKDop ID0gNDQKKysKKysgIHJldCA9IGZ1bmMxKHZsYTEpCisrICB2bGEzID0gZnVuYzIodmxhMikgICAg ICAgICAgISBmdW5jMS1yZXR1cm5lZAorKworKyAgcmV0ID0gLlRSVUUuICAgICAgICAgICAgICAg ICEgZnVuYzItcmV0dXJuZWQKKytlbmQgcHJvZ3JhbSB2bGFfZnVuYworZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWhpc3RvcnkuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEtaGlzdG9yeS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwLi4xNzBlMWViCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3ZsYS1oaXN0b3J5LmV4cAorQEAgLTAsMCArMSw2MiBAQAorKyMgQ29weXJpZ2h0IDIw MTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlICJ2bGEuZjkwIgorKworK2lmIHsgW3By ZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0g XAorKyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytp ZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJy ZWFrcG9pbnQgTUFJTl9fIgorKyAgICBjb250aW51ZQorK30KKysKKysjIFNldCBzb21lIGJyZWFr cG9pbnRzIGFuZCBwcmludCBjb21wbGV0ZSB2bGEuCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgInZsYTEtaW5pdCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZs YTEtaW5pdCIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSIgIiA9IDxub3QgYWxsb2NhdGVkPiIgInBy aW50IG5vbi1hbGxvY2F0ZWQgdmxhMSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAidmxhMi1hbGxvY2F0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2 bGEyLWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSIgIiA9IFxcKCAqXFwoICpcXCgg KjAsICowLCAqMCxcWygpMCwgLlxdKlxcKSIgXAorKyAgInByaW50IHZsYTEgYWxsb2NhdGVkIgor K2dkYl90ZXN0ICJwcmludCB2bGEyIiAiID0gXFwoICpcXCggKlxcKCAqMCwgKjAsICowLFxbKCkw LCAuXF0qXFwpIiBcCisrICAicHJpbnQgdmxhMiBhbGxvY2F0ZWQiCisrCisrZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAidmxhMS1maWxsZWQiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEiIFwKKysgICIg PSBcXCggKlxcKCAqXFwoICoxMzExLCAqMTMxMSwgKjEzMTEsXFsoKTEzMTEsIC5cXSpcXCkiIFwK KysgICJwcmludCB2bGExIGZpbGxlZCIKKysKKysjIFRyeSB0byBhY2Nlc3MgaGlzdG9yeSB2YWx1 ZXMgZm9yIGZ1bGwgdmxhIHByaW50cy4KKytnZGJfdGVzdCAicHJpbnQgXCQxIiAiID0gPG5vdCBh bGxvY2F0ZWQ+IiAicHJpbnQgXCQxIgorK2dkYl90ZXN0ICJwcmludCBcJDIiICIgPSBcXCggKlxc KCAqXFwoICowLCAqMCwgKjAsXFsoKTAsIC5cXSpcXCkiIFwKKysgICJwcmludCBcJDIiCisrZ2Ri X3Rlc3QgInByaW50IFwkMyIgIiA9IFxcKCAqXFwoICpcXCggKjAsICowLCAqMCxcWygpMCwgLlxd KlxcKSIgXAorKyAgInByaW50IFwkMyIKKytnZGJfdGVzdCAicHJpbnQgXCQ0IiBcCisrICAiID0g XFwoICpcXCggKlxcKCAqMTMxMSwgKjEzMTEsICoxMzExLFxbKCkxMzExLCAuXF0qXFwpIiAicHJp bnQgXCQ0IgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWZp bGxlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTItZmlsbGVkIgorK2dkYl90 ZXN0ICJwcmludCB2bGEyKDEsNDMsMjApIiAiID0gMTMxMSIgInByaW50IHZsYTIoMSw0MywyMCki CisrZ2RiX3Rlc3QgInByaW50IHZsYTEoMSwzLDgpIiAiID0gMTAwMSIgInByaW50IHZsYTIoMSwz LDgpIgorKworKyMgVHJ5IHRvIGFjY2VzcyBoaXN0b3J5IHZhbHVlcyBmb3IgdmxhIHZhbHVlcy4K KytnZGJfdGVzdCAicHJpbnQgXCQ5IiAiID0gMTMxMSIgInByaW50IFwkOSIKKytnZGJfdGVzdCAi cHJpbnQgXCQxMCIgIiA9IDEwMDEiICJwcmludCBcJDEwIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXB0eXBlLXN1Yi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3ZsYS1wdHlwZS1zdWIuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMC4uMmVlMjkxNAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi92bGEtcHR5cGUtc3ViLmV4cAorQEAgLTAsMCArMSw4NyBAQAorKyMgQ29weXJpZ2h0IDIw MTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlICJ2bGEtc3ViLmY5MCIKKysKKytpZiB7 IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2Zp bGV9IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1dIH0geworKyAgICByZXR1cm4gLTEKKyt9Cisr CisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0 byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisrIyBQYXNzIGZpeGVk IGFycmF5IHRvIGZ1bmN0aW9uIGFuZCBoYW5kbGUgdGhlbSBhcyB2bGEgaW4gZnVuY3Rpb24uCisr Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm5vdC1maWxsZWQiXQorK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJub3QtZmlsbGVkICgxc3QpIgorK2dkYl90ZXN0ICJwdHlw ZSBhcnJheTEiICJ0eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIFxcXCg0Miw0MlxcXCkiIFwK KysgICJwdHlwZSBhcnJheTEgKHBhc3NlZCBmaXhlZCkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5 MiIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDQyLDQyLDQyXFxcKSIgXAorKyAgInB0 eXBlIGFycmF5MiAocGFzc2VkIGZpeGVkKSIKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkxKDQwLCAx MCkiICJ0eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIiBcCisrICAicHR5cGUgYXJyYXkxKDQw LCAxMCkgKHBhc3NlZCBmaXhlZCkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5MigxMywgMTEsIDUp IiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSIgXAorKyAgInB0eXBlIGFycmF5MigxMywgMTEs IDUpIChwYXNzZWQgZml4ZWQpIgorKworKyMgUGFzcyBzdWIgYXJyYXlzIHRvIGZ1bmN0aW9uIGFu ZCBoYW5kbGUgdGhlbSBhcyB2bGEgaW4gZnVuY3Rpb24uCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgIm5vdC1maWxsZWQgKDJuZCkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5MSIgInR5cGUg PSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkgXFxcKDYsNlxcXCkiIFwKKysgICJwdHlwZSBhcnJheTEg KHBhc3NlZCBzdWItYXJyYXkpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIiICJ0eXBlID0gcmVh bFxcXChraW5kPTRcXFwpIFxcXCg2LDYsNlxcXCkiIFwKKysgICJwdHlwZSBhcnJheTIgKHBhc3Nl ZCBzdWItYXJyYXkpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTEoMywgMykiICJ0eXBlID0gaW50 ZWdlclxcXChraW5kPTRcXFwpIiBcCisrICAicHR5cGUgYXJyYXkxKDMsIDMpIChwYXNzZWQgc3Vi LWFycmF5KSIKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkyKDQsIDQsIDQpIiAidHlwZSA9IHJlYWxc XFwoa2luZD00XFxcKSIgXAorKyAgInB0eXBlIGFycmF5Mig0LCA0LCA0KSAocGFzc2VkIHN1Yi1h cnJheSkiCisrCisrIyBDaGVjayBwdHlwZSBvdXRzaWRlIG9mIGJvdW5kcy4gVGhpcyBzaG91bGQg bm90IGNyYXNoIEdEQi4KKytnZGJfdGVzdCAicHR5cGUgYXJyYXkxKDEwMCwgMTAwKSIgIm5vIHN1 Y2ggdmVjdG9yIGVsZW1lbnQiIFwKKysgICJwdHlwZSBhcnJheTEoMTAwLCAxMDApIHN1YmFycmF5 IGRvIG5vdCBjcmFzaCAocGFzc2VkIHN1Yi1hcnJheSkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5 MigxMDAsIDEwMCwgMTAwKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiIFwKKysgICJwdHlwZSBh cnJheTIoMTAwLCAxMDAsIDEwMCkgc3ViYXJyYXkgZG8gbm90IGNyYXNoIChwYXNzZWQgc3ViLWFy cmF5KSIKKysKKysjIFBhc3MgdmxhIHRvIGZ1bmN0aW9uLgorK2dkYl9jb250aW51ZV90b19icmVh a3BvaW50ICJub3QtZmlsbGVkICgzcmQpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTEiICJ0eXBl ID0gaW50ZWdlclxcXChraW5kPTRcXFwpIFxcXCgyMCwyMFxcXCkiIFwKKysgICJwdHlwZSBhcnJh eTEgKHBhc3NlZCB2bGEpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIiICJ0eXBlID0gcmVhbFxc XChraW5kPTRcXFwpIFxcXCgxMCwxMCwxMFxcXCkiIFwKKysgICJwdHlwZSBhcnJheTIgKHBhc3Nl ZCB2bGEpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTEoMywgMykiICJ0eXBlID0gaW50ZWdlclxc XChraW5kPTRcXFwpIiBcCisrICAicHR5cGUgYXJyYXkxKDMsIDMpIChwYXNzZWQgdmxhKSIKKytn ZGJfdGVzdCAicHR5cGUgYXJyYXkyKDQsIDQsIDQpIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxc KSIgXAorKyAgInB0eXBlIGFycmF5Mig0LCA0LCA0KSAocGFzc2VkIHZsYSkiCisrCisrIyBDaGVj ayBwdHlwZSBvdXRzaWRlIG9mIGJvdW5kcy4gVGhpcyBzaG91bGQgbm90IGNyYXNoIEdEQi4KKytn ZGJfdGVzdCAicHR5cGUgYXJyYXkxKDEwMCwgMTAwKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQi IFwKKysgICJwdHlwZSBhcnJheTEoMTAwLCAxMDApIFZMQSBkbyBub3QgY3Jhc2ggKHBhc3NlZCB2 bGEpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIoMTAwLCAxMDAsIDEwMCkiICJubyBzdWNoIHZl Y3RvciBlbGVtZW50IiBcCisrICAicHR5cGUgYXJyYXkyKDEwMCwgMTAwLCAxMDApIFZMQSBkbyBu b3QgY3Jhc2ggKHBhc3NlZCB2bGEpIgorKworKyMgUGFzcyBmaXhlZCBhcnJheSB0byBmdW5jdGlv biBhbmQgaGFuZGxlIGl0IGFzIFZMQSBvZiBhcmJpdHJhcnkgbGVuZ3RoIGluCisrIyBmdW5jdGlv bi4KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZW5kLW9mLWJhciJdCisr Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImVuZC1vZi1iYXIiCisrZ2RiX3Rlc3QgInB0eXBl IGFycmF5MSIgXAorKyAgInR5cGUgPSAoUFRSIFRPIC0+IFxcKCApP2ludGVnZXIoXFwoa2luZD00 XFwpfFxcKjQpIFxcKFxcKlxcKVxcKT8iIFwKKysgICJwdHlwZSBhcnJheTEgKGFyYml0cmFyeSBs ZW5ndGgpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIiIFwKKysgICJ0eXBlID0gKFBUUiBUTyAt PiBcXCggKT9pbnRlZ2VyKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg0OjksMTA6XFwqXFwpXFwpPyIg XAorKyAgInB0eXBlIGFycmF5MiAoYXJiaXRyYXJ5IGxlbmd0aCkiCisrZ2RiX3Rlc3QgInB0eXBl IGFycmF5MSgxMDApIiAidHlwZSA9IGludGVnZXJcXFwoa2luZD00XFxcKSIgXAorKyAgInB0eXBl IGFycmF5MSgxMDApIChhcmJpdHJhcnkgbGVuZ3RoKSIKKytnZGJfdGVzdCAicHR5cGUgYXJyYXky KDQsMTAwKSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkiIFwKKysgICJwdHlwZSBhcnJh eTIoNCwxMDApIChhcmJpdHJhcnkgbGVuZ3RoKSIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3Zs YS1wdHlwZS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi45MjY3NzIz CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlw ZS5leHAKK0BAIC0wLDAgKzEsOTYgQEAKKysjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytz dGFuZGFyZF90ZXN0ZmlsZSAidmxhLmY5MCIKKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5n ICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5 MCBxdWlldH1dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgIVtydW50byBNQUlOX19d IHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIK KysgICAgY29udGludWUKKyt9CisrCisrIyBDaGVjayB0aGUgcHR5cGUgb2YgdmFyaW91cyBWTEEg c3RhdGVzIGFuZCBwb2ludGVyIHRvIFZMQSdzLgorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJ2bGExLWluaXQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEx LWluaXQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTEiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAi cHR5cGUgdmxhMSBub3QgaW5pdGlhbGl6ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTIiICJ0eXBl ID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmxhMiBub3QgaW5pdGlhbGl6ZWQiCisrZ2RiX3Rl c3QgInB0eXBlIHB2bGEiICJ0eXBlID0gPG5vdCBhc3NvY2lhdGVkPiIgInB0eXBlIHB2bGEgbm90 IGluaXRpYWxpemVkIgorK2dkYl90ZXN0ICJwdHlwZSB2bGExKDMsIDYsIDkpIiAibm8gc3VjaCB2 ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKKysgICJwdHlwZSB2bGExKDMs IDYsIDkpIG5vdCBpbml0aWFsaXplZCIKKytnZGJfdGVzdCAicHR5cGUgdmxhMig1LCA0NSwgMjAp IiBcCisrICAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwK KysgICJwdHlwZSB2bGExKDUsIDQ1LCAyMCkgbm90IGluaXRpYWxpemVkIgorKworK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2bGEx IiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSBcXFwoMTAsMTAsMTBcXFwpIiBcCisrICAicHR5 cGUgdmxhMSBhbGxvY2F0ZWQiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgInZsYTItYWxsb2NhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMi1h bGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTIiICJ0eXBlID0gcmVhbFxcXChraW5kPTRc XFwpIFxcXCg3LDQyOjUwLDEzOjM1XFxcKSIgXAorKyAgInB0eXBlIHZsYTIgYWxsb2NhdGVkIgor KworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWZpbGxlZCJdCisr Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtZmlsbGVkIgorK2dkYl90ZXN0ICJwdHlw ZSB2bGExIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSBcXFwoMTAsMTAsMTBcXFwpIiBcCisr ICAicHR5cGUgdmxhMSBmaWxsZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTEoMywgNiwgOSkiICJ0 eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIiBcCisrICAicHR5cGUgdmxhMSgzLCA2LCA5KSIKKysK KytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMi1maWxsZWQiXQorK2dk Yl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEyLWZpbGxlZCIKKytnZGJfdGVzdCAicHR5cGUg dmxhMiIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDcsNDI6NTAsMTM6MzVcXFwpIiBc CisrICAicHR5cGUgdmxhMiBmaWxsZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTIoNSwgNDUsIDIw KSIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkiIFwKKysgICJwdHlwZSB2bGExKDUsIDQ1LCAy MCkgZmlsbGVkIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxh LWFzc29jaWF0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWFzc29jaWF0 ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHB2bGEiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIFxc XCgxMCwxMCwxMFxcXCkiIFwKKysgICJwdHlwZSBwdmxhIGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3Qg InB0eXBlIHB2bGEoMywgNiwgOSkiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIiBcCisrICAi cHR5cGUgcHZsYSgzLCA2LCA5KSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAicHZsYS1yZS1hc3NvY2lhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi cHZsYS1yZS1hc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSBwdmxhIiAidHlwZSA9IHJlYWxc XFwoa2luZD00XFxcKSBcXFwoNyw0Mjo1MCwxMzozNVxcXCkiIFwKKysgICJwdHlwZSBwdmxhIHJl LWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTIoNSwgNDUsIDIwKSIgInR5cGUgPSBy ZWFsXFxcKGtpbmQ9NFxcXCkiIFwKKysgICJwdHlwZSB2bGExKDUsIDQ1LCAyMCkgcmUtYXNzb2Np YXRlZCIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1kZWFz c29jaWF0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWRlYXNzb2NpYXRl ZCIKKytnZGJfdGVzdCAicHR5cGUgcHZsYSIgInR5cGUgPSA8bm90IGFzc29jaWF0ZWQ+IiAicHR5 cGUgcHZsYSBkZWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHB2bGEoNSwgNDUsIDIwKSIg XAorKyAgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYXNzb2NpYXRlZCIgXAor KyAgInB0eXBlIHB2bGEoNSwgNDUsIDIwKSBub3QgYXNzb2NpYXRlZCIKKysKKytnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1kZWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtZGVhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZs YTEiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmxhMSBub3QgYWxsb2NhdGVkIgor K2dkYl90ZXN0ICJwdHlwZSB2bGExKDMsIDYsIDkpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBi ZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKKysgICJwdHlwZSB2bGExKDMsIDYsIDkpIG5vdCBhbGxv Y2F0ZWQiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTItZGVh bGxvY2F0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEyLWRlYWxsb2NhdGVk IgorK2dkYl90ZXN0ICJwdHlwZSB2bGEyIiAidHlwZSA9IDxub3QgYWxsb2NhdGVkPiIgInB0eXBl IHZsYTIgbm90IGFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHR5cGUgdmxhMig1LCA0NSwgMjApIiBc CisrICAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKKysg ICJwdHlwZSB2bGEyKDUsIDQ1LCAyMCkgbm90IGFsbG9jYXRlZCIKK2RpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zaXplb2YuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtc2l6ZW9mLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAw MDAuLjYwNTNjMTcKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vdmxhLXNpemVvZi5leHAKK0BAIC0wLDAgKzEsNDYgQEAKKysjIENvcHlyaWdodCAyMDE0IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKysKKytzdGFuZGFyZF90ZXN0ZmlsZSAidmxhLmY5MCIKKysKKytpZiB7IFtwcmVwYXJl X2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKysg ICAge2RlYnVnIGY5MCBxdWlldH1dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgIVty dW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3Bv aW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVl cyBpbiBub24gYWxsb2NhdGVkIFZMQQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJ2bGExLWluaXQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWluaXQi CisrZ2RiX3Rlc3QgInByaW50IHNpemVvZih2bGExKSIgIiA9IDAiICJwcmludCBzaXplb2Ygbm9u LWFsbG9jYXRlZCB2bGExIgorKworKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZSBpbiBhbGxvY2F0ZWQg VkxBCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTItYWxsb2NhdGVk Il0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMi1hbGxvY2F0ZWQiCisrZ2RiX3Rl c3QgInByaW50IHNpemVvZih2bGExKSIgIiA9IDQwMDAiICJwcmludCBzaXplb2YgYWxsb2NhdGVk IHZsYTEiCisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiB1bmRlZmluZWQgcG9pbnRlciB0 byBWTEEgKGRhbmdsaW5nKQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2 bGExLWZpbGxlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtZmlsbGVkIgor K2dkYl90ZXN0ICJwcmludCBzaXplb2YocHZsYSkiICIgPSAwIiAicHJpbnQgc2l6ZW9mIG5vbi1h c3NvY2lhdGVkIHB2bGEiCisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiBwb2ludGVyIHRv IFZMQSBhbmQgY29tcGFyZSB0aGVtCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgInB2bGEtYXNzb2NpYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2bGEt YXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgc2l6ZW9mKHB2bGEpIiAiID0gNDAwMCIgInBy aW50IHNpemVvZiBhc3NvY2lhdGVkIHB2bGEiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEtc3RyaWRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LXN0cmlkZS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lNzkxMTE1 CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJp ZGUuZXhwCitAQCAtMCwwICsxLDUxIEBACisrIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisr c3RhbmRhcmRfdGVzdGZpbGUgIi5mOTAiCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAk e3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCisrICAgIHtkZWJ1ZyBmOTAg cXVpZXR9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG8gTUFJTl9fXSB0 aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCisr ICAgIGNvbnRpbnVlCisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJyZXZlcnNlLWVsZW1lbnRzIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicmV2ZXJz ZS1lbGVtZW50cyIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxcXCgxMCwgOSwgOCwgNywg NiwgNSwgNCwgMywgMiwgMVxcXCkiIFwKKysgICJwcmludCByZXZlcnNlLWVsZW1lbnRzIgorK2dk Yl90ZXN0ICJwcmludCBwdmxhKDEpIiAiID0gMTAiICJwcmludCBmaXJzdCByZXZlcnNlLWVsZW1l bnQiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoMTApIiAiID0gMSIgInByaW50IGxhc3QgcmV2ZXJz ZS1lbGVtZW50IgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJyZS1y ZXZlcnNlLWVsZW1lbnRzIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicmUtcmV2ZXJz ZS1lbGVtZW50cyIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxcXCgxLCAyLCAzLCA0LCA1 LCA2LCA3LCA4LCA5LCAxMFxcXCkiIFwKKysgICJwcmludCByZS1yZXZlcnNlLWVsZW1lbnRzIgor K2dkYl90ZXN0ICJwcmludCBwdmxhKDEpIiAiID0gMSIgInByaW50IGZpcnN0IHJlLXJldmVyc2Ut ZWxlbWVudCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSgxMCkiICIgPSAxMCIgInByaW50IGxhc3Qg cmUtcmV2ZXJzZS1lbGVtZW50IgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJvZGQtZWxlbWVudHMiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJvZGQtZWxl bWVudHMiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEiICIgPSBcXFwoMSwgMywgNSwgNywgOVxcXCki ICJwcmludCBvZGQtZWxlbWVudHMiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoMSkiICIgPSAxIiAi cHJpbnQgZmlyc3Qgb2RkLWVsZW1lbnQiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoNSkiICIgPSA5 IiAicHJpbnQgbGFzdCBvZGQtZWxlbWVudCIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAic2luZ2xlLWVsZW1lbnQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50 ICJzaW5nbGUtZWxlbWVudCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxcXCg1XFxcKSIg InByaW50IHNpbmdsZS1lbGVtZW50IgorK2dkYl90ZXN0ICJwcmludCBwdmxhKDEpIiAiID0gNSIg InByaW50IG9uZSBzaW5nbGUtZWxlbWVudCIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3ZsYS1zdHJpZGUuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEt c3RyaWRlLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjFmOGNjNTUK Ky0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlk ZS5mOTAKK0BAIC0wLDAgKzEsMzAgQEAKKyshIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIQorKyEg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyshIEZvdW5kYXRpb24s IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3 LCBVU0EuCisrCisrcHJvZ3JhbSB2bGFfc3RyaWRlCisrICBpbnRlZ2VyLCB0YXJnZXQsIGFsbG9j YXRhYmxlIDo6IHZsYSAoOikKKysgIGludGVnZXIsIHBvaW50ZXIgOjogcHZsYSAoOikKKysKKysg IGFsbG9jYXRlKHZsYSgxMCkpCisrICB2bGEgPSAoLyAoSSwgSSA9IDEsMTApIC8pCisrCisrICBw dmxhID0+IHZsYSgxMDoxOi0xKQorKyAgcHZsYSA9PiBwdmxhKDEwOjE6LTEpICEgcmV2ZXJzZS1l bGVtZW50cworKyAgcHZsYSA9PiB2bGEoMToxMDoyKSAgICEgcmUtcmV2ZXJzZS1lbGVtZW50cwor KyAgcHZsYSA9PiB2bGEoNTo0Oi0yKSAgICEgb2RkLWVsZW1lbnRzCisrCisrICBwdmxhID0+IG51 bGwoKSAgICAgICAgISBzaW5nbGUtZWxlbWVudAorK2VuZCBwcm9ncmFtIHZsYV9zdHJpZGUKK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZXhwCituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMC4uN2ZjMTczNAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5leHAKK0BAIC0wLDAgKzEsMTA0IEBACisr IyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgIi5mOTAiCisr CisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0g JHtzcmNmaWxlfSBcCisrICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKKysgICAgcmV0dXJuIC0x CisrfQorKworKyMgY2hlY2sgdGhhdCBhbGwgZm9ydHJhbiBzdGFuZGFyZCBkYXRhdHlwZXMgd2ls bCBiZQorKyMgaGFuZGxlZCBjb3JyZWN0bHkgd2hlbiB1c2luZyBhcyBWTEEncworKworK2lmICFb cnVudG8gTUFJTl9fXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtw b2ludCBNQUlOX18iCisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJ2YXJfY2hhci1hbGxvY2F0ZWQtMSJdCisrZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgInZhcl9jaGFyLWFsbG9jYXRlZC0xIgorK2dkYl90ZXN0ICJwcmludCB2YXJf Y2hhciIgXAorKyAgIiA9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMTAgXFwpXFwpICR7 aGV4fSIgXAorKyAgInByaW50IHZhcl9jaGFyIGFmdGVyIGFsbG9jYXRlZCBmaXJzdCB0aW1lIgor K2dkYl90ZXN0ICJwcmludCAqdmFyX2NoYXIiIFwKKysgICIgPSAnXFxcXDAwMFxcXFwwMDBcXFxc MDAwXFxcXDAwMFxcXFwwMDBcXFxcMDAwXFxcXDAwMFxcXFwwMDBcXFxcMDAwXFxcXDAwMCciIFwK KysgICJwcmludCAqdmFyX2NoYXIgYWZ0ZXIgYWxsb2NhdGVkIGZpcnN0IHRpbWUiCisrZ2RiX3Rl c3QgIndoYXRpcyB2YXJfY2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjEw IFxcKSIgXAorKyAgIndoYXRpcyB2YXJfY2hhciBmaXJzdCB0aW1lIgorK2dkYl90ZXN0ICJwdHlw ZSB2YXJfY2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjEwIFxcKSIgXAor KyAgInB0eXBlIHZhcl9jaGFyIGZpcnN0IHRpbWUiCisrZ2RiX3Rlc3QgIm5leHQiICJcXGQrLip2 YXJfY2hhciA9ICdmb28nLioiIFwKKysgICJuZXh0IHRvIGFsbG9jYXRpb24gc3RhdHVzIG9mIHZh cl9jaGFyIgorK2dkYl90ZXN0ICJwcmludCBsIiAiID0gLlRSVUUuIiAicHJpbnQgYWxsb2NhdGlv biBzdGF0dXMgZmlyc3QgdGltZSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAidmFyX2NoYXItZmlsbGVkLTEiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2 YXJfY2hhci1maWxsZWQtMSIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2NoYXIiIFwKKysgICIgPSBc XChQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjMgXFwpXFwpICR7aGV4fSIgXAorKyAgInByaW50 IHZhcl9jaGFyIGFmdGVyIGZpbGxlZCBmaXJzdCB0aW1lIgorK2dkYl90ZXN0ICJwcmludCAqdmFy X2NoYXIiICIgPSAnZm9vJyIgXAorKyAgInByaW50ICp2YXJfY2hhciBhZnRlciBmaWxsZWQgZmly c3QgdGltZSIKKytnZGJfdGVzdCAid2hhdGlzIHZhcl9jaGFyIiAidHlwZSA9IFBUUiBUTyAtPiBc XCggY2hhcmFjdGVyXFwqMyBcXCkiIFwKKysgICJ3aGF0aXMgdmFyX2NoYXIgYWZ0ZXIgZmlsbGVk IGZpcnN0IHRpbWUiCisrZ2RiX3Rlc3QgInB0eXBlIHZhcl9jaGFyIiAidHlwZSA9IFBUUiBUTyAt PiBcXCggY2hhcmFjdGVyXFwqMyBcXCkiIFwKKysgICJwdHlwZSB2YXJfY2hhciBhZnRlciBmaWxs ZWQgZmlyc3QgdGltZSIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2NoYXIoMSkiICIgPSAxMDIgJ2Yn IiAicHJpbnQgdmFyX2NoYXIoMSkiCisrZ2RiX3Rlc3QgInByaW50IHZhcl9jaGFyKDMpIiAiID0g MTExICdvJyIgInByaW50IHZhcl9jaGFyKDMpIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJ2YXJfY2hhci1maWxsZWQtMiJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgInZhcl9jaGFyLWZpbGxlZC0yIgorK2dkYl90ZXN0ICJwcmludCB2YXJfY2hhciIgXAor KyAgIiA9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqNiBcXClcXCkgJHtoZXh9IiBcCisr ICAicHJpbnQgdmFyX2NoYXIgYWZ0ZXIgYWxsb2NhdGVkIHNlY29uZCB0aW1lIgorK2dkYl90ZXN0 ICJwcmludCAqdmFyX2NoYXIiICIgPSAnZm9vYmFyJyIgXAorKyAgInByaW50ICp2YXJfY2hhciBh ZnRlciBhbGxvY2F0ZWQgc2Vjb25kIHRpbWUiCisrZ2RiX3Rlc3QgIndoYXRpcyB2YXJfY2hhciIg InR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjYgXFwpIiBcCisrICAid2hhdGlzIHZh cl9jaGFyIHNlY29uZCB0aW1lIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJfY2hhciIgInR5cGUgPSBQ VFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjYgXFwpIiBcCisrICAicHR5cGUgdmFyX2NoYXIgc2Vj b25kIHRpbWUiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcl9j aGFyLWVtcHR5Il0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyX2NoYXItZW1wdHki CisrZ2RiX3Rlc3QgInByaW50IHZhcl9jaGFyIiBcCisrICAiID0gXFwoUFRSIFRPIC0+IFxcKCBj aGFyYWN0ZXJcXCowIFxcKVxcKSAke2hleH0iIFwKKysgICJwcmludCB2YXJfY2hhciBhZnRlciBz ZXQgZW1wdHkiCisrZ2RiX3Rlc3QgInByaW50ICp2YXJfY2hhciIgIiA9IFwiXCIiICJwcmludCAq dmFyX2NoYXIgYWZ0ZXIgc2V0IGVtcHR5IgorK2dkYl90ZXN0ICJ3aGF0aXMgdmFyX2NoYXIiICJ0 eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCowIFxcKSIgXAorKyAgIndoYXRpcyB2YXJf Y2hhciBhZnRlciBzZXQgZW1wdHkiCisrZ2RiX3Rlc3QgInB0eXBlIHZhcl9jaGFyIiAidHlwZSA9 IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMCBcXCkiIFwKKysgICJwdHlwZSB2YXJfY2hhciBh ZnRlciBzZXQgZW1wdHkiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg InZhcl9jaGFyLWFsbG9jYXRlZC0zIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFy X2NoYXItYWxsb2NhdGVkLTMiCisrZ2RiX3Rlc3QgInByaW50IHZhcl9jaGFyIiBcCisrICAiID0g XFwoUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCoyMSBcXClcXCkgJHtoZXh9IiBcCisrICAicHJp bnQgdmFyX2NoYXIgYWZ0ZXIgYWxsb2NhdGVkIHRoaXJkIHRpbWUiCisrZ2RiX3Rlc3QgIndoYXRp cyB2YXJfY2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjIxIFxcKSIgXAor KyAgIndoYXRpcyB2YXJfY2hhciBhZnRlciBhbGxvY2F0ZWQgdGhpcmQgdGltZSIKKytnZGJfdGVz dCAicHR5cGUgdmFyX2NoYXIiICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCoyMSBc XCkiIFwKKysgICJwdHlwZSB2YXJfY2hhciBhZnRlciBhbGxvY2F0ZWQgdGhpcmQgdGltZSIKKysK KytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyX2NoYXJfcC1hc3NvY2lh dGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyX2NoYXJfcC1hc3NvY2lhdGVk IgorK2dkYl90ZXN0ICJwcmludCB2YXJfY2hhcl9wIiBcCisrICAiID0gXFwoUFRSIFRPIC0+IFxc KCBjaGFyYWN0ZXJcXCo3IFxcKVxcKSAke2hleH0iIFwKKysgICJwcmludCB2YXJfY2hhcl9wIGFm dGVyIGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInByaW50ICp2YXJfY2hhcl9wIiAiID0gJ2pvaG5k b2UnIiBcCisrICAicHJpbnQgKnZhcl9jaGFyXyBhZnRlciBhc3NvY2lhdGVkIgorK2dkYl90ZXN0 ICJ3aGF0aXMgdmFyX2NoYXJfcCIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjcg XFwpIiBcCisrICAid2hhdGlzIHZhcl9jaGFyX3AgYWZ0ZXIgYXNzb2NpYXRlZCIKKytnZGJfdGVz dCAicHR5cGUgdmFyX2NoYXJfcCIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjcg XFwpIiBcCisrICAicHR5cGUgdmFyX2NoYXJfcCBhZnRlciBhc3NvY2lhdGVkIgorZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZjkwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi4wYTFkNTIyCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmY5MAorQEAgLTAsMCArMSw0MCBAQAorKyEgQ29weXJp Z2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQorKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw LCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKysKKytwcm9ncmFtIHZsYV9zdHJpbmdzCisr ICBjaGFyYWN0ZXIobGVuPTopLCB0YXJnZXQsIGFsbG9jYXRhYmxlICAgOjogdmFyX2NoYXIKKysg IGNoYXJhY3RlcihsZW49OiksIHBvaW50ZXIgICAgICAgICAgICAgICA6OiB2YXJfY2hhcl9wCisr ICBsb2dpY2FsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogbAorKworKyAgYWxs b2NhdGUoY2hhcmFjdGVyKGxlbj0xMCkgOjogdmFyX2NoYXIpCisrICBsID0gYWxsb2NhdGVkKHZh cl9jaGFyKSAgICAgICAgICAgICAgICAgISB2YXJfY2hhci1hbGxvY2F0ZWQtMQorKyAgdmFyX2No YXIgPSAnZm9vJworKyAgZGVhbGxvY2F0ZSh2YXJfY2hhcikgICAgICAgICAgICAgICAgICAgICEg dmFyX2NoYXItZmlsbGVkLTEKKysgIGwgPSBhbGxvY2F0ZWQodmFyX2NoYXIpICAgICAgICAgICAg ICAgICAhIHZhcl9jaGFyLWRlYWxsb2NhdGVkCisrICBhbGxvY2F0ZShjaGFyYWN0ZXIobGVuPTQy KSA6OiB2YXJfY2hhcikKKysgIGwgPSBhbGxvY2F0ZWQodmFyX2NoYXIpCisrICB2YXJfY2hhciA9 ICdmb29iYXInCisrICB2YXJfY2hhciA9ICcnICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2 YXJfY2hhci1maWxsZWQtMgorKyAgdmFyX2NoYXIgPSAnYmFyJyAgICAgICAgICAgICAgICAgICAg ICAgICEgdmFyX2NoYXItZW1wdHkKKysgIGRlYWxsb2NhdGUodmFyX2NoYXIpCisrICBhbGxvY2F0 ZShjaGFyYWN0ZXIobGVuPTIxKSA6OiB2YXJfY2hhcikKKysgIGwgPSBhbGxvY2F0ZWQodmFyX2No YXIpICAgICAgICAgICAgICAgICAhIHZhcl9jaGFyLWFsbG9jYXRlZC0zCisrICB2YXJfY2hhciA9 ICdqb2huZG9lJworKyAgdmFyX2NoYXJfcCA9PiB2YXJfY2hhcgorKyAgbCA9IGFzc29jaWF0ZWQo dmFyX2NoYXJfcCkgICAgICAgICAgICAgICEgdmFyX2NoYXJfcC1hc3NvY2lhdGVkCisrICB2YXJf Y2hhcl9wID0+IG51bGwoKQorKyAgbCA9IGFzc29jaWF0ZWQodmFyX2NoYXJfcCkgICAgICAgICAg ICAgICEgdmFyX2NoYXJfcC1ub3QtYXNzb2NpYXRlZAorK2VuZCBwcm9ncmFtIHZsYV9zdHJpbmdz CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3ViLmY5MCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN1Yi5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwLi44YzJjOWZmCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdWIuZjkwCitAQCAtMCwwICsxLDgyIEBACisrISBDb3B5cmln aHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyshCisrISBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKyshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIQorKyEgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KyshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlCisrISBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAs IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKyEKKyshIE9yaWdpbmFsIGZpbGUgd3JpdHRl biBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiBhbmQKKyshIEphbiBLcmF0b2No dmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KKyshIE1vZGlmaWVkIGZvciB0aGUgR0RC IHRlc3RjYXNlcyBieSBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPi4KKysKKytz dWJyb3V0aW5lIGZvbyAoYXJyYXkxLCBhcnJheTIpCisrICBpbnRlZ2VyIDo6IGFycmF5MSAoOiwg OikKKysgIHJlYWwgICAgOjogYXJyYXkyICg6LCA6LCA6KQorKworKyAgYXJyYXkxKDosOikgPSA1 ICAgICAgICAgICAgICAgICAgICAgICAhIG5vdC1maWxsZWQKKysgIGFycmF5MSgxLCAxKSA9IDMw CisrCisrICBhcnJheTIoOiw6LDopID0gNiAgICAgICAgICAgICAgICAgICAgICEgYXJyYXkxLWZp bGxlZAorKyAgYXJyYXkyKDosOiw6KSA9IDMKKysgIGFycmF5MigxLDEsMSkgPSAzMAorKyAgYXJy YXkyKDMsMywzKSA9IDkwICAgICAgICAgICAgICAgICAgICAhIGFycmF5Mi1hbG1vc3QtZmlsbGVk CisrZW5kIHN1YnJvdXRpbmUKKysKKytzdWJyb3V0aW5lIGJhciAoYXJyYXkxLCBhcnJheTIpCisr ICBpbnRlZ2VyIDo6IGFycmF5MSAoKikKKysgIGludGVnZXIgOjogYXJyYXkyICg0OjksIDEwOiop CisrCisrICBhcnJheTEoNToxMCkgPSAxMzExCisrICBhcnJheTEoNykgPSAxCisrICBhcnJheTEo MTAwKSA9IDEwMAorKyAgYXJyYXkyKDQsMTApID0gYXJyYXkxKDcpCisrICBhcnJheTIoNCwxMDAp ID0gYXJyYXkxKDcpCisrICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEg ZW5kLW9mLWJhcgorK2VuZCBzdWJyb3V0aW5lCisrCisrcHJvZ3JhbSB2bGFfc3ViCisrICBpbnRl cmZhY2UKKysgICAgc3Vicm91dGluZSBmb28gKGFycmF5MSwgYXJyYXkyKQorKyAgICAgIGludGVn ZXIgOjogYXJyYXkxICg6LCA6KQorKyAgICAgIHJlYWwgOjogYXJyYXkyICg6LCA6LCA6KQorKyAg ICBlbmQgc3Vicm91dGluZQorKyAgZW5kIGludGVyZmFjZQorKyAgaW50ZXJmYWNlCisrICAgIHN1 YnJvdXRpbmUgYmFyIChhcnJheTEsIGFycmF5MikKKysgICAgICBpbnRlZ2VyIDo6IGFycmF5MSAo KikKKysgICAgICBpbnRlZ2VyIDo6IGFycmF5MiAoNDo5LCAxMDoqKQorKyAgICBlbmQgc3Vicm91 dGluZQorKyAgZW5kIGludGVyZmFjZQorKworKyAgcmVhbCwgYWxsb2NhdGFibGUgOjogdmxhMSAo OiwgOiwgOikKKysgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IHZsYTIgKDosIDopCisrCisrICAh IHVzZWQgZm9yIHN1YnJvdXRpbmUKKysgIGludGVnZXIgOjogc3ViX2FycjEoNDIsIDQyKQorKyAg cmVhbCAgICA6OiBzdWJfYXJyMig0MiwgNDIsIDQyKQorKyAgaW50ZWdlciA6OiBzdWJfYXJyMyg0 MikKKysKKysgIHN1Yl9hcnIxKDosOikgPSAxICAgICAgICAgICAgICAgICAgICEgdmxhMi1kZWFs bG9jYXRlZAorKyAgc3ViX2FycjIoOiw6LDopID0gMgorKyAgc3ViX2FycjMoOikgPSAzCisrCisr ICBjYWxsIGZvbyhzdWJfYXJyMSwgc3ViX2FycjIpCisrICBjYWxsIGZvbyhzdWJfYXJyMSg1OjEw LCA1OjEwKSwgc3ViX2FycjIoMTA6MTUsMTA6MTUsMTA6MTUpKQorKworKyAgYWxsb2NhdGUgKHZs YTEgKDEwLDEwLDEwKSkKKysgIGFsbG9jYXRlICh2bGEyICgyMCwyMCkpCisrICB2bGExKDosOiw6 KSA9IDEzMTEKKysgIHZsYTIoOiw6KSA9IDQyCisrICBjYWxsIGZvbyh2bGEyLCB2bGExKQorKwor KyAgY2FsbCBiYXIoc3ViX2FycjMsIHN1Yl9hcnIxKQorK2VuZCBwcm9ncmFtIHZsYV9zdWIKK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS1zdWItYXJiaXRy YXJ5LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi1hcmJpdHJh cnkuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZmQxMWFkYgorLS0t IC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3Vi LWFyYml0cmFyeS5leHAKK0BAIC0wLDAgKzEsMzUgQEAKKysjIENvcHlyaWdodCAyMDE0IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKysKKytzdGFuZGFyZF90ZXN0ZmlsZSAidmxhLXN1Yi5mOTAiCisrCisraWYgeyBbcHJlcGFy ZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCisr ICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFb cnVudG8gTUFJTl9fXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtw b2ludCBNQUlOX18iCisrICAgIGNvbnRpbnVlCisrfQorKworKyMgQ2hlY2sgVkxBIHdpdGggYXJi aXRhcnkgbGVuZ3RoIGFuZCBjaGVjayB0aGF0IGVsZW1lbnRzIG91dHNpZGUgb2YKKysjIGJvdW5k cyBvZiB0aGUgcGFzc2VkIFZMQSBjYW4gYmUgYWNjZXNzZWQgY29ycmVjdGx5LgorK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJlbmQtb2YtYmFyIl0KKytnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAiZW5kLW9mLWJhciIKKytnZGJfdGVzdCAicCBhcnJheTEoNDIpIiAiID0g MyIgInByaW50IGFyYml0YXJ5IGFycmF5MSg0MikiCisrZ2RiX3Rlc3QgInAgYXJyYXkxKDEwMCki ICIgPSAxMDAiICJwcmludCBhcmJpdGFyeSBhcnJheTEoMTAwKSIKKytnZGJfdGVzdCAicCBhcnJh eTIoNCwxMCkiICIgPSAxIiAicHJpbnQgYXJiaXRhcnkgYXJyYXkyKDQsMTApIgorK2dkYl90ZXN0 ICJwIGFycmF5Mig0LDEwMCkiICIgPSAxIiAicHJpbnQgYXJiaXRhcnkgYXJyYXkyKDQsMTAwKSIK K2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS1zdWItZmlu aXNoLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi1maW5pc2gu ZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYTE2MzYxNworLS0tIC9k ZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLWZp bmlzaC5leHAKK0BAIC0wLDAgKzEsNDkgQEAKKysjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisr IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysK KytzdGFuZGFyZF90ZXN0ZmlsZSAidmxhLXN1Yi5mOTAiCisrCisraWYgeyBbcHJlcGFyZV9mb3Jf dGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCisrICAgIHtk ZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG8g TUFJTl9fXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBN QUlOX18iCisrICAgIGNvbnRpbnVlCisrfQorKworKyMgInVwIiB3b3JrcyB3aXRoIEdDQyBidXQg b3RoZXIgRm9ydHJhbiBjb21waWxlcnMgbWF5IGNvcHkgdGhlIHZhbHVlcyBpbnRvIHRoZQorKyMg b3V0ZXIgZnVuY3Rpb24gb25seSBvbiB0aGUgZXhpdCBvZiB0aGUgaW5uZXIgZnVuY3Rpb24uCisr IyBXZSBuZWVkIGJvdGggdmFyaWFudHMgYXMgZGVwZW5kaW5nIG9uIHRoZSBhcmNoIHdlIG9wdGlv bmFsbHkgbWF5IHN0aWxsIGJlCisrIyBleGVjdXRpbmcgdGhlIGNhbGxlciBsaW5lIG9yIG5vdCBh ZnRlciBgZmluaXNoJy4KKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi YXJyYXkyLWFsbW9zdC1maWxsZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJhcnJh eTItYWxtb3N0LWZpbGxlZCIKKytnZGJfdGVzdCAicHJpbnQgYXJyYXkyIiAiID0gXFwoICpcXCgg KlxcKCAqMzAsICozLCAqMyxcWygpMywgLlxdKlxcKSIgXAorKyAgInByaW50IGFycmF5MiBpbiBm b28gYWZ0ZXIgaXQgd2FzIGZpbGxlZCIKKytnZGJfdGVzdCAicHJpbnQgYXJyYXkyKDIsMSwxKT0y MCIgIiA9IDIwIiBcCisrICAic2V0IGFycmF5KDIsMiwyKSB0byAyMCBpbiBzdWJyb3V0aW5lIgor K2dkYl90ZXN0ICJwcmludCBhcnJheTIiICIgPSBcXCggKlxcKCAqXFwoICozMCwgKjIwLCAqMyxc WygpMywgLlxdKlxcKSIgXAorKyAgInByaW50IGFycmF5MiBpbiBmb28gYWZ0ZXIgaXQgd2FzIG1v ZmlmaWVkIGluIGRlYnVnZ2VyIgorKworK2dkYl90ZXN0ICJmaW5pc2giIFwKKysgICIuKmZvb1xc XChzdWJfYXJyMVxcXCg1OjEwLCA1OjEwXFxcKSwgc3ViX2FycjJcXFwoMTA6MTUsMTA6MTUsMTA6 MTVcXFwpXFxcKSIgXAorKyAgImZpbmlzaCBmdW5jdGlvbiIKKytnZGJfdGVzdCAicCBzdWJfYXJy MSg1LCA3KSIgIiA9IDUiICJzdWJfYXJyMSg1LCA3KSBhZnRlciBmaW5pc2giCisrZ2RiX3Rlc3Qg InAgc3ViX2FycjEoMSwgMSkiICIgPSAzMCIgInN1Yl9hcnIxKDEsIDEpIGFmdGVyIGZpbmlzaCIK KytnZGJfdGVzdCAicCBzdWJfYXJyMigxLCAxLCAxKSIgIiA9IDMwIiAic3ViX2FycjIoMSwgMSwg MSkgYWZ0ZXIgZmluaXNoIgorK2dkYl90ZXN0ICJwIHN1Yl9hcnIyKDIsIDEsIDEpIiAiID0gMjAi ICJzdWJfYXJyMigyLCAxLCAxKSBhZnRlciBmaW5pc2giCisrCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwLi44NDhmOWQ3CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3ZsYS12YWx1ZS1zdWIuZXhwCitAQCAtMCwwICsxLDkwIEBACisrIyBDb3B5cmlnaHQg MjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgInZsYS1zdWIuZjkwIgorKworK2lm IHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3Jj ZmlsZX0gXAorKyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7CisrICAgIHJldHVybiAtMQorK30K KysKKytpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVu IHRvIGJyZWFrcG9pbnQgTUFJTl9fIgorKyAgICBjb250aW51ZQorK30KKysKKysjIENoZWNrIHRo ZSB2YWx1ZXMgb2YgVkxBJ3MgaW4gc3Vicm91dGluZSBjYW4gYmUgZXZhbHVhdGVkIGNvcnJlY3Rs eQorKworKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgZnJvbSBhIGZpeGVkIGFycmF5IGhhbmRsZWQg YXMgVkxBIGluIHN1YnJvdXRpbmUuCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgIm5vdC1maWxsZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJub3QtZmlsbGVk ICgxc3QpIgorK2dkYl90ZXN0ICJwcmludCBhcnJheTEiICIgPSBcXChcWygpMSwgLlxdKlxcKSIg XAorKyAgInByaW50IHBhc3NlZCBhcnJheTEgaW4gZm9vIChwYXNzZWQgZml4ZWQgYXJyYXkpIgor KworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJhcnJheTEtZmlsbGVkIl0K KytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYXJyYXkxLWZpbGxlZCAoMXN0KSIKKytnZGJf dGVzdCAicHJpbnQgYXJyYXkxKDUsIDcpIiAiID0gNSIgXAorKyAgInByaW50IGFycmF5MSg1LCA3 KSBhZnRlciBmaWxsZWQgaW4gZm9vIChwYXNzZWQgZml4ZWQgYXJyYXkpIgorK2dkYl90ZXN0ICJw cmludCBhcnJheTEoMSwgMSkiICIgPSAzMCIgXAorKyAgInByaW50IGFycmF5MSgxLCAxKSBhZnRl ciBmaWxsZWQgaW4gZm9vIChwYXNzZWQgZml4ZWQgYXJyYXkpIgorKworK2dkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJhcnJheTItYWxtb3N0LWZpbGxlZCJdCisrZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgImFycmF5Mi1hbG1vc3QtZmlsbGVkICgxc3QpIgorK2dkYl90ZXN0 ICJwcmludCBhcnJheTIiICIgPSBcXCggKlxcKCAqXFwoICozMCwgKjMsICozLFxbKCkzLCAuXF0q XFwpIiBcCisrICAicHJpbnQgYXJyYXkyIGluIGZvbyBhZnRlciBpdCB3YXMgZmlsbGVkIChwYXNz ZWQgZml4ZWQgYXJyYXkpIgorK2dkYl90ZXN0ICJwcmludCBhcnJheTIoMiwxLDEpPTIwIiAiID0g MjAiIFwKKysgICJzZXQgYXJyYXkoMiwyLDIpIHRvIDIwIGluIHN1YnJvdXRpbmUgKHBhc3NlZCBm aXhlZCBhcnJheSkiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5MiIgIiA9IFxcKCAqXFwoICpcXCgg KjMwLCAqMjAsICozLFxbKCkzLCAuXF0qXFwpIiBcCisrICAicHJpbnQgYXJyYXkyIGluIGZvbyBh ZnRlciBpdCB3YXMgbW9maWZpZWQgaW4gZGVidWdnZXIgKHBhc3NlZCBmaXhlZCBhcnJheSkiCisr CisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBmcm9tIGEgZml4ZWQgc3ViLWFycmF5IGhhbmRs ZWQgYXMgVkxBIGluIHN1YnJvdXRpbmUuCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5v dC1maWxsZWQgKDJuZCkiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5MSIgIiA9IFxcKFxbKCk1LCAu XF0qXFwpIiBcCisrICAicHJpbnQgcGFzc2VkIGFycmF5MSBpbiBmb28gKHBhc3NlZCBzdWItYXJy YXkpIgorKworK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJhcnJheTEtZmlsbGVkICgybmQp IgorK2dkYl90ZXN0ICJwcmludCBhcnJheTEoNSwgNSkiICIgPSA1IiBcCisrICAicHJpbnQgYXJy YXkxKDUsIDUpIGFmdGVyIGZpbGxlZCBpbiBmb28gKHBhc3NlZCBzdWItYXJyYXkpIgorK2dkYl90 ZXN0ICJwcmludCBhcnJheTEoMSwgMSkiICIgPSAzMCIgXAorKyAgInByaW50IGFycmF5MSgxLCAx KSBhZnRlciBmaWxsZWQgaW4gZm9vIChwYXNzZWQgc3ViLWFycmF5KSIKKysKKytnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAiYXJyYXkyLWFsbW9zdC1maWxsZWQgKDJuZCkiCisrZ2RiX3Rlc3Qg InByaW50IGFycmF5MiIgIiA9IFxcKCAqXFwoICpcXCggKjMwLCAqMywgKjMsXFsoKTMsIC5cXSpc XCkiIFwKKysgICJwcmludCBhcnJheTIgaW4gZm9vIGFmdGVyIGl0IHdhcyBmaWxsZWQgKHBhc3Nl ZCBzdWItYXJyYXkpIgorK2dkYl90ZXN0ICJwcmludCBhcnJheTIoMiwxLDEpPTIwIiAiID0gMjAi IFwKKysgICJzZXQgYXJyYXkoMiwyLDIpIHRvIDIwIGluIHN1YnJvdXRpbmUgKHBhc3NlZCBzdWIt YXJyYXkpIgorK2dkYl90ZXN0ICJwcmludCBhcnJheTIiICIgPSBcXCggKlxcKCAqXFwoICozMCwg KjIwLCAqMyxcWygpMywgLlxdKlxcKSIgXAorKyAgInByaW50IGFycmF5MiBpbiBmb28gYWZ0ZXIg aXQgd2FzIG1vZmlmaWVkIGluIGRlYnVnZ2VyIChwYXNzZWQgc3ViLWFycmF5KSIKKysKKysKKysj IFRyeSB0byBhY2Nlc3MgdmFsdWVzIGZyb20gYSBWTEEgcGFzc2VkIHRvIHN1YnJvdXRpbmUuCisr Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5vdC1maWxsZWQgKDNyZCkiCisrZ2RiX3Rlc3Qg InByaW50IGFycmF5MSIgIiA9IFxcKFxbKCk0MiwgLlxdKlxcKSIgXAorKyAgInByaW50IHBhc3Nl ZCBhcnJheTEgaW4gZm9vIChwYXNzZWQgdmxhKSIKKysKKytnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAiYXJyYXkxLWZpbGxlZCAoM3JkKSIKKytnZGJfdGVzdCAicHJpbnQgYXJyYXkxKDUsIDUp IiAiID0gNSIgXAorKyAgInByaW50IGFycmF5MSg1LCA1KSBhZnRlciBmaWxsZWQgaW4gZm9vIChw YXNzZWQgdmxhKSIKKytnZGJfdGVzdCAicHJpbnQgYXJyYXkxKDEsIDEpIiAiID0gMzAiIFwKKysg ICJwcmludCBhcnJheTEoMSwgMSkgYWZ0ZXIgZmlsbGVkIGluIGZvbyAocGFzc2VkIHZsYSkiCisr CisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImFycmF5Mi1hbG1vc3QtZmlsbGVkICgzcmQp IgorK2dkYl90ZXN0ICJwcmludCBhcnJheTIiICIgPSBcXCggKlxcKCAqXFwoICozMCwgKjMsICoz LFxbKCkzLCAuXF0qXFwpIiBcCisrICAicHJpbnQgYXJyYXkyIGluIGZvbyBhZnRlciBpdCB3YXMg ZmlsbGVkIChwYXNzZWQgdmxhKSIKKytnZGJfdGVzdCAicHJpbnQgYXJyYXkyKDIsMSwxKT0yMCIg IiA9IDIwIiBcCisrICAic2V0IGFycmF5KDIsMiwyKSB0byAyMCBpbiBzdWJyb3V0aW5lIChwYXNz ZWQgdmxhKSIKKytnZGJfdGVzdCAicHJpbnQgYXJyYXkyIiAiID0gXFwoICpcXCggKlxcKCAqMzAs ICoyMCwgKjMsXFsoKTMsIC5cXSpcXCkiIFwKKysgICJwcmludCBhcnJheTIgaW4gZm9vIGFmdGVy IGl0IHdhcyBtb2ZpZmllZCBpbiBkZWJ1Z2dlciAocGFzc2VkIHZsYSkiCitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEtdmFsdWUuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMC4uZDdiOGExZQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi92bGEtdmFsdWUuZXhwCitAQCAtMCwwICsxLDE0OCBAQAorKyMgQ29weXJpZ2h0IDIwMTQg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlICJ2bGEuZjkwIgorKworK2lmIHsgW3ByZXBh cmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAor KyAgICAge2RlYnVnIGY5MCBxdWlldH1dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYg IVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVh a3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisrIyBUcnkgdG8gYWNjZXNzIHZh bHVlcyBpbiBub24gYWxsb2NhdGVkIFZMQQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJ2bGExLWluaXQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWlu aXQiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEiICIgPSA8bm90IGFsbG9jYXRlZD4iICJwcmludCBu b24tYWxsb2NhdGVkIHZsYTEiCisrZ2RiX3Rlc3QgInByaW50ICZ2bGExIiBcCisrICAiID0gXFxc KFBUUiBUTyAtPiBcXFwoIHJlYWxcXFwoa2luZD00XFxcKSBcXFwoPG5vdCBhbGxvY2F0ZWQ+XFxc KVxcXClcXFwpICRoZXgiIFwKKysgICJwcmludCBub24tYWxsb2NhdGVkICZ2bGExIgorK2dkYl90 ZXN0ICJwcmludCB2bGExKDEsMSwxKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBu b3QgYWxsb2NhdGVkIiBcCisrICAicHJpbnQgbWVtYmVyIGluIG5vbi1hbGxvY2F0ZWQgdmxhMSAo MSkiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEoMTAxLDIwMiwzMDMpIiBcCisrICAibm8gc3VjaCB2 ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKKysgICJwcmludCBtZW1iZXIg aW4gbm9uLWFsbG9jYXRlZCB2bGExICgyKSIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSg1LDIsMTgp PTEiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIgXAorKyAg InNldCBtZW1iZXIgaW4gbm9uLWFsbG9jYXRlZCB2bGExIgorKworKyMgVHJ5IHRvIGFjY2VzcyB2 YWx1ZSBpbiBhbGxvY2F0ZWQgVkxBCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgInZsYTItYWxsb2NhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMi1h bGxvY2F0ZWQiCisrZ2RiX3Rlc3QgIm5leHQiICJcXGQrKFxcdHxcXHMpK3ZsYTFcXFwoMywgNiwg OVxcXCkgPSA0MiIgXAorKyAgInN0ZXAgb3ZlciB2YWx1ZSBhc3NpZ25tZW50IG9mIHZsYTEiCisr Z2RiX3Rlc3QgInByaW50ICZ2bGExIiBcCisrICAiID0gXFxcKFBUUiBUTyAtPiBcXFwoIHJlYWxc XFwoa2luZD00XFxcKSBcXFwoMTAsMTAsMTBcXFwpXFxcKVxcXCkgJGhleCIgXAorKyAgInByaW50 IGFsbG9jYXRlZCAmdmxhMSIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSgzLCA2LCA5KSIgIiA9IDEz MTEiICJwcmludCBhbGxvY2F0ZWQgdmxhMSgzLDYsOSkiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEo MSwgMywgOCkiICIgPSAxMzExIiAicHJpbnQgYWxsb2NhdGVkIHZsYTEoMSwzLDgpIgorK2dkYl90 ZXN0ICJwcmludCB2bGExKDksIDksIDkpID0gOTk5IiAiID0gOTk5IiBcCisrICAicHJpbnQgYWxs b2NhdGVkIHZsYTEoOSw5LDkpPTEiCisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiBhbGxv Y2F0ZWQgVkxBIGFmdGVyIHNwZWNpZmljIGFzc2lnbm1lbnQKKytnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAidmxhMS1maWxsZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJ2bGExLWZpbGxlZCIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSgzLCA2LCA5KSIgIiA9IDQy IiBcCisrICAicHJpbnQgYWxsb2NhdGVkIHZsYTEoMyw2LDkpIGFmdGVyIHNwZWNpZmljIGFzc2ln bm1lbnQgKGZpbGxlZCkiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEoMSwgMywgOCkiICIgPSAxMDAx IiBcCisrICAicHJpbnQgYWxsb2NhdGVkIHZsYTEoMSwzLDgpIGFmdGVyIHNwZWNpZmljIGFzc2ln bm1lbnQgKGZpbGxlZCkiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEoOSwgOSwgOSkiICIgPSA5OTki IFwKKysgICJwcmludCBhbGxvY2F0ZWQgdmxhMSg5LDksOSkgYWZ0ZXIgYXNzaWdubWVudCBpbiBk ZWJ1Z2dlciAoZmlsbGVkKSIKKysKKysjIFRyeSB0byBhY2Nlc3MgdmFsdWVzIGluIHVuZGVmaW5l ZCBwb2ludGVyIHRvIFZMQSAoZGFuZ2xpbmcpCisrZ2RiX3Rlc3QgInByaW50IHB2bGEiICIgPSA8 bm90IGFzc29jaWF0ZWQ+IiAicHJpbnQgdW5kZWZpbmVkIHB2bGEiCisrZ2RiX3Rlc3QgInByaW50 ICZwdmxhIiBcCisrICAiID0gXFxcKFBUUiBUTyAtPiBcXFwoIHJlYWxcXFwoa2luZD00XFxcKSBc XFwoPG5vdCBhc3NvY2lhdGVkPlxcXClcXFwpXFxcKSAkaGV4IiBcCisrICAicHJpbnQgbm9uLWFz c29jaWF0ZWQgJnB2bGEiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoMSwgMywgOCkiICJubyBzdWNo IHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFzc29jaWF0ZWQiIFwKKysgICJwcmludCB1bmRl ZmluZWQgcHZsYSgxLDMsOCkiCisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiBwb2ludGVy IHRvIFZMQSBhbmQgY29tcGFyZSB0aGVtCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9u dW1iZXIgInB2bGEtYXNzb2NpYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInB2 bGEtYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgJnB2bGEiIFwKKysgICIgPSBcXFwoUFRS IFRPIC0+IFxcXCggcmVhbFxcXChraW5kPTRcXFwpIFxcXCgxMCwxMCwxMFxcXClcXFwpXFxcKSAk aGV4IiBcCisrICAicHJpbnQgYXNzb2NpYXRlZCAmcHZsYSIKKytnZGJfdGVzdCAicHJpbnQgcHZs YSgzLCA2LCA5KSIgIiA9IDQyIiAicHJpbnQgYXNzb2NpYXRlZCBwdmxhKDMsNiw5KSIKKytnZGJf dGVzdCAicHJpbnQgcHZsYSgxLCAzLCA4KSIgIiA9IDEwMDEiICJwcmludCBhc3NvY2lhdGVkIHB2 bGEoMSwzLDgpIgorK2dkYl90ZXN0ICJwcmludCBwdmxhKDksIDksIDkpIiAiID0gOTk5IiAicHJp bnQgYXNzb2NpYXRlZCBwdmxhKDksOSw5KSIKKysKKysjIEZpbGwgdmFsdWVzIHRvIFZMQSB1c2lu ZyBwb2ludGVyIGFuZCBjaGVjaworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJwdmxhLXJlLWFzc29jaWF0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxh LXJlLWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoNSwgNDUsIDIwKSIgXAorKyAg IiA9IDEiICJwcmludCBwdmxhKDUsIDQ1LCAyMCkgYWZ0ZXIgZmlsbGVkIHVzaW5nIHBvaW50ZXIi CisrZ2RiX3Rlc3QgInByaW50IHZsYTIoNSwgNDUsIDIwKSIgXAorKyAgIiA9IDEiICJwcmludCB2 bGEyKDUsIDQ1LCAyMCkgYWZ0ZXIgZmlsbGVkIHVzaW5nIHBvaW50ZXIiCisrZ2RiX3Rlc3QgInBy aW50IHB2bGEoNywgNDUsIDE0KSIgIiA9IDIiIFwKKysgICJwcmludCBwdmxhKDcsIDQ1LCAxNCkg YWZ0ZXIgZmlsbGVkIHVzaW5nIHBvaW50ZXIiCisrZ2RiX3Rlc3QgInByaW50IHZsYTIoNywgNDUs IDE0KSIgIiA9IDIiIFwKKysgICJwcmludCB2bGEyKDcsIDQ1LCAxNCkgYWZ0ZXIgZmlsbGVkIHVz aW5nIHBvaW50ZXIiCisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBvZiBkZWFzc29jaWF0ZWQg VkxBIHBvaW50ZXIKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1k ZWFzc29jaWF0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWRlYXNzb2Np YXRlZCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSg1LCA0NSwgMjApIiBcCisrICAibm8gc3VjaCB2 ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhc3NvY2lhdGVkIiBcCisrICAicHJpbnQgcHZsYSg1 LCA0NSwgMjApIGFmdGVyIGRlYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSg3LCA0 NSwgMTQpIiBcCisrICAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhc3NvY2lh dGVkIiBcCisrICAicHJpbnQgcHZsYSg3LCA0NSwgMTQpIGFmdGVyIGRpc3Nhc29jaWF0ZWQiCisr Z2RiX3Rlc3QgInByaW50IHB2bGEiICIgPSA8bm90IGFzc29jaWF0ZWQ+IiBcCisrICAicHJpbnQg dmxhMSBhZnRlciBkZWFzc29jaWF0ZWQiCisrCisrIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBvZiBk ZWFsbG9jYXRlZCBWTEEKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxh MS1kZWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtZGVhbGxv Y2F0ZWQiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEoMywgNiwgOSkiICJubyBzdWNoIHZlY3RvciBl bGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIgXAorKyAgInByaW50IGFsbG9jYXRlZCB2bGEx KDMsNiw5KSBhZnRlciBzcGVjaWZpYyBhc3NpZ25tZW50IChkZWFsbG9jYXRlZCkiCisrZ2RiX3Rl c3QgInByaW50IHZsYTEoMSwgMywgOCkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ug bm90IGFsbG9jYXRlZCIgXAorKyAgInByaW50IGFsbG9jYXRlZCB2bGExKDEsMyw4KSBhZnRlciBz cGVjaWZpYyBhc3NpZ25tZW50IChkZWFsbG9jYXRlZCkiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEo OSwgOSwgOSkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIg XAorKyAgInByaW50IGFsbG9jYXRlZCB2bGExKDksOSw5KSBhZnRlciBhc3NpZ25tZW50IGluIGRl YnVnZ2VyIChkZWFsbG9jYXRlZCkiCisrCisrCisrIyBUcnkgdG8gYXNzaWduIFZMQSB0byB1c2Vy IHZhcmlhYmxlCisrY2xlYW5fcmVzdGFydCAke3Rlc3RmaWxlfQorKworK2lmICFbcnVudG8gTUFJ Tl9fXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlO X18iCisrICAgIGNvbnRpbnVlCisrfQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJ2bGEyLWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTIt YWxsb2NhdGVkIgorK2dkYl90ZXN0ICJuZXh0IiAiXFxkKy4qdmxhMVxcKDMsIDYsIDlcXCkgPSA0 MiIgIm5leHQgKDEpIgorKworK2dkYl90ZXN0X25vX291dHB1dCAic2V0IFwkbXl2YXIgPSB2bGEx IiAic2V0IFwkbXl2YXIgPSB2bGExIgorK2dkYl90ZXN0ICJwcmludCBcJG15dmFyIiBcCisrICAi ID0gXFwoICpcXCggKlxcKCAqMTMxMSwgKjEzMTEsICoxMzExLFxbKCkxMzExLCAuXF0qXFwpIiBc CisrICAicHJpbnQgXCRteXZhciBzZXQgdG8gdmxhMSIKKysKKytnZGJfdGVzdCAibmV4dCIgIlxc ZCsuKnZsYTFcXCgxLCAzLCA4XFwpID0gMTAwMSIgIm5leHQgKDIpIgorK2dkYl90ZXN0ICJwcmlu dCBcJG15dmFyKDMsNiw5KSIgIiA9IDEzMTEiICJwcmludCBcJG15dmFyKDMsNiw5KSIKKysKKytn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1hc3NvY2lhdGVkIl0KKytn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicHZsYS1hc3NvY2lhdGVkIgorK2dkYl90ZXN0X25v X291dHB1dCAic2V0IFwkbXlwdmFyID0gcHZsYSIgInNldCBcJG15cHZhciA9IHB2bGEiCisrZ2Ri X3Rlc3QgInByaW50IFwkbXlwdmFyKDEsMyw4KSIgIiA9IDEwMDEiICJwcmludCBcJG15cHZhcigx LDMsOCkiCisrCisrIyBkZWFsbG9jYXRlIHBvaW50ZXIgYW5kIG1ha2Ugc3VyZSB1c2VyIGRlZmlu ZWQgdmFyaWFibGUgc3RpbGwgaGFzIHRoZQorKyMgcmlnaHQgdmFsdWUuCisrZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInB2bGEtZGVhc3NvY2lhdGVkIl0KKytnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAicHZsYS1kZWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInByaW50IFwk bXlwdmFyKDEsMyw4KSIgIiA9IDEwMDEiIFwKKysgICJwcmludCBcJG15cHZhcigxLDMsOCkgYWZ0 ZXIgZGVhbGxvY2F0ZWQiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEuZjkwCituZXcgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNzM0MjVmMworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEuZjkwCitAQCAtMCwwICsxLDU2IEBACisrISBDb3B5 cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyshCisrISBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIQorKyEgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorKworK3Byb2dyYW0gdmxhCisrICByZWFsLCB0YXJnZXQsIGFs bG9jYXRhYmxlIDo6IHZsYTEgKDosIDosIDopCisrICByZWFsLCB0YXJnZXQsIGFsbG9jYXRhYmxl IDo6IHZsYTIgKDosIDosIDopCisrICByZWFsLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6IHZsYTMg KDosIDopCisrICByZWFsLCBwb2ludGVyIDo6IHB2bGEgKDosIDosIDopCisrICBsb2dpY2FsIDo6 IGwKKysKKysgIGFsbG9jYXRlICh2bGExICgxMCwxMCwxMCkpICAgICAgICAgICEgdmxhMS1pbml0 CisrICBsID0gYWxsb2NhdGVkKHZsYTEpCisrCisrICBhbGxvY2F0ZSAodmxhMiAoMTo3LDQyOjUw LDEzOjM1KSkgICAhIHZsYTEtYWxsb2NhdGVkCisrICBsID0gYWxsb2NhdGVkKHZsYTIpCisrCisr ICB2bGExKDosIDosIDopID0gMTMxMSAgICAgICAgICAgICAgICAhIHZsYTItYWxsb2NhdGVkCisr ICB2bGExKDMsIDYsIDkpID0gNDIKKysgIHZsYTEoMSwgMywgOCkgPSAxMDAxCisrICB2bGExKDYs IDIsIDcpID0gMTMKKysKKysgIHZsYTIoOiwgOiwgOikgPSAxMzExICAgICAgICAgICAgICAgICEg dmxhMS1maWxsZWQKKysgIHZsYTIoNSwgNDUsIDIwKSA9IDQyCisrCisrICBwdmxhID0+IHZsYTEg ICAgICAgICAgICAgICAgICAgICAgICAhIHZsYTItZmlsbGVkCisrICBsID0gYXNzb2NpYXRlZChw dmxhKQorKworKyAgcHZsYSA9PiB2bGEyICAgICAgICAgICAgICAgICAgICAgICAgISBwdmxhLWFz c29jaWF0ZWQKKysgIGwgPSBhc3NvY2lhdGVkKHB2bGEpCisrICBwdmxhKDUsIDQ1LCAyMCkgPSAx CisrICBwdmxhKDcsIDQ1LCAxNCkgPSAyCisrCisrICBwdmxhID0+IG51bGwoKSAgICAgICAgICAg ICAgICAgICAgICAhIHB2bGEtcmUtYXNzb2NpYXRlZAorKyAgbCA9IGFzc29jaWF0ZWQocHZsYSkK KysKKysgIGRlYWxsb2NhdGUgKHZsYTEpICAgICAgICAgICAgICAgICAgICEgcHZsYS1kZWFzc29j aWF0ZWQKKysgIGwgPSBhbGxvY2F0ZWQodmxhMSkKKysKKysgIGRlYWxsb2NhdGUgKHZsYTIpICAg ICAgICAgICAgICAgICAgICEgdmxhMS1kZWFsbG9jYXRlZAorKyAgbCA9IGFsbG9jYXRlZCh2bGEy KQorKworKyAgYWxsb2NhdGUgKHZsYTMgKDIsMikpICAgICAgICAgICAgICAgISB2bGEyLWRlYWxs b2NhdGVkCisrICB2bGEzKDosOikgPSAxMworK2VuZCBwcm9ncmFtIHZsYQorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLjcyYjBiZTIKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1p L21pLXZsYS1mb3J0cmFuLmV4cAorQEAgLTAsMCArMSwxODIgQEAKKysjIENvcHlyaWdodCAyMDE0 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKysKKysjIFZlcmlmeSB0aGF0LCB1c2luZyB0aGUgTUksIHdlIGNhbiBldmFsdWF0 ZSBhIHNpbXBsZSBDIFZhcmlhYmxlIExlbmd0aAorKyMgQXJyYXkgKFZMQSkuCisrCisrbG9hZF9s aWIgbWktc3VwcG9ydC5leHAKKytzZXQgTUlGTEFHUyAiLWk9bWkiCisrCisrZ2RiX2V4aXQKKytp ZiBbbWlfZ2RiX3N0YXJ0XSB7CisrICAgIGNvbnRpbnVlCisrfQorKworK3N0YW5kYXJkX3Rlc3Rm aWxlIHZsYS5mOTAKKysKKytpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSBcCisrICAgICB7ZGVidWcgZjkwfV0g IT0gIiIgfSB7CisrICAgICB1bnRlc3RlZCBtaS12bGEtZm9ydHJhbi5leHAKKysgICAgIHJldHVy biAtMQorK30KKysKKyttaV9kZWxldGVfYnJlYWtwb2ludHMKKyttaV9nZGJfcmVpbml0aWFsaXpl X2RpciAkc3JjZGlyLyRzdWJkaXIKKyttaV9nZGJfbG9hZCAke2JpbmZpbGV9CisrCisrc2V0IGJw X2xpbmVubyBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1ub3QtYWxsb2NhdGVkIl0KKyttaV9j cmVhdGVfYnJlYWtwb2ludCAiLXQgdmxhLmY5MDokYnBfbGluZW5vIiAxICJkZWwiICJ2bGEiIFwK KysgICIuKnZsYS5mOTAiICRicF9saW5lbm8gJGhleCBcCisrICAiaW5zZXJ0IGJyZWFrcG9pbnQg YXQgbGluZSAkYnBfbGluZW5vICh2bGEgbm90IGFsbG9jYXRlZCkiCisrbWlfcnVuX2NtZAorK21p X2V4cGVjdF9zdG9wICJicmVha3BvaW50LWhpdCIgInZsYSIgIiIgIi4qdmxhLmY5MCIgIiRicF9s aW5lbm8iIFwKKysgIHsgIiIgImRpc3A9XCJkZWxcIiIgfSAicnVuIHRvIGJyZWFrcG9pbnQgYXQg bGluZSAkYnBfbGluZW5vIgorK21pX2dkYl90ZXN0ICI1MDAtZGF0YS1ldmFsdWF0ZS1leHByZXNz aW9uIHZsYTEiIFwKKysgICI1MDBcXF5kb25lLHZhbHVlPVwiPG5vdCBhbGxvY2F0ZWQ+XCIiICJl dmFsdWF0ZSBub3QgYWxsb2NhdGVkIHZsYSIKKysKKyttaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQg dmxhMV9ub3RfYWxsb2NhdGVkIHZsYTEgIjxub3QgYWxsb2NhdGVkPiIgXAorKyAgImNyZWF0ZSBs b2NhbCB2YXJpYWJsZSB2bGExX25vdF9hbGxvY2F0ZWQiCisrbWlfZ2RiX3Rlc3QgIjUwMS12YXIt aW5mby10eXBlIHZsYTFfbm90X2FsbG9jYXRlZCIgXAorKyAgIjUwMVxcXmRvbmUsdHlwZT1cIjxu b3QgYWxsb2NhdGVkPlwiIiBcCisrICAiaW5mbyB0eXBlIHZhcmlhYmxlIHZsYTFfbm90X2FsbG9j YXRlZCIKKyttaV9nZGJfdGVzdCAiNTAyLXZhci1zaG93LWZvcm1hdCB2bGExX25vdF9hbGxvY2F0 ZWQiIFwKKysgICI1MDJcXF5kb25lLGZvcm1hdD1cIm5hdHVyYWxcIiIgXAorKyAgInNob3cgZm9y bWF0IHZhcmlhYmxlIHZsYTFfbm90X2FsbG9jYXRlZCIKKyttaV9nZGJfdGVzdCAiNTAzLXZhci1l dmFsdWF0ZS1leHByZXNzaW9uIHZsYTFfbm90X2FsbG9jYXRlZCIgXAorKyAgIjUwM1xcXmRvbmUs dmFsdWU9XCJcXFxbMFxcXF1cIiIgXAorKyAgImV2YWwgdmFyaWFibGUgdmxhMV9ub3RfYWxsb2Nh dGVkIgorK21pX2xpc3RfYXJyYXlfdmFyb2JqX2NoaWxkcmVuX3dpdGhfaW5kZXggInZsYTFfbm90 X2FsbG9jYXRlZCIgIjAiICIxIiBcCisrICAgICJyZWFsXFxcKGtpbmQ9NFxcXCkiICJnZXQgY2hp bGRyZW4gb2YgdmxhMV9ub3RfYWxsb2NhdGVkIgorKworKworKworK3NldCBicF9saW5lbm8gW2dk Yl9nZXRfbGluZV9udW1iZXIgInZsYTEtYWxsb2NhdGVkIl0KKyttaV9jcmVhdGVfYnJlYWtwb2lu dCAiLXQgdmxhLmY5MDokYnBfbGluZW5vIiAyICJkZWwiICJ2bGEiICIuKnZsYS5mOTAiIFwKKysg ICRicF9saW5lbm8gJGhleCAiaW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vICh2 bGEgYWxsb2NhdGVkKSIKKyttaV9ydW5fY21kCisrbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQt aGl0IiAidmxhIiAiIiAiLip2bGEuZjkwIiAiJGJwX2xpbmVubyIgXAorKyAgeyAiIiAiZGlzcD1c ImRlbFwiIiB9ICJydW4gdG8gYnJlYWtwb2ludCBhdCBsaW5lICRicF9saW5lbm8iCisrbWlfZ2Ri X3Rlc3QgIjUxMC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Npb24gdmxhMSIgXAorKyAgIjUxMFxcXmRv bmUsdmFsdWU9XCJcXCgwLCAwLCAwLCAwLCAwXFwpXCIiICJldmFsdWF0ZSBhbGxvY2F0ZWQgdmxh IgorKworK21pX2NyZWF0ZV92YXJvYmpfY2hlY2tlZCB2bGExX2FsbG9jYXRlZCB2bGExICJyZWFs XFxcKGtpbmQ9NFxcXCkgXFxcKDVcXFwpIiBcCisrICAiY3JlYXRlIGxvY2FsIHZhcmlhYmxlIHZs YTFfYWxsb2NhdGVkIgorK21pX2dkYl90ZXN0ICI1MTEtdmFyLWluZm8tdHlwZSB2bGExX2FsbG9j YXRlZCIgXAorKyAgIjUxMVxcXmRvbmUsdHlwZT1cInJlYWxcXFwoa2luZD00XFxcKSBcXFwoNVxc XClcIiIgXAorKyAgImluZm8gdHlwZSB2YXJpYWJsZSB2bGExX2FsbG9jYXRlZCIKKyttaV9nZGJf dGVzdCAiNTEyLXZhci1zaG93LWZvcm1hdCB2bGExX2FsbG9jYXRlZCIgXAorKyAgIjUxMlxcXmRv bmUsZm9ybWF0PVwibmF0dXJhbFwiIiBcCisrICAic2hvdyBmb3JtYXQgdmFyaWFibGUgdmxhMV9h bGxvY2F0ZWQiCisrbWlfZ2RiX3Rlc3QgIjUxMy12YXItZXZhbHVhdGUtZXhwcmVzc2lvbiB2bGEx X2FsbG9jYXRlZCIgXAorKyAgIjUxM1xcXmRvbmUsdmFsdWU9XCJcXFxbNVxcXF1cIiIgXAorKyAg ImV2YWwgdmFyaWFibGUgdmxhMV9hbGxvY2F0ZWQiCisrbWlfbGlzdF9hcnJheV92YXJvYmpfY2hp bGRyZW5fd2l0aF9pbmRleCAidmxhMV9hbGxvY2F0ZWQiICI1IiAiMSIgXAorKyAgICAicmVhbFxc XChraW5kPTRcXFwpIiAiZ2V0IGNoaWxkcmVuIG9mIHZsYTFfYWxsb2NhdGVkIgorKworKworK3Nl dCBicF9saW5lbm8gW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtZmlsbGVkIl0KKyttaV9jcmVh dGVfYnJlYWtwb2ludCAiLXQgdmxhLmY5MDokYnBfbGluZW5vIiAzICJkZWwiICJ2bGEiICIuKnZs YS5mOTAiIFwKKysgICRicF9saW5lbm8gJGhleCAiaW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAk YnBfbGluZW5vIgorK21pX3J1bl9jbWQKKyttaV9leHBlY3Rfc3RvcCAiYnJlYWtwb2ludC1oaXQi ICJ2bGEiICIiICIuKnZsYS5mOTAiICIkYnBfbGluZW5vIiBcCisrICB7ICIiICJkaXNwPVwiZGVs XCIiIH0gInJ1biB0byBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKKyttaV9nZGJfdGVz dCAiNTIwLWRhdGEtZXZhbHVhdGUtZXhwcmVzc2lvbiB2bGExIiBcCisrICAiNTIwXFxeZG9uZSx2 YWx1ZT1cIlxcKDEsIDEsIDEsIDEsIDFcXClcIiIgImV2YWx1YXRlIGZpbGxlZCB2bGEiCisrCisr Cisrc2V0IGJwX2xpbmVubyBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1tb2RpZmllZCJdCisr bWlfY3JlYXRlX2JyZWFrcG9pbnQgIi10IHZsYS5mOTA6JGJwX2xpbmVubyIgNCAiZGVsIiAidmxh IiAiLip2bGEuZjkwIiBcCisrICAkYnBfbGluZW5vICRoZXggImluc2VydCBicmVha3BvaW50IGF0 IGxpbmUgJGJwX2xpbmVubyIKKyttaV9ydW5fY21kCisrbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9p bnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkwIiAiJGJwX2xpbmVubyIgXAorKyAgeyAiIiAiZGlz cD1cImRlbFwiIiB9ICJydW4gdG8gYnJlYWtwb2ludCBhdCBsaW5lICRicF9saW5lbm8iCisrbWlf Z2RiX3Rlc3QgIjUzMC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Npb24gdmxhMSIgXAorKyAgIjUzMFxc XmRvbmUsdmFsdWU9XCJcXCgxLCA0MiwgMSwgMjQsIDFcXClcIiIgImV2YWx1YXRlIGZpbGxlZCB2 bGEiCisrbWlfZ2RiX3Rlc3QgIjU0MC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Npb24gdmxhMSgxKSIg XAorKyAgIjU0MFxcXmRvbmUsdmFsdWU9XCIxXCIiICJldmFsdWF0ZSBmaWxsZWQgdmxhIgorK21p X2dkYl90ZXN0ICI1NTAtZGF0YS1ldmFsdWF0ZS1leHByZXNzaW9uIHZsYTEoMikiIFwKKysgICI1 NTBcXF5kb25lLHZhbHVlPVwiNDJcIiIgImV2YWx1YXRlIGZpbGxlZCB2bGEiCisrbWlfZ2RiX3Rl c3QgIjU2MC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Npb24gdmxhMSg0KSIgXAorKyAgIjU2MFxcXmRv bmUsdmFsdWU9XCIyNFwiIiAiZXZhbHVhdGUgZmlsbGVkIHZsYSIKKysKKysKKytzZXQgYnBfbGlu ZW5vIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWRlYWxsb2NhdGVkIl0KKyttaV9jcmVhdGVf YnJlYWtwb2ludCAiLXQgdmxhLmY5MDokYnBfbGluZW5vIiA1ICJkZWwiICJ2bGEiICIuKnZsYS5m OTAiIFwKKysgICRicF9saW5lbm8gJGhleCAiaW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBf bGluZW5vIgorK21pX3J1bl9jbWQKKyttaV9leHBlY3Rfc3RvcCAiYnJlYWtwb2ludC1oaXQiICJ2 bGEiICIiICIuKnZsYS5mOTAiICIkYnBfbGluZW5vIiBcCisrICB7ICIiICJkaXNwPVwiZGVsXCIi IH0gInJ1biB0byBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKKyttaV9nZGJfdGVzdCAi NTcwLWRhdGEtZXZhbHVhdGUtZXhwcmVzc2lvbiB2bGExIiBcCisrICAiNTcwXFxeZG9uZSx2YWx1 ZT1cIjxub3QgYWxsb2NhdGVkPlwiIiAiZXZhbHVhdGUgbm90IGFsbG9jYXRlZCB2bGEiCisrCisr Cisrc2V0IGJwX2xpbmVubyBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYTItbm90LWFzc29jaWF0 ZWQiXQorK21pX2NyZWF0ZV9icmVha3BvaW50ICItdCB2bGEuZjkwOiRicF9saW5lbm8iIDYgImRl bCIgInZsYSIgIi4qdmxhLmY5MCIgXAorKyAgJGJwX2xpbmVubyAkaGV4ICJpbnNlcnQgYnJlYWtw b2ludCBhdCBsaW5lICRicF9saW5lbm8iCisrbWlfcnVuX2NtZAorK21pX2V4cGVjdF9zdG9wICJi cmVha3BvaW50LWhpdCIgInZsYSIgIiIgIi4qdmxhLmY5MCIgIiRicF9saW5lbm8iIFwKKysgIHsg IiIgImRpc3A9XCJkZWxcIiIgfSAicnVuIHRvIGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5v IgorK21pX2dkYl90ZXN0ICI1ODAtZGF0YS1ldmFsdWF0ZS1leHByZXNzaW9uIHB2bGEyIiBcCisr ICAiNTgwXFxeZG9uZSx2YWx1ZT1cIjxub3QgYXNzb2NpYXRlZD5cIiIgImV2YWx1YXRlIG5vdCBh c3NvY2lhdGVkIHZsYSIKKysKKyttaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgcHZsYTJfbm90X2Fz c29jaWF0ZWQgcHZsYTIgIjxub3QgYXNzb2NpYXRlZD4iIFwKKysgICJjcmVhdGUgbG9jYWwgdmFy aWFibGUgcHZsYTJfbm90X2Fzc29jaWF0ZWQiCisrbWlfZ2RiX3Rlc3QgIjU4MS12YXItaW5mby10 eXBlIHB2bGEyX25vdF9hc3NvY2lhdGVkIiBcCisrICAiNTgxXFxeZG9uZSx0eXBlPVwiPG5vdCBh c3NvY2lhdGVkPlwiIiBcCisrICAiaW5mbyB0eXBlIHZhcmlhYmxlIHB2bGEyX25vdF9hc3NvY2lh dGVkIgorK21pX2dkYl90ZXN0ICI1ODItdmFyLXNob3ctZm9ybWF0IHB2bGEyX25vdF9hc3NvY2lh dGVkIiBcCisrICAiNTgyXFxeZG9uZSxmb3JtYXQ9XCJuYXR1cmFsXCIiIFwKKysgICJzaG93IGZv cm1hdCB2YXJpYWJsZSBwdmxhMl9ub3RfYXNzb2NpYXRlZCIKKyttaV9nZGJfdGVzdCAiNTgzLXZh ci1ldmFsdWF0ZS1leHByZXNzaW9uIHB2bGEyX25vdF9hc3NvY2lhdGVkIiBcCisrICAiNTgzXFxe ZG9uZSx2YWx1ZT1cIlxcXFswXFxcXVwiIiBcCisrICAiZXZhbCB2YXJpYWJsZSBwdmxhMl9ub3Rf YXNzb2NpYXRlZCIKKyttaV9saXN0X2FycmF5X3Zhcm9ial9jaGlsZHJlbl93aXRoX2luZGV4ICJw dmxhMl9ub3RfYXNzb2NpYXRlZCIgIjAiICIxIiBcCisrICAgICJyZWFsXFxcKGtpbmQ9NFxcXCki ICJnZXQgY2hpbGRyZW4gb2YgcHZsYTJfbm90X2Fzc29jaWF0ZWQiCisrCisrCisrc2V0IGJwX2xp bmVubyBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYTItYXNzb2NpYXRlZCJdCisrbWlfY3JlYXRl X2JyZWFrcG9pbnQgIi10IHZsYS5mOTA6JGJwX2xpbmVubyIgNyAiZGVsIiAidmxhIiAiLip2bGEu ZjkwIiBcCisrICAkYnBfbGluZW5vICRoZXggImluc2VydCBicmVha3BvaW50IGF0IGxpbmUgJGJw X2xpbmVubyIKKyttaV9ydW5fY21kCisrbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAi dmxhIiAiIiAiLip2bGEuZjkwIiAiJGJwX2xpbmVubyIgXAorKyAgeyAiIiAiZGlzcD1cImRlbFwi IiB9ICJydW4gdG8gYnJlYWtwb2ludCBhdCBsaW5lICRicF9saW5lbm8iCisrbWlfZ2RiX3Rlc3Qg IjU5MC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Npb24gcHZsYTIiIFwKKysgICI1OTBcXF5kb25lLHZh bHVlPVwiXFwoXFwoIDIsIDIsIDIsIDIsIDJcXCkgXFwoIDIsIDIsIDIsIDIsIDJcXCkgXFwpXCIi IFwKKysgICJldmFsdWF0ZSBhc3NvY2lhdGVkIHZsYSIKKysKKyttaV9jcmVhdGVfdmFyb2JqX2No ZWNrZWQgcHZsYTJfYXNzb2NpYXRlZCBwdmxhMiBcCisrICAicmVhbFxcXChraW5kPTRcXFwpIFxc XCg1LDJcXFwpIiAiY3JlYXRlIGxvY2FsIHZhcmlhYmxlIHB2bGEyX2Fzc29jaWF0ZWQiCisrbWlf Z2RiX3Rlc3QgIjU5MS12YXItaW5mby10eXBlIHB2bGEyX2Fzc29jaWF0ZWQiIFwKKysgICI1OTFc XF5kb25lLHR5cGU9XCJyZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDUsMlxcXClcIiIgXAorKyAgImlu Zm8gdHlwZSB2YXJpYWJsZSBwdmxhMl9hc3NvY2lhdGVkIgorK21pX2dkYl90ZXN0ICI1OTItdmFy LXNob3ctZm9ybWF0IHB2bGEyX2Fzc29jaWF0ZWQiIFwKKysgICI1OTJcXF5kb25lLGZvcm1hdD1c Im5hdHVyYWxcIiIgXAorKyAgInNob3cgZm9ybWF0IHZhcmlhYmxlIHB2bGEyX2Fzc29jaWF0ZWQi CisrbWlfZ2RiX3Rlc3QgIjU5My12YXItZXZhbHVhdGUtZXhwcmVzc2lvbiBwdmxhMl9hc3NvY2lh dGVkIiBcCisrICAiNTkzXFxeZG9uZSx2YWx1ZT1cIlxcXFsyXFxcXVwiIiBcCisrICAiZXZhbCB2 YXJpYWJsZSBwdmxhMl9hc3NvY2lhdGVkIgorKworKworK3NldCBicF9saW5lbm8gW2dkYl9nZXRf bGluZV9udW1iZXIgInB2bGEyLXNldC10by1udWxsIl0KKyttaV9jcmVhdGVfYnJlYWtwb2ludCAi LXQgdmxhLmY5MDokYnBfbGluZW5vIiA4ICJkZWwiICJ2bGEiICIuKnZsYS5mOTAiIFwKKysgICRi cF9saW5lbm8gJGhleCAiaW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgorK21p X3J1bl9jbWQKKyttaV9leHBlY3Rfc3RvcCAiYnJlYWtwb2ludC1oaXQiICJ2bGEiICIiICIuKnZs YS5mOTAiICIkYnBfbGluZW5vIiBcCisrICB7ICIiICJkaXNwPVwiZGVsXCIiIH0gInJ1biB0byBi cmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKKyttaV9nZGJfdGVzdCAiNjAwLWRhdGEtZXZh bHVhdGUtZXhwcmVzc2lvbiBwdmxhMiIgXAorKyAgIjYwMFxcXmRvbmUsdmFsdWU9XCI8bm90IGFz c29jaWF0ZWQ+XCIiICJldmFsdWF0ZSB2bGEgcG9pbnRlciBzZXQgdG8gbnVsbCIKKysKKyttaV9n ZGJfZXhpdAorK3JldHVybiAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvdmxh LmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL3ZsYS5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwLi40NmVkYWQyCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5taS92bGEuZjkwCitAQCAtMCwwICsxLDQyIEBACisrISBDb3B5cmlnaHQgMjAxNCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKyshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorKworK3Byb2dyYW0gdmxhCisrICByZWFsLCBhbGxvY2F0YWJsZSA6OiB2bGExICg6 KQorKyAgcmVhbCwgdGFyZ2V0LCBhbGxvY2F0YWJsZSA6OiB2bGEyKDosIDopCisrICByZWFsLCBw b2ludGVyIDo6IHB2bGEyICg6LCA6KQorKyAgbG9naWNhbCA6OiBsCisrCisrICBhbGxvY2F0ZSAo dmxhMSAoNSkpICAgICAgICAgISB2bGExLW5vdC1hbGxvY2F0ZWQKKysgIGwgPSBhbGxvY2F0ZWQo dmxhMSkgICAgICAgICAhIHZsYTEtYWxsb2NhdGVkCisrCisrICB2bGExKDopID0gMQorKyAgdmxh MSgyKSA9IDQyICAgICAgICAgICAgICAgICEgdmxhMS1maWxsZWQKKysgIHZsYTEoNCkgPSAyNAor KworKyAgZGVhbGxvY2F0ZSAodmxhMSkgICAgICAgICAgICEgdmxhMS1tb2RpZmllZAorKyAgbCA9 IGFsbG9jYXRlZCh2bGExKSAgICAgICAgICEgdmxhMS1kZWFsbG9jYXRlZAorKworKyAgYWxsb2Nh dGUgKHZsYTIgKDUsIDIpKQorKyAgdmxhMig6LCA6KSA9IDIKKysKKysgIHB2bGEyID0+IHZsYTIg ICAgICAgICAgICAgICAhIHB2bGEyLW5vdC1hc3NvY2lhdGVkCisrICBsID0gYXNzb2NpYXRlZChw dmxhMikgICAgICAgISBwdmxhMi1hc3NvY2lhdGVkCisrCisrICBwdmxhMigyLCAxKSA9IDQyCisr CisrICBwdmxhMiA9PiBudWxsKCkKKysgIGwgPSBhc3NvY2lhdGVkKHB2bGEyKSAgICAgICAhIHB2 bGEyLXNldC10by1udWxsCisrZW5kIHByb2dyYW0gdmxhCitkaWZmIC0tZ2l0IGEvZ2RiL3R5cGVw cmludC5jIGIvZ2RiL3R5cGVwcmludC5jCitpbmRleCAwMjZmM2EyLi40Yzg2MWFjIDEwMDY0NAor LS0tIGEvZ2RiL3R5cGVwcmludC5jCisrKysgYi9nZGIvdHlwZXByaW50LmMKK0BAIC00NTksNiAr NDU5LDEzIEBAIHdoYXRpc19leHAgKGNoYXIgKmV4cCwgaW50IHNob3cpCisgCisgICB0eXBlID0g dmFsdWVfdHlwZSAodmFsKTsKKyAKKysgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09E RV9QVFIpCisrICAgIGlmIChpc19keW5hbWljX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp KSkKKysgICAgICB7CisrCXZhbCA9IHZhbHVlX2FkZHIgKHZhbHVlX2luZCAodmFsKSk7CisrCXR5 cGUgPSB2YWx1ZV90eXBlICh2YWwpOworKyAgICAgIH0KKysKKyAgIGdldF91c2VyX3ByaW50X29w dGlvbnMgKCZvcHRzKTsKKyAgIGlmIChvcHRzLm9iamVjdHByaW50KQorICAgICB7CitkaWZmIC0t Z2l0IGEvZ2RiL3ZhbGFyaXRoLmMgYi9nZGIvdmFsYXJpdGguYworaW5kZXggNGRhNDFjYi4uZmI5 NjcxYiAxMDA2NDQKKy0tLSBhL2dkYi92YWxhcml0aC5jCisrKysgYi9nZGIvdmFsYXJpdGguYwor QEAgLTE5NSwxMiArMTk1LDMxIEBAIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZh bHVlICphcnJheSwgTE9OR0VTVCBpbmRleCwgaW50IGxvd2VyYm91bmQpCisgICBzdHJ1Y3QgdHlw ZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7CisgICBz dHJ1Y3QgdHlwZSAqZWx0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFIChh cnJheV90eXBlKSk7CisgICB1bnNpZ25lZCBpbnQgZWx0X3NpemUgPSBUWVBFX0xFTkdUSCAoZWx0 X3R5cGUpOworLSAgdW5zaWduZWQgaW50IGVsdF9vZmZzID0gZWx0X3NpemUgKiBsb25nZXN0X3Rv X2ludCAoaW5kZXggLSBsb3dlcmJvdW5kKTsKKysgIHVuc2lnbmVkIGludCBlbHRfb2ZmcyA9IGxv bmdlc3RfdG9faW50IChpbmRleCAtIGxvd2VyYm91bmQpOworKyAgTE9OR0VTVCBlbHRfc3RyaWRl ID0gVFlQRV9CWVRFX1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKSk7CisgICBz dHJ1Y3QgdmFsdWUgKnY7CisgCisrICBpZiAoZWx0X3N0cmlkZSA+IDApCisrICAgIGVsdF9vZmZz ICo9IGVsdF9zdHJpZGU7CisrICBlbHNlIGlmIChlbHRfc3RyaWRlIDwgMCkKKysgICAgeworKyAg ICAgIGludCBvZmZzID0gKGVsdF9vZmZzICsgMSkgKiBlbHRfc3RyaWRlOworKworKyAgICAgIGVs dF9vZmZzID0gVFlQRV9MRU5HVEggKGFycmF5X3R5cGUpICsgb2ZmczsKKysgICAgfQorKyAgZWxz ZQorKyAgICBlbHRfb2ZmcyAqPSBlbHRfc2l6ZTsKKysKKyAgIGlmIChpbmRleCA8IGxvd2VyYm91 bmQgfHwgKCFUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAoYXJyYXlfdHlwZSkK KyAJCQkgICAgICYmIGVsdF9vZmZzID49IFRZUEVfTEVOR1RIIChhcnJheV90eXBlKSkpCistICAg IGVycm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50IikpOworKyAgICB7CisrICAgICAgaWYg KFRZUEVfTk9UX0FTU09DSUFURUQgKGFycmF5X3R5cGUpKQorKyAgICAgICAgZXJyb3IgKF8oIm5v IHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYXNzb2NpYXRlZCIpKTsKKysgICAgICBl bHNlIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKGFycmF5X3R5cGUpKQorKyAgICAgICAgZXJyb3Ig KF8oIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYWxsb2NhdGVkIikpOworKyAg ICAgIGVsc2UKKysgICAgICAgIGVycm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50IikpOwor KyAgICB9CisgCisgICBpZiAoVkFMVUVfTFZBTCAoYXJyYXkpID09IGx2YWxfbWVtb3J5ICYmIHZh bHVlX2xhenkgKGFycmF5KSkKKyAgICAgdiA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKGVsdF90eXBl KTsKK2RpZmYgLS1naXQgYS9nZGIvdmFscHJpbnQuYyBiL2dkYi92YWxwcmludC5jCitpbmRleCA4 NjAwYjM0Li4yZjhlYWMxIDEwMDY0NAorLS0tIGEvZ2RiL3ZhbHByaW50LmMKKysrKyBiL2dkYi92 YWxwcmludC5jCitAQCAtMzA3LDYgKzMwNywxOCBAQCB2YWxwcmludF9jaGVja192YWxpZGl0eSAo c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKKyB7CisgICBDSEVDS19UWVBFREVGICh0eXBlKTsKKyAK KysgIGlmIChUWVBFX05PVF9BU1NPQ0lBVEVEICh0eXBlKSkKKysgICAgeworKyAgICAgIHZhbF9w cmludF9ub3RfYXNzb2NpYXRlZCAoc3RyZWFtKTsKKysgICAgICByZXR1cm4gMDsKKysgICAgfQor KworKyAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAodHlwZSkpCisrICAgIHsKKysgICAgICB2YWxf cHJpbnRfbm90X2FsbG9jYXRlZCAoc3RyZWFtKTsKKysgICAgICByZXR1cm4gMDsKKysgICAgfQor KworICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1VOSU9OCisgICAgICAgJiYg VFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfU1RSVUNUCisgICAgICAgJiYgVFlQRV9DT0RF ICh0eXBlKSAhPSBUWVBFX0NPREVfQVJSQVkpCitAQCAtMzYyLDYgKzM3NCwxOCBAQCB2YWxfcHJp bnRfaW52YWxpZF9hZGRyZXNzIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQorICAgZnByaW50Zl9m aWx0ZXJlZCAoc3RyZWFtLCBfKCI8aW52YWxpZCBhZGRyZXNzPiIpKTsKKyB9CisgCisrdm9pZAor K3ZhbF9wcmludF9ub3RfYWxsb2NhdGVkIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQorK3sKKysg IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgXygiPG5vdCBhbGxvY2F0ZWQ+IikpOworK30KKysK Kyt2b2lkCisrdmFsX3ByaW50X25vdF9hc3NvY2lhdGVkIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt KQorK3sKKysgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgXygiPG5vdCBhc3NvY2lhdGVkPiIp KTsKKyt9CisrCisgLyogQSBnZW5lcmljIHZhbF9wcmludCB0aGF0IGlzIHN1aXRhYmxlIGZvciB1 c2UgYnkgbGFuZ3VhZ2UKKyAgICBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGxhX3ZhbF9wcmludCBt ZXRob2QuICBUaGlzIGZ1bmN0aW9uIGNhbgorICAgIGhhbmRsZSBtb3N0IHR5cGUgY29kZXMsIHRo b3VnaCBub3QgYWxsLCBub3RhYmx5IGV4Y2VwdGlvbgorQEAgLTgwMywxMiArODI3LDE2IEBAIHN0 YXRpYyBpbnQKKyB2YWx1ZV9jaGVja19wcmludGFibGUgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtLAorIAkJICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9v cHRpb25zICpvcHRpb25zKQorIHsKKysgIGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlOworKworICAg aWYgKHZhbCA9PSAwKQorICAgICB7CisgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBf KCI8YWRkcmVzcyBvZiB2YWx1ZSB1bmtub3duPiIpKTsKKyAgICAgICByZXR1cm4gMDsKKyAgICAg fQorIAorKyAgdHlwZSA9IHZhbHVlX3R5cGUgKHZhbCk7CisrCisgICBpZiAodmFsdWVfZW50aXJl bHlfb3B0aW1pemVkX291dCAodmFsKSkKKyAgICAgeworICAgICAgIGlmIChvcHRpb25zLT5zdW1t YXJ5ICYmICF2YWxfcHJpbnRfc2NhbGFyX3R5cGVfcCAodmFsdWVfdHlwZSAodmFsKSkpCitAQCAt ODM0LDYgKzg2MiwxOCBAQCB2YWx1ZV9jaGVja19wcmludGFibGUgKHN0cnVjdCB2YWx1ZSAqdmFs LCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAorICAgICAgIHJldHVybiAwOworICAgICB9CisgCisr ICBpZiAoVFlQRV9OT1RfQVNTT0NJQVRFRCAodHlwZSkpCisrICAgIHsKKysgICAgICB2YWxfcHJp bnRfbm90X2Fzc29jaWF0ZWQgKHN0cmVhbSk7CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysK KysgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUpKQorKyAgICB7CisrICAgICAgdmFsX3By aW50X25vdF9hbGxvY2F0ZWQgKHN0cmVhbSk7CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysK KyAgIHJldHVybiAxOworIH0KKyAKK2RpZmYgLS1naXQgYS9nZGIvdmFscHJpbnQuaCBiL2dkYi92 YWxwcmludC5oCitpbmRleCA2Njk4MjQ3Li43YTQxNWNmIDEwMDY0NAorLS0tIGEvZ2RiL3ZhbHBy aW50LmgKKysrKyBiL2dkYi92YWxwcmludC5oCitAQCAtMjE3LDQgKzIxNyw4IEBAIGV4dGVybiB2 b2lkIG91dHB1dF9jb21tYW5kX2NvbnN0IChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHkp OworIAorIGV4dGVybiBpbnQgdmFsX3ByaW50X3NjYWxhcl90eXBlX3AgKHN0cnVjdCB0eXBlICp0 eXBlKTsKKyAKKytleHRlcm4gdm9pZCB2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCAoc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSk7CisrCisrZXh0ZXJuIHZvaWQgdmFsX3ByaW50X25vdF9hc3NvY2lhdGVk IChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKTsKKysKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nZGIv dmFsdWUuYyBiL2dkYi92YWx1ZS5jCitpbmRleCA1NTcwNTZmLi40ZTkxYTQzIDEwMDY0NAorLS0t IGEvZ2RiL3ZhbHVlLmMKKysrKyBiL2dkYi92YWx1ZS5jCitAQCAtNDMsNiArNDMsNyBAQAorICNp bmNsdWRlICJ0cmFjZXBvaW50LmgiCisgI2luY2x1ZGUgImNwLWFiaS5oIgorICNpbmNsdWRlICJ1 c2VyLXJlZ3MuaCIKKysjaW5jbHVkZSAiZHdhcmYybG9jLmgiCisgCisgLyogUHJvdG90eXBlcyBm b3IgZXhwb3J0ZWQgZnVuY3Rpb25zLiAgKi8KKyAKK0BAIC0xNjQ2LDYgKzE2NDcsMjUgQEAgc2V0 X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsCisgICAg ICAgaWYgKGZ1bmNzLT5jb3B5X2Nsb3N1cmUpCisgICAgICAgICBjb21wb25lbnQtPmxvY2F0aW9u LmNvbXB1dGVkLmNsb3N1cmUgPSBmdW5jcy0+Y29weV9jbG9zdXJlICh3aG9sZSk7CisgICAgIH0K KysKKysgIC8qIEZvciBkeW5hbWljIHR5cGVzIGNvbXB1dGUgdGhlIGFkZHJlc3Mgb2YgdGhlIGNv bXBvbmVudCB2YWx1ZSBsb2NhdGlvbiBpbgorKyAgICAgc3ViIHJhbmdlIHR5cGVzIGJhc2VkIG9u IHRoZSBsb2NhdGlvbiBvZiB0aGUgc3ViIHJhbmdlIHR5cGUsIGlmIG5vdCBiZWluZworKyAgICAg YW4gaW50ZXJuYWwgR0RCIHZhcmlhYmxlIG9yIHBhcnRzIG9mIGl0LiAgKi8KKysgIGlmIChWQUxV RV9MVkFMIChjb21wb25lbnQpICE9IGx2YWxfaW50ZXJuYWx2YXIKKysgICAgICAmJiBWQUxVRV9M VkFMIChjb21wb25lbnQpICE9IGx2YWxfaW50ZXJuYWx2YXJfY29tcG9uZW50KQorKyAgICB7Cisr ICAgICAgQ09SRV9BRERSIGFkZHI7CisrICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSB2YWx1ZV90 eXBlICh3aG9sZSk7CisrCisrICAgICAgYWRkciA9IHZhbHVlX3Jhd19hZGRyZXNzIChjb21wb25l bnQpOworKworKyAgICAgIGlmIChUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUpCisrICAgICAgICAg ICYmIFRZUEVfREFUQV9MT0NBVElPTl9LSU5EICh0eXBlKSA9PSBQUk9QX0NPTlNUKQorKyAgICAg ICAgeworKyAgICAgICAgICBhZGRyID0gVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIgKHR5cGUpOwor KyAgICAgICAgICBzZXRfdmFsdWVfYWRkcmVzcyAoY29tcG9uZW50LCBhZGRyKTsKKysgICAgICAg IH0KKysgICAgfQorIH0KKyAKKyAMCitAQCAtMjk1MCwxMyArMjk3MCwyMiBAQCB2YWx1ZV9wcmlt aXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgaW50IG9mZnNldCwKKyAJdiA9IGFsbG9j YXRlX3ZhbHVlX2xhenkgKHR5cGUpOworICAgICAgIGVsc2UKKyAJeworLQkgIHYgPSBhbGxvY2F0 ZV92YWx1ZSAodHlwZSk7CistCSAgdmFsdWVfY29udGVudHNfY29weV9yYXcgKHYsIHZhbHVlX2Vt YmVkZGVkX29mZnNldCAodiksCistCQkJCSAgIGFyZzEsIHZhbHVlX2VtYmVkZGVkX29mZnNldCAo YXJnMSkgKyBvZmZzZXQsCistCQkJCSAgIFRZUEVfTEVOR1RIICh0eXBlKSk7CisrCSAgaWYgKFRZ UEVfREFUQV9MT0NBVElPTiAodHlwZSkKKysJICAgICAgJiYgVFlQRV9EQVRBX0xPQ0FUSU9OX0tJ TkQgKHR5cGUpID09IFBST1BfQ09OU1QpCisrCSAgICB2ID0gdmFsdWVfYXRfbGF6eSAodHlwZSwg dmFsdWVfYWRkcmVzcyAoYXJnMSkgKyBvZmZzZXQpOworKwkgIGVsc2UKKysJICAgIHsKKysJICAg ICAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKKysJICAgICAgdmFsdWVfY29udGVudHNfY29w eV9yYXcgKHYsIHZhbHVlX2VtYmVkZGVkX29mZnNldCAodiksCisrCQkJCSAgICAgICBhcmcxLCB2 YWx1ZV9lbWJlZGRlZF9vZmZzZXQgKGFyZzEpICsgb2Zmc2V0LAorKwkJCQkgICAgICAgVFlQRV9M RU5HVEggKHR5cGUpKTsKKysJICAgIH0KKyAJfQorLSAgICAgIHYtPm9mZnNldCA9ICh2YWx1ZV9v ZmZzZXQgKGFyZzEpICsgb2Zmc2V0CistCQkgICArIHZhbHVlX2VtYmVkZGVkX29mZnNldCAoYXJn MSkpOworKworKyAgICAgIGlmICghVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKQorKyAgICAgICAg ICB8fCAhVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQgKHR5cGUpID09IFBST1BfQ09OU1QpCisrCXYt Pm9mZnNldCA9ICh2YWx1ZV9vZmZzZXQgKGFyZzEpICsgb2Zmc2V0CisrCQkgICAgICsgdmFsdWVf ZW1iZWRkZWRfb2Zmc2V0IChhcmcxKSk7CisgICAgIH0KKyAgIHNldF92YWx1ZV9jb21wb25lbnRf bG9jYXRpb24gKHYsIGFyZzEpOworICAgVkFMVUVfUkVHTlVNICh2KSA9IFZBTFVFX1JFR05VTSAo YXJnMSk7CitAQCAtMzUzOSw3ICszNTY4LDggQEAgcmVhZGp1c3RfaW5kaXJlY3RfdmFsdWVfdHlw ZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IHR5cGUgKmVuY190eXBlLAorIAkJCSAgICAg IHN0cnVjdCB2YWx1ZSAqb3JpZ2luYWxfdmFsdWUpCisgeworICAgLyogUmUtYWRqdXN0IHR5cGUu ICAqLworLSAgZGVwcmVjYXRlZF9zZXRfdmFsdWVfdHlwZSAodmFsdWUsIFRZUEVfVEFSR0VUX1RZ UEUgKG9yaWdpbmFsX3R5cGUpKTsKKysgIGlmICghaXNfZHluYW1pY190eXBlIChUWVBFX1RBUkdF VF9UWVBFIChvcmlnaW5hbF90eXBlKSkpCisrICAgIGRlcHJlY2F0ZWRfc2V0X3ZhbHVlX3R5cGUg KHZhbHVlLCBUWVBFX1RBUkdFVF9UWVBFIChvcmlnaW5hbF90eXBlKSk7CisgCisgICAvKiBBZGQg ZW1iZWRkaW5nIGluZm8uICAqLworICAgc2V0X3ZhbHVlX2VuY2xvc2luZ190eXBlICh2YWx1ZSwg ZW5jX3R5cGUpOworQEAgLTM1NTYsNiArMzU4NiwxMiBAQCBjb2VyY2VfcmVmIChzdHJ1Y3QgdmFs dWUgKmFyZykKKyAgIHN0cnVjdCB2YWx1ZSAqcmV0dmFsOworICAgc3RydWN0IHR5cGUgKmVuY190 eXBlOworIAorKyAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlICE9IGxhbmd1YWdl X2ZvcnRyYW4KKysgICAgICAmJiBUWVBFX0RBVEFfTE9DQVRJT04gKHZhbHVlX3R5cGVfYXJnX3Rt cCkgIT0gTlVMTAorKyAgICAgICYmIFRZUEVfREFUQV9MT0NBVElPTl9LSU5EICh2YWx1ZV90eXBl X2FyZ190bXApID09IFBST1BfQ09OU1QpCisrICAgIGFyZyA9IHZhbHVlX2F0X2xhenkgKHZhbHVl X3R5cGVfYXJnX3RtcCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgVFlQRV9EQVRBX0xPQ0FU SU9OX0FERFIgKHZhbHVlX3R5cGVfYXJnX3RtcCkpOworKworICAgcmV0dmFsID0gY29lcmNlX3Jl Zl9pZl9jb21wdXRlZCAoYXJnKTsKKyAgIGlmIChyZXR2YWwpCisgICAgIHJldHVybiByZXR2YWw7 CitAQCAtMzY5OSw4ICszNzM1LDE0IEBAIHZhbHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAq dmFsKQorICAgICB9CisgICBlbHNlIGlmIChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfbWVtb3J5 KQorICAgICB7CistICAgICAgQ09SRV9BRERSIGFkZHIgPSB2YWx1ZV9hZGRyZXNzICh2YWwpOwor ICAgICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfZW5jbG9zaW5n X3R5cGUgKHZhbCkpOworKyAgICAgIENPUkVfQUREUiBhZGRyOworKworKyAgICAgIGlmIChUWVBF X0RBVEFfTE9DQVRJT04gKHR5cGUpICE9IE5VTEwKKysJICAmJiBUWVBFX0RBVEFfTE9DQVRJT05f S0lORCAodHlwZSkgPT0gUFJPUF9DT05TVCkKKysJYWRkciA9IFRZUEVfREFUQV9MT0NBVElPTl9B RERSICh0eXBlKTsKKysgICAgICBlbHNlCisrCWFkZHIgPSB2YWx1ZV9hZGRyZXNzICh2YWwpOwor IAorICAgICAgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkpCisgCXJlYWRfdmFsdWVfbWVtb3J5ICh2 YWwsIDAsIHZhbHVlX3N0YWNrICh2YWwpLAoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNw ZWMKaW5kZXggYmEyMmE0ZS4uZDY0NDQzYyAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2Ri LnNwZWMKQEAgLTI1LDcgKzI1LDcgQEAgVmVyc2lvbjogNy43LjkwLiV7c25hcHNyY30KIAogIyBU aGUgcmVsZWFzZSBhbHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3Rh cnQgaXQgYXQgMS4KICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5 IGZ1bGx5IHJwbSBkZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxl YXNlOiA4JXs/ZGlzdH0KK1JlbGVhc2U6IDklez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5k IEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0 aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWluIGFuZCBH RkRMCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC01MDYsMzAgKzUwNiw4IEBAIFBh dGNoODUyOiBnZGItZ25hdC1kd2FyZi1jcmFzaC0zb2YzLnBhdGNoCiAKICMgVkxBIChGb3J0cmFu IGR5bmFtaWMgYXJyYXlzKSBmcm9tIEludGVsICsgYXJjaGVyLWphbmtyYXRvY2h2aWwtdmxhIHRl c3RzLgogUGF0Y2g4ODc6IGdkYi1hcmNoZXItdmxhLXRlc3RzLnBhdGNoCi1QYXRjaDg4ODogZ2Ri LXZsYS1pbnRlbC0wMW9mMjMucGF0Y2gKLVBhdGNoODg5OiBnZGItdmxhLWludGVsLTAyb2YyMy5w YXRjaAotUGF0Y2g4OTA6IGdkYi12bGEtaW50ZWwtMDNvZjIzLnBhdGNoCi1QYXRjaDg5MTogZ2Ri LXZsYS1pbnRlbC0wNG9mMjMucGF0Y2gKK1BhdGNoODg4OiBnZGItdmxhLWludGVsLnBhdGNoCiBQ YXRjaDkxMjogZ2RiLXZsYS1pbnRlbC0wNG9mMjMtZml4LnBhdGNoCi1QYXRjaDg5MjogZ2RiLXZs YS1pbnRlbC0wNW9mMjMucGF0Y2gKLVBhdGNoODkzOiBnZGItdmxhLWludGVsLTA2b2YyMy5wYXRj aAotUGF0Y2g4OTQ6IGdkYi12bGEtaW50ZWwtMDdvZjIzLnBhdGNoCi1QYXRjaDg5NTogZ2RiLXZs YS1pbnRlbC0wOG9mMjMucGF0Y2gKLVBhdGNoODk2OiBnZGItdmxhLWludGVsLTA5b2YyMy5wYXRj aAotUGF0Y2g4OTc6IGdkYi12bGEtaW50ZWwtMTBvZjIzLnBhdGNoCi1QYXRjaDg5ODogZ2RiLXZs YS1pbnRlbC0xMW9mMjMucGF0Y2gKLVBhdGNoODk5OiBnZGItdmxhLWludGVsLTEyb2YyMy5wYXRj aAotUGF0Y2g5MDA6IGdkYi12bGEtaW50ZWwtMTNvZjIzLnBhdGNoCi1QYXRjaDkwMTogZ2RiLXZs YS1pbnRlbC0xNG9mMjMucGF0Y2gKLVBhdGNoOTAyOiBnZGItdmxhLWludGVsLTE1b2YyMy5wYXRj aAotUGF0Y2g5MDM6IGdkYi12bGEtaW50ZWwtMTZvZjIzLnBhdGNoCi1QYXRjaDkwNDogZ2RiLXZs YS1pbnRlbC0xN29mMjMucGF0Y2gKLVBhdGNoOTA1OiBnZGItdmxhLWludGVsLTE4b2YyMy5wYXRj aAotUGF0Y2g5MDY6IGdkYi12bGEtaW50ZWwtMTlvZjIzLnBhdGNoCi1QYXRjaDkwNzogZ2RiLXZs YS1pbnRlbC0yMG9mMjMucGF0Y2gKLVBhdGNoOTA4OiBnZGItdmxhLWludGVsLTIxb2YyMy5wYXRj aAotUGF0Y2g5MDk6IGdkYi12bGEtaW50ZWwtMjJvZjIzLnBhdGNoCi1QYXRjaDkxMDogZ2RiLXZs YS1pbnRlbC0yM29mMjMucGF0Y2gKIAogIyBGaXggLS13aXRoLXN5c3RlbS1yZWFkbGluZSB3aXRo IHJlYWRsaW5lLTYuMyBwYXRjaCA1LgogUGF0Y2g5MTQ6IGdkYi1yZWFkbGluZS02LjMuNS5wYXRj aApAQCAtNTQwLDYgKzUxOCwxMCBAQCBQYXRjaDkxODogZ2RiLWJ0cm9idXN0LnBhdGNoCiAjIEZp eCBjcmFzaCBvbiBvcHRpbWl6ZWQtb3V0IGVudHJ5IGRhdGEgdmFsdWVzIChCWiAxMTExOTEwKS4K IFBhdGNoOTE5OiBnZGItZW50cnlkYXRhb3B0aW1pemVkb3V0LnBhdGNoCiAKKyMgUHl0aG9uIGNv bXBsZXRpb24gdy9vdmVycmlkZW4gY29tcGxldGVyIChTZXJnaW8gRHVyaWdhbiBKdW5pb3IsIEJa IDEwNzUxOTkpLgorUGF0Y2g5MjA6IGdkYi1weXRob24tY29tcGxldGVyLTFvZjIucGF0Y2gKK1Bh dGNoOTIxOiBnZGItcHl0aG9uLWNvbXBsZXRlci0yb2YyLnBhdGNoCisKICVpZiAwJXshP3JoZWw6 MX0gfHwgMCV7P3JoZWx9ID4gNgogIyBSTF9TVEFURV9GRURPUkFfR0RCIHdvdWxkIG5vdCBiZSBm b3VuZCBmb3I6CiAjIFBhdGNoNjQyOiBnZGItcmVhZGxpbmU2Mi1hc2stbW9yZS1yaC5wYXRjaApA QCAtNzE1LDI5ICs2OTcsNyBAQCBmaW5kIC1uYW1lICIqLmluZm8qInx4YXJncyBybSAtZgogJXBh dGNoMzQ5IC1wMQogI3BhdGNoMjMyIC1wMQogJXBhdGNoODg4IC1wMQotJXBhdGNoODg5IC1wMQot JXBhdGNoODkwIC1wMQotJXBhdGNoODkxIC1wMQogJXBhdGNoOTEyIC1wMQotJXBhdGNoODkyIC1w MQotJXBhdGNoODkzIC1wMQotJXBhdGNoODk0IC1wMQotJXBhdGNoODk1IC1wMQotJXBhdGNoODk2 IC1wMQotJXBhdGNoODk3IC1wMQotJXBhdGNoODk4IC1wMQotJXBhdGNoODk5IC1wMQotJXBhdGNo OTAwIC1wMQotJXBhdGNoOTAxIC1wMQotJXBhdGNoOTAyIC1wMQotJXBhdGNoOTAzIC1wMQotJXBh dGNoOTA0IC1wMQotJXBhdGNoOTA1IC1wMQotJXBhdGNoOTA2IC1wMQotJXBhdGNoOTA3IC1wMQot JXBhdGNoOTA4IC1wMQotJXBhdGNoOTA5IC1wMQotJXBhdGNoOTEwIC1wMQogJXBhdGNoMSAtcDEK IAogJXBhdGNoMTA1IC1wMQpAQCAtODM5LDYgKzc5OSw4IEBAIGZpbmQgLW5hbWUgIiouaW5mbyoi fHhhcmdzIHJtIC1mCiAlcGF0Y2g5MTQgLXAxCiAlcGF0Y2g5MTggLXAxCiAlcGF0Y2g5MTkgLXAx CislcGF0Y2g5MjAgLXAxCislcGF0Y2g5MjEgLXAxCiAKICVwYXRjaDg0OCAtcDEKICVpZiAwJXsh P2VsNjoxfQpAQCAtOTYwLDkgKzkyMiw4IEBAICQoOiBwcGM2NCBob3N0IGJ1aWxkIGNyYXNoZXMg b24gcHBjIHZhcmlhbnQgb2YgbGliZXhwYXQuc28gKQlcCiAlZWxzZQogCS0tZGlzYWJsZS1pbnBy b2Nlc3MtYWdlbnQJCQkJXAogJWVuZGlmCi0kKDogJXtfYmluZGlyfS9tb25vLWdkYi5weSBpcyB3 b3JrYXJvdW5kIGZvciBtb25vIEJaIDgxNTUwMS4gKQkJCQkJCQkJCQlcCi0JICAgICAgLS13aXRo LWF1dG8tbG9hZC1kaXI9JyRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWQlez9zY2w6OiV7X3Jv b3RfZGF0YWRpcn0vZ2RiL2F1dG8tbG9hZH0nCQkJCVwKLQktLXdpdGgtYXV0by1sb2FkLXNhZmUt cGF0aD0nJGRlYnVnZGlyOiRkYXRhZGlyL2F1dG8tbG9hZCV7P3NjbDo6JXtfcm9vdF9kYXRhZGly fS9nZGIvYXV0by1sb2FkfTole19yb290X2JpbmRpcn0vbW9uby1nZGIucHknCVwKKwkgICAgICAt LXdpdGgtYXV0by1sb2FkLWRpcj0nJGRlYnVnZGlyOiRkYXRhZGlyL2F1dG8tbG9hZCV7P3NjbDo6 JXtfcm9vdF9kYXRhZGlyfS9nZGIvYXV0by1sb2FkfScJXAorCS0td2l0aC1hdXRvLWxvYWQtc2Fm ZS1wYXRoPSckZGVidWdkaXI6JGRhdGFkaXIvYXV0by1sb2FkJXs/c2NsOjole19yb290X2RhdGFk aXJ9L2dkYi9hdXRvLWxvYWR9JwlcCiAlaWZhcmNoIHNwYXJjIHNwYXJjdjkKIAlzcGFyYy0le192 ZW5kb3J9LSV7X3RhcmdldF9vc30lez9fZ251fQogJWVsc2UKQEAgLTEzMzAsNiArMTI5MSwxMSBA QCB0aGVuCiBmaQogCiAlY2hhbmdlbG9nCisqIFR1ZSBKdWwgIDggMjAxNCBKYW4gS3JhdG9jaHZp bCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjcuOTAuMjAxNDA2MjctOS5mYzIxCist IFJlYmFzZSB0aGUgSW50ZWwgVkxBIHBhdGNoc2V0LgorLSBQeXRob24gY29tcGxldGlvbiB3L292 ZXJyaWRlbiBjb21wbGV0ZXIgKFNlcmdpbyBEdXJpZ2FuIEp1bmlvciwgQlogMTA3NTE5OSkuCist IFJlbW92ZSAle19iaW5kaXJ9L21vbm8tZ2RiLnB5IHdvcmthcm91bmQgb2YgbW9ubyBCWiA4MTU1 MDEuCisKICogVHVlIEp1bCAgMSAyMDE0IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPiAtIDcuNy45MC4yMDE0MDYyNy04LmZjMjEKIC0gRG8gbm90IHJlbW92ZSAle19k YXRhZGlyfS9nZGIvc3lzY2FsbHMvcHBjKi54bWwgYXMgaXQgaXMgc2Vjb25kYXJ5IHRhcmdldC4K IC0gUmVtb3ZlOiAle19kYXRhZGlyfS9nZGIvZ3VpbGUK